ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vMDAtSU5ERVggYi9Eb2N1bWVudGF0aW9uLzAwLUlOREVYCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkMDc3Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uLzAwLUlOREVYCkBAIC0wLDAgKzEsNDg5IEBACisKK1RoaXMgaXMgYSBicmllZiBsaXN0IG9mIGFsbCB0aGUgZmlsZXMgaW4gLi9saW51eC9Eb2N1bWVudGF0aW9uIGFuZCB3aGF0Cit0aGV5IGNvbnRhaW4uIElmIHlvdSBhZGQgYSBkb2N1bWVudGF0aW9uIGZpbGUsIHBsZWFzZSBsaXN0IGl0IGhlcmUgaW4KK2FscGhhYmV0aWNhbCBvcmRlciBhcyB3ZWxsLCBvciByaXNrIGJlaW5nIGh1bnRlZCBkb3duIGxpa2UgYSByYWJpZCBkb2cuCitQbGVhc2Uga2VlcCB0aGUgZGVzY3JpcHRpb25zIHNtYWxsIGVub3VnaCB0byBmaXQgb24gb25lIGxpbmUuCisJCQkJCQkJIFRoYW5rcyAtLSBQYXVsIEcuCisKK0ZvbGxvd2luZyB0cmFuc2xhdGlvbnMgYXJlIGF2YWlsYWJsZSBvbiB0aGUgV1dXOgorCisgICAtIEphcGFuZXNlLCBtYWludGFpbmVkIGJ5IHRoZSBKRiBQcm9qZWN0IChqZkBsaXN0c2Vydi5saW51eC5vci5qcCksIGF0CisgICAgIGh0dHA6Ly9saW51eGpmLnNvdXJjZWZvcmdlLmpwLworCiswMC1JTkRFWAorCS0gdGhpcyBmaWxlLgorQUJJLworCS0gaW5mbyBvbiBrZXJuZWwgPC0+IHVzZXJzcGFjZSBBQkkgYW5kIHJlbGF0aXZlIGludGVyZmFjZSBzdGFiaWxpdHkuCisKK0JVRy1IVU5USU5HCisJLSBicnV0ZSBmb3JjZSBtZXRob2Qgb2YgZG9pbmcgYmluYXJ5IHNlYXJjaCBvZiBwYXRjaGVzIHRvIGZpbmQgYnVnLgorQ2hhbmdlcworCS0gbGlzdCBvZiBjaGFuZ2VzIHRoYXQgYnJlYWsgb2xkZXIgc29mdHdhcmUgcGFja2FnZXMuCitDb2RpbmdTdHlsZQorCS0gaG93IHRoZSBtYWludGFpbmVycyBleHBlY3QgdGhlIEMgY29kZSBpbiB0aGUga2VybmVsIHRvIGxvb2suCitETUEtQVBJLnR4dAorCS0gRE1BIEFQSSwgcGNpXyBBUEkgJiBleHRlbnNpb25zIGZvciBub24tY29uc2lzdGVudCBtZW1vcnkgbWFjaGluZXMuCitETUEtQVBJLUhPV1RPLnR4dAorCS0gRHluYW1pYyBETUEgbWFwcGluZyBHdWlkZQorRE1BLUlTQS1MUEMudHh0CisJLSBIb3cgdG8gZG8gRE1BIHdpdGggSVNBIChhbmQgTFBDKSBkZXZpY2VzLgorRE1BLWF0dHJpYnV0ZXMudHh0CisJLSBsaXN0aW5nIG9mIHRoZSB2YXJpb3VzIHBvc3NpYmxlIGF0dHJpYnV0ZXMgYSBETUEgcmVnaW9uIGNhbiBoYXZlCitEb2NCb29rLworCS0gZGlyZWN0b3J5IHdpdGggRG9jQm9vayB0ZW1wbGF0ZXMgZXRjLiBmb3Iga2VybmVsIGRvY3VtZW50YXRpb24uCitFRElELworCS0gZGlyZWN0b3J5IHdpdGggaW5mbyBvbiBjdXN0b21pemluZyBFRElEIGZvciBicm9rZW4gZ2Z4L2Rpc3BsYXlzLgorSE9XVE8KKwktIHRoZSBwcm9jZXNzIGFuZCBwcm9jZWR1cmVzIG9mIGhvdyB0byBkbyBMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQuCitJUE1JLnR4dAorCS0gaW5mbyBvbiBMaW51eCBJbnRlbGxpZ2VudCBQbGF0Zm9ybSBNYW5hZ2VtZW50IEludGVyZmFjZSAoSVBNSSkgRHJpdmVyLgorSVJRLWFmZmluaXR5LnR4dAorCS0gaG93IHRvIHNlbGVjdCB3aGljaCBDUFUocykgaGFuZGxlIHdoaWNoIGludGVycnVwdCBldmVudHMgb24gU01QLgorSVJRLWRvbWFpbi50eHQKKwktIGluZm8gb24gaW50ZXJydXB0IG51bWJlcmluZyBhbmQgc2V0dGluZyB1cCBJUlEgZG9tYWlucy4KK0lSUS50eHQKKwktIGRlc2NyaXB0aW9uIG9mIHdoYXQgYW4gSVJRIGlzLgorSW50ZWwtSU9NTVUudHh0CisJLSBiYXNpYyBpbmZvIG9uIHRoZSBJbnRlbCBJT01NVSB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0LgorTWFrZWZpbGUKKwktIHNvbWUgZmlsZXMgaW4gRG9jdW1lbnRhdGlvbiBkaXIgYXJlIGFjdHVhbGx5IHNhbXBsZSBjb2RlIHRvIGJ1aWxkCitNYW5hZ2VtZW50U3R5bGUKKwktIGhvdyB0byAoYXR0ZW1wdCB0bykgbWFuYWdlIGtlcm5lbCBoYWNrZXJzLgorUkNVLworCS0gZGlyZWN0b3J5IHdpdGggaW5mbyBvbiBSQ1UgKHJlYWQtY29weSB1cGRhdGUpLgorU0FLLnR4dAorCS0gaW5mbyBvbiBTZWN1cmUgQXR0ZW50aW9uIEtleXMuCitTTTUwMS50eHQKKwktIFNpbGljb24gTW90aW9uIFNNNTAxIG11bHRpbWVkaWEgY29tcGFuaW9uIGNoaXAKK1NlY3VyaXR5QnVncworCS0gcHJvY2VkdXJlIGZvciByZXBvcnRpbmcgc2VjdXJpdHkgYnVncyBmb3VuZCBpbiB0aGUga2VybmVsLgorU3VibWl0Q2hlY2tsaXN0CisJLSBMaW51eCBrZXJuZWwgcGF0Y2ggc3VibWlzc2lvbiBjaGVja2xpc3QuCitTdWJtaXR0aW5nRHJpdmVycworCS0gcHJvY2VkdXJlIHRvIGdldCBhIG5ldyBkcml2ZXIgc291cmNlIGluY2x1ZGVkIGludG8gdGhlIGtlcm5lbCB0cmVlLgorU3VibWl0dGluZ1BhdGNoZXMKKwktIHByb2NlZHVyZSB0byBnZXQgYSBzb3VyY2UgcGF0Y2ggaW5jbHVkZWQgaW50byB0aGUga2VybmVsIHRyZWUuCitWR0Etc29mdGN1cnNvci50eHQKKwktIGhvdyB0byBjaGFuZ2UgeW91ciBWR0EgY3Vyc29yIGZyb20gYSBibGlua2luZyB1bmRlcnNjb3JlLgorYWNjb3VudGluZy8KKwktIGRvY3VtZW50YXRpb24gb24gYWNjb3VudGluZyBhbmQgdGFza3N0YXRzLgorYWNwaS8KKwktIGluZm8gb24gQUNQSS1zcGVjaWZpYyBob29rcyBpbiB0aGUga2VybmVsLgorYW9lLworCS0gZGVzY3JpcHRpb24gb2YgQW9FIChBVEEgb3ZlciBFdGhlcm5ldCkgYWxvbmcgd2l0aCBjb25maWcgZXhhbXBsZXMuCithcHBseWluZy1wYXRjaGVzLnR4dAorCS0gZGVzY3JpcHRpb24gb2YgdmFyaW91cyB0cmVlcyBhbmQgaG93IHRvIGFwcGx5IHRoZWlyIHBhdGNoZXMuCithcm0vCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIGFib3V0IExpbnV4IG9uIHRoZSBBUk0gYXJjaGl0ZWN0dXJlLgorYXJtNjQvCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIGFib3V0IExpbnV4IG9uIHRoZSA2NCBiaXQgQVJNIGFyY2hpdGVjdHVyZS4KK2Fzc29jX2FycmF5LnR4dAorCS0gZ2VuZXJpYyBhc3NvY2lhdGl2ZSBhcnJheSBpbnRyby4KK2F0b21pY19vcHMudHh0CisJLSBzZW1hbnRpY3MgYW5kIGJlaGF2aW9yIG9mIGF0b21pYyBhbmQgYml0bWFzayBvcGVyYXRpb25zLgorYXV4ZGlzcGxheS8KKwktIG1pc2MuIExDRCBkcml2ZXIgZG9jdW1lbnRhdGlvbiAoY2ZhZzEyODY0Yiwga3MwMTA4KS4KK2JhY2tsaWdodC8KKwktIGRpcmVjdG9yeSB3aXRoIGluZm8gb24gY29udHJvbGxpbmcgYmFja2xpZ2h0cyBpbiBmbGF0IHBhbmVsIGRpc3BsYXlzCitiYWRfbWVtb3J5LnR4dAorCS0gaG93IHRvIHVzZSBrZXJuZWwgcGFyYW1ldGVycyB0byBleGNsdWRlIGJhZCBSQU0gcmVnaW9ucy4KK2Jhc2ljX3Byb2ZpbGluZy50eHQKKwktIGJhc2ljIGluc3RydWN0aW9ucyBmb3IgdGhvc2Ugd2hvIHdhbnRzIHRvIHByb2ZpbGUgTGludXgga2VybmVsLgorYmNhY2hlLnR4dAorCS0gQmxvY2stbGF5ZXIgY2FjaGUgb24gZmFzdCBTU0RzIHRvIGltcHJvdmUgc2xvdyAocmFpZCkgSS9PIHBlcmZvcm1hbmNlLgorYmluZm10X21pc2MudHh0CisJLSBpbmZvIG9uIHRoZSBrZXJuZWwgc3VwcG9ydCBmb3IgZXh0cmEgYmluYXJ5IGZvcm1hdHMuCitibGFja2Zpbi8KKwktIGRpcmVjdG9yeSB3aXRoIGRvY3VtZW50YXRpb24gZm9yIHRoZSBCbGFja2ZpbiBhcmNoLgorYmxvY2svCisJLSBpbmZvIG9uIHRoZSBCbG9jayBJL08gKEJJTykgbGF5ZXIuCitibG9ja2Rldi8KKwktIGluZm8gb24gYmxvY2sgZGV2aWNlcyAmIGRyaXZlcnMKK2JyYWlsbGUtY29uc29sZS50eHQKKwktIGluZm8gb24gaG93IHRvIHVzZSBzZXJpYWwgZGV2aWNlcyBmb3IgQnJhaWxsZSBzdXBwb3J0LgorYnQ4eHhncGlvLnR4dAorCS0gaW5mbyBvbiBob3cgdG8gbW9kaWZ5IGEgYnQ4eHggdmlkZW8gY2FyZCBmb3IgR1BJTyB1c2FnZS4KK2J0bXJ2bC50eHQKKwktIGluZm8gb24gTWFydmVsbCBCbHVldG9vdGggZHJpdmVyIHVzYWdlLgorYnVzLWRldmljZXMvCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIG9uIFRJIEdQTUMgKEdlbmVyYWwgUHVycG9zZSBNZW1vcnkgQ29udHJvbGxlcikKK2J1cy12aXJ0LXBoeXMtbWFwcGluZy50eHQKKwktIGhvdyB0byBhY2Nlc3MgSS9PIG1hcHBlZCBtZW1vcnkgZnJvbSB3aXRoaW4gZGV2aWNlIGRyaXZlcnMuCitjYWNoZXRsYi50eHQKKwktIGRlc2NyaWJlcyB0aGUgY2FjaGUvVExCIGZsdXNoaW5nIGludGVyZmFjZXMgTGludXggdXNlcy4KK2Nkcm9tLworCS0gZGlyZWN0b3J5IHdpdGggaW5mb3JtYXRpb24gb24gdGhlIENELVJPTSBkcml2ZXJzIHRoYXQgTGludXggaGFzLgorY2dyb3Vwcy8KKwktIGNncm91cHMgZmVhdHVyZXMsIGluY2x1ZGluZyBjcHVzZXRzIGFuZCBtZW1vcnkgY29udHJvbGxlci4KK2NpcmN1bGFyLWJ1ZmZlcnMudHh0CisJLSBob3cgdG8gbWFrZSB1c2Ugb2YgdGhlIGV4aXN0aW5nIGNpcmN1bGFyIGJ1ZmZlciBpbmZyYXN0cnVjdHVyZQorY2xrLnR4dAorCS0gaW5mbyBvbiB0aGUgY29tbW9uIGNsb2NrIGZyYW1ld29yaworY29jY2luZWxsZS50eHQKKwktIGluZm8gb24gaG93IHRvIGdldCBhbmQgdXNlIHRoZSBDb2NjaW5lbGxlIGNvZGUgY2hlY2tpbmcgdG9vbC4KK2Nvbm5lY3Rvci8KKwktIGRvY3Mgb24gdGhlIG5ldGxpbmsgYmFzZWQgdXNlcnNwYWNlPC0+a2VybmVsIHNwYWNlIGNvbW11bmljYXRpb24gbW9kLgorY29uc29sZS8KKwktIGRvY3VtZW50YXRpb24gb24gTGludXggY29uc29sZSBkcml2ZXJzLgorY3B1LWZyZXEvCisJLSBpbmZvIG9uIENQVSBmcmVxdWVuY3kgYW5kIHZvbHRhZ2Ugc2NhbGluZy4KK2NwdS1ob3RwbHVnLnR4dAorCS0gZG9jdW1lbnQgZGVzY3JpYmluZyBDUFUgaG90cGx1ZyBzdXBwb3J0IGluIHRoZSBMaW51eCBrZXJuZWwuCitjcHUtbG9hZC50eHQKKwktIGRvY3VtZW50IGRlc2NyaWJpbmcgaG93IENQVSBsb2FkIHN0YXRpc3RpY3MgYXJlIGNvbGxlY3RlZC4KK2NwdWlkbGUvCisJLSBpbmZvIG9uIENQVV9JRExFLCBDUFUgaWRsZSBzdGF0ZSBtYW5hZ2VtZW50IHN1YnN5c3RlbS4KK2NwdXRvcG9sb2d5LnR4dAorCS0gZG9jdW1lbnRhdGlvbiBvbiBob3cgQ1BVIHRvcG9sb2d5IGluZm8gaXMgZXhwb3J0ZWQgdmlhIHN5c2ZzLgorY3JjMzIudHh0CisJLSBicmllZiB0dXRvcmlhbCBvbiBDUkMgY29tcHV0YXRpb24KK2NyaXMvCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIGFib3V0IExpbnV4IG9uIENSSVMgYXJjaGl0ZWN0dXJlLgorY3J5cHRvLworCS0gZGlyZWN0b3J5IHdpdGggaW5mbyBvbiB0aGUgQ3J5cHRvIEFQSS4KK2RjZGJhcy50eHQKKwktIGluZm9ybWF0aW9uIG9uIHRoZSBEZWxsIFN5c3RlbXMgTWFuYWdlbWVudCBCYXNlIERyaXZlci4KK2RlYnVnZ2luZy1tb2R1bGVzLnR4dAorCS0gc29tZSBub3RlcyBvbiBkZWJ1Z2dpbmcgbW9kdWxlcyBhZnRlciBMaW51eCAyLjYuMy4KK2RlYnVnZ2luZy12aWEtb2hjaTEzOTQudHh0CisJLSBob3cgdG8gdXNlIGZpcmV3aXJlIGxpa2UgYSBoYXJkd2FyZSBkZWJ1Z2dlciBtZW1vcnkgcmVhZGVyLgorZGVsbF9yYnUudHh0CisJLSBkb2N1bWVudCBkZW1vbnN0cmF0aW5nIHRoZSB1c2Ugb2YgdGhlIERlbGwgUmVtb3RlIEJJT1MgVXBkYXRlIGRyaXZlci4KK2RldmVsb3BtZW50LXByb2Nlc3MvCisJLSBob3cgdG8gd29yayB3aXRoIHRoZSBtYWlubGluZSBrZXJuZWwgZGV2ZWxvcG1lbnQgcHJvY2Vzcy4KK2RldmljZS1tYXBwZXIvCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIG9uIERldmljZSBNYXBwZXIuCitkZXZpY2VzLnR4dAorCS0gcGxhaW4gQVNDSUkgbGlzdGluZyBvZiBhbGwgdGhlIG5vZGVzIGluIC9kZXYvIHdpdGggbWFqb3IgbWlub3IgIydzLgorZGV2aWNldHJlZS8KKwktIGRpcmVjdG9yeSB3aXRoIGluZm8gb24gZGV2aWNlIHRyZWUgZmlsZXMgdXNlZCBieSBPRi9Qb3dlclBDL0FSTQorZGlnc2lnLnR4dAorCS1pbmZvIG9uIHRoZSBEaWdpdGFsIFNpZ25hdHVyZSBWZXJpZmljYXRpb24gQVBJCitkbWEtYnVmLXNoYXJpbmcudHh0CisJLSB0aGUgRE1BIEJ1ZmZlciBTaGFyaW5nIEFQSSBHdWlkZQorZG9udGRpZmYKKwktIGZpbGUgY29udGFpbmluZyBhIGxpc3Qgb2YgZmlsZXMgdGhhdCBzaG91bGQgbmV2ZXIgYmUgZGlmZidlZC4KK2RyaXZlci1tb2RlbC8KKwktIGRpcmVjdG9yeSB3aXRoIGluZm8gYWJvdXQgTGludXggZHJpdmVyIG1vZGVsLgorZHZiLworCS0gaW5mbyBvbiBMaW51eCBEaWdpdGFsIFZpZGVvIEJyb2FkY2FzdCAoRFZCKSBzdWJzeXN0ZW0uCitkeW5hbWljLWRlYnVnLWhvd3RvLnR4dAorCS0gaG93IHRvIHVzZSB0aGUgZHluYW1pYyBkZWJ1ZyAoZHluZGJnKSBmZWF0dXJlLgorZWFybHktdXNlcnNwYWNlLworCS0gaW5mbyBhYm91dCBpbml0cmFtZnMsIGtsaWJjLCBhbmQgdXNlcnNwYWNlIGVhcmx5IGR1cmluZyBib290LgorZWRhYy50eHQKKwktIGluZm9ybWF0aW9uIG9uIEVEQUMgLSBFcnJvciBEZXRlY3Rpb24gQW5kIENvcnJlY3Rpb24KK2VmaS1zdHViLnR4dAorCS0gSG93IHRvIHVzZSB0aGUgRUZJIGJvb3Qgc3R1YiB0byBieXBhc3MgR1JVQiBvciBlbGlsbyBvbiBFRkkgc3lzdGVtcy4KK2Vpc2EudHh0CisJLSBpbmZvIG9uIEVJU0EgYnVzIHN1cHBvcnQuCitlbWFpbC1jbGllbnRzLnR4dAorCS0gaW5mbyBvbiBob3cgdG8gdXNlIGUtbWFpbCB0byBzZW5kIHVuLW1hbmdsZWQgKGdpdCkgcGF0Y2hlcy4KK2V4dGNvbi8KKwktIGRpcmVjdG9yeSB3aXRoIHBvcnRpbmcgZ3VpZGUgZm9yIEFuZHJvaWQga2VybmVsIHN3aXRjaCBkcml2ZXIuCitmYXVsdC1pbmplY3Rpb24vCisJLSBkaXIgd2l0aCBkb2NzIGFib3V0IHRoZSBmYXVsdCBpbmplY3Rpb24gY2FwYWJpbGl0aWVzIGluZnJhc3RydWN0dXJlLgorZmIvCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIG9uIHRoZSBmcmFtZSBidWZmZXIgZ3JhcGhpY3MgYWJzdHJhY3Rpb24gbGF5ZXIuCitmaWxlc3lzdGVtcy8KKwktIGluZm8gb24gdGhlIHZmcyBhbmQgdGhlIHZhcmlvdXMgZmlsZXN5c3RlbXMgdGhhdCBMaW51eCBzdXBwb3J0cy4KK2Zpcm13YXJlX2NsYXNzLworCS0gcmVxdWVzdF9maXJtd2FyZSgpIGhvdHBsdWcgaW50ZXJmYWNlIGluZm8uCitmbGV4aWJsZS1hcnJheXMudHh0CisJLSBob3cgdG8gbWFrZSB1c2Ugb2YgZmxleGlibGUgc2l6ZWQgYXJyYXlzIGluIGxpbnV4CitmbWMvCisJLSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgRk1DIGJ1cyBhYnN0cmFjdGlvbgorZnJ2LworCS0gRnVqaXRzdSBGUi1WIExpbnV4IGRvY3VtZW50YXRpb24uCitmdXRleC1yZXF1ZXVlLXBpLnR4dAorCS0gaW5mbyBvbiByZXF1ZXVlaW5nIG9mIHRhc2tzIGZyb20gYSBub24tUEkgZnV0ZXggdG8gYSBQSSBmdXRleAorZ2Nvdi50eHQKKwktIHVzZSBvZiBHQ0MncyBjb3ZlcmFnZSB0ZXN0aW5nIHRvb2wgImdjb3YiIHdpdGggdGhlIExpbnV4IGtlcm5lbAorZ3Bpby8KKwktIGdwaW8gcmVsYXRlZCBkb2N1bWVudGF0aW9uCitoaWQvCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvcm1hdGlvbiBvbiBodW1hbiBpbnRlcmZhY2UgZGV2aWNlcworaGlnaHVpZC50eHQKKwktIG5vdGVzIG9uIHRoZSBjaGFuZ2UgZnJvbSAxNiBiaXQgdG8gMzIgYml0IHVzZXIvZ3JvdXAgSURzLgoraHNpLnR4dAorCS0gSFNJIHN1YnN5c3RlbSBvdmVydmlldy4KK2h3c3BpbmxvY2sudHh0CisJLSBoYXJkd2FyZSBzcGlubG9jayBwcm92aWRlcyBoYXJkd2FyZSBhc3Npc3RhbmNlIGZvciBzeW5jaHJvbml6YXRpb24KK3RpbWVycy8KKwktIGluZm8gb24gdGhlIHRpbWVyIHJlbGF0ZWQgdG9waWNzCitod19yYW5kb20udHh0CisJLSBpbmZvIG9uIExpbnV4IHN1cHBvcnQgZm9yIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGluIGk4eHggY2hpcHNldHMuCitod21vbi8KKwktIGRpcmVjdG9yeSB3aXRoIGRvY3Mgb24gdmFyaW91cyBoYXJkd2FyZSBtb25pdG9yaW5nIGRyaXZlcnMuCitpMmMvCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIGFib3V0IHRoZSBJMkMgYnVzL3Byb3RvY29sICgyIHdpcmUsIGtIeiBzcGVlZCkuCitpMm8vCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIGFib3V0IHRoZSBMaW51eCBJMk8gc3Vic3lzdGVtLgoreDg2L2kzODYvCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIGFib3V0IExpbnV4IG9uIEludGVsIDMyIGJpdCBhcmNoaXRlY3R1cmUuCitpYTY0LworCS0gZGlyZWN0b3J5IHdpdGggaW5mbyBhYm91dCBMaW51eCBvbiBJbnRlbCA2NCBiaXQgYXJjaGl0ZWN0dXJlLgoraW5maW5pYmFuZC8KKwktIGRpcmVjdG9yeSB3aXRoIGRvY3VtZW50cyBjb25jZXJuaW5nIExpbnV4IEluZmluaUJhbmQgc3VwcG9ydC4KK2luaXQudHh0CisJLSB3aGF0IHRvIGRvIHdoZW4gdGhlIGtlcm5lbCBjYW4ndCBmaW5kIHRoZSAxc3QgcHJvY2VzcyB0byBydW4uCitpbml0cmQudHh0CisJLSBob3cgdG8gdXNlIHRoZSBSQU0gZGlzayBhcyBhbiBpbml0aWFsL3RlbXBvcmFyeSByb290IGZpbGVzeXN0ZW0uCitpbnB1dC8KKwktIGluZm8gb24gTGludXggaW5wdXQgZGV2aWNlIHN1cHBvcnQuCitpbnRlbF90eHQudHh0CisJLSBpbmZvIG9uIGludGVsIFRydXN0ZWQgRXhlY3V0aW9uIFRlY2hub2xvZ3kgKGludGVsIFRYVCkuCitpby1tYXBwaW5nLnR4dAorCS0gZGVzY3JpcHRpb24gb2YgaW9fbWFwcGluZyBmdW5jdGlvbnMgaW4gbGludXgvaW8tbWFwcGluZy5oCitpb19vcmRlcmluZy50eHQKKwktIGluZm8gb24gb3JkZXJpbmcgSS9PIHdyaXRlcyB0byBtZW1vcnktbWFwcGVkIGFkZHJlc3Nlcy4KK2lvY3RsLworCS0gZGlyZWN0b3J5IHdpdGggZG9jdW1lbnRzIGRlc2NyaWJpbmcgdmFyaW91cyBJT0NUTCBjYWxscy4KK2lvc3RhdHMudHh0CisJLSBpbmZvIG9uIEkvTyBzdGF0aXN0aWNzIExpbnV4IGtlcm5lbCBwcm92aWRlcy4KK2lycWZsYWdzLXRyYWNpbmcudHh0CisJLSBob3cgdG8gdXNlIHRoZSBpcnEtZmxhZ3MgdHJhY2luZyBmZWF0dXJlLgoraXNhcG5wLnR4dAorCS0gaW5mbyBvbiBMaW51eCBJU0EgUGx1ZyAmIFBsYXkgc3VwcG9ydC4KK2lzZG4vCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIG9uIHRoZSBMaW51eCBJU0ROIHN1cHBvcnQsIGFuZCBzdXBwb3J0ZWQgY2FyZHMuCitqYXZhLnR4dAorCS0gaW5mbyBvbiB0aGUgaW4ta2VybmVsIGJpbmFyeSBzdXBwb3J0IGZvciBKYXZhKHRtKS4KK2phX0pQLworCS0gZGlyZWN0b3J5IHdpdGggSmFwYW5lc2UgdHJhbnNsYXRpb25zIG9mIHZhcmlvdXMgZG9jdW1lbnRzCitrYnVpbGQvCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIGFib3V0IHRoZSBrZXJuZWwgYnVpbGQgcHJvY2Vzcy4KK2tkdW1wLworCS0gZGlyZWN0b3J5IHdpdGggbWluaSBIb3dUbyBvbiBnZXR0aW5nIHRoZSBjcmFzaCBkdW1wIGNvZGUgdG8gd29yay4KK2tlcm5lbC1kb2MtbmFuby1IT1dUTy50eHQKKwktIG1pbmkgSG93VG8gb24gZ2VuZXJhdGlvbiBhbmQgbG9jYXRpb24gb2Yga2VybmVsIGRvY3VtZW50YXRpb24gZmlsZXMuCitrZXJuZWwtZG9jcy50eHQKKwktIGxpc3Rpbmcgb2YgdmFyaW91cyBXV1cgKyBib29rcyB0aGF0IGRvY3VtZW50IGtlcm5lbCBpbnRlcm5hbHMuCitrZXJuZWwtcGFyYW1ldGVycy50eHQKKwktIHN1bW1hcnkgbGlzdGluZyBvZiBjb21tYW5kIGxpbmUgLyBib290IHByb21wdCBhcmdzIGZvciB0aGUga2VybmVsLgora2VybmVsLXBlci1DUFUta3RocmVhZHMudHh0CisJLSBMaXN0IG9mIGFsbCBwZXItQ1BVIGt0aHJlYWRzIGFuZCBob3cgdGhleSBpbnRyb2R1Y2Ugaml0dGVyLgora21lbWNoZWNrLnR4dAorCS0gaW5mbyBvbiBkeW5hbWljIGNoZWNrZXIgdGhhdCBkZXRlY3RzIHVzZXMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuCitrbWVtbGVhay50eHQKKwktIGluZm8gb24gaG93IHRvIG1ha2UgdXNlIG9mIHRoZSBrZXJuZWwgbWVtb3J5IGxlYWsgZGV0ZWN0aW9uIHN5c3RlbQora29fS1IvCisJLSBkaXJlY3Rvcnkgd2l0aCBLb3JlYW4gdHJhbnNsYXRpb25zIG9mIHZhcmlvdXMgZG9jdW1lbnRzCitrb2JqZWN0LnR4dAorCS0gaW5mbyBvZiB0aGUga29iamVjdCBpbmZyYXN0cnVjdHVyZSBvZiB0aGUgTGludXgga2VybmVsLgora3Byb2Jlcy50eHQKKwktIGRvY3VtZW50cyB0aGUga2VybmVsIHByb2JlcyBkZWJ1Z2dpbmcgZmVhdHVyZS4KK2tyZWYudHh0CisJLSBkb2NzIG9uIGFkZGluZyByZWZlcmVuY2UgY291bnRlcnMgKGtyZWZzKSB0byBrZXJuZWwgb2JqZWN0cy4KK2tzZWxmdGVzdC50eHQKKwktIHNtYWxsIHVuaXR0ZXN0cyBmb3IgKHNvbWUpIGluZGl2aWR1YWwgY29kZXBhdGhzIGluIHRoZSBrZXJuZWwuCitsYXB0b3BzLworCS0gZGlyZWN0b3J5IHdpdGggbGFwdG9wIHJlbGF0ZWQgaW5mbyBhbmQgbGFwdG9wIGRyaXZlciBkb2N1bWVudGF0aW9uLgorbGRtLnR4dAorCS0gYSBicmllZiBkZXNjcmlwdGlvbiBvZiBMRE0gKFdpbmRvd3MgRHluYW1pYyBEaXNrcykuCitsZWRzLworCS0gZGlyZWN0b3J5IHdpdGggaW5mbyBhYm91dCBMRUQgaGFuZGxpbmcgdW5kZXIgTGludXguCitsb2NhbF9vcHMudHh0CisJLSBzZW1hbnRpY3MgYW5kIGJlaGF2aW9yIG9mIGxvY2FsIGF0b21pYyBvcGVyYXRpb25zLgorbG9ja2luZy8KKwktIGRpcmVjdG9yeSB3aXRoIGluZm8gYWJvdXQga2VybmVsIGxvY2tpbmcgcHJpbWl0aXZlcworbG9ja3VwLXdhdGNoZG9ncy50eHQKKwktIGluZm8gb24gc29mdCBhbmQgaGFyZCBsb2NrdXAgZGV0ZWN0b3JzIChha2Egbm1pX3dhdGNoZG9nKS4KK2xvZ28uZ2lmCisJLSBmdWxsIGNvbG91ciBHSUYgaW1hZ2Ugb2YgTGludXggbG9nbyAocGVuZ3VpbiAtIFR1eCkuCitsb2dvLnR4dAorCS0gaW5mbyBvbiBjcmVhdG9yIG9mIGFib3ZlIGxvZ28gJiBzaXRlIHRvIGdldCBhZGRpdGlvbmFsIGltYWdlcyBmcm9tLgorbHpvLnR4dAorCS0ga2VybmVsIExaTyBkZWNvbXByZXNzb3IgaW5wdXQgZm9ybWF0cworbTY4ay8KKwktIGRpcmVjdG9yeSB3aXRoIGluZm8gYWJvdXQgTGludXggb24gTW90b3JvbGEgNjhrIGFyY2hpdGVjdHVyZS4KK21hZ2ljLW51bWJlci50eHQKKwktIGxpc3Qgb2YgbWFnaWMgbnVtYmVycyB1c2VkIHRvIG1hcmsvcHJvdGVjdCBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzLgorbWFpbGJveC50eHQKKwktIEhvdyB0byB3cml0ZSBkcml2ZXJzIGZvciB0aGUgY29tbW9uIG1haWxib3ggZnJhbWV3b3JrIChJUEMpLgorbWQudHh0CisJLSBpbmZvIG9uIGJvb3QgYXJndW1lbnRzIGZvciB0aGUgbXVsdGlwbGUgZGV2aWNlcyBkcml2ZXIuCittZWRpYS1mcmFtZXdvcmsudHh0CisJLSBpbmZvIG9uIG1lZGlhIGZyYW1ld29yaywgaXRzIGRhdGEgc3RydWN0dXJlcywgZnVuY3Rpb25zIGFuZCB1c2FnZS4KK21lbW9yeS1iYXJyaWVycy50eHQKKwktIGluZm8gb24gTGludXgga2VybmVsIG1lbW9yeSBiYXJyaWVycy4KK21lbW9yeS1kZXZpY2VzLworCS0gZGlyZWN0b3J5IHdpdGggaW5mbyBvbiBwYXJ0cyBsaWtlIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBFTUlGIGRyaXZlcgorbWVtb3J5LWhvdHBsdWcudHh0CisJLSBIb3RwbHVnZ2FibGUgbWVtb3J5IHN1cHBvcnQsIGhvdyB0byB1c2UgYW5kIGN1cnJlbnQgc3RhdHVzLgorbWV0YWcvCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIGFib3V0IExpbnV4IG9uIE1ldGEgYXJjaGl0ZWN0dXJlLgorbWlwcy8KKwktIGRpcmVjdG9yeSB3aXRoIGluZm8gYWJvdXQgTGludXggb24gTUlQUyBhcmNoaXRlY3R1cmUuCittaXNjLWRldmljZXMvCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIGFib3V0IGRldmljZXMgdXNpbmcgdGhlIG1pc2MgZGV2IHN1YnN5c3RlbQorbW1jLworCS0gZGlyZWN0b3J5IHdpdGggaW5mbyBhYm91dCB0aGUgTU1DIHN1YnN5c3RlbQorbW4xMDMwMC8KKwktIGRpcmVjdG9yeSB3aXRoIGluZm8gYWJvdXQgdGhlIG1uMTAzMDAgYXJjaGl0ZWN0dXJlIHBvcnQKK21vZHVsZS1zaWduaW5nLnR4dAorCS0gS2VybmVsIG1vZHVsZSBzaWduaW5nIGZvciBpbmNyZWFzZWQgc2VjdXJpdHkgd2hlbiBsb2FkaW5nIG1vZHVsZXMuCittdGQvCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIGFib3V0IG1lbW9yeSB0ZWNobm9sb2d5IGRldmljZXMgKGZsYXNoKQorbW9uby50eHQKKwktIGhvdyB0byBleGVjdXRlIE1vbm8tYmFzZWQgLk5FVCBiaW5hcmllcyB3aXRoIHRoZSBoZWxwIG9mIEJJTkZNVF9NSVNDLgorbmFtZXNwYWNlcy8KKwktIGRpcmVjdG9yeSB3aXRoIHZhcmlvdXMgaW5mb3JtYXRpb24gYWJvdXQgbmFtZXNwYWNlcworbmV0bGFiZWwvCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvcm1hdGlvbiBvbiB0aGUgTmV0TGFiZWwgc3Vic3lzdGVtLgorbmV0d29ya2luZy8KKwktIGRpcmVjdG9yeSB3aXRoIGluZm8gb24gdmFyaW91cyBhc3BlY3RzIG9mIG5ldHdvcmtpbmcgd2l0aCBMaW51eC4KK25mYy8KKwktIGRpcmVjdG9yeSByZWxhdGluZyBpbmZvIGFib3V0IE5lYXIgRmllbGQgQ29tbXVuaWNhdGlvbnMgc3VwcG9ydC4KK25vbW11LW1tYXAudHh0CisJLSBkb2N1bWVudGF0aW9uIGFib3V0IG5vLW1tdSBtZW1vcnkgbWFwcGluZyBzdXBwb3J0LgorbnVtYXN0YXQudHh0CisJLSBpbmZvIG9uIGhvdyB0byByZWFkIE51bWEgcG9saWN5IGhpdC9taXNzIHN0YXRpc3RpY3MgaW4gc3lzZnMuCitvb3BzLXRyYWNpbmcudHh0CisJLSBob3cgdG8gZGVjb2RlIHRob3NlIG5hc3R5IGludGVybmFsIGtlcm5lbCBlcnJvciBkdW1wIG1lc3NhZ2VzLgorcGFkYXRhLnR4dAorCS0gQW4gaW50cm9kdWN0aW9uIHRvIHRoZSAicGFkYXRhIiBwYXJhbGxlbCBleGVjdXRpb24gQVBJCitwYXJpc2MvCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIG9uIHVzaW5nIExpbnV4IG9uIFBBLVJJU0MgYXJjaGl0ZWN0dXJlLgorcGFycG9ydC50eHQKKwktIGhvdyB0byB1c2UgdGhlIHBhcmFsbGVsLXBvcnQgZHJpdmVyLgorcGFycG9ydC1sb3dsZXZlbC50eHQKKwktIGRlc2NyaXB0aW9uIGFuZCB1c2FnZSBvZiB0aGUgbG93IGxldmVsIHBhcmFsbGVsIHBvcnQgZnVuY3Rpb25zLgorcGNtY2lhLworCS0gaW5mbyBvbiB0aGUgTGludXggUENNQ0lBIGRyaXZlci4KK3BlcmNwdS1ydy1zZW1hcGhvcmUudHh0CisJLSBSQ1UgYmFzZWQgcmVhZC13cml0ZSBzZW1hcGhvcmUgb3B0aW1pemVkIGZvciBsb2NraW5nIGZvciByZWFkaW5nCitwaHkudHh0CisJLSBEZXNjcmlwdGlvbiBvZiB0aGUgZ2VuZXJpYyBQSFkgZnJhbWV3b3JrLgorcGktZnV0ZXgudHh0CisJLSBkb2N1bWVudGF0aW9uIG9uIGxpZ2h0d2VpZ2h0IHByaW9yaXR5IGluaGVyaXRhbmNlIGZ1dGV4ZXMuCitwaW5jdHJsLnR4dAorCS0gaW5mbyBvbiBwaW5jdHJsIHN1YnN5c3RlbSBhbmQgdGhlIFBJTk1VWC9QSU5DT05GIGFuZCBkcml2ZXJzCitwbnAudHh0CisJLSBMaW51eCBQbHVnIGFuZCBQbGF5IGRvY3VtZW50YXRpb24uCitwb3dlci8KKwktIGRpcmVjdG9yeSB3aXRoIGluZm8gb24gTGludXggUENJIHBvd2VyIG1hbmFnZW1lbnQuCitwb3dlcnBjLworCS0gZGlyZWN0b3J5IHdpdGggaW5mbyBvbiB1c2luZyBMaW51eCB3aXRoIHRoZSBQb3dlclBDLgorcHJjdGwvCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIG9uIHRoZSBwcml2ZWxlZGdlIGNvbnRyb2wgc3Vic3lzdGVtCitwcmVlbXB0LWxvY2tpbmcudHh0CisJLSBpbmZvIG9uIGxvY2tpbmcgdW5kZXIgYSBwcmVlbXB0aXZlIGtlcm5lbC4KK3ByaW50ay1mb3JtYXRzLnR4dAorCS0gaG93IHRvIGdldCBwcmludGsgZm9ybWF0IHNwZWNpZmllcnMgcmlnaHQKK3Bwcy8KKwktIGRpcmVjdG9yeSB3aXRoIGluZm9ybWF0aW9uIG9uIHRoZSBwdWxzZS1wZXItc2Vjb25kIHN1cHBvcnQKK3B0cC8KKwktIGRpcmVjdG9yeSB3aXRoIGluZm8gb24gc3VwcG9ydCBmb3IgSUVFRSAxNTg4IFBUUCBjbG9ja3MgaW4gTGludXguCitwd20udHh0CisJLSBpbmZvIG9uIHRoZSBwdWxzZSB3aWR0aCBtb2R1bGF0aW9uIGRyaXZlciBzdWJzeXN0ZW0KK3JhbW9vcHMudHh0CisJLSBkb2N1bWVudGF0aW9uIG9mIHRoZSByYW1vb3BzIG9vcHMvcGFuaWMgbG9nZ2luZyBtb2R1bGUuCityYXBpZGlvLworCS0gZGlyZWN0b3J5IHdpdGggaW5mbyBvbiBSYXBpZElPIHBhY2tldC1iYXNlZCBmYWJyaWMgaW50ZXJjb25uZWN0CityYnRyZWUudHh0CisJLSBpbmZvIG9uIHdoYXQgcmVkLWJsYWNrIHRyZWVzIGFyZSBhbmQgd2hhdCB0aGV5IGFyZSBmb3IuCityZW1vdGVwcm9jLnR4dAorCS0gaW5mbyBvbiBob3cgdG8gaGFuZGxlIHJlbW90ZSBwcm9jZXNzb3IgKGUuZy4gQU1QKSBvZmZsb2Fkcy91c2FnZS4KK3Jma2lsbC50eHQKKwktIGluZm8gb24gdGhlIHJhZGlvIGZyZXF1ZW5jeSBraWxsIHN3aXRjaCBzdWJzeXN0ZW0vc3VwcG9ydC4KK3JvYnVzdC1mdXRleC1BQkkudHh0CisJLSBkb2N1bWVudGF0aW9uIG9mIHRoZSByb2J1c3QgZnV0ZXggQUJJLgorcm9idXN0LWZ1dGV4ZXMudHh0CisJLSBhIGRlc2NyaXB0aW9uIG9mIHdoYXQgcm9idXN0IGZ1dGV4ZXMgYXJlLgorcnBtc2cudHh0CisJLSBpbmZvIG9uIHRoZSBSZW1vdGUgUHJvY2Vzc29yIE1lc3NhZ2luZyAocnBtc2cpIEZyYW1ld29yaworcnRjLnR4dAorCS0gbm90ZXMgb24gaG93IHRvIHVzZSB0aGUgUmVhbCBUaW1lIENsb2NrIChha2EgQ01PUyBjbG9jaykgZHJpdmVyLgorczM5MC8KKwktIGRpcmVjdG9yeSB3aXRoIGluZm8gb24gdXNpbmcgTGludXggb24gdGhlIElCTSBTMzkwLgorc2NoZWR1bGVyLworCS0gZGlyZWN0b3J5IHdpdGggaW5mbyBvbiB0aGUgc2NoZWR1bGVyLgorc2NzaS8KKwktIGRpcmVjdG9yeSB3aXRoIGluZm8gb24gTGludXggc2NzaSBzdXBwb3J0Lgorc2VjdXJpdHkvCisJLSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBzZWN1cml0eS1yZWxhdGVkIGluZm8KK3NlcmlhbC8KKwktIGRpcmVjdG9yeSB3aXRoIGluZm8gb24gdGhlIGxvdyBsZXZlbCBzZXJpYWwgQVBJLgorc2VyaWFsLWNvbnNvbGUudHh0CisJLSBob3cgdG8gc2V0IHVwIExpbnV4IHdpdGggYSBzZXJpYWwgbGluZSBjb25zb2xlIGFzIHRoZSBkZWZhdWx0Lgorc2dpLWlvYzQudHh0CisJLSBkZXNjcmlwdGlvbiBvZiB0aGUgU0dJIElPQzQgUENJIChtdWx0aSBmdW5jdGlvbikgZGV2aWNlLgorc2gvCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIG9uIHBvcnRpbmcgTGludXggdG8gYSBuZXcgYXJjaGl0ZWN0dXJlLgorc21zY19lY2UxMDk5LnR4dAorCS1pbmZvIG9uIHRoZSBzbXNjIEtleWJvYXJkIFNjYW4gRXhwYW5zaW9uL0dQSU8gRXhwYW5zaW9uIGRldmljZS4KK3NvdW5kLworCS0gZGlyZWN0b3J5IHdpdGggaW5mbyBvbiBzb3VuZCBjYXJkIHN1cHBvcnQuCitzcGFyc2UudHh0CisJLSBpbmZvIG9uIGhvdyB0byBvYnRhaW4gYW5kIHVzZSB0aGUgc3BhcnNlIHRvb2wgZm9yIHR5cGVjaGVja2luZy4KK3NwaS8KKwktIG92ZXJ2aWV3IG9mIExpbnV4IGtlcm5lbCBTZXJpYWwgUGVyaXBoZXJhbCBJbnRlcmZhY2UgKFNQSSkgc3VwcG9ydC4KK3N0YWJsZV9hcGlfbm9uc2Vuc2UudHh0CisJLSBpbmZvIG9uIHdoeSB0aGUga2VybmVsIGRvZXMgbm90IGhhdmUgYSBzdGFibGUgaW4ta2VybmVsIGFwaSBvciBhYmkuCitzdGFibGVfa2VybmVsX3J1bGVzLnR4dAorCS0gcnVsZXMgYW5kIHByb2NlZHVyZXMgZm9yIHRoZSAtc3RhYmxlIGtlcm5lbCByZWxlYXNlcy4KK3N0YXRpYy1rZXlzLnR4dAorCS0gaW5mbyBvbiBob3cgc3RhdGljIGtleXMgYWxsb3cgZGVidWcgY29kZSBpbiBob3RwYXRocyB2aWEgcGF0Y2hpbmcKK3N2Z2EudHh0CisJLSBzaG9ydCBndWlkZSBvbiBzZWxlY3RpbmcgdmlkZW8gbW9kZXMgYXQgYm9vdCB2aWEgVkdBIEJJT1MuCitzeXNmcy1ydWxlcy50eHQKKwktIEhvdyBub3QgdG8gdXNlIHN5c2ZzLgorc3lzY3RsLworCS0gZGlyZWN0b3J5IHdpdGggaW5mbyBvbiB0aGUgL3Byb2Mvc3lzLyogZmlsZXMuCitzeXNycS50eHQKKwktIGluZm8gb24gdGhlIG1hZ2ljIFN5c1JxIGtleS4KK3RhcmdldC8KKwktIGRpcmVjdG9yeSB3aXRoIGluZm8gb24gZ2VuZXJhdGluZyBUQ00gdjQgZmFicmljIC5rbyBtb2R1bGVzCit0aGlzX2NwdV9vcHMudHh0CisJLSBMaXN0IHJhdGlvbmFsZSBiZWhpbmQgYW5kIHRoZSB3YXkgdG8gdXNlIHRoaXNfY3B1IG9wZXJhdGlvbnMuCit0aGVybWFsLworCS0gZGlyZWN0b3J5IHdpdGggaW5mb3JtYXRpb24gb24gbWFuYWdpbmcgdGhlcm1hbCBpc3N1ZXMgKENQVS90ZW1wKQordHJhY2UvCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIG9uIHRyYWNpbmcgdGVjaG5vbG9naWVzIHdpdGhpbiBsaW51eAordW5hbGlnbmVkLW1lbW9yeS1hY2Nlc3MudHh0CisJLSBpbmZvIG9uIGhvdyB0byBhdm9pZCBhcmNoIGJyZWFraW5nIHVuYWxpZ25lZCBtZW1vcnkgYWNjZXNzIGluIGNvZGUuCit1bmljb2RlLnR4dAorCS0gaW5mbyBvbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXIvZm9udCBtYXBwaW5nIHVzZWQgaW4gTGludXguCit1bnNoYXJlLnR4dAorCS0gZGVzY3JpcHRpb24gb2YgdGhlIExpbnV4IHVuc2hhcmUgc3lzdGVtIGNhbGwuCit1c2IvCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIHJlZ2FyZGluZyB0aGUgVW5pdmVyc2FsIFNlcmlhbCBCdXMuCit2RFNPLworCS0gZGlyZWN0b3J5IHdpdGggaW5mbyByZWdhcmRpbmcgdmlydHVhbCBkeW5hbWljIHNoYXJlZCBvYmplY3RzCit2ZmlvLnR4dAorCS0gaW5mbyBvbiBWaXJ0dWFsIEZ1bmN0aW9uIEkvTyB1c2VkIGluIGd1ZXN0L2h5cGVydmlzb3IgaW5zdGFuY2VzLgordmdhYXJiaXRlci50eHQKKwktIGluZm8gb24gZW5hYmxlL2Rpc2FibGUgdGhlIGxlZ2FjeSBkZWNvZGluZyBvbiBkaWZmZXJlbnQgVkdBIGRldmljZXMKK3ZpZGVvLW91dHB1dC50eHQKKwktIHN5c2ZzIGNsYXNzIGRyaXZlciBpbnRlcmZhY2UgdG8gZW5hYmxlL2Rpc2FibGUgYSB2aWRlbyBvdXRwdXQgZGV2aWNlLgordmlkZW80bGludXgvCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIHJlZ2FyZGluZyB2aWRlby9UVi9yYWRpbyBjYXJkcyBhbmQgbGludXguCit2aXJ0dWFsLworCS0gZGlyZWN0b3J5IHdpdGggaW5mb3JtYXRpb24gb24gdGhlIHZhcmlvdXMgbGludXggdmlydHVhbGl6YXRpb25zLgordm0vCisJLSBkaXJlY3Rvcnkgd2l0aCBpbmZvIG9uIHRoZSBMaW51eCB2bSBjb2RlLgordm1lX2FwaS50eHQKKwktIGZpbGUgcmVsYXRpbmcgaW5mbyBvbiB0aGUgVk1FIGJ1cyBBUEkgaW4gbGludXgKK3ZvbGF0aWxlLWNvbnNpZGVyZWQtaGFybWZ1bC50eHQKKwktIFdoeSB0aGUgInZvbGF0aWxlIiB0eXBlIGNsYXNzIHNob3VsZCBub3QgYmUgdXNlZAordzEvCisJLSBkaXJlY3Rvcnkgd2l0aCBkb2N1bWVudHMgcmVnYXJkaW5nIHRoZSAxLXdpcmUgKHcxKSBzdWJzeXN0ZW0uCit3YXRjaGRvZy8KKwktIGhvdyB0byBhdXRvLXJlYm9vdCBMaW51eCBpZiBpdCBoYXMgImZhbGxlbiBhbmQgY2FuJ3QgZ2V0IHVwIi4gOy0pCit3aW1heC8KKwktIGRpcmVjdG9yeSB3aXRoIGluZm8gYWJvdXQgSW50ZWwgV2lyZWxlc3MgV2ltYXggQ29ubmVjdGlvbnMKK3dvcmtxdWV1ZS50eHQKKwktIGluZm9ybWF0aW9uIG9uIHRoZSBDb25jdXJyZW5jeSBNYW5hZ2VkIFdvcmtxdWV1ZSBpbXBsZW1lbnRhdGlvbgoreDg2L3g4Nl82NC8KKwktIGRpcmVjdG9yeSB3aXRoIGluZm8gb24gTGludXggc3VwcG9ydCBmb3IgQU1EIHg4Ni02NCAoSGFtbWVyKSBtYWNoaW5lcy4KK3hpbGx5YnVzLnR4dAorCS0gT3ZlcnZpZXcgYW5kIGJhc2ljIHVpIG9mIHhpbGx5YnVzIGRyaXZlcgoreHRlbnNhLworCS0gZGlyZWN0b3J5IHdpdGggZG9jdW1lbnRzIHJlbGF0aW5nIHRvIGFyY2gveHRlbnNhIHBvcnQvaW1wbGVtZW50YXRpb24KK3h6LnR4dAorCS0gaG93IHRvIG1ha2UgdXNlIG9mIHRoZSBYWiBkYXRhIGNvbXByZXNzaW9uIHdpdGhpbiBsaW51eCBrZXJuZWwKK3poX0NOLworCS0gZGlyZWN0b3J5IHdpdGggQ2hpbmVzZSB0cmFuc2xhdGlvbnMgb2YgdmFyaW91cyBkb2N1bWVudHMKK3pvcnJvLnR4dAorCS0gaW5mbyBvbiB3cml0aW5nIGRyaXZlcnMgZm9yIFpvcnJvIGJ1cyBkZXZpY2VzIGZvdW5kIG9uIEFtaWdhcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL1JFQURNRSBiL0RvY3VtZW50YXRpb24vQUJJL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmFmYzRiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvUkVBRE1FCkBAIC0wLDAgKzEsODcgQEAKK1RoaXMgZGlyZWN0b3J5IGF0dGVtcHRzIHRvIGRvY3VtZW50IHRoZSBBQkkgYmV0d2VlbiB0aGUgTGludXgga2VybmVsIGFuZAordXNlcnNwYWNlLCBhbmQgdGhlIHJlbGF0aXZlIHN0YWJpbGl0eSBvZiB0aGVzZSBpbnRlcmZhY2VzLiAgRHVlIHRvIHRoZQorZXZlcmNoYW5naW5nIG5hdHVyZSBvZiBMaW51eCwgYW5kIHRoZSBkaWZmZXJpbmcgbWF0dXJpdHkgbGV2ZWxzLCB0aGVzZQoraW50ZXJmYWNlcyBzaG91bGQgYmUgdXNlZCBieSB1c2Vyc3BhY2UgcHJvZ3JhbXMgaW4gZGlmZmVyZW50IHdheXMuCisKK1dlIGhhdmUgZm91ciBkaWZmZXJlbnQgbGV2ZWxzIG9mIEFCSSBzdGFiaWxpdHksIGFzIHNob3duIGJ5IHRoZSBmb3VyCitkaWZmZXJlbnQgc3ViZGlyZWN0b3JpZXMgaW4gdGhpcyBsb2NhdGlvbi4gIEludGVyZmFjZXMgbWF5IGNoYW5nZSBsZXZlbHMKK29mIHN0YWJpbGl0eSBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIGRlc2NyaWJlZCBiZWxvdy4KKworVGhlIGRpZmZlcmVudCBsZXZlbHMgb2Ygc3RhYmlsaXR5IGFyZToKKworICBzdGFibGUvCisJVGhpcyBkaXJlY3RvcnkgZG9jdW1lbnRzIHRoZSBpbnRlcmZhY2VzIHRoYXQgdGhlIGRldmVsb3BlciBoYXMKKwlkZWZpbmVkIHRvIGJlIHN0YWJsZS4gIFVzZXJzcGFjZSBwcm9ncmFtcyBhcmUgZnJlZSB0byB1c2UgdGhlc2UKKwlpbnRlcmZhY2VzIHdpdGggbm8gcmVzdHJpY3Rpb25zLCBhbmQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3IKKwl0aGVtIHdpbGwgYmUgZ3VhcmFudGVlZCBmb3IgYXQgbGVhc3QgMiB5ZWFycy4gIE1vc3QgaW50ZXJmYWNlcworCShsaWtlIHN5c2NhbGxzKSBhcmUgZXhwZWN0ZWQgdG8gbmV2ZXIgY2hhbmdlIGFuZCBhbHdheXMgYmUKKwlhdmFpbGFibGUuCisKKyAgdGVzdGluZy8KKwlUaGlzIGRpcmVjdG9yeSBkb2N1bWVudHMgaW50ZXJmYWNlcyB0aGF0IGFyZSBmZWx0IHRvIGJlIHN0YWJsZSwKKwlhcyB0aGUgbWFpbiBkZXZlbG9wbWVudCBvZiB0aGlzIGludGVyZmFjZSBoYXMgYmVlbiBjb21wbGV0ZWQuCisJVGhlIGludGVyZmFjZSBjYW4gYmUgY2hhbmdlZCB0byBhZGQgbmV3IGZlYXR1cmVzLCBidXQgdGhlCisJY3VycmVudCBpbnRlcmZhY2Ugd2lsbCBub3QgYnJlYWsgYnkgZG9pbmcgdGhpcywgdW5sZXNzIGdyYXZlCisJZXJyb3JzIG9yIHNlY3VyaXR5IHByb2JsZW1zIGFyZSBmb3VuZCBpbiB0aGVtLiAgVXNlcnNwYWNlCisJcHJvZ3JhbXMgY2FuIHN0YXJ0IHRvIHJlbHkgb24gdGhlc2UgaW50ZXJmYWNlcywgYnV0IHRoZXkgbXVzdCBiZQorCWF3YXJlIG9mIGNoYW5nZXMgdGhhdCBjYW4gb2NjdXIgYmVmb3JlIHRoZXNlIGludGVyZmFjZXMgbW92ZSB0bworCWJlIG1hcmtlZCBzdGFibGUuICBQcm9ncmFtcyB0aGF0IHVzZSB0aGVzZSBpbnRlcmZhY2VzIGFyZQorCXN0cm9uZ2x5IGVuY291cmFnZWQgdG8gYWRkIHRoZWlyIG5hbWUgdG8gdGhlIGRlc2NyaXB0aW9uIG9mCisJdGhlc2UgaW50ZXJmYWNlcywgc28gdGhhdCB0aGUga2VybmVsIGRldmVsb3BlcnMgY2FuIGVhc2lseQorCW5vdGlmeSB0aGVtIGlmIGFueSBjaGFuZ2VzIG9jY3VyIChzZWUgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZQorCWxheW91dCBvZiB0aGUgZmlsZXMgYmVsb3cgZm9yIGRldGFpbHMgb24gaG93IHRvIGRvIHRoaXMuKQorCisgIG9ic29sZXRlLworICAJVGhpcyBkaXJlY3RvcnkgZG9jdW1lbnRzIGludGVyZmFjZXMgdGhhdCBhcmUgc3RpbGwgcmVtYWluaW5nIGluCisJdGhlIGtlcm5lbCwgYnV0IGFyZSBtYXJrZWQgdG8gYmUgcmVtb3ZlZCBhdCBzb21lIGxhdGVyIHBvaW50IGluCisJdGltZS4gIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgaW50ZXJmYWNlIHdpbGwgZG9jdW1lbnQgdGhlIHJlYXNvbgorCXdoeSBpdCBpcyBvYnNvbGV0ZSBhbmQgd2hlbiBpdCBjYW4gYmUgZXhwZWN0ZWQgdG8gYmUgcmVtb3ZlZC4KKworICByZW1vdmVkLworCVRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIGEgbGlzdCBvZiB0aGUgb2xkIGludGVyZmFjZXMgdGhhdCBoYXZlCisJYmVlbiByZW1vdmVkIGZyb20gdGhlIGtlcm5lbC4KKworRXZlcnkgZmlsZSBpbiB0aGVzZSBkaXJlY3RvcmllcyB3aWxsIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjoKKworV2hhdDoJCVNob3J0IGRlc2NyaXB0aW9uIG9mIHRoZSBpbnRlcmZhY2UKK0RhdGU6CQlEYXRlIGNyZWF0ZWQKK0tlcm5lbFZlcnNpb246CUtlcm5lbCB2ZXJzaW9uIHRoaXMgZmVhdHVyZSBmaXJzdCBzaG93ZWQgdXAgaW4uCitDb250YWN0OglQcmltYXJ5IGNvbnRhY3QgZm9yIHRoaXMgaW50ZXJmYWNlIChtYXkgYmUgYSBtYWlsaW5nIGxpc3QpCitEZXNjcmlwdGlvbjoJTG9uZyBkZXNjcmlwdGlvbiBvZiB0aGUgaW50ZXJmYWNlIGFuZCBob3cgdG8gdXNlIGl0LgorVXNlcnM6CQlBbGwgdXNlcnMgb2YgdGhpcyBpbnRlcmZhY2Ugd2hvIHdpc2ggdG8gYmUgbm90aWZpZWQgd2hlbgorCQlpdCBjaGFuZ2VzLiAgVGhpcyBpcyB2ZXJ5IGltcG9ydGFudCBmb3IgaW50ZXJmYWNlcyBpbgorCQl0aGUgInRlc3RpbmciIHN0YWdlLCBzbyB0aGF0IGtlcm5lbCBkZXZlbG9wZXJzIGNhbiB3b3JrCisJCXdpdGggdXNlcnNwYWNlIGRldmVsb3BlcnMgdG8gZW5zdXJlIHRoYXQgdGhpbmdzIGRvIG5vdAorCQlicmVhayBpbiB3YXlzIHRoYXQgYXJlIHVuYWNjZXB0YWJsZS4gIEl0IGlzIGFsc28KKwkJaW1wb3J0YW50IHRvIGdldCBmZWVkYmFjayBmb3IgdGhlc2UgaW50ZXJmYWNlcyB0byBtYWtlCisJCXN1cmUgdGhleSBhcmUgd29ya2luZyBpbiBhIHByb3BlciB3YXkgYW5kIGRvIG5vdCBuZWVkIHRvCisJCWJlIGNoYW5nZWQgZnVydGhlci4KKworCitIb3cgdGhpbmdzIG1vdmUgYmV0d2VlbiBsZXZlbHM6CisKK0ludGVyZmFjZXMgaW4gc3RhYmxlIG1heSBtb3ZlIHRvIG9ic29sZXRlLCBhcyBsb25nIGFzIHRoZSBwcm9wZXIKK25vdGlmaWNhdGlvbiBpcyBnaXZlbi4KKworSW50ZXJmYWNlcyBtYXkgYmUgcmVtb3ZlZCBmcm9tIG9ic29sZXRlIGFuZCB0aGUga2VybmVsIGFzIGxvbmcgYXMgdGhlCitkb2N1bWVudGVkIGFtb3VudCBvZiB0aW1lIGhhcyBnb25lIGJ5LgorCitJbnRlcmZhY2VzIGluIHRoZSB0ZXN0aW5nIHN0YXRlIGNhbiBtb3ZlIHRvIHRoZSBzdGFibGUgc3RhdGUgd2hlbiB0aGUKK2RldmVsb3BlcnMgZmVlbCB0aGV5IGFyZSBmaW5pc2hlZC4gIFRoZXkgY2Fubm90IGJlIHJlbW92ZWQgZnJvbSB0aGUKK2tlcm5lbCB0cmVlIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGUgb2Jzb2xldGUgc3RhdGUgZmlyc3QuCisKK0l0J3MgdXAgdG8gdGhlIGRldmVsb3BlciB0byBwbGFjZSB0aGVpciBpbnRlcmZhY2VzIGluIHRoZSBjYXRlZ29yeSB0aGV5Cit3aXNoIGZvciBpdCB0byBzdGFydCBvdXQgaW4uCisKKworTm90YWJsZSBiaXRzIG9mIG5vbi1BQkksIHdoaWNoIHNob3VsZCBub3QgdW5kZXIgYW55IGNpcmN1bXN0YW5jZXMgYmUgY29uc2lkZXJlZAorc3RhYmxlOgorCistIEtjb25maWcuICBVc2Vyc3BhY2Ugc2hvdWxkIG5vdCByZWx5IG9uIHRoZSBwcmVzZW5jZSBvciBhYnNlbmNlIG9mIGFueQorICBwYXJ0aWN1bGFyIEtjb25maWcgc3ltYm9sLCBpbiAvcHJvYy9jb25maWcuZ3osIGluIHRoZSBjb3B5IG9mIC5jb25maWcKKyAgY29tbW9ubHkgaW5zdGFsbGVkIHRvIC9ib290LCBvciBpbiBhbnkgaW52b2NhdGlvbiBvZiB0aGUga2VybmVsIGJ1aWxkCisgIHByb2Nlc3MuCisKKy0gS2VybmVsLWludGVybmFsIHN5bWJvbHMuICBEbyBub3QgcmVseSBvbiB0aGUgcHJlc2VuY2UsIGFic2VuY2UsIGxvY2F0aW9uLCBvcgorICB0eXBlIG9mIGFueSBrZXJuZWwgc3ltYm9sLCBlaXRoZXIgaW4gU3lzdGVtLm1hcCBmaWxlcyBvciB0aGUga2VybmVsIGJpbmFyeQorICBpdHNlbGYuICBTZWUgRG9jdW1lbnRhdGlvbi9zdGFibGVfYXBpX25vbnNlbnNlLnR4dC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL29ic29sZXRlL3Byb2Mtc3lzLXZtLW5yX3BkZmx1c2hfdGhyZWFkcyBiL0RvY3VtZW50YXRpb24vQUJJL29ic29sZXRlL3Byb2Mtc3lzLXZtLW5yX3BkZmx1c2hfdGhyZWFkcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGIwZWViCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvb2Jzb2xldGUvcHJvYy1zeXMtdm0tbnJfcGRmbHVzaF90aHJlYWRzCkBAIC0wLDAgKzEsNSBAQAorV2hhdDoJCS9wcm9jL3N5cy92bS9ucl9wZGZsdXNoX3RocmVhZHMKK0RhdGU6CQlKdW5lIDIwMTIKK0NvbnRhY3Q6CVdhbnBlbmcgTGkgPGxpd3BAbGludXgudm5ldC5pYm0uY29tPgorRGVzY3JpcHRpb246IFNpbmNlIHBkZmx1c2ggaXMgcmVwbGFjZWQgYnkgcGVyLUJESSBmbHVzaGVyLCB0aGUgaW50ZXJmYWNlIG9mIG9sZCBwZGZsdXNoCisgICAgICAgICAgICAgZXhwb3J0ZWQgaW4gL3Byb2Mvc3lzL3ZtLyBzaG91bGQgYmUgcmVtb3ZlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL29ic29sZXRlL3N5c2ZzLWJsb2NrLXpyYW0gYi9Eb2N1bWVudGF0aW9uL0FCSS9vYnNvbGV0ZS9zeXNmcy1ibG9jay16cmFtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyMGVhOTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS9vYnNvbGV0ZS9zeXNmcy1ibG9jay16cmFtCkBAIC0wLDAgKzEsMTE5IEBACitXaGF0OgkJL3N5cy9ibG9jay96cmFtPGlkPi9udW1fcmVhZHMKK0RhdGU6CQlBdWd1c3QgMjAxNQorQ29udGFjdDoJU2VyZ2V5IFNlbm96aGF0c2t5IDxzZXJnZXkuc2Vub3poYXRza3lAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSBudW1fcmVhZHMgZmlsZSBpcyByZWFkLW9ubHkgYW5kIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mCisJCXJlYWRzIChmYWlsZWQgb3Igc3VjY2Vzc2Z1bCkgZG9uZSBvbiB0aGlzIGRldmljZS4KKwkJTm93IGFjY2Vzc2libGUgdmlhIHpyYW08aWQ+L3N0YXQgbm9kZS4KKworV2hhdDoJCS9zeXMvYmxvY2svenJhbTxpZD4vbnVtX3dyaXRlcworRGF0ZToJCUF1Z3VzdCAyMDE1CitDb250YWN0OglTZXJnZXkgU2Vub3poYXRza3kgPHNlcmdleS5zZW5vemhhdHNreUBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIG51bV93cml0ZXMgZmlsZSBpcyByZWFkLW9ubHkgYW5kIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mCisJCXdyaXRlcyAoZmFpbGVkIG9yIHN1Y2Nlc3NmdWwpIGRvbmUgb24gdGhpcyBkZXZpY2UuCisJCU5vdyBhY2Nlc3NpYmxlIHZpYSB6cmFtPGlkPi9zdGF0IG5vZGUuCisKK1doYXQ6CQkvc3lzL2Jsb2NrL3pyYW08aWQ+L2ludmFsaWRfaW8KK0RhdGU6CQlBdWd1c3QgMjAxNQorQ29udGFjdDoJU2VyZ2V5IFNlbm96aGF0c2t5IDxzZXJnZXkuc2Vub3poYXRza3lAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSBpbnZhbGlkX2lvIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZgorCQlub24tcGFnZS1zaXplLWFsaWduZWQgSS9PIHJlcXVlc3RzIGlzc3VlZCB0byB0aGlzIGRldmljZS4KKwkJTm93IGFjY2Vzc2libGUgdmlhIHpyYW08aWQ+L2lvX3N0YXQgbm9kZS4KKworV2hhdDoJCS9zeXMvYmxvY2svenJhbTxpZD4vZmFpbGVkX3JlYWRzCitEYXRlOgkJQXVndXN0IDIwMTUKK0NvbnRhY3Q6CVNlcmdleSBTZW5vemhhdHNreSA8c2VyZ2V5LnNlbm96aGF0c2t5QGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgZmFpbGVkX3JlYWRzIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZgorCQlmYWlsZWQgcmVhZHMgaGFwcGVuZWQgb24gdGhpcyBkZXZpY2UuCisJCU5vdyBhY2Nlc3NpYmxlIHZpYSB6cmFtPGlkPi9pb19zdGF0IG5vZGUuCisKK1doYXQ6CQkvc3lzL2Jsb2NrL3pyYW08aWQ+L2ZhaWxlZF93cml0ZXMKK0RhdGU6CQlBdWd1c3QgMjAxNQorQ29udGFjdDoJU2VyZ2V5IFNlbm96aGF0c2t5IDxzZXJnZXkuc2Vub3poYXRza3lAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSBmYWlsZWRfd3JpdGVzIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZgorCQlmYWlsZWQgd3JpdGVzIGhhcHBlbmVkIG9uIHRoaXMgZGV2aWNlLgorCQlOb3cgYWNjZXNzaWJsZSB2aWEgenJhbTxpZD4vaW9fc3RhdCBub2RlLgorCitXaGF0OgkJL3N5cy9ibG9jay96cmFtPGlkPi9ub3RpZnlfZnJlZQorRGF0ZToJCUF1Z3VzdCAyMDE1CitDb250YWN0OglTZXJnZXkgU2Vub3poYXRza3kgPHNlcmdleS5zZW5vemhhdHNreUBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIG5vdGlmeV9mcmVlIGZpbGUgaXMgcmVhZC1vbmx5LiBEZXBlbmRpbmcgb24gZGV2aWNlIHVzYWdlCisJCXNjZW5hcmlvIGl0IG1heSBhY2NvdW50IGEpIHRoZSBudW1iZXIgb2YgcGFnZXMgZnJlZWQgYmVjYXVzZQorCQlvZiBzd2FwIHNsb3QgZnJlZSBub3RpZmljYXRpb25zIG9yIGIpIHRoZSBudW1iZXIgb2YgcGFnZXMgZnJlZWQKKwkJYmVjYXVzZSBvZiBSRVFfRElTQ0FSRCByZXF1ZXN0cyBzZW50IGJ5IGJpby4gVGhlIGZvcm1lciBvbmVzCisJCWFyZSBzZW50IHRvIGEgc3dhcCBibG9jayBkZXZpY2Ugd2hlbiBhIHN3YXAgc2xvdCBpcyBmcmVlZCwgd2hpY2gKKwkJaW1wbGllcyB0aGF0IHRoaXMgZGlzayBpcyBiZWluZyB1c2VkIGFzIGEgc3dhcCBkaXNrLiBUaGUgbGF0dGVyCisJCW9uZXMgYXJlIHNlbnQgYnkgZmlsZXN5c3RlbSBtb3VudGVkIHdpdGggZGlzY2FyZCBvcHRpb24sCisJCXdoZW5ldmVyIHNvbWUgZGF0YSBibG9ja3MgYXJlIGdldHRpbmcgZGlzY2FyZGVkLgorCQlOb3cgYWNjZXNzaWJsZSB2aWEgenJhbTxpZD4vaW9fc3RhdCBub2RlLgorCitXaGF0OgkJL3N5cy9ibG9jay96cmFtPGlkPi96ZXJvX3BhZ2VzCitEYXRlOgkJQXVndXN0IDIwMTUKK0NvbnRhY3Q6CVNlcmdleSBTZW5vemhhdHNreSA8c2VyZ2V5LnNlbm96aGF0c2t5QGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgemVyb19wYWdlcyBmaWxlIGlzIHJlYWQtb25seSBhbmQgc3BlY2lmaWVzIG51bWJlciBvZiB6ZXJvCisJCWZpbGxlZCBwYWdlcyB3cml0dGVuIHRvIHRoaXMgZGlzay4gTm8gbWVtb3J5IGlzIGFsbG9jYXRlZCBmb3IKKwkJc3VjaCBwYWdlcy4KKwkJTm93IGFjY2Vzc2libGUgdmlhIHpyYW08aWQ+L21tX3N0YXQgbm9kZS4KKworV2hhdDoJCS9zeXMvYmxvY2svenJhbTxpZD4vb3JpZ19kYXRhX3NpemUKK0RhdGU6CQlBdWd1c3QgMjAxNQorQ29udGFjdDoJU2VyZ2V5IFNlbm96aGF0c2t5IDxzZXJnZXkuc2Vub3poYXRza3lAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSBvcmlnX2RhdGFfc2l6ZSBmaWxlIGlzIHJlYWQtb25seSBhbmQgc3BlY2lmaWVzIHVuY29tcHJlc3NlZAorCQlzaXplIG9mIGRhdGEgc3RvcmVkIGluIHRoaXMgZGlzay4gVGhpcyBleGNsdWRlcyB6ZXJvLWZpbGxlZAorCQlwYWdlcyAoemVyb19wYWdlcykgc2luY2Ugbm8gbWVtb3J5IGlzIGFsbG9jYXRlZCBmb3IgdGhlbS4KKwkJVW5pdDogYnl0ZXMKKwkJTm93IGFjY2Vzc2libGUgdmlhIHpyYW08aWQ+L21tX3N0YXQgbm9kZS4KKworV2hhdDoJCS9zeXMvYmxvY2svenJhbTxpZD4vY29tcHJfZGF0YV9zaXplCitEYXRlOgkJQXVndXN0IDIwMTUKK0NvbnRhY3Q6CVNlcmdleSBTZW5vemhhdHNreSA8c2VyZ2V5LnNlbm96aGF0c2t5QGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgY29tcHJfZGF0YV9zaXplIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBzcGVjaWZpZXMgY29tcHJlc3NlZAorCQlzaXplIG9mIGRhdGEgc3RvcmVkIGluIHRoaXMgZGlzay4gU28sIGNvbXByZXNzaW9uIHJhdGlvIGNhbiBiZQorCQljYWxjdWxhdGVkIHVzaW5nIG9yaWdfZGF0YV9zaXplIGFuZCB0aGlzIHN0YXRpc3RpYy4KKwkJVW5pdDogYnl0ZXMKKwkJTm93IGFjY2Vzc2libGUgdmlhIHpyYW08aWQ+L21tX3N0YXQgbm9kZS4KKworV2hhdDoJCS9zeXMvYmxvY2svenJhbTxpZD4vbWVtX3VzZWRfdG90YWwKK0RhdGU6CQlBdWd1c3QgMjAxNQorQ29udGFjdDoJU2VyZ2V5IFNlbm96aGF0c2t5IDxzZXJnZXkuc2Vub3poYXRza3lAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSBtZW1fdXNlZF90b3RhbCBmaWxlIGlzIHJlYWQtb25seSBhbmQgc3BlY2lmaWVzIHRoZSBhbW91bnQKKwkJb2YgbWVtb3J5LCBpbmNsdWRpbmcgYWxsb2NhdG9yIGZyYWdtZW50YXRpb24gYW5kIG1ldGFkYXRhCisJCW92ZXJoZWFkLCBhbGxvY2F0ZWQgZm9yIHRoaXMgZGlzay4gU28sIGFsbG9jYXRvciBzcGFjZQorCQllZmZpY2llbmN5IGNhbiBiZSBjYWxjdWxhdGVkIHVzaW5nIGNvbXByX2RhdGFfc2l6ZSBhbmQgdGhpcworCQlzdGF0aXN0aWMuCisJCVVuaXQ6IGJ5dGVzCisJCU5vdyBhY2Nlc3NpYmxlIHZpYSB6cmFtPGlkPi9tbV9zdGF0IG5vZGUuCisKK1doYXQ6CQkvc3lzL2Jsb2NrL3pyYW08aWQ+L21lbV91c2VkX21heAorRGF0ZToJCUF1Z3VzdCAyMDE1CitDb250YWN0OglTZXJnZXkgU2Vub3poYXRza3kgPHNlcmdleS5zZW5vemhhdHNreUBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIG1lbV91c2VkX21heCBmaWxlIGlzIHJlYWQvd3JpdGUgYW5kIHNwZWNpZmllcyB0aGUgYW1vdW50CisJCW9mIG1heGltdW0gbWVtb3J5IHpyYW0gaGF2ZSBjb25zdW1lZCB0byBzdG9yZSBjb21wcmVzc2VkIGRhdGEuCisJCUZvciByZXNldHRpbmcgdGhlIHZhbHVlLCB5b3Ugc2hvdWxkIHdyaXRlICIwIi4gT3RoZXJ3aXNlLAorCQl5b3UgY291bGQgc2VlIC1FSU5WQUwuCisJCVVuaXQ6IGJ5dGVzCisJCURvd25ncmFkZWQgdG8gd3JpdGUtb25seSBub2RlOiBzbyBpdCdzIHBvc3NpYmxlIHRvIHNldCBuZXcKKwkJdmFsdWUgb25seTsgaXRzIGN1cnJlbnQgdmFsdWUgaXMgc3RvcmVkIGluIHpyYW08aWQ+L21tX3N0YXQKKwkJbm9kZS4KKworV2hhdDoJCS9zeXMvYmxvY2svenJhbTxpZD4vbWVtX2xpbWl0CitEYXRlOgkJQXVndXN0IDIwMTUKK0NvbnRhY3Q6CVNlcmdleSBTZW5vemhhdHNreSA8c2VyZ2V5LnNlbm96aGF0c2t5QGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgbWVtX2xpbWl0IGZpbGUgaXMgcmVhZC93cml0ZSBhbmQgc3BlY2lmaWVzIHRoZSBtYXhpbXVtCisJCWFtb3VudCBvZiBtZW1vcnkgWlJBTSBjYW4gdXNlIHRvIHN0b3JlIHRoZSBjb21wcmVzc2VkIGRhdGEuCisJCVRoZSBsaW1pdCBjb3VsZCBiZSBjaGFuZ2VkIGluIHJ1biB0aW1lIGFuZCAiMCIgbWVhbnMgZGlzYWJsZQorCQl0aGUgbGltaXQuICBObyBsaW1pdCBpcyB0aGUgaW5pdGlhbCBzdGF0ZS4gIFVuaXQ6IGJ5dGVzCisJCURvd25ncmFkZWQgdG8gd3JpdGUtb25seSBub2RlOiBzbyBpdCdzIHBvc3NpYmxlIHRvIHNldCBuZXcKKwkJdmFsdWUgb25seTsgaXRzIGN1cnJlbnQgdmFsdWUgaXMgc3RvcmVkIGluIHpyYW08aWQ+L21tX3N0YXQKKwkJbm9kZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL29ic29sZXRlL3N5c2ZzLWJ1cy11c2IgYi9Eb2N1bWVudGF0aW9uL0FCSS9vYnNvbGV0ZS9zeXNmcy1idXMtdXNiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkMDk2ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS9vYnNvbGV0ZS9zeXNmcy1idXMtdXNiCkBAIC0wLDAgKzEsMzEgQEAKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy8uLi4vcG93ZXIvbGV2ZWwKK0RhdGU6CQlNYXJjaCAyMDA3CitLZXJuZWxWZXJzaW9uOgkyLjYuMjEKK0NvbnRhY3Q6CUFsYW4gU3Rlcm4gPHN0ZXJuQHJvd2xhbmQuaGFydmFyZC5lZHU+CitEZXNjcmlwdGlvbjoKKwkJRWFjaCBVU0IgZGV2aWNlIGRpcmVjdG9yeSB3aWxsIGNvbnRhaW4gYSBmaWxlIG5hbWVkCisJCXBvd2VyL2xldmVsLiAgVGhpcyBmaWxlIGhvbGRzIGEgcG93ZXItbGV2ZWwgc2V0dGluZyBmb3IKKwkJdGhlIGRldmljZSwgZWl0aGVyICJvbiIgb3IgImF1dG8iLgorCisJCSJvbiIgbWVhbnMgdGhhdCB0aGUgZGV2aWNlIGlzIG5vdCBhbGxvd2VkIHRvIGF1dG9zdXNwZW5kLAorCQlhbHRob3VnaCBub3JtYWwgc3VzcGVuZHMgZm9yIHN5c3RlbSBzbGVlcCB3aWxsIHN0aWxsCisJCWJlIGhvbm9yZWQuICAiYXV0byIgbWVhbnMgdGhlIGRldmljZSB3aWxsIGF1dG9zdXNwZW5kCisJCWFuZCBhdXRvcmVzdW1lIGluIHRoZSB1c3VhbCBtYW5uZXIsIGFjY29yZGluZyB0byB0aGUKKwkJY2FwYWJpbGl0aWVzIG9mIGl0cyBkcml2ZXIuCisKKwkJRHVyaW5nIG5vcm1hbCB1c2UsIGRldmljZXMgc2hvdWxkIGJlIGxlZnQgaW4gdGhlICJhdXRvIgorCQlsZXZlbC4gIFRoZSAib24iIGxldmVsIGlzIG1lYW50IGZvciBhZG1pbmlzdHJhdGl2ZSB1c2VzLgorCQlJZiB5b3Ugd2FudCB0byBzdXNwZW5kIGEgZGV2aWNlIGltbWVkaWF0ZWx5IGJ1dCBsZWF2ZSBpdAorCQlmcmVlIHRvIHdha2UgdXAgaW4gcmVzcG9uc2UgdG8gSS9PIHJlcXVlc3RzLCB5b3Ugc2hvdWxkCisJCXdyaXRlICIwIiB0byBwb3dlci9hdXRvc3VzcGVuZC4KKworCQlEZXZpY2Ugbm90IGNhcGFibGUgb2YgcHJvcGVyIHN1c3BlbmQgYW5kIHJlc3VtZSBzaG91bGQgYmUKKwkJbGVmdCBpbiB0aGUgIm9uIiBsZXZlbC4gIEFsdGhvdWdoIHRoZSBVU0Igc3BlYyByZXF1aXJlcworCQlkZXZpY2VzIHRvIHN1cHBvcnQgc3VzcGVuZC9yZXN1bWUsIG1hbnkgb2YgdGhlbSBkbyBub3QuCisJCUluIGZhY3Qgc28gbWFueSBkb24ndCB0aGF0IGJ5IGRlZmF1bHQsIHRoZSBVU0IgY29yZQorCQlpbml0aWFsaXplcyBhbGwgbm9uLWh1YiBkZXZpY2VzIGluIHRoZSAib24iIGxldmVsLiAgU29tZQorCQlkcml2ZXJzIG1heSBjaGFuZ2UgdGhpcyBzZXR0aW5nIHdoZW4gdGhleSBhcmUgYm91bmQuCisKKwkJVGhpcyBmaWxlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBhZnRlciAyMDEwLgorCQlVc2UgdGhlIHBvd2VyL2NvbnRyb2wgZmlsZSBpbnN0ZWFkOyBpdCBkb2VzIGV4YWN0bHkgdGhlCisJCXNhbWUgdGhpbmcuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS9vYnNvbGV0ZS9zeXNmcy1jbGFzcy1yZmtpbGwgYi9Eb2N1bWVudGF0aW9uL0FCSS9vYnNvbGV0ZS9zeXNmcy1jbGFzcy1yZmtpbGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY2MGFkOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL29ic29sZXRlL3N5c2ZzLWNsYXNzLXJma2lsbApAQCAtMCwwICsxLDI5IEBACityZmtpbGwgLSByYWRpbyBmcmVxdWVuY3kgKFJGKSBjb25uZWN0b3Iga2lsbCBzd2l0Y2ggc3VwcG9ydAorCitGb3IgZGV0YWlscyB0byB0aGlzIHN1YnN5c3RlbSBsb29rIGF0IERvY3VtZW50YXRpb24vcmZraWxsLnR4dC4KKworV2hhdDoJCS9zeXMvY2xhc3MvcmZraWxsL3Jma2lsbFswLTldKy9zdGF0ZQorRGF0ZToJCTA5LUp1bC0yMDA3CitLZXJuZWxWZXJzaW9uCXYyLjYuMjIKK0NvbnRhY3Q6CWxpbnV4LXdpcmVsZXNzQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246IAlDdXJyZW50IHN0YXRlIG9mIHRoZSB0cmFuc21pdHRlci4KKwkJVGhpcyBmaWxlIGlzIGRlcHJlY2F0ZWQgYW5kIHNjaGVkdWxlZCB0byBiZSByZW1vdmVkIGluIDIwMTQsCisJCWJlY2F1c2UgaXRzIG5vdCBwb3NzaWJsZSB0byBleHByZXNzIHRoZSAnc29mdCBhbmQgaGFyZCBibG9jaycKKwkJc3RhdGUgb2YgdGhlIHJma2lsbCBkcml2ZXIuCitWYWx1ZXM6IAlBIG51bWVyaWMgdmFsdWUuCisJCTA6IFJGS0lMTF9TVEFURV9TT0ZUX0JMT0NLRUQKKwkJCXRyYW5zbWl0dGVyIGlzIHR1cm5lZCBvZmYgYnkgc29mdHdhcmUKKwkJMTogUkZLSUxMX1NUQVRFX1VOQkxPQ0tFRAorCQkJdHJhbnNtaXR0ZXIgaXMgKHBvdGVudGlhbGx5KSBhY3RpdmUKKwkJMjogUkZLSUxMX1NUQVRFX0hBUkRfQkxPQ0tFRAorCQkJdHJhbnNtaXR0ZXIgaXMgZm9yY2VkIG9mZiBieSBzb21ldGhpbmcgb3V0c2lkZSBvZgorCQkJdGhlIGRyaXZlcidzIGNvbnRyb2wuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3Jma2lsbC9yZmtpbGxbMC05XSsvY2xhaW0KK0RhdGU6CQkwOS1KdWwtMjAwNworS2VybmVsVmVyc2lvbgl2Mi42LjIyCitDb250YWN0OglsaW51eC13aXJlbGVzc0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOglUaGlzIGZpbGUgaXMgZGVwcmVjYXRlZCBiZWNhdXNlIHRoZXJlIG5vIGxvbmdlciBpcyBhIHdheSB0bworCQljbGFpbSBqdXN0IGNvbnRyb2wgb3ZlciBhIHNpbmdsZSByZmtpbGwgaW5zdGFuY2UuCisJCVRoaXMgZmlsZSBpcyBzY2hlZHVsZWQgdG8gYmUgcmVtb3ZlZCBpbiAyMDEyLgorVmFsdWVzOiAJMDogS2VybmVsIGhhbmRsZXMgZXZlbnRzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS9vYnNvbGV0ZS9zeXNmcy1kcml2ZXItaGlkLXJvY2NhdC1hcnZvIGIvRG9jdW1lbnRhdGlvbi9BQkkvb2Jzb2xldGUvc3lzZnMtZHJpdmVyLWhpZC1yb2NjYXQtYXJ2bwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWUyODFiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvb2Jzb2xldGUvc3lzZnMtZHJpdmVyLWhpZC1yb2NjYXQtYXJ2bwpAQCAtMCwwICsxLDUzIEBACitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L2Fydm8vcm9jY2F0YXJ2bzxtaW5vcj4vYWN0dWFsX3Byb2ZpbGUKK0RhdGU6CQlKYW51YXIgMjAxMQorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglUaGUgaW50ZWdlciB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSByYW5nZXMgZnJvbSAxLTUuCisJCVdoZW4gcmVhZCwgdGhpcyBhdHRyaWJ1dGUgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHRoZSBhY3R1YWwKKwkJcHJvZmlsZSB3aGljaCBpcyBhbHNvIHRoZSBwcm9maWxlIHRoYXQncyBhY3RpdmUgb24gZGV2aWNlIHN0YXJ0dXAuCisJCVdoZW4gd3JpdHRlbiB0aGlzIGF0dHJpYnV0ZSBhY3RpdmF0ZXMgdGhlIHNlbGVjdGVkIHByb2ZpbGUKKwkJaW1tZWRpYXRlbHkuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vYXJ2by9yb2NjYXRhcnZvPG1pbm9yPi9idXR0b24KK0RhdGU6CQlKYW51YXIgMjAxMQorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglUaGUga2V5Ym9hcmQgY2FuIHN0b3JlIHNob3J0IG1hY3JvcyB3aXRoIGNvbnNpc3Qgb2YgMSBidXR0b24gd2l0aAorCQlzZXZlcmFsIG1vZGlmaWVyIGtleXMgaW50ZXJuYWxseS4KKwkJV2hlbiB3cml0dGVuLCB0aGlzIGZpbGUgbGV0cyBvbmUgc2V0IHRoZSBzZXF1ZW5jZSBmb3IgYSBzcGVjaWZpYworCQlidXR0b24gZm9yIGEgc3BlY2lmaWMgcHJvZmlsZS4gQnV0dG9uIGFuZCBwcm9maWxlIG51bWJlcnMgYXJlCisJCWluY2x1ZGVkIGluIHdyaXR0ZW4gZGF0YS4gVGhlIGRhdGEgaGFzIHRvIGJlIDI0IGJ5dGVzIGxvbmcuCisJCVRoaXMgZmlsZSBpcyB3cml0ZW9ubHkuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vYXJ2by9yb2NjYXRhcnZvPG1pbm9yPi9pbmZvCitEYXRlOgkJSmFudWFyIDIwMTEKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJV2hlbiByZWFkLCB0aGlzIGZpbGUgcmV0dXJucyBzb21lIGluZm8gYWJvdXQgdGhlIGRldmljZSBsaWtlIHRoZQorCQlpbnN0YWxsZWQgZmlybXdhcmUgdmVyc2lvbi4KKwkJVGhlIHNpemUgb2YgdGhlIGRhdGEgaXMgOCBieXRlcyBpbiBzaXplLgorCQlUaGlzIGZpbGUgaXMgcmVhZG9ubHkuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vYXJ2by9yb2NjYXRhcnZvPG1pbm9yPi9rZXlfbWFzaworRGF0ZToJCUphbnVhciAyMDExCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVRoZSBrZXlib2FyZCBsZXRzIHRoZSB1c2VyIGRlYWN0aXZhdGUgNSBjZXJ0YWluIGtleXMgbGlrZSB0aGUKKwkJd2luZG93cyBhbmQgYXBwbGljYXRpb24ga2V5cywgdG8gcHJvdGVjdCB0aGUgdXNlciBmcm9tIHRoZSBvdXRjb21lCisJCW9mIGFjY2lkZW50YWxseSBwcmVzc2luZyB0aGVtLgorCQlUaGUgaW50ZWdlciB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBoYXMgYml0cyAwLTQgc2V0IGRlcGVuZGluZworCQlvbiB0aGUgc3RhdGUgb2YgdGhlIGNvcnJlc3BvbmRpbmcga2V5LgorCQlXaGVuIHJlYWQsIHRoaXMgZmlsZSByZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBidXR0b25zLgorCQlXaGVuIHdyaXR0ZW4sIHRoZSBnaXZlbiBidXR0b25zIGFyZSBhY3RpdmF0ZWQvZGVhY3RpdmF0ZWQKKwkJaW1tZWRpYXRlbHkuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vYXJ2by9yb2NjYXRhcnZvPG1pbm9yPi9tb2RlX2tleQorRGF0ZToJCUphbnVhciAyMDExCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVRoZSBrZXlib2FyZCBoYXMgYSBjb25kZW5zZWQgbGF5b3V0IHdpdGhvdXQgbnVtLWxvY2sga2V5LgorCQlJbnN0ZWFkIGl0IHVzZXMgYSBtb2RlLWtleSB3aGljaCBhY3RpdmF0ZXMgYSBnYW1pbmcgbW9kZSB3aGVyZQorCQl0aGUgYXNzaWdubWVudCBvZiB0aGUgbnVtYmVyIGJsb2NrIGNoYW5nZXMuCisJCVRoZSBpbnRlZ2VyIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIHJhbmdlcyBmcm9tIDAgKE9GRikgdG8gMSAoT04pLgorCQlXaGVuIHJlYWQsIHRoaXMgZmlsZSByZXR1cm5zIHRoZSBhY3R1YWwgc3RhdGUgb2YgdGhlIGtleS4KKwkJV2hlbiB3cml0dGVuLCB0aGUga2V5IGlzIGFjdGl2YXRlZC9kZWFjdGl2YXRlZCBpbW1lZGlhdGVseS4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL29ic29sZXRlL3N5c2ZzLWRyaXZlci1oaWQtcm9jY2F0LWlza3UgYi9Eb2N1bWVudGF0aW9uL0FCSS9vYnNvbGV0ZS9zeXNmcy1kcml2ZXItaGlkLXJvY2NhdC1pc2t1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MDFkMGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS9vYnNvbGV0ZS9zeXNmcy1kcml2ZXItaGlkLXJvY2NhdC1pc2t1CkBAIC0wLDAgKzEsMTUzIEBACitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L2lza3Uvcm9jY2F0aXNrdTxtaW5vcj4vYWN0dWFsX3Byb2ZpbGUKK0RhdGU6CQlKdW5lIDIwMTEKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJVGhlIGludGVnZXIgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgcmFuZ2VzIGZyb20gMC00LgorCQlXaGVuIHJlYWQsIHRoaXMgYXR0cmlidXRlIHJldHVybnMgdGhlIG51bWJlciBvZiB0aGUgYWN0dWFsCisJCXByb2ZpbGUuIFRoaXMgdmFsdWUgaXMgcGVyc2lzdGVudCwgc28gaXRzIGVxdWl2YWxlbnQgdG8gdGhlCisJCXByb2ZpbGUgdGhhdCdzIGFjdGl2ZSB3aGVuIHRoZSBkZXZpY2UgaXMgcG93ZXJlZCBvbiBuZXh0IHRpbWUuCisJCVdoZW4gd3JpdHRlbiwgdGhpcyBmaWxlIHNldHMgdGhlIG51bWJlciBvZiB0aGUgc3RhcnR1cCBwcm9maWxlCisJCWFuZCB0aGUgZGV2aWNlIGFjdGl2YXRlcyB0aGlzIHByb2ZpbGUgaW1tZWRpYXRlbHkuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vaXNrdS9yb2NjYXRpc2t1PG1pbm9yPi9pbmZvCitEYXRlOgkJSnVuZSAyMDExCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVdoZW4gcmVhZCwgdGhpcyBmaWxlIHJldHVybnMgZ2VuZXJhbCBkYXRhIGxpa2UgZmlybXdhcmUgdmVyc2lvbi4KKwkJVGhlIGRhdGEgaXMgNiBieXRlcyBsb25nLgorCQlUaGlzIGZpbGUgaXMgcmVhZG9ubHkuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vaXNrdS9yb2NjYXRpc2t1PG1pbm9yPi9rZXlfbWFzaworRGF0ZToJCUp1bmUgMjAxMQorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglXaGVuIHdyaXR0ZW4sIHRoaXMgZmlsZSBsZXRzIG9uZSBkZWFjdGl2YXRlIGNlcnRhaW4ga2V5cyBsaWtlCisJCXdpbmRvd3MgYW5kIGFwcGxpY2F0aW9uIGtleXMsIHRvIHByZXZlbnQgYWNjaWRlbnRhbCBwcmVzc2VzLgorCQlQcm9maWxlIG51bWJlciBmb3Igd2hpY2ggdGhpcyBzZXR0aW5ncyBvY2N1ciBpcyBpbmNsdWRlZCBpbgorCQl3cml0dGVuIGRhdGEuIFRoZSBkYXRhIGhhcyB0byBiZSA2IGJ5dGVzIGxvbmcuCisJCUJlZm9yZSByZWFkaW5nIHRoaXMgZmlsZSwgY29udHJvbCBoYXMgdG8gYmUgd3JpdHRlbiB0byBzZWxlY3QKKwkJd2hpY2ggcHJvZmlsZSB0byByZWFkLgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L2lza3Uvcm9jY2F0aXNrdTxtaW5vcj4va2V5c19jYXBzbG9jaworRGF0ZToJCUp1bmUgMjAxMQorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglXaGVuIHdyaXR0ZW4sIHRoaXMgZmlsZSBsZXRzIG9uZSBzZXQgdGhlIGZ1bmN0aW9uIG9mIHRoZQorCQljYXBzbG9jayBrZXkgZm9yIGEgc3BlY2lmaWMgcHJvZmlsZS4gUHJvZmlsZSBudW1iZXIgaXMgaW5jbHVkZWQKKwkJaW4gd3JpdHRlbiBkYXRhLiBUaGUgZGF0YSBoYXMgdG8gYmUgNiBieXRlcyBsb25nLgorCQlCZWZvcmUgcmVhZGluZyB0aGlzIGZpbGUsIGNvbnRyb2wgaGFzIHRvIGJlIHdyaXR0ZW4gdG8gc2VsZWN0CisJCXdoaWNoIHByb2ZpbGUgdG8gcmVhZC4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9pc2t1L3JvY2NhdGlza3U8bWlub3I+L2tleXNfZWFzeXpvbmUKK0RhdGU6CQlKdW5lIDIwMTEKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJV2hlbiB3cml0dGVuLCB0aGlzIGZpbGUgbGV0cyBvbmUgc2V0IHRoZSBmdW5jdGlvbiBvZiB0aGUKKwkJZWFzeXpvbmUga2V5cyBmb3IgYSBzcGVjaWZpYyBwcm9maWxlLiBQcm9maWxlIG51bWJlciBpcyBpbmNsdWRlZAorCQlpbiB3cml0dGVuIGRhdGEuIFRoZSBkYXRhIGhhcyB0byBiZSA2NSBieXRlcyBsb25nLgorCQlCZWZvcmUgcmVhZGluZyB0aGlzIGZpbGUsIGNvbnRyb2wgaGFzIHRvIGJlIHdyaXR0ZW4gdG8gc2VsZWN0CisJCXdoaWNoIHByb2ZpbGUgdG8gcmVhZC4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9pc2t1L3JvY2NhdGlza3U8bWlub3I+L2tleXNfZnVuY3Rpb24KK0RhdGU6CQlKdW5lIDIwMTEKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJV2hlbiB3cml0dGVuLCB0aGlzIGZpbGUgbGV0cyBvbmUgc2V0IHRoZSBmdW5jdGlvbiBvZiB0aGUKKwkJZnVuY3Rpb24ga2V5cyBmb3IgYSBzcGVjaWZpYyBwcm9maWxlLiBQcm9maWxlIG51bWJlciBpcyBpbmNsdWRlZAorCQlpbiB3cml0dGVuIGRhdGEuIFRoZSBkYXRhIGhhcyB0byBiZSA0MSBieXRlcyBsb25nLgorCQlCZWZvcmUgcmVhZGluZyB0aGlzIGZpbGUsIGNvbnRyb2wgaGFzIHRvIGJlIHdyaXR0ZW4gdG8gc2VsZWN0CisJCXdoaWNoIHByb2ZpbGUgdG8gcmVhZC4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9pc2t1L3JvY2NhdGlza3U8bWlub3I+L2tleXNfbWFjcm8KK0RhdGU6CQlKdW5lIDIwMTEKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJV2hlbiB3cml0dGVuLCB0aGlzIGZpbGUgbGV0cyBvbmUgc2V0IHRoZSBmdW5jdGlvbiBvZiB0aGUgbWFjcm8KKwkJa2V5cyBmb3IgYSBzcGVjaWZpYyBwcm9maWxlLiBQcm9maWxlIG51bWJlciBpcyBpbmNsdWRlZCBpbgorCQl3cml0dGVuIGRhdGEuIFRoZSBkYXRhIGhhcyB0byBiZSAzNSBieXRlcyBsb25nLgorCQlCZWZvcmUgcmVhZGluZyB0aGlzIGZpbGUsIGNvbnRyb2wgaGFzIHRvIGJlIHdyaXR0ZW4gdG8gc2VsZWN0CisJCXdoaWNoIHByb2ZpbGUgdG8gcmVhZC4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9pc2t1L3JvY2NhdGlza3U8bWlub3I+L2tleXNfbWVkaWEKK0RhdGU6CQlKdW5lIDIwMTEKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJV2hlbiB3cml0dGVuLCB0aGlzIGZpbGUgbGV0cyBvbmUgc2V0IHRoZSBmdW5jdGlvbiBvZiB0aGUgbWVkaWEKKwkJa2V5cyBmb3IgYSBzcGVjaWZpYyBwcm9maWxlLiBQcm9maWxlIG51bWJlciBpcyBpbmNsdWRlZCBpbgorCQl3cml0dGVuIGRhdGEuIFRoZSBkYXRhIGhhcyB0byBiZSAyOSBieXRlcyBsb25nLgorCQlCZWZvcmUgcmVhZGluZyB0aGlzIGZpbGUsIGNvbnRyb2wgaGFzIHRvIGJlIHdyaXR0ZW4gdG8gc2VsZWN0CisJCXdoaWNoIHByb2ZpbGUgdG8gcmVhZC4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9pc2t1L3JvY2NhdGlza3U8bWlub3I+L2tleXNfdGh1bWJzdGVyCitEYXRlOgkJSnVuZSAyMDExCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVdoZW4gd3JpdHRlbiwgdGhpcyBmaWxlIGxldHMgb25lIHNldCB0aGUgZnVuY3Rpb24gb2YgdGhlCisJCXRodW1ic3RlciBrZXlzIGZvciBhIHNwZWNpZmljIHByb2ZpbGUuIFByb2ZpbGUgbnVtYmVyIGlzIGluY2x1ZGVkCisJCWluIHdyaXR0ZW4gZGF0YS4gVGhlIGRhdGEgaGFzIHRvIGJlIDIzIGJ5dGVzIGxvbmcuCisJCUJlZm9yZSByZWFkaW5nIHRoaXMgZmlsZSwgY29udHJvbCBoYXMgdG8gYmUgd3JpdHRlbiB0byBzZWxlY3QKKwkJd2hpY2ggcHJvZmlsZSB0byByZWFkLgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L2lza3Uvcm9jY2F0aXNrdTxtaW5vcj4vbGFzdF9zZXQKK0RhdGU6CQlKdW5lIDIwMTEKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJV2hlbiB3cml0dGVuLCB0aGlzIGZpbGUgbGV0cyBvbmUgc2V0IHRoZSB0aW1lIGluIHNlY3Mgc2luY2UKKwkJZXBvY2ggaW4gd2hpY2ggdGhlIGxhc3QgY29uZmlndXJhdGlvbiB0b29rIHBsYWNlLgorCQlUaGUgZGF0YSBoYXMgdG8gYmUgMjAgYnl0ZXMgbG9uZy4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9pc2t1L3JvY2NhdGlza3U8bWlub3I+L2xpZ2h0CitEYXRlOgkJSnVuZSAyMDExCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVdoZW4gd3JpdHRlbiwgdGhpcyBmaWxlIGxldHMgb25lIHNldCB0aGUgYmFja2xpZ2h0IGludGVuc2l0eSBmb3IKKwkJYSBzcGVjaWZpYyBwcm9maWxlLiBQcm9maWxlIG51bWJlciBpcyBpbmNsdWRlZCBpbiB3cml0dGVuIGRhdGEuCisJCVRoZSBkYXRhIGhhcyB0byBiZSAxMCBieXRlcyBsb25nIGZvciBJc2t1LCBJc2t1RlggbmVlZHMJMTYgYnl0ZXMKKwkJb2YgZGF0YS4KKwkJQmVmb3JlIHJlYWRpbmcgdGhpcyBmaWxlLCBjb250cm9sIGhhcyB0byBiZSB3cml0dGVuIHRvIHNlbGVjdAorCQl3aGljaCBwcm9maWxlIHRvIHJlYWQuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vaXNrdS9yb2NjYXRpc2t1PG1pbm9yPi9tYWNybworRGF0ZToJCUp1bmUgMjAxMQorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglXaGVuIHdyaXR0ZW4sIHRoaXMgZmlsZSBsZXRzIG9uZSBzdG9yZSBtYWNyb3Mgd2l0aCBtYXggNTAwCisJCWtleXN0cm9rZXMgZm9yIGEgc3BlY2lmaWMgYnV0dG9uIGZvciBhIHNwZWNpZmljIHByb2ZpbGUuCisJCUJ1dHRvbiBhbmQgcHJvZmlsZSBudW1iZXJzIGFyZSBpbmNsdWRlZCBpbiB3cml0dGVuIGRhdGEuCisJCVRoZSBkYXRhIGhhcyB0byBiZSAyMDgzIGJ5dGVzIGxvbmcuCisJCUJlZm9yZSByZWFkaW5nIHRoaXMgZmlsZSwgY29udHJvbCBoYXMgdG8gYmUgd3JpdHRlbiB0byBzZWxlY3QKKwkJd2hpY2ggcHJvZmlsZSBhbmQga2V5IHRvIHJlYWQuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vaXNrdS9yb2NjYXRpc2t1PG1pbm9yPi9yZXNldAorRGF0ZToJCU5vdmVtYmVyIDIwMTIKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJV2hlbiB3cml0dGVuLCB0aGlzIGZpbGUgbGV0cyBvbmUgcmVzZXQgdGhlIGRldmljZS4KKwkJVGhlIGRhdGEgaGFzIHRvIGJlIDMgYnl0ZXMgbG9uZy4KKwkJVGhpcyBmaWxlIGlzIHdyaXRlb25seS4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9pc2t1L3JvY2NhdGlza3U8bWlub3I+L2NvbnRyb2wKK0RhdGU6CQlKdW5lIDIwMTEKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJV2hlbiB3cml0dGVuLCB0aGlzIGZpbGUgbGV0cyBvbmUgc2VsZWN0IHdoaWNoIGRhdGEgZnJvbSB3aGljaAorCQlwcm9maWxlIHdpbGwgYmUJcmVhZCBuZXh0LiBUaGUgZGF0YSBoYXMgdG8gYmUgMyBieXRlcyBsb25nLgorCQlUaGlzIGZpbGUgaXMgd3JpdGVvbmx5LgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L2lza3Uvcm9jY2F0aXNrdTxtaW5vcj4vdGFsaworRGF0ZToJCUp1bmUgMjAxMQorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglXaGVuIHdyaXR0ZW4sIHRoaXMgZmlsZSBsZXRzIG9uZSB0cmlnZ2VyIGVhc3lzaGlmdCBmdW5jdGlvbmFsaXR5CisJCWZyb20gdGhlIGhvc3QuCisJCVRoZSBkYXRhIGhhcyB0byBiZSAxNiBieXRlcyBsb25nLgorCQlUaGlzIGZpbGUgaXMgd3JpdGVvbmx5LgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L2lza3Uvcm9jY2F0aXNrdTxtaW5vcj4vdGFsa2Z4CitEYXRlOgkJRmVicnVhcnkgMjAxMworQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglXaGVuIHdyaXR0ZW4sIHRoaXMgZmlsZSBsZXRzIG9uZSB0cmlnZ2VyIHRlbXBvcmFyeSBjb2xvciBzY2hlbWVzCisJCWZyb20gdGhlIGhvc3QuCisJCVRoZSBkYXRhIGhhcyB0byBiZSAxNiBieXRlcyBsb25nLgorCQlUaGlzIGZpbGUgaXMgd3JpdGVvbmx5LgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvb2Jzb2xldGUvc3lzZnMtZHJpdmVyLWhpZC1yb2NjYXQta29uZXBsdXMgYi9Eb2N1bWVudGF0aW9uL0FCSS9vYnNvbGV0ZS9zeXNmcy1kcml2ZXItaGlkLXJvY2NhdC1rb25lcGx1cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDVlNjlmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvb2Jzb2xldGUvc3lzZnMtZHJpdmVyLWhpZC1yb2NjYXQta29uZXBsdXMKQEAgLTAsMCArMSwxNDUgQEAKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4va29uZXBsdXMvcm9jY2F0a29uZXBsdXM8bWlub3I+L2FjdHVhbF9wcm9maWxlCitEYXRlOgkJT2N0b2JlciAyMDEwCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVRoZSBpbnRlZ2VyIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIHJhbmdlcyBmcm9tIDAtNC4KKyAgICAgICAgICAgICAgICBXaGVuIHJlYWQsIHRoaXMgYXR0cmlidXRlIHJldHVybnMgdGhlIG51bWJlciBvZiB0aGUgYWN0dWFsCisgICAgICAgICAgICAgICAgcHJvZmlsZS4gVGhpcyB2YWx1ZSBpcyBwZXJzaXN0ZW50LCBzbyBpdHMgZXF1aXZhbGVudCB0byB0aGUKKyAgICAgICAgICAgICAgICBwcm9maWxlIHRoYXQncyBhY3RpdmUgd2hlbiB0aGUgbW91c2UgaXMgcG93ZXJlZCBvbiBuZXh0IHRpbWUuCisJCVdoZW4gd3JpdHRlbiwgdGhpcyBmaWxlIHNldHMgdGhlIG51bWJlciBvZiB0aGUgc3RhcnR1cCBwcm9maWxlCisJCWFuZCB0aGUgbW91c2UgYWN0aXZhdGVzIHRoaXMgcHJvZmlsZSBpbW1lZGlhdGVseS4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9rb25lcGx1cy9yb2NjYXRrb25lcGx1czxtaW5vcj4vc3RhcnR1cF9wcm9maWxlCitEYXRlOgkJT2N0b2JlciAyMDEwCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVRoZSBpbnRlZ2VyIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIHJhbmdlcyBmcm9tIDAtNC4KKyAgICAgICAgICAgICAgICBXaGVuIHJlYWQsIHRoaXMgYXR0cmlidXRlIHJldHVybnMgdGhlIG51bWJlciBvZiB0aGUgYWN0dWFsCisgICAgICAgICAgICAgICAgcHJvZmlsZS4gVGhpcyB2YWx1ZSBpcyBwZXJzaXN0ZW50LCBzbyBpdHMgZXF1aXZhbGVudCB0byB0aGUKKyAgICAgICAgICAgICAgICBwcm9maWxlIHRoYXQncyBhY3RpdmUgd2hlbiB0aGUgbW91c2UgaXMgcG93ZXJlZCBvbiBuZXh0IHRpbWUuCisJCVdoZW4gd3JpdHRlbiwgdGhpcyBmaWxlIHNldHMgdGhlIG51bWJlciBvZiB0aGUgc3RhcnR1cCBwcm9maWxlCisJCWFuZCB0aGUgbW91c2UgYWN0aXZhdGVzIHRoaXMgcHJvZmlsZSBpbW1lZGlhdGVseS4KKwkJUGxlYXNlIHVzZSBhY3R1YWxfcHJvZmlsZSwgaXQgZG9lcyB0aGUgc2FtZSB0aGluZy4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9rb25lcGx1cy9yb2NjYXRrb25lcGx1czxtaW5vcj4vZmlybXdhcmVfdmVyc2lvbgorRGF0ZToJCU9jdG9iZXIgMjAxMAorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglXaGVuIHJlYWQsIHRoaXMgZmlsZSByZXR1cm5zIHRoZSByYXcgaW50ZWdlciB2ZXJzaW9uIG51bWJlciBvZiB0aGUKKwkJZmlybXdhcmUgcmVwb3J0ZWQgYnkgdGhlIG1vdXNlLiBVc2luZyB0aGUgaW50ZWdlciB2YWx1ZSBlYXNlcworCQlmdXJ0aGVyIHVzYWdlIGluIG90aGVyIHByb2dyYW1zLiBUbyByZWNlaXZlIHRoZSByZWFsIHZlcnNpb24KKwkJbnVtYmVyIHRoZSBkZWNpbWFsIHBvaW50IGhhcyB0byBiZSBzaGlmdGVkIDIgcG9zaXRpb25zIHRvIHRoZQorCQlsZWZ0LiBFLmcuIGEgcmV0dXJuZWQgdmFsdWUgb2YgMTIxIG1lYW5zIDEuMjEKKwkJVGhpcyBmaWxlIGlzIHJlYWRvbmx5LgorCQlQbGVhc2UgcmVhZCBiaW5hcnkgYXR0cmlidXRlIGluZm8gd2hpY2ggY29udGFpbnMgZmlybXdhcmUgdmVyc2lvbi4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9rb25lcGx1cy9yb2NjYXRrb25lcGx1czxtaW5vcj4vaW5mbworRGF0ZToJCU5vdmVtYmVyIDIwMTIKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJV2hlbiByZWFkLCB0aGlzIGZpbGUgcmV0dXJucyBnZW5lcmFsIGRhdGEgbGlrZSBmaXJtd2FyZSB2ZXJzaW9uLgorCQlXaGVuIHdyaXR0ZW4sIHRoZSBkZXZpY2UgY2FuIGJlIHJlc2V0LgorCQlUaGUgZGF0YSBpcyA4IGJ5dGVzIGxvbmcuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4va29uZXBsdXMvcm9jY2F0a29uZXBsdXM8bWlub3I+L21hY3JvCitEYXRlOgkJT2N0b2JlciAyMDEwCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVRoZSBtb3VzZSBjYW4gc3RvcmUgYSBtYWNybyB3aXRoIG1heCA1MDAga2V5L2J1dHRvbiBzdHJva2VzCisJCWludGVybmFsbHkuCisJCVdoZW4gd3JpdHRlbiwgdGhpcyBmaWxlIGxldHMgb25lIHNldCB0aGUgc2VxdWVuY2UgZm9yIGEgc3BlY2lmaWMKKwkJYnV0dG9uIGZvciBhIHNwZWNpZmljIHByb2ZpbGUuIEJ1dHRvbiBhbmQgcHJvZmlsZSBudW1iZXJzIGFyZQorCQlpbmNsdWRlZCBpbiB3cml0dGVuIGRhdGEuIFRoZSBkYXRhIGhhcyB0byBiZSAyMDgyIGJ5dGVzIGxvbmcuCisJCVRoaXMgZmlsZSBpcyB3cml0ZW9ubHkuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4va29uZXBsdXMvcm9jY2F0a29uZXBsdXM8bWlub3I+L3Byb2ZpbGVfYnV0dG9ucworRGF0ZToJCUF1Z3VzdCAyMDEwCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVRoZSBtb3VzZSBjYW4gc3RvcmUgNSBwcm9maWxlcyB3aGljaCBjYW4gYmUgc3dpdGNoZWQgYnkgdGhlCisJCXByZXNzIG9mIGEgYnV0dG9uLiBBIHByb2ZpbGUgaXMgc3BsaXQgaW4gc2V0dGluZ3MgYW5kIGJ1dHRvbnMuCisJCXByb2ZpbGVfYnV0dG9ucyBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCBidXR0b24gbGF5b3V0LgorCQlXaGVuIHdyaXR0ZW4sIHRoaXMgZmlsZSBsZXRzIG9uZSB3cml0ZSB0aGUgcmVzcGVjdGl2ZSBwcm9maWxlCisJCWJ1dHRvbnMgYmFjayB0byB0aGUgbW91c2UuIFRoZSBkYXRhIGhhcyB0byBiZSA3NyBieXRlcyBsb25nLgorCQlUaGUgbW91c2Ugd2lsbCByZWplY3QgaW52YWxpZCBkYXRhLgorCQlXaGljaCBwcm9maWxlIHRvIHdyaXRlIGlzIGRldGVybWluZWQgYnkgdGhlIHByb2ZpbGUgbnVtYmVyCisJCWNvbnRhaW5lZCBpbiB0aGUgZGF0YS4KKwkJQmVmb3JlIHJlYWRpbmcgdGhpcyBmaWxlLCBjb250cm9sIGhhcyB0byBiZSB3cml0dGVuIHRvIHNlbGVjdAorCQl3aGljaCBwcm9maWxlIHRvIHJlYWQuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4va29uZXBsdXMvcm9jY2F0a29uZXBsdXM8bWlub3I+L3Byb2ZpbGVbMS01XV9idXR0b25zCitEYXRlOgkJQXVndXN0IDIwMTAKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJVGhlIG1vdXNlIGNhbiBzdG9yZSA1IHByb2ZpbGVzIHdoaWNoIGNhbiBiZSBzd2l0Y2hlZCBieSB0aGUKKwkJcHJlc3Mgb2YgYSBidXR0b24uIEEgcHJvZmlsZSBpcyBzcGxpdCBpbiBzZXR0aW5ncyBhbmQgYnV0dG9ucy4KKwkJcHJvZmlsZV9idXR0b25zIGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IGJ1dHRvbiBsYXlvdXQuCisJCVdoZW4gcmVhZCwgdGhlc2UgZmlsZXMgcmV0dXJuIHRoZSByZXNwZWN0aXZlIHByb2ZpbGUgYnV0dG9ucy4KKwkJVGhlIHJldHVybmVkIGRhdGEgaXMgNzcgYnl0ZXMgaW4gc2l6ZS4KKwkJVGhpcyBmaWxlIGlzIHJlYWRvbmx5LgorCQlXcml0ZSBjb250cm9sIHRvIHNlbGVjdCBwcm9maWxlIGFuZCByZWFkIHByb2ZpbGVfYnV0dG9ucyBpbnN0ZWFkLgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L2tvbmVwbHVzL3JvY2NhdGtvbmVwbHVzPG1pbm9yPi9wcm9maWxlX3NldHRpbmdzCitEYXRlOgkJT2N0b2JlciAyMDEwCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVRoZSBtb3VzZSBjYW4gc3RvcmUgNSBwcm9maWxlcyB3aGljaCBjYW4gYmUgc3dpdGNoZWQgYnkgdGhlCisJCXByZXNzIG9mIGEgYnV0dG9uLiBBIHByb2ZpbGUgaXMgc3BsaXQgaW4gc2V0dGluZ3MgYW5kIGJ1dHRvbnMuCisJCXByb2ZpbGVfc2V0dGluZ3MgaG9sZHMgaW5mb3JtYXRpb24gbGlrZSByZXNvbHV0aW9uLCBzZW5zaXRpdml0eQorCQlhbmQgbGlnaHQgZWZmZWN0cy4KKwkJV2hlbiB3cml0dGVuLCB0aGlzIGZpbGUgbGV0cyBvbmUgd3JpdGUgdGhlIHJlc3BlY3RpdmUgcHJvZmlsZQorCQlzZXR0aW5ncyBiYWNrIHRvIHRoZSBtb3VzZS4gVGhlIGRhdGEgaGFzIHRvIGJlIDQzIGJ5dGVzIGxvbmcuCisJCVRoZSBtb3VzZSB3aWxsIHJlamVjdCBpbnZhbGlkIGRhdGEuCisJCVdoaWNoIHByb2ZpbGUgdG8gd3JpdGUgaXMgZGV0ZXJtaW5lZCBieSB0aGUgcHJvZmlsZSBudW1iZXIKKwkJY29udGFpbmVkIGluIHRoZSBkYXRhLgorCQlCZWZvcmUgcmVhZGluZyB0aGlzIGZpbGUsIGNvbnRyb2wgaGFzIHRvIGJlIHdyaXR0ZW4gdG8gc2VsZWN0CisJCXdoaWNoIHByb2ZpbGUgdG8gcmVhZC4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9rb25lcGx1cy9yb2NjYXRrb25lcGx1czxtaW5vcj4vcHJvZmlsZVsxLTVdX3NldHRpbmdzCitEYXRlOgkJQXVndXN0IDIwMTAKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJVGhlIG1vdXNlIGNhbiBzdG9yZSA1IHByb2ZpbGVzIHdoaWNoIGNhbiBiZSBzd2l0Y2hlZCBieSB0aGUKKwkJcHJlc3Mgb2YgYSBidXR0b24uIEEgcHJvZmlsZSBpcyBzcGxpdCBpbiBzZXR0aW5ncyBhbmQgYnV0dG9ucy4KKwkJcHJvZmlsZV9zZXR0aW5ncyBob2xkcyBpbmZvcm1hdGlvbiBsaWtlIHJlc29sdXRpb24sIHNlbnNpdGl2aXR5CisJCWFuZCBsaWdodCBlZmZlY3RzLgorCQlXaGVuIHJlYWQsIHRoZXNlIGZpbGVzIHJldHVybiB0aGUgcmVzcGVjdGl2ZSBwcm9maWxlIHNldHRpbmdzLgorCQlUaGUgcmV0dXJuZWQgZGF0YSBpcyA0MyBieXRlcyBpbiBzaXplLgorCQlUaGlzIGZpbGUgaXMgcmVhZG9ubHkuCisJCVdyaXRlIGNvbnRyb2wgdG8gc2VsZWN0IHByb2ZpbGUgYW5kIHJlYWQgcHJvZmlsZV9zZXR0aW5ncyBpbnN0ZWFkLgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L2tvbmVwbHVzL3JvY2NhdGtvbmVwbHVzPG1pbm9yPi9zZW5zb3IKK0RhdGU6CQlPY3RvYmVyIDIwMTAKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJVGhlIG1vdXNlIGhhcyBhIHRyYWNraW5nLSBhbmQgYSBkaXN0YW5jZS1jb250cm9sLXVuaXQuIFRoZXNlCisJCWNhbiBiZSBhY3RpdmF0ZWQvZGVhY3RpdmF0ZWQgYW5kIHRoZSBsaWZ0LW9mZiBkaXN0YW5jZSBjYW4gYmUKKwkJc2V0LiBUaGUgZGF0YSBoYXMgdG8gYmUgNiBieXRlcyBsb25nLgorCQlUaGlzIGZpbGUgaXMgd3JpdGVvbmx5LgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L2tvbmVwbHVzL3JvY2NhdGtvbmVwbHVzPG1pbm9yPi90YWxrCitEYXRlOgkJTWF5IDIwMTEKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJVXNlZCB0byBhY3RpdmUgc29tZSBlYXN5KiBmdW5jdGlvbnMgb2YgdGhlIG1vdXNlIGZyb20gb3V0c2lkZS4KKwkJVGhlIGRhdGEgaGFzIHRvIGJlIDE2IGJ5dGVzIGxvbmcuCisJCVRoaXMgZmlsZSBpcyB3cml0ZW9ubHkuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4va29uZXBsdXMvcm9jY2F0a29uZXBsdXM8bWlub3I+L3RjdQorRGF0ZToJCU9jdG9iZXIgMjAxMAorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglXaGVuIHdyaXR0ZW4gYSBjYWxpYnJhdGlvbiBwcm9jZXNzIGZvciB0aGUgdHJhY2tpbmcgY29udHJvbCB1bml0CisJCWNhbiBiZSBpbml0aWF0ZWQvY2FuY2VsbGVkLiBBbHNvIGxldHMgb25lIHJlYWQvd3JpdGUgc2Vuc29yCisJCXJlZ2lzdGVycy4KKwkJVGhlIGRhdGEgaGFzIHRvIGJlIDQgYnl0ZXMgbG9uZy4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9rb25lcGx1cy9yb2NjYXRrb25lcGx1czxtaW5vcj4vdGN1X2ltYWdlCitEYXRlOgkJT2N0b2JlciAyMDEwCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVdoZW4gcmVhZCB0aGUgbW91c2UgcmV0dXJucyBhIDMweDMwIHBpeGVsIGltYWdlIG9mIHRoZQorCQlzYW1wbGVkIHVuZGVyZ3JvdW5kLiBUaGlzIHdvcmtzIG9ubHkgaW4gdGhlIGNvdXJzZSBvZiBhCisJCWNhbGlicmF0aW9uIHByb2Nlc3MgaW5pdGlhdGVkIHdpdGggdGN1LgorCQlUaGUgcmV0dXJuZWQgZGF0YSBpcyAxMDI4IGJ5dGVzIGluIHNpemUuCisJCVRoaXMgZmlsZSBpcyByZWFkb25seS4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL29ic29sZXRlL3N5c2ZzLWRyaXZlci1oaWQtcm9jY2F0LWtvbmVwdXJlIGIvRG9jdW1lbnRhdGlvbi9BQkkvb2Jzb2xldGUvc3lzZnMtZHJpdmVyLWhpZC1yb2NjYXQta29uZXB1cmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFhOWI3ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL29ic29sZXRlL3N5c2ZzLWRyaXZlci1oaWQtcm9jY2F0LWtvbmVwdXJlCkBAIC0wLDAgKzEsMTA1IEBACitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L2tvbmVwdXJlL3JvY2NhdGtvbmVwdXJlPG1pbm9yPi9hY3R1YWxfcHJvZmlsZQorRGF0ZToJCURlY2VtYmVyIDIwMTIKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJVGhlIG1vdXNlIGNhbiBzdG9yZSA1IHByb2ZpbGVzIHdoaWNoIGNhbiBiZSBzd2l0Y2hlZCBieSB0aGUKKwkJcHJlc3Mgb2YgYSBidXR0b24uIGFjdHVhbF9wcm9maWxlIGhvbGRzIG51bWJlciBvZiBhY3R1YWwgcHJvZmlsZS4KKwkJVGhpcyB2YWx1ZSBpcyBwZXJzaXN0ZW50LCBzbyBpdHMgdmFsdWUgZGV0ZXJtaW5lcyB0aGUgcHJvZmlsZQorCQl0aGF0J3MgYWN0aXZlIHdoZW4gdGhlIG1vdXNlIGlzIHBvd2VyZWQgb24gbmV4dCB0aW1lLgorCQlXaGVuIHdyaXR0ZW4sIHRoZSBtb3VzZSBhY3RpdmF0ZXMgdGhlIHNldCBwcm9maWxlIGltbWVkaWF0ZWx5LgorCQlUaGUgZGF0YSBoYXMgdG8gYmUgMyBieXRlcyBsb25nLgorCQlUaGUgbW91c2Ugd2lsbCByZWplY3QgaW52YWxpZCBkYXRhLgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L2tvbmVwdXJlL3JvY2NhdGtvbmVwdXJlPG1pbm9yPi9jb250cm9sCitEYXRlOgkJRGVjZW1iZXIgMjAxMgorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglXaGVuIHdyaXR0ZW4sIHRoaXMgZmlsZSBsZXRzIG9uZSBzZWxlY3Qgd2hpY2ggZGF0YSBmcm9tIHdoaWNoCisJCXByb2ZpbGUgd2lsbCBiZQlyZWFkIG5leHQuIFRoZSBkYXRhIGhhcyB0byBiZSAzIGJ5dGVzIGxvbmcuCisJCVRoaXMgZmlsZSBpcyB3cml0ZW9ubHkuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4va29uZXB1cmUvcm9jY2F0a29uZXB1cmU8bWlub3I+L2luZm8KK0RhdGU6CQlEZWNlbWJlciAyMDEyCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVdoZW4gcmVhZCwgdGhpcyBmaWxlIHJldHVybnMgZ2VuZXJhbCBkYXRhIGxpa2UgZmlybXdhcmUgdmVyc2lvbi4KKwkJV2hlbiB3cml0dGVuLCB0aGUgZGV2aWNlIGNhbiBiZSByZXNldC4KKwkJVGhlIGRhdGEgaXMgNiBieXRlcyBsb25nLgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L2tvbmVwdXJlL3JvY2NhdGtvbmVwdXJlPG1pbm9yPi9tYWNybworRGF0ZToJCURlY2VtYmVyIDIwMTIKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJVGhlIG1vdXNlIGNhbiBzdG9yZSBhIG1hY3JvIHdpdGggbWF4IDUwMCBrZXkvYnV0dG9uIHN0cm9rZXMKKwkJaW50ZXJuYWxseS4KKwkJV2hlbiB3cml0dGVuLCB0aGlzIGZpbGUgbGV0cyBvbmUgc2V0IHRoZSBzZXF1ZW5jZSBmb3IgYSBzcGVjaWZpYworCQlidXR0b24gZm9yIGEgc3BlY2lmaWMgcHJvZmlsZS4gQnV0dG9uIGFuZCBwcm9maWxlIG51bWJlcnMgYXJlCisJCWluY2x1ZGVkIGluIHdyaXR0ZW4gZGF0YS4gVGhlIGRhdGEgaGFzIHRvIGJlIDIwODIgYnl0ZXMgbG9uZy4KKwkJVGhpcyBmaWxlIGlzIHdyaXRlb25seS4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9rb25lcHVyZS9yb2NjYXRrb25lcHVyZTxtaW5vcj4vcHJvZmlsZV9idXR0b25zCitEYXRlOgkJRGVjZW1iZXIgMjAxMgorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglUaGUgbW91c2UgY2FuIHN0b3JlIDUgcHJvZmlsZXMgd2hpY2ggY2FuIGJlIHN3aXRjaGVkIGJ5IHRoZQorCQlwcmVzcyBvZiBhIGJ1dHRvbi4gQSBwcm9maWxlIGlzIHNwbGl0IGluIHNldHRpbmdzIGFuZCBidXR0b25zLgorCQlwcm9maWxlX2J1dHRvbnMgaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgYnV0dG9uIGxheW91dC4KKwkJV2hlbiB3cml0dGVuLCB0aGlzIGZpbGUgbGV0cyBvbmUgd3JpdGUgdGhlIHJlc3BlY3RpdmUgcHJvZmlsZQorCQlidXR0b25zIGJhY2sgdG8gdGhlIG1vdXNlLiBUaGUgZGF0YSBoYXMgdG8gYmUgNTkgYnl0ZXMgbG9uZy4KKwkJVGhlIG1vdXNlIHdpbGwgcmVqZWN0IGludmFsaWQgZGF0YS4KKwkJV2hpY2ggcHJvZmlsZSB0byB3cml0ZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBwcm9maWxlIG51bWJlcgorCQljb250YWluZWQgaW4gdGhlIGRhdGEuCisJCUJlZm9yZSByZWFkaW5nIHRoaXMgZmlsZSwgY29udHJvbCBoYXMgdG8gYmUgd3JpdHRlbiB0byBzZWxlY3QKKwkJd2hpY2ggcHJvZmlsZSB0byByZWFkLgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L2tvbmVwdXJlL3JvY2NhdGtvbmVwdXJlPG1pbm9yPi9wcm9maWxlX3NldHRpbmdzCitEYXRlOgkJRGVjZW1iZXIgMjAxMgorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglUaGUgbW91c2UgY2FuIHN0b3JlIDUgcHJvZmlsZXMgd2hpY2ggY2FuIGJlIHN3aXRjaGVkIGJ5IHRoZQorCQlwcmVzcyBvZiBhIGJ1dHRvbi4gQSBwcm9maWxlIGlzIHNwbGl0IGluIHNldHRpbmdzIGFuZCBidXR0b25zLgorCQlwcm9maWxlX3NldHRpbmdzIGhvbGRzIGluZm9ybWF0aW9uIGxpa2UgcmVzb2x1dGlvbiwgc2Vuc2l0aXZpdHkKKwkJYW5kIGxpZ2h0IGVmZmVjdHMuCisJCVdoZW4gd3JpdHRlbiwgdGhpcyBmaWxlIGxldHMgb25lIHdyaXRlIHRoZSByZXNwZWN0aXZlIHByb2ZpbGUKKwkJc2V0dGluZ3MgYmFjayB0byB0aGUgbW91c2UuIFRoZSBkYXRhIGhhcyB0byBiZSAzMSBieXRlcyBsb25nLgorCQlUaGUgbW91c2Ugd2lsbCByZWplY3QgaW52YWxpZCBkYXRhLgorCQlXaGljaCBwcm9maWxlIHRvIHdyaXRlIGlzIGRldGVybWluZWQgYnkgdGhlIHByb2ZpbGUgbnVtYmVyCisJCWNvbnRhaW5lZCBpbiB0aGUgZGF0YS4KKwkJQmVmb3JlIHJlYWRpbmcgdGhpcyBmaWxlLCBjb250cm9sIGhhcyB0byBiZSB3cml0dGVuIHRvIHNlbGVjdAorCQl3aGljaCBwcm9maWxlIHRvIHJlYWQuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4va29uZXB1cmUvcm9jY2F0a29uZXB1cmU8bWlub3I+L3NlbnNvcgorRGF0ZToJCURlY2VtYmVyIDIwMTIKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJVGhlIG1vdXNlIGhhcyBhIHRyYWNraW5nLSBhbmQgYSBkaXN0YW5jZS1jb250cm9sLXVuaXQuIFRoZXNlCisJCWNhbiBiZSBhY3RpdmF0ZWQvZGVhY3RpdmF0ZWQgYW5kIHRoZSBsaWZ0LW9mZiBkaXN0YW5jZSBjYW4gYmUKKwkJc2V0LiBUaGUgZGF0YSBoYXMgdG8gYmUgNiBieXRlcyBsb25nLgorCQlUaGlzIGZpbGUgaXMgd3JpdGVvbmx5LgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L2tvbmVwdXJlL3JvY2NhdGtvbmVwdXJlPG1pbm9yPi90YWxrCitEYXRlOgkJRGVjZW1iZXIgMjAxMgorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglVc2VkIHRvIGFjdGl2ZSBzb21lIGVhc3kqIGZ1bmN0aW9ucyBvZiB0aGUgbW91c2UgZnJvbSBvdXRzaWRlLgorCQlUaGUgZGF0YSBoYXMgdG8gYmUgMTYgYnl0ZXMgbG9uZy4KKwkJVGhpcyBmaWxlIGlzIHdyaXRlb25seS4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9rb25lcHVyZS9yb2NjYXRrb25lcHVyZTxtaW5vcj4vdGN1CitEYXRlOgkJRGVjZW1iZXIgMjAxMgorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglXaGVuIHdyaXR0ZW4gYSBjYWxpYnJhdGlvbiBwcm9jZXNzIGZvciB0aGUgdHJhY2tpbmcgY29udHJvbCB1bml0CisJCWNhbiBiZSBpbml0aWF0ZWQvY2FuY2VsbGVkLiBBbHNvIGxldHMgb25lIHJlYWQvd3JpdGUgc2Vuc29yCisJCXJlZ2lzdGVycy4KKwkJVGhlIGRhdGEgaGFzIHRvIGJlIDQgYnl0ZXMgbG9uZy4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9rb25lcHVyZS9yb2NjYXRrb25lcHVyZTxtaW5vcj4vdGN1X2ltYWdlCitEYXRlOgkJRGVjZW1iZXIgMjAxMgorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglXaGVuIHJlYWQgdGhlIG1vdXNlIHJldHVybnMgYSAzMHgzMCBwaXhlbCBpbWFnZSBvZiB0aGUKKwkJc2FtcGxlZCB1bmRlcmdyb3VuZC4gVGhpcyB3b3JrcyBvbmx5IGluIHRoZSBjb3Vyc2Ugb2YgYQorCQljYWxpYnJhdGlvbiBwcm9jZXNzIGluaXRpYXRlZCB3aXRoIHRjdS4KKwkJVGhlIHJldHVybmVkIGRhdGEgaXMgMTAyOCBieXRlcyBpbiBzaXplLgorCQlUaGlzIGZpbGUgaXMgcmVhZG9ubHkuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS9vYnNvbGV0ZS9zeXNmcy1kcml2ZXItaGlkLXJvY2NhdC1rb3ZhcGx1cyBiL0RvY3VtZW50YXRpb24vQUJJL29ic29sZXRlL3N5c2ZzLWRyaXZlci1oaWQtcm9jY2F0LWtvdmFwbHVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiMDE2MzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS9vYnNvbGV0ZS9zeXNmcy1kcml2ZXItaGlkLXJvY2NhdC1rb3ZhcGx1cwpAQCAtMCwwICsxLDExNiBAQAorV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9rb3ZhcGx1cy9yb2NjYXRrb3ZhcGx1czxtaW5vcj4vYWN0dWFsX2NwaQorRGF0ZToJCUphbnVhcnkgMjAxMQorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglUaGUgaW50ZWdlciB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSByYW5nZXMgZnJvbSAxLTQuCisJCVdoZW4gcmVhZCwgdGhpcyBhdHRyaWJ1dGUgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHRoZSBhY3RpdmUKKwkJY3BpIGxldmVsLgorCQlUaGlzIGZpbGUgaXMgcmVhZG9ubHkuCisJCUhhcyBuZXZlciBiZWVuIHVzZWQuIElmIGJvb2trZWVwaW5nIGlzIGRvbmUsIGl0J3MgZG9uZSBpbiB1c2VybGFuZCB0b29scy4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9rb3ZhcGx1cy9yb2NjYXRrb3ZhcGx1czxtaW5vcj4vYWN0dWFsX3Byb2ZpbGUKK0RhdGU6CQlKYW51YXJ5IDIwMTEKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJVGhlIGludGVnZXIgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgcmFuZ2VzIGZyb20gMC00LgorCQlXaGVuIHJlYWQsIHRoaXMgYXR0cmlidXRlIHJldHVybnMgdGhlIG51bWJlciBvZiB0aGUgYWN0aXZlCisJCXByb2ZpbGUuCisJCVdoZW4gd3JpdHRlbiwgdGhlIG1vdXNlIGFjdGl2YXRlcyB0aGlzIHByb2ZpbGUgaW1tZWRpYXRlbHkuCisJCVRoZSBwcm9maWxlIHRoYXQncyBhY3RpdmUgd2hlbiBwb3dlcmVkIGRvd24gaXMgdGhlIHNhbWUgdGhhdCdzCisJCWFjdGl2ZSB3aGVuIHRoZSBtb3VzZSBpcyBwb3dlcmVkIG9uLgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L2tvdmFwbHVzL3JvY2NhdGtvdmFwbHVzPG1pbm9yPi9hY3R1YWxfc2Vuc2l0aXZpdHlfeAorRGF0ZToJCUphbnVhcnkgMjAxMQorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglUaGUgaW50ZWdlciB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSByYW5nZXMgZnJvbSAxLTEwLgorCQlXaGVuIHJlYWQsIHRoaXMgYXR0cmlidXRlIHJldHVybnMgdGhlIG51bWJlciBvZiB0aGUgYWN0dWFsCisJCXNlbnNpdGl2aXR5IGluIHggZGlyZWN0aW9uLgorCQlUaGlzIGZpbGUgaXMgcmVhZG9ubHkuCisJCUhhcyBuZXZlciBiZWVuIHVzZWQuIElmIGJvb2trZWVwaW5nIGlzIGRvbmUsIGl0J3MgZG9uZSBpbiB1c2VybGFuZCB0b29scy4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9rb3ZhcGx1cy9yb2NjYXRrb3ZhcGx1czxtaW5vcj4vYWN0dWFsX3NlbnNpdGl2aXR5X3kKK0RhdGU6CQlKYW51YXJ5IDIwMTEKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJVGhlIGludGVnZXIgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgcmFuZ2VzIGZyb20gMS0xMC4KKwkJV2hlbiByZWFkLCB0aGlzIGF0dHJpYnV0ZSByZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhlIGFjdHVhbAorCQlzZW5zaXRpdml0eSBpbiB5IGRpcmVjdGlvbi4KKwkJVGhpcyBmaWxlIGlzIHJlYWRvbmx5LgorCQlIYXMgbmV2ZXIgYmVlbiB1c2VkLiBJZiBib29ra2VlcGluZyBpcyBkb25lLCBpdCdzIGRvbmUgaW4gdXNlcmxhbmQgdG9vbHMuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4va292YXBsdXMvcm9jY2F0a292YXBsdXM8bWlub3I+L2Zpcm13YXJlX3ZlcnNpb24KK0RhdGU6CQlKYW51YXJ5IDIwMTEKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJV2hlbiByZWFkLCB0aGlzIGZpbGUgcmV0dXJucyB0aGUgcmF3IGludGVnZXIgdmVyc2lvbiBudW1iZXIgb2YgdGhlCisJCWZpcm13YXJlIHJlcG9ydGVkIGJ5IHRoZSBtb3VzZS4gVXNpbmcgdGhlIGludGVnZXIgdmFsdWUgZWFzZXMKKwkJZnVydGhlciB1c2FnZSBpbiBvdGhlciBwcm9ncmFtcy4gVG8gcmVjZWl2ZSB0aGUgcmVhbCB2ZXJzaW9uCisJCW51bWJlciB0aGUgZGVjaW1hbCBwb2ludCBoYXMgdG8gYmUgc2hpZnRlZCAyIHBvc2l0aW9ucyB0byB0aGUKKwkJbGVmdC4gRS5nLiBhIHJldHVybmVkIHZhbHVlIG9mIDEyMSBtZWFucyAxLjIxCisJCVRoaXMgZmlsZSBpcyByZWFkb25seS4KKwkJT2Jzb2xldGVkIGJ5IGJpbmFyeSBzeXNmcyBhdHRyaWJ1dGUgImluZm8iLgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L2tvdmFwbHVzL3JvY2NhdGtvdmFwbHVzPG1pbm9yPi9pbmZvCitEYXRlOgkJTm92ZW1iZXIgMjAxMgorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglXaGVuIHJlYWQsIHRoaXMgZmlsZSByZXR1cm5zIGdlbmVyYWwgZGF0YSBsaWtlIGZpcm13YXJlIHZlcnNpb24uCisJCVdoZW4gd3JpdHRlbiwgdGhlIGRldmljZSBjYW4gYmUgcmVzZXQuCisJCVRoZSBkYXRhIGlzIDYgYnl0ZXMgbG9uZy4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9rb3ZhcGx1cy9yb2NjYXRrb3ZhcGx1czxtaW5vcj4vcHJvZmlsZV9idXR0b25zCitEYXRlOgkJSmFudWFyeSAyMDExCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVRoZSBtb3VzZSBjYW4gc3RvcmUgNSBwcm9maWxlcyB3aGljaCBjYW4gYmUgc3dpdGNoZWQgYnkgdGhlCisJCXByZXNzIG9mIGEgYnV0dG9uLiBBIHByb2ZpbGUgaXMgc3BsaXQgaW4gc2V0dGluZ3MgYW5kIGJ1dHRvbnMuCisJCXByb2ZpbGVfYnV0dG9ucyBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCBidXR0b24gbGF5b3V0LgorCQlXaGVuIHdyaXR0ZW4sIHRoaXMgZmlsZSBsZXRzIG9uZSB3cml0ZSB0aGUgcmVzcGVjdGl2ZSBwcm9maWxlCisJCWJ1dHRvbnMgYmFjayB0byB0aGUgbW91c2UuIFRoZSBkYXRhIGhhcyB0byBiZSAyMyBieXRlcyBsb25nLgorCQlUaGUgbW91c2Ugd2lsbCByZWplY3QgaW52YWxpZCBkYXRhLgorCQlXaGljaCBwcm9maWxlIHRvIHdyaXRlIGlzIGRldGVybWluZWQgYnkgdGhlIHByb2ZpbGUgbnVtYmVyCisJCWNvbnRhaW5lZCBpbiB0aGUgZGF0YS4KKwkJQmVmb3JlIHJlYWRpbmcgdGhpcyBmaWxlLCBjb250cm9sIGhhcyB0byBiZSB3cml0dGVuIHRvIHNlbGVjdAorCQl3aGljaCBwcm9maWxlIHRvIHJlYWQuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4va292YXBsdXMvcm9jY2F0a292YXBsdXM8bWlub3I+L3Byb2ZpbGVbMS01XV9idXR0b25zCitEYXRlOgkJSmFudWFyeSAyMDExCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVRoZSBtb3VzZSBjYW4gc3RvcmUgNSBwcm9maWxlcyB3aGljaCBjYW4gYmUgc3dpdGNoZWQgYnkgdGhlCisJCXByZXNzIG9mIGEgYnV0dG9uLiBBIHByb2ZpbGUgaXMgc3BsaXQgaW4gc2V0dGluZ3MgYW5kIGJ1dHRvbnMuCisJCXByb2ZpbGVfYnV0dG9ucyBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCBidXR0b24gbGF5b3V0LgorCQlXaGVuIHJlYWQsIHRoZXNlIGZpbGVzIHJldHVybiB0aGUgcmVzcGVjdGl2ZSBwcm9maWxlIGJ1dHRvbnMuCisJCVRoZSByZXR1cm5lZCBkYXRhIGlzIDIzIGJ5dGVzIGluIHNpemUuCisJCVRoaXMgZmlsZSBpcyByZWFkb25seS4KKwkJV3JpdGUgY29udHJvbCB0byBzZWxlY3QgcHJvZmlsZSBhbmQgcmVhZCBwcm9maWxlX2J1dHRvbnMgaW5zdGVhZC4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9rb3ZhcGx1cy9yb2NjYXRrb3ZhcGx1czxtaW5vcj4vcHJvZmlsZV9zZXR0aW5ncworRGF0ZToJCUphbnVhcnkgMjAxMQorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglUaGUgbW91c2UgY2FuIHN0b3JlIDUgcHJvZmlsZXMgd2hpY2ggY2FuIGJlIHN3aXRjaGVkIGJ5IHRoZQorCQlwcmVzcyBvZiBhIGJ1dHRvbi4gQSBwcm9maWxlIGlzIHNwbGl0IGluIHNldHRpbmdzIGFuZCBidXR0b25zLgorCQlwcm9maWxlX3NldHRpbmdzIGhvbGRzIGluZm9ybWF0aW9uIGxpa2UgcmVzb2x1dGlvbiwgc2Vuc2l0aXZpdHkKKwkJYW5kIGxpZ2h0IGVmZmVjdHMuCisJCVdoZW4gd3JpdHRlbiwgdGhpcyBmaWxlIGxldHMgb25lIHdyaXRlIHRoZSByZXNwZWN0aXZlIHByb2ZpbGUKKwkJc2V0dGluZ3MgYmFjayB0byB0aGUgbW91c2UuIFRoZSBkYXRhIGhhcyB0byBiZSAxNiBieXRlcyBsb25nLgorCQlUaGUgbW91c2Ugd2lsbCByZWplY3QgaW52YWxpZCBkYXRhLgorCQlXaGljaCBwcm9maWxlIHRvIHdyaXRlIGlzIGRldGVybWluZWQgYnkgdGhlIHByb2ZpbGUgbnVtYmVyCisJCWNvbnRhaW5lZCBpbiB0aGUgZGF0YS4KKwkJQmVmb3JlIHJlYWRpbmcgdGhpcyBmaWxlLCBjb250cm9sIGhhcyB0byBiZSB3cml0dGVuIHRvIHNlbGVjdAorCQl3aGljaCBwcm9maWxlIHRvIHJlYWQuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4va292YXBsdXMvcm9jY2F0a292YXBsdXM8bWlub3I+L3Byb2ZpbGVbMS01XV9zZXR0aW5ncworRGF0ZToJCUphbnVhcnkgMjAxMQorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglUaGUgbW91c2UgY2FuIHN0b3JlIDUgcHJvZmlsZXMgd2hpY2ggY2FuIGJlIHN3aXRjaGVkIGJ5IHRoZQorCQlwcmVzcyBvZiBhIGJ1dHRvbi4gQSBwcm9maWxlIGlzIHNwbGl0IGluIHNldHRpbmdzIGFuZCBidXR0b25zLgorCQlwcm9maWxlX3NldHRpbmdzIGhvbGRzIGluZm9ybWF0aW9uIGxpa2UgcmVzb2x1dGlvbiwgc2Vuc2l0aXZpdHkKKwkJYW5kIGxpZ2h0IGVmZmVjdHMuCisJCVdoZW4gcmVhZCwgdGhlc2UgZmlsZXMgcmV0dXJuIHRoZSByZXNwZWN0aXZlIHByb2ZpbGUgc2V0dGluZ3MuCisJCVRoZSByZXR1cm5lZCBkYXRhIGlzIDE2IGJ5dGVzIGluIHNpemUuCisJCVRoaXMgZmlsZSBpcyByZWFkb25seS4KKwkJV3JpdGUgY29udHJvbCB0byBzZWxlY3QgcHJvZmlsZSBhbmQgcmVhZCBwcm9maWxlX3NldHRpbmdzIGluc3RlYWQuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS9vYnNvbGV0ZS9zeXNmcy1kcml2ZXItaGlkLXJvY2NhdC1sdWEgYi9Eb2N1bWVudGF0aW9uL0FCSS9vYnNvbGV0ZS9zeXNmcy1kcml2ZXItaGlkLXJvY2NhdC1sdWEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFjNmM0YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL29ic29sZXRlL3N5c2ZzLWRyaXZlci1oaWQtcm9jY2F0LWx1YQpAQCAtMCwwICsxLDcgQEAKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+L2NvbnRyb2wKK0RhdGU6CQlPY3RvYmVyIDIwMTIKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJV2hlbiB3cml0dGVuLCBjcGksIGJ1dHRvbiBhbmQgbGlnaHQgc2V0dGluZ3MgY2FuIGJlIGNvbmZpZ3VyZWQuCisJCVdoZW4gcmVhZCwgYWN0dWFsIGNwaSBzZXR0aW5nIGFuZCBzZW5zb3IgZGF0YSBhcmUgcmV0dXJuZWQuCisJCVRoZSBkYXRhIGhhcyB0byBiZSA4IGJ5dGVzIGxvbmcuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS9vYnNvbGV0ZS9zeXNmcy1kcml2ZXItaGlkLXJvY2NhdC1weXJhIGIvRG9jdW1lbnRhdGlvbi9BQkkvb2Jzb2xldGUvc3lzZnMtZHJpdmVyLWhpZC1yb2NjYXQtcHlyYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjAyMGIzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvb2Jzb2xldGUvc3lzZnMtZHJpdmVyLWhpZC1yb2NjYXQtcHlyYQpAQCAtMCwwICsxLDEyMyBAQAorV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9weXJhL3JvY2NhdHB5cmE8bWlub3I+L2FjdHVhbF9jcGkKK0RhdGU6CQlBdWd1c3QgMjAxMAorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglJdCBpcyBwb3NzaWJsZSB0byBzd2l0Y2ggdGhlIGNwaSBzZXR0aW5nIG9mIHRoZSBtb3VzZSB3aXRoIHRoZQorCQlwcmVzcyBvZiBhIGJ1dHRvbi4KKwkJV2hlbiByZWFkLCB0aGlzIGZpbGUgcmV0dXJucyB0aGUgcmF3IG51bWJlciBvZiB0aGUgYWN0dWFsIGNwaQorCQlzZXR0aW5nIHJlcG9ydGVkIGJ5IHRoZSBtb3VzZS4gVGhpcyBudW1iZXIgaGFzIHRvIGJlIGZ1cnRoZXIKKwkJcHJvY2Vzc2VkIHRvIHJlY2VpdmUgdGhlIHJlYWwgZHBpIHZhbHVlLgorCisJCVZBTFVFIERQSQorCQkxICAgICA0MDAKKwkJMiAgICAgODAwCisJCTQgICAgIDE2MDAKKworCQlUaGlzIGZpbGUgaXMgcmVhZG9ubHkuCisJCUhhcyBuZXZlciBiZWVuIHVzZWQuIElmIGJvb2trZWVwaW5nIGlzIGRvbmUsIGl0J3MgZG9uZSBpbiB1c2VybGFuZCB0b29scy4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9weXJhL3JvY2NhdHB5cmE8bWlub3I+L2FjdHVhbF9wcm9maWxlCitEYXRlOgkJQXVndXN0IDIwMTAKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJV2hlbiByZWFkLCB0aGlzIGZpbGUgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHRoZSBhY3R1YWwgcHJvZmlsZSBpbgorCQlyYW5nZSAwLTQuCisJCVRoaXMgZmlsZSBpcyByZWFkb25seS4KKwkJUGxlYXNlIHVzZSBiaW5hcnkgYXR0cmlidXRlICJzZXR0aW5ncyIgd2hpY2ggcHJvdmlkZXMgdGhpcyBpbmZvcm1hdGlvbi4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9weXJhL3JvY2NhdHB5cmE8bWlub3I+L2Zpcm13YXJlX3ZlcnNpb24KK0RhdGU6CQlBdWd1c3QgMjAxMAorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglXaGVuIHJlYWQsIHRoaXMgZmlsZSByZXR1cm5zIHRoZSByYXcgaW50ZWdlciB2ZXJzaW9uIG51bWJlciBvZiB0aGUKKwkJZmlybXdhcmUgcmVwb3J0ZWQgYnkgdGhlIG1vdXNlLiBVc2luZyB0aGUgaW50ZWdlciB2YWx1ZSBlYXNlcworCQlmdXJ0aGVyIHVzYWdlIGluIG90aGVyIHByb2dyYW1zLiBUbyByZWNlaXZlIHRoZSByZWFsIHZlcnNpb24KKwkJbnVtYmVyIHRoZSBkZWNpbWFsIHBvaW50IGhhcyB0byBiZSBzaGlmdGVkIDIgcG9zaXRpb25zIHRvIHRoZQorCQlsZWZ0LiBFLmcuIGEgcmV0dXJuZWQgdmFsdWUgb2YgMTM4IG1lYW5zIDEuMzgKKwkJVGhpcyBmaWxlIGlzIHJlYWRvbmx5LgorCQlQbGVhc2UgdXNlIGJpbmFyeSBhdHRyaWJ1dGUgImluZm8iIHdoaWNoIHByb3ZpZGVzIHRoaXMgaW5mb3JtYXRpb24uCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vcHlyYS9yb2NjYXRweXJhPG1pbm9yPi9pbmZvCitEYXRlOgkJTm92ZW1iZXIgMjAxMgorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglXaGVuIHJlYWQsIHRoaXMgZmlsZSByZXR1cm5zIGdlbmVyYWwgZGF0YSBsaWtlIGZpcm13YXJlIHZlcnNpb24uCisJCVdoZW4gd3JpdHRlbiwgdGhlIGRldmljZSBjYW4gYmUgcmVzZXQuCisJCVRoZSBkYXRhIGlzIDYgYnl0ZXMgbG9uZy4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9weXJhL3JvY2NhdHB5cmE8bWlub3I+L3Byb2ZpbGVfYnV0dG9ucworRGF0ZToJCUF1Z3VzdCAyMDEwCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVRoZSBtb3VzZSBjYW4gc3RvcmUgNSBwcm9maWxlcyB3aGljaCBjYW4gYmUgc3dpdGNoZWQgYnkgdGhlCisJCXByZXNzIG9mIGEgYnV0dG9uLiBBIHByb2ZpbGUgaXMgc3BsaXQgaW4gc2V0dGluZ3MgYW5kIGJ1dHRvbnMuCisJCXByb2ZpbGVfYnV0dG9ucyBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCBidXR0b24gbGF5b3V0LgorCQlXaGVuIHdyaXR0ZW4sIHRoaXMgZmlsZSBsZXRzIG9uZSB3cml0ZSB0aGUgcmVzcGVjdGl2ZSBwcm9maWxlCisJCWJ1dHRvbnMgYmFjayB0byB0aGUgbW91c2UuIFRoZSBkYXRhIGhhcyB0byBiZSAxOSBieXRlcyBsb25nLgorCQlUaGUgbW91c2Ugd2lsbCByZWplY3QgaW52YWxpZCBkYXRhLgorCQlXaGljaCBwcm9maWxlIHRvIHdyaXRlIGlzIGRldGVybWluZWQgYnkgdGhlIHByb2ZpbGUgbnVtYmVyCisJCWNvbnRhaW5lZCBpbiB0aGUgZGF0YS4KKwkJQmVmb3JlIHJlYWRpbmcgdGhpcyBmaWxlLCBjb250cm9sIGhhcyB0byBiZSB3cml0dGVuIHRvIHNlbGVjdAorCQl3aGljaCBwcm9maWxlIHRvIHJlYWQuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vcHlyYS9yb2NjYXRweXJhPG1pbm9yPi9wcm9maWxlWzEtNV1fYnV0dG9ucworRGF0ZToJCUF1Z3VzdCAyMDEwCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVRoZSBtb3VzZSBjYW4gc3RvcmUgNSBwcm9maWxlcyB3aGljaCBjYW4gYmUgc3dpdGNoZWQgYnkgdGhlCisJCXByZXNzIG9mIGEgYnV0dG9uLiBBIHByb2ZpbGUgaXMgc3BsaXQgaW4gc2V0dGluZ3MgYW5kIGJ1dHRvbnMuCisJCXByb2ZpbGVfYnV0dG9ucyBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCBidXR0b24gbGF5b3V0LgorCQlXaGVuIHJlYWQsIHRoZXNlIGZpbGVzIHJldHVybiB0aGUgcmVzcGVjdGl2ZSBwcm9maWxlIGJ1dHRvbnMuCisJCVRoZSByZXR1cm5lZCBkYXRhIGlzIDE5IGJ5dGVzIGluIHNpemUuCisJCVRoaXMgZmlsZSBpcyByZWFkb25seS4KKwkJV3JpdGUgY29udHJvbCB0byBzZWxlY3QgcHJvZmlsZSBhbmQgcmVhZCBwcm9maWxlX2J1dHRvbnMgaW5zdGVhZC4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9weXJhL3JvY2NhdHB5cmE8bWlub3I+L3Byb2ZpbGVfc2V0dGluZ3MKK0RhdGU6CQlBdWd1c3QgMjAxMAorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglUaGUgbW91c2UgY2FuIHN0b3JlIDUgcHJvZmlsZXMgd2hpY2ggY2FuIGJlIHN3aXRjaGVkIGJ5IHRoZQorCQlwcmVzcyBvZiBhIGJ1dHRvbi4gQSBwcm9maWxlIGlzIHNwbGl0IGluIHNldHRpbmdzIGFuZCBidXR0b25zLgorCQlwcm9maWxlX3NldHRpbmdzIGhvbGRzIGluZm9ybWF0aW9uIGxpa2UgcmVzb2x1dGlvbiwgc2Vuc2l0aXZpdHkKKwkJYW5kIGxpZ2h0IGVmZmVjdHMuCisJCVdoZW4gd3JpdHRlbiwgdGhpcyBmaWxlIGxldHMgb25lIHdyaXRlIHRoZSByZXNwZWN0aXZlIHByb2ZpbGUKKwkJc2V0dGluZ3MgYmFjayB0byB0aGUgbW91c2UuIFRoZSBkYXRhIGhhcyB0byBiZSAxMyBieXRlcyBsb25nLgorCQlUaGUgbW91c2Ugd2lsbCByZWplY3QgaW52YWxpZCBkYXRhLgorCQlXaGljaCBwcm9maWxlIHRvIHdyaXRlIGlzIGRldGVybWluZWQgYnkgdGhlIHByb2ZpbGUgbnVtYmVyCisJCWNvbnRhaW5lZCBpbiB0aGUgZGF0YS4KKwkJQmVmb3JlIHJlYWRpbmcgdGhpcyBmaWxlLCBjb250cm9sIGhhcyB0byBiZSB3cml0dGVuIHRvIHNlbGVjdAorCQl3aGljaCBwcm9maWxlIHRvIHJlYWQuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vcHlyYS9yb2NjYXRweXJhPG1pbm9yPi9wcm9maWxlWzEtNV1fc2V0dGluZ3MKK0RhdGU6CQlBdWd1c3QgMjAxMAorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglUaGUgbW91c2UgY2FuIHN0b3JlIDUgcHJvZmlsZXMgd2hpY2ggY2FuIGJlIHN3aXRjaGVkIGJ5IHRoZQorCQlwcmVzcyBvZiBhIGJ1dHRvbi4gQSBwcm9maWxlIGlzIHNwbGl0IGluIHNldHRpbmdzIGFuZCBidXR0b25zLgorCQlwcm9maWxlX3NldHRpbmdzIGhvbGRzIGluZm9ybWF0aW9uIGxpa2UgcmVzb2x1dGlvbiwgc2Vuc2l0aXZpdHkKKwkJYW5kIGxpZ2h0IGVmZmVjdHMuCisJCVdoZW4gcmVhZCwgdGhlc2UgZmlsZXMgcmV0dXJuIHRoZSByZXNwZWN0aXZlIHByb2ZpbGUgc2V0dGluZ3MuCisJCVRoZSByZXR1cm5lZCBkYXRhIGlzIDEzIGJ5dGVzIGluIHNpemUuCisJCVRoaXMgZmlsZSBpcyByZWFkb25seS4KKwkJV3JpdGUgY29udHJvbCB0byBzZWxlY3QgcHJvZmlsZSBhbmQgcmVhZCBwcm9maWxlX3NldHRpbmdzIGluc3RlYWQuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vcHlyYS9yb2NjYXRweXJhPG1pbm9yPi9zZXR0aW5ncworRGF0ZToJCUF1Z3VzdCAyMDEwCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVdoZW4gcmVhZCwgdGhpcyBmaWxlIHJldHVybnMgdGhlIHNldHRpbmdzIHN0b3JlZCBpbiB0aGUgbW91c2UuCisJCVRoZSBzaXplIG9mIHRoZSBkYXRhIGlzIDMgYnl0ZXMgYW5kIGhvbGRzIGluZm9ybWF0aW9uIG9uIHRoZQorCQlzdGFydHVwX3Byb2ZpbGUuCisJCVdoZW4gd3JpdHRlbiwgdGhpcyBmaWxlIGxldHMgd3JpdGUgc2V0dGluZ3MgYmFjayB0byB0aGUgbW91c2UuCisJCVRoZSBkYXRhIGhhcyB0byBiZSAzIGJ5dGVzIGxvbmcuIFRoZSBtb3VzZSB3aWxsIHJlamVjdCBpbnZhbGlkCisJCWRhdGEuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vcHlyYS9yb2NjYXRweXJhPG1pbm9yPi9zdGFydHVwX3Byb2ZpbGUKK0RhdGU6CQlBdWd1c3QgMjAxMAorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglUaGUgaW50ZWdlciB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSByYW5nZXMgZnJvbSAwLTQuCisgICAgICAgICAgICAgICAgV2hlbiByZWFkLCB0aGlzIGF0dHJpYnV0ZSByZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhlIHByb2ZpbGUKKyAgICAgICAgICAgICAgICB0aGF0J3MgYWN0aXZlIHdoZW4gdGhlIG1vdXNlIGlzIHBvd2VyZWQgb24uCisJCVRoaXMgZmlsZSBpcyByZWFkb25seS4KKwkJUGxlYXNlIHVzZSBiaW5hcnkgYXR0cmlidXRlICJzZXR0aW5ncyIgd2hpY2ggcHJvdmlkZXMgdGhpcyBpbmZvcm1hdGlvbi4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL29ic29sZXRlL3N5c2ZzLWRyaXZlci1oaWQtcm9jY2F0LXJ5b3MgYi9Eb2N1bWVudGF0aW9uL0FCSS9vYnNvbGV0ZS9zeXNmcy1kcml2ZXItaGlkLXJvY2NhdC1yeW9zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkNmE4Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS9vYnNvbGV0ZS9zeXNmcy1kcml2ZXItaGlkLXJvY2NhdC1yeW9zCkBAIC0wLDAgKzEsMTc4IEBACitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L3J5b3Mvcm9jY2F0cnlvczxtaW5vcj4vY29udHJvbAorRGF0ZToJCU9jdG9iZXIgMjAxMworQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglXaGVuIHdyaXR0ZW4sIHRoaXMgZmlsZSBsZXRzIG9uZSBzZWxlY3Qgd2hpY2ggZGF0YSBmcm9tIHdoaWNoCisJCXByb2ZpbGUgd2lsbCBiZQlyZWFkIG5leHQuIFRoZSBkYXRhIGhhcyB0byBiZSAzIGJ5dGVzIGxvbmcuCisJCVRoaXMgZmlsZSBpcyB3cml0ZW9ubHkuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vcnlvcy9yb2NjYXRyeW9zPG1pbm9yPi9wcm9maWxlCitEYXRlOgkJT2N0b2JlciAyMDEzCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVRoZSBtb3VzZSBjYW4gc3RvcmUgNSBwcm9maWxlcyB3aGljaCBjYW4gYmUgc3dpdGNoZWQgYnkgdGhlCisJCXByZXNzIG9mIGEgYnV0dG9uLiBwcm9maWxlIGhvbGRzIGluZGV4IG9mIGFjdHVhbCBwcm9maWxlLgorCQlUaGlzIHZhbHVlIGlzIHBlcnNpc3RlbnQsIHNvIGl0cyB2YWx1ZSBkZXRlcm1pbmVzIHRoZSBwcm9maWxlCisJCXRoYXQncyBhY3RpdmUgd2hlbiB0aGUgZGV2aWNlIGlzIHBvd2VyZWQgb24gbmV4dCB0aW1lLgorCQlXaGVuIHdyaXR0ZW4sIHRoZSBkZXZpY2UgYWN0aXZhdGVzIHRoZSBzZXQgcHJvZmlsZSBpbW1lZGlhdGVseS4KKwkJVGhlIGRhdGEgaGFzIHRvIGJlIDMgYnl0ZXMgbG9uZy4KKwkJVGhlIGRldmljZSB3aWxsIHJlamVjdCBpbnZhbGlkIGRhdGEuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vcnlvcy9yb2NjYXRyeW9zPG1pbm9yPi9rZXlzX3ByaW1hcnkKK0RhdGU6CQlPY3RvYmVyIDIwMTMKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJV2hlbiB3cml0dGVuLCB0aGlzIGZpbGUgbGV0cyBvbmUgc2V0IHRoZSBkZWZhdWx0IG9mIGFsbCBrZXlzIGZvcgorCQlhIHNwZWNpZmljIHByb2ZpbGUuIFByb2ZpbGUgaW5kZXggaXMgaW5jbHVkZWQgaW4gd3JpdHRlbiBkYXRhLgorCQlUaGUgZGF0YSBoYXMgdG8gYmUgMTI1IGJ5dGVzIGxvbmcuCisJCUJlZm9yZSByZWFkaW5nIHRoaXMgZmlsZSwgY29udHJvbCBoYXMgdG8gYmUgd3JpdHRlbiB0byBzZWxlY3QKKwkJd2hpY2ggcHJvZmlsZSB0byByZWFkLgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L3J5b3Mvcm9jY2F0cnlvczxtaW5vcj4va2V5c19mdW5jdGlvbgorRGF0ZToJCU9jdG9iZXIgMjAxMworQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglXaGVuIHdyaXR0ZW4sIHRoaXMgZmlsZSBsZXRzIG9uZSBzZXQgdGhlIGZ1bmN0aW9uIG9mIHRoZQorCQlmdW5jdGlvbiBrZXlzIGZvciBhIHNwZWNpZmljIHByb2ZpbGUuIFByb2ZpbGUgaW5kZXggaXMgaW5jbHVkZWQKKwkJaW4gd3JpdHRlbiBkYXRhLiBUaGUgZGF0YSBoYXMgdG8gYmUgOTUgYnl0ZXMgbG9uZy4KKwkJQmVmb3JlIHJlYWRpbmcgdGhpcyBmaWxlLCBjb250cm9sIGhhcyB0byBiZSB3cml0dGVuIHRvIHNlbGVjdAorCQl3aGljaCBwcm9maWxlIHRvIHJlYWQuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vcnlvcy9yb2NjYXRyeW9zPG1pbm9yPi9rZXlzX21hY3JvCitEYXRlOgkJT2N0b2JlciAyMDEzCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVdoZW4gd3JpdHRlbiwgdGhpcyBmaWxlIGxldHMgb25lIHNldCB0aGUgZnVuY3Rpb24gb2YgdGhlIG1hY3JvCisJCWtleXMgZm9yIGEgc3BlY2lmaWMgcHJvZmlsZS4gUHJvZmlsZSBpbmRleCBpcyBpbmNsdWRlZCBpbgorCQl3cml0dGVuIGRhdGEuIFRoZSBkYXRhIGhhcyB0byBiZSAzNSBieXRlcyBsb25nLgorCQlCZWZvcmUgcmVhZGluZyB0aGlzIGZpbGUsIGNvbnRyb2wgaGFzIHRvIGJlIHdyaXR0ZW4gdG8gc2VsZWN0CisJCXdoaWNoIHByb2ZpbGUgdG8gcmVhZC4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9yeW9zL3JvY2NhdHJ5b3M8bWlub3I+L2tleXNfdGh1bWJzdGVyCitEYXRlOgkJT2N0b2JlciAyMDEzCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVdoZW4gd3JpdHRlbiwgdGhpcyBmaWxlIGxldHMgb25lIHNldCB0aGUgZnVuY3Rpb24gb2YgdGhlCisJCXRodW1ic3RlciBrZXlzIGZvciBhIHNwZWNpZmljIHByb2ZpbGUuIFByb2ZpbGUgaW5kZXggaXMgaW5jbHVkZWQKKwkJaW4gd3JpdHRlbiBkYXRhLiBUaGUgZGF0YSBoYXMgdG8gYmUgMjMgYnl0ZXMgbG9uZy4KKwkJQmVmb3JlIHJlYWRpbmcgdGhpcyBmaWxlLCBjb250cm9sIGhhcyB0byBiZSB3cml0dGVuIHRvIHNlbGVjdAorCQl3aGljaCBwcm9maWxlIHRvIHJlYWQuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vcnlvcy9yb2NjYXRyeW9zPG1pbm9yPi9rZXlzX2V4dHJhCitEYXRlOgkJT2N0b2JlciAyMDEzCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVdoZW4gd3JpdHRlbiwgdGhpcyBmaWxlIGxldHMgb25lIHNldCB0aGUgZnVuY3Rpb24gb2YgdGhlCisJCWNhcHNsb2NrIGFuZCBmdW5jdGlvbiBrZXlzIGZvciBhIHNwZWNpZmljIHByb2ZpbGUuIFByb2ZpbGUgaW5kZXgKKwkJaXMgaW5jbHVkZWQgaW4gd3JpdHRlbiBkYXRhLiBUaGUgZGF0YSBoYXMgdG8gYmUgOCBieXRlcyBsb25nLgorCQlCZWZvcmUgcmVhZGluZyB0aGlzIGZpbGUsIGNvbnRyb2wgaGFzIHRvIGJlIHdyaXR0ZW4gdG8gc2VsZWN0CisJCXdoaWNoIHByb2ZpbGUgdG8gcmVhZC4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9yeW9zL3JvY2NhdHJ5b3M8bWlub3I+L2tleXNfZWFzeXpvbmUKK0RhdGU6CQlPY3RvYmVyIDIwMTMKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJV2hlbiB3cml0dGVuLCB0aGlzIGZpbGUgbGV0cyBvbmUgc2V0IHRoZSBmdW5jdGlvbiBvZiB0aGUKKwkJZWFzeXpvbmUga2V5cyBmb3IgYSBzcGVjaWZpYyBwcm9maWxlLiBQcm9maWxlIGluZGV4IGlzIGluY2x1ZGVkCisJCWluIHdyaXR0ZW4gZGF0YS4gVGhlIGRhdGEgaGFzIHRvIGJlIDI5NCBieXRlcyBsb25nLgorCQlCZWZvcmUgcmVhZGluZyB0aGlzIGZpbGUsIGNvbnRyb2wgaGFzIHRvIGJlIHdyaXR0ZW4gdG8gc2VsZWN0CisJCXdoaWNoIHByb2ZpbGUgdG8gcmVhZC4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9yeW9zL3JvY2NhdHJ5b3M8bWlub3I+L2tleV9tYXNrCitEYXRlOgkJT2N0b2JlciAyMDEzCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVdoZW4gd3JpdHRlbiwgdGhpcyBmaWxlIGxldHMgb25lIGRlYWN0aXZhdGUgY2VydGFpbiBrZXlzIGxpa2UKKwkJd2luZG93cyBhbmQgYXBwbGljYXRpb24ga2V5cywgdG8gcHJldmVudCBhY2NpZGVudGFsIHByZXNzZXMuCisJCVByb2ZpbGUgaW5kZXggZm9yIHdoaWNoIHRoaXMgc2V0dGluZ3Mgb2NjdXIgaXMgaW5jbHVkZWQgaW4KKwkJd3JpdHRlbiBkYXRhLiBUaGUgZGF0YSBoYXMgdG8gYmUgNiBieXRlcyBsb25nLgorCQlCZWZvcmUgcmVhZGluZyB0aGlzIGZpbGUsIGNvbnRyb2wgaGFzIHRvIGJlIHdyaXR0ZW4gdG8gc2VsZWN0CisJCXdoaWNoIHByb2ZpbGUgdG8gcmVhZC4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9yeW9zL3JvY2NhdHJ5b3M8bWlub3I+L2xpZ2h0CitEYXRlOgkJT2N0b2JlciAyMDEzCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVdoZW4gd3JpdHRlbiwgdGhpcyBmaWxlIGxldHMgb25lIHNldCB0aGUgYmFja2xpZ2h0IGludGVuc2l0eSBmb3IKKwkJYSBzcGVjaWZpYyBwcm9maWxlLiBQcm9maWxlIGluZGV4IGlzIGluY2x1ZGVkIGluIHdyaXR0ZW4gZGF0YS4KKwkJVGhpcyBhdHRyaWJ1dGUgaXMgb25seSB2YWxpZCBmb3IgdGhlIGdsb3cgYW5kIHBybyB2YXJpYW50LgorCQlUaGUgZGF0YSBoYXMgdG8gYmUgMTYgYnl0ZXMgbG9uZy4KKwkJQmVmb3JlIHJlYWRpbmcgdGhpcyBmaWxlLCBjb250cm9sIGhhcyB0byBiZSB3cml0dGVuIHRvIHNlbGVjdAorCQl3aGljaCBwcm9maWxlIHRvIHJlYWQuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vcnlvcy9yb2NjYXRyeW9zPG1pbm9yPi9tYWNybworRGF0ZToJCU9jdG9iZXIgMjAxMworQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglXaGVuIHdyaXR0ZW4sIHRoaXMgZmlsZSBsZXRzIG9uZSBzdG9yZSBtYWNyb3Mgd2l0aCBtYXggNDgwCisJCWtleXN0cm9rZXMgZm9yIGEgc3BlY2lmaWMgYnV0dG9uIGZvciBhIHNwZWNpZmljIHByb2ZpbGUuCisJCUJ1dHRvbiBhbmQgcHJvZmlsZSBpbmRleGVzIGFyZSBpbmNsdWRlZCBpbiB3cml0dGVuIGRhdGEuCisJCVRoZSBkYXRhIGhhcyB0byBiZSAyMDAyIGJ5dGVzIGxvbmcuCisJCUJlZm9yZSByZWFkaW5nIHRoaXMgZmlsZSwgY29udHJvbCBoYXMgdG8gYmUgd3JpdHRlbiB0byBzZWxlY3QKKwkJd2hpY2ggcHJvZmlsZSBhbmQga2V5IHRvIHJlYWQuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vcnlvcy9yb2NjYXRyeW9zPG1pbm9yPi9pbmZvCitEYXRlOgkJT2N0b2JlciAyMDEzCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVdoZW4gcmVhZCwgdGhpcyBmaWxlIHJldHVybnMgZ2VuZXJhbCBkYXRhIGxpa2UgZmlybXdhcmUgdmVyc2lvbi4KKwkJVGhlIGRhdGEgaXMgOCBieXRlcyBsb25nLgorCQlUaGlzIGZpbGUgaXMgcmVhZG9ubHkuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vcnlvcy9yb2NjYXRyeW9zPG1pbm9yPi9yZXNldAorRGF0ZToJCU9jdG9iZXIgMjAxMworQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglXaGVuIHdyaXR0ZW4sIHRoaXMgZmlsZSBsZXRzIG9uZSByZXNldCB0aGUgZGV2aWNlLgorCQlUaGUgZGF0YSBoYXMgdG8gYmUgMyBieXRlcyBsb25nLgorCQlUaGlzIGZpbGUgaXMgd3JpdGVvbmx5LgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L3J5b3Mvcm9jY2F0cnlvczxtaW5vcj4vdGFsaworRGF0ZToJCU9jdG9iZXIgMjAxMworQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglXaGVuIHdyaXR0ZW4sIHRoaXMgZmlsZSBsZXRzIG9uZSB0cmlnZ2VyIGVhc3lzaGlmdCBmdW5jdGlvbmFsaXR5CisJCWZyb20gdGhlIGhvc3QuCisJCVRoZSBkYXRhIGhhcyB0byBiZSAxNiBieXRlcyBsb25nLgorCQlUaGlzIGZpbGUgaXMgd3JpdGVvbmx5LgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L3J5b3Mvcm9jY2F0cnlvczxtaW5vcj4vbGlnaHRfY29udHJvbAorRGF0ZToJCU9jdG9iZXIgMjAxMworQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglXaGVuIHdyaXR0ZW4sIHRoaXMgZmlsZSBsZXRzIG9uZSBzd2l0Y2ggYmV0d2VlbiBzdG9yZWQgYW5kIGN1c3RvbQorCQlsaWdodCBzZXR0aW5ncy4KKwkJVGhpcyBhdHRyaWJ1dGUgaXMgb25seSB2YWxpZCBmb3IgdGhlIHBybyB2YXJpYW50LgorCQlUaGUgZGF0YSBoYXMgdG8gYmUgOCBieXRlcyBsb25nLgorCQlUaGlzIGZpbGUgaXMgd3JpdGVvbmx5LgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L3J5b3Mvcm9jY2F0cnlvczxtaW5vcj4vc3RvcmVkX2xpZ2h0cworRGF0ZToJCU9jdG9iZXIgMjAxMworQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglXaGVuIHdyaXR0ZW4sIHRoaXMgZmlsZSBsZXRzIG9uZSBzZXQgcGVyLWtleSBsaWdodGluZyBmb3IgZGlmZmVyZW50CisJCWxheWVycy4KKwkJVGhpcyBhdHRyaWJ1dGUgaXMgb25seSB2YWxpZCBmb3IgdGhlIHBybyB2YXJpYW50LgorCQlUaGUgZGF0YSBoYXMgdG8gYmUgMTM4MiBieXRlcyBsb25nLgorCQlCZWZvcmUgcmVhZGluZyB0aGlzIGZpbGUsIGNvbnRyb2wgaGFzIHRvIGJlIHdyaXR0ZW4gdG8gc2VsZWN0CisJCXdoaWNoIHByb2ZpbGUgdG8gcmVhZC4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9yeW9zL3JvY2NhdHJ5b3M8bWlub3I+L2N1c3RvbV9saWdodHMKK0RhdGU6CQlPY3RvYmVyIDIwMTMKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJV2hlbiB3cml0dGVuLCB0aGlzIGZpbGUgbGV0cyBvbmUgc2V0IHRoZSBhY3R1YWwgcGVyLWtleSBsaWdodGluZy4KKwkJVGhpcyBhdHRyaWJ1dGUgaXMgb25seSB2YWxpZCBmb3IgdGhlIHBybyB2YXJpYW50LgorCQlUaGUgZGF0YSBoYXMgdG8gYmUgMjAgYnl0ZXMgbG9uZy4KKwkJVGhpcyBmaWxlIGlzIHdyaXRlb25seS4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9yeW9zL3JvY2NhdHJ5b3M8bWlub3I+L2xpZ2h0X21hY3JvCitEYXRlOgkJT2N0b2JlciAyMDEzCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVdoZW4gd3JpdHRlbiwgdGhpcyBmaWxlIGxldHMgb25lIHNldCBhIGxpZ2h0IG1hY3JvIHRoYXQgaXMgbG9vcGVkCisJCXdoZW5ldmVyIHRoZSBkZXZpY2UgZ2V0cyBpbiBkaW1uZXNzIG1vZGUuCisJCVRoaXMgYXR0cmlidXRlIGlzIG9ubHkgdmFsaWQgZm9yIHRoZSBwcm8gdmFyaWFudC4KKwkJVGhlIGRhdGEgaGFzIHRvIGJlIDIwMDIgYnl0ZXMgbG9uZy4KKwkJQmVmb3JlIHJlYWRpbmcgdGhpcyBmaWxlLCBjb250cm9sIGhhcyB0byBiZSB3cml0dGVuIHRvIHNlbGVjdAorCQl3aGljaCBwcm9maWxlIHRvIHJlYWQuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS9vYnNvbGV0ZS9zeXNmcy1kcml2ZXItaGlkLXJvY2NhdC1zYXZ1IGIvRG9jdW1lbnRhdGlvbi9BQkkvb2Jzb2xldGUvc3lzZnMtZHJpdmVyLWhpZC1yb2NjYXQtc2F2dQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWUwMmE5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvb2Jzb2xldGUvc3lzZnMtZHJpdmVyLWhpZC1yb2NjYXQtc2F2dQpAQCAtMCwwICsxLDc2IEBACitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L3NhdnUvcm9jY2F0c2F2dTxtaW5vcj4vYnV0dG9ucworRGF0ZToJCU1haSAyMDEyCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVRoZSBtb3VzZSBjYW4gc3RvcmUgNSBwcm9maWxlcyB3aGljaCBjYW4gYmUgc3dpdGNoZWQgYnkgdGhlCisJCXByZXNzIG9mIGEgYnV0dG9uLiBBIHByb2ZpbGUgaXMgc3BsaXQgaW50byBnZW5lcmFsIHNldHRpbmdzIGFuZAorCQlidXR0b24gc2V0dGluZ3MuIGJ1dHRvbnMgaG9sZHMgaW5mb3JtYXRpb25zIGFib3V0IGJ1dHRvbiBsYXlvdXQuCisJCVdoZW4gd3JpdHRlbiwgdGhpcyBmaWxlIGxldHMgb25lIHdyaXRlIHRoZSByZXNwZWN0aXZlIHByb2ZpbGUKKwkJYnV0dG9ucyB0byB0aGUgbW91c2UuIFRoZSBkYXRhIGhhcyB0byBiZSA0NyBieXRlcyBsb25nLgorCQlUaGUgbW91c2Ugd2lsbCByZWplY3QgaW52YWxpZCBkYXRhLgorCQlXaGljaCBwcm9maWxlIHRvIHdyaXRlIGlzIGRldGVybWluZWQgYnkgdGhlIHByb2ZpbGUgbnVtYmVyCisJCWNvbnRhaW5lZCBpbiB0aGUgZGF0YS4KKwkJQmVmb3JlIHJlYWRpbmcgdGhpcyBmaWxlLCBjb250cm9sIGhhcyB0byBiZSB3cml0dGVuIHRvIHNlbGVjdAorCQl3aGljaCBwcm9maWxlIHRvIHJlYWQuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vc2F2dS9yb2NjYXRzYXZ1PG1pbm9yPi9jb250cm9sCitEYXRlOgkJTWFpIDIwMTIKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJV2hlbiB3cml0dGVuLCB0aGlzIGZpbGUgbGV0cyBvbmUgc2VsZWN0IHdoaWNoIGRhdGEgZnJvbSB3aGljaAorCQlwcm9maWxlIHdpbGwgYmUJcmVhZCBuZXh0LiBUaGUgZGF0YSBoYXMgdG8gYmUgMyBieXRlcyBsb25nLgorCQlUaGlzIGZpbGUgaXMgd3JpdGVvbmx5LgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L3NhdnUvcm9jY2F0c2F2dTxtaW5vcj4vZ2VuZXJhbAorRGF0ZToJCU1haSAyMDEyCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVRoZSBtb3VzZSBjYW4gc3RvcmUgNSBwcm9maWxlcyB3aGljaCBjYW4gYmUgc3dpdGNoZWQgYnkgdGhlCisJCXByZXNzIG9mIGEgYnV0dG9uLiBBIHByb2ZpbGUgaXMgc3BsaXQgaW50byBnZW5lcmFsIHNldHRpbmdzIGFuZAorCQlidXR0b24gc2V0dGluZ3MuIHByb2ZpbGUgaG9sZHMgaW5mb3JtYXRpb25zIGxpa2UgcmVzb2x1dGlvbiwgc2Vuc2l0aXZpdHkKKwkJYW5kIGxpZ2h0IGVmZmVjdHMuCisJCVdoZW4gd3JpdHRlbiwgdGhpcyBmaWxlIGxldHMgb25lIHdyaXRlIHRoZSByZXNwZWN0aXZlIHByb2ZpbGUKKwkJc2V0dGluZ3MgYmFjayB0byB0aGUgbW91c2UuIFRoZSBkYXRhIGhhcyB0byBiZSA0MyBieXRlcyBsb25nLgorCQlUaGUgbW91c2Ugd2lsbCByZWplY3QgaW52YWxpZCBkYXRhLgorCQlXaGljaCBwcm9maWxlIHRvIHdyaXRlIGlzIGRldGVybWluZWQgYnkgdGhlIHByb2ZpbGUgbnVtYmVyCisJCWNvbnRhaW5lZCBpbiB0aGUgZGF0YS4KKwkJVGhpcyBmaWxlIGlzIHdyaXRlb25seS4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9zYXZ1L3JvY2NhdHNhdnU8bWlub3I+L2luZm8KK0RhdGU6CQlNYWkgMjAxMgorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglXaGVuIHJlYWQsIHRoaXMgZmlsZSByZXR1cm5zIGdlbmVyYWwgZGF0YSBsaWtlIGZpcm13YXJlIHZlcnNpb24uCisJCVdoZW4gd3JpdHRlbiwgdGhlIGRldmljZSBjYW4gYmUgcmVzZXQuCisJCVRoZSBkYXRhIGlzIDggYnl0ZXMgbG9uZy4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9zYXZ1L3JvY2NhdHNhdnU8bWlub3I+L21hY3JvCitEYXRlOgkJTWFpIDIwMTIKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJV2hlbiB3cml0dGVuLCB0aGlzIGZpbGUgbGV0cyBvbmUgc3RvcmUgbWFjcm9zIHdpdGggbWF4IDUwMAorCQlrZXlzdHJva2VzIGZvciBhIHNwZWNpZmljIGJ1dHRvbiBmb3IgYSBzcGVjaWZpYyBwcm9maWxlLgorCQlCdXR0b24gYW5kIHByb2ZpbGUgbnVtYmVycyBhcmUgaW5jbHVkZWQgaW4gd3JpdHRlbiBkYXRhLgorCQlUaGUgZGF0YSBoYXMgdG8gYmUgMjA4MyBieXRlcyBsb25nLgorCQlCZWZvcmUgcmVhZGluZyB0aGlzIGZpbGUsIGNvbnRyb2wgaGFzIHRvIGJlIHdyaXR0ZW4gdG8gc2VsZWN0CisJCXdoaWNoIHByb2ZpbGUgYW5kIGtleSB0byByZWFkLgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L3NhdnUvcm9jY2F0c2F2dTxtaW5vcj4vcHJvZmlsZQorRGF0ZToJCU1haSAyMDEyCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVRoZSBtb3VzZSBjYW4gc3RvcmUgNSBwcm9maWxlcyB3aGljaCBjYW4gYmUgc3dpdGNoZWQgYnkgdGhlCisJCXByZXNzIG9mIGEgYnV0dG9uLiBwcm9maWxlIGhvbGRzIG51bWJlciBvZiBhY3R1YWwgcHJvZmlsZS4KKwkJVGhpcyB2YWx1ZSBpcyBwZXJzaXN0ZW50LCBzbyBpdHMgdmFsdWUgZGV0ZXJtaW5lcyB0aGUgcHJvZmlsZQorCQl0aGF0J3MgYWN0aXZlIHdoZW4gdGhlIG1vdXNlIGlzIHBvd2VyZWQgb24gbmV4dCB0aW1lLgorCQlXaGVuIHdyaXR0ZW4sIHRoZSBtb3VzZSBhY3RpdmF0ZXMgdGhlIHNldCBwcm9maWxlIGltbWVkaWF0ZWx5LgorCQlUaGUgZGF0YSBoYXMgdG8gYmUgMyBieXRlcyBsb25nLgorCQlUaGUgbW91c2Ugd2lsbCByZWplY3QgaW52YWxpZCBkYXRhLgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L3NhdnUvcm9jY2F0c2F2dTxtaW5vcj4vc2Vuc29yCitEYXRlOgkJSnVseSAyMDEyCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVRoZSBtb3VzZSBoYXMgYSBBdmFnbyBBRE5TLTMwOTAgc2Vuc29yLgorCQlUaGlzIGZpbGUgYWxsb3dzIHJlYWRpbmcgYW5kIHdyaXRpbmcgb2YgdGhlIG1vdXNlIHNlbnNvcnMgcmVnaXN0ZXJzLgorCQlUaGUgZGF0YSBoYXMgdG8gYmUgNCBieXRlcyBsb25nLgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvcmVtb3ZlZC9kZXZmcyBiL0RvY3VtZW50YXRpb24vQUJJL3JlbW92ZWQvZGV2ZnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAyMGM0OQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3JlbW92ZWQvZGV2ZnMKQEAgLTAsMCArMSwxMiBAQAorV2hhdDoJCWRldmZzCitEYXRlOgkJSnVseSAyMDA1IChzY2hlZHVsZWQpLCBmaW5hbGx5IHJlbW92ZWQgaW4ga2VybmVsIHYyLjYuMTgKK0NvbnRhY3Q6CUdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitEZXNjcmlwdGlvbjoKKwlkZXZmcyBoYXMgYmVlbiB1bm1haW50YWluZWQgZm9yIGEgbnVtYmVyIG9mIHllYXJzLCBoYXMgdW5maXhhYmxlCisJcmFjZXMsIGNvbnRhaW5zIGEgbmFtaW5nIHBvbGljeSB3aXRoaW4gdGhlIGtlcm5lbCB0aGF0IGlzCisJYWdhaW5zdCB0aGUgTFNCLCBhbmQgY2FuIGJlIHJlcGxhY2VkIGJ5IHVzaW5nIHVkZXYuCisJVGhlIGZpbGVzIGZzL2RldmZzLyosIGluY2x1ZGUvbGludXgvZGV2ZnNfZnMqLmggd2VyZSByZW1vdmVkLAorCWFsb25nIHdpdGggdGhlIGFzc29ydGVkIGRldmZzIGZ1bmN0aW9uIGNhbGxzIHRocm91Z2hvdXQgdGhlCisJa2VybmVsIHRyZWUuCisKK1VzZXJzOgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvcmVtb3ZlZC9kdjEzOTQgYi9Eb2N1bWVudGF0aW9uL0FCSS9yZW1vdmVkL2R2MTM5NApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjMxMGI2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvcmVtb3ZlZC9kdjEzOTQKQEAgLTAsMCArMSwxNCBAQAorV2hhdDoJCWR2MTM5NCAoYS5rLmEuICJPSENJLURWIEkvTyBzdXBwb3J0IiBmb3IgRmlyZVdpcmUpCitEYXRlOgkJTWF5IDIwMTAgKHNjaGVkdWxlZCksIGZpbmFsbHkgcmVtb3ZlZCBpbiBrZXJuZWwgdjIuNi4zNworQ29udGFjdDoJbGludXgxMzk0LWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAorRGVzY3JpcHRpb246CisJL2Rldi9kdjEzOTQvKiB3ZXJlIGNoYXJhY3RlciBkZXZpY2UgZmlsZXMsIG9uZSBmb3IgZWFjaCBGaXJlV2lyZQorCWNvbnRyb2xsZXIgYW5kIGZvciBOVFNDIGFuZCBQQUwgcmVzcGVjdGl2ZWx5LCBmcm9tIHdoaWNoIERWIGRhdGEKKwljb3VsZCBiZSByZWNlaXZlZCBieSByZWFkKCkgb3IgdHJhbnNtaXR0ZWQgYnkgd3JpdGUoKS4gIEEgZmV3CisJaW9jdGwoKXMgYWxsb3dlZCBsaW1pdGVkIGNvbnRyb2wuCisJVGhpcyBzcGVjaWFsLXB1cnBvc2UgaW50ZXJmYWNlIGhhcyBiZWVuIHN1cGVyc2VkZWQgYnkgbGlicmF3MTM5NCArCisJbGliaWVjNjE4ODMgd2hpY2ggYXJlIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50LCBzdXBwb3J0IEhEViwgYW5kCisJdHJhbnNwYXJlbnRseSB3b3JrIG9uIHRvcCBvZiB0aGUgbmV3ZXIgZmlyZXdpcmUga2VybmVsIGRyaXZlcnMuCisKK1VzZXJzOgorCWZmbXBlZy9saWJhdmZvcm1hdCAoaWYgY29uZmlndXJlZCBmb3IgRFYxMzk0KQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvcmVtb3ZlZC9pcF9xdWV1ZSBiL0RvY3VtZW50YXRpb24vQUJJL3JlbW92ZWQvaXBfcXVldWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI0MzYxMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3JlbW92ZWQvaXBfcXVldWUKQEAgLTAsMCArMSw5IEBACitXaGF0OgkJaXBfcXVldWUKK0RhdGU6CQlmaW5hbGx5IHJlbW92ZWQgaW4ga2VybmVsIHYzLjUuMAorQ29udGFjdDoJUGFibG8gTmVpcmEgQXl1c28gPHBhYmxvQG5ldGZpbHRlci5vcmc+CitEZXNjcmlwdGlvbjoKKwlpcF9xdWV1ZSBoYXMgYmVlbiByZXBsYWNlZCBieSBuZm5ldGxpbmtfcXVldWUgd2hpY2ggcHJvdmlkZXMKKwltb3JlIGFkdmFuY2VkIHF1ZXVlaW5nIG1lY2hhbmlzbSB0byB1c2VyLXNwYWNlLiBUaGUgaXBfcXVldWUKKwltb2R1bGUgd2FzIGFscmVhZHkgYW5ub3VuY2VkIHRvIGJlY29tZSBvYnNvbGV0ZSB5ZWFycyBhZ28uCisKK1VzZXJzOgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvcmVtb3ZlZC9uZXRfZG1hIGIvRG9jdW1lbnRhdGlvbi9BQkkvcmVtb3ZlZC9uZXRfZG1hCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExNzNhZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS9yZW1vdmVkL25ldF9kbWEKQEAgLTAsMCArMSw4IEBACitXaGF0OgkJdGNwX2RtYV9jb3B5YnJlYWsgc3lzY3RsCitEYXRlOgkJUmVtb3ZlZCBpbiBrZXJuZWwgdjMuMTMKK0NvbnRhY3Q6CURhbiBXaWxsaWFtcyA8ZGFuLmoud2lsbGlhbXNAaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJRm9ybWVybHkgdGhlIGxvd2VyIGxpbWl0LCBpbiBieXRlcywgb2YgdGhlIHNpemUgb2Ygc29ja2V0IHJlYWRzCisJdGhhdCB3aWxsIGJlIG9mZmxvYWRlZCB0byBhIERNQSBjb3B5IGVuZ2luZS4gIFJlbW92ZWQgZHVlIHRvCisJY29oZXJlbmN5IGlzc3VlcyBvZiB0aGUgY3B1IHBvdGVudGlhbGx5IHRvdWNoaW5nIHRoZSBidWZmZXJzCisJd2hpbGUgZG1hIGlzIGluIGZsaWdodC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3JlbW92ZWQvbzJjYiBiL0RvY3VtZW50YXRpb24vQUJJL3JlbW92ZWQvbzJjYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGM5MWFkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvcmVtb3ZlZC9vMmNiCkBAIC0wLDAgKzEsMTAgQEAKK1doYXQ6CQkvc3lzL28yY2Igc3ltbGluaworRGF0ZToJCU1heSAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjAKK0NvbnRhY3Q6CW9jZnMyLWRldmVsQG9zcy5vcmFjbGUuY29tCitEZXNjcmlwdGlvbjoJVGhpcyBpcyBhIHN5bWxpbms6IC9zeXMvbzJjYiB0byAvc3lzL2ZzL28yY2IuIFRoZSBzeW1saW5rIGlzCisJCXJlbW92ZWQgd2hlbiBuZXcgdmVyc2lvbnMgb2Ygb2NmczItdG9vbHMgd2hpY2gga25vdyB0byBsb29rCisJCWluIC9zeXMvZnMvbzJjYiBhcmUgc3VmZmljaWVudGx5IHByZXZhbGVudC4gRG9uJ3QgY29kZSBuZXcKKwkJc29mdHdhcmUgdG8gbG9vayBoZXJlLCBpdCBzaG91bGQgdHJ5IC9zeXMvZnMvbzJjYiBpbnN0ZWFkLgorVXNlcnM6CQlvY2ZzMi10b29scy4gSXQncyBzdWZmaWNpZW50IHRvIG1haWwgcHJvcG9zZWQgY2hhbmdlcyB0bworCQlvY2ZzMi1kZXZlbEBvc3Mub3JhY2xlLmNvbS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3JlbW92ZWQvcmF3MTM5NCBiL0RvY3VtZW50YXRpb24vQUJJL3JlbW92ZWQvcmF3MTM5NApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzMzM2U2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvcmVtb3ZlZC9yYXcxMzk0CkBAIC0wLDAgKzEsMTUgQEAKK1doYXQ6CQlyYXcxMzk0IChhLmsuYS4gIlJhdyBJRUVFMTM5NCBJL08gc3VwcG9ydCIgZm9yIEZpcmVXaXJlKQorRGF0ZToJCU1heSAyMDEwIChzY2hlZHVsZWQpLCBmaW5hbGx5IHJlbW92ZWQgaW4ga2VybmVsIHYyLjYuMzcKK0NvbnRhY3Q6CWxpbnV4MTM5NC1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKK0Rlc2NyaXB0aW9uOgorCS9kZXYvcmF3MTM5NCB3YXMgYSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGUgdGhhdCBhbGxvd2VkIGxvdy1sZXZlbAorCWFjY2VzcyB0byBGaXJlV2lyZSBidXNlcy4gIEl0cyBtYWpvciBkcmF3YmFja3Mgd2VyZSBpdHMgaW5hYmlsaXR5CisJdG8gaW1wbGVtZW50IHNlbnNpYmxlIGRldmljZSBzZWN1cml0eSBwb2xpY2llcywgYW5kIGl0cyBsb3cgbGV2ZWwKKwlvZiBhYnN0cmFjdGlvbiB0aGF0IHJlcXVpcmVkIHVzZXJzcGFjZSBjbGllbnRzIHRvIGR1cGxpY2F0ZSBtdWNoCisJb2YgdGhlIGtlcm5lbCdzIGllZWUxMzk0IGNvcmUgZnVuY3Rpb25hbGl0eS4KKwlSZXBsYWNlZCBieSAvZGV2L2Z3KiwgaS5lLiB0aGUgPGxpbnV4L2ZpcmV3aXJlLWNkZXYuaD4gQUJJIG9mCisJZmlyZXdpcmUtY29yZS4KKworVXNlcnM6CisJbGlicmF3MTM5NCAod29ya3Mgd2l0aCBmaXJld2lyZS1jZGV2IHRvbywgdHJhbnNwYXJlbnQgdG8gbGlicmFyeSBBQkkKKwl1c2VycykKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3JlbW92ZWQvdmlkZW8xMzk0IGIvRG9jdW1lbnRhdGlvbi9BQkkvcmVtb3ZlZC92aWRlbzEzOTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM5YzI1YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3JlbW92ZWQvdmlkZW8xMzk0CkBAIC0wLDAgKzEsMTYgQEAKK1doYXQ6CQl2aWRlbzEzOTQgKGEuay5hLiAiT0hDSS0xMzk0IFZpZGVvIHN1cHBvcnQiIGZvciBGaXJlV2lyZSkKK0RhdGU6CQlNYXkgMjAxMCAoc2NoZWR1bGVkKSwgZmluYWxseSByZW1vdmVkIGluIGtlcm5lbCB2Mi42LjM3CitDb250YWN0OglsaW51eDEzOTQtZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0CitEZXNjcmlwdGlvbjoKKwkvZGV2L3ZpZGVvMTM5NC8qIHdlcmUgY2hhcmFjdGVyIGRldmljZSBmaWxlcywgb25lIGZvciBlYWNoIEZpcmVXaXJlCisJY29udHJvbGxlciwgd2hpY2ggd2VyZSB1c2VkIGZvciBpc29jaHJvbm91cyBJL08uICBJdCB3YXMgYWRkZWQgYXMgYW4KKwlhbHRlcm5hdGl2ZSB0byByYXcxMzk0J3MgaXNvY2hyb25vdXMgSS9PIGZ1bmN0aW9uYWxpdHkgd2hpY2ggaGFkCisJcGVyZm9ybWFuY2UgaXNzdWVzIGluIGl0cyBmaXJzdCBnZW5lcmF0aW9uLiAgQW55IHZpZGVvMTM5NCB1c2VyIGhhZAorCXRvIHVzZSByYXcxMzk0ICsgbGlicmF3MTM5NCB0b28gYmVjYXVzZSB2aWRlbzEzOTQgZGlkIG5vdCBwcm92aWRlCisJYXN5bmNocm9ub3VzIEkvTyBmb3IgZGV2aWNlIGRpc2NvdmVyeSBhbmQgY29uZmlndXJhdGlvbi4KKwlSZXBsYWNlZCBieSAvZGV2L2Z3KiwgaS5lLiB0aGUgPGxpbnV4L2ZpcmV3aXJlLWNkZXYuaD4gQUJJIG9mCisJZmlyZXdpcmUtY29yZS4KKworVXNlcnM6CisJbGliZGMxMzk0ICh3b3JrcyB3aXRoIGZpcmV3aXJlLWNkZXYgdG9vLCB0cmFuc3BhcmVudCB0byBsaWJyYXJ5IEFCSQorCXVzZXJzKQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL2ZpcmV3aXJlLWNkZXYgYi9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvZmlyZXdpcmUtY2RldgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNmQwMzA4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL2ZpcmV3aXJlLWNkZXYKQEAgLTAsMCArMSwxMDMgQEAKK1doYXQ6CQkvZGV2L2Z3WzAtOV0rCitEYXRlOgkJTWF5IDIwMDcKK0tlcm5lbFZlcnNpb246CTIuNi4yMgorQ29udGFjdDoJbGludXgxMzk0LWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAorRGVzY3JpcHRpb246CisJCVRoZSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVzIC9kZXYvZncqIGFyZSB0aGUgaW50ZXJmYWNlIGJldHdlZW4KKwkJZmlyZXdpcmUtY29yZSBhbmQgSUVFRSAxMzk0IGRldmljZSBkcml2ZXJzIGltcGxlbWVudGVkIGluCisJCXVzZXJzcGFjZS4gIFRoZSBpb2N0bCgyKS0gYW5kIHJlYWQoMiktYmFzZWQgQUJJIGlzIGRlZmluZWQgYW5kCisJCWRvY3VtZW50ZWQgaW4gPGxpbnV4L2ZpcmV3aXJlLWNkZXYuaD4uCisKKwkJVGhpcyBBQkkgb2ZmZXJzIG1vc3Qgb2YgdGhlIGZlYXR1cmVzIHdoaWNoIGZpcmV3aXJlLWNvcmUgYWxzbworCQlleHBvc2VzIHRvIGtlcm5lbHNwYWNlIElFRUUgMTM5NCBkcml2ZXJzLgorCisJCUVhY2ggL2Rldi9mdyogaXMgYXNzb2NpYXRlZCB3aXRoIG9uZSBJRUVFIDEzOTQgbm9kZSwgd2hpY2ggY2FuCisJCWJlIHJlbW90ZSBvciBsb2NhbCBub2Rlcy4gIE9wZXJhdGlvbnMgb24gYSAvZGV2L2Z3KiBmaWxlIGhhdmUKKwkJZGlmZmVyZW50IHNjb3BlOgorCQkgIC0gVGhlIDEzOTQgbm9kZSB3aGljaCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGU6CisJCQkgIC0gQXN5bmNocm9ub3VzIHJlcXVlc3QgdHJhbnNtaXNzaW9uCisJCQkgIC0gR2V0IHRoZSBDb25maWd1cmF0aW9uIFJPTQorCQkJICAtIFF1ZXJ5IG5vZGUgSUQKKwkJCSAgLSBRdWVyeSBtYXhpbXVtIHNwZWVkIG9mIHRoZSBwYXRoIGJldHdlZW4gdGhpcyBub2RlCisJCQkgICAgYW5kIGxvY2FsIG5vZGUKKwkJICAtIFRoZSAxMzk0IGJ1cyAoaS5lLiAiY2FyZCIpIHRvIHdoaWNoIHRoZSBub2RlIGlzIGF0dGFjaGVkIHRvOgorCQkJICAtIElzb2Nocm9ub3VzIHN0cmVhbSB0cmFuc21pc3Npb24gYW5kIHJlY2VwdGlvbgorCQkJICAtIEFzeW5jaHJvbm91cyBzdHJlYW0gdHJhbnNtaXNzaW9uIGFuZCByZWNlcHRpb24KKwkJCSAgLSBBc3luY2hyb25vdXMgYnJvYWRjYXN0IHJlcXVlc3QgdHJhbnNtaXNzaW9uCisJCQkgIC0gUEhZIHBhY2tldCB0cmFuc21pc3Npb24gYW5kIHJlY2VwdGlvbgorCQkJICAtIEFsbG9jYXRlLCByZWFsbG9jYXRlLCBkZWFsbG9jYXRlIGlzb2Nocm9ub3VzCisJCQkgICAgcmVzb3VyY2VzIChjaGFubmVscywgYmFuZHdpZHRoKSBhdCB0aGUgYnVzJ3MgSVJNCisJCQkgIC0gUXVlcnkgbm9kZSBJRHMgb2YgbG9jYWwgbm9kZSwgcm9vdCBub2RlLCBJUk0sIGJ1cworCQkJICAgIG1hbmFnZXIKKwkJCSAgLSBRdWVyeSBjeWNsZSB0aW1lCisJCQkgIC0gQnVzIHJlc2V0IGluaXRpYXRpb24sIGJ1cyByZXNldCBldmVudCByZWNlcHRpb24KKwkJICAtIEFsbCAxMzk0IGJ1c2VzOgorCQkJICAtIEFsbG9jYXRpb24gb2YgSUVFRSAxMjEyIGFkZHJlc3MgcmFuZ2VzIG9uIHRoZSBsb2NhbAorCQkJICAgIGxpbmsgbGF5ZXJzLCByZWNlcHRpb24gb2YgaW5ib3VuZCByZXF1ZXN0cyB0byBzdWNoCisJCQkgICAgYW4gYWRkcmVzcyByYW5nZSwgYXN5bmNocm9ub3VzIHJlc3BvbnNlIHRyYW5zbWlzc2lvbgorCQkJICAgIHRvIGluYm91bmQgcmVxdWVzdHMKKwkJCSAgLSBBZGRpdGlvbiBvZiBkZXNjcmlwdG9ycyBvciBkaXJlY3RvcmllcyB0byB0aGUgbG9jYWwKKwkJCSAgICBub2RlcycgQ29uZmlndXJhdGlvbiBST00KKworCQlEdWUgdG8gdGhlIGRpZmZlcmVudCBzY29wZSBvZiBvcGVyYXRpb25zIGFuZCBpbiBvcmRlciB0byBsZXQKKwkJdXNlcmxhbmQgaW1wbGVtZW50IGRpZmZlcmVudCBhY2Nlc3MgcGVybWlzc2lvbiBtb2RlbHMsIHNvbWUKKwkJb3BlcmF0aW9ucyBhcmUgcmVzdHJpY3RlZCB0byAvZGV2L2Z3KiBmaWxlcyB0aGF0IGFyZSBhc3NvY2lhdGVkCisJCXdpdGggYSBsb2NhbCBub2RlOgorCQkJICAtIEFkZGl0aW9uIG9mIGRlc2NyaXB0b3JzIG9yIGRpcmVjdG9yaWVzIHRvIHRoZSBsb2NhbAorCQkJICAgIG5vZGVzJyBDb25maWd1cmF0aW9uIFJPTQorCQkJICAtIFBIWSBwYWNrZXQgdHJhbnNtaXNzaW9uIGFuZCByZWNlcHRpb24KKworCQlBIC9kZXYvZncqIGZpbGUgcmVtYWlucyBhc3NvY2lhdGVkIHdpdGggb25lIHBhcnRpY3VsYXIgbm9kZQorCQlkdXJpbmcgaXRzIGVudGlyZSBsaWZlIHRpbWUuICBCdXMgdG9wb2xvZ3kgY2hhbmdlcywgYW5kIGhlbmNlCisJCW5vZGUgSUQgY2hhbmdlcywgYXJlIHRyYWNrZWQgYnkgZmlyZXdpcmUtY29yZS4gIEFCSSB1c2VycyBkbyBub3QKKwkJbmVlZCB0byBiZSBhd2FyZSBvZiB0b3BvbG9neS4KKworCQlUaGUgZm9sbG93aW5nIGZpbGUgb3BlcmF0aW9ucyBhcmUgc3VwcG9ydGVkOgorCisJCW9wZW4oMikKKwkJQ3VycmVudGx5IHRoZSBvbmx5IHVzZWZ1bCBmbGFncyBhcmUgT19SRFdSLgorCisJCWlvY3RsKDIpCisJCUluaXRpYXRlIHZhcmlvdXMgYWN0aW9ucy4gIFNvbWUgdGFrZSBpbW1lZGlhdGUgZWZmZWN0LCBvdGhlcnMKKwkJYXJlIHBlcmZvcm1lZCBhc3luY2hyb25vdXNseSB3aGlsZSBvciBhZnRlciB0aGUgaW9jdGwgcmV0dXJucy4KKwkJU2VlIHRoZSBpbmxpbmUgZG9jdW1lbnRhdGlvbiBpbiA8bGludXgvZmlyZXdpcmUtY2Rldi5oPiBmb3IKKwkJZGVzY3JpcHRpb25zIG9mIGFsbCBpb2N0bHMuCisKKwkJcG9sbCgyKSwgc2VsZWN0KDIpLCBlcG9sbF93YWl0KDIpIGV0Yy4KKwkJV2F0Y2ggZm9yIGV2ZW50cyB0byBiZWNvbWUgYXZhaWxhYmxlIHRvIGJlIHJlYWQuCisKKwkJcmVhZCgyKQorCQlSZWNlaXZlIHZhcmlvdXMgZXZlbnRzLiAgVGhlcmUgYXJlIHNvbGljaXRlZCBldmVudHMgbGlrZQorCQlvdXRib3VuZCBhc3luY2hyb25vdXMgdHJhbnNhY3Rpb24gY29tcGxldGlvbiBvciBpc29jaHJvbm91cworCQlidWZmZXIgY29tcGxldGlvbiwgYW5kIHVuc29saWNpdGVkIGV2ZW50cyBzdWNoIGFzIGJ1cyByZXNldHMsCisJCXJlcXVlc3QgcmVjZXB0aW9uLCBvciBQSFkgcGFja2V0IHJlY2VwdGlvbi4gIEFsd2F5cyB1c2UgYSByZWFkCisJCWJ1ZmZlciB3aGljaCBpcyBsYXJnZSBlbm91Z2ggdG8gcmVjZWl2ZSB0aGUgbGFyZ2VzdCBldmVudCB0aGF0CisJCWNvdWxkIGV2ZXIgYXJyaXZlLiAgU2VlIDxsaW51eC9maXJld2lyZS1jZGV2Lmg+IGZvciBkZXNjcmlwdGlvbnMKKwkJb2YgYWxsIGV2ZW50IHR5cGVzIGFuZCBmb3Igd2hpY2ggaW9jdGxzIGFmZmVjdCByZWNlcHRpb24gb2YKKwkJZXZlbnRzLgorCisJCW1tYXAoMikKKwkJQWxsb2NhdGUgYSBETUEgYnVmZmVyIGZvciBpc29jaHJvbm91cyByZWNlcHRpb24gb3IgdHJhbnNtaXNzaW9uCisJCWFuZCBtYXAgaXQgaW50byB0aGUgcHJvY2VzcyBhZGRyZXNzIHNwYWNlLiAgVGhlIGFyZ3VtZW50cyBzaG91bGQKKwkJYmUgdXNlZCBhcyBmb2xsb3dzOiAgYWRkciA9IE5VTEwsIGxlbmd0aCA9IHRoZSBkZXNpcmVkIGJ1ZmZlcgorCQlzaXplLCBpLmUuIG51bWJlciBvZiBwYWNrZXRzIHRpbWVzIHNpemUgb2YgbGFyZ2VzdCBwYWNrZXQsCisJCXByb3QgPSBhdCBsZWFzdCBQUk9UX1JFQUQgZm9yIHJlY2VwdGlvbiBhbmQgYXQgbGVhc3QgUFJPVF9XUklURQorCQlmb3IgdHJhbnNtaXNzaW9uLCBmbGFncyA9IE1BUF9TSEFSRUQsIGZkID0gdGhlIGhhbmRsZSB0byB0aGUKKwkJL2Rldi9mdyosIG9mZnNldCA9IDAuCisKKwkJSXNvY2hyb25vdXMgcmVjZXB0aW9uIHdvcmtzIGluIHBhY2tldC1wZXItYnVmZmVyIGZhc2hpb24gZXhjZXB0CisJCWZvciBtdWx0aWNoYW5uZWwgcmVjZXB0aW9uIHdoaWNoIHdvcmtzIGluIGJ1ZmZlci1maWxsIG1vZGUuCisKKwkJbXVubWFwKDIpCisJCVVubWFwIHRoZSBpc29jaHJvbm91cyBJL08gYnVmZmVyIGZyb20gdGhlIHByb2Nlc3MgYWRkcmVzcyBzcGFjZS4KKworCQljbG9zZSgyKQorCQlCZXNpZGVzIHN0b3BwaW5nIGFuZCBmcmVlaW5nIEkvTyBjb250ZXh0cyB0aGF0IHdlcmUgYXNzb2NpYXRlZAorCQl3aXRoIHRoZSBmaWxlIGRlc2NyaXB0b3IsIGJhY2sgb3V0IGFueSBjaGFuZ2VzIHRvIHRoZSBsb2NhbAorCQlub2RlcycgQ29uZmlndXJhdGlvbiBST00uICBEZWFsbG9jYXRlIGlzb2Nocm9ub3VzIGNoYW5uZWxzIGFuZAorCQliYW5kd2lkdGggYXQgdGhlIElSTSB0aGF0IHdlcmUgbWFya2VkIGZvciBrZXJuZWwtYXNzaXN0ZWQKKwkJcmUtIGFuZCBkZWFsbG9jYXRpb24uCisKK1VzZXJzOgkJbGlicmF3MTM5NAorCQlsaWJkYzEzOTQKKwkJdG9vbHMgbGlrZSBqdWp1dXRpbHMsIGZ3aGFjaywgLi4uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvbzJjYiBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9vMmNiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlYjE1NDUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvbzJjYgpAQCAtMCwwICsxLDEwIEBACitXaGF0OgkJL3N5cy9mcy9vMmNiLyAod2FzIC9zeXMvbzJjYikKK0RhdGU6CQlEZWMgMjAwNQorS2VybmVsVmVyc2lvbjoJMi42LjE2CitDb250YWN0OglvY2ZzMi1kZXZlbEBvc3Mub3JhY2xlLmNvbQorRGVzY3JpcHRpb246CU9jZnMyLXRvb2xzIGxvb2tzIGF0ICdpbnRlcmZhY2UtcmV2aXNpb24nIGZvciB2ZXJzaW9uaW5nCisJCWluZm9ybWF0aW9uLiBFYWNoIGxvZ21hc2svIGZpbGUgY29udHJvbHMgYSBzZXQgb2YgZGVidWcgcHJpbnRzCisJCWFuZCBjYW4gYmUgd3JpdHRlbiBpbnRvIHdpdGggdGhlIHN0cmluZ3MgImFsbG93IiwgImRlbnkiLCBvcgorCQkib2ZmIi4gUmVhZGluZyB0aGUgZmlsZSByZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlLgorVXNlcnM6CQlvY2ZzMi10b29scy4gSXQncyBzdWZmaWNpZW50IHRvIG1haWwgcHJvcG9zZWQgY2hhbmdlcyB0bworCQlvY2ZzMi1kZXZlbEBvc3Mub3JhY2xlLmNvbS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNjYWxscyBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNjYWxscwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2FlM2U3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2NhbGxzCkBAIC0wLDAgKzEsMTAgQEAKK1doYXQ6CQlUaGUga2VybmVsIHN5c2NhbGwgaW50ZXJmYWNlCitEZXNjcmlwdGlvbjoKKwlUaGlzIGludGVyZmFjZSBtYXRjaGVzIG11Y2ggb2YgdGhlIFBPU0lYIGludGVyZmFjZSBhbmQgaXMgYmFzZWQKKwlvbiBpdCBhbmQgb3RoZXIgVW5peCBiYXNlZCBpbnRlcmZhY2VzLiAgSXQgd2lsbCBvbmx5IGJlIGFkZGVkIHRvCisJb3ZlciB0aW1lLCBhbmQgbm90IGhhdmUgdGhpbmdzIHJlbW92ZWQgZnJvbSBpdC4KKworCU5vdGUgdGhhdCB0aGlzIGludGVyZmFjZSBpcyBkaWZmZXJlbnQgZm9yIGV2ZXJ5IGFyY2hpdGVjdHVyZQorCXRoYXQgTGludXggc3VwcG9ydHMuICBQbGVhc2Ugc2VlIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMKKwlkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzIG9uIHRoZSBzeXNjYWxsIG51bWJlcnMgdGhhdCBhcmUgdG8gYmUKKwltYXBwZWQgdG8gZWFjaCBzeXNjYWxsLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWFjcGktcG1wcm9maWxlIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWFjcGktcG1wcm9maWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2NGM3YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYWNwaS1wbXByb2ZpbGUKQEAgLTAsMCArMSwyMiBAQAorV2hhdDogCQkvc3lzL2Zpcm13YXJlL2FjcGkvcG1fcHJvZmlsZQorRGF0ZToJCTAzLU5vdi0yMDExCitLZXJuZWxWZXJzaW9uOgl2My4yCitDb250YWN0OglsaW51eC1hY3BpQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246IAlUaGUgQUNQSSBwbV9wcm9maWxlIHN5c2ZzIGludGVyZmFjZSBleHBvcnRzIHRoZSBwbGF0Zm9ybQorCQlwb3dlciBtYW5hZ2VtZW50IChhbmQgcGVyZm9ybWFuY2UpIHJlcXVpcmVtZW50IGV4cGVjdGF0aW9ucworCQlhcyBwcm92aWRlZCBieSBCSU9TLiBUaGUgaW50ZWdlciB2YWx1ZSBpcyBkaXJlY3RseSBwYXNzZWQgYXMKKwkJcmV0cmlldmVkIGZyb20gdGhlIEZBRFQgQUNQSSB0YWJsZS4KK1ZhbHVlczogICAgICAgICBGb3IgcG9zc2libGUgdmFsdWVzIHNlZSBBQ1BJIHNwZWNpZmljYXRpb246CisJCTUuMi45IEZpeGVkIEFDUEkgRGVzY3JpcHRpb24gVGFibGUgKEZBRFQpCisJCUZpZWxkOiBQcmVmZXJyZWRfUE1fUHJvZmlsZQorCisJCUN1cnJlbnRseSB0aGVzZSB2YWx1ZXMgYXJlIGRlZmluZWQgYnkgc3BlYzoKKwkJMCBVbnNwZWNpZmllZAorCQkxIERlc2t0b3AKKwkJMiBNb2JpbGUKKwkJMyBXb3Jrc3RhdGlvbgorCQk0IEVudGVycHJpc2UgU2VydmVyCisJCTUgU09ITyBTZXJ2ZXIKKwkJNiBBcHBsaWFuY2UgUEMKKwkJNyBQZXJmb3JtYW5jZSBTZXJ2ZXIKKwkJPjcgUmVzZXJ2ZWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1idXMtZmlyZXdpcmUgYi9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZpcmV3aXJlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxZTVhMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZpcmV3aXJlCkBAIC0wLDAgKzEsMTMzIEBACitXaGF0OgkJL3N5cy9idXMvZmlyZXdpcmUvZGV2aWNlcy9md1swLTldKy8KK0RhdGU6CQlNYXkgMjAwNworS2VybmVsVmVyc2lvbjoJMi42LjIyCitDb250YWN0OglsaW51eDEzOTQtZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0CitEZXNjcmlwdGlvbjoKKwkJSUVFRSAxMzk0IG5vZGUgZGV2aWNlIGF0dHJpYnV0ZXMuCisJCVJlYWQtb25seS4gIE11dGFibGUgZHVyaW5nIHRoZSBub2RlIGRldmljZSdzIGxpZmV0aW1lLgorCQlTZWUgSUVFRSAxMjEyIGZvciBzZW1hbnRpYyBkZWZpbml0aW9ucy4KKworCQljb25maWdfcm9tCisJCQlDb250ZW50cyBvZiB0aGUgQ29uZmlndXJhdGlvbiBST00gcmVnaXN0ZXIuCisJCQlCaW5hcnkgYXR0cmlidXRlOyBhbiBhcnJheSBvZiBob3N0LWVuZGlhbiB1MzIuCisKKwkJZ3VpZAorCQkJVGhlIG5vZGUncyBFVUktNjQgaW4gdGhlIGJ1cyBpbmZvcm1hdGlvbiBibG9jayBvZgorCQkJQ29uZmlndXJhdGlvbiBST00uCisJCQlIZXhhZGVjaW1hbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gdTY0LgorCisKK1doYXQ6CQkvc3lzL2J1cy9maXJld2lyZS9kZXZpY2VzL2Z3WzAtOV0rL3VuaXRzCitEYXRlOgkJSnVuZSAyMDA5CitLZXJuZWxWZXJzaW9uOgkyLjYuMzEKK0NvbnRhY3Q6CWxpbnV4MTM5NC1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKK0Rlc2NyaXB0aW9uOgorCQlJRUVFIDEzOTQgbm9kZSBkZXZpY2UgYXR0cmlidXRlLgorCQlSZWFkLW9ubHkuICBNdXRhYmxlIGR1cmluZyB0aGUgbm9kZSBkZXZpY2UncyBsaWZldGltZS4KKwkJU2VlIElFRUUgMTIxMiBmb3Igc2VtYW50aWMgZGVmaW5pdGlvbnMuCisKKwkJdW5pdHMKKwkJCVN1bW1hcnkgb2YgYWxsIHVuaXRzIHByZXNlbnQgaW4gYW4gSUVFRSAxMzk0IG5vZGUuCisJCQlDb250YWlucyBzcGFjZS1zZXBhcmF0ZWQgdHVwbGVzIG9mIHNwZWNpZmllcl9pZCBhbmQKKwkJCXZlcnNpb24gb2YgZWFjaCB1bml0IHByZXNlbnQgaW4gdGhlIG5vZGUuICBTcGVjaWZpZXJfaWQKKwkJCWFuZCB2ZXJzaW9uIGFyZSBoZXhhZGVjaW1hbCBzdHJpbmcgcmVwcmVzZW50YXRpb25zIG9mCisJCQl1MjQgb2YgdGhlIHJlc3BlY3RpdmUgdW5pdCBkaXJlY3RvcnkgZW50cmllcy4KKwkJCVNwZWNpZmllcl9pZCBhbmQgdmVyc2lvbiB3aXRoaW4gZWFjaCB0dXBsZSBhcmUgc2VwYXJhdGVkCisJCQlieSBhIGNvbG9uLgorCitVc2VyczoJCXVkZXYgcnVsZXMgdG8gc2V0IG93bmVyc2hpcCBhbmQgYWNjZXNzIHBlcm1pc3Npb25zIG9yIEFDTHMgb2YKKwkJL2Rldi9md1swLTldKyBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVzCisKKworV2hhdDoJCS9zeXMvYnVzL2ZpcmV3aXJlL2RldmljZXMvZndbMC05XSsvaXNfbG9jYWwKK0RhdGU6CQlKdWx5IDIwMTIKK0tlcm5lbFZlcnNpb246CTMuNgorQ29udGFjdDoJbGludXgxMzk0LWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAorRGVzY3JpcHRpb246CisJCUlFRUUgMTM5NCBub2RlIGRldmljZSBhdHRyaWJ1dGUuCisJCVJlYWQtb25seSBhbmQgaW1tdXRhYmxlLgorVmFsdWVzOgkJMTogVGhlIHN5c2ZzIGVudHJ5IHJlcHJlc2VudHMgYSBsb2NhbCBub2RlIChhIGNvbnRyb2xsZXIgY2FyZCkuCisJCTA6IFRoZSBzeXNmcyBlbnRyeSByZXByZXNlbnRzIGEgcmVtb3RlIG5vZGUuCisKKworV2hhdDoJCS9zeXMvYnVzL2ZpcmV3aXJlL2RldmljZXMvZndbMC05XStbLl1bMC05XSsvCitEYXRlOgkJTWF5IDIwMDcKK0tlcm5lbFZlcnNpb246CTIuNi4yMgorQ29udGFjdDoJbGludXgxMzk0LWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAorRGVzY3JpcHRpb246CisJCUlFRUUgMTM5NCB1bml0IGRldmljZSBhdHRyaWJ1dGVzLgorCQlSZWFkLW9ubHkuICBJbW11dGFibGUgZHVyaW5nIHRoZSB1bml0IGRldmljZSdzIGxpZmV0aW1lLgorCQlTZWUgSUVFRSAxMjEyIGZvciBzZW1hbnRpYyBkZWZpbml0aW9ucy4KKworCQltb2RhbGlhcworCQkJU2FtZSBhcyBNT0RBTElBUyBpbiB0aGUgdWV2ZW50IGF0IGRldmljZSBjcmVhdGlvbi4KKworCQlyb21faW5kZXgKKwkJCU9mZnNldCBvZiB0aGUgdW5pdCBkaXJlY3Rvcnkgd2l0aGluIHRoZSBwYXJlbnQgZGV2aWNlJ3MKKwkJCShub2RlIGRldmljZSdzKSBDb25maWd1cmF0aW9uIFJPTSwgaW4gcXVhZGxldHMuCisJCQlEZWNpbWFsIHN0cmluZyByZXByZXNlbnRhdGlvbi4KKworCitXaGF0OgkJL3N5cy9idXMvZmlyZXdpcmUvZGV2aWNlcy8qLworRGF0ZToJCU1heSAyMDA3CitLZXJuZWxWZXJzaW9uOgkyLjYuMjIKK0NvbnRhY3Q6CWxpbnV4MTM5NC1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKK0Rlc2NyaXB0aW9uOgorCQlBdHRyaWJ1dGVzIGNvbW1vbiB0byBJRUVFIDEzOTQgbm9kZSBkZXZpY2VzIGFuZCB1bml0IGRldmljZXMuCisJCVJlYWQtb25seS4gIE11dGFibGUgZHVyaW5nIHRoZSBub2RlIGRldmljZSdzIGxpZmV0aW1lLgorCQlJbW11dGFibGUgZHVyaW5nIHRoZSB1bml0IGRldmljZSdzIGxpZmV0aW1lLgorCQlTZWUgSUVFRSAxMjEyIGZvciBzZW1hbnRpYyBkZWZpbml0aW9ucy4KKworCQlUaGVzZSBhdHRyaWJ1dGVzIGFyZSBvbmx5IGNyZWF0ZWQgaWYgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIGFuCisJCUlFRUUgMTM5NCBub2RlIG9yIHRoZSB1bml0IGRpcmVjdG9yeSBvZiBhbiBJRUVFIDEzOTQgdW5pdAorCQlhY3R1YWxseSBjb250YWlucyBhY2NvcmRpbmcgZW50cmllcy4KKworCQloYXJkd2FyZV92ZXJzaW9uCisJCQlIZXhhZGVjaW1hbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gdTI0LgorCisJCWhhcmR3YXJlX3ZlcnNpb25fbmFtZQorCQkJQ29udGVudHMgb2YgYSByZXNwZWN0aXZlIHRleHR1YWwgZGVzY3JpcHRvciBsZWFmLgorCisJCW1vZGVsCisJCQlIZXhhZGVjaW1hbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gdTI0LgorCisJCW1vZGVsX25hbWUKKwkJCUNvbnRlbnRzIG9mIGEgcmVzcGVjdGl2ZSB0ZXh0dWFsIGRlc2NyaXB0b3IgbGVhZi4KKworCQlzcGVjaWZpZXJfaWQKKwkJCUhleGFkZWNpbWFsIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiB1MjQuCisJCQlNYW5kYXRvcnkgaW4gdW5pdCBkaXJlY3RvcmllcyBhY2NvcmRpbmcgdG8gSUVFRSAxMjEyLgorCisJCXZlbmRvcgorCQkJSGV4YWRlY2ltYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIHUyNC4KKwkJCU1hbmRhdG9yeSBpbiB0aGUgcm9vdCBkaXJlY3RvcnkgYWNjb3JkaW5nIHRvIElFRUUgMTIxMi4KKworCQl2ZW5kb3JfbmFtZQorCQkJQ29udGVudHMgb2YgYSByZXNwZWN0aXZlIHRleHR1YWwgZGVzY3JpcHRvciBsZWFmLgorCisJCXZlcnNpb24KKwkJCUhleGFkZWNpbWFsIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiB1MjQuCisJCQlNYW5kYXRvcnkgaW4gdW5pdCBkaXJlY3RvcmllcyBhY2NvcmRpbmcgdG8gSUVFRSAxMjEyLgorCisKK1doYXQ6CQkvc3lzL2J1cy9maXJld2lyZS9kcml2ZXJzL3NicDIvZncqL2hvc3QqL3RhcmdldCovKjoqOio6Ki9pZWVlMTM5NF9pZAorCQlmb3JtZXJseQorCQkvc3lzL2J1cy9pZWVlMTM5NC9kcml2ZXJzL3NicDIvZncqL2hvc3QqL3RhcmdldCovKjoqOio6Ki9pZWVlMTM5NF9pZAorRGF0ZToJCUZlYiAyMDA0CitLZXJuZWxWZXJzaW9uOgkyLjYuNAorQ29udGFjdDoJbGludXgxMzk0LWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAorRGVzY3JpcHRpb246CisJCVNDU0kgdGFyZ2V0IHBvcnQgaWRlbnRpZmllciBhbmQgbG9naWNhbCB1bml0IGlkZW50aWZpZXIgb2YgYQorCQlsb2dpY2FsIHVuaXQgb2YgYW4gU0JQLTIgdGFyZ2V0LiAgVGhlIGlkZW50aWZpZXJzIGFyZSBzcGVjaWZpZWQKKwkJaW4gU0FNLTIuLi5TQU0tNCBhbm5leCBBLiAgVGhleSBhcmUgcGVyc2lzdGVudCBhbmQgd29ybGQtd2lkZQorCQl1bmlxdWUgcHJvcGVydGllcyB0aGUgU0JQLTIgYXR0YWNoZWQgdGFyZ2V0LgorCisJCVJlYWQtb25seSBhdHRyaWJ1dGUsIGltbXV0YWJsZSBkdXJpbmcgdGhlIHRhcmdldCdzIGxpZmV0aW1lLgorCQlGb3JtYXQsIGFzIGV4cG9zZWQgYnkgZmlyZXdpcmUtc2JwMiBzaW5jZSAyLjYuMjIsIE1heSAyMDA3OgorCQlDb2xvbi1zZXBhcmF0ZWQgaGV4YWRlY2ltYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9ucyBvZgorCQkJdTY0IEVVSS02NCA6IHUyNCBkaXJlY3RvcnlfSUQgOiB1MTYgTFVOCisJCXdpdGhvdXQgMHggcHJlZml4ZXMsIHdpdGhvdXQgd2hpdGVzcGFjZS4gIFRoZSBmb3JtZXIgc2JwMiBkcml2ZXIKKwkJKHJlbW92ZWQgaW4gMi42LjM3IGFmdGVyIGJlaW5nIHN1cGVyc2VkZWQgYnkgZmlyZXdpcmUtc2JwMikgdXNlZAorCQlhIHNvbWV3aGF0IHNob3J0ZXIgZm9ybWF0IHdoaWNoIHdhcyBub3QgYXMgY2xvc2UgdG8gU0FNLgorCitVc2VyczoJCXVkZXYgcnVsZXMgdG8gY3JlYXRlIC9kZXYvZGlzay9ieS1pZC8gc3ltbGlua3MKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1idXMtdXNiIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy11c2IKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMxZjE1ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1idXMtdXNiCkBAIC0wLDAgKzEsMTQwIEBACitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvLi4uL3Bvd2VyL3BlcnNpc3QKK0RhdGU6CQlNYXkgMjAwNworS2VybmVsVmVyc2lvbjoJMi42LjIzCitDb250YWN0OglBbGFuIFN0ZXJuIDxzdGVybkByb3dsYW5kLmhhcnZhcmQuZWR1PgorRGVzY3JpcHRpb246CisJCVVTQiBkZXZpY2UgZGlyZWN0b3JpZXMgY2FuIGNvbnRhaW4gYSBmaWxlIG5hbWVkIHBvd2VyL3BlcnNpc3QuCisJCVRoZSBmaWxlIGhvbGRzIGEgYm9vbGVhbiB2YWx1ZSAoMCBvciAxKSBpbmRpY2F0aW5nIHdoZXRoZXIgb3IKKwkJbm90IHRoZSAiVVNCLVBlcnNpc3QiIGZhY2lsaXR5IGlzIGVuYWJsZWQgZm9yIHRoZSBkZXZpY2UuICBGb3IKKwkJaHVicyB0aGlzIGZhY2lsaXR5IGlzIGFsd2F5cyBlbmFibGVkIGFuZCB0aGVpciBkZXZpY2UKKwkJZGlyZWN0b3JpZXMgd2lsbCBub3QgY29udGFpbiB0aGlzIGZpbGUuCisKKwkJRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBEb2N1bWVudGF0aW9uL3VzYi9wZXJzaXN0LnR4dC4KKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLy4uLi9wb3dlci9hdXRvc3VzcGVuZAorRGF0ZToJCU1hcmNoIDIwMDcKK0tlcm5lbFZlcnNpb246CTIuNi4yMQorQ29udGFjdDoJQWxhbiBTdGVybiA8c3Rlcm5Acm93bGFuZC5oYXJ2YXJkLmVkdT4KK0Rlc2NyaXB0aW9uOgorCQlFYWNoIFVTQiBkZXZpY2UgZGlyZWN0b3J5IHdpbGwgY29udGFpbiBhIGZpbGUgbmFtZWQKKwkJcG93ZXIvYXV0b3N1c3BlbmQuICBUaGlzIGZpbGUgaG9sZHMgdGhlIHRpbWUgKGluIHNlY29uZHMpCisJCXRoZSBkZXZpY2UgbXVzdCBiZSBpZGxlIGJlZm9yZSBpdCB3aWxsIGJlIGF1dG9zdXNwZW5kZWQuCisJCTAgbWVhbnMgdGhlIGRldmljZSB3aWxsIGJlIGF1dG9zdXNwZW5kZWQgYXMgc29vbiBhcworCQlwb3NzaWJsZS4gIE5lZ2F0aXZlIHZhbHVlcyB3aWxsIHByZXZlbnQgdGhlIGRldmljZSBmcm9tCisJCWJlaW5nIGF1dG9zdXNwZW5kZWQgYXQgYWxsLCBhbmQgd3JpdGluZyBhIG5lZ2F0aXZlIHZhbHVlCisJCXdpbGwgcmVzdW1lIHRoZSBkZXZpY2UgaWYgaXQgaXMgYWxyZWFkeSBzdXNwZW5kZWQuCisKKwkJVGhlIGF1dG9zdXNwZW5kIGRlbGF5IGZvciBuZXdseS1jcmVhdGVkIGRldmljZXMgaXMgc2V0IHRvCisJCXRoZSB2YWx1ZSBvZiB0aGUgdXNiY29yZS5hdXRvc3VzcGVuZCBtb2R1bGUgcGFyYW1ldGVyLgorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZS8uLi4vcG93ZXIvY29ubmVjdGVkX2R1cmF0aW9uCitEYXRlOgkJSmFudWFyeSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjUKK0NvbnRhY3Q6CVNhcmFoIFNoYXJwIDxzYXJhaC5hLnNoYXJwQGludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlJZiBDT05GSUdfUE0gaXMgZW5hYmxlZCwgdGhlbiB0aGlzIGZpbGUgaXMgcHJlc2VudC4gIFdoZW4gcmVhZCwKKwkJaXQgcmV0dXJucyB0aGUgdG90YWwgdGltZSAoaW4gbXNlYykgdGhhdCB0aGUgVVNCIGRldmljZSBoYXMgYmVlbgorCQljb25uZWN0ZWQgdG8gdGhlIG1hY2hpbmUuICBUaGlzIGZpbGUgaXMgcmVhZC1vbmx5LgorVXNlcnM6CisJCVBvd2VyVE9QIDxwb3dlcnRvcEBsaXN0cy4wMS5vcmc+CisJCWh0dHBzOi8vMDEub3JnL3Bvd2VydG9wLworCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZS8uLi4vcG93ZXIvYWN0aXZlX2R1cmF0aW9uCitEYXRlOgkJSmFudWFyeSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjUKK0NvbnRhY3Q6CVNhcmFoIFNoYXJwIDxzYXJhaC5hLnNoYXJwQGludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlJZiBDT05GSUdfUE0gaXMgZW5hYmxlZCwgdGhlbiB0aGlzIGZpbGUgaXMgcHJlc2VudC4gIFdoZW4gcmVhZCwKKwkJaXQgcmV0dXJucyB0aGUgdG90YWwgdGltZSAoaW4gbXNlYykgdGhhdCB0aGUgVVNCIGRldmljZSBoYXMgYmVlbgorCQlhY3RpdmUsIGkuZS4gbm90IGluIGEgc3VzcGVuZGVkIHN0YXRlLiAgVGhpcyBmaWxlIGlzIHJlYWQtb25seS4KKworCQlUb29scyBjYW4gdXNlIHRoaXMgZmlsZSBhbmQgdGhlIGNvbm5lY3RlZF9kdXJhdGlvbiBmaWxlIHRvCisJCWNvbXB1dGUgdGhlIHBlcmNlbnRhZ2Ugb2YgdGltZSB0aGF0IGEgZGV2aWNlIGhhcyBiZWVuIGFjdGl2ZS4KKwkJRm9yIGV4YW1wbGUsCisJCWVjaG8gJCgoMTAwICogYGNhdCBhY3RpdmVfZHVyYXRpb25gIC8gYGNhdCBjb25uZWN0ZWRfZHVyYXRpb25gKSkKKwkJd2lsbCBnaXZlIGFuIGludGVnZXIgcGVyY2VudGFnZS4gIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90CisJCWFjY291bnQgZm9yIGNvdW50ZXIgd3JhcC4KK1VzZXJzOgorCQlQb3dlclRPUCA8cG93ZXJ0b3BAbGlzdHMuMDEub3JnPgorCQlodHRwczovLzAxLm9yZy9wb3dlcnRvcC8KKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxwb3J0Wy5wb3J0XT4uLi46PGNvbmZpZyBudW0+LTxpbnRlcmZhY2UgbnVtPi9zdXBwb3J0c19hdXRvc3VzcGVuZAorRGF0ZToJCUphbnVhcnkgMjAwOAorS2VybmVsVmVyc2lvbjoJMi42LjI3CitDb250YWN0OglTYXJhaCBTaGFycCA8c2FyYWguYS5zaGFycEBpbnRlbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJV2hlbiByZWFkLCB0aGlzIGZpbGUgcmV0dXJucyAxIGlmIHRoZSBpbnRlcmZhY2UgZHJpdmVyCisJCWZvciB0aGlzIGludGVyZmFjZSBzdXBwb3J0cyBhdXRvc3VzcGVuZC4gIEl0IGFsc28KKwkJcmV0dXJucyAxIGlmIG5vIGRyaXZlciBoYXMgY2xhaW1lZCB0aGlzIGludGVyZmFjZSwgYXMgYW4KKwkJdW5jbGFpbWVkIGludGVyZmFjZSB3aWxsIG5vdCBzdG9wIHRoZSBkZXZpY2UgZnJvbSBiZWluZworCQlhdXRvc3VzcGVuZGVkIGlmIGFsbCBvdGhlciBpbnRlcmZhY2UgZHJpdmVycyBhcmUgaWRsZS4KKwkJVGhlIGZpbGUgcmV0dXJucyAwIGlmIGF1dG9zdXNwZW5kIHN1cHBvcnQgaGFzIG5vdCBiZWVuCisJCWFkZGVkIHRvIHRoZSBkcml2ZXIuCitVc2VyczoKKwkJVVNCIFBNIHRvb2wKKwkJZ2l0Oi8vZ2l0Lm1vYmxpbi5vcmcvdXNlcnMvc2FyYWgvdXNiLXBtLXRvb2wvCisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlLy4uLi9hdm9pZF9yZXNldF9xdWlyaworRGF0ZToJCURlY2VtYmVyIDIwMDkKK0NvbnRhY3Q6CU9saXZlciBOZXVrdW0gPG9saXZlckBuZXVrdW0ub3JnPgorRGVzY3JpcHRpb246CisJCVdyaXRpbmcgMSB0byB0aGlzIGZpbGUgdGVsbHMgdGhlIGtlcm5lbCB0aGF0IHRoaXMKKwkJZGV2aWNlIHdpbGwgbW9ycGggaW50byBhbm90aGVyIG1vZGUgd2hlbiBpdCBpcyByZXNldC4KKwkJRHJpdmVycyB3aWxsIG5vdCB1c2UgcmVzZXQgZm9yIGVycm9yIGhhbmRsaW5nIGZvcgorCQlzdWNoIGRldmljZXMuCitVc2VyczoKKwkJdXNiX21vZGVzd2l0Y2gKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLy4uLi9kZXZudW0KK0tlcm5lbFZlcnNpb246CXNpbmNlIGF0IGxlYXN0IDIuNi4xOAorRGVzY3JpcHRpb246CisJCURldmljZSBhZGRyZXNzIG9uIHRoZSBVU0IgYnVzLgorVXNlcnM6CisJCWxpYnVzYgorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvLi4uL2JDb25maWd1cmF0aW9uVmFsdWUKK0tlcm5lbFZlcnNpb246CXNpbmNlIGF0IGxlYXN0IDIuNi4xOAorRGVzY3JpcHRpb246CisJCWJDb25maWd1cmF0aW9uVmFsdWUgb2YgdGhlICphY3RpdmUqIGNvbmZpZ3VyYXRpb24gZm9yIHRoZQorCQlkZXZpY2UuIFdyaXRpbmcgMCBvciAtMSB0byBiQ29uZmlndXJhdGlvblZhbHVlIHdpbGwgcmVzZXQgdGhlCisJCWFjdGl2ZSBjb25maWd1cmF0aW9uICh1bmNvbmZpZ3VyZSB0aGUgZGV2aWNlKS4gV3JpdGluZworCQlhbm90aGVyIHZhbHVlIHdpbGwgY2hhbmdlIHRoZSBhY3RpdmUgY29uZmlndXJhdGlvbi4KKworCQlOb3RlIHRoYXQgc29tZSBkZXZpY2VzLCBpbiB2aW9sYXRpb24gb2YgdGhlIFVTQiBzcGVjLCBoYXZlIGEKKwkJY29uZmlndXJhdGlvbiB3aXRoIGEgdmFsdWUgZXF1YWwgdG8gMC4gV3JpdGluZyAwIHRvCisJCWJDb25maWd1cmF0aW9uVmFsdWUgZm9yIHRoZXNlIGRldmljZXMgd2lsbCBpbnN0YWxsIHRoYXQKKwkJY29uZmlndXJhdGlvbiwgcmF0aGVyIHRoZW4gdW5jb25maWd1cmUgdGhlIGRldmljZS4KKworCQlXcml0aW5nIC0xIHdpbGwgYWx3YXlzIHVuY29uZmlndXJlIHRoZSBkZXZpY2UuCitVc2VyczoKKwkJbGlidXNiCisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy8uLi4vYnVzbnVtCitLZXJuZWxWZXJzaW9uOgkyLjYuMjIKK0Rlc2NyaXB0aW9uOgorCQlCdXMtbnVtYmVyIG9mIHRoZSBVU0ItYnVzIHRoZSBkZXZpY2UgaXMgY29ubmVjdGVkIHRvLgorVXNlcnM6CisJCWxpYnVzYgorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvLi4uL2Rlc2NyaXB0b3JzCitLZXJuZWxWZXJzaW9uOgkyLjYuMjYKK0Rlc2NyaXB0aW9uOgorCQlCaW5hcnkgZmlsZSBjb250YWluaW5nIGNhY2hlZCBkZXNjcmlwdG9ycyBvZiB0aGUgZGV2aWNlLiBUaGUKKwkJYmluYXJ5IGRhdGEgY29uc2lzdHMgb2YgdGhlIGRldmljZSBkZXNjcmlwdG9yIGZvbGxvd2VkIGJ5IHRoZQorCQlkZXNjcmlwdG9ycyBmb3IgZWFjaCBjb25maWd1cmF0aW9uIG9mIHRoZSBkZXZpY2UuCisJCU5vdGUgdGhhdCB0aGUgd1RvdGFsTGVuZ3RoIG9mIHRoZSBjb25maWcgZGVzY3JpcHRvcnMgY2FuIG5vdAorCQliZSB0cnVzdGVkLCBhcyB0aGUgZGV2aWNlIG1heSBoYXZlIGEgc21hbGxlciBjb25maWcgZGVzY3JpcHRvcgorCQl0aGFuIGl0IGFkdmVydGlzZXMuIFRoZSBiTGVuZ3RoIGZpZWxkIG9mIGVhY2ggKHN1YikgZGVzY3JpcHRvcgorCQljYW4gYmUgdHJ1c3RlZCwgYW5kIGNhbiBiZSB1c2VkIHRvIHNlZWsgZm9yd2FyZCBvbmUgKHN1YikKKwkJZGVzY3JpcHRvciBhdCBhIHRpbWUgdW50aWwgdGhlIG5leHQgY29uZmlnIGRlc2NyaXB0b3IgaXMgZm91bmQuCisJCUFsbCBkZXNjcmlwdG9ycyByZWFkIGZyb20gdGhpcyBmaWxlIGFyZSBpbiBidXMtZW5kaWFuIGZvcm1hdAorVXNlcnM6CisJCWxpYnVzYgorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvLi4uL3NwZWVkCitLZXJuZWxWZXJzaW9uOglzaW5jZSBhdCBsZWFzdCAyLjYuMTgKK0Rlc2NyaXB0aW9uOgorCQlTcGVlZCB0aGUgZGV2aWNlIGlzIGNvbm5lY3RlZCB3aXRoIHRvIHRoZSB1c2ItaG9zdCBpbgorCQlNYml0IC8gc2Vjb25kLiBJRSBvbmUgb2YgMS41IC8gMTIgLyA0ODAgLyA1MDAwLgorVXNlcnM6CisJCWxpYnVzYgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy12bWJ1cyBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1idXMtdm1idXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM2ZTkzOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1idXMtdm1idXMKQEAgLTAsMCArMSwyOSBAQAorV2hhdDoJCS9zeXMvYnVzL3ZtYnVzL2RldmljZXMvdm1idXNfKi9pZAorRGF0ZToJCUp1bCAyMDA5CitLZXJuZWxWZXJzaW9uOgkyLjYuMzEKK0NvbnRhY3Q6CUsuIFkuIFNyaW5pdmFzYW4gPGt5c0BtaWNyb3NvZnQuY29tPgorRGVzY3JpcHRpb246CVRoZSBWTUJ1cyBjaGlsZF9yZWxpZCBvZiB0aGUgZGV2aWNlJ3MgcHJpbWFyeSBjaGFubmVsCitVc2VyczoJCXRvb2xzL2h2L2xzdm1idXMKKworV2hhdDoJCS9zeXMvYnVzL3ZtYnVzL2RldmljZXMvdm1idXNfKi9jbGFzc19pZAorRGF0ZToJCUp1bCAyMDA5CitLZXJuZWxWZXJzaW9uOgkyLjYuMzEKK0NvbnRhY3Q6CUsuIFkuIFNyaW5pdmFzYW4gPGt5c0BtaWNyb3NvZnQuY29tPgorRGVzY3JpcHRpb246CVRoZSBWTUJ1cyBpbnRlcmZhY2UgdHlwZSBHVUlEIG9mIHRoZSBkZXZpY2UKK1VzZXJzOgkJdG9vbHMvaHYvbHN2bWJ1cworCitXaGF0OgkJL3N5cy9idXMvdm1idXMvZGV2aWNlcy92bWJ1c18qL2RldmljZV9pZAorRGF0ZToJCUp1bCAyMDA5CitLZXJuZWxWZXJzaW9uOgkyLjYuMzEKK0NvbnRhY3Q6CUsuIFkuIFNyaW5pdmFzYW4gPGt5c0BtaWNyb3NvZnQuY29tPgorRGVzY3JpcHRpb246CVRoZSBWTUJ1cyBpbnRlcmZhY2UgaW5zdGFuY2UgR1VJRCBvZiB0aGUgZGV2aWNlCitVc2VyczoJCXRvb2xzL2h2L2xzdm1idXMKKworV2hhdDoJCS9zeXMvYnVzL3ZtYnVzL2RldmljZXMvdm1idXNfKi9jaGFubmVsX3ZwX21hcHBpbmcKK0RhdGU6CQlKdWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4yLjAKK0NvbnRhY3Q6CUsuIFkuIFNyaW5pdmFzYW4gPGt5c0BtaWNyb3NvZnQuY29tPgorRGVzY3JpcHRpb246CVRoZSBtYXBwaW5nIG9mIHdoaWNoIHByaW1hcnkvc3ViIGNoYW5uZWxzIGFyZSBib3VuZCB0byB3aGljaAorCQlWaXJ0dWFsIFByb2Nlc3NvcnMuCisJCUZvcm1hdDogPGNoYW5uZWwncyBjaGlsZF9yZWxpZDp0aGUgYm91bmQgY3B1J3MgbnVtYmVyPgorVXNlcnM6CQl0b29scy9odi9sc3ZtYnVzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLXcxIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy13MQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDBkODViCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy13MQpAQCAtMCwwICsxLDExIEBACitXaGF0OgkJL3N5cy9idXMvdzEvZGV2aWNlcy8uLi4vdzFfbWFzdGVyX3RpbWVvdXRfdXMKK0RhdGU6CQlBcHJpbCAyMDE1CitDb250YWN0OglEbWl0cnkgS2hyb21vdiA8ZGtAaWNlbG9naWMubmV0PgorRGVzY3JpcHRpb246CUJ1cyBzY2FubmluZyBpbnRlcnZhbCwgbWljcm9zZWNvbmRzIGNvbXBvbmVudC4KKwkJU29tZSBvZiAxLVdpcmUgZGV2aWNlcyBjb21tb25seSBhc3NvY2lhdGVkIHdpdGggcGh5c2ljYWwgYWNjZXNzCisJCWNvbnRyb2wgc3lzdGVtcyBhcmUgYXR0YWNoZWQvZ2VuZXJhdGUgcHJlc2VuY2UgZm9yIGFzIHNob3J0IGFzCisJCTEwMCBtcyAtIGhlbmNlIHRoZSB0ZW5zLXRvLWh1bmRyZWRzIG1pbGxpc2Vjb25kcyBzY2FuIGludGVydmFscworCQlhcmUgcmVxdWlyZWQuCisJCXNlZSBEb2N1bWVudGF0aW9uL3cxL3cxLmdlbmVyaWMgZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uLgorVXNlcnM6CQlhbnkgdXNlciBzcGFjZSBhcHBsaWNhdGlvbiB3aGljaCB3YW50cyB0byBrbm93IGJ1cyBzY2FubmluZworCQlpbnRlcnZhbApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy14ZW4tYmFja2VuZCBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1idXMteGVuLWJhY2tlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q1OTUxYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1idXMteGVuLWJhY2tlbmQKQEAgLTAsMCArMSw3NSBAQAorV2hhdDoJCS9zeXMvYnVzL3hlbi1iYWNrZW5kL2RldmljZXMvKi9kZXZ0eXBlCitEYXRlOgkJRmViIDIwMDkKK0tlcm5lbFZlcnNpb246CTIuNi4zOAorQ29udGFjdDoJS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgorRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgVGhlIHR5cGUgb2YgdGhlIGRldmljZS4gIGUuZy4sIG9uZSBvZjogJ3ZiZCcgKGJsb2NrKSwKKyAgICAgICAgICAgICAgICAndmlmJyAobmV0d29yayksIG9yICd2ZmInIChmcmFtZWJ1ZmZlcikuCisKK1doYXQ6CQkvc3lzL2J1cy94ZW4tYmFja2VuZC9kZXZpY2VzLyovbm9kZW5hbWUKK0RhdGU6CQlGZWIgMjAwOQorS2VybmVsVmVyc2lvbjoJMi42LjM4CitDb250YWN0OglLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CitEZXNjcmlwdGlvbjoKKyAgICAgICAgICAgICAgICBYZW5TdG9yZSBub2RlICh1bmRlciAvbG9jYWwvZG9tYWluL05OTi8pIGZvciB0aGlzCisgICAgICAgICAgICAgICAgYmFja2VuZCBkZXZpY2UuCisKK1doYXQ6CQkvc3lzL2J1cy94ZW4tYmFja2VuZC9kZXZpY2VzL3ZiZC0qL3BoeXNpY2FsX2RldmljZQorRGF0ZToJCUFwcmlsIDIwMTEKK0tlcm5lbFZlcnNpb246CTMuMAorQ29udGFjdDoJS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgorRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgVGhlIG1ham9yOm1pbm9yIG51bWJlciAoaW4gaGV4aWRlY2ltYWwpIG9mIHRoZQorICAgICAgICAgICAgICAgIHBoeXNpY2FsIGRldmljZSBwcm92aWRpbmcgdGhlIHN0b3JhZ2UgZm9yIHRoaXMgYmFja2VuZAorICAgICAgICAgICAgICAgIGJsb2NrIGRldmljZS4KKworV2hhdDoJCS9zeXMvYnVzL3hlbi1iYWNrZW5kL2RldmljZXMvdmJkLSovbW9kZQorRGF0ZToJCUFwcmlsIDIwMTEKK0tlcm5lbFZlcnNpb246CTMuMAorQ29udGFjdDoJS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgorRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgV2hldGhlciB0aGUgYmxvY2sgZGV2aWNlIGlzIHJlYWQtb25seSAoJ3InKSBvcgorICAgICAgICAgICAgICAgIHJlYWQtd3JpdGUgKCd3JykuCisKK1doYXQ6CQkvc3lzL2J1cy94ZW4tYmFja2VuZC9kZXZpY2VzL3ZiZC0qL3N0YXRpc3RpY3MvZl9yZXEKK0RhdGU6CQlBcHJpbCAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjAKK0NvbnRhY3Q6CUtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIE51bWJlciBvZiBmbHVzaCByZXF1ZXN0cyBmcm9tIHRoZSBmcm9udGVuZC4KKworV2hhdDoJCS9zeXMvYnVzL3hlbi1iYWNrZW5kL2RldmljZXMvdmJkLSovc3RhdGlzdGljcy9vb19yZXEKK0RhdGU6CQlBcHJpbCAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjAKK0NvbnRhY3Q6CUtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIE51bWJlciBvZiByZXF1ZXN0cyBkZWxheWVkIGJlY2F1c2UgdGhlIGJhY2tlbmQgd2FzIHRvbworICAgICAgICAgICAgICAgIGJ1c3kgcHJvY2Vzc2luZyBwcmV2aW91cyByZXF1ZXN0cy4KKworV2hhdDoJCS9zeXMvYnVzL3hlbi1iYWNrZW5kL2RldmljZXMvdmJkLSovc3RhdGlzdGljcy9yZF9yZXEKK0RhdGU6CQlBcHJpbCAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjAKK0NvbnRhY3Q6CUtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIE51bWJlciBvZiByZWFkIHJlcXVlc3RzIGZyb20gdGhlIGZyb250ZW5kLgorCitXaGF0OgkJL3N5cy9idXMveGVuLWJhY2tlbmQvZGV2aWNlcy92YmQtKi9zdGF0aXN0aWNzL3JkX3NlY3QKK0RhdGU6CQlBcHJpbCAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjAKK0NvbnRhY3Q6CUtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIE51bWJlciBvZiBzZWN0b3JzIHJlYWQgYnkgdGhlIGZyb250ZW5kLgorCitXaGF0OgkJL3N5cy9idXMveGVuLWJhY2tlbmQvZGV2aWNlcy92YmQtKi9zdGF0aXN0aWNzL3dyX3JlcQorRGF0ZToJCUFwcmlsIDIwMTEKK0tlcm5lbFZlcnNpb246CTMuMAorQ29udGFjdDoJS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgorRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgTnVtYmVyIG9mIHdyaXRlIHJlcXVlc3RzIGZyb20gdGhlIGZyb250ZW5kLgorCitXaGF0OgkJL3N5cy9idXMveGVuLWJhY2tlbmQvZGV2aWNlcy92YmQtKi9zdGF0aXN0aWNzL3dyX3NlY3QKK0RhdGU6CQlBcHJpbCAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjAKK0NvbnRhY3Q6CUtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIE51bWJlciBvZiBzZWN0b3JzIHdyaXR0ZW4gYnkgdGhlIGZyb250ZW5kLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWNsYXNzLWJhY2tsaWdodCBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1jbGFzcy1iYWNrbGlnaHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzAzMDJmMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1jbGFzcy1iYWNrbGlnaHQKQEAgLTAsMCArMSw1NiBAQAorV2hhdDoJCS9zeXMvY2xhc3MvYmFja2xpZ2h0LzxiYWNrbGlnaHQ+L2JsX3Bvd2VyCitEYXRlOgkJQXByaWwgMjAwNQorS2VybmVsVmVyc2lvbjoJMi42LjEyCitDb250YWN0OglSaWNoYXJkIFB1cmRpZSA8cnB1cmRpZUBycHN5cy5uZXQ+CitEZXNjcmlwdGlvbjoKKwkJQ29udHJvbCBCQUNLTElHSFQgcG93ZXIsIHZhbHVlcyBhcmUgRkJfQkxBTktfKiBmcm9tIGZiLmgKKwkJIC0gRkJfQkxBTktfVU5CTEFOSyAoMCkgICA6IHBvd2VyIG9uLgorCQkgLSBGQl9CTEFOS19QT1dFUkRPV04gKDQpIDogcG93ZXIgb2ZmCitVc2VyczoJCUhBTAorCitXaGF0OgkJL3N5cy9jbGFzcy9iYWNrbGlnaHQvPGJhY2tsaWdodD4vYnJpZ2h0bmVzcworRGF0ZToJCUFwcmlsIDIwMDUKK0tlcm5lbFZlcnNpb246CTIuNi4xMgorQ29udGFjdDoJUmljaGFyZCBQdXJkaWUgPHJwdXJkaWVAcnBzeXMubmV0PgorRGVzY3JpcHRpb246CisJCUNvbnRyb2wgdGhlIGJyaWdodG5lc3MgZm9yIHRoaXMgPGJhY2tsaWdodD4uIFZhbHVlcworCQlhcmUgYmV0d2VlbiAwIGFuZCBtYXhfYnJpZ2h0bmVzcy4gVGhpcyBmaWxlIHdpbGwgYWxzbworCQlzaG93IHRoZSBicmlnaHRuZXNzIGxldmVsIHN0b3JlZCBpbiB0aGUgZHJpdmVyLCB3aGljaAorCQltYXkgbm90IGJlIHRoZSBhY3R1YWwgYnJpZ2h0bmVzcyAoc2VlIGFjdHVhbF9icmlnaHRuZXNzKS4KK1VzZXJzOgkJSEFMCisKK1doYXQ6CQkvc3lzL2NsYXNzL2JhY2tsaWdodC88YmFja2xpZ2h0Pi9hY3R1YWxfYnJpZ2h0bmVzcworRGF0ZToJCU1hcmNoIDIwMDYKK0tlcm5lbFZlcnNpb246CTIuNi4xNworQ29udGFjdDoJUmljaGFyZCBQdXJkaWUgPHJwdXJkaWVAcnBzeXMubmV0PgorRGVzY3JpcHRpb246CisJCVNob3cgdGhlIGFjdHVhbCBicmlnaHRuZXNzIGJ5IHF1ZXJ5aW5nIHRoZSBoYXJkd2FyZS4KK1VzZXJzOgkJSEFMCisKK1doYXQ6CQkvc3lzL2NsYXNzL2JhY2tsaWdodC88YmFja2xpZ2h0Pi9tYXhfYnJpZ2h0bmVzcworRGF0ZToJCUFwcmlsIDIwMDUKK0tlcm5lbFZlcnNpb246CTIuNi4xMgorQ29udGFjdDoJUmljaGFyZCBQdXJkaWUgPHJwdXJkaWVAcnBzeXMubmV0PgorRGVzY3JpcHRpb246CisJCU1heGltdW0gYnJpZ2h0bmVzcyBmb3IgPGJhY2tsaWdodD4uCitVc2VyczoJCUhBTAorCitXaGF0OgkJL3N5cy9jbGFzcy9iYWNrbGlnaHQvPGJhY2tsaWdodD4vdHlwZQorRGF0ZToJCVNlcHRlbWJlciAyMDEwCitLZXJuZWxWZXJzaW9uOgkyLjYuMzcKK0NvbnRhY3Q6CU1hdHRoZXcgR2FycmV0dCA8bWpnQHJlZGhhdC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIHR5cGUgb2YgaW50ZXJmYWNlIGNvbnRyb2xsZWQgYnkgPGJhY2tsaWdodD4uCisJCSJmaXJtd2FyZSI6IFRoZSBkcml2ZXIgdXNlcyBhIHN0YW5kYXJkIGZpcm13YXJlIGludGVyZmFjZQorCQkicGxhdGZvcm0iOiBUaGUgZHJpdmVyIHVzZXMgYSBwbGF0Zm9ybS1zcGVjaWZpYyBpbnRlcmZhY2UKKwkJInJhdyI6IFRoZSBkcml2ZXIgY29udHJvbHMgaGFyZHdhcmUgcmVnaXN0ZXJzIGRpcmVjdGx5CisKKwkJSW4gdGhlIGdlbmVyYWwgY2FzZSwgd2hlbiBtdWx0aXBsZSBiYWNrbGlnaHQKKwkJaW50ZXJmYWNlcyBhcmUgYXZhaWxhYmxlIGZvciBhIHNpbmdsZSBkZXZpY2UsIGZpcm13YXJlCisJCWNvbnRyb2wgc2hvdWxkIGJlIHByZWZlcnJlZCB0byBwbGF0Zm9ybSBjb250cm9sIHNob3VsZAorCQliZSBwcmVmZXJyZWQgdG8gcmF3IGNvbnRyb2wuIFVzaW5nIGEgZmlybXdhcmUKKwkJaW50ZXJmYWNlIHJlZHVjZXMgdGhlIHByb2JhYmlsaXR5IG9mIGNvbmZ1c2lvbiB3aXRoCisJCXRoZSBoYXJkd2FyZSBhbmQgdGhlIE9TIGluZGVwZW5kZW50bHkgdXBkYXRpbmcgdGhlCisJCWJhY2tsaWdodCBzdGF0ZS4gUGxhdGZvcm0gaW50ZXJmYWNlcyBhcmUgbW9zdGx5IGEKKwkJaG9sZG92ZXIgZnJvbSBwcmUtc3RhbmRhcmRpc2F0aW9uIG9mIGZpcm13YXJlCisJCWludGVyZmFjZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtY2xhc3MtcmZraWxsIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWNsYXNzLXJma2lsbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTdmNTIyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWNsYXNzLXJma2lsbApAQCAtMCwwICsxLDY3IEBACityZmtpbGwgLSByYWRpbyBmcmVxdWVuY3kgKFJGKSBjb25uZWN0b3Iga2lsbCBzd2l0Y2ggc3VwcG9ydAorCitGb3IgZGV0YWlscyB0byB0aGlzIHN1YnN5c3RlbSBsb29rIGF0IERvY3VtZW50YXRpb24vcmZraWxsLnR4dC4KKworRm9yIHRoZSBkZXByZWNhdGVkIC9zeXMvY2xhc3MvcmZraWxsLyovc3RhdGUgYW5kCisvc3lzL2NsYXNzL3Jma2lsbC8qL2NsYWltIGtub2JzIG9mIHRoaXMgaW50ZXJmYWNlIGxvb2sgaW4KK0RvY3VtZW50YXRpb24vQUJJL29ic29sZXRlL3N5c2ZzLWNsYXNzLXJma2lsbC4KKworV2hhdDogCQkvc3lzL2NsYXNzL3Jma2lsbAorRGF0ZToJCTA5LUp1bC0yMDA3CitLZXJuZWxWZXJzaW9uOgl2Mi42LjIyCitDb250YWN0OglsaW51eC13aXJlbGVzc0B2Z2VyLmtlcm5lbC5vcmcsCitEZXNjcmlwdGlvbjogCVRoZSByZmtpbGwgY2xhc3Mgc3Vic3lzdGVtIGZvbGRlci4KKwkJRWFjaCByZWdpc3RlcmVkIHJma2lsbCBkcml2ZXIgaXMgcmVwcmVzZW50ZWQgYnkgYW4gcmZraWxsWAorCQlzdWJmb2xkZXIgKFggYmVpbmcgYW4gaW50ZWdlciA+IDApLgorCisKK1doYXQ6CQkvc3lzL2NsYXNzL3Jma2lsbC9yZmtpbGxbMC05XSsvbmFtZQorRGF0ZToJCTA5LUp1bC0yMDA3CitLZXJuZWxWZXJzaW9uCXYyLjYuMjIKK0NvbnRhY3Q6CWxpbnV4LXdpcmVsZXNzQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246IAlOYW1lIGFzc2lnbmVkIGJ5IGRyaXZlciB0byB0aGlzIGtleSAoaW50ZXJmYWNlIG9yIGRyaXZlciBuYW1lKS4KK1ZhbHVlczogCWFyYml0cmFyeSBzdHJpbmcuCisKKworV2hhdDogCQkvc3lzL2NsYXNzL3Jma2lsbC9yZmtpbGxbMC05XSsvdHlwZQorRGF0ZToJCTA5LUp1bC0yMDA3CitLZXJuZWxWZXJzaW9uCXYyLjYuMjIKK0NvbnRhY3Q6CWxpbnV4LXdpcmVsZXNzQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246IAlEcml2ZXIgdHlwZSBzdHJpbmcgKCJ3bGFuIiwgImJsdWV0b290aCIsIGV0YykuCitWYWx1ZXM6IAlTZWUgaW5jbHVkZS9saW51eC9yZmtpbGwuaC4KKworCitXaGF0OgkJL3N5cy9jbGFzcy9yZmtpbGwvcmZraWxsWzAtOV0rL3BlcnNpc3RlbnQKK0RhdGU6CQkwOS1KdWwtMjAwNworS2VybmVsVmVyc2lvbgl2Mi42LjIyCitDb250YWN0OglsaW51eC13aXJlbGVzc0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOiAJV2hldGhlciB0aGUgc29mdCBibG9ja2VkIHN0YXRlIGlzIGluaXRpYWxpc2VkIGZyb20gbm9uLXZvbGF0aWxlCisJCXN0b3JhZ2UgYXQgc3RhcnR1cC4KK1ZhbHVlczogCUEgbnVtZXJpYyB2YWx1ZS4KKwkJMDogZmFsc2UKKwkJMTogdHJ1ZQorCisKK1doYXQ6CQkvc3lzL2NsYXNzL3Jma2lsbC9yZmtpbGxbMC05XSsvaGFyZAorRGF0ZToJCTEyLU1hcmNoLTIwMTAKK0tlcm5lbFZlcnNpb24JdjIuNi4zNAorQ29udGFjdDoJbGludXgtd2lyZWxlc3NAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjogCUN1cnJlbnQgaGFyZGJsb2NrIHN0YXRlLiBUaGlzIGZpbGUgaXMgcmVhZCBvbmx5LgorVmFsdWVzOiAJQSBudW1lcmljIHZhbHVlLgorCQkwOiBpbmFjdGl2ZQorCQkJVGhlIHRyYW5zbWl0dGVyIGlzIChwb3RlbnRpYWxseSkgYWN0aXZlLgorCQkxOiBhY3RpdmUKKwkJCVRoZSB0cmFuc21pdHRlciBpcyBmb3JjZWQgb2ZmIGJ5IHNvbWV0aGluZyBvdXRzaWRlIG9mCisJCQl0aGUgZHJpdmVyJ3MgY29udHJvbC4KKworCitXaGF0OgkJL3N5cy9jbGFzcy9yZmtpbGwvcmZraWxsWzAtOV0rL3NvZnQKK0RhdGU6CQkxMi1NYXJjaC0yMDEwCitLZXJuZWxWZXJzaW9uCXYyLjYuMzQKK0NvbnRhY3Q6CWxpbnV4LXdpcmVsZXNzQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CUN1cnJlbnQgc29mdGJsb2NrIHN0YXRlLiBUaGlzIGZpbGUgaXMgcmVhZCBhbmQgd3JpdGUuCitWYWx1ZXM6IAlBIG51bWVyaWMgdmFsdWUuCisJCTA6IGluYWN0aXZlCisJCQlUaGUgdHJhbnNtaXR0ZXIgaXMgKHBvdGVudGlhbGx5KSBhY3RpdmUuCisJCTE6IGFjdGl2ZQorCQkJVGhlIHRyYW5zbWl0dGVyIGlzIHR1cm5lZCBvZmYgYnkgc29mdHdhcmUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtY2xhc3MtdHBtIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWNsYXNzLXRwbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGUyMzgzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWNsYXNzLXRwbQpAQCAtMCwwICsxLDE4NSBAQAorV2hhdDoJCS9zeXMvY2xhc3MvdHBtL3RwbVgvZGV2aWNlLworRGF0ZToJCUFwcmlsIDIwMDUKK0tlcm5lbFZlcnNpb246CTIuNi4xMgorQ29udGFjdDoJdHBtZGQtZGV2ZWxAbGlzdHMuc2YubmV0CitEZXNjcmlwdGlvbjoJVGhlIGRldmljZS8gZGlyZWN0b3J5IHVuZGVyIGEgc3BlY2lmaWMgVFBNIGluc3RhbmNlIGV4cG9zZXMKKwkJdGhlIHByb3BlcnRpZXMgb2YgdGhhdCBUUE0gY2hpcAorCisKK1doYXQ6CQkvc3lzL2NsYXNzL3RwbS90cG1YL2RldmljZS9hY3RpdmUKK0RhdGU6CQlBcHJpbCAyMDA2CitLZXJuZWxWZXJzaW9uOgkyLjYuMTcKK0NvbnRhY3Q6CXRwbWRkLWRldmVsQGxpc3RzLnNmLm5ldAorRGVzY3JpcHRpb246CVRoZSAiYWN0aXZlIiBwcm9wZXJ0eSBwcmludHMgYSAnMScgaWYgdGhlIFRQTSBjaGlwIGlzIGFjY2VwdGluZworCQljb21tYW5kcy4gQW4gaW5hY3RpdmUgVFBNIGNoaXAgc3RpbGwgY29udGFpbnMgYWxsIHRoZSBzdGF0ZSBvZgorCQlhbiBhY3RpdmUgY2hpcCAoU3RvcmFnZSBSb290IEtleSwgTlZSQU0sIGV0YyksIGFuZCBjYW4gYmUKKwkJdmlzaWJsZSB0byB0aGUgT1MsIGJ1dCB3aWxsIG9ubHkgYWNjZXB0IGEgcmVzdHJpY3RlZCBzZXQgb2YKKwkJY29tbWFuZHMuIFNlZSB0aGUgVFBNIE1haW4gU3BlY2lmaWNhdGlvbiBwYXJ0IDIsIFN0cnVjdHVyZXMsCisJCXNlY3Rpb24gMTcgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gd2hpY2ggY29tbWFuZHMgYXJlCisJCWF2YWlsYWJsZS4KKworV2hhdDoJCS9zeXMvY2xhc3MvdHBtL3RwbVgvZGV2aWNlL2NhbmNlbAorRGF0ZToJCUp1bmUgMjAwNQorS2VybmVsVmVyc2lvbjoJMi42LjEzCitDb250YWN0Ogl0cG1kZC1kZXZlbEBsaXN0cy5zZi5uZXQKK0Rlc2NyaXB0aW9uOglUaGUgImNhbmNlbCIgcHJvcGVydHkgYWxsb3dzIHlvdSB0byBjYW5jZWwgdGhlIGN1cnJlbnRseQorCQlwZW5kaW5nIFRQTSBjb21tYW5kLiBXcml0aW5nIGFueSB2YWx1ZSB0byBjYW5jZWwgd2lsbCBjYWxsIHRoZQorCQlUUE0gdmVuZG9yIHNwZWNpZmljIGNhbmNlbCBvcGVyYXRpb24uCisKK1doYXQ6CQkvc3lzL2NsYXNzL3RwbS90cG1YL2RldmljZS9jYXBzCitEYXRlOgkJQXByaWwgMjAwNQorS2VybmVsVmVyc2lvbjoJMi42LjEyCitDb250YWN0Ogl0cG1kZC1kZXZlbEBsaXN0cy5zZi5uZXQKK0Rlc2NyaXB0aW9uOglUaGUgImNhcHMiIHByb3BlcnR5IGNvbnRhaW5zIFRQTSBtYW51ZmFjdHVyZXIgYW5kIHZlcnNpb24gaW5mby4KKworCQlFeGFtcGxlIG91dHB1dDoKKworCQlNYW51ZmFjdHVyZXI6IDB4NTM1NDRkMjAKKwkJVENHIHZlcnNpb246IDEuMgorCQlGaXJtd2FyZSB2ZXJzaW9uOiA4LjE2CisKKwkJTWFudWZhY3R1cmVyIGlzIGEgaGV4IGR1bXAgb2YgdGhlIDQgYnl0ZSBtYW51ZmFjdHVyZXIgaW5mbworCQlzcGFjZSBpbiBhIFRQTS4gVENHIHZlcnNpb24gc2hvd3MgdGhlIFRDRyBUUE0gc3BlYyBsZXZlbCB0aGF0CisJCXRoZSBjaGlwIHN1cHBvcnRzLiBGaXJtd2FyZSB2ZXJzaW9uIGlzIHRoYXQgb2YgdGhlIGNoaXAgYW5kCisJCWlzIG1hbnVmYWN0dXJlciBzcGVjaWZpYy4KKworV2hhdDoJCS9zeXMvY2xhc3MvdHBtL3RwbVgvZGV2aWNlL2R1cmF0aW9ucworRGF0ZToJCU1hcmNoIDIwMTEKK0tlcm5lbFZlcnNpb246CTMuMQorQ29udGFjdDoJdHBtZGQtZGV2ZWxAbGlzdHMuc2YubmV0CitEZXNjcmlwdGlvbjoJVGhlICJkdXJhdGlvbnMiIHByb3BlcnR5IHNob3dzIHRoZSAzIHZlbmRvci1zcGVjaWZpYyB2YWx1ZXMKKwkJdXNlZCB0byB3YWl0IGZvciBhIHNob3J0LCBtZWRpdW0gYW5kIGxvbmcgVFBNIGNvbW1hbmQuIEFsbAorCQlUUE0gY29tbWFuZHMgYXJlIGNhdGVnb3JpemVkIGFzIHNob3J0LCBtZWRpdW0gb3IgbG9uZyBpbgorCQlleGVjdXRpb24gdGltZSwgc28gdGhhdCB0aGUgZHJpdmVyIGRvZXNuJ3QgaGF2ZSB0byB3YWl0CisJCWFueSBsb25nZXIgdGhhbiBuZWNlc3NhcnkgYmVmb3JlIHN0YXJ0aW5nIHRvIHBvbGwgZm9yIGEKKwkJcmVzdWx0LgorCisJCUV4YW1wbGUgb3V0cHV0OgorCisJCTMwMTUwMDAgNDUwODAwMCAxODA5OTUwMDAgW29yaWdpbmFsXQorCisJCUhlcmUgdGhlIHNob3J0LCBtZWRpdW0gYW5kIGxvbmcgZHVyYXRpb25zIGFyZSBkaXNwbGF5ZWQgaW4KKwkJdXNlY3MuICJbb3JpZ2luYWxdIiBpbmRpY2F0ZXMgdGhhdCB0aGUgdmFsdWVzIGFyZSBkaXNwbGF5ZWQKKwkJdW5tb2RpZmllZCBmcm9tIHdoZW4gdGhleSB3ZXJlIHF1ZXJpZWQgZnJvbSB0aGUgY2hpcC4KKwkJRHVyYXRpb25zIGNhbiBiZSBtb2RpZmllZCBpbiB0aGUgY2FzZSB3aGVyZSBhIGJ1Z2d5IGNoaXAKKwkJcmVwb3J0cyB0aGVtIGluIG1zZWMgaW5zdGVhZCBvZiB1c2VjIGFuZCB0aGV5IG5lZWQgdG8gYmUKKwkJc2NhbGVkIHRvIGJlIGRpc3BsYXllZCBpbiB1c2Vjcy4gSW4gdGhpcyBjYXNlICJbYWRqdXN0ZWRdIgorCQl3aWxsIGJlIGRpc3BsYXllZCBpbiBwbGFjZSBvZiAiW29yaWdpbmFsXSIuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3RwbS90cG1YL2RldmljZS9lbmFibGVkCitEYXRlOgkJQXByaWwgMjAwNgorS2VybmVsVmVyc2lvbjoJMi42LjE3CitDb250YWN0Ogl0cG1kZC1kZXZlbEBsaXN0cy5zZi5uZXQKK0Rlc2NyaXB0aW9uOglUaGUgImVuYWJsZWQiIHByb3BlcnR5IHByaW50cyBhICcxJyBpZiB0aGUgVFBNIGNoaXAgaXMgZW5hYmxlZCwKKwkJbWVhbmluZyB0aGF0IGl0IHNob3VsZCBiZSB2aXNpYmxlIHRvIHRoZSBPUy4gVGhpcyBwcm9wZXJ0eQorCQltYXkgYmUgdmlzaWJsZSBidXQgcHJvZHVjZSBhICcwJyBhZnRlciBzb21lIG9wZXJhdGlvbiB0aGF0CisJCWRpc2FibGVzIHRoZSBUUE0uCisKK1doYXQ6CQkvc3lzL2NsYXNzL3RwbS90cG1YL2RldmljZS9vd25lZAorRGF0ZToJCUFwcmlsIDIwMDYKK0tlcm5lbFZlcnNpb246CTIuNi4xNworQ29udGFjdDoJdHBtZGQtZGV2ZWxAbGlzdHMuc2YubmV0CitEZXNjcmlwdGlvbjoJVGhlICJvd25lZCIgcHJvcGVydHkgcHJvZHVjZXMgYSAnMScgaWYgdGhlIFRQTV9UYWtlT3duZXJzaGlwCisJCW9yZGluYWwgaGFzIGJlZW4gZXhlY3V0ZWQgc3VjY2Vzc2Z1bGx5IGluIHRoZSBjaGlwLiBBICcwJworCQlpbmRpY2F0ZXMgdGhhdCBvd25lcnNoaXAgaGFzbid0IGJlZW4gdGFrZW4uCisKK1doYXQ6CQkvc3lzL2NsYXNzL3RwbS90cG1YL2RldmljZS9wY3JzCitEYXRlOgkJQXByaWwgMjAwNQorS2VybmVsVmVyc2lvbjoJMi42LjEyCitDb250YWN0Ogl0cG1kZC1kZXZlbEBsaXN0cy5zZi5uZXQKK0Rlc2NyaXB0aW9uOglUaGUgInBjcnMiIHByb3BlcnR5IHdpbGwgZHVtcCB0aGUgY3VycmVudCB2YWx1ZSBvZiBhbGwgUGxhdGZvcm0KKwkJQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMgaW4gdGhlIFRQTS4gTm90ZSB0aGF0IHNpbmNlIHRoZXNlCisJCXZhbHVlcyBtYXkgYmUgY29uc3RhbnRseSBjaGFuZ2luZywgdGhlIG91dHB1dCBpcyBvbmx5IHZhbGlkCisJCWZvciBhIHNuYXBzaG90IGluIHRpbWUuCisKKwkJRXhhbXBsZSBvdXRwdXQ6CisKKwkJUENSLTAwOiAzQSAzRiA3OCAwRiAxMSBBNCBCNCA5OSA2OSBGQyBBQSA4MCBDRCA2RSAzOSA1NyBDMyAzQiAyMiA3NQorCQlQQ1ItMDE6IDNBIDNGIDc4IDBGIDExIEE0IEI0IDk5IDY5IEZDIEFBIDgwIENEIDZFIDM5IDU3IEMzIDNCIDIyIDc1CisJCVBDUi0wMjogM0EgM0YgNzggMEYgMTEgQTQgQjQgOTkgNjkgRkMgQUEgODAgQ0QgNkUgMzkgNTcgQzMgM0IgMjIgNzUKKwkJUENSLTAzOiAzQSAzRiA3OCAwRiAxMSBBNCBCNCA5OSA2OSBGQyBBQSA4MCBDRCA2RSAzOSA1NyBDMyAzQiAyMiA3NQorCQlQQ1ItMDQ6IDNBIDNGIDc4IDBGIDExIEE0IEI0IDk5IDY5IEZDIEFBIDgwIENEIDZFIDM5IDU3IEMzIDNCIDIyIDc1CisJCS4uLgorCisJCVRoZSBudW1iZXIgb2YgUENScyBhbmQgaGV4IGJ5dGVzIG5lZWRlZCB0byByZXByZXNlbnQgYSBQQ1IKKwkJdmFsdWUgd2lsbCB2YXJ5IGRlcGVuZGluZyBvbiBUUE0gY2hpcCB2ZXJzaW9uLiBGb3IgVFBNIDEuMSBhbmQKKwkJMS4yIGNoaXBzLCBQQ1JzIHJlcHJlc2VudCBTSEEtMSBoYXNoZXMsIHdoaWNoIGFyZSAyMCBieXRlcworCQlsb25nLiBVc2UgdGhlICJjYXBzIiBwcm9wZXJ0eSB0byBkZXRlcm1pbmUgVFBNIHZlcnNpb24uCisKK1doYXQ6CQkvc3lzL2NsYXNzL3RwbS90cG1YL2RldmljZS9wdWJlaworRGF0ZToJCUFwcmlsIDIwMDUKK0tlcm5lbFZlcnNpb246CTIuNi4xMgorQ29udGFjdDoJdHBtZGQtZGV2ZWxAbGlzdHMuc2YubmV0CitEZXNjcmlwdGlvbjoJVGhlICJwdWJlayIgcHJvcGVydHkgd2lsbCByZXR1cm4gdGhlIFRQTSdzIHB1YmxpYyBlbmRvcnNlbWVudAorCQlrZXkgaWYgcG9zc2libGUuIElmIHRoZSBUUE0gaGFzIGhhZCBvd25lcnNoaXAgZXN0YWJsaXNoZWQgYW5kCisJCWlzIHZlcnNpb24gMS4yLCB0aGUgcHViZWsgd2lsbCBub3QgYmUgYXZhaWxhYmxlIHdpdGhvdXQgdGhlCisJCW93bmVyJ3MgYXV0aG9yaXphdGlvbi4gU2luY2UgdGhlIFRQTSBkcml2ZXIgZG9lc24ndCBzdG9yZSBhbnkKKwkJc2VjcmV0cywgaXQgY2FuJ3QgYXV0aG9yaXplIGl0cyBvd24gcmVxdWVzdCBmb3IgdGhlIHB1YmVrLAorCQltYWtpbmcgaXQgdW5hY2Nlc3NpYmxlLiBUaGUgcHVibGljIGVuZG9yc2VtZW50IGtleSBpcyBnZW5lci0KKwkJYXRlZCBhdCBUUE0gbWFudWZhY3R1cmUgdGltZSBhbmQgZXhpc3RzIGZvciB0aGUgbGlmZSBvZiB0aGUKKwkJY2hpcC4KKworCQlFeGFtcGxlIG91dHB1dDoKKworCQlBbGdvcml0aG06IDAwIDAwIDAwIDAxCisJCUVuY3NjaGVtZTogMDAgMDMKKwkJU2lnc2NoZW1lOiAwMCAwMQorCQlQYXJhbWV0ZXJzOiAwMCAwMCAwOCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCAwMAorCQlNb2R1bHVzIGxlbmd0aDogMjU2CisJCU1vZHVsdXM6CisJCUI0IDc2IDQxIDgyIEM5IDIwIDJDIDEwIDE4IDQwIEJDIDhCIEU1IDQ0IDRDIDZDCisJCTNBIEIyIDkyIDBDIEE0IDlCIDJBIDgzIEVCIDVDIDEyIDg1IDA0IDQ4IEEwIEI2CisJCTFFIEU0IDgxIDg0IENFIEIyIEYyIDQ1IDFDIEYwIDg1IDk5IDYxIDAyIDREIEVCCisJCTg2IEM0IEY3IEYzIDI5IDYwIDUyIDkzIDZCIEIyIEU1IEFCIDhCIEE5IDA5IEUzCisJCUQ3IDBFIDdEIENBIDQxIEJGIDQzIDA3IDY1IDg2IDNDIDhDIDEzIDdBIEQwIDhCCisJCTgyIDVFIDk2IDBCIEY4IDFGIDVGIDM0IDA2IERBIEEyIDUyIEMxIEE5IEQ1IDI2CisJCTBGIEY0IDA0IDRCIEQ5IDNGIDJEIEYyIEFDIDJGIDc0IDY0IDFGIDhCIENEIDNFCisJCTFFIDMwIDM4IDZDIDcwIDYzIDY5IEFCIEUyIDUwIERGIDQ5IDA1IDJFIEUxIDhECisJCTZGIDc4IDQ0IERBIDU3IDQzIDY5IEVFIDc2IDZDIDM4IDhBIEU5IDhFIEEzIEYwCisJCUE3IDFGIDNDIEE4IEQwIDEyIDE1IDNFIENBIDBFIEJEIEZBIDI0IENEIDMzIEM2CisJCTQ3IEFFIEE0IDE4IDgzIDhFIDIyIDM5IDc1IDkzIDg2IEU2IEZEIDY2IDQ4IEI2CisJCTEwIEFEIDk0IDE0IDY1IEY5IDZBIDE3IDc4IEJEIDE2IDUzIDg0IDMwIEJGIDcwCisJCUUwIERDIDY1IEZEIDNDIEM2IEIwIDFFIEJGIEI5IEMxIEI1IDZDIEVGIEIxIDNBCisJCUY4IDI4IDA1IDgzIDYyIDI2IDExIERDIEI0IDZCIDVBIDk3IEZGIDMyIDI2IEI2CisJCUY3IDAyIDcxIENGIDE1IEFFIDE2IEREIEQxIEMxIDhFIEE4IENGIDlCIDUwIDdCCisJCUMzIDkxIEZGIDQ0IDFFIENGIDdDIDM5IEZFIDE3IDc3IDIxIDIwIEJEIENFIDlCCisKKwkJUG9zc2libGUgdmFsdWVzOgorCisJCUFsZ29yaXRobToJVFBNX0FMR19SU0EJCQkoMSkKKwkJRW5jc2NoZW1lOglUUE1fRVNfUlNBRVNQS0NTdjE1CQkoMikKKwkJCQlUUE1fRVNfUlNBRVNPQUVQX1NIQTFfTUdGMQkoMykKKwkJU2lnc2NoZW1lOglUUE1fU1NfTk9ORQkJCSgxKQorCQlQYXJhbWV0ZXJzLCBhIGJ5dGUgc3RyaW5nIG9mIDMgdTMyIHZhbHVlczoKKwkJCUtleSBMZW5ndGggKGJpdHMpOgkwMCAwMCAwOCAwMAkoMjA0OCkKKwkJCU51bSBwcmltZXM6CQkwMCAwMCAwMCAwMgkoMikKKwkJCUV4cG9uZW50IFNpemU6CQkwMCAwMCAwMCAwMAkoMCBtZWFucyB0aGUKKwkJCQkJCQkJIGRlZmF1bHQgZXhwKQorCQlNb2R1bHVzIExlbmd0aDogMjU2IChieXRlcykKKwkJTW9kdWx1czoJVGhlIDI1NiBieXRlIEVuZG9yc2VtZW50IEtleSBtb2R1bHVzCisKK1doYXQ6CQkvc3lzL2NsYXNzL3RwbS90cG1YL2RldmljZS90ZW1wX2RlYWN0aXZhdGVkCitEYXRlOgkJQXByaWwgMjAwNgorS2VybmVsVmVyc2lvbjoJMi42LjE3CitDb250YWN0Ogl0cG1kZC1kZXZlbEBsaXN0cy5zZi5uZXQKK0Rlc2NyaXB0aW9uOglUaGUgInRlbXBfZGVhY3RpdmF0ZWQiIHByb3BlcnR5IHJldHVybnMgYSAnMScgaWYgdGhlIGNoaXAgaGFzCisJCWJlZW4gdGVtcG9yYXJpbHkgZGVhY3RpdmF0ZWQsIHVzdWFsbHkgdW50aWwgdGhlIG5leHQgcG93ZXIKKwkJY3ljbGUuIFdoZXRoZXIgYSB3YXJtIGJvb3QgKHJlYm9vdCkgd2lsbCBjbGVhciBhIFRQTSBjaGlwCisJCWZyb20gYSB0ZW1wX2RlYWN0aXZhdGVkIHN0YXRlIGlzIHBsYXRmb3JtIHNwZWNpZmljLgorCitXaGF0OgkJL3N5cy9jbGFzcy90cG0vdHBtWC9kZXZpY2UvdGltZW91dHMKK0RhdGU6CQlNYXJjaCAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjEKK0NvbnRhY3Q6CXRwbWRkLWRldmVsQGxpc3RzLnNmLm5ldAorRGVzY3JpcHRpb246CVRoZSAidGltZW91dHMiIHByb3BlcnR5IHNob3dzIHRoZSA0IHZlbmRvci1zcGVjaWZpYyB2YWx1ZXMKKwkJZm9yIHRoZSBUUE0ncyBpbnRlcmZhY2Ugc3BlYyB0aW1lb3V0cy4gVGhlIHVzZSBvZiB0aGVzZQorCQl0aW1lb3V0cyBpcyBkZWZpbmVkIGJ5IHRoZSBUUE0gaW50ZXJmYWNlIHNwZWMgdGhhdCB0aGUgY2hpcAorCQljb25mb3JtcyB0by4KKworCQlFeGFtcGxlIG91dHB1dDoKKworCQk3NTAwMDAgNzUwMDAwIDc1MDAwMCA3NTAwMDAgW29yaWdpbmFsXQorCisJCVRoZSBmb3VyIHRpbWVvdXQgdmFsdWVzIGFyZSBzaG93biBpbiB1c2Vjcywgd2l0aCBhIHRyYWlsaW5nCisJCSJbb3JpZ2luYWxdIiBvciAiW2FkanVzdGVkXSIgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIHZhbHVlcworCQl3ZXJlIHNjYWxlZCBieSB0aGUgZHJpdmVyIHRvIGJlIHJlcG9ydGVkIGluIHVzZWMgZnJvbSBtc2Vjcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1jbGFzcy11YmkgYi9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtY2xhc3MtdWJpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ZDQ3MWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtY2xhc3MtdWJpCkBAIC0wLDAgKzEsMjEyIEBACitXaGF0OgkJL3N5cy9jbGFzcy91YmkvCitEYXRlOgkJSnVseSAyMDA2CitLZXJuZWxWZXJzaW9uOgkyLjYuMjIKK0NvbnRhY3Q6CUFydGVtIEJpdHl1dHNraXkgPGRlZGVraW5kQGluZnJhZGVhZC5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIHViaS8gY2xhc3Mgc3ViLWRpcmVjdG9yeSBiZWxvbmdzIHRvIHRoZSBVQkkgc3Vic3lzdGVtIGFuZAorCQlwcm92aWRlcyBnZW5lcmFsIFVCSSBpbmZvcm1hdGlvbiwgcGVyLVVCSSBkZXZpY2UgaW5mb3JtYXRpb24KKwkJYW5kIHBlci1VQkkgdm9sdW1lIGluZm9ybWF0aW9uLgorCitXaGF0OgkJL3N5cy9jbGFzcy91YmkvdmVyc2lvbgorRGF0ZToJCUp1bHkgMjAwNgorS2VybmVsVmVyc2lvbjoJMi42LjIyCitDb250YWN0OglBcnRlbSBCaXR5dXRza2l5IDxkZWRla2luZEBpbmZyYWRlYWQub3JnPgorRGVzY3JpcHRpb246CisJCVRoaXMgZmlsZSBjb250YWlucyB2ZXJzaW9uIG9mIHRoZSBsYXRlc3Qgc3VwcG9ydGVkIFVCSSBvbi1tZWRpYQorCQlmb3JtYXQuIEN1cnJlbnRseSBpdCBpcyAxLCBhbmQgdGhlcmUgaXMgbm8gcGxhbiB0byBjaGFuZ2UgdGhpcy4KKwkJSG93ZXZlciwgaWYgaW4gdGhlIGZ1dHVyZSBVQkkgbmVlZHMgb24tZmxhc2ggZm9ybWF0IGNoYW5nZXMKKwkJd2hpY2ggY2Fubm90IGJlIGRvbmUgaW4gYSBjb21wYXRpYmxlIG1hbm5lciwgYSBuZXcgZm9ybWF0CisJCXZlcnNpb24gd2lsbCBiZSBhZGRlZC4gU28gdGhpcyBpcyBhIG1lY2hhbmlzbSBmb3IgcG9zc2libGUKKwkJZnV0dXJlIGJhY2t3YXJkLWNvbXBhdGlibGUgKGJ1dCBmb3J3YXJkLWluY29tcGF0aWJsZSkKKwkJaW1wcm92ZW1lbnRzLgorCitXaGF0OgkJL3N5cy9jbGFzcy91YmlYLworRGF0ZToJCUp1bHkgMjAwNgorS2VybmVsVmVyc2lvbjoJMi42LjIyCitDb250YWN0OglBcnRlbSBCaXR5dXRza2l5IDxkZWRla2luZEBpbmZyYWRlYWQub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2NsYXNzL3ViaTAsIC9zeXMvY2xhc3MvdWJpMSwgZXRjIGRpcmVjdG9yaWVzIGRlc2NyaWJlCisJCVVCSSBkZXZpY2VzIChVQkkgZGV2aWNlIDAsIDEsIGV0YykuIFRoZXkgY29udGFpbiBnZW5lcmFsIFVCSQorCQlkZXZpY2UgaW5mb3JtYXRpb24gYW5kIHBlciBVQkkgdm9sdW1lIGluZm9ybWF0aW9uIChlYWNoIFVCSQorCQlkZXZpY2UgbWF5IGhhdmUgbWFueSBVQkkgdm9sdW1lcykKKworV2hhdDoJCS9zeXMvY2xhc3MvdWJpL3ViaVgvYXZhaWxfZXJhc2VibG9ja3MKK0RhdGU6CQlKdWx5IDIwMDYKK0tlcm5lbFZlcnNpb246CTIuNi4yMgorQ29udGFjdDoJQXJ0ZW0gQml0eXV0c2tpeSA8ZGVkZWtpbmRAaW5mcmFkZWFkLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlBbW91bnQgb2YgYXZhaWxhYmxlIGxvZ2ljYWwgZXJhc2VibG9jay4gRm9yIGV4YW1wbGUsIG9uZSBtYXkKKwkJY3JlYXRlIGEgbmV3IFVCSSB2b2x1bWUgd2hpY2ggaGFzIHRoaXMgYW1vdW50IG9mIGxvZ2ljYWwKKwkJZXJhc2VibG9ja3MuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3ViaS91YmlYL2JhZF9wZWJfY291bnQKK0RhdGU6CQlKdWx5IDIwMDYKK0tlcm5lbFZlcnNpb246CTIuNi4yMgorQ29udGFjdDoJQXJ0ZW0gQml0eXV0c2tpeSA8ZGVkZWtpbmRAaW5mcmFkZWFkLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlDb3VudCBvZiBiYWQgcGh5c2ljYWwgZXJhc2VibG9ja3Mgb24gdGhlIHVuZGVybHlpbmcgTVREIGRldmljZS4KKworV2hhdDoJCS9zeXMvY2xhc3MvdWJpL3ViaVgvYmd0X2VuYWJsZWQKK0RhdGU6CQlKdWx5IDIwMDYKK0tlcm5lbFZlcnNpb246CTIuNi4yMgorQ29udGFjdDoJQXJ0ZW0gQml0eXV0c2tpeSA8ZGVkZWtpbmRAaW5mcmFkZWFkLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlDb250YWlucyBBU0NJSSAiMFxuIiBpZiB0aGUgVUJJIGJhY2tncm91bmQgdGhyZWFkIGlzIGRpc2FibGVkLAorCQlhbmQgQVNDSUkgIjFcbiIgaWYgaXQgaXMgZW5hYmxlZC4KKworV2hhdDoJCS9zeXMvY2xhc3MvdWJpL3ViaVgvZGV2CitEYXRlOgkJSnVseSAyMDA2CitLZXJuZWxWZXJzaW9uOgkyLjYuMjIKK0NvbnRhY3Q6CUFydGVtIEJpdHl1dHNraXkgPGRlZGVraW5kQGluZnJhZGVhZC5vcmc+CitEZXNjcmlwdGlvbjoKKwkJTWFqb3IgYW5kIG1pbm9yIG51bWJlcnMgb2YgdGhlIGNoYXJhY3RlciBkZXZpY2UgY29ycmVzcG9uZGluZworCQl0byB0aGlzIFVCSSBkZXZpY2UgKGluIDxtYWpvcj46PG1pbm9yPiBmb3JtYXQpLgorCitXaGF0OgkJL3N5cy9jbGFzcy91YmkvdWJpWC9lcmFzZWJsb2NrX3NpemUKK0RhdGU6CQlKdWx5IDIwMDYKK0tlcm5lbFZlcnNpb246CTIuNi4yMgorQ29udGFjdDoJQXJ0ZW0gQml0eXV0c2tpeSA8ZGVkZWtpbmRAaW5mcmFkZWFkLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlNYXhpbXVtIGxvZ2ljYWwgZXJhc2VibG9jayBzaXplIHRoaXMgVUJJIGRldmljZSBtYXkgcHJvdmlkZS4gVUJJCisJCXZvbHVtZXMgbWF5IGhhdmUgc21hbGxlciBsb2dpY2FsIGVyYXNlYmxvY2sgc2l6ZSBiZWNhdXNlIG9mIHRoZWlyCisJCWFsaWdubWVudC4KKworV2hhdDoJCS9zeXMvY2xhc3MvdWJpL3ViaVgvbWF4X2VjCitEYXRlOgkJSnVseSAyMDA2CitLZXJuZWxWZXJzaW9uOgkyLjYuMjIKK0NvbnRhY3Q6CUFydGVtIEJpdHl1dHNraXkgPGRlZGVraW5kQGluZnJhZGVhZC5vcmc+CitEZXNjcmlwdGlvbjoKKwkJTWF4aW11bSBwaHlzaWNhbCBlcmFzZWJsb2NrIGVyYXNlIGNvdW50ZXIgdmFsdWUuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3ViaS91YmlYL21heF92b2xfY291bnQKK0RhdGU6CQlKdWx5IDIwMDYKK0tlcm5lbFZlcnNpb246CTIuNi4yMgorQ29udGFjdDoJQXJ0ZW0gQml0eXV0c2tpeSA8ZGVkZWtpbmRAaW5mcmFkZWFkLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlNYXhpbXVtIG51bWJlciBvZiB2b2x1bWVzIHdoaWNoIHRoaXMgVUJJIGRldmljZSBtYXkgaGF2ZS4KKworV2hhdDoJCS9zeXMvY2xhc3MvdWJpL3ViaVgvbWluX2lvX3NpemUKK0RhdGU6CQlKdWx5IDIwMDYKK0tlcm5lbFZlcnNpb246CTIuNi4yMgorQ29udGFjdDoJQXJ0ZW0gQml0eXV0c2tpeSA8ZGVkZWtpbmRAaW5mcmFkZWFkLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlNaW5pbXVtIGlucHV0L291dHB1dCB1bml0IHNpemUuIEFsbCB0aGUgSS9PIG1heSBvbmx5IGJlIGRvbmUKKwkJaW4gZnJhY3Rpb25zIG9mIHRoZSBjb250YWluZWQgbnVtYmVyLgorCitXaGF0OgkJL3N5cy9jbGFzcy91YmkvdWJpWC9tdGRfbnVtCitEYXRlOgkJSmFudWFyeSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjUKK0NvbnRhY3Q6CUFydGVtIEJpdHl1dHNraXkgPGRlZGVraW5kQGluZnJhZGVhZC5vcmc+CitEZXNjcmlwdGlvbjoKKwkJTnVtYmVyIG9mIHRoZSB1bmRlcmx5aW5nIE1URCBkZXZpY2UuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3ViaS91YmlYL3Jlc2VydmVkX2Zvcl9iYWQKK0RhdGU6CQlKdWx5IDIwMDYKK0tlcm5lbFZlcnNpb246CTIuNi4yMgorQ29udGFjdDoJQXJ0ZW0gQml0eXV0c2tpeSA8ZGVkZWtpbmRAaW5mcmFkZWFkLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlOdW1iZXIgb2YgcGh5c2ljYWwgZXJhc2VibG9ja3MgcmVzZXJ2ZWQgZm9yIGJhZCBibG9jayBoYW5kbGluZy4KKworV2hhdDoJCS9zeXMvY2xhc3MvdWJpL3ViaVgvdG90YWxfZXJhc2VibG9ja3MKK0RhdGU6CQlKdWx5IDIwMDYKK0tlcm5lbFZlcnNpb246CTIuNi4yMgorQ29udGFjdDoJQXJ0ZW0gQml0eXV0c2tpeSA8ZGVkZWtpbmRAaW5mcmFkZWFkLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUb3RhbCBudW1iZXIgb2YgZ29vZCAobm90IG1hcmtlZCBhcyBiYWQpIHBoeXNpY2FsIGVyYXNlYmxvY2tzIG9uCisJCXRoZSB1bmRlcmx5aW5nIE1URCBkZXZpY2UuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3ViaS91YmlYL3ZvbHVtZXNfY291bnQKK0RhdGU6CQlKdWx5IDIwMDYKK0tlcm5lbFZlcnNpb246CTIuNi4yMgorQ29udGFjdDoJQXJ0ZW0gQml0eXV0c2tpeSA8ZGVkZWtpbmRAaW5mcmFkZWFkLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlDb3VudCBvZiB2b2x1bWVzIG9uIHRoaXMgVUJJIGRldmljZS4KKworV2hhdDoJCS9zeXMvY2xhc3MvdWJpL3ViaVgvdWJpWF9ZLworRGF0ZToJCUp1bHkgMjAwNgorS2VybmVsVmVyc2lvbjoJMi42LjIyCitDb250YWN0OglBcnRlbSBCaXR5dXRza2l5IDxkZWRla2luZEBpbmZyYWRlYWQub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2NsYXNzL3ViaS91YmlYL3ViaVhfMC8sIC9zeXMvY2xhc3MvdWJpL3ViaVgvdWJpWF8xLywKKwkJZXRjIGRpcmVjdG9yaWVzIGRlc2NyaWJlIFVCSSB2b2x1bWVzIG9uIFVCSSBkZXZpY2UgWCAodm9sdW1lcworCQkwLCAxLCBldGMpLgorCitXaGF0OgkJL3N5cy9jbGFzcy91YmkvdWJpWC91YmlYX1kvYWxpZ25tZW50CitEYXRlOgkJSnVseSAyMDA2CitLZXJuZWxWZXJzaW9uOgkyLjYuMjIKK0NvbnRhY3Q6CUFydGVtIEJpdHl1dHNraXkgPGRlZGVraW5kQGluZnJhZGVhZC5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVm9sdW1lIGFsaWdubWVudCAtIHRoZSB2YWx1ZSB0aGUgbG9naWNhbCBlcmFzZWJsb2NrIHNpemUgb2YKKwkJdGhpcyB2b2x1bWUgaGFzIHRvIGJlIGFsaWduZWQgb24uIEZvciBleGFtcGxlLCAyMDQ4IG1lYW5zIHRoYXQKKwkJbG9naWNhbCBlcmFzZWJsb2NrIHNpemUgaXMgbXVsdGlwbGUgb2YgMjA0OC4gSW4gb3RoZXIgd29yZHMsCisJCXZvbHVtZSBsb2dpY2FsIGVyYXNlYmxvY2sgc2l6ZSBpcyBVQkkgZGV2aWNlIGxvZ2ljYWwgZXJhc2VibG9jaworCQlzaXplIGFsaWduZWQgdG8gdGhlIGFsaWdubWVudCB2YWx1ZS4KKworV2hhdDoJCS9zeXMvY2xhc3MvdWJpL3ViaVgvdWJpWF9ZL2NvcnJ1cHRlZAorRGF0ZToJCUp1bHkgMjAwNgorS2VybmVsVmVyc2lvbjoJMi42LjIyCitDb250YWN0OglBcnRlbSBCaXR5dXRza2l5IDxkZWRla2luZEBpbmZyYWRlYWQub3JnPgorRGVzY3JpcHRpb246CisJCUNvbnRhaW5zIEFTQ0lJICIwXG4iIGlmIHRoZSBVQkkgdm9sdW1lIGlzIE9LLCBhbmQgQVNDSUkgIjFcbiIKKwkJaWYgaXQgaXMgY29ycnVwdGVkIChlLmcuLCBkdWUgdG8gYW4gaW50ZXJydXB0ZWQgdm9sdW1lIHVwZGF0ZSkuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3ViaS91YmlYL3ViaVhfWS9kYXRhX2J5dGVzCitEYXRlOgkJSnVseSAyMDA2CitLZXJuZWxWZXJzaW9uOgkyLjYuMjIKK0NvbnRhY3Q6CUFydGVtIEJpdHl1dHNraXkgPGRlZGVraW5kQGluZnJhZGVhZC5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIGFtb3VudCBvZiBkYXRhIHRoaXMgdm9sdW1lIGNvbnRhaW5zLiBUaGlzIHZhbHVlIG1ha2VzIHNlbnNlCisJCW9ubHkgZm9yIHN0YXRpYyB2b2x1bWVzLCBhbmQgZm9yIGR5bmFtaWMgdm9sdW1lIGl0IGVxdWl2YWxlbnQKKwkJdG8gdGhlIHRvdGFsIHZvbHVtZSBzaXplIGluIGJ5dGVzLgorCitXaGF0OgkJL3N5cy9jbGFzcy91YmkvdWJpWC91YmlYX1kvZGV2CitEYXRlOgkJSnVseSAyMDA2CitLZXJuZWxWZXJzaW9uOgkyLjYuMjIKK0NvbnRhY3Q6CUFydGVtIEJpdHl1dHNraXkgPGRlZGVraW5kQGluZnJhZGVhZC5vcmc+CitEZXNjcmlwdGlvbjoKKwkJTWFqb3IgYW5kIG1pbm9yIG51bWJlcnMgb2YgdGhlIGNoYXJhY3RlciBkZXZpY2UgY29ycmVzcG9uZGluZworCQl0byB0aGlzIFVCSSB2b2x1bWUgKGluIDxtYWpvcj46PG1pbm9yPiBmb3JtYXQpLgorCitXaGF0OgkJL3N5cy9jbGFzcy91YmkvdWJpWC91YmlYX1kvbmFtZQorRGF0ZToJCUp1bHkgMjAwNgorS2VybmVsVmVyc2lvbjoJMi42LjIyCitDb250YWN0OglBcnRlbSBCaXR5dXRza2l5IDxkZWRla2luZEBpbmZyYWRlYWQub3JnPgorRGVzY3JpcHRpb246CisJCVZvbHVtZSBuYW1lLgorCitXaGF0OgkJL3N5cy9jbGFzcy91YmkvdWJpWC91YmlYX1kvcmVzZXJ2ZWRfZWJzCitEYXRlOgkJSnVseSAyMDA2CitLZXJuZWxWZXJzaW9uOgkyLjYuMjIKK0NvbnRhY3Q6CUFydGVtIEJpdHl1dHNraXkgPGRlZGVraW5kQGluZnJhZGVhZC5vcmc+CitEZXNjcmlwdGlvbjoKKwkJQ291bnQgb2YgcGh5c2ljYWwgZXJhc2VibG9jayByZXNlcnZlZCBmb3IgdGhpcyB2b2x1bWUuCisJCUVxdWl2YWxlbnQgdG8gdGhlIHZvbHVtZSBzaXplIGluIGxvZ2ljYWwgZXJhc2VibG9ja3MuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3ViaS91YmlYL3ViaVhfWS90eXBlCitEYXRlOgkJSnVseSAyMDA2CitLZXJuZWxWZXJzaW9uOgkyLjYuMjIKK0NvbnRhY3Q6CUFydGVtIEJpdHl1dHNraXkgPGRlZGVraW5kQGluZnJhZGVhZC5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVm9sdW1lIHR5cGUuIENvbnRhaW5zIEFTQ0lJICJkeW5hbWljXG4iIGZvciBkeW5hbWljIHZvbHVtZXMgYW5kCisJCSJzdGF0aWNcbiIgZm9yIHN0YXRpYyB2b2x1bWVzLgorCitXaGF0OgkJL3N5cy9jbGFzcy91YmkvdWJpWC91YmlYX1kvdXBkX21hcmtlcgorRGF0ZToJCUp1bHkgMjAwNgorS2VybmVsVmVyc2lvbjoJMi42LjIyCitDb250YWN0OglBcnRlbSBCaXR5dXRza2l5IDxkZWRla2luZEBpbmZyYWRlYWQub3JnPgorRGVzY3JpcHRpb246CisJCUNvbnRhaW5zIEFTQ0lJICIwXG4iIGlmIHRoZSB1cGRhdGUgbWFya2VyIGlzIG5vdCBzZXQgZm9yIHRoaXMKKwkJdm9sdW1lLCBhbmQgIjFcbiIgaWYgaXQgaXMgc2V0LiBUaGUgdXBkYXRlIG1hcmtlciBpcyBzZXQgd2hlbgorCQl2b2x1bWUgdXBkYXRlIHN0YXJ0cywgYW5kIGNsZWFuZWQgd2hlbiBpdCBlbmRzLiBTbyB0aGUgcHJlc2VuY2UKKwkJb2YgdGhlIHVwZGF0ZSBtYXJrZXIgaW5kaWNhdGVzIHRoYXQgdGhlIHZvbHVtZSBpcyBiZWluZyB1cGRhdGVkCisJCWF0IHRoZSBtb21lbnQgb2YgdGhlIHVwZGF0ZSB3YXMgaW50ZXJydXB0ZWQuIFRoZSBsYXRlciBtYXkgYmUKKwkJY2hlY2tlZCB1c2luZyB0aGUgImNvcnJ1cHRlZCIgc3lzZnMgZmlsZS4KKworV2hhdDoJCS9zeXMvY2xhc3MvdWJpL3ViaVgvdWJpWF9ZL3VzYWJsZV9lYl9zaXplCitEYXRlOgkJSnVseSAyMDA2CitLZXJuZWxWZXJzaW9uOgkyLjYuMjIKK0NvbnRhY3Q6CUFydGVtIEJpdHl1dHNraXkgPGRlZGVraW5kQGluZnJhZGVhZC5vcmc+CitEZXNjcmlwdGlvbjoKKwkJTG9naWNhbCBlcmFzZWJsb2NrIHNpemUgb2YgdGhpcyB2b2x1bWUuIEVxdWl2YWxlbnQgdG8gbG9naWNhbAorCQllcmFzZWJsb2NrIHNpemUgb2YgdGhlIGRldmljZSBhbGlnbmVkIG9uIHRoZSB2b2x1bWUgYWxpZ25tZW50CisJCXZhbHVlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWNsYXNzLXVkYyBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1jbGFzcy11ZGMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVkM2RhYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1jbGFzcy11ZGMKQEAgLTAsMCArMSw5MyBAQAorV2hhdDoJCS9zeXMvY2xhc3MvdWRjLzx1ZGM+L2FfYWx0X2hucF9zdXBwb3J0CitEYXRlOgkJSnVuZSAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjEKK0NvbnRhY3Q6CUZlbGlwZSBCYWxiaSA8YmFsYmlAa2VybmVsLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgaWYgYW4gT1RHIEEtSG9zdCBzdXBwb3J0cyBITlAgYXQgYW4gYWx0ZXJuYXRlIHBvcnQuCitVc2VyczoKKworV2hhdDoJCS9zeXMvY2xhc3MvdWRjLzx1ZGM+L2FfaG5wX3N1cHBvcnQKK0RhdGU6CQlKdW5lIDIwMTEKK0tlcm5lbFZlcnNpb246CTMuMQorQ29udGFjdDoJRmVsaXBlIEJhbGJpIDxiYWxiaUBrZXJuZWwub3JnPgorRGVzY3JpcHRpb246CisJCUluZGljYXRlcyBpZiBhbiBPVEcgQS1Ib3N0IHN1cHBvcnRzIEhOUCBhdCB0aGlzIHBvcnQuCitVc2VyczoKKworV2hhdDoJCS9zeXMvY2xhc3MvdWRjLzx1ZGM+L2JfaG5wX2VuYWJsZQorRGF0ZToJCUp1bmUgMjAxMQorS2VybmVsVmVyc2lvbjoJMy4xCitDb250YWN0OglGZWxpcGUgQmFsYmkgPGJhbGJpQGtlcm5lbC5vcmc+CitEZXNjcmlwdGlvbjoKKwkJSW5kaWNhdGVzIGlmIGFuIE9URyBBLUhvc3QgZW5hYmxlZCBITlAgc3VwcG9ydC4KK1VzZXJzOgorCitXaGF0OgkJL3N5cy9jbGFzcy91ZGMvPHVkYz4vY3VycmVudF9zcGVlZAorRGF0ZToJCUp1bmUgMjAxMQorS2VybmVsVmVyc2lvbjoJMy4xCitDb250YWN0OglGZWxpcGUgQmFsYmkgPGJhbGJpQGtlcm5lbC5vcmc+CitEZXNjcmlwdGlvbjoKKwkJSW5kaWNhdGVzIHRoZSBjdXJyZW50IG5lZ290aWF0ZWQgc3BlZWQgYXQgdGhpcyBwb3J0LgorVXNlcnM6CisKK1doYXQ6CQkvc3lzL2NsYXNzL3VkYy88dWRjPi9pc19hX3BlcmlwaGVyYWwKK0RhdGU6CQlKdW5lIDIwMTEKK0tlcm5lbFZlcnNpb246CTMuMQorQ29udGFjdDoJRmVsaXBlIEJhbGJpIDxiYWxiaUBrZXJuZWwub3JnPgorRGVzY3JpcHRpb246CisJCUluZGljYXRlcyB0aGF0IHRoaXMgcG9ydCBpcyB0aGUgZGVmYXVsdCBIb3N0IG9uIGFuIE9URyBzZXNzaW9uCisJCWJ1dCBITlAgd2FzIHVzZWQgdG8gc3dpdGNoIHJvbGVzLgorVXNlcnM6CisKK1doYXQ6CQkvc3lzL2NsYXNzL3VkYy88dWRjPi9pc19vdGcKK0RhdGU6CQlKdW5lIDIwMTEKK0tlcm5lbFZlcnNpb246CTMuMQorQ29udGFjdDoJRmVsaXBlIEJhbGJpIDxiYWxiaUBrZXJuZWwub3JnPgorRGVzY3JpcHRpb246CisJCUluZGljYXRlcyB0aGF0IHRoaXMgcG9ydCBzdXBwb3J0IE9URy4KK1VzZXJzOgorCitXaGF0OgkJL3N5cy9jbGFzcy91ZGMvPHVkYz4vbWF4aW11bV9zcGVlZAorRGF0ZToJCUp1bmUgMjAxMQorS2VybmVsVmVyc2lvbjoJMy4xCitDb250YWN0OglGZWxpcGUgQmFsYmkgPGJhbGJpQGtlcm5lbC5vcmc+CitEZXNjcmlwdGlvbjoKKwkJSW5kaWNhdGVzIHRoZSBtYXhpbXVtIFVTQiBzcGVlZCBzdXBwb3J0ZWQgYnkgdGhpcyBwb3J0LgorVXNlcnM6CisKK1doYXQ6CQkvc3lzL2NsYXNzL3VkYy88dWRjPi9tYXhpbXVtX3NwZWVkCitEYXRlOgkJSnVuZSAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjEKK0NvbnRhY3Q6CUZlbGlwZSBCYWxiaSA8YmFsYmlAa2VybmVsLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIG1heGltdW0gVVNCIHNwZWVkIHN1cHBvcnRlZCBieSB0aGlzIHBvcnQuCitVc2VyczoKKworV2hhdDoJCS9zeXMvY2xhc3MvdWRjLzx1ZGM+L3NvZnRfY29ubmVjdAorRGF0ZToJCUp1bmUgMjAxMQorS2VybmVsVmVyc2lvbjoJMy4xCitDb250YWN0OglGZWxpcGUgQmFsYmkgPGJhbGJpQGtlcm5lbC5vcmc+CitEZXNjcmlwdGlvbjoKKwkJQWxsb3dzIHVzZXJzIHRvIGRpc2Nvbm5lY3QgZGF0YSBwdWxsdXAgcmVzaXN0b3JzIHRodXMgY2F1c2luZyBhCisJCWxvZ2ljYWwgZGlzY29ubmVjdGlvbiBmcm9tIHRoZSBVU0IgSG9zdC4KK1VzZXJzOgorCitXaGF0OgkJL3N5cy9jbGFzcy91ZGMvPHVkYz4vc3JwCitEYXRlOgkJSnVuZSAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjEKK0NvbnRhY3Q6CUZlbGlwZSBCYWxiaSA8YmFsYmlAa2VybmVsLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlBbGxvd3MgdXNlcnMgdG8gbWFudWFsbHkgc3RhcnQgU2Vzc2lvbiBSZXF1ZXN0IFByb3RvY29sLgorVXNlcnM6CisKK1doYXQ6CQkvc3lzL2NsYXNzL3VkYy88dWRjPi9zdGF0ZQorRGF0ZToJCUp1bmUgMjAxMQorS2VybmVsVmVyc2lvbjoJMy4xCitDb250YWN0OglGZWxpcGUgQmFsYmkgPGJhbGJpQGtlcm5lbC5vcmc+CitEZXNjcmlwdGlvbjoKKwkJSW5kaWNhdGVzIGN1cnJlbnQgc3RhdGUgb2YgdGhlIFVTQiBEZXZpY2UgQ29udHJvbGxlci4gVmFsaWQKKwkJc3RhdGVzIGFyZTogJ25vdC1hdHRhY2hlZCcsICdhdHRhY2hlZCcsICdwb3dlcmVkJywKKwkJJ3JlY29ubmVjdGluZycsICd1bmF1dGhlbnRpY2F0ZWQnLCAnZGVmYXVsdCcsICdhZGRyZXNzZWQnLAorCQknY29uZmlndXJlZCcsIGFuZCAnc3VzcGVuZGVkJzsgaG93ZXZlciBub3QgYWxsIFVTQiBEZXZpY2UKKwkJQ29udHJvbGxlcnMgc3VwcG9ydCByZXBvcnRpbmcgYWxsIHN0YXRlcy4KK1VzZXJzOgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWRldmljZXMgYi9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtZGV2aWNlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2Y3OGI4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWRldmljZXMKQEAgLTAsMCArMSwxMCBAQAorIyBOb3RlOiBUaGlzIGRvY3VtZW50cyBhZGRpdGlvbmFsIHByb3BlcnRpZXMgb2YgYW55IGRldmljZSBiZXlvbmQgd2hhdAorIyBpcyBkb2N1bWVudGVkIGluIERvY3VtZW50YXRpb24vc3lzZnMtcnVsZXMudHh0CisKK1doYXQ6CQkvc3lzL2RldmljZXMvKi9vZl9wYXRoCitEYXRlOgkJRmVicnVhcnkgMjAxNQorQ29udGFjdDoJRGV2aWNlIFRyZWUgbWFpbGluZyBsaXN0IDxkZXZpY2V0cmVlQHZnZXIua2VybmVsLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlBbnkgZGV2aWNlIGFzc29jaWF0ZWQgd2l0aCBhIGRldmljZS10cmVlIG5vZGUgd2lsbCBoYXZlCisJCWFuIG9mX3BhdGggc3ltbGluayBwb2ludGluZyB0byB0aGUgY29ycmVzcG9uZGluZyBkZXZpY2UKKwkJbm9kZSBpbiAvc3lzL2Zpcm13YXJlL2RldmljZXRyZWUvCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtZGV2aWNlcy1ub2RlIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWRldmljZXMtbm9kZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjJkMGYwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWRldmljZXMtbm9kZQpAQCAtMCwwICsxLDkzIEBACitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS9ub2RlL3Bvc3NpYmxlCitEYXRlOgkJT2N0b2JlciAyMDAyCitDb250YWN0OglMaW51eCBNZW1vcnkgTWFuYWdlbWVudCBsaXN0IDxsaW51eC1tbUBrdmFjay5vcmc+CitEZXNjcmlwdGlvbjoKKwkJTm9kZXMgdGhhdCBjb3VsZCBiZSBwb3NzaWJseSBiZWNvbWUgb25saW5lIGF0IHNvbWUgcG9pbnQuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvc3lzdGVtL25vZGUvb25saW5lCitEYXRlOgkJT2N0b2JlciAyMDAyCitDb250YWN0OglMaW51eCBNZW1vcnkgTWFuYWdlbWVudCBsaXN0IDxsaW51eC1tbUBrdmFjay5vcmc+CitEZXNjcmlwdGlvbjoKKwkJTm9kZXMgdGhhdCBhcmUgb25saW5lLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS9ub2RlL2hhc19ub3JtYWxfbWVtb3J5CitEYXRlOgkJT2N0b2JlciAyMDAyCitDb250YWN0OglMaW51eCBNZW1vcnkgTWFuYWdlbWVudCBsaXN0IDxsaW51eC1tbUBrdmFjay5vcmc+CitEZXNjcmlwdGlvbjoKKwkJTm9kZXMgdGhhdCBoYXZlIHJlZ3VsYXIgbWVtb3J5LgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS9ub2RlL2hhc19jcHUKK0RhdGU6CQlPY3RvYmVyIDIwMDIKK0NvbnRhY3Q6CUxpbnV4IE1lbW9yeSBNYW5hZ2VtZW50IGxpc3QgPGxpbnV4LW1tQGt2YWNrLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlOb2RlcyB0aGF0IGhhdmUgb25lIG9yIG1vcmUgQ1BVcy4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vbm9kZS9oYXNfaGlnaF9tZW1vcnkKK0RhdGU6CQlPY3RvYmVyIDIwMDIKK0NvbnRhY3Q6CUxpbnV4IE1lbW9yeSBNYW5hZ2VtZW50IGxpc3QgPGxpbnV4LW1tQGt2YWNrLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlOb2RlcyB0aGF0IGhhdmUgcmVndWxhciBvciBoaWdoIG1lbW9yeS4KKwkJRGVwZW5kcyBvbiBDT05GSUdfSElHSE1FTS4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vbm9kZS9ub2RlWAorRGF0ZToJCU9jdG9iZXIgMjAwMgorQ29udGFjdDoJTGludXggTWVtb3J5IE1hbmFnZW1lbnQgbGlzdCA8bGludXgtbW1Aa3ZhY2sub3JnPgorRGVzY3JpcHRpb246CisJCVdoZW4gQ09ORklHX05VTUEgaXMgZW5hYmxlZCwgdGhpcyBpcyBhIGRpcmVjdG9yeSBjb250YWluaW5nCisJCWluZm9ybWF0aW9uIG9uIG5vZGUgWCBzdWNoIGFzIHdoYXQgQ1BVcyBhcmUgbG9jYWwgdG8gdGhlCisJCW5vZGUuIEVhY2ggZmlsZSBpcyBkZXRhaWxlZCBuZXh0LgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS9ub2RlL25vZGVYL2NwdW1hcAorRGF0ZToJCU9jdG9iZXIgMjAwMgorQ29udGFjdDoJTGludXggTWVtb3J5IE1hbmFnZW1lbnQgbGlzdCA8bGludXgtbW1Aa3ZhY2sub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSBub2RlJ3MgY3B1bWFwLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS9ub2RlL25vZGVYL2NwdWxpc3QKK0RhdGU6CQlPY3RvYmVyIDIwMDIKK0NvbnRhY3Q6CUxpbnV4IE1lbW9yeSBNYW5hZ2VtZW50IGxpc3QgPGxpbnV4LW1tQGt2YWNrLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgQ1BVcyBhc3NvY2lhdGVkIHRvIHRoZSBub2RlLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS9ub2RlL25vZGVYL21lbWluZm8KK0RhdGU6CQlPY3RvYmVyIDIwMDIKK0NvbnRhY3Q6CUxpbnV4IE1lbW9yeSBNYW5hZ2VtZW50IGxpc3QgPGxpbnV4LW1tQGt2YWNrLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlQcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbm9kZSdzIGRpc3RyaWJ1dGlvbiBhbmQgbWVtb3J5CisJCXV0aWxpemF0aW9uLiBTaW1pbGFyIHRvIC9wcm9jL21lbWluZm8sIHNlZSBEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MudHh0CisKK1doYXQ6CQkvc3lzL2RldmljZXMvc3lzdGVtL25vZGUvbm9kZVgvbnVtYXN0YXQKK0RhdGU6CQlPY3RvYmVyIDIwMDIKK0NvbnRhY3Q6CUxpbnV4IE1lbW9yeSBNYW5hZ2VtZW50IGxpc3QgPGxpbnV4LW1tQGt2YWNrLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgbm9kZSdzIGhpdC9taXNzIHN0YXRpc3RpY3MsIGluIHVuaXRzIG9mIHBhZ2VzLgorCQlTZWUgRG9jdW1lbnRhdGlvbi9udW1hc3RhdC50eHQKKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vbm9kZS9ub2RlWC9kaXN0YW5jZQorRGF0ZToJCU9jdG9iZXIgMjAwMgorQ29udGFjdDoJTGludXggTWVtb3J5IE1hbmFnZW1lbnQgbGlzdCA8bGludXgtbW1Aa3ZhY2sub3JnPgorRGVzY3JpcHRpb246CisJCURpc3RhbmNlIGJldHdlZW4gdGhlIG5vZGUgYW5kIGFsbCB0aGUgb3RoZXIgbm9kZXMKKwkJaW4gdGhlIHN5c3RlbS4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vbm9kZS9ub2RlWC92bXN0YXQKK0RhdGU6CQlPY3RvYmVyIDIwMDIKK0NvbnRhY3Q6CUxpbnV4IE1lbW9yeSBNYW5hZ2VtZW50IGxpc3QgPGxpbnV4LW1tQGt2YWNrLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgbm9kZSdzIHpvbmVkIHZpcnR1YWwgbWVtb3J5IHN0YXRpc3RpY3MuCisJCVRoaXMgaXMgYSBzdXBlcnNldCBvZiBudW1hc3RhdC4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vbm9kZS9ub2RlWC9jb21wYWN0CitEYXRlOgkJRmVicnVhcnkgMjAxMAorQ29udGFjdDoJTWVsIEdvcm1hbiA8bWVsQGNzbi51bC5pZT4KK0Rlc2NyaXB0aW9uOgorCQlXaGVuIHRoaXMgZmlsZSBpcyB3cml0dGVuIHRvLCBhbGwgbWVtb3J5IHdpdGhpbiB0aGF0IG5vZGUKKwkJd2lsbCBiZSBjb21wYWN0ZWQuIFdoZW4gaXQgY29tcGxldGVzLCBtZW1vcnkgd2lsbCBiZSBmcmVlZAorCQlpbnRvIGJsb2NrcyB3aGljaCBoYXZlIGFzIG1hbnkgY29udGlndW91cyBwYWdlcyBhcyBwb3NzaWJsZQorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS9ub2RlL25vZGVYL2h1Z2VwYWdlcy9odWdlcGFnZXMtPHNpemU+LworRGF0ZToJCURlY2VtYmVyIDIwMDkKK0NvbnRhY3Q6CUxlZSBTY2hlcm1lcmhvcm4gPGxlZS5zY2hlcm1lcmhvcm5AaHAuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSBub2RlJ3MgaHVnZSBwYWdlIHNpemUgY29udHJvbC9xdWVyeSBhdHRyaWJ1dGVzLgorCQlTZWUgRG9jdW1lbnRhdGlvbi92bS9odWdldGxicGFnZS50eHQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtZGV2aWNlcy1zeXN0ZW0tY3B1IGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWRldmljZXMtc3lzdGVtLWNwdQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2MxMzNlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWRldmljZXMtc3lzdGVtLWNwdQpAQCAtMCwwICsxLDI1IEBACitXaGF0OiAJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2RzY3JfZGVmYXVsdAorRGF0ZToJCTEzLU1heS0yMDE0CitLZXJuZWxWZXJzaW9uOgl2My4xNS4wCitDb250YWN0OgorRGVzY3JpcHRpb246CVdyaXRlcyBhcmUgZXF1aXZhbGVudCB0byB3cml0aW5nIHRvCisJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdU4vZHNjciBvbiBhbGwgQ1BVcy4KKwkJUmVhZHMgcmV0dXJuIHRoZSBsYXN0IHdyaXR0ZW4gdmFsdWUgb3IgMC4KKwkJVGhpcyB2YWx1ZSBpcyBub3QgYSBnbG9iYWwgZGVmYXVsdDogaXQgaXMgYSB3YXkgdG8gc2V0CisJCWFsbCBwZXItQ1BVIGRlZmF1bHRzIGF0IHRoZSBzYW1lIHRpbWUuCitWYWx1ZXM6CQk2NCBiaXQgdW5zaWduZWQgaW50ZWdlciAoYml0IGZpZWxkKQorCitXaGF0OiAJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdVswLTldKy9kc2NyCitEYXRlOgkJMTMtTWF5LTIwMTQKK0tlcm5lbFZlcnNpb246CXYzLjE1LjAKK0NvbnRhY3Q6CitEZXNjcmlwdGlvbjoJRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIERhdGEgU3RyZWFtIENvbnRyb2wgUmVnaXN0ZXIgKERTQ1IpIG9uCisJCWEgQ1BVLgorCQlUaGlzIGRlZmF1bHQgdmFsdWUgaXMgdXNlZCB3aGVuIHRoZSBrZXJuZWwgaXMgZXhlY3V0aW5nIGFuZAorCQlmb3IgYW55IHByb2Nlc3MgdGhhdCBoYXMgbm90IHNldCB0aGUgRFNDUiBpdHNlbGYuCisJCUlmIGEgcHJvY2VzcyBldmVyIHNldHMgdGhlIERTQ1IgKHZpYSBkaXJlY3QgYWNjZXNzIHRvIHRoZQorCQlTUFIpIHRoYXQgdmFsdWUgd2lsbCBiZSBwZXJzaXN0ZWQgZm9yIHRoYXQgcHJvY2VzcyBhbmQgdXNlZAorCQlvbiBhbnkgQ1BVIHdoZXJlIGl0IGV4ZWN1dGVzIChvdmVycmlkaW5nIHRoZSB2YWx1ZSBkZXNjcmliZWQKKwkJaGVyZSkuCisJCUlmIHNldCBieSBhIHByb2Nlc3MgaXQgd2lsbCBiZSBpbmhlcml0ZWQgYnkgY2hpbGQgcHJvY2Vzc2VzLgorVmFsdWVzOgkJNjQgYml0IHVuc2lnbmVkIGludGVnZXIgKGJpdCBmaWVsZCkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1kZXZpY2VzLXN5c3RlbS14ZW5fbWVtb3J5IGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWRldmljZXMtc3lzdGVtLXhlbl9tZW1vcnkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FhMzExZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1kZXZpY2VzLXN5c3RlbS14ZW5fbWVtb3J5CkBAIC0wLDAgKzEsNzcgQEAKK1doYXQ6CQkvc3lzL2RldmljZXMvc3lzdGVtL3hlbl9tZW1vcnkveGVuX21lbW9yeTAvbWF4X3JldHJ5X2NvdW50CitEYXRlOgkJTWF5IDIwMTEKK0tlcm5lbFZlcnNpb246CTIuNi4zOQorQ29udGFjdDoJS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSBtYXhpbXVtIG51bWJlciBvZiB0aW1lcyB0aGUgYmFsbG9vbiBkcml2ZXIgd2lsbAorCQlhdHRlbXB0IHRvIGluY3JlYXNlIHRoZSBiYWxsb29uIGJlZm9yZSBnaXZpbmcgdXAuICBTZWUKKwkJYWxzbyAncmV0cnlfY291bnQnIGJlbG93LgorCQlBIHZhbHVlIG9mIHplcm8gbWVhbnMgcmV0cnkgZm9yZXZlciBhbmQgaXMgdGhlIGRlZmF1bHQgb25lLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS94ZW5fbWVtb3J5L3hlbl9tZW1vcnkwL21heF9zY2hlZHVsZV9kZWxheQorRGF0ZToJCU1heSAyMDExCitLZXJuZWxWZXJzaW9uOgkyLjYuMzkKK0NvbnRhY3Q6CUtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgbGltaXQgdGhhdCAnc2NoZWR1bGVfZGVsYXknIChzZWUgYmVsb3cpIHdpbGwgYmUKKwkJaW5jcmVhc2VkIHRvLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAzMiBzZWNvbmRzLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS94ZW5fbWVtb3J5L3hlbl9tZW1vcnkwL3JldHJ5X2NvdW50CitEYXRlOgkJTWF5IDIwMTEKK0tlcm5lbFZlcnNpb246CTIuNi4zOQorQ29udGFjdDoJS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSBjdXJyZW50IG51bWJlciBvZiB0aW1lcyB0aGF0IHRoZSBiYWxsb29uIGRyaXZlcgorCQloYXMgYXR0ZW1wdGVkIHRvIGluY3JlYXNlIHRoZSBzaXplIG9mIHRoZSBiYWxsb29uLgorCQlUaGUgZGVmYXVsdCB2YWx1ZSBpcyBvbmUuIFdpdGggbWF4X3JldHJ5X2NvdW50IGJlaW5nCisJCXplcm8gKHVubGltaXRlZCksIHRoaXMgbWVhbnMgdGhhdCB0aGUgZHJpdmVyIHdpbGwgYXR0ZW1wdAorCQl0byByZXRyeSB3aXRoIGEgJ3NjaGVkdWxlX2RlbGF5JyBkZWxheS4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0veGVuX21lbW9yeS94ZW5fbWVtb3J5MC9zY2hlZHVsZV9kZWxheQorRGF0ZToJCU1heSAyMDExCitLZXJuZWxWZXJzaW9uOgkyLjYuMzkKK0NvbnRhY3Q6CUtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgdGltZSAoaW4gc2Vjb25kcykgdG8gd2FpdCBiZXR3ZWVuIGF0dGVtcHRzIHRvCisJCWluY3JlYXNlIHRoZSBiYWxsb29uLiAgRWFjaCB0aW1lIHRoZSBiYWxsb29uIGNhbm5vdCBiZQorCQlpbmNyZWFzZWQsICdzY2hlZHVsZV9kZWxheScgaXMgaW5jcmVhc2VkICh1bnRpbAorCQknbWF4X3NjaGVkdWxlX2RlbGF5JyBpcyByZWFjaGVkIGF0IHdoaWNoIHBvaW50IGl0CisJCXdpbGwgdXNlIHRoZSBtYXggdmFsdWUpLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS94ZW5fbWVtb3J5L3hlbl9tZW1vcnkwL3RhcmdldAorRGF0ZToJCUFwcmlsIDIwMDgKK0tlcm5lbFZlcnNpb246CTIuNi4yNgorQ29udGFjdDoJS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSB0YXJnZXQgbnVtYmVyIG9mIHBhZ2VzIHRvIGFkanVzdCB0aGlzIGRvbWFpbidzCisJCW1lbW9yeSByZXNlcnZhdGlvbiB0by4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0veGVuX21lbW9yeS94ZW5fbWVtb3J5MC90YXJnZXRfa2IKK0RhdGU6CQlBcHJpbCAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CUtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlBcyB0YXJnZXQgYWJvdmUsIGV4Y2VwdCB0aGUgdmFsdWUgaXMgaW4gS2lCLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS94ZW5fbWVtb3J5L3hlbl9tZW1vcnkwL2luZm8vY3VycmVudF9rYgorRGF0ZToJCUFwcmlsIDIwMDgKK0tlcm5lbFZlcnNpb246CTIuNi4yNgorQ29udGFjdDoJS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgorRGVzY3JpcHRpb246CisJCUN1cnJlbnQgc2l6ZSAoaW4gS2lCKSBvZiB0aGlzIGRvbWFpbidzIG1lbW9yeQorCQlyZXNlcnZhdGlvbi4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0veGVuX21lbW9yeS94ZW5fbWVtb3J5MC9pbmZvL2hpZ2hfa2IKK0RhdGU6CQlBcHJpbCAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CUtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlBbW91bnQgKGluIEtpQikgb2YgaGlnaCBtZW1vcnkgaW4gdGhlIGJhbGxvb24uCisKK1doYXQ6CQkvc3lzL2RldmljZXMvc3lzdGVtL3hlbl9tZW1vcnkveGVuX21lbW9yeTAvaW5mby9sb3dfa2IKK0RhdGU6CQlBcHJpbCAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CUtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlBbW91bnQgKGluIEtpQikgb2YgbG93IChvciBub3JtYWwpIG1lbW9yeSBpbiB0aGUKKwkJYmFsbG9vbi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1kcml2ZXItaWJfc3JwIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWRyaXZlci1pYl9zcnAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA0OWEyYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1kcml2ZXItaWJfc3JwCkBAIC0wLDAgKzEsMTg5IEBACitXaGF0OgkJL3N5cy9jbGFzcy9pbmZpbmliYW5kX3NycC9zcnAtPGhjYT4tPHBvcnRfbnVtYmVyPi9hZGRfdGFyZ2V0CitEYXRlOgkJSmFudWFyeSAyLCAyMDA2CitLZXJuZWxWZXJzaW9uOgkyLjYuMTUKK0NvbnRhY3Q6CWxpbnV4LXJkbWFAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoJSW50ZXJmYWNlIGZvciBtYWtpbmcgaWJfc3JwIGNvbm5lY3QgdG8gYSBuZXcgdGFyZ2V0LgorCQlPbmUgY2FuIHJlcXVlc3QgaWJfc3JwIHRvIGNvbm5lY3QgdG8gYSBuZXcgdGFyZ2V0IGJ5IHdyaXRpbmcKKwkJYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBsb2dpbiBwYXJhbWV0ZXJzIHRvIHRoaXMgc3lzZnMKKwkJYXR0cmlidXRlLiBUaGUgc3VwcG9ydGVkIHBhcmFtZXRlcnMgYXJlOgorCQkqIGlkX2V4dCwgYSAxNi1kaWdpdCBoZXhhZGVjaW1hbCBudW1iZXIgc3BlY2lmeWluZyB0aGUgZWlnaHQKKwkJICBieXRlIGlkZW50aWZpZXIgZXh0ZW5zaW9uIGluIHRoZSAxNi1ieXRlIFNSUCB0YXJnZXQgcG9ydAorCQkgIGlkZW50aWZpZXIuIFRoZSB0YXJnZXQgcG9ydCBpZGVudGlmaWVyIGlzIHNlbnQgYnkgaWJfc3JwCisJCSAgdG8gdGhlIHRhcmdldCBpbiB0aGUgU1JQX0xPR0lOX1JFUSByZXF1ZXN0LgorCQkqIGlvY19ndWlkLCBhIDE2LWRpZ2l0IGhleGFkZWNpbWFsIG51bWJlciBzcGVjaWZ5aW5nIHRoZSBlaWdodAorCQkgIGJ5dGUgSS9PIGNvbnRyb2xsZXIgR1VJRCBwb3J0aW9uIG9mIHRoZSAxNi1ieXRlIHRhcmdldCBwb3J0CisJCSAgaWRlbnRpZmllci4KKwkJKiBkZ2lkLCBhIDMyLWRpZ2l0IGhleGFkZWNpbWFsIG51bWJlciBzcGVjaWZ5aW5nIHRoZQorCQkgIGRlc3RpbmF0aW9uIEdJRC4KKwkJKiBwa2V5LCBhIGZvdXItZGlnaXQgaGV4YWRlY2ltYWwgbnVtYmVyIHNwZWNpZnlpbmcgdGhlCisJCSAgSW5maW5pQmFuZCBwYXJ0aXRpb24ga2V5LgorCQkqIHNlcnZpY2VfaWQsIGEgMTYtZGlnaXQgaGV4YWRlY2ltYWwgbnVtYmVyIHNwZWNpZnlpbmcgdGhlCisJCSAgSW5maW5pQmFuZCBzZXJ2aWNlIElEIHVzZWQgdG8gZXN0YWJsaXNoIGNvbW11bmljYXRpb24gd2l0aAorCQkgIHRoZSBTUlAgdGFyZ2V0LiBIb3cgdG8gZmluZCBvdXQgdGhlIHZhbHVlIG9mIHRoZSBzZXJ2aWNlIElECisJCSAgaXMgc3BlY2lmaWVkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBTUlAgdGFyZ2V0LgorCQkqIG1heF9zZWN0LCBhIGRlY2ltYWwgbnVtYmVyIHNwZWNpZnlpbmcgdGhlIG1heGltdW0gbnVtYmVyIG9mCisJCSAgNTEyLWJ5dGUgc2VjdG9ycyB0byBiZSB0cmFuc2ZlcnJlZCB2aWEgYSBzaW5nbGUgU0NTSSBjb21tYW5kLgorCQkqIG1heF9jbWRfcGVyX2x1biwgYSBkZWNpbWFsIG51bWJlciBzcGVjaWZ5aW5nIHRoZSBtYXhpbXVtCisJCSAgbnVtYmVyIG9mIG91dHN0YW5kaW5nIGNvbW1hbmRzIGZvciBhIHNpbmdsZSBMVU4uCisJCSogaW9fY2xhc3MsIGEgaGV4YWRlY2ltYWwgbnVtYmVyIHNwZWNpZnlpbmcgdGhlIFNSUCBJL08gY2xhc3MuCisJCSAgTXVzdCBiZSBlaXRoZXIgMHhmZjAwIChyZXYgMTApIG9yIDB4MDEwMCAocmV2IDE2YSkuIFRoZSBJL08KKwkJICBjbGFzcyBkZWZpbmVzIHRoZSBmb3JtYXQgb2YgdGhlIFNSUCBpbml0aWF0b3IgYW5kIHRhcmdldAorCQkgIHBvcnQgaWRlbnRpZmllcnMuCisJCSogaW5pdGlhdG9yX2V4dCwgYSAxNi1kaWdpdCBoZXhhZGVjaW1hbCBudW1iZXIgc3BlY2lmeWluZyB0aGUKKwkJICBpZGVudGlmaWVyIGV4dGVuc2lvbiBwb3J0aW9uIG9mIHRoZSBTUlAgaW5pdGlhdG9yIHBvcnQKKwkJICBpZGVudGlmaWVyLiBUaGlzIGRhdGEgaXMgc2VudCBieSB0aGUgaW5pdGlhdG9yIHRvIHRoZSB0YXJnZXQKKwkJICBpbiB0aGUgU1JQX0xPR0lOX1JFUSByZXF1ZXN0LgorCQkqIGNtZF9zZ19lbnRyaWVzLCBhIG51bWJlciBpbiB0aGUgcmFuZ2UgMS4uMjU1IHRoYXQgc3BlY2lmaWVzCisJCSAgdGhlIG1heGltdW0gbnVtYmVyIG9mIGRhdGEgYnVmZmVyIGRlc2NyaXB0b3JzIHN0b3JlZCBpbiB0aGUKKwkJICBTUlBfQ01EIGluZm9ybWF0aW9uIHVuaXQgaXRzZWxmLiBXaXRoIGFsbG93X2V4dF9zZz0wIHRoZQorCQkgIHBhcmFtZXRlciBjbWRfc2dfZW50cmllcyBkZWZpbmVzIHRoZSBtYXhpbXVtIFMvRyBsaXN0IGxlbmd0aAorCQkgIGZvciBhIHNpbmdsZSBTUlBfQ01ELCBhbmQgY29tbWFuZHMgd2hvc2UgUy9HIGxpc3QgbGVuZ3RoCisJCSAgZXhjZWVkcyB0aGlzIGxpbWl0IGFmdGVyIFMvRyBsaXN0IGNvbGxhcHNpbmcgd2lsbCBmYWlsLgorCQkqIGFsbG93X2V4dF9zZywgd2hldGhlciBpYl9zcnAgaXMgYWxsb3dlZCB0byBpbmNsdWRlIGEgcGFydGlhbAorCQkgIG1lbW9yeSBkZXNjcmlwdG9yIGxpc3QgaW4gYW4gU1JQX0NNRCBpbnN0ZWFkIG9mIHRoZSBlbnRpcmUKKwkJICBsaXN0LiBJZiBhIHBhcnRpYWwgbWVtb3J5IGRlc2NyaXB0b3IgbGlzdCBoYXMgYmVlbiBpbmNsdWRlZAorCQkgIGluIGFuIFNSUF9DTUQgdGhlIHJlbWFpbmluZyBtZW1vcnkgZGVzY3JpcHRvcnMgYXJlCisJCSAgY29tbXVuaWNhdGVkIGZyb20gaW5pdGlhdG9yIHRvIHRhcmdldCB2aWEgYW4gYWRkaXRpb25hbCBSRE1BCisJCSAgdHJhbnNmZXIuIFNldHRpbmcgYWxsb3dfZXh0X3NnIHRvIDEgaW5jcmVhc2VzIHRoZSBtYXhpbXVtCisJCSAgYW1vdW50IG9mIGRhdGEgdGhhdCBjYW4gYmUgdHJhbnNmZXJyZWQgYmV0d2VlbiBpbml0aWF0b3IgYW5kCisJCSAgdGFyZ2V0IHZpYSBhIHNpbmdsZSBTQ1NJIGNvbW1hbmQuIFNpbmNlIG5vdCBhbGwgU1JQIHRhcmdldAorCQkgIGltcGxlbWVudGF0aW9ucyBzdXBwb3J0IHBhcnRpYWwgbWVtb3J5IGRlc2NyaXB0b3IgbGlzdHMgdGhlCisJCSAgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyBvcHRpb24gaXMgMC4KKwkJKiBzZ190YWJsZXNpemUsIGEgbnVtYmVyIGluIHRoZSByYW5nZSAxLi4yMDQ4IHNwZWNpZnlpbmcgdGhlCisJCSAgbWF4aW11bSBTL0cgbGlzdCBsZW5ndGggdGhlIFNDU0kgbGF5ZXIgaXMgYWxsb3dlZCB0byBwYXNzIHRvCisJCSAgaWJfc3JwLiBTcGVjaWZ5aW5nIGEgdmFsdWUgdGhhdCBleGNlZWRzIGNtZF9zZ19lbnRyaWVzIGlzCisJCSAgb25seSBzYWZlIHdpdGggcGFydGlhbCBtZW1vcnkgZGVzY3JpcHRvciBsaXN0IHN1cHBvcnQgZW5hYmxlZAorCQkgIChhbGxvd19leHRfc2c9MSkuCisJCSogY29tcF92ZWN0b3IsIGEgbnVtYmVyIGluIHRoZSByYW5nZSAwLi5uLTEgc3BlY2lmeWluZyB0aGUKKwkJICBNU0ktWCBjb21wbGV0aW9uIHZlY3RvciBvZiB0aGUgZmlyc3QgUkRNQSBjaGFubmVsLiBTb21lCisJCSAgSENBJ3MgYWxsb2NhdGUgbXVsdGlwbGUgKG4pIE1TSS1YIHZlY3RvcnMgcGVyIEhDQSBwb3J0LiBJZgorCQkgIHRoZSBJUlEgYWZmaW5pdHkgbWFza3Mgb2YgdGhlc2UgaW50ZXJydXB0cyBoYXZlIGJlZW4KKwkJICBjb25maWd1cmVkIHN1Y2ggdGhhdCBlYWNoIE1TSS1YIGludGVycnVwdCBpcyBoYW5kbGVkIGJ5IGEKKwkJICBkaWZmZXJlbnQgQ1BVIHRoZW4gdGhlIGNvbXBfdmVjdG9yIHBhcmFtZXRlciBjYW4gYmUgdXNlZCB0bworCQkgIHNwcmVhZCB0aGUgU1JQIGNvbXBsZXRpb24gd29ya2xvYWQgb3ZlciBtdWx0aXBsZSBDUFUncy4KKwkJKiB0bF9yZXRyeV9jb3VudCwgYSBudW1iZXIgaW4gdGhlIHJhbmdlIDIuLjcgc3BlY2lmeWluZyB0aGUKKwkJICBJQiBSQyByZXRyeSBjb3VudC4KKwkJKiBxdWV1ZV9zaXplLCB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29tbWFuZHMgdGhhdCB0aGUKKwkJICBpbml0aWF0b3IgaXMgYWxsb3dlZCB0byBxdWV1ZSBwZXIgU0NTSSBob3N0LiBUaGUgZGVmYXVsdAorCQkgIHZhbHVlIGZvciB0aGlzIHBhcmFtZXRlciBpcyA2Mi4gVGhlIGxvd2VzdCBzdXBwb3J0ZWQgdmFsdWUKKwkJICBpcyAyLgorCitXaGF0OgkJL3N5cy9jbGFzcy9pbmZpbmliYW5kX3NycC9zcnAtPGhjYT4tPHBvcnRfbnVtYmVyPi9pYmRldgorRGF0ZToJCUphbnVhcnkgMiwgMjAwNgorS2VybmVsVmVyc2lvbjoJMi42LjE1CitDb250YWN0OglsaW51eC1yZG1hQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CUhDQSBuYW1lICg8aGNhPikuCisKK1doYXQ6CQkvc3lzL2NsYXNzL2luZmluaWJhbmRfc3JwL3NycC08aGNhPi08cG9ydF9udW1iZXI+L3BvcnQKK0RhdGU6CQlKYW51YXJ5IDIsIDIwMDYKK0tlcm5lbFZlcnNpb246CTIuNi4xNQorQ29udGFjdDoJbGludXgtcmRtYUB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOglIQ0EgcG9ydCBudW1iZXIgKDxwb3J0X251bWJlcj4pLgorCitXaGF0OgkJL3N5cy9jbGFzcy9zY3NpX2hvc3QvaG9zdDxuPi9hbGxvd19leHRfc2cKK0RhdGU6CQlNYXkgMTksIDIwMTEKK0tlcm5lbFZlcnNpb246CTIuNi4zOQorQ29udGFjdDoJbGludXgtcmRtYUB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOglXaGV0aGVyIGliX3NycCBpcyBhbGxvd2VkIHRvIGluY2x1ZGUgYSBwYXJ0aWFsIG1lbW9yeQorCQlkZXNjcmlwdG9yIGxpc3QgaW4gYW4gU1JQX0NNRCB3aGVuIGNvbW11bmljYXRpbmcgd2l0aCBhbiBTUlAKKwkJdGFyZ2V0LgorCitXaGF0OgkJL3N5cy9jbGFzcy9zY3NpX2hvc3QvaG9zdDxuPi9jaF9jb3VudAorRGF0ZToJCUFwcmlsIDEsIDIwMTUKK0tlcm5lbFZlcnNpb246CTMuMTkKK0NvbnRhY3Q6CWxpbnV4LXJkbWFAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoJTnVtYmVyIG9mIFJETUEgY2hhbm5lbHMgdXNlZCBmb3IgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBTUlAKKwkJdGFyZ2V0LgorCitXaGF0OgkJL3N5cy9jbGFzcy9zY3NpX2hvc3QvaG9zdDxuPi9jbWRfc2dfZW50cmllcworRGF0ZToJCU1heSAxOSwgMjAxMQorS2VybmVsVmVyc2lvbjoJMi42LjM5CitDb250YWN0OglsaW51eC1yZG1hQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CU1heGltdW0gbnVtYmVyIG9mIGRhdGEgYnVmZmVyIGRlc2NyaXB0b3JzIHRoYXQgbWF5IGJlIHNlbnQgdG8KKwkJdGhlIHRhcmdldCBpbiBhIHNpbmdsZSBTUlBfQ01EIHJlcXVlc3QuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3Njc2lfaG9zdC9ob3N0PG4+L2NvbXBfdmVjdG9yCitEYXRlOgkJU2VwdGVtYmVyIDIsIDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTEKK0NvbnRhY3Q6CWxpbnV4LXJkbWFAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoJQ29tcGxldGlvbiB2ZWN0b3IgdXNlZCBmb3IgdGhlIGZpcnN0IFJETUEgY2hhbm5lbC4KKworV2hhdDoJCS9zeXMvY2xhc3Mvc2NzaV9ob3N0L2hvc3Q8bj4vZGdpZAorRGF0ZToJCUp1bmUgMTcsIDIwMDYKK0tlcm5lbFZlcnNpb246CTIuNi4xNworQ29udGFjdDoJbGludXgtcmRtYUB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOglJbmZpbmlCYW5kIGRlc3RpbmF0aW9uIEdJRCB1c2VkIGZvciBjb21tdW5pY2F0aW9uIHdpdGggdGhlIFNSUAorCQl0YXJnZXQuIERpZmZlcnMgZnJvbSBvcmlnX2RnaWQgaWYgcG9ydCByZWRpcmVjdGlvbiBoYXMgaGFwcGVuZWQuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3Njc2lfaG9zdC9ob3N0PG4+L2lkX2V4dAorRGF0ZToJCUp1bmUgMTcsIDIwMDYKK0tlcm5lbFZlcnNpb246CTIuNi4xNworQ29udGFjdDoJbGludXgtcmRtYUB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOglFaWdodC1ieXRlIGlkZW50aWZpZXIgZXh0ZW5zaW9uIHBvcnRpb24gb2YgdGhlIDE2LWJ5dGUgdGFyZ2V0CisJCXBvcnQgaWRlbnRpZmllci4KKworV2hhdDoJCS9zeXMvY2xhc3Mvc2NzaV9ob3N0L2hvc3Q8bj4vaW9jX2d1aWQKK0RhdGU6CQlKdW5lIDE3LCAyMDA2CitLZXJuZWxWZXJzaW9uOgkyLjYuMTcKK0NvbnRhY3Q6CWxpbnV4LXJkbWFAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoJRWlnaHQtYnl0ZSBJL08gY29udHJvbGxlciBHVUlEIHBvcnRpb24gb2YgdGhlIDE2LWJ5dGUgdGFyZ2V0CisJCXBvcnQgaWRlbnRpZmllci4KKworV2hhdDoJCS9zeXMvY2xhc3Mvc2NzaV9ob3N0L2hvc3Q8bj4vbG9jYWxfaWJfZGV2aWNlCitEYXRlOgkJTm92ZW1iZXIgMjksIDIwMDYKK0tlcm5lbFZlcnNpb246CTIuNi4xOQorQ29udGFjdDoJbGludXgtcmRtYUB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOglOYW1lIG9mIHRoZSBJbmZpbmlCYW5kIEhDQSB1c2VkIGZvciBjb21tdW5pY2F0aW5nIHdpdGggdGhlCisJCVNSUCB0YXJnZXQuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3Njc2lfaG9zdC9ob3N0PG4+L2xvY2FsX2liX3BvcnQKK0RhdGU6CQlOb3ZlbWJlciAyOSwgMjAwNgorS2VybmVsVmVyc2lvbjoJMi42LjE5CitDb250YWN0OglsaW51eC1yZG1hQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CU51bWJlciBvZiB0aGUgSENBIHBvcnQgdXNlZCBmb3IgY29tbXVuaWNhdGluZyB3aXRoIHRoZQorCQlTUlAgdGFyZ2V0LgorCitXaGF0OgkJL3N5cy9jbGFzcy9zY3NpX2hvc3QvaG9zdDxuPi9vcmlnX2RnaWQKK0RhdGU6CQlKdW5lIDE3LCAyMDA2CitLZXJuZWxWZXJzaW9uOgkyLjYuMTcKK0NvbnRhY3Q6CWxpbnV4LXJkbWFAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoJSW5maW5pQmFuZCBkZXN0aW5hdGlvbiBHSUQgc3BlY2lmaWVkIGluIHRoZSBwYXJhbWV0ZXJzCisJCXdyaXR0ZW4gdG8gdGhlIGFkZF90YXJnZXQgc3lzZnMgYXR0cmlidXRlLgorCitXaGF0OgkJL3N5cy9jbGFzcy9zY3NpX2hvc3QvaG9zdDxuPi9wa2V5CitEYXRlOgkJSnVuZSAxNywgMjAwNgorS2VybmVsVmVyc2lvbjoJMi42LjE3CitDb250YWN0OglsaW51eC1yZG1hQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CUEgMTYtYml0IG51bWJlciByZXByZXNlbnRpbmcgdGhlIEluZmluaUJhbmQgcGFydGl0aW9uIGtleSB1c2VkCisJCWZvciBjb21tdW5pY2F0aW9uIHdpdGggdGhlIFNSUCB0YXJnZXQuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3Njc2lfaG9zdC9ob3N0PG4+L3JlcV9saW0KK0RhdGU6CQlPY3RvYmVyIDIwLCAyMDEwCitLZXJuZWxWZXJzaW9uOgkyLjYuMzYKK0NvbnRhY3Q6CWxpbnV4LXJkbWFAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoJTnVtYmVyIG9mIHJlcXVlc3RzIGliX3NycCBjYW4gc2VuZCB0byB0aGUgdGFyZ2V0IGJlZm9yZSBpdCBoYXMKKwkJdG8gd2FpdCBmb3IgbW9yZSBjcmVkaXRzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgYWxzbyB0aGUKKwkJU1JQIGNyZWRpdCBhbGdvcml0aG0gaW4gdGhlIFNSUCBzcGVjaWZpY2F0aW9uLgorCitXaGF0OgkJL3N5cy9jbGFzcy9zY3NpX2hvc3QvaG9zdDxuPi9zZXJ2aWNlX2lkCitEYXRlOgkJSnVuZSAxNywgMjAwNgorS2VybmVsVmVyc2lvbjoJMi42LjE3CitDb250YWN0OglsaW51eC1yZG1hQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CUluZmluaUJhbmQgc2VydmljZSBJRCB1c2VkIGZvciBlc3RhYmxpc2hpbmcgY29tbXVuaWNhdGlvbiB3aXRoCisJCXRoZSBTUlAJdGFyZ2V0LgorCitXaGF0OgkJL3N5cy9jbGFzcy9zY3NpX2hvc3QvaG9zdDxuPi9zZ2lkCitEYXRlOgkJRmVicnVhcnkgMSwgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xMworQ29udGFjdDoJbGludXgtcmRtYUB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOglJbmZpbmlCYW5kIEdJRCBvZiB0aGUgc291cmNlIHBvcnQgdXNlZCBmb3IgY29tbXVuaWNhdGlvbiB3aXRoCisJCXRoZSBTUlAgdGFyZ2V0LgorCitXaGF0OgkJL3N5cy9jbGFzcy9zY3NpX2hvc3QvaG9zdDxuPi96ZXJvX3JlcV9saW0KK0RhdGU6CQlTZXB0ZW1iZXIgMjAsIDIwMDYKK0tlcm5lbFZlcnNpb246CTIuNi4xOAorQ29udGFjdDoJbGludXgtcmRtYUB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOglOdW1iZXIgb2YgdGltZXMgdGhlIGluaXRpYXRvciBoYWQgdG8gd2FpdCBiZWZvcmUgc2VuZGluZyBhCisJCXJlcXVlc3QgdG8gdGhlIHRhcmdldCBiZWNhdXNlIGl0IHJhbiBvdXQgb2YgY3JlZGl0cy4gRm9yIG1vcmUKKwkJaW5mb3JtYXRpb24gc2VlIGFsc28gdGhlIFNSUCBjcmVkaXQgYWxnb3JpdGhtIGluIHRoZSBTUlAKKwkJc3BlY2lmaWNhdGlvbi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1kcml2ZXItcWxhMnh4eCBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1kcml2ZXItcWxhMnh4eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTU5ZDg0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWRyaXZlci1xbGEyeHh4CkBAIC0wLDAgKzEsOCBAQAorV2hhdDoJCS9zeXMvYnVzL3BjaS9kcml2ZXJzL3FsYTJ4eHgvLi4uL2RldmljZXMvKgorRGF0ZToJCVNlcHRlbWJlciAyMDA5CitDb250YWN0OglRTG9naWMgTGludXggRHJpdmVyIDxsaW51eC1kcml2ZXJAcWxvZ2ljLmNvbT4KK0Rlc2NyaXB0aW9uOglxbGEyeHh4LXVkZXYuc2ggY3VycmVudGx5IGxvb2tzIGZvciB1ZXZlbnQgQ0hBTkdFIGV2ZW50cyB0bworCQlzaWduYWwgYSBmaXJtd2FyZS1kdW1wIGhhcyBiZWVuIGdlbmVyYXRlZCBieSB0aGUgZHJpdmVyIGFuZCBpcworCQlyZWFkeSBmb3IgcmV0cmlldmFsLgorVXNlcnM6CQlxbGEyeHh4LXVkZXYuc2guICBQcm9wb3NlZCBjaGFuZ2VzIHNob3VsZCBiZSBtYWlsZWQgdG8KKwkJbGludXgtZHJpdmVyQHFsb2dpYy5jb20KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1kcml2ZXItdXNiLXVzYnRtYyBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1kcml2ZXItdXNiLXVzYnRtYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTYwY2QwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWRyaXZlci11c2ItdXNidG1jCkBAIC0wLDAgKzEsNjIgQEAKK1doYXQ6CQkvc3lzL2J1cy91c2IvZHJpdmVycy91c2J0bWMvKi9pbnRlcmZhY2VfY2FwYWJpbGl0aWVzCitXaGF0OgkJL3N5cy9idXMvdXNiL2RyaXZlcnMvdXNidG1jLyovZGV2aWNlX2NhcGFiaWxpdGllcworRGF0ZToJCUF1Z3VzdCAyMDA4CitDb250YWN0OglHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgorRGVzY3JpcHRpb246CisJCVRoZXNlIGZpbGVzIHNob3cgdGhlIHZhcmlvdXMgVVNCIFRNQyBjYXBhYmlsaXRpZXMgYXMgZGVzY3JpYmVkCisJCWJ5IHRoZSBkZXZpY2UgaXRzZWxmLiAgVGhlIGZ1bGwgZGVzY3JpcHRpb24gb2YgdGhlIGJpdGZpZWxkcworCQljYW4gYmUgZm91bmQgaW4gdGhlIFVTQiBUTUMgZG9jdW1lbnRzIGZyb20gdGhlIFVTQi1JRiBlbnRpdGxlZAorCQkiVW5pdmVyc2FsIFNlcmlhbCBCdXMgVGVzdCBhbmQgTWVhc3VyZW1lbnQgQ2xhc3MgU3BlY2lmaWNhdGlvbgorCQkoVVNCVE1DKSBSZXZpc2lvbiAxLjAiIHNlY3Rpb24gNC4yLjEuOC4KKworCQlUaGUgZmlsZXMgYXJlIHJlYWQgb25seS4KKworCitXaGF0OgkJL3N5cy9idXMvdXNiL2RyaXZlcnMvdXNidG1jLyovdXNiNDg4X2ludGVyZmFjZV9jYXBhYmlsaXRpZXMKK1doYXQ6CQkvc3lzL2J1cy91c2IvZHJpdmVycy91c2J0bWMvKi91c2I0ODhfZGV2aWNlX2NhcGFiaWxpdGllcworRGF0ZToJCUF1Z3VzdCAyMDA4CitDb250YWN0OglHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgorRGVzY3JpcHRpb246CisJCVRoZXNlIGZpbGVzIHNob3cgdGhlIHZhcmlvdXMgVVNCIFRNQyBjYXBhYmlsaXRpZXMgYXMgZGVzY3JpYmVkCisJCWJ5IHRoZSBkZXZpY2UgaXRzZWxmLiAgVGhlIGZ1bGwgZGVzY3JpcHRpb24gb2YgdGhlIGJpdGZpZWxkcworCQljYW4gYmUgZm91bmQgaW4gdGhlIFVTQiBUTUMgZG9jdW1lbnRzIGZyb20gdGhlIFVTQi1JRiBlbnRpdGxlZAorCQkiVW5pdmVyc2FsIFNlcmlhbCBCdXMgVGVzdCBhbmQgTWVhc3VyZW1lbnQgQ2xhc3MsIFN1YmNsYXNzCisJCVVTQjQ4OCBTcGVjaWZpY2F0aW9uIChVU0JUTUMtVVNCNDg4KSBSZXZpc2lvbiAxLjAiIHNlY3Rpb24KKwkJNC4yLjIuCisKKwkJVGhlIGZpbGVzIGFyZSByZWFkIG9ubHkuCisKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kcml2ZXJzL3VzYnRtYy8qL1Rlcm1DaGFyCitEYXRlOgkJQXVndXN0IDIwMDgKK0NvbnRhY3Q6CUdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBmaWxlIGlzIHRoZSBUZXJtQ2hhciB2YWx1ZSB0byBiZSBzZW50IHRvIHRoZSBVU0IgVE1DCisJCWRldmljZSBhcyBkZXNjcmliZWQgYnkgdGhlIGRvY3VtZW50LCAiVW5pdmVyc2FsIFNlcmlhbCBCdXMgVGVzdAorCQlhbmQgTWVhc3VyZW1lbnQgQ2xhc3MgU3BlY2lmaWNhdGlvbgorCQkoVVNCVE1DKSBSZXZpc2lvbiAxLjAiIGFzIHB1Ymxpc2hlZCBieSB0aGUgVVNCLUlGLgorCisJCU5vdGUgdGhhdCB0aGUgVGVybUNoYXJFbmFibGVkIGZpbGUgZGV0ZXJtaW5lcyBpZiB0aGlzIHZhbHVlIGlzCisJCXNlbnQgdG8gdGhlIGRldmljZSBvciBub3QuCisKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kcml2ZXJzL3VzYnRtYy8qL1Rlcm1DaGFyRW5hYmxlZAorRGF0ZToJCUF1Z3VzdCAyMDA4CitDb250YWN0OglHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgorRGVzY3JpcHRpb246CisJCVRoaXMgZmlsZSBkZXRlcm1pbmVzIGlmIHRoZSBUZXJtQ2hhciBpcyB0byBiZSBzZW50IHRvIHRoZQorCQlkZXZpY2Ugb24gZXZlcnkgdHJhbnNhY3Rpb24gb3Igbm90LiAgRm9yIG1vcmUgZGV0YWlscyBhYm91dAorCQl0aGlzLCBwbGVhc2Ugc2VlIHRoZSBkb2N1bWVudCwgIlVuaXZlcnNhbCBTZXJpYWwgQnVzIFRlc3QgYW5kCisJCU1lYXN1cmVtZW50IENsYXNzIFNwZWNpZmljYXRpb24gKFVTQlRNQykgUmV2aXNpb24gMS4wIiBhcworCQlwdWJsaXNoZWQgYnkgdGhlIFVTQi1JRi4KKworCitXaGF0OgkJL3N5cy9idXMvdXNiL2RyaXZlcnMvdXNidG1jLyovYXV0b19hYm9ydAorRGF0ZToJCUF1Z3VzdCAyMDA4CitDb250YWN0OglHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgorRGVzY3JpcHRpb246CisJCVRoaXMgZmlsZSBkZXRlcm1pbmVzIGlmIHRoZSB0cmFuc2FjdGlvbiBvZiB0aGUgVVNCIFRNQworCQlkZXZpY2UgaXMgdG8gYmUgYXV0b21hdGljYWxseSBhYm9ydGVkIGlmIHRoZXJlIGlzIGFueSBlcnJvci4KKwkJRm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGlzLCBwbGVhc2Ugc2VlIHRoZSBkb2N1bWVudCwKKwkJIlVuaXZlcnNhbCBTZXJpYWwgQnVzIFRlc3QgYW5kIE1lYXN1cmVtZW50IENsYXNzIFNwZWNpZmljYXRpb24KKwkJKFVTQlRNQykgUmV2aXNpb24gMS4wIiBhcyBwdWJsaXNoZWQgYnkgdGhlIFVTQi1JRi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1kcml2ZXItdzFfZHMyOGUwNCBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1kcml2ZXItdzFfZHMyOGUwNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjU3OWVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWRyaXZlci13MV9kczI4ZTA0CkBAIC0wLDAgKzEsMTUgQEAKK1doYXQ6CQkvc3lzL2J1cy93MS9kZXZpY2VzLy4uLi9waW8KK0RhdGU6CQlNYXkgMjAxMgorQ29udGFjdDoJTWFya3VzIEZyYW5rZSA8ZnJhbm1AaHJ6LnR1LWNoZW1uaXR6LmRlPgorRGVzY3JpcHRpb246CXJlYWQvd3JpdGUgdGhlIGNvbnRlbnRzIG9mIHRoZSB0d28gUElPJ3Mgb2YgdGhlIERTMjhFMDQtMTAwCisJCXNlZSBEb2N1bWVudGF0aW9uL3cxL3NsYXZlcy93MV9kczI4ZTA0IGZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbgorVXNlcnM6CQlhbnkgdXNlciBzcGFjZSBhcHBsaWNhdGlvbiB3aGljaCB3YW50cyB0byBjb21tdW5pY2F0ZSB3aXRoIERTMjhFMDQtMTAwCisKKworCitXaGF0OgkJL3N5cy9idXMvdzEvZGV2aWNlcy8uLi4vZWVwcm9tCitEYXRlOgkJTWF5IDIwMTIKK0NvbnRhY3Q6CU1hcmt1cyBGcmFua2UgPGZyYW5tQGhyei50dS1jaGVtbml0ei5kZT4KK0Rlc2NyaXB0aW9uOglyZWFkL3dyaXRlIHRoZSBjb250ZW50cyBvZiB0aGUgRUVQUk9NIG1lbW9yeSBvZiB0aGUgRFMyOEUwNC0xMDAKKwkJc2VlIERvY3VtZW50YXRpb24vdzEvc2xhdmVzL3cxX2RzMjhlMDQgZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uCitVc2VyczoJCWFueSB1c2VyIHNwYWNlIGFwcGxpY2F0aW9uIHdoaWNoIHdhbnRzIHRvIGNvbW11bmljYXRlIHdpdGggRFMyOEUwNC0xMDAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1kcml2ZXItdzFfZHMyOGVhMDAgYi9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtZHJpdmVyLXcxX2RzMjhlYTAwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5MjhkZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtZHJpdmVyLXcxX2RzMjhlYTAwCkBAIC0wLDAgKzEsNiBAQAorV2hhdDoJCS9zeXMvYnVzL3cxL2RldmljZXMvLi4uL3cxX3NlcQorRGF0ZToJCUFwciAyMDE1CitDb250YWN0OglNYXR0IENhbXBiZWxsIDxtYXR0cmNhbXBiZWxsQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOglTdXBwb3J0IGZvciB0aGUgRFMyOEVBMDAgY2hhaW4gc2VxdWVuY2UgZnVuY3Rpb24KKwkJc2VlIERvY3VtZW50YXRpb24vdzEvc2xhdmVzL3cxX3RoZXJtIGZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbgorVXNlcnM6CQlhbnkgdXNlciBzcGFjZSBhcHBsaWNhdGlvbiB3aGljaCB3YW50cyB0byBjb21tdW5pY2F0ZSB3aXRoIERTMjhFQTAwCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtZmlybXdhcmUtZWZpLXZhcnMgYi9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtZmlybXdhcmUtZWZpLXZhcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRlZjIwYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1maXJtd2FyZS1lZmktdmFycwpAQCAtMCwwICsxLDc1IEBACitXaGF0OgkJL3N5cy9maXJtd2FyZS9lZmkvdmFycworRGF0ZToJCUFwcmlsIDIwMDQKK0NvbnRhY3Q6CU1hdHQgRG9tc2NoIDxNYXR0X0RvbXNjaEBkZWxsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGRpcmVjdG9yeSBleHBvc2VzIGludGVyZmFjZXMgZm9yIGludGVyYWN0aXZlIHdpdGgKKwkJRUZJIHZhcmlhYmxlcy4gIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEVGSSB2YXJpYWJsZXMsCisJCXNlZSAnVmFyaWFibGUgU2VydmljZXMnIGluIHRoZSBVRUZJIHNwZWNpZmljYXRpb24KKwkJKHNlY3Rpb24gNy4yIGluIHNwZWNpZmljYXRpb24gdmVyc2lvbiAyLjMgRXJyYXRhIEQpLgorCisJCUluIHN1bW1hcnksIEVGSSB2YXJpYWJsZXMgYXJlIG5hbWVkLCBhbmQgYXJlIGNsYXNzaWZpZWQKKwkJaW50byBzZXBhcmF0ZSBuYW1lc3BhY2VzIHRocm91Z2ggdGhlIHVzZSBvZiBhIHZlbmRvcgorCQlHVUlELiAgVGhleSBhbHNvIGhhdmUgYW4gYXJiaXRyYXJ5IGJpbmFyeSB2YWx1ZQorCQlhc3NvY2lhdGVkIHdpdGggdGhlbS4KKworCQlUaGUgZWZpdmFycyBtb2R1bGUgZW51bWVyYXRlcyB0aGVzZSB2YXJpYWJsZXMgYW5kCisJCWNyZWF0ZXMgYSBzZXBhcmF0ZSBkaXJlY3RvcnkgZm9yIGVhY2ggb25lIGZvdW5kLiAgRWFjaAorCQlkaXJlY3RvcnkgaGFzIGEgbmFtZSBvZiB0aGUgZm9ybSAiPGtleT4tPHZlbmRvciBndWlkPiIKKwkJYW5kIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgZmlsZXM6CisKKwkJYXR0cmlidXRlczoJQSByZWFkLW9ubHkgdGV4dCBmaWxlIGVudW1lcmF0aW5nIHRoZQorCQkJCUVGSSB2YXJpYWJsZSBmbGFncy4gIFBvdGVudGlhbCB2YWx1ZXMKKwkJCQlpbmNsdWRlOgorCisJCQkJRUZJX1ZBUklBQkxFX05PTl9WT0xBVElMRQorCQkJCUVGSV9WQVJJQUJMRV9CT09UU0VSVklDRV9BQ0NFU1MKKwkJCQlFRklfVkFSSUFCTEVfUlVOVElNRV9BQ0NFU1MKKwkJCQlFRklfVkFSSUFCTEVfSEFSRFdBUkVfRVJST1JfUkVDT1JECisJCQkJRUZJX1ZBUklBQkxFX0FVVEhFTlRJQ0FURURfV1JJVEVfQUNDRVNTCisKKwkJCQlTZWUgdGhlIEVGSSBkb2N1bWVudGF0aW9uIGZvciBhbgorCQkJCWV4cGxhbmF0aW9uIG9mIGVhY2ggb2YgdGhlc2UgdmFyaWFibGVzLgorCisJCWRhdGE6CQlBIHJlYWQtb25seSBiaW5hcnkgZmlsZSB0aGF0IGNhbiBiZSByZWFkCisJCQkJdG8gYXR0YWluIHRoZSB2YWx1ZSBvZiB0aGUgRUZJIHZhcmlhYmxlCisKKwkJZ3VpZDoJCVRoZSB2ZW5kb3IgR1VJRCBvZiB0aGUgdmFyaWFibGUuICBUaGlzCisJCQkJc2hvdWxkIGFsd2F5cyBtYXRjaCB0aGUgR1VJRCBpbiB0aGUKKwkJCQl2YXJpYWJsZSdzIG5hbWUuCisKKwkJcmF3X3ZhcjoJQSBiaW5hcnkgZmlsZSB0aGF0IGNhbiBiZSByZWFkIHRvIG9idGFpbgorCQkJCWEgc3RydWN0dXJlIHRoYXQgY29udGFpbnMgZXZlcnl0aGluZworCQkJCXRoZXJlIGlzIHRvIGtub3cgYWJvdXQgdGhlIHZhcmlhYmxlLgorCQkJCUZvciBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBzZWUgInN0cnVjdAorCQkJCWVmaV92YXJpYWJsZSIgaW4gdGhlIGtlcm5lbCBzb3VyY2VzLgorCisJCQkJVGhpcyBmaWxlIGNhbiBhbHNvIGJlIHdyaXR0ZW4gdG8gaW4KKwkJCQlvcmRlciB0byB1cGRhdGUgdGhlIHZhbHVlIG9mIGEgdmFyaWFibGUuCisJCQkJRm9yIHRoaXMgdG8gd29yayBob3dldmVyLCBhbGwgZmllbGRzIG9mCisJCQkJdGhlICJzdHJ1Y3QgZWZpX3ZhcmlhYmxlIiBwYXNzZWQgbXVzdAorCQkJCW1hdGNoIGJ5dGUgZm9yIGJ5dGUgd2l0aCB0aGUgc3RydWN0dXJlCisJCQkJcmVhZCBvdXQgb2YgdGhlIGZpbGUsIHNhdmUgZm9yIHRoZSB2YWx1ZQorCQkJCXBvcnRpb24uCisKKwkJCQkqKk5vdGUqKiB0aGUgZWZpX3ZhcmlhYmxlIHN0cnVjdHVyZQorCQkJCXJlYWQvd3JpdHRlbiB3aXRoIHRoaXMgZmlsZSBjb250YWlucyBhCisJCQkJJ2xvbmcnIHR5cGUgdGhhdCBtYXkgY2hhbmdlIHdpZHRocworCQkJCWRlcGVuZGluZyBvbiB5b3VyIHVuZGVybHlpbmcKKwkJCQlhcmNoaXRlY3R1cmUuCisKKwkJc2l6ZToJCUFzIEFTQ0lJIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzaXplIG9mCisJCQkJdGhlIHZhcmlhYmxlJ3MgdmFsdWUuCisKKworCQlJbiBhZGRpdGlvbiwgdHdvIG90aGVyIG1hZ2ljIGJpbmFyeSBmaWxlcyBhcmUgcHJvdmlkZWQKKwkJaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkgYW5kIGFyZSB1c2VkIGZvciBhZGRpbmcgYW5kCisJCXJlbW92aW5nIHZhcmlhYmxlczoKKworCQluZXdfdmFyOglUYWtlcyBhICJzdHJ1Y3QgZWZpX3ZhcmlhYmxlIiBhbmQKKwkJCQlpbnN0cnVjdHMgdGhlIEVGSSBmaXJtd2FyZSB0byBjcmVhdGUgYQorCQkJCW5ldyB2YXJpYWJsZS4KKworCQlkZWxfdmFyOglUYWtlcyBhICJzdHJ1Y3QgZWZpX3ZhcmlhYmxlIiBhbmQKKwkJCQlpbnN0cnVjdHMgdGhlIEVGSSBmaXJtd2FyZSB0byByZW1vdmUgYW55CisJCQkJdmFyaWFibGUgdGhhdCBoYXMgYSBtYXRjaGluZyB2ZW5kb3IgR1VJRAorCQkJCWFuZCB2YXJpYWJsZSBrZXkgbmFtZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1maXJtd2FyZS1vcGFsLWR1bXAgYi9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtZmlybXdhcmUtb3BhbC1kdW1wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyZmU3ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtZmlybXdhcmUtb3BhbC1kdW1wCkBAIC0wLDAgKzEsNDEgQEAKK1doYXQ6CQkvc3lzL2Zpcm13YXJlL29wYWwvZHVtcAorRGF0ZToJCUZlYiAyMDE0CitDb250YWN0OglTdGV3YXJ0IFNtaXRoIDxzdGV3YXJ0QGxpbnV4LnZuZXQuaWJtLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGRpcmVjdG9yeSBleHBvc2VzIGludGVyZmFjZXMgZm9yIGludGVyYWN0aW5nIHdpdGgKKwkJdGhlIEZTUCBhbmQgcGxhdGZvcm0gZHVtcHMgdGhyb3VnaCBPUEFMIGZpcm13YXJlIGludGVyZmFjZS4KKworCQlUaGlzIGlzIG9ubHkgZm9yIHRoZSBwb3dlcnBjL3Bvd2VybnYgcGxhdGZvcm0uCisKKwkJaW5pdGlhdGVfZHVtcDoJV2hlbiAnMScgaXMgd3JpdHRlbiB0byBpdCwKKwkJCQl3ZSB3aWxsIGluaXRpYXRlIGEgZHVtcC4KKwkJCQlSZWFkIHRoaXMgZmlsZSBmb3Igc3VwcG9ydGVkIGNvbW1hbmRzLgorCisJCTB4WFgtMHhZWVlZOglBIGRpcmVjdG9yeSBmb3IgZHVtcCBvZiB0eXBlIDB4WFggYW5kCisJCQkJaWQgMHhZWVlZIChpbiBoZXgpLiBUaGUgbmFtZSBvZiB0aGlzCisJCQkJZGlyZWN0b3J5IHNob3VsZCBub3QgYmUgcmVsaWVkIHVwb24gdG8KKwkJCQliZSBpbiB0aGlzIGZvcm1hdCwgb25seSB0aGF0IGl0J3MgdW5pcXVlCisJCQkJYW1vbmcgYWxsIGR1bXBzLiBGb3IgZGV0ZXJtaW5pbmcgdGhlIHR5cGUKKwkJCQlhbmQgSUQgb2YgdGhlIGR1bXAsIHVzZSB0aGUgaWQgYW5kIHR5cGUgZmlsZXMuCisJCQkJRG8gbm90IHJlbHkgb24gYW55IHBhcnRpY3VsYXIgc2l6ZSBvZiBkdW1wCisJCQkJdHlwZSBvciBkdW1wIGlkLgorCisJCUVhY2ggZHVtcCBoYXMgdGhlIGZvbGxvd2luZyBmaWxlczoKKwkJaWQ6CQlBbiBBU0NJSSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZHVtcCBJRAorCQkJCWluIGhleCAoZS5nLiAnMHgwMScpCisJCXR5cGU6CQlBbiBBU0NJSSByZXByZXNlbnRhdGlvbiBvZiB0aGUgdHlwZSBvZgorCQkJCWR1bXAgaW4gdGhlIGZvcm1hdCAiMHgleCAlcyIgd2l0aCB0aGUgSUQKKwkJCQlpbiBoZXggYW5kIGEgZGVzY3JpcHRpb24gb2YgdGhlIGR1bXAgdHlwZQorCQkJCShvciAndW5rbm93bicpLgorCQkJCVR5cGUgJzB4ZmZmZmZmZmYgdW5rbm93bicgaXMgdXNlZCB3aGVuCisJCQkJd2UgY291bGQgbm90IGdldCB0aGUgdHlwZSBmcm9tIGZpcm13YXJlLgorCQkJCWUuZy4gJzB4MDIgU3lzdGVtL1BsYXRmb3JtIER1bXAnCisJCWR1bXA6CQlBIGJpbmFyeSBmaWxlIGNvbnRhaW5pbmcgdGhlIGR1bXAuCisJCQkJVGhlIHNpemUgb2YgdGhlIGR1bXAgaXMgdGhlIHNpemUgb2YgdGhpcyBmaWxlLgorCQlhY2tub3dsZWRnZToJV2hlbiAnYWNrJyBpcyB3cml0dGVuIHRvIHRoaXMsIHdlIHdpbGwKKwkJCQlhY2tub3dsZWRnZSB0aGF0IHdlJ3ZlIHJldHJpZXZlZCB0aGUKKwkJCQlkdW1wIHRvIHRoZSBzZXJ2aWNlIHByb2Nlc3Nvci4gSXQgd2lsbAorCQkJCXRoZW4gcmVtb3ZlIGl0LCBtYWtpbmcgdGhlIGR1bXAKKwkJCQlpbmFjY2Vzc2libGUuCisJCQkJUmVhZGluZyB0aGlzIGZpbGUgd2lsbCBnZXQgYSBsaXN0IG9mCisJCQkJc3VwcG9ydGVkIGFjdGlvbnMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtZmlybXdhcmUtb3BhbC1lbG9nIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWZpcm13YXJlLW9wYWwtZWxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTM2NDM0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWZpcm13YXJlLW9wYWwtZWxvZwpAQCAtMCwwICsxLDYwIEBACitXaGF0OgkJL3N5cy9maXJtd2FyZS9vcGFsL2Vsb2cKK0RhdGU6CQlGZWIgMjAxNAorQ29udGFjdDoJU3Rld2FydCBTbWl0aCA8c3Rld2FydEBsaW51eC52bmV0LmlibS5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBkaXJlY3RvcnkgZXhwb3NlcyBlcnJvciBsb2cgZW50cmllcyByZXRyaWV2ZWQKKwkJdGhyb3VnaCB0aGUgT1BBTCBmaXJtd2FyZSBpbnRlcmZhY2UuCisKKwkJRWFjaCBlcnJvciBsb2cgaXMgaWRlbnRpZmllZCBieSBhIHVuaXF1ZSBJRCBhbmQgd2lsbAorCQlleGlzdCB1bnRpbCBleHBsaWNpdGx5IGFja25vd2xlZGdlZCB0byBmaXJtd2FyZS4KKworCQlFYWNoIGxvZyBlbnRyeSBoYXMgYSBkaXJlY3RvcnkgaW4gL3N5cy9maXJtd2FyZS9vcGFsL2Vsb2cuCisKKwkJTG9nIGVudHJpZXMgbWF5IGJlIHB1cmdlZCBieSB0aGUgc2VydmljZSBwcm9jZXNzb3IKKwkJYmVmb3JlIHJldHJpZXZlZCBieSBmaXJtd2FyZSBvciByZXRyaWV2ZWQvYWNrbm93bGVkZ2VkIGJ5CisJCUxpbnV4IGlmIHRoZXJlIGlzIG5vIHJvb20gZm9yIG1vcmUgbG9nIGVudHJpZXMuCisKKwkJSW4gdGhlIGV2ZW50IHRoYXQgTGludXggaGFzIHJldHJpZXZlZCB0aGUgbG9nIGVudHJpZXMKKwkJYnV0IG5vdCBleHBsaWNpdGx5IGFja25vd2xlZGdlZCB0aGVtIHRvIGZpcm13YXJlIGFuZAorCQl0aGUgc2VydmljZSBwcm9jZXNzb3IgbmVlZHMgbW9yZSByb29tIGZvciBsb2cgZW50cmllcywKKwkJdGhlIG9ubHkgcmVtYWluaW5nIGNvcHkgb2YgYSBsb2cgbWVzc2FnZSBtYXkgYmUgaW4KKwkJTGludXguCisKKwkJVHlwaWNhbGx5LCBhIHVzZXIgc3BhY2UgZGFlbW9uIHdpbGwgbW9uaXRvciBmb3IgbmV3CisJCWVudHJpZXMsIHJlYWQgdGhlbSBvdXQgYW5kIGFja25vd2xlZGdlIHRoZW0uCisKKwkJVGhlIHNlcnZpY2UgcHJvY2Vzc29yIG1heSBiZSBhYmxlIHRvIHN0b3JlIG1vcmUgbG9nCisJCWVudHJpZXMgdGhhbiBmaXJtd2FyZSBjYW4sIHNvIGFmdGVyIHlvdSBhY2tub3dsZWRnZQorCQlhbiBldmVudCBmcm9tIExpbnV4IHlvdSBtYXkgaW5zdGFudGx5IGdldCBhbm90aGVyIG9uZQorCQlmcm9tIHRoZSBxdWV1ZSB0aGF0IHdhcyBnZW5lcmF0ZWQgc29tZSB0aW1lIGluIHRoZSBwYXN0LgorCisJCVRoZSByYXcgbG9nIGZvcm1hdCBpcyBhIGJpbmFyeSBmb3JtYXQuIFdlIGN1cnJlbnRseQorCQlkbyBub3QgcGFyc2UgdGhpcyBhdCBhbGwgaW4ga2VybmVsLCBsZWF2aW5nIGl0IHVwIHRvCisJCXVzZXIgc3BhY2UgdG8gc29sdmUgdGhlIHByb2JsZW0uIEluIGZ1dHVyZSwgd2UgbWF5CisJCWRvIG1vcmUgcGFyc2luZyBpbiBrZXJuZWwgYW5kIGFkZCBtb3JlIGZpbGVzIHRvIG1ha2UKKwkJaXQgZWFzaWVyIGZvciBzaW1wbGUgdXNlciBzcGFjZSBwcm9jZXNzZXMgdG8gZXh0cmFjdAorCQltb3JlIGluZm9ybWF0aW9uLgorCisJCUZvciBlYWNoIGxvZyBlbnRyeSAoZGlyZWN0b3J5KSwgdGhlcmUgYXJlIHRoZSBmb2xsb3dpbmcKKwkJZmlsZXM6CisKKwkJaWQ6CQlBbiBBU0NJSSByZXByZXNlbnRhdGlvbiBvZiB0aGUgSUQgb2YgdGhlCisJCQkJZXJyb3IgbG9nLCBpbiBoZXggLSBlLmcuICIweDAxIi4KKworCQl0eXBlOgkJQW4gQVNDSUkgcmVwcmVzZW50YXRpb24gb2YgdGhlIHR5cGUgaWQgYW5kCisJCQkJZGVzY3JpcHRpb24gb2YgdGhlIHR5cGUgb2YgZXJyb3IgbG9nLgorCQkJCUN1cnJlbnRseSBqdXN0ICIweDAwIFBFTCIgLSBwbGF0Zm9ybSBlcnJvciBsb2cuCisJCQkJSW4gdGhlIGZ1dHVyZSB0aGVyZSBtYXkgYmUgYWRkaXRpb25hbCB0eXBlcy4KKworCQlyYXc6CQlBIHJlYWQtb25seSBiaW5hcnkgZmlsZSB0aGF0IGNhbiBiZSByZWFkCisJCQkJdG8gZ2V0IHRoZSByYXcgbG9nIGVudHJ5LiBUaGVzZSBhcmUKKwkJCQk8MTZrYiwgb2Z0ZW4ganVzdCBodW5kcmVkcyBvZiBieXRlcyBhbmQKKwkJCQkiYXZlcmFnZSIgMmtiLgorCisJCWFja25vd2xlZGdlOglXcml0aW5nICdhY2snIHRvIHRoaXMgZmlsZSB3aWxsIGFja25vd2xlZGdlCisJCQkJdGhlIGVycm9yIGxvZyB0byBmaXJtd2FyZSAoYW5kIGluIHR1cm4KKwkJCQl0aGUgc2VydmljZSBwcm9jZXNzb3IsIGlmIGFwcGxpY2FibGUpLgorCQkJCVNob3J0bHkgYWZ0ZXIgYWNrbm93bGVkZ2luZyBpdCwgdGhlIGxvZworCQkJCWVudHJ5IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHN5c2ZzLgorCQkJCVJlYWRpbmcgdGhpcyBmaWxlIHdpbGwgbGlzdCB0aGUgc3VwcG9ydGVkCisJCQkJb3BlcmF0aW9ucyAoY3VycmVudGx5IGp1c3QgYWNrbm93bGVkZ2UpLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLW1vZHVsZSBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1tb2R1bGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI3MmFlNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1tb2R1bGUKQEAgLTAsMCArMSwzNCBAQAorV2hhdDoJCS9zeXMvbW9kdWxlCitEZXNjcmlwdGlvbjoKKwlUaGUgL3N5cy9tb2R1bGUgdHJlZSBjb25zaXN0cyBvZiB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKKworCS9zeXMvbW9kdWxlL01PRFVMRU5BTUUKKwkJVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGF0IGlzIGluIHRoZSBrZXJuZWwuICBUaGlzCisJCW1vZHVsZSBuYW1lIHdpbGwgYWx3YXlzIHNob3cgdXAgaWYgdGhlIG1vZHVsZSBpcyBsb2FkZWQgYXMgYQorCQlkeW5hbWljIG1vZHVsZS4gIElmIGl0IGlzIGJ1aWx0IGRpcmVjdGx5IGludG8gdGhlIGtlcm5lbCwgaXQKKwkJd2lsbCBvbmx5IHNob3cgdXAgaWYgaXQgaGFzIGEgdmVyc2lvbiBvciBhdCBsZWFzdCBvbmUKKwkJcGFyYW1ldGVyLgorCisJCU5vdGU6IFRoZSBjb25kaXRpb25zIG9mIGNyZWF0aW9uIGluIHRoZSBidWlsdC1pbiBjYXNlIGFyZSBub3QKKwkJYnkgZGVzaWduIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLgorCisJL3N5cy9tb2R1bGUvTU9EVUxFTkFNRS9wYXJhbWV0ZXJzCisJCVRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIGluZGl2aWR1YWwgZmlsZXMgdGhhdCBhcmUgZWFjaAorCQlpbmRpdmlkdWFsIHBhcmFtZXRlcnMgb2YgdGhlIG1vZHVsZSB0aGF0IGFyZSBhYmxlIHRvIGJlCisJCWNoYW5nZWQgYXQgcnVudGltZS4gIFNlZSB0aGUgaW5kaXZpZHVhbCBtb2R1bGUKKwkJZG9jdW1lbnRhdGlvbiBhcyB0byB0aGUgY29udGVudHMgb2YgdGhlc2UgcGFyYW1ldGVycyBhbmQKKwkJd2hhdCB0aGV5IGFjY29tcGxpc2guCisKKwkJTm90ZTogVGhlIGluZGl2aWR1YWwgcGFyYW1ldGVyIG5hbWVzIGFuZCB2YWx1ZXMgYXJlIG5vdAorCQljb25zaWRlcmVkIHN0YWJsZSwgb25seSB0aGUgZmFjdCB0aGF0IHRoZXkgd2lsbCBiZQorCQlwbGFjZWQgaW4gdGhpcyBsb2NhdGlvbiB3aXRoaW4gc3lzZnMuICBTZWUgdGhlCisJCWluZGl2aWR1YWwgZHJpdmVyIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMgYXMgdG8gdGhlCisJCXN0YWJpbGl0eSBvZiB0aGUgZGlmZmVyZW50IHBhcmFtZXRlcnMuCisKKwkvc3lzL21vZHVsZS9NT0RVTEVOQU1FL3JlZmNudAorCQlJZiB0aGUgbW9kdWxlIGlzIGFibGUgdG8gYmUgdW5sb2FkZWQgZnJvbSB0aGUga2VybmVsLCB0aGlzIGZpbGUKKwkJd2lsbCBjb250YWluIHRoZSBjdXJyZW50IHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgbW9kdWxlLgorCisJCU5vdGU6IElmIHRoZSBtb2R1bGUgaXMgYnVpbHQgaW50byB0aGUga2VybmVsLCBvciBpZiB0aGUKKwkJQ09ORklHX01PRFVMRV9VTkxPQUQga2VybmVsIGNvbmZpZ3VyYXRpb24gdmFsdWUgaXMgbm90IGVuYWJsZWQsCisJCXRoaXMgZmlsZSB3aWxsIG5vdCBiZSBwcmVzZW50LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLXRyYW5zcG9ydC1zcnAgYi9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtdHJhbnNwb3J0LXNycApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzdhZjY5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLXRyYW5zcG9ydC1zcnAKQEAgLTAsMCArMSw1OCBAQAorV2hhdDoJCS9zeXMvY2xhc3Mvc3JwX3JlbW90ZV9wb3J0cy9wb3J0LTxoPjo8bj4vZGVsZXRlCitEYXRlOgkJSnVuZSAxLCAyMDEyCitLZXJuZWxWZXJzaW9uOgkzLjcKK0NvbnRhY3Q6CWxpbnV4LXNjc2lAdmdlci5rZXJuZWwub3JnLCBsaW51eC1yZG1hQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CUluc3RydWN0cyBhbiBTUlAgaW5pdGlhdG9yIHRvIGRpc2Nvbm5lY3QgZnJvbSBhIHRhcmdldCBhbmQgdG8KKwkJcmVtb3ZlIGFsbCBMVU5zIGltcG9ydGVkIGZyb20gdGhhdCB0YXJnZXQuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3NycF9yZW1vdGVfcG9ydHMvcG9ydC08aD46PG4+L2Rldl9sb3NzX3RtbworRGF0ZToJCUZlYnJ1YXJ5IDEsIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTMKK0NvbnRhY3Q6CWxpbnV4LXNjc2lAdmdlci5rZXJuZWwub3JnLCBsaW51eC1yZG1hQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CU51bWJlciBvZiBzZWNvbmRzIHRoZSBTQ1NJIGxheWVyIHdpbGwgd2FpdCBhZnRlciBhIHRyYW5zcG9ydAorCQlsYXllciBlcnJvciBoYXMgYmVlbiBvYnNlcnZlZCBiZWZvcmUgcmVtb3ZpbmcgYSB0YXJnZXQgcG9ydC4KKwkJWmVybyBtZWFucyBpbW1lZGlhdGUgcmVtb3ZhbC4gU2V0dGluZyB0aGlzIGF0dHJpYnV0ZSB0byAib2ZmIgorCQl3aWxsIGRpc2FibGUgdGhlIGRldl9sb3NzIHRpbWVyLgorCitXaGF0OgkJL3N5cy9jbGFzcy9zcnBfcmVtb3RlX3BvcnRzL3BvcnQtPGg+OjxuPi9mYXN0X2lvX2ZhaWxfdG1vCitEYXRlOgkJRmVicnVhcnkgMSwgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xMworQ29udGFjdDoJbGludXgtc2NzaUB2Z2VyLmtlcm5lbC5vcmcsIGxpbnV4LXJkbWFAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoJTnVtYmVyIG9mIHNlY29uZHMgdGhlIFNDU0kgbGF5ZXIgd2lsbCB3YWl0IGFmdGVyIGEgdHJhbnNwb3J0CisJCWxheWVyIGVycm9yIGhhcyBiZWVuIG9ic2VydmVkIGJlZm9yZSBmYWlsaW5nIEkvTy4gWmVybyBtZWFucworCQlmYWlsaW5nIEkvTyBpbW1lZGlhdGVseS4gU2V0dGluZyB0aGlzIGF0dHJpYnV0ZSB0byAib2ZmIiB3aWxsCisJCWRpc2FibGUgdGhlIGZhc3RfaW9fZmFpbCB0aW1lci4KKworV2hhdDoJCS9zeXMvY2xhc3Mvc3JwX3JlbW90ZV9wb3J0cy9wb3J0LTxoPjo8bj4vcG9ydF9pZAorRGF0ZToJCUp1bmUgMjcsIDIwMDcKK0tlcm5lbFZlcnNpb246CTIuNi4yNAorQ29udGFjdDoJbGludXgtc2NzaUB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgkxNi1ieXRlIGxvY2FsIFNSUCBwb3J0IGlkZW50aWZpZXIgaW4gaGV4YWRlY2ltYWwgZm9ybWF0LiBBbgorCQlleGFtcGxlOiA0Yzo0OTo0ZTo1NTo1ODoyMDo1Njo0OTo0ZjowMDowMDowMDowMDowMDowMDowMC4KKworV2hhdDoJCS9zeXMvY2xhc3Mvc3JwX3JlbW90ZV9wb3J0cy9wb3J0LTxoPjo8bj4vcmVjb25uZWN0X2RlbGF5CitEYXRlOgkJRmVicnVhcnkgMSwgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xMworQ29udGFjdDoJbGludXgtc2NzaUB2Z2VyLmtlcm5lbC5vcmcsIGxpbnV4LXJkbWFAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoJTnVtYmVyIG9mIHNlY29uZHMgdGhlIFNDU0kgbGF5ZXIgd2lsbCB3YWl0IGFmdGVyIGEgcmVjb25uZWN0CisJCWF0dGVtcHQgZmFpbGVkIGJlZm9yZSByZXRyeWluZy4gU2V0dGluZyB0aGlzIGF0dHJpYnV0ZSB0bworCQkib2ZmIiB3aWxsIGRpc2FibGUgdGltZS1iYXNlZCByZWNvbm5lY3RpbmcuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3NycF9yZW1vdGVfcG9ydHMvcG9ydC08aD46PG4+L3JvbGVzCitEYXRlOgkJSnVuZSAyNywgMjAwNworS2VybmVsVmVyc2lvbjoJMi42LjI0CitDb250YWN0OglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CVJvbGUgb2YgdGhlIHJlbW90ZSBwb3J0LiBFaXRoZXIgIlNSUCBJbml0aWF0b3IiIG9yICJTUlAgVGFyZ2V0Ii4KKworV2hhdDoJCS9zeXMvY2xhc3Mvc3JwX3JlbW90ZV9wb3J0cy9wb3J0LTxoPjo8bj4vc3RhdGUKK0RhdGU6CQlGZWJydWFyeSAxLCAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjEzCitDb250YWN0OglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9yZywgbGludXgtcmRtYUB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOglTdGF0ZSBvZiB0aGUgdHJhbnNwb3J0IGxheWVyIHVzZWQgZm9yIGNvbW11bmljYXRpb24gd2l0aCB0aGUKKwkJcmVtb3RlIHBvcnQuICJydW5uaW5nIiBpZiB0aGUgdHJhbnNwb3J0IGxheWVyIGlzIG9wZXJhdGlvbmFsOworCQkiYmxvY2tlZCIgaWYgYSB0cmFuc3BvcnQgbGF5ZXIgZXJyb3IgaGFzIGJlZW4gZW5jb3VudGVyZWQgYnV0CisJCXRoZSBmYXN0X2lvX2ZhaWxfdG1vIHRpbWVyIGhhcyBub3QgeWV0IGZpcmVkOyAiZmFpbC1mYXN0IgorCQlhZnRlciB0aGUgZmFzdF9pb19mYWlsX3RtbyB0aW1lciBoYXMgZmlyZWQgYW5kIGJlZm9yZSB0aGUKKwkJImRldl9sb3NzX3RtbyIgdGltZXIgaGFzIGZpcmVkOyAibG9zdCIgYWZ0ZXIgdGhlCisJCSJkZXZfbG9zc190bW8iIHRpbWVyIGhhcyBmaXJlZCBhbmQgYmVmb3JlIHRoZSBwb3J0IGlzIGZpbmFsbHkKKwkJcmVtb3ZlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS90aGVybWFsLW5vdGlmaWNhdGlvbiBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS90aGVybWFsLW5vdGlmaWNhdGlvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzIzZThiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3RoZXJtYWwtbm90aWZpY2F0aW9uCkBAIC0wLDAgKzEsNCBAQAorV2hhdDoJCUEgbm90aWZpY2F0aW9uIG1lY2hhbmlzbSBmb3IgdGhlcm1hbCByZWxhdGVkIGV2ZW50cworRGVzY3JpcHRpb246CisJVGhpcyBpbnRlcmZhY2UgZW5hYmxlcyBub3RpZmljYXRpb24gZm9yIHRoZXJtYWwgcmVsYXRlZCBldmVudHMuCisJVGhlIG5vdGlmaWNhdGlvbiBpcyBpbiB0aGUgZm9ybSBvZiBhIG5ldGxpbmsgZXZlbnQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvdmRzbyBiL0RvY3VtZW50YXRpb24vQUJJL3N0YWJsZS92ZHNvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZGZjMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvdmRzbwpAQCAtMCwwICsxLDI3IEBACitPbiBzb21lIGFyY2hpdGVjdHVyZXMsIHdoZW4gdGhlIGtlcm5lbCBsb2FkcyBhbnkgdXNlcnNwYWNlIHByb2dyYW0gaXQKK21hcHMgYW4gRUxGIERTTyBpbnRvIHRoYXQgcHJvZ3JhbSdzIGFkZHJlc3Mgc3BhY2UuICBUaGlzIERTTyBpcyBjYWxsZWQKK3RoZSB2RFNPIGFuZCBpdCBvZnRlbiBjb250YWlucyB1c2VmdWwgYW5kIGhpZ2hseS1vcHRpbWl6ZWQgYWx0ZXJuYXRpdmVzCit0byByZWFsIHN5c2NhbGxzLgorCitUaGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBqdXN0IGxpa2Ugb3JkaW5hcnkgQyBmdW5jdGlvbiBhY2NvcmRpbmcgdG8KK3lvdXIgcGxhdGZvcm0ncyBBQkkuICBDYWxsIHRoZW0gZnJvbSBhIHNlbnNpYmxlIGNvbnRleHQuICAoRm9yIGV4YW1wbGUsCitpZiB5b3Ugc2V0IENTIG9uIHg4NiB0byBzb21ldGhpbmcgc3RyYW5nZSwgdGhlIHZEU08gZnVuY3Rpb25zIGFyZQord2l0aGluIHRoZWlyIHJpZ2h0cyB0byBjcmFzaC4pICBJbiBhZGRpdGlvbiwgaWYgeW91IHBhc3MgYSBiYWQKK3BvaW50ZXIgdG8gYSB2RFNPIGZ1bmN0aW9uLCB5b3UgbWlnaHQgZ2V0IFNJR1NFR1YgaW5zdGVhZCBvZiAtRUZBVUxULgorCitUbyBmaW5kIHRoZSBEU08sIHBhcnNlIHRoZSBhdXhpbGlhcnkgdmVjdG9yIHBhc3NlZCB0byB0aGUgcHJvZ3JhbSdzCitlbnRyeSBwb2ludC4gIFRoZSBBVF9TWVNJTkZPX0VIRFIgZW50cnkgd2lsbCBwb2ludCB0byB0aGUgdkRTTy4KKworVGhlIHZEU08gdXNlcyBzeW1ib2wgdmVyc2lvbmluZzsgd2hlbmV2ZXIgeW91IHJlcXVlc3QgYSBzeW1ib2wgZnJvbSB0aGUKK3ZEU08sIHNwZWNpZnkgdGhlIHZlcnNpb24geW91IGFyZSBleHBlY3RpbmcuCisKK1Byb2dyYW1zIHRoYXQgZHluYW1pY2FsbHkgbGluayB0byBnbGliYyB3aWxsIHVzZSB0aGUgdkRTTyBhdXRvbWF0aWNhbGx5LgorT3RoZXJ3aXNlLCB5b3UgY2FuIHVzZSB0aGUgcmVmZXJlbmNlIHBhcnNlciBpbiBEb2N1bWVudGF0aW9uL3ZEU08vcGFyc2VfdmRzby5jLgorCitVbmxlc3Mgb3RoZXJ3aXNlIG5vdGVkLCB0aGUgc2V0IG9mIHN5bWJvbHMgd2l0aCBhbnkgZ2l2ZW4gdmVyc2lvbiBhbmQgdGhlCitBQkkgb2YgdGhvc2Ugc3ltYm9scyBpcyBjb25zaWRlcmVkIHN0YWJsZS4gIEl0IG1heSB2YXJ5IGFjcm9zcyBhcmNoaXRlY3R1cmVzLAordGhvdWdoLgorCisoQXMgb2YgdGhpcyB3cml0aW5nLCB0aGlzIEFCSSBkb2N1bWVudGF0aW9uIGFzIGJlZW4gY29uZmlybWVkIGZvciB4ODZfNjQuCisgVGhlIG1haW50YWluZXJzIG9mIHRoZSBvdGhlciB2RFNPLXVzaW5nIGFyY2hpdGVjdHVyZXMgc2hvdWxkIGNvbmZpcm0KKyB0aGF0IGl0IGlzIGNvcnJlY3QgZm9yIHRoZWlyIGFyY2hpdGVjdHVyZS4pCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXNwZWFyLXBjaWUtZ2FkZ2V0IGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy1zcGVhci1wY2llLWdhZGdldApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDBjMzI0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy1zcGVhci1wY2llLWdhZGdldApAQCAtMCwwICsxLDMxIEBACitXaGF0OgkJL2NvbmZpZy9wY2llLWdhZGdldAorRGF0ZToJCUZlYiAyMDExCitLZXJuZWxWZXJzaW9uOgkyLjYuMzcKK0NvbnRhY3Q6CVByYXR5dXNoIEFuYW5kIDxwcmF0eXVzaC5hbmFuZEBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKworCUludGVyZmFjZSBpcyB1c2VkIHRvIGNvbmZpZ3VyZSBzZWxlY3RlZCBkdWFsIG1vZGUgUENJZSBjb250cm9sbGVyCisJYXMgZGV2aWNlIGFuZCB0aGVuIHByb2dyYW0gaXRzIHZhcmlvdXMgcmVnaXN0ZXJzIHRvIGNvbmZpZ3VyZSBpdAorCWFzIGEgcGFydGljdWxhciBkZXZpY2UgdHlwZS4KKwlUaGlzIGludGVyZmFjZXMgY2FuIGJlIHVzZWQgdG8gc2hvdyBzcGVhcidzIFBDSWUgZGV2aWNlIGNhcGFiaWxpdHkuCisKKwlOb2RlcyBhcmUgb25seSB2aXNpYmxlIHdoZW4gY29uZmlnZnMgaXMgbW91bnRlZC4gVG8gbW91bnQgY29uZmlnZnMKKwlpbiAvY29uZmlnIGRpcmVjdG9yeSB1c2U6CisJIyBtb3VudCAtdCBjb25maWdmcyBub25lIC9jb25maWcvCisKKwlGb3IgbnRoIFBDSWUgRGV2aWNlIENvbnRyb2xsZXIKKwkvY29uZmlnL3BjaWUtZ2FkZ2V0Lm4vCisJCWxpbmsgLi4uIHVzZWQgdG8gZW5hYmxlIGx0c3NtIGFuZCByZWFkIGl0cyBzdGF0dXMuCisJCWludF90eXBlIC4uLnVzZWQgdG8gY29uZmlndXJlIGFuZCByZWFkIHR5cGUgb2Ygc3VwcG9ydGVkCisJCQlpbnRlcnJ1cHQKKwkJbm9fb2ZfbXNpIC4uLiB1c2VkIHRvIGNvbmZpZ3VyZSBudW1iZXIgb2YgTVNJIHZlY3RvciBuZWVkZWQgYW5kCisJCQl0byByZWFkIG5vIG9mIE1TSSBncmFudGVkLgorCQlpbnRhIC4uLiB3cml0ZSAxIHRvIGFzc2VydCBJTlRBIGFuZCAwIHRvIGRlLWFzc2VydC4KKwkJc2VuZF9tc2kgLi4uIHdyaXRlIE1TSSB2ZWN0b3IgdG8gYmUgc2VudC4KKwkJdmVuZG9yX2lkIC4uLiB1c2VkIHRvIHdyaXRlIGFuZCByZWFkIHZlbmRvciBpZCAoaGV4KQorCQlkZXZpY2VfaWQgLi4uIHVzZWQgdG8gd3JpdGUgYW5kIHJlYWQgZGV2aWNlIGlkIChoZXgpCisJCWJhcjBfc2l6ZSAuLi4gdXNlZCB0byB3cml0ZSBhbmQgcmVhZCBiYXIwX3NpemUKKwkJYmFyMF9hZGRyZXNzIC4uLiB1c2VkIHRvIHdyaXRlIGFuZCByZWFkIGJhcjAgbWFwcGVkIGFyZWEgaW4gaGV4LgorCQliYXIwX3J3X29mZnNldCAuLi4gdXNlZCB0byB3cml0ZSBhbmQgcmVhZCBvZmZzZXQgb2YgYmFyMCB3aGVyZQorCQkJYmFyMF9kYXRhIHdpbGwgYmUgd3JpdHRlbiBvciByZWFkLgorCQliYXIwX2RhdGEgLi4uIHVzZWQgdG8gd3JpdGUgYW5kIHJlYWQgZGF0YSBhdCBiYXIwX3J3X29mZnNldC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtc3RwLXBvbGljeSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtc3RwLXBvbGljeQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjFjZTY4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy1zdHAtcG9saWN5CkBAIC0wLDAgKzEsNDggQEAKK1doYXQ6CQkvY29uZmlnL3N0cC1wb2xpY3kKK0RhdGU6CQlKdW5lIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMworRGVzY3JpcHRpb246CisJCVRoaXMgZ3JvdXAgY29udGFpbnMgcG9saWNpZXMgbWFuZGF0aW5nIE1hc3Rlci9DaGFubmVsIGFsbG9jYXRpb24KKwkJZm9yIHNvZnR3YXJlIHNvdXJjZXMgd2lzaGluZyB0byBzZW5kIHRyYWNlIGRhdGEgb3ZlciBhbiBTVE0KKwkJZGV2aWNlLgorCitXaGF0OgkJL2NvbmZpZy9zdHAtcG9saWN5LzxkZXZpY2U+Ljxwb2xpY3k+CitEYXRlOgkJSnVuZSAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjMKK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGdyb3VwIGlzIHRoZSByb290IG9mIGEgcG9saWN5OyBpdHMgbmFtZSBpcyBhIGNvbmNhdGVuYXRpb24KKwkJb2YgYW4gc3RtIGRldmljZSBuYW1lIHRvIHdoaWNoIHRoaXMgcG9saWN5IGFwcGxpZXMgYW5kIGFuCisJCWFyYml0cmFyeSBzdHJpbmcuIElmIDxkZXZpY2U+IHBhcnQgZG9lc24ndCBtYXRjaCBhbiBleGlzdGluZworCQlzdG0gZGV2aWNlLCBta2RpciB3aWxsIGZhaWwgd2l0aCBFTk9ERVY7IGlmIHRoYXQgZGV2aWNlIGFscmVhZHkKKwkJaGFzIGEgcG9saWN5IGFzc2lnbmVkIHRvIGl0LCBta2RpciB3aWxsIGZhaWwgd2l0aCBFQlVTWS4KKworV2hhdDoJCS9jb25maWcvc3RwLXBvbGljeS88ZGV2aWNlPi48cG9saWN5Pi9kZXZpY2UKK0RhdGU6CQlKdW5lIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMworRGVzY3JpcHRpb246CisJCVNUTSBkZXZpY2UgdG8gd2hpY2ggdGhpcyBwb2xpY3kgYXBwbGllcywgcmVhZCBvbmx5LiBTYW1lIGFzIHRoZQorCQk8ZGV2aWNlPiBjb21wb25lbnQgb2YgaXRzIHBhcmVudCBkaXJlY3RvcnkuCisKK1doYXQ6CQkvY29uZmlnL3N0cC1wb2xpY3kvPGRldmljZT4uPHBvbGljeT4vPG5vZGU+CitEYXRlOgkJSnVuZSAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjMKK0Rlc2NyaXB0aW9uOgorCQlQb2xpY3kgbm9kZSBpcyBhIHN0cmluZyBpZGVudGlmaWVyIHRoYXQgc29mdHdhcmUgY2xpZW50cyB3aWxsCisJCXVzZSB0byByZXF1ZXN0IGEgbWFzdGVyL2NoYW5uZWwgdG8gYmUgYWxsb2NhdGVkIGFuZCBhc3NpZ25lZCB0bworCQl0aGVtLgorCitXaGF0OgkJL2NvbmZpZy9zdHAtcG9saWN5LzxkZXZpY2U+Ljxwb2xpY3k+Lzxub2RlPi9tYXN0ZXJzCitEYXRlOgkJSnVuZSAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjMKK0Rlc2NyaXB0aW9uOgorCQlSYW5nZSBvZiBtYXN0ZXJzIGZyb20gd2hpY2ggdG8gYWxsb2NhdGUgZm9yIHVzZXJzIG9mIHRoaXMgbm9kZS4KKwkJV3JpdGUgdHdvIG51bWJlcnM6IHRoZSBmaXJzdCBtYXN0ZXIgYW5kIHRoZSBsYXN0IG1hc3RlciBudW1iZXIuCisKK1doYXQ6CQkvY29uZmlnL3N0cC1wb2xpY3kvPGRldmljZT4uPHBvbGljeT4vPG5vZGU+L2NoYW5uZWxzCitEYXRlOgkJSnVuZSAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjMKK0Rlc2NyaXB0aW9uOgorCQlSYW5nZSBvZiBjaGFubmVscyBmcm9tIHdoaWNoIHRvIGFsbG9jYXRlIGZvciB1c2VycyBvZiB0aGlzIG5vZGUuCisJCVdyaXRlIHR3byBudW1iZXJzOiB0aGUgZmlyc3QgY2hhbm5lbCBhbmQgdGhlIGxhc3QgY2hhbm5lbAorCQludW1iZXIuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdXNiLWdhZGdldCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdXNiLWdhZGdldApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWEzNjU4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy11c2ItZ2FkZ2V0CkBAIC0wLDAgKzEsMTI2IEBACitXaGF0OgkJL2NvbmZpZy91c2ItZ2FkZ2V0CitEYXRlOgkJSnVuIDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTEKK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGdyb3VwIGNvbnRhaW5zIHN1Yi1ncm91cHMgY29ycmVzcG9uZGluZyB0byBjcmVhdGVkCisJCVVTQiBnYWRnZXRzLgorCitXaGF0OgkJL2NvbmZpZy91c2ItZ2FkZ2V0L2dhZGdldAorRGF0ZToJCUp1biAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjExCitEZXNjcmlwdGlvbjoKKworCQlUaGUgYXR0cmlidXRlcyBvZiBhIGdhZGdldDoKKworCQlVREMJCS0gYmluZCBhIGdhZGdldCB0byBVREMvdW5iaW5kIGEgZ2FkZ2V0OworCQkJCXdyaXRlIFVEQydzIG5hbWUgZm91bmQgaW4gL3N5cy9jbGFzcy91ZGMvKgorCQkJCXRvIGJpbmQgYSBnYWRnZXQsIGVtcHR5IHN0cmluZyAiIiB0byB1bmJpbmQuCisKKwkJYkRldmljZUNsYXNzCS0gVVNCIGRldmljZSBjbGFzcyBjb2RlCisJCWJEZXZpY2VTdWJDbGFzcwktIFVTQiBkZXZpY2Ugc3ViY2xhc3MgY29kZQorCQliRGV2aWNlUHJvdG9jb2wJLSBVU0IgZGV2aWNlIHByb3RvY29sIGNvZGUKKwkJYk1heFBhY2tldFNpemUwCS0gbWF4aW11bSBlbmRwb2ludCAwIHBhY2tldCBzaXplCisJCWJjZERldmljZQktIGJjZCBkZXZpY2UgcmVsZWFzZSBudW1iZXIKKwkJYmNkVVNCCQktIGJjZCBVU0Igc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIG51bWJlcgorCQlpZFByb2R1Y3QJLSBwcm9kdWN0IElECisJCWlkVmVuZG9yCS0gdmVuZG9yIElECisKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2NvbmZpZ3MKK0RhdGU6CQlKdW4gMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMQorRGVzY3JpcHRpb246CisJCVRoaXMgZ3JvdXAgY29udGFpbnMgYSBVU0IgZ2FkZ2V0J3MgY29uZmlndXJhdGlvbnMKKworV2hhdDoJCS9jb25maWcvdXNiLWdhZGdldC9nYWRnZXQvY29uZmlncy9jb25maWcKK0RhdGU6CQlKdW4gMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMQorRGVzY3JpcHRpb246CisJCVRoZSBhdHRyaWJ1dGVzIG9mIGEgY29uZmlndXJhdGlvbjoKKworCQlibUF0dHJpYnV0ZXMJLSBjb25maWd1cmF0aW9uIGNoYXJhY3RlcmlzdGljcworCQlNYXhQb3dlcgktIG1heGltdW0gcG93ZXIgY29uc3VtcHRpb24gZnJvbSB0aGUgYnVzCisKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2NvbmZpZ3MvY29uZmlnL3N0cmluZ3MKK0RhdGU6CQlKdW4gMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMQorRGVzY3JpcHRpb246CisJCVRoaXMgZ3JvdXAgY29udGFpbnMgc3ViZGlyZWN0b3JpZXMgZm9yIGxhbmd1YWdlLXNwZWNpZmljCisJCXN0cmluZ3MgZm9yIHRoaXMgY29uZmlndXJhdGlvbi4KKworV2hhdDoJCS9jb25maWcvdXNiLWdhZGdldC9nYWRnZXQvY29uZmlncy9jb25maWcvc3RyaW5ncy9sYW5ndWFnZQorRGF0ZToJCUp1biAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjExCitEZXNjcmlwdGlvbjoKKwkJVGhlIGF0dHJpYnV0ZXM6CisKKwkJY29uZmlndXJhdGlvbgktIGNvbmZpZ3VyYXRpb24gZGVzY3JpcHRpb24KKworCitXaGF0OgkJL2NvbmZpZy91c2ItZ2FkZ2V0L2dhZGdldC9mdW5jdGlvbnMKK0RhdGU6CQlKdW4gMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMQorRGVzY3JpcHRpb246CisJCVRoaXMgZ3JvdXAgY29udGFpbnMgZnVuY3Rpb25zIGF2YWlsYWJsZSB0byB0aGlzIFVTQiBnYWRnZXQuCisKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2Z1bmN0aW9ucy88ZnVuYz4uPGluc3Q+L2ludGVyZmFjZS48bj4KK0RhdGU6CQlNYXkgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xNgorRGVzY3JpcHRpb246CisJCVRoaXMgZ3JvdXAgY29udGFpbnMgIkZlYXR1cmUgRGVzY3JpcHRvcnMiIHNwZWNpZmljIGZvciBvbmUKKwkJZ2FkZ2V0J3MgVVNCIGludGVyZmFjZSBvciBvbmUgaW50ZXJmYWNlIGdyb3VwIGRlc2NyaWJlZAorCQlieSBhbiBJQUQuCisKKwkJVGhlIGF0dHJpYnV0ZXM6CisKKwkJY29tcGF0aWJsZV9pZAkJLSA4LWJ5dGUgc3RyaW5nIGZvciAiQ29tcGF0aWJsZSBJRCIKKwkJc3ViX2NvbXBhdGlibGVfaWQJLSA4LWJ5dGUgc3RyaW5nIGZvciAiU3ViIENvbXBhdGlibGUgSUQiCisKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2Z1bmN0aW9ucy88ZnVuYz4uPGluc3Q+L2ludGVyZmFjZS48bj4vPHByb3BlcnR5PgorRGF0ZToJCU1heSAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE2CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBncm91cCBjb250YWlucyAiRXh0ZW5kZWQgUHJvcGVydHkgRGVzY3JpcHRvcnMiIHNwZWNpZmljIGZvciBvbmUKKwkJZ2FkZ2V0J3MgVVNCIGludGVyZmFjZSBvciBvbmUgaW50ZXJmYWNlIGdyb3VwIGRlc2NyaWJlZAorCQlieSBhbiBJQUQuCisKKwkJVGhlIGF0dHJpYnV0ZXM6CisKKwkJdHlwZQkJLSB2YWx1ZSAxLi43IGZvciBpbnRlcnByZXRpbmcgdGhlIGRhdGEKKwkJCQkxOiB1bmljb2RlIHN0cmluZworCQkJCTI6IHVuaWNvZGUgc3RyaW5nIHdpdGggZW52aXJvbm1lbnQgdmFyaWFibGUKKwkJCQkzOiBiaW5hcnkKKwkJCQk0OiBsaXR0bGUtZW5kaWFuIDMyLWJpdAorCQkJCTU6IGJpZy1lbmRpYW4gMzItYml0CisJCQkJNjogdW5pY29kZSBzdHJpbmcgd2l0aCBhIHN5bWJvbGljIGxpbmsKKwkJCQk3OiBtdWx0aXBsZSB1bmljb2RlIHN0cmluZ3MKKwkJZGF0YQkJLSBibG9iIG9mIGRhdGEgdG8gYmUgaW50ZXJwcmV0ZWQgZGVwZW5kaW5nIG9uCisJCQkJdHlwZQorCitXaGF0OgkJL2NvbmZpZy91c2ItZ2FkZ2V0L2dhZGdldC9zdHJpbmdzCitEYXRlOgkJSnVuIDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTEKK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGdyb3VwIGNvbnRhaW5zIHN1YmRpcmVjdG9yaWVzIGZvciBsYW5ndWFnZS1zcGVjaWZpYworCQlzdHJpbmdzIGZvciB0aGlzIGdhZGdldC4KKworV2hhdDoJCS9jb25maWcvdXNiLWdhZGdldC9nYWRnZXQvc3RyaW5ncy9sYW5ndWFnZQorRGF0ZToJCUp1biAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjExCitEZXNjcmlwdGlvbjoKKwkJVGhlIGF0dHJpYnV0ZXM6CisKKwkJc2VyaWFsbnVtYmVyCS0gZ2FkZ2V0J3Mgc2VyaWFsIG51bWJlciAoc3RyaW5nKQorCQlwcm9kdWN0CQktIGdhZGdldCdzIHByb2R1Y3QgZGVzY3JpcHRpb24KKwkJbWFudWZhY3R1cmVyCS0gZ2FkZ2V0J3MgbWFudWZhY3R1cmVyIGRlc2NyaXB0aW9uCisKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L29zX2Rlc2MKK0RhdGU6CQlNYXkgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xNgorRGVzY3JpcHRpb246CisJCVRoaXMgZ3JvdXAgY29udGFpbnMgIk9TIFN0cmluZyIgZXh0ZW5zaW9uIGhhbmRsaW5nIGF0dHJpYnV0ZXMuCisKKwkJdXNlCQktIGZsYWcgdHVybmluZyAiT1MgRGVzY3RpcHRvcnMiIHN1cHBvcnQgb24vb2ZmCisJCWJfdmVuZG9yX2NvZGUJLSBvbmUtYnl0ZSB2YWx1ZSB1c2VkIGZvciBjdXN0b20gcGVyLWRldmljZSBhbmQKKwkJCQlwZXItaW50ZXJmYWNlIHJlcXVlc3RzCisJCXF3X3NpZ24JCS0gYW4gaWRlbnRpZmllciB0byBiZSByZXBvcnRlZCBhcyAiT1MgU3RyaW5nIgorCQkJCXByb3BlcgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy11c2ItZ2FkZ2V0LWFjbSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdXNiLWdhZGdldC1hY20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDIxMDkyZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdXNiLWdhZGdldC1hY20KQEAgLTAsMCArMSw4IEBACitXaGF0OgkJL2NvbmZpZy91c2ItZ2FkZ2V0L2dhZGdldC9mdW5jdGlvbnMvYWNtLm5hbWUKK0RhdGU6CQlKdW4gMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMQorRGVzY3JpcHRpb246CisKKwkJVGhpcyBpdGVtIGNvbnRhaW5zIGp1c3Qgb25lIHJlYWRvbmx5IGF0dHJpYnV0ZTogcG9ydF9udW0uCisJCUl0IGNvbnRhaW5zIHRoZSBwb3J0IG51bWJlciBvZiB0aGUgL2Rldi90dHlHUzxuPiBkZXZpY2UKKwkJYXNzb2NpYXRlZCB3aXRoIGFjbSBmdW5jdGlvbidzIGluc3RhbmNlICJuYW1lIi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdXNiLWdhZGdldC1lY20gYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtZWNtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhZGRmNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtZWNtCkBAIC0wLDAgKzEsMTYgQEAKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2Z1bmN0aW9ucy9lY20ubmFtZQorRGF0ZToJCUp1biAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjExCitEZXNjcmlwdGlvbjoKKwkJVGhlIGF0dHJpYnV0ZXM6CisKKwkJaWZuYW1lCQktIG5ldHdvcmsgZGV2aWNlIGludGVyZmFjZSBuYW1lIGFzc29jaWF0ZWQgd2l0aAorCQkJCXRoaXMgZnVuY3Rpb24gaW5zdGFuY2UKKwkJcW11bHQJCS0gcXVldWUgbGVuZ3RoIG11bHRpcGxpZXIgZm9yIGhpZ2ggYW5kCisJCQkJc3VwZXIgc3BlZWQKKwkJaG9zdF9hZGRyCS0gTUFDIGFkZHJlc3Mgb2YgaG9zdCdzIGVuZCBvZiB0aGlzCisJCQkJRXRoZXJuZXQgb3ZlciBVU0IgbGluaworCQlkZXZfYWRkcgktIE1BQyBhZGRyZXNzIG9mIGRldmljZSdzIGVuZCBvZiB0aGlzCisJCQkJRXRoZXJuZXQgb3ZlciBVU0IgbGluaworCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdXNiLWdhZGdldC1lZW0gYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtZWVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0YzU3MTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtZWVtCkBAIC0wLDAgKzEsMTQgQEAKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2Z1bmN0aW9ucy9lZW0ubmFtZQorRGF0ZToJCUp1biAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjExCitEZXNjcmlwdGlvbjoKKwkJVGhlIGF0dHJpYnV0ZXM6CisKKwkJaWZuYW1lCQktIG5ldHdvcmsgZGV2aWNlIGludGVyZmFjZSBuYW1lIGFzc29jaWF0ZWQgd2l0aAorCQkJCXRoaXMgZnVuY3Rpb24gaW5zdGFuY2UKKwkJcW11bHQJCS0gcXVldWUgbGVuZ3RoIG11bHRpcGxpZXIgZm9yIGhpZ2ggYW5kCisJCQkJc3VwZXIgc3BlZWQKKwkJaG9zdF9hZGRyCS0gTUFDIGFkZHJlc3Mgb2YgaG9zdCdzIGVuZCBvZiB0aGlzCisJCQkJRXRoZXJuZXQgb3ZlciBVU0IgbGluaworCQlkZXZfYWRkcgktIE1BQyBhZGRyZXNzIG9mIGRldmljZSdzIGVuZCBvZiB0aGlzCisJCQkJRXRoZXJuZXQgb3ZlciBVU0IgbGluawpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy11c2ItZ2FkZ2V0LWZmcyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdXNiLWdhZGdldC1mZnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM5YjI3NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdXNiLWdhZGdldC1mZnMKQEAgLTAsMCArMSw5IEBACitXaGF0OgkJL2NvbmZpZy91c2ItZ2FkZ2V0L2dhZGdldC9mdW5jdGlvbnMvZmZzLm5hbWUKK0RhdGU6CQlOb3YgMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMworRGVzY3JpcHRpb246CVRoZSBwdXJwb3NlIG9mIHRoaXMgZGlyZWN0b3J5IGlzIHRvIGNyZWF0ZSBhbmQgcmVtb3ZlIGl0LgorCisJCUEgY29ycmVzcG9uZGluZyBVU0IgZnVuY3Rpb24gaW5zdGFuY2UgaXMgY3JlYXRlZC9yZW1vdmVkLgorCQlUaGVyZSBhcmUgbm8gYXR0cmlidXRlcyBoZXJlLgorCisJCUFsbCBwYXJhbWV0ZXJzIGFyZSBzZXQgdGhyb3VnaCBGdW5jdGlvbkZTLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy11c2ItZ2FkZ2V0LWhpZCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdXNiLWdhZGdldC1oaWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEyZTAwZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdXNiLWdhZGdldC1oaWQKQEAgLTAsMCArMSwxMSBAQAorV2hhdDoJCS9jb25maWcvdXNiLWdhZGdldC9nYWRnZXQvZnVuY3Rpb25zL2hpZC5uYW1lCitEYXRlOgkJTm92IDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTkKK0Rlc2NyaXB0aW9uOgorCQlUaGUgYXR0cmlidXRlczoKKworCQlwcm90b2NvbAktIEhJRCBwcm90b2NvbCB0byB1c2UKKwkJcmVwb3J0X2Rlc2MJLSBibG9iIGNvcnJlc3BvbmRpbmcgdG8gSElEIHJlcG9ydCBkZXNjcmlwdG9ycworCQkJCWV4Y2VwdCB0aGUgZGF0YSBwYXNzZWQgdGhyb3VnaCAvZGV2L2hpZGc8Tj4KKwkJcmVwb3J0X2xlbmd0aAktIEhJRCByZXBvcnQgbGVuZ3RoCisJCXN1YmNsYXNzCS0gSElEIGRldmljZSBzdWJjbGFzcyB0byB1c2UKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdXNiLWdhZGdldC1sb29wYmFjayBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdXNiLWdhZGdldC1sb29wYmFjawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmJlZWZiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy11c2ItZ2FkZ2V0LWxvb3BiYWNrCkBAIC0wLDAgKzEsOCBAQAorV2hhdDoJCS9jb25maWcvdXNiLWdhZGdldC9nYWRnZXQvZnVuY3Rpb25zL0xvb3BiYWNrLm5hbWUKK0RhdGU6CQlOb3YgMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMworRGVzY3JpcHRpb246CisJCVRoZSBhdHRyaWJ1dGVzOgorCisJCXFsZW4JCS0gZGVwdGggb2YgbG9vcGJhY2sgcXVldWUKKwkJYnVmbGVuCQktIGJ1ZmZlciBsZW5ndGgKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdXNiLWdhZGdldC1tYXNzLXN0b3JhZ2UgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtbWFzcy1zdG9yYWdlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5MzFmYjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtbWFzcy1zdG9yYWdlCkBAIC0wLDAgKzEsMzEgQEAKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2Z1bmN0aW9ucy9tYXNzX3N0b3JhZ2UubmFtZQorRGF0ZToJCU9jdCAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjEzCitEZXNjcmlwdGlvbjoKKwkJVGhlIGF0dHJpYnV0ZXM6CisKKwkJc3RhbGwJCS0gU2V0IHRvIHBlcm1pdCBmdW5jdGlvbiB0byBoYWx0IGJ1bGsgZW5kcG9pbnRzLgorCQkJCURpc2FibGVkIG9uIHNvbWUgVVNCIGRldmljZXMga25vd24gbm90IHRvIHdvcmsKKwkJCQljb3JyZWN0bHkuIFlvdSBzaG91bGQgc2V0IGl0IHRvIHRydWUuCisJCW51bV9idWZmZXJzCS0gTnVtYmVyIG9mIHBpcGVsaW5lIGJ1ZmZlcnMuIFZhbGlkIG51bWJlcnMKKwkJCQlhcmUgMi4uNC4gQXZhaWxhYmxlIG9ubHkgaWYKKwkJCQlDT05GSUdfVVNCX0dBREdFVF9ERUJVR19GSUxFUyBpcyBzZXQuCisKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2Z1bmN0aW9ucy9tYXNzX3N0b3JhZ2UubmFtZS9sdW4ubmFtZQorRGF0ZToJCU9jdCAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjEzCitEZXNjcmlwdGlvbjoKKwkJVGhlIGF0dHJpYnV0ZXM6CisKKwkJZmlsZQkJLSBUaGUgcGF0aCB0byB0aGUgYmFja2luZyBmaWxlIGZvciB0aGUgTFVOLgorCQkJCVJlcXVpcmVkIGlmIExVTiBpcyBub3QgbWFya2VkIGFzIHJlbW92YWJsZS4KKwkJcm8JCS0gRmxhZyBzcGVjaWZ5aW5nIGFjY2VzcyB0byB0aGUgTFVOIHNoYWxsIGJlCisJCQkJcmVhZC1vbmx5LiBUaGlzIGlzIGltcGxpZWQgaWYgQ0QtUk9NIGVtdWxhdGlvbgorCQkJCWlzIGVuYWJsZWQgYXMgd2VsbCBhcyB3aGVuIGl0IHdhcyBpbXBvc3NpYmxlCisJCQkJdG8gb3BlbiAiZmlsZW5hbWUiIGluIFIvVyBtb2RlLgorCQlyZW1vdmFibGUJLSBGbGFnIHNwZWNpZnlpbmcgdGhhdCBMVU4gc2hhbGwgYmUgaW5kaWNhdGVkIGFzCisJCQkJYmVpbmcgcmVtb3ZhYmxlLgorCQljZHJvbQkJLSBGbGFnIHNwZWNpZnlpbmcgdGhhdCBMVU4gc2hhbGwgYmUgcmVwb3J0ZWQgYXMKKwkJCQliZWluZyBhIENELVJPTS4KKwkJbm9mdWEJCS0gRmxhZyBzcGVjaWZ5aW5nIHRoYXQgRlVBIGZsYWcKKwkJCQlpbiBTQ1NJIFdSSVRFKDEwLDEyKQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy11c2ItZ2FkZ2V0LW1pZGkgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtbWlkaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjM0MWRmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy11c2ItZ2FkZ2V0LW1pZGkKQEAgLTAsMCArMSwxMiBAQAorV2hhdDoJCS9jb25maWcvdXNiLWdhZGdldC9nYWRnZXQvZnVuY3Rpb25zL21pZGkubmFtZQorRGF0ZToJCU5vdiAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE5CitEZXNjcmlwdGlvbjoKKwkJVGhlIGF0dHJpYnV0ZXM6CisKKwkJaW5kZXgJCS0gaW5kZXggdmFsdWUgZm9yIHRoZSBVU0IgTUlESSBhZGFwdGVyCisJCWlkCQktIElEIHN0cmluZyBmb3IgdGhlIFVTQiBNSURJIGFkYXB0ZXIKKwkJYnVmbGVuCQktIE1JREkgYnVmZmVyIGxlbmd0aAorCQlxbGVuCQktIFVTQiByZWFkIHJlcXVlc3QgcXVldWUgbGVuZ3RoCisJCWluX3BvcnRzCS0gbnVtYmVyIG9mIE1JREkgaW5wdXQgcG9ydHMKKwkJb3V0X3BvcnRzCS0gbnVtYmVyIG9mIE1JREkgb3V0cHV0IHBvcnRzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtbmNtIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy11c2ItZ2FkZ2V0LW5jbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmU3MjNlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy11c2ItZ2FkZ2V0LW5jbQpAQCAtMCwwICsxLDE1IEBACitXaGF0OgkJL2NvbmZpZy91c2ItZ2FkZ2V0L2dhZGdldC9mdW5jdGlvbnMvbmNtLm5hbWUKK0RhdGU6CQlKdW4gMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMQorRGVzY3JpcHRpb246CisJCVRoZSBhdHRyaWJ1dGVzOgorCisJCWlmbmFtZQkJLSBuZXR3b3JrIGRldmljZSBpbnRlcmZhY2UgbmFtZSBhc3NvY2lhdGVkIHdpdGgKKwkJCQl0aGlzIGZ1bmN0aW9uIGluc3RhbmNlCisJCXFtdWx0CQktIHF1ZXVlIGxlbmd0aCBtdWx0aXBsaWVyIGZvciBoaWdoIGFuZAorCQkJCXN1cGVyIHNwZWVkCisJCWhvc3RfYWRkcgktIE1BQyBhZGRyZXNzIG9mIGhvc3QncyBlbmQgb2YgdGhpcworCQkJCUV0aGVybmV0IG92ZXIgVVNCIGxpbmsKKwkJZGV2X2FkZHIJLSBNQUMgYWRkcmVzcyBvZiBkZXZpY2UncyBlbmQgb2YgdGhpcworCQkJCUV0aGVybmV0IG92ZXIgVVNCIGxpbmsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy11c2ItZ2FkZ2V0LW9iZXggYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtb2JleApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNmE5MzI3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy11c2ItZ2FkZ2V0LW9iZXgKQEAgLTAsMCArMSw5IEBACitXaGF0OgkJL2NvbmZpZy91c2ItZ2FkZ2V0L2dhZGdldC9mdW5jdGlvbnMvb2JleC5uYW1lCitEYXRlOgkJSnVuIDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTEKK0Rlc2NyaXB0aW9uOgorCisJCVRoaXMgaXRlbSBjb250YWlucyBqdXN0IG9uZSByZWFkb25seSBhdHRyaWJ1dGU6IHBvcnRfbnVtLgorCQlJdCBjb250YWlucyB0aGUgcG9ydCBudW1iZXIgb2YgdGhlIC9kZXYvdHR5R1M8bj4gZGV2aWNlCisJCWFzc29jaWF0ZWQgd2l0aCBvYmV4IGZ1bmN0aW9uJ3MgaW5zdGFuY2UgIm5hbWUiLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtcGhvbmV0IGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy11c2ItZ2FkZ2V0LXBob25ldApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDM3YTM1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy11c2ItZ2FkZ2V0LXBob25ldApAQCAtMCwwICsxLDggQEAKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2Z1bmN0aW9ucy9waG9uZXQubmFtZQorRGF0ZToJCUp1biAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjExCitEZXNjcmlwdGlvbjoKKworCQlUaGlzIGl0ZW0gY29udGFpbnMganVzdCBvbmUgcmVhZG9ubHkgYXR0cmlidXRlOiBpZm5hbWUuCisJCUl0IGNvbnRhaW5zIHRoZSBuZXR3b3JrIGludGVyZmFjZSBuYW1lIGFzc2lnbmVkIGR1cmluZworCQluZXR3b3JrIGRldmljZSByZWdpc3RyYXRpb24uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtcHJpbnRlciBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdXNiLWdhZGdldC1wcmludGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMDcxNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtcHJpbnRlcgpAQCAtMCwwICsxLDkgQEAKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2Z1bmN0aW9ucy9wcmludGVyLm5hbWUKK0RhdGU6CQlBcHIgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4xCitEZXNjcmlwdGlvbjoKKwkJVGhlIGF0dHJpYnV0ZXM6CisKKwkJcG5wX3N0cmluZwktIERhdGEgdG8gYmUgcGFzc2VkIHRvIHRoZSBob3N0IGluIHBucCBzdHJpbmcKKwkJcV9sZW4JCS0gTnVtYmVyIG9mIHJlcXVlc3RzIHBlciBlbmRwb2ludAorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtcm5kaXMgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtcm5kaXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMyODc5YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdXNiLWdhZGdldC1ybmRpcwpAQCAtMCwwICsxLDE0IEBACitXaGF0OgkJL2NvbmZpZy91c2ItZ2FkZ2V0L2dhZGdldC9mdW5jdGlvbnMvcm5kaXMubmFtZQorRGF0ZToJCUp1biAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjExCitEZXNjcmlwdGlvbjoKKwkJVGhlIGF0dHJpYnV0ZXM6CisKKwkJaWZuYW1lCQktIG5ldHdvcmsgZGV2aWNlIGludGVyZmFjZSBuYW1lIGFzc29jaWF0ZWQgd2l0aAorCQkJCXRoaXMgZnVuY3Rpb24gaW5zdGFuY2UKKwkJcW11bHQJCS0gcXVldWUgbGVuZ3RoIG11bHRpcGxpZXIgZm9yIGhpZ2ggYW5kCisJCQkJc3VwZXIgc3BlZWQKKwkJaG9zdF9hZGRyCS0gTUFDIGFkZHJlc3Mgb2YgaG9zdCdzIGVuZCBvZiB0aGlzCisJCQkJRXRoZXJuZXQgb3ZlciBVU0IgbGluaworCQlkZXZfYWRkcgktIE1BQyBhZGRyZXNzIG9mIGRldmljZSdzIGVuZCBvZiB0aGlzCisJCQkJRXRoZXJuZXQgb3ZlciBVU0IgbGluawpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy11c2ItZ2FkZ2V0LXNlcmlhbCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdXNiLWdhZGdldC1zZXJpYWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc0ZDI0OQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdXNiLWdhZGdldC1zZXJpYWwKQEAgLTAsMCArMSw5IEBACitXaGF0OgkJL2NvbmZpZy91c2ItZ2FkZ2V0L2dhZGdldC9mdW5jdGlvbnMvZ3Nlci5uYW1lCitEYXRlOgkJSnVuIDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTEKK0Rlc2NyaXB0aW9uOgorCisJCVRoaXMgaXRlbSBjb250YWlucyBqdXN0IG9uZSByZWFkb25seSBhdHRyaWJ1dGU6IHBvcnRfbnVtLgorCQlJdCBjb250YWlucyB0aGUgcG9ydCBudW1iZXIgb2YgdGhlIC9kZXYvdHR5R1M8bj4gZGV2aWNlCisJCWFzc29jaWF0ZWQgd2l0aCBnc2VyIGZ1bmN0aW9uJ3MgaW5zdGFuY2UgIm5hbWUiLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtc291cmNlc2luayBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdXNiLWdhZGdldC1zb3VyY2VzaW5rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjN2ZmNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtc291cmNlc2luawpAQCAtMCwwICsxLDEyIEBACitXaGF0OgkJL2NvbmZpZy91c2ItZ2FkZ2V0L2dhZGdldC9mdW5jdGlvbnMvU291cmNlU2luay5uYW1lCitEYXRlOgkJTm92IDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTMKK0Rlc2NyaXB0aW9uOgorCQlUaGUgYXR0cmlidXRlczoKKworCQlwYXR0ZXJuCQktIDAgKGFsbCB6ZXJvcyksIDEgKG1vZDYzKSwgMiAobm9uZSkKKwkJaXNvY19pbnRlcnZhbAktIDEuLjE2CisJCWlzb2NfbWF4cGFja2V0CS0gMCAtIDEwMjMgKGZzKSwgMCAtIDEwMjQgKGhzL3NzKQorCQlpc29jX211bHQJLSAwLi4yIChocy9zcyBvbmx5KQorCQlpc29jX21heGJ1cnN0CS0gMC4uMTUgKHNzIG9ubHkpCisJCWJ1ZmxlbgkJLSBidWZmZXIgbGVuZ3RoCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtc3Vic2V0IGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy11c2ItZ2FkZ2V0LXN1YnNldApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzczZTJjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy11c2ItZ2FkZ2V0LXN1YnNldApAQCAtMCwwICsxLDE0IEBACitXaGF0OgkJL2NvbmZpZy91c2ItZ2FkZ2V0L2dhZGdldC9mdW5jdGlvbnMvZ2V0aC5uYW1lCitEYXRlOgkJSnVuIDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTEKK0Rlc2NyaXB0aW9uOgorCQlUaGUgYXR0cmlidXRlczoKKworCQlpZm5hbWUJCS0gbmV0d29yayBkZXZpY2UgaW50ZXJmYWNlIG5hbWUgYXNzb2NpYXRlZCB3aXRoCisJCQkJdGhpcyBmdW5jdGlvbiBpbnN0YW5jZQorCQlxbXVsdAkJLSBxdWV1ZSBsZW5ndGggbXVsdGlwbGllciBmb3IgaGlnaCBhbmQKKwkJCQlzdXBlciBzcGVlZAorCQlob3N0X2FkZHIJLSBNQUMgYWRkcmVzcyBvZiBob3N0J3MgZW5kIG9mIHRoaXMKKwkJCQlFdGhlcm5ldCBvdmVyIFVTQiBsaW5rCisJCWRldl9hZGRyCS0gTUFDIGFkZHJlc3Mgb2YgZGV2aWNlJ3MgZW5kIG9mIHRoaXMKKwkJCQlFdGhlcm5ldCBvdmVyIFVTQiBsaW5rCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtdWFjMSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdXNiLWdhZGdldC11YWMxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYTlhMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtdWFjMQpAQCAtMCwwICsxLDEyIEBACitXaGF0OgkJL2NvbmZpZy91c2ItZ2FkZ2V0L2dhZGdldC9mdW5jdGlvbnMvdWFjMS5uYW1lCitEYXRlOgkJU2VwIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTgKK0Rlc2NyaXB0aW9uOgorCQlUaGUgYXR0cmlidXRlczoKKworCQlhdWRpb19idWZfc2l6ZSAtIGF1ZGlvIGJ1ZmZlciBzaXplCisJCWZuX2NhcCAtIGNhcHR1cmUgcGNtIGRldmljZSBmaWxlIG5hbWUKKwkJZm5fY250bCAtIGNvbnRyb2wgZGV2aWNlIGZpbGUgbmFtZQorCQlmbl9wbGF5IC0gcGxheWJhY2sgcGNtIGRldmljZSBmaWxlIG5hbWUKKwkJcmVxX2J1Zl9zaXplIC0gSVNPIE9VVCBlbmRwb2ludCByZXF1ZXN0IGJ1ZmZlciBzaXplCisJCXJlcV9jb3VudCAtIElTTyBPVVQgZW5kcG9pbnQgcmVxdWVzdCBjb3VudApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy11c2ItZ2FkZ2V0LXVhYzIgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtdWFjMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmZkZDRlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy11c2ItZ2FkZ2V0LXVhYzIKQEAgLTAsMCArMSwxMiBAQAorV2hhdDoJCS9jb25maWcvdXNiLWdhZGdldC9nYWRnZXQvZnVuY3Rpb25zL3VhYzIubmFtZQorRGF0ZToJCVNlcCAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE4CitEZXNjcmlwdGlvbjoKKwkJVGhlIGF0dHJpYnV0ZXM6CisKKwkJY19jaG1hc2sgLSBjYXB0dXJlIGNoYW5uZWwgbWFzaworCQljX3NyYXRlIC0gY2FwdHVyZSBzYW1wbGluZyByYXRlCisJCWNfc3NpemUgLSBjYXB0dXJlIHNhbXBsZSBzaXplIChieXRlcykKKwkJcF9jaG1hc2sgLSBwbGF5YmFjayBjaGFubmVsIG1hc2sKKwkJcF9zcmF0ZSAtIHBsYXliYWNrIHNhbXBsaW5nIHJhdGUKKwkJcF9zc2l6ZSAtIHBsYXliYWNrIHNhbXBsZSBzaXplIChieXRlcykKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdXNiLWdhZGdldC11dmMgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtdXZjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmNGEwMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2NvbmZpZ2ZzLXVzYi1nYWRnZXQtdXZjCkBAIC0wLDAgKzEsMjY1IEBACitXaGF0OgkJL2NvbmZpZy91c2ItZ2FkZ2V0L2dhZGdldC9mdW5jdGlvbnMvdXZjLm5hbWUKK0RhdGU6CQlEZWMgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4yMAorRGVzY3JpcHRpb246CVVWQyBmdW5jdGlvbiBkaXJlY3RvcnkKKworCQlzdHJlYW1pbmdfbWF4YnVyc3QJLSAwLi4xNSAoc3Mgb25seSkKKwkJc3RyZWFtaW5nX21heHBhY2tldAktIDEuLjEwMjMgKGZzKSwgMS4uMzA3MiAoaHMvc3MpCisJCXN0cmVhbWluZ19pbnRlcnZhbAktIDEuLjE2CisKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2Z1bmN0aW9ucy91dmMubmFtZS9jb250cm9sCitEYXRlOgkJRGVjIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMjAKK0Rlc2NyaXB0aW9uOglDb250cm9sIGRlc2NyaXB0b3JzCisKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2Z1bmN0aW9ucy91dmMubmFtZS9jb250cm9sL2NsYXNzCitEYXRlOgkJRGVjIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMjAKK0Rlc2NyaXB0aW9uOglDbGFzcyBkZXNjcmlwdG9ycworCitXaGF0OgkJL2NvbmZpZy91c2ItZ2FkZ2V0L2dhZGdldC9mdW5jdGlvbnMvdXZjLm5hbWUvY29udHJvbC9jbGFzcy9zcworRGF0ZToJCURlYyAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjIwCitEZXNjcmlwdGlvbjoJU3VwZXIgc3BlZWQgY29udHJvbCBjbGFzcyBkZXNjcmlwdG9ycworCitXaGF0OgkJL2NvbmZpZy91c2ItZ2FkZ2V0L2dhZGdldC9mdW5jdGlvbnMvdXZjLm5hbWUvY29udHJvbC9jbGFzcy9mcworRGF0ZToJCURlYyAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjIwCitEZXNjcmlwdGlvbjoJRnVsbCBzcGVlZCBjb250cm9sIGNsYXNzIGRlc2NyaXB0b3JzCisKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2Z1bmN0aW9ucy91dmMubmFtZS9jb250cm9sL3Rlcm1pbmFsCitEYXRlOgkJRGVjIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMjAKK0Rlc2NyaXB0aW9uOglUZXJtaW5hbCBkZXNjcmlwdG9ycworCitXaGF0OgkJL2NvbmZpZy91c2ItZ2FkZ2V0L2dhZGdldC9mdW5jdGlvbnMvdXZjLm5hbWUvY29udHJvbC90ZXJtaW5hbC9vdXRwdXQKK0RhdGU6CQlEZWMgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4yMAorRGVzY3JpcHRpb246CU91dHB1dCB0ZXJtaW5hbCBkZXNjcmlwdG9ycworCitXaGF0OgkJL2NvbmZpZy91c2ItZ2FkZ2V0L2dhZGdldC9mdW5jdGlvbnMvdXZjLm5hbWUvY29udHJvbC90ZXJtaW5hbC9vdXRwdXQvZGVmYXVsdAorRGF0ZToJCURlYyAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjIwCitEZXNjcmlwdGlvbjoJRGVmYXVsdCBvdXRwdXQgdGVybWluYWwgZGVzY3JpcHRvcnMKKworCQlBbGwgYXR0cmlidXRlcyByZWFkIG9ubHk6CisJCWlUZXJtaW5hbAktIGluZGV4IG9mIHN0cmluZyBkZXNjcmlwdG9yCisJCWJTb3VyY2VJRCAJLSBpZCBvZiB0aGUgdGVybWluYWwgdG8gd2hpY2ggdGhpcyB0ZXJtaW5hbAorCQkJCWlzIGNvbm5lY3RlZAorCQliQXNzb2NUZXJtaW5hbAktIGlkIG9mIHRoZSBpbnB1dCB0ZXJtaW5hbCB0byB3aGljaCB0aGlzIG91dHB1dAorCQkJCXRlcm1pbmFsIGlzIGFzc29jaWF0ZWQKKwkJd1Rlcm1pbmFsVHlwZQktIHRlcm1pbmFsIHR5cGUKKwkJYlRlcm1pbmFsSUQJLSBhIG5vbi16ZXJvIGlkIG9mIHRoaXMgdGVybWluYWwKKworV2hhdDoJCS9jb25maWcvdXNiLWdhZGdldC9nYWRnZXQvZnVuY3Rpb25zL3V2Yy5uYW1lL2NvbnRyb2wvdGVybWluYWwvY2FtZXJhCitEYXRlOgkJRGVjIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMjAKK0Rlc2NyaXB0aW9uOglDYW1lcmEgdGVybWluYWwgZGVzY3JpcHRvcnMKKworV2hhdDoJCS9jb25maWcvdXNiLWdhZGdldC9nYWRnZXQvZnVuY3Rpb25zL3V2Yy5uYW1lL2NvbnRyb2wvdGVybWluYWwvY2FtZXJhL2RlZmF1bHQKK0RhdGU6CQlEZWMgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4yMAorRGVzY3JpcHRpb246CURlZmF1bHQgY2FtZXJhIHRlcm1pbmFsIGRlc2NyaXB0b3JzCisKKwkJQWxsIGF0dHJpYnV0ZXMgcmVhZCBvbmx5OgorCQlibUNvbnRyb2xzCQktIGJpdG1hcCBzcGVjaWZ5aW5nIHdoaWNoIGNvbnRyb2xzIGFyZQorCQkJCQlzdXBwb3J0ZWQgZm9yIHRoZSB2aWRlbyBzdHJlYW0KKwkJd09jdWxhckZvY2FsTGVuZ3RoCS0gdGhlIHZhbHVlIG9mIExvY3VsYXIKKwkJd09iamVjdGl2ZUZvY2FsTGVuZ3RoTWF4LSB0aGUgdmFsdWUgb2YgTG1pbgorCQl3T2JqZWN0aXZlRm9jYWxMZW5ndGhNaW4tIHRoZSB2YWx1ZSBvZiBMbWF4CisJCWlUZXJtaW5hbAkJLSBpbmRleCBvZiBzdHJpbmcgZGVzY3JpcHRvcgorCQliQXNzb2NUZXJtaW5hbAkJLSBpZCBvZiB0aGUgb3V0cHV0IHRlcm1pbmFsIHRvIHdoaWNoCisJCQkJCXRoaXMgdGVybWluYWwgaXMgY29ubmVjdGVkCisJCXdUZXJtaW5hbFR5cGUJCS0gdGVybWluYWwgdHlwZQorCQliVGVybWluYWxJRAkJLSBhIG5vbi16ZXJvIGlkIG9mIHRoaXMgdGVybWluYWwKKworV2hhdDoJCS9jb25maWcvdXNiLWdhZGdldC9nYWRnZXQvZnVuY3Rpb25zL3V2Yy5uYW1lL2NvbnRyb2wvcHJvY2Vzc2luZworRGF0ZToJCURlYyAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjIwCitEZXNjcmlwdGlvbjoJUHJvY2Vzc2luZyB1bml0IGRlc2NyaXB0b3JzCisKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2Z1bmN0aW9ucy91dmMubmFtZS9jb250cm9sL3Byb2Nlc3NpbmcvZGVmYXVsdAorRGF0ZToJCURlYyAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjIwCitEZXNjcmlwdGlvbjoJRGVmYXVsdCBwcm9jZXNzaW5nIHVuaXQgZGVzY3JpcHRvcnMKKworCQlBbGwgYXR0cmlidXRlcyByZWFkIG9ubHk6CisJCWlQcm9jZXNzaW5nCS0gaW5kZXggb2Ygc3RyaW5nIGRlc2NyaXB0b3IKKwkJYm1Db250cm9scwktIGJpdG1hcCBzcGVjaWZ5aW5nIHdoaWNoIGNvbnRyb2xzIGFyZQorCQkJCXN1cHBvcnRlZCBmb3IgdGhlIHZpZGVvIHN0cmVhbQorCQl3TWF4TXVsdGlwbGllcgktIG1heGltdW0gZGlnaXRhbCBtYWduaWZpY2F0aW9uIHgxMDAKKwkJYlNvdXJjZUlECS0gaWQgb2YgdGhlIHRlcm1pbmFsIHRvIHdoaWNoIHRoaXMgdW5pdCBpcworCQkJCWNvbm5lY3RlZAorCQliVW5pdElECQktIGEgbm9uLXplcm8gaWQgb2YgdGhpcyB1bml0CisKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2Z1bmN0aW9ucy91dmMubmFtZS9jb250cm9sL2hlYWRlcgorRGF0ZToJCURlYyAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjIwCitEZXNjcmlwdGlvbjoJQ29udHJvbCBoZWFkZXIgZGVzY3JpcHRvcnMKKworV2hhdDoJCS9jb25maWcvdXNiLWdhZGdldC9nYWRnZXQvZnVuY3Rpb25zL3V2Yy5uYW1lL2NvbnRyb2wvaGVhZGVyL25hbWUKK0RhdGU6CQlEZWMgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4yMAorRGVzY3JpcHRpb246CVNwZWNpZmljIGNvbnRyb2wgaGVhZGVyIGRlc2NyaXB0b3JzCisKK2R3Q2xvY2tGcmVxdWVuY3kKK2JjZFVWQworV2hhdDoJCS9jb25maWcvdXNiLWdhZGdldC9nYWRnZXQvZnVuY3Rpb25zL3V2Yy5uYW1lL3N0cmVhbWluZworRGF0ZToJCURlYyAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjIwCitEZXNjcmlwdGlvbjoJU3RyZWFtaW5nIGRlc2NyaXB0b3JzCisKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2Z1bmN0aW9ucy91dmMubmFtZS9zdHJlYW1pbmcvY2xhc3MKK0RhdGU6CQlEZWMgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4yMAorRGVzY3JpcHRpb246CVN0cmVhbWluZyBjbGFzcyBkZXNjcmlwdG9ycworCitXaGF0OgkJL2NvbmZpZy91c2ItZ2FkZ2V0L2dhZGdldC9mdW5jdGlvbnMvdXZjLm5hbWUvc3RyZWFtaW5nL2NsYXNzL3NzCitEYXRlOgkJRGVjIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMjAKK0Rlc2NyaXB0aW9uOglTdXBlciBzcGVlZCBzdHJlYW1pbmcgY2xhc3MgZGVzY3JpcHRvcnMKKworV2hhdDoJCS9jb25maWcvdXNiLWdhZGdldC9nYWRnZXQvZnVuY3Rpb25zL3V2Yy5uYW1lL3N0cmVhbWluZy9jbGFzcy9ocworRGF0ZToJCURlYyAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjIwCitEZXNjcmlwdGlvbjoJSGlnaCBzcGVlZCBzdHJlYW1pbmcgY2xhc3MgZGVzY3JpcHRvcnMKKworV2hhdDoJCS9jb25maWcvdXNiLWdhZGdldC9nYWRnZXQvZnVuY3Rpb25zL3V2Yy5uYW1lL3N0cmVhbWluZy9jbGFzcy9mcworRGF0ZToJCURlYyAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjIwCitEZXNjcmlwdGlvbjoJRnVsbCBzcGVlZCBzdHJlYW1pbmcgY2xhc3MgZGVzY3JpcHRvcnMKKworV2hhdDoJCS9jb25maWcvdXNiLWdhZGdldC9nYWRnZXQvZnVuY3Rpb25zL3V2Yy5uYW1lL3N0cmVhbWluZy9jb2xvcl9tYXRjaGluZworRGF0ZToJCURlYyAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjIwCitEZXNjcmlwdGlvbjoJQ29sb3IgbWF0Y2hpbmcgZGVzY3JpcHRvcnMKKworV2hhdDoJCS9jb25maWcvdXNiLWdhZGdldC9nYWRnZXQvZnVuY3Rpb25zL3V2Yy5uYW1lL3N0cmVhbWluZy9jb2xvcl9tYXRjaGluZy9kZWZhdWx0CitEYXRlOgkJRGVjIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMjAKK0Rlc2NyaXB0aW9uOglEZWZhdWx0IGNvbG9yIG1hdGNoaW5nIGRlc2NyaXB0b3JzCisKKwkJQWxsIGF0dHJpYnV0ZXMgcmVhZCBvbmx5OgorCQliTWF0cml4Q29lZmZpY2llbnRzCS0gbWF0cml4IHVzZWQgdG8gY29tcHV0ZSBsdW1hIGFuZAorCQkJCQljaHJvbWEgdmFsdWVzIGZyb20gdGhlIGNvbG9yIHByaW1hcmllcworCQliVHJhbnNmZXJDaGFyYWN0ZXJpc3RpY3MtIG9wdG9lbGVjdHJvbmljIHRyYW5zZmVyCisJCQkJCWNoYXJhY3RlcmlzdGljIG9mIHRoZSBzb3VyY2UgcGljdXRyZSwKKwkJCQkJYWxzbyBjYWxsZWQgdGhlIGdhbW1hIGZ1bmN0aW9uCisJCWJDb2xvclByaW1hcmllcwkJLSBjb2xvciBwcmltYXJpZXMgYW5kIHRoZSByZWZlcmVuY2UKKwkJCQkJd2hpdGUKKworV2hhdDoJCS9jb25maWcvdXNiLWdhZGdldC9nYWRnZXQvZnVuY3Rpb25zL3V2Yy5uYW1lL3N0cmVhbWluZy9tanBlZworRGF0ZToJCURlYyAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjIwCitEZXNjcmlwdGlvbjoJTUpQRUcgZm9ybWF0IGRlc2NyaXB0b3JzCisKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2Z1bmN0aW9ucy91dmMubmFtZS9zdHJlYW1pbmcvbWpwZWcvbmFtZQorRGF0ZToJCURlYyAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjIwCitEZXNjcmlwdGlvbjoJU3BlY2lmaWMgTUpQRUcgZm9ybWF0IGRlc2NyaXB0b3JzCisKKwkJQWxsIGF0dHJpYnV0ZXMgcmVhZCBvbmx5LAorCQlleGNlcHQgYm1hQ29udHJvbHMgYW5kIGJEZWZhdWx0RnJhbWVJbmRleDoKKwkJYm1hQ29udHJvbHMJCS0gdGhpcyBmb3JtYXQncyBkYXRhIGZvciBibWFDb250cm9scyBpbgorCQkJCQl0aGUgc3RyZWFtaW5nIGhlYWRlcgorCQlibUludGVyZmFjZUZsYWdzCS0gc3BlY2lmaWVzIGludGVybGFjZSBpbmZvcm1hdGlvbiwKKwkJCQkJcmVhZC1vbmx5CisJCWJBc3BlY3RSYXRpb1kJCS0gdGhlIFggZGltZW5zaW9uIG9mIHRoZSBwaWN0dXJlIGFzcGVjdAorCQkJCQlyYXRpbywgcmVhZC1vbmx5CisJCWJBc3BlY3RSYXRpb1gJCS0gdGhlIFkgZGltZW5zaW9uIG9mIHRoZSBwaWN0dXJlIGFzcGVjdAorCQkJCQlyYXRpbywgcmVhZC1vbmx5CisJCWJtRmxhZ3MJCQktIGNoYXJhY3RlcmlzdGljcyBvZiB0aGlzIGZvcm1hdCwKKwkJCQkJcmVhZC1vbmx5CisJCWJEZWZhdWx0RnJhbWVJbmRleAktIG9wdGltdW0gZnJhbWUgaW5kZXggZm9yIHRoaXMgc3RyZWFtCisKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2Z1bmN0aW9ucy91dmMubmFtZS9zdHJlYW1pbmcvbWpwZWcvbmFtZS9uYW1lCitEYXRlOgkJRGVjIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMjAKK0Rlc2NyaXB0aW9uOglTcGVjaWZpYyBNSlBFRyBmcmFtZSBkZXNjcmlwdG9ycworCisJCWR3RnJhbWVJbnRlcnZhbAkJLSBpbmRpY2F0ZXMgaG93IGZyYW1lIGludGVydmFsIGNhbiBiZQorCQkJCQlwcm9ncmFtbWVkOyBhIG51bWJlciBvZiB2YWx1ZXMKKwkJCQkJc2VwYXJhdGVkIGJ5IG5ld2xpbmUgY2FuIGJlIHNwZWNpZmllZAorCQlkd0RlZmF1bHRGcmFtZUludGVydmFsCS0gdGhlIGZyYW1lIGludGVydmFsIHRoZSBkZXZpY2Ugd291bGQKKwkJCQkJbGlrZSB0byB1c2UgYXMgZGVmYXVsdAorCQlkd01heFZpZGVvRnJhbWVCdWZmZXJTaXplLSB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdGhlCisJCQkJCWNvbXByZXNzb3Igd2lsbCBwcm9kdWNlIGZvciBhIHZpZGVvCisJCQkJCWZyYW1lIG9yIHN0aWxsIGltYWdlCisJCWR3TWF4Qml0UmF0ZQkJLSB0aGUgbWF4aW11bSBiaXQgcmF0ZSBhdCB0aGUgc2hvcnRlc3QKKwkJCQkJZnJhbWUgaW50ZXJ2YWwgaW4gYnBzCisJCWR3TWluQml0UmF0ZQkJLSB0aGUgbWluaW11bSBiaXQgcmF0ZSBhdCB0aGUgbG9uZ2VzdAorCQkJCQlmcmFtZSBpbnRlcnZhbCBpbiBicHMKKwkJd0hlaWdodAkJCS0gaGVpZ2h0IG9mIGRlY29kZWQgYml0bWFwIGZyYW1lIGluIHB4CisJCXdXaWR0aAkJCS0gd2lkdGggb2YgZGVjb2RlZCBiaXRtYW0gZnJhbWUgaW4gcHgKKwkJYm1DYXBhYmlsaXRpZXMJCS0gc3RpbGwgaW1hZ2Ugc3VwcG9ydCwgZml4ZWQgZnJhbWUtcmF0ZQorCQkJCQlzdXBwb3J0CisKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2Z1bmN0aW9ucy91dmMubmFtZS9zdHJlYW1pbmcvdW5jb21wcmVzc2VkCitEYXRlOgkJRGVjIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMjAKK0Rlc2NyaXB0aW9uOglVbmNvbXByZXNzZWQgZm9ybWF0IGRlc2NyaXB0b3JzCisKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2Z1bmN0aW9ucy91dmMubmFtZS9zdHJlYW1pbmcvdW5jb21wcmVzc2VkL25hbWUKK0RhdGU6CQlEZWMgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4yMAorRGVzY3JpcHRpb246CVNwZWNpZmljIHVuY29tcHJlc3NlZCBmb3JtYXQgZGVzY3JpcHRvcnMKKworCQlibWFDb250cm9scwkJLSB0aGlzIGZvcm1hdCdzIGRhdGEgZm9yIGJtYUNvbnRyb2xzIGluCisJCQkJCXRoZSBzdHJlYW1pbmcgaGVhZGVyCisJCWJtSW50ZXJmYWNlRmxhZ3MJLSBzcGVjaWZpZXMgaW50ZXJsYWNlIGluZm9ybWF0aW9uLAorCQkJCQlyZWFkLW9ubHkKKwkJYkFzcGVjdFJhdGlvWQkJLSB0aGUgWCBkaW1lbnNpb24gb2YgdGhlIHBpY3R1cmUgYXNwZWN0CisJCQkJCXJhdGlvLCByZWFkLW9ubHkKKwkJYkFzcGVjdFJhdGlvWAkJLSB0aGUgWSBkaW1lbnNpb24gb2YgdGhlIHBpY3R1cmUgYXNwZWN0CisJCQkJCXJhdGlvLCByZWFkLW9ubHkKKwkJYkRlZmF1bHRGcmFtZUluZGV4CS0gb3B0aW11bSBmcmFtZSBpbmRleCBmb3IgdGhpcyBzdHJlYW0KKwkJYkJpdHNQZXJQaXhlbAkJLSBudW1iZXIgb2YgYml0cyBwZXIgcGl4ZWwgdXNlZCB0bworCQkJCQlzcGVjaWZ5IGNvbG9yIGluIHRoZSBkZWNvZGVkIHZpZGVvCisJCQkJCWZyYW1lCisJCWd1aWRGb3JtYXQJCS0gZ2xvYmFsbHkgdW5pcXVlIGlkIHVzZWQgdG8gaWRlbnRpZnkKKwkJCQkJc3RyZWFtLWVuY29kaW5nIGZvcm1hdAorCitXaGF0OgkJL2NvbmZpZy91c2ItZ2FkZ2V0L2dhZGdldC9mdW5jdGlvbnMvdXZjLm5hbWUvc3RyZWFtaW5nL3VuY29tcHJlc3NlZC9uYW1lL25hbWUKK0RhdGU6CQlEZWMgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4yMAorRGVzY3JpcHRpb246CVNwZWNpZmljIHVuY29tcHJlc3NlZCBmcmFtZSBkZXNjcmlwdG9ycworCisJCWR3RnJhbWVJbnRlcnZhbAkJLSBpbmRpY2F0ZXMgaG93IGZyYW1lIGludGVydmFsIGNhbiBiZQorCQkJCQlwcm9ncmFtbWVkOyBhIG51bWJlciBvZiB2YWx1ZXMKKwkJCQkJc2VwYXJhdGVkIGJ5IG5ld2xpbmUgY2FuIGJlIHNwZWNpZmllZAorCQlkd0RlZmF1bHRGcmFtZUludGVydmFsCS0gdGhlIGZyYW1lIGludGVydmFsIHRoZSBkZXZpY2Ugd291bGQKKwkJCQkJbGlrZSB0byB1c2UgYXMgZGVmYXVsdAorCQlkd01heFZpZGVvRnJhbWVCdWZmZXJTaXplLSB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdGhlCisJCQkJCWNvbXByZXNzb3Igd2lsbCBwcm9kdWNlIGZvciBhIHZpZGVvCisJCQkJCWZyYW1lIG9yIHN0aWxsIGltYWdlCisJCWR3TWF4Qml0UmF0ZQkJLSB0aGUgbWF4aW11bSBiaXQgcmF0ZSBhdCB0aGUgc2hvcnRlc3QKKwkJCQkJZnJhbWUgaW50ZXJ2YWwgaW4gYnBzCisJCWR3TWluQml0UmF0ZQkJLSB0aGUgbWluaW11bSBiaXQgcmF0ZSBhdCB0aGUgbG9uZ2VzdAorCQkJCQlmcmFtZSBpbnRlcnZhbCBpbiBicHMKKwkJd0hlaWdodAkJCS0gaGVpZ2h0IG9mIGRlY29kZWQgYml0bWFwIGZyYW1lIGluIHB4CisJCXdXaWR0aAkJCS0gd2lkdGggb2YgZGVjb2RlZCBiaXRtYW0gZnJhbWUgaW4gcHgKKwkJYm1DYXBhYmlsaXRpZXMJCS0gc3RpbGwgaW1hZ2Ugc3VwcG9ydCwgZml4ZWQgZnJhbWUtcmF0ZQorCQkJCQlzdXBwb3J0CisKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2Z1bmN0aW9ucy91dmMubmFtZS9zdHJlYW1pbmcvaGVhZGVyCitEYXRlOgkJRGVjIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMjAKK0Rlc2NyaXB0aW9uOglTdHJlYW1pbmcgaGVhZGVyIGRlc2NyaXB0b3JzCisKK1doYXQ6CQkvY29uZmlnL3VzYi1nYWRnZXQvZ2FkZ2V0L2Z1bmN0aW9ucy91dmMubmFtZS9zdHJlYW1pbmcvaGVhZGVyL25hbWUKK0RhdGU6CQlEZWMgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4yMAorRGVzY3JpcHRpb246CVNwZWNpZmljIHN0cmVhbWluZyBoZWFkZXIgZGVzY3JpcHRvcnMKKworCQlBbGwgYXR0cmlidXRlcyByZWFkIG9ubHk6CisJCWJUcmlnZ2VyVXNhZ2UJCS0gaG93IHRoZSBob3N0IHNvZnR3YXJlIHdpbGwgcmVzcG9uZCB0bworCQkJCQlhIGhhcmR3YXJlIHRyaWdnZXIgaW50ZXJydXB0IGV2ZW50CisJCWJUcmlnZ2VyU3VwcG9ydAkJLSBmbGFnIHNwZWNpZnlpbmcgaWYgaGFyZHdhcmUKKwkJCQkJdHJpZ2dlcmluZyBpcyBzdXBwb3J0ZWQKKwkJYlN0aWxsQ2FwdHVyZU1ldGhvZAktIG1ldGhvZCBvZiBzdGlsbCBpbWFnZSBjYXB1dHJlCisJCQkJCXN1cHBvcnRlZAorCQliVGVybWluYWxMaW5rCQktIGlkIG9mIHRoZSBvdXRwdXQgdGVybWluYWwgdG8gd2hpY2gKKwkJCQkJdGhlIHZpZGVvIGVuZHBvaW50IG9mIHRoaXMgaW50ZXJmYWNlCisJCQkJCWlzIGNvbm5lY3RlZAorCQlibUluZm8JCQktIGNhcGFiaWxpdGllcyBvZiB0aGlzIHZpZGVvIHN0cmVhbWluZworCQkJCQlpbnRlcmZhY2UKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvZGVidWdmcy1kcml2ZXItZ2Vud3FlIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9kZWJ1Z2ZzLWRyaXZlci1nZW53cWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWMyZjI1NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvZGVidWdmcy1kcml2ZXItZ2Vud3FlCkBAIC0wLDAgKzEsOTEgQEAKK1doYXQ6ICAgICAgICAgICAvc3lzL2tlcm5lbC9kZWJ1Zy9nZW53cWUvZ2Vud3FlPG4+X2NhcmQvZGRjYl9pbmZvCitEYXRlOiAgICAgICAgICAgT2N0IDIwMTMKK0NvbnRhY3Q6ICAgICAgICBoYXZlckBsaW51eC52bmV0LmlibS5jb20KK0Rlc2NyaXB0aW9uOiAgICBERENCIHF1ZXVlIGR1bXAgdXNlZCBmb3IgZGVidWdnaW5nIHF1ZXVlaW5nIHByb2JsZW1zLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9rZXJuZWwvZGVidWcvZ2Vud3FlL2dlbndxZTxuPl9jYXJkL2N1cnJfcmVncworRGF0ZTogICAgICAgICAgIE9jdCAyMDEzCitDb250YWN0OiAgICAgICAgaGF2ZXJAbGludXgudm5ldC5pYm0uY29tCitEZXNjcmlwdGlvbjogICAgRHVtcCBvZiB0aGUgY3VycmVudCBlcnJvciByZWdpc3RlcnMuCisgICAgICAgICAgICAgICAgT25seSBhdmFpbGFibGUgZm9yIFBGLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9rZXJuZWwvZGVidWcvZ2Vud3FlL2dlbndxZTxuPl9jYXJkL2N1cnJfZGJnX3VpZDAKK0RhdGU6ICAgICAgICAgICBPY3QgMjAxMworQ29udGFjdDogICAgICAgIGhhdmVyQGxpbnV4LnZuZXQuaWJtLmNvbQorRGVzY3JpcHRpb246ICAgIEludGVybmFsIGNoaXAgc3RhdGUgb2YgVUlEMCAodW5pdCBpZCAwKS4KKyAgICAgICAgICAgICAgICBPbmx5IGF2YWlsYWJsZSBmb3IgUEYuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2tlcm5lbC9kZWJ1Zy9nZW53cWUvZ2Vud3FlPG4+X2NhcmQvY3Vycl9kYmdfdWlkMQorRGF0ZTogICAgICAgICAgIE9jdCAyMDEzCitDb250YWN0OiAgICAgICAgaGF2ZXJAbGludXgudm5ldC5pYm0uY29tCitEZXNjcmlwdGlvbjogICAgSW50ZXJuYWwgY2hpcCBzdGF0ZSBvZiBVSUQxLgorICAgICAgICAgICAgICAgIE9ubHkgYXZhaWxhYmxlIGZvciBQRi4KKworV2hhdDogICAgICAgICAgIC9zeXMva2VybmVsL2RlYnVnL2dlbndxZS9nZW53cWU8bj5fY2FyZC9jdXJyX2RiZ191aWQyCitEYXRlOiAgICAgICAgICAgT2N0IDIwMTMKK0NvbnRhY3Q6ICAgICAgICBoYXZlckBsaW51eC52bmV0LmlibS5jb20KK0Rlc2NyaXB0aW9uOiAgICBJbnRlcm5hbCBjaGlwIHN0YXRlIG9mIFVJRDIuCisgICAgICAgICAgICAgICAgT25seSBhdmFpbGFibGUgZm9yIFBGLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9rZXJuZWwvZGVidWcvZ2Vud3FlL2dlbndxZTxuPl9jYXJkL3ByZXZfcmVncworRGF0ZTogICAgICAgICAgIE9jdCAyMDEzCitDb250YWN0OiAgICAgICAgaGF2ZXJAbGludXgudm5ldC5pYm0uY29tCitEZXNjcmlwdGlvbjogICAgRHVtcCBvZiB0aGUgZXJyb3IgcmVnaXN0ZXJzIGJlZm9yZSB0aGUgbGFzdCByZXNldCBvZgorICAgICAgICAgICAgICAgIHRoZSBjYXJkIG9jY3VyZWQuCisgICAgICAgICAgICAgICAgT25seSBhdmFpbGFibGUgZm9yIFBGLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9rZXJuZWwvZGVidWcvZ2Vud3FlL2dlbndxZTxuPl9jYXJkL3ByZXZfZGJnX3VpZDAKK0RhdGU6ICAgICAgICAgICBPY3QgMjAxMworQ29udGFjdDogICAgICAgIGhhdmVyQGxpbnV4LnZuZXQuaWJtLmNvbQorRGVzY3JpcHRpb246ICAgIEludGVybmFsIGNoaXAgc3RhdGUgb2YgVUlEMCBiZWZvcmUgY2FyZCB3YXMgcmVzZXQuCisgICAgICAgICAgICAgICAgT25seSBhdmFpbGFibGUgZm9yIFBGLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9rZXJuZWwvZGVidWcvZ2Vud3FlL2dlbndxZTxuPl9jYXJkL3ByZXZfZGJnX3VpZDEKK0RhdGU6ICAgICAgICAgICBPY3QgMjAxMworQ29udGFjdDogICAgICAgIGhhdmVyQGxpbnV4LnZuZXQuaWJtLmNvbQorRGVzY3JpcHRpb246ICAgIEludGVybmFsIGNoaXAgc3RhdGUgb2YgVUlEMSBiZWZvcmUgY2FyZCB3YXMgcmVzZXQuCisgICAgICAgICAgICAgICAgT25seSBhdmFpbGFibGUgZm9yIFBGLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9rZXJuZWwvZGVidWcvZ2Vud3FlL2dlbndxZTxuPl9jYXJkL3ByZXZfZGJnX3VpZDIKK0RhdGU6ICAgICAgICAgICBPY3QgMjAxMworQ29udGFjdDogICAgICAgIGhhdmVyQGxpbnV4LnZuZXQuaWJtLmNvbQorRGVzY3JpcHRpb246ICAgIEludGVybmFsIGNoaXAgc3RhdGUgb2YgVUlEMiBiZWZvcmUgY2FyZCB3YXMgcmVzZXQuCisgICAgICAgICAgICAgICAgT25seSBhdmFpbGFibGUgZm9yIFBGLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9rZXJuZWwvZGVidWcvZ2Vud3FlL2dlbndxZTxuPl9jYXJkL2luZm8KK0RhdGU6ICAgICAgICAgICBPY3QgMjAxMworQ29udGFjdDogICAgICAgIGhhdmVyQGxpbnV4LnZuZXQuaWJtLmNvbQorRGVzY3JpcHRpb246ICAgIENvbXByZWhlbnNpdmUgc3VtbWFyeSBvZiBiaXRzdHJlYW0gdmVyc2lvbiBhbmQgc29mdHdhcmUKKyAgICAgICAgICAgICAgICB2ZXJzaW9uLiBVc2VkIGJpdHN0cmVhbSBhbmQgYml0c3RyZWFtIGNsb2NraW5nIGluZm9ybWF0aW9uLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9rZXJuZWwvZGVidWcvZ2Vud3FlL2dlbndxZTxuPl9jYXJkL2Vycl9pbmplY3QKK0RhdGU6ICAgICAgICAgICBPY3QgMjAxMworQ29udGFjdDogICAgICAgIGhhdmVyQGxpbnV4LnZuZXQuaWJtLmNvbQorRGVzY3JpcHRpb246ICAgIFBvc3NpYmlsaXR5IHRvIGluamVjdCBlcnJvciBjYXNlcyB0byBlbnN1cmUgdGhhdCB0aGUgZHJpdmVycworICAgICAgICAgICAgICAgIGVycm9yIGhhbmRsaW5nIGNvZGUgd29ya3Mgd2VsbC4KKworV2hhdDogICAgICAgICAgIC9zeXMva2VybmVsL2RlYnVnL2dlbndxZS9nZW53cWU8bj5fY2FyZC92ZjwwLi4xND5fam9idGltZW91dF9tc2VjCitEYXRlOiAgICAgICAgICAgT2N0IDIwMTMKK0NvbnRhY3Q6ICAgICAgICBoYXZlckBsaW51eC52bmV0LmlibS5jb20KK0Rlc2NyaXB0aW9uOiAgICBEZWZhdWx0IFZGIHRpbWVvdXQgMjUwbXMuIFRlc3RpbmcgbWlnaHQgcmVxdWlyZSAxMDAwbXMuCisgICAgICAgICAgICAgICAgVXNpbmcgMCB3aWxsIHVzZSB0aGUgY2FyZHMgZGVmYXVsdCB2YWx1ZSAod2hhdGV2ZXIgdGhhdCBpcykuCisKKyAgICAgICAgICAgICAgICBUaGUgdGltZW91dCBkZXBlbmRzIG9uIHRoZSBtYXggbnVtYmVyIG9mIGF2YWlsYWJsZSBjYXJkcworICAgICAgICAgICAgICAgIGluIHRoZSBzeXN0ZW0gYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgcXVldWUgc2l6ZS4KKworICAgICAgICAgICAgICAgIFRoZSBkcml2ZXIgZW5zdXJlcyB0aGF0IHRoZSBzZXR0aW5ncyBhcmUgZG9uZSBqdXN0IGJlZm9yZQorICAgICAgICAgICAgICAgIHRoZSBWRnMgZ2V0IGVuYWJsZWQuIENoYW5naW5nIHRoZSB0aW1lb3V0cyBpbiBmbGlnaHQgaXMgbm90CisgICAgICAgICAgICAgICAgcG9zc2libGUuCisgICAgICAgICAgICAgICAgT25seSBhdmFpbGFibGUgZm9yIFBGLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9rZXJuZWwvZGVidWcvZ2Vud3FlL2dlbndxZTxuPl9jYXJkL2pvYnRpbWVyCitEYXRlOiAgICAgICAgICAgT2N0IDIwMTMKK0NvbnRhY3Q6ICAgICAgICBoYXZlckBsaW51eC52bmV0LmlibS5jb20KK0Rlc2NyaXB0aW9uOiAgICBEdW1wIGpvYiB0aW1lb3V0IHJlZ2lzdGVyIHZhbHVlcyBmb3IgUEYgYW5kIFZGcy4KKyAgICAgICAgICAgICAgICBPbmx5IGF2YWlsYWJsZSBmb3IgUEYuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2tlcm5lbC9kZWJ1Zy9nZW53cWUvZ2Vud3FlPG4+X2NhcmQvcXVldWVfd29ya2luZ190aW1lCitEYXRlOiAgICAgICAgICAgRGVjIDIwMTMKK0NvbnRhY3Q6ICAgICAgICBoYXZlckBsaW51eC52bmV0LmlibS5jb20KK0Rlc2NyaXB0aW9uOiAgICBEdW1wIHF1ZXVlIHdvcmtpbmcgdGltZSByZWdpc3RlciB2YWx1ZXMgZm9yIFBGIGFuZCBWRnMuCisgICAgICAgICAgICAgICAgT25seSBhdmFpbGFibGUgZm9yIFBGLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9kZWJ1Z2ZzLWVjIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9kZWJ1Z2ZzLWVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1NDYxMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2RlYnVnZnMtZWMKQEAgLTAsMCArMSwyMCBAQAorV2hhdDoJCS9zeXMva2VybmVsL2RlYnVnL2VjLyove2dwZSx1c2VfZ2xvYmFsX2xvY2ssaW99CitEYXRlOgkJSnVseSAyMDEwCitDb250YWN0OglUaG9tYXMgUmVubmluZ2VyIDx0cmVubkBzdXNlLmRlPgorRGVzY3JpcHRpb246CisKK0dlbmVyYWwgaW5mb3JtYXRpb24gbGlrZSB3aGljaCBHUEUgaXMgYXNzaWduZWQgdG8gdGhlIEVDIGFuZCB3aGV0aGVyCit0aGUgZ2xvYmFsIGxvY2sgc2hvdWxkIGdldCB1c2VkLgorS25vd2luZyB0aGUgRUMgR1BFIG9uZSBjYW4gd2F0Y2ggdGhlIGFtb3VudCBvZiBIVyBldmVudHMgcmVsYXRlZCB0bwordGhlIEVDIGhlcmUgKFhZIC0+IEdQRSBudW1iZXIgZnJvbSAvc3lzL2tlcm5lbC9kZWJ1Zy9lYy8qL2dwZSk6Cisvc3lzL2Zpcm13YXJlL2FjcGkvaW50ZXJydXB0cy9ncGVYWQorCitUaGUgaW8gZmlsZSBpcyBiaW5hcnkgYW5kIGEgdXNlcnNwYWNlIHRvb2wgbG9jYXRlZCBoZXJlOgorZnRwOi8vZnRwLnN1c2UuY29tL3B1Yi9wZW9wbGUvdHJlbm4vc291cmNlcy9lYy8KK3Nob3VsZCBnZXQgdXNlZCB0byByZWFkIG91dCB0aGUgMjU2IEVtYmVkZGVkIENvbnRyb2xsZXIgcmVnaXN0ZXJzCitvciB3cml0aW5nIHRvIHRoZW0uCisKK0NBVVRJT046IERvIG5vdCB3cml0ZSB0byB0aGUgRW1iZWRkZWQgQ29udHJvbGxlciBpZiB5b3UgZG9uJ3Qga25vdword2hhdCB5b3UgYXJlIGRvaW5nISBSZWJvb3RpbmcgYWZ0ZXJ3YXJkcyBhbHNvIGlzIGEgZ29vZCBpZGVhLgorVGhpcyBjYW4gaW5mbHVlbmNlIHRoZSB3YXkgeW91ciBtYWNoaW5lIGlzIGNvb2xlZCBhbmQgZmFucyBtYXkKK25vdCBnZXQgc3dpdGNoZWQgb24gYWdhaW4gYWZ0ZXIgeW91IGRpZCBhIHdyb25nIHdyaXRlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9kZWJ1Z2ZzLWlkZWFwYWQgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2RlYnVnZnMtaWRlYXBhZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDc5YzBiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9kZWJ1Z2ZzLWlkZWFwYWQKQEAgLTAsMCArMSwxOSBAQAorV2hhdDoJCS9zeXMva2VybmVsL2RlYnVnL2lkZWFwYWQvY2ZnCitEYXRlOgkJU2VwIDIwMTEKK0tlcm5lbFZlcnNpb246CTMuMgorQ29udGFjdDoJSWtlIFBhbmhjIDxpa2UucGFuQGNhbm9uaWNhbC5jb20+CitEZXNjcmlwdGlvbjoKKworY2ZnIHNob3dzIHRoZSByZXR1cm4gdmFsdWUgb2YgX0NGRyBtZXRob2QgaW4gVlBDMjAwNCBkZXZpY2UuIEl0IHRlbGxzIG1hY2hpbmUKK2NhcGFiaWxpdHkgYW5kIHdoYXQgZ3JhcGhpYyBjb21wb25lbnQgd2l0aGluIHRoZSBtYWNoaW5lLgorCisKK1doYXQ6CQkvc3lzL2tlcm5lbC9kZWJ1Zy9pZGVhcGFkL3N0YXR1cworRGF0ZToJCVNlcCAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjIKK0NvbnRhY3Q6CUlrZSBQYW5oYyA8aWtlLnBhbkBjYW5vbmljYWwuY29tPgorRGVzY3JpcHRpb246CisKK3N0YXR1cyBzaG93cyBpbmZvcyB3ZSBjYW4gcmVhZCBhbmQgdGVsbHMgaXRzIG1lYW5pbmcgYW5kIHZhbHVlLgorCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvZGVidWdmcy1vbHBjIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9kZWJ1Z2ZzLW9scGMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ3NmNjNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvZGVidWdmcy1vbHBjCkBAIC0wLDAgKzEsMTYgQEAKK1doYXQ6CQkvc3lzL2tlcm5lbC9kZWJ1Zy9vbHBjLWVjL2NtZAorRGF0ZToJCURlYyAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjQKK0NvbnRhY3Q6CWRldmVsQGxpc3RzLmxhcHRvcC5vcmcKK0Rlc2NyaXB0aW9uOgorCitBIGdlbmVyaWMgaW50ZXJmYWNlIGZvciBleGVjdXRpbmcgT0xQQyBFbWJlZGRlZCBDb250cm9sbGVyIGNvbW1hbmRzIGFuZAorcmVhZGluZyB0aGVpciByZXNwb25zZXMuCisKK1RvIGV4ZWN1dGUgYSBjb21tYW5kLCB3cml0ZSBkYXRhIHdpdGggdGhlIGZvcm1hdDogQ0M6TiBBIEEgQSBBCitDQyBpcyB0aGUgKGhleCkgY29tbWFuZCwgTiBpcyB0aGUgY291bnQgb2YgZXhwZWN0ZWQgcmVwbHkgYnl0ZXMsIGFuZCBBIEEgQSBBCithcmUgb3B0aW9uYWwgKGhleCkgYXJndW1lbnRzLgorCitUbyByZWFkIHRoZSByZXNwb25zZSAoaWYgYW55KSwgcmVhZCBmcm9tIHRoZSBnZW5lcmljIG5vZGUgYWZ0ZXIgZXhlY3V0aW5nCithIGNvbW1hbmQuIEhleCByZXBseSBieXRlcyB3aWxsIGJlIHJldHVybmVkLCAqd2hldGhlciBvciBub3QqIHRoZXkgY2FtZSBmcm9tCit0aGUgaW1tZWRpYXRlbHkgcHJldmlvdXMgY29tbWFuZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvZGVidWdmcy1wZm8tbngtY3J5cHRvIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9kZWJ1Z2ZzLXBmby1ueC1jcnlwdG8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg1ZDVhNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvZGVidWdmcy1wZm8tbngtY3J5cHRvCkBAIC0wLDAgKzEsNDUgQEAKK1doYXQ6CQkvc3lzL2tlcm5lbC9kZWJ1Zy9ueC1jcnlwdG8vKgorRGF0ZToJCU1hcmNoIDIwMTIKK0tlcm5lbFZlcnNpb246CTMuNAorQ29udGFjdDoJS2VudCBZb2RlciA8a2V5QGxpbnV4LnZuZXQuaWJtLmNvbT4KK0Rlc2NyaXB0aW9uOgorCisgIFRoZXNlIGRlYnVnZnMgaW50ZXJmYWNlcyBhcmUgYnVpbHQgYnkgdGhlIG54LWNyeXB0byBkcml2ZXIsIGJ1aWx0IGluCithcmNoL3Bvd2VycGMvY3J5cHRvL254LgorCitFcnJvciBEZXRlY3Rpb24KKz09PT09PT09PT09PT09PQorCitlcnJvcnM6CistIEEgdTMyIHByb3ZpZGluZyBhIHRvdGFsIGNvdW50IG9mIGVycm9ycyBzaW5jZSB0aGUgZHJpdmVyIHdhcyBsb2FkZWQuIFRoZQorb25seSBlcnJvcnMgY291bnRlZCBoZXJlIGFyZSB0aG9zZSByZXR1cm5lZCBmcm9tIHRoZSBoY2FsbCwgSF9DT1BfT1AuCisKK2xhc3RfZXJyb3I6CistIFRoZSBtb3N0IHJlY2VudCBub24temVybyByZXR1cm4gY29kZSBmcm9tIHRoZSBIX0NPUF9PUCBoY2FsbC4gLUVCVVNZIGlzIG5vdAorcmVjb3JkZWQgaGVyZSAodGhlIGhjYWxsIHdpbGwgcmV0cnkgdW50aWwgLUVCVVNZIGdvZXMgYXdheSkuCisKK2xhc3RfZXJyb3JfcGlkOgorLSBUaGUgcHJvY2VzcyBJRCBvZiB0aGUgcHJvY2VzcyB3aG8gcmVjZWl2ZWQgdGhlIG1vc3QgcmVjZW50IGVycm9yIGZyb20gdGhlCitoY2FsbC4KKworRGV2aWNlIFVzZQorPT09PT09PT09PQorCithZXNfYnl0ZXM6CistIFRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgZW5jcnlwdGVkIHVzaW5nIEFFUyBpbiBhbnkgb2YgdGhlIGRyaXZlcidzCitzdXBwb3J0ZWQgbW9kZXMuCisKK2Flc19vcHM6CistIFRoZSB0b3RhbCBudW1iZXIgb2YgQUVTIG9wZXJhdGlvbnMgc3VibWl0dGVkIHRvIHRoZSBoYXJkd2FyZS4KKworc2hhMjU2X2J5dGVzOgorLSBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIGhhc2hlZCBieSB0aGUgaGFyZHdhcmUgdXNpbmcgU0hBLTI1Ni4KKworc2hhMjU2X29wczoKKy0gVGhlIHRvdGFsIG51bWJlciBvZiBTSEEtMjU2IG9wZXJhdGlvbnMgc3VibWl0dGVkIHRvIHRoZSBoYXJkd2FyZS4KKworc2hhNTEyX2J5dGVzOgorLSBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIGhhc2hlZCBieSB0aGUgaGFyZHdhcmUgdXNpbmcgU0hBLTUxMi4KKworc2hhNTEyX29wczoKKy0gVGhlIHRvdGFsIG51bWJlciBvZiBTSEEtNTEyIG9wZXJhdGlvbnMgc3VibWl0dGVkIHRvIHRoZSBoYXJkd2FyZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvZGVidWdmcy1wa3RjZHZkIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9kZWJ1Z2ZzLXBrdGNkdmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YxMTczNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvZGVidWdmcy1wa3RjZHZkCkBAIC0wLDAgKzEsMTkgQEAKK1doYXQ6ICAgICAgICAgICAvc3lzL2tlcm5lbC9kZWJ1Zy9wa3RjZHZkL3BrdGNkdmRbMC03XQorRGF0ZTogICAgICAgICAgIE9jdC4gMjAwNgorS2VybmVsVmVyc2lvbjogIDIuNi4yMAorQ29udGFjdDogICAgICAgIFRob21hcyBNYWllciA8YmFsYWdpQGp1c3RtYWlsLmRlPgorRGVzY3JpcHRpb246CisKK2RlYnVnZnMgaW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgcGt0Y2R2ZCBtb2R1bGUgKHBhY2tldCB3cml0aW5nIGRyaXZlcikgY3JlYXRlcwordGhlc2UgZmlsZXMgaW4gZGVidWdmczoKKworL3N5cy9rZXJuZWwvZGVidWcvcGt0Y2R2ZC9wa3RjZHZkWzAtN10vCisgICAgaW5mbyAgICAgICAgICAgICgwNDQ0KSBMb3RzIG9mIGRyaXZlciBzdGF0aXN0aWNzIGFuZCBpbmZvcy4KKworRXhhbXBsZToKKy0tLS0tLS0KKworY2F0IC9zeXMva2VybmVsL2RlYnVnL3BrdGNkdmQvcGt0Y2R2ZDAvaW5mbwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9kZXYta21zZyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvZGV2LWttc2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZmODE3ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvZGV2LWttc2cKQEAgLTAsMCArMSwxMTAgQEAKK1doYXQ6CQkvZGV2L2ttc2cKK0RhdGU6CQlNYWkgMjAxMgorS2VybmVsVmVyc2lvbjoJMy41CitDb250YWN0OglLYXkgU2lldmVycyA8a2F5QHZyZnkub3JnPgorRGVzY3JpcHRpb246CVRoZSAvZGV2L2ttc2cgY2hhcmFjdGVyIGRldmljZSBub2RlIHByb3ZpZGVzIHVzZXJzcGFjZSBhY2Nlc3MKKwkJdG8gdGhlIGtlcm5lbCdzIHByaW50ayBidWZmZXIuCisKKwkJSW5qZWN0aW5nIG1lc3NhZ2VzOgorCQlFdmVyeSB3cml0ZSgpIHRvIHRoZSBvcGVuZWQgZGV2aWNlIG5vZGUgcGxhY2VzIGEgbG9nIGVudHJ5IGluCisJCXRoZSBrZXJuZWwncyBwcmludGsgYnVmZmVyLgorCisJCVRoZSBsb2dnZWQgbGluZSBjYW4gYmUgcHJlZml4ZWQgd2l0aCBhIDxOPiBzeXNsb2cgcHJlZml4LCB3aGljaAorCQljYXJyaWVzIHRoZSBzeXNsb2cgcHJpb3JpdHkgYW5kIGZhY2lsaXR5LiBUaGUgc2luZ2xlIGRlY2ltYWwKKwkJcHJlZml4IG51bWJlciBpcyBjb21wb3NlZCBvZiB0aGUgMyBsb3dlc3QgYml0cyBiZWluZyB0aGUgc3lzbG9nCisJCXByaW9yaXR5IGFuZCB0aGUgaGlnaGVyIGJpdHMgdGhlIHN5c2xvZyBmYWNpbGl0eSBudW1iZXIuCisKKwkJSWYgbm8gcHJlZml4IGlzIGdpdmVuLCB0aGUgcHJpb3JpdHkgbnVtYmVyIGlzIHRoZSBkZWZhdWx0IGtlcm5lbAorCQlsb2cgcHJpb3JpdHkgYW5kIHRoZSBmYWNpbGl0eSBudW1iZXIgaXMgc2V0IHRvIExPR19VU0VSICgxKS4gSXQKKwkJaXMgbm90IHBvc3NpYmxlIHRvIGluamVjdCBtZXNzYWdlcyBmcm9tIHVzZXJzcGFjZSB3aXRoIHRoZQorCQlmYWNpbGl0eSBudW1iZXIgTE9HX0tFUk4gKDApLCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgb3JpZ2luIG9mCisJCXRoZSBtZXNzYWdlcyBjYW4gYWx3YXlzIGJlIHJlbGlhYmx5IGRldGVybWluZWQuCisKKwkJQWNjZXNzaW5nIHRoZSBidWZmZXI6CisJCUV2ZXJ5IHJlYWQoKSBmcm9tIHRoZSBvcGVuZWQgZGV2aWNlIG5vZGUgcmVjZWl2ZXMgb25lIHJlY29yZAorCQlvZiB0aGUga2VybmVsJ3MgcHJpbnRrIGJ1ZmZlci4KKworCQlUaGUgZmlyc3QgcmVhZCgpIGRpcmVjdGx5IGZvbGxvd2luZyBhbiBvcGVuKCkgYWx3YXlzIHJldHVybnMKKwkJZmlyc3QgbWVzc2FnZSBpbiB0aGUgYnVmZmVyOyB0aGVyZSBpcyBubyBrZXJuZWwtaW50ZXJuYWwKKwkJcGVyc2lzdGVudCBzdGF0ZTsgbWFueSByZWFkZXJzIGNhbiBjb25jdXJyZW50bHkgb3BlbiB0aGUgZGV2aWNlCisJCWFuZCByZWFkIGZyb20gaXQsIHdpdGhvdXQgYWZmZWN0aW5nIG90aGVyIHJlYWRlcnMuCisKKwkJRXZlcnkgcmVhZCgpIHdpbGwgcmVjZWl2ZSB0aGUgbmV4dCBhdmFpbGFibGUgcmVjb3JkLiBJZiBubyBtb3JlCisJCXJlY29yZHMgYXJlIGF2YWlsYWJsZSByZWFkKCkgd2lsbCBibG9jaywgb3IgaWYgT19OT05CTE9DSyBpcworCQl1c2VkIC1FQUdBSU4gcmV0dXJuZWQuCisKKwkJTWVzc2FnZXMgaW4gdGhlIHJlY29yZCByaW5nIGJ1ZmZlciBnZXQgb3ZlcndyaXR0ZW4gYXMgd2hvbGUsCisJCXRoZXJlIGFyZSBuZXZlciBwYXJ0aWFsIG1lc3NhZ2VzIHJlY2VpdmVkIGJ5IHJlYWQoKS4KKworCQlJbiBjYXNlIG1lc3NhZ2VzIGdldCBvdmVyd3JpdHRlbiBpbiB0aGUgY2lyY3VsYXIgYnVmZmVyIHdoaWxlCisJCXRoZSBkZXZpY2UgaXMga2VwdCBvcGVuLCB0aGUgbmV4dCByZWFkKCkgd2lsbCByZXR1cm4gLUVQSVBFLAorCQlhbmQgdGhlIHNlZWsgcG9zaXRpb24gYmUgdXBkYXRlZCB0byB0aGUgbmV4dCBhdmFpbGFibGUgcmVjb3JkLgorCQlTdWJzZXF1ZW50IHJlYWRzKCkgd2lsbCByZXR1cm4gYXZhaWxhYmxlIHJlY29yZHMgYWdhaW4uCisKKwkJVW5saWtlIHRoZSBjbGFzc2ljIHN5c2xvZygpIGludGVyZmFjZSwgdGhlIDY0IGJpdCByZWNvcmQKKwkJc2VxdWVuY2UgbnVtYmVycyBhbGxvdyB0byBjYWxjdWxhdGUgdGhlIGFtb3VudCBvZiBsb3N0CisJCW1lc3NhZ2VzLCBpbiBjYXNlIHRoZSBidWZmZXIgZ2V0cyBvdmVyd3JpdHRlbi4gQW5kIHRoZXkgYWxsb3cKKwkJdG8gcmVjb25uZWN0IHRvIHRoZSBidWZmZXIgYW5kIHJlY29uc3RydWN0IHRoZSByZWFkIHBvc2l0aW9uCisJCWlmIG5lZWRlZCwgd2l0aG91dCBsaW1pdGluZyB0aGUgaW50ZXJmYWNlIHRvIGEgc2luZ2xlIHJlYWRlci4KKworCQlUaGUgZGV2aWNlIHN1cHBvcnRzIHNlZWsgd2l0aCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6CisJCVNFRUtfU0VULCAwCisJCSAgc2VlayB0byB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIGJ1ZmZlcgorCQlTRUVLX0VORCwgMAorCQkgIHNlZWsgYWZ0ZXIgdGhlIGxhc3QgZW50cnkgaW4gdGhlIGJ1ZmZlcgorCQlTRUVLX0RBVEEsIDAKKwkJICBzZWVrIGFmdGVyIHRoZSBsYXN0IHJlY29yZCBhdmFpbGFibGUgYXQgdGhlIHRpbWUKKwkJICB0aGUgbGFzdCBTWVNMT0dfQUNUSU9OX0NMRUFSIHdhcyBpc3N1ZWQuCisKKwkJVGhlIG91dHB1dCBmb3JtYXQgY29uc2lzdHMgb2YgYSBwcmVmaXggY2FycnlpbmcgdGhlIHN5c2xvZworCQlwcmVmaXggaW5jbHVkaW5nIHByaW9yaXR5IGFuZCBmYWNpbGl0eSwgdGhlIDY0IGJpdCBtZXNzYWdlCisJCXNlcXVlbmNlIG51bWJlciBhbmQgdGhlIG1vbm90b25pYyB0aW1lc3RhbXAgaW4gbWljcm9zZWNvbmRzLAorCQlhbmQgYSBmbGFnIGZpZWxkLiBBbGwgZmllbGRzIGFyZSBzZXBhcmF0ZWQgYnkgYSAnLCcuCisKKwkJRnV0dXJlIGV4dGVuc2lvbnMgbWlnaHQgYWRkIG1vcmUgY29tbWEgc2VwYXJhdGVkIHZhbHVlcyBiZWZvcmUKKwkJdGhlIHRlcm1pbmF0aW5nICc7Jy4gVW5rbm93biBmaWVsZHMgYW5kIHZhbHVlcyBzaG91bGQgYmUKKwkJZ3JhY2VmdWxseSBpZ25vcmVkLgorCisJCVRoZSBodW1hbiByZWFkYWJsZSB0ZXh0IHN0cmluZyBzdGFydHMgZGlyZWN0bHkgYWZ0ZXIgdGhlICc7JworCQlhbmQgaXMgdGVybWluYXRlZCBieSBhICdcbicuIFVudHJ1c3RlZCB2YWx1ZXMgZGVyaXZlZCBmcm9tCisJCWhhcmR3YXJlIG9yIG90aGVyIGZhY2lsaXRpZXMgYXJlIHByaW50ZWQsIHRoZXJlZm9yZQorCQlhbGwgbm9uLXByaW50YWJsZSBjaGFyYWN0ZXJzIGFuZCAnXCcgaXRzZWxmIGluIHRoZSBsb2cgbWVzc2FnZQorCQlhcmUgZXNjYXBlZCBieSAiXHgwMCIgQy1zdHlsZSBoZXggZW5jb2RpbmcuCisKKwkJQSBsaW5lIHN0YXJ0aW5nIHdpdGggJyAnLCBpcyBhIGNvbnRpbnVhdGlvbiBsaW5lLCBhZGRpbmcKKwkJa2V5L3ZhbHVlIHBhaXJzIHRvIHRoZSBsb2cgbWVzc2FnZSwgd2hpY2ggcHJvdmlkZSB0aGUgbWFjaGluZQorCQlyZWFkYWJsZSBjb250ZXh0IG9mIHRoZSBtZXNzYWdlLCBmb3IgcmVsaWFibGUgcHJvY2Vzc2luZyBpbgorCQl1c2Vyc3BhY2UuCisKKwkJRXhhbXBsZToKKwkJNywxNjAsNDI0MDY5LC07cGNpX3Jvb3QgUE5QMEEwMzowMDogaG9zdCBicmlkZ2Ugd2luZG93IFtpbyAgMHgwMDAwLTB4MGNmN10gKGlnbm9yZWQpCisJCSBTVUJTWVNURU09YWNwaQorCQkgREVWSUNFPSthY3BpOlBOUDBBMDM6MDAKKwkJNiwzMzksNTE0MDkwMCwtO05FVDogUmVnaXN0ZXJlZCBwcm90b2NvbCBmYW1pbHkgMTAKKwkJMzAsMzQwLDU2OTA3MTYsLTt1ZGV2ZFs4MF06IHN0YXJ0aW5nIHZlcnNpb24gMTgxCisKKwkJVGhlIERFVklDRT0ga2V5IHVuaXF1ZWx5IGlkZW50aWZpZXMgZGV2aWNlcyB0aGUgZm9sbG93aW5nIHdheToKKwkJICBiMTI6OCAgICAgICAgLSBibG9jayBkZXZfdAorCQkgIGMxMjc6MyAgICAgICAtIGNoYXIgZGV2X3QKKwkJICBuOCAgICAgICAgICAgLSBuZXRkZXYgaWZpbmRleAorCQkgICtzb3VuZDpjYXJkMCAtIHN1YnN5c3RlbTpkZXZuYW1lCisKKwkJVGhlIGZsYWdzIGZpZWxkIGNhcnJpZXMgJy0nIGJ5IGRlZmF1bHQuIEEgJ2MnIGluZGljYXRlcyBhCisJCWZyYWdtZW50IG9mIGEgbGluZS4gQWxsIGZvbGxvd2luZyBmcmFnbWVudHMgYXJlIGZsYWdnZWQgd2l0aAorCQknKycuIE5vdGUsIHRoYXQgdGhlc2UgaGludHMgYWJvdXQgY29udGludWF0aW9uIGxpbmVzIGFyZSBub3QKKwkJbmVjZXNzYXJpbHkgY29ycmVjdCwgYW5kIHRoZSBzdHJlYW0gY291bGQgYmUgaW50ZXJsZWF2ZWQgd2l0aAorCQl1bnJlbGF0ZWQgbWVzc2FnZXMsIGJ1dCBtZXJnaW5nIHRoZSBsaW5lcyBpbiB0aGUgb3V0cHV0CisJCXVzdWFsbHkgcHJvZHVjZXMgYmV0dGVyIGh1bWFuIHJlYWRhYmxlIHJlc3VsdHMuIEEgc2ltaWxhcgorCQlsb2dpYyBpcyB1c2VkIGludGVybmFsbHkgd2hlbiBtZXNzYWdlcyBhcmUgcHJpbnRlZCB0byB0aGUKKwkJY29uc29sZSwgL3Byb2Mva21zZyBvciB0aGUgc3lzbG9nKCkgc3lzY2FsbC4KKworCQlCeSBkZWZhdWx0LCBrZXJuZWwgdHJpZXMgdG8gYXZvaWQgZnJhZ21lbnRzIGJ5IGNvbmNhdGVuYXRpbmcKKwkJd2hlbiBpdCBjYW4gYW5kIGZyYWdtZW50cyBhcmUgcmFyZTsgaG93ZXZlciwgd2hlbiBleHRlbmRlZAorCQljb25zb2xlIHN1cHBvcnQgaXMgZW5hYmxlZCwgdGhlIGluLWtlcm5lbCBjb25jYXRlbmF0aW9uIGlzCisJCWRpc2FibGVkIGFuZCAvZGV2L2ttc2cgb3V0cHV0IHdpbGwgY29udGFpbiBtb3JlIGZyYWdtZW50cy4gSWYKKwkJdGhlIGxvZyBjb25zdW1lciBwZXJmb3JtcyBjb25jYXRlbmF0aW9uLCB0aGUgZW5kIHJlc3VsdAorCQlzaG91bGQgYmUgdGhlIHNhbWUuIEluIHRoZSBmdXR1cmUsIHRoZSBpbi1rZXJuZWwgY29uY2F0ZW5hdGlvbgorCQltYXkgYmUgcmVtb3ZlZCBlbnRpcmVseSBhbmQgL2Rldi9rbXNnIHVzZXJzIGFyZSByZWNvbW1lbmRlZCB0bworCQlpbXBsZW1lbnQgZnJhZ21lbnQgaGFuZGxpbmcuCisKK1VzZXJzOgkJZG1lc2coMSksIHVzZXJzcGFjZSBrZXJuZWwgbG9nIGNvbnN1bWVycwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9ldm0gYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2V2bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Mzc0ZDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9ldm0KQEAgLTAsMCArMSwyMyBAQAorV2hhdDoJCXNlY3VyaXR5L2V2bQorRGF0ZToJCU1hcmNoIDIwMTEKK0NvbnRhY3Q6CU1pbWkgWm9oYXIgPHpvaGFyQHVzLmlibS5jb20+CitEZXNjcmlwdGlvbjoKKwkJRVZNIHByb3RlY3RzIGEgZmlsZSdzIHNlY3VyaXR5IGV4dGVuZGVkIGF0dHJpYnV0ZXMoeGF0dHJzKQorCQlhZ2FpbnN0IGludGVncml0eSBhdHRhY2tzLiBUaGUgaW5pdGlhbCBtZXRob2QgbWFpbnRhaW5zIGFuCisJCUhNQUMtc2hhMSB2YWx1ZSBhY3Jvc3MgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZXMsIHN0b3JpbmcgdGhlCisJCXZhbHVlIGFzIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgJ3NlY3VyaXR5LmV2bScuCisKKwkJRVZNIGRlcGVuZHMgb24gdGhlIEtlcm5lbCBLZXkgUmV0ZW50aW9uIFN5c3RlbSB0byBwcm92aWRlIGl0CisJCXdpdGggYSB0cnVzdGVkL2VuY3J5cHRlZCBrZXkgZm9yIHRoZSBITUFDLXNoYTEgb3BlcmF0aW9uLgorCQlUaGUga2V5IGlzIGxvYWRlZCBvbnRvIHRoZSByb290J3Mga2V5cmluZyB1c2luZyBrZXljdGwuICBVbnRpbAorCQlFVk0gcmVjZWl2ZXMgbm90aWZpY2F0aW9uIHRoYXQgdGhlIGtleSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkKKwkJbG9hZGVkIG9udG8gdGhlIGtleXJpbmcgKGVjaG8gMSA+IDxzZWN1cml0eWZzPi9ldm0pLCBFVk0KKwkJY2FuIG5vdCBjcmVhdGUgb3IgdmFsaWRhdGUgdGhlICdzZWN1cml0eS5ldm0nIHhhdHRyLCBidXQKKwkJcmV0dXJucyBJTlRFR1JJVFlfVU5LTk9XTi4gIExvYWRpbmcgdGhlIGtleSBhbmQgc2lnbmFsaW5nIEVWTQorCQlzaG91bGQgYmUgZG9uZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vcm1hbGx5IHRoaXMgaXMgZG9uZQorCQlpbiB0aGUgaW5pdHJhbWZzLCB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIG1lYXN1cmVkIGFzIHBhcnQKKwkJb2YgdGhlIHRydXN0ZWQgYm9vdC4gIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNyZWF0aW5nIGFuZAorCQlsb2FkaW5nIGV4aXN0aW5nIHRydXN0ZWQvZW5jcnlwdGVkIGtleXMsIHJlZmVyIHRvOgorCQlEb2N1bWVudGF0aW9uL2tleXMtdHJ1c3RlZC1lbmNyeXB0ZWQudHh0LiAgKEEgc2FtcGxlIGRyYWN1dAorCQlwYXRjaCwgd2hpY2ggbG9hZHMgdGhlIHRydXN0ZWQvZW5jcnlwdGVkIGtleSBhbmQgZW5hYmxlcworCQlFVk0sIGlzIGF2YWlsYWJsZSBmcm9tIGh0dHA6Ly9saW51eC1pbWEuc291cmNlZm9yZ2UubmV0LyNFVk0uKQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9pbWFfcG9saWN5IGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9pbWFfcG9saWN5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhMzc4YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2ltYV9wb2xpY3kKQEAgLTAsMCArMSw5NyBAQAorV2hhdDoJCXNlY3VyaXR5L2ltYS9wb2xpY3kKK0RhdGU6CQlNYXkgMjAwOAorQ29udGFjdDoJTWltaSBab2hhciA8em9oYXJAdXMuaWJtLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgVHJ1c3RlZCBDb21wdXRpbmcgR3JvdXAoVENHKSBydW50aW1lIEludGVncml0eQorCQlNZWFzdXJlbWVudCBBcmNoaXRlY3R1cmUoSU1BKSBtYWludGFpbnMgYSBsaXN0IG9mIGhhc2gKKwkJdmFsdWVzIG9mIGV4ZWN1dGFibGVzIGFuZCBvdGhlciBzZW5zaXRpdmUgc3lzdGVtIGZpbGVzCisJCWxvYWRlZCBpbnRvIHRoZSBydW4tdGltZSBvZiB0aGlzIHN5c3RlbS4gIEF0IHJ1bnRpbWUsCisJCXRoZSBwb2xpY3kgY2FuIGJlIGNvbnN0cmFpbmVkIGJhc2VkIG9uIExTTSBzcGVjaWZpYyBkYXRhLgorCQlQb2xpY2llcyBhcmUgbG9hZGVkIGludG8gdGhlIHNlY3VyaXR5ZnMgZmlsZSBpbWEvcG9saWN5CisJCWJ5IG9wZW5pbmcgdGhlIGZpbGUsIHdyaXRpbmcgdGhlIHJ1bGVzIG9uZSBhdCBhIHRpbWUgYW5kCisJCXRoZW4gY2xvc2luZyB0aGUgZmlsZS4gIFRoZSBuZXcgcG9saWN5IHRha2VzIGVmZmVjdCBhZnRlcgorCQl0aGUgZmlsZSBpbWEvcG9saWN5IGlzIGNsb3NlZC4KKworCQlJTUEgYXBwcmFpc2FsLCBpZiBjb25maWd1cmVkLCB1c2VzIHRoZXNlIGZpbGUgbWVhc3VyZW1lbnRzCisJCWZvciBsb2NhbCBtZWFzdXJlbWVudCBhcHByYWlzYWwuCisKKwkJcnVsZSBmb3JtYXQ6IGFjdGlvbiBbY29uZGl0aW9uIC4uLl0KKworCQlhY3Rpb246IG1lYXN1cmUgfCBkb250X21lYXN1cmUgfCBhcHByYWlzZSB8IGRvbnRfYXBwcmFpc2UgfCBhdWRpdAorCQljb25kaXRpb246PSBiYXNlIHwgbHNtICBbb3B0aW9uXQorCQkJYmFzZToJW1tmdW5jPV0gW21hc2s9XSBbZnNtYWdpYz1dIFtmc3V1aWQ9XSBbdWlkPV0KKwkJCQlbZXVpZD1dIFtmb3duZXI9XV0KKwkJCWxzbToJW1tzdWJqX3VzZXI9XSBbc3Vial9yb2xlPV0gW3N1YmpfdHlwZT1dCisJCQkJIFtvYmpfdXNlcj1dIFtvYmpfcm9sZT1dIFtvYmpfdHlwZT1dXQorCQkJb3B0aW9uOglbW2FwcHJhaXNlX3R5cGU9XV0gW3Blcm1pdF9kaXJlY3Rpb10KKworCQliYXNlOiAJZnVuYzo9IFtCUFJNX0NIRUNLXVtNTUFQX0NIRUNLXVtGSUxFX0NIRUNLXVtNT0RVTEVfQ0hFQ0tdCisJCQkJW0ZJUk1XQVJFX0NIRUNLXQorCQkJbWFzazo9IFtbXl1NQVlfUkVBRF0gW1teXU1BWV9XUklURV0gW1teXU1BWV9BUFBFTkRdCisJCQkgICAgICAgW1teXU1BWV9FWEVDXQorCQkJZnNtYWdpYzo9IGhleCB2YWx1ZQorCQkJZnN1dWlkOj0gZmlsZSBzeXN0ZW0gVVVJRCAoZS5nIDhiY2JlMzk0LTRmMTMtNDE0NC1iZThlLTVhYTllYTJjZTJmNikKKwkJCXVpZDo9IGRlY2ltYWwgdmFsdWUKKwkJCWV1aWQ6PSBkZWNpbWFsIHZhbHVlCisJCQlmb3duZXI6PWRlY2ltYWwgdmFsdWUKKwkJbHNtOiAgCWFyZSBMU00gc3BlY2lmaWMKKwkJb3B0aW9uOglhcHByYWlzZV90eXBlOj0gW2ltYXNpZ10KKworCQlkZWZhdWx0IHBvbGljeToKKwkJCSMgUFJPQ19TVVBFUl9NQUdJQworCQkJZG9udF9tZWFzdXJlIGZzbWFnaWM9MHg5ZmEwCisJCQlkb250X2FwcHJhaXNlIGZzbWFnaWM9MHg5ZmEwCisJCQkjIFNZU0ZTX01BR0lDCisJCQlkb250X21lYXN1cmUgZnNtYWdpYz0weDYyNjU2NTcyCisJCQlkb250X2FwcHJhaXNlIGZzbWFnaWM9MHg2MjY1NjU3MgorCQkJIyBERUJVR0ZTX01BR0lDCisJCQlkb250X21lYXN1cmUgZnNtYWdpYz0weDY0NjI2NzIwCisJCQlkb250X2FwcHJhaXNlIGZzbWFnaWM9MHg2NDYyNjcyMAorCQkJIyBUTVBGU19NQUdJQworCQkJZG9udF9tZWFzdXJlIGZzbWFnaWM9MHgwMTAyMTk5NAorCQkJZG9udF9hcHByYWlzZSBmc21hZ2ljPTB4MDEwMjE5OTQKKwkJCSMgUkFNRlNfTUFHSUMKKwkJCWRvbnRfYXBwcmFpc2UgZnNtYWdpYz0weDg1ODQ1OGY2CisJCQkjIERFVlBUU19TVVBFUl9NQUdJQworCQkJZG9udF9tZWFzdXJlIGZzbWFnaWM9MHgxY2QxCisJCQlkb250X2FwcHJhaXNlIGZzbWFnaWM9MHgxY2QxCisJCQkjIEJJTkZNVEZTX01BR0lDCisJCQlkb250X21lYXN1cmUgZnNtYWdpYz0weDQyNDk0ZTRkCisJCQlkb250X2FwcHJhaXNlIGZzbWFnaWM9MHg0MjQ5NGU0ZAorCQkJIyBTRUNVUklUWUZTX01BR0lDCisJCQlkb250X21lYXN1cmUgZnNtYWdpYz0weDczNjM2NjczCisJCQlkb250X2FwcHJhaXNlIGZzbWFnaWM9MHg3MzYzNjY3MworCQkJIyBTRUxJTlVYX01BR0lDCisJCQlkb250X21lYXN1cmUgZnNtYWdpYz0weGY5N2NmZjhjCisJCQlkb250X2FwcHJhaXNlIGZzbWFnaWM9MHhmOTdjZmY4YworCQkJIyBDR1JPVVBfU1VQRVJfTUFHSUMKKwkJCWRvbnRfbWVhc3VyZSBmc21hZ2ljPTB4MjdlMGViCisJCQlkb250X2FwcHJhaXNlIGZzbWFnaWM9MHgyN2UwZWIKKwkJCSMgTlNGU19NQUdJQworCQkJZG9udF9tZWFzdXJlIGZzbWFnaWM9MHg2ZTczNjY3MworCQkJZG9udF9hcHByYWlzZSBmc21hZ2ljPTB4NmU3MzY2NzMKKworCQkJbWVhc3VyZSBmdW5jPUJQUk1fQ0hFQ0sKKwkJCW1lYXN1cmUgZnVuYz1GSUxFX01NQVAgbWFzaz1NQVlfRVhFQworCQkJbWVhc3VyZSBmdW5jPUZJTEVfQ0hFQ0sgbWFzaz1NQVlfUkVBRCB1aWQ9MAorCQkJbWVhc3VyZSBmdW5jPU1PRFVMRV9DSEVDSworCQkJbWVhc3VyZSBmdW5jPUZJUk1XQVJFX0NIRUNLCisJCQlhcHByYWlzZSBmb3duZXI9MAorCisJCVRoZSBkZWZhdWx0IHBvbGljeSBtZWFzdXJlcyBhbGwgZXhlY3V0YWJsZXMgaW4gYnBybV9jaGVjaywKKwkJYWxsIGZpbGVzIG1tYXBwZWQgZXhlY3V0YWJsZSBpbiBmaWxlX21tYXAsIGFuZCBhbGwgZmlsZXMKKwkJb3BlbiBmb3IgcmVhZCBieSByb290IGluIGRvX2ZpbHBfb3Blbi4gIFRoZSBkZWZhdWx0IGFwcHJhaXNhbAorCQlwb2xpY3kgYXBwcmFpc2VzIGFsbCBmaWxlcyBvd25lZCBieSByb290LgorCisJCUV4YW1wbGVzIG9mIExTTSBzcGVjaWZpYyBkZWZpbml0aW9uczoKKworCQlTRUxpbnV4OgorCQkJZG9udF9tZWFzdXJlIG9ial90eXBlPXZhcl9sb2dfdAorCQkJZG9udF9hcHByYWlzZSBvYmpfdHlwZT12YXJfbG9nX3QKKwkJCWRvbnRfbWVhc3VyZSBvYmpfdHlwZT1hdWRpdGRfbG9nX3QKKwkJCWRvbnRfYXBwcmFpc2Ugb2JqX3R5cGU9YXVkaXRkX2xvZ190CisJCQltZWFzdXJlIHN1YmpfdXNlcj1zeXN0ZW1fdSBmdW5jPUZJTEVfQ0hFQ0sgbWFzaz1NQVlfUkVBRAorCQkJbWVhc3VyZSBzdWJqX3JvbGU9c3lzdGVtX3IgZnVuYz1GSUxFX0NIRUNLIG1hc2s9TUFZX1JFQUQKKworCQlTbWFjazoKKwkJCW1lYXN1cmUgc3Vial91c2VyPV8gZnVuYz1GSUxFX0NIRUNLIG1hc2s9TUFZX1JFQUQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvcHJvY2ZzLWRpc2tzdGF0cyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvcHJvY2ZzLWRpc2tzdGF0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTFhOTczCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9wcm9jZnMtZGlza3N0YXRzCkBAIC0wLDAgKzEsMjIgQEAKK1doYXQ6CQkvcHJvYy9kaXNrc3RhdHMKK0RhdGU6CQlGZWJydWFyeSAyMDA4CitDb250YWN0OglKZXJvbWUgTWFyY2hhbmQgPGptYXJjaGFuQHJlZGhhdC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9wcm9jL2Rpc2tzdGF0cyBmaWxlIGRpc3BsYXlzIHRoZSBJL08gc3RhdGlzdGljcworCQlvZiBibG9jayBkZXZpY2VzLiBFYWNoIGxpbmUgY29udGFpbnMgdGhlIGZvbGxvd2luZyAxNAorCQlmaWVsZHM6CisJCSAxIC0gbWFqb3IgbnVtYmVyCisJCSAyIC0gbWlub3IgbXVtYmVyCisJCSAzIC0gZGV2aWNlIG5hbWUKKwkJIDQgLSByZWFkcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisJCSA1IC0gcmVhZHMgbWVyZ2VkCisJCSA2IC0gc2VjdG9ycyByZWFkCisJCSA3IC0gdGltZSBzcGVudCByZWFkaW5nIChtcykKKwkJIDggLSB3cml0ZXMgY29tcGxldGVkCisJCSA5IC0gd3JpdGVzIG1lcmdlZAorCQkxMCAtIHNlY3RvcnMgd3JpdHRlbgorCQkxMSAtIHRpbWUgc3BlbnQgd3JpdGluZyAobXMpCisJCTEyIC0gSS9PcyBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MKKwkJMTMgLSB0aW1lIHNwZW50IGRvaW5nIEkvT3MgKG1zKQorCQkxNCAtIHdlaWdodGVkIHRpbWUgc3BlbnQgZG9pbmcgSS9PcyAobXMpCisJCUZvciBtb3JlIGRldGFpbHMgcmVmZXIgdG8gRG9jdW1lbnRhdGlvbi9pb3N0YXRzLnR4dApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9wc3RvcmUgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3BzdG9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmNhOWY1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9wc3RvcmUKQEAgLTAsMCArMSw0NyBAQAorV2hlcmU6CQkvc3lzL2ZzL3BzdG9yZS8uLi4gKG9yIC9kZXYvcHN0b3JlLy4uLikKK0RhdGU6CQlNYXJjaCAyMDExCitLZXJuZWwgVmVyc2lvbjogMi42LjM5CitDb250YWN0Ogl0b255Lmx1Y2tAaW50ZWwuY29tCitEZXNjcmlwdGlvbjoJR2VuZXJpYyBpbnRlcmZhY2UgdG8gcGxhdGZvcm0gZGVwZW5kZW50IHBlcnNpc3RlbnQgc3RvcmFnZS4KKworCQlQbGF0Zm9ybXMgdGhhdCBwcm92aWRlIGEgbWVjaGFuaXNtIHRvIHByZXNlcnZlIHNvbWUgZGF0YQorCQlhY3Jvc3Mgc3lzdGVtIHJlYm9vdHMgY2FuIHJlZ2lzdGVyIHdpdGggdGhpcyBkcml2ZXIgdG8KKwkJcHJvdmlkZSBhIGdlbmVyaWMgaW50ZXJmYWNlIHRvIHNob3cgcmVjb3JkcyBjYXB0dXJlZCBpbgorCQl0aGUgZHlpbmcgbW9tZW50cy4gIEluIHRoZSBjYXNlIG9mIGEgcGFuaWMgdGhlIGxhc3QgcGFydAorCQlvZiB0aGUgY29uc29sZSBsb2cgaXMgY2FwdHVyZWQsIGJ1dCBvdGhlciBpbnRlcmVzdGluZworCQlkYXRhIGNhbiBhbHNvIGJlIHNhdmVkLgorCisJCSMgbW91bnQgLXQgcHN0b3JlIC1vIGttc2dfYnl0ZXM9ODAwMCAtIC9zeXMvZnMvcHN0b3JlCisKKwkJJCBscyAtbCAvc3lzL2ZzL3BzdG9yZS8KKwkJdG90YWwgMAorCQktci0tci0tci0tIDEgcm9vdCByb290IDc4OTYgTm92IDMwIDE1OjM4IGRtZXNnLWVyc3QtMQorCisJCURpZmZlcmVudCB1c2VycyBvZiB0aGlzIGludGVyZmFjZSB3aWxsIHJlc3VsdCBpbiBkaWZmZXJlbnQKKwkJZmlsZW5hbWUgcHJlZml4ZXMuICBDdXJyZW50bHkgdHdvIGFyZSBkZWZpbmVkOgorCisJCSJkbWVzZyIJLSBzYXZlZCBjb25zb2xlIGxvZworCQkibWNlIgktIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQgZGF0YSBmcm9tIGZhdGFsIGgvdyBlcnJvcgorCisJCU9uY2UgdGhlIGluZm9ybWF0aW9uIGluIGEgZmlsZSBoYXMgYmVlbiByZWFkLCByZW1vdmluZworCQl0aGUgZmlsZSB3aWxsIHNpZ25hbCB0byB0aGUgdW5kZXJseWluZyBwZXJzaXN0ZW50IHN0b3JhZ2UKKwkJZGV2aWNlIHRoYXQgaXQgY2FuIHJlY2xhaW0gdGhlIHNwYWNlIGZvciBsYXRlciByZS11c2UuCisKKwkJJCBybSAvc3lzL2ZzL3BzdG9yZS9kbWVzZy1lcnN0LTEKKworCQlUaGUgZXhwZWN0YXRpb24gaXMgdGhhdCBhbGwgZmlsZXMgaW4gL3N5cy9mcy9wc3RvcmUvCisJCXdpbGwgYmUgc2F2ZWQgZWxzZXdoZXJlIGFuZCBlcmFzZWQgZnJvbSBwZXJzaXN0ZW50IHN0b3JlCisJCXNvb24gYWZ0ZXIgYm9vdCB0byBmcmVlIHVwIHNwYWNlIHJlYWR5IGZvciB0aGUgbmV4dAorCQljYXRhc3Ryb3BoZS4KKworCQlUaGUgJ2ttc2dfYnl0ZXMnIG1vdW50IG9wdGlvbiBjaGFuZ2VzIHRoZSB0YXJnZXQgYW1vdW50IG9mCisJCWRhdGEgc2F2ZWQgb24gZWFjaCBvb3BzL3BhbmljLiBQc3RvcmUgc2F2ZXMgKHBvc3NpYmx5CisJCW11bHRpcGxlKSBmaWxlcyBiYXNlZCBvbiB0aGUgcmVjb3JkIHNpemUgb2YgdGhlIHVuZGVybHlpbmcKKwkJcGVyc2lzdGVudCBzdG9yYWdlIHVudGlsIGF0IGxlYXN0IHRoaXMgYW1vdW50IGlzIHJlYWNoZWQuCisJCURlZmF1bHQgaXMgMTAgS2J5dGVzLgorCisJCVBzdG9yZSBvbmx5IHN1cHBvcnRzIG9uZSBiYWNrZW5kIGF0IGEgdGltZS4gSWYgbXVsdGlwbGUKKwkJYmFja2VuZHMgYXJlIGF2YWlsYWJsZSwgdGhlIHByZWZlcnJlZCBiYWNrZW5kIG1heSBiZQorCQlzZXQgYnkgcGFzc2luZyB0aGUgcHN0b3JlLmJhY2tlbmQ9IGFyZ3VtZW50IHRvIHRoZSBrZXJuZWwgYXQKKwkJYm9vdCB0aW1lLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWF0YSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYXRhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhNDI5NjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWF0YQpAQCAtMCwwICsxLDExMCBAQAorV2hhdDoJCS9zeXMvY2xhc3MvYXRhXy4uLgorRGF0ZToJCUF1Z3VzdCAyMDA4CitDb250YWN0OglHd2VuZGFsIEdyaWdub3U8Z3dlbmRhbEBnb29nbGUuY29tPgorRGVzY3JpcHRpb246CisKK1Byb3ZpZGUgYSBwbGFjZSBpbiBzeXNmcyBmb3Igc3RvcmluZyB0aGUgQVRBIHRvcG9sb2d5IG9mIHRoZSBzeXN0ZW0uICBUaGlzIGFsbG93cworcmV0cmlldmluZyB2YXJpb3VzIGluZm9ybWF0aW9uIGFib3V0IEFUQSBvYmplY3RzLgorCitGaWxlcyB1bmRlciAvc3lzL2NsYXNzL2F0YV9wb3J0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlGb3IgZWFjaCBwb3J0LCBhIGRpcmVjdG9yeSBhdGFYIGlzIGNyZWF0ZWQgd2hlcmUgWCBpcyB0aGUgYXRhX3BvcnRfaWQgb2YKKwl0aGUgcG9ydC4gVGhlIGRldmljZSBwYXJlbnQgaXMgdGhlIGF0YSBob3N0IGRldmljZS4KKworaWRsZV9pcnEgKHJlYWQpCisKKwlOdW1iZXIgb2YgSVJRIHJlY2VpdmVkIGJ5IHRoZSBwb3J0IHdoaWxlIGlkbGUgW3NvbWUgYXRhIEhCQSBvbmx5XS4KKworbnJfcG1wX2xpbmtzIChyZWFkKQorCisJSWYgYSBTQVRBIFBvcnQgTXVsdGlwbGllciAoUE0pIGlzIGNvbm5lY3RlZCwgbnVtYmVyIG9mIGxpbmsgYmVoaW5kIGl0LgorCitGaWxlcyB1bmRlciAvc3lzL2NsYXNzL2F0YV9saW5rCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlCZWhpbmQgZWFjaCBwb3J0LCB0aGVyZSBpcyBhIGF0YV9saW5rLiBJZiB0aGVyZSBpcyBhIFNBVEEgUE0gaW4gdGhlCisJdG9wb2xvZ3ksIDE1IGF0YV9saW5rIG9iamVjdHMgYXJlIGNyZWF0ZWQuCisKKwlJZiBhIGxpbmsgaXMgYmVoaW5kIGEgcG9ydCwgdGhlIGRpcmVjdG9yeSBuYW1lIGlzIGxpbmtYLCB3aGVyZSBYIGlzCisJYXRhX3BvcnRfaWQgb2YgdGhlIHBvcnQuCisJSWYgYSBsaW5rIGlzIGJlaGluZCBhIFBNLCBpdHMgbmFtZSBpcyBsaW5rWC5ZIHdoZXJlIFggaXMgYXRhX3BvcnRfaWQKKwlvZiB0aGUgcGFyZW50IHBvcnQgYW5kIFkgdGhlIFBNIHBvcnQuCisKK2h3X3NhdGFfc3BkX2xpbWl0CisKKwlNYXhpbXVtIHNwZWVkIHN1cHBvcnRlZCBieSB0aGUgY29ubmVjdGVkIFNBVEEgZGV2aWNlLgorCitzYXRhX3NwZF9saW1pdAorCisJTWF4aW11bSBzcGVlZCBpbXBvc2VkIGJ5IGxpYmF0YS4KKworc2F0YV9zcGQKKworCUN1cnJlbnQgc3BlZWQgb2YgdGhlIGxpbmsgWzEuNSwgM0dwcywuLi5dLgorCitGaWxlcyB1bmRlciAvc3lzL2NsYXNzL2F0YV9kZXZpY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJQmVoaW5kIGVhY2ggbGluaywgdXAgdG8gdHdvIGF0YSBkZXZpY2UgYXJlIGNyZWF0ZWQuCisJVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSBpcyBkZXZYWy5ZXS5aIHdoZXJlOgorCS0gWCBpcyBhdGFfcG9ydF9pZCBvZiB0aGUgcG9ydCB3aGVyZSB0aGUgZGV2aWNlIGlzIGNvbm5lY3RlZCwKKwktIFkgdGhlIHBvcnQgb2YgdGhlIFBNIGlmIGFueSwgYW5kCisJLSBaIHRoZSBkZXZpY2UgaWQ6IGZvciBQQVRBLCB0aGVyZSBpcyB1c3VhbGx5IDIgZGV2aWNlcyBbMCwxXSwKKwlvbmx5IDEgZm9yIFNBVEEuCisKK2NsYXNzCisJRGV2aWNlIGNsYXNzLiBDYW4gYmUgImF0YSIgZm9yIGRpc2ssICJhdGFwaSIgZm9yIHBhY2tldCBkZXZpY2UsCisJInBtcCIgZm9yIFBNLCBvciAibm9uZSIgaWYgbm8gZGV2aWNlIHdhcyBmb3VuZCBiZWhpbmQgdGhlIGxpbmsuCisKK2RtYV9tb2RlCisKKwlUcmFuc2ZlciBtb2RlcyBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZSB3aGVuIGluIERNQSBtb2RlLgorCU1vc3RseSB1c2VkIGJ5IFBBVEEgZGV2aWNlLgorCitwaW9fbW9kZQorCisJVHJhbnNmZXIgbW9kZXMgc3VwcG9ydGVkIGJ5IHRoZSBkZXZpY2Ugd2hlbiBpbiBQSU8gbW9kZS4KKwlNb3N0bHkgdXNlZCBieSBQQVRBIGRldmljZS4KKworeGZlcl9tb2RlCisKKwlDdXJyZW50IHRyYW5zZmVyIG1vZGUuCisKK2lkCisKKwlDYWNoZWQgcmVzdWx0IG9mIElERU5USUZZIGNvbW1hbmQsIGFzIGRlc2NyaWJlZCBpbiBBVEE4IDcuMTYgYW5kIDcuMTcuCisJT25seSB2YWxpZCBpZiB0aGUgZGV2aWNlIGlzIG5vdCBhIFBNLgorCitnc2NyCisKKwlDYWNoZWQgcmVzdWx0IG9mIHRoZSBkdW1wIG9mIFBNIEdTQ1IgcmVnaXN0ZXIuCisJVmFsaWQgcmVnaXN0ZXJzIGFyZToKKwkwOiAJU0FUQV9QTVBfR1NDUl9QUk9EX0lELAorCTE6IAlTQVRBX1BNUF9HU0NSX1JFViwKKwkyOiAJU0FUQV9QTVBfR1NDUl9QT1JUX0lORk8sCisJMzI6CVNBVEFfUE1QX0dTQ1JfRVJST1IsCisJMzM6CVNBVEFfUE1QX0dTQ1JfRVJST1JfRU4sCisJNjQ6CVNBVEFfUE1QX0dTQ1JfRkVBVCwKKwk5NjoJU0FUQV9QTVBfR1NDUl9GRUFUX0VOLAorCTEzMDoJU0FUQV9QTVBfR1NDUl9TSUlfR1BJTworCU9ubHkgdmFsaWQgaWYgdGhlIGRldmljZSBpcyBhIFBNLgorCit0cmltCisKKwlTaG93cyB0aGUgRFNNIFRSSU0gbW9kZSBjdXJyZW50bHkgdXNlZCBieSB0aGUgZGV2aWNlLiBWYWxpZAorCXZhbHVlcyBhcmU6CisJdW5zdXBwb3J0ZWQ6CQlEcml2ZSBkb2VzIG5vdCBzdXBwb3J0IERTTSBUUklNCisJdW5xdWV1ZWQ6CQlEcml2ZSBzdXBwb3J0cyB1bnF1ZXVlZCBEU00gVFJJTSBvbmx5CisJcXVldWVkOgkJCURyaXZlIHN1cHBvcnRzIHF1ZXVlZCBEU00gVFJJTQorCWZvcmNlZF91bnF1ZXVlZDoJRHJpdmUncyBxdWV1ZWQgRFNNIHN1cHBvcnQgaXMga25vd24gdG8gYmUKKwkJCQlidWdneSBhbmQgb25seSB1bnF1ZXVlZCBUUklNIGNvbW1hbmRzCisJCQkJYXJlIHNlbnQKKworc3Bkbl9jbnQKKworCU51bWJlciBvZiB0aW1lIGxpYmF0YSBkZWNpZGVkIHRvIGxvd2VyIHRoZSBzcGVlZCBvZiBsaW5rIGR1ZSB0byBlcnJvcnMuCisKK2VyaW5nCisKKwlGb3JtYXR0ZWQgb3V0cHV0IG9mIHRoZSBlcnJvciByaW5nIG9mIHRoZSBkZXZpY2UuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJsb2NrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1ibG9jawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWQxODRkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1ibG9jawpAQCAtMCwwICsxLDIzNyBAQAorV2hhdDoJCS9zeXMvYmxvY2svPGRpc2s+L3N0YXQKK0RhdGU6CQlGZWJydWFyeSAyMDA4CitDb250YWN0OglKZXJvbWUgTWFyY2hhbmQgPGptYXJjaGFuQHJlZGhhdC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvYmxvY2svPGRpc2s+L3N0YXQgZmlsZXMgZGlzcGxheXMgdGhlIEkvTworCQlzdGF0aXN0aWNzIG9mIGRpc2sgPGRpc2s+LiBUaGV5IGNvbnRhaW4gMTEgZmllbGRzOgorCQkgMSAtIHJlYWRzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKKwkJIDIgLSByZWFkcyBtZXJnZWQKKwkJIDMgLSBzZWN0b3JzIHJlYWQKKwkJIDQgLSB0aW1lIHNwZW50IHJlYWRpbmcgKG1zKQorCQkgNSAtIHdyaXRlcyBjb21wbGV0ZWQKKwkJIDYgLSB3cml0ZXMgbWVyZ2VkCisJCSA3IC0gc2VjdG9ycyB3cml0dGVuCisJCSA4IC0gdGltZSBzcGVudCB3cml0aW5nIChtcykKKwkJIDkgLSBJL09zIGN1cnJlbnRseSBpbiBwcm9ncmVzcworCQkxMCAtIHRpbWUgc3BlbnQgZG9pbmcgSS9PcyAobXMpCisJCTExIC0gd2VpZ2h0ZWQgdGltZSBzcGVudCBkb2luZyBJL09zIChtcykKKwkJRm9yIG1vcmUgZGV0YWlscyByZWZlciBEb2N1bWVudGF0aW9uL2lvc3RhdHMudHh0CisKKworV2hhdDoJCS9zeXMvYmxvY2svPGRpc2s+LzxwYXJ0Pi9zdGF0CitEYXRlOgkJRmVicnVhcnkgMjAwOAorQ29udGFjdDoJSmVyb21lIE1hcmNoYW5kIDxqbWFyY2hhbkByZWRoYXQuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2Jsb2NrLzxkaXNrPi88cGFydD4vc3RhdCBmaWxlcyBkaXNwbGF5IHRoZQorCQlJL08gc3RhdGlzdGljcyBvZiBwYXJ0aXRpb24gPHBhcnQ+LiBUaGUgZm9ybWF0IGlzIHRoZQorCQlzYW1lIGFzIHRoZSBhYm92ZS13cml0dGVuIC9zeXMvYmxvY2svPGRpc2s+L3N0YXQKKwkJZm9ybWF0LgorCisKK1doYXQ6CQkvc3lzL2Jsb2NrLzxkaXNrPi9pbnRlZ3JpdHkvZm9ybWF0CitEYXRlOgkJSnVuZSAyMDA4CitDb250YWN0OglNYXJ0aW4gSy4gUGV0ZXJzZW4gPG1hcnRpbi5wZXRlcnNlbkBvcmFjbGUuY29tPgorRGVzY3JpcHRpb246CisJCU1ldGFkYXRhIGZvcm1hdCBmb3IgaW50ZWdyaXR5IGNhcGFibGUgYmxvY2sgZGV2aWNlLgorCQlFLmcuIFQxMC1ESUYtVFlQRTEtQ1JDLgorCisKK1doYXQ6CQkvc3lzL2Jsb2NrLzxkaXNrPi9pbnRlZ3JpdHkvcmVhZF92ZXJpZnkKK0RhdGU6CQlKdW5lIDIwMDgKK0NvbnRhY3Q6CU1hcnRpbiBLLiBQZXRlcnNlbiA8bWFydGluLnBldGVyc2VuQG9yYWNsZS5jb20+CitEZXNjcmlwdGlvbjoKKwkJSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGJsb2NrIGxheWVyIHNob3VsZCB2ZXJpZnkgdGhlCisJCWludGVncml0eSBvZiByZWFkIHJlcXVlc3RzIHNlcnZpY2VkIGJ5IGRldmljZXMgdGhhdAorCQlzdXBwb3J0IHNlbmRpbmcgaW50ZWdyaXR5IG1ldGFkYXRhLgorCisKK1doYXQ6CQkvc3lzL2Jsb2NrLzxkaXNrPi9pbnRlZ3JpdHkvdGFnX3NpemUKK0RhdGU6CQlKdW5lIDIwMDgKK0NvbnRhY3Q6CU1hcnRpbiBLLiBQZXRlcnNlbiA8bWFydGluLnBldGVyc2VuQG9yYWNsZS5jb20+CitEZXNjcmlwdGlvbjoKKwkJTnVtYmVyIG9mIGJ5dGVzIG9mIGludGVncml0eSB0YWcgc3BhY2UgYXZhaWxhYmxlIHBlcgorCQk1MTIgYnl0ZXMgb2YgZGF0YS4KKworCitXaGF0OgkJL3N5cy9ibG9jay88ZGlzaz4vaW50ZWdyaXR5L2RldmljZV9pc19pbnRlZ3JpdHlfY2FwYWJsZQorRGF0ZToJCUp1bHkgMjAxNAorQ29udGFjdDoJTWFydGluIEsuIFBldGVyc2VuIDxtYXJ0aW4ucGV0ZXJzZW5Ab3JhY2xlLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgd2hldGhlciBhIHN0b3JhZ2UgZGV2aWNlIGlzIGNhcGFibGUgb2Ygc3RvcmluZworCQlpbnRlZ3JpdHkgbWV0YWRhdGEuIFNldCBpZiB0aGUgZGV2aWNlIGlzIFQxMCBQSS1jYXBhYmxlLgorCitXaGF0OgkJL3N5cy9ibG9jay88ZGlzaz4vaW50ZWdyaXR5L3Byb3RlY3Rpb25faW50ZXJ2YWxfYnl0ZXMKK0RhdGU6CQlKdWx5IDIwMTUKK0NvbnRhY3Q6CU1hcnRpbiBLLiBQZXRlcnNlbiA8bWFydGluLnBldGVyc2VuQG9yYWNsZS5jb20+CitEZXNjcmlwdGlvbjoKKwkJRGVzY3JpYmVzIHRoZSBudW1iZXIgb2YgZGF0YSBieXRlcyB3aGljaCBhcmUgcHJvdGVjdGVkCisJCWJ5IG9uZSBpbnRlZ3JpdHkgdHVwbGUuIFR5cGljYWxseSB0aGUgZGV2aWNlJ3MgbG9naWNhbAorCQlibG9jayBzaXplLgorCitXaGF0OgkJL3N5cy9ibG9jay88ZGlzaz4vaW50ZWdyaXR5L3dyaXRlX2dlbmVyYXRlCitEYXRlOgkJSnVuZSAyMDA4CitDb250YWN0OglNYXJ0aW4gSy4gUGV0ZXJzZW4gPG1hcnRpbi5wZXRlcnNlbkBvcmFjbGUuY29tPgorRGVzY3JpcHRpb246CisJCUluZGljYXRlcyB3aGV0aGVyIHRoZSBibG9jayBsYXllciBzaG91bGQgYXV0b21hdGljYWxseQorCQlnZW5lcmF0ZSBjaGVja3N1bXMgZm9yIHdyaXRlIHJlcXVlc3RzIGJvdW5kIGZvcgorCQlkZXZpY2VzIHRoYXQgc3VwcG9ydCByZWNlaXZpbmcgaW50ZWdyaXR5IG1ldGFkYXRhLgorCitXaGF0OgkJL3N5cy9ibG9jay88ZGlzaz4vYWxpZ25tZW50X29mZnNldAorRGF0ZToJCUFwcmlsIDIwMDkKK0NvbnRhY3Q6CU1hcnRpbiBLLiBQZXRlcnNlbiA8bWFydGluLnBldGVyc2VuQG9yYWNsZS5jb20+CitEZXNjcmlwdGlvbjoKKwkJU3RvcmFnZSBkZXZpY2VzIG1heSByZXBvcnQgYSBwaHlzaWNhbCBibG9jayBzaXplIHRoYXQgaXMKKwkJYmlnZ2VyIHRoYW4gdGhlIGxvZ2ljYWwgYmxvY2sgc2l6ZSAoZm9yIGluc3RhbmNlIGEgZHJpdmUKKwkJd2l0aCA0S0IgcGh5c2ljYWwgc2VjdG9ycyBleHBvc2luZyA1MTItYnl0ZSBsb2dpY2FsCisJCWJsb2NrcyB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbSkuICBUaGlzIHBhcmFtZXRlcgorCQlpbmRpY2F0ZXMgaG93IG1hbnkgYnl0ZXMgdGhlIGJlZ2lubmluZyBvZiB0aGUgZGV2aWNlIGlzCisJCW9mZnNldCBmcm9tIHRoZSBkaXNrJ3MgbmF0dXJhbCBhbGlnbm1lbnQuCisKK1doYXQ6CQkvc3lzL2Jsb2NrLzxkaXNrPi88cGFydGl0aW9uPi9hbGlnbm1lbnRfb2Zmc2V0CitEYXRlOgkJQXByaWwgMjAwOQorQ29udGFjdDoJTWFydGluIEsuIFBldGVyc2VuIDxtYXJ0aW4ucGV0ZXJzZW5Ab3JhY2xlLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlTdG9yYWdlIGRldmljZXMgbWF5IHJlcG9ydCBhIHBoeXNpY2FsIGJsb2NrIHNpemUgdGhhdCBpcworCQliaWdnZXIgdGhhbiB0aGUgbG9naWNhbCBibG9jayBzaXplIChmb3IgaW5zdGFuY2UgYSBkcml2ZQorCQl3aXRoIDRLQiBwaHlzaWNhbCBzZWN0b3JzIGV4cG9zaW5nIDUxMi1ieXRlIGxvZ2ljYWwKKwkJYmxvY2tzIHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtKS4gIFRoaXMgcGFyYW1ldGVyCisJCWluZGljYXRlcyBob3cgbWFueSBieXRlcyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXJ0aXRpb24KKwkJaXMgb2Zmc2V0IGZyb20gdGhlIGRpc2sncyBuYXR1cmFsIGFsaWdubWVudC4KKworV2hhdDoJCS9zeXMvYmxvY2svPGRpc2s+L3F1ZXVlL2xvZ2ljYWxfYmxvY2tfc2l6ZQorRGF0ZToJCU1heSAyMDA5CitDb250YWN0OglNYXJ0aW4gSy4gUGV0ZXJzZW4gPG1hcnRpbi5wZXRlcnNlbkBvcmFjbGUuY29tPgorRGVzY3JpcHRpb246CisJCVRoaXMgaXMgdGhlIHNtYWxsZXN0IHVuaXQgdGhlIHN0b3JhZ2UgZGV2aWNlIGNhbgorCQlhZGRyZXNzLiAgSXQgaXMgdHlwaWNhbGx5IDUxMiBieXRlcy4KKworV2hhdDoJCS9zeXMvYmxvY2svPGRpc2s+L3F1ZXVlL3BoeXNpY2FsX2Jsb2NrX3NpemUKK0RhdGU6CQlNYXkgMjAwOQorQ29udGFjdDoJTWFydGluIEsuIFBldGVyc2VuIDxtYXJ0aW4ucGV0ZXJzZW5Ab3JhY2xlLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGlzIHRoZSBzbWFsbGVzdCB1bml0IGEgcGh5c2ljYWwgc3RvcmFnZSBkZXZpY2UgY2FuCisJCXdyaXRlIGF0b21pY2FsbHkuICBJdCBpcyB1c3VhbGx5IHRoZSBzYW1lIGFzIHRoZSBsb2dpY2FsCisJCWJsb2NrIHNpemUgYnV0IG1heSBiZSBiaWdnZXIuICBPbmUgZXhhbXBsZSBpcyBTQVRBCisJCWRyaXZlcyB3aXRoIDRLQiBzZWN0b3JzIHRoYXQgZXhwb3NlIGEgNTEyLWJ5dGUgbG9naWNhbAorCQlibG9jayBzaXplIHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtLiAgRm9yIHN0YWNrZWQgYmxvY2sKKwkJZGV2aWNlcyB0aGUgcGh5c2ljYWxfYmxvY2tfc2l6ZSB2YXJpYWJsZSBjb250YWlucyB0aGUKKwkJbWF4aW11bSBwaHlzaWNhbF9ibG9ja19zaXplIG9mIHRoZSBjb21wb25lbnQgZGV2aWNlcy4KKworV2hhdDoJCS9zeXMvYmxvY2svPGRpc2s+L3F1ZXVlL21pbmltdW1faW9fc2l6ZQorRGF0ZToJCUFwcmlsIDIwMDkKK0NvbnRhY3Q6CU1hcnRpbiBLLiBQZXRlcnNlbiA8bWFydGluLnBldGVyc2VuQG9yYWNsZS5jb20+CitEZXNjcmlwdGlvbjoKKwkJU3RvcmFnZSBkZXZpY2VzIG1heSByZXBvcnQgYSBncmFudWxhcml0eSBvciBwcmVmZXJyZWQKKwkJbWluaW11bSBJL08gc2l6ZSB3aGljaCBpcyB0aGUgc21hbGxlc3QgcmVxdWVzdCB0aGUKKwkJZGV2aWNlIGNhbiBwZXJmb3JtIHdpdGhvdXQgaW5jdXJyaW5nIGEgcGVyZm9ybWFuY2UKKwkJcGVuYWx0eS4gIEZvciBkaXNrIGRyaXZlcyB0aGlzIGlzIG9mdGVuIHRoZSBwaHlzaWNhbAorCQlibG9jayBzaXplLiAgRm9yIFJBSUQgYXJyYXlzIGl0IGlzIG9mdGVuIHRoZSBzdHJpcGUKKwkJY2h1bmsgc2l6ZS4gIEEgcHJvcGVybHkgYWxpZ25lZCBtdWx0aXBsZSBvZgorCQltaW5pbXVtX2lvX3NpemUgaXMgdGhlIHByZWZlcnJlZCByZXF1ZXN0IHNpemUgZm9yCisJCXdvcmtsb2FkcyB3aGVyZSBhIGhpZ2ggbnVtYmVyIG9mIEkvTyBvcGVyYXRpb25zIGlzCisJCWRlc2lyZWQuCisKK1doYXQ6CQkvc3lzL2Jsb2NrLzxkaXNrPi9xdWV1ZS9vcHRpbWFsX2lvX3NpemUKK0RhdGU6CQlBcHJpbCAyMDA5CitDb250YWN0OglNYXJ0aW4gSy4gUGV0ZXJzZW4gPG1hcnRpbi5wZXRlcnNlbkBvcmFjbGUuY29tPgorRGVzY3JpcHRpb246CisJCVN0b3JhZ2UgZGV2aWNlcyBtYXkgcmVwb3J0IGFuIG9wdGltYWwgSS9PIHNpemUsIHdoaWNoIGlzCisJCXRoZSBkZXZpY2UncyBwcmVmZXJyZWQgdW5pdCBmb3Igc3VzdGFpbmVkIEkvTy4gIFRoaXMgaXMKKwkJcmFyZWx5IHJlcG9ydGVkIGZvciBkaXNrIGRyaXZlcy4gIEZvciBSQUlEIGFycmF5cyBpdCBpcworCQl1c3VhbGx5IHRoZSBzdHJpcGUgd2lkdGggb3IgdGhlIGludGVybmFsIHRyYWNrIHNpemUuICBBCisJCXByb3Blcmx5IGFsaWduZWQgbXVsdGlwbGUgb2Ygb3B0aW1hbF9pb19zaXplIGlzIHRoZQorCQlwcmVmZXJyZWQgcmVxdWVzdCBzaXplIGZvciB3b3JrbG9hZHMgd2hlcmUgc3VzdGFpbmVkCisJCXRocm91Z2hwdXQgaXMgZGVzaXJlZC4gIElmIG5vIG9wdGltYWwgSS9PIHNpemUgaXMKKwkJcmVwb3J0ZWQgdGhpcyBmaWxlIGNvbnRhaW5zIDAuCisKK1doYXQ6CQkvc3lzL2Jsb2NrLzxkaXNrPi9xdWV1ZS9ub21lcmdlcworRGF0ZToJCUphbnVhcnkgMjAxMAorQ29udGFjdDoKK0Rlc2NyaXB0aW9uOgorCQlTdGFuZGFyZCBJL08gZWxldmF0b3Igb3BlcmF0aW9ucyBpbmNsdWRlIGF0dGVtcHRzIHRvCisJCW1lcmdlIGNvbnRpZ3VvdXMgSS9Pcy4gRm9yIGtub3duIHJhbmRvbSBJL08gbG9hZHMgdGhlc2UKKwkJYXR0ZW1wdHMgd2lsbCBhbHdheXMgZmFpbCBhbmQgcmVzdWx0IGluIGV4dHJhIGN5Y2xlcworCQliZWluZyBzcGVudCBpbiB0aGUga2VybmVsLiBUaGlzIGFsbG93cyBvbmUgdG8gdHVybiBvZmYKKwkJdGhpcyBiZWhhdmlvciBvbiBvbmUgb2YgdHdvIHdheXM6IFdoZW4gc2V0IHRvIDEsIGNvbXBsZXgKKwkJbWVyZ2UgY2hlY2tzIGFyZSBkaXNhYmxlZCwgYnV0IHRoZSBzaW1wbGUgb25lLXNob3QgbWVyZ2VzCisJCXdpdGggdGhlIHByZXZpb3VzIEkvTyByZXF1ZXN0IGFyZSBlbmFibGVkLiBXaGVuIHNldCB0byAyLAorCQlhbGwgbWVyZ2UgdHJpZXMgYXJlIGRpc2FibGVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAwIC0KKwkJd2hpY2ggZW5hYmxlcyBhbGwgdHlwZXMgb2YgbWVyZ2UgdHJpZXMuCisKK1doYXQ6CQkvc3lzL2Jsb2NrLzxkaXNrPi9kaXNjYXJkX2FsaWdubWVudAorRGF0ZToJCU1heSAyMDExCitDb250YWN0OglNYXJ0aW4gSy4gUGV0ZXJzZW4gPG1hcnRpbi5wZXRlcnNlbkBvcmFjbGUuY29tPgorRGVzY3JpcHRpb246CisJCURldmljZXMgdGhhdCBzdXBwb3J0IGRpc2NhcmQgZnVuY3Rpb25hbGl0eSBtYXkKKwkJaW50ZXJuYWxseSBhbGxvY2F0ZSBzcGFjZSBpbiB1bml0cyB0aGF0IGFyZSBiaWdnZXIgdGhhbgorCQl0aGUgZXhwb3J0ZWQgbG9naWNhbCBibG9jayBzaXplLiBUaGUgZGlzY2FyZF9hbGlnbm1lbnQKKwkJcGFyYW1ldGVyIGluZGljYXRlcyBob3cgbWFueSBieXRlcyB0aGUgYmVnaW5uaW5nIG9mIHRoZQorCQlkZXZpY2UgaXMgb2Zmc2V0IGZyb20gdGhlIGludGVybmFsIGFsbG9jYXRpb24gdW5pdCdzCisJCW5hdHVyYWwgYWxpZ25tZW50LgorCitXaGF0OgkJL3N5cy9ibG9jay88ZGlzaz4vPHBhcnRpdGlvbj4vZGlzY2FyZF9hbGlnbm1lbnQKK0RhdGU6CQlNYXkgMjAxMQorQ29udGFjdDoJTWFydGluIEsuIFBldGVyc2VuIDxtYXJ0aW4ucGV0ZXJzZW5Ab3JhY2xlLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlEZXZpY2VzIHRoYXQgc3VwcG9ydCBkaXNjYXJkIGZ1bmN0aW9uYWxpdHkgbWF5CisJCWludGVybmFsbHkgYWxsb2NhdGUgc3BhY2UgaW4gdW5pdHMgdGhhdCBhcmUgYmlnZ2VyIHRoYW4KKwkJdGhlIGV4cG9ydGVkIGxvZ2ljYWwgYmxvY2sgc2l6ZS4gVGhlIGRpc2NhcmRfYWxpZ25tZW50CisJCXBhcmFtZXRlciBpbmRpY2F0ZXMgaG93IG1hbnkgYnl0ZXMgdGhlIGJlZ2lubmluZyBvZiB0aGUKKwkJcGFydGl0aW9uIGlzIG9mZnNldCBmcm9tIHRoZSBpbnRlcm5hbCBhbGxvY2F0aW9uIHVuaXQncworCQluYXR1cmFsIGFsaWdubWVudC4KKworV2hhdDoJCS9zeXMvYmxvY2svPGRpc2s+L3F1ZXVlL2Rpc2NhcmRfZ3JhbnVsYXJpdHkKK0RhdGU6CQlNYXkgMjAxMQorQ29udGFjdDoJTWFydGluIEsuIFBldGVyc2VuIDxtYXJ0aW4ucGV0ZXJzZW5Ab3JhY2xlLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlEZXZpY2VzIHRoYXQgc3VwcG9ydCBkaXNjYXJkIGZ1bmN0aW9uYWxpdHkgbWF5CisJCWludGVybmFsbHkgYWxsb2NhdGUgc3BhY2UgdXNpbmcgdW5pdHMgdGhhdCBhcmUgYmlnZ2VyCisJCXRoYW4gdGhlIGxvZ2ljYWwgYmxvY2sgc2l6ZS4gVGhlIGRpc2NhcmRfZ3JhbnVsYXJpdHkKKwkJcGFyYW1ldGVyIGluZGljYXRlcyB0aGUgc2l6ZSBvZiB0aGUgaW50ZXJuYWwgYWxsb2NhdGlvbgorCQl1bml0IGluIGJ5dGVzIGlmIHJlcG9ydGVkIGJ5IHRoZSBkZXZpY2UuIE90aGVyd2lzZSB0aGUKKwkJZGlzY2FyZF9ncmFudWxhcml0eSB3aWxsIGJlIHNldCB0byBtYXRjaCB0aGUgZGV2aWNlJ3MKKwkJcGh5c2ljYWwgYmxvY2sgc2l6ZS4gQSBkaXNjYXJkX2dyYW51bGFyaXR5IG9mIDAgbWVhbnMKKwkJdGhhdCB0aGUgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgZGlzY2FyZCBmdW5jdGlvbmFsaXR5LgorCitXaGF0OgkJL3N5cy9ibG9jay88ZGlzaz4vcXVldWUvZGlzY2FyZF9tYXhfYnl0ZXMKK0RhdGU6CQlNYXkgMjAxMQorQ29udGFjdDoJTWFydGluIEsuIFBldGVyc2VuIDxtYXJ0aW4ucGV0ZXJzZW5Ab3JhY2xlLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlEZXZpY2VzIHRoYXQgc3VwcG9ydCBkaXNjYXJkIGZ1bmN0aW9uYWxpdHkgbWF5IGhhdmUKKwkJaW50ZXJuYWwgbGltaXRzIG9uIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBjYW4gYmUKKwkJdHJpbW1lZCBvciB1bm1hcHBlZCBpbiBhIHNpbmdsZSBvcGVyYXRpb24uIFNvbWUgc3RvcmFnZQorCQlwcm90b2NvbHMgYWxzbyBoYXZlIGluaGVyZW50IGxpbWl0cyBvbiB0aGUgbnVtYmVyIG9mCisJCWJsb2NrcyB0aGF0IGNhbiBiZSBkZXNjcmliZWQgaW4gYSBzaW5nbGUgY29tbWFuZC4gVGhlCisJCWRpc2NhcmRfbWF4X2J5dGVzIHBhcmFtZXRlciBpcyBzZXQgYnkgdGhlIGRldmljZSBkcml2ZXIKKwkJdG8gdGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRoYXQgY2FuIGJlIGRpc2NhcmRlZCBpbgorCQlhIHNpbmdsZSBvcGVyYXRpb24uIERpc2NhcmQgcmVxdWVzdHMgaXNzdWVkIHRvIHRoZQorCQlkZXZpY2UgbXVzdCBub3QgZXhjZWVkIHRoaXMgbGltaXQuIEEgZGlzY2FyZF9tYXhfYnl0ZXMKKwkJdmFsdWUgb2YgMCBtZWFucyB0aGF0IHRoZSBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydAorCQlkaXNjYXJkIGZ1bmN0aW9uYWxpdHkuCisKK1doYXQ6CQkvc3lzL2Jsb2NrLzxkaXNrPi9xdWV1ZS9kaXNjYXJkX3plcm9lc19kYXRhCitEYXRlOgkJTWF5IDIwMTEKK0NvbnRhY3Q6CU1hcnRpbiBLLiBQZXRlcnNlbiA8bWFydGluLnBldGVyc2VuQG9yYWNsZS5jb20+CitEZXNjcmlwdGlvbjoKKwkJRGV2aWNlcyB0aGF0IHN1cHBvcnQgZGlzY2FyZCBmdW5jdGlvbmFsaXR5IG1heSByZXR1cm4KKwkJc3RhbGUgb3IgcmFuZG9tIGRhdGEgd2hlbiBhIHByZXZpb3VzbHkgZGlzY2FyZGVkIGJsb2NrCisJCWlzIHJlYWQgYmFjay4gVGhpcyBjYW4gY2F1c2UgcHJvYmxlbXMgaWYgdGhlIGZpbGVzeXN0ZW0KKwkJZXhwZWN0cyBkaXNjYXJkZWQgYmxvY2tzIHRvIGJlIGV4cGxpY2l0bHkgY2xlYXJlZC4gSWYgYQorCQlkZXZpY2UgcmVwb3J0cyB0aGF0IGl0IGRldGVybWluaXN0aWNhbGx5IHJldHVybnMgemVyb2VzCisJCXdoZW4gYSBkaXNjYXJkZWQgYXJlYSBpcyByZWFkIHRoZSBkaXNjYXJkX3plcm9lc19kYXRhCisJCXBhcmFtZXRlciB3aWxsIGJlIHNldCB0byBvbmUuIE90aGVyd2lzZSBpdCB3aWxsIGJlIDAgYW5kCisJCXRoZSByZXN1bHQgb2YgcmVhZGluZyBhIGRpc2NhcmRlZCBhcmVhIGlzIHVuZGVmaW5lZC4KKworV2hhdDoJCS9zeXMvYmxvY2svPGRpc2s+L3F1ZXVlL3dyaXRlX3NhbWVfbWF4X2J5dGVzCitEYXRlOgkJSmFudWFyeSAyMDEyCitDb250YWN0OglNYXJ0aW4gSy4gUGV0ZXJzZW4gPG1hcnRpbi5wZXRlcnNlbkBvcmFjbGUuY29tPgorRGVzY3JpcHRpb246CisJCVNvbWUgZGV2aWNlcyBzdXBwb3J0IGEgd3JpdGUgc2FtZSBvcGVyYXRpb24gaW4gd2hpY2ggYQorCQlzaW5nbGUgZGF0YSBibG9jayBjYW4gYmUgd3JpdHRlbiB0byBhIHJhbmdlIG9mIHNldmVyYWwKKwkJY29udGlndW91cyBibG9ja3Mgb24gc3RvcmFnZS4gVGhpcyBjYW4gYmUgdXNlZCB0byB3aXBlCisJCWFyZWFzIG9uIGRpc2sgb3IgdG8gaW5pdGlhbGl6ZSBkcml2ZXMgaW4gYSBSQUlECisJCWNvbmZpZ3VyYXRpb24uIHdyaXRlX3NhbWVfbWF4X2J5dGVzIGluZGljYXRlcyBob3cgbWFueQorCQlieXRlcyBjYW4gYmUgd3JpdHRlbiBpbiBhIHNpbmdsZSB3cml0ZSBzYW1lIGNvbW1hbmQuIElmCisJCXdyaXRlX3NhbWVfbWF4X2J5dGVzIGlzIDAsIHdyaXRlIHNhbWUgaXMgbm90IHN1cHBvcnRlZAorCQlieSB0aGUgZGV2aWNlLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJsb2NrLWJjYWNoZSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYmxvY2stYmNhY2hlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNGJiYzUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJsb2NrLWJjYWNoZQpAQCAtMCwwICsxLDE1NiBAQAorV2hhdDoJCS9zeXMvYmxvY2svPGRpc2s+L2JjYWNoZS91bnJlZ2lzdGVyCitEYXRlOgkJTm92ZW1iZXIgMjAxMAorQ29udGFjdDoJS2VudCBPdmVyc3RyZWV0IDxrZW50Lm92ZXJzdHJlZXRAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCUEgd3JpdGUgdG8gdGhpcyBmaWxlIGNhdXNlcyB0aGUgYmFja2luZyBkZXZpY2Ugb3IgY2FjaGUgdG8gYmUKKwkJdW5yZWdpc3RlcmVkLiBJZiBhIGJhY2tpbmcgZGV2aWNlIGhhZCBkaXJ0eSBkYXRhIGluIHRoZSBjYWNoZSwKKwkJd3JpdGViYWNrIG1vZGUgaXMgYXV0b21hdGljYWxseSBkaXNhYmxlZCBhbmQgYWxsIGRpcnR5IGRhdGEgaXMKKwkJZmx1c2hlZCBiZWZvcmUgdGhlIGRldmljZSBpcyB1bnJlZ2lzdGVyZWQuIENhY2hlcyB1bnJlZ2lzdGVyCisJCWFsbCBhc3NvY2lhdGVkIGJhY2tpbmcgZGV2aWNlcyBiZWZvcmUgdW5yZWdpc3RlcmluZyB0aGVtc2VsdmVzLgorCitXaGF0OgkJL3N5cy9ibG9jay88ZGlzaz4vYmNhY2hlL2NsZWFyX3N0YXRzCitEYXRlOgkJTm92ZW1iZXIgMjAxMAorQ29udGFjdDoJS2VudCBPdmVyc3RyZWV0IDxrZW50Lm92ZXJzdHJlZXRAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVdyaXRpbmcgdG8gdGhpcyBmaWxlIHJlc2V0cyBhbGwgdGhlIHN0YXRpc3RpY3MgZm9yIHRoZSBkZXZpY2UuCisKK1doYXQ6CQkvc3lzL2Jsb2NrLzxkaXNrPi9iY2FjaGUvY2FjaGUKK0RhdGU6CQlOb3ZlbWJlciAyMDEwCitDb250YWN0OglLZW50IE92ZXJzdHJlZXQgPGtlbnQub3ZlcnN0cmVldEBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJRm9yIGEgYmFja2luZyBkZXZpY2UgdGhhdCBoYXMgY2FjaGUsIGEgc3ltbGluayB0bworCQl0aGUgYmNhY2hlLyBkaXIgb2YgdGhhdCBjYWNoZS4KKworV2hhdDoJCS9zeXMvYmxvY2svPGRpc2s+L2JjYWNoZS9jYWNoZV9oaXRzCitEYXRlOgkJTm92ZW1iZXIgMjAxMAorQ29udGFjdDoJS2VudCBPdmVyc3RyZWV0IDxrZW50Lm92ZXJzdHJlZXRAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCUZvciBiYWNraW5nIGRldmljZXM6IGludGVnZXIgbnVtYmVyIG9mIGZ1bGwgY2FjaGUgaGl0cywKKwkJY291bnRlZCBwZXIgYmlvLiBBIHBhcnRpYWwgY2FjaGUgaGl0IGNvdW50cyBhcyBhIG1pc3MuCisKK1doYXQ6CQkvc3lzL2Jsb2NrLzxkaXNrPi9iY2FjaGUvY2FjaGVfbWlzc2VzCitEYXRlOgkJTm92ZW1iZXIgMjAxMAorQ29udGFjdDoJS2VudCBPdmVyc3RyZWV0IDxrZW50Lm92ZXJzdHJlZXRAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCUZvciBiYWNraW5nIGRldmljZXM6IGludGVnZXIgbnVtYmVyIG9mIGNhY2hlIG1pc3Nlcy4KKworV2hhdDoJCS9zeXMvYmxvY2svPGRpc2s+L2JjYWNoZS9jYWNoZV9oaXRfcmF0aW8KK0RhdGU6CQlOb3ZlbWJlciAyMDEwCitDb250YWN0OglLZW50IE92ZXJzdHJlZXQgPGtlbnQub3ZlcnN0cmVldEBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJRm9yIGJhY2tpbmcgZGV2aWNlczogY2FjaGUgaGl0cyBhcyBhIHBlcmNlbnRhZ2UuCisKK1doYXQ6CQkvc3lzL2Jsb2NrLzxkaXNrPi9iY2FjaGUvc2VxdWVudGlhbF9jdXRvZmYKK0RhdGU6CQlOb3ZlbWJlciAyMDEwCitDb250YWN0OglLZW50IE92ZXJzdHJlZXQgPGtlbnQub3ZlcnN0cmVldEBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJRm9yIGJhY2tpbmcgZGV2aWNlczogVGhyZXNob2xkIHBhc3Qgd2hpY2ggc2VxdWVudGlhbCBJTyB3aWxsCisJCXNraXAgdGhlIGNhY2hlLiBSZWFkIGFuZCB3cml0dGVuIGFzIGJ5dGVzIGluIGh1bWFuIHJlYWRhYmxlCisJCXVuaXRzIChpLmUuIGVjaG8gMTBNID4gc2VxdW50aWFsX2N1dG9mZikuCisKK1doYXQ6CQkvc3lzL2Jsb2NrLzxkaXNrPi9iY2FjaGUvYnlwYXNzZWQKK0RhdGU6CQlOb3ZlbWJlciAyMDEwCitDb250YWN0OglLZW50IE92ZXJzdHJlZXQgPGtlbnQub3ZlcnN0cmVldEBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJU3VtIG9mIGFsbCByZWFkcyBhbmQgd3JpdGVzIHRoYXQgaGF2ZSBieXBhc3NlZCB0aGUgY2FjaGUgKGR1ZQorCQl0byB0aGUgc2VxdWVudGlhbCBjdXRvZmYpLiAgRXhwcmVzc2VkIGFzIGJ5dGVzIGluIGh1bWFuCisJCXJlYWRhYmxlIHVuaXRzLgorCitXaGF0OgkJL3N5cy9ibG9jay88ZGlzaz4vYmNhY2hlL3dyaXRlYmFjaworRGF0ZToJCU5vdmVtYmVyIDIwMTAKK0NvbnRhY3Q6CUtlbnQgT3ZlcnN0cmVldCA8a2VudC5vdmVyc3RyZWV0QGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlGb3IgYmFja2luZyBkZXZpY2VzOiBXaGVuIG9uLCB3cml0ZWJhY2sgY2FjaGluZyBpcyBlbmFibGVkIGFuZAorCQl3cml0ZXMgd2lsbCBiZSBidWZmZXJlZCBpbiB0aGUgY2FjaGUuIFdoZW4gb2ZmLCBjYWNoaW5nIGlzIGluCisJCXdyaXRldGhyb3VnaCBtb2RlOyByZWFkcyBhbmQgd3JpdGVzIHdpbGwgYmUgYWRkZWQgdG8gdGhlCisJCWNhY2hlIGJ1dCBubyB3cml0ZSBidWZmZXJpbmcgd2lsbCB0YWtlIHBsYWNlLgorCitXaGF0OgkJL3N5cy9ibG9jay88ZGlzaz4vYmNhY2hlL3dyaXRlYmFja19ydW5uaW5nCitEYXRlOgkJTm92ZW1iZXIgMjAxMAorQ29udGFjdDoJS2VudCBPdmVyc3RyZWV0IDxrZW50Lm92ZXJzdHJlZXRAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCUZvciBiYWNraW5nIGRldmljZXM6IHdoZW4gb2ZmLCBkaXJ0eSBkYXRhIHdpbGwgbm90IGJlIHdyaXR0ZW4KKwkJZnJvbSB0aGUgY2FjaGUgdG8gdGhlIGJhY2tpbmcgZGV2aWNlLiBUaGUgY2FjaGUgd2lsbCBzdGlsbCBiZQorCQl1c2VkIHRvIGJ1ZmZlciB3cml0ZXMgdW50aWwgaXQgaXMgbW9zdGx5IGZ1bGwsIGF0IHdoaWNoIHBvaW50CisJCXdyaXRlcyB0cmFuc3BhcmVudGx5IHJldmVydCB0byB3cml0ZXRocm91Z2ggbW9kZS4gSW50ZW5kZWQgb25seQorCQlmb3IgYmVuY2htYXJraW5nL3Rlc3RpbmcuCisKK1doYXQ6CQkvc3lzL2Jsb2NrLzxkaXNrPi9iY2FjaGUvd3JpdGViYWNrX2RlbGF5CitEYXRlOgkJTm92ZW1iZXIgMjAxMAorQ29udGFjdDoJS2VudCBPdmVyc3RyZWV0IDxrZW50Lm92ZXJzdHJlZXRAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCUZvciBiYWNraW5nIGRldmljZXM6IEluIHdyaXRlYmFjayBtb2RlLCB3aGVuIGRpcnR5IGRhdGEgaXMKKwkJd3JpdHRlbiB0byB0aGUgY2FjaGUgYW5kIHRoZSBjYWNoZSBoZWxkIG5vIGRpcnR5IGRhdGEgZm9yIHRoYXQKKwkJYmFja2luZyBkZXZpY2UsIHdyaXRlYmFjayBmcm9tIGNhY2hlIHRvIGJhY2tpbmcgZGV2aWNlIHN0YXJ0cworCQlhZnRlciB0aGlzIGRlbGF5LCBleHByZXNzZWQgYXMgYW4gaW50ZWdlciBudW1iZXIgb2Ygc2Vjb25kcy4KKworV2hhdDoJCS9zeXMvYmxvY2svPGRpc2s+L2JjYWNoZS93cml0ZWJhY2tfcGVyY2VudAorRGF0ZToJCU5vdmVtYmVyIDIwMTAKK0NvbnRhY3Q6CUtlbnQgT3ZlcnN0cmVldCA8a2VudC5vdmVyc3RyZWV0QGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlGb3IgYmFja2luZyBkZXZpY2VzOiBJZiBub256ZXJvLCB3cml0ZWJhY2sgZnJvbSBjYWNoZSB0bworCQliYWNraW5nIGRldmljZSBvbmx5IHRha2VzIHBsYWNlIHdoZW4gbW9yZSB0aGFuIHRoaXMgcGVyY2VudGFnZQorCQlvZiB0aGUgY2FjaGUgaXMgdXNlZCwgYWxsb3dpbmcgbW9yZSB3cml0ZSBjb2FsZXNjaW5nIHRvIHRha2UKKwkJcGxhY2UgYW5kIHJlZHVjaW5nIHRvdGFsIG51bWJlciBvZiB3cml0ZXMgc2VudCB0byB0aGUgYmFja2luZworCQlkZXZpY2UuIEludGVnZXIgYmV0d2VlbiAwIGFuZCA0MC4KKworV2hhdDoJCS9zeXMvYmxvY2svPGRpc2s+L2JjYWNoZS9zeW5jaHJvbm91cworRGF0ZToJCU5vdmVtYmVyIDIwMTAKK0NvbnRhY3Q6CUtlbnQgT3ZlcnN0cmVldCA8a2VudC5vdmVyc3RyZWV0QGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlGb3IgYSBjYWNoZSwgYSBib29sZWFuIHRoYXQgYWxsb3dzIHN5bmNocm9ub3VzIG1vZGUgdG8gYmUKKwkJc3dpdGNoZWQgb24gYW5kIG9mZi4gSW4gc3luY2hyb25vdXMgbW9kZSBhbGwgd3JpdGVzIGFyZSBvcmRlcmVkCisJCXN1Y2ggdGhhdCB0aGUgY2FjaGUgY2FuIHJlbGlhYmx5IHJlY292ZXIgZnJvbSB1bmNsZWFuIHNodXRkb3duOworCQlpZiBkaXNhYmxlZCBiY2FjaGUgd2lsbCBub3QgZ2VuZXJhbGx5IHdhaXQgZm9yIHdyaXRlcyB0bworCQljb21wbGV0ZSBidXQgaWYgdGhlIGNhY2hlIGlzIG5vdCBzaHV0IGRvd24gY2xlYW5seSBhbGwgZGF0YQorCQl3aWxsIGJlIGRpc2NhcmRlZCBmcm9tIHRoZSBjYWNoZS4gU2hvdWxkIG5vdCBiZSB0dXJuZWQgb2ZmIHdpdGgKKwkJd3JpdGViYWNrIGNhY2hpbmcgZW5hYmxlZC4KKworV2hhdDoJCS9zeXMvYmxvY2svPGRpc2s+L2JjYWNoZS9kaXNjYXJkCitEYXRlOgkJTm92ZW1iZXIgMjAxMAorQ29udGFjdDoJS2VudCBPdmVyc3RyZWV0IDxrZW50Lm92ZXJzdHJlZXRAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCUZvciBhIGNhY2hlLCBhIGJvb2xlYW4gYWxsb3dpbmcgZGlzY2FyZC9UUklNIHRvIGJlIHR1cm5lZCBvZmYKKwkJb3IgYmFjayBvbiBpZiB0aGUgZGV2aWNlIHN1cHBvcnRzIGl0LgorCitXaGF0OgkJL3N5cy9ibG9jay88ZGlzaz4vYmNhY2hlL2J1Y2tldF9zaXplCitEYXRlOgkJTm92ZW1iZXIgMjAxMAorQ29udGFjdDoJS2VudCBPdmVyc3RyZWV0IDxrZW50Lm92ZXJzdHJlZXRAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCUZvciBhIGNhY2hlLCBidWNrZXQgc2l6ZSBpbiBodW1hbiByZWFkYWJsZSB1bml0cywgYXMgc2V0IGF0CisJCWNhY2hlIGNyZWF0aW9uIHRpbWU7IHNob3VsZCBtYXRjaCB0aGUgZXJhc2UgYmxvY2sgc2l6ZSBvZiB0aGUKKwkJU1NEIGZvciBvcHRpbWFsIHBlcmZvcm1hbmNlLgorCitXaGF0OgkJL3N5cy9ibG9jay88ZGlzaz4vYmNhY2hlL25idWNrZXRzCitEYXRlOgkJTm92ZW1iZXIgMjAxMAorQ29udGFjdDoJS2VudCBPdmVyc3RyZWV0IDxrZW50Lm92ZXJzdHJlZXRAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCUZvciBhIGNhY2hlLCB0aGUgbnVtYmVyIG9mIHVzYWJsZSBidWNrZXRzLgorCitXaGF0OgkJL3N5cy9ibG9jay88ZGlzaz4vYmNhY2hlL3RyZWVfZGVwdGgKK0RhdGU6CQlOb3ZlbWJlciAyMDEwCitDb250YWN0OglLZW50IE92ZXJzdHJlZXQgPGtlbnQub3ZlcnN0cmVldEBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJRm9yIGEgY2FjaGUsIGhlaWdodCBvZiB0aGUgYnRyZWUgZXhjbHVkaW5nIGxlYWYgbm9kZXMgKGkuZS4gYQorCQlvbmUgbm9kZSB0cmVlIHdpbGwgaGF2ZSBhIGRlcHRoIG9mIDApLgorCitXaGF0OgkJL3N5cy9ibG9jay88ZGlzaz4vYmNhY2hlL2J0cmVlX2NhY2hlX3NpemUKK0RhdGU6CQlOb3ZlbWJlciAyMDEwCitDb250YWN0OglLZW50IE92ZXJzdHJlZXQgPGtlbnQub3ZlcnN0cmVldEBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJTnVtYmVyIG9mIGJ0cmVlIGJ1Y2tldHMvbm9kZXMgdGhhdCBhcmUgY3VycmVudGx5IGNhY2hlZCBpbgorCQltZW1vcnk7IGNhY2hlIGR5bmFtaWNhbGx5IGdyb3dzIGFuZCBzaHJpbmtzIGluIHJlc3BvbnNlIHRvCisJCW1lbW9yeSBwcmVzc3VyZSBmcm9tIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uCisKK1doYXQ6CQkvc3lzL2Jsb2NrLzxkaXNrPi9iY2FjaGUvd3JpdHRlbgorRGF0ZToJCU5vdmVtYmVyIDIwMTAKK0NvbnRhY3Q6CUtlbnQgT3ZlcnN0cmVldCA8a2VudC5vdmVyc3RyZWV0QGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlGb3IgYSBjYWNoZSwgdG90YWwgYW1vdW50IG9mIGRhdGEgaW4gaHVtYW4gcmVhZGFibGUgdW5pdHMKKwkJd3JpdHRlbiB0byB0aGUgY2FjaGUsIGV4Y2x1ZGluZyBhbGwgbWV0YWRhdGEuCisKK1doYXQ6CQkvc3lzL2Jsb2NrLzxkaXNrPi9iY2FjaGUvYnRyZWVfd3JpdHRlbgorRGF0ZToJCU5vdmVtYmVyIDIwMTAKK0NvbnRhY3Q6CUtlbnQgT3ZlcnN0cmVldCA8a2VudC5vdmVyc3RyZWV0QGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlGb3IgYSBjYWNoZSwgc3VtIG9mIGFsbCBidHJlZSB3cml0ZXMgaW4gaHVtYW4gcmVhZGFibGUgdW5pdHMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJsb2NrLWRtIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1ibG9jay1kbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWYyMzM5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1ibG9jay1kbQpAQCAtMCwwICsxLDQ3IEBACitXaGF0OgkJL3N5cy9ibG9jay9kbS08bnVtPi9kbS9uYW1lCitEYXRlOgkJSmFudWFyeSAyMDA5CitLZXJuZWxWZXJzaW9uOgkyLjYuMjkKK0NvbnRhY3Q6CWRtLWRldmVsQHJlZGhhdC5jb20KK0Rlc2NyaXB0aW9uOglEZXZpY2UtbWFwcGVyIGRldmljZSBuYW1lLgorCQlSZWFkLW9ubHkgc3RyaW5nIGNvbnRhaW5pbmcgbWFwcGVkIGRldmljZSBuYW1lLgorVXNlcnM6CQl1dGlsLWxpbnV4LCBkZXZpY2UtbWFwcGVyIHVkZXYgcnVsZXMKKworV2hhdDoJCS9zeXMvYmxvY2svZG0tPG51bT4vZG0vdXVpZAorRGF0ZToJCUphbnVhcnkgMjAwOQorS2VybmVsVmVyc2lvbjoJMi42LjI5CitDb250YWN0OglkbS1kZXZlbEByZWRoYXQuY29tCitEZXNjcmlwdGlvbjoJRGV2aWNlLW1hcHBlciBkZXZpY2UgVVVJRC4KKwkJUmVhZC1vbmx5IHN0cmluZyBjb250YWluaW5nIERNLVVVSUQgb3IgZW1wdHkgc3RyaW5nCisJCWlmIERNLVVVSUQgaXMgbm90IHNldC4KK1VzZXJzOgkJdXRpbC1saW51eCwgZGV2aWNlLW1hcHBlciB1ZGV2IHJ1bGVzCisKK1doYXQ6CQkvc3lzL2Jsb2NrL2RtLTxudW0+L2RtL3N1c3BlbmRlZAorRGF0ZToJCUp1bmUgMjAwOQorS2VybmVsVmVyc2lvbjoJMi42LjMxCitDb250YWN0OglkbS1kZXZlbEByZWRoYXQuY29tCitEZXNjcmlwdGlvbjoJRGV2aWNlLW1hcHBlciBkZXZpY2Ugc3VzcGVuZCBzdGF0ZS4KKwkJQ29udGFpbnMgdGhlIHZhbHVlIDEgd2hpbGUgdGhlIGRldmljZSBpcyBzdXNwZW5kZWQuCisJCU90aGVyd2lzZSBpdCBjb250YWlucyAwLiBSZWFkLW9ubHkgYXR0cmlidXRlLgorVXNlcnM6CQl1dGlsLWxpbnV4LCBkZXZpY2UtbWFwcGVyIHVkZXYgcnVsZXMKKworV2hhdDoJCS9zeXMvYmxvY2svZG0tPG51bT4vZG0vcnFfYmFzZWRfc2VxX2lvX21lcmdlX2RlYWRsaW5lCitEYXRlOgkJTWFyY2ggMjAxNQorS2VybmVsVmVyc2lvbjoJNC4xCitDb250YWN0OglkbS1kZXZlbEByZWRoYXQuY29tCitEZXNjcmlwdGlvbjoJQWxsb3cgY29udHJvbCBvdmVyIGhvdyBsb25nIGEgcmVxdWVzdCB0aGF0IGlzIGEKKwkJcmVhc29uYWJsZSBtZXJnZSBjYW5kaWRhdGUgY2FuIGJlIHF1ZXVlZCBvbiB0aGUgcmVxdWVzdAorCQlxdWV1ZS4gIFRoZSByZXNvbHV0aW9uIG9mIHRoaXMgZGVhZGxpbmUgaXMgaW4KKwkJbWljcm9zZWNvbmRzIChyYW5naW5nIGZyb20gMSB0byAxMDAwMDAgdXNlY3MpLgorCQlTZXR0aW5nIHRoaXMgYXR0cmlidXRlIHRvIDAgKHRoZSBkZWZhdWx0KSB3aWxsIGRpc2FibGUKKwkJcmVxdWVzdC1iYXNlZCBETSdzIG1lcmdlIGhldXJpc3RpYyBhbmQgYXNzb2NpYXRlZCBleHRyYQorCQlhY2NvdW50aW5nLiAgVGhpcyBhdHRyaWJ1dGUgaXMgbm90IGFwcGxpY2FibGUgdG8KKwkJYmlvLWJhc2VkIERNIGRldmljZXMgc28gaXQgd2lsbCBvbmx5IGV2ZXIgcmVwb3J0IDAgZm9yCisJCXRoZW0uCisKK1doYXQ6CQkvc3lzL2Jsb2NrL2RtLTxudW0+L2RtL3VzZV9ibGtfbXEKK0RhdGU6CQlNYXJjaCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjEKK0NvbnRhY3Q6CWRtLWRldmVsQHJlZGhhdC5jb20KK0Rlc2NyaXB0aW9uOglSZXF1ZXN0LWJhc2VkIERldmljZS1tYXBwZXIgYmxrLW1xIEkvTyBwYXRoIG1vZGUuCisJCUNvbnRhaW5zIHRoZSB2YWx1ZSAxIGlmIHRoZSBkZXZpY2UgaXMgdXNpbmcgYmxrLW1xLgorCQlPdGhlcndpc2UgaXQgY29udGFpbnMgMC4gUmVhZC1vbmx5IGF0dHJpYnV0ZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYmxvY2stcnNzZCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYmxvY2stcnNzZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWVmMzBjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1ibG9jay1yc3NkCkBAIC0wLDAgKzEsNSBAQAorV2hhdDogICAgICAgICAgIC9zeXMvYmxvY2svcnNzZCovc3RhdHVzCitEYXRlOiAgICAgICAgICAgQXByaWwgMjAxMgorS2VybmVsVmVyc2lvbjogIDMuNAorQ29udGFjdDogICAgICAgIEFzYWkgVGhhbWJpIFMgUCA8YXNhbXltdXRodXBhQG1pY3Jvbi5jb20+CitEZXNjcmlwdGlvbjogICAgVGhpcyBpcyBhIHJlYWQtb25seSBmaWxlLiBJbmRpY2F0ZXMgdGhlIHN0YXR1cyBvZiB0aGUgZGV2aWNlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1ibG9jay16cmFtIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1ibG9jay16cmFtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlNjllODMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJsb2NrLXpyYW0KQEAgLTAsMCArMSwxNjggQEAKK1doYXQ6CQkvc3lzL2Jsb2NrL3pyYW08aWQ+L2Rpc2tzaXplCitEYXRlOgkJQXVndXN0IDIwMTAKK0NvbnRhY3Q6CU5pdGluIEd1cHRhIDxuZ3VwdGFAdmZsYXJlLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgZGlza3NpemUgZmlsZSBpcyByZWFkLXdyaXRlIGFuZCBzcGVjaWZpZXMgdGhlIGRpc2sgc2l6ZQorCQl3aGljaCByZXByZXNlbnRzIHRoZSBsaW1pdCBvbiB0aGUgKnVuY29tcHJlc3NlZCogd29ydGggb2YgZGF0YQorCQl0aGF0IGNhbiBiZSBzdG9yZWQgaW4gdGhpcyBkaXNrLgorCQlVbml0OiBieXRlcworCitXaGF0OgkJL3N5cy9ibG9jay96cmFtPGlkPi9pbml0c3RhdGUKK0RhdGU6CQlBdWd1c3QgMjAxMAorQ29udGFjdDoJTml0aW4gR3VwdGEgPG5ndXB0YUB2ZmxhcmUub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSBpbml0c3RhdGUgZmlsZSBpcyByZWFkLW9ubHkgYW5kIHNob3dzIHRoZSBpbml0aWFsaXphdGlvbgorCQlzdGF0ZSBvZiB0aGUgZGV2aWNlLgorCitXaGF0OgkJL3N5cy9ibG9jay96cmFtPGlkPi9yZXNldAorRGF0ZToJCUF1Z3VzdCAyMDEwCitDb250YWN0OglOaXRpbiBHdXB0YSA8bmd1cHRhQHZmbGFyZS5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIHJlc2V0IGZpbGUgaXMgd3JpdGUtb25seSBhbmQgYWxsb3dzIHJlc2V0dGluZyB0aGUKKwkJZGV2aWNlLiBUaGUgcmVzZXQgb3BlcmF0aW9uIGZyZWVzIGFsbCB0aGUgbWVtb3J5IGFzc29jaWF0ZWQKKwkJd2l0aCB0aGlzIGRldmljZS4KKworV2hhdDoJCS9zeXMvYmxvY2svenJhbTxpZD4vbnVtX3JlYWRzCitEYXRlOgkJQXVndXN0IDIwMTAKK0NvbnRhY3Q6CU5pdGluIEd1cHRhIDxuZ3VwdGFAdmZsYXJlLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgbnVtX3JlYWRzIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZgorCQlyZWFkcyAoZmFpbGVkIG9yIHN1Y2Nlc3NmdWwpIGRvbmUgb24gdGhpcyBkZXZpY2UuCisKK1doYXQ6CQkvc3lzL2Jsb2NrL3pyYW08aWQ+L251bV93cml0ZXMKK0RhdGU6CQlBdWd1c3QgMjAxMAorQ29udGFjdDoJTml0aW4gR3VwdGEgPG5ndXB0YUB2ZmxhcmUub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSBudW1fd3JpdGVzIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZgorCQl3cml0ZXMgKGZhaWxlZCBvciBzdWNjZXNzZnVsKSBkb25lIG9uIHRoaXMgZGV2aWNlLgorCitXaGF0OgkJL3N5cy9ibG9jay96cmFtPGlkPi9pbnZhbGlkX2lvCitEYXRlOgkJQXVndXN0IDIwMTAKK0NvbnRhY3Q6CU5pdGluIEd1cHRhIDxuZ3VwdGFAdmZsYXJlLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgaW52YWxpZF9pbyBmaWxlIGlzIHJlYWQtb25seSBhbmQgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YKKwkJbm9uLXBhZ2Utc2l6ZS1hbGlnbmVkIEkvTyByZXF1ZXN0cyBpc3N1ZWQgdG8gdGhpcyBkZXZpY2UuCisKK1doYXQ6CQkvc3lzL2Jsb2NrL3pyYW08aWQ+L2ZhaWxlZF9yZWFkcworRGF0ZToJCUZlYnJ1YXJ5IDIwMTQKK0NvbnRhY3Q6CVNlcmdleSBTZW5vemhhdHNreSA8c2VyZ2V5LnNlbm96aGF0c2t5QGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgZmFpbGVkX3JlYWRzIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZgorCQlmYWlsZWQgcmVhZHMgaGFwcGVuZWQgb24gdGhpcyBkZXZpY2UuCisKK1doYXQ6CQkvc3lzL2Jsb2NrL3pyYW08aWQ+L2ZhaWxlZF93cml0ZXMKK0RhdGU6CQlGZWJydWFyeSAyMDE0CitDb250YWN0OglTZXJnZXkgU2Vub3poYXRza3kgPHNlcmdleS5zZW5vemhhdHNreUBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIGZhaWxlZF93cml0ZXMgZmlsZSBpcyByZWFkLW9ubHkgYW5kIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mCisJCWZhaWxlZCB3cml0ZXMgaGFwcGVuZWQgb24gdGhpcyBkZXZpY2UuCisKK1doYXQ6CQkvc3lzL2Jsb2NrL3pyYW08aWQ+L21heF9jb21wX3N0cmVhbXMKK0RhdGU6CQlGZWJydWFyeSAyMDE0CitDb250YWN0OglTZXJnZXkgU2Vub3poYXRza3kgPHNlcmdleS5zZW5vemhhdHNreUBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIG1heF9jb21wX3N0cmVhbXMgZmlsZSBpcyByZWFkLXdyaXRlIGFuZCBzcGVjaWZpZXMgdGhlCisJCW51bWJlciBvZiBiYWNrZW5kJ3MgemNvbXBfc3RybSBjb21wcmVzc2lvbiBzdHJlYW1zIChudW1iZXIgb2YKKwkJY29uY3VycmVudCBjb21wcmVzcyBvcGVyYXRpb25zKS4KKworV2hhdDoJCS9zeXMvYmxvY2svenJhbTxpZD4vY29tcF9hbGdvcml0aG0KK0RhdGU6CQlGZWJydWFyeSAyMDE0CitDb250YWN0OglTZXJnZXkgU2Vub3poYXRza3kgPHNlcmdleS5zZW5vemhhdHNreUBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIGNvbXBfYWxnb3JpdGhtIGZpbGUgaXMgcmVhZC13cml0ZSBhbmQgbGV0cyB0byBzaG93CisJCWF2YWlsYWJsZSBhbmQgc2VsZWN0ZWQgY29tcHJlc3Npb24gYWxnb3JpdGhtcywgY2hhbmdlCisJCWNvbXByZXNzaW9uIGFsZ29yaXRobSBzZWxlY3Rpb24uCisKK1doYXQ6CQkvc3lzL2Jsb2NrL3pyYW08aWQ+L25vdGlmeV9mcmVlCitEYXRlOgkJQXVndXN0IDIwMTAKK0NvbnRhY3Q6CU5pdGluIEd1cHRhIDxuZ3VwdGFAdmZsYXJlLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgbm90aWZ5X2ZyZWUgZmlsZSBpcyByZWFkLW9ubHkuIERlcGVuZGluZyBvbiBkZXZpY2UgdXNhZ2UKKwkJc2NlbmFyaW8gaXQgbWF5IGFjY291bnQgYSkgdGhlIG51bWJlciBvZiBwYWdlcyBmcmVlZCBiZWNhdXNlCisJCW9mIHN3YXAgc2xvdCBmcmVlIG5vdGlmaWNhdGlvbnMgb3IgYikgdGhlIG51bWJlciBvZiBwYWdlcyBmcmVlZAorCQliZWNhdXNlIG9mIFJFUV9ESVNDQVJEIHJlcXVlc3RzIHNlbnQgYnkgYmlvLiBUaGUgZm9ybWVyIG9uZXMKKwkJYXJlIHNlbnQgdG8gYSBzd2FwIGJsb2NrIGRldmljZSB3aGVuIGEgc3dhcCBzbG90IGlzIGZyZWVkLCB3aGljaAorCQlpbXBsaWVzIHRoYXQgdGhpcyBkaXNrIGlzIGJlaW5nIHVzZWQgYXMgYSBzd2FwIGRpc2suIFRoZSBsYXR0ZXIKKwkJb25lcyBhcmUgc2VudCBieSBmaWxlc3lzdGVtIG1vdW50ZWQgd2l0aCBkaXNjYXJkIG9wdGlvbiwKKwkJd2hlbmV2ZXIgc29tZSBkYXRhIGJsb2NrcyBhcmUgZ2V0dGluZyBkaXNjYXJkZWQuCisKK1doYXQ6CQkvc3lzL2Jsb2NrL3pyYW08aWQ+L3plcm9fcGFnZXMKK0RhdGU6CQlBdWd1c3QgMjAxMAorQ29udGFjdDoJTml0aW4gR3VwdGEgPG5ndXB0YUB2ZmxhcmUub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSB6ZXJvX3BhZ2VzIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBzcGVjaWZpZXMgbnVtYmVyIG9mIHplcm8KKwkJZmlsbGVkIHBhZ2VzIHdyaXR0ZW4gdG8gdGhpcyBkaXNrLiBObyBtZW1vcnkgaXMgYWxsb2NhdGVkIGZvcgorCQlzdWNoIHBhZ2VzLgorCitXaGF0OgkJL3N5cy9ibG9jay96cmFtPGlkPi9vcmlnX2RhdGFfc2l6ZQorRGF0ZToJCUF1Z3VzdCAyMDEwCitDb250YWN0OglOaXRpbiBHdXB0YSA8bmd1cHRhQHZmbGFyZS5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIG9yaWdfZGF0YV9zaXplIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBzcGVjaWZpZXMgdW5jb21wcmVzc2VkCisJCXNpemUgb2YgZGF0YSBzdG9yZWQgaW4gdGhpcyBkaXNrLiBUaGlzIGV4Y2x1ZGVzIHplcm8tZmlsbGVkCisJCXBhZ2VzICh6ZXJvX3BhZ2VzKSBzaW5jZSBubyBtZW1vcnkgaXMgYWxsb2NhdGVkIGZvciB0aGVtLgorCQlVbml0OiBieXRlcworCitXaGF0OgkJL3N5cy9ibG9jay96cmFtPGlkPi9jb21wcl9kYXRhX3NpemUKK0RhdGU6CQlBdWd1c3QgMjAxMAorQ29udGFjdDoJTml0aW4gR3VwdGEgPG5ndXB0YUB2ZmxhcmUub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSBjb21wcl9kYXRhX3NpemUgZmlsZSBpcyByZWFkLW9ubHkgYW5kIHNwZWNpZmllcyBjb21wcmVzc2VkCisJCXNpemUgb2YgZGF0YSBzdG9yZWQgaW4gdGhpcyBkaXNrLiBTbywgY29tcHJlc3Npb24gcmF0aW8gY2FuIGJlCisJCWNhbGN1bGF0ZWQgdXNpbmcgb3JpZ19kYXRhX3NpemUgYW5kIHRoaXMgc3RhdGlzdGljLgorCQlVbml0OiBieXRlcworCitXaGF0OgkJL3N5cy9ibG9jay96cmFtPGlkPi9tZW1fdXNlZF90b3RhbAorRGF0ZToJCUF1Z3VzdCAyMDEwCitDb250YWN0OglOaXRpbiBHdXB0YSA8bmd1cHRhQHZmbGFyZS5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIG1lbV91c2VkX3RvdGFsIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBzcGVjaWZpZXMgdGhlIGFtb3VudAorCQlvZiBtZW1vcnksIGluY2x1ZGluZyBhbGxvY2F0b3IgZnJhZ21lbnRhdGlvbiBhbmQgbWV0YWRhdGEKKwkJb3ZlcmhlYWQsIGFsbG9jYXRlZCBmb3IgdGhpcyBkaXNrLiBTbywgYWxsb2NhdG9yIHNwYWNlCisJCWVmZmljaWVuY3kgY2FuIGJlIGNhbGN1bGF0ZWQgdXNpbmcgY29tcHJfZGF0YV9zaXplIGFuZCB0aGlzCisJCXN0YXRpc3RpYy4KKwkJVW5pdDogYnl0ZXMKKworV2hhdDoJCS9zeXMvYmxvY2svenJhbTxpZD4vbWVtX3VzZWRfbWF4CitEYXRlOgkJQXVndXN0IDIwMTQKK0NvbnRhY3Q6CU1pbmNoYW4gS2ltIDxtaW5jaGFuQGtlcm5lbC5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIG1lbV91c2VkX21heCBmaWxlIGlzIHJlYWQvd3JpdGUgYW5kIHNwZWNpZmllcyB0aGUgYW1vdW50CisJCW9mIG1heGltdW0gbWVtb3J5IHpyYW0gaGF2ZSBjb25zdW1lZCB0byBzdG9yZSBjb21wcmVzc2VkIGRhdGEuCisJCUZvciByZXNldHRpbmcgdGhlIHZhbHVlLCB5b3Ugc2hvdWxkIHdyaXRlICIwIi4gT3RoZXJ3aXNlLAorCQl5b3UgY291bGQgc2VlIC1FSU5WQUwuCisJCVVuaXQ6IGJ5dGVzCisKK1doYXQ6CQkvc3lzL2Jsb2NrL3pyYW08aWQ+L21lbV9saW1pdAorRGF0ZToJCUF1Z3VzdCAyMDE0CitDb250YWN0OglNaW5jaGFuIEtpbSA8bWluY2hhbkBrZXJuZWwub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSBtZW1fbGltaXQgZmlsZSBpcyByZWFkL3dyaXRlIGFuZCBzcGVjaWZpZXMgdGhlIG1heGltdW0KKwkJYW1vdW50IG9mIG1lbW9yeSBaUkFNIGNhbiB1c2UgdG8gc3RvcmUgdGhlIGNvbXByZXNzZWQgZGF0YS4gIFRoZQorCQlsaW1pdCBjb3VsZCBiZSBjaGFuZ2VkIGluIHJ1biB0aW1lIGFuZCAiMCIgbWVhbnMgZGlzYWJsZSB0aGUKKwkJbGltaXQuICBObyBsaW1pdCBpcyB0aGUgaW5pdGlhbCBzdGF0ZS4gIFVuaXQ6IGJ5dGVzCisKK1doYXQ6CQkvc3lzL2Jsb2NrL3pyYW08aWQ+L2NvbXBhY3QKK0RhdGU6CQlBdWd1c3QgMjAxNQorQ29udGFjdDoJTWluY2hhbiBLaW0gPG1pbmNoYW5Aa2VybmVsLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgY29tcGFjdCBmaWxlIGlzIHdyaXRlLW9ubHkgYW5kIHRyaWdnZXIgY29tcGFjdGlvbiBmb3IKKwkJYWxsb2NhdG9yIHpybSB1c2VzLiBUaGUgYWxsb2NhdG9yIG1vdmVzIHNvbWUgb2JqZWN0cyBzbyB0aGF0CisJCWl0IGNvdWxkIGZyZWUgZnJhZ21lbnQgc3BhY2UuCisKK1doYXQ6CQkvc3lzL2Jsb2NrL3pyYW08aWQ+L2lvX3N0YXQKK0RhdGU6CQlBdWd1c3QgMjAxNQorQ29udGFjdDoJU2VyZ2V5IFNlbm96aGF0c2t5IDxzZXJnZXkuc2Vub3poYXRza3lAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSBpb19zdGF0IGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBhY2N1bXVsYXRlcyBkZXZpY2UncyBJL08KKwkJc3RhdGlzdGljcyBub3QgYWNjb3VudGVkIGJ5IGJsb2NrIGxheWVyLiBGb3IgZXhhbXBsZSwKKwkJZmFpbGVkX3JlYWRzLCBmYWlsZWRfd3JpdGVzLCBldGMuIEZpbGUgZm9ybWF0IGlzIHNpbWlsYXIgdG8KKwkJYmxvY2sgbGF5ZXIgc3RhdGlzdGljcyBmaWxlIGZvcm1hdC4KKworV2hhdDoJCS9zeXMvYmxvY2svenJhbTxpZD4vbW1fc3RhdAorRGF0ZToJCUF1Z3VzdCAyMDE1CitDb250YWN0OglTZXJnZXkgU2Vub3poYXRza3kgPHNlcmdleS5zZW5vemhhdHNreUBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIG1tX3N0YXQgZmlsZSBpcyByZWFkLW9ubHkgYW5kIHJlcHJlc2VudHMgZGV2aWNlJ3MgbW0KKwkJc3RhdGlzdGljcyAob3JpZ19kYXRhX3NpemUsIGNvbXByX2RhdGFfc2l6ZSwgZXRjLikgaW4gYSBmb3JtYXQKKwkJc2ltaWxhciB0byBibG9jayBsYXllciBzdGF0aXN0aWNzIGZpbGUgZm9ybWF0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtYWNwaSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWFjcGkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZhOWNiYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWFjcGkKQEAgLTAsMCArMSw1OCBAQAorV2hhdDoJCS9zeXMvYnVzL2FjcGkvZGV2aWNlcy8uLi4vcGF0aAorRGF0ZToJCURlY2VtYmVyIDIwMDYKK0NvbnRhY3Q6CVJhZmFlbCBKLiBXeXNvY2tpIDxyandAcmp3eXNvY2tpLm5ldD4KK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhlIGZ1bGwgcGF0aCBvZiBBQ1BJIG5hbWVzcGFjZQorCQlvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXZpY2Ugb2JqZWN0LiAgRm9yIGV4YW1wbGUsCisJCVxfU0JfLlBDSTAuCisJCVRoaXMgZmlsZSBpcyBub3QgcHJlc2VudCBmb3IgZGV2aWNlIG9iamVjdHMgcmVwcmVzZW50aW5nCisJCWZpeGVkIEFDUEkgaGFyZHdhcmUgZmVhdHVyZXMgKGxpa2UgcG93ZXIgYW5kIHNsZWVwCisJCWJ1dHRvbnMpLgorCitXaGF0OgkJL3N5cy9idXMvYWNwaS9kZXZpY2VzLy4uLi9tb2RhbGlhcworRGF0ZToJCUp1bHkgMjAwNworQ29udGFjdDoJUmFmYWVsIEouIFd5c29ja2kgPHJqd0Byand5c29ja2kubmV0PgorRGVzY3JpcHRpb246CisJCVRoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgUE5QIElEcyBvZiB0aGUgZGV2aWNlIG9iamVjdC4KKwkJVGhhdCBpcyBhY3BpOkhISEhISEhIOltDQ0NDQ0NDOl0uICBXaGVyZSBlYWNoIEhISEhISEhIIG9yCisJCUNDQ0NDQ0NDIGNvbnRhaW5zIGRldmljZSBvYmplY3QncyBQTlBJRCAoX0hJRCBvciBfQ0lEKS4KKworV2hhdDoJCS9zeXMvYnVzL2FjcGkvZGV2aWNlcy8uLi4vaGlkCitEYXRlOgkJQXByaWwgMjAwNQorQ29udGFjdDoJUmFmYWVsIEouIFd5c29ja2kgPHJqd0Byand5c29ja2kubmV0PgorRGVzY3JpcHRpb246CisJCVRoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgaGFyZHdhcmUgSUQgKF9ISUQpIG9mIHRoZQorCQlkZXZpY2Ugb2JqZWN0LiAgRm9yIGV4YW1wbGUsIFBOUDAxMDMuCisJCVRoaXMgZmlsZSBpcyBwcmVzZW50IGZvciBkZXZpY2Ugb2JqZWN0cyBoYXZpbmcgdGhlIF9ISUQKKwkJY29udHJvbCBtZXRob2QuCisKK1doYXQ6CQkvc3lzL2J1cy9hY3BpL2RldmljZXMvLi4uL2Rlc2NyaXB0aW9uCitEYXRlOgkJT2N0b2JlciAyMDEyCitDb250YWN0OglSYWZhZWwgSi4gV3lzb2NraSA8cmp3QHJqd3lzb2NraS5uZXQ+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgdGhlIG91dHB1dCBvZiB0aGUgZGV2aWNlIG9iamVjdCdzCisJCV9TVFIgY29udHJvbCBtZXRob2QsIGlmIHByZXNlbnQuCisKK1doYXQ6CQkvc3lzL2J1cy9hY3BpL2RldmljZXMvLi4uL2FkcgorRGF0ZToJCU9jdG9iZXIgMjAxMgorQ29udGFjdDoJUmFmYWVsIEouIFd5c29ja2kgPHJqd0Byand5c29ja2kubmV0PgorRGVzY3JpcHRpb246CisJCVRoaXMgYXR0cmlidXRlIGNvbnRhaW5zIHRoZSBvdXRwdXQgb2YgdGhlIGRldmljZSBvYmplY3QncworCQlfQURSIGNvbnRyb2wgbWV0aG9kLCB3aGljaCBpcyBwcmVzZW50IGZvciBBQ1BJIGRldmljZQorCQlvYmplY3RzIHJlcHJlc2VudGluZyBkZXZpY2VzIGhhdmluZyBzdGFuZGFyZCBlbnVtZXJhdGlvbgorCQlhbGdvcml0aG1zLCBzdWNoIGFzIFBDSS4KKworV2hhdDoJCS9zeXMvYnVzL2FjcGkvZGV2aWNlcy8uLi4vdWlkCitEYXRlOgkJT2N0b2JlciAyMDEyCitDb250YWN0OglSYWZhZWwgSi4gV3lzb2NraSA8cmp3QHJqd3lzb2NraS5uZXQ+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgdGhlIG91dHB1dCBvZiB0aGUgZGV2aWNlIG9iamVjdCdzCisJCV9VSUQgY29udHJvbCBtZXRob2QsIGlmIHByZXNlbnQuCisKK1doYXQ6CQkvc3lzL2J1cy9hY3BpL2RldmljZXMvLi4uL2VqZWN0CitEYXRlOgkJRGVjZW1iZXIgMjAwNgorQ29udGFjdDoJUmFmYWVsIEouIFd5c29ja2kgPHJqd0Byand5c29ja2kubmV0PgorRGVzY3JpcHRpb246CisJCVdyaXRpbmcgMSB0byB0aGlzIGF0dHJpYnV0ZSB3aWxsIHRyaWdnZXIgaG90IHJlbW92YWwgb2YKKwkJdGhpcyBkZXZpY2Ugb2JqZWN0LiAgVGhpcyBmaWxlIGV4aXN0cyBmb3IgZXZlcnkgZGV2aWNlCisJCW9iamVjdCB0aGF0IGhhcyBfRUowIG1ldGhvZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWFtYmEgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1hbWJhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3YjU0NjcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1hbWJhCkBAIC0wLDAgKzEsMjAgQEAKK1doYXQ6CQkvc3lzL2J1cy9hbWJhL2RldmljZXMvLi4uL2RyaXZlcl9vdmVycmlkZQorRGF0ZToJCVNlcHRlbWJlciAyMDE0CitDb250YWN0OglBbnRvbmlvcyBNb3Rha2lzIDxhLm1vdGFraXNAdmlydHVhbG9wZW5zeXN0ZW1zLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGZpbGUgYWxsb3dzIHRoZSBkcml2ZXIgZm9yIGEgZGV2aWNlIHRvIGJlIHNwZWNpZmllZCB3aGljaAorCQl3aWxsIG92ZXJyaWRlIHN0YW5kYXJkIE9GLCBBQ1BJLCBJRCB0YWJsZSwgYW5kIG5hbWUgbWF0Y2hpbmcuCisJCVdoZW4gc3BlY2lmaWVkLCBvbmx5IGEgZHJpdmVyIHdpdGggYSBuYW1lIG1hdGNoaW5nIHRoZSB2YWx1ZQorCQl3cml0dGVuIHRvIGRyaXZlcl9vdmVycmlkZSB3aWxsIGhhdmUgYW4gb3Bwb3J0dW5pdHkgdG8gYmluZCB0bworCQl0aGUgZGV2aWNlLiBUaGUgb3ZlcnJpZGUgaXMgc3BlY2lmaWVkIGJ5IHdyaXRpbmcgYSBzdHJpbmcgdG8gdGhlCisJCWRyaXZlcl9vdmVycmlkZSBmaWxlIChlY2hvIHZmaW8tYW1iYSA+IGRyaXZlcl9vdmVycmlkZSkJYW5kIG1heQorCQliZSBjbGVhcmVkIHdpdGggYW4gZW1wdHkgc3RyaW5nIChlY2hvID4gZHJpdmVyX292ZXJyaWRlKS4KKwkJVGhpcyByZXR1cm5zIHRoZSBkZXZpY2UgdG8gc3RhbmRhcmQgbWF0Y2hpbmcgcnVsZXMgYmluZGluZy4KKwkJV3JpdGluZyB0byBkcml2ZXJfb3ZlcnJpZGUgZG9lcyBub3QgYXV0b21hdGljYWxseSB1bmJpbmQgdGhlCisJCWRldmljZSBmcm9tIGl0cyBjdXJyZW50IGRyaXZlciBvciBtYWtlIGFueSBhdHRlbXB0IHRvCisJCWF1dG9tYXRpY2FsbHkgbG9hZCB0aGUgc3BlY2lmaWVkIGRyaXZlci4gSWYgbm8gZHJpdmVyIHdpdGggYQorCQltYXRjaGluZyBuYW1lIGlzIGN1cnJlbnRseSBsb2FkZWQgaW4gdGhlIGtlcm5lbCwgdGhlIGRldmljZSB3aWxsCisJCW5vdCBiaW5kIHRvIGFueSBkcml2ZXIuIFRoaXMgYWxzbyBhbGxvd3MgZGV2aWNlcyB0byBvcHQtb3V0IG9mCisJCWRyaXZlciBiaW5kaW5nIHVzaW5nIGEgZHJpdmVyX292ZXJyaWRlIG5hbWUgc3VjaCBhcyAibm9uZSIuCisJCU9ubHkgYSBzaW5nbGUgZHJpdmVyIG1heSBiZSBzcGVjaWZpZWQgaW4gdGhlIG92ZXJyaWRlLCB0aGVyZSBpcworCQlubyBzdXBwb3J0IGZvciBwYXJzaW5nIGRlbGltaXRlcnMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1iY21hIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtYmNtYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjFiNGFlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtYmNtYQpAQCAtMCwwICsxLDMxIEBACitXaGF0OgkJL3N5cy9idXMvYmNtYS9kZXZpY2VzLy4uLi9tYW51ZgorRGF0ZToJCU1heSAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjAKK0NvbnRhY3Q6CVJhZmHFgiBNacWCZWNraSA8emFqZWM1QGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlFYWNoIEJDTUEgY29yZSBoYXMgaXQncyBtYW51ZmFjdHVyZXIgaWQuIFNlZQorCQlpbmNsdWRlL2xpbnV4L2JjbWEvYmNtYS5oIGZvciBwb3NzaWJsZSB2YWx1ZXMuCisKK1doYXQ6CQkvc3lzL2J1cy9iY21hL2RldmljZXMvLi4uL2lkCitEYXRlOgkJTWF5IDIwMTEKK0tlcm5lbFZlcnNpb246CTMuMAorQ29udGFjdDoJUmFmYcWCIE1pxYJlY2tpIDx6YWplYzVAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoZXJlIGFyZSBhIGZldyB0eXBlcyBvZiBCQ01BIGNvcmVzLCB0aGV5IGNhbiBiZSBpZGVudGlmaWVkIGJ5CisJCWlkIGZpZWxkLgorCitXaGF0OgkJL3N5cy9idXMvYmNtYS9kZXZpY2VzLy4uLi9yZXYKK0RhdGU6CQlNYXkgMjAxMQorS2VybmVsVmVyc2lvbjoJMy4wCitDb250YWN0OglSYWZhxYIgTWnFgmVja2kgPHphamVjNUBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJQkNNQSBjb3JlcyBvZiB0aGUgc2FtZSB0eXBlIGNhbiBzdGlsbCBzbGlnaHRseSBkaWZmZXIgZGVwZW5kaW5nCisJCW9uIHRoZWlyIHJldmlzaW9uLiBVc2UgaXQgZm9yIGRldGFpbGVkIHByb2dyYW1taW5nLgorCitXaGF0OgkJL3N5cy9idXMvYmNtYS9kZXZpY2VzLy4uLi9jbGFzcworRGF0ZToJCU1heSAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjAKK0NvbnRhY3Q6CVJhZmHFgiBNacWCZWNraSA8emFqZWM1QGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlFYWNoIEJDTUEgY29yZSBpcyBpZGVudGlmaWVkIGJ5IGZldyBmaWVsZHMsIGluY2x1ZGluZyBjbGFzcyBpdAorCQliZWxvbmdzIHRvLiBTZWUgaW5jbHVkZS9saW51eC9iY21hL2JjbWEuaCBmb3IgcG9zc2libGUgdmFsdWVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtY29yZXNpZ2h0LWRldmljZXMtZXRiMTAgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1jb3Jlc2lnaHQtZGV2aWNlcy1ldGIxMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjhkNmVjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtY29yZXNpZ2h0LWRldmljZXMtZXRiMTAKQEAgLTAsMCArMSwyNCBAQAorV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldGIvZW5hYmxlX3NpbmsKK0RhdGU6CQlOb3ZlbWJlciAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE5CitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246CShSVykgQWRkL3JlbW92ZSBhIHNpbmsgZnJvbSBhIHRyYWNlIHBhdGguICBUaGVyZSBjYW4gYmUgbXVsdGlwbGUKKwkJc291cmNlIGZvciBhIHNpbmdsZSBzaW5rLgorCQlleDogZWNobyAxID4gL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvMjAwMTAwMDAuZXRiL2VuYWJsZV9zaW5rCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRiL3N0YXR1cworRGF0ZToJCU5vdmVtYmVyIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTkKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoJKFIpIExpc3QgdmFyaW91cyBjb250cm9sIGFuZCBzdGF0dXMgcmVnaXN0ZXJzLiAgVGhlIHNwZWNpZmljCisJCWxheW91dCBhbmQgY29udGVudCBpcyBkcml2ZXIgc3BlY2lmaWMuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRiL3RyaWdnZXJfY250cgorRGF0ZToJCU5vdmVtYmVyIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTkKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoJKFJXKSBEaXNhYmxlcyB3cml0ZSBhY2Nlc3MgdG8gdGhlIFRyYWNlIFJBTSBieSBzdG9wcGluZyB0aGUKKwkJZm9ybWF0dGVyIGFmdGVyIGEgZGVmaW5lZCBudW1iZXIgb2Ygd29yZHMgaGF2ZSBiZWVuIHN0b3JlZAorCQlmb2xsb3dpbmcgdGhlIHRyaWdnZXIgZXZlbnQuIFRoZSBudW1iZXIgb2YgMzItYml0IHdvcmRzIHdyaXR0ZW4KKwkJaW50byB0aGUgVHJhY2UgUkFNIGZvbGxvd2luZyB0aGUgdHJpZ2dlciBldmVudCBpcyBlcXVhbCB0byB0aGUKKwkJdmFsdWUgc3RvcmVkIGluIHRoaXMgcmVnaXN0ZXIrMSAoZnJvbSBBUk0gRVRCLVRSTSkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1jb3Jlc2lnaHQtZGV2aWNlcy1ldG0zeCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWNvcmVzaWdodC1kZXZpY2VzLWV0bTN4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyNDI2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1jb3Jlc2lnaHQtZGV2aWNlcy1ldG0zeApAQCAtMCwwICsxLDMyMiBAQAorV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5bZXRtfHB0bV0vZW5hYmxlX3NvdXJjZQorRGF0ZToJCU5vdmVtYmVyIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTkKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoJKFJXKSBFbmFibGUvZGlzYWJsZSB0cmFjaW5nIG9uIHRoaXMgc3BlY2lmaWMgdHJhY2UgZW50aXJ5LgorCQlFbmFibGluZyBhIHNvdXJjZSBpbXBsaWVzIHRoZSBzb3VyY2UgaGFzIGJlZW4gY29uZmlndXJlZAorCQlwcm9wZXJseSBhbmQgYSBzaW5rIGhhcyBiZWVuIGlkZW50aWRpZmVkIGZvciBpdC4gIFRoZSBwYXRoCisJCW9mIGNvcmVzaWdodCBjb21wb25lbnRzIGxpbmtpbmcgdGhlIHNvdXJjZSB0byB0aGUgc2luayBpcworCQljb25maWd1cmVkIGFuZCBtYW5hZ2VkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIGNvcmVzaWdodCBmcmFtZXdvcmsuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uW2V0bXxwdG1dL2FkZHJfaWR4CitEYXRlOgkJTm92ZW1iZXIgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xOQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOglTZWxlY3Qgd2hpY2ggYWRkcmVzcyBjb21wYXJhdG9yIG9yIHBhaXIgKG9mIGNvbXBhcmF0b3JzKSB0bworCQl3b3JrIHdpdGguCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uW2V0bXxwdG1dL2FkZHJfYWNjdHlwZQorRGF0ZToJCU5vdmVtYmVyIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTkKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoJKFJXKSBVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggQGFkZHJfaWR4LiAgU3BlY2lmaWVzCisJCWNoYXJhY3RlcmlzdGljcyBhYm91dCB0aGUgYWRkcmVzcyBjb21wYXJhdG9yIGJlaW5nIGNvbmZpZ3VyZSwKKwkJZm9yIGV4YW1wbGUgdGhlIGFjY2VzcyB0eXBlLCB0aGUga2luZCBvZiBpbnN0cnVjdGlvbiB0byB0cmFjZSwKKwkJcHJvY2Vzc29yIGNvbnRlY3QgSUQgdG8gdHJpZ2dlciBvbiwgZXRjLiAgSW5kaXZpZHVhbCBmaWVsZHMgaW4KKwkJdGhlIGFjY2VzcyB0eXBlIHJlZ2lzdGVyIG1heSB2YXJ5IG9uIHRoZSB2ZXJzaW9uIG9mIHRoZSB0cmFjZQorCQllbnRpdHkuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uW2V0bXxwdG1dL2FkZHJfcmFuZ2UKK0RhdGU6CQlOb3ZlbWJlciAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE5CitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246CShSVykgVXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIEBhZGRyX2lkeC4gIFNwZWNpZmllcyB0aGUgcmFuZ2Ugb2YKKwkJYWRkcmVzc2VzIHRvIHRyaWdnZXIgb24uICBJbmNsdXNpb24gb3IgZXhjbHVzaW9uIGlzIHNwZWNpZmljZWQKKwkJaW4gdGhlIGNvcnJlc3BvbmRpbmcgYWNjZXNzIHR5cGUgcmVnaXN0ZXIuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uW2V0bXxwdG1dL2FkZHJfc2luZ2xlCitEYXRlOgkJTm92ZW1iZXIgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xOQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOgkoUlcpIFVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBAYWRkcl9pZHguICBTcGVjaWZpZXMgdGhlIHNpbmdsZQorCQlhZGRyZXNzIHRvIHRyaWdnZXIgb24sIGhpZ2hseSBpbmZsdWVuY2VkIGJ5IHRoZSBjb25maWd1cmF0aW9uCisJCW9wdGlvbnMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgYWNjZXNzIHR5cGUgcmVnaXN0ZXIuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uW2V0bXxwdG1dL2FkZHJfc3RhcnQKK0RhdGU6CQlOb3ZlbWJlciAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE5CitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246CShSVykgVXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIEBhZGRyX2lkeC4gIFNwZWNpZmllcyB0aGUgc2luZ2xlCisJCWFkZHJlc3MgdG8gc3RhcnQgdHJhY2luZyBvbiwgaGlnaGx5IGluZmx1ZW5jZWQgYnkgdGhlCisJCWNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvZiB0aGUgY29ycmVzcG9uZGluZyBhY2Nlc3MgdHlwZSByZWdpc3Rlci4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5bZXRtfHB0bV0vYWRkcl9zdG9wCitEYXRlOgkJTm92ZW1iZXIgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xOQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOgkoUlcpIFVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBAYWRkcl9pZHguICBTcGVjaWZpZXMgdGhlIHNpbmdsZQorCQlhZGRyZXNzIHRvIHN0b3AgdHJhY2luZyBvbiwgaGlnaGx5IGluZmx1ZW5jZWQgYnkgdGhlCisJCWNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvZiB0aGUgY29ycmVzcG9uZGluZyBhY2Nlc3MgdHlwZSByZWdpc3Rlci4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5bZXRtfHB0bV0vY250cl9pZHgKK0RhdGU6CQlOb3ZlbWJlciAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE5CitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246CShSVykgU3BlY2lmaWVzIHRoZSBjb3VudGVyIHRvIHdvcmsgb24uCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uW2V0bXxwdG1dL2NudHJfZXZlbnQKK0RhdGU6CQlOb3ZlbWJlciAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE5CitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246IAkoUlcpIFVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBjbnRyX2lkeCwgZ2l2ZSBhY2Nlc3MgdG8gdGhlCisJCWNvdW50ZXIgZXZlbnQgcmVnaXN0ZXIuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uW2V0bXxwdG1dL2NudHJfdmFsCitEYXRlOgkJTm92ZW1iZXIgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xOQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJXKSBVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggY250cl9pZHgsIGdpdmUgYWNjZXNzIHRvIHRoZQorCQljb3VudGVyIHZhbHVlIHJlZ2lzdGVyLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LltldG18cHRtXS9jbnRyX3JsZF92YWwKK0RhdGU6CQlOb3ZlbWJlciAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE5CitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246IAkoUlcpIFVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBjbnRyX2lkeCwgZ2l2ZSBhY2Nlc3MgdG8gdGhlCisJCWNvdW50ZXIgcmVsb2FkIHZhbHVlIHJlZ2lzdGVyLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LltldG18cHRtXS9jbnRyX3JsZF9ldmVudAorRGF0ZToJCU5vdmVtYmVyIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTkKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjogCShSVykgVXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGNudHJfaWR4LCBnaXZlIGFjY2VzcyB0byB0aGUKKwkJY291bnRlciByZWxvYWQgZXZlbnQgcmVnaXN0ZXIuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uW2V0bXxwdG1dL2N0eGlkX2lkeAorRGF0ZToJCU5vdmVtYmVyIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTkKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjogCShSVykgU3BlY2lmaWVzIHRoZSBpbmRleCBvZiB0aGUgY29udGV4dCBJRCByZWdpc3RlciB0byBiZQorCQlzZWxlY3RlZC4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5bZXRtfHB0bV0vY3R4aWRfbWFzaworRGF0ZToJCU5vdmVtYmVyIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTkKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjogCShSVykgTWFzayB0byBhcHBseSB0byBhbGwgdGhlIGNvbnRleHQgSUQgY29tcGFyYXRvci4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5bZXRtfHB0bV0vY3R4aWRfcGlkCitEYXRlOgkJTm92ZW1iZXIgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xOQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJXKSBVc2VkIHdpdGggdGhlIGN0eGlkX2lkeCwgc3BlY2lmeSB3aXRoIGNvbnRleHQgSUQgdG8gdHJpZ2dlcgorCQlvbi4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5bZXRtfHB0bV0vZW5hYmxlX2V2ZW50CitEYXRlOgkJTm92ZW1iZXIgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xOQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJXKSBEZWZpbmVzIHdoaWNoIGV2ZW50IHRyaWdnZXJzIGEgdHJhY2UuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uW2V0bXxwdG1dL2V0bXNyCitEYXRlOgkJTm92ZW1iZXIgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xOQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJXKSBHaXZlcyBhY2Nlc3MgdG8gdGhlIEVUTSBzdGF0dXMgcmVnaXN0ZXIsIHdoaWNoIGhvbGRzCisJCXByb2dyYW1taW5nIGluZm9ybWF0aW9uIGFuZCBzdGF0dXMgb24gY2VydGFpbnMgZXZlbnRzLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LltldG18cHRtXS9maWZvZnVsbF9sZXZlbAorRGF0ZToJCU5vdmVtYmVyIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTkKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjogCShSVykgTnVtYmVyIG9mIGJ5dGUgbGVmdCBpbiB0aGUgZmlmbyBiZWZvcmUgY29uc2lkZXJpbmcgaXQgZnVsbC4KKwkJRGVwZW5kaW5nIG9uIHRoZSB0cmFjZXIncyB2ZXJzaW9uLCBjYW4gYWxzbyBob2xkIHRocmVzaG9sZCBmb3IKKwkJZGF0YSBzdXBwcmVzc2lvbi4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5bZXRtfHB0bV0vbW9kZQorRGF0ZToJCU5vdmVtYmVyIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTkKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjogCShSVykgSW50ZXJmYWNlIHdpdGggdGhlIGRyaXZlcidzICdtb2RlJyBmaWVsZCwgY29udHJvbGxpbmcKKwkJdmFyaW91cyBhc3BlY3Qgb2YgdGhlIHRyYWNlIGVudGl0eSBzdWNoIGFzIHRpbWUgc3RhbXBpbmcsCisJCWNvbnRleHQgSUQgc2l6ZSBhbmQgY3ljbGUgYWNjdXJhdGUgdHJhY2luZy4gIERyaXZlciBzcGVjaWZpYworCQlhbmQgYm91bmQgdG8gY2hhbmdlIGRlcGVuZGluZyBvbiB0aGUgZHJpdmVyLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LltldG18cHRtXS9ucl9hZGRyX2NtcAorRGF0ZToJCU5vdmVtYmVyIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTkKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjogCShSKSBQcm92aWRlcyB0aGUgbnVtYmVyIG9mIGFkZHJlc3MgY29tcGFyYXRvcnMgcGFpcnMgYWNjZXNzaWJsZQorCQlvbiBhIHRyYWNlIHVuaXQsIGFzIHNwZWNpZmllZCBieSBiaXQgMzowIG9mIHJlZ2lzdGVyIEVUTUNDUi4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5bZXRtfHB0bV0vbnJfY250cgorRGF0ZToJCU5vdmVtYmVyIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTkKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjogCShSKSBQcm92aWRlcyB0aGUgbnVtYmVyIG9mIGNvdW50ZXJzIGFjY2Vzc2libGUgb24gYSB0cmFjZSB1bml0LAorCQlhcyBzcGVjaWZpZWQgYnkgYml0IDE1OjEzIG9mIHJlZ2lzdGVyIEVUTUNDUi4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5bZXRtfHB0bV0vbnJfY3R4aWRfY21wCitEYXRlOgkJTm92ZW1iZXIgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xOQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFIpIFByb3ZpZGVzIHRoZSBudW1iZXIgb2YgY29udGV4dCBJRCBjb21wYXJhdG9yIGF2YWlsYWJsZSBvbiBhCisJCXRyYWNlIHVuaXQsIGFzIHNwZWNpZmllZCBieSBiaXQgMjU6MjQgb2YgcmVnaXN0ZXIgRVRNQ0NSLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LltldG18cHRtXS9yZXNldAorRGF0ZToJCU5vdmVtYmVyIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTkKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjogCShXKSBDYW5jZWxzIGFsbCBjb25maWd1cmF0aW9uIG9uIGEgdHJhY2UgdW5pdCBhbmQgc2V0IGl0IGJhY2sKKwkJdG8gaXRzIGJvb3QgY29uZmlndXJhdGlvbi4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5bZXRtfHB0bV0vc2VxXzEyX2V2ZW50CitEYXRlOgkJTm92ZW1iZXIgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xOQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJXKSBEZWZpbmVzIHRoZSBldmVudCB0aGF0IGNhdXNlcyB0aGUgc2VxdWVuY2VyIHRvIHRyYW5zaXRpb24KKwkJZnJvbSBzdGF0ZSAxIHRvIHN0YXRlIDIuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uW2V0bXxwdG1dL3NlcV8xM19ldmVudAorRGF0ZToJCU5vdmVtYmVyIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTkKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjogCShSVykgRGVmaW5lcyB0aGUgZXZlbnQgdGhhdCBjYXVzZXMgdGhlIHNlcXVlbmNlciB0byB0cmFuc2l0aW9uCisJCWZyb20gc3RhdGUgMSB0byBzdGF0ZSAzLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LltldG18cHRtXS9zZXFfMjFfZXZlbnQKK0RhdGU6CQlOb3ZlbWJlciAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE5CitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246IAkoUlcpIERlZmluZXMgdGhlIGV2ZW50IHRoYXQgY2F1c2VzIHRoZSBzZXF1ZW5jZXIgdG8gdHJhbnNpdGlvbgorCQlmcm9tIHN0YXRlIDIgdG8gc3RhdGUgMS4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5bZXRtfHB0bV0vc2VxXzIzX2V2ZW50CitEYXRlOgkJTm92ZW1iZXIgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xOQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJXKSBEZWZpbmVzIHRoZSBldmVudCB0aGF0IGNhdXNlcyB0aGUgc2VxdWVuY2VyIHRvIHRyYW5zaXRpb24KKwkJZnJvbSBzdGF0ZSAyIHRvIHN0YXRlIDMuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uW2V0bXxwdG1dL3NlcV8zMV9ldmVudAorRGF0ZToJCU5vdmVtYmVyIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTkKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjogCShSVykgRGVmaW5lcyB0aGUgZXZlbnQgdGhhdCBjYXVzZXMgdGhlIHNlcXVlbmNlciB0byB0cmFuc2l0aW9uCisJCWZyb20gc3RhdGUgMyB0byBzdGF0ZSAxLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LltldG18cHRtXS9zZXFfMzJfZXZlbnQKK0RhdGU6CQlOb3ZlbWJlciAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE5CitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246IAkoUlcpIERlZmluZXMgdGhlIGV2ZW50IHRoYXQgY2F1c2VzIHRoZSBzZXF1ZW5jZXIgdG8gdHJhbnNpdGlvbgorCQlmcm9tIHN0YXRlIDMgdG8gc3RhdGUgMi4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5bZXRtfHB0bV0vY3Vycl9zZXFfc3RhdGUKK0RhdGU6CQlOb3ZlbWJlciAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE5CitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246IAkoUikgSG9sZHMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHNlcXVlbmNlci4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5bZXRtfHB0bV0vc3luY19mcmVxCitEYXRlOgkJTm92ZW1iZXIgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xOQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJXKSBIb2xkcyB0aGUgdHJhY2Ugc3luY2hyb25pemF0aW9uIGZyZXF1ZW5jeSB2YWx1ZSAtIG11c3QgYmUKKwkJcHJvZ3JhbW1lZCB3aXRoIHRoZSB2YXJpb3VzIGltcGxlbWVudGF0aW9uIGJlaGF2aW9yIGluIG1pbmQuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uW2V0bXxwdG1dL3RpbWVzdGFtcF9ldmVudAorRGF0ZToJCU5vdmVtYmVyIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTkKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjogCShSVykgRGVmaW5lcyBhbiBldmVudCB0aGF0IHJlcXVlc3RzIHRoZSBpbnNlcnRpb24gb2YgYSB0aW1lc3RhbXAKKwkJaW50byB0aGUgdHJhY2Ugc3RyZWFtLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LltldG18cHRtXS90cmFjZWlkCitEYXRlOgkJTm92ZW1iZXIgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xOQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJXKSBIb2xkcyB0aGUgdHJhY2UgSUQgdGhhdCB3aWxsIGFwcGVhciBpbiB0aGUgdHJhY2Ugc3RyZWFtCisJCWNvbWluZyBmcm9tIHRoaXMgdHJhY2UgZW50aXR5LgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LltldG18cHRtXS90cmlnZ2VyX2V2ZW50CitEYXRlOgkJTm92ZW1iZXIgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xOQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJXKSBEZWZpbmUgdGhlIGV2ZW50IHRoYXQgY29udHJvbHMgdGhlIHRyaWdnZXIuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uW2V0bXxwdG1dL2NwdQorRGF0ZToJCU9jdG9iZXIgMjAxNQorS2VybmVsVmVyc2lvbjoJNC40CitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246CShSTykgSG9sZHMgdGhlIGNwdSBudW1iZXIgdGhpcyB0cmFjZXIgaXMgYWZmaW5lZCB0by4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5bZXRtfHB0bV0vbWdtdC9ldG1jY3IKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxNQorS2VybmVsVmVyc2lvbjoJNC40CitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246IAkoUk8pIFByaW50IHRoZSBjb250ZW50IG9mIHRoZSBFVE0gQ29uZmlndXJhdGlvbiBDb2RlIHJlZ2lzdGVyCisJCSgweDAwNCkuICBUaGUgdmFsdWUgaXMgcmVhZCBkaXJlY3RseSBmcm9tIHRoZSBIVy4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5bZXRtfHB0bV0vbWdtdC9ldG1jY2VyCitEYXRlOgkJU2VwdGVtYmVyIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuNAorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJPKSBQcmludCB0aGUgY29udGVudCBvZiB0aGUgRVRNIENvbmZpZ3VyYXRpb24gQ29kZSBFeHRlbnNpb24KKwkJcmVnaXN0ZXIgKDB4MWU4KS4gIFRoZSB2YWx1ZSBpcyByZWFkIGRpcmVjdGx5IGZyb20gdGhlIEhXLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LltldG18cHRtXS9tZ210L2V0bXNjcgorRGF0ZToJCVNlcHRlbWJlciAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjQKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjogCShSTykgUHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIEVUTSBTeXN0ZW0gQ29uZmlndXJhdGlvbgorCQlyZWdpc3RlciAoMHgwMTQpLiAgVGhlIHZhbHVlIGlzIHJlYWQgZGlyZWN0bHkgZnJvbSB0aGUgSFcuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uW2V0bXxwdG1dL21nbXQvZXRtaWRyCitEYXRlOgkJU2VwdGVtYmVyIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuNAorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJPKSBQcmludCB0aGUgY29udGVudCBvZiB0aGUgRVRNIElEIHJlZ2lzdGVyICgweDFlNCkuICBUaGUKKwkJdmFsdWUgaXMgcmVhZCBkaXJlY3RseSBmcm9tIHRoZSBIVy4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5bZXRtfHB0bV0vbWdtdC9ldG1jcgorRGF0ZToJCVNlcHRlbWJlciAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjQKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjogCShSTykgUHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIEVUTSBNYWluIENvbnRyb2wgcmVnaXN0ZXIgKDB4MDAwKS4KKwkJVGhlIHZhbHVlIGlzIHJlYWQgZGlyZWN0bHkgZnJvbSB0aGUgSFcuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uW2V0bXxwdG1dL21nbXQvZXRtdHJhY2VpZHIKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxNQorS2VybmVsVmVyc2lvbjoJNC40CitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246IAkoUk8pIFByaW50IHRoZSBjb250ZW50IG9mIHRoZSBFVE0gVHJhY2UgSUQgcmVnaXN0ZXIgKDB4MjAwKS4KKwkJVGhlIHZhbHVlIGlzIHJlYWQgZGlyZWN0bHkgZnJvbSB0aGUgSFcuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uW2V0bXxwdG1dL21nbXQvZXRtdGVldnIKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxNQorS2VybmVsVmVyc2lvbjoJNC40CitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246IAkoUk8pIFByaW50IHRoZSBjb250ZW50IG9mIHRoZSBFVE0gVHJhY2UgRW5hYmxlIEV2ZW50IHJlZ2lzdGVyCisJCSgweDAyMCkuIFRoZSB2YWx1ZSBpcyByZWFkIGRpcmVjdGx5IGZyb20gdGhlIEhXLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LltldG18cHRtXS9tZ210L2V0bXRzc2NyCitEYXRlOgkJU2VwdGVtYmVyIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuNAorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJPKSBQcmludCB0aGUgY29udGVudCBvZiB0aGUgRVRNIFRyYWNlIFN0YXJ0L1N0b3AgQ29ucm9sCisJCXJlZ2lzdGVyICgweDAxOCkuIFRoZSB2YWx1ZSBpcyByZWFkIGRpcmVjdGx5IGZyb20gdGhlIEhXLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LltldG18cHRtXS9tZ210L2V0bXRlY3IxCitEYXRlOgkJU2VwdGVtYmVyIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuNAorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJPKSBQcmludCB0aGUgY29udGVudCBvZiB0aGUgRVRNIEVuYWJsZSBDb25yb2wgIzEKKwkJcmVnaXN0ZXIgKDB4MDI0KS4gVGhlIHZhbHVlIGlzIHJlYWQgZGlyZWN0bHkgZnJvbSB0aGUgSFcuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uW2V0bXxwdG1dL21nbXQvZXRtdGVjcjIKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxNQorS2VybmVsVmVyc2lvbjoJNC40CitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246IAkoUk8pIFByaW50IHRoZSBjb250ZW50IG9mIHRoZSBFVE0gRW5hYmxlIENvbnJvbCAjMgorCQlyZWdpc3RlciAoMHgwMWMpLiBUaGUgdmFsdWUgaXMgcmVhZCBkaXJlY3RseSBmcm9tIHRoZSBIVy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWNvcmVzaWdodC1kZXZpY2VzLWV0bTR4IGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtY29yZXNpZ2h0LWRldmljZXMtZXRtNHgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM1NWVkOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWNvcmVzaWdodC1kZXZpY2VzLWV0bTR4CkBAIC0wLDAgKzEsNDUwIEBACitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LmV0bS9lbmFibGVfc291cmNlCitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjogIDQuMDEKK0NvbnRhY3Q6ICAgICAgICBNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246CShSVykgRW5hYmxlL2Rpc2FibGUgdHJhY2luZyBvbiB0aGlzIHNwZWNpZmljIHRyYWNlIGVudGlyeS4KKwkJRW5hYmxpbmcgYSBzb3VyY2UgaW1wbGllcyB0aGUgc291cmNlIGhhcyBiZWVuIGNvbmZpZ3VyZWQKKwkJcHJvcGVybHkgYW5kIGEgc2luayBoYXMgYmVlbiBpZGVudGlkaWZlZCBmb3IgaXQuICBUaGUgcGF0aAorCQlvZiBjb3Jlc2lnaHQgY29tcG9uZW50cyBsaW5raW5nIHRoZSBzb3VyY2UgdG8gdGhlIHNpbmsgaXMKKwkJY29uZmlndXJlZCBhbmQgbWFuYWdlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBjb3Jlc2lnaHQgZnJhbWV3b3JrLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LmV0bS9jcHUKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246CShSKSBUaGUgQ1BVIHRoaXMgdHJhY2luZyBlbnRpdHkgaXMgYXNzb2NpYXRlZCB3aXRoLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LmV0bS9ucl9wZV9jbXAKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246CShSKSBJbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBQRSBjb21wYXJhdG9yIGlucHV0cyB0aGF0IGFyZQorCQlhdmFpbGFibGUgZm9yIHRyYWNpbmcuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL25yX2FkZHJfY21wCitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wMQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOgkoUikgSW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgYWRkcmVzcyBjb21wYXJhdG9yIHBhaXJzIHRoYXQgYXJlCisJCWF2YWlsYWJsZSBmb3IgdHJhY2luZy4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vbnJfY250cgorRGF0ZToJCUFwcmlsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMDEKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoJKFIpIEluZGljYXRlcyB0aGUgbnVtYmVyIG9mIGNvdW50ZXJzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IKKwkJdHJhY2luZy4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vbnJfZXh0X2lucAorRGF0ZToJCUFwcmlsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMDEKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoJKFIpIEluZGljYXRlcyBob3cgbWFueSBleHRlcm5hbCBpbnB1dHMgYXJlIGltcGxlbWVudGVkLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LmV0bS9udW1jaWRjCitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wMQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOgkoUikgSW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgQ29udGV4dCBJRCBjb21wYXJhdG9ycyB0aGF0IGFyZQorCQlhdmFpbGFibGUgZm9yIHRyYWNpbmcuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL251bXZtaWRjCitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wMQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOgkoUikgSW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgVk1JRCBjb21wYXJhdG9ycyB0aGF0IGFyZSBhdmFpbGFibGUKKwkJZm9yIHRyYWNpbmcuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL25yc2Vxc3RhdGUKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246CShSKSBJbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBzZXF1ZW5jZXIgc3RhdGVzIHRoYXQgYXJlCisJCWltcGxlbWVudGVkLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LmV0bS9ucl9yZXNvdXJjZQorRGF0ZToJCUFwcmlsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMDEKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoJKFIpIEluZGljYXRlcyB0aGUgbnVtYmVyIG9mIHJlc291cmNlIHNlbGVjdGlvbiBwYWlycyB0aGF0IGFyZQorCQlhdmFpbGFibGUgZm9yIHRyYWNpbmcuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL25yX3NzX2NtcAorRGF0ZToJCUFwcmlsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMDEKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoJKFIpIEluZGljYXRlcyB0aGUgbnVtYmVyIG9mIHNpbmdsZS1zaG90IGNvbXBhcmF0b3IgY29udHJvbHMgdGhhdAorCQlhcmUgYXZhaWxhYmxlIGZvciB0cmFjaW5nLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LmV0bS9yZXNldAorRGF0ZToJCUFwcmlsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMDEKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjogCShXKSBDYW5jZWxzIGFsbCBjb25maWd1cmF0aW9uIG9uIGEgdHJhY2UgdW5pdCBhbmQgc2V0IGl0IGJhY2sKKwkJdG8gaXRzIGJvb3QgY29uZmlndXJhdGlvbi4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vbW9kZQorRGF0ZToJCUFwcmlsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMDEKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjogCShSVykgQ29udHJvbHMgdmFyaW91cyBtb2RlcyBzdXBwb3J0ZWQgYnkgdGhpcyBFVE0sIGZvciBleGFtcGxlCisJCVAwIGluc3RydWN0aW9uIHRyYWNpbmcsIGJyYW5jaCBicm9hZGNhc3QsIGN5Y2xlIGNvdW50aW5nIGFuZAorCQljb250ZXh0IElEIHRyYWNpbmcuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL3BlCitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wMQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJXKSBDb250cm9scyB3aGljaCBQRSB0byB0cmFjZS4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vZXZlbnQKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246IAkoUlcpIENvbnRyb2xzIHRoZSB0cmFjaW5nIG9mIGFyYml0cmFyeSBldmVudHMgZnJvbSBiYW5rIDAgdG8gMy4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vZXZlbnRfaW5zdHJlbgorRGF0ZToJCUFwcmlsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMDEKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjogCShSVykgQ29udHJvbHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBldmVudHMgaW4gYmFuayAwIHRvIDMuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL2V2ZW50X3RzCitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wMQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJXKSBDb250cm9scyB0aGUgaW5zZXJ0aW9uIG9mIGdsb2JhbCB0aW1lc3RhbXBzIGluIHRoZSB0cmFjZQorCQlzdHJlYW1zLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LmV0bS9zeW5jZnJlcQorRGF0ZToJCUFwcmlsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMDEKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjogCShSVykgQ29udHJvbHMgaG93IG9mdGVuIHRyYWNlIHN5bmNocm9uaXphdGlvbiByZXF1ZXN0cyBvY2N1ci4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vY3ljX3RocmVzaG9sZAorRGF0ZToJCUFwcmlsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMDEKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjogCShSVykgU2V0cyB0aGUgdGhyZXNob2xkIHZhbHVlIGZvciBjeWNsZSBjb3VudGluZy4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vYmJfY3RybAorRGF0ZToJCUFwcmlsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMDEKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjogCShSVykgQ29udHJvbHMgd2hpY2ggcmVnaW9ucyBpbiB0aGUgbWVtb3J5IG1hcCBhcmUgZW5hYmxlZCB0bworCQl1c2UgYnJhbmNoIGJyb2FkY2FzdGluZy4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vZXZlbnRfdmluc3QKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246IAkoUlcpIENvbnRyb2xzIGluc3RydWN0aW9uIHRyYWNlIGZpbHRlcmluZy4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vc19leGxldmVsX3ZpbnN0CitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wMQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJXKSBJbiBTZWN1cmUgc3RhdGUsIGVhY2ggYml0IGNvbnRyb2xzIHdoZXRoZXIgaW5zdHJ1Y3Rpb24KKwkJdHJhY2luZyBpcyBlbmFibGVkIGZvciB0aGUgY29ycmVzcG9uZGluZyBleGNlcHRpb24gbGV2ZWwuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL25zX2V4bGV2ZWxfdmluc3QKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246IAkoUlcpIEluIG5vbi1zZWN1cmUgc3RhdGUsIGVhY2ggYml0IGNvbnRyb2xzIHdoZXRoZXIgaW5zdHJ1Y3Rpb24KKwkJdHJhY2luZyBpcyBlbmFibGVkIGZvciB0aGUgY29ycmVzcG9uZGluZyBleGNlcHRpb24gbGV2ZWwuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL2FkZHJfaWR4CitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wMQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJXKSBTZWxlY3Qgd2hpY2ggYWRkcmVzcyBjb21wYXJhdG9yIG9yIHBhaXIgKG9mIGNvbXBhcmF0b3JzKSB0bworCQl3b3JrIHdpdGguCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL2FkZHJfaW5zdGRhdGF0eXBlCitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wMQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJXKSBDb250cm9scyB3aGF0IHR5cGUgb2YgY29tcGFyaXNvbiB0aGUgdHJhY2UgdW5pdCBwZXJmb3Jtcy4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vYWRkcl9zaW5nbGUKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246IAkoUlcpIFVzZWQgdG8gc2V0dXAgc2luZ2xlIGFkZHJlc3MgY29tcGFyYXRvciB2YWx1ZXMuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL2FkZHJfcmFuZ2UKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246IAkoUlcpIFVzZWQgdG8gc2V0dXAgYWRkcmVzcyByYW5nZSBjb21wYXJhdG9yIHZhbHVlcy4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vc2VxX2lkeAorRGF0ZToJCUFwcmlsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMDEKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjogCShSVykgU2VsZWN0IHdoaWNoIHNlcXVlbnNvci4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vc2VxX3N0YXRlCitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wMQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJXKSBVc2UgdGhpcyB0byBzZXQsIG9yIHJlYWQsIHRoZSBzZXF1ZW5jZXIgc3RhdGUuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL3NlcV9ldmVudAorRGF0ZToJCUFwcmlsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMDEKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjogCShSVykgTW92ZXMgdGhlIHNlcXVlbmNlciBzdGF0ZSB0byBhIHNwZWNpZmljIHN0YXRlLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LmV0bS9zZXFfcmVzZXRfZXZlbnQKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246IAkoUlcpIE1vdmVzIHRoZSBzZXF1ZW5jZXIgdG8gc3RhdGUgMCB3aGVuIGEgcHJvZ3JhbW1lZCBldmVudAorCQlvY2N1cnMuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL2NudHJfaWR4CitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wMQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJXKSBTZWxlY3Qgd2hpY2ggY291bnRlciB1bml0IHRvIHdvcmsgd2l0aC4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vY250cmxkdnIKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246IAkoUlcpIFRoaXMgc2V0cyBvciByZXR1cm5zIHRoZSByZWxvYWQgY291bnQgdmFsdWUgb2YgdGhlCisJCXNwZWNpZmljIGNvdW50ZXIuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL2NudHJfdmFsCitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wMQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJXKSBUaGlzIHNldHMgb3IgcmV0dXJucyB0aGUgY3VycmVudCBjb3VudCB2YWx1ZSBvZiB0aGUKKyAgICAgICAgICAgICAgICBzcGVjaWZpYyBjb3VudGVyLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LmV0bS9jbnRyX2N0cmwKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246IAkoUlcpIENvbnRyb2xzIHRoZSBvcGVyYXRpb24gb2YgdGhlIHNlbGVjdGVkIGNvdW50ZXIuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL3Jlc19pZHgKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246IAkoUlcpIFNlbGVjdCB3aGljaCByZXNvdXJjZSBzZWxlY3Rpb24gdW5pdCB0byB3b3JrIHdpdGguCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL3Jlc19jdHJsCitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wMQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOiAJKFJXKSBDb250cm9scyB0aGUgc2VsZWN0aW9uIG9mIHRoZSByZXNvdXJjZXMgaW4gdGhlIHRyYWNlIHVuaXQuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL2N0eGlkX2lkeAorRGF0ZToJCUFwcmlsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMDEKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoJKFJXKSBTZWxlY3Qgd2hpY2ggY29udGV4dCBJRCBjb21wYXJhdG9yIHRvIHdvcmsgd2l0aC4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vY3R4aWRfcGlkCitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wMQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOgkoUlcpIEdldC9TZXQgdGhlIGNvbnRleHQgSUQgY29tcGFyYXRvciB2YWx1ZSB0byB0cmlnZ2VyIG9uLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LmV0bS9jdHhpZF9tYXNrcworRGF0ZToJCUFwcmlsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMDEKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoJKFJXKSBNYXNrIGZvciBhbGwgOCBjb250ZXh0IElEIGNvbXBhcmF0b3IgdmFsdWUKKwkJcmVnaXN0ZXJzIChpZiBpbXBsZW1lbnRlZCkuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL3ZtaWRfaWR4CitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wMQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOgkoUlcpIFNlbGVjdCB3aGljaCB2aXJ0dWFsIG1hY2hpbmUgSUQgY29tcGFyYXRvciB0byB3b3JrIHdpdGguCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL3ZtaWRfdmFsCitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wMQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOgkoUlcpIEdldC9TZXQgdGhlIHZpcnR1YWwgbWFjaGluZSBJRCBjb21wYXJhdG9yIHZhbHVlIHRvCisJCXRyaWdnZXIgb24uCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL3ZtaWRfbWFza3MKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246CShSVykgTWFzayBmb3IgYWxsIDggdmlydHVhbCBtYWNoaW5lIElEIGNvbXBhcmF0b3IgdmFsdWUKKwkJcmVnaXN0ZXJzIChpZiBpbXBsZW1lbnRlZCkuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL21nbXQvdHJjb3Nsc3IKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246CShSKSBQcmludCB0aGUgY29udGVudCBvZiB0aGUgT1MgTG9jayBTdGF0dXMgUmVnaXN0ZXIgKDB4MzA0KS4KKwkJVGhlIHZhbHVlIGl0IHRha2VuIGRpcmVjdGx5ICBmcm9tIHRoZSBIVy4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vbWdtdC90cmNwZGNyCitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wMQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOgkoUikgUHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIFBvd2VyIERvd24gQ29udHJvbCBSZWdpc3RlcgorCQkoMHgzMTApLiAgVGhlIHZhbHVlIGlzIHRha2VuIGRpcmVjdGx5IGZyb20gdGhlIEhXLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LmV0bS9tZ210L3RyY3Bkc3IKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246CShSKSBQcmludCB0aGUgY29udGVudCBvZiB0aGUgUG93ZXIgRG93biBTdGF0dXMgUmVnaXN0ZXIKKwkJKDB4MzE0KS4gIFRoZSB2YWx1ZSBpcyB0YWtlbiBkaXJlY3RseSBmcm9tIHRoZSBIVy4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vbWdtdC90cmNsc3IKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246CShSKSBQcmludCB0aGUgY29udGVudCBvZiB0aGUgU1cgTG9jayBTdGF0dXMgUmVnaXN0ZXIKKwkJKDB4RkI0KS4gIFRoZSB2YWx1ZSBpcyB0YWtlbiBkaXJlY3RseSBmcm9tIHRoZSBIVy4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vbWdtdC90cmNhdXRoc3RhdHVzCitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wMQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOgkoUikgUHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIEF1dGhlbnRpY2F0aW9uIFN0YXR1cyBSZWdpc3RlcgorCQkoMHhGQjgpLiAgVGhlIHZhbHVlIGlzIHRha2VuIGRpcmVjdGx5IGZyb20gdGhlIEhXLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LmV0bS9tZ210L3RyY2RldmlkCitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wMQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOgkoUikgUHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIERldmljZSBJRCBSZWdpc3RlcgorCQkoMHhGQzgpLiAgVGhlIHZhbHVlIGlzIHRha2VuIGRpcmVjdGx5IGZyb20gdGhlIEhXLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LmV0bS9tZ210L3RyY2RldnR5cGUKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246CShSKSBQcmludCB0aGUgY29udGVudCBvZiB0aGUgRGV2aWNlIFR5cGUgUmVnaXN0ZXIKKwkJKDB4RkNDKS4gIFRoZSB2YWx1ZSBpcyB0YWtlbiBkaXJlY3RseSBmcm9tIHRoZSBIVy4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vbWdtdC90cmNwaWRyMAorRGF0ZToJCUFwcmlsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMDEKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoJKFIpIFByaW50IHRoZSBjb250ZW50IG9mIHRoZSBQZXJpcGhlcmFsIElEMCBSZWdpc3RlcgorCQkoMHhGRTApLiAgVGhlIHZhbHVlIGlzIHRha2VuIGRpcmVjdGx5IGZyb20gdGhlIEhXLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LmV0bS9tZ210L3RyY3BpZHIxCitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wMQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOgkoUikgUHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIFBlcmlwaGVyYWwgSUQxIFJlZ2lzdGVyCisJCSgweEZFNCkuICBUaGUgdmFsdWUgaXMgdGFrZW4gZGlyZWN0bHkgZnJvbSB0aGUgSFcuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL21nbXQvdHJjcGlkcjIKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246CShSKSBQcmludCB0aGUgY29udGVudCBvZiB0aGUgUGVyaXBoZXJhbCBJRDIgUmVnaXN0ZXIKKwkJKDB4RkU4KS4gIFRoZSB2YWx1ZSBpcyB0YWtlbiBkaXJlY3RseSBmcm9tIHRoZSBIVy4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vbWdtdC90cmNwaWRyMworRGF0ZToJCUFwcmlsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMDEKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoJKFIpIFByaW50IHRoZSBjb250ZW50IG9mIHRoZSBQZXJpcGhlcmFsIElEMyBSZWdpc3RlcgorCQkoMHhGRUMpLiAgVGhlIHZhbHVlIGlzIHRha2VuIGRpcmVjdGx5IGZyb20gdGhlIEhXLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LmV0bS90cmNpZHIvdHJjaWRyMAorRGF0ZToJCUFwcmlsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMDEKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoJKFIpIFJldHVybnMgdGhlIHRyYWNpbmcgY2FwYWJpbGl0aWVzIG9mIHRoZSB0cmFjZSB1bml0ICgweDFFMCkuCisJCVRoZSB2YWx1ZSBpcyB0YWtlbiBkaXJlY3RseSBmcm9tIHRoZSBIVy4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vdHJjaWRyL3RyY2lkcjEKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246CShSKSBSZXR1cm5zIHRoZSB0cmFjaW5nIGNhcGFiaWxpdGllcyBvZiB0aGUgdHJhY2UgdW5pdCAoMHgxRTQpLgorCQlUaGUgdmFsdWUgaXMgdGFrZW4gZGlyZWN0bHkgZnJvbSB0aGUgSFcuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL3RyY2lkci90cmNpZHIyCitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wMQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOgkoUikgUmV0dXJucyB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSBkYXRhIHZhbHVlLCBkYXRhIGFkZHJlc3MsCisJCVZNSUQsIGNvbnRleHQgSUQgYW5kIGluc3R1Y3Rpb24gYWRkcmVzcyBpbiB0aGUgdHJhY2UgdW5pdAorCQkoMHgxRTgpLiAgVGhlIHZhbHVlIGlzIHRha2VuIGRpcmVjdGx5IGZyb20gdGhlIEhXLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LmV0bS90cmNpZHIvdHJjaWRyMworRGF0ZToJCUFwcmlsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMDEKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoJKFIpIFJldHVybnMgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB2YXJpb3VzIHJlc291cmNlcworCQlhdmFpbGFibGUgdG8gdGhlIHRyYWNlIHVuaXQuICBTZWUgdGhlIFRyYWNlIE1hY3JvY2VsbAorCQlhcmNoaXRlY3R1cmUgc3BlY2lmaWNhdGlvbiBmb3IgbW9yZSBkZXRhaWxzICgweDFFOCkuCisJCVRoZSB2YWx1ZSBpcyB0YWtlbiBkaXJlY3RseSBmcm9tIHRoZSBIVy4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vdHJjaWRyL3RyY2lkcjQKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246CShSKSBSZXR1cm5zIGhvdyBtYW55IHJlc291cmNlcyB0aGUgdHJhY2UgdW5pdCBzdXBwb3J0cyAoMHgxRjApLgorCQlUaGUgdmFsdWUgaXMgdGFrZW4gZGlyZWN0bHkgZnJvbSB0aGUgSFcuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL3RyY2lkci90cmNpZHI1CitEYXRlOgkJQXByaWwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wMQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOgkoUikgUmV0dXJucyBob3cgbWFueSByZXNvdXJjZXMgdGhlIHRyYWNlIHVuaXQgc3VwcG9ydHMgKDB4MUY0KS4KKwkJVGhlIHZhbHVlIGlzIHRha2VuIGRpcmVjdGx5IGZyb20gdGhlIEhXLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LmV0bS90cmNpZHIvdHJjaWRyOAorRGF0ZToJCUFwcmlsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMDEKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoJKFIpIFJldHVybnMgdGhlIG1heGltdW0gc3BlY3VsYXRpb24gZGVwdGggb2YgdGhlIGluc3RydWN0aW9uCisJCXRyYWNlIHN0cmVhbS4gKDB4MTgwKS4gIFRoZSB2YWx1ZSBpcyB0YWtlbiBkaXJlY3RseSBmcm9tIHRoZSBIVy4KKworV2hhdDoJCS9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLzxtZW1vcnlfbWFwPi5ldG0vdHJjaWRyL3RyY2lkcjkKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246CShSKSBSZXR1cm5zIHRoZSBudW1iZXIgb2YgUDAgcmlnaHQtaGFuZCBrZXlzIHRoYXQgdGhlIHRyYWNlIHVuaXQKKwkJY2FuIHVzZSAoMHgxODQpLiAgVGhlIHZhbHVlIGlzIHRha2VuIGRpcmVjdGx5IGZyb20gdGhlIEhXLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LmV0bS90cmNpZHIvdHJjaWRyMTAKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246CShSKSBSZXR1cm5zIHRoZSBudW1iZXIgb2YgUDEgcmlnaHQtaGFuZCBrZXlzIHRoYXQgdGhlIHRyYWNlIHVuaXQKKwkJY2FuIHVzZSAoMHgxODgpLiAgVGhlIHZhbHVlIGlzIHRha2VuIGRpcmVjdGx5IGZyb20gdGhlIEhXLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LmV0bS90cmNpZHIvdHJjaWRyMTEKK0RhdGU6CQlBcHJpbCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAxCitDb250YWN0OglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246CShSKSBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3BlY2lhbCBQMSByaWdodC1oYW5kIGtleXMgdGhhdCB0aGUKKwkJdHJhY2UgdW5pdCBjYW4gdXNlICgweDE4QykuICBUaGUgdmFsdWUgaXMgdGFrZW4gZGlyZWN0bHkgZnJvbQorCQl0aGUgSFcuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL3RyY2lkci90cmNpZHIxMgorRGF0ZToJCUFwcmlsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMDEKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoJKFIpIFJldHVybnMgdGhlIG51bWJlciBvZiBjb25kaXRpb25hbCBQMSByaWdodC1oYW5kIGtleXMgdGhhdAorCQl0aGUgdHJhY2UgdW5pdCBjYW4gdXNlICgweDE5MCkuICBUaGUgdmFsdWUgaXMgdGFrZW4gZGlyZWN0bHkKKwkJZnJvbSB0aGUgSFcuCisKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZXRtL3RyY2lkci90cmNpZHIxMworRGF0ZToJCUFwcmlsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMDEKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoJKFIpIFJldHVybnMgdGhlIG51bWJlciBvZiBzcGVjaWFsIGNvbmRpdGlvbmFsIFAxIHJpZ2h0LWhhbmQga2V5cworCQl0aGF0IHRoZSB0cmFjZSB1bml0IGNhbiB1c2UgKDB4MTk0KS4gIFRoZSB2YWx1ZSBpcyB0YWtlbgorCQlkaXJlY3RseSBmcm9tIHRoZSBIVy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWNvcmVzaWdodC1kZXZpY2VzLWZ1bm5lbCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWNvcmVzaWdodC1kZXZpY2VzLWZ1bm5lbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzVhY2RhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtY29yZXNpZ2h0LWRldmljZXMtZnVubmVsCkBAIC0wLDAgKzEsMTIgQEAKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4uZnVubmVsL2Z1bm5lbF9jdHJsCitEYXRlOgkJTm92ZW1iZXIgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xOQorQ29udGFjdDoJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOgkoUlcpIEVuYWJsZXMgdGhlIHNsYXZlIHBvcnRzIGFuZCBkZWZpbmVzIHRoZSBob2xkIHRpbWUgb2YgdGhlCisJCXNsYXZlIHBvcnRzLgorCitXaGF0OgkJL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvPG1lbW9yeV9tYXA+LmZ1bm5lbC9wcmlvcml0eQorRGF0ZToJCU5vdmVtYmVyIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTkKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoJKFJXKSBEZWZpbmVzIGlucHV0IHBvcnQgcHJpb3JpdHkgb3JkZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1jb3Jlc2lnaHQtZGV2aWNlcy10bWMgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1jb3Jlc2lnaHQtZGV2aWNlcy10bWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM4Y2RlZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWNvcmVzaWdodC1kZXZpY2VzLXRtYwpAQCAtMCwwICsxLDggQEAKK1doYXQ6CQkvc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcy88bWVtb3J5X21hcD4udG1jL3RyaWdnZXJfY250cgorRGF0ZToJCU5vdmVtYmVyIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTkKK0NvbnRhY3Q6CU1hdGhpZXUgUG9pcmllciA8bWF0aGlldS5wb2lyaWVyQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoJKFJXKSBEaXNhYmxlcyB3cml0ZSBhY2Nlc3MgdG8gdGhlIFRyYWNlIFJBTSBieSBzdG9wcGluZyB0aGUKKwkJZm9ybWF0dGVyIGFmdGVyIGEgZGVmaW5lZCBudW1iZXIgb2Ygd29yZHMgaGF2ZSBiZWVuIHN0b3JlZAorCQlmb2xsb3dpbmcgdGhlIHRyaWdnZXIgZXZlbnQuIEFkZGl0aW9uYWwgaW50ZXJmYWNlIGZvciB0aGlzCisJCWRyaXZlciBhcmUgZXhwZWN0ZWQgdG8gYmUgYWRkZWQgYXMgaXQgbWF0dXJlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWNzcyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTc5YzQwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtY3NzCkBAIC0wLDAgKzEsMzUgQEAKK1doYXQ6CQkvc3lzL2J1cy9jc3MvZGV2aWNlcy8uLi4vdHlwZQorRGF0ZToJCU1hcmNoIDIwMDgKK0NvbnRhY3Q6CUNvcm5lbGlhIEh1Y2sgPGNvcm5lbGlhLmh1Y2tAZGUuaWJtLmNvbT4KKwkJbGludXgtczM5MEB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOglDb250YWlucyB0aGUgc3ViY2hhbm5lbCB0eXBlLCBhcyByZXBvcnRlZCBieSB0aGUgaGFyZHdhcmUuCisJCVRoaXMgYXR0cmlidXRlIGlzIHByZXNlbnQgZm9yIGFsbCBzdWJjaGFubmVsIHR5cGVzLgorCitXaGF0OgkJL3N5cy9idXMvY3NzL2RldmljZXMvLi4uL21vZGFsaWFzCitEYXRlOgkJTWFyY2ggMjAwOAorQ29udGFjdDoJQ29ybmVsaWEgSHVjayA8Y29ybmVsaWEuaHVja0BkZS5pYm0uY29tPgorCQlsaW51eC1zMzkwQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CUNvbnRhaW5zIHRoZSBtb2R1bGUgYWxpYXMgYXMgcmVwb3J0ZWQgd2l0aCB1ZXZlbnRzLgorCQlJdCBpcyBvZiB0aGUgZm9ybWF0IGNzczp0PHR5cGU+IGFuZCBwcmVzZW50IGZvciBhbGwKKwkJc3ViY2hhbm5lbCB0eXBlcy4KKworV2hhdDoJCS9zeXMvYnVzL2Nzcy9kcml2ZXJzL2lvX3N1YmNoYW5uZWwvLi4uL2NocGlkcworRGF0ZToJCURlY2VtYmVyIDIwMDIKK0NvbnRhY3Q6CUNvcm5lbGlhIEh1Y2sgPGNvcm5lbGlhLmh1Y2tAZGUuaWJtLmNvbT4KKwkJbGludXgtczM5MEB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOglDb250YWlucyB0aGUgaWRzIG9mIHRoZSBjaGFubmVsIHBhdGhzIHVzZWQgYnkgdGhpcworCQlzdWJjaGFubmVsLCBhcyByZXBvcnRlZCBieSB0aGUgY2hhbm5lbCBzdWJzeXN0ZW0KKwkJZHVyaW5nIHN1YmNoYW5uZWwgcmVjb2duaXRpb24uCisJCU5vdGU6IFRoaXMgaXMgYW4gSS9PLXN1YmNoYW5uZWwgc3BlY2lmaWMgYXR0cmlidXRlLgorVXNlcnM6CQlzMzkwLXRvb2xzLCBIQUwKKworV2hhdDoJCS9zeXMvYnVzL2Nzcy9kcml2ZXJzL2lvX3N1YmNoYW5uZWwvLi4uL3BpbXBhbXBvbQorRGF0ZToJCURlY2VtYmVyIDIwMDIKK0NvbnRhY3Q6CUNvcm5lbGlhIEh1Y2sgPGNvcm5lbGlhLmh1Y2tAZGUuaWJtLmNvbT4KKwkJbGludXgtczM5MEB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOglDb250YWlucyB0aGUgUElNL1BBTS9QT00gdmFsdWVzLCBhcyByZXBvcnRlZCBieSB0aGUKKwkJY2hhbm5lbCBzdWJzeXN0ZW0gd2hlbiBsYXN0IHF1ZXJpZWQgYnkgdGhlIGNvbW1vbiBJL08KKwkJbGF5ZXIgKHRoaXMgaW1wbGllcyB0aGF0IHRoaXMgYXR0cmlidXRlIGlzIG5vdCBuZWNlc3NhcmlseQorCQlpbiBzeW5jIHdpdGggdGhlIHZhbHVlcyBjdXJyZW50IGluIHRoZSBjaGFubmVsIHN1YnN5c3RlbSkuCisJCU5vdGU6IFRoaXMgaXMgYW4gSS9PLXN1YmNoYW5uZWwgc3BlY2lmaWMgYXR0cmlidXRlLgorVXNlcnM6CQlzMzkwLXRvb2xzLCBIQUwKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWV2ZW50X3NvdXJjZS1kZXZpY2VzLWV2ZW50cyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWV2ZW50X3NvdXJjZS1kZXZpY2VzLWV2ZW50cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDVmMDgwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZXZlbnRfc291cmNlLWRldmljZXMtZXZlbnRzCkBAIC0wLDAgKzEsOTQgQEAKK1doYXQ6CQkvc3lzL2RldmljZXMvY3B1L2V2ZW50cy8KKwkJL3N5cy9kZXZpY2VzL2NwdS9ldmVudHMvYnJhbmNoLW1pc3NlcworCQkvc3lzL2RldmljZXMvY3B1L2V2ZW50cy9jYWNoZS1yZWZlcmVuY2VzCisJCS9zeXMvZGV2aWNlcy9jcHUvZXZlbnRzL2NhY2hlLW1pc3NlcworCQkvc3lzL2RldmljZXMvY3B1L2V2ZW50cy9zdGFsbGVkLWN5Y2xlcy1mcm9udGVuZAorCQkvc3lzL2RldmljZXMvY3B1L2V2ZW50cy9icmFuY2gtaW5zdHJ1Y3Rpb25zCisJCS9zeXMvZGV2aWNlcy9jcHUvZXZlbnRzL3N0YWxsZWQtY3ljbGVzLWJhY2tlbmQKKwkJL3N5cy9kZXZpY2VzL2NwdS9ldmVudHMvaW5zdHJ1Y3Rpb25zCisJCS9zeXMvZGV2aWNlcy9jcHUvZXZlbnRzL2NwdS1jeWNsZXMKKworRGF0ZToJCTIwMTMvMDEvMDgKKworQ29udGFjdDoJTGludXgga2VybmVsIG1haWxpbmcgbGlzdCA8bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZz4KKworRGVzY3JpcHRpb246CUdlbmVyaWMgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyBldmVudHMKKworCQlBIGNvbGxlY3Rpb24gb2YgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyBldmVudHMgdGhhdCBtYXkgYmUKKwkJc3VwcG9ydGVkIGJ5IG1hbnkvbW9zdCBDUFVzLiBUaGVzZSBldmVudHMgY2FuIGJlIG1vbml0b3JlZAorCQl1c2luZyB0aGUgJ3BlcmYoMSknIHRvb2wuCisKKwkJVGhlIGNvbnRlbnRzIG9mIGVhY2ggZmlsZSB3b3VsZCBsb29rIGxpa2U6CisKKwkJCWV2ZW50PTB4Tk5OTgorCisJCXdoZXJlICdOJyBpcyBhIGhleCBkaWdpdCBhbmQgdGhlIG51bWJlciAnMHhOTk5OJyBzaG93cyB0aGUKKwkJInJhdyBjb2RlIiBmb3IgdGhlIHBlcmYgZXZlbnQgaWRlbnRpZmllZCBieSB0aGUgZmlsZSdzCisJCSJiYXNlbmFtZSIuCisKKworV2hhdDogL3N5cy9idXMvZXZlbnRfc291cmNlL2RldmljZXMvPHBtdT4vZXZlbnRzLzxldmVudD4KK0RhdGU6IDIwMTQvMDIvMjQKK0NvbnRhY3Q6CUxpbnV4IGtlcm5lbCBtYWlsaW5nIGxpc3QgPGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc+CitEZXNjcmlwdGlvbjoJUGVyLXBtdSBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIGV2ZW50cyBzcGVjaWZpYyB0byB0aGUgcnVubmluZyBzeXN0ZW0KKworCQlFYWNoIGZpbGUgKGV4Y2VwdCBmb3Igc29tZSBvZiB0aG9zZSB3aXRoIGEgJy4nIGluIHRoZW0sICcudW5pdCcKKwkJYW5kICcuc2NhbGUnKSBpbiB0aGUgJ2V2ZW50cycgZGlyZWN0b3J5IGRlc2NyaWJlcyBhIHNpbmdsZQorCQlwZXJmb3JtYW5jZSBtb25pdG9yaW5nIGV2ZW50IHN1cHBvcnRlZCBieSB0aGUgPHBtdT4uIFRoZSBuYW1lCisJCW9mIHRoZSBmaWxlIGlzIHRoZSBuYW1lIG9mIHRoZSBldmVudC4KKworCQlGaWxlIGNvbnRlbnRzOgorCisJCQk8dGVybT5bPTx2YWx1ZT5dWyw8dGVybT5bPTx2YWx1ZT5dXS4uLgorCisJCVdoZXJlIDx0ZXJtPiBpcyBvbmUgb2YgdGhlIHRlcm1zIGxpc3RlZCB1bmRlcgorCQkvc3lzL2J1cy9ldmVudF9zb3VyY2UvZGV2aWNlcy88cG11Pi9mb3JtYXQvIGFuZCA8dmFsdWU+IGlzCisJCWEgbnVtYmVyIGlzIGJhc2UtMTYgZm9ybWF0IHdpdGggYSAnMHgnIHByZWZpeCAobG93ZXJjYXNlIG9ubHkpLgorCQlJZiBhIDx0ZXJtPiBpcyBzcGVjaWZpZWQgYWxvbmUgKHdpdGhvdXQgYW4gYXNzaWduZWQgdmFsdWUpLCBpdAorCQlpcyBpbXBsaWVkIHRoYXQgMHgxIGlzIGFzc2lnbmVkIHRvIHRoYXQgPHRlcm0+LgorCisJCUV4YW1wbGVzIChlYWNoIG9mIHRoZXNlIGxpbmVzIHdvdWxkIGJlIGluIGEgc2VwZXJhdGUgZmlsZSk6CisKKwkJCWV2ZW50PTB4MmFiYworCQkJZXZlbnQ9MHg0MjMsaW52LGNtYXNrPTB4MworCQkJZG9tYWluPTB4MSxvZmZzZXQ9MHg4LHN0YXJ0aW5nX2luZGV4PTB4ZmZmZgorCQkJZG9tYWluPTB4MSxvZmZzZXQ9MHg4LGNvcmU9PworCisJCUVhY2ggb2YgdGhlIGFzc2lnbm1lbnRzIGluZGljYXRlcyBhIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGEKKwkJcGFydGljdWxhciBzZXQgb2YgYml0cyAoYXMgZGVmaW5lZCBieSB0aGUgZm9ybWF0IGZpbGUKKwkJY29ycmVzcG9uZGluZyB0byB0aGUgPHRlcm0+KSBpbiB0aGUgcGVyZl9ldmVudCBzdHJ1Y3R1cmUgcGFzc2VkCisJCXRvIHRoZSBwZXJmX29wZW4gc3lzY2FsbC4KKworCQlJbiB0aGUgY2FzZSBvZiB0aGUgbGFzdCBleGFtcGxlLCBhIHZhbHVlIHJlcGxhY2luZyAiPyIgd291bGQKKwkJbmVlZCB0byBiZSBwcm92aWRlZCBieSB0aGUgdXNlciBzZWxlY3RpbmcgdGhlIHBhcnRpY3VsYXIgZXZlbnQuCisJCVRoaXMgaXMgcmVmZXJyZWQgdG8gYXMgImV2ZW50IHBhcmFtZXRlcml6YXRpb24iLiBFdmVudAorCQlwYXJhbWV0ZXJzIGhhdmUgdGhlIGZvcm1hdCAncGFyYW09PycuCisKK1doYXQ6IC9zeXMvYnVzL2V2ZW50X3NvdXJjZS9kZXZpY2VzLzxwbXU+L2V2ZW50cy88ZXZlbnQ+LnVuaXQKK0RhdGU6IDIwMTQvMDIvMjQKK0NvbnRhY3Q6CUxpbnV4IGtlcm5lbCBtYWlsaW5nIGxpc3QgPGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc+CitEZXNjcmlwdGlvbjoJUGVyZiBldmVudCB1bml0cworCisJCUEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIEVuZ2xpc2ggcGx1cmFsIG51bWVyaWNhbCB1bml0IHRoYXQgPGV2ZW50PgorCQkob25jZSBtdWx0aXBsaWVkIGJ5IDxldmVudD4uc2NhbGUpIHJlcHJlc2VudHMuCisKKwkJRXhhbXBsZToKKworCQkJSm91bGVzCisKK1doYXQ6IC9zeXMvYnVzL2V2ZW50X3NvdXJjZS9kZXZpY2VzLzxwbXU+L2V2ZW50cy88ZXZlbnQ+LnNjYWxlCitEYXRlOiAyMDE0LzAyLzI0CitDb250YWN0OglMaW51eCBrZXJuZWwgbWFpbGluZyBsaXN0IDxsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnPgorRGVzY3JpcHRpb246CVBlcmYgZXZlbnQgc2NhbGluZyBmYWN0b3JzCisKKwkJQSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWUgZXhwcmVzc2VkIGluCisJCXNjaWVudGlmaWMgbm90YXRpb24gdG8gYmUgbXVsdGlwbGllZCBieSB0aGUgZXZlbnQgY291bnQKKwkJcmVjaWV2ZWQgZnJvbSB0aGUga2VybmVsIHRvIG1hdGNoIHRoZSB1bml0IHNwZWNpZmllZCBpbiB0aGUKKwkJPGV2ZW50Pi51bml0IGZpbGUuCisKKwkJRXhhbXBsZToKKworCQkJMi4zMjgzMDY0MzY1Mzg2OTYyODkwNjI1ZS0xMAorCisJCVRoaXMgaXMgcHJvdmlkZWQgdG8gYXZvaWQgcGVyZm9ybWluZyBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljCisJCWluIHRoZSBrZXJuZWwuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1ldmVudF9zb3VyY2UtZGV2aWNlcy1mb3JtYXQgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1ldmVudF9zb3VyY2UtZGV2aWNlcy1mb3JtYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdmNDdmZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWV2ZW50X3NvdXJjZS1kZXZpY2VzLWZvcm1hdApAQCAtMCwwICsxLDIwIEBACitXaGVyZToJCS9zeXMvYnVzL2V2ZW50X3NvdXJjZS9kZXZpY2VzLzxkZXY+L2Zvcm1hdAorRGF0ZToJCUphbnVhcnkgMjAxMgorS2VybmVsIFZlcnNpb246IDMuMworQ29udGFjdDoJSmlyaSBPbHNhIDxqb2xzYUByZWRoYXQuY29tPgorRGVzY3JpcHRpb246CisJCUF0dHJpYnV0ZSBncm91cCB0byBkZXNjcmliZSB0aGUgbWFnaWMgYml0cyB0aGF0IGdvIGludG8KKwkJcGVyZl9ldmVudF9hdHRyOjpjb25maWdbMDEyXSBmb3IgYSBwYXJ0aWN1bGFyIHBtdS4KKwkJRWFjaCBhdHRyaWJ1dGUgb2YgdGhpcyBncm91cCBkZWZpbmVzIHRoZSAnaGFyZHdhcmUnIGJpdG1hc2sKKwkJd2Ugd2FudCB0byBleHBvcnQsIHNvIHRoYXQgdXNlcnNwYWNlIGNhbiBkZWFsIHdpdGggc2FuZQorCQluYW1lL3ZhbHVlIHBhaXJzLgorCisJCVVzZXJzcGFjZSBtdXN0IGJlIHByZXBhcmVkIGZvciB0aGUgcG9zc2liaWxpdHkgdGhhdCBhdHRyaWJ1dGVzCisJCWRlZmluZSBvdmVybGFwcGluZyBiaXQgcmFuZ2VzLiBGb3IgZXhhbXBsZToKKwkJCWF0dHIxID0gJ2NvbmZpZzowLTIzJworCQkJYXR0cjIgPSAnY29uZmlnOjAtNycKKwkJCWF0dHIzID0gJ2NvbmZpZzoxMi0zNScKKworCQlFeGFtcGxlOiAnY29uZmlnMToxLDYtMTAsNDQnCisJCURlZmluZXMgY29udGVudHMgb2YgYXR0cmlidXRlIHRoYXQgb2NjdXBpZXMgYml0cyAxLDYtMTAsNDQgb2YKKwkJcGVyZl9ldmVudF9hdHRyOjpjb25maWcxLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZXZlbnRfc291cmNlLWRldmljZXMtaHZfMjR4NyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWV2ZW50X3NvdXJjZS1kZXZpY2VzLWh2XzI0eDcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg5MzMzNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWV2ZW50X3NvdXJjZS1kZXZpY2VzLWh2XzI0eDcKQEAgLTAsMCArMSw0NSBAQAorV2hhdDoJCS9zeXMvYnVzL2V2ZW50X3NvdXJjZS9kZXZpY2VzL2h2XzI0eDcvaW50ZXJmYWNlL2NhdGFsb2cKK0RhdGU6CQlGZWJydWFyeSAyMDE0CitDb250YWN0OglMaW51eCBvbiBQb3dlclBDIERldmVsb3BlciBMaXN0IDxsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlQcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGJpbmFyeSAiMjR4NyBjYXRhbG9nIiBwcm92aWRlZCBieSB0aGUKKwkJaHlwZXJ2aXNvciBvbiBQT1dFUjcgYW5kIDggc3lzdGVtcy4gVGhpcyBjYXRhbG9nIGxpc3RzIGV2ZW50cworCQlhdmFsaWFibGUgZnJvbSB0aGUgcG93ZXJwYyAiaHZfMjR4NyIgcG11LiBJdHMgZm9ybWF0IGlzCisJCWRvY3VtZW50ZWQgaGVyZToKKwkJaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2ptZXNtb24vY2F0YWxvZy0yNHg3L21hc3Rlci9odi0yNHg3LWNhdGFsb2cuaAorCitXaGF0OgkJL3N5cy9idXMvZXZlbnRfc291cmNlL2RldmljZXMvaHZfMjR4Ny9pbnRlcmZhY2UvY2F0YWxvZ19sZW5ndGgKK0RhdGU6CQlGZWJydWFyeSAyMDE0CitDb250YWN0OglMaW51eCBvbiBQb3dlclBDIERldmVsb3BlciBMaXN0IDxsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlBIG51bWJlciBlcXVhbCB0byB0aGUgbGVuZ3RoIGluIGJ5dGVzIG9mIHRoZSBjYXRhbG9nLiBUaGlzIGlzCisJCWFsc28gZXh0cmFjdGFibGUgZnJvbSB0aGUgcHJvdmlkZWQgYmluYXJ5ICJjYXRhbG9nIiBzeXNmcyBlbnRyeS4KKworV2hhdDoJCS9zeXMvYnVzL2V2ZW50X3NvdXJjZS9kZXZpY2VzL2h2XzI0eDcvaW50ZXJmYWNlL2NhdGFsb2dfdmVyc2lvbgorRGF0ZToJCUZlYnJ1YXJ5IDIwMTQKK0NvbnRhY3Q6CUxpbnV4IG9uIFBvd2VyUEMgRGV2ZWxvcGVyIExpc3QgPGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnPgorRGVzY3JpcHRpb246CisJCUV4cG9zZXMgdGhlICJ2ZXJzaW9uIiBmaWVsZCBvZiB0aGUgMjR4NyBjYXRhbG9nLiBUaGlzIGlzIGFsc28KKwkJZXh0cmFjdGFibGUgZnJvbSB0aGUgcHJvdmlkZWQgYmluYXJ5ICJjYXRhbG9nIiBzeXNmcyBlbnRyeS4KKworV2hhdDoJCS9zeXMvYnVzL2V2ZW50X3NvdXJjZS9kZXZpY2VzL2h2XzI0eDcvZXZlbnRfZGVzY3MvPGV2ZW50LW5hbWU+CitEYXRlOgkJRmVicnVhcnkgMjAxNAorQ29udGFjdDoJTGludXggb24gUG93ZXJQQyBEZXZlbG9wZXIgTGlzdCA8bGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmc+CitEZXNjcmlwdGlvbjoKKwkJUHJvdmlkZXMgdGhlIGRlc2NyaXB0aW9uIG9mIGEgcGFydGljdWxhciBldmVudCBhcyBwcm92aWRlZCBieQorCQl0aGUgZmlybXdhcmUuIElmIGZpcm13YXJlIGRvZXMgbm90IHByb3ZpZGUgYSBkZXNjcmlwdGlvbiwgbm8KKwkJZmlsZSB3aWxsIGJlIGNyZWF0ZWQuCisKKwkJTm90ZSB0aGF0IHRoZSBldmVudC1uYW1lIGxhY2tzIHRoZSBkb21haW4gc3VmZml4IGFwcGVuZGVkIGZvcgorCQlldmVudHMgaW4gdGhlIGV2ZW50cy8gZGlyLgorCitXaGF0OgkJL3N5cy9idXMvZXZlbnRfc291cmNlL2RldmljZXMvaHZfMjR4Ny9ldmVudF9sb25nX2Rlc2NzLzxldmVudC1uYW1lPgorRGF0ZToJCUZlYnJ1YXJ5IDIwMTQKK0NvbnRhY3Q6CUxpbnV4IG9uIFBvd2VyUEMgRGV2ZWxvcGVyIExpc3QgPGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnPgorRGVzY3JpcHRpb246CisJCVByb3ZpZGVzIHRoZSAibG9uZyIgZGVzY3JpcHRpb24gb2YgYSBwYXJ0aWN1bGFyIGV2ZW50IGFzCisJCXByb3ZpZGVkIGJ5IHRoZSBmaXJtd2FyZS4gSWYgZmlybXdhcmUgZG9lcyBub3QgcHJvdmlkZSBhCisJCWRlc2NyaXB0aW9uLCBubyBmaWxlIHdpbGwgYmUgY3JlYXRlZC4KKworCQlOb3RlIHRoYXQgdGhlIGV2ZW50LW5hbWUgbGFja3MgdGhlIGRvbWFpbiBzdWZmaXggYXBwZW5kZWQgZm9yCisJCWV2ZW50cyBpbiB0aGUgZXZlbnRzLyBkaXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1ldmVudF9zb3VyY2UtZGV2aWNlcy1odl9ncGNpIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZXZlbnRfc291cmNlLWRldmljZXMtaHZfZ3BjaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2E0ZTU1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZXZlbnRfc291cmNlLWRldmljZXMtaHZfZ3BjaQpAQCAtMCwwICsxLDQzIEBACitXaGF0OgkJL3N5cy9idXMvZXZlbnRfc291cmNlL2RldmljZXMvaHZfZ3BjaS9pbnRlcmZhY2UvY29sbGVjdF9wcml2aWxlZ2VkCitEYXRlOgkJRmVicnVhcnkgMjAxNAorQ29udGFjdDoJTGludXggb24gUG93ZXJQQyBEZXZlbG9wZXIgTGlzdCA8bGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmc+CitEZXNjcmlwdGlvbjoKKwkJJzAnIGlmIHRoZSBoeXBlcnZpc29yIGlzIGNvbmZpZ3VyZWQgdG8gZm9yYmlkIGFjY2VzcyB0byBldmVudAorCQljb3VudGVycyBiZWluZyBhY2N1bXVsYXRlZCBieSBvdGhlciBndWVzdHMgYW5kIHRvIHBoeXNpY2FsCisJCWRvbWFpbiBldmVudCBjb3VudGVycy4KKwkJJzEnIGlmIHRoYXQgYWNjZXNzIGlzIGFsbG93ZWQuCisKK1doYXQ6CQkvc3lzL2J1cy9ldmVudF9zb3VyY2UvZGV2aWNlcy9odl9ncGNpL2ludGVyZmFjZS9nYQorRGF0ZToJCUZlYnJ1YXJ5IDIwMTQKK0NvbnRhY3Q6CUxpbnV4IG9uIFBvd2VyUEMgRGV2ZWxvcGVyIExpc3QgPGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnPgorRGVzY3JpcHRpb246CisJCTAgb3IgMS4gSW5kaWNhdGVzIHdoZXRoZXIgd2UgaGF2ZSBhY2Nlc3MgdG8gIkdBIiBldmVudHMgKGxpc3RlZAorCQlpbiBhcmNoL3Bvd2VycGMvcGVyZi9odi1ncGNpLmgpLgorCitXaGF0OgkJL3N5cy9idXMvZXZlbnRfc291cmNlL2RldmljZXMvaHZfZ3BjaS9pbnRlcmZhY2UvZXhwYW5kZWQKK0RhdGU6CQlGZWJydWFyeSAyMDE0CitDb250YWN0OglMaW51eCBvbiBQb3dlclBDIERldmVsb3BlciBMaXN0IDxsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQkwIG9yIDEuIEluZGljYXRlcyB3aGV0aGVyIHdlIGhhdmUgYWNjZXNzIHRvICJFWFBBTkRFRCIgZXZlbnRzIChsaXN0ZWQKKwkJaW4gYXJjaC9wb3dlcnBjL3BlcmYvaHYtZ3BjaS5oKS4KKworV2hhdDoJCS9zeXMvYnVzL2V2ZW50X3NvdXJjZS9kZXZpY2VzL2h2X2dwY2kvaW50ZXJmYWNlL2xhYgorRGF0ZToJCUZlYnJ1YXJ5IDIwMTQKK0NvbnRhY3Q6CUxpbnV4IG9uIFBvd2VyUEMgRGV2ZWxvcGVyIExpc3QgPGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnPgorRGVzY3JpcHRpb246CisJCTAgb3IgMS4gSW5kaWNhdGVzIHdoZXRoZXIgd2UgaGF2ZSBhY2Nlc3MgdG8gIkxBQiIgZXZlbnRzIChsaXN0ZWQKKwkJaW4gYXJjaC9wb3dlcnBjL3BlcmYvaHYtZ3BjaS5oKS4KKworV2hhdDoJCS9zeXMvYnVzL2V2ZW50X3NvdXJjZS9kZXZpY2VzL2h2X2dwY2kvaW50ZXJmYWNlL3ZlcnNpb24KK0RhdGU6CQlGZWJydWFyeSAyMDE0CitDb250YWN0OglMaW51eCBvbiBQb3dlclBDIERldmVsb3BlciBMaXN0IDxsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlBIG51bWJlciBpbmRpY2F0aW5nIHRoZSB2ZXJzaW9uIG9mIHRoZSBncGNpIGludGVyZmFjZSB0aGF0IHRoZQorCQloeXBlcnZpc29yIHJlcG9ydHMgc3VwcG9ydGluZy4KKworV2hhdDoJCS9zeXMvYnVzL2V2ZW50X3NvdXJjZS9kZXZpY2VzL2h2X2dwY2kvaW50ZXJmYWNlL2tlcm5lbF92ZXJzaW9uCitEYXRlOgkJRmVicnVhcnkgMjAxNAorQ29udGFjdDoJTGludXggb24gUG93ZXJQQyBEZXZlbG9wZXIgTGlzdCA8bGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmc+CitEZXNjcmlwdGlvbjoKKwkJQSBudW1iZXIgaW5kaWNhdGluZyB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIGdwY2kgaW50ZXJmYWNlCisJCXRoYXQgdGhlIGtlcm5lbCBpcyBhd2FyZSBvZi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWZjb2UgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mY29lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1N2RmMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mY29lCkBAIC0wLDAgKzEsMTE2IEBACitXaGF0OgkJL3N5cy9idXMvZmNvZS8KK0RhdGU6CQlBdWd1c3QgMjAxMgorS2VybmVsVmVyc2lvbjoJVEJECitDb250YWN0OglSb2JlcnQgTG92ZSA8cm9iZXJ0LncubG92ZUBpbnRlbC5jb20+LCBkZXZlbEBvcGVuLWZjb2Uub3JnCitEZXNjcmlwdGlvbjoJVGhlIEZDb0UgYnVzLiBBdHRyaWJ1dGVzIGluIHRoaXMgZGlyZWN0b3J5IGFyZSBjb250cm9sIGludGVyZmFjZXMuCitBdHRyaWJ1dGVzOgorCisJY3Rscl9jcmVhdGU6ICdGQ29FIENvbnRyb2xsZXInIGluc3RhbmNlIGNyZWF0aW9uIGludGVyZmFjZS4gV3JpdGluZyBhbgorCQkgICAgIDxpZm5hbWU+IHRvIHRoaXMgZmlsZSB3aWxsIGFsbG9jYXRlIGFuZCBwb3B1bGF0ZSBzeXNmcyB3aXRoIGEKKwkJICAgICBmY29lX2N0bHJfZGV2aWNlIChjdGxyX1gpLiBUaGUgdXNlciBjYW4gdGhlbiBjb25maWd1cmUgYW55CisJCSAgICAgcGVyLXBvcnQgc2V0dGluZ3MgYW5kIGZpbmFsbHkgd3JpdGUgdG8gdGhlIGZjb2VfY3Rscl9kZXZpY2UncworCQkgICAgICdzdGFydCcgYXR0cmlidXRlIHRvIGJlZ2luIHRoZSBrZXJuZWwncyBkaXNjb3ZlcnkgYW5kIGxvZ2luCisJCSAgICAgcHJvY2Vzcy4KKworCWN0bHJfZGVzdHJveTogJ0ZDb0UgQ29udHJvbGxlcicgaW5zdGFuY2UgcmVtb3ZhbCBpbnRlcmZhY2UuIFdyaXRpbmcgYQorCQkgICAgICAgZmNvZV9jdGxyX2RldmljZSdzIHN5c2ZzIG5hbWUgdG8gdGhpcyBmaWxlIHdpbGwgbG9nIHRoZQorCQkgICAgICAgZmNvZV9jdGxyX2RldmljZSBvdXQgb2YgdGhlIGZhYnJpYyBvciBvdGhlcndpc2UgY29ubmVjdGVkCisJCSAgICAgICBGQ29FIGRldmljZXMuIEl0IHdpbGwgYWxzbyBmcmVlIGFsbCBrZXJuZWwgbWVtb3J5IGFsbG9jYXRlZAorCQkgICAgICAgZm9yIHRoaXMgZmNvZV9jdGxyX2RldmljZSBhbmQgYW55IHN0cnVjdHVyZXMgYXNzb2NpYXRlZAorCQkgICAgICAgd2l0aCBpdCwgdGhpcyBpbmNsdWRlcyB0aGUgc2NzaV9ob3N0LgorCitXaGF0OgkJL3N5cy9idXMvZmNvZS9kZXZpY2VzL2N0bHJfWAorRGF0ZToJCU1hcmNoIDIwMTIKK0tlcm5lbFZlcnNpb246CVRCRAorQ29udGFjdDoJUm9iZXJ0IExvdmUgPHJvYmVydC53LmxvdmVAaW50ZWwuY29tPiwgZGV2ZWxAb3Blbi1mY29lLm9yZworRGVzY3JpcHRpb246CSdGQ29FIENvbnRyb2xsZXInIGluc3RhbmNlcyBvbiB0aGUgZmNvZSBidXMuCisJCVRoZSBGQ29FIENvbnRyb2xsZXIgbm93IGhhcyBhIHRocmVlIHN0YWdlIGNyZWF0aW9uIHByb2Nlc3MuCisJCTEpIFdyaXRlIGludGVyZmFjZSBuYW1lIHRvIGN0bHJfY3JlYXRlIDIpIENvbmZpZ3VyZSB0aGUgRkNvRQorCQlDb250cm9sbGVyIChjdGxyX1gpIDMpIEVuYWJsZSB0aGUgRkNvRSBDb250cm9sbGVyIHRvIGJlZ2luCisJCWRpc2NvdmVyeSBhbmQgbG9naW4uIFRoZSBGQ29FIENvbnRyb2xsZXIgaXMgZGVzdHJveWVkIGJ5CisJCXdyaXRpbmcgaXQncyBuYW1lLCBpLmUuIGN0bHJfWCB0byB0aGUgY3Rscl9kZWxldGUgZmlsZS4KKworQXR0cmlidXRlczoKKworCWZjZl9kZXZfbG9zc190bW86IERldmljZSBsb3NzIHRpbWVvdXQgcGVyaW9kIChzZWUgYmVsb3cpLiBDaGFuZ2luZworCQkJICB0aGlzIHZhbHVlIHdpbGwgY2hhbmdlIHRoZSBkZXZfbG9zc190bW8gZm9yIGFsbAorCQkJICBGQ0ZzIGRpc2NvdmVyZWQgYnkgdGhpcyBjb250cm9sbGVyLgorCisJbW9kZToJCSAgRGlzcGxheSBvciBjaGFuZ2UgdGhlIEZDb0UgQ29udHJvbGxlcidzIG1vZGUuIFBvc3NpYmxlCisJCQkgIG1vZGVzIGFyZSAnRmFicmljJyBhbmQgJ1ZOMlZOJy4gSWYgYSBGQ29FIENvbnRyb2xsZXIKKwkJCSAgaXMgc3RhcnRlZCBpbiAnRmFicmljJyBtb2RlIHRoZW4gRklQIEZDRiBkaXNjb3ZlcnkgaXMKKwkJCSAgaW5pdGlhdGVkIGFuZCB1bHRpbWF0ZWx5IGEgZmFicmljIGxvZ2luIGlzIGF0dGVtcHRlZC4KKwkJCSAgSWYgYSBGQ29FIENvbnRyb2xsZXIgaXMgc3RhcnRlZCBpbiAnVk4yVk4nIG1vZGUgdGhlbgorCQkJICBGSVAgVk4yVk4gZGlzY292ZXJ5IGFuZCBsb2dpbiBpcyBwZXJmb3JtZWQuIEEgRkNvRQorCQkJICBDb250cm9sbGVyIG9ubHkgc3VwcG9ydHMgb25lIG1vZGUgYXQgYSB0aW1lLgorCisJZW5hYmxlZDoJICBXaGV0aGVyIGFuIEZDb0UgY29udHJvbGxlciBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgorCQkJICAwIGlmIGRpc2FibGVkLCAxIGlmIGVuYWJsZWQuIFdyaXRpbmcgZWl0aGVyIDAgb3IgMQorCQkJICB0byB0aGlzIGZpbGUgd2lsbCBlbmFibGUgb3IgZGlzYWJsZSB0aGUgRkNvRSBjb250cm9sbGVyLgorCisJbGVzYi9saW5rX2ZhaWw6ICAgTGluayBFcnJvciBTdGF0dXMgQmxvY2sgKExFU0IpIGxpbmsgZmFpbHVyZSBjb3VudC4KKworCWxlc2IvdmxpbmtfZmFpbDogIExpbmsgRXJyb3IgU3RhdHVzIEJsb2NrIChMRVNCKSB2aXJ0dWFsIGxpbmsKKwkJCSAgZmFpbHVyZSBjb3VudC4KKworCWxlc2IvbWlzc19ma2E6ICAgIExpbmsgRXJyb3IgU3RhdHVzIEJsb2NrIChMRVNCKSBtaXNzZWQgRkNvRQorCQkJICBJbml0aWFsaXphdGlvbiBQcm90b2NvbCAoRklQKSBLZWVwLUFsaXZlcyAoRktBKS4KKworCWxlc2Ivc3ltYl9lcnI6ICAgIExpbmsgRXJyb3IgU3RhdHVzIEJsb2NrIChMRVNCKSBzeW1ib2xpYyBlcnJvciBjb3VudC4KKworCWxlc2IvZXJyX2Jsb2NrOiAgIExpbmsgRXJyb3IgU3RhdHVzIEJsb2NrIChMRVNCKSBibG9jayBlcnJvciBjb3VudC4KKworCWxlc2IvZmNzX2Vycm9yOiAgIExpbmsgRXJyb3IgU3RhdHVzIEJsb2NrIChMRVNCKSBGaWJyZSBDaGFubmVsCisJCQkgIFNlcnZpY2VzIGVycm9yIGNvdW50LgorCitOb3RlczogY3Rscl9YIChnbG9iYWwgaW5jcmVtZW50IHN0YXJ0aW5nIGF0IDApCisKK1doYXQ6CQkvc3lzL2J1cy9mY29lL2RldmljZXMvZmNmX1gKK0RhdGU6CQlNYXJjaCAyMDEyCitLZXJuZWxWZXJzaW9uOglUQkQKK0NvbnRhY3Q6CVJvYmVydCBMb3ZlIDxyb2JlcnQudy5sb3ZlQGludGVsLmNvbT4sIGRldmVsQG9wZW4tZmNvZS5vcmcKK0Rlc2NyaXB0aW9uOgknRkNvRSBGQ0YnIGluc3RhbmNlcyBvbiB0aGUgZmNvZSBidXMuIEEgRkNGIGlzIGEgRmlicmUgQ2hhbm5lbAorCQlGb3J3YXJkZXIsIHdoaWNoIGlzIGEgRkNvRSBzd2l0Y2ggdGhhdCBjYW4gYWNjZXB0IEZDb0UKKwkJKEV0aGVybmV0KSBwYWNrZXRzLCB1bnBhY2sgdGhlbSwgYW5kIGZvcndhcmQgdGhlIGVtYmVkZGVkCisJCUZpYnJlIENoYW5uZWwgZnJhbWVzIGludG8gYSBGQyBmYWJyaWMuIEl0IGNhbiBhbHNvIHRha2UKKwkJb3V0Ym91bmQgRkMgZnJhbWVzIGFuZCBwYWNrIHRoZW0gaW4gRXRoZXJuZXQgcGFja2V0cyB0bworCQliZSBzZW50IHRvIHRoZWlyIGRlc3RpbmF0aW9uIG9uIHRoZSBFdGhlcm5ldCBzZWdtZW50LgorQXR0cmlidXRlczoKKworCWZhYnJpY19uYW1lOiBJZGVudGlmaWVzIHRoZSBmYWJyaWMgdGhhdCB0aGUgRkNGIHNlcnZpY2VzLgorCisJc3dpdGNoX25hbWU6IElkZW50aWZpZXMgdGhlIEZDRi4KKworCXByaW9yaXR5OiAgICBUaGUgc3dpdGNoJ3MgcHJpb3JpdHkgYW1vbmdzdCBvdGhlciBGQ0ZzIG9uIHRoZSBzYW1lCisJCSAgICAgZmFicmljLgorCisJc2VsZWN0ZWQ6ICAgIDEgaW5kaWNhdGVzIHRoYXQgdGhlIHN3aXRjaCBoYXMgYmVlbiBzZWxlY3RlZCBmb3IgdXNlOworCQkgICAgIDAgaW5kaWNhdGVzIHRoYXQgdGhlIHN3aXRjaCB3aWxsIG5vdCBiZSB1c2VkLgorCisJZmNfbWFwOiAgICAgIFRoZSBGaWJyZSBDaGFubmVsIE1BUAorCisJdmZpZDoJICAgICBUaGUgVmlydHVhbCBGYWJyaWMgSUQKKworCW1hYzogICAgICAgICBUaGUgRkNGJ3MgTUFDIGFkZHJlc3MKKworCWZrYV9wZXJpb2Q6ICBUaGUgRklQIEtlZXAtQWxpdmUgcGVyaW9kCisKKwlmYWJyaWNfc3RhdGU6IFRoZSBpbnRlcm5hbCBrZXJuZWwgc3RhdGUKKwkJICAgICAgIlVua25vd24iIC0gSW5pdGlhbGl6YXRpb24gdmFsdWUKKwkJICAgICAgIkRpc2Nvbm5lY3RlZCIgLSBObyBsaW5rIHRvIHRoZSBGQ0YvZmFicmljCisJCSAgICAgICJDb25uZWN0ZWQiIC0gSG9zdCBpcyBjb25uZWN0ZWQgdG8gdGhlIEZDRgorCQkgICAgICAiRGVsZXRlZCIgLSBGQ0YgaXMgYmVpbmcgcmVtb3ZlZCBmcm9tIHRoZSBzeXN0ZW0KKworCWRldl9sb3NzX3RtbzogVGhlIGRldmljZSBsb3NzIHRpbWVvdXQgcGVyaW9kIGZvciB0aGlzIEZDRi4KKworTm90ZXM6IEEgZGV2aWNlIGxvc3MgaW5mcmFzdHJ1Y3R1cmUgc2ltaWxhciB0byB0aGUgRkMgVHJhbnNwb3J0J3MKKyAgICAgICBpcyBwcmVzZW50IGluIGZjb2Vfc3lzZnMuIEl0IGlzIG5pY2UgdG8gaGF2ZSBzbyB0aGF0IGEKKyAgICAgICBsaW5rIGZsYXBwaW5nIGFkYXB0ZXIgZG9lc24ndCBjb250aW51YWxseSBhZHZhbmNlIHRoZSBjb3VudAorICAgICAgIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGRpc2NvdmVyZWQgRkNGLiBGQ0ZzIHdpbGwgZXhpc3QgaW4gYQorICAgICAgICJEaXNjb25uZWN0ZWQiIHN0YXRlIHVudGlsIGVpdGhlciB0aGUgdGltZXIgZXhwaXJlcyBhbmQgdGhlCisgICAgICAgRkNGIGJlY29tZXMgIkRlbGV0ZWQiIG9yIHRoZSBGQ0YgaXMgcmVkaXNjb3ZlcmVkIGFuZCBiZWNvbWVzCisgICAgICAgIkNvbm5lY3RlZC4iCisKKworVXNlcnM6IFRoZSBmaXJzdCB1c2VyIG9mIHRoaXMgaW50ZXJmYWNlIHdpbGwgYmUgdGhlIGZjb2VhZG0gYXBwbGljYXRpb24sCisgICAgICAgd2hpY2ggaXMgY29tbW9ubHkgcGFja2FnZWQgaW4gdGhlIGZjb2UtdXRpbHMgcGFja2FnZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWhzaSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWhzaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjFiMjgyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaHNpCkBAIC0wLDAgKzEsMTkgQEAKK1doYXQ6CQkvc3lzL2J1cy9oc2kKK0RhdGU6CQlBcHJpbCAyMDEyCitLZXJuZWxWZXJzaW9uOgkzLjQKK0NvbnRhY3Q6CUNhcmxvcyBDaGluZWEgPGNhcmxvcy5jaGluZWFAbm9raWEuY29tPgorRGVzY3JpcHRpb246CisJCUhpZ2ggU3BlZWQgU3luY2hyb25vdXMgU2VyaWFsIEludGVyZmFjZSAoSFNJKSBpcyBhCisJCXNlcmlhbCBpbnRlcmZhY2UgbWFpbmx5IHVzZWQgZm9yIGNvbm5lY3RpbmcgYXBwbGljYXRpb24KKwkJZW5naW5lcyAoQVBFKSB3aXRoIGNlbGx1bGFyIG1vZGVtIGVuZ2luZXMgKENNVCkgaW4gY2VsbHVsYXIKKwkJaGFuZHNldHMuCisJCVRoZSBidXMgd2lsbCBiZSBwb3B1bGF0ZWQgd2l0aCBkZXZpY2VzIChoc2lfY2xpZW50cykgcmVwcmVzZW50aW5nCisJCXRoZSBwcm90b2NvbHMgYXZhaWxhYmxlIGluIHRoZSBzeXN0ZW0uIEJ1cyBkcml2ZXJzIGltcGxlbWVudAorCQl0aG9zZSBwcm90b2NvbHMuCisKK1doYXQ6CQkvc3lzL2J1cy9oc2kvZGV2aWNlcy8uLi4vbW9kYWxpYXMKK0RhdGU6CQlBcHJpbCAyMDEyCitLZXJuZWxWZXJzaW9uOgkzLjQKK0NvbnRhY3Q6CUNhcmxvcyBDaGluZWEgPGNhcmxvcy5jaGluZWFAbm9raWEuY29tPgorRGVzY3JpcHRpb246CVN0b3JlcyB0aGUgc2FtZSBNT0RBTElBUyB2YWx1ZSBlbWl0dGVkIGJ5IHVldmVudAorCQlGb3JtYXQ6IGhzaTo8aHNpX2NsaWVudCBkZXZpY2UgbmFtZT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWkyYy1kZXZpY2VzLWZzYTk0ODAgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1pMmMtZGV2aWNlcy1mc2E5NDgwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkZTI2OWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1pMmMtZGV2aWNlcy1mc2E5NDgwCkBAIC0wLDAgKzEsMjEgQEAKK1doYXQ6CQkvc3lzL2J1cy9pMmMvZGV2aWNlcy8uLi4vZGV2aWNlCitEYXRlOgkJRmVicnVhcnkgMjAxMQorQ29udGFjdDoJTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgorRGVzY3JpcHRpb246CisJCXNob3cgd2hhdCBkZXZpY2UgaXMgYXR0YWNoZWQKKwkJTk9ORSAtIG5vIGRldmljZQorCQlVU0IgLSBVU0IgZGV2aWNlIGlzIGF0dGFjaGVkCisJCVVBUlQgLSBVQVJUIGlzIGF0dGFjaGVkCisJCUNIQVJHRVIgLSBDaGFyZ2VyIGlzIGF0dGFjZWQKKwkJSklHIC0gSklHIGlzIGF0dGFjaGVkCisKK1doYXQ6CQkvc3lzL2J1cy9pMmMvZGV2aWNlcy8uLi4vc3dpdGNoCitEYXRlOgkJRmVicnVhcnkgMjAxMQorQ29udGFjdDoJTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgorRGVzY3JpcHRpb246CisJCXNob3cgb3Igc2V0IHRoZSBzdGF0ZSBvZiBtYW51YWwgc3dpdGNoCisJCVZBVURJTyAtIHN3aXRjaCB0byBWQVVESU8gcGF0aAorCQlVQVJUIC0gc3dpdGNoIHRvIFVBUlQgcGF0aAorCQlBVURJTyAtIHN3aXRjaCB0byBBVURJTyBwYXRoCisJCURIT1NUIC0gc3dpdGNoIHRvIERIT1NUIHBhdGgKKwkJQVVUTyAtIHN3aXRjaCBhdXRvbWF0aWNhbGx5IGJ5IGRldmljZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaTJjLWRldmljZXMtaG02MzUyIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaTJjLWRldmljZXMtaG02MzUyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlYjJlNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1pMmMtZGV2aWNlcy1obTYzNTIKQEAgLTAsMCArMSwyMSBAQAorV2hlcmU6CQkvc3lzL2J1cy9pMmMvZGV2aWNlcy8uLi4vaGVhZGluZzBfaW5wdXQKK0RhdGU6CQlBcHJpbCAyMDEwCitLZXJuZWwgVmVyc2lvbjogMi42LjM2PworQ29udGFjdDoJYWxhbi5jb3hAaW50ZWwuY29tCitEZXNjcmlwdGlvbjoJUmVwb3J0cyB0aGUgY3VycmVudCBoZWFkaW5nIGZyb20gdGhlIGNvbXBhc3MgYXMgYSBmbG9hdGluZworCQlwb2ludCB2YWx1ZSBpbiBkZWdyZWVzLgorCitXaGVyZToJCS9zeXMvYnVzL2kyYy9kZXZpY2VzLy4uLi9wb3dlcl9zdGF0ZQorRGF0ZToJCUFwcmlsIDIwMTAKK0tlcm5lbCBWZXJzaW9uOiAyLjYuMzY/CitDb250YWN0OglhbGFuLmNveEBpbnRlbC5jb20KK0Rlc2NyaXB0aW9uOglTZXRzIHRoZSBwb3dlciBzdGF0ZSBvZiB0aGUgZGV2aWNlLiAwIHNldHMgdGhlIGRldmljZSBpbnRvCisJCXNsZWVwIG1vZGUsIDEgd2FrZXMgaXQgdXAuCisKK1doZXJlOgkJL3N5cy9idXMvaTJjL2RldmljZXMvLi4uL2NhbGlicmF0aW9uCitEYXRlOgkJQXByaWwgMjAxMAorS2VybmVsIFZlcnNpb246IDIuNi4zNj8KK0NvbnRhY3Q6CWFsYW4uY294QGludGVsLmNvbQorRGVzY3JpcHRpb246CVNldHMgdGhlIGNhbGlicmF0aW9uIG9uIG9yIG9mZiAoMSA9IG9uLCAwID0gb2ZmKS4gU2VlIHRoZQorCQljaGlwIGRhdGEgc2hlZXQuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWkyYy1kZXZpY2VzLWxtMzUzMyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWkyYy1kZXZpY2VzLWxtMzUzMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjYyMjMwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaTJjLWRldmljZXMtbG0zNTMzCkBAIC0wLDAgKzEsMTUgQEAKK1doYXQ6CQkvc3lzL2J1cy9pMmMvZGV2aWNlcy8uLi4vb3V0cHV0X2h2bGVkW25dCitEYXRlOgkJQXByaWwgMjAxMgorS2VybmVsVmVyc2lvbjoJMy41CitDb250YWN0OglKb2hhbiBIb3ZvbGQgPGpob3ZvbGRAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVNldCB0aGUgY29udHJvbGxpbmcgYmFja2xpZ2h0IGRldmljZSBmb3IgaGlnaC12b2x0YWdlIGN1cnJlbnQKKwkJc2luayBIVkxFRFtuXSAobiA9IDEsIDIpICgwLCAxKS4KKworV2hhdDoJCS9zeXMvYnVzL2kyYy9kZXZpY2VzLy4uLi9vdXRwdXRfbHZsZWRbbl0KK0RhdGU6CQlBcHJpbCAyMDEyCitLZXJuZWxWZXJzaW9uOgkzLjUKK0NvbnRhY3Q6CUpvaGFuIEhvdm9sZCA8amhvdm9sZEBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2V0IHRoZSBjb250cm9sbGluZyBsZWQgZGV2aWNlIGZvciBsb3ctdm9sdGFnZSBjdXJyZW50IHNpbmsKKwkJTFZMRURbbl0gKG4gPSAxLi41KSAoMC4uMykuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1paW8gYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1paW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQzOWMyYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWlpbwpAQCAtMCwwICsxLDE0OTMgQEAKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWAorS2VybmVsVmVyc2lvbjoJMi42LjM1CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJSGFyZHdhcmUgY2hpcCBvciBkZXZpY2UgYWNjZXNzZWQgYnkgb25lIGNvbW11bmljYXRpb24gcG9ydC4KKwkJQ29ycmVzcG9uZHMgdG8gYSBncm91cGluZyBvZiBzZW5zb3IgY2hhbm5lbHMuIFggaXMgdGhlIElJTworCQlpbmRleCBvZiB0aGUgZGV2aWNlLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvdHJpZ2dlclgKK0tlcm5lbFZlcnNpb246CTIuNi4zNQorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUFuIGV2ZW50IGRyaXZlbiBkcml2ZXIgb2YgZGF0YSBjYXB0dXJlIHRvIGFuIGluIGtlcm5lbCBidWZmZXIuCisJCU1heSBiZSBwcm92aWRlZCBieSBhIGRldmljZSBkcml2ZXIgdGhhdCBhbHNvIGhhcyBhbiBJSU8gZGV2aWNlCisJCWJhc2VkIG9uIGhhcmR3YXJlIGdlbmVyYXRlZCBldmVudHMgKGUuZy4gZGF0YSByZWFkeSkgb3IKKwkJcHJvdmlkZWQgYnkgYSBzZXBhcmF0ZSBkcml2ZXIgZm9yIG90aGVyIGhhcmR3YXJlIChlLmcuCisJCXBlcmlvZGljIHRpbWVyLCBHUElPIG9yIGhpZ2ggcmVzb2x1dGlvbiB0aW1lcikuCisJCUNvbnRhaW5zIHRyaWdnZXIgdHlwZSBzcGVjaWZpYyBlbGVtZW50cy4gVGhlc2UgZG8gbm90CisJCWdlbmVyYWxpemUgd2VsbCBhbmQgaGVuY2UgYXJlIG5vdCBkb2N1bWVudGVkIGluIHRoaXMgZmlsZS4KKwkJWCBpcyB0aGUgSUlPIGluZGV4IG9mIHRoZSB0cmlnZ2VyLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvYnVmZmVyCitLZXJuZWxWZXJzaW9uOgkyLjYuMzUKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlEaXJlY3Rvcnkgb2YgYXR0cmlidXRlcyByZWxhdGluZyB0byB0aGUgYnVmZmVyIGZvciB0aGUgZGV2aWNlLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvbmFtZQorS2VybmVsVmVyc2lvbjoJMi42LjM1CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJRGVzY3JpcHRpb24gb2YgdGhlIHBoeXNpY2FsIGNoaXAgLyBkZXZpY2UgZm9yIGRldmljZSBYLgorCQlUeXBpY2FsbHkgYSBwYXJ0IG51bWJlci4KKworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL3NhbXBsaW5nX2ZyZXF1ZW5jeQorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2J1ZmZlci9zYW1wbGluZ19mcmVxdWVuY3kKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy90cmlnZ2VyWC9zYW1wbGluZ19mcmVxdWVuY3kKK0tlcm5lbFZlcnNpb246CTIuNi4zNQorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCVNvbWUgZGV2aWNlcyBoYXZlIGludGVybmFsIGNsb2Nrcy4gIFRoaXMgcGFyYW1ldGVyIHNldHMgdGhlCisJCXJlc3VsdGluZyBzYW1wbGluZyBmcmVxdWVuY3kuICBJbiBtYW55IGRldmljZXMgdGhpcworCQlwYXJhbWV0ZXIgaGFzIGFuIGVmZmVjdCBvbiBpbnB1dCBmaWx0ZXJzIGV0Yy4gcmF0aGVyIHRoYW4KKwkJc2ltcGx5IGNvbnRyb2xsaW5nIHdoZW4gdGhlIGlucHV0IGlzIHNhbXBsZWQuICBBcyB0aGlzCisJCWVmZmVjdHMgZGF0YSByZWFkeSB0cmlnZ2VycywgaGFyZHdhcmUgYnVmZmVycyBhbmQgdGhlIHN5c2ZzCisJCWRpcmVjdCBhY2Nlc3MgaW50ZXJmYWNlcywgaXQgbWF5IGJlIGZvdW5kIGluIGFueSBvZiB0aGUKKwkJcmVsZXZhbnQgZGlyZWN0b3JpZXMuICBJZiBpdCBlZmZlY3RzIGFsbCBvZiB0aGUgYWJvdmUKKwkJdGhlbiBpdCBpcyB0byBiZSBmb3VuZCBpbiB0aGUgYmFzZSBkZXZpY2UgZGlyZWN0b3J5LgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvc2FtcGxpbmdfZnJlcXVlbmN5X2F2YWlsYWJsZQorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2J1ZmZlci9zYW1wbGluZ19mcmVxdWVuY3lfYXZhaWxhYmxlCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvdHJpZ2dlclgvc2FtcGxpbmdfZnJlcXVlbmN5X2F2YWlsYWJsZQorS2VybmVsVmVyc2lvbjoJMi42LjM1CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJV2hlbiB0aGUgaW50ZXJuYWwgc2FtcGxpbmcgY2xvY2sgY2FuIG9ubHkgdGFrZSBhIHNtYWxsCisJCWRpc2NyZXRlIHNldCBvZiB2YWx1ZXMsIHRoaXMgZmlsZSBsaXN0cyB0aG9zZSBhdmFpbGFibGUuCisKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9vdmVyc2FtcGxpbmdfcmF0aW8KK0tlcm5lbFZlcnNpb246CTIuNi4zOAorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUhhcmR3YXJlIGRlcGVuZGVudCBBREMgb3ZlcnNhbXBsaW5nLiBDb250cm9scyB0aGUgc2FtcGxpbmcgcmF0aW8KKwkJb2YgdGhlIGRpZ2l0YWwgZmlsdGVyIGlmIGF2YWlsYWJsZS4KKworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL292ZXJzYW1wbGluZ19yYXRpb19hdmFpbGFibGUKK0tlcm5lbFZlcnNpb246CTIuNi4zOAorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUhhcmR3YXJlIGRlcGVuZGVudCB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBvdmVyc2FtcGxpbmcgZmlsdGVyLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fdm9sdGFnZVlfcmF3CitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fdm9sdGFnZVlfc3VwcGx5X3JhdworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3ZvbHRhZ2VZX2lfcmF3CitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fdm9sdGFnZVlfcV9yYXcKK0tlcm5lbFZlcnNpb246CTIuNi4zNQorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCVJhdyAodW5zY2FsZWQgbm8gYmlhcyByZW1vdmFsIGV0Yy4pIHZvbHRhZ2UgbWVhc3VyZW1lbnQgZnJvbQorCQljaGFubmVsIFkuIEluIHNwZWNpYWwgY2FzZXMgd2hlcmUgdGhlIGNoYW5uZWwgZG9lcyBub3QKKwkJY29ycmVzcG9uZCB0byBleHRlcm5hbGx5IGF2YWlsYWJsZSBpbnB1dCBvbmUgb2YgdGhlIG5hbWVkCisJCXZlcnNpb25zIG1heSBiZSB1c2VkLiBUaGUgbnVtYmVyIG11c3QgYWx3YXlzIGJlIHNwZWNpZmllZCBhbmQKKwkJdW5pcXVlIHRvIGFsbG93IGFzc29jaWF0aW9uIHdpdGggZXZlbnQgY29kZXMuIFVuaXRzIGFmdGVyCisJCWFwcGxpY2F0aW9uIG9mIHNjYWxlIGFuZCBvZmZzZXQgYXJlIG1pbGxpdm9sdHMuCisKKwkJQ2hhbm5lbHMgd2l0aCAnaScgYW5kICdxJyBtb2RpZmllcnMgYWx3YXlzIGV4aXN0IGluIHBhaXJzIGFuZCBib3RoCisJCWNoYW5uZWxzIHJlZmVyIHRvIHRoZSBzYW1lIHNpZ25hbC4gVGhlICdpJyBjaGFubmVsIGNvbnRhaW5zIHRoZSBpbi1waGFzZQorCQljb21wb25lbnQgb2YgdGhlIHNpZ25hbCB3aGlsZSB0aGUgJ3EnIGNoYW5uZWwgY29udGFpbnMgdGhlIHF1YWRyYXR1cmUKKwkJY29tcG9uZW50LgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fdm9sdGFnZVktdm9sdGFnZVpfcmF3CitLZXJuZWxWZXJzaW9uOgkyLjYuMzUKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlSYXcgKHVuc2NhbGVkKSBkaWZmZXJlbnRpYWwgdm9sdGFnZSBtZWFzdXJlbWVudCBlcXVpdmFsZW50IHRvCisJCWNoYW5uZWwgWSAtIGNoYW5uZWwgWiB3aGVyZSB0aGVzZSBjaGFubmVsIG51bWJlcnMgYXBwbHkgdG8gdGhlCisJCXBoeXNpY2FsbHkgZXF1aXZhbGVudCBpbnB1dHMgd2hlbiBub24gZGlmZmVyZW50aWFsIHJlYWRpbmdzIGFyZQorCQlzZXBhcmF0ZWx5IGF2YWlsYWJsZS4gSW4gZGlmZmVyZW50aWFsIG9ubHkgcGFydHMsIHRoZW4gYWxsIHRoYXQKKwkJaXMgcmVxdWlyZWQgaXMgYSBjb25zaXN0ZW50IGxhYmVsaW5nLiAgVW5pdHMgYWZ0ZXIgYXBwbGljYXRpb24KKwkJb2Ygc2NhbGUgYW5kIG9mZnNldCBhcmUgbWlsbGl2b2x0cy4KKworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2N1cnJlbnRZX3JhdworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2N1cnJlbnRZX3N1cHBseV9yYXcKK0tlcm5lbFZlcnNpb246CTMuMTcKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlSYXcgKHVuc2NhbGVkIG5vIGJpYXMgcmVtb3ZhbCBldGMuKSBjdXJyZW50IG1lYXN1cmVtZW50IGZyb20KKwkJY2hhbm5lbCBZLiBJbiBzcGVjaWFsIGNhc2VzIHdoZXJlIHRoZSBjaGFubmVsIGRvZXMgbm90CisJCWNvcnJlc3BvbmQgdG8gZXh0ZXJuYWxseSBhdmFpbGFibGUgaW5wdXQgb25lIG9mIHRoZSBuYW1lZAorCQl2ZXJzaW9ucyBtYXkgYmUgdXNlZC4gVGhlIG51bWJlciBtdXN0IGFsd2F5cyBiZSBzcGVjaWZpZWQgYW5kCisJCXVuaXF1ZSB0byBhbGxvdyBhc3NvY2lhdGlvbiB3aXRoIGV2ZW50IGNvZGVzLiBVbml0cyBhZnRlcgorCQlhcHBsaWNhdGlvbiBvZiBzY2FsZSBhbmQgb2Zmc2V0IGFyZSBtaWxsaWFtcHMuCisKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9jYXBhY2l0YW5jZVlfcmF3CitLZXJuZWxWZXJzaW9uOgkzLjIKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlSYXcgY2FwYWNpdGFuY2UgbWVhc3VyZW1lbnQgZnJvbSBjaGFubmVsIFkuIFVuaXRzIGFmdGVyCisJCWFwcGxpY2F0aW9uIG9mIHNjYWxlIGFuZCBvZmZzZXQgYXJlIG5hbm9mYXJhZHMuCisKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9pbl9jYXBhY2l0YW5jZVktaW5fY2FwYWNpdGFuY2VaX3JhdworS2VybmVsVmVyc2lvbjoJMy4yCitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJUmF3IGRpZmZlcmVudGlhbCBjYXBhY2l0YW5jZSBtZWFzdXJlbWVudCBlcXVpdmFsZW50IHRvCisJCWNoYW5uZWwgWSAtIGNoYW5uZWwgWiB3aGVyZSB0aGVzZSBjaGFubmVsIG51bWJlcnMgYXBwbHkgdG8gdGhlCisJCXBoeXNpY2FsbHkgZXF1aXZhbGVudCBpbnB1dHMgd2hlbiBub24gZGlmZmVyZW50aWFsIHJlYWRpbmdzIGFyZQorCQlzZXBhcmF0ZWx5IGF2YWlsYWJsZS4gSW4gZGlmZmVyZW50aWFsIG9ubHkgcGFydHMsIHRoZW4gYWxsIHRoYXQKKwkJaXMgcmVxdWlyZWQgaXMgYSBjb25zaXN0ZW50IGxhYmVsaW5nLiAgVW5pdHMgYWZ0ZXIgYXBwbGljYXRpb24KKwkJb2Ygc2NhbGUgYW5kIG9mZnNldCBhcmUgbmFub2ZhcmFkcy4KKworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3RlbXBfcmF3CitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fdGVtcFhfcmF3CitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fdGVtcF94X3JhdworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3RlbXBfeV9yYXcKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl90ZW1wX2FtYmllbnRfcmF3CitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fdGVtcF9vYmplY3RfcmF3CitLZXJuZWxWZXJzaW9uOgkyLjYuMzUKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlSYXcgKHVuc2NhbGVkIG5vIGJpYXMgcmVtb3ZhbCBldGMuKSB0ZW1wZXJhdHVyZSBtZWFzdXJlbWVudC4KKwkJSWYgYW4gYXhpcyBpcyBzcGVjaWZpZWQgaXQgZ2VuZXJhbGx5IG1lYW5zIHRoYXQgdGhlIHRlbXBlcmF0dXJlCisJCXNlbnNvciBpcyBhc3NvY2lhdGVkIHdpdGggb25lIHBhcnQgb2YgYSBjb21wb3VuZCBkZXZpY2UgKGUuZy4KKwkJYSBneXJvc2NvcGUgYXhpcykuIFRoZSBhbWJpZW50IGFuZCBvYmplY3QgbW9kaWZpZXJzIGRpc3Rpbmd1aXNoCisJCWJldHdlZW4gYW1iaWVudCAocmVmZXJlbmNlKSBhbmQgZGlzdGFudCB0ZW1wZXJhdHVyZSBmb3IgY29udGFjdC0KKwkJbGVzcyBtZWFzdXJlbWVudHMuIFVuaXRzIGFmdGVyIGFwcGxpY2F0aW9uIG9mIHNjYWxlIGFuZCBvZmZzZXQKKwkJYXJlIG1pbGxpIGRlZ3JlZXMgQ2Vsc2l1cy4KKworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3RlbXBYX2lucHV0CitLZXJuZWxWZXJzaW9uOgkyLjYuMzgKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlTY2FsZWQgdGVtcGVyYXR1cmUgbWVhc3VyZW1lbnQgaW4gbWlsbGkgZGVncmVlcyBDZWxzaXVzLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fYWNjZWxfeF9yYXcKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9hY2NlbF95X3JhdworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2FjY2VsX3pfcmF3CitLZXJuZWxWZXJzaW9uOgkyLjYuMzUKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlBY2NlbGVyYXRpb24gaW4gZGlyZWN0aW9uIHgsIHkgb3IgeiAobWF5IGJlIGFyYml0cmFyaWx5IGFzc2lnbmVkCisJCWJ1dCBzaG91bGQgbWF0Y2ggb3RoZXIgc3VjaCBhc3NpZ25tZW50cyBvbiBkZXZpY2UpLgorCQlIYXMgYWxsIG9mIHRoZSBlcXVpdmFsZW50IHBhcmFtZXRlcnMgYXMgcGVyIHZvbHRhZ2VZLiBVbml0cworCQlhZnRlciBhcHBsaWNhdGlvbiBvZiBzY2FsZSBhbmQgb2Zmc2V0IGFyZSBtL3NeMi4KKworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2FuZ2x2ZWxfeF9yYXcKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9hbmdsdmVsX3lfcmF3CitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fYW5nbHZlbF96X3JhdworS2VybmVsVmVyc2lvbjoJMi42LjM1CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJQW5ndWxhciB2ZWxvY2l0eSBhYm91dCBheGlzIHgsIHkgb3IgeiAobWF5IGJlIGFyYml0cmFyaWx5CisJCWFzc2lnbmVkKS4gSGFzIGFsbCB0aGUgZXF1aXZhbGVudCBwYXJhbWV0ZXJzIGFzCXBlciB2b2x0YWdlWS4KKwkJVW5pdHMgYWZ0ZXIgYXBwbGljYXRpb24gb2Ygc2NhbGUgYW5kIG9mZnNldCBhcmUJcmFkaWFucyBwZXIKKwkJc2Vjb25kLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5faW5jbGlfeF9yYXcKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9pbmNsaV95X3JhdworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2luY2xpX3pfcmF3CitLZXJuZWxWZXJzaW9uOgkyLjYuMzUKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmNsaW5hdGlvbiByYXcgcmVhZGluZyBhYm91dCBheGlzIHgsIHkgb3IgeiAobWF5IGJlCisJCWFyYml0cmFyaWx5IGFzc2lnbmVkKS4gRGF0YSBjb252ZXJ0ZWQgYnkgYXBwbGljYXRpb24gb2Ygb2Zmc2V0CisJCWFuZCBzY2FsZSB0byBkZWdyZWVzLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fbWFnbl94X3JhdworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX21hZ25feV9yYXcKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9tYWduX3pfcmF3CitLZXJuZWxWZXJzaW9uOgkyLjYuMzUKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlNYWduZXRpYyBmaWVsZCBhbG9uZyBheGlzIHgsIHkgb3IgeiAobWF5IGJlIGFyYml0cmFyaWx5CisJCWFzc2lnbmVkKS4gIERhdGEgY29udmVydGVkIGJ5IGFwcGxpY2F0aW9uIG9mIG9mZnNldAorCQl0aGVuIHNjYWxlIHRvIEdhdXNzLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fYWNjZWxfeF9wZWFrX3JhdworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2FjY2VsX3lfcGVha19yYXcKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9hY2NlbF96X3BlYWtfcmF3CitLZXJuZWxWZXJzaW9uOgkyLjYuMzYKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlIaWdoZXN0IHZhbHVlIHNpbmNlIHNvbWUgcmVzZXQgY29uZGl0aW9uLiAgVGhlc2UKKwkJYXR0cmlidXRlcyBhbGxvdyBhY2Nlc3MgdG8gdGhpcyBhbmQgYXJlIG90aGVyd2lzZQorCQl0aGUgZGlyZWN0IGVxdWl2YWxlbnQgb2YgdGhlIDx0eXBlPllbX25hbWVdX3JhdyBhdHRyaWJ1dGVzLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fYWNjZWxfeHl6X3NxdWFyZWRfcGVha19yYXcKK0tlcm5lbFZlcnNpb246CTIuNi4zNgorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUEgY29tcHV0ZWQgcGVhayB2YWx1ZSBiYXNlZCBvbiB0aGUgc3VtIHNxdWFyZWQgbWFnbml0dWRlIG9mCisJCXRoZSB1bmRlcmx5aW5nIHZhbHVlIGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0aW9ucy4KKworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3ByZXNzdXJlWV9yYXcKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9wcmVzc3VyZV9yYXcKK0tlcm5lbFZlcnNpb246CTMuOAorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCVJhdyBwcmVzc3VyZSBtZWFzdXJlbWVudCBmcm9tIGNoYW5uZWwgWS4gVW5pdHMgYWZ0ZXIKKwkJYXBwbGljYXRpb24gb2Ygc2NhbGUgYW5kIG9mZnNldCBhcmUga2lsb3Bhc2NhbC4KKworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3ByZXNzdXJlWV9pbnB1dAorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3ByZXNzdXJlX2lucHV0CitLZXJuZWxWZXJzaW9uOgkzLjgKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlTY2FsZWQgcHJlc3N1cmUgbWVhc3VyZW1lbnQgZnJvbSBjaGFubmVsIFksIGluIGtpbG9wYXNjYWwuCisKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9odW1pZGl0eXJlbGF0aXZlX3JhdworS2VybmVsVmVyc2lvbjoJMy4xNAorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCVJhdyBodW1pZGl0eSBtZWFzdXJlbWVudCBvZiBhaXIuIFVuaXRzIGFmdGVyIGFwcGxpY2F0aW9uIG9mCisJCXNjYWxlIGFuZCBvZmZzZXQgYXJlIG1pbGxpIHBlcmNlbnQuCisKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9odW1pZGl0eXJlbGF0aXZlX2lucHV0CitLZXJuZWxWZXJzaW9uOgkzLjE0CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJU2NhbGVkIGh1bWlkaXR5IG1lYXN1cmVtZW50IGluIG1pbGxpIHBlcmNlbnQuCisKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9YX21lYW5fcmF3CitLZXJuZWxWZXJzaW9uOgkzLjUKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlBdmVyYWdlZCByYXcgbWVhc3VyZW1lbnQgZnJvbSBjaGFubmVsIFguIFRoZSBudW1iZXIgb2YgdmFsdWVzCisJCXVzZWQgZm9yIGF2ZXJhZ2luZyBpcyBkZXZpY2Ugc3BlY2lmaWMuIFRoZSBjb252ZXJ0aW5nIHJ1bGVzIGZvcgorCQlub3JtYWwgcmF3IHZhbHVlcyBhbHNvIGFwcGxpZXMgdG8gdGhlIGF2ZXJhZ2VkIHJhdyB2YWx1ZXMuCisKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9hY2NlbF9vZmZzZXQKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9hY2NlbF94X29mZnNldAorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2FjY2VsX3lfb2Zmc2V0CitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fYWNjZWxfel9vZmZzZXQKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl92b2x0YWdlWV9vZmZzZXQKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl92b2x0YWdlX29mZnNldAorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3ZvbHRhZ2VZX2lfb2Zmc2V0CitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fdm9sdGFnZVlfcV9vZmZzZXQKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl92b2x0YWdlX3Ffb2Zmc2V0CitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fdm9sdGFnZV9pX29mZnNldAorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2N1cnJlbnRZX29mZnNldAorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2N1cnJlbnRfb2Zmc2V0CitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fY3VycmVudFlfaV9vZmZzZXQKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9jdXJyZW50WV9xX29mZnNldAorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2N1cnJlbnRfcV9vZmZzZXQKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9jdXJyZW50X2lfb2Zmc2V0CitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fdGVtcFlfb2Zmc2V0CitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fdGVtcF9vZmZzZXQKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9wcmVzc3VyZVlfb2Zmc2V0CitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fcHJlc3N1cmVfb2Zmc2V0CitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5faHVtaWRpdHlyZWxhdGl2ZV9vZmZzZXQKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9tYWduX29mZnNldAorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3JvdF9vZmZzZXQKK0tlcm5lbFZlcnNpb246CTIuNi4zNQorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUlmIGtub3duIGZvciBhIGRldmljZSwgb2Zmc2V0IHRvIGJlIGFkZGVkIHRvIDx0eXBlPltZXV9yYXcgcHJpb3IKKwkJdG8gc2NhbGluZyBieSA8dHlwZT5bWV1fc2NhbGUgaW4gb3JkZXIgdG8gb2J0YWluIHZhbHVlIGluIHRoZQorCQk8dHlwZT4gdW5pdHMgYXMgc3BlY2lmaWVkIGluIDx0eXBlPltZXV9yYXcgZG9jdW1lbnRhdGlvbi4KKwkJTm90IHByZXNlbnQgaWYgdGhlIG9mZnNldCBpcyBhbHdheXMgMCBvciB1bmtub3duLiBJZiBZIG9yCisJCWF4aXMgPHh8eXx6PiBpcyBub3QgcHJlc2VudCwgdGhlbiB0aGUgb2Zmc2V0IGFwcGxpZXMgdG8gYWxsCisJCWluIGNoYW5uZWxzIG9mIDx0eXBlPi4KKwkJTWF5IGJlIHdyaXRhYmxlIGlmIGEgdmFyaWFibGUgb2Zmc2V0IGNhbiBiZSBhcHBsaWVkIG9uIHRoZQorCQlkZXZpY2UuIE5vdGUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCB0byBjYWxpYmJpYXMgd2hpY2gKKwkJaXMgZm9yIGRldmljZXMgKG9yIGRyaXZlcnMpIHRoYXQgYXBwbHkgb2Zmc2V0cyB0byBjb21wZW5zYXRlCisJCWZvciB2YXJpYXRpb24gYmV0d2VlbiBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIHRoZSBwYXJ0LCB0eXBpY2FsbHkKKwkJYWRqdXN0ZWQgYnkgdXNpbmcgc29tZSBoYXJkd2FyZSBzdXBwb3J0ZWQgY2FsaWJyYXRpb24gcHJvY2VkdXJlLgorCQlDYWxpYmJpYXMgaXMgYXBwbGllZCBpbnRlcm5hbGx5LCBvZmZzZXQgaXMgYXBwbGllZCBpbiB1c2Vyc3BhY2UKKwkJdG8gdGhlIF9yYXcgb3V0cHV0LgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fdm9sdGFnZVlfc2NhbGUKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl92b2x0YWdlWV9pX3NjYWxlCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fdm9sdGFnZVlfcV9zY2FsZQorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3ZvbHRhZ2VZX3N1cHBseV9zY2FsZQorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3ZvbHRhZ2Vfc2NhbGUKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl92b2x0YWdlX2lfc2NhbGUKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl92b2x0YWdlX3Ffc2NhbGUKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl92b2x0YWdlLXZvbHRhZ2Vfc2NhbGUKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9vdXRfdm9sdGFnZVlfc2NhbGUKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9vdXRfYWx0dm9sdGFnZVlfc2NhbGUKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9jdXJyZW50WV9zY2FsZQorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2N1cnJlbnRZX3N1cHBseV9zY2FsZQorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2N1cnJlbnRfc2NhbGUKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9jdXJyZW50WV9pX3NjYWxlCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fY3VycmVudFlfcV9zY2FsZQorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2N1cnJlbnRfaV9zY2FsZQorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2N1cnJlbnRfcV9zY2FsZQorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2FjY2VsX3NjYWxlCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fYWNjZWxfcGVha19zY2FsZQorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2FuZ2x2ZWxfc2NhbGUKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9lbmVyZ3lfc2NhbGUKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9kaXN0YW5jZV9zY2FsZQorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX21hZ25fc2NhbGUKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9tYWduX3hfc2NhbGUKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9tYWduX3lfc2NhbGUKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9tYWduX3pfc2NhbGUKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9yb3RfZnJvbV9ub3J0aF9tYWduZXRpY19zY2FsZQorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3JvdF9mcm9tX25vcnRoX3RydWVfc2NhbGUKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9yb3RfZnJvbV9ub3J0aF9tYWduZXRpY190aWx0X2NvbXBfc2NhbGUKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9yb3RfZnJvbV9ub3J0aF90cnVlX3RpbHRfY29tcF9zY2FsZQorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3ByZXNzdXJlWV9zY2FsZQorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3ByZXNzdXJlX3NjYWxlCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5faHVtaWRpdHlyZWxhdGl2ZV9zY2FsZQorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3ZlbG9jaXR5X3NxcnQoeF4yK3leMit6XjIpX3NjYWxlCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5faWxsdW1pbmFuY2Vfc2NhbGUKK0tlcm5lbFZlcnNpb246CTIuNi4zNQorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUlmIGtub3duIGZvciBhIGRldmljZSwgc2NhbGUgdG8gYmUgYXBwbGllZCB0byA8dHlwZT5ZW19uYW1lXV9yYXcKKwkJcG9zdCBhZGRpdGlvbiBvZiA8dHlwZT5bWV1bX25hbWVdX29mZnNldCBpbiBvcmRlciB0byBvYnRhaW4gdGhlCisJCW1lYXN1cmVkIHZhbHVlIGluIDx0eXBlPiB1bml0cyBhcyBzcGVjaWZpZWQgaW4KKwkJPHR5cGU+W1ldW19uYW1lXV9yYXcgZG9jdW1lbnRhdGlvbi4gIElmIHNoYXJlZCBhY3Jvc3MgYWxsIGluCisJCWNoYW5uZWxzIHRoZW4gWSBhbmQgPHh8eXx6PiBhcmUgbm90IHByZXNlbnQgYW5kIHRoZSB2YWx1ZSBpcworCQljYWxsZWQgPHR5cGU+W1ldW19uYW1lXV9zY2FsZS4gVGhlIHBlYWsgbW9kaWZpZXIgbWVhbnMgdGhpcworCQl2YWx1ZSBpcyBhcHBsaWVkIHRvIDx0eXBlPllbX25hbWVdX3BlYWtfcmF3IHZhbHVlcy4KKworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2FjY2VsX3hfY2FsaWJiaWFzCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fYWNjZWxfeV9jYWxpYmJpYXMKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9hY2NlbF96X2NhbGliYmlhcworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2FuZ2x2ZWxfeF9jYWxpYmJpYXMKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9hbmdsdmVsX3lfY2FsaWJiaWFzCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fYW5nbHZlbF96X2NhbGliYmlhcworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2lsbHVtaW5hbmNlMF9jYWxpYmJpYXMKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9wcm94aW1pdHkwX2NhbGliYmlhcworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3ByZXNzdXJlWV9jYWxpYmJpYXMKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9wcmVzc3VyZV9jYWxpYmJpYXMKK0tlcm5lbFZlcnNpb246CTIuNi4zNQorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUhhcmR3YXJlIGFwcGxpZWQgY2FsaWJyYXRpb24gb2Zmc2V0IChhc3N1bWVkIHRvIGZpeCBwcm9kdWN0aW9uCisJCWluYWNjdXJhY2llcykuCisKK1doYXQJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3ZvbHRhZ2VZX2NhbGlic2NhbGUKK1doYXQJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3ZvbHRhZ2VZX3N1cHBseV9jYWxpYnNjYWxlCitXaGF0CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl92b2x0YWdlWV9pX2NhbGlic2NhbGUKK1doYXQJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3ZvbHRhZ2VZX3FfY2FsaWJzY2FsZQorV2hhdAkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fdm9sdGFnZV9pX2NhbGlic2NhbGUKK1doYXQJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3ZvbHRhZ2VfcV9jYWxpYnNjYWxlCitXaGF0CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl92b2x0YWdlX2NhbGlic2NhbGUKK1doYXQJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2FjY2VsX3hfY2FsaWJzY2FsZQorV2hhdAkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fYWNjZWxfeV9jYWxpYnNjYWxlCitXaGF0CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9hY2NlbF96X2NhbGlic2NhbGUKK1doYXQJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2FuZ2x2ZWxfeF9jYWxpYnNjYWxlCitXaGF0CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9hbmdsdmVsX3lfY2FsaWJzY2FsZQorV2hhdAkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fYW5nbHZlbF96X2NhbGlic2NhbGUKK3doYXQJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2lsbHVtaW5hbmNlMF9jYWxpYnNjYWxlCit3aGF0CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9wcm94aW1pdHkwX2NhbGlic2NhbGUKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9wcmVzc3VyZVlfY2FsaWJzY2FsZQorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3ByZXNzdXJlX2NhbGlic2NhbGUKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9pbGx1bWluYW5jZV9jYWxpYnNjYWxlCitLZXJuZWxWZXJzaW9uOgkyLjYuMzUKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlIYXJkd2FyZSBhcHBsaWVkIGNhbGlicmF0aW9uIHNjYWxlIGZhY3RvciAoYXNzdW1lZCB0byBmaXgKKwkJcHJvZHVjdGlvbiBpbmFjY3VyYWNpZXMpLiAgSWYgc2hhcmVkIGFjcm9zcyBhbGwgY2hhbm5lbHMsCisJCTx0eXBlPl9jYWxpYnNjYWxlIGlzIHVzZWQuCisKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9hY3Rpdml0eV9jYWxpYmdlbmRlcgorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2VuZXJneV9jYWxpYmdlbmRlcgorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2Rpc3RhbmNlX2NhbGliZ2VuZGVyCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fdmVsb2NpdHlfY2FsaWJnZW5kZXIKK0tlcm5lbFZlcnNpb246CTQuMAorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUdlbmRlciBvZiB0aGUgdXNlciAoZS5nLjogbWFsZSwgZmVtYWxlKSB1c2VkIGJ5IHNvbWUgcGVkb21ldGVycworCQl0byBjb21wdXRlIHRoZSBzdHJpZGUgbGVuZ3RoLCBkaXN0YW5jZSwgc3BlZWQgYW5kIGFjdGl2aXR5CisJCXR5cGUuCisKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9hY3Rpdml0eV9jYWxpYmdlbmRlcl9hdmFpbGFibGUKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9lbmVyZ3lfY2FsaWJnZW5kZXJfYXZhaWxhYmxlCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fZGlzdGFuY2VfY2FsaWJnZW5kZXJfYXZhaWxhYmxlCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fdmVsb2NpdHlfY2FsaWJnZW5kZXJfYXZhaWxhYmxlCitLZXJuZWxWZXJzaW9uOgk0LjAKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlMaXN0cyBhbGwgYXZhaWxhYmxlIGdlbmRlciB2YWx1ZXMgKGUuZy46IG1hbGUsIGZlbWFsZSkuCisKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9hY3Rpdml0eV9jYWxpYmhlaWdodAorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2VuZXJneV9jYWxpYmhlaWdodAorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2Rpc3RhbmNlX2NhbGliaGVpZ2h0CitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fdmVsb2NpdHlfY2FsaWJoZWlnaHQKK0tlcm5lbFZlcnNpb246CTMuMTkKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlIZWlnaHQgb2YgdGhlIHVzZXIgKGluIG1ldGVycykgdXNlZCBieSBzb21lIHBlZG9tZXRlcnMKKwkJdG8gY29tcHV0ZSB0aGUgc3RyaWRlIGxlbmd0aCwgZGlzdGFuY2UsIHNwZWVkIGFuZCBhY3Rpdml0eQorCQl0eXBlLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fZW5lcmd5X2NhbGlid2VpZ2h0CitLZXJuZWxWZXJzaW9uOgk0LjAKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlXZWlnaHQgb2YgdGhlIHVzZXIgKGluIGtnKS4gSXQgaXMgbmVlZGVkIGJ5IHNvbWUgcGVkb21ldGVycworCQl0byBjb21wdXRlIHRoZSBjYWxvcmllcyBidXJudCBieSB0aGUgdXNlci4KKworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2FjY2VsX3NjYWxlX2F2YWlsYWJsZQorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2luX2FuZ2x2ZWxfc2NhbGVfYXZhaWxhYmxlCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvaW5fbWFnbl9zY2FsZV9hdmFpbGFibGUKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9pbl9pbGx1bWluYW5jZV9zY2FsZV9hdmFpbGFibGUKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9pbl9pbnRlbnNpdHlfc2NhbGVfYXZhaWxhYmxlCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvaW5fcHJveGltaXR5X3NjYWxlX2F2YWlsYWJsZQorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2luX3ZvbHRhZ2VYX3NjYWxlX2F2YWlsYWJsZQorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2luX3ZvbHRhZ2Utdm9sdGFnZV9zY2FsZV9hdmFpbGFibGUKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9vdXRfdm9sdGFnZVhfc2NhbGVfYXZhaWxhYmxlCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvb3V0X2FsdHZvbHRhZ2VYX3NjYWxlX2F2YWlsYWJsZQorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2luX2NhcGFjaXRhbmNlX3NjYWxlX2F2YWlsYWJsZQorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2luX3ByZXNzdXJlX3NjYWxlX2F2YWlsYWJsZQorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2luX3ByZXNzdXJlWV9zY2FsZV9hdmFpbGFibGUKK0tlcm5lbFZlcnNpb246CTIuNi4zNQorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUlmIGEgZGlzY3JldGUgc2V0IG9mIHNjYWxlIHZhbHVlcyBpcyBhdmFpbGFibGUsIHRoZXkKKwkJYXJlIGxpc3RlZCBpbiB0aGlzIGF0dHJpYnV0ZS4KKworV2hhdAkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvb3V0X3ZvbHRhZ2VZX2hhcmR3YXJlZ2FpbgorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2ludGVuc2l0eV9yZWRfaGFyZHdhcmVnYWluCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5faW50ZW5zaXR5X2dyZWVuX2hhcmR3YXJlZ2FpbgorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2ludGVuc2l0eV9ibHVlX2hhcmR3YXJlZ2FpbgorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2ludGVuc2l0eV9jbGVhcl9oYXJkd2FyZWdhaW4KK0tlcm5lbFZlcnNpb246CTIuNi4zNQorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUhhcmR3YXJlIGFwcGxpZWQgZ2FpbiBmYWN0b3IuIElmIHNoYXJlZCBhY3Jvc3MgYWxsIGNoYW5uZWxzLAorCQk8dHlwZT5faGFyZHdhcmVnYWluIGlzIHVzZWQuCisKK1doYXQ6CQkvc3lzLy4uLi9pbl9hY2NlbF9maWx0ZXJfbG93X3Bhc3NfM2RiX2ZyZXF1ZW5jeQorV2hhdDoJCS9zeXMvLi4uL2luX21hZ25fZmlsdGVyX2xvd19wYXNzXzNkYl9mcmVxdWVuY3kKK1doYXQ6CQkvc3lzLy4uLi9pbl9hbmdsdmVsX2ZpbHRlcl9sb3dfcGFzc18zZGJfZnJlcXVlbmN5CitLZXJuZWxWZXJzaW9uOgkzLjIKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJZiBhIGtub3duIG9yIGNvbnRyb2xsYWJsZSBsb3cgcGFzcyBmaWx0ZXIgaXMgYXBwbGllZAorCQl0byB0aGUgdW5kZXJseWluZyBkYXRhIGNoYW5uZWwsIHRoZW4gdGhpcyBwYXJhbWV0ZXIKKwkJZ2l2ZXMgdGhlIDNkQiBmcmVxdWVuY3kgb2YgdGhlIGZpbHRlciBpbiBIei4KKworV2hhdDoJCS9zeXMvLi4uL2luX2FjY2VsX2ZpbHRlcl9oaWdoX3Bhc3NfM2RiX2ZyZXF1ZW5jeQorV2hhdDoJCS9zeXMvLi4uL2luX2FuZ2x2ZWxfZmlsdGVyX2hpZ2hfcGFzc18zZGJfZnJlcXVlbmN5CitXaGF0OgkJL3N5cy8uLi4vaW5fbWFnbl9maWx0ZXJfaGlnaF9wYXNzXzNkYl9mcmVxdWVuY3kKK0tlcm5lbFZlcnNpb246CTQuMgorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUlmIGEga25vd24gb3IgY29udHJvbGxhYmxlIGhpZ2ggcGFzcyBmaWx0ZXIgaXMgYXBwbGllZAorCQl0byB0aGUgdW5kZXJseWluZyBkYXRhIGNoYW5uZWwsIHRoZW4gdGhpcyBwYXJhbWV0ZXIKKwkJZ2l2ZXMgdGhlIDNkQiBmcmVxdWVuY3kgb2YgdGhlIGZpbHRlciBpbiBIei4KKworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL291dF92b2x0YWdlWV9yYXcKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9vdXRfYWx0dm9sdGFnZVlfcmF3CitLZXJuZWxWZXJzaW9uOgkyLjYuMzcKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlSYXcgKHVuc2NhbGVkLCBubyBiaWFzIGV0Yy4pIG91dHB1dCB2b2x0YWdlIGZvcgorCQljaGFubmVsIFkuICBUaGUgbnVtYmVyIG11c3QgYWx3YXlzIGJlIHNwZWNpZmllZCBhbmQKKwkJdW5pcXVlIGlmIHRoZSBvdXRwdXQgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgY2hhbm5lbC4KKwkJV2hpbGUgREFDIGxpa2UgZGV2aWNlcyB0eXBpY2FsbHkgdXNlIG91dF92b2x0YWdlLAorCQlhIGNvbnRpbnVvdXMgZnJlcXVlbmN5IGdlbmVyYXRpbmcgZGV2aWNlLCBzdWNoIGFzCisJCWEgRERTIG9yIFBMTCBzaG91bGQgdXNlIG91dF9hbHR2b2x0YWdlLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvb3V0X3ZvbHRhZ2VZJlpfcmF3CitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvb3V0X2FsdHZvbHRhZ2VZJlpfcmF3CitLZXJuZWxWZXJzaW9uOgkyLjYuMzcKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlSYXcgKHVuc2NhbGVkLCBubyBiaWFzIGV0Yy4pIG91dHB1dCB2b2x0YWdlIGZvciBhbiBhZ2dyZWdhdGUgb2YKKwkJY2hhbm5lbCBZLCBjaGFubmVsIFosIGV0Yy4gIFRoaXMgaW50ZXJmYWNlIGlzIGF2YWlsYWJsZSBpbiBjYXNlcworCQl3aGVyZSBhIHNpbmdsZSBvdXRwdXQgc2V0cyB0aGUgdmFsdWUgZm9yIG11bHRpcGxlIGNoYW5uZWxzCisJCXNpbXVsdGFuZW91c2x5LgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvb3V0X3ZvbHRhZ2VZX3Bvd2VyZG93bl9tb2RlCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvb3V0X3ZvbHRhZ2VfcG93ZXJkb3duX21vZGUKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9vdXRfYWx0dm9sdGFnZVlfcG93ZXJkb3duX21vZGUKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9vdXRfYWx0dm9sdGFnZV9wb3dlcmRvd25fbW9kZQorS2VybmVsVmVyc2lvbjoJMi42LjM4CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJU3BlY2lmaWVzIHRoZSBvdXRwdXQgcG93ZXJkb3duIG1vZGUuCisJCURBQyBvdXRwdXQgc3RhZ2UgaXMgZGlzY29ubmVjdGVkIGZyb20gdGhlIGFtcGxpZmllciBhbmQKKwkJMWtvaG1fdG9fZ25kOiBjb25uZWN0ZWQgdG8gZ3JvdW5kIHZpYSBhbiAxa09obSByZXNpc3RvciwKKwkJNmtvaG1fdG9fZ25kOiBjb25uZWN0ZWQgdG8gZ3JvdW5kIHZpYSBhIDZrT2htIHJlc2lzdG9yLAorCQkyMGtvaG1fdG9fZ25kOiBjb25uZWN0ZWQgdG8gZ3JvdW5kIHZpYSBhIDIwa09obSByZXNpc3RvciwKKwkJMTAwa29obV90b19nbmQ6IGNvbm5lY3RlZCB0byBncm91bmQgdmlhIGFuIDEwMGtPaG0gcmVzaXN0b3IsCisJCTUwMGtvaG1fdG9fZ25kOiBjb25uZWN0ZWQgdG8gZ3JvdW5kIHZpYSBhIDUwMGtPaG0gcmVzaXN0b3IsCisJCXRocmVlX3N0YXRlOiBsZWZ0IGZsb2F0aW5nLgorCQlGb3IgYSBsaXN0IG9mIGF2YWlsYWJsZSBvdXRwdXQgcG93ZXIgZG93biBvcHRpb25zIHJlYWQKKwkJb3V0WF9wb3dlcmRvd25fbW9kZV9hdmFpbGFibGUuIElmIFkgaXMgbm90IHByZXNlbnQgdGhlCisJCW1vZGUgaXMgc2hhcmVkIGFjcm9zcyBhbGwgb3V0cHV0cy4KKworV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL291dF92b2x0YWdlWV9wb3dlcmRvd25fbW9kZV9hdmFpbGFibGUKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9vdXRfdm9sdGFnZV9wb3dlcmRvd25fbW9kZV9hdmFpbGFibGUKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9vdXRfYWx0dm9sdGFnZVlfcG93ZXJkb3duX21vZGVfYXZhaWxhYmxlCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvb3V0X2FsdHZvbHRhZ2VfcG93ZXJkb3duX21vZGVfYXZhaWxhYmxlCitLZXJuZWxWZXJzaW9uOgkyLjYuMzgKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlMaXN0cyBhbGwgYXZhaWxhYmxlIG91dHB1dCBwb3dlciBkb3duIG1vZGVzLgorCQlJZiBZIGlzIG5vdCBwcmVzZW50IHRoZSBtb2RlIGlzIHNoYXJlZCBhY3Jvc3MgYWxsIG91dHB1dHMuCisKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9vdXRfdm9sdGFnZVlfcG93ZXJkb3duCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvb3V0X3ZvbHRhZ2VfcG93ZXJkb3duCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvb3V0X2FsdHZvbHRhZ2VZX3Bvd2VyZG93bgorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL291dF9hbHR2b2x0YWdlX3Bvd2VyZG93bgorS2VybmVsVmVyc2lvbjoJMi42LjM4CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJV3JpdGluZyAxIGNhdXNlcyBvdXRwdXQgWSB0byBlbnRlciB0aGUgcG93ZXIgZG93biBtb2RlIHNwZWNpZmllZAorCQlieSB0aGUgY29ycmVzcG9uZGluZyBvdXRZX3Bvd2VyZG93bl9tb2RlLiBEQUMgb3V0cHV0IHN0YWdlIGlzCisJCWRpc2Nvbm5lY3RlZCBmcm9tIHRoZSBhbXBsaWZpZXIuIENsZWFyaW5nIHJldHVybnMgdG8gbm9ybWFsCisJCW9wZXJhdGlvbi4gWSBtYXkgYmUgc3VwcHJlc3NlZCBpZiBhbGwgb3V0cHV0cyBhcmUgY29udHJvbGxlZAorCQl0b2dldGhlci4KKworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL291dF9hbHR2b2x0YWdlWV9mcmVxdWVuY3kKK0tlcm5lbFZlcnNpb246CTMuNC4wCitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJT3V0cHV0IGZyZXF1ZW5jeSBmb3IgY2hhbm5lbCBZIGluIEh6LiBUaGUgbnVtYmVyIG11c3QgYWx3YXlzIGJlCisJCXNwZWNpZmllZCBhbmQgdW5pcXVlIGlmIHRoZSBvdXRwdXQgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUKKwkJY2hhbm5lbC4KKworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL291dF9hbHR2b2x0YWdlWV9waGFzZQorS2VybmVsVmVyc2lvbjoJMy40LjAKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlQaGFzZSBpbiByYWRpYW5zIG9mIG9uZSBmcmVxdWVuY3kvY2xvY2sgb3V0cHV0IFkKKwkJKG91dF9hbHR2b2x0YWdlWSkgcmVsYXRpdmUgdG8gYW5vdGhlciBmcmVxdWVuY3kvY2xvY2sgb3V0cHV0CisJCShvdXRfYWx0dm9sdGFnZVopIG9mIHRoZSBkZXZpY2UgWC4gVGhlIG51bWJlciBtdXN0IGFsd2F5cyBiZQorCQlzcGVjaWZpZWQgYW5kIHVuaXF1ZSBpZiB0aGUgb3V0cHV0IGNvcnJlc3BvbmRzIHRvIGEgc2luZ2xlCisJCWNoYW5uZWwuCisKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9ldmVudHMKK0tlcm5lbFZlcnNpb246CTIuNi4zNQorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUNvbmZpZ3VyYXRpb24gb2Ygd2hpY2ggaGFyZHdhcmUgZ2VuZXJhdGVkIGV2ZW50cyBhcmUgcGFzc2VkIHVwCisJCXRvIHVzZXItc3BhY2UuCisKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fYWNjZWxfeF90aHJlc2hfcmlzaW5nX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvZXZlbnRzL2luX2FjY2VsX3hfdGhyZXNoX2ZhbGxpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fYWNjZWxfeV90aHJlc2hfcmlzaW5nX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvZXZlbnRzL2luX2FjY2VsX3lfdGhyZXNoX2ZhbGxpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fYWNjZWxfel90aHJlc2hfcmlzaW5nX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvZXZlbnRzL2luX2FjY2VsX3pfdGhyZXNoX2ZhbGxpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fYW5nbHZlbF94X3RocmVzaF9yaXNpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fYW5nbHZlbF94X3RocmVzaF9mYWxsaW5nX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvZXZlbnRzL2luX2FuZ2x2ZWxfeV90aHJlc2hfcmlzaW5nX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvZXZlbnRzL2luX2FuZ2x2ZWxfeV90aHJlc2hfZmFsbGluZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl9hbmdsdmVsX3pfdGhyZXNoX3Jpc2luZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl9hbmdsdmVsX3pfdGhyZXNoX2ZhbGxpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fbWFnbl94X3RocmVzaF9yaXNpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fbWFnbl94X3RocmVzaF9mYWxsaW5nX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvZXZlbnRzL2luX21hZ25feV90aHJlc2hfcmlzaW5nX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvZXZlbnRzL2luX21hZ25feV90aHJlc2hfZmFsbGluZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl9tYWduX3pfdGhyZXNoX3Jpc2luZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl9tYWduX3pfdGhyZXNoX2ZhbGxpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfbWFnbmV0aWNfdGhyZXNoX3Jpc2luZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF9tYWduZXRpY190aHJlc2hfZmFsbGluZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF90cnVlX3RocmVzaF9yaXNpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfdHJ1ZV90aHJlc2hfZmFsbGluZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF9tYWduZXRpY190aWx0X2NvbXBfdGhyZXNoX3Jpc2luZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF9tYWduZXRpY190aWx0X2NvbXBfdGhyZXNoX2ZhbGxpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfdHJ1ZV90aWx0X2NvbXBfdGhyZXNoX3Jpc2luZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF90cnVlX3RpbHRfY29tcF90aHJlc2hfZmFsbGluZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl92b2x0YWdlWV9zdXBwbHlfdGhyZXNoX3Jpc2luZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl92b2x0YWdlWV9zdXBwbHlfdGhyZXNoX2ZhbGxpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fdm9sdGFnZVlfdGhyZXNoX3Jpc2luZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl92b2x0YWdlWV90aHJlc2hfZmFsbGluZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl92b2x0YWdlWV90aHJlc2hfZWl0aGVyX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvZXZlbnRzL2luX3RlbXBZX3RocmVzaF9yaXNpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fdGVtcFlfdGhyZXNoX2ZhbGxpbmdfZW4KK0tlcm5lbFZlcnNpb246CTIuNi4zNworQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUV2ZW50IGdlbmVyYXRlZCB3aGVuIGNoYW5uZWwgcGFzc2VzIGEgdGhyZXNob2xkIGluIHRoZSBzcGVjaWZpZWQKKwkJKF9yaXNpbmd8X2ZhbGxpbmcpIGRpcmVjdGlvbi4gSWYgdGhlIGRpcmVjdGlvbiBpcyBub3Qgc3BlY2lmaWVkLAorCQl0aGVuIGVpdGhlciB0aGUgZGV2aWNlIHdpbGwgcmVwb3J0IGFuIGV2ZW50IHdoaWNoIGV2ZXIgZGlyZWN0aW9uCisJCWEgc2luZ2xlIHRocmVzaG9sZCB2YWx1ZSBpcyBwYXNzZWQgaW4gKGUuZy4KKwkJPHR5cGU+W1ldW19uYW1lXV88cmF3fGlucHV0Pl90aHJlc2hfdmFsdWUpIG9yCisJCTx0eXBlPltZXVtfbmFtZV1fPHJhd3xpbnB1dD5fdGhyZXNoX3Jpc2luZ192YWx1ZSBhbmQKKwkJPHR5cGU+W1ldW19uYW1lXV88cmF3fGlucHV0Pl90aHJlc2hfZmFsbGluZ192YWx1ZSBtYXkgdGFrZQorCQlkaWZmZXJlbnQgdmFsdWVzLCBidXQgdGhlIGRldmljZSBjYW4gb25seSBlbmFibGUgYm90aCB0aHJlc2hvbGRzCisJCW9yIG5laXRoZXIuCisJCU5vdGUgdGhlIGRyaXZlciB3aWxsIGFzc3VtZSB0aGUgbGFzdCBwIGV2ZW50cyByZXF1ZXN0ZWQgYXJlCisJCXRvIGJlIGVuYWJsZWQgd2hlcmUgcCBpcyBob3cgbWFueSBpdCBzdXBwb3J0cyAod2hpY2ggbWF5IHZhcnkKKwkJZGVwZW5kaW5nIG9uIHRoZSBleGFjdCBzZXQgcmVxdWVzdGVkLiBTbyBpZiB5b3Ugd2FudCB0byBiZQorCQlzdXJlIHlvdSBoYXZlIHNldCB3aGF0IHlvdSB0aGluayB5b3UgaGF2ZSwgY2hlY2sgdGhlIGNvbnRlbnRzIG9mCisJCXRoZXNlIGF0dHJpYnV0ZXMgYWZ0ZXIgZXZlcnl0aGluZyBpcyBjb25maWd1cmVkLiBEcml2ZXJzIG1heQorCQloYXZlIHRvIGJ1ZmZlciBhbnkgcGFyYW1ldGVycyBzbyB0aGF0IHRoZXkgYXJlIGNvbnNpc3RlbnQgd2hlbgorCQlhIGdpdmVuIGV2ZW50IHR5cGUgaXMgZW5hYmxlZCBhdCBhIGZ1dHVyZSBwb2ludCAoYW5kIG5vdCB0aG9zZSBmb3IKKwkJd2hhdGV2ZXIgZXZlbnQgd2FzIHByZXZpb3VzbHkgZW5hYmxlZCkuCisKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fYWNjZWxfeF9yb2NfcmlzaW5nX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvZXZlbnRzL2luX2FjY2VsX3hfcm9jX2ZhbGxpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fYWNjZWxfeV9yb2NfcmlzaW5nX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvZXZlbnRzL2luX2FjY2VsX3lfcm9jX2ZhbGxpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fYWNjZWxfel9yb2NfcmlzaW5nX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvZXZlbnRzL2luX2FjY2VsX3pfcm9jX2ZhbGxpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fYW5nbHZlbF94X3JvY19yaXNpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fYW5nbHZlbF94X3JvY19mYWxsaW5nX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvZXZlbnRzL2luX2FuZ2x2ZWxfeV9yb2NfcmlzaW5nX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvZXZlbnRzL2luX2FuZ2x2ZWxfeV9yb2NfZmFsbGluZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl9hbmdsdmVsX3pfcm9jX3Jpc2luZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl9hbmdsdmVsX3pfcm9jX2ZhbGxpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fbWFnbl94X3JvY19yaXNpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fbWFnbl94X3JvY19mYWxsaW5nX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvZXZlbnRzL2luX21hZ25feV9yb2NfcmlzaW5nX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvZXZlbnRzL2luX21hZ25feV9yb2NfZmFsbGluZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl9tYWduX3pfcm9jX3Jpc2luZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl9tYWduX3pfcm9jX2ZhbGxpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfbWFnbmV0aWNfcm9jX3Jpc2luZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF9tYWduZXRpY19yb2NfZmFsbGluZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF90cnVlX3JvY19yaXNpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfdHJ1ZV9yb2NfZmFsbGluZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF9tYWduZXRpY190aWx0X2NvbXBfcm9jX3Jpc2luZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF9tYWduZXRpY190aWx0X2NvbXBfcm9jX2ZhbGxpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfdHJ1ZV90aWx0X2NvbXBfcm9jX3Jpc2luZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF90cnVlX3RpbHRfY29tcF9yb2NfZmFsbGluZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl92b2x0YWdlWV9zdXBwbHlfcm9jX3Jpc2luZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl92b2x0YWdlWV9zdXBwbHlfcm9jX2ZhbGxpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fdm9sdGFnZVlfcm9jX3Jpc2luZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl92b2x0YWdlWV9yb2NfZmFsbGluZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl90ZW1wWV9yb2NfcmlzaW5nX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvZXZlbnRzL2luX3RlbXBZX3JvY19mYWxsaW5nX2VuCitLZXJuZWxWZXJzaW9uOgkyLjYuMzcKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlFdmVudCBnZW5lcmF0ZWQgd2hlbiBjaGFubmVsIHBhc3NlcyBhIHRocmVzaG9sZCBvbiB0aGUgcmF0ZSBvZgorCQljaGFuZ2UgKDFzdCBkaWZmZXJlbnRpYWwpIGluIHRoZSBzcGVjaWZpZWQgKF9yaXNpbmd8X2ZhbGxpbmcpCisJCWRpcmVjdGlvbi4gSWYgdGhlIGRpcmVjdGlvbiBpcyBub3Qgc3BlY2lmaWVkLCB0aGVuIGVpdGhlciB0aGUKKwkJZGV2aWNlIHdpbGwgcmVwb3J0IGFuIGV2ZW50IHdoaWNoIGV2ZXIgZGlyZWN0aW9uIGEgc2luZ2xlCisJCXRocmVzaG9sZCB2YWx1ZSBpcyBwYXNzZWQgaW4gKGUuZy4KKwkJPHR5cGU+W1ldW19uYW1lXV88cmF3fGlucHV0Pl9yb2NfdmFsdWUpIG9yCisJCTx0eXBlPltZXVtfbmFtZV1fPHJhd3xpbnB1dD5fcm9jX3Jpc2luZ192YWx1ZSBhbmQKKwkJPHR5cGU+W1ldW19uYW1lXV88cmF3fGlucHV0Pl9yb2NfZmFsbGluZ192YWx1ZSBtYXkgdGFrZQorCQlkaWZmZXJlbnQgdmFsdWVzLCBidXQgdGhlIGRldmljZSBjYW4gb25seSBlbmFibGUgYm90aCByYXRlIG9mCisJCWNoYW5nZSB0aHJlc2hvbGRzIG9yIG5laXRoZXIuCisJCU5vdGUgdGhlIGRyaXZlciB3aWxsIGFzc3VtZSB0aGUgbGFzdCBwIGV2ZW50cyByZXF1ZXN0ZWQgYXJlCisJCXRvIGJlIGVuYWJsZWQgd2hlcmUgcCBpcyBob3dldmVyIG1hbnkgaXQgc3VwcG9ydHMgKHdoaWNoIG1heQorCQl2YXJ5IGRlcGVuZGluZyBvbiB0aGUgZXhhY3Qgc2V0IHJlcXVlc3RlZC4gU28gaWYgeW91IHdhbnQgdG8gYmUKKwkJc3VyZSB5b3UgaGF2ZSBzZXQgd2hhdCB5b3UgdGhpbmsgeW91IGhhdmUsIGNoZWNrIHRoZSBjb250ZW50cyBvZgorCQl0aGVzZSBhdHRyaWJ1dGVzIGFmdGVyIGV2ZXJ5dGhpbmcgaXMgY29uZmlndXJlZC4gRHJpdmVycyBtYXkKKwkJaGF2ZSB0byBidWZmZXIgYW55IHBhcmFtZXRlcnMgc28gdGhhdCB0aGV5IGFyZSBjb25zaXN0ZW50IHdoZW4KKwkJYSBnaXZlbiBldmVudCB0eXBlIGlzIGVuYWJsZWQgYSBmdXR1cmUgcG9pbnQgKGFuZCBub3QgdGhvc2UgZm9yCisJCXdoYXRldmVyIGV2ZW50IHdhcyBwcmV2aW91c2x5IGVuYWJsZWQpLgorCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FjY2VsX3RocmVzaF9yaXNpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWNjZWxfdGhyZXNoX2ZhbGxpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWNjZWxfeF9yYXdfdGhyZXNoX3Jpc2luZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY2NlbF94X3Jhd190aHJlc2hfZmFsbGluZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY2NlbF95X3Jhd190aHJlc2hfcmlzaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FjY2VsX3lfcmF3X3RocmVzaF9mYWxsaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FjY2VsX3pfcmF3X3RocmVzaF9yaXNpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWNjZWxfel9yYXdfdGhyZXNoX2ZhbGxpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYW5nbHZlbF94X3Jhd190aHJlc2hfcmlzaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FuZ2x2ZWxfeF9yYXdfdGhyZXNoX2ZhbGxpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYW5nbHZlbF95X3Jhd190aHJlc2hfcmlzaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FuZ2x2ZWxfeV9yYXdfdGhyZXNoX2ZhbGxpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYW5nbHZlbF96X3Jhd190aHJlc2hfcmlzaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FuZ2x2ZWxfel9yYXdfdGhyZXNoX2ZhbGxpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fbWFnbl94X3Jhd190aHJlc2hfcmlzaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX21hZ25feF9yYXdfdGhyZXNoX2ZhbGxpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fbWFnbl95X3Jhd190aHJlc2hfcmlzaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX21hZ25feV9yYXdfdGhyZXNoX2ZhbGxpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fbWFnbl96X3Jhd190aHJlc2hfcmlzaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX21hZ25fel9yYXdfdGhyZXNoX2ZhbGxpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfbWFnbmV0aWNfcmF3X3RocmVzaF9yaXNpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfbWFnbmV0aWNfcmF3X3RocmVzaF9mYWxsaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3JvdF9mcm9tX25vcnRoX3RydWVfcmF3X3RocmVzaF9yaXNpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfdHJ1ZV9yYXdfdGhyZXNoX2ZhbGxpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfbWFnbmV0aWNfdGlsdF9jb21wX3Jhd190aHJlc2hfcmlzaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3JvdF9mcm9tX25vcnRoX21hZ25ldGljX3RpbHRfY29tcF9yYXdfdGhyZXNoX2ZhbGxpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfdHJ1ZV90aWx0X2NvbXBfcmF3X3RocmVzaF9yaXNpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfdHJ1ZV90aWx0X2NvbXBfcmF3X3RocmVzaF9mYWxsaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3ZvbHRhZ2VZX3N1cHBseV9yYXdfdGhyZXNoX3Jpc2luZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl92b2x0YWdlWV9zdXBwbHlfcmF3X3RocmVzaF9mYWxsaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3ZvbHRhZ2VZX3Jhd190aHJlc2hfcmlzaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3ZvbHRhZ2VZX3Jhd190aHJlc2hfZmFsbGluZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl90ZW1wWV9yYXdfdGhyZXNoX3Jpc2luZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl90ZW1wWV9yYXdfdGhyZXNoX2ZhbGxpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5faWxsdW1pbmFuY2UwX3RocmVzaF9mYWxsaW5nX3ZhbHVlCit3aGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2lsbHVtaW5hbmNlMF90aHJlc2hfcmlzaW5nX3ZhbHVlCit3aGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3Byb3hpbWl0eTBfdGhyZXNoX2ZhbGxpbmdfdmFsdWUKK3doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcHJveGltaXR5MF90aHJlc2hfcmlzaW5nX3ZhbHVlCitLZXJuZWxWZXJzaW9uOgkyLjYuMzcKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlTcGVjaWZpZXMgdGhlIHZhbHVlIG9mIHRocmVzaG9sZCB0aGF0IHRoZSBkZXZpY2UgaXMgY29tcGFyaW5nCisJCWFnYWluc3QgZm9yIHRoZSBldmVudHMgZW5hYmxlZCBieQorCQk8dHlwZT5ZW19uYW1lXV90aHJlc2hbX3Jpc2luZ3xmYWxsaW5nXV9lbi4KKwkJSWYgc2VwYXJhdGUgYXR0cmlidXRlcyBleGlzdCBmb3IgdGhlIHR3byBkaXJlY3Rpb25zLCBidXQKKwkJZGlyZWN0aW9uIGlzIG5vdCBzcGVjaWZpZWQgZm9yIHRoaXMgYXR0cmlidXRlLCB0aGVuIGEgc2luZ2xlCisJCXRocmVzaG9sZCB2YWx1ZSBhcHBsaWVzIHRvIGJvdGggZGlyZWN0aW9ucy4KKwkJVGhlIHJhdyBvciBpbnB1dCBlbGVtZW50IG9mIHRoZSBuYW1lIGluZGljYXRlcyB3aGV0aGVyIHRoZQorCQl2YWx1ZSBpcyBpbiByYXcgZGV2aWNlIHVuaXRzIG9yIGluIHByb2Nlc3NlZCB1bml0cyAoYXMgX3JhdworCQlhbmQgX2lucHV0IGRvIG9uIHN5c2ZzIGRpcmVjdCBjaGFubmVsIHJlYWQgYXR0cmlidXRlcykuCisKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWNjZWxfc2NhbGUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWNjZWxfcGVha19zY2FsZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hbmdsdmVsX3NjYWxlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX21hZ25fc2NhbGUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfbWFnbmV0aWNfc2NhbGUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfdHJ1ZV9zY2FsZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl92b2x0YWdlX3NjYWxlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3ZvbHRhZ2Vfc3VwcGx5X3NjYWxlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3RlbXBfc2NhbGUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5faWxsdW1pbmFuY2Vfc2NhbGUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcHJveGltaXR5X3NjYWxlCitLZXJuZWxWZXJzaW9uOgkzLjIxCitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKyAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIGNvbnZlcnNpb24gZmFjdG9yIGZyb20gdGhlIHN0YW5kYXJkIHVuaXRzCisgICAgICAgICAgICAgICAgdG8gZGV2aWNlIHNwZWNpZmljIHVuaXRzIHVzZWQgdG8gc2V0IHRoZSBldmVudCB0cmlnZ2VyCisgICAgICAgICAgICAgICAgdGhyZXNob2xkLgorCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FjY2VsX3hfdGhyZXNoX3Jpc2luZ19oeXN0ZXJlc2lzCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FjY2VsX3hfdGhyZXNoX2ZhbGxpbmdfaHlzdGVyZXNpcworV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY2NlbF94X3RocmVzaF9laXRoZXJfaHlzdGVyZXNpcworV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY2NlbF95X3RocmVzaF9yaXNpbmdfaHlzdGVyZXNpcworV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY2NlbF95X3RocmVzaF9mYWxsaW5nX2h5c3RlcmVzaXMKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWNjZWxfeV90aHJlc2hfZWl0aGVyX2h5c3RlcmVzaXMKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWNjZWxfel90aHJlc2hfcmlzaW5nX2h5c3RlcmVzaXMKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWNjZWxfel90aHJlc2hfZmFsbGluZ19oeXN0ZXJlc2lzCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FjY2VsX3pfdGhyZXNoX2VpdGhlcl9oeXN0ZXJlc2lzCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FuZ2x2ZWxfeF90aHJlc2hfcmlzaW5nX2h5c3RlcmVzaXMKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYW5nbHZlbF94X3RocmVzaF9mYWxsaW5nX2h5c3RlcmVzaXMKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYW5nbHZlbF94X3RocmVzaF9laXRoZXJfaHlzdGVyZXNpcworV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hbmdsdmVsX3lfdGhyZXNoX3Jpc2luZ19oeXN0ZXJlc2lzCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FuZ2x2ZWxfeV90aHJlc2hfZmFsbGluZ19oeXN0ZXJlc2lzCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FuZ2x2ZWxfeV90aHJlc2hfZWl0aGVyX2h5c3RlcmVzaXMKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYW5nbHZlbF96X3RocmVzaF9yaXNpbmdfaHlzdGVyZXNpcworV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hbmdsdmVsX3pfdGhyZXNoX2ZhbGxpbmdfaHlzdGVyZXNpcworV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hbmdsdmVsX3pfdGhyZXNoX2VpdGhlcl9oeXN0ZXJlc2lzCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX21hZ25feF90aHJlc2hfcmlzaW5nX2h5c3RlcmVzaXMKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fbWFnbl94X3RocmVzaF9mYWxsaW5nX2h5c3RlcmVzaXMKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fbWFnbl94X3RocmVzaF9laXRoZXJfaHlzdGVyZXNpcworV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9tYWduX3lfdGhyZXNoX3Jpc2luZ19oeXN0ZXJlc2lzCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX21hZ25feV90aHJlc2hfZmFsbGluZ19oeXN0ZXJlc2lzCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX21hZ25feV90aHJlc2hfZWl0aGVyX2h5c3RlcmVzaXMKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fbWFnbl96X3RocmVzaF9yaXNpbmdfaHlzdGVyZXNpcworV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9tYWduX3pfdGhyZXNoX2ZhbGxpbmdfaHlzdGVyZXNpcworV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9tYWduX3pfdGhyZXNoX2VpdGhlcl9oeXN0ZXJlc2lzCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3JvdF9mcm9tX25vcnRoX21hZ25ldGljX3RocmVzaF9yaXNpbmdfaHlzdGVyZXNpcworV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF9tYWduZXRpY190aHJlc2hfZmFsbGluZ19oeXN0ZXJlc2lzCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3JvdF9mcm9tX25vcnRoX21hZ25ldGljX3RocmVzaF9laXRoZXJfaHlzdGVyZXNpcworV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF90cnVlX3RocmVzaF9yaXNpbmdfaHlzdGVyZXNpcworV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF90cnVlX3RocmVzaF9mYWxsaW5nX2h5c3RlcmVzaXMKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfdHJ1ZV90aHJlc2hfZWl0aGVyX2h5c3RlcmVzaXMKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfbWFnbmV0aWNfdGlsdF9jb21wX3RocmVzaF9yaXNpbmdfaHlzdGVyZXNpcworV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF9tYWduZXRpY190aWx0X2NvbXBfdGhyZXNoX2ZhbGxpbmdfaHlzdGVyZXNpcworV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF9tYWduZXRpY190aWx0X2NvbXBfdGhyZXNoX2VpdGhlcl9oeXN0ZXJlc2lzCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3JvdF9mcm9tX25vcnRoX3RydWVfdGlsdF9jb21wX3RocmVzaF9yaXNpbmdfaHlzdGVyZXNpcworV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF90cnVlX3RpbHRfY29tcF90aHJlc2hfZmFsbGluZ19oeXN0ZXJlc2lzCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3JvdF9mcm9tX25vcnRoX3RydWVfdGlsdF9jb21wX3RocmVzaF9laXRoZXJfaHlzdGVyZXNpcworV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl92b2x0YWdlWV90aHJlc2hfcmlzaW5nX2h5c3RlcmVzaXMKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fdm9sdGFnZVlfdGhyZXNoX2ZhbGxpbmdfaHlzdGVyZXNpcworV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl92b2x0YWdlWV90aHJlc2hfZWl0aGVyX2h5c3RlcmVzaXMKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fdGVtcFlfdGhyZXNoX3Jpc2luZ19oeXN0ZXJlc2lzCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3RlbXBZX3RocmVzaF9mYWxsaW5nX2h5c3RlcmVzaXMKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fdGVtcFlfdGhyZXNoX2VpdGhlcl9oeXN0ZXJlc2lzCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2lsbHVtaW5hbmNlMF90aHJlc2hfZmFsbGluZ19oeXN0ZXJlc2lzCit3aGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2lsbHVtaW5hbmNlMF90aHJlc2hfcmlzaW5nX2h5c3RlcmVzaXMKK3doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5faWxsdW1pbmFuY2UwX3RocmVzaF9laXRoZXJfaHlzdGVyZXNpcword2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9wcm94aW1pdHkwX3RocmVzaF9mYWxsaW5nX2h5c3RlcmVzaXMKK3doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcHJveGltaXR5MF90aHJlc2hfcmlzaW5nX2h5c3RlcmVzaXMKK3doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcHJveGltaXR5MF90aHJlc2hfZWl0aGVyX2h5c3RlcmVzaXMKK0tlcm5lbFZlcnNpb246CTMuMTMKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlTcGVjaWZpZXMgdGhlIGh5c3RlcmVzaXMgb2YgdGhyZXNob2xkIHRoYXQgdGhlIGRldmljZSBpcyBjb21wYXJpbmcKKwkJYWdhaW5zdCBmb3IgdGhlIGV2ZW50cyBlbmFibGVkIGJ5CisJCTx0eXBlPllbX25hbWVdX3RocmVzaFtfKHJpc2luZ3xmYWxsaW5nKV1faHlzdGVyZXNpcy4KKwkJSWYgc2VwYXJhdGUgYXR0cmlidXRlcyBleGlzdCBmb3IgdGhlIHR3byBkaXJlY3Rpb25zLCBidXQKKwkJZGlyZWN0aW9uIGlzIG5vdCBzcGVjaWZpZWQgZm9yIHRoaXMgYXR0cmlidXRlLCB0aGVuIGEgc2luZ2xlCisJCWh5c3RlcmVzaXMgdmFsdWUgYXBwbGllcyB0byBib3RoIGRpcmVjdGlvbnMuCisJCUZvciBmYWxsaW5nIGV2ZW50cyB0aGUgaHlzdGVyZXNpcyBpcyBhZGRlZCB0byB0aGUgX3ZhbHVlIGF0dHJpYnV0ZSBmb3IKKwkJdGhpcyBldmVudCB0byBnZXQgdGhlIHVwcGVyIHRocmVzaG9sZCBmb3Igd2hlbiB0aGUgZXZlbnQgZ29lcyBiYWNrIHRvCisJCW5vcm1hbCwgZm9yIHJpc2luZyBldmVudHMgdGhlIGh5c3RlcmVzaXMgaXMgc3VidHJhY3RlZCBmcm9tIHRoZSBfdmFsdWUKKwkJYXR0cmlidXRlLiBFLmcuIGlmIGluX3ZvbHRhZ2UwX3Jhd190aHJlc2hfcmlzaW5nX3ZhbHVlIGlzIHNldCB0byAxMjAwCisJCWFuZCBpbl92b2x0YWdlMF9yYXdfdGhyZXNoX3Jpc2luZ19oeXN0ZXJlc2lzIGlzIHNldCB0byA1MC4gVGhlIGV2ZW50CisJCXdpbGwgZ2V0IGFjdGl2YXRlZCBvbmNlIGluX3ZvbHRhZ2UwX3JhdyBnb2VzIGFib3ZlIDEyMDAgYW5kIHdpbGwgYmVjb21lCisJCWRlYWN0aXZlZCBhZ2FpbiBvbmNlIHRoZSB2YWx1ZSBmYWxscyBiZWxvdyAxMTUwLgorCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FjY2VsX3hfcmF3X3JvY19yaXNpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWNjZWxfeF9yYXdfcm9jX2ZhbGxpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWNjZWxfeV9yYXdfcm9jX3Jpc2luZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY2NlbF95X3Jhd19yb2NfZmFsbGluZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY2NlbF96X3Jhd19yb2NfcmlzaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FjY2VsX3pfcmF3X3JvY19mYWxsaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FuZ2x2ZWxfeF9yYXdfcm9jX3Jpc2luZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hbmdsdmVsX3hfcmF3X3JvY19mYWxsaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FuZ2x2ZWxfeV9yYXdfcm9jX3Jpc2luZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hbmdsdmVsX3lfcmF3X3JvY19mYWxsaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FuZ2x2ZWxfel9yYXdfcm9jX3Jpc2luZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hbmdsdmVsX3pfcmF3X3JvY19mYWxsaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX21hZ25feF9yYXdfcm9jX3Jpc2luZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9tYWduX3hfcmF3X3JvY19mYWxsaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX21hZ25feV9yYXdfcm9jX3Jpc2luZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9tYWduX3lfcmF3X3JvY19mYWxsaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX21hZ25fel9yYXdfcm9jX3Jpc2luZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9tYWduX3pfcmF3X3JvY19mYWxsaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3JvdF9mcm9tX25vcnRoX21hZ25ldGljX3Jhd19yb2NfcmlzaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3JvdF9mcm9tX25vcnRoX21hZ25ldGljX3Jhd19yb2NfZmFsbGluZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF90cnVlX3Jhd19yb2NfcmlzaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3JvdF9mcm9tX25vcnRoX3RydWVfcmF3X3JvY19mYWxsaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3JvdF9mcm9tX25vcnRoX21hZ25ldGljX3RpbHRfY29tcF9yYXdfcm9jX3Jpc2luZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF9tYWduZXRpY190aWx0X2NvbXBfcmF3X3JvY19mYWxsaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3JvdF9mcm9tX25vcnRoX3RydWVfdGlsdF9jb21wX3Jhd19yb2NfcmlzaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3JvdF9mcm9tX25vcnRoX3RydWVfdGlsdF9jb21wX3Jhd19yb2NfZmFsbGluZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl92b2x0YWdlWV9zdXBwbHlfcmF3X3JvY19yaXNpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fdm9sdGFnZVlfc3VwcGx5X3Jhd19yb2NfZmFsbGluZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl92b2x0YWdlWV9yYXdfcm9jX3Jpc2luZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl92b2x0YWdlWV9yYXdfcm9jX2ZhbGxpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fdGVtcFlfcmF3X3JvY19yaXNpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fdGVtcFlfcmF3X3JvY19mYWxsaW5nX3ZhbHVlCitLZXJuZWxWZXJzaW9uOgkyLjYuMzcKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlTcGVjaWZpZXMgdGhlIHZhbHVlIG9mIHJhdGUgb2YgY2hhbmdlIHRocmVzaG9sZCB0aGF0IHRoZQorCQlkZXZpY2UgaXMgY29tcGFyaW5nIGFnYWluc3QgZm9yIHRoZSBldmVudHMgZW5hYmxlZCBieQorCQk8dHlwZT5bWV1bX25hbWVdX3JvY1tfcmlzaW5nfGZhbGxpbmddX2VuLgorCQlJZiBzZXBhcmF0ZSBhdHRyaWJ1dGVzIGV4aXN0IGZvciB0aGUgdHdvIGRpcmVjdGlvbnMsCisJCWJ1dCBkaXJlY3Rpb24gaXMgbm90IHNwZWNpZmllZCBmb3IgdGhpcyBhdHRyaWJ1dGUsCisJCXRoZW4gYSBzaW5nbGUgdGhyZXNob2xkIHZhbHVlIGFwcGxpZXMgdG8gYm90aCBkaXJlY3Rpb25zLgorCQlUaGUgcmF3IG9yIGlucHV0IGVsZW1lbnQgb2YgdGhlIG5hbWUgaW5kaWNhdGVzIHdoZXRoZXIgdGhlCisJCXZhbHVlIGlzIGluIHJhdyBkZXZpY2UgdW5pdHMgb3IgaW4gcHJvY2Vzc2VkIHVuaXRzIChhcyBfcmF3CisJCWFuZCBfaW5wdXQgZG8gb24gc3lzZnMgZGlyZWN0IGNoYW5uZWwgcmVhZCBhdHRyaWJ1dGVzKS4KKworV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY2NlbF94X3RocmVzaF9yaXNpbmdfcGVyaW9kCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FjY2VsX3hfdGhyZXNoX2ZhbGxpbmdfcGVyaW9kCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FjY2VsX3hfcm9jX3Jpc2luZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWNjZWxfeF9yb2NfZmFsbGluZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWNjZWxfeV90aHJlc2hfcmlzaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY2NlbF95X3RocmVzaF9mYWxsaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY2NlbF95X3JvY19yaXNpbmdfcGVyaW9kCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FjY2VsX3lfcm9jX2ZhbGxpbmdfcGVyaW9kCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FjY2VsX3pfdGhyZXNoX3Jpc2luZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWNjZWxfel90aHJlc2hfZmFsbGluZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWNjZWxfel9yb2NfcmlzaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY2NlbF96X3JvY19mYWxsaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hbmdsdmVsX3hfdGhyZXNoX3Jpc2luZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYW5nbHZlbF94X3RocmVzaF9mYWxsaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hbmdsdmVsX3hfcm9jX3Jpc2luZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYW5nbHZlbF94X3JvY19mYWxsaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hbmdsdmVsX3lfdGhyZXNoX3Jpc2luZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYW5nbHZlbF95X3RocmVzaF9mYWxsaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hbmdsdmVsX3lfcm9jX3Jpc2luZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYW5nbHZlbF95X3JvY19mYWxsaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hbmdsdmVsX3pfdGhyZXNoX3Jpc2luZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYW5nbHZlbF96X3RocmVzaF9mYWxsaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hbmdsdmVsX3pfcm9jX3Jpc2luZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYW5nbHZlbF96X3JvY19mYWxsaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9tYWduX3hfdGhyZXNoX3Jpc2luZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fbWFnbl94X3RocmVzaF9mYWxsaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9tYWduX3hfcm9jX3Jpc2luZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fbWFnbl94X3JvY19mYWxsaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9tYWduX3lfdGhyZXNoX3Jpc2luZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fbWFnbl95X3RocmVzaF9mYWxsaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9tYWduX3lfcm9jX3Jpc2luZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fbWFnbl95X3JvY19mYWxsaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9tYWduX3pfdGhyZXNoX3Jpc2luZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fbWFnbl96X3RocmVzaF9mYWxsaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9tYWduX3pfcm9jX3Jpc2luZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fbWFnbl96X3JvY19mYWxsaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF9tYWduZXRpY190aHJlc2hfcmlzaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF9tYWduZXRpY190aHJlc2hfZmFsbGluZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfbWFnbmV0aWNfcm9jX3Jpc2luZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfbWFnbmV0aWNfcm9jX2ZhbGxpbmdfcGVyaW9kCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3JvdF9mcm9tX25vcnRoX3RydWVfdGhyZXNoX3Jpc2luZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfdHJ1ZV90aHJlc2hfZmFsbGluZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfdHJ1ZV9yb2NfcmlzaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF90cnVlX3JvY19mYWxsaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF9tYWduZXRpY190aWx0X2NvbXBfdGhyZXNoX3Jpc2luZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfbWFnbmV0aWNfdGlsdF9jb21wX3RocmVzaF9mYWxsaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF9tYWduZXRpY190aWx0X2NvbXBfcm9jX3Jpc2luZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfbWFnbmV0aWNfdGlsdF9jb21wX3JvY19mYWxsaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF90cnVlX3RpbHRfY29tcF90aHJlc2hfcmlzaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9yb3RfZnJvbV9ub3J0aF90cnVlX3RpbHRfY29tcF90aHJlc2hfZmFsbGluZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfdHJ1ZV90aWx0X2NvbXBfcm9jX3Jpc2luZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fcm90X2Zyb21fbm9ydGhfdHJ1ZV90aWx0X2NvbXBfcm9jX2ZhbGxpbmdfcGVyaW9kCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3ZvbHRhZ2VZX3N1cHBseV90aHJlc2hfcmlzaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl92b2x0YWdlWV9zdXBwbHlfdGhyZXNoX2ZhbGxpbmdfcGVyaW9kCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3ZvbHRhZ2VZX3N1cHBseV9yb2NfcmlzaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl92b2x0YWdlWV9zdXBwbHlfcm9jX2ZhbGxpbmdfcGVyaW9kCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3ZvbHRhZ2VZX3RocmVzaF9yaXNpbmdfcGVyaW9kCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3ZvbHRhZ2VZX3RocmVzaF9mYWxsaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl92b2x0YWdlWV9yb2NfcmlzaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl92b2x0YWdlWV9yb2NfZmFsbGluZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fdGVtcFlfdGhyZXNoX3Jpc2luZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fdGVtcFlfdGhyZXNoX2ZhbGxpbmdfcGVyaW9kCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3RlbXBZX3JvY19yaXNpbmdfcGVyaW9kCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3RlbXBZX3JvY19mYWxsaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY2NlbF94Jnkmel9tYWdfZmFsbGluZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5faW50ZW5zaXR5MF90aHJlc2hfcGVyaW9kCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX3Byb3hpbWl0eTBfdGhyZXNoX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY3Rpdml0eV9zdGlsbF90aHJlc2hfcmlzaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY3Rpdml0eV9zdGlsbF90aHJlc2hfZmFsbGluZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWN0aXZpdHlfd2Fsa2luZ190aHJlc2hfcmlzaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY3Rpdml0eV93YWxraW5nX3RocmVzaF9mYWxsaW5nX3BlcmlvZAorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY3Rpdml0eV9qb2dnaW5nX3RocmVzaF9yaXNpbmdfcGVyaW9kCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FjdGl2aXR5X2pvZ2dpbmdfdGhyZXNoX2ZhbGxpbmdfcGVyaW9kCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FjdGl2aXR5X3J1bm5pbmdfdGhyZXNoX3Jpc2luZ19wZXJpb2QKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWN0aXZpdHlfcnVubmluZ190aHJlc2hfZmFsbGluZ19wZXJpb2QKK0tlcm5lbFZlcnNpb246CTIuNi4zNworQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCVBlcmlvZCBvZiB0aW1lIChpbiBzZWNvbmRzKSBmb3Igd2hpY2ggdGhlIGNvbmRpdGlvbiBtdXN0IGJlCisJCW1ldCBiZWZvcmUgYW4gZXZlbnQgaXMgZ2VuZXJhdGVkLiBJZiBkaXJlY3Rpb24gaXMgbm90CisJCXNwZWNpZmllZCB0aGVuIHRoaXMgcGVyaW9kIGFwcGxpZXMgdG8gYm90aCBkaXJlY3Rpb25zLgorCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FjY2VsX3RocmVzaF9yaXNpbmdfbG93X3Bhc3NfZmlsdGVyXzNkYgorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hbmdsdmVsX3RocmVzaF9yaXNpbmdfbG93X3Bhc3NfZmlsdGVyXzNkYgorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9tYWduX3RocmVzaF9yaXNpbmdfbG93X3Bhc3NfZmlsdGVyXzNkYgorS2VybmVsVmVyc2lvbjoJNC4yCitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJSWYgYSBsb3cgcGFzcyBmaWx0ZXIgY2FuIGJlIGFwcGxpZWQgdG8gdGhlIGV2ZW50IGdlbmVyYXRpb24KKwkJdGhpcyBwcm9wZXJ0eSBnaXZlcyBpdHMgM2RiIGZyZXF1ZW5jeSBpbiBIei4KKwkJQSB2YWx1ZSBvZiB6ZXJvIGRpc2FibGVzIHRoZSBmaWx0ZXIuCisKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWNjZWxfdGhyZXNoX3Jpc2luZ19oaWdoX3Bhc3NfZmlsdGVyXzNkYgorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hbmdsdmVsX3RocmVzaF9yaXNpbmdfaGlnaF9wYXNzX2ZpbHRlcl8zZGIKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fbWFnbl90aHJlc2hfcmlzaW5nX2hpZ2hfcGFzc19maWx0ZXJfM2RiCitLZXJuZWxWZXJzaW9uOgk0LjIKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJZiBhIGhpZ2ggcGFzcyBmaWx0ZXIgY2FuIGJlIGFwcGxpZWQgdG8gdGhlIGV2ZW50IGdlbmVyYXRpb24KKwkJdGhpcyBwcm9wZXJ0eSBnaXZlcyBpdHMgM2RiIGZyZXF1ZW5jeSBpbiBIei4KKwkJQSB2YWx1ZSBvZiB6ZXJvIGRpc2FibGVzIHRoZSBmaWx0ZXIuCisKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWN0aXZpdHlfc3RpbGxfdGhyZXNoX3Jpc2luZ19lbgorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY3Rpdml0eV9zdGlsbF90aHJlc2hfZmFsbGluZ19lbgorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY3Rpdml0eV93YWxraW5nX3RocmVzaF9yaXNpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWN0aXZpdHlfd2Fsa2luZ190aHJlc2hfZmFsbGluZ19lbgorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY3Rpdml0eV9qb2dnaW5nX3RocmVzaF9yaXNpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWN0aXZpdHlfam9nZ2luZ190aHJlc2hfZmFsbGluZ19lbgorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY3Rpdml0eV9ydW5uaW5nX3RocmVzaF9yaXNpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWN0aXZpdHlfcnVubmluZ190aHJlc2hfZmFsbGluZ19lbgorS2VybmVsVmVyc2lvbjoJMy4xOQorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUVuYWJsZXMgb3IgZGlzYWJsZXMgYWN0aXZpdGl0eSBldmVudHMuIERlcGVuZGluZyBvbiBkaXJlY3Rpb24KKwkJYW4gZXZlbnQgaXMgZ2VuZXJhdGVkIHdoZW4gc2Vuc29yIEVOVEVSUyBvciBMRUFWRVMgYSBnaXZlbiBzdGF0ZS4KKworV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY3Rpdml0eV9zdGlsbF90aHJlc2hfcmlzaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FjdGl2aXR5X3N0aWxsX3RocmVzaF9mYWxsaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FjdGl2aXR5X3dhbGtpbmdfdGhyZXNoX3Jpc2luZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY3Rpdml0eV93YWxraW5nX3RocmVzaF9mYWxsaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FjdGl2aXR5X2pvZ2dpbmdfdGhyZXNoX3Jpc2luZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY3Rpdml0eV9qb2dnaW5nX3RocmVzaF9mYWxsaW5nX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FjdGl2aXR5X3J1bm5pbmdfdGhyZXNoX3Jpc2luZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY3Rpdml0eV9ydW5uaW5nX3RocmVzaF9mYWxsaW5nX3ZhbHVlCitLZXJuZWxWZXJzaW9uOgkzLjE5CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJQ29uZmlkZW5jZSB2YWx1ZSAoaW4gdW5pdHMgYXMgcGVyY2VudGFnZSkgdG8gYmUgdXNlZAorCQlmb3IgZGVjaWRpbmcgd2hlbiBhbiBldmVudCBzaG91bGQgYmUgZ2VuZXJhdGVkLiBFLmcgZm9yCisJCXJ1bm5pbmc6IElmIHRoZSBjb25maWRlbmNlIHZhbHVlIHJlcG9ydGVkIGJ5IHRoZSBzZW5zb3IKKwkJaXMgZ3JlYXRlciB0aGFuIGluX2FjdGl2aXR5X3J1bm5pbmdfdGhyZXNoX3Jpc2luZ192YWx1ZQorCQl0aGVuIHRoZSBzZW5zb3IgRU5URVJTIHJ1bm5pbmcgc3RhdGUuIENvbnZlcnNlbHksIGlmIHRoZQorCQljb25maWRlbmNlIHZhbHVlIHJlcG9ydGVkIGJ5IHRoZSBzZW5zb3IgaXMgbG93ZXIgdGhhbgorCQlpbl9hY3Rpdml0eV9ydW5uaW5nX3RocmVzaF9mYWxsaW5nX3ZhbHVlIHRoZW4gdGhlIHNlbnNvcgorCQlpcyBMRUFWSU5HIHJ1bm5pbmcgc3RhdGUuCisKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fYWNjZWxfbWFnX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvZXZlbnRzL2luX2FjY2VsX21hZ19yaXNpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fYWNjZWxfbWFnX2ZhbGxpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fYWNjZWxfeF9tYWdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fYWNjZWxfeF9tYWdfcmlzaW5nX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvZXZlbnRzL2luX2FjY2VsX3hfbWFnX2ZhbGxpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fYWNjZWxfeV9tYWdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fYWNjZWxfeV9tYWdfcmlzaW5nX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvZXZlbnRzL2luX2FjY2VsX3lfbWFnX2ZhbGxpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fYWNjZWxfel9tYWdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fYWNjZWxfel9tYWdfcmlzaW5nX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvZXZlbnRzL2luX2FjY2VsX3pfbWFnX2ZhbGxpbmdfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9ldmVudHMvaW5fYWNjZWxfeCZ5JnpfbWFnX3Jpc2luZ19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl9hY2NlbF94Jnkmel9tYWdfZmFsbGluZ19lbgorS2VybmVsVmVyc2lvbjoJMi42LjM3CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJU2ltaWxhciB0byBpbl9hY2NlbF94X3RocmVzaFtfcmlzaW5nfF9mYWxsaW5nXV9lbiwgYnV0IGhlcmUgdGhlCisJCW1hZ25pdHVkZSBvZiB0aGUgY2hhbm5lbCBpcyBjb21wYXJlZCB0byB0aGUgdGhyZXNob2xkLCBub3QgaXRzCisJCXNpZ25lZCB2YWx1ZS4KKworV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY2NlbF9yYXdfbWFnX3ZhbHVlCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2FjY2VsX3hfcmF3X21hZ19yaXNpbmdfdmFsdWUKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fYWNjZWxfeV9yYXdfbWFnX3Jpc2luZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9hY2NlbF96X3Jhd19tYWdfcmlzaW5nX3ZhbHVlCitLZXJuZWxWZXJzaW9uOgkyLjYuMzcKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlUaGUgdmFsdWUgdG8gd2hpY2ggdGhlIG1hZ25pdHVkZSBvZiB0aGUgY2hhbm5lbCBpcyBjb21wYXJlZC4gSWYKKwkJbnVtYmVyIG9yIGRpcmVjdGlvbiBpcyBub3Qgc3BlY2lmaWVkLCBhcHBsaWVzIHRvIGFsbCBjaGFubmVscyBvZgorCQl0aGlzIHR5cGUuCisKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5fc3RlcHNfY2hhbmdlX2VuCitLZXJuZWxWZXJzaW9uOgk0LjAKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlFdmVudCBnZW5lcmF0ZWQgd2hlbiBjaGFubmVsIHBhc3NlcyBhIHRocmVzaG9sZCBvbiB0aGUgYWJzb2x1dGUKKwkJY2hhbmdlIGluIHZhbHVlLiBFLmcuIGZvciBzdGVwczogYSBzdGVwIGNoYW5nZSBldmVudCBpcworCQlnZW5lcmF0ZWQgZWFjaCB0aW1lIHRoZSB1c2VyIHRha2VzIE4gc3RlcHMsIHdoZXJlIE4gaXMgc2V0IHVzaW5nCisJCWluX3N0ZXBzX2NoYW5nZV92YWx1ZS4KKworV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbl9zdGVwc19jaGFuZ2VfdmFsdWUKK0tlcm5lbFZlcnNpb246CTQuMAorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCVNwZWNpZmllcyB0aGUgdmFsdWUgb2YgY2hhbmdlIHRocmVzaG9sZCB0aGF0IHRoZQorCQlkZXZpY2UgaXMgY29tcGFyaW5nIGFnYWluc3QgZm9yIHRoZSBldmVudHMgZW5hYmxlZCBieQorCQk8dHlwZT5bWV1bX25hbWVdX3JvY1tfcmlzaW5nfGZhbGxpbmd8XV9lbi4gRS5nLiBmb3Igc3RlcHM6CisJCWlmIHNldCB0byAzLCBhIHN0ZXAgY2hhbmdlIGV2ZW50IHdpbGwgYmUgZ2VuZXJhdGVkIGV2ZXJ5IDMKKwkJc3RlcHMuCisKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC90cmlnZ2VyL2N1cnJlbnRfdHJpZ2dlcgorS2VybmVsVmVyc2lvbjoJMi42LjM1CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJVGhlIG5hbWUgb2YgdGhlIHRyaWdnZXIgc291cmNlIGJlaW5nIHVzZWQsIGFzIHBlciBzdHJpbmcgZ2l2ZW4KKwkJaW4gL3N5cy9jbGFzcy9paW8vdHJpZ2dlclkvbmFtZS4KKworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2J1ZmZlci9sZW5ndGgKK0tlcm5lbFZlcnNpb246CTIuNi4zNQorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCU51bWJlciBvZiBzY2FucyBjb250YWluZWQgYnkgdGhlIGJ1ZmZlci4KKworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2J1ZmZlci9lbmFibGUKK0tlcm5lbFZlcnNpb246CTIuNi4zNQorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUFjdHVhbGx5IHN0YXJ0IHRoZSBidWZmZXIgY2FwdHVyZSB1cC4gIFdpbGwgc3RhcnQgdHJpZ2dlcgorCQlpZiBmaXJzdCBkZXZpY2UgYW5kIGFwcHJvcHJpYXRlLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cworS2VybmVsVmVyc2lvbjoJMi42LjM3CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJRGlyZWN0b3J5IGNvbnRhaW5pbmcgaW50ZXJmYWNlcyBmb3IgZWxlbWVudHMgdGhhdCB3aWxsIGJlCisJCWNhcHR1cmVkIGZvciBhIHNpbmdsZSB0cmlnZ2VyZWQgc2FtcGxlIHNldCBpbiB0aGUgYnVmZmVyLgorCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl9hY2NlbF94X2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl9hY2NlbF95X2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl9hY2NlbF96X2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl9hbmdsdmVsX3hfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9zY2FuX2VsZW1lbnRzL2luX2FuZ2x2ZWxfeV9lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fYW5nbHZlbF96X2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl9tYWduX3hfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9zY2FuX2VsZW1lbnRzL2luX21hZ25feV9lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fbWFnbl96X2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl9yb3RfZnJvbV9ub3J0aF9tYWduZXRpY19lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fcm90X2Zyb21fbm9ydGhfdHJ1ZV9lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fcm90X2Zyb21fbm9ydGhfbWFnbmV0aWNfdGlsdF9jb21wX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl9yb3RfZnJvbV9ub3J0aF90cnVlX3RpbHRfY29tcF9lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fdGltZXN0YW1wX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl92b2x0YWdlWV9zdXBwbHlfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9zY2FuX2VsZW1lbnRzL2luX3ZvbHRhZ2VZX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl92b2x0YWdlWS12b2x0YWdlWl9lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fdm9sdGFnZVlfaV9lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fdm9sdGFnZVlfcV9lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fdm9sdGFnZV9pX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl92b2x0YWdlX3FfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9zY2FuX2VsZW1lbnRzL2luX2luY2xpX3hfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9zY2FuX2VsZW1lbnRzL2luX2luY2xpX3lfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9zY2FuX2VsZW1lbnRzL2luX3ByZXNzdXJlWV9lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fcHJlc3N1cmVfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9zY2FuX2VsZW1lbnRzL2luX3JvdF9xdWF0ZXJuaW9uX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl9wcm94aW1pdHlfZW4KK0tlcm5lbFZlcnNpb246CTIuNi4zNworQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCVNjYW4gZWxlbWVudCBjb250cm9sIGZvciB0cmlnZ2VyZWQgZGF0YSBjYXB0dXJlLgorCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl9hY2NlbF90eXBlCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl9hbmdsdmVsX3R5cGUKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9zY2FuX2VsZW1lbnRzL2luX21hZ25fdHlwZQorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5faW5jbGlfdHlwZQorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fdm9sdGFnZVlfdHlwZQorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fdm9sdGFnZV90eXBlCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl92b2x0YWdlWV9zdXBwbHlfdHlwZQorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fdm9sdGFnZVlfaV90eXBlCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl92b2x0YWdlWV9xX3R5cGUKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9zY2FuX2VsZW1lbnRzL2luX3ZvbHRhZ2VfaV90eXBlCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl92b2x0YWdlX3FfdHlwZQorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fdGltZXN0YW1wX3R5cGUKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9zY2FuX2VsZW1lbnRzL2luX3ByZXNzdXJlWV90eXBlCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl9wcmVzc3VyZV90eXBlCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl9yb3RfcXVhdGVybmlvbl90eXBlCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl9wcm94aW1pdHlfdHlwZQorS2VybmVsVmVyc2lvbjoJMi42LjM3CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJRGVzY3JpcHRpb24gb2YgdGhlIHNjYW4gZWxlbWVudCBkYXRhIHN0b3JhZ2Ugd2l0aGluIHRoZSBidWZmZXIKKwkJYW5kIGhlbmNlIHRoZSBmb3JtIGluIHdoaWNoIGl0IGlzIHJlYWQgZnJvbSB1c2VyLXNwYWNlLgorCQlGb3JtIGlzIFtiZXxsZV06W3N8dV1iaXRzL3N0b3JhZ2ViaXRzWz4+c2hpZnRdLgorCQliZSBvciBsZSBzcGVjaWZpZXMgYmlnIG9yIGxpdHRsZSBlbmRpYW4uIHMgb3IgdSBzcGVjaWZpZXMgaWYKKwkJc2lnbmVkICgyJ3MgY29tcGxlbWVudCkgb3IgdW5zaWduZWQuIGJpdHMgaXMgdGhlIG51bWJlciBvZiBiaXRzCisJCW9mIGRhdGEgYW5kIHN0b3JhZ2ViaXRzIGlzIHRoZSBzcGFjZSAoYWZ0ZXIgcGFkZGluZykgdGhhdCBpdAorCQlvY2N1cGllcyBpbiB0aGUgYnVmZmVyLiBzaGlmdCBpZiBzcGVjaWZpZWQsIGlzIHRoZSBzaGlmdCB0aGF0CisJCW5lZWRzIHRvIGJlIGFwcGxpZWQgcHJpb3IgdG8gbWFza2luZyBvdXQgdW51c2VkIGJpdHMuIFNvbWUKKwkJZGV2aWNlcyBwdXQgdGhlaXIgZGF0YSBpbiB0aGUgbWlkZGxlIG9mIHRoZSB0cmFuc2ZlcnJlZCBlbGVtZW50cworCQl3aXRoIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gYm90aCBzaWRlcy4gIE5vdGUgdGhhdCBzb21lCisJCWRldmljZXMgd2lsbCBoYXZlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaW4gdGhlIHVudXNlZCBiaXRzCisJCXNvIHRvIGdldCBhIGNsZWFuIHZhbHVlLCB0aGUgYml0cyB2YWx1ZSBtdXN0IGJlIHVzZWQgdG8gbWFzaworCQl0aGUgYnVmZmVyIG91dHB1dCB2YWx1ZSBhcHByb3ByaWF0ZWx5LiAgVGhlIHN0b3JhZ2ViaXRzIHZhbHVlCisJCWFsc28gc3BlY2lmaWVzIHRoZSBkYXRhIGFsaWdubWVudC4gIFNvIHM0OC82ND4+MiB3aWxsIGJlIGEKKwkJc2lnbmVkIDQ4IGJpdCBpbnRlZ2VyIHN0b3JlZCBpbiBhIDY0IGJpdCBsb2NhdGlvbiBhbGlnbmVkIHRvCisJCWEgNjQgYml0IGJvdW5kYXJ5LiBUbyBvYnRhaW4gdGhlIGNsZWFuIHZhbHVlLCBzaGlmdCByaWdodCAyCisJCWFuZCBhcHBseSBhIG1hc2sgdG8gemVybyB0aGUgdG9wIDE2IGJpdHMgb2YgdGhlIHJlc3VsdC4KKwkJRm9yIG90aGVyIHN0b3JhZ2UgY29tYmluYXRpb25zIHRoaXMgYXR0cmlidXRlIHdpbGwgYmUgZXh0ZW5kZWQKKwkJYXBwcm9wcmlhdGVseS4KKworV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fYWNjZWxfdHlwZV9hdmFpbGFibGUKK0tlcm5lbFZlcnNpb246CTIuNi4zNworQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUlmIHRoZSB0eXBlIHBhcmFtZXRlciBjYW4gdGFrZSBvbmUgb2YgYSBzbWFsbCBzZXQgb2YgdmFsdWVzLAorCQl0aGlzIGF0dHJpYnV0ZSBsaXN0cyB0aGVtLgorCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl92b2x0YWdlWV9pbmRleAorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fdm9sdGFnZVlfc3VwcGx5X2luZGV4CitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl92b2x0YWdlWV9pX2luZGV4CitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl92b2x0YWdlWV9xX2luZGV4CitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl92b2x0YWdlX2lfaW5kZXgKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9zY2FuX2VsZW1lbnRzL2luX3ZvbHRhZ2VfcV9pbmRleAorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fYWNjZWxfeF9pbmRleAorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fYWNjZWxfeV9pbmRleAorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fYWNjZWxfel9pbmRleAorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fYW5nbHZlbF94X2luZGV4CitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl9hbmdsdmVsX3lfaW5kZXgKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9zY2FuX2VsZW1lbnRzL2luX2FuZ2x2ZWxfel9pbmRleAorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fbWFnbl94X2luZGV4CitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl9tYWduX3lfaW5kZXgKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9zY2FuX2VsZW1lbnRzL2luX21hZ25fel9pbmRleAorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fcm90X2Zyb21fbm9ydGhfbWFnbmV0aWNfaW5kZXgKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9zY2FuX2VsZW1lbnRzL2luX3JvdF9mcm9tX25vcnRoX3RydWVfaW5kZXgKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9zY2FuX2VsZW1lbnRzL2luX3JvdF9mcm9tX25vcnRoX21hZ25ldGljX3RpbHRfY29tcF9pbmRleAorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fcm90X2Zyb21fbm9ydGhfdHJ1ZV90aWx0X2NvbXBfaW5kZXgKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9zY2FuX2VsZW1lbnRzL2luX2luY2xpX3hfaW5kZXgKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9zY2FuX2VsZW1lbnRzL2luX2luY2xpX3lfaW5kZXgKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9zY2FuX2VsZW1lbnRzL2luX3RpbWVzdGFtcF9pbmRleAorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fcHJlc3N1cmVZX2luZGV4CitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvc2Nhbl9lbGVtZW50cy9pbl9wcmVzc3VyZV9pbmRleAorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL3NjYW5fZWxlbWVudHMvaW5fcm90X3F1YXRlcm5pb25faW5kZXgKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9zY2FuX2VsZW1lbnRzL2luX3Byb3hpbWl0eV9pbmRleAorS2VybmVsVmVyc2lvbjoJMi42LjM3CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJQSBzaW5nbGUgcG9zaXRpdmUgaW50ZWdlciBzcGVjaWZ5aW5nIHRoZSBwb3NpdGlvbiBvZiB0aGlzCisJCXNjYW4gZWxlbWVudCBpbiB0aGUgYnVmZmVyLiBOb3RlIHRoZXNlIGFyZSBub3QgZGVwZW5kZW50IG9uCisJCXdoYXQgaXMgZW5hYmxlZCBhbmQgbWF5IG5vdCBiZSBjb250aWd1b3VzLiBUaHVzIGZvciB1c2VyLXNwYWNlCisJCXRvIGVzdGFibGlzaCB0aGUgZnVsbCBsYXlvdXQgdGhlc2UgbXVzdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uCisJCXdpdGggYWxsIF9lbiBhdHRyaWJ1dGVzIHRvIGVzdGFibGlzaCB3aGljaCBjaGFubmVscyBhcmUgcHJlc2VudCwKKwkJYW5kIHRoZSByZWxldmFudCBfdHlwZSBhdHRyaWJ1dGVzIHRvIGVzdGFibGlzaCB0aGUgZGF0YSBzdG9yYWdlCisJCWZvcm1hdC4KKworV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2luX2FjdGl2aXR5X3N0aWxsX2lucHV0CitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvaW5fYWN0aXZpdHlfd2Fsa2luZ19pbnB1dAorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2luX2FjdGl2aXR5X2pvZ2dpbmdfaW5wdXQKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9pbl9hY3Rpdml0eV9ydW5uaW5nX2lucHV0CitLZXJuZWxWZXJzaW9uOgkzLjE5CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCB0byByZWFkIHRoZSBjb25maWRlbmNlIGZvciBhbiBhY3Rpdml0eQorCQlleHByZXNzZWQgaW4gdW5pdHMgYXMgcGVyY2VudGFnZS4KKworV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2luX2FuZ2x2ZWxfel9xdWFkcmF0dXJlX2NvcnJlY3Rpb25fcmF3CitLZXJuZWxWZXJzaW9uOgkyLjYuMzgKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIHJlYWQgdGhlIGFtb3VudCBvZiBxdWFkcmF0dXJlIGVycm9yCisJCXByZXNlbnQgaW4gdGhlIGRldmljZSBhdCBhIGdpdmVuIHRpbWUuCisKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9pbl9hY2NlbFhfcG93ZXJfbW9kZQorS2VybmVsVmVyc2lvbjoJMy4xMQorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCVNwZWNpZmllcyB0aGUgY2hpcCBwb3dlciBtb2RlLgorCQlsb3dfbm9pc2U6IHJlZHVjZSBub2lzZSBsZXZlbCBmcm9tIEFEQywKKwkJbG93X3Bvd2VyOiBlbmFibGUgbG93IGN1cnJlbnQgY29uc3VtcHRpb24uCisJCUZvciBhIGxpc3Qgb2YgYXZhaWxhYmxlIG91dHB1dCBwb3dlciBtb2RlcyByZWFkCisJCWluX2FjY2VsX3Bvd2VyX21vZGVfYXZhaWxhYmxlLgorCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvaW5fZW5lcmd5X2lucHV0CitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvaW5fZW5lcmd5X3JhdworS2VybmVsVmVyc2lvbjoJNC4wCitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCB0byByZWFkIHRoZSBlbmVyZ3kgdmFsdWUgcmVwb3J0ZWQgYnkgdGhlCisJCWRldmljZSAoZS5nLjogaHVtYW4gYWN0aXZpdHkgc2Vuc29ycyByZXBvcnQgZW5lcmd5IGJ1cm50IGJ5IHRoZQorCQl1c2VyKS4gVW5pdHMgYWZ0ZXIgYXBwbGljYXRpb24gb2Ygc2NhbGUgYXJlIEpvdWxlcy4KKworV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2luX2Rpc3RhbmNlX2lucHV0CitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvaW5fZGlzdGFuY2VfcmF3CitLZXJuZWxWZXJzaW9uOgk0LjAKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIHJlYWQgdGhlIGRpc3RhbmNlIGNvdmVyZWQgYnkgdGhlIHVzZXIKKwkJc2luY2UgdGhlIGxhc3QgcmVib290IHdoaWxlIGFjdGl2YXRlZC4gVW5pdHMgYWZ0ZXIgYXBwbGljYXRpb24KKwkJb2Ygc2NhbGUgYXJlIG1ldGVycy4KKworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL3N0b3JlX2VlcHJvbQorS2VybmVsVmVyc2lvbjoJMy40LjAKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlXcml0aW5nICcxJyBzdG9yZXMgdGhlIGN1cnJlbnQgZGV2aWNlIGNvbmZpZ3VyYXRpb24gaW50bworCQlvbi1jaGlwIEVFUFJPTS4gQWZ0ZXIgcG93ZXItdXAgb3IgY2hpcCByZXNldCB0aGUgZGV2aWNlIHdpbGwKKwkJYXV0b21hdGljYWxseSBsb2FkIHRoZSBzYXZlZCBjb25maWd1cmF0aW9uLgorCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvaW5fcHJveGltaXR5X3JhdworV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2luX3Byb3hpbWl0eV9pbnB1dAorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2luX3Byb3hpbWl0eVlfcmF3CitLZXJuZWxWZXJzaW9uOgkzLjQKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlQcm94aW1pdHkgbWVhc3VyZW1lbnQgaW5kaWNhdGluZyB0aGF0IHNvbWUKKwkJb2JqZWN0IGlzIG5lYXIgdGhlIHNlbnNvciwgdXN1YWxseSBiZSBvYnNlcnZpbmcKKwkJcmVmbGVjdGl2aXR5IG9mIGluZnJhcmVkIG9yIHVsdHJhc291bmQgZW1pdHRlZC4KKwkJT2Z0ZW4gdGhlc2Ugc2Vuc29ycyBhcmUgdW5pdCBsZXNzIGFuZCBhcyBzdWNoIGNvbnZlcnNpb24KKwkJdG8gU0kgdW5pdHMgaXMgbm90IHBvc3NpYmxlLiBIaWdoZXIgcHJveGltaXR5IG1lYXN1cmVtZW50cworCQlpbmRpY2F0ZSBjbG9zZXIgb2JqZWN0cywgYW5kIHZpY2UgdmVyc2EuCisKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9pbl9pbGx1bWluYW5jZV9pbnB1dAorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2luX2lsbHVtaW5hbmNlX3JhdworV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2luX2lsbHVtaW5hbmNlWV9pbnB1dAorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2luX2lsbHVtaW5hbmNlWV9yYXcKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9pbl9pbGx1bWluYW5jZVlfbWVhbl9yYXcKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9pbl9pbGx1bWluYW5jZV9pcl9yYXcKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9pbl9pbGx1bWluYW5jZV9jbGVhcl9yYXcKK0tlcm5lbFZlcnNpb246CTMuNAorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUlsbHVtaW5hbmNlIG1lYXN1cmVtZW50LCB1bml0cyBhZnRlciBhcHBsaWNhdGlvbiBvZiBzY2FsZQorCQlhbmQgb2Zmc2V0IGFyZSBsdXguCisKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9pbl9pbnRlbnNpdHlZX3JhdworV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2luX2ludGVuc2l0eVlfaXJfcmF3CitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvaW5faW50ZW5zaXR5WV9ib3RoX3JhdworS2VybmVsVmVyc2lvbjoJMy40CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJVW5pdC1sZXNzIGxpZ2h0IGludGVuc2l0eS4gTW9kaWZpZXJzIGJvdGggYW5kIGlyIGluZGljYXRlCisJCXRoYXQgbWVhc3VyZW1lbnRzIGNvbnRhaW5zIHZpc2libGUgYW5kIGluZnJhcmVkIGxpZ2h0CisJCWNvbXBvbmVudHMgb3IganVzdCBpbmZyYXJlZCBsaWdodCwgcmVzcGVjdGl2ZWx5LgorCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvaW5faW50ZW5zaXR5X3JlZF9pbnRlZ3JhdGlvbl90aW1lCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvaW5faW50ZW5zaXR5X2dyZWVuX2ludGVncmF0aW9uX3RpbWUKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9pbl9pbnRlbnNpdHlfYmx1ZV9pbnRlZ3JhdGlvbl90aW1lCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvaW5faW50ZW5zaXR5X2NsZWFyX2ludGVncmF0aW9uX3RpbWUKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9pbl9pbGx1bWluYW5jZV9pbnRlZ3JhdGlvbl90aW1lCitLZXJuZWxWZXJzaW9uOgkzLjEyCitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCB0byBnZXQvc2V0IHRoZSBpbnRlZ3JhdGlvbiB0aW1lIGluCisJCXNlY29uZHMuCisKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9pbl92ZWxvY2l0eV9zcXJ0KHheMit5XjIrel4yKV9pbnRlZ3JhdGlvbl90aW1lCitLZXJuZWxWZXJzaW9uOgk0LjAKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlOdW1iZXIgb2Ygc2Vjb25kcyBpbiB3aGljaCB0byBjb21wdXRlIHNwZWVkLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fcm90X3F1YXRlcm5pb25fcmF3CitLZXJuZWxWZXJzaW9uOgkzLjE1CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJUmF3IHZhbHVlIG9mIHF1YXRlcm5pb24gY29tcG9uZW50cyB1c2luZyBhIGZvcm1hdAorCQl4IHkgeiB3LiBIZXJlIHgsIHksIGFuZCB6IGNvbXBvbmVudCByZXByZXNlbnRzIHRoZSBheGlzIGFib3V0CisJCXdoaWNoIGEgcm90YXRpb24gd2lsbCBvY2N1ciBhbmQgdyBjb21wb25lbnQgcmVwcmVzZW50cyB0aGUKKwkJYW1vdW50IG9mIHJvdGF0aW9uLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fcm90X2Zyb21fbm9ydGhfbWFnbmV0aWNfdGlsdF9jb21wX3JhdworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3JvdF9mcm9tX25vcnRoX3RydWVfdGlsdF9jb21wX3JhdworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3JvdF9mcm9tX25vcnRoX21hZ25ldGljX3JhdworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3JvdF9mcm9tX25vcnRoX3RydWVfcmF3CitLZXJuZWxWZXJzaW9uOgkzLjE1CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJUmF3IHZhbHVlIG9mIHJvdGF0aW9uIGZyb20gdHJ1ZS9tYWduZXRpYyBub3J0aCBtZWFzdXJlZCB3aXRoCisJCW9yIHdpdGhvdXQgY29tcGVuc2F0aW9uIGZyb20gdGlsdCBzZW5zb3JzLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fY3VycmVudFhfcmF3CitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fY3VycmVudFhfaV9yYXcKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9jdXJyZW50WF9xX3JhdworS2VybmVsVmVyc2lvbjoJMy4xOAorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCVJhdyBjdXJyZW50IG1lYXN1cmVtZW50IGZyb20gY2hhbm5lbCBYLiBVbml0cyBhcmUgaW4gbWlsbGlhbXBzCisJCWFmdGVyIGFwcGxpY2F0aW9uIG9mIHNjYWxlIGFuZCBvZmZzZXQuIElmIG5vIG9mZnNldCBvciBzY2FsZSBpcworCQlwcmVzZW50LCBvdXRwdXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXMgcHJvY2Vzc2VkIHdpdGggdGhlCisJCXVuaXQgaW4gbWlsbGlhbXBzLgorCisJCUNoYW5uZWxzIHdpdGggJ2knIGFuZCAncScgbW9kaWZpZXJzIGFsd2F5cyBleGlzdCBpbiBwYWlycyBhbmQgYm90aAorCQljaGFubmVscyByZWZlciB0byB0aGUgc2FtZSBzaWduYWwuIFRoZSAnaScgY2hhbm5lbCBjb250YWlucyB0aGUgaW4tcGhhc2UKKwkJY29tcG9uZW50IG9mIHRoZSBzaWduYWwgd2hpbGUgdGhlICdxJyBjaGFubmVsIGNvbnRhaW5zIHRoZSBxdWFkcmF0dXJlCisJCWNvbXBvbmVudC4KKworV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2luX2VuZXJneV9lbgorV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2luX2Rpc3RhbmNlX2VuCitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvaW5fdmVsb2NpdHlfc3FydCh4XjIreV4yK3peMilfZW4KK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9pbl9zdGVwc19lbgorS2VybmVsVmVyc2lvbjoJMy4xOQorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUFjdGl2YXRlcyBhIGRldmljZSBmZWF0dXJlIHRoYXQgcnVucyBpbiBmaXJtd2FyZS9oYXJkd2FyZS4KKwkJRS5nLiBmb3Igc3RlcHM6IHRoZSBwZWRvbWV0ZXIgc2F2ZXMgcG93ZXIgd2hpbGUgbm90IHVzZWQ7CisJCXdoZW4gYWN0aXZhdGVkLCBpdCB3aWxsIGNvdW50IHRoZSBzdGVwcyB0YWtlbiBieSB0aGUgdXNlciBpbgorCQlmaXJtd2FyZSBhbmQgZXhwb3J0IHRoZW0gdGhyb3VnaCBpbl9zdGVwc19pbnB1dC4KKworV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2luX3N0ZXBzX2lucHV0CitLZXJuZWxWZXJzaW9uOgkzLjE5CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCB0byByZWFkIHRoZSBudW1iZXIgb2Ygc3RlcHMgdGFrZW4gYnkgdGhlIHVzZXIKKwkJc2luY2UgdGhlIGxhc3QgcmVib290IHdoaWxlIGFjdGl2YXRlZC4KKworV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2luX3ZlbG9jaXR5X3NxcnQoeF4yK3leMit6XjIpX2lucHV0CitXaGF0OgkJL3N5cy8uLi4vaWlvOmRldmljZVgvaW5fdmVsb2NpdHlfc3FydCh4XjIreV4yK3peMilfcmF3CitLZXJuZWxWZXJzaW9uOgkzLjE5CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCB0byByZWFkIHRoZSBjdXJyZW50IHNwZWVkIHZhbHVlIG9mIHRoZQorCQl1c2VyICh3aGljaCBpcyB0aGUgbm9ybSBvciBtYWduaXR1ZGUgb2YgdGhlIHZlbG9jaXR5IHZlY3RvcikuCisJCVVuaXRzIGFmdGVyIGFwcGxpY2F0aW9uIG9mIHNjYWxlIGFyZSBtL3MuCisKK1doYXQ6CQkvc3lzLy4uLi9paW86ZGV2aWNlWC9pbl9zdGVwc19kZWJvdW5jZV9jb3VudAorS2VybmVsVmVyc2lvbjoJNC4wCitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJU3BlY2lmaWVzIHRoZSBudW1iZXIgb2Ygc3RlcHMgdGhhdCBtdXN0IG9jY3VyIHdpdGhpbgorCQlpbl9zdGVwc19maWx0ZXJfZGVib3VuY2VfdGltZSBmb3IgdGhlIHBlZG9tZXRlciB0byBkZWNpZGUgdGhlCisJCWNvbnN1bWVyIGlzIG1ha2luZyBzdGVwcy4KKworV2hhdDoJCS9zeXMvLi4uL2lpbzpkZXZpY2VYL2luX3N0ZXBzX2RlYm91bmNlX3RpbWUKK0tlcm5lbFZlcnNpb246CTQuMAorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCVNwZWNpZmllcyBudW1iZXIgb2Ygc2Vjb25kcyBpbiB3aGljaCB3ZSBjb21wdXRlIHRoZSBzdGVwcworCQl0aGF0IG9jY3VyIGluIG9yZGVyIHRvIGRlY2lkZSBpZiB0aGUgY29uc3VtZXIgaXMgbWFraW5nIHN0ZXBzLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvYnVmZmVyL3dhdGVybWFyaworS2VybmVsVmVyc2lvbjoJNC4yCitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJQSBzaW5nbGUgcG9zaXRpdmUgaW50ZWdlciBzcGVjaWZ5aW5nIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzY2FuCisJCWVsZW1lbnRzIHRvIHdhaXQgZm9yLgorCQlQb2xsIHdpbGwgYmxvY2sgdW50aWwgdGhlIHdhdGVybWFyayBpcyByZWFjaGVkLgorCQlCbG9ja2luZyByZWFkIHdpbGwgd2FpdCB1bnRpbCB0aGUgbWluaW11bSBiZXR3ZWVuIHRoZSByZXF1ZXN0ZWQKKwkJcmVhZCBhbW91bnQgb3IgdGhlIGxvdyB3YXRlciBtYXJrIGlzIGF2YWlsYWJsZS4KKwkJTm9uLWJsb2NraW5nIHJlYWQgd2lsbCByZXRyaWV2ZSB0aGUgYXZhaWxhYmxlIHNhbXBsZXMgZnJvbSB0aGUKKwkJYnVmZmVyIGV2ZW4gaWYgdGhlcmUgYXJlIGxlc3Mgc2FtcGxlcyB0aGVuIHdhdGVybWFyayBsZXZlbC4gVGhpcworCQlhbGxvd3MgdGhlIGFwcGxpY2F0aW9uIHRvIGJsb2NrIG9uIHBvbGwgd2l0aCBhIHRpbWVvdXQgYW5kIHJlYWQKKwkJdGhlIGF2YWlsYWJsZSBzYW1wbGVzIGFmdGVyIHRoZSB0aW1lb3V0IGV4cGlyZXMgYW5kIHRodXMgaGF2ZSBhCisJCW1heGltdW0gZGVsYXkgZ3VhcmFudGVlLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvYnVmZmVyL2h3Zmlmb19lbmFibGVkCitLZXJuZWxWZXJzaW9uOiA0LjIKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlBIHJlYWQtb25seSBib29sZWFuIHZhbHVlIHRoYXQgaW5kaWNhdGVzIGlmIHRoZSBoYXJkd2FyZSBmaWZvIGlzCisJCWN1cnJlbnRseSBlbmFibGVkIG9yIGRpc2FibGVkLiBJZiB0aGUgZGV2aWNlIGRvZXMgbm90IGhhdmUgYQorCQloYXJkd2FyZSBmaWZvIHRoaXMgZW50cnkgaXMgbm90IHByZXNlbnQuCisJCVRoZSBoYXJkd2FyZSBmaWZvIGlzIGVuYWJsZWQgd2hlbiB0aGUgYnVmZmVyIGlzIGVuYWJsZWQgaWYgdGhlCisJCWN1cnJlbnQgaGFyZHdhcmUgZmlmbyB3YXRlcm1hcmsgbGV2ZWwgaXMgc2V0IGFuZCBvdGhlciBjdXJyZW50CisJCWRldmljZSBzZXR0aW5ncyBhbGxvd3MgaXQgKGUuZy4gaWYgYSB0cmlnZ2VyIGlzIHNldCB0aGF0IHNhbXBsZXMKKwkJZGF0YSBkaWZmZXJlbnRseSB0aGF0IHRoZSBoYXJkd2FyZSBmaWZvIGRvZXMgdGhlbiBoYXJkd2FyZSBmaWZvCisJCXdpbGwgbm90IGVuYWJsZWQpLgorCQlJZiB0aGUgaGFyZHdhcmUgZmlmbyBpcyBlbmFibGVkIGFuZCB0aGUgbGV2ZWwgb2YgdGhlIGhhcmR3YXJlCisJCWZpZm8gcmVhY2hlcyB0aGUgaGFyZHdhcmUgZmlmbyB3YXRlcm1hcmsgbGV2ZWwgdGhlIGRldmljZSB3aWxsCisJCWZsdXNoIGl0cyBoYXJkd2FyZSBmaWZvIHRvIHRoZSBkZXZpY2UgYnVmZmVyLiBEb2luZyBhIG5vbgorCQlibG9ja2luZyByZWFkIG9uIHRoZSBkZXZpY2Ugd2hlbiBubyBzYW1wbGVzIGFyZSBwcmVzZW50IGluIHRoZQorCQlkZXZpY2UgYnVmZmVyIHdpbGwgYWxzbyBmb3JjZSBhIGZsdXNoLgorCQlXaGVuIHRoZSBoYXJkd2FyZSBmaWZvIGlzIGVuYWJsZWQgdGhlcmUgaXMgbm8gbmVlZCB0byB1c2UgYQorCQl0cmlnZ2VyIHRvIHVzZSBidWZmZXIgbW9kZSBzaW5jZSB0aGUgd2F0ZXJtYXJrIHNldHRpbmdzCisJCWd1YXJhbnRlZXMgdGhhdCB0aGUgaGFyZHdhcmUgZmlmbyBpcyBmbHVzaGVkIHRvIHRoZSBkZXZpY2UKKwkJYnVmZmVyLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvYnVmZmVyL2h3Zmlmb193YXRlcm1hcmsKK0tlcm5lbFZlcnNpb246IDQuMgorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCVJlYWQtb25seSBlbnRyeSB0aGF0IGNvbnRhaW5zIGEgc2luZ2xlIGludGVnZXIgc3BlY2lmeWluZyB0aGUKKwkJY3VycmVudCB3YXRlcm1hcmsgbGV2ZWwgZm9yIHRoZSBoYXJkd2FyZSBmaWZvLiBJZiB0aGUgZGV2aWNlCisJCWRvZXMgbm90IGhhdmUgYSBoYXJkd2FyZSBmaWZvIHRoaXMgZW50cnkgaXMgbm90IHByZXNlbnQuCisJCVRoZSB3YXRlcm1hcmsgbGV2ZWwgZm9yIHRoZSBoYXJkd2FyZSBmaWZvIGlzIHNldCBieSB0aGUgZHJpdmVyCisJCWJhc2VkIG9uIHRoZSB2YWx1ZSBzZXQgYnkgdGhlIHVzZXIgaW4gYnVmZmVyL3dhdGVybWFyayBidXQKKwkJdGFraW5nIGludG8gYWNjb3VudCBoYXJkd2FyZSBsaW1pdGF0aW9ucyAoZS5nLiBtb3N0IGhhcmR3YXJlCisJCWJ1ZmZlcnMgYXJlIGxpbWl0ZWQgdG8gMzItNjQgc2FtcGxlcywgc29tZSBoYXJkd2FyZSBidWZmZXJzCisJCXdhdGVybWFya3MgYXJlIGZpeGVkIG9yIGhhdmUgbWluaW11bSBsZXZlbHMpLiAgQSB2YWx1ZSBvZiAwCisJCW1lYW5zIHRoYXQgdGhlIGhhcmR3YXJlIHdhdGVybWFyayBpcyB1bnNldC4KKworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2J1ZmZlci9od2ZpZm9fd2F0ZXJtYXJrX21pbgorS2VybmVsVmVyc2lvbjogNC4yCitDb250YWN0OiAgICAgICBsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJQSBzaW5nbGUgcG9zaXRpdmUgaW50ZWdlciBzcGVjaWZ5aW5nIHRoZSBtaW5pbXVtIHdhdGVybWFyayBsZXZlbAorCQlmb3IgdGhlIGhhcmR3YXJlIGZpZm8gb2YgdGhpcyBkZXZpY2UuIElmIHRoZSBkZXZpY2UgZG9lcyBub3QKKwkJaGF2ZSBhIGhhcmR3YXJlIGZpZm8gdGhpcyBlbnRyeSBpcyBub3QgcHJlc2VudC4KKwkJSWYgdGhlIHVzZXIgc2V0cyBidWZmZXIvd2F0ZXJtYXJrIHRvIGEgdmFsdWUgbGVzcyB0aGFuIHRoaXMgb25lLAorCQl0aGVuIHRoZSBoYXJkd2FyZSB3YXRlcm1hcmsgd2lsbCByZW1haW4gdW5zZXQuCisKK1doYXQ6CSAgICAgICAvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9idWZmZXIvaHdmaWZvX3dhdGVybWFya19tYXgKK0tlcm5lbFZlcnNpb246IDQuMgorQ29udGFjdDogICAgICAgbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUEgc2luZ2xlIHBvc2l0aXZlIGludGVnZXIgc3BlY2lmeWluZyB0aGUgbWF4aW11bSB3YXRlcm1hcmsgbGV2ZWwKKwkJZm9yIHRoZSBoYXJkd2FyZSBmaWZvIG9mIHRoaXMgZGV2aWNlLiBJZiB0aGUgZGV2aWNlIGRvZXMgbm90CisJCWhhdmUgYSBoYXJkd2FyZSBmaWZvIHRoaXMgZW50cnkgaXMgbm90IHByZXNlbnQuCisJCUlmIHRoZSB1c2VyIHNldHMgYnVmZmVyL3dhdGVybWFyayB0byBhIHZhbHVlIGdyZWF0ZXIgdGhhbiB0aGlzCisJCW9uZSwgdGhlbiB0aGUgaGFyZHdhcmUgd2F0ZXJtYXJrIHdpbGwgYmUgY2FwcGVkIGF0IHRoaXMgdmFsdWUuCisKK1doYXQ6CSAgICAgICAvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9idWZmZXIvaHdmaWZvX3dhdGVybWFya19hdmFpbGFibGUKK0tlcm5lbFZlcnNpb246IDQuMgorQ29udGFjdDogICAgICAgbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUEgbGlzdCBvZiBwb3NpdGl2ZSBpbnRlZ2VycyBzcGVjaWZ5aW5nIHRoZSBhdmFpbGFibGUgd2F0ZXJtYXJrCisJCWxldmVscyBmb3IgdGhlIGhhcmR3YXJlIGZpZm8uIFRoaXMgZW50cnkgaXMgb3B0aW9uYWwgYW5kIGlmIGl0CisJCWlzIG5vdCBwcmVzZW50IGl0IG1lYW5zIHRoYXQgYWxsIHRoZSB2YWx1ZXMgYmV0d2VlbgorCQlod2ZpZm9fd2F0ZXJtYXJrX21pbiBhbmQgaHdmaWZvX3dhdGVybWFya19tYXggYXJlIHN1cHBvcnRlZC4KKwkJSWYgdGhlIHVzZXIgc2V0cyBidWZmZXIvd2F0ZXJtYXJrIHRvIGEgdmFsdWUgZ3JlYXRlciB0aGFuCisJCWh3Zmlmb193YXRlcm1ha19taW4gYnV0IG5vdCBlcXVhbCB0byBhbnkgb2YgdGhlIHZhbHVlcyBpbiB0aGlzCisJCWxpc3QsIHRoZSBkcml2ZXIgd2lsbCBjaG9zZSBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBmb3IgdGhlCisJCWhhcmR3YXJlIGZpZm8gd2F0ZXJtYXJrIGxldmVsLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fdGVtcF9jYWxpYmVtaXNzaXZpdHkKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl90ZW1wWF9jYWxpYmVtaXNzaXZpdHkKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl90ZW1wX29iamVjdF9jYWxpYmVtaXNzaXZpdHkKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl90ZW1wWF9vYmplY3RfY2FsaWJlbWlzc2l2aXR5CitLZXJuZWxWZXJzaW9uOgk0LjEKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlUaGUgZW1pc3Npdml0eSByYXRpbyBvZiB0aGUgc3VyZmFjZSBpbiB0aGUgZmllbGQgb2YgdmlldyBvZiB0aGUKKwkJY29udGFjdGxlc3MgdGVtcGVyYXR1cmUgc2Vuc29yLiAgRW1pc3Npdml0eSB2YXJpZXMgZnJvbSAwIHRvIDEsCisJCXdpdGggMSBiZWluZyB0aGUgZW1pc3Npdml0eSBvZiBhIGJsYWNrIGJvZHkuCisKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9tYWduX3hfb3ZlcnNhbXBsaW5nX3JhdGlvCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fbWFnbl95X292ZXJzYW1wbGluZ19yYXRpbworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX21hZ25fel9vdmVyc2FtcGxpbmdfcmF0aW8KK0tlcm5lbFZlcnNpb246CTQuMgorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUhhcmR3YXJlIGFwcGxpZWQgbnVtYmVyIG9mIG1lYXN1cmVtZW50cyBmb3IgYWNxdWlyaW5nIG9uZQorCQlkYXRhIHBvaW50LiBUaGUgSFcgd2lsbCBkbyA8dHlwZT5bX25hbWVdX292ZXJzYW1wbGluZ19yYXRpbworCQltZWFzdXJlbWVudHMgYW5kIHJldHVybiB0aGUgYXZlcmFnZSB2YWx1ZSBhcyBvdXRwdXQgZGF0YS4gRWFjaAorCQl2YWx1ZSByZXN1bHRlZCBmcm9tIDx0eXBlPltfbmFtZV1fb3ZlcnNhbXBsaW5nX3JhdGlvIG1lYXN1cmVtZW50cworCQlpcyBjb25zaWRlcmVkIGFzIG9uZSBzYW1wbGUgZm9yIDx0eXBlPltfbmFtZV1fc2FtcGxpbmdfZnJlcXVlbmN5LgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fY29uY2VudHJhdGlvbl9yYXcKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9jb25jZW50cmF0aW9uWF9yYXcKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9jb25jZW50cmF0aW9uX2NvMl9yYXcKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9jb25jZW50cmF0aW9uWF9jbzJfcmF3CitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fY29uY2VudHJhdGlvbl92b2NfcmF3CitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fY29uY2VudHJhdGlvblhfdm9jX3JhdworS2VybmVsVmVyc2lvbjoJNC4zCitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJUmF3ICh1bnNjYWxlZCBubyBvZmZzZXQgZXRjLikgcGVyY2VudGFnZSByZWFkaW5nIG9mIGEgc3Vic3RhbmNlLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fcmVzaXN0YW5jZV9yYXcKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9yZXNpc3RhbmNlWF9yYXcKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9vdXRfcmVzaXN0YW5jZV9yYXcKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9vdXRfcmVzaXN0YW5jZVhfcmF3CitLZXJuZWxWZXJzaW9uOgk0LjMKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlSYXcgKHVuc2NhbGVkIG5vIG9mZnNldCBldGMuKSByZXNpc3RhbmNlIHJlYWRpbmcgdGhhdCBjYW4gYmUgcHJvY2Vzc2VkCisJCWludG8gYW4gb2htIHZhbHVlLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaGVhdGVyX2VuYWJsZQorS2VybmVsVmVyc2lvbjoJNC4xLjAKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQknMScgKGVuYWJsZSkgb3IgJzAnIChkaXNhYmxlKSBzcGVjaWZ5aW5nIHRoZSBlbmFibGUKKwkJb2YgaGVhdGVyIGZ1bmN0aW9uLiBTYW1lIHJlYWRpbmcgdmFsdWVzIGFwcGx5CisJCVRoaXMgQUJJIGlzIGVzcGVjaWFsbHkgYXBwbGljYWJsZSBmb3IgaHVtaWRpdHkgc2Vuc29ycworCQl0byBoZWF0dXAgdGhlIGRldmljZSBhbmQgZ2V0IHJpZCBvZiBhbnkgY29uZGVuc2F0aW9uCisJCWluIHNvbWUgaHVtaWRpdHkgZW52aXJvbm1lbnQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWlpby1hY2NlbC1ibWMxNTAgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1paW8tYWNjZWwtYm1jMTUwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5ODQ3YTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1paW8tYWNjZWwtYm1jMTUwCkBAIC0wLDAgKzEsNyBAQAorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL3RyaWdnZXJYL25hbWUgPSAiYm1jMTUwX2FjY2VsLWFueS1tb3Rpb24tZGV2WCIKK0tlcm5lbFZlcnNpb246CTMuMTcKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlUaGUgQk1DMTUwIGFjY2VsZXJvbWV0ZXIga2VybmVsIG1vZHVsZSBwcm92aWRlcyBhbiBhZGRpdGlvbmFsIHRyaWdnZXIsCisJCXdoaWNoIHNldHMgZHJpdmVyIGluIGEgbW9kZSwgd2hlcmUgZGF0YSBpcyBwdXNoZWQgdG8gdGhlIGJ1ZmZlcgorCQlvbmx5IHdoZW4gdGhlcmUgaXMgYW55IG1vdGlvbi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWlpby1hZGMtaGk4NDM1IGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaWlvLWFkYy1oaTg0MzUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjMwYjRjNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWlpby1hZGMtaGk4NDM1CkBAIC0wLDAgKzEsNDMgQEAKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl92b2x0YWdlWV9zZW5zaW5nX21vZGUKK0RhdGU6CQlBdWd1c3QgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4yLjAKK0NvbnRhY3Q6CXNvdXJjZUBjb2dlbnRlbWJlZGRlZC5jb20KK0Rlc2NyaXB0aW9uOgorCQlQcm9ncmFtIHNlbnNvciB0eXBlIGZvciB0aHJlc2hvbGQgZGV0ZWN0b3IgaW5wdXRzLgorCQlDb3VsZCBiZSBlaXRoZXIgIkdORC1PcGVuIiBvciAiU3VwcGx5LU9wZW4iIG1vZGUuIFkgaXMgYQorCQl0aHJlc2hvbGQgZGV0ZWN0b3IgaW5wdXQgY2hhbm5lbC4gQ2hhbm5lbHMgMC4uNywgOC4uMTUsIDE2Li4yMworCQlhbmQgMjQuLjMxIGhhcyBjb21tb24gc2Vuc29yIHR5cGVzLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvZXZlbnRzL2luX3ZvbHRhZ2VZX3RocmVzaF9mYWxsaW5nX3ZhbHVlCitEYXRlOgkJQXVndXN0IDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMi4wCitDb250YWN0Oglzb3VyY2VAY29nZW50ZW1iZWRkZWQuY29tCitEZXNjcmlwdGlvbjoKKwkJQ2hhbm5lbCBZIGxvdyB2b2x0YWdlIHRocmVzaG9sZC4gSWYgc2Vuc29yIGlucHV0IHZvbHRhZ2UgZ29lcyBsb3dlciB0aGVuCisJCXRoaXMgdmFsdWUgdGhlbiB0aGUgdGhyZXNob2xkIGZhbGxpbmcgZXZlbnQgaXMgcHVzaGVkLgorCQlEZXBlbmRpbmcgb24gaW5fdm9sdGFnZVlfc2Vuc2luZ19tb2RlIHRoZSBsb3cgdm9sdGFnZSB0aHJlc2hvbGQKKwkJaXMgc2VwYXJhdGVseSBzZXQgZm9yICJHTkQtT3BlbiIgYW5kICJTdXBwbHktT3BlbiIgbW9kZXMuCisJCUNoYW5uZWxzIDAuLjMxIGhhdmUgY29tbW9uIGxvdyB0aHJlc2hvbGQgdmFsdWVzLCBidXQgY291bGQgaGF2ZSBkaWZmZXJlbnQKKwkJc2Vuc2luZ19tb2Rlcy4KKwkJVGhlIGxvdyB2b2x0YWdlIHRocmVzaG9sZCByYW5nZSBpcyBiZXR3ZWVuIDIuLjIxVi4KKwkJSHlzdGVyZXNpcyBiZXR3ZWVuIGxvdyBhbmQgaGlnaCB0aHJlc2hvbGRzIGNhbiBub3QgYmUgbG93ZXIgdGhlbiAyIGFuZAorCQljYW4gbm90IGJlIG9kZC4KKwkJSWYgZmFsbGluZyB0aHJlc2hvbGQgcmVzdWx0cyBoeXN0ZXJlc2lzIHRvIG9kZCB2YWx1ZSB0aGVuIHJpc2luZworCQl0aHJlc2hvbGQgaXMgYXV0b21hdGljYWxseSBzdWJ0cmFjdGVkIGJ5IG9uZS4KKworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2V2ZW50cy9pbl92b2x0YWdlWV90aHJlc2hfcmlzaW5nX3ZhbHVlCitEYXRlOgkJQXVndXN0IDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMi4wCitDb250YWN0Oglzb3VyY2VAY29nZW50ZW1iZWRkZWQuY29tCitEZXNjcmlwdGlvbjoKKwkJQ2hhbm5lbCBZIGhpZ2ggdm9sdGFnZSB0aHJlc2hvbGQuIElmIHNlbnNvciBpbnB1dCB2b2x0YWdlIGdvZXMgaGlnaGVyIHRoZW4KKwkJdGhpcyB2YWx1ZSB0aGVuIHRoZSB0aHJlc2hvbGQgcmlzaW5nIGV2ZW50IGlzIHB1c2hlZC4KKwkJRGVwZW5kaW5nIG9uIGluX3ZvbHRhZ2VZX3NlbnNpbmdfbW9kZSB0aGUgaGlnaCB2b2x0YWdlIHRocmVzaG9sZAorCQlpcyBzZXBhcmF0ZWx5IHNldCBmb3IgIkdORC1PcGVuIiBhbmQgIlN1cHBseS1PcGVuIiBtb2Rlcy4KKwkJQ2hhbm5lbHMgMC4uMzEgaGF2ZSBjb21tb24gaGlnaCB0aHJlc2hvbGQgdmFsdWVzLCBidXQgY291bGQgaGF2ZSBkaWZmZXJlbnQKKwkJc2Vuc2luZ19tb2Rlcy4KKwkJVGhlIGhpZ2ggdm9sdGFnZSB0aHJlc2hvbGQgcmFuZ2UgaXMgYmV0d2VlbiAzLi4yMlYuCisJCUh5c3RlcmVzaXMgYmV0d2VlbiBsb3cgYW5kIGhpZ2ggdGhyZXNob2xkcyBjYW4gbm90IGJlIGxvd2VyIHRoZW4gMiBhbmQKKwkJY2FuIG5vdCBiZSBvZGQuCisJCUlmIHJpc2luZyB0aHJlc2hvbGQgcmVzdWx0cyBoeXN0ZXJlc2lzIHRvIG9kZCB2YWx1ZSB0aGVuIGZhbGxpbmcKKwkJdGhyZXNob2xkIGlzIGF1dG9tYXRpY2FsbHkgYXBwZW5kZWQgYnkgb25lLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaWlvLWNoZW1pY2FsLXZ6ODl4IGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaWlvLWNoZW1pY2FsLXZ6ODl4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwYzFlYTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1paW8tY2hlbWljYWwtdno4OXgKQEAgLTAsMCArMSw3IEBACitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fY29uY2VudHJhdGlvbl9WT0Nfc2hvcnRfcmF3CitEYXRlOgkJU2VwdGVtYmVyIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMworQ29udGFjdDoJTWF0dCBSYW5vc3RheSA8bXJhbm9zdGF5QGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlHZXQgdGhlIHJhdyBjYWxpYnJhdGlvbiBWT0MgdmFsdWUgZnJvbSB0aGUgc2Vuc29yLgorCQlUaGlzIHZhbHVlIGhhcyBsaXR0bGUgYXBwbGljYXRpb24gb3V0c2lkZSBvZiBjYWxpYnJhdGlvbi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWlpby1mcmVxdWVuY3ktYWQ5NTIzIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaWlvLWZyZXF1ZW5jeS1hZDk1MjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTkxYWVhYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWlpby1mcmVxdWVuY3ktYWQ5NTIzCkBAIC0wLDAgKzEsMjkgQEAKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9wbGwyX2ZlZWRiYWNrX2Nsa19wcmVzZW50CitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvcGxsMl9yZWZlcmVuY2VfY2xrX3ByZXNlbnQKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9wbGwxX3JlZmVyZW5jZV9jbGtfYV9wcmVzZW50CitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvcGxsMV9yZWZlcmVuY2VfY2xrX2JfcHJlc2VudAorV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL3BsbDFfcmVmZXJlbmNlX2Nsa190ZXN0X3ByZXNlbnQKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC92Y3hvX2Nsa19wcmVzZW50CitLZXJuZWxWZXJzaW9uOgkzLjQuMAorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCVJlYWRpbmcgcmV0dXJucyBlaXRoZXIgJzEnIG9yICcwJy4KKwkJJzEnIG1lYW5zIHRoYXQgdGhlIGNsb2NrIGluIHF1ZXN0aW9uIGlzIHByZXNlbnQuCisJCScwJyBtZWFucyB0aGF0IHRoZSBjbG9jayBpcyBtaXNzaW5nLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvcGxsWV9sb2NrZWQKK0tlcm5lbFZlcnNpb246CTMuNC4wCitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJUmVhZGluZyByZXR1cm5zIGVpdGhlciAnMScgb3IgJzAnLiAnMScgbWVhbnMgdGhhdCB0aGUKKwkJcGxsWSBpcyBsb2NrZWQuCisKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9zeW5jX2RpdmlkZXJzCitLZXJuZWxWZXJzaW9uOgkzLjQuMAorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCVdyaXRpbmcgJzEnIHRyaWdnZXJzIHRoZSBjbG9jayBkaXN0cmlidXRpb24gc3luY2hyb25pemF0aW9uCisJCWZ1bmN0aW9uYWxpdHkuIEFsbCBkaXZpZGVycyBhcmUgcmVzZXQgYW5kIHRoZSBjaGFubmVscyBzdGFydAorCQl3aXRoIHRoZWlyIHByZWRlZmluZWQgcGhhc2Ugb2Zmc2V0cyAob3V0X2FsdHZvbHRhZ2VZX3BoYXNlKS4KKwkJV3JpdGluZyB0aGlzIGZpbGUgaGFzIHRoZSBlZmZlY3QgYXMgZHJpdmluZyB0aGUgZXh0ZXJuYWwKKwkJL1NZTkMgcGluIGxvdy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWlpby1mcmVxdWVuY3ktYWRmNDM1MCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWlpby1mcmVxdWVuY3ktYWRmNDM1MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjU0NDU3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaWlvLWZyZXF1ZW5jeS1hZGY0MzUwCkBAIC0wLDAgKzEsMjEgQEAKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9vdXRfYWx0dm9sdGFnZVlfZnJlcXVlbmN5X3Jlc29sdXRpb24KK0tlcm5lbFZlcnNpb246CTMuNC4wCitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJU3RvcmVzIGNoYW5uZWwgWSBmcmVxdWVuY3kgcmVzb2x1dGlvbi9jaGFubmVsIHNwYWNpbmcgaW4gSHouCisJCVRoZSB2YWx1ZSBnaXZlbiBkaXJlY3RseSBpbmZsdWVuY2VzIHRoZSBNT0RVTFVTIHVzZWQgYnkKKwkJdGhlIGZyYWN0aW9uYWwtTiBQTEwuIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgYWxnb3JpdGhtCisJCXRoYXQgaXMgdXNlZCB0byBjb21wdXRlIHRoZSB2YXJpb3VzIGRpdmlkZXJzLCBpcyBhYmxlIHRvCisJCWdlbmVyYXRlIHByb3BlciB2YWx1ZXMgZm9yIG11bHRpcGxlcyBvZiBjaGFubmVsIHNwYWNpbmcuCisKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9vdXRfYWx0dm9sdGFnZVlfcmVmaW5fZnJlcXVlbmN5CitLZXJuZWxWZXJzaW9uOgkzLjQuMAorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCVNldHMgY2hhbm5lbCBZIFJFRmluIGZyZXF1ZW5jeSBpbiBIei4gSW4gc29tZSBjbG9jayBjaGFpbmVkCisJCWFwcGxpY2F0aW9ucywgdGhlIHJlZmVyZW5jZSBmcmVxdWVuY3kgdXNlZCBieSB0aGUgUExMIG1heQorCQljaGFuZ2UgZHVyaW5nIHJ1bnRpbWUuIFRoaXMgYXR0cmlidXRlIGFsbG93cyB0aGUgdXNlciB0bworCQlhZGp1c3QgdGhlIHJlZmVyZW5jZSBmcmVxdWVuY3kgYWNjb3JkaW5nbHkuCisJCVRoZSB2YWx1ZSB3cml0dGVuIGhhcyBubyBlZmZlY3QgdW50aWwgb3V0X2FsdHZvbHRhZ2VZX2ZyZXF1ZW5jeQorCQlpcyB1cGRhdGVkLiBDb25zaWRlciB0byB1c2Ugb3V0X2FsdHZvbHRhZ2VZX3Bvd2VyZG93biB0byBwb3dlcgorCQlkb3duIHRoZSBQTEwgYW5kIGl0cyBSRk91dCBidWZmZXJzIGR1cmluZyBSRUZpbiBjaGFuZ2VzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaWlvLWd5cm8tYm1nMTYwIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaWlvLWd5cm8tYm1nMTYwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5ODIwOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1paW8tZ3lyby1ibWcxNjAKQEAgLTAsMCArMSw3IEBACitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvdHJpZ2dlclgvbmFtZSA9ICJibWcxNjAtYW55LW1vdGlvbi1kZXZYIgorS2VybmVsVmVyc2lvbjoJMy4xNworQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCVRoZSBCTUcxNjAgZ3lybyBrZXJuZWwgbW9kdWxlIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgdHJpZ2dlciwKKwkJd2hpY2ggc2V0cyBkcml2ZXIgaW4gYSBtb2RlLCB3aGVyZSBkYXRhIGlzIHB1c2hlZCB0byB0aGUgYnVmZmVyCisJCW9ubHkgd2hlbiB0aGVyZSBpcyBhbnkgbW90aW9uLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaWlvLWh1bWlkaXR5LWhkYzEwMHggYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1paW8taHVtaWRpdHktaGRjMTAweApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzJiYjYyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaWlvLWh1bWlkaXR5LWhkYzEwMHgKQEAgLTAsMCArMSw5IEBACitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvb3V0X2N1cnJlbnRfaGVhdGVyX3JhdworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL291dF9jdXJyZW50X2hlYXRlcl9yYXdfYXZhaWxhYmxlCitLZXJuZWxWZXJzaW9uOgk0LjMKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlDb250cm9scyB0aGUgaGVhdGVyIGRldmljZSB3aXRoaW4gdGhlIGh1bWlkaXR5IHNlbnNvciB0byBnZXQKKwkJcmlkIG9mIGV4Y2VzcyBjb25kZW5zYXRpb24uCisKKwkJVmFsaWQgY29udHJvbCB2YWx1ZXMgYXJlIDAgPSBPRkYsIGFuZCAxID0gT04uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1paW8tbGlnaHQtbG0zNTMzLWFscyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWlpby1saWdodC1sbTM1MzMtYWxzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyYzVlYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1paW8tbGlnaHQtbG0zNTMzLWFscwpAQCAtMCwwICsxLDYxIEBACitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2luX2lsbHVtaW5hbmNlMF90aHJlc2hfZWl0aGVyX2VuCitEYXRlOgkJQXByaWwgMjAxMgorS2VybmVsVmVyc2lvbjoJMy41CitDb250YWN0OglKb2hhbiBIb3ZvbGQgPGpob3ZvbGRAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCUV2ZW50IGdlbmVyYXRlZCB3aGVuIGNoYW5uZWwgcGFzc2VzIG9uZSBvZiB0aGUgZm91ciB0aHJlc2hvbGRzCisJCWluIGVhY2ggZGlyZWN0aW9uIChyaXNpbmd8ZmFsbGluZykgYW5kIGEgem9uZSBjaGFuZ2Ugb2NjdXJzLgorCQlUaGUgY29ycmVzcG9uZGluZyBsaWdodCB6b25lIGNhbiBiZSByZWFkIGZyb20KKwkJaW5faWxsdW1pbmFuY2UwX3pvbmUuCisKK1doYXQ6CQkvc3lzLy4uLi9ldmVudHMvaW5faWxsdW1pbmFuY2UwX3RocmVzaFlfaHlzdGVyZXNpcworRGF0ZToJCU1heSAyMDEyCitLZXJuZWxWZXJzaW9uOgkzLjUKK0NvbnRhY3Q6CUpvaGFuIEhvdm9sZCA8amhvdm9sZEBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJR2V0IHRoZSBoeXN0ZXJlc2lzIGZvciB0aHJlc2hvbGRzIFksIHRoYXQgaXMsCisJCXRocmVzaFlfaHlzdGVyZXNpcyA9IHRocmVzaFlfcmFpc2luZyAtIHRocmVzaFlfZmFsbGluZworCitXaGF0OgkJL3N5cy8uLi4vZXZlbnRzL2lsbHVtaW5hbmNlX3RocmVzaFlfZmFsbGluZ192YWx1ZQorV2hhdDoJCS9zeXMvLi4uL2V2ZW50cy9pbGx1bWluYW5jZV90aHJlc2hZX3JhaXNpbmdfdmFsdWUKK0RhdGU6CQlBcHJpbCAyMDEyCitLZXJuZWxWZXJzaW9uOgkzLjUKK0NvbnRhY3Q6CUpvaGFuIEhvdm9sZCA8amhvdm9sZEBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJU3BlY2lmaWVzIHRoZSB2YWx1ZSBvZiB0aHJlc2hvbGQgdGhhdCB0aGUgZGV2aWNlIGlzIGNvbXBhcmluZworCQlhZ2FpbnN0IGZvciB0aGUgZXZlbnRzIGVuYWJsZWQgYnkKKwkJaW5faWxsdW1pbmFuY2UwX3RocmVzaF9laXRoZXJfZW4gKDAuLjI1NSksIHdoZXJlIFkgaW4gMC4uMy4KKworCQlOb3RlIHRoYXQgdGhyZXNoWV9mYWxsaW5nIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvCisJCXRocmVzaFlfcmFpc2luZy4KKworCQlUaGVzZSB0aHJlc2hvbGRzIGNvcnJlc3BvbmQgdG8gdGhlIGVpZ2h0IHpvbmUtYm91bmRhcnkKKwkJcmVnaXN0ZXJzIChib3VuZGFyeVlfe2xvdyxoaWdofSkgYW5kIGRlZmluZSB0aGUgZml2ZSBsaWdodAorCQl6b25lcy4KKworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX2lsbHVtaW5hbmNlMF96b25lCitEYXRlOgkJQXByaWwgMjAxMgorS2VybmVsVmVyc2lvbjoJMy41CitDb250YWN0OglKb2hhbiBIb3ZvbGQgPGpob3ZvbGRAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCUdldCB0aGUgY3VycmVudCBsaWdodCB6b25lICgwLi40KSBhcyBkZWZpbmVkIGJ5IHRoZQorCQlpbl9pbGx1bWluYW5jZTBfdGhyZXNoWV97ZmFsbGluZyxyaXNpbmd9IHRocmVzaG9sZHMuCisKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9vdXRfY3VycmVudFlfcmF3CitEYXRlOgkJTWF5IDIwMTIKK0tlcm5lbFZlcnNpb246CTMuNQorQ29udGFjdDoJSm9oYW4gSG92b2xkIDxqaG92b2xkQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlHZXQgb3V0cHV0IGN1cnJlbnQgZm9yIGNoYW5uZWwgWSAoMC4uMjU1KSwgdGhhdCBpcywKKwkJb3V0X2N1cnJlbnRZX2N1cnJlbnRaX3Jhdywgd2hlcmUgWiBpcyB0aGUgY3VycmVudCB6b25lLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvb3V0X2N1cnJlbnRZX2N1cnJlbnRaX3JhdworRGF0ZToJCU1heSAyMDEyCitLZXJuZWxWZXJzaW9uOgkzLjUKK0NvbnRhY3Q6CUpvaGFuIEhvdm9sZCA8amhvdm9sZEBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2V0IHRoZSBvdXRwdXQgY3VycmVudCBmb3IgY2hhbm5lbCBvdXRfY3VycmVudFkgd2hlbiBpbiB6b25lCisJCVogKDAuLjI1NSksIHdoZXJlIFkgaW4gMC4uMiBhbmQgWiBpbiAwLi40LgorCisJCVRoZXNlIHZhbHVlcyBjb3JyZXNwb25kIHRvIHRoZSBBTFMtbWFwcGVyIHRhcmdldCByZWdpc3RlcnMgZm9yCisJCUFMUy1tYXBwZXIgWSArIDEuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1paW8tbWVhcy1zcGVjIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaWlvLW1lYXMtc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTYyNjVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaWlvLW1lYXMtc3BlYwpAQCAtMCwwICsxLDggQEAKK1doYXQ6ICAgICAgICAgICAvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9iYXR0ZXJ5X2xvdworS2VybmVsVmVyc2lvbjogIDQuMS4wCitDb250YWN0OiAgICAgICAgbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgUmVhZGluZyByZXR1cm5zIGVpdGhlciAnMScgb3IgJzAnLiAnMScgbWVhbnMgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICBiYXR0ZXJ5IGxldmVsIHN1cHBsaWVkIHRvIHNlbnNvciBpcyBiZWxvdyAyLjI1Vi4KKyAgICAgICAgICAgICAgICBUaGlzIEFCSSBpcyBhdmFpbGFibGUgZm9yIHRzeXMwMmQsIGh0dTIxLCBtczg2MDcKKwkJVGhpcyBBQkkgaXMgYXZhaWxhYmxlIGZvciBodHUyMSwgbXM4NjA3CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1paW8tbXB1NjA1MCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWlpby1tcHU2MDUwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiNTM3MzcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1paW8tbXB1NjA1MApAQCAtMCwwICsxLDEzIEBACitXaGF0OiAgICAgICAgICAgL3N5cy9idXMvaWlvL2RldmljZXMvaWlvOmRldmljZVgvaW5fZ3lyb19tYXRyaXgKK1doYXQ6ICAgICAgICAgICAvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9hY2NlbF9tYXRyaXgKK1doYXQ6ICAgICAgICAgICAvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl9tYWduX21hdHJpeAorS2VybmVsVmVyc2lvbjogIDMuNC4wCitDb250YWN0OiAgICAgICAgbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCVRoaXMgaXMgbW91bnRpbmcgbWF0cml4IGZvciBtb3Rpb24gc2Vuc29ycy4gTW91bnRpbmcgbWF0cml4CisJCWlzIGEgM3gzIHVuaXRhcnkgbWF0cml4LiBBIHR5cGljYWwgbW91bnRpbmcgbWF0cml4IHdvdWxkIGxvb2sgbGlrZQorCQlbMCwgMSwgMDsgMSwgMCwgMDsgMCwgMCwgLTFdLiBVc2luZyB0aGlzIGluZm9ybWF0aW9uLCBpdCB3b3VsZCBiZQorCQllYXN5IHRvIHRlbGwgdGhlIHJlbGF0aXZlIHBvc2l0aW9ucyBhbW9uZyBzZW5zb3JzIGFzIHdlbGwgYXMgdGhlaXIKKwkJcG9zaXRpb25zIHJlbGF0aXZlIHRvIHRoZSBib2FyZCB0aGF0IGhvbGRzIHRoZXNlIHNlbnNvcnMuIElkZW50aXR5IG1hdHJpeAorCQlbMSwgMCwgMDsgMCwgMSwgMDsgMCwgMCwgMV0gbWVhbnMgc2Vuc29yIGNoaXAgYW5kIGRldmljZSBhcmUgcGVyZmVjdGx5CisJCWFsaWduZWQgd2l0aCBlYWNoIG90aGVyLiBBbGwgYXhlcyBhcmUgZXhhY3RseSB0aGUgc2FtZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWlpby1wcm94aW1pdHktYXMzOTM1IGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaWlvLXByb3hpbWl0eS1hczM5MzUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNlOTZmNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWlpby1wcm94aW1pdHktYXMzOTM1CkBAIC0wLDAgKzEsMTYgQEAKK1doYXQJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3Byb3hpbWl0eV9pbnB1dAorRGF0ZToJCU1hcmNoIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTUKK0NvbnRhY3Q6CU1hdHQgUmFub3N0YXkgPG1yYW5vc3RheUBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJR2V0IHRoZSBjdXJyZW50IGRpc3RhbmNlIGluIG1ldGVycyBvZiBzdG9ybSAoMWttIHN0ZXBzKQorCQkxMDAwLTQwMDAwID0gZGlzdGFuY2UgaW4gbWV0ZXJzCisKK1doYXQJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL3NlbnNvcl9zZW5zaXRpdml0eQorRGF0ZToJCU1hcmNoIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTUKK0NvbnRhY3Q6CU1hdHQgUmFub3N0YXkgPG1yYW5vc3RheUBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2hvdyBvciBzZXQgdGhlIGdhaW4gYm9vc3Qgb2YgdGhlIGFtcCwgZnJvbSAwLTMxIHJhbmdlLgorCQkxOCA9IGluZG9vcnMgKGRlZmF1bHQpCisJCTE0ID0gb3V0ZG9vcnMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWlpby10cmlnZ2VyLXN5c2ZzIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaWlvLXRyaWdnZXItc3lzZnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRhYzYyMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWlpby10cmlnZ2VyLXN5c2ZzCkBAIC0wLDAgKzEsNDIgQEAKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy90cmlnZ2VyWC90cmlnZ2VyX25vdworS2VybmVsVmVyc2lvbjoJMi42LjM4CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJVGhpcyBmaWxlIGlzIHByb3ZpZGVkIGJ5IHRoZSBpaW8tdHJpZy1zeXNmcyBzdGFuZC1hbG9uZSB0cmlnZ2VyCisJCWRyaXZlci4gV3JpdGluZyB0aGlzIGZpbGUgd2l0aCBhbnkgdmFsdWUgdHJpZ2dlcnMgYW4gZXZlbnQKKwkJZHJpdmVuIGRyaXZlciwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdHJpZ2dlciwgdG8gY2FwdHVyZSBkYXRhCisJCWludG8gYW4gaW4ga2VybmVsIGJ1ZmZlci4gVGhpcyBhcHByb2FjaCBjYW4gYmUgdmFsdWFibGUgZHVyaW5nCisJCWF1dG9tYXRlZCB0ZXN0aW5nIG9yIGluIHNpdHVhdGlvbnMsIHdoZXJlIG90aGVyIHRyaWdnZXIgbWV0aG9kcworCQlhcmUgbm90IGFwcGxpY2FibGUuIEZvciBleGFtcGxlIG5vIFJUQyBvciBzcGFyZSBHUElPcy4KKwkJWCBpcyB0aGUgSUlPIGluZGV4IG9mIHRoZSB0cmlnZ2VyLgorCitXaGF0OgkJL3N5cy9idXMvaWlvL2RldmljZXMvdHJpZ2dlclgvbmFtZQorS2VybmVsVmVyc2lvbjoJMi42LjM5CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJVGhlIG5hbWUgYXR0cmlidXRlIGhvbGRzIGEgZGVzY3JpcHRpb24gc3RyaW5nIGZvciB0aGUgY3VycmVudAorCQl0cmlnZ2VyLiBJbiBvcmRlciB0byBhc3NvY2lhdGUgdGhlIHRyaWdnZXIgd2l0aCBhbiBJSU8gZGV2aWNlCisJCW9uZSBzaG91bGQgd3JpdGUgdGhpcyBuYW1lIHN0cmluZyB0bworCQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWS90cmlnZ2VyL2N1cnJlbnRfdHJpZ2dlci4KKworV2hhdDoJCS9zeXMvYnVzL2lpby9kZXZpY2VzL2lpb19zeXNmc190cmlnZ2VyL2FkZF90cmlnZ2VyCitLZXJuZWxWZXJzaW9uOgkyLjYuMzkKK0NvbnRhY3Q6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGF0dHJpYnV0ZSBpcyBwcm92aWRlZCBieSB0aGUgaWlvLXRyaWctc3lzZnMgc3RhbmQtYWxvbmUKKwkJZHJpdmVyIGFuZCBpdCBpcyB1c2VkIHRvIGFjdGl2YXRlIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB0cmlnZ2VyLgorCQlJbiBvcmRlciB0byBhY2hpZXZlIHRoaXMsIG9uZSBzaG91bGQgd3JpdGUgYSBwb3NpdGl2ZSBpbnRlZ2VyCisJCWludG8gdGhlIGFzc29jaWF0ZWQgZmlsZSwgd2hpY2ggd2lsbCBzZXJ2ZSBhcyB0aGUgaWQgb2YgdGhlCisJCXRyaWdnZXIuIElmIHRoZSB0cmlnZ2VyIHdpdGggdGhlIHNwZWNpZmllZCBpZCBpcyBhbHJlYWR5IHByZXNlbnQKKwkJaW4gdGhlIHN5c3RlbSwgYW4gaW52YWxpZCBhcmd1bWVudCBtZXNzYWdlIHdpbGwgYmUgcmV0dXJuZWQuCisKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW9fc3lzZnNfdHJpZ2dlci9yZW1vdmVfdHJpZ2dlcgorS2VybmVsVmVyc2lvbjoJMi42LjM5CitDb250YWN0OglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCB0byB1bnJlZ2lzdGVyIGFuZCBkZWxldGUgYSBwcmV2aW91c2x5CisJCWNyZWF0ZWQgdHJpZ2dlciBmcm9tIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSB0cmlnZ2Vycy4gSW4gb3JkZXIgdG8KKwkJYWNoaWV2ZSB0aGlzLCBvbmUgc2hvdWxkIHdyaXRlIGEgcG9zaXRpdmUgaW50ZWdlciBpbnRvIHRoZQorCQlhc3NvY2lhdGVkIGZpbGUsIHJlcHJlc2VudGluZyB0aGUgaWQgb2YgdGhlIHRyaWdnZXIgdGhhdCBuZWVkcworCQl0byBiZSByZW1vdmVkLiBJZiB0aGUgdHJpZ2dlciBjYW4ndCBiZSBmb3VuZCwgYW4gaW52YWxpZAorCQlhcmd1bWVudCBtZXNzYWdlIHdpbGwgYmUgcmV0dXJuZWQgdG8gdGhlIHVzZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1paW8tdmY2MTAgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1paW8tdmY2MTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNiYzFmNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWlpby12ZjYxMApAQCAtMCwwICsxLDcgQEAKK1doYXQ6CQkvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9jb252ZXJzaW9uX21vZGUKK0tlcm5lbFZlcnNpb246CTQuMgorQ29udGFjdDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCVNwZWNpZmllcyB0aGUgaGFyZHdhcmUgY29udmVyc2lvbiBtb2RlIHVzZWQuIFRoZSB0aHJlZQorCQlhdmFpbGFibGUgbW9kZXMgYXJlICJub3JtYWwiLCAiaGlnaC1zcGVlZCIgYW5kICJsb3ctcG93ZXIiLAorCQl3aGVyZSB0aGUgbGFzdCBpcyB0aGUgZGVmYXVsdCBtb2RlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaW50ZWxfdGgtZGV2aWNlcy1ndGggYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1pbnRlbF90aC1kZXZpY2VzLWd0aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmQwODQzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaW50ZWxfdGgtZGV2aWNlcy1ndGgKQEAgLTAsMCArMSw0OSBAQAorV2hhdDoJCS9zeXMvYnVzL2ludGVsX3RoL2RldmljZXMvPGludGVsX3RoX2lkPi1ndGgvbWFzdGVycy8qCitEYXRlOgkJSnVuZSAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjMKK0NvbnRhY3Q6CUFsZXhhbmRlciBTaGlzaGtpbiA8YWxleGFuZGVyLnNoaXNoa2luQGxpbnV4LmludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgkoUlcpIENvbmZpZ3VyZSBvdXRwdXQgcG9ydHMgZm9yIFNUUCBtYXN0ZXJzLiBXcml0aW5nIC0xCisJCWRpc2FibGVzIGEgbWFzdGVyOyBhbnkKKworV2hhdDoJCS9zeXMvYnVzL2ludGVsX3RoL2RldmljZXMvPGludGVsX3RoX2lkPi1ndGgvb3V0cHV0cy9bMC03XV9wb3J0CitEYXRlOgkJSnVuZSAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjMKK0NvbnRhY3Q6CUFsZXhhbmRlciBTaGlzaGtpbiA8YWxleGFuZGVyLnNoaXNoa2luQGxpbnV4LmludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgkoUk8pIE91dHB1dCBwb3J0IHR5cGU6CisJCSAgMDogbm90IHByZXNlbnQsCisJCSAgMTogTVNVIChNZW1vcnkgU3RvcmFnZSBVbml0KQorCQkgIDI6IENUUCAoQ29tbW9uIFRyYWNlIFBvcnQpCisJCSAgNDogUFRJIChNSVBJIFBUSSkuCisKK1doYXQ6CQkvc3lzL2J1cy9pbnRlbF90aC9kZXZpY2VzLzxpbnRlbF90aF9pZD4tZ3RoL291dHB1dHMvWzAtN11fZHJvcAorRGF0ZToJCUp1bmUgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4zCitDb250YWN0OglBbGV4YW5kZXIgU2hpc2hraW4gPGFsZXhhbmRlci5zaGlzaGtpbkBsaW51eC5pbnRlbC5jb20+CitEZXNjcmlwdGlvbjoJKFJXKSBEYXRhIHJldGVudGlvbiBwb2xpY3kgc2V0dGluZzoga2VlcCAoMCkgb3IgZHJvcCAoMSkKKwkJaW5jb21pbmcgZGF0YSB3aGlsZSBvdXRwdXQgcG9ydCBpcyBpbiByZXNldC4KKworV2hhdDoJCS9zeXMvYnVzL2ludGVsX3RoL2RldmljZXMvPGludGVsX3RoX2lkPi1ndGgvb3V0cHV0cy9bMC03XV9udWxsCitEYXRlOgkJSnVuZSAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjMKK0NvbnRhY3Q6CUFsZXhhbmRlciBTaGlzaGtpbiA8YWxleGFuZGVyLnNoaXNoa2luQGxpbnV4LmludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgkoUlcpIFNUUCBOVUxMIHBhY2tldCBnZW5lcmF0aW9uOiBlbmFibGVkICgxKSBvciBkaXNhYmxlZCAoMCkuCisKK1doYXQ6CQkvc3lzL2J1cy9pbnRlbF90aC9kZXZpY2VzLzxpbnRlbF90aF9pZD4tZ3RoL291dHB1dHMvWzAtN11fZmx1c2gKK0RhdGU6CQlKdW5lIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMworQ29udGFjdDoJQWxleGFuZGVyIFNoaXNoa2luIDxhbGV4YW5kZXIuc2hpc2hraW5AbGludXguaW50ZWwuY29tPgorRGVzY3JpcHRpb246CShSVykgRm9yY2UgZmx1c2ggZGF0YSBmcm9tIGJ5dGUgcGFja2luZyBidWZmZXIgZm9yIHRoZSBvdXRwdXQKKwkJcG9ydC4KKworV2hhdDoJCS9zeXMvYnVzL2ludGVsX3RoL2RldmljZXMvPGludGVsX3RoX2lkPi1ndGgvb3V0cHV0cy9bMC03XV9yZXNldAorRGF0ZToJCUp1bmUgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4zCitDb250YWN0OglBbGV4YW5kZXIgU2hpc2hraW4gPGFsZXhhbmRlci5zaGlzaGtpbkBsaW51eC5pbnRlbC5jb20+CitEZXNjcmlwdGlvbjoJKFJPKSBPdXRwdXQgcG9ydCBpcyBpbiByZXNldCAoMSkuCisKK1doYXQ6CQkvc3lzL2J1cy9pbnRlbF90aC9kZXZpY2VzLzxpbnRlbF90aF9pZD4tZ3RoL291dHB1dHMvWzAtN11fc21jZnJlcQorRGF0ZToJCUp1bmUgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4zCitDb250YWN0OglBbGV4YW5kZXIgU2hpc2hraW4gPGFsZXhhbmRlci5zaGlzaGtpbkBsaW51eC5pbnRlbC5jb20+CitEZXNjcmlwdGlvbjoJKFJXKSBTVFAgc3luYyBwYWNrZXQgZnJlcXVlbmN5IGZvciB0aGUgcG9ydC4gU3BlY2lmaWVzIHRoZQorCQludW1iZXIgb2YgY2xvY2tzIGJldHdlZW4gbWFpbmVuYW5jZSBwYWNrZXRzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaW50ZWxfdGgtZGV2aWNlcy1tc2MgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1pbnRlbF90aC1kZXZpY2VzLW1zYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTQwYzVkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaW50ZWxfdGgtZGV2aWNlcy1tc2MKQEAgLTAsMCArMSwzMyBAQAorV2hhdDoJCS9zeXMvYnVzL2ludGVsX3RoL2RldmljZXMvPGludGVsX3RoX2lkPi1tc2M8bXNjLWlkPi93cmFwCitEYXRlOgkJSnVuZSAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjMKK0NvbnRhY3Q6CUFsZXhhbmRlciBTaGlzaGtpbiA8YWxleGFuZGVyLnNoaXNoa2luQGxpbnV4LmludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgkoUlcpIENvbmZpZ3VyZSBNU0MgYnVmZmVyIHdyYXBwaW5nLiAxID09IHdyYXBwaW5nIGVuYWJsZWQuCisKK1doYXQ6CQkvc3lzL2J1cy9pbnRlbF90aC9kZXZpY2VzLzxpbnRlbF90aF9pZD4tbXNjPG1zYy1pZD4vbW9kZQorRGF0ZToJCUp1bmUgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4zCitDb250YWN0OglBbGV4YW5kZXIgU2hpc2hraW4gPGFsZXhhbmRlci5zaGlzaGtpbkBsaW51eC5pbnRlbC5jb20+CitEZXNjcmlwdGlvbjoJKFJXKSBDb25maWd1cmUgTVNDIG9wZXJhdGluZyBtb2RlOgorCQkgIC0gInNpbmdsZSIsIGZvciBjb250aWd1b3VzIGJ1ZmZlciBtb2RlIChoaWdoLW9yZGVyIGFsbG9jKTsKKwkJICAtICJtdWx0aSIsIGZvciBtdWx0aWJsb2NrIG1vZGU7CisJCSAgLSAiRXhJIiwgZm9yIERDSSBoYW5kbGVyIG1vZGU7CisJCSAgLSAiZGVidWciLCBmb3IgZGVidWcgbW9kZS4KKwkJSWYgb3BlcmF0aW5nIG1vZGUgY2hhbmdlcywgZXhpc3RpbmcgYnVmZmVyIGlzIGRlYWxsb2NhdGVkLAorCQlwcm92aWRlZCB0aGVyZSBhcmUgbm8gYWN0aXZlIHVzZXJzIGFuZCB0cmFjaW5nIGlzIG5vdCBlbmFibGVkLAorCQlvdGhlcndpc2UgdGhlIHdyaXRlIHdpbGwgZmFpbC4KKworV2hhdDoJCS9zeXMvYnVzL2ludGVsX3RoL2RldmljZXMvPGludGVsX3RoX2lkPi1tc2M8bXNjLWlkPi9ucl9wYWdlcworRGF0ZToJCUp1bmUgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4zCitDb250YWN0OglBbGV4YW5kZXIgU2hpc2hraW4gPGFsZXhhbmRlci5zaGlzaGtpbkBsaW51eC5pbnRlbC5jb20+CitEZXNjcmlwdGlvbjoJKFJXKSBDb25maWd1cmUgTVNDIGJ1ZmZlciBzaXplIGZvciAic2luZ2xlIiBvciAibXVsdGkiIG1vZGVzLgorCQlJbiBzaW5nbGUgbW9kZSwgdGhpcyBpcyBhIHNpbmdsZSBudW1iZXIgb2YgcGFnZXMsIGhhcyB0byBiZQorCQlwb3dlciBvZiAyLiBJbiBtdWx0aWJsb2NrIG1vZGUsIHRoaXMgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdAorCQlvZiBudW1iZXJzIG9mIHBhZ2VzIGZvciBlYWNoIHdpbmRvdyB0byBiZSBhbGxvY2F0ZWQuIE51bWJlciBvZgorCQl3aW5kb3dzIGlzIG5vdCBsaW1pdGVkLgorCQlXcml0aW5nIHRvIHRoaXMgZmlsZSBkZWFsbG9jYXRlcyBleGlzdGluZyBidWZmZXIgKHByb3ZpZGVkCisJCXRoZXJlIGFyZSBubyBhY3RpdmUgdXNlcnMgYW5kIHRyYWNpbmcgaXMgbm90IGVuYWJsZWQpIGFuZCB0aGVuCisJCWFsbG9jYXRlcyBhIG5ldyBvbmUuCisKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaW50ZWxfdGgtZGV2aWNlcy1wdGkgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1pbnRlbF90aC1kZXZpY2VzLXB0aQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjBiMjRmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaW50ZWxfdGgtZGV2aWNlcy1wdGkKQEAgLTAsMCArMSwyNCBAQAorV2hhdDoJCS9zeXMvYnVzL2ludGVsX3RoL2RldmljZXMvPGludGVsX3RoX2lkPi1wdGkvbW9kZQorRGF0ZToJCUp1bmUgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4zCitDb250YWN0OglBbGV4YW5kZXIgU2hpc2hraW4gPGFsZXhhbmRlci5zaGlzaGtpbkBsaW51eC5pbnRlbC5jb20+CitEZXNjcmlwdGlvbjoJKFJXKSBDb25maWd1cmUgUFRJIG91dHB1dCB3aWR0aC4gQ3VycmVudGx5IHN1cHBvcnRlZCB2YWx1ZXMKKwkJYXJlIDQsIDgsIDEyLCAxNi4KKworV2hhdDoJCS9zeXMvYnVzL2ludGVsX3RoL2RldmljZXMvPGludGVsX3RoX2lkPi1wdGkvZnJlZXJ1bm5pbmdfY2xvY2sKK0RhdGU6CQlKdW5lIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMworQ29udGFjdDoJQWxleGFuZGVyIFNoaXNoa2luIDxhbGV4YW5kZXIuc2hpc2hraW5AbGludXguaW50ZWwuY29tPgorRGVzY3JpcHRpb246CShSVykgMDogUFRJIHRyYWNlIGNsb2NrIGFjdHMgYXMgYSBzdHJvYmUgd2hpY2ggb25seSB0b2dnbGVzCisJCXdoZW4gdGhlcmUgaXMgdHJhY2UgZGF0YSB0byBzZW5kLiAxOiBQVEkgdHJhY2UgY2xvY2sgaXMgYQorCQlmcmVlLXJ1bm5pbmcgY2xvY2suCisKK1doYXQ6CQkvc3lzL2J1cy9pbnRlbF90aC9kZXZpY2VzLzxpbnRlbF90aF9pZD4tcHRpL2Nsb2NrX2RpdmlkZXIKK0RhdGU6CQlKdW5lIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMworQ29udGFjdDoJQWxleGFuZGVyIFNoaXNoa2luIDxhbGV4YW5kZXIuc2hpc2hraW5AbGludXguaW50ZWwuY29tPgorRGVzY3JpcHRpb246CShSVykgQ29uZmlndXJlIFBUSSBwb3J0IGNsb2NrIGRpdmlkZXI6CisJCSAtIDA6IEludGVsIFRIIGNsb2NrIHJhdGUsCisJCSAtIDE6IDEvMiBJbnRlbCBUSCBjbG9jayByYXRlLAorCQkgLSAyOiAxLzQgSW50ZWwgVEggY2xvY2sgcmF0ZSwKKwkJIC0gMzogMS84IEludGVsIFRIIGNsb2NrIHJhdGUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1pbnRlbF90aC1vdXRwdXQtZGV2aWNlcyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWludGVsX3RoLW91dHB1dC1kZXZpY2VzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNDhhOTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1pbnRlbF90aC1vdXRwdXQtZGV2aWNlcwpAQCAtMCwwICsxLDEzIEBACitXaGF0OgkJL3N5cy9idXMvaW50ZWxfdGgvZGV2aWNlcy88aW50ZWxfdGhfaWQ+LTxkZXZpY2U+PGlkPi9hY3RpdmUKK0RhdGU6CQlKdW5lIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMworQ29udGFjdDoJQWxleGFuZGVyIFNoaXNoa2luIDxhbGV4YW5kZXIuc2hpc2hraW5AbGludXguaW50ZWwuY29tPgorRGVzY3JpcHRpb246CShSVykgV3JpdGVzIG9mIDEgb3IgMCBlbmFibGUgb3IgZGlzYWJsZSB0cmFjZSBvdXRwdXQgdG8gdGhpcworCQlvdXRwdXQgZGV2aWNlLiBSZWFkcyByZXR1cm4gY3VycmVudCBzdGF0dXMuCisKK1doYXQ6CQkvc3lzL2J1cy9pbnRlbF90aC9kZXZpY2VzLzxpbnRlbF90aF9pZD4tbXNjPG1zYy1pZD4vcG9ydAorRGF0ZToJCUp1bmUgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4zCitDb250YWN0OglBbGV4YW5kZXIgU2hpc2hraW4gPGFsZXhhbmRlci5zaGlzaGtpbkBsaW51eC5pbnRlbC5jb20+CitEZXNjcmlwdGlvbjoJKFJPKSBQb3J0IG51bWJlciwgY29ycmVzcG9uZGluZyB0byB0aGlzIG91dHB1dCBkZXZpY2Ugb24gdGhlCisJCXN3aXRjaCAoR1RIKS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLW1kaW8gYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1tZGlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5MWJhYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1tZGlvCkBAIC0wLDAgKzEsMjkgQEAKK1doYXQ6CQkvc3lzL2J1cy9tZGlvX2J1cy9kZXZpY2VzLy4uLi9waHlfaWQKK0RhdGU6CQlOb3ZlbWJlciAyMDEyCitLZXJuZWxWZXJzaW9uOgkzLjgKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGF0dHJpYnV0ZSBjb250YWlucyB0aGUgMzItYml0IFBIWSBJZGVudGlmaWVyIGFzIHJlcG9ydGVkCisJCWJ5IHRoZSBkZXZpY2UgZHVyaW5nIGJ1cyBlbnVtZXJhdGlvbiwgZW5jb2RlZCBpbiBoZXhhZGVjaW1hbC4KKwkJVGhpcyBJRCBpcyB1c2VkIHRvIG1hdGNoIHRoZSBkZXZpY2Ugd2l0aCB0aGUgYXBwcm9wcmlhdGUKKwkJZHJpdmVyLgorCitXaGF0OgkJL3N5cy9idXMvbWRpb19idXMvZGV2aWNlcy8uLi4vcGh5X2ludGVyZmFjZQorRGF0ZToJCUZlYnJ1YXJ5IDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTUKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGF0dHJpYnV0ZSBjb250YWlucyB0aGUgUEhZIGludGVyZmFjZSBhcyBjb25maWd1cmVkIGJ5IHRoZQorCQlFdGhlcm5ldCBkcml2ZXIgZHVyaW5nIGJ1cyBlbnVtZXJhdGlvbiwgZW5jb2RlZCBpbiBzdHJpbmcuCisJCVRoaXMgaW50ZXJmYWNlIG1vZGUgaXMgdXNlZCB0byBjb25maWd1cmUgdGhlIEV0aGVybmV0IE1BQyB3aXRoIHRoZQorCQlhcHByb3ByaWF0ZSBtb2RlIGZvciBpdHMgZGF0YSBsaW5lcyB0byB0aGUgUEhZIGhhcmR3YXJlLgorCitXaGF0OgkJL3N5cy9idXMvbWRpb19idXMvZGV2aWNlcy8uLi4vcGh5X2hhc19maXh1cHMKK0RhdGU6CQlGZWJydWFyeSAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE1CitDb250YWN0OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJVGhpcyBhdHRyaWJ1dGUgY29udGFpbnMgdGhlIGJvb2xlYW4gdmFsdWUgd2hldGhlciBhIGdpdmVuIFBIWQorCQlkZXZpY2UgaGFzIGhhZCBhbnkgImZpeHVwIiB3b3JrYXJvdW5kIHJ1bm5pbmcgb24gaXQsIGVuY29kZWQgYXMKKwkJYSBib29sZWFuLiBUaGlzIGluZm9ybWF0aW9uIGlzIHByb3ZpZGVkIHRvIGhlbHAgdHJvdWJsZXNob290aW5nCisJCVBIWSBjb25maWd1cmF0aW9ucy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLW1lZGlhIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtbWVkaWEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA1N2U1NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLW1lZGlhCkBAIC0wLDAgKzEsNiBAQAorV2hhdDoJCS9zeXMvYnVzL21lZGlhL2RldmljZXMvLi4uL21vZGVsCitEYXRlOgkJSmFudWFyeSAyMDExCitDb250YWN0OglMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+CisJCWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CUNvbnRhaW5zIHRoZSBkZXZpY2UgbW9kZWwgbmFtZSBpbiBVVEYtOC4gVGhlIGRldmljZSB2ZXJzaW9uIGlzCisJCWlzIG5vdCBiZSBhcHBlbmRlZCB0byB0aGUgbW9kZWwgbmFtZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLW1laSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLW1laQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmQ0NTM0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtbWVpCkBAIC0wLDAgKzEsMjggQEAKK1doYXQ6CQkvc3lzL2J1cy9tZWkvZGV2aWNlcy8uLi4vbW9kYWxpYXMKK0RhdGU6CQlNYXJjaCAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjEwCitDb250YWN0OglTYW11ZWwgT3J0aXogPHNhbWVvQGxpbnV4LmludGVsLmNvbT4KKwkJbGludXgtbWVpQGxpbnV4LmludGVsLmNvbQorRGVzY3JpcHRpb246CVN0b3JlcyB0aGUgc2FtZSBNT0RBTElBUyB2YWx1ZSBlbWl0dGVkIGJ5IHVldmVudAorCQlGb3JtYXQ6IG1laTo8bWVpIGRldmljZSBuYW1lPjo8ZGV2aWNlIHV1aWQ+OgorCitXaGF0OgkJL3N5cy9idXMvbWVpL2RldmljZXMvLi4uL25hbWUKK0RhdGU6CQlNYXkgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4yCitDb250YWN0OglUb21hcyBXaW5rbGVyIDx0b21hcy53aW5rbGVyQGludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOglTdG9yZXMgbWVpIGNsaWVudCBkZXZpY2UgbmFtZQorCQlGb3JtYXQ6IHN0cmluZworCitXaGF0OgkJL3N5cy9idXMvbWVpL2RldmljZXMvLi4uL3V1aWQKK0RhdGU6CQlNYXkgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4yCitDb250YWN0OglUb21hcyBXaW5rbGVyIDx0b21hcy53aW5rbGVyQGludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOglTdG9yZXMgbWVpIGNsaWVudCBkZXZpY2UgdXVpZAorCQlGb3JtYXQ6IHh4eHh4eHh4LXh4eHgteHh4eC14eHh4LXh4eHh4eHh4eHh4eAorCitXaGF0OgkJL3N5cy9idXMvbWVpL2RldmljZXMvLi4uL3ZlcnNpb24KK0RhdGU6CQlBdWcgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4zCitDb250YWN0OglUb21hcyBXaW5rbGVyIDx0b21hcy53aW5rbGVyQGludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOglTdG9yZXMgbWVpIGNsaWVudCBwcm90b2NvbCB2ZXJzaW9uCisJCUZvcm1hdDogJWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXBjaSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXBjaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2JjNTBmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtcGNpCkBAIC0wLDAgKzEsMjk2IEBACitXaGF0OgkJL3N5cy9idXMvcGNpL2RyaXZlcnMvLi4uL2JpbmQKK0RhdGU6CQlEZWNlbWJlciAyMDAzCitDb250YWN0OglsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJV3JpdGluZyBhIGRldmljZSBsb2NhdGlvbiB0byB0aGlzIGZpbGUgd2lsbCBjYXVzZQorCQl0aGUgZHJpdmVyIHRvIGF0dGVtcHQgdG8gYmluZCB0byB0aGUgZGV2aWNlIGZvdW5kIGF0CisJCXRoaXMgbG9jYXRpb24uCVRoaXMgaXMgdXNlZnVsIGZvciBvdmVycmlkaW5nIGRlZmF1bHQKKwkJYmluZGluZ3MuICBUaGUgZm9ybWF0IGZvciB0aGUgbG9jYXRpb24gaXM6IEREREQ6QkI6REQuRi4KKwkJVGhhdCBpcyBEb21haW46QnVzOkRldmljZS5GdW5jdGlvbiBhbmQgaXMgdGhlIHNhbWUgYXMKKwkJZm91bmQgaW4gL3N5cy9idXMvcGNpL2RldmljZXMvLiAgRm9yIGV4YW1wbGU6CisJCSMgZWNobyAwMDAwOjAwOjE5LjAgPiAvc3lzL2J1cy9wY2kvZHJpdmVycy9mb28vYmluZAorCQkoTm90ZToga2VybmVscyBiZWZvcmUgMi42LjI4IG1heSByZXF1aXJlIGVjaG8gLW4pLgorCitXaGF0OgkJL3N5cy9idXMvcGNpL2RyaXZlcnMvLi4uL3VuYmluZAorRGF0ZToJCURlY2VtYmVyIDIwMDMKK0NvbnRhY3Q6CWxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlXcml0aW5nIGEgZGV2aWNlIGxvY2F0aW9uIHRvIHRoaXMgZmlsZSB3aWxsIGNhdXNlIHRoZQorCQlkcml2ZXIgdG8gYXR0ZW1wdCB0byB1bmJpbmQgZnJvbSB0aGUgZGV2aWNlIGZvdW5kIGF0CisJCXRoaXMgbG9jYXRpb24uCVRoaXMgbWF5IGJlIHVzZWZ1bCB3aGVuIG92ZXJyaWRpbmcgZGVmYXVsdAorCQliaW5kaW5ncy4gIFRoZSBmb3JtYXQgZm9yIHRoZSBsb2NhdGlvbiBpczogRERERDpCQjpERC5GLgorCQlUaGF0IGlzIERvbWFpbjpCdXM6RGV2aWNlLkZ1bmN0aW9uIGFuZCBpcyB0aGUgc2FtZSBhcworCQlmb3VuZCBpbiAvc3lzL2J1cy9wY2kvZGV2aWNlcy8uIEZvciBleGFtcGxlOgorCQkjIGVjaG8gMDAwMDowMDoxOS4wID4gL3N5cy9idXMvcGNpL2RyaXZlcnMvZm9vL3VuYmluZAorCQkoTm90ZToga2VybmVscyBiZWZvcmUgMi42LjI4IG1heSByZXF1aXJlIGVjaG8gLW4pLgorCitXaGF0OgkJL3N5cy9idXMvcGNpL2RyaXZlcnMvLi4uL25ld19pZAorRGF0ZToJCURlY2VtYmVyIDIwMDMKK0NvbnRhY3Q6CWxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlXcml0aW5nIGEgZGV2aWNlIElEIHRvIHRoaXMgZmlsZSB3aWxsIGF0dGVtcHQgdG8KKwkJZHluYW1pY2FsbHkgYWRkIGEgbmV3IGRldmljZSBJRCB0byBhIFBDSSBkZXZpY2UgZHJpdmVyLgorCQlUaGlzIG1heSBhbGxvdyB0aGUgZHJpdmVyIHRvIHN1cHBvcnQgbW9yZSBoYXJkd2FyZSB0aGFuCisJCXdhcyBpbmNsdWRlZCBpbiB0aGUgZHJpdmVyJ3Mgc3RhdGljIGRldmljZSBJRCBzdXBwb3J0CisJCXRhYmxlIGF0IGNvbXBpbGUgdGltZS4gIFRoZSBmb3JtYXQgZm9yIHRoZSBkZXZpY2UgSUQgaXM6CisJCVZWVlYgRERERCBTVlZWIFNEREQgQ0NDQyBNTU1NIFBQUFAuICBUaGF0IGlzIFZlbmRvciBJRCwKKwkJRGV2aWNlIElELCBTdWJzeXN0ZW0gVmVuZG9yIElELCBTdWJzeXN0ZW0gRGV2aWNlIElELAorCQlDbGFzcywgQ2xhc3MgTWFzaywgYW5kIFByaXZhdGUgRHJpdmVyIERhdGEuICBUaGUgVmVuZG9yIElECisJCWFuZCBEZXZpY2UgSUQgZmllbGRzIGFyZSByZXF1aXJlZCwgdGhlIHJlc3QgYXJlIG9wdGlvbmFsLgorCQlVcG9uIHN1Y2Nlc3NmdWxseSBhZGRpbmcgYW4gSUQsIHRoZSBkcml2ZXIgd2lsbCBwcm9iZQorCQlmb3IgdGhlIGRldmljZSBhbmQgYXR0ZW1wdCB0byBiaW5kIHRvIGl0LiAgRm9yIGV4YW1wbGU6CisJCSMgZWNobyAiODA4NiAxMGY1IiA+IC9zeXMvYnVzL3BjaS9kcml2ZXJzL2Zvby9uZXdfaWQKKworV2hhdDoJCS9zeXMvYnVzL3BjaS9kcml2ZXJzLy4uLi9yZW1vdmVfaWQKK0RhdGU6CQlGZWJydWFyeSAyMDA5CitDb250YWN0OglDaHJpcyBXcmlnaHQgPGNocmlzd0Bzb3VzLXNvbC5vcmc+CitEZXNjcmlwdGlvbjoKKwkJV3JpdGluZyBhIGRldmljZSBJRCB0byB0aGlzIGZpbGUgd2lsbCByZW1vdmUgYW4gSUQKKwkJdGhhdCB3YXMgZHluYW1pY2FsbHkgYWRkZWQgdmlhIHRoZSBuZXdfaWQgc3lzZnMgZW50cnkuCisJCVRoZSBmb3JtYXQgZm9yIHRoZSBkZXZpY2UgSUQgaXM6CisJCVZWVlYgRERERCBTVlZWIFNEREQgQ0NDQyBNTU1NLglUaGF0IGlzIFZlbmRvciBJRCwgRGV2aWNlCisJCUlELCBTdWJzeXN0ZW0gVmVuZG9yIElELCBTdWJzeXN0ZW0gRGV2aWNlIElELCBDbGFzcywKKwkJYW5kIENsYXNzIE1hc2suICBUaGUgVmVuZG9yIElEIGFuZCBEZXZpY2UgSUQgZmllbGRzIGFyZQorCQlyZXF1aXJlZCwgdGhlIHJlc3QgYXJlIG9wdGlvbmFsLiAgQWZ0ZXIgc3VjY2Vzc2Z1bGx5CisJCXJlbW92aW5nIGFuIElELCB0aGUgZHJpdmVyIHdpbGwgbm8gbG9uZ2VyIHN1cHBvcnQgdGhlCisJCWRldmljZS4gIFRoaXMgaXMgdXNlZnVsIHRvIGVuc3VyZSBhdXRvIHByb2Jpbmcgd29uJ3QKKwkJbWF0Y2ggdGhlIGRyaXZlciB0byB0aGUgZGV2aWNlLiAgRm9yIGV4YW1wbGU6CisJCSMgZWNobyAiODA4NiAxMGY1IiA+IC9zeXMvYnVzL3BjaS9kcml2ZXJzL2Zvby9yZW1vdmVfaWQKKworV2hhdDoJCS9zeXMvYnVzL3BjaS9yZXNjYW4KK0RhdGU6CQlKYW51YXJ5IDIwMDkKK0NvbnRhY3Q6CUxpbnV4IFBDSSBkZXZlbG9wZXJzIDxsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnPgorRGVzY3JpcHRpb246CisJCVdyaXRpbmcgYSBub24temVybyB2YWx1ZSB0byB0aGlzIGF0dHJpYnV0ZSB3aWxsCisJCWZvcmNlIGEgcmVzY2FuIG9mIGFsbCBQQ0kgYnVzZXMgaW4gdGhlIHN5c3RlbSwgYW5kCisJCXJlLWRpc2NvdmVyIHByZXZpb3VzbHkgcmVtb3ZlZCBkZXZpY2VzLgorCitXaGF0OgkJL3N5cy9idXMvcGNpL2RldmljZXMvLi4uL21zaV9idXMKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxNAorQ29udGFjdDoJTGludXggUENJIGRldmVsb3BlcnMgPGxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmc+CitEZXNjcmlwdGlvbjoKKwkJV3JpdGluZyBhIHplcm8gdmFsdWUgdG8gdGhpcyBhdHRyaWJ1dGUgZGlzYWxsb3dzIE1TSSBhbmQKKwkJTVNJLVggZm9yIGFueSBmdXR1cmUgZHJpdmVycyBvZiB0aGUgZGV2aWNlLiAgSWYgdGhlIGRldmljZQorCQlpcyBhIGJyaWRnZSwgTVNJIGFuZCBNU0ktWCB3aWxsIGJlIGRpc2FsbG93ZWQgZm9yIGZ1dHVyZQorCQlkcml2ZXJzIG9mIGFsbCBjaGlsZCBkZXZpY2VzIHVuZGVyIHRoZSBicmlkZ2UuICBEcml2ZXJzCisJCW11c3QgYmUgcmVsb2FkZWQgZm9yIHRoZSBuZXcgc2V0dGluZyB0byB0YWtlIGVmZmVjdC4KKworV2hhdDoJCS9zeXMvYnVzL3BjaS9kZXZpY2VzLy4uLi9tc2lfaXJxcy8KK0RhdGU6CQlTZXB0ZW1iZXIsIDIwMTEKK0NvbnRhY3Q6CU5laWwgSG9ybWFuIDxuaG9ybWFuQHR1eGRyaXZlci5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvZGV2aWNlcy8uLi4vbXNpX2lycXMgZGlyZWN0b3J5IGNvbnRhaW5zIGEgdmFyaWFibGUgc2V0CisJCW9mIGZpbGVzLCB3aXRoIGVhY2ggZmlsZSBiZWluZyBuYW1lZCBhZnRlciBhIGNvcnJlc3BvbmRpbmcgbXNpCisJCWlycSB2ZWN0b3IgYWxsb2NhdGVkIHRvIHRoYXQgZGV2aWNlLgorCitXaGF0OgkJL3N5cy9idXMvcGNpL2RldmljZXMvLi4uL21zaV9pcnFzLzxOPgorRGF0ZToJCVNlcHRlbWJlciAyMDExCitDb250YWN0OglOZWlsIEhvcm1hbiA8bmhvcm1hbkB0dXhkcml2ZXIuY29tPgorRGVzY3JpcHRpb246CisJCVRoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGUgbW9kZSB0aGF0IHRoZSBpcnEgdmVjdG9yIG5hbWVkIGJ5CisJCXRoZSBmaWxlIGlzIGluIChtc2kgdnMuIG1zaXgpCisKK1doYXQ6CQkvc3lzL2J1cy9wY2kvZGV2aWNlcy8uLi4vcmVtb3ZlCitEYXRlOgkJSmFudWFyeSAyMDA5CitDb250YWN0OglMaW51eCBQQ0kgZGV2ZWxvcGVycyA8bGludXgtcGNpQHZnZXIua2VybmVsLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlXcml0aW5nIGEgbm9uLXplcm8gdmFsdWUgdG8gdGhpcyBhdHRyaWJ1dGUgd2lsbAorCQlob3QtcmVtb3ZlIHRoZSBQQ0kgZGV2aWNlIGFuZCBhbnkgb2YgaXRzIGNoaWxkcmVuLgorCitXaGF0OgkJL3N5cy9idXMvcGNpL2RldmljZXMvLi4uL3BjaV9idXMvLi4uL3Jlc2NhbgorRGF0ZToJCU1heSAyMDExCitDb250YWN0OglMaW51eCBQQ0kgZGV2ZWxvcGVycyA8bGludXgtcGNpQHZnZXIua2VybmVsLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlXcml0aW5nIGEgbm9uLXplcm8gdmFsdWUgdG8gdGhpcyBhdHRyaWJ1dGUgd2lsbAorCQlmb3JjZSBhIHJlc2NhbiBvZiB0aGUgYnVzIGFuZCBhbGwgY2hpbGQgYnVzZXMsCisJCWFuZCByZS1kaXNjb3ZlciBkZXZpY2VzIHJlbW92ZWQgZWFybGllciBmcm9tIHRoaXMKKwkJcGFydCBvZiB0aGUgZGV2aWNlIHRyZWUuCisKK1doYXQ6CQkvc3lzL2J1cy9wY2kvZGV2aWNlcy8uLi4vcmVzY2FuCitEYXRlOgkJSmFudWFyeSAyMDA5CitDb250YWN0OglMaW51eCBQQ0kgZGV2ZWxvcGVycyA8bGludXgtcGNpQHZnZXIua2VybmVsLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlXcml0aW5nIGEgbm9uLXplcm8gdmFsdWUgdG8gdGhpcyBhdHRyaWJ1dGUgd2lsbAorCQlmb3JjZSBhIHJlc2NhbiBvZiB0aGUgZGV2aWNlJ3MgcGFyZW50IGJ1cyBhbmQgYWxsCisJCWNoaWxkIGJ1c2VzLCBhbmQgcmUtZGlzY292ZXIgZGV2aWNlcyByZW1vdmVkIGVhcmxpZXIKKwkJZnJvbSB0aGlzIHBhcnQgb2YgdGhlIGRldmljZSB0cmVlLgorCitXaGF0OgkJL3N5cy9idXMvcGNpL2RldmljZXMvLi4uL3Jlc2V0CitEYXRlOgkJSnVseSAyMDA5CitDb250YWN0OglNaWNoYWVsIFMuIFRzaXJraW4gPG1zdEByZWRoYXQuY29tPgorRGVzY3JpcHRpb246CisJCVNvbWUgZGV2aWNlcyBhbGxvdyBhbiBpbmRpdmlkdWFsIGZ1bmN0aW9uIHRvIGJlIHJlc2V0CisJCXdpdGhvdXQgYWZmZWN0aW5nIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGUgc2FtZSBkZXZpY2UuCisJCUZvciBkZXZpY2VzIHRoYXQgaGF2ZSB0aGlzIHN1cHBvcnQsIGEgZmlsZSBuYW1lZCByZXNldAorCQl3aWxsIGJlIHByZXNlbnQgaW4gc3lzZnMuICBXcml0aW5nIDEgdG8gdGhpcyBmaWxlCisJCXdpbGwgcGVyZm9ybSByZXNldC4KKworV2hhdDoJCS9zeXMvYnVzL3BjaS9kZXZpY2VzLy4uLi92cGQKK0RhdGU6CQlGZWJydWFyeSAyMDA4CitDb250YWN0OglCZW4gSHV0Y2hpbmdzIDxid2hAa2VybmVsLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlBIGZpbGUgbmFtZWQgdnBkIGluIGEgZGV2aWNlIGRpcmVjdG9yeSB3aWxsIGJlIGEKKwkJYmluYXJ5IGZpbGUgY29udGFpbmluZyB0aGUgVml0YWwgUHJvZHVjdCBEYXRhIGZvciB0aGUKKwkJZGV2aWNlLiAgSXQgc2hvdWxkIGZvbGxvdyB0aGUgVlBEIGZvcm1hdCBkZWZpbmVkIGluCisJCVBDSSBTcGVjaWZpY2F0aW9uIDIuMSBvciAyLjIsIGJ1dCB1c2VycyBzaG91bGQgY29uc2lkZXIKKwkJdGhhdCBzb21lIGRldmljZXMgbWF5IGhhdmUgbWFsZm9ybWF0dGVkIGRhdGEuICBJZiB0aGUKKwkJdW5kZXJseWluZyBWUEQgaGFzIGEgd3JpdGFibGUgc2VjdGlvbiB0aGVuIHRoZQorCQljb3JyZXNwb25kaW5nIHNlY3Rpb24gb2YgdGhpcyBmaWxlIHdpbGwgYmUgd3JpdGFibGUuCisKK1doYXQ6CQkvc3lzL2J1cy9wY2kvZGV2aWNlcy8uLi4vdmlydGZuTgorRGF0ZToJCU1hcmNoIDIwMDkKK0NvbnRhY3Q6CVl1IFpoYW8gPHl1LnpoYW9AaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoaXMgc3ltYm9saWMgbGluayBhcHBlYXJzIHdoZW4gaGFyZHdhcmUgc3VwcG9ydHMgdGhlIFNSLUlPVgorCQljYXBhYmlsaXR5IGFuZCB0aGUgUGh5c2ljYWwgRnVuY3Rpb24gZHJpdmVyIGhhcyBlbmFibGVkIGl0LgorCQlUaGUgc3ltYm9saWMgbGluayBwb2ludHMgdG8gdGhlIFBDSSBkZXZpY2Ugc3lzZnMgZW50cnkgb2YgdGhlCisJCVZpcnR1YWwgRnVuY3Rpb24gd2hvc2UgaW5kZXggaXMgTiAoMC4uLk1heFZGcy0xKS4KKworV2hhdDoJCS9zeXMvYnVzL3BjaS9kZXZpY2VzLy4uLi9kZXBfbGluaworRGF0ZToJCU1hcmNoIDIwMDkKK0NvbnRhY3Q6CVl1IFpoYW8gPHl1LnpoYW9AaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoaXMgc3ltYm9saWMgbGluayBhcHBlYXJzIHdoZW4gaGFyZHdhcmUgc3VwcG9ydHMgdGhlIFNSLUlPVgorCQljYXBhYmlsaXR5IGFuZCB0aGUgUGh5c2ljYWwgRnVuY3Rpb24gZHJpdmVyIGhhcyBlbmFibGVkIGl0LAorCQlhbmQgdGhpcyBkZXZpY2UgaGFzIHZlbmRvciBzcGVjaWZpYyBkZXBlbmRlbmNpZXMgd2l0aCBvdGhlcnMuCisJCVRoZSBzeW1ib2xpYyBsaW5rIHBvaW50cyB0byB0aGUgUENJIGRldmljZSBzeXNmcyBlbnRyeSBvZgorCQlQaHlzaWNhbCBGdW5jdGlvbiB0aGlzIGRldmljZSBkZXBlbmRzIG9uLgorCitXaGF0OgkJL3N5cy9idXMvcGNpL2RldmljZXMvLi4uL3BoeXNmbgorRGF0ZToJCU1hcmNoIDIwMDkKK0NvbnRhY3Q6CVl1IFpoYW8gPHl1LnpoYW9AaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoaXMgc3ltYm9saWMgbGluayBhcHBlYXJzIHdoZW4gYSBkZXZpY2UgaXMgYSBWaXJ0dWFsIEZ1bmN0aW9uLgorCQlUaGUgc3ltYm9saWMgbGluayBwb2ludHMgdG8gdGhlIFBDSSBkZXZpY2Ugc3lzZnMgZW50cnkgb2YgdGhlCisJCVBoeXNpY2FsIEZ1bmN0aW9uIHRoaXMgZGV2aWNlIGFzc29jaWF0ZXMgd2l0aC4KKworV2hhdDoJCS9zeXMvYnVzL3BjaS9zbG90cy8uLi4vbW9kdWxlCitEYXRlOgkJSnVuZSAyMDA5CitDb250YWN0OglsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJVGhpcyBzeW1ib2xpYyBsaW5rIHBvaW50cyB0byB0aGUgUENJIGhvdHBsdWcgY29udHJvbGxlciBkcml2ZXIKKwkJbW9kdWxlIHRoYXQgbWFuYWdlcyB0aGUgaG90cGx1ZyBzbG90LgorCitXaGF0OgkJL3N5cy9idXMvcGNpL2RldmljZXMvLi4uL2xhYmVsCitEYXRlOgkJSnVseSAyMDEwCitDb250YWN0OglOYXJlbmRyYSBLIDxuYXJlbmRyYV9rQGRlbGwuY29tPiwgbGludXgtYnVnc0BkZWxsLmNvbQorRGVzY3JpcHRpb246CisJCVJlYWRpbmcgdGhpcyBhdHRyaWJ1dGUgd2lsbCBwcm92aWRlIHRoZSBmaXJtd2FyZQorCQlnaXZlbiBuYW1lIChTTUJJT1MgdHlwZSA0MSBzdHJpbmcgb3IgQUNQSSBfRFNNIHN0cmluZykgb2YKKwkJdGhlIFBDSSBkZXZpY2UuCVRoZSBhdHRyaWJ1dGUgd2lsbCBiZSBjcmVhdGVkIG9ubHkKKwkJaWYgdGhlIGZpcm13YXJlCWhhcyBnaXZlbiBhIG5hbWUgdG8gdGhlIFBDSSBkZXZpY2UuCisJCUFDUEkgX0RTTSBzdHJpbmcgbmFtZSB3aWxsIGJlIGdpdmVuIHByaW9yaXR5IGlmIHRoZQorCQlzeXN0ZW0gZmlybXdhcmUgcHJvdmlkZXMgU01CSU9TIHR5cGUgNDEgc3RyaW5nIGFsc28uCitVc2VyczoKKwkJVXNlcnNwYWNlIGFwcGxpY2F0aW9ucyBpbnRlcmVzdGVkIGluIGtub3dpbmcgdGhlCisJCWZpcm13YXJlIGFzc2lnbmVkIG5hbWUgb2YgdGhlIFBDSSBkZXZpY2UuCisKK1doYXQ6CQkvc3lzL2J1cy9wY2kvZGV2aWNlcy8uLi4vaW5kZXgKK0RhdGU6CQlKdWx5IDIwMTAKK0NvbnRhY3Q6CU5hcmVuZHJhIEsgPG5hcmVuZHJhX2tAZGVsbC5jb20+LCBsaW51eC1idWdzQGRlbGwuY29tCitEZXNjcmlwdGlvbjoKKwkJUmVhZGluZyB0aGlzIGF0dHJpYnV0ZSB3aWxsIHByb3ZpZGUgdGhlIGZpcm13YXJlCisJCWdpdmVuIGluc3RhbmNlIChTTUJJT1MgdHlwZSA0MSBkZXZpY2UgdHlwZSBpbnN0YW5jZSkgb2YgdGhlCisJCVBDSSBkZXZpY2UuIFRoZSBhdHRyaWJ1dGUgd2lsbCBiZSBjcmVhdGVkIG9ubHkgaWYgdGhlIGZpcm13YXJlCisJCWhhcyBnaXZlbiBhbiBpbnN0YW5jZSBudW1iZXIgdG8gdGhlIFBDSSBkZXZpY2UuCitVc2VyczoKKwkJVXNlcnNwYWNlIGFwcGxpY2F0aW9ucyBpbnRlcmVzdGVkIGluIGtub3dpbmcgdGhlCisJCWZpcm13YXJlIGFzc2lnbmVkIGRldmljZSB0eXBlIGluc3RhbmNlIG9mIHRoZSBQQ0kKKwkJZGV2aWNlIHRoYXQgY2FuIGhlbHAgaW4gdW5kZXJzdGFuZGluZyB0aGUgZmlybXdhcmUKKwkJaW50ZW5kZWQgb3JkZXIgb2YgdGhlIFBDSSBkZXZpY2UuCisKK1doYXQ6CQkvc3lzL2J1cy9wY2kvZGV2aWNlcy8uLi4vYWNwaV9pbmRleAorRGF0ZToJCUp1bHkgMjAxMAorQ29udGFjdDoJTmFyZW5kcmEgSyA8bmFyZW5kcmFfa0BkZWxsLmNvbT4sIGxpbnV4LWJ1Z3NAZGVsbC5jb20KK0Rlc2NyaXB0aW9uOgorCQlSZWFkaW5nIHRoaXMgYXR0cmlidXRlIHdpbGwgcHJvdmlkZSB0aGUgZmlybXdhcmUKKwkJZ2l2ZW4gaW5zdGFuY2UgKEFDUEkgX0RTTSBpbnN0YW5jZSBudW1iZXIpIG9mIHRoZSBQQ0kgZGV2aWNlLgorCQlUaGUgYXR0cmlidXRlIHdpbGwgYmUgY3JlYXRlZCBvbmx5IGlmIHRoZSBmaXJtd2FyZSBoYXMgZ2l2ZW4KKwkJYW4gaW5zdGFuY2UgbnVtYmVyIHRvIHRoZSBQQ0kgZGV2aWNlLiBBQ1BJIF9EU00gaW5zdGFuY2UgbnVtYmVyCisJCXdpbGwgYmUgZ2l2ZW4gcHJpb3JpdHkgaWYgdGhlIHN5c3RlbSBmaXJtd2FyZSBwcm92aWRlcyBTTUJJT1MKKwkJdHlwZSA0MSBkZXZpY2UgdHlwZSBpbnN0YW5jZSBhbHNvLgorVXNlcnM6CisJCVVzZXJzcGFjZSBhcHBsaWNhdGlvbnMgaW50ZXJlc3RlZCBpbiBrbm93aW5nIHRoZQorCQlmaXJtd2FyZSBhc3NpZ25lZCBpbnN0YW5jZSBudW1iZXIgb2YgdGhlIFBDSQorCQlkZXZpY2UgdGhhdCBjYW4gaGVscCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBmaXJtd2FyZQorCQlpbnRlbmRlZCBvcmRlciBvZiB0aGUgUENJIGRldmljZS4KKworV2hhdDoJCS9zeXMvYnVzL3BjaS9kZXZpY2VzLy4uLi9kM2NvbGRfYWxsb3dlZAorRGF0ZToJCUp1bHkgMjAxMgorQ29udGFjdDoJSHVhbmcgWWluZyA8eWluZy5odWFuZ0BpbnRlbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJZDNjb2xkX2FsbG93ZWQgaXMgYml0IHRvIGNvbnRyb2wgd2hldGhlciB0aGUgY29ycmVzcG9uZGluZyBQQ0kKKwkJZGV2aWNlIGNhbiBiZSBwdXQgaW50byBEM0NvbGQgc3RhdGUuICBJZiBpdCBpcyBjbGVhcmVkLCB0aGUKKwkJZGV2aWNlIHdpbGwgbmV2ZXIgYmUgcHV0IGludG8gRDNDb2xkIHN0YXRlLiAgSWYgaXQgaXMgc2V0LCB0aGUKKwkJZGV2aWNlIG1heSBiZSBwdXQgaW50byBEM0NvbGQgc3RhdGUgaWYgb3RoZXIgcmVxdWlyZW1lbnRzIGFyZQorCQlzYXRpc2ZpZWQgdG9vLiAgUmVhZGluZyB0aGlzIGF0dHJpYnV0ZSB3aWxsIHNob3cgdGhlIGN1cnJlbnQKKwkJdmFsdWUgb2YgZDNjb2xkX2FsbG93ZWQgYml0LiAgV3JpdGluZyB0aGlzIGF0dHJpYnV0ZSB3aWxsIHNldAorCQl0aGUgdmFsdWUgb2YgZDNjb2xkX2FsbG93ZWQgYml0LgorCitXaGF0OgkJL3N5cy9idXMvcGNpL2RldmljZXMvLi4uL3NyaW92X3RvdGFsdmZzCitEYXRlOgkJTm92ZW1iZXIgMjAxMgorQ29udGFjdDoJRG9uYWxkIER1dGlsZSA8ZGR1dGlsZUByZWRoYXQuY29tPgorRGVzY3JpcHRpb246CisJCVRoaXMgZmlsZSBhcHBlYXJzIHdoZW4gYSBwaHlzaWNhbCBQQ0llIGRldmljZSBzdXBwb3J0cyBTUi1JT1YuCisJCVVzZXJzcGFjZSBhcHBsaWNhdGlvbnMgY2FuIHJlYWQgdGhpcyBmaWxlIHRvIGRldGVybWluZSB0aGUKKwkJbWF4aW11bSBudW1iZXIgb2YgVmlydHVhbCBGdW5jdGlvbnMgKFZGcykgYSBQQ0llIHBoeXNpY2FsCisJCWZ1bmN0aW9uIChQRikgY2FuIHN1cHBvcnQuIFR5cGljYWxseSwgdGhpcyBpcyB0aGUgdmFsdWUgcmVwb3J0ZWQKKwkJaW4gdGhlIFBGJ3MgU1ItSU9WIGV4dGVuZGVkIGNhcGFiaWxpdHkgc3RydWN0dXJlJ3MgVG90YWxWRnMKKwkJZWxlbWVudC4gIERyaXZlcnMgaGF2ZSB0aGUgYWJpbGl0eSBhdCBwcm9iZSB0aW1lIHRvIHJlZHVjZSB0aGUKKwkJdmFsdWUgcmVhZCBmcm9tIHRoaXMgZmlsZSB2aWEgdGhlIHBjaV9zcmlvdl9zZXRfdG90YWx2ZnMoKQorCQlmdW5jdGlvbi4KKworV2hhdDoJCS9zeXMvYnVzL3BjaS9kZXZpY2VzLy4uLi9zcmlvdl9udW12ZnMKK0RhdGU6CQlOb3ZlbWJlciAyMDEyCitDb250YWN0OglEb25hbGQgRHV0aWxlIDxkZHV0aWxlQHJlZGhhdC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBmaWxlIGFwcGVhcnMgd2hlbiBhIHBoeXNpY2FsIFBDSWUgZGV2aWNlIHN1cHBvcnRzIFNSLUlPVi4KKwkJVXNlcnNwYWNlIGFwcGxpY2F0aW9ucyBjYW4gcmVhZCBhbmQgd3JpdGUgdG8gdGhpcyBmaWxlIHRvCisJCWRldGVybWluZSBhbmQgY29udHJvbCB0aGUgZW5hYmxlbWVudCBvciBkaXNhYmxlbWVudCBvZiBWaXJ0dWFsCisJCUZ1bmN0aW9ucyAoVkZzKSBvbiB0aGUgcGh5c2ljYWwgZnVuY3Rpb24gKFBGKS4gQSByZWFkIG9mIHRoaXMKKwkJZmlsZSB3aWxsIHJldHVybiB0aGUgbnVtYmVyIG9mIFZGcyB0aGF0IGFyZSBlbmFibGVkIG9uIHRoaXMgUEYuCisJCUEgbnVtYmVyIHdyaXR0ZW4gdG8gdGhpcyBmaWxlIHdpbGwgZW5hYmxlIHRoZSBzcGVjaWZpZWQKKwkJbnVtYmVyIG9mIFZGcy4gQSB1c2Vyc3BhY2UgYXBwbGljYXRpb24gd291bGQgdHlwaWNhbGx5IHJlYWQgdGhlCisJCWZpbGUgYW5kIGNoZWNrIHRoYXQgdGhlIHZhbHVlIGlzIHplcm8sIGFuZCB0aGVuIHdyaXRlIHRoZSBudW1iZXIKKwkJb2YgVkZzIHRoYXQgc2hvdWxkIGJlIGVuYWJsZWQgb24gdGhlIFBGOyB0aGUgdmFsdWUgd3JpdHRlbgorCQlzaG91bGQgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSBpbiB0aGUgc3Jpb3ZfdG90YWx2ZnMKKwkJZmlsZS4gQSB1c2Vyc3BhY2UgYXBwbGljYXRpb24gd2FudGluZyB0byBkaXNhYmxlIHRoZSBWRnMgd291bGQKKwkJd3JpdGUgYSB6ZXJvIHRvIHRoaXMgZmlsZS4gVGhlIGNvcmUgZW5zdXJlcyB0aGF0IHZhbGlkIHZhbHVlcworCQlhcmUgd3JpdHRlbiB0byB0aGlzIGZpbGUsIGFuZCByZXR1cm5zIGVycm9ycyB3aGVuIHZhbHVlcyBhcmUgbm90CisJCXZhbGlkLiAgRm9yIGV4YW1wbGUsIHdyaXRpbmcgYSAyIHRvIHRoaXMgZmlsZSB3aGVuIHNyaW92X251bXZmcworCQlpcyBub3QgMCBhbmQgbm90IDIgYWxyZWFkeSB3aWxsIHJldHVybiBhbiBlcnJvci4gV3JpdGluZyBhIDEwCisJCXdoZW4gdGhlIHZhbHVlIG9mIHNyaW92X3RvdGFsdmZzIGlzIDggd2lsbCByZXR1cm4gYW4gZXJyb3IuCisKK1doYXQ6CQkvc3lzL2J1cy9wY2kvZGV2aWNlcy8uLi4vZHJpdmVyX292ZXJyaWRlCitEYXRlOgkJQXByaWwgMjAxNAorQ29udGFjdDoJQWxleCBXaWxsaWFtc29uIDxhbGV4LndpbGxpYW1zb25AcmVkaGF0LmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGZpbGUgYWxsb3dzIHRoZSBkcml2ZXIgZm9yIGEgZGV2aWNlIHRvIGJlIHNwZWNpZmllZCB3aGljaAorCQl3aWxsIG92ZXJyaWRlIHN0YW5kYXJkIHN0YXRpYyBhbmQgZHluYW1pYyBJRCBtYXRjaGluZy4gIFdoZW4KKwkJc3BlY2lmaWVkLCBvbmx5IGEgZHJpdmVyIHdpdGggYSBuYW1lIG1hdGNoaW5nIHRoZSB2YWx1ZSB3cml0dGVuCisJCXRvIGRyaXZlcl9vdmVycmlkZSB3aWxsIGhhdmUgYW4gb3Bwb3J0dW5pdHkgdG8gYmluZCB0byB0aGUKKwkJZGV2aWNlLiAgVGhlIG92ZXJyaWRlIGlzIHNwZWNpZmllZCBieSB3cml0aW5nIGEgc3RyaW5nIHRvIHRoZQorCQlkcml2ZXJfb3ZlcnJpZGUgZmlsZSAoZWNobyBwY2ktc3R1YiA+IGRyaXZlcl9vdmVycmlkZSkgYW5kCisJCW1heSBiZSBjbGVhcmVkIHdpdGggYW4gZW1wdHkgc3RyaW5nIChlY2hvID4gZHJpdmVyX292ZXJyaWRlKS4KKwkJVGhpcyByZXR1cm5zIHRoZSBkZXZpY2UgdG8gc3RhbmRhcmQgbWF0Y2hpbmcgcnVsZXMgYmluZGluZy4KKwkJV3JpdGluZyB0byBkcml2ZXJfb3ZlcnJpZGUgZG9lcyBub3QgYXV0b21hdGljYWxseSB1bmJpbmQgdGhlCisJCWRldmljZSBmcm9tIGl0cyBjdXJyZW50IGRyaXZlciBvciBtYWtlIGFueSBhdHRlbXB0IHRvCisJCWF1dG9tYXRpY2FsbHkgbG9hZCB0aGUgc3BlY2lmaWVkIGRyaXZlci4gIElmIG5vIGRyaXZlciB3aXRoIGEKKwkJbWF0Y2hpbmcgbmFtZSBpcyBjdXJyZW50bHkgbG9hZGVkIGluIHRoZSBrZXJuZWwsIHRoZSBkZXZpY2UKKwkJd2lsbCBub3QgYmluZCB0byBhbnkgZHJpdmVyLiAgVGhpcyBhbHNvIGFsbG93cyBkZXZpY2VzIHRvCisJCW9wdC1vdXQgb2YgZHJpdmVyIGJpbmRpbmcgdXNpbmcgYSBkcml2ZXJfb3ZlcnJpZGUgbmFtZSBzdWNoIGFzCisJCSJub25lIi4gIE9ubHkgYSBzaW5nbGUgZHJpdmVyIG1heSBiZSBzcGVjaWZpZWQgaW4gdGhlIG92ZXJyaWRlLAorCQl0aGVyZSBpcyBubyBzdXBwb3J0IGZvciBwYXJzaW5nIGRlbGltaXRlcnMuCisKK1doYXQ6CQkvc3lzL2J1cy9wY2kvZGV2aWNlcy8uLi4vbnVtYV9ub2RlCitEYXRlOgkJT2N0IDIwMTQKK0NvbnRhY3Q6CVByYXJpdCBCaGFyZ2F2YSA8cHJhcml0QHJlZGhhdC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBOVU1BIG5vZGUgdG8gd2hpY2ggdGhlIFBDSSBkZXZpY2UgaXMKKwkJYXR0YWNoZWQsIG9yIC0xIGlmIHRoZSBub2RlIGlzIHVua25vd24uICBUaGUgaW5pdGlhbCB2YWx1ZQorCQljb21lcyBmcm9tIGFuIEFDUEkgX1BYTSBtZXRob2Qgb3IgYSBzaW1pbGFyIGZpcm13YXJlCisJCXNvdXJjZS4gIElmIHRoYXQgaXMgbWlzc2luZyBvciBpbmNvcnJlY3QsIHRoaXMgZmlsZSBjYW4gYmUKKwkJd3JpdHRlbiB0byBvdmVycmlkZSB0aGUgbm9kZS4gIEluIHRoYXQgY2FzZSwgcGxlYXNlIHJlcG9ydAorCQlhIGZpcm13YXJlIGJ1ZyB0byB0aGUgc3lzdGVtIHZlbmRvci4gIFdyaXRpbmcgdG8gdGhpcyBmaWxlCisJCXRhaW50cyB0aGUga2VybmVsIHdpdGggVEFJTlRfRklSTVdBUkVfV09SS0FST1VORCwgd2hpY2gKKwkJcmVkdWNlcyB0aGUgc3VwcG9ydGFiaWxpdHkgb2YgeW91ciBzeXN0ZW0uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1wY2ktZGV2aWNlcy1jY2lzcyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXBjaS1kZXZpY2VzLWNjaXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzZDk5ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1wY2ktZGV2aWNlcy1jY2lzcwpAQCAtMCwwICsxLDgwIEBACitXaGVyZToJCS9zeXMvYnVzL3BjaS9kZXZpY2VzLzxkZXY+L2NjaXNzWC9jWGRZL21vZGVsCitEYXRlOgkJTWFyY2ggMjAwOQorS2VybmVsIFZlcnNpb246IDIuNi4zMAorQ29udGFjdDoJaXNzX3N0b3JhZ2VkZXZAaHAuY29tCitEZXNjcmlwdGlvbjoJRGlzcGxheXMgdGhlIFNDU0kgSU5RVUlSWSBwYWdlIDAgbW9kZWwgZm9yIGxvZ2ljYWwgZHJpdmUKKwkJWSBvZiBjb250cm9sbGVyIFguCisKK1doZXJlOgkJL3N5cy9idXMvcGNpL2RldmljZXMvPGRldj4vY2Npc3NYL2NYZFkvcmV2CitEYXRlOgkJTWFyY2ggMjAwOQorS2VybmVsIFZlcnNpb246IDIuNi4zMAorQ29udGFjdDoJaXNzX3N0b3JhZ2VkZXZAaHAuY29tCitEZXNjcmlwdGlvbjoJRGlzcGxheXMgdGhlIFNDU0kgSU5RVUlSWSBwYWdlIDAgcmV2aXNpb24gZm9yIGxvZ2ljYWwKKwkJZHJpdmUgWSBvZiBjb250cm9sbGVyIFguCisKK1doZXJlOgkJL3N5cy9idXMvcGNpL2RldmljZXMvPGRldj4vY2Npc3NYL2NYZFkvdW5pcXVlX2lkCitEYXRlOgkJTWFyY2ggMjAwOQorS2VybmVsIFZlcnNpb246IDIuNi4zMAorQ29udGFjdDoJaXNzX3N0b3JhZ2VkZXZAaHAuY29tCitEZXNjcmlwdGlvbjoJRGlzcGxheXMgdGhlIFNDU0kgSU5RVUlSWSBwYWdlIDgzIHNlcmlhbCBudW1iZXIgZm9yIGxvZ2ljYWwKKwkJZHJpdmUgWSBvZiBjb250cm9sbGVyIFguCisKK1doZXJlOgkJL3N5cy9idXMvcGNpL2RldmljZXMvPGRldj4vY2Npc3NYL2NYZFkvdmVuZG9yCitEYXRlOgkJTWFyY2ggMjAwOQorS2VybmVsIFZlcnNpb246IDIuNi4zMAorQ29udGFjdDoJaXNzX3N0b3JhZ2VkZXZAaHAuY29tCitEZXNjcmlwdGlvbjoJRGlzcGxheXMgdGhlIFNDU0kgSU5RVUlSWSBwYWdlIDAgdmVuZG9yIGZvciBsb2dpY2FsIGRyaXZlCisJCVkgb2YgY29udHJvbGxlciBYLgorCitXaGVyZToJCS9zeXMvYnVzL3BjaS9kZXZpY2VzLzxkZXY+L2NjaXNzWC9jWGRZL2Jsb2NrOmNjaXNzIWNYZFkKK0RhdGU6CQlNYXJjaCAyMDA5CitLZXJuZWwgVmVyc2lvbjogMi42LjMwCitDb250YWN0Oglpc3Nfc3RvcmFnZWRldkBocC5jb20KK0Rlc2NyaXB0aW9uOglBIHN5bWJvbGljIGxpbmsgdG8gL3N5cy9ibG9jay9jY2lzcyFjWGRZCisKK1doZXJlOgkJL3N5cy9idXMvcGNpL2RldmljZXMvPGRldj4vY2Npc3NYL3Jlc2NhbgorRGF0ZToJCUF1Z3VzdCAyMDA5CitLZXJuZWwgVmVyc2lvbjoJMi42LjMxCitDb250YWN0Oglpc3Nfc3RvcmFnZWRldkBocC5jb20KK0Rlc2NyaXB0aW9uOglLaWNrcyBvZiBhIHJlc2NhbiBvZiB0aGUgY29udHJvbGxlciB0byBkaXNjb3ZlciBsb2dpY2FsCisJCWRyaXZlIHRvcG9sb2d5IGNoYW5nZXMuCisKK1doZXJlOgkJL3N5cy9idXMvcGNpL2RldmljZXMvPGRldj4vY2Npc3NYL2NYZFkvbHVuaWQKK0RhdGU6CQlBdWd1c3QgMjAwOQorS2VybmVsIFZlcnNpb246IDIuNi4zMQorQ29udGFjdDoJaXNzX3N0b3JhZ2VkZXZAaHAuY29tCitEZXNjcmlwdGlvbjoJRGlzcGxheXMgdGhlIDgtYnl0ZSBMVU4gSUQgdXNlZCB0byBhZGRyZXNzIGxvZ2ljYWwKKwkJZHJpdmUgWSBvZiBjb250cm9sbGVyIFguCisKK1doZXJlOgkJL3N5cy9idXMvcGNpL2RldmljZXMvPGRldj4vY2Npc3NYL2NYZFkvcmFpZF9sZXZlbAorRGF0ZToJCUF1Z3VzdCAyMDA5CitLZXJuZWwgVmVyc2lvbjogMi42LjMxCitDb250YWN0Oglpc3Nfc3RvcmFnZWRldkBocC5jb20KK0Rlc2NyaXB0aW9uOglEaXNwbGF5cyB0aGUgUkFJRCBsZXZlbCBvZiBsb2dpY2FsIGRyaXZlIFkgb2YKKwkJY29udHJvbGxlciBYLgorCitXaGVyZToJCS9zeXMvYnVzL3BjaS9kZXZpY2VzLzxkZXY+L2NjaXNzWC9jWGRZL3VzYWdlX2NvdW50CitEYXRlOgkJQXVndXN0IDIwMDkKK0tlcm5lbCBWZXJzaW9uOiAyLjYuMzEKK0NvbnRhY3Q6CWlzc19zdG9yYWdlZGV2QGhwLmNvbQorRGVzY3JpcHRpb246CURpc3BsYXlzIHRoZSB1c2FnZSBjb3VudCAobnVtYmVyIG9mIG9wZW5zKSBvZiBsb2dpY2FsIGRyaXZlIFkKKwkJb2YgY29udHJvbGxlciBYLgorCitXaGVyZToJCS9zeXMvYnVzL3BjaS9kZXZpY2VzLzxkZXY+L2NjaXNzWC9yZXNldHRhYmxlCitEYXRlOgkJRmVicnVhcnkgMjAxMQorS2VybmVsIFZlcnNpb246CTIuNi4zOAorQ29udGFjdDoJaXNzX3N0b3JhZ2VkZXZAaHAuY29tCitEZXNjcmlwdGlvbjoJVmFsdWUgb2YgMSBpbmRpY2F0ZXMgdGhlIGNvbnRyb2xsZXIgY2FuIGhvbm9yIHRoZSByZXNldF9kZXZpY2VzCisJCWtlcm5lbCBwYXJhbWV0ZXIuICBWYWx1ZSBvZiAwIGluZGljYXRlcyByZXNldF9kZXZpY2VzIGNhbm5vdCBiZQorCQlob25vcmVkLiAgVGhpcyBpcyB0byBhbGxvdywgZm9yIGV4YW1wbGUsIGtleGVjIHRvb2xzIHRvIGJlIGFibGUKKwkJdG8gd2FybiB0aGUgdXNlciBpZiB0aGV5IGRlc2lnbmF0ZSBhbiB1bnJlc2V0dGFibGUgZGV2aWNlIGFzCisJCWEgZHVtcCBkZXZpY2UsIGFzIGtkdW1wIHJlcXVpcmVzIHJlc2V0dGluZyB0aGUgZGV2aWNlIGluIG9yZGVyCisJCXRvIHdvcmsgcmVsaWFibHkuCisKK1doZXJlOgkJL3N5cy9idXMvcGNpL2RldmljZXMvPGRldj4vY2Npc3NYL3RyYW5zcG9ydF9tb2RlCitEYXRlOgkJSnVseSAyMDExCitLZXJuZWwgVmVyc2lvbjoJMy4wCitDb250YWN0Oglpc3Nfc3RvcmFnZWRldkBocC5jb20KK0Rlc2NyaXB0aW9uOglWYWx1ZSBvZiAic2ltcGxlIiBpbmRpY2F0ZXMgdGhhdCB0aGUgY29udHJvbGxlciBoYXMgYmVlbiBwbGFjZWQKKwkJaW4gInNpbXBsZSBtb2RlIi4gVmFsdWUgb2YgInBlcmZvcm1hbnQiIGluZGljYXRlcyB0aGF0IHRoZQorCQljb250cm9sbGVyIGhhcyBiZWVuIHBsYWNlZCBpbiAicGVyZm9ybWFudCBtb2RlIi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXBjaS1kcml2ZXJzLWVoY2lfaGNkIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtcGNpLWRyaXZlcnMtZWhjaV9oY2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBjNjBmYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXBjaS1kcml2ZXJzLWVoY2lfaGNkCkBAIC0wLDAgKzEsNDYgQEAKK1doYXQ6CQkvc3lzL2J1cy9wY2kvZHJpdmVycy9laGNpX2hjZC8uLi4vY29tcGFuaW9uCisJCS9zeXMvYnVzL3VzYi9kZXZpY2VzL3VzYk4vLi4vY29tcGFuaW9uCitEYXRlOgkJSmFudWFyeSAyMDA3CitLZXJuZWxWZXJzaW9uOgkyLjYuMjEKK0NvbnRhY3Q6CUFsYW4gU3Rlcm4gPHN0ZXJuQHJvd2xhbmQuaGFydmFyZC5lZHU+CitEZXNjcmlwdGlvbjoKKwkJUENJLWJhc2VkIEVIQ0kgVVNCIGNvbnRyb2xsZXJzIChpLmUuLCBoaWdoLXNwZWVkIFVTQi0yLjAKKwkJY29udHJvbGxlcnMpIGFyZSBvZnRlbiBpbXBsZW1lbnRlZCBhbG9uZyB3aXRoIGEgc2V0IG9mCisJCSJjb21wYW5pb24iIGZ1bGwvbG93LXNwZWVkIFVTQi0xLjEgY29udHJvbGxlcnMuICBXaGVuIGEKKwkJaGlnaC1zcGVlZCBkZXZpY2UgaXMgcGx1Z2dlZCBpbiwgdGhlIGNvbm5lY3Rpb24gaXMgcm91dGVkCisJCXRvIHRoZSBFSENJIGNvbnRyb2xsZXI7IHdoZW4gYSBmdWxsLSBvciBsb3ctc3BlZWQgZGV2aWNlCisJCWlzIHBsdWdnZWQgaW4sIHRoZSBjb25uZWN0aW9uIGlzIHJvdXRlZCB0byB0aGUgY29tcGFuaW9uCisJCWNvbnRyb2xsZXIuCisKKwkJU29tZXRpbWVzIHlvdSB3YW50IHRvIGZvcmNlIGEgaGlnaC1zcGVlZCBkZXZpY2UgdG8gY29ubmVjdAorCQlhdCBmdWxsIHNwZWVkLCB3aGljaCBjYW4gYmUgYWNjb21wbGlzaGVkIGJ5IGZvcmNpbmcgdGhlCisJCWNvbm5lY3Rpb24gdG8gYmUgcm91dGVkIHRvIHRoZSBjb21wYW5pb24gY29udHJvbGxlci4KKwkJVGhhdCdzIHdoYXQgdGhpcyBmaWxlIGRvZXMuICBXcml0aW5nIGEgcG9ydCBudW1iZXIgdG8gdGhlCisJCWZpbGUgY2F1c2VzIGNvbm5lY3Rpb25zIG9uIHRoYXQgcG9ydCB0byBiZSByb3V0ZWQgdG8gdGhlCisJCWNvbXBhbmlvbiBjb250cm9sbGVyLCBhbmQgd3JpdGluZyB0aGUgbmVnYXRpdmUgb2YgYSBwb3J0CisJCW51bWJlciByZXR1cm5zIHRoZSBwb3J0IHRvIG5vcm1hbCBvcGVyYXRpb24uCisKKwkJRm9yIGV4YW1wbGU6IFRvIGZvcmNlIHRoZSBoaWdoLXNwZWVkIGRldmljZSBhdHRhY2hlZCB0bworCQlwb3J0IDQgb24gYnVzIDIgdG8gcnVuIGF0IGZ1bGwgc3BlZWQ6CisKKwkJCWVjaG8gNCA+L3N5cy9idXMvdXNiL2RldmljZXMvdXNiMi8uLi9jb21wYW5pb24KKworCQlUbyByZXR1cm4gdGhlIHBvcnQgdG8gaGlnaC1zcGVlZCBvcGVyYXRpb246CisKKwkJCWVjaG8gLTQgPi9zeXMvYnVzL3VzYi9kZXZpY2VzL3VzYjIvLi4vY29tcGFuaW9uCisKKwkJUmVhZGluZyB0aGUgZmlsZSBnaXZlcyB0aGUgbGlzdCBvZiBwb3J0cyBjdXJyZW50bHkgZm9yY2VkCisJCXRvIHRoZSBjb21wYW5pb24gY29udHJvbGxlci4KKworCQlOb3RlOiBTb21lIEVIQ0kgY29udHJvbGxlcnMgZG8gbm90IGhhdmUgY29tcGFuaW9uczsgdGhleQorCQltYXkgY29udGFpbiBhbiBpbnRlcm5hbCAidHJhbnNhY3Rpb24gdHJhbnNsYXRvciIgb3IgdGhleQorCQltYXkgYmUgYXR0YWNoZWQgZGlyZWN0bHkgdG8gYSAicmF0ZS1tYXRjaGluZyBodWIiLiAgVGhpcworCQltZWNoYW5pc20gd2lsbCBub3Qgd29yayB3aXRoIHN1Y2ggY29udHJvbGxlcnMuICBBbHNvLCBpdAorCQljYW5ub3QgYmUgdXNlZCB0byBmb3JjZSBhIHBvcnQgb24gYSBoaWdoLXNwZWVkIGh1YiB0bworCQljb25uZWN0IGF0IGZ1bGwgc3BlZWQuCisKKwkJTm90ZTogV2hlbiB0aGlzIGZpbGUgd2FzIGZpcnN0IGFkZGVkLCBpdCBhcHBlYXJlZCBpbiBhCisJCWRpZmZlcmVudCBzeXNmcyBkaXJlY3RvcnkuICBUaGUgbG9jYXRpb24gZ2l2ZW4gYWJvdmUgaXMKKwkJY29ycmVjdCBmb3IgMi42LjM1IChhbmQgcHJvYmFibHkgc2V2ZXJhbCBlYXJsaWVyIGtlcm5lbAorCQl2ZXJzaW9ucyBhcyB3ZWxsKS4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtcGNpLWRyaXZlcnMtamFuei1jbW9kaW8gYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1wY2ktZHJpdmVycy1qYW56LWNtb2RpbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDA4ZjI4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtcGNpLWRyaXZlcnMtamFuei1jbW9kaW8KQEAgLTAsMCArMSw4IEBACitXaGF0OgkJL3N5cy9idXMvcGNpL2RyaXZlcnMvamFuei1jbW9kaW8vLi4uL21vZHVsYnVzX251bWJlcgorRGF0ZToJCU1heSAyMDEwCitLZXJuZWxWZXJzaW9uOgkyLjYuMzUKK0NvbnRhY3Q6CUlyYSBXLiBTbnlkZXIgPGlyYS5zbnlkZXJAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVZhbHVlIHJlcHJlc2VudGluZyB0aGUgSEVYIHN3aXRjaCBTMiBvZiB0aGUgamFueiBjYXJyaWVyIGJvYXJkIENNT0QtSU8gb3IgQ0FOLVBDSTIKKworCQlSZWFkLW9ubHk6IHZhbHVlIG9mIHRoZSBjb25maWd1cmF0aW9uIHN3aXRjaCAoMC4uMTUpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1wbGF0Zm9ybSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXBsYXRmb3JtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNzJhNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1wbGF0Zm9ybQpAQCAtMCwwICsxLDIwIEBACitXaGF0OgkJL3N5cy9idXMvcGxhdGZvcm0vZGV2aWNlcy8uLi4vZHJpdmVyX292ZXJyaWRlCitEYXRlOgkJQXByaWwgMjAxNAorQ29udGFjdDoJS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGZpbGUgYWxsb3dzIHRoZSBkcml2ZXIgZm9yIGEgZGV2aWNlIHRvIGJlIHNwZWNpZmllZCB3aGljaAorCQl3aWxsIG92ZXJyaWRlIHN0YW5kYXJkIE9GLCBBQ1BJLCBJRCB0YWJsZSwgYW5kIG5hbWUgbWF0Y2hpbmcuCisJCVdoZW4gc3BlY2lmaWVkLCBvbmx5IGEgZHJpdmVyIHdpdGggYSBuYW1lIG1hdGNoaW5nIHRoZSB2YWx1ZQorCQl3cml0dGVuIHRvIGRyaXZlcl9vdmVycmlkZSB3aWxsIGhhdmUgYW4gb3Bwb3J0dW5pdHkgdG8gYmluZAorCQl0byB0aGUgZGV2aWNlLiAgVGhlIG92ZXJyaWRlIGlzIHNwZWNpZmllZCBieSB3cml0aW5nIGEgc3RyaW5nCisJCXRvIHRoZSBkcml2ZXJfb3ZlcnJpZGUgZmlsZSAoZWNobyB2ZmlvLXBsYXRmb3JtID4gXAorCQlkcml2ZXJfb3ZlcnJpZGUpIGFuZCBtYXkgYmUgY2xlYXJlZCB3aXRoIGFuIGVtcHR5IHN0cmluZworCQkoZWNobyA+IGRyaXZlcl9vdmVycmlkZSkuICBUaGlzIHJldHVybnMgdGhlIGRldmljZSB0byBzdGFuZGFyZAorCQltYXRjaGluZyBydWxlcyBiaW5kaW5nLiAgV3JpdGluZyB0byBkcml2ZXJfb3ZlcnJpZGUgZG9lcyBub3QKKwkJYXV0b21hdGljYWxseSB1bmJpbmQgdGhlIGRldmljZSBmcm9tIGl0cyBjdXJyZW50IGRyaXZlciBvciBtYWtlCisJCWFueSBhdHRlbXB0IHRvIGF1dG9tYXRpY2FsbHkgbG9hZCB0aGUgc3BlY2lmaWVkIGRyaXZlci4gIElmIG5vCisJCWRyaXZlciB3aXRoIGEgbWF0Y2hpbmcgbmFtZSBpcyBjdXJyZW50bHkgbG9hZGVkIGluIHRoZSBrZXJuZWwsCisJCXRoZSBkZXZpY2Ugd2lsbCBub3QgYmluZCB0byBhbnkgZHJpdmVyLiAgVGhpcyBhbHNvIGFsbG93cworCQlkZXZpY2VzIHRvIG9wdC1vdXQgb2YgZHJpdmVyIGJpbmRpbmcgdXNpbmcgYSBkcml2ZXJfb3ZlcnJpZGUKKwkJbmFtZSBzdWNoIGFzICJub25lIi4gIE9ubHkgYSBzaW5nbGUgZHJpdmVyIG1heSBiZSBzcGVjaWZpZWQgaW4KKwkJdGhlIG92ZXJyaWRlLCB0aGVyZSBpcyBubyBzdXBwb3J0IGZvciBwYXJzaW5nIGRlbGltaXRlcnMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1yYmQgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1yYmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRkZDY4MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXJiZApAQCAtMCwwICsxLDk4IEBACitXaGF0OgkJL3N5cy9idXMvcmJkLworRGF0ZToJCU5vdmVtYmVyIDIwMTAKK0NvbnRhY3Q6CVllaHVkYSBTYWRlaCA8eWVodWRhQG5ld2RyZWFtLm5ldD4sCisJCVNhZ2UgV2VpbCA8c2FnZUBuZXdkcmVhbS5uZXQ+CitEZXNjcmlwdGlvbjoKKworQmVpbmcgdXNlZCBmb3IgYWRkaW5nIGFuZCByZW1vdmluZyByYmQgYmxvY2sgZGV2aWNlcy4KKworVXNhZ2U6IDxtb24gaXAgYWRkcj4gPG9wdGlvbnM+IDxwb29sIG5hbWU+IDxyYmQgaW1hZ2UgbmFtZT4gW3NuYXAgbmFtZV0KKworICQgZWNobyAiMTkyLjE2OC4wLjEgbmFtZT1hZG1pbiByYmQgZm9vIiA+IC9zeXMvYnVzL3JiZC9hZGQKKworVGhlIHNuYXBzaG90IG5hbWUgY2FuIGJlICItIiBvciBvbWl0dGVkIHRvIG1hcCB0aGUgaW1hZ2UgcmVhZC93cml0ZS4gQSA8ZGV2LWlkPgord2lsbCBiZSBhc3NpZ25lZCBmb3IgYW55IHJlZ2lzdGVyZWQgYmxvY2sgZGV2aWNlLiBJZiBzbmFwc2hvdCBpcyB1c2VkLCBpdCB3aWxsCitiZSBtYXBwZWQgcmVhZC1vbmx5LgorCitSZW1vdmFsIG9mIGEgZGV2aWNlOgorCisgICQgZWNobyA8ZGV2LWlkPiA+IC9zeXMvYnVzL3JiZC9yZW1vdmUKKworV2hhdDoJCS9zeXMvYnVzL3JiZC9hZGRfc2luZ2xlX21ham9yCitEYXRlOgkJRGVjZW1iZXIgMjAxMworS2VybmVsVmVyc2lvbjoJMy4xNAorQ29udGFjdDoJU2FnZSBXZWlsIDxzYWdlQGlua3RhbmsuY29tPgorRGVzY3JpcHRpb246CUF2YWlsYWJsZSBvbmx5IGlmIHJiZCBtb2R1bGUgaXMgaW5zZXJ0ZWQgd2l0aCBzaW5nbGVfbWFqb3IKKwkJcGFyYW1ldGVyIHNldCB0byB0cnVlLgorCQlVc2FnZSBpcyB0aGUgc2FtZSBhcyBmb3IgL3N5cy9idXMvcmJkL2FkZC4gIElmIHByZXNlbnQsCisJCXNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGxhdHRlcjogYW55IGF0dGVtcHRzIHRvIHVzZQorCQkvc3lzL2J1cy9yYmQvYWRkIGlmIC9zeXMvYnVzL3JiZC9hZGRfc2luZ2xlX21ham9yIGlzCisJCWF2YWlsYWJsZSB3aWxsIGZhaWwgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnMuCisKK1doYXQ6CQkvc3lzL2J1cy9yYmQvcmVtb3ZlX3NpbmdsZV9tYWpvcgorRGF0ZToJCURlY2VtYmVyIDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTQKK0NvbnRhY3Q6CVNhZ2UgV2VpbCA8c2FnZUBpbmt0YW5rLmNvbT4KK0Rlc2NyaXB0aW9uOglBdmFpbGFibGUgb25seSBpZiByYmQgbW9kdWxlIGlzIGluc2VydGVkIHdpdGggc2luZ2xlX21ham9yCisJCXBhcmFtZXRlciBzZXQgdG8gdHJ1ZS4KKwkJVXNhZ2UgaXMgdGhlIHNhbWUgYXMgZm9yIC9zeXMvYnVzL3JiZC9yZW1vdmUuICBJZiBwcmVzZW50LAorCQlzaG91bGQgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBsYXR0ZXI6IGFueSBhdHRlbXB0cyB0byB1c2UKKwkJL3N5cy9idXMvcmJkL3JlbW92ZSBpZiAvc3lzL2J1cy9yYmQvcmVtb3ZlX3NpbmdsZV9tYWpvciBpcworCQlhdmFpbGFibGUgd2lsbCBmYWlsIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zLgorCitFbnRyaWVzIHVuZGVyIC9zeXMvYnVzL3JiZC9kZXZpY2VzLzxkZXYtaWQ+LworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xpZW50X2lkCisKKwlUaGUgY2VwaCB1bmlxdWUgY2xpZW50IGlkIHRoYXQgd2FzIGFzc2lnbmVkIGZvciB0aGlzIHNwZWNpZmljIHNlc3Npb24uCisKK2ZlYXR1cmVzCisKKwlBIGhleGFkZWNpbWFsIGVuY29kaW5nIG9mIHRoZSBmZWF0dXJlIGJpdHMgZm9yIHRoaXMgaW1hZ2UuCisKK21ham9yCisKKwlUaGUgYmxvY2sgZGV2aWNlIG1ham9yIG51bWJlci4KKworbWlub3IKKworCVRoZSBibG9jayBkZXZpY2UgbWlub3IgbnVtYmVyLiAgKERlY2VtYmVyIDIwMTMsIHNpbmNlIDMuMTQuKQorCituYW1lCisKKwlUaGUgbmFtZSBvZiB0aGUgcmJkIGltYWdlLgorCitpbWFnZV9pZAorCisJVGhlIHVuaXF1ZSBpZCBmb3IgdGhlIHJiZCBpbWFnZS4gIChGb3IgcmJkIGltYWdlIGZvcm1hdCAxCisJdGhpcyBpcyBlbXB0eS4pCisKK3Bvb2wKKworCVRoZSBuYW1lIG9mIHRoZSBzdG9yYWdlIHBvb2wgd2hlcmUgdGhpcyByYmQgaW1hZ2UgcmVzaWRlcy4KKwlBbiByYmQgaW1hZ2UgbmFtZSBpcyB1bmlxdWUgd2l0aGluIGl0cyBwb29sLgorCitwb29sX2lkCisKKwlUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByYmQgaW1hZ2UncyBwb29sLiAgVGhpcyBpcworCWEgcGVybWFuZW50IGF0dHJpYnV0ZSBvZiB0aGUgcG9vbC4gIEEgcG9vbCdzIGlkIHdpbGwgbmV2ZXIKKwljaGFuZ2UuCisKK3NpemUKKworCVRoZSBzaXplIChpbiBieXRlcykgb2YgdGhlIG1hcHBlZCBibG9jayBkZXZpY2UuCisKK3JlZnJlc2gKKworCVdyaXRpbmcgdG8gdGhpcyBmaWxlIHdpbGwgcmVyZWFkIHRoZSBpbWFnZSBoZWFkZXIgZGF0YSBhbmQgc2V0CisJYWxsIHJlbGV2YW50IGRhdGFzdHJ1Y3R1cmVzIGFjY29yZGluZ2x5LgorCitjdXJyZW50X3NuYXAKKworCVRoZSBjdXJyZW50IHNuYXBzaG90IGZvciB3aGljaCB0aGUgZGV2aWNlIGlzIG1hcHBlZC4KKworcGFyZW50CisKKwlJbmZvcm1hdGlvbiBpZGVudGlmeWluZyB0aGUgY2hhaW4gb2YgcGFyZW50IGltYWdlcyBpbiBhIGxheWVyZWQgcmJkCisJaW1hZ2UuICBFbnRyaWVzIGFyZSBzZXBhcmF0ZWQgYnkgZW1wdHkgbGluZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1ycG1zZyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXJwbXNnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4OWU0MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1ycG1zZwpAQCAtMCwwICsxLDc1IEBACitXaGF0OgkJL3N5cy9idXMvcnBtc2cvZGV2aWNlcy8uLi4vbmFtZQorRGF0ZToJCUp1bmUgMjAxMQorS2VybmVsVmVyc2lvbjoJMy4zCitDb250YWN0OglPaGFkIEJlbi1Db2hlbiA8b2hhZEB3aXplcnkuY29tPgorRGVzY3JpcHRpb246CisJCUV2ZXJ5IHJwbXNnIGRldmljZSBpcyBhIGNvbW11bmljYXRpb24gY2hhbm5lbCB3aXRoIGEgcmVtb3RlCisJCXByb2Nlc3Nvci4gQ2hhbm5lbHMgYXJlIGlkZW50aWZpZWQgd2l0aCBhICh0ZXh0dWFsKSBuYW1lLAorCQl3aGljaCBpcyBtYXhpbXVtIDMyIGJ5dGVzIGxvbmcgKGRlZmluZWQgYXMgUlBNU0dfTkFNRV9TSVpFIGluCisJCXJwbXNnLmgpLgorCisJCVRoaXMgc3lzZnMgZW50cnkgY29udGFpbnMgdGhlIG5hbWUgb2YgdGhpcyBjaGFubmVsLgorCitXaGF0OgkJL3N5cy9idXMvcnBtc2cvZGV2aWNlcy8uLi4vc3JjCitEYXRlOgkJSnVuZSAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjMKK0NvbnRhY3Q6CU9oYWQgQmVuLUNvaGVuIDxvaGFkQHdpemVyeS5jb20+CitEZXNjcmlwdGlvbjoKKwkJRXZlcnkgcnBtc2cgZGV2aWNlIGlzIGEgY29tbXVuaWNhdGlvbiBjaGFubmVsIHdpdGggYSByZW1vdGUKKwkJcHJvY2Vzc29yLiBDaGFubmVscyBoYXZlIGEgbG9jYWwgKCJzb3VyY2UiKSBycG1zZyBhZGRyZXNzLAorCQlhbmQgcmVtb3RlICgiZGVzdGluYXRpb24iKSBycG1zZyBhZGRyZXNzLiBXaGVuIGFuIGVudGl0eQorCQlzdGFydHMgbGlzdGVuaW5nIG9uIG9uZSBlbmQgb2YgYSBjaGFubmVsLCBpdCBhc3NpZ25zIGl0IHdpdGgKKwkJYSB1bmlxdWUgcnBtc2cgYWRkcmVzcyAoYSAzMiBiaXRzIGludGVnZXIpLiBUaGlzIHdheSB3aGVuCisJCWluYm91bmQgbWVzc2FnZXMgYXJyaXZlIHRvIHRoaXMgYWRkcmVzcywgdGhlIHJwbXNnIGNvcmUKKwkJZGlzcGF0Y2hlcyB0aGVtIHRvIHRoZSBsaXN0ZW5pbmcgZW50aXR5IChhIGtlcm5lbCBkcml2ZXIpLgorCisJCVRoaXMgc3lzZnMgZW50cnkgY29udGFpbnMgdGhlIHNyYyAobG9jYWwpIHJwbXNnIGFkZHJlc3MKKwkJb2YgdGhpcyBjaGFubmVsLiBJZiBpdCBjb250YWlucyAweGZmZmZmZmZmLCB0aGVuIGFuIGFkZHJlc3MKKwkJd2Fzbid0IGFzc2lnbmVkIChjYW4gaGFwcGVuIGlmIG5vIGRyaXZlciBleGlzdHMgZm9yIHRoaXMKKwkJY2hhbm5lbCkuCisKK1doYXQ6CQkvc3lzL2J1cy9ycG1zZy9kZXZpY2VzLy4uLi9kc3QKK0RhdGU6CQlKdW5lIDIwMTEKK0tlcm5lbFZlcnNpb246CTMuMworQ29udGFjdDoJT2hhZCBCZW4tQ29oZW4gPG9oYWRAd2l6ZXJ5LmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlFdmVyeSBycG1zZyBkZXZpY2UgaXMgYSBjb21tdW5pY2F0aW9uIGNoYW5uZWwgd2l0aCBhIHJlbW90ZQorCQlwcm9jZXNzb3IuIENoYW5uZWxzIGhhdmUgYSBsb2NhbCAoInNvdXJjZSIpIHJwbXNnIGFkZHJlc3MsCisJCWFuZCByZW1vdGUgKCJkZXN0aW5hdGlvbiIpIHJwbXNnIGFkZHJlc3MuIFdoZW4gYW4gZW50aXR5CisJCXN0YXJ0cyBsaXN0ZW5pbmcgb24gb25lIGVuZCBvZiBhIGNoYW5uZWwsIGl0IGFzc2lnbnMgaXQgd2l0aAorCQlhIHVuaXF1ZSBycG1zZyBhZGRyZXNzIChhIDMyIGJpdHMgaW50ZWdlcikuIFRoaXMgd2F5IHdoZW4KKwkJaW5ib3VuZCBtZXNzYWdlcyBhcnJpdmUgdG8gdGhpcyBhZGRyZXNzLCB0aGUgcnBtc2cgY29yZQorCQlkaXNwYXRjaGVzIHRoZW0gdG8gdGhlIGxpc3RlbmluZyBlbnRpdHkuCisKKwkJVGhpcyBzeXNmcyBlbnRyeSBjb250YWlucyB0aGUgZHN0IChyZW1vdGUpIHJwbXNnIGFkZHJlc3MKKwkJb2YgdGhpcyBjaGFubmVsLiBJZiBpdCBjb250YWlucyAweGZmZmZmZmZmLCB0aGVuIGFuIGFkZHJlc3MKKwkJd2Fzbid0IGFzc2lnbmVkIChjYW4gaGFwcGVuIGlmIHRoZSBrZXJuZWwgZHJpdmVyIHRoYXQKKwkJaXMgYXR0YWNoZWQgdG8gdGhpcyBjaGFubmVsIGlzIGV4cG9zaW5nIGEgc2VydmljZSB0byB0aGUKKwkJcmVtb3RlIHByb2Nlc3Nvci4gVGhpcyBtYWtlIGl0IGEgbG9jYWwgcnBtc2cgc2VydmVyLAorCQlhbmQgaXQgaXMgbGlzdGVuaW5nIGZvciBpbmJvdW5kIG1lc3NhZ2VzIHRoYXQgbWF5IGJlIHNlbnQKKwkJZnJvbSBhbnkgcmVtb3RlIHJwbXNnIGNsaWVudDsgaXQgaXMgbm90IGJvdW5kIHRvIGEgc2luZ2xlCisJCXJlbW90ZSBlbnRpdHkpLgorCitXaGF0OgkJL3N5cy9idXMvcnBtc2cvZGV2aWNlcy8uLi4vYW5ub3VuY2UKK0RhdGU6CQlKdW5lIDIwMTEKK0tlcm5lbFZlcnNpb246CTMuMworQ29udGFjdDoJT2hhZCBCZW4tQ29oZW4gPG9oYWRAd2l6ZXJ5LmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlFdmVyeSBycG1zZyBkZXZpY2UgaXMgYSBjb21tdW5pY2F0aW9uIGNoYW5uZWwgd2l0aCBhIHJlbW90ZQorCQlwcm9jZXNzb3IuIENoYW5uZWxzIGFyZSBpZGVudGlmaWVkIGJ5IGEgdGV4dHVhbCBuYW1lIChzZWUKKwkJL3N5cy9idXMvcnBtc2cvZGV2aWNlcy8uLi4vbmFtZSBhYm92ZSkgYW5kIGhhdmUgYSBsb2NhbAorCQkoInNvdXJjZSIpIHJwbXNnIGFkZHJlc3MsIGFuZCByZW1vdGUgKCJkZXN0aW5hdGlvbiIpIHJwbXNnCisJCWFkZHJlc3MuCisKKwkJQSBjaGFubmVsIGlzIGZpcnN0IGNyZWF0ZWQgd2hlbiBhbiBlbnRpdHksIHdoZXRoZXIgbG9jYWwKKwkJb3IgcmVtb3RlLCBzdGFydHMgbGlzdGVuaW5nIG9uIGl0IGZvciBtZXNzYWdlcyAoYW5kIGlzIHRodXMKKwkJY2FsbGVkIGFuIHJwbXNnIHNlcnZlcikuCisKKwkJV2hlbiB0aGF0IGhhcHBlbnMsIGEgIm5hbWUgc2VydmljZSIgYW5ub3VuY2VtZW50IGlzIHNlbnQKKwkJdG8gdGhlIG90aGVyIHByb2Nlc3NvciwgaW4gb3JkZXIgdG8gbGV0IGl0IGtub3cgYWJvdXQgdGhlCisJCWNyZWF0aW9uIG9mIHRoZSBjaGFubmVsICh0aGlzIHdheSByZW1vdGUgY2xpZW50cyBrbm93IHRoZXkKKwkJY2FuIHN0YXJ0IHNlbmRpbmcgbWVzc2FnZXMpLgorCisJCVRoaXMgc3lzZnMgZW50cnkgdGVsbHMgdXMgd2hldGhlciB0aGUgY2hhbm5lbCBpcyBhIGxvY2FsCisJCXNlcnZlciBjaGFubmVsIHRoYXQgaXMgYW5ub3VuY2VkICh2YWx1ZXMgYXJlIGVpdGhlcgorCQl0cnVlIG9yIGZhbHNlKS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXVtYyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXVtYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDhmZWM0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdW1jCkBAIC0wLDAgKzEsMjggQEAKK1doYXQ6ICAgICAgICAgICAvc3lzL2J1cy91bWMvCitEYXRlOiAgICAgICAgICAgSnVseSAyMDA4CitLZXJuZWxWZXJzaW9uOiAgMi42LjI3CitDb250YWN0OiAgICAgICAgRGF2aWQgVnJhYmVsIDxkYXZpZC52cmFiZWxAY3NyLmNvbT4KK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIFRoZSBXaXJlbGVzcyBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlIChXSENJKQorICAgICAgICAgICAgICAgIHNwZWNpZmljYXRpb24gZGVzY3JpYmVzIGEgUENJLWJhc2VkIGRldmljZSB3aXRoCisgICAgICAgICAgICAgICAgbXVsdGlwbGUgY2FwYWJpbGl0aWVzOyB0aGUgVVdCIE11bHRpLWludGVyZmFjZQorICAgICAgICAgICAgICAgIENvbnRyb2xsZXIgKFVNQykuCisKKyAgICAgICAgICAgICAgICBUaGUgdW1jIGJ1cyBwcmVzZW50cyBlYWNoIG9mIHRoZSBpbmRpdmlkdWFsCisgICAgICAgICAgICAgICAgY2FwYWJpbHRpZXMgYXMgYSBkZXZpY2UuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2J1cy91bWMvZGV2aWNlcy8uLi4vY2FwYWJpbGl0eV9pZAorRGF0ZTogICAgICAgICAgIEp1bHkgMjAwOAorS2VybmVsVmVyc2lvbjogIDIuNi4yNworQ29udGFjdDogICAgICAgIERhdmlkIFZyYWJlbCA8ZGF2aWQudnJhYmVsQGNzci5jb20+CitEZXNjcmlwdGlvbjoKKyAgICAgICAgICAgICAgICBUaGUgSUQgb2YgdGhpcyBjYXBhYmlsaXR5LCB3aXRoIDAgYmVpbmcgdGhlIHJhZGlvCisgICAgICAgICAgICAgICAgY29udHJvbGxlciBjYXBhYmlsaXR5LgorCitXaGF0OiAgICAgICAgICAgL3N5cy9idXMvdW1jL2RldmljZXMvLi4uL3ZlcnNpb24KK0RhdGU6ICAgICAgICAgICBKdWx5IDIwMDgKK0tlcm5lbFZlcnNpb246ICAyLjYuMjcKK0NvbnRhY3Q6ICAgICAgICBEYXZpZCBWcmFiZWwgPGRhdmlkLnZyYWJlbEBjc3IuY29tPgorRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgVGhlIHNwZWNpZmljYXRpb24gdmVyc2lvbiB0aGlzIGNhcGFiaWxpdHkncyBoYXJkd2FyZQorICAgICAgICAgICAgICAgIGludGVyZmFjZSBjb21wbGllcyB3aXRoLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdXNiIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdXNiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNmJhMTcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy11c2IKQEAgLTAsMCArMSwyMTcgQEAKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy9JTlRFUkZBQ0UvYXV0aG9yaXplZAorRGF0ZToJCUF1Z3VzdCAyMDE1CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBhbGxvd3MgdG8gYXV0aG9yaXplICgxKSBvciBkZWF1dGhvcml6ZSAoMCkKKwkJaW5kaXZpZHVhbCBpbnRlcmZhY2VzIGluc3RlYWQgYSB3aG9sZSBkZXZpY2UKKwkJaW4gY29udHJhc3QgdG8gdGhlIGRldmljZSBhdXRob3JpemF0aW9uLgorCQlJZiBhIGRlYXV0aG9yaXplZCBpbnRlcmZhY2Ugd2lsbCBiZSBhdXRob3JpemVkCisJCXNvIHRoZSBkcml2ZXIgcHJvYmluZyBtdXN0IGJlIHRyaWdnZXJlZCBtYW51YWxseQorCQlieSB3cml0aW5nIElOVEVSRkFDRSB0byAvc3lzL2J1cy91c2IvZHJpdmVyc19wcm9iZQorCQlUaGlzIGFsbG93cyB0byBhdm9pZCBzaWRlLWVmZmVjdHMgd2l0aCBkcml2ZXJzCisJCXRoYXQgbmVlZCBtdWx0aXBsZSBpbnRlcmZhY2VzLgorCQlBIGRlYXV0aG9yaXplZCBpbnRlcmZhY2UgY2Fubm90IGJlIHByb2JlZCBvciBjbGFpbWVkLgorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvdXNiWC9pbnRlcmZhY2VfYXV0aG9yaXplZF9kZWZhdWx0CitEYXRlOgkJQXVndXN0IDIwMTUKK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGlzIHVzZWQgYXMgdmFsdWUgdGhhdCBkZXRlcm1pbmVzIGlmIGludGVyZmFjZXMKKwkJd291bGQgYmUgYXV0aG9yaXplZCBieSBkZWZhdWx0LgorCQlUaGUgdmFsdWUgY2FuIGJlIDEgb3IgMC4gSXQncyBieSBkZWZhdWx0IDEuCisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlLy4uLi9hdXRob3JpemVkCitEYXRlOgkJSnVseSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CURhdmlkIFZyYWJlbCA8ZGF2aWQudnJhYmVsQGNzci5jb20+CitEZXNjcmlwdGlvbjoKKwkJQXV0aG9yaXplZCBkZXZpY2VzIGFyZSBhdmFpbGFibGUgZm9yIHVzZSBieSBkZXZpY2UKKwkJZHJpdmVycywgbm9uLWF1dGhvcml6ZWQgb25lIGFyZSBub3QuICBCeSBkZWZhdWx0LCB3aXJlZAorCQlVU0IgZGV2aWNlcyBhcmUgYXV0aG9yaXplZC4KKworCQlDZXJ0aWZpZWQgV2lyZWxlc3MgVVNCIGRldmljZXMgYXJlIG5vdCBhdXRob3JpemVkCisJCWluaXRpYWxseSBhbmQgc2hvdWxkIGJlIChieSB3cml0aW5nIDEpIGFmdGVyIHRoZQorCQlkZXZpY2UgaGFzIGJlZW4gYXV0aGVudGljYXRlZC4KKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2UvLi4uL3d1c2JfY2RpZAorRGF0ZToJCUp1bHkgMjAwOAorS2VybmVsVmVyc2lvbjoJMi42LjI3CitDb250YWN0OglEYXZpZCBWcmFiZWwgPGRhdmlkLnZyYWJlbEBjc3IuY29tPgorRGVzY3JpcHRpb246CisJCUZvciBDZXJ0aWZpZWQgV2lyZWxlc3MgVVNCIGRldmljZXMgb25seS4KKworCQlBIGRldmljZXMncyBDRElELCBhcyAxNiBzcGFjZS1zZXBhcmF0ZWQgaGV4IG9jdGV0cy4KKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2UvLi4uL3d1c2JfY2sKK0RhdGU6CQlKdWx5IDIwMDgKK0tlcm5lbFZlcnNpb246CTIuNi4yNworQ29udGFjdDoJRGF2aWQgVnJhYmVsIDxkYXZpZC52cmFiZWxAY3NyLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlGb3IgQ2VydGlmaWVkIFdpcmVsZXNzIFVTQiBkZXZpY2VzIG9ubHkuCisKKwkJV3JpdGUgdGhlIGRldmljZSdzIGNvbm5lY3Rpb24ga2V5IChDSykgdG8gc3RhcnQgdGhlCisJCWF1dGhlbnRpY2F0aW9uIG9mIHRoZSBkZXZpY2UuICBUaGUgQ0sgaXMgMTYKKwkJc3BhY2Utc2VwYXJhdGVkIGhleCBvY3RldHMuCisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlLy4uLi93dXNiX2Rpc2Nvbm5lY3QKK0RhdGU6CQlKdWx5IDIwMDgKK0tlcm5lbFZlcnNpb246CTIuNi4yNworQ29udGFjdDoJRGF2aWQgVnJhYmVsIDxkYXZpZC52cmFiZWxAY3NyLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlGb3IgQ2VydGlmaWVkIFdpcmVsZXNzIFVTQiBkZXZpY2VzIG9ubHkuCisKKwkJV3JpdGUgYSAxIHRvIGZvcmNlIHRoZSBkZXZpY2UgdG8gZGlzY29ubmVjdAorCQkoZXF1aXZhbGVudCB0byB1bnBsdWdnaW5nIGEgd2lyZWQgVVNCIGRldmljZSkuCisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZHJpdmVycy8uLi4vbmV3X2lkCitEYXRlOgkJT2N0b2JlciAyMDExCitDb250YWN0OglsaW51eC11c2JAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJV3JpdGluZyBhIGRldmljZSBJRCB0byB0aGlzIGZpbGUgd2lsbCBhdHRlbXB0IHRvCisJCWR5bmFtaWNhbGx5IGFkZCBhIG5ldyBkZXZpY2UgSUQgdG8gYSBVU0IgZGV2aWNlIGRyaXZlci4KKwkJVGhpcyBtYXkgYWxsb3cgdGhlIGRyaXZlciB0byBzdXBwb3J0IG1vcmUgaGFyZHdhcmUgdGhhbgorCQl3YXMgaW5jbHVkZWQgaW4gdGhlIGRyaXZlcidzIHN0YXRpYyBkZXZpY2UgSUQgc3VwcG9ydAorCQl0YWJsZSBhdCBjb21waWxlIHRpbWUuIFRoZSBmb3JtYXQgZm9yIHRoZSBkZXZpY2UgSUQgaXM6CisJCWlkVmVuZG9yIGlkUHJvZHVjdCBiSW50ZXJmYWNlQ2xhc3MgUmVmSWRWZW5kb3IgUmVmSWRQcm9kdWN0CisJCVRoZSB2ZW5kb3IgSUQgYW5kIGRldmljZSBJRCBmaWVsZHMgYXJlIHJlcXVpcmVkLCB0aGUKKwkJcmVzdCBpcyBvcHRpb25hbC4gVGhlIFJlZiogdHVwbGUgY2FuIGJlIHVzZWQgdG8gdGVsbCB0aGUKKwkJZHJpdmVyIHRvIHVzZSB0aGUgc2FtZSBkcml2ZXJfZGF0YSBmb3IgdGhlIG5ldyBkZXZpY2UgYXMKKwkJaXQgaXMgdXNlZCBmb3IgdGhlIHJlZmVyZW5jZSBkZXZpY2UuCisJCVVwb24gc3VjY2Vzc2Z1bGx5IGFkZGluZyBhbiBJRCwgdGhlIGRyaXZlciB3aWxsIHByb2JlCisJCWZvciB0aGUgZGV2aWNlIGFuZCBhdHRlbXB0IHRvIGJpbmQgdG8gaXQuICBGb3IgZXhhbXBsZToKKwkJIyBlY2hvICI4MDg2IDEwZjUiID4gL3N5cy9idXMvdXNiL2RyaXZlcnMvZm9vL25ld19pZAorCisJCUhlcmUgYWRkIGEgbmV3IGRldmljZSAoMDQ1ODo3MDQ1KSB1c2luZyBkcml2ZXJfZGF0YSBmcm9tCisJCWFuIGFscmVhZHkgc3VwcG9ydGVkIGRldmljZSAoMDQ1ODo3MDRjKToKKwkJIyBlY2hvICIwNDU4IDcwNDUgMCAwNDU4IDcwNGMiID4gL3N5cy9idXMvdXNiL2RyaXZlcnMvZm9vL25ld19pZAorCisJCVJlYWRpbmcgZnJvbSB0aGlzIGZpbGUgd2lsbCBsaXN0IGFsbCBkeW5hbWljYWxseSBhZGRlZAorCQlkZXZpY2UgSURzIGluIHRoZSBzYW1lIGZvcm1hdCwgd2l0aCBvbmUgZW50cnkgcGVyCisJCWxpbmUuIEZvciBleGFtcGxlOgorCQkjIGNhdCAvc3lzL2J1cy91c2IvZHJpdmVycy9mb28vbmV3X2lkCisJCTgwODYgMTBmNQorCQlkZWFkIGJlZWYgMDYKKwkJZjAwZCBjYWZlCisKKwkJVGhlIGxpc3Qgd2lsbCBiZSB0cnVuY2F0ZWQgYXQgUEFHRV9TSVpFIGJ5dGVzIGR1ZSB0bworCQlzeXNmcyByZXN0cmljdGlvbnMuCisKK1doYXQ6CQkvc3lzL2J1cy91c2Itc2VyaWFsL2RyaXZlcnMvLi4uL25ld19pZAorRGF0ZToJCU9jdG9iZXIgMjAxMQorQ29udGFjdDoJbGludXgtdXNiQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUZvciBzZXJpYWwgVVNCIGRyaXZlcnMsIHRoaXMgYXR0cmlidXRlIGFwcGVhcnMgdW5kZXIgdGhlCisJCWV4dHJhIGJ1cyBmb2xkZXIgInVzYi1zZXJpYWwiIGluIHN5c2ZzOyBhcGFydCBmcm9tIHRoYXQKKwkJZGlmZmVyZW5jZSwgYWxsIGRlc2NyaXB0aW9ucyBmcm9tIHRoZSBlbnRyeQorCQkiL3N5cy9idXMvdXNiL2RyaXZlcnMvLi4uL25ld19pZCIgYXBwbHkuCisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZHJpdmVycy8uLi4vcmVtb3ZlX2lkCitEYXRlOgkJTm92ZW1iZXIgMjAwOQorQ29udGFjdDoJQ0hFTkcgUmVucXVhbiA8cnFjaGVuZ0BzbXUuZWR1LnNnPgorRGVzY3JpcHRpb246CisJCVdyaXRpbmcgYSBkZXZpY2UgSUQgdG8gdGhpcyBmaWxlIHdpbGwgcmVtb3ZlIGFuIElECisJCXRoYXQgd2FzIGR5bmFtaWNhbGx5IGFkZGVkIHZpYSB0aGUgbmV3X2lkIHN5c2ZzIGVudHJ5LgorCQlUaGUgZm9ybWF0IGZvciB0aGUgZGV2aWNlIElEIGlzOgorCQlpZFZlbmRvciBpZFByb2R1Y3QuCUFmdGVyIHN1Y2Nlc3NmdWxseQorCQlyZW1vdmluZyBhbiBJRCwgdGhlIGRyaXZlciB3aWxsIG5vIGxvbmdlciBzdXBwb3J0IHRoZQorCQlkZXZpY2UuICBUaGlzIGlzIHVzZWZ1bCB0byBlbnN1cmUgYXV0byBwcm9iaW5nIHdvbid0CisJCW1hdGNoIHRoZSBkcml2ZXIgdG8gdGhlIGRldmljZS4gIEZvciBleGFtcGxlOgorCQkjIGVjaG8gIjA0NmQgYzMxNSIgPiAvc3lzL2J1cy91c2IvZHJpdmVycy9mb28vcmVtb3ZlX2lkCisKKwkJUmVhZGluZyBmcm9tIHRoaXMgZmlsZSB3aWxsIGxpc3QgdGhlIGR5bmFtaWNhbGx5IGFkZGVkCisJCWRldmljZSBJRHMsIGV4YWN0bHkgbGlrZSByZWFkaW5nIGZyb20gdGhlIGVudHJ5CisJCSIvc3lzL2J1cy91c2IvZHJpdmVycy8uLi4vbmV3X2lkIgorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvLi4uL3Bvd2VyL3VzYjJfaGFyZHdhcmVfbHBtCitEYXRlOgkJU2VwdGVtYmVyIDIwMTEKK0NvbnRhY3Q6CUFuZGlyeSBYdSA8YW5kaXJ5Lnh1QGFtZC5jb20+CitEZXNjcmlwdGlvbjoKKwkJSWYgQ09ORklHX1BNIGlzIHNldCBhbmQgYSBVU0IgMi4wIGxwbS1jYXBhYmxlIGRldmljZSBpcyBwbHVnZ2VkCisJCWluIHRvIGEgeEhDSSBob3N0IHdoaWNoIHN1cHBvcnQgbGluayBQTSwgaXQgd2lsbCBwZXJmb3JtIGEgTFBNCisJCXRlc3Q7IGlmIHRoZSB0ZXN0IGlzIHBhc3NlZCBhbmQgaG9zdCBzdXBwb3J0cyBVU0IyIGhhcmR3YXJlIExQTQorCQkoeEhDSSAxLjAgZmVhdHVyZSksIFVTQjIgaGFyZHdhcmUgTFBNIHdpbGwgYmUgZW5hYmxlZCBmb3IgdGhlCisJCWRldmljZSBhbmQgdGhlIFVTQiBkZXZpY2UgZGlyZWN0b3J5IHdpbGwgY29udGFpbiBhIGZpbGUgbmFtZWQKKwkJcG93ZXIvdXNiMl9oYXJkd2FyZV9scG0uICBUaGUgZmlsZSBob2xkcyBhIHN0cmluZyB2YWx1ZSAoZW5hYmxlCisJCW9yIGRpc2FibGUpIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgVVNCMiBoYXJkd2FyZSBMUE0gaXMKKwkJZW5hYmxlZCBmb3IgdGhlIGRldmljZS4gRGV2ZWxvcGVyIGNhbiB3cml0ZSB5L1kvMSBvciBuL04vMCB0bworCQl0aGUgZmlsZSB0byBlbmFibGUvZGlzYWJsZSB0aGUgZmVhdHVyZS4KKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLy4uLi9wb3dlci91c2IzX2hhcmR3YXJlX2xwbV91MQorCQkvc3lzL2J1cy91c2IvZGV2aWNlcy8uLi4vcG93ZXIvdXNiM19oYXJkd2FyZV9scG1fdTIKK0RhdGU6CQlOb3ZlbWJlciAyMDE1CitDb250YWN0OglLZXZpbiBTdHJhc3NlciA8a2V2aW4uc3RyYXNzZXJAbGludXguaW50ZWwuY29tPgorCQlMdSBCYW9sdSA8YmFvbHUubHVAbGludXguaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCUlmIENPTkZJR19QTSBpcyBzZXQgYW5kIGEgVVNCIDMuMCBscG0tY2FwYWJsZSBkZXZpY2UgaXMgcGx1Z2dlZAorCQlpbiB0byBhIHhIQ0kgaG9zdCB3aGljaCBzdXBwb3J0cyBsaW5rIFBNLCBpdCB3aWxsIGNoZWNrIGlmIFUxCisJCWFuZCBVMiBleGl0IGxhdGVuY2llcyBoYXZlIGJlZW4gc2V0IGluIHRoZSBCT1MgZGVzY3JpcHRvcjsgaWYKKwkJdGhlIGNoZWNrIGlzIHBhc3NlZCBhbmQgdGhlIGhvc3Qgc3VwcG9ydHMgVVNCMyBoYXJkd2FyZSBMUE0sCisJCVVTQjMgaGFyZHdhcmUgTFBNIHdpbGwgYmUgZW5hYmxlZCBmb3IgdGhlIGRldmljZSBhbmQgdGhlIFVTQgorCQlkZXZpY2UgZGlyZWN0b3J5IHdpbGwgY29udGFpbiB0d28gZmlsZXMgbmFtZWQKKwkJcG93ZXIvdXNiM19oYXJkd2FyZV9scG1fdTEgYW5kIHBvd2VyL3VzYjNfaGFyZHdhcmVfbHBtX3UyLiBUaGVzZQorCQlmaWxlcyBob2xkIGEgc3RyaW5nIHZhbHVlIChlbmFibGUgb3IgZGlzYWJsZSkgaW5kaWNhdGluZyB3aGV0aGVyCisJCW9yIG5vdCBVU0IzIGhhcmR3YXJlIExQTSBVMSBvciBVMiBpcyBlbmFibGVkIGZvciB0aGUgZGV2aWNlLgorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvLi4uL3JlbW92YWJsZQorRGF0ZToJCUZlYnJ1YXJ5IDIwMTIKK0NvbnRhY3Q6CU1hdHRoZXcgR2FycmV0dCA8bWpnQHJlZGhhdC5jb20+CitEZXNjcmlwdGlvbjoKKwkJU29tZSBpbmZvcm1hdGlvbiBhYm91dCB3aGV0aGVyIGEgZ2l2ZW4gVVNCIGRldmljZSBpcworCQlwaHlzaWNhbGx5IGZpeGVkIHRvIHRoZSBwbGF0Zm9ybSBjYW4gYmUgaW5mZXJyZWQgZnJvbSBhCisJCWNvbWJpbmF0aW9uIG9mIGh1YiBkZXNjcmlwdG9yIGJpdHMgYW5kIHBsYXRmb3JtLXNwZWNpZmljIGRhdGEKKwkJc3VjaCBhcyBBQ1BJLiBUaGlzIGZpbGUgd2lsbCByZWFkIGVpdGhlciAicmVtb3ZhYmxlIiBvcgorCQkiZml4ZWQiIGlmIHRoZSBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUsIGFuZCAidW5rbm93biIKKwkJb3RoZXJ3aXNlLgorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvLi4uL2x0bV9jYXBhYmxlCitEYXRlOgkJSnVseSAyMDEyCitDb250YWN0OglTYXJhaCBTaGFycCA8c2FyYWguYS5zaGFycEBsaW51eC5pbnRlbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVVNCIDMuMCBkZXZpY2VzIG1heSBvcHRpb25hbGx5IHN1cHBvcnQgTGF0ZW5jeSBUb2xlcmFuY2UKKwkJTWVzc2FnaW5nIChMVE0pLiAgVGhleSBpbmRpY2F0ZSB0aGVpciBzdXBwb3J0IGJ5IHNldHRpbmcgYSBiaXQKKwkJaW4gdGhlIGJtQXR0cmlidXRlcyBmaWVsZCBvZiB0aGVpciBTdXBlclNwZWVkIEJPUyBkZXNjcmlwdG9ycy4KKwkJSWYgdGhhdCBiaXQgaXMgc2V0IGZvciB0aGUgZGV2aWNlLCBsdG1fY2FwYWJsZSB3aWxsIHJlYWQgInllcyIuCisJCUlmIHRoZSBkZXZpY2UgZG9lc24ndCBzdXBwb3J0IExUTSwgdGhlIGZpbGUgd2lsbCByZWFkICJubyIuCisJCVRoZSBmaWxlIHdpbGwgYmUgcHJlc2VudCBmb3IgYWxsIHNwZWVkcyBvZiBVU0IgZGV2aWNlcywgYW5kIHdpbGwKKwkJYWx3YXlzIHJlYWQgIm5vIiBmb3IgVVNCIDEuMSBhbmQgVVNCIDIuMCBkZXZpY2VzLgorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvLi4uLyhodWIgaW50ZXJmYWNlKS9wb3J0WAorRGF0ZToJCUF1Z3VzdCAyMDEyCitDb250YWN0OglMYW4gVGlhbnl1IDx0aWFueXUubGFuQGludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9idXMvdXNiL2RldmljZXMvLi4uLyhodWIgaW50ZXJmYWNlKS9wb3J0WAorCQlpcyB1c2IgcG9ydCBkZXZpY2UncyBzeXNmcyBkaXJlY3RvcnkuCisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy8uLi4vKGh1YiBpbnRlcmZhY2UpL3BvcnRYL2Nvbm5lY3RfdHlwZQorRGF0ZToJCUphbnVhcnkgMjAxMworQ29udGFjdDoJTGFuIFRpYW55dSA8dGlhbnl1LmxhbkBpbnRlbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJU29tZSBwbGF0Zm9ybXMgcHJvdmlkZSB1c2IgcG9ydCBjb25uZWN0IHR5cGVzIHRocm91Z2ggQUNQSS4KKwkJVGhpcyBhdHRyaWJ1dGUgaXMgdG8gZXhwb3NlIHRoZXNlIGluZm9ybWF0aW9uIHRvIHVzZXIgc3BhY2UuCisJCVRoZSBmaWxlIHdpbGwgcmVhZCAiaG90cGx1ZyIsICJ3aXJlZCIgYW5kICJub3QgdXNlZCIgaWYgdGhlCisJCWluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSwgYW5kICJ1bmtub3duIiBvdGhlcndpc2UuCisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy8uLi4vcG93ZXIvdXNiMl9scG1fbDFfdGltZW91dAorRGF0ZToJCU1heSAyMDEzCitDb250YWN0OglNYXRoaWFzIE55bWFuIDxtYXRoaWFzLm55bWFuQGxpbnV4LmludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlVU0IgMi4wIGRldmljZXMgbWF5IHN1cHBvcnQgaGFyZHdhcmUgbGluayBwb3dlciBtYW5hZ2VtZW50IChMUE0pCisJCUwxIHNsZWVwIHN0YXRlLiBUaGUgdXNiMl9scG1fbDFfdGltZW91dCBhdHRyaWJ1dGUgYWxsb3dzCisJCXR1bmluZyB0aGUgdGltZW91dCBmb3IgTDEgaW5hY3Rpdml0eSB0aW1lciAoTFBNIHRpbWVyKSwgZS5nLgorCQluZWVkZWQgaW5hY3Rpdml0eSB0aW1lIGJlZm9yZSBob3N0IHJlcXVlc3RzIHRoZSBkZXZpY2UgdG8gZ28gdG8gTDEgc2xlZXAuCisJCVVzZWZ1bCBmb3IgcG93ZXIgbWFuYWdlbWVudCB0dW5pbmcuCisJCVN1cHBvcnRlZCB2YWx1ZXMgYXJlIDAgLSA2NTUzNSBtaWNyb3NlY29uZHMuCisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy8uLi4vcG93ZXIvdXNiMl9scG1fYmVzbAorRGF0ZToJCU1heSAyMDEzCitDb250YWN0OglNYXRoaWFzIE55bWFuIDxtYXRoaWFzLm55bWFuQGxpbnV4LmludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlVU0IgMi4wIGRldmljZXMgdGhhdCBzdXBwb3J0IGhhcmR3YXJlIGxpbmsgcG93ZXIgbWFuYWdlbWVudCAoTFBNKQorCQlMMSBzbGVlcCBzdGF0ZSBub3cgdXNlIGEgYmVzdCBlZmZvcnQgc2VydmljZSBsYXRlbmN5IHZhbHVlIChCRVNMKSB0bworCQlpbmRpY2F0ZSB0aGUgYmVzdCBlZmZvcnQgdG8gcmVzdW1wdGlvbiBvZiBzZXJ2aWNlIHRvIHRoZSBkZXZpY2UgYWZ0ZXIgdGhlCisJCWluaXRpYXRpb24gb2YgdGhlIHJlc3VtZSBldmVudC4KKwkJSWYgdGhlIGRldmljZSBkb2VzIG5vdCBoYXZlIGEgcHJlZmVycmVkIGJlc2wgdmFsdWUgdGhlbiB0aGUgaG9zdCBjYW4gc2VsZWN0CisJCW9uZSBpbnN0ZWFkLiBUaGlzIHVzYjJfbHBtX2Jlc2wgYXR0cmlidXRlIGFsbG93cyB0byB0dW5lIHRoZSBob3N0IHNlbGVjdGVkIGJlc2wKKwkJdmFsdWUgaW4gb3JkZXIgdG8gdHVuZSBwb3dlciBzYXZpbmcgYW5kIHNlcnZpY2UgbGF0ZW5jeS4KKworCQlTdXBwb3J0ZWQgdmFsdWVzIGFyZSAwIC0gMTUuCisJCU1vcmUgaW5mb3JtYXRpb24gb24gaG93IGJlc2wgdmFsdWVzIG1hcCB0byBtaWNyb3NlY29uZHMgY2FuIGJlIGZvdW5kIGluCisJCVVTQiAyLjAgRUNOIEVycmF0YSBmb3IgTGluayBQb3dlciBNYW5hZ2VtZW50LCBzZWN0aW9uIDQuMTApCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy11c2ItZGV2aWNlcy11c2JzZXZzZWcgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy11c2ItZGV2aWNlcy11c2JzZXZzZWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBkMDBkZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXVzYi1kZXZpY2VzLXVzYnNldnNlZwpAQCAtMCwwICsxLDQzIEBACitXaGVyZToJCS9zeXMvYnVzL3VzYi8uLi4vcG93ZXJlZAorRGF0ZToJCUF1Z3VzdCAyMDA4CitLZXJuZWwgVmVyc2lvbjoJMi42LjI2CitDb250YWN0OglIYXJyaXNvbiBNZXR6Z2VyIDxoYXJyaXNvbm1ldHpAZ21haWwuY29tPgorRGVzY3JpcHRpb246CUNvbnRyb2xzIHdoZXRoZXIgdGhlIGRldmljZSdzIGRpc3BsYXkgd2lsbCBwb3dlcmVkLgorCQlBIHZhbHVlIG9mIDAgaXMgb2ZmIGFuZCBhIG5vbi16ZXJvIHZhbHVlIGlzIG9uLgorCitXaGVyZToJCS9zeXMvYnVzL3VzYi8uLi4vbW9kZV9tc2IKK1doZXJlOgkJL3N5cy9idXMvdXNiLy4uLi9tb2RlX2xzYgorRGF0ZToJCUF1Z3VzdCAyMDA4CitLZXJuZWwgVmVyc2lvbjoJMi42LjI2CitDb250YWN0OglIYXJyaXNvbiBNZXR6Z2VyIDxoYXJyaXNvbm1ldHpAZ21haWwuY29tPgorRGVzY3JpcHRpb246CUNvbnRyb2xzIHRoZSBkZXZpY2VzIGRpc3BsYXkgbW9kZS4KKwkJRm9yIGEgNiBjaGFyYWN0ZXIgZGlzcGxheSB0aGUgdmFsdWVzIGFyZQorCQkJTVNCIDB4MDY7IExTQiAweDNGLCBhbmQKKwkJZm9yIGFuIDggY2hhcmFjdGVyIGRpc3BsYXkgdGhlIHZhbHVlcyBhcmUKKwkJCU1TQiAweDA4OyBMU0IgMHhGRi4KKworV2hlcmU6CQkvc3lzL2J1cy91c2IvLi4uL3RleHRtb2RlCitEYXRlOgkJQXVndXN0IDIwMDgKK0tlcm5lbCBWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CUhhcnJpc29uIE1ldHpnZXIgPGhhcnJpc29ubWV0ekBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoJQ29udHJvbHMgdGhlIHdheSB0aGUgZGV2aWNlIGludGVycHJldHMgaXRzIHRleHQgYnVmZmVyLgorCQlyYXc6CWVhY2ggY2hhcmFjdGVyIGNvbnRyb2xzIGl0cyBzZWdtZW50IG1hbnVhbGx5CisJCWhleDoJZWFjaCBjaGFyYWN0ZXIgaXMgYmV0d2VlbiAwLTE1CisJCWFzY2lpOgllYWNoIGNoYXJhY3RlciBpcyBiZXR3ZWVuICcwJy0nOScgYW5kICdBJy0nRicuCisKK1doZXJlOgkJL3N5cy9idXMvdXNiLy4uLi90ZXh0CitEYXRlOgkJQXVndXN0IDIwMDgKK0tlcm5lbCBWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CUhhcnJpc29uIE1ldHpnZXIgPGhhcnJpc29ubWV0ekBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoJVGhlIHRleHQgKG9yIGRhdGEpIGZvciB0aGUgZGV2aWNlIHRvIGRpc3BsYXkKKworV2hlcmU6CQkvc3lzL2J1cy91c2IvLi4uL2RlY2ltYWxzCitEYXRlOgkJQXVndXN0IDIwMDgKK0tlcm5lbCBWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CUhhcnJpc29uIE1ldHpnZXIgPGhhcnJpc29ubWV0ekBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoJQ29udHJvbHMgdGhlIGRlY2ltYWwgcGxhY2VzIG9uIHRoZSBkZXZpY2UuCisJCVRvIHNldCB0aGUgbnRoIGRlY2ltYWwgcGxhY2UsIGdpdmUgdGhpcyBmaWVsZAorCQl0aGUgdmFsdWUgb2YgMTAgKiogbi4gQXNzdW1lIHRoaXMgZmllbGQgaGFzCisJCXRoZSB2YWx1ZSBrIGFuZCBoYXMgMSBvciBtb3JlIGRlY2ltYWwgcGxhY2VzIHNldCwKKwkJdG8gc2V0IHRoZSBtdGggcGxhY2UgKHdoZXJlIG0gaXMgbm90IGFscmVhZHkgc2V0KSwKKwkJY2hhbmdlIHRoaXMgZmllbGRzIHZhbHVlIHRvIGsgKyAxMCAqKiBtLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdXNiLWx2c3Rlc3QgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy11c2ItbHZzdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTUxMjkwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdXNiLWx2c3Rlc3QKQEAgLTAsMCArMSw0NyBAQAorTGluayBMYXllciBWYWxpZGF0aW9uIERldmljZSBpcyBhIHN0YW5kYXJkIGRldmljZSBmb3IgdGVzdGluZyBvZiBTdXBlcgorU3BlZWQgTGluayBMYXllciB0ZXN0cy4gVGhlc2Ugbm9kZXMgYXJlIGF2YWlsYWJsZSBpbiBzeXNmcyBvbmx5IHdoZW4gbHZzCitkcml2ZXIgaXMgYm91bmQgd2l0aCByb290IGh1YiBkZXZpY2UuCisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy8uLi4vZ2V0X2Rldl9kZXNjCitEYXRlOgkJTWFyY2ggMjAxNAorQ29udGFjdDoJUHJhdHl1c2ggQW5hbmQgPHByYXR5dXNoLmFuYW5kQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlXcml0ZSB0byB0aGlzIG5vZGUgdG8gaXNzdWUgIkdldCBEZXZpY2UgRGVzY3JpcHRvciIKKwkJZm9yIExpbmsgTGF5ZXIgVmFsaWRhdGlvbiBkZXZpY2UuIEl0IGlzIG5lZWRlZCBmb3IgVEQuNy4wNi4KKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLy4uLi91MV90aW1lb3V0CitEYXRlOgkJTWFyY2ggMjAxNAorQ29udGFjdDoJUHJhdHl1c2ggQW5hbmQgPHByYXR5dXNoLmFuYW5kQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlTZXQgIlUxIHRpbWVvdXQiIGZvciB0aGUgZG93bnN0cmVhbSBwb3J0IHdoZXJlIExpbmsgTGF5ZXIKKwkJVmFsaWRhdGlvbiBkZXZpY2UgaXMgY29ubmVjdGVkLiBUaW1lb3V0IHZhbHVlIG11c3QgYmUgYmV0d2VlbiAwCisJCWFuZCAxMjcuIEl0IGlzIG5lZWRlZCBmb3IgVEQuNy4xOCwgVEQuNy4xOSwgVEQuNy4yMCBhbmQgVEQuNy4yMS4KKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLy4uLi91Ml90aW1lb3V0CitEYXRlOgkJTWFyY2ggMjAxNAorQ29udGFjdDoJUHJhdHl1c2ggQW5hbmQgPHByYXR5dXNoLmFuYW5kQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlTZXQgIlUyIHRpbWVvdXQiIGZvciB0aGUgZG93bnN0cmVhbSBwb3J0IHdoZXJlIExpbmsgTGF5ZXIKKwkJVmFsaWRhdGlvbiBkZXZpY2UgaXMgY29ubmVjdGVkLiBUaW1lb3V0IHZhbHVlIG11c3QgYmUgYmV0d2VlbiAwCisJCWFuZCAxMjcuIEl0IGlzIG5lZWRlZCBmb3IgVEQuNy4xOCwgVEQuNy4xOSwgVEQuNy4yMCBhbmQgVEQuNy4yMS4KKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLy4uLi9ob3RfcmVzZXQKK0RhdGU6CQlNYXJjaCAyMDE0CitDb250YWN0OglQcmF0eXVzaCBBbmFuZCA8cHJhdHl1c2guYW5hbmRAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVdyaXRlIHRvIHRoaXMgbm9kZSB0byBpc3N1ZSAiUmVzZXQiIGZvciBMaW5rIExheWVyIFZhbGlkYXRpb24KKwkJZGV2aWNlLiBJdCBpcyBuZWVkZWQgZm9yIFRELjcuMjksIFRELjcuMzEsIFRELjcuMzQgYW5kIFRELjcuMzUuCisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy8uLi4vdTNfZW50cnkKK0RhdGU6CQlNYXJjaCAyMDE0CitDb250YWN0OglQcmF0eXVzaCBBbmFuZCA8cHJhdHl1c2guYW5hbmRAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVdyaXRlIHRvIHRoaXMgbm9kZSB0byBpc3N1ZSAiVTMgZW50cnkiIGZvciBMaW5rIExheWVyCisJCVZhbGlkYXRpb24gZGV2aWNlLiBJdCBpcyBuZWVkZWQgZm9yIFRELjcuMzUgYW5kIFRELjcuMzYuCisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy8uLi4vdTNfZXhpdAorRGF0ZToJCU1hcmNoIDIwMTQKK0NvbnRhY3Q6CVByYXR5dXNoIEFuYW5kIDxwcmF0eXVzaC5hbmFuZEBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJV3JpdGUgdG8gdGhpcyBub2RlIHRvIGlzc3VlICJVMyBleGl0IiBmb3IgTGluayBMYXllcgorCQlWYWxpZGF0aW9uIGRldmljZS4gSXQgaXMgbmVlZGVkIGZvciBURC43LjM2LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jMnBvcnQgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWMycG9ydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTZjZmZjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jMnBvcnQKQEAgLTAsMCArMSw4OCBAQAorV2hhdDoJCS9zeXMvY2xhc3MvYzJwb3J0LworRGF0ZToJCU9jdG9iZXIgMjAwOAorQ29udGFjdDoJUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvY2xhc3MvYzJwb3J0LyBkaXJlY3Rvcnkgd2lsbCBjb250YWluIGZpbGVzIGFuZAorCQlkaXJlY3RvcmllcyB0aGF0IHdpbGwgcHJvdmlkZSBhIHVuaWZpZWQgaW50ZXJmYWNlIHRvCisJCXRoZSBDMiBwb3J0IGludGVyZmFjZS4KKworV2hhdDoJCS9zeXMvY2xhc3MvYzJwb3J0L2MycG9ydFgKK0RhdGU6CQlPY3RvYmVyIDIwMDgKK0NvbnRhY3Q6CVJvZG9sZm8gR2lvbWV0dGkgPGdpb21ldHRpQGxpbnV4Lml0PgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2NsYXNzL2MycG9ydC9jMnBvcnRYLyBkaXJlY3RvcnkgaXMgcmVsYXRlZCB0byBYLXRoCisJCUMyIHBvcnQgaW50byB0aGUgc3lzdGVtLiBFYWNoIGRpcmVjdG9yeSB3aWxsIGNvbnRhaW4gZmlsZXMgdG8KKwkJbWFuYWdlIGFuZCBjb250cm9sIGl0cyBDMiBwb3J0LgorCitXaGF0OgkJL3N5cy9jbGFzcy9jMnBvcnQvYzJwb3J0WC9hY2Nlc3MKK0RhdGU6CQlPY3RvYmVyIDIwMDgKK0NvbnRhY3Q6CVJvZG9sZm8gR2lvbWV0dGkgPGdpb21ldHRpQGxpbnV4Lml0PgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2NsYXNzL2MycG9ydC9jMnBvcnRYL2FjY2VzcyBmaWxlIGVuYWJsZSB0aGUgYWNjZXNzCisJCXRvIHRoZSBDMiBwb3J0IGZyb20gdGhlIHN5c3RlbS4gTm8gY29tbWFuZHMgY2FuIGJlIHNlbnQKKwkJdGlsbCB0aGlzIGVudHJ5IGlzIHNldCB0byAwLgorCitXaGF0OgkJL3N5cy9jbGFzcy9jMnBvcnQvYzJwb3J0WC9kZXZfaWQKK0RhdGU6CQlPY3RvYmVyIDIwMDgKK0NvbnRhY3Q6CVJvZG9sZm8gR2lvbWV0dGkgPGdpb21ldHRpQGxpbnV4Lml0PgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2NsYXNzL2MycG9ydC9jMnBvcnRYL2Rldl9pZCBmaWxlIHNob3cgdGhlIGRldmljZSBJRAorCQlvZiB0aGUgY29ubmVjdGVkIG1pY3JvLgorCitXaGF0OgkJL3N5cy9jbGFzcy9jMnBvcnQvYzJwb3J0WC9mbGFzaF9hY2Nlc3MKK0RhdGU6CQlPY3RvYmVyIDIwMDgKK0NvbnRhY3Q6CVJvZG9sZm8gR2lvbWV0dGkgPGdpb21ldHRpQGxpbnV4Lml0PgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2NsYXNzL2MycG9ydC9jMnBvcnRYL2ZsYXNoX2FjY2VzcyBmaWxlIGVuYWJsZSB0aGUKKwkJYWNjZXNzIHRvIHRoZSBvbi1ib2FyZCBmbGFzaCBvZiB0aGUgY29ubmVjdGVkIG1pY3JvLgorCQlObyBjb21tYW5kcyBjYW4gYmUgc2VudCB0aWxsIHRoaXMgZW50cnkgaXMgc2V0IHRvIDAuCisKK1doYXQ6CQkvc3lzL2NsYXNzL2MycG9ydC9jMnBvcnRYL2ZsYXNoX2Jsb2NrX3NpemUKK0RhdGU6CQlPY3RvYmVyIDIwMDgKK0NvbnRhY3Q6CVJvZG9sZm8gR2lvbWV0dGkgPGdpb21ldHRpQGxpbnV4Lml0PgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2NsYXNzL2MycG9ydC9jMnBvcnRYL2ZsYXNoX2Jsb2NrX3NpemUgZmlsZSBzaG93CisJCXRoZSBvbi1ib2FyZCBmbGFzaCBibG9jayBzaXplIG9mIHRoZSBjb25uZWN0ZWQgbWljcm8uCisKK1doYXQ6CQkvc3lzL2NsYXNzL2MycG9ydC9jMnBvcnRYL2ZsYXNoX2Jsb2Nrc19udW0KK0RhdGU6CQlPY3RvYmVyIDIwMDgKK0NvbnRhY3Q6CVJvZG9sZm8gR2lvbWV0dGkgPGdpb21ldHRpQGxpbnV4Lml0PgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2NsYXNzL2MycG9ydC9jMnBvcnRYL2ZsYXNoX2Jsb2Nrc19udW0gZmlsZSBzaG93CisJCXRoZSBvbi1ib2FyZCBmbGFzaCBibG9ja3MgbnVtYmVyIG9mIHRoZSBjb25uZWN0ZWQgbWljcm8uCisKK1doYXQ6CQkvc3lzL2NsYXNzL2MycG9ydC9jMnBvcnRYL2ZsYXNoX2RhdGEKK0RhdGU6CQlPY3RvYmVyIDIwMDgKK0NvbnRhY3Q6CVJvZG9sZm8gR2lvbWV0dGkgPGdpb21ldHRpQGxpbnV4Lml0PgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2NsYXNzL2MycG9ydC9jMnBvcnRYL2ZsYXNoX2RhdGEgZmlsZSBleHBvcnQKKwkJdGhlIGNvbnRlbnQgb2YgdGhlIG9uLWJvYXJkIGZsYXNoIG9mIHRoZSBjb25uZWN0ZWQgbWljcm8uCisKK1doYXQ6CQkvc3lzL2NsYXNzL2MycG9ydC9jMnBvcnRYL2ZsYXNoX2VyYXNlCitEYXRlOgkJT2N0b2JlciAyMDA4CitDb250YWN0OglSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBsaW51eC5pdD4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9jbGFzcy9jMnBvcnQvYzJwb3J0WC9mbGFzaF9lcmFzZSBmaWxlIGV4ZWN1dGUKKwkJdGhlICJlcmFzZSIgY29tbWFuZCBvbiB0aGUgb24tYm9hcmQgZmxhc2ggb2YgdGhlIGNvbm5lY3RlZAorCQltaWNyby4KKworV2hhdDoJCS9zeXMvY2xhc3MvYzJwb3J0L2MycG9ydFgvZmxhc2hfZXJhc2UKK0RhdGU6CQlPY3RvYmVyIDIwMDgKK0NvbnRhY3Q6CVJvZG9sZm8gR2lvbWV0dGkgPGdpb21ldHRpQGxpbnV4Lml0PgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2NsYXNzL2MycG9ydC9jMnBvcnRYL2ZsYXNoX2VyYXNlIGZpbGUgc2hvdyB0aGUKKwkJb24tYm9hcmQgZmxhc2ggc2l6ZSBvZiB0aGUgY29ubmVjdGVkIG1pY3JvLgorCitXaGF0OgkJL3N5cy9jbGFzcy9jMnBvcnQvYzJwb3J0WC9yZXNldAorRGF0ZToJCU9jdG9iZXIgMjAwOAorQ29udGFjdDoJUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvY2xhc3MvYzJwb3J0L2MycG9ydFgvcmVzZXQgZmlsZSBleGVjdXRlIGEgInJlc2V0IgorCQljb21tYW5kIG9uIHRoZSBjb25uZWN0ZWQgbWljcm8uCisKK1doYXQ6CQkvc3lzL2NsYXNzL2MycG9ydC9jMnBvcnRYL3Jldl9pZAorRGF0ZToJCU9jdG9iZXIgMjAwOAorQ29udGFjdDoJUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvY2xhc3MvYzJwb3J0L2MycG9ydFgvcmV2X2lkIGZpbGUgc2hvdyB0aGUgcmV2aXNpb24gSUQKKwkJb2YgdGhlIGNvbm5lY3RlZCBtaWNyby4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2ZxLXRhcmdldC1sYXRlbmN5IGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jZnEtdGFyZ2V0LWxhdGVuY3kKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYwZjc4MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2ZxLXRhcmdldC1sYXRlbmN5CkBAIC0wLDAgKzEsOCBAQAorV2hhdDoJCS9zeXMvYmxvY2svPGRldmljZT4vaW9zY2hlZC90YXJnZXRfbGF0ZW5jeQorRGF0ZToJCU1hcmNoIDIwMTIKK2NvbnRhY3Q6CVRhbyBNYSA8Ym95dS5tdEB0YW9iYW8uY29tPgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2Jsb2NrLzxkZXZpY2U+L2lvc2NoZWQvdGFyZ2V0X2xhdGVuY3kgb25seSBleGlzdHMKKwkJd2hlbiB0aGUgdXNlciBzZXRzIGNmcSB0byAvc3lzL2Jsb2NrLzxkZXZpY2U+L3NjaGVkdWxlci4KKwkJSXQgY29udGFpbnMgYW4gZXN0aW1hdGVkIGxhdGVuY3kgdGltZSBmb3IgdGhlIGNmcS4gY2ZxIHdpbGwKKwkJdXNlIGl0IHRvIGNhbGN1bGF0ZSB0aGUgdGltZSBzbGljZSB1c2VkIGZvciBldmVyeSB0YXNrLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjc2NTMwZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MKQEAgLTAsMCArMSwxNiBAQAorV2hhdDoJCS9zeXMvY2xhc3MvCitEYXRlOgkJRmVidWFyeSAyMDA2CitDb250YWN0OglHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2NsYXNzIGRpcmVjdG9yeSB3aWxsIGNvbnNpc3Qgb2YgYSBncm91cCBvZgorCQlzdWJkaXJlY3RvcmllcyBkZXNjcmliaW5nIGluZGl2aWR1YWwgY2xhc3NlcyBvZiBkZXZpY2VzCisJCWluIHRoZSBrZXJuZWwuICBUaGUgaW5kaXZpZHVhbCBkaXJlY3RvcmllcyB3aWxsIGNvbnNpc3QKKwkJb2YgZWl0aGVyIHN1YmRpcmVjdG9yaWVzLCBvciBzeW1saW5rcyB0byBvdGhlcgorCQlkaXJlY3Rvcmllcy4KKworCQlBbGwgcHJvZ3JhbXMgdGhhdCB1c2UgdGhpcyBkaXJlY3RvcnkgdHJlZSBtdXN0IGJlIGFibGUKKwkJdG8gaGFuZGxlIGJvdGggc3ViZGlyZWN0b3JpZXMgb3Igc3ltbGlua3MgaW4gb3JkZXIgdG8KKwkJd29yayBwcm9wZXJseS4KKworVXNlcnM6CisJdWRldiA8bGludXgtaG90cGx1Zy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLWJhY2tsaWdodC1kcml2ZXItYWRwODg3MCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtYmFja2xpZ2h0LWRyaXZlci1hZHA4ODcwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzZTY0ODgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLWJhY2tsaWdodC1kcml2ZXItYWRwODg3MApAQCAtMCwwICsxLDU2IEBACitXaGF0OgkJL3N5cy9jbGFzcy9iYWNrbGlnaHQvPGJhY2tsaWdodD4vPGFtYmllbnQgbGlnaHQgem9uZT5fbWF4CitXaGF0OgkJL3N5cy9jbGFzcy9iYWNrbGlnaHQvPGJhY2tsaWdodD4vbDFfZGF5bGlnaHRfbWF4CitXaGF0OgkJL3N5cy9jbGFzcy9iYWNrbGlnaHQvPGJhY2tsaWdodD4vbDJfYnJpZ2h0X21heAorV2hhdDoJCS9zeXMvY2xhc3MvYmFja2xpZ2h0LzxiYWNrbGlnaHQ+L2wzX29mZmljZV9tYXgKK1doYXQ6CQkvc3lzL2NsYXNzL2JhY2tsaWdodC88YmFja2xpZ2h0Pi9sNF9pbmRvb3JfbWF4CitXaGF0OgkJL3N5cy9jbGFzcy9iYWNrbGlnaHQvPGJhY2tsaWdodD4vbDVfZGFya19tYXgKK0RhdGU6CQlNYXkgMjAxMQorS2VybmVsVmVyc2lvbjoJMy4wCitDb250YWN0OglkZXZpY2UtZHJpdmVycy1kZXZlbEBibGFja2Zpbi51Y2xpbnV4Lm9yZworRGVzY3JpcHRpb246CisJCUNvbnRyb2wgdGhlIG1heGltdW0gYnJpZ2h0bmVzcyBmb3IgPGFtYmllbnQgbGlnaHQgem9uZT4KKwkJb24gdGhpcyA8YmFja2xpZ2h0Pi4gVmFsdWVzIGFyZSBiZXR3ZWVuIDAgYW5kIDEyNy4gVGhpcyBmaWxlCisJCXdpbGwgYWxzbyBzaG93IHRoZSBicmlnaHRuZXNzIGxldmVsIHN0b3JlZCBmb3IgdGhpcworCQk8YW1iaWVudCBsaWdodCB6b25lPi4KKworV2hhdDoJCS9zeXMvY2xhc3MvYmFja2xpZ2h0LzxiYWNrbGlnaHQ+LzxhbWJpZW50IGxpZ2h0IHpvbmU+X2RpbQorV2hhdDoJCS9zeXMvY2xhc3MvYmFja2xpZ2h0LzxiYWNrbGlnaHQ+L2wyX2JyaWdodF9kaW0KK1doYXQ6CQkvc3lzL2NsYXNzL2JhY2tsaWdodC88YmFja2xpZ2h0Pi9sM19vZmZpY2VfZGltCitXaGF0OgkJL3N5cy9jbGFzcy9iYWNrbGlnaHQvPGJhY2tsaWdodD4vbDRfaW5kb29yX2RpbQorV2hhdDoJCS9zeXMvY2xhc3MvYmFja2xpZ2h0LzxiYWNrbGlnaHQ+L2w1X2RhcmtfZGltCitEYXRlOgkJTWF5IDIwMTEKK0tlcm5lbFZlcnNpb246CTMuMAorQ29udGFjdDoJZGV2aWNlLWRyaXZlcnMtZGV2ZWxAYmxhY2tmaW4udWNsaW51eC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlDb250cm9sIHRoZSBkaW0gYnJpZ2h0bmVzcyBmb3IgPGFtYmllbnQgbGlnaHQgem9uZT4KKwkJb24gdGhpcyA8YmFja2xpZ2h0Pi4gVmFsdWVzIGFyZSBiZXR3ZWVuIDAgYW5kIDEyNywgdHlwaWNhbGx5CisJCXNldCB0byAwLiBGdWxsIG9mZiB3aGVuIHRoZSBiYWNrbGlnaHQgaXMgZGlzYWJsZWQuCisJCVRoaXMgZmlsZSB3aWxsIGFsc28gc2hvdyB0aGUgZGltIGJyaWdodG5lc3MgbGV2ZWwgc3RvcmVkIGZvcgorCQl0aGlzIDxhbWJpZW50IGxpZ2h0IHpvbmU+LgorCitXaGF0OgkJL3N5cy9jbGFzcy9iYWNrbGlnaHQvPGJhY2tsaWdodD4vYW1iaWVudF9saWdodF9sZXZlbAorRGF0ZToJCU1heSAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjAKK0NvbnRhY3Q6CWRldmljZS1kcml2ZXJzLWRldmVsQGJsYWNrZmluLnVjbGludXgub3JnCitEZXNjcmlwdGlvbjoKKwkJR2V0IGNvbnZlcnNpb24gdmFsdWUgb2YgdGhlIGxpZ2h0IHNlbnNvci4KKwkJVGhpcyB2YWx1ZSBpcyB1cGRhdGVkIGV2ZXJ5IDgwIG1zICh3aGVuIHRoZSBsaWdodCBzZW5zb3IKKwkJaXMgZW5hYmxlZCkuIFJldHVybnMgaW50ZWdlciBiZXR3ZWVuIDAgKGRhcmspIGFuZAorCQk4MDAwIChtYXggYW1iaWVudCBicmlnaHRuZXNzKQorCitXaGF0OgkJL3N5cy9jbGFzcy9iYWNrbGlnaHQvPGJhY2tsaWdodD4vYW1iaWVudF9saWdodF96b25lCitEYXRlOgkJTWF5IDIwMTEKK0tlcm5lbFZlcnNpb246CTMuMAorQ29udGFjdDoJZGV2aWNlLWRyaXZlcnMtZGV2ZWxAYmxhY2tmaW4udWNsaW51eC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlHZXQvU2V0IGN1cnJlbnQgYW1iaWVudCBsaWdodCB6b25lLiBSZWFkaW5nIHJldHVybnMKKwkJaW50ZWdlciBiZXR3ZWVuIDEuLjUgKDEgPSBkYXlsaWdodCwgMiA9IGJyaWdodCwgLi4uLCA1ID0gZGFyaykuCisJCVdyaXRpbmcgYSB2YWx1ZSBiZXR3ZWVuIDEuLjUgZm9yY2VzIHRoZSBiYWNrbGlnaHQgY29udHJvbGxlcgorCQl0byBlbnRlciB0aGUgY29ycmVzcG9uZGluZyBhbWJpZW50IGxpZ2h0IHpvbmUuCisJCVdyaXRpbmcgMCByZXR1cm5zIHRvIG5vcm1hbC9hdXRvbWF0aWMgYW1iaWVudCBsaWdodCBsZXZlbAorCQlvcGVyYXRpb24uIFRoZSBhbWJpZW50IGxpZ2h0IHNlbnNpbmcgZmVhdHVyZSBvbiB0aGVzZSBkZXZpY2VzCisJCWlzIGFuIGV4dGVuc2lvbiB0byB0aGUgQVBJIGRvY3VtZW50ZWQgaW4KKwkJRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWNsYXNzLWJhY2tsaWdodC4KKwkJSXQgY2FuIGJlIGVuYWJsZWQgYnkgd3JpdGluZyB0aGUgdmFsdWUgc3RvcmVkIGluCisJCS9zeXMvY2xhc3MvYmFja2xpZ2h0LzxiYWNrbGlnaHQ+L21heF9icmlnaHRuZXNzIHRvCisJCS9zeXMvY2xhc3MvYmFja2xpZ2h0LzxiYWNrbGlnaHQ+L2JyaWdodG5lc3MuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLWJhY2tsaWdodC1kcml2ZXItbG0zNTMzIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1iYWNrbGlnaHQtZHJpdmVyLWxtMzUzMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43N2NmN2FjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1iYWNrbGlnaHQtZHJpdmVyLWxtMzUzMwpAQCAtMCwwICsxLDQ4IEBACitXaGF0OgkJL3N5cy9jbGFzcy9iYWNrbGlnaHQvPGJhY2tsaWdodD4vYWxzX2NoYW5uZWwKK0RhdGU6CQlNYXkgMjAxMgorS2VybmVsVmVyc2lvbjoJMy41CitDb250YWN0OglKb2hhbiBIb3ZvbGQgPGpob3ZvbGRAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCUdldCB0aGUgQUxTIG91dHB1dCBjaGFubmVsIHVzZWQgYXMgaW5wdXQgaW4KKwkJQUxTLWN1cnJlbnQtY29udHJvbCBtb2RlICgwLCAxKSwgd2hlcmUKKworCQkwIC0gb3V0X2N1cnJlbnQwIChiYWNrbGlnaHQgMCkKKwkJMSAtIG91dF9jdXJyZW50MSAoYmFja2xpZ2h0IDEpCisKK1doYXQ6CQkvc3lzL2NsYXNzL2JhY2tsaWdodC88YmFja2xpZ2h0Pi9hbHNfZW4KK0RhdGU6CQlNYXkgMjAxMgorS2VybmVsVmVyc2lvbjoJMy41CitDb250YWN0OglKb2hhbiBIb3ZvbGQgPGpob3ZvbGRAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCUVuYWJsZSBBTFMtY3VycmVudC1jb250cm9sIG1vZGUgKDAsIDEpLgorCitXaGF0OgkJL3N5cy9jbGFzcy9iYWNrbGlnaHQvPGJhY2tsaWdodD4vaWQKK0RhdGU6CQlBcHJpbCAyMDEyCitLZXJuZWxWZXJzaW9uOgkzLjUKK0NvbnRhY3Q6CUpvaGFuIEhvdm9sZCA8amhvdm9sZEBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJR2V0IHRoZSBpZCBvZiB0aGlzIGJhY2tsaWdodCAoMCwgMSkuCisKK1doYXQ6CQkvc3lzL2NsYXNzL2JhY2tsaWdodC88YmFja2xpZ2h0Pi9saW5lYXIKK0RhdGU6CQlBcHJpbCAyMDEyCitLZXJuZWxWZXJzaW9uOgkzLjUKK0NvbnRhY3Q6CUpvaGFuIEhvdm9sZCA8amhvdm9sZEBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2V0IHRoZSBicmlnaHRuZXNzLW1hcHBpbmcgbW9kZSAoMCwgMSksIHdoZXJlCisKKwkJMCAtIGV4cG9uZW50aWFsIG1vZGUKKwkJMSAtIGxpbmVhciBtb2RlCisKK1doYXQ6CQkvc3lzL2NsYXNzL2JhY2tsaWdodC88YmFja2xpZ2h0Pi9wd20KK0RhdGU6CQlBcHJpbCAyMDEyCitLZXJuZWxWZXJzaW9uOgkzLjUKK0NvbnRhY3Q6CUpvaGFuIEhvdm9sZCA8amhvdm9sZEBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2V0IHRoZSBQV00taW5wdXQgY29udHJvbCBtYXNrICg1IGJpdHMpLCB3aGVyZQorCisJCWJpdCA1IC0gUFdNLWlucHV0IGVuYWJsZWQgaW4gWm9uZSA0CisJCWJpdCA0IC0gUFdNLWlucHV0IGVuYWJsZWQgaW4gWm9uZSAzCisJCWJpdCAzIC0gUFdNLWlucHV0IGVuYWJsZWQgaW4gWm9uZSAyCisJCWJpdCAyIC0gUFdNLWlucHV0IGVuYWJsZWQgaW4gWm9uZSAxCisJCWJpdCAxIC0gUFdNLWlucHV0IGVuYWJsZWQgaW4gWm9uZSAwCisJCWJpdCAwIC0gUFdNLWlucHV0IGVuYWJsZWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtYmRpIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1iZGkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc3M2Q1NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtYmRpCkBAIC0wLDAgKzEsNTUgQEAKK1doYXQ6CQkvc3lzL2NsYXNzL2JkaS88YmRpPi8KK0RhdGU6CQlKYW51YXJ5IDIwMDgKK0NvbnRhY3Q6CVBldGVyIFppamxzdHJhIDxhLnAuemlqbHN0cmFAY2hlbGxvLm5sPgorRGVzY3JpcHRpb246CisKK1Byb3ZpZGUgYSBwbGFjZSBpbiBzeXNmcyBmb3IgdGhlIGJhY2tpbmdfZGV2X2luZm8gb2JqZWN0LiAgVGhpcyBhbGxvd3MKK3NldHRpbmcgYW5kIHJldHJpZXZpbmcgdmFyaW91cyBCREkgc3BlY2lmaWMgdmFyaWFibGVzLgorCitUaGUgPGJkaT4gaWRlbnRpZmllciBjYW4gYmUgZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmc6CisKK01BSk9SOk1JTk9SCisKKwlEZXZpY2UgbnVtYmVyIGZvciBibG9jayBkZXZpY2VzLCBvciB2YWx1ZSBvZiBzdF9kZXYgb24KKwlub24tYmxvY2sgZmlsZXN5c3RlbXMgd2hpY2ggcHJvdmlkZSB0aGVpciBvd24gQkRJLCBzdWNoIGFzIE5GUworCWFuZCBGVVNFLgorCitNQUpPUjpNSU5PUi1mdXNlYmxrCisKKwlWYWx1ZSBvZiBzdF9kZXYgb24gZnVzZWJsayBmaWxlc3lzdGVtcy4KKworZGVmYXVsdAorCisJVGhlIGRlZmF1bHQgYmFja2luZyBkZXYsIHVzZWQgZm9yIG5vbi1ibG9jayBkZXZpY2UgYmFja2VkCisJZmlsZXN5c3RlbXMgd2hpY2ggZG8gbm90IHByb3ZpZGUgdGhlaXIgb3duIEJESS4KKworRmlsZXMgdW5kZXIgL3N5cy9jbGFzcy9iZGkvPGJkaT4vCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworcmVhZF9haGVhZF9rYiAocmVhZC13cml0ZSkKKworCVNpemUgb2YgdGhlIHJlYWQtYWhlYWQgd2luZG93IGluIGtpbG9ieXRlcworCittaW5fcmF0aW8gKHJlYWQtd3JpdGUpCisKKwlVbmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcyBlYWNoIGRldmljZSBpcyBnaXZlbiBhIHBhcnQgb2YgdGhlCisJdG90YWwgd3JpdGUtYmFjayBjYWNoZSB0aGF0IHJlbGF0ZXMgdG8gaXRzIGN1cnJlbnQgYXZlcmFnZQorCXdyaXRlb3V0IHNwZWVkIGluIHJlbGF0aW9uIHRvIHRoZSBvdGhlciBkZXZpY2VzLgorCisJVGhlICdtaW5fcmF0aW8nIHBhcmFtZXRlciBhbGxvd3MgYXNzaWduaW5nIGEgbWluaW11bQorCXBlcmNlbnRhZ2Ugb2YgdGhlIHdyaXRlLWJhY2sgY2FjaGUgdG8gYSBwYXJ0aWN1bGFyIGRldmljZS4KKwlGb3IgZXhhbXBsZSwgdGhpcyBpcyB1c2VmdWwgZm9yIHByb3ZpZGluZyBhIG1pbmltdW0gUW9TLgorCittYXhfcmF0aW8gKHJlYWQtd3JpdGUpCisKKwlBbGxvd3MgbGltaXRpbmcgYSBwYXJ0aWN1bGFyIGRldmljZSB0byB1c2Ugbm90IG1vcmUgdGhhbiB0aGUKKwlnaXZlbiBwZXJjZW50YWdlIG9mIHRoZSB3cml0ZS1iYWNrIGNhY2hlLiAgVGhpcyBpcyB1c2VmdWwgaW4KKwlzaXR1YXRpb25zIHdoZXJlIHdlIHdhbnQgdG8gYXZvaWQgb25lIGRldmljZSB0YWtpbmcgYWxsIG9yCisJbW9zdCBvZiB0aGUgd3JpdGUtYmFjayBjYWNoZS4gIEZvciBleGFtcGxlIGluIGNhc2Ugb2YgYW4gTkZTCisJbW91bnQgdGhhdCBpcyBwcm9uZSB0byBnZXQgc3R1Y2ssIG9yIGEgRlVTRSBtb3VudCB3aGljaCBjYW5ub3QKKwliZSB0cnVzdGVkIHRvIHBsYXkgZmFpci4KKworc3RhYmxlX3BhZ2VzX3JlcXVpcmVkIChyZWFkLW9ubHkpCisKKwlJZiBzZXQsIHRoZSBiYWNraW5nIGRldmljZSByZXF1aXJlcyB0aGF0IGFsbCBwYWdlcyBjb21wcmlzaW5nIGEgd3JpdGUKKwlyZXF1ZXN0IG11c3Qgbm90IGJlIGNoYW5nZWQgdW50aWwgd3JpdGVvdXQgaXMgY29tcGxldGUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLWN4bCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtY3hsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwN2U4NmQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLWN4bApAQCAtMCwwICsxLDIzNSBAQAorTm90ZTogQXR0cmlidXRlcyB0aGF0IGFyZSBzaGFyZWQgYmV0d2VlbiBkZXZpY2VzIGFyZSBzdG9yZWQgaW4gdGhlIGRpcmVjdG9yeQorcG9pbnRlZCB0byBieSB0aGUgc3ltbGluayBkZXZpY2UvLgorRXhhbXBsZTogVGhlIHJlYWwgcGF0aCBvZiB0aGUgYXR0cmlidXRlIC9zeXMvY2xhc3MvY3hsL2FmdTAuMHMvaXJxc19tYXggaXMKKy9zeXMvY2xhc3MvY3hsL2FmdTAuMHMvZGV2aWNlL2lycXNfbWF4LCBpLmUuIC9zeXMvY2xhc3MvY3hsL2FmdTAuMC9pcnFzX21heC4KKworCitTbGF2ZSBjb250ZXh0cyAoZWcuIC9zeXMvY2xhc3MvY3hsL2FmdTAuMHMpOgorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9jeGwvPGFmdT4vYWZ1X2Vycl9idWYKK0RhdGU6ICAgICAgICAgICBTZXB0ZW1iZXIgMjAxNAorQ29udGFjdDogICAgICAgIGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnCitEZXNjcmlwdGlvbjogICAgcmVhZCBvbmx5CisgICAgICAgICAgICAgICAgQUZVIEVycm9yIEJ1ZmZlciBjb250ZW50cy4gVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUKKwkJYXBwbGljYXRpb24gc3BlY2lmaWMgYW5kIGRlcGVuZHMgb24gdGhlIEFGVSBiZWluZyB1c2VkLgorCQlBcHBsaWNhdGlvbnMgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgQUZVIGNhbiB1c2UgdGhpcyBhdHRyaWJ1dGUKKwkJdG8ga25vdyBhYm91dCB0aGUgY3VycmVudCBlcnJvciBjb25kaXRpb24gYW5kIHRha2UgYXBwcm9wcmlhdGUKKwkJYWN0aW9uIGxpa2UgbG9nZ2luZyB0aGUgZXZlbnQgZXRjLgorCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL2N4bC88YWZ1Pi9pcnFzX21heAorRGF0ZTogICAgICAgICAgIFNlcHRlbWJlciAyMDE0CitDb250YWN0OiAgICAgICAgbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcKK0Rlc2NyaXB0aW9uOiAgICByZWFkL3dyaXRlCisgICAgICAgICAgICAgICAgRGVjaW1hbCB2YWx1ZSBvZiBtYXhpbXVtIG51bWJlciBvZiBpbnRlcnJ1cHRzIHRoYXQgY2FuIGJlCisgICAgICAgICAgICAgICAgcmVxdWVzdGVkIGJ5IHVzZXJzcGFjZS4gIFRoZSBkZWZhdWx0IG9uIHByb2JlIGlzIHRoZSBtYXhpbXVtCisgICAgICAgICAgICAgICAgdGhhdCBoYXJkd2FyZSBjYW4gc3VwcG9ydCAoZWcuIDIwMzcpLiBXcml0ZSB2YWx1ZXMgd2lsbCBsaW1pdAorICAgICAgICAgICAgICAgIHVzZXJzcGFjZSBhcHBsaWNhdGlvbnMgdG8gdGhhdCBtYW55IHVzZXJzcGFjZSBpbnRlcnJ1cHRzLiBNdXN0CisgICAgICAgICAgICAgICAgYmUgPj0gaXJxc19taW4uCitVc2VyczoJCWh0dHBzOi8vZ2l0aHViLmNvbS9pYm0tY2FwaS9saWJjeGwKKworV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvY3hsLzxhZnU+L2lycXNfbWluCitEYXRlOiAgICAgICAgICAgU2VwdGVtYmVyIDIwMTQKK0NvbnRhY3Q6ICAgICAgICBsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZworRGVzY3JpcHRpb246ICAgIHJlYWQgb25seQorICAgICAgICAgICAgICAgIERlY2ltYWwgdmFsdWUgb2YgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGludGVycnVwdHMgdGhhdAorICAgICAgICAgICAgICAgIHVzZXJzcGFjZSBtdXN0IHJlcXVlc3Qgb24gYSBDWExfU1RBUlRfV09SSyBpb2N0bC4gVXNlcnNwYWNlIG1heQorICAgICAgICAgICAgICAgIG9taXQgdGhlIG51bV9pbnRlcnJ1cHRzIGZpZWxkIGluIHRoZSBTVEFSVF9XT1JLIElPQ1RMIHRvIGdldAorICAgICAgICAgICAgICAgIHRoaXMgbWluaW11bSBhdXRvbWF0aWNhbGx5LgorVXNlcnM6CQlodHRwczovL2dpdGh1Yi5jb20vaWJtLWNhcGkvbGliY3hsCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL2N4bC88YWZ1Pi9tbWlvX3NpemUKK0RhdGU6ICAgICAgICAgICBTZXB0ZW1iZXIgMjAxNAorQ29udGFjdDogICAgICAgIGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnCitEZXNjcmlwdGlvbjogICAgcmVhZCBvbmx5CisgICAgICAgICAgICAgICAgRGVjaW1hbCB2YWx1ZSBvZiB0aGUgc2l6ZSBvZiB0aGUgTU1JTyBzcGFjZSB0aGF0IG1heSBiZSBtbWFwZWQKKyAgICAgICAgICAgICAgICBieSB1c2Vyc3BhY2UuCitVc2VyczoJCWh0dHBzOi8vZ2l0aHViLmNvbS9pYm0tY2FwaS9saWJjeGwKKworV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvY3hsLzxhZnU+L21vZGVzX3N1cHBvcnRlZAorRGF0ZTogICAgICAgICAgIFNlcHRlbWJlciAyMDE0CitDb250YWN0OiAgICAgICAgbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcKK0Rlc2NyaXB0aW9uOiAgICByZWFkIG9ubHkKKyAgICAgICAgICAgICAgICBMaXN0IG9mIHRoZSBtb2RlcyB0aGlzIEFGVSBzdXBwb3J0cy4gT25lIHBlciBsaW5lLgorICAgICAgICAgICAgICAgIFZhbGlkIGVudHJpZXMgYXJlOiAiZGVkaWNhdGVkX3Byb2Nlc3MiIGFuZCAiYWZ1X2RpcmVjdGVkIgorVXNlcnM6CQlodHRwczovL2dpdGh1Yi5jb20vaWJtLWNhcGkvbGliY3hsCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL2N4bC88YWZ1Pi9tb2RlCitEYXRlOiAgICAgICAgICAgU2VwdGVtYmVyIDIwMTQKK0NvbnRhY3Q6ICAgICAgICBsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZworRGVzY3JpcHRpb246ICAgIHJlYWQvd3JpdGUKKyAgICAgICAgICAgICAgICBUaGUgY3VycmVudCBtb2RlIHRoZSBBRlUgaXMgdXNpbmcuIFdpbGwgYmUgb25lIG9mIHRoZSBtb2RlcworICAgICAgICAgICAgICAgIGdpdmVuIGluIG1vZGVzX3N1cHBvcnRlZC4gV3JpdGluZyB3aWxsIGNoYW5nZSB0aGUgbW9kZQorICAgICAgICAgICAgICAgIHByb3ZpZGVkIHRoYXQgbm8gdXNlciBjb250ZXh0cyBhcmUgYXR0YWNoZWQuCitVc2VyczoJCWh0dHBzOi8vZ2l0aHViLmNvbS9pYm0tY2FwaS9saWJjeGwKKworCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9jeGwvPGFmdT4vcHJlZmF1bHRfbW9kZQorRGF0ZTogICAgICAgICAgIFNlcHRlbWJlciAyMDE0CitDb250YWN0OiAgICAgICAgbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcKK0Rlc2NyaXB0aW9uOiAgICByZWFkL3dyaXRlCisgICAgICAgICAgICAgICAgU2V0IHRoZSBtb2RlIGZvciBwcmVmYXVsdGluZyBpbiBzZWdtZW50cyBpbnRvIHRoZSBzZWdtZW50IHRhYmxlCisgICAgICAgICAgICAgICAgd2hlbiBwZXJmb3JtaW5nIHRoZSBTVEFSVF9XT1JLIGlvY3RsLiBQb3NzaWJsZSB2YWx1ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBub25lOiBObyBwcmVmYXVsdGluZyAoZGVmYXVsdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtfZWxlbWVudF9kZXNjcmlwdG9yOiBUcmVhdCB0aGUgd29yayBlbGVtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yIGFzIGFuIGVmZmVjdGl2ZSBhZGRyZXNzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZmF1bHQgd2hhdCBpdCBwb2ludHMgdG8uCisgICAgICAgICAgICAgICAgICAgICAgICBhbGw6IGFsbCBzZWdtZW50cyBwcm9jZXNzIGNhbGxpbmcgU1RBUlRfV09SSyBtYXBzLgorVXNlcnM6CQlodHRwczovL2dpdGh1Yi5jb20vaWJtLWNhcGkvbGliY3hsCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL2N4bC88YWZ1Pi9yZXNldAorRGF0ZTogICAgICAgICAgIFNlcHRlbWJlciAyMDE0CitDb250YWN0OiAgICAgICAgbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcKK0Rlc2NyaXB0aW9uOiAgICB3cml0ZSBvbmx5CisgICAgICAgICAgICAgICAgV3JpdGluZyAxIGhlcmUgd2lsbCByZXNldCB0aGUgQUZVIHByb3ZpZGVkIHRoZXJlIGFyZSBub3QKKyAgICAgICAgICAgICAgICBjb250ZXh0cyBhY3RpdmUgb24gdGhlIEFGVS4KK1VzZXJzOgkJaHR0cHM6Ly9naXRodWIuY29tL2libS1jYXBpL2xpYmN4bAorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9jeGwvPGFmdT4vYXBpX3ZlcnNpb24KK0RhdGU6ICAgICAgICAgICBTZXB0ZW1iZXIgMjAxNAorQ29udGFjdDogICAgICAgIGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnCitEZXNjcmlwdGlvbjogICAgcmVhZCBvbmx5CisgICAgICAgICAgICAgICAgRGVjaW1hbCB2YWx1ZSBvZiB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBrZXJuZWwvdXNlciBBUEkuCitVc2VyczoJCWh0dHBzOi8vZ2l0aHViLmNvbS9pYm0tY2FwaS9saWJjeGwKKworV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvY3hsLzxhZnU+L2FwaV92ZXJzaW9uX2NvbXBhdGlibGUKK0RhdGU6ICAgICAgICAgICBTZXB0ZW1iZXIgMjAxNAorQ29udGFjdDogICAgICAgIGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnCitEZXNjcmlwdGlvbjogICAgcmVhZCBvbmx5CisgICAgICAgICAgICAgICAgRGVjaW1hbCB2YWx1ZSBvZiB0aGUgdGhlIGxvd2VzdCB2ZXJzaW9uIG9mIHRoZSB1c2Vyc3BhY2UgQVBJCisgICAgICAgICAgICAgICAgdGhpcyB0aGlzIGtlcm5lbCBzdXBwb3J0cy4KK1VzZXJzOgkJaHR0cHM6Ly9naXRodWIuY29tL2libS1jYXBpL2xpYmN4bAorCisKK0FGVSBjb25maWd1cmF0aW9uIHJlY29yZHMgKGVnLiAvc3lzL2NsYXNzL2N4bC9hZnUwLjAvY3IwKToKKworQW4gQUZVIG1heSBvcHRpb25hbGx5IGV4cG9ydCBvbmUgb3IgbW9yZSBQQ0llIGxpa2UgY29uZmlndXJhdGlvbiByZWNvcmRzLCBrbm93bgorYXMgQUZVIGNvbmZpZ3VyYXRpb24gcmVjb3Jkcywgd2hpY2ggd2lsbCBzaG93IHVwIGhlcmUgKGlmIHByZXNlbnQpLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9jeGwvPGFmdT4vY3I8Y29uZmlnIG51bT4vdmVuZG9yCitEYXRlOiAgICAgICAgICAgRmVicnVhcnkgMjAxNQorQ29udGFjdDogICAgICAgIGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnCitEZXNjcmlwdGlvbjogICAgcmVhZCBvbmx5CisJCUhleGFkZWNpbWFsIHZhbHVlIG9mIHRoZSB2ZW5kb3IgSUQgZm91bmQgaW4gdGhpcyBBRlUKKwkJY29uZmlndXJhdGlvbiByZWNvcmQuCitVc2VyczoJCWh0dHBzOi8vZ2l0aHViLmNvbS9pYm0tY2FwaS9saWJjeGwKKworV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvY3hsLzxhZnU+L2NyPGNvbmZpZyBudW0+L2RldmljZQorRGF0ZTogICAgICAgICAgIEZlYnJ1YXJ5IDIwMTUKK0NvbnRhY3Q6ICAgICAgICBsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZworRGVzY3JpcHRpb246ICAgIHJlYWQgb25seQorCQlIZXhhZGVjaW1hbCB2YWx1ZSBvZiB0aGUgZGV2aWNlIElEIGZvdW5kIGluIHRoaXMgQUZVCisJCWNvbmZpZ3VyYXRpb24gcmVjb3JkLgorVXNlcnM6CQlodHRwczovL2dpdGh1Yi5jb20vaWJtLWNhcGkvbGliY3hsCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL2N4bC88YWZ1Pi9jcjxjb25maWcgbnVtPi9jbGFzcworRGF0ZTogICAgICAgICAgIEZlYnJ1YXJ5IDIwMTUKK0NvbnRhY3Q6ICAgICAgICBsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZworRGVzY3JpcHRpb246ICAgIHJlYWQgb25seQorCQlIZXhhZGVjaW1hbCB2YWx1ZSBvZiB0aGUgY2xhc3MgY29kZSBmb3VuZCBpbiB0aGlzIEFGVQorCQljb25maWd1cmF0aW9uIHJlY29yZC4KK1VzZXJzOgkJaHR0cHM6Ly9naXRodWIuY29tL2libS1jYXBpL2xpYmN4bAorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9jeGwvPGFmdT4vY3I8Y29uZmlnIG51bT4vY29uZmlnCitEYXRlOiAgICAgICAgICAgRmVicnVhcnkgMjAxNQorQ29udGFjdDogICAgICAgIGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnCitEZXNjcmlwdGlvbjogICAgcmVhZCBvbmx5CisJCVRoaXMgYmluYXJ5IGZpbGUgcHJvdmlkZXMgcmF3IGFjY2VzcyB0byB0aGUgQUZVIGNvbmZpZ3VyYXRpb24KKwkJcmVjb3JkLiBUaGUgZm9ybWF0IGlzIGV4cGVjdGVkIHRvIG1hdGNoIHRoZSBlaXRoZXIgdGhlIHN0YW5kYXJkCisJCW9yIGV4dGVuZGVkIGNvbmZpZ3VyYXRpb24gc3BhY2UgZGVmaW5lZCBieSB0aGUgUENJZQorCQlzcGVjaWZpY2F0aW9uLgorVXNlcnM6CQlodHRwczovL2dpdGh1Yi5jb20vaWJtLWNhcGkvbGliY3hsCisKKworCitNYXN0ZXIgY29udGV4dHMgKGVnLiAvc3lzL2NsYXNzL2N4bC9hZnUwLjBtKQorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9jeGwvPGFmdT5tL21taW9fc2l6ZQorRGF0ZTogICAgICAgICAgIFNlcHRlbWJlciAyMDE0CitDb250YWN0OiAgICAgICAgbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcKK0Rlc2NyaXB0aW9uOiAgICByZWFkIG9ubHkKKyAgICAgICAgICAgICAgICBEZWNpbWFsIHZhbHVlIG9mIHRoZSBzaXplIG9mIHRoZSBNTUlPIHNwYWNlIHRoYXQgbWF5IGJlIG1tYXBlZAorICAgICAgICAgICAgICAgIGJ5IHVzZXJzcGFjZS4gVGhpcyBpbmNsdWRlcyBhbGwgc2xhdmUgY29udGV4dHMgc3BhY2UgYWxzby4KK1VzZXJzOgkJaHR0cHM6Ly9naXRodWIuY29tL2libS1jYXBpL2xpYmN4bAorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9jeGwvPGFmdT5tL3BwX21taW9fbGVuCitEYXRlOiAgICAgICAgICAgU2VwdGVtYmVyIDIwMTQKK0NvbnRhY3Q6ICAgICAgICBsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZworRGVzY3JpcHRpb246ICAgIHJlYWQgb25seQorICAgICAgICAgICAgICAgIERlY2ltYWwgdmFsdWUgb2YgdGhlIFBlciBQcm9jZXNzIE1NSU8gc3BhY2UgbGVuZ3RoLgorVXNlcnM6CQlodHRwczovL2dpdGh1Yi5jb20vaWJtLWNhcGkvbGliY3hsCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL2N4bC88YWZ1Pm0vcHBfbW1pb19vZmYKK0RhdGU6ICAgICAgICAgICBTZXB0ZW1iZXIgMjAxNAorQ29udGFjdDogICAgICAgIGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnCitEZXNjcmlwdGlvbjogICAgcmVhZCBvbmx5CisgICAgICAgICAgICAgICAgRGVjaW1hbCB2YWx1ZSBvZiB0aGUgUGVyIFByb2Nlc3MgTU1JTyBzcGFjZSBvZmZzZXQuCitVc2VyczoJCWh0dHBzOi8vZ2l0aHViLmNvbS9pYm0tY2FwaS9saWJjeGwKKworCitDYXJkIGluZm8gKGVnLiAvc3lzL2NsYXNzL2N4bC9jYXJkMCkKKworV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvY3hsLzxjYXJkPi9jYWlhX3ZlcnNpb24KK0RhdGU6ICAgICAgICAgICBTZXB0ZW1iZXIgMjAxNAorQ29udGFjdDogICAgICAgIGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnCitEZXNjcmlwdGlvbjogICAgcmVhZCBvbmx5CisgICAgICAgICAgICAgICAgSWRlbnRpZmllcyB0aGUgQ0FJQSBWZXJzaW9uIHRoZSBjYXJkIGltcGxlbWVudHMuCitVc2VyczoJCWh0dHBzOi8vZ2l0aHViLmNvbS9pYm0tY2FwaS9saWJjeGwKKworV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvY3hsLzxjYXJkPi9wc2xfcmV2aXNpb24KK0RhdGU6ICAgICAgICAgICBTZXB0ZW1iZXIgMjAxNAorQ29udGFjdDogICAgICAgIGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnCitEZXNjcmlwdGlvbjogICAgcmVhZCBvbmx5CisgICAgICAgICAgICAgICAgSWRlbnRpZmllcyB0aGUgcmV2aXNpb24gbGV2ZWwgb2YgdGhlIFBTTC4KK1VzZXJzOgkJaHR0cHM6Ly9naXRodWIuY29tL2libS1jYXBpL2xpYmN4bAorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9jeGwvPGNhcmQ+L2Jhc2VfaW1hZ2UKK0RhdGU6ICAgICAgICAgICBTZXB0ZW1iZXIgMjAxNAorQ29udGFjdDogICAgICAgIGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnCitEZXNjcmlwdGlvbjogICAgcmVhZCBvbmx5CisgICAgICAgICAgICAgICAgSWRlbnRpZmllcyB0aGUgcmV2aXNpb24gbGV2ZWwgb2YgdGhlIGJhc2UgaW1hZ2UgZm9yIGRldmljZXMKKyAgICAgICAgICAgICAgICB0aGF0IHN1cHBvcnQgbG9hZGFibGUgUFNMcy4gRm9yIEZQR0FzIHRoaXMgZmllbGQgaWRlbnRpZmllcworICAgICAgICAgICAgICAgIHRoZSBpbWFnZSBjb250YWluZWQgaW4gdGhlIG9uLWFkYXB0ZXIgZmxhc2ggd2hpY2ggaXMgbG9hZGVkCisgICAgICAgICAgICAgICAgZHVyaW5nIHRoZSBpbml0aWFsIHByb2dyYW0gbG9hZC4KK1VzZXJzOgkJaHR0cHM6Ly9naXRodWIuY29tL2libS1jYXBpL2xpYmN4bAorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9jeGwvPGNhcmQ+L2ltYWdlX2xvYWRlZAorRGF0ZTogICAgICAgICAgIFNlcHRlbWJlciAyMDE0CitDb250YWN0OiAgICAgICAgbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcKK0Rlc2NyaXB0aW9uOiAgICByZWFkIG9ubHkKKyAgICAgICAgICAgICAgICBXaWxsIHJldHVybiAidXNlciIgb3IgImZhY3RvcnkiIGRlcGVuZGluZyBvbiB0aGUgaW1hZ2UgbG9hZGVkCisgICAgICAgICAgICAgICAgb250byB0aGUgY2FyZC4KK1VzZXJzOgkJaHR0cHM6Ly9naXRodWIuY29tL2libS1jYXBpL2xpYmN4bAorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9jeGwvPGNhcmQ+L2xvYWRfaW1hZ2Vfb25fcGVyc3QKK0RhdGU6ICAgICAgICAgICBEZWNlbWJlciAyMDE0CitDb250YWN0OiAgICAgICAgbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcKK0Rlc2NyaXB0aW9uOiAgICByZWFkL3dyaXRlCisgICAgICAgICAgICAgICAgVmFsaWQgZW50cmllcyBhcmUgIm5vbmUiLCAidXNlciIsIGFuZCAiZmFjdG9yeSIuCisgICAgICAgICAgICAgICAgIm5vbmUiIG1lYW5zIFBFUlNUIHdpbGwgbm90IGNhdXNlIGltYWdlIHRvIGJlIGxvYWRlZCB0byB0aGUKKyAgICAgICAgICAgICAgICBjYXJkLiAgQSBwb3dlciBjeWNsZSBpcyByZXF1aXJlZCB0byBsb2FkIHRoZSBpbWFnZS4KKyAgICAgICAgICAgICAgICAibm9uZSIgY291bGQgYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgYmVjYXVzZSB0aGUgdHJhY2UgYXJyYXlzCisgICAgICAgICAgICAgICAgYXJlIHByZXNlcnZlZC4KKyAgICAgICAgICAgICAgICAidXNlciIgYW5kICJmYWN0b3J5IiBtZWFucyBQRVJTVCB3aWxsIGNhdXNlIGVpdGhlciB0aGUgdXNlciBvcgorICAgICAgICAgICAgICAgIHVzZXIgb3IgZmFjdG9yeSBpbWFnZSB0byBiZSBsb2FkZWQuCisgICAgICAgICAgICAgICAgRGVmYXVsdCBpcyB0byByZWxvYWQgb24gUEVSU1Qgd2hpY2hldmVyIGltYWdlIHRoZSBjYXJkIGhhcworICAgICAgICAgICAgICAgIGxvYWRlZC4KK1VzZXJzOgkJaHR0cHM6Ly9naXRodWIuY29tL2libS1jYXBpL2xpYmN4bAorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9jeGwvPGNhcmQ+L3Jlc2V0CitEYXRlOiAgICAgICAgICAgT2N0b2JlciAyMDE0CitDb250YWN0OiAgICAgICAgbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcKK0Rlc2NyaXB0aW9uOiAgICB3cml0ZSBvbmx5CisgICAgICAgICAgICAgICAgV3JpdGluZyAxIHdpbGwgaXNzdWUgYSBQRVJTVCB0byBjYXJkIHdoaWNoIG1heSBjYXVzZSB0aGUgY2FyZAorICAgICAgICAgICAgICAgIHRvIHJlbG9hZCB0aGUgRlBHQSBkZXBlbmRpbmcgb24gbG9hZF9pbWFnZV9vbl9wZXJzdC4KK1VzZXJzOgkJaHR0cHM6Ly9naXRodWIuY29tL2libS1jYXBpL2xpYmN4bAorCitXaGF0OgkJL3N5cy9jbGFzcy9jeGwvPGNhcmQ+L3BlcnN0X3JlbG9hZHNfc2FtZV9pbWFnZQorRGF0ZToJCUp1bHkgMjAxNQorQ29udGFjdDoJbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcKK0Rlc2NyaXB0aW9uOglyZWFkL3dyaXRlCisJCVRydXN0IHRoYXQgd2hlbiBhbiBpbWFnZSBpcyByZWxvYWRlZCB2aWEgUEVSU1QsIGl0IHdpbGwgbm90CisJCWhhdmUgY2hhbmdlZC4KKwkJMCA9IGRvbid0IHRydXN0LCB0aGUgaW1hZ2UgbWF5IGJlIGRpZmZlcmVudCAoZGVmYXVsdCkKKwkJMSA9IHRydXN0IHRoYXQgdGhlIGltYWdlIHdpbGwgbm90IGNoYW5nZS4KK1VzZXJzOgkJaHR0cHM6Ly9naXRodWIuY29tL2libS1jYXBpL2xpYmN4bApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1kZXZmcmVxIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1kZXZmcmVxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlMzlhY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLWRldmZyZXEKQEAgLTAsMCArMSwxMDAgQEAKK1doYXQ6CQkvc3lzL2NsYXNzL2RldmZyZXEvLi4uLworRGF0ZToJCVNlcHRlbWJlciAyMDExCitDb250YWN0OglNeXVuZ0pvbyBIYW0gPG15dW5nam9vLmhhbUBzYW1zdW5nLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlQcm92aWRlIGEgcGxhY2UgaW4gc3lzZnMgZm9yIHRoZSBkZXZmcmVxIG9iamVjdHMuCisJCVRoaXMgYWxsb3dzIGFjY2Vzc2luZyB2YXJpb3VzIGRldmZyZXEgc3BlY2lmaWMgdmFyaWFibGVzLgorCQlUaGUgbmFtZSBvZiBkZXZmcmVxIG9iamVjdCBkZW5vdGVkIGFzIC4uLiBpcyBzYW1lIGFzIHRoZQorCQluYW1lIG9mIGRldmljZSB1c2luZyBkZXZmcmVxLgorCitXaGF0OgkJL3N5cy9jbGFzcy9kZXZmcmVxLy4uLi9nb3Zlcm5vcgorRGF0ZToJCVNlcHRlbWJlciAyMDExCitDb250YWN0OglNeXVuZ0pvbyBIYW0gPG15dW5nam9vLmhhbUBzYW1zdW5nLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9jbGFzcy9kZXZmcmVxLy4uLi9nb3Zlcm5vciBzaG93IG9yIHNldCB0aGUgbmFtZSBvZiB0aGUKKwkJZ292ZXJub3IgdXNlZCBieSB0aGUgY29ycmVzcG9uZGluZyBkZXZmcmVxIG9iamVjdC4KKworV2hhdDoJCS9zeXMvY2xhc3MvZGV2ZnJlcS8uLi4vY3VyX2ZyZXEKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMQorQ29udGFjdDoJTXl1bmdKb28gSGFtIDxteXVuZ2pvby5oYW1Ac2Ftc3VuZy5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvY2xhc3MvZGV2ZnJlcS8uLi4vY3VyX2ZyZXEgc2hvd3MgdGhlIGN1cnJlbnQKKwkJZnJlcXVlbmN5IG9mIHRoZSBjb3JyZXNwb25kaW5nIGRldmZyZXEgb2JqZWN0LiBTYW1lIGFzCisJCXRhcmdldF9mcmVxIHdoZW4gZ2V0X2N1cl9mcmVxKCkgaXMgbm90IGltcGxlbWVudGVkIGJ5CisJCWRldmZyZXEgZHJpdmVyLgorCitXaGF0OgkJL3N5cy9jbGFzcy9kZXZmcmVxLy4uLi90YXJnZXRfZnJlcQorRGF0ZToJCVNlcHRlbWJlciAyMDEyCitDb250YWN0OglSYWphZ29wYWwgVmVua2F0IDxyYWphZ29wYWwudmVua2F0QGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvY2xhc3MvZGV2ZnJlcS8uLi4vdGFyZ2V0X2ZyZXEgc2hvd3MgdGhlIG5leHQgZ292ZXJub3IKKwkJcHJlZGljdGVkIHRhcmdldCBmcmVxdWVuY3kgb2YgdGhlIGNvcnJlc3BvbmRpbmcgZGV2ZnJlcSBvYmplY3QuCisKK1doYXQ6CQkvc3lzL2NsYXNzL2RldmZyZXEvLi4uL3BvbGxpbmdfaW50ZXJ2YWwKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMQorQ29udGFjdDoJTXl1bmdKb28gSGFtIDxteXVuZ2pvby5oYW1Ac2Ftc3VuZy5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvY2xhc3MvZGV2ZnJlcS8uLi4vcG9sbGluZ19pbnRlcnZhbCBzaG93cyBhbmQgc2V0cworCQl0aGUgcmVxdWVzdGVkIHBvbGxpbmcgaW50ZXJ2YWwgb2YgdGhlIGNvcnJlc3BvbmRpbmcgZGV2ZnJlcQorCQlvYmplY3QuIFRoZSB2YWx1ZXMgYXJlIHJlcHJlc2VudGVkIGluIG1zLiBJZiB0aGUgdmFsdWUgaXMKKwkJbGVzcyB0aGFuIDEgamlmZnksIGl0IGlzIGNvbnNpZGVyZWQgdG8gYmUgMCwgd2hpY2ggbWVhbnMKKwkJbm8gcG9sbGluZy4gVGhpcyB2YWx1ZSBpcyBtZWFuaW5nbGVzcyBpZiB0aGUgZ292ZXJub3IgaXMKKwkJbm90IHBvbGxpbmc7IHRodXMuIElmIHRoZSBnb3Zlcm5vciBpcyBub3QgdXNpbmcKKwkJZGV2ZnJlcS1wcm92aWRlZCBjZW50cmFsIHBvbGxpbmcKKwkJKC9zeXMvY2xhc3MvZGV2ZnJlcS8uLi4vY2VudHJhbF9wb2xsaW5nIGlzIDApLCB0aGlzIHZhbHVlCisJCW1heSBiZSB1c2VsZXNzLgorCitXaGF0OgkJL3N5cy9jbGFzcy9kZXZmcmVxLy4uLi90cmFuc19zdGF0CitEYXRlOgkJT2N0b2JlciAyMDEyCitDb250YWN0OglNeXVuZ0pvbyBIYW0gPG15dW5nam9vLmhhbUBzYW1zdW5nLmNvbT4KK0Rlc2NydGlwdGlvbjoKKwkJVGhpcyBBQkkgc2hvd3MgdGhlIHN0YXRpc3RpY3Mgb2YgZGV2ZnJlcSBiZWhhdmlvciBvbiBhCisJCXNwZWNpZmljIGRldmljZS4gSXQgc2hvd3MgdGhlIHRpbWUgc3BlbnQgaW4gZWFjaCBzdGF0ZSBhbmQKKwkJdGhlIG51bWJlciBvZiB0cmFuc2l0aW9ucyBiZXR3ZWVuIHN0YXRlcy4KKwkJSW4gb3JkZXIgdG8gYWN0aXZhdGUgdGhpcyBBQkksIHRoZSBkZXZmcmVxIHRhcmdldCBkZXZpY2UKKwkJZHJpdmVyIHNob3VsZCBwcm92aWRlIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBmcmVxdWVuY2llcworCQl3aXRoIGl0cyBwcm9maWxlLgorCitXaGF0OgkJL3N5cy9jbGFzcy9kZXZmcmVxLy4uLi91c2Vyc3BhY2Uvc2V0X2ZyZXEKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMQorQ29udGFjdDoJTXl1bmdKb28gSGFtIDxteXVuZ2pvby5oYW1Ac2Ftc3VuZy5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvY2xhc3MvZGV2ZnJlcS8uLi4vdXNlcnNwYWNlL3NldF9mcmVxIHNob3dzIGFuZAorCQlzZXRzIHRoZSByZXF1ZXN0ZWQgZnJlcXVlbmN5IGZvciB0aGUgZGV2ZnJlcSBvYmplY3QgaWYKKwkJdXNlcnNwYWNlIGdvdmVybm9yIGlzIGluIGVmZmVjdC4KKworV2hhdDoJCS9zeXMvY2xhc3MvZGV2ZnJlcS8uLi4vYXZhaWxhYmxlX2ZyZXF1ZW5jaWVzCitEYXRlOgkJT2N0b2JlciAyMDEyCitDb250YWN0OglOaXNoYW50aCBNZW5vbiA8bm1AdGkuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2NsYXNzL2RldmZyZXEvLi4uL2F2YWlsYWJsZV9mcmVxdWVuY2llcyBzaG93cworCQl0aGUgYXZhaWxhYmxlIGZyZXF1ZW5jaWVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRldmZyZXEgb2JqZWN0LgorCQlUaGlzIGlzIGEgc25hcHNob3Qgb2YgYXZhaWxhYmxlIGZyZXF1ZW5jaWVzIGFuZCBub3QgbGltaXRlZAorCQlieSB0aGUgbWluL21heCBmcmVxdWVuY3kgcmVzdHJpY3Rpb25zLgorCitXaGF0OgkJL3N5cy9jbGFzcy9kZXZmcmVxLy4uLi9hdmFpbGFibGVfZ292ZXJub3JzCitEYXRlOgkJT2N0b2JlciAyMDEyCitDb250YWN0OglOaXNoYW50aCBNZW5vbiA8bm1AdGkuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2NsYXNzL2RldmZyZXEvLi4uL2F2YWlsYWJsZV9nb3Zlcm5vcnMgc2hvd3MKKwkJY3VycmVudGx5IGF2YWlsYWJsZSBnb3Zlcm5vcnMgaW4gdGhlIHN5c3RlbS4KKworV2hhdDoJCS9zeXMvY2xhc3MvZGV2ZnJlcS8uLi4vbWluX2ZyZXEKK0RhdGU6CQlKYW51YXJ5IDIwMTMKK0NvbnRhY3Q6CU15dW5nSm9vIEhhbSA8bXl1bmdqb28uaGFtQHNhbXN1bmcuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2NsYXNzL2RldmZyZXEvLi4uL21pbl9mcmVxIHNob3dzIGFuZCBzdG9yZXMKKwkJdGhlIG1pbmltdW0gZnJlcXVlbmN5IHJlcXVlc3RlZCBieSB1c2Vycy4gSXQgaXMgMCBpZgorCQl0aGUgdXNlciBkb2VzIG5vdCBjYXJlLiBtaW5fZnJlcSBvdmVycmlkZXMgdGhlCisJCWZyZXF1ZW5jeSByZXF1ZXN0ZWQgYnkgZ292ZXJub3JzLgorCitXaGF0OgkJL3N5cy9jbGFzcy9kZXZmcmVxLy4uLi9tYXhfZnJlcQorRGF0ZToJCUphbnVhcnkgMjAxMworQ29udGFjdDoJTXl1bmdKb28gSGFtIDxteXVuZ2pvby5oYW1Ac2Ftc3VuZy5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvY2xhc3MvZGV2ZnJlcS8uLi4vbWF4X2ZyZXEgc2hvd3MgYW5kIHN0b3JlcworCQl0aGUgbWF4aW11bSBmcmVxdWVuY3kgcmVxdWVzdGVkIGJ5IHVzZXJzLiBJdCBpcyAwIGlmCisJCXRoZSB1c2VyIGRvZXMgbm90IGNhcmUuIG1heF9mcmVxIG92ZXJyaWRlcyB0aGUKKwkJZnJlcXVlbmN5IHJlcXVlc3RlZCBieSBnb3Zlcm5vcnMgYW5kIG1pbl9mcmVxLgorCQlUaGUgbWF4X2ZyZXEgb3ZlcnJpZGVzIG1pbl9mcmVxIGJlY2F1c2UgbWF4X2ZyZXEgbWF5IGJlCisJCXVzZWQgdG8gdGhyb3R0bGUgZGV2aWNlcyB0byBhdm9pZCBvdmVyaGVhdGluZy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtZXh0Y29uIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1leHRjb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdhNzI2MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtZXh0Y29uCkBAIC0wLDAgKzEsOTcgQEAKK1doYXQ6CQkvc3lzL2NsYXNzL2V4dGNvbi8uLi4vCitEYXRlOgkJRmVicnVhcnkgMjAxMgorQ29udGFjdDoJTXl1bmdKb28gSGFtIDxteXVuZ2pvby5oYW1Ac2Ftc3VuZy5jb20+CitEZXNjcmlwdGlvbjoKKwkJUHJvdmlkZSBhIHBsYWNlIGluIHN5c2ZzIGZvciB0aGUgZXh0Y29uIG9iamVjdHMuCisJCVRoaXMgYWxsb3dzIGFjY2Vzc2luZyBleHRjb24gc3BlY2lmaWMgdmFyaWFibGVzLgorCQlUaGUgbmFtZSBvZiBleHRjb24gb2JqZWN0IGRlbm90ZWQgYXMgLi4uIGlzIHRoZSBuYW1lIGdpdmVuCisJCXdpdGggZXh0Y29uX2Rldl9yZWdpc3Rlci4KKworCQlPbmUgZXh0Y29uIGRldmljZSBkZW5vdGVzIGEgc2luZ2xlIGV4dGVybmFsIGNvbm5lY3RvcgorCQlwb3J0LiBBbiBleHRlcm5hbCBjb25uZWN0b3IgbWF5IGhhdmUgbXVsdGlwbGUgY2FibGVzCisJCWF0dGFjaGVkIHNpbXVsdGFuZW91c2x5LiBNYW55IG9mIGRvY2tzLCBjcmFkbGVzLCBhbmQKKwkJYWNjZXNzb3J5IGNhYmxlcyBoYXZlIHN1Y2ggY2FwYWJpbGl0eS4gRm9yIGV4YW1wbGUsCisJCXRoZSAzMC1waW4gcG9ydCBvZiBOdXJpIGJvYXJkICgvYXJjaC9hcm0vbWFjaC1leHlub3MpCisJCW1heSBoYXZlIGJvdGggSERNSSBhbmQgQ2hhcmdlciBhdHRhY2hlZCwgb3IgYW5hbG9nIGF1ZGlvLAorCQl2aWRlbywgYW5kIFVTQiBjYWJsZXMgYXR0YWNoZWQgc2ltdWx0YW5lb3VzbHkuCisKKwkJSWYgdGhlcmUgYXJlIGNhYmxlcyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCBlYWNoIG90aGVyLAorCQlzdWNoIGJpbmFyeSByZWxhdGlvbnMgbWF5IGJlIGV4cHJlc3NlZCB3aXRoIGV4dGNvbl9kZXYncworCQltdXR1YWxseV9leGNsdXNpdmUgYXJyYXkuCisKK1doYXQ6CQkvc3lzL2NsYXNzL2V4dGNvbi8uLi4vbmFtZQorRGF0ZToJCUZlYnJ1YXJ5IDIwMTIKK0NvbnRhY3Q6CU15dW5nSm9vIEhhbSA8bXl1bmdqb28uaGFtQHNhbXN1bmcuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2NsYXNzL2V4dGNvbi8uLi4vbmFtZSBzaG93cyB0aGUgbmFtZSBvZiB0aGUgZXh0Y29uCisJCW9iamVjdC4gSWYgdGhlIGV4dGNvbiBvYmplY3QgaGFzIGFuIG9wdGlvbmFsIGNhbGxiYWNrCisJCSJzaG93X25hbWUiIGRlZmluZWQsIHRoZSBjYWxsYmFjayB3aWxsIHByb3ZpZGUgdGhlIG5hbWUgd2l0aAorCQl0aGlzIHN5c2ZzIG5vZGUuCisKK1doYXQ6CQkvc3lzL2NsYXNzL2V4dGNvbi8uLi4vc3RhdGUKK0RhdGU6CQlGZWJydWFyeSAyMDEyCitDb250YWN0OglNeXVuZ0pvbyBIYW0gPG15dW5nam9vLmhhbUBzYW1zdW5nLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9jbGFzcy9leHRjb24vLi4uL3N0YXRlIHNob3dzIGFuZCBzdG9yZXMgdGhlIGNhYmxlCisJCWF0dGFjaC9kZXRhY2ggaW5mb3JtYXRpb24gb2YgdGhlIGNvcnJlc3BvbmRpbmcgZXh0Y29uIG9iamVjdC4KKwkJSWYgdGhlIGV4dGNvbiBvYmplY3QgaGFzIGFuIG9wdGlvbmFsIGNhbGxiYWNrICJzaG93X3N0YXRlIgorCQlkZWZpbmVkLCB0aGUgc2hvd2luZyBmdW5jdGlvbiBpcyBvdmVycmlkZGVuIHdpdGggdGhlIG9wdGlvbmFsCisJCWNhbGxiYWNrLgorCisJCUlmIHRoZSBkZWZhdWx0IGNhbGxiYWNrIGZvciBzaG93aW5nIGZ1bmN0aW9uIGlzIHVzZWQsIHRoZQorCQlmb3JtYXQgaXMgbGlrZSB0aGlzOgorCQkjIGNhdCBzdGF0ZQorCQlVU0JfT1RHPTEKKwkJSERNST0wCisJCVRBPTEKKwkJRUFSX0pBQ0s9MAorCQkjCisJCUluIHRoaXMgZXhhbXBsZSwgdGhlIGV4dGNvbiBkZXZpY2UgaGFzIFVTQl9PVEcgYW5kIFRBCisJCWNhYmxlcyBhdHRhY2hlZCBhbmQgSERNSSBhbmQgRUFSX0pBQ0sgY2FibGVzIGRldGFjaGVkLgorCisJCUluIG9yZGVyIHRvIHVwZGF0ZSB0aGUgc3RhdGUgb2YgYW4gZXh0Y29uIGRldmljZSwgZW50ZXIgYSBoZXgKKwkJc3RhdGUgbnVtYmVyIHN0YXJ0aW5nIHdpdGggMHg6CisJCSMgZWNobyAweEhFWCA+IHN0YXRlCisKKwkJVGhpcyB1cGRhdGVzIHRoZSB3aG9sZSBzdGF0ZSBvZiB0aGUgZXh0Y29uIGRldmljZS4KKwkJSW5wdXRzIG9mIGFsbCB0aGUgbWV0aG9kcyBhcmUgcmVxdWlyZWQgdG8gbWVldCB0aGUKKwkJbXV0dWFsbHlfZXhjbHVzaXZlIGNvbmRpdGlvbnMgaWYgdGhleSBleGlzdC4KKworCQlJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhpcyAiZ2xvYmFsIiBzdGF0ZSBpbnRlcmZhY2UgaWYKKwkJeW91IG5lZWQgdG8gc2V0IHRoZSB2YWx1ZSBhdG9taWNhbGx5LiBUaGUgbGF0ZXIgc3RhdGUKKwkJaW50ZXJmYWNlIGFzc29jaWF0ZWQgd2l0aCBlYWNoIGNhYmxlIGNhbm5vdCB1cGRhdGUKKwkJbXVsdGlwbGUgY2FibGUgc3RhdGVzIG9mIGFuIGV4dGNvbiBkZXZpY2Ugc2ltdWx0YW5lb3VzbHkuCisKK1doYXQ6CQkvc3lzL2NsYXNzL2V4dGNvbi8uLi4vY2FibGUueC9uYW1lCitEYXRlOgkJRmVicnVhcnkgMjAxMgorQ29udGFjdDoJTXl1bmdKb28gSGFtIDxteXVuZ2pvby5oYW1Ac2Ftc3VuZy5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvY2xhc3MvZXh0Y29uLy4uLi9jYWJsZS54L25hbWUgc2hvd3MgdGhlIG5hbWUgb2YgY2FibGUKKwkJIngiIChpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMzEpIG9mIGFuIGV4dGNvbiBkZXZpY2UuCisKK1doYXQ6CQkvc3lzL2NsYXNzL2V4dGNvbi8uLi4vY2FibGUueC9zdGF0ZQorRGF0ZToJCUZlYnJ1YXJ5IDIwMTIKK0NvbnRhY3Q6CU15dW5nSm9vIEhhbSA8bXl1bmdqb28uaGFtQHNhbXN1bmcuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2NsYXNzL2V4dGNvbi8uLi4vY2FibGUueC9zdGF0ZSBzaG93cyBhbmQgc3RvcmVzIHRoZQorCQlzdGF0ZSBvZiBjYWJsZSAieCIgKGludGVnZXIgYmV0d2VlbiAwIGFuZCAzMSkgb2YgYW4gZXh0Y29uCisJCWRldmljZS4gVGhlIHN0YXRlIHZhbHVlIGlzIGVpdGhlciAwIChkZXRhY2hlZCkgb3IgMQorCQkoYXR0YWNoZWQpLgorCitXaGF0OgkJL3N5cy9jbGFzcy9leHRjb24vLi4uL211dHVhbGx5X2V4Y2x1c2l2ZS8uLi4KK0RhdGU6CQlEZWNlbWJlciAyMDExCitDb250YWN0OglNeXVuZ0pvbyBIYW0gPG15dW5nam9vLmhhbUBzYW1zdW5nLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlTaG93cyB0aGUgcmVsYXRpb25zIG9mIG11dHVhbGx5IGV4Y2x1c2l2ZW5lc3MuIEZvciBleGFtcGxlLAorCQlpZiB0aGUgbXV0dWFsbHlfZXhjbHVzaXZlIGFycmF5IG9mIGV4dGNvbiBkZXZpY2UgaXMKKwkJezB4MywgMHg1LCAweEMsIDB4MH0sIHRoZW4gdGhlIG91dHB1dCBpczoKKwkJIyBscyBtdXR1YWxseV9leGNsdXNpdmUvCisJCTB4MworCQkweDUKKwkJMHhjCisJCSMKKworCQlOb3RlIHRoYXQgbXV0dWFsbHlfZXhjbHVzaXZlIGlzIGEgc3ViLWRpcmVjdG9yeSBvZiB0aGUgZXh0Y29uCisJCWRldmljZSBhbmQgdGhlIGZpbGUgbmFtZXMgdW5kZXIgdGhlIG11dHVhbGx5X2V4Y2x1c2l2ZQorCQlkaXJlY3Rvcnkgc2hvdyB0aGUgbXV0dWFsbHktZXhjbHVzaXZlIHNldHMsIG5vdCB0aGUgY29udGVudHMKKwkJb2YgdGhlIGZpbGVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1mcGdhLW1hbmFnZXIgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLWZwZ2EtbWFuYWdlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzA1NmM1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1mcGdhLW1hbmFnZXIKQEAgLTAsMCArMSwzNyBAQAorV2hhdDoJCS9zeXMvY2xhc3MvZnBnYV9tYW5hZ2VyLzxmcGdhPi9uYW1lCitEYXRlOgkJQXVndXN0IDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMworQ29udGFjdDoJQWxhbiBUdWxsIDxhdHVsbEBvcGVuc291cmNlLmFsdGVyYS5jb20+CitEZXNjcmlwdGlvbjoJTmFtZSBvZiBsb3cgbGV2ZWwgZnBnYSBtYW5hZ2VyIGRyaXZlci4KKworV2hhdDoJCS9zeXMvY2xhc3MvZnBnYV9tYW5hZ2VyLzxmcGdhPi9zdGF0ZQorRGF0ZToJCUF1Z3VzdCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjMKK0NvbnRhY3Q6CUFsYW4gVHVsbCA8YXR1bGxAb3BlbnNvdXJjZS5hbHRlcmEuY29tPgorRGVzY3JpcHRpb246CVJlYWQgZnBnYSBtYW5hZ2VyIHN0YXRlIGFzIGEgc3RyaW5nLgorCQlUaGUgaW50ZW50IGlzIHRvIHByb3ZpZGUgZW5vdWdoIGRldGFpbCB0aGF0IGlmIHNvbWV0aGluZyBnb2VzCisJCXdyb25nIGR1cmluZyBGUEdBIHByb2dyYW1taW5nIChzb21ldGhpbmcgdGhhdCB0aGUgZHJpdmVyIGNhbid0CisJCWZpeCkgdGhlbiB1c2Vyc3BhY2UgY2FuIGtub3csIGkuZS4gaWYgdGhlIGZpcm13YXJlIHJlcXVlc3QKKwkJZmFpbHMsIHRoYXQgY291bGQgYmUgZHVlIHRvIG5vdCBiZWluZyBhYmxlIHRvIGZpbmQgdGhlIGZpcm13YXJlCisJCWZpbGUuCisKKwkJVGhpcyBpcyBhIHN1cGVyc2V0IG9mIEZQR0Egc3RhdGVzIGFuZCBmcGdhIG1hbmFnZXIgZHJpdmVyCisJCXN0YXRlcy4gIFRoZSBmcGdhIG1hbmFnZXIgZHJpdmVyIGlzIHdhbGtpbmcgdGhyb3VnaCB0aGVzZSBzdGVwcworCQl0byBnZXQgdGhlIEZQR0EgaW50byBhIGtub3duIG9wZXJhdGluZyBzdGF0ZS4gIEl0J3MgYSBzZXF1ZW5jZSwKKwkJdGhvdWdoIHNvbWUgc3RlcHMgbWF5IGdldCBza2lwcGVkLiAgVmFsaWQgRlBHQSBzdGF0ZXMgd2lsbCB2YXJ5CisJCWJ5IG1hbnVmYWN0dXJlcjsgdGhpcyBpcyBhIHN1cGVyc2V0LgorCisJCSogdW5rbm93bgkJPSBjYW4ndCBkZXRlcm1pbmUgc3RhdGUKKwkJKiBwb3dlciBvZmYJCT0gRlBHQSBwb3dlciBpcyBvZmYKKwkJKiBwb3dlciB1cAkJPSBGUEdBIHJlcG9ydHMgcG93ZXIgaXMgdXAKKwkJKiByZXNldAkJCT0gRlBHQSBoZWxkIGluIHJlc2V0IHN0YXRlCisJCSogZmlybXdhcmUgcmVxdWVzdAk9IGZpcm13YXJlIGNsYXNzIHJlcXVlc3QgaW4gcHJvZ3Jlc3MKKwkJKiBmaXJtd2FyZSByZXF1ZXN0IGVycm9yID0gZmlybXdhcmUgcmVxdWVzdCBmYWlsZWQKKwkJKiB3cml0ZSBpbml0CQk9IHByZXBhcmluZyBGUEdBIGZvciBwcm9ncmFtbWluZworCQkqIHdyaXRlIGluaXQgZXJyb3IJPSBFcnJvciB3aGlsZSBwcmVwYXJpbmcgRlBHQSBmb3IKKwkJCQkJICBwcm9ncmFtbWluZworCQkqIHdyaXRlCQkJPSBGUEdBIHJlYWR5IHRvIHJlY2VpdmUgaW1hZ2UgZGF0YQorCQkqIHdyaXRlIGVycm9yCQk9IEVycm9yIHdoaWxlIHByb2dyYW1taW5nCisJCSogd3JpdGUgY29tcGxldGUJPSBEb2luZyBwb3N0IHByb2dyYW1taW5nIHN0ZXBzCisJCSogd3JpdGUgY29tcGxldGUgZXJyb3IJPSBFcnJvciB3aGlsZSBkb2luZyBwb3N0IHByb2dyYW1taW5nCisJCSogb3BlcmF0aW5nCQk9IEZQR0EgaXMgcHJvZ3JhbW1lZCBhbmQgb3BlcmF0aW5nCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLWlvbW11IGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1pb21tdQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDBhMWI0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1pb21tdQpAQCAtMCwwICsxLDE3IEBACitXaGF0OgkJL3N5cy9jbGFzcy9pb21tdS88aW9tbXU+L2RldmljZXMvCitEYXRlOgkJSnVuZSAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE3CitDb250YWN0OglBbGV4IFdpbGxpYW1zb24gPGFsZXgud2lsbGlhbXNvbkByZWRoYXQuY29tPgorRGVzY3JpcHRpb246CisJCUlPTU1VIGRyaXZlcnMgYXJlIGFibGUgdG8gbGluayBkZXZpY2VzIG1hbmFnZWQgYnkgYQorCQlnaXZlbiBJT01NVSBoZXJlIHRvIGFsbG93IGFzc29jaWF0aW9uIG9mIElPTU1VIHRvCisJCWRldmljZS4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy8uLi4vaW9tbXUKK0RhdGU6CQlKdW5lIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTcKK0NvbnRhY3Q6CUFsZXggV2lsbGlhbXNvbiA8YWxleC53aWxsaWFtc29uQHJlZGhhdC5jb20+CitEZXNjcmlwdGlvbjoKKwkJSU9NTVUgZHJpdmVycyBhcmUgYWJsZSB0byBsaW5rIHRoZSBJT01NVSBmb3IgYQorCQlnaXZlbiBkZXZpY2UgaGVyZSB0byBhbGxvdyBhc3NvY2lhdGlvbiBvZiBkZXZpY2UgdG8KKwkJSU9NTVUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLWlvbW11LWFtZC1pb21tdSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtaW9tbXUtYW1kLWlvbW11Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2YmE4ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLWlvbW11LWFtZC1pb21tdQpAQCAtMCwwICsxLDE0IEBACitXaGF0OgkJL3N5cy9jbGFzcy9pb21tdS88aW9tbXU+L2FtZC1pb21tdS9jYXAKK0RhdGU6CQlKdW5lIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTcKK0NvbnRhY3Q6CUFsZXggV2lsbGlhbXNvbiA8YWxleC53aWxsaWFtc29uQHJlZGhhdC5jb20+CitEZXNjcmlwdGlvbjoKKwkJSU9NTVUgY2FwYWJpbGl0eSBoZWFkZXIgYXMgZG9jdW1lbnRlZCBpbiB0aGUgQU1EIElPTU1VCisJCXNwZWNpZmljYXRpb24uICBGb3JtYXQ6ICV4CisKK1doYXQ6CQkvc3lzL2NsYXNzL2lvbW11Lzxpb21tdT4vYW1kLWlvbW11L2ZlYXR1cmVzCitEYXRlOgkJSnVuZSAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE3CitDb250YWN0OglBbGV4IFdpbGxpYW1zb24gPGFsZXgud2lsbGlhbXNvbkByZWRoYXQuY29tPgorRGVzY3JpcHRpb246CisJCUV4dGVuZGVkIGZlYXR1cmVzIG9mIHRoZSBJT01NVS4gIEZvcm1hdDogJWxseApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1pb21tdS1pbnRlbC1pb21tdSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtaW9tbXUtaW50ZWwtaW9tbXUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU4Y2MyNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtaW9tbXUtaW50ZWwtaW9tbXUKQEAgLTAsMCArMSwzMiBAQAorV2hhdDoJCS9zeXMvY2xhc3MvaW9tbXUvPGlvbW11Pi9pbnRlbC1pb21tdS9hZGRyZXNzCitEYXRlOgkJSnVuZSAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE3CitDb250YWN0OglBbGV4IFdpbGxpYW1zb24gPGFsZXgud2lsbGlhbXNvbkByZWRoYXQuY29tPgorRGVzY3JpcHRpb246CisJCVBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIFZULWQgRFJIRCBmb3IgdGhpcyBJT01NVS4KKwkJRm9ybWF0OiAlbGx4LiAgVGhpcyBhbGxvd3MgYXNzb2NpYXRpb24gb2YgYSBzeXNmcworCQlpbnRlbC1pb21tdSB3aXRoIGEgRE1BUiBEUkhEIHRhYmxlIGVudHJ5LgorCitXaGF0OgkJL3N5cy9jbGFzcy9pb21tdS88aW9tbXU+L2ludGVsLWlvbW11L2NhcAorRGF0ZToJCUp1bmUgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xNworQ29udGFjdDoJQWxleCBXaWxsaWFtc29uIDxhbGV4LndpbGxpYW1zb25AcmVkaGF0LmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgY2FjaGVkIGhhcmR3YXJlIGNhcGFiaWxpdHkgcmVnaXN0ZXIgdmFsdWUKKwkJb2YgdGhpcyBEUkhEIHVuaXQuICBGb3JtYXQ6ICVsbHguCisKK1doYXQ6CQkvc3lzL2NsYXNzL2lvbW11Lzxpb21tdT4vaW50ZWwtaW9tbXUvZWNhcAorRGF0ZToJCUp1bmUgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xNworQ29udGFjdDoJQWxleCBXaWxsaWFtc29uIDxhbGV4LndpbGxpYW1zb25AcmVkaGF0LmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgY2FjaGVkIGhhcmR3YXJlIGV4dGVuZGVkIGNhcGFiaWxpdHkgcmVnaXN0ZXIKKwkJdmFsdWUgb2YgdGhpcyBEUkhEIHVuaXQuICBGb3JtYXQ6ICVsbHguCisKK1doYXQ6CQkvc3lzL2NsYXNzL2lvbW11Lzxpb21tdT4vaW50ZWwtaW9tbXUvdmVyc2lvbgorRGF0ZToJCUp1bmUgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xNworQ29udGFjdDoJQWxleCBXaWxsaWFtc29uIDxhbGV4LndpbGxpYW1zb25AcmVkaGF0LmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgYXJjaGl0ZWN0dXJlIHZlcnNpb24gYXMgcmVwb3J0ZWQgZnJvbSB0aGUKKwkJVlQtZCBWRVJfUkVHLiAgRm9ybWF0OiAlZDolZCwgbWFqb3I6bWlub3IKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtbGNkIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1sY2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU5MDZiZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtbGNkCkBAIC0wLDAgKzEsMjMgQEAKK1doYXQ6CQkvc3lzL2NsYXNzL2xjZC88bGNkPi9sY2RfcG93ZXIKK0RhdGU6CQlBcHJpbCAyMDA1CitLZXJuZWxWZXJzaW9uOgkyLjYuMTIKK0NvbnRhY3Q6CVJpY2hhcmQgUHVyZGllIDxycHVyZGllQHJwc3lzLm5ldD4KK0Rlc2NyaXB0aW9uOgorCQlDb250cm9sIExDRCBwb3dlciwgdmFsdWVzIGFyZSBGQl9CTEFOS18qIGZyb20gZmIuaAorCQkgLSBGQl9CTEFOS19VTkJMQU5LICgwKSAgIDogcG93ZXIgb24uCisJCSAtIEZCX0JMQU5LX1BPV0VSRE9XTiAoNCkgOiBwb3dlciBvZmYKKworV2hhdDoJCS9zeXMvY2xhc3MvbGNkLzxsY2Q+L2NvbnRyYXN0CitEYXRlOgkJQXByaWwgMjAwNQorS2VybmVsVmVyc2lvbjoJMi42LjEyCitDb250YWN0OglSaWNoYXJkIFB1cmRpZSA8cnB1cmRpZUBycHN5cy5uZXQ+CitEZXNjcmlwdGlvbjoKKwkJQ3VycmVudCBjb250cmFzdCBvZiB0aGlzIExDRCBkZXZpY2UuIFZhbHVlIGlzIGJldHdlZW4gMCBhbmQKKwkJL3N5cy9jbGFzcy9sY2QvPGxjZD4vbWF4X2NvbnRyYXN0LgorCitXaGF0OgkJL3N5cy9jbGFzcy9sY2QvPGxjZD4vbWF4X2NvbnRyYXN0CitEYXRlOgkJQXByaWwgMjAwNQorS2VybmVsVmVyc2lvbjoJMi42LjEyCitDb250YWN0OglSaWNoYXJkIFB1cmRpZSA8cnB1cmRpZUBycHN5cy5uZXQ+CitEZXNjcmlwdGlvbjoKKwkJTWF4aW11bSBjb250cmFzdCBmb3IgdGhpcyBMQ0QgZGV2aWNlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1sZWQgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLWxlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjQ2ZWM4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1sZWQKQEAgLTAsMCArMSwzNyBAQAorV2hhdDoJCS9zeXMvY2xhc3MvbGVkcy88bGVkPi9icmlnaHRuZXNzCitEYXRlOgkJTWFyY2ggMjAwNgorS2VybmVsVmVyc2lvbjoJMi42LjE3CitDb250YWN0OglSaWNoYXJkIFB1cmRpZSA8cnB1cmRpZUBycHN5cy5uZXQ+CitEZXNjcmlwdGlvbjoKKwkJU2V0IHRoZSBicmlnaHRuZXNzIG9mIHRoZSBMRUQuIE1vc3QgTEVEcyBkb24ndAorCQloYXZlIGhhcmR3YXJlIGJyaWdodG5lc3Mgc3VwcG9ydCBzbyB3aWxsIGp1c3QgYmUgdHVybmVkIG9uIGZvcgorCQlub24temVybyBicmlnaHRuZXNzIHNldHRpbmdzLiBUaGUgdmFsdWUgaXMgYmV0d2VlbiAwIGFuZAorCQkvc3lzL2NsYXNzL2xlZHMvPGxlZD4vbWF4X2JyaWdodG5lc3MuCisKK1doYXQ6CQkvc3lzL2NsYXNzL2xlZHMvPGxlZD4vbWF4X2JyaWdodG5lc3MKK0RhdGU6CQlNYXJjaCAyMDA2CitLZXJuZWxWZXJzaW9uOgkyLjYuMTcKK0NvbnRhY3Q6CVJpY2hhcmQgUHVyZGllIDxycHVyZGllQHJwc3lzLm5ldD4KK0Rlc2NyaXB0aW9uOgorCQlNYXhpbXVtIGJyaWdodG5lc3MgbGV2ZWwgZm9yIHRoaXMgbGVkLCBkZWZhdWx0IGlzIDI1NSAoTEVEX0ZVTEwpLgorCitXaGF0OgkJL3N5cy9jbGFzcy9sZWRzLzxsZWQ+L3RyaWdnZXIKK0RhdGU6CQlNYXJjaCAyMDA2CitLZXJuZWxWZXJzaW9uOgkyLjYuMTcKK0NvbnRhY3Q6CVJpY2hhcmQgUHVyZGllIDxycHVyZGllQHJwc3lzLm5ldD4KK0Rlc2NyaXB0aW9uOgorCQlTZXQgdGhlIHRyaWdnZXIgZm9yIHRoaXMgTEVELiBBIHRyaWdnZXIgaXMgYSBrZXJuZWwgYmFzZWQgc291cmNlCisJCW9mIGxlZCBldmVudHMuCisJCVlvdSBjYW4gY2hhbmdlIHRyaWdnZXJzIGluIGEgc2ltaWxhciBtYW5uZXIgdG8gdGhlIHdheSBhbiBJTworCQlzY2hlZHVsZXIgaXMgY2hvc2VuLiBUcmlnZ2VyIHNwZWNpZmljIHBhcmFtZXRlcnMgY2FuIGFwcGVhciBpbgorCQkvc3lzL2NsYXNzL2xlZHMvPGxlZD4gb25jZSBhIGdpdmVuIHRyaWdnZXIgaXMgc2VsZWN0ZWQuCisKK1doYXQ6CQkvc3lzL2NsYXNzL2xlZHMvPGxlZD4vaW52ZXJ0ZWQKK0RhdGU6CQlKYW51YXJ5IDIwMTEKK0tlcm5lbFZlcnNpb246CTIuNi4zOAorQ29udGFjdDoJUmljaGFyZCBQdXJkaWUgPHJwdXJkaWVAcnBzeXMubmV0PgorRGVzY3JpcHRpb246CisJCUludmVydCB0aGUgTEVEIG9uL29mZiBzdGF0ZS4gVGhpcyBwYXJhbWV0ZXIgaXMgc3BlY2lmaWMgdG8KKwkJZ3BpbyBhbmQgYmFja2xpZ2h0IHRyaWdnZXJzLiBJbiBjYXNlIG9mIHRoZSBiYWNrbGlnaHQgdHJpZ2dlciwKKwkJaXQgaXMgdXNlZnVsIHdoZW4gZHJpdmluZyBhIExFRCB3aGljaCBpcyBpbnRlbmRlZCB0byBpbmRpY2F0ZQorCQlhIGRldmljZSBpbiBhIHN0YW5kYnkgbGlrZSBzdGF0ZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtbGVkLWRyaXZlci1sbTM1MzMgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLWxlZC1kcml2ZXItbG0zNTMzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyMGViYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLWxlZC1kcml2ZXItbG0zNTMzCkBAIC0wLDAgKzEsNjUgQEAKK1doYXQ6CQkvc3lzL2NsYXNzL2xlZHMvPGxlZD4vYWxzX2NoYW5uZWwKK0RhdGU6CQlNYXkgMjAxMgorS2VybmVsVmVyc2lvbjoJMy41CitDb250YWN0OglKb2hhbiBIb3ZvbGQgPGpob3ZvbGRAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVNldCB0aGUgQUxTIG91dHB1dCBjaGFubmVsIHRvIHVzZSBhcyBpbnB1dCBpbgorCQlBTFMtY3VycmVudC1jb250cm9sIG1vZGUgKDEsIDIpLCB3aGVyZQorCisJCTEgLSBvdXRfY3VycmVudDEKKwkJMiAtIG91dF9jdXJyZW50MgorCitXaGF0OgkJL3N5cy9jbGFzcy9sZWRzLzxsZWQ+L2Fsc19lbgorRGF0ZToJCU1heSAyMDEyCitLZXJuZWxWZXJzaW9uOgkzLjUKK0NvbnRhY3Q6CUpvaGFuIEhvdm9sZCA8amhvdm9sZEBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJRW5hYmxlIEFMUy1jdXJyZW50LWNvbnRyb2wgbW9kZSAoMCwgMSkuCisKK1doYXQ6CQkvc3lzL2NsYXNzL2xlZHMvPGxlZD4vZmFsbHRpbWUKK1doYXQ6CQkvc3lzL2NsYXNzL2xlZHMvPGxlZD4vcmlzZXRpbWUKK0RhdGU6CQlBcHJpbCAyMDEyCitLZXJuZWxWZXJzaW9uOgkzLjUKK0NvbnRhY3Q6CUpvaGFuIEhvdm9sZCA8amhvdm9sZEBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2V0IHRoZSBwYXR0ZXJuIGdlbmVyYXRvciBmYWxsIGFuZCByaXNlIHRpbWVzICgwLi43KSwgd2hlcmUKKworCQkwIC0gMjA0OCB1cworCQkxIC0gMjYyIG1zCisJCTIgLSA1MjQgbXMKKwkJMyAtIDEuMDQ5IHMKKwkJNCAtIDIuMDk3IHMKKwkJNSAtIDQuMTk0IHMKKwkJNiAtIDguMzg5IHMKKwkJNyAtIDE2Ljc4IHMKKworV2hhdDoJCS9zeXMvY2xhc3MvbGVkcy88bGVkPi9pZAorRGF0ZToJCUFwcmlsIDIwMTIKK0tlcm5lbFZlcnNpb246CTMuNQorQ29udGFjdDoJSm9oYW4gSG92b2xkIDxqaG92b2xkQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlHZXQgdGhlIGlkIG9mIHRoaXMgbGVkICgwLi4zKS4KKworV2hhdDoJCS9zeXMvY2xhc3MvbGVkcy88bGVkPi9saW5lYXIKK0RhdGU6CQlBcHJpbCAyMDEyCitLZXJuZWxWZXJzaW9uOgkzLjUKK0NvbnRhY3Q6CUpvaGFuIEhvdm9sZCA8amhvdm9sZEBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2V0IHRoZSBicmlnaHRuZXNzLW1hcHBpbmcgbW9kZSAoMCwgMSksIHdoZXJlCisKKwkJMCAtIGV4cG9uZW50aWFsIG1vZGUKKwkJMSAtIGxpbmVhciBtb2RlCisKK1doYXQ6CQkvc3lzL2NsYXNzL2xlZHMvPGxlZD4vcHdtCitEYXRlOgkJQXByaWwgMjAxMgorS2VybmVsVmVyc2lvbjoJMy41CitDb250YWN0OglKb2hhbiBIb3ZvbGQgPGpob3ZvbGRAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVNldCB0aGUgUFdNLWlucHV0IGNvbnRyb2wgbWFzayAoNSBiaXRzKSwgd2hlcmUKKworCQliaXQgNSAtIFBXTS1pbnB1dCBlbmFibGVkIGluIFpvbmUgNAorCQliaXQgNCAtIFBXTS1pbnB1dCBlbmFibGVkIGluIFpvbmUgMworCQliaXQgMyAtIFBXTS1pbnB1dCBlbmFibGVkIGluIFpvbmUgMgorCQliaXQgMiAtIFBXTS1pbnB1dCBlbmFibGVkIGluIFpvbmUgMQorCQliaXQgMSAtIFBXTS1pbnB1dCBlbmFibGVkIGluIFpvbmUgMAorCQliaXQgMCAtIFBXTS1pbnB1dCBlbmFibGVkCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLWxlZC1mbGFzaCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtbGVkLWZsYXNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyMGEwMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLWxlZC1mbGFzaApAQCAtMCwwICsxLDgwIEBACitXaGF0OgkJL3N5cy9jbGFzcy9sZWRzLzxsZWQ+L2ZsYXNoX2JyaWdodG5lc3MKK0RhdGU6CQlNYXJjaCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAKK0NvbnRhY3Q6CUphY2VrIEFuYXN6ZXdza2kgPGouYW5hc3pld3NraUBzYW1zdW5nLmNvbT4KK0Rlc2NyaXB0aW9uOglyZWFkL3dyaXRlCisJCVNldCB0aGUgYnJpZ2h0bmVzcyBvZiB0aGlzIExFRCBpbiB0aGUgZmxhc2ggc3Ryb2JlIG1vZGUsIGluCisJCW1pY3JvYW1wZXJlcy4gVGhlIGZpbGUgaXMgY3JlYXRlZCBvbmx5IGZvciB0aGUgZmxhc2ggTEVEIGRldmljZXMKKwkJdGhhdCBzdXBwb3J0IHNldHRpbmcgZmxhc2ggYnJpZ2h0bmVzcy4KKworCQlUaGUgdmFsdWUgaXMgYmV0d2VlbiAwIGFuZAorCQkvc3lzL2NsYXNzL2xlZHMvPGxlZD4vbWF4X2ZsYXNoX2JyaWdodG5lc3MuCisKK1doYXQ6CQkvc3lzL2NsYXNzL2xlZHMvPGxlZD4vbWF4X2ZsYXNoX2JyaWdodG5lc3MKK0RhdGU6CQlNYXJjaCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAKK0NvbnRhY3Q6CUphY2VrIEFuYXN6ZXdza2kgPGouYW5hc3pld3NraUBzYW1zdW5nLmNvbT4KK0Rlc2NyaXB0aW9uOglyZWFkIG9ubHkKKwkJTWF4aW11bSBicmlnaHRuZXNzIGxldmVsIGZvciB0aGlzIExFRCBpbiB0aGUgZmxhc2ggc3Ryb2JlIG1vZGUsCisJCWluIG1pY3JvYW1wZXJlcy4KKworV2hhdDoJCS9zeXMvY2xhc3MvbGVkcy88bGVkPi9mbGFzaF90aW1lb3V0CitEYXRlOgkJTWFyY2ggMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wCitDb250YWN0OglKYWNlayBBbmFzemV3c2tpIDxqLmFuYXN6ZXdza2lAc2Ftc3VuZy5jb20+CitEZXNjcmlwdGlvbjoJcmVhZC93cml0ZQorCQlIYXJkd2FyZSB0aW1lb3V0IGZvciBmbGFzaCwgaW4gbWljcm9zZWNvbmRzLiBUaGUgZmxhc2ggc3Ryb2JlCisJCWlzIHN0b3BwZWQgYWZ0ZXIgdGhpcyBwZXJpb2Qgb2YgdGltZSBoYXMgcGFzc2VkIGZyb20gdGhlIHN0YXJ0CisJCW9mIHRoZSBzdHJvYmUuIFRoZSBmaWxlIGlzIGNyZWF0ZWQgb25seSBmb3IgdGhlIGZsYXNoIExFRAorCQlkZXZpY2VzIHRoYXQgc3VwcG9ydCBzZXR0aW5nIGZsYXNoIHRpbWVvdXQuCisKK1doYXQ6CQkvc3lzL2NsYXNzL2xlZHMvPGxlZD4vbWF4X2ZsYXNoX3RpbWVvdXQKK0RhdGU6CQlNYXJjaCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAKK0NvbnRhY3Q6CUphY2VrIEFuYXN6ZXdza2kgPGouYW5hc3pld3NraUBzYW1zdW5nLmNvbT4KK0Rlc2NyaXB0aW9uOglyZWFkIG9ubHkKKwkJTWF4aW11bSBmbGFzaCB0aW1lb3V0IGZvciB0aGlzIExFRCwgaW4gbWljcm9zZWNvbmRzLgorCitXaGF0OgkJL3N5cy9jbGFzcy9sZWRzLzxsZWQ+L2ZsYXNoX3N0cm9iZQorRGF0ZToJCU1hcmNoIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMAorQ29udGFjdDoJSmFjZWsgQW5hc3pld3NraSA8ai5hbmFzemV3c2tpQHNhbXN1bmcuY29tPgorRGVzY3JpcHRpb246CXJlYWQvd3JpdGUKKwkJRmxhc2ggc3Ryb2JlIHN0YXRlLiBXaGVuIHdyaXR0ZW4gd2l0aCAxIGl0IHRyaWdnZXJzIGZsYXNoIHN0cm9iZQorCQlhbmQgd2hlbiB3cml0dGVuIHdpdGggMCBpdCB0dXJucyB0aGUgZmxhc2ggb2ZmLgorCisJCU9uIHJlYWQgMSBtZWFucyB0aGF0IGZsYXNoIGlzIGN1cnJlbnRseSBzdHJvYmluZyBhbmQgMCBtZWFucworCQl0aGF0IGZsYXNoIGlzIG9mZi4KKworV2hhdDoJCS9zeXMvY2xhc3MvbGVkcy88bGVkPi9mbGFzaF9mYXVsdAorRGF0ZToJCU1hcmNoIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMAorQ29udGFjdDoJSmFjZWsgQW5hc3pld3NraSA8ai5hbmFzemV3c2tpQHNhbXN1bmcuY29tPgorRGVzY3JpcHRpb246CXJlYWQgb25seQorCQlTcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBmbGFzaCBmYXVsdHMgdGhhdCBtYXkgaGF2ZSBvY2N1cnJlZC4KKwkJRmxhc2ggZmF1bHRzIGFyZSByZS1yZWFkIGFmdGVyIHN0cm9iaW5nIHRoZSBmbGFzaC4gUG9zc2libGUKKwkJZmxhc2ggZmF1bHRzOgorCisJCSogbGVkLW92ZXItdm9sdGFnZSAtIGZsYXNoIGNvbnRyb2xsZXIgdm9sdGFnZSB0byB0aGUgZmxhc2ggTEVECisJCQloYXMgZXhjZWVkZWQgdGhlIGxpbWl0IHNwZWNpZmljIHRvIHRoZSBmbGFzaCBjb250cm9sbGVyCisJCSogZmxhc2gtdGltZW91dC1leGNlZWRlZCAtIHRoZSBmbGFzaCBzdHJvYmUgd2FzIHN0aWxsIG9uIHdoZW4KKwkJCXRoZSB0aW1lb3V0IHNldCBieSB0aGUgdXNlciBoYXMgZXhwaXJlZDsgbm90IGFsbCBmbGFzaAorCQkJY29udHJvbGxlcnMgbWF5IHNldCB0aGlzIGluIGFsbCBzdWNoIGNvbmRpdGlvbnMKKwkJKiBjb250cm9sbGVyLW92ZXItdGVtcGVyYXR1cmUgLSB0aGUgZmxhc2ggY29udHJvbGxlciBoYXMKKwkJCW92ZXJoZWF0ZWQKKwkJKiBjb250cm9sbGVyLXNob3J0LWNpcmN1aXQgLSB0aGUgc2hvcnQgY2lyY3VpdCBwcm90ZWN0aW9uCisJCQlvZiB0aGUgZmxhc2ggY29udHJvbGxlciBoYXMgYmVlbiB0cmlnZ2VyZWQKKwkJKiBsZWQtcG93ZXItc3VwcGx5LW92ZXItY3VycmVudCAtIGN1cnJlbnQgaW4gdGhlIExFRCBwb3dlcgorCQkJc3VwcGx5IGhhcyBleGNlZWRlZCB0aGUgbGltaXQgc3BlY2lmaWMgdG8gdGhlIGZsYXNoCisJCQljb250cm9sbGVyCisJCSogaW5kaWNhdG9yLWxlZC1mYXVsdCAtIHRoZSBmbGFzaCBjb250cm9sbGVyIGhhcyBkZXRlY3RlZAorCQkJYSBzaG9ydCBvciBvcGVuIGNpcmN1aXQgY29uZGl0aW9uIG9uIHRoZSBpbmRpY2F0b3IgTEVECisJCSogbGVkLXVuZGVyLXZvbHRhZ2UgLSBmbGFzaCBjb250cm9sbGVyIHZvbHRhZ2UgdG8gdGhlIGZsYXNoCisJCQlMRUQgaGFzIGJlZW4gYmVsb3cgdGhlIG1pbmltdW0gbGltaXQgc3BlY2lmaWMgdG8KKwkJCXRoZSBmbGFzaAorCQkqIGNvbnRyb2xsZXItdW5kZXItdm9sdGFnZSAtIHRoZSBpbnB1dCB2b2x0YWdlIG9mIHRoZSBmbGFzaAorCQkJY29udHJvbGxlciBpcyBiZWxvdyB0aGUgbGltaXQgdW5kZXIgd2hpY2ggc3Ryb2JpbmcgdGhlCisJCQlmbGFzaCBhdCBmdWxsIGN1cnJlbnQgd2lsbCBub3QgYmUgcG9zc2libGU7CisJCQl0aGUgY29uZGl0aW9uIHBlcnNpc3RzIHVudGlsIHRoaXMgZmxhZyBpcyBubyBsb25nZXIgc2V0CisJCSogbGVkLW92ZXItdGVtcGVyYXR1cmUgLSB0aGUgdGVtcGVyYXR1cmUgb2YgdGhlIExFRCBoYXMgZXhjZWVkZWQKKwkJCWl0cyBhbGxvd2VkIHVwcGVyIGxpbWl0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLWxlZHMtZ3Q2ODNyIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1sZWRzLWd0NjgzcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGZhZTYwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1sZWRzLWd0NjgzcgpAQCAtMCwwICsxLDE2IEBACitXaGF0OgkJL3N5cy9jbGFzcy9sZWRzLzxsZWQ+L2d0Njgzci9tb2RlCitEYXRlOgkJSnVuIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTcKK0NvbnRhY3Q6CUphbm5lIEthbm5pYWluZW4gPGphbm5lLmthbm5pYWluZW5AZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVNldCB0aGUgbW9kZSBvZiBMRURzLiBZb3Ugc2hvdWxkIG5vdGljZSB0aGF0IGNoYW5naW5nIHRoZSBtb2RlCisJCW9mIG9uZSBMRUQgd2lsbCB1cGRhdGUgdGhlIG1vZGUgb2YgaXRzIHR3byBzaWJsaW5nIGRldmljZXMgYXMKKwkJd2VsbC4KKworCQkwIC0gbm9ybWFsCisJCTEgLSBhdWRpbworCQkyIC0gYnJlYXRoaW5nCisKKwkJTm9ybWFsOiBMRURzIGFyZSBmdWxseSBvbiB3aGVuIGVuYWJsZWQKKwkJQXVkaW86ICBMRURzIGJyaWdodG5lc3MgZGVwZW5kcyBvbiBzb3VuZCBsZXZlbAorCQlCcmVhdGhpbmc6IExFRHMgYnJpZ2h0bmVzcyB2YXJpZXMgYXQgaHVtYW4gYnJlYXRoaW5nIHJhdGUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLW1laSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtbWVpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZDk4ODgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLW1laQpAQCAtMCwwICsxLDMxIEBACitXaGF0OgkJL3N5cy9jbGFzcy9tZWkvCitEYXRlOgkJTWF5IDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTcKK0NvbnRhY3Q6CVRvbWFzIFdpbmtsZXIgPHRvbWFzLndpbmtsZXJAaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSBtZWkvIGNsYXNzIHN1Yi1kaXJlY3RvcnkgYmVsb25ncyB0byBtZWkgZGV2aWNlIGNsYXNzCisKKworV2hhdDoJCS9zeXMvY2xhc3MvbWVpL21laU4vCitEYXRlOgkJTWF5IDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTcKK0NvbnRhY3Q6CVRvbWFzIFdpbmtsZXIgPHRvbWFzLndpbmtsZXJAaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2NsYXNzL21laS9tZWlOIGRpcmVjdG9yeSBpcyBjcmVhdGVkIGZvcgorCQllYWNoIHByb2JlZCBtZWkgZGV2aWNlCisKK1doYXQ6CQkvc3lzL2NsYXNzL21laS9tZWlOL2Z3X3N0YXR1cworRGF0ZToJCU5vdiAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE5CitDb250YWN0OglUb21hcyBXaW5rbGVyIDx0b21hcy53aW5rbGVyQGludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOglEaXNwbGF5IGZ3IHN0YXR1cyByZWdpc3RlcnMgY29udGVudAorCisJCVRoZSBNRSBGVyB3cml0ZXMgaXRzIHN0YXR1cyBpbmZvcm1hdGlvbiBpbnRvIGZ3IHN0YXR1cworCQlyZWdpc3RlcnMgZm9yIEJJT1MgYW5kIE9TIHRvIG1vbml0b3IgZncgaGVhbHRoLgorCisJCVRoZSByZWdpc3RlciBjb250YWlucyBydW5uaW5nIHN0YXRlLCBwb3dlciBtYW5hZ2VtZW50CisJCXN0YXRlLCBlcnJvciBjb2RlcywgYW5kIG90aGVycy4gVGhlIHdheSB0aGUgcmVnaXN0ZXJzCisJCWFyZSBkZWNvZGVkIGRlcGVuZHMgb24gUENIIG9yIFNvQyBnZW5lcmF0aW9uLgorCQlBbHNvIG51bWJlciBvZiByZWdpc3RlcnMgdmFyaWVzIGJldHdlZW4gMSBhbmQgNgorCQlkZXBlbmRpbmcgb24gZ2VuZXJhdGlvbi4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1taWMudHh0IGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1taWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0NWVlZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLW1pYy50eHQKQEAgLTAsMCArMSwxNjYgQEAKK1doYXQ6CQkvc3lzL2NsYXNzL21pYy8KK0RhdGU6CQlPY3RvYmVyIDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTMKK0NvbnRhY3Q6CVN1ZGVlcCBEdXR0IDxzdWRlZXAuZHV0dEBpbnRlbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIG1pYyBjbGFzcyBkaXJlY3RvcnkgYmVsb25ncyB0byBJbnRlbCBNSUMgZGV2aWNlcyBhbmQKKwkJcHJvdmlkZXMgaW5mb3JtYXRpb24gcGVyIE1JQyBkZXZpY2UuIEFuIEludGVsIE1JQyBkZXZpY2UgaXMgYQorCQlQQ0llIGZvcm0gZmFjdG9yIGFkZC1pbiBDb3Byb2Nlc3NvciBjYXJkIGJhc2VkIG9uIHRoZSBJbnRlbCBNYW55CisJCUludGVncmF0ZWQgQ29yZSAoTUlDKSBhcmNoaXRlY3R1cmUgdGhhdCBydW5zIGEgTGludXggT1MuCisKK1doYXQ6CQkvc3lzL2NsYXNzL21pYy9taWMoeCkKK0RhdGU6CQlPY3RvYmVyIDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTMKK0NvbnRhY3Q6CVN1ZGVlcCBEdXR0IDxzdWRlZXAuZHV0dEBpbnRlbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIGRpcmVjdG9yaWVzIC9zeXMvY2xhc3MvbWljL21pYzAsIC9zeXMvY2xhc3MvbWljL21pYzEgZXRjLiwKKwkJcmVwcmVzZW50IE1JQyBkZXZpY2VzICgwLDEsLi5ldGMpLiBFYWNoIGRpcmVjdG9yeSBoYXMKKwkJaW5mb3JtYXRpb24gc3BlY2lmaWMgdG8gdGhhdCBNSUMgZGV2aWNlLgorCitXaGF0OgkJL3N5cy9jbGFzcy9taWMvbWljKHgpL2ZhbWlseQorRGF0ZToJCU9jdG9iZXIgMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMworQ29udGFjdDoJU3VkZWVwIER1dHQgPHN1ZGVlcC5kdXR0QGludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlQcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQ29wcm9jZXNzb3IgZmFtaWx5IGZvciBhbiBJbnRlbAorCQlNSUMgZGV2aWNlLiBGb3IgZXhhbXBsZSAtICJ4MTAwIgorCitXaGF0OgkJL3N5cy9jbGFzcy9taWMvbWljKHgpL3N0ZXBwaW5nCitEYXRlOgkJT2N0b2JlciAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjEzCitDb250YWN0OglTdWRlZXAgRHV0dCA8c3VkZWVwLmR1dHRAaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCVByb3ZpZGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzaWxpY29uIHN0ZXBwaW5nIGZvciBhbiBJbnRlbAorCQlNSUMgZGV2aWNlLiBGb3IgZXhhbXBsZSAtICJBMCIgb3IgIkIwIgorCitXaGF0OgkJL3N5cy9jbGFzcy9taWMvbWljKHgpL3N0YXRlCitEYXRlOgkJT2N0b2JlciAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjEzCitDb250YWN0OglTdWRlZXAgRHV0dCA8c3VkZWVwLmR1dHRAaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCVdoZW4gcmVhZCwgdGhpcyBlbnRyeSBwcm92aWRlcyB0aGUgY3VycmVudCBzdGF0ZSBvZiBhbiBJbnRlbAorCQlNSUMgZGV2aWNlIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjYXJkIE9TLiBQb3NzaWJsZSB2YWx1ZXMgdGhhdAorCQl3aWxsIGJlIHJlYWQgYXJlOgorCQkicmVhZHkiIC0gVGhlIE1JQyBkZXZpY2UgaXMgcmVhZHkgdG8gYm9vdCB0aGUgY2FyZCBPUy4gT24KKwkJcmVhZGluZyB0aGlzIGVudHJ5IGFmdGVyIGFuIE9TUE0gcmVzdW1lLCBhICJib290IiBoYXMgdG8gYmUKKwkJd3JpdHRlbiB0byB0aGlzIGVudHJ5IGlmIHRoZSBjYXJkIHdhcyBwcmV2aW91c2x5IHNodXRkb3duCisJCWR1cmluZyBPU1BNIHN1c3BlbmQuCisJCSJib290aW5nIiAtIFRoZSBNSUMgZGV2aWNlIGhhcyBpbml0aWF0ZWQgYm9vdGluZyBhIGNhcmQgT1MuCisJCSJvbmxpbmUiIC0gVGhlIE1JQyBkZXZpY2UgaGFzIGNvbXBsZXRlZCBib290IGFuZCBpcyBvbmxpbmUKKwkJInNodXR0aW5nX2Rvd24iIC0gVGhlIGNhcmQgT1MgaXMgc2h1dHRpbmcgZG93bi4KKwkJInJlc2V0dGluZyIgLSBBIHJlc2V0IGhhcyBiZWVuIGluaXRpYXRlZCBmb3IgdGhlIE1JQyBkZXZpY2UKKwkJInJlc2V0X2ZhaWxlZCIgLSBUaGUgTUlDIGRldmljZSBoYXMgZmFpbGVkIHRvIHJlc2V0LgorCisJCVdoZW4gd3JpdHRlbiwgdGhpcyBzeXNmcyBlbnRyeSB0cmlnZ2VycyBkaWZmZXJlbnQgc3RhdGUgY2hhbmdlCisJCW9wZXJhdGlvbnMgZGVwZW5kaW5nIHVwb24gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGNhcmQgT1MuCisJCUFjY2VwdGFibGUgdmFsdWVzIGFyZToKKwkJImJvb3QiIC0gQm9vdCB0aGUgY2FyZCBPUyBpbWFnZSBzcGVjaWZpZWQgYnkgdGhlIGNvbWJpbmF0aW9uCisJCQkgb2YgZmlybXdhcmUsIHJhbWRpc2ssIGNtZGxpbmUgYW5kIGJvb3Rtb2RlCisJCQlzeXNmcyBlbnRyaWVzLgorCQkicmVzZXQiIC0gSW5pdGlhdGVzIGRldmljZSByZXNldC4KKwkJInNodXRkb3duIiAtIEluaXRpYXRlcyBjYXJkIE9TIHNodXRkb3duLgorCitXaGF0OgkJL3N5cy9jbGFzcy9taWMvbWljKHgpL3NodXRkb3duX3N0YXR1cworRGF0ZToJCU9jdG9iZXIgMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMworQ29udGFjdDoJU3VkZWVwIER1dHQgPHN1ZGVlcC5kdXR0QGludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlBbiBJbnRlbCBNSUMgZGV2aWNlIHJ1bnMgYSBMaW51eCBPUyBkdXJpbmcgaXRzIG9wZXJhdGlvbi4gVGhpcworCQlPUyBjYW4gc2h1dGRvd24gYmVjYXVzZSBvZiB2YXJpb3VzIHJlYXNvbnMuIFdoZW4gcmVhZCwgdGhpcworCQllbnRyeSBwcm92aWRlcyB0aGUgc3RhdHVzIG9uIHdoeSB0aGUgY2FyZCBPUyB3YXMgc2h1dGRvd24uCisJCVBvc3NpYmxlIHZhbHVlcyBhcmU6CisJCSJub3AiIC0gIHNodXRkb3duIHN0YXR1cyBpcyBub3QgYXBwbGljYWJsZSwgd2hlbiB0aGUgY2FyZCBPUyBpcworCQkJIm9ubGluZSIKKwkJImNyYXNoZWQiIC0gU2h1dGRvd24gYmVjYXVzZSBvZiBhIEhXIG9yIFNXIGNyYXNoLgorCQkiaGFsdGVkIiAtIFNodXRkb3duIGJlY2F1c2Ugb2YgYSBoYWx0IGNvbW1hbmQuCisJCSJwb3dlcm9mZiIgLSBTaHV0ZG93biBiZWNhdXNlIG9mIGEgcG93ZXJvZmYgY29tbWFuZC4KKwkJInJlc3RhcnQiIC0gU2h1dGRvd24gYmVjYXVzZSBvZiBhIHJlc3RhcnQgY29tbWFuZC4KKworV2hhdDoJCS9zeXMvY2xhc3MvbWljL21pYyh4KS9jbWRsaW5lCitEYXRlOgkJT2N0b2JlciAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjEzCitDb250YWN0OglTdWRlZXAgRHV0dCA8c3VkZWVwLmR1dHRAaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCUFuIEludGVsIE1JQyBkZXZpY2UgcnVucyBhIExpbnV4IE9TIGR1cmluZyBpdHMgb3BlcmF0aW9uLiBCZWZvcmUKKwkJYm9vdGluZyB0aGlzIGNhcmQgT1MsIGl0IGlzIHBvc3NpYmxlIHRvIHBhc3Mga2VybmVsIGNvbW1hbmQgbGluZQorCQlvcHRpb25zIHRvIGNvbmZpZ3VyZSB2YXJpb3VzIGZlYXR1cmVzIGluIGl0LCBzaW1pbGFyIHRvCisJCXNlbGYtYm9vdGFibGUgbWFjaGluZXMuIFdoZW4gcmVhZCwgdGhpcyBlbnRyeSBwcm92aWRlcworCQlpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBrZXJuZWwgY29tbWFuZCBsaW5lIG9wdGlvbnMgc2V0IHRvCisJCWJvb3QgdGhlIGNhcmQgT1MuIFRoaXMgZW50cnkgY2FuIGJlIHdyaXR0ZW4gdG8gY2hhbmdlIHRoZQorCQlleGlzdGluZyBrZXJuZWwgY29tbWFuZCBsaW5lIG9wdGlvbnMuIFR5cGljYWxseSwgdGhlIHVzZXIgd291bGQKKwkJd2FudCB0byByZWFkIHRoZSBjdXJyZW50IGNvbW1hbmQgbGluZSBvcHRpb25zLCBhcHBlbmQgbmV3IG9uZXMKKwkJb3IgbW9kaWZ5IGV4aXN0aW5nIG9uZXMgYW5kIHRoZW4gd3JpdGUgdGhlIHdob2xlIGtlcm5lbCBjb21tYW5kCisJCWxpbmUgYmFjayB0byB0aGlzIGVudHJ5LgorCitXaGF0OgkJL3N5cy9jbGFzcy9taWMvbWljKHgpL2Zpcm13YXJlCitEYXRlOgkJT2N0b2JlciAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjEzCitDb250YWN0OglTdWRlZXAgRHV0dCA8c3VkZWVwLmR1dHRAaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCVdoZW4gcmVhZCwgdGhpcyBzeXNmcyBlbnRyeSBwcm92aWRlcyB0aGUgcGF0aCBuYW1lIHVuZGVyCisJCS9saWIvZmlybXdhcmUvIHdoZXJlIHRoZSBmaXJtd2FyZSBpbWFnZSB0byBiZSBib290ZWQgb24gdGhlCisJCWNhcmQgY2FuIGJlIGZvdW5kLiBUaGUgZW50cnkgY2FuIGJlIHdyaXR0ZW4gdG8gY2hhbmdlIHRoZQorCQlmaXJtd2FyZSBpbWFnZSBsb2NhdGlvbiB1bmRlciAvbGliL2Zpcm13YXJlLy4KKworV2hhdDoJCS9zeXMvY2xhc3MvbWljL21pYyh4KS9yYW1kaXNrCitEYXRlOgkJT2N0b2JlciAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjEzCitDb250YWN0OglTdWRlZXAgRHV0dCA8c3VkZWVwLmR1dHRAaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCVdoZW4gcmVhZCwgdGhpcyBzeXNmcyBlbnRyeSBwcm92aWRlcyB0aGUgcGF0aCBuYW1lIHVuZGVyCisJCS9saWIvZmlybXdhcmUvIHdoZXJlIHRoZSByYW1kaXNrIGltYWdlIHRvIGJlIHVzZWQgZHVyaW5nIGNhcmQKKwkJT1MgYm9vdCBjYW4gYmUgZm91bmQuIFRoZSBlbnRyeSBjYW4gYmUgd3JpdHRlbiB0byBjaGFuZ2UKKwkJdGhlIHJhbWRpc2sgaW1hZ2UgbG9jYXRpb24gdW5kZXIgL2xpYi9maXJtd2FyZS8uCisKK1doYXQ6CQkvc3lzL2NsYXNzL21pYy9taWMoeCkvYm9vdG1vZGUKK0RhdGU6CQlPY3RvYmVyIDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTMKK0NvbnRhY3Q6CVN1ZGVlcCBEdXR0IDxzdWRlZXAuZHV0dEBpbnRlbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJV2hlbiByZWFkLCB0aGlzIHN5c2ZzIGVudHJ5IHByb3ZpZGVzIHRoZSBjdXJyZW50IGJvb3Rtb2RlIGZvcgorCQl0aGUgY2FyZC4gVGhpcyBzeXNmcyBlbnRyeSBjYW4gYmUgd3JpdHRlbiB3aXRoIHRoZSBmb2xsb3dpbmcKKwkJdmFsaWQgc3RyaW5nczoKKwkJYSkgbGludXggLSBCb290IGEgTGludXggaW1hZ2UuCisJCWIpIGZsYXNoIC0gQm9vdCBhbiBpbWFnZSBmb3IgZmxhc2ggdXBkYXRlcy4KKworV2hhdDoJCS9zeXMvY2xhc3MvbWljL21pYyh4KS9sb2dfYnVmX2FkZHIKK0RhdGU6CQlPY3RvYmVyIDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTMKK0NvbnRhY3Q6CVN1ZGVlcCBEdXR0IDxzdWRlZXAuZHV0dEBpbnRlbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJQW4gSW50ZWwgTUlDIGRldmljZSBydW5zIGEgTGludXggT1MgZHVyaW5nIGl0cyBvcGVyYXRpb24uIEZvcgorCQlkZWJ1Z2dpbmcgcHVycG9zZSBhbmQgZWFybHkga2VybmVsIGJvb3QgbWVzc2FnZXMsIHRoZSB1c2VyIGNhbgorCQlhY2Nlc3MgdGhlIGNhcmQgT1MgbG9nIGJ1ZmZlciB2aWEgZGVidWdmcy4gV2hlbiByZWFkLCB0aGlzIGVudHJ5CisJCXByb3ZpZGVzIHRoZSBrZXJuZWwgdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBidWZmZXIgd2hlcmUgdGhlIGNhcmQKKwkJT1MgbG9nIGJ1ZmZlciBjYW4gYmUgcmVhZC4gVGhpcyBlbnRyeSBpcyB3cml0dGVuIGJ5IHRoZSBob3N0CisJCWNvbmZpZ3VyYXRpb24gZGFlbW9uIHRvIHNldCB0aGUgbG9nIGJ1ZmZlciBhZGRyZXNzLiBUaGUgY29ycmVjdAorCQlsb2cgYnVmZmVyIGFkZHJlc3MgdG8gYmUgd3JpdHRlbiBjYW4gYmUgZm91bmQgaW4gdGhlIFN5c3RlbS5tYXAKKwkJZmlsZSBvZiB0aGUgY2FyZCBPUy4KKworV2hhdDoJCS9zeXMvY2xhc3MvbWljL21pYyh4KS9sb2dfYnVmX2xlbgorRGF0ZToJCU9jdG9iZXIgMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMworQ29udGFjdDoJU3VkZWVwIER1dHQgPHN1ZGVlcC5kdXR0QGludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlBbiBJbnRlbCBNSUMgZGV2aWNlIHJ1bnMgYSBMaW51eCBPUyBkdXJpbmcgaXRzIG9wZXJhdGlvbi4gRm9yCisJCWRlYnVnZ2luZyBwdXJwb3NlIGFuZCBlYXJseSBrZXJuZWwgYm9vdCBtZXNzYWdlcywgdGhlIHVzZXIgY2FuCisJCWFjY2VzcyB0aGUgY2FyZCBPUyBsb2cgYnVmZmVyIHZpYSBkZWJ1Z2ZzLiBXaGVuIHJlYWQsIHRoaXMgZW50cnkKKwkJcHJvdmlkZXMgdGhlIGtlcm5lbCB2aXJ0dWFsIGFkZHJlc3Mgd2hlcmUgdGhlIGNhcmQgT1MgbG9nIGJ1ZmZlcgorCQlsZW5ndGggY2FuIGJlIHJlYWQuIFRoaXMgZW50cnkgaXMgd3JpdHRlbiBieSBob3N0IGNvbmZpZ3VyYXRpb24KKwkJZGFlbW9uIHRvIHNldCB0aGUgbG9nIGJ1ZmZlciBsZW5ndGggYWRkcmVzcy4gVGhlIGNvcnJlY3QgbG9nCisJCWJ1ZmZlciBsZW5ndGggYWRkcmVzcyB0byBiZSB3cml0dGVuIGNhbiBiZSBmb3VuZCBpbiB0aGUKKwkJU3lzdGVtLm1hcCBmaWxlIG9mIHRoZSBjYXJkIE9TLgorCitXaGF0OgkJL3N5cy9jbGFzcy9taWMvbWljKHgpL2hlYXJ0YmVhdF9lbmFibGUKK0RhdGU6CQlNYXJjaCAyMDE1CitLZXJuZWxWZXJzaW9uOgkzLjIwCitDb250YWN0OglBc2h1dG9zaCBEaXhpdCA8YXNodXRvc2guZGl4aXRAaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSBNSUMgZHJpdmVycyBkZXRlY3QgYW5kIGluZm9ybSB1c2VyIHNwYWNlIGFib3V0IGNhcmQgY3Jhc2hlcworCQl2aWEgYSBoZWFydGJlYXQgbWVjaGFuaXNtIChzZWUgdGhlIGRlc2NyaXB0aW9uIG9mCisJCXNodXRkb3duX3N0YXR1cyBhYm92ZSkuIFVzZXIgc3BhY2UgY2FuIHR1cm4gb2ZmIHRoaXMKKwkJbm90aWZpY2F0aW9uIGJ5IHNldHRpbmcgaGVhcnRiZWF0X2VuYWJsZSB0byAwIGFuZCBlbmFibGUgaXQgYnkKKwkJc2V0dGluZyB0aGlzIGVudHJ5IHRvIDEuIElmIHRoaXMgbm90aWZpY2F0aW9uIGlzIGRpc2FibGVkIGl0IGlzCisJCXRoZSByZXNwb25zaWJpbGl0eSBvZiB1c2VyIHNwYWNlIHRvIGRldGVjdCBjYXJkIGNyYXNoZXMgdmlhCisJCWFsdGVybmF0aXZlIG1lYW5zIHN1Y2ggYXMgYSBuZXR3b3JrIHBpbmcuIFRoaXMgc2V0dGluZyBpcworCQllbmFibGVkIGJ5IGRlZmF1bHQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLW10ZCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtbXRkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiNWMzYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLW10ZApAQCAtMCwwICsxLDIzNCBAQAorV2hhdDoJCS9zeXMvY2xhc3MvbXRkLworRGF0ZToJCUFwcmlsIDIwMDkKK0tlcm5lbFZlcnNpb246CTIuNi4yOQorQ29udGFjdDoJbGludXgtbXRkQGxpc3RzLmluZnJhZGVhZC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlUaGUgbXRkLyBjbGFzcyBzdWJkaXJlY3RvcnkgYmVsb25ncyB0byB0aGUgTVREIHN1YnN5c3RlbQorCQkoTVREIGNvcmUpLgorCitXaGF0OgkJL3N5cy9jbGFzcy9tdGQvbXRkWC8KK0RhdGU6CQlBcHJpbCAyMDA5CitLZXJuZWxWZXJzaW9uOgkyLjYuMjkKK0NvbnRhY3Q6CWxpbnV4LW10ZEBsaXN0cy5pbmZyYWRlYWQub3JnCitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvY2xhc3MvbXRkL210ZHswLDEsMiwzLC4uLn0gZGlyZWN0b3JpZXMgY29ycmVzcG9uZAorCQl0byBlYWNoIC9kZXYvbXRkWCBjaGFyYWN0ZXIgZGV2aWNlLiAgVGhlc2UgbWF5IHJlcHJlc2VudAorCQlwaHlzaWNhbC9zaW11bGF0ZWQgZmxhc2ggZGV2aWNlcywgcGFydGl0aW9ucyBvbiBhIGZsYXNoCisJCWRldmljZSwgb3IgY29uY2F0ZW5hdGVkIGZsYXNoIGRldmljZXMuCisKK1doYXQ6CQkvc3lzL2NsYXNzL210ZC9tdGRYcm8vCitEYXRlOgkJQXByaWwgMjAwOQorS2VybmVsVmVyc2lvbjoJMi42LjI5CitDb250YWN0OglsaW51eC1tdGRAbGlzdHMuaW5mcmFkZWFkLm9yZworRGVzY3JpcHRpb246CisJCVRoZXNlIGRpcmVjdG9yaWVzIHByb3ZpZGUgdGhlIGNvcnJlc3BvbmRpbmcgcmVhZC1vbmx5IGRldmljZQorCQlub2RlcyBmb3IgL3N5cy9jbGFzcy9tdGQvbXRkWC8gLgorCitXaGF0OgkJL3N5cy9jbGFzcy9tdGQvbXRkWC9kZXYKK0RhdGU6CQlBcHJpbCAyMDA5CitLZXJuZWxWZXJzaW9uOgkyLjYuMjkKK0NvbnRhY3Q6CWxpbnV4LW10ZEBsaXN0cy5pbmZyYWRlYWQub3JnCitEZXNjcmlwdGlvbjoKKwkJTWFqb3IgYW5kIG1pbm9yIG51bWJlcnMgb2YgdGhlIGNoYXJhY3RlciBkZXZpY2UgY29ycmVzcG9uZGluZworCQl0byB0aGlzIE1URCBkZXZpY2UgKGluIDxtYWpvcj46PG1pbm9yPiBmb3JtYXQpLiAgVGhpcyBpcyB0aGUKKwkJcmVhZC13cml0ZSBkZXZpY2Ugc28gPG1pbm9yPiB3aWxsIGJlIGV2ZW4uCisKK1doYXQ6CQkvc3lzL2NsYXNzL210ZC9tdGRYcm8vZGV2CitEYXRlOgkJQXByaWwgMjAwOQorS2VybmVsVmVyc2lvbjoJMi42LjI5CitDb250YWN0OglsaW51eC1tdGRAbGlzdHMuaW5mcmFkZWFkLm9yZworRGVzY3JpcHRpb246CisJCU1ham9yIGFuZCBtaW5vciBudW1iZXJzIG9mIHRoZSBjaGFyYWN0ZXIgZGV2aWNlIGNvcnJlc3BvbmRpbmcKKwkJdG8gdGhlIHJlYWQtb25seSB2YXJpYW50IG9mIHRoaWUgTVREIGRldmljZSAoaW4KKwkJPG1ham9yPjo8bWlub3I+IGZvcm1hdCkuICBJbiB0aGlzIGNhc2UgPG1pbm9yPiB3aWxsIGJlIG9kZC4KKworV2hhdDoJCS9zeXMvY2xhc3MvbXRkL210ZFgvZXJhc2VzaXplCitEYXRlOgkJQXByaWwgMjAwOQorS2VybmVsVmVyc2lvbjoJMi42LjI5CitDb250YWN0OglsaW51eC1tdGRAbGlzdHMuaW5mcmFkZWFkLm9yZworRGVzY3JpcHRpb246CisJCSJNYWpvciIgZXJhc2Ugc2l6ZSBmb3IgdGhlIGRldmljZS4gIElmIG51bWVyYXNlcmVnaW9ucyBpcworCQl6ZXJvLCB0aGlzIGlzIHRoZSBlcmFzZWJsb2NrIHNpemUgZm9yIHRoZSBlbnRpcmUgZGV2aWNlLgorCQlPdGhlcndpc2UsIHRoZSBNRU1HRVRSRUdJT05DT1VOVC9NRU1HRVRSRUdJT05JTkZPIGlvY3RscworCQljYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGFjdHVhbCBlcmFzZWJsb2NrIGxheW91dC4KKworV2hhdDoJCS9zeXMvY2xhc3MvbXRkL210ZFgvZmxhZ3MKK0RhdGU6CQlBcHJpbCAyMDA5CitLZXJuZWxWZXJzaW9uOgkyLjYuMjkKK0NvbnRhY3Q6CWxpbnV4LW10ZEBsaXN0cy5pbmZyYWRlYWQub3JnCitEZXNjcmlwdGlvbjoKKwkJQSBoZXhhZGVjaW1hbCB2YWx1ZSByZXByZXNlbnRpbmcgdGhlIGRldmljZSBmbGFncywgT1JlZAorCQl0b2dldGhlcjoKKworCQkweDA0MDA6IE1URF9XUklURUFCTEUgLSBkZXZpY2UgaXMgd3JpdGFibGUKKwkJMHgwODAwOiBNVERfQklUX1dSSVRFQUJMRSAtIHNpbmdsZSBiaXRzIGNhbiBiZSBmbGlwcGVkCisJCTB4MTAwMDogTVREX05PX0VSQVNFIC0gbm8gZXJhc2UgbmVjZXNzYXJ5CisJCTB4MjAwMDogTVREX1BPV0VSVVBfTE9DSyAtIGFsd2F5cyBsb2NrZWQgYWZ0ZXIgcmVzZXQKKworV2hhdDoJCS9zeXMvY2xhc3MvbXRkL210ZFgvbmFtZQorRGF0ZToJCUFwcmlsIDIwMDkKK0tlcm5lbFZlcnNpb246CTIuNi4yOQorQ29udGFjdDoJbGludXgtbXRkQGxpc3RzLmluZnJhZGVhZC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlBIGh1bWFuLXJlYWRhYmxlIEFTQ0lJIG5hbWUgZm9yIHRoZSBkZXZpY2Ugb3IgcGFydGl0aW9uLgorCQlUaGlzIHdpbGwgbWF0Y2ggdGhlIG5hbWUgaW4gL3Byb2MvbXRkIC4KKworV2hhdDoJCS9zeXMvY2xhc3MvbXRkL210ZFgvbnVtZXJhc2VyZWdpb25zCitEYXRlOgkJQXByaWwgMjAwOQorS2VybmVsVmVyc2lvbjoJMi42LjI5CitDb250YWN0OglsaW51eC1tdGRAbGlzdHMuaW5mcmFkZWFkLm9yZworRGVzY3JpcHRpb246CisJCUZvciBkZXZpY2VzIHRoYXQgaGF2ZSB2YXJpYWJsZSBlcmFzZWJsb2NrIHNpemVzLCB0aGlzCisJCXByb3ZpZGVzIHRoZSB0b3RhbCBudW1iZXIgb2YgZXJhc2UgcmVnaW9ucy4gIE90aGVyd2lzZSwKKwkJaXQgd2lsbCByZWFkIGJhY2sgYXMgemVyby4KKworV2hhdDoJCS9zeXMvY2xhc3MvbXRkL210ZFgvb29ic2l6ZQorRGF0ZToJCUFwcmlsIDIwMDkKK0tlcm5lbFZlcnNpb246CTIuNi4yOQorQ29udGFjdDoJbGludXgtbXRkQGxpc3RzLmluZnJhZGVhZC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlOdW1iZXIgb2YgT09CIGJ5dGVzIHBlciBwYWdlLgorCitXaGF0OgkJL3N5cy9jbGFzcy9tdGQvbXRkWC9zaXplCitEYXRlOgkJQXByaWwgMjAwOQorS2VybmVsVmVyc2lvbjoJMi42LjI5CitDb250YWN0OglsaW51eC1tdGRAbGlzdHMuaW5mcmFkZWFkLm9yZworRGVzY3JpcHRpb246CisJCVRvdGFsIHNpemUgb2YgdGhlIGRldmljZS9wYXJ0aXRpb24sIGluIGJ5dGVzLgorCitXaGF0OgkJL3N5cy9jbGFzcy9tdGQvbXRkWC90eXBlCitEYXRlOgkJQXByaWwgMjAwOQorS2VybmVsVmVyc2lvbjoJMi42LjI5CitDb250YWN0OglsaW51eC1tdGRAbGlzdHMuaW5mcmFkZWFkLm9yZworRGVzY3JpcHRpb246CisJCU9uZSBvZiB0aGUgZm9sbG93aW5nIEFTQ0lJIHN0cmluZ3MsIHJlcHJlc2VudGluZyB0aGUgZGV2aWNlCisJCXR5cGU6CisKKwkJYWJzZW50LCByYW0sIHJvbSwgbm9yLCBuYW5kLCBtbGMtbmFuZCwgZGF0YWZsYXNoLCB1YmksIHVua25vd24KKworV2hhdDoJCS9zeXMvY2xhc3MvbXRkL210ZFgvd3JpdGVzaXplCitEYXRlOgkJQXByaWwgMjAwOQorS2VybmVsVmVyc2lvbjoJMi42LjI5CitDb250YWN0OglsaW51eC1tdGRAbGlzdHMuaW5mcmFkZWFkLm9yZworRGVzY3JpcHRpb246CisJCU1pbmltYWwgd3JpdGFibGUgZmxhc2ggdW5pdCBzaXplLiAgVGhpcyB3aWxsIGFsd2F5cyBiZQorCQlhIHBvc2l0aXZlIGludGVnZXIuCisKKwkJSW4gdGhlIGNhc2Ugb2YgTk9SIGZsYXNoIGl0IGlzIDEgKGV2ZW4gdGhvdWdoIGluZGl2aWR1YWwKKwkJYml0cyBjYW4gYmUgY2xlYXJlZCkuCisKKwkJSW4gdGhlIGNhc2Ugb2YgTkFORCBmbGFzaCBpdCBpcyBvbmUgTkFORCBwYWdlIChvciBhCisJCWhhbGYgcGFnZSwgb3IgYSBxdWFydGVyIHBhZ2UpLgorCisJCUluIHRoZSBjYXNlIG9mIEVDQyBOT1IsIGl0IGlzIHRoZSBFQ0MgYmxvY2sgc2l6ZS4KKworV2hhdDoJCS9zeXMvY2xhc3MvbXRkL210ZFgvZWNjX3N0cmVuZ3RoCitEYXRlOgkJQXByaWwgMjAxMgorS2VybmVsVmVyc2lvbjoJMy40CitDb250YWN0OglsaW51eC1tdGRAbGlzdHMuaW5mcmFkZWFkLm9yZworRGVzY3JpcHRpb246CisJCU1heGltdW0gbnVtYmVyIG9mIGJpdCBlcnJvcnMgdGhhdCB0aGUgZGV2aWNlIGlzIGNhcGFibGUgb2YKKwkJY29ycmVjdGluZyB3aXRoaW4gZWFjaCByZWdpb24gY292ZXJpbmcgYW4gRUNDIHN0ZXAgKHNlZQorCQllY2Nfc3RlcF9zaXplKS4gIFRoaXMgd2lsbCBhbHdheXMgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlci4KKworCQlJbiB0aGUgY2FzZSBvZiBkZXZpY2VzIGxhY2tpbmcgYW55IEVDQyBjYXBhYmlsaXR5LCBpdCBpcyAwLgorCitXaGF0OgkJL3N5cy9jbGFzcy9tdGQvbXRkWC9iaXRmbGlwX3RocmVzaG9sZAorRGF0ZToJCUFwcmlsIDIwMTIKK0tlcm5lbFZlcnNpb246CTMuNAorQ29udGFjdDoJbGludXgtbXRkQGxpc3RzLmluZnJhZGVhZC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGFsbG93cyB0aGUgdXNlciB0byBleGFtaW5lIGFuZCBhZGp1c3QgdGhlIGNyaXRlcmlhIGJ5IHdoaWNoCisJCW10ZCByZXR1cm5zIC1FVUNMRUFOIGZyb20gbXRkX3JlYWQoKSBhbmQgbXRkX3JlYWRfb29iKCkuICBJZiB0aGUKKwkJbWF4aW11bSBudW1iZXIgb2YgYml0IGVycm9ycyB0aGF0IHdlcmUgY29ycmVjdGVkIG9uIGFueSBzaW5nbGUKKwkJcmVnaW9uIGNvbXByaXNpbmcgYW4gZWNjIHN0ZXAgKGFzIHJlcG9ydGVkIGJ5IHRoZSBkcml2ZXIpIGVxdWFscworCQlvciBleGNlZWRzIHRoaXMgdmFsdWUsIC1FVUNMRUFOIGlzIHJldHVybmVkLiAgT3RoZXJ3aXNlLCBhYnNlbnQKKwkJYW4gZXJyb3IsIDAgaXMgcmV0dXJuZWQuICBIaWdoZXIgbGF5ZXJzIChlLmcuLCBVQkkpIHVzZSB0aGlzCisJCXJldHVybiBjb2RlIGFzIGFuIGluZGljYXRpb24gdGhhdCBhbiBlcmFzZSBibG9jayBtYXkgYmUKKwkJZGVncmFkaW5nIGFuZCBzaG91bGQgYmUgc2NydXRpbml6ZWQgYXMgYSBjYW5kaWRhdGUgZm9yIGJlaW5nCisJCW1hcmtlZCBhcyBiYWQuCisKKwkJVGhlIGluaXRpYWwgdmFsdWUgbWF5IGJlIHNwZWNpZmllZCBieSB0aGUgZmxhc2ggZGV2aWNlIGRyaXZlci4KKwkJSWYgbm90LCB0aGVuIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGVjY19zdHJlbmd0aC4KKworCQlUaGUgaW50cm9kdWN0aW9uIG9mIHRoaXMgZmVhdHVyZSBicmluZ3MgYSBzdWJ0bGUgY2hhbmdlIHRvIHRoZQorCQltZWFuaW5nIG9mIHRoZSAtRVVDTEVBTiByZXR1cm4gY29kZS4gIFByZXZpb3VzbHksIGl0IHdhcworCQlpbnRlcnByZXRlZCB0byBtZWFuIHNpbXBseSAib25lIG9yIG1vcmUgYml0IGVycm9ycyB3ZXJlCisJCWNvcnJlY3RlZCIuICBJdHMgbmV3IGludGVycHJldGF0aW9uIGNhbiBiZSBwaHJhc2VkIGFzICJhCisJCWRhbmdlcm91c2x5IGhpZ2ggbnVtYmVyIG9mIGJpdCBlcnJvcnMgd2VyZSBjb3JyZWN0ZWQgb24gb25lIG9yCisJCW1vcmUgcmVnaW9ucyBjb21wcmlzaW5nIGFuIGVjYyBzdGVwIi4gIFRoZSBwcmVjaXNlIGRlZmluaXRpb24gb2YKKwkJImRhbmdlcm91c2x5IGhpZ2giIGNhbiBiZSBhZGp1c3RlZCBieSB0aGUgdXNlciB3aXRoCisJCWJpdGZsaXBfdGhyZXNob2xkLiAgVXNlcnMgYXJlIGRpc2NvdXJhZ2VkIGZyb20gZG9pbmcgdGhpcywKKwkJaG93ZXZlciwgdW5sZXNzIHRoZXkga25vdyB3aGF0IHRoZXkgYXJlIGRvaW5nIGFuZCBoYXZlIGludGltYXRlCisJCWtub3dsZWRnZSBvZiB0aGUgcHJvcGVydGllcyBvZiB0aGVpciBkZXZpY2UuICBCcm9hZGx5IHNwZWFraW5nLAorCQliaXRmbGlwX3RocmVzaG9sZCBzaG91bGQgYmUgbG93IGVub3VnaCB0byBkZXRlY3QgZ2VudWluZSBlcmFzZQorCQlibG9jayBkZWdyYWRhdGlvbiwgYnV0IGhpZ2ggZW5vdWdoIHRvIGF2b2lkIHRoZSBjb25zZXF1ZW5jZXMgb2YKKwkJYSBwZXJzaXN0ZW50IHJldHVybiB2YWx1ZSBvZiAtRVVDTEVBTiBvbiBkZXZpY2VzIHdoZXJlIHN0aWNreQorCQliaXRmbGlwcyBvY2N1ci4gIE5vdGUgdGhhdCBpZiBiaXRmbGlwX3RocmVzaG9sZCBleGNlZWRzCisJCWVjY19zdHJlbmd0aCwgLUVVQ0xFQU4gaXMgbmV2ZXIgcmV0dXJuZWQgYnkgdGhlIHJlYWQgb3BlcmF0aW9ucy4KKwkJQ29udmVyc2VseSwgaWYgYml0ZmxpcF90aHJlc2hvbGQgaXMgemVybywgLUVVQ0xFQU4gaXMgYWx3YXlzCisJCXJldHVybmVkLCBhYnNlbnQgYSBoYXJkIGVycm9yLgorCisJCVRoaXMgaXMgZ2VuZXJhbGx5IGFwcGxpY2FibGUgb25seSB0byBOQU5EIGZsYXNoIGRldmljZXMgd2l0aCBFQ0MKKwkJY2FwYWJpbGl0eS4gIEl0IGlzIGlnbm9yZWQgb24gZGV2aWNlcyBsYWNraW5nIEVDQyBjYXBhYmlsaXR5OworCQlpLmUuLCBkZXZpY2VzIGZvciB3aGljaCBlY2Nfc3RyZW5ndGggaXMgemVyby4KKworV2hhdDoJCS9zeXMvY2xhc3MvbXRkL210ZFgvZWNjX3N0ZXBfc2l6ZQorRGF0ZToJCU1heSAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjEwCitDb250YWN0OglsaW51eC1tdGRAbGlzdHMuaW5mcmFkZWFkLm9yZworRGVzY3JpcHRpb246CisJCVRoZSBzaXplIG9mIGEgc2luZ2xlIHJlZ2lvbiBjb3ZlcmVkIGJ5IEVDQywga25vd24gYXMgdGhlIEVDQworCQlzdGVwLiAgRGV2aWNlcyBtYXkgaGF2ZSBzZXZlcmFsIGVxdWFsbHkgc2l6ZWQgRUNDIHN0ZXBzIHdpdGhpbgorCQllYWNoIHdyaXRlc2l6ZSByZWdpb24uCisKKwkJSXQgd2lsbCBhbHdheXMgYmUgYSBub24tbmVnYXRpdmUgaW50ZWdlci4gIEluIHRoZSBjYXNlIG9mCisJCWRldmljZXMgbGFja2luZyBhbnkgRUNDIGNhcGFiaWxpdHksIGl0IGlzIDAuCisKK1doYXQ6CQkvc3lzL2NsYXNzL210ZC9tdGRYL2VjY19mYWlsdXJlcworRGF0ZToJCUp1bmUgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xNworQ29udGFjdDoJbGludXgtbXRkQGxpc3RzLmluZnJhZGVhZC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlUaGUgbnVtYmVyIG9mIGZhaWx1cmVzIHJlcG9ydGVkIGJ5IHRoaXMgZGV2aWNlJ3MgRUNDLiBUeXBpY2FsbHksCisJCXRoZXNlIGZhaWx1cmVzIGFyZSBhc3NvY2lhdGVkIHdpdGggZmFpbGVkIHJlYWQgb3BlcmF0aW9ucy4KKworCQlJdCB3aWxsIGFsd2F5cyBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLiAgSW4gdGhlIGNhc2Ugb2YKKwkJZGV2aWNlcyBsYWNraW5nIGFueSBFQ0MgY2FwYWJpbGl0eSwgaXQgaXMgMC4KKworV2hhdDoJCS9zeXMvY2xhc3MvbXRkL210ZFgvY29ycmVjdGVkX2JpdHMKK0RhdGU6CQlKdW5lIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTcKK0NvbnRhY3Q6CWxpbnV4LW10ZEBsaXN0cy5pbmZyYWRlYWQub3JnCitEZXNjcmlwdGlvbjoKKwkJVGhlIG51bWJlciBvZiBiaXRzIHRoYXQgaGF2ZSBiZWVuIGNvcnJlY3RlZCBieSBtZWFucyBvZiB0aGUKKwkJZGV2aWNlJ3MgRUNDLgorCisJCUl0IHdpbGwgYWx3YXlzIGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIuICBJbiB0aGUgY2FzZSBvZgorCQlkZXZpY2VzIGxhY2tpbmcgYW55IEVDQyBjYXBhYmlsaXR5LCBpdCBpcyAwLgorCitXaGF0OgkJL3N5cy9jbGFzcy9tdGQvbXRkWC9iYWRfYmxvY2tzCitEYXRlOgkJSnVuZSAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE3CitDb250YWN0OglsaW51eC1tdGRAbGlzdHMuaW5mcmFkZWFkLm9yZworRGVzY3JpcHRpb246CisJCVRoZSBudW1iZXIgb2YgYmxvY2tzIG1hcmtlZCBhcyBiYWQsIGlmIGFueSwgaW4gdGhpcyBwYXJ0aXRpb24uCisKK1doYXQ6CQkvc3lzL2NsYXNzL210ZC9tdGRYL2JidF9ibG9ja3MKK0RhdGU6CQlKdW5lIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTcKK0NvbnRhY3Q6CWxpbnV4LW10ZEBsaXN0cy5pbmZyYWRlYWQub3JnCitEZXNjcmlwdGlvbjoKKwkJVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCBhcmUgbWFya2VkIGFzIHJlc2VydmVkLCBpZiBhbnksIGluCisJCXRoaXMgcGFydGl0aW9uLiBUaGVzZSBhcmUgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgdGhlIGluLWZsYXNoCisJCWJhZCBibG9jayB0YWJsZSAoQkJUKS4KKworV2hhdDoJCS9zeXMvY2xhc3MvbXRkL210ZFgvb2Zmc2V0CitEYXRlOgkJTWFyY2ggMjAxNQorS2VybmVsVmVyc2lvbjoJNC4xCitDb250YWN0OglsaW51eC1tdGRAbGlzdHMuaW5mcmFkZWFkLm9yZworRGVzY3JpcHRpb246CisJCUZvciBhIHBhcnRpdGlvbiwgdGhlIG9mZnNldCBvZiB0aGF0IHBhcnRpdGlvbiBmcm9tIHRoZSBzdGFydAorCQlvZiB0aGUgbWFzdGVyIGRldmljZSBpbiBieXRlcy4gVGhpcyBhdHRyaWJ1dGUgaXMgYWJzZW50IG9uCisJCW1haW4gZGV2aWNlcywgc28gaXQgY2FuIGJlIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbgorCQlwYXJ0aXRpb25zIGFuZCBkZXZpY2VzIHRoYXQgYXJlbid0IHBhcnRpdGlvbnMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLW5ldCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtbmV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2ODYwNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLW5ldApAQCAtMCwwICsxLDI1MyBAQAorV2hhdDoJCS9zeXMvY2xhc3MvbmV0LzxpZmFjZT4vbmFtZV9hc3NpZ25fdHlwZQorRGF0ZToJCUp1bHkgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xNworQ29udGFjdDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUluZGljYXRlcyB0aGUgbmFtZSBhc3NpZ25tZW50IHR5cGUuIFBvc3NpYmxlIHZhbHVlcyBhcmU6CisJCTE6IGVudW1lcmF0ZWQgYnkgdGhlIGtlcm5lbCwgcG9zc2libHkgaW4gYW4gdW5wcmVkaWN0YWJsZSB3YXkKKwkJMjogcHJlZGljdGFibHkgbmFtZWQgYnkgdGhlIGtlcm5lbAorCQkzOiBuYW1lZCBieSB1c2Vyc3BhY2UKKwkJNDogcmVuYW1lZAorCitXaGF0OgkJL3N5cy9jbGFzcy9uZXQvPGlmYWNlPi9hZGRyX2Fzc2lnbl90eXBlCitEYXRlOgkJSnVseSAyMDEwCitLZXJuZWxWZXJzaW9uOgkzLjIKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIGFkZHJlc3MgYXNzaWdubWVudCB0eXBlLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOgorCQkwOiBwZXJtYW5lbnQgYWRkcmVzcworCQkxOiByYW5kb21seSBnZW5lcmF0ZWQKKwkJMjogc3RvbGVuIGZyb20gYW5vdGhlciBkZXZpY2UKKwkJMzogc2V0IHVzaW5nIGRldl9zZXRfbWFjX2FkZHJlc3MKKworV2hhdDoJCS9zeXMvY2xhc3MvbmV0LzxpZmFjZT4vYWRkcl9sZW4KK0RhdGU6CQlBcHJpbCAyMDA1CitLZXJuZWxWZXJzaW9uOgkyLjYuMTIKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIGhhcmR3YXJlIGFkZHJlc3Mgc2l6ZSBpbiBieXRlcy4KKwkJVmFsdWVzIHZhcnkgYmFzZWQgb24gdGhlIGxvd2VyLWxldmVsIHByb3RvY29sIHVzZWQgYnkgdGhlCisJCWludGVyZmFjZSAoRXRoZXJuZXQsIEZEREksIEFUTSwgSUVFRSA4MDIuMTUuNC4uLikuIFNlZQorCQlpbmNsdWRlL3VhcGkvbGludXgvaWZfKi5oIGZvciBhY3R1YWwgdmFsdWVzLgorCitXaGF0OgkJL3N5cy9jbGFzcy9uZXQvPGlmYWNlPi9hZGRyZXNzCitEYXRlOgkJQXByaWwgMjAwNQorS2VybmVsVmVyc2lvbjoJMi42LjEyCitDb250YWN0OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJSGFyZHdhcmUgYWRkcmVzcyBjdXJyZW50bHkgYXNzaWduZWQgdG8gdGhpcyBpbnRlcmZhY2UuCisJCUZvcm1hdCBpcyBhIHN0cmluZywgZS5nOiAwMDoxMToyMjozMzo0NDo1NSBmb3IgYW4gRXRoZXJuZXQgTUFDCisJCWFkZHJlc3MuCisKK1doYXQ6CQkvc3lzL2NsYXNzL25ldC88YnJpZGdlIGlmYWNlPi9icmlkZ2UvZ3JvdXBfZndkX21hc2sKK0RhdGU6CQlKYW51YXJ5IDIwMTIKK0tlcm5lbFZlcnNpb246CTMuMgorQ29udGFjdDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUJpdG1hc2sgdG8gYWxsb3cgZm9yd2FyZGluZyBvZiBsaW5rIGxvY2FsIGZyYW1lcyB3aXRoIGFkZHJlc3MKKwkJMDEtODAtQzItMDAtMDAtMFggb24gYSBicmlkZ2UgZGV2aWNlLiBPbmx5IHZhbHVlcyB0aGF0IHNldCBiaXRzCisJCW5vdCBtYXRjaGluZyBCUl9HUk9VUEZXRF9SRVNUUklDVEVEIGluIG5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oCisJCWFsbG93ZWQuCisJCURlZmF1bHQgdmFsdWUgMCBkb2VzIG5vdCBmb3J3YXJkIGFueSBsaW5rIGxvY2FsIGZyYW1lcy4KKworCQlSZXN0cmljdGVkIGJpdHM6CisJCTA6IDAxLTgwLUMyLTAwLTAwLTAwIEJyaWRnZSBHcm91cCBBZGRyZXNzIHVzZWQgZm9yIFNUUAorCQkxOiAwMS04MC1DMi0wMC0wMC0wMSAoTUFDIENvbnRyb2wpIDgwMi4zIHVzZWQgZm9yIE1BQyBQQVVTRQorCQkyOiAwMS04MC1DMi0wMC0wMC0wMiAoTGluayBBZ2dyZWdhdGlvbikgODAyLjNhZAorCisJCUFueSB2YWx1ZXMgbm90IHNldHRpbmcgdGhlc2UgYml0cyBjYW4gYmUgdXNlZC4gVGFrZSBzcGVjaWFsCisJCWNhcmUgd2hlbiBmb3J3YXJkaW5nIGNvbnRyb2wgZnJhbWVzIGUuZy4gODAyLjFYLVBBRSBvciBMTERQLgorCitXaGF0OgkJL3N5cy9jbGFzcy9uZXQvPGlmYWNlPi9icm9hZGNhc3QKK0RhdGU6CQlBcHJpbCAyMDA1CitLZXJuZWxWZXJzaW9uOgkyLjYuMTIKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlIYXJkd2FyZSBicm9hZGNhc3QgYWRkcmVzcyBmb3IgdGhpcyBpbnRlcmZhY2UuIEZvcm1hdCBpcyBhCisJCXN0cmluZywgZS5nOiBmZjpmZjpmZjpmZjpmZjpmZiBmb3IgYW4gRXRoZXJuZXQgYnJvYWRjYXN0IE1BQworCQlhZGRyZXNzLgorCitXaGF0OgkJL3N5cy9jbGFzcy9uZXQvPGlmYWNlPi9jYXJyaWVyCitEYXRlOgkJQXByaWwgMjAwNQorS2VybmVsVmVyc2lvbjoJMi42LjEyCitDb250YWN0OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJSW5kaWNhdGVzIHRoZSBjdXJyZW50IHBoeXNpY2FsIGxpbmsgc3RhdGUgb2YgdGhlIGludGVyZmFjZS4KKwkJUG9zc3NpYmxlIHZhbHVlcyBhcmU6CisJCTA6IHBoeXNpY2FsIGxpbmsgaXMgZG93bgorCQkxOiBwaHlzaWNhbCBsaW5rIGlzIHVwCisKKwkJTm90ZTogc29tZSBzcGVjaWFsIGRldmljZXMsIGUuZzogYm9uZGluZyBhbmQgdGVhbSBkcml2ZXJzIHdpbGwKKwkJYWxsb3cgdGhpcyBhdHRyaWJ1dGUgdG8gYmUgd3JpdHRlbiB0byBmb3JjZSBhIGxpbmsgc3RhdGUgZm9yCisJCW9wZXJhdGluZyBjb3JyZWN0bHkgYW5kIGRlc2lnbmF0aW5nIGFub3RoZXIgZmFsbGJhY2sgaW50ZXJmYWNlLgorCitXaGF0OgkJL3N5cy9jbGFzcy9uZXQvPGlmYWNlPi9kZXZfaWQKK0RhdGU6CQlBcHJpbCAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIGRldmljZSB1bmlxdWUgaWRlbnRpZmllci4gRm9ybWF0IGlzIGFuIGhleGFkZWNpbWFsCisJCXZhbHVlLiBUaGlzIGlzIHVzZWQgdG8gZGlzYW1iaWd1YXRlIGludGVyZmFjZXMgd2hpY2ggbWlnaHQgYmUKKwkJc3RhY2tlZCAoZS5nOiBWTEFOIGludGVyZmFjZXMpIGJ1dCBzdGlsbCBoYXZlIHRoZSBzYW1lIE1BQworCQlhZGRyZXNzIGFzIHRoZWlyIHBhcmVudCBkZXZpY2UuCisKK1doYXQ6CQkvc3lzL2NsYXNzL25ldC88aWZhY2U+L2Rvcm1hbnQKK0RhdGU6CQlNYXJjaCAyMDA2CitLZXJuZWxWZXJzaW9uOgkyLjYuMTcKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgd2hldGhlciB0aGUgaW50ZXJmYWNlIGlzIGluIGRvcm1hbnQgc3RhdGUuIFBvc3NpYmxlCisJCXZhbHVlcyBhcmU6CisJCTA6IGludGVyZmFjZSBpcyBub3QgZG9ybWFudAorCQkxOiBpbnRlcmZhY2UgaXMgZG9ybWFudAorCisJCVRoaXMgYXR0cmlidXRlIGNhbiBiZSB1c2VkIGJ5IHN1cHBsaWNhbnQgc29mdHdhcmUgdG8gc2lnbmFsIHRoYXQKKwkJdGhlIGRldmljZSBpcyBub3QgdXNhYmxlIHVubGVzcyBzb21lIHN1cHBsaWNhbnQtYmFzZWQKKwkJYXV0aGVudGljYXRpb24gaXMgcGVyZm9ybWVkIChlLmc6IDgwMi4xeCkuICdsaW5rX21vZGUnIGF0dHJpYnV0ZQorCQl3aWxsIGFsc28gcmVmbGVjdCB0aGUgZG9ybWFudCBzdGF0ZS4KKworV2hhdDoJCS9zeXMvY2xhcy9uZXQvPGlmYWNlPi9kdXBsZXgKK0RhdGU6CQlPY3RvYmVyIDIwMDkKK0tlcm5lbFZlcnNpb246CTIuNi4zMworQ29udGFjdDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUluZGljYXRlcyB0aGUgaW50ZXJmYWNlIGxhdGVzdCBvciBjdXJyZW50IGR1cGxleCB2YWx1ZS4gUG9zc2libGUKKwkJdmFsdWVzIGFyZToKKwkJaGFsZjogaGFsZiBkdXBsZXgKKwkJZnVsbDogZnVsbCBkdXBsZXgKKworCQlOb3RlOiBUaGlzIGF0dHJpYnV0ZSBpcyBvbmx5IHZhbGlkIGZvciBpbnRlcmZhY2VzIHRoYXQgaW1wbGVtZW50CisJCXRoZSBldGh0b29sIGdldF9zZXR0aW5ncyBtZXRob2QgKG1vc3RseSBFdGhlcm5ldCkuCisKK1doYXQ6CQkvc3lzL2NsYXNzL25ldC88aWZhY2U+L2ZsYWdzCitEYXRlOgkJQXByaWwgMjAwNQorS2VybmVsVmVyc2lvbjoJMi42LjEyCitDb250YWN0OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJSW5kaWNhdGVzIHRoZSBpbnRlcmZhY2UgZmxhZ3MgYXMgYSBiaXRtYXNrIGluIGhleGFkZWNpbWFsLiBTZWUKKwkJaW5jbHVkZS91YXBpL2xpbnV4L2lmLmggZm9yIGEgbGlzdCBvZiBhbGwgcG9zc2libGUgdmFsdWVzIGFuZAorCQl0aGUgZmxhZ3Mgc2VtYW50aWNzLgorCitXaGF0OgkJL3N5cy9jbGFzcy9uZXQvPGlmYWNlPi9pZmFsaWFzCitEYXRlOgkJU2VwdGVtYmVyIDIwMDgKK0tlcm5lbFZlcnNpb246CTIuNi4yOAorQ29udGFjdDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUluZGljYXRlcy9zdG9yZXMgYW4gaW50ZXJmYWNlIGFsaWFzIG5hbWUgYXMgYSBzdHJpbmcuIFRoaXMgY2FuCisJCWJlIHVzZWQgZm9yIHN5c3RlbSBtYW5hZ2VtZW50IHB1cnBvc2VzLgorCitXaGF0OgkJL3N5cy9jbGFzcy9uZXQvPGlmYWNlPi9pZmluZGV4CitEYXRlOgkJQXByaWwgMjAwNQorS2VybmVsVmVyc2lvbjoJMi42LjEyCitDb250YWN0OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJSW5kaWNhdGVzIHRoZSBzeXN0ZW0td2lkZSBpbnRlcmZhY2UgdW5pcXVlIGluZGV4IGlkZW50aWZpZXIgYXMgYQorCQlkZWNpbWFsIG51bWJlci4gVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCBmb3IgbWFwcGluZyBhbiBpbnRlcmZhY2UKKwkJaWRlbnRpZmllciB0byBhbiBpbnRlcmZhY2UgbmFtZS4gSXQgaXMgdXNlZCB0aHJvdWdob3V0IHRoZQorCQluZXR3b3JraW5nIHN0YWNrIGZvciBzcGVjaWZ5aW5nIHRoZSBpbnRlcmZhY2Ugc3BlY2lmaWMKKwkJcmVxdWVzdHMvZXZlbnRzLgorCitXaGF0OgkJL3N5cy9jbGFzcy9uZXQvPGlmYWNlPi9pZmxpbmsKK0RhdGU6CQlBcHJpbCAyMDA1CitLZXJuZWxWZXJzaW9uOgkyLjYuMTIKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIHN5c3RlbS13aWRlIGludGVyZmFjZSB1bmlxdWUgaW5kZXggaWRlbnRpZmllciBhCisJCXRoZSBpbnRlcmZhY2UgaXMgbGlua2VkIHRvLiBGb3JtYXQgaXMgZGVjaW1hbC4gVGhpcyBhdHRyaWJ1dGUgaXMKKwkJdXNlZCB0byByZXNvbHZlIGludGVyZmFjZXMgY2hhaW5pbmcsIGxpbmtpbmcgYW5kIHN0YWNraW5nLgorCQlQaHlzaWNhbCBpbnRlcmZhY2VzIGhhdmUgdGhlIHNhbWUgJ2lmaW5kZXgnIGFuZCAnaWZsaW5rJyB2YWx1ZXMuCisKK1doYXQ6CQkvc3lzL2NsYXNzL25ldC88aWZhY2U+L2xpbmtfbW9kZQorRGF0ZToJCU1hcmNoIDIwMDYKK0tlcm5lbFZlcnNpb246CTIuNi4xNworQ29udGFjdDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUluZGljYXRlcyB0aGUgaW50ZXJmYWNlIGxpbmsgbW9kZSwgYXMgYSBkZWNpbWFsIG51bWJlci4gVGhpcworCQlhdHRyaWJ1dGUgc2hvdWxkIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCAnZG9ybWFudCcgYXR0cmlidXRlCisJCXRvIGRldGVybWluZSB0aGUgaW50ZXJmYWNlIHVzYWJpbGl0eS4gUG9zc2libGUgdmFsdWVzOgorCQkwOiBkZWZhdWx0IGxpbmsgbW9kZQorCQkxOiBkb3JtYW50IGxpbmsgbW9kZQorCitXaGF0OgkJL3N5cy9jbGFzcy9uZXQvPGlmYWNlPi9tdHUKK0RhdGU6CQlBcHJpbCAyMDA1CitLZXJuZWxWZXJzaW9uOgkyLjYuMTIKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIGludGVyZmFjZSBjdXJyZW50bHkgY29uZmlndXJlZCBNVFUgdmFsdWUsIGluCisJCWJ5dGVzLCBhbmQgaW4gZGVjaW1hbCBmb3JtYXQuIFNwZWNpZmljIHZhbHVlcyBkZXBlbmRzIG9uIHRoZQorCQlsb3dlci1sZXZlbCBpbnRlcmZhY2UgcHJvdG9jb2wgdXNlZC4gRXRoZXJuZXQgZGV2aWNlcyB3aWxsIHNob3cKKwkJYSAnbXR1JyBhdHRyaWJ1dGUgdmFsdWUgb2YgMTUwMCB1bmxlc3MgY2hhbmdlZC4KKworV2hhdDoJCS9zeXMvY2xhc3MvbmV0LzxpZmFjZT4vbmV0ZGV2X2dyb3VwCitEYXRlOgkJSmFudWFyeSAyMDExCitLZXJuZWxWZXJzaW9uOgkyLjYuMzkKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIGludGVyZmFjZSBuZXR3b3JrIGRldmljZSBncm91cCwgYXMgYSBkZWNpbWFsCisJCWludGVnZXIuIERlZmF1bHQgdmFsdWUgaXMgMCB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgaW5pdGlhbAorCQluZXR3b3JrIGRldmljZXMgZ3JvdXAuIFRoZSBncm91cCBjYW4gYmUgY2hhbmdlZCB0byBhZmZlY3QKKwkJcm91dGluZyBkZWNpc2lvbnMgKHNlZTogbmV0L2lwdjQvZmliX3J1bGVzIGFuZAorCQluZXQvaXB2Ni9maWI2X3J1bGVzLmMpLgorCitXaGF0OgkJL3N5cy9jbGFzcy9uZXQvPGlmYWNlPi9vcGVyc3RhdGUKK0RhdGU6CQlNYXJjaCAyMDA2CitLZXJuZWxWZXJzaW9uOgkyLjYuMTcKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIGludGVyZmFjZSBSRkMyODYzIG9wZXJhdGlvbmFsIHN0YXRlIGFzIGEgc3RyaW5nLgorCQlQb3NzaWJsZSB2YWx1ZXMgYXJlOgorCQkidW5rbm93biIsICJub3RwcmVzZW50IiwgImRvd24iLCAibG93ZXJsYXllcmRvd24iLCAidGVzdGluZyIsCisJCSJkb3JtYW50IiwgInVwIi4KKworV2hhdDoJCS9zeXMvY2xhc3MvbmV0LzxpZmFjZT4vcGh5c19wb3J0X2lkCitEYXRlOgkJSnVseSAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjEyCitDb250YWN0OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJSW5kaWNhdGVzIHRoZSBpbnRlcmZhY2UgdW5pcXVlIHBoeXNpY2FsIHBvcnQgaWRlbnRpZmllciB3aXRoaW4KKwkJdGhlIE5JQywgYXMgYSBzdHJpbmcuCisKK1doYXQ6CQkvc3lzL2NsYXNzL25ldC88aWZhY2U+L3BoeXNfcG9ydF9uYW1lCitEYXRlOgkJTWFyY2ggMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wCitDb250YWN0OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJSW5kaWNhdGVzIHRoZSBpbnRlcmZhY2UgcGh5c2ljYWwgcG9ydCBuYW1lIHdpdGhpbiB0aGUgTklDLAorCQlhcyBhIHN0cmluZy4KKworV2hhdDoJCS9zeXMvY2xhc3MvbmV0LzxpZmFjZT4vc3BlZWQKK0RhdGU6CQlPY3RvYmVyIDIwMDkKK0tlcm5lbFZlcnNpb246CTIuNi4zMworQ29udGFjdDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUluZGljYXRlcyB0aGUgaW50ZXJmYWNlIGxhdGVzdCBvciBjdXJyZW50IHNwZWVkIHZhbHVlLiBWYWx1ZSBpcworCQlhbiBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgbGluayBzcGVlZCBpbiBNYml0cy9zZWMuCisKKwkJTm90ZTogdGhpcyBhdHRyaWJ1dGUgaXMgb25seSB2YWxpZCBmb3IgaW50ZXJmYWNlcyB0aGF0IGltcGxlbWVudAorCQl0aGUgZXRodG9vbCBnZXRfc2V0dGluZ3MgbWV0aG9kIChtb3N0bHkgRXRoZXJuZXQgKS4KKworV2hhdDoJCS9zeXMvY2xhc3MvbmV0LzxpZmFjZT4vdHhfcXVldWVfbGVuCitEYXRlOgkJQXByaWwgMjAwNQorS2VybmVsVmVyc2lvbjoJMi42LjEyCitDb250YWN0OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJSW5kaWNhdGVzIHRoZSBpbnRlcmZhY2UgdHJhbnNtaXQgcXVldWUgbGVuIGluIG51bWJlciBvZiBwYWNrZXRzLAorCQlhcyBhbiBpbnRlZ2VyIHZhbHVlLiBWYWx1ZSBkZXBlbmQgb24gdGhlIHR5cGUgb2YgaW50ZXJmYWNlLAorCQlFdGhlcm5ldCBuZXR3b3JrIGFkYXB0ZXJzIGhhdmUgYSBkZWZhdWx0IHZhbHVlIG9mIDEwMDAgdW5sZXNzCisJCWNvbmZpZ3VyZWQgb3RoZXJ3aXNlCisKK1doYXQ6CQkvc3lzL2NsYXNzL25ldC88aWZhY2U+L3R5cGUKK0RhdGU6CQlBcHJpbCAyMDA1CitLZXJuZWxWZXJzaW9uOgkyLjYuMTIKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIGludGVyZmFjZSBwcm90b2NvbCB0eXBlIGFzIGEgZGVjaW1hbCB2YWx1ZS4gU2VlCisJCWluY2x1ZGUvdWFwaS9saW51eC9pZl9hcnAuaCBmb3IgYWxsIHBvc3NpYmxlIHZhbHVlcy4KKworV2hhdDoJCS9zeXMvY2xhc3MvbmV0LzxpZmFjZT4vcGh5c19zd2l0Y2hfaWQKK0RhdGU6CQlOb3ZlbWJlciAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE5CitDb250YWN0OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJSW5kaWNhdGVzIHRoZSB1bmlxdWUgcGh5c2ljYWwgc3dpdGNoIGlkZW50aWZpZXIgb2YgYSBzd2l0Y2ggdGhpcworCQlwb3J0IGJlbG9uZ3MgdG8sIGFzIGEgc3RyaW5nLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1uZXQtYmF0bWFuLWFkdiBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtbmV0LWJhdG1hbi1hZHYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YzNGE5NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtbmV0LWJhdG1hbi1hZHYKQEAgLTAsMCArMSwxNSBAQAorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9uZXQvPGlmYWNlPi9iYXRtYW4tYWR2L2lmYWNlX3N0YXR1cworRGF0ZTogICAgICAgICAgIE1heSAyMDEwCitDb250YWN0OiAgICAgICAgTWFyZWsgTGluZG5lciA8bWFyZWtsaW5kbmVyQG5lb21haWxib3guY2g+CitEZXNjcmlwdGlvbjoKKyAgICAgICAgICAgICAgICBJbmRpY2F0ZXMgdGhlIHN0YXR1cyBvZiA8aWZhY2U+IGFzIGl0IGlzIHNlZW4gYnkgYmF0bWFuLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9uZXQvPGlmYWNlPi9iYXRtYW4tYWR2L21lc2hfaWZhY2UKK0RhdGU6ICAgICAgICAgICBNYXkgMjAxMAorQ29udGFjdDogICAgICAgIE1hcmVrIExpbmRuZXIgPG1hcmVrbGluZG5lckBuZW9tYWlsYm94LmNoPgorRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgVGhlIC9zeXMvY2xhc3MvbmV0LzxpZmFjZT4vYmF0bWFuLWFkdi9tZXNoX2lmYWNlIGZpbGUKKyAgICAgICAgICAgICAgICBkaXNwbGF5cyB0aGUgYmF0bWFuIG1lc2ggaW50ZXJmYWNlIHRoaXMgPGlmYWNlPgorICAgICAgICAgICAgICAgIGN1cnJlbnRseSBpcyBhc3NvY2lhdGVkIHdpdGguCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtbmV0LWNkY19uY20gYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLW5ldC1jZGNfbmNtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZWRmNzIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLW5ldC1jZGNfbmNtCkBAIC0wLDAgKzEsMTQ5IEBACitXaGF0OgkJL3N5cy9jbGFzcy9uZXQvPGlmYWNlPi9jZGNfbmNtL21pbl90eF9wa3QKK0RhdGU6CQlNYXkgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xNgorQ29udGFjdDoJQmrDuHJuIE1vcmsgPGJqb3JuQG1vcmsubm8+CitEZXNjcmlwdGlvbjoKKwkJVGhlIGRyaXZlciB3aWxsIHBhZCBOQ00gVHJhbnNmZXIgQmxvY2tzIChOVEJzKSBsb25nZXIKKwkJdGhhbiB0aGlzIHRvIHR4X21heCwgYWxsb3dpbmcgdGhlIGRldmljZSB0byByZWNlaXZlCisJCXR4X21heCBzaXplZCBmcmFtZXMgd2l0aCBubyB0ZXJtaW5hdGluZyBzaG9ydAorCQlwYWNrZXQuIE5UQnMgc2hvcnRlciB0aGFuIHRoaXMgbGltaXQgYXJlIHRyYW5zbWl0dGVkCisJCWFzLWlzLCB3aXRob3V0IGFueSBwYWRkaW5nLCBhbmQgYXJlIHRlcm1pbmF0ZWQgd2l0aCBhCisJCXNob3J0IFVTQiBwYWNrZXQuCisKKwkJUGFkZGluZyB0byB0eF9tYXggYWxsb3dzIHRoZSBkcml2ZXIgdG8gdHJhbnNtaXQgTlRCcworCQliYWNrLXRvLWJhY2sgd2l0aG91dCBhbnkgaW50ZXJsZWF2aW5nIHNob3J0IFVTQgorCQlwYWNrZXRzLiAgVGhpcyByZWR1Y2VzIHRoZSBudW1iZXIgb2Ygc2hvcnQgcGFja2V0CisJCWludGVycnVwdHMgaW4gdGhlIGRldmljZSwgYW5kIHJlcHJlc2VudHMgYSB0cmFkZW9mZgorCQliZXR3ZWVuIFVTQiBidXMgYmFuZHdpZHRoIGFuZCBkZXZpY2UgRE1BIG9wdGltaXphdGlvbi4KKworCQlTZXQgdG8gMCB0byBwYWQgYWxsIGZyYW1lcy4gU2V0IGdyZWF0ZXIgdGhhbiB0eF9tYXggdG8KKwkJZGlzYWJsZSBhbGwgcGFkZGluZy4KKworV2hhdDoJCS9zeXMvY2xhc3MvbmV0LzxpZmFjZT4vY2RjX25jbS9yeF9tYXgKK0RhdGU6CQlNYXkgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xNgorQ29udGFjdDoJQmrDuHJuIE1vcmsgPGJqb3JuQG1vcmsubm8+CitEZXNjcmlwdGlvbjoKKwkJVGhlIG1heGltdW0gTlRCIHNpemUgZm9yIFJYLiAgQ2Fubm90IGV4Y2VlZCB0aGUKKwkJbWF4aW11bSB2YWx1ZSBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZS4gTXVzdCBhbGxvdyBhdAorCQlsZWFzdCBvbmUgbWF4IHNpemVkIGRhdGFncmFtIHBsdXMgaGVhZGVycy4KKworCQlUaGUgYWN0dWFsIGxpbWl0cyBhcmUgZGV2aWNlIGRlcGVuZGVudC4gIFNlZQorCQlkd050YkluTWF4U2l6ZS4KKworCQlOb3RlOiBTb21lIGRldmljZXMgd2lsbCBzaWxlbnRseSBpZ25vcmUgY2hhbmdlcyB0bworCQl0aGlzIHZhbHVlLCByZXN1bHRpbmcgaW4gb3ZlcnNpemVkIE5UQnMgYW5kCisJCWNvcnJlc3BvbmRpbmcgZnJhbWluZyBlcnJvcnMuCisKK1doYXQ6CQkvc3lzL2NsYXNzL25ldC88aWZhY2U+L2NkY19uY20vdHhfbWF4CitEYXRlOgkJTWF5IDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTYKK0NvbnRhY3Q6CUJqw7hybiBNb3JrIDxiam9ybkBtb3JrLm5vPgorRGVzY3JpcHRpb246CisJCVRoZSBtYXhpbXVtIE5UQiBzaXplIGZvciBUWC4gIENhbm5vdCBleGNlZWQgdGhlCisJCW1heGltdW0gdmFsdWUgc3VwcG9ydGVkIGJ5IHRoZSBkZXZpY2UuICBNdXN0IGFsbG93IGF0CisJCWxlYXN0IG9uZSBtYXggc2l6ZWQgZGF0YWdyYW0gcGx1cyBoZWFkZXJzLgorCisJCVRoZSBhY3R1YWwgbGltaXRzIGFyZSBkZXZpY2UgZGVwZW5kZW50LiAgU2VlCisJCWR3TnRiT3V0TWF4U2l6ZS4KKworV2hhdDoJCS9zeXMvY2xhc3MvbmV0LzxpZmFjZT4vY2RjX25jbS90eF90aW1lcl91c2VjcworRGF0ZToJCU1heSAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE2CitDb250YWN0OglCasO4cm4gTW9yayA8Ympvcm5AbW9yay5ubz4KK0Rlc2NyaXB0aW9uOgorCQlEYXRhZ3JhbSBhZ2dyZWdhdGlvbiB0aW1lb3V0IGluIMK1cy4gVGhlIGRyaXZlciB3aWxsCisJCXdhaXQgdXAgdG8gMyB0aW1lcyB0aGlzIHRpbWVvdXQgZm9yIG1vcmUgZGF0YWdyYW1zIHRvCisJCWFnZ3JlZ2F0ZSBiZWZvcmUgdHJhbnNtaXR0aW5nIGFuIE5UQiBmcmFtZS4KKworCQlWYWxpZCByYW5nZTogNSB0byA0MDAwMDAwCisKKwkJU2V0IHRvIDAgdG8gZGlzYWJsZSBhZ2dyZWdhdGlvbi4KKworVGhlIGZvbGxvd2luZyByZWFkLW9ubHkgYXR0cmlidXRlcyBhbGwgcmVwcmVzZW50IGZpZWxkcyBvZiB0aGUKK3N0cnVjdHVyZSBkZWZpbmVkIGluIHNlY3Rpb24gNi4yLjEgIkdldE50YlBhcmFtZXRlcnMiIG9mICJVbml2ZXJzYWwKK1NlcmlhbCBCdXMgQ29tbXVuaWNhdGlvbnMgQ2xhc3MgU3ViY2xhc3MgU3BlY2lmaWNhdGlvbnMgZm9yIE5ldHdvcmsKK0NvbnRyb2wgTW9kZWwgRGV2aWNlcyIgKENEQyBOQ00pLCBSZXZpc2lvbiAxLjAgKEVycmF0YSAxKSwgTm92ZW1iZXIKKzI0LCAyMDEwIGZyb20gVVNCIEltcGxlbWVudGVycyBGb3J1bSwgSW5jLiAgVGhlIGRlc2NyaXB0aW9ucyBhcmUKK3F1b3RlZCBmcm9tIHRhYmxlIDYtMyBvZiBDREMgTkNNOiAiTlRCIFBhcmFtZXRlciBTdHJ1Y3R1cmUiLgorCitXaGF0OgkJL3N5cy9jbGFzcy9uZXQvPGlmYWNlPi9jZGNfbmNtL2JtTnRiRm9ybWF0c1N1cHBvcnRlZAorRGF0ZToJCU1heSAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE2CitDb250YWN0OglCasO4cm4gTW9yayA8Ympvcm5AbW9yay5ubz4KK0Rlc2NyaXB0aW9uOgorCQlCaXQgMDogMTYtYml0IE5UQiBzdXBwb3J0ZWQgKHNldCB0byAxKQorCQlCaXQgMTogMzItYml0IE5UQiBzdXBwb3J0ZWQKKwkJQml0cyAyIOKAkyAxNTogcmVzZXJ2ZWQgKHJlc2V0IHRvIHplcm87IG11c3QgYmUgaWdub3JlZCBieSBob3N0KQorCitXaGF0OgkJL3N5cy9jbGFzcy9uZXQvPGlmYWNlPi9jZGNfbmNtL2R3TnRiSW5NYXhTaXplCitEYXRlOgkJTWF5IDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTYKK0NvbnRhY3Q6CUJqw7hybiBNb3JrIDxiam9ybkBtb3JrLm5vPgorRGVzY3JpcHRpb246CisJCUlOIE5UQiBNYXhpbXVtIFNpemUgaW4gYnl0ZXMKKworV2hhdDoJCS9zeXMvY2xhc3MvbmV0LzxpZmFjZT4vY2RjX25jbS93TmRwSW5EaXZpc29yCitEYXRlOgkJTWF5IDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTYKK0NvbnRhY3Q6CUJqw7hybiBNb3JrIDxiam9ybkBtb3JrLm5vPgorRGVzY3JpcHRpb246CisJCURpdmlzb3IgdXNlZCBmb3IgSU4gTlRCIERhdGFncmFtIHBheWxvYWQgYWxpZ25tZW50CisKK1doYXQ6CQkvc3lzL2NsYXNzL25ldC88aWZhY2U+L2NkY19uY20vd05kcEluUGF5bG9hZFJlbWFpbmRlcgorRGF0ZToJCU1heSAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE2CitDb250YWN0OglCasO4cm4gTW9yayA8Ympvcm5AbW9yay5ubz4KK0Rlc2NyaXB0aW9uOgorCQlSZW1haW5kZXIgdXNlZCB0byBhbGlnbiBpbnB1dCBkYXRhZ3JhbSBwYXlsb2FkIHdpdGhpbgorCQl0aGUgTlRCOiAoUGF5bG9hZCBPZmZzZXQpIG1vZCAod05kcEluRGl2aXNvcikgPQorCQl3TmRwSW5QYXlsb2FkUmVtYWluZGVyCisKK1doYXQ6CQkvc3lzL2NsYXNzL25ldC88aWZhY2U+L2NkY19uY20vd05kcEluQWxpZ25tZW50CitEYXRlOgkJTWF5IDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTYKK0NvbnRhY3Q6CUJqw7hybiBNb3JrIDxiam9ybkBtb3JrLm5vPgorRGVzY3JpcHRpb246CisJCU5EUCBhbGlnbm1lbnQgbW9kdWx1cyBmb3IgTlRCcyBvbiB0aGUgSU4gcGlwZS4gU2hhbGwKKwkJYmUgYSBwb3dlciBvZiAyLCBhbmQgc2hhbGwgYmUgYXQgbGVhc3QgNC4KKworV2hhdDoJCS9zeXMvY2xhc3MvbmV0LzxpZmFjZT4vY2RjX25jbS9kd050Yk91dE1heFNpemUKK0RhdGU6CQlNYXkgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xNgorQ29udGFjdDoJQmrDuHJuIE1vcmsgPGJqb3JuQG1vcmsubm8+CitEZXNjcmlwdGlvbjoKKwkJT1VUIE5UQiBNYXhpbXVtIFNpemUKKworV2hhdDoJCS9zeXMvY2xhc3MvbmV0LzxpZmFjZT4vY2RjX25jbS93TmRwT3V0RGl2aXNvcgorRGF0ZToJCU1heSAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE2CitDb250YWN0OglCasO4cm4gTW9yayA8Ympvcm5AbW9yay5ubz4KK0Rlc2NyaXB0aW9uOgorCQlPVVQgTlRCIERhdGFncmFtIGFsaWdubWVudCBtb2R1bHVzCisKK1doYXQ6CQkvc3lzL2NsYXNzL25ldC88aWZhY2U+L2NkY19uY20vd05kcE91dFBheWxvYWRSZW1haW5kZXIKK0RhdGU6CQlNYXkgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xNgorQ29udGFjdDoJQmrDuHJuIE1vcmsgPGJqb3JuQG1vcmsubm8+CitEZXNjcmlwdGlvbjoKKwkJUmVtYWluZGVyIHVzZWQgdG8gYWxpZ24gb3V0cHV0IGRhdGFncmFtIHBheWxvYWQKKwkJb2Zmc2V0cyB3aXRoaW4gdGhlIE5UQjogUGFkZGluZywgc2hhbGwgYmUgdHJhbnNtaXR0ZWQKKwkJYXMgemVybyBieSBmdW5jdGlvbiwgYW5kIGlnbm9yZWQgYnkgaG9zdC4gIChQYXlsb2FkCisJCU9mZnNldCkgbW9kICh3TmRwT3V0RGl2aXNvcikgPSB3TmRwT3V0UGF5bG9hZFJlbWFpbmRlcgorCitXaGF0OgkJL3N5cy9jbGFzcy9uZXQvPGlmYWNlPi9jZGNfbmNtL3dOZHBPdXRBbGlnbm1lbnQKK0RhdGU6CQlNYXkgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xNgorQ29udGFjdDoJQmrDuHJuIE1vcmsgPGJqb3JuQG1vcmsubm8+CitEZXNjcmlwdGlvbjoKKwkJTkRQIGFsaWdubWVudCBtb2R1bHVzIGZvciB1c2UgaW4gTlRCcyBvbiB0aGUgT1VUCisJCXBpcGUuIFNoYWxsIGJlIGEgcG93ZXIgb2YgMiwgYW5kIHNoYWxsIGJlIGF0IGxlYXN0IDQuCisKK1doYXQ6CQkvc3lzL2NsYXNzL25ldC88aWZhY2U+L2NkY19uY20vd050Yk91dE1heERhdGFncmFtcworRGF0ZToJCU1heSAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE2CitDb250YWN0OglCasO4cm4gTW9yayA8Ympvcm5AbW9yay5ubz4KK0Rlc2NyaXB0aW9uOgorCQlNYXhpbXVtIG51bWJlciBvZiBkYXRhZ3JhbXMgdGhhdCB0aGUgaG9zdCBtYXkgcGFjaworCQlpbnRvIGEgc2luZ2xlIE9VVCBOVEIuIFplcm8gbWVhbnMgdGhhdCB0aGUgZGV2aWNlCisJCWltcG9zZXMgbm8gbGltaXQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLW5ldC1ncmNhbiBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtbmV0LWdyY2FuCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MThjOTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLW5ldC1ncmNhbgpAQCAtMCwwICsxLDM1IEBACisKK1doYXQ6CQkvc3lzL2NsYXNzL25ldC88aWZhY2U+L2dyY2FuL2VuYWJsZTAKK0RhdGU6CQlPY3RvYmVyIDIwMTIKK0tlcm5lbFZlcnNpb246CTMuOAorQ29udGFjdDoJQW5kcmVhcyBMYXJzc29uIDxhbmRyZWFzQGdhaXNsZXIuY29tPgorRGVzY3JpcHRpb246CisJCUhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gb2YgcGh5c2ljYWwgaW50ZXJmYWNlIDAuIFRoaXMgZmlsZSByZWFkcworCQlhbmQgd3JpdGVzIHRoZSAiRW5hYmxlIDAiIGJpdCBvZiB0aGUgY29uZmlndXJhdGlvbiByZWdpc3Rlci4KKwkJUG9zc2libGUgdmFsdWVzOiAwIG9yIDEuIFNlZSB0aGUgR1JDQU4gY2hhcHRlciBvZiB0aGUgR1JMSUIgSVAKKwkJY29yZSBsaWJyYXJ5IGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDAKKwkJb3Igc2V0IGJ5IHRoZSBtb2R1bGUgcGFyYW1ldGVyIGdyY2FuLmVuYWJsZTAgYW5kIGNhbiBiZSByZWFkIGF0CisJCS9zeXMvbW9kdWxlL2dyY2FuL3BhcmFtZXRlcnMvZW5hYmxlMC4KKworV2hhdDoJCS9zeXMvY2xhc3MvbmV0LzxpZmFjZT4vZ3JjYW4vZW5hYmxlMQorRGF0ZToJCU9jdG9iZXIgMjAxMgorS2VybmVsVmVyc2lvbjoJMy44CitDb250YWN0OglBbmRyZWFzIExhcnNzb24gPGFuZHJlYXNAZ2Fpc2xlci5jb20+CitEZXNjcmlwdGlvbjoKKwkJSGFyZHdhcmUgY29uZmlndXJhdGlvbiBvZiBwaHlzaWNhbCBpbnRlcmZhY2UgMS4gVGhpcyBmaWxlIHJlYWRzCisJCWFuZCB3cml0ZXMgdGhlICJFbmFibGUgMSIgYml0IG9mIHRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVyLgorCQlQb3NzaWJsZSB2YWx1ZXM6IDAgb3IgMS4gU2VlIHRoZSBHUkNBTiBjaGFwdGVyIG9mIHRoZSBHUkxJQiBJUAorCQljb3JlIGxpYnJhcnkgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMAorCQlvciBzZXQgYnkgdGhlIG1vZHVsZSBwYXJhbWV0ZXIgZ3JjYW4uZW5hYmxlMSBhbmQgY2FuIGJlIHJlYWQgYXQKKwkJL3N5cy9tb2R1bGUvZ3JjYW4vcGFyYW1ldGVycy9lbmFibGUxLgorCitXaGF0OgkJL3N5cy9jbGFzcy9uZXQvPGlmYWNlPi9ncmNhbi9zZWxlY3QKK0RhdGU6CQlPY3RvYmVyIDIwMTIKK0tlcm5lbFZlcnNpb246CTMuOAorQ29udGFjdDoJQW5kcmVhcyBMYXJzc29uIDxhbmRyZWFzQGdhaXNsZXIuY29tPgorRGVzY3JpcHRpb246CisJCUNvbmZpZ3VyYXRpb24gb2Ygd2hpY2ggcGh5c2ljYWwgaW50ZXJmYWNlIHRvIGJlIHVzZWQuIFBvc3NpYmxlCisJCXZhbHVlczogMCBvciAxLiBTZWUgdGhlIEdSQ0FOIGNoYXB0ZXIgb2YgdGhlIEdSTElCIElQIGNvcmUKKwkJbGlicmFyeSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAwIG9yIGlzCisJCXNldCBieSB0aGUgbW9kdWxlIHBhcmFtZXRlciBncmNhbi5zZWxlY3QgYW5kIGNhbiBiZSByZWFkIGF0CisJCS9zeXMvbW9kdWxlL2dyY2FuL3BhcmFtZXRlcnMvc2VsZWN0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1uZXQtamFuei1pY2FuMyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtbmV0LWphbnotaWNhbjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRiYzAzYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtbmV0LWphbnotaWNhbjMKQEAgLTAsMCArMSwxOSBAQAorV2hhdDoJCS9zeXMvY2xhc3MvbmV0LzxpZmFjZT4vdGVybWluYXRpb24KK0RhdGU6CQlNYXkgMjAxMAorS2VybmVsVmVyc2lvbjoJMi42LjM1CitDb250YWN0OglJcmEgVy4gU255ZGVyIDxpcmEuc255ZGVyQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlWYWx1ZSByZXByZXNlbnRpbmcgdGhlIGNhbiBidXMgdGVybWluYXRpb24KKworCQlEZWZhdWx0OiAxICh0ZXJtaW5hdGlvbiBhY3RpdmUpCisJCVJlYWRpbmc6IGdldCBhY3R1YWwgdGVybWluYXRpb24gc3RhdGUKKwkJV3JpdGluZzogc2V0IGFjdHVhbCB0ZXJtaW5hdGlvbiBzdGF0ZSAoMD1ubyB0ZXJtaW5hdGlvbiwgMT10ZXJtaW5hdGlvbiBhY3RpdmUpCisKK1doYXQ6CQkvc3lzL2NsYXNzL25ldC88aWZhY2U+L2Z3aW5mbworRGF0ZToJCU1heSAyMDE1CitLZXJuZWxWZXJzaW9uOgkzLjE5CitDb250YWN0OglBbmRyZWFzIEdyw7ZnZXIgPGFuZHJlYXMyNGdyb2VnZXJAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCUZpcm13YXJlIHN0YW1wIG9mIGljYW4zIG1vZHVsZQorCQlSZWFkLW9ubHk6IDMyIGJ5dGUgc3RyaW5nIGlkZW50aWZpY2F0aW9uIG9mIHRoZSBJQ0FOMyBtb2R1bGUKKwkJKGtub3duIHZhbHVlczogIkpBTlotSUNBTjMgSUNBTk9TIDEueHgiLCAiSkFOWi1JQ0FOMyBDQUwvQ0FOb3BlbiAxLnh4IikKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtbmV0LW1lc2ggYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLW5ldC1tZXNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0NjQwNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLW5ldC1tZXNoCkBAIC0wLDAgKzEsMTA4IEBACisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL25ldC88bWVzaF9pZmFjZT4vbWVzaC9hZ2dyZWdhdGVkX29nbXMKK0RhdGU6ICAgICAgICAgICBNYXkgMjAxMAorQ29udGFjdDogICAgICAgIE1hcmVrIExpbmRuZXIgPG1hcmVrbGluZG5lckBuZW9tYWlsYm94LmNoPgorRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGJhdG1hbiBwcm90b2NvbCBtZXNzYWdlcyBvZiB0aGUKKyAgICAgICAgICAgICAgICBtZXNoIDxtZXNoX2lmYWNlPiBzaGFsbCBiZSBhZ2dyZWdhdGVkIG9yIG5vdC4KKworV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvbmV0LzxtZXNoX2lmYWNlPi9tZXNoLzx2bGFuX3N1YmRpcj4vYXBfaXNvbGF0aW9uCitEYXRlOiAgICAgICAgICAgTWF5IDIwMTEKK0NvbnRhY3Q6ICAgICAgICBBbnRvbmlvIFF1YXJ0dWxsaSA8YW50b25pb0BtZXNoY29kaW5nLmNvbT4KK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIEluZGljYXRlcyB3aGV0aGVyIHRoZSBkYXRhIHRyYWZmaWMgZ29pbmcgZnJvbSBhCisgICAgICAgICAgICAgICAgd2lyZWxlc3MgY2xpZW50IHRvIGFub3RoZXIgd2lyZWxlc3MgY2xpZW50IHdpbGwgYmUKKyAgICAgICAgICAgICAgICBzaWxlbnRseSBkcm9wcGVkLiA8dmxhbl9zdWJkaXI+IGlzIGVtcHR5IHdoZW4gcmVmZXJyaW5nCisJCXRvIHRoZSB1bnRhZ2dlZCBsYW4uCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL25ldC88bWVzaF9pZmFjZT4vbWVzaC9ib25kaW5nCitEYXRlOiAgICAgICAgICAgSnVuZSAyMDEwCitDb250YWN0OiAgICAgICAgU2ltb24gV3VuZGVybGljaCA8c3dAc2ltb253dW5kZXJsaWNoLmRlPgorRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGRhdGEgdHJhZmZpYyBnb2luZyB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgIG1lc2ggd2lsbCBiZSBzZW50IHVzaW5nIG11bHRpcGxlIGludGVyZmFjZXMgYXQgdGhlCisgICAgICAgICAgICAgICAgc2FtZSB0aW1lIChpZiBhdmFpbGFibGUpLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9uZXQvPG1lc2hfaWZhY2U+L21lc2gvYnJpZGdlX2xvb3BfYXZvaWRhbmNlCitEYXRlOiAgICAgICAgICAgTm92ZW1iZXIgMjAxMQorQ29udGFjdDogICAgICAgIFNpbW9uIFd1bmRlcmxpY2ggPHN3QHNpbW9ud3VuZGVybGljaC5kZT4KK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIEluZGljYXRlcyB3aGV0aGVyIHRoZSBicmlkZ2UgbG9vcCBhdm9pZGFuY2UgZmVhdHVyZQorICAgICAgICAgICAgICAgIGlzIGVuYWJsZWQuIFRoaXMgZmVhdHVyZSBkZXRlY3RzIGFuZCBhdm9pZHMgbG9vcHMKKyAgICAgICAgICAgICAgICBiZXR3ZWVuIHRoZSBtZXNoIGFuZCBkZXZpY2VzIGJyaWRnZWQgd2l0aCB0aGUgc29mdAorICAgICAgICAgICAgICAgIGludGVyZmFjZSA8bWVzaF9pZmFjZT4uCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL25ldC88bWVzaF9pZmFjZT4vbWVzaC9mcmFnbWVudGF0aW9uCitEYXRlOiAgICAgICAgICAgT2N0b2JlciAyMDEwCitDb250YWN0OiAgICAgICAgQW5kcmVhcyBMYW5nZXIgPGFuLmxhbmdlckBnbXguZGU+CitEZXNjcmlwdGlvbjoKKyAgICAgICAgICAgICAgICBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZGF0YSB0cmFmZmljIGdvaW5nIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgbWVzaCB3aWxsIGJlIGZyYWdtZW50ZWQgb3Igc2lsZW50bHkgZGlzY2FyZGVkIGlmIHRoZQorICAgICAgICAgICAgICAgIHBhY2tldCBzaXplIGV4Y2VlZHMgdGhlIG91dGdvaW5nIGludGVyZmFjZSBNVFUuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL25ldC88bWVzaF9pZmFjZT4vbWVzaC9nd19iYW5kd2lkdGgKK0RhdGU6ICAgICAgICAgICBPY3RvYmVyIDIwMTAKK0NvbnRhY3Q6ICAgICAgICBNYXJlayBMaW5kbmVyIDxtYXJla2xpbmRuZXJAbmVvbWFpbGJveC5jaD4KK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIGJhbmR3aWR0aCB3aGljaCBpcyBwcm9wYWdhdGVkIGJ5IHRoaXMKKyAgICAgICAgICAgICAgICBub2RlIGlmIGd3X21vZGUgd2FzIHNldCB0byAnc2VydmVyJy4KKworV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvbmV0LzxtZXNoX2lmYWNlPi9tZXNoL2d3X21vZGUKK0RhdGU6ICAgICAgICAgICBPY3RvYmVyIDIwMTAKK0NvbnRhY3Q6ICAgICAgICBNYXJlayBMaW5kbmVyIDxtYXJla2xpbmRuZXJAbmVvbWFpbGJveC5jaD4KK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIHN0YXRlIG9mIHRoZSBnYXRld2F5IGZlYXR1cmVzLiBDYW4gYmUKKyAgICAgICAgICAgICAgICBlaXRoZXIgJ29mZicsICdjbGllbnQnIG9yICdzZXJ2ZXInLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9uZXQvPG1lc2hfaWZhY2U+L21lc2gvZ3dfc2VsX2NsYXNzCitEYXRlOiAgICAgICAgICAgT2N0b2JlciAyMDEwCitDb250YWN0OiAgICAgICAgTWFyZWsgTGluZG5lciA8bWFyZWtsaW5kbmVyQG5lb21haWxib3guY2g+CitEZXNjcmlwdGlvbjoKKyAgICAgICAgICAgICAgICBEZWZpbmVzIHRoZSBzZWxlY3Rpb24gY3JpdGVyaWEgdGhpcyBub2RlIHdpbGwgdXNlCisgICAgICAgICAgICAgICAgdG8gY2hvb3NlIGEgZ2F0ZXdheSBpZiBnd19tb2RlIHdhcyBzZXQgdG8gJ2NsaWVudCcuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL25ldC88bWVzaF9pZmFjZT4vbWVzaC9ob3BfcGVuYWx0eQorRGF0ZTogICAgICAgICAgIE9jdCAyMDEwCitDb250YWN0OiAgICAgICAgTGludXMgTMO8c3NpbmcgPGxpbnVzLmx1ZXNzaW5nQHdlYi5kZT4KK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIHBlbmFsdHkgd2hpY2ggd2lsbCBiZSBhcHBsaWVkIHRvIGFuCisgICAgICAgICAgICAgICAgb3JpZ2luYXRvciBtZXNzYWdlJ3MgdHEtZmllbGQgb24gZXZlcnkgaG9wLgorCitXaGF0OgkJL3N5cy9jbGFzcy9uZXQvPG1lc2hfaWZhY2U+L21lc2gvaXNvbGF0aW9uX21hcmsKK0RhdGU6CQlOb3YgMjAxMworQ29udGFjdDoJQW50b25pbyBRdWFydHVsbGkgPGFudG9uaW9AbWVzaGNvZGluZy5jb20+CitEZXNjcmlwdGlvbjoKKwkJRGVmaW5lcyB0aGUgaXNvbGF0aW9uIG1hcmsgKGFuZCBpdHMgYml0bWFzaykgd2hpY2gKKwkJaXMgdXNlZCB0byBjbGFzc2lmeSBjbGllbnRzIGFzICJpc29sYXRlZCIgYnkgdGhlCisJCUV4dGVuZGVkIElzb2xhdGlvbiBmZWF0dXJlLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9uZXQvPG1lc2hfaWZhY2U+L21lc2gvbXVsdGljYXN0X21vZGUKK0RhdGU6ICAgICAgICAgICBGZWIgMjAxNAorQ29udGFjdDogICAgICAgIExpbnVzIEzDvHNzaW5nIDxsaW51cy5sdWVzc2luZ0B3ZWIuZGU+CitEZXNjcmlwdGlvbjoKKyAgICAgICAgICAgICAgICBJbmRpY2F0ZXMgd2hldGhlciBtdWx0aWNhc3Qgb3B0aW1pemF0aW9ucyBhcmUgZW5hYmxlZAorICAgICAgICAgICAgICAgIG9yIGRpc2FibGVkLiBJZiBzZXQgdG8gemVybyB0aGVuIGFsbCBub2RlcyBpbiB0aGUKKyAgICAgICAgICAgICAgICBtZXNoIGFyZSBnb2luZyB0byB1c2UgY2xhc3NpYyBmbG9vZGluZyBmb3IgYW55CisgICAgICAgICAgICAgICAgbXVsdGljYXN0IHBhY2tldCB3aXRoIG5vIG9wdGltaXphdGlvbnMuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL25ldC88bWVzaF9pZmFjZT4vbWVzaC9uZXR3b3JrX2NvZGluZworRGF0ZTogICAgICAgICAgIE5vdiAyMDEyCitDb250YWN0OiAgICAgICAgTWFydGluIEh1bmRlYm9sbCA8bWFydGluQGh1bmRlYm9sbC5uZXQ+CitEZXNjcmlwdGlvbjoKKyAgICAgICAgICAgICAgICBDb250cm9scyB3aGV0aGVyIE5ldHdvcmsgQ29kaW5nICh1c2luZyBzb21lIG1hZ2ljCisgICAgICAgICAgICAgICAgdG8gc2VuZCBmZXdlciB3aWZpIHBhY2tldHMgYnV0IHN0aWxsIHRoZSBzYW1lCisgICAgICAgICAgICAgICAgY29udGVudCkgaXMgZW5hYmxlZCBvciBub3QuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL25ldC88bWVzaF9pZmFjZT4vbWVzaC9vcmlnX2ludGVydmFsCitEYXRlOiAgICAgICAgICAgTWF5IDIwMTAKK0NvbnRhY3Q6ICAgICAgICBNYXJlayBMaW5kbmVyIDxtYXJla2xpbmRuZXJAbmVvbWFpbGJveC5jaD4KK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIERlZmluZXMgdGhlIGludGVydmFsIGluIG1pbGxpc2Vjb25kcyBpbiB3aGljaCBiYXRtYW4KKyAgICAgICAgICAgICAgICBzZW5kcyBpdHMgcHJvdG9jb2wgbWVzc2FnZXMuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL25ldC88bWVzaF9pZmFjZT4vbWVzaC9yb3V0aW5nX2FsZ28KK0RhdGU6ICAgICAgICAgICBEZWMgMjAxMQorQ29udGFjdDogICAgICAgIE1hcmVrIExpbmRuZXIgPG1hcmVrbGluZG5lckBuZW9tYWlsYm94LmNoPgorRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgRGVmaW5lcyB0aGUgcm91dGluZyBwcm9jb3RvbCB0aGlzIG1lc2ggaW5zdGFuY2UKKyAgICAgICAgICAgICAgICB1c2VzIHRvIGZpbmQgdGhlIG9wdGltYWwgcGF0aHMgdGhyb3VnaCB0aGUgbWVzaC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtbmV0LXF1ZXVlcyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtbmV0LXF1ZXVlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzBkZjkxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1uZXQtcXVldWVzCkBAIC0wLDAgKzEsODcgQEAKK1doYXQ6CQkvc3lzL2NsYXNzLzxpZmFjZT4vcXVldWVzL3J4LTxxdWV1ZT4vcnBzX2NwdXMKK0RhdGU6CQlNYXJjaCAyMDEwCitLZXJuZWxWZXJzaW9uOgkyLjYuMzUKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlNYXNrIG9mIHRoZSBDUFUocykgY3VycmVudGx5IGVuYWJsZWQgdG8gcGFydGljaXBhdGUgaW50byB0aGUKKwkJUmVjZWl2ZSBQYWNrZXQgU3RlZXJpbmcgcGFja2V0IHByb2Nlc3NpbmcgZmxvdyBmb3IgdGhpcworCQluZXR3b3JrIGRldmljZSBxdWV1ZS4gUG9zc2libGUgdmFsdWVzIGRlcGVuZCBvbiB0aGUgbnVtYmVyCisJCW9mIGF2YWlsYWJsZSBDUFUocykgaW4gdGhlIHN5c3RlbS4KKworV2hhdDoJCS9zeXMvY2xhc3MvPGlmYWNlPi9xdWV1ZXMvcngtPHF1ZXVlPi9ycHNfZmxvd19jbnQKK0RhdGU6CQlBcHJpbCAyMDEwCitLZXJuZWxWZXJzaW9uOgkyLjYuMzUKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlOdW1iZXIgb2YgUmVjZWl2ZSBQYWNrZXQgU3RlZXJpbmcgZmxvd3MgYmVpbmcgY3VycmVudGx5CisJCXByb2Nlc3NlZCBieSB0aGlzIHBhcnRpY3VsYXIgbmV0d29yayBkZXZpY2UgcmVjZWl2ZSBxdWV1ZS4KKworV2hhdDoJCS9zeXMvY2xhc3MvPGlmYWNlPi9xdWV1ZXMvdHgtPHF1ZXVlPi90eF90aW1lb3V0CitEYXRlOgkJTm92ZW1iZXIgMjAxMQorS2VybmVsVmVyc2lvbjoJMy4zCitDb250YWN0OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJSW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgdHJhbnNtaXQgdGltZW91dCBldmVudHMgc2VlbiBieSB0aGlzCisJCW5ldHdvcmsgaW50ZXJmYWNlIHRyYW5zbWl0IHF1ZXVlLgorCitXaGF0OgkJL3N5cy9jbGFzcy88aWZhY2U+L3F1ZXVlcy90eC08cXVldWU+L3R4X21heHJhdGUKK0RhdGU6CQlNYXJjaCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjEKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlBIE1icHMgbWF4LXJhdGUgc2V0IGZvciB0aGUgcXVldWUsIGEgdmFsdWUgb2YgemVybyBtZWFucyBkaXNhYmxlZCwKKwkJZGVmYXVsdCBpcyBkaXNhYmxlZC4KKworV2hhdDoJCS9zeXMvY2xhc3MvPGlmYWNlPi9xdWV1ZXMvdHgtPHF1ZXVlPi94cHNfY3B1cworRGF0ZToJCU5vdmVtYmVyIDIwMTAKK0tlcm5lbFZlcnNpb246CTIuNi4zOAorQ29udGFjdDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCU1hc2sgb2YgdGhlIENQVShzKSBjdXJyZW50bHkgZW5hYmxlZCB0byBwYXJ0aWNpcGF0ZSBpbnRvIHRoZQorCQlUcmFuc21pdCBQYWNrZXQgU3RlZXJpbmcgcGFja2V0IHByb2Nlc3NpbmcgZmxvdyBmb3IgdGhpcworCQluZXR3b3JrIGRldmljZSB0cmFuc21pdCBxdWV1ZS4gUG9zc2libGUgdmF1bGVzIGRlcGVuZCBvbiB0aGUKKwkJbnVtYmVyIG9mIGF2YWlsYWJsZSBDUFUocykgaW4gdGhlIHN5c3RlbS4KKworV2hhdDoJCS9zeXMvY2xhc3MvPGlmYWNlPi9xdWV1ZXMvdHgtPHF1ZXVlPi9ieXRlX3F1ZXVlX2xpbWl0cy9ob2xkX3RpbWUKK0RhdGU6CQlOb3ZlbWJlciAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjMKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIGhvbGQgdGltZSBpbiBtaWxsaXNlY29uZHMgdG8gbWVhc3VyZSB0aGUgc2xhY2sKKwkJb2YgdGhpcyBwYXJ0aWN1bGFyIG5ldHdvcmsgZGV2aWNlIHRyYW5zbWl0IHF1ZXVlLgorCQlEZWZhdWx0IHZhbHVlIGlzIDEwMDAuCisKK1doYXQ6CQkvc3lzL2NsYXNzLzxpZmFjZT4vcXVldWVzL3R4LTxxdWV1ZT4vYnl0ZV9xdWV1ZV9saW1pdHMvaW5mbGlnaHQKK0RhdGU6CQlOb3ZlbWJlciAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjMKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBieXRlcyAob2JqZWN0cykgaW4gZmxpZ2h0IG9uIHRoaXMKKwkJbmV0d29yayBkZXZpY2UgdHJhbnNtaXQgcXVldWUuCisKK1doYXQ6CQkvc3lzL2NsYXNzLzxpZmFjZT4vcXVldWVzL3R4LTxxdWV1ZT4vYnl0ZV9xdWV1ZV9saW1pdHMvbGltaXQKK0RhdGU6CQlOb3ZlbWJlciAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjMKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIGN1cnJlbnQgbGltaXQgb2YgYnl0ZXMgYWxsb3dlZCB0byBiZSBxdWV1ZWQKKwkJb24gdGhpcyBuZXR3b3JrIGRldmljZSB0cmFuc21pdCBxdWV1ZS4gVGhpcyB2YWx1ZSBpcyBjbGFtcGVkCisJCXRvIGJlIHdpdGhpbiB0aGUgYm91bmRzIGRlZmluZWQgYnkgbGltaXRfbWF4IGFuZCBsaW1pdF9taW4uCisKK1doYXQ6CQkvc3lzL2NsYXNzLzxpZmFjZT4vcXVldWVzL3R4LTxxdWV1ZT4vYnl0ZV9xdWV1ZV9saW1pdHMvbGltaXRfbWF4CitEYXRlOgkJTm92ZW1iZXIgMjAxMQorS2VybmVsVmVyc2lvbjoJMy4zCitDb250YWN0OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJSW5kaWNhdGVzIHRoZSBhYnNvbHV0ZSBtYXhpbXVtIGxpbWl0IG9mIGJ5dGVzIGFsbG93ZWQgdG8gYmUKKwkJcXVldWVkIG9uIHRoaXMgbmV0d29yayBkZXZpY2UgdHJhbnNtaXQgcXVldWUuIFNlZQorCQlpbmNsdWRlL2xpbnV4L2R5bmFtaWNfcXVldWVfbGltaXRzLmggZm9yIHRoZSBkZWZhdWx0IHZhbHVlLgorCitXaGF0OgkJL3N5cy9jbGFzcy88aWZhY2U+L3F1ZXVlcy90eC08cXVldWU+L2J5dGVfcXVldWVfbGltaXRzL2xpbWl0X21pbgorRGF0ZToJCU5vdmVtYmVyIDIwMTEKK0tlcm5lbFZlcnNpb246CTMuMworQ29udGFjdDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUluZGljYXRlcyB0aGUgYWJzb2x1dGUgbWluaW11bSBsaW1pdCBvZiBieXRlcyBhbGxvd2VkIHRvIGJlCisJCXF1ZXVlZCBvbiB0aGlzIG5ldHdvcmsgZGV2aWNlIHRyYW5zbWl0IHF1ZXVlLiBEZWZhdWx0IHZhbHVlIGlzCisJCTAuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLW5ldC1zdGF0aXN0aWNzIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1uZXQtc3RhdGlzdGljcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTcxMThkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1uZXQtc3RhdGlzdGljcwpAQCAtMCwwICsxLDIwMSBAQAorV2hhdDoJCS9zeXMvY2xhc3MvPGlmYWNlPi9zdGF0aXN0aWNzL2NvbGxpc2lvbnMKK0RhdGU6CQlBcHJpbCAyMDA1CitLZXJuZWxWZXJzaW9uOgkyLjYuMTIKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBjb2xsaXNpb25zIHNlZW4gYnkgdGhpcyBuZXR3b3JrIGRldmljZS4KKwkJVGhpcyB2YWx1ZSBtaWdodCBub3QgYmUgcmVsZXZhbnQgd2l0aCBhbGwgTUFDIGxheWVycy4KKworV2hhdDoJCS9zeXMvY2xhc3MvPGlmYWNlPi9zdGF0aXN0aWNzL211bHRpY2FzdAorRGF0ZToJCUFwcmlsIDIwMDUKK0tlcm5lbFZlcnNpb246CTIuNi4xMgorQ29udGFjdDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUluZGljYXRlcyB0aGUgbnVtYmVyIG9mIG11bHRpY2FzdCBwYWNrZXRzIHJlY2VpdmVkIGJ5IHRoaXMKKwkJbmV0d29yayBkZXZpY2UuCisKK1doYXQ6CQkvc3lzL2NsYXNzLzxpZmFjZT4vc3RhdGlzdGljcy9yeF9ieXRlcworRGF0ZToJCUFwcmlsIDIwMDUKK0tlcm5lbFZlcnNpb246CTIuNi4xMgorQ29udGFjdDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUluZGljYXRlcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlY2VpdmVkIGJ5IHRoaXMgbmV0d29yayBkZXZpY2UuCisJCVNlZSB0aGUgbmV0d29yayBkcml2ZXIgZm9yIHRoZSBleGFjdCBtZWFuaW5nIG9mIHdoZW4gdGhpcworCQl2YWx1ZSBpcyBpbmNyZW1lbnRlZC4KKworV2hhdDoJCS9zeXMvY2xhc3MvPGlmYWNlPi9zdGF0aXN0aWNzL3J4X2NvbXByZXNzZWQKK0RhdGU6CQlBcHJpbCAyMDA1CitLZXJuZWxWZXJzaW9uOgkyLjYuMTIKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBjb21wcmVzc2VkIHBhY2tldHMgcmVjZWl2ZWQgYnkgdGhpcworCQluZXR3b3JrIGRldmljZS4gVGhpcyB2YWx1ZSBtaWdodCBvbmx5IGJlIHJlbGV2YW50IGZvciBpbnRlcmZhY2VzCisJCXRoYXQgc3VwcG9ydCBwYWNrZXQgY29tcHJlc3Npb24gKGUuZzogUFBQKS4KKworV2hhdDoJCS9zeXMvY2xhc3MvPGlmYWNlPi9zdGF0aXN0aWNzL3J4X2NyY19lcnJvcnMKK0RhdGU6CQlBcHJpbCAyMDA1CitLZXJuZWxWZXJzaW9uOgkyLjYuMTIKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBwYWNrZXRzIHJlY2VpdmVkIHdpdGggYSBDUkMgKEZDUykgZXJyb3IKKwkJYnkgdGhpcyBuZXR3b3JrIGRldmljZS4gTm90ZSB0aGF0IHRoZSBzcGVjaWZpYyBtZWFuaW5nIG1pZ2h0CisJCWRlcGVuZCBvbiB0aGUgTUFDIGxheWVyIHVzZWQgYnkgdGhlIGludGVyZmFjZS4KKworV2hhdDoJCS9zeXMvY2xhc3MvPGlmYWNlPi9zdGF0aXN0aWNzL3J4X2Ryb3BwZWQKK0RhdGU6CQlBcHJpbCAyMDA1CitLZXJuZWxWZXJzaW9uOgkyLjYuMTIKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBwYWNrZXRzIHJlY2VpdmVkIGJ5IHRoZSBuZXR3b3JrIGRldmljZQorCQlidXQgZHJvcHBlZCwgdGhhdCBhcmUgbm90IGZvcndhcmRlZCB0byB0aGUgdXBwZXIgbGF5ZXJzIGZvcgorCQlwYWNrZXQgcHJvY2Vzc2luZy4gU2VlIHRoZSBuZXR3b3JrIGRyaXZlciBmb3IgdGhlIGV4YWN0CisJCW1lYW5pbmcgb2YgdGhpcyB2YWx1ZS4KKworV2hhdDoJCS9zeXMvY2xhc3MvPGlmYWNlPi9zdGF0aXN0aWNzL3J4X2ZpZm9fZXJyb3JzCitEYXRlOgkJQXByaWwgMjAwNQorS2VybmVsVmVyc2lvbjoJMi42LjEyCitDb250YWN0OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJSW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgcmVjZWl2ZSBGSUZPIGVycm9ycyBzZWVuIGJ5IHRoaXMKKwkJbmV0d29yayBkZXZpY2UuIFNlZSB0aGUgbmV0d29yayBkcml2ZXIgZm9yIHRoZSBleGFjdAorCQltZWFuaW5nIG9mIHRoaXMgdmFsdWUuCisKK1doYXQ6CQkvc3lzL2NsYXNzLzxpZmFjZT4vc3RhdGlzdGljcy9yeF9mcmFtZV9lcnJvcnMKK0RhdGU6CQlBcHJpbCAyMDA1CitLZXJuZWxWZXJzaW9uOgkyLjYuMTIKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIG51bWJlciBvZiByZWNlaXZlZCBmcmFtZXMgd2l0aCBlcnJvciwgc3VjaCBhcworCQlhbGlnbm1lbnQgZXJyb3JzLiBOb3RlIHRoYXQgdGhlIHNwZWNpZmljIG1lYW5pbmcgZGVwZW5kcyBvbgorCQlvbiB0aGUgTUFDIGxheWVyIHByb3RvY29sIHVzZWQuIFNlZSB0aGUgbmV0d29yayBkcml2ZXIgZm9yCisJCXRoZSBleGFjdCBtZWFuaW5nIG9mIHRoaXMgdmFsdWUuCisKK1doYXQ6CQkvc3lzL2NsYXNzLzxpZmFjZT4vc3RhdGlzdGljcy9yeF9sZW5ndGhfZXJyb3JzCitEYXRlOgkJQXByaWwgMjAwNQorS2VybmVsVmVyc2lvbjoJMi42LjEyCitDb250YWN0OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJSW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgcmVjZWl2ZWQgZXJyb3IgcGFja2V0IHdpdGggYSBsZW5ndGgKKwkJZXJyb3IsIG92ZXJzaXplZCBvciB1bmRlcnNpemVkLiBTZWUgdGhlIG5ldHdvcmsgZHJpdmVyIGZvciB0aGUKKwkJZXhhY3QgbWVhbmluZyBvZiB0aGlzIHZhbHVlLgorCitXaGF0OgkJL3N5cy9jbGFzcy88aWZhY2U+L3N0YXRpc3RpY3MvcnhfbWlzc2VkX2Vycm9ycworRGF0ZToJCUFwcmlsIDIwMDUKK0tlcm5lbFZlcnNpb246CTIuNi4xMgorQ29udGFjdDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUluZGljYXRlcyB0aGUgbnVtYmVyIG9mIHJlY2VpdmVkIHBhY2tldHMgdGhhdCBoYXZlIGJlZW4gbWlzc2VkCisJCWR1ZSB0byBsYWNrIG9mIGNhcGFjaXR5IGluIHRoZSByZWNlaXZlIHNpZGUuIFNlZSB0aGUgbmV0d29yaworCQlkcml2ZXIgZm9yIHRoZSBleGFjdCBtZWFuaW5nIG9mIHRoaXMgdmFsdWUuCisKK1doYXQ6CQkvc3lzL2NsYXNzLzxpZmFjZT4vc3RhdGlzdGljcy9yeF9vdmVyX2Vycm9ycworRGF0ZToJCUFwcmlsIDIwMDUKK0tlcm5lbFZlcnNpb246CTIuNi4xMgorQ29udGFjdDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUluZGljYXRlcyB0aGUgbnVtYmVyIG9mIHJlY2VpdmVkIHBhY2tldHMgdGhhdCBhcmUgb3ZlcnNpemVkCisJCWNvbXBhcmVkIHRvIHdoYXQgdGhlIG5ldHdvcmsgZGV2aWNlIGlzIGNvbmZpZ3VyZWQgdG8gYWNjZXB0CisJCShlLmc6IGxhcmdlciB0aGFuIE1UVSkuIFNlZSB0aGUgbmV0d29yayBkcml2ZXIgZm9yIHRoZSBleGFjdAorCQltZWFuaW5nIG9mIHRoaXMgdmFsdWUuCisKK1doYXQ6CQkvc3lzL2NsYXNzLzxpZmFjZT4vc3RhdGlzdGljcy9yeF9wYWNrZXRzCitEYXRlOgkJQXByaWwgMjAwNQorS2VybmVsVmVyc2lvbjoJMi42LjEyCitDb250YWN0OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJSW5kaWNhdGVzIHRoZSB0b3RhbCBudW1iZXIgb2YgZ29vZCBwYWNrZXRzIHJlY2VpdmVkIGJ5IHRoaXMKKwkJbmV0d29yayBkZXZpY2UuCisKK1doYXQ6CQkvc3lzL2NsYXNzLzxpZmFjZT4vc3RhdGlzdGljcy90eF9hYm9ydGVkX2Vycm9ycworRGF0ZToJCUFwcmlsIDIwMDUKK0tlcm5lbFZlcnNpb246CTIuNi4xMgorQ29udGFjdDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUluZGljYXRlcyB0aGUgbnVtYmVyIG9mIHBhY2tldHMgdGhhdCBoYXZlIGJlZW4gYWJvcnRlZAorCQlkdXJpbmcgdHJhbnNtaXNzaW9uIGJ5IGEgbmV0d29yayBkZXZpY2UgKGUuZzogYmVjYXVzZSBvZgorCQlhIG1lZGl1bSBjb2xsaXNpb24pLiBTZWUgdGhlIG5ldHdvcmsgZHJpdmVyIGZvciB0aGUgZXhhY3QKKwkJbWVhbmluZyBvZiB0aGlzIHZhbHVlLgorCitXaGF0OgkJL3N5cy9jbGFzcy88aWZhY2U+L3N0YXRpc3RpY3MvdHhfYnl0ZXMKK0RhdGU6CQlBcHJpbCAyMDA1CitLZXJuZWxWZXJzaW9uOgkyLjYuMTIKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBieXRlcyB0cmFuc21pdHRlZCBieSBhIG5ldHdvcmsKKwkJZGV2aWNlLiBTZWUgdGhlIG5ldHdvcmsgZHJpdmVyIGZvciB0aGUgZXhhY3QgbWVhbmluZyBvZiB0aGlzCisJCXZhbHVlLCBpbiBwYXJ0aWN1bGFyIHdoZXRoZXIgdGhpcyBhY2NvdW50cyBmb3IgYWxsIHN1Y2Nlc3NmdWxseQorCQl0cmFuc21pdHRlZCBwYWNrZXRzIG9yIGFsbCBwYWNrZXRzIHRoYXQgaGF2ZSBiZWVuIHF1ZXVlZCBmb3IKKwkJdHJhbnNtaXNzaW9uLgorCitXaGF0OgkJL3N5cy9jbGFzcy88aWZhY2U+L3N0YXRpc3RpY3MvdHhfY2Fycmllcl9lcnJvcnMKK0RhdGU6CQlBcHJpbCAyMDA1CitLZXJuZWxWZXJzaW9uOgkyLjYuMTIKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBwYWNrZXRzIHRoYXQgY291bGQgbm90IGJlIHRyYW5zbWl0dGVkCisJCWJlY2F1c2Ugb2YgY2FycmllciBlcnJvcnMgKGUuZzogcGh5c2ljYWwgbGluayBkb3duKS4gU2VlIHRoZQorCQluZXR3b3JrIGRyaXZlciBmb3IgdGhlIGV4YWN0IG1lYW5pbmcgb2YgdGhpcyB2YWx1ZS4KKworV2hhdDoJCS9zeXMvY2xhc3MvPGlmYWNlPi9zdGF0aXN0aWNzL3R4X2NvbXByZXNzZWQKK0RhdGU6CQlBcHJpbCAyMDA1CitLZXJuZWxWZXJzaW9uOgkyLjYuMTIKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIG51bWJlciBvZiB0cmFuc21pdHRlZCBjb21wcmVzc2VkIHBhY2tldHMuIE5vdGUKKwkJdGhpcyBtaWdodCBvbmx5IGJlIHJlbGV2YW50IGZvciBkZXZpY2VzIHRoYXQgc3VwcG9ydAorCQljb21wcmVzc2lvbiAoZS5nOiBQUFApLgorCitXaGF0OgkJL3N5cy9jbGFzcy88aWZhY2U+L3N0YXRpc3RpY3MvdHhfZHJvcHBlZAorRGF0ZToJCUFwcmlsIDIwMDUKK0tlcm5lbFZlcnNpb246CTIuNi4xMgorQ29udGFjdDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUluZGljYXRlcyB0aGUgbnVtYmVyIG9mIHBhY2tldHMgZHJvcHBlZCBkdXJpbmcgdHJhbnNtaXNzaW9uLgorCQlTZWUgdGhlIGRyaXZlciBmb3IgdGhlIGV4YWN0IHJlYXNvbnMgYXMgdG8gd2h5IHRoZSBwYWNrZXRzIHdlcmUKKwkJZHJvcHBlZC4KKworV2hhdDoJCS9zeXMvY2xhc3MvPGlmYWNlPi9zdGF0aXN0aWNzL3R4X2Vycm9ycworRGF0ZToJCUFwcmlsIDIwMDUKK0tlcm5lbFZlcnNpb246CTIuNi4xMgorQ29udGFjdDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUluZGljYXRlcyB0aGUgbnVtYmVyIG9mIHBhY2tldHMgaW4gZXJyb3IgZHVyaW5nIHRyYW5zbWlzc2lvbiBieQorCQlhIG5ldHdvcmsgZGV2aWNlLiBTZWUgdGhlIGRyaXZlciBmb3IgdGhlIGV4YWN0IHJlYXNvbnMgYXMgdG8KKwkJd2h5IHRoZSBwYWNrZXRzIHdlcmUgZHJvcHBlZC4KKworV2hhdDoJCS9zeXMvY2xhc3MvPGlmYWNlPi9zdGF0aXN0aWNzL3R4X2ZpZm9fZXJyb3JzCitEYXRlOgkJQXByaWwgMjAwNQorS2VybmVsVmVyc2lvbjoJMi42LjEyCitDb250YWN0OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJSW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgcGFja2V0cyBoYXZpbmcgY2F1c2VkIGEgdHJhbnNtaXQKKwkJRklGTyBlcnJvci4gU2VlIHRoZSBkcml2ZXIgZm9yIHRoZSBleGFjdCByZWFzb25zIGFzIHRvIHdoeSB0aGUKKwkJcGFja2V0cyB3ZXJlIGRyb3BwZWQuCisKK1doYXQ6CQkvc3lzL2NsYXNzLzxpZmFjZT4vc3RhdGlzdGljcy90eF9oZWFydGJlYXRfZXJyb3JzCitEYXRlOgkJQXByaWwgMjAwNQorS2VybmVsVmVyc2lvbjoJMi42LjEyCitDb250YWN0OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJSW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgcGFja2V0cyB0cmFuc21pdHRlZCB0aGF0IGhhdmUgYmVlbgorCQlyZXBvcnRlZCBhcyBoZWFydGJlYXQgZXJyb3JzLiBTZWUgdGhlIGRyaXZlciBmb3IgdGhlIGV4YWN0CisJCXJlYXNvbnMgYXMgdG8gd2h5IHRoZSBwYWNrZXRzIHdlcmUgZHJvcHBlZC4KKworV2hhdDoJCS9zeXMvY2xhc3MvPGlmYWNlPi9zdGF0aXN0aWNzL3R4X3BhY2tldHMKK0RhdGU6CQlBcHJpbCAyMDA1CitLZXJuZWxWZXJzaW9uOgkyLjYuMTIKK0NvbnRhY3Q6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBwYWNrZXRzIHRyYW5zbWl0dGVkIGJ5IGEgbmV0d29yaworCQlkZXZpY2UuIFNlZSB0aGUgZHJpdmVyIGZvciB3aGV0aGVyIHRoaXMgcmVwb3J0cyB0aGUgbnVtYmVyIG9mIGFsbAorCQlhdHRlbXB0ZWQgb3Igc3VjY2Vzc2Z1bCB0cmFuc21pc3Npb25zLgorCitXaGF0OgkJL3N5cy9jbGFzcy88aWZhY2U+L3N0YXRpc3RpY3MvdHhfd2luZG93X2Vycm9ycworRGF0ZToJCUFwcmlsIDIwMDUKK0tlcm5lbFZlcnNpb246CTIuNi4xMgorQ29udGFjdDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUluZGljYXRlcyB0aGUgbnVtYmVyIG9mIHBhY2tldHMgbm90IHN1Y2Nlc3NmdWxseSB0cmFuc21pdHRlZAorCQlkdWUgdG8gYSB3aW5kb3cgY29sbGlzaW9uLiBUaGUgc3BlY2lmaWMgbWVhbmluZyBkZXBlbmRzIG9uIHRoZQorCQlNQUMgbGF5ZXIgdXNlZC4gIE9uIEV0aGVybmV0IHRoaXMgaXMgdXN1YWxseSB1c2VkIHRvIHJlcG9ydAorCQlsYXRlIGNvbGxpc2lvbnMgZXJyb3JzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1wa3RjZHZkIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1wa3RjZHZkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxYzNmMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXBrdGNkdmQKQEAgLTAsMCArMSw3MiBAQAorV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvcGt0Y2R2ZC8KK0RhdGU6ICAgICAgICAgICBPY3QuIDIwMDYKK0tlcm5lbFZlcnNpb246ICAyLjYuMjAKK0NvbnRhY3Q6ICAgICAgICBUaG9tYXMgTWFpZXIgPGJhbGFnaUBqdXN0bWFpbC5kZT4KK0Rlc2NyaXB0aW9uOgorCitzeXNmcyBpbnRlcmZhY2UKKy0tLS0tLS0tLS0tLS0tLQorCitUaGUgcGt0Y2R2ZCBtb2R1bGUgKHBhY2tldCB3cml0aW5nIGRyaXZlcikgY3JlYXRlcwordGhlc2UgZmlsZXMgaW4gdGhlIHN5c2ZzOgorKDxkZXZpZD4gaXMgaW4gZm9ybWF0ICBtYWpvcjptaW5vciApCisKKy9zeXMvY2xhc3MvcGt0Y2R2ZC8KKyAgICBhZGQgICAgICAgICAgICAoMDIwMCkgIFdyaXRlIGEgYmxvY2sgZGV2aWNlIGlkIChtYWpvcjptaW5vcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNyZWF0ZSBhIG5ldyBwa3RjZHZkIGRldmljZSBhbmQgbWFwCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCB0byB0aGUgYmxvY2sgZGV2aWNlLgorCisgICAgcmVtb3ZlICAgICAgICAgKDAyMDApICBXcml0ZSB0aGUgcGt0Y2R2ZCBkZXZpY2UgaWQgKG1ham9yOm1pbm9yKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gaXQgdG8gcmVtb3ZlIHRoZSBwa3RjZHZkIGRldmljZS4KKworICAgIGRldmljZV9tYXAgICAgICgwNDQ0KSAgU2hvd3MgdGhlIGRldmljZSBtYXBwaW5nIGluIGZvcm1hdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGt0Y2R2ZFswLTddIDxwa3RkZXZpZD4gPGJsa2RldmlkPgorCisvc3lzL2NsYXNzL3BrdGNkdmQvcGt0Y2R2ZFswLTddLworICAgIGRldiAgICAgICAgICAgICAgICAgICAoMDQ0NCkgRGV2aWNlIGlkCisgICAgdWV2ZW50ICAgICAgICAgICAgICAgICgwMjAwKSBUbyBzZW5kIGFuIHVldmVudC4KKworL3N5cy9jbGFzcy9wa3RjZHZkL3BrdGNkdmRbMC03XS9zdGF0LworICAgIHBhY2tldHNfc3RhcnRlZCAgICAgICAoMDQ0NCkgTnVtYmVyIG9mIHN0YXJ0ZWQgcGFja2V0cy4KKyAgICBwYWNrZXRzX2ZpbmlzaGVkICAgICAgKDA0NDQpIE51bWJlciBvZiBmaW5pc2hlZCBwYWNrZXRzLgorCisgICAga2Jfd3JpdHRlbiAgICAgICAgICAgICgwNDQ0KSBrQnl0ZXMgd3JpdHRlbi4KKyAgICBrYl9yZWFkICAgICAgICAgICAgICAgKDA0NDQpIGtCeXRlcyByZWFkLgorICAgIGtiX3JlYWRfZ2F0aGVyICAgICAgICAoMDQ0NCkga0J5dGVzIHJlYWQgdG8gZmlsbCB3cml0ZSBwYWNrZXRzLgorCisgICAgcmVzZXQgICAgICAgICAgICAgICAgICgwMjAwKSBXcml0ZSBhbnkgdmFsdWUgdG8gaXQgdG8gcmVzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrdGNkdmQgZGV2aWNlIHN0YXRpc3RpYyB2YWx1ZXMsIGxpa2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzIHJlYWQvd3JpdHRlbi4KKworL3N5cy9jbGFzcy9wa3RjZHZkL3BrdGNkdmRbMC03XS93cml0ZV9xdWV1ZS8KKyAgICBzaXplICAgICAgICAgICAgICAgICAgKDA0NDQpIENvbnRhaW5zIHRoZSBzaXplIG9mIHRoZSBiaW8gd3JpdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlLgorCisgICAgY29uZ2VzdGlvbl9vZmYgICAgICAgICgwNjQ0KSBJZiBiaW8gd3JpdGUgcXVldWUgc2l6ZSBpcyBiZWxvdworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBtYXJrLCBhY2NlcHQgbmV3IGJpbyByZXF1ZXN0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgYmxvY2sgbGF5ZXIuCisKKyAgICBjb25nZXN0aW9uX29uICAgICAgICAgKDA2NDQpIElmIGJpbyB3cml0ZSBxdWV1ZSBzaXplIGlzIGhpZ2hlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgdGhpcyBtYXJrLCBkbyBubyBsb25nZXIgYWNjZXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW8gd3JpdGUgcmVxdWVzdHMgZnJvbSB0aGUgYmxvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyIGFuZCB3YWl0IHRpbGwgdGhlIHBrdGNkdmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSBoYXMgcHJvY2Vzc2VkIGVub3VnaCBiaW8ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc28gdGhhdCBiaW8gd3JpdGUgcXVldWUgc2l6ZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVsb3cgY29uZ2VzdGlvbiBvZmYgbWFyay4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgdmFsdWUgb2YgPD0gMCBkaXNhYmxlcyBjb25nZXN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLgorCisKK0V4YW1wbGU6CistLS0tLS0tLQorVG8gdXNlIHRoZSBwa3RjZHZkIHN5c2ZzIGludGVyZmFjZSBkaXJlY3RseSwgeW91IGNhbiBkbzoKKworIyBjcmVhdGUgYSBuZXcgcGt0Y2R2ZCBkZXZpY2UgbWFwcGVkIHRvIC9kZXYvaGRjCitlY2hvICIyMjowIiA+L3N5cy9jbGFzcy9wa3RjZHZkL2FkZAorY2F0IC9zeXMvY2xhc3MvcGt0Y2R2ZC9kZXZpY2VfbWFwCisjIGFzc3VtaW5nIGRldmljZSBwa3RjZHZkMCB3YXMgY3JlYXRlZCwgbG9vayBhdCBzdGF0J3MKK2NhdCAvc3lzL2NsYXNzL3BrdGNkdmQvcGt0Y2R2ZDAvc3RhdC9rYl93cml0dGVuCisjIHByaW50IHRoZSBkZXZpY2UgaWQgb2YgdGhlIG1hcHBlZCBibG9jayBkZXZpY2UKK2ZncmVwIHBrdGNkdmQwIC9zeXMvY2xhc3MvcGt0Y2R2ZC9kZXZpY2VfbWFwCisjIHJlbW92ZSBkZXZpY2UsIHVzaW5nIHBrdGNkdmQwIGRldmljZSBpZCAgIDI1MzowCitlY2hvICIyNTM6MCIgPi9zeXMvY2xhc3MvcGt0Y2R2ZC9yZW1vdmUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtcG93ZXIgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXBvd2VyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhMDU3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXBvd2VyCkBAIC0wLDAgKzEsMTM0IEBACitXaGF0OgkJL3N5cy9jbGFzcy9wb3dlci9kczI3NjAtYmF0dGVyeS4qL2NoYXJnZV9ub3cKK0RhdGU6CQlNYXkgMjAxMAorS2VybmVsVmVyc2lvbjoJMi42LjM1CitDb250YWN0OglEYW5pZWwgTWFjayA8ZGFuaWVsQGNhaWFxLmRlPgorRGVzY3JpcHRpb246CisJCVRoaXMgZmlsZSBpcyB3cml0ZWFibGUgYW5kIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgY3VycmVudAorCQljb2xvdW1iIGNvdW50ZXIgdmFsdWUgaW5zaWRlIHRoZSBiYXR0ZXJ5IG1vbml0b3IgY2hpcC4gVGhpcworCQlpcyBuZWVkZWQgZm9yIHVuYXZvaWRhYmxlIGNvcnJlY3Rpb25zIG9mIGFnaW5nIGJhdHRlcmllcy4KKwkJQSB1c2Vyc3BhY2UgZGFlbW9uIGNhbiBtb25pdG9yIHRoZSBiYXR0ZXJ5IGNoYXJnaW5nIGxvZ2ljCisJCWFuZCBvbmNlIHRoZSBjb3VudGVyIGRyb3BzIG91dCBvZiBjb25zaWRlcmFibGUgYm91bmRzLCB0YWtlCisJCWFwcHJvcHJpYXRlIGFjdGlvbi4KKworV2hhdDoJCS9zeXMvY2xhc3MvcG93ZXIvZHMyNzYwLWJhdHRlcnkuKi9jaGFyZ2VfZnVsbAorRGF0ZToJCU1heSAyMDEwCitLZXJuZWxWZXJzaW9uOgkyLjYuMzUKK0NvbnRhY3Q6CURhbmllbCBNYWNrIDxkYW5pZWxAY2FpYXEuZGU+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBmaWxlIGlzIHdyaXRlYWJsZSBhbmQgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBhc3N1bWVkCisJCWJhdHRlcnkgJ2Z1bGwgbGV2ZWwnLiBBcyBiYXR0ZXJpZXMgYWdlLCB0aGlzIHZhbHVlIGhhcyB0byBiZQorCQlhbWVuZGVkIG92ZXIgdGltZS4KKworV2hhdDoJCS9zeXMvY2xhc3MvcG93ZXJfc3VwcGx5L21heDE0NTc3LWNoYXJnZXIvZGV2aWNlL2Zhc3RfY2hhcmdlX3RpbWVyCitEYXRlOgkJT2N0b2JlciAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE4LjAKK0NvbnRhY3Q6CUtyenlzenRvZiBLb3psb3dza2kgPGsua296bG93c2tpQHNhbXN1bmcuY29tPgorRGVzY3JpcHRpb246CisJCVRoaXMgZW50cnkgc2hvd3MgYW5kIHNldHMgdGhlIG1heGltdW0gdGltZSB0aGUgbWF4MTQ1NzcKKwkJY2hhcmdlciBvcGVyYXRlcyBpbiBmYXN0LWNoYXJnZSBtb2RlLiBXaGVuIHRoZSB0aW1lciBleHBpcmVzCisJCXRoZSBkZXZpY2Ugd2lsbCB0ZXJtaW5hdGUgZmFzdC1jaGFyZ2UgbW9kZSAoY2hhcmdpbmcgY3VycmVudAorCQl3aWxsIGRyb3AgdG8gMCBBKSBhbmQgd2lsbCB0cmlnZ2VyIGludGVycnVwdC4KKworCQlWYWxpZCB2YWx1ZXM6CisJCS0gNSwgNiBvciA3IChob3VycyksCisJCS0gMDogZGlzYWJsZWQuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3Bvd2VyX3N1cHBseS9tYXg3NzY5My1jaGFyZ2VyL2RldmljZS9mYXN0X2NoYXJnZV90aW1lcgorRGF0ZToJCUphbnVhcnkgMjAxNQorS2VybmVsVmVyc2lvbjoJMy4xOS4wCitDb250YWN0OglLcnp5c3p0b2YgS296bG93c2tpIDxrLmtvemxvd3NraUBzYW1zdW5nLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGVudHJ5IHNob3dzIGFuZCBzZXRzIHRoZSBtYXhpbXVtIHRpbWUgdGhlIG1heDc3NjkzCisJCWNoYXJnZXIgb3BlcmF0ZXMgaW4gZmFzdC1jaGFyZ2UgbW9kZS4gV2hlbiB0aGUgdGltZXIgZXhwaXJlcworCQl0aGUgZGV2aWNlIHdpbGwgdGVybWluYXRlIGZhc3QtY2hhcmdlIG1vZGUgKGNoYXJnaW5nIGN1cnJlbnQKKwkJd2lsbCBkcm9wIHRvIDAgQSkgYW5kIHdpbGwgdHJpZ2dlciBpbnRlcnJ1cHQuCisKKwkJVmFsaWQgdmFsdWVzOgorCQktIDQgLSAxNiAoaG91cnMpLCBzdGVwIGJ5IDIgKHJvdW5kZWQgZG93bikKKwkJLSAwOiBkaXNhYmxlZC4KKworV2hhdDoJCS9zeXMvY2xhc3MvcG93ZXJfc3VwcGx5L21heDc3NjkzLWNoYXJnZXIvZGV2aWNlL3RvcF9vZmZfdGhyZXNob2xkX2N1cnJlbnQKK0RhdGU6CQlKYW51YXJ5IDIwMTUKK0tlcm5lbFZlcnNpb246CTMuMTkuMAorQ29udGFjdDoJS3J6eXN6dG9mIEtvemxvd3NraSA8ay5rb3psb3dza2lAc2Ftc3VuZy5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBlbnRyeSBzaG93cyBhbmQgc2V0cyB0aGUgY2hhcmdpbmcgY3VycmVudCB0aHJlc2hvbGQgZm9yCisJCWVudGVyaW5nIHRvcC1vZmYgY2hhcmdpbmcgbW9kZS4gV2hlbiBjaGFyZ2luZyBjdXJyZW50IGluIGZhc3QKKwkJY2hhcmdlIG1vZGUgZHJvcHMgYmVsb3cgdGhpcyB2YWx1ZSwgdGhlIGNoYXJnZXIgd2lsbCB0cmlnZ2VyCisJCWludGVycnVwdCBhbmQgc3RhcnQgdG9wLW9mZiBjaGFyZ2luZyBtb2RlLgorCisJCVZhbGlkIHZhbHVlczoKKwkJLSAxMDAwMDAgLSAyMDAwMDAgKG1pY3JvYW1wcyksIHN0ZXAgYnkgMjUwMDAgKHJvdW5kZWQgZG93bikKKwkJLSAyMDAwMDAgLSAzNTAwMDAgKG1pY3JvYW1wcyksIHN0ZXAgYnkgNTAwMDAgKHJvdW5kZWQgZG93bikKKwkJLSAwOiBkaXNhYmxlZC4KKworV2hhdDoJCS9zeXMvY2xhc3MvcG93ZXJfc3VwcGx5L21heDc3NjkzLWNoYXJnZXIvZGV2aWNlL3RvcF9vZmZfdGltZXIKK0RhdGU6CQlKYW51YXJ5IDIwMTUKK0tlcm5lbFZlcnNpb246CTMuMTkuMAorQ29udGFjdDoJS3J6eXN6dG9mIEtvemxvd3NraSA8ay5rb3psb3dza2lAc2Ftc3VuZy5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBlbnRyeSBzaG93cyBhbmQgc2V0cyB0aGUgbWF4aW11bSB0aW1lIHRoZSBtYXg3NzY5MworCQljaGFyZ2VyIG9wZXJhdGVzIGluIHRvcC1vZmYgY2hhcmdlIG1vZGUuIFdoZW4gdGhlIHRpbWVyIGV4cGlyZXMKKwkJdGhlIGRldmljZSB3aWxsIHRlcm1pbmF0ZSB0b3Atb2ZmIGNoYXJnZSBtb2RlIChjaGFyZ2luZyBjdXJyZW50CisJCXdpbGwgZHJvcCB0byAwIEEpIGFuZCB3aWxsIHRyaWdnZXIgaW50ZXJydXB0LgorCisJCVZhbGlkIHZhbHVlczoKKwkJLSAwIC0gNzAgKG1pbnV0ZXMpLCBzdGVwIGJ5IDEwIChyb3VuZGVkIGRvd24pCisKK1doYXQ6CQkvc3lzL2NsYXNzL3Bvd2VyX3N1cHBseS9icTI0MjU3LWNoYXJnZXIvb3ZwX3ZvbHRhZ2UKK0RhdGU6CQlPY3RvYmVyIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuNC4wCitDb250YWN0OglBbmRyZWFzIERhbm5lbmJlcmcgPGRhbm5lbmJlcmdAdGkuY29tPgorRGVzY3JpcHRpb246CisJCVRoaXMgZW50cnkgY29uZmlndXJlcyB0aGUgb3ZlcnZvbHRhZ2UgcHJvdGVjdGlvbiBmZWF0dXJlIG9mIGJxMjQyNTctCisJCXR5cGUgY2hhcmdlciBkZXZpY2VzLiBUaGlzIGZlYXR1cmUgcHJvdGVjdHMgdGhlIGRldmljZSBhbmQgb3RoZXIKKwkJY29tcG9uZW50cyBhZ2FpbnN0IGRhbWFnZSBmcm9tIG92ZXJ2b2x0YWdlIG9uIHRoZSBpbnB1dCBzdXBwbHkuIFNlZQorCQlkZXZpY2UgZGF0YXNoZWV0IGZvciBkZXRhaWxzLgorCisJCVZhbGlkIHZhbHVlczoKKwkJLSA2MDAwMDAwLCA2NTAwMDAwLCA3MDAwMDAwLCA4MDAwMDAwLCA5MDAwMDAwLCA5NTAwMDAwLCAxMDAwMDAwMCwKKwkJICAxMDUwMDAwMCAoYWxsIHVWKQorCitXaGF0OgkJL3N5cy9jbGFzcy9wb3dlcl9zdXBwbHkvYnEyNDI1Ny1jaGFyZ2VyL2luX2RwbV92b2x0YWdlCitEYXRlOgkJT2N0b2JlciAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjQuMAorQ29udGFjdDoJQW5kcmVhcyBEYW5uZW5iZXJnIDxkYW5uZW5iZXJnQHRpLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGVudHJ5IGNvbmZpZ3VyZXMgdGhlIGlucHV0IGR5bmFtaWMgcG93ZXIgcGF0aCBtYW5hZ2VtZW50IHZvbHRhZ2Ugb2YKKwkJYnEyNDI1Ny10eXBlIGNoYXJnZXIgZGV2aWNlcy4gT25jZSB0aGUgc3VwcGx5IGRyb3BzIHRvIHRoZSBjb25maWd1cmVkCisJCXZvbHRhZ2UsIHRoZSBpbnB1dCBjdXJyZW50IGxpbWl0IGlzIHJlZHVjZWQgZG93biB0byBwcmV2ZW50IHRoZSBmdXJ0aGVyCisJCWRyb3Agb2YgdGhlIHN1cHBseS4gV2hlbiB0aGUgSUMgZW50ZXJzIHRoaXMgbW9kZSwgdGhlIGNoYXJnZSBjdXJyZW50IGlzCisJCWxvd2VyIHRoYW4gdGhlIHNldCB2YWx1ZS4gU2VlIGRldmljZSBkYXRhc2hlZXQgZm9yIGRldGFpbHMuCisKKwkJVmFsaWQgdmFsdWVzOgorCQktIDQyMDAwMDAsIDQyODAwMDAsIDQzNjAwMDAsIDQ0NDAwMDAsIDQ1MjAwMDAsIDQ2MDAwMDAsIDQ2ODAwMDAsCisJCSAgNDc2MDAwMCAoYWxsIHVWKQorCitXaGF0OgkJL3N5cy9jbGFzcy9wb3dlcl9zdXBwbHkvYnEyNDI1Ny1jaGFyZ2VyL2hpZ2hfaW1wZWRhbmNlX2VuYWJsZQorRGF0ZToJCU9jdG9iZXIgMjAxNQorS2VybmVsVmVyc2lvbjoJNC40LjAKK0NvbnRhY3Q6CUFuZHJlYXMgRGFubmVuYmVyZyA8ZGFubmVuYmVyZ0B0aS5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBlbnRyeSBhbGxvd3MgZW5hYmxpbmcgdGhlIGhpZ2gtaW1wZWRhbmNlIG1vZGUgb2YgYnEyNDI1Ny10eXBlCisJCWNoYXJnZXIgZGV2aWNlcy4gSWYgZW5hYmxlZCwgaXQgcGxhY2VzIHRoZSBjaGFyZ2VyIElDIGludG8gbG93IHBvd2VyCisJCXN0YW5kYnkgbW9kZSB3aXRoIHRoZSBzd2l0Y2ggbW9kZSBjb250cm9sbGVyIGRpc2FibGVkLiBXaGVuIGRpc2FibGVkLAorCQl0aGUgY2hhcmdlciBvcGVyYXRlcyBub3JtYWxseS4gU2VlIGRldmljZSBkYXRhc2hlZXQgZm9yIGRldGFpbHMuCisKKwkJVmFsaWQgdmFsdWVzOgorCQktIDE6IGVuYWJsZWQKKwkJLSAwOiBkaXNhYmxlZAorCitXaGF0OgkJL3N5cy9jbGFzcy9wb3dlcl9zdXBwbHkvYnEyNDI1Ny1jaGFyZ2VyL3N5c29mZl9lbmFibGUKK0RhdGU6CQlPY3RvYmVyIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuNC4wCitDb250YWN0OglBbmRyZWFzIERhbm5lbmJlcmcgPGRhbm5lbmJlcmdAdGkuY29tPgorRGVzY3JpcHRpb246CisJCVRoaXMgZW50cnkgYWxsb3dzIGVuYWJsaW5nIHRoZSBzeXNvZmYgbW9kZSBvZiBicTI0MjU3LXR5cGUgY2hhcmdlcgorCQlkZXZpY2VzLiBJZiBlbmFibGVkIGFuZCB0aGUgaW5wdXQgaXMgcmVtb3ZlZCwgdGhlIGludGVybmFsIGJhdHRlcnkgRkVUCisJCWlzIHR1cm5lZCBvZmYgaW4gb3JkZXIgdG8gcmVkdWNlIHRoZSBsZWFrYWdlIGZyb20gdGhlIEJBVCBwaW4gdG8gbGVzcworCQl0aGFuIDF1QS4gTm90ZSB0aGF0IG9uIHNvbWUgZGV2aWNlcy9zeXN0ZW1zIHRoaXMgZGlzY29ubmVjdHMgdGhlIGJhdHRlcnkKKwkJZnJvbSB0aGUgc3lzdGVtLiBTZWUgZGV2aWNlIGRhdGFzaGVldCBmb3IgZGV0YWlscy4KKworCQlWYWxpZCB2YWx1ZXM6CisJCS0gMTogZW5hYmxlZAorCQktIDA6IGRpc2FibGVkCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXBvd2VyLXR3bDQwMzAgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXBvd2VyLXR3bDQwMzAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmUyNmFmMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtcG93ZXItdHdsNDAzMApAQCAtMCwwICsxLDQ1IEBACitXaGF0OiAvc3lzL2NsYXNzL3Bvd2VyX3N1cHBseS90d2w0MDMwX2FjL21heF9jdXJyZW50CisgICAgICAvc3lzL2NsYXNzL3Bvd2VyX3N1cHBseS90d2w0MDMwX3VzYi9tYXhfY3VycmVudAorRGVzY3JpcHRpb246CisJUmVhZC9Xcml0ZSBsaW1pdCBvbiBjdXJyZW50IHdoaWNoIG1heQorCWJlIGRyYXduIGZyb20gdGhlIGFjIChBY2Nlc3NvcnkgQ2hhcmdlcikgb3IKKwlVU0IgcG9ydC4KKworCVZhbHVlIGlzIGluIG1pY3JvLUFtcHMuCisKKwlWYWx1ZSBpcyBzZXQgYXV0b21hdGljYWxseSB0byBhbiBhcHByb3ByaWF0ZQorCXZhbHVlIHdoZW4gYSBjYWJsZSBpcyBwbHVnZ2VkIG9yIHVucGx1Z2dlZC4KKworCVZhbHVlIGNhbiB0aGUgc2V0IGJ5IHdyaXRpbmcgdG8gdGhlIGF0dHJpYnV0ZS4KKwlUaGUgY2hhbmdlIHdpbGwgb25seSBwZXJzaXN0IHVudGlsIHRoZSBuZXh0CisJcGx1ZyBldmVudC4gIFRoZXNlIGV2ZW50IGFyZSByZXBvcnRlZCB2aWEgdWRldi4KKworCitXaGF0OiAvc3lzL2NsYXNzL3Bvd2VyX3N1cHBseS90d2w0MDMwX3VzYi9tb2RlCitEZXNjcmlwdGlvbjoKKwlDaGFuZ2luZyBtb2RlIGZvciBVU0IgcG9ydC4KKwlXcml0aW5nIHRvIHRoaXMgY2FuIGRpc2FibGUgY2hhcmdpbmcuCisKKwlQb3NzaWJsZSB2YWx1ZXMgYXJlOgorCQkiYXV0byIgLSBkcmF3IHBvd2VyIGFzIGFwcHJvcHJpYXRlIGZvciBkZXRlY3RlZAorCQkJIHBvd2VyIHNvdXJjZSBhbmQgYmF0dGVyeSBzdGF0dXMuCisJCSJvZmYiICAtIGRvIG5vdCBkcmF3IGFueSBwb3dlci4KKwkJImNvbnRpbnVvdXMiCisJCSAgICAgICAtIGFjdGl2YXRlIG1vZGUgZGVzY3JpYmVkIGFzICJsaW5lYXIiIGluCisJCSAgICAgICAgIFRXTCBkYXRhIHNoZWV0cy4gIFRoaXMgdXNlcyB3aGF0ZXZlcgorCQkJIGN1cnJlbnQgaXMgYXZhaWxhYmxlIGFuZCBkb2Vzbid0IHN3aXRjaCBvZmYKKwkJCSB3aGVuIHZvbHRhZ2UgZHJvcHMuCisKKwkJCSBUaGlzIGlzIHVzZWZ1bCBmb3IgdW5zdGFibGUgcG93ZXIgc291cmNlcworCQkJIHN1Y2ggYXMgYmljeWNsZSBkeW5hbW8sIGJ1dCBjYXJlIHNob3VsZAorCQkJIGJlIHRha2VuIHRoYXQgYmF0dGVyeSBpcyBub3Qgb3Zlci1jaGFyZ2VkLgorCitXaGF0OiAvc3lzL2NsYXNzL3Bvd2VyX3N1cHBseS90d2w0MDMwX2FjL21vZGUKK0Rlc2NyaXB0aW9uOgorCUNoYW5naW5nIG1vZGUgZm9yICdhYycgcG9ydC4KKwlXcml0aW5nIHRvIHRoaXMgY2FuIGRpc2FibGUgY2hhcmdpbmcuCisKKwlQb3NzaWJsZSB2YWx1ZXMgYXJlOgorCQkiYXV0byIgLSBkcmF3IHBvd2VyIGFzIGFwcHJvcHJpYXRlIGZvciBkZXRlY3RlZAorCQkJIHBvd2VyIHNvdXJjZSBhbmQgYmF0dGVyeSBzdGF0dXMuCisJCSJvZmYiICAtIGRvIG5vdCBkcmF3IGFueSBwb3dlci4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtcG93ZXJjYXAgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXBvd2VyY2FwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiM2IzZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXBvd2VyY2FwCkBAIC0wLDAgKzEsMTUyIEBACitXaGF0OgkJL3N5cy9jbGFzcy9wb3dlcmNhcC8KK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMworQ29udGFjdDoJbGludXgtcG1Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJVGhlIHBvd2VyY2FwLyBjbGFzcyBzdWIgZGlyZWN0b3J5IGJlbG9uZ3MgdG8gdGhlIHBvd2VyIGNhcAorCQlzdWJzeXN0ZW0uIFJlZmVyIHRvCisJCURvY3VtZW50YXRpb24vcG93ZXIvcG93ZXJjYXAvcG93ZXJjYXAudHh0IGZvciBkZXRhaWxzLgorCitXaGF0OgkJL3N5cy9jbGFzcy9wb3dlcmNhcC88Y29udHJvbCB0eXBlPgorRGF0ZToJCVNlcHRlbWJlciAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjEzCitDb250YWN0OglsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlBIDxjb250cm9sIHR5cGU+IGlzIGEgdW5pcXVlIG5hbWUgdW5kZXIgL3N5cy9jbGFzcy9wb3dlcmNhcC4KKwkJSGVyZSA8Y29udHJvbCB0eXBlPiBkZXRlcm1pbmVzIGhvdyB0aGUgcG93ZXIgaXMgZ29pbmcgdG8gYmUKKwkJY29udHJvbGxlZC4gQSA8Y29udHJvbCB0eXBlPiBjYW4gY29udGFpbiBtdWx0aXBsZSBwb3dlciB6b25lcy4KKworV2hhdDoJCS9zeXMvY2xhc3MvcG93ZXJjYXAvPGNvbnRyb2wgdHlwZT4vZW5hYmxlZAorRGF0ZToJCVNlcHRlbWJlciAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjEzCitDb250YWN0OglsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGFsbG93cyB0byBlbmFibGUvZGlzYWJsZSBwb3dlciBjYXBwaW5nIGZvciBhICJjb250cm9sIHR5cGUiLgorCQlUaGlzIHN0YXR1cyBhZmZlY3RzIGV2ZXJ5IHBvd2VyIHpvbmUgdXNpbmcgdGhpcyAiY29udHJvbF90eXBlLgorCitXaGF0OgkJL3N5cy9jbGFzcy9wb3dlcmNhcC88Y29udHJvbCB0eXBlPi88cG93ZXIgem9uZT4KK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMworQ29udGFjdDoJbGludXgtcG1Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJQSBwb3dlciB6b25lIGlzIGEgc2luZ2xlIG9yIGEgY29sbGVjdGlvbiBvZiBkZXZpY2VzLCB3aGljaCBjYW4KKwkJYmUgaW5kZXBlbmRlbnRseSBtb25pdG9yZWQgYW5kIGNvbnRyb2xsZWQuIEEgcG93ZXIgem9uZSBzeXNmcworCQllbnRyeSBpcyBxdWFsaWZpZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgPGNvbnRyb2wgdHlwZT4uCisJCUUuZy4gaW50ZWwtcmFwbDowOjE6MS4KKworV2hhdDoJCS9zeXMvY2xhc3MvcG93ZXJjYXAvPGNvbnRyb2wgdHlwZT4vPHBvd2VyIHpvbmU+LzxjaGlsZCBwb3dlciB6b25lPgorRGF0ZToJCVNlcHRlbWJlciAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjEzCitDb250YWN0OglsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlQb3dlciB6b25lcyBtYXkgYmUgb3JnYW5pemVkIGluIGEgaGllcmFyY2h5IGluIHdoaWNoIGNoaWxkCisJCXBvd2VyIHpvbmVzIHByb3ZpZGUgbW9uaXRvcmluZyBhbmQgY29udHJvbCBmb3IgYSBzdWJzZXQgb2YKKwkJZGV2aWNlcyB1bmRlciB0aGUgcGFyZW50LiBGb3IgZXhhbXBsZSwgaWYgdGhlcmUgaXMgYSBwYXJlbnQKKwkJcG93ZXIgem9uZSBmb3IgYSB3aG9sZSBDUFUgcGFja2FnZSwgZWFjaCBDUFUgY29yZSBpbiBpdCBjYW4KKwkJYmUgYSBjaGlsZCBwb3dlciB6b25lLgorCitXaGF0OgkJL3N5cy9jbGFzcy9wb3dlcmNhcC8uLi4vPHBvd2VyIHpvbmU+L25hbWUKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMworQ29udGFjdDoJbGludXgtcG1Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJU3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoaXMgcG93ZXIgem9uZS4KKworV2hhdDoJCS9zeXMvY2xhc3MvcG93ZXJjYXAvLi4uLzxwb3dlciB6b25lPi9lbmVyZ3lfdWoKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMworQ29udGFjdDoJbGludXgtcG1Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJQ3VycmVudCBlbmVyZ3kgY291bnRlciBpbiBtaWNyby1qb3VsZXMuIFdyaXRlICIwIiB0byByZXNldC4KKwkJSWYgdGhlIGNvdW50ZXIgY2FuIG5vdCBiZSByZXNldCwgdGhlbiB0aGlzIGF0dHJpYnV0ZSBpcworCQlyZWFkLW9ubHkuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3Bvd2VyY2FwLy4uLi88cG93ZXIgem9uZT4vbWF4X2VuZXJneV9yYW5nZV91agorRGF0ZToJCVNlcHRlbWJlciAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjEzCitDb250YWN0OglsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlSYW5nZSBvZiB0aGUgYWJvdmUgZW5lcmd5IGNvdW50ZXIgaW4gbWljcm8tam91bGVzLgorCisKK1doYXQ6CQkvc3lzL2NsYXNzL3Bvd2VyY2FwLy4uLi88cG93ZXIgem9uZT4vcG93ZXJfdXcKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMworQ29udGFjdDoJbGludXgtcG1Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJQ3VycmVudCBwb3dlciBpbiBtaWNyby13YXR0cy4KKworV2hhdDoJCS9zeXMvY2xhc3MvcG93ZXJjYXAvLi4uLzxwb3dlciB6b25lPi9tYXhfcG93ZXJfcmFuZ2VfdXcKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMworQ29udGFjdDoJbGludXgtcG1Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJUmFuZ2Ugb2YgdGhlIGFib3ZlIHBvd2VyIHZhbHVlIGluIG1pY3JvLXdhdHRzLgorCitXaGF0OgkJL3N5cy9jbGFzcy9wb3dlcmNhcC8uLi4vPHBvd2VyIHpvbmU+L2NvbnN0cmFpbnRfWF9uYW1lCitEYXRlOgkJU2VwdGVtYmVyIDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTMKK0NvbnRhY3Q6CWxpbnV4LXBtQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUVhY2ggcG93ZXIgem9uZSBjYW4gZGVmaW5lIG9uZSBvciBtb3JlIGNvbnN0cmFpbnRzLiBFYWNoCisJCWNvbnN0cmFpbnQgY2FuIGhhdmUgYW4gb3B0aW9uYWwgbmFtZS4gSGVyZSAiWCIgY2FuIGhhdmUgdmFsdWVzCisJCWZyb20gMCB0byBtYXggaW50ZWdlci4KKworV2hhdDoJCS9zeXMvY2xhc3MvcG93ZXJjYXAvLi4uLzxwb3dlciB6b25lPi9jb25zdHJhaW50X1hfcG93ZXJfbGltaXRfdXcKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMworQ29udGFjdDoJbGludXgtcG1Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJUG93ZXIgbGltaXQgaW4gbWljcm8td2F0dHMgc2hvdWxkIGJlIGFwcGxpY2FibGUgZm9yCisJCXRoZSB0aW1lIHdpbmRvdyBzcGVjaWZpZWQgYnkgImNvbnN0cmFpbnRfWF90aW1lX3dpbmRvd191cyIuCisJCUhlcmUgIlgiIGNhbiBoYXZlIHZhbHVlcyBmcm9tIDAgdG8gbWF4IGludGVnZXIuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3Bvd2VyY2FwLy4uLi88cG93ZXIgem9uZT4vY29uc3RyYWludF9YX3RpbWVfd2luZG93X3VzCitEYXRlOgkJU2VwdGVtYmVyIDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTMKK0NvbnRhY3Q6CWxpbnV4LXBtQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCVRpbWUgd2luZG93IGluIG1pY3JvIHNlY29uZHMuIFRoaXMgaXMgdXNlZCBhbG9uZyB3aXRoCisJCWNvbnN0cmFpbnRfWF9wb3dlcl9saW1pdF91dyB0byBkZWZpbmUgYSBwb3dlciBjb25zdHJhaW50LgorCQlIZXJlICJYIiBjYW4gaGF2ZSB2YWx1ZXMgZnJvbSAwIHRvIG1heCBpbnRlZ2VyLgorCisKK1doYXQ6CQkvc3lzL2NsYXNzL3Bvd2VyY2FwLzxjb250cm9sIHR5cGU+Ly4uLi9jb25zdHJhaW50X1hfbWF4X3Bvd2VyX3V3CitEYXRlOgkJU2VwdGVtYmVyIDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTMKK0NvbnRhY3Q6CWxpbnV4LXBtQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCU1heGltdW0gYWxsb3dlZCBwb3dlciBpbiBtaWNybyB3YXR0cyBmb3IgdGhpcyBjb25zdHJhaW50LgorCQlIZXJlICJYIiBjYW4gaGF2ZSB2YWx1ZXMgZnJvbSAwIHRvIG1heCBpbnRlZ2VyLgorCitXaGF0OgkJL3N5cy9jbGFzcy9wb3dlcmNhcC88Y29udHJvbCB0eXBlPi8uLi4vY29uc3RyYWludF9YX21pbl9wb3dlcl91dworRGF0ZToJCVNlcHRlbWJlciAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjEzCitDb250YWN0OglsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlNaW5pbXVtIGFsbG93ZWQgcG93ZXIgaW4gbWljcm8gd2F0dHMgZm9yIHRoaXMgY29uc3RyYWludC4KKwkJSGVyZSAiWCIgY2FuIGhhdmUgdmFsdWVzIGZyb20gMCB0byBtYXggaW50ZWdlci4KKworV2hhdDoJCS9zeXMvY2xhc3MvcG93ZXJjYXAvLi4uLzxwb3dlciB6b25lPi9jb25zdHJhaW50X1hfbWF4X3RpbWVfd2luZG93X3VzCitEYXRlOgkJU2VwdGVtYmVyIDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTMKK0NvbnRhY3Q6CWxpbnV4LXBtQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCU1heGltdW0gYWxsb3dlZCB0aW1lIHdpbmRvdyBpbiBtaWNybyBzZWNvbmRzIGZvciB0aGlzCisJCWNvbnN0cmFpbnQuIEhlcmUgIlgiIGNhbiBoYXZlIHZhbHVlcyBmcm9tIDAgdG8gbWF4IGludGVnZXIuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3Bvd2VyY2FwLy4uLi88cG93ZXIgem9uZT4vY29uc3RyYWludF9YX21pbl90aW1lX3dpbmRvd191cworRGF0ZToJCVNlcHRlbWJlciAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjEzCitDb250YWN0OglsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlNaW5pbXVtIGFsbG93ZWQgdGltZSB3aW5kb3cgaW4gbWljcm8gc2Vjb25kcyBmb3IgdGhpcworCQljb25zdHJhaW50LiBIZXJlICJYIiBjYW4gaGF2ZSB2YWx1ZXMgZnJvbSAwIHRvIG1heCBpbnRlZ2VyLgorCitXaGF0OgkJL3N5cy9jbGFzcy9wb3dlcmNhcC8uLi4vPHBvd2VyIHpvbmU+L2VuYWJsZWQKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMworQ29udGFjdDoJbGludXgtcG1Admdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbgorCQlUaGlzIGFsbG93cyB0byBlbmFibGUvZGlzYWJsZSBwb3dlciBjYXBwaW5nIGF0IHBvd2VyIHpvbmUgbGV2ZWwuCisJCVRoaXMgYXBwbGllcyB0byBjdXJyZW50IHBvd2VyIHpvbmUgYW5kIGl0cyBjaGlsZHJlbi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtcHdtIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1wd20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ3OWQ3NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtcHdtCkBAIC0wLDAgKzEsNzkgQEAKK1doYXQ6CQkvc3lzL2NsYXNzL3B3bS8KK0RhdGU6CQlNYXkgMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMQorQ29udGFjdDoJSCBIYXJ0bGV5IFN3ZWV0ZW4gPGhzd2VldGVuQHZpc2lvbmVuZ3JhdmVycy5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIHB3bS8gY2xhc3Mgc3ViLWRpcmVjdG9yeSBiZWxvbmdzIHRvIHRoZSBHZW5lcmljIFBXTQorCQlGcmFtZXdvcmsgYW5kIHByb3ZpZGVzIGEgc3lzZnMgaW50ZXJmYWNlIGZvciB1c2luZyBQV00KKwkJY2hhbm5lbHMuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3B3bS9wd21jaGlwTi8KK0RhdGU6CQlNYXkgMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMQorQ29udGFjdDoJSCBIYXJ0bGV5IFN3ZWV0ZW4gPGhzd2VldGVuQHZpc2lvbmVuZ3JhdmVycy5jb20+CitEZXNjcmlwdGlvbjoKKwkJQSAvc3lzL2NsYXNzL3B3bS9wd21jaGlwTiBkaXJlY3RvcnkgaXMgY3JlYXRlZCBmb3IgZWFjaAorCQlwcm9iZWQgUFdNIGNvbnRyb2xsZXIvY2hpcCB3aGVyZSBOIGlzIHRoZSBiYXNlIG9mIHRoZQorCQlQV00gY2hpcC4KKworV2hhdDoJCS9zeXMvY2xhc3MvcHdtL3B3bWNoaXBOL25wd20KK0RhdGU6CQlNYXkgMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMQorQ29udGFjdDoJSCBIYXJ0bGV5IFN3ZWV0ZW4gPGhzd2VldGVuQHZpc2lvbmVuZ3JhdmVycy5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIG51bWJlciBvZiBQV00gY2hhbm5lbHMgc3VwcG9ydGVkIGJ5IHRoZSBQV00gY2hpcC4KKworV2hhdDoJCS9zeXMvY2xhc3MvcHdtL3B3bWNoaXBOL2V4cG9ydAorRGF0ZToJCU1heSAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjExCitDb250YWN0OglIIEhhcnRsZXkgU3dlZXRlbiA8aHN3ZWV0ZW5AdmlzaW9uZW5ncmF2ZXJzLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlFeHBvcnRzIGEgUFdNIGNoYW5uZWwgZnJvbSB0aGUgUFdNIGNoaXAgZm9yIHN5c2ZzIGNvbnRyb2wuCisJCVZhbHVlIGlzIGJldHdlZW4gMCBhbmQgL3N5cy9jbGFzcy9wd20vcHdtY2hpcE4vbnB3bSAtIDEuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3B3bS9wd21jaGlwTi91bmV4cG9ydAorRGF0ZToJCU1heSAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjExCitDb250YWN0OglIIEhhcnRsZXkgU3dlZXRlbiA8aHN3ZWV0ZW5AdmlzaW9uZW5ncmF2ZXJzLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlVbmV4cG9ydHMgYSBQV00gY2hhbm5lbC4KKworV2hhdDoJCS9zeXMvY2xhc3MvcHdtL3B3bWNoaXBOL3B3bVgKK0RhdGU6CQlNYXkgMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMQorQ29udGFjdDoJSCBIYXJ0bGV5IFN3ZWV0ZW4gPGhzd2VldGVuQHZpc2lvbmVuZ3JhdmVycy5jb20+CitEZXNjcmlwdGlvbjoKKwkJQSAvc3lzL2NsYXNzL3B3bS9wd21jaGlwTi9wd21YIGRpcmVjdG9yeSBpcyBjcmVhdGVkIGZvcgorCQllYWNoIGV4cG9ydGVkIFBXTSBjaGFubmVsIHdoZXJlIFggaXMgdGhlIGV4cG9ydGVkIFBXTQorCQljaGFubmVsIG51bWJlci4KKworV2hhdDoJCS9zeXMvY2xhc3MvcHdtL3B3bWNoaXBOL3B3bVgvcGVyaW9kCitEYXRlOgkJTWF5IDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTEKK0NvbnRhY3Q6CUggSGFydGxleSBTd2VldGVuIDxoc3dlZXRlbkB2aXNpb25lbmdyYXZlcnMuY29tPgorRGVzY3JpcHRpb246CisJCVNldHMgdGhlIFBXTSBzaWduYWwgcGVyaW9kIGluIG5hbm9zZWNvbmRzLgorCitXaGF0OgkJL3N5cy9jbGFzcy9wd20vcHdtY2hpcE4vcHdtWC9kdXR5X2N5Y2xlCitEYXRlOgkJTWF5IDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTEKK0NvbnRhY3Q6CUggSGFydGxleSBTd2VldGVuIDxoc3dlZXRlbkB2aXNpb25lbmdyYXZlcnMuY29tPgorRGVzY3JpcHRpb246CisJCVNldHMgdGhlIFBXTSBzaWduYWwgZHV0eSBjeWNsZSBpbiBuYW5vc2Vjb25kcy4KKworV2hhdDoJCS9zeXMvY2xhc3MvcHdtL3B3bWNoaXBOL3B3bVgvcG9sYXJpdHkKK0RhdGU6CQlNYXkgMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMQorQ29udGFjdDoJSCBIYXJ0bGV5IFN3ZWV0ZW4gPGhzd2VldGVuQHZpc2lvbmVuZ3JhdmVycy5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2V0cyB0aGUgb3V0cHV0IHBvbGFyaXR5IG9mIHRoZSBQV00gc2lnbmFsIHRvICJub3JtYWwiIG9yCisJCSJpbnZlcnNlZCIuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3B3bS9wd21jaGlwTi9wd21YL2VuYWJsZQorRGF0ZToJCU1heSAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjExCitDb250YWN0OglIIEhhcnRsZXkgU3dlZXRlbiA8aHN3ZWV0ZW5AdmlzaW9uZW5ncmF2ZXJzLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlFbmFibGUvZGlzYWJsZSB0aGUgUFdNIHNpZ25hbC4KKwkJMCBpcyBkaXNhYmxlZAorCQkxIGlzIGVuYWJsZWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtcmMgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2NTY3NGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXJjCkBAIC0wLDAgKzEsMTExIEBACitXaGF0OgkJL3N5cy9jbGFzcy9yYy8KK0RhdGU6CQlBcHIgMjAxMAorS2VybmVsVmVyc2lvbjoJMi42LjM1CitDb250YWN0OglNYXVybyBDYXJ2YWxobyBDaGVoYWIgPG0uY2hlaGFiQHNhbXN1bmcuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSByYy8gY2xhc3Mgc3ViLWRpcmVjdG9yeSBiZWxvbmdzIHRvIHRoZSBSZW1vdGUgQ29udHJvbGxlcgorCQljb3JlIGFuZCBwcm92aWRlcyBhIHN5c2ZzIGludGVyZmFjZSBmb3IgY29uZmlndXJpbmcgaW5mcmFyZWQKKwkJcmVtb3RlIGNvbnRyb2xsZXIgcmVjZWl2ZXJzLgorCitXaGF0OgkJL3N5cy9jbGFzcy9yYy9yY04vCitEYXRlOgkJQXByIDIwMTAKK0tlcm5lbFZlcnNpb246CTIuNi4zNQorQ29udGFjdDoJTWF1cm8gQ2FydmFsaG8gQ2hlaGFiIDxtLmNoZWhhYkBzYW1zdW5nLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlBIC9zeXMvY2xhc3MvcmMvcmNOIGRpcmVjdG9yeSBpcyBjcmVhdGVkIGZvciBlYWNoIHJlbW90ZQorCQljb250cm9sIHJlY2VpdmVyIGRldmljZSB3aGVyZSBOIGlzIHRoZSBudW1iZXIgb2YgdGhlIHJlY2VpdmVyLgorCitXaGF0OgkJL3N5cy9jbGFzcy9yYy9yY04vcHJvdG9jb2xzCitEYXRlOgkJSnVuIDIwMTAKK0tlcm5lbFZlcnNpb246CTIuNi4zNgorQ29udGFjdDoJTWF1cm8gQ2FydmFsaG8gQ2hlaGFiIDxtLmNoZWhhYkBzYW1zdW5nLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlSZWFkaW5nIHRoaXMgZmlsZSByZXR1cm5zIGEgbGlzdCBvZiBhdmFpbGFibGUgcHJvdG9jb2xzLAorCQlzb21ldGhpbmcgbGlrZToKKwkJICAgICJyYzUgW3JjNl0gbmVjIGp2YyBbc29ueV0iCisJCUVuYWJsZWQgcHJvdG9jb2xzIGFyZSBzaG93biBpbiBbXSBicmFja2V0cy4KKwkJV3JpdGluZyAiK3Byb3RvIiB3aWxsIGFkZCBhIHByb3RvY29sIHRvIHRoZSBsaXN0IG9mIGVuYWJsZWQKKwkJcHJvdG9jb2xzLgorCQlXcml0aW5nICItcHJvdG8iIHdpbGwgcmVtb3ZlIGEgcHJvdG9jb2wgZnJvbSB0aGUgbGlzdCBvZiBlbmFibGVkCisJCXByb3RvY29scy4KKwkJV3JpdGluZyAicHJvdG8iIHdpbGwgZW5hYmxlIG9ubHkgInByb3RvIi4KKwkJV3JpdGluZyAibm9uZSIgd2lsbCBkaXNhYmxlIGFsbCBwcm90b2NvbHMuCisJCVdyaXRlIGZhaWxzIHdpdGggRUlOVkFMIGlmIGFuIGludmFsaWQgcHJvdG9jb2wgY29tYmluYXRpb24gb3IKKwkJdW5rbm93biBwcm90b2NvbCBuYW1lIGlzIHVzZWQuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3JjL3JjTi9maWx0ZXIKK0RhdGU6CQlKYW4gMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xNQorQ29udGFjdDoJTWF1cm8gQ2FydmFsaG8gQ2hlaGFiIDxtLmNoZWhhYkBzYW1zdW5nLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlTZXRzIHRoZSBzY2FuY29kZSBmaWx0ZXIgZXhwZWN0ZWQgdmFsdWUuCisJCVVzZSBpbiBjb21iaW5hdGlvbiB3aXRoIC9zeXMvY2xhc3MvcmMvcmNOL2ZpbHRlcl9tYXNrIHRvIHNldCB0aGUKKwkJZXhwZWN0ZWQgdmFsdWUgb2YgdGhlIGJpdHMgc2V0IGluIHRoZSBmaWx0ZXIgbWFzay4KKwkJSWYgdGhlIGhhcmR3YXJlIHN1cHBvcnRzIGl0IHRoZW4gc2NhbmNvZGVzIHdoaWNoIGRvIG5vdCBtYXRjaAorCQl0aGUgZmlsdGVyIHdpbGwgYmUgaWdub3JlZC4gT3RoZXJ3aXNlIHRoZSB3cml0ZSB3aWxsIGZhaWwgd2l0aAorCQlhbiBlcnJvci4KKwkJVGhpcyB2YWx1ZSBtYXkgYmUgcmVzZXQgdG8gMCBpZiB0aGUgY3VycmVudCBwcm90b2NvbCBpcyBhbHRlcmVkLgorCitXaGF0OgkJL3N5cy9jbGFzcy9yYy9yY04vZmlsdGVyX21hc2sKK0RhdGU6CQlKYW4gMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xNQorQ29udGFjdDoJTWF1cm8gQ2FydmFsaG8gQ2hlaGFiIDxtLmNoZWhhYkBzYW1zdW5nLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlTZXRzIHRoZSBzY2FuY29kZSBmaWx0ZXIgbWFzayBvZiBiaXRzIHRvIGNvbXBhcmUuCisJCVVzZSBpbiBjb21iaW5hdGlvbiB3aXRoIC9zeXMvY2xhc3MvcmMvcmNOL2ZpbHRlciB0byBzZXQgdGhlIGJpdHMKKwkJb2YgdGhlIHNjYW5jb2RlIHdoaWNoIHNob3VsZCBiZSBjb21wYXJlZCBhZ2FpbnN0IHRoZSBleHBlY3RlZAorCQl2YWx1ZS4gQSB2YWx1ZSBvZiAwIGRpc2FibGVzIHRoZSBmaWx0ZXIgdG8gYWxsb3cgYWxsIHZhbGlkCisJCXNjYW5jb2RlcyB0byBiZSBwcm9jZXNzZWQuCisJCUlmIHRoZSBoYXJkd2FyZSBzdXBwb3J0cyBpdCB0aGVuIHNjYW5jb2RlcyB3aGljaCBkbyBub3QgbWF0Y2gKKwkJdGhlIGZpbHRlciB3aWxsIGJlIGlnbm9yZWQuIE90aGVyd2lzZSB0aGUgd3JpdGUgd2lsbCBmYWlsIHdpdGgKKwkJYW4gZXJyb3IuCisJCVRoaXMgdmFsdWUgbWF5IGJlIHJlc2V0IHRvIDAgaWYgdGhlIGN1cnJlbnQgcHJvdG9jb2wgaXMgYWx0ZXJlZC4KKworV2hhdDoJCS9zeXMvY2xhc3MvcmMvcmNOL3dha2V1cF9wcm90b2NvbHMKK0RhdGU6CQlGZWIgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xNQorQ29udGFjdDoJTWF1cm8gQ2FydmFsaG8gQ2hlaGFiIDxtLmNoZWhhYkBzYW1zdW5nLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlSZWFkaW5nIHRoaXMgZmlsZSByZXR1cm5zIGEgbGlzdCBvZiBhdmFpbGFibGUgcHJvdG9jb2xzIHRvIHVzZQorCQlmb3IgdGhlIHdha2V1cCBmaWx0ZXIsIHNvbWV0aGluZyBsaWtlOgorCQkgICAgInJjNSByYzYgbmVjIGp2YyBbc29ueV0iCisJCVRoZSBlbmFibGVkIHdha2V1cCBwcm90b2NvbCBpcyBzaG93biBpbiBbXSBicmFja2V0cy4KKwkJV3JpdGluZyAiK3Byb3RvIiB3aWxsIGFkZCBhIHByb3RvY29sIHRvIHRoZSBsaXN0IG9mIGVuYWJsZWQKKwkJd2FrZXVwIHByb3RvY29scy4KKwkJV3JpdGluZyAiLXByb3RvIiB3aWxsIHJlbW92ZSBhIHByb3RvY29sIGZyb20gdGhlIGxpc3Qgb2YgZW5hYmxlZAorCQl3YWtldXAgcHJvdG9jb2xzLgorCQlXcml0aW5nICJwcm90byIgd2lsbCB1c2UgInByb3RvIiBmb3Igd2FrZXVwIGV2ZW50cy4KKwkJV3JpdGluZyAibm9uZSIgd2lsbCBkaXNhYmxlIHdha2V1cC4KKwkJV3JpdGUgZmFpbHMgd2l0aCBFSU5WQUwgaWYgYW4gaW52YWxpZCBwcm90b2NvbCBjb21iaW5hdGlvbiBvcgorCQl1bmtub3duIHByb3RvY29sIG5hbWUgaXMgdXNlZCwgb3IgaWYgd2FrZXVwIGlzIG5vdCBzdXBwb3J0ZWQgYnkKKwkJdGhlIGhhcmR3YXJlLgorCitXaGF0OgkJL3N5cy9jbGFzcy9yYy9yY04vd2FrZXVwX2ZpbHRlcgorRGF0ZToJCUphbiAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE1CitDb250YWN0OglNYXVybyBDYXJ2YWxobyBDaGVoYWIgPG0uY2hlaGFiQHNhbXN1bmcuY29tPgorRGVzY3JpcHRpb246CisJCVNldHMgdGhlIHNjYW5jb2RlIHdha2V1cCBmaWx0ZXIgZXhwZWN0ZWQgdmFsdWUuCisJCVVzZSBpbiBjb21iaW5hdGlvbiB3aXRoIC9zeXMvY2xhc3MvcmMvcmNOL3dha2V1cF9maWx0ZXJfbWFzayB0bworCQlzZXQgdGhlIGV4cGVjdGVkIHZhbHVlIG9mIHRoZSBiaXRzIHNldCBpbiB0aGUgd2FrZXVwIGZpbHRlciBtYXNrCisJCXRvIHRyaWdnZXIgYSBzeXN0ZW0gd2FrZSBldmVudC4KKwkJSWYgdGhlIGhhcmR3YXJlIHN1cHBvcnRzIGl0IGFuZCB3YWtldXBfZmlsdGVyX21hc2sgaXMgbm90IDAgdGhlbgorCQlzY2FuY29kZXMgd2hpY2ggbWF0Y2ggdGhlIGZpbHRlciB3aWxsIHdha2UgdGhlIHN5c3RlbSBmcm9tIGUuZy4KKwkJc3VzcGVuZCB0byBSQU0gb3IgcG93ZXIgb2ZmLgorCQlPdGhlcndpc2UgdGhlIHdyaXRlIHdpbGwgZmFpbCB3aXRoIGFuIGVycm9yLgorCQlUaGlzIHZhbHVlIG1heSBiZSByZXNldCB0byAwIGlmIHRoZSB3YWtldXAgcHJvdG9jb2wgaXMgYWx0ZXJlZC4KKworV2hhdDoJCS9zeXMvY2xhc3MvcmMvcmNOL3dha2V1cF9maWx0ZXJfbWFzaworRGF0ZToJCUphbiAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE1CitDb250YWN0OglNYXVybyBDYXJ2YWxobyBDaGVoYWIgPG0uY2hlaGFiQHNhbXN1bmcuY29tPgorRGVzY3JpcHRpb246CisJCVNldHMgdGhlIHNjYW5jb2RlIHdha2V1cCBmaWx0ZXIgbWFzayBvZiBiaXRzIHRvIGNvbXBhcmUuCisJCVVzZSBpbiBjb21iaW5hdGlvbiB3aXRoIC9zeXMvY2xhc3MvcmMvcmNOL3dha2V1cF9maWx0ZXIgdG8gc2V0CisJCXRoZSBiaXRzIG9mIHRoZSBzY2FuY29kZSB3aGljaCBzaG91bGQgYmUgY29tcGFyZWQgYWdhaW5zdCB0aGUKKwkJZXhwZWN0ZWQgdmFsdWUgdG8gdHJpZ2dlciBhIHN5c3RlbSB3YWtlIGV2ZW50LgorCQlJZiB0aGUgaGFyZHdhcmUgc3VwcG9ydHMgaXQgYW5kIHdha2V1cF9maWx0ZXJfbWFzayBpcyBub3QgMCB0aGVuCisJCXNjYW5jb2RlcyB3aGljaCBtYXRjaCB0aGUgZmlsdGVyIHdpbGwgd2FrZSB0aGUgc3lzdGVtIGZyb20gZS5nLgorCQlzdXNwZW5kIHRvIFJBTSBvciBwb3dlciBvZmYuCisJCU90aGVyd2lzZSB0aGUgd3JpdGUgd2lsbCBmYWlsIHdpdGggYW4gZXJyb3IuCisJCVRoaXMgdmFsdWUgbWF5IGJlIHJlc2V0IHRvIDAgaWYgdGhlIHdha2V1cCBwcm90b2NvbCBpcyBhbHRlcmVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1yZWd1bGF0b3IgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXJlZ3VsYXRvcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzU3OGJjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1yZWd1bGF0b3IKQEAgLTAsMCArMSwzNzIgQEAKK1doYXQ6CQkvc3lzL2NsYXNzL3JlZ3VsYXRvci8uLi4vc3RhdGUKK0RhdGU6CQlBcHJpbCAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CUxpYW0gR2lyZHdvb2QgPGxyZ0BzbGltbG9naWMuY28udWs+CitEZXNjcmlwdGlvbjoKKwkJU29tZSByZWd1bGF0b3IgZGlyZWN0b3JpZXMgd2lsbCBjb250YWluIGEgZmllbGQgY2FsbGVkCisJCXN0YXRlLiBUaGlzIHJlcG9ydHMgdGhlIHJlZ3VsYXRvciBlbmFibGUgY29udHJvbCwgZm9yCisJCXJlZ3VsYXRvcnMgd2hpY2ggY2FuIHJlcG9ydCB0aGF0IGlucHV0IHZhbHVlLgorCisJCVRoaXMgd2lsbCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBzdHJpbmdzOgorCisJCSdlbmFibGVkJworCQknZGlzYWJsZWQnCisJCSd1bmtub3duJworCisJCSdlbmFibGVkJyBtZWFucyB0aGUgcmVndWxhdG9yIG91dHB1dCBpcyBPTiBhbmQgaXMgc3VwcGx5aW5nCisJCXBvd2VyIHRvIHRoZSBzeXN0ZW0gKGFzc3VtaW5nIG5vIGVycm9yIHByZXZlbnRzIGl0KS4KKworCQknZGlzYWJsZWQnIG1lYW5zIHRoZSByZWd1bGF0b3Igb3V0cHV0IGlzIE9GRiBhbmQgaXMgbm90CisJCXN1cHBseWluZyBwb3dlciB0byB0aGUgc3lzdGVtICh1bmxlc3Mgc29tZSBub24tTGludXgKKwkJY29udHJvbCBoYXMgZW5hYmxlZCBpdCkuCisKKwkJJ3Vua25vd24nIG1lYW5zIHNvZnR3YXJlIGNhbm5vdCBkZXRlcm1pbmUgdGhlIHN0YXRlLCBvcgorCQl0aGUgcmVwb3J0ZWQgc3RhdGUgaXMgaW52YWxpZC4KKworCQlOT1RFOiB0aGlzIGZpZWxkIGNhbiBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggbWljcm92b2x0cworCQlvciBtaWNyb2FtcHMgdG8gZGV0ZXJtaW5lIGNvbmZpZ3VyZWQgcmVndWxhdG9yIG91dHB1dCBsZXZlbHMuCisKKworV2hhdDoJCS9zeXMvY2xhc3MvcmVndWxhdG9yLy4uLi9zdGF0dXMKK0Rlc2NyaXB0aW9uOgorCQlTb21lIHJlZ3VsYXRvciBkaXJlY3RvcmllcyB3aWxsIGNvbnRhaW4gYSBmaWVsZCBjYWxsZWQKKwkJInN0YXR1cyIuIFRoaXMgcmVwb3J0cyB0aGUgY3VycmVudCByZWd1bGF0b3Igc3RhdHVzLCBmb3IKKwkJcmVndWxhdG9ycyB3aGljaCBjYW4gcmVwb3J0IHRoYXQgb3V0cHV0IHZhbHVlLgorCisJCVRoaXMgd2lsbCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBzdHJpbmdzOgorCisJCQlvZmYKKwkJCW9uCisJCQllcnJvcgorCQkJZmFzdAorCQkJbm9ybWFsCisJCQlpZGxlCisJCQlzdGFuZGJ5CisKKwkJIm9mZiIgbWVhbnMgdGhlIHJlZ3VsYXRvciBpcyBub3Qgc3VwcGx5aW5nIHBvd2VyIHRvIHRoZQorCQlzeXN0ZW0uCisKKwkJIm9uIiBtZWFucyB0aGUgcmVndWxhdG9yIGlzIHN1cHBseWluZyBwb3dlciB0byB0aGUgc3lzdGVtLAorCQlhbmQgdGhlIHJlZ3VsYXRvciBjYW4ndCByZXBvcnQgYSBkZXRhaWxlZCBvcGVyYXRpb24gbW9kZS4KKworCQkiZXJyb3IiIGluZGljYXRlcyBhbiBvdXQtb2YtcmVndWxhdGlvbiBzdGF0dXMgc3VjaCBhcyBiZWluZworCQlkaXNhYmxlZCBkdWUgdG8gdGhlcm1hbCBzaHV0ZG93biwgb3Igdm9sdGFnZSBiZWluZyB1bnN0YWJsZQorCQliZWNhdXNlIG9mIHByb2JsZW1zIHdpdGggdGhlIGlucHV0IHBvd2VyIHN1cHBseS4KKworCQkiZmFzdCIsICJub3JtYWwiLCAiaWRsZSIsIGFuZCAic3RhbmRieSIgYXJlIGFsbCBkZXRhaWxlZAorCQlyZWd1bGF0b3Igb3BlcmF0aW9uIG1vZGVzIChkZXNjcmliZWQgZWxzZXdoZXJlKS4gIFRoZXkKKwkJaW1wbHkgIm9uIiwgYnV0IHByb3ZpZGUgbW9yZSBkZXRhaWwuCisKKwkJTm90ZSB0aGF0IHJlZ3VsYXRvciBzdGF0dXMgaXMgYSBmdW5jdGlvbiBvZiBtYW55IGlucHV0cywKKwkJbm90IGxpbWl0ZWQgdG8gY29udHJvbCBpbnB1dHMgZnJvbSBMaW51eC4gIEZvciBleGFtcGxlLAorCQl0aGUgYWN0dWFsIGxvYWQgcHJlc2VudGVkIG1heSB0cmlnZ2VyICJlcnJvciIgc3RhdHVzOyBvcgorCQlhIHJlZ3VsYXRvciBtYXkgYmUgZW5hYmxlZCBieSBhbm90aGVyIHVzZXIsIGV2ZW4gdGhvdWdoCisJCUxpbnV4IGRpZCBub3QgZW5hYmxlIGl0LgorCisKK1doYXQ6CQkvc3lzL2NsYXNzL3JlZ3VsYXRvci8uLi4vdHlwZQorRGF0ZToJCUFwcmlsIDIwMDgKK0tlcm5lbFZlcnNpb246CTIuNi4yNgorQ29udGFjdDoJTGlhbSBHaXJkd29vZCA8bHJnQHNsaW1sb2dpYy5jby51az4KK0Rlc2NyaXB0aW9uOgorCQlFYWNoIHJlZ3VsYXRvciBkaXJlY3Rvcnkgd2lsbCBjb250YWluIGEgZmllbGQgY2FsbGVkCisJCXR5cGUuIFRoaXMgaG9sZHMgdGhlIHJlZ3VsYXRvciB0eXBlLgorCisJCVRoaXMgd2lsbCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBzdHJpbmdzOgorCisJCSd2b2x0YWdlJworCQknY3VycmVudCcKKwkJJ3Vua25vd24nCisKKwkJJ3ZvbHRhZ2UnIG1lYW5zIHRoZSByZWd1bGF0b3Igb3V0cHV0IHZvbHRhZ2UgY2FuIGJlIGNvbnRyb2xsZWQKKwkJYnkgc29mdHdhcmUuCisKKwkJJ2N1cnJlbnQnIG1lYW5zIHRoZSByZWd1bGF0b3Igb3V0cHV0IGN1cnJlbnQgbGltaXQgY2FuIGJlCisJCWNvbnRyb2xsZWQgYnkgc29mdHdhcmUuCisKKwkJJ3Vua25vd24nIG1lYW5zIHNvZnR3YXJlIGNhbm5vdCBjb250cm9sIGVpdGhlciB2b2x0YWdlIG9yCisJCWN1cnJlbnQgbGltaXQuCisKKworV2hhdDoJCS9zeXMvY2xhc3MvcmVndWxhdG9yLy4uLi9taWNyb3ZvbHRzCitEYXRlOgkJQXByaWwgMjAwOAorS2VybmVsVmVyc2lvbjoJMi42LjI2CitDb250YWN0OglMaWFtIEdpcmR3b29kIDxscmdAc2xpbWxvZ2ljLmNvLnVrPgorRGVzY3JpcHRpb246CisJCVNvbWUgcmVndWxhdG9yIGRpcmVjdG9yaWVzIHdpbGwgY29udGFpbiBhIGZpZWxkIGNhbGxlZAorCQltaWNyb3ZvbHRzLiBUaGlzIGhvbGRzIHRoZSByZWd1bGF0b3Igb3V0cHV0IHZvbHRhZ2Ugc2V0dGluZworCQltZWFzdXJlZCBpbiBtaWNyb3ZvbHRzIChpLmUuIEUtNiBWb2x0cyksIGZvciByZWd1bGF0b3JzCisJCXdoaWNoIGNhbiByZXBvcnQgdGhlIGNvbnRyb2wgaW5wdXQgZm9yIHZvbHRhZ2UuCisKKwkJTk9URTogVGhpcyB2YWx1ZSBzaG91bGQgbm90IGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSByZWd1bGF0b3IKKwkJb3V0cHV0IHZvbHRhZ2UgbGV2ZWwgYXMgdGhpcyB2YWx1ZSBpcyB0aGUgc2FtZSByZWdhcmRsZXNzIG9mCisJCXdoZXRoZXIgdGhlIHJlZ3VsYXRvciBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgorCisKK1doYXQ6CQkvc3lzL2NsYXNzL3JlZ3VsYXRvci8uLi4vbWljcm9hbXBzCitEYXRlOgkJQXByaWwgMjAwOAorS2VybmVsVmVyc2lvbjoJMi42LjI2CitDb250YWN0OglMaWFtIEdpcmR3b29kIDxscmdAc2xpbWxvZ2ljLmNvLnVrPgorRGVzY3JpcHRpb246CisJCVNvbWUgcmVndWxhdG9yIGRpcmVjdG9yaWVzIHdpbGwgY29udGFpbiBhIGZpZWxkIGNhbGxlZAorCQltaWNyb2FtcHMuIFRoaXMgaG9sZHMgdGhlIHJlZ3VsYXRvciBvdXRwdXQgY3VycmVudCBsaW1pdAorCQlzZXR0aW5nIG1lYXN1cmVkIGluIG1pY3JvYW1wcyAoaS5lLiBFLTYgQW1wcyksIGZvciByZWd1bGF0b3JzCisJCXdoaWNoIGNhbiByZXBvcnQgdGhlIGNvbnRyb2wgaW5wdXQgZm9yIGEgY3VycmVudCBsaW1pdC4KKworCQlOT1RFOiBUaGlzIHZhbHVlIHNob3VsZCBub3QgYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHJlZ3VsYXRvcgorCQlvdXRwdXQgY3VycmVudCBsZXZlbCBhcyB0aGlzIHZhbHVlIGlzIHRoZSBzYW1lIHJlZ2FyZGxlc3Mgb2YKKwkJd2hldGhlciB0aGUgcmVndWxhdG9yIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCisKKworV2hhdDoJCS9zeXMvY2xhc3MvcmVndWxhdG9yLy4uLi9vcG1vZGUKK0RhdGU6CQlBcHJpbCAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CUxpYW0gR2lyZHdvb2QgPGxyZ0BzbGltbG9naWMuY28udWs+CitEZXNjcmlwdGlvbjoKKwkJU29tZSByZWd1bGF0b3IgZGlyZWN0b3JpZXMgd2lsbCBjb250YWluIGEgZmllbGQgY2FsbGVkCisJCW9wbW9kZS4gVGhpcyBob2xkcyB0aGUgY3VycmVudCByZWd1bGF0b3Igb3BlcmF0aW5nIG1vZGUsCisJCWZvciByZWd1bGF0b3JzIHdoaWNoIGNhbiByZXBvcnQgdGhhdCBjb250cm9sIGlucHV0IHZhbHVlLgorCisJCVRoZSBvcG1vZGUgdmFsdWUgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHN0cmluZ3M6CisKKwkJJ2Zhc3QnCisJCSdub3JtYWwnCisJCSdpZGxlJworCQknc3RhbmRieScKKwkJJ3Vua25vd24nCisKKwkJVGhlIG1vZGVzIGFyZSBkZXNjcmliZWQgaW4gaW5jbHVkZS9saW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaAorCisJCU5PVEU6IFRoaXMgdmFsdWUgc2hvdWxkIG5vdCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgcmVndWxhdG9yCisJCW91dHB1dCBvcGVyYXRpbmcgbW9kZSBhcyB0aGlzIHZhbHVlIGlzIHRoZSBzYW1lIHJlZ2FyZGxlc3Mgb2YKKwkJd2hldGhlciB0aGUgcmVndWxhdG9yIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuICBBICJzdGF0dXMiCisJCWF0dHJpYnV0ZSBtYXkgYmUgYXZhaWxhYmxlIHRvIGRldGVybWluZSB0aGUgYWN0dWFsIG1vZGUuCisKKworV2hhdDoJCS9zeXMvY2xhc3MvcmVndWxhdG9yLy4uLi9taW5fbWljcm92b2x0cworRGF0ZToJCUFwcmlsIDIwMDgKK0tlcm5lbFZlcnNpb246CTIuNi4yNgorQ29udGFjdDoJTGlhbSBHaXJkd29vZCA8bHJnQHNsaW1sb2dpYy5jby51az4KK0Rlc2NyaXB0aW9uOgorCQlTb21lIHJlZ3VsYXRvciBkaXJlY3RvcmllcyB3aWxsIGNvbnRhaW4gYSBmaWVsZCBjYWxsZWQKKwkJbWluX21pY3Jvdm9sdHMuIFRoaXMgaG9sZHMgdGhlIG1pbmltdW0gc2FmZSB3b3JraW5nIHJlZ3VsYXRvcgorCQlvdXRwdXQgdm9sdGFnZSBzZXR0aW5nIGZvciB0aGlzIGRvbWFpbiBtZWFzdXJlZCBpbiBtaWNyb3ZvbHRzLAorCQlmb3IgcmVndWxhdG9ycyB3aGljaCBzdXBwb3J0IHZvbHRhZ2UgY29uc3RyYWludHMuCisKKwkJTk9URTogdGhpcyB3aWxsIHJldHVybiB0aGUgc3RyaW5nICdjb25zdHJhaW50IG5vdCBkZWZpbmVkJyBpZgorCQl0aGUgcG93ZXIgZG9tYWluIGhhcyBubyBtaW4gbWljcm92b2x0cyBjb25zdHJhaW50IGRlZmluZWQgYnkKKwkJcGxhdGZvcm0gY29kZS4KKworCitXaGF0OgkJL3N5cy9jbGFzcy9yZWd1bGF0b3IvLi4uL21heF9taWNyb3ZvbHRzCitEYXRlOgkJQXByaWwgMjAwOAorS2VybmVsVmVyc2lvbjoJMi42LjI2CitDb250YWN0OglMaWFtIEdpcmR3b29kIDxscmdAc2xpbWxvZ2ljLmNvLnVrPgorRGVzY3JpcHRpb246CisJCVNvbWUgcmVndWxhdG9yIGRpcmVjdG9yaWVzIHdpbGwgY29udGFpbiBhIGZpZWxkIGNhbGxlZAorCQltYXhfbWljcm92b2x0cy4gVGhpcyBob2xkcyB0aGUgbWF4aW11bSBzYWZlIHdvcmtpbmcgcmVndWxhdG9yCisJCW91dHB1dCB2b2x0YWdlIHNldHRpbmcgZm9yIHRoaXMgZG9tYWluIG1lYXN1cmVkIGluIG1pY3Jvdm9sdHMsCisJCWZvciByZWd1bGF0b3JzIHdoaWNoIHN1cHBvcnQgdm9sdGFnZSBjb25zdHJhaW50cy4KKworCQlOT1RFOiB0aGlzIHdpbGwgcmV0dXJuIHRoZSBzdHJpbmcgJ2NvbnN0cmFpbnQgbm90IGRlZmluZWQnIGlmCisJCXRoZSBwb3dlciBkb21haW4gaGFzIG5vIG1heCBtaWNyb3ZvbHRzIGNvbnN0cmFpbnQgZGVmaW5lZCBieQorCQlwbGF0Zm9ybSBjb2RlLgorCisKK1doYXQ6CQkvc3lzL2NsYXNzL3JlZ3VsYXRvci8uLi4vbWluX21pY3JvYW1wcworRGF0ZToJCUFwcmlsIDIwMDgKK0tlcm5lbFZlcnNpb246CTIuNi4yNgorQ29udGFjdDoJTGlhbSBHaXJkd29vZCA8bHJnQHNsaW1sb2dpYy5jby51az4KK0Rlc2NyaXB0aW9uOgorCQlTb21lIHJlZ3VsYXRvciBkaXJlY3RvcmllcyB3aWxsIGNvbnRhaW4gYSBmaWVsZCBjYWxsZWQKKwkJbWluX21pY3JvYW1wcy4gVGhpcyBob2xkcyB0aGUgbWluaW11bSBzYWZlIHdvcmtpbmcgcmVndWxhdG9yCisJCW91dHB1dCBjdXJyZW50IGxpbWl0IHNldHRpbmcgZm9yIHRoaXMgZG9tYWluIG1lYXN1cmVkIGluCisJCW1pY3JvYW1wcywgZm9yIHJlZ3VsYXRvcnMgd2hpY2ggc3VwcG9ydCBjdXJyZW50IGNvbnN0cmFpbnRzLgorCisJCU5PVEU6IHRoaXMgd2lsbCByZXR1cm4gdGhlIHN0cmluZyAnY29uc3RyYWludCBub3QgZGVmaW5lZCcgaWYKKwkJdGhlIHBvd2VyIGRvbWFpbiBoYXMgbm8gbWluIG1pY3JvYW1wcyBjb25zdHJhaW50IGRlZmluZWQgYnkKKwkJcGxhdGZvcm0gY29kZS4KKworCitXaGF0OgkJL3N5cy9jbGFzcy9yZWd1bGF0b3IvLi4uL21heF9taWNyb2FtcHMKK0RhdGU6CQlBcHJpbCAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CUxpYW0gR2lyZHdvb2QgPGxyZ0BzbGltbG9naWMuY28udWs+CitEZXNjcmlwdGlvbjoKKwkJU29tZSByZWd1bGF0b3IgZGlyZWN0b3JpZXMgd2lsbCBjb250YWluIGEgZmllbGQgY2FsbGVkCisJCW1heF9taWNyb2FtcHMuIFRoaXMgaG9sZHMgdGhlIG1heGltdW0gc2FmZSB3b3JraW5nIHJlZ3VsYXRvcgorCQlvdXRwdXQgY3VycmVudCBsaW1pdCBzZXR0aW5nIGZvciB0aGlzIGRvbWFpbiBtZWFzdXJlZCBpbgorCQltaWNyb2FtcHMsIGZvciByZWd1bGF0b3JzIHdoaWNoIHN1cHBvcnQgY3VycmVudCBjb25zdHJhaW50cy4KKworCQlOT1RFOiB0aGlzIHdpbGwgcmV0dXJuIHRoZSBzdHJpbmcgJ2NvbnN0cmFpbnQgbm90IGRlZmluZWQnIGlmCisJCXRoZSBwb3dlciBkb21haW4gaGFzIG5vIG1heCBtaWNyb2FtcHMgY29uc3RyYWludCBkZWZpbmVkIGJ5CisJCXBsYXRmb3JtIGNvZGUuCisKKworV2hhdDoJCS9zeXMvY2xhc3MvcmVndWxhdG9yLy4uLi9uYW1lCitEYXRlOgkJT2N0b2JlciAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjgKK0NvbnRhY3Q6CUxpYW0gR2lyZHdvb2QgPGxyZ0BzbGltbG9naWMuY28udWs+CitEZXNjcmlwdGlvbjoKKwkJRWFjaCByZWd1bGF0b3IgZGlyZWN0b3J5IHdpbGwgY29udGFpbiBhIGZpZWxkIGNhbGxlZAorCQluYW1lLiBUaGlzIGhvbGRzIGEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSByZWd1bGF0b3IgZm9yCisJCWRpc3BsYXkgcHVycG9zZXMuCisKKwkJTk9URTogdGhpcyB3aWxsIGJlIGVtcHR5IGlmIG5vIHN1aXRhYmxlIG5hbWUgaXMgcHJvdmlkZWQKKwkJYnkgcGxhdGZvcm0gb3IgcmVndWxhdG9yIGRyaXZlcnMuCisKKworV2hhdDoJCS9zeXMvY2xhc3MvcmVndWxhdG9yLy4uLi9udW1fdXNlcnMKK0RhdGU6CQlBcHJpbCAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CUxpYW0gR2lyZHdvb2QgPGxyZ0BzbGltbG9naWMuY28udWs+CitEZXNjcmlwdGlvbjoKKwkJRWFjaCByZWd1bGF0b3IgZGlyZWN0b3J5IHdpbGwgY29udGFpbiBhIGZpZWxkIGNhbGxlZAorCQludW1fdXNlcnMuIFRoaXMgaG9sZHMgdGhlIG51bWJlciBvZiBjb25zdW1lciBkZXZpY2VzIHRoYXQKKwkJaGF2ZSBjYWxsZWQgcmVndWxhdG9yX2VuYWJsZSgpIG9uIHRoaXMgcmVndWxhdG9yLgorCisKK1doYXQ6CQkvc3lzL2NsYXNzL3JlZ3VsYXRvci8uLi4vcmVxdWVzdGVkX21pY3JvYW1wcworRGF0ZToJCUFwcmlsIDIwMDgKK0tlcm5lbFZlcnNpb246CTIuNi4yNgorQ29udGFjdDoJTGlhbSBHaXJkd29vZCA8bHJnQHNsaW1sb2dpYy5jby51az4KK0Rlc2NyaXB0aW9uOgorCQlTb21lIHJlZ3VsYXRvciBkaXJlY3RvcmllcyB3aWxsIGNvbnRhaW4gYSBmaWVsZCBjYWxsZWQKKwkJcmVxdWVzdGVkX21pY3JvYW1wcy4gVGhpcyBob2xkcyB0aGUgdG90YWwgcmVxdWVzdGVkIGxvYWQKKwkJY3VycmVudCBpbiBtaWNyb2FtcHMgZm9yIHRoaXMgcmVndWxhdG9yIGZyb20gYWxsIGl0cyBjb25zdW1lcgorCQlkZXZpY2VzLgorCisKK1doYXQ6CQkvc3lzL2NsYXNzL3JlZ3VsYXRvci8uLi4vcGFyZW50CitEYXRlOgkJQXByaWwgMjAwOAorS2VybmVsVmVyc2lvbjoJMi42LjI2CitDb250YWN0OglMaWFtIEdpcmR3b29kIDxscmdAc2xpbWxvZ2ljLmNvLnVrPgorRGVzY3JpcHRpb246CisJCVNvbWUgcmVndWxhdG9yIGRpcmVjdG9yaWVzIHdpbGwgY29udGFpbiBhIGxpbmsgY2FsbGVkIHBhcmVudC4KKwkJVGhpcyBwb2ludHMgdG8gdGhlIHBhcmVudCBvciBzdXBwbHkgcmVndWxhdG9yIGlmIG9uZSBleGlzdHMuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3JlZ3VsYXRvci8uLi4vc3VzcGVuZF9tZW1fbWljcm92b2x0cworRGF0ZToJCU1heSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CUxpYW0gR2lyZHdvb2QgPGxyZ0BzbGltbG9naWMuY28udWs+CitEZXNjcmlwdGlvbjoKKwkJU29tZSByZWd1bGF0b3IgZGlyZWN0b3JpZXMgd2lsbCBjb250YWluIGEgZmllbGQgY2FsbGVkCisJCXN1c3BlbmRfbWVtX21pY3Jvdm9sdHMuIFRoaXMgaG9sZHMgdGhlIHJlZ3VsYXRvciBvdXRwdXQKKwkJdm9sdGFnZSBzZXR0aW5nIGZvciB0aGlzIGRvbWFpbiBtZWFzdXJlZCBpbiBtaWNyb3ZvbHRzIHdoZW4KKwkJdGhlIHN5c3RlbSBpcyBzdXNwZW5kZWQgdG8gbWVtb3J5LCBmb3Igdm9sdGFnZSByZWd1bGF0b3JzCisJCWltcGxlbWVudGluZyBzdXNwZW5kIHZvbHRhZ2UgY29uZmlndXJhdGlvbiBjb25zdHJhaW50cy4KKworV2hhdDoJCS9zeXMvY2xhc3MvcmVndWxhdG9yLy4uLi9zdXNwZW5kX2Rpc2tfbWljcm92b2x0cworRGF0ZToJCU1heSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CUxpYW0gR2lyZHdvb2QgPGxyZ0BzbGltbG9naWMuY28udWs+CitEZXNjcmlwdGlvbjoKKwkJU29tZSByZWd1bGF0b3IgZGlyZWN0b3JpZXMgd2lsbCBjb250YWluIGEgZmllbGQgY2FsbGVkCisJCXN1c3BlbmRfZGlza19taWNyb3ZvbHRzLiBUaGlzIGhvbGRzIHRoZSByZWd1bGF0b3Igb3V0cHV0CisJCXZvbHRhZ2Ugc2V0dGluZyBmb3IgdGhpcyBkb21haW4gbWVhc3VyZWQgaW4gbWljcm92b2x0cyB3aGVuCisJCXRoZSBzeXN0ZW0gaXMgc3VzcGVuZGVkIHRvIGRpc2ssIGZvciB2b2x0YWdlIHJlZ3VsYXRvcnMKKwkJaW1wbGVtZW50aW5nIHN1c3BlbmQgdm9sdGFnZSBjb25maWd1cmF0aW9uIGNvbnN0cmFpbnRzLgorCitXaGF0OgkJL3N5cy9jbGFzcy9yZWd1bGF0b3IvLi4uL3N1c3BlbmRfc3RhbmRieV9taWNyb3ZvbHRzCitEYXRlOgkJTWF5IDIwMDgKK0tlcm5lbFZlcnNpb246CTIuNi4yNgorQ29udGFjdDoJTGlhbSBHaXJkd29vZCA8bHJnQHNsaW1sb2dpYy5jby51az4KK0Rlc2NyaXB0aW9uOgorCQlTb21lIHJlZ3VsYXRvciBkaXJlY3RvcmllcyB3aWxsIGNvbnRhaW4gYSBmaWVsZCBjYWxsZWQKKwkJc3VzcGVuZF9zdGFuZGJ5X21pY3Jvdm9sdHMuIFRoaXMgaG9sZHMgdGhlIHJlZ3VsYXRvciBvdXRwdXQKKwkJdm9sdGFnZSBzZXR0aW5nIGZvciB0aGlzIGRvbWFpbiBtZWFzdXJlZCBpbiBtaWNyb3ZvbHRzIHdoZW4KKwkJdGhlIHN5c3RlbSBpcyBzdXNwZW5kZWQgdG8gc3RhbmRieSwgZm9yIHZvbHRhZ2UgcmVndWxhdG9ycworCQlpbXBsZW1lbnRpbmcgc3VzcGVuZCB2b2x0YWdlIGNvbmZpZ3VyYXRpb24gY29uc3RyYWludHMuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3JlZ3VsYXRvci8uLi4vc3VzcGVuZF9tZW1fbW9kZQorRGF0ZToJCU1heSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CUxpYW0gR2lyZHdvb2QgPGxyZ0BzbGltbG9naWMuY28udWs+CitEZXNjcmlwdGlvbjoKKwkJU29tZSByZWd1bGF0b3IgZGlyZWN0b3JpZXMgd2lsbCBjb250YWluIGEgZmllbGQgY2FsbGVkCisJCXN1c3BlbmRfbWVtX21vZGUuIFRoaXMgaG9sZHMgdGhlIHJlZ3VsYXRvciBvcGVyYXRpbmcgbW9kZQorCQlzZXR0aW5nIGZvciB0aGlzIGRvbWFpbiB3aGVuIHRoZSBzeXN0ZW0gaXMgc3VzcGVuZGVkIHRvCisJCW1lbW9yeSwgZm9yIHJlZ3VsYXRvcnMgaW1wbGVtZW50aW5nIHN1c3BlbmQgbW9kZQorCQljb25maWd1cmF0aW9uIGNvbnN0cmFpbnRzLgorCitXaGF0OgkJL3N5cy9jbGFzcy9yZWd1bGF0b3IvLi4uL3N1c3BlbmRfZGlza19tb2RlCitEYXRlOgkJTWF5IDIwMDgKK0tlcm5lbFZlcnNpb246CTIuNi4yNgorQ29udGFjdDoJTGlhbSBHaXJkd29vZCA8bHJnQHNsaW1sb2dpYy5jby51az4KK0Rlc2NyaXB0aW9uOgorCQlTb21lIHJlZ3VsYXRvciBkaXJlY3RvcmllcyB3aWxsIGNvbnRhaW4gYSBmaWVsZCBjYWxsZWQKKwkJc3VzcGVuZF9kaXNrX21vZGUuIFRoaXMgaG9sZHMgdGhlIHJlZ3VsYXRvciBvcGVyYXRpbmcgbW9kZQorCQlzZXR0aW5nIGZvciB0aGlzIGRvbWFpbiB3aGVuIHRoZSBzeXN0ZW0gaXMgc3VzcGVuZGVkIHRvIGRpc2ssCisJCWZvciByZWd1bGF0b3JzIGltcGxlbWVudGluZyBzdXNwZW5kIG1vZGUgY29uZmlndXJhdGlvbgorCQljb25zdHJhaW50cy4KKworV2hhdDoJCS9zeXMvY2xhc3MvcmVndWxhdG9yLy4uLi9zdXNwZW5kX3N0YW5kYnlfbW9kZQorRGF0ZToJCU1heSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CUxpYW0gR2lyZHdvb2QgPGxyZ0BzbGltbG9naWMuY28udWs+CitEZXNjcmlwdGlvbjoKKwkJU29tZSByZWd1bGF0b3IgZGlyZWN0b3JpZXMgd2lsbCBjb250YWluIGEgZmllbGQgY2FsbGVkCisJCXN1c3BlbmRfc3RhbmRieV9tb2RlLiBUaGlzIGhvbGRzIHRoZSByZWd1bGF0b3Igb3BlcmF0aW5nIG1vZGUKKwkJc2V0dGluZyBmb3IgdGhpcyBkb21haW4gd2hlbiB0aGUgc3lzdGVtIGlzIHN1c3BlbmRlZCB0bworCQlzdGFuZGJ5LCBmb3IgcmVndWxhdG9ycyBpbXBsZW1lbnRpbmcgc3VzcGVuZCBtb2RlCisJCWNvbmZpZ3VyYXRpb24gY29uc3RyYWludHMuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3JlZ3VsYXRvci8uLi4vc3VzcGVuZF9tZW1fc3RhdGUKK0RhdGU6CQlNYXkgMjAwOAorS2VybmVsVmVyc2lvbjoJMi42LjI2CitDb250YWN0OglMaWFtIEdpcmR3b29kIDxscmdAc2xpbWxvZ2ljLmNvLnVrPgorRGVzY3JpcHRpb246CisJCVNvbWUgcmVndWxhdG9yIGRpcmVjdG9yaWVzIHdpbGwgY29udGFpbiBhIGZpZWxkIGNhbGxlZAorCQlzdXNwZW5kX21lbV9zdGF0ZS4gVGhpcyBob2xkcyB0aGUgcmVndWxhdG9yIG9wZXJhdGluZyBzdGF0ZQorCQl3aGVuIHN1c3BlbmRlZCB0byBtZW1vcnksIGZvciByZWd1bGF0b3JzIGltcGxlbWVudGluZyBzdXNwZW5kCisJCWNvbmZpZ3VyYXRpb24gY29uc3RyYWludHMuCisKKwkJVGhpcyB3aWxsIGJlIG9uZSBvZiB0aGUgc2FtZSBzdHJpbmdzIHJlcG9ydGVkIGJ5CisJCXRoZSAic3RhdGUiIGF0dHJpYnV0ZS4KKworV2hhdDoJCS9zeXMvY2xhc3MvcmVndWxhdG9yLy4uLi9zdXNwZW5kX2Rpc2tfc3RhdGUKK0RhdGU6CQlNYXkgMjAwOAorS2VybmVsVmVyc2lvbjoJMi42LjI2CitDb250YWN0OglMaWFtIEdpcmR3b29kIDxscmdAc2xpbWxvZ2ljLmNvLnVrPgorRGVzY3JpcHRpb246CisJCVNvbWUgcmVndWxhdG9yIGRpcmVjdG9yaWVzIHdpbGwgY29udGFpbiBhIGZpZWxkIGNhbGxlZAorCQlzdXNwZW5kX2Rpc2tfc3RhdGUuIFRoaXMgaG9sZHMgdGhlIHJlZ3VsYXRvciBvcGVyYXRpbmcgc3RhdGUKKwkJd2hlbiBzdXNwZW5kZWQgdG8gZGlzaywgZm9yIHJlZ3VsYXRvcnMgaW1wbGVtZW50aW5nCisJCXN1c3BlbmQgY29uZmlndXJhdGlvbiBjb25zdHJhaW50cy4KKworCQlUaGlzIHdpbGwgYmUgb25lIG9mIHRoZSBzYW1lIHN0cmluZ3MgcmVwb3J0ZWQgYnkKKwkJdGhlICJzdGF0ZSIgYXR0cmlidXRlLgorCitXaGF0OgkJL3N5cy9jbGFzcy9yZWd1bGF0b3IvLi4uL3N1c3BlbmRfc3RhbmRieV9zdGF0ZQorRGF0ZToJCU1heSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CUxpYW0gR2lyZHdvb2QgPGxyZ0BzbGltbG9naWMuY28udWs+CitEZXNjcmlwdGlvbjoKKwkJU29tZSByZWd1bGF0b3IgZGlyZWN0b3JpZXMgd2lsbCBjb250YWluIGEgZmllbGQgY2FsbGVkCisJCXN1c3BlbmRfc3RhbmRieV9zdGF0ZS4gVGhpcyBob2xkcyB0aGUgcmVndWxhdG9yIG9wZXJhdGluZworCQlzdGF0ZSB3aGVuIHN1c3BlbmRlZCB0byBzdGFuZGJ5LCBmb3IgcmVndWxhdG9ycyBpbXBsZW1lbnRpbmcKKwkJc3VzcGVuZCBjb25maWd1cmF0aW9uIGNvbnN0cmFpbnRzLgorCisJCVRoaXMgd2lsbCBiZSBvbmUgb2YgdGhlIHNhbWUgc3RyaW5ncyByZXBvcnRlZCBieQorCQl0aGUgInN0YXRlIiBhdHRyaWJ1dGUuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3JlZ3VsYXRvci8uLi4vYnlwYXNzCitEYXRlOgkJU2VwdGVtYmVyIDIwMTIKK0tlcm5lbFZlcnNpb246CTMuNworQ29udGFjdDoJTWFyayBCcm93biA8YnJvb25pZUBvcGVuc291cmNlLndvbGZzb25taWNyby5jb20+CitEZXNjcmlwdGlvbjoKKwkJU29tZSByZWd1bGF0b3IgZGlyZWN0b3JpZXMgd2lsbCBjb250YWluIGEgZmllbGQgY2FsbGVkCisJCWJ5cGFzcy4gIFRoaXMgaW5kaWNhdGVzIGlmIHRoZSBkZXZpY2UgaXMgaW4gYnlwYXNzIG1vZGUuCisKKwkJVGhpcyB3aWxsIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHN0cmluZ3M6CisKKwkJJ2VuYWJsZWQnCisJCSdkaXNhYmxlZCcKKwkJJ3Vua25vd24nCisKKwkJJ2VuYWJsZWQnIG1lYW5zIHRoZSByZWd1bGF0b3IgaXMgaW4gYnlwYXNzIG1vZGUuCisKKwkJJ2Rpc2FibGVkJyBtZWFucyB0aGF0IHRoZSByZWd1bGF0b3IgaXMgcmVndWxhdGluZy4KKworCQkndW5rbm93bicgbWVhbnMgc29mdHdhcmUgY2Fubm90IGRldGVybWluZSB0aGUgc3RhdGUsIG9yCisJCXRoZSByZXBvcnRlZCBzdGF0ZSBpcyBpbnZhbGlkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1ydGMtcnRjMC1kZXZpY2UtcnRjX2NhbGlicmF0aW9uIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1ydGMtcnRjMC1kZXZpY2UtcnRjX2NhbGlicmF0aW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZjFlNzIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXJ0Yy1ydGMwLWRldmljZS1ydGNfY2FsaWJyYXRpb24KQEAgLTAsMCArMSwxMiBAQAorV2hhdDogICAgICAgICAgIEF0dHJpYnV0ZSBmb3IgY2FsaWJyYXRpbmcgU1QtRXJpY3Nzb24gQUI4NTAwIFJlYWwgVGltZSBDbG9jaworRGF0ZTogICAgICAgICAgIE9jdCAyMDExCitLZXJuZWxWZXJzaW9uOiAgMy4wCitDb250YWN0OiAgICAgICAgTWFyayBHb2RmcmV5IDxtYXJrLmdvZGZyZXlAc3Rlcmljc3Nvbi5jb20+CitEZXNjcmlwdGlvbjogICAgVGhlIHJ0Y19jYWxpYnJhdGlvbiBhdHRyaWJ1dGUgYWxsb3dzIHRoZSB1c2Vyc3BhY2UgdG8KKyAgICAgICAgICAgICAgICBjYWxpYnJhdGUgdGhlIEFCODUwMC5zIDMyS0h6IFJlYWwgVGltZSBDbG9jay4KKyAgICAgICAgICAgICAgICBFdmVyeSA2MCBzZWNvbmRzIHRoZSBBQjg1MDAgd2lsbCBjb3JyZWN0IHRoZSBSVEMncyB2YWx1ZQorICAgICAgICAgICAgICAgIGJ5IGFkZGluZyB0byBpdCB0aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUuCisgICAgICAgICAgICAgICAgVGhlIHJhbmdlIG9mIHRoZSBhdHRyaWJ1dGUgaXMgLTEyNyB0byArMTI3IGluIHVuaXRzIG9mCisgICAgICAgICAgICAgICAgMzAuNSBtaWNyby1zZWNvbmRzIChoYWxmLXBhcnRzLXBlci1taWxsaW9uIG9mIHRoZSAzMktIeiBjbG9jaykKK1VzZXJzOiAgICAgICAgICBUaGUgL3ZlbmRvci9zdC1lcmljc3Nvbi9iYXNlX3V0aWxpdGllcy9jb3JlL3J0Y19jYWxpYnJhdGlvbgorICAgICAgICAgICAgICAgIGRhZW1vbiB1c2VzIHRoaXMgaW50ZXJmYWNlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1zY3NpX2hvc3QgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXNjc2lfaG9zdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWIyNTVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1zY3NpX2hvc3QKQEAgLTAsMCArMSwyOSBAQAorV2hhdDoJCS9zeXMvY2xhc3Mvc2NzaV9ob3N0L2hvc3RYL2lzY2lfaWQKK0RhdGU6CQlKdW5lIDIwMTEKK0NvbnRhY3Q6CURhdmUgSmlhbmcgPGRhdmUuamlhbmdAaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoaXMgZmlsZSBjb250YWlucyB0aGUgZW51bWVyYXRlZCBob3N0IElEIGZvciB0aGUgSW50ZWwKKwkJU0NVIGNvbnRyb2xsZXIuIFRoZSBJbnRlbChSKSBDNjAwIFNlcmllcyBDaGlwc2V0IFNBVEEvU0FTCisJCVN0b3JhZ2UgQ29udHJvbCBVbml0IGVtYmVkcyB1cCB0byB0d28gNC1wb3J0IGNvbnRyb2xsZXJzIGluCisJCWEgc2luZ2xlIFBDSSBkZXZpY2UuICBUaGUgY29udHJvbGxlcnMgYXJlIGVudW1lcmF0ZWQgaW4gb3JkZXIKKwkJd2hpY2ggdXN1YWxseSBtZWFucyB0aGUgbG93ZXN0IG51bWJlciBzY3NpX2hvc3QgY29ycmVzcG9uZHMKKwkJd2l0aCB0aGUgZmlyc3QgY29udHJvbGxlciwgYnV0IHRoaXMgYXNzb2NpYXRpb24gaXMgbm90CisJCWd1YXJhbnRlZWQuICBUaGUgJ2lzY2lfaWQnIGF0dHJpYnV0ZSB1bmFtYmlndW91c2x5IGlkZW50aWZpZXMKKwkJdGhlIGNvbnRyb2xsZXIgaW5kZXg6ICcwJyBmb3IgdGhlIGZpcnN0IGNvbnRyb2xsZXIsCisJCScxJyBmb3IgdGhlIHNlY29uZC4KKworV2hhdDoJCS9zeXMvY2xhc3Mvc2NzaV9ob3N0L2hvc3RYL2FjY2lvcGF0aF9zdGF0dXMKK0RhdGU6CQlOb3ZlbWJlciAyMDEzCitDb250YWN0OglTdGVwaGVuIE0uIENhbWVyb24gPHNjYW1lcm9uQGJlYXJkb2cuY2NlLmhwLmNvbT4KK0Rlc2NyaXB0aW9uOglUaGlzIGZpbGUgY29udGFpbnMgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSAiU1NEIFNtYXJ0IFBhdGgiCisJCWZlYXR1cmUgb2YgSFAgU21hcnQgQXJyYXkgUkFJRCBjb250cm9sbGVycyB1c2luZyB0aGUgaHBzYQorCQlkcml2ZXIuICBTU0QgU21hcnQgUGF0aCwgd2hlbiBlbmFibGVkIHBlcm1pdHMgdGhlIGRyaXZlciB0bworCQlzZW5kIGkvbyByZXF1ZXN0cyBkaXJlY3RseSB0byBwaHlzaWNhbCBkZXZpY2VzIHRoYXQgYXJlIHBhcnQKKwkJb2YgYSBsb2dpY2FsIGRyaXZlLCBieXBhc3NpbmcgdGhlIGNvbnRyb2xsZXJzIGZpcm13YXJlIFJBSUQKKwkJc3RhY2sgZm9yIGEgcGVyZm9ybWFuY2UgYWR2YW50YWdlIHdoZW4gcG9zc2libGUuICBBIHZhbHVlIG9mCisJCScxJyBpbmRpY2F0ZXMgdGhlIGZlYXR1cmUgaXMgZW5hYmxlZCwgYW5kIHRoZSBjb250cm9sbGVyIG1heQorCQl1c2UgdGhlIGRpcmVjdCBpL28gcGF0aCB0byBwaHlzaWNhbCBkZXZpY2VzLiAgQSB2YWx1ZSBvZiB6ZXJvCisJCW1lYW5zIHRoZSBmZWF0dXJlIGlzIGRpc2FibGVkIGFuZCB0aGUgY29udHJvbGxlciBtYXkgbm90IHVzZQorCQl0aGUgZGlyZWN0IGkvbyBwYXRoIHRvIHBoeXNpY2FsIGRldmljZXMuICBUaGlzIHNldHRpbmcgaXMKKwkJY29udHJvbGxlciB3aWRlLCBhZmZlY3RpbmcgYWxsIGNvbmZpZ3VyZWQgbG9naWNhbCBkcml2ZXMgb24gdGhlCisJCWNvbnRyb2xsZXIuICBUaGlzIGZpbGUgaXMgcmVhZGFibGUgYW5kIHdyaXRhYmxlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1zY3NpX3RhcGUgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXNjc2lfdGFwZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmUzOThiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1zY3NpX3RhcGUKQEAgLTAsMCArMSwxMDkgQEAKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL3Njc2lfdGFwZS8qL3N0YXRzL2luX2ZsaWdodAorRGF0ZTogICAgICAgICAgIEFwciAyMDE1CitLZXJuZWxWZXJzaW9uOiAgNC4yCitDb250YWN0OiAgICAgICAgU2hhbmUgU2V5bW91ciA8c2hhbmUuc2V5bW91ckBocC5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2hvdyB0aGUgbnVtYmVyIG9mIEkvT3MgY3VycmVudGx5IGluLWZsaWdodCBiZXR3ZWVuIHRoZSBzdAorCQltb2R1bGUgYW5kIHRoZSBTQ1NJIG1pZC1sYXllci4KK1VzZXJzOgorCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL3Njc2lfdGFwZS8qL3N0YXRzL2lvX25zCitEYXRlOiAgICAgICAgICAgQXByIDIwMTUKK0tlcm5lbFZlcnNpb246ICA0LjIKK0NvbnRhY3Q6ICAgICAgICBTaGFuZSBTZXltb3VyIDxzaGFuZS5zZXltb3VyQGhwLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlTaG93cyB0aGUgdG90YWwgYW1vdW50IG9mIHRpbWUgc3BlbnQgd2FpdGluZyBmb3IgYWxsIEkvTworICAgICAgICAgICAgICAgIHRvIGFuZCBmcm9tIHRoZSB0YXBlIGRyaXZlIHRvIGNvbXBsZXRlLiBUaGlzIGluY2x1ZGVzIGFsbAorICAgICAgICAgICAgICAgIHJlYWRzLCB3cml0ZXMsIGFuZCBvdGhlciBTQ1NJIGNvbW1hbmRzIGlzc3VlZCB0byB0aGUgdGFwZQorICAgICAgICAgICAgICAgIGRyaXZlLiBBbiBleGFtcGxlIG9mIG90aGVyIFNDU0kgY29tbWFuZHMgd291bGQgYmUgdGFwZQorICAgICAgICAgICAgICAgIG1vdmVtZW50IHN1Y2ggYXMgYSByZXdpbmQgd2hlbiBhIHJld2luZCB0YXBlIGRldmljZSBpcworICAgICAgICAgICAgICAgIGNsb3NlZC4gVGhpcyBpdGVtIGlzIG1lYXN1cmVkIGluIG5hbm9zZWNvbmRzLgorCisgICAgICAgICAgICAgICAgVG8gZGV0ZXJtaW5lIHRoZSBhbW91bnQgb2YgdGltZSBzcGVudCB3YWl0aW5nIGZvciBvdGhlciBJL08KKyAgICAgICAgICAgICAgICB0byBjb21wbGV0ZSBzdWJ0cmFjdCByZWFkX25zIGFuZCB3cml0ZV9ucyBmcm9tIHRoaXMgdmFsdWUuCitVc2VyczoKKworCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9zY3NpX3RhcGUvKi9zdGF0cy9vdGhlcl9jbnQKK0RhdGU6ICAgICAgICAgICBBcHIgMjAxNQorS2VybmVsVmVyc2lvbjogIDQuMgorQ29udGFjdDogICAgICAgIFNoYW5lIFNleW1vdXIgPHNoYW5lLnNleW1vdXJAaHAuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSBudW1iZXIgb2YgSS9PIHJlcXVlc3RzIGlzc3VlZCB0byB0aGUgdGFwZSBkcml2ZSBvdGhlcgorCQl0aGFuIFNDU0kgcmVhZC93cml0ZSByZXF1ZXN0cy4KK1VzZXJzOgorCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL3Njc2lfdGFwZS8qL3N0YXRzL3JlYWRfYnl0ZV9jbnQKK0RhdGU6ICAgICAgICAgICBBcHIgMjAxNQorS2VybmVsVmVyc2lvbjogIDQuMgorQ29udGFjdDogICAgICAgIFNoYW5lIFNleW1vdXIgPHNoYW5lLnNleW1vdXJAaHAuY29tPgorRGVzY3JpcHRpb246CisJCVNob3dzIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgcmVxdWVzdGVkIGZyb20gdGhlIHRhcGUgZHJpdmUuCisJCVRoaXMgdmFsdWUgaXMgcHJlc2VudGVkIGluIGJ5dGVzIGJlY2F1c2UgdGFwZSBkcml2ZXMgc3VwcG9ydAorCQl2YXJpYWJsZSBsZW5ndGggYmxvY2sgc2l6ZXMuCitVc2VyczoKKworCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9zY3NpX3RhcGUvKi9zdGF0cy9yZWFkX2NudAorRGF0ZTogICAgICAgICAgIEFwciAyMDE1CitLZXJuZWxWZXJzaW9uOiAgNC4yCitDb250YWN0OiAgICAgICAgU2hhbmUgU2V5bW91ciA8c2hhbmUuc2V5bW91ckBocC5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2hvd3MgdGhlIHRvdGFsIG51bWJlciBvZiByZWFkIHJlcXVlc3RzIGlzc3VlZCB0byB0aGUgdGFwZQorCQlkcml2ZS4KK1VzZXJzOgorCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL3Njc2lfdGFwZS8qL3N0YXRzL3JlYWRfbnMKK0RhdGU6ICAgICAgICAgICBBcHIgMjAxNQorS2VybmVsVmVyc2lvbjogIDQuMgorQ29udGFjdDogICAgICAgIFNoYW5lIFNleW1vdXIgPHNoYW5lLnNleW1vdXJAaHAuY29tPgorRGVzY3JpcHRpb246CisJCVNob3dzIHRoZSB0b3RhbCBhbW91bnQgb2YgdGltZSBpbiBuYW5vc2Vjb25kcyB3YWl0aW5nIGZvcgorCQlyZWFkIEkvTyByZXF1ZXN0cyB0byBjb21wbGV0ZS4KK1VzZXJzOgorCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL3Njc2lfdGFwZS8qL3N0YXRzL3dyaXRlX2J5dGVfY250CitEYXRlOiAgICAgICAgICAgQXByIDIwMTUKK0tlcm5lbFZlcnNpb246ICA0LjIKK0NvbnRhY3Q6ICAgICAgICBTaGFuZSBTZXltb3VyIDxzaGFuZS5zZXltb3VyQGhwLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlTaG93cyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gdG8gdGhlIHRhcGUgZHJpdmUuCisJCVRoaXMgdmFsdWUgaXMgcHJlc2VudGVkIGluIGJ5dGVzIGJlY2F1c2UgdGFwZSBkcml2ZXMgc3VwcG9ydAorCQl2YXJpYWJsZSBsZW5ndGggYmxvY2sgc2l6ZXMuCitVc2VyczoKKworCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9zY3NpX3RhcGUvKi9zdGF0cy93cml0ZV9jbnQKK0RhdGU6ICAgICAgICAgICBBcHIgMjAxNQorS2VybmVsVmVyc2lvbjogIDQuMgorQ29udGFjdDogICAgICAgIFNoYW5lIFNleW1vdXIgPHNoYW5lLnNleW1vdXJAaHAuY29tPgorRGVzY3JpcHRpb246CisJCVNob3dzIHRoZSB0b3RhbCBudW1iZXIgb2Ygd3JpdGUgcmVxdWVzdHMgaXNzdWVkIHRvIHRoZSB0YXBlCisJCWRyaXZlLgorVXNlcnM6CisKKworV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3Mvc2NzaV90YXBlLyovc3RhdHMvd3JpdGVfbXMKK0RhdGU6ICAgICAgICAgICBBcHIgMjAxNQorS2VybmVsVmVyc2lvbjogIDQuMgorQ29udGFjdDogICAgICAgIFNoYW5lIFNleW1vdXIgPHNoYW5lLnNleW1vdXJAaHAuY29tPgorRGVzY3JpcHRpb246CisJCVNob3dzIHRoZSB0b3RhbCBhbW91bnQgb2YgdGltZSBpbiBuYW5vc2Vjb25kcyB3YWl0aW5nIGZvcgorCQl3cml0ZSBJL08gcmVxdWVzdHMgdG8gY29tcGxldGUuCitVc2VyczoKKworCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9zY3NpX3RhcGUvKi9zdGF0cy9yZXNpZF9jbnQKK0RhdGU6ICAgICAgICAgICBBcHIgMjAxNQorS2VybmVsVmVyc2lvbjogIDQuMgorQ29udGFjdDogICAgICAgIFNoYW5lIFNleW1vdXIgPHNoYW5lLnNleW1vdXJAaHAuY29tPgorRGVzY3JpcHRpb246CisJCVNob3dzIHRoZSBudW1iZXIgb2YgdGltZXMgd2UgZm91bmQgdGhhdCBhIHJlc2lkdWFsID4wCisJCXdhcyBmb3VuZCB3aGVuIHRoZSBTQ1NJIG1pZGxheWVyIGluZGljYXRlZCB0aGF0IHRoZXJlIHdhcworCQlhbiBlcnJvci4gRm9yIHJlYWRzIHRoaXMgbWF5IGJlIGEgY2FzZSBvZiBzb21lb25lIGlzc3VpbmcKKwkJcmVhZHMgZ3JlYXRlciB0aGFuIHRoZSBibG9jayBzaXplLgorVXNlcnM6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXN0bSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3Mtc3RtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5YWE0ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXN0bQpAQCAtMCwwICsxLDE0IEBACitXaGF0OgkJL3N5cy9jbGFzcy9zdG0vPHN0bT4vbWFzdGVycworRGF0ZToJCUp1bmUgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4zCitDb250YWN0OglBbGV4YW5kZXIgU2hpc2hraW4gPGFsZXhhbmRlci5zaGlzaGtpbkBsaW51eC5pbnRlbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2hvd3MgZmlyc3QgYW5kIGxhc3QgYXZhaWxhYmxlIHRvIHNvZnR3YXJlIG1hc3RlciBudW1iZXJzIG9uCisJCXRoaXMgU1RNIGRldmljZS4KKworV2hhdDoJCS9zeXMvY2xhc3Mvc3RtLzxzdG0+L2NoYW5uZWxzCitEYXRlOgkJSnVuZSAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjMKK0NvbnRhY3Q6CUFsZXhhbmRlciBTaGlzaGtpbiA8YWxleGFuZGVyLnNoaXNoa2luQGxpbnV4LmludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlTaG93cyB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIHBlciBtYXN0ZXIgb24gdGhpcyBTVE0gZGV2aWNlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1zdG1fc291cmNlIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1zdG1fc291cmNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3YjhkZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXN0bV9zb3VyY2UKQEAgLTAsMCArMSwxMSBAQAorV2hhdDoJCS9zeXMvY2xhc3Mvc3RtX3NvdXJjZS88c3RtX3NvdXJjZT4vc3RtX3NvdXJjZV9saW5rCitEYXRlOgkJSnVuZSAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjMKK0NvbnRhY3Q6CUFsZXhhbmRlciBTaGlzaGtpbiA8YWxleGFuZGVyLnNoaXNoa2luQGxpbnV4LmludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlzdG1fc291cmNlIGRldmljZSBsaW5rYWdlIHRvIHN0bSBkZXZpY2UsIHdoZXJlIGl0cyB0cmFjaW5nIGRhdGEKKwkJaXMgZGlyZWN0ZWQuIFJlYWRzIHJldHVybiBhbiBleGlzdGluZyBjb25uZWN0aW9uIG9yICI8bm9uZT4iIGlmCisJCXRoaXMgc3RtX3NvdXJjZSBpcyBub3QgY29ubmVjdGVkIHRvIGFueSBzdG0gZGV2aWNlIHlldC4KKwkJV3JpdGUgYW4gZXhpc3RpbmcgKHJlZ2lzdGVyZWQpIHN0bSBkZXZpY2UncyBuYW1lIGhlcmUgdG8KKwkJY29ubmVjdCB0aGF0IGRldmljZS4gSWYgYSBkZXZpY2UgaXMgYWxyZWFkeSBjb25uZWN0ZWQgdG8gdGhpcworCQlzdG1fc291cmNlLCBpdCB3aWxsIGZpcnN0IGJlIGRpc2Nvbm5lY3RlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtdXdiX3JjIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy11d2JfcmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVmNDg3NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtdXdiX3JjCkBAIC0wLDAgKzEsMTU5IEBACitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy91d2JfcmMKK0RhdGU6ICAgICAgICAgICBKdWx5IDIwMDgKK0tlcm5lbFZlcnNpb246ICAyLjYuMjcKK0NvbnRhY3Q6ICAgICAgICBsaW51eC11c2JAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKyAgICAgICAgICAgICAgICBJbnRlcmZhY2VzIGZvciBXaU1lZGlhIFVsdHJhIFdpZGViYW5kIENvbW1vbiBSYWRpbworICAgICAgICAgICAgICAgIFBsYXRmb3JtIChVV0IpIHJhZGlvIGNvbnRyb2xsZXJzLgorCisgICAgICAgICAgICAgICAgRmFtaWxpYXJpdHkgd2l0aCB0aGUgRUNNQS0zNjggJ0hpZ2ggUmF0ZSBVbHRyYQorICAgICAgICAgICAgICAgIFdpZGViYW5kIE1BQyBhbmQgUEhZIFNwZWNpZmljYXRpb24nIGlzIGFzc3VtZWQuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL3V3Yl9yYy9iZWFjb25fdGltZW91dF9tcworRGF0ZTogICAgICAgICAgIEp1bHkgMjAwOAorS2VybmVsVmVyc2lvbjogIDIuNi4yNworRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgSWYgbm8gYmVhY29ucyBhcmUgcmVjZWl2ZWQgZnJvbSBhIGRldmljZSBmb3IgYXQgbGVhc3QKKyAgICAgICAgICAgICAgICB0aGlzIHRpbWUsIHRoZSBkZXZpY2Ugd2lsbCBiZSBjb25zaWRlcmVkIHRvIGhhdmUgZ29uZQorICAgICAgICAgICAgICAgIGFuZCBpdCB3aWxsIGJlIHJlbW92ZWQuICBUaGUgZGVmYXVsdCBpcyAzIHN1cGVyZnJhbWVzCisgICAgICAgICAgICAgICAgKH4xOTcgbXMpIGFzIHJlcXVpcmVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy91d2JfcmMvdXdiTi8KK0RhdGU6ICAgICAgICAgICBKdWx5IDIwMDgKK0tlcm5lbFZlcnNpb246ICAyLjYuMjcKK0NvbnRhY3Q6ICAgICAgICBsaW51eC11c2JAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKyAgICAgICAgICAgICAgICBBbiBpbmRpdmlkdWFsIFVXQiByYWRpbyBjb250cm9sbGVyLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy91d2JfcmMvdXdiTi9iZWFjb24KK0RhdGU6ICAgICAgICAgICBKdWx5IDIwMDgKK0tlcm5lbFZlcnNpb246ICAyLjYuMjcKK0NvbnRhY3Q6ICAgICAgICBsaW51eC11c2JAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKyAgICAgICAgICAgICAgICBXcml0ZToKKworICAgICAgICAgICAgICAgIDxjaGFubmVsPgorCisgICAgICAgICAgICAgICAgdG8gZm9yY2UgYSBzcGVjaWZpYyBjaGFubmVsIHRvIGJlIHVzZWQgd2hlbiBiZWFjb25pbmcsCisgICAgICAgICAgICAgICAgb3IsIGlmIDxjaGFubmVsPiBpcyAtMSwgdG8gcHJvaGliaXQgYmVhY29uaW5nLiAgSWYKKyAgICAgICAgICAgICAgICA8Y2hhbm5lbD4gaXMgMCwgdGhlbiB0aGUgZGVmYXVsdCBjaGFubmVsIHNlbGVjdGlvbgorICAgICAgICAgICAgICAgIGFsZ29yaXRobSB3aWxsIGJlIHVzZWQuICBWYWxpZCBjaGFubmVscyBkZXBlbmRzIG9uIHRoZQorICAgICAgICAgICAgICAgIHJhZGlvIGNvbnRyb2xsZXIncyBzdXBwb3J0ZWQgYmFuZCBncm91cHMuCisKKyAgICAgICAgICAgICAgICBSZWFkaW5nIHJldHVybnMgdGhlIGN1cnJlbnRseSBhY3RpdmUgY2hhbm5lbCwgb3IgLTEgaWYKKyAgICAgICAgICAgICAgICB0aGUgcmFkaW8gY29udHJvbGxlciBpcyBub3QgYmVhY29uaW5nLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy91d2JfcmMvdXdiTi9BU0lFCitEYXRlOiAgICAgICAgICAgQXVndXN0IDIwMTQKK0tlcm5lbFZlcnNpb246ICAzLjE4CitDb250YWN0OiAgICAgICAgbGludXgtdXNiQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisKKyAgICAgICAgICAgICAgICBUaGUgYXBwbGljYXRpb24tc3BlY2lmaWMgaW5mb3JtYXRpb24gZWxlbWVudCAoQVNJRSkKKyAgICAgICAgICAgICAgICBpbmNsdWRlZCBpbiB0aGlzIGRldmljZSdzIGJlYWNvbiwgaW4gc3BhY2Ugc2VwYXJhdGVkCisgICAgICAgICAgICAgICAgaGV4IG9jdGV0cy4KKworICAgICAgICAgICAgICAgIFJlYWRpbmcgcmV0dXJucyB0aGUgY3VycmVudCBBU0lFLiAgV3JpdGluZyByZXBsYWNlcworICAgICAgICAgICAgICAgIHRoZSBjdXJyZW50IEFTSUUgd2l0aCB0aGUgb25lIHdyaXR0ZW4uCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL3V3Yl9yYy91d2JOL3NjYW4KK0RhdGU6ICAgICAgICAgICBKdWx5IDIwMDgKK0tlcm5lbFZlcnNpb246ICAyLjYuMjcKK0NvbnRhY3Q6ICAgICAgICBsaW51eC11c2JAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKyAgICAgICAgICAgICAgICBXcml0ZToKKworICAgICAgICAgICAgICAgIDxjaGFubmVsPiA8dHlwZT4gWzxicHN0IG9mZnNldD5dCisKKyAgICAgICAgICAgICAgICB0byBzdGFydCAob3Igc3RvcCkgc2Nhbm5pbmcgb24gYSBjaGFubmVsLiAgPHR5cGU+IGlzIG9uZSBvZjoKKyAgICAgICAgICAgICAgICAgICAgMCAtIHNjYW4KKyAgICAgICAgICAgICAgICAgICAgMSAtIHNjYW4gb3V0c2lkZSBCUAorICAgICAgICAgICAgICAgICAgICAyIC0gc2NhbiB3aGlsZSBpbmFjdGl2ZQorICAgICAgICAgICAgICAgICAgICAzIC0gc2Nhbm5pbmcgZGlzYWJsZWQKKyAgICAgICAgICAgICAgICAgICAgNCAtIHNjYW4gKHdpdGggc3RhcnQgdGltZSBvZiA8YnBzdCBvZmZzZXQ+KQorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy91d2JfcmMvdXdiTi9tYWNfYWRkcmVzcworRGF0ZTogICAgICAgICAgIEp1bHkgMjAwOAorS2VybmVsVmVyc2lvbjogIDIuNi4yNworQ29udGFjdDogICAgICAgIGxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIFRoZSBFVUktNDgsIGluIGNvbG9uLXNlcGFyYXRlZCBoZXggb2N0ZXRzLCBmb3IgdGhpcworICAgICAgICAgICAgICAgIHJhZGlvIGNvbnRyb2xsZXIuICBBIHdyaXRlIHdpbGwgY2hhbmdlIHRoZSByYWRpbworICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIncyBFVUktNDggYnV0IG9ubHkgZG8gc28gd2hpbGUgdGhlIGRldmljZSBpcworICAgICAgICAgICAgICAgIG5vdCBiZWFjb25pbmcgb3Igc2Nhbm5pbmcuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL3V3Yl9yYy91d2JOL3d1c2JoYworRGF0ZTogICAgICAgICAgIEp1bHkgMjAwOAorS2VybmVsVmVyc2lvbjogIDIuNi4yNworQ29udGFjdDogICAgICAgIGxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIEEgc3ltbGluayB0byB0aGUgZGV2aWNlIChpZiBhbnkpIG9mIHRoZSBXVVNCIEhvc3QKKyAgICAgICAgICAgICAgICBDb250cm9sbGVyIFBBTCB1c2luZyB0aGlzIHJhZGlvIGNvbnRyb2xsZXIuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL3V3Yl9yYy91d2JOLzxFVUktNDg+LworRGF0ZTogICAgICAgICAgIEp1bHkgMjAwOAorS2VybmVsVmVyc2lvbjogIDIuNi4yNworQ29udGFjdDogICAgICAgIGxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIEEgbmVpZ2hib3VyIFVXQiBkZXZpY2UgdGhhdCBoYXMgZWl0aGVyIGJlZW4gZGV0ZWN0ZWQKKyAgICAgICAgICAgICAgICBhcyBwYXJ0IG9mIGEgc2NhbiBvciBpcyBhIG1lbWJlciBvZiB0aGUgcmFkaW8KKyAgICAgICAgICAgICAgICBjb250cm9sbGVycyBiZWFjb24gZ3JvdXAuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL3V3Yl9yYy91d2JOLzxFVUktNDg+L0JQU1QKK0RhdGU6ICAgICAgICAgICBKdWx5IDIwMDgKK0tlcm5lbFZlcnNpb246ICAyLjYuMjcKK0NvbnRhY3Q6ICAgICAgICBsaW51eC11c2JAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKyAgICAgICAgICAgICAgICBUaGUgdGltZSAodXNpbmcgdGhlIHJhZGlvIGNvbnRyb2xsZXJzIGludGVybmFsIDEgbXMKKyAgICAgICAgICAgICAgICBpbnRlcnZhbCBzdXBlcmZyYW1lIHRpbWVyKSBvZiB0aGUgbGFzdCBiZWFjb24gZnJvbQorICAgICAgICAgICAgICAgIHRoaXMgZGV2aWNlIHdhcyByZWNlaXZlZC4KKworV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvdXdiX3JjL3V3Yk4vPEVVSS00OD4vRGV2QWRkcgorRGF0ZTogICAgICAgICAgIEp1bHkgMjAwOAorS2VybmVsVmVyc2lvbjogIDIuNi4yNworQ29udGFjdDogICAgICAgIGxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIFRoZSBjdXJyZW50IERldkFkZHIgb2YgdGhpcyBkZXZpY2UgaW4gY29sb24gc2VwYXJhdGVkCisgICAgICAgICAgICAgICAgaGV4IG9jdGV0cy4KKworV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvdXdiX3JjL3V3Yk4vPEVVSS00OD4vRVVJXzQ4CitEYXRlOiAgICAgICAgICAgSnVseSAyMDA4CitLZXJuZWxWZXJzaW9uOiAgMi42LjI3CitDb250YWN0OiAgICAgICAgbGludXgtdXNiQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisKKyAgICAgICAgICAgICAgICBUaGUgRVVJLTQ4IG9mIHRoaXMgZGV2aWNlIGluIGNvbG9uIHNlcGFyYXRlZCBoZXgKKyAgICAgICAgICAgICAgICBvY3RldHMuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL3V3Yl9yYy91d2JOLzxFVUktNDg+L0JQU1QKK0RhdGU6ICAgICAgICAgICBKdWx5IDIwMDgKK0tlcm5lbFZlcnNpb246ICAyLjYuMjcKK0NvbnRhY3Q6ICAgICAgICBsaW51eC11c2JAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKworV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvdXdiX3JjL3V3Yk4vPEVVSS00OD4vSUVzCitEYXRlOiAgICAgICAgICAgSnVseSAyMDA4CitLZXJuZWxWZXJzaW9uOiAgMi42LjI3CitDb250YWN0OiAgICAgICAgbGludXgtdXNiQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgVGhlIGxhdGVzdCBJRXMgaW5jbHVkZWQgaW4gdGhpcyBkZXZpY2UncyBiZWFjb24sIGluCisgICAgICAgICAgICAgICAgc3BhY2Ugc2VwYXJhdGVkIGhleCBvY3RldHMgd2l0aCBvbmUgSUUgcGVyIGxpbmUuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL3V3Yl9yYy91d2JOLzxFVUktNDg+L0xRRQorRGF0ZTogICAgICAgICAgIEp1bHkgMjAwOAorS2VybmVsVmVyc2lvbjogIDIuNi4yNworQ29udGFjdDogICAgICAgIGxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIExpbmsgUXVhbGl0eSBFc3RpbWF0ZSAtIHRoZSBTaWduYWwgdG8gTm9pc2UgUmF0aW8KKyAgICAgICAgICAgICAgICAoU05SKSBvZiBhbGwgcGFja2V0cyByZWNlaXZlZCBmcm9tIHRoaXMgZGV2aWNlIGluIGRCLgorICAgICAgICAgICAgICAgIFRoaXMgZ2l2ZXMgYW4gZXN0aW1hdGUgb24gYSBzdWl0YWJsZSBQSFkgcmF0ZS4gUmVmZXIKKyAgICAgICAgICAgICAgICB0byBbRUNNQS0zNjhdIHNlY3Rpb24gMTMuMyBmb3IgbW9yZSBkZXRhaWxzLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy91d2JfcmMvdXdiTi88RVVJLTQ4Pi9SU1NJCitEYXRlOiAgICAgICAgICAgSnVseSAyMDA4CitLZXJuZWxWZXJzaW9uOiAgMi42LjI3CitDb250YWN0OiAgICAgICAgbGludXgtdXNiQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgUmVjZWl2ZWQgU2lnbmFsIFN0cmVuZ3RoIEluZGljYXRpb24gLSB0aGUgc3RyZW5ndGggb2YKKyAgICAgICAgICAgICAgICB0aGUgcmVjZWl2ZWQgc2lnbmFsIGluIGRCLiAgTFFFIGlzIGEgbW9yZSB1c2VmdWwKKyAgICAgICAgICAgICAgICBtZWFzdXJlIG9mIHRoZSByYWRpbyBsaW5rIHF1YWxpdHkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXV3Yl9yYy13dXNiaGMgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXV3Yl9yYy13dXNiaGMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk3N2UyOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtdXdiX3JjLXd1c2JoYwpAQCAtMCwwICsxLDU3IEBACitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy91d2JfcmMvdXdiTi93dXNiaGMvd3VzYl9jaGlkCitEYXRlOiAgICAgICAgICAgSnVseSAyMDA4CitLZXJuZWxWZXJzaW9uOiAgMi42LjI3CitDb250YWN0OiAgICAgICAgRGF2aWQgVnJhYmVsIDxkYXZpZC52cmFiZWxAY3NyLmNvbT4KK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIFdyaXRlIHRoZSBDSElEICgxNiBzcGFjZS1zZXBhcmF0ZWQgaGV4IG9jdGV0cykgZm9yIHRoaXMgaG9zdCBjb250cm9sbGVyLgorICAgICAgICAgICAgICAgIFRoaXMgc3RhcnRzIHRoZSBob3N0IGNvbnRyb2xsZXIsIGFsbG93aW5nIGl0IHRvIGFjY2VwdCBjb25uZWN0aW9uIGZyb20KKyAgICAgICAgICAgICAgICBXVVNCIGRldmljZXMuCisKKyAgICAgICAgICAgICAgICBTZXQgYW4gYWxsIHplcm8gQ0hJRCB0byBzdG9wIHRoZSBob3N0IGNvbnRyb2xsZXIuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL3V3Yl9yYy91d2JOL3d1c2JoYy93dXNiX3RydXN0X3RpbWVvdXQKK0RhdGU6ICAgICAgICAgICBKdWx5IDIwMDgKK0tlcm5lbFZlcnNpb246ICAyLjYuMjcKK0NvbnRhY3Q6ICAgICAgICBEYXZpZCBWcmFiZWwgPGRhdmlkLnZyYWJlbEBjc3IuY29tPgorRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgRGV2aWNlcyB0aGF0IGhhdmVuJ3Qgc2VudCBhIFdVU0IgcGFja2V0IHRvIHRoZSBob3N0CisgICAgICAgICAgICAgICAgd2l0aGluICd3dXNiX3RydXN0X3RpbWVvdXQnIG1zIGFyZSBjb25zaWRlcmVkIHRvIGhhdmUKKyAgICAgICAgICAgICAgICBkaXNjb25uZWN0ZWQgYW5kIGFyZSByZW1vdmVkLiAgVGhlIGRlZmF1bHQgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICA0MDAwIG1zIGlzIHRoZSB2YWx1ZSByZXF1aXJlZCBieSB0aGUgV1VTQgorICAgICAgICAgICAgICAgIHNwZWNpZmljYXRpb24uCisKKyAgICAgICAgICAgICAgICBTaW5jZSB0aGlzIHJlbGF0ZXMgdG8gc2VjdXJpdHkgKHNwZWNpZmljYWxseSwgdGhlCisgICAgICAgICAgICAgICAgbGlmZXRpbWUgb2YgUFRLcyBhbmQgR1RLcykgaXQgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkCisgICAgICAgICAgICAgICAgZnJvbSB0aGUgZGVmYXVsdC4KKworV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvdXdiX3JjL3V3Yk4vd3VzYmhjL3d1c2JfcGh5X3JhdGUKK0RhdGU6ICAgICAgICAgICBBdWd1c3QgMjAwOQorS2VybmVsVmVyc2lvbjogIDIuNi4zMgorQ29udGFjdDogICAgICAgIERhdmlkIFZyYWJlbCA8ZGF2aWQudnJhYmVsQGNzci5jb20+CitEZXNjcmlwdGlvbjoKKyAgICAgICAgICAgICAgICBUaGUgbWF4aW11bSBQSFkgcmF0ZSB0byB1c2UgZm9yIGFsbCBjb25uZWN0ZWQgZGV2aWNlcy4KKyAgICAgICAgICAgICAgICBUaGlzIGlzIG9ubHkgb2YgbGltaXRlZCB1c2UgZm9yIHRlc3RpbmcgYW5kCisgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgYXMgdGhlIGhhcmR3YXJlJ3MgYXV0b21hdGljIHJhdGUKKyAgICAgICAgICAgICAgICBhZGFwdGF0aW9uIGlzIGJldHRlciB0aGVuIHRoaXMgc2ltcGxlIGNvbnRyb2wuCisKKyAgICAgICAgICAgICAgICBSZWZlciB0byBbRUNNQS0zNjhdIHNlY3Rpb24gMTAuMy4xLjEgZm9yIHRoZSB2YWx1ZSB0bworICAgICAgICAgICAgICAgIHVzZS4KKworV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvdXdiX3JjL3V3Yk4vd3VzYmhjL3d1c2JfZG50cworRGF0ZTogICAgICAgICAgIEp1bmUgMjAxMworS2VybmVsVmVyc2lvbjogIDMuMTEKK0NvbnRhY3Q6ICAgICAgICBUaG9tYXMgUHVnbGllc2UgPHRob21hcy5wdWdsaWVzZUBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKyAgICAgICAgICAgICAgICBUaGUgZGV2aWNlIG5vdGlmaWNhdGlvbiB0aW1lIHNsb3QgKEROVFMpIGNvdW50IGFuZCBpbnZlcnZhbCBpbgorICAgICAgICAgICAgICAgIG1pbGxpc2Vjb25kcyB0aGF0IHRoZSBXVVNCIGhvc3Qgc2hvdWxkIHVzZS4gIFRoaXMgY29udHJvbHMgaG93CisgICAgICAgICAgICAgICAgb2Z0ZW4gdGhlIGRldmljZXMgd2lsbCBoYXZlIHRoZSBvcHBvcnR1bml0eSB0byBzZW5kCisgICAgICAgICAgICAgICAgbm90aWZpY2F0aW9ucyB0byB0aGUgaG9zdC4KKworV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvdXdiX3JjL3V3Yk4vd3VzYmhjL3d1c2JfcmV0cnlfY291bnQKK0RhdGU6ICAgICAgICAgICBKdW5lIDIwMTMKK0tlcm5lbFZlcnNpb246ICAzLjExCitDb250YWN0OiAgICAgICAgVGhvbWFzIFB1Z2xpZXNlIDx0aG9tYXMucHVnbGllc2VAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgVGhlIG51bWJlciBvZiByZXRyaWVzIHRoYXQgdGhlIFdVU0IgaG9zdCBzaG91bGQgYXR0ZW1wdAorICAgICAgICAgICAgICAgIGJlZm9yZSByZXBvcnRpbmcgYW4gZXJyb3IgZm9yIGEgYnVzIHRyYW5zYWN0aW9uLiAgVGhlIHJhbmdlIG9mCisgICAgICAgICAgICAgICAgdmFsaWQgdmFsdWVzIGlzIFswLi4xNV0sIHdoZXJlIDAgaW5kaWNhdGVzIGluZmluaXRlIHJldHJpZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXpyYW0gYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXpyYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhkZGFjYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtenJhbQpAQCAtMCwwICsxLDI0IEBACitXaGF0OgkJL3N5cy9jbGFzcy96cmFtLWNvbnRyb2wvCitEYXRlOgkJQXVndXN0IDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMgorQ29udGFjdDoJU2VyZ2V5IFNlbm96aGF0c2t5IDxzZXJnZXkuc2Vub3poYXRza3lAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSB6cmFtLWNvbnRyb2wvIGNsYXNzIHN1Yi1kaXJlY3RvcnkgYmVsb25ncyB0byB6cmFtCisJCWRldmljZSBjbGFzcworCitXaGF0OgkJL3N5cy9jbGFzcy96cmFtLWNvbnRyb2wvaG90X2FkZAorRGF0ZToJCUF1Z3VzdCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjIKK0NvbnRhY3Q6CVNlcmdleSBTZW5vemhhdHNreSA8c2VyZ2V5LnNlbm96aGF0c2t5QGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlSTyBhdHRyaWJ1dGUuIFJlYWQgb3BlcmF0aW9uIHdpbGwgY2F1c2UgenJhbSB0byBhZGQgYSBuZXcKKwkJZGV2aWNlIGFuZCByZXR1cm4gaXRzIGRldmljZSBpZCBiYWNrIHRvIHVzZXIgKHNvIG9uZSBjYW4KKwkJdXNlIC9kZXYvenJhbTxpZD4pLCBvciBlcnJvciBjb2RlLgorCitXaGF0OgkJL3N5cy9jbGFzcy96cmFtLWNvbnRyb2wvaG90X3JlbW92ZQorRGF0ZToJCUF1Z3VzdCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjIKK0NvbnRhY3Q6CVNlcmdleSBTZW5vemhhdHNreSA8c2VyZ2V5LnNlbm96aGF0c2t5QGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlXTyBhdHRyaWJ1dGUuIFJlbW92ZSBhIHNwZWNpZmljIC9kZXYvenJhbVggZGV2aWNlLCB3aGVyZSBYCisJCWlzIGEgZGV2aWNlX2lkIHByb3ZpZGVkIGJ5IHVzZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldiBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZjJiOGIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldgpAQCAtMCwwICsxLDIwIEBACitXaGF0OgkJL3N5cy9kZXYKK0RhdGU6CQlBcHJpbCAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CURhbiBXaWxsaWFtcyA8ZGFuLmoud2lsbGlhbXNAaW50ZWwuY29tPgorRGVzY3JpcHRpb246CVRoZSAvc3lzL2RldiB0cmVlIHByb3ZpZGVzIGEgbWV0aG9kIHRvIGxvb2sgdXAgdGhlIHN5c2ZzCisJCXBhdGggZm9yIGEgZGV2aWNlIHVzaW5nIHRoZSBpbmZvcm1hdGlvbiByZXR1cm5lZCBmcm9tCisJCXN0YXQoMikuICBUaGVyZSBhcmUgdHdvIGRpcmVjdG9yaWVzLCAnYmxvY2snIGFuZCAnY2hhcicsCisJCWJlbmVhdGggL3N5cy9kZXYgY29udGFpbmluZyBzeW1ib2xpYyBsaW5rcyB3aXRoIG5hbWVzIG9mCisJCXRoZSBmb3JtICI8bWFqb3I+OjxtaW5vcj4iLiAgVGhlc2UgbGlua3MgcG9pbnQgdG8gdGhlCisJCWNvcnJlc3BvbmRpbmcgc3lzZnMgcGF0aCBmb3IgdGhlIGdpdmVuIGRldmljZS4KKworCQlFeGFtcGxlOgorCQkkIHJlYWRsaW5rIC9zeXMvZGV2L2Jsb2NrLzg6MzIKKwkJLi4vLi4vYmxvY2svc2RjCisKKwkJRW50cmllcyBpbiAvc3lzL2Rldi9jaGFyIGFuZCAvc3lzL2Rldi9ibG9jayB3aWxsIGJlCisJCWR5bmFtaWNhbGx5IGNyZWF0ZWQgYW5kIGRlc3Ryb3llZCBhcyBkZXZpY2VzIGVudGVyIGFuZAorCQlsZWF2ZSB0aGUgc3lzdGVtLgorCitVc2VyczoJCW1kYWRtIDxsaW51eC1yYWlkQHZnZXIua2VybmVsLm9yZz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmNjOTQzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzCkBAIC0wLDAgKzEsMjUgQEAKK1doYXQ6CQkvc3lzL2RldmljZXMKK0RhdGU6CQlGZWJydWFyeSAyMDA2CitDb250YWN0OglHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2RldmljZXMgdHJlZSBjb250YWlucyBhIHNuYXBzaG90IG9mIHRoZQorCQlpbnRlcm5hbCBzdGF0ZSBvZiB0aGUga2VybmVsIGRldmljZSB0cmVlLiAgRGV2aWNlcyB3aWxsCisJCWJlIGFkZGVkIGFuZCByZW1vdmVkIGR5bmFtaWNhbGx5IGFzIHRoZSBtYWNoaW5lIHJ1bnMsCisJCWFuZCBiZXR3ZWVuIGRpZmZlcmVudCBrZXJuZWwgdmVyc2lvbnMsIHRoZSBsYXlvdXQgb2YgdGhlCisJCWRldmljZXMgd2l0aGluIHRoaXMgdHJlZSB3aWxsIGNoYW5nZS4KKworCQlQbGVhc2UgZG8gbm90IHJlbHkgb24gdGhlIGZvcm1hdCBvZiB0aGlzIHRyZWUgYmVjYXVzZSBvZgorCQl0aGlzLiAgSWYgYSBwcm9ncmFtIHdpc2hlcyB0byBmaW5kIGRpZmZlcmVudCB0aGluZ3MgaW4KKwkJdGhlIHRyZWUsIHBsZWFzZSB1c2UgdGhlIC9zeXMvY2xhc3Mgc3RydWN0dXJlIGFuZCByZWx5CisJCW9uIHRoZSBzeW1saW5rcyB0aGVyZSB0byBwb2ludCB0byB0aGUgcHJvcGVyIGxvY2F0aW9uCisJCXdpdGhpbiB0aGUgL3N5cy9kZXZpY2VzIHRyZWUgb2YgdGhlIGluZGl2aWR1YWwgZGV2aWNlcy4KKwkJT3IgcmVseSBvbiB0aGUgdWV2ZW50IG1lc3NhZ2VzIHRvIG5vdGlmeSBwcm9ncmFtcyBvZgorCQlkZXZpY2VzIGJlaW5nIGFkZGVkIGFuZCByZW1vdmVkIGZyb20gdGhpcyB0cmVlIHRvIGZpbmQKKwkJdGhlIGxvY2F0aW9uIG9mIHRob3NlIGRldmljZXMuCisKKwkJTm90ZSB0aGF0IHNvbWV0aW1lcyBub3QgYWxsIGRldmljZXMgYWxvbmcgdGhlIGRpcmVjdG9yeQorCQljaGFpbiB3aWxsIGhhdmUgZW1pdHRlZCB1ZXZlbnQgbWVzc2FnZXMsIHNvIHVzZXJzcGFjZQorCQlwcm9ncmFtcyBtdXN0IGJlIGFibGUgdG8gaGFuZGxlIHN1Y2ggb2NjdXJyZW5jZXMuCisKK1VzZXJzOgorCXVkZXYgPGxpbnV4LWhvdHBsdWctZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLWVkYWMgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtZWRhYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTY4ZTAwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLWVkYWMKQEAgLTAsMCArMSwxNDAgQEAKK1doYXQ6CQkvc3lzL2RldmljZXMvc3lzdGVtL2VkYWMvbWMvbWMqL3Jlc2V0X2NvdW50ZXJzCitEYXRlOgkJSmFudWFyeSAyMDA2CitDb250YWN0OglsaW51eC1lZGFjQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CVRoaXMgd3JpdGUtb25seSBjb250cm9sIGZpbGUgd2lsbCB6ZXJvIGFsbCB0aGUgc3RhdGlzdGljYWwKKwkJY291bnRlcnMgZm9yIFVFIGFuZCBDRSBlcnJvcnMgb24gdGhlIGdpdmVuIG1lbW9yeSBjb250cm9sbGVyLgorCQlaZXJvaW5nIHRoZSBjb3VudGVycyB3aWxsIGFsc28gcmVzZXQgdGhlIHRpbWVyIGluZGljYXRpbmcgaG93CisJCWxvbmcgc2luY2UgdGhlIGxhc3QgY291bnRlciB3ZXJlIHJlc2V0LiBUaGlzIGlzIHVzZWZ1bCBmb3IKKwkJY29tcHV0aW5nIGVycm9ycy90aW1lLiAgU2luY2UgdGhlIGNvdW50ZXJzIGFyZSBhbHdheXMgcmVzZXQKKwkJYXQgZHJpdmVyIGluaXRpYWxpemF0aW9uIHRpbWUsIG5vIG1vZHVsZS9rZXJuZWwgcGFyYW1ldGVyCisJCWlzIGF2YWlsYWJsZS4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vZWRhYy9tYy9tYyovc2Vjb25kc19zaW5jZV9yZXNldAorRGF0ZToJCUphbnVhcnkgMjAwNgorQ29udGFjdDoJbGludXgtZWRhY0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOglUaGlzIGF0dHJpYnV0ZSBmaWxlIGRpc3BsYXlzIGhvdyBtYW55IHNlY29uZHMgaGF2ZSBlbGFwc2VkCisJCXNpbmNlIHRoZSBsYXN0IGNvdW50ZXIgcmVzZXQuIFRoaXMgY2FuIGJlIHVzZWQgd2l0aCB0aGUgZXJyb3IKKwkJY291bnRlcnMgdG8gbWVhc3VyZSBlcnJvciByYXRlcy4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vZWRhYy9tYy9tYyovbWNfbmFtZQorRGF0ZToJCUphbnVhcnkgMjAwNgorQ29udGFjdDoJbGludXgtZWRhY0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOglUaGlzIGF0dHJpYnV0ZSBmaWxlIGRpc3BsYXlzIHRoZSB0eXBlIG9mIG1lbW9yeSBjb250cm9sbGVyCisJCXRoYXQgaXMgYmVpbmcgdXRpbGl6ZWQuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvc3lzdGVtL2VkYWMvbWMvbWMqL3NpemVfbWIKK0RhdGU6CQlKYW51YXJ5IDIwMDYKK0NvbnRhY3Q6CWxpbnV4LWVkYWNAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoJVGhpcyBhdHRyaWJ1dGUgZmlsZSBkaXNwbGF5cywgaW4gY291bnQgb2YgbWVnYWJ5dGVzLCBvZiBtZW1vcnkKKwkJdGhhdCB0aGlzIG1lbW9yeSBjb250cm9sbGVyIG1hbmFnZXMuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvc3lzdGVtL2VkYWMvbWMvbWMqL3VlX2NvdW50CitEYXRlOgkJSmFudWFyeSAyMDA2CitDb250YWN0OglsaW51eC1lZGFjQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CVRoaXMgYXR0cmlidXRlIGZpbGUgZGlzcGxheXMgdGhlIHRvdGFsIGNvdW50IG9mIHVuY29ycmVjdGFibGUKKwkJZXJyb3JzIHRoYXQgaGF2ZSBvY2N1cnJlZCBvbiB0aGlzIG1lbW9yeSBjb250cm9sbGVyLiBJZgorCQlwYW5pY19vbl91ZSBpcyBzZXQsIHRoaXMgY291bnRlciB3aWxsIG5vdCBoYXZlIGEgY2hhbmNlIHRvCisJCWluY3JlbWVudCwgc2luY2UgRURBQyB3aWxsIHBhbmljIHRoZSBzeXN0ZW0KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vZWRhYy9tYy9tYyovdWVfbm9pbmZvX2NvdW50CitEYXRlOgkJSmFudWFyeSAyMDA2CitDb250YWN0OglsaW51eC1lZGFjQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CVRoaXMgYXR0cmlidXRlIGZpbGUgZGlzcGxheXMgdGhlIG51bWJlciBvZiBVRXMgdGhhdCBoYXZlCisJCW9jY3VycmVkIG9uIHRoaXMgbWVtb3J5IGNvbnRyb2xsZXIgd2l0aCBubyBpbmZvcm1hdGlvbiBhcyB0bworCQl3aGljaCBESU1NIHNsb3QgaXMgaGF2aW5nIGVycm9ycy4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vZWRhYy9tYy9tYyovY2VfY291bnQKK0RhdGU6CQlKYW51YXJ5IDIwMDYKK0NvbnRhY3Q6CWxpbnV4LWVkYWNAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoJVGhpcyBhdHRyaWJ1dGUgZmlsZSBkaXNwbGF5cyB0aGUgdG90YWwgY291bnQgb2YgY29ycmVjdGFibGUKKwkJZXJyb3JzIHRoYXQgaGF2ZSBvY2N1cnJlZCBvbiB0aGlzIG1lbW9yeSBjb250cm9sbGVyLiBUaGlzCisJCWNvdW50IGlzIHZlcnkgaW1wb3J0YW50IHRvIGV4YW1pbmUuIENFcyBwcm92aWRlIGVhcmx5CisJCWluZGljYXRpb25zIHRoYXQgYSBESU1NIGlzIGJlZ2lubmluZyB0byBmYWlsLiBUaGlzIGNvdW50CisJCWZpZWxkIHNob3VsZCBiZSBtb25pdG9yZWQgZm9yIG5vbi16ZXJvIHZhbHVlcyBhbmQgcmVwb3J0CisJCXN1Y2ggaW5mb3JtYXRpb24gdG8gdGhlIHN5c3RlbSBhZG1pbmlzdHJhdG9yLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS9lZGFjL21jL21jKi9jZV9ub2luZm9fY291bnQKK0RhdGU6CQlKYW51YXJ5IDIwMDYKK0NvbnRhY3Q6CWxpbnV4LWVkYWNAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoJVGhpcyBhdHRyaWJ1dGUgZmlsZSBkaXNwbGF5cyB0aGUgbnVtYmVyIG9mIENFcyB0aGF0CisJCWhhdmUgb2NjdXJyZWQgb24gdGhpcyBtZW1vcnkgY29udHJvbGxlciB3aGVyZXdpdGggbm8KKwkJaW5mb3JtYXRpb24gYXMgdG8gd2hpY2ggRElNTSBzbG90IGlzIGhhdmluZyBlcnJvcnMuIE1lbW9yeSBpcworCQloYW5kaWNhcHBlZCwgYnV0IG9wZXJhdGlvbmFsLCB5ZXQgbm8gaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlCisJCXRvIGluZGljYXRlIHdoaWNoIHNsb3QgdGhlIGZhaWxpbmcgbWVtb3J5IGlzIGluLiBUaGlzIGNvdW50CisJCWZpZWxkIHNob3VsZCBiZSBhbHNvIGJlIG1vbml0b3JlZCBmb3Igbm9uLXplcm8gdmFsdWVzLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS9lZGFjL21jL21jKi9zZHJhbV9zY3J1Yl9yYXRlCitEYXRlOgkJRmVicnVhcnkgMjAwNworQ29udGFjdDoJbGludXgtZWRhY0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOglSZWFkL1dyaXRlIGF0dHJpYnV0ZSBmaWxlIHRoYXQgY29udHJvbHMgbWVtb3J5IHNjcnViYmluZy4KKwkJVGhlIHNjcnViYmluZyByYXRlIHVzZWQgYnkgdGhlIG1lbW9yeSBjb250cm9sbGVyIGlzIHNldCBieQorCQl3cml0aW5nIGEgbWluaW11bSBiYW5kd2lkdGggaW4gYnl0ZXMvc2VjIHRvIHRoZSBhdHRyaWJ1dGUgZmlsZS4KKwkJVGhlIHJhdGUgd2lsbCBiZSB0cmFuc2xhdGVkIHRvIGFuIGludGVybmFsIHZhbHVlIHRoYXQgZ2l2ZXMgYXQKKwkJbGVhc3QgdGhlIHNwZWNpZmllZCByYXRlLgorCQlSZWFkaW5nIHRoZSBmaWxlIHdpbGwgcmV0dXJuIHRoZSBhY3R1YWwgc2NydWJiaW5nIHJhdGUgZW1wbG95ZWQuCisJCUlmIGNvbmZpZ3VyYXRpb24gZmFpbHMgb3IgbWVtb3J5IHNjcnViYmluZyBpcyBub3QgaW1wbGVtZW50ZWQsCisJCXRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIGZpbGUgd2lsbCBiZSAtMS4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vZWRhYy9tYy9tYyovbWF4X2xvY2F0aW9uCitEYXRlOgkJQXByaWwgMjAxMgorQ29udGFjdDoJTWF1cm8gQ2FydmFsaG8gQ2hlaGFiIDxtLmNoZWhhYkBzYW1zdW5nLmNvbT4KKwkJbGludXgtZWRhY0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOglUaGlzIGF0dHJpYnV0ZSBmaWxlIGRpc3BsYXlzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGFzdAorCQlhdmFpbGFibGUgbWVtb3J5IHNsb3QgaW4gdGhpcyBtZW1vcnkgY29udHJvbGxlci4gSXQgaXMgdXNlZCBieQorCQl1c2Vyc3BhY2UgdG9vbHMgaW4gb3JkZXIgdG8gZGlzcGxheSB0aGUgbWVtb3J5IGZpbGxpbmcgbGF5b3V0LgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS9lZGFjL21jL21jKi8oZGltbXxyYW5rKSovc2l6ZQorRGF0ZToJCUFwcmlsIDIwMTIKK0NvbnRhY3Q6CU1hdXJvIENhcnZhbGhvIENoZWhhYiA8bS5jaGVoYWJAc2Ftc3VuZy5jb20+CisJCWxpbnV4LWVkYWNAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoJVGhpcyBhdHRyaWJ1dGUgZmlsZSB3aWxsIGRpc3BsYXkgdGhlIHNpemUgb2YgZGltbSBvciByYW5rLgorCQlGb3IgZGltbSovc2l6ZSwgdGhpcyBpcyB0aGUgc2l6ZSwgaW4gTUIgb2YgdGhlIERJTU0gbWVtb3J5CisJCXN0aWNrLiBGb3IgcmFuayovc2l6ZSwgdGhpcyBpcyB0aGUgc2l6ZSwgaW4gTUIgZm9yIG9uZSByYW5rCisJCW9mIHRoZSBESU1NIG1lbW9yeSBzdGljay4gT24gc2luZ2xlIHJhbmsgbWVtb3JpZXMgKDFSKSwgdGhpcworCQlpcyBhbHNvIHRoZSB0b3RhbCBzaXplIG9mIHRoZSBkaW1tLiBPbiBkdWFsIHJhbmsgKDJSKSBtZW1vcmllcywKKwkJdGhpcyBpcyBoYWxmIHRoZSBzaXplIG9mIHRoZSB0b3RhbCBESU1NIG1lbW9yaWVzLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS9lZGFjL21jL21jKi8oZGltbXxyYW5rKSovZGltbV9kZXZfdHlwZQorRGF0ZToJCUFwcmlsIDIwMTIKK0NvbnRhY3Q6CU1hdXJvIENhcnZhbGhvIENoZWhhYiA8bS5jaGVoYWJAc2Ftc3VuZy5jb20+CisJCWxpbnV4LWVkYWNAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoJVGhpcyBhdHRyaWJ1dGUgZmlsZSB3aWxsIGRpc3BsYXkgd2hhdCB0eXBlIG9mIERSQU0gZGV2aWNlIGlzCisJCWJlaW5nIHV0aWxpemVkIG9uIHRoaXMgRElNTSAoeDEsIHgyLCB4NCwgeDgsIC4uLikuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvc3lzdGVtL2VkYWMvbWMvbWMqLyhkaW1tfHJhbmspKi9kaW1tX2VkYWNfbW9kZQorRGF0ZToJCUFwcmlsIDIwMTIKK0NvbnRhY3Q6CU1hdXJvIENhcnZhbGhvIENoZWhhYiA8bS5jaGVoYWJAc2Ftc3VuZy5jb20+CisJCWxpbnV4LWVkYWNAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoJVGhpcyBhdHRyaWJ1dGUgZmlsZSB3aWxsIGRpc3BsYXkgd2hhdCB0eXBlIG9mIEVycm9yIGRldGVjdGlvbgorCQlhbmQgY29ycmVjdGlvbiBpcyBiZWluZyB1dGlsaXplZC4gRm9yIGV4YW1wbGU6IFM0RUNENEVEIHdvdWxkCisJCW1lYW4gYSBDaGlwa2lsbCB3aXRoIHg0IERSQU0uCisKK1doYXQ6CQkvc3lzL2RldmljZXMvc3lzdGVtL2VkYWMvbWMvbWMqLyhkaW1tfHJhbmspKi9kaW1tX2xhYmVsCitEYXRlOgkJQXByaWwgMjAxMgorQ29udGFjdDoJTWF1cm8gQ2FydmFsaG8gQ2hlaGFiIDxtLmNoZWhhYkBzYW1zdW5nLmNvbT4KKwkJbGludXgtZWRhY0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOglUaGlzIGNvbnRyb2wgZmlsZSBhbGxvd3MgdGhpcyBESU1NIHRvIGhhdmUgYSBsYWJlbCBhc3NpZ25lZAorCQl0byBpdC4gV2l0aCB0aGlzIGxhYmVsIGluIHRoZSBtb2R1bGUsIHdoZW4gZXJyb3JzIG9jY3VyCisJCXRoZSBvdXRwdXQgY2FuIHByb3ZpZGUgdGhlIERJTU0gbGFiZWwgaW4gdGhlIHN5c3RlbSBsb2cuCisJCVRoaXMgYmVjb21lcyB2aXRhbCBmb3IgcGFuaWMgZXZlbnRzIHRvIGlzb2xhdGUgdGhlCisJCWNhdXNlIG9mIHRoZSBVRSBldmVudC4KKwkJRElNTSBMYWJlbHMgbXVzdCBiZSBhc3NpZ25lZCBhZnRlciBib290aW5nLCB3aXRoIGluZm9ybWF0aW9uCisJCXRoYXQgY29ycmVjdGx5IGlkZW50aWZpZXMgdGhlIHBoeXNpY2FsIHNsb3Qgd2l0aCBpdHMKKwkJc2lsayBzY3JlZW4gbGFiZWwuIFRoaXMgaW5mb3JtYXRpb24gaXMgY3VycmVudGx5IHZlcnkKKwkJbW90aGVyYm9hcmQgc3BlY2lmaWMgYW5kIGRldGVybWluYXRpb24gb2YgdGhpcyBpbmZvcm1hdGlvbgorCQltdXN0IG9jY3VyIGluIHVzZXJsYW5kIGF0IHRoaXMgdGltZS4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vZWRhYy9tYy9tYyovKGRpbW18cmFuaykqL2RpbW1fbG9jYXRpb24KK0RhdGU6CQlBcHJpbCAyMDEyCitDb250YWN0OglNYXVybyBDYXJ2YWxobyBDaGVoYWIgPG0uY2hlaGFiQHNhbXN1bmcuY29tPgorCQlsaW51eC1lZGFjQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CVRoaXMgYXR0cmlidXRlIGZpbGUgd2lsbCBkaXNwbGF5IHRoZSBsb2NhdGlvbiAoY3Nyb3cvY2hhbm5lbCwKKwkJYnJhbmNoL2NoYW5uZWwvc2xvdCBvciBjaGFubmVsL3Nsb3QpIG9mIHRoZSBkaW1tIG9yIHJhbmsuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvc3lzdGVtL2VkYWMvbWMvbWMqLyhkaW1tfHJhbmspKi9kaW1tX21lbV90eXBlCitEYXRlOgkJQXByaWwgMjAxMgorQ29udGFjdDoJTWF1cm8gQ2FydmFsaG8gQ2hlaGFiIDxtLmNoZWhhYkBzYW1zdW5nLmNvbT4KKwkJbGludXgtZWRhY0B2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOglUaGlzIGF0dHJpYnV0ZSBmaWxlIHdpbGwgZGlzcGxheSB3aGF0IHR5cGUgb2YgbWVtb3J5IGlzCisJCWN1cnJlbnRseSBvbiB0aGlzIGNzcm93LiBOb3JtYWxseSwgZWl0aGVyIGJ1ZmZlcmVkIG9yCisJCXVuYnVmZmVyZWQgbWVtb3J5IChmb3IgZXhhbXBsZSwgVW5idWZmZXJlZC1ERFIzKS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcy1maXJtd2FyZV9ub2RlIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLWZpcm13YXJlX25vZGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZiYWRjOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcy1maXJtd2FyZV9ub2RlCkBAIC0wLDAgKzEsMTcgQEAKK1doYXQ6CQkvc3lzL2RldmljZXMvLi4uL2Zpcm13YXJlX25vZGUvCitEYXRlOgkJU2VwdGVtYmVyIDIwMTIKK0NvbnRhY3Q6CTw+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvZGV2aWNlcy8uLi4vZmlybXdhcmVfbm9kZSBkaXJlY3RvcnkgY29udGFpbnMgYXR0cmlidXRlcworCQlhbGxvd2luZyB0aGUgdXNlciBzcGFjZSB0byBjaGVjayBhbmQgbW9kaWZ5IHNvbWUgZmlybXdhcmUKKwkJcmVsYXRlZCBwcm9wZXJ0aWVzIG9mIGdpdmVuIGRldmljZS4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy8uLi4vZmlybXdhcmVfbm9kZS9kZXNjcmlwdGlvbgorRGF0ZToJCVNlcHRlbWJlciAyMDEyCitDb250YWN0OglMYW5jZSBPcnRpeiA8bGFuY2Uub3J0aXpAaHAuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2RldmljZXMvLi4uL2Zpcm13YXJlL2Rlc2NyaXB0aW9uIGF0dHJpYnV0ZSBjb250YWlucyBhIHN0cmluZworCQl0aGF0IGRlc2NyaWJlcyB0aGUgZGV2aWNlIGFzIHByb3ZpZGVkIGJ5IHRoZSBfU1RSIG1ldGhvZCBpbiB0aGUgQUNQSQorCQluYW1lc3BhY2UuICBUaGlzIGF0dHJpYnV0ZSBpcyByZWFkLW9ubHkuICBJZiB0aGUgZGV2aWNlIGRvZXMgbm90IGhhdmUKKwkJYW4gX1NUUiBtZXRob2QgYXNzb2NpYXRlZCB3aXRoIGl0IGluIHRoZSBBQ1BJIG5hbWVzcGFjZSwgdGhpcworCQlhdHRyaWJ1dGUgaXMgbm90IHByZXNlbnQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtbHBzc19sdHIgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtbHBzc19sdHIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE5Mjk4ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcy1scHNzX2x0cgpAQCAtMCwwICsxLDQ0IEBACitXaGF0OgkJL3N5cy9kZXZpY2VzLy4uLi9scHNzX2x0ci8KK0RhdGU6CQlNYXJjaCAyMDEzCitDb250YWN0OglSYWZhZWwgSi4gV3lzb2NraSA8cmFmYWVsLmoud3lzb2NraUBpbnRlbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvZGV2aWNlcy8uLi4vbHBzc19sdHIvIGRpcmVjdG9yeSBpcyBvbmx5IHByZXNlbnQgZm9yCisJCWRldmljZXMgaW5jbHVkZWQgaW50byB0aGUgSW50ZWwgTHlueHBvaW50IExvdyBQb3dlciBTdWJzeXN0ZW0KKwkJKExQU1MpLiAgSWYgcHJlc2VudCwgaXQgY29udGFpbnMgYXR0cmlidXRlcyBjb250YWluaW5nIHRoZSBMVFIKKwkJbW9kZSBhbmQgdGhlIHZhbHVlcyBvZiBMVFIgcmVnaXN0ZXJzIG9mIHRoZSBkZXZpY2UuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvLi4uL2xwc3NfbHRyL2x0cl9tb2RlCitEYXRlOgkJTWFyY2ggMjAxMworQ29udGFjdDoJUmFmYWVsIEouIFd5c29ja2kgPHJhZmFlbC5qLnd5c29ja2lAaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2RldmljZXMvLi4uL2xwc3NfbHRyL2x0cl9tb2RlIGF0dHJpYnV0ZSBjb250YWlucyBhbgorCQlpbnRlZ2VyIG51bWJlciAoMCBvciAxKSBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHRoZSBkZXZpY2VzJworCQlMVFIgZnVuY3Rpb25hbGl0eSBpcyB3b3JraW5nIGluIHRoZSBzb2Z0d2FyZSBtb2RlICgxKS4KKworCQlUaGlzIGF0dHJpYnV0ZSBpcyByZWFkLW9ubHkuICBJZiB0aGUgZGV2aWNlJ3MgcnVudGltZSBQTSBzdGF0dXMKKwkJaXMgbm90ICJhY3RpdmUiLCBhdHRlbXB0cyB0byByZWFkIGZyb20gdGhpcyBhdHRyaWJ1dGUgY2F1c2UKKwkJLUVBR0FJTiB0byBiZSByZXR1cm5lZC4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy8uLi4vbHBzc19sdHIvYXV0b19sdHIKK0RhdGU6CQlNYXJjaCAyMDEzCitDb250YWN0OglSYWZhZWwgSi4gV3lzb2NraSA8cmFmYWVsLmoud3lzb2NraUBpbnRlbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvZGV2aWNlcy8uLi4vbHBzc19sdHIvYXV0b19sdHIgYXR0cmlidXRlIGNvbnRhaW5zIHRoZQorCQljdXJyZW50IHZhbHVlIG9mIHRoZSBkZXZpY2UncyBBVVRPX0xUUiByZWdpc3RlciAocmF3KQorCQlyZXByZXNlbnRlZCBhcyBhbiA4LWRpZ2l0IGhleGFkZWNpbWFsIG51bWJlci4KKworCQlUaGlzIGF0dHJpYnV0ZSBpcyByZWFkLW9ubHkuICBJZiB0aGUgZGV2aWNlJ3MgcnVudGltZSBQTSBzdGF0dXMKKwkJaXMgbm90ICJhY3RpdmUiLCBhdHRlbXB0cyB0byByZWFkIGZyb20gdGhpcyBhdHRyaWJ1dGUgY2F1c2UKKwkJLUVBR0FJTiB0byBiZSByZXR1cm5lZC4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy8uLi4vbHBzc19sdHIvc3dfbHRyCitEYXRlOgkJTWFyY2ggMjAxMworQ29udGFjdDoJUmFmYWVsIEouIFd5c29ja2kgPHJhZmFlbC5qLnd5c29ja2lAaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2RldmljZXMvLi4uL2xwc3NfbHRyL2F1dG9fbHRyIGF0dHJpYnV0ZSBjb250YWlucyB0aGUKKwkJY3VycmVudCB2YWx1ZSBvZiB0aGUgZGV2aWNlJ3MgU1dfTFRSIHJlZ2lzdGVyIChyYXcpIHJlcHJlc2VudGVkCisJCWFzIGFuIDgtZGlnaXQgaGV4YWRlY2ltYWwgbnVtYmVyLgorCisJCVRoaXMgYXR0cmlidXRlIGlzIHJlYWQtb25seS4gIElmIHRoZSBkZXZpY2UncyBydW50aW1lIFBNIHN0YXR1cworCQlpcyBub3QgImFjdGl2ZSIsIGF0dGVtcHRzIHRvIHJlYWQgZnJvbSB0aGlzIGF0dHJpYnV0ZSBjYXVzZQorCQktRUFHQUlOIHRvIGJlIHJldHVybmVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLW1lbW9yeSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcy1tZW1vcnkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVlZjNiNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcy1tZW1vcnkKQEAgLTAsMCArMSw5MyBAQAorV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5CitEYXRlOgkJSnVuZSAyMDA4CitDb250YWN0OglCYWRhcmkgUHVsYXZhcnR5IDxwYmFkYXJpQHVzLmlibS5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5IGNvbnRhaW5zIGEgc25hcHNob3Qgb2YgdGhlCisJCWludGVybmFsIHN0YXRlIG9mIHRoZSBrZXJuZWwgbWVtb3J5IGJsb2Nrcy4gRmlsZXMgY291bGQgYmUKKwkJYWRkZWQgb3IgcmVtb3ZlZCBkeW5hbWljYWxseSB0byByZXByZXNlbnQgaG90LWFkZC9yZW1vdmUKKwkJb3BlcmF0aW9ucy4KK1VzZXJzOgkJaG90cGx1ZyBtZW1vcnkgYWRkL3JlbW92ZSB0b29scworCQlodHRwOi8vd3d3LmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvd2lraXMvZGlzcGxheS9MaW51eFAvcG93ZXJwYy11dGlscworCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS9tZW1vcnkvbWVtb3J5WC9yZW1vdmFibGUKK0RhdGU6CQlKdW5lIDIwMDgKK0NvbnRhY3Q6CUJhZGFyaSBQdWxhdmFydHkgPHBiYWRhcmlAdXMuaWJtLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgZmlsZSAvc3lzL2RldmljZXMvc3lzdGVtL21lbW9yeS9tZW1vcnlYL3JlbW92YWJsZQorCQlpbmRpY2F0ZXMgd2hldGhlciB0aGlzIG1lbW9yeSBibG9jayBpcyByZW1vdmFibGUgb3Igbm90LgorCQlUaGlzIGlzIHVzZWZ1bCBmb3IgYSB1c2VyLWxldmVsIGFnZW50IHRvIGRldGVybWluZQorCQlpZGVudGlmeSByZW1vdmFibGUgc2VjdGlvbnMgb2YgdGhlIG1lbW9yeSBiZWZvcmUgYXR0ZW1wdGluZworCQlwb3RlbnRpYWxseSBleHBlbnNpdmUgaG90LXJlbW92ZSBtZW1vcnkgb3BlcmF0aW9uCitVc2VyczoJCWhvdHBsdWcgbWVtb3J5IHJlbW92ZSB0b29scworCQlodHRwOi8vd3d3LmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvd2lraXMvZGlzcGxheS9MaW51eFAvcG93ZXJwYy11dGlscwkKKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L21lbW9yeVgvcGh5c19kZXZpY2UKK0RhdGU6CQlTZXB0ZW1iZXIgMjAwOAorQ29udGFjdDoJQmFkYXJpIFB1bGF2YXJ0eSA8cGJhZGFyaUB1cy5pYm0uY29tPgorRGVzY3JpcHRpb246CisJCVRoZSBmaWxlIC9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L21lbW9yeVgvcGh5c19kZXZpY2UKKwkJaXMgcmVhZC1vbmx5IGFuZCBpcyBkZXNpZ25lZCB0byBzaG93IHRoZSBuYW1lIG9mIHBoeXNpY2FsCisJCW1lbW9yeSBkZXZpY2UuICBJbXBsZW1lbnRhdGlvbiBpcyBjdXJyZW50bHkgaW5jb21wbGV0ZS4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L21lbW9yeVgvcGh5c19pbmRleAorRGF0ZToJCVNlcHRlbWJlciAyMDA4CitDb250YWN0OglCYWRhcmkgUHVsYXZhcnR5IDxwYmFkYXJpQHVzLmlibS5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIGZpbGUgL3N5cy9kZXZpY2VzL3N5c3RlbS9tZW1vcnkvbWVtb3J5WC9waHlzX2luZGV4CisJCWlzIHJlYWQtb25seSBhbmQgY29udGFpbnMgdGhlIHNlY3Rpb24gSUQgaW4gaGV4YWRlY2ltYWwKKwkJd2hpY2ggaXMgZXF1aXZhbGVudCB0byBkZWNpbWFsIFggY29udGFpbmVkIGluIHRoZQorCQltZW1vcnkgc2VjdGlvbiBkaXJlY3RvcnkgbmFtZS4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L21lbW9yeVgvc3RhdGUKK0RhdGU6CQlTZXB0ZW1iZXIgMjAwOAorQ29udGFjdDoJQmFkYXJpIFB1bGF2YXJ0eSA8cGJhZGFyaUB1cy5pYm0uY29tPgorRGVzY3JpcHRpb246CisJCVRoZSBmaWxlIC9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L21lbW9yeVgvc3RhdGUKKwkJaXMgcmVhZC13cml0ZS4gIFdoZW4gcmVhZCwgaXRzIGNvbnRlbnRzIHNob3cgdGhlCisJCW9ubGluZS9vZmZsaW5lIHN0YXRlIG9mIHRoZSBtZW1vcnkgc2VjdGlvbi4gIFdoZW4gd3JpdHRlbiwKKwkJcm9vdCBjYW4gdG9nZ2xlIHRoZSB0aGUgb25saW5lL29mZmxpbmUgc3RhdGUgb2YgYSByZW1vdmFibGUKKwkJbWVtb3J5IHNlY3Rpb24gKHNlZSByZW1vdmFibGUgZmlsZSBkZXNjcmlwdGlvbiBhYm92ZSkKKwkJdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kcy4KKwkJIyBlY2hvIG9ubGluZSA+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L21lbW9yeVgvc3RhdGUKKwkJIyBlY2hvIG9mZmxpbmUgPiAvc3lzL2RldmljZXMvc3lzdGVtL21lbW9yeS9tZW1vcnlYL3N0YXRlCisKKwkJRm9yIGV4YW1wbGUsIGlmIC9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L21lbW9yeTIyL3JlbW92YWJsZQorCQljb250YWlucyBhIHZhbHVlIG9mIDEgYW5kCisJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L21lbW9yeTIyL3N0YXRlIGNvbnRhaW5zIHRoZQorCQlzdHJpbmcgIm9ubGluZSIgdGhlIGZvbGxvd2luZyBjb21tYW5kIGNhbiBiZSBleGVjdXRlZCBieQorCQlieSByb290IHRvIG9mZmxpbmUgdGhhdCBzZWN0aW9uLgorCQkjIGVjaG8gb2ZmbGluZSA+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L21lbW9yeTIyL3N0YXRlCitVc2VyczoJCWhvdHBsdWcgbWVtb3J5IHJlbW92ZSB0b29scworCQlodHRwOi8vd3d3LmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvd2lraXMvZGlzcGxheS9MaW51eFAvcG93ZXJwYy11dGlscworCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2RldmljZXMvc3lzdGVtL21lbW9yeS9tZW1vcnlYL3ZhbGlkX3pvbmVzCitEYXRlOiAgICAgICAgICAgSnVseSAyMDE0CitDb250YWN0OglaaGFuZyBaaGVuIDx6aGVuemhhbmcuemhhbmdAaHVhd2VpLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgZmlsZSAvc3lzL2RldmljZXMvc3lzdGVtL21lbW9yeS9tZW1vcnlYL3ZhbGlkX3pvbmVzCWlzCisJCXJlYWQtb25seSBhbmQgaXMgZGVzaWduZWQgdG8gc2hvdyB3aGljaCB6b25lIHRoaXMgbWVtb3J5CisJCWJsb2NrIGNhbiBiZSBvbmxpbmVkIHRvLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS9tZW1vcnlYL25vZGVZCitEYXRlOgkJT2N0b2JlciAyMDA5CitDb250YWN0OglMaW51eCBNZW1vcnkgTWFuYWdlbWVudCBsaXN0IDxsaW51eC1tbUBrdmFjay5vcmc+CitEZXNjcmlwdGlvbjoKKwkJV2hlbiBDT05GSUdfTlVNQSBpcyBlbmFibGVkLCBhIHN5bWJvbGljIGxpbmsgdGhhdAorCQlwb2ludHMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgTlVNQSBub2RlIGRpcmVjdG9yeS4KKworCQlGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBzeW1ib2xpYyBsaW5rIGlzIGNyZWF0ZWQgZm9yCisJCW1lbW9yeSBzZWN0aW9uIDkgb24gbm9kZTA6CisJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L21lbW9yeTkvbm9kZTAgLT4gLi4vLi4vbm9kZS9ub2RlMAorCisKK1doYXQ6CQkvc3lzL2RldmljZXMvc3lzdGVtL25vZGUvbm9kZVgvbWVtb3J5WQorRGF0ZToJCVNlcHRlbWJlciAyMDA4CitDb250YWN0OglHYXJ5IEhhZGUgPGdhcnloYWRlQHVzLmlibS5jb20+CitEZXNjcmlwdGlvbjoKKwkJV2hlbiBDT05GSUdfTlVNQSBpcyBlbmFibGVkCisJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vbm9kZS9ub2RlWC9tZW1vcnlZIGlzIGEgc3ltYm9saWMgbGluayB0aGF0CisJCXBvaW50cyB0byB0aGUgY29ycmVzcG9uZGluZyAvc3lzL2RldmljZXMvc3lzdGVtL21lbW9yeS9tZW1vcnlZCisJCW1lbW9yeSBzZWN0aW9uIGRpcmVjdG9yeS4gIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHN5bWJvbGljCisJCWxpbmsgaXMgY3JlYXRlZCBmb3IgbWVtb3J5IHNlY3Rpb24gOSBvbiBub2RlMC4KKwkJL3N5cy9kZXZpY2VzL3N5c3RlbS9ub2RlL25vZGUwL21lbW9yeTkgLT4gLi4vLi4vbWVtb3J5L21lbW9yeTkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcy1tbWMgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtbW1jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhNTBhYjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtbW1jCkBAIC0wLDAgKzEsMjEgQEAKK1doYXQ6CQkvc3lzL2RldmljZXMvLi4uL21tY19ob3N0L21tY1gvbW1jWDpYWFhYL2VuaGFuY2VkX2FyZWFfb2Zmc2V0CitEYXRlOgkJSmFudWFyeSAyMDExCitDb250YWN0OglDaHVhbnhpYW8gRG9uZyA8Y2h1YW54aWFvLmRvbmdAaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCUVuaGFuY2VkIGFyZWEgaXMgYSBuZXcgZmVhdHVyZSBkZWZpbmVkIGluIGVNTUM0LjQgc3RhbmRhcmQuCisJCWVNTUM0LjQgb3IgbGF0ZXIgY2FyZCBjYW4gc3VwcG9ydCBzdWNoIGZlYXR1cmUuIFRoaXMga2luZCBvZgorCQlhcmVhIGNhbiBoZWxwIHRvIGltcHJvdmUgdGhlIGNhcmQgcGVyZm9ybWFuY2UuIElmIHRoZSBmZWF0dXJlCisJCWlzIGVuYWJsZWQsIHRoaXMgYXR0cmlidXRlIHdpbGwgaW5kaWNhdGUgdGhlIHN0YXJ0IGFkZHJlc3Mgb2YKKwkJZW5oYW5jZWQgZGF0YSBhcmVhLiBJZiBub3QsIHRoaXMgYXR0cmlidXRlIHdpbGwgYmUgLUVJTlZBTC4KKwkJVW5pdCBCeXRlLiBGb3JtYXQgZGVjaW1hbC4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy8uLi4vbW1jX2hvc3QvbW1jWC9tbWNYOlhYWFgvZW5oYW5jZWRfYXJlYV9zaXplCitEYXRlOgkJSmFudWFyeSAyMDExCitDb250YWN0OglDaHVhbnhpYW8gRG9uZyA8Y2h1YW54aWFvLmRvbmdAaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCUVuaGFuY2VkIGFyZWEgaXMgYSBuZXcgZmVhdHVyZSBkZWZpbmVkIGluIGVNTUM0LjQgc3RhbmRhcmQuCisJCWVNTUM0LjQgb3IgbGF0ZXIgY2FyZCBjYW4gc3VwcG9ydCBzdWNoIGZlYXR1cmUuIFRoaXMga2luZCBvZgorCQlhcmVhIGNhbiBoZWxwIHRvIGltcHJvdmUgdGhlIGNhcmQgcGVyZm9ybWFuY2UuIElmIHRoZSBmZWF0dXJlCisJCWlzIGVuYWJsZWQsIHRoaXMgYXR0cmlidXRlIHdpbGwgaW5kaWNhdGUgdGhlIHNpemUgb2YgZW5oYW5jZWQKKwkJZGF0YSBhcmVhLiBJZiBub3QsIHRoaXMgYXR0cmlidXRlIHdpbGwgYmUgLUVJTlZBTC4KKwkJVW5pdCBLQnl0ZS4gRm9ybWF0IGRlY2ltYWwuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtb25saW5lIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLW9ubGluZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTkwMDI2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLW9ubGluZQpAQCAtMCwwICsxLDIwIEBACitXaGF0OgkJL3N5cy9kZXZpY2VzLy4uLi9vbmxpbmUKK0RhdGU6CQlBcHJpbCAyMDEzCitDb250YWN0OglSYWZhZWwgSi4gV3lzb2NraSA8cmFmYWVsLmoud3lzb2NraUBpbnRlbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvZGV2aWNlcy8uLi4vb25saW5lIGF0dHJpYnV0ZSBpcyBvbmx5IHByZXNlbnQgZm9yCisJCWRldmljZXMgd2hvc2UgYnVzIHR5cGVzIHByb3ZpZGUgLm9ubGluZSgpIGFuZCAub2ZmbGluZSgpCisJCWNhbGxiYWNrcy4gIFRoZSBudW1iZXIgcmVhZCBmcm9tIGl0ICgwIG9yIDEpIHJlZmxlY3RzIHRoZSB2YWx1ZQorCQlvZiB0aGUgZGV2aWNlJ3MgJ29mZmxpbmUnIGZpZWxkLiAgSWYgdGhhdCBudW1iZXIgaXMgMSBhbmQgJzAnCisJCShvciAnbicsIG9yICdOJykgaXMgd3JpdHRlbiB0byB0aGlzIGZpbGUsIHRoZSBkZXZpY2UgYnVzIHR5cGUncworCQkub2ZmbGluZSgpIGNhbGxiYWNrIGlzIGV4ZWN1dGVkIGZvciB0aGUgZGV2aWNlIGFuZCAoaWYKKwkJc3VjY2Vzc2Z1bCkgaXRzICdvZmZsaW5lJyBmaWVsZCBpcyB1cGRhdGVkIGFjY29yZGluZ2x5LiAgSW4KKwkJdHVybiwgaWYgdGhhdCBudW1iZXIgaXMgMCBhbmQgJzEnIChvciAneScsIG9yICdZJykgaXMgd3JpdHRlbiB0bworCQl0aGlzIGZpbGUsIHRoZSBkZXZpY2UgYnVzIHR5cGUncyAub25saW5lKCkgY2FsbGJhY2sgaXMgZXhlY3V0ZWQKKwkJZm9yIHRoZSBkZXZpY2UgYW5kIChpZiBzdWNjZXNzZnVsKSBpdHMgJ29mZmxpbmUnIGZpZWxkIGlzCisJCXVwZGF0ZWQgYXMgYXBwcm9wcmlhdGUuCisKKwkJQWZ0ZXIgYSBzdWNjZXNzZnVsIGV4ZWN1dGlvbiBvZiB0aGUgYnVzIHR5cGUncyAub2ZmbGluZSgpCisJCWNhbGxiYWNrIHRoZSBkZXZpY2UgY2Fubm90IGJlIHVzZWQgZm9yIGFueSBwdXJwb3NlIHVudGlsIGVpdGhlcgorCQlpdCBpcyByZW1vdmVkIChpLmUuIGRldmljZV9kZWwoKSBpcyBjYWxsZWQgZm9yIGl0KSwgb3IgaXRzIGJ1cworCQl0eXBlJ3MgLm9ubGluZSgpIGlzIGV4ZXVjdGVkIHN1Y2Nlc3NmdWxseS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcy1wbGF0Zm9ybS1fVURDXy1nYWRnZXQgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtcGxhdGZvcm0tX1VEQ18tZ2FkZ2V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1NDhlYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtcGxhdGZvcm0tX1VEQ18tZ2FkZ2V0CkBAIC0wLDAgKzEsMjEgQEAKK1doYXQ6CQkvc3lzL2RldmljZXMvcGxhdGZvcm0vX1VEQ18vZ2FkZ2V0L3N1c3BlbmRlZAorRGF0ZToJCUFwcmlsIDIwMTAKK0NvbnRhY3Q6CUZhYmllbiBDaG91dGVhdSA8ZmFiaWVuLmNob3V0ZWF1QGJhcmNvLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlTaG93IHRoZSBzdXNwZW5kIHN0YXRlIG9mIGFuIFVTQiBjb21wb3NpdGUgZ2FkZ2V0LgorCQkxIC0+IHN1c3BlbmRlZAorCQkwIC0+IHJlc3VtZWQKKworCQkoX1VEQ18gaXMgdGhlIG5hbWUgb2YgdGhlIFVTQiBEZXZpY2UgQ29udHJvbGxlciBkcml2ZXIpCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2RldmljZXMvcGxhdGZvcm0vX1VEQ18vZ2FkZ2V0L2dhZGdldC1sdW5YL25vZnVhCitEYXRlOiAgICAgICAgICAgSnVseSAyMDEwCitDb250YWN0OiAgICAgICAgQW5keSBTaGV2Y2hlbmtvIDxhbmR5LnNoZXZjaGVua29AZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVNob3cgb3Igc2V0IHRoZSByZWFjdGlvbiBvbiB0aGUgRlVBIChGb3JjZSBVbml0IEFjY2VzcykgYml0IGluCisJCXRoZSBTQ1NJIFdSSVRFKDEwLDEyKSBjb21tYW5kcyB3aGVuIGEgZ2FkZ2V0IGluIFVTQiBNYXNzCisJCVN0b3JhZ2UgbW9kZS4KKworCQlQb3NzaWJsZSB2YWx1ZXMgYXJlOgorCQkJMSAtPiBpZ25vcmUgdGhlIEZVQSBmbGFnCisJCQkwIC0+IG9iZXkgdGhlIEZVQSBmbGFnCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtcGxhdGZvcm0tZG9jZzMgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtcGxhdGZvcm0tZG9jZzMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFhMzY3MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcy1wbGF0Zm9ybS1kb2NnMwpAQCAtMCwwICsxLDM0IEBACitXaGF0OgkJL3N5cy9kZXZpY2VzL3BsYXRmb3JtL2RvY2czL2ZbMC0zXV9kcHNbMDFdX2lzX2tleWxvY2tlZAorRGF0ZToJCU5vdmVtYmVyIDIwMTEKK0tlcm5lbFZlcnNpb246CTMuMworQ29udGFjdDoJUm9iZXJ0IEphcnptaWsgPHJvYmVydC5qYXJ6bWlrQGZyZWUuZnI+CitEZXNjcmlwdGlvbjoKKwkJU2hvdyB3aGV0aGVyIHRoZSBmbG9vciAoMCB0byA0KSwgcHJvdGVjdGlvbiBhcmVhICgwIG9yIDEpIGlzCisJCWtleWxvY2tlZC4gRWFjaCBkb2NnMyBjaGlwIChvciBmbG9vcikgaGFzIDIgcHJvdGVjdGlvbiBhcmVhcywKKwkJd2hpY2ggY2FuIGNvdmVyIGFueSBwYXJ0IG9mIGl0LCBibG9jayBhbGlnbmVkLCBjYWxsZWQgRFBTLgorCQlUaGUgcHJvdGVjdGlvbiBoYXMgaW5mb3JtYXRpb24gZW1iZWRkZWQgd2hldGhlciBpdCBibG9ja3MgcmVhZHMsCisJCXdyaXRlcyBvciBib3RoLgorCQlUaGUgcmVzdWx0IGlzOgorCQkwIC0+IHRoZSBEUFMgaXMgbm90IGtleWxvY2tlZAorCQkxIC0+IHRoZSBEUFMgaXMga2V5bG9ja2VkCitVc2VyczoJCU5vbmUgaWRlbnRpZmllZCBzbyBmYXIuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvcGxhdGZvcm0vZG9jZzMvZlswLTNdX2Rwc1swMV1fcHJvdGVjdGlvbl9rZXkKK0RhdGU6CQlOb3ZlbWJlciAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjMKK0NvbnRhY3Q6CVJvYmVydCBKYXJ6bWlrIDxyb2JlcnQuamFyem1pa0BmcmVlLmZyPgorRGVzY3JpcHRpb246CisJCUVudGVyIHRoZSBwcm90ZWN0aW9uIGtleSBmb3IgdGhlIGZsb29yICgwIHRvIDQpLCBwcm90ZWN0aW9uIGFyZWEKKwkJKDAgb3IgMSkuIEVhY2ggZG9jZzMgY2hpcCAob3IgZmxvb3IpIGhhcyAyIHByb3RlY3Rpb24gYXJlYXMsCisJCXdoaWNoIGNhbiBjb3ZlciBhbnkgcGFydCBvZiBpdCwgYmxvY2sgYWxpZ25lZCwgY2FsbGVkIERQUy4KKwkJVGhlIHByb3RlY3Rpb24gaGFzIGluZm9ybWF0aW9uIGVtYmVkZGVkIHdoZXRoZXIgaXQgYmxvY2tzIHJlYWRzLAorCQl3cml0ZXMgb3IgYm90aC4KKwkJVGhlIHByb3RlY3Rpb24ga2V5IGlzIGEgc3RyaW5nIG9mIDggYnl0ZXMgKHZhbHVlIDAtMjU1KS4KKwkJRW50ZXJpbmcgdGhlIGNvcnJlY3QgdmFsdWUgdG9nZ2xlIHRoZSBsb2NrLCBhbmQgY2FuIGJlIG9ic2VydmVkCisJCXRocm91Z2ggZlswLTNdX2Rwc1swMV1faXNfa2V5bG9ja2VkLgorCQlQb3NzaWJsZSB2YWx1ZXMgYXJlOgorCQkJLSA4IGJ5dGVzCisJCVR5cGljYWwgdmFsdWVzIGFyZToKKwkJCS0gIjAwMDAwMDAwIgorCQkJLSAiMTIzNDU2NzgiCitVc2VyczoJCU5vbmUgaWRlbnRpZmllZCBzbyBmYXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtcGxhdGZvcm0tc2hfbW9iaWxlX2xjZGNfZmIgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtcGxhdGZvcm0tc2hfbW9iaWxlX2xjZGNfZmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjEwNzA4MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcy1wbGF0Zm9ybS1zaF9tb2JpbGVfbGNkY19mYgpAQCAtMCwwICsxLDQ0IEBACitXaGF0OgkJL3N5cy9kZXZpY2VzL3BsYXRmb3JtL3NoX21vYmlsZV9sY2RjX2ZiLlswLTNdL2dyYXBoaWNzL2ZiWzAtOV0vb3ZsX2FscGhhCitEYXRlOgkJTWF5IDIwMTIKK0NvbnRhY3Q6CUxhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGZpbGUgaXMgb25seSBhdmFpbGFibGUgb24gZmJbMC05XSBkZXZpY2VzIGNvcnJlc3BvbmRpbmcKKwkJdG8gb3ZlcmxheSBwbGFuZXMuCisKKwkJU3RvcmVzIHRoZSBhbHBoYSBibGVuZGluZyB2YWx1ZSBmb3IgdGhlIG92ZXJsYXkuIFZhbHVlcyByYW5nZQorCQlmcm9tIDAgKHRyYW5zcGFyZW50KSB0byAyNTUgKG9wYXF1ZSkuIFRoZSB2YWx1ZSBpcyBpZ25vcmVkIGlmCisJCXRoZSBtb2RlIGlzIG5vdCBzZXQgdG8gQWxwaGEgQmxlbmRpbmcuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvcGxhdGZvcm0vc2hfbW9iaWxlX2xjZGNfZmIuWzAtM10vZ3JhcGhpY3MvZmJbMC05XS9vdmxfbW9kZQorRGF0ZToJCU1heSAyMDEyCitDb250YWN0OglMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBmaWxlIGlzIG9ubHkgYXZhaWxhYmxlIG9uIGZiWzAtOV0gZGV2aWNlcyBjb3JyZXNwb25kaW5nCisJCXRvIG92ZXJsYXkgcGxhbmVzLgorCisJCVNlbGVjdHMgdGhlIGNvbXBvc2l0aW9uIG1vZGUgZm9yIHRoZSBvdmVybGF5LiBQb3NzaWJsZSB2YWx1ZXMKKwkJYXJlCisKKwkJMCAtIEFscGhhIEJsZW5kaW5nCisJCTEgLSBST1AzCisKK1doYXQ6CQkvc3lzL2RldmljZXMvcGxhdGZvcm0vc2hfbW9iaWxlX2xjZGNfZmIuWzAtM10vZ3JhcGhpY3MvZmJbMC05XS9vdmxfcG9zaXRpb24KK0RhdGU6CQlNYXkgMjAxMgorQ29udGFjdDoJTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgorRGVzY3JpcHRpb246CisJCVRoaXMgZmlsZSBpcyBvbmx5IGF2YWlsYWJsZSBvbiBmYlswLTldIGRldmljZXMgY29ycmVzcG9uZGluZworCQl0byBvdmVybGF5IHBsYW5lcy4KKworCQlTdG9yZXMgdGhlIHgseSBvdmVybGF5IHBvc2l0aW9uIG9uIHRoZSBkaXNwbGF5IGluIHBpeGVscy4gVGhlCisJCXBvc2l0aW9uIGZvcm1hdCBpcyBgWzAtOV0rLFswLTldKycuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvcGxhdGZvcm0vc2hfbW9iaWxlX2xjZGNfZmIuWzAtM10vZ3JhcGhpY3MvZmJbMC05XS9vdmxfcm9wMworRGF0ZToJCU1heSAyMDEyCitDb250YWN0OglMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBmaWxlIGlzIG9ubHkgYXZhaWxhYmxlIG9uIGZiWzAtOV0gZGV2aWNlcyBjb3JyZXNwb25kaW5nCisJCXRvIG92ZXJsYXkgcGxhbmVzLgorCisJCVN0b3JlcyB0aGUgcmFzdGVyIG9wZXJhdGlvbiAoUk9QMykgZm9yIHRoZSBvdmVybGF5LiBWYWx1ZXMKKwkJcmFuZ2UgZnJvbSAwIHRvIDI1NS4gVGhlIHZhbHVlIGlzIGlnbm9yZWQgaWYgdGhlIG1vZGUgaXMgbm90CisJCXNldCB0byBST1AzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLXBvd2VyIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLXBvd2VyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3NmZkZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtcG93ZXIKQEAgLTAsMCArMSwyNzYgQEAKK1doYXQ6CQkvc3lzL2RldmljZXMvLi4uL3Bvd2VyLworRGF0ZToJCUphbnVhcnkgMjAwOQorQ29udGFjdDoJUmFmYWVsIEouIFd5c29ja2kgPHJqd0Byand5c29ja2kubmV0PgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2RldmljZXMvLi4uL3Bvd2VyIGRpcmVjdG9yeSBjb250YWlucyBhdHRyaWJ1dGVzCisJCWFsbG93aW5nIHRoZSB1c2VyIHNwYWNlIHRvIGNoZWNrIGFuZCBtb2RpZnkgc29tZSBwb3dlcgorCQltYW5hZ2VtZW50IHJlbGF0ZWQgcHJvcGVydGllcyBvZiBnaXZlbiBkZXZpY2UuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvLi4uL3Bvd2VyL3dha2V1cAorRGF0ZToJCUphbnVhcnkgMjAwOQorQ29udGFjdDoJUmFmYWVsIEouIFd5c29ja2kgPHJqd0Byand5c29ja2kubmV0PgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2RldmljZXMvLi4uL3Bvd2VyL3dha2V1cCBhdHRyaWJ1dGUgYWxsb3dzIHRoZSB1c2VyCisJCXNwYWNlIHRvIGNoZWNrIGlmIHRoZSBkZXZpY2UgaXMgZW5hYmxlZCB0byB3YWtlIHVwIHRoZSBzeXN0ZW0KKwkJZnJvbSBzbGVlcCBzdGF0ZXMsIHN1Y2ggYXMgdGhlIG1lbW9yeSBzbGVlcCBzdGF0ZSAoc3VzcGVuZCB0bworCQlSQU0pIGFuZCBoaWJlcm5hdGlvbiAoc3VzcGVuZCB0byBkaXNrKSwgYW5kIHRvIGVuYWJsZSBvciBkaXNhYmxlCisJCWl0IHRvIGRvIHRoYXQgYXMgZGVzaXJlZC4KKworCQlTb21lIGRldmljZXMgc3VwcG9ydCAid2FrZXVwIiBldmVudHMsIHdoaWNoIGFyZSBoYXJkd2FyZSBzaWduYWxzCisJCXVzZWQgdG8gYWN0aXZhdGUgdGhlIHN5c3RlbSBmcm9tIGEgc2xlZXAgc3RhdGUuICBTdWNoIGRldmljZXMKKwkJaGF2ZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB0d28gdmFsdWVzIGZvciB0aGUgc3lzZnMgcG93ZXIvd2FrZXVwCisJCWZpbGU6CisKKwkJKyAiZW5hYmxlZFxuIiB0byBpc3N1ZSB0aGUgZXZlbnRzOworCQkrICJkaXNhYmxlZFxuIiBub3QgdG8gZG8gc287CisKKwkJSW4gdGhhdCBjYXNlcyB0aGUgdXNlciBzcGFjZSBjYW4gY2hhbmdlIHRoZSBzZXR0aW5nIHJlcHJlc2VudGVkCisJCWJ5IHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgYnkgd3JpdGluZyBlaXRoZXIgImVuYWJsZWQiLCBvcgorCQkiZGlzYWJsZWQiIHRvIGl0LgorCisJCUZvciB0aGUgZGV2aWNlcyB0aGF0IGFyZSBub3QgY2FwYWJsZSBvZiBnZW5lcmF0aW5nIHN5c3RlbSB3YWtldXAKKwkJZXZlbnRzIHRoaXMgZmlsZSBpcyBub3QgcHJlc2VudC4gIEluIHRoYXQgY2FzZSB0aGUgZGV2aWNlIGNhbm5vdAorCQliZSBlbmFibGVkIHRvIHdha2UgdXAgdGhlIHN5c3RlbSBmcm9tIHNsZWVwIHN0YXRlcy4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy8uLi4vcG93ZXIvY29udHJvbAorRGF0ZToJCUphbnVhcnkgMjAwOQorQ29udGFjdDoJUmFmYWVsIEouIFd5c29ja2kgPHJqd0Byand5c29ja2kubmV0PgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2RldmljZXMvLi4uL3Bvd2VyL2NvbnRyb2wgYXR0cmlidXRlIGFsbG93cyB0aGUgdXNlcgorCQlzcGFjZSB0byBjb250cm9sIHRoZSBydW4tdGltZSBwb3dlciBtYW5hZ2VtZW50IG9mIHRoZSBkZXZpY2UuCisKKwkJQWxsIGRldmljZXMgaGF2ZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB0d28gdmFsdWVzIGZvciB0aGUKKwkJcG93ZXIvY29udHJvbCBmaWxlOgorCisJCSsgImF1dG9cbiIgdG8gYWxsb3cgdGhlIGRldmljZSB0byBiZSBwb3dlciBtYW5hZ2VkIGF0IHJ1biB0aW1lOworCQkrICJvblxuIiB0byBwcmV2ZW50IHRoZSBkZXZpY2UgZnJvbSBiZWluZyBwb3dlciBtYW5hZ2VkOworCisJCVRoZSBkZWZhdWx0IGZvciBhbGwgZGV2aWNlcyBpcyAiYXV0byIsIHdoaWNoIG1lYW5zIHRoYXQgdGhleSBtYXkKKwkJYmUgc3ViamVjdCB0byBhdXRvbWF0aWMgcG93ZXIgbWFuYWdlbWVudCwgZGVwZW5kaW5nIG9uIHRoZWlyCisJCWRyaXZlcnMuICBDaGFuZ2luZyB0aGlzIGF0dHJpYnV0ZSB0byAib24iIHByZXZlbnRzIHRoZSBkcml2ZXIKKwkJZnJvbSBwb3dlciBtYW5hZ2luZyB0aGUgZGV2aWNlIGF0IHJ1biB0aW1lLiAgRG9pbmcgdGhhdCB3aGlsZQorCQl0aGUgZGV2aWNlIGlzIHN1c3BlbmRlZCBjYXVzZXMgaXQgdG8gYmUgd29rZW4gdXAuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvLi4uL3Bvd2VyL2FzeW5jCitEYXRlOgkJSmFudWFyeSAyMDA5CitDb250YWN0OglSYWZhZWwgSi4gV3lzb2NraSA8cmp3QHJqd3lzb2NraS5uZXQ+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvZGV2aWNlcy8uLi4vYXN5bmMgYXR0cmlidXRlIGFsbG93cyB0aGUgdXNlciBzcGFjZSB0bworCQllbmFibGUgb3IgZGlhc2JsZSB0aGUgZGV2aWNlJ3Mgc3VzcGVuZCBhbmQgcmVzdW1lIGNhbGxiYWNrcyB0bworCQliZSBleGVjdXRlZCBhc3luY2hyb25vdXNseSAoaWUuIGluIHNlcGFyYXRlIHRocmVhZHMsIGluIHBhcmFsbGVsCisJCXdpdGggdGhlIG1haW4gc3VzcGVuZC9yZXN1bWUgdGhyZWFkKSBkdXJpbmcgc3lzdGVtLXdpZGUgcG93ZXIKKwkJdHJhbnNpdGlvbnMgKGVnLiBzdXNwZW5kIHRvIFJBTSwgaGliZXJuYXRpb24pLgorCisJCUFsbCBkZXZpY2VzIGhhdmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdHdvIHZhbHVlcyBmb3IgdGhlCisJCXBvd2VyL2FzeW5jIGZpbGU6CisKKwkJKyAiZW5hYmxlZFxuIiB0byBwZXJtaXQgdGhlIGFzeW5jaHJvbm91cyBzdXNwZW5kL3Jlc3VtZTsKKwkJKyAiZGlzYWJsZWRcbiIgdG8gZm9yYmlkIGl0OworCisJCVRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBtYXkgYmUgY2hhbmdlZCBieSB3cml0aW5nIGVpdGhlcgorCQkiZW5hYmxlZCIsIG9yICJkaXNhYmxlZCIgdG8gaXQuCisKKwkJSXQgZ2VuZXJhbGx5IGlzIHVuc2FmZSB0byBwZXJtaXQgdGhlIGFzeW5jaHJvbm91cyBzdXNwZW5kL3Jlc3VtZQorCQlvZiBhIGRldmljZSB1bmxlc3MgaXQgaXMgY2VydGFpbiB0aGF0IGFsbCBvZiB0aGUgUE0gZGVwZW5kZW5jaWVzCisJCW9mIHRoZSBkZXZpY2UgYXJlIGtub3duIHRvIHRoZSBQTSBjb3JlLiAgSG93ZXZlciwgZm9yIHNvbWUKKwkJZGV2aWNlcyB0aGlzIGF0dHJpYnV0ZSBpcyBzZXQgdG8gImVuYWJsZWQiIGJ5IGJ1cyB0eXBlIGNvZGUgb3IKKwkJZGV2aWNlIGRyaXZlcnMgYW5kIGluIHRoYXQgY2FzZXMgaXQgc2hvdWxkIGJlIHNhZmUgdG8gbGVhdmUgdGhlCisJCWRlZmF1bHQgdmFsdWUuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvLi4uL3Bvd2VyL3dha2V1cF9jb3VudAorRGF0ZToJCVNlcHRlbWJlciAyMDEwCitDb250YWN0OglSYWZhZWwgSi4gV3lzb2NraSA8cmp3QHJqd3lzb2NraS5uZXQ+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvZGV2aWNlcy8uLi4vd2FrZXVwX2NvdW50IGF0dHJpYnV0ZSBjb250YWlucyB0aGUgbnVtYmVyCisJCW9mIHNpZ25hbGVkIHdha2V1cCBldmVudHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXZpY2UuICBUaGlzCisJCWF0dHJpYnV0ZSBpcyByZWFkLW9ubHkuICBJZiB0aGUgZGV2aWNlIGlzIG5vdCBjYXBhYmxlIHRvIHdha2UgdXAKKwkJdGhlIHN5c3RlbSBmcm9tIHNsZWVwIHN0YXRlcywgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHByZXNlbnQuCisJCUlmIHRoZSBkZXZpY2UgaXMgbm90IGVuYWJsZWQgdG8gd2FrZSB1cCB0aGUgc3lzdGVtIGZyb20gc2xlZXAKKwkJc3RhdGVzLCB0aGlzIGF0dHJpYnV0ZSBpcyBlbXB0eS4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy8uLi4vcG93ZXIvd2FrZXVwX2FjdGl2ZV9jb3VudAorRGF0ZToJCVNlcHRlbWJlciAyMDEwCitDb250YWN0OglSYWZhZWwgSi4gV3lzb2NraSA8cmp3QHJqd3lzb2NraS5uZXQ+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvZGV2aWNlcy8uLi4vd2FrZXVwX2FjdGl2ZV9jb3VudCBhdHRyaWJ1dGUgY29udGFpbnMgdGhlCisJCW51bWJlciBvZiB0aW1lcyB0aGUgcHJvY2Vzc2luZyBvZiB3YWtldXAgZXZlbnRzIGFzc29jaWF0ZWQgd2l0aAorCQl0aGUgZGV2aWNlIHdhcyBjb21wbGV0ZWQgKGF0IHRoZSBrZXJuZWwgbGV2ZWwpLiAgVGhpcyBhdHRyaWJ1dGUKKwkJaXMgcmVhZC1vbmx5LiAgSWYgdGhlIGRldmljZSBpcyBub3QgY2FwYWJsZSB0byB3YWtlIHVwIHRoZQorCQlzeXN0ZW0gZnJvbSBzbGVlcCBzdGF0ZXMsIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBwcmVzZW50LiAgSWYKKwkJdGhlIGRldmljZSBpcyBub3QgZW5hYmxlZCB0byB3YWtlIHVwIHRoZSBzeXN0ZW0gZnJvbSBzbGVlcAorCQlzdGF0ZXMsIHRoaXMgYXR0cmlidXRlIGlzIGVtcHR5LgorCitXaGF0OgkJL3N5cy9kZXZpY2VzLy4uLi9wb3dlci93YWtldXBfYWJvcnRfY291bnQKK0RhdGU6CQlGZWJydWFyeSAyMDEyCitDb250YWN0OglSYWZhZWwgSi4gV3lzb2NraSA8cmp3QHJqd3lzb2NraS5uZXQ+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvZGV2aWNlcy8uLi4vd2FrZXVwX2Fib3J0X2NvdW50IGF0dHJpYnV0ZSBjb250YWlucyB0aGUKKwkJbnVtYmVyIG9mIHRpbWVzIHRoZSBwcm9jZXNzaW5nIG9mIGEgd2FrZXVwIGV2ZW50IGFzc29jaWF0ZWQgd2l0aAorCQl0aGUgZGV2aWNlIG1pZ2h0IGhhdmUgYWJvcnRlZCBzeXN0ZW0gdHJhbnNpdGlvbiBpbnRvIGEgc2xlZXAKKwkJc3RhdGUgaW4gcHJvZ3Jlc3MuICBUaGlzIGF0dHJpYnV0ZSBpcyByZWFkLW9ubHkuICBJZiB0aGUgZGV2aWNlCisJCWlzIG5vdCBjYXBhYmxlIHRvIHdha2UgdXAgdGhlIHN5c3RlbSBmcm9tIHNsZWVwIHN0YXRlcywgdGhpcworCQlhdHRyaWJ1dGUgaXMgbm90IHByZXNlbnQuICBJZiB0aGUgZGV2aWNlIGlzIG5vdCBlbmFibGVkIHRvIHdha2UKKwkJdXAgdGhlIHN5c3RlbSBmcm9tIHNsZWVwIHN0YXRlcywgdGhpcyBhdHRyaWJ1dGUgaXMgZW1wdHkuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvLi4uL3Bvd2VyL3dha2V1cF9leHBpcmVfY291bnQKK0RhdGU6CQlGZWJydWFyeSAyMDEyCitDb250YWN0OglSYWZhZWwgSi4gV3lzb2NraSA8cmp3QHJqd3lzb2NraS5uZXQ+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvZGV2aWNlcy8uLi4vd2FrZXVwX2V4cGlyZV9jb3VudCBhdHRyaWJ1dGUgY29udGFpbnMgdGhlCisJCW51bWJlciBvZiB0aW1lcyBhIHdha2V1cCBldmVudCBhc3NvY2lhdGVkIHdpdGggdGhlIGRldmljZSBoYXMKKwkJYmVlbiByZXBvcnRlZCB3aXRoIGEgdGltZW91dCB0aGF0IGV4cGlyZWQuICBUaGlzIGF0dHJpYnV0ZSBpcworCQlyZWFkLW9ubHkuICBJZiB0aGUgZGV2aWNlIGlzIG5vdCBjYXBhYmxlIHRvIHdha2UgdXAgdGhlIHN5c3RlbQorCQlmcm9tIHNsZWVwIHN0YXRlcywgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHByZXNlbnQuICBJZiB0aGUKKwkJZGV2aWNlIGlzIG5vdCBlbmFibGVkIHRvIHdha2UgdXAgdGhlIHN5c3RlbSBmcm9tIHNsZWVwIHN0YXRlcywKKwkJdGhpcyBhdHRyaWJ1dGUgaXMgZW1wdHkuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvLi4uL3Bvd2VyL3dha2V1cF9hY3RpdmUKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMAorQ29udGFjdDoJUmFmYWVsIEouIFd5c29ja2kgPHJqd0Byand5c29ja2kubmV0PgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2RldmljZXMvLi4uL3dha2V1cF9hY3RpdmUgYXR0cmlidXRlIGNvbnRhaW5zIGVpdGhlciAxLAorCQlvciAwLCBkZXBlbmRpbmcgb24gd2hldGhlciBvciBub3QgYSB3YWtldXAgZXZlbnQgYXNzb2NpYXRlZCB3aXRoCisJCXRoZSBkZXZpY2UgaXMgYmVpbmcgcHJvY2Vzc2VkICgxKS4gIFRoaXMgYXR0cmlidXRlIGlzIHJlYWQtb25seS4KKwkJSWYgdGhlIGRldmljZSBpcyBub3QgY2FwYWJsZSB0byB3YWtlIHVwIHRoZSBzeXN0ZW0gZnJvbSBzbGVlcAorCQlzdGF0ZXMsIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBwcmVzZW50LiAgSWYgdGhlIGRldmljZSBpcyBub3QKKwkJZW5hYmxlZCB0byB3YWtlIHVwIHRoZSBzeXN0ZW0gZnJvbSBzbGVlcCBzdGF0ZXMsIHRoaXMgYXR0cmlidXRlCisJCWlzIGVtcHR5LgorCitXaGF0OgkJL3N5cy9kZXZpY2VzLy4uLi9wb3dlci93YWtldXBfdG90YWxfdGltZV9tcworRGF0ZToJCVNlcHRlbWJlciAyMDEwCitDb250YWN0OglSYWZhZWwgSi4gV3lzb2NraSA8cmp3QHJqd3lzb2NraS5uZXQ+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvZGV2aWNlcy8uLi4vd2FrZXVwX3RvdGFsX3RpbWVfbXMgYXR0cmlidXRlIGNvbnRhaW5zCisJCXRoZSB0b3RhbCB0aW1lIG9mIHByb2Nlc3Npbmcgd2FrZXVwIGV2ZW50cyBhc3NvY2lhdGVkIHdpdGggdGhlCisJCWRldmljZSwgaW4gbWlsbGlzZWNvbmRzLiAgVGhpcyBhdHRyaWJ1dGUgaXMgcmVhZC1vbmx5LiAgSWYgdGhlCisJCWRldmljZSBpcyBub3QgY2FwYWJsZSB0byB3YWtlIHVwIHRoZSBzeXN0ZW0gZnJvbSBzbGVlcCBzdGF0ZXMsCisJCXRoaXMgYXR0cmlidXRlIGlzIG5vdCBwcmVzZW50LiAgSWYgdGhlIGRldmljZSBpcyBub3QgZW5hYmxlZCB0bworCQl3YWtlIHVwIHRoZSBzeXN0ZW0gZnJvbSBzbGVlcCBzdGF0ZXMsIHRoaXMgYXR0cmlidXRlIGlzIGVtcHR5LgorCitXaGF0OgkJL3N5cy9kZXZpY2VzLy4uLi9wb3dlci93YWtldXBfbWF4X3RpbWVfbXMKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMAorQ29udGFjdDoJUmFmYWVsIEouIFd5c29ja2kgPHJqd0Byand5c29ja2kubmV0PgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2RldmljZXMvLi4uL3dha2V1cF9tYXhfdGltZV9tcyBhdHRyaWJ1dGUgY29udGFpbnMKKwkJdGhlIG1heGltdW0gdGltZSBvZiBwcm9jZXNzaW5nIGEgc2luZ2xlIHdha2V1cCBldmVudCBhc3NvY2lhdGVkCisJCXdpdGggdGhlIGRldmljZSwgaW4gbWlsbGlzZWNvbmRzLiAgVGhpcyBhdHRyaWJ1dGUgaXMgcmVhZC1vbmx5LgorCQlJZiB0aGUgZGV2aWNlIGlzIG5vdCBjYXBhYmxlIHRvIHdha2UgdXAgdGhlIHN5c3RlbSBmcm9tIHNsZWVwCisJCXN0YXRlcywgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHByZXNlbnQuICBJZiB0aGUgZGV2aWNlIGlzIG5vdAorCQllbmFibGVkIHRvIHdha2UgdXAgdGhlIHN5c3RlbSBmcm9tIHNsZWVwIHN0YXRlcywgdGhpcyBhdHRyaWJ1dGUKKwkJaXMgZW1wdHkuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvLi4uL3Bvd2VyL3dha2V1cF9sYXN0X3RpbWVfbXMKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMAorQ29udGFjdDoJUmFmYWVsIEouIFd5c29ja2kgPHJqd0Byand5c29ja2kubmV0PgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2RldmljZXMvLi4uL3dha2V1cF9sYXN0X3RpbWVfbXMgYXR0cmlidXRlIGNvbnRhaW5zCisJCXRoZSB2YWx1ZSBvZiB0aGUgbW9ub3RvbmljIGNsb2NrIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHRpbWUgb2YKKwkJc2lnbmFsaW5nIHRoZSBsYXN0IHdha2V1cCBldmVudCBhc3NvY2lhdGVkIHdpdGggdGhlIGRldmljZSwgaW4KKwkJbWlsbGlzZWNvbmRzLiAgVGhpcyBhdHRyaWJ1dGUgaXMgcmVhZC1vbmx5LiAgSWYgdGhlIGRldmljZSBpcworCQlub3QgZW5hYmxlZCB0byB3YWtlIHVwIHRoZSBzeXN0ZW0gZnJvbSBzbGVlcCBzdGF0ZXMsIHRoaXMKKwkJYXR0cmlidXRlIGlzIG5vdCBwcmVzZW50LiAgSWYgdGhlIGRldmljZSBpcyBub3QgZW5hYmxlZCB0byB3YWtlCisJCXVwIHRoZSBzeXN0ZW0gZnJvbSBzbGVlcCBzdGF0ZXMsIHRoaXMgYXR0cmlidXRlIGlzIGVtcHR5LgorCitXaGF0OgkJL3N5cy9kZXZpY2VzLy4uLi9wb3dlci93YWtldXBfcHJldmVudF9zbGVlcF90aW1lX21zCitEYXRlOgkJRmVicnVhcnkgMjAxMgorQ29udGFjdDoJUmFmYWVsIEouIFd5c29ja2kgPHJqd0Byand5c29ja2kubmV0PgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2RldmljZXMvLi4uL3dha2V1cF9wcmV2ZW50X3NsZWVwX3RpbWVfbXMgYXR0cmlidXRlCisJCWNvbnRhaW5zIHRoZSB0b3RhbCB0aW1lIHRoZSBkZXZpY2UgaGFzIGJlZW4gcHJldmVudGluZworCQlvcHBvcnR1bmlzdGljIHRyYW5zaXRpb25zIHRvIHNsZWVwIHN0YXRlcyBmcm9tIG9jY3VycmluZy4KKwkJVGhpcyBhdHRyaWJ1dGUgaXMgcmVhZC1vbmx5LiAgSWYgdGhlIGRldmljZSBpcyBub3QgY2FwYWJsZSB0bworCQl3YWtlIHVwIHRoZSBzeXN0ZW0gZnJvbSBzbGVlcCBzdGF0ZXMsIHRoaXMgYXR0cmlidXRlIGlzIG5vdAorCQlwcmVzZW50LiAgSWYgdGhlIGRldmljZSBpcyBub3QgZW5hYmxlZCB0byB3YWtlIHVwIHRoZSBzeXN0ZW0KKwkJZnJvbSBzbGVlcCBzdGF0ZXMsIHRoaXMgYXR0cmlidXRlIGlzIGVtcHR5LgorCitXaGF0OgkJL3N5cy9kZXZpY2VzLy4uLi9wb3dlci9hdXRvc3VzcGVuZF9kZWxheV9tcworRGF0ZToJCVNlcHRlbWJlciAyMDEwCitDb250YWN0OglBbGFuIFN0ZXJuIDxzdGVybkByb3dsYW5kLmhhcnZhcmQuZWR1PgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2RldmljZXMvLi4uL3Bvd2VyL2F1dG9zdXNwZW5kX2RlbGF5X21zIGF0dHJpYnV0ZQorCQljb250YWlucyB0aGUgYXV0b3N1c3BlbmQgZGVsYXkgdmFsdWUgKGluIG1pbGxpc2Vjb25kcykuICBTb21lCisJCWRyaXZlcnMgZG8gbm90IHdhbnQgdGhlaXIgZGV2aWNlIHRvIHN1c3BlbmQgYXMgc29vbiBhcyBpdAorCQliZWNvbWVzIGlkbGUgYXQgcnVuIHRpbWU7IHRoZXkgd2FudCB0aGUgZGV2aWNlIHRvIHJlbWFpbgorCQlpbmFjdGl2ZSBmb3IgYSBjZXJ0YWluIG1pbmltdW0gcGVyaW9kIG9mIHRpbWUgZmlyc3QuICBUaGF0CisJCXBlcmlvZCBpcyBjYWxsZWQgdGhlIGF1dG9zdXNwZW5kIGRlbGF5LiAgTmVnYXRpdmUgdmFsdWVzIHdpbGwKKwkJcHJldmVudCB0aGUgZGV2aWNlIGZyb20gYmVpbmcgc3VzcGVuZGVkIGF0IHJ1biB0aW1lIChzaW1pbGFyCisJCXRvIHdyaXRpbmcgIm9uIiB0byB0aGUgcG93ZXIvY29udHJvbCBhdHRyaWJ1dGUpLiAgVmFsdWVzID49CisJCTEwMDAgd2lsbCBjYXVzZSB0aGUgYXV0b3N1c3BlbmQgdGltZXIgZXhwaXJhdGlvbiB0byBiZSByb3VuZGVkCisJCXVwIHRvIHRoZSBuZWFyZXN0IHNlY29uZC4KKworCQlOb3QgYWxsIGRyaXZlcnMgc3VwcG9ydCB0aGlzIGF0dHJpYnV0ZS4gIElmIGl0IGlzbid0IHN1cHBvcnRlZCwKKwkJYXR0ZW1wdHMgdG8gcmVhZCBvciB3cml0ZSBpdCB3aWxsIHlpZWxkIEkvTyBlcnJvcnMuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvLi4uL3Bvd2VyL3BtX3Fvc19yZXN1bWVfbGF0ZW5jeV91cworRGF0ZToJCU1hcmNoIDIwMTIKK0NvbnRhY3Q6CVJhZmFlbCBKLiBXeXNvY2tpIDxyandAcmp3eXNvY2tpLm5ldD4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9kZXZpY2VzLy4uLi9wb3dlci9wbV9xb3NfcmVzdW1lX2xhdGVuY3lfdXMgYXR0cmlidXRlCisJCWNvbnRhaW5zIHRoZSBQTSBRb1MgcmVzdW1lIGxhdGVuY3kgbGltaXQgZm9yIHRoZSBnaXZlbiBkZXZpY2UsCisJCXdoaWNoIGlzIHRoZSBtYXhpbXVtIGFsbG93ZWQgdGltZSBpdCBjYW4gdGFrZSB0byByZXN1bWUgdGhlCisJCWRldmljZSwgYWZ0ZXIgaXQgaGFzIGJlZW4gc3VzcGVuZGVkIGF0IHJ1biB0aW1lLCBmcm9tIGEgcmVzdW1lCisJCXJlcXVlc3QgdG8gdGhlIG1vbWVudCB0aGUgZGV2aWNlIHdpbGwgYmUgcmVhZHkgdG8gcHJvY2VzcyBJL08sCisJCWluIG1pY3Jvc2Vjb25kcy4gIElmIGl0IGlzIGVxdWFsIHRvIDAsIGhvd2V2ZXIsIHRoaXMgbWVhbnMgdGhhdAorCQl0aGUgUE0gUW9TIHJlc3VtZSBsYXRlbmN5IG1heSBiZSBhcmJpdHJhcnkuCisKKwkJTm90IGFsbCBkcml2ZXJzIHN1cHBvcnQgdGhpcyBhdHRyaWJ1dGUuICBJZiBpdCBpc24ndCBzdXBwb3J0ZWQsCisJCWl0IGlzIG5vdCBwcmVzZW50LgorCisJCVRoaXMgYXR0cmlidXRlIGhhcyBubyBlZmZlY3Qgb24gc3lzdGVtLXdpZGUgc3VzcGVuZC9yZXN1bWUgYW5kCisJCWhpYmVybmF0aW9uLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzLy4uLi9wb3dlci9wbV9xb3NfbGF0ZW5jeV90b2xlcmFuY2VfdXMKK0RhdGU6CQlKYW51YXJ5IDIwMTQKK0NvbnRhY3Q6CVJhZmFlbCBKLiBXeXNvY2tpIDxyandAcmp3eXNvY2tpLm5ldD4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9kZXZpY2VzLy4uLi9wb3dlci9wbV9xb3NfbGF0ZW5jeV90b2xlcmFuY2VfdXMgYXR0cmlidXRlCisJCWNvbnRhaW5zIHRoZSBQTSBRb1MgYWN0aXZlIHN0YXRlIGxhdGVuY3kgdG9sZXJhbmNlIGxpbWl0IGZvciB0aGUKKwkJZ2l2ZW4gZGV2aWNlIGluIG1pY3Jvc2Vjb25kcy4gIFRoYXQgaXMgdGhlIG1heGltdW0gbWVtb3J5IGFjY2VzcworCQlsYXRlbmN5IHRoZSBkZXZpY2UgY2FuIHN1ZmZlciB3aXRob3V0IGFueSB2aXNpYmxlIGFkdmVyc2UKKwkJZWZmZWN0cyBvbiB1c2VyIHNwYWNlIGZ1bmN0aW9uYWxpdHkuICBJZiB0aGF0IHZhbHVlIGlzIHRoZQorCQlzdHJpbmcgImFueSIsIHRoZSBsYXRlbmN5IGRvZXMgbm90IG1hdHRlciB0byB1c2VyIHNwYWNlIGF0IGFsbCwKKwkJYnV0IGhhcmR3YXJlIHNob3VsZCBub3QgYmUgYWxsb3dlZCB0byBzZXQgdGhlIGxhdGVuY3kgdG9sZXJhbmNlCisJCWZvciB0aGUgZGV2aWNlIGF1dG9tYXRpY2FsbHkuCisKKwkJUmVhZGluZyAiYXV0byIgZnJvbSB0aGlzIGZpbGUgbWVhbnMgdGhhdCB0aGUgbWF4aW11bSBtZW1vcnkKKwkJYWNjZXNzIGxhdGVuY3kgZm9yIHRoZSBkZXZpY2UgbWF5IGJlIGRldGVybWluZWQgYXV0b21hdGljYWxseQorCQlieSB0aGUgaGFyZHdhcmUgYXMgbmVlZGVkLiAgV3JpdGluZyAiYXV0byIgdG8gaXQgYWxsb3dzIHRoZQorCQloYXJkd2FyZSB0byBiZSBzd2l0Y2hlZCB0byB0aGlzIG1vZGUgaWYgdGhlcmUgYXJlIG5vIG90aGVyCisJCWxhdGVuY3kgdG9sZXJhbmNlIHJlcXVpcmVtZW50cyBmcm9tIHRoZSBrZXJuZWwgc2lkZS4KKworCQlUaGlzIGF0dHJpYnV0ZSBpcyBvbmx5IHByZXNlbnQgaWYgdGhlIGZlYXR1cmUgY29udHJvbGxlZCBieSBpdAorCQlpcyBzdXBwb3J0ZWQgYnkgdGhlIGhhcmR3YXJlLgorCisJCVRoaXMgYXR0cmlidXRlIGhhcyBubyBlZmZlY3Qgb24gcnVudGltZSBzdXNwZW5kIGFuZCByZXN1bWUgb2YKKwkJZGV2aWNlcyBhbmQgb24gc3lzdGVtLXdpZGUgc3VzcGVuZC9yZXN1bWUgYW5kIGhpYmVybmF0aW9uLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzLy4uLi9wb3dlci9wbV9xb3Nfbm9fcG93ZXJfb2ZmCitEYXRlOgkJU2VwdGVtYmVyIDIwMTIKK0NvbnRhY3Q6CVJhZmFlbCBKLiBXeXNvY2tpIDxyandAcmp3eXNvY2tpLm5ldD4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9kZXZpY2VzLy4uLi9wb3dlci9wbV9xb3Nfbm9fcG93ZXJfb2ZmIGF0dHJpYnV0ZQorCQlpcyB1c2VkIGZvciBtYW5pcHVsYXRpbmcgdGhlIFBNIFFvUyAibm8gcG93ZXIgb2ZmIiBmbGFnLiAgSWYKKwkJc2V0LCB0aGlzIGZsYWcgaW5kaWNhdGVzIHRvIHRoZSBrZXJuZWwgdGhhdCBwb3dlciBzaG91bGQgbm90CisJCWJlIHJlbW92ZWQgZW50aXJlbHkgZnJvbSB0aGUgZGV2aWNlLgorCisJCU5vdCBhbGwgZHJpdmVycyBzdXBwb3J0IHRoaXMgYXR0cmlidXRlLiAgSWYgaXQgaXNuJ3Qgc3VwcG9ydGVkLAorCQlpdCBpcyBub3QgcHJlc2VudC4KKworCQlUaGlzIGF0dHJpYnV0ZSBoYXMgbm8gZWZmZWN0IG9uIHN5c3RlbS13aWRlIHN1c3BlbmQvcmVzdW1lIGFuZAorCQloaWJlcm5hdGlvbi4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy8uLi4vcG93ZXIvcG1fcW9zX3JlbW90ZV93YWtldXAKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMgorQ29udGFjdDoJUmFmYWVsIEouIFd5c29ja2kgPHJqd0Byand5c29ja2kubmV0PgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2RldmljZXMvLi4uL3Bvd2VyL3BtX3Fvc19yZW1vdGVfd2FrZXVwIGF0dHJpYnV0ZQorCQlpcyB1c2VkIGZvciBtYW5pcHVsYXRpbmcgdGhlIFBNIFFvUyAicmVtb3RlIHdha2V1cCByZXF1aXJlZCIKKwkJZmxhZy4gIElmIHNldCwgdGhpcyBmbGFnIGluZGljYXRlcyB0byB0aGUga2VybmVsIHRoYXQgdGhlCisJCWRldmljZSBpcyBhIHNvdXJjZSBvZiB1c2VyIGV2ZW50cyB0aGF0IGhhdmUgdG8gYmUgc2lnbmFsZWQgZnJvbQorCQlpdHMgbG93LXBvd2VyIHN0YXRlcy4KKworCQlOb3QgYWxsIGRyaXZlcnMgc3VwcG9ydCB0aGlzIGF0dHJpYnV0ZS4gIElmIGl0IGlzbid0IHN1cHBvcnRlZCwKKwkJaXQgaXMgbm90IHByZXNlbnQuCisKKwkJVGhpcyBhdHRyaWJ1dGUgaGFzIG5vIGVmZmVjdCBvbiBzeXN0ZW0td2lkZSBzdXNwZW5kL3Jlc3VtZSBhbmQKKwkJaGliZXJuYXRpb24uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtcG93ZXJfcmVzb3VyY2VzX0QwIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLXBvd2VyX3Jlc291cmNlc19EMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2I3N2E2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLXBvd2VyX3Jlc291cmNlc19EMApAQCAtMCwwICsxLDEzIEBACitXaGF0OgkJL3N5cy9kZXZpY2VzLy4uLi9wb3dlcl9yZXNvdXJjZXNfRDAvCitEYXRlOgkJSmFudWFyeSAyMDEzCitDb250YWN0OglSYWZhZWwgSi4gV3lzb2NraSA8cmFmYWVsLmoud3lzb2NraUBpbnRlbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvZGV2aWNlcy8uLi4vcG93ZXJfcmVzb3VyY2VzX0QwLyBkaXJlY3RvcnkgaXMgb25seQorCQlwcmVzZW50IGZvciBkZXZpY2Ugb2JqZWN0cyByZXByZXNlbnRpbmcgQUNQSSBkZXZpY2Ugbm9kZXMgdGhhdAorCQl1c2UgQUNQSSBwb3dlciByZXNvdXJjZXMgZm9yIHBvd2VyIG1hbmFnZW1lbnQuCisKKwkJSWYgcHJlc2VudCwgaXQgY29udGFpbnMgc3ltYm9saWMgbGlua3MgdG8gZGV2aWNlIGRpcmVjdG9yaWVzCisJCXJlcHJlc2VudGluZyBBQ1BJIHBvd2VyIHJlc291cmNlcyB0aGF0IG5lZWQgdG8gYmUgdHVybmVkIG9uIGZvcgorCQl0aGUgZ2l2ZW4gZGV2aWNlIG5vZGUgdG8gYmUgaW4gQUNQSSBwb3dlciBzdGF0ZSBEMC4gIFRoZSBuYW1lcworCQlvZiB0aGUgbGlua3MgYXJlIHRoZSBzYW1lIGFzIHRoZSBuYW1lcyBvZiB0aGUgZGlyZWN0b3JpZXMgdGhleQorCQlwb2ludCB0by4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcy1wb3dlcl9yZXNvdXJjZXNfRDEgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtcG93ZXJfcmVzb3VyY2VzX0QxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwYzIwNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtcG93ZXJfcmVzb3VyY2VzX0QxCkBAIC0wLDAgKzEsMTQgQEAKK1doYXQ6CQkvc3lzL2RldmljZXMvLi4uL3Bvd2VyX3Jlc291cmNlc19EMS8KK0RhdGU6CQlKYW51YXJ5IDIwMTMKK0NvbnRhY3Q6CVJhZmFlbCBKLiBXeXNvY2tpIDxyYWZhZWwuai53eXNvY2tpQGludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9kZXZpY2VzLy4uLi9wb3dlcl9yZXNvdXJjZXNfRDEvIGRpcmVjdG9yeSBpcyBvbmx5CisJCXByZXNlbnQgZm9yIGRldmljZSBvYmplY3RzIHJlcHJlc2VudGluZyBBQ1BJIGRldmljZSBub2RlcyB0aGF0CisJCXVzZSBBQ1BJIHBvd2VyIHJlc291cmNlcyBmb3IgcG93ZXIgbWFuYWdlbWVudCBhbmQgc3VwcG9ydCBBQ1BJCisJCXBvd2VyIHN0YXRlIEQxLgorCisJCUlmIHByZXNlbnQsIGl0IGNvbnRhaW5zIHN5bWJvbGljIGxpbmtzIHRvIGRldmljZSBkaXJlY3RvcmllcworCQlyZXByZXNlbnRpbmcgQUNQSSBwb3dlciByZXNvdXJjZXMgdGhhdCBuZWVkIHRvIGJlIHR1cm5lZCBvbiBmb3IKKwkJdGhlIGdpdmVuIGRldmljZSBub2RlIHRvIGJlIGluIEFDUEkgcG93ZXIgc3RhdGUgRDEuICBUaGUgbmFtZXMKKwkJb2YgdGhlIGxpbmtzIGFyZSB0aGUgc2FtZSBhcyB0aGUgbmFtZXMgb2YgdGhlIGRpcmVjdG9yaWVzIHRoZXkKKwkJcG9pbnQgdG8uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtcG93ZXJfcmVzb3VyY2VzX0QyIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLXBvd2VyX3Jlc291cmNlc19EMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDlkODRiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLXBvd2VyX3Jlc291cmNlc19EMgpAQCAtMCwwICsxLDE0IEBACitXaGF0OgkJL3N5cy9kZXZpY2VzLy4uLi9wb3dlcl9yZXNvdXJjZXNfRDIvCitEYXRlOgkJSmFudWFyeSAyMDEzCitDb250YWN0OglSYWZhZWwgSi4gV3lzb2NraSA8cmFmYWVsLmoud3lzb2NraUBpbnRlbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvZGV2aWNlcy8uLi4vcG93ZXJfcmVzb3VyY2VzX0QyLyBkaXJlY3RvcnkgaXMgb25seQorCQlwcmVzZW50IGZvciBkZXZpY2Ugb2JqZWN0cyByZXByZXNlbnRpbmcgQUNQSSBkZXZpY2Ugbm9kZXMgdGhhdAorCQl1c2UgQUNQSSBwb3dlciByZXNvdXJjZXMgZm9yIHBvd2VyIG1hbmFnZW1lbnQgYW5kIHN1cHBvcnQgQUNQSQorCQlwb3dlciBzdGF0ZSBEMi4KKworCQlJZiBwcmVzZW50LCBpdCBjb250YWlucyBzeW1ib2xpYyBsaW5rcyB0byBkZXZpY2UgZGlyZWN0b3JpZXMKKwkJcmVwcmVzZW50aW5nIEFDUEkgcG93ZXIgcmVzb3VyY2VzIHRoYXQgbmVlZCB0byBiZSB0dXJuZWQgb24gZm9yCisJCXRoZSBnaXZlbiBkZXZpY2Ugbm9kZSB0byBiZSBpbiBBQ1BJIHBvd2VyIHN0YXRlIEQyLiAgVGhlIG5hbWVzCisJCW9mIHRoZSBsaW5rcyBhcmUgdGhlIHNhbWUgYXMgdGhlIG5hbWVzIG9mIHRoZSBkaXJlY3RvcmllcyB0aGV5CisJCXBvaW50IHRvLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLXBvd2VyX3Jlc291cmNlc19EM2hvdCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcy1wb3dlcl9yZXNvdXJjZXNfRDNob3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RmMzJjMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcy1wb3dlcl9yZXNvdXJjZXNfRDNob3QKQEAgLTAsMCArMSwxNCBAQAorV2hhdDoJCS9zeXMvZGV2aWNlcy8uLi4vcG93ZXJfcmVzb3VyY2VzX0QzaG90LworRGF0ZToJCUphbnVhcnkgMjAxMworQ29udGFjdDoJUmFmYWVsIEouIFd5c29ja2kgPHJhZmFlbC5qLnd5c29ja2lAaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2RldmljZXMvLi4uL3Bvd2VyX3Jlc291cmNlc19EM2hvdC8gZGlyZWN0b3J5IGlzIG9ubHkKKwkJcHJlc2VudCBmb3IgZGV2aWNlIG9iamVjdHMgcmVwcmVzZW50aW5nIEFDUEkgZGV2aWNlIG5vZGVzIHRoYXQKKwkJdXNlIEFDUEkgcG93ZXIgcmVzb3VyY2VzIGZvciBwb3dlciBtYW5hZ2VtZW50IGFuZCBzdXBwb3J0IEFDUEkKKwkJcG93ZXIgc3RhdGUgRDNob3QuCisKKwkJSWYgcHJlc2VudCwgaXQgY29udGFpbnMgc3ltYm9saWMgbGlua3MgdG8gZGV2aWNlIGRpcmVjdG9yaWVzCisJCXJlcHJlc2VudGluZyBBQ1BJIHBvd2VyIHJlc291cmNlcyB0aGF0IG5lZWQgdG8gYmUgdHVybmVkIG9uIGZvcgorCQl0aGUgZ2l2ZW4gZGV2aWNlIG5vZGUgdG8gYmUgaW4gQUNQSSBwb3dlciBzdGF0ZSBEM2hvdC4gIFRoZQorCQluYW1lcyBvZiB0aGUgbGlua3MgYXJlIHRoZSBzYW1lIGFzIHRoZSBuYW1lcyBvZiB0aGUgZGlyZWN0b3JpZXMKKwkJdGhleSBwb2ludCB0by4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcy1wb3dlcl9yZXNvdXJjZXNfd2FrZXVwIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLXBvd2VyX3Jlc291cmNlc193YWtldXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA1ODhmZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcy1wb3dlcl9yZXNvdXJjZXNfd2FrZXVwCkBAIC0wLDAgKzEsMTMgQEAKK1doYXQ6CQkvc3lzL2RldmljZXMvLi4uL3Bvd2VyX3Jlc291cmNlc193YWtldXAvCitEYXRlOgkJQXByaWwgMjAxMworQ29udGFjdDoJUmFmYWVsIEouIFd5c29ja2kgPHJhZmFlbC5qLnd5c29ja2lAaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2RldmljZXMvLi4uL3Bvd2VyX3Jlc291cmNlc193YWtldXAvIGRpcmVjdG9yeSBpcyBvbmx5CisJCXByZXNlbnQgZm9yIGRldmljZSBvYmplY3RzIHJlcHJlc2VudGluZyBBQ1BJIGRldmljZSBub2RlcyB0aGF0CisJCXJlcXVpcmUgQUNQSSBwb3dlciByZXNvdXJjZXMgZm9yIHdha2V1cCBzaWduYWxpbmcuCisKKwkJSWYgcHJlc2VudCwgaXQgY29udGFpbnMgc3ltYm9saWMgbGlua3MgdG8gZGV2aWNlIGRpcmVjdG9yaWVzCisJCXJlcHJlc2VudGluZyBBQ1BJIHBvd2VyIHJlc291cmNlcyB0aGF0IG5lZWQgdG8gYmUgdHVybmVkIG9uIGZvcgorCQl0aGUgZ2l2ZW4gZGV2aWNlIG5vZGUgdG8gYmUgYWJsZSB0byBzaWduYWwgd2FrZXVwLiAgVGhlIG5hbWVzIG9mCisJCXRoZSBsaW5rcyBhcmUgdGhlIHNhbWUgYXMgdGhlIG5hbWVzIG9mIHRoZSBkaXJlY3RvcmllcyB0aGV5CisJCXBvaW50IHRvLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLXBvd2VyX3N0YXRlIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLXBvd2VyX3N0YXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZDk1NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtcG93ZXJfc3RhdGUKQEAgLTAsMCArMSwyMCBAQAorV2hhdDoJCS9zeXMvZGV2aWNlcy8uLi4vcG93ZXJfc3RhdGUKK0RhdGU6CQlKYW51YXJ5IDIwMTMKK0NvbnRhY3Q6CVJhZmFlbCBKLiBXeXNvY2tpIDxyYWZhZWwuai53eXNvY2tpQGludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9kZXZpY2VzLy4uLi9wb3dlcl9zdGF0ZSBhdHRyaWJ1dGUgaXMgb25seSBwcmVzZW50IGZvcgorCQlkZXZpY2Ugb2JqZWN0cyByZXByZXNlbnRpbmcgQUNQSSBkZXZpY2Ugbm9kZXMgdGhhdCBwcm92aWRlIHBvd2VyCisJCW1hbmFnZW1lbnQgbWV0aG9kcy4KKworCQlJZiBwcmVzZW50LCBpdCBjb250YWlucyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgQUNQSQorCQlwb3dlciBzdGF0ZSBvZiB0aGUgZ2l2ZW4gZGV2aWNlIG5vZGUuICBJdHMgcG9zc2libGUgdmFsdWVzLAorCQkiRDAiLCAiRDEiLCAiRDIiLCAiRDNob3QiLCBhbmQgIkQzY29sZCIsIHJlZmxlY3QgdGhlIHBvd2VyIHN0YXRlCisJCW5hbWVzIGRlZmluZWQgYnkgdGhlIEFDUEkgc3BlY2lmaWNhdGlvbiAoQUNQSSA0IGFuZCBhYm92ZSkuCisKKwkJSWYgdGhlIGRldmljZSBub2RlIHVzZXMgc2hhcmVkIEFDUEkgcG93ZXIgcmVzb3VyY2VzLCB0aGlzIHN0YXRlCisJCWRldGVybWluZXMgYSBsaXN0IG9mIHBvd2VyIHJlc291cmNlcyByZXF1aXJlZCBub3QgdG8gYmUgdHVybmVkCisJCW9mZi4gIEhvd2V2ZXIsIHNvbWUgcG93ZXIgcmVzb3VyY2VzIG5lZWRlZCBieSB0aGUgZGV2aWNlIG5vZGUgaW4KKwkJaGlnaGVyLXBvd2VyIChsb3dlci1udW1iZXIpIHN0YXRlcyBtYXkgYWxzbyBiZSBPTiBiZWNhdXNlIG9mCisJCXNvbWUgb3RoZXIgZGV2aWNlcyB1c2luZyB0aGVtIGF0IHRoZSBtb21lbnQuCisKKwkJVGhpcyBhdHRyaWJ1dGUgaXMgcmVhZC1vbmx5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLXJlYWxfcG93ZXJfc3RhdGUgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtcmVhbF9wb3dlcl9zdGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjM1MjdjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLXJlYWxfcG93ZXJfc3RhdGUKQEAgLTAsMCArMSwyMyBAQAorV2hhdDoJCS9zeXMvZGV2aWNlcy8uLi4vcmVhbF9wb3dlcl9zdGF0ZQorRGF0ZToJCUphbnVhcnkgMjAxMworQ29udGFjdDoJUmFmYWVsIEouIFd5c29ja2kgPHJhZmFlbC5qLnd5c29ja2lAaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2RldmljZXMvLi4uL3JlYWxfcG93ZXJfc3RhdGUgYXR0cmlidXRlIGlzIG9ubHkgcHJlc2VudAorCQlmb3IgZGV2aWNlIG9iamVjdHMgcmVwcmVzZW50aW5nIEFDUEkgZGV2aWNlIG5vZGVzIHRoYXQgcHJvdmlkZQorCQlwb3dlciBtYW5hZ2VtZW50IG1ldGhvZHMgYW5kIHVzZSBBQ1BJIHBvd2VyIHJlc291cmNlcyBmb3IgcG93ZXIKKwkJbWFuYWdlbWVudC4KKworCQlJZiBwcmVzZW50LCBpdCBjb250YWlucyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHJlYWwgQUNQSQorCQlwb3dlciBzdGF0ZSBvZiB0aGUgZ2l2ZW4gZGV2aWNlIG5vZGUgYXMgcmV0dXJuZWQgYnkgdGhlIF9QU0MKKwkJY29udHJvbCBtZXRob2Qgb3IgaW5mZXJyZWQgZnJvbSB0aGUgY29uZmlndXJhdGlvbiBvZiBwb3dlcgorCQlyZXNvdXJjZXMuICBJdHMgcG9zc2libGUgdmFsdWVzLCAiRDAiLCAiRDEiLCAiRDIiLCAiRDNob3QiLCBhbmQKKwkJIkQzY29sZCIsIHJlZmxlY3QgdGhlIHBvd2VyIHN0YXRlIG5hbWVzIGRlZmluZWQgYnkgdGhlIEFDUEkKKwkJc3BlY2lmaWNhdGlvbiAoQUNQSSA0IGFuZCBhYm92ZSkuCisKKwkJSW4gc29tZSBzaXR1YXRpb25zIHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBtYXkgYmUgZGlmZmVyZW50CisJCWZyb20gdGhlIHZhbHVlIG9mIHRoZSAvc3lzL2RldmljZXMvLi4uL3Bvd2VyX3N0YXRlIGF0dHJpYnV0ZSBmb3IKKwkJdGhlIHNhbWUgZGV2aWNlIG9iamVjdC4gIElmIHRoYXQgaGFwcGVucywgc29tZSBzaGFyZWQgcG93ZXIKKwkJcmVzb3VyY2VzIHVzZWQgYnkgdGhlIGRldmljZSBub2RlIGFyZSBvbmx5IE9OIGJlY2F1c2Ugb2Ygc29tZQorCQlvdGhlciBkZXZpY2VzIHVzaW5nIHRoZW0gYXQgdGhlIG1vbWVudC4KKworCQlUaGlzIGF0dHJpYnV0ZSBpcyByZWFkLW9ubHkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtcmVzb3VyY2VfaW5fdXNlIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLXJlc291cmNlX2luX3VzZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGEzYmM1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLXJlc291cmNlX2luX3VzZQpAQCAtMCwwICsxLDEyIEBACitXaGF0OgkJL3N5cy9kZXZpY2VzLy4uLi9yZXNvdXJjZV9pbl91c2UKK0RhdGU6CQlKYW51YXJ5IDIwMTMKK0NvbnRhY3Q6CVJhZmFlbCBKLiBXeXNvY2tpIDxyYWZhZWwuai53eXNvY2tpQGludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9kZXZpY2VzLy4uLi9yZXNvdXJjZV9pbl91c2UgYXR0cmlidXRlIGlzIG9ubHkgcHJlc2VudAorCQlmb3IgZGV2aWNlIG9iamVjdHMgcmVwcmVzZW50aW5nIEFDUEkgcG93ZXIgcmVzb3VyY2VzLgorCisJCUlmIHByZXNlbnQsIGl0IGNvbnRhaW5zIGEgbnVtYmVyICgwIG9yIDEpIHJlcHJlc2VudGluZyB0aGUKKwkJY3VycmVudCBzdGF0dXMgb2YgdGhlIGdpdmVuIHBvd2VyIHJlc291cmNlICgwIG1lYW5zIHRoYXQgdGhlCisJCXJlc291cmNlIGlzIG5vdCBpbiB1c2UgYW5kIHRoZXJlZm9yZSBpdCBoYXMgYmVlbiB0dXJuZWQgb2ZmKS4KKworCQlUaGlzIGF0dHJpYnV0ZSBpcyByZWFkLW9ubHkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtc29jIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLXNvYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDljYzI1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLXNvYwpAQCAtMCwwICsxLDU4IEBACitXaGF0OgkJL3N5cy9kZXZpY2VzL3NvY1gKK0RhdGU6CQlKYW51YXJ5IDIwMTIKK2NvbnRhY3Q6CUxlZSBKb25lcyA8bGVlLmpvbmVzQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvZGV2aWNlcy8gZGlyZWN0b3J5IGNvbnRhaW5zIGEgc3ViLWRpcmVjdG9yeSBmb3IgZWFjaAorCQlTeXN0ZW0tb24tQ2hpcCAoU29DKSBkZXZpY2Ugb24gYSBydW5uaW5nIHBsYXRmb3JtLiBJbmZvcm1hdGlvbgorCQlyZWdhcmRpbmcgZWFjaCBTb0MgY2FuIGJlIG9idGFpbmVkIGJ5IHJlYWRpbmcgc3lzZnMgZmlsZXMuIFRoaXMKKwkJZnVuY3Rpb25hbGl0eSBpcyBvbmx5IGF2YWlsYWJsZSBpZiBpbXBsZW1lbnRlZCBieSB0aGUgcGxhdGZvcm0uCisKKwkJVGhlIGRpcmVjdG9yeSBjcmVhdGVkIGZvciBlYWNoIFNvQyB3aWxsIGFsc28gaG91c2UgaW5mb3JtYXRpb24KKwkJYWJvdXQgZGV2aWNlcyB3aGljaCBhcmUgY29tbW9ubHkgY29udGFpbmVkIGluIC9zeXMvZGV2aWNlcy9wbGF0Zm9ybS4KKwkJSXQgaGFzIGJlZW4gYWdyZWVkIHRoYXQgaWYgYW4gU29DIGRldmljZSBleGlzdHMsIGl0cyBzdXBwb3J0ZWQKKwkJZGV2aWNlcyB3b3VsZCBiZSBiZXR0ZXIgc3VpdGVkIHRvIGFwcGVhciBhcyBjaGlsZHJlbiBvZiB0aGF0IFNvQy4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zb2NYL21hY2hpbmUKK0RhdGU6CQlKYW51YXJ5IDIwMTIKK2NvbnRhY3Q6CUxlZSBKb25lcyA8bGVlLmpvbmVzQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoKKwkJUmVhZC1vbmx5IGF0dHJpYnV0ZSBjb21tb24gdG8gYWxsIFNvQ3MuIENvbnRhaW5zIHRoZSBTb0MgbWFjaGluZQorCQluYW1lIChlLmcuIFV4NTAwKS4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zb2NYL2ZhbWlseQorRGF0ZToJCUphbnVhcnkgMjAxMgorY29udGFjdDoJTGVlIEpvbmVzIDxsZWUuam9uZXNAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlSZWFkLW9ubHkgYXR0cmlidXRlIGNvbW1vbiB0byBhbGwgU29Dcy4gQ29udGFpbnMgU29DIGZhbWlseSBuYW1lCisJCShlLmcuIERCODUwMCkuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvc29jWC9zb2NfaWQKK0RhdGU6CQlKYW51YXJ5IDIwMTIKK2NvbnRhY3Q6CUxlZSBKb25lcyA8bGVlLmpvbmVzQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoKKwkJUmVhZC1vbmx5IGF0dHJpYnV0ZSBzdXBwb3J0ZWQgYnkgbW9zdCBTb0NzLiBJbiB0aGUgY2FzZSBvZgorCQlTVC1Fcmljc3NvbidzIGNoaXBzIHRoaXMgY29udGFpbnMgdGhlIFNvQyBzZXJpYWwgbnVtYmVyLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3NvY1gvcmV2aXNpb24KK0RhdGU6CQlKYW51YXJ5IDIwMTIKK2NvbnRhY3Q6CUxlZSBKb25lcyA8bGVlLmpvbmVzQGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoKKwkJUmVhZC1vbmx5IGF0dHJpYnV0ZSBzdXBwb3J0ZWQgYnkgbW9zdCBTb0NzLiBDb250YWlucyB0aGUgU29DJ3MKKwkJbWFudWZhY3R1cmluZyByZXZpc2lvbiBudW1iZXIuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvc29jWC9wcm9jZXNzCitEYXRlOgkJSmFudWFyeSAyMDEyCitjb250YWN0OglMZWUgSm9uZXMgPGxlZS5qb25lc0BsaW5hcm8ub3JnPgorRGVzY3JpcHRpb246CisJCVJlYWQtb25seSBhdHRyaWJ1dGUgc3VwcG9ydGVkIFNULUVyaWNzc29uJ3Mgc2lsaWNvbi4gQ29udGFpbnMgdGhlCisJCXRoZSBwcm9jZXNzIGJ5IHdoaWNoIHRoZSBzaWxpY29uIGNoaXAgd2FzIG1hbnVmYWN0dXJlZC4KKworV2hhdDoJCS9zeXMvYnVzL3NvYworRGF0ZToJCUphbnVhcnkgMjAxMgorY29udGFjdDoJTGVlIEpvbmVzIDxsZWUuam9uZXNAbGluYXJvLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9idXMvc29jLyBkaXJlY3RvcnkgY29udGFpbnMgdGhlIHVzdWFsIHN1Yi1mb2xkZXJzCisJCWV4cGVjdGVkIHVuZGVyIG1vc3QgYnVzZXMuIC9zeXMvYnVzL3NvYy9kZXZpY2VzIGlzIG9mIHBhcnRpY3VsYXIKKwkJaW50ZXJlc3QsIGFzIGl0IGNvbnRhaW5zIGEgc3ltbGluayBmb3IgZWFjaCBTb0MgZGV2aWNlIGZvdW5kIG9uCisJCXRoZSBzeXN0ZW0uIEVhY2ggc3ltbGluayBwb2ludHMgYmFjayBpbnRvIHRoZSBhZm9yZW1lbnRpb25lZAorCQkvc3lzL2RldmljZXMvc29jWCBkZXZpY2VzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLXN1biBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcy1zdW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI1Y2U0YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcy1zdW4KQEAgLTAsMCArMSwxNCBAQAorV2hhdDoJCS9zeXMvZGV2aWNlcy8uLi4vc3VuCitEYXRlOgkJT2N0b2JlciAyMDEyCitDb250YWN0OglZYXN1YWtpIElzaGltYXRzdSA8aXNpbWF0dS55YXN1YWtpQGpwLmZ1aml0c3UuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSBmaWxlIGNvbnRhaW5zIGEgU2xvdC11bmlxdWUgSUQgd2hpY2ggcHJvdmlkZWQgYnkgdGhlIF9TVU4KKwkJbWV0aG9kIGluIHRoZSBBQ1BJIG5hbWVzcGFjZS4gVGhlIHZhbHVlIGlzIHdyaXR0ZW4gaW4gQWR2YW5jZWQKKwkJQ29uZmlndXJhdGlvbiBhbmQgUG93ZXIgSW50ZXJmYWNlIFNwZWNpZmljYXRpb24gYXMgZm9sbG93czoKKworCQkiVGhlIF9TVU4gdmFsdWUgaXMgcmVxdWlyZWQgdG8gYmUgdW5pcXVlIGFtb25nIHRoZSBzbG90cyBvZgorCQl0aGUgc2FtZSB0eXBlLiBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgdGhpcyBudW1iZXIgbWF0Y2gKKwkJdGhlIHNsb3QgbnVtYmVyIHByaW50ZWQgb24gdGhlIHBoeXNpY2FsIHNsb3Qgd2hlbmV2ZXIgcG9zc2libGUuIgorCisJCVNvIHJlYWRpbmcgdGhlIHN5c2ZzIGZpbGUsIHdlIGNhbiBpZGVudGlmeSBhIHBoeXNpY2FsIHBvc2l0aW9uCisJCW9mIHRoZSBzbG90IGluIHRoZSBzeXN0ZW0uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtc3lzdGVtLWNwdSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcy1zeXN0ZW0tY3B1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2ODNlOGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtc3lzdGVtLWNwdQpAQCAtMCwwICsxLDI3MyBAQAorV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1LworRGF0ZToJCXByZS1naXQgaGlzdG9yeQorQ29udGFjdDoJTGludXgga2VybmVsIG1haWxpbmcgbGlzdCA8bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlBIGNvbGxlY3Rpb24gb2YgYm90aCBnbG9iYWwgYW5kIGluZGl2aWR1YWwgQ1BVIGF0dHJpYnV0ZXMKKworCQlJbmRpdmlkdWFsIENQVSBhdHRyaWJ1dGVzIGFyZSBjb250YWluZWQgaW4gc3ViZGlyZWN0b3JpZXMKKwkJbmFtZWQgYnkgdGhlIGtlcm5lbCdzIGxvZ2ljYWwgQ1BVIG51bWJlciwgZS5nLjoKKworCQkvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUjLworCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUva2VybmVsX21heAorCQkvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9vZmZsaW5lCisJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L29ubGluZQorCQkvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9wb3NzaWJsZQorCQkvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9wcmVzZW50CitEYXRlOgkJRGVjZW1iZXIgMjAwOAorQ29udGFjdDoJTGludXgga2VybmVsIG1haWxpbmcgbGlzdCA8bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZz4KK0Rlc2NyaXB0aW9uOglDUFUgdG9wb2xvZ3kgZmlsZXMgdGhhdCBkZXNjcmliZSBrZXJuZWwgbGltaXRzIHJlbGF0ZWQgdG8KKwkJaG90cGx1Zy4gQnJpZWZseToKKworCQlrZXJuZWxfbWF4OiB0aGUgbWF4aW11bSBjcHUgaW5kZXggYWxsb3dlZCBieSB0aGUga2VybmVsCisJCWNvbmZpZ3VyYXRpb24uCisKKwkJb2ZmbGluZTogY3B1cyB0aGF0IGFyZSBub3Qgb25saW5lIGJlY2F1c2UgdGhleSBoYXZlIGJlZW4KKwkJSE9UUExVR0dFRCBvZmYgb3IgZXhjZWVkIHRoZSBsaW1pdCBvZiBjcHVzIGFsbG93ZWQgYnkgdGhlCisJCWtlcm5lbCBjb25maWd1cmF0aW9uIChrZXJuZWxfbWF4IGFib3ZlKS4KKworCQlvbmxpbmU6IGNwdXMgdGhhdCBhcmUgb25saW5lIGFuZCBiZWluZyBzY2hlZHVsZWQuCisKKwkJcG9zc2libGU6IGNwdXMgdGhhdCBoYXZlIGJlZW4gYWxsb2NhdGVkIHJlc291cmNlcyBhbmQgY2FuIGJlCisJCWJyb3VnaHQgb25saW5lIGlmIHRoZXkgYXJlIHByZXNlbnQuCisKKwkJcHJlc2VudDogY3B1cyB0aGF0IGhhdmUgYmVlbiBpZGVudGlmaWVkIGFzIGJlaW5nIHByZXNlbnQgaW4KKwkJdGhlIHN5c3RlbS4KKworCQlTZWUgRG9jdW1lbnRhdGlvbi9jcHV0b3BvbG9neS50eHQgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L3Byb2JlCisJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L3JlbGVhc2UKK0RhdGU6CQlOb3ZlbWJlciAyMDA5CitDb250YWN0OglMaW51eCBrZXJuZWwgbWFpbGluZyBsaXN0IDxsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnPgorRGVzY3JpcHRpb246CUR5bmFtaWMgYWRkaXRpb24gYW5kIHJlbW92YWwgb2YgQ1BVJ3MuICBUaGlzIGlzIG5vdCBob3RwbHVnCisJCXJlbW92YWwsIHRoaXMgaXMgbWVhbnQgY29tcGxldGUgcmVtb3ZhbC9hZGRpdGlvbiBvZiB0aGUgQ1BVCisJCWZyb20gdGhlIHN5c3RlbS4KKworCQlwcm9iZTogd3JpdGVzIHRvIHRoaXMgZmlsZSB3aWxsIGR5bmFtaWNhbGx5IGFkZCBhIENQVSB0byB0aGUKKwkJc3lzdGVtLiAgSW5mb3JtYXRpb24gd3JpdHRlbiB0byB0aGUgZmlsZSB0byBhZGQgQ1BVJ3MgaXMKKwkJYXJjaGl0ZWN0dXJlIHNwZWNpZmljLgorCisJCXJlbGVhc2U6IHdyaXRlcyB0byB0aGlzIGZpbGUgZHluYW1pY2FsbHkgcmVtb3ZlIGEgQ1BVIGZyb20KKwkJdGhlIHN5c3RlbS4gIEluZm9ybWF0aW9uIHdyaXR0ZW50byB0aGUgZmlsZSB0byByZW1vdmUgQ1BVJ3MKKwkJaXMgYXJjaGl0ZWN0dXJlIHNwZWNpZmljLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1Iy9ub2RlCitEYXRlOgkJT2N0b2JlciAyMDA5CitDb250YWN0OglMaW51eCBtZW1vcnkgbWFuYWdlbWVudCBtYWlsaW5nIGxpc3QgPGxpbnV4LW1tQGt2YWNrLm9yZz4KK0Rlc2NyaXB0aW9uOglEaXNjb3ZlciBOVU1BIG5vZGUgYSBDUFUgYmVsb25ncyB0bworCisJCVdoZW4gQ09ORklHX05VTUEgaXMgZW5hYmxlZCwgYSBzeW1ib2xpYyBsaW5rIHRoYXQgcG9pbnRzCisJCXRvIHRoZSBjb3JyZXNwb25kaW5nIE5VTUEgbm9kZSBkaXJlY3RvcnkuCisKKwkJRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgc3ltbGluayBpcyBjcmVhdGVkIGZvciBjcHU0MgorCQlpbiBOVU1BIG5vZGUgMjoKKworCQkvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHU0Mi9ub2RlMiAtPiAuLi8uLi9ub2RlL25vZGUyCisKKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdSMvdG9wb2xvZ3kvY29yZV9pZAorCQkvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUjL3RvcG9sb2d5L2NvcmVfc2libGluZ3MKKwkJL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1Iy90b3BvbG9neS9jb3JlX3NpYmxpbmdzX2xpc3QKKwkJL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1Iy90b3BvbG9neS9waHlzaWNhbF9wYWNrYWdlX2lkCisJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdSMvdG9wb2xvZ3kvdGhyZWFkX3NpYmxpbmdzCisJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdSMvdG9wb2xvZ3kvdGhyZWFkX3NpYmxpbmdzX2xpc3QKK0RhdGU6CQlEZWNlbWJlciAyMDA4CitDb250YWN0OglMaW51eCBrZXJuZWwgbWFpbGluZyBsaXN0IDxsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnPgorRGVzY3JpcHRpb246CUNQVSB0b3BvbG9neSBmaWxlcyB0aGF0IGRlc2NyaWJlIGEgbG9naWNhbCBDUFUncyByZWxhdGlvbnNoaXAKKwkJdG8gb3RoZXIgY29yZXMgYW5kIHRocmVhZHMgaW4gdGhlIHNhbWUgcGh5c2ljYWwgcGFja2FnZS4KKworCQlPbmUgY3B1IyBkaXJlY3RvcnkgaXMgY3JlYXRlZCBwZXIgbG9naWNhbCBDUFUgaW4gdGhlIHN5c3RlbSwKKwkJZS5nLiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHU0Mi8uCisKKwkJQnJpZWZseSwgdGhlIGZpbGVzIGFib3ZlIGFyZToKKworCQljb3JlX2lkOiB0aGUgQ1BVIGNvcmUgSUQgb2YgY3B1Iy4gVHlwaWNhbGx5IGl0IGlzIHRoZQorCQloYXJkd2FyZSBwbGF0Zm9ybSdzIGlkZW50aWZpZXIgKHJhdGhlciB0aGFuIHRoZSBrZXJuZWwncykuCisJCVRoZSBhY3R1YWwgdmFsdWUgaXMgYXJjaGl0ZWN0dXJlIGFuZCBwbGF0Zm9ybSBkZXBlbmRlbnQuCisKKwkJY29yZV9zaWJsaW5nczogaW50ZXJuYWwga2VybmVsIG1hcCBvZiBjcHUjJ3MgaGFyZHdhcmUgdGhyZWFkcworCQl3aXRoaW4gdGhlIHNhbWUgcGh5c2ljYWxfcGFja2FnZV9pZC4KKworCQljb3JlX3NpYmxpbmdzX2xpc3Q6IGh1bWFuLXJlYWRhYmxlIGxpc3Qgb2YgdGhlIGxvZ2ljYWwgQ1BVCisJCW51bWJlcnMgd2l0aGluIHRoZSBzYW1lIHBoeXNpY2FsX3BhY2thZ2VfaWQgYXMgY3B1Iy4KKworCQlwaHlzaWNhbF9wYWNrYWdlX2lkOiBwaHlzaWNhbCBwYWNrYWdlIGlkIG9mIGNwdSMuIFR5cGljYWxseQorCQljb3JyZXNwb25kcyB0byBhIHBoeXNpY2FsIHNvY2tldCBudW1iZXIsIGJ1dCB0aGUgYWN0dWFsIHZhbHVlCisJCWlzIGFyY2hpdGVjdHVyZSBhbmQgcGxhdGZvcm0gZGVwZW5kZW50LgorCisJCXRocmVhZF9zaWJsaW5nczogaW50ZXJuZWwga2VybmVsIG1hcCBvZiBjcHUjJ3MgaGFyZHdhcmUKKwkJdGhyZWFkcyB3aXRoaW4gdGhlIHNhbWUgY29yZSBhcyBjcHUjCisKKwkJdGhyZWFkX3NpYmxpbmdzX2xpc3Q6IGh1bWFuLXJlYWRhYmxlIGxpc3Qgb2YgY3B1IydzIGhhcmR3YXJlCisJCXRocmVhZHMgd2l0aGluIHRoZSBzYW1lIGNvcmUgYXMgY3B1IworCisJCVNlZSBEb2N1bWVudGF0aW9uL2NwdXRvcG9sb2d5LnR4dCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1aWRsZS9jdXJyZW50X2RyaXZlcgorCQkvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHVpZGxlL2N1cnJlbnRfZ292ZXJuZXJfcm8KK0RhdGU6CQlTZXB0ZW1iZXIgMjAwNworQ29udGFjdDoJTGludXgga2VybmVsIG1haWxpbmcgbGlzdCA8bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZz4KK0Rlc2NyaXB0aW9uOglEaXNjb3ZlciBjcHVpZGxlIHBvbGljeSBhbmQgbWVjaGFuaXNtCisKKwkJVmFyaW91cyBDUFVzIHRvZGF5IHN1cHBvcnQgbXVsdGlwbGUgaWRsZSBsZXZlbHMgdGhhdCBhcmUKKwkJZGlmZmVyZW50aWF0ZWQgYnkgdmFyeWluZyBleGl0IGxhdGVuY2llcyBhbmQgcG93ZXIKKwkJY29uc3VtcHRpb24gZHVyaW5nIGlkbGUuCisKKwkJSWRsZSBwb2xpY3kgKGdvdmVybm9yKSBpcyBkaWZmZXJlbnRpYXRlZCBmcm9tIGlkbGUgbWVjaGFuaXNtCisJCShkcml2ZXIpCisKKwkJY3VycmVudF9kcml2ZXI6IGRpc3BsYXlzIGN1cnJlbnQgaWRsZSBtZWNoYW5pc20KKworCQljdXJyZW50X2dvdmVybm9yX3JvOiBkaXNwbGF5cyBjdXJyZW50IGlkbGUgcG9saWN5CisKKwkJU2VlIGZpbGVzIGluIERvY3VtZW50YXRpb24vY3B1aWRsZS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdSMvY3B1ZnJlcS8qCitEYXRlOgkJcHJlLWdpdCBoaXN0b3J5CitDb250YWN0OglsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOglEaXNjb3ZlciBhbmQgY2hhbmdlIGNsb2NrIHNwZWVkIG9mIENQVXMKKworCQlDbG9jayBzY2FsaW5nIGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBjbG9jayBzcGVlZCBvZiB0aGUKKwkJQ1BVcyBvbiB0aGUgZmx5LiBUaGlzIGlzIGEgbmljZSBtZXRob2QgdG8gc2F2ZSBiYXR0ZXJ5CisJCXBvd2VyLCBiZWNhdXNlIHRoZSBsb3dlciB0aGUgY2xvY2sgc3BlZWQsIHRoZSBsZXNzIHBvd2VyCisJCXRoZSBDUFUgY29uc3VtZXMuCisKKwkJVGhlcmUgYXJlIG1hbnkga25vYnMgdG8gdHdlYWsgaW4gdGhpcyBkaXJlY3RvcnkuCisKKwkJU2VlIGZpbGVzIGluIERvY3VtZW50YXRpb24vY3B1LWZyZXEvIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisJCUluIHBhcnRpY3VsYXIsIHJlYWQgRG9jdW1lbnRhdGlvbi9jcHUtZnJlcS91c2VyLWd1aWRlLnR4dAorCQl0byBsZWFybiBob3cgdG8gY29udHJvbCB0aGUga25vYnMuCisKKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdSMvY3B1ZnJlcS9mcmVxZG9tYWluX2NwdXMKK0RhdGU6CQlKdW5lIDIwMTMKK0NvbnRhY3Q6CWxpbnV4LXBtQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CURpc2NvdmVyIENQVXMgaW4gdGhlIHNhbWUgQ1BVIGZyZXF1ZW5jeSBjb29yZGluYXRpb24gZG9tYWluCisKKwkJZnJlcWRvbWFpbl9jcHVzIGlzIHRoZSBsaXN0IG9mIENQVXMgKG9ubGluZStvZmZsaW5lKSB0aGF0IHNoYXJlCisJCXRoZSBzYW1lIGNsb2NrL2ZyZXEgZG9tYWluIChwb3NzaWJseSBhdCB0aGUgaGFyZHdhcmUgbGV2ZWwpLgorCQlUaGF0IGluZm9ybWF0aW9uIG1heSBiZSBoaWRkZW4gZnJvbSB0aGUgY3B1ZnJlcSBjb3JlIGFuZCB0aGUKKwkJdmFsdWUgb2YgcmVsYXRlZF9jcHVzIG1heSBiZSBkaWZmZXJlbnQgZnJvbSBmcmVxZG9tYWluX2NwdXMuIFRoaXMKKwkJYXR0cmlidXRlIGlzIHVzZWZ1bCBmb3IgdXNlciBzcGFjZSBEVkZTIGNvbnRyb2xsZXJzIHRvIGdldCBiZXR0ZXIKKwkJcG93ZXIvcGVyZm9ybWFuY2UgcmVzdWx0cyBmb3IgcGxhdGZvcm1zIHVzaW5nIGFjcGktY3B1ZnJlcS4KKworCQlUaGlzIGZpbGUgaXMgb25seSBwcmVzZW50IGlmIHRoZSBhY3BpLWNwdWZyZXEgZHJpdmVyIGlzIGluIHVzZS4KKworCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1Ki9jYWNoZS9pbmRleDMvY2FjaGVfZGlzYWJsZV97MCwxfQorRGF0ZToJCUF1Z3VzdCAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjcKK0NvbnRhY3Q6CUxpbnV4IGtlcm5lbCBtYWlsaW5nIGxpc3QgPGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc+CitEZXNjcmlwdGlvbjoJRGlzYWJsZSBMMyBjYWNoZSBpbmRpY2VzCisKKwkJVGhlc2UgZmlsZXMgZXhpc3QgaW4gZXZlcnkgQ1BVJ3MgY2FjaGUvaW5kZXgzIGRpcmVjdG9yeS4gRWFjaAorCQljYWNoZV9kaXNhYmxlX3swLDF9IGZpbGUgY29ycmVzcG9uZHMgdG8gb25lIGRpc2FibGUgc2xvdCB3aGljaAorCQljYW4gYmUgdXNlZCB0byBkaXNhYmxlIGEgY2FjaGUgaW5kZXguIFJlYWRpbmcgZnJvbSB0aGVzZSBmaWxlcworCQlvbiBhIHByb2Nlc3NvciB3aXRoIHRoaXMgZnVuY3Rpb25hbGl0eSB3aWxsIHJldHVybiB0aGUgY3VycmVudGx5CisJCWRpc2FibGVkIGluZGV4IGZvciB0aGF0IG5vZGUuIFRoZXJlIGlzIG9uZSBMMyBzdHJ1Y3R1cmUgcGVyCisJCW5vZGUsIG9yIHBlciBpbnRlcm5hbCBub2RlIG9uIE1DTSBtYWNoaW5lcy4gV3JpdGluZyBhIHZhbGlkCisJCWluZGV4IHRvIG9uZSBvZiB0aGVzZSBmaWxlcyB3aWxsIGNhdXNlIHRoZSBzcGVjaWZpY2VkIGNhY2hlCisJCWluZGV4IHRvIGJlIGRpc2FibGVkLgorCisJCUFsbCBBTUQgcHJvY2Vzc29ycyB3aXRoIEwzIGNhY2hlcyBwcm92aWRlIHRoaXMgZnVuY3Rpb25hbGl0eS4KKwkJRm9yIGRldGFpbHMsIHNlZSBCS0RHcyBhdAorCQlodHRwOi8vZGV2ZWxvcGVyLmFtZC5jb20vZG9jdW1lbnRhdGlvbi9ndWlkZXMvUGFnZXMvZGVmYXVsdC5hc3B4CisKKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdWZyZXEvYm9vc3QKK0RhdGU6CQlBdWd1c3QgMjAxMgorQ29udGFjdDoJTGludXgga2VybmVsIG1haWxpbmcgbGlzdCA8bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZz4KK0Rlc2NyaXB0aW9uOglQcm9jZXNzb3IgZnJlcXVlbmN5IGJvb3N0aW5nIGNvbnRyb2wKKworCQlUaGlzIHN3aXRjaCBjb250cm9scyB0aGUgYm9vc3Qgc2V0dGluZyBmb3IgdGhlIHdob2xlIHN5c3RlbS4KKwkJQm9vc3RpbmcgYWxsb3dzIHRoZSBDUFUgYW5kIHRoZSBmaXJtd2FyZSB0byBydW4gYXQgYSBmcmVxdWVuY3kKKwkJYmV5b3VuZCBpdCdzIG5vbWluYWwgbGltaXQuCisJCU1vcmUgZGV0YWlscyBjYW4gYmUgZm91bmQgaW4gRG9jdW1lbnRhdGlvbi9jcHUtZnJlcS9ib29zdC50eHQKKworCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1Iy9jcmFzaF9ub3RlcworCQkvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUjL2NyYXNoX25vdGVzX3NpemUKK0RhdGU6CQlBcHJpbCAyMDEzCitDb250YWN0OglrZXhlY0BsaXN0cy5pbmZyYWRlYWQub3JnCitEZXNjcmlwdGlvbjoJYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgcGVyY3B1IG5vdGUuCisKKwkJY3Jhc2hfbm90ZXM6IHRoZSBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBtZW1vcnkgdGhhdCBob2xkcyB0aGUKKwkJbm90ZSBvZiBjcHUjLgorCisJCWNyYXNoX25vdGVzX3NpemU6IHNpemUgb2YgdGhlIG5vdGUgb2YgY3B1Iy4KKworCitXaGF0OgkJL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvaW50ZWxfcHN0YXRlL21heF9wZXJmX3BjdAorCQkvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9pbnRlbF9wc3RhdGUvbWluX3BlcmZfcGN0CisJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2ludGVsX3BzdGF0ZS9ub190dXJibworRGF0ZToJCUZlYnJ1YXJ5IDIwMTMKK0NvbnRhY3Q6CWxpbnV4LXBtQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CVBhcmFtZXRlcnMgZm9yIHRoZSBJbnRlbCBQLXN0YXRlIGRyaXZlcgorCisJCUxvZ2ljIGZvciBzZWxlY3RpbmcgdGhlIGN1cnJlbnQgUC1zdGF0ZSBpbiBJbnRlbAorCQlTYW5keWJyaWRnZSsgcHJvY2Vzc29ycy4gVGhlIHRocmVlIGtub2JzIGNvbnRyb2wKKwkJbGltaXRzIGZvciB0aGUgUC1zdGF0ZSB0aGF0IHdpbGwgYmUgcmVxdWVzdGVkIGJ5IHRoZQorCQlkcml2ZXIuCisKKwkJbWF4X3BlcmZfcGN0OiBsaW1pdHMgdGhlIG1heGltdW0gUCBzdGF0ZSB0aGF0IHdpbGwgYmUgcmVxdWVzdGVkIGJ5CisJCXRoZSBkcml2ZXIgc3RhdGVkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgYXZhaWxhYmxlIHBlcmZvcm1hbmNlLgorCisJCW1pbl9wZXJmX3BjdDogbGltaXRzIHRoZSBtaW5pbXVtIFAgc3RhdGUgdGhhdCB3aWxsIGJlIHJlcXVlc3RlZCBieQorCQl0aGUgZHJpdmVyIHN0YXRlZCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGF2YWlsYWJsZSBwZXJmb3JtYW5jZS4KKworCQlub190dXJibzogbGltaXRzIHRoZSBkcml2ZXIgdG8gc2VsZWN0aW5nIFAgc3RhdGVzIGJlbG93IHRoZSB0dXJibworCQlmcmVxdWVuY3kgcmFuZ2UuCisKKwkJTW9yZSBkZXRhaWxzIGNhbiBiZSBmb3VuZCBpbiBEb2N1bWVudGF0aW9uL2NwdS1mcmVxL2ludGVsLXBzdGF0ZS50eHQKKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdSovY2FjaGUvaW5kZXgqLzxzZXRfb2ZfYXR0cmlidXRlc19tZW50aW9uZWRfYmVsb3c+CitEYXRlOgkJSnVseSAyMDE0KGRvY3VtZW50ZWQsIGV4aXN0ZWQgYmVmb3JlIEF1Z3VzdCAyMDA4KQorQ29udGFjdDoJU3VkZWVwIEhvbGxhIDxzdWRlZXAuaG9sbGFAYXJtLmNvbT4KKwkJTGludXgga2VybmVsIG1haWxpbmcgbGlzdCA8bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZz4KK0Rlc2NyaXB0aW9uOglQYXJhbWV0ZXJzIGZvciB0aGUgQ1BVIGNhY2hlIGF0dHJpYnV0ZXMKKworCQlhbGxvY2F0aW9uX3BvbGljeToKKwkJCS0gV3JpdGVBbGxvY2F0ZTogYWxsb2NhdGUgYSBtZW1vcnkgbG9jYXRpb24gdG8gYSBjYWNoZSBsaW5lCisJCQkJCSBvbiBhIGNhY2hlIG1pc3MgYmVjYXVzZSBvZiBhIHdyaXRlCisJCQktIFJlYWRBbGxvY2F0ZTogYWxsb2NhdGUgYSBtZW1vcnkgbG9jYXRpb24gdG8gYSBjYWNoZSBsaW5lCisJCQkJCW9uIGEgY2FjaGUgbWlzcyBiZWNhdXNlIG9mIGEgcmVhZAorCQkJLSBSZWFkV3JpdGVBbGxvY2F0ZTogYm90aCB3cml0ZWFsbG9jYXRlIGFuZCByZWFkYWxsb2NhdGUKKworCQlhdHRyaWJ1dGVzOiBMRUdBQ1kgdXNlZCBvbmx5IG9uIElBNjQgYW5kIGlzIHNhbWUgYXMgd3JpdGVfcG9saWN5CisKKwkJY29oZXJlbmN5X2xpbmVfc2l6ZTogdGhlIG1pbmltdW0gYW1vdW50IG9mIGRhdGEgaW4gYnl0ZXMgdGhhdCBnZXRzCisJCQkJICAgICB0cmFuc2ZlcnJlZCBmcm9tIG1lbW9yeSB0byBjYWNoZQorCisJCWxldmVsOiB0aGUgY2FjaGUgaGllcmFyY2h5IGluIHRoZSBtdWx0aS1sZXZlbCBjYWNoZSBjb25maWd1cmF0aW9uCisKKwkJbnVtYmVyX29mX3NldHM6IHRvdGFsIG51bWJlciBvZiBzZXRzIGluIHRoZSBjYWNoZSwgYSBzZXQgaXMgYQorCQkJCWNvbGxlY3Rpb24gb2YgY2FjaGUgbGluZXMgd2l0aCB0aGUgc2FtZSBjYWNoZSBpbmRleAorCisJCXBoeXNpY2FsX2xpbmVfcGFydGl0aW9uOiBudW1iZXIgb2YgcGh5c2ljYWwgY2FjaGUgbGluZSBwZXIgY2FjaGUgdGFnCisKKwkJc2hhcmVkX2NwdV9saXN0OiB0aGUgbGlzdCBvZiBsb2dpY2FsIGNwdXMgc2hhcmluZyB0aGUgY2FjaGUKKworCQlzaGFyZWRfY3B1X21hcDogbG9naWNhbCBjcHUgbWFzayBjb250YWluaW5nIHRoZSBsaXN0IG9mIGNwdXMgc2hhcmluZworCQkJCXRoZSBjYWNoZQorCisJCXNpemU6IHRoZSB0b3RhbCBjYWNoZSBzaXplIGluIGtCCisKKwkJdHlwZToKKwkJCS0gSW5zdHJ1Y3Rpb246IGNhY2hlIHRoYXQgb25seSBob2xkcyBpbnN0cnVjdGlvbnMKKwkJCS0gRGF0YTogY2FjaGUgdGhhdCBvbmx5IGNhY2hlcyBkYXRhCisJCQktIFVuaWZpZWQ6IGNhY2hlIHRoYXQgaG9sZHMgYm90aCBkYXRhIGFuZCBpbnN0cnVjdGlvbnMKKworCQl3YXlzX29mX2Fzc29jaWF0aXZpdHk6IGRlZ3JlZSBvZiBmcmVlZG9tIGluIHBsYWNpbmcgYSBwYXJ0aWN1bGFyIGJsb2NrCisJCQkJCW9mIG1lbW9yeSBpbiB0aGUgY2FjaGUKKworCQl3cml0ZV9wb2xpY3k6CisJCQktIFdyaXRlVGhyb3VnaDogZGF0YSBpcyB3cml0dGVuIHRvIGJvdGggdGhlIGNhY2hlIGxpbmUKKwkJCQkJYW5kIHRvIHRoZSBibG9jayBpbiB0aGUgbG93ZXItbGV2ZWwgbWVtb3J5CisJCQktIFdyaXRlQmFjazogZGF0YSBpcyB3cml0dGVuIG9ubHkgdG8gdGhlIGNhY2hlIGxpbmUgYW5kCisJCQkJICAgICB0aGUgbW9kaWZpZWQgY2FjaGUgbGluZSBpcyB3cml0dGVuIHRvIG1haW4KKwkJCQkgICAgIG1lbW9yeSBvbmx5IHdoZW4gaXQgaXMgcmVwbGFjZWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcy1zeXN0ZW0taWJtLXJ0bCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcy1zeXN0ZW0taWJtLXJ0bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODJkZWVhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLXN5c3RlbS1pYm0tcnRsCkBAIC0wLDAgKzEsMjIgQEAKK1doYXQ6ICAgICAgICAgICBzdGF0ZQorRGF0ZTogICAgICAgICAgIFNlcCAyMDEwCitLZXJuZWxWZXJzaW9uOiAgMi42LjM3CitDb250YWN0OiAgICAgICAgVmVybm9uIE1hdWVyeSA8dmVybnV4QHVzLmlibS5jb20+CitEZXNjcmlwdGlvbjogICAgVGhlIHN0YXRlIGZpbGUgYWxsb3dzIGEgbWVhbnMgYnkgd2hpY2ggdG8gY2hhbmdlIGluIGFuZAorICAgICAgICAgICAgICAgIG91dCBvZiBQcmVtaXVtIFJlYWwtVGltZSBNb2RlIChQUlRNKSwgYXMgd2VsbCBhcyB0aGUKKyAgICAgICAgICAgICAgICBhYmlsaXR5IHRvIHF1ZXJ5IHRoZSBjdXJyZW50IHN0YXRlLgorICAgICAgICAgICAgICAgICAgICAwID0+IFBSVE0gb2ZmCisgICAgICAgICAgICAgICAgICAgIDEgPT4gUFJUTSBlbmFibGVkCitVc2VyczogICAgICAgICAgVGhlIGlibS1wcnRtIHVzZXJzcGFjZSBkYWVtb24gdXNlcyB0aGlzIGludGVyZmFjZS4KKworCitXaGF0OiAgICAgICAgICAgdmVyc2lvbgorRGF0ZTogICAgICAgICAgIFNlcCAyMDEwCitLZXJuZWxWZXJzaW9uOiAgMi42LjM3CitDb250YWN0OiAgICAgICAgVmVybm9uIE1hdWVyeSA8dmVybnV4QHVzLmlibS5jb20+CitEZXNjcmlwdGlvbjogICAgVGhlIHZlcnNpb24gZmlsZSBwcm92aWRlcyBhIG1lYW5zIGJ5IHdoaWNoIHRvIHF1ZXJ5CisgICAgICAgICAgICAgICAgdGhlIFJUTCB0YWJsZSB2ZXJzaW9uIHRoYXQgbGl2ZXMgaW4gdGhlIEV4dGVuZGVkCisgICAgICAgICAgICAgICAgQklPUyBEYXRhIEFyZWEgKEVCREEpLgorVXNlcnM6ICAgICAgICAgIFRoZSBpYm0tcHJ0bSB1c2Vyc3BhY2UgZGFlbW9uIHVzZXMgdGhpcyBpbnRlcmZhY2UuCisKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLXN5c3RlbS14ZW5fY3B1IGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLXN5c3RlbS14ZW5fY3B1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljYTAyZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRldmljZXMtc3lzdGVtLXhlbl9jcHUKQEAgLTAsMCArMSwyMCBAQAorV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0veGVuX2NwdS8KK0RhdGU6CQlNYXkgMjAxMgorQ29udGFjdDoJTGl1LCBKaW5zb25nIDxqaW5zb25nLmxpdUBpbnRlbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJQSBjb2xsZWN0aW9uIG9mIGdsb2JhbC9pbmRpdmlkdWFsIFhlbiBwaHlzaWNhbCBjcHUgYXR0cmlidXRlcworCisJCUluZGl2aWR1YWwgcGh5c2ljYWwgY3B1IGF0dHJpYnV0ZXMgYXJlIGNvbnRhaW5lZCBpbgorCQlzdWJkaXJlY3RvcmllcyBuYW1lZCBieSB0aGUgWGVuJ3MgbG9naWNhbCBjcHUgbnVtYmVyLCBlLmcuOgorCQkvc3lzL2RldmljZXMvc3lzdGVtL3hlbl9jcHUveGVuX2NwdSMvCisKKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0veGVuX2NwdS94ZW5fY3B1Iy9vbmxpbmUKK0RhdGU6CQlNYXkgMjAxMgorQ29udGFjdDoJTGl1LCBKaW5zb25nIDxqaW5zb25nLmxpdUBpbnRlbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJSW50ZXJmYWNlIHRvIG9ubGluZS9vZmZsaW5lIFhlbiBwaHlzaWNhbCBjcHVzCisKKwkJV2hlbiBydW5uaW5nIHVuZGVyIFhlbiBwbGF0Zm9ybSwgaXQgcHJvdmlkZSB1c2VyIGludGVyZmFjZQorCQl0byBvbmxpbmUvb2ZmbGluZSBwaHlzaWNhbCBjcHVzLCBleGNlcHQgY3B1MCBkdWUgdG8gc2V2ZXJhbAorCQlsb2dpYyByZXN0cmljdGlvbnMgYW5kIGFzc3VtcHRpb25zLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItZ2Vud3FlIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItZ2Vud3FlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0YWM2ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1nZW53cWUKQEAgLTAsMCArMSw3MSBAQAorV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvZ2Vud3FlL2dlbndxZTxuPl9jYXJkL3ZlcnNpb24KK0RhdGU6ICAgICAgICAgICBPY3QgMjAxMworQ29udGFjdDogICAgICAgIGhhdmVyQGxpbnV4LnZuZXQuaWJtLmNvbQorRGVzY3JpcHRpb246ICAgIFVuaXF1ZSBiaXRzdHJlYW0gaWRlbnRpZmljYXRpb24gZS5nLgorICAgICAgICAgICAgICAgICcwMDAwMDAwMzMwMzM2MjgzLjAwMDAwMDAwNDc1YTQ5NTAnLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9nZW53cWUvZ2Vud3FlPG4+X2NhcmQvYXBwaWQKK0RhdGU6ICAgICAgICAgICBPY3QgMjAxMworQ29udGFjdDogICAgICAgIGhhdmVyQGxpbnV4LnZuZXQuaWJtLmNvbQorRGVzY3JpcHRpb246ICAgIElkZW50aWZpZXMgdGhlIGN1cnJlbnRseSBhY3RpdmUgY2FyZCBhcHBsaWNhdGlvbiBlLmcuICdHWklQJworICAgICAgICAgICAgICAgIGZvciBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9nZW53cWUvZ2Vud3FlPG4+X2NhcmQvdHlwZQorRGF0ZTogICAgICAgICAgIE9jdCAyMDEzCitDb250YWN0OiAgICAgICAgaGF2ZXJAbGludXgudm5ldC5pYm0uY29tCitEZXNjcmlwdGlvbjogICAgVHlwZSBvZiB0aGUgY2FyZCBlLmcuICdHZW5XUUU1LUE3Jy4KKworV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvZ2Vud3FlL2dlbndxZTxuPl9jYXJkL2N1cnJfYml0c3RyZWFtCitEYXRlOiAgICAgICAgICAgT2N0IDIwMTMKK0NvbnRhY3Q6ICAgICAgICBoYXZlckBsaW51eC52bmV0LmlibS5jb20KK0Rlc2NyaXB0aW9uOiAgICBDdXJyZW50bHkgYWN0aXZlIGJpdHN0cmVhbS4gMSBpcyBkZWZhdWx0LCAwIGlzIGJhY2t1cC4KKworV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvZ2Vud3FlL2dlbndxZTxuPl9jYXJkL25leHRfYml0c3RyZWFtCitEYXRlOiAgICAgICAgICAgT2N0IDIwMTMKK0NvbnRhY3Q6ICAgICAgICBoYXZlckBsaW51eC52bmV0LmlibS5jb20KK0Rlc2NyaXB0aW9uOiAgICBJbnRlcmZhY2UgdG8gc2V0IHRoZSBuZXh0IGJpdHN0cmVhbSB0byBiZSB1c2VkLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9nZW53cWUvZ2Vud3FlPG4+X2NhcmQvcmVsb2FkX2JpdHN0cmVhbQorRGF0ZTogICAgICAgICAgIE1heSAyMDE0CitDb250YWN0OiAgICAgICAga2xlYmVyc0BsaW51eC52bmV0LmlibS5jb20KK0Rlc2NyaXB0aW9uOiAgICBJbnRlcmZhY2UgdG8gdHJpZ2dlciBhIFBDSWUgY2FyZCByZXNldCB0byByZWxvYWQgdGhlIGJpdHN0cmVhbS4KKyAgICAgICAgICAgICAgICAgIHN1ZG8gc2ggLWMgJ2VjaG8gMSA+IFwKKyAgICAgICAgICAgICAgICAgICAgL3N5cy9jbGFzcy9nZW53cWUvZ2Vud3FlMF9jYXJkL3JlbG9hZF9iaXRzdHJlYW0nCisgICAgICAgICAgICAgICAgSWYgc3VjY2Vzc2Z1bGx5LCB0aGUgY2FyZCB3aWxsIGNvbWUgYmFjayB3aXRoIHRoZSBiaXRzdHJlYW0gc2V0CisgICAgICAgICAgICAgICAgb24gJ25leHRfYml0c3RyZWFtJy4KKworV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvZ2Vud3FlL2dlbndxZTxuPl9jYXJkL3RlbXBzZW5zCitEYXRlOiAgICAgICAgICAgT2N0IDIwMTMKK0NvbnRhY3Q6ICAgICAgICBoYXZlckBsaW51eC52bmV0LmlibS5jb20KK0Rlc2NyaXB0aW9uOiAgICBJbnRlcmZhY2UgdG8gcmVhZCB0aGUgY2FyZHMgdGVtcGVyYXR1cmUgc2Vuc2UgcmVnaXN0ZXIuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2NsYXNzL2dlbndxZS9nZW53cWU8bj5fY2FyZC9mcmVlcnVubmluZ190aW1lcgorRGF0ZTogICAgICAgICAgIE9jdCAyMDEzCitDb250YWN0OiAgICAgICAgaGF2ZXJAbGludXgudm5ldC5pYm0uY29tCitEZXNjcmlwdGlvbjogICAgSW50ZXJmYWNlIHRvIHJlYWQgdGhlIGNhcmRzIGZyZWUgcnVubmluZyB0aW1lci4KKyAgICAgICAgICAgICAgICBVc2VkIGZvciBwZXJmb3JtYW5jZSBhbmQgdXRpbGl6YXRpb24gbWVhc3VyZW1lbnRzLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9nZW53cWUvZ2Vud3FlPG4+X2NhcmQvcXVldWVfd29ya2luZ190aW1lCitEYXRlOiAgICAgICAgICAgT2N0IDIwMTMKK0NvbnRhY3Q6ICAgICAgICBoYXZlckBsaW51eC52bmV0LmlibS5jb20KK0Rlc2NyaXB0aW9uOiAgICBJbnRlcmZhY2UgdG8gcmVhZCBxdWV1ZSB3b3JraW5nIHRpbWUuCisgICAgICAgICAgICAgICAgVXNlZCBmb3IgcGVyZm9ybWFuY2UgYW5kIHV0aWxpemF0aW9uIG1lYXN1cmVtZW50cy4KKworV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvZ2Vud3FlL2dlbndxZTxuPl9jYXJkL3N0YXRlCitEYXRlOiAgICAgICAgICAgT2N0IDIwMTMKK0NvbnRhY3Q6ICAgICAgICBoYXZlckBsaW51eC52bmV0LmlibS5jb20KK0Rlc2NyaXB0aW9uOiAgICBTdGF0ZSBvZiB0aGUgY2FyZDogInVudXNlZCIsICJ1c2VkIiwgImVycm9yIi4KKworV2hhdDogICAgICAgICAgIC9zeXMvY2xhc3MvZ2Vud3FlL2dlbndxZTxuPl9jYXJkL2Jhc2VfY2xvY2sKK0RhdGU6ICAgICAgICAgICBPY3QgMjAxMworQ29udGFjdDogICAgICAgIGhhdmVyQGxpbnV4LnZuZXQuaWJtLmNvbQorRGVzY3JpcHRpb246ICAgIEJhc2UgY2xvY2sgZnJlcXVlbmN5IG9mIHRoZSBjYXJkLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9jbGFzcy9nZW53cWUvZ2Vud3FlPG4+X2NhcmQvZGV2aWNlL3NyaW92X251bXZmcworRGF0ZTogICAgICAgICAgIE9jdCAyMDEzCitDb250YWN0OiAgICAgICAgaGF2ZXJAbGludXgudm5ldC5pYm0uY29tCitEZXNjcmlwdGlvbjogICAgRW5hYmxlIFZGcyAoMS4uMTUpOgorICAgICAgICAgICAgICAgICAgc3VkbyBzaCAtYyAnZWNobyAxNSA+IFwKKyAgICAgICAgICAgICAgICAgICAgL3N5cy9idXMvcGNpL2RldmljZXMvMDAwMFw6MWJcOjAwLjAvc3Jpb3ZfbnVtdmZzJworICAgICAgICAgICAgICAgIERpc2FibGUgVkZzOgorICAgICAgICAgICAgICAgICAgV3JpdGUgYSAwIGludG8gdGhlIHNhbWUgc3lzZnMgZW50cnkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1oaWQgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1oaWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg5NDJjYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLWhpZApAQCAtMCwwICsxLDIwIEBACitXaGF0OgkJRm9yIFVTQiBkZXZpY2VzCTogL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L3JlcG9ydF9kZXNjcmlwdG9yCisJCUZvciBCVCBkZXZpY2VzCTogL3N5cy9jbGFzcy9ibHVldG9vdGgvaGNpPGFkZHI+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vcmVwb3J0X2Rlc2NyaXB0b3IKKwkJU3ltbGluawkJOiAvc3lzL2NsYXNzL2hpZHJhdy9oaWRyYXc8bnVtPi9kZXZpY2UvcmVwb3J0X2Rlc2NyaXB0b3IKK0RhdGU6CQlKYW4gMjAxMQorS2VybmVsVmVyc2lvbjoJMi4wLjM5CitDb250YWN0OglBbGFuIE90dCA8YWxhbkBzaWduYWwxMS51cz4KK0Rlc2NyaXB0aW9uOglXaGVuIHJlYWQsIHRoaXMgZmlsZSByZXR1cm5zIHRoZSBkZXZpY2UncyByYXcgYmluYXJ5IEhJRAorCQlyZXBvcnQgZGVzY3JpcHRvci4KKwkJVGhpcyBmaWxlIGNhbm5vdCBiZSB3cml0dGVuLgorVXNlcnM6CQlISURBUEkgbGlicmFyeSAoaHR0cDovL3d3dy5zaWduYWwxMS51cy9vc3MvaGlkYXBpKQorCitXaGF0OgkJRm9yIFVTQiBkZXZpY2VzCTogL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L2NvdW50cnkKKwkJRm9yIEJUIGRldmljZXMJOiAvc3lzL2NsYXNzL2JsdWV0b290aC9oY2k8YWRkcj4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9jb3VudHJ5CisJCVN5bWxpbmsJCTogL3N5cy9jbGFzcy9oaWRyYXcvaGlkcmF3PG51bT4vZGV2aWNlL2NvdW50cnkKK0RhdGU6CQlGZWJydWFyeSAyMDE1CitLZXJuZWxWZXJzaW9uOgkzLjE5CitDb250YWN0OglPbGl2aWVyIEdheSA8b2dheUBsb2dpdGVjaC5jb20+CitEZXNjcmlwdGlvbjoJV2hlbiByZWFkLCB0aGlzIGZpbGUgcmV0dXJucyB0aGUgaGV4IGludGVnZXIgdmFsdWUgaW4gQVNDSUkKKwkJb2YgdGhlIGRldmljZSdzIEhJRCBjb3VudHJ5IGNvZGUgKGUuZy4gMjEgZm9yIFVTKS4KKwkJVGhpcyBmaWxlIGNhbm5vdCBiZSB3cml0dGVuLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItaGlkLWNvcnNhaXIgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1oaWQtY29yc2FpcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODgyN2YwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItaGlkLWNvcnNhaXIKQEAgLTAsMCArMSwxNSBAQAorV2hhdDoJCS9zeXMvYnVzL2RyaXZlcnMvY29yc2Fpci88ZGV2Pi9tYWNyb19tb2RlCitEYXRlOgkJQXVndXN0IDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMgorQ29udGFjdDoJQ2xlbWVudCBWdWNoZW5lciA8Y2xlbWVudC52dWNoZW5lckBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoJR2V0L3NldCB0aGUgY3VycmVudCBwbGF5YmFjayBtb2RlLiAiU1ciIGZvciBzb2Z0d2FyZSBtb2RlCisJCXdoZXJlIEcta2V5cyB0cmlnZ2VycyB0aGVpciByZWd1bGFyIGtleSBjb2Rlcy4gIkhXIiBmb3IKKwkJaGFyZHdhcmUgcGxheWJhY2sgbW9kZSB3aGVyZSB0aGUgRy1rZXlzIHBsYXkgdGhlaXIgbWFjcm8KKwkJZnJvbSB0aGUgb24tYm9hcmQgbWVtb3J5LgorCisKK1doYXQ6CQkvc3lzL2J1cy9kcml2ZXJzL2NvcnNhaXIvPGRldj4vY3VycmVudF9wcm9maWxlCitEYXRlOgkJQXVndXN0IDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMgorQ29udGFjdDoJQ2xlbWVudCBWdWNoZW5lciA8Y2xlbWVudC52dWNoZW5lckBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoJR2V0L3NldCB0aGUgY3VycmVudCBzZWxlY3RlZCBwcm9maWxlLiBWYWx1ZXMgYXJlIGZyb20gMSB0byAzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItaGlkLWxlbm92byBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLWhpZC1sZW5vdm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNhMDcyNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLWhpZC1sZW5vdm8KQEAgLTAsMCArMSw1MCBAQAorV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9wcmVzc190b19zZWxlY3QKK0RhdGU6CQlKdWx5IDIwMTEKK0NvbnRhY3Q6CWxpbnV4LWlucHV0QHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CVRoaXMgY29udHJvbHMgaWYgbW91c2UgY2xpY2tzIHNob3VsZCBiZSBnZW5lcmF0ZWQgaWYgdGhlIHRyYWNrcG9pbnQgaXMgcXVpY2tseSBwcmVzc2VkLiBIb3cgZmFzdCB0aGlzIHByZXNzIGhhcyB0byBiZQorCQlpcyBiZWluZyBjb250cm9sbGVkIGJ5IHByZXNzX3NwZWVkLgorCQlWYWx1ZXMgYXJlIDAgb3IgMS4KKwkJQXBwbGllcyB0byBUaGlua3BhZCBVU0IgS2V5Ym9hcmQgd2l0aCBUcmFja1BvaW50LgorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L2RyYWdnaW5nCitEYXRlOgkJSnVseSAyMDExCitDb250YWN0OglsaW51eC1pbnB1dEB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOglJZiB0aGlzIHNldHRpbmcgaXMgZW5hYmxlZCwgaXQgaXMgcG9zc2libGUgdG8gZG8gZHJhZ2dpbmcgYnkgcHJlc3NpbmcgdGhlIHRyYWNrcG9pbnQuIFRoaXMgcmVxdWlyZXMgcHJlc3NfdG9fc2VsZWN0IHRvIGJlIGVuYWJsZWQuCisJCVZhbHVlcyBhcmUgMCBvciAxLgorCQlBcHBsaWVzIHRvIFRoaW5rcGFkIFVTQiBLZXlib2FyZCB3aXRoIFRyYWNrUG9pbnQuCisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vcmVsZWFzZV90b19zZWxlY3QKK0RhdGU6CQlKdWx5IDIwMTEKK0NvbnRhY3Q6CWxpbnV4LWlucHV0QHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CUZvciBkZXRhaWxzIHJlZ2FyZGluZyB0aGlzIHNldHRpbmcgcGxlYXNlIHJlZmVyIHRvIGh0dHA6Ly93d3cucGMuaWJtLmNvbS93dy9oZWFsdGh5Y29tcHV0aW5nL3Rya3BudGIuaHRtbAorCQlWYWx1ZXMgYXJlIDAgb3IgMS4KKwkJQXBwbGllcyB0byBUaGlua3BhZCBVU0IgS2V5Ym9hcmQgd2l0aCBUcmFja1BvaW50LgorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L3NlbGVjdF9yaWdodAorRGF0ZToJCUp1bHkgMjAxMQorQ29udGFjdDoJbGludXgtaW5wdXRAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoJVGhpcyBzZXR0aW5nIGNvbnRyb2xzIGlmIHRoZSBtb3VzZSBjbGljayBldmVudHMgZ2VuZXJhdGVkIGJ5IHByZXNzaW5nIHRoZSB0cmFja3BvaW50IChpZiBwcmVzc190b19zZWxlY3QgaXMgZW5hYmxlZCkgZ2VuZXJhdGUKKwkJYSBsZWZ0IG9yIHJpZ2h0IG1vdXNlIGJ1dHRvbiBjbGljay4KKwkJVmFsdWVzIGFyZSAwIG9yIDEuCisJCUFwcGxpZXMgdG8gVGhpbmtwYWQgVVNCIEtleWJvYXJkIHdpdGggVHJhY2tQb2ludC4KKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9zZW5zaXRpdml0eQorRGF0ZToJCUp1bHkgMjAxMQorQ29udGFjdDoJbGludXgtaW5wdXRAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoJVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSB0cmFja3BvaW50IHNlbnNpdGl2aXR5LgorCQlWYWx1ZXMgYXJlIGRlY2ltYWwgaW50ZWdlcnMgZnJvbSAxIChsb3dlc3Qgc2Vuc2l0aXZpdHkpIHRvIDI1NSAoaGlnaGVzdCBzZW5zaXRpdml0eSkuCisJCUFwcGxpZXMgdG8gVGhpbmtwYWQgVVNCIEtleWJvYXJkIHdpdGggVHJhY2tQb2ludC4KKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9wcmVzc19zcGVlZAorRGF0ZToJCUp1bHkgMjAxMQorQ29udGFjdDoJbGludXgtaW5wdXRAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoJVGhpcyBzZXR0aW5nIGNvbnRyb2xzIGhvdyBmYXN0IHRoZSB0cmFja3BvaW50IG5lZWRzIHRvIGJlIHByZXNzZWQgdG8gZ2VuZXJhdGUgYSBtb3VzZSBjbGljayBpZiBwcmVzc190b19zZWxlY3QgaXMgZW5hYmxlZC4KKwkJVmFsdWVzIGFyZSBkZWNpbWFsIGludGVnZXJzIGZyb20gMSAoc2xvd2VzdCkgdG8gMjU1IChmYXN0ZXN0KS4KKwkJQXBwbGllcyB0byBUaGlua3BhZCBVU0IgS2V5Ym9hcmQgd2l0aCBUcmFja1BvaW50LgorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L2ZuX2xvY2sKK0RhdGU6CQlKdWx5IDIwMTQKK0NvbnRhY3Q6CWxpbnV4LWlucHV0QHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CVRoaXMgc2V0dGluZyBjb250cm9scyB3aGV0aGVyIEZuIExvY2sgaXMgZW5hYmxlZCBvbiB0aGUga2V5Ym9hcmQgKGkuZS4gaWYgRjEgaXMgTXV0ZSBvciBGMSkKKwkJVmFsdWVzIGFyZSAwIG9yIDEKKwkJQXBwbGllcyB0byBUaGlua1BhZCBDb21wYWN0IChVU0J8Qmx1ZXRvb3RoKSBLZXlib2FyZCB3aXRoIFRyYWNrUG9pbnQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1oaWQtbG9naXRlY2gtbGc0ZmYgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1oaWQtbG9naXRlY2gtbGc0ZmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGIxOTdhOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLWhpZC1sb2dpdGVjaC1sZzRmZgpAQCAtMCwwICsxLDUyIEBACitXaGF0OgkJL3N5cy9idXMvaGlkL2RyaXZlcnMvbG9naXRlY2gvPGRldj4vcmFuZ2UKK0RhdGU6CQlKdWx5IDIwMTEKK0tlcm5lbFZlcnNpb246CTMuMgorQ29udGFjdDoJTWljaGFsIE1hbMO9IDxtYWRjYXR4c3RlckBkZXZvaWQtcG9pbnRlci5uZXQ+CitEZXNjcmlwdGlvbjoJRGlzcGxheSBtaW5pbXVtLCBtYXhpbXVtIGFuZCBjdXJyZW50IHJhbmdlIG9mIHRoZSBzdGVlcmluZworCQl3aGVlbC4gV3JpdGluZyBhIHZhbHVlIHdpdGhpbiBtaW4gYW5kIG1heCBib3VuZGFyaWVzIHNldHMgdGhlCisJCXJhbmdlIG9mIHRoZSB3aGVlbC4KKworV2hhdDoJCS9zeXMvYnVzL2hpZC9kcml2ZXJzL2xvZ2l0ZWNoLzxkZXY+L2FsdGVybmF0ZV9tb2RlcworRGF0ZToJCUZlYiAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjEKK0NvbnRhY3Q6CU1pY2hhbCBNYWzDvSA8bWFkY2F0eHN0ZXJAZGV2b2lkLXBvaW50ZXIubmV0PgorRGVzY3JpcHRpb246CURpc3BsYXlzIGEgc2V0IG9mIGFsdGVybmF0ZSBtb2RlcyBzdXBwb3J0ZWQgYnkgYSB3aGVlbC4gRWFjaAorCQltb2RlIGlzIGxpc3RlZCBhcyBmb2xsb3dzOgorCQkgIFRhZzogTW9kZSBOYW1lCisJCUN1cnJlbnRseSBhY3RpdmUgbW9kZSBpcyBtYXJrZWQgd2l0aCBhbiBhc3Rlcmlzay4gTGlzdCBhbHNvCisJCWNvbnRhaW5zIGFuIGFic3RyYWN0IGl0ZW0gIm5hdGl2ZSIgd2hpY2ggYWx3YXlzIGRlbm90ZXMgdGhlCisJCW5hdGl2ZSBtb2RlIG9mIHRoZSB3aGVlbC4gRWNob2luZyB0aGUgbW9kZSB0YWcgc3dpdGNoZXMgdGhlCisJCXdoZWVsIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgbW9kZS4gRGVwZW5kaW5nIG9uIHRoZSBleGFjdCBtb2RlbAorCQlvZiB0aGUgd2hlZWwgbm90IGFsbCBsaXN0ZWQgbW9kZXMgbWlnaHQgYWx3YXlzIGJlIHNlbGVjdGFibGUuCisJCUlmIGEgd2hlZWwgY2Fubm90IGJlIHN3aXRjaGVkIGludG8gdGhlIGRlc2lyZWQgbW9kZSwgLUVJTlZBTAorCQlpcyByZXR1cm5lZCBhY2NvbXBhbmllZCB3aXRoIGFuIGV4cGxhbmF0b3J5IG1lc3NhZ2UgaW4gdGhlCisJCWtlcm5lbCBsb2cuCisJCVRoaXMgZW50cnkgaXMgbm90IGNyZWF0ZWQgZm9yIGRldmljZXMgdGhhdCBoYXZlIG9ubHkgb25lIG1vZGUuCisKKwkJQ3VycmVudGx5IHN1cHBvcnRlZCBtb2RlIHN3aXRjaGVzOgorCQlEcml2aW5nIEZvcmNlIFBybzoKKwkJICBERi1FWCAtLT4gREZQCisKKwkJRzI1OgorCQkgIERGLUVYIC0tPiBERlAgLS0+IEcyNQorCisJCUcyNzoKKwkJICBERi1FWCA8Kj4gREZQIDwtPiBHMjUgPC0+IEcyNworCQkgIERGLUVYIDwqLS0tLS0tLS0+IEcyNSA8LT4gRzI3CisJCSAgREYtRVggPCotLS0tLS0tLS0tLS0tLS0tPiBHMjcKKworCQlERkdUOgorCQkgIERGLUVYIDwqPiBERlAgPC0+IERGR1QKKwkJICBERi1FWCA8Ki0tLS0tLS0tPiBERkdUCisKKwkJKiBoaWRfbG9naXRlY2ggbW9kdWxlIG11c3QgYmUgbG9hZGVkIHdpdGggbGc0ZmZfbm9fYXV0b3N3aXRjaD0xCisJCSAgcGFyYW1ldGVyIHNldCBpbiBvcmRlciBmb3IgdGhlIHN3aXRjaCB0byBERi1FWCBtb2RlIHRvIHdvcmsuCisKK1doYXQ6CQkvc3lzL2J1cy9oaWQvZHJpdmVycy9sb2dpdGVjaC88ZGV2Pi9yZWFsX2lkCitEYXRlOgkJRmViIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMQorQ29udGFjdDoJTWljaGFsIE1hbMO9IDxtYWRjYXR4c3RlckBkZXZvaWQtcG9pbnRlci5uZXQ+CitEZXNjcmlwdGlvbjoJRGlzcGxheXMgdGhlIHJlYWwgbW9kZWwgb2YgdGhlIHdoZWVsIHJlZ2FyZGxlc3Mgb2YgYW55CisJCWFsdGVybmF0ZSBtb2RlIHRoZSB3aGVlbCBtaWdodCBiZSBzd2l0Y2hlZCB0by4KKwkJSXQgaXMgYSByZWFkLW9ubHkgdmFsdWUuCisJCVRoaXMgZW50cnkgaXMgbm90IGNyZWF0ZWQgZm9yIGRldmljZXMgdGhhdCBoYXZlIG9ubHkgb25lIG1vZGUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1oaWQtbXVsdGl0b3VjaCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLWhpZC1tdWx0aXRvdWNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3OTgzOWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1oaWQtbXVsdGl0b3VjaApAQCAtMCwwICsxLDkgQEAKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vcXVpcmtzCitEYXRlOgkJTm92ZW1iZXIgMjAxMQorQ29udGFjdDoJQmVuamFtaW4gVGlzc29pcmVzIDxiZW5qYW1pbi50aXNzb2lyZXNAZ21haWwuY29tPgorRGVzY3JpcHRpb246CVRoZSBpbnRlZ2VyIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIGNvcnJlc3BvbmRzIHRvIHRoZQorCQlxdWlya3MgYWN0dWFsbHkgaW4gcGxhY2UgdG8gaGFuZGxlIHRoZSBkZXZpY2UncyBwcm90b2NvbC4KKwkJV2hlbiByZWFkLCB0aGlzIGF0dHJpYnV0ZSByZXR1cm5zIHRoZSBjdXJyZW50IHNldHRpbmdzIChzZWUKKwkJTVRfUVVJUktTXyogaW4gaGlkLW11bHRpdG91Y2guYykuCisJCVdoZW4gd3JpdHRlbiB0aGlzIGF0dHJpYnV0ZSBjaGFuZ2Ugb24gdGhlIGZseSB0aGUgcXVpcmtzLCB0aGVuCisJCXRoZSBwcm90b2NvbCB0byBoYW5kbGUgdGhlIGRldmljZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLWhpZC1waWNvbGNkIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItaGlkLXBpY29sY2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg1NzllNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLWhpZC1waWNvbGNkCkBAIC0wLDAgKzEsNDMgQEAKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vb3BlcmF0aW9uX21vZGUKK0RhdGU6CQlNYXJjaCAyMDEwCitDb250YWN0OglCcnVubyBQcsOpbW9udCA8Ym9uYm9uc0BsaW51eC12c2VydmVyLm9yZz4KK0Rlc2NyaXB0aW9uOglNYWtlIGl0IHBvc3NpYmxlIHRvIHN3aXRjaCB0aGUgUGljb0xDRCBkZXZpY2UgYmV0d2VlbiBMQ0QKKwkJKGZpcm13YXJlKSBhbmQgYm9vdGxvYWRlciAoZmxhc2hlcikgb3BlcmF0aW9uIG1vZGVzLgorCisJCVJlYWRpbmc6IHJldHVybnMgbGlzdCBvZiBhdmFpbGFibGUgbW9kZXMsIHRoZSBhY3RpdmUgbW9kZSBiZWluZworCQllbmNsb3NlZCBpbiBicmFja2V0cyAoJ1snIGFuZCAnXScpCisKKwkJV3JpdGluZzogY2F1c2VzIG9wZXJhdGlvbiBtb2RlIHN3aXRjaC4gUGVybWl0dGVkIHZhbHVlcyBhcmUKKwkJdGhlIG5vbi1hY3RpdmUgbW9kZSBuYW1lcyBsaXN0ZWQgd2hlbiByZWFkLgorCisJCU5vdGU6IHdoZW4gc3dpdGNoaW5nIG1vZGUgdGhlIGN1cnJlbnQgUGljb0xDRCBISUQgZGV2aWNlIGdldHMKKwkJZGlzY29ubmVjdGVkIGFuZCByZWNvbm5lY3RzIGFmdGVyIGFib3ZlIGRlbGF5IChzZWUgYXR0cmlidXRlCisJCW9wZXJhdGlvbl9tb2RlX2RlbGF5IGZvciBpdHMgdmFsdWUpLgorCisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vb3BlcmF0aW9uX21vZGVfZGVsYXkKK0RhdGU6CQlBcHJpbCAyMDEwCitDb250YWN0OglCcnVubyBQcsOpbW9udCA8Ym9uYm9uc0BsaW51eC12c2VydmVyLm9yZz4KK0Rlc2NyaXB0aW9uOglEZWxheSBQaWNvTENEIHdhaXRzIGJlZm9yZSByZXN0YXJ0aW5nIGluIG5ldyBtb2RlIHdoZW4KKwkJb3BlcmF0aW9uX21vZGUgaGFzIGNoYW5nZWQuCisKKwkJUmVhZGluZy9Xcml0aW5nOiBJdCBpcyBleHByZXNzZWQgaW4gbXMgYW5kIHBlcm1pdHRlZCByYW5nZSBpcworCQkwLi4zMDAwMG1zLgorCisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4vZmJfdXBkYXRlX3JhdGUKK0RhdGU6CQlNYXJjaCAyMDEwCitDb250YWN0OglCcnVubyBQcsOpbW9udCA8Ym9uYm9uc0BsaW51eC12c2VydmVyLm9yZz4KK0Rlc2NyaXB0aW9uOglNYWtlIGl0IHBvc3NpYmxlIHRvIGFkanVzdCBkZWZpbyByZWZyZXNoIHJhdGUuCisKKwkJUmVhZGluZzogcmV0dXJucyBsaXN0IG9mIGF2YWlsYWJsZSByZWZyZXNoIHJhdGVzIChleHByZXNzZWQgaW4gSHopLAorCQl0aGUgYWN0aXZlIHJlZnJlc2ggcmF0ZSBiZWluZyBlbmNsb3NlZCBpbiBicmFja2V0cyAoJ1snIGFuZCAnXScpCisKKwkJV3JpdGluZzogYWNjZXB0cyBuZXcgcmVmcmVzaCByYXRlIGV4cHJlc3NlZCBpbiBpbnRlZ2VyIEh6CisJCXdpdGhpbiBwZXJtaXR0ZWQgcmF0ZXMuCisKKwkJTm90ZTogQXMgZGV2aWNlIGNhbiBiYXJlbHkgZG8gMiBjb21wbGV0ZSByZWZyZXNoZXMgYSBzZWNvbmQKKwkJaXQgb25seSBtYWtlcyBzZW5zZSB0byBhZGp1c3QgdGhpcyB2YWx1ZSBpZiBvbmx5IG9uZSBvciB0d28KKwkJdGlsZXMgZ2V0IGNoYW5nZWQgYW5kIGl0J3Mgbm90IGFwcHJvcHJpYXRlIHRvIGV4cGVjdCB0aGUgYXBwbGljYXRpb24KKwkJdG8gZmx1c2ggaXQncyB0aW55IGNoYW5nZXMgZXhwbGljaXRlbHkgYXQgaGlnaGVyIHRoYW4gZGVmYXVsdCByYXRlLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1oaWQtcHJvZGlrZXlzIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItaGlkLXByb2Rpa2V5cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWQ5ODhjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItaGlkLXByb2Rpa2V5cwpAQCAtMCwwICsxLDI5IEBACitXaGF0OgkJL3N5cy9idXMvaGlkL2RyaXZlcnMvcHJvZGlrZXlzLy4uLi9jaGFubmVsCitEYXRlOgkJQXByaWwgMjAxMAorS2VybmVsVmVyc2lvbjoJMi42LjM0CitDb250YWN0OglEb24gUHJpbmNlIDxkaHByaW5jZS5kZXZlbEB5YWhvby5jby51az4KK0Rlc2NyaXB0aW9uOgorCQlBbGxvd3MgY29udHJvbCAodmlhIHNvZnR3YXJlKSB0aGUgbWlkaSBjaGFubmVsIHRvIHdoaWNoCisJCXRoYXQgdGhlIHBjLW1pZGkga2V5Ym9hcmQgd2lsbCBvdXRwdXQubWlkaSBkYXRhLgorCQlSYW5nZTogMC4uMTUKKwkJVHlwZTogIFJlYWQvd3JpdGUKK1doYXQ6CQkvc3lzL2J1cy9oaWQvZHJpdmVycy9wcm9kaWtleXMvLi4uL3N1c3RhaW4KK0RhdGU6CQlBcHJpbCAyMDEwCitLZXJuZWxWZXJzaW9uOgkyLjYuMzQKK0NvbnRhY3Q6CURvbiBQcmluY2UgPGRocHJpbmNlLmRldmVsQHlhaG9vLmNvLnVrPgorRGVzY3JpcHRpb246CisJCUFsbG93cyBjb250cm9sICh2aWEgc29mdHdhcmUpIHRoZSBzdXN0YWluIGR1cmF0aW9uIG9mIGEKKwkJbm90ZSBoZWxkIGJ5IHRoZSBwYy1taWRpIGRyaXZlci4KKwkJMCBtZWFucyBzdXN0YWluIG1vZGUgaXMgZGlzYWJsZWQuCisJCVJhbmdlOiAwLi41MDAwIChtaWxsaXNlY29uZHMpCisJCVR5cGU6ICBSZWFkL3dyaXRlCitXaGF0OgkJL3N5cy9idXMvaGlkL2RyaXZlcnMvcHJvZGlrZXlzLy4uLi9vY3RhdmUKK0RhdGU6CQlBcHJpbCAyMDEwCitLZXJuZWxWZXJzaW9uOgkyLjYuMzQKK0NvbnRhY3Q6CURvbiBQcmluY2UgPGRocHJpbmNlLmRldmVsQHlhaG9vLmNvLnVrPgorRGVzY3JpcHRpb246CisJCUNvbnRyb2xzIHRoZSBvY3RhdmUgc2hpZnQgbW9kaWZpZXIgaW4gdGhlIHBjLW1pZGkgZHJpdmVyLgorCQlUaGUgb2N0YXZlIGNhbiBiZSBzaGlmdGVkIHZpYSBzb2Z0d2FyZSB1cC9kb3duIDIgb2N0YXZlcy4KKwkJMCBtZWFucyB0aGUgbm8gb2NhdHZlIHNoaWZ0LgorCQlSYW5nZTogLTIuLjIgKG1pbnVzIDIgdG8gcGx1cyAyKQorCQlUeXBlOiBSZWFkL1dyaXRlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1oaWQtcm9jY2F0LWtvbmUgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1oaWQtcm9jY2F0LWtvbmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NhMzk3MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLWhpZC1yb2NjYXQta29uZQpAQCAtMCwwICsxLDEwNiBAQAorV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9rb25lL3JvY2NhdGtvbmU8bWlub3I+L2FjdHVhbF9kcGkKK0RhdGU6CQlNYXJjaCAyMDEwCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CUl0IGlzIHBvc3NpYmxlIHRvIHN3aXRjaCB0aGUgZHBpIHNldHRpbmcgb2YgdGhlIG1vdXNlIHdpdGggdGhlCisJCXByZXNzIG9mIGEgYnV0dG9uLgorCQlXaGVuIHJlYWQsIHRoaXMgZmlsZSByZXR1cm5zIHRoZSByYXcgbnVtYmVyIG9mIHRoZSBhY3R1YWwgZHBpCisJCXNldHRpbmcgcmVwb3J0ZWQgYnkgdGhlIG1vdXNlLiBUaGlzIG51bWJlciBoYXMgdG8gYmUgZnVydGhlcgorCQlwcm9jZXNzZWQgdG8gcmVjZWl2ZSB0aGUgcmVhbCBkcGkgdmFsdWUuCisKKwkJVkFMVUUgRFBJCisJCTEgICAgIDgwMAorCQkyICAgICAxMjAwCisJCTMgICAgIDE2MDAKKwkJNCAgICAgMjAwMAorCQk1ICAgICAyNDAwCisJCTYgICAgIDMyMDAKKworCQlUaGlzIGZpbGUgaXMgcmVhZG9ubHkuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4va29uZS9yb2NjYXRrb25lPG1pbm9yPi9hY3R1YWxfcHJvZmlsZQorRGF0ZToJCU1hcmNoIDIwMTAKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJV2hlbiByZWFkLCB0aGlzIGZpbGUgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHRoZSBhY3R1YWwgcHJvZmlsZS4KKwkJVGhpcyBmaWxlIGlzIHJlYWRvbmx5LgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L2tvbmUvcm9jY2F0a29uZTxtaW5vcj4vZmlybXdhcmVfdmVyc2lvbgorRGF0ZToJCU1hcmNoIDIwMTAKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJV2hlbiByZWFkLCB0aGlzIGZpbGUgcmV0dXJucyB0aGUgcmF3IGludGVnZXIgdmVyc2lvbiBudW1iZXIgb2YgdGhlCisJCWZpcm13YXJlIHJlcG9ydGVkIGJ5IHRoZSBtb3VzZS4gVXNpbmcgdGhlIGludGVnZXIgdmFsdWUgZWFzZXMKKwkJZnVydGhlciB1c2FnZSBpbiBvdGhlciBwcm9ncmFtcy4gVG8gcmVjZWl2ZSB0aGUgcmVhbCB2ZXJzaW9uCisJCW51bWJlciB0aGUgZGVjaW1hbCBwb2ludCBoYXMgdG8gYmUgc2hpZnRlZCAyIHBvc2l0aW9ucyB0byB0aGUKKwkJbGVmdC4gRS5nLiBhIHJldHVybmVkIHZhbHVlIG9mIDEzOCBtZWFucyAxLjM4CisJCVRoaXMgZmlsZSBpcyByZWFkb25seS4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9rb25lL3JvY2NhdGtvbmU8bWlub3I+L3Byb2ZpbGVbMS01XQorRGF0ZToJCU1hcmNoIDIwMTAKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJVGhlIG1vdXNlIGNhbiBzdG9yZSA1IHByb2ZpbGVzIHdoaWNoIGNhbiBiZSBzd2l0Y2hlZCBieSB0aGUKKyAgICAgICAgICAgICAgICBwcmVzcyBvZiBhIGJ1dHRvbi4gQSBwcm9maWxlIGhvbGRzIGluZm9ybWF0aW9uIGxpa2UgYnV0dG9uCisgICAgICAgICAgICAgICAgbWFwcGluZ3MsIHNlbnNpdGl2aXR5LCB0aGUgY29sb3JzIG9mIHRoZSA1IGxlZHMgYW5kIGxpZ2h0CisgICAgICAgICAgICAgICAgZWZmZWN0cy4KKyAgICAgICAgICAgICAgICBXaGVuIHJlYWQsIHRoZXNlIGZpbGVzIHJldHVybiB0aGUgcmVzcGVjdGl2ZSBwcm9maWxlLiBUaGUKKyAgICAgICAgICAgICAgICByZXR1cm5lZCBkYXRhIGlzIDk3NSBieXRlcyBpbiBzaXplLgorCQlXaGVuIHdyaXR0ZW4sIHRoaXMgZmlsZSBsZXRzIG9uZSB3cml0ZSB0aGUgcmVzcGVjdGl2ZSBwcm9maWxlCisJCWRhdGEgYmFjayB0byB0aGUgbW91c2UuIFRoZSBkYXRhIGhhcyB0byBiZSA5NzUgYnl0ZXMgbG9uZy4KKwkJVGhlIG1vdXNlIHdpbGwgcmVqZWN0IGludmFsaWQgZGF0YSwgd2hlcmVhcyB0aGUgcHJvZmlsZSBudW1iZXIKKwkJc3RvcmVkIGluIHRoZSBwcm9maWxlIGRvZXNuJ3QgbmVlZCB0byBmaXQgdGhlIG51bWJlciBvZiB0aGUKKwkJc3RvcmUuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4va29uZS9yb2NjYXRrb25lPG1pbm9yPi9zZXR0aW5ncworRGF0ZToJCU1hcmNoIDIwMTAKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJV2hlbiByZWFkLCB0aGlzIGZpbGUgcmV0dXJucyB0aGUgc2V0dGluZ3Mgc3RvcmVkIGluIHRoZSBtb3VzZS4KKwkJVGhlIHNpemUgb2YgdGhlIGRhdGEgaXMgMzYgYnl0ZXMgYW5kIGhvbGRzIGluZm9ybWF0aW9uIGxpa2UgdGhlCisJCXN0YXJ0dXBfcHJvZmlsZSwgdGN1IHN0YXRlIGFuZCBjYWxpYnJhdGlvbl9kYXRhLgorCQlXaGVuIHdyaXR0ZW4sIHRoaXMgZmlsZSBsZXRzIHdyaXRlIHNldHRpbmdzIGJhY2sgdG8gdGhlIG1vdXNlLgorCQlUaGUgZGF0YSBoYXMgdG8gYmUgMzYgYnl0ZXMgbG9uZy4gVGhlIG1vdXNlIHdpbGwgcmVqZWN0IGludmFsaWQKKwkJZGF0YS4KK1VzZXJzOgkJaHR0cDovL3JvY2NhdC5zb3VyY2Vmb3JnZS5uZXQKKworV2hhdDoJCS9zeXMvYnVzL3VzYi9kZXZpY2VzLzxidXNudW0+LTxkZXZudW0+Ojxjb25maWcgbnVtPi48aW50ZXJmYWNlIG51bT4vPGhpZC1idXM+Ojx2ZW5kb3ItaWQ+Ojxwcm9kdWN0LWlkPi48bnVtPi9rb25lL3JvY2NhdGtvbmU8bWlub3I+L3N0YXJ0dXBfcHJvZmlsZQorRGF0ZToJCU1hcmNoIDIwMTAKK0NvbnRhY3Q6CVN0ZWZhbiBBY2hhdHogPGVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEZXNjcmlwdGlvbjoJVGhlIGludGVnZXIgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgcmFuZ2VzIGZyb20gMSB0byA1LgorICAgICAgICAgICAgICAgIFdoZW4gcmVhZCwgdGhpcyBhdHRyaWJ1dGUgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHRoZSBwcm9maWxlCisgICAgICAgICAgICAgICAgdGhhdCdzIGFjdGl2ZSB3aGVuIHRoZSBtb3VzZSBpcyBwb3dlcmVkIG9uLgorCQlXaGVuIHdyaXR0ZW4sIHRoaXMgZmlsZSBzZXRzIHRoZSBudW1iZXIgb2YgdGhlIHN0YXJ0dXAgcHJvZmlsZQorCQlhbmQgdGhlIG1vdXNlIGFjdGl2YXRlcyB0aGlzIHByb2ZpbGUgaW1tZWRpYXRlbHkuCitVc2VyczoJCWh0dHA6Ly9yb2NjYXQuc291cmNlZm9yZ2UubmV0CisKK1doYXQ6CQkvc3lzL2J1cy91c2IvZGV2aWNlcy88YnVzbnVtPi08ZGV2bnVtPjo8Y29uZmlnIG51bT4uPGludGVyZmFjZSBudW0+LzxoaWQtYnVzPjo8dmVuZG9yLWlkPjo8cHJvZHVjdC1pZD4uPG51bT4va29uZS9yb2NjYXRrb25lPG1pbm9yPi90Y3UKK0RhdGU6CQlNYXJjaCAyMDEwCitDb250YWN0OglTdGVmYW4gQWNoYXR6IDxlcmF6b3JfZGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CVRoZSBtb3VzZSBoYXMgYSAiVHJhY2tpbmcgQ29udHJvbCBVbml0IiB3aGljaCBsZXRzIHRoZSB1c2VyCisJCWNhbGlicmF0ZSB0aGUgbGFzZXIgcG93ZXIgdG8gZml0IHRoZSBtb3VzZXBhZCBzdXJmYWNlLgorCQlXaGVuIHJlYWQsIHRoaXMgZmlsZSByZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBUQ1UsCisJCXdoZXJlIDAgbWVhbnMgb2ZmIGFuZCAxIG1lYW5zIG9uLgorCQlXcml0aW5nIDAgaW4gdGhpcyBmaWxlIHdpbGwgc3dpdGNoIHRoZSBUQ1Ugb2ZmLgorCQlXcml0aW5nIDEgaW4gdGhpcyBmaWxlIHdpbGwgc3RhcnQgdGhlIGNhbGlicmF0aW9uIHdoaWNoIHRha2VzCisJCWFyb3VuZCA2IHNlY29uZHMgdG8gY29tcGxldGUgYW5kIGFjdGl2YXRlcyB0aGUgVENVLgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldAorCitXaGF0OgkJL3N5cy9idXMvdXNiL2RldmljZXMvPGJ1c251bT4tPGRldm51bT46PGNvbmZpZyBudW0+LjxpbnRlcmZhY2UgbnVtPi88aGlkLWJ1cz46PHZlbmRvci1pZD46PHByb2R1Y3QtaWQ+LjxudW0+L2tvbmUvcm9jY2F0a29uZTxtaW5vcj4vd2VpZ2h0CitEYXRlOgkJTWFyY2ggMjAxMAorQ29udGFjdDoJU3RlZmFuIEFjaGF0eiA8ZXJhem9yX2RlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0Rlc2NyaXB0aW9uOglUaGUgbW91c2UgY2FuIGJlIGVxdWlwcGVkIHdpdGggb25lIG9mIGZvdXIgc3VwcGxpZWQgd2VpZ2h0cworCQlyYW5naW5nIGZyb20gNSB0byAyMCBncmFtcyB3aGljaCBhcmUgcmVjb2duaXplZCBieSB0aGUgbW91c2UKKwkJYW5kIGl0cyB2YWx1ZSBjYW4gYmUgcmVhZCBvdXQuIFdoZW4gcmVhZCwgdGhpcyBmaWxlIHJldHVybnMgdGhlCisJCXJhdyB2YWx1ZSByZXR1cm5lZCBieSB0aGUgbW91c2Ugd2hpY2ggZWFzZXMgZnVydGhlciBwcm9jZXNzaW5nCisJCWluIG90aGVyIHNvZnR3YXJlLgorCQlUaGUgdmFsdWVzIG1hcCB0byB0aGUgd2VpZ2h0cyBhcyBmb2xsb3dzOgorCisJCVZBTFVFIFdFSUdIVAorCQkwICAgICBub25lCisJCTEgICAgIDVnCisJCTIgICAgIDEwZworCQkzICAgICAxNWcKKwkJNCAgICAgMjBnCisKKwkJVGhpcyBmaWxlIGlzIHJlYWRvbmx5LgorVXNlcnM6CQlodHRwOi8vcm9jY2F0LnNvdXJjZWZvcmdlLm5ldApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItaGlkLXNyd3MxIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItaGlkLXNyd3MxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwZWJhNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1oaWQtc3J3czEKQEAgLTAsMCArMSwyMSBAQAorV2hhdDoJCS9zeXMvY2xhc3MvbGVkcy9TUldTMTo6PHNlcmlhbD46OlJQTTEKK1doYXQ6CQkvc3lzL2NsYXNzL2xlZHMvU1JXUzE6OjxzZXJpYWw+OjpSUE0yCitXaGF0OgkJL3N5cy9jbGFzcy9sZWRzL1NSV1MxOjo8c2VyaWFsPjo6UlBNMworV2hhdDoJCS9zeXMvY2xhc3MvbGVkcy9TUldTMTo6PHNlcmlhbD46OlJQTTQKK1doYXQ6CQkvc3lzL2NsYXNzL2xlZHMvU1JXUzE6OjxzZXJpYWw+OjpSUE01CitXaGF0OgkJL3N5cy9jbGFzcy9sZWRzL1NSV1MxOjo8c2VyaWFsPjo6UlBNNgorV2hhdDoJCS9zeXMvY2xhc3MvbGVkcy9TUldTMTo6PHNlcmlhbD46OlJQTTcKK1doYXQ6CQkvc3lzL2NsYXNzL2xlZHMvU1JXUzE6OjxzZXJpYWw+OjpSUE04CitXaGF0OgkJL3N5cy9jbGFzcy9sZWRzL1NSV1MxOjo8c2VyaWFsPjo6UlBNOQorV2hhdDoJCS9zeXMvY2xhc3MvbGVkcy9TUldTMTo6PHNlcmlhbD46OlJQTTEwCitXaGF0OgkJL3N5cy9jbGFzcy9sZWRzL1NSV1MxOjo8c2VyaWFsPjo6UlBNMTEKK1doYXQ6CQkvc3lzL2NsYXNzL2xlZHMvU1JXUzE6OjxzZXJpYWw+OjpSUE0xMgorV2hhdDoJCS9zeXMvY2xhc3MvbGVkcy9TUldTMTo6PHNlcmlhbD46OlJQTTEzCitXaGF0OgkJL3N5cy9jbGFzcy9sZWRzL1NSV1MxOjo8c2VyaWFsPjo6UlBNMTQKK1doYXQ6CQkvc3lzL2NsYXNzL2xlZHMvU1JXUzE6OjxzZXJpYWw+OjpSUE0xNQorV2hhdDoJCS9zeXMvY2xhc3MvbGVkcy9TUldTMTo6PHNlcmlhbD46OlJQTUFMTAorRGF0ZToJCUphbiAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjkKK0NvbnRhY3Q6CVNpbW9uIFdvb2QgPHNpbW9uQG11bmdld2VsbC5vcmc+CitEZXNjcmlwdGlvbjoJUHJvdmlkZXMgYSBjb250cm9sIGZvciB0dXJuaW5nIG9uL29mZiB0aGUgTEVEcyB3aGljaCBmb3JtCisJCWFuIFJQTSBtZXRlciBvbiB0aGUgZnJvbnQgb2YgdGhlIGNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLWhpZC13aWltb3RlIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItaGlkLXdpaW1vdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzlkZmE1YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLWhpZC13aWltb3RlCkBAIC0wLDAgKzEsNzcgQEAKK1doYXQ6CQkvc3lzL2J1cy9oaWQvZHJpdmVycy93aWltb3RlLzxkZXY+L2xlZDEKK1doYXQ6CQkvc3lzL2J1cy9oaWQvZHJpdmVycy93aWltb3RlLzxkZXY+L2xlZDIKK1doYXQ6CQkvc3lzL2J1cy9oaWQvZHJpdmVycy93aWltb3RlLzxkZXY+L2xlZDMKK1doYXQ6CQkvc3lzL2J1cy9oaWQvZHJpdmVycy93aWltb3RlLzxkZXY+L2xlZDQKK0RhdGU6CQlKdWx5IDIwMTEKK0tlcm5lbFZlcnNpb246CTMuMQorQ29udGFjdDoJRGF2aWQgSGVycm1hbm4gPGRoLmhlcnJtYW5uQGdvb2dsZW1haWwuY29tPgorRGVzY3JpcHRpb246CU1ha2UgaXQgcG9zc2libGUgdG8gc2V0L2dldCBjdXJyZW50IGxlZCBzdGF0ZS4gUmVhZGluZyBmcm9tIGl0CisJCXJldHVybnMgMCBpZiBsZWQgaXMgb2ZmIGFuZCAxIGlmIGl0IGlzIG9uLiBXcml0aW5nIDAgdG8gaXQKKwkJZGlzYWJsZXMgdGhlIGxlZCwgd3JpdGluZyAxIGVuYWJsZXMgaXQuCisKK1doYXQ6CQkvc3lzL2J1cy9oaWQvZHJpdmVycy93aWltb3RlLzxkZXY+L2V4dGVuc2lvbgorRGF0ZToJCUF1Z3VzdCAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjIKK0NvbnRhY3Q6CURhdmlkIEhlcnJtYW5uIDxkaC5oZXJybWFubkBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoJVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBjdXJyZW50bHkgY29ubmVjdGVkIGFuZCBpbml0aWFsaXplZAorCQlleHRlbnNpb25zLiBJdCBjYW4gYmUgb25lIG9mOiBub25lLCBtb3Rpb25wLCBudW5jaHVjaywgY2xhc3NpYywKKwkJbW90aW9ucCtudW5jaHVjaywgbW90aW9ucCtjbGFzc2ljCisJCW1vdGlvbnAgaXMgdGhlIG9mZmljaWFsIE5pbnRlbmRvIE1vdGlvbisgZXh0ZW5zaW9uLCBudW5jaHVjayBpcworCQl0aGUgb2ZmaWNpYWwgTmludGVuZG8gTnVuY2h1Y2sgZXh0ZW5zaW9uIGFuZCBjbGFzc2ljIGlzIHRoZQorCQlOaW50ZW5kbyBDbGFzc2ljIENvbnRyb2xsZXIgZXh0ZW5zaW9uLiBUaGUgbW90aW9ucCBleHRlbnNpb24gY2FuCisJCWJlIGNvbWJpbmVkIHdpdGggdGhlIG90aGVyIHR3by4KKwkJU3RhcnRpbmcgd2l0aCBrZXJuZWwtdmVyc2lvbiAzLjExIE1vdGlvbiBQbHVzIGhvdHBsdWdnaW5nIGlzCisJCXN1cHBvcnRlZCBhbmQgaWYgZGV0ZWN0ZWQsIGl0J3Mgbm8gbG9uZ2VyIHJlcG9ydGVkIGFzIHN0YXRpYworCQlleHRlbnNpb24uIFlvdSB3aWxsIGdldCB1ZXZlbnQgbm90aWZpY2F0aW9ucyBmb3IgdGhlIG1vdGlvbi1wbHVzCisJCWRldmljZSB0aGVuLgorCitXaGF0OgkJL3N5cy9idXMvaGlkL2RyaXZlcnMvd2lpbW90ZS88ZGV2Pi9kZXZ0eXBlCitEYXRlOgkJTWF5IDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTEKK0NvbnRhY3Q6CURhdmlkIEhlcnJtYW5uIDxkaC5oZXJybWFubkBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoJV2hpbGUgYSBkZXZpY2UgaXMgaW5pdGlhbGl6ZWQgYnkgdGhlIHdpaW1vdGUgZHJpdmVyLCB3ZSBwZXJmb3JtCisJCWEgZGV2aWNlIGRldGVjdGlvbiBhbmQgc2lnbmFsIGEgImNoYW5nZSIgdWV2ZW50IGFmdGVyIGl0IGlzCisJCWRvbmUuIFRoaXMgZmlsZSBzaG93cyB0aGUgZGV0ZWN0ZWQgZGV2aWNlIHR5cGUuICJwZW5kaW5nIiBtZWFucworCQl0aGF0IHRoZSBkZXRlY3Rpb24gaXMgc3RpbGwgb25nb2luZywgInVua25vd24iIG1lYW5zLCB0aGF0IHRoZQorCQlkZXZpY2UgY291bGRuJ3QgYmUgZGV0ZWN0ZWQgb3IgbG9hZGVkLiAiZ2VuZXJpYyIgbWVhbnMsIHRoYXQgdGhlCisJCWRldmljZSBjb3VsZG4ndCBiZSBkZXRlY3RlZCBidXQgc3VwcG9ydHMgYmFzaWMgV2lpIFJlbW90ZQorCQlmZWF0dXJlcyBhbmQgY2FuIGJlIHVzZWQuCisJCU90aGVyIHN0cmluZ3MgZm9yIGVhY2ggZGV2aWNlLXR5cGUgYXJlIGF2YWlsYWJsZSBhbmQgbWF5IGJlCisJCWFkZGVkIGlmIG5ldyBkZXZpY2Utc3BlY2lmaWMgZGV0ZWN0aW9ucyBhcmUgYWRkZWQuCisJCUN1cnJlbnRseSBzdXBwb3J0ZWQgYXJlOgorCQkJZ2VuMTA6IEZpcnN0IFdpaSBSZW1vdGUgZ2VuZXJhdGlvbgorCQkJZ2VuMjA6IFNlY29uZCBXaWkgUmVtb3RlIFBsdXMgZ2VuZXJhdGlvbiAoYnVpbHRpbiBNUCkKKwkJCWJhbGFuY2Vib2FyZDogV2lpIEJhbGFuY2UgQm9hcmQKKworV2hhdDoJCS9zeXMvYnVzL2hpZC9kcml2ZXJzL3dpaW1vdGUvPGRldj4vYmJvYXJkX2NhbGliCitEYXRlOgkJTWF5IDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTEKK0NvbnRhY3Q6CURhdmlkIEhlcnJtYW5uIDxkaC5oZXJybWFubkBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoJVGhpcyBhdHRyaWJ1dGUgaXMgb25seSBwcm92aWRlZCBpZiB0aGUgZGV2aWNlIHdhcyBkZXRlY3RlZCBhcyBhCisJCWJhbGFuY2UgYm9hcmQuIEl0IHByb3ZpZGVzIGEgc2luZ2xlIGxpbmUgd2l0aCAzIGNhbGlicmF0aW9uCisJCXZhbHVlcyBmb3IgYWxsIDQgc2Vuc29ycy4gVGhlIHZhbHVlcyBhcmUgc2VwYXJhdGVkIGJ5IGNvbG9ucyBhbmQKKwkJYXJlIGVhY2ggMiBieXRlcyBsb25nIChlbmNvZGVkIGFzIDQgZGlnaXQgaGV4YWRlY2ltYWwgdmFsdWUpLgorCQlGaXJzdCwgMGtnIHZhbHVlcyBmb3IgYWxsIDQgc2Vuc29ycyBhcmUgd3JpdHRlbiwgZm9sbG93ZWQgYnkgdGhlCisJCTE3a2cgdmFsdWVzIGZvciBhbGwgNCBzZW5zb3JzIGFuZCBsYXN0IHRoZSAzNGtnIHZhbHVlcyBmb3IgYWxsIDQKKwkJc2Vuc29ycy4KKwkJQ2FsaWJyYXRpb24gZGF0YSBpcyBhbHJlYWR5IGFwcGxpZWQgYnkgdGhlIGtlcm5lbCB0byBhbGwgaW5wdXQKKwkJdmFsdWVzIGJ1dCBtYXkgYmUgdXNlZCBieSB1c2VyLXNwYWNlIHRvIHBlcmZvcm0gb3RoZXIKKwkJdHJhbnNmb3JtYXRpb25zLgorCitXaGF0OgkJL3N5cy9idXMvaGlkL2RyaXZlcnMvd2lpbW90ZS88ZGV2Pi9wcm9fY2FsaWIKK0RhdGU6CQlPY3RvYmVyIDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTMKK0NvbnRhY3Q6CURhdmlkIEhlcnJtYW5uIDxkaC5oZXJybWFubkBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoJVGhpcyBhdHRyaWJ1dGUgaXMgb25seSBwcm92aWRlZCBpZiB0aGUgZGV2aWNlIHdhcyBkZXRlY3RlZCBhcyBhCisJCXByby1jb250cm9sbGVyLiBJdCBwcm92aWRlcyBhIHNpbmdsZSBsaW5lIHdpdGggNCBjYWxpYnJhdGlvbgorCQl2YWx1ZXMgZm9yIGFsbCA0IGFuYWxvZyBzdGlja3MuIEZvcm1hdCBpczogIngxOnkxIHgyOnkyIi4gRGF0YQorCQlpcyBwcmVmaXhlZCB3aXRoIGEgKy8tLiBFYWNoIHZhbHVlIGlzIGEgc2lnbmVkIDE2Yml0IG51bWJlci4KKwkJRGF0YSBpcyBlbmNvZGVkIGFzIGRlY2ltYWwgbnVtYmVycyBhbmQgc3BlY2lmaWVzIHRoZSBvZmZzZXRzIG9mCisJCXRoZSBhbmFsb2cgc3RpY2tzIG9mIHRoZSBwcm8tY29udHJvbGxlci4KKwkJQ2FsaWJyYXRpb24gZGF0YSBpcyBhbHJlYWR5IGFwcGxpZWQgYnkgdGhlIGtlcm5lbCB0byBhbGwgaW5wdXQKKwkJdmFsdWVzIGJ1dCBtYXkgYmUgdXNlZCBieSB1c2VyLXNwYWNlIHRvIHBlcmZvcm0gb3RoZXIKKwkJdHJhbnNmb3JtYXRpb25zLgorCQlDYWxpYnJhdGlvbiBkYXRhIGlzIGRldGVjdGVkIGJ5IHRoZSBrZXJuZWwgZHVyaW5nIGRldmljZSBzZXR1cC4KKwkJWW91IGNhbiB3cml0ZSAic2NhblxuIiBpbnRvIHRoaXMgZmlsZSB0byByZS10cmlnZ2VyIGNhbGlicmF0aW9uLgorCQlZb3UgY2FuIGFsc28gd3JpdGUgZGF0YSBkaXJlY3RseSBpbiB0aGUgZm9ybSAieDE6eTEgeDI6eTIiIHRvCisJCXNldCB0aGUgY2FsaWJyYXRpb24gdmFsdWVzIG1hbnVhbGx5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItaW5wdXQtYXhwLXBlayBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLWlucHV0LWF4cC1wZWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVlNjcxYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLWlucHV0LWF4cC1wZWsKQEAgLTAsMCArMSwxMSBAQAorV2hhdDoJCS9zeXMvY2xhc3MvaW5wdXQvaW5wdXQoeCkvZGV2aWNlL3N0YXJ0dXAKK0RhdGU6CQlNYXJjaCAyMDE0CitDb250YWN0OglDYXJsbyBDYWlvbmUgPGNhcmxvQGNhaW9uZS5vcmc+CitEZXNjcmlwdGlvbjoJU3RhcnR1cCB0aW1lIGluIHVzLiBCb2FyZCBpcyBwb3dlcmVkIG9uIGlmIHRoZSBidXR0b24gaXMgcHJlc3NlZAorCQlmb3IgbW9yZSB0aGFuIDxzdGFydHVwX3RpbWU+CisKK1doYXQ6CQkvc3lzL2NsYXNzL2lucHV0L2lucHV0KHgpL2RldmljZS9zaHV0ZG93bgorRGF0ZToJCU1hcmNoIDIwMTQKK0NvbnRhY3Q6CUNhcmxvIENhaW9uZSA8Y2FybG9AY2Fpb25lLm9yZz4KK0Rlc2NyaXB0aW9uOglTaHV0ZG93biB0aW1lIGluIHVzLiBCb2FyZCBpcyBwb3dlcmVkIG9mZiBpZiB0aGUgYnV0dG9uIGlzIHByZXNzZWQKKwkJZm9yIG1vcmUgdGhhbiA8c2h1dGRvd25fdGltZT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLWludGVsLXJhcGlkLXN0YXJ0IGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItaW50ZWwtcmFwaWQtc3RhcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE3ZDJlMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLWludGVsLXJhcGlkLXN0YXJ0CkBAIC0wLDAgKzEsMjEgQEAKK1doYXQ6CQkvc3lzL2J1cy9hY3BpL2ludGVsLXJhcGlkLXN0YXJ0L3dha2V1cF9ldmVudHMKK0RhdGU6CQlKdWx5IDIsIDIwMTMKK0tlcm5lbFZlcnNpb246CTMuMTEKK0NvbnRhY3Q6CU1hdHRoZXcgR2FycmV0dCA8bWpnNTlAc3JjZi51Y2FtLm9yZz4KK0Rlc2NyaXB0aW9uOglBbiBpbnRlZ2VyIHJlcHJlc2VudGluZyBhIHNldCBvZiB3YWtldXAgZXZlbnRzIGFzIGZvbGxvd3M6CisJCTE6IFdha2UgdG8gZW50ZXIgaGliZXJuYXRpb24gd2hlbiB0aGUgd2FrZXVwIHRpbWVyIGV4cGlyZXMKKwkJMjogV2FrZSB0byBlbnRlciBoaWJlcm5hdGlvbiB3aGVuIHRoZSBiYXR0ZXJ5IHJlYWNoZXMgYQorCQljcml0aWNhbCBsZXZlbAorCisJCVRoZXNlIHZhbHVlcyBhcmUgT1JlZCB0b2dldGhlci4gRm9yIGV4YW1wbGUsIGEgdmFsdWUgb2YgMworCQlpbmRpY2F0ZXMgdGhhdCB0aGUgc3lzdGVtIHdpbGwgd2FrZSB0byBlbnRlciBoaWJlcm5hdGlvbiB3aGVuCisJCWVpdGhlciB0aGUgd2FrZXVwIHRpbWVyIGV4cGlyZXMgb3IgdGhlIGJhdHRlcnkgcmVhY2hlcyBhCisJCWNyaXRpY2FsIGxldmVsLgorCitXaGF0OgkJL3N5cy9idXMvYWNwaS9pbnRlbC1yYXBpZC1zdGFydC93YWtldXBfdGltZQorRGF0ZToJCUp1bHkgMiwgMjAxMworS2VybmVsVmVyc2lvbjoJMy4xMQorQ29udGFjdDoJTWF0dGhldyBHYXJyZXR0IDxtamc1OUBzcmNmLnVjYW0ub3JnPgorRGVzY3JpcHRpb246CUFuIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBsZW5ndGggb2YgdGltZSB0aGUgc3lzdGVtIHdpbGwKKwkJcmVtYWluIGFzbGVlcCBiZWZvcmUgd2FraW5nIHVwIHRvIGVudGVyIGhpYmVybmF0aW9uLgorCQlUaGlzIHZhbHVlIGlzIGluIG1pbnV0ZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1wY2liYWNrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItcGNpYmFjawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTczM2JmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItcGNpYmFjawpAQCAtMCwwICsxLDEzIEBACitXaGF0OiAgICAgICAgICAgL3N5cy9idXMvcGNpL2RyaXZlcnMvcGNpYmFjay9xdWlya3MKK0RhdGU6ICAgICAgICAgICBPY3QgMjAxMQorS2VybmVsVmVyc2lvbjogIDMuMQorQ29udGFjdDogICAgICAgIHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZworRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgSWYgdGhlIHBlcm1pc3NpdmUgYXR0cmlidXRlIGlzIHNldCwgdGhlbiB3cml0aW5nIGEgc3RyaW5nIGluCisgICAgICAgICAgICAgICAgdGhlIGZvcm1hdCBvZiBEREREOkJCOkRELkYtUkVHOlNJWkU6TUFTSyB3aWxsIGFsbG93IHRoZSBndWVzdAorICAgICAgICAgICAgICAgIHRvIHdyaXRlIGFuZCByZWFkIGZyb20gdGhlIFBDSSBkZXZpY2UuIFRoYXQgaXMgRG9tYWluOkJ1czoKKyAgICAgICAgICAgICAgICBEZXZpY2UuRnVuY3Rpb24tUmVnaXN0ZXI6U2l6ZTpNYXNrIChEb21haW4gaXMgb3B0aW9uYWwpLgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlOgorICAgICAgICAgICAgICAgICNlY2hvIDAwOjE5LjAtRTA6MjpGRiA+IC9zeXMvYnVzL3BjaS9kcml2ZXJzL3BjaWJhY2svcXVpcmtzCisgICAgICAgICAgICAgICAgd2lsbCBhbGxvdyB0aGUgZ3Vlc3QgdG8gcmVhZCBhbmQgd3JpdGUgdG8gdGhlIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICByZWdpc3RlciAweDBFLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItcHBpIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItcHBpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5MjFlZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1wcGkKQEAgLTAsMCArMSw3NSBAQAorV2hhdDoJCS9zeXMvY2xhc3MvdHBtL3RwbVgvcHBpLworRGF0ZToJCUF1Z3VzdCAyMDEyCitLZXJuZWwgVmVyc2lvbjoJMy42CitDb250YWN0Ogl4aWFveWFuLnpoYW5nQGludGVsLmNvbQorRGVzY3JpcHRpb246CisJCVRoaXMgZm9sZGVyIGluY2x1ZGVzIHRoZSBhdHRyaWJ1dGVzIHJlbGF0ZWQgd2l0aCBQUEkgKFBoeXNpY2FsCisJCVByZXNlbmNlIEludGVyZmFjZSkuIE9ubHkgaWYgVFBNIGlzIHN1cHBvcnRlZCBieSBCSU9TLCB0aGlzCisJCWZvbGRlciBtYWtlcyBzZW5zZS4gVGhlIGZvbGRlciBwYXRoIGNhbiBiZSBnb3QgYnkgY29tbWFuZAorCQknZmluZCAvc3lzLyAtbmFtZSAncGNycycnLiBGb3IgdGhlIGRldGFpbCBpbmZvcm1hdGlvbiBvZiBQUEksCisJCXBsZWFzZSByZWZlciB0byB0aGUgUFBJIHNwZWNpZmljYXRpb24gZnJvbQorCisJCWh0dHA6Ly93d3cudHJ1c3RlZGNvbXB1dGluZ2dyb3VwLm9yZy8KKworCQlJbiBMaW51eCA0LjIgcHBpIHdhcyBtb3ZlZCB0byB0aGUgY2hhcmFjdGVyIGRldmljZSBkaXJlY3RvcnkuCisJCUEgc3ltbGluayBmcm9tIHRwbVgvZGV2aWNlL3BwaSB0byB0cG1YL3BwaSB0byBwcm92aWRlIGJhY2t3YXJkcworCQljb21wYXRpYmlsaXR5LgorCitXaGF0OgkJL3N5cy9jbGFzcy90cG0vdHBtWC9wcGkvdmVyc2lvbgorRGF0ZToJCUF1Z3VzdCAyMDEyCitDb250YWN0Ogl4aWFveWFuLnpoYW5nQGludGVsLmNvbQorRGVzY3JpcHRpb246CisJCVRoaXMgYXR0cmlidXRlIHNob3dzIHRoZSB2ZXJzaW9uIG9mIHRoZSBQUEkgc3VwcG9ydGVkIGJ5IHRoZQorCQlwbGF0Zm9ybS4KKwkJVGhpcyBmaWxlIGlzIHJlYWRvbmx5LgorCitXaGF0OgkJL3N5cy9jbGFzcy90cG0vdHBtWC9wcGkvcmVxdWVzdAorRGF0ZToJCUF1Z3VzdCAyMDEyCitDb250YWN0Ogl4aWFveWFuLnpoYW5nQGludGVsLmNvbQorRGVzY3JpcHRpb246CisJCVRoaXMgYXR0cmlidXRlIHNob3dzIHRoZSByZXF1ZXN0IGZvciBhbiBvcGVyYXRpb24gdG8gYmUKKwkJZXhlY3V0ZWQgaW4gdGhlIHByZS1PUyBlbnZpcm9ubWVudC4gSXQgaXMgdGhlIG9ubHkgaW5wdXQgZnJvbQorCQl0aGUgT1MgdG8gdGhlIHByZS1PUyBlbnZpcm9ubWVudC4gVGhlIHJlcXVlc3Qgc2hvdWxkIGJlIGFuCisJCWludGVnZXIgdmFsdWUgcmFuZ2UgZnJvbSAxIHRvIDE2MCwgYW5kIDAgbWVhbnMgbm8gcmVxdWVzdC4KKwkJVGhpcyBmaWxlIGNhbiBiZSByZWFkIGFuZCB3cml0dGVuLgorCitXaGF0OgkJL3N5cy9jbGFzcy90cG0vdHBtWC9wcGkvcmVzcG9uc2UKK0RhdGU6CQlBdWd1c3QgMjAxMgorQ29udGFjdDoJeGlhb3lhbi56aGFuZ0BpbnRlbC5jb20KK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGF0dHJpYnV0ZSBzaG93cyB0aGUgcmVzcG9uc2UgdG8gdGhlIG1vc3QgcmVjZW50IG9wZXJhdGlvbgorCQlyZXF1ZXN0IGl0IGFjdGVkIHVwb24uIFRoZSBmb3JtYXQgaXMgIjxyZXF1ZXN0PiA8cmVzcG9uc2UgbnVtPgorCQk6IDxyZXNwb25zZSBkZXNjcmlwdGlvbj4iLgorCQlUaGlzIGZpbGUgaXMgcmVhZG9ubHkuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3RwbS90cG1YL3BwaS90cmFuc2l0aW9uX2FjdGlvbgorRGF0ZToJCUF1Z3VzdCAyMDEyCitDb250YWN0Ogl4aWFveWFuLnpoYW5nQGludGVsLmNvbQorRGVzY3JpcHRpb246CisJCVRoaXMgYXR0cmlidXRlIHNob3dzIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBhY3Rpb24gdGhhdCBzaG91bGQKKwkJdGFrZSBwbGFjZSBpbiBvcmRlciB0byB0cmFuc2l0aW9uIHRvIHRoZSBCSU9TIGZvciBleGVjdXRpb24gb2YKKwkJYSByZXF1ZXN0ZWQgb3BlcmF0aW9uLiBUaGUgZm9ybWF0IGlzICI8YWN0aW9uIG51bT46IDxhY3Rpb24KKwkJZGVzY3JpcHRpb24+Ii4KKwkJVGhpcyBmaWxlIGlzIHJlYWRvbmx5LgorCitXaGF0OgkJL3N5cy9jbGFzcy90cG0vdHBtWC9wcGkvdGNnX29wZXJhdGlvbnMKK0RhdGU6CQlBdWd1c3QgMjAxMgorQ29udGFjdDoJeGlhb3lhbi56aGFuZ0BpbnRlbC5jb20KK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGF0dHJpYnV0ZSBzaG93cyB3aGV0aGVyIGl0IGlzIGFsbG93ZWQgdG8gcmVxdWVzdCBhbgorCQlvcGVyYXRpb24gdG8gYmUgZXhlY3V0ZWQgaW4gdGhlIHByZS1PUyBlbnZpcm9ubWVudCBieSB0aGUgQklPUworCQlmb3IgdGhlIHJlcXVlc3RzIGRlZmluZWQgYnkgVENHLCBpLmUuIHJlcXVlc3RzIGZyb20gMSB0byAyMi4KKwkJVGhlIGZvcm1hdCBpcyAiPHJlcXVlc3Q+IDxzdGF0dXMgbnVtPjogPHN0YXR1cyBkZXNjcmlwdGlvbj4iLgorCQlUaGlzIGF0dHJpYnV0ZSBpcyBvbmx5IHN1cHBvcnRlZCBieSBQUEkgdmVyc2lvbiAxLjIrLgorCQlUaGlzIGZpbGUgaXMgcmVhZG9ubHkuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3RwbS90cG1YL3BwaS92c19vcGVyYXRpb25zCitEYXRlOgkJQXVndXN0IDIwMTIKK0NvbnRhY3Q6CXhpYW95YW4uemhhbmdAaW50ZWwuY29tCitEZXNjcmlwdGlvbjoKKwkJVGhpcyBhdHRyaWJ1dGUgc2hvd3Mgd2hldGhlciBpdCBpcyBhbGxvd2VkIHRvIHJlcXVlc3QgYW4KKwkJb3BlcmF0aW9uIHRvIGJlIGV4ZWN1dGVkIGluIHRoZSBwcmUtT1MgZW52aXJvbm1lbnQgYnkgdGhlIEJJT1MKKwkJZm9yIHRoZSB2ZXJkb3Igc3BlY2lmaWMgcmVxdWVzdHMsIGkuZS4gcmVxdWVzdHMgZnJvbSAxMjggdG8KKwkJMjU1LiBUaGUgZm9ybWF0IGlzIHNhbWUgd2l0aCB0Y2dfb3BlcmF0aW9ucy4gVGhpcyBhdHRyaWJ1dGUKKwkJaXMgYWxzbyBvbmx5IHN1cHBvcnRlZCBieSBQUEkgdmVyc2lvbiAxLjIrLgorCQlUaGlzIGZpbGUgaXMgcmVhZG9ubHkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1zYW1zdW5nLWxhcHRvcCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLXNhbXN1bmctbGFwdG9wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzYzFhZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1zYW1zdW5nLWxhcHRvcApAQCAtMCwwICsxLDQ1IEBACitXaGF0OgkJL3N5cy9kZXZpY2VzL3BsYXRmb3JtL3NhbXN1bmcvcGVyZm9ybWFuY2VfbGV2ZWwKK0RhdGU6CQlKYW51YXJ5IDEsIDIwMTAKK0tlcm5lbFZlcnNpb246CTIuNi4zMworQ29udGFjdDoJR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KK0Rlc2NyaXB0aW9uOglTb21lIFNhbXN1bmcgbGFwdG9wcyBoYXZlIGRpZmZlcmVudCAicGVyZm9ybWFuY2UgbGV2ZWxzIgorCQl0aGF0IGFyZSBjYW4gYmUgbW9kaWZpZWQgYnkgYSBmdW5jdGlvbiBrZXksIGFuZCBieSB0aGlzCisJCXN5c2ZzIGZpbGUuICBUaGVzZSB2YWx1ZXMgZG9uJ3QgYWx3YXlzIG1ha2UgYSB3aG9sZSBsb3QKKwkJb2Ygc2Vuc2UsIGJ1dCBzb21lIHVzZXJzIGxpa2UgdG8gbW9kaWZ5IHRoZW0gdG8ga2VlcAorCQl0aGVpciBmYW5zIHF1aWV0IGF0IGFsbCBjb3N0cy4gIFJlYWRpbmcgZnJvbSB0aGlzIGZpbGUKKwkJd2lsbCBzaG93IHRoZSBjdXJyZW50IHBlcmZvcm1hbmNlIGxldmVsLiAgV3JpdGluZyB0byB0aGUKKwkJZmlsZSBjYW4gY2hhbmdlIHRoaXMgdmFsdWUuCisJCQlWYWxpZCBvcHRpb25zOgorCQkJCSJzaWxlbnQiCisJCQkJIm5vcm1hbCIKKwkJCQkib3ZlcmNsb2NrIgorCQlOb3RlIHRoYXQgbm90IGFsbCBsYXB0b3BzIHN1cHBvcnQgYWxsIG9mIHRoZXNlIG9wdGlvbnMuCisJCVNwZWNpZmljYWxseSwgbm90IGFsbCBzdXBwb3J0IHRoZSAib3ZlcmNsb2NrIiBvcHRpb24sCisJCWFuZCBpdCdzIHN0aWxsIHVua25vd24gaWYgdGhpcyB2YWx1ZSBldmVuIGNoYW5nZXMKKwkJYW55dGhpbmcsIG90aGVyIHRoYW4gbWFraW5nIHRoZSB1c2VyIGZlZWwgYSBiaXQgYmV0dGVyLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3BsYXRmb3JtL3NhbXN1bmcvYmF0dGVyeV9saWZlX2V4dGVuZGVyCitEYXRlOgkJRGVjZW1iZXIgMSwgMjAxMQorS2VybmVsVmVyc2lvbjoJMy4zCitDb250YWN0OglDb3JlbnRpbiBDaGFyeSA8Y29yZW50aW4uY2hhcnlAZ21haWwuY29tPgorRGVzY3JpcHRpb246CU1heCBiYXR0ZXJ5IGNoYXJnZSBsZXZlbCBjYW4gYmUgbW9kaWZpZWQsIGJhdHRlcnkgY3ljbGUKKwkJbGlmZSBjYW4gYmUgZXh0ZW5kZWQgYnkgcmVkdWNpbmcgdGhlIG1heCBiYXR0ZXJ5IGNoYXJnZQorCQlsZXZlbC4KKwkJMCBtZWFucyBub3JtYWwgYmF0dGVyeSBtb2RlICgxMDAlIGNoYXJnZSkKKwkJMSBtZWFucyBiYXR0ZXJ5IGxpZmUgZXh0ZW5kZXIgbW9kZSAoODAlIGNoYXJnZSkKKworV2hhdDoJCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9zYW1zdW5nL3VzYl9jaGFyZ2UKK0RhdGU6CQlEZWNlbWJlciAxLCAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjMKK0NvbnRhY3Q6CUNvcmVudGluIENoYXJ5IDxjb3JlbnRpbi5jaGFyeUBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoJVXNlIHlvdXIgVVNCIHBvcnRzIHRvIGNoYXJnZSBkZXZpY2VzLCBldmVuCisJCXdoZW4geW91ciBsYXB0b3AgaXMgcG93ZXJlZCBvZmYuCisJCTEgbWVhbnMgZW5hYmxlZCwgMCBtZWFucyBkaXNhYmxlZC4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9zYW1zdW5nL2xpZF9oYW5kbGluZworRGF0ZToJCURlY2VtYmVyIDExLCAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE5CitDb250YWN0OglKdWxpam9uYXMgS2lrdXRpcyA8anVsaWpvbmFzLmtpa3V0aXNAZ21haWwuY29tPgorRGVzY3JpcHRpb246CVNvbWUgU2Ftc3VuZyBsYXB0b3BzIGhhbmRsZSBsaWQgY2xvc2luZyBxdWlja2VyIGFuZAorCQlvbmx5IGhhbmRsZSBsaWQgb3BlbmluZyB3aXRoIHRoaXMgbW9kZSBlbmFibGVkLgorCQkxIG1lYW5zIGVuYWJsZWQsIDAgbWVhbnMgZGlzYWJsZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1zdCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhNWQ3NzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1zdApAQCAtMCwwICsxLDEyIEBACitXaGF0OgkJL3N5cy9idXMvc2NzaS9kcml2ZXJzL3N0L2RlYnVnX2ZsYWcKK0RhdGU6CQlPY3RvYmVyIDIwMTUKK0tlcm5lbCBWZXJzaW9uOgk/Lj8KK0NvbnRhY3Q6CXNoYW5lLnNleW1vdXJAaHBlLmNvbQorRGVzY3JpcHRpb246CisJCVRoaXMgZmlsZSBhbGxvd3MgeW91IHRvIHR1cm4gZGVidWcgb3V0cHV0IGZyb20gdGhlIHN0IGRyaXZlcgorCQlvZmYgaWYgeW91IHdyaXRlIGEgJzAnIHRvIHRoZSBmaWxlIG9yIG9uIGlmIHlvdSB3cml0ZSBhICcxJy4KKwkJTm90ZSB0aGF0IGRlYnVnIG91dHB1dCByZXF1aXJlcyB0aGF0IHRoZSBtb2R1bGUgYmUgY29tcGlsZWQKKwkJd2l0aCB0aGUgI2RlZmluZSBERUJVRyBzZXQgdG8gYSBub24temVybyB2YWx1ZSAodGhpcyBpcyB0aGUKKwkJZGVmYXVsdCkuIElmIERFQlVHIGlzIHNldCB0byAwIHRoZW4gdGhpcyBmaWxlIHdpbGwgbm90CisJCWFwcGVhciBpbiBzeXNmcyBhcyBpdHMgcHJlc2VuY2UgaXMgY29uZGl0aW9uYWwgdXBvbiBkZWJ1ZworCQlvdXRwdXQgc3VwcG9ydCBiZWluZyBjb21waWxlZCBpbnRvIHRoZSBtb2R1bGUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci10ZWdyYS1mdXNlIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItdGVncmEtZnVzZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWY1YWY2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItdGVncmEtZnVzZQpAQCAtMCwwICsxLDExIEBACitXaGF0OgkJL3N5cy9kZXZpY2VzLyovPG91ci1kZXZpY2U+L2Z1c2UKK0RhdGU6CQlGZWJydWFyeSAyMDE0CitDb250YWN0OglQZXRlciBEZSBTY2hyaWp2ZXIgPHBkZXNjaHJpanZlckBudmlkaWEuY29tPgorRGVzY3JpcHRpb246CXJlYWQtb25seSBhY2Nlc3MgdG8gdGhlIGVmdXNlcyBvbiBUZWdyYTIwLCBUZWdyYTMwLCBUZWdyYTExNAorCQlhbmQgVGVncmExMjQgU29DJ3MgZnJvbSBOVklESUEuIFRoZSBlZnVzZXMgY29udGFpbiB3cml0ZSBvbmNlCisJCWRhdGEgcHJvZ3JhbW1lZCBhdCB0aGUgZmFjdG9yeS4gVGhlIGRhdGEgaXMgbGF5ZWQgb3V0IGluIDMyYml0CisJCXdvcmRzIGluIExTQiBmaXJzdCBmb3JtYXQuIEVhY2ggYml0IHJlcHJlc2VudHMgYSBzaW5nbGUgdmFsdWUKKwkJYXMgZGVjb2RlZCBmcm9tIHRoZSBmdXNlIHJlZ2lzdGVycy4gQml0cyBvcmRlci9hc3NpZ25tZW50CisJCWV4YWN0bHkgbWF0Y2hlcyB0aGUgSFcgcmVnaXN0ZXJzLCBpbmNsdWRpbmcgYW55IHVudXNlZCBiaXRzLgorVXNlcnM6CQlhbnkgdXNlciBzcGFjZSBhcHBsaWNhdGlvbiB3aGljaCB3YW50cyB0byByZWFkIHRoZSBlZnVzZXMgb24KKwkJVGVncmEgU29DJ3MKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLXRvc2hpYmFfYWNwaSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLXRvc2hpYmFfYWNwaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWQ5MjJlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItdG9zaGliYV9hY3BpCkBAIC0wLDAgKzEsMTgxIEBACitXaGF0OgkJL3N5cy9kZXZpY2VzL0xOWFNZU1RNOjAwL0xOWFNZQlVTOjAwL1RPU3sxOTAwLDYyMHswLDcsOH19OjAwL2tiZF9iYWNrbGlnaHRfbW9kZQorRGF0ZToJCUp1bmUgOCwgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xNQorQ29udGFjdDoJQXphZWwgQXZhbG9zIDxjb3Byb3NjZWZhbG9AZ21haWwuY29tPgorRGVzY3JpcHRpb246CVRoaXMgZmlsZSBjb250cm9scyB0aGUga2V5Ym9hcmQgYmFja2xpZ2h0IG9wZXJhdGlvbiBtb2RlLCB2YWxpZAorCQl2YWx1ZXMgYXJlOgorCQkJKiAweDEgIC0+IEZOLVoKKwkJCSogMHgyICAtPiBBVVRPIChhbHNvIGNhbGxlZCBUSU1FUikKKwkJCSogMHg4ICAtPiBPTgorCQkJKiAweDEwIC0+IE9GRgorCQlOb3RlIHRoYXQgZnJvbSBrZXJuZWwgMy4xNiBvbndhcmRzIHRoaXMgZmlsZSBhY2NlcHRzIGFsbCBsaXN0ZWQKKwkJcGFyYW1ldGVycywga2VybmVsIDMuMTUgb25seSBhY2NlcHRzIHRoZSBmaXJzdCB0d28gKEZOLVogYW5kCisJCUFVVE8pLgorCQlBbHNvIG5vdGUgdGhhdCB0b2dnbGluZyB0aGlzIHZhbHVlIG9uIHR5cGUgMSBkZXZpY2VzLCByZXF1aXJlcworCQlhIHJlYm9vdCBmb3IgY2hhbmdlcyB0byB0YWtlIGVmZmVjdC4KK1VzZXJzOgkJS1Rvc2hpYmEKKworV2hhdDoJCS9zeXMvZGV2aWNlcy9MTlhTWVNUTTowMC9MTlhTWUJVUzowMC9UT1N7MTkwMCw2MjB7MCw3LDh9fTowMC9rYmRfYmFja2xpZ2h0X3RpbWVvdXQKK0RhdGU6CQlKdW5lIDgsIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTUKK0NvbnRhY3Q6CUF6YWVsIEF2YWxvcyA8Y29wcm9zY2VmYWxvQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOglUaGlzIGZpbGUgY29udHJvbHMgdGhlIHRpbWVvdXQgb2YgdGhlIGtleWJvYXJkIGJhY2tsaWdodAorCQl3aGVuZXZlciB0aGUgb3BlcmF0aW9uIG1vZGUgaXMgc2V0IHRvIEFVVE8gKG9yIFRJTUVSKSwKKwkJdmFsaWQgdmFsdWVzIHJhbmdlIGZyb20gMC02MC4KKwkJTm90ZSB0aGF0IHRoZSBrZXJuZWwgMy4xNSBvbmx5IGhhZCBzdXBwb3J0IGZvciB0aGUgZmlyc3QKKwkJa2V5Ym9hcmQgdHlwZSwgdGhlIGtlcm5lbCAzLjE2IGFkZGVkIHN1cHBvcnQgZm9yIHRoZSBzZWNvbmQKKwkJdHlwZSBhbmQgdGhlIHJhbmdlIGFjY2VwdGVkIGZvciB0eXBlIDIgaXMgMS02MC4KKwkJU2VlIHRoZSBlbnRyeSBuYW1lZCAia2JkX3R5cGUiCitVc2VyczoJCUtUb3NoaWJhCisKK1doYXQ6CQkvc3lzL2RldmljZXMvTE5YU1lTVE06MDAvTE5YU1lCVVM6MDAvVE9TezE5MDAsNjIwezAsNyw4fX06MDAvcG9zaXRpb24KK0RhdGU6CQlKdW5lIDgsIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTUKK0NvbnRhY3Q6CUF6YWVsIEF2YWxvcyA8Y29wcm9zY2VmYWxvQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOglUaGlzIGZpbGUgc2hvd3MgdGhlIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSBidWlsdC1pbgorCQlhY2NlbGVyZW9tZXRlci4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9MTlhTWVNUTTowMC9MTlhTWUJVUzowMC9UT1N7MTkwMCw2MjB7MCw3LDh9fTowMC90b3VjaHBhZAorRGF0ZToJCUp1bmUgOCwgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xNQorQ29udGFjdDoJQXphZWwgQXZhbG9zIDxjb3Byb3NjZWZhbG9AZ21haWwuY29tPgorRGVzY3JpcHRpb246CVRoaXMgZmlsZXMgY29udHJvbHMgdGhlIHN0YXR1cyBvZiB0aGUgdG91Y2hwYWQgYW5kIHBvaW50aW5nCisJCXN0aWNrIChpZiBhdmFpbGFibGUpLCB2YWxpZCB2YWx1ZXMgYXJlOgorCQkJKiAwIC0+IE9GRgorCQkJKiAxIC0+IE9OCitVc2VyczoJCUtUb3NoaWJhCisKK1doYXQ6CQkvc3lzL2RldmljZXMvTE5YU1lTVE06MDAvTE5YU1lCVVM6MDAvVE9TezE5MDAsNjIwezAsNyw4fX06MDAvYXZhaWxhYmxlX2tiZF9tb2RlcworRGF0ZToJCUF1Z3VzdCAzLCAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE2CitDb250YWN0OglBemFlbCBBdmFsb3MgPGNvcHJvc2NlZmFsb0BnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoJVGhpcyBmaWxlIHNob3dzIHRoZSBzdXBwb3J0ZWQga2V5Ym9hcmQgYmFja2xpZ2h0IG1vZGVzCisJCXRoZSBzeXN0ZW0gc3VwcG9ydHMsIHdoaWNoIGNhbiBiZToKKwkJCSogMHgxICAtPiBGTi1aCisJCQkqIDB4MiAgLT4gQVVUTyAoYWxzbyBjYWxsZWQgVElNRVIpCisJCQkqIDB4OCAgLT4gT04KKwkJCSogMHgxMCAtPiBPRkYKKwkJTm90ZSB0aGF0IG5vdCBhbGwga2V5Ym9hcmQgdHlwZXMgc3VwcG9ydCB0aGUgbGlzdGVkIG1vZGVzLgorCQlTZWUgdGhlIGVudHJ5IG5hbWVkICJhdmFpbGFibGVfa2JkX21vZGVzIgorVXNlcnM6CQlLVG9zaGliYQorCitXaGF0OgkJL3N5cy9kZXZpY2VzL0xOWFNZU1RNOjAwL0xOWFNZQlVTOjAwL1RPU3sxOTAwLDYyMHswLDcsOH19OjAwL2tiZF90eXBlCitEYXRlOgkJQXVndXN0IDMsIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTYKK0NvbnRhY3Q6CUF6YWVsIEF2YWxvcyA8Y29wcm9zY2VmYWxvQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOglUaGlzIGZpbGUgc2hvd3MgdGhlIGN1cnJlbnQga2V5Ym9hcmQgYmFja2xpZ2h0IHR5cGUsCisJCXdoaWNoIGNhbiBiZToKKwkJCSogMSAtPiBUeXBlIDEsIHN1cHBvcnRpbmcgbW9kZXMgRk4tWiBhbmQgQVVUTworCQkJKiAyIC0+IFR5cGUgMiwgc3VwcG9ydGluZyBtb2RlcyBUSU1FUiwgT04gYW5kIE9GRgorVXNlcnM6CQlLVG9zaGliYQorCitXaGF0OgkJL3N5cy9kZXZpY2VzL0xOWFNZU1RNOjAwL0xOWFNZQlVTOjAwL1RPU3sxOTAwLDYyMHswLDcsOH19OjAwL3VzYl9zbGVlcF9jaGFyZ2UKK0RhdGU6CQlKYW51YXJ5IDIzLCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAKK0NvbnRhY3Q6CUF6YWVsIEF2YWxvcyA8Y29wcm9zY2VmYWxvQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOglUaGlzIGZpbGUgY29udHJvbHMgdGhlIFVTQiBTbGVlcCAmIENoYXJnZSBjaGFyZ2luZyBtb2RlLCB3aGljaAorCQljYW4gYmU6CisJCQkqIDAgLT4gRGlzYWJsZWQJCSgweDAwKQorCQkJKiAxIC0+IEFsdGVybmF0ZQkoMHgwOSkKKwkJCSogMiAtPiBBdXRvCQkoMHgyMSkKKwkJCSogMyAtPiBUeXBpY2FsCQkoMHgxMSkKKwkJTm90ZSB0aGF0IGZyb20ga2VybmVsIDQuMSBvbndhcmRzIHRoaXMgZmlsZSBhY2NlcHRzIGFsbCBsaXN0ZWQKKwkJdmFsdWVzLCBrZXJuZWwgNC4wIG9ubHkgc3VwcG9ydHMgdGhlIGZpcnN0IHRocmVlLgorCQlOb3RlIHRoYXQgdGhpcyBmZWF0dXJlIG9ubHkgd29ya3Mgd2hlbiBjb25uZWN0ZWQgdG8gcG93ZXIsIGlmCisJCXlvdSB3YW50IHRvIHVzZSBpdCB1bmRlciBiYXR0ZXJ5LCBzZWUgdGhlIGVudHJ5IG5hbWVkCisJCSJzbGVlcF9mdW5jdGlvbnNfb25fYmF0dGVyeSIKK1VzZXJzOgkJS1Rvc2hpYmEKKworV2hhdDoJCS9zeXMvZGV2aWNlcy9MTlhTWVNUTTowMC9MTlhTWUJVUzowMC9UT1N7MTkwMCw2MjB7MCw3LDh9fTowMC9zbGVlcF9mdW5jdGlvbnNfb25fYmF0dGVyeQorRGF0ZToJCUphbnVhcnkgMjMsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMAorQ29udGFjdDoJQXphZWwgQXZhbG9zIDxjb3Byb3NjZWZhbG9AZ21haWwuY29tPgorRGVzY3JpcHRpb246CVRoaXMgZmlsZSBjb250cm9scyB0aGUgVVNCIFNsZWVwIEZ1bmN0aW9ucyB1bmRlciBiYXR0ZXJ5LCBhbmQKKwkJc2V0IHRoZSBsZXZlbCBhdCB3aGljaCBwb2ludCB0aGV5IHdpbGwgYmUgZGlzYWJsZWQsIGFjY2VwdGVkCisJCXZhbHVlcyBjYW4gYmU6CisJCQkqIDAJLT4gRGlzYWJsZWQKKwkJCSogMS0xMDAJLT4gQmF0dGVyeSBsZXZlbCB0byBkaXNhYmxlIHNsZWVwIGZ1bmN0aW9ucworCQlDdXJyZW50bHkgaXQgcHJpbnRzIHR3byB2YWx1ZXMsIHRoZSBmaXJzdCBvbmUgaW5kaWNhdGVzIGlmIHRoZQorCQlmZWF0dXJlIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQsIHdoaWxlIHRoZSBzZWNvbmQgb25lIHNob3dzIHRoZQorCQljdXJyZW50IGJhdHRlcnkgbGV2ZWwgc2V0LgorCQlOb3RlIHRoYXQgd2hlbiB0aGUgdmFsdWUgaXMgc2V0IHRvIGRpc2FibGVkLCB0aGUgc2xlZXAgZnVuY3Rpb24KKwkJd2lsbCBvbmx5IHdvcmsgd2hlbiBjb25uZWN0ZWQgdG8gcG93ZXIuCitVc2VyczoJCUtUb3NoaWJhCisKK1doYXQ6CQkvc3lzL2RldmljZXMvTE5YU1lTVE06MDAvTE5YU1lCVVM6MDAvVE9TezE5MDAsNjIwezAsNyw4fX06MDAvdXNiX3JhcGlkX2NoYXJnZQorRGF0ZToJCUphbnVhcnkgMjMsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMAorQ29udGFjdDoJQXphZWwgQXZhbG9zIDxjb3Byb3NjZWZhbG9AZ21haWwuY29tPgorRGVzY3JpcHRpb246CVRoaXMgZmlsZSBjb250cm9scyB0aGUgVVNCIFJhcGlkIENoYXJnZSBzdGF0ZSwgd2hpY2ggY2FuIGJlOgorCQkJKiAwIC0+IERpc2FibGVkCisJCQkqIDEgLT4gRW5hYmxlZAorCQlOb3RlIHRoYXQgdG9nZ2xpbmcgdGhpcyB2YWx1ZSByZXF1aXJlcyBhIHJlYm9vdCBmb3IgY2hhbmdlcyB0bworCQl0YWtlIGVmZmVjdC4KK1VzZXJzOgkJS1Rvc2hpYmEKKworV2hhdDoJCS9zeXMvZGV2aWNlcy9MTlhTWVNUTTowMC9MTlhTWUJVUzowMC9UT1N7MTkwMCw2MjB7MCw3LDh9fTowMC91c2Jfc2xlZXBfbXVzaWMKK0RhdGU6CQlKYW51YXJ5IDIzLCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAKK0NvbnRhY3Q6CUF6YWVsIEF2YWxvcyA8Y29wcm9zY2VmYWxvQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOglUaGlzIGZpbGUgY29udHJvbHMgdGhlIFNsZWVwICYgTXVzaWMgc3RhdGUsIHdoaWNoIHZhbHVlcyBjYW4gYmU6CisJCQkqIDAgLT4gRGlzYWJsZWQKKwkJCSogMSAtPiBFbmFibGVkCisJCU5vdGUgdGhhdCB0aGlzIGZlYXR1cmUgb25seSB3b3JrcyB3aGVuIGNvbm5lY3RlZCB0byBwb3dlciwgaWYKKwkJeW91IHdhbnQgdG8gdXNlIGl0IHVuZGVyIGJhdHRlcnksIHNlZSB0aGUgZW50cnkgbmFtZWQKKwkJInNsZWVwX2Z1bmN0aW9uc19vbl9iYXR0ZXJ5IgorVXNlcnM6CQlLVG9zaGliYQorCitXaGF0OgkJL3N5cy9kZXZpY2VzL0xOWFNZU1RNOjAwL0xOWFNZQlVTOjAwL1RPU3sxOTAwLDYyMHswLDcsOH19OjAwL3ZlcnNpb24KK0RhdGU6CQlGZWJydWFyeSAxMiwgMjAxNQorS2VybmVsVmVyc2lvbjoJNC4wCitDb250YWN0OglBemFlbCBBdmFsb3MgPGNvcHJvc2NlZmFsb0BnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoJVGhpcyBmaWxlIHNob3dzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIGRyaXZlcgorVXNlcnM6CQlLVG9zaGliYQorCitXaGF0OgkJL3N5cy9kZXZpY2VzL0xOWFNZU1RNOjAwL0xOWFNZQlVTOjAwL1RPU3sxOTAwLDYyMHswLDcsOH19OjAwL2ZhbgorRGF0ZToJCUZlYnJ1YXJ5IDEyLCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAKK0NvbnRhY3Q6CUF6YWVsIEF2YWxvcyA8Y29wcm9zY2VmYWxvQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOglUaGlzIGZpbGUgY29udHJvbHMgdGhlIHN0YXRlIG9mIHRoZSBpbnRlcm5hbCBmYW4sIHZhbGlkCisJCXZhbHVlcyBhcmU6CisJCQkqIDAgLT4gT0ZGCisJCQkqIDEgLT4gT04KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9MTlhTWVNUTTowMC9MTlhTWUJVUzowMC9UT1N7MTkwMCw2MjB7MCw3LDh9fTowMC9rYmRfZnVuY3Rpb25fa2V5cworRGF0ZToJCUZlYnJ1YXJ5IDEyLCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAKK0NvbnRhY3Q6CUF6YWVsIEF2YWxvcyA8Y29wcm9zY2VmYWxvQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOglUaGlzIGZpbGUgY29udHJvbHMgdGhlIFNwZWNpYWwgRnVuY3Rpb25zIChob3RrZXlzKSBvcGVyYXRpb24KKwkJbW9kZSwgdmFsaWQgdmFsdWVzIGFyZToKKwkJCSogMCAtPiBOb3JtYWwgT3BlcmF0aW9uCisJCQkqIDEgLT4gU3BlY2lhbCBGdW5jdGlvbnMKKwkJSW4gdGhlICJOb3JtYWwgT3BlcmF0aW9uIiBtb2RlLCB0aGUgRnsxLTEyfSBrZXlzIGFyZSBhcyB1c3VhbAorCQlhbmQgdGhlIGhvdGtleXMgYXJlIGFjY2Vzc2VkIHZpYSBGTi1GezEtMTJ9LgorCQlJbiB0aGUgIlNwZWNpYWwgRnVuY3Rpb25zIiBtb2RlLCB0aGUgRnsxLTEyfSBrZXlzIHRyaWdnZXIgdGhlCisJCWhvdGtleSBhbmQgdGhlIEZ7MS0xMn0ga2V5cyBhcmUgYWNjZXNzZWQgdmlhIEZOLUZ7MS0xMn0uCisJCU5vdGUgdGhhdCB0b2dnbGluZyB0aGlzIHZhbHVlIHJlcXVpcmVzIGEgcmVib290IGZvciBjaGFuZ2VzIHRvCisJCXRha2UgZWZmZWN0LgorVXNlcnM6CQlLVG9zaGliYQorCitXaGF0OgkJL3N5cy9kZXZpY2VzL0xOWFNZU1RNOjAwL0xOWFNZQlVTOjAwL1RPU3sxOTAwLDYyMHswLDcsOH19OjAwL3BhbmVsX3Bvd2VyX29uCitEYXRlOgkJRmVicnVhcnkgMTIsIDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMAorQ29udGFjdDoJQXphZWwgQXZhbG9zIDxjb3Byb3NjZWZhbG9AZ21haWwuY29tPgorRGVzY3JpcHRpb246CVRoaXMgZmlsZSBjb250cm9scyB3aGV0aGVyIHRoZSBsYXB0b3Agc2hvdWxkIHR1cm4gT04gd2hlbmV2ZXIKKwkJdGhlIExJRCBpcyBvcGVuZWQsIHZhbGlkIHZhbHVlcyBhcmU6CisJCQkqIDAgLT4gRGlzYWJsZWQKKwkJCSogMSAtPiBFbmFibGVkCisJCU5vdGUgdGhhdCB0b2dnbGluZyB0aGlzIHZhbHVlIHJlcXVpcmVzIGEgcmVib290IGZvciBjaGFuZ2VzIHRvCisJCXRha2UgZWZmZWN0LgorVXNlcnM6CQlLVG9zaGliYQorCitXaGF0OgkJL3N5cy9kZXZpY2VzL0xOWFNZU1RNOjAwL0xOWFNZQlVTOjAwL1RPU3sxOTAwLDYyMHswLDcsOH19OjAwL3VzYl90aHJlZQorRGF0ZToJCUZlYnJ1YXJ5IDEyLCAyMDE1CitLZXJuZWxWZXJzaW9uOgk0LjAKK0NvbnRhY3Q6CUF6YWVsIEF2YWxvcyA8Y29wcm9zY2VmYWxvQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOglUaGlzIGZpbGUgY29udHJvbHMgdGhlIFVTQiAzIGZ1bmN0aW9uYWxpdHksIHZhbGlkIHZhbHVlcyBhcmU6CisJCQkqIDAgLT4gRGlzYWJsZWQgKEFjdHMgYXMgYSByZWd1bGFyIFVTQiAyKQorCQkJKiAxIC0+IEVuYWJsZWQgKEZ1bGwgVVNCIDMgZnVuY3Rpb25hbGl0eSkKKwkJTm90ZSB0aGF0IHRvZ2dsaW5nIHRoaXMgdmFsdWUgcmVxdWlyZXMgYSByZWJvb3QgZm9yIGNoYW5nZXMgdG8KKwkJdGFrZSBlZmZlY3QuCitVc2VyczoJCUtUb3NoaWJhCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci10b3NoaWJhX2hhcHMgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci10b3NoaWJhX2hhcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY2MjM3MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLXRvc2hpYmFfaGFwcwpAQCAtMCwwICsxLDIwIEBACitXaGF0OgkJL3N5cy9kZXZpY2VzL0xOWFNZU1RNOjAwL0xOWFNZQlVTOjAwL1RPUzYyMEE6MDAvcHJvdGVjdGlvbl9sZXZlbAorRGF0ZToJCUF1Z3VzdCAxNiwgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xNworQ29udGFjdDoJQXphZWwgQXZhbG9zIDxjb3Byb3NjZWZhbG9AZ21haWwuY29tPgorRGVzY3JpcHRpb246CVRoaXMgZmlsZSBjb250cm9scyB0aGUgYnVpbHQtaW4gYWNjZWxlcm9tZXRlciBwcm90ZWN0aW9uIGxldmVsLAorCQl2YWxpZCB2YWx1ZXMgYXJlOgorCQkJKiAwIC0+IERpc2FibGVkCisJCQkqIDEgLT4gTG93CisJCQkqIDIgLT4gTWVkaXVtCisJCQkqIDMgLT4gSGlnaAorCQlUaGUgZGVmYXVsdCBwb3RlY3Rpb24gdmFsdWUgaXMgc2V0IHRvIDIgKE1lZGl1bSkuCitVc2VyczoJCUtUb3NoaWJhCisKK1doYXQ6CQkvc3lzL2RldmljZXMvTE5YU1lTVE06MDAvTE5YU1lCVVM6MDAvVE9TNjIwQTowMC9yZXNldF9wcm90ZWN0aW9uCitEYXRlOgkJQXVndXN0IDE2LCAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE3CitDb250YWN0OglBemFlbCBBdmFsb3MgPGNvcHJvc2NlZmFsb0BnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoJVGhpcyBmaWxlIHR1cm5zIG9mZiB0aGUgYnVpbHQtaW4gYWNjZWxlcm9tZXRlciBmb3IgYSBmZXcKKwkJc2Vjb25kcyBhbmQgdGhlbiByZXN0b3JlIG5vcm1hbCBvcGVyYXRpb24uIEFjY2VwdGluZyAxIGFzIHRoZQorCQlvbmx5IHBhcmFtZXRlci4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLXdhY29tIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItd2Fjb20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGNhNDI5MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLXdhY29tCkBAIC0wLDAgKzEsOTggQEAKK1doYXQ6CQkvc3lzL2J1cy9oaWQvZGV2aWNlcy88YnVzPjo8dmlkPjo8cGlkPi48bj4vc3BlZWQKK0RhdGU6CQlBcHJpbCAyMDEwCitLZXJuZWwgVmVyc2lvbjoJMi42LjM1CitDb250YWN0OglsaW51eC1ibHVldG9vdGhAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvYnVzL2hpZC9kZXZpY2VzLzxidXM+Ojx2aWQ+OjxwaWQ+LjxuPi9zcGVlZCBmaWxlCisJCWNvbnRyb2xzIHJlcG9ydGluZyBzcGVlZCBvZiBXYWNvbSBibHVldG9vdGggdGFibGV0LiBSZWFkaW5nCisJCWZyb20gdGhpcyBmaWxlIHJldHVybnMgMSBpZiB0YWJsZXQgcmVwb3J0cyBpbiBoaWdoIHNwZWVkIG1vZGUKKwkJb3IgMCBvdGhlcndpc2UuIFdyaXRpbmcgdG8gdGhpcyBmaWxlIG9uZSBvZiB0aGVzZSB2YWx1ZXMKKwkJc3dpdGNoZXMgcmVwb3J0aW5nIHNwZWVkLgorCitXaGF0OgkJL3N5cy9idXMvaGlkL2RldmljZXMvPGJ1cz46PHZpZD46PHBpZD4uPG4+L3dhY29tX2xlZC9sZWQKK0RhdGU6CQlBdWd1c3QgMjAxNAorQ29udGFjdDoJbGludXgtaW5wdXRAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJQXR0cmlidXRlIGdyb3VwIGZvciBjb250cm9sIG9mIHRoZSBzdGF0dXMgTEVEcyBhbmQgdGhlIE9MRURzLgorCQlUaGlzIGF0dHJpYnV0ZSBncm91cCBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgSW50dW9zIDQgTSwgTCwKKwkJYW5kIFhMICh3aXRoIExFRHMgYW5kIE9MRURzKSwgSW50dW9zIDQgV0wsIEludHVvcyA1IChMRURzIG9ubHkpLAorCQlJbnR1b3MgUHJvIChMRURzIG9ubHkpIGFuZCBDaW50aXEgMjFVWDIgYW5kIENpbnRpcSAyNEhECisJCShMRURzIG9ubHkpLiBUaGVyZWZvcmUgaXRzIHByZXNlbmNlIGltcGxpY2l0bHkgc2lnbmlmaWVzIHRoZQorCQlwcmVzZW5jZSBvZiBzYWlkIExFRHMgYW5kIE9MRURzIG9uIHRoZSB0YWJsZXQgZGV2aWNlLgorCitXaGF0OgkJL3N5cy9idXMvaGlkL2RldmljZXMvPGJ1cz46PHZpZD46PHBpZD4uPG4+L3dhY29tX2xlZC9zdGF0dXMwX2x1bWluYW5jZQorRGF0ZToJCUF1Z3VzdCAyMDE0CitDb250YWN0OglsaW51eC1pbnB1dEB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlXcml0aW5nIHRvIHRoaXMgZmlsZSBzZXRzIHRoZSBzdGF0dXMgTEVEIGx1bWluYW5jZSAoMS4uMTI3KQorCQl3aGVuIHRoZSBzdHlsdXMgZG9lcyBub3QgdG91Y2ggdGhlIHRhYmxldCBzdXJmYWNlLCBhbmQgbm8KKwkJYnV0dG9uIGlzIHByZXNzZWQgb24gdGhlIHN0eWx1cy4gVGhpcyBsdW1pbmFuY2UgbGV2ZWwgaXMKKwkJbm9ybWFsbHkgbG93ZXIgdGhhbiB0aGUgbGV2ZWwgd2hlbiBhIGJ1dHRvbiBpcyBwcmVzc2VkLgorCitXaGF0OgkJL3N5cy9idXMvaGlkL2RldmljZXMvPGJ1cz46PHZpZD46PHBpZD4uPG4+L3dhY29tX2xlZC9zdGF0dXMxX2x1bWluYW5jZQorRGF0ZToJCUF1Z3VzdCAyMDE0CitDb250YWN0OglsaW51eC1pbnB1dEB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlXcml0aW5nIHRvIHRoaXMgZmlsZSBzZXRzIHRoZSBzdGF0dXMgTEVEIGx1bWluYW5jZSAoMS4uMTI3KQorCQl3aGVuIHRoZSBzdHlsdXMgdG91Y2hlcyB0aGUgdGFibGV0IHN1cmZhY2UsIG9yIGFueSBidXR0b24gaXMKKwkJcHJlc3NlZCBvbiB0aGUgc3R5bHVzLgorCitXaGF0OgkJL3N5cy9idXMvaGlkL2RldmljZXMvPGJ1cz46PHZpZD46PHBpZD4uPG4+L3dhY29tX2xlZC9zdGF0dXNfbGVkMF9zZWxlY3QKK0RhdGU6CQlBdWd1c3QgMjAxNAorQ29udGFjdDoJbGludXgtaW5wdXRAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJV3JpdGluZyB0byB0aGlzIGZpbGUgc2V0cyB3aGljaCBvbmUgb2YgdGhlIGZvdXIgKGZvciBJbnR1b3MgNAorCQlhbmQgSW50dW9zIDUpIG9yIG9mIHRoZSByaWdodCBmb3VyIChmb3IgQ2ludGlxIDIxVVgyIGFuZCBDaW50aXEKKwkJMjRIRCkgc3RhdHVzIExFRHMgaXMgYWN0aXZlICgwLi4zKS4gVGhlIG90aGVyIHRocmVlIExFRHMgb24gdGhlCisJCXNhbWUgc2lkZSBhcmUgYWx3YXlzIGluYWN0aXZlLgorCitXaGF0OgkJL3N5cy9idXMvaGlkL2RldmljZXMvPGJ1cz46PHZpZD46PHBpZD4uPG4+L3dhY29tX2xlZC9zdGF0dXNfbGVkMV9zZWxlY3QKK0RhdGU6CQlBdWd1c3QgMjAxNAorQ29udGFjdDoJbGludXgtaW5wdXRAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJV3JpdGluZyB0byB0aGlzIGZpbGUgc2V0cyB3aGljaCBvbmUgb2YgdGhlIGxlZnQgZm91ciAoZm9yIENpbnRpcSAyMVVYMgorCQlhbmQgQ2ludGlxIDI0SEQpIHN0YXR1cyBMRURzIGlzIGFjdGl2ZSAoMC4uMykuIFRoZSBvdGhlciB0aHJlZSBMRURzIG9uCisJCXRoZSBsZWZ0IGFyZSBhbHdheXMgaW5hY3RpdmUuCisKK1doYXQ6CQkvc3lzL2J1cy9oaWQvZGV2aWNlcy88YnVzPjo8dmlkPjo8cGlkPi48bj4vd2Fjb21fbGVkL2J1dHRvbnNfbHVtaW5hbmNlCitEYXRlOgkJQXVndXN0IDIwMTQKK0NvbnRhY3Q6CWxpbnV4LWlucHV0QHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCVdyaXRpbmcgdG8gdGhpcyBmaWxlIHNldHMgdGhlIG92ZXJhbGwgbHVtaW5hbmNlIGxldmVsICgwLi4xNSkKKwkJb2YgYWxsIGVpZ2h0IGJ1dHRvbiBPTEVEIGRpc3BsYXlzLgorCitXaGF0OgkJL3N5cy9idXMvaGlkL2RldmljZXMvPGJ1cz46PHZpZD46PHBpZD4uPG4+L3dhY29tX2xlZC9idXR0b248bj5fcmF3aW1nCitEYXRlOgkJQXVndXN0IDIwMTQKK0NvbnRhY3Q6CWxpbnV4LWlucHV0QHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCVdoZW4gd3JpdGluZyBhIDEwMjQgYnl0ZSByYXcgaW1hZ2UgaW4gV2Fjb20gSW50dW9zIDQKKwkJaW50ZXJsZWF2aW5nIGZvcm1hdCB0byB0aGUgZmlsZSwgdGhlIGltYWdlIHNob3dzIHVwIG9uIEJ1dHRvbiBOCisJCW9mIHRoZSBkZXZpY2UuIFRoZSBpbWFnZSBpcyBhIDY0eDMyIHBpeGVsIDQtYml0IGdyYXkgaW1hZ2UuIFRoZQorCQkxMDI0IGJ5dGUgYmluYXJ5IGlzIHNwbGl0IHVwIGludG8gMTZ4IDY0IGJ5dGUgY2h1bmtzLiBFYWNoIDY0CisJCWJ5dGUgY2h1bmsgZW5jb2RlcyB0aGUgaW1hZ2UgZGF0YSBmb3IgdHdvIGNvbnNlY3V0aXZlIGxpbmVzIG9uCisJCXRoZSBkaXNwbGF5LiBUaGUgbG93IG5pYmJsZSBvZiBlYWNoIGJ5dGUgY29udGFpbnMgdGhlIGZpcnN0CisJCWxpbmUsIGFuZCB0aGUgaGlnaCBuaWJibGUgY29udGFpbnMgdGhlIHNlY29uZCBsaW5lLgorCQlXaGVuIHRoZSBXYWNvbSBJbnR1b3MgNCBpcyBjb25uZWN0ZWQgb3ZlciBCbHVldG9vdGgsIHRoZQorCQlpbWFnZSBoYXMgdG8gY29udGFpbiAyNTYgYnl0ZXMgKDY0eDMyIHB4IDEgYml0IGNvbG91cikuCisJCVRoZSBmb3JtYXQgaXMgYWxzbyBzY3JhbWJsZWQsIGxpa2UgaW4gdGhlIFVTQiBtb2RlLCBhbmQgaXQgY2FuCisJCWJlIHN1bW1hcml6ZWQgYnkgY29udmVydGluZyA3NjU0MzIxMCBpbnRvIEdFQ0E2NDIwLgorCQkJCQkgICAgSEdGRURDQkEgICAgICBIRkRCNzUzMQorCitXaGF0OgkJL3N5cy9idXMvaGlkL2RldmljZXMvPGJ1cz46PHZpZD46PHBpZD4uPG4+L3dhY29tX3JlbW90ZS91bnBhaXJfcmVtb3RlCitEYXRlOgkJSnVseSAyMDE1CitDb250YWN0OglsaW51eC1pbnB1dEB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlXcml0aW5nIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UgJyonIGZvbGxvd2VkIGJ5IGEgbmV3bGluZSB0bworCQl0aGlzIGZpbGUgd2lsbCBkZWxldGUgYWxsIG9mIHRoZSBjdXJyZW50IHBhaXJpbmdzIG9uIHRoZQorCQlkZXZpY2UuIE90aGVyIGNoYXJhY3RlciBzZXF1ZW5jZXMgYXJlIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMKKwkJd3JpdGUgb25seS4KKworV2hhdDoJCS9zeXMvYnVzL2hpZC9kZXZpY2VzLzxidXM+Ojx2aWQ+OjxwaWQ+LjxuPi93YWNvbV9yZW1vdGUvPHNlcmlhbF9udW1iZXI+L3JlbW90ZV9tb2RlCitEYXRlOgkJSnVseSAyMDE1CitDb250YWN0OglsaW51eC1pbnB1dEB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOgorCQlSZWFkaW5nIGZyb20gdGhpcyBmaWxlIHJlcG9ydHMgdGhlIG1vZGUgc3RhdHVzIG9mIHRoZQorCQlyZW1vdGUgYXMgaW5kaWNhdGVkIGJ5IHRoZSBMRUQgbGlnaHRzIG9uIHRoZSBkZXZpY2UuIElmIG5vCisJCXJlcG9ydHMgaGF2ZSBiZWVuIHJlY2VpdmVkIGZyb20gdGhlIHBhaXJlZCBkZXZpY2UsIHJlYWRpbmcKKwkJZnJvbSB0aGlzIGZpbGUgd2lsbCByZXBvcnQgJy0xJy4gVGhlIG1vZGUgaXMgcmVhZC1vbmx5CisJCWFuZCBjYW5ub3QgYmUgc2V0IHRocm91Z2ggdGhlIGRyaXZlci4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLXhlbi1ibGtiYWNrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXIteGVuLWJsa2JhY2sKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJiNDNiNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLXhlbi1ibGtiYWNrCkBAIC0wLDAgKzEsMTcgQEAKK1doYXQ6ICAgICAgICAgICAvc3lzL21vZHVsZS94ZW5fYmxrYmFjay9wYXJhbWV0ZXJzL21heF9idWZmZXJfcGFnZXMKK0RhdGU6ICAgICAgICAgICBNYXJjaCAyMDEzCitLZXJuZWxWZXJzaW9uOiAgMy4xMQorQ29udGFjdDogICAgICAgIFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgorRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgTWF4aW11bSBudW1iZXIgb2YgZnJlZSBwYWdlcyB0byBrZWVwIGluIGVhY2ggYmxvY2sKKyAgICAgICAgICAgICAgICBiYWNrZW5kIGJ1ZmZlci4KKworV2hhdDogICAgICAgICAgIC9zeXMvbW9kdWxlL3hlbl9ibGtiYWNrL3BhcmFtZXRlcnMvbWF4X3BlcnNpc3RlbnRfZ3JhbnRzCitEYXRlOiAgICAgICAgICAgTWFyY2ggMjAxMworS2VybmVsVmVyc2lvbjogIDMuMTEKK0NvbnRhY3Q6ICAgICAgICBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIE1heGltdW0gbnVtYmVyIG9mIGdyYW50cyB0byBtYXAgcGVyc2lzdGVudGx5IGluCisgICAgICAgICAgICAgICAgYmxrYmFjay4gSWYgdGhlIGZyb250ZW5kIHRyaWVzIHRvIHVzZSBtb3JlIHRoYW4KKyAgICAgICAgICAgICAgICBtYXhfcGVyc2lzdGVudF9ncmFudHMsIHRoZSBMUlUga2lja3MgaW4gYW5kIHN0YXJ0cworICAgICAgICAgICAgICAgIHJlbW92aW5nIDUlIG9mIG1heF9wZXJzaXN0ZW50X2dyYW50cyBldmVyeSAxMDBtcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLXhlbi1ibGtmcm9udCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLXhlbi1ibGtmcm9udApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGE2Y2I3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXIteGVuLWJsa2Zyb250CkBAIC0wLDAgKzEsMTAgQEAKK1doYXQ6ICAgICAgICAgICAvc3lzL21vZHVsZS94ZW5fYmxrZnJvbnQvcGFyYW1ldGVycy9tYXgKK0RhdGU6ICAgICAgICAgICBKdW5lIDIwMTMKK0tlcm5lbFZlcnNpb246ICAzLjExCitDb250YWN0OiAgICAgICAgS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgorRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgTWF4aW11bSBudW1iZXIgb2Ygc2VnbWVudHMgdGhhdCB0aGUgZnJvbnRlbmQgd2lsbCBuZWdvdGlhdGUKKyAgICAgICAgICAgICAgICB3aXRoIHRoZSBiYWNrZW5kIGZvciBpbmRpcmVjdCBkZXNjcmlwdG9ycy4gVGhlIGRlZmF1bHQgdmFsdWUKKyAgICAgICAgICAgICAgICBpcyAzMiAtIGhpZ2hlciB2YWx1ZSBtZWFucyBtb3JlIHBvdGVudGlhbCB0aHJvdWdocHV0IGJ1dCBtb3JlCisgICAgICAgICAgICAgICAgbWVtb3J5IHVzYWdlLiBUaGUgYmFja2VuZCBwaWNrcyB0aGUgbWluaW11bSBvZiB0aGUgZnJvbnRlbmQKKyAgICAgICAgICAgICAgICBhbmQgaXRzIGRlZmF1bHQgYmFja2VuZCB2YWx1ZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZmlybXdhcmUtYWNwaSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZmlybXdhcmUtYWNwaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDQzNmNjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1maXJtd2FyZS1hY3BpCkBAIC0wLDAgKzEsMjA2IEBACitXaGF0OgkJL3N5cy9maXJtd2FyZS9hY3BpL2JncnQvCitEYXRlOgkJSmFudWFyeSAyMDEyCitDb250YWN0OglNYXR0aGV3IEdhcnJldHQgPG1qZ0ByZWRoYXQuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSBCR1JUIGlzIGFuIEFDUEkgNS4wIGZlYXR1cmUgdGhhdCBhbGxvd3MgdGhlIE9TCisJCXRvIG9idGFpbiBhIGNvcHkgb2YgdGhlIGZpcm13YXJlIGJvb3Qgc3BsYXNoIGFuZAorCQlzb21lIGFzc29jaWF0ZWQgbWV0YWRhdGEuIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZAorCQlieSBib290IHNwbGFzaCBhcHBsaWNhdGlvbnMgaW4gb3JkZXIgdG8gaW50ZXJhY3Qgd2l0aAorCQl0aGUgZmlybXdhcmUgYm9vdCBzcGxhc2ggaW4gb3JkZXIgdG8gYXZvaWQgamFycmluZworCQl0cmFuc2l0aW9ucy4KKworCQlpbWFnZTogVGhlIGltYWdlIGJpdG1hcC4gQ3VycmVudGx5IGEgMzItYml0IEJNUC4KKwkJc3RhdHVzOiAxIGlmIHRoZSBpbWFnZSBpcyB2YWxpZCwgMCBpZiBmaXJtd2FyZSBpbnZhbGlkYXRlZCBpdC4KKwkJdHlwZTogMCBpbmRpY2F0ZXMgaW1hZ2UgaXMgaW4gQk1QIGZvcm1hdC4KKwkJdmVyc2lvbjogVGhlIHZlcnNpb24gb2YgdGhlIEJHUlQuIEN1cnJlbnRseSAxLgorCQl4b2Zmc2V0OiBUaGUgbnVtYmVyIG9mIHBpeGVscyBiZXR3ZWVuIHRoZSBsZWZ0IG9mIHRoZSBzY3JlZW4KKwkJCSBhbmQgdGhlIGxlZnQgZWRnZSBvZiB0aGUgaW1hZ2UuCisJCXlvZmZzZXQ6IFRoZSBudW1iZXIgb2YgcGl4ZWxzIGJldHdlZW4gdGhlIHRvcCBvZiB0aGUgc2NyZWVuCisJCQkgYW5kIHRoZSB0b3AgZWRnZSBvZiB0aGUgaW1hZ2UuCisKK1doYXQ6CQkvc3lzL2Zpcm13YXJlL2FjcGkvaG90cGx1Zy8KK0RhdGU6CQlGZWJydWFyeSAyMDEzCitDb250YWN0OglSYWZhZWwgSi4gV3lzb2NraSA8cmFmYWVsLmoud3lzb2NraUBpbnRlbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlcmUgYXJlIHNlcGFyYXRlIGhvdHBsdWcgcHJvZmlsZXMgZm9yIGRpZmZlcmVudCBjbGFzc2VzIG9mCisJCWRldmljZXMgc3VwcG9ydGVkIGJ5IEFDUEksIHN1Y2ggYXMgY29udGFpbmVycywgbWVtb3J5IG1vZHVsZXMsCisJCXByb2Nlc3NvcnMsIFBDSSByb290IGJyaWRnZXMgZXRjLiAgQSBob3RwbHVnIHByb2ZpbGUgZm9yIGEgZ2l2ZW4KKwkJY2xhc3Mgb2YgZGV2aWNlcyBpcyBhIGNvbGxlY3Rpb24gb2Ygc2V0dGluZ3MgZGVmaW5pbmcgdGhlIHdheQorCQl0aGF0IGNsYXNzIG9mIGRldmljZXMgd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSBBQ1BJIGNvcmUgaG90cGx1ZworCQljb2RlLiAgVGhvc2UgcHJvZmlsZXMgYXJlIHJlcHJlc2VudGVkIGluIHN5c2ZzIGFzIHN1YmRpcmVjdG9yaWVzCisJCW9mIC9zeXMvZmlybXdhcmUvYWNwaS9ob3RwbHVnLy4KKworCQlUaGUgZm9sbG93aW5nIHNldHRpbmcgaXMgYXZhaWxhYmxlIHRvIHVzZXIgc3BhY2UgZm9yIGVhY2gKKwkJaG90cGx1ZyBwcm9maWxlOgorCisJCWVuYWJsZWQ6IElmIHNldCwgdGhlIEFDUEkgY29yZSB3aWxsIGhhbmRsZSBub3RpZmljYXRpb25zIG9mCisJCQlob3RwbHVnIGV2ZW50cyBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGNsYXNzIG9mCisJCQlkZXZpY2VzIGFuZCB3aWxsIGFsbG93IHRob3NlIGRldmljZXMgdG8gYmUgZWplY3RlZCB3aXRoCisJCQl0aGUgaGVscCBvZiB0aGUgX0VKMCBjb250cm9sIG1ldGhvZC4gIFVuc2V0dGluZyBpdAorCQkJZWZmZWN0aXZlbHkgZGlzYWJsZXMgaG90cGx1ZyBmb3IgdGhlIGNvcnJlc3BvaW5kaW5nCisJCQljbGFzcyBvZiBkZXZpY2VzLgorCisJCVRoZSB2YWx1ZSBvZiB0aGUgYWJvdmUgYXR0cmlidXRlIGlzIGFuIGludGVnZXIgbnVtYmVyOiAxIChzZXQpCisJCW9yIDAgKHVuc2V0KS4gIEF0dGVtcHRzIHRvIHdyaXRlIGFueSBvdGhlciB2YWx1ZXMgdG8gaXQgd2lsbAorCQljYXVzZSAtRUlOVkFMIHRvIGJlIHJldHVybmVkLgorCitXaGF0OgkJL3N5cy9maXJtd2FyZS9hY3BpL2hvdHBsdWcvZm9yY2VfcmVtb3ZlCitEYXRlOgkJTWF5IDIwMTMKK0NvbnRhY3Q6CVJhZmFlbCBKLiBXeXNvY2tpIDxyYWZhZWwuai53eXNvY2tpQGludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgbnVtYmVyIGluIHRoaXMgZmlsZSAoMCBvciAxKSBkZXRlcm1pbmVzIHdoZXRoZXIgKDEpIG9yIG5vdAorCQkoMCkgdGhlIEFDUEkgc3Vic3lzdGVtIHdpbGwgYWxsb3cgZGV2aWNlcyB0byBiZSBob3QtcmVtb3ZlZCBldmVuCisJCWlmIHRoZXkgY2Fubm90IGJlIHB1dCBvZmZsaW5lIGdyYWNlZnVsbHkgKGZyb20gdGhlIGtlcm5lbCdzCisJCXZpZXdwb2ludCkuICBUaGF0IG51bWJlciBjYW4gYmUgY2hhbmdlZCBieSB3cml0aW5nIGEgYm9vbGVhbgorCQl2YWx1ZSB0byB0aGlzIGZpbGUuCisKK1doYXQ6CQkvc3lzL2Zpcm13YXJlL2FjcGkvaW50ZXJydXB0cy8KK0RhdGU6CQlGZWJydWFyeSAyMDA4CitDb250YWN0OglMZW4gQnJvd24gPGxlbmJAa2VybmVsLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlBbGwgQUNQSSBpbnRlcnJ1cHRzIGFyZSBoYW5kbGVkIHZpYSBhIHNpbmdsZSBJUlEsCisJCXRoZSBTeXN0ZW0gQ29udHJvbCBJbnRlcnJ1cHQgKFNDSSksIHdoaWNoIGFwcGVhcnMKKwkJYXMgImFjcGkiIGluIC9wcm9jL2ludGVycnVwdHMuCisKKwkJSG93ZXZlciwgb25lIG9mIHRoZSBtYWluIGZ1bmN0aW9ucyBvZiBBQ1BJIGlzIHRvIG1ha2UKKwkJdGhlIHBsYXRmb3JtIHVuZGVyc3RhbmQgcmFuZG9tIGhhcmR3YXJlIHdpdGhvdXQKKwkJc3BlY2lhbCBkcml2ZXIgc3VwcG9ydC4gIFNvIHdoaWxlIHRoZSBTQ0kgaGFuZGxlcyBhIGZldworCQl3ZWxsIGtub3duIChmaXhlZCBmZWF0dXJlKSBpbnRlcnJ1cHRzIHNvdXJjZXMsIHN1Y2gKKwkJYXMgdGhlIHBvd2VyIGJ1dHRvbiwgaXQgY2FuIGFsc28gaGFuZGxlIGEgdmFyaWFibGUKKwkJbnVtYmVyIG9mIGEgIkdlbmVyYWwgUHVycG9zZSBFdmVudHMiIChHUEUpLgorCisJCUEgR1BFIHZlY3RvcnMgdG8gYSBzcGVjaWZpZWQgaGFuZGxlciBpbiBBTUwsIHdoaWNoCisJCWNhbiBkbyBhIGFueXRoaW5nIHRoZSBCSU9TIHdyaXRlciB3YW50cyBmcm9tCisJCU9TIGNvbnRleHQuICBHUEUgMHgxMiwgZm9yIGV4YW1wbGUsIHdvdWxkIHZlY3RvcgorCQl0byBhIGxldmVsIG9yIGVkZ2UgaGFuZGxlciBjYWxsZWQgX0wxMiBvciBfRTEyLgorCQlUaGUgaGFuZGxlciBtYXkgZG8gaXRzIGJ1c2luZXNzIGFuZCByZXR1cm4uCisJCU9yIHRoZSBoYW5kbGVyIG1heSBzZW5kIHNlbmQgYSBOb3RpZnkgZXZlbnQKKwkJdG8gYSBMaW51eCBkZXZpY2UgZHJpdmVyIHJlZ2lzdGVyZWQgb24gYW4gQUNQSSBkZXZpY2UsCisJCXN1Y2ggYXMgYSBiYXR0ZXJ5LCBvciBhIHByb2Nlc3Nvci4KKworCQlUbyBmaWd1cmUgb3V0IHdoZXJlIGFsbCB0aGUgU0NJJ3MgYXJlIGNvbWluZyBmcm9tLAorCQkvc3lzL2Zpcm13YXJlL2FjcGkvaW50ZXJydXB0cyBjb250YWlucyBhIGZpbGUgbGlzdGluZworCQlldmVyeSBwb3NzaWJsZSBzb3VyY2UsIGFuZCB0aGUgY291bnQgb2YgaG93IG1hbnkKKwkJdGltZXMgaXQgaGFzIHRyaWdnZXJlZC4KKworCQkkIGNkIC9zeXMvZmlybXdhcmUvYWNwaS9pbnRlcnJ1cHRzCisJCSQgZ3JlcCAuICoKKwkJZXJyb3I6CSAgICAgMAorCQlmZl9nYmxfbG9jazoJICAgMCAgIGVuYWJsZQorCQlmZl9wbXRpbWVyOgkgIDAgIGludmFsaWQKKwkJZmZfcHdyX2J0bjoJICAwICAgZW5hYmxlCisJCWZmX3J0X2NsazoJIDIgIGRpc2FibGUKKwkJZmZfc2xwX2J0bjoJICAwICBpbnZhbGlkCisJCWdwZTAwOgkgICAgIDAJaW52YWxpZAorCQlncGUwMToJICAgICAwCSBlbmFibGUKKwkJZ3BlMDI6CSAgIDEwOAkgZW5hYmxlCisJCWdwZTAzOgkgICAgIDAJaW52YWxpZAorCQlncGUwNDoJICAgICAwCWludmFsaWQKKwkJZ3BlMDU6CSAgICAgMAlpbnZhbGlkCisJCWdwZTA2OgkgICAgIDAJIGVuYWJsZQorCQlncGUwNzoJICAgICAwCSBlbmFibGUKKwkJZ3BlMDg6CSAgICAgMAlpbnZhbGlkCisJCWdwZTA5OgkgICAgIDAJaW52YWxpZAorCQlncGUwQToJICAgICAwCWludmFsaWQKKwkJZ3BlMEI6CSAgICAgMAlpbnZhbGlkCisJCWdwZTBDOgkgICAgIDAJaW52YWxpZAorCQlncGUwRDoJICAgICAwCWludmFsaWQKKwkJZ3BlMEU6CSAgICAgMAlpbnZhbGlkCisJCWdwZTBGOgkgICAgIDAJaW52YWxpZAorCQlncGUxMDoJICAgICAwCWludmFsaWQKKwkJZ3BlMTE6CSAgICAgMAlpbnZhbGlkCisJCWdwZTEyOgkgICAgIDAJaW52YWxpZAorCQlncGUxMzoJICAgICAwCWludmFsaWQKKwkJZ3BlMTQ6CSAgICAgMAlpbnZhbGlkCisJCWdwZTE1OgkgICAgIDAJaW52YWxpZAorCQlncGUxNjoJICAgICAwCWludmFsaWQKKwkJZ3BlMTc6CSAgMTA4NAkgZW5hYmxlCisJCWdwZTE4OgkgICAgIDAJIGVuYWJsZQorCQlncGUxOToJICAgICAwCWludmFsaWQKKwkJZ3BlMUE6CSAgICAgMAlpbnZhbGlkCisJCWdwZTFCOgkgICAgIDAJaW52YWxpZAorCQlncGUxQzoJICAgICAwCWludmFsaWQKKwkJZ3BlMUQ6CSAgICAgMAlpbnZhbGlkCisJCWdwZTFFOgkgICAgIDAJaW52YWxpZAorCQlncGUxRjoJICAgICAwCWludmFsaWQKKwkJZ3BlX2FsbDogICAgMTE5MgorCQlzY2k6CTExOTQKKwkJc2NpX25vdDogICAgIDAJCisKKwkJc2NpIC0gVGhlIG51bWJlciBvZiB0aW1lcyB0aGUgQUNQSSBTQ0kKKwkJaGFzIGJlZW4gY2FsbGVkIGFuZCBjbGFpbWVkIGFuIGludGVycnVwdC4KKworCQlzY2lfbm90IC0gVGhlIG51bWJlciBvZiB0aW1lcyB0aGUgQUNQSSBTQ0kKKwkJaGFzIGJlZW4gY2FsbGVkIGFuZCBOT1QgY2xhaW1lZCBhbiBpbnRlcnJ1cHQuCisKKwkJZ3BlX2FsbCAtIGNvdW50IG9mIFNDSSBjYXVzZWQgYnkgR1BFcy4KKworCQlncGVYWCAtIGNvdW50IGZvciBpbmRpdmlkdWFsIEdQRSBzb3VyY2UKKworCQlmZl9nYmxfbG9jayAtIEdsb2JhbCBMb2NrCisKKwkJZmZfcG10aW1lciAtIFBNIFRpbWVyCisKKwkJZmZfcHdyX2J0biAtIFBvd2VyIEJ1dHRvbgorCisJCWZmX3J0X2NsayAtIFJlYWwgVGltZSBDbG9jaworCisJCWZmX3NscF9idG4gLSBTbGVlcCBCdXR0b24KKworCQllcnJvciAtIGFuIGludGVycnVwdCB0aGF0IGNhbid0IGJlIGFjY291bnRlZCBmb3IgYWJvdmUuCisKKwkJaW52YWxpZDogaXQncyBlaXRoZXIgYSBHUEUgb3IgYSBGaXhlZCBFdmVudCB0aGF0CisJCQlkb2Vzbid0IGhhdmUgYW4gZXZlbnQgaGFuZGxlci4KKworCQlkaXNhYmxlOiB0aGUgR1BFL0ZpeGVkIEV2ZW50IGlzIHZhbGlkIGJ1dCBkaXNhYmxlZC4KKworCQllbmFibGU6IHRoZSBHUEUvRml4ZWQgRXZlbnQgaXMgdmFsaWQgYW5kIGVuYWJsZWQuCisKKwkJUm9vdCBoYXMgcGVybWlzc2lvbiB0byBjbGVhciBhbnkgb2YgdGhlc2UgY291bnRlcnMuICBFZy4KKwkJIyBlY2hvIDAgPiBncGUxMQorCisJCUFsbCBjb3VudGVycyBjYW4gYmUgY2xlYXJlZCBieSBjbGVhcmluZyB0aGUgdG90YWwgInNjaSI6CisJCSMgZWNobyAwID4gc2NpCisKKwkJTm9uZSBvZiB0aGVzZSBjb3VudGVycyBoYXMgYW4gZWZmZWN0IG9uIHRoZSBmdW5jdGlvbgorCQlvZiB0aGUgc3lzdGVtLCB0aGV5IGFyZSBzaW1wbHkgc3RhdGlzdGljcy4KKworCQlCZXNpZGVzIHRoaXMsIHVzZXIgY2FuIGFsc28gd3JpdGUgc3BlY2lmaWMgc3RyaW5ncyB0byB0aGVzZSBmaWxlcworCQl0byBlbmFibGUvZGlzYWJsZS9jbGVhciBBQ1BJIGludGVycnVwdHMgaW4gdXNlciBzcGFjZSwgd2hpY2ggY2FuIGJlCisJCXVzZWQgdG8gZGVidWcgc29tZSBBQ1BJIGludGVycnVwdCBzdG9ybSBpc3N1ZXMuCisKKwkJTm90ZSB0aGF0IG9ubHkgd3JpdHRpbmcgdG8gVkFMSUQgR1BFL0ZpeGVkIEV2ZW50IGlzIGFsbG93ZWQsCisJCWkuZS4gdXNlciBjYW4gb25seSBjaGFuZ2UgdGhlIHN0YXR1cyBvZiBydW50aW1lIEdQRSBhbmQKKwkJRml4ZWQgRXZlbnQgd2l0aCBldmVudCBoYW5kbGVyIGluc3RhbGxlZC4KKworCQlMZXQncyB0YWtlIHBvd2VyIGJ1dHRvbiBmaXhlZCBldmVudCBmb3IgZXhhbXBsZSwgcGxlYXNlIGtpbGwgYWNwaWQKKwkJYW5kIG90aGVyIHVzZXIgc3BhY2UgYXBwbGljYXRpb25zIHNvIHRoYXQgdGhlIG1hY2hpbmUgd29uJ3Qgc2h1dGRvd24KKwkJd2hlbiBwcmVzc2luZyB0aGUgcG93ZXIgYnV0dG9uLgorCQkjIGNhdCBmZl9wd3JfYnRuCisJCTAJZW5hYmxlZAorCQkjIHByZXNzIHRoZSBwb3dlciBidXR0b24gZm9yIDMgdGltZXM7CisJCSMgY2F0IGZmX3B3cl9idG4KKwkJMwllbmFibGVkCisJCSMgZWNobyBkaXNhYmxlID4gZmZfcHdyX2J0bgorCQkjIGNhdCBmZl9wd3JfYnRuCisJCTMJZGlzYWJsZWQKKwkJIyBwcmVzcyB0aGUgcG93ZXIgYnV0dG9uIGZvciAzIHRpbWVzOworCQkjIGNhdCBmZl9wd3JfYnRuCisJCTMJZGlzYWJsZWQKKwkJIyBlY2hvIGVuYWJsZSA+IGZmX3B3cl9idG4KKwkJIyBjYXQgZmZfcHdyX2J0bgorCQk0CWVuYWJsZWQKKwkJLyoKKwkJICogdGhpcyBpcyBiZWNhdXNlIHRoZSBzdGF0dXMgYml0IGlzIHNldCBldmVuIGlmIHRoZSBlbmFibGUgYml0IGlzIGNsZWFyZWQsCisJCSAqIGFuZCBpdCB0cmlnZ2VycyBhbiBBQ1BJIGZpeGVkIGV2ZW50IHdoZW4gdGhlIGVuYWJsZSBiaXQgaXMgc2V0IGFnYWluCisJCSAqLworCQkjIHByZXNzIHRoZSBwb3dlciBidXR0b24gZm9yIDMgdGltZXM7CisJCSMgY2F0IGZmX3B3cl9idG4KKwkJNwllbmFibGVkCisJCSMgZWNobyBkaXNhYmxlID4gZmZfcHdyX2J0bgorCQkjIHByZXNzIHRoZSBwb3dlciBidXR0b24gZm9yIDMgdGltZXM7CisJCSMgZWNobyBjbGVhciA+IGZmX3B3cl9idG4JLyogY2xlYXIgdGhlIHN0YXR1cyBiaXQgKi8KKwkJIyBlY2hvIGRpc2FibGUgPiBmZl9wd3JfYnRuCisJCSMgY2F0IGZmX3B3cl9idG4KKwkJNwllbmFibGVkCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZmlybXdhcmUtZG1pLWVudHJpZXMgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWZpcm13YXJlLWRtaS1lbnRyaWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxMGFkNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWZpcm13YXJlLWRtaS1lbnRyaWVzCkBAIC0wLDAgKzEsMTEwIEBACitXaGF0OgkJL3N5cy9maXJtd2FyZS9kbWkvZW50cmllcy8KK0RhdGU6CQlGZWJydWFyeSAyMDExCitDb250YWN0OglNaWtlIFdheWNoaXNvbiA8bWlrZXdAZ29vZ2xlLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlNYW55IG1hY2hpbmVzJyBmaXJtd2FyZSAoeDg2IGFuZCBpYTY0KSBleHBvcnQgRE1JIC8KKwkJU01CSU9TIHRhYmxlcyB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gIEdldHRpbmcgYXQgdGhpcworCQlpbmZvcm1hdGlvbiBpcyBvZnRlbiB2YWx1YWJsZSB0byB1c2VybGFuZCwgZXNwZWNpYWxseSBpbgorCQljYXNlcyB3aGVyZSB0aGVyZSBhcmUgT0VNIGV4dGVuc2lvbnMgdXNlZC4KKworCQlUaGUga2VybmVsIGl0c2VsZiBkb2VzIG5vdCByZWx5IG9uIHRoZSBtYWpvcml0eSBvZiB0aGUKKwkJaW5mb3JtYXRpb24gaW4gdGhlc2UgdGFibGVzIGJlaW5nIGNvcnJlY3QuICBJdCBlcXVhbGx5CisJCWNhbm5vdCBlbnN1cmUgdGhhdCB0aGUgZGF0YSBhcyBleHBvcnRlZCB0byB1c2VybGFuZCBpcworCQl3aXRob3V0IGVycm9yIGVpdGhlci4KKworCQlETUkgaXMgc3RydWN0dXJlZCBhcyBhIGxhcmdlIHRhYmxlIG9mIGVudHJpZXMsIHdoZXJlCisJCWVhY2ggZW50cnkgaGFzIGEgY29tbW9uIGhlYWRlciBpbmRpY2F0aW5nIHRoZSB0eXBlIGFuZAorCQlsZW5ndGggb2YgdGhlIGVudHJ5LCBhcyB3ZWxsIGFzIGEgZmlybXdhcmUtcHJvdmlkZWQKKwkJJ2hhbmRsZScgdGhhdCBpcyBzdXBwb3NlZCB0byBiZSB1bmlxdWUgYW1vbmdzdCBhbGwKKwkJZW50cmllcy4KKworCQlTb21lIGVudHJpZXMgYXJlIHJlcXVpcmVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLCBidXQgbWFueQorCQlvdGhlcnMgYXJlIG9wdGlvbmFsLiAgSW4gZ2VuZXJhbCB0aG91Z2gsIHVzZXJzIHNob3VsZAorCQluZXZlciBleHBlY3QgdG8gZmluZCBhIHNwZWNpZmljIGVudHJ5IHR5cGUgb24gdGhlaXIKKwkJc3lzdGVtIHVubGVzcyB0aGV5IGtub3cgZm9yIGNlcnRhaW4gd2hhdCB0aGVpciBmaXJtd2FyZQorCQlpcyBkb2luZy4gIE1hY2hpbmUgdG8gbWFjaGluZSBleHBlcmllbmNlcyB3aWxsIHZhcnkuCisKKwkJTXVsdGlwbGUgZW50cmllcyBvZiB0aGUgc2FtZSB0eXBlIGFyZSBhbGxvd2VkLiAgSW4gb3JkZXIKKwkJdG8gaGFuZGxlIHRoZXNlIGR1cGxpY2F0ZSBlbnRyeSB0eXBlcywgZWFjaCBlbnRyeSBpcworCQlhc3NpZ25lZCBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbSBhbiAnaW5zdGFuY2UnLCB3aGljaCBpcworCQlkZXJpdmVkIGZyb20gYW4gZW50cnkgdHlwZSdzIG9yZGluYWwgcG9zaXRpb24uICBUaGF0IGlzCisJCXRvIHNheSwgaWYgdGhlcmUgYXJlICdOJyBtdWx0aXBsZSBlbnRyaWVzIHdpdGggdGhlIHNhbWUgdHlwZQorCQknVCcgaW4gdGhlIERNSSB0YWJsZXMgKGFkamFjZW50IG9yIHNwcmVhZCBhcGFydCwgaXQKKwkJZG9lc24ndCBtYXR0ZXIpLCB0aGV5IHdpbGwgYmUgcmVwcmVzZW50ZWQgaW4gc3lzZnMgYXMKKwkJZW50cmllcyAiVC0wIiB0aHJvdWdoICJULShOLTEpIjoKKworCQlFeGFtcGxlIGVudHJ5IGRpcmVjdG9yaWVzOgorCisJCQkvc3lzL2Zpcm13YXJlL2RtaS9lbnRyaWVzLzE3LTAKKwkJCS9zeXMvZmlybXdhcmUvZG1pL2VudHJpZXMvMTctMQorCQkJL3N5cy9maXJtd2FyZS9kbWkvZW50cmllcy8xNy0yCisJCQkvc3lzL2Zpcm13YXJlL2RtaS9lbnRyaWVzLzE3LTMKKwkJCS4uLgorCisJCUluc3RhbmNlIG51bWJlcnMgYXJlIHVzZWQgaW4gbGlldSBvZiB0aGUgZmlybXdhcmUKKwkJYXNzaWduZWQgZW50cnkgaGFuZGxlcyBhcyB0aGUga2VybmVsIGl0c2VsZiBtYWtlcyBubworCQlndWFyYW50ZWVzIHRoYXQgaGFuZGxlcyBhcyBleHBvcnRlZCBhcmUgdW5pcXVlLCBhbmQKKwkJdGhlcmUgYXJlIGxpa2VseSBmaXJtd2FyZSBpbWFnZXMgdGhhdCBnZXQgdGhpcyB3cm9uZyBpbgorCQl0aGUgd2lsZC4KKworCQlFYWNoIERNSSBlbnRyeSBpbiBzeXNmcyBoYXMgdGhlIGNvbW1vbiBoZWFkZXIgdmFsdWVzCisJCWV4cG9ydGVkIGFzIGF0dHJpYnV0ZXM6CisKKwkJaGFuZGxlCTogVGhlIDE2Yml0ICdoYW5kbGUnIHRoYXQgaXMgYXNzaWduZWQgdG8gdGhpcworCQkJICBlbnRyeSBieSB0aGUgZmlybXdhcmUuICBUaGlzIGhhbmRsZSBtYXkgYmUKKwkJCSAgcmVmZXJyZWQgdG8gYnkgb3RoZXIgZW50cmllcy4KKwkJbGVuZ3RoCTogVGhlIGxlbmd0aCBvZiB0aGUgZW50cnksIGFzIHByZXNlbnRlZCBpbiB0aGUKKwkJCSAgZW50cnkgaXRzZWxmLiAgTm90ZSB0aGF0IHRoaXMgaXMgX25vdCB0aGUKKwkJCSAgdG90YWwgY291bnQgb2YgYnl0ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZQorCQkJICBlbnRyeV8uICBUaGlzIHZhbHVlIHJlcHJlc2VudHMgdGhlIGxlbmd0aCBvZgorCQkJICB0aGUgImZvcm1hdHRlZCIgcG9ydGlvbiBvZiB0aGUgZW50cnkuICBUaGlzCisJCQkgICJmb3JtYXR0ZWQiIHJlZ2lvbiBpcyBzb21ldGltZXMgZm9sbG93ZWQgYnkKKwkJCSAgdGhlICJ1bmZvcm1hdHRlZCIgcmVnaW9uIGNvbXBvc2VkIG9mIG51bAorCQkJICB0ZXJtaW5hdGVkIHN0cmluZ3MsIHdpdGggdGVybWluYXRpb24gc2lnbmFsbGVkCisJCQkgIGJ5IGEgdHdvIG51bCBjaGFyYWN0ZXJzIGluIHNlcmllcy4KKwkJcmF3CTogVGhlIHJhdyBieXRlcyBvZiB0aGUgZW50cnkuIFRoaXMgaW5jbHVkZXMgdGhlCisJCQkgICJmb3JtYXR0ZWQiIHBvcnRpb24gb2YgdGhlIGVudHJ5LCB0aGUKKwkJCSAgInVuZm9ybWF0dGVkIiBzdHJpbmdzIHBvcnRpb24gb2YgdGhlIGVudHJ5LAorCQkJICBhbmQgdGhlIHR3byB0ZXJtaW5hdGluZyBudWwgY2hhcmFjdGVycy4KKwkJdHlwZQk6IFRoZSB0eXBlIG9mIHRoZSBlbnRyeS4gIFRoaXMgdmFsdWUgaXMgdGhlIHNhbWUKKwkJCSAgYXMgZm91bmQgaW4gdGhlIGRpcmVjdG9yeSBuYW1lLiAgSXQgaW5kaWNhdGVzCisJCQkgIGhvdyB0aGUgcmVzdCBvZiB0aGUgZW50cnkgc2hvdWxkIGJlIGludGVycHJldGVkLgorCQlpbnN0YW5jZTogVGhlIGluc3RhbmNlIG9yZGluYWwgb2YgdGhlIGVudHJ5IGZvciB0aGUKKwkJCSAgZ2l2ZW4gdHlwZS4gIFRoaXMgdmFsdWUgaXMgdGhlIHNhbWUgYXMgZm91bmQKKwkJCSAgaW4gdGhlIHBhcmVudCBkaXJlY3RvcnkgbmFtZS4KKwkJcG9zaXRpb246IFRoZSBvcmRpbmFsIHBvc2l0aW9uICh6ZXJvLWJhc2VkKSBvZiB0aGUgZW50cnkKKwkJCSAgd2l0aGluIHRoZSBlbnRpcmV0eSBvZiB0aGUgRE1JIGVudHJ5IHRhYmxlLgorCisJCT09PSBFbnRyeSBTcGVjaWFsaXphdGlvbiA9PT0KKworCQlTb21lIGVudHJ5IHR5cGVzIG1heSBoYXZlIG90aGVyIGluZm9ybWF0aW9uIGF2YWlsYWJsZSBpbgorCQlzeXNmcy4gIE5vdCBhbGwgdHlwZXMgYXJlIHNwZWNpYWxpemVkLgorCisJCS0tLSBUeXBlIDE1IC0gU3lzdGVtIEV2ZW50IExvZyAtLS0KKworCQlUaGlzIGVudHJ5IGFsbG93cyB0aGUgZmlybXdhcmUgdG8gZXhwb3J0IGEgbG9nIG9mCisJCWV2ZW50cyB0aGUgc3lzdGVtIGhhcyB0YWtlbi4gIFRoaXMgaW5mb3JtYXRpb24gaXMKKwkJdHlwaWNhbGx5IGJhY2tlZCBieSBudnJhbSwgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbgorCQlkZXRhaWxzIGFyZSBhYnN0cmFjdGVkIGJ5IHRoaXMgdGFibGUuICBUaGlzIGVudHJ5J3MgZGF0YQorCQlpcyBleHBvcnRlZCBpbiB0aGUgZGlyZWN0b3J5OgorCisJCS9zeXMvZmlybXdhcmUvZG1pL2VudHJpZXMvMTUtMC9zeXN0ZW1fZXZlbnRfbG9nCisKKwkJYW5kIGhhcyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgKGRvY3VtZW50ZWQgaW4gdGhlCisJCVNNQklPUyAvIERNSSBzcGVjaWZpY2F0aW9uIHVuZGVyICJTeXN0ZW0gRXZlbnQgTG9nIChUeXBlIDE1KSI6CisKKwkJYXJlYV9sZW5ndGgKKwkJaGVhZGVyX3N0YXJ0X29mZnNldAorCQlkYXRhX3N0YXJ0X29mZnNldAorCQlhY2Nlc3NfbWV0aG9kCisJCXN0YXR1cworCQljaGFuZ2VfdG9rZW4KKwkJYWNjZXNzX21ldGhvZF9hZGRyZXNzCisJCWhlYWRlcl9mb3JtYXQKKwkJcGVyX2xvZ190eXBlX2Rlc2NyaXB0b3JfbGVuZ3RoCisJCXR5cGVfZGVzY3JpcHRvcnNfc3VwcG9ydGVkX2NvdW50CisKKwkJQXMgd2VsbCwgdGhlIGtlcm5lbCBleHBvcnRzIHRoZSBiaW5hcnkgYXR0cmlidXRlOgorCisJCXJhd19ldmVudF9sb2cJOiBUaGUgcmF3IGJpbmFyeSBiaXRzIG9mIHRoZSBldmVudCBsb2cKKwkJCQkgIGFzIGRlc2NyaWJlZCBieSB0aGUgRE1JIGVudHJ5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1maXJtd2FyZS1kbWktdGFibGVzIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1maXJtd2FyZS1kbWktdGFibGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmM2NhYzgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWZpcm13YXJlLWRtaS10YWJsZXMKQEAgLTAsMCArMSwyMiBAQAorV2hhdDoJCS9zeXMvZmlybXdhcmUvZG1pL3RhYmxlcy8KK0RhdGU6CQlBcHJpbCAyMDE1CitDb250YWN0OglJdmFuIEtob3JvbnpodWsgPGl2YW4ua2hvcm9uemh1a0BnbG9iYWxsb2dpYy5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIGZpcm13YXJlIHByb3ZpZGVzIERNSSBzdHJ1Y3R1cmVzIGFzIGEgcGFja2VkIGxpc3Qgb2YKKwkJZGF0YSByZWZlcmVuY2VkIGJ5IGEgU01CSU9TIHRhYmxlIGVudHJ5IHBvaW50LiBUaGUgU01CSU9TCisJCWVudHJ5IHBvaW50IGNvbnRhaW5zIGdlbmVyYWwgaW5mb3JtYXRpb24sIGxpa2UgU01CSU9TCisJCXZlcnNpb24sIERNSSB0YWJsZSBzaXplLCBldGMuIFRoZSBzdHJ1Y3R1cmUsIGNvbnRlbnQgYW5kCisJCXNpemUgb2YgU01CSU9TIGVudHJ5IHBvaW50IGlzIGRlcGVuZGVudCBvbiBTTUJJT1MgdmVyc2lvbi4KKwkJVGhlIGZvcm1hdCBvZiBTTUJJT1MgZW50cnkgcG9pbnQgYW5kIERNSSBzdHJ1Y3R1cmVzCisJCWNhbiBiZSByZWFkIGluIFNNQklPUyBzcGVjaWZpY2F0aW9uLgorCisJCVRoZSBkbWkvdGFibGVzIHByb3ZpZGVzIHJhdyBTTUJJT1MgZW50cnkgcG9pbnQgYW5kIERNSSB0YWJsZXMKKwkJdGhyb3VnaCBzeXNmcyBhcyBhbiBhbHRlcm5hdGl2ZSB0byB1dGlsaXRpZXMgcmVhZGluZyB0aGVtCisJCWZyb20gL2Rldi9tZW0uIFRoZSByYXcgU01CSU9TIGVudHJ5IHBvaW50IGFuZCBETUkgdGFibGUgYXJlCisJCXByZXNlbnRlZCBhcyBiaW5hcnkgYXR0cmlidXRlcyBhbmQgYXJlIGFjY2Vzc2libGUgdmlhOgorCisJCS9zeXMvZmlybXdhcmUvZG1pL3RhYmxlcy9zbWJpb3NfZW50cnlfcG9pbnQKKwkJL3N5cy9maXJtd2FyZS9kbWkvdGFibGVzL0RNSQorCisJCVRoZSBjb21wbGV0ZSBETUkgaW5mb3JtYXRpb24gY2FuIGJlIG9idGFpbmVkIHVzaW5nIHRoZXNlIHR3bworCQl0YWJsZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWZpcm13YXJlLWVmaSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZmlybXdhcmUtZWZpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3OTRlYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWZpcm13YXJlLWVmaQpAQCAtMCwwICsxLDMwIEBACitXaGF0OgkJL3N5cy9maXJtd2FyZS9lZmkvZndfdmVuZG9yCitEYXRlOgkJRGVjZW1iZXIgMjAxMworQ29udGFjdDoJRGF2ZSBZb3VuZyA8ZHlvdW5nQHJlZGhhdC5jb20+CitEZXNjcmlwdGlvbjoJSXQgc2hvd3MgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgZmlybXdhcmUgdmVuZG9yIGZpZWxkIGluIHRoZQorCQlFRkkgc3lzdGVtIHRhYmxlLgorVXNlcnM6CQlLZXhlYworCitXaGF0OgkJL3N5cy9maXJtd2FyZS9lZmkvcnVudGltZQorRGF0ZToJCURlY2VtYmVyIDIwMTMKK0NvbnRhY3Q6CURhdmUgWW91bmcgPGR5b3VuZ0ByZWRoYXQuY29tPgorRGVzY3JpcHRpb246CUl0IHNob3dzIHRoZSBwaHlzaWNhbCBhZGRyZXNzIG9mIHJ1bnRpbWUgc2VydmljZSB0YWJsZSBlbnRyeSBpbgorCQl0aGUgRUZJIHN5c3RlbSB0YWJsZS4KK1VzZXJzOgkJS2V4ZWMKKworV2hhdDoJCS9zeXMvZmlybXdhcmUvZWZpL2NvbmZpZ190YWJsZQorRGF0ZToJCURlY2VtYmVyIDIwMTMKK0NvbnRhY3Q6CURhdmUgWW91bmcgPGR5b3VuZ0ByZWRoYXQuY29tPgorRGVzY3JpcHRpb246CUl0IHNob3dzIHRoZSBwaHlzaWNhbCBhZGRyZXNzIG9mIGNvbmZpZyB0YWJsZSBlbnRyeSBpbiB0aGUgRUZJCisJCXN5c3RlbSB0YWJsZS4KK1VzZXJzOgkJS2V4ZWMKKworV2hhdDoJCS9zeXMvZmlybXdhcmUvZWZpL3N5c3RhYgorRGF0ZToJCUFwcmlsIDIwMDUKK0NvbnRhY3Q6CWxpbnV4LWVmaUB2Z2VyLmtlcm5lbC5vcmcKK0Rlc2NyaXB0aW9uOglEaXNwbGF5cyB0aGUgcGh5c2ljYWwgYWRkcmVzc2VzIG9mIGFsbCBFRkkgQ29uZmlndXJhdGlvbgorCQlUYWJsZXMgZm91bmQgdmlhIHRoZSBFRkkgU3lzdGVtIFRhYmxlLiBUaGUgb3JkZXIgaW4KKwkJd2hpY2ggdGhlIHRhYmxlcyBhcmUgcHJpbnRlZCBmb3JtcyBhbiBBQkkgYW5kIG5ld2VyCisJCXZlcnNpb25zIGFyZSBhbHdheXMgcHJpbnRlZCBmaXJzdCwgaS5lLiBBQ1BJMjAgY29tZXMKKwkJYmVmb3JlIEFDUEkuCitVc2VyczoJCWRtaWRlY29kZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1maXJtd2FyZS1lZmktZXNydCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZmlybXdhcmUtZWZpLWVzcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU0MzFkMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZmlybXdhcmUtZWZpLWVzcnQKQEAgLTAsMCArMSw4MSBAQAorV2hhdDoJCS9zeXMvZmlybXdhcmUvZWZpL2VzcnQvCitEYXRlOgkJRmVicnVhcnkgMjAxNQorQ29udGFjdDoJUGV0ZXIgSm9uZXMgPHBqb25lc0ByZWRoYXQuY29tPgorRGVzY3JpcHRpb246CVByb3ZpZGVzIHVzZXJsYW5kIGFjY2VzcyB0byByZWFkIHRoZSBFRkkgU3lzdGVtIFJlc291cmNlIFRhYmxlCisJCShFU1JUKSwgYSBjYXRhbG9nIG9mIGZpcm13YXJlIGZvciB3aGljaCBjYW4gYmUgdXBkYXRlZCB3aXRoCisJCXRoZSBVRUZJIFVwZGF0ZUNhcHN1bGUgbWVjaGFuaXNtIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDcuNSBvZgorCQl0aGUgVUVGSSBTdGFuZGFyZC4KK1VzZXJzOgkJZnd1cGRhdGUgLSBodHRwczovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvZnd1cGRhdGUKKworV2hhdDoJCS9zeXMvZmlybXdhcmUvZWZpL2VzcnQvZndfcmVzb3VyY2VfY291bnQKK0RhdGU6CQlGZWJydWFyeSAyMDE1CitDb250YWN0OglQZXRlciBKb25lcyA8cGpvbmVzQHJlZGhhdC5jb20+CitEZXNjcmlwdGlvbjoJVGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBFU1JUCisKK1doYXQ6CQkvc3lzL2Zpcm13YXJlL2VmaS9lc3J0L2Z3X3Jlc291cmNlX2NvdW50X21heAorRGF0ZToJCUZlYnJ1YXJ5IDIwMTUKK0NvbnRhY3Q6CVBldGVyIEpvbmVzIDxwam9uZXNAcmVkaGF0LmNvbT4KK0Rlc2NyaXB0aW9uOglUaGUgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyB0aGF0IC9jb3VsZC8gYmUgcmVnaXN0ZXJlZAorCQlpbiB0aGUgYWxsb2NhdGlvbiB0aGUgdGFibGUgaXMgY3VycmVudGx5IGluLiAgVGhpcyBpcworCQlyZWFsbHkgb25seSB1c2VmdWwgdG8gdGhlIHN5c3RlbSBmaXJtd2FyZSBpdHNlbGYuCisKK1doYXQ6CQkvc3lzL2Zpcm13YXJlL2VmaS9lc3J0L2Z3X3Jlc291cmNlX3ZlcnNpb24KK0RhdGU6CQlGZWJydWFyeSAyMDE1CitDb250YWN0OglQZXRlciBKb25lcyA8cGpvbmVzQHJlZGhhdC5jb20+CitEZXNjcmlwdGlvbjoJVGhlIHZlcnNpb24gb2YgdGhlIEVTUlQgc3RydWN0dXJlIHByb3ZpZGVkIGJ5IHRoZSBmaXJtd2FyZS4KKworV2hhdDoJCS9zeXMvZmlybXdhcmUvZWZpL2VzcnQvZW50cmllcy9lbnRyeSROLworRGF0ZToJCUZlYnJ1YXJ5IDIwMTUKK0NvbnRhY3Q6CVBldGVyIEpvbmVzIDxwam9uZXNAcmVkaGF0LmNvbT4KK0Rlc2NyaXB0aW9uOglFYWNoIEVTUlQgZW50cnkgaXMgaWRlbnRpZmllZCBieSBhIEdVSUQsIGFuZCBlYWNoIGdldHMgYQorCQlzdWJkaXJlY3RvcnkgdW5kZXIgZW50cmllcy8gLgorCQlleGFtcGxlOiAvc3lzL2Zpcm13YXJlL2VmaS9lc3J0L2VudHJpZXMvZW50cnkwLworCitXaGF0OgkJL3N5cy9maXJtd2FyZS9lZmkvZXNydC9lbnRyaWVzL2VudHJ5JE4vZndfdHlwZQorRGF0ZToJCUZlYnJ1YXJ5IDIwMTUKK0NvbnRhY3Q6CVBldGVyIEpvbmVzIDxwam9uZXNAcmVkaGF0LmNvbT4KK0Rlc2NyaXB0aW9uOglXaGF0IGtpbmQgb2YgZmlybXdhcmUgZW50cnkgdGhpcyBpczoKKwkJMCAtIFVua25vd24KKwkJMSAtIFN5c3RlbSBGaXJtd2FyZQorCQkyIC0gRGV2aWNlIEZpcm13YXJlCisJCTMgLSBVRUZJIERyaXZlcgorCitXaGF0OgkJL3N5cy9maXJtd2FyZS9lZmkvZXNydC9lbnRyaWVzL2VudHJ5JE4vZndfY2xhc3MKK0RhdGU6CQlGZWJydWFyeSAyMDE1CitDb250YWN0OglQZXRlciBKb25lcyA8cGpvbmVzQHJlZGhhdC5jb20+CitEZXNjcmlwdGlvbjoJVGhpcyBpcyB0aGUgZW50cnkncyBndWlkLCBhbmQgd2lsbCBtYXRjaCB0aGUgZGlyZWN0b3J5IG5hbWUuCisKK1doYXQ6CQkvc3lzL2Zpcm13YXJlL2VmaS9lc3J0L2VudHJpZXMvZW50cnkkTi9md192ZXJzaW9uCitEYXRlOgkJRmVicnVhcnkgMjAxNQorQ29udGFjdDoJUGV0ZXIgSm9uZXMgPHBqb25lc0ByZWRoYXQuY29tPgorRGVzY3JpcHRpb246CVRoZSB2ZXJzaW9uIG9mIHRoZSBmaXJtd2FyZSBjdXJyZW50bHkgaW5zdGFsbGVkLiAgVGhpcyBpcyBhCisJCTMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLgorCitXaGF0OgkJL3N5cy9maXJtd2FyZS9lZmkvZXNydC9lbnRyaWVzL2VudHJ5JE4vbG93ZXN0X3N1cHBvcnRlZF9md192ZXJzaW9uCitEYXRlOgkJRmVicnVhcnkgMjAxNQorQ29udGFjdDoJUGV0ZXIgSm9uZXMgPHBqb25lc0ByZWRoYXQuY29tPgorRGVzY3JpcHRpb246CVRoZSBsb3dlc3QgdmVyc2lvbiBvZiB0aGUgZmlybXdhcmUgdGhhdCBjYW4gYmUgaW5zdGFsbGVkLgorCitXaGF0OgkJL3N5cy9maXJtd2FyZS9lZmkvZXNydC9lbnRyaWVzL2VudHJ5JE4vY2Fwc3VsZV9mbGFncworRGF0ZToJCUZlYnJ1YXJ5IDIwMTUKK0NvbnRhY3Q6CVBldGVyIEpvbmVzIDxwam9uZXNAcmVkaGF0LmNvbT4KK0Rlc2NyaXB0aW9uOglGbGFncyB0aGF0IG11c3QgYmUgcGFzc2VkIHRvIFVwZGF0ZUNhcHN1bGUoKQorCitXaGF0OgkJL3N5cy9maXJtd2FyZS9lZmkvZXNydC9lbnRyaWVzL2VudHJ5JE4vbGFzdF9hdHRlbXB0X3ZlcnNpb24KK0RhdGU6CQlGZWJydWFyeSAyMDE1CitDb250YWN0OglQZXRlciBKb25lcyA8cGpvbmVzQHJlZGhhdC5jb20+CitEZXNjcmlwdGlvbjoJVGhlIGxhc3QgZmlybXdhcmUgdmVyc2lvbiBmb3Igd2hpY2ggYW4gdXBkYXRlIHdhcyBhdHRlbXB0ZWQuCisKK1doYXQ6CQkvc3lzL2Zpcm13YXJlL2VmaS9lc3J0L2VudHJpZXMvZW50cnkkTi9sYXN0X2F0dGVtcHRfc3RhdHVzCitEYXRlOgkJRmVicnVhcnkgMjAxNQorQ29udGFjdDoJUGV0ZXIgSm9uZXMgPHBqb25lc0ByZWRoYXQuY29tPgorRGVzY3JpcHRpb246CVRoZSByZXN1bHQgb2YgdGhlIGxhc3QgZmlybXdhcmUgdXBkYXRlIGF0dGVtcHQgZm9yIHRoZQorCQlmaXJtd2FyZSByZXNvdXJjZSBlbnRyeS4KKwkJMCAtIFN1Y2Nlc3MKKwkJMSAtIEluc3VmZmljaWVudCByZXNvdXJjZXMKKwkJMiAtIEluY29ycmVjdCB2ZXJzaW9uCisJCTMgLSBJbnZhbGlkIGZvcm1hdAorCQk0IC0gQXV0aGVudGljYXRpb24gZXJyb3IKKwkJNSAtIEFDIHBvd2VyIGV2ZW50CisJCTYgLSBCYXR0ZXJ5IHBvd2VyIGV2ZW50CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZmlybXdhcmUtZWZpLXJ1bnRpbWUtbWFwIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1maXJtd2FyZS1lZmktcnVudGltZS1tYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYxYjliMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZmlybXdhcmUtZWZpLXJ1bnRpbWUtbWFwCkBAIC0wLDAgKzEsMzQgQEAKK1doYXQ6CQkvc3lzL2Zpcm13YXJlL2VmaS9ydW50aW1lLW1hcC8KK0RhdGU6CQlEZWNlbWJlciAyMDEzCitDb250YWN0OglEYXZlIFlvdW5nIDxkeW91bmdAcmVkaGF0LmNvbT4KK0Rlc2NyaXB0aW9uOglTd2l0Y2hpbmcgZWZpIHJ1bnRpbWUgc2VydmljZXMgdG8gdmlydHVhbCBtb2RlIHJlcXVpcmVzCisJCXRoYXQgYWxsIGVmaSBtZW1vcnkgcmFuZ2VzIHdoaWNoIGhhdmUgdGhlIHJ1bnRpbWUgYXR0cmlidXRlCisJCWJpdCBzZXQgdG8gYmUgbWFwcGVkIHRvIHZpcnR1YWwgYWRkcmVzc2VzLgorCisJCVRoZSBlZmkgcnVudGltZSBzZXJ2aWNlcyBjYW4gb25seSBiZSBzd2l0Y2hlZCB0byB2aXJ0dWFsCisJCW1vZGUgb25jZSB3aXRob3V0IHJlYm9vdGluZy4gVGhlIGtleGVjIGtlcm5lbCBtdXN0IG1haW50YWluCisJCXRoZSBzYW1lIHBoeXNpY2FsIHRvIHZpcnR1YWwgYWRkcmVzcyBtYXBwaW5ncyBhcyB0aGUgZmlyc3QKKwkJa2VybmVsLiBUaGUgbWFwcGluZ3MgYXJlIGV4cG9ydGVkIHRvIHN5c2ZzIHNvIHVzZXJzcGFjZSB0b29scworCQljYW4gcmVhc3NlbWJsZSB0aGVtIGFuZCBwYXNzIHRoZW0gaW50byB0aGUga2V4ZWMga2VybmVsLgorCisJCS9zeXMvZmlybXdhcmUvZWZpL3J1bnRpbWUtbWFwLyBpcyB0aGUgZGlyZWN0b3J5IHRoZSBrZXJuZWwKKwkJZXhwb3J0cyB0aGF0IGluZm9ybWF0aW9uIGluLgorCisJCXN1YmRpcmVjdG9yaWVzIGFyZSBuYW1lZCB3aXRoIHRoZSBudW1iZXIgb2YgdGhlIG1lbW9yeSByYW5nZToKKworCQkJL3N5cy9maXJtd2FyZS9lZmkvcnVudGltZS1tYXAvMAorCQkJL3N5cy9maXJtd2FyZS9lZmkvcnVudGltZS1tYXAvMQorCQkJL3N5cy9maXJtd2FyZS9lZmkvcnVudGltZS1tYXAvMgorCQkJL3N5cy9maXJtd2FyZS9lZmkvcnVudGltZS1tYXAvMworCQkJLi4uCisKKwkJRWFjaCBzdWJkaXJlY3RvcnkgY29udGFpbnMgZml2ZSBmaWxlczoKKworCQlhdHRyaWJ1dGUgOiBUaGUgYXR0cmlidXRlcyBvZiB0aGUgbWVtb3J5IHJhbmdlLgorCQludW1fcGFnZXMgOiBUaGUgc2l6ZSBvZiB0aGUgbWVtb3J5IHJhbmdlIGluIHBhZ2VzLgorCQlwaHlzX2FkZHIgOiBUaGUgcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgbWVtb3J5IHJhbmdlLgorCQl0eXBlICAgICAgOiBUaGUgdHlwZSBvZiB0aGUgbWVtb3J5IHJhbmdlLgorCQl2aXJ0X2FkZHIgOiBUaGUgdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBtZW1vcnkgcmFuZ2UuCisKKwkJQWJvdmUgdmFsdWVzIGFyZSBhbGwgaGV4YWRlY2ltYWwgbnVtYmVycyB3aXRoIHRoZSAnMHgnIHByZWZpeC4KK1VzZXJzOgkJS2V4ZWMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZmlybXdhcmUtZ3NtaSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZmlybXdhcmUtZ3NtaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmFhMGFhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1maXJtd2FyZS1nc21pCkBAIC0wLDAgKzEsNTggQEAKK1doYXQ6CQkvc3lzL2Zpcm13YXJlL2dzbWkKK0RhdGU6CQlNYXJjaCAyMDExCitDb250YWN0OglNaWtlIFdheWNoaXNvbiA8bWlrZXdAZ29vZ2xlLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlTb21lIHNlcnZlcnMgdXNlZCBpbnRlcm5hbGx5IGF0IEdvb2dsZSBoYXZlIGZpcm13YXJlCisJCXRoYXQgcHJvdmlkZXMgY2FsbGJhY2sgZnVuY3Rpb25hbGl0eSB2aWEgZXhwbGljaXQgU01JCisJCXRyaWdnZXJzLiAgU29tZSBvZiB0aGUgY2FsbGJhY2tzIGFyZSBzaW1pbGFyIHRvIHRob3NlCisJCXByb3ZpZGVkIGJ5IHRoZSBFRkkgcnVudGltZSBzZXJ2aWNlcyBwYWdlLCBidXQgZHVlIHRvCisJCWhpc3RvcmljYWwgcmVhc29ucyB0aGlzIGRpZmZlcmVudCBlbnRyeS1wb2ludCBoYXMgYmVlbgorCQl1c2VkLgorCisJCVRoZSBnc21pIGRyaXZlciBpbXBsZW1lbnRzIHRoZSBrZXJuZWwncyBhYnN0cmFjdGlvbiBmb3IKKwkJdGhlc2UgZmlybXdhcmUgY2FsbGJhY2tzLiAgQ3VycmVudGx5LCB0aGlzIGZ1bmN0aW9uYWxpdHkKKwkJaXMgbGltaXRlZCB0byBoYW5kbGluZyB0aGUgc3lzdGVtIGV2ZW50IGxvZyBhbmQgZ2V0dGluZworCQlhY2Nlc3MgdG8gRUZJLXN0eWxlIHZhcmlhYmxlcyBzdG9yZWQgaW4gbnZyYW0uCisKKwkJTGF5b3V0OgorCisJCS9zeXMvZmlybXdhcmUvZ3NtaS92YXJzOgorCisJCQlUaGlzIGRpcmVjdG9yeSBoYXMgdGhlIHNhbWUgbGF5b3V0IChhbmQKKwkJCXVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gYXMgL3N5cy9maXJtd2FyZS9lZmkvdmFycy4KKwkJCVNlZSBEb2N1bWVudGF0aW9uL0FCSS8qL3N5c2ZzLWZpcm13YXJlLWVmaS12YXJzCisJCQlmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gaW50ZXJhY3Qgd2l0aAorCQkJdGhpcyBzdHJ1Y3R1cmUuCisKKwkJL3N5cy9maXJtd2FyZS9nc21pL2FwcGVuZF90b19ldmVudGxvZyAtIHdyaXRlLW9ubHk6CisKKwkJCVRoaXMgZmlsZSB0YWtlcyBhIGJpbmFyeSBibG9iIGFuZCBwYXNzZXMgaXQgb250bworCQkJdGhlIGZpcm13YXJlIHRvIGJlIHRpbWVzdGFtcGVkIGFuZCBhcHBlbmRlZCB0bworCQkJdGhlIHN5c3RlbSBldmVudGxvZy4gIFRoZSBiaW5hcnkgZm9ybWF0IGlzCisJCQlpbnRlcnByZXRlZCBieSB0aGUgZmlybXdhcmUgYW5kIG1heSBjaGFuZ2UgZnJvbQorCQkJcGxhdGZvcm0gdG8gcGxhdGZvcm0uICBUaGUgb25seSBrZXJuZWwtZW5mb3JjZWQKKwkJCXJlcXVpcmVtZW50IGlzIHRoYXQgdGhlIGJsb2IgYmUgcHJlZml4ZWQgd2l0aCBhCisJCQkzMmJpdCBob3N0LWVuZGlhbiB0eXBlIHVzZWQgYXMgcGFydCBvZiB0aGUKKwkJCWZpcm13YXJlIGNhbGwuCisKKwkJL3N5cy9maXJtd2FyZS9nc21pL2NsZWFyX2NvbmZpZyAtIHdyaXRlLW9ubHk6CisKKwkJCVdyaXRpbmcgYW55IHZhbHVlIHRvIHRoaXMgZmlsZSB3aWxsIGNhdXNlIHRoZQorCQkJZW50aXJlIGZpcm13YXJlIGNvbmZpZ3VyYXRpb24gdG8gYmUgcmVzZXQgdG8KKwkJCSJmYWN0b3J5IGRlZmF1bHRzIi4gIENhbGxlcnMgc2hvdWxkIGFzc3VtZSB0aGF0CisJCQlhIHJlYm9vdCBpcyByZXF1aXJlZCBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gdG8gYmUKKwkJCWNsZWFyZWQuCisKKwkJL3N5cy9maXJtd2FyZS9nc21pL2NsZWFyX2V2ZW50bG9nIC0gd3JpdGUtb25seToKKworCQkJVGhpcyBmaWxlIGlzIHVzZWQgdG8gY2xlYXIgb3V0IGEgcG9ydGlvbi90aGUKKwkJCXdob2xlIG9mIHRoZSBzeXN0ZW0gZXZlbnQgbG9nLiAgVmFsdWVzIHdyaXR0ZW4KKwkJCXNob3VsZCBiZSB2YWx1ZXMgYmV0d2VlbiAxIGFuZCAxMDAgaW5jbHVzaXZlIChpbgorCQkJQVNDSUkpIHJlcHJlc2VudGluZyB0aGUgZnJhY3Rpb24gb2YgdGhlIGxvZyB0bworCQkJY2xlYXIuICBOb3QgYWxsIHBsYXRmb3JtcyBzdXBwb3J0IGZyYWN0aW9uYWwKKwkJCWNsZWFyaW5nIHRob3VnaCwgYW5kIHRoaXMgd3JpdGVzIHRvIHRoaXMgZmlsZQorCQkJd2lsbCBlcnJvciBvdXQgaWYgdGhlIGZpcm13YXJlIGRvZXNuJ3QgbGlrZSB5b3VyCisJCQlzdWJtaXR0ZWQgZnJhY3Rpb24uCisKKwkJCUNhbGxlcnMgc2hvdWxkIGFzc3VtZSB0aGF0IGEgcmVib290IGlzIG5lZWRlZAorCQkJZm9yIHRoaXMgb3BlcmF0aW9uIHRvIGNvbXBsZXRlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1maXJtd2FyZS1sb2cgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWZpcm13YXJlLWxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjU4ZTdjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1maXJtd2FyZS1sb2cKQEAgLTAsMCArMSw3IEBACitXaGF0OgkJL3N5cy9maXJtd2FyZS9sb2cKK0RhdGU6CQlGZWJydWFyeSAyMDExCitDb250YWN0OglNaWtlIFdheWNoaXNvbiA8bWlrZXdAZ29vZ2xlLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9maXJtd2FyZS9sb2cgaXMgYSBiaW5hcnkgZmlsZSB0aGF0IHJlcHJlc2VudHMgYQorCQlyZWFkLW9ubHkgY29weSBvZiB0aGUgZmlybXdhcmUncyBsb2cgaWYgb25lIGlzCisJCWF2YWlsYWJsZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZmlybXdhcmUtbWVtbWFwIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1maXJtd2FyZS1tZW1tYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNhMGQ2NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZmlybXdhcmUtbWVtbWFwCkBAIC0wLDAgKzEsNzEgQEAKK1doYXQ6CQkvc3lzL2Zpcm13YXJlL21lbW1hcC8KK0RhdGU6CQlKdW5lIDIwMDgKK0NvbnRhY3Q6CUJlcm5oYXJkIFdhbGxlIDxiZXJuaGFyZC53YWxsZUBnbXguZGU+CitEZXNjcmlwdGlvbjoKKwkJT24gYWxsIHBsYXRmb3JtcywgdGhlIGZpcm13YXJlIHByb3ZpZGVzIGEgbWVtb3J5IG1hcCB3aGljaCB0aGUKKwkJa2VybmVsIHJlYWRzLiBUaGUgcmVzb3VyY2VzIGZyb20gdGhhdCBtZW1vcnkgbWFwIGFyZSByZWdpc3RlcmVkCisJCWluIHRoZSBrZXJuZWwgcmVzb3VyY2UgdHJlZSBhbmQgZXhwb3NlZCB0byB1c2Vyc3BhY2UgdmlhCisJCS9wcm9jL2lvbWVtICh0b2dldGhlciB3aXRoIG90aGVyIHJlc291cmNlcykuCisKKwkJSG93ZXZlciwgb24gbW9zdCBhcmNoaXRlY3R1cmVzIHRoYXQgZmlybXdhcmUtcHJvdmlkZWQgbWVtb3J5CisJCW1hcCBpcyBtb2RpZmllZCBhZnRlcndhcmRzIGJ5IHRoZSBrZXJuZWwgaXRzZWxmLCBlaXRoZXIgYmVjYXVzZQorCQl0aGUga2VybmVsIG1lcmdlcyB0aGF0IG1lbW9yeSBtYXAgd2l0aCBvdGhlciBpbmZvcm1hdGlvbiBvcgorCQlqdXN0IGJlY2F1c2UgdGhlIHVzZXIgb3ZlcndyaXRlcyB0aGF0IG1lbW9yeSBtYXAgdmlhIGNvbW1hbmQKKwkJbGluZS4KKworCQlrZXhlYyBuZWVkcyB0aGUgcmF3IGZpcm13YXJlLXByb3ZpZGVkIG1lbW9yeSBtYXAgdG8gc2V0dXAgdGhlCisJCXBhcmFtZXRlciBzZWdtZW50IG9mIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgYm9vdGVkIHdpdGgKKwkJa2V4ZWMuIEFsc28sIHRoZSByYXcgbWVtb3J5IG1hcCBpcyB1c2VmdWwgZm9yIGRlYnVnZ2luZy4gRm9yCisJCXRoYXQgcmVhc29uLCAvc3lzL2Zpcm13YXJlL21lbW1hcCBpcyBhbiBpbnRlcmZhY2UgdGhhdCBwcm92aWRlcworCQl0aGUgcmF3IG1lbW9yeSBtYXAgdG8gdXNlcnNwYWNlLgorCisJCVRoZSBzdHJ1Y3R1cmUgaXMgYXMgZm9sbG93czogVW5kZXIgL3N5cy9maXJtd2FyZS9tZW1tYXAgdGhlcmUKKwkJYXJlIHN1YmRpcmVjdG9yaWVzIHdpdGggdGhlIG51bWJlciBvZiB0aGUgZW50cnkgYXMgdGhlaXIgbmFtZToKKworCQkJL3N5cy9maXJtd2FyZS9tZW1tYXAvMAorCQkJL3N5cy9maXJtd2FyZS9tZW1tYXAvMQorCQkJL3N5cy9maXJtd2FyZS9tZW1tYXAvMgorCQkJL3N5cy9maXJtd2FyZS9tZW1tYXAvMworCQkJLi4uCisKKwkJVGhlIG1heGltdW0gZGVwZW5kcyBvbiB0aGUgbnVtYmVyIG9mIG1lbW9yeSBtYXAgZW50cmllcyBwcm92aWRlZAorCQlieSB0aGUgZmlybXdhcmUuIFRoZSBvcmRlciBpcyBqdXN0IHRoZSBvcmRlciB0aGF0IHRoZSBmaXJtd2FyZQorCQlwcm92aWRlcy4KKworCQlFYWNoIGRpcmVjdG9yeSBjb250YWlucyB0aHJlZSBmaWxlczoKKworCQlzdGFydAk6IFRoZSBzdGFydCBhZGRyZXNzIChhcyBoZXhhZGVjaW1hbCBudW1iZXIgd2l0aCB0aGUKKwkJCSAgJzB4JyBwcmVmaXgpLgorCQllbmQJOiBUaGUgZW5kIGFkZHJlc3MsIGluY2x1c2l2ZSAocmVnYXJkbGVzcyB3aGV0aGVyIHRoZQorCQkJICBmaXJtd2FyZSBwcm92aWRlcyBpbmNsdXNpdmUgb3IgZXhjbHVzaXZlIHJhbmdlcykuCisJCXR5cGUJOiBUeXBlIG9mIHRoZSBlbnRyeSBhcyBzdHJpbmcuIFNlZSBiZWxvdyBmb3IgYSBsaXN0IG9mCisJCQkgIHZhbGlkIHR5cGVzLgorCisJCVNvLCBmb3IgZXhhbXBsZToKKworCQkJL3N5cy9maXJtd2FyZS9tZW1tYXAvMC9zdGFydAorCQkJL3N5cy9maXJtd2FyZS9tZW1tYXAvMC9lbmQKKwkJCS9zeXMvZmlybXdhcmUvbWVtbWFwLzAvdHlwZQorCQkJL3N5cy9maXJtd2FyZS9tZW1tYXAvMS9zdGFydAorCQkJLi4uCisKKwkJQ3VycmVudGx5IGZvbGxvd2luZyB0eXBlcyBleGlzdDoKKworCQkgIC0gU3lzdGVtIFJBTQorCQkgIC0gQUNQSSBUYWJsZXMKKwkJICAtIEFDUEkgTm9uLXZvbGF0aWxlIFN0b3JhZ2UKKwkJICAtIHJlc2VydmVkCisKKwkJRm9sbG93aW5nIHNoZWxsIHNuaXBwZXQgY2FuIGJlIHVzZWQgdG8gZGlzcGxheSB0aGF0IG1lbW9yeQorCQltYXAgaW4gYSBodW1hbi1yZWFkYWJsZSBmb3JtYXQ6CisKKwkJLS0tLS0tLS0tLS0tLS0tLS0tLS0gODwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQkgICMhL2Jpbi9iYXNoCisJCSAgY2QgL3N5cy9maXJtd2FyZS9tZW1tYXAKKwkJICBmb3IgZGlyIGluICogOyBkbworCQkgICAgICBzdGFydD0kKGNhdCAkZGlyL3N0YXJ0KQorCQkgICAgICBlbmQ9JChjYXQgJGRpci9lbmQpCisJCSAgICAgIHR5cGU9JChjYXQgJGRpci90eXBlKQorCQkgICAgICBwcmludGYgIiUwMTZ4LSUwMTZ4ICglcylcbiIgJHN0YXJ0ICRbICRlbmQgKzFdICIkdHlwZSIKKwkJICBkb25lCisJCS0tLS0tLS0tLS0tLS0tLS0tLS0tID44IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZmlybXdhcmUtb2Z3IGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1maXJtd2FyZS1vZncKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU2MmIxOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZmlybXdhcmUtb2Z3CkBAIC0wLDAgKzEsMjggQEAKK1doYXQ6CQkvc3lzL2Zpcm13YXJlL2RldmljZXRyZWUvKgorRGF0ZToJCU5vdmVtYmVyIDIwMTMKK0NvbnRhY3Q6CUdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QGxpbmFyby5vcmc+CitEZXNjcmlwdGlvbjoKKwkJV2hlbiB1c2luZyBPcGVuRmlybXdhcmUgb3IgYSBGbGF0dGVuZWQgRGV2aWNlIFRyZWUgdG8gZW51bWVyYXRlCisJCWhhcmR3YXJlLCB0aGUgZGV2aWNlIHRyZWUgc3RydWN0dXJlIHdpbGwgYmUgZXhwb3NlZCBpbiB0aGlzCisJCWRpcmVjdG9yeS4KKworCQlJdCBpcyBwb3NzaWJsZSBmb3IgbXVsdGlwbGUgZGV2aWNlLXRyZWUgZGlyZWN0b3JpZXMgdG8gZXhpc3QuCisJCVNvbWUgZGV2aWNlIGRyaXZlcnMgdXNlIGEgc2VwYXJhdGUgZGV0YWNoZWQgZGV2aWNlIHRyZWUgd2hpY2gKKwkJaGF2ZSBubyBhdHRhY2htZW50IHRvIHRoZSBzeXN0ZW0gdHJlZSBhbmQgd2lsbCBhcHBlYXIgaW4gYQorCQlkaWZmZXJlbnQgc3ViZGlyZWN0b3J5IHVuZGVyIC9zeXMvZmlybXdhcmUvZGV2aWNldHJlZS4KKworCQlVc2Vyc3BhY2UgbXVzdCBub3QgdXNlIHRoZSAvc3lzL2Zpcm13YXJlL2RldmljZXRyZWUvYmFzZQorCQlwYXRoIGRpcmVjdGx5LCBidXQgaW5zdGVhZCBzaG91bGQgZm9sbG93IC9wcm9jL2RldmljZS10cmVlCisJCXN5bWxpbmsuIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIGFic29sdXRlIHBhdGggd2lsbCBjaGFuZ2UKKwkJaW4gdGhlIGZ1dHVyZSwgYnV0IHRoZSBzeW1saW5rIGlzIHRoZSBzdGFibGUgQUJJLgorCisJCVRoZSAvcHJvYy9kZXZpY2UtdHJlZSBzeW1saW5rIHJlcGxhY2VzIHRoZSBkZXZpY2V0cmVlIC9wcm9jCisJCWZpbGVzeXN0ZW0gc3VwcG9ydCwgYW5kIGhhcyBsYXJnZWx5IHRoZSBzYW1lIHNlbWFudGljcyBhbmQKKwkJc2hvdWxkIGJlIGNvbXBhdGlibGUgd2l0aCBleGlzdGluZyB1c2Vyc3BhY2UuCisKKwkJVGhlIGNvbnRlbnRzIG9mIC9zeXMvZmlybXdhcmUvZGV2aWNldHJlZS8gaXMgYQorCQloaWVyYXJjaHkgb2YgZGlyZWN0b3JpZXMsIG9uZSBwZXIgZGV2aWNlIHRyZWUgbm9kZS4gVGhlCisJCWRpcmVjdG9yeSBuYW1lIGlzIHRoZSByZXNvbHZlZCBwYXRoIGNvbXBvbmVudCBuYW1lIChub2RlCisJCW5hbWUgcGx1cyBhZGRyZXNzKS4gUHJvcGVydGllcyBhcmUgcmVwcmVzZW50ZWQgYXMgZmlsZXMKKwkJaW4gdGhlIGRpcmVjdG9yeS4gVGhlIGNvbnRlbnRzIG9mIGVhY2ggZmlsZSBpcyB0aGUgZXhhY3QKKwkJYmluYXJ5IGRhdGEgZnJvbSB0aGUgZGV2aWNlIHRyZWUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWZpcm13YXJlLXNmaSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZmlybXdhcmUtc2ZpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiZTdkNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWZpcm13YXJlLXNmaQpAQCAtMCwwICsxLDE1IEBACitXaGF0OgkJL3N5cy9maXJtd2FyZS9zZmkvdGFibGVzLworRGF0ZToJCU1heSAyMDEwCitDb250YWN0OglMZW4gQnJvd24gPGxlbmJAa2VybmVsLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlTRkkgZGVmaW5lcyBhIG51bWJlciBvZiBzbWFsbCBzdGF0aWMgbWVtb3J5IHRhYmxlcworCQlzbyB0aGUga2VybmVsIGNhbiBnZXQgcGxhdGZvcm0gaW5mb3JtYXRpb24gZnJvbSBmaXJtd2FyZS4KKworCQlUaGUgdGFibGVzIGFyZSBkZWZpbmVkIGluIHRoZSBsYXRlc3QgU0ZJIHNwZWNpZmljYXRpb246CisJCWh0dHA6Ly9zaW1wbGVmaXJtd2FyZS5vcmcvZG9jdW1lbnRhdGlvbgorCisJCVdoaWxlIHRoZSB0YWJsZXMgYXJlIHVzZWQgYnkgdGhlIGtlcm5lbCwgdXNlci1zcGFjZQorCQljYW4gb2JzZXJ2ZSB0aGVtIHRoaXMgd2F5OgorCisJCSMgY2QgL3N5cy9maXJtd2FyZS9zZmkvdGFibGVzCisJCSMgY2F0ICRUQUJMRU5BTUUgPiAkVEFCTEVOQU1FLmJpbgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1maXJtd2FyZS1zZ2lfdXYgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWZpcm13YXJlLXNnaV91dgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTczZmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1maXJtd2FyZS1zZ2lfdXYKQEAgLTAsMCArMSwyNyBAQAorV2hhdDoJCS9zeXMvZmlybXdhcmUvc2dpX3V2LworRGF0ZToJCUF1Z3VzdCAyMDA4CitDb250YWN0OglSdXNzIEFuZGVyc29uIDxyamFAc2dpLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9maXJtd2FyZS9zZ2lfdXYgZGlyZWN0b3J5IGNvbnRhaW5zIGluZm9ybWF0aW9uCisJCWFib3V0IHRoZSBTR0kgVVYgcGxhdGZvcm0uCisKKwkJVW5kZXIgdGhhdCBkaXJlY3RvcnkgYXJlIGEgbnVtYmVyIG9mIGZpbGVzOgorCisJCQlwYXJ0aXRpb25faWQKKwkJCWNvaGVyZW5jZV9pZAorCisJCVRoZSBwYXJ0aXRpb25faWQgZW50cnkgY29udGFpbnMgdGhlIHBhcnRpdGlvbiBpZC4KKwkJU0dJIFVWIHN5c3RlbXMgY2FuIGJlIHBhcnRpdGlvbmVkIGludG8gbXVsdGlwbGUgcGh5c2ljYWwKKwkJbWFjaGluZXMsIHdoaWNoIGVhY2ggcGFydGl0aW9uIHJ1bm5pbmcgYSB1bmlxdWUgY29weQorCQlvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gIEVhY2ggcGFydGl0aW9uIHdpbGwgaGF2ZSBhIHVuaXF1ZQorCQlwYXJ0aXRpb24gaWQuICBUbyBkaXNwbGF5IHRoZSBwYXJ0aXRpb24gaWQsIHVzZSB0aGUgY29tbWFuZDoKKworCQkJY2F0IC9zeXMvZmlybXdhcmUvc2dpX3V2L3BhcnRpdGlvbl9pZAorCisJCVRoZSBjb2hlcmVuY2VfaWQgZW50cnkgY29udGFpbnMgdGhlIGNvaGVyZW5jZSBpZC4KKwkJQSBwYXJ0aXRpb25lZCBTR0kgVVYgc3lzdGVtIGNhbiBoYXZlIG9uZSBvciBtb3JlIGNvaGVyZW5jZQorCQlkb21haW4uICBUaGUgY29oZXJlbmNlIGlkIGluZGljYXRlcyB3aGljaCBjb2hlcmVuY2UgZG9tYWluCisJCXRoaXMgcGFydGl0aW9uIGlzIGluLiAgVG8gZGlzcGxheSB0aGUgY29oZXJlbmNlIGlkLCB1c2UgdGhlCisJCWNvbW1hbmQ6CisKKwkJCWNhdCAvc3lzL2Zpcm13YXJlL3NnaV91di9jb2hlcmVuY2VfaWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZnMtZXh0NCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZnMtZXh0NApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjMxMjUzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1mcy1leHQ0CkBAIC0wLDAgKzEsMTExIEBACitXaGF0OgkJL3N5cy9mcy9leHQ0LzxkaXNrPi9tYl9zdGF0cworRGF0ZToJCU1hcmNoIDIwMDgKK0NvbnRhY3Q6CSJUaGVvZG9yZSBUcydvIiA8dHl0c29AbWl0LmVkdT4KK0Rlc2NyaXB0aW9uOgorCQkgQ29udHJvbHMgd2hldGhlciB0aGUgbXVsdGlibG9jayBhbGxvY2F0b3Igc2hvdWxkCisJCSBjb2xsZWN0IHN0YXRpc3RpY3MsIHdoaWNoIGFyZSBzaG93biBkdXJpbmcgdGhlIHVubW91bnQuCisJCSAxIG1lYW5zIHRvIGNvbGxlY3Qgc3RhdGlzdGljcywgMCBtZWFucyBub3QgdG8gY29sbGVjdAorCQkgc3RhdGlzdGljcworCitXaGF0OgkJL3N5cy9mcy9leHQ0LzxkaXNrPi9tYl9ncm91cF9wcmVhbGxvYworRGF0ZToJCU1hcmNoIDIwMDgKK0NvbnRhY3Q6CSJUaGVvZG9yZSBUcydvIiA8dHl0c29AbWl0LmVkdT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgbXVsdGlibG9jayBhbGxvY2F0b3Igd2lsbCByb3VuZCB1cCBhbGxvY2F0aW9uCisJCXJlcXVlc3RzIHRvIGEgbXVsdGlwbGUgb2YgdGhpcyB0dW5pbmcgcGFyYW1ldGVyIGlmIHRoZQorCQlzdHJpcGUgc2l6ZSBpcyBub3Qgc2V0IGluIHRoZSBleHQ0IHN1cGVyYmxvY2sKKworV2hhdDoJCS9zeXMvZnMvZXh0NC88ZGlzaz4vbWJfbWF4X3RvX3NjYW4KK0RhdGU6CQlNYXJjaCAyMDA4CitDb250YWN0OgkiVGhlb2RvcmUgVHMnbyIgPHR5dHNvQG1pdC5lZHU+CitEZXNjcmlwdGlvbjoKKwkJVGhlIG1heGltdW0gbnVtYmVyIG9mIGV4dGVudHMgdGhlIG11bHRpYmxvY2sgYWxsb2NhdG9yCisJCXdpbGwgc2VhcmNoIHRvIGZpbmQgdGhlIGJlc3QgZXh0ZW50CisKK1doYXQ6CQkvc3lzL2ZzL2V4dDQvPGRpc2s+L21iX21pbl90b19zY2FuCitEYXRlOgkJTWFyY2ggMjAwOAorQ29udGFjdDoJIlRoZW9kb3JlIFRzJ28iIDx0eXRzb0BtaXQuZWR1PgorRGVzY3JpcHRpb246CisJCVRoZSBtaW5pbXVtIG51bWJlciBvZiBleHRlbnRzIHRoZSBtdWx0aWJsb2NrIGFsbG9jYXRvcgorCQl3aWxsIHNlYXJjaCB0byBmaW5kIHRoZSBiZXN0IGV4dGVudAorCitXaGF0OgkJL3N5cy9mcy9leHQ0LzxkaXNrPi9tYl9vcmRlcjJfcmVxCitEYXRlOgkJTWFyY2ggMjAwOAorQ29udGFjdDoJIlRoZW9kb3JlIFRzJ28iIDx0eXRzb0BtaXQuZWR1PgorRGVzY3JpcHRpb246CisJCVR1bmluZyBwYXJhbWV0ZXIgd2hpY2ggY29udHJvbHMgdGhlIG1pbmltdW0gc2l6ZSBmb3IgCisJCXJlcXVlc3RzIChhcyBhIHBvd2VyIG9mIDIpIHdoZXJlIHRoZSBidWRkeSBjYWNoZSBpcworCQl1c2VkCisKK1doYXQ6CQkvc3lzL2ZzL2V4dDQvPGRpc2s+L21iX3N0cmVhbV9yZXEKK0RhdGU6CQlNYXJjaCAyMDA4CitDb250YWN0OgkiVGhlb2RvcmUgVHMnbyIgPHR5dHNvQG1pdC5lZHU+CitEZXNjcmlwdGlvbjoKKwkJRmlsZXMgd2hpY2ggaGF2ZSBmZXdlciBibG9ja3MgdGhhbiB0aGlzIHR1bmFibGUKKwkJcGFyYW1ldGVyIHdpbGwgaGF2ZSB0aGVpciBibG9ja3MgYWxsb2NhdGVkIG91dCBvZiBhCisJCWJsb2NrIGdyb3VwIHNwZWNpZmljIHByZWFsbG9jYXRpb24gcG9vbCwgc28gdGhhdCBzbWFsbAorCQlmaWxlcyBhcmUgcGFja2VkIGNsb3NlbHkgdG9nZXRoZXIuICBFYWNoIGxhcmdlIGZpbGUKKwkJIHdpbGwgaGF2ZSBpdHMgYmxvY2tzIGFsbG9jYXRlZCBvdXQgb2YgaXRzIG93biB1bmlxdWUKKwkJIHByZWFsbG9jYXRpb24gcG9vbC4KKworV2hhdDoJCS9zeXMvZnMvZXh0NC88ZGlzaz4vaW5vZGVfcmVhZGFoZWFkX2Jsa3MKK0RhdGU6CQlNYXJjaCAyMDA4CitDb250YWN0OgkiVGhlb2RvcmUgVHMnbyIgPHR5dHNvQG1pdC5lZHU+CitEZXNjcmlwdGlvbjoKKwkJVHVuaW5nIHBhcmFtZXRlciB3aGljaCBjb250cm9scyB0aGUgbWF4aW11bSBudW1iZXIgb2YKKwkJaW5vZGUgdGFibGUgYmxvY2tzIHRoYXQgZXh0NCdzIGlub2RlIHRhYmxlIHJlYWRhaGVhZAorCQlhbGdvcml0aG0gd2lsbCBwcmUtcmVhZCBpbnRvIHRoZSBidWZmZXIgY2FjaGUKKworV2hhdDoJCS9zeXMvZnMvZXh0NC88ZGlzaz4vZGVsYXllZF9hbGxvY2F0aW9uX2Jsb2NrcworRGF0ZToJCU1hcmNoIDIwMDgKK0NvbnRhY3Q6CSJUaGVvZG9yZSBUcydvIiA8dHl0c29AbWl0LmVkdT4KK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBzaG93cyB0aGUgbnVtYmVyIG9mIGJsb2NrcworCQl0aGF0IGFyZSBkaXJ0eSBpbiB0aGUgcGFnZSBjYWNoZSwgYnV0IHdoaWNoIGRvIG5vdAorCQloYXZlIHRoZWlyIGxvY2F0aW9uIGluIHRoZSBmaWxlc3lzdGVtIGFsbG9jYXRlZCB5ZXQuCisKK1doYXQ6CQkvc3lzL2ZzL2V4dDQvPGRpc2s+L2xpZmV0aW1lX3dyaXRlX2tieXRlcworRGF0ZToJCU1hcmNoIDIwMDgKK0NvbnRhY3Q6CSJUaGVvZG9yZSBUcydvIiA8dHl0c29AbWl0LmVkdT4KK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBzaG93cyB0aGUgbnVtYmVyIG9mIGtpbG9ieXRlcworCQlvZiBkYXRhIHRoYXQgaGF2ZSBiZWVuIHdyaXR0ZW4gdG8gdGhpcyBmaWxlc3lzdGVtIHNpbmNlIGl0IHdhcworCQljcmVhdGVkLgorCitXaGF0OgkJL3N5cy9mcy9leHQ0LzxkaXNrPi9zZXNzaW9uX3dyaXRlX2tieXRlcworRGF0ZToJCU1hcmNoIDIwMDgKK0NvbnRhY3Q6CSJUaGVvZG9yZSBUcydvIiA8dHl0c29AbWl0LmVkdT4KK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBzaG93cyB0aGUgbnVtYmVyIG9mCisJCWtpbG9ieXRlcyBvZiBkYXRhIHRoYXQgaGF2ZSBiZWVuIHdyaXR0ZW4gdG8gdGhpcworCQlmaWxlc3lzdGVtIHNpbmNlIGl0IHdhcyBtb3VudGVkLgorCitXaGF0OgkJL3N5cy9mcy9leHQ0LzxkaXNrPi9pbm9kZV9nb2FsCitEYXRlOgkJSnVuZSAyMDA4CitDb250YWN0OgkiVGhlb2RvcmUgVHMnbyIgPHR5dHNvQG1pdC5lZHU+CitEZXNjcmlwdGlvbjoKKwkJVHVuaW5nIHBhcmFtZXRlciB3aGljaCAoaWYgbm9uLXplcm8pIGNvbnRyb2xzIHRoZSBnb2FsCisJCWlub2RlIHVzZWQgYnkgdGhlIGlub2RlIGFsbG9jYXRvciBpbiBwcmVmZXJlbmNlIHRvCisJCWFsbCBvdGhlciBhbGxvY2F0aW9uIGhldXJpc3RpY3MuICBUaGlzIGlzIGludGVuZGVkIGZvcgorCQlkZWJ1Z2dpbmcgdXNlIG9ubHksIGFuZCBzaG91bGQgYmUgMCBvbiBwcm9kdWN0aW9uCisJCXN5c3RlbXMuCisKK1doYXQ6CQkvc3lzL2ZzL2V4dDQvPGRpc2s+L21heF93cml0ZWJhY2tfbWJfYnVtcAorRGF0ZToJCVNlcHRlbWJlciAyMDA5CitDb250YWN0OgkiVGhlb2RvcmUgVHMnbyIgPHR5dHNvQG1pdC5lZHU+CitEZXNjcmlwdGlvbjoKKwkJVGhlIG1heGltdW0gbnVtYmVyIG9mIG1lZ2FieXRlcyB0aGUgd3JpdGViYWNrIGNvZGUgd2lsbAorCQl0cnkgdG8gd3JpdGUgb3V0IGJlZm9yZSBtb3ZlIG9uIHRvIGFub3RoZXIgaW5vZGUuCisKK1doYXQ6CQkvc3lzL2ZzL2V4dDQvPGRpc2s+L2V4dGVudF9tYXhfemVyb291dF9rYgorRGF0ZToJCUF1Z3VzdCAyMDEyCitDb250YWN0OgkiVGhlb2RvcmUgVHMnbyIgPHR5dHNvQG1pdC5lZHU+CitEZXNjcmlwdGlvbjoKKwkJVGhlIG1heGltdW0gbnVtYmVyIG9mIGtpbG9ieXRlcyB3aGljaCB3aWxsIGJlIHplcm9lZAorCQlvdXQgaW4gcHJlZmVyZW5jZSB0byBjcmVhdGluZyBhIG5ldyB1bmluaXRpYWxpemVkCisJCWV4dGVudCB3aGVuIG1hbmlwdWxhdGluZyBhbiBpbm9kZSdzIGV4dGVudCB0cmVlLiAgTm90ZQorCQl0aGF0IHVzaW5nIGEgbGFyZ2VyIHZhbHVlIHdpbGwgaW5jcmVhc2UgdGhlCisJCXZhcmlhYmlsaXR5IG9mIHRpbWUgbmVjZXNzYXJ5IHRvIGNvbXBsZXRlIGEgcmFuZG9tCisJCXdyaXRlIG9wZXJhdGlvbiAoc2luY2UgYSA0ayByYW5kb20gd3JpdGUgbWlnaHQgdHVybgorCQlpbnRvIGEgbXVjaCBsYXJnZXIgd3JpdGUgZHVlIHRvIHRoZSB6ZXJvb3V0CisJCW9wZXJhdGlvbikuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWZzLWYyZnMgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWZzLWYyZnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM0NWYyZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZnMtZjJmcwpAQCAtMCwwICsxLDk0IEBACitXaGF0OgkJL3N5cy9mcy9mMmZzLzxkaXNrPi9nY19tYXhfc2xlZXBfdGltZQorRGF0ZToJCUp1bHkgMjAxMworQ29udGFjdDoJIk5hbWphZSBKZW9uIiA8bmFtamFlLmplb25Ac2Ftc3VuZy5jb20+CitEZXNjcmlwdGlvbjoKKwkJIENvbnRyb2xzIHRoZSBtYXhpbXVuIHNsZWVwIHRpbWUgZm9yIGdjX3RocmVhZC4gVGltZQorCQkgaXMgaW4gbWlsbGlzZWNvbmRzLgorCitXaGF0OgkJL3N5cy9mcy9mMmZzLzxkaXNrPi9nY19taW5fc2xlZXBfdGltZQorRGF0ZToJCUp1bHkgMjAxMworQ29udGFjdDoJIk5hbWphZSBKZW9uIiA8bmFtamFlLmplb25Ac2Ftc3VuZy5jb20+CitEZXNjcmlwdGlvbjoKKwkJIENvbnRyb2xzIHRoZSBtaW5pbXVtIHNsZWVwIHRpbWUgZm9yIGdjX3RocmVhZC4gVGltZQorCQkgaXMgaW4gbWlsbGlzZWNvbmRzLgorCitXaGF0OgkJL3N5cy9mcy9mMmZzLzxkaXNrPi9nY19ub19nY19zbGVlcF90aW1lCitEYXRlOgkJSnVseSAyMDEzCitDb250YWN0OgkiTmFtamFlIEplb24iIDxuYW1qYWUuamVvbkBzYW1zdW5nLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQkgQ29udHJvbHMgdGhlIGRlZmF1bHQgc2xlZXAgdGltZSBmb3IgZ2NfdGhyZWFkLiBUaW1lCisJCSBpcyBpbiBtaWxsaXNlY29uZHMuCisKK1doYXQ6CQkvc3lzL2ZzL2YyZnMvPGRpc2s+L2djX2lkbGUKK0RhdGU6CQlKdWx5IDIwMTMKK0NvbnRhY3Q6CSJOYW1qYWUgSmVvbiIgPG5hbWphZS5qZW9uQHNhbXN1bmcuY29tPgorRGVzY3JpcHRpb246CisJCSBDb250cm9scyB0aGUgdmljdGltIHNlbGVjdGlvbiBwb2xpY3kgZm9yIGdhcmJhZ2UgY29sbGVjdGlvbi4KKworV2hhdDoJCS9zeXMvZnMvZjJmcy88ZGlzaz4vcmVjbGFpbV9zZWdtZW50cworRGF0ZToJCU9jdG9iZXIgMjAxMworQ29udGFjdDoJIkphZWdldWsgS2ltIiA8amFlZ2V1ay5raW1Ac2Ftc3VuZy5jb20+CitEZXNjcmlwdGlvbjoKKwkJIENvbnRyb2xzIHRoZSBpc3N1ZSByYXRlIG9mIHNlZ21lbnQgZGlzY2FyZCBjb21tYW5kcy4KKworV2hhdDoJCS9zeXMvZnMvZjJmcy88ZGlzaz4vaXB1X3BvbGljeQorRGF0ZToJCU5vdmVtYmVyIDIwMTMKK0NvbnRhY3Q6CSJKYWVnZXVrIEtpbSIgPGphZWdldWsua2ltQHNhbXN1bmcuY29tPgorRGVzY3JpcHRpb246CisJCSBDb250cm9scyB0aGUgaW4tcGxhY2UtdXBkYXRlIHBvbGljeS4KKworV2hhdDoJCS9zeXMvZnMvZjJmcy88ZGlzaz4vbWluX2lwdV91dGlsCitEYXRlOgkJTm92ZW1iZXIgMjAxMworQ29udGFjdDoJIkphZWdldWsgS2ltIiA8amFlZ2V1ay5raW1Ac2Ftc3VuZy5jb20+CitEZXNjcmlwdGlvbjoKKwkJIENvbnRyb2xzIHRoZSBGUyB1dGlsaXphdGlvbiBjb25kaXRpb24gZm9yIHRoZSBpbi1wbGFjZS11cGRhdGUKKwkJIHBvbGljaWVzLgorCitXaGF0OgkJL3N5cy9mcy9mMmZzLzxkaXNrPi9taW5fZnN5bmNfYmxvY2tzCitEYXRlOgkJU2VwdGVtYmVyIDIwMTQKK0NvbnRhY3Q6CSJKYWVnZXVrIEtpbSIgPGphZWdldWtAa2VybmVsLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQkgQ29udHJvbHMgdGhlIGRpcnR5IHBhZ2UgY291bnQgY29uZGl0aW9uIGZvciB0aGUgaW4tcGxhY2UtdXBkYXRlCisJCSBwb2xpY2llcy4KKworV2hhdDoJCS9zeXMvZnMvZjJmcy88ZGlzaz4vbWF4X3NtYWxsX2Rpc2NhcmRzCitEYXRlOgkJTm92ZW1iZXIgMjAxMworQ29udGFjdDoJIkphZWdldWsgS2ltIiA8amFlZ2V1ay5raW1Ac2Ftc3VuZy5jb20+CitEZXNjcmlwdGlvbjoKKwkJIENvbnRyb2xzIHRoZSBpc3N1ZSByYXRlIG9mIHNtYWxsIGRpc2NhcmQgY29tbWFuZHMuCisKK1doYXQ6CQkvc3lzL2ZzL2YyZnMvPGRpc2s+L21heF92aWN0aW1fc2VhcmNoCitEYXRlOgkJSmFudWFyeSAyMDE0CitDb250YWN0OgkiSmFlZ2V1ayBLaW0iIDxqYWVnZXVrLmtpbUBzYW1zdW5nLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQkgQ29udHJvbHMgdGhlIG51bWJlciBvZiB0cmlhbHMgdG8gZmluZCBhIHZpY3RpbSBzZWdtZW50LgorCitXaGF0OgkJL3N5cy9mcy9mMmZzLzxkaXNrPi9kaXJfbGV2ZWwKK0RhdGU6CQlNYXJjaCAyMDE0CitDb250YWN0OgkiSmFlZ2V1ayBLaW0iIDxqYWVnZXVrLmtpbUBzYW1zdW5nLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQkgQ29udHJvbHMgdGhlIGRpcmVjdG9yeSBsZXZlbCBmb3IgbGFyZ2UgZGlyZWN0b3J5LgorCitXaGF0OgkJL3N5cy9mcy9mMmZzLzxkaXNrPi9yYW1fdGhyZXNoCitEYXRlOgkJTWFyY2ggMjAxNAorQ29udGFjdDoJIkphZWdldWsgS2ltIiA8amFlZ2V1ay5raW1Ac2Ftc3VuZy5jb20+CitEZXNjcmlwdGlvbjoKKwkJIENvbnRyb2xzIHRoZSBtZW1vcnkgZm9vdHByaW50IHVzZWQgYnkgZjJmcy4KKworV2hhdDoJCS9zeXMvZnMvZjJmcy88ZGlzaz4vdHJpbV9zZWN0aW9ucworRGF0ZToJCUZlYnJ1YXJ5IDIwMTUKK0NvbnRhY3Q6CSJKYWVnZXVrIEtpbSIgPGphZWdldWtAa2VybmVsLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQkgQ29udHJvbHMgdGhlIHRyaW1taW5nIHJhdGUgaW4gYmF0Y2ggbW9kZS4KKworV2hhdDoJCS9zeXMvZnMvZjJmcy88ZGlzaz4vY3BfaW50ZXJ2YWwKK0RhdGU6CQlPY3RvYmVyIDIwMTUKK0NvbnRhY3Q6CSJKYWVnZXVrIEtpbSIgPGphZWdldWtAa2VybmVsLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQkgQ29udHJvbHMgdGhlIGNoZWNrcG9pbnQgdGltaW5nLgorCitXaGF0OgkJL3N5cy9mcy9mMmZzLzxkaXNrPi9yYV9uaWRfcGFnZXMKK0RhdGU6CQlPY3RvYmVyIDIwMTUKK0NvbnRhY3Q6CSJDaGFvIFl1IiA8Y2hhbzIueXVAc2Ftc3VuZy5jb20+CitEZXNjcmlwdGlvbjoKKwkJIENvbnRyb2xzIHRoZSBjb3VudCBvZiBuaWQgcGFnZXMgdG8gYmUgcmVhZGFoZWFkZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWZzLW5pbGZzMiBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZnMtbmlsZnMyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwNGJhODQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWZzLW5pbGZzMgpAQCAtMCwwICsxLDI2OSBAQAorCitXaGF0OgkJL3N5cy9mcy9uaWxmczIvZmVhdHVyZXMvcmV2aXNpb24KK0RhdGU6CQlBcHJpbCAyMDE0CitDb250YWN0OgkiVnlhY2hlc2xhdiBEdWJleWtvIiA8c2xhdmFAZHViZXlrby5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2hvdyBjdXJyZW50IHJldmlzaW9uIG9mIE5JTEZTIGZpbGUgc3lzdGVtIGRyaXZlci4KKwkJVGhpcyB2YWx1ZSBpbmZvcm1zIGFib3V0IGZpbGUgc3lzdGVtIHJldmlzaW9uIHRoYXQKKwkJZHJpdmVyIGlzIHJlYWR5IHRvIHN1cHBvcnQuCisKK1doYXQ6CQkvc3lzL2ZzL25pbGZzMi9mZWF0dXJlcy9SRUFETUUKK0RhdGU6CQlBcHJpbCAyMDE0CitDb250YWN0OgkiVnlhY2hlc2xhdiBEdWJleWtvIiA8c2xhdmFAZHViZXlrby5jb20+CitEZXNjcmlwdGlvbjoKKwkJRGVzY3JpYmUgYXR0cmlidXRlcyBvZiAvc3lzL2ZzL25pbGZzMi9mZWF0dXJlcyBncm91cC4KKworV2hhdDoJCS9zeXMvZnMvbmlsZnMyLzxkZXZpY2U+L3JldmlzaW9uCitEYXRlOgkJQXByaWwgMjAxNAorQ29udGFjdDoJIlZ5YWNoZXNsYXYgRHViZXlrbyIgPHNsYXZhQGR1YmV5a28uY29tPgorRGVzY3JpcHRpb246CisJCVNob3cgTklMRlMgZmlsZSBzeXN0ZW0gcmV2aXNpb24gb24gdm9sdW1lLgorCQlUaGlzIHZhbHVlIGluZm9ybXMgYWJvdXQgbWV0YWRhdGEgc3RydWN0dXJlcycKKwkJcmV2aXNpb24gb24gbW91bnRlZCB2b2x1bWUuCisKK1doYXQ6CQkvc3lzL2ZzL25pbGZzMi88ZGV2aWNlPi9ibG9ja3NpemUKK0RhdGU6CQlBcHJpbCAyMDE0CitDb250YWN0OgkiVnlhY2hlc2xhdiBEdWJleWtvIiA8c2xhdmFAZHViZXlrby5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2hvdyB2b2x1bWUncyBibG9jayBzaXplIGluIGJ5dGVzLgorCitXaGF0OgkJL3N5cy9mcy9uaWxmczIvPGRldmljZT4vZGV2aWNlX3NpemUKK0RhdGU6CQlBcHJpbCAyMDE0CitDb250YWN0OgkiVnlhY2hlc2xhdiBEdWJleWtvIiA8c2xhdmFAZHViZXlrby5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2hvdyB2b2x1bWUgc2l6ZSBpbiBieXRlcy4KKworV2hhdDoJCS9zeXMvZnMvbmlsZnMyLzxkZXZpY2U+L2ZyZWVfYmxvY2tzCitEYXRlOgkJQXByaWwgMjAxNAorQ29udGFjdDoJIlZ5YWNoZXNsYXYgRHViZXlrbyIgPHNsYXZhQGR1YmV5a28uY29tPgorRGVzY3JpcHRpb246CisJCVNob3cgY291bnQgb2YgZnJlZSBibG9ja3Mgb24gdm9sdW1lLgorCitXaGF0OgkJL3N5cy9mcy9uaWxmczIvPGRldmljZT4vdXVpZAorRGF0ZToJCUFwcmlsIDIwMTQKK0NvbnRhY3Q6CSJWeWFjaGVzbGF2IER1YmV5a28iIDxzbGF2YUBkdWJleWtvLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlTaG93IHZvbHVtZSdzIFVVSUQgKFVuaXZlcnNhbGx5IFVuaXF1ZSBJZGVudGlmaWVyKS4KKworV2hhdDoJCS9zeXMvZnMvbmlsZnMyLzxkZXZpY2U+L3ZvbHVtZV9uYW1lCitEYXRlOgkJQXByaWwgMjAxNAorQ29udGFjdDoJIlZ5YWNoZXNsYXYgRHViZXlrbyIgPHNsYXZhQGR1YmV5a28uY29tPgorRGVzY3JpcHRpb246CisJCVNob3cgdm9sdW1lJ3MgbGFiZWwuCisKK1doYXQ6CQkvc3lzL2ZzL25pbGZzMi88ZGV2aWNlPi9SRUFETUUKK0RhdGU6CQlBcHJpbCAyMDE0CitDb250YWN0OgkiVnlhY2hlc2xhdiBEdWJleWtvIiA8c2xhdmFAZHViZXlrby5jb20+CitEZXNjcmlwdGlvbjoKKwkJRGVzY3JpYmUgYXR0cmlidXRlcyBvZiAvc3lzL2ZzL25pbGZzMi88ZGV2aWNlPiBncm91cC4KKworV2hhdDoJCS9zeXMvZnMvbmlsZnMyLzxkZXZpY2U+L3N1cGVyYmxvY2svc2Jfd3JpdGVfdGltZQorRGF0ZToJCUFwcmlsIDIwMTQKK0NvbnRhY3Q6CSJWeWFjaGVzbGF2IER1YmV5a28iIDxzbGF2YUBkdWJleWtvLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlTaG93IGxhc3Qgd3JpdGUgdGltZSBvZiBzdXBlciBibG9jayBpbiBodW1hbi1yZWFkYWJsZQorCQlmb3JtYXQuCisKK1doYXQ6CQkvc3lzL2ZzL25pbGZzMi88ZGV2aWNlPi9zdXBlcmJsb2NrL3NiX3dyaXRlX3RpbWVfc2VjcworRGF0ZToJCUFwcmlsIDIwMTQKK0NvbnRhY3Q6CSJWeWFjaGVzbGF2IER1YmV5a28iIDxzbGF2YUBkdWJleWtvLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlTaG93IGxhc3Qgd3JpdGUgdGltZSBvZiBzdXBlciBibG9jayBpbiBzZWNvbmRzLgorCitXaGF0OgkJL3N5cy9mcy9uaWxmczIvPGRldmljZT4vc3VwZXJibG9jay9zYl93cml0ZV9jb3VudAorRGF0ZToJCUFwcmlsIDIwMTQKK0NvbnRhY3Q6CSJWeWFjaGVzbGF2IER1YmV5a28iIDxzbGF2YUBkdWJleWtvLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlTaG93IGN1cnJlbnQgd3JpdGUgY291bnQgb2Ygc3VwZXIgYmxvY2suCisKK1doYXQ6CQkvc3lzL2ZzL25pbGZzMi88ZGV2aWNlPi9zdXBlcmJsb2NrL3NiX3VwZGF0ZV9mcmVxdWVuY3kKK0RhdGU6CQlBcHJpbCAyMDE0CitDb250YWN0OgkiVnlhY2hlc2xhdiBEdWJleWtvIiA8c2xhdmFAZHViZXlrby5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2hvdy9TZXQgaW50ZXJ2YWwgb2YgcGVyaW9kaWNhbCB1cGRhdGUgb2Ygc3VwZXJibG9jaworCQkoaW4gc2Vjb25kcykuCisKK1doYXQ6CQkvc3lzL2ZzL25pbGZzMi88ZGV2aWNlPi9zdXBlcmJsb2NrL1JFQURNRQorRGF0ZToJCUFwcmlsIDIwMTQKK0NvbnRhY3Q6CSJWeWFjaGVzbGF2IER1YmV5a28iIDxzbGF2YUBkdWJleWtvLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlEZXNjcmliZSBhdHRyaWJ1dGVzIG9mIC9zeXMvZnMvbmlsZnMyLzxkZXZpY2U+L3N1cGVyYmxvY2sKKwkJZ3JvdXAuCisKK1doYXQ6CQkvc3lzL2ZzL25pbGZzMi88ZGV2aWNlPi9zZWdjdG9yL2xhc3RfcHNlZ19ibG9jaworRGF0ZToJCUFwcmlsIDIwMTQKK0NvbnRhY3Q6CSJWeWFjaGVzbGF2IER1YmV5a28iIDxzbGF2YUBkdWJleWtvLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlTaG93IHN0YXJ0IGJsb2NrIG51bWJlciBvZiB0aGUgbGF0ZXN0IHNlZ21lbnQuCisKK1doYXQ6CQkvc3lzL2ZzL25pbGZzMi88ZGV2aWNlPi9zZWdjdG9yL2xhc3Rfc2VnX3NlcXVlbmNlCitEYXRlOgkJQXByaWwgMjAxNAorQ29udGFjdDoJIlZ5YWNoZXNsYXYgRHViZXlrbyIgPHNsYXZhQGR1YmV5a28uY29tPgorRGVzY3JpcHRpb246CisJCVNob3cgc2VxdWVuY2UgdmFsdWUgb2YgdGhlIGxhdGVzdCBzZWdtZW50LgorCitXaGF0OgkJL3N5cy9mcy9uaWxmczIvPGRldmljZT4vc2VnY3Rvci9sYXN0X3NlZ19jaGVja3BvaW50CitEYXRlOgkJQXByaWwgMjAxNAorQ29udGFjdDoJIlZ5YWNoZXNsYXYgRHViZXlrbyIgPHNsYXZhQGR1YmV5a28uY29tPgorRGVzY3JpcHRpb246CisJCVNob3cgY2hlY2twb2ludCBudW1iZXIgb2YgdGhlIGxhdGVzdCBzZWdtZW50LgorCitXaGF0OgkJL3N5cy9mcy9uaWxmczIvPGRldmljZT4vc2VnY3Rvci9jdXJyZW50X3NlZ19zZXF1ZW5jZQorRGF0ZToJCUFwcmlsIDIwMTQKK0NvbnRhY3Q6CSJWeWFjaGVzbGF2IER1YmV5a28iIDxzbGF2YUBkdWJleWtvLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlTaG93IHNlZ21lbnQgc2VxdWVuY2UgY291bnRlci4KKworV2hhdDoJCS9zeXMvZnMvbmlsZnMyLzxkZXZpY2U+L3NlZ2N0b3IvY3VycmVudF9sYXN0X2Z1bGxfc2VnCitEYXRlOgkJQXByaWwgMjAxNAorQ29udGFjdDoJIlZ5YWNoZXNsYXYgRHViZXlrbyIgPHNsYXZhQGR1YmV5a28uY29tPgorRGVzY3JpcHRpb246CisJCVNob3cgaW5kZXggbnVtYmVyIG9mIHRoZSBsYXRlc3QgZnVsbCBzZWdtZW50LgorCitXaGF0OgkJL3N5cy9mcy9uaWxmczIvPGRldmljZT4vc2VnY3Rvci9uZXh0X2Z1bGxfc2VnCitEYXRlOgkJQXByaWwgMjAxNAorQ29udGFjdDoJIlZ5YWNoZXNsYXYgRHViZXlrbyIgPHNsYXZhQGR1YmV5a28uY29tPgorRGVzY3JpcHRpb246CisJCVNob3cgaW5kZXggbnVtYmVyIG9mIHRoZSBmdWxsIHNlZ21lbnQgaW5kZXgKKwkJdG8gYmUgdXNlZCBuZXh0LgorCitXaGF0OgkJL3N5cy9mcy9uaWxmczIvPGRldmljZT4vc2VnY3Rvci9uZXh0X3BzZWdfb2Zmc2V0CitEYXRlOgkJQXByaWwgMjAxNAorQ29udGFjdDoJIlZ5YWNoZXNsYXYgRHViZXlrbyIgPHNsYXZhQGR1YmV5a28uY29tPgorRGVzY3JpcHRpb246CisJCVNob3cgb2Zmc2V0IG9mIG5leHQgcGFydGlhbCBzZWdtZW50IGluIHRoZSBjdXJyZW50CisJCWZ1bGwgc2VnbWVudC4KKworV2hhdDoJCS9zeXMvZnMvbmlsZnMyLzxkZXZpY2U+L3NlZ2N0b3IvbmV4dF9jaGVja3BvaW50CitEYXRlOgkJQXByaWwgMjAxNAorQ29udGFjdDoJIlZ5YWNoZXNsYXYgRHViZXlrbyIgPHNsYXZhQGR1YmV5a28uY29tPgorRGVzY3JpcHRpb246CisJCVNob3cgbmV4dCBjaGVja3BvaW50IG51bWJlci4KKworV2hhdDoJCS9zeXMvZnMvbmlsZnMyLzxkZXZpY2U+L3NlZ2N0b3IvbGFzdF9zZWdfd3JpdGVfdGltZQorRGF0ZToJCUFwcmlsIDIwMTQKK0NvbnRhY3Q6CSJWeWFjaGVzbGF2IER1YmV5a28iIDxzbGF2YUBkdWJleWtvLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlTaG93IHdyaXRlIHRpbWUgb2YgdGhlIGxhc3Qgc2VnbWVudCBpbgorCQlodW1hbi1yZWFkYWJsZSBmb3JtYXQuCisKK1doYXQ6CQkvc3lzL2ZzL25pbGZzMi88ZGV2aWNlPi9zZWdjdG9yL2xhc3Rfc2VnX3dyaXRlX3RpbWVfc2VjcworRGF0ZToJCUFwcmlsIDIwMTQKK0NvbnRhY3Q6CSJWeWFjaGVzbGF2IER1YmV5a28iIDxzbGF2YUBkdWJleWtvLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlTaG93IHdyaXRlIHRpbWUgb2YgdGhlIGxhc3Qgc2VnbWVudCBpbiBzZWNvbmRzLgorCitXaGF0OgkJL3N5cy9mcy9uaWxmczIvPGRldmljZT4vc2VnY3Rvci9sYXN0X25vbmdjX3dyaXRlX3RpbWUKK0RhdGU6CQlBcHJpbCAyMDE0CitDb250YWN0OgkiVnlhY2hlc2xhdiBEdWJleWtvIiA8c2xhdmFAZHViZXlrby5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2hvdyB3cml0ZSB0aW1lIG9mIHRoZSBsYXN0IHNlZ21lbnQgbm90IGZvciBjbGVhbmVyCisJCW9wZXJhdGlvbiBpbiBodW1hbi1yZWFkYWJsZSBmb3JtYXQuCisKK1doYXQ6CQkvc3lzL2ZzL25pbGZzMi88ZGV2aWNlPi9zZWdjdG9yL2xhc3Rfbm9uZ2Nfd3JpdGVfdGltZV9zZWNzCitEYXRlOgkJQXByaWwgMjAxNAorQ29udGFjdDoJIlZ5YWNoZXNsYXYgRHViZXlrbyIgPHNsYXZhQGR1YmV5a28uY29tPgorRGVzY3JpcHRpb246CisJCVNob3cgd3JpdGUgdGltZSBvZiB0aGUgbGFzdCBzZWdtZW50IG5vdCBmb3IgY2xlYW5lcgorCQlvcGVyYXRpb24gaW4gc2Vjb25kcy4KKworV2hhdDoJCS9zeXMvZnMvbmlsZnMyLzxkZXZpY2U+L3NlZ2N0b3IvZGlydHlfZGF0YV9ibG9ja3NfY291bnQKK0RhdGU6CQlBcHJpbCAyMDE0CitDb250YWN0OgkiVnlhY2hlc2xhdiBEdWJleWtvIiA8c2xhdmFAZHViZXlrby5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2hvdyBudW1iZXIgb2YgZGlydHkgZGF0YSBibG9ja3MuCisKK1doYXQ6CQkvc3lzL2ZzL25pbGZzMi88ZGV2aWNlPi9zZWdjdG9yL1JFQURNRQorRGF0ZToJCUFwcmlsIDIwMTQKK0NvbnRhY3Q6CSJWeWFjaGVzbGF2IER1YmV5a28iIDxzbGF2YUBkdWJleWtvLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlEZXNjcmliZSBhdHRyaWJ1dGVzIG9mIC9zeXMvZnMvbmlsZnMyLzxkZXZpY2U+L3NlZ2N0b3IKKwkJZ3JvdXAuCisKK1doYXQ6CQkvc3lzL2ZzL25pbGZzMi88ZGV2aWNlPi9zZWdtZW50cy9zZWdtZW50c19udW1iZXIKK0RhdGU6CQlBcHJpbCAyMDE0CitDb250YWN0OgkiVnlhY2hlc2xhdiBEdWJleWtvIiA8c2xhdmFAZHViZXlrby5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2hvdyBudW1iZXIgb2Ygc2VnbWVudHMgb24gYSB2b2x1bWUuCisKK1doYXQ6CQkvc3lzL2ZzL25pbGZzMi88ZGV2aWNlPi9zZWdtZW50cy9ibG9ja3NfcGVyX3NlZ21lbnQKK0RhdGU6CQlBcHJpbCAyMDE0CitDb250YWN0OgkiVnlhY2hlc2xhdiBEdWJleWtvIiA8c2xhdmFAZHViZXlrby5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2hvdyBudW1iZXIgb2YgYmxvY2tzIGluIHNlZ21lbnQuCisKK1doYXQ6CQkvc3lzL2ZzL25pbGZzMi88ZGV2aWNlPi9zZWdtZW50cy9jbGVhbl9zZWdtZW50cworRGF0ZToJCUFwcmlsIDIwMTQKK0NvbnRhY3Q6CSJWeWFjaGVzbGF2IER1YmV5a28iIDxzbGF2YUBkdWJleWtvLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlTaG93IGNvdW50IG9mIGNsZWFuIHNlZ21lbnRzLgorCitXaGF0OgkJL3N5cy9mcy9uaWxmczIvPGRldmljZT4vc2VnbWVudHMvZGlydHlfc2VnbWVudHMKK0RhdGU6CQlBcHJpbCAyMDE0CitDb250YWN0OgkiVnlhY2hlc2xhdiBEdWJleWtvIiA8c2xhdmFAZHViZXlrby5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2hvdyBjb3VudCBvZiBkaXJ0eSBzZWdtZW50cy4KKworV2hhdDoJCS9zeXMvZnMvbmlsZnMyLzxkZXZpY2U+L3NlZ21lbnRzL1JFQURNRQorRGF0ZToJCUFwcmlsIDIwMTQKK0NvbnRhY3Q6CSJWeWFjaGVzbGF2IER1YmV5a28iIDxzbGF2YUBkdWJleWtvLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlEZXNjcmliZSBhdHRyaWJ1dGVzIG9mIC9zeXMvZnMvbmlsZnMyLzxkZXZpY2U+L3NlZ21lbnRzCisJCWdyb3VwLgorCitXaGF0OgkJL3N5cy9mcy9uaWxmczIvPGRldmljZT4vY2hlY2twb2ludHMvY2hlY2twb2ludHNfbnVtYmVyCitEYXRlOgkJQXByaWwgMjAxNAorQ29udGFjdDoJIlZ5YWNoZXNsYXYgRHViZXlrbyIgPHNsYXZhQGR1YmV5a28uY29tPgorRGVzY3JpcHRpb246CisJCVNob3cgbnVtYmVyIG9mIGNoZWNrcG9pbnRzIG9uIHZvbHVtZS4KKworV2hhdDoJCS9zeXMvZnMvbmlsZnMyLzxkZXZpY2U+L2NoZWNrcG9pbnRzL3NuYXBzaG90c19udW1iZXIKK0RhdGU6CQlBcHJpbCAyMDE0CitDb250YWN0OgkiVnlhY2hlc2xhdiBEdWJleWtvIiA8c2xhdmFAZHViZXlrby5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2hvdyBudW1iZXIgb2Ygc25hcHNob3RzIG9uIHZvbHVtZS4KKworV2hhdDoJCS9zeXMvZnMvbmlsZnMyLzxkZXZpY2U+L2NoZWNrcG9pbnRzL2xhc3Rfc2VnX2NoZWNrcG9pbnQKK0RhdGU6CQlBcHJpbCAyMDE0CitDb250YWN0OgkiVnlhY2hlc2xhdiBEdWJleWtvIiA8c2xhdmFAZHViZXlrby5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2hvdyBjaGVja3BvaW50IG51bWJlciBvZiB0aGUgbGF0ZXN0IHNlZ21lbnQuCisKK1doYXQ6CQkvc3lzL2ZzL25pbGZzMi88ZGV2aWNlPi9jaGVja3BvaW50cy9uZXh0X2NoZWNrcG9pbnQKK0RhdGU6CQlBcHJpbCAyMDE0CitDb250YWN0OgkiVnlhY2hlc2xhdiBEdWJleWtvIiA8c2xhdmFAZHViZXlrby5jb20+CitEZXNjcmlwdGlvbjoKKwkJU2hvdyBuZXh0IGNoZWNrcG9pbnQgbnVtYmVyLgorCitXaGF0OgkJL3N5cy9mcy9uaWxmczIvPGRldmljZT4vY2hlY2twb2ludHMvUkVBRE1FCitEYXRlOgkJQXByaWwgMjAxNAorQ29udGFjdDoJIlZ5YWNoZXNsYXYgRHViZXlrbyIgPHNsYXZhQGR1YmV5a28uY29tPgorRGVzY3JpcHRpb246CisJCURlc2NyaWJlIGF0dHJpYnV0ZXMgb2YgL3N5cy9mcy9uaWxmczIvPGRldmljZT4vY2hlY2twb2ludHMKKwkJZ3JvdXAuCisKK1doYXQ6CQkvc3lzL2ZzL25pbGZzMi88ZGV2aWNlPi9tb3VudGVkX3NuYXBzaG90cy9SRUFETUUKK0RhdGU6CQlBcHJpbCAyMDE0CitDb250YWN0OgkiVnlhY2hlc2xhdiBEdWJleWtvIiA8c2xhdmFAZHViZXlrby5jb20+CitEZXNjcmlwdGlvbjoKKwkJRGVzY3JpYmUgY29udGVudCBvZiAvc3lzL2ZzL25pbGZzMi88ZGV2aWNlPi9tb3VudGVkX3NuYXBzaG90cworCQlncm91cC4KKworV2hhdDoJCS9zeXMvZnMvbmlsZnMyLzxkZXZpY2U+L21vdW50ZWRfc25hcHNob3RzLzxpZD4vaW5vZGVzX2NvdW50CitEYXRlOgkJQXByaWwgMjAxNAorQ29udGFjdDoJIlZ5YWNoZXNsYXYgRHViZXlrbyIgPHNsYXZhQGR1YmV5a28uY29tPgorRGVzY3JpcHRpb246CisJCVNob3cgbnVtYmVyIG9mIGlub2RlcyBmb3Igc25hcHNob3QuCisKK1doYXQ6CQkvc3lzL2ZzL25pbGZzMi88ZGV2aWNlPi9tb3VudGVkX3NuYXBzaG90cy88aWQ+L2Jsb2Nrc19jb3VudAorRGF0ZToJCUFwcmlsIDIwMTQKK0NvbnRhY3Q6CSJWeWFjaGVzbGF2IER1YmV5a28iIDxzbGF2YUBkdWJleWtvLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlTaG93IG51bWJlciBvZiBibG9ja3MgZm9yIHNuYXBzaG90LgorCitXaGF0OgkJL3N5cy9mcy9uaWxmczIvPGRldmljZT4vbW91bnRlZF9zbmFwc2hvdHMvPGlkPi9SRUFETUUKK0RhdGU6CQlBcHJpbCAyMDE0CitDb250YWN0OgkiVnlhY2hlc2xhdiBEdWJleWtvIiA8c2xhdmFAZHViZXlrby5jb20+CitEZXNjcmlwdGlvbjoKKwkJRGVzY3JpYmUgYXR0cmlidXRlcyBvZiAvc3lzL2ZzL25pbGZzMi88ZGV2aWNlPi9tb3VudGVkX3NuYXBzaG90cy88aWQ+CisJCWdyb3VwLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1mcy14ZnMgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWZzLXhmcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTBjYzhjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1mcy14ZnMKQEAgLTAsMCArMSwzOSBAQAorV2hhdDoJCS9zeXMvZnMveGZzLzxkaXNrPi9sb2cvbG9nX2hlYWRfbHNuCitEYXRlOgkJSnVseSAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE3CitDb250YWN0Ogl4ZnNAb3NzLnNnaS5jb20KK0Rlc2NyaXB0aW9uOgorCQlUaGUgbG9nIHNlcXVlbmNlIG51bWJlciAoTFNOKSBvZiB0aGUgY3VycmVudCBoZWFkIG9mIHRoZQorCQlsb2cuIFRoZSBMU04gaXMgZXhwb3J0ZWQgaW4gImN5Y2xlOmJhc2ljIGJsb2NrIiBmb3JtYXQuCitVc2VyczoJCXhmc3Rlc3RzCisKK1doYXQ6CQkvc3lzL2ZzL3hmcy88ZGlzaz4vbG9nL2xvZ190YWlsX2xzbgorRGF0ZToJCUp1bHkgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xNworQ29udGFjdDoJeGZzQG9zcy5zZ2kuY29tCitEZXNjcmlwdGlvbjoKKwkJVGhlIGxvZyBzZXF1ZW5jZSBudW1iZXIgKExTTikgb2YgdGhlIGN1cnJlbnQgdGFpbCBvZiB0aGUKKwkJbG9nLiBUaGUgTFNOIGlzIGV4cG9ydGVkIGluICJjeWNsZTpiYXNpYyBibG9jayIgZm9ybWF0LgorCitXaGF0OgkJL3N5cy9mcy94ZnMvPGRpc2s+L2xvZy9yZXNlcnZlX2dyYW50X2hlYWQKK0RhdGU6CQlKdWx5IDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTcKK0NvbnRhY3Q6CXhmc0Bvc3Muc2dpLmNvbQorRGVzY3JpcHRpb246CisJCVRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBsb2cgcmVzZXJ2ZSBncmFudCBoZWFkLiBJdAorCQlyZXByZXNlbnRzIHRoZSB0b3RhbCBsb2cgcmVzZXJ2YXRpb24gb2YgYWxsIGN1cnJlbnRseQorCQlvdXRzdGFuZGluZyB0cmFuc2FjdGlvbnMuIFRoZSBncmFudCBoZWFkIGlzIGV4cG9ydGVkIGluCisJCSJjeWNsZTpieXRlcyIgZm9ybWF0LgorVXNlcnM6CQl4ZnN0ZXN0cworCitXaGF0OgkJL3N5cy9mcy94ZnMvPGRpc2s+L2xvZy93cml0ZV9ncmFudF9oZWFkCitEYXRlOgkJSnVseSAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE3CitDb250YWN0Ogl4ZnNAb3NzLnNnaS5jb20KK0Rlc2NyaXB0aW9uOgorCQlUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgbG9nIHdyaXRlIGdyYW50IGhlYWQuIEl0CisJCXJlcHJlc2VudHMgdGhlIHRvdGFsIGxvZyByZXNlcnZhdGlvbiBvZiBhbGwgY3VycmVudGx5CisJCW91c3RhbmRpbmcgdHJhbnNhY3Rpb25zLCBpbmNsdWRpbmcgcmVncmFudHMgZHVlIHRvCisJCXJvbGxpbmcgdHJhbnNhY3Rpb25zLiBUaGUgZ3JhbnQgaGVhZCBpcyBleHBvcnRlZCBpbgorCQkiY3ljbGU6Ynl0ZXMiIGZvcm1hdC4KK1VzZXJzOgkJeGZzdGVzdHMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZ3BpbyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZ3BpbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWZmYTJkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1ncGlvCkBAIC0wLDAgKzEsMjggQEAKK1doYXQ6CQkvc3lzL2NsYXNzL2dwaW8vCitEYXRlOgkJSnVseSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjcKK0NvbnRhY3Q6CURhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGVzY3JpcHRpb246CisKKyAgQXMgYSBLY29uZmlnIG9wdGlvbiwgaW5kaXZpZHVhbCBHUElPIHNpZ25hbHMgbWF5IGJlIGFjY2Vzc2VkIGZyb20KKyAgdXNlcnNwYWNlLiAgR1BJT3MgYXJlIG9ubHkgbWFkZSBhdmFpbGFibGUgdG8gdXNlcnNwYWNlIGJ5IGFuIGV4cGxpY2l0CisgICJleHBvcnQiIG9wZXJhdGlvbi4gIElmIGEgZ2l2ZW4gR1BJTyBpcyBub3QgY2xhaW1lZCBmb3IgdXNlIGJ5CisgIGtlcm5lbCBjb2RlLCBpdCBtYXkgYmUgZXhwb3J0ZWQgYnkgdXNlcnNwYWNlIChhbmQgdW5leHBvcnRlZCBsYXRlcikuCisgIEtlcm5lbCBjb2RlIG1heSBleHBvcnQgaXQgZm9yIGNvbXBsZXRlIG9yIHBhcnRpYWwgYWNjZXNzLgorCisgIEdQSU9zIGFyZSBpZGVudGlmaWVkIGFzIHRoZXkgYXJlIGluc2lkZSB0aGUga2VybmVsLCB1c2luZyBpbnRlZ2VycyBpbgorICB0aGUgcmFuZ2UgMC4uSU5UX01BWC4gIFNlZSBEb2N1bWVudGF0aW9uL2dwaW8udHh0IGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisgICAgL3N5cy9jbGFzcy9ncGlvCisJL2V4cG9ydCAuLi4gYXNrcyB0aGUga2VybmVsIHRvIGV4cG9ydCBhIEdQSU8gdG8gdXNlcnNwYWNlCisJL3VuZXhwb3J0IC4uLiB0byByZXR1cm4gYSBHUElPIHRvIHRoZSBrZXJuZWwKKwkvZ3Bpb04gLi4uIGZvciBlYWNoIGV4cG9ydGVkIEdQSU8gI04gT1IKKwkvPExJTkUtTkFNRT4gLi4uIGZvciBhIHByb3Blcmx5IG5hbWVkIEdQSU8gbGluZQorCSAgICAvdmFsdWUgLi4uIGFsd2F5cyByZWFkYWJsZSwgd3JpdGVzIGZhaWwgZm9yIGlucHV0IEdQSU9zCisJICAgIC9kaXJlY3Rpb24gLi4uIHIvdyBhczogaW4sIG91dCAoZGVmYXVsdCBsb3cpOyB3cml0ZTogaGlnaCwgbG93CisJICAgIC9lZGdlIC4uLiByL3cgYXM6IG5vbmUsIGZhbGxpbmcsIHJpc2luZywgYm90aAorCS9ncGlvY2hpcE4gLi4uIGZvciBlYWNoIGdwaW9jaGlwOyAjTiBpcyBpdHMgZmlyc3QgR1BJTworCSAgICAvYmFzZSAuLi4gKHIvbykgc2FtZSBhcyBOCisJICAgIC9sYWJlbCAuLi4gKHIvbykgZGVzY3JpcHRpdmUsIG5vdCBuZWNlc3NhcmlseSB1bmlxdWUKKwkgICAgL25ncGlvIC4uLiAoci9vKSBudW1iZXIgb2YgR1BJT3M7IG51bWJlcmVkIE4gdG8gTiArIChuZ3BpbyAtIDEpCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtaHlwZXJ2aXNvci1wbXUgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWh5cGVydmlzb3ItcG11Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyNGZhYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWh5cGVydmlzb3ItcG11CkBAIC0wLDAgKzEsMjMgQEAKK1doYXQ6CQkvc3lzL2h5cGVydmlzb3IvcG11L3BtdV9tb2RlCitEYXRlOgkJQXVndXN0IDIwMTUKK0tlcm5lbFZlcnNpb246CTQuMworQ29udGFjdDoJQm9yaXMgT3N0cm92c2t5IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlEZXNjcmliZXMgbW9kZSB0aGF0IFhlbidzIHBlcmZvcm1hbmNlLW1vbml0b3JpbmcgdW5pdCAoUE1VKQorCQl1c2VzLiBBY2NlcHRlZCB2YWx1ZXMgYXJlCisJCQkib2ZmIiAgLS0gUE1VIGlzIGRpc2FibGVkCisJCQkic2VsZiIgLS0gVGhlIGd1ZXN0IGNhbiBwcm9maWxlIGl0c2VsZgorCQkJImh2IiAgIC0tIFRoZSBndWVzdCBjYW4gcHJvZmlsZSBpdHNlbGYgYW5kLCBpZiBpdCBpcworCQkJCSAgcHJpdmlsZWdlZCAoZS5nLiBkb20wKSwgdGhlIGh5cGVydmlzb3IKKwkJCSJhbGwiIC0tICBUaGUgZ3Vlc3QgY2FuIHByb2ZpbGUgaXRzZWxmLCB0aGUgaHlwZXJ2aXNvcgorCQkJCSAgYW5kIGFsbCBvdGhlciBndWVzdHMuIE9ubHkgYXZhaWxhYmxlIHRvCisJCQkJICBwcml2aWxlZ2VkIGd1ZXN0cy4KKworV2hhdDogICAgICAgICAgIC9zeXMvaHlwZXJ2aXNvci9wbXUvcG11X2ZlYXR1cmVzCitEYXRlOiAgICAgICAgICAgQXVndXN0IDIwMTUKK0tlcm5lbFZlcnNpb246ICA0LjMKK0NvbnRhY3Q6ICAgICAgICBCb3JpcyBPc3Ryb3Zza3kgPGJvcmlzLm9zdHJvdnNreUBvcmFjbGUuY29tPgorRGVzY3JpcHRpb246CisJCURlc2NyaWJlcyBYZW4gUE1VIGZlYXR1cmVzIChhcyBhbiBpbnRlZ2VyKS4gQSBzZXQgYml0IGluZGljYXRlcworCQl0aGF0IHRoZSBjb3JyZXNwb25kaW5nIGZlYXR1cmUgaXMgZW5hYmxlZC4gU2VlCisJCWluY2x1ZGUveGVuL2ludGVyZmFjZS94ZW5wbXUuaCBmb3IgYXZhaWxhYmxlIGZlYXR1cmVzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWkyYy1ibXAwODUgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWkyYy1ibXAwODUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg1OTYyYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtaTJjLWJtcDA4NQpAQCAtMCwwICsxLDMxIEBACitXaGF0OgkJL3N5cy9idXMvaTJjL2RldmljZXMvPGJ1c251bT4tPGRldmFkZHI+L3ByZXNzdXJlMF9pbnB1dAorRGF0ZToJCUp1bmUgMjAxMAorQ29udGFjdDoJQ2hyaXN0b3BoIE1haXIgPGNocmlzdG9waC5tYWlyQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOglTdGFydCBhIHByZXNzdXJlIG1lYXN1cmVtZW50IGFuZCByZWFkIHRoZSByZXN1bHQuIFZhbHVlcworCQlyZXByZXNlbnQgdGhlIGFtYmllbnQgYWlyIHByZXNzdXJlIGluIHBhc2NhbCAoMC4wMSBtaWxsaWJhcikuCisKKwkJUmVhZGluZzogcmV0dXJucyB0aGUgY3VycmVudCBhaXIgcHJlc3N1cmUuCisKKworV2hhdDoJCS9zeXMvYnVzL2kyYy9kZXZpY2VzLzxidXNudW0+LTxkZXZhZGRyPi90ZW1wMF9pbnB1dAorRGF0ZToJCUp1bmUgMjAxMAorQ29udGFjdDoJQ2hyaXN0b3BoIE1haXIgPGNocmlzdG9waC5tYWlyQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOglNZWFzdXJlIHRoZSBhbWJpZW50IHRlbXBlcmF0dXJlLiBUaGUgcmV0dXJuZWQgdmFsdWUgcmVwcmVzZW50cworCQl0aGUgYW1iaWVudCB0ZW1wZXJhdHVyZSBpbiB1bml0cyBvZiAwLjEgZGVncmVlIGNlbHNpdXMuCisKKwkJUmVhZGluZzogcmV0dXJucyB0aGUgY3VycmVudCB0ZW1wZXJhdHVyZS4KKworCitXaGF0OgkJL3N5cy9idXMvaTJjL2RldmljZXMvPGJ1c251bT4tPGRldmFkZHI+L292ZXJzYW1wbGluZworRGF0ZToJCUp1bmUgMjAxMAorQ29udGFjdDoJQ2hyaXN0b3BoIE1haXIgPGNocmlzdG9waC5tYWlyQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOglUZWxsIHRoZSBibXAwODUgdG8gdXNlIG1vcmUgc2FtcGxlcyB0byBjYWxjdWxhdGUgYSBwcmVzc3VyZQorCQl2YWx1ZS4gV2hlbiB3cml0aW5nIHRvIHRoaXMgZmlsZSB0aGUgY2hpcCB3aWxsIHVzZSAyXnggc2FtcGxlcworCQl0byBjYWxjdWxhdGUgdGhlIG5leHQgcHJlc3N1cmUgdmFsdWUgd2l0aCB4IGJlaW5nIHRoZSB2YWx1ZQorCQl3cml0dGVuLiBVc2luZyB0aGlzIGZlYXR1cmUgd2lsbCBkZWNyZWFzZSBSTVMgbm9pc2UgYW5kCisJCWluY3JlYXNlIHRoZSBtZWFzdXJlbWVudCB0aW1lLgorCisJCVJlYWRpbmc6IHJldHVybnMgdGhlIGN1cnJlbnQgb3ZlcnNhbXBsaW5nIHNldHRpbmcuCisKKwkJV3JpdGluZzogc2V0cyBhIG5ldyBvdmVyc2FtcGxpbmcgc2V0dGluZy4KKwkJQWNjZXB0ZWQgdmFsdWVzOiAwLi4zLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1pYmZ0IGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1pYmZ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhYzM5MzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWliZnQKQEAgLTAsMCArMSwyMyBAQAorV2hhdDoJCS9zeXMvZmlybXdhcmUvaWJmdC9pbml0aWF0b3IKK0RhdGU6CQlOb3ZlbWJlciAyMDA3CitDb250YWN0OglLb25yYWQgUnplc3p1dGVrIDxrZXR1enNlenJAZGFybm9rLm9yZz4KK0Rlc2NyaXB0aW9uOglUaGUgL3N5cy9maXJtd2FyZS9pYmZ0L2luaXRpYXRvciBkaXJlY3Rvcnkgd2lsbCBjb250YWluCisJCWZpbGVzIHRoYXQgZXhwb3NlIHRoZSBpU0NTSSBCb290IEZpcm13YXJlIFRhYmxlIGluaXRpYXRvciBkYXRhLgorCQlVc3VhbGx5IHRoaXMgY29udGFpbnMgdGhlIEluaXRpYXRvciBuYW1lLgorCitXaGF0OgkJL3N5cy9maXJtd2FyZS9pYmZ0L3RhcmdldFgKK0RhdGU6CQlOb3ZlbWJlciAyMDA3CitDb250YWN0OglLb25yYWQgUnplc3p1dGVrIDxrZXR1enNlenJAZGFybm9rLm9yZz4KK0Rlc2NyaXB0aW9uOglUaGUgL3N5cy9maXJtd2FyZS9pYmZ0L3RhcmdldFggZGlyZWN0b3J5IHdpbGwgY29udGFpbgorCQlmaWxlcyB0aGF0IGV4cG9zZSB0aGUgaVNDU0kgQm9vdCBGaXJtd2FyZSBUYWJsZSB0YXJnZXQgZGF0YS4KKwkJVXN1YWxseSB0aGlzIGNvbnRhaW5zIHRoZSB0YXJnZXQncyBJUCBhZGRyZXNzLCBib290IExVTiwKKwkJdGFyZ2V0IG5hbWUsIGFuZCB3aGF0IE5JQyBpdCBpcyBhc3NvY2lhdGVkIHdpdGguIEl0IGNhbiBhbHNvCisJCWNvbnRhaW4gdGhlIENIQVAgbmFtZSAoYW5kIHBhc3N3b3JkKSwgdGhlIHJldmVyc2UgQ0hBUAorCQluYW1lIChhbmQgcGFzc3dvcmQpCisKK1doYXQ6CQkvc3lzL2Zpcm13YXJlL2liZnQvZXRoZXJuZXRYCitEYXRlOgkJTm92ZW1iZXIgMjAwNworQ29udGFjdDoJS29ucmFkIFJ6ZXN6dXRlayA8a2V0dXpzZXpyQGRhcm5vay5vcmc+CitEZXNjcmlwdGlvbjoJVGhlIC9zeXMvZmlybXdhcmUvaWJmdC9ldGhlcm5ldFggZGlyZWN0b3J5IHdpbGwgY29udGFpbgorCQlmaWxlcyB0aGF0IGV4cG9zZSB0aGUgaVNDU0kgQm9vdCBGaXJtd2FyZSBUYWJsZSBOSUMgZGF0YS4KKwkJVXN1YWxseSB0aGlzIGNvbnRhaW5zIHRoZSBJUCBhZGRyZXNzLCBNQUMsIGFuZCBnYXRld2F5IG9mIHRoZSBOSUMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1ib290X3BhcmFtcyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLWJvb3RfcGFyYW1zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjYTM4Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1ib290X3BhcmFtcwpAQCAtMCwwICsxLDM4IEBACitXaGF0OgkJL3N5cy9rZXJuZWwvYm9vdF9wYXJhbXMKK0RhdGU6CQlEZWNlbWJlciAyMDEzCitDb250YWN0OglEYXZlIFlvdW5nIDxkeW91bmdAcmVkaGF0LmNvbT4KK0Rlc2NyaXB0aW9uOglUaGUgL3N5cy9rZXJuZWwvYm9vdF9wYXJhbXMgZGlyZWN0b3J5IGNvbnRhaW5zIHR3bworCQlmaWxlczogImRhdGEiIGFuZCAidmVyc2lvbiIgYW5kIG9uZSBzdWJkaXJlY3RvcnkgInNldHVwX2RhdGEiLgorCQlJdCBpcyB1c2VkIHRvIGV4cG9ydCB0aGUga2VybmVsIGJvb3QgcGFyYW1ldGVycyBvZiBhbiB4ODYKKwkJcGxhdGZvcm0gdG8gdXNlcnNwYWNlIGZvciBrZXhlYyBhbmQgZGVidWdnaW5nIHB1cnBvc2UuCisKKwkJSWYgdGhlcmUncyBubyBzZXR1cF9kYXRhIGluIGJvb3RfcGFyYW1zIHRoZSBzdWJkaXJlY3Rvcnkgd2lsbAorCQlub3QgYmUgY3JlYXRlZC4KKworCQkiZGF0YSIgZmlsZSBpcyB0aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHN0cnVjdCBib290X3BhcmFtcy4KKworCQkidmVyc2lvbiIgZmlsZSBpcyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGJvb3QKKwkJcHJvdG9jb2wgdmVyc2lvbi4KKworCQkic2V0dXBfZGF0YSIgc3ViZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBzZXR1cF9kYXRhIGRhdGEKKwkJc3RydWN0dXJlIGluIGJvb3RfcGFyYW1zLiBzZXR1cF9kYXRhIGlzIG1haW50YWluZWQgaW4ga2VybmVsCisJCWFzIGEgbGluayBsaXN0LiBJbiAic2V0dXBfZGF0YSIgc3ViZGlyZWN0b3J5IHRoZXJlJ3Mgb25lCisJCXN1YmRpcmVjdG9yeSBmb3IgZWFjaCBsaW5rIGxpc3Qgbm9kZSBuYW1lZCB3aXRoIHRoZSBudW1iZXIKKwkJb2YgdGhlIGxpc3Qgbm9kZXMuIFRoZSBsaXN0IG5vZGUgc3ViZGlyZWN0b3J5IGNvbnRhaW5zIHR3bworCQlmaWxlcyAidHlwZSIgYW5kICJkYXRhIi4gInR5cGUiIGZpbGUgaXMgdGhlIHN0cmluZworCQlyZXByZXNlbnRhdGlvbiBvZiBzZXR1cF9kYXRhIHR5cGUuICJkYXRhIiBmaWxlIGlzIHRoZSBiaW5hcnkKKwkJcmVwcmVzZW50YXRpb24gb2Ygc2V0dXBfZGF0YSBwYXlsb2FkLgorCisJCVRoZSB3aG9sZSBib290X3BhcmFtcyBkaXJlY3Rvcnkgc3RydWN0dXJlIGlzIGxpa2UgYmVsb3c6CisJCS9zeXMva2VybmVsL2Jvb3RfcGFyYW1zCisJCXxfXyBkYXRhCisJCXxfXyBzZXR1cF9kYXRhCisJCXwgICB8X18gMAorCQl8ICAgfCAgIHxfXyBkYXRhCisJCXwgICB8ICAgfF9fIHR5cGUKKwkJfCAgIHxfXyAxCisJCXwgICAgICAgfF9fIGRhdGEKKwkJfCAgICAgICB8X18gdHlwZQorCQl8X18gdmVyc2lvbgorCitVc2VyczoJCUtleGVjCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1mc2NhcHMgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1mc2NhcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBhMzAzMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLWZzY2FwcwpAQCAtMCwwICsxLDggQEAKK1doYXQ6CQkvc3lzL2tlcm5lbC9mc2NhcHMKK0RhdGU6CQlGZWJydWFyeSAyMDExCitLZXJuZWxWZXJzaW9uOgkyLjYuMzgKK0NvbnRhY3Q6CUx1ZHdpZyBOdXNzZWwgPGx1ZHdpZy5udXNzZWxAc3VzZS5kZT4KK0Rlc2NyaXB0aW9uCisJCVNob3dzIHdoZXRoZXIgZmlsZSBzeXN0ZW0gY2FwYWJpbGl0aWVzIGFyZSBob25vcmVkCisJCXdoZW4gZXhlY3V0aW5nIGEgYmluYXJ5CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLWlvbW11X2dyb3VwcyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLWlvbW11X2dyb3VwcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjMxNTU2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtaW9tbXVfZ3JvdXBzCkBAIC0wLDAgKzEsMTQgQEAKK1doYXQ6CQkvc3lzL2tlcm5lbC9pb21tdV9ncm91cHMvCitEYXRlOgkJTWF5IDIwMTIKK0tlcm5lbFZlcnNpb246CXYzLjUKK0NvbnRhY3Q6CUFsZXggV2lsbGlhbXNvbiA8YWxleC53aWxsaWFtc29uQHJlZGhhdC5jb20+CitEZXNjcmlwdGlvbjoJL3N5cy9rZXJuZWwvaW9tbXVfZ3JvdXBzLyBjb250YWlucyBhIG51bWJlciBvZiBzdWItCisJCWRpcmVjdG9yaWVzLCBlYWNoIHJlcHJlc2VudGluZyBhbiBJT01NVSBncm91cC4gIFRoZQorCQluYW1lIG9mIHRoZSBzdWItZGlyZWN0b3J5IG1hdGNoZXMgdGhlIGlvbW11X2dyb3VwX2lkKCkKKwkJZm9yIHRoZSBncm91cCwgd2hpY2ggaXMgYW4gaW50ZWdlciB2YWx1ZS4gIFdpdGhpbiBlYWNoCisJCXN1YmRpcmVjdG9yeSBpcyBhbm90aGVyIGRpcmVjdG9yeSBuYW1lZCAiZGV2aWNlcyIgd2l0aAorCQlsaW5rcyB0byB0aGUgc3lzZnMgZGV2aWNlcyBjb250YWluZWQgaW4gdGhpcyBncm91cC4KKwkJVGhlIGdyb3VwIGRpcmVjdG9yeSBhbHNvIG9wdGlvbmFsbHkgY29udGFpbnMgYSAibmFtZSIKKwkJZmlsZSBpZiB0aGUgSU9NTVUgZHJpdmVyIGhhcyBjaG9zZW4gdG8gcmVnaXN0ZXIgYSBtb3JlCisJCWNvbW1vbiBuYW1lIGZvciB0aGUgZ3JvdXAuCitVc2VyczoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLWxpdmVwYXRjaCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLWxpdmVwYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmY0MmE4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbGl2ZXBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK1doYXQ6CQkvc3lzL2tlcm5lbC9saXZlcGF0Y2gKK0RhdGU6CQlOb3YgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xOS4wCitDb250YWN0OglsaXZlLXBhdGNoaW5nQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUludGVyZmFjZSBmb3Iga2VybmVsIGxpdmUgcGF0Y2hpbmcKKworCQlUaGUgL3N5cy9rZXJuZWwvbGl2ZXBhdGNoIGRpcmVjdG9yeSBjb250YWlucyBzdWJkaXJlY3RvcmllcyBmb3IKKwkJZWFjaCBsb2FkZWQgbGl2ZSBwYXRjaCBtb2R1bGUuCisKK1doYXQ6CQkvc3lzL2tlcm5lbC9saXZlcGF0Y2gvPHBhdGNoPgorRGF0ZToJCU5vdiAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE5LjAKK0NvbnRhY3Q6CWxpdmUtcGF0Y2hpbmdAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJVGhlIHBhdGNoIGRpcmVjdG9yeSBjb250YWlucyBzdWJkaXJlY3RvcmllcyBmb3IgZWFjaCBrZXJuZWwKKwkJb2JqZWN0ICh2bWxpbnV4IG9yIGEgbW9kdWxlKSBpbiB3aGljaCBpdCBwYXRjaGVkIGZ1bmN0aW9ucy4KKworV2hhdDoJCS9zeXMva2VybmVsL2xpdmVwYXRjaC88cGF0Y2g+L2VuYWJsZWQKK0RhdGU6CQlOb3YgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xOS4wCitDb250YWN0OglsaXZlLXBhdGNoaW5nQHZnZXIua2VybmVsLm9yZworRGVzY3JpcHRpb246CisJCUEgd3JpdGFibGUgYXR0cmlidXRlIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHBhdGNoZWQKKwkJY29kZSBpcyBjdXJyZW50bHkgYXBwbGllZC4gIFdyaXRpbmcgMCB3aWxsIGRpc2FibGUgdGhlIHBhdGNoCisJCXdoaWxlIHdyaXRpbmcgMSB3aWxsIHJlLWVuYWJsZSB0aGUgcGF0Y2guCisKK1doYXQ6CQkvc3lzL2tlcm5lbC9saXZlcGF0Y2gvPHBhdGNoPi88b2JqZWN0PgorRGF0ZToJCU5vdiAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE5LjAKK0NvbnRhY3Q6CWxpdmUtcGF0Y2hpbmdAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJVGhlIG9iamVjdCBkaXJlY3RvcnkgY29udGFpbnMgc3ViZGlyZWN0b3JpZXMgZm9yIGVhY2ggZnVuY3Rpb24KKwkJdGhhdCBpcyBwYXRjaGVkIHdpdGhpbiB0aGUgb2JqZWN0LgorCitXaGF0OgkJL3N5cy9rZXJuZWwvbGl2ZXBhdGNoLzxwYXRjaD4vPG9iamVjdD4vPGZ1bmN0aW9uPgorRGF0ZToJCU5vdiAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE5LjAKK0NvbnRhY3Q6CWxpdmUtcGF0Y2hpbmdAdmdlci5rZXJuZWwub3JnCitEZXNjcmlwdGlvbjoKKwkJVGhlIGZ1bmN0aW9uIGRpcmVjdG9yeSBjb250YWlucyBhdHRyaWJ1dGVzIHJlZ2FyZGluZyB0aGUKKwkJcHJvcGVydGllcyBhbmQgc3RhdGUgb2YgdGhlIHBhdGNoZWQgZnVuY3Rpb24uCisKKwkJVGhlcmUgYXJlIGN1cnJlbnRseSBubyBzdWNoIGF0dHJpYnV0ZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1tbSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5MGQ1MjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1tbQpAQCAtMCwwICsxLDYgQEAKK1doYXQ6CQkvc3lzL2tlcm5lbC9tbQorRGF0ZToJCUp1bHkgMjAwOAorQ29udGFjdDoJTmlzaGFudGggQXJhdmFtdWRhbiA8bmFjY0B1cy5pYm0uY29tPiwgVk0gbWFpbnRhaW5lcnMKK0Rlc2NyaXB0aW9uOgorCQkvc3lzL2tlcm5lbC9tbS8gc2hvdWxkIGNvbnRhaW4gYW55IGFuZCBhbGwgVk0KKwkJcmVsYXRlZCBpbmZvcm1hdGlvbiBpbiAvc3lzL2tlcm5lbC8uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1tbS1odWdlcGFnZXMgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1tbS1odWdlcGFnZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIxYzAwNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWh1Z2VwYWdlcwpAQCAtMCwwICsxLDE1IEBACitXaGF0OgkJL3N5cy9rZXJuZWwvbW0vaHVnZXBhZ2VzLworRGF0ZToJCUp1bmUgMjAwOAorQ29udGFjdDoJTmlzaGFudGggQXJhdmFtdWRhbiA8bmFjY0B1cy5pYm0uY29tPiwgaHVnZXRsYiBtYWludGFpbmVycworRGVzY3JpcHRpb246CisJCS9zeXMva2VybmVsL21tL2h1Z2VwYWdlcy8gY29udGFpbnMgYSBudW1iZXIgb2Ygc3ViZGlyZWN0b3JpZXMKKwkJb2YgdGhlIGZvcm0gaHVnZXBhZ2VzLTxzaXplPmtCLCB3aGVyZSA8c2l6ZT4gaXMgdGhlIHBhZ2Ugc2l6ZQorCQlvZiB0aGUgaHVnZXBhZ2VzIHN1cHBvcnRlZCBieSB0aGUga2VybmVsL0NQVSBjb21iaW5hdGlvbi4KKworCQlVbmRlciB0aGVzZSBkaXJlY3RvcmllcyBhcmUgYSBudW1iZXIgb2YgZmlsZXM6CisJCQlucl9odWdlcGFnZXMKKwkJCW5yX292ZXJjb21taXRfaHVnZXBhZ2VzCisJCQlmcmVlX2h1Z2VwYWdlcworCQkJc3VycGx1c19odWdlcGFnZXMKKwkJCXJlc3ZfaHVnZXBhZ2VzCisJCVNlZSBEb2N1bWVudGF0aW9uL3ZtL2h1Z2V0bGJwYWdlLnR4dCBmb3IgZGV0YWlscy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWtzbSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWtzbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2U2NTNlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0ta3NtCkBAIC0wLDAgKzEsNTIgQEAKK1doYXQ6CQkvc3lzL2tlcm5lbC9tbS9rc20KK0RhdGU6CQlTZXB0ZW1iZXIgMjAwOQorS2VybmVsVmVyc2lvbjoJMi42LjMyCitDb250YWN0OglMaW51eCBtZW1vcnkgbWFuYWdlbWVudCBtYWlsaW5nIGxpc3QgPGxpbnV4LW1tQGt2YWNrLm9yZz4KK0Rlc2NyaXB0aW9uOglJbnRlcmZhY2UgZm9yIEtlcm5lbCBTYW1lcGFnZSBNZXJnaW5nIChLU00pCisKK1doYXQ6CQkvc3lzL2tlcm5lbC9tbS9rc20vZnVsbF9zY2FucworV2hhdDoJCS9zeXMva2VybmVsL21tL2tzbS9wYWdlc19zaGFyZWQKK1doYXQ6CQkvc3lzL2tlcm5lbC9tbS9rc20vcGFnZXNfc2hhcmluZworV2hhdDoJCS9zeXMva2VybmVsL21tL2tzbS9wYWdlc190b19zY2FuCitXaGF0OgkJL3N5cy9rZXJuZWwvbW0va3NtL3BhZ2VzX3Vuc2hhcmVkCitXaGF0OgkJL3N5cy9rZXJuZWwvbW0va3NtL3BhZ2VzX3ZvbGF0aWxlCitXaGF0OgkJL3N5cy9rZXJuZWwvbW0va3NtL3J1bgorV2hhdDoJCS9zeXMva2VybmVsL21tL2tzbS9zbGVlcF9taWxsaXNlY3MKK0RhdGU6CQlTZXB0ZW1iZXIgMjAwOQorQ29udGFjdDoJTGludXggbWVtb3J5IG1hbmFnZW1lbnQgbWFpbGluZyBsaXN0IDxsaW51eC1tbUBrdmFjay5vcmc+CitEZXNjcmlwdGlvbjoJS2VybmVsIFNhbWVwYWdlIE1lcmdpbmcgZGFlbW9uIHN5c2ZzIGludGVyZmFjZQorCisJCWZ1bGxfc2NhbnM6IGhvdyBtYW55IHRpbWVzIGFsbCBtZXJnZWFibGUgYXJlYXMgaGF2ZSBiZWVuCisJCXNjYW5uZWQuCisKKwkJcGFnZXNfc2hhcmVkOiBob3cgbWFueSBzaGFyZWQgcGFnZXMgYXJlIGJlaW5nIHVzZWQuCisKKwkJcGFnZXNfc2hhcmluZzogaG93IG1hbnkgbW9yZSBzaXRlcyBhcmUgc2hhcmluZyB0aGVtIGkuZS4gaG93CisJCW11Y2ggc2F2ZWQuCisKKwkJcGFnZXNfdG9fc2NhbjogaG93IG1hbnkgcHJlc2VudCBwYWdlcyB0byBzY2FuIGJlZm9yZSBrc21kIGdvZXMKKwkJdG8gc2xlZXAuCisKKwkJcGFnZXNfdW5zaGFyZWQ6IGhvdyBtYW55IHBhZ2VzIHVuaXF1ZSBidXQgcmVwZWF0ZWRseSBjaGVja2VkCisJCWZvciBtZXJnaW5nLgorCisJCXBhZ2VzX3ZvbGF0aWxlOiBob3cgbWFueSBwYWdlcyBjaGFuZ2luZyB0b28gZmFzdCB0byBiZSBwbGFjZWQKKwkJaW4gYSB0cmVlLgorCisJCXJ1bjogd3JpdGUgMCB0byBkaXNhYmxlIGtzbSwgcmVhZCAwIHdoaWxlIGtzbSBpcyBkaXNhYmxlZC4KKwkJCXdyaXRlIDEgdG8gcnVuIGtzbSwgcmVhZCAxIHdoaWxlIGtzbSBpcyBydW5uaW5nLgorCQkJd3JpdGUgMiB0byBkaXNhYmxlIGtzbSBhbmQgdW5tZXJnZSBhbGwgaXRzIHBhZ2VzLgorCisJCXNsZWVwX21pbGxpc2VjczogaG93IG1hbnkgbWlsbGlzZWNvbmRzIGtzbSBzaG91bGQgc2xlZXAgYmV0d2VlbgorCQlzY2Fucy4KKworCQlTZWUgRG9jdW1lbnRhdGlvbi92bS9rc20udHh0IGZvciBtb3JlIGluZm9ybWF0aW9uLgorCitXaGF0OgkJL3N5cy9rZXJuZWwvbW0va3NtL21lcmdlX2Fjcm9zc19ub2RlcworRGF0ZToJCUphbnVhcnkgMjAxMworS2VybmVsVmVyc2lvbjoJMy45CitDb250YWN0OglMaW51eCBtZW1vcnkgbWFuYWdlbWVudCBtYWlsaW5nIGxpc3QgPGxpbnV4LW1tQGt2YWNrLm9yZz4KK0Rlc2NyaXB0aW9uOglDb250cm9sIG1lcmdpbmcgcGFnZXMgYWNyb3NzIGRpZmZlcmVudCBOVU1BIG5vZGVzLgorCisJCVdoZW4gaXQgaXMgc2V0IHRvIDAgb25seSBwYWdlcyBmcm9tIHRoZSBzYW1lIG5vZGUgYXJlIG1lcmdlZCwKKwkJb3RoZXJ3aXNlIHBhZ2VzIGZyb20gYWxsIG5vZGVzIGNhbiBiZSBtZXJnZWQgdG9nZXRoZXIgKGRlZmF1bHQpLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtc2xhYiBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLXNsYWIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFiZDZjYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLXNsYWIKQEAgLTAsMCArMSw0OTAgQEAKK1doYXQ6CQkvc3lzL2tlcm5lbC9zbGFiCitEYXRlOgkJTWF5IDIwMDcKK0tlcm5lbFZlcnNpb246CTIuNi4yMgorQ29udGFjdDoJUGVra2EgRW5iZXJnIDxwZW5iZXJnQGNzLmhlbHNpbmtpLmZpPiwKKwkJQ2hyaXN0b3BoIExhbWV0ZXIgPGNsQGxpbnV4LWZvdW5kYXRpb24ub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2tlcm5lbC9zbGFiIGRpcmVjdG9yeSBjb250YWlucyBhIHNuYXBzaG90IG9mIHRoZQorCQlpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgU0xVQiBhbGxvY2F0b3IgZm9yIGVhY2ggY2FjaGUuICBDZXJ0YWluCisJCWZpbGVzIG1heSBiZSBtb2RpZmllZCB0byBjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIHRoZSBjYWNoZSAoYW5kCisJCWFueSBjYWNoZSBpdCBhbGlhc2VzLCBpZiBhbnkpLgorVXNlcnM6CQlrZXJuZWwgbWVtb3J5IHR1bmluZyB0b29scworCitXaGF0OgkJL3N5cy9rZXJuZWwvc2xhYi9jYWNoZS9hbGlhc2VzCitEYXRlOgkJTWF5IDIwMDcKK0tlcm5lbFZlcnNpb246CTIuNi4yMgorQ29udGFjdDoJUGVra2EgRW5iZXJnIDxwZW5iZXJnQGNzLmhlbHNpbmtpLmZpPiwKKwkJQ2hyaXN0b3BoIExhbWV0ZXIgPGNsQGxpbnV4LWZvdW5kYXRpb24ub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSBhbGlhc2VzIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBzcGVjaWZpZXMgaG93IG1hbnkgY2FjaGVzCisJCWhhdmUgbWVyZ2VkIGludG8gdGhpcyBjYWNoZS4KKworV2hhdDoJCS9zeXMva2VybmVsL3NsYWIvY2FjaGUvYWxpZ24KK0RhdGU6CQlNYXkgMjAwNworS2VybmVsVmVyc2lvbjoJMi42LjIyCitDb250YWN0OglQZWtrYSBFbmJlcmcgPHBlbmJlcmdAY3MuaGVsc2lua2kuZmk+LAorCQlDaHJpc3RvcGggTGFtZXRlciA8Y2xAbGludXgtZm91bmRhdGlvbi5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIGFsaWduIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBzcGVjaWZpZXMgdGhlIGNhY2hlJ3Mgb2JqZWN0CisJCWFsaWdubWVudCBpbiBieXRlcy4KKworV2hhdDoJCS9zeXMva2VybmVsL3NsYWIvY2FjaGUvYWxsb2NfY2FsbHMKK0RhdGU6CQlNYXkgMjAwNworS2VybmVsVmVyc2lvbjoJMi42LjIyCitDb250YWN0OglQZWtrYSBFbmJlcmcgPHBlbmJlcmdAY3MuaGVsc2lua2kuZmk+LAorCQlDaHJpc3RvcGggTGFtZXRlciA8Y2xAbGludXgtZm91bmRhdGlvbi5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIGFsbG9jX2NhbGxzIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBsaXN0cyB0aGUga2VybmVsIGNvZGUKKwkJbG9jYXRpb25zIGZyb20gd2hpY2ggYWxsb2NhdGlvbnMgZm9yIHRoaXMgY2FjaGUgd2VyZSBwZXJmb3JtZWQuCisJCVRoZSBhbGxvY19jYWxscyBmaWxlIG9ubHkgY29udGFpbnMgaW5mb3JtYXRpb24gaWYgZGVidWdnaW5nIGlzCisJCWVuYWJsZWQgZm9yIHRoYXQgY2FjaGUgKHNlZSBEb2N1bWVudGF0aW9uL3ZtL3NsdWIudHh0KS4KKworV2hhdDoJCS9zeXMva2VybmVsL3NsYWIvY2FjaGUvYWxsb2NfZmFzdHBhdGgKK0RhdGU6CQlGZWJydWFyeSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjUKK0NvbnRhY3Q6CVBla2thIEVuYmVyZyA8cGVuYmVyZ0Bjcy5oZWxzaW5raS5maT4sCisJCUNocmlzdG9waCBMYW1ldGVyIDxjbEBsaW51eC1mb3VuZGF0aW9uLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgYWxsb2NfZmFzdHBhdGggZmlsZSBzaG93cyBob3cgbWFueSBvYmplY3RzIGhhdmUgYmVlbgorCQlhbGxvY2F0ZWQgdXNpbmcgdGhlIGZhc3QgcGF0aC4gIEl0IGNhbiBiZSB3cml0dGVuIHRvIGNsZWFyIHRoZQorCQljdXJyZW50IGNvdW50LgorCQlBdmFpbGFibGUgd2hlbiBDT05GSUdfU0xVQl9TVEFUUyBpcyBlbmFibGVkLgorCitXaGF0OgkJL3N5cy9rZXJuZWwvc2xhYi9jYWNoZS9hbGxvY19mcm9tX3BhcnRpYWwKK0RhdGU6CQlGZWJydWFyeSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjUKK0NvbnRhY3Q6CVBla2thIEVuYmVyZyA8cGVuYmVyZ0Bjcy5oZWxzaW5raS5maT4sCisJCUNocmlzdG9waCBMYW1ldGVyIDxjbEBsaW51eC1mb3VuZGF0aW9uLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgYWxsb2NfZnJvbV9wYXJ0aWFsIGZpbGUgc2hvd3MgaG93IG1hbnkgdGltZXMgYSBjcHUgc2xhYiBoYXMKKwkJYmVlbiBmdWxsIGFuZCBpdCBoYXMgYmVlbiByZWZpbGxlZCBieSB1c2luZyBhIHNsYWIgZnJvbSB0aGUgbGlzdAorCQlvZiBwYXJ0aWFsbHkgdXNlZCBzbGFicy4gIEl0IGNhbiBiZSB3cml0dGVuIHRvIGNsZWFyIHRoZSBjdXJyZW50CisJCWNvdW50LgorCQlBdmFpbGFibGUgd2hlbiBDT05GSUdfU0xVQl9TVEFUUyBpcyBlbmFibGVkLgorCitXaGF0OgkJL3N5cy9rZXJuZWwvc2xhYi9jYWNoZS9hbGxvY19yZWZpbGwKK0RhdGU6CQlGZWJydWFyeSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjUKK0NvbnRhY3Q6CVBla2thIEVuYmVyZyA8cGVuYmVyZ0Bjcy5oZWxzaW5raS5maT4sCisJCUNocmlzdG9waCBMYW1ldGVyIDxjbEBsaW51eC1mb3VuZGF0aW9uLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgYWxsb2NfcmVmaWxsIGZpbGUgc2hvd3MgaG93IG1hbnkgdGltZXMgdGhlIHBlci1jcHUgZnJlZWxpc3QKKwkJd2FzIGVtcHR5IGJ1dCB0aGVyZSB3ZXJlIG9iamVjdHMgYXZhaWxhYmxlIGFzIHRoZSByZXN1bHQgb2YKKwkJcmVtb3RlIGNwdSBmcmVlcy4gIEl0IGNhbiBiZSB3cml0dGVuIHRvIGNsZWFyIHRoZSBjdXJyZW50IGNvdW50LgorCQlBdmFpbGFibGUgd2hlbiBDT05GSUdfU0xVQl9TVEFUUyBpcyBlbmFibGVkLgorCitXaGF0OgkJL3N5cy9rZXJuZWwvc2xhYi9jYWNoZS9hbGxvY19zbGFiCitEYXRlOgkJRmVicnVhcnkgMjAwOAorS2VybmVsVmVyc2lvbjoJMi42LjI1CitDb250YWN0OglQZWtrYSBFbmJlcmcgPHBlbmJlcmdAY3MuaGVsc2lua2kuZmk+LAorCQlDaHJpc3RvcGggTGFtZXRlciA8Y2xAbGludXgtZm91bmRhdGlvbi5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIGFsbG9jX3NsYWIgZmlsZSBpcyBzaG93cyBob3cgbWFueSB0aW1lcyBhIG5ldyBzbGFiIGhhZCB0bworCQliZSBhbGxvY2F0ZWQgZnJvbSB0aGUgcGFnZSBhbGxvY2F0b3IuICBJdCBjYW4gYmUgd3JpdHRlbiB0bworCQljbGVhciB0aGUgY3VycmVudCBjb3VudC4KKwkJQXZhaWxhYmxlIHdoZW4gQ09ORklHX1NMVUJfU1RBVFMgaXMgZW5hYmxlZC4KKworV2hhdDoJCS9zeXMva2VybmVsL3NsYWIvY2FjaGUvYWxsb2Nfc2xvd3BhdGgKK0RhdGU6CQlGZWJydWFyeSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjUKK0NvbnRhY3Q6CVBla2thIEVuYmVyZyA8cGVuYmVyZ0Bjcy5oZWxzaW5raS5maT4sCisJCUNocmlzdG9waCBMYW1ldGVyIDxjbEBsaW51eC1mb3VuZGF0aW9uLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgYWxsb2Nfc2xvd3BhdGggZmlsZSBzaG93cyBob3cgbWFueSBvYmplY3RzIGhhdmUgYmVlbgorCQlhbGxvY2F0ZWQgdXNpbmcgdGhlIHNsb3cgcGF0aCBiZWNhdXNlIG9mIGEgcmVmaWxsIG9yCisJCWFsbG9jYXRpb24gZnJvbSBhIHBhcnRpYWwgb3IgbmV3IHNsYWIuICBJdCBjYW4gYmUgd3JpdHRlbiB0bworCQljbGVhciB0aGUgY3VycmVudCBjb3VudC4KKwkJQXZhaWxhYmxlIHdoZW4gQ09ORklHX1NMVUJfU1RBVFMgaXMgZW5hYmxlZC4KKworV2hhdDoJCS9zeXMva2VybmVsL3NsYWIvY2FjaGUvY2FjaGVfZG1hCitEYXRlOgkJTWF5IDIwMDcKK0tlcm5lbFZlcnNpb246CTIuNi4yMgorQ29udGFjdDoJUGVra2EgRW5iZXJnIDxwZW5iZXJnQGNzLmhlbHNpbmtpLmZpPiwKKwkJQ2hyaXN0b3BoIExhbWV0ZXIgPGNsQGxpbnV4LWZvdW5kYXRpb24ub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSBjYWNoZV9kbWEgZmlsZSBpcyByZWFkLW9ubHkgYW5kIHNwZWNpZmllcyB3aGV0aGVyIG9iamVjdHMKKwkJYXJlIGZyb20gWk9ORV9ETUEuCisJCUF2YWlsYWJsZSB3aGVuIENPTkZJR19aT05FX0RNQSBpcyBlbmFibGVkLgorCitXaGF0OgkJL3N5cy9rZXJuZWwvc2xhYi9jYWNoZS9jcHVfc2xhYnMKK0RhdGU6CQlNYXkgMjAwNworS2VybmVsVmVyc2lvbjoJMi42LjIyCitDb250YWN0OglQZWtrYSBFbmJlcmcgPHBlbmJlcmdAY3MuaGVsc2lua2kuZmk+LAorCQlDaHJpc3RvcGggTGFtZXRlciA8Y2xAbGludXgtZm91bmRhdGlvbi5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIGNwdV9zbGFicyBmaWxlIGlzIHJlYWQtb25seSBhbmQgZGlzcGxheXMgaG93IG1hbnkgY3B1IHNsYWJzCisJCWFyZSBhY3RpdmUgYW5kIHRoZWlyIE5VTUEgbG9jYWxpdHkuCisKK1doYXQ6CQkvc3lzL2tlcm5lbC9zbGFiL2NhY2hlL2NwdXNsYWJfZmx1c2gKK0RhdGU6CQlBcHJpbCAyMDA5CitLZXJuZWxWZXJzaW9uOgkyLjYuMzEKK0NvbnRhY3Q6CVBla2thIEVuYmVyZyA8cGVuYmVyZ0Bjcy5oZWxzaW5raS5maT4sCisJCUNocmlzdG9waCBMYW1ldGVyIDxjbEBsaW51eC1mb3VuZGF0aW9uLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgZmlsZSBjcHVzbGFiX2ZsdXNoIHNob3dzIGhvdyBtYW55IHRpbWVzIGEgY2FjaGUncyBjcHUgc2xhYnMKKwkJaGF2ZSBiZWVuIGZsdXNoZWQgYXMgdGhlIHJlc3VsdCBvZiBkZXN0cm95aW5nIG9yIHNocmlua2luZyBhCisJCWNhY2hlLCBhIGNwdSBnb2luZyBvZmZsaW5lLCBvciBhcyB0aGUgcmVzdWx0IG9mIGZvcmNpbmcgYW4KKwkJYWxsb2NhdGlvbiBmcm9tIGEgY2VydGFpbiBub2RlLiAgSXQgY2FuIGJlIHdyaXR0ZW4gdG8gY2xlYXIgdGhlCisJCWN1cnJlbnQgY291bnQuCisJCUF2YWlsYWJsZSB3aGVuIENPTkZJR19TTFVCX1NUQVRTIGlzIGVuYWJsZWQuCisKK1doYXQ6CQkvc3lzL2tlcm5lbC9zbGFiL2NhY2hlL2N0b3IKK0RhdGU6CQlNYXkgMjAwNworS2VybmVsVmVyc2lvbjoJMi42LjIyCitDb250YWN0OglQZWtrYSBFbmJlcmcgPHBlbmJlcmdAY3MuaGVsc2lua2kuZmk+LAorCQlDaHJpc3RvcGggTGFtZXRlciA8Y2xAbGludXgtZm91bmRhdGlvbi5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIGN0b3IgZmlsZSBpcyByZWFkLW9ubHkgYW5kIHNwZWNpZmllcyB0aGUgY2FjaGUncyBvYmplY3QKKwkJY29uc3RydWN0b3IgZnVuY3Rpb24sIHdoaWNoIGlzIGludm9rZWQgZm9yIGVhY2ggb2JqZWN0IHdoZW4gYQorCQluZXcgc2xhYiBpcyBhbGxvY2F0ZWQuCisKK1doYXQ6CQkvc3lzL2tlcm5lbC9zbGFiL2NhY2hlL2RlYWN0aXZhdGVfZW1wdHkKK0RhdGU6CQlGZWJydWFyeSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjUKK0NvbnRhY3Q6CVBla2thIEVuYmVyZyA8cGVuYmVyZ0Bjcy5oZWxzaW5raS5maT4sCisJCUNocmlzdG9waCBMYW1ldGVyIDxjbEBsaW51eC1mb3VuZGF0aW9uLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgZGVhY3RpdmF0ZV9lbXB0eSBmaWxlIHNob3dzIGhvdyBtYW55IHRpbWVzIGFuIGVtcHR5IGNwdSBzbGFiCisJCXdhcyBkZWFjdGl2YXRlZC4gIEl0IGNhbiBiZSB3cml0dGVuIHRvIGNsZWFyIHRoZSBjdXJyZW50IGNvdW50LgorCQlBdmFpbGFibGUgd2hlbiBDT05GSUdfU0xVQl9TVEFUUyBpcyBlbmFibGVkLgorCitXaGF0OgkJL3N5cy9rZXJuZWwvc2xhYi9jYWNoZS9kZWFjdGl2YXRlX2Z1bGwKK0RhdGU6CQlGZWJydWFyeSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjUKK0NvbnRhY3Q6CVBla2thIEVuYmVyZyA8cGVuYmVyZ0Bjcy5oZWxzaW5raS5maT4sCisJCUNocmlzdG9waCBMYW1ldGVyIDxjbEBsaW51eC1mb3VuZGF0aW9uLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgZGVhY3RpdmF0ZV9mdWxsIGZpbGUgc2hvd3MgaG93IG1hbnkgdGltZXMgYSBmdWxsIGNwdSBzbGFiCisJCXdhcyBkZWFjdGl2YXRlZC4gIEl0IGNhbiBiZSB3cml0dGVuIHRvIGNsZWFyIHRoZSBjdXJyZW50IGNvdW50LgorCQlBdmFpbGFibGUgd2hlbiBDT05GSUdfU0xVQl9TVEFUUyBpcyBlbmFibGVkLgorCitXaGF0OgkJL3N5cy9rZXJuZWwvc2xhYi9jYWNoZS9kZWFjdGl2YXRlX3JlbW90ZV9mcmVlcworRGF0ZToJCUZlYnJ1YXJ5IDIwMDgKK0tlcm5lbFZlcnNpb246CTIuNi4yNQorQ29udGFjdDoJUGVra2EgRW5iZXJnIDxwZW5iZXJnQGNzLmhlbHNpbmtpLmZpPiwKKwkJQ2hyaXN0b3BoIExhbWV0ZXIgPGNsQGxpbnV4LWZvdW5kYXRpb24ub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSBkZWFjdGl2YXRlX3JlbW90ZV9mcmVlcyBmaWxlIHNob3dzIGhvdyBtYW55IHRpbWVzIGEgY3B1IHNsYWIKKwkJaGFzIGJlZW4gZGVhY3RpdmF0ZWQgYW5kIGNvbnRhaW5lZCBmcmVlIG9iamVjdHMgdGhhdCB3ZXJlIGZyZWVkCisJCXJlbW90ZWx5LiAgSXQgY2FuIGJlIHdyaXR0ZW4gdG8gY2xlYXIgdGhlIGN1cnJlbnQgY291bnQuCisJCUF2YWlsYWJsZSB3aGVuIENPTkZJR19TTFVCX1NUQVRTIGlzIGVuYWJsZWQuCisKK1doYXQ6CQkvc3lzL2tlcm5lbC9zbGFiL2NhY2hlL2RlYWN0aXZhdGVfdG9faGVhZAorRGF0ZToJCUZlYnJ1YXJ5IDIwMDgKK0tlcm5lbFZlcnNpb246CTIuNi4yNQorQ29udGFjdDoJUGVra2EgRW5iZXJnIDxwZW5iZXJnQGNzLmhlbHNpbmtpLmZpPiwKKwkJQ2hyaXN0b3BoIExhbWV0ZXIgPGNsQGxpbnV4LWZvdW5kYXRpb24ub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSBkZWFjdGl2YXRlX3RvX2hlYWQgZmlsZSBzaG93cyBob3cgbWFueSB0aW1lcyBhIHBhcnRpYWwgY3B1CisJCXNsYWIgd2FzIGRlYWN0aXZhdGVkIGFuZCBhZGRlZCB0byB0aGUgaGVhZCBvZiBpdHMgbm9kZSdzIHBhcnRpYWwKKwkJbGlzdC4gIEl0IGNhbiBiZSB3cml0dGVuIHRvIGNsZWFyIHRoZSBjdXJyZW50IGNvdW50LgorCQlBdmFpbGFibGUgd2hlbiBDT05GSUdfU0xVQl9TVEFUUyBpcyBlbmFibGVkLgorCitXaGF0OgkJL3N5cy9rZXJuZWwvc2xhYi9jYWNoZS9kZWFjdGl2YXRlX3RvX3RhaWwKK0RhdGU6CQlGZWJydWFyeSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjUKK0NvbnRhY3Q6CVBla2thIEVuYmVyZyA8cGVuYmVyZ0Bjcy5oZWxzaW5raS5maT4sCisJCUNocmlzdG9waCBMYW1ldGVyIDxjbEBsaW51eC1mb3VuZGF0aW9uLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgZGVhY3RpdmF0ZV90b190YWlsIGZpbGUgc2hvd3MgaG93IG1hbnkgdGltZXMgYSBwYXJ0aWFsIGNwdQorCQlzbGFiIHdhcyBkZWFjdGl2YXRlZCBhbmQgYWRkZWQgdG8gdGhlIHRhaWwgb2YgaXRzIG5vZGUncyBwYXJ0aWFsCisJCWxpc3QuICBJdCBjYW4gYmUgd3JpdHRlbiB0byBjbGVhciB0aGUgY3VycmVudCBjb3VudC4KKwkJQXZhaWxhYmxlIHdoZW4gQ09ORklHX1NMVUJfU1RBVFMgaXMgZW5hYmxlZC4KKworV2hhdDoJCS9zeXMva2VybmVsL3NsYWIvY2FjaGUvZGVzdHJveV9ieV9yY3UKK0RhdGU6CQlNYXkgMjAwNworS2VybmVsVmVyc2lvbjoJMi42LjIyCitDb250YWN0OglQZWtrYSBFbmJlcmcgPHBlbmJlcmdAY3MuaGVsc2lua2kuZmk+LAorCQlDaHJpc3RvcGggTGFtZXRlciA8Y2xAbGludXgtZm91bmRhdGlvbi5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIGRlc3Ryb3lfYnlfcmN1IGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBzcGVjaWZpZXMgd2hldGhlcgorCQlzbGFicyAobm90IG9iamVjdHMpIGFyZSBmcmVlZCBieSByY3UuCisKK1doYXQ6CQkvc3lzL2tlcm5lbC9zbGFiL2NhY2hlL2ZyZWVfYWRkX3BhcnRpYWwKK0RhdGU6CQlGZWJydWFyeSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjUKK0NvbnRhY3Q6CVBla2thIEVuYmVyZyA8cGVuYmVyZ0Bjcy5oZWxzaW5raS5maT4sCisJCUNocmlzdG9waCBMYW1ldGVyIDxjbEBsaW51eC1mb3VuZGF0aW9uLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgZnJlZV9hZGRfcGFydGlhbCBmaWxlIHNob3dzIGhvdyBtYW55IHRpbWVzIGFuIG9iamVjdCBoYXMKKwkJYmVlbiBmcmVlZCBpbiBhIGZ1bGwgc2xhYiBzbyB0aGF0IGl0IGhhZCB0byBhZGRlZCB0byBpdHMgbm9kZSdzCisJCXBhcnRpYWwgbGlzdC4gIEl0IGNhbiBiZSB3cml0dGVuIHRvIGNsZWFyIHRoZSBjdXJyZW50IGNvdW50LgorCQlBdmFpbGFibGUgd2hlbiBDT05GSUdfU0xVQl9TVEFUUyBpcyBlbmFibGVkLgorCitXaGF0OgkJL3N5cy9rZXJuZWwvc2xhYi9jYWNoZS9mcmVlX2NhbGxzCitEYXRlOgkJTWF5IDIwMDcKK0tlcm5lbFZlcnNpb246CTIuNi4yMgorQ29udGFjdDoJUGVra2EgRW5iZXJnIDxwZW5iZXJnQGNzLmhlbHNpbmtpLmZpPiwKKwkJQ2hyaXN0b3BoIExhbWV0ZXIgPGNsQGxpbnV4LWZvdW5kYXRpb24ub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSBmcmVlX2NhbGxzIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBsaXN0cyB0aGUgbG9jYXRpb25zIG9mCisJCW9iamVjdCBmcmVlcyBpZiBzbGFiIGRlYnVnZ2luZyBpcyBlbmFibGVkIChzZWUKKwkJRG9jdW1lbnRhdGlvbi92bS9zbHViLnR4dCkuCisKK1doYXQ6CQkvc3lzL2tlcm5lbC9zbGFiL2NhY2hlL2ZyZWVfZmFzdHBhdGgKK0RhdGU6CQlGZWJydWFyeSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjUKK0NvbnRhY3Q6CVBla2thIEVuYmVyZyA8cGVuYmVyZ0Bjcy5oZWxzaW5raS5maT4sCisJCUNocmlzdG9waCBMYW1ldGVyIDxjbEBsaW51eC1mb3VuZGF0aW9uLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgZnJlZV9mYXN0cGF0aCBmaWxlIHNob3dzIGhvdyBtYW55IG9iamVjdHMgaGF2ZSBiZWVuIGZyZWVkCisJCXVzaW5nIHRoZSBmYXN0IHBhdGggYmVjYXVzZSBpdCB3YXMgYW4gb2JqZWN0IGZyb20gdGhlIGNwdSBzbGFiLgorCQlJdCBjYW4gYmUgd3JpdHRlbiB0byBjbGVhciB0aGUgY3VycmVudCBjb3VudC4KKwkJQXZhaWxhYmxlIHdoZW4gQ09ORklHX1NMVUJfU1RBVFMgaXMgZW5hYmxlZC4KKworV2hhdDoJCS9zeXMva2VybmVsL3NsYWIvY2FjaGUvZnJlZV9mcm96ZW4KK0RhdGU6CQlGZWJydWFyeSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjUKK0NvbnRhY3Q6CVBla2thIEVuYmVyZyA8cGVuYmVyZ0Bjcy5oZWxzaW5raS5maT4sCisJCUNocmlzdG9waCBMYW1ldGVyIDxjbEBsaW51eC1mb3VuZGF0aW9uLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgZnJlZV9mcm96ZW4gZmlsZSBzaG93cyBob3cgbWFueSBvYmplY3RzIGhhdmUgYmVlbiBmcmVlZCB0bworCQlhIGZyb3plbiBzbGFiIChpLmUuIGEgcmVtb3RlIGNwdSBzbGFiKS4gIEl0IGNhbiBiZSB3cml0dGVuIHRvCisJCWNsZWFyIHRoZSBjdXJyZW50IGNvdW50LgorCQlBdmFpbGFibGUgd2hlbiBDT05GSUdfU0xVQl9TVEFUUyBpcyBlbmFibGVkLgorCitXaGF0OgkJL3N5cy9rZXJuZWwvc2xhYi9jYWNoZS9mcmVlX3JlbW92ZV9wYXJ0aWFsCitEYXRlOgkJRmVicnVhcnkgMjAwOAorS2VybmVsVmVyc2lvbjoJMi42LjI1CitDb250YWN0OglQZWtrYSBFbmJlcmcgPHBlbmJlcmdAY3MuaGVsc2lua2kuZmk+LAorCQlDaHJpc3RvcGggTGFtZXRlciA8Y2xAbGludXgtZm91bmRhdGlvbi5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIGZyZWVfcmVtb3ZlX3BhcnRpYWwgZmlsZSBzaG93cyBob3cgbWFueSB0aW1lcyBhbiBvYmplY3QgaGFzCisJCWJlZW4gZnJlZWQgdG8gYSBub3ctZW1wdHkgc2xhYiBzbyB0aGF0IGl0IGhhZCB0byBiZSByZW1vdmVkIGZyb20KKwkJaXRzIG5vZGUncyBwYXJ0aWFsIGxpc3QuICBJdCBjYW4gYmUgd3JpdHRlbiB0byBjbGVhciB0aGUgY3VycmVudAorCQljb3VudC4KKwkJQXZhaWxhYmxlIHdoZW4gQ09ORklHX1NMVUJfU1RBVFMgaXMgZW5hYmxlZC4KKworV2hhdDoJCS9zeXMva2VybmVsL3NsYWIvY2FjaGUvZnJlZV9zbGFiCitEYXRlOgkJRmVicnVhcnkgMjAwOAorS2VybmVsVmVyc2lvbjoJMi42LjI1CitDb250YWN0OglQZWtrYSBFbmJlcmcgPHBlbmJlcmdAY3MuaGVsc2lua2kuZmk+LAorCQlDaHJpc3RvcGggTGFtZXRlciA8Y2xAbGludXgtZm91bmRhdGlvbi5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIGZyZWVfc2xhYiBmaWxlIHNob3dzIGhvdyBtYW55IHRpbWVzIGFuIGVtcHR5IHNsYWIgaGFzIGJlZW4KKwkJZnJlZWQgYmFjayB0byB0aGUgcGFnZSBhbGxvY2F0b3IuICBJdCBjYW4gYmUgd3JpdHRlbiB0byBjbGVhcgorCQl0aGUgY3VycmVudCBjb3VudC4KKwkJQXZhaWxhYmxlIHdoZW4gQ09ORklHX1NMVUJfU1RBVFMgaXMgZW5hYmxlZC4KKworV2hhdDoJCS9zeXMva2VybmVsL3NsYWIvY2FjaGUvZnJlZV9zbG93cGF0aAorRGF0ZToJCUZlYnJ1YXJ5IDIwMDgKK0tlcm5lbFZlcnNpb246CTIuNi4yNQorQ29udGFjdDoJUGVra2EgRW5iZXJnIDxwZW5iZXJnQGNzLmhlbHNpbmtpLmZpPiwKKwkJQ2hyaXN0b3BoIExhbWV0ZXIgPGNsQGxpbnV4LWZvdW5kYXRpb24ub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSBmcmVlX3Nsb3dwYXRoIGZpbGUgc2hvd3MgaG93IG1hbnkgb2JqZWN0cyBoYXZlIGJlZW4gZnJlZWQKKwkJdXNpbmcgdGhlIHNsb3cgcGF0aCAoaS5lLiB0byBhIGZ1bGwgb3IgcGFydGlhbCBzbGFiKS4gIEl0IGNhbgorCQliZSB3cml0dGVuIHRvIGNsZWFyIHRoZSBjdXJyZW50IGNvdW50LgorCQlBdmFpbGFibGUgd2hlbiBDT05GSUdfU0xVQl9TVEFUUyBpcyBlbmFibGVkLgorCitXaGF0OgkJL3N5cy9rZXJuZWwvc2xhYi9jYWNoZS9od2NhY2hlX2FsaWduCitEYXRlOgkJTWF5IDIwMDcKK0tlcm5lbFZlcnNpb246CTIuNi4yMgorQ29udGFjdDoJUGVra2EgRW5iZXJnIDxwZW5iZXJnQGNzLmhlbHNpbmtpLmZpPiwKKwkJQ2hyaXN0b3BoIExhbWV0ZXIgPGNsQGxpbnV4LWZvdW5kYXRpb24ub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSBod2NhY2hlX2FsaWduIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBzcGVjaWZpZXMgd2hldGhlcgorCQlvYmplY3RzIGFyZSBhbGlnbmVkIG9uIGNhY2hlbGluZXMuCisKK1doYXQ6CQkvc3lzL2tlcm5lbC9zbGFiL2NhY2hlL21pbl9wYXJ0aWFsCitEYXRlOgkJRmVicnVhcnkgMjAwOQorS2VybmVsVmVyc2lvbjoJMi42LjMwCitDb250YWN0OglQZWtrYSBFbmJlcmcgPHBlbmJlcmdAY3MuaGVsc2lua2kuZmk+LAorCQlEYXZpZCBSaWVudGplcyA8cmllbnRqZXNAZ29vZ2xlLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgbWluX3BhcnRpYWwgZmlsZSBzcGVjaWZpZXMgaG93IG1hbnkgZW1wdHkgc2xhYnMgc2hhbGwKKwkJcmVtYWluIG9uIGEgbm9kZSdzIHBhcnRpYWwgbGlzdCB0byBhdm9pZCB0aGUgb3ZlcmhlYWQgb2YKKwkJYWxsb2NhdGluZyBuZXcgc2xhYnMuICBTdWNoIHNsYWJzIG1heSBiZSByZWNsYWltZWQgYnkgdXRpbGl6aW5nCisJCXRoZSBzaHJpbmsgZmlsZS4KKworV2hhdDoJCS9zeXMva2VybmVsL3NsYWIvY2FjaGUvb2JqZWN0X3NpemUKK0RhdGU6CQlNYXkgMjAwNworS2VybmVsVmVyc2lvbjoJMi42LjIyCitDb250YWN0OglQZWtrYSBFbmJlcmcgPHBlbmJlcmdAY3MuaGVsc2lua2kuZmk+LAorCQlDaHJpc3RvcGggTGFtZXRlciA8Y2xAbGludXgtZm91bmRhdGlvbi5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIG9iamVjdF9zaXplIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBzcGVjaWZpZXMgdGhlIGNhY2hlJ3MKKwkJb2JqZWN0IHNpemUuCisKK1doYXQ6CQkvc3lzL2tlcm5lbC9zbGFiL2NhY2hlL29iamVjdHMKK0RhdGU6CQlNYXkgMjAwNworS2VybmVsVmVyc2lvbjoJMi42LjIyCitDb250YWN0OglQZWtrYSBFbmJlcmcgPHBlbmJlcmdAY3MuaGVsc2lua2kuZmk+LAorCQlDaHJpc3RvcGggTGFtZXRlciA8Y2xAbGludXgtZm91bmRhdGlvbi5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIG9iamVjdHMgZmlsZSBpcyByZWFkLW9ubHkgYW5kIGRpc3BsYXlzIGhvdyBtYW55IG9iamVjdHMgYXJlCisJCWFjdGl2ZSBhbmQgZnJvbSB3aGljaCBub2RlcyB0aGV5IGFyZSBmcm9tLgorCitXaGF0OgkJL3N5cy9rZXJuZWwvc2xhYi9jYWNoZS9vYmplY3RzX3BhcnRpYWwKK0RhdGU6CQlBcHJpbCAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CVBla2thIEVuYmVyZyA8cGVuYmVyZ0Bjcy5oZWxzaW5raS5maT4sCisJCUNocmlzdG9waCBMYW1ldGVyIDxjbEBsaW51eC1mb3VuZGF0aW9uLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgb2JqZWN0c19wYXJ0aWFsIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBkaXNwbGF5cyBob3cgbWFueQorCQlvYmplY3RzIGFyZSBvbiBwYXJ0aWFsIHNsYWJzIGFuZCBmcm9tIHdoaWNoIG5vZGVzIHRoZXkgYXJlCisJCWZyb20uCisKK1doYXQ6CQkvc3lzL2tlcm5lbC9zbGFiL2NhY2hlL29ianNfcGVyX3NsYWIKK0RhdGU6CQlNYXkgMjAwNworS2VybmVsVmVyc2lvbjoJMi42LjIyCitDb250YWN0OglQZWtrYSBFbmJlcmcgPHBlbmJlcmdAY3MuaGVsc2lua2kuZmk+LAorCQlDaHJpc3RvcGggTGFtZXRlciA8Y2xAbGludXgtZm91bmRhdGlvbi5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIGZpbGUgb2Jqc19wZXJfc2xhYiBpcyByZWFkLW9ubHkgYW5kIHNwZWNpZmllcyBob3cgbWFueQorCQlvYmplY3RzIG1heSBiZSBhbGxvY2F0ZWQgZnJvbSBhIHNpbmdsZSBzbGFiIG9mIHRoZSBvcmRlcgorCQlzcGVjaWZpZWQgaW4gL3N5cy9rZXJuZWwvc2xhYi9jYWNoZS9vcmRlci4KKworV2hhdDoJCS9zeXMva2VybmVsL3NsYWIvY2FjaGUvb3JkZXIKK0RhdGU6CQlNYXkgMjAwNworS2VybmVsVmVyc2lvbjoJMi42LjIyCitDb250YWN0OglQZWtrYSBFbmJlcmcgPHBlbmJlcmdAY3MuaGVsc2lua2kuZmk+LAorCQlDaHJpc3RvcGggTGFtZXRlciA8Y2xAbGludXgtZm91bmRhdGlvbi5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIG9yZGVyIGZpbGUgc3BlY2lmaWVzIHRoZSBwYWdlIG9yZGVyIGF0IHdoaWNoIG5ldyBzbGFicyBhcmUKKwkJYWxsb2NhdGVkLiAgSXQgaXMgd3JpdGFibGUgYW5kIGNhbiBiZSBjaGFuZ2VkIHRvIGluY3JlYXNlIHRoZQorCQludW1iZXIgb2Ygb2JqZWN0cyBwZXIgc2xhYi4gIElmIGEgc2xhYiBjYW5ub3QgYmUgYWxsb2NhdGVkCisJCWJlY2F1c2Ugb2YgZnJhZ21lbnRhdGlvbiwgU0xVQiB3aWxsIHJldHJ5IHdpdGggdGhlIG1pbmltdW0gb3JkZXIKKwkJcG9zc2libGUgZGVwZW5kaW5nIG9uIGl0cyBjaGFyYWN0ZXJpc3RpY3MuCisJCVdoZW4gZGVidWdfZ3VhcmRwYWdlX21pbm9yZGVyPU4gKE4gPiAwKSBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkCisJCShzZWUgRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQpLCB0aGUgbWluaW11bSBwb3NzaWJsZQorCQlvcmRlciBpcyB1c2VkIGFuZCB0aGlzIHN5c2ZzIGVudHJ5IGNhbiBub3QgYmUgdXNlZCB0byBjaGFuZ2UKKwkJdGhlIG9yZGVyIGF0IHJ1biB0aW1lLgorCitXaGF0OgkJL3N5cy9rZXJuZWwvc2xhYi9jYWNoZS9vcmRlcl9mYWxsYmFjaworRGF0ZToJCUFwcmlsIDIwMDgKK0tlcm5lbFZlcnNpb246CTIuNi4yNgorQ29udGFjdDoJUGVra2EgRW5iZXJnIDxwZW5iZXJnQGNzLmhlbHNpbmtpLmZpPiwKKwkJQ2hyaXN0b3BoIExhbWV0ZXIgPGNsQGxpbnV4LWZvdW5kYXRpb24ub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSBvcmRlcl9mYWxsYmFjayBmaWxlIHNob3dzIGhvdyBtYW55IHRpbWVzIGFuIGFsbG9jYXRpb24gb2YgYQorCQluZXcgc2xhYiBoYXMgbm90IGJlZW4gcG9zc2libGUgYXQgdGhlIGNhY2hlJ3Mgb3JkZXIgYW5kIGluc3RlYWQKKwkJZmFsbGVuIGJhY2sgdG8gaXRzIG1pbmltdW0gcG9zc2libGUgb3JkZXIuICBJdCBjYW4gYmUgd3JpdHRlbiB0bworCQljbGVhciB0aGUgY3VycmVudCBjb3VudC4KKwkJQXZhaWxhYmxlIHdoZW4gQ09ORklHX1NMVUJfU1RBVFMgaXMgZW5hYmxlZC4KKworV2hhdDoJCS9zeXMva2VybmVsL3NsYWIvY2FjaGUvcGFydGlhbAorRGF0ZToJCU1heSAyMDA3CitLZXJuZWxWZXJzaW9uOgkyLjYuMjIKK0NvbnRhY3Q6CVBla2thIEVuYmVyZyA8cGVuYmVyZ0Bjcy5oZWxzaW5raS5maT4sCisJCUNocmlzdG9waCBMYW1ldGVyIDxjbEBsaW51eC1mb3VuZGF0aW9uLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgcGFydGlhbCBmaWxlIGlzIHJlYWQtb25seSBhbmQgZGlzcGxheXMgaG93IGxvbmcgbWFueQorCQlwYXJ0aWFsIHNsYWJzIHRoZXJlIGFyZSBhbmQgaG93IGxvbmcgZWFjaCBub2RlJ3MgbGlzdCBpcy4KKworV2hhdDoJCS9zeXMva2VybmVsL3NsYWIvY2FjaGUvcG9pc29uCitEYXRlOgkJTWF5IDIwMDcKK0tlcm5lbFZlcnNpb246CTIuNi4yMgorQ29udGFjdDoJUGVra2EgRW5iZXJnIDxwZW5iZXJnQGNzLmhlbHNpbmtpLmZpPiwKKwkJQ2hyaXN0b3BoIExhbWV0ZXIgPGNsQGxpbnV4LWZvdW5kYXRpb24ub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSBwb2lzb24gZmlsZSBzcGVjaWZpZXMgd2hldGhlciBvYmplY3RzIHNob3VsZCBiZSBwb2lzb25lZAorCQl3aGVuIGEgbmV3IHNsYWIgaXMgYWxsb2NhdGVkLgorCitXaGF0OgkJL3N5cy9rZXJuZWwvc2xhYi9jYWNoZS9yZWNsYWltX2FjY291bnQKK0RhdGU6CQlNYXkgMjAwNworS2VybmVsVmVyc2lvbjoJMi42LjIyCitDb250YWN0OglQZWtrYSBFbmJlcmcgPHBlbmJlcmdAY3MuaGVsc2lua2kuZmk+LAorCQlDaHJpc3RvcGggTGFtZXRlciA8Y2xAbGludXgtZm91bmRhdGlvbi5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIHJlY2xhaW1fYWNjb3VudCBmaWxlIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBjYWNoZSdzIG9iamVjdHMKKwkJYXJlIHJlY2xhaW1hYmxlIChhbmQgZ3JvdXBlZCBieSB0aGVpciBtb2JpbGl0eSkuCisKK1doYXQ6CQkvc3lzL2tlcm5lbC9zbGFiL2NhY2hlL3JlZF96b25lCitEYXRlOgkJTWF5IDIwMDcKK0tlcm5lbFZlcnNpb246CTIuNi4yMgorQ29udGFjdDoJUGVra2EgRW5iZXJnIDxwZW5iZXJnQGNzLmhlbHNpbmtpLmZpPiwKKwkJQ2hyaXN0b3BoIExhbWV0ZXIgPGNsQGxpbnV4LWZvdW5kYXRpb24ub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSByZWRfem9uZSBmaWxlIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBjYWNoZSdzIG9iamVjdHMgYXJlIHJlZAorCQl6b25lZC4KKworV2hhdDoJCS9zeXMva2VybmVsL3NsYWIvY2FjaGUvcmVtb3RlX25vZGVfZGVmcmFnX3JhdGlvCitEYXRlOgkJSmFudWFyeSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjUKK0NvbnRhY3Q6CVBla2thIEVuYmVyZyA8cGVuYmVyZ0Bjcy5oZWxzaW5raS5maT4sCisJCUNocmlzdG9waCBMYW1ldGVyIDxjbEBsaW51eC1mb3VuZGF0aW9uLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgZmlsZSByZW1vdGVfbm9kZV9kZWZyYWdfcmF0aW8gc3BlY2lmaWVzIHRoZSBwZXJjZW50YWdlIG9mCisJCXRpbWVzIFNMVUIgd2lsbCBhdHRlbXB0IHRvIHJlZmlsbCB0aGUgY3B1IHNsYWIgd2l0aCBhIHBhcnRpYWwKKwkJc2xhYiBmcm9tIGEgcmVtb3RlIG5vZGUgYXMgb3Bwb3NlZCB0byBhbGxvY2F0aW5nIGEgbmV3IHNsYWIgb24KKwkJdGhlIGxvY2FsIG5vZGUuICBUaGlzIHJlZHVjZXMgdGhlIGFtb3VudCBvZiB3YXN0ZWQgbWVtb3J5IG92ZXIKKwkJdGhlIGVudGlyZSBzeXN0ZW0gYnV0IGNhbiBiZSBleHBlbnNpdmUuCisJCUF2YWlsYWJsZSB3aGVuIENPTkZJR19OVU1BIGlzIGVuYWJsZWQuCisKK1doYXQ6CQkvc3lzL2tlcm5lbC9zbGFiL2NhY2hlL3Nhbml0eV9jaGVja3MKK0RhdGU6CQlNYXkgMjAwNworS2VybmVsVmVyc2lvbjoJMi42LjIyCitDb250YWN0OglQZWtrYSBFbmJlcmcgPHBlbmJlcmdAY3MuaGVsc2lua2kuZmk+LAorCQlDaHJpc3RvcGggTGFtZXRlciA8Y2xAbGludXgtZm91bmRhdGlvbi5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIHNhbml0eV9jaGVja3MgZmlsZSBzcGVjaWZpZXMgd2hldGhlciBleHBlbnNpdmUgY2hlY2tzCisJCXNob3VsZCBiZSBwZXJmb3JtZWQgb24gZnJlZSBhbmQsIGF0IG1pbmltdW0sIGVuYWJsZXMgZG91YmxlIGZyZWUKKwkJY2hlY2tzLiAgQ2FjaGVzIHRoYXQgZW5hYmxlIHNhbml0eV9jaGVja3MgY2Fubm90IGJlIG1lcmdlZCB3aXRoCisJCWNhY2hlcyB0aGF0IGRvIG5vdC4KKworV2hhdDoJCS9zeXMva2VybmVsL3NsYWIvY2FjaGUvc2hyaW5rCitEYXRlOgkJTWF5IDIwMDcKK0tlcm5lbFZlcnNpb246CTIuNi4yMgorQ29udGFjdDoJUGVra2EgRW5iZXJnIDxwZW5iZXJnQGNzLmhlbHNpbmtpLmZpPiwKKwkJQ2hyaXN0b3BoIExhbWV0ZXIgPGNsQGxpbnV4LWZvdW5kYXRpb24ub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSBzaHJpbmsgZmlsZSBpcyB3cml0dGVuIHdoZW4gbWVtb3J5IHNob3VsZCBiZSByZWNsYWltZWQgZnJvbQorCQlhIGNhY2hlLiAgRW1wdHkgcGFydGlhbCBzbGFicyBhcmUgZnJlZWQgYW5kIHRoZSBwYXJ0aWFsIGxpc3QgaXMKKwkJc29ydGVkIHNvIHRoZSBzbGFicyB3aXRoIHRoZSBmZXdlc3QgYXZhaWxhYmxlIG9iamVjdHMgYXJlIHVzZWQKKwkJZmlyc3QuCisKK1doYXQ6CQkvc3lzL2tlcm5lbC9zbGFiL2NhY2hlL3NsYWJfc2l6ZQorRGF0ZToJCU1heSAyMDA3CitLZXJuZWxWZXJzaW9uOgkyLjYuMjIKK0NvbnRhY3Q6CVBla2thIEVuYmVyZyA8cGVuYmVyZ0Bjcy5oZWxzaW5raS5maT4sCisJCUNocmlzdG9waCBMYW1ldGVyIDxjbEBsaW51eC1mb3VuZGF0aW9uLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgc2xhYl9zaXplIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBzcGVjaWZpZXMgdGhlIG9iamVjdCBzaXplCisJCXdpdGggbWV0YWRhdGEgKGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBhbmQgYWxpZ25tZW50KSBpbiBieXRlcy4KKworV2hhdDoJCS9zeXMva2VybmVsL3NsYWIvY2FjaGUvc2xhYnMKK0RhdGU6CQlNYXkgMjAwNworS2VybmVsVmVyc2lvbjoJMi42LjIyCitDb250YWN0OglQZWtrYSBFbmJlcmcgPHBlbmJlcmdAY3MuaGVsc2lua2kuZmk+LAorCQlDaHJpc3RvcGggTGFtZXRlciA8Y2xAbGludXgtZm91bmRhdGlvbi5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIHNsYWJzIGZpbGUgaXMgcmVhZC1vbmx5IGFuZCBkaXNwbGF5cyBob3cgbG9uZyBtYW55IHNsYWJzCisJCXRoZXJlIGFyZSAoYm90aCBjcHUgYW5kIHBhcnRpYWwpIGFuZCBmcm9tIHdoaWNoIG5vZGVzIHRoZXkgYXJlCisJCWZyb20uCisKK1doYXQ6CQkvc3lzL2tlcm5lbC9zbGFiL2NhY2hlL3N0b3JlX3VzZXIKK0RhdGU6CQlNYXkgMjAwNworS2VybmVsVmVyc2lvbjoJMi42LjIyCitDb250YWN0OglQZWtrYSBFbmJlcmcgPHBlbmJlcmdAY3MuaGVsc2lua2kuZmk+LAorCQlDaHJpc3RvcGggTGFtZXRlciA8Y2xAbGludXgtZm91bmRhdGlvbi5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIHN0b3JlX3VzZXIgZmlsZSBzcGVjaWZpZXMgd2hldGhlciB0aGUgbG9jYXRpb24gb2YKKwkJYWxsb2NhdGlvbiBvciBmcmVlIHNob3VsZCBiZSB0cmFja2VkIGZvciBhIGNhY2hlLgorCitXaGF0OgkJL3N5cy9rZXJuZWwvc2xhYi9jYWNoZS90b3RhbF9vYmplY3RzCitEYXRlOgkJQXByaWwgMjAwOAorS2VybmVsVmVyc2lvbjoJMi42LjI2CitDb250YWN0OglQZWtrYSBFbmJlcmcgPHBlbmJlcmdAY3MuaGVsc2lua2kuZmk+LAorCQlDaHJpc3RvcGggTGFtZXRlciA8Y2xAbGludXgtZm91bmRhdGlvbi5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIHRvdGFsX29iamVjdHMgZmlsZSBpcyByZWFkLW9ubHkgYW5kIGRpc3BsYXlzIGhvdyBtYW55IHRvdGFsCisJCW9iamVjdHMgYSBjYWNoZSBoYXMgYW5kIGZyb20gd2hpY2ggbm9kZXMgdGhleSBhcmUgZnJvbS4KKworV2hhdDoJCS9zeXMva2VybmVsL3NsYWIvY2FjaGUvdHJhY2UKK0RhdGU6CQlNYXkgMjAwNworS2VybmVsVmVyc2lvbjoJMi42LjIyCitDb250YWN0OglQZWtrYSBFbmJlcmcgPHBlbmJlcmdAY3MuaGVsc2lua2kuZmk+LAorCQlDaHJpc3RvcGggTGFtZXRlciA8Y2xAbGludXgtZm91bmRhdGlvbi5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIHRyYWNlIGZpbGUgc3BlY2lmaWVzIHdoZXRoZXIgb2JqZWN0IGFsbG9jYXRpb25zIGFuZCBmcmVlcworCQlzaG91bGQgYmUgdHJhY2VkLgorCitXaGF0OgkJL3N5cy9rZXJuZWwvc2xhYi9jYWNoZS92YWxpZGF0ZQorRGF0ZToJCU1heSAyMDA3CitLZXJuZWxWZXJzaW9uOgkyLjYuMjIKK0NvbnRhY3Q6CVBla2thIEVuYmVyZyA8cGVuYmVyZ0Bjcy5oZWxzaW5raS5maT4sCisJCUNocmlzdG9waCBMYW1ldGVyIDxjbEBsaW51eC1mb3VuZGF0aW9uLm9yZz4KK0Rlc2NyaXB0aW9uOgorCQlXcml0aW5nIHRvIHRoZSB2YWxpZGF0ZSBmaWxlIGNhdXNlcyBTTFVCIHRvIHRyYXZlcnNlIGFsbCBvZiBpdHMKKwkJY2FjaGUncyBvYmplY3RzIGFuZCBjaGVjayB0aGUgdmFsaWRpdHkgb2YgbWV0YWRhdGEuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC11aWRzIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtdWlkcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGYxNDY5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtdWlkcwpAQCAtMCwwICsxLDE0IEBACitXaGF0OgkJL3N5cy9rZXJuZWwvdWlkcy88dWlkPi9jcHVfc2hhcmVzCitEYXRlOgkJRGVjZW1iZXIgMjAwNworQ29udGFjdDoJRGhhdmFsIEdpYW5pIDxkaGF2YWxAbGludXgudm5ldC5pYm0uY29tPgorCQlTcml2YXRzYSBWYWRkYWdpcmkgPHZhdHNhQGxpbnV4LnZuZXQuaWJtLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9rZXJuZWwvdWlkcy88dWlkPi9jcHVfc2hhcmVzIHR1bmFibGUgaXMgdXNlZAorCQl0byBzZXQgdGhlIGNwdSBiYW5kd2lkdGggYSB1c2VyIGlzIGFsbG93ZWQuIFRoaXMgaXMgYQorCQlwcm9wb3Rpb25hbCB2YWx1ZS4gV2hhdCB0aGF0IG1lYW5zIGlzIHRoYXQgaWYgdGhlcmUKKwkJYXJlIHR3byB1c2VycyBsb2dnZWQgaW4sIGVhY2ggd2l0aCBhbiBlcXVhbCBudW1iZXIgb2YKKwkJc2hhcmVzLCB0aGVuIHRoZXkgd2lsbCBnZXQgZXF1YWwgQ1BVIGJhbmR3aWR0aC4gQW5vdGhlcgorCQlleGFtcGxlIHdvdWxkIGJlLCBpZiBVc2VyIEEgaGFzIHNoYXJlcyA9IDEwMjQgYW5kIHVzZXIKKwkJQiBoYXMgc2hhcmVzID0gMjA0OCwgVXNlciBCIHdpbGwgZ2V0IHR3aWNlIHRoZSBDUFUKKwkJYmFuZHdpZHRoIHVzZXIgQSB3aWxsLiBGb3IgbW9yZSBkZXRhaWxzIHJlZmVyCisJCURvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWRlc2lnbi1DRlMudHh0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC12bWNvcmVpbmZvIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtdm1jb3JlaW5mbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YmQ4MTE2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtdm1jb3JlaW5mbwpAQCAtMCwwICsxLDE0IEBACitXaGF0OgkJL3N5cy9rZXJuZWwvdm1jb3JlaW5mbworRGF0ZToJCU9jdG9iZXIgMjAwNworS2VybmVsVmVyc2lvbjoJMi42LjI0CitDb250YWN0OglLZW4naWNoaSBPaG1pY2hpIDxvb21pY2hpQG14cy5uZXMubmVjLmNvLmpwPgorCQlLZXhlYyBNYWlsaW5nIExpc3QgPGtleGVjQGxpc3RzLmluZnJhZGVhZC5vcmc+CisJCVZpdmVrIEdveWFsIDx2Z295YWxAcmVkaGF0LmNvbT4KK0Rlc2NyaXB0aW9uCisJCVNob3dzIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUgb2Ygdm1jb3JlaW5mbyBFTEYgbm90ZS4KKwkJRmlyc3QgdmFsdWUgY29udGFpbnMgcGh5c2ljYWwgYWRkcmVzcyBvZiBub3RlIGluIGhleCBhbmQKKwkJc2Vjb25kIHZhbHVlIGNvbnRhaW5zIHRoZSBzaXplIG9mIG5vdGUgaW4gaGV4LiBUaGlzIEVMRgorCQlub3RlIGluZm8gaXMgcGFyc2VkIGJ5IHNlY29uZCBrZXJuZWwgYW5kIGV4cG9ydGVkIHRvIHVzZXIKKwkJc3BhY2UgYXMgcGFydCBvZiBFTEYgbm90ZSBpbiAvcHJvYy92bWNvcmUgZmlsZS4gVGhpcyBub3RlCisJCWNvbnRhaW5zIHZhcmlvdXMgaW5mb3JtYXRpb24gbGlrZSBzdHJ1Y3Qgc2l6ZSwgc3ltYm9sCisJCXZhbHVlcywgcGFnZSBzaXplIGV0Yy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtbWVtb3J5LXBhZ2Utb2ZmbGluZSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtbWVtb3J5LXBhZ2Utb2ZmbGluZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTQ3MDNmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1tZW1vcnktcGFnZS1vZmZsaW5lCkBAIC0wLDAgKzEsNDQgQEAKK1doYXQ6CQkvc3lzL2RldmljZXMvc3lzdGVtL21lbW9yeS9zb2Z0X29mZmxpbmVfcGFnZQorRGF0ZToJCVNlcCAyMDA5CitLZXJuZWxWZXJzaW9uOgkyLjYuMzMKK0NvbnRhY3Q6CWFuZGlAZmlyc3RmbG9vci5vcmcKK0Rlc2NyaXB0aW9uOgorCQlTb2Z0LW9mZmxpbmUgdGhlIG1lbW9yeSBwYWdlIGNvbnRhaW5pbmcgdGhlIHBoeXNpY2FsIGFkZHJlc3MKKwkJd3JpdHRlbiBpbnRvIHRoaXMgZmlsZS4gSW5wdXQgaXMgYSBoZXggbnVtYmVyIHNwZWNpZnlpbmcgdGhlCisJCXBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIHBhZ2UuIFRoZSBrZXJuZWwgd2lsbCB0aGVuIGF0dGVtcHQKKwkJdG8gc29mdC1vZmZsaW5lIGl0LCBieSBtb3ZpbmcgdGhlIGNvbnRlbnRzIGVsc2V3aGVyZSBvcgorCQlkcm9wcGluZyBpdCBpZiBwb3NzaWJsZS4gVGhlIGtlcm5lbCB3aWxsIHRoZW4gYmUgcGxhY2VkCisJCW9uIHRoZSBiYWQgcGFnZSBsaXN0IGFuZCBuZXZlciBiZSByZXVzZWQuCisKKwkJVGhlIG9mZmxpbmluZyBpcyBkb25lIGluIGtlcm5lbCBzcGVjaWZpYyBncmFudWFsaXR5LgorCQlOb3JtYWxseSBpdCdzIHRoZSBiYXNlIHBhZ2Ugc2l6ZSBvZiB0aGUga2VybmVsLCBidXQKKwkJdGhpcyBtaWdodCBjaGFuZ2UuCisKKwkJVGhlIHBhZ2UgbXVzdCBiZSBzdGlsbCBhY2Nlc3NpYmxlLCBub3QgcG9pc29uZWQuIFRoZQorCQlrZXJuZWwgd2lsbCBuZXZlciBraWxsIGFueXRoaW5nIGZvciB0aGlzLCBidXQgcmF0aGVyCisJCWZhaWwgdGhlIG9mZmxpbmUuICBSZXR1cm4gdmFsdWUgaXMgdGhlIHNpemUgb2YgdGhlCisJCW51bWJlciwgb3IgYSBlcnJvciB3aGVuIHRoZSBvZmZsaW5pbmcgZmFpbGVkLiAgUmVhZGluZworCQl0aGUgZmlsZSBpcyBub3QgYWxsb3dlZC4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L2hhcmRfb2ZmbGluZV9wYWdlCitEYXRlOgkJU2VwIDIwMDkKK0tlcm5lbFZlcnNpb246CTIuNi4zMworQ29udGFjdDoJYW5kaUBmaXJzdGZsb29yLm9yZworRGVzY3JpcHRpb246CisJCUhhcmQtb2ZmbGluZSB0aGUgbWVtb3J5IHBhZ2UgY29udGFpbmluZyB0aGUgcGh5c2ljYWwKKwkJYWRkcmVzcyB3cml0dGVuIGludG8gdGhpcyBmaWxlLiBJbnB1dCBpcyBhIGhleCBudW1iZXIKKwkJc3BlY2lmeWluZyB0aGUgcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgcGFnZS4gVGhlCisJCWtlcm5lbCB3aWxsIHRoZW4gYXR0ZW1wdCB0byBoYXJkLW9mZmxpbmUgdGhlIHBhZ2UsIGJ5CisJCXRyeWluZyB0byBkcm9wIHRoZSBwYWdlIG9yIGtpbGxpbmcgYW55IG93bmVyIG9yCisJCXRyaWdnZXJpbmcgSU8gZXJyb3JzIGlmIG5lZWRlZC4gIE5vdGUgdGhpcyBtYXkga2lsbAorCQlhbnkgcHJvY2Vzc2VzIG93bmluZyB0aGUgcGFnZS4gVGhlIGtlcm5lbCB3aWxsIGF2b2lkCisJCXRvIGFjY2VzcyB0aGlzIHBhZ2UgYXNzdW1pbmcgaXQncyBwb2lzb25lZCBieSB0aGUKKwkJaGFyZHdhcmUuCisKKwkJVGhlIG9mZmxpbmluZyBpcyBkb25lIGluIGtlcm5lbCBzcGVjaWZpYyBncmFudWFsaXR5LgorCQlOb3JtYWxseSBpdCdzIHRoZSBiYXNlIHBhZ2Ugc2l6ZSBvZiB0aGUga2VybmVsLCBidXQKKwkJdGhpcyBtaWdodCBjaGFuZ2UuCisKKwkJUmV0dXJuIHZhbHVlIGlzIHRoZSBzaXplIG9mIHRoZSBudW1iZXIsIG9yIGEgZXJyb3Igd2hlbgorCQl0aGUgb2ZmbGluaW5nIGZhaWxlZC4KKwkJUmVhZGluZyB0aGUgZmlsZSBpcyBub3QgYWxsb3dlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtbW9kdWxlIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1tb2R1bGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFhYzAyZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtbW9kdWxlCkBAIC0wLDAgKzEsNTIgQEAKK1doYXQ6CQkvc3lzL21vZHVsZS9wY2hfcGh1Yi9kcml2ZXJzLy4uLi9wY2hfbWFjCitEYXRlOgkJQXVndXN0IDIwMTAKK0tlcm5lbFZlcnNpb246CTIuNi4zNQorQ29udGFjdDoJbWFzYS1rb3JnQGRzbi5va2lzZW1pLmNvbQorRGVzY3JpcHRpb246CVdyaXRlL3JlYWQgR2JFIE1BQyBhZGRyZXNzLgorCitXaGF0OgkJL3N5cy9tb2R1bGUvcGNoX3BodWIvZHJpdmVycy8uLi4vcGNoX2Zpcm13YXJlCitEYXRlOgkJQXVndXN0IDIwMTAKK0tlcm5lbFZlcnNpb246CTIuNi4zNQorQ29udGFjdDoJbWFzYS1rb3JnQGRzbi5va2lzZW1pLmNvbQorRGVzY3JpcHRpb246CVdyaXRlL3JlYWQgT3B0aW9uIFJPTSBkYXRhLgorCisKK1doYXQ6CQkvc3lzL21vZHVsZS9laGNpX2hjZC9kcml2ZXJzLy4uLi91ZnJhbWVfcGVyaW9kaWNfbWF4CitEYXRlOgkJSnVseSAyMDExCitLZXJuZWxWZXJzaW9uOgkzLjEKK0NvbnRhY3Q6CUtpcmlsbCBTbWVsa292IDxraXJyQG1ucy5zcGIucnU+CitEZXNjcmlwdGlvbjoJTWF4aW11bSB0aW1lIGFsbG93ZWQgZm9yIHBlcmlvZGljIHRyYW5zZmVycyBwZXIgbWljcm9mcmFtZSAozrxzKQorCisJCVsgVVNCIDIuMCBzZXRzIG1heGltdW0gYWxsb3dlZCB0aW1lIGZvciBwZXJpb2RpYyB0cmFuc2ZlcnMgcGVyCisJCSAgbWljcm9mcmFtZSB0byBiZSA4MCUsIHRoYXQgaXMgMTAwIG1pY3Jvc2Vjb25kcyBvdXQgb2YgMTI1CisJCSAgbWljcm9zZWNvbmRzIChmdWxsIG1pY3JvZnJhbWUpLgorCisJCSAgSG93ZXZlciB0aGVyZSBhcmUgY2FzZXMsIHdoZW4gODAlIG1heCBpc29jaHJvbm91cyBiYW5kd2lkdGggaXMKKwkJICB0b28gbGltaXRpbmcuIEZvciBleGFtcGxlIHR3byB2aWRlbyBzdHJlYW1zIGNvdWxkIHJlcXVpcmUgMTEwCisJCSAgbWljcm9zZWNvbmRzIG9mIGlzb2Nocm9ub3VzIGJhbmR3aWR0aCBwZXIgbWljcm9mcmFtZSB0byB3b3JrCisJCSAgdG9nZXRoZXIuIF0KKworCQlUaHJvdWdoIHRoaXMgc2V0dGluZyBpdCBpcyBwb3NzaWJsZSB0byByYWlzZSB0aGUgbGltaXQgc28gdGhhdAorCQl0aGUgaG9zdCBjb250cm9sbGVyIHdvdWxkIGFsbG93IGFsbG9jYXRpbmcgbW9yZSB0aGFuIDEwMAorCQltaWNyb3NlY29uZHMgb2YgcGVyaW9kaWMgYmFuZHdpZHRoIHBlciBtaWNyb2ZyYW1lLgorCisJCUJld2FyZSwgbm9uLXN0YW5kYXJkIG1vZGVzIGFyZSB1c3VhbGx5IG5vdCB0aG9yb3VnaGx5IHRlc3RlZCBieQorCQloYXJkd2FyZSBkZXNpZ25lcnMsIGFuZCB0aGUgaGFyZHdhcmUgY2FuIG1hbGZ1bmN0aW9uIHdoZW4gdGhpcworCQlzZXR0aW5nIGRpZmZlciBmcm9tIGRlZmF1bHQgMTAwLgorCitXaGF0OgkJL3N5cy9tb2R1bGUvKi97Y29yZXNpemUsaW5pdHNpemV9CitEYXRlOgkJSmFuIDIwMTIKK0tlcm5lbFZlcnNpb246wrvCtzMuMworQ29udGFjdDoJS2F5IFNpZXZlcnMgPGtheS5zaWV2ZXJzQHZyZnkub3JnPgorRGVzY3JpcHRpb246CU1vZHVsZSBzaXplIGluIGJ5dGVzLgorCitXaGF0OgkJL3N5cy9tb2R1bGUvKi90YWludAorRGF0ZToJCUphbiAyMDEyCitLZXJuZWxWZXJzaW9uOsK7wrczLjMKK0NvbnRhY3Q6CUtheSBTaWV2ZXJzIDxrYXkuc2lldmVyc0B2cmZ5Lm9yZz4KK0Rlc2NyaXB0aW9uOglNb2R1bGUgdGFpbnQgZmxhZ3M6CisJCQlQIC0gcHJvcHJpZXRhcnkgbW9kdWxlCisJCQlPIC0gb3V0LW9mLXRyZWUgbW9kdWxlCisJCQlGIC0gZm9yY2UtbG9hZGVkIG1vZHVsZQorCQkJQyAtIHN0YWdpbmcgZHJpdmVyIG1vZHVsZQorCQkJRSAtIHVuc2lnbmVkIG1vZHVsZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1vY2ZzMiBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtb2NmczIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdjYzUxNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtb2NmczIKQEAgLTAsMCArMSw4OSBAQAorV2hhdDoJCS9zeXMvZnMvb2NmczIvCitEYXRlOgkJQXByaWwgMjAwOAorQ29udGFjdDoJb2NmczItZGV2ZWxAb3NzLm9yYWNsZS5jb20KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9mcy9vY2ZzMiBkaXJlY3RvcnkgY29udGFpbnMga25vYnMgdXNlZCBieSB0aGUKKwkJb2NmczItdG9vbHMgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgZmlsZXN5c3RlbS4KKworV2hhdDoJCS9zeXMvZnMvb2NmczIvbWF4X2xvY2tpbmdfcHJvdG9jb2wKK0RhdGU6CQlBcHJpbCAyMDA4CitDb250YWN0OglvY2ZzMi1kZXZlbEBvc3Mub3JhY2xlLmNvbQorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2ZzL29jZnMyL21heF9sb2NraW5nX3Byb3RvY29sIGZpbGUgZGlzcGxheXMgdmVyc2lvbgorCQlvZiBvY2ZzMiBsb2NraW5nIHN1cHBvcnRlZCBieSB0aGUgZmlsZXN5c3RlbS4gIFRoaXMgdmVyc2lvbgorCQljb3ZlcnMgaG93IG9jZnMyIHVzZXMgZGlzdHJpYnV0ZWQgbG9ja2luZyBiZXR3ZWVuIGNsdXN0ZXIKKwkJbm9kZXMuCisKKwkJVGhlIHByb3RvY29sIHZlcnNpb24gaGFzIGEgbWFqb3IgYW5kIG1pbm9yIG51bWJlci4gIFR3bworCQljbHVzdGVyIG5vZGVzIGNhbiBpbnRlcm9wZXJhdGUgaWYgdGhleSBoYXZlIGFuIGlkZW50aWNhbAorCQltYWpvciBudW1iZXIgYW5kIGFuIG92ZXJsYXBwaW5nIG1pbm9yIG51bWJlciAtIHRodXMsCisJCWEgbm9kZSB3aXRoIHZlcnNpb24gMS4xMCBjYW4gaW50ZXJvcGVyYXRlIHdpdGggYSBub2RlCisJCXNwb3J0aW5nIHZlcnNpb24gMS44LCBhcyBsb25nIGFzIGJvdGggdXNlIHRoZSAxLjggcHJvdG9jb2wuCisKKwkJUmVhZGluZyBmcm9tIHRoaXMgZmlsZSByZXR1cm5zIGEgc2luZ2xlIGxpbmUsIHRoZSBtYWpvcgorCQludW1iZXIgYW5kIG1pbm9yIG51bWJlciBqb2luZWQgYnkgYSBwZXJpb2QsIGVnICIxLjEwIi4KKworCQlUaGlzIGZpbGUgaXMgcmVhZC1vbmx5LiAgVGhlIHZhbHVlIGlzIGNvbXBpbGVkIGludG8gdGhlCisJCWRyaXZlci4KKworV2hhdDoJCS9zeXMvZnMvb2NmczIvbG9hZGVkX2NsdXN0ZXJfcGx1Z2lucworRGF0ZToJCUFwcmlsIDIwMDgKK0NvbnRhY3Q6CW9jZnMyLWRldmVsQG9zcy5vcmFjbGUuY29tCitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvZnMvb2NmczIvbG9hZGVkX2NsdXN0ZXJfcGx1Z2lucyBmaWxlIGRlc2NyaWJlcworCQl0aGUgYXZhaWxhYmxlIHBsdWdpbnMgdG8gc3VwcG9ydCBvY2ZzMiBjbHVzdGVyIG9wZXJhdGlvbi4KKwkJQSBjbHVzdGVyIHBsdWdpbiBpcyByZXF1aXJlZCB0byB1c2Ugb2NmczIgaW4gYSBjbHVzdGVyLgorCQlUaGVyZSBhcmUgY3VycmVudGx5IHR3byBhdmFpbGFibGUgcGx1Z2luczoKKworCQkqICdvMmNiJyAtIFRoZSBjbGFzc2ljIG8yY2IgY2x1c3RlciBzdGFjayB0aGF0IG9jZnMyIGhhcworCQkJdXNlZCBzaW5jZSBpdHMgaW5jZXB0aW9uLgorCQkqICd1c2VyJyAtIEEgcGx1Z2luIHN1cHBvcnRpbmcgdXNlcnNwYWNlIGNsdXN0ZXIgc29mdHdhcmUKKwkJCWluIGNvbmp1bmN0aW9uIHdpdGggZnMvZGxtLgorCisJCVJlYWRpbmcgZnJvbSB0aGlzIGZpbGUgcmV0dXJucyB0aGUgbmFtZXMgb2YgYWxsIGxvYWRlZAorCQlwbHVnaW5zLCBvbmUgcGVyIGxpbmUuCisKKwkJVGhpcyBmaWxlIGlzIHJlYWQtb25seS4gIEl0cyBjb250ZW50cyBtYXkgY2hhbmdlIGFzCisJCXBsdWdpbnMgYXJlIGxvYWRlZCBvciByZW1vdmVkLgorCitXaGF0OgkJL3N5cy9mcy9vY2ZzMi9hY3RpdmVfY2x1c3Rlcl9wbHVnaW4KK0RhdGU6CQlBcHJpbCAyMDA4CitDb250YWN0OglvY2ZzMi1kZXZlbEBvc3Mub3JhY2xlLmNvbQorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL2ZzL29jZnMyL2FjdGl2ZV9jbHVzdGVyX3BsdWdpbiBkaXNwbGF5cyB3aGljaAorCQljbHVzdGVyIHBsdWdpbiBpcyBjdXJyZW50bHkgaW4gdXNlIGJ5IHRoZSBmaWxlc3lzdGVtLgorCQlUaGUgYWN0aXZlIHBsdWdpbiB3aWxsIGFwcGVhciBpbiB0aGUgbG9hZGVkX2NsdXN0ZXJfcGx1Z2lucworCQlmaWxlIGFzIHdlbGwuICBPbmx5IG9uZSBwbHVnaW4gY2FuIGJlIHVzZWQgYXQgYSB0aW1lLgorCisJCVJlYWRpbmcgZnJvbSB0aGlzIGZpbGUgcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgYWN0aXZlIHBsdWdpbgorCQlvbiBhIHNpbmdsZSBsaW5lLgorCisJCVRoaXMgZmlsZSBpcyByZWFkLW9ubHkuICBXaGljaCBwbHVnaW4gaXMgYWN0aXZlIGRlcGVuZHMgb24KKwkJdGhlIGNsdXN0ZXIgc3RhY2sgaW4gdXNlLiAgVGhlIGNvbnRlbnRzIG1heSBjaGFuZ2UKKwkJd2hlbiBhbGwgZmlsZXN5c3RlbXMgYXJlIHVubW91bnRlZCBhbmQgdGhlIGNsdXN0ZXIgc3RhY2sKKwkJaXMgY2hhbmdlZC4KKworV2hhdDoJCS9zeXMvZnMvb2NmczIvY2x1c3Rlcl9zdGFjaworRGF0ZToJCUFwcmlsIDIwMDgKK0NvbnRhY3Q6CW9jZnMyLWRldmVsQG9zcy5vcmFjbGUuY29tCitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvZnMvb2NmczIvY2x1c3Rlcl9zdGFjayBmaWxlIGNvbnRhaW5zIHRoZSBuYW1lCisJCW9mIGN1cnJlbnQgb2NmczIgY2x1c3RlciBzdGFjay4gIFRoaXMgdmFsdWUgaXMgc2V0IGJ5CisJCXVzZXJzcGFjZSB0b29scyB3aGVuIGJyaW5naW5nIHRoZSBjbHVzdGVyIHN0YWNrIG9ubGluZS4KKworCQlDbHVzdGVyIHN0YWNrIG5hbWVzIGFyZSA0IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLgorCisJCVdoZW4gdGhlICdvMmNiJyBjbHVzdGVyIHN0YWNrIGlzIHVzZWQsIHRoZSAnbzJjYicgY2x1c3RlcgorCQlwbHVnaW4gaXMgYWN0aXZlLiAgQWxsIG90aGVyIGNsdXN0ZXIgc3RhY2tzIHVzZSB0aGUgJ3VzZXInCisJCWNsdXN0ZXIgcGx1Z2luLgorCisJCVJlYWRpbmcgZnJvbSB0aGlzIGZpbGUgcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudAorCQljbHVzdGVyIHN0YWNrIG9uIGEgc2luZ2xlIGxpbmUuCisKKwkJV3JpdGluZyBhIG5ldyBzdGFjayBuYW1lIHRvIHRoaXMgZmlsZSBjaGFuZ2VzIHRoZSBjdXJyZW50CisJCWNsdXN0ZXIgc3RhY2sgdW5sZXNzIHRoZXJlIGFyZSBtb3VudGVkIG9jZnMyIGZpbGVzeXN0ZW1zLgorCQlJZiB0aGVyZSBhcmUgbW91bnRlZCBmaWxlc3lzdGVtcywgYXR0ZW1wdHMgdG8gY2hhbmdlIHRoZQorCQlzdGFjayByZXR1cm4gYW4gZXJyb3IuCisKK1VzZXJzOgorCW9jZnMyLXRvb2xzIDxvY2ZzMi10b29scy1kZXZlbEBvc3Mub3JhY2xlLmNvbT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcGxhdGZvcm0tYXN1cy1sYXB0b3AgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXBsYXRmb3JtLWFzdXMtbGFwdG9wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkOWQ2NjcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXBsYXRmb3JtLWFzdXMtbGFwdG9wCkBAIC0wLDAgKzEsNjYgQEAKK1doYXQ6CQkvc3lzL2RldmljZXMvcGxhdGZvcm0vYXN1c19sYXB0b3AvZGlzcGxheQorRGF0ZToJCUphbnVhcnkgMjAwNworS2VybmVsVmVyc2lvbjoJMi42LjIwCitDb250YWN0OgkiQ29yZW50aW4gQ2hhcnkiIDxjb3JlbnRpbmNqQGlrc2FpZi5uZXQ+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBmaWxlIGFsbG93cyBkaXNwbGF5IHN3aXRjaGluZy4gVGhlIHZhbHVlCisJCWlzIGNvbXBvc2VkIGJ5IDQgYml0cyBhbmQgZGVmaW5lZCBhcyBmb2xsb3c6CisJCTQzMjEKKwkJfHx8YC0gTENECisJCXx8YC0tIENSVAorCQl8YC0tLSBUVgorCQlgLS0tLSBEVkkKKwkJRXg6IC0gMCAoMDAwMGIpIG1lYW5zIG5vIGRpc3BsYXkKKwkJICAgIC0gMyAoMDAxMWIpIENSVCtMQ0QuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvcGxhdGZvcm0vYXN1c19sYXB0b3AvZ3BzCitEYXRlOgkJSmFudWFyeSAyMDA3CitLZXJuZWxWZXJzaW9uOgkyLjYuMjAKK0NvbnRhY3Q6CSJDb3JlbnRpbiBDaGFyeSIgPGNvcmVudGluY2pAaWtzYWlmLm5ldD4KK0Rlc2NyaXB0aW9uOgorCQlDb250cm9sIHRoZSBncHMgZGV2aWNlLiAxIG1lYW5zIG9uLCAwIG1lYW5zIG9mZi4KK1VzZXJzOgkJTGFwc3VzCisKK1doYXQ6CQkvc3lzL2RldmljZXMvcGxhdGZvcm0vYXN1c19sYXB0b3AvbGVkZAorRGF0ZToJCUphbnVhcnkgMjAwNworS2VybmVsVmVyc2lvbjoJMi42LjIwCitDb250YWN0OgkiQ29yZW50aW4gQ2hhcnkiIDxjb3JlbnRpbmNqQGlrc2FpZi5uZXQ+CitEZXNjcmlwdGlvbjoKKwkJU29tZSBtb2RlbHMgbGlrZSB0aGUgVzFOIGhhdmUgYSBMRUQgZGlzcGxheSB0aGF0IGNhbiBiZQorCQl1c2VkIHRvIGRpc3BsYXkgc2V2ZXJhbCBpdGVtcyBvZiBpbmZvcm1hdGlvbi4KKwkJVG8gY29udHJvbCB0aGUgTEVEIGRpc3BsYXksIHVzZSB0aGUgZm9sbG93aW5nIDoKKwkJICAgIGVjaG8gMHgwVDAwMERERCA+IC9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9hc3VzX2xhcHRvcC8KKwkJd2hlcmUgVCBjb250cm9sIHRoZSAzIGxldHRlcnMgZGlzcGxheSwgYW5kIERERCB0aGUgMyBkaWdpdHMgZGlzcGxheS4KKwkJVGhlIERERCB0YWJsZSBjYW4gYmUgZm91bmQgaW4gRG9jdW1lbnRhdGlvbi9sYXB0b3BzL2FzdXMtbGFwdG9wLnR4dAorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3BsYXRmb3JtL2FzdXNfbGFwdG9wL2JsdWV0b290aAorRGF0ZToJCUphbnVhcnkgMjAwNworS2VybmVsVmVyc2lvbjoJMi42LjIwCitDb250YWN0OgkiQ29yZW50aW4gQ2hhcnkiIDxjb3JlbnRpbmNqQGlrc2FpZi5uZXQ+CitEZXNjcmlwdGlvbjoKKwkJQ29udHJvbCB0aGUgYmx1ZXRvb3RoIGRldmljZS4gMSBtZWFucyBvbiwgMCBtZWFucyBvZmYuCisJCVRoaXMgbWF5IGNvbnRyb2wgdGhlIGxlZCwgdGhlIGRldmljZSBvciBib3RoLgorVXNlcnM6CQlMYXBzdXMKKworV2hhdDoJCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9hc3VzX2xhcHRvcC93bGFuCitEYXRlOgkJSmFudWFyeSAyMDA3CitLZXJuZWxWZXJzaW9uOgkyLjYuMjAKK0NvbnRhY3Q6CSJDb3JlbnRpbiBDaGFyeSIgPGNvcmVudGluY2pAaWtzYWlmLm5ldD4KK0Rlc2NyaXB0aW9uOgorCQlDb250cm9sIHRoZSB3bGFuIGRldmljZS4gMSBtZWFucyBvbiwgMCBtZWFucyBvZmYuCisJCVRoaXMgbWF5IGNvbnRyb2wgdGhlIGxlZCwgdGhlIGRldmljZSBvciBib3RoLgorVXNlcnM6CQlMYXBzdXMKKworV2hhdDoJCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9hc3VzX2xhcHRvcC93aW1heAorRGF0ZToJCU9jdG9iZXIgMjAxMAorS2VybmVsVmVyc2lvbjoJMi42LjM3CitDb250YWN0OgkiQ29yZW50aW4gQ2hhcnkiIDxjb3JlbnRpbmNqQGlrc2FpZi5uZXQ+CitEZXNjcmlwdGlvbjoKKwkJQ29udHJvbCB0aGUgd2ltYXggZGV2aWNlLiAxIG1lYW5zIG9uLCAwIG1lYW5zIG9mZi4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9hc3VzX2xhcHRvcC93d2FuCitEYXRlOgkJT2N0b2JlciAyMDEwCitLZXJuZWxWZXJzaW9uOgkyLjYuMzcKK0NvbnRhY3Q6CSJDb3JlbnRpbiBDaGFyeSIgPGNvcmVudGluY2pAaWtzYWlmLm5ldD4KK0Rlc2NyaXB0aW9uOgorCQlDb250cm9sIHRoZSB3d2FuICgzRykgZGV2aWNlLiAxIG1lYW5zIG9uLCAwIG1lYW5zIG9mZi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcGxhdGZvcm0tYXN1cy13bWkgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXBsYXRmb3JtLWFzdXMtd21pCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxOWUxZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXBsYXRmb3JtLWFzdXMtd21pCkBAIC0wLDAgKzEsMzggQEAKK1doYXQ6CQkvc3lzL2RldmljZXMvcGxhdGZvcm0vPHBsYXRmb3JtPi9jcHVmdgorRGF0ZToJCU9jdCAyMDEwCitLZXJuZWxWZXJzaW9uOgkyLjYuMzcKK0NvbnRhY3Q6CSJDb3JlbnRpbiBDaGFyeSIgPGNvcmVudGluY2pAaWtzYWlmLm5ldD4KK0Rlc2NyaXB0aW9uOgorCQlDaGFuZ2UgQ1BVIGNsb2NrIGNvbmZpZ3VyYXRpb24gKHdyaXRlLW9ubHkpLgorCQlUaGVyZSBhcmUgdGhyZWUgYXZhaWxhYmxlIGNsb2NrIGNvbmZpZ3VyYXRpb246CisJCSAgICAqIDAgLT4gU3VwZXIgUGVyZm9ybWFuY2UgTW9kZQorCQkgICAgKiAxIC0+IEhpZ2ggUGVyZm9ybWFuY2UgTW9kZQorCQkgICAgKiAyIC0+IFBvd2VyIFNhdmluZyBNb2RlCisKK1doYXQ6CQkvc3lzL2RldmljZXMvcGxhdGZvcm0vPHBsYXRmb3JtPi9jYW1lcmEKK0RhdGU6CQlKYW4gMjAxMAorS2VybmVsVmVyc2lvbjoJMi42LjM5CitDb250YWN0OgkiQ29yZW50aW4gQ2hhcnkiIDxjb3JlbnRpbmNqQGlrc2FpZi5uZXQ+CitEZXNjcmlwdGlvbjoKKwkJQ29udHJvbCB0aGUgY2FtZXJhLiAxIG1lYW5zIG9uLCAwIG1lYW5zIG9mZi4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS88cGxhdGZvcm0+L2NhcmRyCitEYXRlOgkJSmFuIDIwMTAKK0tlcm5lbFZlcnNpb246CTIuNi4zOQorQ29udGFjdDoJIkNvcmVudGluIENoYXJ5IiA8Y29yZW50aW5jakBpa3NhaWYubmV0PgorRGVzY3JpcHRpb246CisJCUNvbnRyb2wgdGhlIGNhcmQgcmVhZGVyLiAxIG1lYW5zIG9uLCAwIG1lYW5zIG9mZi4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS88cGxhdGZvcm0+L3RvdWNocGFkCitEYXRlOgkJSmFuIDIwMTAKK0tlcm5lbFZlcnNpb246CTIuNi4zOQorQ29udGFjdDoJIkNvcmVudGluIENoYXJ5IiA8Y29yZW50aW5jakBpa3NhaWYubmV0PgorRGVzY3JpcHRpb246CisJCUNvbnRyb2wgdGhlIGNhcmQgdG91Y2hwYWQuIDEgbWVhbnMgb24sIDAgbWVhbnMgb2ZmLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3BsYXRmb3JtLzxwbGF0Zm9ybT4vbGlkX3Jlc3VtZQorRGF0ZToJCU1heSAyMDEyCitLZXJuZWxWZXJzaW9uOgkzLjUKK0NvbnRhY3Q6CSJBY2VMYW4gS2FvIiA8YWNlbGFuLmthb0BjYW5vbmljYWwuY29tPgorRGVzY3JpcHRpb246CisJCVJlc3VtZSBvbiBsaWQgb3Blbi4gMSBtZWFucyBvbiwgMCBtZWFucyBvZmYuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXBsYXRmb3JtLWF0OTEgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXBsYXRmb3JtLWF0OTEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNjNmE4NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcGxhdGZvcm0tYXQ5MQpAQCAtMCwwICsxLDI1IEBACitXaGF0OgkJL3N5cy9kZXZpY2VzL3BsYXRmb3JtL2F0OTFfY2FuL25ldC88aWZhY2U+L21iMF9pZAorRGF0ZToJCUphbnVhcnkgMjAxMQorS2VybmVsVmVyc2lvbjoJMi42LjM4CitDb250YWN0OglNYXJjIEtsZWluZS1CdWRkZSA8a2VybmVsQHBlbmd1dHJvbml4LmRlPgorRGVzY3JpcHRpb246CisJCVZhbHVlIHJlcHJlc2VudGluZyB0aGUgY2FuX2lkIG9mIG1haWxib3ggMC4KKworCQlEZWZhdWx0OiAweDdmZiAoc3RhbmRhcmQgZnJhbWUpCisKKwkJRHVlIHRvIGEgY2hpcCBidWcgKGVycmF0YSA1MC4yLjYuMyAmIDUwLjMuNS4zIGluCisJCSJBVDkxU0FNOTI2MyBQcmVsaW1pbmFyeSA2MjQ5SC1BVEFSTS0yNy1KdWwtMDkiKSB0aGUKKwkJY29udGVudHMgb2YgbWFpbGJveCAwIG1heSBiZSBzZW5kIHVuZGVyIGNlcnRhaW4KKwkJY29uZGl0aW9ucyAoZXZlbiBpZiBkaXNhYmxlZCBvciBpbiByeCBtb2RlKS4KKworCQlUaGUgd29ya2Fyb3VuZCBpbiB0aGUgZXJyYXRhIHN1Z2dlc3RzIG5vdCB0byB1c2UgdGhlCisJCW1haWxib3ggYW5kIGxvYWQgaXQgd2l0aCBhbiB1bnVzZWQgaWRlbnRpZmllci4KKworCQlJbiBvcmRlciB0byB1c2UgYW4gZXh0ZW5kZWQgY2FuX2lkIGFkZCB0aGUKKwkJQ0FOX0VGRl9GTEFHICgweDgwMDAwMDAwVSkgdG8gdGhlIGNhbl9pZC4gRXhhbXBsZToKKworCQktIHN0YW5kYXJkIGlkIDB4N2ZmOgorCQllY2hvIDB4N2ZmICAgICAgPiAvc3lzL2NsYXNzL25ldC9jYW4wL21iMF9pZAorCisJCS0gZXh0ZW5kZWQgaWQgMHgxZmZmZmZmZjoKKwkJZWNobyAweDlmZmZmZmZmID4gL3N5cy9jbGFzcy9uZXQvY2FuMC9tYjBfaWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcGxhdGZvcm0tYnJjbXN0Yi1naXNiLWFyYiBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcGxhdGZvcm0tYnJjbXN0Yi1naXNiLWFyYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWJhZDkyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1wbGF0Zm9ybS1icmNtc3RiLWdpc2ItYXJiCkBAIC0wLDAgKzEsOCBAQAorV2hhdDoJCS9zeXMvZGV2aWNlcy8uLi8uLi9naXNiX2FyYl90aW1lb3V0CitEYXRlOgkJTWF5IDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTcKK0NvbnRhY3Q6CUZsb3JpYW4gRmFpbmVsbGkgPGYuZmFpbmVsbGlAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVJldHVybnMgdGhlIGN1cnJlbnRseSBjb25maWd1cmVkIHJhdyB0aW1lb3V0IHZhbHVlIG9mIHRoZQorCQlCcm9hZGNvbSBTZXQgVG9wIEJveCBpbnRlcm5hbCBHSVNCIGJ1cyBhcmJpdGVyLiBNaW5pbXVtIHZhbHVlCisJCWlzIDEsIGFuZCBtYXhpbXVtIHZhbHVlIGlzIDB4ZmZmZmZmZmYuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXBsYXRmb3JtLWNoaXBpZGVhLXVzYi1vdGcgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXBsYXRmb3JtLWNoaXBpZGVhLXVzYi1vdGcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTUxYzU5NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcGxhdGZvcm0tY2hpcGlkZWEtdXNiLW90ZwpAQCAtMCwwICsxLDU2IEBACitXaGF0OgkJL3N5cy9idXMvcGxhdGZvcm0vZGV2aWNlcy9jaV9oZHJjLjAvaW5wdXRzL2FfYnVzX3JlcQorRGF0ZToJCUZlYiAyMDE0CitDb250YWN0OglMaSBKdW4gPGI0NzYyNEBmcmVlc2NhbGUuY29tPgorRGVzY3JpcHRpb246CisJCUNhbiBiZSBzZXQgYW5kIHJlYWQuCisJCVNldCBhX2J1c19yZXEoQS1kZXZpY2UgYnVzIHJlcXVlc3QpIGlucHV0IHRvIGJlIDEgaWYKKwkJdGhlIGFwcGxpY2F0aW9uIHJ1bm5pbmcgb24gdGhlIEEtZGV2aWNlIHdhbnRzIHRvIHVzZSB0aGUgYnVzLAorCQlhbmQgdG8gYmUgMCB3aGVuIHRoZSBhcHBsaWNhdGlvbiBubyBsb25nZXIgd2FudHMgdG8gdXNlCisJCXRoZSBidXMob3Igd2FudHMgdG8gd29yayBhcyBwZXJpcGhlcmFsKS4gYV9idXNfcmVxIGNhbiBhbHNvCisJCWJlIHNldCB0byAxIGJ5IGtlcm5lbCBpbiByZXNwb25zZSB0byByZW1vdGUgd2FrZXVwIHNpZ25hbGluZworCQlmcm9tIHRoZSBCLWRldmljZSwgdGhlIEEtZGV2aWNlIHNob3VsZCBkZWNpZGUgdG8gcmVzdW1lIHRoZSBidXMuCisKKwkJVmFsaWQgdmFsdWVzIGFyZSAiMSIgYW5kICIwIi4KKworCQlSZWFkaW5nOiByZXR1cm5zIDEgaWYgdGhlIGFwcGxpY2F0aW9uIHJ1bm5pbmcgb24gdGhlIEEtZGV2aWNlCisJCWlzIHVzaW5nIHRoZSBidXMgYXMgaG9zdCByb2xlLCBvdGhlcndpc2UgMC4KKworV2hhdDoJCS9zeXMvYnVzL3BsYXRmb3JtL2RldmljZXMvY2lfaGRyYy4wL2lucHV0cy9hX2J1c19kcm9wCitEYXRlOgkJRmViIDIwMTQKK0NvbnRhY3Q6CUxpIEp1biA8YjQ3NjI0QGZyZWVzY2FsZS5jb20+CitEZXNjcmlwdGlvbjoKKwkJQ2FuIGJlIHNldCBhbmQgcmVhZAorCQlUaGUgYV9idXNfZHJvcChBLWRldmljZSBidXMgZHJvcCkgaW5wdXQgaXMgMSB3aGVuIHRoZQorCQlhcHBsaWNhdGlvbiBydW5uaW5nIG9uIHRoZSBBLWRldmljZSB3YW50cyB0byBwb3dlciBkb3duCisJCXRoZSBidXMsIGFuZCBpcyAwIG90aGVyd2lzZSwgV2hlbiBhX2J1c19kcm9wIGlzIDEsIHRoZW4KKwkJdGhlIGFfYnVzX3JlcSBzaGFsbCBiZSAwLgorCisJCVZhbGlkIHZhbHVlcyBhcmUgIjEiIGFuZCAiMCIuCisKKwkJUmVhZGluZzogcmV0dXJucyAxIGlmIHRoZSBidXMgaXMgb2ZmKHZidXMgaXMgdHVybmVkIG9mZikgYnkKKwkJCSBBLWRldmljZSwgb3RoZXJ3aXNlIDAuCisKK1doYXQ6CQkvc3lzL2J1cy9wbGF0Zm9ybS9kZXZpY2VzL2NpX2hkcmMuMC9pbnB1dHMvYl9idXNfcmVxCitEYXRlOgkJRmViIDIwMTQKK0NvbnRhY3Q6CUxpIEp1biA8YjQ3NjI0QGZyZWVzY2FsZS5jb20+CitEZXNjcmlwdGlvbjoKKwkJQ2FuIGJlIHNldCBhbmQgcmVhZC4KKwkJVGhlIGJfYnVzX3JlcShCLWRldmljZSBidXMgcmVxdWVzdCkgaW5wdXQgaXMgMSBkdXJpbmcgdGhlIHRpbWUKKwkJdGhhdCB0aGUgYXBwbGljYXRpb24gcnVubmluZyBvbiB0aGUgQi1kZXZpY2Ugd2FudHMgdG8gdXNlIHRoZQorCQlidXMgYXMgaG9zdCwgYW5kIGlzIDAgd2hlbiB0aGUgYXBwbGljYXRpb24gbm8gbG9uZ2VyIHdhbnRzIHRvCisJCXdvcmsgYXMgaG9zdCBhbmQgZGVjaWRlcyB0byBzd2l0Y2ggYmFjayB0byBiZSBwZXJpcGhlcmFsLgorCisJCVZhbGlkIHZhbHVlcyBhcmUgIjEiIGFuZCAiMCIuCisKKwkJUmVhZGluZzogcmV0dXJucyBpZiB0aGUgYXBwbGljYXRpb24gcnVubmluZyBvbiB0aGUgQiBkZXZpY2UKKwkJaXMgdXNpbmcgdGhlIGJ1cyBhcyBob3N0IHJvbGUsIG90aGVyd2lzZSAwLgorCitXaGF0OgkJL3N5cy9idXMvcGxhdGZvcm0vZGV2aWNlcy9jaV9oZHJjLjAvaW5wdXRzL2FfY2xyX2VycgorRGF0ZToJCUZlYiAyMDE0CitDb250YWN0OglMaSBKdW4gPGI0NzYyNEBmcmVlc2NhbGUuY29tPgorRGVzY3JpcHRpb246CisJCU9ubHkgY2FuIGJlIHNldC4KKwkJVGhlIGFfY2xyX2VycihBLWRldmljZSBWYnVzIGVycm9yIGNsZWFyKSBpbnB1dCBpcyB1c2VkIHRvIGNsZWFyCisJCXZidXMgZXJyb3IsIHRoZW4gQS1kZXZpY2Ugd2lsbCBwb3dlciBkb3duIHRoZSBidXMuCisKKwkJVmFsaWQgdmFsdWUgaXMgIjEiCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXBsYXRmb3JtLWRlbGwtbGFwdG9wIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1wbGF0Zm9ybS1kZWxsLWxhcHRvcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzZhMGI4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1wbGF0Zm9ybS1kZWxsLWxhcHRvcApAQCAtMCwwICsxLDY5IEBACitXaGF0OgkJL3N5cy9jbGFzcy9sZWRzL2RlbGw6OmtiZF9iYWNrbGlnaHQvYWxzX2VuYWJsZWQKK0RhdGU6CQlEZWNlbWJlciAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE5CitDb250YWN0OglHYWJyaWVsZSBNYXp6b3R0YSA8Z2FicmllbGUubXp0QGdtYWlsLmNvbT4sCisJCVBhbGkgUm9ow6FyIDxwYWxpLnJvaGFyQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGZpbGUgYWxsb3dzIHRvIGNvbnRyb2wgdGhlIGF1dG9tYXRpYyBrZXlib2FyZAorCQlpbGx1bWluYXRpb24gbW9kZSBvbiBzb21lIHN5c3RlbXMgdGhhdCBoYXZlIGFuIGFtYmllbnQKKwkJbGlnaHQgc2Vuc29yLiBXcml0ZSAxIHRvIHRoaXMgZmlsZSB0byBlbmFibGUgdGhlIGF1dG8KKwkJbW9kZSwgMCB0byBkaXNhYmxlIGl0LgorCitXaGF0OgkJL3N5cy9jbGFzcy9sZWRzL2RlbGw6OmtiZF9iYWNrbGlnaHQvYWxzX3NldHRpbmcKK0RhdGU6CQlEZWNlbWJlciAyMDE0CitLZXJuZWxWZXJzaW9uOgkzLjE5CitDb250YWN0OglHYWJyaWVsZSBNYXp6b3R0YSA8Z2FicmllbGUubXp0QGdtYWlsLmNvbT4sCisJCVBhbGkgUm9ow6FyIDxwYWxpLnJvaGFyQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGZpbGUgYWxsb3dzIHRvIHNwZWNpZml5IHRoZSBvbi9vZmYgdGhyZXNob2xkIHZhbHVlLAorCQlhcyByZXBvcnRlZCBieSB0aGUgYW1iaWVudCBsaWdodCBzZW5zb3IuCisKK1doYXQ6CQkvc3lzL2NsYXNzL2xlZHMvZGVsbDo6a2JkX2JhY2tsaWdodC9zdGFydF90cmlnZ2VycworRGF0ZToJCURlY2VtYmVyIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTkKK0NvbnRhY3Q6CUdhYnJpZWxlIE1henpvdHRhIDxnYWJyaWVsZS5tenRAZ21haWwuY29tPiwKKwkJUGFsaSBSb2jDoXIgPHBhbGkucm9oYXJAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoaXMgZmlsZSBhbGxvd3MgdG8gY29udHJvbCB0aGUgaW5wdXQgdHJpZ2dlcnMgdGhhdAorCQl0dXJuIG9uIHRoZSBrZXlib2FyZCBiYWNrbGlnaHQgaWxsdW1pbmF0aW9uIHRoYXQgaXMKKwkJZGlzYWJsZWQgYmVjYXVzZSBvZiBpbmFjdGl2aXR5LgorCQlSZWFkIHRoZSBmaWxlIHRvIHNlZSB0aGUgdHJpZ2dlcnMgYXZhaWxhYmxlLiBUaGUgb25lcworCQllbmFibGVkIGFyZSBwcmVjZWRlZCBieSAnKycsIHRob3NlIGRpc2FibGVkIGJ5ICctJy4KKworCQlUbyBlbmFibGUgYSB0cmlnZ2VyLCB3cml0ZSBpdHMgbmFtZSBwcmVjZWRlZCBieSAnKycgdG8KKwkJdGhpcyBmaWxlLiBUbyBkaXNhYmxlIGEgdHJpZ2dlciwgd3JpdGUgaXRzIG5hbWUgcHJlY2VkZWQKKwkJYnkgJy0nIGluc3RlYWQuCisKKwkJRm9yIGV4YW1wbGUsIHRvIGVuYWJsZSB0aGUga2V5Ym9hcmQgYXMgdHJpZ2dlciBydW46CisJCSAgICBlY2hvICtrZXlib2FyZCA+IC9zeXMvY2xhc3MvbGVkcy9kZWxsOjprYmRfYmFja2xpZ2h0L3N0YXJ0X3RyaWdnZXJzCisJCVRvIGRpc2FibGUgaXQ6CisJCSAgICBlY2hvIC1rZXlib2FyZCA+IC9zeXMvY2xhc3MvbGVkcy9kZWxsOjprYmRfYmFja2xpZ2h0L3N0YXJ0X3RyaWdnZXJzCisKKwkJTm90ZSB0aGF0IG5vdCBhbGwgdGhlIGF2YWlsYWJsZSB0cmlnZ2VycyBjYW4gYmUgY29uZmlndXJlZC4KKworV2hhdDoJCS9zeXMvY2xhc3MvbGVkcy9kZWxsOjprYmRfYmFja2xpZ2h0L3N0b3BfdGltZW91dAorRGF0ZToJCURlY2VtYmVyIDIwMTQKK0tlcm5lbFZlcnNpb246CTMuMTkKK0NvbnRhY3Q6CUdhYnJpZWxlIE1henpvdHRhIDxnYWJyaWVsZS5tenRAZ21haWwuY29tPiwKKwkJUGFsaSBSb2jDoXIgPHBhbGkucm9oYXJAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoaXMgZmlsZSBhbGxvd3MgdG8gc3BlY2lmeSB0aGUgaW50ZXJ2YWwgYWZ0ZXIgd2hpY2ggdGhlCisJCWtleWJvYXJkIGlsbHVtaW5hdGlvbiBpcyBkaXNhYmxlZCBiZWNhdXNlIG9mIGluYWN0aXZpdHkuCisJCVRoZSB0aW1lb3V0cyBhcmUgZXhwcmVzc2VkIGluIHNlY29uZHMsIG1pbnV0ZXMsIGhvdXJzIGFuZAorCQlkYXlzLCBmb3Igd2hpY2ggdGhlIHN5bWJvbHMgYXJlICdzJywgJ20nLCAnaCcgYW5kICdkJworCQlyZXNwZWN0aXZlbHkuCisKKwkJVG8gY29uZmlndXJlIHRoZSB0aW1lb3V0LCB3cml0ZSB0byB0aGlzIGZpbGUgYSB2YWx1ZSBhbG9uZworCQl3aXRoIGFueSB0aGUgYWJvdmUgdW5pdHMuIElmIG5vIHVuaXQgaXMgc3BlY2lmaWVkLCB0aGUgdmFsdWUKKwkJaXMgYXNzdW1lZCB0byBiZSBleHByZXNzZWQgaW4gc2Vjb25kcy4KKworCQlGb3IgZXhhbXBsZSwgdG8gc2V0IHRoZSB0aW1lb3V0IHRvIDEwIG1pbnV0ZXMgcnVuOgorCQkgICAgZWNobyAxMG0gPiAvc3lzL2NsYXNzL2xlZHMvZGVsbDo6a2JkX2JhY2tsaWdodC9zdG9wX3RpbWVvdXQKKworCQlOb3RlIHRoYXQgd2hlbiB0aGlzIGZpbGUgaXMgcmVhZCwgdGhlIHJldHVybmVkIHZhbHVlIG1pZ2h0IGJlCisJCWV4cHJlc3NlZCBpbiBhIGRpZmZlcmVudCB1bml0IHRoYW4gdGhlIG9uZSB1c2VkIHdoZW4gdGhlIHRpbWVvdXQKKwkJd2FzIHNldC4KKworCQlBbHNvIG5vdGUgdGhhdCBvbmx5IHNvbWUgdGltZW91dHMgYXJlIHN1cHBvcnRlZCBhbmQgdGhhdAorCQlzb21lIHN5c3RlbXMgbWlnaHQgZmFsbCBiYWNrIHRvIGEgc3BlY2lmaWMgdGltZW91dCBpbiBjYXNlCisJCWFuIGludmFsaWQgdGltZW91dCBpcyB3cml0dGVuIHRvIHRoaXMgZmlsZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcGxhdGZvcm0tZWVlcGMtbGFwdG9wIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1wbGF0Zm9ybS1lZWVwYy1sYXB0b3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWIwMjZjNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcGxhdGZvcm0tZWVlcGMtbGFwdG9wCkBAIC0wLDAgKzEsNTAgQEAKK1doYXQ6CQkvc3lzL2RldmljZXMvcGxhdGZvcm0vZWVlcGMvZGlzcAorRGF0ZToJCU1heSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CSJDb3JlbnRpbiBDaGFyeSIgPGNvcmVudGluY2pAaWtzYWlmLm5ldD4KK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGZpbGUgYWxsb3dzIGRpc3BsYXkgc3dpdGNoaW5nLgorCQktIDEgPSBMQ0QKKwkJLSAyID0gQ1JUCisJCS0gMyA9IExDRCtDUlQKKwkJSWYgeW91IHJ1biBYMTEsIHlvdSBzaG91bGQgdXNlIHhyYW5kciBpbnN0ZWFkLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3BsYXRmb3JtL2VlZXBjL2NhbWVyYQorRGF0ZToJCU1heSAyMDA4CitLZXJuZWxWZXJzaW9uOgkyLjYuMjYKK0NvbnRhY3Q6CSJDb3JlbnRpbiBDaGFyeSIgPGNvcmVudGluY2pAaWtzYWlmLm5ldD4KK0Rlc2NyaXB0aW9uOgorCQlDb250cm9sIHRoZSBjYW1lcmEuIDEgbWVhbnMgb24sIDAgbWVhbnMgb2ZmLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3BsYXRmb3JtL2VlZXBjL2NhcmRyCitEYXRlOgkJTWF5IDIwMDgKK0tlcm5lbFZlcnNpb246CTIuNi4yNgorQ29udGFjdDoJIkNvcmVudGluIENoYXJ5IiA8Y29yZW50aW5jakBpa3NhaWYubmV0PgorRGVzY3JpcHRpb246CisJCUNvbnRyb2wgdGhlIGNhcmQgcmVhZGVyLiAxIG1lYW5zIG9uLCAwIG1lYW5zIG9mZi4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9lZWVwYy9jcHVmdgorRGF0ZToJCUp1biAyMDA5CitLZXJuZWxWZXJzaW9uOgkyLjYuMzEKK0NvbnRhY3Q6CSJDb3JlbnRpbiBDaGFyeSIgPGNvcmVudGluY2pAaWtzYWlmLm5ldD4KK0Rlc2NyaXB0aW9uOgorCQlDaGFuZ2UgQ1BVIGNsb2NrIGNvbmZpZ3VyYXRpb24uCisJCU9uIHRoZSBFZWUgUEMgMTAwMEggdGhlcmUgYXJlIHRocmVlIGF2YWlsYWJsZSBjbG9jayBjb25maWd1cmF0aW9uOgorCQkgICAgKiAwIC0+IFN1cGVyIFBlcmZvcm1hbmNlIE1vZGUKKwkJICAgICogMSAtPiBIaWdoIFBlcmZvcm1hbmNlIE1vZGUKKwkJICAgICogMiAtPiBQb3dlciBTYXZpbmcgTW9kZQorCQlPbiBFZWUgUEMgNzAxIHRoZXJlIGlzIG9ubHkgMiBhdmFpbGFibGUgY2xvY2sgY29uZmlndXJhdGlvbnMuCisJCUF2YWlsYWJsZSBjb25maWd1cmF0aW9uIGFyZSBsaXN0ZWQgaW4gYXZhaWxhYmxlX2NwdWZ2IGZpbGUuCisJCVJlYWRpbmcgdGhpcyBmaWxlIHdpbGwgc2hvdyB0aGUgcmF3IGhleGFkZWNpbWFsIHZhbHVlIHdoaWNoCisJCWlzIGRlZmluZWQgYXMgZm9sbG93OgorCQl8IDggYml0IHwgOCBiaXQgfAorCQkgICAgfCAgICAgICBgLS0tLSBDdXJyZW50IG1vZGUKKwkJICAgIGAtLS0tLS0tLS0tLS0gQXZhaWxhYmxlcyBtb2RlcworCQlGb3IgZXhhbXBsZSwgMHgzMDEgbWVhbnM6IG1vZGUgMSBzZWxlY3RlZCwgMyBhdmFpbGFibGUgbW9kZXMuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvcGxhdGZvcm0vZWVlcGMvYXZhaWxhYmxlX2NwdWZ2CitEYXRlOgkJSnVuIDIwMDkKK0tlcm5lbFZlcnNpb246CTIuNi4zMQorQ29udGFjdDoJIkNvcmVudGluIENoYXJ5IiA8Y29yZW50aW5jakBpa3NhaWYubmV0PgorRGVzY3JpcHRpb246CisJCUxpc3QgYXZhaWxhYmxlIGNwdWZ2IG1vZGVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1wbGF0Zm9ybS1pZGVhcGFkLWxhcHRvcCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcGxhdGZvcm0taWRlYXBhZC1sYXB0b3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjMxZTc4MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcGxhdGZvcm0taWRlYXBhZC1sYXB0b3AKQEAgLTAsMCArMSwxOSBAQAorV2hhdDoJCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9pZGVhcGFkL2NhbWVyYV9wb3dlcgorRGF0ZToJCURlYyAyMDEwCitLZXJuZWxWZXJzaW9uOgkyLjYuMzcKK0NvbnRhY3Q6CSJJa2UgUGFuaGMgPGlrZS5wYW5AY2Fub25pY2FsLmNvbT4iCitEZXNjcmlwdGlvbjoKKwkJQ29udHJvbCB0aGUgcG93ZXIgb2YgY2FtZXJhIG1vZHVsZS4gMSBtZWFucyBvbiwgMCBtZWFucyBvZmYuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvcGxhdGZvcm0vaWRlYXBhZC9mYW5fbW9kZQorRGF0ZToJCUp1bmUgMjAxMgorS2VybmVsVmVyc2lvbjoJMy42CitDb250YWN0OgkiTWF4aW0gTWlraXR5YW5za2l5IDxtYXh0cmFtOTVAZ21haWwuY29tPiIKK0Rlc2NyaXB0aW9uOgorCQlDaGFuZ2UgZmFuIG1vZGUKKwkJVGhlcmUgYXJlIGZvdXIgYXZhaWxhYmxlIG1vZGVzOgorCQkJKiAwIC0+IFN1cGVyIFNpbGVudCBNb2RlCisJCQkqIDEgLT4gU3RhbmRhcmQgTW9kZQorCQkJKiAyIC0+IER1c3QgQ2xlYW5pbmcKKwkJCSogNCAtPiBFZmZpY2llbnQgVGhlcm1hbCBEaXNzaXBhdGlvbiBNb2RlCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcGxhdGZvcm0ta2ltIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1wbGF0Zm9ybS1raW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE2NTMyNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcGxhdGZvcm0ta2ltCkBAIC0wLDAgKzEsNDggQEAKK1doYXQ6CQkvc3lzL2RldmljZXMvcGxhdGZvcm0va2ltL2Rldl9uYW1lCitEYXRlOgkJSmFudWFyeSAyMDEwCitLZXJuZWxWZXJzaW9uOgkyLjYuMzgKK0NvbnRhY3Q6CSJQYXZhbiBTYXZveSIgPHBhdmFuX3Nhdm95QHRpLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlOYW1lIG9mIHRoZSBVQVJUIGRldmljZSBhdCB3aGljaCB0aGUgV0wxMjh4IGNoaXAKKwkJaXMgY29ubmVjdGVkLiBleGFtcGxlOiAiL2Rldi90dHlTMCIuCisJCVRoZSBkZXZpY2UgbmFtZSBmbG93cyBkb3duIHRvIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBib2FyZAorCQlpbml0aWFsaXphdGlvbiBmaWxlIGZyb20gdGhlIFNGSS9BVEFHUyBib290bG9hZGVyCisJCWZpcm13YXJlLiBUaGUgbmFtZSBleHBvc2VkIGlzIHJlYWQgZnJvbSB0aGUgdXNlci1zcGFjZQorCQlkYW1lb24gYW5kIG9wZW5zIHRoZSBkZXZpY2Ugd2hlbiBpbnN0YWxsIGlzIHJlcXVlc3RlZC4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9raW0vYmF1ZF9yYXRlCitEYXRlOgkJSmFudWFyeSAyMDEwCitLZXJuZWxWZXJzaW9uOgkyLjYuMzgKK0NvbnRhY3Q6CSJQYXZhbiBTYXZveSIgPHBhdmFuX3Nhdm95QHRpLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgbWF4aW11bSByZWxpYWJsZSBiYXVkLXJhdGUgdGhlIGhvc3QgY2FuIHN1cHBvcnQuCisJCURpZmZlcmVudCBwbGF0Zm9ybXMgdGVuZCB0byBoYXZlIGRpZmZlcmVudCBoaWdoLXNwZWVkCisJCVVBUlQgY29uZmlndXJhdGlvbnMsIHNvIHRoZSBiYXVkLXJhdGUgbmVlZHMgdG8gYmUgc2V0CisJCWxvY2FsbHkgYW5kIGFsc28gc2VudCBhY3Jvc3MgdG8gdGhlIFdMMTI4eCB2aWEgYSBIQ0ktVlMKKwkJY29tbWFuZC4gVGhlIGVudHJ5IGlzIHJlYWQgYW5kIG1hZGUgdXNlIGJ5IHRoZSB1c2VyLXNwYWNlCisJCWRhZW1vbiB3aGVuIHRoZSBsZGlzYyBpbnN0YWxsIGlzIHJlcXVlc3RlZC4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9raW0vZmxvd19jbnRybAorRGF0ZToJCUphbnVhcnkgMjAxMAorS2VybmVsVmVyc2lvbjoJMi42LjM4CitDb250YWN0OgkiUGF2YW4gU2F2b3kiIDxwYXZhbl9zYXZveUB0aS5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhlIFdMMTI4eCBtYWtlcyB1c2Ugb2YgZmxvdyBjb250cm9sIG1lY2hhbmlzbSwgYW5kIHRoaXMKKwkJZW50cnkgbW9zdCBvZnRlbiBzaG91bGQgYmUgMSwgdGhlIGhvc3QncyBVQVJUIGlzIHJlcXVpcmVkCisJCXRvIGhhdmUgdGhlIGNhcGFiaWxpdHkgb2YgZmxvdy1jb250cm9sLCBvciBlbHNlIHRoaXMKKwkJZW50cnkgY2FuIGJlIG1hZGUgdXNlIG9mIGZvciBleGNlcHRpb25zLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3BsYXRmb3JtL2tpbS9pbnN0YWxsCitEYXRlOgkJSmFudWFyeSAyMDEwCitLZXJuZWxWZXJzaW9uOgkyLjYuMzgKK0NvbnRhY3Q6CSJQYXZhbiBTYXZveSIgPHBhdmFuX3Nhdm95QHRpLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlXaGVuIG9uZSBvZiB0aGUgcHJvdG9jb2xzIEJsdWV0b290aCwgRk0gb3IgR1BTIHdhbnRzIHRvIG1ha2UKKwkJdXNlIG9mIHRoZSBzaGFyZWQgVUFSVCB0cmFuc3BvcnQsIGl0IHJlZ2lzdGVycyB0byB0aGUgc2hhcmVkCisJCXRyYW5zcG9ydCBkcml2ZXIsIHdoaWNoIHdpbGwgc2lnbmFsIHRoZSB1c2VyLXNwYWNlIGZvciBvcGVuaW5nLAorCQljb25maWd1cmluZyBiYXVkIGFuZCBpbnN0YWxsIGxpbmUgZGlzY2lwbGluZSB2aWEgdGhpcyBzeXNmcworCQllbnRyeS4gVGhpcyBlbnRyeSB3b3VsZCBiZSBwb2xsZWQgdXBvbiBieSB0aGUgdXNlci1zcGFjZQorCQlkYWVtb24gbWFuYWdpbmcgdGhlIFVBUlQsIGFuZCBpcyBub3RpZmllZCBhYm91dCB0aGUgY2hhbmdlCisJCWJ5IHRoZSBzeXNmc19ub3RpZnkuIFRoZSB2YWx1ZSB3b3VsZCBiZSAnMScgd2hlbiBVQVJUIG5lZWRzCisJCXRvIGJlIG9wZW5lZC9sZGlzYyBpbnN0YWxsZWQsIGFuZCB3b3VsZCBiZSAnMCcgd2hlbiBVQVJUCisJCWlzIG5vIG1vcmUgcmVxdWlyZWQgYW5kIG5lZWRzIHRvIGJlIGNsb3NlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcGxhdGZvcm0tbXNpLWxhcHRvcCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcGxhdGZvcm0tbXNpLWxhcHRvcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDdhMjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1wbGF0Zm9ybS1tc2ktbGFwdG9wCkBAIC0wLDAgKzEsODMgQEAKK1doYXQ6CQkvc3lzL2RldmljZXMvcGxhdGZvcm0vbXNpLWxhcHRvcC1wZi9sY2RfbGV2ZWwKK0RhdGU6CQlPY3QgMjAwNgorS2VybmVsVmVyc2lvbjoJMi42LjE5CitDb250YWN0OgkiTGVubmFydCBQb2V0dGVyaW5nIDxtenhyZWFyeUAwcG9pbnRlci5kZT4iCitEZXNjcmlwdGlvbjoKKwkJU2NyZWVuIGJyaWdodG5lc3M6IGNvbnRhaW5zIGEgc2luZ2xlIGludGVnZXIgaW4gdGhlIHJhbmdlIDAuLjguCisKK1doYXQ6CQkvc3lzL2RldmljZXMvcGxhdGZvcm0vbXNpLWxhcHRvcC1wZi9hdXRvX2JyaWdodG5lc3MKK0RhdGU6CQlPY3QgMjAwNgorS2VybmVsVmVyc2lvbjoJMi42LjE5CitDb250YWN0OgkiTGVubmFydCBQb2V0dGVyaW5nIDxtenhyZWFyeUAwcG9pbnRlci5kZT4iCitEZXNjcmlwdGlvbjoKKwkJRW5hYmxlIGF1dG9tYXRpYyBicmlnaHRuZXNzIGNvbnRyb2w6IGNvbnRhaW5zIGVpdGhlciAwIG9yIDEuIElmCisJCXNldCB0byAxIHRoZSBoYXJkd2FyZSBhZGp1c3RzIHRoZSBzY3JlZW4gYnJpZ2h0bmVzcworCQlhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIHBvd2VyIGNvcmQgaXMgcGx1Z2dlZC91bnBsdWdnZWQuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvcGxhdGZvcm0vbXNpLWxhcHRvcC1wZi93bGFuCitEYXRlOgkJT2N0IDIwMDYKK0tlcm5lbFZlcnNpb246CTIuNi4xOQorQ29udGFjdDoJIkxlbm5hcnQgUG9ldHRlcmluZyA8bXp4cmVhcnlAMHBvaW50ZXIuZGU+IgorRGVzY3JpcHRpb246CisJCVdMQU4gc3Vic3lzdGVtIGVuYWJsZWQ6IGNvbnRhaW5zIGVpdGhlciAwIG9yIDEuCisKK1doYXQ6CQkvc3lzL2RldmljZXMvcGxhdGZvcm0vbXNpLWxhcHRvcC1wZi9ibHVldG9vdGgKK0RhdGU6CQlPY3QgMjAwNgorS2VybmVsVmVyc2lvbjoJMi42LjE5CitDb250YWN0OgkiTGVubmFydCBQb2V0dGVyaW5nIDxtenhyZWFyeUAwcG9pbnRlci5kZT4iCitEZXNjcmlwdGlvbjoKKwkJQmx1ZXRvb3RoIHN1YnN5c3RlbSBlbmFibGVkOiBjb250YWlucyBlaXRoZXIgMCBvciAxLiBQbGVhc2UKKwkJbm90ZSB0aGF0IHRoaXMgZmlsZSBpcyBjb25zdGFudGx5IDAgaWYgbm8gQmx1ZXRvb3RoIGhhcmR3YXJlIGlzCisJCWF2YWlsYWJsZS4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9tc2ktbGFwdG9wLXBmL3RvdWNocGFkCitEYXRlOgkJTm92IDIwMTIKK0tlcm5lbFZlcnNpb246CTMuOAorQ29udGFjdDoJIk1heGltIE1pa2l0eWFuc2tpeSA8bWF4dHJhbTk1QGdtYWlsLmNvbT4iCitEZXNjcmlwdGlvbjoKKwkJQ29udGFpbnMgZWl0aGVyIDAgb3IgMSBhbmQgaW5kaWNhdGVzIGlmIHRvdWNocGFkIGlzIHR1cm5lZCBvbi4KKwkJVG91Y2hwYWQgc3RhdGUgY2FuIG9ubHkgYmUgdG9nZ2xlZCBieSBwcmVzc2luZyBGbitGMy4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9tc2ktbGFwdG9wLXBmL3R1cmJvX21vZGUKK0RhdGU6CQlOb3YgMjAxMgorS2VybmVsVmVyc2lvbjoJMy44CitDb250YWN0OgkiTWF4aW0gTWlraXR5YW5za2l5IDxtYXh0cmFtOTVAZ21haWwuY29tPiIKK0Rlc2NyaXB0aW9uOgorCQlDb250YWlucyBlaXRoZXIgMCBvciAxIGFuZCBpbmRpY2F0ZXMgaWYgdHVyYm8gbW9kZSBpcyB0dXJuZWQKKwkJb24uIEluIHR1cmJvIG1vZGUgcG93ZXIgTEVEIGlzIG9yYW5nZSBhbmQgcHJvY2Vzc29yIGlzCisJCW92ZXJjbG9ja2VkLiBUdXJibyBtb2RlIGlzIGF2YWlsYWJsZSBvbmx5IGlmIGNoYXJnaW5nLiBJdCBpcworCQlvbmx5IHBvc3NpYmxlIHRvIHRvZ2dsZSB0dXJibyBtb2RlIHN0YXRlIGJ5IHByZXNzaW5nIEZuK0YxMCwKKwkJYW5kIHRoZXJlIGlzIGEgZmV3IHNlY29uZHMgY29vbGRvd24gYmV0d2VlbiBzdWJzZXF1ZW50IHRvZ2dsZXMuCisJCUlmIHVzZXIgcHJlc3NlcyBGbitGMTAgdG9vIGZyZXF1ZW50LCB0dXJibyBtb2RlIHN0YXRlIGlzIG5vdAorCQljaGFuZ2VkLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3BsYXRmb3JtL21zaS1sYXB0b3AtcGYvZWNvX21vZGUKK0RhdGU6CQlOb3YgMjAxMgorS2VybmVsVmVyc2lvbjoJMy44CitDb250YWN0OgkiTWF4aW0gTWlraXR5YW5za2l5IDxtYXh0cmFtOTVAZ21haWwuY29tPiIKK0Rlc2NyaXB0aW9uOgorCQlDb250YWlucyBlaXRoZXIgMCBvciAxIGFuZCBpbmRpY2F0ZXMgaWYgRUNPIG1vZGUgaXMgdHVybmVkIG9uLgorCQlJbiBFQ08gbW9kZSBwb3dlciBMRUQgaXMgZ3JlZW4gYW5kIHVzZXJzcGFjZSBzaG91bGQgZG8gc29tZQorCQlwb3dlcnNhdmluZyBhY3Rpb25zLiBFQ08gbW9kZSBpcyBhdmFpbGFibGUgb25seSBvbiBiYXR0ZXJ5CisJCXBvd2VyLiBFQ08gbW9kZSBjYW4gb25seSBiZSB0b2dnbGVkIGJ5IHByZXNzaW5nIEZuK0YxMC4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9tc2ktbGFwdG9wLXBmL3R1cmJvX2Nvb2xkb3duCitEYXRlOgkJTm92IDIwMTIKK0tlcm5lbFZlcnNpb246CTMuOAorQ29udGFjdDoJIk1heGltIE1pa2l0eWFuc2tpeSA8bWF4dHJhbTk1QGdtYWlsLmNvbT4iCitEZXNjcmlwdGlvbjoKKwkJQ29udGFpbnMgdmFsdWUgaW4gcmFuZ2UgMC4uMzoKKwkJCSogMCAtPiBUdXJibyBtb2RlIGlzIG9mZgorCQkJKiAxIC0+IFR1cmJvIG1vZGUgaXMgb24sIGNhbm5vdCBiZSB0dXJuZWQgb2ZmIHlldAorCQkJKiAyIC0+IFR1cmJvIG1vZGUgaXMgb2ZmLCBjYW5ub3QgYmUgdHVybmVkIG9uIHlldAorCQkJKiAzIC0+IFR1cmJvIG1vZGUgaXMgb24KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9tc2ktbGFwdG9wLXBmL2F1dG9fZmFuCitEYXRlOgkJTm92IDIwMTIKK0tlcm5lbFZlcnNpb246CTMuOAorQ29udGFjdDoJIk1heGltIE1pa2l0eWFuc2tpeSA8bWF4dHJhbTk1QGdtYWlsLmNvbT4iCitEZXNjcmlwdGlvbjoKKwkJQ29udGFpbnMgZWl0aGVyIDAgb3IgMSBhbmQgaW5kaWNhdGVzIGlmIGZhbiBzcGVlZCBpcyBjb250cm9sbGVkCisJCWF1dG9tYXRpY2FsbHkgKDEpIG9yIGZhbiBydW5zIGF0IG1heGltYWwgc3BlZWQgKDApLiBDYW4gYmUKKwkJdG9nZ2xlZCBpbiBzb2Z0d2FyZS4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1wbGF0Zm9ybS10YWh2by11c2IgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXBsYXRmb3JtLXRhaHZvLXVzYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmUyMGNlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1wbGF0Zm9ybS10YWh2by11c2IKQEAgLTAsMCArMSwxNiBAQAorV2hhdDoJCS9zeXMvYnVzL3BsYXRmb3JtL2RldmljZXMvdGFodm8tdXNiL290Z19tb2RlCitEYXRlOgkJRGVjZW1iZXIgMjAxMworQ29udGFjdDoJQWFybyBLb3NraW5lbiA8YWFyby5rb3NraW5lbkBpa2kuZmk+CitEZXNjcmlwdGlvbjoKKwkJU2V0IG9yIHJlYWQgdGhlIGN1cnJlbnQgT1RHIG1vZGUuIFZhbGlkIHZhbHVlcyBhcmUgImhvc3QiIGFuZAorCQkicGVyaXBoZXJhbCIuCisKKwkJUmVhZGluZzogcmV0dXJucyB0aGUgY3VycmVudCBtb2RlLgorCitXaGF0OgkJL3N5cy9idXMvcGxhdGZvcm0vZGV2aWNlcy90YWh2by11c2IvdmJ1cworRGF0ZToJCURlY2VtYmVyIDIwMTMKK0NvbnRhY3Q6CUFhcm8gS29za2luZW4gPGFhcm8ua29za2luZW5AaWtpLmZpPgorRGVzY3JpcHRpb246CisJCVJlYWQgdGhlIGN1cnJlbnQgVkJVUyBzdGF0ZS4KKworCQlSZWFkaW5nOiByZXR1cm5zICJvbiIgb3IgIm9mZiIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXBsYXRmb3JtLXRzNTUwMCBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcGxhdGZvcm0tdHM1NTAwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2ODU5NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXBsYXRmb3JtLXRzNTUwMApAQCAtMCwwICsxLDU0IEBACitXaGF0OgkJL3N5cy9kZXZpY2VzL3BsYXRmb3JtL3RzNTUwMC9hZGMKK0RhdGU6CQlKYW51YXJ5IDIwMTMKK0tlcm5lbFZlcnNpb246CTMuNworQ29udGFjdDoJIlNhdm9pci1mYWlyZSBMaW51eCBJbmMuIiA8a2VybmVsQHNhdm9pcmZhaXJlbGludXguY29tPgorRGVzY3JpcHRpb246CisJCUluZGljYXRlcyB0aGUgcHJlc2VuY2Ugb2YgYW4gQS9EIENvbnZlcnRlci4gSWYgaXQgaXMgcHJlc2VudCwKKwkJaXQgd2lsbCBkaXNwbGF5ICIxIiwgb3RoZXJ3aXNlICIwIi4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS90czU1MDAvZXJlc2V0CitEYXRlOgkJSmFudWFyeSAyMDEzCitLZXJuZWxWZXJzaW9uOgkzLjcKK0NvbnRhY3Q6CSJTYXZvaXItZmFpcmUgTGludXggSW5jLiIgPGtlcm5lbEBzYXZvaXJmYWlyZWxpbnV4LmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlJbmRpY2F0ZXMgdGhlIHByZXNlbmNlIG9mIGFuIGV4dGVybmFsIHJlc2V0LiBJZiBpdCBpcyBwcmVzZW50LAorCQlpdCB3aWxsIGRpc3BsYXkgIjEiLCBvdGhlcndpc2UgIjAiLgorCitXaGF0OgkJL3N5cy9kZXZpY2VzL3BsYXRmb3JtL3RzNTUwMC9pZAorRGF0ZToJCUphbnVhcnkgMjAxMworS2VybmVsVmVyc2lvbjoJMy43CitDb250YWN0OgkiU2F2b2lyLWZhaXJlIExpbnV4IEluYy4iIDxrZXJuZWxAc2F2b2lyZmFpcmVsaW51eC5jb20+CitEZXNjcmlwdGlvbjoKKwkJUHJvZHVjdCBJRCBvZiB0aGUgVFMgYm9hcmQuIFRTLTU1MDAgSUQgaXMgMHg2MC4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS90czU1MDAvanVtcGVycworRGF0ZToJCUphbnVhcnkgMjAxMworS2VybmVsVmVyc2lvbjoJMy43CitDb250YWN0OgkiU2F2b2lyLWZhaXJlIExpbnV4IEluYy4iIDxrZXJuZWxAc2F2b2lyZmFpcmVsaW51eC5jb20+CitEZXNjcmlwdGlvbjoKKwkJQml0ZmllbGQgc2hvd2luZyB0aGUganVtcGVycycgc3RhdGUuIElmIGEganVtcGVyIGlzIHByZXNlbnQsCisJCXRoZSBjb3JyZXNwb25kaW5nIGJpdCBpcyBzZXQuIEZvciBpbnN0YW5jZSwgMHgwZSBtZWFucyBqdW1wZXJzCisJCTIsIDMgYW5kIDQgYXJlIHNldC4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS90czU1MDAvbmFtZQorRGF0ZToJCUp1bHkgMjAxNAorS2VybmVsVmVyc2lvbjoJMy4xNgorQ29udGFjdDoJIlNhdm9pci1mYWlyZSBMaW51eCBJbmMuIiA8a2VybmVsQHNhdm9pcmZhaXJlbGludXguY29tPgorRGVzY3JpcHRpb246CisJCU1vZGVsIG5hbWUgb2YgdGhlIFRTIGJvYXJkLCBlLmcuICJUUy01NTAwIi4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS90czU1MDAvcnM0ODUKK0RhdGU6CQlKYW51YXJ5IDIwMTMKK0tlcm5lbFZlcnNpb246CTMuNworQ29udGFjdDoJIlNhdm9pci1mYWlyZSBMaW51eCBJbmMuIiA8a2VybmVsQHNhdm9pcmZhaXJlbGludXguY29tPgorRGVzY3JpcHRpb246CisJCUluZGljYXRlcyB0aGUgcHJlc2VuY2Ugb2YgdGhlIFJTNDg1IG9wdGlvbi4gSWYgaXQgaXMgcHJlc2VudCwKKwkJaXQgd2lsbCBkaXNwbGF5ICIxIiwgb3RoZXJ3aXNlICIwIi4KKworV2hhdDoJCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS90czU1MDAvc3JhbQorRGF0ZToJCUphbnVhcnkgMjAxMworS2VybmVsVmVyc2lvbjoJMy43CitDb250YWN0OgkiU2F2b2lyLWZhaXJlIExpbnV4IEluYy4iIDxrZXJuZWxAc2F2b2lyZmFpcmVsaW51eC5jb20+CitEZXNjcmlwdGlvbjoKKwkJSW5kaWNhdGVzIHRoZSBwcmVzZW5jZSBvZiB0aGUgU1JBTSBvcHRpb24uIElmIGl0IGlzIHByZXNlbnQsCisJCWl0IHdpbGwgZGlzcGxheSAiMSIsIG90aGVyd2lzZSAiMCIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXBsYXRmb3JtLXR3bDQwMzAtdXNiIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1wbGF0Zm9ybS10d2w0MDMwLXVzYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTJjNTFiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1wbGF0Zm9ybS10d2w0MDMwLXVzYgpAQCAtMCwwICsxLDggQEAKK1doYXQ6IC9zeXMvYnVzL3BsYXRmb3JtL2RldmljZXMvKnR3bDQwMzAtdXNiL3ZidXMKK0Rlc2NyaXB0aW9uOgorCVJlYWQtb25seSBzdGF0dXMgcmVwb3J0aW5nIGlmIFZCVVMgKGFwcHJveCA1VikKKwlpcyBiZWluZyBzdXBwbGllZCBieSB0aGUgVVNCIGJ1cy4KKworCVBvc3NpYmxlIHZhbHVlczogIm9uIiwgIm9mZiIuCisKKwlDaGFuZ2VzIGFyZSBub3RpZmllZCB2aWEgc2VsZWN0L3BvbGwuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXBvd2VyIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1wb3dlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGIzNjhkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1wb3dlcgpAQCAtMCwwICsxLDI3MCBAQAorV2hhdDoJCS9zeXMvcG93ZXIvCitEYXRlOgkJQXVndXN0IDIwMDYKK0NvbnRhY3Q6CVJhZmFlbCBKLiBXeXNvY2tpIDxyandAcmp3eXNvY2tpLm5ldD4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9wb3dlciBkaXJlY3Rvcnkgd2lsbCBjb250YWluIGZpbGVzIHRoYXQgd2lsbAorCQlwcm92aWRlIGEgdW5pZmllZCBpbnRlcmZhY2UgdG8gdGhlIHBvd2VyIG1hbmFnZW1lbnQKKwkJc3Vic3lzdGVtLgorCitXaGF0OgkJL3N5cy9wb3dlci9zdGF0ZQorRGF0ZToJCU1heSAyMDE0CitDb250YWN0OglSYWZhZWwgSi4gV3lzb2NraSA8cmp3QHJqd3lzb2NraS5uZXQ+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvcG93ZXIvc3RhdGUgZmlsZSBjb250cm9scyBzeXN0ZW0gc2xlZXAgc3RhdGVzLgorCQlSZWFkaW5nIGZyb20gdGhpcyBmaWxlIHJldHVybnMgdGhlIGF2YWlsYWJsZSBzbGVlcCBzdGF0ZQorCQlsYWJlbHMsIHdoaWNoIG1heSBiZSAibWVtIiwgInN0YW5kYnkiLCAiZnJlZXplIiBhbmQgImRpc2siCisJCShoaWJlcm5hdGlvbikuICBUaGUgbWVhbmluZ3Mgb2YgdGhlIGZpcnN0IHRocmVlIGxhYmVscyBkZXBlbmQgb24KKwkJdGhlIHJlbGF0aXZlX3NsZWVwX3N0YXRlcyBjb21tYW5kIGxpbmUgYXJndW1lbnQgYXMgZm9sbG93czoKKwkJIDEpIHJlbGF0aXZlX3NsZWVwX3N0YXRlcyA9IDEKKwkJICAgICJtZW0iLCAic3RhbmRieSIsICJmcmVlemUiIHJlcHJlc2VudCBub24taGliZXJuYXRpb24gc2xlZXAKKwkJICAgIHN0YXRlcyBmcm9tIHRoZSBkZWVwZXN0ICgibWVtIiwgYWx3YXlzIHByZXNlbnQpIHRvIHRoZQorCQkgICAgc2hhbGxvd2VzdCAoImZyZWV6ZSIpLiAgInN0YW5kYnkiIGFuZCAiZnJlZXplIiBtYXkgb3IgbWF5CisJCSAgICBub3QgYmUgcHJlc2VudCBkZXBlbmRpbmcgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUKKwkJICAgIHBsYXRmb3JtLiAgImZyZWV6ZSIgY2FuIG9ubHkgYmUgcHJlc2VudCBpZiAic3RhbmRieSIgaXMKKwkJICAgIHByZXNlbnQuCisJCSAyKSByZWxhdGl2ZV9zbGVlcF9zdGF0ZXMgPSAwIChkZWZhdWx0KQorCQkgICAgIm1lbSIgLSAic3VzcGVuZC10by1SQU0iLCBwcmVzZW50IGlmIHN1cHBvcnRlZC4KKwkJICAgICJzdGFuZGJ5IiAtICJwb3dlci1vbiBzdXNwZW5kIiwgcHJlc2VudCBpZiBzdXBwb3J0ZWQuCisJCSAgICAiZnJlZXplIiAtICJzdXNwZW5kLXRvLWlkbGUiLCBhbHdheXMgcHJlc2VudC4KKworCQlXcml0aW5nIHRvIHRoaXMgZmlsZSBvbmUgb2YgdGhlc2Ugc3RyaW5ncyBjYXVzZXMgdGhlIHN5c3RlbSB0bworCQl0cmFuc2l0aW9uIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgc3RhdGUsIGlmIGF2YWlsYWJsZS4gIFNlZQorCQlEb2N1bWVudGF0aW9uL3Bvd2VyL3N0YXRlcy50eHQgZm9yIGEgZGVzY3JpcHRpb24gb2Ygd2hhdAorCQkic3VzcGVuZC10by1SQU0iLCAicG93ZXItb24gc3VzcGVuZCIgYW5kICJzdXNwZW5kLXRvLWlkbGUiIG1lYW4uCisKK1doYXQ6CQkvc3lzL3Bvd2VyL2Rpc2sKK0RhdGU6CQlTZXB0ZW1iZXIgMjAwNgorQ29udGFjdDoJUmFmYWVsIEouIFd5c29ja2kgPHJqd0Byand5c29ja2kubmV0PgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL3Bvd2VyL2Rpc2sgZmlsZSBjb250cm9scyB0aGUgb3BlcmF0aW5nIG1vZGUgb2YgdGhlCisJCXN1c3BlbmQtdG8tZGlzayBtZWNoYW5pc20uICBSZWFkaW5nIGZyb20gdGhpcyBmaWxlIHJldHVybnMKKwkJdGhlIG5hbWUgb2YgdGhlIG1ldGhvZCBieSB3aGljaCB0aGUgc3lzdGVtIHdpbGwgYmUgcHV0IHRvCisJCXNsZWVwIG9uIHRoZSBuZXh0IHN1c3BlbmQuICBUaGVyZSBhcmUgZm91ciBtZXRob2RzIHN1cHBvcnRlZDoKKwkJJ2Zpcm13YXJlJyAtIG1lYW5zIHRoYXQgdGhlIG1lbW9yeSBpbWFnZSB3aWxsIGJlIHNhdmVkIHRvIGRpc2sKKwkJYnkgc29tZSBmaXJtd2FyZSwgaW4gd2hpY2ggY2FzZSB3ZSBhbHNvIGFzc3VtZSB0aGF0IHRoZQorCQlmaXJtd2FyZSB3aWxsIGhhbmRsZSB0aGUgc3lzdGVtIHN1c3BlbmQuCisJCSdwbGF0Zm9ybScgLSB0aGUgbWVtb3J5IGltYWdlIHdpbGwgYmUgc2F2ZWQgYnkgdGhlIGtlcm5lbCBhbmQKKwkJdGhlIHN5c3RlbSB3aWxsIGJlIHB1dCB0byBzbGVlcCBieSB0aGUgcGxhdGZvcm0gZHJpdmVyIChlLmcuCisJCUFDUEkgb3Igb3RoZXIgUE0gcmVnaXN0ZXJzKS4KKwkJJ3NodXRkb3duJyAtIHRoZSBtZW1vcnkgaW1hZ2Ugd2lsbCBiZSBzYXZlZCBieSB0aGUga2VybmVsIGFuZAorCQl0aGUgc3lzdGVtIHdpbGwgYmUgcG93ZXJlZCBvZmYuCisJCSdyZWJvb3QnIC0gdGhlIG1lbW9yeSBpbWFnZSB3aWxsIGJlIHNhdmVkIGJ5IHRoZSBrZXJuZWwgYW5kCisJCXRoZSBzeXN0ZW0gd2lsbCBiZSByZWJvb3RlZC4KKworCQlBZGRpdGlvbmFsbHksIC9zeXMvcG93ZXIvZGlzayBjYW4gYmUgdXNlZCB0byB0dXJuIG9uIG9uZSBvZiB0aGUKKwkJdHdvIHRlc3RpbmcgbW9kZXMgb2YgdGhlIHN1c3BlbmQtdG8tZGlzayBtZWNoYW5pc206ICd0ZXN0cHJvYycKKwkJb3IgJ3Rlc3QnLiAgSWYgdGhlIHN1c3BlbmQtdG8tZGlzayBtZWNoYW5pc20gaXMgaW4gdGhlCisJCSd0ZXN0cHJvYycgbW9kZSwgd3JpdGluZyAnZGlzaycgdG8gL3N5cy9wb3dlci9zdGF0ZSB3aWxsIGNhdXNlCisJCXRoZSBrZXJuZWwgdG8gZGlzYWJsZSBub25ib290IENQVXMgYW5kIGZyZWV6ZSB0YXNrcywgd2FpdCBmb3IgNQorCQlzZWNvbmRzLCB1bmZyZWV6ZSB0YXNrcyBhbmQgZW5hYmxlIG5vbmJvb3QgQ1BVcy4gIElmIGl0IGlzIGluCisJCXRoZSAndGVzdCcgbW9kZSwgd3JpdGluZyAnZGlzaycgdG8gL3N5cy9wb3dlci9zdGF0ZSB3aWxsIGNhdXNlCisJCXRoZSBrZXJuZWwgdG8gZGlzYWJsZSBub25ib290IENQVXMgYW5kIGZyZWV6ZSB0YXNrcywgc2hyaW5rCisJCW1lbW9yeSwgc3VzcGVuZCBkZXZpY2VzLCB3YWl0IGZvciA1IHNlY29uZHMsIHJlc3VtZSBkZXZpY2VzLAorCQl1bmZyZWV6ZSB0YXNrcyBhbmQgZW5hYmxlIG5vbmJvb3QgQ1BVcy4gIFRoZW4sIHdlIGFyZSBhYmxlIHRvCisJCWxvb2sgaW4gdGhlIGxvZyBtZXNzYWdlcyBhbmQgd29yayBvdXQsIGZvciBleGFtcGxlLCB3aGljaCBjb2RlCisJCWlzIGJlaW5nIHNsb3cgYW5kIHdoaWNoIGRldmljZSBkcml2ZXJzIGFyZSBtaXNiZWhhdmluZy4KKworCQlUaGUgc3VzcGVuZC10by1kaXNrIG1ldGhvZCBtYXkgYmUgY2hvc2VuIGJ5IHdyaXRpbmcgdG8gdGhpcworCQlmaWxlIG9uZSBvZiB0aGUgYWNjZXB0ZWQgc3RyaW5nczoKKworCQknZmlybXdhcmUnCisJCSdwbGF0Zm9ybScKKwkJJ3NodXRkb3duJworCQkncmVib290JworCQkndGVzdHByb2MnCisJCSd0ZXN0JworCisJCUl0IHdpbGwgb25seSBjaGFuZ2UgdG8gJ2Zpcm13YXJlJyBvciAncGxhdGZvcm0nIGlmIHRoZSBzeXN0ZW0KKwkJc3VwcG9ydHMgdGhhdC4KKworV2hhdDoJCS9zeXMvcG93ZXIvaW1hZ2Vfc2l6ZQorRGF0ZToJCUF1Z3VzdCAyMDA2CitDb250YWN0OglSYWZhZWwgSi4gV3lzb2NraSA8cmp3QHJqd3lzb2NraS5uZXQ+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvcG93ZXIvaW1hZ2Vfc2l6ZSBmaWxlIGNvbnRyb2xzIHRoZSBzaXplIG9mIHRoZSBpbWFnZQorCQljcmVhdGVkIGJ5IHRoZSBzdXNwZW5kLXRvLWRpc2sgbWVjaGFuaXNtLiAgSXQgY2FuIGJlIHdyaXR0ZW4gYQorCQlzdHJpbmcgcmVwcmVzZW50aW5nIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgdGhhdCB3aWxsIGJlIHVzZWQKKwkJYXMgYW4gdXBwZXIgbGltaXQgb2YgdGhlIGltYWdlIHNpemUsIGluIGJ5dGVzLiAgVGhlIGtlcm5lbCdzCisJCXN1c3BlbmQtdG8tZGlzayBjb2RlIHdpbGwgZG8gaXRzIGJlc3QgdG8gZW5zdXJlIHRoZSBpbWFnZSBzaXplCisJCXdpbGwgbm90IGV4Y2VlZCB0aGlzIG51bWJlci4gIEhvd2V2ZXIsIGlmIGl0IHR1cm5zIG91dCB0byBiZQorCQlpbXBvc3NpYmxlLCB0aGUga2VybmVsIHdpbGwgdHJ5IHRvIHN1c3BlbmQgYW55d2F5IHVzaW5nIHRoZQorCQlzbWFsbGVzdCBpbWFnZSBwb3NzaWJsZS4gIEluIHBhcnRpY3VsYXIsIGlmICIwIiBpcyB3cml0dGVuIHRvCisJCXRoaXMgZmlsZSwgdGhlIHN1c3BlbmQgaW1hZ2Ugd2lsbCBiZSBhcyBzbWFsbCBhcyBwb3NzaWJsZS4KKworCQlSZWFkaW5nIGZyb20gdGhpcyBmaWxlIHdpbGwgZGlzcGxheSB0aGUgY3VycmVudCBpbWFnZSBzaXplCisJCWxpbWl0LCB3aGljaCBpcyBzZXQgdG8gNTAwIE1CIGJ5IGRlZmF1bHQuCisKK1doYXQ6CQkvc3lzL3Bvd2VyL3BtX3RyYWNlCitEYXRlOgkJQXVndXN0IDIwMDYKK0NvbnRhY3Q6CVJhZmFlbCBKLiBXeXNvY2tpIDxyandAcmp3eXNvY2tpLm5ldD4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9wb3dlci9wbV90cmFjZSBmaWxlIGNvbnRyb2xzIHRoZSBjb2RlIHdoaWNoIHNhdmVzIHRoZQorCQlsYXN0IFBNIGV2ZW50IHBvaW50IGluIHRoZSBSVEMgYWNyb3NzIHJlYm9vdHMsIHNvIHRoYXQgeW91IGNhbgorCQlkZWJ1ZyBhIG1hY2hpbmUgdGhhdCBqdXN0IGhhbmdzIGR1cmluZyBzdXNwZW5kIChvciBtb3JlCisJCWNvbW1vbmx5LCBkdXJpbmcgcmVzdW1lKS4gIE5hbWVseSwgdGhlIFJUQyBpcyBvbmx5IHVzZWQgdG8gc2F2ZQorCQl0aGUgbGFzdCBQTSBldmVudCBwb2ludCBpZiB0aGlzIGZpbGUgY29udGFpbnMgJzEnLiAgSW5pdGlhbGx5CisJCWl0IGNvbnRhaW5zICcwJyB3aGljaCBtYXkgYmUgY2hhbmdlZCB0byAnMScgYnkgd3JpdGluZyBhCisJCXN0cmluZyByZXByZXNlbnRpbmcgYSBub256ZXJvIGludGVnZXIgaW50byBpdC4KKworCQlUbyB1c2UgdGhpcyBkZWJ1Z2dpbmcgZmVhdHVyZSB5b3Ugc2hvdWxkIGF0dGVtcHQgdG8gc3VzcGVuZAorCQl0aGUgbWFjaGluZSwgdGhlbiByZWJvb3QgaXQgYW5kIHJ1bgorCisJCWRtZXNnIC1zIDEwMDAwMDAgfCBncmVwICdoYXNoIG1hdGNoZXMnCisKKwkJSWYgeW91IGRvIG5vdCBnZXQgYW55IG1hdGNoZXMgKG9yIHRoZXkgYXBwZWFyIHRvIGJlIGZhbHNlCisJCXBvc2l0aXZlcyksIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIGxhc3QgUE0gZXZlbnQgcG9pbnQKKwkJcmVmZXJyZWQgdG8gYSBkZXZpY2UgY3JlYXRlZCBieSBhIGxvYWRhYmxlIGtlcm5lbCBtb2R1bGUuICBJbgorCQl0aGlzIGNhc2UgY2F0IC9zeXMvcG93ZXIvcG1fdHJhY2VfZGV2X21hdGNoIChzZWUgYmVsb3cpIGFmdGVyCisJCXlvdXIgc3lzdGVtIGlzIHN0YXJ0ZWQgdXAgYW5kIHRoZSBrZXJuZWwgbW9kdWxlcyBhcmUgbG9hZGVkLgorCisJCUNBVVRJT046IFVzaW5nIGl0IHdpbGwgY2F1c2UgeW91ciBtYWNoaW5lJ3MgcmVhbC10aW1lIChDTU9TKQorCQljbG9jayB0byBiZSBzZXQgdG8gYSByYW5kb20gaW52YWxpZCB0aW1lIGFmdGVyIGEgcmVzdW1lLgorCitXaGF0OwkJL3N5cy9wb3dlci9wbV90cmFjZV9kZXZfbWF0Y2gKK0RhdGU6CQlPY3RvYmVyIDIwMTAKK0NvbnRhY3Q6CUphbWVzIEhvZ2FuIDxqYW1lc0BhbGJhbmFydHMuY29tPgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL3Bvd2VyL3BtX3RyYWNlX2Rldl9tYXRjaCBmaWxlIGNvbnRhaW5zIHRoZSBuYW1lIG9mIHRoZQorCQlkZXZpY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBsYXN0IFBNIGV2ZW50IHBvaW50IHNhdmVkIGluIHRoZSBSVEMKKwkJYWNyb3NzIHJlYm9vdHMgd2hlbiBwbV90cmFjZSBoYXMgYmVlbiB1c2VkLiAgTW9yZSBwcmVjaXNlbHkgaXQKKwkJY29udGFpbnMgdGhlIGxpc3Qgb2YgY3VycmVudCBkZXZpY2VzIChpbmNsdWRpbmcgdGhvc2UKKwkJcmVnaXN0ZXJlZCBieSBsb2FkYWJsZSBrZXJuZWwgbW9kdWxlcyBzaW5jZSBib290KSB3aGljaCBtYXRjaAorCQl0aGUgZGV2aWNlIGhhc2ggaW4gdGhlIFJUQyBhdCBib290LCB3aXRoIGEgbmV3bGluZSBhZnRlciBlYWNoCisJCW9uZS4KKworCQlUaGUgYWR2YW50YWdlIG9mIHRoaXMgZmlsZSBvdmVyIHRoZSBoYXNoIG1hdGNoZXMgcHJpbnRlZCB0byB0aGUKKwkJa2VybmVsIGxvZyAoc2VlIC9zeXMvcG93ZXIvcG1fdHJhY2UpLCBpcyB0aGF0IGl0IGluY2x1ZGVzCisJCWRldmljZXMgY3JlYXRlZCBhZnRlciBib290IGJ5IGxvYWRhYmxlIGtlcm5lbCBtb2R1bGVzLgorCisJCUR1ZSB0byB0aGUgc21hbGwgaGFzaCBzaXplIG5lY2Vzc2FyeSB0byBmaXQgaW4gdGhlIFJUQywgaXQgaXMKKwkJcG9zc2libGUgdGhhdCBtb3JlIHRoYW4gb25lIGRldmljZSBtYXRjaGVzIHRoZSBoYXNoLCBpbiB3aGljaAorCQljYXNlIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBpcyByZXF1aXJlZCB0byBkZXRlcm1pbmUgd2hpY2gKKwkJZGV2aWNlIGlzIGNhdXNpbmcgdGhlIHByb2JsZW0uICBOb3RlIHRoYXQgZ2VudWluZSBSVEMgY2xvY2sKKwkJdmFsdWVzIChzdWNoIGFzIHdoZW4gcG1fdHJhY2UgaGFzIG5vdCBiZWVuIHVzZWQpLCBjYW4gc3RpbGwKKwkJbWF0Y2ggYSBkZXZpY2UgYW5kIG91dHB1dCBpdCdzIG5hbWUgaGVyZS4KKworV2hhdDoJCS9zeXMvcG93ZXIvcG1fYXN5bmMKK0RhdGU6CQlKYW51YXJ5IDIwMDkKK0NvbnRhY3Q6CVJhZmFlbCBKLiBXeXNvY2tpIDxyandAcmp3eXNvY2tpLm5ldD4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9wb3dlci9wbV9hc3luYyBmaWxlIGNvbnRyb2xzIHRoZSBzd2l0Y2ggYWxsb3dpbmcgdGhlCisJCXVzZXIgc3BhY2UgdG8gZW5hYmxlIG9yIGRpc2FibGUgYXN5bmNocm9ub3VzIHN1c3BlbmQgYW5kIHJlc3VtZQorCQlvZiBkZXZpY2VzLiAgSWYgZW5hYmxlZCwgdGhpcyBmZWF0dXJlIHdpbGwgY2F1c2Ugc29tZSBkZXZpY2UKKwkJZHJpdmVycycgc3VzcGVuZCBhbmQgcmVzdW1lIGNhbGxiYWNrcyB0byBiZSBleGVjdXRlZCBpbiBwYXJhbGxlbAorCQl3aXRoIGVhY2ggb3RoZXIgYW5kIHdpdGggdGhlIG1haW4gc3VzcGVuZCB0aHJlYWQuICBJdCBpcyBlbmFibGVkCisJCWlmIHRoaXMgZmlsZSBjb250YWlucyAiMSIsIHdoaWNoIGlzIHRoZSBkZWZhdWx0LiAgSXQgbWF5IGJlCisJCWRpc2FibGVkIGJ5IHdyaXRpbmcgIjAiIHRvIHRoaXMgZmlsZSwgaW4gd2hpY2ggY2FzZSBhbGwgZGV2aWNlcworCQl3aWxsIGJlIHN1c3BlbmRlZCBhbmQgcmVzdW1lZCBzeW5jaHJvbm91c2x5LgorCitXaGF0OgkJL3N5cy9wb3dlci93YWtldXBfY291bnQKK0RhdGU6CQlKdWx5IDIwMTAKK0NvbnRhY3Q6CVJhZmFlbCBKLiBXeXNvY2tpIDxyandAcmp3eXNvY2tpLm5ldD4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9wb3dlci93YWtldXBfY291bnQgZmlsZSBhbGxvd3MgdXNlciBzcGFjZSB0byBwdXQgdGhlCisJCXN5c3RlbSBpbnRvIGEgc2xlZXAgc3RhdGUgd2hpbGUgdGFraW5nIGludG8gYWNjb3VudCB0aGUKKwkJY29uY3VycmVudCBhcnJpdmFsIG9mIHdha2V1cCBldmVudHMuICBSZWFkaW5nIGZyb20gaXQgcmV0dXJucworCQl0aGUgY3VycmVudCBudW1iZXIgb2YgcmVnaXN0ZXJlZCB3YWtldXAgZXZlbnRzIGFuZCBpdCBibG9ja3MgaWYKKwkJc29tZSB3YWtldXAgZXZlbnRzIGFyZSBiZWluZyBwcm9jZXNzZWQgYXQgdGhlIHRpbWUgdGhlIGZpbGUgaXMKKwkJcmVhZCBmcm9tLiAgV3JpdGluZyB0byBpdCB3aWxsIG9ubHkgc3VjY2VlZCBpZiB0aGUgY3VycmVudAorCQludW1iZXIgb2Ygd2FrZXVwIGV2ZW50cyBpcyBlcXVhbCB0byB0aGUgd3JpdHRlbiB2YWx1ZSBhbmQsIGlmCisJCXN1Y2Nlc3NmdWwsIHdpbGwgbWFrZSB0aGUga2VybmVsIGFib3J0IGEgc3Vic2VxdWVudCB0cmFuc2l0aW9uCisJCXRvIGEgc2xlZXAgc3RhdGUgaWYgYW55IHdha2V1cCBldmVudHMgYXJlIHJlcG9ydGVkIGFmdGVyIHRoZQorCQl3cml0ZSBoYXMgcmV0dXJuZWQuCisKK1doYXQ6CQkvc3lzL3Bvd2VyL3Jlc2VydmVkX3NpemUKK0RhdGU6CQlNYXkgMjAxMQorQ29udGFjdDoJUmFmYWVsIEouIFd5c29ja2kgPHJqd0Byand5c29ja2kubmV0PgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL3Bvd2VyL3Jlc2VydmVkX3NpemUgZmlsZSBhbGxvd3MgdXNlciBzcGFjZSB0byBjb250cm9sCisJCXRoZSBhbW91bnQgb2YgbWVtb3J5IHJlc2VydmVkIGZvciBhbGxvY2F0aW9ucyBtYWRlIGJ5IGRldmljZQorCQlkcml2ZXJzIGR1cmluZyB0aGUgImRldmljZSBmcmVlemUiIHN0YWdlIG9mIGhpYmVybmF0aW9uLiAgSXQgY2FuCisJCWJlIHdyaXR0ZW4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgdGhhdAorCQl3aWxsIGJlIHVzZWQgYXMgdGhlIGFtb3VudCBvZiBtZW1vcnkgdG8gcmVzZXJ2ZSBmb3IgYWxsb2NhdGlvbnMKKwkJbWFkZSBieSBkZXZpY2UgZHJpdmVycycgImZyZWV6ZSIgY2FsbGJhY2tzLCBpbiBieXRlcy4KKworCQlSZWFkaW5nIGZyb20gdGhpcyBmaWxlIHdpbGwgZGlzcGxheSB0aGUgY3VycmVudCB2YWx1ZSwgd2hpY2ggaXMKKwkJc2V0IHRvIDEgTUIgYnkgZGVmYXVsdC4KKworV2hhdDoJCS9zeXMvcG93ZXIvYXV0b3NsZWVwCitEYXRlOgkJQXByaWwgMjAxMgorQ29udGFjdDoJUmFmYWVsIEouIFd5c29ja2kgPHJqd0Byand5c29ja2kubmV0PgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL3Bvd2VyL2F1dG9zbGVlcCBmaWxlIGNhbiBiZSB3cml0dGVuIG9uZSBvZiB0aGUgc3RyaW5ncworCQlyZXR1cm5lZCBieSByZWFkcyBmcm9tIC9zeXMvcG93ZXIvc3RhdGUuICBJZiB0aGF0IGhhcHBlbnMsIGEKKwkJd29yayBpdGVtIGF0dGVtcHRpbmcgdG8gdHJpZ2dlciBhIHRyYW5zaXRpb24gb2YgdGhlIHN5c3RlbSB0bworCQl0aGUgc2xlZXAgc3RhdGUgcmVwcmVzZW50ZWQgYnkgdGhhdCBzdHJpbmcgaXMgcXVldWVkIHVwLiAgVGhpcworCQlhdHRlbXB0IHdpbGwgb25seSBzdWNjZWVkIGlmIHRoZXJlIGFyZSBubyBhY3RpdmUgd2FrZXVwIHNvdXJjZXMKKwkJaW4gdGhlIHN5c3RlbSBhdCB0aGF0IHRpbWUuICBBZnRlciBldmVyeSBleGVjdXRpb24sIHJlZ2FyZGxlc3MKKwkJb2Ygd2hldGhlciBvciBub3QgdGhlIGF0dGVtcHQgdG8gcHV0IHRoZSBzeXN0ZW0gdG8gc2xlZXAgaGFzCisJCXN1Y2NlZWRlZCwgdGhlIHdvcmsgaXRlbSByZXF1ZXVlcyBpdHNlbGYgdW50aWwgdXNlciBzcGFjZQorCQl3cml0ZXMgIm9mZiIgdG8gL3N5cy9wb3dlci9hdXRvc2xlZXAuCisKKwkJUmVhZGluZyBmcm9tIHRoaXMgZmlsZSBjYXVzZXMgdGhlIGxhc3Qgc3RyaW5nIHN1Y2Nlc3NmdWxseQorCQl3cml0dGVuIHRvIGl0IHRvIGJlIHJldHVybmVkLgorCitXaGF0OgkJL3N5cy9wb3dlci93YWtlX2xvY2sKK0RhdGU6CQlGZWJydWFyeSAyMDEyCitDb250YWN0OglSYWZhZWwgSi4gV3lzb2NraSA8cmp3QHJqd3lzb2NraS5uZXQ+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvcG93ZXIvd2FrZV9sb2NrIGZpbGUgYWxsb3dzIHVzZXIgc3BhY2UgdG8gY3JlYXRlCisJCXdha2V1cCBzb3VyY2Ugb2JqZWN0cyBhbmQgYWN0aXZhdGUgdGhlbSBvbiBkZW1hbmQgKGlmIG9uZSBvZgorCQl0aG9zZSB3YWtldXAgc291cmNlcyBpcyBhY3RpdmUsIHJlYWRzIGZyb20gdGhlCisJCS9zeXMvcG93ZXIvd2FrZXVwX2NvdW50IGZpbGUgYmxvY2sgb3IgcmV0dXJuIGZhbHNlKS4gIFdoZW4gYQorCQlzdHJpbmcgd2l0aG91dCB3aGl0ZSBzcGFjZSBpcyB3cml0dGVuIHRvIC9zeXMvcG93ZXIvd2FrZV9sb2NrLAorCQlpdCB3aWxsIGJlIGFzc3VtZWQgdG8gcmVwcmVzZW50IGEgd2FrZXVwIHNvdXJjZSBuYW1lLiAgSWYgdGhlcmUKKwkJaXMgYSB3YWtldXAgc291cmNlIG9iamVjdCB3aXRoIHRoYXQgbmFtZSwgaXQgd2lsbCBiZSBhY3RpdmF0ZWQKKwkJKHVubGVzcyBhY3RpdmUgYWxyZWFkeSkuICBPdGhlcndpc2UsIGEgbmV3IHdha2V1cCBzb3VyY2Ugb2JqZWN0CisJCXdpbGwgYmUgcmVnaXN0ZXJlZCwgYXNzaWduZWQgdGhlIGdpdmVuIG5hbWUgYW5kIGFjdGl2YXRlZC4KKwkJSWYgYSBzdHJpbmcgd3JpdHRlbiB0byAvc3lzL3Bvd2VyL3dha2VfbG9jayBjb250YWlucyB3aGl0ZQorCQlzcGFjZSwgdGhlIHBhcnQgb2YgdGhlIHN0cmluZyBwcmVjZWRpbmcgdGhlIHdoaXRlIHNwYWNlIHdpbGwgYmUKKwkJcmVnYXJkZWQgYXMgYSB3YWtldXAgc291cmNlIG5hbWUgYW5kIGhhbmRsZWQgYXMgZGVzY3JpdmVkIGFib3ZlLgorCQlUaGUgb3RoZXIgcGFydCBvZiB0aGUgc3RyaW5nIHdpbGwgYmUgcmVnYXJkZWQgYXMgYSB0aW1lb3V0IChpbgorCQluYW5vc2Vjb25kcykgc3VjaCB0aGF0IHRoZSB3YWtldXAgc291cmNlIHdpbGwgYmUgYXV0b21hdGljYWxseQorCQlkZWFjdGl2YXRlZCBhZnRlciBpdCBoYXMgZXhwaXJlZC4gIFRoZSB0aW1lb3V0LCBpZiBwcmVzZW50LCBpcworCQlzZXQgcmVnYXJkbGVzcyBvZiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgd2FrZXVwIHNvdXJjZSBvYmplY3QKKwkJaW4gcXVlc3Rpb24uCisKKwkJUmVhZHMgZnJvbSB0aGlzIGZpbGUgcmV0dXJuIGEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgdGhlIG5hbWVzIG9mCisJCXdha2V1cCBzb3VyY2VzIGNyZWF0ZWQgd2l0aCB0aGUgaGVscCBvZiBpdCB0aGF0IGFyZSBhY3RpdmUgYXQKKwkJdGhlIG1vbWVudCwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLgorCisKK1doYXQ6CQkvc3lzL3Bvd2VyL3dha2VfdW5sb2NrCitEYXRlOgkJRmVicnVhcnkgMjAxMgorQ29udGFjdDoJUmFmYWVsIEouIFd5c29ja2kgPHJqd0Byand5c29ja2kubmV0PgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL3Bvd2VyL3dha2VfdW5sb2NrIGZpbGUgYWxsb3dzIHVzZXIgc3BhY2UgdG8gZGVhY3RpdmF0ZQorCQl3YWtldXAgc291cmNlcyBjcmVhdGVkIHdpdGggdGhlIGhlbHAgb2YgL3N5cy9wb3dlci93YWtlX2xvY2suCisJCVdoZW4gYSBzdHJpbmcgaXMgd3JpdHRlbiB0byAvc3lzL3Bvd2VyL3dha2VfdW5sb2NrLCBpdCB3aWxsIGJlCisJCWFzc3VtZWQgdG8gcmVwcmVzZW50IHRoZSBuYW1lIG9mIGEgd2FrZXVwIHNvdXJjZSB0byBkZWFjdGl2YXRlLgorCQlJZiBhIHdha2V1cCBzb3VyY2Ugb2JqZWN0IG9mIHRoYXQgbmFtZSBleGlzdHMgYW5kIGlzIGFjdGl2ZSBhdAorCQl0aGUgbW9tZW50LCBpdCB3aWxsIGJlIGRlYWN0aXZhdGVkLgorCisJCVJlYWRzIGZyb20gdGhpcyBmaWxlIHJldHVybiBhIHN0cmluZyBjb25zaXN0aW5nIG9mIHRoZSBuYW1lcyBvZgorCQl3YWtldXAgc291cmNlcyBjcmVhdGVkIHdpdGggdGhlIGhlbHAgb2YgL3N5cy9wb3dlci93YWtlX2xvY2sKKwkJdGhhdCBhcmUgaW5hY3RpdmUgYXQgdGhlIG1vbWVudCwgc2VwYXJhdGVkIHdpdGggc3BhY2VzLgorCitXaGF0OgkJL3N5cy9wb3dlci9wbV9wcmludF90aW1lcworRGF0ZToJCU1heSAyMDEyCitDb250YWN0OglTYW1lZXIgTmFuZGEgPHNuYW5kYUBjaHJvbWl1bS5vcmc+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvcG93ZXIvcG1fcHJpbnRfdGltZXMgZmlsZSBhbGxvd3MgdXNlciBzcGFjZSB0bworCQljb250cm9sIHdoZXRoZXIgdGhlIHRpbWUgdGFrZW4gYnkgZGV2aWNlcyB0byBzdXNwZW5kIGFuZAorCQlyZXN1bWUgaXMgcHJpbnRlZC4gIFRoZXNlIHByaW50cyBhcmUgdXNlZnVsIGZvciBodW50aW5nIGRvd24KKwkJZGV2aWNlcyB0aGF0IHRha2UgdG9vIGxvbmcgdG8gc3VzcGVuZCBvciByZXN1bWUuCisKKwkJV3JpdGluZyBhICIxIiBlbmFibGVzIHRoaXMgcHJpbnRpbmcgd2hpbGUgd3JpdGluZyBhICIwIgorCQlkaXNhYmxlcyBpdC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzICIwIi4gIFJlYWRpbmcgZnJvbSB0aGlzIGZpbGUKKwkJd2lsbCBkaXNwbGF5IHRoZSBjdXJyZW50IHZhbHVlLgorCitXaGF0OgkJL3N5cy9wb3dlci9wbV93YWtldXBfaXJxCitEYXRlOgkJQXByaWwgMjAxNQorQ29udGFjdDoJQWxleGFuZHJhIFlhdGVzIDxhbGV4YW5kcmEueWF0ZXNAbGludXguaW50ZWwub3JnPgorRGVzY3JpcHRpb246CisJCVRoZSAvc3lzL3Bvd2VyL3BtX3dha2V1cF9pcnEgZmlsZSByZXBvcnRzIHRvIHVzZXIgc3BhY2UgdGhlIElSUQorCQludW1iZXIgb2YgdGhlIGZpcnN0IHdha2V1cCBpbnRlcnJ1cHQgKHRoYXQgaXMsIHRoZSBmaXJzdAorCQlpbnRlcnJ1cHQgZnJvbSBhbiBJUlEgbGluZSBhcm1lZCBmb3Igc3lzdGVtIHdha2V1cCkgc2VlbiBieSB0aGUKKwkJa2VybmVsIGR1cmluZyB0aGUgbW9zdCByZWNlbnQgc3lzdGVtIHN1c3BlbmQvcmVzdW1lIGN5Y2xlLgorCisJCVRoaXMgb3V0cHV0IGlzIHVzZWZ1bCBmb3Igc3lzdGVtIHdha2V1cCBkaWFnbm9zdGljcyBvZiBzcHVyaW91cworCQl3YWtldXAgaW50ZXJydXB0cy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcHBzIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1wcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUwMjhjNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcHBzCkBAIC0wLDAgKzEsNzMgQEAKK1doYXQ6CQkvc3lzL2NsYXNzL3Bwcy8KK0RhdGU6CQlGZWJydWFyeSAyMDA4CitDb250YWN0OglSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBsaW51eC5pdD4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9jbGFzcy9wcHMvIGRpcmVjdG9yeSB3aWxsIGNvbnRhaW4gZmlsZXMgYW5kCisJCWRpcmVjdG9yaWVzIHRoYXQgd2lsbCBwcm92aWRlIGEgdW5pZmllZCBpbnRlcmZhY2UgdG8KKwkJdGhlIFBQUyBzb3VyY2VzLgorCitXaGF0OgkJL3N5cy9jbGFzcy9wcHMvcHBzWC8KK0RhdGU6CQlGZWJydWFyeSAyMDA4CitDb250YWN0OglSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBsaW51eC5pdD4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9jbGFzcy9wcHMvcHBzWC8gZGlyZWN0b3J5IGlzIHJlbGF0ZWQgdG8gWC10aAorCQlQUFMgc291cmNlIGludG8gdGhlIHN5c3RlbS4gRWFjaCBkaXJlY3Rvcnkgd2lsbAorCQljb250YWluIGZpbGVzIHRvIG1hbmFnZSBhbmQgY29udHJvbCBpdHMgUFBTIHNvdXJjZS4KKworV2hhdDoJCS9zeXMvY2xhc3MvcHBzL3Bwc1gvYXNzZXJ0CitEYXRlOgkJRmVicnVhcnkgMjAwOAorQ29udGFjdDoJUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvY2xhc3MvcHBzL3Bwc1gvYXNzZXJ0IGZpbGUgcmVwb3J0cyB0aGUgYXNzZXJ0IGV2ZW50cworCQlhbmQgdGhlIGFzc2VydCBzZXF1ZW5jZSBudW1iZXIgb2YgdGhlIFgtdGggc291cmNlIGluIHRoZSBmb3JtOgorCisJCQk8c2Vjcz4uPG5zZWM+IzxzZXF1ZW5jZT4KKworCQlJZiB0aGUgc291cmNlIGhhcyBubyBhc3NlcnQgZXZlbnRzIHRoZSBjb250ZW50IG9mIHRoaXMgZmlsZQorCQlpcyBlbXB0eS4KKworV2hhdDoJCS9zeXMvY2xhc3MvcHBzL3Bwc1gvY2xlYXIKK0RhdGU6CQlGZWJydWFyeSAyMDA4CitDb250YWN0OglSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBsaW51eC5pdD4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9jbGFzcy9wcHMvcHBzWC9jbGVhciBmaWxlIHJlcG9ydHMgdGhlIGNsZWFyIGV2ZW50cworCQlhbmQgdGhlIGNsZWFyIHNlcXVlbmNlIG51bWJlciBvZiB0aGUgWC10aCBzb3VyY2UgaW4gdGhlIGZvcm06CisKKwkJCTxzZWNzPi48bnNlYz4jPHNlcXVlbmNlPgorCisJCUlmIHRoZSBzb3VyY2UgaGFzIG5vIGNsZWFyIGV2ZW50cyB0aGUgY29udGVudCBvZiB0aGlzIGZpbGUKKwkJaXMgZW1wdHkuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3Bwcy9wcHNYL21vZGUKK0RhdGU6CQlGZWJydWFyeSAyMDA4CitDb250YWN0OglSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBsaW51eC5pdD4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9jbGFzcy9wcHMvcHBzWC9tb2RlIGZpbGUgcmVwb3J0cyB0aGUgZnVuY3Rpb25pbmcKKwkJbW9kZSBvZiB0aGUgWC10aCBzb3VyY2UgaW4gaGV4YWRlY2ltYWwgZW5jb2RpbmcuCisKKwkJUGxlYXNlLCByZWZlciB0byBsaW51eC9pbmNsdWRlL2xpbnV4L3Bwcy5oIGZvciBmdXJ0aGVyCisJCWluZm8uCisKK1doYXQ6CQkvc3lzL2NsYXNzL3Bwcy9wcHNYL2VjaG8KK0RhdGU6CQlGZWJydWFyeSAyMDA4CitDb250YWN0OglSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBsaW51eC5pdD4KK0Rlc2NyaXB0aW9uOgorCQlUaGUgL3N5cy9jbGFzcy9wcHMvcHBzWC9lY2hvIGZpbGUgcmVwb3J0cyBpZiB0aGUgWC10aCBkb2VzCisJCW9yIGRvZXMgbm90IHN1cHBvcnQgYW4gImVjaG8iIGZ1bmN0aW9uLgorCitXaGF0OgkJL3N5cy9jbGFzcy9wcHMvcHBzWC9uYW1lCitEYXRlOgkJRmVicnVhcnkgMjAwOAorQ29udGFjdDoJUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvY2xhc3MvcHBzL3Bwc1gvbmFtZSBmaWxlIHJlcG9ydHMgdGhlIG5hbWUgb2YgdGhlCisJCVgtdGggc291cmNlLgorCitXaGF0OgkJL3N5cy9jbGFzcy9wcHMvcHBzWC9wYXRoCitEYXRlOgkJRmVicnVhcnkgMjAwOAorQ29udGFjdDoJUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+CitEZXNjcmlwdGlvbjoKKwkJVGhlIC9zeXMvY2xhc3MvcHBzL3Bwc1gvcGF0aCBmaWxlIHJlcG9ydHMgdGhlIHBhdGggbmFtZSBvZgorCQl0aGUgZGV2aWNlIGNvbm5lY3RlZCB3aXRoIHRoZSBYLXRoIHNvdXJjZS4KKworCQlJZiB0aGUgc291cmNlIGlzIG5vdCBjb25uZWN0ZWQgd2l0aCBhbnkgZGV2aWNlIHRoZSBjb250ZW50CisJCW9mIHRoaXMgZmlsZSBpcyBlbXB0eS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcHJvZmlsaW5nIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1wcm9maWxpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE4ZTQ2NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcHJvZmlsaW5nCkBAIC0wLDAgKzEsMTMgQEAKK1doYXQ6CQkvc3lzL2tlcm5lbC9wcm9maWxpbmcKK0RhdGU6CQlTZXB0ZW1iZXIgMjAwOAorQ29udGFjdDoJRGF2ZSBIYW5zZW4gPGRhdmVAbGludXgudm5ldC5pYm0uY29tPgorRGVzY3JpcHRpb246CisJCS9zeXMva2VybmVsL3Byb2ZpbGluZyBpcyB0aGUgcnVudGltZSBlcXVpdmFsZW50CisJCW9mIHRoZSBib290LXRpbWUgcHJvZmlsZT0gb3B0aW9uLgorCisJCVlvdSBjYW4gZ2V0IHRoZSBzYW1lIGVmZmVjdCBydW5uaW5nOgorCisJCQllY2hvIDIgPiAvc3lzL2tlcm5lbC9wcm9maWxpbmcKKworCQlhcyB5b3Ugd291bGQgYnkgaXNzdWluZyBwcm9maWxlPTIgb24gdGhlIGJvb3QKKwkJY29tbWFuZCBsaW5lLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1wdHAgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXB0cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDgwNmE2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1wdHAKQEAgLTAsMCArMSwxMjIgQEAKK1doYXQ6CQkvc3lzL2NsYXNzL3B0cC8KK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMAorQ29udGFjdDoJUmljaGFyZCBDb2NocmFuIDxyaWNoYXJkY29jaHJhbkBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgZmlsZXMgYW5kIGRpcmVjdG9yaWVzCisJCXByb3ZpZGluZyBhIHN0YW5kYXJkaXplZCBpbnRlcmZhY2UgdG8gdGhlIGFuY2lsbGFyeQorCQlmZWF0dXJlcyBvZiBQVFAgaGFyZHdhcmUgY2xvY2tzLgorCitXaGF0OgkJL3N5cy9jbGFzcy9wdHAvcHRwTi8KK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMAorQ29udGFjdDoJUmljaGFyZCBDb2NocmFuIDxyaWNoYXJkY29jaHJhbkBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIE50aCBQVFAKKwkJaGFyZHdhcmUgY2xvY2sgcmVnaXN0ZXJlZCBpbnRvIHRoZSBQVFAgY2xhc3MgZHJpdmVyCisJCXN1YnN5c3RlbS4KKworV2hhdDoJCS9zeXMvY2xhc3MvcHRwL3B0cE4vY2xvY2tfbmFtZQorRGF0ZToJCVNlcHRlbWJlciAyMDEwCitDb250YWN0OglSaWNoYXJkIENvY2hyYW4gPHJpY2hhcmRjb2NocmFuQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGZpbGUgY29udGFpbnMgdGhlIG5hbWUgb2YgdGhlIFBUUCBoYXJkd2FyZSBjbG9jaworCQlhcyBhIGh1bWFuIHJlYWRhYmxlIHN0cmluZy4gVGhlIHB1cnBvc2Ugb2YgdGhpcworCQlhdHRyaWJ1dGUgaXMgdG8gcHJvdmlkZSB0aGUgdXNlciB3aXRoIGEgImZyaWVuZGx5CisJCW5hbWUiIGFuZCB0byBoZWxwIGRpc3Rpbmd1aXNoIFBIWSBiYXNlZCBkZXZpY2VzIGZyb20KKwkJTUFDIGJhc2VkIG9uZXMuIFRoZSBzdHJpbmcgZG9lcyBub3QgbmVjZXNzYXJpbHkgaGF2ZQorCQl0byBiZSBhbnkga2luZCBvZiB1bmlxdWUgaWQuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3B0cC9wdHBOL21heF9hZGp1c3RtZW50CitEYXRlOgkJU2VwdGVtYmVyIDIwMTAKK0NvbnRhY3Q6CVJpY2hhcmQgQ29jaHJhbiA8cmljaGFyZGNvY2hyYW5AZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoaXMgZmlsZSBjb250YWlucyB0aGUgUFRQIGhhcmR3YXJlIGNsb2NrJ3MgbWF4aW11bQorCQlmcmVxdWVuY3kgYWRqdXN0bWVudCB2YWx1ZSAoYSBwb3NpdGl2ZSBpbnRlZ2VyKSBpbgorCQlwYXJ0cyBwZXIgYmlsbGlvbi4KKworV2hhdDoJCS9zeXMvY2xhc3MvcHRwL3B0cE4vbl9hbGFybXMKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMAorQ29udGFjdDoJUmljaGFyZCBDb2NocmFuIDxyaWNoYXJkY29jaHJhbkBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBudW1iZXIgb2YgcGVyaW9kaWMgb3Igb25lIHNob3QKKwkJYWxhcm1zIG9mZmVyIGJ5IHRoZSBQVFAgaGFyZHdhcmUgY2xvY2suCisKK1doYXQ6CQkvc3lzL2NsYXNzL3B0cC9wdHBOL25fZXh0ZXJuYWxfdGltZXN0YW1wcworRGF0ZToJCVNlcHRlbWJlciAyMDEwCitDb250YWN0OglSaWNoYXJkIENvY2hyYW4gPHJpY2hhcmRjb2NocmFuQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGlzIGZpbGUgY29udGFpbnMgdGhlIG51bWJlciBvZiBleHRlcm5hbCB0aW1lc3RhbXAKKwkJY2hhbm5lbHMgb2ZmZXJlZCBieSB0aGUgUFRQIGhhcmR3YXJlIGNsb2NrLgorCitXaGF0OgkJL3N5cy9jbGFzcy9wdHAvcHRwTi9uX3BlcmlvZGljX291dHB1dHMKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMAorQ29udGFjdDoJUmljaGFyZCBDb2NocmFuIDxyaWNoYXJkY29jaHJhbkBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBudW1iZXIgb2YgcHJvZ3JhbW1hYmxlIHBlcmlvZGljCisJCW91dHB1dCBjaGFubmVscyBvZmZlcmVkIGJ5IHRoZSBQVFAgaGFyZHdhcmUgY2xvY2suCisKK1doYXQ6CQkvc3lzL2NsYXNzL3B0cC9wdHBOL25fcGlucworRGF0ZToJCU1hcmNoIDIwMTQKK0NvbnRhY3Q6CVJpY2hhcmQgQ29jaHJhbiA8cmljaGFyZGNvY2hyYW5AZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoaXMgZmlsZSBjb250YWlucyB0aGUgbnVtYmVyIG9mIHByb2dyYW1tYWJsZSBwaW5zCisJCW9mZmVyZWQgYnkgdGhlIFBUUCBoYXJkd2FyZSBjbG9jay4KKworV2hhdDoJCS9zeXMvY2xhc3MvcHRwL3B0cE4vcGlucworRGF0ZToJCU1hcmNoIDIwMTQKK0NvbnRhY3Q6CVJpY2hhcmQgQ29jaHJhbiA8cmljaGFyZGNvY2hyYW5AZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCVRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIG9uZSBmaWxlIGZvciBlYWNoIHByb2dyYW1tYWJsZQorCQlwaW4gb2ZmZXJlZCBieSB0aGUgUFRQIGhhcmR3YXJlIGNsb2NrLiBUaGUgZmlsZSBuYW1lCisJCWlzIHRoZSBoYXJkd2FyZSBkZXBlbmRlbnQgcGluIG5hbWUuIFJlYWRpbmcgZnJvbSB0aGlzCisJCWZpbGUgcHJvZHVjZXMgdHdvIG51bWJlcnMsIHRoZSBhc3NpZ25lZCBmdW5jdGlvbiAoc2VlCisJCXRoZSBQVFBfUEZfIGVudW1lcmF0aW9uIHZhbHVlcyBpbiBsaW51eC9wdHBfY2xvY2suaCkKKwkJYW5kIHRoZSBjaGFubmVsIG51bWJlci4gVGhlIGZ1bmN0aW9uIGFuZCBjaGFubmVsCisJCWFzc2lnbm1lbnQgbWF5IGJlIGNoYW5nZWQgYnkgdHdvIHdyaXRpbmcgbnVtYmVycyBpbnRvCisJCXRoZSBmaWxlLgorCitXaGF0OgkJL3N5cy9jbGFzcy9wdHAvcHRwTi9wcHNfYXZhaWFibGUKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMAorQ29udGFjdDoJUmljaGFyZCBDb2NocmFuIDxyaWNoYXJkY29jaHJhbkBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBmaWxlIGluZGljYXRlcyB3aGV0aGVyIHRoZSBQVFAgaGFyZHdhcmUgY2xvY2sKKwkJc3VwcG9ydHMgYSBQdWxzZSBQZXIgU2Vjb25kIHRvIHRoZSBob3N0IENQVS4gUmVhZGluZworCQkiMSIgbWVhbnMgdGhhdCB0aGUgUFBTIGlzIHN1cHBvcnRlZCwgd2hpbGUgIjAiIG1lYW5zCisJCW5vdCBzdXBwb3J0ZWQuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3B0cC9wdHBOL2V4dHRzX2VuYWJsZQorRGF0ZToJCVNlcHRlbWJlciAyMDEwCitDb250YWN0OglSaWNoYXJkIENvY2hyYW4gPHJpY2hhcmRjb2NocmFuQGdtYWlsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQlUaGlzIHdyaXRlLW9ubHkgZmlsZSBlbmFibGVzIG9yIGRpc2FibGVzIGV4dGVybmFsCisJCXRpbWVzdGFtcHMuIFRvIGVuYWJsZSBleHRlcm5hbCB0aW1lc3RhbXBzLCB3cml0ZSB0aGUKKwkJY2hhbm5lbCBpbmRleCBmb2xsb3dlZCBieSBhICIxIiBpbnRvIHRoZSBmaWxlLgorCQlUbyBkaXNhYmxlIGV4dGVybmFsIHRpbWVzdGFtcHMsIHdyaXRlIHRoZSBjaGFubmVsCisJCWluZGV4IGZvbGxvd2VkIGJ5IGEgIjAiIGludG8gdGhlIGZpbGUuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3B0cC9wdHBOL2ZpZm8KK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMAorQ29udGFjdDoJUmljaGFyZCBDb2NocmFuIDxyaWNoYXJkY29jaHJhbkBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyBmaWxlIHByb3ZpZGVzIHRpbWVzdGFtcHMgb24gZXh0ZXJuYWwgZXZlbnRzLCBpbgorCQl0aGUgZm9ybSBvZiB0aHJlZSBpbnRlZ2VyczogY2hhbm5lbCBpbmRleCwgc2Vjb25kcywKKwkJYW5kIG5hbm9zZWNvbmRzLgorCitXaGF0OgkJL3N5cy9jbGFzcy9wdHAvcHRwTi9wZXJpb2QKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMAorQ29udGFjdDoJUmljaGFyZCBDb2NocmFuIDxyaWNoYXJkY29jaHJhbkBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyB3cml0ZS1vbmx5IGZpbGUgZW5hYmxlcyBvciBkaXNhYmxlcyBwZXJpb2RpYworCQlvdXRwdXRzLiBUbyBlbmFibGUgYSBwZXJpb2RpYyBvdXRwdXQsIHdyaXRlIGZpdmUKKwkJaW50ZWdlcnMgaW50byB0aGUgZmlsZTogY2hhbm5lbCBpbmRleCwgc3RhcnQgdGltZQorCQlzZWNvbmRzLCBzdGFydCB0aW1lIG5hbm9zZWNvbmRzLCBwZXJpb2Qgc2Vjb25kcywgYW5kCisJCXBlcmlvZCBuYW5vc2Vjb25kcy4gVG8gZGlzYWJsZSBhIHBlcmlvZGljIG91dHB1dCwgc2V0CisJCWFsbCB0aGUgc2Vjb25kcyBhbmQgbmFub3NlY29uZHMgdmFsdWVzIHRvIHplcm8uCisKK1doYXQ6CQkvc3lzL2NsYXNzL3B0cC9wdHBOL3Bwc19lbmFibGUKK0RhdGU6CQlTZXB0ZW1iZXIgMjAxMAorQ29udGFjdDoJUmljaGFyZCBDb2NocmFuIDxyaWNoYXJkY29jaHJhbkBnbWFpbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJVGhpcyB3cml0ZS1vbmx5IGZpbGUgZW5hYmxlcyBvciBkaXNhYmxlcyBkZWxpdmVyeSBvZgorCQlQUFMgZXZlbnRzIHRvIHRoZSBMaW51eCBQUFMgc3Vic3lzdGVtLiBUbyBlbmFibGUgUFBTCisJCWV2ZW50cywgd3JpdGUgYSAiMSIgaW50byB0aGUgZmlsZS4gVG8gZGlzYWJsZSBldmVudHMsCisJCXdyaXRlIGEgIjAiIGludG8gdGhlIGZpbGUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXR0eSBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtdHR5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllYjNjMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLXR0eQpAQCAtMCwwICsxLDE1NiBAQAorV2hhdDoJCS9zeXMvY2xhc3MvdHR5L2NvbnNvbGUvYWN0aXZlCitEYXRlOgkJTm92IDIwMTAKK0NvbnRhY3Q6CUtheSBTaWV2ZXJzIDxrYXkuc2lldmVyc0B2cmZ5Lm9yZz4KK0Rlc2NyaXB0aW9uOgorCQkgU2hvd3MgdGhlIGxpc3Qgb2YgY3VycmVudGx5IGNvbmZpZ3VyZWQKKwkJIGNvbnNvbGUgZGV2aWNlcywgbGlrZSAndHR5MSB0dHlTMCcuCisJCSBUaGUgbGFzdCBlbnRyeSBpbiB0aGUgZmlsZSBpcyB0aGUgYWN0aXZlCisJCSBkZXZpY2UgY29ubmVjdGVkIHRvIC9kZXYvY29uc29sZS4KKwkJIFRoZSBmaWxlIHN1cHBvcnRzIHBvbGwoKSB0byBkZXRlY3QgdmlydHVhbAorCQkgY29uc29sZSBzd2l0Y2hlcy4KKworV2hhdDoJCS9zeXMvY2xhc3MvdHR5L3R0eTAvYWN0aXZlCitEYXRlOgkJTm92IDIwMTAKK0NvbnRhY3Q6CUtheSBTaWV2ZXJzIDxrYXkuc2lldmVyc0B2cmZ5Lm9yZz4KK0Rlc2NyaXB0aW9uOgorCQkgU2hvd3MgdGhlIGN1cnJlbnRseSBhY3RpdmUgdmlydHVhbCBjb25zb2xlCisJCSBkZXZpY2UsIGxpa2UgJ3R0eTEnLgorCQkgVGhlIGZpbGUgc3VwcG9ydHMgcG9sbCgpIHRvIGRldGVjdCB2aXJ0dWFsCisJCSBjb25zb2xlIHN3aXRjaGVzLgorCitXaGF0OgkJL3N5cy9jbGFzcy90dHkvdHR5UzAvdWFydGNsaworRGF0ZToJCVNlcCAyMDEyCitDb250YWN0OglUb21hcyBIbGF2YWNlayA8dG1zaGx2Y2tAZ21haWwuY29tPgorRGVzY3JpcHRpb246CisJCSBTaG93cyB0aGUgY3VycmVudCB1YXJ0Y2xrIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUKKwkJIFVBUlQgcG9ydCBpbiBzZXJpYWxfY29yZSwgdGhhdCBpcyBib3VuZCB0byBUVFkgbGlrZSB0dHlTMC4KKwkJIHVhcnRjbGsgPSAxNiAqIGJhdWRfYmFzZQorCisJCSBUaGVzZSBzeXNmcyB2YWx1ZXMgZXhwb3NlIHRoZSBUSU9DR1NFUklBTCBpbnRlcmZhY2UgdmlhCisJCSBzeXNmcyByYXRoZXIgdGhhbiB2aWEgaW9jdGxzLgorCitXaGF0OgkJL3N5cy9jbGFzcy90dHkvdHR5UzAvdHlwZQorRGF0ZToJCU9jdG9iZXIgMjAxMgorQ29udGFjdDoJQWxhbiBDb3ggPGFsYW5AbGludXguaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCSBTaG93cyB0aGUgY3VycmVudCB0dHkgdHlwZSBmb3IgdGhpcyBwb3J0LgorCisJCSBUaGVzZSBzeXNmcyB2YWx1ZXMgZXhwb3NlIHRoZSBUSU9DR1NFUklBTCBpbnRlcmZhY2UgdmlhCisJCSBzeXNmcyByYXRoZXIgdGhhbiB2aWEgaW9jdGxzLgorCitXaGF0OgkJL3N5cy9jbGFzcy90dHkvdHR5UzAvbGluZQorRGF0ZToJCU9jdG9iZXIgMjAxMgorQ29udGFjdDoJQWxhbiBDb3ggPGFsYW5AbGludXguaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCSBTaG93cyB0aGUgY3VycmVudCB0dHkgbGluZSBudW1iZXIgZm9yIHRoaXMgcG9ydC4KKworCQkgVGhlc2Ugc3lzZnMgdmFsdWVzIGV4cG9zZSB0aGUgVElPQ0dTRVJJQUwgaW50ZXJmYWNlIHZpYQorCQkgc3lzZnMgcmF0aGVyIHRoYW4gdmlhIGlvY3Rscy4KKworV2hhdDoJCS9zeXMvY2xhc3MvdHR5L3R0eVMwL3BvcnQKK0RhdGU6CQlPY3RvYmVyIDIwMTIKK0NvbnRhY3Q6CUFsYW4gQ294IDxhbGFuQGxpbnV4LmludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQkgU2hvd3MgdGhlIGN1cnJlbnQgdHR5IHBvcnQgSS9PIGFkZHJlc3MgZm9yIHRoaXMgcG9ydC4KKworCQkgVGhlc2Ugc3lzZnMgdmFsdWVzIGV4cG9zZSB0aGUgVElPQ0dTRVJJQUwgaW50ZXJmYWNlIHZpYQorCQkgc3lzZnMgcmF0aGVyIHRoYW4gdmlhIGlvY3Rscy4KKworV2hhdDoJCS9zeXMvY2xhc3MvdHR5L3R0eVMwL2lycQorRGF0ZToJCU9jdG9iZXIgMjAxMgorQ29udGFjdDoJQWxhbiBDb3ggPGFsYW5AbGludXguaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCSBTaG93cyB0aGUgY3VycmVudCBwcmltYXJ5IGludGVycnVwdCBmb3IgdGhpcyBwb3J0LgorCisJCSBUaGVzZSBzeXNmcyB2YWx1ZXMgZXhwb3NlIHRoZSBUSU9DR1NFUklBTCBpbnRlcmZhY2UgdmlhCisJCSBzeXNmcyByYXRoZXIgdGhhbiB2aWEgaW9jdGxzLgorCitXaGF0OgkJL3N5cy9jbGFzcy90dHkvdHR5UzAvZmxhZ3MKK0RhdGU6CQlPY3RvYmVyIDIwMTIKK0NvbnRhY3Q6CUFsYW4gQ294IDxhbGFuQGxpbnV4LmludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQkgU2hvdyB0aGUgdHR5IHBvcnQgc3RhdHVzIGZsYWdzIGZvciB0aGlzIHBvcnQuCisKKwkJIFRoZXNlIHN5c2ZzIHZhbHVlcyBleHBvc2UgdGhlIFRJT0NHU0VSSUFMIGludGVyZmFjZSB2aWEKKwkJIHN5c2ZzIHJhdGhlciB0aGFuIHZpYSBpb2N0bHMuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3R0eS90dHlTMC94bWl0X2ZpZm9fc2l6ZQorRGF0ZToJCU9jdG9iZXIgMjAxMgorQ29udGFjdDoJQWxhbiBDb3ggPGFsYW5AbGludXguaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCSBTaG93IHRoZSB0cmFuc21pdCBGSUZPIHNpemUgZm9yIHRoaXMgcG9ydC4KKworCQkgVGhlc2Ugc3lzZnMgdmFsdWVzIGV4cG9zZSB0aGUgVElPQ0dTRVJJQUwgaW50ZXJmYWNlIHZpYQorCQkgc3lzZnMgcmF0aGVyIHRoYW4gdmlhIGlvY3Rscy4KKworV2hhdDoJCS9zeXMvY2xhc3MvdHR5L3R0eVMwL2Nsb3NlX2RlbGF5CitEYXRlOgkJT2N0b2JlciAyMDEyCitDb250YWN0OglBbGFuIENveCA8YWxhbkBsaW51eC5pbnRlbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJIFNob3cgdGhlIGNsb3NpbmcgZGVsYXkgdGltZSBmb3IgdGhpcyBwb3J0IGluIG1zLgorCisJCSBUaGVzZSBzeXNmcyB2YWx1ZXMgZXhwb3NlIHRoZSBUSU9DR1NFUklBTCBpbnRlcmZhY2UgdmlhCisJCSBzeXNmcyByYXRoZXIgdGhhbiB2aWEgaW9jdGxzLgorCitXaGF0OgkJL3N5cy9jbGFzcy90dHkvdHR5UzAvY2xvc2luZ193YWl0CitEYXRlOgkJT2N0b2JlciAyMDEyCitDb250YWN0OglBbGFuIENveCA8YWxhbkBsaW51eC5pbnRlbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJIFNob3cgdGhlIGNsb3NlIHdhaXQgdGltZSBmb3IgdGhpcyBwb3J0IGluIG1zLgorCisJCSBUaGVzZSBzeXNmcyB2YWx1ZXMgZXhwb3NlIHRoZSBUSU9DR1NFUklBTCBpbnRlcmZhY2UgdmlhCisJCSBzeXNmcyByYXRoZXIgdGhhbiB2aWEgaW9jdGxzLgorCitXaGF0OgkJL3N5cy9jbGFzcy90dHkvdHR5UzAvY3VzdG9tX2Rpdmlzb3IKK0RhdGU6CQlPY3RvYmVyIDIwMTIKK0NvbnRhY3Q6CUFsYW4gQ294IDxhbGFuQGxpbnV4LmludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQkgU2hvdyB0aGUgY3VzdG9tIGRpdmlzb3IgaWYgYW55IHRoYXQgaXMgc2V0IG9uIHRoaXMgcG9ydC4KKworCQkgVGhlc2Ugc3lzZnMgdmFsdWVzIGV4cG9zZSB0aGUgVElPQ0dTRVJJQUwgaW50ZXJmYWNlIHZpYQorCQkgc3lzZnMgcmF0aGVyIHRoYW4gdmlhIGlvY3Rscy4KKworV2hhdDoJCS9zeXMvY2xhc3MvdHR5L3R0eVMwL2lvX3R5cGUKK0RhdGU6CQlPY3RvYmVyIDIwMTIKK0NvbnRhY3Q6CUFsYW4gQ294IDxhbGFuQGxpbnV4LmludGVsLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQkgU2hvdyB0aGUgSS9PIHR5cGUgdGhhdCBpcyB0byBiZSB1c2VkIHdpdGggdGhlIGlvbWVtIGJhc2UKKwkJIGFkZHJlc3MuCisKKwkJIFRoZXNlIHN5c2ZzIHZhbHVlcyBleHBvc2UgdGhlIFRJT0NHU0VSSUFMIGludGVyZmFjZSB2aWEKKwkJIHN5c2ZzIHJhdGhlciB0aGFuIHZpYSBpb2N0bHMuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3R0eS90dHlTMC9pb21lbV9iYXNlCitEYXRlOgkJT2N0b2JlciAyMDEyCitDb250YWN0OglBbGFuIENveCA8YWxhbkBsaW51eC5pbnRlbC5jb20+CitEZXNjcmlwdGlvbjoKKwkJIFRoZSBJL08gbWVtb3J5IGJhc2UgZm9yIHRoaXMgcG9ydC4KKworCQkgVGhlc2Ugc3lzZnMgdmFsdWVzIGV4cG9zZSB0aGUgVElPQ0dTRVJJQUwgaW50ZXJmYWNlIHZpYQorCQkgc3lzZnMgcmF0aGVyIHRoYW4gdmlhIGlvY3Rscy4KKworV2hhdDoJCS9zeXMvY2xhc3MvdHR5L3R0eVMwL2lvbWVtX3JlZ19zaGlmdAorRGF0ZToJCU9jdG9iZXIgMjAxMgorQ29udGFjdDoJQWxhbiBDb3ggPGFsYW5AbGludXguaW50ZWwuY29tPgorRGVzY3JpcHRpb246CisJCSBTaG93IHRoZSByZWdpc3RlciBzaGlmdCBpbmRpY2F0aW5nIHRoZSBzcGFjaW5nIHRvIGJlIHVzZWQKKwkJIGZvciBhY2Nlc3NlcyBvbiB0aGlzIGlvbWVtIGFkZHJlc3MuCisKKwkJIFRoZXNlIHN5c2ZzIHZhbHVlcyBleHBvc2UgdGhlIFRJT0NHU0VSSUFMIGludGVyZmFjZSB2aWEKKwkJIHN5c2ZzIHJhdGhlciB0aGFuIHZpYSBpb2N0bHMuCisKK1doYXQ6CQkvc3lzL2NsYXNzL3R0eS90dHlTMC9yeF90cmlnX2J5dGVzCitEYXRlOgkJTWF5IDIwMTQKK0NvbnRhY3Q6CVlvc2hpaGlybyBZVU5PTUFFIDx5b3NoaWhpcm8ueXVub21hZS5lekBoaXRhY2hpLmNvbT4KK0Rlc2NyaXB0aW9uOgorCQkgU2hvd3MgY3VycmVudCBSWCBpbnRlcnJ1cHQgdHJpZ2dlciBieXRlcyBvciBzZXRzIHRoZQorCQkgdXNlciBzcGVjaWZpZWQgdmFsdWUgdG8gY2hhbmdlIGl0IGZvciB0aGUgRklGTyBidWZmZXIuCisJCSBVc2VycyBjYW4gc2hvdyBvciBzZXQgdGhpcyB2YWx1ZSByZWdhcmRsZXNzIG9mIG9wZW5pbmcgdGhlCisJCSBzZXJpYWwgZGV2aWNlIGZpbGUgb3Igbm90LgorCisJCSBUaGUgUlggdHJpZ2dlciBjYW4gYmUgc2V0IG9uZSBvZiBmb3VyIGtpbmRzIG9mIHZhbHVlcyBmb3IgVUFSVAorCQkgc2VyaWFscy4gV2hlbiB1c2VycyBpbnB1dCBhIG1lYW5pbmcgbGVzcyB2YWx1ZSB0byB0aGlzIEkvRiwKKwkJIHRoZSBSWCB0cmlnZ2VyIGlzIGNoYW5nZWQgdG8gdGhlIG5lYXJlc3QgbG93ZXIgdmFsdWUgZm9yIHRoZQorCQkgZGV2aWNlIHNwZWNpZmljYXRpb24uIEZvciBleGFtcGxlLCB3aGVuIHVzZXIgc2V0cyA3Ynl0ZXMgb24KKwkJIDE2NTUwQSwgd2hpY2ggaGFzIDEvNC84LzE0IGJ5dGVzIHRyaWdnZXIsIHRoZSBSWCB0cmlnZ2VyIGlzCisJCSBhdXRvbWF0aWNhbGx5IGNoYW5nZWQgdG8gNCBieXRlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtd3VzYl9jYmFmIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy13dXNiX2NiYWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk5YzVmOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtd3VzYl9jYmFmCkBAIC0wLDAgKzEsMTAwIEBACitXaGF0OiAgICAgICAgICAgL3N5cy9idXMvdXNiL2RyaXZlcnMvd3VzYl9jYmFmLy4uLi93dXNiXyoKK0RhdGU6ICAgICAgICAgICBBdWd1c3QgMjAwOAorS2VybmVsVmVyc2lvbjogIDIuNi4yNworQ29udGFjdDogICAgICAgIERhdmlkIFZyYWJlbCA8ZGF2aWQudnJhYmVsQGNzci5jb20+CitEZXNjcmlwdGlvbjoKKyAgICAgICAgICAgICAgICBWYXJpb3VzIGZpbGVzIGZvciBtYW5hZ2luZyBDYWJsZSBCYXNlZCBBc3NvY2lhdGlvbiBvZgorICAgICAgICAgICAgICAgICh3aXJlbGVzcykgVVNCIGRldmljZXMuCisKKyAgICAgICAgICAgICAgICBUaGUgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBzaG91bGQgYmU6CisKKyAgICAgICAgICAgICAgICAxLiBEZXZpY2UgaXMgcGx1Z2dlZCBpbi4KKworICAgICAgICAgICAgICAgIDIuIFRoZSBjb25uZWN0aW9uIG1hbmFnZXIgKENNKSBzZWVzIGEgZGV2aWNlIHdpdGggQ0JBIGNhcGFiaWxpdHkuCisgICAgICAgICAgICAgICAgICAgKHRoZSB3dXNiX2NoaWQgZXRjLiBmaWxlcyBpbiAvc3lzL2RldmljZXMvYmxhaC9PVVJERVZJQ0UpLgorCisgICAgICAgICAgICAgICAgMy4gVGhlIENNIHdyaXRlcyB0aGUgaG9zdCBuYW1lLCBzdXBwb3J0ZWQgYmFuZCBncm91cHMsCisgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBDSElEIChob3N0IElEKSBpbnRvIHRoZSB3dXNiX2hvc3RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICB3dXNiX2hvc3RfYmFuZF9ncm91cHMgYW5kIHd1c2JfY2hpZCBmaWxlcy4gVGhlc2UKKyAgICAgICAgICAgICAgICAgICBnZXQgc2VudCB0byB0aGUgZGV2aWNlIGFuZCB0aGUgQ0RJRCAoaWYgYW55KSBmb3IKKyAgICAgICAgICAgICAgICAgICB0aGlzIGhvc3QgaXMgcmVxdWVzdGVkLgorCisgICAgICAgICAgICAgICAgNC4gVGhlIENNIGNhbiB2ZXJpZnkgdGhhdCB0aGUgZGV2aWNlJ3Mgc3VwcG9ydGVkIGJhbmQKKyAgICAgICAgICAgICAgICAgICBncm91cHMgKHd1c2JfZGV2aWNlX2JhbmRfZ3JvdXBzKSBhcmUgY29tcGF0aWJsZQorICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIGhvc3QuCisKKyAgICAgICAgICAgICAgICA1LiBUaGUgQ00gcmVhZHMgdGhlIHd1c2JfY2RpZCBmaWxlLgorCisgICAgICAgICAgICAgICAgNi4gVGhlIENNIGxvb2tzIGl0IHVwIGl0cyBkYXRhYmFzZS4KKworICAgICAgICAgICAgICAgICAgIC0gSWYgaXQgaGFzIGEgbWF0Y2hpbmcgQ0hJRCxDRElEIGVudHJ5LCB0aGUgZGV2aWNlCisgICAgICAgICAgICAgICAgICAgICBoYXMgYmVlbiBhdXRob3JpemVkIGJlZm9yZSBhbmQgbm90aGluZyBmdXJ0aGVyCisgICAgICAgICAgICAgICAgICAgICBuZWVkcyB0byBiZSBkb25lLgorCisgICAgICAgICAgICAgICAgICAgLSBJZiB0aGUgQ0RJRCBpcyB6ZXJvIChvciB0aGUgQ00gZG9lc24ndCBmaW5kIGEKKyAgICAgICAgICAgICAgICAgICAgIG1hdGNoaW5nIENESUQgaW4gaXRzIGRhdGFiYXNlKSwgdGhlIGRldmljZSBpcworICAgICAgICAgICAgICAgICAgICAgYXNzdW1lZCB0byBiZSBub3Qga25vd24uICBUaGUgQ00gbWF5IGFzc29jaWF0ZQorICAgICAgICAgICAgICAgICAgICAgdGhlIGhvc3Qgd2l0aCBkZXZpY2UgYnk6IHdyaXRpbmcgYSByYW5kb21seQorICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkIENESUQgdG8gd3VzYl9jZGlkIGFuZCB0aGVuIGEgcmFuZG9tIENLCisgICAgICAgICAgICAgICAgICAgICB0byB3dXNiX2NrICh0aGlzIHVwbG9hZHMgdGhlIG5ldyBDQyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgIGRldmljZSkuCisKKyAgICAgICAgICAgICAgICAgICAgIENNRCBtYXkgY2hvb3NlIHRvIHByb21wdCB0aGUgdXNlciBiZWZvcmUKKyAgICAgICAgICAgICAgICAgICAgIGFzc29jaWF0aW5nIHdpdGggYSBuZXcgZGV2aWNlLgorCisgICAgICAgICAgICAgICAgNy4gRGV2aWNlIGlzIHVucGx1Z2dlZC4KKworICAgICAgICAgICAgICAgIFJlZmVyZW5jZXM6CisgICAgICAgICAgICAgICAgICBbV1VTQi1BTV0gQXNzb2NpYXRpb24gTW9kZWxzIFN1cHBsZW1lbnQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2VydGlmaWVkIFdpcmVsZXNzIFVuaXZlcnNhbCBTZXJpYWwgQnVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWNhdGlvbiwgdmVyc2lvbiAxLjAuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2J1cy91c2IvZHJpdmVycy93dXNiX2NiYWYvLi4uL3d1c2JfY2hpZAorRGF0ZTogICAgICAgICAgIEF1Z3VzdCAyMDA4CitLZXJuZWxWZXJzaW9uOiAgMi42LjI3CitDb250YWN0OiAgICAgICAgRGF2aWQgVnJhYmVsIDxkYXZpZC52cmFiZWxAY3NyLmNvbT4KK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIFRoZSBDSElEIG9mIHRoZSBob3N0IGZvcm1hdHRlZCBhcyAxNiBzcGFjZS1zZXBhcmF0ZWQKKyAgICAgICAgICAgICAgICBoZXggb2N0ZXRzLgorCisgICAgICAgICAgICAgICAgV3JpdGVzIGZldGNoZXMgZGV2aWNlJ3Mgc3VwcG9ydGVkIGJhbmQgZ3JvdXBzIGFuZCB0aGUKKyAgICAgICAgICAgICAgICB0aGUgQ0RJRCBmb3IgYW55IGV4aXN0aW5nIGFzc29jaWF0aW9uIHdpdGggdGhpcyBob3N0LgorCitXaGF0OiAgICAgICAgICAgL3N5cy9idXMvdXNiL2RyaXZlcnMvd3VzYl9jYmFmLy4uLi93dXNiX2hvc3RfbmFtZQorRGF0ZTogICAgICAgICAgIEF1Z3VzdCAyMDA4CitLZXJuZWxWZXJzaW9uOiAgMi42LjI3CitDb250YWN0OiAgICAgICAgRGF2aWQgVnJhYmVsIDxkYXZpZC52cmFiZWxAY3NyLmNvbT4KK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIEEgZnJpZW5kbHkgbmFtZSBmb3IgdGhlIGhvc3QgYXMgYSBVVEYtOCBlbmNvZGVkIHN0cmluZy4KKworV2hhdDogICAgICAgICAgIC9zeXMvYnVzL3VzYi9kcml2ZXJzL3d1c2JfY2JhZi8uLi4vd3VzYl9ob3N0X2JhbmRfZ3JvdXBzCitEYXRlOiAgICAgICAgICAgQXVndXN0IDIwMDgKK0tlcm5lbFZlcnNpb246ICAyLjYuMjcKK0NvbnRhY3Q6ICAgICAgICBEYXZpZCBWcmFiZWwgPGRhdmlkLnZyYWJlbEBjc3IuY29tPgorRGVzY3JpcHRpb246CisgICAgICAgICAgICAgICAgVGhlIGJhbmQgZ3JvdXBzIHN1cHBvcnRlZCBieSB0aGUgaG9zdCwgaW4gdGhlIGZvcm1hdAorICAgICAgICAgICAgICAgIGRlZmluZWQgaW4gW1dVU0ItQU1dLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9idXMvdXNiL2RyaXZlcnMvd3VzYl9jYmFmLy4uLi93dXNiX2RldmljZV9iYW5kX2dyb3VwcworRGF0ZTogICAgICAgICAgIEF1Z3VzdCAyMDA4CitLZXJuZWxWZXJzaW9uOiAgMi42LjI3CitDb250YWN0OiAgICAgICAgRGF2aWQgVnJhYmVsIDxkYXZpZC52cmFiZWxAY3NyLmNvbT4KK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIFRoZSBiYW5kIGdyb3VwcyBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZSwgaW4gdGhlIGZvcm1hdAorICAgICAgICAgICAgICAgIGRlZmluZWQgaW4gW1dVU0ItQU1dLgorCitXaGF0OiAgICAgICAgICAgL3N5cy9idXMvdXNiL2RyaXZlcnMvd3VzYl9jYmFmLy4uLi93dXNiX2NkaWQKK0RhdGU6ICAgICAgICAgICBBdWd1c3QgMjAwOAorS2VybmVsVmVyc2lvbjogIDIuNi4yNworQ29udGFjdDogICAgICAgIERhdmlkIFZyYWJlbCA8ZGF2aWQudnJhYmVsQGNzci5jb20+CitEZXNjcmlwdGlvbjoKKyAgICAgICAgICAgICAgICBUaGUgZGV2aWNlJ3MgQ0RJRCBmb3JtYXR0ZWQgYXMgMTYgc3BhY2Utc2VwYXJhdGVkIGhleAorICAgICAgICAgICAgICAgIG9jdGV0cy4KKworV2hhdDogICAgICAgICAgIC9zeXMvYnVzL3VzYi9kcml2ZXJzL3d1c2JfY2JhZi8uLi4vd3VzYl9jaworRGF0ZTogICAgICAgICAgIEF1Z3VzdCAyMDA4CitLZXJuZWxWZXJzaW9uOiAgMi42LjI3CitDb250YWN0OiAgICAgICAgRGF2aWQgVnJhYmVsIDxkYXZpZC52cmFiZWxAY3NyLmNvbT4KK0Rlc2NyaXB0aW9uOgorICAgICAgICAgICAgICAgIFdyaXRlIDE2IHNwYWNlLXNlcGFyYXRlZCByYW5kb20sIGhleCBvY3RldHMgdG8KKyAgICAgICAgICAgICAgICBhc3NvY2lhdGUgd2l0aCB0aGUgZGV2aWNlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9CVUctSFVOVElORyBiL0RvY3VtZW50YXRpb24vQlVHLUhVTlRJTkcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjUwMjJhOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQlVHLUhVTlRJTkcKQEAgLTAsMCArMSwyNDYgQEAKK1RhYmxlIG9mIGNvbnRlbnRzCis9PT09PT09PT09PT09PT09PQorCitMYXN0IHVwZGF0ZWQ6IDIwIERlY2VtYmVyIDIwMDUKKworQ29udGVudHMKKz09PT09PT09CisKKy0gSW50cm9kdWN0aW9uCistIERldmljZXMgbm90IGFwcGVhcmluZworLSBGaW5kaW5nIHBhdGNoIHRoYXQgY2F1c2VkIGEgYnVnCistLSBGaW5kaW5nIHVzaW5nIGdpdC1iaXNlY3QKKy0tIEZpbmRpbmcgaXQgdGhlIG9sZCB3YXkKKy0gRml4aW5nIHRoZSBidWcKKworSW50cm9kdWN0aW9uCis9PT09PT09PT09PT0KKworQWx3YXlzIHRyeSB0aGUgbGF0ZXN0IGtlcm5lbCBmcm9tIGtlcm5lbC5vcmcgYW5kIGJ1aWxkIGZyb20gc291cmNlLiBJZiB5b3UgYXJlCitub3QgY29uZmlkZW50IGluIGRvaW5nIHRoYXQgcGxlYXNlIHJlcG9ydCB0aGUgYnVnIHRvIHlvdXIgZGlzdHJpYnV0aW9uIHZlbmRvcgoraW5zdGVhZCBvZiB0byBhIGtlcm5lbCBkZXZlbG9wZXIuCisKK0ZpbmRpbmcgYnVncyBpcyBub3QgYWx3YXlzIGVhc3kuIEhhdmUgYSBnbyB0aG91Z2guIElmIHlvdSBjYW4ndCBmaW5kIGl0IGRvbid0CitnaXZlIHVwLiBSZXBvcnQgYXMgbXVjaCBhcyB5b3UgaGF2ZSBmb3VuZCB0byB0aGUgcmVsZXZhbnQgbWFpbnRhaW5lci4gU2VlCitNQUlOVEFJTkVSUyBmb3Igd2hvIHRoYXQgaXMgZm9yIHRoZSBzdWJzeXN0ZW0geW91IGhhdmUgd29ya2VkIG9uLgorCitCZWZvcmUgeW91IHN1Ym1pdCBhIGJ1ZyByZXBvcnQgcmVhZCBSRVBPUlRJTkctQlVHUy4KKworRGV2aWNlcyBub3QgYXBwZWFyaW5nCis9PT09PT09PT09PT09PT09PT09PT0KKworT2Z0ZW4gdGhpcyBpcyBjYXVzZWQgYnkgdWRldi4gQ2hlY2sgdGhhdCBmaXJzdCBiZWZvcmUgYmxhbWluZyBpdCBvbiB0aGUKK2tlcm5lbC4KKworRmluZGluZyBwYXRjaCB0aGF0IGNhdXNlZCBhIGJ1ZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKKworRmluZGluZyB1c2luZyBnaXQtYmlzZWN0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVXNpbmcgdGhlIHByb3ZpZGVkIHRvb2xzIHdpdGggZ2l0IG1ha2VzIGZpbmRpbmcgYnVncyBlYXN5IHByb3ZpZGVkIHRoZSBidWcgaXMKK3JlcHJvZHVjaWJsZS4KKworU3RlcHMgdG8gZG8gaXQ6CistIHN0YXJ0IHVzaW5nIGdpdCBmb3IgdGhlIGtlcm5lbCBzb3VyY2UKKy0gcmVhZCB0aGUgbWFuIHBhZ2UgZm9yIGdpdC1iaXNlY3QKKy0gaGF2ZSBmdW4KKworRmluZGluZyBpdCB0aGUgb2xkIHdheQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitbU2F0IE1hciAgMiAxMDozMjozMyBQU1QgMTk5NiBLRVJORUxfQlVHLUhPV1RPIGxtQHNnaS5jb20gKExhcnJ5IE1jVm95KV0KKworVGhpcyBpcyBob3cgdG8gdHJhY2sgZG93biBhIGJ1ZyBpZiB5b3Uga25vdyBub3RoaW5nIGFib3V0IGtlcm5lbCBoYWNraW5nLgorSXQncyBhIGJydXRlIGZvcmNlIGFwcHJvYWNoIGJ1dCBpdCB3b3JrcyBwcmV0dHkgd2VsbC4KKworWW91IG5lZWQ6CisKKyAgICAgICAgLiBBIHJlcHJvZHVjaWJsZSBidWcgLSBpdCBoYXMgdG8gaGFwcGVuIHByZWRpY3RhYmx5IChzb3JyeSkKKyAgICAgICAgLiBBbGwgdGhlIGtlcm5lbCB0YXIgZmlsZXMgZnJvbSBhIHJldmlzaW9uIHRoYXQgd29ya2VkIHRvIHRoZQorICAgICAgICAgIHJldmlzaW9uIHRoYXQgZG9lc24ndAorCitZb3Ugd2lsbCB0aGVuIGRvOgorCisgICAgICAgIC4gUmVidWlsZCBhIHJldmlzaW9uIHRoYXQgeW91IGJlbGlldmUgd29ya3MsIGluc3RhbGwsIGFuZCB2ZXJpZnkgdGhhdC4KKyAgICAgICAgLiBEbyBhIGJpbmFyeSBzZWFyY2ggb3ZlciB0aGUga2VybmVscyB0byBmaWd1cmUgb3V0IHdoaWNoIG9uZQorICAgICAgICAgIGludHJvZHVjZWQgdGhlIGJ1Zy4gIEkuZS4sIHN1cHBvc2UgMS4zLjI4IGRpZG4ndCBoYXZlIHRoZSBidWcsIGJ1dAorICAgICAgICAgIHlvdSBrbm93IHRoYXQgMS4zLjY5IGRvZXMuICBQaWNrIGEga2VybmVsIGluIHRoZSBtaWRkbGUgYW5kIGJ1aWxkCisgICAgICAgICAgdGhhdCwgbGlrZSAxLjMuNTAuICBCdWlsZCAmIHRlc3Q7IGlmIGl0IHdvcmtzLCBwaWNrIHRoZSBtaWQgcG9pbnQKKyAgICAgICAgICBiZXR3ZWVuIC41MCBhbmQgLjY5LCBlbHNlIHRoZSBtaWQgcG9pbnQgYmV0d2VlbiAuMjggYW5kIC41MC4KKyAgICAgICAgLiBZb3UnbGwgbmFycm93IGl0IGRvd24gdG8gdGhlIGtlcm5lbCB0aGF0IGludHJvZHVjZWQgdGhlIGJ1Zy4gIFlvdQorICAgICAgICAgIGNhbiBwcm9iYWJseSBkbyBiZXR0ZXIgdGhhbiB0aGlzIGJ1dCBpdCBnZXRzIHRyaWNreS4KKworICAgICAgICAuIE5hcnJvdyBpdCBkb3duIHRvIGEgc3ViZGlyZWN0b3J5CisKKyAgICAgICAgICAtIENvcHkga2VybmVsIHRoYXQgd29ya3MgaW50byAidGVzdCIuICBMZXQncyBzYXkgdGhhdCAzLjYyIHdvcmtzLAorICAgICAgICAgICAgYnV0IDMuNjMgZG9lc24ndC4gIFNvIHlvdSBkaWZmIC1yIHRob3NlIHR3byBrZXJuZWxzIGFuZCBjb21lCisgICAgICAgICAgICB1cCB3aXRoIGEgbGlzdCBvZiBkaXJlY3RvcmllcyB0aGF0IGNoYW5nZWQuICBGb3IgZWFjaCBvZiB0aG9zZQorICAgICAgICAgICAgZGlyZWN0b3JpZXM6CisKKyAgICAgICAgICAgICAgICBDb3B5IHRoZSBub24td29ya2luZyBkaXJlY3RvcnkgbmV4dCB0byB0aGUgd29ya2luZyBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBhcyAiZGlyLjYzIi4KKyAgICAgICAgICAgICAgICBPbmUgZGlyZWN0b3J5IGF0IHRpbWUsIHRyeSBtb3ZpbmcgdGhlIHdvcmtpbmcgZGlyZWN0b3J5IHRvCisgICAgICAgICAgICAgICAgImRpci42MiIgYW5kIG12IGRpci42MyBkaXIidGltZSwgdHJ5CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG12IGRpciBkaXIuNjIKKyAgICAgICAgICAgICAgICAgICAgICAgIG12IGRpci42MyBkaXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmQgZGlyIC1uYW1lICcqLltvYV0nIC1wcmludCB8IHhhcmdzIHJtIC1mCisKKyAgICAgICAgICAgICAgICBBbmQgdGhlbiByZWJ1aWxkIGFuZCByZXRlc3QuICBBc3N1bWluZyB0aGF0IGFsbCByZWxhdGVkCisgICAgICAgICAgICAgICAgY2hhbmdlcyB3ZXJlIGNvbnRhaW5lZCBpbiB0aGUgc3ViIGRpcmVjdG9yeSwgdGhpcyBzaG91bGQKKyAgICAgICAgICAgICAgICBpc29sYXRlIHRoZSBjaGFuZ2UgdG8gYSBkaXJlY3RvcnkuCisKKyAgICAgICAgICAgICAgICBQcm9ibGVtczogY2hhbmdlcyBpbiBoZWFkZXIgZmlsZXMgbWF5IGhhdmUgb2NjdXJyZWQ7IEkndmUKKyAgICAgICAgICAgICAgICBmb3VuZCBpbiBteSBjYXNlIHRoYXQgdGhleSB3ZXJlIHNlbGYgZXhwbGFuYXRvcnkgLSB5b3UgbWF5CisgICAgICAgICAgICAgICAgb3IgbWF5IG5vdCB3YW50IHRvIGdpdmUgdXAgd2hlbiB0aGF0IGhhcHBlbnMuCisKKyAgICAgICAgLiBOYXJyb3cgaXQgZG93biB0byBhIGZpbGUKKworICAgICAgICAgIC0gWW91IGNhbiBhcHBseSB0aGUgc2FtZSB0ZWNobmlxdWUgdG8gZWFjaCBmaWxlIGluIHRoZSBkaXJlY3RvcnksCisgICAgICAgICAgICBob3BpbmcgdGhhdCB0aGUgY2hhbmdlcyBpbiB0aGF0IGZpbGUgYXJlIHNlbGYgY29udGFpbmVkLgorCisgICAgICAgIC4gTmFycm93IGl0IGRvd24gdG8gYSByb3V0aW5lCisKKyAgICAgICAgICAtIFlvdSBjYW4gdGFrZSB0aGUgb2xkIGZpbGUgYW5kIHRoZSBuZXcgZmlsZSBhbmQgbWFudWFsbHkgY3JlYXRlCisgICAgICAgICAgICBhIG1lcmdlZCBmaWxlIHRoYXQgaGFzCisKKyAgICAgICAgICAgICAgICAjaWZkZWYgVkVSNjIKKyAgICAgICAgICAgICAgICByb3V0aW5lKCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICByb3V0aW5lKCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgI2VuZGlmCisKKyAgICAgICAgICAgIEFuZCB0aGVuIHdhbGsgdGhyb3VnaCB0aGF0IGZpbGUsIG9uZSByb3V0aW5lIGF0IGEgdGltZSBhbmQKKyAgICAgICAgICAgIHByZWZpeCBpdCB3aXRoCisKKyAgICAgICAgICAgICAgICAjZGVmaW5lIFZFUjYyCisgICAgICAgICAgICAgICAgLyogYm90aCByb3V0aW5lcyBoZXJlICovCisgICAgICAgICAgICAgICAgI3VuZGVmIFZFUjYyCisKKyAgICAgICAgICAgIFRoZW4gcmVjb21waWxlLCByZXRlc3QsIG1vdmUgdGhlIGlmZGVmcyB1bnRpbCB5b3UgZmluZCB0aGUgb25lCisgICAgICAgICAgICB0aGF0IG1ha2VzIHRoZSBkaWZmZXJlbmNlLgorCitGaW5hbGx5LCB5b3UgdGFrZSBhbGwgdGhlIGluZm8gdGhhdCB5b3UgaGF2ZSwga2VybmVsIHJldmlzaW9ucywgYnVnCitkZXNjcmlwdGlvbiwgdGhlIGV4dGVudCB0byB3aGljaCB5b3UgaGF2ZSBuYXJyb3dlZCBpdCBkb3duLCBhbmQgcGFzcwordGhhdCBvZmYgdG8gd2hvbWV2ZXIgeW91IGJlbGlldmUgaXMgdGhlIG1haW50YWluZXIgb2YgdGhhdCBzZWN0aW9uLgorQSBwb3N0IHRvIGxpbnV4LmRldi5rZXJuZWwgaXNuJ3Qgc3VjaCBhIGJhZCBpZGVhIGlmIHlvdSd2ZSBkb25lIHNvbWUKK3dvcmsgdG8gbmFycm93IGl0IGRvd24uCisKK0lmIHlvdSBnZXQgaXQgZG93biB0byBhIHJvdXRpbmUsIHlvdSdsbCBwcm9iYWJseSBnZXQgYSBmaXggaW4gMjQgaG91cnMuCisKK015IGFwb2xvZ2llcyB0byBMaW51cyBhbmQgdGhlIG90aGVyIGtlcm5lbCBoYWNrZXJzIGZvciBkZXNjcmliaW5nIHRoaXMKK2JydXRlIGZvcmNlIGFwcHJvYWNoLCBpdCdzIGhhcmRseSB3aGF0IGEga2VybmVsIGhhY2tlciB3b3VsZCBkby4gIEhvd2V2ZXIsCitpdCBkb2VzIHdvcmsgYW5kIGl0IGxldHMgbm9uLWhhY2tlcnMgaGVscCBmaXggYnVncy4gIEFuZCBpdCBpcyBjb29sCitiZWNhdXNlIExpbnV4IHNuYXBzaG90cyB3aWxsIGxldCB5b3UgZG8gdGhpcyAtIHNvbWV0aGluZyB0aGF0IHlvdSBjYW4ndAorZG8gd2l0aCB2ZW5kb3Igc3VwcGxpZWQgcmVsZWFzZXMuCisKK0ZpeGluZyB0aGUgYnVnCis9PT09PT09PT09PT09PQorCitOb2JvZHkgaXMgZ29pbmcgdG8gdGVsbCB5b3UgaG93IHRvIGZpeCBidWdzLiBTZXJpb3VzbHkuIFlvdSBuZWVkIHRvIHdvcmsgaXQKK291dC4gQnV0IGJlbG93IGFyZSBzb21lIGhpbnRzIG9uIGhvdyB0byB1c2UgdGhlIHRvb2xzLgorCitUbyBkZWJ1ZyBhIGtlcm5lbCwgdXNlIG9iamR1bXAgYW5kIGxvb2sgZm9yIHRoZSBoZXggb2Zmc2V0IGZyb20gdGhlIGNyYXNoCitvdXRwdXQgdG8gZmluZCB0aGUgdmFsaWQgbGluZSBvZiBjb2RlL2Fzc2VtYmxlci4gV2l0aG91dCBkZWJ1ZyBzeW1ib2xzLCB5b3UKK3dpbGwgc2VlIHRoZSBhc3NlbWJsZXIgY29kZSBmb3IgdGhlIHJvdXRpbmUgc2hvd24sIGJ1dCBpZiB5b3VyIGtlcm5lbCBoYXMKK2RlYnVnIHN5bWJvbHMgdGhlIEMgY29kZSB3aWxsIGFsc28gYmUgYXZhaWxhYmxlLiAoRGVidWcgc3ltYm9scyBjYW4gYmUgZW5hYmxlZAoraW4gdGhlIGtlcm5lbCBoYWNraW5nIG1lbnUgb2YgdGhlIG1lbnUgY29uZmlndXJhdGlvbi4pIEZvciBleGFtcGxlOgorCisgICAgb2JqZHVtcCAtciAtUyAtbCAtLWRpc2Fzc2VtYmxlIG5ldC9kY2NwL2lwdjQubworCitOQi46IHlvdSBuZWVkIHRvIGJlIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIGtlcm5lbCB0cmVlIGZvciB0aGlzIHRvIHBpY2sgdXAKK3lvdXIgQyBmaWxlcy4KKworSWYgeW91IGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZSBjb2RlIHlvdSBjYW4gYWxzbyBkZWJ1ZyBvbiBzb21lIGNyYXNoIGR1bXBzCitlLmcuIGNyYXNoIGR1bXAgb3V0cHV0IGFzIHNob3duIGJ5IERhdmUgTWlsbGVyLgorCis+ICAgIEVJUCBpcyBhdCBpcF9xdWV1ZV94bWl0KzB4MTQvMHg0YzAKKz4gICAgIC4uLgorPiAgICBDb2RlOiA0NCAyNCAwNCBlOCA2ZiAwNSAwMCAwMCBlOSBlOCBmZSBmZiBmZiA4ZCA3NiAwMCA4ZCBiYyAyNyAwMCAwMAorPiAgICAwMCAwMCA1NSA1NyAgNTYgNTMgODEgZWMgYmMgMDAgMDAgMDAgOGIgYWMgMjQgZDAgMDAgMDAgMDAgOGIgNWQgMDgKKz4gICAgPDhiPiA4MyAzYyAwMSAwMCAwMCA4OSA0NCAgMjQgMTQgOGIgNDUgMjggODUgYzAgODkgNDQgMjQgMTggMGYgODUKKz4KKz4gICAgUHV0IHRoZSBieXRlcyBpbnRvIGEgImZvby5zIiBmaWxlIGxpa2UgdGhpczoKKz4KKz4gICAgICAgICAgIC50ZXh0Cis+ICAgICAgICAgICAuZ2xvYmwgZm9vCis+ICAgIGZvbzoKKz4gICAgICAgICAgIC5ieXRlICAuLi4uIC8qIGJ5dGVzIGZyb20gQ29kZTogcGFydCBvZiBPT1BTIGR1bXAgKi8KKz4KKz4gICAgQ29tcGlsZSBpdCB3aXRoICJnY2MgLWMgLW8gZm9vLm8gZm9vLnMiIHRoZW4gbG9vayBhdCB0aGUgb3V0cHV0IG9mCis+ICAgICJvYmpkdW1wIC0tZGlzYXNzZW1ibGUgZm9vLm8iLgorPgorPiAgICBPdXRwdXQ6Cis+Cis+ICAgIGlwX3F1ZXVlX3htaXQ6Cis+ICAgICAgICBwdXNoICAgICAgICVlYnAKKz4gICAgICAgIHB1c2ggICAgICAgJWVkaQorPiAgICAgICAgcHVzaCAgICAgICAlZXNpCis+ICAgICAgICBwdXNoICAgICAgICVlYngKKz4gICAgICAgIHN1YiAgICAgICAgJDB4YmMsICVlc3AKKz4gICAgICAgIG1vdiAgICAgICAgMHhkMCglZXNwKSwgJWVicCAgICAgICAgISAlZWJwID0gYXJnMCAoc2tiKQorPiAgICAgICAgbW92ICAgICAgICAweDgoJWVicCksICVlYnggICAgICAgICAhICVlYnggPSBza2ItPnNrCis+ICAgICAgICBtb3YgICAgICAgIDB4MTNjKCVlYngpLCAlZWF4ICAgICAgICEgJWVheCA9IGluZXRfc2soc2spLT5vcHQKKworSW4gYWRkaXRpb24sIHlvdSBjYW4gdXNlIEdEQiB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBmaWxlIGFuZCBsaW5lCitudW1iZXIgb2YgdGhlIE9PUFMgZnJvbSB0aGUgdm1saW51eCBmaWxlLiBJZiB5b3UgaGF2ZQorQ09ORklHX0RFQlVHX0lORk8gZW5hYmxlZCwgeW91IGNhbiBzaW1wbHkgY29weSB0aGUgRUlQIHZhbHVlIGZyb20gdGhlCitPT1BTOgorCisgRUlQOiAgICAwMDYwOls8YzAyMWU1MGU+XSAgICBOb3QgdGFpbnRlZCBWTEkKKworQW5kIHVzZSBHREIgdG8gdHJhbnNsYXRlIHRoYXQgdG8gaHVtYW4tcmVhZGFibGUgZm9ybToKKworICBnZGIgdm1saW51eAorICAoZ2RiKSBsICoweGMwMjFlNTBlCisKK0lmIHlvdSBkb24ndCBoYXZlIENPTkZJR19ERUJVR19JTkZPIGVuYWJsZWQsIHlvdSB1c2UgdGhlIGZ1bmN0aW9uCitvZmZzZXQgZnJvbSB0aGUgT09QUzoKKworIEVJUCBpcyBhdCB2dF9pb2N0bCsweGRhOC8weDE0ODIKKworQW5kIHJlY29tcGlsZSB0aGUga2VybmVsIHdpdGggQ09ORklHX0RFQlVHX0lORk8gZW5hYmxlZDoKKworICBtYWtlIHZtbGludXgKKyAgZ2RiIHZtbGludXgKKyAgKGdkYikgcCB2dF9pb2N0bAorICAoZ2RiKSBsICooMHg8YWRkcmVzcyBvZiB2dF9pb2N0bD4gKyAweGRhOCkKK29yLCBhcyBvbmUgY29tbWFuZAorICAoZ2RiKSBsICoodnRfaW9jdGwgKyAweGRhOCkKKworSWYgeW91IGhhdmUgYSBjYWxsIHRyYWNlLCBzdWNoIGFzIDotCis+Q2FsbCBUcmFjZToKKz4gWzxmZmZmZmZmZjg4MDJjOGU5Pl0gOmpiZDpsb2dfd2FpdF9jb21taXQrMHhhMy8weGY1Cis+IFs8ZmZmZmZmZmY4MTA0ODJkOT5dIGF1dG9yZW1vdmVfd2FrZV9mdW5jdGlvbisweDAvMHgyZQorPiBbPGZmZmZmZmZmODgwMjc3MGI+XSA6amJkOmpvdXJuYWxfc3RvcCsweDFiZS8weDFlZQorPiAuLi4KK3RoaXMgc2hvd3MgdGhlIHByb2JsZW0gaW4gdGhlIDpqYmQ6IG1vZHVsZS4gWW91IGNhbiBsb2FkIHRoYXQgbW9kdWxlIGluIGdkYgorYW5kIGxpc3QgdGhlIHJlbGV2YW50IGNvZGUuCisgIGdkYiBmcy9qYmQvamJkLmtvCisgIChnZGIpIHAgbG9nX3dhaXRfY29tbWl0CisgIChnZGIpIGwgKigweDxhZGRyZXNzPiArIDB4YTMpCitvcgorICAoZ2RiKSBsICoobG9nX3dhaXRfY29tbWl0ICsgMHhhMykKKworCitBbm90aGVyIHZlcnkgdXNlZnVsIG9wdGlvbiBvZiB0aGUgS2VybmVsIEhhY2tpbmcgc2VjdGlvbiBpbiBtZW51Y29uZmlnIGlzCitEZWJ1ZyBtZW1vcnkgYWxsb2NhdGlvbnMuIFRoaXMgd2lsbCBoZWxwIHlvdSBzZWUgd2hldGhlciBkYXRhIGhhcyBiZWVuCitpbml0aWFsaXNlZCBhbmQgbm90IHNldCBiZWZvcmUgdXNlIGV0Yy4gVG8gc2VlIHRoZSB2YWx1ZXMgdGhhdCBnZXQgYXNzaWduZWQKK3dpdGggdGhpcyBsb29rIGF0IG1tL3NsYWIuYyBhbmQgc2VhcmNoIGZvciBQT0lTT05fSU5VU0UuIFdoZW4gdXNpbmcgdGhpcyBhbgorT29wcyB3aWxsIG9mdGVuIHNob3cgdGhlIHBvaXNvbmVkIGRhdGEgaW5zdGVhZCBvZiB6ZXJvIHdoaWNoIGlzIHRoZSBkZWZhdWx0LgorCitPbmNlIHlvdSBoYXZlIHdvcmtlZCBvdXQgYSBmaXggcGxlYXNlIHN1Ym1pdCBpdCB1cHN0cmVhbS4gQWZ0ZXIgYWxsIG9wZW4KK3NvdXJjZSBpcyBhYm91dCBzaGFyaW5nIHdoYXQgeW91IGRvIGFuZCBkb24ndCB5b3Ugd2FudCB0byBiZSByZWNvZ25pc2VkIGZvcgoreW91ciBnZW5pdXM/CisKK1BsZWFzZSBkbyByZWFkIERvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXMgdGhvdWdoIHRvIGhlbHAgeW91ciBjb2RlIGdldAorYWNjZXB0ZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0NoYW5nZXMgYi9Eb2N1bWVudGF0aW9uL0NoYW5nZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM5N2I3NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vQ2hhbmdlcwpAQCAtMCwwICsxLDQxMSBAQAorSW50cm8KKz09PT09CisKK1RoaXMgZG9jdW1lbnQgaXMgZGVzaWduZWQgdG8gcHJvdmlkZSBhIGxpc3Qgb2YgdGhlIG1pbmltdW0gbGV2ZWxzIG9mCitzb2Z0d2FyZSBuZWNlc3NhcnkgdG8gcnVuIHRoZSAzLjAga2VybmVscy4KKworVGhpcyBkb2N1bWVudCBpcyBvcmlnaW5hbGx5IGJhc2VkIG9uIG15ICJDaGFuZ2VzIiBmaWxlIGZvciAyLjAueCBrZXJuZWxzCithbmQgdGhlcmVmb3JlIG93ZXMgY3JlZGl0IHRvIHRoZSBzYW1lIHBlb3BsZSBhcyB0aGF0IGZpbGUgKEphcmVkIE1hdWNoLAorQXhlbCBCb2xkdCwgQWxlc3NhbmRybyBTaWdhbGEsIGFuZCBjb3VudGxlc3Mgb3RoZXIgdXNlcnMgYWxsIG92ZXIgdGhlCisnbmV0KS4KKworQ3VycmVudCBNaW5pbWFsIFJlcXVpcmVtZW50cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitVcGdyYWRlIHRvIGF0ICpsZWFzdCogdGhlc2Ugc29mdHdhcmUgcmV2aXNpb25zIGJlZm9yZSB0aGlua2luZyB5b3UndmUKK2VuY291bnRlcmVkIGEgYnVnISAgSWYgeW91J3JlIHVuc3VyZSB3aGF0IHZlcnNpb24geW91J3JlIGN1cnJlbnRseQorcnVubmluZywgdGhlIHN1Z2dlc3RlZCBjb21tYW5kIHNob3VsZCB0ZWxsIHlvdS4KKworQWdhaW4sIGtlZXAgaW4gbWluZCB0aGF0IHRoaXMgbGlzdCBhc3N1bWVzIHlvdSBhcmUgYWxyZWFkeSBmdW5jdGlvbmFsbHkKK3J1bm5pbmcgYSBMaW51eCBrZXJuZWwuICBBbHNvLCBub3QgYWxsIHRvb2xzIGFyZSBuZWNlc3Nhcnkgb24gYWxsCitzeXN0ZW1zOyBvYnZpb3VzbHksIGlmIHlvdSBkb24ndCBoYXZlIGFueSBJU0ROIGhhcmR3YXJlLCBmb3IgZXhhbXBsZSwKK3lvdSBwcm9iYWJseSBuZWVkbid0IGNvbmNlcm4geW91cnNlbGYgd2l0aCBpc2RuNGstdXRpbHMuCisKK28gIEdOVSBDICAgICAgICAgICAgICAgICAgMy4yICAgICAgICAgICAgICAgICAgICAgIyBnY2MgLS12ZXJzaW9uCitvICBHTlUgbWFrZSAgICAgICAgICAgICAgIDMuODAgICAgICAgICAgICAgICAgICAgICMgbWFrZSAtLXZlcnNpb24KK28gIGJpbnV0aWxzICAgICAgICAgICAgICAgMi4xMiAgICAgICAgICAgICAgICAgICAgIyBsZCAtdgorbyAgdXRpbC1saW51eCAgICAgICAgICAgICAyLjEwbyAgICAgICAgICAgICAgICAgICAjIGZkZm9ybWF0IC0tdmVyc2lvbgorbyAgbW9kdWxlLWluaXQtdG9vbHMgICAgICAwLjkuMTAgICAgICAgICAgICAgICAgICAjIGRlcG1vZCAtVgorbyAgZTJmc3Byb2dzICAgICAgICAgICAgICAxLjQxLjQgICAgICAgICAgICAgICAgICAjIGUyZnNjayAtVgorbyAgamZzdXRpbHMgICAgICAgICAgICAgICAxLjEuMyAgICAgICAgICAgICAgICAgICAjIGZzY2suamZzIC1WCitvICByZWlzZXJmc3Byb2dzICAgICAgICAgIDMuNi4zICAgICAgICAgICAgICAgICAgICMgcmVpc2VyZnNjayAtVgorbyAgeGZzcHJvZ3MgICAgICAgICAgICAgICAyLjYuMCAgICAgICAgICAgICAgICAgICAjIHhmc19kYiAtVgorbyAgc3F1YXNoZnMtdG9vbHMgICAgICAgICA0LjAgICAgICAgICAgICAgICAgICAgICAjIG1rc3F1YXNoZnMgLXZlcnNpb24KK28gIGJ0cmZzLXByb2dzICAgICAgICAgICAgMC4xOCAgICAgICAgICAgICAgICAgICAgIyBidHJmc2NrCitvICBwY21jaWF1dGlscyAgICAgICAgICAgIDAwNCAgICAgICAgICAgICAgICAgICAgICMgcGNjYXJkY3RsIC1WCitvICBxdW90YS10b29scyAgICAgICAgICAgIDMuMDkgICAgICAgICAgICAgICAgICAgICMgcXVvdGEgLVYKK28gIFBQUCAgICAgICAgICAgICAgICAgICAgMi40LjAgICAgICAgICAgICAgICAgICAgIyBwcHBkIC0tdmVyc2lvbgorbyAgaXNkbjRrLXV0aWxzICAgICAgICAgICAzLjFwcmUxICAgICAgICAgICAgICAgICAjIGlzZG5jdHJsIDI+JjF8Z3JlcCB2ZXJzaW9uCitvICBuZnMtdXRpbHMgICAgICAgICAgICAgIDEuMC41ICAgICAgICAgICAgICAgICAgICMgc2hvd21vdW50IC0tdmVyc2lvbgorbyAgcHJvY3BzICAgICAgICAgICAgICAgICAzLjIuMCAgICAgICAgICAgICAgICAgICAjIHBzIC0tdmVyc2lvbgorbyAgb3Byb2ZpbGUgICAgICAgICAgICAgICAwLjkgICAgICAgICAgICAgICAgICAgICAjIG9wcm9maWxlZCAtLXZlcnNpb24KK28gIHVkZXYgICAgICAgICAgICAgICAgICAgMDgxICAgICAgICAgICAgICAgICAgICAgIyB1ZGV2ZCAtLXZlcnNpb24KK28gIGdydWIgICAgICAgICAgICAgICAgICAgMC45MyAgICAgICAgICAgICAgICAgICAgIyBncnViIC0tdmVyc2lvbiB8fCBncnViLWluc3RhbGwgLS12ZXJzaW9uCitvICBtY2Vsb2cgICAgICAgICAgICAgICAgIDAuNiAgICAgICAgICAgICAgICAgICAgICMgbWNlbG9nIC0tdmVyc2lvbgorbyAgaXB0YWJsZXMgICAgICAgICAgICAgICAxLjQuMiAgICAgICAgICAgICAgICAgICAjIGlwdGFibGVzIC1WCitvICBvcGVuc3NsICYgbGliY3J5cHRvICAgIDEuMC4wICAgICAgICAgICAgICAgICAgICMgb3BlbnNzbCB2ZXJzaW9uCitvICBiYyAgICAgICAgICAgICAgICAgICAgIDEuMDYuOTUgICAgICAgICAgICAgICAgICMgYmMgLS12ZXJzaW9uCisKKworS2VybmVsIGNvbXBpbGF0aW9uCis9PT09PT09PT09PT09PT09PT0KKworR0NDCistLS0KKworVGhlIGdjYyB2ZXJzaW9uIHJlcXVpcmVtZW50cyBtYXkgdmFyeSBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgQ1BVIGluIHlvdXIKK2NvbXB1dGVyLgorCitNYWtlCistLS0tCisKK1lvdSB3aWxsIG5lZWQgR05VIG1ha2UgMy44MCBvciBsYXRlciB0byBidWlsZCB0aGUga2VybmVsLgorCitCaW51dGlscworLS0tLS0tLS0KKworTGludXggb24gSUEtMzIgaGFzIHJlY2VudGx5IHN3aXRjaGVkIGZyb20gdXNpbmcgYXM4NiB0byB1c2luZyBnYXMgZm9yCithc3NlbWJsaW5nIHRoZSAxNi1iaXQgYm9vdCBjb2RlLCByZW1vdmluZyB0aGUgbmVlZCBmb3IgYXM4NiB0byBjb21waWxlCit5b3VyIGtlcm5lbC4gIFRoaXMgY2hhbmdlIGRvZXMsIGhvd2V2ZXIsIG1lYW4gdGhhdCB5b3UgbmVlZCBhIHJlY2VudAorcmVsZWFzZSBvZiBiaW51dGlscy4KKworUGVybAorLS0tLQorCitZb3Ugd2lsbCBuZWVkIHBlcmwgNSBhbmQgdGhlIGZvbGxvd2luZyBtb2R1bGVzOiBHZXRvcHQ6OkxvbmcsIEdldG9wdDo6U3RkLAorRmlsZTo6QmFzZW5hbWUsIGFuZCBGaWxlOjpGaW5kIHRvIGJ1aWxkIHRoZSBrZXJuZWwuCisKK0JDCistLQorCitZb3Ugd2lsbCBuZWVkIGJjIHRvIGJ1aWxkIGtlcm5lbHMgMy4xMCBhbmQgaGlnaGVyCisKKworT3BlblNTTAorLS0tLS0tLQorCitNb2R1bGUgc2lnbmluZyBhbmQgZXh0ZXJuYWwgY2VydGlmaWNhdGUgaGFuZGxpbmcgdXNlIHRoZSBPcGVuU1NMIHByb2dyYW0gYW5kCitjcnlwdG8gbGlicmFyeSB0byBkbyBrZXkgY3JlYXRpb24gYW5kIHNpZ25hdHVyZSBnZW5lcmF0aW9uLgorCitZb3Ugd2lsbCBuZWVkIG9wZW5zc2wgdG8gYnVpbGQga2VybmVscyAzLjcgYW5kIGhpZ2hlciBpZiBtb2R1bGUgc2lnbmluZyBpcworZW5hYmxlZC4gIFlvdSB3aWxsIGFsc28gbmVlZCBvcGVuc3NsIGRldmVsb3BtZW50IHBhY2thZ2VzIHRvIGJ1aWxkIGtlcm5lbHMgNC4zCithbmQgaGlnaGVyLgorCisKK1N5c3RlbSB1dGlsaXRpZXMKKz09PT09PT09PT09PT09PT0KKworQXJjaGl0ZWN0dXJhbCBjaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRGV2RlMgaGFzIGJlZW4gb2Jzb2xldGVkIGluIGZhdm91ciBvZiB1ZGV2CisoaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9rZXJuZWwvaG90cGx1Zy8pCisKKzMyLWJpdCBVSUQgc3VwcG9ydCBpcyBub3cgaW4gcGxhY2UuICBIYXZlIGZ1biEKKworTGludXggZG9jdW1lbnRhdGlvbiBmb3IgZnVuY3Rpb25zIGlzIHRyYW5zaXRpb25pbmcgdG8gaW5saW5lCitkb2N1bWVudGF0aW9uIHZpYSBzcGVjaWFsbHktZm9ybWF0dGVkIGNvbW1lbnRzIG5lYXIgdGhlaXIKK2RlZmluaXRpb25zIGluIHRoZSBzb3VyY2UuICBUaGVzZSBjb21tZW50cyBjYW4gYmUgY29tYmluZWQgd2l0aCB0aGUKK1NHTUwgdGVtcGxhdGVzIGluIHRoZSBEb2N1bWVudGF0aW9uL0RvY0Jvb2sgZGlyZWN0b3J5IHRvIG1ha2UgRG9jQm9vaworZmlsZXMsIHdoaWNoIGNhbiB0aGVuIGJlIGNvbnZlcnRlZCBieSBEb2NCb29rIHN0eWxlc2hlZXRzIHRvIFBvc3RTY3JpcHQsCitIVE1MLCBQREYgZmlsZXMsIGFuZCBzZXZlcmFsIG90aGVyIGZvcm1hdHMuICBJbiBvcmRlciB0byBjb252ZXJ0IGZyb20KK0RvY0Jvb2sgZm9ybWF0IHRvIGEgZm9ybWF0IG9mIHlvdXIgY2hvaWNlLCB5b3UnbGwgbmVlZCB0byBpbnN0YWxsIEphZGUgYXMKK3dlbGwgYXMgdGhlIGRlc2lyZWQgRG9jQm9vayBzdHlsZXNoZWV0cy4KKworVXRpbC1saW51eAorLS0tLS0tLS0tLQorCitOZXcgdmVyc2lvbnMgb2YgdXRpbC1saW51eCBwcm92aWRlICpmZGlzayBzdXBwb3J0IGZvciBsYXJnZXIgZGlza3MsCitzdXBwb3J0IG5ldyBvcHRpb25zIHRvIG1vdW50LCByZWNvZ25pemUgbW9yZSBzdXBwb3J0ZWQgcGFydGl0aW9uCit0eXBlcywgaGF2ZSBhIGZkZm9ybWF0IHdoaWNoIHdvcmtzIHdpdGggMi40IGtlcm5lbHMsIGFuZCBzaW1pbGFyIGdvb2RpZXMuCitZb3UnbGwgcHJvYmFibHkgd2FudCB0byB1cGdyYWRlLgorCitLc3ltb29wcworLS0tLS0tLS0KKworSWYgdGhlIHVudGhpbmthYmxlIGhhcHBlbnMgYW5kIHlvdXIga2VybmVsIG9vcHNlcywgeW91IG1heSBuZWVkIHRoZQora3N5bW9vcHMgdG9vbCB0byBkZWNvZGUgaXQsIGJ1dCBpbiBtb3N0IGNhc2VzIHlvdSBkb24ndC4KK0l0IGlzIGdlbmVyYWxseSBwcmVmZXJyZWQgdG8gYnVpbGQgdGhlIGtlcm5lbCB3aXRoIENPTkZJR19LQUxMU1lNUyBzbwordGhhdCBpdCBwcm9kdWNlcyByZWFkYWJsZSBkdW1wcyB0aGF0IGNhbiBiZSB1c2VkIGFzLWlzICh0aGlzIGFsc28KK3Byb2R1Y2VzIGJldHRlciBvdXRwdXQgdGhhbiBrc3ltb29wcykuICBJZiBmb3Igc29tZSByZWFzb24geW91ciBrZXJuZWwKK2lzIG5vdCBidWlsZCB3aXRoIENPTkZJR19LQUxMU1lNUyBhbmQgeW91IGhhdmUgbm8gd2F5IHRvIHJlYnVpbGQgYW5kCityZXByb2R1Y2UgdGhlIE9vcHMgd2l0aCB0aGF0IG9wdGlvbiwgdGhlbiB5b3UgY2FuIHN0aWxsIGRlY29kZSB0aGF0IE9vcHMKK3dpdGgga3N5bW9vcHMuCisKK01vZHVsZS1Jbml0LVRvb2xzCistLS0tLS0tLS0tLS0tLS0tLQorCitBIG5ldyBtb2R1bGUgbG9hZGVyIGlzIG5vdyBpbiB0aGUga2VybmVsIHRoYXQgcmVxdWlyZXMgbW9kdWxlLWluaXQtdG9vbHMKK3RvIHVzZS4gIEl0IGlzIGJhY2t3YXJkIGNvbXBhdGlibGUgd2l0aCB0aGUgMi40Lnggc2VyaWVzIGtlcm5lbHMuCisKK01raW5pdHJkCistLS0tLS0tLQorCitUaGVzZSBjaGFuZ2VzIHRvIHRoZSAvbGliL21vZHVsZXMgZmlsZSB0cmVlIGxheW91dCBhbHNvIHJlcXVpcmUgdGhhdAorbWtpbml0cmQgYmUgdXBncmFkZWQuCisKK0UyZnNwcm9ncworLS0tLS0tLS0tCisKK1RoZSBsYXRlc3QgdmVyc2lvbiBvZiBlMmZzcHJvZ3MgZml4ZXMgc2V2ZXJhbCBidWdzIGluIGZzY2sgYW5kCitkZWJ1Z2ZzLiAgT2J2aW91c2x5LCBpdCdzIGEgZ29vZCBpZGVhIHRvIHVwZ3JhZGUuCisKK0pGU3V0aWxzCistLS0tLS0tLQorCitUaGUgamZzdXRpbHMgcGFja2FnZSBjb250YWlucyB0aGUgdXRpbGl0aWVzIGZvciB0aGUgZmlsZSBzeXN0ZW0uCitUaGUgZm9sbG93aW5nIHV0aWxpdGllcyBhcmUgYXZhaWxhYmxlOgorbyBmc2NrLmpmcyAtIGluaXRpYXRlIHJlcGxheSBvZiB0aGUgdHJhbnNhY3Rpb24gbG9nLCBhbmQgY2hlY2sKKyAgYW5kIHJlcGFpciBhIEpGUyBmb3JtYXR0ZWQgcGFydGl0aW9uLgorbyBta2ZzLmpmcyAtIGNyZWF0ZSBhIEpGUyBmb3JtYXR0ZWQgcGFydGl0aW9uLgorbyBvdGhlciBmaWxlIHN5c3RlbSB1dGlsaXRpZXMgYXJlIGFsc28gYXZhaWxhYmxlIGluIHRoaXMgcGFja2FnZS4KKworUmVpc2VyZnNwcm9ncworLS0tLS0tLS0tLS0tLQorCitUaGUgcmVpc2VyZnNwcm9ncyBwYWNrYWdlIHNob3VsZCBiZSB1c2VkIGZvciByZWlzZXJmcy0zLjYueAorKExpbnV4IGtlcm5lbHMgMi40LngpLiBJdCBpcyBhIGNvbWJpbmVkIHBhY2thZ2UgYW5kIGNvbnRhaW5zIHdvcmtpbmcKK3ZlcnNpb25zIG9mIG1rcmVpc2VyZnMsIHJlc2l6ZV9yZWlzZXJmcywgZGVidWdyZWlzZXJmcyBhbmQKK3JlaXNlcmZzY2suIFRoZXNlIHV0aWxzIHdvcmsgb24gYm90aCBpMzg2IGFuZCBhbHBoYSBwbGF0Zm9ybXMuCisKK1hmc3Byb2dzCistLS0tLS0tLQorCitUaGUgbGF0ZXN0IHZlcnNpb24gb2YgeGZzcHJvZ3MgY29udGFpbnMgbWtmcy54ZnMsIHhmc19kYiwgYW5kIHRoZQoreGZzX3JlcGFpciB1dGlsaXRpZXMsIGFtb25nIG90aGVycywgZm9yIHRoZSBYRlMgZmlsZXN5c3RlbS4gIEl0IGlzCithcmNoaXRlY3R1cmUgaW5kZXBlbmRlbnQgYW5kIGFueSB2ZXJzaW9uIGZyb20gMi4wLjAgb253YXJkIHNob3VsZAord29yayBjb3JyZWN0bHkgd2l0aCB0aGlzIHZlcnNpb24gb2YgdGhlIFhGUyBrZXJuZWwgY29kZSAoMi42LjAgb3IKK2xhdGVyIGlzIHJlY29tbWVuZGVkLCBkdWUgdG8gc29tZSBzaWduaWZpY2FudCBpbXByb3ZlbWVudHMpLgorCitQQ01DSUF1dGlscworLS0tLS0tLS0tLS0KKworUENNQ0lBdXRpbHMgcmVwbGFjZXMgcGNtY2lhLWNzLiBJdCBwcm9wZXJseSBzZXRzIHVwCitQQ01DSUEgc29ja2V0cyBhdCBzeXN0ZW0gc3RhcnR1cCBhbmQgbG9hZHMgdGhlIGFwcHJvcHJpYXRlIG1vZHVsZXMKK2ZvciAxNi1iaXQgUENNQ0lBIGRldmljZXMgaWYgdGhlIGtlcm5lbCBpcyBtb2R1bGFyaXplZCBhbmQgdGhlIGhvdHBsdWcKK3N1YnN5c3RlbSBpcyB1c2VkLgorCitRdW90YS10b29scworLS0tLS0tLS0tLS0KKworU3VwcG9ydCBmb3IgMzIgYml0IHVpZCdzIGFuZCBnaWQncyBpcyByZXF1aXJlZCBpZiB5b3Ugd2FudCB0byB1c2UKK3RoZSBuZXdlciB2ZXJzaW9uIDIgcXVvdGEgZm9ybWF0LiAgUXVvdGEtdG9vbHMgdmVyc2lvbiAzLjA3IGFuZAorbmV3ZXIgaGFzIHRoaXMgc3VwcG9ydC4gIFVzZSB0aGUgcmVjb21tZW5kZWQgdmVyc2lvbiBvciBuZXdlcgorZnJvbSB0aGUgdGFibGUgYWJvdmUuCisKK0ludGVsIElBMzIgbWljcm9jb2RlCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBIGRyaXZlciBoYXMgYmVlbiBhZGRlZCB0byBhbGxvdyB1cGRhdGluZyBvZiBJbnRlbCBJQTMyIG1pY3JvY29kZSwKK2FjY2Vzc2libGUgYXMgYSBub3JtYWwgKG1pc2MpIGNoYXJhY3RlciBkZXZpY2UuICBJZiB5b3UgYXJlIG5vdCB1c2luZwordWRldiB5b3UgbWF5IG5lZWQgdG86CisKK21rZGlyIC9kZXYvY3B1Citta25vZCAvZGV2L2NwdS9taWNyb2NvZGUgYyAxMCAxODQKK2NobW9kIDA2NDQgL2Rldi9jcHUvbWljcm9jb2RlCisKK2FzIHJvb3QgYmVmb3JlIHlvdSBjYW4gdXNlIHRoaXMuICBZb3UnbGwgcHJvYmFibHkgYWxzbyB3YW50IHRvCitnZXQgdGhlIHVzZXItc3BhY2UgbWljcm9jb2RlX2N0bCB1dGlsaXR5IHRvIHVzZSB3aXRoIHRoaXMuCisKK3VkZXYKKy0tLS0KK3VkZXYgaXMgYSB1c2Vyc3BhY2UgYXBwbGljYXRpb24gZm9yIHBvcHVsYXRpbmcgL2RldiBkeW5hbWljYWxseSB3aXRoCitvbmx5IGVudHJpZXMgZm9yIGRldmljZXMgYWN0dWFsbHkgcHJlc2VudC4gIHVkZXYgcmVwbGFjZXMgdGhlIGJhc2ljCitmdW5jdGlvbmFsaXR5IG9mIGRldmZzLCB3aGlsZSBhbGxvd2luZyBwZXJzaXN0ZW50IGRldmljZSBuYW1pbmcgZm9yCitkZXZpY2VzLgorCitGVVNFCistLS0tCisKK05lZWRzIGxpYmZ1c2UgMi40LjAgb3IgbGF0ZXIuICBBYnNvbHV0ZSBtaW5pbXVtIGlzIDIuMy4wIGJ1dCBtb3VudAorb3B0aW9ucyAnZGlyZWN0X2lvJyBhbmQgJ2tlcm5lbF9jYWNoZScgd29uJ3Qgd29yay4KKworTmV0d29ya2luZworPT09PT09PT09PQorCitHZW5lcmFsIGNoYW5nZXMKKy0tLS0tLS0tLS0tLS0tLQorCitJZiB5b3UgaGF2ZSBhZHZhbmNlZCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gbmVlZHMsIHlvdSBzaG91bGQgcHJvYmFibHkKK2NvbnNpZGVyIHVzaW5nIHRoZSBuZXR3b3JrIHRvb2xzIGZyb20gaXAtcm91dGUyLgorCitQYWNrZXQgRmlsdGVyIC8gTkFUCistLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgcGFja2V0IGZpbHRlcmluZyBhbmQgTkFUIGNvZGUgdXNlcyB0aGUgc2FtZSB0b29scyBsaWtlIHRoZSBwcmV2aW91cyAyLjQueAora2VybmVsIHNlcmllcyAoaXB0YWJsZXMpLiAgSXQgc3RpbGwgaW5jbHVkZXMgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgbW9kdWxlcworZm9yIDIuMi54LXN0eWxlIGlwY2hhaW5zIGFuZCAyLjAueC1zdHlsZSBpcGZ3YWRtLgorCitQUFAKKy0tLQorCitUaGUgUFBQIGRyaXZlciBoYXMgYmVlbiByZXN0cnVjdHVyZWQgdG8gc3VwcG9ydCBtdWx0aWxpbmsgYW5kIHRvCitlbmFibGUgaXQgdG8gb3BlcmF0ZSBvdmVyIGRpdmVyc2UgbWVkaWEgbGF5ZXJzLiAgSWYgeW91IHVzZSBQUFAsCit1cGdyYWRlIHBwcGQgdG8gYXQgbGVhc3QgMi40LjAuCisKK0lmIHlvdSBhcmUgbm90IHVzaW5nIHVkZXYsIHlvdSBtdXN0IGhhdmUgdGhlIGRldmljZSBmaWxlIC9kZXYvcHBwCit3aGljaCBjYW4gYmUgbWFkZSBieToKKworbWtub2QgL2Rldi9wcHAgYyAxMDggMAorCithcyByb290LgorCitJc2RuNGstdXRpbHMKKy0tLS0tLS0tLS0tLQorCitEdWUgdG8gY2hhbmdlcyBpbiB0aGUgbGVuZ3RoIG9mIHRoZSBwaG9uZSBudW1iZXIgZmllbGQsIGlzZG40ay11dGlscworbmVlZHMgdG8gYmUgcmVjb21waWxlZCBvciAocHJlZmVyYWJseSkgdXBncmFkZWQuCisKK05GUy11dGlscworLS0tLS0tLS0tCisKK0luIGFuY2llbnQgKDIuNCBhbmQgZWFybGllcikga2VybmVscywgdGhlIG5mcyBzZXJ2ZXIgbmVlZGVkIHRvIGtub3cKK2Fib3V0IGFueSBjbGllbnQgdGhhdCBleHBlY3RlZCB0byBiZSBhYmxlIHRvIGFjY2VzcyBmaWxlcyB2aWEgTkZTLiAgVGhpcworaW5mb3JtYXRpb24gd291bGQgYmUgZ2l2ZW4gdG8gdGhlIGtlcm5lbCBieSAibW91bnRkIiB3aGVuIHRoZSBjbGllbnQKK21vdW50ZWQgdGhlIGZpbGVzeXN0ZW0sIG9yIGJ5ICJleHBvcnRmcyIgYXQgc3lzdGVtIHN0YXJ0dXAuICBleHBvcnRmcword291bGQgdGFrZSBpbmZvcm1hdGlvbiBhYm91dCBhY3RpdmUgY2xpZW50cyBmcm9tIC92YXIvbGliL25mcy9ybXRhYi4KKworVGhpcyBhcHByb2FjaCBpcyBxdWl0ZSBmcmFnaWxlIGFzIGl0IGRlcGVuZHMgb24gcm10YWIgYmVpbmcgY29ycmVjdAord2hpY2ggaXMgbm90IGFsd2F5cyBlYXN5LCBwYXJ0aWN1bGFybHkgd2hlbiB0cnlpbmcgdG8gaW1wbGVtZW50CitmYWlsLW92ZXIuICBFdmVuIHdoZW4gdGhlIHN5c3RlbSBpcyB3b3JraW5nIHdlbGwsIHJtdGFiIHN1ZmZlcnMgZnJvbQorZ2V0dGluZyBsb3RzIG9mIG9sZCBlbnRyaWVzIHRoYXQgbmV2ZXIgZ2V0IHJlbW92ZWQuCisKK1dpdGggbW9kZXJuIGtlcm5lbHMgd2UgaGF2ZSB0aGUgb3B0aW9uIG9mIGhhdmluZyB0aGUga2VybmVsIHRlbGwgbW91bnRkCit3aGVuIGl0IGdldHMgYSByZXF1ZXN0IGZyb20gYW4gdW5rbm93biBob3N0LCBhbmQgbW91bnRkIGNhbiBnaXZlCithcHByb3ByaWF0ZSBleHBvcnQgaW5mb3JtYXRpb24gdG8gdGhlIGtlcm5lbC4gIFRoaXMgcmVtb3ZlcyB0aGUKK2RlcGVuZGVuY3kgb24gcm10YWIgYW5kIG1lYW5zIHRoYXQgdGhlIGtlcm5lbCBvbmx5IG5lZWRzIHRvIGtub3cgYWJvdXQKK2N1cnJlbnRseSBhY3RpdmUgY2xpZW50cy4KKworVG8gZW5hYmxlIHRoaXMgbmV3IGZ1bmN0aW9uYWxpdHksIHlvdSBuZWVkIHRvOgorCisgIG1vdW50IC10IG5mc2QgbmZzZCAvcHJvYy9mcy9uZnNkCisKK2JlZm9yZSBydW5uaW5nIGV4cG9ydGZzIG9yIG1vdW50ZC4gIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgYWxsIE5GUworc2VydmljZXMgYmUgcHJvdGVjdGVkIGZyb20gdGhlIGludGVybmV0LWF0LWxhcmdlIGJ5IGEgZmlyZXdhbGwgd2hlcmUKK3RoYXQgaXMgcG9zc2libGUuCisKK21jZWxvZworLS0tLS0tCisKK09uIHg4NiBrZXJuZWxzIHRoZSBtY2Vsb2cgdXRpbGl0eSBpcyBuZWVkZWQgdG8gcHJvY2VzcyBhbmQgbG9nIG1hY2hpbmUgY2hlY2sKK2V2ZW50cyB3aGVuIENPTkZJR19YODZfTUNFIGlzIGVuYWJsZWQuIE1hY2hpbmUgY2hlY2sgZXZlbnRzIGFyZSBlcnJvcnMgcmVwb3J0ZWQKK2J5IHRoZSBDUFUuIFByb2Nlc3NpbmcgdGhlbSBpcyBzdHJvbmdseSBlbmNvdXJhZ2VkLgorCitHZXR0aW5nIHVwZGF0ZWQgc29mdHdhcmUKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitLZXJuZWwgY29tcGlsYXRpb24KKyoqKioqKioqKioqKioqKioqKgorCitnY2MKKy0tLQorbyAgPGZ0cDovL2Z0cC5nbnUub3JnL2dudS9nY2MvPgorCitNYWtlCistLS0tCitvICA8ZnRwOi8vZnRwLmdudS5vcmcvZ251L21ha2UvPgorCitCaW51dGlscworLS0tLS0tLS0KK28gIDxmdHA6Ly9mdHAua2VybmVsLm9yZy9wdWIvbGludXgvZGV2ZWwvYmludXRpbHMvPgorCitPcGVuU1NMCistLS0tLS0tCitvICA8aHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvPgorCitTeXN0ZW0gdXRpbGl0aWVzCisqKioqKioqKioqKioqKioqCisKK1V0aWwtbGludXgKKy0tLS0tLS0tLS0KK28gIDxmdHA6Ly9mdHAua2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC8+CisKK0tzeW1vb3BzCistLS0tLS0tLQorbyAgPGZ0cDovL2Z0cC5rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9rZXJuZWwva3N5bW9vcHMvdjIuNC8+CisKK01vZHVsZS1Jbml0LVRvb2xzCistLS0tLS0tLS0tLS0tLS0tLQorbyAgPGZ0cDovL2Z0cC5rZXJuZWwub3JnL3B1Yi9saW51eC9rZXJuZWwvcGVvcGxlL3J1c3R5L21vZHVsZXMvPgorCitNa2luaXRyZAorLS0tLS0tLS0KK28gIDxodHRwczovL2NvZGUubGF1bmNocGFkLm5ldC9pbml0cmQtdG9vbHMvbWFpbj4KKworRTJmc3Byb2dzCistLS0tLS0tLS0KK28gIDxodHRwOi8vcHJkb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L2UyZnNwcm9ncy9lMmZzcHJvZ3MtMS4yOS50YXIuZ3o+CisKK0pGU3V0aWxzCistLS0tLS0tLQorbyAgPGh0dHA6Ly9qZnMuc291cmNlZm9yZ2UubmV0Lz4KKworUmVpc2VyZnNwcm9ncworLS0tLS0tLS0tLS0tLQorbyAgPGh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMvZnMvcmVpc2VyZnMvPgorCitYZnNwcm9ncworLS0tLS0tLS0KK28gIDxmdHA6Ly9vc3Muc2dpLmNvbS9wcm9qZWN0cy94ZnMvPgorCitQY21jaWF1dGlscworLS0tLS0tLS0tLS0KK28gIDxmdHA6Ly9mdHAua2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMva2VybmVsL3BjbWNpYS8+CisKK1F1b3RhLXRvb2xzCistLS0tLS0tLS0tCitvICA8aHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saW51eHF1b3RhLz4KKworRG9jQm9vayBTdHlsZXNoZWV0cworLS0tLS0tLS0tLS0tLS0tLS0tLQorbyAgPGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZG9jYm9vay9maWxlcy9kb2Nib29rLWRzc3NsLz4KKworWE1MVE8gWFNMVCBGcm9udGVuZAorLS0tLS0tLS0tLS0tLS0tLS0tLQorbyAgPGh0dHA6Ly9jeWJlcmVsay5uZXQvdGltL3htbHRvLz4KKworSW50ZWwgUDYgbWljcm9jb2RlCistLS0tLS0tLS0tLS0tLS0tLS0KK28gIDxodHRwczovL2Rvd25sb2FkY2VudGVyLmludGVsLmNvbS8+CisKK3VkZXYKKy0tLS0KK28gPGh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL3N5c3RlbWQvbWFuL3VkZXYuaHRtbD4KKworRlVTRQorLS0tLQorbyA8aHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9mdXNlPgorCittY2Vsb2cKKy0tLS0tLQorbyA8aHR0cDovL3d3dy5tY2Vsb2cub3JnLz4KKworTmV0d29ya2luZworKioqKioqKioqKgorCitQUFAKKy0tLQorbyAgPGZ0cDovL2Z0cC5zYW1iYS5vcmcvcHViL3BwcC8+CisKK0lzZG40ay11dGlscworLS0tLS0tLS0tLS0tCitvICA8ZnRwOi8vZnRwLmlzZG40bGludXguZGUvcHViL2lzZG40bGludXgvdXRpbHMvPgorCitORlMtdXRpbHMKKy0tLS0tLS0tLQorbyAgPGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9zaG93ZmlsZXMucGhwP2dyb3VwX2lkPTE0PgorCitJcHRhYmxlcworLS0tLS0tLS0KK28gIDxodHRwOi8vd3d3LmlwdGFibGVzLm9yZy9kb3dubG9hZHMuaHRtbD4KKworSXAtcm91dGUyCistLS0tLS0tLS0KK28gIDxodHRwczovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9uZXQvaXByb3V0ZTIvPgorCitPUHJvZmlsZQorLS0tLS0tLS0KK28gIDxodHRwOi8vb3Byb2ZpbGUuc2YubmV0L2Rvd25sb2FkLz4KKworTkZTLVV0aWxzCistLS0tLS0tLS0KK28gIDxodHRwOi8vbmZzLnNvdXJjZWZvcmdlLm5ldC8+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0NvZGVPZkNvbmZsaWN0IGIvRG9jdW1lbnRhdGlvbi9Db2RlT2ZDb25mbGljdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjg0ZDBiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Db2RlT2ZDb25mbGljdApAQCAtMCwwICsxLDI3IEBACitDb2RlIG9mIENvbmZsaWN0CistLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQgZWZmb3J0IGlzIGEgdmVyeSBwZXJzb25hbCBwcm9jZXNzIGNvbXBhcmVkCit0byAidHJhZGl0aW9uYWwiIHdheXMgb2YgZGV2ZWxvcGluZyBzb2Z0d2FyZS4gIFlvdXIgY29kZSBhbmQgaWRlYXMKK2JlaGluZCBpdCB3aWxsIGJlIGNhcmVmdWxseSByZXZpZXdlZCwgb2Z0ZW4gcmVzdWx0aW5nIGluIGNyaXRpcXVlIGFuZAorY3JpdGljaXNtLiAgVGhlIHJldmlldyB3aWxsIGFsbW9zdCBhbHdheXMgcmVxdWlyZSBpbXByb3ZlbWVudHMgdG8gdGhlCitjb2RlIGJlZm9yZSBpdCBjYW4gYmUgaW5jbHVkZWQgaW4gdGhlIGtlcm5lbC4gIEtub3cgdGhhdCB0aGlzIGhhcHBlbnMKK2JlY2F1c2UgZXZlcnlvbmUgaW52b2x2ZWQgd2FudHMgdG8gc2VlIHRoZSBiZXN0IHBvc3NpYmxlIHNvbHV0aW9uIGZvcgordGhlIG92ZXJhbGwgc3VjY2VzcyBvZiBMaW51eC4gIFRoaXMgZGV2ZWxvcG1lbnQgcHJvY2VzcyBoYXMgYmVlbiBwcm92ZW4KK3RvIGNyZWF0ZSB0aGUgbW9zdCByb2J1c3Qgb3BlcmF0aW5nIHN5c3RlbSBrZXJuZWwgZXZlciwgYW5kIHdlIGRvIG5vdAord2FudCB0byBkbyBhbnl0aGluZyB0byBjYXVzZSB0aGUgcXVhbGl0eSBvZiBzdWJtaXNzaW9uIGFuZCBldmVudHVhbAorcmVzdWx0IHRvIGV2ZXIgZGVjcmVhc2UuCisKK0lmIGhvd2V2ZXIsIGFueW9uZSBmZWVscyBwZXJzb25hbGx5IGFidXNlZCwgdGhyZWF0ZW5lZCwgb3Igb3RoZXJ3aXNlCit1bmNvbWZvcnRhYmxlIGR1ZSB0byB0aGlzIHByb2Nlc3MsIHRoYXQgaXMgbm90IGFjY2VwdGFibGUuICBJZiBzbywKK3BsZWFzZSBjb250YWN0IHRoZSBMaW51eCBGb3VuZGF0aW9uJ3MgVGVjaG5pY2FsIEFkdmlzb3J5IEJvYXJkIGF0Cis8dGFiQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnPiwgb3IgdGhlIGluZGl2aWR1YWwgbWVtYmVycywgYW5kIHRoZXkKK3dpbGwgd29yayB0byByZXNvbHZlIHRoZSBpc3N1ZSB0byB0aGUgYmVzdCBvZiB0aGVpciBhYmlsaXR5LiAgRm9yIG1vcmUKK2luZm9ybWF0aW9uIG9uIHdobyBpcyBvbiB0aGUgVGVjaG5pY2FsIEFkdmlzb3J5IEJvYXJkIGFuZCB3aGF0IHRoZWlyCityb2xlIGlzLCBwbGVhc2Ugc2VlOgorCWh0dHA6Ly93d3cubGludXhmb3VuZGF0aW9uLm9yZy9wcm9ncmFtcy9hZHZpc29yeS1jb3VuY2lscy90YWIKKworQXMgYSByZXZpZXdlciBvZiBjb2RlLCBwbGVhc2Ugc3RyaXZlIHRvIGtlZXAgdGhpbmdzIGNpdmlsIGFuZCBmb2N1c2VkIG9uCit0aGUgdGVjaG5pY2FsIGlzc3VlcyBpbnZvbHZlZC4gIFdlIGFyZSBhbGwgaHVtYW5zLCBhbmQgZnJ1c3RyYXRpb25zIGNhbgorYmUgaGlnaCBvbiBib3RoIHNpZGVzIG9mIHRoZSBwcm9jZXNzLiAgVHJ5IHRvIGtlZXAgaW4gbWluZCB0aGUgaW1tb3J0YWwKK3dvcmRzIG9mIEJpbGwgYW5kIFRlZCwgIkJlIGV4Y2VsbGVudCB0byBlYWNoIG90aGVyLiIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQ29kaW5nU3R5bGUgYi9Eb2N1bWVudGF0aW9uL0NvZGluZ1N0eWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNmY4MTcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0NvZGluZ1N0eWxlCkBAIC0wLDAgKzEsOTQ2IEBACisKKwkJTGludXgga2VybmVsIGNvZGluZyBzdHlsZQorCitUaGlzIGlzIGEgc2hvcnQgZG9jdW1lbnQgZGVzY3JpYmluZyB0aGUgcHJlZmVycmVkIGNvZGluZyBzdHlsZSBmb3IgdGhlCitsaW51eCBrZXJuZWwuICBDb2Rpbmcgc3R5bGUgaXMgdmVyeSBwZXJzb25hbCwgYW5kIEkgd29uJ3QgX2ZvcmNlXyBteQordmlld3Mgb24gYW55Ym9keSwgYnV0IHRoaXMgaXMgd2hhdCBnb2VzIGZvciBhbnl0aGluZyB0aGF0IEkgaGF2ZSB0byBiZQorYWJsZSB0byBtYWludGFpbiwgYW5kIEknZCBwcmVmZXIgaXQgZm9yIG1vc3Qgb3RoZXIgdGhpbmdzIHRvby4gIFBsZWFzZQorYXQgbGVhc3QgY29uc2lkZXIgdGhlIHBvaW50cyBtYWRlIGhlcmUuCisKK0ZpcnN0IG9mZiwgSSdkIHN1Z2dlc3QgcHJpbnRpbmcgb3V0IGEgY29weSBvZiB0aGUgR05VIGNvZGluZyBzdGFuZGFyZHMsCithbmQgTk9UIHJlYWQgaXQuICBCdXJuIHRoZW0sIGl0J3MgYSBncmVhdCBzeW1ib2xpYyBnZXN0dXJlLgorCitBbnl3YXksIGhlcmUgZ29lczoKKworCisJCUNoYXB0ZXIgMTogSW5kZW50YXRpb24KKworVGFicyBhcmUgOCBjaGFyYWN0ZXJzLCBhbmQgdGh1cyBpbmRlbnRhdGlvbnMgYXJlIGFsc28gOCBjaGFyYWN0ZXJzLgorVGhlcmUgYXJlIGhlcmV0aWMgbW92ZW1lbnRzIHRoYXQgdHJ5IHRvIG1ha2UgaW5kZW50YXRpb25zIDQgKG9yIGV2ZW4gMiEpCitjaGFyYWN0ZXJzIGRlZXAsIGFuZCB0aGF0IGlzIGFraW4gdG8gdHJ5aW5nIHRvIGRlZmluZSB0aGUgdmFsdWUgb2YgUEkgdG8KK2JlIDMuCisKK1JhdGlvbmFsZTogVGhlIHdob2xlIGlkZWEgYmVoaW5kIGluZGVudGF0aW9uIGlzIHRvIGNsZWFybHkgZGVmaW5lIHdoZXJlCithIGJsb2NrIG9mIGNvbnRyb2wgc3RhcnRzIGFuZCBlbmRzLiAgRXNwZWNpYWxseSB3aGVuIHlvdSd2ZSBiZWVuIGxvb2tpbmcKK2F0IHlvdXIgc2NyZWVuIGZvciAyMCBzdHJhaWdodCBob3VycywgeW91J2xsIGZpbmQgaXQgYSBsb3QgZWFzaWVyIHRvIHNlZQoraG93IHRoZSBpbmRlbnRhdGlvbiB3b3JrcyBpZiB5b3UgaGF2ZSBsYXJnZSBpbmRlbnRhdGlvbnMuCisKK05vdywgc29tZSBwZW9wbGUgd2lsbCBjbGFpbSB0aGF0IGhhdmluZyA4LWNoYXJhY3RlciBpbmRlbnRhdGlvbnMgbWFrZXMKK3RoZSBjb2RlIG1vdmUgdG9vIGZhciB0byB0aGUgcmlnaHQsIGFuZCBtYWtlcyBpdCBoYXJkIHRvIHJlYWQgb24gYQorODAtY2hhcmFjdGVyIHRlcm1pbmFsIHNjcmVlbi4gIFRoZSBhbnN3ZXIgdG8gdGhhdCBpcyB0aGF0IGlmIHlvdSBuZWVkCittb3JlIHRoYW4gMyBsZXZlbHMgb2YgaW5kZW50YXRpb24sIHlvdSdyZSBzY3Jld2VkIGFueXdheSwgYW5kIHNob3VsZCBmaXgKK3lvdXIgcHJvZ3JhbS4KKworSW4gc2hvcnQsIDgtY2hhciBpbmRlbnRzIG1ha2UgdGhpbmdzIGVhc2llciB0byByZWFkLCBhbmQgaGF2ZSB0aGUgYWRkZWQKK2JlbmVmaXQgb2Ygd2FybmluZyB5b3Ugd2hlbiB5b3UncmUgbmVzdGluZyB5b3VyIGZ1bmN0aW9ucyB0b28gZGVlcC4KK0hlZWQgdGhhdCB3YXJuaW5nLgorCitUaGUgcHJlZmVycmVkIHdheSB0byBlYXNlIG11bHRpcGxlIGluZGVudGF0aW9uIGxldmVscyBpbiBhIHN3aXRjaCBzdGF0ZW1lbnQgaXMKK3RvIGFsaWduIHRoZSAic3dpdGNoIiBhbmQgaXRzIHN1Ym9yZGluYXRlICJjYXNlIiBsYWJlbHMgaW4gdGhlIHNhbWUgY29sdW1uCitpbnN0ZWFkIG9mICJkb3VibGUtaW5kZW50aW5nIiB0aGUgImNhc2UiIGxhYmVscy4gIEUuZy46CisKKwlzd2l0Y2ggKHN1ZmZpeCkgeworCWNhc2UgJ0cnOgorCWNhc2UgJ2cnOgorCQltZW0gPDw9IDMwOworCQlicmVhazsKKwljYXNlICdNJzoKKwljYXNlICdtJzoKKwkJbWVtIDw8PSAyMDsKKwkJYnJlYWs7CisJY2FzZSAnSyc6CisJY2FzZSAnayc6CisJCW1lbSA8PD0gMTA7CisJCS8qIGZhbGwgdGhyb3VnaCAqLworCWRlZmF1bHQ6CisJCWJyZWFrOworCX0KKworRG9uJ3QgcHV0IG11bHRpcGxlIHN0YXRlbWVudHMgb24gYSBzaW5nbGUgbGluZSB1bmxlc3MgeW91IGhhdmUKK3NvbWV0aGluZyB0byBoaWRlOgorCisJaWYgKGNvbmRpdGlvbikgZG9fdGhpczsKKwkgIGRvX3NvbWV0aGluZ19ldmVyeXRpbWU7CisKK0Rvbid0IHB1dCBtdWx0aXBsZSBhc3NpZ25tZW50cyBvbiBhIHNpbmdsZSBsaW5lIGVpdGhlci4gIEtlcm5lbCBjb2Rpbmcgc3R5bGUKK2lzIHN1cGVyIHNpbXBsZS4gIEF2b2lkIHRyaWNreSBleHByZXNzaW9ucy4KKworT3V0c2lkZSBvZiBjb21tZW50cywgZG9jdW1lbnRhdGlvbiBhbmQgZXhjZXB0IGluIEtjb25maWcsIHNwYWNlcyBhcmUgbmV2ZXIKK3VzZWQgZm9yIGluZGVudGF0aW9uLCBhbmQgdGhlIGFib3ZlIGV4YW1wbGUgaXMgZGVsaWJlcmF0ZWx5IGJyb2tlbi4KKworR2V0IGEgZGVjZW50IGVkaXRvciBhbmQgZG9uJ3QgbGVhdmUgd2hpdGVzcGFjZSBhdCB0aGUgZW5kIG9mIGxpbmVzLgorCisKKwkJQ2hhcHRlciAyOiBCcmVha2luZyBsb25nIGxpbmVzIGFuZCBzdHJpbmdzCisKK0NvZGluZyBzdHlsZSBpcyBhbGwgYWJvdXQgcmVhZGFiaWxpdHkgYW5kIG1haW50YWluYWJpbGl0eSB1c2luZyBjb21tb25seQorYXZhaWxhYmxlIHRvb2xzLgorCitUaGUgbGltaXQgb24gdGhlIGxlbmd0aCBvZiBsaW5lcyBpcyA4MCBjb2x1bW5zIGFuZCB0aGlzIGlzIGEgc3Ryb25nbHkKK3ByZWZlcnJlZCBsaW1pdC4KKworU3RhdGVtZW50cyBsb25nZXIgdGhhbiA4MCBjb2x1bW5zIHdpbGwgYmUgYnJva2VuIGludG8gc2Vuc2libGUgY2h1bmtzLCB1bmxlc3MKK2V4Y2VlZGluZyA4MCBjb2x1bW5zIHNpZ25pZmljYW50bHkgaW5jcmVhc2VzIHJlYWRhYmlsaXR5IGFuZCBkb2VzIG5vdCBoaWRlCitpbmZvcm1hdGlvbi4gRGVzY2VuZGFudHMgYXJlIGFsd2F5cyBzdWJzdGFudGlhbGx5IHNob3J0ZXIgdGhhbiB0aGUgcGFyZW50IGFuZAorYXJlIHBsYWNlZCBzdWJzdGFudGlhbGx5IHRvIHRoZSByaWdodC4gVGhlIHNhbWUgYXBwbGllcyB0byBmdW5jdGlvbiBoZWFkZXJzCit3aXRoIGEgbG9uZyBhcmd1bWVudCBsaXN0LiBIb3dldmVyLCBuZXZlciBicmVhayB1c2VyLXZpc2libGUgc3RyaW5ncyBzdWNoIGFzCitwcmludGsgbWVzc2FnZXMsIGJlY2F1c2UgdGhhdCBicmVha3MgdGhlIGFiaWxpdHkgdG8gZ3JlcCBmb3IgdGhlbS4KKworCisJCUNoYXB0ZXIgMzogUGxhY2luZyBCcmFjZXMgYW5kIFNwYWNlcworCitUaGUgb3RoZXIgaXNzdWUgdGhhdCBhbHdheXMgY29tZXMgdXAgaW4gQyBzdHlsaW5nIGlzIHRoZSBwbGFjZW1lbnQgb2YKK2JyYWNlcy4gIFVubGlrZSB0aGUgaW5kZW50IHNpemUsIHRoZXJlIGFyZSBmZXcgdGVjaG5pY2FsIHJlYXNvbnMgdG8KK2Nob29zZSBvbmUgcGxhY2VtZW50IHN0cmF0ZWd5IG92ZXIgdGhlIG90aGVyLCBidXQgdGhlIHByZWZlcnJlZCB3YXksIGFzCitzaG93biB0byB1cyBieSB0aGUgcHJvcGhldHMgS2VybmlnaGFuIGFuZCBSaXRjaGllLCBpcyB0byBwdXQgdGhlIG9wZW5pbmcKK2JyYWNlIGxhc3Qgb24gdGhlIGxpbmUsIGFuZCBwdXQgdGhlIGNsb3NpbmcgYnJhY2UgZmlyc3QsIHRodXNseToKKworCWlmICh4IGlzIHRydWUpIHsKKwkJd2UgZG8geQorCX0KKworVGhpcyBhcHBsaWVzIHRvIGFsbCBub24tZnVuY3Rpb24gc3RhdGVtZW50IGJsb2NrcyAoaWYsIHN3aXRjaCwgZm9yLAord2hpbGUsIGRvKS4gIEUuZy46CisKKwlzd2l0Y2ggKGFjdGlvbikgeworCWNhc2UgS09CSl9BREQ6CisJCXJldHVybiAiYWRkIjsKKwljYXNlIEtPQkpfUkVNT1ZFOgorCQlyZXR1cm4gInJlbW92ZSI7CisJY2FzZSBLT0JKX0NIQU5HRToKKwkJcmV0dXJuICJjaGFuZ2UiOworCWRlZmF1bHQ6CisJCXJldHVybiBOVUxMOworCX0KKworSG93ZXZlciwgdGhlcmUgaXMgb25lIHNwZWNpYWwgY2FzZSwgbmFtZWx5IGZ1bmN0aW9uczogdGhleSBoYXZlIHRoZQorb3BlbmluZyBicmFjZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGxpbmUsIHRodXM6CisKKwlpbnQgZnVuY3Rpb24oaW50IHgpCisJeworCQlib2R5IG9mIGZ1bmN0aW9uCisJfQorCitIZXJldGljIHBlb3BsZSBhbGwgb3ZlciB0aGUgd29ybGQgaGF2ZSBjbGFpbWVkIHRoYXQgdGhpcyBpbmNvbnNpc3RlbmN5CitpcyAuLi4gIHdlbGwgLi4uICBpbmNvbnNpc3RlbnQsIGJ1dCBhbGwgcmlnaHQtdGhpbmtpbmcgcGVvcGxlIGtub3cgdGhhdAorKGEpIEsmUiBhcmUgX3JpZ2h0XyBhbmQgKGIpIEsmUiBhcmUgcmlnaHQuICBCZXNpZGVzLCBmdW5jdGlvbnMgYXJlCitzcGVjaWFsIGFueXdheSAoeW91IGNhbid0IG5lc3QgdGhlbSBpbiBDKS4KKworTm90ZSB0aGF0IHRoZSBjbG9zaW5nIGJyYWNlIGlzIGVtcHR5IG9uIGEgbGluZSBvZiBpdHMgb3duLCBfZXhjZXB0XyBpbgordGhlIGNhc2VzIHdoZXJlIGl0IGlzIGZvbGxvd2VkIGJ5IGEgY29udGludWF0aW9uIG9mIHRoZSBzYW1lIHN0YXRlbWVudCwKK2llIGEgIndoaWxlIiBpbiBhIGRvLXN0YXRlbWVudCBvciBhbiAiZWxzZSIgaW4gYW4gaWYtc3RhdGVtZW50LCBsaWtlCit0aGlzOgorCisJZG8geworCQlib2R5IG9mIGRvLWxvb3AKKwl9IHdoaWxlIChjb25kaXRpb24pOworCithbmQKKworCWlmICh4ID09IHkpIHsKKwkJLi4KKwl9IGVsc2UgaWYgKHggPiB5KSB7CisJCS4uLgorCX0gZWxzZSB7CisJCS4uLi4KKwl9CisKK1JhdGlvbmFsZTogSyZSLgorCitBbHNvLCBub3RlIHRoYXQgdGhpcyBicmFjZS1wbGFjZW1lbnQgYWxzbyBtaW5pbWl6ZXMgdGhlIG51bWJlciBvZiBlbXB0eQorKG9yIGFsbW9zdCBlbXB0eSkgbGluZXMsIHdpdGhvdXQgYW55IGxvc3Mgb2YgcmVhZGFiaWxpdHkuICBUaHVzLCBhcyB0aGUKK3N1cHBseSBvZiBuZXctbGluZXMgb24geW91ciBzY3JlZW4gaXMgbm90IGEgcmVuZXdhYmxlIHJlc291cmNlICh0aGluaworMjUtbGluZSB0ZXJtaW5hbCBzY3JlZW5zIGhlcmUpLCB5b3UgaGF2ZSBtb3JlIGVtcHR5IGxpbmVzIHRvIHB1dAorY29tbWVudHMgb24uCisKK0RvIG5vdCB1bm5lY2Vzc2FyaWx5IHVzZSBicmFjZXMgd2hlcmUgYSBzaW5nbGUgc3RhdGVtZW50IHdpbGwgZG8uCisKKwlpZiAoY29uZGl0aW9uKQorCQlhY3Rpb24oKTsKKworYW5kCisKKwlpZiAoY29uZGl0aW9uKQorCQlkb190aGlzKCk7CisJZWxzZQorCQlkb190aGF0KCk7CisKK1RoaXMgZG9lcyBub3QgYXBwbHkgaWYgb25seSBvbmUgYnJhbmNoIG9mIGEgY29uZGl0aW9uYWwgc3RhdGVtZW50IGlzIGEgc2luZ2xlCitzdGF0ZW1lbnQ7IGluIHRoZSBsYXR0ZXIgY2FzZSB1c2UgYnJhY2VzIGluIGJvdGggYnJhbmNoZXM6CisKKwlpZiAoY29uZGl0aW9uKSB7CisJCWRvX3RoaXMoKTsKKwkJZG9fdGhhdCgpOworCX0gZWxzZSB7CisJCW90aGVyd2lzZSgpOworCX0KKworCQkzLjE6ICBTcGFjZXMKKworTGludXgga2VybmVsIHN0eWxlIGZvciB1c2Ugb2Ygc3BhY2VzIGRlcGVuZHMgKG1vc3RseSkgb24KK2Z1bmN0aW9uLXZlcnN1cy1rZXl3b3JkIHVzYWdlLiAgVXNlIGEgc3BhY2UgYWZ0ZXIgKG1vc3QpIGtleXdvcmRzLiAgVGhlCitub3RhYmxlIGV4Y2VwdGlvbnMgYXJlIHNpemVvZiwgdHlwZW9mLCBhbGlnbm9mLCBhbmQgX19hdHRyaWJ1dGVfXywgd2hpY2ggbG9vaworc29tZXdoYXQgbGlrZSBmdW5jdGlvbnMgKGFuZCBhcmUgdXN1YWxseSB1c2VkIHdpdGggcGFyZW50aGVzZXMgaW4gTGludXgsCithbHRob3VnaCB0aGV5IGFyZSBub3QgcmVxdWlyZWQgaW4gdGhlIGxhbmd1YWdlLCBhcyBpbjogInNpemVvZiBpbmZvIiBhZnRlcgorInN0cnVjdCBmaWxlaW5mbyBpbmZvOyIgaXMgZGVjbGFyZWQpLgorCitTbyB1c2UgYSBzcGFjZSBhZnRlciB0aGVzZSBrZXl3b3JkczoKKworCWlmLCBzd2l0Y2gsIGNhc2UsIGZvciwgZG8sIHdoaWxlCisKK2J1dCBub3Qgd2l0aCBzaXplb2YsIHR5cGVvZiwgYWxpZ25vZiwgb3IgX19hdHRyaWJ1dGVfXy4gIEUuZy4sCisKKwlzID0gc2l6ZW9mKHN0cnVjdCBmaWxlKTsKKworRG8gbm90IGFkZCBzcGFjZXMgYXJvdW5kIChpbnNpZGUpIHBhcmVudGhlc2l6ZWQgZXhwcmVzc2lvbnMuICBUaGlzIGV4YW1wbGUgaXMKKypiYWQqOgorCisJcyA9IHNpemVvZiggc3RydWN0IGZpbGUgKTsKKworV2hlbiBkZWNsYXJpbmcgcG9pbnRlciBkYXRhIG9yIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgcG9pbnRlciB0eXBlLCB0aGUKK3ByZWZlcnJlZCB1c2Ugb2YgJyonIGlzIGFkamFjZW50IHRvIHRoZSBkYXRhIG5hbWUgb3IgZnVuY3Rpb24gbmFtZSBhbmQgbm90CithZGphY2VudCB0byB0aGUgdHlwZSBuYW1lLiAgRXhhbXBsZXM6CisKKwljaGFyICpsaW51eF9iYW5uZXI7CisJdW5zaWduZWQgbG9uZyBsb25nIG1lbXBhcnNlKGNoYXIgKnB0ciwgY2hhciAqKnJldHB0cik7CisJY2hhciAqbWF0Y2hfc3RyZHVwKHN1YnN0cmluZ190ICpzKTsKKworVXNlIG9uZSBzcGFjZSBhcm91bmQgKG9uIGVhY2ggc2lkZSBvZikgbW9zdCBiaW5hcnkgYW5kIHRlcm5hcnkgb3BlcmF0b3JzLAorc3VjaCBhcyBhbnkgb2YgdGhlc2U6CisKKwk9ICArICAtICA8ICA+ICAqICAvICAlICB8ICAmICBeICA8PSAgPj0gID09ICAhPSAgPyAgOgorCitidXQgbm8gc3BhY2UgYWZ0ZXIgdW5hcnkgb3BlcmF0b3JzOgorCisJJiAgKiAgKyAgLSAgfiAgISAgc2l6ZW9mICB0eXBlb2YgIGFsaWdub2YgIF9fYXR0cmlidXRlX18gIGRlZmluZWQKKworbm8gc3BhY2UgYmVmb3JlIHRoZSBwb3N0Zml4IGluY3JlbWVudCAmIGRlY3JlbWVudCB1bmFyeSBvcGVyYXRvcnM6CisKKwkrKyAgLS0KKworbm8gc3BhY2UgYWZ0ZXIgdGhlIHByZWZpeCBpbmNyZW1lbnQgJiBkZWNyZW1lbnQgdW5hcnkgb3BlcmF0b3JzOgorCisJKysgIC0tCisKK2FuZCBubyBzcGFjZSBhcm91bmQgdGhlICcuJyBhbmQgIi0+IiBzdHJ1Y3R1cmUgbWVtYmVyIG9wZXJhdG9ycy4KKworRG8gbm90IGxlYXZlIHRyYWlsaW5nIHdoaXRlc3BhY2UgYXQgdGhlIGVuZHMgb2YgbGluZXMuICBTb21lIGVkaXRvcnMgd2l0aAorInNtYXJ0IiBpbmRlbnRhdGlvbiB3aWxsIGluc2VydCB3aGl0ZXNwYWNlIGF0IHRoZSBiZWdpbm5pbmcgb2YgbmV3IGxpbmVzIGFzCithcHByb3ByaWF0ZSwgc28geW91IGNhbiBzdGFydCB0eXBpbmcgdGhlIG5leHQgbGluZSBvZiBjb2RlIHJpZ2h0IGF3YXkuCitIb3dldmVyLCBzb21lIHN1Y2ggZWRpdG9ycyBkbyBub3QgcmVtb3ZlIHRoZSB3aGl0ZXNwYWNlIGlmIHlvdSBlbmQgdXAgbm90CitwdXR0aW5nIGEgbGluZSBvZiBjb2RlIHRoZXJlLCBzdWNoIGFzIGlmIHlvdSBsZWF2ZSBhIGJsYW5rIGxpbmUuICBBcyBhIHJlc3VsdCwKK3lvdSBlbmQgdXAgd2l0aCBsaW5lcyBjb250YWluaW5nIHRyYWlsaW5nIHdoaXRlc3BhY2UuCisKK0dpdCB3aWxsIHdhcm4geW91IGFib3V0IHBhdGNoZXMgdGhhdCBpbnRyb2R1Y2UgdHJhaWxpbmcgd2hpdGVzcGFjZSwgYW5kIGNhbgorb3B0aW9uYWxseSBzdHJpcCB0aGUgdHJhaWxpbmcgd2hpdGVzcGFjZSBmb3IgeW91OyBob3dldmVyLCBpZiBhcHBseWluZyBhIHNlcmllcworb2YgcGF0Y2hlcywgdGhpcyBtYXkgbWFrZSBsYXRlciBwYXRjaGVzIGluIHRoZSBzZXJpZXMgZmFpbCBieSBjaGFuZ2luZyB0aGVpcgorY29udGV4dCBsaW5lcy4KKworCisJCUNoYXB0ZXIgNDogTmFtaW5nCisKK0MgaXMgYSBTcGFydGFuIGxhbmd1YWdlLCBhbmQgc28gc2hvdWxkIHlvdXIgbmFtaW5nIGJlLiAgVW5saWtlIE1vZHVsYS0yCithbmQgUGFzY2FsIHByb2dyYW1tZXJzLCBDIHByb2dyYW1tZXJzIGRvIG5vdCB1c2UgY3V0ZSBuYW1lcyBsaWtlCitUaGlzVmFyaWFibGVJc0FUZW1wb3JhcnlDb3VudGVyLiAgQSBDIHByb2dyYW1tZXIgd291bGQgY2FsbCB0aGF0Cit2YXJpYWJsZSAidG1wIiwgd2hpY2ggaXMgbXVjaCBlYXNpZXIgdG8gd3JpdGUsIGFuZCBub3QgdGhlIGxlYXN0IG1vcmUKK2RpZmZpY3VsdCB0byB1bmRlcnN0YW5kLgorCitIT1dFVkVSLCB3aGlsZSBtaXhlZC1jYXNlIG5hbWVzIGFyZSBmcm93bmVkIHVwb24sIGRlc2NyaXB0aXZlIG5hbWVzIGZvcgorZ2xvYmFsIHZhcmlhYmxlcyBhcmUgYSBtdXN0LiAgVG8gY2FsbCBhIGdsb2JhbCBmdW5jdGlvbiAiZm9vIiBpcyBhCitzaG9vdGluZyBvZmZlbnNlLgorCitHTE9CQUwgdmFyaWFibGVzICh0byBiZSB1c2VkIG9ubHkgaWYgeW91IF9yZWFsbHlfIG5lZWQgdGhlbSkgbmVlZCB0bworaGF2ZSBkZXNjcmlwdGl2ZSBuYW1lcywgYXMgZG8gZ2xvYmFsIGZ1bmN0aW9ucy4gIElmIHlvdSBoYXZlIGEgZnVuY3Rpb24KK3RoYXQgY291bnRzIHRoZSBudW1iZXIgb2YgYWN0aXZlIHVzZXJzLCB5b3Ugc2hvdWxkIGNhbGwgdGhhdAorImNvdW50X2FjdGl2ZV91c2VycygpIiBvciBzaW1pbGFyLCB5b3Ugc2hvdWxkIF9ub3RfIGNhbGwgaXQgImNudHVzcigpIi4KKworRW5jb2RpbmcgdGhlIHR5cGUgb2YgYSBmdW5jdGlvbiBpbnRvIHRoZSBuYW1lIChzby1jYWxsZWQgSHVuZ2FyaWFuCitub3RhdGlvbikgaXMgYnJhaW4gZGFtYWdlZCAtIHRoZSBjb21waWxlciBrbm93cyB0aGUgdHlwZXMgYW55d2F5IGFuZCBjYW4KK2NoZWNrIHRob3NlLCBhbmQgaXQgb25seSBjb25mdXNlcyB0aGUgcHJvZ3JhbW1lci4gIE5vIHdvbmRlciBNaWNyb1NvZnQKK21ha2VzIGJ1Z2d5IHByb2dyYW1zLgorCitMT0NBTCB2YXJpYWJsZSBuYW1lcyBzaG91bGQgYmUgc2hvcnQsIGFuZCB0byB0aGUgcG9pbnQuICBJZiB5b3UgaGF2ZQorc29tZSByYW5kb20gaW50ZWdlciBsb29wIGNvdW50ZXIsIGl0IHNob3VsZCBwcm9iYWJseSBiZSBjYWxsZWQgImkiLgorQ2FsbGluZyBpdCAibG9vcF9jb3VudGVyIiBpcyBub24tcHJvZHVjdGl2ZSwgaWYgdGhlcmUgaXMgbm8gY2hhbmNlIG9mIGl0CitiZWluZyBtaXMtdW5kZXJzdG9vZC4gIFNpbWlsYXJseSwgInRtcCIgY2FuIGJlIGp1c3QgYWJvdXQgYW55IHR5cGUgb2YKK3ZhcmlhYmxlIHRoYXQgaXMgdXNlZCB0byBob2xkIGEgdGVtcG9yYXJ5IHZhbHVlLgorCitJZiB5b3UgYXJlIGFmcmFpZCB0byBtaXggdXAgeW91ciBsb2NhbCB2YXJpYWJsZSBuYW1lcywgeW91IGhhdmUgYW5vdGhlcgorcHJvYmxlbSwgd2hpY2ggaXMgY2FsbGVkIHRoZSBmdW5jdGlvbi1ncm93dGgtaG9ybW9uZS1pbWJhbGFuY2Ugc3luZHJvbWUuCitTZWUgY2hhcHRlciA2IChGdW5jdGlvbnMpLgorCisKKwkJQ2hhcHRlciA1OiBUeXBlZGVmcworCitQbGVhc2UgZG9uJ3QgdXNlIHRoaW5ncyBsaWtlICJ2cHNfdCIuCitJdCdzIGEgX21pc3Rha2VfIHRvIHVzZSB0eXBlZGVmIGZvciBzdHJ1Y3R1cmVzIGFuZCBwb2ludGVycy4gV2hlbiB5b3Ugc2VlIGEKKworCXZwc190IGE7CisKK2luIHRoZSBzb3VyY2UsIHdoYXQgZG9lcyBpdCBtZWFuPworSW4gY29udHJhc3QsIGlmIGl0IHNheXMKKworCXN0cnVjdCB2aXJ0dWFsX2NvbnRhaW5lciAqYTsKKworeW91IGNhbiBhY3R1YWxseSB0ZWxsIHdoYXQgImEiIGlzLgorCitMb3RzIG9mIHBlb3BsZSB0aGluayB0aGF0IHR5cGVkZWZzICJoZWxwIHJlYWRhYmlsaXR5Ii4gTm90IHNvLiBUaGV5IGFyZQordXNlZnVsIG9ubHkgZm9yOgorCisgKGEpIHRvdGFsbHkgb3BhcXVlIG9iamVjdHMgKHdoZXJlIHRoZSB0eXBlZGVmIGlzIGFjdGl2ZWx5IHVzZWQgdG8gX2hpZGVfCisgICAgIHdoYXQgdGhlIG9iamVjdCBpcykuCisKKyAgICAgRXhhbXBsZTogInB0ZV90IiBldGMuIG9wYXF1ZSBvYmplY3RzIHRoYXQgeW91IGNhbiBvbmx5IGFjY2VzcyB1c2luZworICAgICB0aGUgcHJvcGVyIGFjY2Vzc29yIGZ1bmN0aW9ucy4KKworICAgICBOT1RFISBPcGFxdWVuZXNzIGFuZCAiYWNjZXNzb3IgZnVuY3Rpb25zIiBhcmUgbm90IGdvb2QgaW4gdGhlbXNlbHZlcy4KKyAgICAgVGhlIHJlYXNvbiB3ZSBoYXZlIHRoZW0gZm9yIHRoaW5ncyBsaWtlIHB0ZV90IGV0Yy4gaXMgdGhhdCB0aGVyZQorICAgICByZWFsbHkgaXMgYWJzb2x1dGVseSBfemVyb18gcG9ydGFibHkgYWNjZXNzaWJsZSBpbmZvcm1hdGlvbiB0aGVyZS4KKworIChiKSBDbGVhciBpbnRlZ2VyIHR5cGVzLCB3aGVyZSB0aGUgYWJzdHJhY3Rpb24gX2hlbHBzXyBhdm9pZCBjb25mdXNpb24KKyAgICAgd2hldGhlciBpdCBpcyAiaW50IiBvciAibG9uZyIuCisKKyAgICAgdTgvdTE2L3UzMiBhcmUgcGVyZmVjdGx5IGZpbmUgdHlwZWRlZnMsIGFsdGhvdWdoIHRoZXkgZml0IGludG8KKyAgICAgY2F0ZWdvcnkgKGQpIGJldHRlciB0aGFuIGhlcmUuCisKKyAgICAgTk9URSEgQWdhaW4gLSB0aGVyZSBuZWVkcyB0byBiZSBhIF9yZWFzb25fIGZvciB0aGlzLiBJZiBzb21ldGhpbmcgaXMKKyAgICAgInVuc2lnbmVkIGxvbmciLCB0aGVuIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIGRvCisKKwl0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbXlmbGFnc190OworCisgICAgIGJ1dCBpZiB0aGVyZSBpcyBhIGNsZWFyIHJlYXNvbiBmb3Igd2h5IGl0IHVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcworICAgICBtaWdodCBiZSBhbiAidW5zaWduZWQgaW50IiBhbmQgdW5kZXIgb3RoZXIgY29uZmlndXJhdGlvbnMgbWlnaHQgYmUKKyAgICAgInVuc2lnbmVkIGxvbmciLCB0aGVuIGJ5IGFsbCBtZWFucyBnbyBhaGVhZCBhbmQgdXNlIGEgdHlwZWRlZi4KKworIChjKSB3aGVuIHlvdSB1c2Ugc3BhcnNlIHRvIGxpdGVyYWxseSBjcmVhdGUgYSBfbmV3XyB0eXBlIGZvcgorICAgICB0eXBlLWNoZWNraW5nLgorCisgKGQpIE5ldyB0eXBlcyB3aGljaCBhcmUgaWRlbnRpY2FsIHRvIHN0YW5kYXJkIEM5OSB0eXBlcywgaW4gY2VydGFpbgorICAgICBleGNlcHRpb25hbCBjaXJjdW1zdGFuY2VzLgorCisgICAgIEFsdGhvdWdoIGl0IHdvdWxkIG9ubHkgdGFrZSBhIHNob3J0IGFtb3VudCBvZiB0aW1lIGZvciB0aGUgZXllcyBhbmQKKyAgICAgYnJhaW4gdG8gYmVjb21lIGFjY3VzdG9tZWQgdG8gdGhlIHN0YW5kYXJkIHR5cGVzIGxpa2UgJ3VpbnQzMl90JywKKyAgICAgc29tZSBwZW9wbGUgb2JqZWN0IHRvIHRoZWlyIHVzZSBhbnl3YXkuCisKKyAgICAgVGhlcmVmb3JlLCB0aGUgTGludXgtc3BlY2lmaWMgJ3U4L3UxNi91MzIvdTY0JyB0eXBlcyBhbmQgdGhlaXIKKyAgICAgc2lnbmVkIGVxdWl2YWxlbnRzIHdoaWNoIGFyZSBpZGVudGljYWwgdG8gc3RhbmRhcmQgdHlwZXMgYXJlCisgICAgIHBlcm1pdHRlZCAtLSBhbHRob3VnaCB0aGV5IGFyZSBub3QgbWFuZGF0b3J5IGluIG5ldyBjb2RlIG9mIHlvdXIKKyAgICAgb3duLgorCisgICAgIFdoZW4gZWRpdGluZyBleGlzdGluZyBjb2RlIHdoaWNoIGFscmVhZHkgdXNlcyBvbmUgb3IgdGhlIG90aGVyIHNldAorICAgICBvZiB0eXBlcywgeW91IHNob3VsZCBjb25mb3JtIHRvIHRoZSBleGlzdGluZyBjaG9pY2VzIGluIHRoYXQgY29kZS4KKworIChlKSBUeXBlcyBzYWZlIGZvciB1c2UgaW4gdXNlcnNwYWNlLgorCisgICAgIEluIGNlcnRhaW4gc3RydWN0dXJlcyB3aGljaCBhcmUgdmlzaWJsZSB0byB1c2Vyc3BhY2UsIHdlIGNhbm5vdAorICAgICByZXF1aXJlIEM5OSB0eXBlcyBhbmQgY2Fubm90IHVzZSB0aGUgJ3UzMicgZm9ybSBhYm92ZS4gVGh1cywgd2UKKyAgICAgdXNlIF9fdTMyIGFuZCBzaW1pbGFyIHR5cGVzIGluIGFsbCBzdHJ1Y3R1cmVzIHdoaWNoIGFyZSBzaGFyZWQKKyAgICAgd2l0aCB1c2Vyc3BhY2UuCisKK01heWJlIHRoZXJlIGFyZSBvdGhlciBjYXNlcyB0b28sIGJ1dCB0aGUgcnVsZSBzaG91bGQgYmFzaWNhbGx5IGJlIHRvIE5FVkVSCitFVkVSIHVzZSBhIHR5cGVkZWYgdW5sZXNzIHlvdSBjYW4gY2xlYXJseSBtYXRjaCBvbmUgb2YgdGhvc2UgcnVsZXMuCisKK0luIGdlbmVyYWwsIGEgcG9pbnRlciwgb3IgYSBzdHJ1Y3QgdGhhdCBoYXMgZWxlbWVudHMgdGhhdCBjYW4gcmVhc29uYWJseQorYmUgZGlyZWN0bHkgYWNjZXNzZWQgc2hvdWxkIF9uZXZlcl8gYmUgYSB0eXBlZGVmLgorCisKKwkJQ2hhcHRlciA2OiBGdW5jdGlvbnMKKworRnVuY3Rpb25zIHNob3VsZCBiZSBzaG9ydCBhbmQgc3dlZXQsIGFuZCBkbyBqdXN0IG9uZSB0aGluZy4gIFRoZXkgc2hvdWxkCitmaXQgb24gb25lIG9yIHR3byBzY3JlZW5mdWxzIG9mIHRleHQgKHRoZSBJU08vQU5TSSBzY3JlZW4gc2l6ZSBpcyA4MHgyNCwKK2FzIHdlIGFsbCBrbm93KSwgYW5kIGRvIG9uZSB0aGluZyBhbmQgZG8gdGhhdCB3ZWxsLgorCitUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBmdW5jdGlvbiBpcyBpbnZlcnNlbHkgcHJvcG9ydGlvbmFsIHRvIHRoZQorY29tcGxleGl0eSBhbmQgaW5kZW50YXRpb24gbGV2ZWwgb2YgdGhhdCBmdW5jdGlvbi4gIFNvLCBpZiB5b3UgaGF2ZSBhCitjb25jZXB0dWFsbHkgc2ltcGxlIGZ1bmN0aW9uIHRoYXQgaXMganVzdCBvbmUgbG9uZyAoYnV0IHNpbXBsZSkKK2Nhc2Utc3RhdGVtZW50LCB3aGVyZSB5b3UgaGF2ZSB0byBkbyBsb3RzIG9mIHNtYWxsIHRoaW5ncyBmb3IgYSBsb3Qgb2YKK2RpZmZlcmVudCBjYXNlcywgaXQncyBPSyB0byBoYXZlIGEgbG9uZ2VyIGZ1bmN0aW9uLgorCitIb3dldmVyLCBpZiB5b3UgaGF2ZSBhIGNvbXBsZXggZnVuY3Rpb24sIGFuZCB5b3Ugc3VzcGVjdCB0aGF0IGEKK2xlc3MtdGhhbi1naWZ0ZWQgZmlyc3QteWVhciBoaWdoLXNjaG9vbCBzdHVkZW50IG1pZ2h0IG5vdCBldmVuCit1bmRlcnN0YW5kIHdoYXQgdGhlIGZ1bmN0aW9uIGlzIGFsbCBhYm91dCwgeW91IHNob3VsZCBhZGhlcmUgdG8gdGhlCittYXhpbXVtIGxpbWl0cyBhbGwgdGhlIG1vcmUgY2xvc2VseS4gIFVzZSBoZWxwZXIgZnVuY3Rpb25zIHdpdGgKK2Rlc2NyaXB0aXZlIG5hbWVzICh5b3UgY2FuIGFzayB0aGUgY29tcGlsZXIgdG8gaW4tbGluZSB0aGVtIGlmIHlvdSB0aGluaworaXQncyBwZXJmb3JtYW5jZS1jcml0aWNhbCwgYW5kIGl0IHdpbGwgcHJvYmFibHkgZG8gYSBiZXR0ZXIgam9iIG9mIGl0Cit0aGFuIHlvdSB3b3VsZCBoYXZlIGRvbmUpLgorCitBbm90aGVyIG1lYXN1cmUgb2YgdGhlIGZ1bmN0aW9uIGlzIHRoZSBudW1iZXIgb2YgbG9jYWwgdmFyaWFibGVzLiAgVGhleQorc2hvdWxkbid0IGV4Y2VlZCA1LTEwLCBvciB5b3UncmUgZG9pbmcgc29tZXRoaW5nIHdyb25nLiAgUmUtdGhpbmsgdGhlCitmdW5jdGlvbiwgYW5kIHNwbGl0IGl0IGludG8gc21hbGxlciBwaWVjZXMuICBBIGh1bWFuIGJyYWluIGNhbgorZ2VuZXJhbGx5IGVhc2lseSBrZWVwIHRyYWNrIG9mIGFib3V0IDcgZGlmZmVyZW50IHRoaW5ncywgYW55dGhpbmcgbW9yZQorYW5kIGl0IGdldHMgY29uZnVzZWQuICBZb3Uga25vdyB5b3UncmUgYnJpbGxpYW50LCBidXQgbWF5YmUgeW91J2QgbGlrZQordG8gdW5kZXJzdGFuZCB3aGF0IHlvdSBkaWQgMiB3ZWVrcyBmcm9tIG5vdy4KKworSW4gc291cmNlIGZpbGVzLCBzZXBhcmF0ZSBmdW5jdGlvbnMgd2l0aCBvbmUgYmxhbmsgbGluZS4gIElmIHRoZSBmdW5jdGlvbiBpcworZXhwb3J0ZWQsIHRoZSBFWFBPUlQqIG1hY3JvIGZvciBpdCBzaG91bGQgZm9sbG93IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjbG9zaW5nCitmdW5jdGlvbiBicmFjZSBsaW5lLiAgRS5nLjoKKworCWludCBzeXN0ZW1faXNfdXAodm9pZCkKKwl7CisJCXJldHVybiBzeXN0ZW1fc3RhdGUgPT0gU1lTVEVNX1JVTk5JTkc7CisJfQorCUVYUE9SVF9TWU1CT0woc3lzdGVtX2lzX3VwKTsKKworSW4gZnVuY3Rpb24gcHJvdG90eXBlcywgaW5jbHVkZSBwYXJhbWV0ZXIgbmFtZXMgd2l0aCB0aGVpciBkYXRhIHR5cGVzLgorQWx0aG91Z2ggdGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgdGhlIEMgbGFuZ3VhZ2UsIGl0IGlzIHByZWZlcnJlZCBpbiBMaW51eAorYmVjYXVzZSBpdCBpcyBhIHNpbXBsZSB3YXkgdG8gYWRkIHZhbHVhYmxlIGluZm9ybWF0aW9uIGZvciB0aGUgcmVhZGVyLgorCisKKwkJQ2hhcHRlciA3OiBDZW50cmFsaXplZCBleGl0aW5nIG9mIGZ1bmN0aW9ucworCitBbGJlaXQgZGVwcmVjYXRlZCBieSBzb21lIHBlb3BsZSwgdGhlIGVxdWl2YWxlbnQgb2YgdGhlIGdvdG8gc3RhdGVtZW50IGlzCit1c2VkIGZyZXF1ZW50bHkgYnkgY29tcGlsZXJzIGluIGZvcm0gb2YgdGhlIHVuY29uZGl0aW9uYWwganVtcCBpbnN0cnVjdGlvbi4KKworVGhlIGdvdG8gc3RhdGVtZW50IGNvbWVzIGluIGhhbmR5IHdoZW4gYSBmdW5jdGlvbiBleGl0cyBmcm9tIG11bHRpcGxlCitsb2NhdGlvbnMgYW5kIHNvbWUgY29tbW9uIHdvcmsgc3VjaCBhcyBjbGVhbnVwIGhhcyB0byBiZSBkb25lLiAgSWYgdGhlcmUgaXMgbm8KK2NsZWFudXAgbmVlZGVkIHRoZW4ganVzdCByZXR1cm4gZGlyZWN0bHkuCisKK0Nob29zZSBsYWJlbCBuYW1lcyB3aGljaCBzYXkgd2hhdCB0aGUgZ290byBkb2VzIG9yIHdoeSB0aGUgZ290byBleGlzdHMuICBBbgorZXhhbXBsZSBvZiBhIGdvb2QgbmFtZSBjb3VsZCBiZSAib3V0X2J1ZmZlcjoiIGlmIHRoZSBnb3RvIGZyZWVzICJidWZmZXIiLiAgQXZvaWQKK3VzaW5nIEdXLUJBU0lDIG5hbWVzIGxpa2UgImVycjE6IiBhbmQgImVycjI6Ii4gIEFsc28gZG9uJ3QgbmFtZSB0aGVtIGFmdGVyIHRoZQorZ290byBsb2NhdGlvbiBsaWtlICJlcnJfa21hbGxvY19mYWlsZWQ6IgorCitUaGUgcmF0aW9uYWxlIGZvciB1c2luZyBnb3RvcyBpczoKKworLSB1bmNvbmRpdGlvbmFsIHN0YXRlbWVudHMgYXJlIGVhc2llciB0byB1bmRlcnN0YW5kIGFuZCBmb2xsb3cKKy0gbmVzdGluZyBpcyByZWR1Y2VkCistIGVycm9ycyBieSBub3QgdXBkYXRpbmcgaW5kaXZpZHVhbCBleGl0IHBvaW50cyB3aGVuIG1ha2luZworICAgIG1vZGlmaWNhdGlvbnMgYXJlIHByZXZlbnRlZAorLSBzYXZlcyB0aGUgY29tcGlsZXIgd29yayB0byBvcHRpbWl6ZSByZWR1bmRhbnQgY29kZSBhd2F5IDspCisKKwlpbnQgZnVuKGludCBhKQorCXsKKwkJaW50IHJlc3VsdCA9IDA7CisJCWNoYXIgKmJ1ZmZlcjsKKworCQlidWZmZXIgPSBrbWFsbG9jKFNJWkUsIEdGUF9LRVJORUwpOworCQlpZiAoIWJ1ZmZlcikKKwkJCXJldHVybiAtRU5PTUVNOworCisJCWlmIChjb25kaXRpb24xKSB7CisJCQl3aGlsZSAobG9vcDEpIHsKKwkJCQkuLi4KKwkJCX0KKwkJCXJlc3VsdCA9IDE7CisJCQlnb3RvIG91dF9idWZmZXI7CisJCX0KKwkJLi4uCisJb3V0X2J1ZmZlcjoKKwkJa2ZyZWUoYnVmZmVyKTsKKwkJcmV0dXJuIHJlc3VsdDsKKwl9CisKK0EgY29tbW9uIHR5cGUgb2YgYnVnIHRvIGJlIGF3YXJlIG9mIGl0ICJvbmUgZXJyIGJ1Z3MiIHdoaWNoIGxvb2sgbGlrZSB0aGlzOgorCisJZXJyOgorCQlrZnJlZShmb28tPmJhcik7CisJCWtmcmVlKGZvbyk7CisJCXJldHVybiByZXQ7CisKK1RoZSBidWcgaW4gdGhpcyBjb2RlIGlzIHRoYXQgb24gc29tZSBleGl0IHBhdGhzICJmb28iIGlzIE5VTEwuICBOb3JtYWxseSB0aGUKK2ZpeCBmb3IgdGhpcyBpcyB0byBzcGxpdCBpdCB1cCBpbnRvIHR3byBlcnJvciBsYWJlbHMgImVycl9iYXI6IiBhbmQgImVycl9mb286Ii4KKworCisJCUNoYXB0ZXIgODogQ29tbWVudGluZworCitDb21tZW50cyBhcmUgZ29vZCwgYnV0IHRoZXJlIGlzIGFsc28gYSBkYW5nZXIgb2Ygb3Zlci1jb21tZW50aW5nLiAgTkVWRVIKK3RyeSB0byBleHBsYWluIEhPVyB5b3VyIGNvZGUgd29ya3MgaW4gYSBjb21tZW50OiBpdCdzIG11Y2ggYmV0dGVyIHRvCit3cml0ZSB0aGUgY29kZSBzbyB0aGF0IHRoZSBfd29ya2luZ18gaXMgb2J2aW91cywgYW5kIGl0J3MgYSB3YXN0ZSBvZgordGltZSB0byBleHBsYWluIGJhZGx5IHdyaXR0ZW4gY29kZS4KKworR2VuZXJhbGx5LCB5b3Ugd2FudCB5b3VyIGNvbW1lbnRzIHRvIHRlbGwgV0hBVCB5b3VyIGNvZGUgZG9lcywgbm90IEhPVy4KK0Fsc28sIHRyeSB0byBhdm9pZCBwdXR0aW5nIGNvbW1lbnRzIGluc2lkZSBhIGZ1bmN0aW9uIGJvZHk6IGlmIHRoZQorZnVuY3Rpb24gaXMgc28gY29tcGxleCB0aGF0IHlvdSBuZWVkIHRvIHNlcGFyYXRlbHkgY29tbWVudCBwYXJ0cyBvZiBpdCwKK3lvdSBzaG91bGQgcHJvYmFibHkgZ28gYmFjayB0byBjaGFwdGVyIDYgZm9yIGEgd2hpbGUuICBZb3UgY2FuIG1ha2UKK3NtYWxsIGNvbW1lbnRzIHRvIG5vdGUgb3Igd2FybiBhYm91dCBzb21ldGhpbmcgcGFydGljdWxhcmx5IGNsZXZlciAob3IKK3VnbHkpLCBidXQgdHJ5IHRvIGF2b2lkIGV4Y2Vzcy4gIEluc3RlYWQsIHB1dCB0aGUgY29tbWVudHMgYXQgdGhlIGhlYWQKK29mIHRoZSBmdW5jdGlvbiwgdGVsbGluZyBwZW9wbGUgd2hhdCBpdCBkb2VzLCBhbmQgcG9zc2libHkgV0hZIGl0IGRvZXMKK2l0LgorCitXaGVuIGNvbW1lbnRpbmcgdGhlIGtlcm5lbCBBUEkgZnVuY3Rpb25zLCBwbGVhc2UgdXNlIHRoZSBrZXJuZWwtZG9jIGZvcm1hdC4KK1NlZSB0aGUgZmlsZXMgRG9jdW1lbnRhdGlvbi9rZXJuZWwtZG9jLW5hbm8tSE9XVE8udHh0IGFuZCBzY3JpcHRzL2tlcm5lbC1kb2MKK2ZvciBkZXRhaWxzLgorCitMaW51eCBzdHlsZSBmb3IgY29tbWVudHMgaXMgdGhlIEM4OSAiLyogLi4uICovIiBzdHlsZS4KK0Rvbid0IHVzZSBDOTktc3R5bGUgIi8vIC4uLiIgY29tbWVudHMuCisKK1RoZSBwcmVmZXJyZWQgc3R5bGUgZm9yIGxvbmcgKG11bHRpLWxpbmUpIGNvbW1lbnRzIGlzOgorCisJLyoKKwkgKiBUaGlzIGlzIHRoZSBwcmVmZXJyZWQgc3R5bGUgZm9yIG11bHRpLWxpbmUKKwkgKiBjb21tZW50cyBpbiB0aGUgTGludXgga2VybmVsIHNvdXJjZSBjb2RlLgorCSAqIFBsZWFzZSB1c2UgaXQgY29uc2lzdGVudGx5LgorCSAqCisJICogRGVzY3JpcHRpb246ICBBIGNvbHVtbiBvZiBhc3Rlcmlza3Mgb24gdGhlIGxlZnQgc2lkZSwKKwkgKiB3aXRoIGJlZ2lubmluZyBhbmQgZW5kaW5nIGFsbW9zdC1ibGFuayBsaW5lcy4KKwkgKi8KKworRm9yIGZpbGVzIGluIG5ldC8gYW5kIGRyaXZlcnMvbmV0LyB0aGUgcHJlZmVycmVkIHN0eWxlIGZvciBsb25nIChtdWx0aS1saW5lKQorY29tbWVudHMgaXMgYSBsaXR0bGUgZGlmZmVyZW50LgorCisJLyogVGhlIHByZWZlcnJlZCBjb21tZW50IHN0eWxlIGZvciBmaWxlcyBpbiBuZXQvIGFuZCBkcml2ZXJzL25ldAorCSAqIGxvb2tzIGxpa2UgdGhpcy4KKwkgKgorCSAqIEl0IGlzIG5lYXJseSB0aGUgc2FtZSBhcyB0aGUgZ2VuZXJhbGx5IHByZWZlcnJlZCBjb21tZW50IHN0eWxlLAorCSAqIGJ1dCB0aGVyZSBpcyBubyBpbml0aWFsIGFsbW9zdC1ibGFuayBsaW5lLgorCSAqLworCitJdCdzIGFsc28gaW1wb3J0YW50IHRvIGNvbW1lbnQgZGF0YSwgd2hldGhlciB0aGV5IGFyZSBiYXNpYyB0eXBlcyBvciBkZXJpdmVkCit0eXBlcy4gIFRvIHRoaXMgZW5kLCB1c2UganVzdCBvbmUgZGF0YSBkZWNsYXJhdGlvbiBwZXIgbGluZSAobm8gY29tbWFzIGZvcgorbXVsdGlwbGUgZGF0YSBkZWNsYXJhdGlvbnMpLiAgVGhpcyBsZWF2ZXMgeW91IHJvb20gZm9yIGEgc21hbGwgY29tbWVudCBvbiBlYWNoCitpdGVtLCBleHBsYWluaW5nIGl0cyB1c2UuCisKKworCQlDaGFwdGVyIDk6IFlvdSd2ZSBtYWRlIGEgbWVzcyBvZiBpdAorCitUaGF0J3MgT0ssIHdlIGFsbCBkby4gIFlvdSd2ZSBwcm9iYWJseSBiZWVuIHRvbGQgYnkgeW91ciBsb25nLXRpbWUgVW5peAordXNlciBoZWxwZXIgdGhhdCAiR05VIGVtYWNzIiBhdXRvbWF0aWNhbGx5IGZvcm1hdHMgdGhlIEMgc291cmNlcyBmb3IKK3lvdSwgYW5kIHlvdSd2ZSBub3RpY2VkIHRoYXQgeWVzLCBpdCBkb2VzIGRvIHRoYXQsIGJ1dCB0aGUgZGVmYXVsdHMgaXQKK3VzZXMgYXJlIGxlc3MgdGhhbiBkZXNpcmFibGUgKGluIGZhY3QsIHRoZXkgYXJlIHdvcnNlIHRoYW4gcmFuZG9tCit0eXBpbmcgLSBhbiBpbmZpbml0ZSBudW1iZXIgb2YgbW9ua2V5cyB0eXBpbmcgaW50byBHTlUgZW1hY3Mgd291bGQgbmV2ZXIKK21ha2UgYSBnb29kIHByb2dyYW0pLgorCitTbywgeW91IGNhbiBlaXRoZXIgZ2V0IHJpZCBvZiBHTlUgZW1hY3MsIG9yIGNoYW5nZSBpdCB0byB1c2Ugc2FuZXIKK3ZhbHVlcy4gIFRvIGRvIHRoZSBsYXR0ZXIsIHlvdSBjYW4gc3RpY2sgdGhlIGZvbGxvd2luZyBpbiB5b3VyIC5lbWFjcyBmaWxlOgorCisoZGVmdW4gYy1saW5ldXAtYXJnbGlzdC10YWJzLW9ubHkgKGlnbm9yZWQpCisgICJMaW5lIHVwIGFyZ3VtZW50IGxpc3RzIGJ5IHRhYnMsIG5vdCBzcGFjZXMiCisgIChsZXQqICgoYW5jaG9yIChjLWxhbmdlbGVtLXBvcyBjLXN5bnRhY3RpYy1lbGVtZW50KSkKKyAgICAgICAgIChjb2x1bW4gKGMtbGFuZ2VsZW0tMm5kLXBvcyBjLXN5bnRhY3RpYy1lbGVtZW50KSkKKyAgICAgICAgIChvZmZzZXQgKC0gKDErIGNvbHVtbikgYW5jaG9yKSkKKyAgICAgICAgIChzdGVwcyAoZmxvb3Igb2Zmc2V0IGMtYmFzaWMtb2Zmc2V0KSkpCisgICAgKCogKG1heCBzdGVwcyAxKQorICAgICAgIGMtYmFzaWMtb2Zmc2V0KSkpCisKKyhhZGQtaG9vayAnYy1tb2RlLWNvbW1vbi1ob29rCisgICAgICAgICAgKGxhbWJkYSAoKQorICAgICAgICAgICAgOzsgQWRkIGtlcm5lbCBzdHlsZQorICAgICAgICAgICAgKGMtYWRkLXN0eWxlCisgICAgICAgICAgICAgImxpbnV4LXRhYnMtb25seSIKKyAgICAgICAgICAgICAnKCJsaW51eCIgKGMtb2Zmc2V0cy1hbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgKGFyZ2xpc3QtY29udC1ub25lbXB0eQorICAgICAgICAgICAgICAgICAgICAgICAgIGMtbGluZXVwLWdjYy1hc20tcmVnCisgICAgICAgICAgICAgICAgICAgICAgICAgYy1saW5ldXAtYXJnbGlzdC10YWJzLW9ubHkpKSkpKSkKKworKGFkZC1ob29rICdjLW1vZGUtaG9vaworICAgICAgICAgIChsYW1iZGEgKCkKKyAgICAgICAgICAgIChsZXQgKChmaWxlbmFtZSAoYnVmZmVyLWZpbGUtbmFtZSkpKQorICAgICAgICAgICAgICA7OyBFbmFibGUga2VybmVsIG1vZGUgZm9yIHRoZSBhcHByb3ByaWF0ZSBmaWxlcworICAgICAgICAgICAgICAod2hlbiAoYW5kIGZpbGVuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1tYXRjaCAoZXhwYW5kLWZpbGUtbmFtZSAifi9zcmMvbGludXgtdHJlZXMiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUpKQorICAgICAgICAgICAgICAgIChzZXRxIGluZGVudC10YWJzLW1vZGUgdCkKKyAgICAgICAgICAgICAgICAoc2V0cSBzaG93LXRyYWlsaW5nLXdoaXRlc3BhY2UgdCkKKyAgICAgICAgICAgICAgICAoYy1zZXQtc3R5bGUgImxpbnV4LXRhYnMtb25seSIpKSkpKQorCitUaGlzIHdpbGwgbWFrZSBlbWFjcyBnbyBiZXR0ZXIgd2l0aCB0aGUga2VybmVsIGNvZGluZyBzdHlsZSBmb3IgQworZmlsZXMgYmVsb3cgfi9zcmMvbGludXgtdHJlZXMuCisKK0J1dCBldmVuIGlmIHlvdSBmYWlsIGluIGdldHRpbmcgZW1hY3MgdG8gZG8gc2FuZSBmb3JtYXR0aW5nLCBub3QKK2V2ZXJ5dGhpbmcgaXMgbG9zdDogdXNlICJpbmRlbnQiLgorCitOb3csIGFnYWluLCBHTlUgaW5kZW50IGhhcyB0aGUgc2FtZSBicmFpbi1kZWFkIHNldHRpbmdzIHRoYXQgR05VIGVtYWNzCitoYXMsIHdoaWNoIGlzIHdoeSB5b3UgbmVlZCB0byBnaXZlIGl0IGEgZmV3IGNvbW1hbmQgbGluZSBvcHRpb25zLgorSG93ZXZlciwgdGhhdCdzIG5vdCB0b28gYmFkLCBiZWNhdXNlIGV2ZW4gdGhlIG1ha2VycyBvZiBHTlUgaW5kZW50CityZWNvZ25pemUgdGhlIGF1dGhvcml0eSBvZiBLJlIgKHRoZSBHTlUgcGVvcGxlIGFyZW4ndCBldmlsLCB0aGV5IGFyZQoranVzdCBzZXZlcmVseSBtaXNndWlkZWQgaW4gdGhpcyBtYXR0ZXIpLCBzbyB5b3UganVzdCBnaXZlIGluZGVudCB0aGUKK29wdGlvbnMgIi1rciAtaTgiIChzdGFuZHMgZm9yICJLJlIsIDggY2hhcmFjdGVyIGluZGVudHMiKSwgb3IgdXNlCisic2NyaXB0cy9MaW5kZW50Iiwgd2hpY2ggaW5kZW50cyBpbiB0aGUgbGF0ZXN0IHN0eWxlLgorCisiaW5kZW50IiBoYXMgYSBsb3Qgb2Ygb3B0aW9ucywgYW5kIGVzcGVjaWFsbHkgd2hlbiBpdCBjb21lcyB0byBjb21tZW50CityZS1mb3JtYXR0aW5nIHlvdSBtYXkgd2FudCB0byB0YWtlIGEgbG9vayBhdCB0aGUgbWFuIHBhZ2UuICBCdXQKK3JlbWVtYmVyOiAiaW5kZW50IiBpcyBub3QgYSBmaXggZm9yIGJhZCBwcm9ncmFtbWluZy4KKworCisJCUNoYXB0ZXIgMTA6IEtjb25maWcgY29uZmlndXJhdGlvbiBmaWxlcworCitGb3IgYWxsIG9mIHRoZSBLY29uZmlnKiBjb25maWd1cmF0aW9uIGZpbGVzIHRocm91Z2hvdXQgdGhlIHNvdXJjZSB0cmVlLAordGhlIGluZGVudGF0aW9uIGlzIHNvbWV3aGF0IGRpZmZlcmVudC4gIExpbmVzIHVuZGVyIGEgImNvbmZpZyIgZGVmaW5pdGlvbgorYXJlIGluZGVudGVkIHdpdGggb25lIHRhYiwgd2hpbGUgaGVscCB0ZXh0IGlzIGluZGVudGVkIGFuIGFkZGl0aW9uYWwgdHdvCitzcGFjZXMuICBFeGFtcGxlOgorCitjb25maWcgQVVESVQKKwlib29sICJBdWRpdGluZyBzdXBwb3J0IgorCWRlcGVuZHMgb24gTkVUCisJaGVscAorCSAgRW5hYmxlIGF1ZGl0aW5nIGluZnJhc3RydWN0dXJlIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBhbm90aGVyCisJICBrZXJuZWwgc3Vic3lzdGVtLCBzdWNoIGFzIFNFTGludXggKHdoaWNoIHJlcXVpcmVzIHRoaXMgZm9yCisJICBsb2dnaW5nIG9mIGF2YyBtZXNzYWdlcyBvdXRwdXQpLiAgRG9lcyBub3QgZG8gc3lzdGVtLWNhbGwKKwkgIGF1ZGl0aW5nIHdpdGhvdXQgQ09ORklHX0FVRElUU1lTQ0FMTC4KKworU2VyaW91c2x5IGRhbmdlcm91cyBmZWF0dXJlcyAoc3VjaCBhcyB3cml0ZSBzdXBwb3J0IGZvciBjZXJ0YWluCitmaWxlc3lzdGVtcykgc2hvdWxkIGFkdmVydGlzZSB0aGlzIHByb21pbmVudGx5IGluIHRoZWlyIHByb21wdCBzdHJpbmc6CisKK2NvbmZpZyBBREZTX0ZTX1JXCisJYm9vbCAiQURGUyB3cml0ZSBzdXBwb3J0IChEQU5HRVJPVVMpIgorCWRlcGVuZHMgb24gQURGU19GUworCS4uLgorCitGb3IgZnVsbCBkb2N1bWVudGF0aW9uIG9uIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzLCBzZWUgdGhlIGZpbGUKK0RvY3VtZW50YXRpb24va2J1aWxkL2tjb25maWctbGFuZ3VhZ2UudHh0LgorCisKKwkJQ2hhcHRlciAxMTogRGF0YSBzdHJ1Y3R1cmVzCisKK0RhdGEgc3RydWN0dXJlcyB0aGF0IGhhdmUgdmlzaWJpbGl0eSBvdXRzaWRlIHRoZSBzaW5nbGUtdGhyZWFkZWQKK2Vudmlyb25tZW50IHRoZXkgYXJlIGNyZWF0ZWQgYW5kIGRlc3Ryb3llZCBpbiBzaG91bGQgYWx3YXlzIGhhdmUKK3JlZmVyZW5jZSBjb3VudHMuICBJbiB0aGUga2VybmVsLCBnYXJiYWdlIGNvbGxlY3Rpb24gZG9lc24ndCBleGlzdCAoYW5kCitvdXRzaWRlIHRoZSBrZXJuZWwgZ2FyYmFnZSBjb2xsZWN0aW9uIGlzIHNsb3cgYW5kIGluZWZmaWNpZW50KSwgd2hpY2gKK21lYW5zIHRoYXQgeW91IGFic29sdXRlbHkgX2hhdmVfIHRvIHJlZmVyZW5jZSBjb3VudCBhbGwgeW91ciB1c2VzLgorCitSZWZlcmVuY2UgY291bnRpbmcgbWVhbnMgdGhhdCB5b3UgY2FuIGF2b2lkIGxvY2tpbmcsIGFuZCBhbGxvd3MgbXVsdGlwbGUKK3VzZXJzIHRvIGhhdmUgYWNjZXNzIHRvIHRoZSBkYXRhIHN0cnVjdHVyZSBpbiBwYXJhbGxlbCAtIGFuZCBub3QgaGF2aW5nCit0byB3b3JyeSBhYm91dCB0aGUgc3RydWN0dXJlIHN1ZGRlbmx5IGdvaW5nIGF3YXkgZnJvbSB1bmRlciB0aGVtIGp1c3QKK2JlY2F1c2UgdGhleSBzbGVwdCBvciBkaWQgc29tZXRoaW5nIGVsc2UgZm9yIGEgd2hpbGUuCisKK05vdGUgdGhhdCBsb2NraW5nIGlzIF9ub3RfIGEgcmVwbGFjZW1lbnQgZm9yIHJlZmVyZW5jZSBjb3VudGluZy4KK0xvY2tpbmcgaXMgdXNlZCB0byBrZWVwIGRhdGEgc3RydWN0dXJlcyBjb2hlcmVudCwgd2hpbGUgcmVmZXJlbmNlCitjb3VudGluZyBpcyBhIG1lbW9yeSBtYW5hZ2VtZW50IHRlY2huaXF1ZS4gIFVzdWFsbHkgYm90aCBhcmUgbmVlZGVkLCBhbmQKK3RoZXkgYXJlIG5vdCB0byBiZSBjb25mdXNlZCB3aXRoIGVhY2ggb3RoZXIuCisKK01hbnkgZGF0YSBzdHJ1Y3R1cmVzIGNhbiBpbmRlZWQgaGF2ZSB0d28gbGV2ZWxzIG9mIHJlZmVyZW5jZSBjb3VudGluZywKK3doZW4gdGhlcmUgYXJlIHVzZXJzIG9mIGRpZmZlcmVudCAiY2xhc3NlcyIuICBUaGUgc3ViY2xhc3MgY291bnQgY291bnRzCit0aGUgbnVtYmVyIG9mIHN1YmNsYXNzIHVzZXJzLCBhbmQgZGVjcmVtZW50cyB0aGUgZ2xvYmFsIGNvdW50IGp1c3Qgb25jZQord2hlbiB0aGUgc3ViY2xhc3MgY291bnQgZ29lcyB0byB6ZXJvLgorCitFeGFtcGxlcyBvZiB0aGlzIGtpbmQgb2YgIm11bHRpLWxldmVsLXJlZmVyZW5jZS1jb3VudGluZyIgY2FuIGJlIGZvdW5kIGluCittZW1vcnkgbWFuYWdlbWVudCAoInN0cnVjdCBtbV9zdHJ1Y3QiOiBtbV91c2VycyBhbmQgbW1fY291bnQpLCBhbmQgaW4KK2ZpbGVzeXN0ZW0gY29kZSAoInN0cnVjdCBzdXBlcl9ibG9jayI6IHNfY291bnQgYW5kIHNfYWN0aXZlKS4KKworUmVtZW1iZXI6IGlmIGFub3RoZXIgdGhyZWFkIGNhbiBmaW5kIHlvdXIgZGF0YSBzdHJ1Y3R1cmUsIGFuZCB5b3UgZG9uJ3QKK2hhdmUgYSByZWZlcmVuY2UgY291bnQgb24gaXQsIHlvdSBhbG1vc3QgY2VydGFpbmx5IGhhdmUgYSBidWcuCisKKworCQlDaGFwdGVyIDEyOiBNYWNyb3MsIEVudW1zIGFuZCBSVEwKKworTmFtZXMgb2YgbWFjcm9zIGRlZmluaW5nIGNvbnN0YW50cyBhbmQgbGFiZWxzIGluIGVudW1zIGFyZSBjYXBpdGFsaXplZC4KKworCSNkZWZpbmUgQ09OU1RBTlQgMHgxMjM0NQorCitFbnVtcyBhcmUgcHJlZmVycmVkIHdoZW4gZGVmaW5pbmcgc2V2ZXJhbCByZWxhdGVkIGNvbnN0YW50cy4KKworQ0FQSVRBTElaRUQgbWFjcm8gbmFtZXMgYXJlIGFwcHJlY2lhdGVkIGJ1dCBtYWNyb3MgcmVzZW1ibGluZyBmdW5jdGlvbnMKK21heSBiZSBuYW1lZCBpbiBsb3dlciBjYXNlLgorCitHZW5lcmFsbHksIGlubGluZSBmdW5jdGlvbnMgYXJlIHByZWZlcmFibGUgdG8gbWFjcm9zIHJlc2VtYmxpbmcgZnVuY3Rpb25zLgorCitNYWNyb3Mgd2l0aCBtdWx0aXBsZSBzdGF0ZW1lbnRzIHNob3VsZCBiZSBlbmNsb3NlZCBpbiBhIGRvIC0gd2hpbGUgYmxvY2s6CisKKwkjZGVmaW5lIG1hY3JvZnVuKGEsIGIsIGMpIAkJCVwKKwkJZG8gewkJCQkJXAorCQkJaWYgKGEgPT0gNSkJCQlcCisJCQkJZG9fdGhpcyhiLCBjKTsJCVwKKwkJfSB3aGlsZSAoMCkKKworVGhpbmdzIHRvIGF2b2lkIHdoZW4gdXNpbmcgbWFjcm9zOgorCisxKSBtYWNyb3MgdGhhdCBhZmZlY3QgY29udHJvbCBmbG93OgorCisJI2RlZmluZSBGT08oeCkJCQkJCVwKKwkJZG8gewkJCQkJXAorCQkJaWYgKGJsYWgoeCkgPCAwKQkJXAorCQkJCXJldHVybiAtRUJVR0dFUkVEOwlcCisJCX0gd2hpbGUoMCkKKworaXMgYSBfdmVyeV8gYmFkIGlkZWEuICBJdCBsb29rcyBsaWtlIGEgZnVuY3Rpb24gY2FsbCBidXQgZXhpdHMgdGhlICJjYWxsaW5nIgorZnVuY3Rpb247IGRvbid0IGJyZWFrIHRoZSBpbnRlcm5hbCBwYXJzZXJzIG9mIHRob3NlIHdobyB3aWxsIHJlYWQgdGhlIGNvZGUuCisKKzIpIG1hY3JvcyB0aGF0IGRlcGVuZCBvbiBoYXZpbmcgYSBsb2NhbCB2YXJpYWJsZSB3aXRoIGEgbWFnaWMgbmFtZToKKworCSNkZWZpbmUgRk9PKHZhbCkgYmFyKGluZGV4LCB2YWwpCisKK21pZ2h0IGxvb2sgbGlrZSBhIGdvb2QgdGhpbmcsIGJ1dCBpdCdzIGNvbmZ1c2luZyBhcyBoZWxsIHdoZW4gb25lIHJlYWRzIHRoZQorY29kZSBhbmQgaXQncyBwcm9uZSB0byBicmVha2FnZSBmcm9tIHNlZW1pbmdseSBpbm5vY2VudCBjaGFuZ2VzLgorCiszKSBtYWNyb3Mgd2l0aCBhcmd1bWVudHMgdGhhdCBhcmUgdXNlZCBhcyBsLXZhbHVlczogRk9PKHgpID0geTsgd2lsbAorYml0ZSB5b3UgaWYgc29tZWJvZHkgZS5nLiB0dXJucyBGT08gaW50byBhbiBpbmxpbmUgZnVuY3Rpb24uCisKKzQpIGZvcmdldHRpbmcgYWJvdXQgcHJlY2VkZW5jZTogbWFjcm9zIGRlZmluaW5nIGNvbnN0YW50cyB1c2luZyBleHByZXNzaW9ucworbXVzdCBlbmNsb3NlIHRoZSBleHByZXNzaW9uIGluIHBhcmVudGhlc2VzLiBCZXdhcmUgb2Ygc2ltaWxhciBpc3N1ZXMgd2l0aAorbWFjcm9zIHVzaW5nIHBhcmFtZXRlcnMuCisKKwkjZGVmaW5lIENPTlNUQU5UIDB4NDAwMAorCSNkZWZpbmUgQ09OU1RFWFAgKENPTlNUQU5UIHwgMykKKworNSkgbmFtZXNwYWNlIGNvbGxpc2lvbnMgd2hlbiBkZWZpbmluZyBsb2NhbCB2YXJpYWJsZXMgaW4gbWFjcm9zIHJlc2VtYmxpbmcKK2Z1bmN0aW9uczoKKworI2RlZmluZSBGT08oeCkJCQkJXAorKHsJCQkJCVwKKwl0eXBlb2YoeCkgcmV0OwkJCVwKKwlyZXQgPSBjYWxjX3JldCh4KTsJCVwKKwkocmV0KTsJCQkJXAorfSkKKworcmV0IGlzIGEgY29tbW9uIG5hbWUgZm9yIGEgbG9jYWwgdmFyaWFibGUgLSBfX2Zvb19yZXQgaXMgbGVzcyBsaWtlbHkKK3RvIGNvbGxpZGUgd2l0aCBhbiBleGlzdGluZyB2YXJpYWJsZS4KKworVGhlIGNwcCBtYW51YWwgZGVhbHMgd2l0aCBtYWNyb3MgZXhoYXVzdGl2ZWx5LiBUaGUgZ2NjIGludGVybmFscyBtYW51YWwgYWxzbworY292ZXJzIFJUTCB3aGljaCBpcyB1c2VkIGZyZXF1ZW50bHkgd2l0aCBhc3NlbWJseSBsYW5ndWFnZSBpbiB0aGUga2VybmVsLgorCisKKwkJQ2hhcHRlciAxMzogUHJpbnRpbmcga2VybmVsIG1lc3NhZ2VzCisKK0tlcm5lbCBkZXZlbG9wZXJzIGxpa2UgdG8gYmUgc2VlbiBhcyBsaXRlcmF0ZS4gRG8gbWluZCB0aGUgc3BlbGxpbmcKK29mIGtlcm5lbCBtZXNzYWdlcyB0byBtYWtlIGEgZ29vZCBpbXByZXNzaW9uLiBEbyBub3QgdXNlIGNyaXBwbGVkCit3b3JkcyBsaWtlICJkb250IjsgdXNlICJkbyBub3QiIG9yICJkb24ndCIgaW5zdGVhZC4gIE1ha2UgdGhlIG1lc3NhZ2VzCitjb25jaXNlLCBjbGVhciwgYW5kIHVuYW1iaWd1b3VzLgorCitLZXJuZWwgbWVzc2FnZXMgZG8gbm90IGhhdmUgdG8gYmUgdGVybWluYXRlZCB3aXRoIGEgcGVyaW9kLgorCitQcmludGluZyBudW1iZXJzIGluIHBhcmVudGhlc2VzICglZCkgYWRkcyBubyB2YWx1ZSBhbmQgc2hvdWxkIGJlIGF2b2lkZWQuCisKK1RoZXJlIGFyZSBhIG51bWJlciBvZiBkcml2ZXIgbW9kZWwgZGlhZ25vc3RpYyBtYWNyb3MgaW4gPGxpbnV4L2RldmljZS5oPgord2hpY2ggeW91IHNob3VsZCB1c2UgdG8gbWFrZSBzdXJlIG1lc3NhZ2VzIGFyZSBtYXRjaGVkIHRvIHRoZSByaWdodCBkZXZpY2UKK2FuZCBkcml2ZXIsIGFuZCBhcmUgdGFnZ2VkIHdpdGggdGhlIHJpZ2h0IGxldmVsOiAgZGV2X2VycigpLCBkZXZfd2FybigpLAorZGV2X2luZm8oKSwgYW5kIHNvIGZvcnRoLiAgRm9yIG1lc3NhZ2VzIHRoYXQgYXJlbid0IGFzc29jaWF0ZWQgd2l0aCBhCitwYXJ0aWN1bGFyIGRldmljZSwgPGxpbnV4L3ByaW50ay5oPiBkZWZpbmVzIHByX25vdGljZSgpLCBwcl9pbmZvKCksCitwcl93YXJuKCksIHByX2VycigpLCBldGMuCisKK0NvbWluZyB1cCB3aXRoIGdvb2QgZGVidWdnaW5nIG1lc3NhZ2VzIGNhbiBiZSBxdWl0ZSBhIGNoYWxsZW5nZTsgYW5kIG9uY2UKK3lvdSBoYXZlIHRoZW0sIHRoZXkgY2FuIGJlIGEgaHVnZSBoZWxwIGZvciByZW1vdGUgdHJvdWJsZXNob290aW5nLiAgSG93ZXZlcgorZGVidWcgbWVzc2FnZSBwcmludGluZyBpcyBoYW5kbGVkIGRpZmZlcmVudGx5IHRoYW4gcHJpbnRpbmcgb3RoZXIgbm9uLWRlYnVnCittZXNzYWdlcy4gIFdoaWxlIHRoZSBvdGhlciBwcl9YWFgoKSBmdW5jdGlvbnMgcHJpbnQgdW5jb25kaXRpb25hbGx5LAorcHJfZGVidWcoKSBkb2VzIG5vdDsgaXQgaXMgY29tcGlsZWQgb3V0IGJ5IGRlZmF1bHQsIHVubGVzcyBlaXRoZXIgREVCVUcgaXMKK2RlZmluZWQgb3IgQ09ORklHX0RZTkFNSUNfREVCVUcgaXMgc2V0LiAgVGhhdCBpcyB0cnVlIGZvciBkZXZfZGJnKCkgYWxzbywKK2FuZCBhIHJlbGF0ZWQgY29udmVudGlvbiB1c2VzIFZFUkJPU0VfREVCVUcgdG8gYWRkIGRldl92ZGJnKCkgbWVzc2FnZXMgdG8KK3RoZSBvbmVzIGFscmVhZHkgZW5hYmxlZCBieSBERUJVRy4KKworTWFueSBzdWJzeXN0ZW1zIGhhdmUgS2NvbmZpZyBkZWJ1ZyBvcHRpb25zIHRvIHR1cm4gb24gLURERUJVRyBpbiB0aGUKK2NvcnJlc3BvbmRpbmcgTWFrZWZpbGU7IGluIG90aGVyIGNhc2VzIHNwZWNpZmljIGZpbGVzICNkZWZpbmUgREVCVUcuICBBbmQKK3doZW4gYSBkZWJ1ZyBtZXNzYWdlIHNob3VsZCBiZSB1bmNvbmRpdGlvbmFsbHkgcHJpbnRlZCwgc3VjaCBhcyBpZiBpdCBpcworYWxyZWFkeSBpbnNpZGUgYSBkZWJ1Zy1yZWxhdGVkICNpZmRlZiBzZWN0aW9uLCBwcmludGsoS0VSTl9ERUJVRyAuLi4pIGNhbiBiZQordXNlZC4KKworCisJCUNoYXB0ZXIgMTQ6IEFsbG9jYXRpbmcgbWVtb3J5CisKK1RoZSBrZXJuZWwgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBnZW5lcmFsIHB1cnBvc2UgbWVtb3J5IGFsbG9jYXRvcnM6CitrbWFsbG9jKCksIGt6YWxsb2MoKSwga21hbGxvY19hcnJheSgpLCBrY2FsbG9jKCksIHZtYWxsb2MoKSwgYW5kCit2emFsbG9jKCkuICBQbGVhc2UgcmVmZXIgdG8gdGhlIEFQSSBkb2N1bWVudGF0aW9uIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uCithYm91dCB0aGVtLgorCitUaGUgcHJlZmVycmVkIGZvcm0gZm9yIHBhc3NpbmcgYSBzaXplIG9mIGEgc3RydWN0IGlzIHRoZSBmb2xsb3dpbmc6CisKKwlwID0ga21hbGxvYyhzaXplb2YoKnApLCAuLi4pOworCitUaGUgYWx0ZXJuYXRpdmUgZm9ybSB3aGVyZSBzdHJ1Y3QgbmFtZSBpcyBzcGVsbGVkIG91dCBodXJ0cyByZWFkYWJpbGl0eSBhbmQKK2ludHJvZHVjZXMgYW4gb3Bwb3J0dW5pdHkgZm9yIGEgYnVnIHdoZW4gdGhlIHBvaW50ZXIgdmFyaWFibGUgdHlwZSBpcyBjaGFuZ2VkCitidXQgdGhlIGNvcnJlc3BvbmRpbmcgc2l6ZW9mIHRoYXQgaXMgcGFzc2VkIHRvIGEgbWVtb3J5IGFsbG9jYXRvciBpcyBub3QuCisKK0Nhc3RpbmcgdGhlIHJldHVybiB2YWx1ZSB3aGljaCBpcyBhIHZvaWQgcG9pbnRlciBpcyByZWR1bmRhbnQuIFRoZSBjb252ZXJzaW9uCitmcm9tIHZvaWQgcG9pbnRlciB0byBhbnkgb3RoZXIgcG9pbnRlciB0eXBlIGlzIGd1YXJhbnRlZWQgYnkgdGhlIEMgcHJvZ3JhbW1pbmcKK2xhbmd1YWdlLgorCitUaGUgcHJlZmVycmVkIGZvcm0gZm9yIGFsbG9jYXRpbmcgYW4gYXJyYXkgaXMgdGhlIGZvbGxvd2luZzoKKworCXAgPSBrbWFsbG9jX2FycmF5KG4sIHNpemVvZiguLi4pLCAuLi4pOworCitUaGUgcHJlZmVycmVkIGZvcm0gZm9yIGFsbG9jYXRpbmcgYSB6ZXJvZWQgYXJyYXkgaXMgdGhlIGZvbGxvd2luZzoKKworCXAgPSBrY2FsbG9jKG4sIHNpemVvZiguLi4pLCAuLi4pOworCitCb3RoIGZvcm1zIGNoZWNrIGZvciBvdmVyZmxvdyBvbiB0aGUgYWxsb2NhdGlvbiBzaXplIG4gKiBzaXplb2YoLi4uKSwKK2FuZCByZXR1cm4gTlVMTCBpZiB0aGF0IG9jY3VycmVkLgorCisKKwkJQ2hhcHRlciAxNTogVGhlIGlubGluZSBkaXNlYXNlCisKK1RoZXJlIGFwcGVhcnMgdG8gYmUgYSBjb21tb24gbWlzcGVyY2VwdGlvbiB0aGF0IGdjYyBoYXMgYSBtYWdpYyAibWFrZSBtZQorZmFzdGVyIiBzcGVlZHVwIG9wdGlvbiBjYWxsZWQgImlubGluZSIuIFdoaWxlIHRoZSB1c2Ugb2YgaW5saW5lcyBjYW4gYmUKK2FwcHJvcHJpYXRlIChmb3IgZXhhbXBsZSBhcyBhIG1lYW5zIG9mIHJlcGxhY2luZyBtYWNyb3MsIHNlZSBDaGFwdGVyIDEyKSwgaXQKK3Zlcnkgb2Z0ZW4gaXMgbm90LiBBYnVuZGFudCB1c2Ugb2YgdGhlIGlubGluZSBrZXl3b3JkIGxlYWRzIHRvIGEgbXVjaCBiaWdnZXIKK2tlcm5lbCwgd2hpY2ggaW4gdHVybiBzbG93cyB0aGUgc3lzdGVtIGFzIGEgd2hvbGUgZG93biwgZHVlIHRvIGEgYmlnZ2VyCitpY2FjaGUgZm9vdHByaW50IGZvciB0aGUgQ1BVIGFuZCBzaW1wbHkgYmVjYXVzZSB0aGVyZSBpcyBsZXNzIG1lbW9yeQorYXZhaWxhYmxlIGZvciB0aGUgcGFnZWNhY2hlLiBKdXN0IHRoaW5rIGFib3V0IGl0OyBhIHBhZ2VjYWNoZSBtaXNzIGNhdXNlcyBhCitkaXNrIHNlZWssIHdoaWNoIGVhc2lseSB0YWtlcyA1IG1pbGxpc2Vjb25kcy4gVGhlcmUgYXJlIGEgTE9UIG9mIGNwdSBjeWNsZXMKK3RoYXQgY2FuIGdvIGludG8gdGhlc2UgNSBtaWxsaXNlY29uZHMuCisKK0EgcmVhc29uYWJsZSBydWxlIG9mIHRodW1iIGlzIHRvIG5vdCBwdXQgaW5saW5lIGF0IGZ1bmN0aW9ucyB0aGF0IGhhdmUgbW9yZQordGhhbiAzIGxpbmVzIG9mIGNvZGUgaW4gdGhlbS4gQW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZSBhcmUgdGhlIGNhc2VzIHdoZXJlCithIHBhcmFtZXRlciBpcyBrbm93biB0byBiZSBhIGNvbXBpbGV0aW1lIGNvbnN0YW50LCBhbmQgYXMgYSByZXN1bHQgb2YgdGhpcworY29uc3RhbnRuZXNzIHlvdSAqa25vdyogdGhlIGNvbXBpbGVyIHdpbGwgYmUgYWJsZSB0byBvcHRpbWl6ZSBtb3N0IG9mIHlvdXIKK2Z1bmN0aW9uIGF3YXkgYXQgY29tcGlsZSB0aW1lLiBGb3IgYSBnb29kIGV4YW1wbGUgb2YgdGhpcyBsYXRlciBjYXNlLCBzZWUKK3RoZSBrbWFsbG9jKCkgaW5saW5lIGZ1bmN0aW9uLgorCitPZnRlbiBwZW9wbGUgYXJndWUgdGhhdCBhZGRpbmcgaW5saW5lIHRvIGZ1bmN0aW9ucyB0aGF0IGFyZSBzdGF0aWMgYW5kIHVzZWQKK29ubHkgb25jZSBpcyBhbHdheXMgYSB3aW4gc2luY2UgdGhlcmUgaXMgbm8gc3BhY2UgdHJhZGVvZmYuIFdoaWxlIHRoaXMgaXMKK3RlY2huaWNhbGx5IGNvcnJlY3QsIGdjYyBpcyBjYXBhYmxlIG9mIGlubGluaW5nIHRoZXNlIGF1dG9tYXRpY2FsbHkgd2l0aG91dAoraGVscCwgYW5kIHRoZSBtYWludGVuYW5jZSBpc3N1ZSBvZiByZW1vdmluZyB0aGUgaW5saW5lIHdoZW4gYSBzZWNvbmQgdXNlcgorYXBwZWFycyBvdXR3ZWlnaHMgdGhlIHBvdGVudGlhbCB2YWx1ZSBvZiB0aGUgaGludCB0aGF0IHRlbGxzIGdjYyB0byBkbworc29tZXRoaW5nIGl0IHdvdWxkIGhhdmUgZG9uZSBhbnl3YXkuCisKKworCQlDaGFwdGVyIDE2OiBGdW5jdGlvbiByZXR1cm4gdmFsdWVzIGFuZCBuYW1lcworCitGdW5jdGlvbnMgY2FuIHJldHVybiB2YWx1ZXMgb2YgbWFueSBkaWZmZXJlbnQga2luZHMsIGFuZCBvbmUgb2YgdGhlCittb3N0IGNvbW1vbiBpcyBhIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgZnVuY3Rpb24gc3VjY2VlZGVkIG9yCitmYWlsZWQuICBTdWNoIGEgdmFsdWUgY2FuIGJlIHJlcHJlc2VudGVkIGFzIGFuIGVycm9yLWNvZGUgaW50ZWdlcgorKC1FeHh4ID0gZmFpbHVyZSwgMCA9IHN1Y2Nlc3MpIG9yIGEgInN1Y2NlZWRlZCIgYm9vbGVhbiAoMCA9IGZhaWx1cmUsCitub24temVybyA9IHN1Y2Nlc3MpLgorCitNaXhpbmcgdXAgdGhlc2UgdHdvIHNvcnRzIG9mIHJlcHJlc2VudGF0aW9ucyBpcyBhIGZlcnRpbGUgc291cmNlIG9mCitkaWZmaWN1bHQtdG8tZmluZCBidWdzLiAgSWYgdGhlIEMgbGFuZ3VhZ2UgaW5jbHVkZWQgYSBzdHJvbmcgZGlzdGluY3Rpb24KK2JldHdlZW4gaW50ZWdlcnMgYW5kIGJvb2xlYW5zIHRoZW4gdGhlIGNvbXBpbGVyIHdvdWxkIGZpbmQgdGhlc2UgbWlzdGFrZXMKK2ZvciB1cy4uLiBidXQgaXQgZG9lc24ndC4gIFRvIGhlbHAgcHJldmVudCBzdWNoIGJ1Z3MsIGFsd2F5cyBmb2xsb3cgdGhpcworY29udmVudGlvbjoKKworCUlmIHRoZSBuYW1lIG9mIGEgZnVuY3Rpb24gaXMgYW4gYWN0aW9uIG9yIGFuIGltcGVyYXRpdmUgY29tbWFuZCwKKwl0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBhbiBlcnJvci1jb2RlIGludGVnZXIuICBJZiB0aGUgbmFtZQorCWlzIGEgcHJlZGljYXRlLCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBhICJzdWNjZWVkZWQiIGJvb2xlYW4uCisKK0ZvciBleGFtcGxlLCAiYWRkIHdvcmsiIGlzIGEgY29tbWFuZCwgYW5kIHRoZSBhZGRfd29yaygpIGZ1bmN0aW9uIHJldHVybnMgMAorZm9yIHN1Y2Nlc3Mgb3IgLUVCVVNZIGZvciBmYWlsdXJlLiAgSW4gdGhlIHNhbWUgd2F5LCAiUENJIGRldmljZSBwcmVzZW50IiBpcworYSBwcmVkaWNhdGUsIGFuZCB0aGUgcGNpX2Rldl9wcmVzZW50KCkgZnVuY3Rpb24gcmV0dXJucyAxIGlmIGl0IHN1Y2NlZWRzIGluCitmaW5kaW5nIGEgbWF0Y2hpbmcgZGV2aWNlIG9yIDAgaWYgaXQgZG9lc24ndC4KKworQWxsIEVYUE9SVGVkIGZ1bmN0aW9ucyBtdXN0IHJlc3BlY3QgdGhpcyBjb252ZW50aW9uLCBhbmQgc28gc2hvdWxkIGFsbAorcHVibGljIGZ1bmN0aW9ucy4gIFByaXZhdGUgKHN0YXRpYykgZnVuY3Rpb25zIG5lZWQgbm90LCBidXQgaXQgaXMKK3JlY29tbWVuZGVkIHRoYXQgdGhleSBkby4KKworRnVuY3Rpb25zIHdob3NlIHJldHVybiB2YWx1ZSBpcyB0aGUgYWN0dWFsIHJlc3VsdCBvZiBhIGNvbXB1dGF0aW9uLCByYXRoZXIKK3RoYW4gYW4gaW5kaWNhdGlvbiBvZiB3aGV0aGVyIHRoZSBjb21wdXRhdGlvbiBzdWNjZWVkZWQsIGFyZSBub3Qgc3ViamVjdCB0bwordGhpcyBydWxlLiAgR2VuZXJhbGx5IHRoZXkgaW5kaWNhdGUgZmFpbHVyZSBieSByZXR1cm5pbmcgc29tZSBvdXQtb2YtcmFuZ2UKK3Jlc3VsdC4gIFR5cGljYWwgZXhhbXBsZXMgd291bGQgYmUgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIHBvaW50ZXJzOyB0aGV5IHVzZQorTlVMTCBvciB0aGUgRVJSX1BUUiBtZWNoYW5pc20gdG8gcmVwb3J0IGZhaWx1cmUuCisKKworCQlDaGFwdGVyIDE3OiAgRG9uJ3QgcmUtaW52ZW50IHRoZSBrZXJuZWwgbWFjcm9zCisKK1RoZSBoZWFkZXIgZmlsZSBpbmNsdWRlL2xpbnV4L2tlcm5lbC5oIGNvbnRhaW5zIGEgbnVtYmVyIG9mIG1hY3JvcyB0aGF0Cit5b3Ugc2hvdWxkIHVzZSwgcmF0aGVyIHRoYW4gZXhwbGljaXRseSBjb2Rpbmcgc29tZSB2YXJpYW50IG9mIHRoZW0geW91cnNlbGYuCitGb3IgZXhhbXBsZSwgaWYgeW91IG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBsZW5ndGggb2YgYW4gYXJyYXksIHRha2UgYWR2YW50YWdlCitvZiB0aGUgbWFjcm8KKworCSNkZWZpbmUgQVJSQVlfU0laRSh4KSAoc2l6ZW9mKHgpIC8gc2l6ZW9mKCh4KVswXSkpCisKK1NpbWlsYXJseSwgaWYgeW91IG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBzaXplIG9mIHNvbWUgc3RydWN0dXJlIG1lbWJlciwgdXNlCisKKwkjZGVmaW5lIEZJRUxEX1NJWkVPRih0LCBmKSAoc2l6ZW9mKCgodCopMCktPmYpKQorCitUaGVyZSBhcmUgYWxzbyBtaW4oKSBhbmQgbWF4KCkgbWFjcm9zIHRoYXQgZG8gc3RyaWN0IHR5cGUgY2hlY2tpbmcgaWYgeW91CituZWVkIHRoZW0uICBGZWVsIGZyZWUgdG8gcGVydXNlIHRoYXQgaGVhZGVyIGZpbGUgdG8gc2VlIHdoYXQgZWxzZSBpcyBhbHJlYWR5CitkZWZpbmVkIHRoYXQgeW91IHNob3VsZG4ndCByZXByb2R1Y2UgaW4geW91ciBjb2RlLgorCisKKwkJQ2hhcHRlciAxODogIEVkaXRvciBtb2RlbGluZXMgYW5kIG90aGVyIGNydWZ0CisKK1NvbWUgZWRpdG9ycyBjYW4gaW50ZXJwcmV0IGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZW1iZWRkZWQgaW4gc291cmNlIGZpbGVzLAoraW5kaWNhdGVkIHdpdGggc3BlY2lhbCBtYXJrZXJzLiAgRm9yIGV4YW1wbGUsIGVtYWNzIGludGVycHJldHMgbGluZXMgbWFya2VkCitsaWtlIHRoaXM6CisKKwktKi0gbW9kZTogYyAtKi0KKworT3IgbGlrZSB0aGlzOgorCisJLyoKKwlMb2NhbCBWYXJpYWJsZXM6CisJY29tcGlsZS1jb21tYW5kOiAiZ2NjIC1ETUFHSUNfREVCVUdfRkxBRyBmb28uYyIKKwlFbmQ6CisJKi8KKworVmltIGludGVycHJldHMgbWFya2VycyB0aGF0IGxvb2sgbGlrZSB0aGlzOgorCisJLyogdmltOnNldCBzdz04IG5vZXQgKi8KKworRG8gbm90IGluY2x1ZGUgYW55IG9mIHRoZXNlIGluIHNvdXJjZSBmaWxlcy4gIFBlb3BsZSBoYXZlIHRoZWlyIG93biBwZXJzb25hbAorZWRpdG9yIGNvbmZpZ3VyYXRpb25zLCBhbmQgeW91ciBzb3VyY2UgZmlsZXMgc2hvdWxkIG5vdCBvdmVycmlkZSB0aGVtLiAgVGhpcworaW5jbHVkZXMgbWFya2VycyBmb3IgaW5kZW50YXRpb24gYW5kIG1vZGUgY29uZmlndXJhdGlvbi4gIFBlb3BsZSBtYXkgdXNlIHRoZWlyCitvd24gY3VzdG9tIG1vZGUsIG9yIG1heSBoYXZlIHNvbWUgb3RoZXIgbWFnaWMgbWV0aG9kIGZvciBtYWtpbmcgaW5kZW50YXRpb24KK3dvcmsgY29ycmVjdGx5LgorCisKKwkJQ2hhcHRlciAxOTogIElubGluZSBhc3NlbWJseQorCitJbiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZSwgeW91IG1heSBuZWVkIHRvIHVzZSBpbmxpbmUgYXNzZW1ibHkgdG8gaW50ZXJmYWNlCit3aXRoIENQVSBvciBwbGF0Zm9ybSBmdW5jdGlvbmFsaXR5LiAgRG9uJ3QgaGVzaXRhdGUgdG8gZG8gc28gd2hlbiBuZWNlc3NhcnkuCitIb3dldmVyLCBkb24ndCB1c2UgaW5saW5lIGFzc2VtYmx5IGdyYXR1aXRvdXNseSB3aGVuIEMgY2FuIGRvIHRoZSBqb2IuICBZb3UgY2FuCithbmQgc2hvdWxkIHBva2UgaGFyZHdhcmUgZnJvbSBDIHdoZW4gcG9zc2libGUuCisKK0NvbnNpZGVyIHdyaXRpbmcgc2ltcGxlIGhlbHBlciBmdW5jdGlvbnMgdGhhdCB3cmFwIGNvbW1vbiBiaXRzIG9mIGlubGluZQorYXNzZW1ibHksIHJhdGhlciB0aGFuIHJlcGVhdGVkbHkgd3JpdGluZyB0aGVtIHdpdGggc2xpZ2h0IHZhcmlhdGlvbnMuICBSZW1lbWJlcgordGhhdCBpbmxpbmUgYXNzZW1ibHkgY2FuIHVzZSBDIHBhcmFtZXRlcnMuCisKK0xhcmdlLCBub24tdHJpdmlhbCBhc3NlbWJseSBmdW5jdGlvbnMgc2hvdWxkIGdvIGluIC5TIGZpbGVzLCB3aXRoIGNvcnJlc3BvbmRpbmcKK0MgcHJvdG90eXBlcyBkZWZpbmVkIGluIEMgaGVhZGVyIGZpbGVzLiAgVGhlIEMgcHJvdG90eXBlcyBmb3IgYXNzZW1ibHkKK2Z1bmN0aW9ucyBzaG91bGQgdXNlICJhc21saW5rYWdlIi4KKworWW91IG1heSBuZWVkIHRvIG1hcmsgeW91ciBhc20gc3RhdGVtZW50IGFzIHZvbGF0aWxlLCB0byBwcmV2ZW50IEdDQyBmcm9tCityZW1vdmluZyBpdCBpZiBHQ0MgZG9lc24ndCBub3RpY2UgYW55IHNpZGUgZWZmZWN0cy4gIFlvdSBkb24ndCBhbHdheXMgbmVlZCB0bworZG8gc28sIHRob3VnaCwgYW5kIGRvaW5nIHNvIHVubmVjZXNzYXJpbHkgY2FuIGxpbWl0IG9wdGltaXphdGlvbi4KKworV2hlbiB3cml0aW5nIGEgc2luZ2xlIGlubGluZSBhc3NlbWJseSBzdGF0ZW1lbnQgY29udGFpbmluZyBtdWx0aXBsZQoraW5zdHJ1Y3Rpb25zLCBwdXQgZWFjaCBpbnN0cnVjdGlvbiBvbiBhIHNlcGFyYXRlIGxpbmUgaW4gYSBzZXBhcmF0ZSBxdW90ZWQKK3N0cmluZywgYW5kIGVuZCBlYWNoIHN0cmluZyBleGNlcHQgdGhlIGxhc3Qgd2l0aCBcblx0IHRvIHByb3Blcmx5IGluZGVudCB0aGUKK25leHQgaW5zdHJ1Y3Rpb24gaW4gdGhlIGFzc2VtYmx5IG91dHB1dDoKKworCWFzbSAoIm1hZ2ljICVyZWcxLCAjNDJcblx0IgorCSAgICAgIm1vcmVfbWFnaWMgJXJlZzIsICVyZWczIgorCSAgICAgOiAvKiBvdXRwdXRzICovIDogLyogaW5wdXRzICovIDogLyogY2xvYmJlcnMgKi8pOworCisKKwkJQ2hhcHRlciAyMDogQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24KKworV2hlcmV2ZXIgcG9zc2libGUsIGRvbid0IHVzZSBwcmVwcm9jZXNzb3IgY29uZGl0aW9uYWxzICgjaWYsICNpZmRlZikgaW4gLmMKK2ZpbGVzOyBkb2luZyBzbyBtYWtlcyBjb2RlIGhhcmRlciB0byByZWFkIGFuZCBsb2dpYyBoYXJkZXIgdG8gZm9sbG93LiAgSW5zdGVhZCwKK3VzZSBzdWNoIGNvbmRpdGlvbmFscyBpbiBhIGhlYWRlciBmaWxlIGRlZmluaW5nIGZ1bmN0aW9ucyBmb3IgdXNlIGluIHRob3NlIC5jCitmaWxlcywgcHJvdmlkaW5nIG5vLW9wIHN0dWIgdmVyc2lvbnMgaW4gdGhlICNlbHNlIGNhc2UsIGFuZCB0aGVuIGNhbGwgdGhvc2UKK2Z1bmN0aW9ucyB1bmNvbmRpdGlvbmFsbHkgZnJvbSAuYyBmaWxlcy4gIFRoZSBjb21waWxlciB3aWxsIGF2b2lkIGdlbmVyYXRpbmcKK2FueSBjb2RlIGZvciB0aGUgc3R1YiBjYWxscywgcHJvZHVjaW5nIGlkZW50aWNhbCByZXN1bHRzLCBidXQgdGhlIGxvZ2ljIHdpbGwKK3JlbWFpbiBlYXN5IHRvIGZvbGxvdy4KKworUHJlZmVyIHRvIGNvbXBpbGUgb3V0IGVudGlyZSBmdW5jdGlvbnMsIHJhdGhlciB0aGFuIHBvcnRpb25zIG9mIGZ1bmN0aW9ucyBvcgorcG9ydGlvbnMgb2YgZXhwcmVzc2lvbnMuICBSYXRoZXIgdGhhbiBwdXR0aW5nIGFuIGlmZGVmIGluIGFuIGV4cHJlc3Npb24sIGZhY3Rvcgorb3V0IHBhcnQgb3IgYWxsIG9mIHRoZSBleHByZXNzaW9uIGludG8gYSBzZXBhcmF0ZSBoZWxwZXIgZnVuY3Rpb24gYW5kIGFwcGx5IHRoZQorY29uZGl0aW9uYWwgdG8gdGhhdCBmdW5jdGlvbi4KKworSWYgeW91IGhhdmUgYSBmdW5jdGlvbiBvciB2YXJpYWJsZSB3aGljaCBtYXkgcG90ZW50aWFsbHkgZ28gdW51c2VkIGluIGEKK3BhcnRpY3VsYXIgY29uZmlndXJhdGlvbiwgYW5kIHRoZSBjb21waWxlciB3b3VsZCB3YXJuIGFib3V0IGl0cyBkZWZpbml0aW9uCitnb2luZyB1bnVzZWQsIG1hcmsgdGhlIGRlZmluaXRpb24gYXMgX19tYXliZV91bnVzZWQgcmF0aGVyIHRoYW4gd3JhcHBpbmcgaXQgaW4KK2EgcHJlcHJvY2Vzc29yIGNvbmRpdGlvbmFsLiAgKEhvd2V2ZXIsIGlmIGEgZnVuY3Rpb24gb3IgdmFyaWFibGUgKmFsd2F5cyogZ29lcwordW51c2VkLCBkZWxldGUgaXQuKQorCitXaXRoaW4gY29kZSwgd2hlcmUgcG9zc2libGUsIHVzZSB0aGUgSVNfRU5BQkxFRCBtYWNybyB0byBjb252ZXJ0IGEgS2NvbmZpZworc3ltYm9sIGludG8gYSBDIGJvb2xlYW4gZXhwcmVzc2lvbiwgYW5kIHVzZSBpdCBpbiBhIG5vcm1hbCBDIGNvbmRpdGlvbmFsOgorCisJaWYgKElTX0VOQUJMRUQoQ09ORklHX1NPTUVUSElORykpIHsKKwkJLi4uCisJfQorCitUaGUgY29tcGlsZXIgd2lsbCBjb25zdGFudC1mb2xkIHRoZSBjb25kaXRpb25hbCBhd2F5LCBhbmQgaW5jbHVkZSBvciBleGNsdWRlCit0aGUgYmxvY2sgb2YgY29kZSBqdXN0IGFzIHdpdGggYW4gI2lmZGVmLCBzbyB0aGlzIHdpbGwgbm90IGFkZCBhbnkgcnVudGltZQorb3ZlcmhlYWQuICBIb3dldmVyLCB0aGlzIGFwcHJvYWNoIHN0aWxsIGFsbG93cyB0aGUgQyBjb21waWxlciB0byBzZWUgdGhlIGNvZGUKK2luc2lkZSB0aGUgYmxvY2ssIGFuZCBjaGVjayBpdCBmb3IgY29ycmVjdG5lc3MgKHN5bnRheCwgdHlwZXMsIHN5bWJvbAorcmVmZXJlbmNlcywgZXRjKS4gIFRodXMsIHlvdSBzdGlsbCBoYXZlIHRvIHVzZSBhbiAjaWZkZWYgaWYgdGhlIGNvZGUgaW5zaWRlIHRoZQorYmxvY2sgcmVmZXJlbmNlcyBzeW1ib2xzIHRoYXQgd2lsbCBub3QgZXhpc3QgaWYgdGhlIGNvbmRpdGlvbiBpcyBub3QgbWV0LgorCitBdCB0aGUgZW5kIG9mIGFueSBub24tdHJpdmlhbCAjaWYgb3IgI2lmZGVmIGJsb2NrIChtb3JlIHRoYW4gYSBmZXcgbGluZXMpLAorcGxhY2UgYSBjb21tZW50IGFmdGVyIHRoZSAjZW5kaWYgb24gdGhlIHNhbWUgbGluZSwgbm90aW5nIHRoZSBjb25kaXRpb25hbAorZXhwcmVzc2lvbiB1c2VkLiAgRm9yIGluc3RhbmNlOgorCisJI2lmZGVmIENPTkZJR19TT01FVEhJTkcKKwkuLi4KKwkjZW5kaWYgLyogQ09ORklHX1NPTUVUSElORyAqLworCisKKwkJQXBwZW5kaXggSTogUmVmZXJlbmNlcworCitUaGUgQyBQcm9ncmFtbWluZyBMYW5ndWFnZSwgU2Vjb25kIEVkaXRpb24KK2J5IEJyaWFuIFcuIEtlcm5pZ2hhbiBhbmQgRGVubmlzIE0uIFJpdGNoaWUuCitQcmVudGljZSBIYWxsLCBJbmMuLCAxOTg4LgorSVNCTiAwLTEzLTExMDM2Mi04IChwYXBlcmJhY2spLCAwLTEzLTExMDM3MC05IChoYXJkYmFjaykuCisKK1RoZSBQcmFjdGljZSBvZiBQcm9ncmFtbWluZworYnkgQnJpYW4gVy4gS2VybmlnaGFuIGFuZCBSb2IgUGlrZS4KK0FkZGlzb24tV2VzbGV5LCBJbmMuLCAxOTk5LgorSVNCTiAwLTIwMS02MTU4Ni1YLgorCitHTlUgbWFudWFscyAtIHdoZXJlIGluIGNvbXBsaWFuY2Ugd2l0aCBLJlIgYW5kIHRoaXMgdGV4dCAtIGZvciBjcHAsIGdjYywKK2djYyBpbnRlcm5hbHMgYW5kIGluZGVudCwgYWxsIGF2YWlsYWJsZSBmcm9tIGh0dHA6Ly93d3cuZ251Lm9yZy9tYW51YWwvCisKK1dHMTQgaXMgdGhlIGludGVybmF0aW9uYWwgc3RhbmRhcmRpemF0aW9uIHdvcmtpbmcgZ3JvdXAgZm9yIHRoZSBwcm9ncmFtbWluZworbGFuZ3VhZ2UgQywgVVJMOiBodHRwOi8vd3d3Lm9wZW4tc3RkLm9yZy9KVEMxL1NDMjIvV0cxNC8KKworS2VybmVsIENvZGluZ1N0eWxlLCBieSBncmVnQGtyb2FoLmNvbSBhdCBPTFMgMjAwMjoKK2h0dHA6Ly93d3cua3JvYWguY29tL2xpbnV4L3RhbGtzL29sc18yMDAyX2tlcm5lbF9jb2RpbmdzdHlsZV90YWxrL2h0bWwvCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRE1BLUFQSS1IT1dUTy50eHQgYi9Eb2N1bWVudGF0aW9uL0RNQS1BUEktSE9XVE8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2OWIzZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RNQS1BUEktSE9XVE8udHh0CkBAIC0wLDAgKzEsOTc5IEBACisJCSAgICAgRHluYW1pYyBETUEgbWFwcGluZyBHdWlkZQorCQkgICAgID09PT09PT09PT09PT09PT09PT09PT09PT0KKworCQkgRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUByZWRoYXQuY29tPgorCQkgUmljaGFyZCBIZW5kZXJzb24gPHJ0aEBjeWdudXMuY29tPgorCQkgIEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+CisKK1RoaXMgaXMgYSBndWlkZSB0byBkZXZpY2UgZHJpdmVyIHdyaXRlcnMgb24gaG93IHRvIHVzZSB0aGUgRE1BIEFQSQord2l0aCBleGFtcGxlIHBzZXVkby1jb2RlLiAgRm9yIGEgY29uY2lzZSBkZXNjcmlwdGlvbiBvZiB0aGUgQVBJLCBzZWUKK0RNQS1BUEkudHh0LgorCisgICAgICAgICAgICAgICAgICAgICAgIENQVSBhbmQgRE1BIGFkZHJlc3NlcworCitUaGVyZSBhcmUgc2V2ZXJhbCBraW5kcyBvZiBhZGRyZXNzZXMgaW52b2x2ZWQgaW4gdGhlIERNQSBBUEksIGFuZCBpdCdzCitpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW5jZXMuCisKK1RoZSBrZXJuZWwgbm9ybWFsbHkgdXNlcyB2aXJ0dWFsIGFkZHJlc3Nlcy4gIEFueSBhZGRyZXNzIHJldHVybmVkIGJ5CitrbWFsbG9jKCksIHZtYWxsb2MoKSwgYW5kIHNpbWlsYXIgaW50ZXJmYWNlcyBpcyBhIHZpcnR1YWwgYWRkcmVzcyBhbmQgY2FuCitiZSBzdG9yZWQgaW4gYSAidm9pZCAqIi4KKworVGhlIHZpcnR1YWwgbWVtb3J5IHN5c3RlbSAoVExCLCBwYWdlIHRhYmxlcywgZXRjLikgdHJhbnNsYXRlcyB2aXJ0dWFsCithZGRyZXNzZXMgdG8gQ1BVIHBoeXNpY2FsIGFkZHJlc3Nlcywgd2hpY2ggYXJlIHN0b3JlZCBhcyAicGh5c19hZGRyX3QiIG9yCisicmVzb3VyY2Vfc2l6ZV90Ii4gIFRoZSBrZXJuZWwgbWFuYWdlcyBkZXZpY2UgcmVzb3VyY2VzIGxpa2UgcmVnaXN0ZXJzIGFzCitwaHlzaWNhbCBhZGRyZXNzZXMuICBUaGVzZSBhcmUgdGhlIGFkZHJlc3NlcyBpbiAvcHJvYy9pb21lbS4gIFRoZSBwaHlzaWNhbAorYWRkcmVzcyBpcyBub3QgZGlyZWN0bHkgdXNlZnVsIHRvIGEgZHJpdmVyOyBpdCBtdXN0IHVzZSBpb3JlbWFwKCkgdG8gbWFwCit0aGUgc3BhY2UgYW5kIHByb2R1Y2UgYSB2aXJ0dWFsIGFkZHJlc3MuCisKK0kvTyBkZXZpY2VzIHVzZSBhIHRoaXJkIGtpbmQgb2YgYWRkcmVzczogYSAiYnVzIGFkZHJlc3MiLiAgSWYgYSBkZXZpY2UgaGFzCityZWdpc3RlcnMgYXQgYW4gTU1JTyBhZGRyZXNzLCBvciBpZiBpdCBwZXJmb3JtcyBETUEgdG8gcmVhZCBvciB3cml0ZSBzeXN0ZW0KK21lbW9yeSwgdGhlIGFkZHJlc3NlcyB1c2VkIGJ5IHRoZSBkZXZpY2UgYXJlIGJ1cyBhZGRyZXNzZXMuICBJbiBzb21lCitzeXN0ZW1zLCBidXMgYWRkcmVzc2VzIGFyZSBpZGVudGljYWwgdG8gQ1BVIHBoeXNpY2FsIGFkZHJlc3NlcywgYnV0IGluCitnZW5lcmFsIHRoZXkgYXJlIG5vdC4gIElPTU1VcyBhbmQgaG9zdCBicmlkZ2VzIGNhbiBwcm9kdWNlIGFyYml0cmFyeQorbWFwcGluZ3MgYmV0d2VlbiBwaHlzaWNhbCBhbmQgYnVzIGFkZHJlc3Nlcy4KKworRnJvbSBhIGRldmljZSdzIHBvaW50IG9mIHZpZXcsIERNQSB1c2VzIHRoZSBidXMgYWRkcmVzcyBzcGFjZSwgYnV0IGl0IG1heQorYmUgcmVzdHJpY3RlZCB0byBhIHN1YnNldCBvZiB0aGF0IHNwYWNlLiAgRm9yIGV4YW1wbGUsIGV2ZW4gaWYgYSBzeXN0ZW0KK3N1cHBvcnRzIDY0LWJpdCBhZGRyZXNzZXMgZm9yIG1haW4gbWVtb3J5IGFuZCBQQ0kgQkFScywgaXQgbWF5IHVzZSBhbiBJT01NVQorc28gZGV2aWNlcyBvbmx5IG5lZWQgdG8gdXNlIDMyLWJpdCBETUEgYWRkcmVzc2VzLgorCitIZXJlJ3MgYSBwaWN0dXJlIGFuZCBzb21lIGV4YW1wbGVzOgorCisgICAgICAgICAgICAgICBDUFUgICAgICAgICAgICAgICAgICBDUFUgICAgICAgICAgICAgICAgICBCdXMKKyAgICAgICAgICAgICBWaXJ0dWFsICAgICAgICAgICAgICBQaHlzaWNhbCAgICAgICAgICAgICBBZGRyZXNzCisgICAgICAgICAgICAgQWRkcmVzcyAgICAgICAgICAgICAgQWRkcmVzcyAgICAgICAgICAgICAgIFNwYWNlCisgICAgICAgICAgICAgIFNwYWNlICAgICAgICAgICAgICAgIFNwYWNlCisKKyAgICAgICAgICAgICstLS0tLS0tKyAgICAgICAgICAgICArLS0tLS0tKyAgICAgICAgICAgICArLS0tLS0tKworICAgICAgICAgICAgfCAgICAgICB8ICAgICAgICAgICAgIHxNTUlPICB8ICAgT2Zmc2V0ICAgIHwgICAgICB8CisgICAgICAgICAgICB8ICAgICAgIHwgIFZpcnR1YWwgICAgfFNwYWNlIHwgICBhcHBsaWVkICAgfCAgICAgIHwKKyAgICAgICAgICBDICstLS0tLS0tKyAtLS0tLS0tLT4gQiArLS0tLS0tKyAtLS0tLS0tLS0tPiArLS0tLS0tKyBBCisgICAgICAgICAgICB8ICAgICAgIHwgIG1hcHBpbmcgICAgfCAgICAgIHwgICBieSBob3N0ICAgfCAgICAgIHwKKyAgKy0tLS0tKyAgIHwgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgfCAgIGJyaWRnZSAgICB8ICAgICAgfCAgICstLS0tLS0tLSsKKyAgfCAgICAgfCAgIHwgICAgICAgfCAgICAgICAgICAgICArLS0tLS0tKyAgICAgICAgICAgICB8ICAgICAgfCAgIHwgICAgICAgIHwKKyAgfCBDUFUgfCAgIHwgICAgICAgfCAgICAgICAgICAgICB8IFJBTSAgfCAgICAgICAgICAgICB8ICAgICAgfCAgIHwgRGV2aWNlIHwKKyAgfCAgICAgfCAgIHwgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgfCAgICAgICAgICAgICB8ICAgICAgfCAgIHwgICAgICAgIHwKKyAgKy0tLS0tKyAgICstLS0tLS0tKyAgICAgICAgICAgICArLS0tLS0tKyAgICAgICAgICAgICArLS0tLS0tKyAgICstLS0tLS0tLSsKKyAgICAgICAgICAgIHwgICAgICAgfCAgVmlydHVhbCAgICB8QnVmZmVyfCAgIE1hcHBpbmcgICB8ICAgICAgfAorICAgICAgICAgIFggKy0tLS0tLS0rIC0tLS0tLS0tPiBZICstLS0tLS0rIDwtLS0tLS0tLS0tICstLS0tLS0rIFoKKyAgICAgICAgICAgIHwgICAgICAgfCAgbWFwcGluZyAgICB8IFJBTSAgfCAgIGJ5IElPTU1VCisgICAgICAgICAgICB8ICAgICAgIHwgICAgICAgICAgICAgfCAgICAgIHwKKyAgICAgICAgICAgIHwgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgfAorICAgICAgICAgICAgKy0tLS0tLS0rICAgICAgICAgICAgICstLS0tLS0rCisKK0R1cmluZyB0aGUgZW51bWVyYXRpb24gcHJvY2VzcywgdGhlIGtlcm5lbCBsZWFybnMgYWJvdXQgSS9PIGRldmljZXMgYW5kCit0aGVpciBNTUlPIHNwYWNlIGFuZCB0aGUgaG9zdCBicmlkZ2VzIHRoYXQgY29ubmVjdCB0aGVtIHRvIHRoZSBzeXN0ZW0uICBGb3IKK2V4YW1wbGUsIGlmIGEgUENJIGRldmljZSBoYXMgYSBCQVIsIHRoZSBrZXJuZWwgcmVhZHMgdGhlIGJ1cyBhZGRyZXNzIChBKQorZnJvbSB0aGUgQkFSIGFuZCBjb252ZXJ0cyBpdCB0byBhIENQVSBwaHlzaWNhbCBhZGRyZXNzIChCKS4gIFRoZSBhZGRyZXNzIEIKK2lzIHN0b3JlZCBpbiBhIHN0cnVjdCByZXNvdXJjZSBhbmQgdXN1YWxseSBleHBvc2VkIHZpYSAvcHJvYy9pb21lbS4gIFdoZW4gYQorZHJpdmVyIGNsYWltcyBhIGRldmljZSwgaXQgdHlwaWNhbGx5IHVzZXMgaW9yZW1hcCgpIHRvIG1hcCBwaHlzaWNhbCBhZGRyZXNzCitCIGF0IGEgdmlydHVhbCBhZGRyZXNzIChDKS4gIEl0IGNhbiB0aGVuIHVzZSwgZS5nLiwgaW9yZWFkMzIoQyksIHRvIGFjY2VzcwordGhlIGRldmljZSByZWdpc3RlcnMgYXQgYnVzIGFkZHJlc3MgQS4KKworSWYgdGhlIGRldmljZSBzdXBwb3J0cyBETUEsIHRoZSBkcml2ZXIgc2V0cyB1cCBhIGJ1ZmZlciB1c2luZyBrbWFsbG9jKCkgb3IKK2Egc2ltaWxhciBpbnRlcmZhY2UsIHdoaWNoIHJldHVybnMgYSB2aXJ0dWFsIGFkZHJlc3MgKFgpLiAgVGhlIHZpcnR1YWwKK21lbW9yeSBzeXN0ZW0gbWFwcyBYIHRvIGEgcGh5c2ljYWwgYWRkcmVzcyAoWSkgaW4gc3lzdGVtIFJBTS4gIFRoZSBkcml2ZXIKK2NhbiB1c2UgdmlydHVhbCBhZGRyZXNzIFggdG8gYWNjZXNzIHRoZSBidWZmZXIsIGJ1dCB0aGUgZGV2aWNlIGl0c2VsZgorY2Fubm90IGJlY2F1c2UgRE1BIGRvZXNuJ3QgZ28gdGhyb3VnaCB0aGUgQ1BVIHZpcnR1YWwgbWVtb3J5IHN5c3RlbS4KKworSW4gc29tZSBzaW1wbGUgc3lzdGVtcywgdGhlIGRldmljZSBjYW4gZG8gRE1BIGRpcmVjdGx5IHRvIHBoeXNpY2FsIGFkZHJlc3MKK1kuICBCdXQgaW4gbWFueSBvdGhlcnMsIHRoZXJlIGlzIElPTU1VIGhhcmR3YXJlIHRoYXQgdHJhbnNsYXRlcyBETUEKK2FkZHJlc3NlcyB0byBwaHlzaWNhbCBhZGRyZXNzZXMsIGUuZy4sIGl0IHRyYW5zbGF0ZXMgWiB0byBZLiAgVGhpcyBpcyBwYXJ0CitvZiB0aGUgcmVhc29uIGZvciB0aGUgRE1BIEFQSTogdGhlIGRyaXZlciBjYW4gZ2l2ZSBhIHZpcnR1YWwgYWRkcmVzcyBYIHRvCithbiBpbnRlcmZhY2UgbGlrZSBkbWFfbWFwX3NpbmdsZSgpLCB3aGljaCBzZXRzIHVwIGFueSByZXF1aXJlZCBJT01NVQorbWFwcGluZyBhbmQgcmV0dXJucyB0aGUgRE1BIGFkZHJlc3MgWi4gIFRoZSBkcml2ZXIgdGhlbiB0ZWxscyB0aGUgZGV2aWNlIHRvCitkbyBETUEgdG8gWiwgYW5kIHRoZSBJT01NVSBtYXBzIGl0IHRvIHRoZSBidWZmZXIgYXQgYWRkcmVzcyBZIGluIHN5c3RlbQorUkFNLgorCitTbyB0aGF0IExpbnV4IGNhbiB1c2UgdGhlIGR5bmFtaWMgRE1BIG1hcHBpbmcsIGl0IG5lZWRzIHNvbWUgaGVscCBmcm9tIHRoZQorZHJpdmVycywgbmFtZWx5IGl0IGhhcyB0byB0YWtlIGludG8gYWNjb3VudCB0aGF0IERNQSBhZGRyZXNzZXMgc2hvdWxkIGJlCittYXBwZWQgb25seSBmb3IgdGhlIHRpbWUgdGhleSBhcmUgYWN0dWFsbHkgdXNlZCBhbmQgdW5tYXBwZWQgYWZ0ZXIgdGhlIERNQQordHJhbnNmZXIuCisKK1RoZSBmb2xsb3dpbmcgQVBJIHdpbGwgd29yayBvZiBjb3Vyc2UgZXZlbiBvbiBwbGF0Zm9ybXMgd2hlcmUgbm8gc3VjaAoraGFyZHdhcmUgZXhpc3RzLgorCitOb3RlIHRoYXQgdGhlIERNQSBBUEkgd29ya3Mgd2l0aCBhbnkgYnVzIGluZGVwZW5kZW50IG9mIHRoZSB1bmRlcmx5aW5nCittaWNyb3Byb2Nlc3NvciBhcmNoaXRlY3R1cmUuIFlvdSBzaG91bGQgdXNlIHRoZSBETUEgQVBJIHJhdGhlciB0aGFuIHRoZQorYnVzLXNwZWNpZmljIERNQSBBUEksIGkuZS4sIHVzZSB0aGUgZG1hX21hcF8qKCkgaW50ZXJmYWNlcyByYXRoZXIgdGhhbiB0aGUKK3BjaV9tYXBfKigpIGludGVyZmFjZXMuCisKK0ZpcnN0IG9mIGFsbCwgeW91IHNob3VsZCBtYWtlIHN1cmUKKworI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+CisKK2lzIGluIHlvdXIgZHJpdmVyLCB3aGljaCBwcm92aWRlcyB0aGUgZGVmaW5pdGlvbiBvZiBkbWFfYWRkcl90LiAgVGhpcyB0eXBlCitjYW4gaG9sZCBhbnkgdmFsaWQgRE1BIGFkZHJlc3MgZm9yIHRoZSBwbGF0Zm9ybSBhbmQgc2hvdWxkIGJlIHVzZWQKK2V2ZXJ5d2hlcmUgeW91IGhvbGQgYSBETUEgYWRkcmVzcyByZXR1cm5lZCBmcm9tIHRoZSBETUEgbWFwcGluZyBmdW5jdGlvbnMuCisKKwkJCSBXaGF0IG1lbW9yeSBpcyBETUEnYWJsZT8KKworVGhlIGZpcnN0IHBpZWNlIG9mIGluZm9ybWF0aW9uIHlvdSBtdXN0IGtub3cgaXMgd2hhdCBrZXJuZWwgbWVtb3J5IGNhbgorYmUgdXNlZCB3aXRoIHRoZSBETUEgbWFwcGluZyBmYWNpbGl0aWVzLiAgVGhlcmUgaGFzIGJlZW4gYW4gdW53cml0dGVuCitzZXQgb2YgcnVsZXMgcmVnYXJkaW5nIHRoaXMsIGFuZCB0aGlzIHRleHQgaXMgYW4gYXR0ZW1wdCB0byBmaW5hbGx5Cit3cml0ZSB0aGVtIGRvd24uCisKK0lmIHlvdSBhY3F1aXJlZCB5b3VyIG1lbW9yeSB2aWEgdGhlIHBhZ2UgYWxsb2NhdG9yCisoaS5lLiBfX2dldF9mcmVlX3BhZ2UqKCkpIG9yIHRoZSBnZW5lcmljIG1lbW9yeSBhbGxvY2F0b3JzCisoaS5lLiBrbWFsbG9jKCkgb3Iga21lbV9jYWNoZV9hbGxvYygpKSB0aGVuIHlvdSBtYXkgRE1BIHRvL2Zyb20KK3RoYXQgbWVtb3J5IHVzaW5nIHRoZSBhZGRyZXNzZXMgcmV0dXJuZWQgZnJvbSB0aG9zZSByb3V0aW5lcy4KKworVGhpcyBtZWFucyBzcGVjaWZpY2FsbHkgdGhhdCB5b3UgbWF5IF9ub3RfIHVzZSB0aGUgbWVtb3J5L2FkZHJlc3NlcworcmV0dXJuZWQgZnJvbSB2bWFsbG9jKCkgZm9yIERNQS4gIEl0IGlzIHBvc3NpYmxlIHRvIERNQSB0byB0aGUKK191bmRlcmx5aW5nXyBtZW1vcnkgbWFwcGVkIGludG8gYSB2bWFsbG9jKCkgYXJlYSwgYnV0IHRoaXMgcmVxdWlyZXMKK3dhbGtpbmcgcGFnZSB0YWJsZXMgdG8gZ2V0IHRoZSBwaHlzaWNhbCBhZGRyZXNzZXMsIGFuZCB0aGVuCit0cmFuc2xhdGluZyBlYWNoIG9mIHRob3NlIHBhZ2VzIGJhY2sgdG8gYSBrZXJuZWwgYWRkcmVzcyB1c2luZworc29tZXRoaW5nIGxpa2UgX192YSgpLiAgWyBFRElUOiBVcGRhdGUgdGhpcyB3aGVuIHdlIGludGVncmF0ZQorR2VyZCBLbm9ycidzIGdlbmVyaWMgY29kZSB3aGljaCBkb2VzIHRoaXMuIF0KKworVGhpcyBydWxlIGFsc28gbWVhbnMgdGhhdCB5b3UgbWF5IHVzZSBuZWl0aGVyIGtlcm5lbCBpbWFnZSBhZGRyZXNzZXMKKyhpdGVtcyBpbiBkYXRhL3RleHQvYnNzIHNlZ21lbnRzKSwgbm9yIG1vZHVsZSBpbWFnZSBhZGRyZXNzZXMsIG5vcgorc3RhY2sgYWRkcmVzc2VzIGZvciBETUEuICBUaGVzZSBjb3VsZCBhbGwgYmUgbWFwcGVkIHNvbWV3aGVyZSBlbnRpcmVseQorZGlmZmVyZW50IHRoYW4gdGhlIHJlc3Qgb2YgcGh5c2ljYWwgbWVtb3J5LiAgRXZlbiBpZiB0aG9zZSBjbGFzc2VzIG9mCittZW1vcnkgY291bGQgcGh5c2ljYWxseSB3b3JrIHdpdGggRE1BLCB5b3UnZCBuZWVkIHRvIGVuc3VyZSB0aGUgSS9PCitidWZmZXJzIHdlcmUgY2FjaGVsaW5lLWFsaWduZWQuICBXaXRob3V0IHRoYXQsIHlvdSdkIHNlZSBjYWNoZWxpbmUKK3NoYXJpbmcgcHJvYmxlbXMgKGRhdGEgY29ycnVwdGlvbikgb24gQ1BVcyB3aXRoIERNQS1pbmNvaGVyZW50IGNhY2hlcy4KKyhUaGUgQ1BVIGNvdWxkIHdyaXRlIHRvIG9uZSB3b3JkLCBETUEgd291bGQgd3JpdGUgdG8gYSBkaWZmZXJlbnQgb25lCitpbiB0aGUgc2FtZSBjYWNoZSBsaW5lLCBhbmQgb25lIG9mIHRoZW0gY291bGQgYmUgb3ZlcndyaXR0ZW4uKQorCitBbHNvLCB0aGlzIG1lYW5zIHRoYXQgeW91IGNhbm5vdCB0YWtlIHRoZSByZXR1cm4gb2YgYSBrbWFwKCkKK2NhbGwgYW5kIERNQSB0by9mcm9tIHRoYXQuICBUaGlzIGlzIHNpbWlsYXIgdG8gdm1hbGxvYygpLgorCitXaGF0IGFib3V0IGJsb2NrIEkvTyBhbmQgbmV0d29ya2luZyBidWZmZXJzPyAgVGhlIGJsb2NrIEkvTyBhbmQKK25ldHdvcmtpbmcgc3Vic3lzdGVtcyBtYWtlIHN1cmUgdGhhdCB0aGUgYnVmZmVycyB0aGV5IHVzZSBhcmUgdmFsaWQKK2ZvciB5b3UgdG8gRE1BIGZyb20vdG8uCisKKwkJCURNQSBhZGRyZXNzaW5nIGxpbWl0YXRpb25zCisKK0RvZXMgeW91ciBkZXZpY2UgaGF2ZSBhbnkgRE1BIGFkZHJlc3NpbmcgbGltaXRhdGlvbnM/ICBGb3IgZXhhbXBsZSwgaXMKK3lvdXIgZGV2aWNlIG9ubHkgY2FwYWJsZSBvZiBkcml2aW5nIHRoZSBsb3cgb3JkZXIgMjQtYml0cyBvZiBhZGRyZXNzPworSWYgc28sIHlvdSBuZWVkIHRvIGluZm9ybSB0aGUga2VybmVsIG9mIHRoaXMgZmFjdC4KKworQnkgZGVmYXVsdCwgdGhlIGtlcm5lbCBhc3N1bWVzIHRoYXQgeW91ciBkZXZpY2UgY2FuIGFkZHJlc3MgdGhlIGZ1bGwKKzMyLWJpdHMuICBGb3IgYSA2NC1iaXQgY2FwYWJsZSBkZXZpY2UsIHRoaXMgbmVlZHMgdG8gYmUgaW5jcmVhc2VkLgorQW5kIGZvciBhIGRldmljZSB3aXRoIGxpbWl0YXRpb25zLCBhcyBkaXNjdXNzZWQgaW4gdGhlIHByZXZpb3VzCitwYXJhZ3JhcGgsIGl0IG5lZWRzIHRvIGJlIGRlY3JlYXNlZC4KKworU3BlY2lhbCBub3RlIGFib3V0IFBDSTogUENJLVggc3BlY2lmaWNhdGlvbiByZXF1aXJlcyBQQ0ktWCBkZXZpY2VzIHRvCitzdXBwb3J0IDY0LWJpdCBhZGRyZXNzaW5nIChEQUMpIGZvciBhbGwgdHJhbnNhY3Rpb25zLiAgQW5kIGF0IGxlYXN0CitvbmUgcGxhdGZvcm0gKFNHSSBTTjIpIHJlcXVpcmVzIDY0LWJpdCBjb25zaXN0ZW50IGFsbG9jYXRpb25zIHRvCitvcGVyYXRlIGNvcnJlY3RseSB3aGVuIHRoZSBJTyBidXMgaXMgaW4gUENJLVggbW9kZS4KKworRm9yIGNvcnJlY3Qgb3BlcmF0aW9uLCB5b3UgbXVzdCBpbnRlcnJvZ2F0ZSB0aGUga2VybmVsIGluIHlvdXIgZGV2aWNlCitwcm9iZSByb3V0aW5lIHRvIHNlZSBpZiB0aGUgRE1BIGNvbnRyb2xsZXIgb24gdGhlIG1hY2hpbmUgY2FuIHByb3Blcmx5CitzdXBwb3J0IHRoZSBETUEgYWRkcmVzc2luZyBsaW1pdGF0aW9uIHlvdXIgZGV2aWNlIGhhcy4gIEl0IGlzIGdvb2QKK3N0eWxlIHRvIGRvIHRoaXMgZXZlbiBpZiB5b3VyIGRldmljZSBob2xkcyB0aGUgZGVmYXVsdCBzZXR0aW5nLAorYmVjYXVzZSB0aGlzIHNob3dzIHRoYXQgeW91IGRpZCB0aGluayBhYm91dCB0aGVzZSBpc3N1ZXMgd3J0LiB5b3VyCitkZXZpY2UuCisKK1RoZSBxdWVyeSBpcyBwZXJmb3JtZWQgdmlhIGEgY2FsbCB0byBkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KCk6CisKKwlpbnQgZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChzdHJ1Y3QgZGV2aWNlICpkZXYsIHU2NCBtYXNrKTsKKword2hpY2ggd2lsbCBxdWVyeSB0aGUgbWFzayBmb3IgYm90aCBzdHJlYW1pbmcgYW5kIGNvaGVyZW50IEFQSXMgdG9nZXRoZXIuCitJZiB5b3UgaGF2ZSBzb21lIHNwZWNpYWwgcmVxdWlyZW1lbnRzLCB0aGVuIHRoZSBmb2xsb3dpbmcgdHdvIHNlcGFyYXRlCitxdWVyaWVzIGNhbiBiZSB1c2VkIGluc3RlYWQ6CisKKwlUaGUgcXVlcnkgZm9yIHN0cmVhbWluZyBtYXBwaW5ncyBpcyBwZXJmb3JtZWQgdmlhIGEgY2FsbCB0bworCWRtYV9zZXRfbWFzaygpOgorCisJCWludCBkbWFfc2V0X21hc2soc3RydWN0IGRldmljZSAqZGV2LCB1NjQgbWFzayk7CisKKwlUaGUgcXVlcnkgZm9yIGNvbnNpc3RlbnQgYWxsb2NhdGlvbnMgaXMgcGVyZm9ybWVkIHZpYSBhIGNhbGwKKwl0byBkbWFfc2V0X2NvaGVyZW50X21hc2soKToKKworCQlpbnQgZG1hX3NldF9jb2hlcmVudF9tYXNrKHN0cnVjdCBkZXZpY2UgKmRldiwgdTY0IG1hc2spOworCitIZXJlLCBkZXYgaXMgYSBwb2ludGVyIHRvIHRoZSBkZXZpY2Ugc3RydWN0IG9mIHlvdXIgZGV2aWNlLCBhbmQgbWFzaworaXMgYSBiaXQgbWFzayBkZXNjcmliaW5nIHdoaWNoIGJpdHMgb2YgYW4gYWRkcmVzcyB5b3VyIGRldmljZQorc3VwcG9ydHMuICBJdCByZXR1cm5zIHplcm8gaWYgeW91ciBjYXJkIGNhbiBwZXJmb3JtIERNQSBwcm9wZXJseSBvbgordGhlIG1hY2hpbmUgZ2l2ZW4gdGhlIGFkZHJlc3MgbWFzayB5b3UgcHJvdmlkZWQuICBJbiBnZW5lcmFsLCB0aGUKK2RldmljZSBzdHJ1Y3Qgb2YgeW91ciBkZXZpY2UgaXMgZW1iZWRkZWQgaW4gdGhlIGJ1cy1zcGVjaWZpYyBkZXZpY2UKK3N0cnVjdCBvZiB5b3VyIGRldmljZS4gIEZvciBleGFtcGxlLCAmcGRldi0+ZGV2IGlzIGEgcG9pbnRlciB0byB0aGUKK2RldmljZSBzdHJ1Y3Qgb2YgYSBQQ0kgZGV2aWNlIChwZGV2IGlzIGEgcG9pbnRlciB0byB0aGUgUENJIGRldmljZQorc3RydWN0IG9mIHlvdXIgZGV2aWNlKS4KKworSWYgaXQgcmV0dXJucyBub24temVybywgeW91ciBkZXZpY2UgY2Fubm90IHBlcmZvcm0gRE1BIHByb3Blcmx5IG9uCit0aGlzIHBsYXRmb3JtLCBhbmQgYXR0ZW1wdGluZyB0byBkbyBzbyB3aWxsIHJlc3VsdCBpbiB1bmRlZmluZWQKK2JlaGF2aW9yLiAgWW91IG11c3QgZWl0aGVyIHVzZSBhIGRpZmZlcmVudCBtYXNrLCBvciBub3QgdXNlIERNQS4KKworVGhpcyBtZWFucyB0aGF0IGluIHRoZSBmYWlsdXJlIGNhc2UsIHlvdSBoYXZlIHRocmVlIG9wdGlvbnM6CisKKzEpIFVzZSBhbm90aGVyIERNQSBtYXNrLCBpZiBwb3NzaWJsZSAoc2VlIGJlbG93KS4KKzIpIFVzZSBzb21lIG5vbi1ETUEgbW9kZSBmb3IgZGF0YSB0cmFuc2ZlciwgaWYgcG9zc2libGUuCiszKSBJZ25vcmUgdGhpcyBkZXZpY2UgYW5kIGRvIG5vdCBpbml0aWFsaXplIGl0LgorCitJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdXIgZHJpdmVyIHByaW50IGEga2VybmVsIEtFUk5fV0FSTklORyBtZXNzYWdlCit3aGVuIHlvdSBlbmQgdXAgcGVyZm9ybWluZyBlaXRoZXIgIzIgb3IgIzMuICBJbiB0aGlzIG1hbm5lciwgaWYgYSB1c2VyCitvZiB5b3VyIGRyaXZlciByZXBvcnRzIHRoYXQgcGVyZm9ybWFuY2UgaXMgYmFkIG9yIHRoYXQgdGhlIGRldmljZSBpcyBub3QKK2V2ZW4gZGV0ZWN0ZWQsIHlvdSBjYW4gYXNrIHRoZW0gZm9yIHRoZSBrZXJuZWwgbWVzc2FnZXMgdG8gZmluZCBvdXQKK2V4YWN0bHkgd2h5LgorCitUaGUgc3RhbmRhcmQgMzItYml0IGFkZHJlc3NpbmcgZGV2aWNlIHdvdWxkIGRvIHNvbWV0aGluZyBsaWtlIHRoaXM6CisKKwlpZiAoZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChkZXYsIERNQV9CSVRfTUFTSygzMikpKSB7CisJCWRldl93YXJuKGRldiwgIm15ZGV2OiBObyBzdWl0YWJsZSBETUEgYXZhaWxhYmxlXG4iKTsKKwkJZ290byBpZ25vcmVfdGhpc19kZXZpY2U7CisJfQorCitBbm90aGVyIGNvbW1vbiBzY2VuYXJpbyBpcyBhIDY0LWJpdCBjYXBhYmxlIGRldmljZS4gIFRoZSBhcHByb2FjaCBoZXJlCitpcyB0byB0cnkgZm9yIDY0LWJpdCBhZGRyZXNzaW5nLCBidXQgYmFjayBkb3duIHRvIGEgMzItYml0IG1hc2sgdGhhdAorc2hvdWxkIG5vdCBmYWlsLiAgVGhlIGtlcm5lbCBtYXkgZmFpbCB0aGUgNjQtYml0IG1hc2sgbm90IGJlY2F1c2UgdGhlCitwbGF0Zm9ybSBpcyBub3QgY2FwYWJsZSBvZiA2NC1iaXQgYWRkcmVzc2luZy4gIFJhdGhlciwgaXQgbWF5IGZhaWwgaW4KK3RoaXMgY2FzZSBzaW1wbHkgYmVjYXVzZSAzMi1iaXQgYWRkcmVzc2luZyBpcyBkb25lIG1vcmUgZWZmaWNpZW50bHkKK3RoYW4gNjQtYml0IGFkZHJlc3NpbmcuICBGb3IgZXhhbXBsZSwgU3BhcmM2NCBQQ0kgU0FDIGFkZHJlc3NpbmcgaXMKK21vcmUgZWZmaWNpZW50IHRoYW4gREFDIGFkZHJlc3NpbmcuCisKK0hlcmUgaXMgaG93IHlvdSB3b3VsZCBoYW5kbGUgYSA2NC1iaXQgY2FwYWJsZSBkZXZpY2Ugd2hpY2ggY2FuIGRyaXZlCithbGwgNjQtYml0cyB3aGVuIGFjY2Vzc2luZyBzdHJlYW1pbmcgRE1BOgorCisJaW50IHVzaW5nX2RhYzsKKworCWlmICghZG1hX3NldF9tYXNrKGRldiwgRE1BX0JJVF9NQVNLKDY0KSkpIHsKKwkJdXNpbmdfZGFjID0gMTsKKwl9IGVsc2UgaWYgKCFkbWFfc2V0X21hc2soZGV2LCBETUFfQklUX01BU0soMzIpKSkgeworCQl1c2luZ19kYWMgPSAwOworCX0gZWxzZSB7CisJCWRldl93YXJuKGRldiwgIm15ZGV2OiBObyBzdWl0YWJsZSBETUEgYXZhaWxhYmxlXG4iKTsKKwkJZ290byBpZ25vcmVfdGhpc19kZXZpY2U7CisJfQorCitJZiBhIGNhcmQgaXMgY2FwYWJsZSBvZiB1c2luZyA2NC1iaXQgY29uc2lzdGVudCBhbGxvY2F0aW9ucyBhcyB3ZWxsLAordGhlIGNhc2Ugd291bGQgbG9vayBsaWtlIHRoaXM6CisKKwlpbnQgdXNpbmdfZGFjLCBjb25zaXN0ZW50X3VzaW5nX2RhYzsKKworCWlmICghZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudChkZXYsIERNQV9CSVRfTUFTSyg2NCkpKSB7CisJCXVzaW5nX2RhYyA9IDE7CisJCWNvbnNpc3RlbnRfdXNpbmdfZGFjID0gMTsKKwl9IGVsc2UgaWYgKCFkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KGRldiwgRE1BX0JJVF9NQVNLKDMyKSkpIHsKKwkJdXNpbmdfZGFjID0gMDsKKwkJY29uc2lzdGVudF91c2luZ19kYWMgPSAwOworCX0gZWxzZSB7CisJCWRldl93YXJuKGRldiwgIm15ZGV2OiBObyBzdWl0YWJsZSBETUEgYXZhaWxhYmxlXG4iKTsKKwkJZ290byBpZ25vcmVfdGhpc19kZXZpY2U7CisJfQorCitUaGUgY29oZXJlbnQgbWFzayB3aWxsIGFsd2F5cyBiZSBhYmxlIHRvIHNldCB0aGUgc2FtZSBvciBhIHNtYWxsZXIgbWFzayBhcwordGhlIHN0cmVhbWluZyBtYXNrLiBIb3dldmVyIGZvciB0aGUgcmFyZSBjYXNlIHRoYXQgYSBkZXZpY2UgZHJpdmVyIG9ubHkKK3VzZXMgY29uc2lzdGVudCBhbGxvY2F0aW9ucywgb25lIHdvdWxkIGhhdmUgdG8gY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBmcm9tCitkbWFfc2V0X2NvaGVyZW50X21hc2soKS4KKworRmluYWxseSwgaWYgeW91ciBkZXZpY2UgY2FuIG9ubHkgZHJpdmUgdGhlIGxvdyAyNC1iaXRzIG9mCithZGRyZXNzIHlvdSBtaWdodCBkbyBzb21ldGhpbmcgbGlrZToKKworCWlmIChkbWFfc2V0X21hc2soZGV2LCBETUFfQklUX01BU0soMjQpKSkgeworCQlkZXZfd2FybihkZXYsICJteWRldjogMjQtYml0IERNQSBhZGRyZXNzaW5nIG5vdCBhdmFpbGFibGVcbiIpOworCQlnb3RvIGlnbm9yZV90aGlzX2RldmljZTsKKwl9CisKK1doZW4gZG1hX3NldF9tYXNrKCkgb3IgZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudCgpIGlzIHN1Y2Nlc3NmdWwsIGFuZAorcmV0dXJucyB6ZXJvLCB0aGUga2VybmVsIHNhdmVzIGF3YXkgdGhpcyBtYXNrIHlvdSBoYXZlIHByb3ZpZGVkLiAgVGhlCitrZXJuZWwgd2lsbCB1c2UgdGhpcyBpbmZvcm1hdGlvbiBsYXRlciB3aGVuIHlvdSBtYWtlIERNQSBtYXBwaW5ncy4KKworVGhlcmUgaXMgYSBjYXNlIHdoaWNoIHdlIGFyZSBhd2FyZSBvZiBhdCB0aGlzIHRpbWUsIHdoaWNoIGlzIHdvcnRoCittZW50aW9uaW5nIGluIHRoaXMgZG9jdW1lbnRhdGlvbi4gIElmIHlvdXIgZGV2aWNlIHN1cHBvcnRzIG11bHRpcGxlCitmdW5jdGlvbnMgKGZvciBleGFtcGxlIGEgc291bmQgY2FyZCBwcm92aWRlcyBwbGF5YmFjayBhbmQgcmVjb3JkCitmdW5jdGlvbnMpIGFuZCB0aGUgdmFyaW91cyBkaWZmZXJlbnQgZnVuY3Rpb25zIGhhdmUgX2RpZmZlcmVudF8KK0RNQSBhZGRyZXNzaW5nIGxpbWl0YXRpb25zLCB5b3UgbWF5IHdpc2ggdG8gcHJvYmUgZWFjaCBtYXNrIGFuZAorb25seSBwcm92aWRlIHRoZSBmdW5jdGlvbmFsaXR5IHdoaWNoIHRoZSBtYWNoaW5lIGNhbiBoYW5kbGUuICBJdAoraXMgaW1wb3J0YW50IHRoYXQgdGhlIGxhc3QgY2FsbCB0byBkbWFfc2V0X21hc2soKSBiZSBmb3IgdGhlCittb3N0IHNwZWNpZmljIG1hc2suCisKK0hlcmUgaXMgcHNldWRvLWNvZGUgc2hvd2luZyBob3cgdGhpcyBtaWdodCBiZSBkb25lOgorCisJI2RlZmluZSBQTEFZQkFDS19BRERSRVNTX0JJVFMJRE1BX0JJVF9NQVNLKDMyKQorCSNkZWZpbmUgUkVDT1JEX0FERFJFU1NfQklUUwlETUFfQklUX01BU0soMjQpCisKKwlzdHJ1Y3QgbXlfc291bmRfY2FyZCAqY2FyZDsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisKKwkuLi4KKwlpZiAoIWRtYV9zZXRfbWFzayhkZXYsIFBMQVlCQUNLX0FERFJFU1NfQklUUykpIHsKKwkJY2FyZC0+cGxheWJhY2tfZW5hYmxlZCA9IDE7CisJfSBlbHNlIHsKKwkJY2FyZC0+cGxheWJhY2tfZW5hYmxlZCA9IDA7CisJCWRldl93YXJuKGRldiwgIiVzOiBQbGF5YmFjayBkaXNhYmxlZCBkdWUgdG8gRE1BIGxpbWl0YXRpb25zXG4iLAorCQkgICAgICAgY2FyZC0+bmFtZSk7CisJfQorCWlmICghZG1hX3NldF9tYXNrKGRldiwgUkVDT1JEX0FERFJFU1NfQklUUykpIHsKKwkJY2FyZC0+cmVjb3JkX2VuYWJsZWQgPSAxOworCX0gZWxzZSB7CisJCWNhcmQtPnJlY29yZF9lbmFibGVkID0gMDsKKwkJZGV2X3dhcm4oZGV2LCAiJXM6IFJlY29yZCBkaXNhYmxlZCBkdWUgdG8gRE1BIGxpbWl0YXRpb25zXG4iLAorCQkgICAgICAgY2FyZC0+bmFtZSk7CisJfQorCitBIHNvdW5kIGNhcmQgd2FzIHVzZWQgYXMgYW4gZXhhbXBsZSBoZXJlIGJlY2F1c2UgdGhpcyBnZW5yZSBvZiBQQ0kKK2RldmljZXMgc2VlbXMgdG8gYmUgbGl0dGVyZWQgd2l0aCBJU0EgY2hpcHMgZ2l2ZW4gYSBQQ0kgZnJvbnQgZW5kLAorYW5kIHRodXMgcmV0YWluaW5nIHRoZSAxNk1CIERNQSBhZGRyZXNzaW5nIGxpbWl0YXRpb25zIG9mIElTQS4KKworCQkJVHlwZXMgb2YgRE1BIG1hcHBpbmdzCisKK1RoZXJlIGFyZSB0d28gdHlwZXMgb2YgRE1BIG1hcHBpbmdzOgorCistIENvbnNpc3RlbnQgRE1BIG1hcHBpbmdzIHdoaWNoIGFyZSB1c3VhbGx5IG1hcHBlZCBhdCBkcml2ZXIKKyAgaW5pdGlhbGl6YXRpb24sIHVubWFwcGVkIGF0IHRoZSBlbmQgYW5kIGZvciB3aGljaCB0aGUgaGFyZHdhcmUgc2hvdWxkCisgIGd1YXJhbnRlZSB0aGF0IHRoZSBkZXZpY2UgYW5kIHRoZSBDUFUgY2FuIGFjY2VzcyB0aGUgZGF0YQorICBpbiBwYXJhbGxlbCBhbmQgd2lsbCBzZWUgdXBkYXRlcyBtYWRlIGJ5IGVhY2ggb3RoZXIgd2l0aG91dCBhbnkKKyAgZXhwbGljaXQgc29mdHdhcmUgZmx1c2hpbmcuCisKKyAgVGhpbmsgb2YgImNvbnNpc3RlbnQiIGFzICJzeW5jaHJvbm91cyIgb3IgImNvaGVyZW50Ii4KKworICBUaGUgY3VycmVudCBkZWZhdWx0IGlzIHRvIHJldHVybiBjb25zaXN0ZW50IG1lbW9yeSBpbiB0aGUgbG93IDMyCisgIGJpdHMgb2YgdGhlIERNQSBzcGFjZS4gIEhvd2V2ZXIsIGZvciBmdXR1cmUgY29tcGF0aWJpbGl0eSB5b3Ugc2hvdWxkCisgIHNldCB0aGUgY29uc2lzdGVudCBtYXNrIGV2ZW4gaWYgdGhpcyBkZWZhdWx0IGlzIGZpbmUgZm9yIHlvdXIKKyAgZHJpdmVyLgorCisgIEdvb2QgZXhhbXBsZXMgb2Ygd2hhdCB0byB1c2UgY29uc2lzdGVudCBtYXBwaW5ncyBmb3IgYXJlOgorCisJLSBOZXR3b3JrIGNhcmQgRE1BIHJpbmcgZGVzY3JpcHRvcnMuCisJLSBTQ1NJIGFkYXB0ZXIgbWFpbGJveCBjb21tYW5kIGRhdGEgc3RydWN0dXJlcy4KKwktIERldmljZSBmaXJtd2FyZSBtaWNyb2NvZGUgZXhlY3V0ZWQgb3V0IG9mCisJICBtYWluIG1lbW9yeS4KKworICBUaGUgaW52YXJpYW50IHRoZXNlIGV4YW1wbGVzIGFsbCByZXF1aXJlIGlzIHRoYXQgYW55IENQVSBzdG9yZQorICB0byBtZW1vcnkgaXMgaW1tZWRpYXRlbHkgdmlzaWJsZSB0byB0aGUgZGV2aWNlLCBhbmQgdmljZQorICB2ZXJzYS4gIENvbnNpc3RlbnQgbWFwcGluZ3MgZ3VhcmFudGVlIHRoaXMuCisKKyAgSU1QT1JUQU5UOiBDb25zaXN0ZW50IERNQSBtZW1vcnkgZG9lcyBub3QgcHJlY2x1ZGUgdGhlIHVzYWdlIG9mCisgICAgICAgICAgICAgcHJvcGVyIG1lbW9yeSBiYXJyaWVycy4gIFRoZSBDUFUgbWF5IHJlb3JkZXIgc3RvcmVzIHRvCisJICAgICBjb25zaXN0ZW50IG1lbW9yeSBqdXN0IGFzIGl0IG1heSBub3JtYWwgbWVtb3J5LiAgRXhhbXBsZToKKwkgICAgIGlmIGl0IGlzIGltcG9ydGFudCBmb3IgdGhlIGRldmljZSB0byBzZWUgdGhlIGZpcnN0IHdvcmQKKwkgICAgIG9mIGEgZGVzY3JpcHRvciB1cGRhdGVkIGJlZm9yZSB0aGUgc2Vjb25kLCB5b3UgbXVzdCBkbworCSAgICAgc29tZXRoaW5nIGxpa2U6CisKKwkJZGVzYy0+d29yZDAgPSBhZGRyZXNzOworCQl3bWIoKTsKKwkJZGVzYy0+d29yZDEgPSBERVNDX1ZBTElEOworCisgICAgICAgICAgICAgaW4gb3JkZXIgdG8gZ2V0IGNvcnJlY3QgYmVoYXZpb3Igb24gYWxsIHBsYXRmb3Jtcy4KKworCSAgICAgQWxzbywgb24gc29tZSBwbGF0Zm9ybXMgeW91ciBkcml2ZXIgbWF5IG5lZWQgdG8gZmx1c2ggQ1BVIHdyaXRlCisJICAgICBidWZmZXJzIGluIG11Y2ggdGhlIHNhbWUgd2F5IGFzIGl0IG5lZWRzIHRvIGZsdXNoIHdyaXRlIGJ1ZmZlcnMKKwkgICAgIGZvdW5kIGluIFBDSSBicmlkZ2VzIChzdWNoIGFzIGJ5IHJlYWRpbmcgYSByZWdpc3RlcidzIHZhbHVlCisJICAgICBhZnRlciB3cml0aW5nIGl0KS4KKworLSBTdHJlYW1pbmcgRE1BIG1hcHBpbmdzIHdoaWNoIGFyZSB1c3VhbGx5IG1hcHBlZCBmb3Igb25lIERNQQorICB0cmFuc2ZlciwgdW5tYXBwZWQgcmlnaHQgYWZ0ZXIgaXQgKHVubGVzcyB5b3UgdXNlIGRtYV9zeW5jXyogYmVsb3cpCisgIGFuZCBmb3Igd2hpY2ggaGFyZHdhcmUgY2FuIG9wdGltaXplIGZvciBzZXF1ZW50aWFsIGFjY2Vzc2VzLgorCisgIFRoaW5rIG9mICJzdHJlYW1pbmciIGFzICJhc3luY2hyb25vdXMiIG9yICJvdXRzaWRlIHRoZSBjb2hlcmVuY3kKKyAgZG9tYWluIi4KKworICBHb29kIGV4YW1wbGVzIG9mIHdoYXQgdG8gdXNlIHN0cmVhbWluZyBtYXBwaW5ncyBmb3IgYXJlOgorCisJLSBOZXR3b3JraW5nIGJ1ZmZlcnMgdHJhbnNtaXR0ZWQvcmVjZWl2ZWQgYnkgYSBkZXZpY2UuCisJLSBGaWxlc3lzdGVtIGJ1ZmZlcnMgd3JpdHRlbi9yZWFkIGJ5IGEgU0NTSSBkZXZpY2UuCisKKyAgVGhlIGludGVyZmFjZXMgZm9yIHVzaW5nIHRoaXMgdHlwZSBvZiBtYXBwaW5nIHdlcmUgZGVzaWduZWQgaW4KKyAgc3VjaCBhIHdheSB0aGF0IGFuIGltcGxlbWVudGF0aW9uIGNhbiBtYWtlIHdoYXRldmVyIHBlcmZvcm1hbmNlCisgIG9wdGltaXphdGlvbnMgdGhlIGhhcmR3YXJlIGFsbG93cy4gIFRvIHRoaXMgZW5kLCB3aGVuIHVzaW5nCisgIHN1Y2ggbWFwcGluZ3MgeW91IG11c3QgYmUgZXhwbGljaXQgYWJvdXQgd2hhdCB5b3Ugd2FudCB0byBoYXBwZW4uCisKK05laXRoZXIgdHlwZSBvZiBETUEgbWFwcGluZyBoYXMgYWxpZ25tZW50IHJlc3RyaWN0aW9ucyB0aGF0IGNvbWUgZnJvbQordGhlIHVuZGVybHlpbmcgYnVzLCBhbHRob3VnaCBzb21lIGRldmljZXMgbWF5IGhhdmUgc3VjaCByZXN0cmljdGlvbnMuCitBbHNvLCBzeXN0ZW1zIHdpdGggY2FjaGVzIHRoYXQgYXJlbid0IERNQS1jb2hlcmVudCB3aWxsIHdvcmsgYmV0dGVyCit3aGVuIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlcnMgZG9uJ3Qgc2hhcmUgY2FjaGUgbGluZXMgd2l0aCBvdGhlciBkYXRhLgorCisKKwkJIFVzaW5nIENvbnNpc3RlbnQgRE1BIG1hcHBpbmdzLgorCitUbyBhbGxvY2F0ZSBhbmQgbWFwIGxhcmdlIChQQUdFX1NJWkUgb3Igc28pIGNvbnNpc3RlbnQgRE1BIHJlZ2lvbnMsCit5b3Ugc2hvdWxkIGRvOgorCisJZG1hX2FkZHJfdCBkbWFfaGFuZGxlOworCisJY3B1X2FkZHIgPSBkbWFfYWxsb2NfY29oZXJlbnQoZGV2LCBzaXplLCAmZG1hX2hhbmRsZSwgZ2ZwKTsKKword2hlcmUgZGV2aWNlIGlzIGEgc3RydWN0IGRldmljZSAqLiBUaGlzIG1heSBiZSBjYWxsZWQgaW4gaW50ZXJydXB0Citjb250ZXh0IHdpdGggdGhlIEdGUF9BVE9NSUMgZmxhZy4KKworU2l6ZSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSByZWdpb24geW91IHdhbnQgdG8gYWxsb2NhdGUsIGluIGJ5dGVzLgorCitUaGlzIHJvdXRpbmUgd2lsbCBhbGxvY2F0ZSBSQU0gZm9yIHRoYXQgcmVnaW9uLCBzbyBpdCBhY3RzIHNpbWlsYXJseSB0bworX19nZXRfZnJlZV9wYWdlcygpIChidXQgdGFrZXMgc2l6ZSBpbnN0ZWFkIG9mIGEgcGFnZSBvcmRlcikuICBJZiB5b3VyCitkcml2ZXIgbmVlZHMgcmVnaW9ucyBzaXplZCBzbWFsbGVyIHRoYW4gYSBwYWdlLCB5b3UgbWF5IHByZWZlciB1c2luZwordGhlIGRtYV9wb29sIGludGVyZmFjZSwgZGVzY3JpYmVkIGJlbG93LgorCitUaGUgY29uc2lzdGVudCBETUEgbWFwcGluZyBpbnRlcmZhY2VzLCBmb3Igbm9uLU5VTEwgZGV2LCB3aWxsIGJ5CitkZWZhdWx0IHJldHVybiBhIERNQSBhZGRyZXNzIHdoaWNoIGlzIDMyLWJpdCBhZGRyZXNzYWJsZS4gIEV2ZW4gaWYgdGhlCitkZXZpY2UgaW5kaWNhdGVzICh2aWEgRE1BIG1hc2spIHRoYXQgaXQgbWF5IGFkZHJlc3MgdGhlIHVwcGVyIDMyLWJpdHMsCitjb25zaXN0ZW50IGFsbG9jYXRpb24gd2lsbCBvbmx5IHJldHVybiA+IDMyLWJpdCBhZGRyZXNzZXMgZm9yIERNQSBpZgordGhlIGNvbnNpc3RlbnQgRE1BIG1hc2sgaGFzIGJlZW4gZXhwbGljaXRseSBjaGFuZ2VkIHZpYQorZG1hX3NldF9jb2hlcmVudF9tYXNrKCkuICBUaGlzIGlzIHRydWUgb2YgdGhlIGRtYV9wb29sIGludGVyZmFjZSBhcword2VsbC4KKworZG1hX2FsbG9jX2NvaGVyZW50KCkgcmV0dXJucyB0d28gdmFsdWVzOiB0aGUgdmlydHVhbCBhZGRyZXNzIHdoaWNoIHlvdQorY2FuIHVzZSB0byBhY2Nlc3MgaXQgZnJvbSB0aGUgQ1BVIGFuZCBkbWFfaGFuZGxlIHdoaWNoIHlvdSBwYXNzIHRvIHRoZQorY2FyZC4KKworVGhlIENQVSB2aXJ0dWFsIGFkZHJlc3MgYW5kIHRoZSBETUEgYWRkcmVzcyBhcmUgYm90aAorZ3VhcmFudGVlZCB0byBiZSBhbGlnbmVkIHRvIHRoZSBzbWFsbGVzdCBQQUdFX1NJWkUgb3JkZXIgd2hpY2gKK2lzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgcmVxdWVzdGVkIHNpemUuICBUaGlzIGludmFyaWFudAorZXhpc3RzIChmb3IgZXhhbXBsZSkgdG8gZ3VhcmFudGVlIHRoYXQgaWYgeW91IGFsbG9jYXRlIGEgY2h1bmsKK3doaWNoIGlzIHNtYWxsZXIgdGhhbiBvciBlcXVhbCB0byA2NCBraWxvYnl0ZXMsIHRoZSBleHRlbnQgb2YgdGhlCitidWZmZXIgeW91IHJlY2VpdmUgd2lsbCBub3QgY3Jvc3MgYSA2NEsgYm91bmRhcnkuCisKK1RvIHVubWFwIGFuZCBmcmVlIHN1Y2ggYSBETUEgcmVnaW9uLCB5b3UgY2FsbDoKKworCWRtYV9mcmVlX2NvaGVyZW50KGRldiwgc2l6ZSwgY3B1X2FkZHIsIGRtYV9oYW5kbGUpOworCit3aGVyZSBkZXYsIHNpemUgYXJlIHRoZSBzYW1lIGFzIGluIHRoZSBhYm92ZSBjYWxsIGFuZCBjcHVfYWRkciBhbmQKK2RtYV9oYW5kbGUgYXJlIHRoZSB2YWx1ZXMgZG1hX2FsbG9jX2NvaGVyZW50KCkgcmV0dXJuZWQgdG8geW91LgorVGhpcyBmdW5jdGlvbiBtYXkgbm90IGJlIGNhbGxlZCBpbiBpbnRlcnJ1cHQgY29udGV4dC4KKworSWYgeW91ciBkcml2ZXIgbmVlZHMgbG90cyBvZiBzbWFsbGVyIG1lbW9yeSByZWdpb25zLCB5b3UgY2FuIHdyaXRlCitjdXN0b20gY29kZSB0byBzdWJkaXZpZGUgcGFnZXMgcmV0dXJuZWQgYnkgZG1hX2FsbG9jX2NvaGVyZW50KCksCitvciB5b3UgY2FuIHVzZSB0aGUgZG1hX3Bvb2wgQVBJIHRvIGRvIHRoYXQuICBBIGRtYV9wb29sIGlzIGxpa2UKK2Ega21lbV9jYWNoZSwgYnV0IGl0IHVzZXMgZG1hX2FsbG9jX2NvaGVyZW50KCksIG5vdCBfX2dldF9mcmVlX3BhZ2VzKCkuCitBbHNvLCBpdCB1bmRlcnN0YW5kcyBjb21tb24gaGFyZHdhcmUgY29uc3RyYWludHMgZm9yIGFsaWdubWVudCwKK2xpa2UgcXVldWUgaGVhZHMgbmVlZGluZyB0byBiZSBhbGlnbmVkIG9uIE4gYnl0ZSBib3VuZGFyaWVzLgorCitDcmVhdGUgYSBkbWFfcG9vbCBsaWtlIHRoaXM6CisKKwlzdHJ1Y3QgZG1hX3Bvb2wgKnBvb2w7CisKKwlwb29sID0gZG1hX3Bvb2xfY3JlYXRlKG5hbWUsIGRldiwgc2l6ZSwgYWxpZ24sIGJvdW5kYXJ5KTsKKworVGhlICJuYW1lIiBpcyBmb3IgZGlhZ25vc3RpY3MgKGxpa2UgYSBrbWVtX2NhY2hlIG5hbWUpOyBkZXYgYW5kIHNpemUKK2FyZSBhcyBhYm92ZS4gIFRoZSBkZXZpY2UncyBoYXJkd2FyZSBhbGlnbm1lbnQgcmVxdWlyZW1lbnQgZm9yIHRoaXMKK3R5cGUgb2YgZGF0YSBpcyAiYWxpZ24iICh3aGljaCBpcyBleHByZXNzZWQgaW4gYnl0ZXMsIGFuZCBtdXN0IGJlIGEKK3Bvd2VyIG9mIHR3bykuICBJZiB5b3VyIGRldmljZSBoYXMgbm8gYm91bmRhcnkgY3Jvc3NpbmcgcmVzdHJpY3Rpb25zLAorcGFzcyAwIGZvciBib3VuZGFyeTsgcGFzc2luZyA0MDk2IHNheXMgbWVtb3J5IGFsbG9jYXRlZCBmcm9tIHRoaXMgcG9vbAorbXVzdCBub3QgY3Jvc3MgNEtCeXRlIGJvdW5kYXJpZXMgKGJ1dCBhdCB0aGF0IHRpbWUgaXQgbWF5IGJlIGJldHRlciB0bwordXNlIGRtYV9hbGxvY19jb2hlcmVudCgpIGRpcmVjdGx5IGluc3RlYWQpLgorCitBbGxvY2F0ZSBtZW1vcnkgZnJvbSBhIERNQSBwb29sIGxpa2UgdGhpczoKKworCWNwdV9hZGRyID0gZG1hX3Bvb2xfYWxsb2MocG9vbCwgZmxhZ3MsICZkbWFfaGFuZGxlKTsKKworZmxhZ3MgYXJlIEdGUF9LRVJORUwgaWYgYmxvY2tpbmcgaXMgcGVybWl0dGVkIChub3QgaW5faW50ZXJydXB0IG5vcgoraG9sZGluZyBTTVAgbG9ja3MpLCBHRlBfQVRPTUlDIG90aGVyd2lzZS4gIExpa2UgZG1hX2FsbG9jX2NvaGVyZW50KCksCit0aGlzIHJldHVybnMgdHdvIHZhbHVlcywgY3B1X2FkZHIgYW5kIGRtYV9oYW5kbGUuCisKK0ZyZWUgbWVtb3J5IHRoYXQgd2FzIGFsbG9jYXRlZCBmcm9tIGEgZG1hX3Bvb2wgbGlrZSB0aGlzOgorCisJZG1hX3Bvb2xfZnJlZShwb29sLCBjcHVfYWRkciwgZG1hX2hhbmRsZSk7CisKK3doZXJlIHBvb2wgaXMgd2hhdCB5b3UgcGFzc2VkIHRvIGRtYV9wb29sX2FsbG9jKCksIGFuZCBjcHVfYWRkciBhbmQKK2RtYV9oYW5kbGUgYXJlIHRoZSB2YWx1ZXMgZG1hX3Bvb2xfYWxsb2MoKSByZXR1cm5lZC4gVGhpcyBmdW5jdGlvbgorbWF5IGJlIGNhbGxlZCBpbiBpbnRlcnJ1cHQgY29udGV4dC4KKworRGVzdHJveSBhIGRtYV9wb29sIGJ5IGNhbGxpbmc6CisKKwlkbWFfcG9vbF9kZXN0cm95KHBvb2wpOworCitNYWtlIHN1cmUgeW91J3ZlIGNhbGxlZCBkbWFfcG9vbF9mcmVlKCkgZm9yIGFsbCBtZW1vcnkgYWxsb2NhdGVkCitmcm9tIGEgcG9vbCBiZWZvcmUgeW91IGRlc3Ryb3kgdGhlIHBvb2wuIFRoaXMgZnVuY3Rpb24gbWF5IG5vdAorYmUgY2FsbGVkIGluIGludGVycnVwdCBjb250ZXh0LgorCisJCQlETUEgRGlyZWN0aW9uCisKK1RoZSBpbnRlcmZhY2VzIGRlc2NyaWJlZCBpbiBzdWJzZXF1ZW50IHBvcnRpb25zIG9mIHRoaXMgZG9jdW1lbnQKK3Rha2UgYSBETUEgZGlyZWN0aW9uIGFyZ3VtZW50LCB3aGljaCBpcyBhbiBpbnRlZ2VyIGFuZCB0YWtlcyBvbgorb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorCisgRE1BX0JJRElSRUNUSU9OQUwKKyBETUFfVE9fREVWSUNFCisgRE1BX0ZST01fREVWSUNFCisgRE1BX05PTkUKKworWW91IHNob3VsZCBwcm92aWRlIHRoZSBleGFjdCBETUEgZGlyZWN0aW9uIGlmIHlvdSBrbm93IGl0LgorCitETUFfVE9fREVWSUNFIG1lYW5zICJmcm9tIG1haW4gbWVtb3J5IHRvIHRoZSBkZXZpY2UiCitETUFfRlJPTV9ERVZJQ0UgbWVhbnMgImZyb20gdGhlIGRldmljZSB0byBtYWluIG1lbW9yeSIKK0l0IGlzIHRoZSBkaXJlY3Rpb24gaW4gd2hpY2ggdGhlIGRhdGEgbW92ZXMgZHVyaW5nIHRoZSBETUEKK3RyYW5zZmVyLgorCitZb3UgYXJlIF9zdHJvbmdseV8gZW5jb3VyYWdlZCB0byBzcGVjaWZ5IHRoaXMgYXMgcHJlY2lzZWx5CithcyB5b3UgcG9zc2libHkgY2FuLgorCitJZiB5b3UgYWJzb2x1dGVseSBjYW5ub3Qga25vdyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBETUEgdHJhbnNmZXIsCitzcGVjaWZ5IERNQV9CSURJUkVDVElPTkFMLiAgSXQgbWVhbnMgdGhhdCB0aGUgRE1BIGNhbiBnbyBpbgorZWl0aGVyIGRpcmVjdGlvbi4gIFRoZSBwbGF0Zm9ybSBndWFyYW50ZWVzIHRoYXQgeW91IG1heSBsZWdhbGx5CitzcGVjaWZ5IHRoaXMsIGFuZCB0aGF0IGl0IHdpbGwgd29yaywgYnV0IHRoaXMgbWF5IGJlIGF0IHRoZQorY29zdCBvZiBwZXJmb3JtYW5jZSBmb3IgZXhhbXBsZS4KKworVGhlIHZhbHVlIERNQV9OT05FIGlzIHRvIGJlIHVzZWQgZm9yIGRlYnVnZ2luZy4gIE9uZSBjYW4KK2hvbGQgdGhpcyBpbiBhIGRhdGEgc3RydWN0dXJlIGJlZm9yZSB5b3UgY29tZSB0byBrbm93IHRoZQorcHJlY2lzZSBkaXJlY3Rpb24sIGFuZCB0aGlzIHdpbGwgaGVscCBjYXRjaCBjYXNlcyB3aGVyZSB5b3VyCitkaXJlY3Rpb24gdHJhY2tpbmcgbG9naWMgaGFzIGZhaWxlZCB0byBzZXQgdGhpbmdzIHVwIHByb3Blcmx5LgorCitBbm90aGVyIGFkdmFudGFnZSBvZiBzcGVjaWZ5aW5nIHRoaXMgdmFsdWUgcHJlY2lzZWx5IChvdXRzaWRlIG9mCitwb3RlbnRpYWwgcGxhdGZvcm0tc3BlY2lmaWMgb3B0aW1pemF0aW9ucyBvZiBzdWNoKSBpcyBmb3IgZGVidWdnaW5nLgorU29tZSBwbGF0Zm9ybXMgYWN0dWFsbHkgaGF2ZSBhIHdyaXRlIHBlcm1pc3Npb24gYm9vbGVhbiB3aGljaCBETUEKK21hcHBpbmdzIGNhbiBiZSBtYXJrZWQgd2l0aCwgbXVjaCBsaWtlIHBhZ2UgcHJvdGVjdGlvbnMgaW4gdGhlIHVzZXIKK3Byb2dyYW0gYWRkcmVzcyBzcGFjZS4gIFN1Y2ggcGxhdGZvcm1zIGNhbiBhbmQgZG8gcmVwb3J0IGVycm9ycyBpbiB0aGUKK2tlcm5lbCBsb2dzIHdoZW4gdGhlIERNQSBjb250cm9sbGVyIGhhcmR3YXJlIGRldGVjdHMgdmlvbGF0aW9uIG9mIHRoZQorcGVybWlzc2lvbiBzZXR0aW5nLgorCitPbmx5IHN0cmVhbWluZyBtYXBwaW5ncyBzcGVjaWZ5IGEgZGlyZWN0aW9uLCBjb25zaXN0ZW50IG1hcHBpbmdzCitpbXBsaWNpdGx5IGhhdmUgYSBkaXJlY3Rpb24gYXR0cmlidXRlIHNldHRpbmcgb2YKK0RNQV9CSURJUkVDVElPTkFMLgorCitUaGUgU0NTSSBzdWJzeXN0ZW0gdGVsbHMgeW91IHRoZSBkaXJlY3Rpb24gdG8gdXNlIGluIHRoZQorJ3NjX2RhdGFfZGlyZWN0aW9uJyBtZW1iZXIgb2YgdGhlIFNDU0kgY29tbWFuZCB5b3VyIGRyaXZlciBpcword29ya2luZyBvbi4KKworRm9yIE5ldHdvcmtpbmcgZHJpdmVycywgaXQncyBhIHJhdGhlciBzaW1wbGUgYWZmYWlyLiAgRm9yIHRyYW5zbWl0CitwYWNrZXRzLCBtYXAvdW5tYXAgdGhlbSB3aXRoIHRoZSBETUFfVE9fREVWSUNFIGRpcmVjdGlvbgorc3BlY2lmaWVyLiAgRm9yIHJlY2VpdmUgcGFja2V0cywganVzdCB0aGUgb3Bwb3NpdGUsIG1hcC91bm1hcCB0aGVtCit3aXRoIHRoZSBETUFfRlJPTV9ERVZJQ0UgZGlyZWN0aW9uIHNwZWNpZmllci4KKworCQkgIFVzaW5nIFN0cmVhbWluZyBETUEgbWFwcGluZ3MKKworVGhlIHN0cmVhbWluZyBETUEgbWFwcGluZyByb3V0aW5lcyBjYW4gYmUgY2FsbGVkIGZyb20gaW50ZXJydXB0Citjb250ZXh0LiAgVGhlcmUgYXJlIHR3byB2ZXJzaW9ucyBvZiBlYWNoIG1hcC91bm1hcCwgb25lIHdoaWNoIHdpbGwKK21hcC91bm1hcCBhIHNpbmdsZSBtZW1vcnkgcmVnaW9uLCBhbmQgb25lIHdoaWNoIHdpbGwgbWFwL3VubWFwIGEKK3NjYXR0ZXJsaXN0LgorCitUbyBtYXAgYSBzaW5nbGUgcmVnaW9uLCB5b3UgZG86CisKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmbXlfZGV2LT5kZXY7CisJZG1hX2FkZHJfdCBkbWFfaGFuZGxlOworCXZvaWQgKmFkZHIgPSBidWZmZXItPnB0cjsKKwlzaXplX3Qgc2l6ZSA9IGJ1ZmZlci0+bGVuOworCisJZG1hX2hhbmRsZSA9IGRtYV9tYXBfc2luZ2xlKGRldiwgYWRkciwgc2l6ZSwgZGlyZWN0aW9uKTsKKwlpZiAoZG1hX21hcHBpbmdfZXJyb3IoZGV2LCBkbWFfaGFuZGxlKSkgeworCQkvKgorCQkgKiByZWR1Y2UgY3VycmVudCBETUEgbWFwcGluZyB1c2FnZSwKKwkJICogZGVsYXkgYW5kIHRyeSBhZ2FpbiBsYXRlciBvcgorCQkgKiByZXNldCBkcml2ZXIuCisJCSAqLworCQlnb3RvIG1hcF9lcnJvcl9oYW5kbGluZzsKKwl9CisKK2FuZCB0byB1bm1hcCBpdDoKKworCWRtYV91bm1hcF9zaW5nbGUoZGV2LCBkbWFfaGFuZGxlLCBzaXplLCBkaXJlY3Rpb24pOworCitZb3Ugc2hvdWxkIGNhbGwgZG1hX21hcHBpbmdfZXJyb3IoKSBhcyBkbWFfbWFwX3NpbmdsZSgpIGNvdWxkIGZhaWwgYW5kIHJldHVybgorZXJyb3IuIE5vdCBhbGwgRE1BIGltcGxlbWVudGF0aW9ucyBzdXBwb3J0IHRoZSBkbWFfbWFwcGluZ19lcnJvcigpIGludGVyZmFjZS4KK0hvd2V2ZXIsIGl0IGlzIGEgZ29vZCBwcmFjdGljZSB0byBjYWxsIGRtYV9tYXBwaW5nX2Vycm9yKCkgaW50ZXJmYWNlLCB3aGljaAord2lsbCBpbnZva2UgdGhlIGdlbmVyaWMgbWFwcGluZyBlcnJvciBjaGVjayBpbnRlcmZhY2UuIERvaW5nIHNvIHdpbGwgZW5zdXJlCit0aGF0IHRoZSBtYXBwaW5nIGNvZGUgd2lsbCB3b3JrIGNvcnJlY3RseSBvbiBhbGwgRE1BIGltcGxlbWVudGF0aW9ucyB3aXRob3V0CithbnkgZGVwZW5kZW5jeSBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uLiBVc2luZyB0aGUKK3JldHVybmVkIGFkZHJlc3Mgd2l0aG91dCBjaGVja2luZyBmb3IgZXJyb3JzIGNvdWxkIHJlc3VsdCBpbiBmYWlsdXJlcyByYW5naW5nCitmcm9tIHBhbmljcyB0byBzaWxlbnQgZGF0YSBjb3JydXB0aW9uLiBBIGNvdXBsZSBvZiBleGFtcGxlcyBvZiBpbmNvcnJlY3Qgd2F5cwordG8gY2hlY2sgZm9yIGVycm9ycyB0aGF0IG1ha2UgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHVuZGVybHlpbmcgRE1BCitpbXBsZW1lbnRhdGlvbiBhcmUgYXMgZm9sbG93cyBhbmQgdGhlc2UgYXJlIGFwcGxpY2FibGUgdG8gZG1hX21hcF9wYWdlKCkgYXMKK3dlbGwuCisKK0luY29ycmVjdCBleGFtcGxlIDE6CisJZG1hX2FkZHJfdCBkbWFfaGFuZGxlOworCisJZG1hX2hhbmRsZSA9IGRtYV9tYXBfc2luZ2xlKGRldiwgYWRkciwgc2l6ZSwgZGlyZWN0aW9uKTsKKwlpZiAoKGRtYV9oYW5kbGUgJiAweGZmZmYgIT0gMCkgfHwgKGRtYV9oYW5kbGUgPj0gMHgxMDAwMDAwKSkgeworCQlnb3RvIG1hcF9lcnJvcjsKKwl9CisKK0luY29ycmVjdCBleGFtcGxlIDI6CisJZG1hX2FkZHJfdCBkbWFfaGFuZGxlOworCisJZG1hX2hhbmRsZSA9IGRtYV9tYXBfc2luZ2xlKGRldiwgYWRkciwgc2l6ZSwgZGlyZWN0aW9uKTsKKwlpZiAoZG1hX2hhbmRsZSA9PSBETUFfRVJST1JfQ09ERSkgeworCQlnb3RvIG1hcF9lcnJvcjsKKwl9CisKK1lvdSBzaG91bGQgY2FsbCBkbWFfdW5tYXBfc2luZ2xlKCkgd2hlbiB0aGUgRE1BIGFjdGl2aXR5IGlzIGZpbmlzaGVkLCBlLmcuLAorZnJvbSB0aGUgaW50ZXJydXB0IHdoaWNoIHRvbGQgeW91IHRoYXQgdGhlIERNQSB0cmFuc2ZlciBpcyBkb25lLgorCitVc2luZyBDUFUgcG9pbnRlcnMgbGlrZSB0aGlzIGZvciBzaW5nbGUgbWFwcGluZ3MgaGFzIGEgZGlzYWR2YW50YWdlOgoreW91IGNhbm5vdCByZWZlcmVuY2UgSElHSE1FTSBtZW1vcnkgaW4gdGhpcyB3YXkuICBUaHVzLCB0aGVyZSBpcyBhCittYXAvdW5tYXAgaW50ZXJmYWNlIHBhaXIgYWtpbiB0byBkbWFfe21hcCx1bm1hcH1fc2luZ2xlKCkuICBUaGVzZQoraW50ZXJmYWNlcyBkZWFsIHdpdGggcGFnZS9vZmZzZXQgcGFpcnMgaW5zdGVhZCBvZiBDUFUgcG9pbnRlcnMuCitTcGVjaWZpY2FsbHk6CisKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmbXlfZGV2LT5kZXY7CisJZG1hX2FkZHJfdCBkbWFfaGFuZGxlOworCXN0cnVjdCBwYWdlICpwYWdlID0gYnVmZmVyLT5wYWdlOworCXVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gYnVmZmVyLT5vZmZzZXQ7CisJc2l6ZV90IHNpemUgPSBidWZmZXItPmxlbjsKKworCWRtYV9oYW5kbGUgPSBkbWFfbWFwX3BhZ2UoZGV2LCBwYWdlLCBvZmZzZXQsIHNpemUsIGRpcmVjdGlvbik7CisJaWYgKGRtYV9tYXBwaW5nX2Vycm9yKGRldiwgZG1hX2hhbmRsZSkpIHsKKwkJLyoKKwkJICogcmVkdWNlIGN1cnJlbnQgRE1BIG1hcHBpbmcgdXNhZ2UsCisJCSAqIGRlbGF5IGFuZCB0cnkgYWdhaW4gbGF0ZXIgb3IKKwkJICogcmVzZXQgZHJpdmVyLgorCQkgKi8KKwkJZ290byBtYXBfZXJyb3JfaGFuZGxpbmc7CisJfQorCisJLi4uCisKKwlkbWFfdW5tYXBfcGFnZShkZXYsIGRtYV9oYW5kbGUsIHNpemUsIGRpcmVjdGlvbik7CisKK0hlcmUsICJvZmZzZXQiIG1lYW5zIGJ5dGUgb2Zmc2V0IHdpdGhpbiB0aGUgZ2l2ZW4gcGFnZS4KKworWW91IHNob3VsZCBjYWxsIGRtYV9tYXBwaW5nX2Vycm9yKCkgYXMgZG1hX21hcF9wYWdlKCkgY291bGQgZmFpbCBhbmQgcmV0dXJuCitlcnJvciBhcyBvdXRsaW5lZCB1bmRlciB0aGUgZG1hX21hcF9zaW5nbGUoKSBkaXNjdXNzaW9uLgorCitZb3Ugc2hvdWxkIGNhbGwgZG1hX3VubWFwX3BhZ2UoKSB3aGVuIHRoZSBETUEgYWN0aXZpdHkgaXMgZmluaXNoZWQsIGUuZy4sCitmcm9tIHRoZSBpbnRlcnJ1cHQgd2hpY2ggdG9sZCB5b3UgdGhhdCB0aGUgRE1BIHRyYW5zZmVyIGlzIGRvbmUuCisKK1dpdGggc2NhdHRlcmxpc3RzLCB5b3UgbWFwIGEgcmVnaW9uIGdhdGhlcmVkIGZyb20gc2V2ZXJhbCByZWdpb25zIGJ5OgorCisJaW50IGksIGNvdW50ID0gZG1hX21hcF9zZyhkZXYsIHNnbGlzdCwgbmVudHMsIGRpcmVjdGlvbik7CisJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKKworCWZvcl9lYWNoX3NnKHNnbGlzdCwgc2csIGNvdW50LCBpKSB7CisJCWh3X2FkZHJlc3NbaV0gPSBzZ19kbWFfYWRkcmVzcyhzZyk7CisJCWh3X2xlbltpXSA9IHNnX2RtYV9sZW4oc2cpOworCX0KKword2hlcmUgbmVudHMgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBzZ2xpc3QuCisKK1RoZSBpbXBsZW1lbnRhdGlvbiBpcyBmcmVlIHRvIG1lcmdlIHNldmVyYWwgY29uc2VjdXRpdmUgc2dsaXN0IGVudHJpZXMKK2ludG8gb25lIChlLmcuIGlmIERNQSBtYXBwaW5nIGlzIGRvbmUgd2l0aCBQQUdFX1NJWkUgZ3JhbnVsYXJpdHksIGFueQorY29uc2VjdXRpdmUgc2dsaXN0IGVudHJpZXMgY2FuIGJlIG1lcmdlZCBpbnRvIG9uZSBwcm92aWRlZCB0aGUgZmlyc3Qgb25lCitlbmRzIGFuZCB0aGUgc2Vjb25kIG9uZSBzdGFydHMgb24gYSBwYWdlIGJvdW5kYXJ5IC0gaW4gZmFjdCB0aGlzIGlzIGEgaHVnZQorYWR2YW50YWdlIGZvciBjYXJkcyB3aGljaCBlaXRoZXIgY2Fubm90IGRvIHNjYXR0ZXItZ2F0aGVyIG9yIGhhdmUgdmVyeQorbGltaXRlZCBudW1iZXIgb2Ygc2NhdHRlci1nYXRoZXIgZW50cmllcykgYW5kIHJldHVybnMgdGhlIGFjdHVhbCBudW1iZXIKK29mIHNnIGVudHJpZXMgaXQgbWFwcGVkIHRoZW0gdG8uIE9uIGZhaWx1cmUgMCBpcyByZXR1cm5lZC4KKworVGhlbiB5b3Ugc2hvdWxkIGxvb3AgY291bnQgdGltZXMgKG5vdGU6IHRoaXMgY2FuIGJlIGxlc3MgdGhhbiBuZW50cyB0aW1lcykKK2FuZCB1c2Ugc2dfZG1hX2FkZHJlc3MoKSBhbmQgc2dfZG1hX2xlbigpIG1hY3JvcyB3aGVyZSB5b3UgcHJldmlvdXNseQorYWNjZXNzZWQgc2ctPmFkZHJlc3MgYW5kIHNnLT5sZW5ndGggYXMgc2hvd24gYWJvdmUuCisKK1RvIHVubWFwIGEgc2NhdHRlcmxpc3QsIGp1c3QgY2FsbDoKKworCWRtYV91bm1hcF9zZyhkZXYsIHNnbGlzdCwgbmVudHMsIGRpcmVjdGlvbik7CisKK0FnYWluLCBtYWtlIHN1cmUgRE1BIGFjdGl2aXR5IGhhcyBhbHJlYWR5IGZpbmlzaGVkLgorCitQTEVBU0UgTk9URTogIFRoZSAnbmVudHMnIGFyZ3VtZW50IHRvIHRoZSBkbWFfdW5tYXBfc2cgY2FsbCBtdXN0IGJlCisgICAgICAgICAgICAgIHRoZSBfc2FtZV8gb25lIHlvdSBwYXNzZWQgaW50byB0aGUgZG1hX21hcF9zZyBjYWxsLAorCSAgICAgIGl0IHNob3VsZCBfTk9UXyBiZSB0aGUgJ2NvdW50JyB2YWx1ZSBfcmV0dXJuZWRfIGZyb20gdGhlCisgICAgICAgICAgICAgIGRtYV9tYXBfc2cgY2FsbC4KKworRXZlcnkgZG1hX21hcF97c2luZ2xlLHNnfSgpIGNhbGwgc2hvdWxkIGhhdmUgaXRzIGRtYV91bm1hcF97c2luZ2xlLHNnfSgpCitjb3VudGVycGFydCwgYmVjYXVzZSB0aGUgRE1BIGFkZHJlc3Mgc3BhY2UgaXMgYSBzaGFyZWQgcmVzb3VyY2UgYW5kCit5b3UgY291bGQgcmVuZGVyIHRoZSBtYWNoaW5lIHVudXNhYmxlIGJ5IGNvbnN1bWluZyBhbGwgRE1BIGFkZHJlc3Nlcy4KKworSWYgeW91IG5lZWQgdG8gdXNlIHRoZSBzYW1lIHN0cmVhbWluZyBETUEgcmVnaW9uIG11bHRpcGxlIHRpbWVzIGFuZCB0b3VjaAordGhlIGRhdGEgaW4gYmV0d2VlbiB0aGUgRE1BIHRyYW5zZmVycywgdGhlIGJ1ZmZlciBuZWVkcyB0byBiZSBzeW5jZWQKK3Byb3Blcmx5IGluIG9yZGVyIGZvciB0aGUgQ1BVIGFuZCBkZXZpY2UgdG8gc2VlIHRoZSBtb3N0IHVwLXRvLWRhdGUgYW5kCitjb3JyZWN0IGNvcHkgb2YgdGhlIERNQSBidWZmZXIuCisKK1NvLCBmaXJzdGx5LCBqdXN0IG1hcCBpdCB3aXRoIGRtYV9tYXBfe3NpbmdsZSxzZ30oKSwgYW5kIGFmdGVyIGVhY2ggRE1BCit0cmFuc2ZlciBjYWxsIGVpdGhlcjoKKworCWRtYV9zeW5jX3NpbmdsZV9mb3JfY3B1KGRldiwgZG1hX2hhbmRsZSwgc2l6ZSwgZGlyZWN0aW9uKTsKKworb3I6CisKKwlkbWFfc3luY19zZ19mb3JfY3B1KGRldiwgc2dsaXN0LCBuZW50cywgZGlyZWN0aW9uKTsKKworYXMgYXBwcm9wcmlhdGUuCisKK1RoZW4sIGlmIHlvdSB3aXNoIHRvIGxldCB0aGUgZGV2aWNlIGdldCBhdCB0aGUgRE1BIGFyZWEgYWdhaW4sCitmaW5pc2ggYWNjZXNzaW5nIHRoZSBkYXRhIHdpdGggdGhlIENQVSwgYW5kIHRoZW4gYmVmb3JlIGFjdHVhbGx5CitnaXZpbmcgdGhlIGJ1ZmZlciB0byB0aGUgaGFyZHdhcmUgY2FsbCBlaXRoZXI6CisKKwlkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShkZXYsIGRtYV9oYW5kbGUsIHNpemUsIGRpcmVjdGlvbik7CisKK29yOgorCisJZG1hX3N5bmNfc2dfZm9yX2RldmljZShkZXYsIHNnbGlzdCwgbmVudHMsIGRpcmVjdGlvbik7CisKK2FzIGFwcHJvcHJpYXRlLgorCitQTEVBU0UgTk9URTogIFRoZSAnbmVudHMnIGFyZ3VtZW50IHRvIGRtYV9zeW5jX3NnX2Zvcl9jcHUoKSBhbmQKKwkgICAgICBkbWFfc3luY19zZ19mb3JfZGV2aWNlKCkgbXVzdCBiZSB0aGUgc2FtZSBwYXNzZWQgdG8KKwkgICAgICBkbWFfbWFwX3NnKCkuIEl0IGlzIF9OT1RfIHRoZSBjb3VudCByZXR1cm5lZCBieQorCSAgICAgIGRtYV9tYXBfc2coKS4KKworQWZ0ZXIgdGhlIGxhc3QgRE1BIHRyYW5zZmVyIGNhbGwgb25lIG9mIHRoZSBETUEgdW5tYXAgcm91dGluZXMKK2RtYV91bm1hcF97c2luZ2xlLHNnfSgpLiBJZiB5b3UgZG9uJ3QgdG91Y2ggdGhlIGRhdGEgZnJvbSB0aGUgZmlyc3QKK2RtYV9tYXBfKigpIGNhbGwgdGlsbCBkbWFfdW5tYXBfKigpLCB0aGVuIHlvdSBkb24ndCBoYXZlIHRvIGNhbGwgdGhlCitkbWFfc3luY18qKCkgcm91dGluZXMgYXQgYWxsLgorCitIZXJlIGlzIHBzZXVkbyBjb2RlIHdoaWNoIHNob3dzIGEgc2l0dWF0aW9uIGluIHdoaWNoIHlvdSB3b3VsZCBuZWVkCit0byB1c2UgdGhlIGRtYV9zeW5jXyooKSBpbnRlcmZhY2VzLgorCisJbXlfY2FyZF9zZXR1cF9yZWNlaXZlX2J1ZmZlcihzdHJ1Y3QgbXlfY2FyZCAqY3AsIGNoYXIgKmJ1ZmZlciwgaW50IGxlbikKKwl7CisJCWRtYV9hZGRyX3QgbWFwcGluZzsKKworCQltYXBwaW5nID0gZG1hX21hcF9zaW5nbGUoY3AtPmRldiwgYnVmZmVyLCBsZW4sIERNQV9GUk9NX0RFVklDRSk7CisJCWlmIChkbWFfbWFwcGluZ19lcnJvcihjcC0+ZGV2LCBkbWFfaGFuZGxlKSkgeworCQkJLyoKKwkJCSAqIHJlZHVjZSBjdXJyZW50IERNQSBtYXBwaW5nIHVzYWdlLAorCQkJICogZGVsYXkgYW5kIHRyeSBhZ2FpbiBsYXRlciBvcgorCQkJICogcmVzZXQgZHJpdmVyLgorCQkJICovCisJCQlnb3RvIG1hcF9lcnJvcl9oYW5kbGluZzsKKwkJfQorCisJCWNwLT5yeF9idWYgPSBidWZmZXI7CisJCWNwLT5yeF9sZW4gPSBsZW47CisJCWNwLT5yeF9kbWEgPSBtYXBwaW5nOworCisJCWdpdmVfcnhfYnVmX3RvX2NhcmQoY3ApOworCX0KKworCS4uLgorCisJbXlfY2FyZF9pbnRlcnJ1cHRfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZpZCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCisJeworCQlzdHJ1Y3QgbXlfY2FyZCAqY3AgPSBkZXZpZDsKKworCQkuLi4KKwkJaWYgKHJlYWRfY2FyZF9zdGF0dXMoY3ApID09IFJYX0JVRl9UUkFOU0ZFUlJFRCkgeworCQkJc3RydWN0IG15X2NhcmRfaGVhZGVyICpocDsKKworCQkJLyogRXhhbWluZSB0aGUgaGVhZGVyIHRvIHNlZSBpZiB3ZSB3aXNoCisJCQkgKiB0byBhY2NlcHQgdGhlIGRhdGEuICBCdXQgc3luY2hyb25pemUKKwkJCSAqIHRoZSBETUEgdHJhbnNmZXIgd2l0aCB0aGUgQ1BVIGZpcnN0CisJCQkgKiBzbyB0aGF0IHdlIHNlZSB1cGRhdGVkIGNvbnRlbnRzLgorCQkJICovCisJCQlkbWFfc3luY19zaW5nbGVfZm9yX2NwdSgmY3AtPmRldiwgY3AtPnJ4X2RtYSwKKwkJCQkJCWNwLT5yeF9sZW4sCisJCQkJCQlETUFfRlJPTV9ERVZJQ0UpOworCisJCQkvKiBOb3cgaXQgaXMgc2FmZSB0byBleGFtaW5lIHRoZSBidWZmZXIuICovCisJCQlocCA9IChzdHJ1Y3QgbXlfY2FyZF9oZWFkZXIgKikgY3AtPnJ4X2J1ZjsKKwkJCWlmIChoZWFkZXJfaXNfb2soaHApKSB7CisJCQkJZG1hX3VubWFwX3NpbmdsZSgmY3AtPmRldiwgY3AtPnJ4X2RtYSwgY3AtPnJ4X2xlbiwKKwkJCQkJCSBETUFfRlJPTV9ERVZJQ0UpOworCQkJCXBhc3NfdG9fdXBwZXJfbGF5ZXJzKGNwLT5yeF9idWYpOworCQkJCW1ha2VfYW5kX3NldHVwX25ld19yeF9idWYoY3ApOworCQkJfSBlbHNlIHsKKwkJCQkvKiBDUFUgc2hvdWxkIG5vdCB3cml0ZSB0bworCQkJCSAqIERNQV9GUk9NX0RFVklDRS1tYXBwZWQgYXJlYSwKKwkJCQkgKiBzbyBkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZSgpIGlzCisJCQkJICogbm90IG5lZWRlZCBoZXJlLiBJdCB3b3VsZCBiZSByZXF1aXJlZAorCQkJCSAqIGZvciBETUFfQklESVJFQ1RJT05BTCBtYXBwaW5nIGlmCisJCQkJICogdGhlIG1lbW9yeSB3YXMgbW9kaWZpZWQuCisJCQkJICovCisJCQkJZ2l2ZV9yeF9idWZfdG9fY2FyZChjcCk7CisJCQl9CisJCX0KKwl9CisKK0RyaXZlcnMgY29udmVydGVkIGZ1bGx5IHRvIHRoaXMgaW50ZXJmYWNlIHNob3VsZCBub3QgdXNlIHZpcnRfdG9fYnVzKCkgYW55Citsb25nZXIsIG5vciBzaG91bGQgdGhleSB1c2UgYnVzX3RvX3ZpcnQoKS4gU29tZSBkcml2ZXJzIGhhdmUgdG8gYmUgY2hhbmdlZCBhCitsaXR0bGUgYml0LCBiZWNhdXNlIHRoZXJlIGlzIG5vIGxvbmdlciBhbiBlcXVpdmFsZW50IHRvIGJ1c190b192aXJ0KCkgaW4gdGhlCitkeW5hbWljIERNQSBtYXBwaW5nIHNjaGVtZSAtIHlvdSBoYXZlIHRvIGFsd2F5cyBzdG9yZSB0aGUgRE1BIGFkZHJlc3NlcworcmV0dXJuZWQgYnkgdGhlIGRtYV9hbGxvY19jb2hlcmVudCgpLCBkbWFfcG9vbF9hbGxvYygpLCBhbmQgZG1hX21hcF9zaW5nbGUoKQorY2FsbHMgKGRtYV9tYXBfc2coKSBzdG9yZXMgdGhlbSBpbiB0aGUgc2NhdHRlcmxpc3QgaXRzZWxmIGlmIHRoZSBwbGF0Zm9ybQorc3VwcG9ydHMgZHluYW1pYyBETUEgbWFwcGluZyBpbiBoYXJkd2FyZSkgaW4geW91ciBkcml2ZXIgc3RydWN0dXJlcyBhbmQvb3IKK2luIHRoZSBjYXJkIHJlZ2lzdGVycy4KKworQWxsIGRyaXZlcnMgc2hvdWxkIGJlIHVzaW5nIHRoZXNlIGludGVyZmFjZXMgd2l0aCBubyBleGNlcHRpb25zLiAgSXQKK2lzIHBsYW5uZWQgdG8gY29tcGxldGVseSByZW1vdmUgdmlydF90b19idXMoKSBhbmQgYnVzX3RvX3ZpcnQoKSBhcwordGhleSBhcmUgZW50aXJlbHkgZGVwcmVjYXRlZC4gIFNvbWUgcG9ydHMgYWxyZWFkeSBkbyBub3QgcHJvdmlkZSB0aGVzZQorYXMgaXQgaXMgaW1wb3NzaWJsZSB0byBjb3JyZWN0bHkgc3VwcG9ydCB0aGVtLgorCisJCQlIYW5kbGluZyBFcnJvcnMKKworRE1BIGFkZHJlc3Mgc3BhY2UgaXMgbGltaXRlZCBvbiBzb21lIGFyY2hpdGVjdHVyZXMgYW5kIGFuIGFsbG9jYXRpb24KK2ZhaWx1cmUgY2FuIGJlIGRldGVybWluZWQgYnk6CisKKy0gY2hlY2tpbmcgaWYgZG1hX2FsbG9jX2NvaGVyZW50KCkgcmV0dXJucyBOVUxMIG9yIGRtYV9tYXBfc2cgcmV0dXJucyAwCisKKy0gY2hlY2tpbmcgdGhlIGRtYV9hZGRyX3QgcmV0dXJuZWQgZnJvbSBkbWFfbWFwX3NpbmdsZSgpIGFuZCBkbWFfbWFwX3BhZ2UoKQorICBieSB1c2luZyBkbWFfbWFwcGluZ19lcnJvcigpOgorCisJZG1hX2FkZHJfdCBkbWFfaGFuZGxlOworCisJZG1hX2hhbmRsZSA9IGRtYV9tYXBfc2luZ2xlKGRldiwgYWRkciwgc2l6ZSwgZGlyZWN0aW9uKTsKKwlpZiAoZG1hX21hcHBpbmdfZXJyb3IoZGV2LCBkbWFfaGFuZGxlKSkgeworCQkvKgorCQkgKiByZWR1Y2UgY3VycmVudCBETUEgbWFwcGluZyB1c2FnZSwKKwkJICogZGVsYXkgYW5kIHRyeSBhZ2FpbiBsYXRlciBvcgorCQkgKiByZXNldCBkcml2ZXIuCisJCSAqLworCQlnb3RvIG1hcF9lcnJvcl9oYW5kbGluZzsKKwl9CisKKy0gdW5tYXAgcGFnZXMgdGhhdCBhcmUgYWxyZWFkeSBtYXBwZWQsIHdoZW4gbWFwcGluZyBlcnJvciBvY2N1cnMgaW4gdGhlIG1pZGRsZQorICBvZiBhIG11bHRpcGxlIHBhZ2UgbWFwcGluZyBhdHRlbXB0LiBUaGVzZSBleGFtcGxlIGFyZSBhcHBsaWNhYmxlIHRvCisgIGRtYV9tYXBfcGFnZSgpIGFzIHdlbGwuCisKK0V4YW1wbGUgMToKKwlkbWFfYWRkcl90IGRtYV9oYW5kbGUxOworCWRtYV9hZGRyX3QgZG1hX2hhbmRsZTI7CisKKwlkbWFfaGFuZGxlMSA9IGRtYV9tYXBfc2luZ2xlKGRldiwgYWRkciwgc2l6ZSwgZGlyZWN0aW9uKTsKKwlpZiAoZG1hX21hcHBpbmdfZXJyb3IoZGV2LCBkbWFfaGFuZGxlMSkpIHsKKwkJLyoKKwkJICogcmVkdWNlIGN1cnJlbnQgRE1BIG1hcHBpbmcgdXNhZ2UsCisJCSAqIGRlbGF5IGFuZCB0cnkgYWdhaW4gbGF0ZXIgb3IKKwkJICogcmVzZXQgZHJpdmVyLgorCQkgKi8KKwkJZ290byBtYXBfZXJyb3JfaGFuZGxpbmcxOworCX0KKwlkbWFfaGFuZGxlMiA9IGRtYV9tYXBfc2luZ2xlKGRldiwgYWRkciwgc2l6ZSwgZGlyZWN0aW9uKTsKKwlpZiAoZG1hX21hcHBpbmdfZXJyb3IoZGV2LCBkbWFfaGFuZGxlMikpIHsKKwkJLyoKKwkJICogcmVkdWNlIGN1cnJlbnQgRE1BIG1hcHBpbmcgdXNhZ2UsCisJCSAqIGRlbGF5IGFuZCB0cnkgYWdhaW4gbGF0ZXIgb3IKKwkJICogcmVzZXQgZHJpdmVyLgorCQkgKi8KKwkJZ290byBtYXBfZXJyb3JfaGFuZGxpbmcyOworCX0KKworCS4uLgorCisJbWFwX2Vycm9yX2hhbmRsaW5nMjoKKwkJZG1hX3VubWFwX3NpbmdsZShkbWFfaGFuZGxlMSk7CisJbWFwX2Vycm9yX2hhbmRsaW5nMToKKworRXhhbXBsZSAyOiAoaWYgYnVmZmVycyBhcmUgYWxsb2NhdGVkIGluIGEgbG9vcCwgdW5tYXAgYWxsIG1hcHBlZCBidWZmZXJzIHdoZW4KKwkgICAgbWFwcGluZyBlcnJvciBpcyBkZXRlY3RlZCBpbiB0aGUgbWlkZGxlKQorCisJZG1hX2FkZHJfdCBkbWFfYWRkcjsKKwlkbWFfYWRkcl90IGFycmF5W0RNQV9CVUZGRVJTXTsKKwlpbnQgc2F2ZV9pbmRleCA9IDA7CisKKwlmb3IgKGkgPSAwOyBpIDwgRE1BX0JVRkZFUlM7IGkrKykgeworCisJCS4uLgorCisJCWRtYV9hZGRyID0gZG1hX21hcF9zaW5nbGUoZGV2LCBhZGRyLCBzaXplLCBkaXJlY3Rpb24pOworCQlpZiAoZG1hX21hcHBpbmdfZXJyb3IoZGV2LCBkbWFfYWRkcikpIHsKKwkJCS8qCisJCQkgKiByZWR1Y2UgY3VycmVudCBETUEgbWFwcGluZyB1c2FnZSwKKwkJCSAqIGRlbGF5IGFuZCB0cnkgYWdhaW4gbGF0ZXIgb3IKKwkJCSAqIHJlc2V0IGRyaXZlci4KKwkJCSAqLworCQkJZ290byBtYXBfZXJyb3JfaGFuZGxpbmc7CisJCX0KKwkJYXJyYXlbaV0uZG1hX2FkZHIgPSBkbWFfYWRkcjsKKwkJc2F2ZV9pbmRleCsrOworCX0KKworCS4uLgorCisJbWFwX2Vycm9yX2hhbmRsaW5nOgorCisJZm9yIChpID0gMDsgaSA8IHNhdmVfaW5kZXg7IGkrKykgeworCisJCS4uLgorCisJCWRtYV91bm1hcF9zaW5nbGUoYXJyYXlbaV0uZG1hX2FkZHIpOworCX0KKworTmV0d29ya2luZyBkcml2ZXJzIG11c3QgY2FsbCBkZXZfa2ZyZWVfc2tiKCkgdG8gZnJlZSB0aGUgc29ja2V0IGJ1ZmZlcgorYW5kIHJldHVybiBORVRERVZfVFhfT0sgaWYgdGhlIERNQSBtYXBwaW5nIGZhaWxzIG9uIHRoZSB0cmFuc21pdCBob29rCisobmRvX3N0YXJ0X3htaXQpLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHNvY2tldCBidWZmZXIgaXMganVzdCBkcm9wcGVkIGluCit0aGUgZmFpbHVyZSBjYXNlLgorCitTQ1NJIGRyaXZlcnMgbXVzdCByZXR1cm4gU0NTSV9NTFFVRVVFX0hPU1RfQlVTWSBpZiB0aGUgRE1BIG1hcHBpbmcKK2ZhaWxzIGluIHRoZSBxdWV1ZWNvbW1hbmQgaG9vay4gVGhpcyBtZWFucyB0aGF0IHRoZSBTQ1NJIHN1YnN5c3RlbQorcGFzc2VzIHRoZSBjb21tYW5kIHRvIHRoZSBkcml2ZXIgYWdhaW4gbGF0ZXIuCisKKwkJT3B0aW1pemluZyBVbm1hcCBTdGF0ZSBTcGFjZSBDb25zdW1wdGlvbgorCitPbiBtYW55IHBsYXRmb3JtcywgZG1hX3VubWFwX3tzaW5nbGUscGFnZX0oKSBpcyBzaW1wbHkgYSBub3AuCitUaGVyZWZvcmUsIGtlZXBpbmcgdHJhY2sgb2YgdGhlIG1hcHBpbmcgYWRkcmVzcyBhbmQgbGVuZ3RoIGlzIGEgd2FzdGUKK29mIHNwYWNlLiAgSW5zdGVhZCBvZiBmaWxsaW5nIHlvdXIgZHJpdmVycyB1cCB3aXRoIGlmZGVmcyBhbmQgdGhlIGxpa2UKK3RvICJ3b3JrIGFyb3VuZCIgdGhpcyAod2hpY2ggd291bGQgZGVmZWF0IHRoZSB3aG9sZSBwdXJwb3NlIG9mIGEKK3BvcnRhYmxlIEFQSSkgdGhlIGZvbGxvd2luZyBmYWNpbGl0aWVzIGFyZSBwcm92aWRlZC4KKworQWN0dWFsbHksIGluc3RlYWQgb2YgZGVzY3JpYmluZyB0aGUgbWFjcm9zIG9uZSBieSBvbmUsIHdlJ2xsCit0cmFuc2Zvcm0gc29tZSBleGFtcGxlIGNvZGUuCisKKzEpIFVzZSBERUZJTkVfRE1BX1VOTUFQX3tBRERSLExFTn0gaW4gc3RhdGUgc2F2aW5nIHN0cnVjdHVyZXMuCisgICBFeGFtcGxlLCBiZWZvcmU6CisKKwlzdHJ1Y3QgcmluZ19zdGF0ZSB7CisJCXN0cnVjdCBza19idWZmICpza2I7CisJCWRtYV9hZGRyX3QgbWFwcGluZzsKKwkJX191MzIgbGVuOworCX07CisKKyAgIGFmdGVyOgorCisJc3RydWN0IHJpbmdfc3RhdGUgeworCQlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOworCQlERUZJTkVfRE1BX1VOTUFQX0FERFIobWFwcGluZyk7CisJCURFRklORV9ETUFfVU5NQVBfTEVOKGxlbik7CisJfTsKKworMikgVXNlIGRtYV91bm1hcF97YWRkcixsZW59X3NldCgpIHRvIHNldCB0aGVzZSB2YWx1ZXMuCisgICBFeGFtcGxlLCBiZWZvcmU6CisKKwlyaW5ncC0+bWFwcGluZyA9IEZPTzsKKwlyaW5ncC0+bGVuID0gQkFSOworCisgICBhZnRlcjoKKworCWRtYV91bm1hcF9hZGRyX3NldChyaW5ncCwgbWFwcGluZywgRk9PKTsKKwlkbWFfdW5tYXBfbGVuX3NldChyaW5ncCwgbGVuLCBCQVIpOworCiszKSBVc2UgZG1hX3VubWFwX3thZGRyLGxlbn0oKSB0byBhY2Nlc3MgdGhlc2UgdmFsdWVzLgorICAgRXhhbXBsZSwgYmVmb3JlOgorCisJZG1hX3VubWFwX3NpbmdsZShkZXYsIHJpbmdwLT5tYXBwaW5nLCByaW5ncC0+bGVuLAorCQkJIERNQV9GUk9NX0RFVklDRSk7CisKKyAgIGFmdGVyOgorCisJZG1hX3VubWFwX3NpbmdsZShkZXYsCisJCQkgZG1hX3VubWFwX2FkZHIocmluZ3AsIG1hcHBpbmcpLAorCQkJIGRtYV91bm1hcF9sZW4ocmluZ3AsIGxlbiksCisJCQkgRE1BX0ZST01fREVWSUNFKTsKKworSXQgcmVhbGx5IHNob3VsZCBiZSBzZWxmLWV4cGxhbmF0b3J5LiAgV2UgdHJlYXQgdGhlIEFERFIgYW5kIExFTgorc2VwYXJhdGVseSwgYmVjYXVzZSBpdCBpcyBwb3NzaWJsZSBmb3IgYW4gaW1wbGVtZW50YXRpb24gdG8gb25seQorbmVlZCB0aGUgYWRkcmVzcyBpbiBvcmRlciB0byBwZXJmb3JtIHRoZSB1bm1hcCBvcGVyYXRpb24uCisKKwkJCVBsYXRmb3JtIElzc3VlcworCitJZiB5b3UgYXJlIGp1c3Qgd3JpdGluZyBkcml2ZXJzIGZvciBMaW51eCBhbmQgZG8gbm90IG1haW50YWluCithbiBhcmNoaXRlY3R1cmUgcG9ydCBmb3IgdGhlIGtlcm5lbCwgeW91IGNhbiBzYWZlbHkgc2tpcCBkb3duCit0byAiQ2xvc2luZyIuCisKKzEpIFN0cnVjdCBzY2F0dGVybGlzdCByZXF1aXJlbWVudHMuCisKKyAgIERvbid0IGludmVudCB0aGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIHN0cnVjdCBzY2F0dGVybGlzdDsganVzdCB1c2UKKyAgIDxhc20tZ2VuZXJpYy9zY2F0dGVybGlzdC5oPi4gWW91IG5lZWQgdG8gZW5hYmxlCisgICBDT05GSUdfTkVFRF9TR19ETUFfTEVOR1RIIGlmIHRoZSBhcmNoaXRlY3R1cmUgc3VwcG9ydHMgSU9NTVVzCisgICAoaW5jbHVkaW5nIHNvZnR3YXJlIElPTU1VKS4KKworMikgQVJDSF9ETUFfTUlOQUxJR04KKworICAgQXJjaGl0ZWN0dXJlcyBtdXN0IGVuc3VyZSB0aGF0IGttYWxsb2MnZWQgYnVmZmVyIGlzCisgICBETUEtc2FmZS4gRHJpdmVycyBhbmQgc3Vic3lzdGVtcyBkZXBlbmQgb24gaXQuIElmIGFuIGFyY2hpdGVjdHVyZQorICAgaXNuJ3QgZnVsbHkgRE1BLWNvaGVyZW50IChpLmUuIGhhcmR3YXJlIGRvZXNuJ3QgZW5zdXJlIHRoYXQgZGF0YSBpbgorICAgdGhlIENQVSBjYWNoZSBpcyBpZGVudGljYWwgdG8gZGF0YSBpbiBtYWluIG1lbW9yeSksCisgICBBUkNIX0RNQV9NSU5BTElHTiBtdXN0IGJlIHNldCBzbyB0aGF0IHRoZSBtZW1vcnkgYWxsb2NhdG9yCisgICBtYWtlcyBzdXJlIHRoYXQga21hbGxvYydlZCBidWZmZXIgZG9lc24ndCBzaGFyZSBhIGNhY2hlIGxpbmUgd2l0aAorICAgdGhlIG90aGVycy4gU2VlIGFyY2gvYXJtL2luY2x1ZGUvYXNtL2NhY2hlLmggYXMgYW4gZXhhbXBsZS4KKworICAgTm90ZSB0aGF0IEFSQ0hfRE1BX01JTkFMSUdOIGlzIGFib3V0IERNQSBtZW1vcnkgYWxpZ25tZW50CisgICBjb25zdHJhaW50cy4gWW91IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlIGFyY2hpdGVjdHVyZSBkYXRhCisgICBhbGlnbm1lbnQgY29uc3RyYWludHMgKGUuZy4gdGhlIGFsaWdubWVudCBjb25zdHJhaW50cyBhYm91dCA2NC1iaXQKKyAgIG9iamVjdHMpLgorCiszKSBTdXBwb3J0aW5nIG11bHRpcGxlIHR5cGVzIG9mIElPTU1VcworCisgICBJZiB5b3VyIGFyY2hpdGVjdHVyZSBuZWVkcyB0byBzdXBwb3J0IG11bHRpcGxlIHR5cGVzIG9mIElPTU1VcywgeW91CisgICBjYW4gdXNlIGluY2x1ZGUvbGludXgvYXNtLWdlbmVyaWMvZG1hLW1hcHBpbmctY29tbW9uLmguIEl0J3MgYQorICAgbGlicmFyeSB0byBzdXBwb3J0IHRoZSBETUEgQVBJIHdpdGggbXVsdGlwbGUgdHlwZXMgb2YgSU9NTVVzLiBMb3RzCisgICBvZiBhcmNoaXRlY3R1cmVzICh4ODYsIHBvd2VycGMsIHNoLCBhbHBoYSwgaWE2NCwgbWljcm9ibGF6ZSBhbmQKKyAgIHNwYXJjKSB1c2UgaXQuIENob29zZSBvbmUgdG8gc2VlIGhvdyBpdCBjYW4gYmUgdXNlZC4gSWYgeW91IG5lZWQgdG8KKyAgIHN1cHBvcnQgbXVsdGlwbGUgdHlwZXMgb2YgSU9NTVVzIGluIGEgc2luZ2xlIHN5c3RlbSwgdGhlIGV4YW1wbGUgb2YKKyAgIHg4NiBvciBwb3dlcnBjIGhlbHBzLgorCisJCQkgICBDbG9zaW5nCisKK1RoaXMgZG9jdW1lbnQsIGFuZCB0aGUgQVBJIGl0c2VsZiwgd291bGQgbm90IGJlIGluIGl0cyBjdXJyZW50Citmb3JtIHdpdGhvdXQgdGhlIGZlZWRiYWNrIGFuZCBzdWdnZXN0aW9ucyBmcm9tIG51bWVyb3VzIGluZGl2aWR1YWxzLgorV2Ugd291bGQgbGlrZSB0byBzcGVjaWZpY2FsbHkgbWVudGlvbiwgaW4gbm8gcGFydGljdWxhciBvcmRlciwgdGhlCitmb2xsb3dpbmcgcGVvcGxlOgorCisJUnVzc2VsbCBLaW5nIDxybWtAYXJtLmxpbnV4Lm9yZy51az4KKwlMZW8gRGFndW0gPGRhZ3VtQGJhcnJlbC5lbmdyLnNnaS5jb20+CisJUmFsZiBCYWVjaGxlIDxyYWxmQG9zcy5zZ2kuY29tPgorCUdyYW50IEdydW5kbGVyIDxncnVuZGxlckBjdXAuaHAuY29tPgorCUpheSBFc3RhYnJvb2sgPEpheS5Fc3RhYnJvb2tAY29tcGFxLmNvbT4KKwlUaG9tYXMgU2FpbGVyIDxzYWlsZXJAaWZlLmVlLmV0aHouY2g+CisJQW5kcmVhIEFyY2FuZ2VsaSA8YW5kcmVhQHN1c2UuZGU+CisJSmVucyBBeGJvZSA8amVucy5heGJvZUBvcmFjbGUuY29tPgorCURhdmlkIE1vc2Jlcmdlci1UYW5nIDxkYXZpZG1AaHBsLmhwLmNvbT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRE1BLUFQSS50eHQgYi9Eb2N1bWVudGF0aW9uL0RNQS1BUEkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlOThhN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RNQS1BUEkudHh0CkBAIC0wLDAgKzEsNjk4IEBACisgICAgICAgICAgICAgICBEeW5hbWljIERNQSBtYXBwaW5nIHVzaW5nIHRoZSBnZW5lcmljIGRldmljZQorICAgICAgICAgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgICAgICBKYW1lcyBFLkouIEJvdHRvbWxleSA8SmFtZXMuQm90dG9tbGV5QEhhbnNlblBhcnRuZXJzaGlwLmNvbT4KKworVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIERNQSBBUEkuICBGb3IgYSBtb3JlIGdlbnRsZSBpbnRyb2R1Y3Rpb24KK29mIHRoZSBBUEkgKGFuZCBhY3R1YWwgZXhhbXBsZXMpLCBzZWUgRG9jdW1lbnRhdGlvbi9ETUEtQVBJLUhPV1RPLnR4dC4KKworVGhpcyBBUEkgaXMgc3BsaXQgaW50byB0d28gcGllY2VzLiAgUGFydCBJIGRlc2NyaWJlcyB0aGUgYmFzaWMgQVBJLgorUGFydCBJSSBkZXNjcmliZXMgZXh0ZW5zaW9ucyBmb3Igc3VwcG9ydGluZyBub24tY29uc2lzdGVudCBtZW1vcnkKK21hY2hpbmVzLiAgVW5sZXNzIHlvdSBrbm93IHRoYXQgeW91ciBkcml2ZXIgYWJzb2x1dGVseSBoYXMgdG8gc3VwcG9ydAorbm9uLWNvbnNpc3RlbnQgcGxhdGZvcm1zICh0aGlzIGlzIHVzdWFsbHkgb25seSBsZWdhY3kgcGxhdGZvcm1zKSB5b3UKK3Nob3VsZCBvbmx5IHVzZSB0aGUgQVBJIGRlc2NyaWJlZCBpbiBwYXJ0IEkuCisKK1BhcnQgSSAtIGRtYV8gQVBJCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RvIGdldCB0aGUgZG1hXyBBUEksIHlvdSBtdXN0ICNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPi4gIFRoaXMKK3Byb3ZpZGVzIGRtYV9hZGRyX3QgYW5kIHRoZSBpbnRlcmZhY2VzIGRlc2NyaWJlZCBiZWxvdy4KKworQSBkbWFfYWRkcl90IGNhbiBob2xkIGFueSB2YWxpZCBETUEgYWRkcmVzcyBmb3IgdGhlIHBsYXRmb3JtLiAgSXQgY2FuIGJlCitnaXZlbiB0byBhIGRldmljZSB0byB1c2UgYXMgYSBETUEgc291cmNlIG9yIHRhcmdldC4gIEEgQ1BVIGNhbm5vdCByZWZlcmVuY2UKK2EgZG1hX2FkZHJfdCBkaXJlY3RseSBiZWNhdXNlIHRoZXJlIG1heSBiZSB0cmFuc2xhdGlvbiBiZXR3ZWVuIGl0cyBwaHlzaWNhbAorYWRkcmVzcyBzcGFjZSBhbmQgdGhlIERNQSBhZGRyZXNzIHNwYWNlLgorCitQYXJ0IElhIC0gVXNpbmcgbGFyZ2UgRE1BLWNvaGVyZW50IGJ1ZmZlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2b2lkICoKK2RtYV9hbGxvY19jb2hlcmVudChzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLAorCQkJICAgICBkbWFfYWRkcl90ICpkbWFfaGFuZGxlLCBnZnBfdCBmbGFnKQorCitDb25zaXN0ZW50IG1lbW9yeSBpcyBtZW1vcnkgZm9yIHdoaWNoIGEgd3JpdGUgYnkgZWl0aGVyIHRoZSBkZXZpY2Ugb3IKK3RoZSBwcm9jZXNzb3IgY2FuIGltbWVkaWF0ZWx5IGJlIHJlYWQgYnkgdGhlIHByb2Nlc3NvciBvciBkZXZpY2UKK3dpdGhvdXQgaGF2aW5nIHRvIHdvcnJ5IGFib3V0IGNhY2hpbmcgZWZmZWN0cy4gIChZb3UgbWF5IGhvd2V2ZXIgbmVlZAordG8gbWFrZSBzdXJlIHRvIGZsdXNoIHRoZSBwcm9jZXNzb3IncyB3cml0ZSBidWZmZXJzIGJlZm9yZSB0ZWxsaW5nCitkZXZpY2VzIHRvIHJlYWQgdGhhdCBtZW1vcnkuKQorCitUaGlzIHJvdXRpbmUgYWxsb2NhdGVzIGEgcmVnaW9uIG9mIDxzaXplPiBieXRlcyBvZiBjb25zaXN0ZW50IG1lbW9yeS4KKworSXQgcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGFsbG9jYXRlZCByZWdpb24gKGluIHRoZSBwcm9jZXNzb3IncyB2aXJ0dWFsCithZGRyZXNzIHNwYWNlKSBvciBOVUxMIGlmIHRoZSBhbGxvY2F0aW9uIGZhaWxlZC4KKworSXQgYWxzbyByZXR1cm5zIGEgPGRtYV9oYW5kbGU+IHdoaWNoIG1heSBiZSBjYXN0IHRvIGFuIHVuc2lnbmVkIGludGVnZXIgdGhlCitzYW1lIHdpZHRoIGFzIHRoZSBidXMgYW5kIGdpdmVuIHRvIHRoZSBkZXZpY2UgYXMgdGhlIERNQSBhZGRyZXNzIGJhc2Ugb2YKK3RoZSByZWdpb24uCisKK05vdGU6IGNvbnNpc3RlbnQgbWVtb3J5IGNhbiBiZSBleHBlbnNpdmUgb24gc29tZSBwbGF0Zm9ybXMsIGFuZCB0aGUKK21pbmltdW0gYWxsb2NhdGlvbiBsZW5ndGggbWF5IGJlIGFzIGJpZyBhcyBhIHBhZ2UsIHNvIHlvdSBzaG91bGQKK2NvbnNvbGlkYXRlIHlvdXIgcmVxdWVzdHMgZm9yIGNvbnNpc3RlbnQgbWVtb3J5IGFzIG11Y2ggYXMgcG9zc2libGUuCitUaGUgc2ltcGxlc3Qgd2F5IHRvIGRvIHRoYXQgaXMgdG8gdXNlIHRoZSBkbWFfcG9vbCBjYWxscyAoc2VlIGJlbG93KS4KKworVGhlIGZsYWcgcGFyYW1ldGVyIChkbWFfYWxsb2NfY29oZXJlbnQoKSBvbmx5KSBhbGxvd3MgdGhlIGNhbGxlciB0bworc3BlY2lmeSB0aGUgR0ZQXyBmbGFncyAoc2VlIGttYWxsb2MoKSkgZm9yIHRoZSBhbGxvY2F0aW9uICh0aGUKK2ltcGxlbWVudGF0aW9uIG1heSBjaG9vc2UgdG8gaWdub3JlIGZsYWdzIHRoYXQgYWZmZWN0IHRoZSBsb2NhdGlvbiBvZgordGhlIHJldHVybmVkIG1lbW9yeSwgbGlrZSBHRlBfRE1BKS4KKwordm9pZCAqCitkbWFfemFsbG9jX2NvaGVyZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsCisJCQkgICAgIGRtYV9hZGRyX3QgKmRtYV9oYW5kbGUsIGdmcF90IGZsYWcpCisKK1dyYXBzIGRtYV9hbGxvY19jb2hlcmVudCgpIGFuZCBhbHNvIHplcm9lcyB0aGUgcmV0dXJuZWQgbWVtb3J5IGlmIHRoZQorYWxsb2NhdGlvbiBhdHRlbXB0IHN1Y2NlZWRlZC4KKwordm9pZAorZG1hX2ZyZWVfY29oZXJlbnQoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwgdm9pZCAqY3B1X2FkZHIsCisJCQkgICBkbWFfYWRkcl90IGRtYV9oYW5kbGUpCisKK0ZyZWUgYSByZWdpb24gb2YgY29uc2lzdGVudCBtZW1vcnkgeW91IHByZXZpb3VzbHkgYWxsb2NhdGVkLiAgZGV2LAorc2l6ZSBhbmQgZG1hX2hhbmRsZSBtdXN0IGFsbCBiZSB0aGUgc2FtZSBhcyB0aG9zZSBwYXNzZWQgaW50bworZG1hX2FsbG9jX2NvaGVyZW50KCkuICBjcHVfYWRkciBtdXN0IGJlIHRoZSB2aXJ0dWFsIGFkZHJlc3MgcmV0dXJuZWQgYnkKK3RoZSBkbWFfYWxsb2NfY29oZXJlbnQoKS4KKworTm90ZSB0aGF0IHVubGlrZSB0aGVpciBzaWJsaW5nIGFsbG9jYXRpb24gY2FsbHMsIHRoZXNlIHJvdXRpbmVzCittYXkgb25seSBiZSBjYWxsZWQgd2l0aCBJUlFzIGVuYWJsZWQuCisKKworUGFydCBJYiAtIFVzaW5nIHNtYWxsIERNQS1jb2hlcmVudCBidWZmZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVG8gZ2V0IHRoaXMgcGFydCBvZiB0aGUgZG1hXyBBUEksIHlvdSBtdXN0ICNpbmNsdWRlIDxsaW51eC9kbWFwb29sLmg+CisKK01hbnkgZHJpdmVycyBuZWVkIGxvdHMgb2Ygc21hbGwgRE1BLWNvaGVyZW50IG1lbW9yeSByZWdpb25zIGZvciBETUEKK2Rlc2NyaXB0b3JzIG9yIEkvTyBidWZmZXJzLiAgUmF0aGVyIHRoYW4gYWxsb2NhdGluZyBpbiB1bml0cyBvZiBhIHBhZ2UKK29yIG1vcmUgdXNpbmcgZG1hX2FsbG9jX2NvaGVyZW50KCksIHlvdSBjYW4gdXNlIERNQSBwb29scy4gIFRoZXNlIHdvcmsKK211Y2ggbGlrZSBhIHN0cnVjdCBrbWVtX2NhY2hlLCBleGNlcHQgdGhhdCB0aGV5IHVzZSB0aGUgRE1BLWNvaGVyZW50IGFsbG9jYXRvciwKK25vdCBfX2dldF9mcmVlX3BhZ2VzKCkuICBBbHNvLCB0aGV5IHVuZGVyc3RhbmQgY29tbW9uIGhhcmR3YXJlIGNvbnN0cmFpbnRzCitmb3IgYWxpZ25tZW50LCBsaWtlIHF1ZXVlIGhlYWRzIG5lZWRpbmcgdG8gYmUgYWxpZ25lZCBvbiBOLWJ5dGUgYm91bmRhcmllcy4KKworCisJc3RydWN0IGRtYV9wb29sICoKKwlkbWFfcG9vbF9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGRldmljZSAqZGV2LAorCQkJc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbiwgc2l6ZV90IGFsbG9jKTsKKworZG1hX3Bvb2xfY3JlYXRlKCkgaW5pdGlhbGl6ZXMgYSBwb29sIG9mIERNQS1jb2hlcmVudCBidWZmZXJzCitmb3IgdXNlIHdpdGggYSBnaXZlbiBkZXZpY2UuICBJdCBtdXN0IGJlIGNhbGxlZCBpbiBhIGNvbnRleHQgd2hpY2gKK2NhbiBzbGVlcC4KKworVGhlICJuYW1lIiBpcyBmb3IgZGlhZ25vc3RpY3MgKGxpa2UgYSBzdHJ1Y3Qga21lbV9jYWNoZSBuYW1lKTsgZGV2IGFuZCBzaXplCithcmUgbGlrZSB3aGF0IHlvdSdkIHBhc3MgdG8gZG1hX2FsbG9jX2NvaGVyZW50KCkuICBUaGUgZGV2aWNlJ3MgaGFyZHdhcmUKK2FsaWdubWVudCByZXF1aXJlbWVudCBmb3IgdGhpcyB0eXBlIG9mIGRhdGEgaXMgImFsaWduIiAod2hpY2ggaXMgZXhwcmVzc2VkCitpbiBieXRlcywgYW5kIG11c3QgYmUgYSBwb3dlciBvZiB0d28pLiAgSWYgeW91ciBkZXZpY2UgaGFzIG5vIGJvdW5kYXJ5Citjcm9zc2luZyByZXN0cmljdGlvbnMsIHBhc3MgMCBmb3IgYWxsb2M7IHBhc3NpbmcgNDA5NiBzYXlzIG1lbW9yeSBhbGxvY2F0ZWQKK2Zyb20gdGhpcyBwb29sIG11c3Qgbm90IGNyb3NzIDRLQnl0ZSBib3VuZGFyaWVzLgorCisKKwl2b2lkICpkbWFfcG9vbF96YWxsb2Moc3RydWN0IGRtYV9wb29sICpwb29sLCBnZnBfdCBtZW1fZmxhZ3MsCisJCQkgICAgICBkbWFfYWRkcl90ICpoYW5kbGUpCisKK1dyYXBzIGRtYV9wb29sX2FsbG9jKCkgYW5kIGFsc28gemVyb2VzIHRoZSByZXR1cm5lZCBtZW1vcnkgaWYgdGhlCithbGxvY2F0aW9uIGF0dGVtcHQgc3VjY2VlZGVkLgorCisKKwl2b2lkICpkbWFfcG9vbF9hbGxvYyhzdHJ1Y3QgZG1hX3Bvb2wgKnBvb2wsIGdmcF90IGdmcF9mbGFncywKKwkJCWRtYV9hZGRyX3QgKmRtYV9oYW5kbGUpOworCitUaGlzIGFsbG9jYXRlcyBtZW1vcnkgZnJvbSB0aGUgcG9vbDsgdGhlIHJldHVybmVkIG1lbW9yeSB3aWxsIG1lZXQgdGhlCitzaXplIGFuZCBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzIHNwZWNpZmllZCBhdCBjcmVhdGlvbiB0aW1lLiAgUGFzcworR0ZQX0FUT01JQyB0byBwcmV2ZW50IGJsb2NraW5nLCBvciBpZiBpdCdzIHBlcm1pdHRlZCAobm90Citpbl9pbnRlcnJ1cHQsIG5vdCBob2xkaW5nIFNNUCBsb2NrcyksIHBhc3MgR0ZQX0tFUk5FTCB0byBhbGxvdworYmxvY2tpbmcuICBMaWtlIGRtYV9hbGxvY19jb2hlcmVudCgpLCB0aGlzIHJldHVybnMgdHdvIHZhbHVlczogIGFuCithZGRyZXNzIHVzYWJsZSBieSB0aGUgQ1BVLCBhbmQgdGhlIERNQSBhZGRyZXNzIHVzYWJsZSBieSB0aGUgcG9vbCdzCitkZXZpY2UuCisKKworCXZvaWQgZG1hX3Bvb2xfZnJlZShzdHJ1Y3QgZG1hX3Bvb2wgKnBvb2wsIHZvaWQgKnZhZGRyLAorCQkJZG1hX2FkZHJfdCBhZGRyKTsKKworVGhpcyBwdXRzIG1lbW9yeSBiYWNrIGludG8gdGhlIHBvb2wuICBUaGUgcG9vbCBpcyB3aGF0IHdhcyBwYXNzZWQgdG8KK2RtYV9wb29sX2FsbG9jKCk7IHRoZSBDUFUgKHZhZGRyKSBhbmQgRE1BIGFkZHJlc3NlcyBhcmUgd2hhdAord2VyZSByZXR1cm5lZCB3aGVuIHRoYXQgcm91dGluZSBhbGxvY2F0ZWQgdGhlIG1lbW9yeSBiZWluZyBmcmVlZC4KKworCisJdm9pZCBkbWFfcG9vbF9kZXN0cm95KHN0cnVjdCBkbWFfcG9vbCAqcG9vbCk7CisKK2RtYV9wb29sX2Rlc3Ryb3koKSBmcmVlcyB0aGUgcmVzb3VyY2VzIG9mIHRoZSBwb29sLiAgSXQgbXVzdCBiZQorY2FsbGVkIGluIGEgY29udGV4dCB3aGljaCBjYW4gc2xlZXAuICBNYWtlIHN1cmUgeW91J3ZlIGZyZWVkIGFsbCBhbGxvY2F0ZWQKK21lbW9yeSBiYWNrIHRvIHRoZSBwb29sIGJlZm9yZSB5b3UgZGVzdHJveSBpdC4KKworCitQYXJ0IEljIC0gRE1BIGFkZHJlc3NpbmcgbGltaXRhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbnQKK2RtYV9zZXRfbWFza19hbmRfY29oZXJlbnQoc3RydWN0IGRldmljZSAqZGV2LCB1NjQgbWFzaykKKworQ2hlY2tzIHRvIHNlZSBpZiB0aGUgbWFzayBpcyBwb3NzaWJsZSBhbmQgdXBkYXRlcyB0aGUgZGV2aWNlCitzdHJlYW1pbmcgYW5kIGNvaGVyZW50IERNQSBtYXNrIHBhcmFtZXRlcnMgaWYgaXQgaXMuCisKK1JldHVybnM6IDAgaWYgc3VjY2Vzc2Z1bCBhbmQgYSBuZWdhdGl2ZSBlcnJvciBpZiBub3QuCisKK2ludAorZG1hX3NldF9tYXNrKHN0cnVjdCBkZXZpY2UgKmRldiwgdTY0IG1hc2spCisKK0NoZWNrcyB0byBzZWUgaWYgdGhlIG1hc2sgaXMgcG9zc2libGUgYW5kIHVwZGF0ZXMgdGhlIGRldmljZQorcGFyYW1ldGVycyBpZiBpdCBpcy4KKworUmV0dXJuczogMCBpZiBzdWNjZXNzZnVsIGFuZCBhIG5lZ2F0aXZlIGVycm9yIGlmIG5vdC4KKworaW50CitkbWFfc2V0X2NvaGVyZW50X21hc2soc3RydWN0IGRldmljZSAqZGV2LCB1NjQgbWFzaykKKworQ2hlY2tzIHRvIHNlZSBpZiB0aGUgbWFzayBpcyBwb3NzaWJsZSBhbmQgdXBkYXRlcyB0aGUgZGV2aWNlCitwYXJhbWV0ZXJzIGlmIGl0IGlzLgorCitSZXR1cm5zOiAwIGlmIHN1Y2Nlc3NmdWwgYW5kIGEgbmVnYXRpdmUgZXJyb3IgaWYgbm90LgorCit1NjQKK2RtYV9nZXRfcmVxdWlyZWRfbWFzayhzdHJ1Y3QgZGV2aWNlICpkZXYpCisKK1RoaXMgQVBJIHJldHVybnMgdGhlIG1hc2sgdGhhdCB0aGUgcGxhdGZvcm0gcmVxdWlyZXMgdG8KK29wZXJhdGUgZWZmaWNpZW50bHkuICBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIHJldHVybmVkIG1hc2sKK2lzIHRoZSBtaW5pbXVtIHJlcXVpcmVkIHRvIGNvdmVyIGFsbCBvZiBtZW1vcnkuICBFeGFtaW5pbmcgdGhlCityZXF1aXJlZCBtYXNrIGdpdmVzIGRyaXZlcnMgd2l0aCB2YXJpYWJsZSBkZXNjcmlwdG9yIHNpemVzIHRoZQorb3Bwb3J0dW5pdHkgdG8gdXNlIHNtYWxsZXIgZGVzY3JpcHRvcnMgYXMgbmVjZXNzYXJ5LgorCitSZXF1ZXN0aW5nIHRoZSByZXF1aXJlZCBtYXNrIGRvZXMgbm90IGFsdGVyIHRoZSBjdXJyZW50IG1hc2suICBJZiB5b3UKK3dpc2ggdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgaXQsIHlvdSBzaG91bGQgaXNzdWUgYSBkbWFfc2V0X21hc2soKQorY2FsbCB0byBzZXQgdGhlIG1hc2sgdG8gdGhlIHZhbHVlIHJldHVybmVkLgorCisKK1BhcnQgSWQgLSBTdHJlYW1pbmcgRE1BIG1hcHBpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitkbWFfYWRkcl90CitkbWFfbWFwX3NpbmdsZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmNwdV9hZGRyLCBzaXplX3Qgc2l6ZSwKKwkJICAgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQorCitNYXBzIGEgcGllY2Ugb2YgcHJvY2Vzc29yIHZpcnR1YWwgbWVtb3J5IHNvIGl0IGNhbiBiZSBhY2Nlc3NlZCBieSB0aGUKK2RldmljZSBhbmQgcmV0dXJucyB0aGUgRE1BIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeS4KKworVGhlIGRpcmVjdGlvbiBmb3IgYm90aCBBUElzIG1heSBiZSBjb252ZXJ0ZWQgZnJlZWx5IGJ5IGNhc3RpbmcuCitIb3dldmVyIHRoZSBkbWFfIEFQSSB1c2VzIGEgc3Ryb25nbHkgdHlwZWQgZW51bWVyYXRvciBmb3IgaXRzCitkaXJlY3Rpb246CisKK0RNQV9OT05FCQlubyBkaXJlY3Rpb24gKHVzZWQgZm9yIGRlYnVnZ2luZykKK0RNQV9UT19ERVZJQ0UJCWRhdGEgaXMgZ29pbmcgZnJvbSB0aGUgbWVtb3J5IHRvIHRoZSBkZXZpY2UKK0RNQV9GUk9NX0RFVklDRQkJZGF0YSBpcyBjb21pbmcgZnJvbSB0aGUgZGV2aWNlIHRvIHRoZSBtZW1vcnkKK0RNQV9CSURJUkVDVElPTkFMCWRpcmVjdGlvbiBpc24ndCBrbm93bgorCitOb3RlczogIE5vdCBhbGwgbWVtb3J5IHJlZ2lvbnMgaW4gYSBtYWNoaW5lIGNhbiBiZSBtYXBwZWQgYnkgdGhpcyBBUEkuCitGdXJ0aGVyLCBjb250aWd1b3VzIGtlcm5lbCB2aXJ0dWFsIHNwYWNlIG1heSBub3QgYmUgY29udGlndW91cyBhcworcGh5c2ljYWwgbWVtb3J5LiAgU2luY2UgdGhpcyBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbnkgc2NhdHRlci9nYXRoZXIKK2NhcGFiaWxpdHksIGl0IHdpbGwgZmFpbCBpZiB0aGUgdXNlciB0cmllcyB0byBtYXAgYSBub24tcGh5c2ljYWxseQorY29udGlndW91cyBwaWVjZSBvZiBtZW1vcnkuICBGb3IgdGhpcyByZWFzb24sIG1lbW9yeSB0byBiZSBtYXBwZWQgYnkKK3RoaXMgQVBJIHNob3VsZCBiZSBvYnRhaW5lZCBmcm9tIHNvdXJjZXMgd2hpY2ggZ3VhcmFudGVlIGl0IHRvIGJlCitwaHlzaWNhbGx5IGNvbnRpZ3VvdXMgKGxpa2Uga21hbGxvYykuCisKK0Z1cnRoZXIsIHRoZSBETUEgYWRkcmVzcyBvZiB0aGUgbWVtb3J5IG11c3QgYmUgd2l0aGluIHRoZQorZG1hX21hc2sgb2YgdGhlIGRldmljZSAodGhlIGRtYV9tYXNrIGlzIGEgYml0IG1hc2sgb2YgdGhlCithZGRyZXNzYWJsZSByZWdpb24gZm9yIHRoZSBkZXZpY2UsIGkuZS4sIGlmIHRoZSBETUEgYWRkcmVzcyBvZgordGhlIG1lbW9yeSBBTkRlZCB3aXRoIHRoZSBkbWFfbWFzayBpcyBzdGlsbCBlcXVhbCB0byB0aGUgRE1BCithZGRyZXNzLCB0aGVuIHRoZSBkZXZpY2UgY2FuIHBlcmZvcm0gRE1BIHRvIHRoZSBtZW1vcnkpLiAgVG8KK2Vuc3VyZSB0aGF0IHRoZSBtZW1vcnkgYWxsb2NhdGVkIGJ5IGttYWxsb2MgaXMgd2l0aGluIHRoZSBkbWFfbWFzaywKK3RoZSBkcml2ZXIgbWF5IHNwZWNpZnkgdmFyaW91cyBwbGF0Zm9ybS1kZXBlbmRlbnQgZmxhZ3MgdG8gcmVzdHJpY3QKK3RoZSBETUEgYWRkcmVzcyByYW5nZSBvZiB0aGUgYWxsb2NhdGlvbiAoZS5nLiwgb24geDg2LCBHRlBfRE1BCitndWFyYW50ZWVzIHRvIGJlIHdpdGhpbiB0aGUgZmlyc3QgMTZNQiBvZiBhdmFpbGFibGUgRE1BIGFkZHJlc3NlcywKK2FzIHJlcXVpcmVkIGJ5IElTQSBkZXZpY2VzKS4KKworTm90ZSBhbHNvIHRoYXQgdGhlIGFib3ZlIGNvbnN0cmFpbnRzIG9uIHBoeXNpY2FsIGNvbnRpZ3VpdHkgYW5kCitkbWFfbWFzayBtYXkgbm90IGFwcGx5IGlmIHRoZSBwbGF0Zm9ybSBoYXMgYW4gSU9NTVUgKGEgZGV2aWNlIHdoaWNoCittYXBzIGFuIEkvTyBETUEgYWRkcmVzcyB0byBhIHBoeXNpY2FsIG1lbW9yeSBhZGRyZXNzKS4gIEhvd2V2ZXIsIHRvIGJlCitwb3J0YWJsZSwgZGV2aWNlIGRyaXZlciB3cml0ZXJzIG1heSAqbm90KiBhc3N1bWUgdGhhdCBzdWNoIGFuIElPTU1VCitleGlzdHMuCisKK1dhcm5pbmdzOiAgTWVtb3J5IGNvaGVyZW5jeSBvcGVyYXRlcyBhdCBhIGdyYW51bGFyaXR5IGNhbGxlZCB0aGUgY2FjaGUKK2xpbmUgd2lkdGguICBJbiBvcmRlciBmb3IgbWVtb3J5IG1hcHBlZCBieSB0aGlzIEFQSSB0byBvcGVyYXRlCitjb3JyZWN0bHksIHRoZSBtYXBwZWQgcmVnaW9uIG11c3QgYmVnaW4gZXhhY3RseSBvbiBhIGNhY2hlIGxpbmUKK2JvdW5kYXJ5IGFuZCBlbmQgZXhhY3RseSBvbiBvbmUgKHRvIHByZXZlbnQgdHdvIHNlcGFyYXRlbHkgbWFwcGVkCityZWdpb25zIGZyb20gc2hhcmluZyBhIHNpbmdsZSBjYWNoZSBsaW5lKS4gIFNpbmNlIHRoZSBjYWNoZSBsaW5lIHNpemUKK21heSBub3QgYmUga25vd24gYXQgY29tcGlsZSB0aW1lLCB0aGUgQVBJIHdpbGwgbm90IGVuZm9yY2UgdGhpcworcmVxdWlyZW1lbnQuICBUaGVyZWZvcmUsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgZHJpdmVyIHdyaXRlcnMgd2hvCitkb24ndCB0YWtlIHNwZWNpYWwgY2FyZSB0byBkZXRlcm1pbmUgdGhlIGNhY2hlIGxpbmUgc2l6ZSBhdCBydW4gdGltZQorb25seSBtYXAgdmlydHVhbCByZWdpb25zIHRoYXQgYmVnaW4gYW5kIGVuZCBvbiBwYWdlIGJvdW5kYXJpZXMgKHdoaWNoCithcmUgZ3VhcmFudGVlZCBhbHNvIHRvIGJlIGNhY2hlIGxpbmUgYm91bmRhcmllcykuCisKK0RNQV9UT19ERVZJQ0Ugc3luY2hyb25pc2F0aW9uIG11c3QgYmUgZG9uZSBhZnRlciB0aGUgbGFzdCBtb2RpZmljYXRpb24KK29mIHRoZSBtZW1vcnkgcmVnaW9uIGJ5IHRoZSBzb2Z0d2FyZSBhbmQgYmVmb3JlIGl0IGlzIGhhbmRlZCBvZmYgdG8KK3RoZSBkcml2ZXIuICBPbmNlIHRoaXMgcHJpbWl0aXZlIGlzIHVzZWQsIG1lbW9yeSBjb3ZlcmVkIGJ5IHRoaXMKK3ByaW1pdGl2ZSBzaG91bGQgYmUgdHJlYXRlZCBhcyByZWFkLW9ubHkgYnkgdGhlIGRldmljZS4gIElmIHRoZSBkZXZpY2UKK21heSB3cml0ZSB0byBpdCBhdCBhbnkgcG9pbnQsIGl0IHNob3VsZCBiZSBETUFfQklESVJFQ1RJT05BTCAoc2VlCitiZWxvdykuCisKK0RNQV9GUk9NX0RFVklDRSBzeW5jaHJvbmlzYXRpb24gbXVzdCBiZSBkb25lIGJlZm9yZSB0aGUgZHJpdmVyCithY2Nlc3NlcyBkYXRhIHRoYXQgbWF5IGJlIGNoYW5nZWQgYnkgdGhlIGRldmljZS4gIFRoaXMgbWVtb3J5IHNob3VsZAorYmUgdHJlYXRlZCBhcyByZWFkLW9ubHkgYnkgdGhlIGRyaXZlci4gIElmIHRoZSBkcml2ZXIgbmVlZHMgdG8gd3JpdGUKK3RvIGl0IGF0IGFueSBwb2ludCwgaXQgc2hvdWxkIGJlIERNQV9CSURJUkVDVElPTkFMIChzZWUgYmVsb3cpLgorCitETUFfQklESVJFQ1RJT05BTCByZXF1aXJlcyBzcGVjaWFsIGhhbmRsaW5nOiBpdCBtZWFucyB0aGF0IHRoZSBkcml2ZXIKK2lzbid0IHN1cmUgaWYgdGhlIG1lbW9yeSB3YXMgbW9kaWZpZWQgYmVmb3JlIGJlaW5nIGhhbmRlZCBvZmYgdG8gdGhlCitkZXZpY2UgYW5kIGFsc28gaXNuJ3Qgc3VyZSBpZiB0aGUgZGV2aWNlIHdpbGwgYWxzbyBtb2RpZnkgaXQuICBUaHVzLAoreW91IG11c3QgYWx3YXlzIHN5bmMgYmlkaXJlY3Rpb25hbCBtZW1vcnkgdHdpY2U6IG9uY2UgYmVmb3JlIHRoZQorbWVtb3J5IGlzIGhhbmRlZCBvZmYgdG8gdGhlIGRldmljZSAodG8gbWFrZSBzdXJlIGFsbCBtZW1vcnkgY2hhbmdlcworYXJlIGZsdXNoZWQgZnJvbSB0aGUgcHJvY2Vzc29yKSBhbmQgb25jZSBiZWZvcmUgdGhlIGRhdGEgbWF5IGJlCithY2Nlc3NlZCBhZnRlciBiZWluZyB1c2VkIGJ5IHRoZSBkZXZpY2UgKHRvIG1ha2Ugc3VyZSBhbnkgcHJvY2Vzc29yCitjYWNoZSBsaW5lcyBhcmUgdXBkYXRlZCB3aXRoIGRhdGEgdGhhdCB0aGUgZGV2aWNlIG1heSBoYXZlIGNoYW5nZWQpLgorCit2b2lkCitkbWFfdW5tYXBfc2luZ2xlKHN0cnVjdCBkZXZpY2UgKmRldiwgZG1hX2FkZHJfdCBkbWFfYWRkciwgc2l6ZV90IHNpemUsCisJCSBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCisKK1VubWFwcyB0aGUgcmVnaW9uIHByZXZpb3VzbHkgbWFwcGVkLiAgQWxsIHRoZSBwYXJhbWV0ZXJzIHBhc3NlZCBpbgorbXVzdCBiZSBpZGVudGljYWwgdG8gdGhvc2UgcGFzc2VkIGluIChhbmQgcmV0dXJuZWQpIGJ5IHRoZSBtYXBwaW5nCitBUEkuCisKK2RtYV9hZGRyX3QKK2RtYV9tYXBfcGFnZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwYWdlICpwYWdlLAorCQkgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQsIHNpemVfdCBzaXplLAorCQkgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQordm9pZAorZG1hX3VubWFwX3BhZ2Uoc3RydWN0IGRldmljZSAqZGV2LCBkbWFfYWRkcl90IGRtYV9hZGRyZXNzLCBzaXplX3Qgc2l6ZSwKKwkgICAgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQorCitBUEkgZm9yIG1hcHBpbmcgYW5kIHVubWFwcGluZyBmb3IgcGFnZXMuICBBbGwgdGhlIG5vdGVzIGFuZCB3YXJuaW5ncworZm9yIHRoZSBvdGhlciBtYXBwaW5nIEFQSXMgYXBwbHkgaGVyZS4gIEFsc28sIGFsdGhvdWdoIHRoZSA8b2Zmc2V0PgorYW5kIDxzaXplPiBwYXJhbWV0ZXJzIGFyZSBwcm92aWRlZCB0byBkbyBwYXJ0aWFsIHBhZ2UgbWFwcGluZywgaXQgaXMKK3JlY29tbWVuZGVkIHRoYXQgeW91IG5ldmVyIHVzZSB0aGVzZSB1bmxlc3MgeW91IHJlYWxseSBrbm93IHdoYXQgdGhlCitjYWNoZSB3aWR0aCBpcy4KKworaW50CitkbWFfbWFwcGluZ19lcnJvcihzdHJ1Y3QgZGV2aWNlICpkZXYsIGRtYV9hZGRyX3QgZG1hX2FkZHIpCisKK0luIHNvbWUgY2lyY3Vtc3RhbmNlcyBkbWFfbWFwX3NpbmdsZSgpIGFuZCBkbWFfbWFwX3BhZ2UoKSB3aWxsIGZhaWwgdG8gY3JlYXRlCithIG1hcHBpbmcuIEEgZHJpdmVyIGNhbiBjaGVjayBmb3IgdGhlc2UgZXJyb3JzIGJ5IHRlc3RpbmcgdGhlIHJldHVybmVkCitETUEgYWRkcmVzcyB3aXRoIGRtYV9tYXBwaW5nX2Vycm9yKCkuIEEgbm9uLXplcm8gcmV0dXJuIHZhbHVlIG1lYW5zIHRoZSBtYXBwaW5nCitjb3VsZCBub3QgYmUgY3JlYXRlZCBhbmQgdGhlIGRyaXZlciBzaG91bGQgdGFrZSBhcHByb3ByaWF0ZSBhY3Rpb24gKGUuZy4KK3JlZHVjZSBjdXJyZW50IERNQSBtYXBwaW5nIHVzYWdlIG9yIGRlbGF5IGFuZCB0cnkgYWdhaW4gbGF0ZXIpLgorCisJaW50CisJZG1hX21hcF9zZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzY2F0dGVybGlzdCAqc2csCisJCWludCBuZW50cywgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQorCitSZXR1cm5zOiB0aGUgbnVtYmVyIG9mIERNQSBhZGRyZXNzIHNlZ21lbnRzIG1hcHBlZCAodGhpcyBtYXkgYmUgc2hvcnRlcgordGhhbiA8bmVudHM+IHBhc3NlZCBpbiBpZiBzb21lIGVsZW1lbnRzIG9mIHRoZSBzY2F0dGVyL2dhdGhlciBsaXN0IGFyZQorcGh5c2ljYWxseSBvciB2aXJ0dWFsbHkgYWRqYWNlbnQgYW5kIGFuIElPTU1VIG1hcHMgdGhlbSB3aXRoIGEgc2luZ2xlCitlbnRyeSkuCisKK1BsZWFzZSBub3RlIHRoYXQgdGhlIHNnIGNhbm5vdCBiZSBtYXBwZWQgYWdhaW4gaWYgaXQgaGFzIGJlZW4gbWFwcGVkIG9uY2UuCitUaGUgbWFwcGluZyBwcm9jZXNzIGlzIGFsbG93ZWQgdG8gZGVzdHJveSBpbmZvcm1hdGlvbiBpbiB0aGUgc2cuCisKK0FzIHdpdGggdGhlIG90aGVyIG1hcHBpbmcgaW50ZXJmYWNlcywgZG1hX21hcF9zZygpIGNhbiBmYWlsLiBXaGVuIGl0Citkb2VzLCAwIGlzIHJldHVybmVkIGFuZCBhIGRyaXZlciBtdXN0IHRha2UgYXBwcm9wcmlhdGUgYWN0aW9uLiBJdCBpcworY3JpdGljYWwgdGhhdCB0aGUgZHJpdmVyIGRvIHNvbWV0aGluZywgaW4gdGhlIGNhc2Ugb2YgYSBibG9jayBkcml2ZXIKK2Fib3J0aW5nIHRoZSByZXF1ZXN0IG9yIGV2ZW4gb29wc2luZyBpcyBiZXR0ZXIgdGhhbiBkb2luZyBub3RoaW5nIGFuZAorY29ycnVwdGluZyB0aGUgZmlsZXN5c3RlbS4KKworV2l0aCBzY2F0dGVybGlzdHMsIHlvdSB1c2UgdGhlIHJlc3VsdGluZyBtYXBwaW5nIGxpa2UgdGhpczoKKworCWludCBpLCBjb3VudCA9IGRtYV9tYXBfc2coZGV2LCBzZ2xpc3QsIG5lbnRzLCBkaXJlY3Rpb24pOworCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7CisKKwlmb3JfZWFjaF9zZyhzZ2xpc3QsIHNnLCBjb3VudCwgaSkgeworCQlod19hZGRyZXNzW2ldID0gc2dfZG1hX2FkZHJlc3Moc2cpOworCQlod19sZW5baV0gPSBzZ19kbWFfbGVuKHNnKTsKKwl9CisKK3doZXJlIG5lbnRzIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgc2dsaXN0LgorCitUaGUgaW1wbGVtZW50YXRpb24gaXMgZnJlZSB0byBtZXJnZSBzZXZlcmFsIGNvbnNlY3V0aXZlIHNnbGlzdCBlbnRyaWVzCitpbnRvIG9uZSAoZS5nLiB3aXRoIGFuIElPTU1VLCBvciBpZiBzZXZlcmFsIHBhZ2VzIGp1c3QgaGFwcGVuIHRvIGJlCitwaHlzaWNhbGx5IGNvbnRpZ3VvdXMpIGFuZCByZXR1cm5zIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHNnIGVudHJpZXMgaXQKK21hcHBlZCB0aGVtIHRvLiBPbiBmYWlsdXJlIDAsIGlzIHJldHVybmVkLgorCitUaGVuIHlvdSBzaG91bGQgbG9vcCBjb3VudCB0aW1lcyAobm90ZTogdGhpcyBjYW4gYmUgbGVzcyB0aGFuIG5lbnRzIHRpbWVzKQorYW5kIHVzZSBzZ19kbWFfYWRkcmVzcygpIGFuZCBzZ19kbWFfbGVuKCkgbWFjcm9zIHdoZXJlIHlvdSBwcmV2aW91c2x5CithY2Nlc3NlZCBzZy0+YWRkcmVzcyBhbmQgc2ctPmxlbmd0aCBhcyBzaG93biBhYm92ZS4KKworCXZvaWQKKwlkbWFfdW5tYXBfc2coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnLAorCQlpbnQgbmVudHMsIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbikKKworVW5tYXAgdGhlIHByZXZpb3VzbHkgbWFwcGVkIHNjYXR0ZXIvZ2F0aGVyIGxpc3QuICBBbGwgdGhlIHBhcmFtZXRlcnMKK211c3QgYmUgdGhlIHNhbWUgYXMgdGhvc2UgYW5kIHBhc3NlZCBpbiB0byB0aGUgc2NhdHRlci9nYXRoZXIgbWFwcGluZworQVBJLgorCitOb3RlOiA8bmVudHM+IG11c3QgYmUgdGhlIG51bWJlciB5b3UgcGFzc2VkIGluLCAqbm90KiB0aGUgbnVtYmVyIG9mCitETUEgYWRkcmVzcyBlbnRyaWVzIHJldHVybmVkLgorCit2b2lkCitkbWFfc3luY19zaW5nbGVfZm9yX2NwdShzdHJ1Y3QgZGV2aWNlICpkZXYsIGRtYV9hZGRyX3QgZG1hX2hhbmRsZSwgc2l6ZV90IHNpemUsCisJCQllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCit2b2lkCitkbWFfc3luY19zaW5nbGVfZm9yX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGRtYV9hZGRyX3QgZG1hX2hhbmRsZSwgc2l6ZV90IHNpemUsCisJCQkgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCit2b2lkCitkbWFfc3luY19zZ19mb3JfY3B1KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywgaW50IG5lbnRzLAorCQkgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQordm9pZAorZG1hX3N5bmNfc2dfZm9yX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzY2F0dGVybGlzdCAqc2csIGludCBuZW50cywKKwkJICAgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbikKKworU3luY2hyb25pc2UgYSBzaW5nbGUgY29udGlndW91cyBvciBzY2F0dGVyL2dhdGhlciBtYXBwaW5nIGZvciB0aGUgQ1BVCithbmQgZGV2aWNlLiBXaXRoIHRoZSBzeW5jX3NnIEFQSSwgYWxsIHRoZSBwYXJhbWV0ZXJzIG11c3QgYmUgdGhlIHNhbWUKK2FzIHRob3NlIHBhc3NlZCBpbnRvIHRoZSBzaW5nbGUgbWFwcGluZyBBUEkuIFdpdGggdGhlIHN5bmNfc2luZ2xlIEFQSSwKK3lvdSBjYW4gdXNlIGRtYV9oYW5kbGUgYW5kIHNpemUgcGFyYW1ldGVycyB0aGF0IGFyZW4ndCBpZGVudGljYWwgdG8KK3Rob3NlIHBhc3NlZCBpbnRvIHRoZSBzaW5nbGUgbWFwcGluZyBBUEkgdG8gZG8gYSBwYXJ0aWFsIHN5bmMuCisKK05vdGVzOiAgWW91IG11c3QgZG8gdGhpczoKKworLSBCZWZvcmUgcmVhZGluZyB2YWx1ZXMgdGhhdCBoYXZlIGJlZW4gd3JpdHRlbiBieSBETUEgZnJvbSB0aGUgZGV2aWNlCisgICh1c2UgdGhlIERNQV9GUk9NX0RFVklDRSBkaXJlY3Rpb24pCistIEFmdGVyIHdyaXRpbmcgdmFsdWVzIHRoYXQgd2lsbCBiZSB3cml0dGVuIHRvIHRoZSBkZXZpY2UgdXNpbmcgRE1BCisgICh1c2UgdGhlIERNQV9UT19ERVZJQ0UpIGRpcmVjdGlvbgorLSBiZWZvcmUgKmFuZCogYWZ0ZXIgaGFuZGluZyBtZW1vcnkgdG8gdGhlIGRldmljZSBpZiB0aGUgbWVtb3J5IGlzCisgIERNQV9CSURJUkVDVElPTkFMCisKK1NlZSBhbHNvIGRtYV9tYXBfc2luZ2xlKCkuCisKK2RtYV9hZGRyX3QKK2RtYV9tYXBfc2luZ2xlX2F0dHJzKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqY3B1X2FkZHIsIHNpemVfdCBzaXplLAorCQkgICAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpciwKKwkJICAgICBzdHJ1Y3QgZG1hX2F0dHJzICphdHRycykKKwordm9pZAorZG1hX3VubWFwX3NpbmdsZV9hdHRycyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGRtYV9hZGRyX3QgZG1hX2FkZHIsCisJCSAgICAgICBzaXplX3Qgc2l6ZSwgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyLAorCQkgICAgICAgc3RydWN0IGRtYV9hdHRycyAqYXR0cnMpCisKK2ludAorZG1hX21hcF9zZ19hdHRycyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzY2F0dGVybGlzdCAqc2dsLAorCQkgaW50IG5lbnRzLCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIsCisJCSBzdHJ1Y3QgZG1hX2F0dHJzICphdHRycykKKwordm9pZAorZG1hX3VubWFwX3NnX2F0dHJzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZ2wsCisJCSAgIGludCBuZW50cywgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyLAorCQkgICBzdHJ1Y3QgZG1hX2F0dHJzICphdHRycykKKworVGhlIGZvdXIgZnVuY3Rpb25zIGFib3ZlIGFyZSBqdXN0IGxpa2UgdGhlIGNvdW50ZXJwYXJ0IGZ1bmN0aW9ucword2l0aG91dCB0aGUgX2F0dHJzIHN1ZmZpeGVzLCBleGNlcHQgdGhhdCB0aGV5IHBhc3MgYW4gb3B0aW9uYWwKK3N0cnVjdCBkbWFfYXR0cnMqLgorCitzdHJ1Y3QgZG1hX2F0dHJzIGVuY2Fwc3VsYXRlcyBhIHNldCBvZiAiRE1BIGF0dHJpYnV0ZXMiLiBGb3IgdGhlCitkZWZpbml0aW9uIG9mIHN0cnVjdCBkbWFfYXR0cnMgc2VlIGxpbnV4L2RtYS1hdHRycy5oLgorCitUaGUgaW50ZXJwcmV0YXRpb24gb2YgRE1BIGF0dHJpYnV0ZXMgaXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljLCBhbmQKK2VhY2ggYXR0cmlidXRlIHNob3VsZCBiZSBkb2N1bWVudGVkIGluIERvY3VtZW50YXRpb24vRE1BLWF0dHJpYnV0ZXMudHh0LgorCitJZiBzdHJ1Y3QgZG1hX2F0dHJzKiBpcyBOVUxMLCB0aGUgc2VtYW50aWNzIG9mIGVhY2ggb2YgdGhlc2UKK2Z1bmN0aW9ucyBpcyBpZGVudGljYWwgdG8gdGhvc2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb24KK3dpdGhvdXQgdGhlIF9hdHRycyBzdWZmaXguIEFzIGEgcmVzdWx0IGRtYV9tYXBfc2luZ2xlX2F0dHJzKCkKK2NhbiBnZW5lcmFsbHkgcmVwbGFjZSBkbWFfbWFwX3NpbmdsZSgpLCBldGMuCisKK0FzIGFuIGV4YW1wbGUgb2YgdGhlIHVzZSBvZiB0aGUgKl9hdHRycyBmdW5jdGlvbnMsIGhlcmUncyBob3cKK3lvdSBjb3VsZCBwYXNzIGFuIGF0dHJpYnV0ZSBETUFfQVRUUl9GT08gd2hlbiBtYXBwaW5nIG1lbW9yeQorZm9yIERNQToKKworI2luY2x1ZGUgPGxpbnV4L2RtYS1hdHRycy5oPgorLyogRE1BX0FUVFJfRk9PIHNob3VsZCBiZSBkZWZpbmVkIGluIGxpbnV4L2RtYS1hdHRycy5oIGFuZAorICogZG9jdW1lbnRlZCBpbiBEb2N1bWVudGF0aW9uL0RNQS1hdHRyaWJ1dGVzLnR4dCAqLworLi4uCisKKwlERUZJTkVfRE1BX0FUVFJTKGF0dHJzKTsKKwlkbWFfc2V0X2F0dHIoRE1BX0FUVFJfRk9PLCAmYXR0cnMpOworCS4uLi4KKwluID0gZG1hX21hcF9zZ19hdHRycyhkZXYsIHNnLCBuZW50cywgRE1BX1RPX0RFVklDRSwgJmF0dHIpOworCS4uLi4KKworQXJjaGl0ZWN0dXJlcyB0aGF0IGNhcmUgYWJvdXQgRE1BX0FUVFJfRk9PIHdvdWxkIGNoZWNrIGZvciBpdHMKK3ByZXNlbmNlIGluIHRoZWlyIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgbWFwcGluZyBhbmQgdW5tYXBwaW5nCityb3V0aW5lcywgZS5nLjoKKwordm9pZCB3aGl6Y29fZG1hX21hcF9zZ19hdHRycyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGRtYV9hZGRyX3QgZG1hX2FkZHIsCisJCQkgICAgIHNpemVfdCBzaXplLCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIsCisJCQkgICAgIHN0cnVjdCBkbWFfYXR0cnMgKmF0dHJzKQoreworCS4uLi4KKwlpbnQgZm9vID0gIGRtYV9nZXRfYXR0cihETUFfQVRUUl9GT08sIGF0dHJzKTsKKwkuLi4uCisJaWYgKGZvbykKKwkJLyogdHdpenpsZSB0aGUgZnJvYm5venpsZSAqLworCS4uLi4KKworCitQYXJ0IElJIC0gQWR2YW5jZWQgZG1hXyB1c2FnZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2FybmluZzogVGhlc2UgcGllY2VzIG9mIHRoZSBETUEgQVBJIHNob3VsZCBub3QgYmUgdXNlZCBpbiB0aGUKK21ham9yaXR5IG9mIGNhc2VzLCBzaW5jZSB0aGV5IGNhdGVyIGZvciB1bmxpa2VseSBjb3JuZXIgY2FzZXMgdGhhdAorZG9uJ3QgYmVsb25nIGluIHVzdWFsIGRyaXZlcnMuCisKK0lmIHlvdSBkb24ndCB1bmRlcnN0YW5kIGhvdyBjYWNoZSBsaW5lIGNvaGVyZW5jeSB3b3JrcyBiZXR3ZWVuIGEKK3Byb2Nlc3NvciBhbmQgYW4gSS9PIGRldmljZSwgeW91IHNob3VsZCBub3QgYmUgdXNpbmcgdGhpcyBwYXJ0IG9mIHRoZQorQVBJIGF0IGFsbC4KKwordm9pZCAqCitkbWFfYWxsb2Nfbm9uY29oZXJlbnQoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwKKwkJCSAgICAgICBkbWFfYWRkcl90ICpkbWFfaGFuZGxlLCBnZnBfdCBmbGFnKQorCitJZGVudGljYWwgdG8gZG1hX2FsbG9jX2NvaGVyZW50KCkgZXhjZXB0IHRoYXQgdGhlIHBsYXRmb3JtIHdpbGwKK2Nob29zZSB0byByZXR1cm4gZWl0aGVyIGNvbnNpc3RlbnQgb3Igbm9uLWNvbnNpc3RlbnQgbWVtb3J5IGFzIGl0IHNlZXMKK2ZpdC4gIEJ5IHVzaW5nIHRoaXMgQVBJLCB5b3UgYXJlIGd1YXJhbnRlZWluZyB0byB0aGUgcGxhdGZvcm0gdGhhdCB5b3UKK2hhdmUgYWxsIHRoZSBjb3JyZWN0IGFuZCBuZWNlc3Nhcnkgc3luYyBwb2ludHMgZm9yIHRoaXMgbWVtb3J5IGluIHRoZQorZHJpdmVyIHNob3VsZCBpdCBjaG9vc2UgdG8gcmV0dXJuIG5vbi1jb25zaXN0ZW50IG1lbW9yeS4KKworTm90ZTogd2hlcmUgdGhlIHBsYXRmb3JtIGNhbiByZXR1cm4gY29uc2lzdGVudCBtZW1vcnksIGl0IHdpbGwKK2d1YXJhbnRlZSB0aGF0IHRoZSBzeW5jIHBvaW50cyBiZWNvbWUgbm9wcy4KKworV2FybmluZzogIEhhbmRsaW5nIG5vbi1jb25zaXN0ZW50IG1lbW9yeSBpcyBhIHJlYWwgcGFpbi4gIFlvdSBzaG91bGQKK29ubHkgdXNlIHRoaXMgQVBJIGlmIHlvdSBwb3NpdGl2ZWx5IGtub3cgeW91ciBkcml2ZXIgd2lsbCBiZQorcmVxdWlyZWQgdG8gd29yayBvbiBvbmUgb2YgdGhlIHJhcmUgKHVzdWFsbHkgbm9uLVBDSSkgYXJjaGl0ZWN0dXJlcwordGhhdCBzaW1wbHkgY2Fubm90IG1ha2UgY29uc2lzdGVudCBtZW1vcnkuCisKK3ZvaWQKK2RtYV9mcmVlX25vbmNvaGVyZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsIHZvaWQgKmNwdV9hZGRyLAorCQkJICAgICAgZG1hX2FkZHJfdCBkbWFfaGFuZGxlKQorCitGcmVlIG1lbW9yeSBhbGxvY2F0ZWQgYnkgdGhlIG5vbmNvbnNpc3RlbnQgQVBJLiAgQWxsIHBhcmFtZXRlcnMgbXVzdAorYmUgaWRlbnRpY2FsIHRvIHRob3NlIHBhc3NlZCBpbiAoYW5kIHJldHVybmVkIGJ5CitkbWFfYWxsb2Nfbm9uY29oZXJlbnQoKSkuCisKK2ludAorZG1hX2dldF9jYWNoZV9hbGlnbm1lbnQodm9pZCkKKworUmV0dXJucyB0aGUgcHJvY2Vzc29yIGNhY2hlIGFsaWdubWVudC4gIFRoaXMgaXMgdGhlIGFic29sdXRlIG1pbmltdW0KK2FsaWdubWVudCAqYW5kKiB3aWR0aCB0aGF0IHlvdSBtdXN0IG9ic2VydmUgd2hlbiBlaXRoZXIgbWFwcGluZworbWVtb3J5IG9yIGRvaW5nIHBhcnRpYWwgZmx1c2hlcy4KKworTm90ZXM6IFRoaXMgQVBJIG1heSByZXR1cm4gYSBudW1iZXIgKmxhcmdlciogdGhhbiB0aGUgYWN0dWFsIGNhY2hlCitsaW5lLCBidXQgaXQgd2lsbCBndWFyYW50ZWUgdGhhdCBvbmUgb3IgbW9yZSBjYWNoZSBsaW5lcyBmaXQgZXhhY3RseQoraW50byB0aGUgd2lkdGggcmV0dXJuZWQgYnkgdGhpcyBjYWxsLiAgSXQgd2lsbCBhbHNvIGFsd2F5cyBiZSBhIHBvd2VyCitvZiB0d28gZm9yIGVhc3kgYWxpZ25tZW50LgorCit2b2lkCitkbWFfY2FjaGVfc3luYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnZhZGRyLCBzaXplX3Qgc2l6ZSwKKwkgICAgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQorCitEbyBhIHBhcnRpYWwgc3luYyBvZiBtZW1vcnkgdGhhdCB3YXMgYWxsb2NhdGVkIGJ5CitkbWFfYWxsb2Nfbm9uY29oZXJlbnQoKSwgc3RhcnRpbmcgYXQgdmlydHVhbCBhZGRyZXNzIHZhZGRyIGFuZAorY29udGludWluZyBvbiBmb3Igc2l6ZS4gIEFnYWluLCB5b3UgKm11c3QqIG9ic2VydmUgdGhlIGNhY2hlIGxpbmUKK2JvdW5kYXJpZXMgd2hlbiBkb2luZyB0aGlzLgorCitpbnQKK2RtYV9kZWNsYXJlX2NvaGVyZW50X21lbW9yeShzdHJ1Y3QgZGV2aWNlICpkZXYsIHBoeXNfYWRkcl90IHBoeXNfYWRkciwKKwkJCSAgICBkbWFfYWRkcl90IGRldmljZV9hZGRyLCBzaXplX3Qgc2l6ZSwgaW50CisJCQkgICAgZmxhZ3MpCisKK0RlY2xhcmUgcmVnaW9uIG9mIG1lbW9yeSB0byBiZSBoYW5kZWQgb3V0IGJ5IGRtYV9hbGxvY19jb2hlcmVudCgpIHdoZW4KK2l0J3MgYXNrZWQgZm9yIGNvaGVyZW50IG1lbW9yeSBmb3IgdGhpcyBkZXZpY2UuCisKK3BoeXNfYWRkciBpcyB0aGUgQ1BVIHBoeXNpY2FsIGFkZHJlc3MgdG8gd2hpY2ggdGhlIG1lbW9yeSBpcyBjdXJyZW50bHkKK2Fzc2lnbmVkICh0aGlzIHdpbGwgYmUgaW9yZW1hcHBlZCBzbyB0aGUgQ1BVIGNhbiBhY2Nlc3MgdGhlIHJlZ2lvbikuCisKK2RldmljZV9hZGRyIGlzIHRoZSBETUEgYWRkcmVzcyB0aGUgZGV2aWNlIG5lZWRzIHRvIGJlIHByb2dyYW1tZWQKK3dpdGggdG8gYWN0dWFsbHkgYWRkcmVzcyB0aGlzIG1lbW9yeSAodGhpcyB3aWxsIGJlIGhhbmRlZCBvdXQgYXMgdGhlCitkbWFfYWRkcl90IGluIGRtYV9hbGxvY19jb2hlcmVudCgpKS4KKworc2l6ZSBpcyB0aGUgc2l6ZSBvZiB0aGUgYXJlYSAobXVzdCBiZSBtdWx0aXBsZXMgb2YgUEFHRV9TSVpFKS4KKworZmxhZ3MgY2FuIGJlIE9SZWQgdG9nZXRoZXIgYW5kIGFyZToKKworRE1BX01FTU9SWV9NQVAgLSByZXF1ZXN0IHRoYXQgdGhlIG1lbW9yeSByZXR1cm5lZCBmcm9tCitkbWFfYWxsb2NfY29oZXJlbnQoKSBiZSBkaXJlY3RseSB3cml0YWJsZS4KKworRE1BX01FTU9SWV9JTyAtIHJlcXVlc3QgdGhhdCB0aGUgbWVtb3J5IHJldHVybmVkIGZyb20KK2RtYV9hbGxvY19jb2hlcmVudCgpIGJlIGFkZHJlc3NhYmxlIHVzaW5nIHJlYWQoKS93cml0ZSgpL21lbWNweV90b2lvKCkgZXRjLgorCitPbmUgb3IgYm90aCBvZiB0aGVzZSBmbGFncyBtdXN0IGJlIHByZXNlbnQuCisKK0RNQV9NRU1PUllfSU5DTFVERVNfQ0hJTERSRU4gLSBtYWtlIHRoZSBkZWNsYXJlZCBtZW1vcnkgYmUgYWxsb2NhdGVkIGJ5CitkbWFfYWxsb2NfY29oZXJlbnQgb2YgYW55IGNoaWxkIGRldmljZXMgb2YgdGhpcyBvbmUgKGZvciBtZW1vcnkgcmVzaWRpbmcKK29uIGEgYnJpZGdlKS4KKworRE1BX01FTU9SWV9FWENMVVNJVkUgLSBvbmx5IGFsbG9jYXRlIG1lbW9yeSBmcm9tIHRoZSBkZWNsYXJlZCByZWdpb25zLiAKK0RvIG5vdCBhbGxvdyBkbWFfYWxsb2NfY29oZXJlbnQoKSB0byBmYWxsIGJhY2sgdG8gc3lzdGVtIG1lbW9yeSB3aGVuCitpdCdzIG91dCBvZiBtZW1vcnkgaW4gdGhlIGRlY2xhcmVkIHJlZ2lvbi4KKworVGhlIHJldHVybiB2YWx1ZSB3aWxsIGJlIGVpdGhlciBETUFfTUVNT1JZX01BUCBvciBETUFfTUVNT1JZX0lPIGFuZAorbXVzdCBjb3JyZXNwb25kIHRvIGEgcGFzc2VkIGluIGZsYWcgKGkuZS4gbm8gcmV0dXJuaW5nIERNQV9NRU1PUllfSU8KK2lmIG9ubHkgRE1BX01FTU9SWV9NQVAgd2VyZSBwYXNzZWQgaW4pIGZvciBzdWNjZXNzIG9yIHplcm8gZm9yCitmYWlsdXJlLgorCitOb3RlLCBmb3IgRE1BX01FTU9SWV9JTyByZXR1cm5zLCBhbGwgc3Vic2VxdWVudCBtZW1vcnkgcmV0dXJuZWQgYnkKK2RtYV9hbGxvY19jb2hlcmVudCgpIG1heSBubyBsb25nZXIgYmUgYWNjZXNzZWQgZGlyZWN0bHksIGJ1dCBpbnN0ZWFkCittdXN0IGJlIGFjY2Vzc2VkIHVzaW5nIHRoZSBjb3JyZWN0IGJ1cyBmdW5jdGlvbnMuICBJZiB5b3VyIGRyaXZlcgoraXNuJ3QgcHJlcGFyZWQgdG8gaGFuZGxlIHRoaXMgY29udGluZ2VuY3ksIGl0IHNob3VsZCBub3Qgc3BlY2lmeQorRE1BX01FTU9SWV9JTyBpbiB0aGUgaW5wdXQgZmxhZ3MuCisKK0FzIGEgc2ltcGxpZmljYXRpb24gZm9yIHRoZSBwbGF0Zm9ybXMsIG9ubHkgKm9uZSogc3VjaCByZWdpb24gb2YKK21lbW9yeSBtYXkgYmUgZGVjbGFyZWQgcGVyIGRldmljZS4KKworRm9yIHJlYXNvbnMgb2YgZWZmaWNpZW5jeSwgbW9zdCBwbGF0Zm9ybXMgY2hvb3NlIHRvIHRyYWNrIHRoZSBkZWNsYXJlZAorcmVnaW9uIG9ubHkgYXQgdGhlIGdyYW51bGFyaXR5IG9mIGEgcGFnZS4gIEZvciBzbWFsbGVyIGFsbG9jYXRpb25zLAoreW91IHNob3VsZCB1c2UgdGhlIGRtYV9wb29sKCkgQVBJLgorCit2b2lkCitkbWFfcmVsZWFzZV9kZWNsYXJlZF9tZW1vcnkoc3RydWN0IGRldmljZSAqZGV2KQorCitSZW1vdmUgdGhlIG1lbW9yeSByZWdpb24gcHJldmlvdXNseSBkZWNsYXJlZCBmcm9tIHRoZSBzeXN0ZW0uICBUaGlzCitBUEkgcGVyZm9ybXMgKm5vKiBpbi11c2UgY2hlY2tpbmcgZm9yIHRoaXMgcmVnaW9uIGFuZCB3aWxsIHJldHVybgordW5jb25kaXRpb25hbGx5IGhhdmluZyByZW1vdmVkIGFsbCB0aGUgcmVxdWlyZWQgc3RydWN0dXJlcy4gIEl0IGlzIHRoZQorZHJpdmVyJ3Mgam9iIHRvIGVuc3VyZSB0aGF0IG5vIHBhcnRzIG9mIHRoaXMgbWVtb3J5IHJlZ2lvbiBhcmUKK2N1cnJlbnRseSBpbiB1c2UuCisKK3ZvaWQgKgorZG1hX21hcmtfZGVjbGFyZWRfbWVtb3J5X29jY3VwaWVkKHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCQkgIGRtYV9hZGRyX3QgZGV2aWNlX2FkZHIsIHNpemVfdCBzaXplKQorCitUaGlzIGlzIHVzZWQgdG8gb2NjdXB5IHNwZWNpZmljIHJlZ2lvbnMgb2YgdGhlIGRlY2xhcmVkIHNwYWNlCisoZG1hX2FsbG9jX2NvaGVyZW50KCkgd2lsbCBoYW5kIG91dCB0aGUgZmlyc3QgZnJlZSByZWdpb24gaXQgZmluZHMpLgorCitkZXZpY2VfYWRkciBpcyB0aGUgKmRldmljZSogYWRkcmVzcyBvZiB0aGUgcmVnaW9uIHJlcXVlc3RlZC4KKworc2l6ZSBpcyB0aGUgc2l6ZSAoYW5kIHNob3VsZCBiZSBhIHBhZ2Utc2l6ZWQgbXVsdGlwbGUpLgorCitUaGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgZWl0aGVyIGEgcG9pbnRlciB0byB0aGUgcHJvY2Vzc29yIHZpcnR1YWwKK2FkZHJlc3Mgb2YgdGhlIG1lbW9yeSwgb3IgYW4gZXJyb3IgKHZpYSBQVFJfRVJSKCkpIGlmIGFueSBwYXJ0IG9mIHRoZQorcmVnaW9uIGlzIG9jY3VwaWVkLgorCitQYXJ0IElJSSAtIERlYnVnIGRyaXZlcnMgdXNlIG9mIHRoZSBETUEtQVBJCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBETUEtQVBJIGFzIGRlc2NyaWJlZCBhYm92ZSBoYXMgc29tZSBjb25zdHJhaW50cy4gRE1BIGFkZHJlc3NlcyBtdXN0IGJlCityZWxlYXNlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgc2l6ZSBmb3IgZXhhbXBsZS4gV2l0aAordGhlIGFkdmVudCBvZiBoYXJkd2FyZSBJT01NVXMgaXQgYmVjb21lcyBtb3JlIGFuZCBtb3JlIGltcG9ydGFudCB0aGF0IGRyaXZlcnMKK2RvIG5vdCB2aW9sYXRlIHRob3NlIGNvbnN0cmFpbnRzLiBJbiB0aGUgd29yc3QgY2FzZSBzdWNoIGEgdmlvbGF0aW9uIGNhbgorcmVzdWx0IGluIGRhdGEgY29ycnVwdGlvbiB1cCB0byBkZXN0cm95ZWQgZmlsZXN5c3RlbXMuCisKK1RvIGRlYnVnIGRyaXZlcnMgYW5kIGZpbmQgYnVncyBpbiB0aGUgdXNhZ2Ugb2YgdGhlIERNQS1BUEkgY2hlY2tpbmcgY29kZSBjYW4KK2JlIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCB3aGljaCB3aWxsIHRlbGwgdGhlIGRldmVsb3BlciBhYm91dCB0aG9zZQordmlvbGF0aW9ucy4gSWYgeW91ciBhcmNoaXRlY3R1cmUgc3VwcG9ydHMgaXQgeW91IGNhbiBzZWxlY3QgdGhlICJFbmFibGUKK2RlYnVnZ2luZyBvZiBETUEtQVBJIHVzYWdlIiBvcHRpb24gaW4geW91ciBrZXJuZWwgY29uZmlndXJhdGlvbi4gRW5hYmxpbmcgdGhpcworb3B0aW9uIGhhcyBhIHBlcmZvcm1hbmNlIGltcGFjdC4gRG8gbm90IGVuYWJsZSBpdCBpbiBwcm9kdWN0aW9uIGtlcm5lbHMuCisKK0lmIHlvdSBib290IHRoZSByZXN1bHRpbmcga2VybmVsIHdpbGwgY29udGFpbiBjb2RlIHdoaWNoIGRvZXMgc29tZSBib29ra2VlcGluZworYWJvdXQgd2hhdCBETUEgbWVtb3J5IHdhcyBhbGxvY2F0ZWQgZm9yIHdoaWNoIGRldmljZS4gSWYgdGhpcyBjb2RlIGRldGVjdHMgYW4KK2Vycm9yIGl0IHByaW50cyBhIHdhcm5pbmcgbWVzc2FnZSB3aXRoIHNvbWUgZGV0YWlscyBpbnRvIHlvdXIga2VybmVsIGxvZy4gQW4KK2V4YW1wbGUgd2FybmluZyBtZXNzYWdlIG1heSBsb29rIGxpa2UgdGhpczoKKworLS0tLS0tLS0tLS0tWyBjdXQgaGVyZSBdLS0tLS0tLS0tLS0tCitXQVJOSU5HOiBhdCAvZGF0YTIvcmVwb3MvbGludXgtMi42LWlvbW11L2xpYi9kbWEtZGVidWcuYzo0NDgKKwljaGVja191bm1hcCsweDIwMy8weDQ5MCgpCitIYXJkd2FyZSBuYW1lOgorZm9yY2VkZXRoIDAwMDA6MDA6MDguMDogRE1BLUFQSTogZGV2aWNlIGRyaXZlciBmcmVlcyBETUEgbWVtb3J5IHdpdGggd3JvbmcKKwlmdW5jdGlvbiBbZGV2aWNlIGFkZHJlc3M9MHgwMDAwMDAwMDY0MDQ0NGJlXSBbc2l6ZT02NiBieXRlc10gW21hcHBlZCBhcworc2luZ2xlXSBbdW5tYXBwZWQgYXMgcGFnZV0KK01vZHVsZXMgbGlua2VkIGluOiBuZnNkIGV4cG9ydGZzIGJyaWRnZSBzdHAgbGxjIHI4MTY5CitQaWQ6IDAsIGNvbW06IHN3YXBwZXIgVGFpbnRlZDogRyAgICAgICAgVyAgMi42LjI4LWRtYXRlc3QtMDkyODktZzhiYjk5YzAgIzEKK0NhbGwgVHJhY2U6CisgPElSUT4gIFs8ZmZmZmZmZmY4MDI0MGIyMj5dIHdhcm5fc2xvd3BhdGgrMHhmMi8weDEzMAorIFs8ZmZmZmZmZmY4MDY0N2I3MD5dIF9zcGluX3VubG9jaysweDEwLzB4MzAKKyBbPGZmZmZmZmZmODA1MzdlNzU+XSB1c2JfaGNkX2xpbmtfdXJiX3RvX2VwKzB4NzUvMHhjMAorIFs8ZmZmZmZmZmY4MDY0N2MyMj5dIF9zcGluX3VubG9ja19pcnFyZXN0b3JlKzB4MTIvMHg0MAorIFs8ZmZmZmZmZmY4MDU1MzQ3Zj5dIG9oY2lfdXJiX2VucXVldWUrMHgxOWYvMHg3YzAKKyBbPGZmZmZmZmZmODAyNTJmOTY+XSBxdWV1ZV93b3JrKzB4NTYvMHg2MAorIFs8ZmZmZmZmZmY4MDIzN2UxMD5dIGVucXVldWVfdGFza19mYWlyKzB4MjAvMHg1MAorIFs8ZmZmZmZmZmY4MDUzOTI3OT5dIHVzYl9oY2Rfc3VibWl0X3VyYisweDM3OS8weGJjMAorIFs8ZmZmZmZmZmY4MDNiNzhjMz5dIGNwdW1hc2tfbmV4dF9hbmQrMHgyMy8weDQwCisgWzxmZmZmZmZmZjgwMjM1MTc3Pl0gZmluZF9idXNpZXN0X2dyb3VwKzB4MjA3LzB4OGEwCisgWzxmZmZmZmZmZjgwNjQ3ODRmPl0gX3NwaW5fbG9ja19pcnFzYXZlKzB4MWYvMHg1MAorIFs8ZmZmZmZmZmY4MDNjN2VhMz5dIGNoZWNrX3VubWFwKzB4MjAzLzB4NDkwCisgWzxmZmZmZmZmZjgwM2M4MjU5Pl0gZGVidWdfZG1hX3VubWFwX3BhZ2UrMHg0OS8weDUwCisgWzxmZmZmZmZmZjgwNDg1ZjI2Pl0gbnZfdHhfZG9uZV9vcHRpbWl6ZWQrMHhjNi8weDJjMAorIFs8ZmZmZmZmZmY4MDQ4NmMxMz5dIG52X25pY19pcnFfb3B0aW1pemVkKzB4NzMvMHgyYjAKKyBbPGZmZmZmZmZmODAyNmRmODQ+XSBoYW5kbGVfSVJRX2V2ZW50KzB4MzQvMHg3MAorIFs8ZmZmZmZmZmY4MDI2ZmZlOT5dIGhhbmRsZV9lZGdlX2lycSsweGM5LzB4MTUwCisgWzxmZmZmZmZmZjgwMjBlM2FiPl0gZG9fSVJRKzB4Y2IvMHgxYzAKKyBbPGZmZmZmZmZmODAyMGMwOTM+XSByZXRfZnJvbV9pbnRyKzB4MC8weGEKKyA8RU9JPiA8ND4tLS1bIGVuZCB0cmFjZSBmNjQzNWE5OGUyYTM4YzBlIF0tLS0KKworVGhlIGRyaXZlciBkZXZlbG9wZXIgY2FuIGZpbmQgdGhlIGRyaXZlciBhbmQgdGhlIGRldmljZSBpbmNsdWRpbmcgYSBzdGFja3RyYWNlCitvZiB0aGUgRE1BLUFQSSBjYWxsIHdoaWNoIGNhdXNlZCB0aGlzIHdhcm5pbmcuCisKK1BlciBkZWZhdWx0IG9ubHkgdGhlIGZpcnN0IGVycm9yIHdpbGwgcmVzdWx0IGluIGEgd2FybmluZyBtZXNzYWdlLiBBbGwgb3RoZXIKK2Vycm9ycyB3aWxsIG9ubHkgc2lsZW50bHkgY291bnRlZC4gVGhpcyBsaW1pdGF0aW9uIGV4aXN0IHRvIHByZXZlbnQgdGhlIGNvZGUKK2Zyb20gZmxvb2RpbmcgeW91ciBrZXJuZWwgbG9nLiBUbyBzdXBwb3J0IGRlYnVnZ2luZyBhIGRldmljZSBkcml2ZXIgdGhpcyBjYW4KK2JlIGRpc2FibGVkIHZpYSBkZWJ1Z2ZzLiBTZWUgdGhlIGRlYnVnZnMgaW50ZXJmYWNlIGRvY3VtZW50YXRpb24gYmVsb3cgZm9yCitkZXRhaWxzLgorCitUaGUgZGVidWdmcyBkaXJlY3RvcnkgZm9yIHRoZSBETUEtQVBJIGRlYnVnZ2luZyBjb2RlIGlzIGNhbGxlZCBkbWEtYXBpLy4gSW4KK3RoaXMgZGlyZWN0b3J5IHRoZSBmb2xsb3dpbmcgZmlsZXMgY2FuIGN1cnJlbnRseSBiZSBmb3VuZDoKKworCWRtYS1hcGkvYWxsX2Vycm9ycwlUaGlzIGZpbGUgY29udGFpbnMgYSBudW1lcmljIHZhbHVlLiBJZiB0aGlzCisJCQkJdmFsdWUgaXMgbm90IGVxdWFsIHRvIHplcm8gdGhlIGRlYnVnZ2luZyBjb2RlCisJCQkJd2lsbCBwcmludCBhIHdhcm5pbmcgZm9yIGV2ZXJ5IGVycm9yIGl0IGZpbmRzCisJCQkJaW50byB0aGUga2VybmVsIGxvZy4gQmUgY2FyZWZ1bCB3aXRoIHRoaXMKKwkJCQlvcHRpb24sIGFzIGl0IGNhbiBlYXNpbHkgZmxvb2QgeW91ciBsb2dzLgorCisJZG1hLWFwaS9kaXNhYmxlZAlUaGlzIHJlYWQtb25seSBmaWxlIGNvbnRhaW5zIHRoZSBjaGFyYWN0ZXIgJ1knCisJCQkJaWYgdGhlIGRlYnVnZ2luZyBjb2RlIGlzIGRpc2FibGVkLiBUaGlzIGNhbgorCQkJCWhhcHBlbiB3aGVuIGl0IHJ1bnMgb3V0IG9mIG1lbW9yeSBvciBpZiBpdCB3YXMKKwkJCQlkaXNhYmxlZCBhdCBib290IHRpbWUKKworCWRtYS1hcGkvZXJyb3JfY291bnQJVGhpcyBmaWxlIGlzIHJlYWQtb25seSBhbmQgc2hvd3MgdGhlIHRvdGFsCisJCQkJbnVtYmVycyBvZiBlcnJvcnMgZm91bmQuCisKKwlkbWEtYXBpL251bV9lcnJvcnMJVGhlIG51bWJlciBpbiB0aGlzIGZpbGUgc2hvd3MgaG93IG1hbnkKKwkJCQl3YXJuaW5ncyB3aWxsIGJlIHByaW50ZWQgdG8gdGhlIGtlcm5lbCBsb2cKKwkJCQliZWZvcmUgaXQgc3RvcHMuIFRoaXMgbnVtYmVyIGlzIGluaXRpYWxpemVkIHRvCisJCQkJb25lIGF0IHN5c3RlbSBib290IGFuZCBiZSBzZXQgYnkgd3JpdGluZyBpbnRvCisJCQkJdGhpcyBmaWxlCisKKwlkbWEtYXBpL21pbl9mcmVlX2VudHJpZXMKKwkJCQlUaGlzIHJlYWQtb25seSBmaWxlIGNhbiBiZSByZWFkIHRvIGdldCB0aGUKKwkJCQltaW5pbXVtIG51bWJlciBvZiBmcmVlIGRtYV9kZWJ1Z19lbnRyaWVzIHRoZQorCQkJCWFsbG9jYXRvciBoYXMgZXZlciBzZWVuLiBJZiB0aGlzIHZhbHVlIGdvZXMKKwkJCQlkb3duIHRvIHplcm8gdGhlIGNvZGUgd2lsbCBkaXNhYmxlIGl0c2VsZgorCQkJCWJlY2F1c2UgaXQgaXMgbm90IGxvbmdlciByZWxpYWJsZS4KKworCWRtYS1hcGkvbnVtX2ZyZWVfZW50cmllcworCQkJCVRoZSBjdXJyZW50IG51bWJlciBvZiBmcmVlIGRtYV9kZWJ1Z19lbnRyaWVzCisJCQkJaW4gdGhlIGFsbG9jYXRvci4KKworCWRtYS1hcGkvZHJpdmVyLWZpbHRlcgorCQkJCVlvdSBjYW4gd3JpdGUgYSBuYW1lIG9mIGEgZHJpdmVyIGludG8gdGhpcyBmaWxlCisJCQkJdG8gbGltaXQgdGhlIGRlYnVnIG91dHB1dCB0byByZXF1ZXN0cyBmcm9tIHRoYXQKKwkJCQlwYXJ0aWN1bGFyIGRyaXZlci4gV3JpdGUgYW4gZW1wdHkgc3RyaW5nIHRvCisJCQkJdGhhdCBmaWxlIHRvIGRpc2FibGUgdGhlIGZpbHRlciBhbmQgc2VlCisJCQkJYWxsIGVycm9ycyBhZ2Fpbi4KKworSWYgeW91IGhhdmUgdGhpcyBjb2RlIGNvbXBpbGVkIGludG8geW91ciBrZXJuZWwgaXQgd2lsbCBiZSBlbmFibGVkIGJ5IGRlZmF1bHQuCitJZiB5b3Ugd2FudCB0byBib290IHdpdGhvdXQgdGhlIGJvb2trZWVwaW5nIGFueXdheSB5b3UgY2FuIHByb3ZpZGUKKydkbWFfZGVidWc9b2ZmJyBhcyBhIGJvb3QgcGFyYW1ldGVyLiBUaGlzIHdpbGwgZGlzYWJsZSBETUEtQVBJIGRlYnVnZ2luZy4KK05vdGljZSB0aGF0IHlvdSBjYW4gbm90IGVuYWJsZSBpdCBhZ2FpbiBhdCBydW50aW1lLiBZb3UgaGF2ZSB0byByZWJvb3QgdG8gZG8KK3NvLgorCitJZiB5b3Ugd2FudCB0byBzZWUgZGVidWcgbWVzc2FnZXMgb25seSBmb3IgYSBzcGVjaWFsIGRldmljZSBkcml2ZXIgeW91IGNhbgorc3BlY2lmeSB0aGUgZG1hX2RlYnVnX2RyaXZlcj08ZHJpdmVybmFtZT4gcGFyYW1ldGVyLiBUaGlzIHdpbGwgZW5hYmxlIHRoZQorZHJpdmVyIGZpbHRlciBhdCBib290IHRpbWUuIFRoZSBkZWJ1ZyBjb2RlIHdpbGwgb25seSBwcmludCBlcnJvcnMgZm9yIHRoYXQKK2RyaXZlciBhZnRlcndhcmRzLiBUaGlzIGZpbHRlciBjYW4gYmUgZGlzYWJsZWQgb3IgY2hhbmdlZCBsYXRlciB1c2luZyBkZWJ1Z2ZzLgorCitXaGVuIHRoZSBjb2RlIGRpc2FibGVzIGl0c2VsZiBhdCBydW50aW1lIHRoaXMgaXMgbW9zdCBsaWtlbHkgYmVjYXVzZSBpdCByYW4KK291dCBvZiBkbWFfZGVidWdfZW50cmllcy4gVGhlc2UgZW50cmllcyBhcmUgcHJlYWxsb2NhdGVkIGF0IGJvb3QuIFRoZSBudW1iZXIKK29mIHByZWFsbG9jYXRlZCBlbnRyaWVzIGlzIGRlZmluZWQgcGVyIGFyY2hpdGVjdHVyZS4gSWYgaXQgaXMgdG9vIGxvdyBmb3IgeW91Citib290IHdpdGggJ2RtYV9kZWJ1Z19lbnRyaWVzPTx5b3VyX2Rlc2lyZWRfbnVtYmVyPicgdG8gb3ZlcndyaXRlIHRoZQorYXJjaGl0ZWN0dXJhbCBkZWZhdWx0LgorCit2b2lkIGRlYnVnX2RtYXBfbWFwcGluZ19lcnJvcihzdHJ1Y3QgZGV2aWNlICpkZXYsIGRtYV9hZGRyX3QgZG1hX2FkZHIpOworCitkbWEtZGVidWcgaW50ZXJmYWNlIGRlYnVnX2RtYV9tYXBwaW5nX2Vycm9yKCkgdG8gZGVidWcgZHJpdmVycyB0aGF0IGZhaWwKK3RvIGNoZWNrIERNQSBtYXBwaW5nIGVycm9ycyBvbiBhZGRyZXNzZXMgcmV0dXJuZWQgYnkgZG1hX21hcF9zaW5nbGUoKSBhbmQKK2RtYV9tYXBfcGFnZSgpIGludGVyZmFjZXMuIFRoaXMgaW50ZXJmYWNlIGNsZWFycyBhIGZsYWcgc2V0IGJ5CitkZWJ1Z19kbWFfbWFwX3BhZ2UoKSB0byBpbmRpY2F0ZSB0aGF0IGRtYV9tYXBwaW5nX2Vycm9yKCkgaGFzIGJlZW4gY2FsbGVkIGJ5Cit0aGUgZHJpdmVyLiBXaGVuIGRyaXZlciBkb2VzIHVubWFwLCBkZWJ1Z19kbWFfdW5tYXAoKSBjaGVja3MgdGhlIGZsYWcgYW5kIGlmCit0aGlzIGZsYWcgaXMgc3RpbGwgc2V0LCBwcmludHMgd2FybmluZyBtZXNzYWdlIHRoYXQgaW5jbHVkZXMgY2FsbCB0cmFjZSB0aGF0CitsZWFkcyB1cCB0byB0aGUgdW5tYXAuIFRoaXMgaW50ZXJmYWNlIGNhbiBiZSBjYWxsZWQgZnJvbSBkbWFfbWFwcGluZ19lcnJvcigpCityb3V0aW5lcyB0byBlbmFibGUgRE1BIG1hcHBpbmcgZXJyb3IgY2hlY2sgZGVidWdnaW5nLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RNQS1JU0EtTFBDLnR4dCBiL0RvY3VtZW50YXRpb24vRE1BLUlTQS1MUEMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxYTE5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RNQS1JU0EtTFBDLnR4dApAQCAtMCwwICsxLDE1MSBAQAorICAgICAgICAgICAgICAgICAgICAgICAgRE1BIHdpdGggSVNBIGFuZCBMUEMgZGV2aWNlcworICAgICAgICAgICAgICAgICAgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgICAgICAgICAgICAgICAgICAgUGllcnJlIE9zc21hbiA8ZHJ6ZXVzQGRyemV1cy5jeD4KKworVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgaG93IHRvIGRvIERNQSB0cmFuc2ZlcnMgdXNpbmcgdGhlIG9sZCBJU0EgRE1BCitjb250cm9sbGVyLiBFdmVuIHRob3VnaCBJU0EgaXMgbW9yZSBvciBsZXNzIGRlYWQgdG9kYXkgdGhlIExQQyBidXMKK3VzZXMgdGhlIHNhbWUgRE1BIHN5c3RlbSBzbyBpdCB3aWxsIGJlIGFyb3VuZCBmb3IgcXVpdGUgc29tZSB0aW1lLgorCitQYXJ0IEkgLSBIZWFkZXJzIGFuZCBkZXBlbmRlbmNpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUbyBkbyBJU0Egc3R5bGUgRE1BIHlvdSBuZWVkIHRvIGluY2x1ZGUgdHdvIGhlYWRlcnM6CisKKyNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgorI2luY2x1ZGUgPGFzbS9kbWEuaD4KKworVGhlIGZpcnN0IGlzIHRoZSBnZW5lcmljIERNQSBBUEkgdXNlZCB0byBjb252ZXJ0IHZpcnR1YWwgYWRkcmVzc2VzIHRvCitidXMgYWRkcmVzc2VzIChzZWUgRG9jdW1lbnRhdGlvbi9ETUEtQVBJLnR4dCBmb3IgZGV0YWlscykuCisKK1RoZSBzZWNvbmQgY29udGFpbnMgdGhlIHJvdXRpbmVzIHNwZWNpZmljIHRvIElTQSBETUEgdHJhbnNmZXJzLiBTaW5jZQordGhpcyBpcyBub3QgcHJlc2VudCBvbiBhbGwgcGxhdGZvcm1zIG1ha2Ugc3VyZSB5b3UgY29uc3RydWN0IHlvdXIKK0tjb25maWcgdG8gYmUgZGVwZW5kZW50IG9uIElTQV9ETUFfQVBJIChub3QgSVNBKSBzbyB0aGF0IG5vYm9keSB0cmllcwordG8gYnVpbGQgeW91ciBkcml2ZXIgb24gdW5zdXBwb3J0ZWQgcGxhdGZvcm1zLgorCitQYXJ0IElJIC0gQnVmZmVyIGFsbG9jYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgSVNBIERNQSBjb250cm9sbGVyIGhhcyBzb21lIHZlcnkgc3RyaWN0IHJlcXVpcmVtZW50cyBvbiB3aGljaAorbWVtb3J5IGl0IGNhbiBhY2Nlc3Mgc28gZXh0cmEgY2FyZSBtdXN0IGJlIHRha2VuIHdoZW4gYWxsb2NhdGluZworYnVmZmVycy4KKworKFlvdSB1c3VhbGx5IG5lZWQgYSBzcGVjaWFsIGJ1ZmZlciBmb3IgRE1BIHRyYW5zZmVycyBpbnN0ZWFkIG9mCit0cmFuc2ZlcnJpbmcgZGlyZWN0bHkgdG8gYW5kIGZyb20geW91ciBub3JtYWwgZGF0YSBzdHJ1Y3R1cmVzLikKKworVGhlIERNQS1hYmxlIGFkZHJlc3Mgc3BhY2UgaXMgdGhlIGxvd2VzdCAxNiBNQiBvZiBfcGh5c2ljYWxfIG1lbW9yeS4KK0Fsc28gdGhlIHRyYW5zZmVyIGJsb2NrIG1heSBub3QgY3Jvc3MgcGFnZSBib3VuZGFyaWVzICh3aGljaCBhcmUgNjQKK29yIDEyOCBLaUIgZGVwZW5kaW5nIG9uIHdoaWNoIGNoYW5uZWwgeW91IHVzZSkuCisKK0luIG9yZGVyIHRvIGFsbG9jYXRlIGEgcGllY2Ugb2YgbWVtb3J5IHRoYXQgc2F0aXNmaWVzIGFsbCB0aGVzZQorcmVxdWlyZW1lbnRzIHlvdSBwYXNzIHRoZSBmbGFnIEdGUF9ETUEgdG8ga21hbGxvYy4KKworVW5mb3J0dW5hdGVseSB0aGUgbWVtb3J5IGF2YWlsYWJsZSBmb3IgSVNBIERNQSBpcyBzY2FyY2Ugc28gdW5sZXNzIHlvdQorYWxsb2NhdGUgdGhlIG1lbW9yeSBkdXJpbmcgYm9vdC11cCBpdCdzIGEgZ29vZCBpZGVhIHRvIGFsc28gcGFzcworX19HRlBfUkVQRUFUIGFuZCBfX0dGUF9OT1dBUk4gdG8gbWFrZSB0aGUgYWxsb2NhdGVyIHRyeSBhIGJpdCBoYXJkZXIuCisKKyhUaGlzIHNjYXJjaXR5IGFsc28gbWVhbnMgdGhhdCB5b3Ugc2hvdWxkIGFsbG9jYXRlIHRoZSBidWZmZXIgYXMKK2Vhcmx5IGFzIHBvc3NpYmxlIGFuZCBub3QgcmVsZWFzZSBpdCB1bnRpbCB0aGUgZHJpdmVyIGlzIHVubG9hZGVkLikKKworUGFydCBJSUkgLSBBZGRyZXNzIHRyYW5zbGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVG8gdHJhbnNsYXRlIHRoZSB2aXJ0dWFsIGFkZHJlc3MgdG8gYSBidXMgYWRkcmVzcywgdXNlIHRoZSBub3JtYWwgRE1BCitBUEkuIERvIF9ub3RfIHVzZSBpc2FfdmlydF90b19waHlzKCkgZXZlbiB0aG91Z2ggaXQgZG9lcyB0aGUgc2FtZQordGhpbmcuIFRoZSByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCB0aGUgZnVuY3Rpb24gaXNhX3ZpcnRfdG9fcGh5cygpCit3aWxsIHJlcXVpcmUgYSBLY29uZmlnIGRlcGVuZGVuY3kgdG8gSVNBLCBub3QganVzdCBJU0FfRE1BX0FQSSB3aGljaAoraXMgcmVhbGx5IGFsbCB5b3UgbmVlZC4gUmVtZW1iZXIgdGhhdCBldmVuIHRob3VnaCB0aGUgRE1BIGNvbnRyb2xsZXIKK2hhcyBpdHMgb3JpZ2lucyBpbiBJU0EgaXQgaXMgdXNlZCBlbHNld2hlcmUuCisKK05vdGU6IHg4Nl82NCBoYWQgYSBicm9rZW4gRE1BIEFQSSB3aGVuIGl0IGNhbWUgdG8gSVNBIGJ1dCBoYXMgc2luY2UKK2JlZW4gZml4ZWQuIElmIHlvdXIgYXJjaCBoYXMgcHJvYmxlbXMgdGhlbiBmaXggdGhlIERNQSBBUEkgaW5zdGVhZCBvZgorcmV2ZXJ0aW5nIHRvIHRoZSBJU0EgZnVuY3Rpb25zLgorCitQYXJ0IElWIC0gQ2hhbm5lbHMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitBIG5vcm1hbCBJU0EgRE1BIGNvbnRyb2xsZXIgaGFzIDggY2hhbm5lbHMuIFRoZSBsb3dlciBmb3VyIGFyZSBmb3IKKzgtYml0IHRyYW5zZmVycyBhbmQgdGhlIHVwcGVyIGZvdXIgYXJlIGZvciAxNi1iaXQgdHJhbnNmZXJzLgorCisoQWN0dWFsbHkgdGhlIERNQSBjb250cm9sbGVyIGlzIHJlYWxseSB0d28gc2VwYXJhdGUgY29udHJvbGxlcnMgd2hlcmUKK2NoYW5uZWwgNCBpcyB1c2VkIHRvIGdpdmUgRE1BIGFjY2VzcyBmb3IgdGhlIHNlY29uZCBjb250cm9sbGVyICgwLTMpLgorVGhpcyBtZWFucyB0aGF0IG9mIHRoZSBmb3VyIDE2LWJpdHMgY2hhbm5lbHMgb25seSB0aHJlZSBhcmUgdXNhYmxlLikKKworWW91IGFsbG9jYXRlIHRoZXNlIGluIGEgc2ltaWxhciBmYXNoaW9uIGFzIGFsbCBiYXNpYyByZXNvdXJjZXM6CisKK2V4dGVybiBpbnQgcmVxdWVzdF9kbWEodW5zaWduZWQgaW50IGRtYW5yLCBjb25zdCBjaGFyICogZGV2aWNlX2lkKTsKK2V4dGVybiB2b2lkIGZyZWVfZG1hKHVuc2lnbmVkIGludCBkbWFucik7CisKK1RoZSBhYmlsaXR5IHRvIHVzZSAxNi1iaXQgb3IgOC1iaXQgdHJhbnNmZXJzIGlzIF9ub3RfIHVwIHRvIHlvdSBhcyBhCitkcml2ZXIgYXV0aG9yIGJ1dCBkZXBlbmRzIG9uIHdoYXQgdGhlIGhhcmR3YXJlIHN1cHBvcnRzLiBDaGVjayB5b3VyCitzcGVjcyBvciB0ZXN0IGRpZmZlcmVudCBjaGFubmVscy4KKworUGFydCBWIC0gVHJhbnNmZXIgZGF0YQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOb3cgZm9yIHRoZSBnb29kIHN0dWZmLCB0aGUgYWN0dWFsIERNQSB0cmFuc2Zlci4gOikKKworQmVmb3JlIHlvdSB1c2UgYW55IElTQSBETUEgcm91dGluZXMgeW91IG5lZWQgdG8gY2xhaW0gdGhlIERNQSBsb2NrCit1c2luZyBjbGFpbV9kbWFfbG9jaygpLiBUaGUgcmVhc29uIGlzIHRoYXQgc29tZSBETUEgb3BlcmF0aW9ucyBhcmUKK25vdCBhdG9taWMgc28gb25seSBvbmUgZHJpdmVyIG1heSBmaWRkbGUgd2l0aCB0aGUgcmVnaXN0ZXJzIGF0IGEKK3RpbWUuCisKK1RoZSBmaXJzdCB0aW1lIHlvdSB1c2UgdGhlIERNQSBjb250cm9sbGVyIHlvdSBzaG91bGQgY2FsbAorY2xlYXJfZG1hX2ZmKCkuIFRoaXMgY2xlYXJzIGFuIGludGVybmFsIHJlZ2lzdGVyIGluIHRoZSBETUEKK2NvbnRyb2xsZXIgdGhhdCBpcyB1c2VkIGZvciB0aGUgbm9uLWF0b21pYyBvcGVyYXRpb25zLiBBcyBsb25nIGFzIHlvdQorKGFuZCBldmVyeW9uZSBlbHNlKSB1c2VzIHRoZSBsb2NraW5nIGZ1bmN0aW9ucyB0aGVuIHlvdSBvbmx5IG5lZWQgdG8KK3Jlc2V0IHRoaXMgb25jZS4KKworTmV4dCwgeW91IHRlbGwgdGhlIGNvbnRyb2xsZXIgaW4gd2hpY2ggZGlyZWN0aW9uIHlvdSBpbnRlbmQgdG8gZG8gdGhlCit0cmFuc2ZlciB1c2luZyBzZXRfZG1hX21vZGUoKS4gQ3VycmVudGx5IHlvdSBoYXZlIHRoZSBvcHRpb25zCitETUFfTU9ERV9SRUFEIGFuZCBETUFfTU9ERV9XUklURS4KKworU2V0IHRoZSBhZGRyZXNzIGZyb20gd2hlcmUgdGhlIHRyYW5zZmVyIHNob3VsZCBzdGFydCAodGhpcyBuZWVkcyB0bworYmUgMTYtYml0IGFsaWduZWQgZm9yIDE2LWJpdCB0cmFuc2ZlcnMpIGFuZCBob3cgbWFueSBieXRlcyB0bwordHJhbnNmZXIuIE5vdGUgdGhhdCBpdCdzIF9ieXRlc18uIFRoZSBETUEgcm91dGluZXMgd2lsbCBkbyBhbGwgdGhlCityZXF1aXJlZCB0cmFuc2xhdGlvbiB0byB2YWx1ZXMgdGhhdCB0aGUgRE1BIGNvbnRyb2xsZXIgdW5kZXJzdGFuZHMuCisKK1RoZSBmaW5hbCBzdGVwIGlzIGVuYWJsaW5nIHRoZSBETUEgY2hhbm5lbCBhbmQgcmVsZWFzaW5nIHRoZSBETUEKK2xvY2suCisKK09uY2UgdGhlIERNQSB0cmFuc2ZlciBpcyBmaW5pc2hlZCAob3IgdGltZWQgb3V0KSB5b3Ugc2hvdWxkIGRpc2FibGUKK3RoZSBjaGFubmVsIGFnYWluLiBZb3Ugc2hvdWxkIGFsc28gY2hlY2sgZ2V0X2RtYV9yZXNpZHVlKCkgdG8gbWFrZQorc3VyZSB0aGF0IGFsbCBkYXRhIGhhcyBiZWVuIHRyYW5zZmVycmVkLgorCitFeGFtcGxlOgorCitpbnQgZmxhZ3MsIHJlc2lkdWU7CisKK2ZsYWdzID0gY2xhaW1fZG1hX2xvY2soKTsKKworY2xlYXJfZG1hX2ZmKCk7CisKK3NldF9kbWFfbW9kZShjaGFubmVsLCBETUFfTU9ERV9XUklURSk7CitzZXRfZG1hX2FkZHIoY2hhbm5lbCwgcGh5c19hZGRyKTsKK3NldF9kbWFfY291bnQoY2hhbm5lbCwgbnVtX2J5dGVzKTsKKworZG1hX2VuYWJsZShjaGFubmVsKTsKKworcmVsZWFzZV9kbWFfbG9jayhmbGFncyk7CisKK3doaWxlICghZGV2aWNlX2RvbmUoKSk7CisKK2ZsYWdzID0gY2xhaW1fZG1hX2xvY2soKTsKKworZG1hX2Rpc2FibGUoY2hhbm5lbCk7CisKK3Jlc2lkdWUgPSBkbWFfZ2V0X3Jlc2lkdWUoY2hhbm5lbCk7CitpZiAocmVzaWR1ZSAhPSAwKQorCXByaW50ayhLRVJOX0VSUiAiZHJpdmVyOiBJbmNvbXBsZXRlIERNQSB0cmFuc2ZlciEiCisJCSIgJWQgYnl0ZXMgbGVmdCFcbiIsIHJlc2lkdWUpOworCityZWxlYXNlX2RtYV9sb2NrKGZsYWdzKTsKKworUGFydCBWSSAtIFN1c3BlbmQvcmVzdW1lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSXQgaXMgdGhlIGRyaXZlcidzIHJlc3BvbnNpYmlsaXR5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBtYWNoaW5lIGlzbid0CitzdXNwZW5kZWQgd2hpbGUgYSBETUEgdHJhbnNmZXIgaXMgaW4gcHJvZ3Jlc3MuIEFsc28sIGFsbCBETUEgc2V0dGluZ3MKK2FyZSBsb3N0IHdoZW4gdGhlIHN5c3RlbSBzdXNwZW5kcyBzbyBpZiB5b3VyIGRyaXZlciByZWxpZXMgb24gdGhlIERNQQorY29udHJvbGxlciBiZWluZyBpbiBhIGNlcnRhaW4gc3RhdGUgdGhlbiB5b3UgaGF2ZSB0byByZXN0b3JlIHRoZXNlCityZWdpc3RlcnMgdXBvbiByZXN1bWUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RNQS1hdHRyaWJ1dGVzLnR4dCBiL0RvY3VtZW50YXRpb24vRE1BLWF0dHJpYnV0ZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ZGM1MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RNQS1hdHRyaWJ1dGVzLnR4dApAQCAtMCwwICsxLDEwMiBAQAorCQkJRE1BIGF0dHJpYnV0ZXMKKwkJCT09PT09PT09PT09PT09CisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIERNQSBhdHRyaWJ1dGVzIHRoYXQgYXJlCitkZWZpbmVkIGluIGxpbnV4L2RtYS1hdHRycy5oLgorCitETUFfQVRUUl9XUklURV9CQVJSSUVSCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RNQV9BVFRSX1dSSVRFX0JBUlJJRVIgaXMgYSAod3JpdGUpIGJhcnJpZXIgYXR0cmlidXRlIGZvciBETUEuICBETUEKK3RvIGEgbWVtb3J5IHJlZ2lvbiB3aXRoIHRoZSBETUFfQVRUUl9XUklURV9CQVJSSUVSIGF0dHJpYnV0ZSBmb3JjZXMKK2FsbCBwZW5kaW5nIERNQSB3cml0ZXMgdG8gY29tcGxldGUsIGFuZCB0aHVzIHByb3ZpZGVzIGEgbWVjaGFuaXNtIHRvCitzdHJpY3RseSBvcmRlciBETUEgZnJvbSBhIGRldmljZSBhY3Jvc3MgYWxsIGludGVydmVuaW5nIGJ1c3NlcyBhbmQKK2JyaWRnZXMuICBUaGlzIGJhcnJpZXIgaXMgbm90IHNwZWNpZmljIHRvIGEgcGFydGljdWxhciB0eXBlIG9mCitpbnRlcmNvbm5lY3QsIGl0IGFwcGxpZXMgdG8gdGhlIHN5c3RlbSBhcyBhIHdob2xlLCBhbmQgc28gaXRzCitpbXBsZW1lbnRhdGlvbiBtdXN0IGFjY291bnQgZm9yIHRoZSBpZGlvc3luY3Jhc2llcyBvZiB0aGUgc3lzdGVtIGFsbAordGhlIHdheSBmcm9tIHRoZSBETUEgZGV2aWNlIHRvIG1lbW9yeS4KKworQXMgYW4gZXhhbXBsZSBvZiBhIHNpdHVhdGlvbiB3aGVyZSBETUFfQVRUUl9XUklURV9CQVJSSUVSIHdvdWxkIGJlCit1c2VmdWwsIHN1cHBvc2UgdGhhdCBhIGRldmljZSBkb2VzIGEgRE1BIHdyaXRlIHRvIGluZGljYXRlIHRoYXQgZGF0YSBpcworcmVhZHkgYW5kIGF2YWlsYWJsZSBpbiBtZW1vcnkuICBUaGUgRE1BIG9mIHRoZSAiY29tcGxldGlvbiBpbmRpY2F0aW9uIgorY291bGQgcmFjZSB3aXRoIGRhdGEgRE1BLiAgTWFwcGluZyB0aGUgbWVtb3J5IHVzZWQgZm9yIGNvbXBsZXRpb24KK2luZGljYXRpb25zIHdpdGggRE1BX0FUVFJfV1JJVEVfQkFSUklFUiB3b3VsZCBwcmV2ZW50IHRoZSByYWNlLgorCitETUFfQVRUUl9XRUFLX09SREVSSU5HCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RNQV9BVFRSX1dFQUtfT1JERVJJTkcgc3BlY2lmaWVzIHRoYXQgcmVhZHMgYW5kIHdyaXRlcyB0byB0aGUgbWFwcGluZworbWF5IGJlIHdlYWtseSBvcmRlcmVkLCB0aGF0IGlzIHRoYXQgcmVhZHMgYW5kIHdyaXRlcyBtYXkgcGFzcyBlYWNoIG90aGVyLgorCitTaW5jZSBpdCBpcyBvcHRpb25hbCBmb3IgcGxhdGZvcm1zIHRvIGltcGxlbWVudCBETUFfQVRUUl9XRUFLX09SREVSSU5HLAordGhvc2UgdGhhdCBkbyBub3Qgd2lsbCBzaW1wbHkgaWdub3JlIHRoZSBhdHRyaWJ1dGUgYW5kIGV4aGliaXQgZGVmYXVsdAorYmVoYXZpb3IuCisKK0RNQV9BVFRSX1dSSVRFX0NPTUJJTkUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRE1BX0FUVFJfV1JJVEVfQ09NQklORSBzcGVjaWZpZXMgdGhhdCB3cml0ZXMgdG8gdGhlIG1hcHBpbmcgbWF5IGJlCitidWZmZXJlZCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLgorCitTaW5jZSBpdCBpcyBvcHRpb25hbCBmb3IgcGxhdGZvcm1zIHRvIGltcGxlbWVudCBETUFfQVRUUl9XUklURV9DT01CSU5FLAordGhvc2UgdGhhdCBkbyBub3Qgd2lsbCBzaW1wbHkgaWdub3JlIHRoZSBhdHRyaWJ1dGUgYW5kIGV4aGliaXQgZGVmYXVsdAorYmVoYXZpb3IuCisKK0RNQV9BVFRSX05PTl9DT05TSVNURU5UCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitETUFfQVRUUl9OT05fQ09OU0lTVEVOVCBsZXRzIHRoZSBwbGF0Zm9ybSB0byBjaG9vc2UgdG8gcmV0dXJuIGVpdGhlcgorY29uc2lzdGVudCBvciBub24tY29uc2lzdGVudCBtZW1vcnkgYXMgaXQgc2VlcyBmaXQuICBCeSB1c2luZyB0aGlzIEFQSSwKK3lvdSBhcmUgZ3VhcmFudGVlaW5nIHRvIHRoZSBwbGF0Zm9ybSB0aGF0IHlvdSBoYXZlIGFsbCB0aGUgY29ycmVjdCBhbmQKK25lY2Vzc2FyeSBzeW5jIHBvaW50cyBmb3IgdGhpcyBtZW1vcnkgaW4gdGhlIGRyaXZlci4KKworRE1BX0FUVFJfTk9fS0VSTkVMX01BUFBJTkcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RNQV9BVFRSX05PX0tFUk5FTF9NQVBQSU5HIGxldHMgdGhlIHBsYXRmb3JtIHRvIGF2b2lkIGNyZWF0aW5nIGEga2VybmVsCit2aXJ0dWFsIG1hcHBpbmcgZm9yIHRoZSBhbGxvY2F0ZWQgYnVmZmVyLiBPbiBzb21lIGFyY2hpdGVjdHVyZXMgY3JlYXRpbmcKK3N1Y2ggbWFwcGluZyBpcyBub24tdHJpdmlhbCB0YXNrIGFuZCBjb25zdW1lcyB2ZXJ5IGxpbWl0ZWQgcmVzb3VyY2VzCisobGlrZSBrZXJuZWwgdmlydHVhbCBhZGRyZXNzIHNwYWNlIG9yIGRtYSBjb25zaXN0ZW50IGFkZHJlc3Mgc3BhY2UpLgorQnVmZmVycyBhbGxvY2F0ZWQgd2l0aCB0aGlzIGF0dHJpYnV0ZSBjYW4gYmUgb25seSBwYXNzZWQgdG8gdXNlciBzcGFjZQorYnkgY2FsbGluZyBkbWFfbW1hcF9hdHRycygpLiBCeSB1c2luZyB0aGlzIEFQSSwgeW91IGFyZSBndWFyYW50ZWVpbmcKK3RoYXQgeW91IHdvbid0IGRlcmVmZXJlbmNlIHRoZSBwb2ludGVyIHJldHVybmVkIGJ5IGRtYV9hbGxvY19hdHRyKCkuIFlvdQorY2FuIHRyZWF0IGl0IGFzIGEgY29va2llIHRoYXQgbXVzdCBiZSBwYXNzZWQgdG8gZG1hX21tYXBfYXR0cnMoKSBhbmQKK2RtYV9mcmVlX2F0dHJzKCkuIE1ha2Ugc3VyZSB0aGF0IGJvdGggb2YgdGhlc2UgYWxzbyBnZXQgdGhpcyBhdHRyaWJ1dGUKK3NldCBvbiBlYWNoIGNhbGwuCisKK1NpbmNlIGl0IGlzIG9wdGlvbmFsIGZvciBwbGF0Zm9ybXMgdG8gaW1wbGVtZW50CitETUFfQVRUUl9OT19LRVJORUxfTUFQUElORywgdGhvc2UgdGhhdCBkbyBub3Qgd2lsbCBzaW1wbHkgaWdub3JlIHRoZQorYXR0cmlidXRlIGFuZCBleGhpYml0IGRlZmF1bHQgYmVoYXZpb3IuCisKK0RNQV9BVFRSX1NLSVBfQ1BVX1NZTkMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQnkgZGVmYXVsdCBkbWFfbWFwX3tzaW5nbGUscGFnZSxzZ30gZnVuY3Rpb25zIGZhbWlseSB0cmFuc2ZlciBhIGdpdmVuCitidWZmZXIgZnJvbSBDUFUgZG9tYWluIHRvIGRldmljZSBkb21haW4uIFNvbWUgYWR2YW5jZWQgdXNlIGNhc2VzIG1pZ2h0CityZXF1aXJlIHNoYXJpbmcgYSBidWZmZXIgYmV0d2VlbiBtb3JlIHRoYW4gb25lIGRldmljZS4gVGhpcyByZXF1aXJlcworaGF2aW5nIGEgbWFwcGluZyBjcmVhdGVkIHNlcGFyYXRlbHkgZm9yIGVhY2ggZGV2aWNlIGFuZCBpcyB1c3VhbGx5CitwZXJmb3JtZWQgYnkgY2FsbGluZyBkbWFfbWFwX3tzaW5nbGUscGFnZSxzZ30gZnVuY3Rpb24gbW9yZSB0aGFuIG9uY2UKK2ZvciB0aGUgZ2l2ZW4gYnVmZmVyIHdpdGggZGV2aWNlIHBvaW50ZXIgdG8gZWFjaCBkZXZpY2UgdGFraW5nIHBhcnQgaW4KK3RoZSBidWZmZXIgc2hhcmluZy4gVGhlIGZpcnN0IGNhbGwgdHJhbnNmZXJzIGEgYnVmZmVyIGZyb20gJ0NQVScgZG9tYWluCit0byAnZGV2aWNlJyBkb21haW4sIHdoYXQgc3luY2hyb25pemVzIENQVSBjYWNoZXMgZm9yIHRoZSBnaXZlbiByZWdpb24KKyh1c3VhbGx5IGl0IG1lYW5zIHRoYXQgdGhlIGNhY2hlIGhhcyBiZWVuIGZsdXNoZWQgb3IgaW52YWxpZGF0ZWQKK2RlcGVuZGluZyBvbiB0aGUgZG1hIGRpcmVjdGlvbikuIEhvd2V2ZXIsIG5leHQgY2FsbHMgdG8KK2RtYV9tYXBfe3NpbmdsZSxwYWdlLHNnfSgpIGZvciBvdGhlciBkZXZpY2VzIHdpbGwgcGVyZm9ybSBleGFjdGx5IHRoZQorc2FtZSBzeW5jaHJvbml6YXRpb24gb3BlcmF0aW9uIG9uIHRoZSBDUFUgY2FjaGUuIENQVSBjYWNoZSBzeW5jaHJvbml6YXRpb24KK21pZ2h0IGJlIGEgdGltZSBjb25zdW1pbmcgb3BlcmF0aW9uLCBlc3BlY2lhbGx5IGlmIHRoZSBidWZmZXJzIGFyZQorbGFyZ2UsIHNvIGl0IGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBhdm9pZCBpdCBpZiBwb3NzaWJsZS4KK0RNQV9BVFRSX1NLSVBfQ1BVX1NZTkMgYWxsb3dzIHBsYXRmb3JtIGNvZGUgdG8gc2tpcCBzeW5jaHJvbml6YXRpb24gb2YKK3RoZSBDUFUgY2FjaGUgZm9yIHRoZSBnaXZlbiBidWZmZXIgYXNzdW1pbmcgdGhhdCBpdCBoYXMgYmVlbiBhbHJlYWR5Cit0cmFuc2ZlcnJlZCB0byAnZGV2aWNlJyBkb21haW4uIFRoaXMgYXR0cmlidXRlIGNhbiBiZSBhbHNvIHVzZWQgZm9yCitkbWFfdW5tYXBfe3NpbmdsZSxwYWdlLHNnfSBmdW5jdGlvbnMgZmFtaWx5IHRvIGZvcmNlIGJ1ZmZlciB0byBzdGF5IGluCitkZXZpY2UgZG9tYWluIGFmdGVyIHJlbGVhc2luZyBhIG1hcHBpbmcgZm9yIGl0LiBVc2UgdGhpcyBhdHRyaWJ1dGUgd2l0aAorY2FyZSEKKworRE1BX0FUVFJfRk9SQ0VfQ09OVElHVU9VUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCeSBkZWZhdWx0IERNQS1tYXBwaW5nIHN1YnN5c3RlbSBpcyBhbGxvd2VkIHRvIGFzc2VtYmxlIHRoZSBidWZmZXIKK2FsbG9jYXRlZCBieSBkbWFfYWxsb2NfYXR0cnMoKSBmdW5jdGlvbiBmcm9tIGluZGl2aWR1YWwgcGFnZXMgaWYgaXQgY2FuCitiZSBtYXBwZWQgYXMgY29udGlndW91cyBjaHVuayBpbnRvIGRldmljZSBkbWEgYWRkcmVzcyBzcGFjZS4gQnkKK3NwZWNpZnlpbmcgdGhpcyBhdHRyaWJ1dGUgdGhlIGFsbG9jYXRlZCBidWZmZXIgaXMgZm9yY2VkIHRvIGJlIGNvbnRpZ3VvdXMKK2Fsc28gaW4gcGh5c2ljYWwgbWVtb3J5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rLy5naXRpZ25vcmUgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDVkYTNmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rLy5naXRpZ25vcmUKQEAgLTAsMCArMSwxNyBAQAorKi54bWwKKyoucHMKKyoucGRmCisqLmh0bWwKKyouOS5negorKi45CisqLmF1eAorKi5kdmkKKyoubG9nCisqLm91dAorKi5wbmcKKyouZ2lmCisqLnN2ZworKi5wcm9jCisqLmRiCittZWRpYS1pbmRpY2VzLnRtcGwKK21lZGlhLWVudGl0aWVzLnRtcGwKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay84MDIxMS50bXBsIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rLzgwMjExLnRtcGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjliOWFkNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay84MDIxMS50bXBsCkBAIC0wLDAgKzEsNTgzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHNldCBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMS4yLy9FTiIKKwkiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQiIFtdPgorPHNldD4KKyAgPHNldGluZm8+CisgICAgPHRpdGxlPlRoZSA4MDIuMTEgc3Vic3lzdGVtcyAmbmRhc2g7IGZvciBrZXJuZWwgZGV2ZWxvcGVyczwvdGl0bGU+CisgICAgPHN1YnRpdGxlPgorICAgICAgRXhwbGFpbmluZyB3aXJlbGVzcyA4MDIuMTEgbmV0d29ya2luZyBpbiB0aGUgTGludXgga2VybmVsCisgICAgPC9zdWJ0aXRsZT4KKworICAgIDxjb3B5cmlnaHQ+CisgICAgICA8eWVhcj4yMDA3LTIwMDk8L3llYXI+CisgICAgICA8aG9sZGVyPkpvaGFubmVzIEJlcmc8L2hvbGRlcj4KKyAgICA8L2NvcHlyaWdodD4KKworICAgIDxhdXRob3Jncm91cD4KKyAgICAgIDxhdXRob3I+CisgICAgICAgIDxmaXJzdG5hbWU+Sm9oYW5uZXM8L2ZpcnN0bmFtZT4KKyAgICAgICAgPHN1cm5hbWU+QmVyZzwvc3VybmFtZT4KKyAgICAgICAgPGFmZmlsaWF0aW9uPgorICAgICAgICAgIDxhZGRyZXNzPjxlbWFpbD5qb2hhbm5lc0BzaXBzb2x1dGlvbnMubmV0PC9lbWFpbD48L2FkZHJlc3M+CisgICAgICAgIDwvYWZmaWxpYXRpb24+CisgICAgICA8L2F1dGhvcj4KKyAgICA8L2F1dGhvcmdyb3VwPgorCisgICAgPGxlZ2Fsbm90aWNlPgorICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgZG9jdW1lbnRhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZQorICAgICAgICBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgICAgICAgIExpY2Vuc2UgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgZG9jdW1lbnRhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKyAgICAgICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAorICAgICAgICB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisgICAgICAgIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgZG9jdW1lbnRhdGlvbjsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorICAgICAgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICAgICAgICBNQSAwMjExMS0xMzA3IFVTQQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIEZvciBtb3JlIGRldGFpbHMgc2VlIHRoZSBmaWxlIENPUFlJTkcgaW4gdGhlIHNvdXJjZQorICAgICAgICBkaXN0cmlidXRpb24gb2YgTGludXguCisgICAgICA8L3BhcmE+CisgICAgPC9sZWdhbG5vdGljZT4KKworICAgIDxhYnN0cmFjdD4KKyAgICAgIDxwYXJhPgorICAgICAgICBUaGVzZSBib29rcyBhdHRlbXB0IHRvIGdpdmUgYSBkZXNjcmlwdGlvbiBvZiB0aGUKKyAgICAgICAgdmFyaW91cyBzdWJzeXN0ZW1zIHRoYXQgcGxheSBhIHJvbGUgaW4gODAyLjExIHdpcmVsZXNzCisgICAgICAgIG5ldHdvcmtpbmcgaW4gTGludXguIFNpbmNlIHRoZXNlIGJvb2tzIGFyZSBmb3Iga2VybmVsCisgICAgICAgIGRldmVsb3BlcnMgdGhleSBhdHRlbXB0cyB0byBkb2N1bWVudCB0aGUgc3RydWN0dXJlcworICAgICAgICBhbmQgZnVuY3Rpb25zIHVzZWQgaW4gdGhlIGtlcm5lbCBhcyB3ZWxsIGFzIGdpdmluZyBhCisgICAgICAgIGhpZ2hlci1sZXZlbCBvdmVydmlldy4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorCVRoZSByZWFkZXIgaXMgZXhwZWN0ZWQgdG8gYmUgZmFtaWxpYXIgd2l0aCB0aGUgODAyLjExCisJc3RhbmRhcmQgYXMgcHVibGlzaGVkIGJ5IHRoZSBJRUVFIGluIDgwMi4xMS0yMDA3IChvcgorCXBvc3NpYmx5IGxhdGVyIHZlcnNpb25zKS4gUmVmZXJlbmNlcyB0byB0aGlzIHN0YW5kYXJkCisJd2lsbCBiZSBnaXZlbiBhcyAiODAyLjExLTIwMDcgOC4xLjUiLgorICAgICAgPC9wYXJhPgorICAgIDwvYWJzdHJhY3Q+CisgIDwvc2V0aW5mbz4KKyAgPGJvb2sgaWQ9ImNmZzgwMjExLWRldmVsb3BlcnMtZ3VpZGUiPgorICAgIDxib29raW5mbz4KKyAgICAgIDx0aXRsZT5UaGUgY2ZnODAyMTEgc3Vic3lzdGVtPC90aXRsZT4KKworICAgICAgPGFic3RyYWN0PgorIVBpbmNsdWRlL25ldC9jZmc4MDIxMS5oIEludHJvZHVjdGlvbgorICAgICAgPC9hYnN0cmFjdD4KKyAgICA8L2Jvb2tpbmZvPgorICAgICAgPGNoYXB0ZXI+CisgICAgICA8dGl0bGU+RGV2aWNlIHJlZ2lzdHJhdGlvbjwvdGl0bGU+CishUGluY2x1ZGUvbmV0L2NmZzgwMjExLmggRGV2aWNlIHJlZ2lzdHJhdGlvbgorIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIGllZWU4MDIxMV9iYW5kCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggaWVlZTgwMjExX2NoYW5uZWxfZmxhZ3MKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBpZWVlODAyMTFfY2hhbm5lbAorIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIGllZWU4MDIxMV9yYXRlX2ZsYWdzCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggaWVlZTgwMjExX3JhdGUKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBpZWVlODAyMTFfc3RhX2h0X2NhcAorIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIGllZWU4MDIxMV9zdXBwb3J0ZWRfYmFuZAorIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIGNmZzgwMjExX3NpZ25hbF90eXBlCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggd2lwaHlfcGFyYW1zX2ZsYWdzCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggd2lwaHlfZmxhZ3MKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCB3aXBoeQorIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIHdpcmVsZXNzX2RldgorIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIHdpcGh5X25ldworIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIHdpcGh5X3JlZ2lzdGVyCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggd2lwaHlfdW5yZWdpc3RlcgorIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIHdpcGh5X2ZyZWUKKworIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIHdpcGh5X25hbWUKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCB3aXBoeV9kZXYKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCB3aXBoeV9wcml2CishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggcHJpdl90b193aXBoeQorIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIHNldF93aXBoeV9kZXYKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCB3ZGV2X3ByaXYKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBpZWVlODAyMTFfaWZhY2VfbGltaXQKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBpZWVlODAyMTFfaWZhY2VfY29tYmluYXRpb24KKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBjZmc4MDIxMV9jaGVja19jb21iaW5hdGlvbnMKKyAgICAgIDwvY2hhcHRlcj4KKyAgICAgIDxjaGFwdGVyPgorICAgICAgPHRpdGxlPkFjdGlvbnMgYW5kIGNvbmZpZ3VyYXRpb248L3RpdGxlPgorIVBpbmNsdWRlL25ldC9jZmc4MDIxMS5oIEFjdGlvbnMgYW5kIGNvbmZpZ3VyYXRpb24KKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBjZmc4MDIxMV9vcHMKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCB2aWZfcGFyYW1zCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmgga2V5X3BhcmFtcworIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIHN1cnZleV9pbmZvX2ZsYWdzCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggc3VydmV5X2luZm8KKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBjZmc4MDIxMV9iZWFjb25fZGF0YQorIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIGNmZzgwMjExX2FwX3NldHRpbmdzCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggc3RhdGlvbl9wYXJhbWV0ZXJzCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggcmF0ZV9pbmZvX2ZsYWdzCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggcmF0ZV9pbmZvCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggc3RhdGlvbl9pbmZvCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggbW9uaXRvcl9mbGFncworIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIG1wYXRoX2luZm9fZmxhZ3MKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBtcGF0aF9pbmZvCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggYnNzX3BhcmFtZXRlcnMKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBpZWVlODAyMTFfdHhxX3BhcmFtcworIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIGNmZzgwMjExX2NyeXB0b19zZXR0aW5ncworIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIGNmZzgwMjExX2F1dGhfcmVxdWVzdAorIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIGNmZzgwMjExX2Fzc29jX3JlcXVlc3QKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBjZmc4MDIxMV9kZWF1dGhfcmVxdWVzdAorIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIGNmZzgwMjExX2Rpc2Fzc29jX3JlcXVlc3QKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBjZmc4MDIxMV9pYnNzX3BhcmFtcworIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggY2ZnODAyMTFfcG1rc2EKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBjZmc4MDIxMV9yeF9tbG1lX21nbXQKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBjZmc4MDIxMV9hdXRoX3RpbWVvdXQKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBjZmc4MDIxMV9yeF9hc3NvY19yZXNwCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggY2ZnODAyMTFfYXNzb2NfdGltZW91dAorIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIGNmZzgwMjExX3R4X21sbWVfbWdtdAorIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIGNmZzgwMjExX2lic3Nfam9pbmVkCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggY2ZnODAyMTFfY29ubmVjdF9yZXN1bHQKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBjZmc4MDIxMV9yb2FtZWQKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBjZmc4MDIxMV9kaXNjb25uZWN0ZWQKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZAorIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIGNmZzgwMjExX25ld19zdGEKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBjZmc4MDIxMV9yeF9tZ210CishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBjZmc4MDIxMV9jcW1fcnNzaV9ub3RpZnkKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBjZmc4MDIxMV9jcW1fcGt0bG9zc19ub3RpZnkKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBjZmc4MDIxMV9taWNoYWVsX21pY19mYWlsdXJlCisgICAgICA8L2NoYXB0ZXI+CisgICAgICA8Y2hhcHRlcj4KKyAgICAgIDx0aXRsZT5TY2FubmluZyBhbmQgQlNTIGxpc3QgaGFuZGxpbmc8L3RpdGxlPgorIVBpbmNsdWRlL25ldC9jZmc4MDIxMS5oIFNjYW5uaW5nIGFuZCBCU1MgbGlzdCBoYW5kbGluZworIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIGNmZzgwMjExX3NzaWQKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBjZmc4MDIxMV9zY2FuX3JlcXVlc3QKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBjZmc4MDIxMV9zY2FuX2RvbmUKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBjZmc4MDIxMV9ic3MKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBjZmc4MDIxMV9pbmZvcm1fYnNzCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggY2ZnODAyMTFfaW5mb3JtX2Jzc19mcmFtZV9kYXRhCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggY2ZnODAyMTFfaW5mb3JtX2Jzc19kYXRhCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggY2ZnODAyMTFfdW5saW5rX2JzcworIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIGNmZzgwMjExX2ZpbmRfaWUKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBpZWVlODAyMTFfYnNzX2dldF9pZQorICAgICAgPC9jaGFwdGVyPgorICAgICAgPGNoYXB0ZXI+CisgICAgICA8dGl0bGU+VXRpbGl0eSBmdW5jdGlvbnM8L3RpdGxlPgorIVBpbmNsdWRlL25ldC9jZmc4MDIxMS5oIFV0aWxpdHkgZnVuY3Rpb25zCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggaWVlZTgwMjExX2NoYW5uZWxfdG9fZnJlcXVlbmN5CishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggaWVlZTgwMjExX2ZyZXF1ZW5jeV90b19jaGFubmVsCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggaWVlZTgwMjExX2dldF9jaGFubmVsCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggaWVlZTgwMjExX2dldF9yZXNwb25zZV9yYXRlCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggaWVlZTgwMjExX2hkcmxlbgorIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIGllZWU4MDIxMV9nZXRfaGRybGVuX2Zyb21fc2tiCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggaWVlZTgwMjExX3JhZGlvdGFwX2l0ZXJhdG9yCisgICAgICA8L2NoYXB0ZXI+CisgICAgICA8Y2hhcHRlcj4KKyAgICAgIDx0aXRsZT5EYXRhIHBhdGggaGVscGVyczwvdGl0bGU+CishUGluY2x1ZGUvbmV0L2NmZzgwMjExLmggRGF0YSBwYXRoIGhlbHBlcnMKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBpZWVlODAyMTFfZGF0YV90b184MDIzCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggaWVlZTgwMjExX2RhdGFfZnJvbV84MDIzCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggaWVlZTgwMjExX2Ftc2R1X3RvXzgwMjNzCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggY2ZnODAyMTFfY2xhc3NpZnk4MDIxZAorICAgICAgPC9jaGFwdGVyPgorICAgICAgPGNoYXB0ZXI+CisgICAgICA8dGl0bGU+UmVndWxhdG9yeSBlbmZvcmNlbWVudCBpbmZyYXN0cnVjdHVyZTwvdGl0bGU+CishUGluY2x1ZGUvbmV0L2NmZzgwMjExLmggUmVndWxhdG9yeSBlbmZvcmNlbWVudCBpbmZyYXN0cnVjdHVyZQorIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIHJlZ3VsYXRvcnlfaGludAorIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIHdpcGh5X2FwcGx5X2N1c3RvbV9yZWd1bGF0b3J5CishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggZnJlcV9yZWdfaW5mbworICAgICAgPC9jaGFwdGVyPgorICAgICAgPGNoYXB0ZXI+CisgICAgICA8dGl0bGU+UkZraWxsIGludGVncmF0aW9uPC90aXRsZT4KKyFQaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBSRmtpbGwgaW50ZWdyYXRpb24KKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCB3aXBoeV9yZmtpbGxfc2V0X2h3X3N0YXRlCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggd2lwaHlfcmZraWxsX3N0YXJ0X3BvbGxpbmcKKyFGaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCB3aXBoeV9yZmtpbGxfc3RvcF9wb2xsaW5nCisgICAgICA8L2NoYXB0ZXI+CisgICAgICA8Y2hhcHRlcj4KKyAgICAgIDx0aXRsZT5UZXN0IG1vZGU8L3RpdGxlPgorIVBpbmNsdWRlL25ldC9jZmc4MDIxMS5oIFRlc3QgbW9kZQorIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX3JlcGx5X3NrYgorIUZpbmNsdWRlL25ldC9jZmc4MDIxMS5oIGNmZzgwMjExX3Rlc3Rtb2RlX3JlcGx5CishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggY2ZnODAyMTFfdGVzdG1vZGVfYWxsb2NfZXZlbnRfc2tiCishRmluY2x1ZGUvbmV0L2NmZzgwMjExLmggY2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQKKyAgICAgIDwvY2hhcHRlcj4KKyAgPC9ib29rPgorICA8Ym9vayBpZD0ibWFjODAyMTEtZGV2ZWxvcGVycy1ndWlkZSI+CisgICAgPGJvb2tpbmZvPgorICAgICAgPHRpdGxlPlRoZSBtYWM4MDIxMSBzdWJzeXN0ZW08L3RpdGxlPgorICAgICAgPGFic3RyYWN0PgorIVBpbmNsdWRlL25ldC9tYWM4MDIxMS5oIEludHJvZHVjdGlvbgorIVBpbmNsdWRlL25ldC9tYWM4MDIxMS5oIFdhcm5pbmcKKyAgICAgIDwvYWJzdHJhY3Q+CisgICAgPC9ib29raW5mbz4KKworICAgIDx0b2M+PC90b2M+CisKKyAgPCEtLQorICBHZW5lcmFsbHksIHRoaXMgZG9jdW1lbnQgc2hhbGwgYmUgb3JkZXJlZCBieSBpbmNyZWFzaW5nIGNvbXBsZXhpdHkuCisgIEl0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgcmVhZGVycyBzaG91bGQgYmUgYWJsZSB0byByZWFkIG9ubHkKKyAgdGhlIGZpcnN0IGZldyBzZWN0aW9ucyB0byBnZXQgYSB3b3JraW5nIGRyaXZlciBhbmQgb25seSBhZHZhbmNlZAorICB1c2FnZSBzaG91bGQgcmVxdWlyZSByZWFkaW5nIHRoZSBmdWxsIGRvY3VtZW50LgorICAtLT4KKworICAgIDxwYXJ0PgorICAgICAgPHRpdGxlPlRoZSBiYXNpYyBtYWM4MDIxMSBkcml2ZXIgaW50ZXJmYWNlPC90aXRsZT4KKyAgICAgIDxwYXJ0aW50cm8+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFlvdSBzaG91bGQgcmVhZCBhbmQgdW5kZXJzdGFuZCB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkCisgICAgICAgICAgd2l0aGluIHRoaXMgcGFydCBvZiB0aGUgYm9vayB3aGlsZSBpbXBsZW1lbnRpbmcgYSBkcml2ZXIuCisgICAgICAgICAgSW4gc29tZSBjaGFwdGVycywgYWR2YW5jZWQgdXNhZ2UgaXMgbm90ZWQsIHRoYXQgbWF5IGJlCisgICAgICAgICAgc2tpcHBlZCBhdCBmaXJzdC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGlzIHBhcnQgb2YgdGhlIGJvb2sgb25seSBjb3ZlcnMgc3RhdGlvbiBhbmQgbW9uaXRvciBtb2RlCisgICAgICAgICAgZnVuY3Rpb25hbGl0eSwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBpbXBsZW1lbnQKKyAgICAgICAgICB0aGUgb3RoZXIgbW9kZXMgaXMgY292ZXJlZCBpbiB0aGUgc2Vjb25kIHBhcnQgb2YgdGhlIGJvb2suCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvcGFydGludHJvPgorCisgICAgICA8Y2hhcHRlciBpZD0iYmFzaWNzIj4KKyAgICAgICAgPHRpdGxlPkJhc2ljIGhhcmR3YXJlIGhhbmRsaW5nPC90aXRsZT4KKyAgICAgICAgPHBhcmE+VEJEPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGlzIGNoYXB0ZXIgc2hhbGwgY29udGFpbiBpbmZvcm1hdGlvbiBvbiBnZXR0aW5nIGEgaHcKKyAgICAgICAgICBzdHJ1Y3QgYWxsb2NhdGVkIGFuZCByZWdpc3RlcmVkIHdpdGggbWFjODAyMTEuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgU2luY2UgaXQgaXMgcmVxdWlyZWQgdG8gYWxsb2NhdGUgcmF0ZXMvbW9kZXMgYmVmb3JlIHJlZ2lzdGVyaW5nCisgICAgICAgICAgYSBodyBzdHJ1Y3QsIHRoaXMgY2hhcHRlciBzaGFsbCBhbHNvIGNvbnRhaW4gaW5mb3JtYXRpb24gb24gc2V0dGluZworICAgICAgICAgIHVwIHRoZSByYXRlL21vZGUgc3RydWN0cy4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBBZGRpdGlvbmFsbHksIHNvbWUgZGlzY3Vzc2lvbiBhYm91dCB0aGUgY2FsbGJhY2tzIGFuZAorICAgICAgICAgIHRoZSBnZW5lcmFsIHByb2dyYW1taW5nIG1vZGVsIHNob3VsZCBiZSBpbiBoZXJlLCBpbmNsdWRpbmcKKyAgICAgICAgICB0aGUgZGVmaW5pdGlvbiBvZiBpZWVlODAyMTFfb3BzIHdoaWNoIHdpbGwgYmUgcmVmZXJyZWQgdG8KKyAgICAgICAgICBhIGxvdC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBGaW5hbGx5LCBhIGRpc2N1c3Npb24gb2YgaGFyZHdhcmUgY2FwYWJpbGl0aWVzIHNob3VsZCBiZSBkb25lCisgICAgICAgICAgd2l0aCByZWZlcmVuY2VzIHRvIG90aGVyIHBhcnRzIG9mIHRoZSBib29rLgorICAgICAgICA8L3BhcmE+CisgIDwhLS0gaW50ZW50aW9uYWxseSBtdWx0aXBsZSAhRiBsaW5lcyB0byBnZXQgcHJvcGVyIG9yZGVyIC0tPgorIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIGllZWU4MDIxMV9odworIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIGllZWU4MDIxMV9od19mbGFncworIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIFNFVF9JRUVFODAyMTFfREVWCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggU0VUX0lFRUU4MDIxMV9QRVJNX0FERFIKKyFGaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBpZWVlODAyMTFfb3BzCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX2FsbG9jX2h3CishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX3JlZ2lzdGVyX2h3CishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX3VucmVnaXN0ZXJfaHcKKyFGaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBpZWVlODAyMTFfZnJlZV9odworICAgICAgPC9jaGFwdGVyPgorCisgICAgICA8Y2hhcHRlciBpZD0icGh5LWhhbmRsaW5nIj4KKyAgICAgICAgPHRpdGxlPlBIWSBjb25maWd1cmF0aW9uPC90aXRsZT4KKyAgICAgICAgPHBhcmE+VEJEPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGlzIGNoYXB0ZXIgc2hvdWxkIGRlc2NyaWJlIFBIWSBoYW5kbGluZyBpbmNsdWRpbmcKKyAgICAgICAgICBzdGFydC9zdG9wIGNhbGxiYWNrcyBhbmQgdGhlIHZhcmlvdXMgc3RydWN0dXJlcyB1c2VkLgorICAgICAgICA8L3BhcmE+CishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX2NvbmYKKyFGaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBpZWVlODAyMTFfY29uZl9mbGFncworICAgICAgPC9jaGFwdGVyPgorCisgICAgICA8Y2hhcHRlciBpZD0iaWZhY2UtaGFuZGxpbmciPgorICAgICAgICA8dGl0bGU+VmlydHVhbCBpbnRlcmZhY2VzPC90aXRsZT4KKyAgICAgICAgPHBhcmE+VEJEPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGlzIGNoYXB0ZXIgc2hvdWxkIGRlc2NyaWJlIHZpcnR1YWwgaW50ZXJmYWNlIGJhc2ljcworICAgICAgICAgIHRoYXQgYXJlIHJlbGV2YW50IHRvIHRoZSBkcml2ZXIgKFZMQU5zLCBNR01UIGV0YyBhcmUgbm90LikKKyAgICAgICAgICBJdCBzaG91bGQgZXhwbGFpbiB0aGUgdXNlIG9mIHRoZSBhZGRfaWZhY2UvcmVtb3ZlX2lmYWNlCisgICAgICAgICAgY2FsbGJhY2tzIGFzIHdlbGwgYXMgdGhlIGludGVyZmFjZSBjb25maWd1cmF0aW9uIGNhbGxiYWNrcy4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT5UaGluZ3MgcmVsYXRlZCB0byBBUCBtb2RlIHNob3VsZCBiZSBkaXNjdXNzZWQgdGhlcmUuPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGluZ3MgcmVsYXRlZCB0byBzdXBwb3J0aW5nIG11bHRpcGxlIGludGVyZmFjZXMgc2hvdWxkIGJlCisgICAgICAgICAgaW4gdGhlIGFwcHJvcHJpYXRlIGNoYXB0ZXIsIGEgQklHIEZBVCBub3RlIHNob3VsZCBiZSBoZXJlIGFib3V0CisgICAgICAgICAgdGhpcyB0aG91Z2ggYW5kIHRoZSByZWNvbW1lbmRhdGlvbiB0byBhbGxvdyBvbmx5IGEgc2luZ2xlCisgICAgICAgICAgaW50ZXJmYWNlIGluIFNUQSBtb2RlIGF0IGZpcnN0IQorICAgICAgICA8L3BhcmE+CishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX3ZpZgorICAgICAgPC9jaGFwdGVyPgorCisgICAgICA8Y2hhcHRlciBpZD0icngtdHgiPgorICAgICAgICA8dGl0bGU+UmVjZWl2ZSBhbmQgdHJhbnNtaXQgcHJvY2Vzc2luZzwvdGl0bGU+CisgICAgICAgIDxzZWN0MT4KKyAgICAgICAgICA8dGl0bGU+d2hhdCBzaG91bGQgYmUgaGVyZTwvdGl0bGU+CisgICAgICAgICAgPHBhcmE+VEJEPC9wYXJhPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBzaG91bGQgZGVzY3JpYmUgdGhlIHJlY2VpdmUgYW5kIHRyYW5zbWl0CisgICAgICAgICAgICBwYXRocyBpbiBtYWM4MDIxMS90aGUgZHJpdmVycyBhcyB3ZWxsIGFzCisgICAgICAgICAgICB0cmFuc21pdCBzdGF0dXMgaGFuZGxpbmcuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3QxPgorICAgICAgICA8c2VjdDE+CisgICAgICAgICAgPHRpdGxlPkZyYW1lIGZvcm1hdDwvdGl0bGU+CishUGluY2x1ZGUvbmV0L21hYzgwMjExLmggRnJhbWUgZm9ybWF0CisgICAgICAgIDwvc2VjdDE+CisgICAgICAgIDxzZWN0MT4KKyAgICAgICAgICA8dGl0bGU+UGFja2V0IGFsaWdubWVudDwvdGl0bGU+CishUG5ldC9tYWM4MDIxMS9yeC5jIFBhY2tldCBhbGlnbm1lbnQKKyAgICAgICAgPC9zZWN0MT4KKyAgICAgICAgPHNlY3QxPgorICAgICAgICAgIDx0aXRsZT5DYWxsaW5nIGludG8gbWFjODAyMTEgZnJvbSBpbnRlcnJ1cHRzPC90aXRsZT4KKyFQaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBDYWxsaW5nIG1hYzgwMjExIGZyb20gaW50ZXJydXB0cworICAgICAgICA8L3NlY3QxPgorICAgICAgICA8c2VjdDE+CisgICAgICAgICAgPHRpdGxlPmZ1bmN0aW9ucy9kZWZpbml0aW9uczwvdGl0bGU+CishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX3J4X3N0YXR1cworIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIG1hYzgwMjExX3J4X2ZsYWdzCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggbWFjODAyMTFfdHhfaW5mb19mbGFncworIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIG1hYzgwMjExX3R4X2NvbnRyb2xfZmxhZ3MKKyFGaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBtYWM4MDIxMV9yYXRlX2NvbnRyb2xfZmxhZ3MKKyFGaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBpZWVlODAyMTFfdHhfcmF0ZQorIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIGllZWU4MDIxMV90eF9pbmZvCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX3R4X2luZm9fY2xlYXJfc3RhdHVzCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX3J4CishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX3J4X25pCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX3J4X2lycXNhZmUKKyFGaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBpZWVlODAyMTFfdHhfc3RhdHVzCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX3R4X3N0YXR1c19uaQorIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIGllZWU4MDIxMV90eF9zdGF0dXNfaXJxc2FmZQorIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIGllZWU4MDIxMV9ydHNfZ2V0CishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX3J0c19kdXJhdGlvbgorIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIGllZWU4MDIxMV9jdHN0b3NlbGZfZ2V0CishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX2N0c3Rvc2VsZl9kdXJhdGlvbgorIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIGllZWU4MDIxMV9nZW5lcmljX2ZyYW1lX2R1cmF0aW9uCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX3dha2VfcXVldWUKKyFGaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBpZWVlODAyMTFfc3RvcF9xdWV1ZQorIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIGllZWU4MDIxMV93YWtlX3F1ZXVlcworIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIGllZWU4MDIxMV9zdG9wX3F1ZXVlcworIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIGllZWU4MDIxMV9xdWV1ZV9zdG9wcGVkCisgICAgICAgIDwvc2VjdDE+CisgICAgICA8L2NoYXB0ZXI+CisKKyAgICAgIDxjaGFwdGVyIGlkPSJmaWx0ZXJzIj4KKyAgICAgICAgPHRpdGxlPkZyYW1lIGZpbHRlcmluZzwvdGl0bGU+CishUGluY2x1ZGUvbmV0L21hYzgwMjExLmggRnJhbWUgZmlsdGVyaW5nCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX2ZpbHRlcl9mbGFncworICAgICAgPC9jaGFwdGVyPgorCisgICAgICA8Y2hhcHRlciBpZD0id29ya3F1ZXVlIj4KKyAgICAgICAgPHRpdGxlPlRoZSBtYWM4MDIxMSB3b3JrcXVldWU8L3RpdGxlPgorIVBpbmNsdWRlL25ldC9tYWM4MDIxMS5oIG1hYzgwMjExIHdvcmtxdWV1ZQorIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIGllZWU4MDIxMV9xdWV1ZV93b3JrCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yaworICAgICAgPC9jaGFwdGVyPgorICAgIDwvcGFydD4KKworICAgIDxwYXJ0IGlkPSJhZHZhbmNlZCI+CisgICAgICA8dGl0bGU+QWR2YW5jZWQgZHJpdmVyIGludGVyZmFjZTwvdGl0bGU+CisgICAgICA8cGFydGludHJvPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIEluZm9ybWF0aW9uIGNvbnRhaW5lZCB3aXRoaW4gdGhpcyBwYXJ0IG9mIHRoZSBib29rIGlzCisgICAgICAgICBvZiBpbnRlcmVzdCBvbmx5IGZvciBhZHZhbmNlZCBpbnRlcmFjdGlvbiBvZiBtYWM4MDIxMQorICAgICAgICAgd2l0aCBkcml2ZXJzIHRvIGV4cGxvaXQgbW9yZSBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgYW5kCisgICAgICAgICBpbXByb3ZlIHBlcmZvcm1hbmNlLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3BhcnRpbnRybz4KKworICAgICAgPGNoYXB0ZXIgaWQ9ImxlZC1zdXBwb3J0Ij4KKyAgICAgICAgPHRpdGxlPkxFRCBzdXBwb3J0PC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBNYWM4MDIxMSBzdXBwb3J0cyB2YXJpb3VzIHdheXMgb2YgYmxpbmtpbmcgTEVEcy4gV2hlcmV2ZXIgcG9zc2libGUsCisgICAgICAgICBkZXZpY2UgTEVEcyBzaG91bGQgYmUgZXhwb3NlZCBhcyBMRUQgY2xhc3MgZGV2aWNlcyBhbmQgaG9va2VkIHVwIHRvCisgICAgICAgICB0aGUgYXBwcm9wcmlhdGUgdHJpZ2dlciwgd2hpY2ggd2lsbCB0aGVuIGJlIHRyaWdnZXJlZCBhcHByb3ByaWF0ZWx5CisgICAgICAgICBieSBtYWM4MDIxMS4KKyAgICAgICAgPC9wYXJhPgorIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIGllZWU4MDIxMV9nZXRfdHhfbGVkX25hbWUKKyFGaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBpZWVlODAyMTFfZ2V0X3J4X2xlZF9uYW1lCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX2dldF9hc3NvY19sZWRfbmFtZQorIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIGllZWU4MDIxMV9nZXRfcmFkaW9fbGVkX25hbWUKKyFGaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBpZWVlODAyMTFfdHB0X2JsaW5rCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX3RwdF9sZWRfdHJpZ2dlcl9mbGFncworIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIGllZWU4MDIxMV9jcmVhdGVfdHB0X2xlZF90cmlnZ2VyCisgICAgICA8L2NoYXB0ZXI+CisKKyAgICAgIDxjaGFwdGVyIGlkPSJoYXJkd2FyZS1jcnlwdG8tb2ZmbG9hZCI+CisgICAgICAgIDx0aXRsZT5IYXJkd2FyZSBjcnlwdG8gYWNjZWxlcmF0aW9uPC90aXRsZT4KKyFQaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBIYXJkd2FyZSBjcnlwdG8gYWNjZWxlcmF0aW9uCisgIDwhLS0gaW50ZW50aW9uYWxseSBtdWx0aXBsZSAhRiBsaW5lcyB0byBnZXQgcHJvcGVyIG9yZGVyIC0tPgorIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIHNldF9rZXlfY21kCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX2tleV9jb25mCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX2tleV9mbGFncworIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIGllZWU4MDIxMV9nZXRfdGtpcF9wMWsKKyFGaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBpZWVlODAyMTFfZ2V0X3RraXBfcDFrX2l2CishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX2dldF90a2lwX3AyaworICAgICAgPC9jaGFwdGVyPgorCisgICAgICA8Y2hhcHRlciBpZD0icG93ZXJzYXZlIj4KKyAgICAgICAgPHRpdGxlPlBvd2Vyc2F2ZSBzdXBwb3J0PC90aXRsZT4KKyFQaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBQb3dlcnNhdmUgc3VwcG9ydAorICAgICAgPC9jaGFwdGVyPgorCisgICAgICA8Y2hhcHRlciBpZD0iYmVhY29uLWZpbHRlciI+CisgICAgICAgIDx0aXRsZT5CZWFjb24gZmlsdGVyIHN1cHBvcnQ8L3RpdGxlPgorIVBpbmNsdWRlL25ldC9tYWM4MDIxMS5oIEJlYWNvbiBmaWx0ZXIgc3VwcG9ydAorIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIGllZWU4MDIxMV9iZWFjb25fbG9zcworICAgICAgPC9jaGFwdGVyPgorCisgICAgICA8Y2hhcHRlciBpZD0icW9zIj4KKyAgICAgICAgPHRpdGxlPk11bHRpcGxlIHF1ZXVlcyBhbmQgUW9TIHN1cHBvcnQ8L3RpdGxlPgorICAgICAgICA8cGFyYT5UQkQ8L3BhcmE+CishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX3R4X3F1ZXVlX3BhcmFtcworICAgICAgPC9jaGFwdGVyPgorCisgICAgICA8Y2hhcHRlciBpZD0iQVAiPgorICAgICAgICA8dGl0bGU+QWNjZXNzIHBvaW50IG1vZGUgc3VwcG9ydDwvdGl0bGU+CisgICAgICAgIDxwYXJhPlRCRDwvcGFyYT4KKyAgICAgICAgPHBhcmE+U29tZSBwYXJ0cyBvZiB0aGUgaWZfY29uZiBzaG91bGQgYmUgZGlzY3Vzc2VkIGhlcmUgaW5zdGVhZDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgSW5zZXJ0IG5vdGVzIGFib3V0IFZMQU4gaW50ZXJmYWNlcyB3aXRoIGh3IGNyeXB0byBoZXJlIG9yCisgICAgICAgICAgaW4gdGhlIGh3IGNyeXB0byBjaGFwdGVyLgorICAgICAgICA8L3BhcmE+CisgICAgICA8c2VjdGlvbiBpZD0icHMtY2xpZW50Ij4KKyAgICAgICAgPHRpdGxlPnN1cHBvcnQgZm9yIHBvd2Vyc2F2aW5nIGNsaWVudHM8L3RpdGxlPgorIVBpbmNsdWRlL25ldC9tYWM4MDIxMS5oIEFQIHN1cHBvcnQgZm9yIHBvd2Vyc2F2aW5nIGNsaWVudHMKKyFGaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBpZWVlODAyMTFfZ2V0X2J1ZmZlcmVkX2JjCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX2JlYWNvbl9nZXQKKyFGaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBpZWVlODAyMTFfc3RhX2Vvc3AKKyFGaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBpZWVlODAyMTFfZnJhbWVfcmVsZWFzZV90eXBlCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX3N0YV9zZXRfYnVmZmVyZWQKKyFGaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBpZWVlODAyMTFfc3RhX2Jsb2NrX2F3YWtlCisgICAgICA8L3NlY3Rpb24+CisgICAgICA8L2NoYXB0ZXI+CisKKyAgICAgIDxjaGFwdGVyIGlkPSJtdWx0aS1pZmFjZSI+CisgICAgICAgIDx0aXRsZT5TdXBwb3J0aW5nIG11bHRpcGxlIHZpcnR1YWwgaW50ZXJmYWNlczwvdGl0bGU+CisgICAgICAgIDxwYXJhPlRCRDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgTm90ZTogV0RTIHdpdGggaWRlbnRpY2FsIE1BQyBhZGRyZXNzIHNob3VsZCBhbG1vc3QgYWx3YXlzIGJlIE9LCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgSW5zZXJ0IG5vdGVzIGFib3V0IGhhdmluZyBtdWx0aXBsZSB2aXJ0dWFsIGludGVyZmFjZXMgd2l0aAorICAgICAgICAgIGRpZmZlcmVudCBNQUMgYWRkcmVzc2VzIGhlcmUsIG5vdGUgd2hpY2ggY29uZmlndXJhdGlvbnMgYXJlCisgICAgICAgICAgc3VwcG9ydGVkIGJ5IG1hYzgwMjExLCBhZGQgbm90ZXMgYWJvdXQgc3VwcG9ydGluZyBodyBjcnlwdG8KKyAgICAgICAgICB3aXRoIGl0LgorICAgICAgICA8L3BhcmE+CishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX2l0ZXJhdGVfYWN0aXZlX2ludGVyZmFjZXMKKyFGaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBpZWVlODAyMTFfaXRlcmF0ZV9hY3RpdmVfaW50ZXJmYWNlc19hdG9taWMKKyAgICAgIDwvY2hhcHRlcj4KKworICAgICAgPGNoYXB0ZXIgaWQ9InN0YXRpb24taGFuZGxpbmciPgorICAgICAgICA8dGl0bGU+U3RhdGlvbiBoYW5kbGluZzwvdGl0bGU+CisgICAgICAgIDxwYXJhPlRPRE88L3BhcmE+CishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX3N0YQorIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIHN0YV9ub3RpZnlfY21kCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX2ZpbmRfc3RhCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX2ZpbmRfc3RhX2J5X2lmYWRkcgorICAgICAgPC9jaGFwdGVyPgorCisgICAgICA8Y2hhcHRlciBpZD0iaGFyZHdhcmUtc2Nhbi1vZmZsb2FkIj4KKyAgICAgICAgPHRpdGxlPkhhcmR3YXJlIHNjYW4gb2ZmbG9hZDwvdGl0bGU+CisgICAgICAgIDxwYXJhPlRCRDwvcGFyYT4KKyFGaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBpZWVlODAyMTFfc2Nhbl9jb21wbGV0ZWQKKyAgICAgIDwvY2hhcHRlcj4KKworICAgICAgPGNoYXB0ZXIgaWQ9ImFnZ3JlZ2F0aW9uIj4KKyAgICAgICAgPHRpdGxlPkFnZ3JlZ2F0aW9uPC90aXRsZT4KKyAgICAgICAgPHNlY3QxPgorICAgICAgICAgIDx0aXRsZT5UWCBBLU1QRFUgYWdncmVnYXRpb248L3RpdGxlPgorIVBuZXQvbWFjODAyMTEvYWdnLXR4LmMgVFggQS1NUERVIGFnZ3JlZ2F0aW9uCishQ25ldC9tYWM4MDIxMS9hZ2ctdHguYworICAgICAgICA8L3NlY3QxPgorICAgICAgICA8c2VjdDE+CisgICAgICAgICAgPHRpdGxlPlJYIEEtTVBEVSBhZ2dyZWdhdGlvbjwvdGl0bGU+CishUG5ldC9tYWM4MDIxMS9hZ2ctcnguYyBSWCBBLU1QRFUgYWdncmVnYXRpb24KKyFDbmV0L21hYzgwMjExL2FnZy1yeC5jCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX2FtcGR1X21sbWVfYWN0aW9uCisgICAgICAgIDwvc2VjdDE+CisgICAgICA8L2NoYXB0ZXI+CisKKyAgICAgIDxjaGFwdGVyIGlkPSJzbXBzIj4KKyAgICAgICAgPHRpdGxlPlNwYXRpYWwgTXVsdGlwbGV4aW5nIFBvd2Vyc2F2ZSAoU01QUyk8L3RpdGxlPgorIVBpbmNsdWRlL25ldC9tYWM4MDIxMS5oIFNwYXRpYWwgbXVsdGlwbGV4aW5nIHBvd2VyIHNhdmUKKyFGaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBpZWVlODAyMTFfcmVxdWVzdF9zbXBzCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX3NtcHNfbW9kZQorICAgICAgPC9jaGFwdGVyPgorICAgIDwvcGFydD4KKworICAgIDxwYXJ0IGlkPSJyYXRlLWNvbnRyb2wiPgorICAgICAgPHRpdGxlPlJhdGUgY29udHJvbCBpbnRlcmZhY2U8L3RpdGxlPgorICAgICAgPHBhcnRpbnRybz4KKyAgICAgICAgPHBhcmE+VEJEPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRoaXMgcGFydCBvZiB0aGUgYm9vayBkZXNjcmliZXMgdGhlIHJhdGUgY29udHJvbCBhbGdvcml0aG0KKyAgICAgICAgIGludGVyZmFjZSBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gbWFjODAyMTEgYW5kIGRyaXZlcnMuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvcGFydGludHJvPgorICAgICAgPGNoYXB0ZXIgaWQ9InJhdGVjb250cm9sLWFwaSI+CisgICAgICAgIDx0aXRsZT5SYXRlIENvbnRyb2wgQVBJPC90aXRsZT4KKyAgICAgICAgPHBhcmE+VEJEPC9wYXJhPgorIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIGllZWU4MDIxMV9zdGFydF90eF9iYV9zZXNzaW9uCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX3N0YXJ0X3R4X2JhX2NiX2lycXNhZmUKKyFGaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBpZWVlODAyMTFfc3RvcF90eF9iYV9zZXNzaW9uCishRmluY2x1ZGUvbmV0L21hYzgwMjExLmggaWVlZTgwMjExX3N0b3BfdHhfYmFfY2JfaXJxc2FmZQorIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIGllZWU4MDIxMV9yYXRlX2NvbnRyb2xfY2hhbmdlZAorIUZpbmNsdWRlL25ldC9tYWM4MDIxMS5oIGllZWU4MDIxMV90eF9yYXRlX2NvbnRyb2wKKyFGaW5jbHVkZS9uZXQvbWFjODAyMTEuaCByYXRlX2NvbnRyb2xfc2VuZF9sb3cKKyAgICAgIDwvY2hhcHRlcj4KKyAgICA8L3BhcnQ+CisKKyAgICA8cGFydCBpZD0iaW50ZXJuYWwiPgorICAgICAgPHRpdGxlPkludGVybmFsczwvdGl0bGU+CisgICAgICA8cGFydGludHJvPgorICAgICAgICA8cGFyYT5UQkQ8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhpcyBwYXJ0IG9mIHRoZSBib29rIGRlc2NyaWJlcyBtYWM4MDIxMSBpbnRlcm5hbHMuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvcGFydGludHJvPgorCisgICAgICA8Y2hhcHRlciBpZD0ia2V5LWhhbmRsaW5nIj4KKyAgICAgICAgPHRpdGxlPktleSBoYW5kbGluZzwvdGl0bGU+CisgICAgICAgIDxzZWN0MT4KKyAgICAgICAgICA8dGl0bGU+S2V5IGhhbmRsaW5nIGJhc2ljczwvdGl0bGU+CishUG5ldC9tYWM4MDIxMS9rZXkuYyBLZXkgaGFuZGxpbmcgYmFzaWNzCisgICAgICAgIDwvc2VjdDE+CisgICAgICAgIDxzZWN0MT4KKyAgICAgICAgICA8dGl0bGU+TU9SRSBUQkQ8L3RpdGxlPgorICAgICAgICAgIDxwYXJhPlRCRDwvcGFyYT4KKyAgICAgICAgPC9zZWN0MT4KKyAgICAgIDwvY2hhcHRlcj4KKworICAgICAgPGNoYXB0ZXIgaWQ9InJ4LXByb2Nlc3NpbmciPgorICAgICAgICA8dGl0bGU+UmVjZWl2ZSBwcm9jZXNzaW5nPC90aXRsZT4KKyAgICAgICAgPHBhcmE+VEJEPC9wYXJhPgorICAgICAgPC9jaGFwdGVyPgorCisgICAgICA8Y2hhcHRlciBpZD0idHgtcHJvY2Vzc2luZyI+CisgICAgICAgIDx0aXRsZT5UcmFuc21pdCBwcm9jZXNzaW5nPC90aXRsZT4KKyAgICAgICAgPHBhcmE+VEJEPC9wYXJhPgorICAgICAgPC9jaGFwdGVyPgorCisgICAgICA8Y2hhcHRlciBpZD0ic3RhLWluZm8iPgorICAgICAgICA8dGl0bGU+U3RhdGlvbiBpbmZvIGhhbmRsaW5nPC90aXRsZT4KKyAgICAgICAgPHNlY3QxPgorICAgICAgICAgIDx0aXRsZT5Qcm9ncmFtbWluZyBpbmZvcm1hdGlvbjwvdGl0bGU+CishRm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oIHN0YV9pbmZvCishRm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oIGllZWU4MDIxMV9zdGFfaW5mb19mbGFncworICAgICAgICA8L3NlY3QxPgorICAgICAgICA8c2VjdDE+CisgICAgICAgICAgPHRpdGxlPlNUQSBpbmZvcm1hdGlvbiBsaWZldGltZSBydWxlczwvdGl0bGU+CishUG5ldC9tYWM4MDIxMS9zdGFfaW5mby5jIFNUQSBpbmZvcm1hdGlvbiBsaWZldGltZSBydWxlcworICAgICAgICA8L3NlY3QxPgorICAgICAgPC9jaGFwdGVyPgorCisgICAgICA8Y2hhcHRlciBpZD0iYWdncmVnYXRpb24taW50ZXJuYWxzIj4KKyAgICAgICAgPHRpdGxlPkFnZ3JlZ2F0aW9uPC90aXRsZT4KKyFGbmV0L21hYzgwMjExL3N0YV9pbmZvLmggc3RhX2FtcGR1X21sbWUKKyFGbmV0L21hYzgwMjExL3N0YV9pbmZvLmggdGlkX2FtcGR1X3R4CishRm5ldC9tYWM4MDIxMS9zdGFfaW5mby5oIHRpZF9hbXBkdV9yeAorICAgICAgPC9jaGFwdGVyPgorCisgICAgICA8Y2hhcHRlciBpZD0ic3luY2hyb25pc2F0aW9uIj4KKyAgICAgICAgPHRpdGxlPlN5bmNocm9uaXNhdGlvbjwvdGl0bGU+CisgICAgICAgIDxwYXJhPlRCRDwvcGFyYT4KKyAgICAgICAgPHBhcmE+TG9ja2luZywgbG90cyBvZiBSQ1U8L3BhcmE+CisgICAgICA8L2NoYXB0ZXI+CisgICAgPC9wYXJ0PgorICA8L2Jvb2s+Cis8L3NldD4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9NYWtlZmlsZSBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWY2ZDg5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL01ha2VmaWxlCkBAIC0wLDAgKzEsMjU3IEBACisjIyMKKyMgVGhpcyBtYWtlZmlsZSBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBrZXJuZWwgZG9jdW1lbnRhdGlvbiwKKyMgcHJpbWFyaWx5IGJhc2VkIG9uIGluLWxpbmUgY29tbWVudHMgaW4gdmFyaW91cyBzb3VyY2UgZmlsZXMuCisjIFNlZSBEb2N1bWVudGF0aW9uL2tlcm5lbC1kb2MtbmFuby1IT1dUTy50eHQgZm9yIGluc3RydWN0aW9uIGluIGhvdworIyB0byBkb2N1bWVudCB0aGUgU1JDIC0gYW5kIGhvdyB0byByZWFkIGl0LgorIyBUbyBhZGQgYSBuZXcgYm9vayB0aGUgb25seSBzdGVwIHJlcXVpcmVkIGlzIHRvIGFkZCB0aGUgYm9vayB0byB0aGUKKyMgbGlzdCBvZiBET0NCT09LUy4KKworRE9DQk9PS1MgOj0gejg1MzBib29rLnhtbCBkZXZpY2UtZHJpdmVycy54bWwgXAorCSAgICBrZXJuZWwtaGFja2luZy54bWwga2VybmVsLWxvY2tpbmcueG1sIGRldmljZWlvYm9vay54bWwgXAorCSAgICB3cml0aW5nX3VzYl9kcml2ZXIueG1sIG5ldHdvcmtpbmcueG1sIFwKKwkgICAga2VybmVsLWFwaS54bWwgZmlsZXN5c3RlbXMueG1sIGxzbS54bWwgdXNiLnhtbCBrZ2RiLnhtbCBcCisJICAgIGdhZGdldC54bWwgbGliYXRhLnhtbCBtdGRuYW5kLnhtbCBsaWJycy54bWwgcmFwaWRpby54bWwgXAorCSAgICBnZW5lcmljaXJxLnhtbCBzMzkwLWRyaXZlcnMueG1sIHVpby1ob3d0by54bWwgc2NzaS54bWwgXAorCSAgICA4MDIxMS54bWwgZGVidWdvYmplY3RzLnhtbCBzaC54bWwgcmVndWxhdG9yLnhtbCBcCisJICAgIGFsc2EtZHJpdmVyLWFwaS54bWwgd3JpdGluZy1hbi1hbHNhLWRyaXZlci54bWwgXAorCSAgICB0cmFjZXBvaW50LnhtbCBncHUueG1sIG1lZGlhX2FwaS54bWwgdzEueG1sIFwKKwkgICAgd3JpdGluZ19tdXNiX2dsdWVfbGF5ZXIueG1sIGNyeXB0by1BUEkueG1sIGlpby54bWwKKworaW5jbHVkZSBEb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvTWFrZWZpbGUKKworIyMjCisjIFRoZSBidWlsZCBwcm9jZXNzIGlzIGFzIGZvbGxvd3MgKHRhcmdldHMpOgorIyAgICAgICAgICAgICAgKHhtbGRvY3MpIFtieSBkb2Nwcm9jXQorIyBmaWxlLnRtcGwgLS0+IGZpbGUueG1sICstLT4gZmlsZS5wcyAgIChwc2RvY3MpICAgW2J5IGRiMnBzIG9yIHhtbHRvXQorIyAgICAgICAgICAgICAgICAgICAgICAgICstLT4gZmlsZS5wZGYgIChwZGZkb2NzKSAgW2J5IGRiMnBkZiBvciB4bWx0b10KKyMgICAgICAgICAgICAgICAgICAgICAgICArLS0+IERJUj1maWxlICAoaHRtbGRvY3MpIFtieSB4bWx0b10KKyMgICAgICAgICAgICAgICAgICAgICAgICArLS0+IG1hbi8gICAgICAobWFuZG9jcykgIFtieSB4bWx0b10KKworCisjIGZvciBQREYgYW5kIFBTIG91dHB1dCB5b3UgY2FuIGNob29zZSBiZXR3ZWVuIHhtbHRvIGFuZCBkb2Nib29rLXV0aWxzIHRvb2xzCitQREZfTUVUSE9ECT0gJChwcmVmZXItZGIyeCkKK1BTX01FVEhPRAk9ICQocHJlZmVyLWRiMngpCisKKworIyMjCisjIFRoZSB0YXJnZXRzIHRoYXQgbWF5IGJlIHVzZWQuCitQSE9OWSArPSB4bWxkb2NzIHNnbWxkb2NzIHBzZG9jcyBwZGZkb2NzIGh0bWxkb2NzIG1hbmRvY3MgaW5zdGFsbG1hbmRvY3MgY2xlYW5kb2NzCisKK3RhcmdldHMgKz0gJChET0NCT09LUykKK0JPT0tTIDo9ICQoYWRkcHJlZml4ICQob2JqKS8sJChET0NCT09LUykpCit4bWxkb2NzOiAkKEJPT0tTKQorc2dtbGRvY3M6IHhtbGRvY3MKKworUFMgOj0gJChwYXRzdWJzdCAlLnhtbCwgJS5wcywgJChCT09LUykpCitwc2RvY3M6ICQoUFMpCisKK1BERiA6PSAkKHBhdHN1YnN0ICUueG1sLCAlLnBkZiwgJChCT09LUykpCitwZGZkb2NzOiAkKFBERikKKworSFRNTCA6PSAkKHNvcnQgJChwYXRzdWJzdCAlLnhtbCwgJS5odG1sLCAkKEJPT0tTKSkpCitodG1sZG9jczogJChIVE1MKQorCSQoY2FsbCBidWlsZF9tYWluX2luZGV4KQorCSQoY2FsbCBidWlsZF9pbWFnZXMpCisJJChjYWxsIGluc3RhbGxfbWVkaWFfaW1hZ2VzKQorCitNQU4gOj0gJChwYXRzdWJzdCAlLnhtbCwgJS45LCAkKEJPT0tTKSkKK21hbmRvY3M6ICQoTUFOKQorCWZpbmQgJChvYmopL21hbiAtbmFtZSAnKi45JyB8IHhhcmdzIGd6aXAgLW5mCisKK2luc3RhbGxtYW5kb2NzOiBtYW5kb2NzCisJbWtkaXIgLXAgL3Vzci9sb2NhbC9tYW4vbWFuOS8KKwlmaW5kICQob2JqKS9tYW4gLW5hbWUgJyouOS5neicgLXByaW50ZiAnJWggJWZcbicgfCBcCisJCXNvcnQgLWsgMiAtayAxIHwgdW5pcSAtZiAxIHwgc2VkIC1lICdzOiA6LzonIHwgXAorCQl4YXJncyBpbnN0YWxsIC1tIDY0NCAtdCAvdXNyL2xvY2FsL21hbi9tYW45LworCisjIyMKKyNFeHRlcm5hbCBwcm9ncmFtcyB1c2VkCitLRVJORUxET0NYTUxSRUYgPSAkKHNyY3RyZWUpL3NjcmlwdHMva2VybmVsLWRvYy14bWwtcmVmCitLRVJORUxET0MgICAgICAgPSAkKHNyY3RyZWUpL3NjcmlwdHMva2VybmVsLWRvYworRE9DUFJPQyAgICAgICAgID0gJChvYmp0cmVlKS9zY3JpcHRzL2RvY3Byb2MKK0NIRUNLX0xDX0NUWVBFID0gJChvYmp0cmVlKS9zY3JpcHRzL2NoZWNrLWxjX2N0eXBlCisKKyMgVXNlIGEgZml4ZWQgZW5jb2RpbmcgLSBVVEYtOCBpZiB0aGUgQyBsaWJyYXJ5IGhhcyBzdXBwb3J0IGJ1aWx0LWluCisjIG9yIEFTQ0lJIGlmIG5vdAorTENfQ1RZUEUgOj0gJChjYWxsIHRyeS1ydW4sIExDX0NUWVBFPUMuVVRGLTggJChDSEVDS19MQ19DVFlQRSksQy5VVEYtOCxDKQorZXhwb3J0IExDX0NUWVBFCisKK1hNTFRPRkxBR1MgPSAtbSAkKHNyY3RyZWUpLyQoc3JjKS9zdHlsZXNoZWV0LnhzbAorWE1MVE9GTEFHUyArPSAtLXNraXAtdmFsaWRhdGlvbgorCisjIyMKKyMgRE9DUFJPQyBpcyB1c2VkIGZvciB0d28gcHVycG9zZXM6CisjIDEpIFRvIGdlbmVyYXRlIGEgZGVwZW5kZW5jeSBsaXN0IGZvciBhIC50bXBsIGZpbGUKKyMgMikgVG8gcHJlcHJvY2VzcyBhIC50bXBsIGZpbGUgYW5kIGNhbGwga2VybmVsLWRvYyB3aXRoCisjICAgICBhcHByb3ByaWF0ZSBwYXJhbWV0ZXJzLgorIyBUaGUgZm9sbG93aW5nIHJ1bGVzIGFyZSB1c2VkIHRvIGdlbmVyYXRlIHRoZSAueG1sIGRvY3VtZW50YXRpb24KKyMgcmVxdWlyZWQgdG8gZ2VuZXJhdGUgdGhlIGZpbmFsIHRhcmdldHMuIChwcywgcGRmLCBodG1sKS4KK3F1aWV0X2NtZF9kb2Nwcm9jID0gRE9DUFJPQyAkQAorICAgICAgY21kX2RvY3Byb2MgPSBTUkNUUkVFPSQoc3JjdHJlZSkvICQoRE9DUFJPQykgZG9jICQ8ID4kQAorZGVmaW5lIHJ1bGVfZG9jcHJvYworCXNldCAtZTsJCQkJCQkJCVwKKyAgICAgICAgJChpZiAkKCQocXVpZXQpY21kXyQoMSkpLGVjaG8gJyAgJCgkKHF1aWV0KWNtZF8kKDEpKSc7KSAJXAorICAgICAgICAkKGNtZF8kKDEpKTsgCQkJCQkJCVwKKyAgICAgICAgKCAJCQkJCQkJCVwKKyAgICAgICAgICBlY2hvICdjbWRfJEAgOj0gJChjbWRfJCgxKSknOyAJCQkJXAorICAgICAgICAgIGVjaG8gJEA6IGBTUkNUUkVFPSQoc3JjdHJlZSkgJChET0NQUk9DKSBkZXBlbmQgJDxgOyAJCVwKKyAgICAgICAgKSA+ICQoZGlyICRAKS4kKG5vdGRpciAkQCkuY21kCitlbmRlZgorCislLnhtbDogJS50bXBsICQoS0VSTkVMRE9DKSAkKERPQ1BST0MpICQoS0VSTkVMRE9DWE1MUkVGKSBGT1JDRQorCSQoY2FsbCBpZl9jaGFuZ2VkX3J1bGUsZG9jcHJvYykKKworIyBUZWxsIGtidWlsZCB0byBhbHdheXMgYnVpbGQgdGhlIHByb2dyYW1zCithbHdheXMgOj0gJChob3N0cHJvZ3MteSkKKworbm90Zm91bmR0ZW1wbGF0ZSA9IGVjaG8gIioqKiBZb3UgaGF2ZSB0byBpbnN0YWxsIGRvY2Jvb2stdXRpbHMgb3IgeG1sdG8gKioqIjsgXAorCQkgICBleGl0IDEKK2RiMnh0ZW1wbGF0ZSA9IGRiMlRZUEUgLW8gJChkaXIgJEApICQ8Cit4bWx0b3RlbXBsYXRlID0geG1sdG8gVFlQRSAkKFhNTFRPRkxBR1MpIC1vICQoZGlyICRAKSAkPAorCisjIGRldGVybWluZSB3aGljaCBtZXRob2RzIGFyZSBhdmFpbGFibGUKK2lmZXEgKCQoc2hlbGwgd2hpY2ggZGIycHMgPi9kZXYvbnVsbCAyPiYxICYmIGVjaG8gZm91bmQpLGZvdW5kKQorCXVzZS1kYjJ4ID0gZGIyeAorCXByZWZlci1kYjJ4ID0gZGIyeAorZWxzZQorCXVzZS1kYjJ4ID0gbm90Zm91bmQKKwlwcmVmZXItZGIyeCA9ICQodXNlLXhtbHRvKQorZW5kaWYKK2lmZXEgKCQoc2hlbGwgd2hpY2ggeG1sdG8gPi9kZXYvbnVsbCAyPiYxICYmIGVjaG8gZm91bmQpLGZvdW5kKQorCXVzZS14bWx0byA9IHhtbHRvCisJcHJlZmVyLXhtbHRvID0geG1sdG8KK2Vsc2UKKwl1c2UteG1sdG8gPSBub3Rmb3VuZAorCXByZWZlci14bWx0byA9ICQodXNlLWRiMngpCitlbmRpZgorCisjIHRoZSBjb21tYW5kcywgZ2VuZXJhdGVkIGZyb20gdGhlIGNob3NlbiB0ZW1wbGF0ZQorcXVpZXRfY21kX2RiMnBzID0gUFMgICAgICAkQAorICAgICAgY21kX2RiMnBzID0gJChzdWJzdCBUWVBFLHBzLCAkKCQoUFNfTUVUSE9EKXRlbXBsYXRlKSkKKyUucHMgOiAlLnhtbAorCSQoY2FsbCBjbWQsZGIycHMpCisKK3F1aWV0X2NtZF9kYjJwZGYgPSBQREYgICAgICRACisgICAgICBjbWRfZGIycGRmID0gJChzdWJzdCBUWVBFLHBkZiwgJCgkKFBERl9NRVRIT0QpdGVtcGxhdGUpKQorJS5wZGYgOiAlLnhtbAorCSQoY2FsbCBjbWQsZGIycGRmKQorCisKK2luZGV4ID0gaW5kZXguaHRtbAorbWFpbl9pZHggPSAkKG9iaikvJChpbmRleCkKK2J1aWxkX21haW5faW5kZXggPSBybSAtcmYgJChtYWluX2lkeCk7IFwKKwkJICAgZWNobyAnPGgxPkxpbnV4IEtlcm5lbCBIVE1MIERvY3VtZW50YXRpb248L2gxPicgPj4gJChtYWluX2lkeCkgJiYgXAorCQkgICBlY2hvICc8aDI+S2VybmVsIFZlcnNpb246ICQoS0VSTkVMVkVSU0lPTik8L2gyPicgPj4gJChtYWluX2lkeCkgJiYgXAorCQkgICBjYXQgJChIVE1MKSA+PiAkKG1haW5faWR4KQorCitxdWlldF9jbWRfZGIyaHRtbCA9IEhUTUwgICAgJEAKKyAgICAgIGNtZF9kYjJodG1sID0geG1sdG8gaHRtbCAkKFhNTFRPRkxBR1MpIC1vICQocGF0c3Vic3QgJS5odG1sLCUsJEApICQ8ICYmIFwKKwkJZWNobyAnPGEgSFJFRj0iJChwYXRzdWJzdCAlLmh0bWwsJSwkKG5vdGRpciAkQCkpL2luZGV4Lmh0bWwiPiBcCisJCSQocGF0c3Vic3QgJS5odG1sLCUsJChub3RkaXIgJEApKTwvYT48cD4nID4gJEAKKworIyMjCisjIFJ1bGVzIHRvIGNyZWF0ZSBhbiBhdXggWE1MIGFuZCAuZGIsIGFuZCB1c2UgdGhlbSB0byByZS1wcm9jZXNzIHRoZSBEb2NCb29rIFhNTAorIyB0byBmaWxsIGludGVybmFsIGh5cGVybGlua3MKKyAgICAgICBnZW5fYXV4X3htbCA9IDoKKyBxdWlldF9nZW5fYXV4X3htbCA9IGVjaG8gJyAgWE1MUkVGICAkQCcKK3NpbGVudF9nZW5fYXV4X3htbCA9IDoKKyUuYXV4LnhtbDogJS54bWwKKwlAJCgkKHF1aWV0KWdlbl9hdXhfeG1sKQorCUBybSAtcmYgJEAKKwlAKGNhdCAkPCB8IGVncmVwICJePHJlZmVudHJ5IGlkIiB8IGVncmVwIC1vICJcIi4qXCIiIHwgY3V0IC1mIDIgLWQgXCIgPiAkPC5kYikKKwlAJChLRVJORUxET0NYTUxSRUYpIC1kYiAkPC5kYiAkPCA+ICRACisuUFJFQ0lPVVM6ICUuYXV4LnhtbAorCislLmh0bWw6CSUuYXV4LnhtbAorCUAod2hpY2ggeG1sdG8gPiAvZGV2L251bGwgMj4mMSkgfHwgXAorCSAoZWNobyAiKioqIFlvdSBuZWVkIHRvIGluc3RhbGwgeG1sdG8gKioqIjsgXAorCSAgZXhpdCAxKQorCUBybSAtcmYgJEAgJChwYXRzdWJzdCAlLmh0bWwsJSwkQCkKKwkkKGNhbGwgY21kLGRiMmh0bWwpCisJQGlmIFsgISAteiAiJChQTkctJChiYXNlbmFtZSAkKG5vdGRpciAkQCkpKSIgXTsgdGhlbiBcCisgICAgICAgICAgICBjcCAkKFBORy0kKGJhc2VuYW1lICQobm90ZGlyICRAKSkpICQocGF0c3Vic3QgJS5odG1sLCUsJEApOyBmaQorCitxdWlldF9jbWRfZGIybWFuID0gTUFOICAgICAkQAorICAgICAgY21kX2RiMm1hbiA9IGlmIGdyZXAgLXEgcmVmZW50cnkgJDw7IHRoZW4geG1sdG8gbWFuICQoWE1MVE9GTEFHUykgLW8gJChvYmopL21hbi8kKCpGKSAkPCA7IGZpCislLjkgOiAlLnhtbAorCUAod2hpY2ggeG1sdG8gPiAvZGV2L251bGwgMj4mMSkgfHwgXAorCSAoZWNobyAiKioqIFlvdSBuZWVkIHRvIGluc3RhbGwgeG1sdG8gKioqIjsgXAorCSAgZXhpdCAxKQorCSQoUSlta2RpciAtcCAkKG9iaikvbWFuLyQoKkYpCisJJChjYWxsIGNtZCxkYjJtYW4pCisJQHRvdWNoICRACisKKyMjIworIyBSdWxlcyB0byBnZW5lcmF0ZSBwb3N0c2NyaXB0cyBhbmQgUE5HIGltYWdlcyBmcm9tIC5maWcgZm9ybWF0IGZpbGVzCitxdWlldF9jbWRfZmlnMmVwcyA9IEZJRzJFUFMgJEAKKyAgICAgIGNtZF9maWcyZXBzID0gZmlnMmRldiAtTGVwcyAkPCAkQAorCislLmVwczogJS5maWcKKwlAKHdoaWNoIGZpZzJkZXYgPiAvZGV2L251bGwgMj4mMSkgfHwgXAorCSAoZWNobyAiKioqIFlvdSBuZWVkIHRvIGluc3RhbGwgdHJhbnNmaWcgKioqIjsgXAorCSAgZXhpdCAxKQorCSQoY2FsbCBjbWQsZmlnMmVwcykKKworcXVpZXRfY21kX2ZpZzJwbmcgPSBGSUcyUE5HICRACisgICAgICBjbWRfZmlnMnBuZyA9IGZpZzJkZXYgLUxwbmcgJDwgJEAKKworJS5wbmc6ICUuZmlnCisJQCh3aGljaCBmaWcyZGV2ID4gL2Rldi9udWxsIDI+JjEpIHx8IFwKKwkgKGVjaG8gIioqKiBZb3UgbmVlZCB0byBpbnN0YWxsIHRyYW5zZmlnICoqKiI7IFwKKwkgIGV4aXQgMSkKKwkkKGNhbGwgY21kLGZpZzJwbmcpCisKKyMjIworIyBSdWxlIHRvIGNvbnZlcnQgYSAuYyBmaWxlIHRvIGlubGluZSBYTUwgZG9jdW1lbnRhdGlvbgorICAgICAgIGdlbl94bWwgPSA6CisgcXVpZXRfZ2VuX3htbCA9IGVjaG8gJyAgR0VOICAgICAkQCcKK3NpbGVudF9nZW5feG1sID0gOgorJS54bWw6ICUuYworCUAkKCQocXVpZXQpZ2VuX3htbCkKKwlAKCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJICAgZWNobyAiPHByb2dyYW1saXN0aW5nPiI7ICAgXAorCSAgIGV4cGFuZCAtLXRhYnM9OCA8ICQ8IHwgICAgIFwKKwkgICBzZWQgLWUgInMvJi9cXCZhbXA7L2ciICAgICBcCisJICAgICAgIC1lICJzLzwvXFwmbHQ7L2ciICAgICAgXAorCSAgICAgICAtZSAicy8+L1xcJmd0Oy9nIjsgICAgIFwKKwkgICBlY2hvICI8L3Byb2dyYW1saXN0aW5nPiIpICA+ICRACisKKyMjIworIyBIZWxwIHRhcmdldHMgYXMgdXNlZCBieSB0aGUgdG9wLWxldmVsIG1ha2VmaWxlCitkb2NoZWxwOgorCUBlY2hvICAnIExpbnV4IGtlcm5lbCBpbnRlcm5hbCBkb2N1bWVudGF0aW9uIGluIGRpZmZlcmVudCBmb3JtYXRzOicKKwlAZWNobyAgJyAgaHRtbGRvY3MgICAgICAgIC0gSFRNTCcKKwlAZWNobyAgJyAgcGRmZG9jcyAgICAgICAgIC0gUERGJworCUBlY2hvICAnICBwc2RvY3MgICAgICAgICAgLSBQb3N0c2NyaXB0JworCUBlY2hvICAnICB4bWxkb2NzICAgICAgICAgLSBYTUwgRG9jQm9vaycKKwlAZWNobyAgJyAgbWFuZG9jcyAgICAgICAgIC0gbWFuIHBhZ2VzJworCUBlY2hvICAnICBpbnN0YWxsbWFuZG9jcyAgLSBpbnN0YWxsIG1hbiBwYWdlcyBnZW5lcmF0ZWQgYnkgbWFuZG9jcycKKwlAZWNobyAgJyAgY2xlYW5kb2NzICAgICAgIC0gY2xlYW4gYWxsIGdlbmVyYXRlZCBEb2NCb29rIGZpbGVzJworCisjIyMKKyMgVGVtcG9yYXJ5IGZpbGVzIGxlZnQgYnkgdmFyaW91cyB0b29scworY2xlYW4tZmlsZXMgOj0gJChET0NCT09LUykgXAorCSQocGF0c3Vic3QgJS54bWwsICUuZHZpLCAgICAgJChET0NCT09LUykpIFwKKwkkKHBhdHN1YnN0ICUueG1sLCAlLmF1eCwgICAgICQoRE9DQk9PS1MpKSBcCisJJChwYXRzdWJzdCAlLnhtbCwgJS50ZXgsICAgICAkKERPQ0JPT0tTKSkgXAorCSQocGF0c3Vic3QgJS54bWwsICUubG9nLCAgICAgJChET0NCT09LUykpIFwKKwkkKHBhdHN1YnN0ICUueG1sLCAlLm91dCwgICAgICQoRE9DQk9PS1MpKSBcCisJJChwYXRzdWJzdCAlLnhtbCwgJS5wcywgICAgICAkKERPQ0JPT0tTKSkgXAorCSQocGF0c3Vic3QgJS54bWwsICUucGRmLCAgICAgJChET0NCT09LUykpIFwKKwkkKHBhdHN1YnN0ICUueG1sLCAlLmh0bWwsICAgICQoRE9DQk9PS1MpKSBcCisJJChwYXRzdWJzdCAlLnhtbCwgJS45LCAgICAgICAkKERPQ0JPT0tTKSkgXAorCSQocGF0c3Vic3QgJS54bWwsICUuYXV4LnhtbCwgJChET0NCT09LUykpIFwKKwkkKHBhdHN1YnN0ICUueG1sLCAlLnhtbC5kYiwgICQoRE9DQk9PS1MpKSBcCisJJChwYXRzdWJzdCAlLnhtbCwgJS54bWwsICAgICAkKERPQ0JPT0tTKSkgXAorCSQoaW5kZXgpCisKK2NsZWFuLWRpcnMgOj0gJChwYXRzdWJzdCAlLnhtbCwlLCQoRE9DQk9PS1MpKSBtYW4KKworY2xlYW5kb2NzOiBjbGVhbm1lZGlhZG9jcworCSQoUSlybSAtZiAkKGNhbGwgb2JqZWN0aWZ5LCAkKGNsZWFuLWZpbGVzKSkKKwkkKFEpcm0gLXJmICQoY2FsbCBvYmplY3RpZnksICQoY2xlYW4tZGlycykpCisKKyMgRGVjbGFyZSB0aGUgY29udGVudHMgb2YgdGhlIC5QSE9OWSB2YXJpYWJsZSBhcyBwaG9ueS4gIFdlIGtlZXAgdGhhdAorIyBpbmZvcm1hdGlvbiBpbiBhIHZhcmlhYmxlIHNlIHdlIGNhbiB1c2UgaXQgaW4gaWZfY2hhbmdlZCBhbmQgZnJpZW5kcy4KKworLlBIT05ZOiAkKFBIT05ZKQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2Fsc2EtZHJpdmVyLWFwaS50bXBsIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2Fsc2EtZHJpdmVyLWFwaS50bXBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzZjQzOWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svYWxzYS1kcml2ZXItYXBpLnRtcGwKQEAgLTAsMCArMSwxNDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMS4yLy9FTiIKKwkiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQiIFtdPgorCis8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT4KKzwhLS0gSGVhZGVyICAtLT4KKzwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgorPGJvb2sgaWQ9IkFMU0EtRHJpdmVyLUFQSSI+CisgIDxib29raW5mbz4KKyAgICA8dGl0bGU+VGhlIEFMU0EgRHJpdmVyIEFQSTwvdGl0bGU+CisKKyAgICA8bGVnYWxub3RpY2U+CisgICAgPHBhcmE+CisgICAgVGhpcyBkb2N1bWVudCBpcyBmcmVlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uIAorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgIFRoaXMgZG9jdW1lbnQgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgPGVtcGhhc2lzPldJVEhPVVQgQU5ZIFdBUlJBTlRZPC9lbXBoYXNpcz47IHdpdGhvdXQgZXZlbiB0aGUKKyAgICBpbXBsaWVkIHdhcnJhbnR5IG9mIDxlbXBoYXNpcz5NRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQorICAgIFBBUlRJQ1VMQVIgUFVSUE9TRTwvZW1waGFzaXM+LiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgZm9yIG1vcmUgZGV0YWlscy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAgICBNQSAwMjExMS0xMzA3IFVTQQorICAgIDwvcGFyYT4KKyAgICA8L2xlZ2Fsbm90aWNlPgorCisgIDwvYm9va2luZm8+CisKKzx0b2M+PC90b2M+CisKKyAgPGNoYXB0ZXI+PHRpdGxlPk1hbmFnZW1lbnQgb2YgQ2FyZHMgYW5kIERldmljZXM8L3RpdGxlPgorICAgICA8c2VjdDE+PHRpdGxlPkNhcmQgTWFuYWdlbWVudDwvdGl0bGU+CishRXNvdW5kL2NvcmUvaW5pdC5jCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MT48dGl0bGU+RGV2aWNlIENvbXBvbmVudHM8L3RpdGxlPgorIUVzb3VuZC9jb3JlL2RldmljZS5jCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MT48dGl0bGU+TW9kdWxlIHJlcXVlc3RzIGFuZCBEZXZpY2UgRmlsZSBFbnRyaWVzPC90aXRsZT4KKyFFc291bmQvY29yZS9zb3VuZC5jCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MT48dGl0bGU+TWVtb3J5IE1hbmFnZW1lbnQgSGVscGVyczwvdGl0bGU+CishRXNvdW5kL2NvcmUvbWVtb3J5LmMKKyFFc291bmQvY29yZS9tZW1hbGxvYy5jCisgICAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKyAgPGNoYXB0ZXI+PHRpdGxlPlBDTSBBUEk8L3RpdGxlPgorICAgICA8c2VjdDE+PHRpdGxlPlBDTSBDb3JlPC90aXRsZT4KKyFFc291bmQvY29yZS9wY20uYworIUVzb3VuZC9jb3JlL3BjbV9saWIuYworIUVzb3VuZC9jb3JlL3BjbV9uYXRpdmUuYworIUlpbmNsdWRlL3NvdW5kL3BjbS5oCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MT48dGl0bGU+UENNIEZvcm1hdCBIZWxwZXJzPC90aXRsZT4KKyFFc291bmQvY29yZS9wY21fbWlzYy5jCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MT48dGl0bGU+UENNIE1lbW9yeSBNYW5hZ2VtZW50PC90aXRsZT4KKyFFc291bmQvY29yZS9wY21fbWVtb3J5LmMKKyAgICAgPC9zZWN0MT4KKyAgICAgPHNlY3QxPjx0aXRsZT5QQ00gRE1BIEVuZ2luZSBBUEk8L3RpdGxlPgorIUVzb3VuZC9jb3JlL3BjbV9kbWFlbmdpbmUuYworIUlpbmNsdWRlL3NvdW5kL2RtYWVuZ2luZV9wY20uaAorICAgICA8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisgIDxjaGFwdGVyPjx0aXRsZT5Db250cm9sL01peGVyIEFQSTwvdGl0bGU+CisgICAgIDxzZWN0MT48dGl0bGU+R2VuZXJhbCBDb250cm9sIEludGVyZmFjZTwvdGl0bGU+CishRXNvdW5kL2NvcmUvY29udHJvbC5jCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MT48dGl0bGU+QUM5NyBDb2RlYyBBUEk8L3RpdGxlPgorIUVzb3VuZC9wY2kvYWM5Ny9hYzk3X2NvZGVjLmMKKyFFc291bmQvcGNpL2FjOTcvYWM5N19wY20uYworICAgICA8L3NlY3QxPgorICAgICA8c2VjdDE+PHRpdGxlPlZpcnR1YWwgTWFzdGVyIENvbnRyb2wgQVBJPC90aXRsZT4KKyFFc291bmQvY29yZS92bWFzdGVyLmMKKyFJaW5jbHVkZS9zb3VuZC9jb250cm9sLmgKKyAgICAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorICA8Y2hhcHRlcj48dGl0bGU+TUlESSBBUEk8L3RpdGxlPgorICAgICA8c2VjdDE+PHRpdGxlPlJhdyBNSURJIEFQSTwvdGl0bGU+CishRXNvdW5kL2NvcmUvcmF3bWlkaS5jCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MT48dGl0bGU+TVBVNDAxLVVBUlQgQVBJPC90aXRsZT4KKyFFc291bmQvZHJpdmVycy9tcHU0MDEvbXB1NDAxX3VhcnQuYworICAgICA8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisgIDxjaGFwdGVyPjx0aXRsZT5Qcm9jIEluZm8gQVBJPC90aXRsZT4KKyAgICAgPHNlY3QxPjx0aXRsZT5Qcm9jIEluZm8gSW50ZXJmYWNlPC90aXRsZT4KKyFFc291bmQvY29yZS9pbmZvLmMKKyAgICAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorICA8Y2hhcHRlcj48dGl0bGU+Q29tcHJlc3MgT2ZmbG9hZDwvdGl0bGU+CisgICAgIDxzZWN0MT48dGl0bGU+Q29tcHJlc3MgT2ZmbG9hZCBBUEk8L3RpdGxlPgorIUVzb3VuZC9jb3JlL2NvbXByZXNzX29mZmxvYWQuYworIUlpbmNsdWRlL3VhcGkvc291bmQvY29tcHJlc3Nfb2ZmbG9hZC5oCishSWluY2x1ZGUvdWFwaS9zb3VuZC9jb21wcmVzc19wYXJhbXMuaAorIUlpbmNsdWRlL3NvdW5kL2NvbXByZXNzX2RyaXZlci5oCisgICAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKyAgPGNoYXB0ZXI+PHRpdGxlPkFTb0M8L3RpdGxlPgorICAgICA8c2VjdDE+PHRpdGxlPkFTb0MgQ29yZSBBUEk8L3RpdGxlPgorIUlpbmNsdWRlL3NvdW5kL3NvYy5oCishRXNvdW5kL3NvYy9zb2MtY29yZS5jCis8IS0tICFFc291bmQvc29jL3NvYy1jYWNoZS5jIG5vIGRvY2Jvb2sgY29tbWVudHMgaGVyZSAtLT4KKyFFc291bmQvc29jL3NvYy1kZXZyZXMuYworIUVzb3VuZC9zb2Mvc29jLWlvLmMKKyFFc291bmQvc29jL3NvYy1wY20uYworIUVzb3VuZC9zb2Mvc29jLW9wcy5jCishRXNvdW5kL3NvYy9zb2MtY29tcHJlc3MuYworICAgICA8L3NlY3QxPgorICAgICA8c2VjdDE+PHRpdGxlPkFTb0MgREFQTSBBUEk8L3RpdGxlPgorIUVzb3VuZC9zb2Mvc29jLWRhcG0uYworICAgICA8L3NlY3QxPgorICAgICA8c2VjdDE+PHRpdGxlPkFTb0MgRE1BIEVuZ2luZSBBUEk8L3RpdGxlPgorIUVzb3VuZC9zb2Mvc29jLWdlbmVyaWMtZG1hZW5naW5lLXBjbS5jCisgICAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKyAgPGNoYXB0ZXI+PHRpdGxlPk1pc2NlbGxhbmVvdXMgRnVuY3Rpb25zPC90aXRsZT4KKyAgICAgPHNlY3QxPjx0aXRsZT5IYXJkd2FyZS1EZXBlbmRlbnQgRGV2aWNlcyBBUEk8L3RpdGxlPgorIUVzb3VuZC9jb3JlL2h3ZGVwLmMKKyAgICAgPC9zZWN0MT4KKyAgICAgPHNlY3QxPjx0aXRsZT5KYWNrIEFic3RyYWN0aW9uIExheWVyIEFQSTwvdGl0bGU+CishSWluY2x1ZGUvc291bmQvamFjay5oCishRXNvdW5kL2NvcmUvamFjay5jCishRXNvdW5kL3NvYy9zb2MtamFjay5jCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MT48dGl0bGU+SVNBIERNQSBIZWxwZXJzPC90aXRsZT4KKyFFc291bmQvY29yZS9pc2FkbWEuYworICAgICA8L3NlY3QxPgorICAgICA8c2VjdDE+PHRpdGxlPk90aGVyIEhlbHBlciBNYWNyb3M8L3RpdGxlPgorIUlpbmNsdWRlL3NvdW5kL2NvcmUuaAorICAgICA8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisKKzwvYm9vaz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9jcnlwdG8tQVBJLnRtcGwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svY3J5cHRvLUFQSS50bXBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ZGYyM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svY3J5cHRvLUFQSS50bXBsCkBAIC0wLDAgKzEsMjEyNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4xLjIvL0VOIgorCSJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMS4yL2RvY2Jvb2t4LmR0ZCIgW10+CisKKzxib29rIGlkPSJLZXJuZWxDcnlwdG9BUEkiPgorIDxib29raW5mbz4KKyAgPHRpdGxlPkxpbnV4IEtlcm5lbCBDcnlwdG8gQVBJPC90aXRsZT4KKworICA8YXV0aG9yZ3JvdXA+CisgICA8YXV0aG9yPgorICAgIDxmaXJzdG5hbWU+U3RlcGhhbjwvZmlyc3RuYW1lPgorICAgIDxzdXJuYW1lPk11ZWxsZXI8L3N1cm5hbWU+CisgICAgPGFmZmlsaWF0aW9uPgorICAgICA8YWRkcmVzcz4KKyAgICAgIDxlbWFpbD5zbXVlbGxlckBjaHJvbm94LmRlPC9lbWFpbD4KKyAgICAgPC9hZGRyZXNzPgorICAgIDwvYWZmaWxpYXRpb24+CisgICA8L2F1dGhvcj4KKyAgIDxhdXRob3I+CisgICAgPGZpcnN0bmFtZT5NYXJlazwvZmlyc3RuYW1lPgorICAgIDxzdXJuYW1lPlZhc3V0PC9zdXJuYW1lPgorICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgPGFkZHJlc3M+CisgICAgICA8ZW1haWw+bWFyZWtAZGVueC5kZTwvZW1haWw+CisgICAgIDwvYWRkcmVzcz4KKyAgICA8L2FmZmlsaWF0aW9uPgorICAgPC9hdXRob3I+CisgIDwvYXV0aG9yZ3JvdXA+CisKKyAgPGNvcHlyaWdodD4KKyAgIDx5ZWFyPjIwMTQ8L3llYXI+CisgICA8aG9sZGVyPlN0ZXBoYW4gTXVlbGxlcjwvaG9sZGVyPgorICA8L2NvcHlyaWdodD4KKworCisgIDxsZWdhbG5vdGljZT4KKyAgIDxwYXJhPgorICAgICBUaGlzIGRvY3VtZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUKKyAgICAgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlcgorICAgICB2ZXJzaW9uLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorICAgICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkCisgICAgIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKyAgICAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKyAgICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAgICAgTUEgMDIxMTEtMTMwNyBVU0EKKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgIEZvciBtb3JlIGRldGFpbHMgc2VlIHRoZSBmaWxlIENPUFlJTkcgaW4gdGhlIHNvdXJjZQorICAgICBkaXN0cmlidXRpb24gb2YgTGludXguCisgICA8L3BhcmE+CisgIDwvbGVnYWxub3RpY2U+CisgPC9ib29raW5mbz4KKworIDx0b2M+PC90b2M+CisKKyA8Y2hhcHRlciBpZD0iSW50cm8iPgorICA8dGl0bGU+S2VybmVsIENyeXB0byBBUEkgSW50ZXJmYWNlIFNwZWNpZmljYXRpb248L3RpdGxlPgorCisgICA8c2VjdDE+PHRpdGxlPkludHJvZHVjdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIGtlcm5lbCBjcnlwdG8gQVBJIG9mZmVycyBhIHJpY2ggc2V0IG9mIGNyeXB0b2dyYXBoaWMgY2lwaGVycyBhcworICAgICB3ZWxsIGFzIG90aGVyIGRhdGEgdHJhbnNmb3JtYXRpb24gbWVjaGFuaXNtcyBhbmQgbWV0aG9kcyB0byBpbnZva2UKKyAgICAgdGhlc2UuIFRoaXMgZG9jdW1lbnQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgQVBJIGFuZCBwcm92aWRlcworICAgICBleGFtcGxlIGNvZGUuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFRvIHVuZGVyc3RhbmQgYW5kIHByb3Blcmx5IHVzZSB0aGUga2VybmVsIGNyeXB0byBBUEkgYSBicmllZgorICAgICBleHBsYW5hdGlvbiBvZiBpdHMgc3RydWN0dXJlIGlzIGdpdmVuLiBCYXNlZCBvbiB0aGUgYXJjaGl0ZWN0dXJlLAorICAgICB0aGUgQVBJIGNhbiBiZSBzZXBhcmF0ZWQgaW50byBkaWZmZXJlbnQgY29tcG9uZW50cy4gRm9sbG93aW5nIHRoZQorICAgICBhcmNoaXRlY3R1cmUgc3BlY2lmaWNhdGlvbiwgaGludHMgdG8gZGV2ZWxvcGVycyBvZiBjaXBoZXJzIGFyZQorICAgICBwcm92aWRlZC4gUG9pbnRlcnMgdG8gdGhlIEFQSSBmdW5jdGlvbiBjYWxsICBkb2N1bWVudGF0aW9uIGFyZQorICAgICBnaXZlbiBhdCB0aGUgZW5kLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBUaGUga2VybmVsIGNyeXB0byBBUEkgcmVmZXJzIHRvIGFsbCBhbGdvcml0aG1zIGFzICJ0cmFuc2Zvcm1hdGlvbnMiLgorICAgICBUaGVyZWZvcmUsIGEgY2lwaGVyIGhhbmRsZSB2YXJpYWJsZSB1c3VhbGx5IGhhcyB0aGUgbmFtZSAidGZtIi4KKyAgICAgQmVzaWRlcyBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMsIHRoZSBrZXJuZWwgY3J5cHRvIEFQSSBhbHNvIGtub3dzCisgICAgIGNvbXByZXNzaW9uIHRyYW5zZm9ybWF0aW9ucyBhbmQgaGFuZGxlcyB0aGVtIHRoZSBzYW1lIHdheSBhcyBjaXBoZXJzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBUaGUga2VybmVsIGNyeXB0byBBUEkgc2VydmVzIHRoZSBmb2xsb3dpbmcgZW50aXR5IHR5cGVzOgorCisgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+Y29uc3VtZXJzIHJlcXVlc3RpbmcgY3J5cHRvZ3JhcGhpYyBzZXJ2aWNlczwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT5kYXRhIHRyYW5zZm9ybWF0aW9uIGltcGxlbWVudGF0aW9ucyAodHlwaWNhbGx5IGNpcGhlcnMpCisgICAgICAgdGhhdCBjYW4gYmUgY2FsbGVkIGJ5IGNvbnN1bWVycyB1c2luZyB0aGUga2VybmVsIGNyeXB0bworICAgICAgIEFQSTwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBUaGlzIHNwZWNpZmljYXRpb24gaXMgaW50ZW5kZWQgZm9yIGNvbnN1bWVycyBvZiB0aGUga2VybmVsIGNyeXB0bworICAgICBBUEkgYXMgd2VsbCBhcyBmb3IgZGV2ZWxvcGVycyBpbXBsZW1lbnRpbmcgY2lwaGVycy4gVGhpcyBBUEkKKyAgICAgc3BlY2lmaWNhdGlvbiwgaG93ZXZlciwgZG9lcyBub3QgZGlzY3VzcyBhbGwgQVBJIGNhbGxzIGF2YWlsYWJsZQorICAgICB0byBkYXRhIHRyYW5zZm9ybWF0aW9uIGltcGxlbWVudGF0aW9ucyAoaS5lLiBpbXBsZW1lbnRhdGlvbnMgb2YKKyAgICAgY2lwaGVycyBhbmQgb3RoZXIgdHJhbnNmb3JtYXRpb25zIChzdWNoIGFzIENSQyBvciBldmVuIGNvbXByZXNzaW9uCisgICAgIGFsZ29yaXRobXMpIHRoYXQgY2FuIHJlZ2lzdGVyIHdpdGggdGhlIGtlcm5lbCBjcnlwdG8gQVBJKS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgTm90ZTogVGhlIHRlcm1zICJ0cmFuc2Zvcm1hdGlvbiIgYW5kIGNpcGhlciBhbGdvcml0aG0gYXJlIHVzZWQKKyAgICAgaW50ZXJjaGFuZ2VhYmx5LgorICAgIDwvcGFyYT4KKyAgIDwvc2VjdDE+CisKKyAgIDxzZWN0MT48dGl0bGU+VGVybWlub2xvZ3k8L3RpdGxlPgorICAgIDxwYXJhPgorICAgICBUaGUgdHJhbnNmb3JtYXRpb24gaW1wbGVtZW50YXRpb24gaXMgYW4gYWN0dWFsIGNvZGUgb3IgaW50ZXJmYWNlCisgICAgIHRvIGhhcmR3YXJlIHdoaWNoIGltcGxlbWVudHMgYSBjZXJ0YWluIHRyYW5zZm9ybWF0aW9uIHdpdGggcHJlY2lzZWx5CisgICAgIGRlZmluZWQgYmVoYXZpb3IuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFRoZSB0cmFuc2Zvcm1hdGlvbiBvYmplY3QgKFRGTSkgaXMgYW4gaW5zdGFuY2Ugb2YgYSB0cmFuc2Zvcm1hdGlvbgorICAgICBpbXBsZW1lbnRhdGlvbi4gVGhlcmUgY2FuIGJlIG11bHRpcGxlIHRyYW5zZm9ybWF0aW9uIG9iamVjdHMKKyAgICAgYXNzb2NpYXRlZCB3aXRoIGEgc2luZ2xlIHRyYW5zZm9ybWF0aW9uIGltcGxlbWVudGF0aW9uLiBFYWNoIG9mCisgICAgIHRob3NlIHRyYW5zZm9ybWF0aW9uIG9iamVjdHMgaXMgaGVsZCBieSBhIGNyeXB0byBBUEkgY29uc3VtZXIgb3IKKyAgICAgYW5vdGhlciB0cmFuc2Zvcm1hdGlvbi4gVHJhbnNmb3JtYXRpb24gb2JqZWN0IGlzIGFsbG9jYXRlZCB3aGVuIGEKKyAgICAgY3J5cHRvIEFQSSBjb25zdW1lciByZXF1ZXN0cyBhIHRyYW5zZm9ybWF0aW9uIGltcGxlbWVudGF0aW9uLgorICAgICBUaGUgY29uc3VtZXIgaXMgdGhlbiBwcm92aWRlZCB3aXRoIGEgc3RydWN0dXJlLCB3aGljaCBjb250YWlucworICAgICBhIHRyYW5zZm9ybWF0aW9uIG9iamVjdCAoVEZNKS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zIHRyYW5zZm9ybWF0aW9uIG9iamVjdHMgbWF5IGFsc28gYmUKKyAgICAgcmVmZXJyZWQgdG8gYXMgYSAiY2lwaGVyIGhhbmRsZSIuIFN1Y2ggYSBjaXBoZXIgaGFuZGxlIGlzIGFsd2F5cworICAgICBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcGhhc2VzIHRoYXQgYXJlIHJlZmxlY3RlZCBpbiB0aGUgQVBJIGNhbGxzCisgICAgIGFwcGxpY2FibGUgdG8gc3VjaCBhIGNpcGhlciBoYW5kbGU6CisgICAgPC9wYXJhPgorCisgICAgPG9yZGVyZWRsaXN0PgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT5Jbml0aWFsaXphdGlvbiBvZiBhIGNpcGhlciBoYW5kbGUuPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT5FeGVjdXRpb24gb2YgYWxsIGludGVuZGVkIGNpcGhlciBvcGVyYXRpb25zIGFwcGxpY2FibGUKKyAgICAgIGZvciB0aGUgaGFuZGxlIHdoZXJlIHRoZSBjaXBoZXIgaGFuZGxlIG11c3QgYmUgZnVybmlzaGVkIHRvCisgICAgICBldmVyeSBBUEkgY2FsbC48L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPkRlc3RydWN0aW9uIG9mIGEgY2lwaGVyIGhhbmRsZS48L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC9vcmRlcmVkbGlzdD4KKworICAgIDxwYXJhPgorICAgICBXaGVuIHVzaW5nIHRoZSBpbml0aWFsaXphdGlvbiBBUEkgY2FsbHMsIGEgY2lwaGVyIGhhbmRsZSBpcworICAgICBjcmVhdGVkIGFuZCByZXR1cm5lZCB0byB0aGUgY29uc3VtZXIuIFRoZXJlZm9yZSwgcGxlYXNlIHJlZmVyCisgICAgIHRvIGFsbCBpbml0aWFsaXphdGlvbiBBUEkgY2FsbHMgdGhhdCByZWZlciB0byB0aGUgZGF0YQorICAgICBzdHJ1Y3R1cmUgdHlwZSBhIGNvbnN1bWVyIGlzIGV4cGVjdGVkIHRvIHJlY2VpdmUgYW5kIHN1YnNlcXVlbnRseQorICAgICB0byB1c2UuIFRoZSBpbml0aWFsaXphdGlvbiBBUEkgY2FsbHMgaGF2ZSBhbGwgdGhlIHNhbWUgbmFtaW5nCisgICAgIGNvbnZlbnRpb25zIG9mIGNyeXB0b19hbGxvY18qLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBUaGUgdHJhbnNmb3JtYXRpb24gY29udGV4dCBpcyBwcml2YXRlIGRhdGEgYXNzb2NpYXRlZCB3aXRoCisgICAgIHRoZSB0cmFuc2Zvcm1hdGlvbiBvYmplY3QuCisgICAgPC9wYXJhPgorICAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJBcmNoaXRlY3R1cmUiPjx0aXRsZT5LZXJuZWwgQ3J5cHRvIEFQSSBBcmNoaXRlY3R1cmU8L3RpdGxlPgorICAgPHNlY3QxPjx0aXRsZT5DaXBoZXIgYWxnb3JpdGhtIHR5cGVzPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgVGhlIGtlcm5lbCBjcnlwdG8gQVBJIHByb3ZpZGVzIGRpZmZlcmVudCBBUEkgY2FsbHMgZm9yIHRoZQorICAgICBmb2xsb3dpbmcgY2lwaGVyIHR5cGVzOgorCisgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICA8bGlzdGl0ZW0+PHBhcmE+U3ltbWV0cmljIGNpcGhlcnM8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT48cGFyYT5BRUFEIGNpcGhlcnM8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT48cGFyYT5NZXNzYWdlIGRpZ2VzdCwgaW5jbHVkaW5nIGtleWVkIG1lc3NhZ2UgZGlnZXN0PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+PHBhcmE+UmFuZG9tIG51bWJlciBnZW5lcmF0aW9uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+PHBhcmE+VXNlciBzcGFjZSBpbnRlcmZhY2U8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorICAgPC9zZWN0MT4KKworICAgPHNlY3QxPjx0aXRsZT5DaXBoZXJzIEFuZCBUZW1wbGF0ZXM8L3RpdGxlPgorICAgIDxwYXJhPgorICAgICBUaGUga2VybmVsIGNyeXB0byBBUEkgcHJvdmlkZXMgaW1wbGVtZW50YXRpb25zIG9mIHNpbmdsZSBibG9jaworICAgICBjaXBoZXJzIGFuZCBtZXNzYWdlIGRpZ2VzdHMuIEluIGFkZGl0aW9uLCB0aGUga2VybmVsIGNyeXB0byBBUEkKKyAgICAgcHJvdmlkZXMgbnVtZXJvdXMgInRlbXBsYXRlcyIgdGhhdCBjYW4gYmUgdXNlZCBpbiBjb25qdW5jdGlvbgorICAgICB3aXRoIHRoZSBzaW5nbGUgYmxvY2sgY2lwaGVycyBhbmQgbWVzc2FnZSBkaWdlc3RzLiBUZW1wbGF0ZXMKKyAgICAgaW5jbHVkZSBhbGwgdHlwZXMgb2YgYmxvY2sgY2hhaW5pbmcgbW9kZSwgdGhlIEhNQUMgbWVjaGFuaXNtLCBldGMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFNpbmdsZSBibG9jayBjaXBoZXJzIGFuZCBtZXNzYWdlIGRpZ2VzdHMgY2FuIGVpdGhlciBiZSBkaXJlY3RseQorICAgICB1c2VkIGJ5IGEgY2FsbGVyIG9yIGludm9rZWQgdG9nZXRoZXIgd2l0aCBhIHRlbXBsYXRlIHRvIGZvcm0KKyAgICAgbXVsdGktYmxvY2sgY2lwaGVycyBvciBrZXllZCBtZXNzYWdlIGRpZ2VzdHMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIEEgc2luZ2xlIGJsb2NrIGNpcGhlciBtYXkgZXZlbiBiZSBjYWxsZWQgd2l0aCBtdWx0aXBsZSB0ZW1wbGF0ZXMuCisgICAgIEhvd2V2ZXIsIHRlbXBsYXRlcyBjYW5ub3QgYmUgdXNlZCB3aXRob3V0IGEgc2luZ2xlIGNpcGhlci4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgU2VlIC9wcm9jL2NyeXB0byBhbmQgc2VhcmNoIGZvciAibmFtZSIuIEZvciBleGFtcGxlOgorCisgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICA8bGlzdGl0ZW0+PHBhcmE+YWVzPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+PHBhcmE+ZWNiKGFlcyk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT48cGFyYT5jbWFjKGFlcyk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT48cGFyYT5jY20oYWVzKTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgPGxpc3RpdGVtPjxwYXJhPnJmYzQxMDYoZ2NtKGFlcykpPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+PHBhcmE+c2hhMTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgPGxpc3RpdGVtPjxwYXJhPmhtYWMoc2hhMSk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT48cGFyYT5hdXRoZW5jKGhtYWMoc2hhMSksY2JjKGFlcykpPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBJbiB0aGVzZSBleGFtcGxlcywgImFlcyIgYW5kICJzaGExIiBhcmUgdGhlIGNpcGhlcnMgYW5kIGFsbAorICAgICBvdGhlcnMgYXJlIHRoZSB0ZW1wbGF0ZXMuCisgICAgPC9wYXJhPgorICAgPC9zZWN0MT4KKworICAgPHNlY3QxPjx0aXRsZT5TeW5jaHJvbm91cyBBbmQgQXN5bmNocm9ub3VzIE9wZXJhdGlvbjwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgIFRoZSBrZXJuZWwgY3J5cHRvIEFQSSBwcm92aWRlcyBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzCisgICAgIEFQSSBvcGVyYXRpb25zLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBXaGVuIHVzaW5nIHRoZSBzeW5jaHJvbm91cyBBUEkgb3BlcmF0aW9uLCB0aGUgY2FsbGVyIGludm9rZXMKKyAgICAgYSBjaXBoZXIgb3BlcmF0aW9uIHdoaWNoIGlzIHBlcmZvcm1lZCBzeW5jaHJvbm91c2x5IGJ5IHRoZQorICAgICBrZXJuZWwgY3J5cHRvIEFQSS4gVGhhdCBtZWFucywgdGhlIGNhbGxlciB3YWl0cyB1bnRpbCB0aGUKKyAgICAgY2lwaGVyIG9wZXJhdGlvbiBjb21wbGV0ZXMuIFRoZXJlZm9yZSwgdGhlIGtlcm5lbCBjcnlwdG8gQVBJCisgICAgIGNhbGxzIHdvcmsgbGlrZSByZWd1bGFyIGZ1bmN0aW9uIGNhbGxzLiBGb3Igc3luY2hyb25vdXMKKyAgICAgb3BlcmF0aW9uLCB0aGUgc2V0IG9mIEFQSSBjYWxscyBpcyBzbWFsbCBhbmQgY29uY2VwdHVhbGx5CisgICAgIHNpbWlsYXIgdG8gYW55IG90aGVyIGNyeXB0byBsaWJyYXJ5LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBBc3luY2hyb25vdXMgb3BlcmF0aW9uIGlzIHByb3ZpZGVkIGJ5IHRoZSBrZXJuZWwgY3J5cHRvIEFQSQorICAgICB3aGljaCBpbXBsaWVzIHRoYXQgdGhlIGludm9jYXRpb24gb2YgYSBjaXBoZXIgb3BlcmF0aW9uIHdpbGwKKyAgICAgY29tcGxldGUgYWxtb3N0IGluc3RhbnRseS4gVGhhdCBpbnZvY2F0aW9uIHRyaWdnZXJzIHRoZQorICAgICBjaXBoZXIgb3BlcmF0aW9uIGJ1dCBpdCBkb2VzIG5vdCBzaWduYWwgaXRzIGNvbXBsZXRpb24uIEJlZm9yZQorICAgICBpbnZva2luZyBhIGNpcGhlciBvcGVyYXRpb24sIHRoZSBjYWxsZXIgbXVzdCBwcm92aWRlIGEgY2FsbGJhY2sKKyAgICAgZnVuY3Rpb24gdGhlIGtlcm5lbCBjcnlwdG8gQVBJIGNhbiBpbnZva2UgdG8gc2lnbmFsIHRoZQorICAgICBjb21wbGV0aW9uIG9mIHRoZSBjaXBoZXIgb3BlcmF0aW9uLiBGdXJ0aGVybW9yZSwgdGhlIGNhbGxlcgorICAgICBtdXN0IGVuc3VyZSBpdCBjYW4gaGFuZGxlIHN1Y2ggYXN5bmNocm9ub3VzIGV2ZW50cyBieSBhcHBseWluZworICAgICBhcHByb3ByaWF0ZSBsb2NraW5nIGFyb3VuZCBpdHMgZGF0YS4gVGhlIGtlcm5lbCBjcnlwdG8gQVBJCisgICAgIGRvZXMgbm90IHBlcmZvcm0gYW55IHNwZWNpYWwgc2VyaWFsaXphdGlvbiBvcGVyYXRpb24gdG8gcHJvdGVjdAorICAgICB0aGUgY2FsbGVyJ3MgZGF0YSBpbnRlZ3JpdHkuCisgICAgPC9wYXJhPgorICAgPC9zZWN0MT4KKworICAgPHNlY3QxPjx0aXRsZT5DcnlwdG8gQVBJIENpcGhlciBSZWZlcmVuY2VzIEFuZCBQcmlvcml0eTwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgIEEgY2lwaGVyIGlzIHJlZmVyZW5jZWQgYnkgdGhlIGNhbGxlciB3aXRoIGEgc3RyaW5nLiBUaGF0IHN0cmluZworICAgICBoYXMgdGhlIGZvbGxvd2luZyBzZW1hbnRpY3M6CisKKyAgICAgPHByb2dyYW1saXN0aW5nPgorCXRlbXBsYXRlKHNpbmdsZSBibG9jayBjaXBoZXIpCisgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgICAgd2hlcmUgInRlbXBsYXRlIiBhbmQgInNpbmdsZSBibG9jayBjaXBoZXIiIGlzIHRoZSBhZm9yZW1lbnRpb25lZAorICAgICB0ZW1wbGF0ZSBhbmQgc2luZ2xlIGJsb2NrIGNpcGhlciwgcmVzcGVjdGl2ZWx5LiBJZiBhcHBsaWNhYmxlLAorICAgICBhZGRpdGlvbmFsIHRlbXBsYXRlcyBtYXkgZW5jbG9zZSBvdGhlciB0ZW1wbGF0ZXMsIHN1Y2ggYXMKKworICAgICAgPHByb2dyYW1saXN0aW5nPgorCXRlbXBsYXRlMSh0ZW1wbGF0ZTIoc2luZ2xlIGJsb2NrIGNpcGhlcikpKQorICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIGtlcm5lbCBjcnlwdG8gQVBJIG1heSBwcm92aWRlIG11bHRpcGxlIGltcGxlbWVudGF0aW9ucyBvZiBhCisgICAgIHRlbXBsYXRlIG9yIGEgc2luZ2xlIGJsb2NrIGNpcGhlci4gRm9yIGV4YW1wbGUsIEFFUyBvbiBuZXdlcgorICAgICBJbnRlbCBoYXJkd2FyZSBoYXMgdGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbnM6IEFFUy1OSSwKKyAgICAgYXNzZW1ibGVyIGltcGxlbWVudGF0aW9uLCBvciBzdHJhaWdodCBDLiBOb3csIHdoZW4gdXNpbmcgdGhlCisgICAgIHN0cmluZyAiYWVzIiB3aXRoIHRoZSBrZXJuZWwgY3J5cHRvIEFQSSwgd2hpY2ggY2lwaGVyCisgICAgIGltcGxlbWVudGF0aW9uIGlzIHVzZWQ/IFRoZSBhbnN3ZXIgdG8gdGhhdCBxdWVzdGlvbiBpcyB0aGUKKyAgICAgcHJpb3JpdHkgbnVtYmVyIGFzc2lnbmVkIHRvIGVhY2ggY2lwaGVyIGltcGxlbWVudGF0aW9uIGJ5IHRoZQorICAgICBrZXJuZWwgY3J5cHRvIEFQSS4gV2hlbiBhIGNhbGxlciB1c2VzIHRoZSBzdHJpbmcgdG8gcmVmZXIgdG8gYQorICAgICBjaXBoZXIgZHVyaW5nIGluaXRpYWxpemF0aW9uIG9mIGEgY2lwaGVyIGhhbmRsZSwgdGhlIGtlcm5lbAorICAgICBjcnlwdG8gQVBJIGxvb2tzIHVwIGFsbCBpbXBsZW1lbnRhdGlvbnMgcHJvdmlkaW5nIGFuCisgICAgIGltcGxlbWVudGF0aW9uIHdpdGggdGhhdCBuYW1lIGFuZCBzZWxlY3RzIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICB3aXRoIHRoZSBoaWdoZXN0IHByaW9yaXR5LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBOb3csIGEgY2FsbGVyIG1heSBoYXZlIHRoZSBuZWVkIHRvIHJlZmVyIHRvIGEgc3BlY2lmaWMgY2lwaGVyCisgICAgIGltcGxlbWVudGF0aW9uIGFuZCB0aHVzIGRvZXMgbm90IHdhbnQgdG8gcmVseSBvbiB0aGUKKyAgICAgcHJpb3JpdHktYmFzZWQgc2VsZWN0aW9uLiBUbyBhY2NvbW1vZGF0ZSB0aGlzIHNjZW5hcmlvLCB0aGUKKyAgICAga2VybmVsIGNyeXB0byBBUEkgYWxsb3dzIHRoZSBjaXBoZXIgaW1wbGVtZW50YXRpb24gdG8gcmVnaXN0ZXIKKyAgICAgYSB1bmlxdWUgbmFtZSBpbiBhZGRpdGlvbiB0byBjb21tb24gbmFtZXMuIFdoZW4gdXNpbmcgdGhhdAorICAgICB1bmlxdWUgbmFtZSwgYSBjYWxsZXIgaXMgdGhlcmVmb3JlIGFsd2F5cyBzdXJlIHRvIHJlZmVyIHRvCisgICAgIHRoZSBpbnRlbmRlZCBjaXBoZXIgaW1wbGVtZW50YXRpb24uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFRoZSBsaXN0IG9mIGF2YWlsYWJsZSBjaXBoZXJzIGlzIGdpdmVuIGluIC9wcm9jL2NyeXB0by4gSG93ZXZlciwKKyAgICAgdGhhdCBsaXN0IGRvZXMgbm90IHNwZWNpZnkgYWxsIHBvc3NpYmxlIHBlcm11dGF0aW9ucyBvZgorICAgICB0ZW1wbGF0ZXMgYW5kIGNpcGhlcnMuIEVhY2ggYmxvY2sgbGlzdGVkIGluIC9wcm9jL2NyeXB0byBtYXkKKyAgICAgY29udGFpbiB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIC0tIGlmIG9uZSBvZiB0aGUgY29tcG9uZW50cworICAgICBsaXN0ZWQgYXMgZm9sbG93cyBhcmUgbm90IGFwcGxpY2FibGUgdG8gYSBjaXBoZXIsIGl0IGlzIG5vdAorICAgICBkaXNwbGF5ZWQ6CisgICAgPC9wYXJhPgorCisgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+bmFtZTogdGhlIGdlbmVyaWMgbmFtZSBvZiB0aGUgY2lwaGVyIHRoYXQgaXMgc3ViamVjdAorICAgICAgIHRvIHRoZSBwcmlvcml0eS1iYXNlZCBzZWxlY3Rpb24gLS0gdGhpcyBuYW1lIGNhbiBiZSB1c2VkIGJ5CisgICAgICAgdGhlIGNpcGhlciBhbGxvY2F0aW9uIEFQSSBjYWxscyAoYWxsIG5hbWVzIGxpc3RlZCBhYm92ZSBhcmUKKyAgICAgICBleGFtcGxlcyBmb3Igc3VjaCBnZW5lcmljIG5hbWVzKTwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+ZHJpdmVyOiB0aGUgdW5pcXVlIG5hbWUgb2YgdGhlIGNpcGhlciAtLSB0aGlzIG5hbWUgY2FuCisgICAgICAgYmUgdXNlZCBieSB0aGUgY2lwaGVyIGFsbG9jYXRpb24gQVBJIGNhbGxzPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT5tb2R1bGU6IHRoZSBrZXJuZWwgbW9kdWxlIHByb3ZpZGluZyB0aGUgY2lwaGVyCisgICAgICAgaW1wbGVtZW50YXRpb24gKG9yICJrZXJuZWwiIGZvciBzdGF0aWNhbGx5IGxpbmtlZCBjaXBoZXJzKTwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+cHJpb3JpdHk6IHRoZSBwcmlvcml0eSB2YWx1ZSBvZiB0aGUgY2lwaGVyIGltcGxlbWVudGF0aW9uPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT5yZWZjbnQ6IHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIHJlc3BlY3RpdmUgY2lwaGVyCisgICAgICAgKGkuZS4gdGhlIG51bWJlciBvZiBjdXJyZW50IGNvbnN1bWVycyBvZiB0aGlzIGNpcGhlcik8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPnNlbGZ0ZXN0OiBzcGVjaWZpY2F0aW9uIHdoZXRoZXIgdGhlIHNlbGYgdGVzdCBmb3IgdGhlCisgICAgICAgY2lwaGVyIHBhc3NlZDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+dHlwZToKKyAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT5ibGtjaXBoZXIgZm9yIHN5bmNocm9ub3VzIGJsb2NrIGNpcGhlcnM8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPmFibGtjaXBoZXIgZm9yIGFzeW5jaHJvbm91cyBibG9jayBjaXBoZXJzPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT5jaXBoZXIgZm9yIHNpbmdsZSBibG9jayBjaXBoZXJzIHRoYXQgbWF5IGJlIHVzZWQgd2l0aAorICAgICAgICAgIGFuIGFkZGl0aW9uYWwgdGVtcGxhdGU8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPnNoYXNoIGZvciBzeW5jaHJvbm91cyBtZXNzYWdlIGRpZ2VzdDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+YWhhc2ggZm9yIGFzeW5jaHJvbm91cyBtZXNzYWdlIGRpZ2VzdDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+YWVhZCBmb3IgQUVBRCBjaXBoZXIgdHlwZTwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+Y29tcHJlc3Npb24gZm9yIGNvbXByZXNzaW9uIHR5cGUgdHJhbnNmb3JtYXRpb25zPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT5ybmcgZm9yIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT5naXZjaXBoZXIgZm9yIGNpcGhlciB3aXRoIGFzc29jaWF0ZWQgSVYgZ2VuZXJhdG9yCisgICAgICAgICAgKHNlZSB0aGUgZ2VuaXYgZW50cnkgYmVsb3cgZm9yIHRoZSBzcGVjaWZpY2F0aW9uIG9mIHRoZQorICAgICAgICAgIElWIGdlbmVyYXRvciB0eXBlIHVzZWQgYnkgdGhlIGNpcGhlciBpbXBsZW1lbnRhdGlvbik8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPmJsb2Nrc2l6ZTogYmxvY2tzaXplIG9mIGNpcGhlciBpbiBieXRlczwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+a2V5c2l6ZToga2V5IHNpemUgaW4gYnl0ZXM8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPml2c2l6ZTogSVYgc2l6ZSBpbiBieXRlczwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+c2VlZHNpemU6IHJlcXVpcmVkIHNpemUgb2Ygc2VlZCBkYXRhIGZvciByYW5kb20gbnVtYmVyCisgICAgICAgZ2VuZXJhdG9yPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT5kaWdlc3RzaXplOiBvdXRwdXQgc2l6ZSBvZiB0aGUgbWVzc2FnZSBkaWdlc3Q8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPmdlbml2OiBJViBnZW5lcmF0aW9uIHR5cGU6CisgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+ZXNlcWl2IGZvciBlbmNyeXB0ZWQgc2VxdWVuY2UgbnVtYmVyIGJhc2VkIElWCisgICAgICAgICAgZ2VuZXJhdGlvbjwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+c2VxaXYgZm9yIHNlcXVlbmNlIG51bWJlciBiYXNlZCBJViBnZW5lcmF0aW9uPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT5jaGFpbml2IGZvciBjaGFpbiBpdiBnZW5lcmF0aW9uPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8cGFyYT4mbHQ7YnVpbHRpbiZndDsgaXMgYSBtYXJrZXIgdGhhdCB0aGUgY2lwaGVyIGltcGxlbWVudHMKKyAgICAgICAgICBJViBnZW5lcmF0aW9uIGFuZCBoYW5kbGluZyBhcyBpdCBpcyBzcGVjaWZpYyB0byB0aGUgZ2l2ZW4KKyAgICAgICAgICBjaXBoZXI8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC9pdGVtaXplZGxpc3Q+CisgICA8L3NlY3QxPgorCisgICA8c2VjdDE+PHRpdGxlPktleSBTaXplczwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgIFdoZW4gYWxsb2NhdGluZyBhIGNpcGhlciBoYW5kbGUsIHRoZSBjYWxsZXIgb25seSBzcGVjaWZpZXMgdGhlCisgICAgIGNpcGhlciB0eXBlLiBTeW1tZXRyaWMgY2lwaGVycywgaG93ZXZlciwgdHlwaWNhbGx5IHN1cHBvcnQKKyAgICAgbXVsdGlwbGUga2V5IHNpemVzIChlLmcuIEFFUy0xMjggdnMuIEFFUy0xOTIgdnMuIEFFUy0yNTYpLgorICAgICBUaGVzZSBrZXkgc2l6ZXMgYXJlIGRldGVybWluZWQgd2l0aCB0aGUgbGVuZ3RoIG9mIHRoZSBwcm92aWRlZAorICAgICBrZXkuIFRodXMsIHRoZSBrZXJuZWwgY3J5cHRvIEFQSSBkb2VzIG5vdCBwcm92aWRlIGEgc2VwYXJhdGUKKyAgICAgd2F5IHRvIHNlbGVjdCB0aGUgcGFydGljdWxhciBzeW1tZXRyaWMgY2lwaGVyIGtleSBzaXplLgorICAgIDwvcGFyYT4KKyAgIDwvc2VjdDE+CisKKyAgIDxzZWN0MT48dGl0bGU+Q2lwaGVyIEFsbG9jYXRpb24gVHlwZSBBbmQgTWFza3M8L3RpdGxlPgorICAgIDxwYXJhPgorICAgICBUaGUgZGlmZmVyZW50IGNpcGhlciBoYW5kbGUgYWxsb2NhdGlvbiBmdW5jdGlvbnMgYWxsb3cgdGhlCisgICAgIHNwZWNpZmljYXRpb24gb2YgYSB0eXBlIGFuZCBtYXNrIGZsYWcuIEJvdGggcGFyYW1ldGVycyBoYXZlCisgICAgIHRoZSBmb2xsb3dpbmcgbWVhbmluZyAoYW5kIGFyZSB0aGVyZWZvcmUgbm90IGNvdmVyZWQgaW4gdGhlCisgICAgIHN1YnNlcXVlbnQgc2VjdGlvbnMpLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBUaGUgdHlwZSBmbGFnIHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgY2lwaGVyIGFsZ29yaXRobS4KKyAgICAgVGhlIGNhbGxlciB1c3VhbGx5IHByb3ZpZGVzIGEgMCB3aGVuIHRoZSBjYWxsZXIgd2FudHMgdGhlCisgICAgIGRlZmF1bHQgaGFuZGxpbmcuIE90aGVyd2lzZSwgdGhlIGNhbGxlciBtYXkgcHJvdmlkZSB0aGUKKyAgICAgZm9sbG93aW5nIHNlbGVjdGlvbnMgd2hpY2ggbWF0Y2ggdGhlIHRoZSBhZm9yZW1lbnRpb25lZAorICAgICBjaXBoZXIgdHlwZXM6CisgICAgPC9wYXJhPgorCisgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+Q1JZUFRPX0FMR19UWVBFX0NJUEhFUiBTaW5nbGUgYmxvY2sgY2lwaGVyPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT5DUllQVE9fQUxHX1RZUEVfQ09NUFJFU1MgQ29tcHJlc3Npb248L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+Q1JZUFRPX0FMR19UWVBFX0FFQUQgQXV0aGVudGljYXRlZCBFbmNyeXB0aW9uIHdpdGgKKyAgICAgIEFzc29jaWF0ZWQgRGF0YSAoTUFDKTwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+Q1JZUFRPX0FMR19UWVBFX0JMS0NJUEhFUiBTeW5jaHJvbm91cyBtdWx0aS1ibG9jayBjaXBoZXI8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPkNSWVBUT19BTEdfVFlQRV9BQkxLQ0lQSEVSIEFzeW5jaHJvbm91cyBtdWx0aS1ibG9jayBjaXBoZXI8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPkNSWVBUT19BTEdfVFlQRV9HSVZDSVBIRVIgQXN5bmNocm9ub3VzIG11bHRpLWJsb2NrCisgICAgICAgY2lwaGVyIHBhY2tlZCB0b2dldGhlciB3aXRoIGFuIElWIGdlbmVyYXRvciAoc2VlIGdlbml2IGZpZWxkCisgICAgICAgaW4gdGhlIC9wcm9jL2NyeXB0byBsaXN0aW5nIGZvciB0aGUga25vd24gSVYgZ2VuZXJhdG9ycyk8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPkNSWVBUT19BTEdfVFlQRV9ESUdFU1QgUmF3IG1lc3NhZ2UgZGlnZXN0PC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT5DUllQVE9fQUxHX1RZUEVfSEFTSCBBbGlhcyBmb3IgQ1JZUFRPX0FMR19UWVBFX0RJR0VTVDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+Q1JZUFRPX0FMR19UWVBFX1NIQVNIIFN5bmNocm9ub3VzIG11bHRpLWJsb2NrIGhhc2g8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPkNSWVBUT19BTEdfVFlQRV9BSEFTSCBBc3luY2hyb25vdXMgbXVsdGktYmxvY2sgaGFzaDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+Q1JZUFRPX0FMR19UWVBFX1JORyBSYW5kb20gTnVtYmVyIEdlbmVyYXRpb248L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPkNSWVBUT19BTEdfVFlQRV9QQ09NUFJFU1MgRW5oYW5jZWQgdmVyc2lvbiBvZgorICAgICAgIENSWVBUT19BTEdfVFlQRV9DT01QUkVTUyBhbGxvd2luZyBmb3Igc2VnbWVudGVkIGNvbXByZXNzaW9uIC8KKyAgICAgICBkZWNvbXByZXNzaW9uIGluc3RlYWQgb2YgcGVyZm9ybWluZyB0aGUgb3BlcmF0aW9uIG9uIG9uZQorICAgICAgIHNlZ21lbnQgb25seS4gQ1JZUFRPX0FMR19UWVBFX1BDT01QUkVTUyBpcyBpbnRlbmRlZCB0byByZXBsYWNlCisgICAgICAgQ1JZUFRPX0FMR19UWVBFX0NPTVBSRVNTIG9uY2UgZXhpc3RpbmcgY29uc3VtZXJzIGFyZSBjb252ZXJ0ZWQuPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvaXRlbWl6ZWRsaXN0PgorCisgICAgPHBhcmE+CisgICAgIFRoZSBtYXNrIGZsYWcgcmVzdHJpY3RzIHRoZSB0eXBlIG9mIGNpcGhlci4gVGhlIG9ubHkgYWxsb3dlZAorICAgICBmbGFnIGlzIENSWVBUT19BTEdfQVNZTkMgdG8gcmVzdHJpY3QgdGhlIGNpcGhlciBsb29rdXAgZnVuY3Rpb24KKyAgICAgdG8gYXN5bmNocm9ub3VzIGNpcGhlcnMuIFVzdWFsbHksIGEgY2FsbGVyIHByb3ZpZGVzIGEgMCBmb3IgdGhlCisgICAgIG1hc2sgZmxhZy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgV2hlbiB0aGUgY2FsbGVyIHByb3ZpZGVzIGEgbWFzayBhbmQgdHlwZSBzcGVjaWZpY2F0aW9uLCB0aGUKKyAgICAgY2FsbGVyIGxpbWl0cyB0aGUgc2VhcmNoIHRoZSBrZXJuZWwgY3J5cHRvIEFQSSBjYW4gcGVyZm9ybSBmb3IKKyAgICAgYSBzdWl0YWJsZSBjaXBoZXIgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBnaXZlbiBjaXBoZXIgbmFtZS4KKyAgICAgVGhhdCBtZWFucywgZXZlbiB3aGVuIGEgY2FsbGVyIHVzZXMgYSBjaXBoZXIgbmFtZSB0aGF0IGV4aXN0cworICAgICBkdXJpbmcgaXRzIGluaXRpYWxpemF0aW9uIGNhbGwsIHRoZSBrZXJuZWwgY3J5cHRvIEFQSSBtYXkgbm90CisgICAgIHNlbGVjdCBpdCBkdWUgdG8gdGhlIHVzZWQgdHlwZSBhbmQgbWFzayBmaWVsZC4KKyAgICA8L3BhcmE+CisgICA8L3NlY3QxPgorCisgICA8c2VjdDE+PHRpdGxlPkludGVybmFsIFN0cnVjdHVyZSBvZiBLZXJuZWwgQ3J5cHRvIEFQSTwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIGtlcm5lbCBjcnlwdG8gQVBJIGhhcyBhbiBpbnRlcm5hbCBzdHJ1Y3R1cmUgd2hlcmUgYSBjaXBoZXIKKyAgICAgaW1wbGVtZW50YXRpb24gbWF5IHVzZSBtYW55IGxheWVycyBhbmQgaW5kaXJlY3Rpb25zLiBUaGlzIHNlY3Rpb24KKyAgICAgc2hhbGwgaGVscCB0byBjbGFyaWZ5IGhvdyB0aGUga2VybmVsIGNyeXB0byBBUEkgdXNlcworICAgICB2YXJpb3VzIGNvbXBvbmVudHMgdG8gaW1wbGVtZW50IHRoZSBjb21wbGV0ZSBjaXBoZXIuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFRoZSBmb2xsb3dpbmcgc3Vic2VjdGlvbnMgZXhwbGFpbiB0aGUgaW50ZXJuYWwgc3RydWN0dXJlIGJhc2VkCisgICAgIG9uIGV4aXN0aW5nIGNpcGhlciBpbXBsZW1lbnRhdGlvbnMuIFRoZSBmaXJzdCBzZWN0aW9uIGFkZHJlc3NlcworICAgICB0aGUgbW9zdCBjb21wbGV4IHNjZW5hcmlvIHdoZXJlIGFsbCBvdGhlciBzY2VuYXJpb3MgZm9ybSBhIGxvZ2ljYWwKKyAgICAgc3Vic2V0LgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0Mj48dGl0bGU+R2VuZXJpYyBBRUFEIENpcGhlciBTdHJ1Y3R1cmU8L3RpdGxlPgorCisgICAgIDxwYXJhPgorICAgICAgVGhlIGZvbGxvd2luZyBBU0NJSSBhcnQgZGVjb21wb3NlcyB0aGUga2VybmVsIGNyeXB0byBBUEkgbGF5ZXJzCisgICAgICB3aGVuIHVzaW5nIHRoZSBBRUFEIGNpcGhlciB3aXRoIHRoZSBhdXRvbWF0ZWQgSVYgZ2VuZXJhdGlvbi4gVGhlCisgICAgICBzaG93biBleGFtcGxlIGlzIHVzZWQgYnkgdGhlIElQU0VDIGxheWVyLgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBGb3Igb3RoZXIgdXNlIGNhc2VzIG9mIEFFQUQgY2lwaGVycywgdGhlIEFTQ0lJIGFydCBhcHBsaWVzIGFzCisgICAgICB3ZWxsLCBidXQgdGhlIGNhbGxlciBtYXkgbm90IHVzZSB0aGUgQUVBRCBjaXBoZXIgd2l0aCBhIHNlcGFyYXRlCisgICAgICBJViBnZW5lcmF0b3IuIEluIHRoaXMgY2FzZSwgdGhlIGNhbGxlciBtdXN0IGdlbmVyYXRlIHRoZSBJVi4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgVGhlIGRlcGljdGVkIGV4YW1wbGUgZGVjb21wb3NlcyB0aGUgQUVBRCBjaXBoZXIgb2YgR0NNKEFFUykgYmFzZWQKKyAgICAgIG9uIHRoZSBnZW5lcmljIEMgaW1wbGVtZW50YXRpb25zIChnY20uYywgYWVzLWdlbmVyaWMuYywgY3RyLmMsCisgICAgICBnaGFzaC1nZW5lcmljLmMsIHNlcWl2LmMpLiBUaGUgZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbiBzZXJ2ZXMgYXMgYW4KKyAgICAgIGV4YW1wbGUgc2hvd2luZyB0aGUgY29tcGxldGUgbG9naWMgb2YgdGhlIGtlcm5lbCBjcnlwdG8gQVBJLgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBJdCBpcyBwb3NzaWJsZSB0aGF0IHNvbWUgc3RyZWFtbGluZWQgY2lwaGVyIGltcGxlbWVudGF0aW9ucyAobGlrZQorICAgICAgQUVTLU5JKSBwcm92aWRlIGltcGxlbWVudGF0aW9ucyBtZXJnaW5nIGFzcGVjdHMgd2hpY2ggaW4gdGhlIHZpZXcKKyAgICAgIG9mIHRoZSBrZXJuZWwgY3J5cHRvIEFQSSBjYW5ub3QgYmUgZGVjb21wb3NlZCBpbnRvIGxheWVycyBhbnkgbW9yZS4KKyAgICAgIEluIGNhc2Ugb2YgdGhlIEFFUy1OSSBpbXBsZW1lbnRhdGlvbiwgdGhlIENUUiBtb2RlLCB0aGUgR0hBU0gKKyAgICAgIGltcGxlbWVudGF0aW9uIGFuZCB0aGUgQUVTIGNpcGhlciBhcmUgYWxsIG1lcmdlZCBpbnRvIG9uZSBjaXBoZXIKKyAgICAgIGltcGxlbWVudGF0aW9uIHJlZ2lzdGVyZWQgd2l0aCB0aGUga2VybmVsIGNyeXB0byBBUEkuIEluIHRoaXMgY2FzZSwKKyAgICAgIHRoZSBjb25jZXB0IGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIEFTQ0lJIGFydCBhcHBsaWVzIHRvby4gSG93ZXZlciwKKyAgICAgIHRoZSBkZWNvbXBvc2l0aW9uIG9mIEdDTSBpbnRvIHRoZSBpbmRpdmlkdWFsIHN1Yi1jb21wb25lbnRzCisgICAgICBieSB0aGUga2VybmVsIGNyeXB0byBBUEkgaXMgbm90IGRvbmUgYW55IG1vcmUuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIEVhY2ggYmxvY2sgaW4gdGhlIGZvbGxvd2luZyBBU0NJSSBhcnQgaXMgYW4gaW5kZXBlbmRlbnQgY2lwaGVyCisgICAgICBpbnN0YW5jZSBvYnRhaW5lZCBmcm9tIHRoZSBrZXJuZWwgY3J5cHRvIEFQSS4gRWFjaCBibG9jaworICAgICAgaXMgYWNjZXNzZWQgYnkgdGhlIGNhbGxlciBvciBieSBvdGhlciBibG9ja3MgdXNpbmcgdGhlIEFQSSBmdW5jdGlvbnMKKyAgICAgIGRlZmluZWQgYnkgdGhlIGtlcm5lbCBjcnlwdG8gQVBJIGZvciB0aGUgY2lwaGVyIGltcGxlbWVudGF0aW9uIHR5cGUuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIFRoZSBibG9ja3MgYmVsb3cgaW5kaWNhdGUgdGhlIGNpcGhlciB0eXBlIGFzIHdlbGwgYXMgdGhlIHNwZWNpZmljCisgICAgICBsb2dpYyBpbXBsZW1lbnRlZCBpbiB0aGUgY2lwaGVyLgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBUaGUgQVNDSUkgYXJ0IHBpY3R1cmUgYWxzbyBpbmRpY2F0ZXMgdGhlIGNhbGwgc3RydWN0dXJlLCBpLmUuIHdobworICAgICAgY2FsbHMgd2hpY2ggY29tcG9uZW50LiBUaGUgYXJyb3dzIHBvaW50IHRvIHRoZSBpbnZva2VkIGJsb2NrCisgICAgICB3aGVyZSB0aGUgY2FsbGVyIHVzZXMgdGhlIEFQSSBhcHBsaWNhYmxlIHRvIHRoZSBjaXBoZXIgdHlwZQorICAgICAgc3BlY2lmaWVkIGZvciB0aGUgYmxvY2suCisgICAgIDwvcGFyYT4KKworICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKK2tlcm5lbCBjcnlwdG8gQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgSVBTRUMgTGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgfCAgICAgICAgICAgICgxKQorfCAgIGFlYWQgICAgfCA8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIGVzcF9vdXRwdXQKK3wgIChzZXFpdikgIHwgLS0tKworKy0tLS0tLS0tLS0tKyAgICB8CisgICAgICAgICAgICAgICAgIHwgKDIpCisrLS0tLS0tLS0tLS0rICAgIHwKK3wgICAgICAgICAgIHwgPC0tKyAgICAgICAgICAgICAgICAoMikKK3wgICBhZWFkICAgIHwgPC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICBlc3BfaW5wdXQKK3wgICAoZ2NtKSAgIHwgLS0tLS0tLS0tLS0tKworKy0tLS0tLS0tLS0tKyAgICAgICAgICAgICB8CisgICAgICB8ICgzKSAgICAgICAgICAgICAgIHwgKDUpCisgICAgICB2ICAgICAgICAgICAgICAgICAgIHYKKystLS0tLS0tLS0tLSsgICAgICAgKy0tLS0tLS0tLS0tKworfCAgICAgICAgICAgfCAgICAgICB8ICAgICAgICAgICB8Cit8IGFibGtjaXBoZXJ8ICAgICAgIHwgICBhaGFzaCAgIHwKK3wgICAoY3RyKSAgIHwgLS0tKyAgfCAgKGdoYXNoKSAgfAorKy0tLS0tLS0tLS0tKyAgICB8ICArLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLSsgICAgfCAoNCkKK3wgICAgICAgICAgIHwgPC0tKworfCAgIGNpcGhlciAgfAorfCAgIChhZXMpICAgfAorKy0tLS0tLS0tLS0tKworXV0+CisgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgICAgPHBhcmE+CisgICAgICBUaGUgZm9sbG93aW5nIGNhbGwgc2VxdWVuY2UgaXMgYXBwbGljYWJsZSB3aGVuIHRoZSBJUFNFQyBsYXllcgorICAgICAgdHJpZ2dlcnMgYW4gZW5jcnlwdGlvbiBvcGVyYXRpb24gd2l0aCB0aGUgZXNwX291dHB1dCBmdW5jdGlvbi4gRHVyaW5nCisgICAgICBjb25maWd1cmF0aW9uLCB0aGUgYWRtaW5pc3RyYXRvciBzZXQgdXAgdGhlIHVzZSBvZiByZmM0MTA2KGdjbShhZXMpKSBhcworICAgICAgdGhlIGNpcGhlciBmb3IgRVNQLiBUaGUgZm9sbG93aW5nIGNhbGwgc2VxdWVuY2UgaXMgbm93IGRlcGljdGVkIGluIHRoZQorICAgICAgQVNDSUkgYXJ0IGFib3ZlOgorICAgICA8L3BhcmE+CisKKyAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBlc3Bfb3V0cHV0KCkgaW52b2tlcyBjcnlwdG9fYWVhZF9lbmNyeXB0KCkgdG8gdHJpZ2dlciBhbiBlbmNyeXB0aW9uCisgICAgICAgIG9wZXJhdGlvbiBvZiB0aGUgQUVBRCBjaXBoZXIgd2l0aCBJViBnZW5lcmF0b3IuCisgICAgICAgPC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAgIEluIGNhc2Ugb2YgR0NNLCB0aGUgU0VRSVYgaW1wbGVtZW50YXRpb24gaXMgcmVnaXN0ZXJlZCBhcyBHSVZDSVBIRVIKKyAgICAgICAgaW4gY3J5cHRvX3JmYzQxMDZfYWxsb2MoKS4KKyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIFNFUUlWIHBlcmZvcm1zIGl0cyBvcGVyYXRpb24gdG8gZ2VuZXJhdGUgYW4gSVYgd2hlcmUgdGhlIGNvcmUKKyAgICAgICAgZnVuY3Rpb24gaXMgc2VxaXZfZ2VuaXYoKS4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorCisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIE5vdywgU0VRSVYgdXNlcyB0aGUgQUVBRCBBUEkgZnVuY3Rpb24gY2FsbHMgdG8gaW52b2tlIHRoZSBhc3NvY2lhdGVkCisgICAgICAgIEFFQUQgY2lwaGVyLiBJbiBvdXIgY2FzZSwgZHVyaW5nIHRoZSBpbnN0YW50aWF0aW9uIG9mIFNFUUlWLCB0aGUKKyAgICAgICAgY2lwaGVyIGhhbmRsZSBmb3IgR0NNIGlzIHByb3ZpZGVkIHRvIFNFUUlWLiBUaGlzIG1lYW5zIHRoYXQgU0VRSVYKKyAgICAgICAgaW52b2tlcyBBRUFEIGNpcGhlciBvcGVyYXRpb25zIHdpdGggdGhlIEdDTSBjaXBoZXIgaGFuZGxlLgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBEdXJpbmcgaW5zdGFudGlhdGlvbiBvZiB0aGUgR0NNIGhhbmRsZSwgdGhlIENUUihBRVMpIGFuZCBHSEFTSAorICAgICAgICBjaXBoZXJzIGFyZSBpbnN0YW50aWF0ZWQuIFRoZSBjaXBoZXIgaGFuZGxlcyBmb3IgQ1RSKEFFUykgYW5kIEdIQVNICisgICAgICAgIGFyZSByZXRhaW5lZCBmb3IgbGF0ZXIgdXNlLgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgR0NNIGltcGxlbWVudGF0aW9uIGlzIHJlc3BvbnNpYmxlIHRvIGludm9rZSB0aGUgQ1RSIG1vZGUgQUVTIGFuZAorICAgICAgICB0aGUgR0hBU0ggY2lwaGVyIGluIHRoZSByaWdodCBtYW5uZXIgdG8gaW1wbGVtZW50IHRoZSBHQ00KKyAgICAgICAgc3BlY2lmaWNhdGlvbi4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorCisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBHQ00gQUVBRCBjaXBoZXIgdHlwZSBpbXBsZW1lbnRhdGlvbiBub3cgaW52b2tlcyB0aGUgQUJMS0NJUEhFUiBBUEkKKyAgICAgICAgd2l0aCB0aGUgaW5zdGFudGlhdGVkIENUUihBRVMpIGNpcGhlciBoYW5kbGUuCisgICAgICAgPC9wYXJhPgorCisgICAgICAgPHBhcmE+CisJRHVyaW5nIGluc3RhbnRpYXRpb24gb2YgdGhlIENUUihBRVMpIGNpcGhlciwgdGhlIENJUEhFUiB0eXBlCisJaW1wbGVtZW50YXRpb24gb2YgQUVTIGlzIGluc3RhbnRpYXRlZC4gVGhlIGNpcGhlciBoYW5kbGUgZm9yIEFFUyBpcworCXJldGFpbmVkLgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBUaGF0IG1lYW5zIHRoYXQgdGhlIEFCTEtDSVBIRVIgaW1wbGVtZW50YXRpb24gb2YgQ1RSKEFFUykgb25seQorICAgICAgICBpbXBsZW1lbnRzIHRoZSBDVFIgYmxvY2sgY2hhaW5pbmcgbW9kZS4gQWZ0ZXIgcGVyZm9ybWluZyB0aGUgYmxvY2sKKyAgICAgICAgY2hhaW5pbmcgb3BlcmF0aW9uLCB0aGUgQ0lQSEVSIGltcGxlbWVudGF0aW9uIG9mIEFFUyBpcyBpbnZva2VkLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIEFCTEtDSVBIRVIgb2YgQ1RSKEFFUykgbm93IGludm9rZXMgdGhlIENJUEhFUiBBUEkgd2l0aCB0aGUgQUVTCisgICAgICAgIGNpcGhlciBoYW5kbGUgdG8gZW5jcnlwdCBvbmUgYmxvY2suCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKworICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgR0NNIEFFQUQgaW1wbGVtZW50YXRpb24gYWxzbyBpbnZva2VzIHRoZSBHSEFTSCBjaXBoZXIKKyAgICAgICAgaW1wbGVtZW50YXRpb24gdmlhIHRoZSBBSEFTSCBBUEkuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC9vcmRlcmVkbGlzdD4KKworICAgICA8cGFyYT4KKyAgICAgIFdoZW4gdGhlIElQU0VDIGxheWVyIHRyaWdnZXJzIHRoZSBlc3BfaW5wdXQoKSBmdW5jdGlvbiwgdGhlIHNhbWUgY2FsbAorICAgICAgc2VxdWVuY2UgaXMgZm9sbG93ZWQgd2l0aCB0aGUgb25seSBkaWZmZXJlbmNlIHRoYXQgdGhlIG9wZXJhdGlvbiBzdGFydHMKKyAgICAgIHdpdGggc3RlcCAoMikuCisgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QyPgorCisgICAgPHNlY3QyPjx0aXRsZT5HZW5lcmljIEJsb2NrIENpcGhlciBTdHJ1Y3R1cmU8L3RpdGxlPgorICAgICA8cGFyYT4KKyAgICAgIEdlbmVyaWMgYmxvY2sgY2lwaGVycyBmb2xsb3cgdGhlIHNhbWUgY29uY2VwdCBhcyBkZXBpY3RlZCB3aXRoIHRoZSBBU0NJSQorICAgICAgYXJ0IHBpY3R1cmUgYWJvdmUuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIEZvciBleGFtcGxlLCBDQkMoQUVTKSBpcyBpbXBsZW1lbnRlZCB3aXRoIGNiYy5jLCBhbmQgYWVzLWdlbmVyaWMuYy4gVGhlCisgICAgICBBU0NJSSBhcnQgcGljdHVyZSBhYm92ZSBhcHBsaWVzIGFzIHdlbGwgd2l0aCB0aGUgZGlmZmVyZW5jZSB0aGF0IG9ubHkKKyAgICAgIHN0ZXAgKDQpIGlzIHVzZWQgYW5kIHRoZSBBQkxLQ0lQSEVSIGJsb2NrIGNoYWluaW5nIG1vZGUgaXMgQ0JDLgorICAgICA8L3BhcmE+CisgICAgPC9zZWN0Mj4KKworICAgIDxzZWN0Mj48dGl0bGU+R2VuZXJpYyBLZXllZCBNZXNzYWdlIERpZ2VzdCBTdHJ1Y3R1cmU8L3RpdGxlPgorICAgICA8cGFyYT4KKyAgICAgIEtleWVkIG1lc3NhZ2UgZGlnZXN0IGltcGxlbWVudGF0aW9ucyBhZ2FpbiBmb2xsb3cgdGhlIHNhbWUgY29uY2VwdCBhcworICAgICAgZGVwaWN0ZWQgaW4gdGhlIEFTQ0lJIGFydCBwaWN0dXJlIGFib3ZlLgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBGb3IgZXhhbXBsZSwgSE1BQyhTSEEyNTYpIGlzIGltcGxlbWVudGVkIHdpdGggaG1hYy5jIGFuZAorICAgICAgc2hhMjU2X2dlbmVyaWMuYy4gVGhlIGZvbGxvd2luZyBBU0NJSSBhcnQgaWxsdXN0cmF0ZXMgdGhlCisgICAgICBpbXBsZW1lbnRhdGlvbjoKKyAgICAgPC9wYXJhPgorCisgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWwora2VybmVsIGNyeXB0byBBUEkgICAgICAgICAgICB8ICAgICAgIENhbGxlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0rICAgICAgICAgKDEpICAgIHwKK3wgICAgICAgICAgIHwgPC0tLS0tLS0tLS0tLS0tLS0tLSAgc29tZV9mdW5jdGlvbgorfCAgIGFoYXNoICAgfAorfCAgIChobWFjKSAgfCAtLS0rCisrLS0tLS0tLS0tLS0rICAgIHwKKyAgICAgICAgICAgICAgICAgfCAoMikKKystLS0tLS0tLS0tLSsgICAgfAorfCAgICAgICAgICAgfCA8LS0rCit8ICAgc2hhc2ggICB8Cit8ICAoc2hhMjU2KSB8CisrLS0tLS0tLS0tLS0rCitdXT4KKyAgICAgPC9wcm9ncmFtbGlzdGluZz4KKworICAgICA8cGFyYT4KKyAgICAgIFRoZSBmb2xsb3dpbmcgY2FsbCBzZXF1ZW5jZSBpcyBhcHBsaWNhYmxlIHdoZW4gYSBjYWxsZXIgdHJpZ2dlcnMKKyAgICAgIGFuIEhNQUMgb3BlcmF0aW9uOgorICAgICA8L3BhcmE+CisKKyAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgQUhBU0ggQVBJIGZ1bmN0aW9ucyBhcmUgaW52b2tlZCBieSB0aGUgY2FsbGVyLiBUaGUgSE1BQworICAgICAgICBpbXBsZW1lbnRhdGlvbiBwZXJmb3JtcyBpdHMgb3BlcmF0aW9uIGFzIG5lZWRlZC4KKyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgRHVyaW5nIGluaXRpYWxpemF0aW9uIG9mIHRoZSBITUFDIGNpcGhlciwgdGhlIFNIQVNIIGNpcGhlciB0eXBlIG9mCisgICAgICAgIFNIQTI1NiBpcyBpbnN0YW50aWF0ZWQuIFRoZSBjaXBoZXIgaGFuZGxlIGZvciB0aGUgU0hBMjU2IGluc3RhbmNlIGlzCisgICAgICAgIHJldGFpbmVkLgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBBdCBvbmUgdGltZSwgdGhlIEhNQUMgaW1wbGVtZW50YXRpb24gcmVxdWlyZXMgYSBTSEEyNTYgb3BlcmF0aW9uCisgICAgICAgIHdoZXJlIHRoZSBTSEEyNTYgY2lwaGVyIGhhbmRsZSBpcyB1c2VkLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIEhNQUMgaW5zdGFuY2Ugbm93IGludm9rZXMgdGhlIFNIQVNIIEFQSSB3aXRoIHRoZSBTSEEyNTYKKyAgICAgICAgY2lwaGVyIGhhbmRsZSB0byBjYWxjdWxhdGUgdGhlIG1lc3NhZ2UgZGlnZXN0LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9zZWN0Mj4KKyAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iRGV2ZWxvcG1lbnQiPjx0aXRsZT5EZXZlbG9waW5nIENpcGhlciBBbGdvcml0aG1zPC90aXRsZT4KKyAgIDxzZWN0MT48dGl0bGU+UmVnaXN0ZXJpbmcgQW5kIFVucmVnaXN0ZXJpbmcgVHJhbnNmb3JtYXRpb248L3RpdGxlPgorICAgIDxwYXJhPgorICAgICBUaGVyZSBhcmUgdGhyZWUgZGlzdGluY3QgdHlwZXMgb2YgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBpbgorICAgICB0aGUgQ3J5cHRvIEFQSS4gT25lIGlzIHVzZWQgdG8gcmVnaXN0ZXIgYSBnZW5lcmljIGNyeXB0b2dyYXBoaWMKKyAgICAgdHJhbnNmb3JtYXRpb24sIHdoaWxlIHRoZSBvdGhlciB0d28gYXJlIHNwZWNpZmljIHRvIEhBU0gKKyAgICAgdHJhbnNmb3JtYXRpb25zIGFuZCBDT01QUkVTU2lvbi4gV2Ugd2lsbCBkaXNjdXNzIHRoZSBsYXR0ZXIKKyAgICAgdHdvIGluIGEgc2VwYXJhdGUgY2hhcHRlciwgaGVyZSB3ZSB3aWxsIG9ubHkgbG9vayBhdCB0aGUKKyAgICAgZ2VuZXJpYyBvbmVzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBCZWZvcmUgZGlzY3Vzc2luZyB0aGUgcmVnaXN0ZXIgZnVuY3Rpb25zLCB0aGUgZGF0YSBzdHJ1Y3R1cmUKKyAgICAgdG8gYmUgZmlsbGVkIHdpdGggZWFjaCwgc3RydWN0IGNyeXB0b19hbGcsIG11c3QgYmUgY29uc2lkZXJlZAorICAgICAtLSBzZWUgYmVsb3cgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhpcyBkYXRhIHN0cnVjdHVyZS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIGdlbmVyaWMgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBjYW4gYmUgZm91bmQgaW4KKyAgICAgaW5jbHVkZS9saW51eC9jcnlwdG8uaCBhbmQgdGhlaXIgZGVmaW5pdGlvbiBjYW4gYmUgc2VlbiBiZWxvdy4KKyAgICAgVGhlIGZvcm1lciBmdW5jdGlvbiByZWdpc3RlcnMgYSBzaW5nbGUgdHJhbnNmb3JtYXRpb24sIHdoaWxlCisgICAgIHRoZSBsYXR0ZXIgd29ya3Mgb24gYW4gYXJyYXkgb2YgdHJhbnNmb3JtYXRpb24gZGVzY3JpcHRpb25zLgorICAgICBUaGUgbGF0dGVyIGlzIHVzZWZ1bCB3aGVuIHJlZ2lzdGVyaW5nIHRyYW5zZm9ybWF0aW9ucyBpbiBidWxrLgorICAgIDwvcGFyYT4KKworICAgIDxwcm9ncmFtbGlzdGluZz4KKyAgIGludCBjcnlwdG9fcmVnaXN0ZXJfYWxnKHN0cnVjdCBjcnlwdG9fYWxnICphbGcpOworICAgaW50IGNyeXB0b19yZWdpc3Rlcl9hbGdzKHN0cnVjdCBjcnlwdG9fYWxnICphbGdzLCBpbnQgY291bnQpOworICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIGNvdW50ZXJwYXJ0cyB0byB0aG9zZSBmdW5jdGlvbnMgYXJlIGxpc3RlZCBiZWxvdy4KKyAgICA8L3BhcmE+CisKKyAgICA8cHJvZ3JhbWxpc3Rpbmc+CisgICBpbnQgY3J5cHRvX3VucmVnaXN0ZXJfYWxnKHN0cnVjdCBjcnlwdG9fYWxnICphbGcpOworICAgaW50IGNyeXB0b191bnJlZ2lzdGVyX2FsZ3Moc3RydWN0IGNyeXB0b19hbGcgKmFsZ3MsIGludCBjb3VudCk7CisgICAgPC9wcm9ncmFtbGlzdGluZz4KKworICAgIDxwYXJhPgorICAgICBOb3RpY2UgdGhhdCBib3RoIHJlZ2lzdHJhdGlvbiBhbmQgdW5yZWdpc3RyYXRpb24gZnVuY3Rpb25zCisgICAgIGRvIHJldHVybiBhIHZhbHVlLCBzbyBtYWtlIHN1cmUgdG8gaGFuZGxlIGVycm9ycy4gQSByZXR1cm4KKyAgICAgY29kZSBvZiB6ZXJvIGltcGxpZXMgc3VjY2Vzcy4gQW55IHJldHVybiBjb2RlICZsdDsgMCBpbXBsaWVzCisgICAgIGFuIGVycm9yLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBUaGUgYnVsayByZWdpc3RyYXRpb24gLyB1bnJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgcmVxdWlyZQorICAgICB0aGF0IHN0cnVjdCBjcnlwdG9fYWxnIGlzIGFuIGFycmF5IG9mIGNvdW50IHNpemUuIFRoZXNlCisgICAgIGZ1bmN0aW9ucyBzaW1wbHkgbG9vcCBvdmVyIHRoYXQgYXJyYXkgYW5kIHJlZ2lzdGVyIC8KKyAgICAgdW5yZWdpc3RlciBlYWNoIGluZGl2aWR1YWwgYWxnb3JpdGhtLiBJZiBhbiBlcnJvciBvY2N1cnMsCisgICAgIHRoZSBsb29wIGlzIHRlcm1pbmF0ZWQgYXQgdGhlIG9mZmVuZGluZyBhbGdvcml0aG0gZGVmaW5pdGlvbi4KKyAgICAgVGhhdCBtZWFucywgdGhlIGFsZ29yaXRobXMgcHJpb3IgdG8gdGhlIG9mZmVuZGluZyBhbGdvcml0aG0KKyAgICAgYXJlIHN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkLiBOb3RlLCB0aGUgY2FsbGVyIGhhcyBubyB3YXkgb2YKKyAgICAga25vd2luZyB3aGljaCBjaXBoZXIgaW1wbGVtZW50YXRpb25zIGhhdmUgc3VjY2Vzc2Z1bGx5CisgICAgIHJlZ2lzdGVyZWQuIElmIHRoaXMgaXMgaW1wb3J0YW50IHRvIGtub3csIHRoZSBjYWxsZXIgc2hvdWxkCisgICAgIGxvb3AgdGhyb3VnaCB0aGUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyB1c2luZyB0aGUgc2luZ2xlCisgICAgIGluc3RhbmNlICpfYWxnIGZ1bmN0aW9ucyBmb3IgZWFjaCBpbmRpdmlkdWFsIGltcGxlbWVudGF0aW9uLgorICAgIDwvcGFyYT4KKyAgIDwvc2VjdDE+CisKKyAgIDxzZWN0MT48dGl0bGU+U2luZ2xlLUJsb2NrIFN5bW1ldHJpYyBDaXBoZXJzIFtDSVBIRVJdPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgRXhhbXBsZSBvZiB0cmFuc2Zvcm1hdGlvbnM6IGFlcywgYXJjNCwgLi4uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhlIHNpbXBsZXN0IG9mIGFsbCB0cmFuc2Zvcm1hdGlvbgorICAgICBpbXBsZW1lbnRhdGlvbnMsIHRoYXQgYmVpbmcgdGhlIENJUEhFUiB0eXBlIHVzZWQgZm9yIHN5bW1ldHJpYworICAgICBjaXBoZXJzLiBUaGUgQ0lQSEVSIHR5cGUgaXMgdXNlZCBmb3IgdHJhbnNmb3JtYXRpb25zIHdoaWNoCisgICAgIG9wZXJhdGUgb24gZXhhY3RseSBvbmUgYmxvY2sgYXQgYSB0aW1lIGFuZCB0aGVyZSBhcmUgbm8KKyAgICAgZGVwZW5kZW5jaWVzIGJldHdlZW4gYmxvY2tzIGF0IGFsbC4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdDI+PHRpdGxlPlJlZ2lzdHJhdGlvbiBzcGVjaWZpY3M8L3RpdGxlPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSByZWdpc3RyYXRpb24gb2YgW0NJUEhFUl0gYWxnb3JpdGhtIGlzIHNwZWNpZmljIGluIHRoYXQKKyAgICAgIHN0cnVjdCBjcnlwdG9fYWxnIGZpZWxkIC5jcmFfdHlwZSBpcyBlbXB0eS4gVGhlIC5jcmFfdS5jaXBoZXIKKyAgICAgIGhhcyB0byBiZSBmaWxsZWQgaW4gd2l0aCBwcm9wZXIgY2FsbGJhY2tzIHRvIGltcGxlbWVudCB0aGlzCisgICAgICB0cmFuc2Zvcm1hdGlvbi4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgU2VlIHN0cnVjdCBjaXBoZXJfYWxnIGJlbG93LgorICAgICA8L3BhcmE+CisgICAgPC9zZWN0Mj4KKworICAgIDxzZWN0Mj48dGl0bGU+Q2lwaGVyIERlZmluaXRpb24gV2l0aCBzdHJ1Y3QgY2lwaGVyX2FsZzwvdGl0bGU+CisgICAgIDxwYXJhPgorICAgICAgU3RydWN0IGNpcGhlcl9hbGcgZGVmaW5lcyBhIHNpbmdsZSBibG9jayBjaXBoZXIuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIEhlcmUgYXJlIHNjaGVtYXRpY3Mgb2YgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIHdoZW4KKyAgICAgIG9wZXJhdGVkIGZyb20gb3RoZXIgcGFydCBvZiB0aGUga2VybmVsLiBOb3RlIHRoYXQgdGhlCisgICAgICAuY2lhX3NldGtleSgpIGNhbGwgbWlnaHQgaGFwcGVuIGJlZm9yZSBvciBhZnRlciBhbnkgb2YgdGhlc2UKKyAgICAgIHNjaGVtYXRpY3MgaGFwcGVuLCBidXQgbXVzdCBub3QgaGFwcGVuIGR1cmluZyBhbnkgb2YgdGhlc2UKKyAgICAgIGFyZSBpbi1mbGlnaHQuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIDxwcm9ncmFtbGlzdGluZz4KKyAgICAgICAgIEtFWSAtLS0uICAgIFBMQUlOVEVYVCAtLS0uCisgICAgICAgICAgICAgICAgdiAgICAgICAgICAgICAgICAgdgorICAgICAgICAgIC5jaWFfc2V0a2V5KCkgLSZndDsgLmNpYV9lbmNyeXB0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tLS0tJmd0OyBDSVBIRVJURVhUCisgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBQbGVhc2Ugbm90ZSB0aGF0IGEgcGF0dGVybiB3aGVyZSAuY2lhX3NldGtleSgpIGlzIGNhbGxlZAorICAgICAgbXVsdGlwbGUgdGltZXMgaXMgYWxzbyB2YWxpZDoKKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgPHByb2dyYW1saXN0aW5nPgorCisgIEtFWTEgLS0uICAgIFBMQUlOVEVYVDEgLS0uICAgICAgICAgS0VZMiAtLS4gICAgUExBSU5URVhUMiAtLS4KKyAgICAgICAgIHYgICAgICAgICAgICAgICAgIHYgICAgICAgICAgICAgICAgdiAgICAgICAgICAgICAgICAgdgorICAgLmNpYV9zZXRrZXkoKSAtJmd0OyAuY2lhX2VuY3J5cHQoKSAtJmd0OyAuY2lhX3NldGtleSgpIC0mZ3Q7IC5jaWFfZW5jcnlwdCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICctLS0mZ3Q7IENJUEhFUlRFWFQxICAgICAgICAgICAgICAgICAgJy0tLSZndDsgQ0lQSEVSVEVYVDIKKyAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgIDwvcGFyYT4KKworICAgIDwvc2VjdDI+CisgICA8L3NlY3QxPgorCisgICA8c2VjdDE+PHRpdGxlPk11bHRpLUJsb2NrIENpcGhlcnMgW0JMS0NJUEhFUl0gW0FCTEtDSVBIRVJdPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgRXhhbXBsZSBvZiB0cmFuc2Zvcm1hdGlvbnM6IGNiYyhhZXMpLCBlY2IoYXJjNCksIC4uLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHRoZSBtdWx0aS1ibG9jayBjaXBoZXIgdHJhbnNmb3JtYXRpb24KKyAgICAgaW1wbGVtZW50YXRpb25zIGZvciBib3RoIHN5bmNocm9ub3VzIFtCTEtDSVBIRVJdIGFuZAorICAgICBhc3luY2hyb25vdXMgW0FCTEtDSVBIRVJdIGNhc2UuIFRoZSBtdWx0aS1ibG9jayBjaXBoZXJzIGFyZQorICAgICB1c2VkIGZvciB0cmFuc2Zvcm1hdGlvbnMgd2hpY2ggb3BlcmF0ZSBvbiBzY2F0dGVybGlzdHMgb2YKKyAgICAgZGF0YSBzdXBwbGllZCB0byB0aGUgdHJhbnNmb3JtYXRpb24gZnVuY3Rpb25zLiBUaGV5IG91dHB1dAorICAgICB0aGUgcmVzdWx0IGludG8gYSBzY2F0dGVybGlzdCBvZiBkYXRhIGFzIHdlbGwuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3QyPjx0aXRsZT5SZWdpc3RyYXRpb24gU3BlY2lmaWNzPC90aXRsZT4KKworICAgICA8cGFyYT4KKyAgICAgIFRoZSByZWdpc3RyYXRpb24gb2YgW0JMS0NJUEhFUl0gb3IgW0FCTEtDSVBIRVJdIGFsZ29yaXRobXMKKyAgICAgIGlzIG9uZSBvZiB0aGUgbW9zdCBzdGFuZGFyZCBwcm9jZWR1cmVzIHRocm91Z2hvdXQgdGhlIGNyeXB0byBBUEkuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIE5vdGUsIGlmIGEgY2lwaGVyIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIGEgcHJvcGVyIGFsaWdubWVudAorICAgICAgb2YgZGF0YSwgdGhlIGNhbGxlciBzaG91bGQgdXNlIHRoZSBmdW5jdGlvbnMgb2YKKyAgICAgIGNyeXB0b19ibGtjaXBoZXJfYWxpZ25tYXNrKCkgb3IgY3J5cHRvX2FibGtjaXBoZXJfYWxpZ25tYXNrKCkKKyAgICAgIHJlc3BlY3RpdmVseSB0byBpZGVudGlmeSBhIG1lbW9yeSBhbGlnbm1lbnQgbWFzay4gVGhlIGtlcm5lbAorICAgICAgY3J5cHRvIEFQSSBpcyBhYmxlIHRvIHByb2Nlc3MgcmVxdWVzdHMgdGhhdCBhcmUgdW5hbGlnbmVkLgorICAgICAgVGhpcyBpbXBsaWVzLCBob3dldmVyLCBhZGRpdGlvbmFsIG92ZXJoZWFkIGFzIHRoZSBrZXJuZWwKKyAgICAgIGNyeXB0byBBUEkgbmVlZHMgdG8gcGVyZm9ybSB0aGUgcmVhbGlnbm1lbnQgb2YgdGhlIGRhdGEgd2hpY2gKKyAgICAgIG1heSBpbXBseSBtb3Zpbmcgb2YgZGF0YS4KKyAgICAgPC9wYXJhPgorICAgIDwvc2VjdDI+CisKKyAgICA8c2VjdDI+PHRpdGxlPkNpcGhlciBEZWZpbml0aW9uIFdpdGggc3RydWN0IGJsa2NpcGhlcl9hbGcgYW5kIGFibGtjaXBoZXJfYWxnPC90aXRsZT4KKyAgICAgPHBhcmE+CisgICAgICBTdHJ1Y3QgYmxrY2lwaGVyX2FsZyBkZWZpbmVzIGEgc3luY2hyb25vdXMgYmxvY2sgY2lwaGVyIHdoZXJlYXMKKyAgICAgIHN0cnVjdCBhYmxrY2lwaGVyX2FsZyBkZWZpbmVzIGFuIGFzeW5jaHJvbm91cyBibG9jayBjaXBoZXIuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIFBsZWFzZSByZWZlciB0byB0aGUgc2luZ2xlIGJsb2NrIGNpcGhlciBkZXNjcmlwdGlvbiBmb3Igc2NoZW1hdGljcworICAgICAgb2YgdGhlIGJsb2NrIGNpcGhlciB1c2FnZS4gVGhlIHVzYWdlIHBhdHRlcm5zIGFyZSBleGFjdGx5IHRoZSBzYW1lCisgICAgICBmb3IgW0FCTEtDSVBIRVJdIGFuZCBbQkxLQ0lQSEVSXSBhcyB0aGV5IGFyZSBmb3IgcGxhaW4gW0NJUEhFUl0uCisgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QyPgorCisgICAgPHNlY3QyPjx0aXRsZT5TcGVjaWZpY3MgT2YgQXN5bmNocm9ub3VzIE11bHRpLUJsb2NrIENpcGhlcjwvdGl0bGU+CisgICAgIDxwYXJhPgorICAgICAgVGhlcmUgYXJlIGEgY291cGxlIG9mIHNwZWNpZmljcyB0byB0aGUgW0FCTEtDSVBIRVJdIGludGVyZmFjZS4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgRmlyc3Qgb2YgYWxsLCBzb21lIG9mIHRoZSBkcml2ZXJzIHdpbGwgd2FudCB0byB1c2UgdGhlCisgICAgICBHZW5lcmljIFNjYXR0ZXJXYWxrIGluIGNhc2UgdGhlIGhhcmR3YXJlIG5lZWRzIHRvIGJlIGZlZAorICAgICAgc2VwYXJhdGUgY2h1bmtzIG9mIHRoZSBzY2F0dGVybGlzdCB3aGljaCBjb250YWlucyB0aGUKKyAgICAgIHBsYWludGV4dCBhbmQgd2lsbCBjb250YWluIHRoZSBjaXBoZXJ0ZXh0LiBQbGVhc2UgcmVmZXIKKyAgICAgIHRvIHRoZSBTY2F0dGVyV2FsayBpbnRlcmZhY2Ugb2ZmZXJlZCBieSB0aGUgTGludXgga2VybmVsCisgICAgICBzY2F0dGVyIC8gZ2F0aGVyIGxpc3QgaW1wbGVtZW50YXRpb24uCisgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QyPgorICAgPC9zZWN0MT4KKworICAgPHNlY3QxPjx0aXRsZT5IYXNoaW5nIFtIQVNIXTwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgRXhhbXBsZSBvZiB0cmFuc2Zvcm1hdGlvbnM6IGNyYzMyLCBtZDUsIHNoYTEsIHNoYTI1NiwuLi4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdDI+PHRpdGxlPlJlZ2lzdGVyaW5nIEFuZCBVbnJlZ2lzdGVyaW5nIFRoZSBUcmFuc2Zvcm1hdGlvbjwvdGl0bGU+CisKKyAgICAgPHBhcmE+CisgICAgICBUaGVyZSBhcmUgbXVsdGlwbGUgd2F5cyB0byByZWdpc3RlciBhIEhBU0ggdHJhbnNmb3JtYXRpb24sCisgICAgICBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgdHJhbnNmb3JtYXRpb24gaXMgc3luY2hyb25vdXMgW1NIQVNIXQorICAgICAgb3IgYXN5bmNocm9ub3VzIFtBSEFTSF0gYW5kIHRoZSBhbW91bnQgb2YgSEFTSCB0cmFuc2Zvcm1hdGlvbnMKKyAgICAgIHdlIGFyZSByZWdpc3RlcmluZy4gWW91IGNhbiBmaW5kIHRoZSBwcm90b3R5cGVzIGRlZmluZWQgaW4KKyAgICAgIGluY2x1ZGUvY3J5cHRvL2ludGVybmFsL2hhc2guaDoKKyAgICAgPC9wYXJhPgorCisgICAgIDxwcm9ncmFtbGlzdGluZz4KKyAgIGludCBjcnlwdG9fcmVnaXN0ZXJfYWhhc2goc3RydWN0IGFoYXNoX2FsZyAqYWxnKTsKKworICAgaW50IGNyeXB0b19yZWdpc3Rlcl9zaGFzaChzdHJ1Y3Qgc2hhc2hfYWxnICphbGcpOworICAgaW50IGNyeXB0b19yZWdpc3Rlcl9zaGFzaGVzKHN0cnVjdCBzaGFzaF9hbGcgKmFsZ3MsIGludCBjb3VudCk7CisgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgICAgPHBhcmE+CisgICAgICBUaGUgcmVzcGVjdGl2ZSBjb3VudGVycGFydHMgZm9yIHVucmVnaXN0ZXJpbmcgdGhlIEhBU0gKKyAgICAgIHRyYW5zZm9ybWF0aW9uIGFyZSBhcyBmb2xsb3dzOgorICAgICA8L3BhcmE+CisKKyAgICAgPHByb2dyYW1saXN0aW5nPgorICAgaW50IGNyeXB0b191bnJlZ2lzdGVyX2FoYXNoKHN0cnVjdCBhaGFzaF9hbGcgKmFsZyk7CisKKyAgIGludCBjcnlwdG9fdW5yZWdpc3Rlcl9zaGFzaChzdHJ1Y3Qgc2hhc2hfYWxnICphbGcpOworICAgaW50IGNyeXB0b191bnJlZ2lzdGVyX3NoYXNoZXMoc3RydWN0IHNoYXNoX2FsZyAqYWxncywgaW50IGNvdW50KTsKKyAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICA8L3NlY3QyPgorCisgICAgPHNlY3QyPjx0aXRsZT5DaXBoZXIgRGVmaW5pdGlvbiBXaXRoIHN0cnVjdCBzaGFzaF9hbGcgYW5kIGFoYXNoX2FsZzwvdGl0bGU+CisgICAgIDxwYXJhPgorICAgICAgSGVyZSBhcmUgc2NoZW1hdGljcyBvZiBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgd2hlbgorICAgICAgb3BlcmF0ZWQgZnJvbSBvdGhlciBwYXJ0IG9mIHRoZSBrZXJuZWwuIE5vdGUgdGhhdCB0aGUgLnNldGtleSgpCisgICAgICBjYWxsIG1pZ2h0IGhhcHBlbiBiZWZvcmUgb3IgYWZ0ZXIgYW55IG9mIHRoZXNlIHNjaGVtYXRpY3MgaGFwcGVuLAorICAgICAgYnV0IG11c3Qgbm90IGhhcHBlbiBkdXJpbmcgYW55IG9mIHRoZXNlIGFyZSBpbi1mbGlnaHQuIFBsZWFzZSBub3RlCisgICAgICB0aGF0IGNhbGxpbmcgLmluaXQoKSBmb2xsb3dlZCBpbW1lZGlhdGVseSBieSAuZmluaXNoKCkgaXMgYWxzbyBhCisgICAgICBwZXJmZWN0bHkgdmFsaWQgdHJhbnNmb3JtYXRpb24uCisgICAgIDwvcGFyYT4KKworICAgICA8cHJvZ3JhbWxpc3Rpbmc+CisgICBJKSAgIERBVEEgLS0tLS0tLS0tLS0uCisgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAgICAgICAuaW5pdCgpIC0mZ3Q7IC51cGRhdGUoKSAtJmd0OyAuZmluYWwoKSAgICAgICEgLnVwZGF0ZSgpIG1pZ2h0IG5vdCBiZSBjYWxsZWQKKyAgICAgICAgICAgICAgICAgICAgIF4gICAgfCAgICAgICAgIHwgICAgICAgICAgICBhdCBhbGwgaW4gdGhpcyBzY2VuYXJpby4KKyAgICAgICAgICAgICAgICAgICAgICctLS0tJyAgICAgICAgICctLS0mZ3Q7IEhBU0gKKworICAgSUkpICBEQVRBIC0tLS0tLS0tLS0tLi0tLS0tLS0tLS0tLgorICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgdgorICAgICAgICAgLmluaXQoKSAtJmd0OyAudXBkYXRlKCkgLSZndDsgLmZpbnVwKCkgICAgICAhIC51cGRhdGUoKSBtYXkgbm90IGJlIGNhbGxlZAorICAgICAgICAgICAgICAgICAgICAgXiAgICB8ICAgICAgICAgfCAgICAgICAgICAgIGF0IGFsbCBpbiB0aGlzIHNjZW5hcmlvLgorICAgICAgICAgICAgICAgICAgICAgJy0tLS0nICAgICAgICAgJy0tLSZndDsgSEFTSAorCisgICBJSUkpIERBVEEgLS0tLS0tLS0tLS0uCisgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAgICAgICAgICAgICAgICAgIC5kaWdlc3QoKSAgICAgICAgICAgICAgICAgICEgVGhlIGVudGlyZSBwcm9jZXNzIGlzIGhhbmRsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICBieSB0aGUgLmRpZ2VzdCgpIGNhbGwuCisgICAgICAgICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tJmd0OyBIQVNICisgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgICAgPHBhcmE+CisgICAgICBIZXJlIGlzIGEgc2NoZW1hdGljIG9mIGhvdyB0aGUgLmV4cG9ydCgpLy5pbXBvcnQoKSBmdW5jdGlvbnMgYXJlCisgICAgICBjYWxsZWQgd2hlbiB1c2VkIGZyb20gYW5vdGhlciBwYXJ0IG9mIHRoZSBrZXJuZWwuCisgICAgIDwvcGFyYT4KKworICAgICA8cHJvZ3JhbWxpc3Rpbmc+CisgICBLRVktLS4gICAgICAgICAgICAgICAgIERBVEEtLS4KKyAgICAgICAgdiAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgICAgICAgICEgLnVwZGF0ZSgpIG1heSBub3QgYmUgY2FsbGVkCisgICAgLnNldGtleSgpIC0mZ3Q7IC5pbml0KCkgLSZndDsgLnVwZGF0ZSgpIC0mZ3Q7IC5leHBvcnQoKSAgIGF0IGFsbCBpbiB0aGlzIHNjZW5hcmlvLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeICAgICB8ICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0tLS0nICAgICAgICAgJy0tJmd0OyBQQVJUSUFMX0hBU0gKKworICAgLS0tLS0tLS0tLS0gb3RoZXIgdHJhbnNmb3JtYXRpb25zIGhhcHBlbiBoZXJlIC0tLS0tLS0tLS0tCisKKyAgIFBBUlRJQUxfSEFTSC0tLiAgIERBVEExLS0uCisgICAgICAgICAgICAgICAgIHYgICAgICAgICAgdgorICAgICAgICAgICAgIC5pbXBvcnQgLSZndDsgLnVwZGF0ZSgpIC0mZ3Q7IC5maW5hbCgpICAgICAhIC51cGRhdGUoKSBtYXkgbm90IGJlIGNhbGxlZAorICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgfCAgICAgICAgIHwgICAgICAgICAgIGF0IGFsbCBpbiB0aGlzIHNjZW5hcmlvLgorICAgICAgICAgICAgICAgICAgICAgICAgICctLS0tJyAgICAgICAgICctLSZndDsgSEFTSDEKKworICAgUEFSVElBTF9IQVNILS0uICAgREFUQTItLgorICAgICAgICAgICAgICAgICB2ICAgICAgICAgdgorICAgICAgICAgICAgIC5pbXBvcnQgLSZndDsgLmZpbnVwKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0mZ3Q7IEhBU0gyCisgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPC9zZWN0Mj4KKworICAgIDxzZWN0Mj48dGl0bGU+U3BlY2lmaWNzIE9mIEFzeW5jaHJvbm91cyBIQVNIIFRyYW5zZm9ybWF0aW9uPC90aXRsZT4KKyAgICAgPHBhcmE+CisgICAgICBTb21lIG9mIHRoZSBkcml2ZXJzIHdpbGwgd2FudCB0byB1c2UgdGhlIEdlbmVyaWMgU2NhdHRlcldhbGsKKyAgICAgIGluIGNhc2UgdGhlIGltcGxlbWVudGF0aW9uIG5lZWRzIHRvIGJlIGZlZCBzZXBhcmF0ZSBjaHVua3Mgb2YgdGhlCisgICAgICBzY2F0dGVybGlzdCB3aGljaCBjb250YWlucyB0aGUgaW5wdXQgZGF0YS4gVGhlIGJ1ZmZlciBjb250YWluaW5nCisgICAgICB0aGUgcmVzdWx0aW5nIGhhc2ggd2lsbCBhbHdheXMgYmUgcHJvcGVybHkgYWxpZ25lZCB0bworICAgICAgLmNyYV9hbGlnbm1hc2sgc28gdGhlcmUgaXMgbm8gbmVlZCB0byB3b3JyeSBhYm91dCB0aGlzLgorICAgICA8L3BhcmE+CisgICAgPC9zZWN0Mj4KKyAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iVXNlciI+PHRpdGxlPlVzZXIgU3BhY2UgSW50ZXJmYWNlPC90aXRsZT4KKyAgIDxzZWN0MT48dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgVGhlIGNvbmNlcHRzIG9mIHRoZSBrZXJuZWwgY3J5cHRvIEFQSSB2aXNpYmxlIHRvIGtlcm5lbCBzcGFjZSBpcyBmdWxseQorICAgICBhcHBsaWNhYmxlIHRvIHRoZSB1c2VyIHNwYWNlIGludGVyZmFjZSBhcyB3ZWxsLiBUaGVyZWZvcmUsIHRoZSBrZXJuZWwKKyAgICAgY3J5cHRvIEFQSSBoaWdoIGxldmVsIGRpc2N1c3Npb24gZm9yIHRoZSBpbi1rZXJuZWwgdXNlIGNhc2VzIGFwcGxpZXMKKyAgICAgaGVyZSBhcyB3ZWxsLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBUaGUgbWFqb3IgZGlmZmVyZW5jZSwgaG93ZXZlciwgaXMgdGhhdCB1c2VyIHNwYWNlIGNhbiBvbmx5IGFjdCBhcyBhCisgICAgIGNvbnN1bWVyIGFuZCBuZXZlciBhcyBhIHByb3ZpZGVyIG9mIGEgdHJhbnNmb3JtYXRpb24gb3IgY2lwaGVyIGFsZ29yaXRobS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIGZvbGxvd2luZyBjb3ZlcnMgdGhlIHVzZXIgc3BhY2UgaW50ZXJmYWNlIGV4cG9ydGVkIGJ5IHRoZSBrZXJuZWwKKyAgICAgY3J5cHRvIEFQSS4gQSB3b3JraW5nIGV4YW1wbGUgb2YgdGhpcyBkZXNjcmlwdGlvbiBpcyBsaWJrY2FwaSB0aGF0CisgICAgIGNhbiBiZSBvYnRhaW5lZCBmcm9tIFsxXS4gVGhhdCBsaWJyYXJ5IGNhbiBiZSB1c2VkIGJ5IHVzZXIgc3BhY2UKKyAgICAgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBjcnlwdG9ncmFwaGljIHNlcnZpY2VzIGZyb20gdGhlIGtlcm5lbC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgU29tZSBkZXRhaWxzIG9mIHRoZSBpbi1rZXJuZWwga2VybmVsIGNyeXB0byBBUEkgYXNwZWN0cyBkbyBub3QKKyAgICAgYXBwbHkgdG8gdXNlciBzcGFjZSwgaG93ZXZlci4gVGhpcyBpbmNsdWRlcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuCisgICAgIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgaW52b2NhdGlvbnMuIFRoZSB1c2VyIHNwYWNlIEFQSSBjYWxsCisgICAgIGlzIGZ1bGx5IHN5bmNocm9ub3VzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBbMV0gPHVsaW5rIHVybD0iaHR0cDovL3d3dy5jaHJvbm94LmRlL2xpYmtjYXBpLmh0bWwiPmh0dHA6Ly93d3cuY2hyb25veC5kZS9saWJrY2FwaS5odG1sPC91bGluaz4KKyAgICA8L3BhcmE+CisKKyAgIDwvc2VjdDE+CisKKyAgIDxzZWN0MT48dGl0bGU+VXNlciBTcGFjZSBBUEkgR2VuZXJhbCBSZW1hcmtzPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgVGhlIGtlcm5lbCBjcnlwdG8gQVBJIGlzIGFjY2Vzc2libGUgZnJvbSB1c2VyIHNwYWNlLiBDdXJyZW50bHksCisgICAgIHRoZSBmb2xsb3dpbmcgY2lwaGVycyBhcmUgYWNjZXNzaWJsZToKKyAgICA8L3BhcmE+CisKKyAgICA8aXRlbWl6ZWRsaXN0PgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT5NZXNzYWdlIGRpZ2VzdCBpbmNsdWRpbmcga2V5ZWQgbWVzc2FnZSBkaWdlc3QgKEhNQUMsIENNQUMpPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorCisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPlN5bW1ldHJpYyBjaXBoZXJzPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorCisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPkFFQUQgY2lwaGVyczwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKworICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT5SYW5kb20gTnVtYmVyIEdlbmVyYXRvcnM8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC9pdGVtaXplZGxpc3Q+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIGludGVyZmFjZSBpcyBwcm92aWRlZCB2aWEgc29ja2V0IHR5cGUgdXNpbmcgdGhlIHR5cGUgQUZfQUxHLgorICAgICBJbiBhZGRpdGlvbiwgdGhlIHNldHNvY2tvcHQgb3B0aW9uIHR5cGUgaXMgU09MX0FMRy4gSW4gY2FzZSB0aGUKKyAgICAgdXNlciBzcGFjZSBoZWFkZXIgZmlsZXMgZG8gbm90IGV4cG9ydCB0aGVzZSBmbGFncyB5ZXQsIHVzZSB0aGUKKyAgICAgZm9sbG93aW5nIG1hY3JvczoKKyAgICA8L3BhcmE+CisKKyAgICA8cHJvZ3JhbWxpc3Rpbmc+CisjaWZuZGVmIEFGX0FMRworI2RlZmluZSBBRl9BTEcgMzgKKyNlbmRpZgorI2lmbmRlZiBTT0xfQUxHCisjZGVmaW5lIFNPTF9BTEcgMjc5CisjZW5kaWYKKyAgICA8L3Byb2dyYW1saXN0aW5nPgorCisgICAgPHBhcmE+CisgICAgIEEgY2lwaGVyIGlzIGFjY2Vzc2VkIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBkb25lIGZvciB0aGUgaW4ta2VybmVsCisgICAgIEFQSSBjYWxscy4gVGhpcyBpbmNsdWRlcyB0aGUgZ2VuZXJpYyB2cy4gdW5pcXVlIG5hbWluZyBzY2hlbWEgZm9yCisgICAgIGNpcGhlcnMgYXMgd2VsbCBhcyB0aGUgZW5mb3JjZW1lbnQgb2YgcHJpb3JpdGllcyBmb3IgZ2VuZXJpYyBuYW1lcy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgVG8gaW50ZXJhY3Qgd2l0aCB0aGUga2VybmVsIGNyeXB0byBBUEksIGEgc29ja2V0IG11c3QgYmUKKyAgICAgY3JlYXRlZCBieSB0aGUgdXNlciBzcGFjZSBhcHBsaWNhdGlvbi4gVXNlciBzcGFjZSBpbnZva2VzIHRoZSBjaXBoZXIKKyAgICAgb3BlcmF0aW9uIHdpdGggdGhlIHNlbmQoKS93cml0ZSgpIHN5c3RlbSBjYWxsIGZhbWlseS4gVGhlIHJlc3VsdCBvZiB0aGUKKyAgICAgY2lwaGVyIG9wZXJhdGlvbiBpcyBvYnRhaW5lZCB3aXRoIHRoZSByZWFkKCkvcmVjdigpIHN5c3RlbSBjYWxsIGZhbWlseS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIGZvbGxvd2luZyBBUEkgY2FsbHMgYXNzdW1lIHRoYXQgdGhlIHNvY2tldCBkZXNjcmlwdG9yCisgICAgIGlzIGFscmVhZHkgb3BlbmVkIGJ5IHRoZSB1c2VyIHNwYWNlIGFwcGxpY2F0aW9uIGFuZCBkaXNjdXNzZXMgb25seQorICAgICB0aGUga2VybmVsIGNyeXB0byBBUEkgc3BlY2lmaWMgaW52b2NhdGlvbnMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFRvIGluaXRpYWxpemUgdGhlIHNvY2tldCBpbnRlcmZhY2UsIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgaGFzIHRvCisgICAgIGJlIHBlcmZvcm1lZCBieSB0aGUgY29uc3VtZXI6CisgICAgPC9wYXJhPgorCisgICAgPG9yZGVyZWRsaXN0PgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBDcmVhdGUgYSBzb2NrZXQgb2YgdHlwZSBBRl9BTEcgd2l0aCB0aGUgc3RydWN0IHNvY2thZGRyX2FsZworICAgICAgIHBhcmFtZXRlciBzcGVjaWZpZWQgYmVsb3cgZm9yIHRoZSBkaWZmZXJlbnQgY2lwaGVyIHR5cGVzLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorCisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIEludm9rZSBiaW5kIHdpdGggdGhlIHNvY2tldCBkZXNjcmlwdG9yCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgSW52b2tlIGFjY2VwdCB3aXRoIHRoZSBzb2NrZXQgZGVzY3JpcHRvci4gVGhlIGFjY2VwdCBzeXN0ZW0gY2FsbAorICAgICAgIHJldHVybnMgYSBuZXcgZmlsZSBkZXNjcmlwdG9yIHRoYXQgaXMgdG8gYmUgdXNlZCB0byBpbnRlcmFjdCB3aXRoCisgICAgICAgdGhlIHBhcnRpY3VsYXIgY2lwaGVyIGluc3RhbmNlLiBXaGVuIGludm9raW5nIHNlbmQvd3JpdGUgb3IgcmVjdi9yZWFkCisgICAgICAgc3lzdGVtIGNhbGxzIHRvIHNlbmQgZGF0YSB0byB0aGUga2VybmVsIG9yIG9idGFpbiBkYXRhIGZyb20gdGhlCisgICAgICAga2VybmVsLCB0aGUgZmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGFjY2VwdCBtdXN0IGJlIHVzZWQuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC9vcmRlcmVkbGlzdD4KKyAgIDwvc2VjdDE+CisKKyAgIDxzZWN0MT48dGl0bGU+SW4tcGxhY2UgQ2lwaGVyIG9wZXJhdGlvbjwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgIEp1c3QgbGlrZSB0aGUgaW4ta2VybmVsIG9wZXJhdGlvbiBvZiB0aGUga2VybmVsIGNyeXB0byBBUEksIHRoZSB1c2VyCisgICAgIHNwYWNlIGludGVyZmFjZSBhbGxvd3MgdGhlIGNpcGhlciBvcGVyYXRpb24gaW4tcGxhY2UuIFRoYXQgbWVhbnMgdGhhdAorICAgICB0aGUgaW5wdXQgYnVmZmVyIHVzZWQgZm9yIHRoZSBzZW5kL3dyaXRlIHN5c3RlbSBjYWxsIGFuZCB0aGUgb3V0cHV0CisgICAgIGJ1ZmZlciB1c2VkIGJ5IHRoZSByZWFkL3JlY3Ygc3lzdGVtIGNhbGwgbWF5IGJlIG9uZSBhbmQgdGhlIHNhbWUuCisgICAgIFRoaXMgaXMgb2YgcGFydGljdWxhciBpbnRlcmVzdCBmb3Igc3ltbWV0cmljIGNpcGhlciBvcGVyYXRpb25zIHdoZXJlIGEKKyAgICAgY29weWluZyBvZiB0aGUgb3V0cHV0IGRhdGEgdG8gaXRzIGZpbmFsIGRlc3RpbmF0aW9uIGNhbiBiZSBhdm9pZGVkLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBJZiBhIGNvbnN1bWVyIG9uIHRoZSBvdGhlciBoYW5kIHdhbnRzIHRvIG1haW50YWluIHRoZSBwbGFpbnRleHQgYW5kCisgICAgIHRoZSBjaXBoZXJ0ZXh0IGluIGRpZmZlcmVudCBtZW1vcnkgbG9jYXRpb25zLCBhbGwgYSBjb25zdW1lciBuZWVkcworICAgICB0byBkbyBpcyB0byBwcm92aWRlIGRpZmZlcmVudCBtZW1vcnkgcG9pbnRlcnMgZm9yIHRoZSBlbmNyeXB0aW9uIGFuZAorICAgICBkZWNyeXB0aW9uIG9wZXJhdGlvbi4KKyAgICA8L3BhcmE+CisgICA8L3NlY3QxPgorCisgICA8c2VjdDE+PHRpdGxlPk1lc3NhZ2UgRGlnZXN0IEFQSTwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgIFRoZSBtZXNzYWdlIGRpZ2VzdCB0eXBlIHRvIGJlIHVzZWQgZm9yIHRoZSBjaXBoZXIgb3BlcmF0aW9uIGlzCisgICAgIHNlbGVjdGVkIHdoZW4gaW52b2tpbmcgdGhlIGJpbmQgc3lzY2FsbC4gYmluZCByZXF1aXJlcyB0aGUgY2FsbGVyCisgICAgIHRvIHByb3ZpZGUgYSBmaWxsZWQgc3RydWN0IHNvY2thZGRyIGRhdGEgc3RydWN0dXJlLiBUaGlzIGRhdGEKKyAgICAgc3RydWN0dXJlIG11c3QgYmUgZmlsbGVkIGFzIGZvbGxvd3M6CisgICAgPC9wYXJhPgorCisgICAgPHByb2dyYW1saXN0aW5nPgorc3RydWN0IHNvY2thZGRyX2FsZyBzYSA9IHsKKwkuc2FsZ19mYW1pbHkgPSBBRl9BTEcsCisJLnNhbGdfdHlwZSA9ICJoYXNoIiwgLyogdGhpcyBzZWxlY3RzIHRoZSBoYXNoIGxvZ2ljIGluIHRoZSBrZXJuZWwgKi8KKwkuc2FsZ19uYW1lID0gInNoYTEiIC8qIHRoaXMgaXMgdGhlIGNpcGhlciBuYW1lICovCit9OworICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIHNhbGdfdHlwZSB2YWx1ZSAiaGFzaCIgYXBwbGllcyB0byBtZXNzYWdlIGRpZ2VzdHMgYW5kIGtleWVkCisgICAgIG1lc3NhZ2UgZGlnZXN0cy4gVGhvdWdoLCBhIGtleWVkIG1lc3NhZ2UgZGlnZXN0IGlzIHJlZmVyZW5jZWQgYnkKKyAgICAgdGhlIGFwcHJvcHJpYXRlIHNhbGdfbmFtZS4gUGxlYXNlIHNlZSBiZWxvdyBmb3IgdGhlIHNldHNvY2tvcHQKKyAgICAgaW50ZXJmYWNlIHRoYXQgZXhwbGFpbnMgaG93IHRoZSBrZXkgY2FuIGJlIHNldCBmb3IgYSBrZXllZCBtZXNzYWdlCisgICAgIGRpZ2VzdC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgVXNpbmcgdGhlIHNlbmQoKSBzeXN0ZW0gY2FsbCwgdGhlIGFwcGxpY2F0aW9uIHByb3ZpZGVzIHRoZSBkYXRhIHRoYXQKKyAgICAgc2hvdWxkIGJlIHByb2Nlc3NlZCB3aXRoIHRoZSBtZXNzYWdlIGRpZ2VzdC4gVGhlIHNlbmQgc3lzdGVtIGNhbGwKKyAgICAgYWxsb3dzIHRoZSBmb2xsb3dpbmcgZmxhZ3MgdG8gYmUgc3BlY2lmaWVkOgorICAgIDwvcGFyYT4KKworICAgIDxpdGVtaXplZGxpc3Q+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIE1TR19NT1JFOiBJZiB0aGlzIGZsYWcgaXMgc2V0LCB0aGUgc2VuZCBzeXN0ZW0gY2FsbCBhY3RzIGxpa2UgYQorICAgICAgIG1lc3NhZ2UgZGlnZXN0IHVwZGF0ZSBmdW5jdGlvbiB3aGVyZSB0aGUgZmluYWwgaGFzaCBpcyBub3QKKyAgICAgICB5ZXQgY2FsY3VsYXRlZC4gSWYgdGhlIGZsYWcgaXMgbm90IHNldCwgdGhlIHNlbmQgc3lzdGVtIGNhbGwKKyAgICAgICBjYWxjdWxhdGVzIHRoZSBmaW5hbCBtZXNzYWdlIGRpZ2VzdCBpbW1lZGlhdGVseS4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L2l0ZW1pemVkbGlzdD4KKworICAgIDxwYXJhPgorICAgICBXaXRoIHRoZSByZWN2KCkgc3lzdGVtIGNhbGwsIHRoZSBhcHBsaWNhdGlvbiBjYW4gcmVhZCB0aGUgbWVzc2FnZQorICAgICBkaWdlc3QgZnJvbSB0aGUga2VybmVsIGNyeXB0byBBUEkuIElmIHRoZSBidWZmZXIgaXMgdG9vIHNtYWxsIGZvciB0aGUKKyAgICAgbWVzc2FnZSBkaWdlc3QsIHRoZSBmbGFnIE1TR19UUlVOQyBpcyBzZXQgYnkgdGhlIGtlcm5lbC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgSW4gb3JkZXIgdG8gc2V0IGEgbWVzc2FnZSBkaWdlc3Qga2V5LCB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbiBtdXN0IHVzZQorICAgICB0aGUgc2V0c29ja29wdCgpIG9wdGlvbiBvZiBBTEdfU0VUX0tFWS4gSWYgdGhlIGtleSBpcyBub3Qgc2V0IHRoZSBITUFDCisgICAgIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgd2l0aG91dCB0aGUgaW5pdGlhbCBITUFDIHN0YXRlIGNoYW5nZSBjYXVzZWQgYnkKKyAgICAgdGhlIGtleS4KKyAgICA8L3BhcmE+CisgICA8L3NlY3QxPgorCisgICA8c2VjdDE+PHRpdGxlPlN5bW1ldHJpYyBDaXBoZXIgQVBJPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgVGhlIG9wZXJhdGlvbiBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhlIG1lc3NhZ2UgZGlnZXN0IGRpc2N1c3Npb24uCisgICAgIER1cmluZyBpbml0aWFsaXphdGlvbiwgdGhlIHN0cnVjdCBzb2NrYWRkciBkYXRhIHN0cnVjdHVyZSBtdXN0IGJlCisgICAgIGZpbGxlZCBhcyBmb2xsb3dzOgorICAgIDwvcGFyYT4KKworICAgIDxwcm9ncmFtbGlzdGluZz4KK3N0cnVjdCBzb2NrYWRkcl9hbGcgc2EgPSB7CisJLnNhbGdfZmFtaWx5ID0gQUZfQUxHLAorCS5zYWxnX3R5cGUgPSAic2tjaXBoZXIiLCAvKiB0aGlzIHNlbGVjdHMgdGhlIHN5bW1ldHJpYyBjaXBoZXIgKi8KKwkuc2FsZ19uYW1lID0gImNiYyhhZXMpIiAvKiB0aGlzIGlzIHRoZSBjaXBoZXIgbmFtZSAqLworfTsKKyAgICA8L3Byb2dyYW1saXN0aW5nPgorCisgICAgPHBhcmE+CisgICAgIEJlZm9yZSBkYXRhIGNhbiBiZSBzZW50IHRvIHRoZSBrZXJuZWwgdXNpbmcgdGhlIHdyaXRlL3NlbmQgc3lzdGVtCisgICAgIGNhbGwgZmFtaWx5LCB0aGUgY29uc3VtZXIgbXVzdCBzZXQgdGhlIGtleS4gVGhlIGtleSBzZXR0aW5nIGlzCisgICAgIGRlc2NyaWJlZCB3aXRoIHRoZSBzZXRzb2Nrb3B0IGludm9jYXRpb24gYmVsb3cuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFVzaW5nIHRoZSBzZW5kbXNnKCkgc3lzdGVtIGNhbGwsIHRoZSBhcHBsaWNhdGlvbiBwcm92aWRlcyB0aGUgZGF0YSB0aGF0IHNob3VsZCBiZSBwcm9jZXNzZWQgZm9yIGVuY3J5cHRpb24gb3IgZGVjcnlwdGlvbi4gSW4gYWRkaXRpb24sIHRoZSBJViBpcworICAgICBzcGVjaWZpZWQgd2l0aCB0aGUgZGF0YSBzdHJ1Y3R1cmUgcHJvdmlkZWQgYnkgdGhlIHNlbmRtc2coKSBzeXN0ZW0gY2FsbC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIHNlbmRtc2cgc3lzdGVtIGNhbGwgcGFyYW1ldGVyIG9mIHN0cnVjdCBtc2doZHIgaXMgZW1iZWRkZWQgaW50byB0aGUKKyAgICAgc3RydWN0IGNtc2doZHIgZGF0YSBzdHJ1Y3R1cmUuIFNlZSByZWN2KDIpIGFuZCBjbXNnKDMpIGZvciBtb3JlCisgICAgIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUgY21zZ2hkciBkYXRhIHN0cnVjdHVyZSBpcyB1c2VkIHRvZ2V0aGVyIHdpdGggdGhlCisgICAgIHNlbmQvcmVjdiBzeXN0ZW0gY2FsbCBmYW1pbHkuIFRoYXQgY21zZ2hkciBkYXRhIHN0cnVjdHVyZSBob2xkcyB0aGUKKyAgICAgZm9sbG93aW5nIGluZm9ybWF0aW9uIHNwZWNpZmllZCB3aXRoIGEgc2VwYXJhdGUgaGVhZGVyIGluc3RhbmNlczoKKyAgICA8L3BhcmE+CisKKyAgICA8aXRlbWl6ZWRsaXN0PgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBzcGVjaWZpY2F0aW9uIG9mIHRoZSBjaXBoZXIgb3BlcmF0aW9uIHR5cGUgd2l0aCBvbmUgb2YgdGhlc2UgZmxhZ3M6CisgICAgICA8L3BhcmE+CisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+QUxHX09QX0VOQ1JZUFQgLSBlbmNyeXB0aW9uIG9mIGRhdGE8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPkFMR19PUF9ERUNSWVBUIC0gZGVjcnlwdGlvbiBvZiBkYXRhPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgPC9saXN0aXRlbT4KKworICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBzcGVjaWZpY2F0aW9uIG9mIHRoZSBJViBpbmZvcm1hdGlvbiBtYXJrZWQgd2l0aCB0aGUgZmxhZyBBTEdfU0VUX0lWCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC9pdGVtaXplZGxpc3Q+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIHNlbmQgc3lzdGVtIGNhbGwgZmFtaWx5IGFsbG93cyB0aGUgZm9sbG93aW5nIGZsYWcgdG8gYmUgc3BlY2lmaWVkOgorICAgIDwvcGFyYT4KKworICAgIDxpdGVtaXplZGxpc3Q+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIE1TR19NT1JFOiBJZiB0aGlzIGZsYWcgaXMgc2V0LCB0aGUgc2VuZCBzeXN0ZW0gY2FsbCBhY3RzIGxpa2UgYQorICAgICAgIGNpcGhlciB1cGRhdGUgZnVuY3Rpb24gd2hlcmUgbW9yZSBpbnB1dCBkYXRhIGlzIGV4cGVjdGVkCisgICAgICAgd2l0aCBhIHN1YnNlcXVlbnQgaW52b2NhdGlvbiBvZiB0aGUgc2VuZCBzeXN0ZW0gY2FsbC4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L2l0ZW1pemVkbGlzdD4KKworICAgIDxwYXJhPgorICAgICBOb3RlOiBUaGUga2VybmVsIHJlcG9ydHMgLUVJTlZBTCBmb3IgYW55IHVuZXhwZWN0ZWQgZGF0YS4gVGhlIGNhbGxlcgorICAgICBtdXN0IG1ha2Ugc3VyZSB0aGF0IGFsbCBkYXRhIG1hdGNoZXMgdGhlIGNvbnN0cmFpbnRzIGdpdmVuIGluCisgICAgIC9wcm9jL2NyeXB0byBmb3IgdGhlIHNlbGVjdGVkIGNpcGhlci4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgV2l0aCB0aGUgcmVjdigpIHN5c3RlbSBjYWxsLCB0aGUgYXBwbGljYXRpb24gY2FuIHJlYWQgdGhlIHJlc3VsdCBvZgorICAgICB0aGUgY2lwaGVyIG9wZXJhdGlvbiBmcm9tIHRoZSBrZXJuZWwgY3J5cHRvIEFQSS4gVGhlIG91dHB1dCBidWZmZXIKKyAgICAgbXVzdCBiZSBhdCBsZWFzdCBhcyBsYXJnZSBhcyB0byBob2xkIGFsbCBibG9ja3Mgb2YgdGhlIGVuY3J5cHRlZCBvcgorICAgICBkZWNyeXB0ZWQgZGF0YS4gSWYgdGhlIG91dHB1dCBkYXRhIHNpemUgaXMgc21hbGxlciwgb25seSBhcyBtYW55CisgICAgIGJsb2NrcyBhcmUgcmV0dXJuZWQgdGhhdCBmaXQgaW50byB0aGF0IG91dHB1dCBidWZmZXIgc2l6ZS4KKyAgICA8L3BhcmE+CisgICA8L3NlY3QxPgorCisgICA8c2VjdDE+PHRpdGxlPkFFQUQgQ2lwaGVyIEFQSTwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgIFRoZSBvcGVyYXRpb24gaXMgdmVyeSBzaW1pbGFyIHRvIHRoZSBzeW1tZXRyaWMgY2lwaGVyIGRpc2N1c3Npb24uCisgICAgIER1cmluZyBpbml0aWFsaXphdGlvbiwgdGhlIHN0cnVjdCBzb2NrYWRkciBkYXRhIHN0cnVjdHVyZSBtdXN0IGJlCisgICAgIGZpbGxlZCBhcyBmb2xsb3dzOgorICAgIDwvcGFyYT4KKworICAgIDxwcm9ncmFtbGlzdGluZz4KK3N0cnVjdCBzb2NrYWRkcl9hbGcgc2EgPSB7CisJLnNhbGdfZmFtaWx5ID0gQUZfQUxHLAorCS5zYWxnX3R5cGUgPSAiYWVhZCIsIC8qIHRoaXMgc2VsZWN0cyB0aGUgc3ltbWV0cmljIGNpcGhlciAqLworCS5zYWxnX25hbWUgPSAiZ2NtKGFlcykiIC8qIHRoaXMgaXMgdGhlIGNpcGhlciBuYW1lICovCit9OworICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgICA8cGFyYT4KKyAgICAgQmVmb3JlIGRhdGEgY2FuIGJlIHNlbnQgdG8gdGhlIGtlcm5lbCB1c2luZyB0aGUgd3JpdGUvc2VuZCBzeXN0ZW0KKyAgICAgY2FsbCBmYW1pbHksIHRoZSBjb25zdW1lciBtdXN0IHNldCB0aGUga2V5LiBUaGUga2V5IHNldHRpbmcgaXMKKyAgICAgZGVzY3JpYmVkIHdpdGggdGhlIHNldHNvY2tvcHQgaW52b2NhdGlvbiBiZWxvdy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgSW4gYWRkaXRpb24sIGJlZm9yZSBkYXRhIGNhbiBiZSBzZW50IHRvIHRoZSBrZXJuZWwgdXNpbmcgdGhlCisgICAgIHdyaXRlL3NlbmQgc3lzdGVtIGNhbGwgZmFtaWx5LCB0aGUgY29uc3VtZXIgbXVzdCBzZXQgdGhlIGF1dGhlbnRpY2F0aW9uCisgICAgIHRhZyBzaXplLiBUbyBzZXQgdGhlIGF1dGhlbnRpY2F0aW9uIHRhZyBzaXplLCB0aGUgY2FsbGVyIG11c3QgdXNlIHRoZQorICAgICBzZXRzb2Nrb3B0IGludm9jYXRpb24gZGVzY3JpYmVkIGJlbG93LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBVc2luZyB0aGUgc2VuZG1zZygpIHN5c3RlbSBjYWxsLCB0aGUgYXBwbGljYXRpb24gcHJvdmlkZXMgdGhlIGRhdGEgdGhhdCBzaG91bGQgYmUgcHJvY2Vzc2VkIGZvciBlbmNyeXB0aW9uIG9yIGRlY3J5cHRpb24uIEluIGFkZGl0aW9uLCB0aGUgSVYgaXMKKyAgICAgc3BlY2lmaWVkIHdpdGggdGhlIGRhdGEgc3RydWN0dXJlIHByb3ZpZGVkIGJ5IHRoZSBzZW5kbXNnKCkgc3lzdGVtIGNhbGwuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFRoZSBzZW5kbXNnIHN5c3RlbSBjYWxsIHBhcmFtZXRlciBvZiBzdHJ1Y3QgbXNnaGRyIGlzIGVtYmVkZGVkIGludG8gdGhlCisgICAgIHN0cnVjdCBjbXNnaGRyIGRhdGEgc3RydWN0dXJlLiBTZWUgcmVjdigyKSBhbmQgY21zZygzKSBmb3IgbW9yZQorICAgICBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIGNtc2doZHIgZGF0YSBzdHJ1Y3R1cmUgaXMgdXNlZCB0b2dldGhlciB3aXRoIHRoZQorICAgICBzZW5kL3JlY3Ygc3lzdGVtIGNhbGwgZmFtaWx5LiBUaGF0IGNtc2doZHIgZGF0YSBzdHJ1Y3R1cmUgaG9sZHMgdGhlCisgICAgIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBzcGVjaWZpZWQgd2l0aCBhIHNlcGFyYXRlIGhlYWRlciBpbnN0YW5jZXM6CisgICAgPC9wYXJhPgorCisgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgc3BlY2lmaWNhdGlvbiBvZiB0aGUgY2lwaGVyIG9wZXJhdGlvbiB0eXBlIHdpdGggb25lIG9mIHRoZXNlIGZsYWdzOgorICAgICAgPC9wYXJhPgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPkFMR19PUF9FTkNSWVBUIC0gZW5jcnlwdGlvbiBvZiBkYXRhPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT5BTEdfT1BfREVDUllQVCAtIGRlY3J5cHRpb24gb2YgZGF0YTwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgc3BlY2lmaWNhdGlvbiBvZiB0aGUgSVYgaW5mb3JtYXRpb24gbWFya2VkIHdpdGggdGhlIGZsYWcgQUxHX1NFVF9JVgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorCisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIHNwZWNpZmljYXRpb24gb2YgdGhlIGFzc29jaWF0ZWQgYXV0aGVudGljYXRpb24gZGF0YSAoQUFEKSB3aXRoIHRoZQorICAgICAgIGZsYWcgQUxHX1NFVF9BRUFEX0FTU09DTEVOLiBUaGUgQUFEIGlzIHNlbnQgdG8gdGhlIGtlcm5lbCB0b2dldGhlcgorICAgICAgIHdpdGggdGhlIHBsYWludGV4dCAvIGNpcGhlcnRleHQuIFNlZSBiZWxvdyBmb3IgdGhlIG1lbW9yeSBzdHJ1Y3R1cmUuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC9pdGVtaXplZGxpc3Q+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIHNlbmQgc3lzdGVtIGNhbGwgZmFtaWx5IGFsbG93cyB0aGUgZm9sbG93aW5nIGZsYWcgdG8gYmUgc3BlY2lmaWVkOgorICAgIDwvcGFyYT4KKworICAgIDxpdGVtaXplZGxpc3Q+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIE1TR19NT1JFOiBJZiB0aGlzIGZsYWcgaXMgc2V0LCB0aGUgc2VuZCBzeXN0ZW0gY2FsbCBhY3RzIGxpa2UgYQorICAgICAgIGNpcGhlciB1cGRhdGUgZnVuY3Rpb24gd2hlcmUgbW9yZSBpbnB1dCBkYXRhIGlzIGV4cGVjdGVkCisgICAgICAgd2l0aCBhIHN1YnNlcXVlbnQgaW52b2NhdGlvbiBvZiB0aGUgc2VuZCBzeXN0ZW0gY2FsbC4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L2l0ZW1pemVkbGlzdD4KKworICAgIDxwYXJhPgorICAgICBOb3RlOiBUaGUga2VybmVsIHJlcG9ydHMgLUVJTlZBTCBmb3IgYW55IHVuZXhwZWN0ZWQgZGF0YS4gVGhlIGNhbGxlcgorICAgICBtdXN0IG1ha2Ugc3VyZSB0aGF0IGFsbCBkYXRhIG1hdGNoZXMgdGhlIGNvbnN0cmFpbnRzIGdpdmVuIGluCisgICAgIC9wcm9jL2NyeXB0byBmb3IgdGhlIHNlbGVjdGVkIGNpcGhlci4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgV2l0aCB0aGUgcmVjdigpIHN5c3RlbSBjYWxsLCB0aGUgYXBwbGljYXRpb24gY2FuIHJlYWQgdGhlIHJlc3VsdCBvZgorICAgICB0aGUgY2lwaGVyIG9wZXJhdGlvbiBmcm9tIHRoZSBrZXJuZWwgY3J5cHRvIEFQSS4gVGhlIG91dHB1dCBidWZmZXIKKyAgICAgbXVzdCBiZSBhdCBsZWFzdCBhcyBsYXJnZSBhcyBkZWZpbmVkIHdpdGggdGhlIG1lbW9yeSBzdHJ1Y3R1cmUgYmVsb3cuCisgICAgIElmIHRoZSBvdXRwdXQgZGF0YSBzaXplIGlzIHNtYWxsZXIsIHRoZSBjaXBoZXIgb3BlcmF0aW9uIGlzIG5vdCBwZXJmb3JtZWQuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFRoZSBhdXRoZW50aWNhdGVkIGRlY3J5cHRpb24gb3BlcmF0aW9uIG1heSBpbmRpY2F0ZSBhbiBpbnRlZ3JpdHkgZXJyb3IuCisgICAgIFN1Y2ggYnJlYWNoIGluIGludGVncml0eSBpcyBtYXJrZWQgd2l0aCB0aGUgLUVCQURNU0cgZXJyb3IgY29kZS4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdDI+PHRpdGxlPkFFQUQgTWVtb3J5IFN0cnVjdHVyZTwvdGl0bGU+CisgICAgIDxwYXJhPgorICAgICAgVGhlIEFFQUQgY2lwaGVyIG9wZXJhdGVzIHdpdGggdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0aGF0CisgICAgICBpcyBjb21tdW5pY2F0ZWQgYmV0d2VlbiB1c2VyIGFuZCBrZXJuZWwgc3BhY2UgYXMgb25lIGRhdGEgc3RyZWFtOgorICAgICA8L3BhcmE+CisKKyAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT5wbGFpbnRleHQgb3IgY2lwaGVydGV4dDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT5hc3NvY2lhdGVkIGF1dGhlbnRpY2F0aW9uIGRhdGEgKEFBRCk8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorCisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+YXV0aGVudGljYXRpb24gdGFnPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC9pdGVtaXplZGxpc3Q+CisKKyAgICAgPHBhcmE+CisgICAgICBUaGUgc2l6ZXMgb2YgdGhlIEFBRCBhbmQgdGhlIGF1dGhlbnRpY2F0aW9uIHRhZyBhcmUgcHJvdmlkZWQgd2l0aAorICAgICAgdGhlIHNlbmRtc2cgYW5kIHNldHNvY2tvcHQgY2FsbHMgKHNlZSB0aGVyZSkuIEFzIHRoZSBrZXJuZWwga25vd3MKKyAgICAgIHRoZSBzaXplIG9mIHRoZSBlbnRpcmUgZGF0YSBzdHJlYW0sIHRoZSBrZXJuZWwgaXMgbm93IGFibGUgdG8KKyAgICAgIGNhbGN1bGF0ZSB0aGUgcmlnaHQgb2Zmc2V0cyBvZiB0aGUgZGF0YSBjb21wb25lbnRzIGluIHRoZSBkYXRhCisgICAgICBzdHJlYW0uCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIFRoZSB1c2VyIHNwYWNlIGNhbGxlciBtdXN0IGFycmFuZ2UgdGhlIGFmb3JlbWVudGlvbmVkIGluZm9ybWF0aW9uCisgICAgICBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgorICAgICA8L3BhcmE+CisKKyAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgQUVBRCBlbmNyeXB0aW9uIGlucHV0OiBBQUQgfHwgcGxhaW50ZXh0CisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKworICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBBRUFEIGRlY3J5cHRpb24gaW5wdXQ6IEFBRCB8fCBjaXBoZXJ0ZXh0IHx8IGF1dGhlbnRpY2F0aW9uIHRhZworICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvaXRlbWl6ZWRsaXN0PgorCisgICAgIDxwYXJhPgorICAgICAgVGhlIG91dHB1dCBidWZmZXIgdGhlIHVzZXIgc3BhY2UgY2FsbGVyIHByb3ZpZGVzIG11c3QgYmUgYXQgbGVhc3QgYXMKKyAgICAgIGxhcmdlIHRvIGhvbGQgdGhlIGZvbGxvd2luZyBkYXRhOgorICAgICA8L3BhcmE+CisKKyAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgQUVBRCBlbmNyeXB0aW9uIG91dHB1dDogY2lwaGVydGV4dCB8fCBhdXRoZW50aWNhdGlvbiB0YWcKKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorCisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIEFFQUQgZGVjcnlwdGlvbiBvdXRwdXQ6IHBsYWludGV4dAorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvc2VjdDI+CisgICA8L3NlY3QxPgorCisgICA8c2VjdDE+PHRpdGxlPlJhbmRvbSBOdW1iZXIgR2VuZXJhdG9yIEFQSTwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgIEFnYWluLCB0aGUgb3BlcmF0aW9uIGlzIHZlcnkgc2ltaWxhciB0byB0aGUgb3RoZXIgQVBJcy4KKyAgICAgRHVyaW5nIGluaXRpYWxpemF0aW9uLCB0aGUgc3RydWN0IHNvY2thZGRyIGRhdGEgc3RydWN0dXJlIG11c3QgYmUKKyAgICAgZmlsbGVkIGFzIGZvbGxvd3M6CisgICAgPC9wYXJhPgorCisgICAgPHByb2dyYW1saXN0aW5nPgorc3RydWN0IHNvY2thZGRyX2FsZyBzYSA9IHsKKwkuc2FsZ19mYW1pbHkgPSBBRl9BTEcsCisJLnNhbGdfdHlwZSA9ICJybmciLCAvKiB0aGlzIHNlbGVjdHMgdGhlIHN5bW1ldHJpYyBjaXBoZXIgKi8KKwkuc2FsZ19uYW1lID0gImRyYmdfbm9wcl9zaGEyNTYiIC8qIHRoaXMgaXMgdGhlIGNpcGhlciBuYW1lICovCit9OworICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgICA8cGFyYT4KKyAgICAgRGVwZW5kaW5nIG9uIHRoZSBSTkcgdHlwZSwgdGhlIFJORyBtdXN0IGJlIHNlZWRlZC4gVGhlIHNlZWQgaXMgcHJvdmlkZWQKKyAgICAgdXNpbmcgdGhlIHNldHNvY2tvcHQgaW50ZXJmYWNlIHRvIHNldCB0aGUga2V5LiBGb3IgZXhhbXBsZSwgdGhlCisgICAgIGFuc2lfY3BybmcgcmVxdWlyZXMgYSBzZWVkLiBUaGUgRFJCR3MgZG8gbm90IHJlcXVpcmUgYSBzZWVkLCBidXQKKyAgICAgbWF5IGJlIHNlZWRlZC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgVXNpbmcgdGhlIHJlYWQoKS9yZWN2bXNnKCkgc3lzdGVtIGNhbGxzLCByYW5kb20gbnVtYmVycyBjYW4gYmUgb2J0YWluZWQuCisgICAgIFRoZSBrZXJuZWwgZ2VuZXJhdGVzIGF0IG1vc3QgMTI4IGJ5dGVzIGluIG9uZSBjYWxsLiBJZiB1c2VyIHNwYWNlCisgICAgIHJlcXVpcmVzIG1vcmUgZGF0YSwgbXVsdGlwbGUgY2FsbHMgdG8gcmVhZCgpL3JlY3Ztc2coKSBtdXN0IGJlIG1hZGUuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFdBUk5JTkc6IFRoZSB1c2VyIHNwYWNlIGNhbGxlciBtYXkgaW52b2tlIHRoZSBpbml0aWFsbHkgbWVudGlvbmVkCisgICAgIGFjY2VwdCBzeXN0ZW0gY2FsbCBtdWx0aXBsZSB0aW1lcy4gSW4gdGhpcyBjYXNlLCB0aGUgcmV0dXJuZWQgZmlsZQorICAgICBkZXNjcmlwdG9ycyBoYXZlIHRoZSBzYW1lIHN0YXRlLgorICAgIDwvcGFyYT4KKworICAgPC9zZWN0MT4KKworICAgPHNlY3QxPjx0aXRsZT5aZXJvLUNvcHkgSW50ZXJmYWNlPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgSW4gYWRkaXRpb24gdG8gdGhlIHNlbmQvd3JpdGUvcmVhZC9yZWN2IHN5c3RlbSBjYWxsIGZhbWlseSwgdGhlIEFGX0FMRworICAgICBpbnRlcmZhY2UgY2FuIGJlIGFjY2Vzc2VkIHdpdGggdGhlIHplcm8tY29weSBpbnRlcmZhY2Ugb2Ygc3BsaWNlL3Ztc3BsaWNlLgorICAgICBBcyB0aGUgbmFtZSBpbmRpY2F0ZXMsIHRoZSBrZXJuZWwgdHJpZXMgdG8gYXZvaWQgYSBjb3B5IG9wZXJhdGlvbiBpbnRvCisgICAgIGtlcm5lbCBzcGFjZS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIHplcm8tY29weSBvcGVyYXRpb24gcmVxdWlyZXMgZGF0YSB0byBiZSBhbGlnbmVkIGF0IHRoZSBwYWdlIGJvdW5kYXJ5LgorICAgICBOb24tYWxpZ25lZCBkYXRhIGNhbiBiZSB1c2VkIGFzIHdlbGwsIGJ1dCBtYXkgcmVxdWlyZSBtb3JlIG9wZXJhdGlvbnMgb2YKKyAgICAgdGhlIGtlcm5lbCB3aGljaCB3b3VsZCBkZWZlYXQgdGhlIHNwZWVkIGdhaW5zIG9idGFpbmVkIGZyb20gdGhlIHplcm8tY29weQorICAgICBpbnRlcmZhY2UuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFRoZSBzeXN0ZW0taW50ZXJlbnQgbGltaXQgZm9yIHRoZSBzaXplIG9mIG9uZSB6ZXJvLWNvcHkgb3BlcmF0aW9uIGlzCisgICAgIDE2IHBhZ2VzLiBJZiBtb3JlIGRhdGEgaXMgdG8gYmUgc2VudCB0byBBRl9BTEcsIHVzZXIgc3BhY2UgbXVzdCBzbGljZQorICAgICB0aGUgaW5wdXQgaW50byBzZWdtZW50cyB3aXRoIGEgbWF4aW11bSBzaXplIG9mIDE2IHBhZ2VzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBaZXJvLWNvcHkgY2FuIGJlIHVzZWQgd2l0aCB0aGUgZm9sbG93aW5nIGNvZGUgZXhhbXBsZSAoYSBjb21wbGV0ZSB3b3JraW5nCisgICAgIGV4YW1wbGUgaXMgcHJvdmlkZWQgd2l0aCBsaWJrY2FwaSk6CisgICAgPC9wYXJhPgorCisgICAgPHByb2dyYW1saXN0aW5nPgoraW50IHBpcGVzWzJdOworCitwaXBlKHBpcGVzKTsKKy8qIGlucHV0IGRhdGEgaW4gaW92ICovCit2bXNwbGljZShwaXBlc1sxXSwgaW92LCBpb3ZsZW4sIFNQTElDRV9GX0dJRlQpOworLyogb3BmZCBpcyB0aGUgZmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGZyb20gYWNjZXB0KCkgc3lzdGVtIGNhbGwgKi8KK3NwbGljZShwaXBlc1swXSwgTlVMTCwgb3BmZCwgTlVMTCwgcmV0LCAwKTsKK3JlYWQob3BmZCwgb3V0LCBvdXRsZW4pOworICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgIDwvc2VjdDE+CisKKyAgIDxzZWN0MT48dGl0bGU+U2V0c29ja29wdCBJbnRlcmZhY2U8L3RpdGxlPgorICAgIDxwYXJhPgorICAgICBJbiBhZGRpdGlvbiB0byB0aGUgcmVhZC9yZWN2IGFuZCBzZW5kL3dyaXRlIHN5c3RlbSBjYWxsIGhhbmRsaW5nCisgICAgIHRvIHNlbmQgYW5kIHJldHJpZXZlIGRhdGEgc3ViamVjdCB0byB0aGUgY2lwaGVyIG9wZXJhdGlvbiwgYSBjb25zdW1lcgorICAgICBhbHNvIG5lZWRzIHRvIHNldCB0aGUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmb3IgdGhlIGNpcGhlciBvcGVyYXRpb24uCisgICAgIFRoaXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBpcyBzZXQgdXNpbmcgdGhlIHNldHNvY2tvcHQgc3lzdGVtIGNhbGwKKyAgICAgdGhhdCBtdXN0IGJlIGludm9rZWQgd2l0aCB0aGUgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBvcGVuIGNpcGhlcgorICAgICAoaS5lLiB0aGUgZmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IHRoZSBhY2NlcHQgc3lzdGVtIGNhbGwpLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBFYWNoIHNldHNvY2tvcHQgaW52b2NhdGlvbiBtdXN0IHVzZSB0aGUgbGV2ZWwgU09MX0FMRy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgVGhlIHNldHNvY2tvcHQgaW50ZXJmYWNlIGFsbG93cyBzZXR0aW5nIHRoZSBmb2xsb3dpbmcgZGF0YSB1c2luZworICAgICB0aGUgbWVudGlvbmVkIG9wdG5hbWU6CisgICAgPC9wYXJhPgorCisgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgQUxHX1NFVF9LRVkgLS0gU2V0dGluZyB0aGUga2V5LiBLZXkgc2V0dGluZyBpcyBhcHBsaWNhYmxlIHRvOgorICAgICAgPC9wYXJhPgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPnRoZSBza2NpcGhlciBjaXBoZXIgdHlwZSAoc3ltbWV0cmljIGNpcGhlcnMpPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT50aGUgaGFzaCBjaXBoZXIgdHlwZSAoa2V5ZWQgbWVzc2FnZSBkaWdlc3RzKTwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+dGhlIEFFQUQgY2lwaGVyIHR5cGU8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPnRoZSBSTkcgY2lwaGVyIHR5cGUgdG8gcHJvdmlkZSB0aGUgc2VlZDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgQUxHX1NFVF9BRUFEX0FVVEhTSVpFIC0tIFNldHRpbmcgdGhlIGF1dGhlbnRpY2F0aW9uIHRhZyBzaXplCisgICAgICAgZm9yIEFFQUQgY2lwaGVycy4gRm9yIGEgZW5jcnlwdGlvbiBvcGVyYXRpb24sIHRoZSBhdXRoZW50aWNhdGlvbgorICAgICAgIHRhZyBvZiB0aGUgZ2l2ZW4gc2l6ZSB3aWxsIGJlIGdlbmVyYXRlZC4gRm9yIGEgZGVjcnlwdGlvbiBvcGVyYXRpb24sCisgICAgICAgdGhlIHByb3ZpZGVkIGNpcGhlcnRleHQgaXMgYXNzdW1lZCB0byBjb250YWluIGFuIGF1dGhlbnRpY2F0aW9uIHRhZworICAgICAgIG9mIHRoZSBnaXZlbiBzaXplIChzZWUgc2VjdGlvbiBhYm91dCBBRUFEIG1lbW9yeSBsYXlvdXQgYmVsb3cpLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvaXRlbWl6ZWRsaXN0PgorCisgICA8L3NlY3QxPgorCisgICA8c2VjdDE+PHRpdGxlPlVzZXIgc3BhY2UgQVBJIGV4YW1wbGU8L3RpdGxlPgorICAgIDxwYXJhPgorICAgICBQbGVhc2Ugc2VlIFsxXSBmb3IgbGlia2NhcGkgd2hpY2ggcHJvdmlkZXMgYW4gZWFzeS10by11c2Ugd3JhcHBlcgorICAgICBhcm91bmQgdGhlIGFmb3JlbWVudGlvbmVkIE5ldGxpbmsga2VybmVsIGludGVyZmFjZS4gWzFdIGFsc28gY29udGFpbnMKKyAgICAgYSB0ZXN0IGFwcGxpY2F0aW9uIHRoYXQgaW52b2tlcyBhbGwgbGlia2NhcGkgQVBJIGNhbGxzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBbMV0gPHVsaW5rIHVybD0iaHR0cDovL3d3dy5jaHJvbm94LmRlL2xpYmtjYXBpLmh0bWwiPmh0dHA6Ly93d3cuY2hyb25veC5kZS9saWJrY2FwaS5odG1sPC91bGluaz4KKyAgICA8L3BhcmE+CisKKyAgIDwvc2VjdDE+CisKKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJBUEkiPjx0aXRsZT5Qcm9ncmFtbWluZyBJbnRlcmZhY2U8L3RpdGxlPgorICAgPHBhcmE+CisgICAgUGxlYXNlIG5vdGUgdGhhdCB0aGUga2VybmVsIGNyeXB0byBBUEkgY29udGFpbnMgdGhlIEFFQUQgZ2l2Y3J5cHQKKyAgICBBUEkgKGNyeXB0b19hZWFkX2dpdiogYW5kIGFlYWRfZ2l2Y3J5cHRfKiBmdW5jdGlvbiBjYWxscyBpbgorICAgIGluY2x1ZGUvY3J5cHRvL2FlYWQuaCkuIFRoaXMgQVBJIGlzIG9ic29sZXRlIGFuZCB3aWxsIGJlIHJlbW92ZWQKKyAgICBpbiB0aGUgZnV0dXJlLiBUbyBvYnRhaW4gdGhlIGZ1bmN0aW9uYWxpdHkgb2YgYW4gQUVBRCBjaXBoZXIgd2l0aAorICAgIGludGVybmFsIElWIGdlbmVyYXRpb24sIHVzZSB0aGUgSVYgZ2VuZXJhdG9yIGFzIGEgcmVndWxhciBjaXBoZXIuCisgICAgRm9yIGV4YW1wbGUsIHJmYzQxMDYoZ2NtKGFlcykpIGlzIHRoZSBBRUFEIGNpcGhlciB3aXRoIGV4dGVybmFsCisgICAgSVYgZ2VuZXJhdGlvbiBhbmQgc2Vxbml2KHJmYzQxMDYoZ2NtKGFlcykpKSBpbXBsaWVzIHRoYXQgdGhlIGtlcm5lbAorICAgIGNyeXB0byBBUEkgZ2VuZXJhdGVzIHRoZSBJVi4gRGlmZmVyZW50IElWIGdlbmVyYXRvcnMgYXJlIGF2YWlsYWJsZS4KKyAgIDwvcGFyYT4KKyAgIDxzZWN0MT48dGl0bGU+QmxvY2sgQ2lwaGVyIENvbnRleHQgRGF0YSBTdHJ1Y3R1cmVzPC90aXRsZT4KKyFQaW5jbHVkZS9saW51eC9jcnlwdG8uaCBCbG9jayBDaXBoZXIgQ29udGV4dCBEYXRhIFN0cnVjdHVyZXMKKyFGaW5jbHVkZS9jcnlwdG8vYWVhZC5oIGFlYWRfcmVxdWVzdAorICAgPC9zZWN0MT4KKyAgIDxzZWN0MT48dGl0bGU+QmxvY2sgQ2lwaGVyIEFsZ29yaXRobSBEZWZpbml0aW9uczwvdGl0bGU+CishUGluY2x1ZGUvbGludXgvY3J5cHRvLmggQmxvY2sgQ2lwaGVyIEFsZ29yaXRobSBEZWZpbml0aW9ucworIUZpbmNsdWRlL2xpbnV4L2NyeXB0by5oIGNyeXB0b19hbGcKKyFGaW5jbHVkZS9saW51eC9jcnlwdG8uaCBhYmxrY2lwaGVyX2FsZworIUZpbmNsdWRlL2NyeXB0by9hZWFkLmggYWVhZF9hbGcKKyFGaW5jbHVkZS9saW51eC9jcnlwdG8uaCBibGtjaXBoZXJfYWxnCishRmluY2x1ZGUvbGludXgvY3J5cHRvLmggY2lwaGVyX2FsZworIUZpbmNsdWRlL2NyeXB0by9ybmcuaCBybmdfYWxnCisgICA8L3NlY3QxPgorICAgPHNlY3QxPjx0aXRsZT5Bc3luY2hyb25vdXMgQmxvY2sgQ2lwaGVyIEFQSTwvdGl0bGU+CishUGluY2x1ZGUvbGludXgvY3J5cHRvLmggQXN5bmNocm9ub3VzIEJsb2NrIENpcGhlciBBUEkKKyFGaW5jbHVkZS9saW51eC9jcnlwdG8uaCBjcnlwdG9fYWxsb2NfYWJsa2NpcGhlcgorIUZpbmNsdWRlL2xpbnV4L2NyeXB0by5oIGNyeXB0b19mcmVlX2FibGtjaXBoZXIKKyFGaW5jbHVkZS9saW51eC9jcnlwdG8uaCBjcnlwdG9faGFzX2FibGtjaXBoZXIKKyFGaW5jbHVkZS9saW51eC9jcnlwdG8uaCBjcnlwdG9fYWJsa2NpcGhlcl9pdnNpemUKKyFGaW5jbHVkZS9saW51eC9jcnlwdG8uaCBjcnlwdG9fYWJsa2NpcGhlcl9ibG9ja3NpemUKKyFGaW5jbHVkZS9saW51eC9jcnlwdG8uaCBjcnlwdG9fYWJsa2NpcGhlcl9zZXRrZXkKKyFGaW5jbHVkZS9saW51eC9jcnlwdG8uaCBjcnlwdG9fYWJsa2NpcGhlcl9yZXF0Zm0KKyFGaW5jbHVkZS9saW51eC9jcnlwdG8uaCBjcnlwdG9fYWJsa2NpcGhlcl9lbmNyeXB0CishRmluY2x1ZGUvbGludXgvY3J5cHRvLmggY3J5cHRvX2FibGtjaXBoZXJfZGVjcnlwdAorICAgPC9zZWN0MT4KKyAgIDxzZWN0MT48dGl0bGU+QXN5bmNocm9ub3VzIENpcGhlciBSZXF1ZXN0IEhhbmRsZTwvdGl0bGU+CishUGluY2x1ZGUvbGludXgvY3J5cHRvLmggQXN5bmNocm9ub3VzIENpcGhlciBSZXF1ZXN0IEhhbmRsZQorIUZpbmNsdWRlL2xpbnV4L2NyeXB0by5oIGNyeXB0b19hYmxrY2lwaGVyX3JlcXNpemUKKyFGaW5jbHVkZS9saW51eC9jcnlwdG8uaCBhYmxrY2lwaGVyX3JlcXVlc3Rfc2V0X3RmbQorIUZpbmNsdWRlL2xpbnV4L2NyeXB0by5oIGFibGtjaXBoZXJfcmVxdWVzdF9hbGxvYworIUZpbmNsdWRlL2xpbnV4L2NyeXB0by5oIGFibGtjaXBoZXJfcmVxdWVzdF9mcmVlCishRmluY2x1ZGUvbGludXgvY3J5cHRvLmggYWJsa2NpcGhlcl9yZXF1ZXN0X3NldF9jYWxsYmFjaworIUZpbmNsdWRlL2xpbnV4L2NyeXB0by5oIGFibGtjaXBoZXJfcmVxdWVzdF9zZXRfY3J5cHQKKyAgIDwvc2VjdDE+CisgICA8c2VjdDE+PHRpdGxlPkF1dGhlbnRpY2F0ZWQgRW5jcnlwdGlvbiBXaXRoIEFzc29jaWF0ZWQgRGF0YSAoQUVBRCkgQ2lwaGVyIEFQSTwvdGl0bGU+CishUGluY2x1ZGUvY3J5cHRvL2FlYWQuaCBBdXRoZW50aWNhdGVkIEVuY3J5cHRpb24gV2l0aCBBc3NvY2lhdGVkIERhdGEgKEFFQUQpIENpcGhlciBBUEkKKyFGaW5jbHVkZS9jcnlwdG8vYWVhZC5oIGNyeXB0b19hbGxvY19hZWFkCishRmluY2x1ZGUvY3J5cHRvL2FlYWQuaCBjcnlwdG9fZnJlZV9hZWFkCishRmluY2x1ZGUvY3J5cHRvL2FlYWQuaCBjcnlwdG9fYWVhZF9pdnNpemUKKyFGaW5jbHVkZS9jcnlwdG8vYWVhZC5oIGNyeXB0b19hZWFkX2F1dGhzaXplCishRmluY2x1ZGUvY3J5cHRvL2FlYWQuaCBjcnlwdG9fYWVhZF9ibG9ja3NpemUKKyFGaW5jbHVkZS9jcnlwdG8vYWVhZC5oIGNyeXB0b19hZWFkX3NldGtleQorIUZpbmNsdWRlL2NyeXB0by9hZWFkLmggY3J5cHRvX2FlYWRfc2V0YXV0aHNpemUKKyFGaW5jbHVkZS9jcnlwdG8vYWVhZC5oIGNyeXB0b19hZWFkX2VuY3J5cHQKKyFGaW5jbHVkZS9jcnlwdG8vYWVhZC5oIGNyeXB0b19hZWFkX2RlY3J5cHQKKyAgIDwvc2VjdDE+CisgICA8c2VjdDE+PHRpdGxlPkFzeW5jaHJvbm91cyBBRUFEIFJlcXVlc3QgSGFuZGxlPC90aXRsZT4KKyFQaW5jbHVkZS9jcnlwdG8vYWVhZC5oIEFzeW5jaHJvbm91cyBBRUFEIFJlcXVlc3QgSGFuZGxlCishRmluY2x1ZGUvY3J5cHRvL2FlYWQuaCBjcnlwdG9fYWVhZF9yZXFzaXplCishRmluY2x1ZGUvY3J5cHRvL2FlYWQuaCBhZWFkX3JlcXVlc3Rfc2V0X3RmbQorIUZpbmNsdWRlL2NyeXB0by9hZWFkLmggYWVhZF9yZXF1ZXN0X2FsbG9jCishRmluY2x1ZGUvY3J5cHRvL2FlYWQuaCBhZWFkX3JlcXVlc3RfZnJlZQorIUZpbmNsdWRlL2NyeXB0by9hZWFkLmggYWVhZF9yZXF1ZXN0X3NldF9jYWxsYmFjaworIUZpbmNsdWRlL2NyeXB0by9hZWFkLmggYWVhZF9yZXF1ZXN0X3NldF9jcnlwdAorIUZpbmNsdWRlL2NyeXB0by9hZWFkLmggYWVhZF9yZXF1ZXN0X3NldF9hc3NvYworIUZpbmNsdWRlL2NyeXB0by9hZWFkLmggYWVhZF9yZXF1ZXN0X3NldF9hZAorICAgPC9zZWN0MT4KKyAgIDxzZWN0MT48dGl0bGU+U3luY2hyb25vdXMgQmxvY2sgQ2lwaGVyIEFQSTwvdGl0bGU+CishUGluY2x1ZGUvbGludXgvY3J5cHRvLmggU3luY2hyb25vdXMgQmxvY2sgQ2lwaGVyIEFQSQorIUZpbmNsdWRlL2xpbnV4L2NyeXB0by5oIGNyeXB0b19hbGxvY19ibGtjaXBoZXIKKyFGaW5jbHVkZS9saW51eC9jcnlwdG8uaCBjcnlwdG9fZnJlZV9ibGtjaXBoZXIKKyFGaW5jbHVkZS9saW51eC9jcnlwdG8uaCBjcnlwdG9faGFzX2Jsa2NpcGhlcgorIUZpbmNsdWRlL2xpbnV4L2NyeXB0by5oIGNyeXB0b19ibGtjaXBoZXJfbmFtZQorIUZpbmNsdWRlL2xpbnV4L2NyeXB0by5oIGNyeXB0b19ibGtjaXBoZXJfaXZzaXplCishRmluY2x1ZGUvbGludXgvY3J5cHRvLmggY3J5cHRvX2Jsa2NpcGhlcl9ibG9ja3NpemUKKyFGaW5jbHVkZS9saW51eC9jcnlwdG8uaCBjcnlwdG9fYmxrY2lwaGVyX3NldGtleQorIUZpbmNsdWRlL2xpbnV4L2NyeXB0by5oIGNyeXB0b19ibGtjaXBoZXJfZW5jcnlwdAorIUZpbmNsdWRlL2xpbnV4L2NyeXB0by5oIGNyeXB0b19ibGtjaXBoZXJfZW5jcnlwdF9pdgorIUZpbmNsdWRlL2xpbnV4L2NyeXB0by5oIGNyeXB0b19ibGtjaXBoZXJfZGVjcnlwdAorIUZpbmNsdWRlL2xpbnV4L2NyeXB0by5oIGNyeXB0b19ibGtjaXBoZXJfZGVjcnlwdF9pdgorIUZpbmNsdWRlL2xpbnV4L2NyeXB0by5oIGNyeXB0b19ibGtjaXBoZXJfc2V0X2l2CishRmluY2x1ZGUvbGludXgvY3J5cHRvLmggY3J5cHRvX2Jsa2NpcGhlcl9nZXRfaXYKKyAgIDwvc2VjdDE+CisgICA8c2VjdDE+PHRpdGxlPlNpbmdsZSBCbG9jayBDaXBoZXIgQVBJPC90aXRsZT4KKyFQaW5jbHVkZS9saW51eC9jcnlwdG8uaCBTaW5nbGUgQmxvY2sgQ2lwaGVyIEFQSQorIUZpbmNsdWRlL2xpbnV4L2NyeXB0by5oIGNyeXB0b19hbGxvY19jaXBoZXIKKyFGaW5jbHVkZS9saW51eC9jcnlwdG8uaCBjcnlwdG9fZnJlZV9jaXBoZXIKKyFGaW5jbHVkZS9saW51eC9jcnlwdG8uaCBjcnlwdG9faGFzX2NpcGhlcgorIUZpbmNsdWRlL2xpbnV4L2NyeXB0by5oIGNyeXB0b19jaXBoZXJfYmxvY2tzaXplCishRmluY2x1ZGUvbGludXgvY3J5cHRvLmggY3J5cHRvX2NpcGhlcl9zZXRrZXkKKyFGaW5jbHVkZS9saW51eC9jcnlwdG8uaCBjcnlwdG9fY2lwaGVyX2VuY3J5cHRfb25lCishRmluY2x1ZGUvbGludXgvY3J5cHRvLmggY3J5cHRvX2NpcGhlcl9kZWNyeXB0X29uZQorICAgPC9zZWN0MT4KKyAgIDxzZWN0MT48dGl0bGU+U3luY2hyb25vdXMgTWVzc2FnZSBEaWdlc3QgQVBJPC90aXRsZT4KKyFQaW5jbHVkZS9saW51eC9jcnlwdG8uaCBTeW5jaHJvbm91cyBNZXNzYWdlIERpZ2VzdCBBUEkKKyFGaW5jbHVkZS9saW51eC9jcnlwdG8uaCBjcnlwdG9fYWxsb2NfaGFzaAorIUZpbmNsdWRlL2xpbnV4L2NyeXB0by5oIGNyeXB0b19mcmVlX2hhc2gKKyFGaW5jbHVkZS9saW51eC9jcnlwdG8uaCBjcnlwdG9faGFzX2hhc2gKKyFGaW5jbHVkZS9saW51eC9jcnlwdG8uaCBjcnlwdG9faGFzaF9ibG9ja3NpemUKKyFGaW5jbHVkZS9saW51eC9jcnlwdG8uaCBjcnlwdG9faGFzaF9kaWdlc3RzaXplCishRmluY2x1ZGUvbGludXgvY3J5cHRvLmggY3J5cHRvX2hhc2hfaW5pdAorIUZpbmNsdWRlL2xpbnV4L2NyeXB0by5oIGNyeXB0b19oYXNoX3VwZGF0ZQorIUZpbmNsdWRlL2xpbnV4L2NyeXB0by5oIGNyeXB0b19oYXNoX2ZpbmFsCishRmluY2x1ZGUvbGludXgvY3J5cHRvLmggY3J5cHRvX2hhc2hfZGlnZXN0CishRmluY2x1ZGUvbGludXgvY3J5cHRvLmggY3J5cHRvX2hhc2hfc2V0a2V5CisgICA8L3NlY3QxPgorICAgPHNlY3QxPjx0aXRsZT5NZXNzYWdlIERpZ2VzdCBBbGdvcml0aG0gRGVmaW5pdGlvbnM8L3RpdGxlPgorIVBpbmNsdWRlL2NyeXB0by9oYXNoLmggTWVzc2FnZSBEaWdlc3QgQWxnb3JpdGhtIERlZmluaXRpb25zCishRmluY2x1ZGUvY3J5cHRvL2hhc2guaCBoYXNoX2FsZ19jb21tb24KKyFGaW5jbHVkZS9jcnlwdG8vaGFzaC5oIGFoYXNoX2FsZworIUZpbmNsdWRlL2NyeXB0by9oYXNoLmggc2hhc2hfYWxnCisgICA8L3NlY3QxPgorICAgPHNlY3QxPjx0aXRsZT5Bc3luY2hyb25vdXMgTWVzc2FnZSBEaWdlc3QgQVBJPC90aXRsZT4KKyFQaW5jbHVkZS9jcnlwdG8vaGFzaC5oIEFzeW5jaHJvbm91cyBNZXNzYWdlIERpZ2VzdCBBUEkKKyFGaW5jbHVkZS9jcnlwdG8vaGFzaC5oIGNyeXB0b19hbGxvY19haGFzaAorIUZpbmNsdWRlL2NyeXB0by9oYXNoLmggY3J5cHRvX2ZyZWVfYWhhc2gKKyFGaW5jbHVkZS9jcnlwdG8vaGFzaC5oIGNyeXB0b19haGFzaF9pbml0CishRmluY2x1ZGUvY3J5cHRvL2hhc2guaCBjcnlwdG9fYWhhc2hfZGlnZXN0c2l6ZQorIUZpbmNsdWRlL2NyeXB0by9oYXNoLmggY3J5cHRvX2FoYXNoX3JlcXRmbQorIUZpbmNsdWRlL2NyeXB0by9oYXNoLmggY3J5cHRvX2FoYXNoX3JlcXNpemUKKyFGaW5jbHVkZS9jcnlwdG8vaGFzaC5oIGNyeXB0b19haGFzaF9zZXRrZXkKKyFGaW5jbHVkZS9jcnlwdG8vaGFzaC5oIGNyeXB0b19haGFzaF9maW51cAorIUZpbmNsdWRlL2NyeXB0by9oYXNoLmggY3J5cHRvX2FoYXNoX2ZpbmFsCishRmluY2x1ZGUvY3J5cHRvL2hhc2guaCBjcnlwdG9fYWhhc2hfZGlnZXN0CishRmluY2x1ZGUvY3J5cHRvL2hhc2guaCBjcnlwdG9fYWhhc2hfZXhwb3J0CishRmluY2x1ZGUvY3J5cHRvL2hhc2guaCBjcnlwdG9fYWhhc2hfaW1wb3J0CisgICA8L3NlY3QxPgorICAgPHNlY3QxPjx0aXRsZT5Bc3luY2hyb25vdXMgSGFzaCBSZXF1ZXN0IEhhbmRsZTwvdGl0bGU+CishUGluY2x1ZGUvY3J5cHRvL2hhc2guaCBBc3luY2hyb25vdXMgSGFzaCBSZXF1ZXN0IEhhbmRsZQorIUZpbmNsdWRlL2NyeXB0by9oYXNoLmggYWhhc2hfcmVxdWVzdF9zZXRfdGZtCishRmluY2x1ZGUvY3J5cHRvL2hhc2guaCBhaGFzaF9yZXF1ZXN0X2FsbG9jCishRmluY2x1ZGUvY3J5cHRvL2hhc2guaCBhaGFzaF9yZXF1ZXN0X2ZyZWUKKyFGaW5jbHVkZS9jcnlwdG8vaGFzaC5oIGFoYXNoX3JlcXVlc3Rfc2V0X2NhbGxiYWNrCishRmluY2x1ZGUvY3J5cHRvL2hhc2guaCBhaGFzaF9yZXF1ZXN0X3NldF9jcnlwdAorICAgPC9zZWN0MT4KKyAgIDxzZWN0MT48dGl0bGU+U3luY2hyb25vdXMgTWVzc2FnZSBEaWdlc3QgQVBJPC90aXRsZT4KKyFQaW5jbHVkZS9jcnlwdG8vaGFzaC5oIFN5bmNocm9ub3VzIE1lc3NhZ2UgRGlnZXN0IEFQSQorIUZpbmNsdWRlL2NyeXB0by9oYXNoLmggY3J5cHRvX2FsbG9jX3NoYXNoCishRmluY2x1ZGUvY3J5cHRvL2hhc2guaCBjcnlwdG9fZnJlZV9zaGFzaAorIUZpbmNsdWRlL2NyeXB0by9oYXNoLmggY3J5cHRvX3NoYXNoX2Jsb2Nrc2l6ZQorIUZpbmNsdWRlL2NyeXB0by9oYXNoLmggY3J5cHRvX3NoYXNoX2RpZ2VzdHNpemUKKyFGaW5jbHVkZS9jcnlwdG8vaGFzaC5oIGNyeXB0b19zaGFzaF9kZXNjc2l6ZQorIUZpbmNsdWRlL2NyeXB0by9oYXNoLmggY3J5cHRvX3NoYXNoX3NldGtleQorIUZpbmNsdWRlL2NyeXB0by9oYXNoLmggY3J5cHRvX3NoYXNoX2RpZ2VzdAorIUZpbmNsdWRlL2NyeXB0by9oYXNoLmggY3J5cHRvX3NoYXNoX2V4cG9ydAorIUZpbmNsdWRlL2NyeXB0by9oYXNoLmggY3J5cHRvX3NoYXNoX2ltcG9ydAorIUZpbmNsdWRlL2NyeXB0by9oYXNoLmggY3J5cHRvX3NoYXNoX2luaXQKKyFGaW5jbHVkZS9jcnlwdG8vaGFzaC5oIGNyeXB0b19zaGFzaF91cGRhdGUKKyFGaW5jbHVkZS9jcnlwdG8vaGFzaC5oIGNyeXB0b19zaGFzaF9maW5hbAorIUZpbmNsdWRlL2NyeXB0by9oYXNoLmggY3J5cHRvX3NoYXNoX2ZpbnVwCisgICA8L3NlY3QxPgorICAgPHNlY3QxPjx0aXRsZT5DcnlwdG8gQVBJIFJhbmRvbSBOdW1iZXIgQVBJPC90aXRsZT4KKyFQaW5jbHVkZS9jcnlwdG8vcm5nLmggUmFuZG9tIG51bWJlciBnZW5lcmF0b3IgQVBJCishRmluY2x1ZGUvY3J5cHRvL3JuZy5oIGNyeXB0b19hbGxvY19ybmcKKyFGaW5jbHVkZS9jcnlwdG8vcm5nLmggY3J5cHRvX3JuZ19hbGcKKyFGaW5jbHVkZS9jcnlwdG8vcm5nLmggY3J5cHRvX2ZyZWVfcm5nCishRmluY2x1ZGUvY3J5cHRvL3JuZy5oIGNyeXB0b19ybmdfZ2V0X2J5dGVzCishRmluY2x1ZGUvY3J5cHRvL3JuZy5oIGNyeXB0b19ybmdfcmVzZXQKKyFGaW5jbHVkZS9jcnlwdG8vcm5nLmggY3J5cHRvX3JuZ19zZWVkc2l6ZQorIUNpbmNsdWRlL2NyeXB0by9ybmcuaAorICAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJDb2RlIj48dGl0bGU+Q29kZSBFeGFtcGxlczwvdGl0bGU+CisgICA8c2VjdDE+PHRpdGxlPkNvZGUgRXhhbXBsZSBGb3IgQXN5bmNocm9ub3VzIEJsb2NrIENpcGhlciBPcGVyYXRpb248L3RpdGxlPgorICAgIDxwcm9ncmFtbGlzdGluZz4KKworc3RydWN0IHRjcnlwdF9yZXN1bHQgeworCXN0cnVjdCBjb21wbGV0aW9uIGNvbXBsZXRpb247CisJaW50IGVycjsKK307CisKKy8qIHRpZSBhbGwgZGF0YSBzdHJ1Y3R1cmVzIHRvZ2V0aGVyICovCitzdHJ1Y3QgYWJsa2NpcGhlcl9kZWYgeworCXN0cnVjdCBzY2F0dGVybGlzdCBzZzsKKwlzdHJ1Y3QgY3J5cHRvX2FibGtjaXBoZXIgKnRmbTsKKwlzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1ZXN0ICpyZXE7CisJc3RydWN0IHRjcnlwdF9yZXN1bHQgcmVzdWx0OworfTsKKworLyogQ2FsbGJhY2sgZnVuY3Rpb24gKi8KK3N0YXRpYyB2b2lkIHRlc3RfYWJsa2NpcGhlcl9jYihzdHJ1Y3QgY3J5cHRvX2FzeW5jX3JlcXVlc3QgKnJlcSwgaW50IGVycm9yKQoreworCXN0cnVjdCB0Y3J5cHRfcmVzdWx0ICpyZXN1bHQgPSByZXEtJmd0O2RhdGE7CisKKwlpZiAoZXJyb3IgPT0gLUVJTlBST0dSRVNTKQorCQlyZXR1cm47CisJcmVzdWx0LSZndDtlcnIgPSBlcnJvcjsKKwljb21wbGV0ZSgmYW1wO3Jlc3VsdC0mZ3Q7Y29tcGxldGlvbik7CisJcHJfaW5mbygiRW5jcnlwdGlvbiBmaW5pc2hlZCBzdWNjZXNzZnVsbHlcbiIpOworfQorCisvKiBQZXJmb3JtIGNpcGhlciBvcGVyYXRpb24gKi8KK3N0YXRpYyB1bnNpZ25lZCBpbnQgdGVzdF9hYmxrY2lwaGVyX2VuY2RlYyhzdHJ1Y3QgYWJsa2NpcGhlcl9kZWYgKmFibGssCisJCQkJCSAgIGludCBlbmMpCit7CisJaW50IHJjID0gMDsKKworCWlmIChlbmMpCisJCXJjID0gY3J5cHRvX2FibGtjaXBoZXJfZW5jcnlwdChhYmxrLSZndDtyZXEpOworCWVsc2UKKwkJcmMgPSBjcnlwdG9fYWJsa2NpcGhlcl9kZWNyeXB0KGFibGstJmd0O3JlcSk7CisKKwlzd2l0Y2ggKHJjKSB7CisJY2FzZSAwOgorCQlicmVhazsKKwljYXNlIC1FSU5QUk9HUkVTUzoKKwljYXNlIC1FQlVTWToKKwkJcmMgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGUoCisJCQkmYW1wO2FibGstJmd0O3Jlc3VsdC5jb21wbGV0aW9uKTsKKwkJaWYgKCFyYyAmYW1wOyZhbXA7ICFhYmxrLSZndDtyZXN1bHQuZXJyKSB7CisJCQlyZWluaXRfY29tcGxldGlvbigmYW1wO2FibGstJmd0O3Jlc3VsdC5jb21wbGV0aW9uKTsKKwkJCWJyZWFrOworCQl9CisJZGVmYXVsdDoKKwkJcHJfaW5mbygiYWJsa2NpcGhlciBlbmNyeXB0IHJldHVybmVkIHdpdGggJWQgcmVzdWx0ICVkXG4iLAorCQkgICAgICAgcmMsIGFibGstJmd0O3Jlc3VsdC5lcnIpOworCQlicmVhazsKKwl9CisJaW5pdF9jb21wbGV0aW9uKCZhbXA7YWJsay0mZ3Q7cmVzdWx0LmNvbXBsZXRpb24pOworCisJcmV0dXJuIHJjOworfQorCisvKiBJbml0aWFsaXplIGFuZCB0cmlnZ2VyIGNpcGhlciBvcGVyYXRpb24gKi8KK3N0YXRpYyBpbnQgdGVzdF9hYmxrY2lwaGVyKHZvaWQpCit7CisJc3RydWN0IGFibGtjaXBoZXJfZGVmIGFibGs7CisJc3RydWN0IGNyeXB0b19hYmxrY2lwaGVyICphYmxrY2lwaGVyID0gTlVMTDsKKwlzdHJ1Y3QgYWJsa2NpcGhlcl9yZXF1ZXN0ICpyZXEgPSBOVUxMOworCWNoYXIgKnNjcmF0Y2hwYWQgPSBOVUxMOworCWNoYXIgKml2ZGF0YSA9IE5VTEw7CisJdW5zaWduZWQgY2hhciBrZXlbMzJdOworCWludCByZXQgPSAtRUZBVUxUOworCisJYWJsa2NpcGhlciA9IGNyeXB0b19hbGxvY19hYmxrY2lwaGVyKCJjYmMtYWVzLWFlc25pIiwgMCwgMCk7CisJaWYgKElTX0VSUihhYmxrY2lwaGVyKSkgeworCQlwcl9pbmZvKCJjb3VsZCBub3QgYWxsb2NhdGUgYWJsa2NpcGhlciBoYW5kbGVcbiIpOworCQlyZXR1cm4gUFRSX0VSUihhYmxrY2lwaGVyKTsKKwl9CisKKwlyZXEgPSBhYmxrY2lwaGVyX3JlcXVlc3RfYWxsb2MoYWJsa2NpcGhlciwgR0ZQX0tFUk5FTCk7CisJaWYgKElTX0VSUihyZXEpKSB7CisJCXByX2luZm8oImNvdWxkIG5vdCBhbGxvY2F0ZSByZXF1ZXN0IHF1ZXVlXG4iKTsKKwkJcmV0ID0gUFRSX0VSUihyZXEpOworCQlnb3RvIG91dDsKKwl9CisKKwlhYmxrY2lwaGVyX3JlcXVlc3Rfc2V0X2NhbGxiYWNrKHJlcSwgQ1JZUFRPX1RGTV9SRVFfTUFZX0JBQ0tMT0csCisJCQkJCXRlc3RfYWJsa2NpcGhlcl9jYiwKKwkJCQkJJmFtcDthYmxrLnJlc3VsdCk7CisKKwkvKiBBRVMgMjU2IHdpdGggcmFuZG9tIGtleSAqLworCWdldF9yYW5kb21fYnl0ZXMoJmFtcDtrZXksIDMyKTsKKwlpZiAoY3J5cHRvX2FibGtjaXBoZXJfc2V0a2V5KGFibGtjaXBoZXIsIGtleSwgMzIpKSB7CisJCXByX2luZm8oImtleSBjb3VsZCBub3QgYmUgc2V0XG4iKTsKKwkJcmV0ID0gLUVBR0FJTjsKKwkJZ290byBvdXQ7CisJfQorCisJLyogSVYgd2lsbCBiZSByYW5kb20gKi8KKwlpdmRhdGEgPSBrbWFsbG9jKDE2LCBHRlBfS0VSTkVMKTsKKwlpZiAoIWl2ZGF0YSkgeworCQlwcl9pbmZvKCJjb3VsZCBub3QgYWxsb2NhdGUgaXZkYXRhXG4iKTsKKwkJZ290byBvdXQ7CisJfQorCWdldF9yYW5kb21fYnl0ZXMoaXZkYXRhLCAxNik7CisKKwkvKiBJbnB1dCBkYXRhIHdpbGwgYmUgcmFuZG9tICovCisJc2NyYXRjaHBhZCA9IGttYWxsb2MoMTYsIEdGUF9LRVJORUwpOworCWlmICghc2NyYXRjaHBhZCkgeworCQlwcl9pbmZvKCJjb3VsZCBub3QgYWxsb2NhdGUgc2NyYXRjaHBhZFxuIik7CisJCWdvdG8gb3V0OworCX0KKwlnZXRfcmFuZG9tX2J5dGVzKHNjcmF0Y2hwYWQsIDE2KTsKKworCWFibGsudGZtID0gYWJsa2NpcGhlcjsKKwlhYmxrLnJlcSA9IHJlcTsKKworCS8qIFdlIGVuY3J5cHQgb25lIGJsb2NrICovCisJc2dfaW5pdF9vbmUoJmFtcDthYmxrLnNnLCBzY3JhdGNocGFkLCAxNik7CisJYWJsa2NpcGhlcl9yZXF1ZXN0X3NldF9jcnlwdChyZXEsICZhbXA7YWJsay5zZywgJmFtcDthYmxrLnNnLCAxNiwgaXZkYXRhKTsKKwlpbml0X2NvbXBsZXRpb24oJmFtcDthYmxrLnJlc3VsdC5jb21wbGV0aW9uKTsKKworCS8qIGVuY3J5cHQgZGF0YSAqLworCXJldCA9IHRlc3RfYWJsa2NpcGhlcl9lbmNkZWMoJmFtcDthYmxrLCAxKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDsKKworCXByX2luZm8oIkVuY3J5cHRpb24gdHJpZ2dlcmVkIHN1Y2Nlc3NmdWxseVxuIik7CisKK291dDoKKwlpZiAoYWJsa2NpcGhlcikKKwkJY3J5cHRvX2ZyZWVfYWJsa2NpcGhlcihhYmxrY2lwaGVyKTsKKwlpZiAocmVxKQorCQlhYmxrY2lwaGVyX3JlcXVlc3RfZnJlZShyZXEpOworCWlmIChpdmRhdGEpCisJCWtmcmVlKGl2ZGF0YSk7CisJaWYgKHNjcmF0Y2hwYWQpCisJCWtmcmVlKHNjcmF0Y2hwYWQpOworCXJldHVybiByZXQ7Cit9CisgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgIDwvc2VjdDE+CisKKyAgIDxzZWN0MT48dGl0bGU+Q29kZSBFeGFtcGxlIEZvciBTeW5jaHJvbm91cyBCbG9jayBDaXBoZXIgT3BlcmF0aW9uPC90aXRsZT4KKyAgICA8cHJvZ3JhbWxpc3Rpbmc+CisKK3N0YXRpYyBpbnQgdGVzdF9ibGtjaXBoZXIodm9pZCkKK3sKKwlzdHJ1Y3QgY3J5cHRvX2Jsa2NpcGhlciAqYmxrY2lwaGVyID0gTlVMTDsKKwljaGFyICpjaXBoZXIgPSAiY2JjKGFlcykiOworCS8vIEFFUyAxMjgKKwljaGFya2V5ID0KKyJceDEyXHgzNFx4NTZceDc4XHg5MFx4YWJceGNkXHhlZlx4MTJceDM0XHg1Nlx4NzhceDkwXHhhYlx4Y2RceGVmIjsKKwljaGFyaXYgPQorIlx4MTJceDM0XHg1Nlx4NzhceDkwXHhhYlx4Y2RceGVmXHgxMlx4MzRceDU2XHg3OFx4OTBceGFiXHhjZFx4ZWYiOworCXVuc2lnbmVkIGludCBpdnNpemUgPSAwOworCWNoYXIgKnNjcmF0Y2hwYWQgPSBOVUxMOyAvLyBob2xkcyBwbGFpbnRleHQgYW5kIGNpcGhlcnRleHQKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3Qgc2c7CisJc3RydWN0IGJsa2NpcGhlcl9kZXNjIGRlc2M7CisJaW50IHJldCA9IC1FRkFVTFQ7CisKKwlibGtjaXBoZXIgPSBjcnlwdG9fYWxsb2NfYmxrY2lwaGVyKGNpcGhlciwgMCwgMCk7CisJaWYgKElTX0VSUihibGtjaXBoZXIpKSB7CisJCXByaW50aygiY291bGQgbm90IGFsbG9jYXRlIGJsa2NpcGhlciBoYW5kbGUgZm9yICVzXG4iLCBjaXBoZXIpOworCQlyZXR1cm4gLVBUUl9FUlIoYmxrY2lwaGVyKTsKKwl9CisKKwlpZiAoY3J5cHRvX2Jsa2NpcGhlcl9zZXRrZXkoYmxrY2lwaGVyLCBrZXksIHN0cmxlbihrZXkpKSkgeworCQlwcmludGsoImtleSBjb3VsZCBub3QgYmUgc2V0XG4iKTsKKwkJcmV0ID0gLUVBR0FJTjsKKwkJZ290byBvdXQ7CisJfQorCisJaXZzaXplID0gY3J5cHRvX2Jsa2NpcGhlcl9pdnNpemUoYmxrY2lwaGVyKTsKKwlpZiAoaXZzaXplKSB7CisJCWlmIChpdnNpemUgIT0gc3RybGVuKGl2KSkKKwkJCXByaW50aygiSVYgbGVuZ3RoIGRpZmZlcnMgZnJvbSBleHBlY3RlZCBsZW5ndGhcbiIpOworCQljcnlwdG9fYmxrY2lwaGVyX3NldF9pdihibGtjaXBoZXIsIGl2LCBpdnNpemUpOworCX0KKworCXNjcmF0Y2hwYWQgPSBrbWFsbG9jKGNyeXB0b19ibGtjaXBoZXJfYmxvY2tzaXplKGJsa2NpcGhlciksIEdGUF9LRVJORUwpOworCWlmICghc2NyYXRjaHBhZCkgeworCQlwcmludGsoImNvdWxkIG5vdCBhbGxvY2F0ZSBzY3JhdGNocGFkIGZvciAlc1xuIiwgY2lwaGVyKTsKKwkJZ290byBvdXQ7CisJfQorCS8qIGdldCBzb21lIHJhbmRvbSBkYXRhIHRoYXQgd2Ugd2FudCB0byBlbmNyeXB0ICovCisJZ2V0X3JhbmRvbV9ieXRlcyhzY3JhdGNocGFkLCBjcnlwdG9fYmxrY2lwaGVyX2Jsb2Nrc2l6ZShibGtjaXBoZXIpKTsKKworCWRlc2MuZmxhZ3MgPSAwOworCWRlc2MudGZtID0gYmxrY2lwaGVyOworCXNnX2luaXRfb25lKCZhbXA7c2csIHNjcmF0Y2hwYWQsIGNyeXB0b19ibGtjaXBoZXJfYmxvY2tzaXplKGJsa2NpcGhlcikpOworCisJLyogZW5jcnlwdCBkYXRhIGluIHBsYWNlICovCisJY3J5cHRvX2Jsa2NpcGhlcl9lbmNyeXB0KCZhbXA7ZGVzYywgJmFtcDtzZywgJmFtcDtzZywKKwkJCQkgY3J5cHRvX2Jsa2NpcGhlcl9ibG9ja3NpemUoYmxrY2lwaGVyKSk7CisKKwkvKiBkZWNyeXB0IGRhdGEgaW4gcGxhY2UKKwkgKiBjcnlwdG9fYmxrY2lwaGVyX2RlY3J5cHQoJmFtcDtkZXNjLCAmYW1wO3NnLCAmYW1wO3NnLAorCSAqLwkJCSBjcnlwdG9fYmxrY2lwaGVyX2Jsb2Nrc2l6ZShibGtjaXBoZXIpKTsKKworCisJcHJpbnRrKCJDaXBoZXIgb3BlcmF0aW9uIGNvbXBsZXRlZFxuIik7CisJcmV0dXJuIDA7CisKK291dDoKKwlpZiAoYmxrY2lwaGVyKQorCQljcnlwdG9fZnJlZV9ibGtjaXBoZXIoYmxrY2lwaGVyKTsKKwlpZiAoc2NyYXRjaHBhZCkKKwkJa3pmcmVlKHNjcmF0Y2hwYWQpOworCXJldHVybiByZXQ7Cit9CisgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgIDwvc2VjdDE+CisKKyAgIDxzZWN0MT48dGl0bGU+Q29kZSBFeGFtcGxlIEZvciBVc2Ugb2YgT3BlcmF0aW9uYWwgU3RhdGUgTWVtb3J5IFdpdGggU0hBU0g8L3RpdGxlPgorICAgIDxwcm9ncmFtbGlzdGluZz4KKworc3RydWN0IHNkZXNjIHsKKwlzdHJ1Y3Qgc2hhc2hfZGVzYyBzaGFzaDsKKwljaGFyIGN0eFtdOworfTsKKworc3RhdGljIHN0cnVjdCBzZGVzY2luaXRfc2Rlc2Moc3RydWN0IGNyeXB0b19zaGFzaCAqYWxnKQoreworCXN0cnVjdCBzZGVzY3NkZXNjOworCWludCBzaXplOworCisJc2l6ZSA9IHNpemVvZihzdHJ1Y3Qgc2hhc2hfZGVzYykgKyBjcnlwdG9fc2hhc2hfZGVzY3NpemUoYWxnKTsKKwlzZGVzYyA9IGttYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFzZGVzYykKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisJc2Rlc2MtJmd0O3NoYXNoLnRmbSA9IGFsZzsKKwlzZGVzYy0mZ3Q7c2hhc2guZmxhZ3MgPSAweDA7CisJcmV0dXJuIHNkZXNjOworfQorCitzdGF0aWMgaW50IGNhbGNfaGFzaChzdHJ1Y3QgY3J5cHRvX3NoYXNoYWxnLAorCQkgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXJkYXRhLCB1bnNpZ25lZCBpbnQgZGF0YWxlbiwKKwkJICAgICB1bnNpZ25lZCBjaGFyZGlnZXN0KSB7CisJc3RydWN0IHNkZXNjc2Rlc2M7CisJaW50IHJldDsKKworCXNkZXNjID0gaW5pdF9zZGVzYyhhbGcpOworCWlmIChJU19FUlIoc2Rlc2MpKSB7CisJCXByX2luZm8oInRydXN0ZWRfa2V5OiBjYW4ndCBhbGxvYyAlc1xuIiwgaGFzaF9hbGcpOworCQlyZXR1cm4gUFRSX0VSUihzZGVzYyk7CisJfQorCisJcmV0ID0gY3J5cHRvX3NoYXNoX2RpZ2VzdCgmYW1wO3NkZXNjLSZndDtzaGFzaCwgZGF0YSwgZGF0YWxlbiwgZGlnZXN0KTsKKwlrZnJlZShzZGVzYyk7CisJcmV0dXJuIHJldDsKK30KKyAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgPC9zZWN0MT4KKworICAgPHNlY3QxPjx0aXRsZT5Db2RlIEV4YW1wbGUgRm9yIFJhbmRvbSBOdW1iZXIgR2VuZXJhdG9yIFVzYWdlPC90aXRsZT4KKyAgICA8cHJvZ3JhbWxpc3Rpbmc+CisKK3N0YXRpYyBpbnQgZ2V0X3JhbmRvbV9udW1iZXJzKHU4ICpidWYsIHVuc2lnbmVkIGludCBsZW4pCit7CisJc3RydWN0IGNyeXB0b19ybmdybmcgPSBOVUxMOworCWNoYXJkcmJnID0gImRyYmdfbm9wcl9zaGEyNTYiOyAvKiBIYXNoIERSQkcgd2l0aCBTSEEtMjU2LCBubyBQUiAqLworCWludCByZXQ7CisKKwlpZiAoIWJ1ZiB8fCAhbGVuKSB7CisJCXByX2RlYnVnKCJObyBvdXRwdXQgYnVmZmVyIHByb3ZpZGVkXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcm5nID0gY3J5cHRvX2FsbG9jX3JuZyhkcmJnLCAwLCAwKTsKKwlpZiAoSVNfRVJSKHJuZykpIHsKKwkJcHJfZGVidWcoImNvdWxkIG5vdCBhbGxvY2F0ZSBSTkcgaGFuZGxlIGZvciAlc1xuIiwgZHJiZyk7CisJCXJldHVybiAtUFRSX0VSUihybmcpOworCX0KKworCXJldCA9IGNyeXB0b19ybmdfZ2V0X2J5dGVzKHJuZywgYnVmLCBsZW4pOworCWlmIChyZXQgJmx0OyAwKQorCQlwcl9kZWJ1ZygiZ2VuZXJhdGlvbiBvZiByYW5kb20gbnVtYmVycyBmYWlsZWRcbiIpOworCWVsc2UgaWYgKHJldCA9PSAwKQorCQlwcl9kZWJ1ZygiUk5HIHJldHVybmVkIG5vIGRhdGEiKTsKKwllbHNlCisJCXByX2RlYnVnKCJSTkcgcmV0dXJuZWQgJWQgYnl0ZXMgb2YgZGF0YVxuIiwgcmV0KTsKKworb3V0OgorCWNyeXB0b19mcmVlX3JuZyhybmcpOworCXJldHVybiByZXQ7Cit9CisgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKyA8L2Jvb2s+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZGVidWdvYmplY3RzLnRtcGwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZGVidWdvYmplY3RzLnRtcGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ5NzlmNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9kZWJ1Z29iamVjdHMudG1wbApAQCAtMCwwICsxLDQ0MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4xLjIvL0VOIgorCSJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMS4yL2RvY2Jvb2t4LmR0ZCIgW10+CisKKzxib29rIGlkPSJkZWJ1Zy1vYmplY3RzLWd1aWRlIj4KKyA8Ym9va2luZm8+CisgIDx0aXRsZT5EZWJ1ZyBvYmplY3RzIGxpZmUgdGltZTwvdGl0bGU+CisKKyAgPGF1dGhvcmdyb3VwPgorICAgPGF1dGhvcj4KKyAgICA8Zmlyc3RuYW1lPlRob21hczwvZmlyc3RuYW1lPgorICAgIDxzdXJuYW1lPkdsZWl4bmVyPC9zdXJuYW1lPgorICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgPGFkZHJlc3M+CisgICAgICA8ZW1haWw+dGdseEBsaW51dHJvbml4LmRlPC9lbWFpbD4KKyAgICAgPC9hZGRyZXNzPgorICAgIDwvYWZmaWxpYXRpb24+CisgICA8L2F1dGhvcj4KKyAgPC9hdXRob3Jncm91cD4KKworICA8Y29weXJpZ2h0PgorICAgPHllYXI+MjAwODwveWVhcj4KKyAgIDxob2xkZXI+VGhvbWFzIEdsZWl4bmVyPC9ob2xkZXI+CisgIDwvY29weXJpZ2h0PgorCisgIDxsZWdhbG5vdGljZT4KKyAgIDxwYXJhPgorICAgICBUaGlzIGRvY3VtZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUKKyAgICAgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICAgICBMaWNlbnNlIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKyAgICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAorICAgICB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisgICAgIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICAgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgICAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgICAgIE1BIDAyMTExLTEzMDcgVVNBCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgICBGb3IgbW9yZSBkZXRhaWxzIHNlZSB0aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBzb3VyY2UKKyAgICAgZGlzdHJpYnV0aW9uIG9mIExpbnV4LgorICAgPC9wYXJhPgorICA8L2xlZ2Fsbm90aWNlPgorIDwvYm9va2luZm8+CisKKzx0b2M+PC90b2M+CisKKyAgPGNoYXB0ZXIgaWQ9ImludHJvIj4KKyAgICA8dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIGRlYnVnb2JqZWN0cyBpcyBhIGdlbmVyaWMgaW5mcmFzdHJ1Y3R1cmUgdG8gdHJhY2sgdGhlIGxpZmUgdGltZQorICAgICAgb2Yga2VybmVsIG9iamVjdHMgYW5kIHZhbGlkYXRlIHRoZSBvcGVyYXRpb25zIG9uIHRob3NlLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIGRlYnVnb2JqZWN0cyBpcyB1c2VmdWwgdG8gY2hlY2sgZm9yIHRoZSBmb2xsb3dpbmcgZXJyb3IgcGF0dGVybnM6CisJPGl0ZW1pemVkbGlzdD4KKwkgIDxsaXN0aXRlbT48cGFyYT5BY3RpdmF0aW9uIG9mIHVuaW5pdGlhbGl6ZWQgb2JqZWN0czwvcGFyYT48L2xpc3RpdGVtPgorCSAgPGxpc3RpdGVtPjxwYXJhPkluaXRpYWxpemF0aW9uIG9mIGFjdGl2ZSBvYmplY3RzPC9wYXJhPjwvbGlzdGl0ZW0+CisJICA8bGlzdGl0ZW0+PHBhcmE+VXNhZ2Ugb2YgZnJlZWQvZGVzdHJveWVkIG9iamVjdHM8L3BhcmE+PC9saXN0aXRlbT4KKwk8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBkZWJ1Z29iamVjdHMgaXMgbm90IGNoYW5naW5nIHRoZSBkYXRhIHN0cnVjdHVyZSBvZiB0aGUgcmVhbAorICAgICAgb2JqZWN0IHNvIGl0IGNhbiBiZSBjb21waWxlZCBpbiB3aXRoIGEgbWluaW1hbCBydW50aW1lIGltcGFjdAorICAgICAgYW5kIGVuYWJsZWQgb24gZGVtYW5kIHdpdGggYSBrZXJuZWwgY29tbWFuZCBsaW5lIG9wdGlvbi4KKyAgICA8L3BhcmE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iaG93dG8iPgorICAgIDx0aXRsZT5Ib3d0byB1c2UgZGVidWdvYmplY3RzPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIEEga2VybmVsIHN1YnN5c3RlbSBuZWVkcyB0byBwcm92aWRlIGEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2gKKyAgICAgIGRlc2NyaWJlcyB0aGUgb2JqZWN0IHR5cGUgYW5kIGFkZCBjYWxscyBpbnRvIHRoZSBkZWJ1ZyBjb2RlIGF0CisgICAgICBhcHByb3ByaWF0ZSBwbGFjZXMuIFRoZSBkYXRhIHN0cnVjdHVyZSB0byBkZXNjcmliZSB0aGUgb2JqZWN0CisgICAgICB0eXBlIG5lZWRzIGF0IG1pbmltdW0gdGhlIG5hbWUgb2YgdGhlIG9iamVjdCB0eXBlLiBPcHRpb25hbAorICAgICAgZnVuY3Rpb25zIGNhbiBhbmQgc2hvdWxkIGJlIHByb3ZpZGVkIHRvIGZpeHVwIGRldGVjdGVkIHByb2JsZW1zCisgICAgICBzbyB0aGUga2VybmVsIGNhbiBjb250aW51ZSB0byB3b3JrIGFuZCB0aGUgZGVidWcgaW5mb3JtYXRpb24gY2FuCisgICAgICBiZSByZXRyaWV2ZWQgZnJvbSBhIGxpdmUgc3lzdGVtIGluc3RlYWQgb2YgaGFyZCBjb3JlIGRlYnVnZ2luZworICAgICAgd2l0aCBzZXJpYWwgY29uc29sZXMgYW5kIHN0YWNrIHRyYWNlIHRyYW5zY3JpcHRzIGZyb20gdGhlCisgICAgICBtb25pdG9yLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIFRoZSBkZWJ1ZyBjYWxscyBwcm92aWRlZCBieSBkZWJ1Z29iamVjdHMgYXJlOgorICAgICAgPGl0ZW1pemVkbGlzdD4KKwk8bGlzdGl0ZW0+PHBhcmE+ZGVidWdfb2JqZWN0X2luaXQ8L3BhcmE+PC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+PHBhcmE+ZGVidWdfb2JqZWN0X2luaXRfb25fc3RhY2s8L3BhcmE+PC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+PHBhcmE+ZGVidWdfb2JqZWN0X2FjdGl2YXRlPC9wYXJhPjwvbGlzdGl0ZW0+CisJPGxpc3RpdGVtPjxwYXJhPmRlYnVnX29iamVjdF9kZWFjdGl2YXRlPC9wYXJhPjwvbGlzdGl0ZW0+CisJPGxpc3RpdGVtPjxwYXJhPmRlYnVnX29iamVjdF9kZXN0cm95PC9wYXJhPjwvbGlzdGl0ZW0+CisJPGxpc3RpdGVtPjxwYXJhPmRlYnVnX29iamVjdF9mcmVlPC9wYXJhPjwvbGlzdGl0ZW0+CisJPGxpc3RpdGVtPjxwYXJhPmRlYnVnX29iamVjdF9hc3NlcnRfaW5pdDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICBFYWNoIG9mIHRoZXNlIGZ1bmN0aW9ucyB0YWtlcyB0aGUgYWRkcmVzcyBvZiB0aGUgcmVhbCBvYmplY3QgYW5kCisgICAgICBhIHBvaW50ZXIgdG8gdGhlIG9iamVjdCB0eXBlIHNwZWNpZmljIGRlYnVnIGRlc2NyaXB0aW9uCisgICAgICBzdHJ1Y3R1cmUuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgRWFjaCBkZXRlY3RlZCBlcnJvciBpcyByZXBvcnRlZCBpbiB0aGUgc3RhdGlzdGljcyBhbmQgYSBsaW1pdGVkCisgICAgICBudW1iZXIgb2YgZXJyb3JzIGFyZSBwcmludGsnZWQgaW5jbHVkaW5nIGEgZnVsbCBzdGFjayB0cmFjZS4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBUaGUgc3RhdGlzdGljcyBhcmUgYXZhaWxhYmxlIHZpYSAvc3lzL2tlcm5lbC9kZWJ1Zy9kZWJ1Z19vYmplY3RzL3N0YXRzLgorICAgICAgVGhleSBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBudW1iZXIgb2Ygd2FybmluZ3MgYW5kIHRoZQorICAgICAgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgZml4dXBzIGFsb25nIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlCisgICAgICB1c2FnZSBvZiB0aGUgaW50ZXJuYWwgdHJhY2tpbmcgb2JqZWN0cyBhbmQgdGhlIHN0YXRlIG9mIHRoZQorICAgICAgaW50ZXJuYWwgdHJhY2tpbmcgb2JqZWN0cyBwb29sLgorICAgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorICA8Y2hhcHRlciBpZD0iZGVidWdmdW5jdGlvbnMiPgorICAgIDx0aXRsZT5EZWJ1ZyBmdW5jdGlvbnM8L3RpdGxlPgorICAgIDxzZWN0MSBpZD0icHJvdG90eXBlcyI+CisgICAgICA8dGl0bGU+RGVidWcgb2JqZWN0IGZ1bmN0aW9uIHJlZmVyZW5jZTwvdGl0bGU+CishRWxpYi9kZWJ1Z29iamVjdHMuYworICAgIDwvc2VjdDE+CisgICAgPHNlY3QxIGlkPSJkZWJ1Z19vYmplY3RfaW5pdCI+CisgICAgICA8dGl0bGU+ZGVidWdfb2JqZWN0X2luaXQ8L3RpdGxlPgorICAgICAgPHBhcmE+CisJVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbmV2ZXIgdGhlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uCisJb2YgYSByZWFsIG9iamVjdCBpcyBjYWxsZWQuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKwlXaGVuIHRoZSByZWFsIG9iamVjdCBpcyBhbHJlYWR5IHRyYWNrZWQgYnkgZGVidWdvYmplY3RzIGl0IGlzCisJY2hlY2tlZCwgd2hldGhlciB0aGUgb2JqZWN0IGNhbiBiZSBpbml0aWFsaXplZC4gIEluaXRpYWxpemluZworCWlzIG5vdCBhbGxvd2VkIGZvciBhY3RpdmUgYW5kIGRlc3Ryb3llZCBvYmplY3RzLiBXaGVuCisJZGVidWdvYmplY3RzIGRldGVjdHMgYW4gZXJyb3IsIHRoZW4gaXQgY2FsbHMgdGhlIGZpeHVwX2luaXQKKwlmdW5jdGlvbiBvZiB0aGUgb2JqZWN0IHR5cGUgZGVzY3JpcHRpb24gc3RydWN0dXJlIGlmIHByb3ZpZGVkCisJYnkgdGhlIGNhbGxlci4gVGhlIGZpeHVwIGZ1bmN0aW9uIGNhbiBjb3JyZWN0IHRoZSBwcm9ibGVtCisJYmVmb3JlIHRoZSByZWFsIGluaXRpYWxpemF0aW9uIG9mIHRoZSBvYmplY3QgaGFwcGVucy4gRS5nLiBpdAorCWNhbiBkZWFjdGl2YXRlIGFuIGFjdGl2ZSBvYmplY3QgaW4gb3JkZXIgdG8gcHJldmVudCBkYW1hZ2UgdG8KKwl0aGUgc3Vic3lzdGVtLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisJV2hlbiB0aGUgcmVhbCBvYmplY3QgaXMgbm90IHlldCB0cmFja2VkIGJ5IGRlYnVnb2JqZWN0cywKKwlkZWJ1Z29iamVjdHMgYWxsb2NhdGVzIGEgdHJhY2tlciBvYmplY3QgZm9yIHRoZSByZWFsIG9iamVjdAorCWFuZCBzZXRzIHRoZSB0cmFja2VyIG9iamVjdCBzdGF0ZSB0byBPREVCVUdfU1RBVEVfSU5JVC4gSXQKKwl2ZXJpZmllcyB0aGF0IHRoZSBvYmplY3QgaXMgbm90IG9uIHRoZSBjYWxsZXJzIHN0YWNrLiBJZiBpdCBpcworCW9uIHRoZSBjYWxsZXJzIHN0YWNrIHRoZW4gYSBsaW1pdGVkIG51bWJlciBvZiB3YXJuaW5ncworCWluY2x1ZGluZyBhIGZ1bGwgc3RhY2sgdHJhY2UgaXMgcHJpbnRrJ2VkLiBUaGUgY2FsbGluZyBjb2RlCisJbXVzdCB1c2UgZGVidWdfb2JqZWN0X2luaXRfb25fc3RhY2soKSBhbmQgcmVtb3ZlIHRoZSBvYmplY3QKKwliZWZvcmUgbGVhdmluZyB0aGUgZnVuY3Rpb24gd2hpY2ggYWxsb2NhdGVkIGl0LiBTZWUgbmV4dAorCXNlY3Rpb24uCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0MT4KKworICAgIDxzZWN0MSBpZD0iZGVidWdfb2JqZWN0X2luaXRfb25fc3RhY2siPgorICAgICAgPHRpdGxlPmRlYnVnX29iamVjdF9pbml0X29uX3N0YWNrPC90aXRsZT4KKyAgICAgIDxwYXJhPgorCVRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbgorCW9mIGEgcmVhbCBvYmplY3Qgd2hpY2ggcmVzaWRlcyBvbiB0aGUgc3RhY2sgaXMgY2FsbGVkLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisJV2hlbiB0aGUgcmVhbCBvYmplY3QgaXMgYWxyZWFkeSB0cmFja2VkIGJ5IGRlYnVnb2JqZWN0cyBpdCBpcworCWNoZWNrZWQsIHdoZXRoZXIgdGhlIG9iamVjdCBjYW4gYmUgaW5pdGlhbGl6ZWQuIEluaXRpYWxpemluZworCWlzIG5vdCBhbGxvd2VkIGZvciBhY3RpdmUgYW5kIGRlc3Ryb3llZCBvYmplY3RzLiBXaGVuCisJZGVidWdvYmplY3RzIGRldGVjdHMgYW4gZXJyb3IsIHRoZW4gaXQgY2FsbHMgdGhlIGZpeHVwX2luaXQKKwlmdW5jdGlvbiBvZiB0aGUgb2JqZWN0IHR5cGUgZGVzY3JpcHRpb24gc3RydWN0dXJlIGlmIHByb3ZpZGVkCisJYnkgdGhlIGNhbGxlci4gVGhlIGZpeHVwIGZ1bmN0aW9uIGNhbiBjb3JyZWN0IHRoZSBwcm9ibGVtCisJYmVmb3JlIHRoZSByZWFsIGluaXRpYWxpemF0aW9uIG9mIHRoZSBvYmplY3QgaGFwcGVucy4gRS5nLiBpdAorCWNhbiBkZWFjdGl2YXRlIGFuIGFjdGl2ZSBvYmplY3QgaW4gb3JkZXIgdG8gcHJldmVudCBkYW1hZ2UgdG8KKwl0aGUgc3Vic3lzdGVtLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisJV2hlbiB0aGUgcmVhbCBvYmplY3QgaXMgbm90IHlldCB0cmFja2VkIGJ5IGRlYnVnb2JqZWN0cworCWRlYnVnb2JqZWN0cyBhbGxvY2F0ZXMgYSB0cmFja2VyIG9iamVjdCBmb3IgdGhlIHJlYWwgb2JqZWN0CisJYW5kIHNldHMgdGhlIHRyYWNrZXIgb2JqZWN0IHN0YXRlIHRvIE9ERUJVR19TVEFURV9JTklULiBJdAorCXZlcmlmaWVzIHRoYXQgdGhlIG9iamVjdCBpcyBvbiB0aGUgY2FsbGVycyBzdGFjay4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorCUFuIG9iamVjdCB3aGljaCBpcyBvbiB0aGUgc3RhY2sgbXVzdCBiZSByZW1vdmVkIGZyb20gdGhlCisJdHJhY2tlciBieSBjYWxsaW5nIGRlYnVnX29iamVjdF9mcmVlKCkgYmVmb3JlIHRoZSBmdW5jdGlvbgorCXdoaWNoIGFsbG9jYXRlcyB0aGUgb2JqZWN0IHJldHVybnMuIE90aGVyd2lzZSB3ZSBrZWVwIHRyYWNrIG9mCisJc3RhbGUgb2JqZWN0cy4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QxPgorCisgICAgPHNlY3QxIGlkPSJkZWJ1Z19vYmplY3RfYWN0aXZhdGUiPgorICAgICAgPHRpdGxlPmRlYnVnX29iamVjdF9hY3RpdmF0ZTwvdGl0bGU+CisgICAgICA8cGFyYT4KKwlUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgYWN0aXZhdGlvbiBmdW5jdGlvbiBvZiBhCisJcmVhbCBvYmplY3QgaXMgY2FsbGVkLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisJV2hlbiB0aGUgcmVhbCBvYmplY3QgaXMgYWxyZWFkeSB0cmFja2VkIGJ5IGRlYnVnb2JqZWN0cyBpdCBpcworCWNoZWNrZWQsIHdoZXRoZXIgdGhlIG9iamVjdCBjYW4gYmUgYWN0aXZhdGVkLiAgQWN0aXZhdGluZyBpcworCW5vdCBhbGxvd2VkIGZvciBhY3RpdmUgYW5kIGRlc3Ryb3llZCBvYmplY3RzLiBXaGVuCisJZGVidWdvYmplY3RzIGRldGVjdHMgYW4gZXJyb3IsIHRoZW4gaXQgY2FsbHMgdGhlCisJZml4dXBfYWN0aXZhdGUgZnVuY3Rpb24gb2YgdGhlIG9iamVjdCB0eXBlIGRlc2NyaXB0aW9uCisJc3RydWN0dXJlIGlmIHByb3ZpZGVkIGJ5IHRoZSBjYWxsZXIuIFRoZSBmaXh1cCBmdW5jdGlvbiBjYW4KKwljb3JyZWN0IHRoZSBwcm9ibGVtIGJlZm9yZSB0aGUgcmVhbCBhY3RpdmF0aW9uIG9mIHRoZSBvYmplY3QKKwloYXBwZW5zLiBFLmcuIGl0IGNhbiBkZWFjdGl2YXRlIGFuIGFjdGl2ZSBvYmplY3QgaW4gb3JkZXIgdG8KKwlwcmV2ZW50IGRhbWFnZSB0byB0aGUgc3Vic3lzdGVtLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisJV2hlbiB0aGUgcmVhbCBvYmplY3QgaXMgbm90IHlldCB0cmFja2VkIGJ5IGRlYnVnb2JqZWN0cyB0aGVuCisJdGhlIGZpeHVwX2FjdGl2YXRlIGZ1bmN0aW9uIGlzIGNhbGxlZCBpZiBhdmFpbGFibGUuIFRoaXMgaXMKKwluZWNlc3NhcnkgdG8gYWxsb3cgdGhlIGxlZ2l0aW1hdGUgYWN0aXZhdGlvbiBvZiBzdGF0aWNhbGx5CisJYWxsb2NhdGVkIGFuZCBpbml0aWFsaXplZCBvYmplY3RzLiBUaGUgZml4dXAgZnVuY3Rpb24gY2hlY2tzCisJd2hldGhlciB0aGUgb2JqZWN0IGlzIHZhbGlkIGFuZCBjYWxscyB0aGUgZGVidWdfb2JqZWN0c19pbml0KCkKKwlmdW5jdGlvbiB0byBpbml0aWFsaXplIHRoZSB0cmFja2luZyBvZiB0aGlzIG9iamVjdC4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorCVdoZW4gdGhlIGFjdGl2YXRpb24gaXMgbGVnaXRpbWF0ZSwgdGhlbiB0aGUgc3RhdGUgb2YgdGhlCisJYXNzb2NpYXRlZCB0cmFja2VyIG9iamVjdCBpcyBzZXQgdG8gT0RFQlVHX1NUQVRFX0FDVElWRS4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QxPgorCisgICAgPHNlY3QxIGlkPSJkZWJ1Z19vYmplY3RfZGVhY3RpdmF0ZSI+CisgICAgICA8dGl0bGU+ZGVidWdfb2JqZWN0X2RlYWN0aXZhdGU8L3RpdGxlPgorICAgICAgPHBhcmE+CisJVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbmV2ZXIgdGhlIGRlYWN0aXZhdGlvbiBmdW5jdGlvbiBvZgorCWEgcmVhbCBvYmplY3QgaXMgY2FsbGVkLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisJV2hlbiB0aGUgcmVhbCBvYmplY3QgaXMgdHJhY2tlZCBieSBkZWJ1Z29iamVjdHMgaXQgaXMgY2hlY2tlZCwKKwl3aGV0aGVyIHRoZSBvYmplY3QgY2FuIGJlIGRlYWN0aXZhdGVkLiBEZWFjdGl2YXRpbmcgaXMgbm90CisJYWxsb3dlZCBmb3IgdW50cmFja2VkIG9yIGRlc3Ryb3llZCBvYmplY3RzLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisJV2hlbiB0aGUgZGVhY3RpdmF0aW9uIGlzIGxlZ2l0aW1hdGUsIHRoZW4gdGhlIHN0YXRlIG9mIHRoZQorCWFzc29jaWF0ZWQgdHJhY2tlciBvYmplY3QgaXMgc2V0IHRvIE9ERUJVR19TVEFURV9JTkFDVElWRS4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QxPgorCisgICAgPHNlY3QxIGlkPSJkZWJ1Z19vYmplY3RfZGVzdHJveSI+CisgICAgICA8dGl0bGU+ZGVidWdfb2JqZWN0X2Rlc3Ryb3k8L3RpdGxlPgorICAgICAgPHBhcmE+CisJVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gbWFyayBhbiBvYmplY3QgZGVzdHJveWVkLiBUaGlzIGlzCisJdXNlZnVsIHRvIHByZXZlbnQgdGhlIHVzYWdlIG9mIGludmFsaWQgb2JqZWN0cywgd2hpY2ggYXJlCisJc3RpbGwgYXZhaWxhYmxlIGluIG1lbW9yeTogZWl0aGVyIHN0YXRpY2FsbHkgYWxsb2NhdGVkIG9iamVjdHMKKwlvciBvYmplY3RzIHdoaWNoIGFyZSBmcmVlZCBsYXRlci4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorCVdoZW4gdGhlIHJlYWwgb2JqZWN0IGlzIHRyYWNrZWQgYnkgZGVidWdvYmplY3RzIGl0IGlzIGNoZWNrZWQsCisJd2hldGhlciB0aGUgb2JqZWN0IGNhbiBiZSBkZXN0cm95ZWQuIERlc3RydWN0aW9uIGlzIG5vdAorCWFsbG93ZWQgZm9yIGFjdGl2ZSBhbmQgZGVzdHJveWVkIG9iamVjdHMuIFdoZW4gZGVidWdvYmplY3RzCisJZGV0ZWN0cyBhbiBlcnJvciwgdGhlbiBpdCBjYWxscyB0aGUgZml4dXBfZGVzdHJveSBmdW5jdGlvbiBvZgorCXRoZSBvYmplY3QgdHlwZSBkZXNjcmlwdGlvbiBzdHJ1Y3R1cmUgaWYgcHJvdmlkZWQgYnkgdGhlCisJY2FsbGVyLiBUaGUgZml4dXAgZnVuY3Rpb24gY2FuIGNvcnJlY3QgdGhlIHByb2JsZW0gYmVmb3JlIHRoZQorCXJlYWwgZGVzdHJ1Y3Rpb24gb2YgdGhlIG9iamVjdCBoYXBwZW5zLiBFLmcuIGl0IGNhbiBkZWFjdGl2YXRlCisJYW4gYWN0aXZlIG9iamVjdCBpbiBvcmRlciB0byBwcmV2ZW50IGRhbWFnZSB0byB0aGUgc3Vic3lzdGVtLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisJV2hlbiB0aGUgZGVzdHJ1Y3Rpb24gaXMgbGVnaXRpbWF0ZSwgdGhlbiB0aGUgc3RhdGUgb2YgdGhlCisJYXNzb2NpYXRlZCB0cmFja2VyIG9iamVjdCBpcyBzZXQgdG8gT0RFQlVHX1NUQVRFX0RFU1RST1lFRC4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QxPgorCisgICAgPHNlY3QxIGlkPSJkZWJ1Z19vYmplY3RfZnJlZSI+CisgICAgICA8dGl0bGU+ZGVidWdfb2JqZWN0X2ZyZWU8L3RpdGxlPgorICAgICAgPHBhcmE+CisJVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb3JlIGFuIG9iamVjdCBpcyBmcmVlZC4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorCVdoZW4gdGhlIHJlYWwgb2JqZWN0IGlzIHRyYWNrZWQgYnkgZGVidWdvYmplY3RzIGl0IGlzIGNoZWNrZWQsCisJd2hldGhlciB0aGUgb2JqZWN0IGNhbiBiZSBmcmVlZC4gRnJlZSBpcyBub3QgYWxsb3dlZCBmb3IKKwlhY3RpdmUgb2JqZWN0cy4gV2hlbiBkZWJ1Z29iamVjdHMgZGV0ZWN0cyBhbiBlcnJvciwgdGhlbiBpdAorCWNhbGxzIHRoZSBmaXh1cF9mcmVlIGZ1bmN0aW9uIG9mIHRoZSBvYmplY3QgdHlwZSBkZXNjcmlwdGlvbgorCXN0cnVjdHVyZSBpZiBwcm92aWRlZCBieSB0aGUgY2FsbGVyLiBUaGUgZml4dXAgZnVuY3Rpb24gY2FuCisJY29ycmVjdCB0aGUgcHJvYmxlbSBiZWZvcmUgdGhlIHJlYWwgZnJlZSBvZiB0aGUgb2JqZWN0CisJaGFwcGVucy4gRS5nLiBpdCBjYW4gZGVhY3RpdmF0ZSBhbiBhY3RpdmUgb2JqZWN0IGluIG9yZGVyIHRvCisJcHJldmVudCBkYW1hZ2UgdG8gdGhlIHN1YnN5c3RlbS4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorCU5vdGUgdGhhdCBkZWJ1Z19vYmplY3RfZnJlZSByZW1vdmVzIHRoZSBvYmplY3QgZnJvbSB0aGUKKwl0cmFja2VyLiBMYXRlciB1c2FnZSBvZiB0aGUgb2JqZWN0IGlzIGRldGVjdGVkIGJ5IHRoZSBvdGhlcgorCWRlYnVnIGNoZWNrcy4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QxPgorCisgICAgPHNlY3QxIGlkPSJkZWJ1Z19vYmplY3RfYXNzZXJ0X2luaXQiPgorICAgICAgPHRpdGxlPmRlYnVnX29iamVjdF9hc3NlcnRfaW5pdDwvdGl0bGU+CisgICAgICA8cGFyYT4KKwlUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBhc3NlcnQgdGhhdCBhbiBvYmplY3QgaGFzIGJlZW4KKwlpbml0aWFsaXplZC4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorCVdoZW4gdGhlIHJlYWwgb2JqZWN0IGlzIG5vdCB0cmFja2VkIGJ5IGRlYnVnb2JqZWN0cywgaXQgY2FsbHMKKwlmaXh1cF9hc3NlcnRfaW5pdCBvZiB0aGUgb2JqZWN0IHR5cGUgZGVzY3JpcHRpb24gc3RydWN0dXJlCisJcHJvdmlkZWQgYnkgdGhlIGNhbGxlciwgd2l0aCB0aGUgaGFyZGNvZGVkIG9iamVjdCBzdGF0ZQorCU9ERUJVR19OT1RfQVZBSUxBQkxFLiBUaGUgZml4dXAgZnVuY3Rpb24gY2FuIGNvcnJlY3QgdGhlIHByb2JsZW0KKwlieSBjYWxsaW5nIGRlYnVnX29iamVjdF9pbml0IGFuZCBvdGhlciBzcGVjaWZpYyBpbml0aWFsaXppbmcKKwlmdW5jdGlvbnMuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKwlXaGVuIHRoZSByZWFsIG9iamVjdCBpcyBhbHJlYWR5IHRyYWNrZWQgYnkgZGVidWdvYmplY3RzIGl0IGlzCisJaWdub3JlZC4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisgIDxjaGFwdGVyIGlkPSJmaXh1cGZ1bmN0aW9ucyI+CisgICAgPHRpdGxlPkZpeHVwIGZ1bmN0aW9uczwvdGl0bGU+CisgICAgPHNlY3QxIGlkPSJkZWJ1Z19vYmpfZGVzY3IiPgorICAgICAgPHRpdGxlPkRlYnVnIG9iamVjdCB0eXBlIGRlc2NyaXB0aW9uIHN0cnVjdHVyZTwvdGl0bGU+CishSWluY2x1ZGUvbGludXgvZGVidWdvYmplY3RzLmgKKyAgICA8L3NlY3QxPgorICAgIDxzZWN0MSBpZD0iZml4dXBfaW5pdCI+CisgICAgICA8dGl0bGU+Zml4dXBfaW5pdDwvdGl0bGU+CisgICAgICA8cGFyYT4KKwlUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBkZWJ1ZyBjb2RlIHdoZW5ldmVyIGEgcHJvYmxlbQorCWluIGRlYnVnX29iamVjdF9pbml0IGlzIGRldGVjdGVkLiBUaGUgZnVuY3Rpb24gdGFrZXMgdGhlCisJYWRkcmVzcyBvZiB0aGUgb2JqZWN0IGFuZCB0aGUgc3RhdGUgd2hpY2ggaXMgY3VycmVudGx5CisJcmVjb3JkZWQgaW4gdGhlIHRyYWNrZXIuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKwlDYWxsZWQgZnJvbSBkZWJ1Z19vYmplY3RfaW5pdCB3aGVuIHRoZSBvYmplY3Qgc3RhdGUgaXM6CisJPGl0ZW1pemVkbGlzdD4KKwkgIDxsaXN0aXRlbT48cGFyYT5PREVCVUdfU1RBVEVfQUNUSVZFPC9wYXJhPjwvbGlzdGl0ZW0+CisJPC9pdGVtaXplZGxpc3Q+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKwlUaGUgZnVuY3Rpb24gcmV0dXJucyAxIHdoZW4gdGhlIGZpeHVwIHdhcyBzdWNjZXNzZnVsLAorCW90aGVyd2lzZSAwLiBUaGUgcmV0dXJuIHZhbHVlIGlzIHVzZWQgdG8gdXBkYXRlIHRoZQorCXN0YXRpc3RpY3MuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKwlOb3RlLCB0aGF0IHRoZSBmdW5jdGlvbiBuZWVkcyB0byBjYWxsIHRoZSBkZWJ1Z19vYmplY3RfaW5pdCgpCisJZnVuY3Rpb24gYWdhaW4sIGFmdGVyIHRoZSBkYW1hZ2UgaGFzIGJlZW4gcmVwYWlyZWQgaW4gb3JkZXIgdG8KKwlrZWVwIHRoZSBzdGF0ZSBjb25zaXN0ZW50LgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdDE+CisKKyAgICA8c2VjdDEgaWQ9ImZpeHVwX2FjdGl2YXRlIj4KKyAgICAgIDx0aXRsZT5maXh1cF9hY3RpdmF0ZTwvdGl0bGU+CisgICAgICA8cGFyYT4KKwlUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBkZWJ1ZyBjb2RlIHdoZW5ldmVyIGEgcHJvYmxlbQorCWluIGRlYnVnX29iamVjdF9hY3RpdmF0ZSBpcyBkZXRlY3RlZC4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorCUNhbGxlZCBmcm9tIGRlYnVnX29iamVjdF9hY3RpdmF0ZSB3aGVuIHRoZSBvYmplY3Qgc3RhdGUgaXM6CisJPGl0ZW1pemVkbGlzdD4KKwkgIDxsaXN0aXRlbT48cGFyYT5PREVCVUdfU1RBVEVfTk9UQVZBSUxBQkxFPC9wYXJhPjwvbGlzdGl0ZW0+CisJICA8bGlzdGl0ZW0+PHBhcmE+T0RFQlVHX1NUQVRFX0FDVElWRTwvcGFyYT48L2xpc3RpdGVtPgorCTwvaXRlbWl6ZWRsaXN0PgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisJVGhlIGZ1bmN0aW9uIHJldHVybnMgMSB3aGVuIHRoZSBmaXh1cCB3YXMgc3VjY2Vzc2Z1bCwKKwlvdGhlcndpc2UgMC4gVGhlIHJldHVybiB2YWx1ZSBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUKKwlzdGF0aXN0aWNzLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisJTm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBuZWVkcyB0byBjYWxsIHRoZSBkZWJ1Z19vYmplY3RfYWN0aXZhdGUoKQorCWZ1bmN0aW9uIGFnYWluIGFmdGVyIHRoZSBkYW1hZ2UgaGFzIGJlZW4gcmVwYWlyZWQgaW4gb3JkZXIgdG8KKwlrZWVwIHRoZSBzdGF0ZSBjb25zaXN0ZW50LgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisJVGhlIGFjdGl2YXRpb24gb2Ygc3RhdGljYWxseSBpbml0aWFsaXplZCBvYmplY3RzIGlzIGEgc3BlY2lhbAorCWNhc2UuIFdoZW4gZGVidWdfb2JqZWN0X2FjdGl2YXRlKCkgaGFzIG5vIHRyYWNrZWQgb2JqZWN0IGZvcgorCXRoaXMgb2JqZWN0IGFkZHJlc3MgdGhlbiBmaXh1cF9hY3RpdmF0ZSgpIGlzIGNhbGxlZCB3aXRoCisJb2JqZWN0IHN0YXRlIE9ERUJVR19TVEFURV9OT1RBVkFJTEFCTEUuIFRoZSBmaXh1cCBmdW5jdGlvbgorCW5lZWRzIHRvIGNoZWNrIHdoZXRoZXIgdGhpcyBpcyBhIGxlZ2l0aW1hdGUgY2FzZSBvZiBhCisJc3RhdGljYWxseSBpbml0aWFsaXplZCBvYmplY3Qgb3Igbm90LiBJbiBjYXNlIGl0IGlzIGl0IGNhbGxzCisJZGVidWdfb2JqZWN0X2luaXQoKSBhbmQgZGVidWdfb2JqZWN0X2FjdGl2YXRlKCkgdG8gbWFrZSB0aGUKKwlvYmplY3Qga25vd24gdG8gdGhlIHRyYWNrZXIgYW5kIG1hcmtlZCBhY3RpdmUuIEluIHRoaXMgY2FzZQorCXRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDAgYmVjYXVzZSB0aGlzIGlzIG5vdCBhIHJlYWwgZml4dXAuCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0MT4KKworICAgIDxzZWN0MSBpZD0iZml4dXBfZGVzdHJveSI+CisgICAgICA8dGl0bGU+Zml4dXBfZGVzdHJveTwvdGl0bGU+CisgICAgICA8cGFyYT4KKwlUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBkZWJ1ZyBjb2RlIHdoZW5ldmVyIGEgcHJvYmxlbQorCWluIGRlYnVnX29iamVjdF9kZXN0cm95IGlzIGRldGVjdGVkLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisJQ2FsbGVkIGZyb20gZGVidWdfb2JqZWN0X2Rlc3Ryb3kgd2hlbiB0aGUgb2JqZWN0IHN0YXRlIGlzOgorCTxpdGVtaXplZGxpc3Q+CisJICA8bGlzdGl0ZW0+PHBhcmE+T0RFQlVHX1NUQVRFX0FDVElWRTwvcGFyYT48L2xpc3RpdGVtPgorCTwvaXRlbWl6ZWRsaXN0PgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisJVGhlIGZ1bmN0aW9uIHJldHVybnMgMSB3aGVuIHRoZSBmaXh1cCB3YXMgc3VjY2Vzc2Z1bCwKKwlvdGhlcndpc2UgMC4gVGhlIHJldHVybiB2YWx1ZSBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUKKwlzdGF0aXN0aWNzLgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdDE+CisgICAgPHNlY3QxIGlkPSJmaXh1cF9mcmVlIj4KKyAgICAgIDx0aXRsZT5maXh1cF9mcmVlPC90aXRsZT4KKyAgICAgIDxwYXJhPgorCVRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIGRlYnVnIGNvZGUgd2hlbmV2ZXIgYSBwcm9ibGVtCisJaW4gZGVidWdfb2JqZWN0X2ZyZWUgaXMgZGV0ZWN0ZWQuIEZ1cnRoZXIgaXQgY2FuIGJlIGNhbGxlZAorCWZyb20gdGhlIGRlYnVnIGNoZWNrcyBpbiBrZnJlZS92ZnJlZSwgd2hlbiBhbiBhY3RpdmUgb2JqZWN0IGlzCisJZGV0ZWN0ZWQgZnJvbSB0aGUgZGVidWdfY2hlY2tfbm9fb2JqX2ZyZWVkKCkgc2FuaXR5IGNoZWNrcy4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorCUNhbGxlZCBmcm9tIGRlYnVnX29iamVjdF9mcmVlKCkgb3IgZGVidWdfY2hlY2tfbm9fb2JqX2ZyZWVkKCkKKwl3aGVuIHRoZSBvYmplY3Qgc3RhdGUgaXM6CisJPGl0ZW1pemVkbGlzdD4KKwkgIDxsaXN0aXRlbT48cGFyYT5PREVCVUdfU1RBVEVfQUNUSVZFPC9wYXJhPjwvbGlzdGl0ZW0+CisJPC9pdGVtaXplZGxpc3Q+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKwlUaGUgZnVuY3Rpb24gcmV0dXJucyAxIHdoZW4gdGhlIGZpeHVwIHdhcyBzdWNjZXNzZnVsLAorCW90aGVyd2lzZSAwLiBUaGUgcmV0dXJuIHZhbHVlIGlzIHVzZWQgdG8gdXBkYXRlIHRoZQorCXN0YXRpc3RpY3MuCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0MT4KKyAgICA8c2VjdDEgaWQ9ImZpeHVwX2Fzc2VydF9pbml0Ij4KKyAgICAgIDx0aXRsZT5maXh1cF9hc3NlcnRfaW5pdDwvdGl0bGU+CisgICAgICA8cGFyYT4KKwlUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBkZWJ1ZyBjb2RlIHdoZW5ldmVyIGEgcHJvYmxlbQorCWluIGRlYnVnX29iamVjdF9hc3NlcnRfaW5pdCBpcyBkZXRlY3RlZC4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorCUNhbGxlZCBmcm9tIGRlYnVnX29iamVjdF9hc3NlcnRfaW5pdCgpIHdpdGggYSBoYXJkY29kZWQgc3RhdGUKKwlPREVCVUdfU1RBVEVfTk9UQVZBSUxBQkxFIHdoZW4gdGhlIG9iamVjdCBpcyBub3QgZm91bmQgaW4gdGhlCisJZGVidWcgYnVja2V0LgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisJVGhlIGZ1bmN0aW9uIHJldHVybnMgMSB3aGVuIHRoZSBmaXh1cCB3YXMgc3VjY2Vzc2Z1bCwKKwlvdGhlcndpc2UgMC4gVGhlIHJldHVybiB2YWx1ZSBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUKKwlzdGF0aXN0aWNzLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisJTm90ZSwgdGhpcyBmdW5jdGlvbiBzaG91bGQgbWFrZSBzdXJlIGRlYnVnX29iamVjdF9pbml0KCkgaXMKKwljYWxsZWQgYmVmb3JlIHJldHVybmluZy4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorCVRoZSBoYW5kbGluZyBvZiBzdGF0aWNhbGx5IGluaXRpYWxpemVkIG9iamVjdHMgaXMgYSBzcGVjaWFsCisJY2FzZS4gVGhlIGZpeHVwIGZ1bmN0aW9uIHNob3VsZCBjaGVjayBpZiB0aGlzIGlzIGEgbGVnaXRpbWF0ZQorCWNhc2Ugb2YgYSBzdGF0aWNhbGx5IGluaXRpYWxpemVkIG9iamVjdCBvciBub3QuIEluIHRoaXMgY2FzZSBvbmx5CisJZGVidWdfb2JqZWN0X2luaXQoKSBzaG91bGQgYmUgY2FsbGVkIHRvIG1ha2UgdGhlIG9iamVjdCBrbm93biB0bworCXRoZSB0cmFja2VyLiBUaGVuIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDAgYmVjYXVzZSB0aGlzIGlzIG5vdAorCWEgcmVhbCBmaXh1cC4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisgIDxjaGFwdGVyIGlkPSJidWdzIj4KKyAgICA8dGl0bGU+S25vd24gQnVncyBBbmQgQXNzdW1wdGlvbnM8L3RpdGxlPgorICAgIDxwYXJhPgorCU5vbmUgKGtub2NrIG9uIHdvb2QpLgorICAgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorPC9ib29rPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2RldmljZS1kcml2ZXJzLnRtcGwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZGV2aWNlLWRyaXZlcnMudG1wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MmEyZDg1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2RldmljZS1kcml2ZXJzLnRtcGwKQEAgLTAsMCArMSw1OTEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMS4yLy9FTiIKKwkiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQiIFtdPgorCis8Ym9vayBpZD0iTGludXhEcml2ZXJzQVBJIj4KKyA8Ym9va2luZm8+CisgIDx0aXRsZT5MaW51eCBEZXZpY2UgRHJpdmVyczwvdGl0bGU+CisKKyAgPGxlZ2Fsbm90aWNlPgorICAgPHBhcmE+CisgICAgIFRoaXMgZG9jdW1lbnRhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZQorICAgICBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyCisgICAgIHZlcnNpb24uCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCisgICAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQKKyAgICAgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorICAgICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorICAgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICAgICBNQSAwMjExMS0xMzA3IFVTQQorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICAgRm9yIG1vcmUgZGV0YWlscyBzZWUgdGhlIGZpbGUgQ09QWUlORyBpbiB0aGUgc291cmNlCisgICAgIGRpc3RyaWJ1dGlvbiBvZiBMaW51eC4KKyAgIDwvcGFyYT4KKyAgPC9sZWdhbG5vdGljZT4KKyA8L2Jvb2tpbmZvPgorCis8dG9jPjwvdG9jPgorCisgIDxjaGFwdGVyIGlkPSJCYXNpY3MiPgorICAgICA8dGl0bGU+RHJpdmVyIEJhc2ljczwvdGl0bGU+CisgICAgIDxzZWN0MT48dGl0bGU+RHJpdmVyIEVudHJ5IGFuZCBFeGl0IHBvaW50czwvdGl0bGU+CishSWluY2x1ZGUvbGludXgvaW5pdC5oCisgICAgIDwvc2VjdDE+CisKKyAgICAgPHNlY3QxPjx0aXRsZT5BdG9taWMgYW5kIHBvaW50ZXIgbWFuaXB1bGF0aW9uPC90aXRsZT4KKyFJYXJjaC94ODYvaW5jbHVkZS9hc20vYXRvbWljLmgKKyAgICAgPC9zZWN0MT4KKworICAgICA8c2VjdDE+PHRpdGxlPkRlbGF5aW5nLCBzY2hlZHVsaW5nLCBhbmQgdGltZXIgcm91dGluZXM8L3RpdGxlPgorIUlpbmNsdWRlL2xpbnV4L3NjaGVkLmgKKyFFa2VybmVsL3NjaGVkL2NvcmUuYworIUlrZXJuZWwvc2NoZWQvY3B1cHJpLmMKKyFJa2VybmVsL3NjaGVkL2ZhaXIuYworIUlpbmNsdWRlL2xpbnV4L2NvbXBsZXRpb24uaAorIUVrZXJuZWwvdGltZS90aW1lci5jCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MT48dGl0bGU+V2FpdCBxdWV1ZXMgYW5kIFdha2UgZXZlbnRzPC90aXRsZT4KKyFJaW5jbHVkZS9saW51eC93YWl0LmgKKyFFa2VybmVsL3NjaGVkL3dhaXQuYworICAgICA8L3NlY3QxPgorICAgICA8c2VjdDE+PHRpdGxlPkhpZ2gtcmVzb2x1dGlvbiB0aW1lcnM8L3RpdGxlPgorIUlpbmNsdWRlL2xpbnV4L2t0aW1lLmgKKyFJaW5jbHVkZS9saW51eC9ocnRpbWVyLmgKKyFFa2VybmVsL3RpbWUvaHJ0aW1lci5jCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MT48dGl0bGU+V29ya3F1ZXVlcyBhbmQgS2V2ZW50czwvdGl0bGU+CishSWluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgKKyFFa2VybmVsL3dvcmtxdWV1ZS5jCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MT48dGl0bGU+SW50ZXJuYWwgRnVuY3Rpb25zPC90aXRsZT4KKyFJa2VybmVsL2V4aXQuYworIUlrZXJuZWwvc2lnbmFsLmMKKyFJaW5jbHVkZS9saW51eC9rdGhyZWFkLmgKKyFFa2VybmVsL2t0aHJlYWQuYworICAgICA8L3NlY3QxPgorCisgICAgIDxzZWN0MT48dGl0bGU+S2VybmVsIG9iamVjdHMgbWFuaXB1bGF0aW9uPC90aXRsZT4KKzwhLS0KK1ghSWluY2x1ZGUvbGludXgva29iamVjdC5oCistLT4KKyFFbGliL2tvYmplY3QuYworICAgICA8L3NlY3QxPgorCisgICAgIDxzZWN0MT48dGl0bGU+S2VybmVsIHV0aWxpdHkgZnVuY3Rpb25zPC90aXRsZT4KKyFJaW5jbHVkZS9saW51eC9rZXJuZWwuaAorIUVrZXJuZWwvcHJpbnRrL3ByaW50ay5jCishRWtlcm5lbC9wYW5pYy5jCishRWtlcm5lbC9zeXMuYworIUVrZXJuZWwvcmN1L3NyY3UuYworIUVrZXJuZWwvcmN1L3RyZWUuYworIUVrZXJuZWwvcmN1L3RyZWVfcGx1Z2luLmgKKyFFa2VybmVsL3JjdS91cGRhdGUuYworICAgICA8L3NlY3QxPgorCisgICAgIDxzZWN0MT48dGl0bGU+RGV2aWNlIFJlc291cmNlIE1hbmFnZW1lbnQ8L3RpdGxlPgorIUVkcml2ZXJzL2Jhc2UvZGV2cmVzLmMKKyAgICAgPC9zZWN0MT4KKworICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImRldmRyaXZlcnMiPgorICAgICA8dGl0bGU+RGV2aWNlIGRyaXZlcnMgaW5mcmFzdHJ1Y3R1cmU8L3RpdGxlPgorICAgICA8c2VjdDE+PHRpdGxlPlRoZSBCYXNpYyBEZXZpY2UgRHJpdmVyLU1vZGVsIFN0cnVjdHVyZXMgPC90aXRsZT4KKyFJaW5jbHVkZS9saW51eC9kZXZpY2UuaAorICAgICA8L3NlY3QxPgorICAgICA8c2VjdDE+PHRpdGxlPkRldmljZSBEcml2ZXJzIEJhc2U8L3RpdGxlPgorIUlkcml2ZXJzL2Jhc2UvaW5pdC5jCishRWRyaXZlcnMvYmFzZS9kcml2ZXIuYworIUVkcml2ZXJzL2Jhc2UvY29yZS5jCishRWRyaXZlcnMvYmFzZS9zeXNjb3JlLmMKKyFFZHJpdmVycy9iYXNlL2NsYXNzLmMKKyFJZHJpdmVycy9iYXNlL25vZGUuYworIUVkcml2ZXJzL2Jhc2UvZmlybXdhcmVfY2xhc3MuYworIUVkcml2ZXJzL2Jhc2UvdHJhbnNwb3J0X2NsYXNzLmMKKzwhLS0gQ2Fubm90IGJlIGluY2x1ZGVkLCBiZWNhdXNlCisgICAgIGF0dHJpYnV0ZV9jb250YWluZXJfYWRkX2NsYXNzX2RldmljZV9hZGFwdGVyCisgYW5kIGF0dHJpYnV0ZV9jb250YWluZXJfY2xhc3NkZXZfdG9fY29udGFpbmVyCisgICAgIGV4Y2VlZCBhbGxvd2VkIDQ0IGNoYXJhY3RlcnMgbWF4aW11bQorWCFFZHJpdmVycy9iYXNlL2F0dHJpYnV0ZV9jb250YWluZXIuYworLS0+CishRWRyaXZlcnMvYmFzZS9kZC5jCis8IS0tCitYIUVkcml2ZXJzL2Jhc2UvaW50ZXJmYWNlLmMKKy0tPgorIUlpbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RldmljZS5oCishRWRyaXZlcnMvYmFzZS9wbGF0Zm9ybS5jCishRWRyaXZlcnMvYmFzZS9idXMuYworICAgICA8L3NlY3QxPgorICAgICA8c2VjdDE+PHRpdGxlPkRldmljZSBEcml2ZXJzIERNQSBNYW5hZ2VtZW50PC90aXRsZT4KKyFFZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYworIUVkcml2ZXJzL2RtYS1idWYvZmVuY2UuYworIUVkcml2ZXJzL2RtYS1idWYvc2Vxbm8tZmVuY2UuYworIUlpbmNsdWRlL2xpbnV4L2ZlbmNlLmgKKyFJaW5jbHVkZS9saW51eC9zZXFuby1mZW5jZS5oCishRWRyaXZlcnMvZG1hLWJ1Zi9yZXNlcnZhdGlvbi5jCishSWluY2x1ZGUvbGludXgvcmVzZXJ2YXRpb24uaAorIUVkcml2ZXJzL2Jhc2UvZG1hLWNvaGVyZW50LmMKKyFFZHJpdmVycy9iYXNlL2RtYS1tYXBwaW5nLmMKKyAgICAgPC9zZWN0MT4KKyAgICAgPHNlY3QxPjx0aXRsZT5EZXZpY2UgRHJpdmVycyBQb3dlciBNYW5hZ2VtZW50PC90aXRsZT4KKyFFZHJpdmVycy9iYXNlL3Bvd2VyL21haW4uYworICAgICA8L3NlY3QxPgorICAgICA8c2VjdDE+PHRpdGxlPkRldmljZSBEcml2ZXJzIEFDUEkgU3VwcG9ydDwvdGl0bGU+Cis8IS0tIEludGVybmFsIGZ1bmN0aW9ucyBvbmx5CitYIUVkcml2ZXJzL2FjcGkvc2xlZXAvbWFpbi5jCitYIUVkcml2ZXJzL2FjcGkvc2xlZXAvd2FrZXVwLmMKK1ghRWRyaXZlcnMvYWNwaS9tb3RoZXJib2FyZC5jCitYIUVkcml2ZXJzL2FjcGkvYnVzLmMKKy0tPgorIUVkcml2ZXJzL2FjcGkvc2Nhbi5jCishSWRyaXZlcnMvYWNwaS9zY2FuLmMKKzwhLS0gTm8gY29ycmVjdCBzdHJ1Y3R1cmVkIGNvbW1lbnRzCitYIUVkcml2ZXJzL2FjcGkvcGNpX2JpbmQuYworLS0+CisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MT48dGl0bGU+RGV2aWNlIGRyaXZlcnMgUG5QIHN1cHBvcnQ8L3RpdGxlPgorIUlkcml2ZXJzL3BucC9jb3JlLmMKKzwhLS0gTm8gY29ycmVjdCBzdHJ1Y3R1cmVkIGNvbW1lbnRzCitYIUVkcml2ZXJzL3BucC9zeXN0ZW0uYworIC0tPgorIUVkcml2ZXJzL3BucC9jYXJkLmMKKyFJZHJpdmVycy9wbnAvZHJpdmVyLmMKKyFFZHJpdmVycy9wbnAvbWFuYWdlci5jCishRWRyaXZlcnMvcG5wL3N1cHBvcnQuYworICAgICA8L3NlY3QxPgorICAgICA8c2VjdDE+PHRpdGxlPlVzZXJzcGFjZSBJTyBkZXZpY2VzPC90aXRsZT4KKyFFZHJpdmVycy91aW8vdWlvLmMKKyFJaW5jbHVkZS9saW51eC91aW9fZHJpdmVyLmgKKyAgICAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJwYXJwb3J0ZGV2Ij4KKyAgICAgPHRpdGxlPlBhcmFsbGVsIFBvcnQgRGV2aWNlczwvdGl0bGU+CishSWluY2x1ZGUvbGludXgvcGFycG9ydC5oCishRWRyaXZlcnMvcGFycG9ydC9pZWVlMTI4NC5jCishRWRyaXZlcnMvcGFycG9ydC9zaGFyZS5jCishSWRyaXZlcnMvcGFycG9ydC9kYWlzeS5jCisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0ibWVzc2FnZV9kZXZpY2VzIj4KKwk8dGl0bGU+TWVzc2FnZS1iYXNlZCBkZXZpY2VzPC90aXRsZT4KKyAgICAgPHNlY3QxPjx0aXRsZT5GdXNpb24gbWVzc2FnZSBkZXZpY2VzPC90aXRsZT4KKyFFZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRiYXNlLmMKKyFJZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRiYXNlLmMKKyFFZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRzY3NpaC5jCishSWRyaXZlcnMvbWVzc2FnZS9mdXNpb24vbXB0c2NzaWguYworIUlkcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGN0bC5jCishSWRyaXZlcnMvbWVzc2FnZS9mdXNpb24vbXB0c3BpLmMKKyFJZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRmYy5jCishSWRyaXZlcnMvbWVzc2FnZS9mdXNpb24vbXB0bGFuLmMKKyAgICAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJzbmRkZXYiPgorICAgICA8dGl0bGU+U291bmQgRGV2aWNlczwvdGl0bGU+CishSWluY2x1ZGUvc291bmQvY29yZS5oCishRXNvdW5kL3NvdW5kX2NvcmUuYworIUlpbmNsdWRlL3NvdW5kL3BjbS5oCishRXNvdW5kL2NvcmUvcGNtLmMKKyFFc291bmQvY29yZS9kZXZpY2UuYworIUVzb3VuZC9jb3JlL2luZm8uYworIUVzb3VuZC9jb3JlL3Jhd21pZGkuYworIUVzb3VuZC9jb3JlL3NvdW5kLmMKKyFFc291bmQvY29yZS9tZW1vcnkuYworIUVzb3VuZC9jb3JlL3BjbV9tZW1vcnkuYworIUVzb3VuZC9jb3JlL2luaXQuYworIUVzb3VuZC9jb3JlL2lzYWRtYS5jCishRXNvdW5kL2NvcmUvY29udHJvbC5jCishRXNvdW5kL2NvcmUvcGNtX2xpYi5jCishRXNvdW5kL2NvcmUvaHdkZXAuYworIUVzb3VuZC9jb3JlL3BjbV9uYXRpdmUuYworIUVzb3VuZC9jb3JlL21lbWFsbG9jLmMKKzwhLS0gRklYTUU6IFJlbW92ZWQgZm9yIG5vdyBzaW5jZSBubyBzdHJ1Y3R1cmVkIGNvbW1lbnRzIGluIHNvdXJjZQorWCFJc291bmQvc291bmRfZmlybXdhcmUuYworLS0+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0ibWVkaWFkZXYiPgorICAgICA8dGl0bGU+TWVkaWEgRGV2aWNlczwvdGl0bGU+CisKKyAgICAgPHNlY3QxPjx0aXRsZT5WaWRlbzJMaW51eCBkZXZpY2VzPC90aXRsZT4KKyFJaW5jbHVkZS9tZWRpYS90dW5lci5oCishSWluY2x1ZGUvbWVkaWEvdHVuZXItdHlwZXMuaAorIUlpbmNsdWRlL21lZGlhL3R2ZWVwcm9tLmgKKyFJaW5jbHVkZS9tZWRpYS92NGwyLWFzeW5jLmgKKyFJaW5jbHVkZS9tZWRpYS92NGwyLWN0cmxzLmgKKyFJaW5jbHVkZS9tZWRpYS92NGwyLWR2LXRpbWluZ3MuaAorIUlpbmNsdWRlL21lZGlhL3Y0bDItZXZlbnQuaAorIUlpbmNsdWRlL21lZGlhL3Y0bDItZmxhc2gtbGVkLWNsYXNzLmgKKyFJaW5jbHVkZS9tZWRpYS92NGwyLW1lZGlhYnVzLmgKKyFJaW5jbHVkZS9tZWRpYS92NGwyLW1lbTJtZW0uaAorIUlpbmNsdWRlL21lZGlhL3Y0bDItb2YuaAorIUlpbmNsdWRlL21lZGlhL3Y0bDItc3ViZGV2LmgKKyFJaW5jbHVkZS9tZWRpYS92aWRlb2J1ZjItY29yZS5oCishSWluY2x1ZGUvbWVkaWEvdmlkZW9idWYyLXY0bDIuaAorIUlpbmNsdWRlL21lZGlhL3ZpZGVvYnVmMi1tZW1vcHMuaAorICAgICA8L3NlY3QxPgorICAgICA8c2VjdDE+PHRpdGxlPkRpZ2l0YWwgVFYgKERWQikgZGV2aWNlczwvdGl0bGU+CishSWRyaXZlcnMvbWVkaWEvZHZiLWNvcmUvZHZiX2NhX2VuNTAyMjEuaAorIUlkcml2ZXJzL21lZGlhL2R2Yi1jb3JlL2R2Yl9mcm9udGVuZC5oCishSWRyaXZlcnMvbWVkaWEvZHZiLWNvcmUvZHZiX21hdGguaAorIUlkcml2ZXJzL21lZGlhL2R2Yi1jb3JlL2R2Yl9yaW5nYnVmZmVyLmgKKyFJZHJpdmVycy9tZWRpYS9kdmItY29yZS9kdmJkZXYuaAorCTxzZWN0MT48dGl0bGU+RGlnaXRhbCBUViBEZW11eCBBUEk8L3RpdGxlPgorCSAgICA8cGFyYT5UaGUga2VybmVsIGRlbXV4IEFQSSBkZWZpbmVzIGEgZHJpdmVyLWludGVybmFsIGludGVyZmFjZSBmb3IKKwkgICAgcmVnaXN0ZXJpbmcgbG93LWxldmVsLCBoYXJkd2FyZSBzcGVjaWZpYyBkcml2ZXIgdG8gYSBoYXJkd2FyZQorCSAgICBpbmRlcGVuZGVudCBkZW11eCBsYXllci4gSXQgaXMgb25seSBvZiBpbnRlcmVzdCBmb3IgRGlnaXRhbCBUVgorCSAgICBkZXZpY2UgZHJpdmVyIHdyaXRlcnMuIFRoZSBoZWFkZXIgZmlsZSBmb3IgdGhpcyBBUEkgaXMgbmFtZWQKKwkgICAgPGNvbnN0YW50PmRlbXV4Lmg8L2NvbnN0YW50PiBhbmQgbG9jYXRlZCBpbgorCSAgICA8Y29uc3RhbnQ+ZHJpdmVycy9tZWRpYS9kdmItY29yZTwvY29uc3RhbnQ+LjwvcGFyYT4KKworCTxwYXJhPlRoZSBkZW11eCBBUEkgc2hvdWxkIGJlIGltcGxlbWVudGVkIGZvciBlYWNoIGRlbXV4IGluIHRoZQorCXN5c3RlbS4gSXQgaXMgdXNlZCB0byBzZWxlY3QgdGhlIFRTIHNvdXJjZSBvZiBhIGRlbXV4IGFuZCB0byBtYW5hZ2UKKwl0aGUgZGVtdXggcmVzb3VyY2VzLiBXaGVuIHRoZSBkZW11eCBjbGllbnQgYWxsb2NhdGVzIGEgcmVzb3VyY2UgdmlhCisJdGhlIGRlbXV4IEFQSSwgaXQgcmVjZWl2ZXMgYSBwb2ludGVyIHRvIHRoZSBBUEkgb2YgdGhhdAorCXJlc291cmNlLjwvcGFyYT4KKwk8cGFyYT5FYWNoIGRlbXV4IHJlY2VpdmVzIGl0cyBUUyBpbnB1dCBmcm9tIGEgRFZCIGZyb250LWVuZCBvciBmcm9tCisJbWVtb3J5LCBhcyBzZXQgdmlhIHRoaXMgZGVtdXggQVBJLiBJbiBhIHN5c3RlbSB3aXRoIG1vcmUgdGhhbiBvbmUKKwlmcm9udC1lbmQsIHRoZSBBUEkgY2FuIGJlIHVzZWQgdG8gc2VsZWN0IG9uZSBvZiB0aGUgRFZCIGZyb250LWVuZHMKKwlhcyBhIFRTIHNvdXJjZSBmb3IgYSBkZW11eCwgdW5sZXNzIHRoaXMgaXMgZml4ZWQgaW4gdGhlIEhXIHBsYXRmb3JtLgorCVRoZSBkZW11eCBBUEkgb25seSBjb250cm9scyBmcm9udC1lbmRzIHJlZ2FyZGluZyB0byB0aGVpciBjb25uZWN0aW9ucworCXdpdGggZGVtdXhlczsgdGhlIEFQSXMgdXNlZCB0byBzZXQgdGhlIG90aGVyIGZyb250LWVuZCBwYXJhbWV0ZXJzLAorCXN1Y2ggYXMgdHVuaW5nLCBhcmUgbm90IGRlZmluZWQgaW4gdGhpcyBkb2N1bWVudC48L3BhcmE+CisJPHBhcmE+VGhlIGZ1bmN0aW9ucyB0aGF0IGltcGxlbWVudCB0aGUgYWJzdHJhY3QgaW50ZXJmYWNlIGRlbXV4IHNob3VsZAorCWJlIGRlZmluZWQgc3RhdGljIG9yIG1vZHVsZSBwcml2YXRlIGFuZCByZWdpc3RlcmVkIHRvIHRoZSBEZW11eAorCWNvcmUgZm9yIGV4dGVybmFsIGFjY2Vzcy4gSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBpbXBsZW1lbnQgZXZlcnkKKwlmdW5jdGlvbiBpbiB0aGUgc3RydWN0IDxjb25zdGFudD5kbXhfZGVtdXg8L2NvbnN0YW50Pi4gRm9yIGV4YW1wbGUsCisJYSBkZW11eCBpbnRlcmZhY2UgbWlnaHQgc3VwcG9ydCBTZWN0aW9uIGZpbHRlcmluZywgYnV0IG5vdCBQRVMKKwlmaWx0ZXJpbmcuIFRoZSBBUEkgY2xpZW50IGlzIGV4cGVjdGVkIHRvIGNoZWNrIHRoZSB2YWx1ZSBvZiBhbnkKKwlmdW5jdGlvbiBwb2ludGVyIGJlZm9yZSBjYWxsaW5nIHRoZSBmdW5jdGlvbjogdGhlIHZhbHVlIG9mIE5VTEwgbWVhbnMKKwl0aGF0IHRoZSAmIzgyMjA7ZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZSYjODIyMTsuPC9wYXJhPgorCTxwYXJhPldoZW5ldmVyIHRoZSBmdW5jdGlvbnMgb2YgdGhlIGRlbXV4IEFQSSBtb2RpZnkgc2hhcmVkIGRhdGEsCisJdGhlIHBvc3NpYmlsaXRpZXMgb2YgbG9zdCB1cGRhdGUgYW5kIHJhY2UgY29uZGl0aW9uIHByb2JsZW1zIHNob3VsZAorCWJlIGFkZHJlc3NlZCwgZS5nLiBieSBwcm90ZWN0aW5nIHBhcnRzIG9mIGNvZGUgd2l0aCBtdXRleGVzLjwvcGFyYT4KKwk8cGFyYT5Ob3RlIHRoYXQgZnVuY3Rpb25zIGNhbGxlZCBmcm9tIGEgYm90dG9tIGhhbGYgY29udGV4dCBtdXN0IG5vdAorCXNsZWVwLiBFdmVuIGEgc2ltcGxlIG1lbW9yeSBhbGxvY2F0aW9uIHdpdGhvdXQgdXNpbmcgR0ZQX0FUT01JQyBjYW4KKwlyZXN1bHQgaW4gYSBrZXJuZWwgdGhyZWFkIGJlaW5nIHB1dCB0byBzbGVlcCBpZiBzd2FwcGluZyBpcyBuZWVkZWQuCisJRm9yIGV4YW1wbGUsIHRoZSBMaW51eCBrZXJuZWwgY2FsbHMgdGhlIGZ1bmN0aW9ucyBvZiBhIG5ldHdvcmsgZGV2aWNlCisJaW50ZXJmYWNlIGZyb20gYSBib3R0b20gaGFsZiBjb250ZXh0LiBUaHVzLCBpZiBhIGRlbXV4IEFQSSBmdW5jdGlvbgorCWlzIGNhbGxlZCBmcm9tIG5ldHdvcmsgZGV2aWNlIGNvZGUsIHRoZSBmdW5jdGlvbiBtdXN0IG5vdCBzbGVlcC4KKwk8L3BhcmE+CisgICAgPC9zZWN0MT4KKworICAgIDxzZWN0aW9uIGlkPSJkZW11eF9jYWxsYmFja19hcGkiPgorCTx0aXRsZT5EZW11eCBDYWxsYmFjayBBUEk8L3RpdGxlPgorCTxwYXJhPlRoaXMga2VybmVsLXNwYWNlIEFQSSBjb21wcmlzZXMgdGhlIGNhbGxiYWNrIGZ1bmN0aW9ucyB0aGF0CisJZGVsaXZlciBmaWx0ZXJlZCBkYXRhIHRvIHRoZSBkZW11eCBjbGllbnQuIFVubGlrZSB0aGUgb3RoZXIgRFZCCisJa0FCSXMsIHRoZXNlIGZ1bmN0aW9ucyBhcmUgcHJvdmlkZWQgYnkgdGhlIGNsaWVudCBhbmQgY2FsbGVkIGZyb20KKwl0aGUgZGVtdXggY29kZS48L3BhcmE+CisJPHBhcmE+VGhlIGZ1bmN0aW9uIHBvaW50ZXJzIG9mIHRoaXMgYWJzdHJhY3QgaW50ZXJmYWNlIGFyZSBub3QKKwlwYWNrZWQgaW50byBhIHN0cnVjdHVyZSBhcyBpbiB0aGUgb3RoZXIgZGVtdXggQVBJcywgYmVjYXVzZSB0aGUKKwljYWxsYmFjayBmdW5jdGlvbnMgYXJlIHJlZ2lzdGVyZWQgYW5kIHVzZWQgaW5kZXBlbmRlbnQgb2YgZWFjaAorCW90aGVyLiBBcyBhbiBleGFtcGxlLCBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIEFQSSBjbGllbnQgdG8gcHJvdmlkZQorCXNldmVyYWwgY2FsbGJhY2sgZnVuY3Rpb25zIGZvciByZWNlaXZpbmcgVFMgcGFja2V0cyBhbmQgbm8KKwljYWxsYmFja3MgZm9yIFBFUyBwYWNrZXRzIG9yIHNlY3Rpb25zLjwvcGFyYT4KKwk8cGFyYT5UaGUgZnVuY3Rpb25zIHRoYXQgaW1wbGVtZW50IHRoZSBjYWxsYmFjayBBUEkgbmVlZCBub3QgYmUKKwlyZS1lbnRyYW50OiB3aGVuIGEgZGVtdXggZHJpdmVyIGNhbGxzIG9uZSBvZiB0aGVzZSBmdW5jdGlvbnMsCisJdGhlIGRyaXZlciBpcyBub3QgYWxsb3dlZCB0byBjYWxsIHRoZSBmdW5jdGlvbiBhZ2FpbiBiZWZvcmUKKwl0aGUgb3JpZ2luYWwgY2FsbCByZXR1cm5zLiBJZiBhIGNhbGxiYWNrIGlzIHRyaWdnZXJlZCBieSBhCisJaGFyZHdhcmUgaW50ZXJydXB0LCBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhlIExpbnV4CisJJiM4MjIwO2JvdHRvbSBoYWxmJiM4MjIxOyBtZWNoYW5pc20gb3Igc3RhcnQgYSB0YXNrbGV0IGluc3RlYWQgb2YKKwltYWtpbmcgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGNhbGwgZGlyZWN0bHkgZnJvbSBhIGhhcmR3YXJlCisJaW50ZXJydXB0LjwvcGFyYT4KKwk8cGFyYT5UaGlzIG1lY2hhbmlzbSBpcyBpbXBsZW1lbnRlZCBieQorCTxsaW5rIGxpbmtlbmQ9J0FQSS1kbXgtdHMtY2InPmRteF90c19jYigpPC9saW5rPiBhbmQKKwk8bGluayBsaW5rZW5kPSdBUEktZG14LXNlY3Rpb24tY2InPmRteF9zZWN0aW9uX2NiKCk8L2xpbms+LjwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyFJZHJpdmVycy9tZWRpYS9kdmItY29yZS9kZW11eC5oCisgICAgPC9zZWN0MT4KKyAgICA8c2VjdDE+PHRpdGxlPlJlbW90ZSBDb250cm9sbGVyIGRldmljZXM8L3RpdGxlPgorIUlpbmNsdWRlL21lZGlhL3JjLWNvcmUuaAorIUlpbmNsdWRlL21lZGlhL2xpcmNfZGV2LmgKKyAgICA8L3NlY3QxPgorICAgIDxzZWN0MT48dGl0bGU+TWVkaWEgQ29udHJvbGxlciBkZXZpY2VzPC90aXRsZT4KKyFJaW5jbHVkZS9tZWRpYS9tZWRpYS1kZXZpY2UuaAorIUlpbmNsdWRlL21lZGlhL21lZGlhLWRldm5vZGUuaAorIUlpbmNsdWRlL21lZGlhL21lZGlhLWVudGl0eS5oCisgICAgPC9zZWN0MT4KKworICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9InVhcnQxNng1MCI+CisgICAgIDx0aXRsZT4xNng1MCBVQVJUIERyaXZlcjwvdGl0bGU+CishRWRyaXZlcnMvdHR5L3NlcmlhbC9zZXJpYWxfY29yZS5jCishRWRyaXZlcnMvdHR5L3NlcmlhbC84MjUwLzgyNTBfY29yZS5jCisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iZmJkZXYiPgorICAgICA8dGl0bGU+RnJhbWUgQnVmZmVyIExpYnJhcnk8L3RpdGxlPgorCisgICAgIDxwYXJhPgorICAgICAgIFRoZSBmcmFtZSBidWZmZXIgZHJpdmVycyBkZXBlbmQgaGVhdmlseSBvbiBmb3VyIGRhdGEgc3RydWN0dXJlcy4KKyAgICAgICBUaGVzZSBzdHJ1Y3R1cmVzIGFyZSBkZWNsYXJlZCBpbiBpbmNsdWRlL2xpbnV4L2ZiLmguICBUaGV5IGFyZQorICAgICAgIGZiX2luZm8sIGZiX3Zhcl9zY3JlZW5pbmZvLCBmYl9maXhfc2NyZWVuaW5mbyBhbmQgZmJfbW9ub3NwZWNzLgorICAgICAgIFRoZSBsYXN0IHRocmVlIGNhbiBiZSBtYWRlIGF2YWlsYWJsZSB0byBhbmQgZnJvbSB1c2VybGFuZC4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgIGZiX2luZm8gZGVmaW5lcyB0aGUgY3VycmVudCBzdGF0ZSBvZiBhIHBhcnRpY3VsYXIgdmlkZW8gY2FyZC4KKyAgICAgICBJbnNpZGUgZmJfaW5mbywgdGhlcmUgZXhpc3RzIGEgZmJfb3BzIHN0cnVjdHVyZSB3aGljaCBpcyBhCisgICAgICAgY29sbGVjdGlvbiBvZiBuZWVkZWQgZnVuY3Rpb25zIHRvIG1ha2UgZmJkZXYgYW5kIGZiY29uIHdvcmsuCisgICAgICAgZmJfaW5mbyBpcyBvbmx5IHZpc2libGUgdG8gdGhlIGtlcm5lbC4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgIGZiX3Zhcl9zY3JlZW5pbmZvIGlzIHVzZWQgdG8gZGVzY3JpYmUgdGhlIGZlYXR1cmVzIG9mIGEgdmlkZW8gY2FyZAorICAgICAgIHRoYXQgYXJlIHVzZXIgZGVmaW5lZC4gIFdpdGggZmJfdmFyX3NjcmVlbmluZm8sIHRoaW5ncyBzdWNoIGFzCisgICAgICAgZGVwdGggYW5kIHRoZSByZXNvbHV0aW9uIG1heSBiZSBkZWZpbmVkLgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICAgVGhlIG5leHQgc3RydWN0dXJlIGlzIGZiX2ZpeF9zY3JlZW5pbmZvLiBUaGlzIGRlZmluZXMgdGhlCisgICAgICAgcHJvcGVydGllcyBvZiBhIGNhcmQgdGhhdCBhcmUgY3JlYXRlZCB3aGVuIGEgbW9kZSBpcyBzZXQgYW5kIGNhbid0CisgICAgICAgYmUgY2hhbmdlZCBvdGhlcndpc2UuICBBIGdvb2QgZXhhbXBsZSBvZiB0aGlzIGlzIHRoZSBzdGFydCBvZiB0aGUKKyAgICAgICBmcmFtZSBidWZmZXIgbWVtb3J5LiAgVGhpcyAibG9ja3MiIHRoZSBhZGRyZXNzIG9mIHRoZSBmcmFtZSBidWZmZXIKKyAgICAgICBtZW1vcnksIHNvIHRoYXQgaXQgY2Fubm90IGJlIGNoYW5nZWQgb3IgbW92ZWQuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgICBUaGUgbGFzdCBzdHJ1Y3R1cmUgaXMgZmJfbW9ub3NwZWNzLiBJbiB0aGUgb2xkIEFQSSwgdGhlcmUgd2FzCisgICAgICAgbGl0dGxlIGltcG9ydGFuY2UgZm9yIGZiX21vbm9zcGVjcy4gVGhpcyBhbGxvd2VkIGZvciBmb3JiaWRkZW4gdGhpbmdzCisgICAgICAgc3VjaCBhcyBzZXR0aW5nIGEgbW9kZSBvZiA4MDB4NjAwIG9uIGEgZml4IGZyZXF1ZW5jeSBtb25pdG9yLiBXaXRoCisgICAgICAgdGhlIG5ldyBBUEksIGZiX21vbm9zcGVjcyBwcmV2ZW50cyBzdWNoIHRoaW5ncywgYW5kIGlmIHVzZWQKKyAgICAgICBjb3JyZWN0bHksIGNhbiBwcmV2ZW50IGEgbW9uaXRvciBmcm9tIGJlaW5nIGNvb2tlZC4gIGZiX21vbm9zcGVjcworICAgICAgIHdpbGwgbm90IGJlIHVzZWZ1bCB1bnRpbCBrZXJuZWxzIDIuNS54LgorICAgICA8L3BhcmE+CisKKyAgICAgPHNlY3QxPjx0aXRsZT5GcmFtZSBCdWZmZXIgTWVtb3J5PC90aXRsZT4KKyFFZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZibWVtLmMKKyAgICAgPC9zZWN0MT4KKzwhLS0KKyAgICAgPHNlY3QxPjx0aXRsZT5GcmFtZSBCdWZmZXIgQ29uc29sZTwvdGl0bGU+CitYIUVkcml2ZXJzL3ZpZGVvL2NvbnNvbGUvZmJjb24uYworICAgICA8L3NlY3QxPgorLS0+CisgICAgIDxzZWN0MT48dGl0bGU+RnJhbWUgQnVmZmVyIENvbG9ybWFwPC90aXRsZT4KKyFFZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY21hcC5jCisgICAgIDwvc2VjdDE+Cis8IS0tIEZJWE1FOgorICBkcml2ZXJzL3ZpZGVvL2ZiZ2VuLmMgaGFzIG5vIGRvY3MsIHdoaWNoIHN0dWZmcyB1cCB0aGUgc2dtbC4gIENvbW1lbnQKKyAgb3V0IHVudGlsIHNvbWVib2R5IGFkZHMgZG9jcy4gIEtBTworICAgICA8c2VjdDE+PHRpdGxlPkZyYW1lIEJ1ZmZlciBHZW5lcmljIEZ1bmN0aW9uczwvdGl0bGU+CitYIUlkcml2ZXJzL3ZpZGVvL2ZiZ2VuLmMKKyAgICAgPC9zZWN0MT4KK0tBTyAtLT4KKyAgICAgPHNlY3QxPjx0aXRsZT5GcmFtZSBCdWZmZXIgVmlkZW8gTW9kZSBEYXRhYmFzZTwvdGl0bGU+CishSWRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9tb2RlZGIuYworIUVkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvbW9kZWRiLmMKKyAgICAgPC9zZWN0MT4KKyAgICAgPHNlY3QxPjx0aXRsZT5GcmFtZSBCdWZmZXIgTWFjaW50b3NoIFZpZGVvIE1vZGUgRGF0YWJhc2U8L3RpdGxlPgorIUVkcml2ZXJzL3ZpZGVvL2ZiZGV2L21hY21vZGVzLmMKKyAgICAgPC9zZWN0MT4KKyAgICAgPHNlY3QxPjx0aXRsZT5GcmFtZSBCdWZmZXIgRm9udHM8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgUmVmZXIgdG8gdGhlIGZpbGUgbGliL2ZvbnRzL2ZvbnRzLmMgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgIDwvcGFyYT4KKzwhLS0gRklYTUU6IFJlbW92ZWQgZm9yIG5vdyBzaW5jZSBubyBzdHJ1Y3R1cmVkIGNvbW1lbnRzIGluIHNvdXJjZQorWCFJbGliL2ZvbnRzL2ZvbnRzLmMKKy0tPgorICAgICA8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImlucHV0X3N1YnN5c3RlbSI+CisgICAgIDx0aXRsZT5JbnB1dCBTdWJzeXN0ZW08L3RpdGxlPgorICAgICA8c2VjdDE+PHRpdGxlPklucHV0IGNvcmU8L3RpdGxlPgorIUlpbmNsdWRlL2xpbnV4L2lucHV0LmgKKyFFZHJpdmVycy9pbnB1dC9pbnB1dC5jCishRWRyaXZlcnMvaW5wdXQvZmYtY29yZS5jCishRWRyaXZlcnMvaW5wdXQvZmYtbWVtbGVzcy5jCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MT48dGl0bGU+TXVsdGl0b3VjaCBMaWJyYXJ5PC90aXRsZT4KKyFJaW5jbHVkZS9saW51eC9pbnB1dC9tdC5oCishRWRyaXZlcnMvaW5wdXQvaW5wdXQtbXQuYworICAgICA8L3NlY3QxPgorICAgICA8c2VjdDE+PHRpdGxlPlBvbGxlZCBpbnB1dCBkZXZpY2VzPC90aXRsZT4KKyFJaW5jbHVkZS9saW51eC9pbnB1dC1wb2xsZGV2LmgKKyFFZHJpdmVycy9pbnB1dC9pbnB1dC1wb2xsZGV2LmMKKyAgICAgPC9zZWN0MT4KKyAgICAgPHNlY3QxPjx0aXRsZT5NYXRyaXgga2V5Ym9hcnMva2V5cGFkczwvdGl0bGU+CishSWluY2x1ZGUvbGludXgvaW5wdXQvbWF0cml4X2tleXBhZC5oCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MT48dGl0bGU+U3BhcnNlIGtleW1hcCBzdXBwb3J0PC90aXRsZT4KKyFJaW5jbHVkZS9saW51eC9pbnB1dC9zcGFyc2Uta2V5bWFwLmgKKyFFZHJpdmVycy9pbnB1dC9zcGFyc2Uta2V5bWFwLmMKKyAgICAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJzcGkiPgorICAgICAgPHRpdGxlPlNlcmlhbCBQZXJpcGhlcmFsIEludGVyZmFjZSAoU1BJKTwvdGl0bGU+CisgIDxwYXJhPgorCVNQSSBpcyB0aGUgIlNlcmlhbCBQZXJpcGhlcmFsIEludGVyZmFjZSIsIHdpZGVseSB1c2VkIHdpdGgKKwllbWJlZGRlZCBzeXN0ZW1zIGJlY2F1c2UgaXQgaXMgYSBzaW1wbGUgYW5kIGVmZmljaWVudAorCWludGVyZmFjZTogIGJhc2ljYWxseSBhIG11bHRpcGxleGVkIHNoaWZ0IHJlZ2lzdGVyLgorCUl0cyB0aHJlZSBzaWduYWwgd2lyZXMgaG9sZCBhIGNsb2NrIChTQ0ssIG9mdGVuIGluIHRoZSByYW5nZQorCW9mIDEtMjAgTUh6KSwgYSAiTWFzdGVyIE91dCwgU2xhdmUgSW4iIChNT1NJKSBkYXRhIGxpbmUsIGFuZAorCWEgIk1hc3RlciBJbiwgU2xhdmUgT3V0IiAoTUlTTykgZGF0YSBsaW5lLgorCVNQSSBpcyBhIGZ1bGwgZHVwbGV4IHByb3RvY29sOyBmb3IgZWFjaCBiaXQgc2hpZnRlZCBvdXQgdGhlCisJTU9TSSBsaW5lIChvbmUgcGVyIGNsb2NrKSBhbm90aGVyIGlzIHNoaWZ0ZWQgaW4gb24gdGhlIE1JU08gbGluZS4KKwlUaG9zZSBiaXRzIGFyZSBhc3NlbWJsZWQgaW50byB3b3JkcyBvZiB2YXJpb3VzIHNpemVzIG9uIHRoZQorCXdheSB0byBhbmQgZnJvbSBzeXN0ZW0gbWVtb3J5LgorCUFuIGFkZGl0aW9uYWwgY2hpcHNlbGVjdCBsaW5lIGlzIHVzdWFsbHkgYWN0aXZlLWxvdyAobkNTKTsKKwlmb3VyIHNpZ25hbHMgYXJlIG5vcm1hbGx5IHVzZWQgZm9yIGVhY2ggcGVyaXBoZXJhbCwgcGx1cworCXNvbWV0aW1lcyBhbiBpbnRlcnJ1cHQuCisgIDwvcGFyYT4KKyAgPHBhcmE+CisJVGhlIFNQSSBidXMgZmFjaWxpdGllcyBsaXN0ZWQgaGVyZSBwcm92aWRlIGEgZ2VuZXJhbGl6ZWQKKwlpbnRlcmZhY2UgdG8gZGVjbGFyZSBTUEkgYnVzc2VzIGFuZCBkZXZpY2VzLCBtYW5hZ2UgdGhlbQorCWFjY29yZGluZyB0byB0aGUgc3RhbmRhcmQgTGludXggZHJpdmVyIG1vZGVsLCBhbmQgcGVyZm9ybQorCWlucHV0L291dHB1dCBvcGVyYXRpb25zLgorCUF0IHRoaXMgdGltZSwgb25seSAibWFzdGVyIiBzaWRlIGludGVyZmFjZXMgYXJlIHN1cHBvcnRlZCwKKwl3aGVyZSBMaW51eCB0YWxrcyB0byBTUEkgcGVyaXBoZXJhbHMgYW5kIGRvZXMgbm90IGltcGxlbWVudAorCXN1Y2ggYSBwZXJpcGhlcmFsIGl0c2VsZi4KKwkoSW50ZXJmYWNlcyB0byBzdXBwb3J0IGltcGxlbWVudGluZyBTUEkgc2xhdmVzIHdvdWxkCisJbmVjZXNzYXJpbHkgbG9vayBkaWZmZXJlbnQuKQorICA8L3BhcmE+CisgIDxwYXJhPgorCVRoZSBwcm9ncmFtbWluZyBpbnRlcmZhY2UgaXMgc3RydWN0dXJlZCBhcm91bmQgdHdvIGtpbmRzIG9mIGRyaXZlciwKKwlhbmQgdHdvIGtpbmRzIG9mIGRldmljZS4KKwlBICJDb250cm9sbGVyIERyaXZlciIgYWJzdHJhY3RzIHRoZSBjb250cm9sbGVyIGhhcmR3YXJlLCB3aGljaCBtYXkKKwliZSBhcyBzaW1wbGUgYXMgYSBzZXQgb2YgR1BJTyBwaW5zIG9yIGFzIGNvbXBsZXggYXMgYSBwYWlyIG9mIEZJRk9zCisJY29ubmVjdGVkIHRvIGR1YWwgRE1BIGVuZ2luZXMgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIFNQSSBzaGlmdAorCXJlZ2lzdGVyIChtYXhpbWl6aW5nIHRocm91Z2hwdXQpLiAgU3VjaCBkcml2ZXJzIGJyaWRnZSBiZXR3ZWVuCisJd2hhdGV2ZXIgYnVzIHRoZXkgc2l0IG9uIChvZnRlbiB0aGUgcGxhdGZvcm0gYnVzKSBhbmQgU1BJLCBhbmQKKwlleHBvc2UgdGhlIFNQSSBzaWRlIG9mIHRoZWlyIGRldmljZSBhcyBhCisJPHN0cnVjdG5hbWU+c3RydWN0IHNwaV9tYXN0ZXI8L3N0cnVjdG5hbWU+LgorCVNQSSBkZXZpY2VzIGFyZSBjaGlsZHJlbiBvZiB0aGF0IG1hc3RlciwgcmVwcmVzZW50ZWQgYXMgYQorCTxzdHJ1Y3RuYW1lPnN0cnVjdCBzcGlfZGV2aWNlPC9zdHJ1Y3RuYW1lPiBhbmQgbWFudWZhY3R1cmVkIGZyb20KKwk8c3RydWN0bmFtZT5zdHJ1Y3Qgc3BpX2JvYXJkX2luZm88L3N0cnVjdG5hbWU+IGRlc2NyaXB0b3JzIHdoaWNoCisJYXJlIHVzdWFsbHkgcHJvdmlkZWQgYnkgYm9hcmQtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gY29kZS4KKwlBIDxzdHJ1Y3RuYW1lPnN0cnVjdCBzcGlfZHJpdmVyPC9zdHJ1Y3RuYW1lPiBpcyBjYWxsZWQgYQorCSJQcm90b2NvbCBEcml2ZXIiLCBhbmQgaXMgYm91bmQgdG8gYSBzcGlfZGV2aWNlIHVzaW5nIG5vcm1hbAorCWRyaXZlciBtb2RlbCBjYWxscy4KKyAgPC9wYXJhPgorICA8cGFyYT4KKwlUaGUgSS9PIG1vZGVsIGlzIGEgc2V0IG9mIHF1ZXVlZCBtZXNzYWdlcy4gIFByb3RvY29sIGRyaXZlcnMKKwlzdWJtaXQgb25lIG9yIG1vcmUgPHN0cnVjdG5hbWU+c3RydWN0IHNwaV9tZXNzYWdlPC9zdHJ1Y3RuYW1lPgorCW9iamVjdHMsIHdoaWNoIGFyZSBwcm9jZXNzZWQgYW5kIGNvbXBsZXRlZCBhc3luY2hyb25vdXNseS4KKwkoVGhlcmUgYXJlIHN5bmNocm9ub3VzIHdyYXBwZXJzLCBob3dldmVyLikgIE1lc3NhZ2VzIGFyZQorCWJ1aWx0IGZyb20gb25lIG9yIG1vcmUgPHN0cnVjdG5hbWU+c3RydWN0IHNwaV90cmFuc2Zlcjwvc3RydWN0bmFtZT4KKwlvYmplY3RzLCBlYWNoIG9mIHdoaWNoIHdyYXBzIGEgZnVsbCBkdXBsZXggU1BJIHRyYW5zZmVyLgorCUEgdmFyaWV0eSBvZiBwcm90b2NvbCB0d2Vha2luZyBvcHRpb25zIGFyZSBuZWVkZWQsIGJlY2F1c2UKKwlkaWZmZXJlbnQgY2hpcHMgYWRvcHQgdmVyeSBkaWZmZXJlbnQgcG9saWNpZXMgZm9yIGhvdyB0aGV5CisJdXNlIHRoZSBiaXRzIHRyYW5zZmVycmVkIHdpdGggU1BJLgorICA8L3BhcmE+CishSWluY2x1ZGUvbGludXgvc3BpL3NwaS5oCishRmRyaXZlcnMvc3BpL3NwaS5jIHNwaV9yZWdpc3Rlcl9ib2FyZF9pbmZvCishRWRyaXZlcnMvc3BpL3NwaS5jCisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iaTJjIj4KKyAgICAgPHRpdGxlPkk8c3VwZXJzY3JpcHQ+Mjwvc3VwZXJzY3JpcHQ+QyBhbmQgU01CdXMgU3Vic3lzdGVtPC90aXRsZT4KKworICAgICA8cGFyYT4KKwlJPHN1cGVyc2NyaXB0PjI8L3N1cGVyc2NyaXB0PkMgKG9yIHdpdGhvdXQgZmFuY3kgdHlwb2dyYXBoeSwgIkkyQyIpCisJaXMgYW4gYWNyb255bSBmb3IgdGhlICJJbnRlci1JQyIgYnVzLCBhIHNpbXBsZSBidXMgcHJvdG9jb2wgd2hpY2ggaXMKKwl3aWRlbHkgdXNlZCB3aGVyZSBsb3cgZGF0YSByYXRlIGNvbW11bmljYXRpb25zIHN1ZmZpY2UuCisJU2luY2UgaXQncyBhbHNvIGEgbGljZW5zZWQgdHJhZGVtYXJrLCBzb21lIHZlbmRvcnMgdXNlIGFub3RoZXIKKwluYW1lIChzdWNoIGFzICJUd28tV2lyZSBJbnRlcmZhY2UiLCBUV0kpIGZvciB0aGUgc2FtZSBidXMuCisJSTJDIG9ubHkgbmVlZHMgdHdvIHNpZ25hbHMgKFNDTCBmb3IgY2xvY2ssIFNEQSBmb3IgZGF0YSksIGNvbnNlcnZpbmcKKwlib2FyZCByZWFsIGVzdGF0ZSBhbmQgbWluaW1pemluZyBzaWduYWwgcXVhbGl0eSBpc3N1ZXMuCisJTW9zdCBJMkMgZGV2aWNlcyB1c2Ugc2V2ZW4gYml0IGFkZHJlc3NlcywgYW5kIGJ1cyBzcGVlZHMgb2YgdXAKKwl0byA0MDAga0h6OyB0aGVyZSdzIGEgaGlnaCBzcGVlZCBleHRlbnNpb24gKDMuNCBNSHopIHRoYXQncyBub3QgeWV0CisJZm91bmQgd2lkZSB1c2UuCisJSTJDIGlzIGEgbXVsdGktbWFzdGVyIGJ1czsgb3BlbiBkcmFpbiBzaWduYWxpbmcgaXMgdXNlZCB0bworCWFyYml0cmF0ZSBiZXR3ZWVuIG1hc3RlcnMsIGFzIHdlbGwgYXMgdG8gaGFuZHNoYWtlIGFuZCB0bworCXN5bmNocm9uaXplIGNsb2NrcyBmcm9tIHNsb3dlciBjbGllbnRzLgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisJVGhlIExpbnV4IEkyQyBwcm9ncmFtbWluZyBpbnRlcmZhY2VzIHN1cHBvcnQgb25seSB0aGUgbWFzdGVyCisJc2lkZSBvZiBidXMgaW50ZXJhY3Rpb25zLCBub3QgdGhlIHNsYXZlIHNpZGUuCisJVGhlIHByb2dyYW1taW5nIGludGVyZmFjZSBpcyBzdHJ1Y3R1cmVkIGFyb3VuZCB0d28ga2luZHMgb2YgZHJpdmVyLAorCWFuZCB0d28ga2luZHMgb2YgZGV2aWNlLgorCUFuIEkyQyAiQWRhcHRlciBEcml2ZXIiIGFic3RyYWN0cyB0aGUgY29udHJvbGxlciBoYXJkd2FyZTsgaXQgYmluZHMKKwl0byBhIHBoeXNpY2FsIGRldmljZSAocGVyaGFwcyBhIFBDSSBkZXZpY2Ugb3IgcGxhdGZvcm1fZGV2aWNlKSBhbmQKKwlleHBvc2VzIGEgPHN0cnVjdG5hbWU+c3RydWN0IGkyY19hZGFwdGVyPC9zdHJ1Y3RuYW1lPiByZXByZXNlbnRpbmcKKwllYWNoIEkyQyBidXMgc2VnbWVudCBpdCBtYW5hZ2VzLgorCU9uIGVhY2ggSTJDIGJ1cyBzZWdtZW50IHdpbGwgYmUgSTJDIGRldmljZXMgcmVwcmVzZW50ZWQgYnkgYQorCTxzdHJ1Y3RuYW1lPnN0cnVjdCBpMmNfY2xpZW50PC9zdHJ1Y3RuYW1lPi4gIFRob3NlIGRldmljZXMgd2lsbAorCWJlIGJvdW5kIHRvIGEgPHN0cnVjdG5hbWU+c3RydWN0IGkyY19kcml2ZXI8L3N0cnVjdG5hbWU+LAorCXdoaWNoIHNob3VsZCBmb2xsb3cgdGhlIHN0YW5kYXJkIExpbnV4IGRyaXZlciBtb2RlbC4KKwkoQXQgdGhpcyB3cml0aW5nLCBhIGxlZ2FjeSBtb2RlbCBpcyBtb3JlIHdpZGVseSB1c2VkLikKKwlUaGVyZSBhcmUgZnVuY3Rpb25zIHRvIHBlcmZvcm0gdmFyaW91cyBJMkMgcHJvdG9jb2wgb3BlcmF0aW9uczsgYXQKKwl0aGlzIHdyaXRpbmcgYWxsIHN1Y2ggZnVuY3Rpb25zIGFyZSB1c2FibGUgb25seSBmcm9tIHRhc2sgY29udGV4dC4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorCVRoZSBTeXN0ZW0gTWFuYWdlbWVudCBCdXMgKFNNQnVzKSBpcyBhIHNpYmxpbmcgcHJvdG9jb2wuICBNb3N0IFNNQnVzCisJc3lzdGVtcyBhcmUgYWxzbyBJMkMgY29uZm9ybWFudC4gIFRoZSBlbGVjdHJpY2FsIGNvbnN0cmFpbnRzIGFyZQorCXRpZ2h0ZXIgZm9yIFNNQnVzLCBhbmQgaXQgc3RhbmRhcmRpemVzIHBhcnRpY3VsYXIgcHJvdG9jb2wgbWVzc2FnZXMKKwlhbmQgaWRpb21zLiAgQ29udHJvbGxlcnMgdGhhdCBzdXBwb3J0IEkyQyBjYW4gYWxzbyBzdXBwb3J0IG1vc3QKKwlTTUJ1cyBvcGVyYXRpb25zLCBidXQgU01CdXMgY29udHJvbGxlcnMgZG9uJ3Qgc3VwcG9ydCBhbGwgdGhlIHByb3RvY29sCisJb3B0aW9ucyB0aGF0IGFuIEkyQyBjb250cm9sbGVyIHdpbGwuCisJVGhlcmUgYXJlIGZ1bmN0aW9ucyB0byBwZXJmb3JtIHZhcmlvdXMgU01CdXMgcHJvdG9jb2wgb3BlcmF0aW9ucywKKwllaXRoZXIgdXNpbmcgSTJDIHByaW1pdGl2ZXMgb3IgYnkgaXNzdWluZyBTTUJ1cyBjb21tYW5kcyB0bworCWkyY19hZGFwdGVyIGRldmljZXMgd2hpY2ggZG9uJ3Qgc3VwcG9ydCB0aG9zZSBJMkMgb3BlcmF0aW9ucy4KKyAgICAgPC9wYXJhPgorCishSWluY2x1ZGUvbGludXgvaTJjLmgKKyFGZHJpdmVycy9pMmMvaTJjLWJvYXJkaW5mby5jIGkyY19yZWdpc3Rlcl9ib2FyZF9pbmZvCishRWRyaXZlcnMvaTJjL2kyYy1jb3JlLmMKKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJoc2kiPgorICAgICA8dGl0bGU+SGlnaCBTcGVlZCBTeW5jaHJvbm91cyBTZXJpYWwgSW50ZXJmYWNlIChIU0kpPC90aXRsZT4KKworICAgICA8cGFyYT4KKwlIaWdoIFNwZWVkIFN5bmNocm9ub3VzIFNlcmlhbCBJbnRlcmZhY2UgKEhTSSkgaXMgYQorCXNlcmlhbCBpbnRlcmZhY2UgbWFpbmx5IHVzZWQgZm9yIGNvbm5lY3RpbmcgYXBwbGljYXRpb24KKwllbmdpbmVzIChBUEUpIHdpdGggY2VsbHVsYXIgbW9kZW0gZW5naW5lcyAoQ01UKSBpbiBjZWxsdWxhcgorCWhhbmRzZXRzLgorCisJSFNJIHByb3ZpZGVzIG11bHRpcGxleGluZyBmb3IgdXAgdG8gMTYgbG9naWNhbCBjaGFubmVscywKKwlsb3ctbGF0ZW5jeSBhbmQgZnVsbCBkdXBsZXggY29tbXVuaWNhdGlvbi4KKyAgICAgPC9wYXJhPgorCishSWluY2x1ZGUvbGludXgvaHNpL2hzaS5oCishRWRyaXZlcnMvaHNpL2hzaS5jCisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0icHdtIj4KKyAgICA8dGl0bGU+UHVsc2UtV2lkdGggTW9kdWxhdGlvbiAoUFdNKTwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICBQdWxzZS13aWR0aCBtb2R1bGF0aW9uIGlzIGEgbW9kdWxhdGlvbiB0ZWNobmlxdWUgcHJpbWFyaWx5IHVzZWQgdG8KKyAgICAgIGNvbnRyb2wgcG93ZXIgc3VwcGxpZWQgdG8gZWxlY3RyaWNhbCBkZXZpY2VzLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIFRoZSBQV00gZnJhbWV3b3JrIHByb3ZpZGVzIGFuIGFic3RyYWN0aW9uIGZvciBwcm92aWRlcnMgYW5kIGNvbnN1bWVycworICAgICAgb2YgUFdNIHNpZ25hbHMuIEEgY29udHJvbGxlciB0aGF0IHByb3ZpZGVzIG9uZSBvciBtb3JlIFBXTSBzaWduYWxzIGlzCisgICAgICByZWdpc3RlcmVkIGFzIDxzdHJ1Y3RuYW1lPnN0cnVjdCBwd21fY2hpcDwvc3RydWN0bmFtZT4uIFByb3ZpZGVycyBhcmUKKyAgICAgIGV4cGVjdGVkIHRvIGVtYmVkIHRoaXMgc3RydWN0dXJlIGluIGEgZHJpdmVyLXNwZWNpZmljIHN0cnVjdHVyZS4gVGhpcworICAgICAgc3RydWN0dXJlIGNvbnRhaW5zIGZpZWxkcyB0aGF0IGRlc2NyaWJlIGEgcGFydGljdWxhciBjaGlwLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIEEgY2hpcCBleHBvc2VzIG9uZSBvciBtb3JlIFBXTSBzaWduYWwgc291cmNlcywgZWFjaCBvZiB3aGljaCBleHBvc2VkCisgICAgICBhcyBhIDxzdHJ1Y3RuYW1lPnN0cnVjdCBwd21fZGV2aWNlPC9zdHJ1Y3RuYW1lPi4gT3BlcmF0aW9ucyBjYW4gYmUKKyAgICAgIHBlcmZvcm1lZCBvbiBQV00gZGV2aWNlcyB0byBjb250cm9sIHRoZSBwZXJpb2QsIGR1dHkgY3ljbGUsIHBvbGFyaXR5CisgICAgICBhbmQgYWN0aXZlIHN0YXRlIG9mIHRoZSBzaWduYWwuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgTm90ZSB0aGF0IFBXTSBkZXZpY2VzIGFyZSBleGNsdXNpdmUgcmVzb3VyY2VzOiB0aGV5IGNhbiBhbHdheXMgb25seSBiZQorICAgICAgdXNlZCBieSBvbmUgY29uc3VtZXIgYXQgYSB0aW1lLgorICAgIDwvcGFyYT4KKyFJaW5jbHVkZS9saW51eC9wd20uaAorIUVkcml2ZXJzL3B3bS9jb3JlLmMKKyAgPC9jaGFwdGVyPgorCis8L2Jvb2s+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZGV2aWNlaW9ib29rLnRtcGwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZGV2aWNlaW9ib29rLnRtcGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQxOTlhMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9kZXZpY2Vpb2Jvb2sudG1wbApAQCAtMCwwICsxLDMyMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4xLjIvL0VOIgorCSJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMS4yL2RvY2Jvb2t4LmR0ZCIgW10+CisKKzxib29rIGlkPSJEb2luZ0lPIj4KKyA8Ym9va2luZm8+CisgIDx0aXRsZT5CdXMtSW5kZXBlbmRlbnQgRGV2aWNlIEFjY2Vzc2VzPC90aXRsZT4KKyAgCisgIDxhdXRob3Jncm91cD4KKyAgIDxhdXRob3I+CisgICAgPGZpcnN0bmFtZT5NYXR0aGV3PC9maXJzdG5hbWU+CisgICAgPHN1cm5hbWU+V2lsY294PC9zdXJuYW1lPgorICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgPGFkZHJlc3M+CisgICAgICA8ZW1haWw+bWF0dGhld0B3aWwuY3g8L2VtYWlsPgorICAgICA8L2FkZHJlc3M+CisgICAgPC9hZmZpbGlhdGlvbj4KKyAgIDwvYXV0aG9yPgorICA8L2F1dGhvcmdyb3VwPgorCisgIDxhdXRob3Jncm91cD4KKyAgIDxhdXRob3I+CisgICAgPGZpcnN0bmFtZT5BbGFuPC9maXJzdG5hbWU+CisgICAgPHN1cm5hbWU+Q294PC9zdXJuYW1lPgorICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgPGFkZHJlc3M+CisgICAgICA8ZW1haWw+YWxhbkBseG9yZ3VrLnVrdXUub3JnLnVrPC9lbWFpbD4KKyAgICAgPC9hZGRyZXNzPgorICAgIDwvYWZmaWxpYXRpb24+CisgICA8L2F1dGhvcj4KKyAgPC9hdXRob3Jncm91cD4KKworICA8Y29weXJpZ2h0PgorICAgPHllYXI+MjAwMTwveWVhcj4KKyAgIDxob2xkZXI+TWF0dGhldyBXaWxjb3g8L2hvbGRlcj4KKyAgPC9jb3B5cmlnaHQ+CisKKyAgPGxlZ2Fsbm90aWNlPgorICAgPHBhcmE+CisgICAgIFRoaXMgZG9jdW1lbnRhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZQorICAgICBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyCisgICAgIHZlcnNpb24uCisgICA8L3BhcmE+CisgICAgICAKKyAgIDxwYXJhPgorICAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCisgICAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQKKyAgICAgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorICAgICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgICA8L3BhcmE+CisgICAgICAKKyAgIDxwYXJhPgorICAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorICAgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICAgICBNQSAwMjExMS0xMzA3IFVTQQorICAgPC9wYXJhPgorICAgICAgCisgICA8cGFyYT4KKyAgICAgRm9yIG1vcmUgZGV0YWlscyBzZWUgdGhlIGZpbGUgQ09QWUlORyBpbiB0aGUgc291cmNlCisgICAgIGRpc3RyaWJ1dGlvbiBvZiBMaW51eC4KKyAgIDwvcGFyYT4KKyAgPC9sZWdhbG5vdGljZT4KKyA8L2Jvb2tpbmZvPgorCis8dG9jPjwvdG9jPgorCisgIDxjaGFwdGVyIGlkPSJpbnRybyI+CisgICAgICA8dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KKyAgPHBhcmE+CisJTGludXggcHJvdmlkZXMgYW4gQVBJIHdoaWNoIGFic3RyYWN0cyBwZXJmb3JtaW5nIElPIGFjcm9zcyBhbGwgYnVzc2VzCisJYW5kIGRldmljZXMsIGFsbG93aW5nIGRldmljZSBkcml2ZXJzIHRvIGJlIHdyaXR0ZW4gaW5kZXBlbmRlbnRseSBvZgorCWJ1cyB0eXBlLgorICA8L3BhcmE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iYnVncyI+CisgICAgIDx0aXRsZT5Lbm93biBCdWdzIEFuZCBBc3N1bXB0aW9uczwvdGl0bGU+CisgIDxwYXJhPgorCU5vbmUuCQorICA8L3BhcmE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0ibW1pbyI+CisgICAgPHRpdGxlPk1lbW9yeSBNYXBwZWQgSU88L3RpdGxlPgorICAgIDxzZWN0MSBpZD0iZ2V0dGluZ19hY2Nlc3NfdG9fdGhlX2RldmljZSI+CisgICAgICA8dGl0bGU+R2V0dGluZyBBY2Nlc3MgdG8gdGhlIERldmljZTwvdGl0bGU+CisgICAgICA8cGFyYT4KKwlUaGUgbW9zdCB3aWRlbHkgc3VwcG9ydGVkIGZvcm0gb2YgSU8gaXMgbWVtb3J5IG1hcHBlZCBJTy4KKwlUaGF0IGlzLCBhIHBhcnQgb2YgdGhlIENQVSdzIGFkZHJlc3Mgc3BhY2UgaXMgaW50ZXJwcmV0ZWQKKwlub3QgYXMgYWNjZXNzZXMgdG8gbWVtb3J5LCBidXQgYXMgYWNjZXNzZXMgdG8gYSBkZXZpY2UuICBTb21lCisJYXJjaGl0ZWN0dXJlcyBkZWZpbmUgZGV2aWNlcyB0byBiZSBhdCBhIGZpeGVkIGFkZHJlc3MsIGJ1dCBtb3N0CisJaGF2ZSBzb21lIG1ldGhvZCBvZiBkaXNjb3ZlcmluZyBkZXZpY2VzLiAgVGhlIFBDSSBidXMgd2FsayBpcyBhCisJZ29vZCBleGFtcGxlIG9mIHN1Y2ggYSBzY2hlbWUuCVRoaXMgZG9jdW1lbnQgZG9lcyBub3QgY292ZXIgaG93CisJdG8gcmVjZWl2ZSBzdWNoIGFuIGFkZHJlc3MsIGJ1dCBhc3N1bWVzIHlvdSBhcmUgc3RhcnRpbmcgd2l0aCBvbmUuCisJUGh5c2ljYWwgYWRkcmVzc2VzIGFyZSBvZiB0eXBlIHVuc2lnbmVkIGxvbmcuIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKwlUaGlzIGFkZHJlc3Mgc2hvdWxkIG5vdCBiZSB1c2VkIGRpcmVjdGx5LiAgSW5zdGVhZCwgdG8gZ2V0IGFuCisJYWRkcmVzcyBzdWl0YWJsZSBmb3IgcGFzc2luZyB0byB0aGUgYWNjZXNzb3IgZnVuY3Rpb25zIGRlc2NyaWJlZAorCWJlbG93LCB5b3Ugc2hvdWxkIGNhbGwgPGZ1bmN0aW9uPmlvcmVtYXA8L2Z1bmN0aW9uPi4KKwlBbiBhZGRyZXNzIHN1aXRhYmxlIGZvciBhY2Nlc3NpbmcgdGhlIGRldmljZSB3aWxsIGJlIHJldHVybmVkIHRvIHlvdS4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisJQWZ0ZXIgeW91J3ZlIGZpbmlzaGVkIHVzaW5nIHRoZSBkZXZpY2UgKHNheSwgaW4geW91ciBtb2R1bGUncworCWV4aXQgcm91dGluZSksIGNhbGwgPGZ1bmN0aW9uPmlvdW5tYXA8L2Z1bmN0aW9uPiBpbiBvcmRlciB0byByZXR1cm4KKwl0aGUgYWRkcmVzcyBzcGFjZSB0byB0aGUga2VybmVsLiAgTW9zdCBhcmNoaXRlY3R1cmVzIGFsbG9jYXRlIG5ldworCWFkZHJlc3Mgc3BhY2UgZWFjaCB0aW1lIHlvdSBjYWxsIDxmdW5jdGlvbj5pb3JlbWFwPC9mdW5jdGlvbj4sIGFuZAorCXRoZXkgY2FuIHJ1biBvdXQgdW5sZXNzIHlvdSBjYWxsIDxmdW5jdGlvbj5pb3VubWFwPC9mdW5jdGlvbj4uCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0MT4KKworICAgIDxzZWN0MSBpZD0iYWNjZXNzaW5nX3RoZV9kZXZpY2UiPgorICAgICAgPHRpdGxlPkFjY2Vzc2luZyB0aGUgZGV2aWNlPC90aXRsZT4KKyAgICAgIDxwYXJhPgorCVRoZSBwYXJ0IG9mIHRoZSBpbnRlcmZhY2UgbW9zdCB1c2VkIGJ5IGRyaXZlcnMgaXMgcmVhZGluZyBhbmQKKwl3cml0aW5nIG1lbW9yeS1tYXBwZWQgcmVnaXN0ZXJzIG9uIHRoZSBkZXZpY2UuCUxpbnV4IHByb3ZpZGVzCisJaW50ZXJmYWNlcyB0byByZWFkIGFuZCB3cml0ZSA4LWJpdCwgMTYtYml0LCAzMi1iaXQgYW5kIDY0LWJpdAorCXF1YW50aXRpZXMuICBEdWUgdG8gYSBoaXN0b3JpY2FsIGFjY2lkZW50LCB0aGVzZSBhcmUgbmFtZWQgYnl0ZSwKKwl3b3JkLCBsb25nIGFuZCBxdWFkIGFjY2Vzc2VzLiAgQm90aCByZWFkIGFuZCB3cml0ZSBhY2Nlc3NlcyBhcmUKKwlzdXBwb3J0ZWQ7IHRoZXJlIGlzIG5vIHByZWZldGNoIHN1cHBvcnQgYXQgdGhpcyB0aW1lLgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKwlUaGUgZnVuY3Rpb25zIGFyZSBuYW1lZCA8ZnVuY3Rpb24+cmVhZGI8L2Z1bmN0aW9uPiwKKwk8ZnVuY3Rpb24+cmVhZHc8L2Z1bmN0aW9uPiwgPGZ1bmN0aW9uPnJlYWRsPC9mdW5jdGlvbj4sCisJPGZ1bmN0aW9uPnJlYWRxPC9mdW5jdGlvbj4sIDxmdW5jdGlvbj5yZWFkYl9yZWxheGVkPC9mdW5jdGlvbj4sCisJPGZ1bmN0aW9uPnJlYWR3X3JlbGF4ZWQ8L2Z1bmN0aW9uPiwgPGZ1bmN0aW9uPnJlYWRsX3JlbGF4ZWQ8L2Z1bmN0aW9uPiwKKwk8ZnVuY3Rpb24+cmVhZHFfcmVsYXhlZDwvZnVuY3Rpb24+LCA8ZnVuY3Rpb24+d3JpdGViPC9mdW5jdGlvbj4sCisJPGZ1bmN0aW9uPndyaXRldzwvZnVuY3Rpb24+LCA8ZnVuY3Rpb24+d3JpdGVsPC9mdW5jdGlvbj4gYW5kCisJPGZ1bmN0aW9uPndyaXRlcTwvZnVuY3Rpb24+LgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKwlTb21lIGRldmljZXMgKHN1Y2ggYXMgZnJhbWVidWZmZXJzKSB3b3VsZCBsaWtlIHRvIHVzZSBsYXJnZXIKKwl0cmFuc2ZlcnMgdGhhbiA4IGJ5dGVzIGF0IGEgdGltZS4gIEZvciB0aGVzZSBkZXZpY2VzLCB0aGUKKwk8ZnVuY3Rpb24+bWVtY3B5X3RvaW88L2Z1bmN0aW9uPiwgPGZ1bmN0aW9uPm1lbWNweV9mcm9taW88L2Z1bmN0aW9uPgorCWFuZCA8ZnVuY3Rpb24+bWVtc2V0X2lvPC9mdW5jdGlvbj4gZnVuY3Rpb25zIGFyZSBwcm92aWRlZC4KKwlEbyBub3QgdXNlIG1lbXNldCBvciBtZW1jcHkgb24gSU8gYWRkcmVzc2VzOyB0aGV5CisJYXJlIG5vdCBndWFyYW50ZWVkIHRvIGNvcHkgZGF0YSBpbiBvcmRlci4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisJVGhlIHJlYWQgYW5kIHdyaXRlIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCB0byBiZSBvcmRlcmVkLiBUaGF0IGlzIHRoZQorCWNvbXBpbGVyIGlzIG5vdCBwZXJtaXR0ZWQgdG8gcmVvcmRlciB0aGUgSS9PIHNlcXVlbmNlLiBXaGVuIHRoZSAKKwlvcmRlcmluZyBjYW4gYmUgY29tcGlsZXIgb3B0aW1pc2VkLCB5b3UgY2FuIHVzZSA8ZnVuY3Rpb24+CisJX19yZWFkYjwvZnVuY3Rpb24+IGFuZCBmcmllbmRzIHRvIGluZGljYXRlIHRoZSByZWxheGVkIG9yZGVyaW5nLiBVc2UgCisJdGhpcyB3aXRoIGNhcmUuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorCVdoaWxlIHRoZSBiYXNpYyBmdW5jdGlvbnMgYXJlIGRlZmluZWQgdG8gYmUgc3luY2hyb25vdXMgd2l0aCByZXNwZWN0CisJdG8gZWFjaCBvdGhlciBhbmQgb3JkZXJlZCB3aXRoIHJlc3BlY3QgdG8gZWFjaCBvdGhlciB0aGUgYnVzc2VzIHRoZQorCWRldmljZXMgc2l0IG9uIG1heSB0aGVtc2VsdmVzIGhhdmUgYXN5bmNocm9uaWNpdHkuIEluIHBhcnRpY3VsYXIgbWFueQorCWF1dGhvcnMgYXJlIGJ1cm5lZCBieSB0aGUgZmFjdCB0aGF0IFBDSSBidXMgd3JpdGVzIGFyZSBwb3N0ZWQKKwlhc3luY2hyb25vdXNseS4gQSBkcml2ZXIgYXV0aG9yIG11c3QgaXNzdWUgYSByZWFkIGZyb20gdGhlIHNhbWUKKwlkZXZpY2UgdG8gZW5zdXJlIHRoYXQgd3JpdGVzIGhhdmUgb2NjdXJyZWQgaW4gdGhlIHNwZWNpZmljIGNhc2VzIHRoZQorCWF1dGhvciBjYXJlcy4gVGhpcyBraW5kIG9mIHByb3BlcnR5IGNhbm5vdCBiZSBoaWRkZW4gZnJvbSBkcml2ZXIKKwl3cml0ZXJzIGluIHRoZSBBUEkuICBJbiBzb21lIGNhc2VzLCB0aGUgcmVhZCB1c2VkIHRvIGZsdXNoIHRoZSBkZXZpY2UKKwltYXkgYmUgZXhwZWN0ZWQgdG8gZmFpbCAoaWYgdGhlIGNhcmQgaXMgcmVzZXR0aW5nLCBmb3IgZXhhbXBsZSkuICBJbgorCXRoYXQgY2FzZSwgdGhlIHJlYWQgc2hvdWxkIGJlIGRvbmUgZnJvbSBjb25maWcgc3BhY2UsIHdoaWNoIGlzCisJZ3VhcmFudGVlZCB0byBzb2Z0LWZhaWwgaWYgdGhlIGNhcmQgZG9lc24ndCByZXNwb25kLgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKwlUaGUgZm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgb2YgZmx1c2hpbmcgYSB3cml0ZSB0byBhIGRldmljZSB3aGVuCisJdGhlIGRyaXZlciB3b3VsZCBsaWtlIHRvIGVuc3VyZSB0aGUgd3JpdGUncyBlZmZlY3RzIGFyZSB2aXNpYmxlIHByaW9yCisJdG8gY29udGludWluZyBleGVjdXRpb24uCisgICAgICA8L3BhcmE+CisKKzxwcm9ncmFtbGlzdGluZz4KK3N0YXRpYyBpbmxpbmUgdm9pZAorcWxhMTI4MF9kaXNhYmxlX2ludHJzKHN0cnVjdCBzY3NpX3FsYV9ob3N0ICpoYSkKK3sKKwlzdHJ1Y3QgZGV2aWNlX3JlZyAqcmVnOworCisJcmVnID0gaGEtPmlvYmFzZTsKKwkvKiBkaXNhYmxlIHJpc2MgYW5kIGhvc3QgaW50ZXJydXB0cyAqLworCVdSVF9SRUdfV09SRCgmYW1wO3JlZy0+aWN0cmwsIDApOworCS8qCisJICogVGhlIGZvbGxvd2luZyByZWFkIHdpbGwgZW5zdXJlIHRoYXQgdGhlIGFib3ZlIHdyaXRlCisJICogaGFzIGJlZW4gcmVjZWl2ZWQgYnkgdGhlIGRldmljZSBiZWZvcmUgd2UgcmV0dXJuIGZyb20gdGhpcworCSAqIGZ1bmN0aW9uLgorCSAqLworCVJEX1JFR19XT1JEKCZhbXA7cmVnLT5pY3RybCk7CisJaGEtPmZsYWdzLmludHNfZW5hYmxlZCA9IDA7Cit9Cis8L3Byb2dyYW1saXN0aW5nPgorCisgICAgICA8cGFyYT4KKwlJbiBhZGRpdGlvbiB0byB3cml0ZSBwb3N0aW5nLCBvbiBzb21lIGxhcmdlIG11bHRpcHJvY2Vzc2luZyBzeXN0ZW1zCisJKGUuZy4gU0dJIENoYWxsZW5nZSwgT3JpZ2luIGFuZCBBbHRpeCBtYWNoaW5lcykgcG9zdGVkIHdyaXRlcyB3b24ndAorCWJlIHN0cm9uZ2x5IG9yZGVyZWQgY29taW5nIGZyb20gZGlmZmVyZW50IENQVXMuICBUaHVzIGl0J3MgaW1wb3J0YW50CisJdG8gcHJvcGVybHkgcHJvdGVjdCBwYXJ0cyBvZiB5b3VyIGRyaXZlciB0aGF0IGRvIG1lbW9yeS1tYXBwZWQgd3JpdGVzCisJd2l0aCBsb2NrcyBhbmQgdXNlIHRoZSA8ZnVuY3Rpb24+bW1pb3diPC9mdW5jdGlvbj4gdG8gbWFrZSBzdXJlIHRoZXkKKwlhcnJpdmUgaW4gdGhlIG9yZGVyIGludGVuZGVkLiAgSXNzdWluZyBhIHJlZ3VsYXIgPGZ1bmN0aW9uPnJlYWRYCisJPC9mdW5jdGlvbj4gd2lsbCBhbHNvIGVuc3VyZSB3cml0ZSBvcmRlcmluZywgYnV0IHNob3VsZCBvbmx5IGJlIHVzZWQKKwl3aGVuIHRoZSBkcml2ZXIgaGFzIHRvIGJlIHN1cmUgdGhhdCB0aGUgd3JpdGUgaGFzIGFjdHVhbGx5IGFycml2ZWQKKwlhdCB0aGUgZGV2aWNlIChub3QgdGhhdCBpdCdzIHNpbXBseSBvcmRlcmVkIHdpdGggcmVzcGVjdCB0byBvdGhlcgorCXdyaXRlcyksIHNpbmNlIGEgZnVsbCA8ZnVuY3Rpb24+cmVhZFg8L2Z1bmN0aW9uPiBpcyBhIHJlbGF0aXZlbHkKKwlleHBlbnNpdmUgb3BlcmF0aW9uLgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKwlHZW5lcmFsbHksIG9uZSBzaG91bGQgdXNlIDxmdW5jdGlvbj5tbWlvd2I8L2Z1bmN0aW9uPiBwcmlvciB0bworCXJlbGVhc2luZyBhIHNwaW5sb2NrIHRoYXQgcHJvdGVjdHMgcmVnaW9ucyB1c2luZyA8ZnVuY3Rpb24+d3JpdGViCisJPC9mdW5jdGlvbj4gb3Igc2ltaWxhciBmdW5jdGlvbnMgdGhhdCBhcmVuJ3Qgc3Vycm91bmRlZCBieSA8ZnVuY3Rpb24+CisJcmVhZGI8L2Z1bmN0aW9uPiBjYWxscywgd2hpY2ggd2lsbCBlbnN1cmUgb3JkZXJpbmcgYW5kIGZsdXNoaW5nLiAgVGhlCisJZm9sbG93aW5nIHBzZXVkb2NvZGUgaWxsdXN0cmF0ZXMgd2hhdCBtaWdodCBvY2N1ciBpZiB3cml0ZSBvcmRlcmluZworCWlzbid0IGd1YXJhbnRlZWQgdmlhIDxmdW5jdGlvbj5tbWlvd2I8L2Z1bmN0aW9uPiBvciBvbmUgb2YgdGhlCisJPGZ1bmN0aW9uPnJlYWRYPC9mdW5jdGlvbj4gZnVuY3Rpb25zLgorICAgICAgPC9wYXJhPgorCis8cHJvZ3JhbWxpc3Rpbmc+CitDUFUgQTogIHNwaW5fbG9ja19pcnFzYXZlKCZhbXA7ZGV2X2xvY2ssIGZsYWdzKQorQ1BVIEE6ICAuLi4KK0NQVSBBOiAgd3JpdGVsKG5ld3ZhbCwgcmluZ19wdHIpOworQ1BVIEE6ICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7ZGV2X2xvY2ssIGZsYWdzKQorICAgICAgICAuLi4KK0NQVSBCOiAgc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtkZXZfbG9jaywgZmxhZ3MpCitDUFUgQjogIHdyaXRlbChuZXd2YWwyLCByaW5nX3B0cik7CitDUFUgQjogIC4uLgorQ1BVIEI6ICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7ZGV2X2xvY2ssIGZsYWdzKQorPC9wcm9ncmFtbGlzdGluZz4KKworICAgICAgPHBhcmE+CisJSW4gdGhlIGNhc2UgYWJvdmUsIG5ld3ZhbDIgY291bGQgYmUgd3JpdHRlbiB0byByaW5nX3B0ciBiZWZvcmUKKwluZXd2YWwuICBGaXhpbmcgaXQgaXMgZWFzeSB0aG91Z2g6CisgICAgICA8L3BhcmE+CisKKzxwcm9ncmFtbGlzdGluZz4KK0NQVSBBOiAgc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtkZXZfbG9jaywgZmxhZ3MpCitDUFUgQTogIC4uLgorQ1BVIEE6ICB3cml0ZWwobmV3dmFsLCByaW5nX3B0cik7CitDUFUgQTogIG1taW93YigpOyAvKiBlbnN1cmUgbm8gb3RoZXIgd3JpdGVzIGJlYXQgdXMgdG8gdGhlIGRldmljZSAqLworQ1BVIEE6ICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7ZGV2X2xvY2ssIGZsYWdzKQorICAgICAgICAuLi4KK0NQVSBCOiAgc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtkZXZfbG9jaywgZmxhZ3MpCitDUFUgQjogIHdyaXRlbChuZXd2YWwyLCByaW5nX3B0cik7CitDUFUgQjogIC4uLgorQ1BVIEI6ICBtbWlvd2IoKTsKK0NQVSBCOiAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2Rldl9sb2NrLCBmbGFncykKKzwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgICAgIDxwYXJhPgorCVNlZSB0ZzMuYyBmb3IgYSByZWFsIHdvcmxkIGV4YW1wbGUgb2YgaG93IHRvIHVzZSA8ZnVuY3Rpb24+bW1pb3diCisJPC9mdW5jdGlvbj4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisJUENJIG9yZGVyaW5nIHJ1bGVzIGFsc28gZ3VhcmFudGVlIHRoYXQgUElPIHJlYWQgcmVzcG9uc2VzIGFycml2ZQorCWFmdGVyIGFueSBvdXRzdGFuZGluZyBETUEgd3JpdGVzIGZyb20gdGhhdCBidXMsIHNpbmNlIGZvciBzb21lIGRldmljZXMKKwl0aGUgcmVzdWx0IG9mIGEgPGZ1bmN0aW9uPnJlYWRiPC9mdW5jdGlvbj4gY2FsbCBtYXkgc2lnbmFsIHRvIHRoZQorCWRyaXZlciB0aGF0IGEgRE1BIHRyYW5zYWN0aW9uIGlzIGNvbXBsZXRlLiAgSW4gbWFueSBjYXNlcywgaG93ZXZlciwKKwl0aGUgZHJpdmVyIG1heSB3YW50IHRvIGluZGljYXRlIHRoYXQgdGhlIG5leHQKKwk8ZnVuY3Rpb24+cmVhZGI8L2Z1bmN0aW9uPiBjYWxsIGhhcyBubyByZWxhdGlvbiB0byBhbnkgcHJldmlvdXMgRE1BCisJd3JpdGVzIHBlcmZvcm1lZCBieSB0aGUgZGV2aWNlLiAgVGhlIGRyaXZlciBjYW4gdXNlCisJPGZ1bmN0aW9uPnJlYWRiX3JlbGF4ZWQ8L2Z1bmN0aW9uPiBmb3IgdGhlc2UgY2FzZXMsIGFsdGhvdWdoIG9ubHkKKwlzb21lIHBsYXRmb3JtcyB3aWxsIGhvbm9yIHRoZSByZWxheGVkIHNlbWFudGljcy4gIFVzaW5nIHRoZSByZWxheGVkCisJcmVhZCBmdW5jdGlvbnMgd2lsbCBwcm92aWRlIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIGJlbmVmaXRzIG9uCisJcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCBpdC4gIFRoZSBxbGEyeHh4IGRyaXZlciBwcm92aWRlcyBleGFtcGxlcworCW9mIGhvdyB0byB1c2UgPGZ1bmN0aW9uPnJlYWRYX3JlbGF4ZWQ8L2Z1bmN0aW9uPi4gIEluIG1hbnkgY2FzZXMsCisJYSBtYWpvcml0eSBvZiB0aGUgZHJpdmVyJ3MgPGZ1bmN0aW9uPnJlYWRYPC9mdW5jdGlvbj4gY2FsbHMgY2FuCisJc2FmZWx5IGJlIGNvbnZlcnRlZCB0byA8ZnVuY3Rpb24+cmVhZFhfcmVsYXhlZDwvZnVuY3Rpb24+IGNhbGxzLCBzaW5jZQorCW9ubHkgYSBmZXcgd2lsbCBpbmRpY2F0ZSBvciBkZXBlbmQgb24gRE1BIGNvbXBsZXRpb24uCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0MT4KKworICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9InBvcnRfc3BhY2VfYWNjZXNzZXMiPgorICAgIDx0aXRsZT5Qb3J0IFNwYWNlIEFjY2Vzc2VzPC90aXRsZT4KKyAgICA8c2VjdDEgaWQ9InBvcnRfc3BhY2VfZXhwbGFpbmVkIj4KKyAgICAgIDx0aXRsZT5Qb3J0IFNwYWNlIEV4cGxhaW5lZDwvdGl0bGU+CisKKyAgICAgIDxwYXJhPgorCUFub3RoZXIgZm9ybSBvZiBJTyBjb21tb25seSBzdXBwb3J0ZWQgaXMgUG9ydCBTcGFjZS4gIFRoaXMgaXMgYQorCXJhbmdlIG9mIGFkZHJlc3NlcyBzZXBhcmF0ZSB0byB0aGUgbm9ybWFsIG1lbW9yeSBhZGRyZXNzIHNwYWNlLgorCUFjY2VzcyB0byB0aGVzZSBhZGRyZXNzZXMgaXMgZ2VuZXJhbGx5IG5vdCBhcyBmYXN0IGFzIGFjY2Vzc2VzCisJdG8gdGhlIG1lbW9yeSBtYXBwZWQgYWRkcmVzc2VzLCBhbmQgaXQgYWxzbyBoYXMgYSBwb3RlbnRpYWxseQorCXNtYWxsZXIgYWRkcmVzcyBzcGFjZS4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisJVW5saWtlIG1lbW9yeSBtYXBwZWQgSU8sIG5vIHByZXBhcmF0aW9uIGlzIHJlcXVpcmVkCisJdG8gYWNjZXNzIHBvcnQgc3BhY2UuCisgICAgICA8L3BhcmE+CisKKyAgICA8L3NlY3QxPgorICAgIDxzZWN0MSBpZD0iYWNjZXNzaW5nX3BvcnRfc3BhY2UiPgorICAgICAgPHRpdGxlPkFjY2Vzc2luZyBQb3J0IFNwYWNlPC90aXRsZT4KKyAgICAgIDxwYXJhPgorCUFjY2Vzc2VzIHRvIHRoaXMgc3BhY2UgYXJlIHByb3ZpZGVkIHRocm91Z2ggYSBzZXQgb2YgZnVuY3Rpb25zCisJd2hpY2ggYWxsb3cgOC1iaXQsIDE2LWJpdCBhbmQgMzItYml0IGFjY2Vzc2VzOyBhbHNvCisJa25vd24gYXMgYnl0ZSwgd29yZCBhbmQgbG9uZy4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUKKwk8ZnVuY3Rpb24+aW5iPC9mdW5jdGlvbj4sIDxmdW5jdGlvbj5pbnc8L2Z1bmN0aW9uPiwKKwk8ZnVuY3Rpb24+aW5sPC9mdW5jdGlvbj4sIDxmdW5jdGlvbj5vdXRiPC9mdW5jdGlvbj4sCisJPGZ1bmN0aW9uPm91dHc8L2Z1bmN0aW9uPiBhbmQgPGZ1bmN0aW9uPm91dGw8L2Z1bmN0aW9uPi4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisJU29tZSB2YXJpYW50cyBhcmUgcHJvdmlkZWQgZm9yIHRoZXNlIGZ1bmN0aW9ucy4gIFNvbWUgZGV2aWNlcworCXJlcXVpcmUgdGhhdCBhY2Nlc3NlcyB0byB0aGVpciBwb3J0cyBhcmUgc2xvd2VkIGRvd24uICBUaGlzCisJZnVuY3Rpb25hbGl0eSBpcyBwcm92aWRlZCBieSBhcHBlbmRpbmcgYSA8ZnVuY3Rpb24+X3A8L2Z1bmN0aW9uPgorCXRvIHRoZSBlbmQgb2YgdGhlIGZ1bmN0aW9uLiAgVGhlcmUgYXJlIGFsc28gZXF1aXZhbGVudHMgdG8gbWVtY3B5LgorCVRoZSA8ZnVuY3Rpb24+aW5zPC9mdW5jdGlvbj4gYW5kIDxmdW5jdGlvbj5vdXRzPC9mdW5jdGlvbj4KKwlmdW5jdGlvbnMgY29weSBieXRlcywgd29yZHMgb3IgbG9uZ3MgdG8gdGhlIGdpdmVuIHBvcnQuCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0MT4KKworICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9InB1YmZ1bmN0aW9ucyI+CisgICAgIDx0aXRsZT5QdWJsaWMgRnVuY3Rpb25zIFByb3ZpZGVkPC90aXRsZT4KKyFJYXJjaC94ODYvaW5jbHVkZS9hc20vaW8uaAorIUVsaWIvcGNpX2lvbWFwLmMKKyAgPC9jaGFwdGVyPgorCis8L2Jvb2s+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZmlsZXN5c3RlbXMudG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9maWxlc3lzdGVtcy50bXBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwMDZiNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZmlsZXN5c3RlbXMudG1wbApAQCAtMCwwICsxLDM4MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4xLjIvL0VOIgorCSJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMS4yL2RvY2Jvb2t4LmR0ZCIgW10+CisKKzxib29rIGlkPSJMaW51eC1maWxlc3lzdGVtcy1BUEkiPgorIDxib29raW5mbz4KKyAgPHRpdGxlPkxpbnV4IEZpbGVzeXN0ZW1zIEFQSTwvdGl0bGU+CisKKyAgPGxlZ2Fsbm90aWNlPgorICAgPHBhcmE+CisgICAgIFRoaXMgZG9jdW1lbnRhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZQorICAgICBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyCisgICAgIHZlcnNpb24uCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCisgICAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQKKyAgICAgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorICAgICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorICAgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICAgICBNQSAwMjExMS0xMzA3IFVTQQorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICAgRm9yIG1vcmUgZGV0YWlscyBzZWUgdGhlIGZpbGUgQ09QWUlORyBpbiB0aGUgc291cmNlCisgICAgIGRpc3RyaWJ1dGlvbiBvZiBMaW51eC4KKyAgIDwvcGFyYT4KKyAgPC9sZWdhbG5vdGljZT4KKyA8L2Jvb2tpbmZvPgorCis8dG9jPjwvdG9jPgorCisgIDxjaGFwdGVyIGlkPSJ2ZnMiPgorICAgICA8dGl0bGU+VGhlIExpbnV4IFZGUzwvdGl0bGU+CisgICAgIDxzZWN0MSBpZD0idGhlX2ZpbGVzeXN0ZW1fdHlwZXMiPjx0aXRsZT5UaGUgRmlsZXN5c3RlbSB0eXBlczwvdGl0bGU+CishSWluY2x1ZGUvbGludXgvZnMuaAorICAgICA8L3NlY3QxPgorICAgICA8c2VjdDEgaWQ9InRoZV9kaXJlY3RvcnlfY2FjaGUiPjx0aXRsZT5UaGUgRGlyZWN0b3J5IENhY2hlPC90aXRsZT4KKyFFZnMvZGNhY2hlLmMKKyFJaW5jbHVkZS9saW51eC9kY2FjaGUuaAorICAgICA8L3NlY3QxPgorICAgICA8c2VjdDEgaWQ9Imlub2RlX2hhbmRsaW5nIj48dGl0bGU+SW5vZGUgSGFuZGxpbmc8L3RpdGxlPgorIUVmcy9pbm9kZS5jCishRWZzL2JhZF9pbm9kZS5jCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MSBpZD0icmVnaXN0cmF0aW9uX2FuZF9zdXBlcmJsb2NrcyI+PHRpdGxlPlJlZ2lzdHJhdGlvbiBhbmQgU3VwZXJibG9ja3M8L3RpdGxlPgorIUVmcy9zdXBlci5jCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MSBpZD0iZmlsZV9sb2NrcyI+PHRpdGxlPkZpbGUgTG9ja3M8L3RpdGxlPgorIUVmcy9sb2Nrcy5jCishSWZzL2xvY2tzLmMKKyAgICAgPC9zZWN0MT4KKyAgICAgPHNlY3QxIGlkPSJvdGhlcl9mdW5jdGlvbnMiPjx0aXRsZT5PdGhlciBGdW5jdGlvbnM8L3RpdGxlPgorIUVmcy9tcGFnZS5jCishRWZzL25hbWVpLmMKKyFFZnMvYnVmZmVyLmMKKyFFYmxvY2svYmlvLmMKKyFFZnMvc2VxX2ZpbGUuYworIUVmcy9maWxlc3lzdGVtcy5jCishRWZzL2ZzLXdyaXRlYmFjay5jCishRWZzL2Jsb2NrX2Rldi5jCisgICAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0icHJvYyI+CisgICAgIDx0aXRsZT5UaGUgcHJvYyBmaWxlc3lzdGVtPC90aXRsZT4KKworICAgICA8c2VjdDEgaWQ9InN5c2N0bF9pbnRlcmZhY2UiPjx0aXRsZT5zeXNjdGwgaW50ZXJmYWNlPC90aXRsZT4KKyFFa2VybmVsL3N5c2N0bC5jCisgICAgIDwvc2VjdDE+CisKKyAgICAgPHNlY3QxIGlkPSJwcm9jX2ZpbGVzeXN0ZW1faW50ZXJmYWNlIj48dGl0bGU+cHJvYyBmaWxlc3lzdGVtIGludGVyZmFjZTwvdGl0bGU+CishSWZzL3Byb2MvYmFzZS5jCisgICAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iZnNfZXZlbnRzIj4KKyAgICAgPHRpdGxlPkV2ZW50cyBiYXNlZCBvbiBmaWxlIGRlc2NyaXB0b3JzPC90aXRsZT4KKyFFZnMvZXZlbnRmZC5jCisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0ic3lzZnMiPgorICAgICA8dGl0bGU+VGhlIEZpbGVzeXN0ZW0gZm9yIEV4cG9ydGluZyBLZXJuZWwgT2JqZWN0czwvdGl0bGU+CishRWZzL3N5c2ZzL2ZpbGUuYworIUVmcy9zeXNmcy9zeW1saW5rLmMKKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJkZWJ1Z2ZzIj4KKyAgICAgPHRpdGxlPlRoZSBkZWJ1Z2ZzIGZpbGVzeXN0ZW08L3RpdGxlPgorCisgICAgIDxzZWN0MSBpZD0iZGVidWdmc19pbnRlcmZhY2UiPjx0aXRsZT5kZWJ1Z2ZzIGludGVyZmFjZTwvdGl0bGU+CishRWZzL2RlYnVnZnMvaW5vZGUuYworIUVmcy9kZWJ1Z2ZzL2ZpbGUuYworICAgICA8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9IkxpbnV4SkRCQVBJIj4KKyAgPGNoYXB0ZXJpbmZvPgorICA8dGl0bGU+VGhlIExpbnV4IEpvdXJuYWxsaW5nIEFQSTwvdGl0bGU+CisKKyAgPGF1dGhvcmdyb3VwPgorICA8YXV0aG9yPgorICAgICA8Zmlyc3RuYW1lPlJvZ2VyPC9maXJzdG5hbWU+CisgICAgIDxzdXJuYW1lPkdhbW1hbnM8L3N1cm5hbWU+CisgICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgPGFkZHJlc3M+CisgICAgICA8ZW1haWw+cmdhbW1hbnNAY29tcHV0ZXItc3VyZ2VyeS5jby51azwvZW1haWw+CisgICAgIDwvYWRkcmVzcz4KKyAgICA8L2FmZmlsaWF0aW9uPgorICAgICA8L2F1dGhvcj4KKyAgPC9hdXRob3Jncm91cD4KKworICA8YXV0aG9yZ3JvdXA+CisgICA8YXV0aG9yPgorICAgIDxmaXJzdG5hbWU+U3RlcGhlbjwvZmlyc3RuYW1lPgorICAgIDxzdXJuYW1lPlR3ZWVkaWU8L3N1cm5hbWU+CisgICAgPGFmZmlsaWF0aW9uPgorICAgICA8YWRkcmVzcz4KKyAgICAgIDxlbWFpbD5zY3RAcmVkaGF0LmNvbTwvZW1haWw+CisgICAgIDwvYWRkcmVzcz4KKyAgICA8L2FmZmlsaWF0aW9uPgorICAgPC9hdXRob3I+CisgIDwvYXV0aG9yZ3JvdXA+CisKKyAgPGNvcHlyaWdodD4KKyAgIDx5ZWFyPjIwMDI8L3llYXI+CisgICA8aG9sZGVyPlJvZ2VyIEdhbW1hbnM8L2hvbGRlcj4KKyAgPC9jb3B5cmlnaHQ+CisgIDwvY2hhcHRlcmluZm8+CisKKyAgPHRpdGxlPlRoZSBMaW51eCBKb3VybmFsbGluZyBBUEk8L3RpdGxlPgorCisgICAgPHNlY3QxIGlkPSJqb3VybmFsaW5nX292ZXJ2aWV3Ij4KKyAgICAgPHRpdGxlPk92ZXJ2aWV3PC90aXRsZT4KKyAgICA8c2VjdDIgaWQ9ImpvdXJuYWxpbmdfZGV0YWlscyI+CisgICAgIDx0aXRsZT5EZXRhaWxzPC90aXRsZT4KKzxwYXJhPgorVGhlIGpvdXJuYWxsaW5nIGxheWVyIGlzICBlYXN5IHRvIHVzZS4gWW91IG5lZWQgdG8KK2ZpcnN0IG9mIGFsbCBjcmVhdGUgYSBqb3VybmFsX3QgZGF0YSBzdHJ1Y3R1cmUuIFRoZXJlIGFyZQordHdvIGNhbGxzIHRvIGRvIHRoaXMgZGVwZW5kZW50IG9uIGhvdyB5b3UgZGVjaWRlIHRvIGFsbG9jYXRlIHRoZSBwaHlzaWNhbAorbWVkaWEgb24gd2hpY2ggdGhlIGpvdXJuYWwgcmVzaWRlcy4gVGhlIGpiZDJfam91cm5hbF9pbml0X2lub2RlKCkgY2FsbAoraXMgZm9yIGpvdXJuYWxzIHN0b3JlZCBpbiBmaWxlc3lzdGVtIGlub2Rlcywgb3IgdGhlIGpiZDJfam91cm5hbF9pbml0X2RldigpCitjYWxsIGNhbiBiZSB1c2VkIGZvciBqb3VybmFsIHN0b3JlZCBvbiBhIHJhdyBkZXZpY2UgKGluIGEgY29udGludW91cyByYW5nZQorb2YgYmxvY2tzKS4gQSBqb3VybmFsX3QgaXMgYSB0eXBlZGVmIGZvciBhIHN0cnVjdCBwb2ludGVyLCBzbyB3aGVuCit5b3UgYXJlIGZpbmFsbHkgZmluaXNoZWQgbWFrZSBzdXJlIHlvdSBjYWxsIGpiZDJfam91cm5hbF9kZXN0cm95KCkgb24gaXQKK3RvIGZyZWUgdXAgYW55IHVzZWQga2VybmVsIG1lbW9yeS4KKzwvcGFyYT4KKworPHBhcmE+CitPbmNlIHlvdSBoYXZlIGdvdCB5b3VyIGpvdXJuYWxfdCBvYmplY3QgeW91IG5lZWQgdG8gJ21vdW50JyBvciBsb2FkIHRoZSBqb3VybmFsCitmaWxlLiBUaGUgam91cm5hbGxpbmcgbGF5ZXIgZXhwZWN0cyB0aGUgc3BhY2UgZm9yIHRoZSBqb3VybmFsIHdhcyBhbHJlYWR5CithbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkIHByb3Blcmx5IGJ5IHRoZSB1c2Vyc3BhY2UgdG9vbHMuICBXaGVuIGxvYWRpbmcgdGhlCitqb3VybmFsIHlvdSBtdXN0IGNhbGwgamJkMl9qb3VybmFsX2xvYWQoKSB0byBwcm9jZXNzIGpvdXJuYWwgY29udGVudHMuICBJZiB0aGUKK2NsaWVudCBmaWxlIHN5c3RlbSBkZXRlY3RzIHRoZSBqb3VybmFsIGNvbnRlbnRzIGRvZXMgbm90IG5lZWQgdG8gYmUgcHJvY2Vzc2VkCisob3IgZXZlbiBuZWVkIG5vdCBoYXZlIHZhbGlkIGNvbnRlbnRzKSwgaXQgbWF5IGNhbGwgamJkMl9qb3VybmFsX3dpcGUoKSB0bworY2xlYXIgdGhlIGpvdXJuYWwgY29udGVudHMgYmVmb3JlIGNhbGxpbmcgamJkMl9qb3VybmFsX2xvYWQoKS4KKzwvcGFyYT4KKworPHBhcmE+CitOb3RlIHRoYXQgamJkMl9qb3VybmFsX3dpcGUoLi4sMCkgY2FsbHMgamJkMl9qb3VybmFsX3NraXBfcmVjb3ZlcnkoKSBmb3IgeW91IGlmCitpdCBkZXRlY3RzIGFueSBvdXRzdGFuZGluZyB0cmFuc2FjdGlvbnMgaW4gdGhlIGpvdXJuYWwgYW5kIHNpbWlsYXJseQoramJkMl9qb3VybmFsX2xvYWQoKSB3aWxsIGNhbGwgamJkMl9qb3VybmFsX3JlY292ZXIoKSBpZiBuZWNlc3NhcnkuICBJIHdvdWxkCithZHZpc2UgcmVhZGluZyBleHQ0X2xvYWRfam91cm5hbCgpIGluIGZzL2V4dDQvc3VwZXIuYyBmb3IgZXhhbXBsZXMgb24gdGhpcworc3RhZ2UuCis8L3BhcmE+CisKKzxwYXJhPgorTm93IHlvdSBjYW4gZ28gYWhlYWQgYW5kIHN0YXJ0IG1vZGlmeWluZyB0aGUgdW5kZXJseWluZworZmlsZXN5c3RlbS4gQWxtb3N0LgorPC9wYXJhPgorCis8cGFyYT4KKworWW91IHN0aWxsIG5lZWQgdG8gYWN0dWFsbHkgam91cm5hbCB5b3VyIGZpbGVzeXN0ZW0gY2hhbmdlcywgdGhpcworaXMgZG9uZSBieSB3cmFwcGluZyB0aGVtIGludG8gdHJhbnNhY3Rpb25zLiBBZGRpdGlvbmFsbHkgeW91CithbHNvIG5lZWQgdG8gd3JhcCB0aGUgbW9kaWZpY2F0aW9uIG9mIGVhY2ggb2YgdGhlIGJ1ZmZlcnMKK3dpdGggY2FsbHMgdG8gdGhlIGpvdXJuYWwgbGF5ZXIsIHNvIGl0IGtub3dzIHdoYXQgdGhlIG1vZGlmaWNhdGlvbnMKK3lvdSBhcmUgYWN0dWFsbHkgbWFraW5nIGFyZS4gVG8gZG8gdGhpcyB1c2UgamJkMl9qb3VybmFsX3N0YXJ0KCkgd2hpY2gKK3JldHVybnMgYSB0cmFuc2FjdGlvbiBoYW5kbGUuCis8L3BhcmE+CisKKzxwYXJhPgoramJkMl9qb3VybmFsX3N0YXJ0KCkKK2FuZCBpdHMgY291bnRlcnBhcnQgamJkMl9qb3VybmFsX3N0b3AoKSwgd2hpY2ggaW5kaWNhdGVzIHRoZSBlbmQgb2YgYQordHJhbnNhY3Rpb24gYXJlIG5lc3RhYmxlIGNhbGxzLCBzbyB5b3UgY2FuIHJlZW50ZXIgYSB0cmFuc2FjdGlvbiBpZiBuZWNlc3NhcnksCitidXQgcmVtZW1iZXIgeW91IG11c3QgY2FsbCBqYmQyX2pvdXJuYWxfc3RvcCgpIHRoZSBzYW1lIG51bWJlciBvZiB0aW1lcyBhcworamJkMl9qb3VybmFsX3N0YXJ0KCkgYmVmb3JlIHRoZSB0cmFuc2FjdGlvbiBpcyBjb21wbGV0ZWQgKG9yIG1vcmUgYWNjdXJhdGVseQorbGVhdmVzIHRoZSB1cGRhdGUgcGhhc2UpLiBFeHQ0L1ZGUyBtYWtlcyB1c2Ugb2YgdGhpcyBmZWF0dXJlIHRvIHNpbXBsaWZ5CitoYW5kbGluZyBvZiBpbm9kZSBkaXJ0eWluZywgcXVvdGEgc3VwcG9ydCwgZXRjLgorPC9wYXJhPgorCis8cGFyYT4KK0luc2lkZSBlYWNoIHRyYW5zYWN0aW9uIHlvdSBuZWVkIHRvIHdyYXAgdGhlIG1vZGlmaWNhdGlvbnMgdG8gdGhlCitpbmRpdmlkdWFsIGJ1ZmZlcnMgKGJsb2NrcykuIEJlZm9yZSB5b3Ugc3RhcnQgdG8gbW9kaWZ5IGEgYnVmZmVyIHlvdQorbmVlZCB0byBjYWxsIGpiZDJfam91cm5hbF9nZXRfe2NyZWF0ZSx3cml0ZSx1bmRvfV9hY2Nlc3MoKSBhcyBhcHByb3ByaWF0ZSwKK3RoaXMgYWxsb3dzIHRoZSBqb3VybmFsbGluZyBsYXllciB0byBjb3B5IHRoZSB1bm1vZGlmaWVkIGRhdGEgaWYgaXQKK25lZWRzIHRvLiBBZnRlciBhbGwgdGhlIGJ1ZmZlciBtYXkgYmUgcGFydCBvZiBhIHByZXZpb3VzbHkgdW5jb21taXR0ZWQKK3RyYW5zYWN0aW9uLgorQXQgdGhpcyBwb2ludCB5b3UgYXJlIGF0IGxhc3QgcmVhZHkgdG8gbW9kaWZ5IGEgYnVmZmVyLCBhbmQgb25jZQoreW91IGFyZSBoYXZlIGRvbmUgc28geW91IG5lZWQgdG8gY2FsbCBqYmQyX2pvdXJuYWxfZGlydHlfe21ldGEsfWRhdGEoKS4KK09yIGlmIHlvdSd2ZSBhc2tlZCBmb3IgYWNjZXNzIHRvIGEgYnVmZmVyIHlvdSBub3cga25vdyBpcyBub3cgbG9uZ2VyCityZXF1aXJlZCB0byBiZSBwdXNoZWQgYmFjayBvbiB0aGUgZGV2aWNlIHlvdSBjYW4gY2FsbCBqYmQyX2pvdXJuYWxfZm9yZ2V0KCkKK2luIG11Y2ggdGhlIHNhbWUgd2F5IGFzIHlvdSBtaWdodCBoYXZlIHVzZWQgYmZvcmdldCgpIGluIHRoZSBwYXN0LgorPC9wYXJhPgorCis8cGFyYT4KK0EgamJkMl9qb3VybmFsX2ZsdXNoKCkgbWF5IGJlIGNhbGxlZCBhdCBhbnkgdGltZSB0byBjb21taXQgYW5kIGNoZWNrcG9pbnQKK2FsbCB5b3VyIHRyYW5zYWN0aW9ucy4KKzwvcGFyYT4KKworPHBhcmE+CitUaGVuIGF0IHVtb3VudCB0aW1lICwgaW4geW91ciBwdXRfc3VwZXIoKSB5b3UgY2FuIHRoZW4gY2FsbCBqYmQyX2pvdXJuYWxfZGVzdHJveSgpCit0byBjbGVhbiB1cCB5b3VyIGluLWNvcmUgam91cm5hbCBvYmplY3QuCis8L3BhcmE+CisKKzxwYXJhPgorVW5mb3J0dW5hdGVseSB0aGVyZSBhIGNvdXBsZSBvZiB3YXlzIHRoZSBqb3VybmFsIGxheWVyIGNhbiBjYXVzZSBhIGRlYWRsb2NrLgorVGhlIGZpcnN0IHRoaW5nIHRvIG5vdGUgaXMgdGhhdCBlYWNoIHRhc2sgY2FuIG9ubHkgaGF2ZQorYSBzaW5nbGUgb3V0c3RhbmRpbmcgdHJhbnNhY3Rpb24gYXQgYW55IG9uZSB0aW1lLCByZW1lbWJlciBub3RoaW5nCitjb21taXRzIHVudGlsIHRoZSBvdXRlcm1vc3QgamJkMl9qb3VybmFsX3N0b3AoKS4gVGhpcyBtZWFucworeW91IG11c3QgY29tcGxldGUgdGhlIHRyYW5zYWN0aW9uIGF0IHRoZSBlbmQgb2YgZWFjaCBmaWxlL2lub2RlL2FkZHJlc3MKK2V0Yy4gb3BlcmF0aW9uIHlvdSBwZXJmb3JtLCBzbyB0aGF0IHRoZSBqb3VybmFsbGluZyBzeXN0ZW0gaXNuJ3QgcmUtZW50ZXJlZAorb24gYW5vdGhlciBqb3VybmFsLiBTaW5jZSB0cmFuc2FjdGlvbnMgY2FuJ3QgYmUgbmVzdGVkL2JhdGNoZWQKK2Fjcm9zcyBkaWZmZXJpbmcgam91cm5hbHMsIGFuZCBhbm90aGVyIGZpbGVzeXN0ZW0gb3RoZXIgdGhhbgoreW91cnMgKHNheSBleHQ0KSBtYXkgYmUgbW9kaWZpZWQgaW4gYSBsYXRlciBzeXNjYWxsLgorPC9wYXJhPgorCis8cGFyYT4KK1RoZSBzZWNvbmQgY2FzZSB0byBiZWFyIGluIG1pbmQgaXMgdGhhdCBqYmQyX2pvdXJuYWxfc3RhcnQoKSBjYW4KK2Jsb2NrIGlmIHRoZXJlIGlzbid0IGVub3VnaCBzcGFjZSBpbiB0aGUgam91cm5hbCBmb3IgeW91ciB0cmFuc2FjdGlvbgorKGJhc2VkIG9uIHRoZSBwYXNzZWQgbmJsb2NrcyBwYXJhbSkgLSB3aGVuIGl0IGJsb2NrcyBpdCBtZXJlbHkoISkgbmVlZHMgdG8KK3dhaXQgZm9yIHRyYW5zYWN0aW9ucyB0byBjb21wbGV0ZSBhbmQgYmUgY29tbWl0dGVkIGZyb20gb3RoZXIgdGFza3MsCitzbyBlc3NlbnRpYWxseSB3ZSBhcmUgd2FpdGluZyBmb3IgamJkMl9qb3VybmFsX3N0b3AoKS4gU28gdG8gYXZvaWQKK2RlYWRsb2NrcyB5b3UgbXVzdCB0cmVhdCBqYmQyX2pvdXJuYWxfc3RhcnQvc3RvcCgpIGFzIGlmIHRoZXkKK3dlcmUgc2VtYXBob3JlcyBhbmQgaW5jbHVkZSB0aGVtIGluIHlvdXIgc2VtYXBob3JlIG9yZGVyaW5nIHJ1bGVzIHRvIHByZXZlbnQKK2RlYWRsb2Nrcy4gTm90ZSB0aGF0IGpiZDJfam91cm5hbF9leHRlbmQoKSBoYXMgc2ltaWxhciBibG9ja2luZyBiZWhhdmlvdXIgdG8KK2piZDJfam91cm5hbF9zdGFydCgpIHNvIHlvdSBjYW4gZGVhZGxvY2sgaGVyZSBqdXN0IGFzIGVhc2lseSBhcyBvbgoramJkMl9qb3VybmFsX3N0YXJ0KCkuCis8L3BhcmE+CisKKzxwYXJhPgorVHJ5IHRvIHJlc2VydmUgdGhlIHJpZ2h0IG51bWJlciBvZiBibG9ja3MgdGhlIGZpcnN0IHRpbWUuIDstKS4gVGhpcyB3aWxsCitiZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgYmxvY2tzIHlvdSBhcmUgZ29pbmcgdG8gdG91Y2ggaW4gdGhpcyB0cmFuc2FjdGlvbi4KK0kgYWR2aXNlIGhhdmluZyBhIGxvb2sgYXQgYXQgbGVhc3QgZXh0NF9qYmQuaCB0byBzZWUgdGhlIGJhc2lzIG9uIHdoaWNoCitleHQ0IHVzZXMgdG8gbWFrZSB0aGVzZSBkZWNpc2lvbnMuCis8L3BhcmE+CisKKzxwYXJhPgorQW5vdGhlciB3cmlnZ2xlIHRvIHdhdGNoIG91dCBmb3IgaXMgeW91ciBvbi1kaXNrIGJsb2NrIGFsbG9jYXRpb24gc3RyYXRlZ3kuCitXaHk/IEJlY2F1c2UsIGlmIHlvdSBkbyBhIGRlbGV0ZSwgeW91IG5lZWQgdG8gZW5zdXJlIHlvdSBoYXZlbid0IHJldXNlZCBhbnkKK29mIHRoZSBmcmVlZCBibG9ja3MgdW50aWwgdGhlIHRyYW5zYWN0aW9uIGZyZWVpbmcgdGhlc2UgYmxvY2tzIGNvbW1pdHMuIElmIHlvdQorcmV1c2VkIHRoZXNlIGJsb2NrcyBhbmQgY3Jhc2ggaGFwcGVucywgdGhlcmUgaXMgbm8gd2F5IHRvIHJlc3RvcmUgdGhlIGNvbnRlbnRzCitvZiB0aGUgcmVhbGxvY2F0ZWQgYmxvY2tzIGF0IHRoZSBlbmQgb2YgdGhlIGxhc3QgZnVsbHkgY29tbWl0dGVkIHRyYW5zYWN0aW9uLgorCitPbmUgc2ltcGxlIHdheSBvZiBkb2luZyB0aGlzIGlzIHRvIG1hcmsgYmxvY2tzIGFzIGZyZWUgaW4gaW50ZXJuYWwgaW4tbWVtb3J5CitibG9jayBhbGxvY2F0aW9uIHN0cnVjdHVyZXMgb25seSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gZnJlZWluZyB0aGVtIGNvbW1pdHMuCitFeHQ0IHVzZXMgam91cm5hbCBjb21taXQgY2FsbGJhY2sgZm9yIHRoaXMgcHVycG9zZS4KKzwvcGFyYT4KKworPHBhcmE+CitXaXRoIGpvdXJuYWwgY29tbWl0IGNhbGxiYWNrcyB5b3UgY2FuIGFzayB0aGUgam91cm5hbGxpbmcgbGF5ZXIgdG8gY2FsbCBhCitjYWxsYmFjayBmdW5jdGlvbiB3aGVuIHRoZSB0cmFuc2FjdGlvbiBpcyBmaW5hbGx5IGNvbW1pdHRlZCB0byBkaXNrLCBzbyB0aGF0Cit5b3UgY2FuIGRvIHNvbWUgb2YgeW91ciBvd24gbWFuYWdlbWVudC4gWW91IGFzayB0aGUgam91cm5hbGxpbmcgbGF5ZXIgZm9yCitjYWxsaW5nIHRoZSBjYWxsYmFjayBieSBzaW1wbHkgc2V0dGluZyBqb3VybmFsLT5qX2NvbW1pdF9jYWxsYmFjayBmdW5jdGlvbgorcG9pbnRlciBhbmQgdGhhdCBmdW5jdGlvbiBpcyBjYWxsZWQgYWZ0ZXIgZWFjaCB0cmFuc2FjdGlvbiBjb21taXQuIFlvdSBjYW4gYWxzbwordXNlIHRyYW5zYWN0aW9uLT50X3ByaXZhdGVfbGlzdCBmb3IgYXR0YWNoaW5nIGVudHJpZXMgdG8gYSB0cmFuc2FjdGlvbiB0aGF0CituZWVkIHByb2Nlc3Npbmcgd2hlbiB0aGUgdHJhbnNhY3Rpb24gY29tbWl0cy4KKzwvcGFyYT4KKworPHBhcmE+CitKQkQyIGFsc28gcHJvdmlkZXMgYSB3YXkgdG8gYmxvY2sgYWxsIHRyYW5zYWN0aW9uIHVwZGF0ZXMgdmlhCitqYmQyX2pvdXJuYWxfe3VuLH1sb2NrX3VwZGF0ZXMoKS4gRXh0NCB1c2VzIHRoaXMgd2hlbiBpdCB3YW50cyBhIHdpbmRvdyB3aXRoIGEKK2NsZWFuIGFuZCBzdGFibGUgZnMgZm9yIGEgbW9tZW50LiAgRS5nLgorPC9wYXJhPgorCis8cHJvZ3JhbWxpc3Rpbmc+CisKKwlqYmQyX2pvdXJuYWxfbG9ja191cGRhdGVzKCkgLy9zdG9wIG5ldyBzdHVmZiBoYXBwZW5pbmcuLgorCWpiZDJfam91cm5hbF9mbHVzaCgpICAgICAgICAvLyBjaGVja3BvaW50IGV2ZXJ5dGhpbmcuCisJLi5kbyBzdHVmZiBvbiBzdGFibGUgZnMKKwlqYmQyX2pvdXJuYWxfdW5sb2NrX3VwZGF0ZXMoKSAvLyBjYXJyeSBvbiB3aXRoIGZpbGVzeXN0ZW0gdXNlLgorPC9wcm9ncmFtbGlzdGluZz4KKworPHBhcmE+CitUaGUgb3Bwb3J0dW5pdGllcyBmb3IgYWJ1c2UgYW5kIERPUyBhdHRhY2tzIHdpdGggdGhpcyBzaG91bGQgYmUgb2J2aW91cywKK2lmIHlvdSBhbGxvdyB1bnByaXZpbGVnZWQgdXNlcnNwYWNlIHRvIHRyaWdnZXIgY29kZXBhdGhzIGNvbnRhaW5pbmcgdGhlc2UKK2NhbGxzLgorPC9wYXJhPgorCisgICAgPC9zZWN0Mj4KKworICAgIDxzZWN0MiBpZD0iamJkX3N1bW1hcnkiPgorICAgICA8dGl0bGU+U3VtbWFyeTwvdGl0bGU+Cis8cGFyYT4KK1VzaW5nIHRoZSBqb3VybmFsIGlzIGEgbWF0dGVyIG9mIHdyYXBwaW5nIHRoZSBkaWZmZXJlbnQgY29udGV4dCBjaGFuZ2VzLAorYmVpbmcgZWFjaCBtb3VudCwgZWFjaCBtb2RpZmljYXRpb24gKHRyYW5zYWN0aW9uKSBhbmQgZWFjaCBjaGFuZ2VkIGJ1ZmZlcgordG8gdGVsbCB0aGUgam91cm5hbGxpbmcgbGF5ZXIgYWJvdXQgdGhlbS4KKzwvcGFyYT4KKworICAgIDwvc2VjdDI+CisKKyAgICA8L3NlY3QxPgorCisgICAgPHNlY3QxIGlkPSJkYXRhX3R5cGVzIj4KKyAgICAgPHRpdGxlPkRhdGEgVHlwZXM8L3RpdGxlPgorICAgICA8cGFyYT4KKwlUaGUgam91cm5hbGxpbmcgbGF5ZXIgdXNlcyB0eXBlZGVmcyB0byAnaGlkZScgdGhlIGNvbmNyZXRlIGRlZmluaXRpb25zCisJb2YgdGhlIHN0cnVjdHVyZXMgdXNlZC4gQXMgYSBjbGllbnQgb2YgdGhlIEpCRDIgbGF5ZXIgeW91IGNhbgorCWp1c3QgcmVseSBvbiB0aGUgdXNpbmcgdGhlIHBvaW50ZXIgYXMgYSBtYWdpYyBjb29raWUgIG9mIHNvbWUgc29ydC4KKworCU9idmlvdXNseSB0aGUgaGlkaW5nIGlzIG5vdCBlbmZvcmNlZCBhcyB0aGlzIGlzICdDJy4KKyAgICAgPC9wYXJhPgorCTxzZWN0MiBpZD0ic3RydWN0dXJlcyI+PHRpdGxlPlN0cnVjdHVyZXM8L3RpdGxlPgorIUlpbmNsdWRlL2xpbnV4L2piZDIuaAorCTwvc2VjdDI+CisgICAgPC9zZWN0MT4KKworICAgIDxzZWN0MSBpZD0iZnVuY3Rpb25zIj4KKyAgICAgPHRpdGxlPkZ1bmN0aW9uczwvdGl0bGU+CisgICAgIDxwYXJhPgorCVRoZSBmdW5jdGlvbnMgaGVyZSBhcmUgc3BsaXQgaW50byB0d28gZ3JvdXBzIHRob3NlIHRoYXQKKwlhZmZlY3QgYSBqb3VybmFsIGFzIGEgd2hvbGUsIGFuZCB0aG9zZSB3aGljaCBhcmUgdXNlZCB0bworCW1hbmFnZSB0cmFuc2FjdGlvbnMKKyAgICAgPC9wYXJhPgorCTxzZWN0MiBpZD0iam91cm5hbF9sZXZlbCI+PHRpdGxlPkpvdXJuYWwgTGV2ZWw8L3RpdGxlPgorIUVmcy9qYmQyL2pvdXJuYWwuYworIUlmcy9qYmQyL3JlY292ZXJ5LmMKKwk8L3NlY3QyPgorCTxzZWN0MiBpZD0idHJhbnNhY3Rpb25fbGV2ZWwiPjx0aXRsZT5UcmFuc2FzY3Rpb24gTGV2ZWw8L3RpdGxlPgorIUVmcy9qYmQyL3RyYW5zYWN0aW9uLmMKKwk8L3NlY3QyPgorICAgIDwvc2VjdDE+CisgICAgPHNlY3QxIGlkPSJzZWVfYWxzbyI+CisgICAgIDx0aXRsZT5TZWUgYWxzbzwvdGl0bGU+CisJPHBhcmE+CisJICA8Y2l0YXRpb24+CisJICAgPHVsaW5rIHVybD0iaHR0cDovL2tlcm5lbC5vcmcvcHViL2xpbnV4L2tlcm5lbC9wZW9wbGUvc2N0L2V4dDMvam91cm5hbC1kZXNpZ24ucHMuZ3oiPgorCSAgIAlKb3VybmFsaW5nIHRoZSBMaW51eCBleHQyZnMgRmlsZXN5c3RlbSwgTGludXhFeHBvIDk4LCBTdGVwaGVuIFR3ZWVkaWUKKwkgICA8L3VsaW5rPgorCSAgPC9jaXRhdGlvbj4KKwk8L3BhcmE+CisJPHBhcmE+CisJICAgPGNpdGF0aW9uPgorCSAgIDx1bGluayB1cmw9Imh0dHA6Ly9vbHN0cmFucy5zb3VyY2Vmb3JnZS5uZXQvcmVsZWFzZS9PTFMyMDAwLWV4dDMvT0xTMjAwMC1leHQzLmh0bWwiPgorCSAgIAlFeHQzIEpvdXJuYWxsaW5nIEZpbGVTeXN0ZW0sIE9MUyAyMDAwLCBEci4gU3RlcGhlbiBUd2VlZGllCisJICAgPC91bGluaz4KKwkgICA8L2NpdGF0aW9uPgorCTwvcGFyYT4KKyAgICA8L3NlY3QxPgorCisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0ic3BsaWNlIj4KKyAgICAgIDx0aXRsZT5zcGxpY2UgQVBJPC90aXRsZT4KKyAgPHBhcmE+CisJc3BsaWNlIGlzIGEgbWV0aG9kIGZvciBtb3ZpbmcgYmxvY2tzIG9mIGRhdGEgYXJvdW5kIGluc2lkZSB0aGUKKwlrZXJuZWwsIHdpdGhvdXQgY29udGludWFsbHkgdHJhbnNmZXJyaW5nIHRoZW0gYmV0d2VlbiB0aGUga2VybmVsCisJYW5kIHVzZXIgc3BhY2UuCisgIDwvcGFyYT4KKyFGZnMvc3BsaWNlLmMKKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJwaXBlcyI+CisgICAgICA8dGl0bGU+cGlwZXMgQVBJPC90aXRsZT4KKyAgPHBhcmE+CisJUGlwZSBpbnRlcmZhY2VzIGFyZSBhbGwgZm9yIGluLWtlcm5lbCAoYnVpbHRpbiBpbWFnZSkgdXNlLgorCVRoZXkgYXJlIG5vdCBleHBvcnRlZCBmb3IgdXNlIGJ5IG1vZHVsZXMuCisgIDwvcGFyYT4KKyFJaW5jbHVkZS9saW51eC9waXBlX2ZzX2kuaAorIUZmcy9waXBlLmMKKyAgPC9jaGFwdGVyPgorCis8L2Jvb2s+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZ2FkZ2V0LnRtcGwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZ2FkZ2V0LnRtcGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQxNjI5MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9nYWRnZXQudG1wbApAQCAtMCwwICsxLDc5MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4xLjIvL0VOIgorCSJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMS4yL2RvY2Jvb2t4LmR0ZCIgW10+CisKKzxib29rIGlkPSJVU0ItR2FkZ2V0LUFQSSI+CisgIDxib29raW5mbz4KKyAgICA8dGl0bGU+VVNCIEdhZGdldCBBUEkgZm9yIExpbnV4PC90aXRsZT4KKyAgICA8ZGF0ZT4yMCBBdWd1c3QgMjAwNDwvZGF0ZT4KKyAgICA8ZWRpdGlvbj4yMCBBdWd1c3QgMjAwNDwvZWRpdGlvbj4KKyAgCisgICAgPGxlZ2Fsbm90aWNlPgorICAgICAgIDxwYXJhPgorCSBUaGlzIGRvY3VtZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUKKwkgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworCSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKwkgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlcgorCSB2ZXJzaW9uLgorICAgICAgIDwvcGFyYT4KKwkgIAorICAgICAgIDxwYXJhPgorCSBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCisJIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQKKwkgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorCSBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgICAgICAgPC9wYXJhPgorCSAgCisgICAgICAgPHBhcmE+CisJIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworCSBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisJIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisJIE1BIDAyMTExLTEzMDcgVVNBCisgICAgICAgPC9wYXJhPgorCSAgCisgICAgICAgPHBhcmE+CisJIEZvciBtb3JlIGRldGFpbHMgc2VlIHRoZSBmaWxlIENPUFlJTkcgaW4gdGhlIHNvdXJjZQorCSBkaXN0cmlidXRpb24gb2YgTGludXguCisgICAgICAgPC9wYXJhPgorICAgIDwvbGVnYWxub3RpY2U+CisgICAgPGNvcHlyaWdodD4KKyAgICAgIDx5ZWFyPjIwMDMtMjAwNDwveWVhcj4KKyAgICAgIDxob2xkZXI+RGF2aWQgQnJvd25lbGw8L2hvbGRlcj4KKyAgICA8L2NvcHlyaWdodD4KKworICAgIDxhdXRob3I+CisgICAgICA8Zmlyc3RuYW1lPkRhdmlkPC9maXJzdG5hbWU+IAorICAgICAgPHN1cm5hbWU+QnJvd25lbGw8L3N1cm5hbWU+CisgICAgICA8YWZmaWxpYXRpb24+CisgICAgICAgIDxhZGRyZXNzPjxlbWFpbD5kYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PC9lbWFpbD48L2FkZHJlc3M+CisgICAgICA8L2FmZmlsaWF0aW9uPgorICAgIDwvYXV0aG9yPgorICA8L2Jvb2tpbmZvPgorCis8dG9jPjwvdG9jPgorCis8Y2hhcHRlciBpZD0iaW50cm8iPjx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorCis8cGFyYT5UaGlzIGRvY3VtZW50IHByZXNlbnRzIGEgTGludXgtVVNCICJHYWRnZXQiCitrZXJuZWwgbW9kZQorQVBJLCBmb3IgdXNlIHdpdGhpbiBwZXJpcGhlcmFscyBhbmQgb3RoZXIgVVNCIGRldmljZXMKK3RoYXQgZW1iZWQgTGludXguCitJdCBwcm92aWRlcyBhbiBvdmVydmlldyBvZiB0aGUgQVBJIHN0cnVjdHVyZSwKK2FuZCBzaG93cyBob3cgdGhhdCBmaXRzIGludG8gYSBzeXN0ZW0gZGV2ZWxvcG1lbnQgcHJvamVjdC4KK1RoaXMgaXMgdGhlIGZpcnN0IHN1Y2ggQVBJIHJlbGVhc2VkIG9uIExpbnV4IHRvIGFkZHJlc3MKK2EgbnVtYmVyIG9mIGltcG9ydGFudCBwcm9ibGVtcywgaW5jbHVkaW5nOiA8L3BhcmE+CisKKzxpdGVtaXplZGxpc3Q+CisgICAgPGxpc3RpdGVtPjxwYXJhPlN1cHBvcnRzIFVTQiAyLjAsIGZvciBoaWdoIHNwZWVkIGRldmljZXMgd2hpY2gKKwljYW4gc3RyZWFtIGRhdGEgYXQgc2V2ZXJhbCBkb3plbiBtZWdhYnl0ZXMgcGVyIHNlY29uZC4KKwk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+PHBhcmE+SGFuZGxlcyBkZXZpY2VzIHdpdGggZG96ZW5zIG9mIGVuZHBvaW50cyBqdXN0IGFzCisJd2VsbCBhcyBvbmVzIHdpdGgganVzdCB0d28gZml4ZWQtZnVuY3Rpb24gb25lcy4gIEdhZGdldCBkcml2ZXJzCisJY2FuIGJlIHdyaXR0ZW4gc28gdGhleSdyZSBlYXN5IHRvIHBvcnQgdG8gbmV3IGhhcmR3YXJlLgorCTwvcGFyYT48L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT48cGFyYT5GbGV4aWJsZSBlbm91Z2ggdG8gZXhwb3NlIG1vcmUgY29tcGxleCBVU0IgZGV2aWNlCisJY2FwYWJpbGl0aWVzIHN1Y2ggYXMgbXVsdGlwbGUgY29uZmlndXJhdGlvbnMsIG11bHRpcGxlIGludGVyZmFjZXMsCisJY29tcG9zaXRlIGRldmljZXMsCisJYW5kIGFsdGVybmF0ZSBpbnRlcmZhY2Ugc2V0dGluZ3MuCisJPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPjxwYXJhPlVTQiAiT24tVGhlLUdvIiAoT1RHKSBzdXBwb3J0LCBpbiBjb25qdW5jdGlvbgorCXdpdGggdXBkYXRlcyB0byB0aGUgTGludXgtVVNCIGhvc3Qgc2lkZS4KKwk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+PHBhcmE+U2hhcmluZyBkYXRhIHN0cnVjdHVyZXMgYW5kIEFQSSBtb2RlbHMgd2l0aCB0aGUKKwlMaW51eC1VU0IgaG9zdCBzaWRlIEFQSS4gIFRoaXMgaGVscHMgdGhlIE9URyBzdXBwb3J0LCBhbmQKKwlsb29rcyBmb3J3YXJkIHRvIG1vcmUtc3ltbWV0cmljIGZyYW1ld29ya3MgKHdoZXJlIHRoZSBzYW1lCisJSS9PIG1vZGVsIGlzIHVzZWQgYnkgYm90aCBob3N0IGFuZCBkZXZpY2Ugc2lkZSBkcml2ZXJzKS4KKwk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+PHBhcmE+TWluaW1hbGlzdCwgc28gaXQncyBlYXNpZXIgdG8gc3VwcG9ydCBuZXcgZGV2aWNlCisJY29udHJvbGxlciBoYXJkd2FyZS4gIEkvTyBwcm9jZXNzaW5nIGRvZXNuJ3QgaW1wbHkgbGFyZ2UKKwlkZW1hbmRzIGZvciBtZW1vcnkgb3IgQ1BVIHJlc291cmNlcy4KKwk8L3BhcmE+PC9saXN0aXRlbT4KKzwvaXRlbWl6ZWRsaXN0PgorCisKKzxwYXJhPk1vc3QgTGludXggZGV2ZWxvcGVycyB3aWxsIG5vdCBiZSBhYmxlIHRvIHVzZSB0aGlzIEFQSSwgc2luY2UgdGhleQoraGF2ZSBVU0IgImhvc3QiIGhhcmR3YXJlIGluIGEgUEMsIHdvcmtzdGF0aW9uLCBvciBzZXJ2ZXIuCitMaW51eCB1c2VycyB3aXRoIGVtYmVkZGVkIHN5c3RlbXMgYXJlIG1vcmUgbGlrZWx5IHRvCitoYXZlIFVTQiBwZXJpcGhlcmFsIGhhcmR3YXJlLgorVG8gZGlzdGluZ3Vpc2ggZHJpdmVycyBydW5uaW5nIGluc2lkZSBzdWNoIGhhcmR3YXJlIGZyb20gdGhlCittb3JlIGZhbWlsaWFyIExpbnV4ICJVU0IgZGV2aWNlIGRyaXZlcnMiLAord2hpY2ggYXJlIGhvc3Qgc2lkZSBwcm94aWVzIGZvciB0aGUgcmVhbCBVU0IgZGV2aWNlcywKK2EgZGlmZmVyZW50IHRlcm0gaXMgdXNlZDoKK3RoZSBkcml2ZXJzIGluc2lkZSB0aGUgcGVyaXBoZXJhbHMgYXJlICJVU0IgZ2FkZ2V0IGRyaXZlcnMiLgorSW4gVVNCIHByb3RvY29sIGludGVyYWN0aW9ucywgdGhlIGRldmljZSBkcml2ZXIgaXMgdGhlIG1hc3RlcgorKG9yICJjbGllbnQgZHJpdmVyIikKK2FuZCB0aGUgZ2FkZ2V0IGRyaXZlciBpcyB0aGUgc2xhdmUgKG9yICJmdW5jdGlvbiBkcml2ZXIiKS4KKzwvcGFyYT4KKworPHBhcmE+VGhlIGdhZGdldCBBUEkgcmVzZW1ibGVzIHRoZSBob3N0IHNpZGUgTGludXgtVVNCIEFQSSBpbiB0aGF0IGJvdGgKK3VzZSBxdWV1ZXMgb2YgcmVxdWVzdCBvYmplY3RzIHRvIHBhY2thZ2UgSS9PIGJ1ZmZlcnMsIGFuZCB0aG9zZSByZXF1ZXN0cworbWF5IGJlIHN1Ym1pdHRlZCBvciBjYW5jZWxlZC4KK1RoZXkgc2hhcmUgY29tbW9uIGRlZmluaXRpb25zIGZvciB0aGUgc3RhbmRhcmQgVVNCCis8ZW1waGFzaXM+Q2hhcHRlciA5PC9lbXBoYXNpcz4gbWVzc2FnZXMsIHN0cnVjdHVyZXMsIGFuZCBjb25zdGFudHMuCitBbHNvLCBib3RoIEFQSXMgYmluZCBhbmQgdW5iaW5kIGRyaXZlcnMgdG8gZGV2aWNlcy4KK1RoZSBBUElzIGRpZmZlciBpbiBkZXRhaWwsIHNpbmNlIHRoZSBob3N0IHNpZGUncyBjdXJyZW50CitVUkIgZnJhbWV3b3JrIGV4cG9zZXMgYSBudW1iZXIgb2YgaW1wbGVtZW50YXRpb24gZGV0YWlscworYW5kIGFzc3VtcHRpb25zIHRoYXQgYXJlIGluYXBwcm9wcmlhdGUgZm9yIGEgZ2FkZ2V0IEFQSS4KK1doaWxlIHRoZSBtb2RlbCBmb3IgY29udHJvbCB0cmFuc2ZlcnMgYW5kIGNvbmZpZ3VyYXRpb24KK21hbmFnZW1lbnQgaXMgbmVjZXNzYXJpbHkgZGlmZmVyZW50IChvbmUgc2lkZSBpcyBhIGhhcmR3YXJlLW5ldXRyYWwgbWFzdGVyLAordGhlIG90aGVyIGlzIGEgaGFyZHdhcmUtYXdhcmUgc2xhdmUpLCB0aGUgZW5kcG9pbnQgSS8wIEFQSSB1c2VkIGhlcmUKK3Nob3VsZCBhbHNvIGJlIHVzYWJsZSBmb3IgYW4gb3ZlcmhlYWQtcmVkdWNlZCBob3N0IHNpZGUgQVBJLgorPC9wYXJhPgorCis8L2NoYXB0ZXI+CisKKzxjaGFwdGVyIGlkPSJzdHJ1Y3R1cmUiPjx0aXRsZT5TdHJ1Y3R1cmUgb2YgR2FkZ2V0IERyaXZlcnM8L3RpdGxlPgorCis8cGFyYT5BIHN5c3RlbSBydW5uaW5nIGluc2lkZSBhIFVTQiBwZXJpcGhlcmFsCitub3JtYWxseSBoYXMgYXQgbGVhc3QgdGhyZWUgbGF5ZXJzIGluc2lkZSB0aGUga2VybmVsIHRvIGhhbmRsZQorVVNCIHByb3RvY29sIHByb2Nlc3NpbmcsIGFuZCBtYXkgaGF2ZSBhZGRpdGlvbmFsIGxheWVycyBpbgordXNlciBzcGFjZSBjb2RlLgorVGhlICJnYWRnZXQiIEFQSSBpcyB1c2VkIGJ5IHRoZSBtaWRkbGUgbGF5ZXIgdG8gaW50ZXJhY3QKK3dpdGggdGhlIGxvd2VzdCBsZXZlbCAod2hpY2ggZGlyZWN0bHkgaGFuZGxlcyBoYXJkd2FyZSkuCis8L3BhcmE+CisKKzxwYXJhPkluIExpbnV4LCBmcm9tIHRoZSBib3R0b20gdXAsIHRoZXNlIGxheWVycyBhcmU6Cis8L3BhcmE+CisKKzx2YXJpYWJsZWxpc3Q+CisKKyAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT48ZW1waGFzaXM+VVNCIENvbnRyb2xsZXIgRHJpdmVyPC9lbXBoYXNpcz48L3Rlcm0+CisKKwk8bGlzdGl0ZW0+CisJPHBhcmE+VGhpcyBpcyB0aGUgbG93ZXN0IHNvZnR3YXJlIGxldmVsLgorCUl0IGlzIHRoZSBvbmx5IGxheWVyIHRoYXQgdGFsa3MgdG8gaGFyZHdhcmUsCisJdGhyb3VnaCByZWdpc3RlcnMsIGZpZm9zLCBkbWEsIGlycXMsIGFuZCB0aGUgbGlrZS4KKwlUaGUgPGZpbGVuYW1lPiZsdDtsaW51eC91c2IvZ2FkZ2V0LmgmZ3Q7PC9maWxlbmFtZT4gQVBJIGFic3RyYWN0cworCXRoZSBwZXJpcGhlcmFsIGNvbnRyb2xsZXIgZW5kcG9pbnQgaGFyZHdhcmUuCisJVGhhdCBoYXJkd2FyZSBpcyBleHBvc2VkIHRocm91Z2ggZW5kcG9pbnQgb2JqZWN0cywgd2hpY2ggYWNjZXB0CisJc3RyZWFtcyBvZiBJTi9PVVQgYnVmZmVycywgYW5kIHRocm91Z2ggY2FsbGJhY2tzIHRoYXQgaW50ZXJhY3QKKwl3aXRoIGdhZGdldCBkcml2ZXJzLgorCVNpbmNlIG5vcm1hbCBVU0IgZGV2aWNlcyBvbmx5IGhhdmUgb25lIHVwc3RyZWFtCisJcG9ydCwgdGhleSBvbmx5IGhhdmUgb25lIG9mIHRoZXNlIGRyaXZlcnMuCisJVGhlIGNvbnRyb2xsZXIgZHJpdmVyIGNhbiBzdXBwb3J0IGFueSBudW1iZXIgb2YgZGlmZmVyZW50CisJZ2FkZ2V0IGRyaXZlcnMsIGJ1dCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSB1c2VkIGF0IGEgdGltZS4KKwk8L3BhcmE+CisKKwk8cGFyYT5FeGFtcGxlcyBvZiBzdWNoIGNvbnRyb2xsZXIgaGFyZHdhcmUgaW5jbHVkZQorCXRoZSBQQ0ktYmFzZWQgTmV0Q2hpcCAyMjgwIFVTQiAyLjAgaGlnaCBzcGVlZCBjb250cm9sbGVyLAorCXRoZSBTQS0xMXgwIG9yIFBYQS0yNXggVURDIChmb3VuZCB3aXRoaW4gbWFueSBQREFzKSwKKwlhbmQgYSB2YXJpZXR5IG9mIG90aGVyIHByb2R1Y3RzLgorCTwvcGFyYT4KKworCTwvbGlzdGl0ZW0+PC92YXJsaXN0ZW50cnk+CisKKyAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlbXBoYXNpcz5HYWRnZXQgRHJpdmVyPC9lbXBoYXNpcz48L3Rlcm0+CisKKwk8bGlzdGl0ZW0+CisJPHBhcmE+VGhlIGxvd2VyIGJvdW5kYXJ5IG9mIHRoaXMgZHJpdmVyIGltcGxlbWVudHMgaGFyZHdhcmUtbmV1dHJhbAorCVVTQiBmdW5jdGlvbnMsIHVzaW5nIGNhbGxzIHRvIHRoZSBjb250cm9sbGVyIGRyaXZlci4KKwlCZWNhdXNlIHN1Y2ggaGFyZHdhcmUgdmFyaWVzIHdpZGVseSBpbiBjYXBhYmlsaXRpZXMgYW5kIHJlc3RyaWN0aW9ucywKKwlhbmQgaXMgdXNlZCBpbiBlbWJlZGRlZCBlbnZpcm9ubWVudHMgd2hlcmUgc3BhY2UgaXMgYXQgYSBwcmVtaXVtLAorCXRoZSBnYWRnZXQgZHJpdmVyIGlzIG9mdGVuIGNvbmZpZ3VyZWQgYXQgY29tcGlsZSB0aW1lCisJdG8gd29yayB3aXRoIGVuZHBvaW50cyBzdXBwb3J0ZWQgYnkgb25lIHBhcnRpY3VsYXIgY29udHJvbGxlci4KKwlHYWRnZXQgZHJpdmVycyBtYXkgYmUgcG9ydGFibGUgdG8gc2V2ZXJhbCBkaWZmZXJlbnQgY29udHJvbGxlcnMsCisJdXNpbmcgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uCisJKFJlY2VudCBrZXJuZWxzIHN1YnN0YW50aWFsbHkgc2ltcGxpZnkgdGhlIHdvcmsgaW52b2x2ZWQgaW4KKwlzdXBwb3J0aW5nIG5ldyBoYXJkd2FyZSwgYnkgPGVtcGhhc2lzPmF1dG9jb25maWd1cmluZzwvZW1waGFzaXM+CisJZW5kcG9pbnRzIGF1dG9tYXRpY2FsbHkgZm9yIG1hbnkgYnVsay1vcmllbnRlZCBkcml2ZXJzLikKKwlHYWRnZXQgZHJpdmVyIHJlc3BvbnNpYmlsaXRpZXMgaW5jbHVkZToKKwk8L3BhcmE+CisJPGl0ZW1pemVkbGlzdD4KKwkgICAgPGxpc3RpdGVtPjxwYXJhPmhhbmRsaW5nIHNldHVwIHJlcXVlc3RzIChlcDAgcHJvdG9jb2wgcmVzcG9uc2VzKQorCQlwb3NzaWJseSBpbmNsdWRpbmcgY2xhc3Mtc3BlY2lmaWMgZnVuY3Rpb25hbGl0eQorCQk8L3BhcmE+PC9saXN0aXRlbT4KKwkgICAgPGxpc3RpdGVtPjxwYXJhPnJldHVybmluZyBjb25maWd1cmF0aW9uIGFuZCBzdHJpbmcgZGVzY3JpcHRvcnMKKwkJPC9wYXJhPjwvbGlzdGl0ZW0+CisJICAgIDxsaXN0aXRlbT48cGFyYT4ocmUpc2V0dGluZyBjb25maWd1cmF0aW9ucyBhbmQgaW50ZXJmYWNlCisJCWFsdHNldHRpbmdzLCBpbmNsdWRpbmcgZW5hYmxpbmcgYW5kIGNvbmZpZ3VyaW5nIGVuZHBvaW50cworCQk8L3BhcmE+PC9saXN0aXRlbT4KKwkgICAgPGxpc3RpdGVtPjxwYXJhPmhhbmRsaW5nIGxpZmUgY3ljbGUgZXZlbnRzLCBzdWNoIGFzIG1hbmFnaW5nCisJCWJpbmRpbmdzIHRvIGhhcmR3YXJlLAorCQlVU0Igc3VzcGVuZC9yZXN1bWUsIHJlbW90ZSB3YWtldXAsCisJCWFuZCBkaXNjb25uZWN0aW9uIGZyb20gdGhlIFVTQiBob3N0LgorCQk8L3BhcmE+PC9saXN0aXRlbT4KKwkgICAgPGxpc3RpdGVtPjxwYXJhPm1hbmFnaW5nIElOIGFuZCBPVVQgdHJhbnNmZXJzIG9uIGFsbCBjdXJyZW50bHkKKwkJZW5hYmxlZCBlbmRwb2ludHMKKwkJPC9wYXJhPjwvbGlzdGl0ZW0+CisJPC9pdGVtaXplZGxpc3Q+CisKKwk8cGFyYT4KKwlTdWNoIGRyaXZlcnMgbWF5IGJlIG1vZHVsZXMgb2YgcHJvcHJpZXRhcnkgY29kZSwgYWx0aG91Z2gKKwl0aGF0IGFwcHJvYWNoIGlzIGRpc2NvdXJhZ2VkIGluIHRoZSBMaW51eCBjb21tdW5pdHkuCisJPC9wYXJhPgorCTwvbGlzdGl0ZW0+PC92YXJsaXN0ZW50cnk+CisKKyAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlbXBoYXNpcz5VcHBlciBMZXZlbDwvZW1waGFzaXM+PC90ZXJtPgorCisJPGxpc3RpdGVtPgorCTxwYXJhPk1vc3QgZ2FkZ2V0IGRyaXZlcnMgaGF2ZSBhbiB1cHBlciBib3VuZGFyeSB0aGF0IGNvbm5lY3RzCisJdG8gc29tZSBMaW51eCBkcml2ZXIgb3IgZnJhbWV3b3JrIGluIExpbnV4LgorCVRocm91Z2ggdGhhdCBib3VuZGFyeSBmbG93cyB0aGUgZGF0YSB3aGljaCB0aGUgZ2FkZ2V0IGRyaXZlcgorCXByb2R1Y2VzIGFuZC9vciBjb25zdW1lcyB0aHJvdWdoIHByb3RvY29sIHRyYW5zZmVycyBvdmVyIFVTQi4KKwlFeGFtcGxlcyBpbmNsdWRlOgorCTwvcGFyYT4KKwk8aXRlbWl6ZWRsaXN0PgorCSAgICA8bGlzdGl0ZW0+PHBhcmE+dXNlciBtb2RlIGNvZGUsIHVzaW5nIGdlbmVyaWMgKGdhZGdldGZzKQorCSAgICAgICAgb3IgYXBwbGljYXRpb24gc3BlY2lmaWMgZmlsZXMgaW4KKwkJPGZpbGVuYW1lPi9kZXY8L2ZpbGVuYW1lPgorCQk8L3BhcmE+PC9saXN0aXRlbT4KKwkgICAgPGxpc3RpdGVtPjxwYXJhPm5ldHdvcmtpbmcgc3Vic3lzdGVtIChmb3IgbmV0d29yayBnYWRnZXRzLAorCQlsaWtlIHRoZSBDREMgRXRoZXJuZXQgTW9kZWwgZ2FkZ2V0IGRyaXZlcikKKwkJPC9wYXJhPjwvbGlzdGl0ZW0+CisJICAgIDxsaXN0aXRlbT48cGFyYT5kYXRhIGNhcHR1cmUgZHJpdmVycywgcGVyaGFwcyB2aWRlbzRMaW51eCBvcgorCQkgYSBzY2FubmVyIGRyaXZlcjsgb3IgdGVzdCBhbmQgbWVhc3VyZW1lbnQgaGFyZHdhcmUuCisJCSA8L3BhcmE+PC9saXN0aXRlbT4KKwkgICAgPGxpc3RpdGVtPjxwYXJhPmlucHV0IHN1YnN5c3RlbSAoZm9yIEhJRCBnYWRnZXRzKQorCQk8L3BhcmE+PC9saXN0aXRlbT4KKwkgICAgPGxpc3RpdGVtPjxwYXJhPnNvdW5kIHN1YnN5c3RlbSAoZm9yIGF1ZGlvIGdhZGdldHMpCisJCTwvcGFyYT48L2xpc3RpdGVtPgorCSAgICA8bGlzdGl0ZW0+PHBhcmE+ZmlsZSBzeXN0ZW0gKGZvciBQVFAgZ2FkZ2V0cykKKwkJPC9wYXJhPjwvbGlzdGl0ZW0+CisJICAgIDxsaXN0aXRlbT48cGFyYT5ibG9jayBpL28gc3Vic3lzdGVtIChmb3IgdXNiLXN0b3JhZ2UgZ2FkZ2V0cykKKwkJPC9wYXJhPjwvbGlzdGl0ZW0+CisJICAgIDxsaXN0aXRlbT48cGFyYT4uLi4gYW5kIG1vcmUgPC9wYXJhPjwvbGlzdGl0ZW0+CisJPC9pdGVtaXplZGxpc3Q+CisJPC9saXN0aXRlbT48L3Zhcmxpc3RlbnRyeT4KKworICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVtcGhhc2lzPkFkZGl0aW9uYWwgTGF5ZXJzPC9lbXBoYXNpcz48L3Rlcm0+CisKKwk8bGlzdGl0ZW0+CisJPHBhcmE+T3RoZXIgbGF5ZXJzIG1heSBleGlzdC4KKwlUaGVzZSBjb3VsZCBpbmNsdWRlIGtlcm5lbCBsYXllcnMsIHN1Y2ggYXMgbmV0d29yayBwcm90b2NvbCBzdGFja3MsCisJYXMgd2VsbCBhcyB1c2VyIG1vZGUgYXBwbGljYXRpb25zIGJ1aWxkaW5nIG9uIHN0YW5kYXJkIFBPU0lYCisJc3lzdGVtIGNhbGwgQVBJcyBzdWNoIGFzCisJPGVtcGhhc2lzPm9wZW4oKTwvZW1waGFzaXM+LCA8ZW1waGFzaXM+Y2xvc2UoKTwvZW1waGFzaXM+LAorCTxlbXBoYXNpcz5yZWFkKCk8L2VtcGhhc2lzPiBhbmQgPGVtcGhhc2lzPndyaXRlKCk8L2VtcGhhc2lzPi4KKwlPbiBuZXdlciBzeXN0ZW1zLCBQT1NJWCBBc3luYyBJL08gY2FsbHMgbWF5IGJlIGFuIG9wdGlvbi4KKwlTdWNoIHVzZXIgbW9kZSBjb2RlIHdpbGwgbm90IG5lY2Vzc2FyaWx5IGJlIHN1YmplY3QgdG8KKwl0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkuCisJPC9wYXJhPgorCTwvbGlzdGl0ZW0+PC92YXJsaXN0ZW50cnk+CisKKworPC92YXJpYWJsZWxpc3Q+CisKKzxwYXJhPk9URy1jYXBhYmxlIHN5c3RlbXMgd2lsbCBhbHNvIG5lZWQgdG8gaW5jbHVkZSBhIHN0YW5kYXJkIExpbnV4LVVTQgoraG9zdCBzaWRlIHN0YWNrLAord2l0aCA8ZW1waGFzaXM+dXNiY29yZTwvZW1waGFzaXM+LAorb25lIG9yIG1vcmUgPGVtcGhhc2lzPkhvc3QgQ29udHJvbGxlciBEcml2ZXJzPC9lbXBoYXNpcz4gKEhDRHMpLAorPGVtcGhhc2lzPlVTQiBEZXZpY2UgRHJpdmVyczwvZW1waGFzaXM+IHRvIHN1cHBvcnQKK3RoZSBPVEcgIlRhcmdldGVkIFBlcmlwaGVyYWwgTGlzdCIsCithbmQgc28gZm9ydGguCitUaGVyZSB3aWxsIGFsc28gYmUgYW4gPGVtcGhhc2lzPk9URyBDb250cm9sbGVyIERyaXZlcjwvZW1waGFzaXM+LAord2hpY2ggaXMgdmlzaWJsZSB0byBnYWRnZXQgYW5kIGRldmljZSBkcml2ZXIgZGV2ZWxvcGVycyBvbmx5IGluZGlyZWN0bHkuCitUaGF0IGhlbHBzIHRoZSBob3N0IGFuZCBkZXZpY2Ugc2lkZSBVU0IgY29udHJvbGxlcnMgaW1wbGVtZW50IHRoZQordHdvIG5ldyBPVEcgcHJvdG9jb2xzIChITlAgYW5kIFNSUCkuCitSb2xlcyBzd2l0Y2ggKGhvc3QgdG8gcGVyaXBoZXJhbCwgb3IgdmljZSB2ZXJzYSkgdXNpbmcgSE5QCitkdXJpbmcgVVNCIHN1c3BlbmQgcHJvY2Vzc2luZywgYW5kIFNSUCBjYW4gYmUgdmlld2VkIGFzIGEKK21vcmUgYmF0dGVyeS1mcmllbmRseSBraW5kIG9mIGRldmljZSB3YWtldXAgcHJvdG9jb2wuCis8L3BhcmE+CisKKzxwYXJhPk92ZXIgdGltZSwgcmV1c2FibGUgdXRpbGl0aWVzIGFyZSBldm9sdmluZyB0byBoZWxwIG1ha2Ugc29tZQorZ2FkZ2V0IGRyaXZlciB0YXNrcyBzaW1wbGVyLgorRm9yIGV4YW1wbGUsIGJ1aWxkaW5nIGNvbmZpZ3VyYXRpb24gZGVzY3JpcHRvcnMgZnJvbSB2ZWN0b3JzIG9mCitkZXNjcmlwdG9ycyBmb3IgdGhlIGNvbmZpZ3VyYXRpb25zIGludGVyZmFjZXMgYW5kIGVuZHBvaW50cyBpcworbm93IGF1dG9tYXRlZCwgYW5kIG1hbnkgZHJpdmVycyBub3cgdXNlIGF1dG9jb25maWd1cmF0aW9uIHRvCitjaG9vc2UgaGFyZHdhcmUgZW5kcG9pbnRzIGFuZCBpbml0aWFsaXplIHRoZWlyIGRlc2NyaXB0b3JzLgorCitBIHBvdGVudGlhbCBleGFtcGxlIG9mIHBhcnRpY3VsYXIgaW50ZXJlc3QKK2lzIGNvZGUgaW1wbGVtZW50aW5nIHN0YW5kYXJkIFVTQi1JRiBwcm90b2NvbHMgZm9yCitISUQsIG5ldHdvcmtpbmcsIHN0b3JhZ2UsIG9yIGF1ZGlvIGNsYXNzZXMuCitTb21lIGRldmVsb3BlcnMgYXJlIGludGVyZXN0ZWQgaW4gS0RCIG9yIEtHREIgaG9va3MsIHRvIGxldAordGFyZ2V0IGhhcmR3YXJlIGJlIHJlbW90ZWx5IGRlYnVnZ2VkLgorTW9zdCBzdWNoIFVTQiBwcm90b2NvbCBjb2RlIGRvZXNuJ3QgbmVlZCB0byBiZSBoYXJkd2FyZS1zcGVjaWZpYywKK2FueSBtb3JlIHRoYW4gbmV0d29yayBwcm90b2NvbHMgbGlrZSBYMTEsIEhUVFAsIG9yIE5GUyBhcmUuCitTdWNoIGdhZGdldC1zaWRlIGludGVyZmFjZSBkcml2ZXJzIHNob3VsZCBldmVudHVhbGx5IGJlIGNvbWJpbmVkLAordG8gaW1wbGVtZW50IGNvbXBvc2l0ZSBkZXZpY2VzLgorPC9wYXJhPgorCis8L2NoYXB0ZXI+CisKKworPGNoYXB0ZXIgaWQ9ImFwaSI+PHRpdGxlPktlcm5lbCBNb2RlIEdhZGdldCBBUEk8L3RpdGxlPgorCis8cGFyYT5HYWRnZXQgZHJpdmVycyBkZWNsYXJlIHRoZW1zZWx2ZXMgdGhyb3VnaCBhCis8ZW1waGFzaXM+c3RydWN0IHVzYl9nYWRnZXRfZHJpdmVyPC9lbXBoYXNpcz4sIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvcgorbW9zdCBwYXJ0cyBvZiBlbnVtZXJhdGlvbiBmb3IgYSA8ZW1waGFzaXM+c3RydWN0IHVzYl9nYWRnZXQ8L2VtcGhhc2lzPi4KK1RoZSByZXNwb25zZSB0byBhIHNldF9jb25maWd1cmF0aW9uIHVzdWFsbHkgaW52b2x2ZXMKK2VuYWJsaW5nIG9uZSBvciBtb3JlIG9mIHRoZSA8ZW1waGFzaXM+c3RydWN0IHVzYl9lcDwvZW1waGFzaXM+IG9iamVjdHMKK2V4cG9zZWQgYnkgdGhlIGdhZGdldCwgYW5kIHN1Ym1pdHRpbmcgb25lIG9yIG1vcmUKKzxlbXBoYXNpcz5zdHJ1Y3QgdXNiX3JlcXVlc3Q8L2VtcGhhc2lzPiBidWZmZXJzIHRvIHRyYW5zZmVyIGRhdGEuCitVbmRlcnN0YW5kIHRob3NlIGZvdXIgZGF0YSB0eXBlcywgYW5kIHRoZWlyIG9wZXJhdGlvbnMsIGFuZAoreW91IHdpbGwgdW5kZXJzdGFuZCBob3cgdGhpcyBBUEkgd29ya3MuCis8L3BhcmE+IAorCis8bm90ZT48dGl0bGU+SW5jb21wbGV0ZSBEYXRhIFR5cGUgRGVzY3JpcHRpb25zPC90aXRsZT4KKworPHBhcmE+VGhpcyBkb2N1bWVudGF0aW9uIHdhcyBwcmVwYXJlZCB1c2luZyB0aGUgc3RhbmRhcmQgTGludXgKK2tlcm5lbCA8ZmlsZW5hbWU+ZG9jcHJvYzwvZmlsZW5hbWU+IHRvb2wsIHdoaWNoIHR1cm5zIHRleHQKK2FuZCBpbi1jb2RlIGNvbW1lbnRzIGludG8gU0dNTCBEb2NCb29rIGFuZCB0aGVuIGludG8gdXNhYmxlCitmb3JtYXRzIHN1Y2ggYXMgSFRNTCBvciBQREYuCitPdGhlciB0aGFuIHRoZSAiQ2hhcHRlciA5IiBkYXRhIHR5cGVzLCBtb3N0IG9mIHRoZSBzaWduaWZpY2FudAorZGF0YSB0eXBlcyBhbmQgZnVuY3Rpb25zIGFyZSBkZXNjcmliZWQgaGVyZS4KKzwvcGFyYT4KKworPHBhcmE+SG93ZXZlciwgZG9jcHJvYyBkb2VzIG5vdCB1bmRlcnN0YW5kIGFsbCB0aGUgQyBjb25zdHJ1Y3RzCit0aGF0IGFyZSB1c2VkLCBzbyBzb21lIHJlbGV2YW50IGluZm9ybWF0aW9uIGlzIGxpa2VseSBvbWl0dGVkIGZyb20KK3doYXQgeW91IGFyZSByZWFkaW5nLiAgCitPbmUgZXhhbXBsZSBvZiBzdWNoIGluZm9ybWF0aW9uIGlzIGVuZHBvaW50IGF1dG9jb25maWd1cmF0aW9uLgorWW91J2xsIGhhdmUgdG8gcmVhZCB0aGUgaGVhZGVyIGZpbGUsIGFuZCB1c2UgZXhhbXBsZSBzb3VyY2UKK2NvZGUgKHN1Y2ggYXMgdGhhdCBmb3IgIkdhZGdldCBaZXJvIiksIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIEFQSS4KKzwvcGFyYT4KKworPHBhcmE+VGhlIHBhcnQgb2YgdGhlIEFQSSBpbXBsZW1lbnRpbmcgc29tZSBiYXNpYworZHJpdmVyIGNhcGFiaWxpdGllcyBpcyBzcGVjaWZpYyB0byB0aGUgdmVyc2lvbiBvZiB0aGUKK0xpbnV4IGtlcm5lbCB0aGF0J3MgaW4gdXNlLgorVGhlIDIuNiBrZXJuZWwgaW5jbHVkZXMgYSA8ZW1waGFzaXM+ZHJpdmVyIG1vZGVsPC9lbXBoYXNpcz4KK2ZyYW1ld29yayB0aGF0IGhhcyBubyBhbmFsb2d1ZSBvbiBlYXJsaWVyIGtlcm5lbHM7CitzbyB0aG9zZSBwYXJ0cyBvZiB0aGUgZ2FkZ2V0IEFQSSBhcmUgbm90IGZ1bGx5IHBvcnRhYmxlLgorKFRoZXkgYXJlIGltcGxlbWVudGVkIG9uIDIuNCBrZXJuZWxzLCBidXQgaW4gYSBkaWZmZXJlbnQgd2F5LikKK1RoZSBkcml2ZXIgbW9kZWwgc3RhdGUgaXMgYW5vdGhlciBwYXJ0IG9mIHRoaXMgQVBJIHRoYXQgaXMKK2lnbm9yZWQgYnkgdGhlIGtlcm5lbGRvYyB0b29scy4KKzwvcGFyYT4KKzwvbm90ZT4KKworPHBhcmE+VGhlIGNvcmUgQVBJIGRvZXMgbm90IGV4cG9zZQorZXZlcnkgcG9zc2libGUgaGFyZHdhcmUgZmVhdHVyZSwgb25seSB0aGUgbW9zdCB3aWRlbHkgYXZhaWxhYmxlIG9uZXMuCitUaGVyZSBhcmUgc2lnbmlmaWNhbnQgaGFyZHdhcmUgZmVhdHVyZXMsIHN1Y2ggYXMgZGV2aWNlLXRvLWRldmljZSBETUEKKyh3aXRob3V0IHRlbXBvcmFyeSBzdG9yYWdlIGluIGEgbWVtb3J5IGJ1ZmZlcikKK3RoYXQgd291bGQgYmUgYWRkZWQgdXNpbmcgaGFyZHdhcmUtc3BlY2lmaWMgQVBJcy4KKzwvcGFyYT4KKworPHBhcmE+VGhpcyBBUEkgYWxsb3dzIGRyaXZlcnMgdG8gdXNlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIGhhbmRsZQorZW5kcG9pbnQgY2FwYWJpbGl0aWVzIG9mIGRpZmZlcmVudCBoYXJkd2FyZSwgYnV0IGRvZXNuJ3QgcmVxdWlyZSB0aGF0LgorSGFyZHdhcmUgdGVuZHMgdG8gaGF2ZSBhcmJpdHJhcnkgcmVzdHJpY3Rpb25zLCByZWxhdGluZyB0bwordHJhbnNmZXIgdHlwZXMsIGFkZHJlc3NpbmcsIHBhY2tldCBzaXplcywgYnVmZmVyaW5nLCBhbmQgYXZhaWxhYmlsaXR5LgorQXMgYSBydWxlLCBzdWNoIGRpZmZlcmVuY2VzIG9ubHkgbWF0dGVyIGZvciAiZW5kcG9pbnQgemVybyIgbG9naWMKK3RoYXQgaGFuZGxlcyBkZXZpY2UgY29uZmlndXJhdGlvbiBhbmQgbWFuYWdlbWVudC4KK1RoZSBBUEkgc3VwcG9ydHMgbGltaXRlZCBydW4tdGltZQorZGV0ZWN0aW9uIG9mIGNhcGFiaWxpdGllcywgdGhyb3VnaCBuYW1pbmcgY29udmVudGlvbnMgZm9yIGVuZHBvaW50cy4KK01hbnkgZHJpdmVycyB3aWxsIGJlIGFibGUgdG8gYXQgbGVhc3QgcGFydGlhbGx5IGF1dG9jb25maWd1cmUKK3RoZW1zZWx2ZXMuCitJbiBwYXJ0aWN1bGFyLCBkcml2ZXIgaW5pdCBzZWN0aW9ucyB3aWxsIG9mdGVuIGhhdmUgZW5kcG9pbnQKK2F1dG9jb25maWd1cmF0aW9uIGxvZ2ljIHRoYXQgc2NhbnMgdGhlIGhhcmR3YXJlJ3MgbGlzdCBvZiBlbmRwb2ludHMKK3RvIGZpbmQgb25lcyBtYXRjaGluZyB0aGUgZHJpdmVyIHJlcXVpcmVtZW50cworKHJlbHlpbmcgb24gdGhvc2UgY29udmVudGlvbnMpLCB0byBlbGltaW5hdGUgc29tZSBvZiB0aGUgbW9zdAorY29tbW9uIHJlYXNvbnMgZm9yIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uLgorPC9wYXJhPgorCis8cGFyYT5MaWtlIHRoZSBMaW51eC1VU0IgaG9zdCBzaWRlIEFQSSwgdGhpcyBBUEkgZXhwb3NlcwordGhlICJjaHVua3kiIG5hdHVyZSBvZiBVU0IgbWVzc2FnZXM6ICBJL08gcmVxdWVzdHMgYXJlIGluIHRlcm1zCitvZiBvbmUgb3IgbW9yZSAicGFja2V0cyIsIGFuZCBwYWNrZXQgYm91bmRhcmllcyBhcmUgdmlzaWJsZSB0byBkcml2ZXJzLgorQ29tcGFyZWQgdG8gUlMtMjMyIHNlcmlhbCBwcm90b2NvbHMsIFVTQiByZXNlbWJsZXMKK3N5bmNocm9ub3VzIHByb3RvY29scyBsaWtlIEhETEMKKyhOIGJ5dGVzIHBlciBmcmFtZSwgbXVsdGlwb2ludCBhZGRyZXNzaW5nLCBob3N0IGFzIHRoZSBwcmltYXJ5CitzdGF0aW9uIGFuZCBkZXZpY2VzIGFzIHNlY29uZGFyeSBzdGF0aW9ucykKK21vcmUgdGhhbiBhc3luY2hyb25vdXMgb25lcworKHR0eSBzdHlsZTogIDggZGF0YSBiaXRzIHBlciBmcmFtZSwgbm8gcGFyaXR5LCBvbmUgc3RvcCBiaXQpLgorU28gZm9yIGV4YW1wbGUgdGhlIGNvbnRyb2xsZXIgZHJpdmVycyB3b24ndCBidWZmZXIKK3R3byBzaW5nbGUgYnl0ZSB3cml0ZXMgaW50byBhIHNpbmdsZSB0d28tYnl0ZSBVU0IgSU4gcGFja2V0LAorYWx0aG91Z2ggZ2FkZ2V0IGRyaXZlcnMgbWF5IGRvIHNvIHdoZW4gdGhleSBpbXBsZW1lbnQKK3Byb3RvY29scyB3aGVyZSBwYWNrZXQgYm91bmRhcmllcyAoYW5kICJzaG9ydCBwYWNrZXRzIikKK2FyZSBub3Qgc2lnbmlmaWNhbnQuCis8L3BhcmE+CisKKzxzZWN0MSBpZD0ibGlmZWN5Y2xlIj48dGl0bGU+RHJpdmVyIExpZmUgQ3ljbGU8L3RpdGxlPgorCis8cGFyYT5HYWRnZXQgZHJpdmVycyBtYWtlIGVuZHBvaW50IEkvTyByZXF1ZXN0cyB0byBoYXJkd2FyZSB3aXRob3V0CituZWVkaW5nIHRvIGtub3cgbWFueSBkZXRhaWxzIG9mIHRoZSBoYXJkd2FyZSwgYnV0IGRyaXZlcgorc2V0dXAvY29uZmlndXJhdGlvbiBjb2RlIG5lZWRzIHRvIGhhbmRsZSBzb21lIGRpZmZlcmVuY2VzLgorVXNlIHRoZSBBUEkgbGlrZSB0aGlzOgorPC9wYXJhPgorCis8b3JkZXJlZGxpc3QgbnVtZXJhdGlvbj0nYXJhYmljJz4KKworPGxpc3RpdGVtPjxwYXJhPlJlZ2lzdGVyIGEgZHJpdmVyIGZvciB0aGUgcGFydGljdWxhciBkZXZpY2Ugc2lkZQordXNiIGNvbnRyb2xsZXIgaGFyZHdhcmUsCitzdWNoIGFzIHRoZSBuZXQyMjgwIG9uIFBDSSAoVVNCIDIuMCksCitzYTExeDAgb3IgcHhhMjV4IGFzIGZvdW5kIGluIExpbnV4IFBEQXMsCithbmQgc28gb24uCitBdCB0aGlzIHBvaW50IHRoZSBkZXZpY2UgaXMgbG9naWNhbGx5IGluIHRoZSBVU0IgY2g5IGluaXRpYWwgc3RhdGUKKygiYXR0YWNoZWQiKSwgZHJhd2luZyBubyBwb3dlciBhbmQgbm90IHVzYWJsZQorKHNpbmNlIGl0IGRvZXMgbm90IHlldCBzdXBwb3J0IGVudW1lcmF0aW9uKS4KK0FueSBob3N0IHNob3VsZCBub3Qgc2VlIHRoZSBkZXZpY2UsIHNpbmNlIGl0J3Mgbm90CithY3RpdmF0ZWQgdGhlIGRhdGEgbGluZSBwdWxsdXAgdXNlZCBieSB0aGUgaG9zdCB0bworZGV0ZWN0IGEgZGV2aWNlLCBldmVuIGlmIFZCVVMgcG93ZXIgaXMgYXZhaWxhYmxlLgorPC9wYXJhPjwvbGlzdGl0ZW0+CisKKzxsaXN0aXRlbT48cGFyYT5SZWdpc3RlciBhIGdhZGdldCBkcml2ZXIgdGhhdCBpbXBsZW1lbnRzIHNvbWUgaGlnaGVyIGxldmVsCitkZXZpY2UgZnVuY3Rpb24uICBUaGF0IHdpbGwgdGhlbiBiaW5kKCkgdG8gYSB1c2JfZ2FkZ2V0LCB3aGljaAorYWN0aXZhdGVzIHRoZSBkYXRhIGxpbmUgcHVsbHVwIHNvbWV0aW1lIGFmdGVyIGRldGVjdGluZyBWQlVTLgorPC9wYXJhPjwvbGlzdGl0ZW0+CisKKzxsaXN0aXRlbT48cGFyYT5UaGUgaGFyZHdhcmUgZHJpdmVyIGNhbiBub3cgc3RhcnQgZW51bWVyYXRpbmcuCitUaGUgc3RlcHMgaXQgaGFuZGxlcyBhcmUgdG8gYWNjZXB0IFVTQiBwb3dlciBhbmQgc2V0X2FkZHJlc3MgcmVxdWVzdHMuCitPdGhlciBzdGVwcyBhcmUgaGFuZGxlZCBieSB0aGUgZ2FkZ2V0IGRyaXZlci4KK0lmIHRoZSBnYWRnZXQgZHJpdmVyIG1vZHVsZSBpcyB1bmxvYWRlZCBiZWZvcmUgdGhlIGhvc3Qgc3RhcnRzIHRvCitlbnVtZXJhdGUsIHN0ZXBzIGJlZm9yZSBzdGVwIDcgYXJlIHNraXBwZWQuCis8L3BhcmE+PC9saXN0aXRlbT4KKworPGxpc3RpdGVtPjxwYXJhPlRoZSBnYWRnZXQgZHJpdmVyJ3Mgc2V0dXAoKSBjYWxsIHJldHVybnMgdXNiIGRlc2NyaXB0b3JzLAorYmFzZWQgYm90aCBvbiB3aGF0IHRoZSBidXMgaW50ZXJmYWNlIGhhcmR3YXJlIHByb3ZpZGVzIGFuZCBvbiB0aGUKK2Z1bmN0aW9uYWxpdHkgYmVpbmcgaW1wbGVtZW50ZWQuCitUaGF0IGNhbiBpbnZvbHZlIGFsdGVybmF0ZSBzZXR0aW5ncyBvciBjb25maWd1cmF0aW9ucywKK3VubGVzcyB0aGUgaGFyZHdhcmUgcHJldmVudHMgc3VjaCBvcGVyYXRpb24uCitGb3IgT1RHIGRldmljZXMsIGVhY2ggY29uZmlndXJhdGlvbiBkZXNjcmlwdG9yIGluY2x1ZGVzCithbiBPVEcgZGVzY3JpcHRvci4KKzwvcGFyYT48L2xpc3RpdGVtPgorCis8bGlzdGl0ZW0+PHBhcmE+VGhlIGdhZGdldCBkcml2ZXIgaGFuZGxlcyB0aGUgbGFzdCBzdGVwIG9mIGVudW1lcmF0aW9uLAord2hlbiB0aGUgVVNCIGhvc3QgaXNzdWVzIGEgc2V0X2NvbmZpZ3VyYXRpb24gY2FsbC4KK0l0IGVuYWJsZXMgYWxsIGVuZHBvaW50cyB1c2VkIGluIHRoYXQgY29uZmlndXJhdGlvbiwKK3dpdGggYWxsIGludGVyZmFjZXMgaW4gdGhlaXIgZGVmYXVsdCBzZXR0aW5ncy4KK1RoYXQgaW52b2x2ZXMgdXNpbmcgYSBsaXN0IG9mIHRoZSBoYXJkd2FyZSdzIGVuZHBvaW50cywgZW5hYmxpbmcgZWFjaAorZW5kcG9pbnQgYWNjb3JkaW5nIHRvIGl0cyBkZXNjcmlwdG9yLgorSXQgbWF5IGFsc28gaW52b2x2ZSB1c2luZyA8ZnVuY3Rpb24+dXNiX2dhZGdldF92YnVzX2RyYXc8L2Z1bmN0aW9uPgordG8gbGV0IG1vcmUgcG93ZXIgYmUgZHJhd24gZnJvbSBWQlVTLCBhcyBhbGxvd2VkIGJ5IHRoYXQgY29uZmlndXJhdGlvbi4KK0ZvciBPVEcgZGV2aWNlcywgc2V0dGluZyBhIGNvbmZpZ3VyYXRpb24gbWF5IGFsc28gaW52b2x2ZSByZXBvcnRpbmcKK0hOUCBjYXBhYmlsaXRpZXMgdGhyb3VnaCBhIHVzZXIgaW50ZXJmYWNlLgorPC9wYXJhPjwvbGlzdGl0ZW0+CisKKzxsaXN0aXRlbT48cGFyYT5EbyByZWFsIHdvcmsgYW5kIHBlcmZvcm0gZGF0YSB0cmFuc2ZlcnMsIHBvc3NpYmx5IGludm9sdmluZworY2hhbmdlcyB0byBpbnRlcmZhY2Ugc2V0dGluZ3Mgb3Igc3dpdGNoaW5nIHRvIG5ldyBjb25maWd1cmF0aW9ucywgdW50aWwgdGhlCitkZXZpY2UgaXMgZGlzY29ubmVjdCgpZWQgZnJvbSB0aGUgaG9zdC4KK1F1ZXVlIGFueSBudW1iZXIgb2YgdHJhbnNmZXIgcmVxdWVzdHMgdG8gZWFjaCBlbmRwb2ludC4KK0l0IG1heSBiZSBzdXNwZW5kZWQgYW5kIHJlc3VtZWQgc2V2ZXJhbCB0aW1lcyBiZWZvcmUgYmVpbmcgZGlzY29ubmVjdGVkLgorT24gZGlzY29ubmVjdCwgdGhlIGRyaXZlcnMgZ28gYmFjayB0byBzdGVwIDMgKGFib3ZlKS4KKzwvcGFyYT48L2xpc3RpdGVtPgorCis8bGlzdGl0ZW0+PHBhcmE+V2hlbiB0aGUgZ2FkZ2V0IGRyaXZlciBtb2R1bGUgaXMgYmVpbmcgdW5sb2FkZWQsCit0aGUgZHJpdmVyIHVuYmluZCgpIGNhbGxiYWNrIGlzIGlzc3VlZC4gIFRoYXQgbGV0cyB0aGUgY29udHJvbGxlcgorZHJpdmVyIGJlIHVubG9hZGVkLgorPC9wYXJhPjwvbGlzdGl0ZW0+CisKKzwvb3JkZXJlZGxpc3Q+CisKKzxwYXJhPkRyaXZlcnMgd2lsbCBub3JtYWxseSBiZSBhcnJhbmdlZCBzbyB0aGF0IGp1c3QgbG9hZGluZyB0aGUKK2dhZGdldCBkcml2ZXIgbW9kdWxlIChvciBzdGF0aWNhbGx5IGxpbmtpbmcgaXQgaW50byBhIExpbnV4IGtlcm5lbCkKK2FsbG93cyB0aGUgcGVyaXBoZXJhbCBkZXZpY2UgdG8gYmUgZW51bWVyYXRlZCwgYnV0IHNvbWUgZHJpdmVycword2lsbCBkZWZlciBlbnVtZXJhdGlvbiB1bnRpbCBzb21lIGhpZ2hlciBsZXZlbCBjb21wb25lbnQgKGxpa2UKK2EgdXNlciBtb2RlIGRhZW1vbikgZW5hYmxlcyBpdC4KK05vdGUgdGhhdCBhdCB0aGlzIGxvd2VzdCBsZXZlbCB0aGVyZSBhcmUgbm8gcG9saWNpZXMgYWJvdXQgaG93CitlcDAgY29uZmlndXJhdGlvbiBsb2dpYyBpcyBpbXBsZW1lbnRlZCwKK2V4Y2VwdCB0aGF0IGl0IHNob3VsZCBvYmV5IFVTQiBzcGVjaWZpY2F0aW9ucy4KK1N1Y2ggaXNzdWVzIGFyZSBpbiB0aGUgZG9tYWluIG9mIGdhZGdldCBkcml2ZXJzLAoraW5jbHVkaW5nIGtub3dpbmcgYWJvdXQgaW1wbGVtZW50YXRpb24gY29uc3RyYWludHMKK2ltcG9zZWQgYnkgc29tZSBVU0IgY29udHJvbGxlcnMKK29yIHVuZGVyc3RhbmRpbmcgdGhhdCBjb21wb3NpdGUgZGV2aWNlcyBtaWdodCBoYXBwZW4gdG8KK2JlIGJ1aWx0IGJ5IGludGVncmF0aW5nIHJldXNhYmxlIGNvbXBvbmVudHMuCis8L3BhcmE+CisKKzxwYXJhPk5vdGUgdGhhdCB0aGUgbGlmZWN5Y2xlIGFib3ZlIGNhbiBiZSBzbGlnaHRseSBkaWZmZXJlbnQKK2ZvciBPVEcgZGV2aWNlcy4KK090aGVyIHRoYW4gcHJvdmlkaW5nIGFuIGFkZGl0aW9uYWwgT1RHIGRlc2NyaXB0b3IgaW4gZWFjaAorY29uZmlndXJhdGlvbiwgb25seSB0aGUgSE5QLXJlbGF0ZWQgZGlmZmVyZW5jZXMgYXJlIHBhcnRpY3VsYXJseQordmlzaWJsZSB0byBkcml2ZXIgY29kZS4KK1RoZXkgaW52b2x2ZSByZXBvcnRpbmcgcmVxdWlyZW1lbnRzIGR1cmluZyB0aGUgU0VUX0NPTkZJR1VSQVRJT04KK3JlcXVlc3QsIGFuZCB0aGUgb3B0aW9uIHRvIGludm9rZSBITlAgZHVyaW5nIHNvbWUgc3VzcGVuZCBjYWxsYmFja3MuCitBbHNvLCBTUlAgY2hhbmdlcyB0aGUgc2VtYW50aWNzIG9mCis8ZnVuY3Rpb24+dXNiX2dhZGdldF93YWtldXA8L2Z1bmN0aW9uPgorc2xpZ2h0bHkuCis8L3BhcmE+CisKKzwvc2VjdDE+CisKKzxzZWN0MSBpZD0iY2g5Ij48dGl0bGU+VVNCIDIuMCBDaGFwdGVyIDkgVHlwZXMgYW5kIENvbnN0YW50czwvdGl0bGU+CisKKzxwYXJhPkdhZGdldCBkcml2ZXJzCityZWx5IG9uIGNvbW1vbiBVU0Igc3RydWN0dXJlcyBhbmQgY29uc3RhbnRzCitkZWZpbmVkIGluIHRoZQorPGZpbGVuYW1lPiZsdDtsaW51eC91c2IvY2g5LmgmZ3Q7PC9maWxlbmFtZT4KK2hlYWRlciBmaWxlLCB3aGljaCBpcyBzdGFuZGFyZCBpbiBMaW51eCAyLjYga2VybmVscy4KK1RoZXNlIGFyZSB0aGUgc2FtZSB0eXBlcyBhbmQgY29uc3RhbnRzIHVzZWQgYnkgaG9zdAorc2lkZSBkcml2ZXJzIChhbmQgdXNiY29yZSkuCis8L3BhcmE+CisKKyFJaW5jbHVkZS9saW51eC91c2IvY2g5LmgKKzwvc2VjdDE+CisKKzxzZWN0MSBpZD0iY29yZSI+PHRpdGxlPkNvcmUgT2JqZWN0cyBhbmQgTWV0aG9kczwvdGl0bGU+CisKKzxwYXJhPlRoZXNlIGFyZSBkZWNsYXJlZCBpbgorPGZpbGVuYW1lPiZsdDtsaW51eC91c2IvZ2FkZ2V0LmgmZ3Q7PC9maWxlbmFtZT4sCithbmQgYXJlIHVzZWQgYnkgZ2FkZ2V0IGRyaXZlcnMgdG8gaW50ZXJhY3Qgd2l0aAorVVNCIHBlcmlwaGVyYWwgY29udHJvbGxlciBkcml2ZXJzLgorPC9wYXJhPgorCisJPCEtLSB5ZWVjaCwgdGhpcyBpcyB1Z2x5IGluIG5zZ21scyBQREYgb3V0cHV0LgorCisJICAgICB0aGUgUERGIGJvb2ttYXJrIGFuZCByZWZlbnRyeSBvdXRwdXQgbmVzdGluZyBpcyB3cm9uZywKKwkgICAgIGFuZCB0aGUgbWVtYmVyL2FyZ3VtZW50IGRvY3VtZW50YXRpb24gaW5kZW50cyB1Z2x5LgorCisJICAgICBwbHVzIHNvbWV0aGluZyAoZG9jcHJvYz8pIGFkZHMgd2hpdGVzcGFjZSBiZWZvcmUgdGhlCisJICAgICBkZXNjcmlwdGl2ZSBwYXJhZ3JhcGggdGV4dCwgc28gaXQgY2FuJ3QgbGluZSB1cCByaWdodAorCSAgICAgdW5sZXNzIHRoZSBleHBsYW5hdGlvbnMgYXJlIHRyaXZpYWwuCisJICAtLT4KKworIUlpbmNsdWRlL2xpbnV4L3VzYi9nYWRnZXQuaAorPC9zZWN0MT4KKworPHNlY3QxIGlkPSJ1dGlscyI+PHRpdGxlPk9wdGlvbmFsIFV0aWxpdGllczwvdGl0bGU+CisKKzxwYXJhPlRoZSBjb3JlIEFQSSBpcyBzdWZmaWNpZW50IGZvciB3cml0aW5nIGEgVVNCIEdhZGdldCBEcml2ZXIsCitidXQgc29tZSBvcHRpb25hbCB1dGlsaXRpZXMgYXJlIHByb3ZpZGVkIHRvIHNpbXBsaWZ5IGNvbW1vbiB0YXNrcy4KK1RoZXNlIHV0aWxpdGllcyBpbmNsdWRlIGVuZHBvaW50IGF1dG9jb25maWd1cmF0aW9uLgorPC9wYXJhPgorCishRWRyaXZlcnMvdXNiL2dhZGdldC91c2JzdHJpbmcuYworIUVkcml2ZXJzL3VzYi9nYWRnZXQvY29uZmlnLmMKKzwhLS0gIUVkcml2ZXJzL3VzYi9nYWRnZXQvZXBhdXRvY29uZi5jIC0tPgorPC9zZWN0MT4KKworPHNlY3QxIGlkPSJjb21wb3NpdGUiPjx0aXRsZT5Db21wb3NpdGUgRGV2aWNlIEZyYW1ld29yazwvdGl0bGU+CisKKzxwYXJhPlRoZSBjb3JlIEFQSSBpcyBzdWZmaWNpZW50IGZvciB3cml0aW5nIGRyaXZlcnMgZm9yIGNvbXBvc2l0ZQorVVNCIGRldmljZXMgKHdpdGggbW9yZSB0aGFuIG9uZSBmdW5jdGlvbiBpbiBhIGdpdmVuIGNvbmZpZ3VyYXRpb24pLAorYW5kIGFsc28gbXVsdGktY29uZmlndXJhdGlvbiBkZXZpY2VzIChhbHNvIG1vcmUgdGhhbiBvbmUgZnVuY3Rpb24sCitidXQgbm90IG5lY2Vzc2FyaWx5IHNoYXJpbmcgYSBnaXZlbiBjb25maWd1cmF0aW9uKS4KK1RoZXJlIGlzIGhvd2V2ZXIgYW4gb3B0aW9uYWwgZnJhbWV3b3JrIHdoaWNoIG1ha2VzIGl0IGVhc2llciB0bworcmV1c2UgYW5kIGNvbWJpbmUgZnVuY3Rpb25zLgorPC9wYXJhPgorCis8cGFyYT5EZXZpY2VzIHVzaW5nIHRoaXMgZnJhbWV3b3JrIHByb3ZpZGUgYSA8ZW1waGFzaXM+c3RydWN0Cit1c2JfY29tcG9zaXRlX2RyaXZlcjwvZW1waGFzaXM+LCB3aGljaCBpbiB0dXJuIHByb3ZpZGVzIG9uZSBvcgorbW9yZSA8ZW1waGFzaXM+c3RydWN0IHVzYl9jb25maWd1cmF0aW9uPC9lbXBoYXNpcz4gaW5zdGFuY2VzLgorRWFjaCBzdWNoIGNvbmZpZ3VyYXRpb24gaW5jbHVkZXMgYXQgbGVhc3Qgb25lCis8ZW1waGFzaXM+c3RydWN0IHVzYl9mdW5jdGlvbjwvZW1waGFzaXM+LCB3aGljaCBwYWNrYWdlcyBhIHVzZXIKK3Zpc2libGUgcm9sZSBzdWNoIGFzICJuZXR3b3JrIGxpbmsiIG9yICJtYXNzIHN0b3JhZ2UgZGV2aWNlIi4KK01hbmFnZW1lbnQgZnVuY3Rpb25zIG1heSBhbHNvIGV4aXN0LCBzdWNoIGFzICJEZXZpY2UgRmlybXdhcmUKK1VwZ3JhZGUiLgorPC9wYXJhPgorCishSWluY2x1ZGUvbGludXgvdXNiL2NvbXBvc2l0ZS5oCishRWRyaXZlcnMvdXNiL2dhZGdldC9jb21wb3NpdGUuYworCis8L3NlY3QxPgorCis8c2VjdDEgaWQ9ImZ1bmN0aW9ucyI+PHRpdGxlPkNvbXBvc2l0ZSBEZXZpY2UgRnVuY3Rpb25zPC90aXRsZT4KKworPHBhcmE+QXQgdGhpcyB3cml0aW5nLCBhIGZldyBvZiB0aGUgY3VycmVudCBnYWRnZXQgZHJpdmVycyBoYXZlCitiZWVuIGNvbnZlcnRlZCB0byB0aGlzIGZyYW1ld29yay4KK05lYXItdGVybSBwbGFucyBpbmNsdWRlIGNvbnZlcnRpbmcgYWxsIG9mIHRoZW0sIGV4Y2VwdCBmb3IgImdhZGdldGZzIi4KKzwvcGFyYT4KKworIUVkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl9hY20uYworIUVkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl9lY20uYworIUVkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl9zdWJzZXQuYworIUVkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl9vYmV4LmMKKyFFZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2Zfc2VyaWFsLmMKKworPC9zZWN0MT4KKworCis8L2NoYXB0ZXI+CisKKzxjaGFwdGVyIGlkPSJjb250cm9sbGVycyI+PHRpdGxlPlBlcmlwaGVyYWwgQ29udHJvbGxlciBEcml2ZXJzPC90aXRsZT4KKworPHBhcmE+VGhlIGZpcnN0IGhhcmR3YXJlIHN1cHBvcnRpbmcgdGhpcyBBUEkgd2FzIHRoZSBOZXRDaGlwIDIyODAKK2NvbnRyb2xsZXIsIHdoaWNoIHN1cHBvcnRzIFVTQiAyLjAgaGlnaCBzcGVlZCBhbmQgaXMgYmFzZWQgb24gUENJLgorVGhpcyBpcyB0aGUgPGZpbGVuYW1lPm5ldDIyODA8L2ZpbGVuYW1lPiBkcml2ZXIgbW9kdWxlLgorVGhlIGRyaXZlciBzdXBwb3J0cyBMaW51eCBrZXJuZWwgdmVyc2lvbnMgMi40IGFuZCAyLjY7Citjb250YWN0IE5ldENoaXAgVGVjaG5vbG9naWVzIGZvciBkZXZlbG9wbWVudCBib2FyZHMgYW5kIHByb2R1Y3QKK2luZm9ybWF0aW9uLgorPC9wYXJhPiAKKworPHBhcmE+T3RoZXIgaGFyZHdhcmUgd29ya2luZyBpbiB0aGUgImdhZGdldCIgZnJhbWV3b3JrIGluY2x1ZGVzOgorSW50ZWwncyBQWEEgMjV4IGFuZCBJWFA0Mnggc2VyaWVzIHByb2Nlc3NvcnMKKyg8ZmlsZW5hbWU+cHhhMnh4X3VkYzwvZmlsZW5hbWU+KSwKK1Rvc2hpYmEgVEM4NmMwMDEgIkdva3UtUyIgKDxmaWxlbmFtZT5nb2t1X3VkYzwvZmlsZW5hbWU+KSwKK1JlbmVzYXMgU0g3NzA1Lzc3MjcgKDxmaWxlbmFtZT5zaF91ZGM8L2ZpbGVuYW1lPiksCitNZWRpYVEgMTF4eCAoPGZpbGVuYW1lPm1xMTF4eF91ZGM8L2ZpbGVuYW1lPiksCitIeW5peCBITVMzMEM3MjAyICg8ZmlsZW5hbWU+aDcyMDJfdWRjPC9maWxlbmFtZT4pLAorTmF0aW9uYWwgOTMwMy80ICg8ZmlsZW5hbWU+bjk2MDRfdWRjPC9maWxlbmFtZT4pLAorVGV4YXMgSW5zdHJ1bWVudHMgT01BUCAoPGZpbGVuYW1lPm9tYXBfdWRjPC9maWxlbmFtZT4pLAorU2hhcnAgTEg3QTQweCAoPGZpbGVuYW1lPmxoN2E0MHhfdWRjPC9maWxlbmFtZT4pLAorYW5kIG1vcmUuCitNb3N0IG9mIHRob3NlIGFyZSBmdWxsIHNwZWVkIGNvbnRyb2xsZXJzLgorPC9wYXJhPgorCis8cGFyYT5BdCB0aGlzIHdyaXRpbmcsIHRoZXJlIGFyZSBwZW9wbGUgYXQgd29yayBvbiBkcml2ZXJzIGluCit0aGlzIGZyYW1ld29yayBmb3Igc2V2ZXJhbCBvdGhlciBVU0IgZGV2aWNlIGNvbnRyb2xsZXJzLAord2l0aCBwbGFucyB0byBtYWtlIG1hbnkgb2YgdGhlbSBiZSB3aWRlbHkgYXZhaWxhYmxlLgorPC9wYXJhPgorCis8IS0tICFFZHJpdmVycy91c2IvZ2FkZ2V0L25ldDIyODAuYyAtLT4KKworPHBhcmE+QSBwYXJ0aWFsIFVTQiBzaW11bGF0b3IsCit0aGUgPGZpbGVuYW1lPmR1bW15X2hjZDwvZmlsZW5hbWU+IGRyaXZlciwgaXMgYXZhaWxhYmxlLgorSXQgY2FuIGFjdCBsaWtlIGEgbmV0MjI4MCwgYSBweGEyNXgsIG9yIGFuIHNhMTF4MCBpbiB0ZXJtcworb2YgYXZhaWxhYmxlIGVuZHBvaW50cyBhbmQgZGV2aWNlIHNwZWVkczsgYW5kIGl0IHNpbXVsYXRlcworY29udHJvbCwgYnVsaywgYW5kIHRvIHNvbWUgZXh0ZW50IGludGVycnVwdCB0cmFuc2ZlcnMuCitUaGF0IGxldHMgeW91IGRldmVsb3Agc29tZSBwYXJ0cyBvZiBhIGdhZGdldCBkcml2ZXIgb24gYSBub3JtYWwgUEMsCit3aXRob3V0IGFueSBzcGVjaWFsIGhhcmR3YXJlLCBhbmQgcGVyaGFwcyB3aXRoIHRoZSBhc3Npc3RhbmNlCitvZiB0b29scyBzdWNoIGFzIEdEQiBydW5uaW5nIHdpdGggVXNlciBNb2RlIExpbnV4LgorQXQgbGVhc3Qgb25lIHBlcnNvbiBoYXMgZXhwcmVzc2VkIGludGVyZXN0IGluIGFkYXB0aW5nIHRoYXQKK2FwcHJvYWNoLCBob29raW5nIGl0IHVwIHRvIGEgc2ltdWxhdG9yIGZvciBhIG1pY3JvY29udHJvbGxlci4KK1N1Y2ggc2ltdWxhdG9ycyBjYW4gaGVscCBkZWJ1ZyBzdWJzeXN0ZW1zIHdoZXJlIHRoZSBydW50aW1lIGhhcmR3YXJlCitpcyB1bmZyaWVuZGx5IHRvIHNvZnR3YXJlIGRldmVsb3BtZW50LCBvciBpcyBub3QgeWV0IGF2YWlsYWJsZS4KKzwvcGFyYT4KKworPHBhcmE+U3VwcG9ydCBmb3Igb3RoZXIgY29udHJvbGxlcnMgaXMgZXhwZWN0ZWQgdG8gYmUgZGV2ZWxvcGVkCithbmQgY29udHJpYnV0ZWQKK292ZXIgdGltZSwgYXMgdGhpcyBkcml2ZXIgZnJhbWV3b3JrIGV2b2x2ZXMuCis8L3BhcmE+CisKKzwvY2hhcHRlcj4KKworPGNoYXB0ZXIgaWQ9ImdhZGdldCI+PHRpdGxlPkdhZGdldCBEcml2ZXJzPC90aXRsZT4KKworPHBhcmE+SW4gYWRkaXRpb24gdG8gPGVtcGhhc2lzPkdhZGdldCBaZXJvPC9lbXBoYXNpcz4KKyh1c2VkIHByaW1hcmlseSBmb3IgdGVzdGluZyBhbmQgZGV2ZWxvcG1lbnQgd2l0aCBkcml2ZXJzCitmb3IgdXNiIGNvbnRyb2xsZXIgaGFyZHdhcmUpLCBvdGhlciBnYWRnZXQgZHJpdmVycyBleGlzdC4KKzwvcGFyYT4KKworPHBhcmE+VGhlcmUncyBhbiA8ZW1waGFzaXM+ZXRoZXJuZXQ8L2VtcGhhc2lzPiBnYWRnZXQKK2RyaXZlciwgd2hpY2ggaW1wbGVtZW50cyBvbmUgb2YgdGhlIG1vc3QgdXNlZnVsCis8ZW1waGFzaXM+Q29tbXVuaWNhdGlvbnMgRGV2aWNlIENsYXNzPC9lbXBoYXNpcz4gKENEQykgbW9kZWxzLiAgCitPbmUgb2YgdGhlIHN0YW5kYXJkcyBmb3IgY2FibGUgbW9kZW0gaW50ZXJvcGVyYWJpbGl0eSBldmVuCitzcGVjaWZpZXMgdGhlIHVzZSBvZiB0aGlzIGV0aGVybmV0IG1vZGVsIGFzIG9uZSBvZiB0d28KK21hbmRhdG9yeSBvcHRpb25zLgorR2FkZ2V0cyB1c2luZyB0aGlzIGNvZGUgbG9vayB0byBhIFVTQiBob3N0IGFzIGlmIHRoZXkncmUKK2FuIEV0aGVybmV0IGFkYXB0ZXIuCitJdCBwcm92aWRlcyBhY2Nlc3MgdG8gYSBuZXR3b3JrIHdoZXJlIHRoZSBnYWRnZXQncyBDUFUgaXMgb25lIGhvc3QsCit3aGljaCBjb3VsZCBlYXNpbHkgYmUgYnJpZGdpbmcsIHJvdXRpbmcsIG9yIGZpcmV3YWxsaW5nCithY2Nlc3MgdG8gb3RoZXIgbmV0d29ya3MuCitTaW5jZSBzb21lIGhhcmR3YXJlIGNhbid0IGZ1bGx5IGltcGxlbWVudCB0aGUgQ0RDIEV0aGVybmV0CityZXF1aXJlbWVudHMsIHRoaXMgZHJpdmVyIGFsc28gaW1wbGVtZW50cyBhICJnb29kIHBhcnRzIG9ubHkiCitzdWJzZXQgb2YgQ0RDIEV0aGVybmV0LgorKFRoYXQgc3Vic2V0IGRvZXNuJ3QgYWR2ZXJ0aXNlIGl0c2VsZiBhcyBDREMgRXRoZXJuZXQsCit0byBhdm9pZCBjcmVhdGluZyBwcm9ibGVtcy4pCis8L3BhcmE+CisKKzxwYXJhPlN1cHBvcnQgZm9yIE1pY3Jvc29mdCdzIDxlbXBoYXNpcz5STkRJUzwvZW1waGFzaXM+Citwcm90b2NvbCBoYXMgYmVlbiBjb250cmlidXRlZCBieSBQZW5ndXRyb25peCBhbmQgQXVlcnN3YWxkIEdtYkguCitUaGlzIGlzIGxpa2UgQ0RDIEV0aGVybmV0LCBidXQgaXQgcnVucyBvbiBtb3JlIHNsaWdodGx5IFVTQiBoYXJkd2FyZQorKGJ1dCBsZXNzIHRoYW4gdGhlIENEQyBzdWJzZXQpLgorSG93ZXZlciwgaXRzIG1haW4gY2xhaW0gdG8gZmFtZSBpcyBiZWluZyBhYmxlIHRvIGNvbm5lY3QgZGlyZWN0bHkgdG8KK3JlY2VudCB2ZXJzaW9ucyBvZiBXaW5kb3dzLCB1c2luZyBkcml2ZXJzIHRoYXQgTWljcm9zb2Z0IGJ1bmRsZXMKK2FuZCBzdXBwb3J0cywgbWFraW5nIGl0IG11Y2ggc2ltcGxlciB0byBuZXR3b3JrIHdpdGggV2luZG93cy4KKzwvcGFyYT4KKworPHBhcmE+VGhlcmUgaXMgYWxzbyBzdXBwb3J0IGZvciB1c2VyIG1vZGUgZ2FkZ2V0IGRyaXZlcnMsCit1c2luZyA8ZW1waGFzaXM+Z2FkZ2V0ZnM8L2VtcGhhc2lzPi4KK1RoaXMgcHJvdmlkZXMgYSA8ZW1waGFzaXM+VXNlciBNb2RlIEFQSTwvZW1waGFzaXM+IHRoYXQgcHJlc2VudHMKK2VhY2ggZW5kcG9pbnQgYXMgYSBzaW5nbGUgZmlsZSBkZXNjcmlwdG9yLiAgSS9PIGlzIGRvbmUgdXNpbmcKK25vcm1hbCA8ZW1waGFzaXM+cmVhZCgpPC9lbXBoYXNpcz4gYW5kIDxlbXBoYXNpcz5yZWFkKCk8L2VtcGhhc2lzPiBjYWxscy4KK0ZhbWlsaWFyIHRvb2xzIGxpa2UgR0RCIGFuZCBwdGhyZWFkcyBjYW4gYmUgdXNlZCB0bworZGV2ZWxvcCBhbmQgZGVidWcgdXNlciBtb2RlIGRyaXZlcnMsIHNvIHRoYXQgb25jZSBhIHJvYnVzdAorY29udHJvbGxlciBkcml2ZXIgaXMgYXZhaWxhYmxlIG1hbnkgYXBwbGljYXRpb25zIGZvciBpdAord29uJ3QgcmVxdWlyZSBuZXcga2VybmVsIG1vZGUgc29mdHdhcmUuCitMaW51eCAyLjYgPGVtcGhhc2lzPkFzeW5jIEkvTyAoQUlPKTwvZW1waGFzaXM+CitzdXBwb3J0IGlzIGF2YWlsYWJsZSwgc28gdGhhdCB1c2VyIG1vZGUgc29mdHdhcmUKK2NhbiBzdHJlYW0gZGF0YSB3aXRoIG9ubHkgc2xpZ2h0bHkgbW9yZSBvdmVyaGVhZAordGhhbiBhIGtlcm5lbCBkcml2ZXIuCis8L3BhcmE+CisKKzxwYXJhPlRoZXJlJ3MgYSBVU0IgTWFzcyBTdG9yYWdlIGNsYXNzIGRyaXZlciwgd2hpY2ggcHJvdmlkZXMKK2EgZGlmZmVyZW50IHNvbHV0aW9uIGZvciBpbnRlcm9wZXJhYmlsaXR5IHdpdGggc3lzdGVtcyBzdWNoCithcyBNUy1XaW5kb3dzIGFuZCBNYWNPUy4KK1RoYXQgPGVtcGhhc2lzPk1hc3MgU3RvcmFnZTwvZW1waGFzaXM+IGRyaXZlciB1c2VzIGEKK2ZpbGUgb3IgYmxvY2sgZGV2aWNlIGFzIGJhY2tpbmcgc3RvcmUgZm9yIGEgZHJpdmUsCitsaWtlIHRoZSA8ZmlsZW5hbWU+bG9vcDwvZmlsZW5hbWU+IGRyaXZlci4KK1RoZSBVU0IgaG9zdCB1c2VzIHRoZSBCQkIsIENCLCBvciBDQkkgdmVyc2lvbnMgb2YgdGhlIG1hc3MKK3N0b3JhZ2UgY2xhc3Mgc3BlY2lmaWNhdGlvbiwgdXNpbmcgdHJhbnNwYXJlbnQgU0NTSSBjb21tYW5kcwordG8gYWNjZXNzIHRoZSBkYXRhIGZyb20gdGhlIGJhY2tpbmcgc3RvcmUuCis8L3BhcmE+CisKKzxwYXJhPlRoZXJlJ3MgYSAic2VyaWFsIGxpbmUiIGRyaXZlciwgdXNlZnVsIGZvciBUVFkgc3R5bGUKK29wZXJhdGlvbiBvdmVyIFVTQi4KK1RoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGF0IGRyaXZlciBzdXBwb3J0cyBDREMgQUNNIHN0eWxlCitvcGVyYXRpb24sIGxpa2UgYSBVU0IgbW9kZW0sIGFuZCBzbyBvbiBtb3N0IGhhcmR3YXJlIGl0IGNhbgoraW50ZXJvcGVyYXRlIGVhc2lseSB3aXRoIE1TLVdpbmRvd3MuCitPbmUgaW50ZXJlc3RpbmcgdXNlIG9mIHRoYXQgZHJpdmVyIGlzIGluIGJvb3QgZmlybXdhcmUgKGxpa2UgYSBCSU9TKSwKK3doaWNoIGNhbiBzb21ldGltZXMgdXNlIHRoYXQgbW9kZWwgd2l0aCB2ZXJ5IHNtYWxsIHN5c3RlbXMgd2l0aG91dAorcmVhbCBzZXJpYWwgbGluZXMuCis8L3BhcmE+CisKKzxwYXJhPlN1cHBvcnQgZm9yIG90aGVyIGtpbmRzIG9mIGdhZGdldCBpcyBleHBlY3RlZCB0bworYmUgZGV2ZWxvcGVkIGFuZCBjb250cmlidXRlZAorb3ZlciB0aW1lLCBhcyB0aGlzIGRyaXZlciBmcmFtZXdvcmsgZXZvbHZlcy4KKzwvcGFyYT4KKworPC9jaGFwdGVyPgorCis8Y2hhcHRlciBpZD0ib3RnIj48dGl0bGU+VVNCIE9uLVRoZS1HTyAoT1RHKTwvdGl0bGU+CisKKzxwYXJhPlVTQiBPVEcgc3VwcG9ydCBvbiBMaW51eCAyLjYgd2FzIGluaXRpYWxseSBkZXZlbG9wZWQKK2J5IFRleGFzIEluc3RydW1lbnRzIGZvcgorPHVsaW5rIHVybD0iaHR0cDovL3d3dy5vbWFwLmNvbSI+T01BUDwvdWxpbms+IDE2eHggYW5kIDE3eHgKK3NlcmllcyBwcm9jZXNzb3JzLgorT3RoZXIgT1RHIHN5c3RlbXMgc2hvdWxkIHdvcmsgaW4gc2ltaWxhciB3YXlzLCBidXQgdGhlCitoYXJkd2FyZSBsZXZlbCBkZXRhaWxzIGNvdWxkIGJlIHZlcnkgZGlmZmVyZW50LgorPC9wYXJhPiAKKworPHBhcmE+U3lzdGVtcyBuZWVkIHNwZWNpYWxpemVkIGhhcmR3YXJlIHN1cHBvcnQgdG8gaW1wbGVtZW50IE9URywKK25vdGFibHkgaW5jbHVkaW5nIGEgc3BlY2lhbCA8ZW1waGFzaXM+TWluaS1BQjwvZW1waGFzaXM+IGphY2sKK2FuZCBhc3NvY2lhdGVkIHRyYW5zY2VpdmVyIHRvIHN1cHBvcnQgPGVtcGhhc2lzPkR1YWwtUm9sZTwvZW1waGFzaXM+CitvcGVyYXRpb246Cit0aGV5IGNhbiBhY3QgZWl0aGVyIGFzIGEgaG9zdCwgdXNpbmcgdGhlIHN0YW5kYXJkCitMaW51eC1VU0IgaG9zdCBzaWRlIGRyaXZlciBzdGFjaywKK29yIGFzIGEgcGVyaXBoZXJhbCwgdXNpbmcgdGhpcyAiZ2FkZ2V0IiBmcmFtZXdvcmsuCitUbyBkbyB0aGF0LCB0aGUgc3lzdGVtIHNvZnR3YXJlIHJlbGllcyBvbiBzbWFsbCBhZGRpdGlvbnMKK3RvIHRob3NlIHByb2dyYW1taW5nIGludGVyZmFjZXMsCithbmQgb24gYSBuZXcgaW50ZXJuYWwgY29tcG9uZW50IChoZXJlIGNhbGxlZCBhbiAiT1RHIENvbnRyb2xsZXIiKQorYWZmZWN0aW5nIHdoaWNoIGRyaXZlciBzdGFjayBjb25uZWN0cyB0byB0aGUgT1RHIHBvcnQuCitJbiBlYWNoIHJvbGUsIHRoZSBzeXN0ZW0gY2FuIHJlLXVzZSB0aGUgZXhpc3RpbmcgcG9vbCBvZgoraGFyZHdhcmUtbmV1dHJhbCBkcml2ZXJzLCBsYXllcmVkIG9uIHRvcCBvZiB0aGUgY29udHJvbGxlcgorZHJpdmVyIGludGVyZmFjZXMgKDxlbXBoYXNpcz51c2JfYnVzPC9lbXBoYXNpcz4gb3IKKzxlbXBoYXNpcz51c2JfZ2FkZ2V0PC9lbXBoYXNpcz4pLgorU3VjaCBkcml2ZXJzIG5lZWQgYXQgbW9zdCBtaW5vciBjaGFuZ2VzLCBhbmQgbW9zdCBvZiB0aGUgY2FsbHMKK2FkZGVkIHRvIHN1cHBvcnQgT1RHIGNhbiBhbHNvIGJlbmVmaXQgbm9uLU9URyBwcm9kdWN0cy4KKzwvcGFyYT4KKworPGl0ZW1pemVkbGlzdD4KKyAgICA8bGlzdGl0ZW0+PHBhcmE+R2FkZ2V0IGRyaXZlcnMgdGVzdCB0aGUgPGVtcGhhc2lzPmlzX290ZzwvZW1waGFzaXM+CisJZmxhZywgYW5kIHVzZSBpdCB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdG8gaW5jbHVkZQorCWFuIE9URyBkZXNjcmlwdG9yIGluIGVhY2ggb2YgdGhlaXIgY29uZmlndXJhdGlvbnMuCisJPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPjxwYXJhPkdhZGdldCBkcml2ZXJzIG1heSBuZWVkIGNoYW5nZXMgdG8gc3VwcG9ydCB0aGUKKwl0d28gbmV3IE9URyBwcm90b2NvbHMsIGV4cG9zZWQgaW4gbmV3IGdhZGdldCBhdHRyaWJ1dGVzCisJc3VjaCBhcyA8ZW1waGFzaXM+Yl9obnBfZW5hYmxlPC9lbXBoYXNpcz4gZmxhZy4KKwlITlAgc3VwcG9ydCBzaG91bGQgYmUgcmVwb3J0ZWQgdGhyb3VnaCBhIHVzZXIgaW50ZXJmYWNlCisJKHR3byBMRURzIGNvdWxkIHN1ZmZpY2UpLCBhbmQgaXMgdHJpZ2dlcmVkIGluIHNvbWUgY2FzZXMKKwl3aGVuIHRoZSBob3N0IHN1c3BlbmRzIHRoZSBwZXJpcGhlcmFsLgorCVNSUCBzdXBwb3J0IGNhbiBiZSB1c2VyLWluaXRpYXRlZCBqdXN0IGxpa2UgcmVtb3RlIHdha2V1cCwKKwlwcm9iYWJseSBieSBwcmVzc2luZyB0aGUgc2FtZSBidXR0b24uCisJPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPjxwYXJhPk9uIHRoZSBob3N0IHNpZGUsIFVTQiBkZXZpY2UgZHJpdmVycyBuZWVkCisJdG8gYmUgdGF1Z2h0IHRvIHRyaWdnZXIgSE5QIGF0IGFwcHJvcHJpYXRlIG1vbWVudHMsIHVzaW5nCisJPGZ1bmN0aW9uPnVzYl9zdXNwZW5kX2RldmljZSgpPC9mdW5jdGlvbj4uCisJVGhhdCBhbHNvIGNvbnNlcnZlcyBiYXR0ZXJ5IHBvd2VyLCB3aGljaCBpcyB1c2VmdWwgZXZlbgorCWZvciBub24tT1RHIGNvbmZpZ3VyYXRpb25zLgorCTwvcGFyYT48L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT48cGFyYT5BbHNvIG9uIHRoZSBob3N0IHNpZGUsIGEgZHJpdmVyIG11c3Qgc3VwcG9ydCB0aGUKKwlPVEcgIlRhcmdldGVkIFBlcmlwaGVyYWwgTGlzdCIuICBUaGF0J3MganVzdCBhIHdoaXRlbGlzdCwKKwl1c2VkIHRvIHJlamVjdCBwZXJpcGhlcmFscyBub3Qgc3VwcG9ydGVkIHdpdGggYSBnaXZlbgorCUxpbnV4IE9URyBob3N0LgorCTxlbXBoYXNpcz5UaGlzIHdoaXRlbGlzdCBpcyBwcm9kdWN0LXNwZWNpZmljOworCWVhY2ggcHJvZHVjdCBtdXN0IG1vZGlmeSA8ZmlsZW5hbWU+b3RnX3doaXRlbGlzdC5oPC9maWxlbmFtZT4KKwl0byBtYXRjaCBpdHMgaW50ZXJvcGVyYWJpbGl0eSBzcGVjaWZpY2F0aW9uLgorCTwvZW1waGFzaXM+CisJPC9wYXJhPgorCTxwYXJhPk5vbi1PVEcgTGludXggaG9zdHMsIGxpa2UgUENzIGFuZCB3b3Jrc3RhdGlvbnMsCisJbm9ybWFsbHkgaGF2ZSBzb21lIHNvbHV0aW9uIGZvciBhZGRpbmcgZHJpdmVycywgc28gdGhhdAorCXBlcmlwaGVyYWxzIHRoYXQgYXJlbid0IHJlY29nbml6ZWQgY2FuIGV2ZW50dWFsbHkgYmUgc3VwcG9ydGVkLgorCVRoYXQgYXBwcm9hY2ggaXMgdW5yZWFzb25hYmxlIGZvciBjb25zdW1lciBwcm9kdWN0cyB0aGF0IG1heQorCW5ldmVyIGhhdmUgdGhlaXIgZmlybXdhcmUgdXBncmFkZWQsIGFuZCB3aGVyZSBpdCdzIHVzdWFsbHkKKwl1bnJlYWxpc3RpYyB0byBleHBlY3QgdHJhZGl0aW9uYWwgUEMvd29ya3N0YXRpb24vc2VydmVyIGtpbmRzCisJb2Ygc3VwcG9ydCBtb2RlbCB0byB3b3JrLgorCUZvciBleGFtcGxlLCBpdCdzIG9mdGVuIGltcHJhY3RpY2FsIHRvIGNoYW5nZSBkZXZpY2UgZmlybXdhcmUKKwlvbmNlIHRoZSBwcm9kdWN0IGhhcyBiZWVuIGRpc3RyaWJ1dGVkLCBzbyBkcml2ZXIgYnVncyBjYW4ndAorCW5vcm1hbGx5IGJlIGZpeGVkIGlmIHRoZXkncmUgZm91bmQgYWZ0ZXIgc2hpcG1lbnQuCisJPC9wYXJhPjwvbGlzdGl0ZW0+Cis8L2l0ZW1pemVkbGlzdD4KKworPHBhcmE+CitBZGRpdGlvbmFsIGNoYW5nZXMgYXJlIG5lZWRlZCBiZWxvdyB0aG9zZSBoYXJkd2FyZS1uZXV0cmFsCis8ZW1waGFzaXM+dXNiX2J1czwvZW1waGFzaXM+IGFuZCA8ZW1waGFzaXM+dXNiX2dhZGdldDwvZW1waGFzaXM+Citkcml2ZXIgaW50ZXJmYWNlczsgdGhvc2UgYXJlbid0IGRpc2N1c3NlZCBoZXJlIGluIGFueSBkZXRhaWwuCitUaG9zZSBhZmZlY3QgdGhlIGhhcmR3YXJlLXNwZWNpZmljIGNvZGUgZm9yIGVhY2ggVVNCIEhvc3Qgb3IgUGVyaXBoZXJhbAorY29udHJvbGxlciwgYW5kIGhvdyB0aGUgSENEIGluaXRpYWxpemVzIChzaW5jZSBPVEcgY2FuIGJlIGFjdGl2ZSBvbmx5CitvbiBhIHNpbmdsZSBwb3J0KS4KK1RoZXkgYWxzbyBpbnZvbHZlIHdoYXQgbWF5IGJlIGNhbGxlZCBhbiA8ZW1waGFzaXM+T1RHIENvbnRyb2xsZXIKK0RyaXZlcjwvZW1waGFzaXM+LCBtYW5hZ2luZyB0aGUgT1RHIHRyYW5zY2VpdmVyIGFuZCB0aGUgT1RHIHN0YXRlCittYWNoaW5lIGxvZ2ljIGFzIHdlbGwgYXMgbXVjaCBvZiB0aGUgcm9vdCBodWIgYmVoYXZpb3IgZm9yIHRoZQorT1RHIHBvcnQuCitUaGUgT1RHIGNvbnRyb2xsZXIgZHJpdmVyIG5lZWRzIHRvIGFjdGl2YXRlIGFuZCBkZWFjdGl2YXRlIFVTQgorY29udHJvbGxlcnMgZGVwZW5kaW5nIG9uIHRoZSByZWxldmFudCBkZXZpY2Ugcm9sZS4KK1NvbWUgcmVsYXRlZCBjaGFuZ2VzIHdlcmUgbmVlZGVkIGluc2lkZSB1c2Jjb3JlLCBzbyB0aGF0IGl0CitjYW4gaWRlbnRpZnkgT1RHLWNhcGFibGUgZGV2aWNlcyBhbmQgcmVzcG9uZCBhcHByb3ByaWF0ZWx5Cit0byBITlAgb3IgU1JQIHByb3RvY29scy4KKzwvcGFyYT4gCisKKzwvY2hhcHRlcj4KKworPC9ib29rPgorPCEtLQorCXZpbTpzeW50YXg9c2dtbDpzdz00CistLT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9nZW5lcmljaXJxLnRtcGwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZ2VuZXJpY2lycS50bXBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZmI1YzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZ2VuZXJpY2lycS50bXBsCkBAIC0wLDAgKzEsNTIwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIGJvb2sgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjEuMi8vRU4iCisJImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4xLjIvZG9jYm9va3guZHRkIiBbXT4KKworPGJvb2sgaWQ9IkdlbmVyaWMtSVJRLUd1aWRlIj4KKyA8Ym9va2luZm8+CisgIDx0aXRsZT5MaW51eCBnZW5lcmljIElSUSBoYW5kbGluZzwvdGl0bGU+CisKKyAgPGF1dGhvcmdyb3VwPgorICAgPGF1dGhvcj4KKyAgICA8Zmlyc3RuYW1lPlRob21hczwvZmlyc3RuYW1lPgorICAgIDxzdXJuYW1lPkdsZWl4bmVyPC9zdXJuYW1lPgorICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgPGFkZHJlc3M+CisgICAgICA8ZW1haWw+dGdseEBsaW51dHJvbml4LmRlPC9lbWFpbD4KKyAgICAgPC9hZGRyZXNzPgorICAgIDwvYWZmaWxpYXRpb24+CisgICA8L2F1dGhvcj4KKyAgIDxhdXRob3I+CisgICAgPGZpcnN0bmFtZT5JbmdvPC9maXJzdG5hbWU+CisgICAgPHN1cm5hbWU+TW9sbmFyPC9zdXJuYW1lPgorICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgPGFkZHJlc3M+CisgICAgICA8ZW1haWw+bWluZ29AZWx0ZS5odTwvZW1haWw+CisgICAgIDwvYWRkcmVzcz4KKyAgICA8L2FmZmlsaWF0aW9uPgorICAgPC9hdXRob3I+CisgIDwvYXV0aG9yZ3JvdXA+CisKKyAgPGNvcHlyaWdodD4KKyAgIDx5ZWFyPjIwMDUtMjAxMDwveWVhcj4KKyAgIDxob2xkZXI+VGhvbWFzIEdsZWl4bmVyPC9ob2xkZXI+CisgIDwvY29weXJpZ2h0PgorICA8Y29weXJpZ2h0PgorICAgPHllYXI+MjAwNS0yMDA2PC95ZWFyPgorICAgPGhvbGRlcj5JbmdvIE1vbG5hcjwvaG9sZGVyPgorICA8L2NvcHlyaWdodD4KKworICA8bGVnYWxub3RpY2U+CisgICA8cGFyYT4KKyAgICAgVGhpcyBkb2N1bWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlCisgICAgIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgTGljZW5zZSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCisgICAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQKKyAgICAgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorICAgICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorICAgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICAgICBNQSAwMjExMS0xMzA3IFVTQQorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICAgRm9yIG1vcmUgZGV0YWlscyBzZWUgdGhlIGZpbGUgQ09QWUlORyBpbiB0aGUgc291cmNlCisgICAgIGRpc3RyaWJ1dGlvbiBvZiBMaW51eC4KKyAgIDwvcGFyYT4KKyAgPC9sZWdhbG5vdGljZT4KKyA8L2Jvb2tpbmZvPgorCis8dG9jPjwvdG9jPgorCisgIDxjaGFwdGVyIGlkPSJpbnRybyI+CisgICAgPHRpdGxlPkludHJvZHVjdGlvbjwvdGl0bGU+CisgICAgPHBhcmE+CisJVGhlIGdlbmVyaWMgaW50ZXJydXB0IGhhbmRsaW5nIGxheWVyIGlzIGRlc2lnbmVkIHRvIHByb3ZpZGUgYQorCWNvbXBsZXRlIGFic3RyYWN0aW9uIG9mIGludGVycnVwdCBoYW5kbGluZyBmb3IgZGV2aWNlIGRyaXZlcnMuCisJSXQgaXMgYWJsZSB0byBoYW5kbGUgYWxsIHRoZSBkaWZmZXJlbnQgdHlwZXMgb2YgaW50ZXJydXB0IGNvbnRyb2xsZXIKKwloYXJkd2FyZS4gRGV2aWNlIGRyaXZlcnMgdXNlIGdlbmVyaWMgQVBJIGZ1bmN0aW9ucyB0byByZXF1ZXN0LCBlbmFibGUsCisJZGlzYWJsZSBhbmQgZnJlZSBpbnRlcnJ1cHRzLiBUaGUgZHJpdmVycyBkbyBub3QgaGF2ZSB0byBrbm93IGFueXRoaW5nCisJYWJvdXQgaW50ZXJydXB0IGhhcmR3YXJlIGRldGFpbHMsIHNvIHRoZXkgY2FuIGJlIHVzZWQgb24gZGlmZmVyZW50CisJcGxhdGZvcm1zIHdpdGhvdXQgY29kZSBjaGFuZ2VzLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgCVRoaXMgZG9jdW1lbnRhdGlvbiBpcyBwcm92aWRlZCB0byBkZXZlbG9wZXJzIHdobyB3YW50IHRvIGltcGxlbWVudAorCWFuIGludGVycnVwdCBzdWJzeXN0ZW0gYmFzZWQgZm9yIHRoZWlyIGFyY2hpdGVjdHVyZSwgd2l0aCB0aGUgaGVscAorCW9mIHRoZSBnZW5lcmljIElSUSBoYW5kbGluZyBsYXllci4KKyAgICA8L3BhcmE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0icmF0aW9uYWxlIj4KKyAgICA8dGl0bGU+UmF0aW9uYWxlPC90aXRsZT4KKwk8cGFyYT4KKwlUaGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gb2YgaW50ZXJydXB0IGhhbmRsaW5nIGluIExpbnV4IHVzZXMKKwl0aGUgX19kb19JUlEoKSBzdXBlci1oYW5kbGVyLCB3aGljaCBpcyBhYmxlIHRvIGRlYWwgd2l0aCBldmVyeQorCXR5cGUgb2YgaW50ZXJydXB0IGxvZ2ljLgorCTwvcGFyYT4KKwk8cGFyYT4KKwlPcmlnaW5hbGx5LCBSdXNzZWxsIEtpbmcgaWRlbnRpZmllZCBkaWZmZXJlbnQgdHlwZXMgb2YgaGFuZGxlcnMgdG8KKwlidWlsZCBhIHF1aXRlIHVuaXZlcnNhbCBzZXQgZm9yIHRoZSBBUk0gaW50ZXJydXB0IGhhbmRsZXIKKwlpbXBsZW1lbnRhdGlvbiBpbiBMaW51eCAyLjUvMi42LiBIZSBkaXN0aW5ndWlzaGVkIGJldHdlZW46CisJPGl0ZW1pemVkbGlzdD4KKwkgIDxsaXN0aXRlbT48cGFyYT5MZXZlbCB0eXBlPC9wYXJhPjwvbGlzdGl0ZW0+CisJICA8bGlzdGl0ZW0+PHBhcmE+RWRnZSB0eXBlPC9wYXJhPjwvbGlzdGl0ZW0+CisJICA8bGlzdGl0ZW0+PHBhcmE+U2ltcGxlIHR5cGU8L3BhcmE+PC9saXN0aXRlbT4KKwk8L2l0ZW1pemVkbGlzdD4KKwlEdXJpbmcgdGhlIGltcGxlbWVudGF0aW9uIHdlIGlkZW50aWZpZWQgYW5vdGhlciB0eXBlOgorCTxpdGVtaXplZGxpc3Q+CisJICA8bGlzdGl0ZW0+PHBhcmE+RmFzdCBFT0kgdHlwZTwvcGFyYT48L2xpc3RpdGVtPgorCTwvaXRlbWl6ZWRsaXN0PgorCUluIHRoZSBTTVAgd29ybGQgb2YgdGhlIF9fZG9fSVJRKCkgc3VwZXItaGFuZGxlciBhbm90aGVyIHR5cGUKKwl3YXMgaWRlbnRpZmllZDoKKwk8aXRlbWl6ZWRsaXN0PgorCSAgPGxpc3RpdGVtPjxwYXJhPlBlciBDUFUgdHlwZTwvcGFyYT48L2xpc3RpdGVtPgorCTwvaXRlbWl6ZWRsaXN0PgorCTwvcGFyYT4KKwk8cGFyYT4KKwlUaGlzIHNwbGl0IGltcGxlbWVudGF0aW9uIG9mIGhpZ2gtbGV2ZWwgSVJRIGhhbmRsZXJzIGFsbG93cyB1cyB0bworCW9wdGltaXplIHRoZSBmbG93IG9mIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgZm9yIGVhY2ggc3BlY2lmaWMKKwlpbnRlcnJ1cHQgdHlwZS4gVGhpcyByZWR1Y2VzIGNvbXBsZXhpdHkgaW4gdGhhdCBwYXJ0aWN1bGFyIGNvZGUgcGF0aAorCWFuZCBhbGxvd3MgdGhlIG9wdGltaXplZCBoYW5kbGluZyBvZiBhIGdpdmVuIHR5cGUuCisJPC9wYXJhPgorCTxwYXJhPgorCVRoZSBvcmlnaW5hbCBnZW5lcmFsIElSUSBpbXBsZW1lbnRhdGlvbiB1c2VkIGh3X2ludGVycnVwdF90eXBlCisJc3RydWN0dXJlcyBhbmQgdGhlaXIgLT5hY2soKSwgLT5lbmQoKSBbZXRjLl0gY2FsbGJhY2tzIHRvCisJZGlmZmVyZW50aWF0ZSB0aGUgZmxvdyBjb250cm9sIGluIHRoZSBzdXBlci1oYW5kbGVyLiBUaGlzIGxlYWRzIHRvCisJYSBtaXggb2YgZmxvdyBsb2dpYyBhbmQgbG93LWxldmVsIGhhcmR3YXJlIGxvZ2ljLCBhbmQgaXQgYWxzbyBsZWFkcworCXRvIHVubmVjZXNzYXJ5IGNvZGUgZHVwbGljYXRpb246IGZvciBleGFtcGxlIGluIGkzODYsIHRoZXJlIGlzIGFuCisJaW9hcGljX2xldmVsX2lycSBhbmQgYW4gaW9hcGljX2VkZ2VfaXJxIElSUS10eXBlIHdoaWNoIHNoYXJlIG1hbnkKKwlvZiB0aGUgbG93LWxldmVsIGRldGFpbHMgYnV0IGhhdmUgZGlmZmVyZW50IGZsb3cgaGFuZGxpbmcuCisJPC9wYXJhPgorCTxwYXJhPgorCUEgbW9yZSBuYXR1cmFsIGFic3RyYWN0aW9uIGlzIHRoZSBjbGVhbiBzZXBhcmF0aW9uIG9mIHRoZQorCSdpcnEgZmxvdycgYW5kIHRoZSAnY2hpcCBkZXRhaWxzJy4KKwk8L3BhcmE+CisJPHBhcmE+CisJQW5hbHlzaW5nIGEgY291cGxlIG9mIGFyY2hpdGVjdHVyZSdzIElSUSBzdWJzeXN0ZW0gaW1wbGVtZW50YXRpb25zCisJcmV2ZWFscyB0aGF0IG1vc3Qgb2YgdGhlbSBjYW4gdXNlIGEgZ2VuZXJpYyBzZXQgb2YgJ2lycSBmbG93JworCW1ldGhvZHMgYW5kIG9ubHkgbmVlZCB0byBhZGQgdGhlIGNoaXAtbGV2ZWwgc3BlY2lmaWMgY29kZS4KKwlUaGUgc2VwYXJhdGlvbiBpcyBhbHNvIHZhbHVhYmxlIGZvciAoc3ViKWFyY2hpdGVjdHVyZXMKKwl3aGljaCBuZWVkIHNwZWNpZmljIHF1aXJrcyBpbiB0aGUgSVJRIGZsb3cgaXRzZWxmIGJ1dCBub3QgaW4gdGhlCisJY2hpcCBkZXRhaWxzIC0gYW5kIHRodXMgcHJvdmlkZXMgYSBtb3JlIHRyYW5zcGFyZW50IElSUSBzdWJzeXN0ZW0KKwlkZXNpZ24uCisJPC9wYXJhPgorCTxwYXJhPgorCUVhY2ggaW50ZXJydXB0IGRlc2NyaXB0b3IgaXMgYXNzaWduZWQgaXRzIG93biBoaWdoLWxldmVsIGZsb3cKKwloYW5kbGVyLCB3aGljaCBpcyBub3JtYWxseSBvbmUgb2YgdGhlIGdlbmVyaWMKKwlpbXBsZW1lbnRhdGlvbnMuIChUaGlzIGhpZ2gtbGV2ZWwgZmxvdyBoYW5kbGVyIGltcGxlbWVudGF0aW9uIGFsc28KKwltYWtlcyBpdCBzaW1wbGUgdG8gcHJvdmlkZSBkZW11bHRpcGxleGluZyBoYW5kbGVycyB3aGljaCBjYW4gYmUKKwlmb3VuZCBpbiBlbWJlZGRlZCBwbGF0Zm9ybXMgb24gdmFyaW91cyBhcmNoaXRlY3R1cmVzLikKKwk8L3BhcmE+CisJPHBhcmE+CisJVGhlIHNlcGFyYXRpb24gbWFrZXMgdGhlIGdlbmVyaWMgaW50ZXJydXB0IGhhbmRsaW5nIGxheWVyIG1vcmUKKwlmbGV4aWJsZSBhbmQgZXh0ZW5zaWJsZS4gRm9yIGV4YW1wbGUsIGFuIChzdWIpYXJjaGl0ZWN0dXJlIGNhbgorCXVzZSBhIGdlbmVyaWMgSVJRLWZsb3cgaW1wbGVtZW50YXRpb24gZm9yICdsZXZlbCB0eXBlJyBpbnRlcnJ1cHRzCisJYW5kIGFkZCBhIChzdWIpYXJjaGl0ZWN0dXJlIHNwZWNpZmljICdlZGdlIHR5cGUnIGltcGxlbWVudGF0aW9uLgorCTwvcGFyYT4KKwk8cGFyYT4KKwlUbyBtYWtlIHRoZSB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgbW9kZWwgZWFzaWVyIGFuZCBwcmV2ZW50IHRoZQorCWJyZWFrYWdlIG9mIGV4aXN0aW5nIGltcGxlbWVudGF0aW9ucywgdGhlIF9fZG9fSVJRKCkgc3VwZXItaGFuZGxlcgorCWlzIHN0aWxsIGF2YWlsYWJsZS4gVGhpcyBsZWFkcyB0byBhIGtpbmQgb2YgZHVhbGl0eSBmb3IgdGhlIHRpbWUKKwliZWluZy4gT3ZlciB0aW1lIHRoZSBuZXcgbW9kZWwgc2hvdWxkIGJlIHVzZWQgaW4gbW9yZSBhbmQgbW9yZQorCWFyY2hpdGVjdHVyZXMsIGFzIGl0IGVuYWJsZXMgc21hbGxlciBhbmQgY2xlYW5lciBJUlEgc3Vic3lzdGVtcy4KKwlJdCdzIGRlcHJlY2F0ZWQgZm9yIHRocmVlIHllYXJzIG5vdyBhbmQgYWJvdXQgdG8gYmUgcmVtb3ZlZC4KKwk8L3BhcmE+CisgIDwvY2hhcHRlcj4KKyAgPGNoYXB0ZXIgaWQ9ImJ1Z3MiPgorICAgIDx0aXRsZT5Lbm93biBCdWdzIEFuZCBBc3N1bXB0aW9uczwvdGl0bGU+CisgICAgPHBhcmE+CisJTm9uZSAoa25vY2sgb24gd29vZCkuCisgICAgPC9wYXJhPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9IkFic3RyYWN0aW9uIj4KKyAgICA8dGl0bGU+QWJzdHJhY3Rpb24gbGF5ZXJzPC90aXRsZT4KKyAgICA8cGFyYT4KKwlUaGVyZSBhcmUgdGhyZWUgbWFpbiBsZXZlbHMgb2YgYWJzdHJhY3Rpb24gaW4gdGhlIGludGVycnVwdCBjb2RlOgorCTxvcmRlcmVkbGlzdD4KKwkgIDxsaXN0aXRlbT48cGFyYT5IaWdoLWxldmVsIGRyaXZlciBBUEk8L3BhcmE+PC9saXN0aXRlbT4KKwkgIDxsaXN0aXRlbT48cGFyYT5IaWdoLWxldmVsIElSUSBmbG93IGhhbmRsZXJzPC9wYXJhPjwvbGlzdGl0ZW0+CisJICA8bGlzdGl0ZW0+PHBhcmE+Q2hpcC1sZXZlbCBoYXJkd2FyZSBlbmNhcHN1bGF0aW9uPC9wYXJhPjwvbGlzdGl0ZW0+CisJPC9vcmRlcmVkbGlzdD4KKyAgICA8L3BhcmE+CisgICAgPHNlY3QxIGlkPSJJbnRlcnJ1cHRfY29udHJvbF9mbG93Ij4KKwk8dGl0bGU+SW50ZXJydXB0IGNvbnRyb2wgZmxvdzwvdGl0bGU+CisJPHBhcmE+CisJRWFjaCBpbnRlcnJ1cHQgaXMgZGVzY3JpYmVkIGJ5IGFuIGludGVycnVwdCBkZXNjcmlwdG9yIHN0cnVjdHVyZQorCWlycV9kZXNjLiBUaGUgaW50ZXJydXB0IGlzIHJlZmVyZW5jZWQgYnkgYW4gJ3Vuc2lnbmVkIGludCcgbnVtZXJpYworCXZhbHVlIHdoaWNoIHNlbGVjdHMgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJydXB0IGRlc2NyaXB0aW9uIHN0cnVjdHVyZQorCWluIHRoZSBkZXNjcmlwdG9yIHN0cnVjdHVyZXMgYXJyYXkuCisJVGhlIGRlc2NyaXB0b3Igc3RydWN0dXJlIGNvbnRhaW5zIHN0YXR1cyBpbmZvcm1hdGlvbiBhbmQgcG9pbnRlcnMKKwl0byB0aGUgaW50ZXJydXB0IGZsb3cgbWV0aG9kIGFuZCB0aGUgaW50ZXJydXB0IGNoaXAgc3RydWN0dXJlCisJd2hpY2ggYXJlIGFzc2lnbmVkIHRvIHRoaXMgaW50ZXJydXB0LgorCTwvcGFyYT4KKwk8cGFyYT4KKwlXaGVuZXZlciBhbiBpbnRlcnJ1cHQgdHJpZ2dlcnMsIHRoZSBsb3ctbGV2ZWwgYXJjaGl0ZWN0dXJlIGNvZGUgY2FsbHMKKwlpbnRvIHRoZSBnZW5lcmljIGludGVycnVwdCBjb2RlIGJ5IGNhbGxpbmcgZGVzYy0+aGFuZGxlX2lycSgpLgorCVRoaXMgaGlnaC1sZXZlbCBJUlEgaGFuZGxpbmcgZnVuY3Rpb24gb25seSB1c2VzIGRlc2MtPmlycV9kYXRhLmNoaXAKKwlwcmltaXRpdmVzIHJlZmVyZW5jZWQgYnkgdGhlIGFzc2lnbmVkIGNoaXAgZGVzY3JpcHRvciBzdHJ1Y3R1cmUuCisJPC9wYXJhPgorICAgIDwvc2VjdDE+CisgICAgPHNlY3QxIGlkPSJIaWdobGV2ZWxfRHJpdmVyX0FQSSI+CisJPHRpdGxlPkhpZ2gtbGV2ZWwgRHJpdmVyIEFQSTwvdGl0bGU+CisJPHBhcmE+CisJICBUaGUgaGlnaC1sZXZlbCBEcml2ZXIgQVBJIGNvbnNpc3RzIG9mIGZvbGxvd2luZyBmdW5jdGlvbnM6CisJICA8aXRlbWl6ZWRsaXN0PgorCSAgPGxpc3RpdGVtPjxwYXJhPnJlcXVlc3RfaXJxKCk8L3BhcmE+PC9saXN0aXRlbT4KKwkgIDxsaXN0aXRlbT48cGFyYT5mcmVlX2lycSgpPC9wYXJhPjwvbGlzdGl0ZW0+CisJICA8bGlzdGl0ZW0+PHBhcmE+ZGlzYWJsZV9pcnEoKTwvcGFyYT48L2xpc3RpdGVtPgorCSAgPGxpc3RpdGVtPjxwYXJhPmVuYWJsZV9pcnEoKTwvcGFyYT48L2xpc3RpdGVtPgorCSAgPGxpc3RpdGVtPjxwYXJhPmRpc2FibGVfaXJxX25vc3luYygpIChTTVAgb25seSk8L3BhcmE+PC9saXN0aXRlbT4KKwkgIDxsaXN0aXRlbT48cGFyYT5zeW5jaHJvbml6ZV9pcnEoKSAoU01QIG9ubHkpPC9wYXJhPjwvbGlzdGl0ZW0+CisJICA8bGlzdGl0ZW0+PHBhcmE+aXJxX3NldF9pcnFfdHlwZSgpPC9wYXJhPjwvbGlzdGl0ZW0+CisJICA8bGlzdGl0ZW0+PHBhcmE+aXJxX3NldF9pcnFfd2FrZSgpPC9wYXJhPjwvbGlzdGl0ZW0+CisJICA8bGlzdGl0ZW0+PHBhcmE+aXJxX3NldF9oYW5kbGVyX2RhdGEoKTwvcGFyYT48L2xpc3RpdGVtPgorCSAgPGxpc3RpdGVtPjxwYXJhPmlycV9zZXRfY2hpcCgpPC9wYXJhPjwvbGlzdGl0ZW0+CisJICA8bGlzdGl0ZW0+PHBhcmE+aXJxX3NldF9jaGlwX2RhdGEoKTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorCSAgU2VlIHRoZSBhdXRvZ2VuZXJhdGVkIGZ1bmN0aW9uIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuCisJPC9wYXJhPgorICAgIDwvc2VjdDE+CisgICAgPHNlY3QxIGlkPSJIaWdobGV2ZWxfSVJRX2Zsb3dfaGFuZGxlcnMiPgorCTx0aXRsZT5IaWdoLWxldmVsIElSUSBmbG93IGhhbmRsZXJzPC90aXRsZT4KKwk8cGFyYT4KKwkgIFRoZSBnZW5lcmljIGxheWVyIHByb3ZpZGVzIGEgc2V0IG9mIHByZS1kZWZpbmVkIGlycS1mbG93IG1ldGhvZHM6CisJICA8aXRlbWl6ZWRsaXN0PgorCSAgPGxpc3RpdGVtPjxwYXJhPmhhbmRsZV9sZXZlbF9pcnE8L3BhcmE+PC9saXN0aXRlbT4KKwkgIDxsaXN0aXRlbT48cGFyYT5oYW5kbGVfZWRnZV9pcnE8L3BhcmE+PC9saXN0aXRlbT4KKwkgIDxsaXN0aXRlbT48cGFyYT5oYW5kbGVfZmFzdGVvaV9pcnE8L3BhcmE+PC9saXN0aXRlbT4KKwkgIDxsaXN0aXRlbT48cGFyYT5oYW5kbGVfc2ltcGxlX2lycTwvcGFyYT48L2xpc3RpdGVtPgorCSAgPGxpc3RpdGVtPjxwYXJhPmhhbmRsZV9wZXJjcHVfaXJxPC9wYXJhPjwvbGlzdGl0ZW0+CisJICA8bGlzdGl0ZW0+PHBhcmE+aGFuZGxlX2VkZ2VfZW9pX2lycTwvcGFyYT48L2xpc3RpdGVtPgorCSAgPGxpc3RpdGVtPjxwYXJhPmhhbmRsZV9iYWRfaXJxPC9wYXJhPjwvbGlzdGl0ZW0+CisJICA8L2l0ZW1pemVkbGlzdD4KKwkgIFRoZSBpbnRlcnJ1cHQgZmxvdyBoYW5kbGVycyAoZWl0aGVyIHByZS1kZWZpbmVkIG9yIGFyY2hpdGVjdHVyZQorCSAgc3BlY2lmaWMpIGFyZSBhc3NpZ25lZCB0byBzcGVjaWZpYyBpbnRlcnJ1cHRzIGJ5IHRoZSBhcmNoaXRlY3R1cmUKKwkgIGVpdGhlciBkdXJpbmcgYm9vdHVwIG9yIGR1cmluZyBkZXZpY2UgaW5pdGlhbGl6YXRpb24uCisJPC9wYXJhPgorCTxzZWN0MiBpZD0iRGVmYXVsdF9mbG93X2ltcGxlbWVudGF0aW9ucyI+CisJPHRpdGxlPkRlZmF1bHQgZmxvdyBpbXBsZW1lbnRhdGlvbnM8L3RpdGxlPgorCSAgICA8c2VjdDMgaWQ9IkhlbHBlcl9mdW5jdGlvbnMiPgorCSAJPHRpdGxlPkhlbHBlciBmdW5jdGlvbnM8L3RpdGxlPgorCQk8cGFyYT4KKwkJVGhlIGhlbHBlciBmdW5jdGlvbnMgY2FsbCB0aGUgY2hpcCBwcmltaXRpdmVzIGFuZAorCQlhcmUgdXNlZCBieSB0aGUgZGVmYXVsdCBmbG93IGltcGxlbWVudGF0aW9ucy4KKwkJVGhlIGZvbGxvd2luZyBoZWxwZXIgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCAoc2ltcGxpZmllZCBleGNlcnB0KToKKwkJPHByb2dyYW1saXN0aW5nPgorZGVmYXVsdF9lbmFibGUoc3RydWN0IGlycV9kYXRhICpkYXRhKQoreworCWRlc2MtPmlycV9kYXRhLmNoaXAtPmlycV91bm1hc2soZGF0YSk7Cit9CisKK2RlZmF1bHRfZGlzYWJsZShzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEpCit7CisJaWYgKCFkZWxheV9kaXNhYmxlKGRhdGEpKQorCQlkZXNjLT5pcnFfZGF0YS5jaGlwLT5pcnFfbWFzayhkYXRhKTsKK30KKworZGVmYXVsdF9hY2soc3RydWN0IGlycV9kYXRhICpkYXRhKQoreworCWNoaXAtPmlycV9hY2soZGF0YSk7Cit9CisKK2RlZmF1bHRfbWFza19hY2soc3RydWN0IGlycV9kYXRhICpkYXRhKQoreworCWlmIChjaGlwLT5pcnFfbWFza19hY2spIHsKKwkJY2hpcC0+aXJxX21hc2tfYWNrKGRhdGEpOworCX0gZWxzZSB7CisJCWNoaXAtPmlycV9tYXNrKGRhdGEpOworCQljaGlwLT5pcnFfYWNrKGRhdGEpOworCX0KK30KKworbm9vcChzdHJ1Y3QgaXJxX2RhdGEgKmRhdGEpKQoreworfQorCisJCTwvcHJvZ3JhbWxpc3Rpbmc+CisJICAgICAgICA8L3BhcmE+CisJICAgIDwvc2VjdDM+CisJPC9zZWN0Mj4KKwk8c2VjdDIgaWQ9IkRlZmF1bHRfZmxvd19oYW5kbGVyX2ltcGxlbWVudGF0aW9ucyI+CisJPHRpdGxlPkRlZmF1bHQgZmxvdyBoYW5kbGVyIGltcGxlbWVudGF0aW9uczwvdGl0bGU+CisJICAgIDxzZWN0MyBpZD0iRGVmYXVsdF9MZXZlbF9JUlFfZmxvd19oYW5kbGVyIj4KKwkgCTx0aXRsZT5EZWZhdWx0IExldmVsIElSUSBmbG93IGhhbmRsZXI8L3RpdGxlPgorCQk8cGFyYT4KKwkJaGFuZGxlX2xldmVsX2lycSBwcm92aWRlcyBhIGdlbmVyaWMgaW1wbGVtZW50YXRpb24KKwkJZm9yIGxldmVsLXRyaWdnZXJlZCBpbnRlcnJ1cHRzLgorCQk8L3BhcmE+CisJCTxwYXJhPgorCQlUaGUgZm9sbG93aW5nIGNvbnRyb2wgZmxvdyBpcyBpbXBsZW1lbnRlZCAoc2ltcGxpZmllZCBleGNlcnB0KToKKwkJPHByb2dyYW1saXN0aW5nPgorZGVzYy0+aXJxX2RhdGEuY2hpcC0+aXJxX21hc2tfYWNrKCk7CitoYW5kbGVfaXJxX2V2ZW50KGRlc2MtPmFjdGlvbik7CitkZXNjLT5pcnFfZGF0YS5jaGlwLT5pcnFfdW5tYXNrKCk7CisJCTwvcHJvZ3JhbWxpc3Rpbmc+CisJCTwvcGFyYT4KKwkgICAgPC9zZWN0Mz4KKwkgICAgPHNlY3QzIGlkPSJEZWZhdWx0X0ZBU1RFT0lfSVJRX2Zsb3dfaGFuZGxlciI+CisJCTx0aXRsZT5EZWZhdWx0IEZhc3QgRU9JIElSUSBmbG93IGhhbmRsZXI8L3RpdGxlPgorCQk8cGFyYT4KKwkJaGFuZGxlX2Zhc3Rlb2lfaXJxIHByb3ZpZGVzIGEgZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbgorCQlmb3IgaW50ZXJydXB0cywgd2hpY2ggb25seSBuZWVkIGFuIEVPSSBhdCB0aGUgZW5kIG9mCisJCXRoZSBoYW5kbGVyLgorCQk8L3BhcmE+CisJCTxwYXJhPgorCQlUaGUgZm9sbG93aW5nIGNvbnRyb2wgZmxvdyBpcyBpbXBsZW1lbnRlZCAoc2ltcGxpZmllZCBleGNlcnB0KToKKwkJPHByb2dyYW1saXN0aW5nPgoraGFuZGxlX2lycV9ldmVudChkZXNjLT5hY3Rpb24pOworZGVzYy0+aXJxX2RhdGEuY2hpcC0+aXJxX2VvaSgpOworCQk8L3Byb2dyYW1saXN0aW5nPgorCQk8L3BhcmE+CisJICAgIDwvc2VjdDM+CisJICAgIDxzZWN0MyBpZD0iRGVmYXVsdF9FZGdlX0lSUV9mbG93X2hhbmRsZXIiPgorCSAJPHRpdGxlPkRlZmF1bHQgRWRnZSBJUlEgZmxvdyBoYW5kbGVyPC90aXRsZT4KKwkJPHBhcmE+CisJCWhhbmRsZV9lZGdlX2lycSBwcm92aWRlcyBhIGdlbmVyaWMgaW1wbGVtZW50YXRpb24KKwkJZm9yIGVkZ2UtdHJpZ2dlcmVkIGludGVycnVwdHMuCisJCTwvcGFyYT4KKwkJPHBhcmE+CisJCVRoZSBmb2xsb3dpbmcgY29udHJvbCBmbG93IGlzIGltcGxlbWVudGVkIChzaW1wbGlmaWVkIGV4Y2VycHQpOgorCQk8cHJvZ3JhbWxpc3Rpbmc+CitpZiAoZGVzYy0+c3RhdHVzICZhbXA7IHJ1bm5pbmcpIHsKKwlkZXNjLT5pcnFfZGF0YS5jaGlwLT5pcnFfbWFza19hY2soKTsKKwlkZXNjLT5zdGF0dXMgfD0gcGVuZGluZyB8IG1hc2tlZDsKKwlyZXR1cm47Cit9CitkZXNjLT5pcnFfZGF0YS5jaGlwLT5pcnFfYWNrKCk7CitkZXNjLT5zdGF0dXMgfD0gcnVubmluZzsKK2RvIHsKKwlpZiAoZGVzYy0+c3RhdHVzICZhbXA7IG1hc2tlZCkKKwkJZGVzYy0+aXJxX2RhdGEuY2hpcC0+aXJxX3VubWFzaygpOworCWRlc2MtPnN0YXR1cyAmYW1wOz0gfnBlbmRpbmc7CisJaGFuZGxlX2lycV9ldmVudChkZXNjLT5hY3Rpb24pOworfSB3aGlsZSAoc3RhdHVzICZhbXA7IHBlbmRpbmcpOworZGVzYy0+c3RhdHVzICZhbXA7PSB+cnVubmluZzsKKwkJPC9wcm9ncmFtbGlzdGluZz4KKwkJPC9wYXJhPgorICAgCSAgICA8L3NlY3QzPgorCSAgICA8c2VjdDMgaWQ9IkRlZmF1bHRfc2ltcGxlX0lSUV9mbG93X2hhbmRsZXIiPgorCSAJPHRpdGxlPkRlZmF1bHQgc2ltcGxlIElSUSBmbG93IGhhbmRsZXI8L3RpdGxlPgorCQk8cGFyYT4KKwkJaGFuZGxlX3NpbXBsZV9pcnEgcHJvdmlkZXMgYSBnZW5lcmljIGltcGxlbWVudGF0aW9uCisJCWZvciBzaW1wbGUgaW50ZXJydXB0cy4KKwkJPC9wYXJhPgorCQk8cGFyYT4KKwkJTm90ZTogVGhlIHNpbXBsZSBmbG93IGhhbmRsZXIgZG9lcyBub3QgY2FsbCBhbnkKKwkJaGFuZGxlci9jaGlwIHByaW1pdGl2ZXMuCisJCTwvcGFyYT4KKwkJPHBhcmE+CisJCVRoZSBmb2xsb3dpbmcgY29udHJvbCBmbG93IGlzIGltcGxlbWVudGVkIChzaW1wbGlmaWVkIGV4Y2VycHQpOgorCQk8cHJvZ3JhbWxpc3Rpbmc+CitoYW5kbGVfaXJxX2V2ZW50KGRlc2MtPmFjdGlvbik7CisJCTwvcHJvZ3JhbWxpc3Rpbmc+CisJCTwvcGFyYT4KKyAgIAkgICAgPC9zZWN0Mz4KKwkgICAgPHNlY3QzIGlkPSJEZWZhdWx0X3Blcl9DUFVfZmxvd19oYW5kbGVyIj4KKwkgCTx0aXRsZT5EZWZhdWx0IHBlciBDUFUgZmxvdyBoYW5kbGVyPC90aXRsZT4KKwkJPHBhcmE+CisJCWhhbmRsZV9wZXJjcHVfaXJxIHByb3ZpZGVzIGEgZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbgorCQlmb3IgcGVyIENQVSBpbnRlcnJ1cHRzLgorCQk8L3BhcmE+CisJCTxwYXJhPgorCQlQZXIgQ1BVIGludGVycnVwdHMgYXJlIG9ubHkgYXZhaWxhYmxlIG9uIFNNUCBhbmQKKwkJdGhlIGhhbmRsZXIgcHJvdmlkZXMgYSBzaW1wbGlmaWVkIHZlcnNpb24gd2l0aG91dAorCQlsb2NraW5nLgorCQk8L3BhcmE+CisJCTxwYXJhPgorCQlUaGUgZm9sbG93aW5nIGNvbnRyb2wgZmxvdyBpcyBpbXBsZW1lbnRlZCAoc2ltcGxpZmllZCBleGNlcnB0KToKKwkJPHByb2dyYW1saXN0aW5nPgoraWYgKGRlc2MtPmlycV9kYXRhLmNoaXAtPmlycV9hY2spCisJZGVzYy0+aXJxX2RhdGEuY2hpcC0+aXJxX2FjaygpOworaGFuZGxlX2lycV9ldmVudChkZXNjLT5hY3Rpb24pOworaWYgKGRlc2MtPmlycV9kYXRhLmNoaXAtPmlycV9lb2kpCisgICAgICAgIGRlc2MtPmlycV9kYXRhLmNoaXAtPmlycV9lb2koKTsKKwkJPC9wcm9ncmFtbGlzdGluZz4KKwkJPC9wYXJhPgorICAgCSAgICA8L3NlY3QzPgorCSAgICA8c2VjdDMgaWQ9IkVPSV9FZGdlX0lSUV9mbG93X2hhbmRsZXIiPgorCSAJPHRpdGxlPkVPSSBFZGdlIElSUSBmbG93IGhhbmRsZXI8L3RpdGxlPgorCQk8cGFyYT4KKwkJaGFuZGxlX2VkZ2VfZW9pX2lycSBwcm92aWRlcyBhbiBhYm5vbWluYXRpb24gb2YgdGhlIGVkZ2UKKwkJaGFuZGxlciB3aGljaCBpcyBzb2xlbHkgdXNlZCB0byB0YW1lIGEgYmFkbHkgd3JlY2thZ2VkCisJCWlycSBjb250cm9sbGVyIG9uIHBvd2VycGMvY2VsbC4KKwkJPC9wYXJhPgorICAgCSAgICA8L3NlY3QzPgorCSAgICA8c2VjdDMgaWQ9IkJBRF9JUlFfZmxvd19oYW5kbGVyIj4KKwkgCTx0aXRsZT5CYWQgSVJRIGZsb3cgaGFuZGxlcjwvdGl0bGU+CisJCTxwYXJhPgorCQloYW5kbGVfYmFkX2lycSBpcyB1c2VkIGZvciBzcHVyaW91cyBpbnRlcnJ1cHRzIHdoaWNoCisJCWhhdmUgbm8gcmVhbCBoYW5kbGVyIGFzc2lnbmVkLi4KKwkJPC9wYXJhPgorICAgCSAgICA8L3NlY3QzPgorCTwvc2VjdDI+CisJPHNlY3QyIGlkPSJRdWlya3NfYW5kX29wdGltaXphdGlvbnMiPgorCTx0aXRsZT5RdWlya3MgYW5kIG9wdGltaXphdGlvbnM8L3RpdGxlPgorCTxwYXJhPgorCVRoZSBnZW5lcmljIGZ1bmN0aW9ucyBhcmUgaW50ZW5kZWQgZm9yICdjbGVhbicgYXJjaGl0ZWN0dXJlcyBhbmQgY2hpcHMsCisJd2hpY2ggaGF2ZSBubyBwbGF0Zm9ybS1zcGVjaWZpYyBJUlEgaGFuZGxpbmcgcXVpcmtzLiBJZiBhbiBhcmNoaXRlY3R1cmUKKwluZWVkcyB0byBpbXBsZW1lbnQgcXVpcmtzIG9uIHRoZSAnZmxvdycgbGV2ZWwgdGhlbiBpdCBjYW4gZG8gc28gYnkKKwlvdmVycmlkaW5nIHRoZSBoaWdoLWxldmVsIGlycS1mbG93IGhhbmRsZXIuCisJPC9wYXJhPgorCTwvc2VjdDI+CisJPHNlY3QyIGlkPSJEZWxheWVkX2ludGVycnVwdF9kaXNhYmxlIj4KKwk8dGl0bGU+RGVsYXllZCBpbnRlcnJ1cHQgZGlzYWJsZTwvdGl0bGU+CisJPHBhcmE+CisJVGhpcyBwZXIgaW50ZXJydXB0IHNlbGVjdGFibGUgZmVhdHVyZSwgd2hpY2ggd2FzIGludHJvZHVjZWQgYnkgUnVzc2VsbAorCUtpbmcgaW4gdGhlIEFSTSBpbnRlcnJ1cHQgaW1wbGVtZW50YXRpb24sIGRvZXMgbm90IG1hc2sgYW4gaW50ZXJydXB0CisJYXQgdGhlIGhhcmR3YXJlIGxldmVsIHdoZW4gZGlzYWJsZV9pcnEoKSBpcyBjYWxsZWQuIFRoZSBpbnRlcnJ1cHQgaXMKKwlrZXB0IGVuYWJsZWQgYW5kIGlzIG1hc2tlZCBpbiB0aGUgZmxvdyBoYW5kbGVyIHdoZW4gYW4gaW50ZXJydXB0IGV2ZW50CisJaGFwcGVucy4gVGhpcyBwcmV2ZW50cyBsb3NpbmcgZWRnZSBpbnRlcnJ1cHRzIG9uIGhhcmR3YXJlIHdoaWNoIGRvZXMKKwlub3Qgc3RvcmUgYW4gZWRnZSBpbnRlcnJ1cHQgZXZlbnQgd2hpbGUgdGhlIGludGVycnVwdCBpcyBkaXNhYmxlZCBhdAorCXRoZSBoYXJkd2FyZSBsZXZlbC4gV2hlbiBhbiBpbnRlcnJ1cHQgYXJyaXZlcyB3aGlsZSB0aGUgSVJRX0RJU0FCTEVECisJZmxhZyBpcyBzZXQsIHRoZW4gdGhlIGludGVycnVwdCBpcyBtYXNrZWQgYXQgdGhlIGhhcmR3YXJlIGxldmVsIGFuZAorCXRoZSBJUlFfUEVORElORyBiaXQgaXMgc2V0LiBXaGVuIHRoZSBpbnRlcnJ1cHQgaXMgcmUtZW5hYmxlZCBieQorCWVuYWJsZV9pcnEoKSB0aGUgcGVuZGluZyBiaXQgaXMgY2hlY2tlZCBhbmQgaWYgaXQgaXMgc2V0LCB0aGUKKwlpbnRlcnJ1cHQgaXMgcmVzZW50IGVpdGhlciB2aWEgaGFyZHdhcmUgb3IgYnkgYSBzb2Z0d2FyZSByZXNlbmQKKwltZWNoYW5pc20uIChJdCdzIG5lY2Vzc2FyeSB0byBlbmFibGUgQ09ORklHX0hBUkRJUlFTX1NXX1JFU0VORCB3aGVuCisJeW91IHdhbnQgdG8gdXNlIHRoZSBkZWxheWVkIGludGVycnVwdCBkaXNhYmxlIGZlYXR1cmUgYW5kIHlvdXIKKwloYXJkd2FyZSBpcyBub3QgY2FwYWJsZSBvZiByZXRyaWdnZXJpbmcJYW4gaW50ZXJydXB0LikKKwlUaGUgZGVsYXllZCBpbnRlcnJ1cHQgZGlzYWJsZSBpcyBub3QgY29uZmlndXJhYmxlLgorCTwvcGFyYT4KKwk8L3NlY3QyPgorICAgIDwvc2VjdDE+CisgICAgPHNlY3QxIGlkPSJDaGlwbGV2ZWxfaGFyZHdhcmVfZW5jYXBzdWxhdGlvbiI+CisJPHRpdGxlPkNoaXAtbGV2ZWwgaGFyZHdhcmUgZW5jYXBzdWxhdGlvbjwvdGl0bGU+CisJPHBhcmE+CisJVGhlIGNoaXAtbGV2ZWwgaGFyZHdhcmUgZGVzY3JpcHRvciBzdHJ1Y3R1cmUgaXJxX2NoaXAKKwljb250YWlucyBhbGwgdGhlIGRpcmVjdCBjaGlwIHJlbGV2YW50IGZ1bmN0aW9ucywgd2hpY2gKKwljYW4gYmUgdXRpbGl6ZWQgYnkgdGhlIGlycSBmbG93IGltcGxlbWVudGF0aW9ucy4KKwkgIDxpdGVtaXplZGxpc3Q+CisJICA8bGlzdGl0ZW0+PHBhcmE+aXJxX2FjaygpPC9wYXJhPjwvbGlzdGl0ZW0+CisJICA8bGlzdGl0ZW0+PHBhcmE+aXJxX21hc2tfYWNrKCkgLSBPcHRpb25hbCwgcmVjb21tZW5kZWQgZm9yIHBlcmZvcm1hbmNlPC9wYXJhPjwvbGlzdGl0ZW0+CisJICA8bGlzdGl0ZW0+PHBhcmE+aXJxX21hc2soKTwvcGFyYT48L2xpc3RpdGVtPgorCSAgPGxpc3RpdGVtPjxwYXJhPmlycV91bm1hc2soKTwvcGFyYT48L2xpc3RpdGVtPgorCSAgPGxpc3RpdGVtPjxwYXJhPmlycV9lb2koKSAtIE9wdGlvbmFsLCByZXF1aXJlZCBmb3IgRU9JIGZsb3cgaGFuZGxlcnM8L3BhcmE+PC9saXN0aXRlbT4KKwkgIDxsaXN0aXRlbT48cGFyYT5pcnFfcmV0cmlnZ2VyKCkgLSBPcHRpb25hbDwvcGFyYT48L2xpc3RpdGVtPgorCSAgPGxpc3RpdGVtPjxwYXJhPmlycV9zZXRfdHlwZSgpIC0gT3B0aW9uYWw8L3BhcmE+PC9saXN0aXRlbT4KKwkgIDxsaXN0aXRlbT48cGFyYT5pcnFfc2V0X3dha2UoKSAtIE9wdGlvbmFsPC9wYXJhPjwvbGlzdGl0ZW0+CisJICA8L2l0ZW1pemVkbGlzdD4KKwlUaGVzZSBwcmltaXRpdmVzIGFyZSBzdHJpY3RseSBpbnRlbmRlZCB0byBtZWFuIHdoYXQgdGhleSBzYXk6IGFjayBtZWFucworCUFDSywgbWFza2luZyBtZWFucyBtYXNraW5nIG9mIGFuIElSUSBsaW5lLCBldGMuIEl0IGlzIHVwIHRvIHRoZSBmbG93CisJaGFuZGxlcihzKSB0byB1c2UgdGhlc2UgYmFzaWMgdW5pdHMgb2YgbG93LWxldmVsIGZ1bmN0aW9uYWxpdHkuCisJPC9wYXJhPgorICAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iZG9pcnEiPgorICAgICA8dGl0bGU+X19kb19JUlEgZW50cnkgcG9pbnQ8L3RpdGxlPgorICAgICA8cGFyYT4KKwlUaGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gX19kb19JUlEoKSB3YXMgYW4gYWx0ZXJuYXRpdmUgZW50cnkKKwlwb2ludCBmb3IgYWxsIHR5cGVzIG9mIGludGVycnVwdHMuIEl0IG5vIGxvbmdlciBleGlzdHMuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisJVGhpcyBoYW5kbGVyIHR1cm5lZCBvdXQgdG8gYmUgbm90IHN1aXRhYmxlIGZvciBhbGwKKwlpbnRlcnJ1cHQgaGFyZHdhcmUgYW5kIHdhcyB0aGVyZWZvcmUgcmVpbXBsZW1lbnRlZCB3aXRoIHNwbGl0CisJZnVuY3Rpb25hbGl0eSBmb3IgZWRnZS9sZXZlbC9zaW1wbGUvcGVyY3B1IGludGVycnVwdHMuIFRoaXMgaXMgbm90CisJb25seSBhIGZ1bmN0aW9uYWwgb3B0aW1pemF0aW9uLiBJdCBhbHNvIHNob3J0ZW5zIGNvZGUgcGF0aHMgZm9yCisJaW50ZXJydXB0cy4KKyAgICAgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJsb2NraW5nIj4KKyAgICAgPHRpdGxlPkxvY2tpbmcgb24gU01QPC90aXRsZT4KKyAgICAgPHBhcmE+CisJVGhlIGxvY2tpbmcgb2YgY2hpcCByZWdpc3RlcnMgaXMgdXAgdG8gdGhlIGFyY2hpdGVjdHVyZSB0aGF0CisJZGVmaW5lcyB0aGUgY2hpcCBwcmltaXRpdmVzLiBUaGUgcGVyLWlycSBzdHJ1Y3R1cmUgaXMKKwlwcm90ZWN0ZWQgdmlhIGRlc2MtPmxvY2ssIGJ5IHRoZSBnZW5lcmljIGxheWVyLgorICAgICA8L3BhcmE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iZ2VuZXJpY2NoaXAiPgorICAgICA8dGl0bGU+R2VuZXJpYyBpbnRlcnJ1cHQgY2hpcDwvdGl0bGU+CisgICAgIDxwYXJhPgorICAgICAgIFRvIGF2b2lkIGNvcGllcyBvZiBpZGVudGljYWwgaW1wbGVtZW50YXRpb25zIG9mIElSUSBjaGlwcyB0aGUKKyAgICAgICBjb3JlIHByb3ZpZGVzIGEgY29uZmlndXJhYmxlIGdlbmVyaWMgaW50ZXJydXB0IGNoaXAKKyAgICAgICBpbXBsZW1lbnRhdGlvbi4gRGV2ZWxvcGVycyBzaG91bGQgY2hlY2sgY2FyZWZ1bGx5IHdoZXRoZXIgdGhlCisgICAgICAgZ2VuZXJpYyBjaGlwIGZpdHMgdGhlaXIgbmVlZHMgYmVmb3JlIGltcGxlbWVudGluZyB0aGUgc2FtZQorICAgICAgIGZ1bmN0aW9uYWxpdHkgc2xpZ2h0bHkgZGlmZmVyZW50bHkgdGhlbXNlbHZlcy4KKyAgICAgPC9wYXJhPgorIUVrZXJuZWwvaXJxL2dlbmVyaWMtY2hpcC5jCisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0ic3RydWN0cyI+CisgICAgIDx0aXRsZT5TdHJ1Y3R1cmVzPC90aXRsZT4KKyAgICAgPHBhcmE+CisgICAgIFRoaXMgY2hhcHRlciBjb250YWlucyB0aGUgYXV0b2dlbmVyYXRlZCBkb2N1bWVudGF0aW9uIG9mIHRoZSBzdHJ1Y3R1cmVzIHdoaWNoIGFyZQorICAgICB1c2VkIGluIHRoZSBnZW5lcmljIElSUSBsYXllci4KKyAgICAgPC9wYXJhPgorIUlpbmNsdWRlL2xpbnV4L2lycS5oCishSWluY2x1ZGUvbGludXgvaW50ZXJydXB0LmgKKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJwdWJmdW5jdGlvbnMiPgorICAgICA8dGl0bGU+UHVibGljIEZ1bmN0aW9ucyBQcm92aWRlZDwvdGl0bGU+CisgICAgIDxwYXJhPgorICAgICBUaGlzIGNoYXB0ZXIgY29udGFpbnMgdGhlIGF1dG9nZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiBvZiB0aGUga2VybmVsIEFQSSBmdW5jdGlvbnMKKyAgICAgIHdoaWNoIGFyZSBleHBvcnRlZC4KKyAgICAgPC9wYXJhPgorIUVrZXJuZWwvaXJxL21hbmFnZS5jCishRWtlcm5lbC9pcnEvY2hpcC5jCisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iaW50ZnVuY3Rpb25zIj4KKyAgICAgPHRpdGxlPkludGVybmFsIEZ1bmN0aW9ucyBQcm92aWRlZDwvdGl0bGU+CisgICAgIDxwYXJhPgorICAgICBUaGlzIGNoYXB0ZXIgY29udGFpbnMgdGhlIGF1dG9nZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiBvZiB0aGUgaW50ZXJuYWwgZnVuY3Rpb25zLgorICAgICA8L3BhcmE+CishSWtlcm5lbC9pcnEvaXJxZGVzYy5jCishSWtlcm5lbC9pcnEvaGFuZGxlLmMKKyFJa2VybmVsL2lycS9jaGlwLmMKKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJjcmVkaXRzIj4KKyAgICAgPHRpdGxlPkNyZWRpdHM8L3RpdGxlPgorCTxwYXJhPgorCQlUaGUgZm9sbG93aW5nIHBlb3BsZSBoYXZlIGNvbnRyaWJ1dGVkIHRvIHRoaXMgZG9jdW1lbnQ6CisJCTxvcmRlcmVkbGlzdD4KKwkJCTxsaXN0aXRlbT48cGFyYT5UaG9tYXMgR2xlaXhuZXI8ZW1haWw+dGdseEBsaW51dHJvbml4LmRlPC9lbWFpbD48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT5JbmdvIE1vbG5hcjxlbWFpbD5taW5nb0BlbHRlLmh1PC9lbWFpbD48L3BhcmE+PC9saXN0aXRlbT4KKwkJPC9vcmRlcmVkbGlzdD4KKwk8L3BhcmE+CisgIDwvY2hhcHRlcj4KKzwvYm9vaz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9ncHUudG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9ncHUudG1wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDFkY2QzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2dwdS50bXBsCkBAIC0wLDAgKzEsNDI4NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4xLjIvL0VOIgorCSJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMS4yL2RvY2Jvb2t4LmR0ZCIgW10+CisKKzxib29rIGlkPSJncHVEZXZlbG9wZXJzR3VpZGUiPgorICA8Ym9va2luZm8+CisgICAgPHRpdGxlPkxpbnV4IEdQVSBEcml2ZXIgRGV2ZWxvcGVyJ3MgR3VpZGU8L3RpdGxlPgorCisgICAgPGF1dGhvcmdyb3VwPgorICAgICAgPGF1dGhvcj4KKwk8Zmlyc3RuYW1lPkplc3NlPC9maXJzdG5hbWU+CisJPHN1cm5hbWU+QmFybmVzPC9zdXJuYW1lPgorCTxjb250cmliPkluaXRpYWwgdmVyc2lvbjwvY29udHJpYj4KKwk8YWZmaWxpYXRpb24+CisJICA8b3JnbmFtZT5JbnRlbCBDb3Jwb3JhdGlvbjwvb3JnbmFtZT4KKwkgIDxhZGRyZXNzPgorCSAgICA8ZW1haWw+amVzc2UuYmFybmVzQGludGVsLmNvbTwvZW1haWw+CisJICA8L2FkZHJlc3M+CisJPC9hZmZpbGlhdGlvbj4KKyAgICAgIDwvYXV0aG9yPgorICAgICAgPGF1dGhvcj4KKwk8Zmlyc3RuYW1lPkxhdXJlbnQ8L2ZpcnN0bmFtZT4KKwk8c3VybmFtZT5QaW5jaGFydDwvc3VybmFtZT4KKwk8Y29udHJpYj5Ecml2ZXIgaW50ZXJuYWxzPC9jb250cmliPgorCTxhZmZpbGlhdGlvbj4KKwkgIDxvcmduYW1lPklkZWFzIG9uIGJvYXJkIFNQUkw8L29yZ25hbWU+CisJICA8YWRkcmVzcz4KKwkgICAgPGVtYWlsPmxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbTwvZW1haWw+CisJICA8L2FkZHJlc3M+CisJPC9hZmZpbGlhdGlvbj4KKyAgICAgIDwvYXV0aG9yPgorICAgICAgPGF1dGhvcj4KKwk8Zmlyc3RuYW1lPkRhbmllbDwvZmlyc3RuYW1lPgorCTxzdXJuYW1lPlZldHRlcjwvc3VybmFtZT4KKwk8Y29udHJpYj5Db250cmlidXRpb25zIGFsbCBvdmVyIHRoZSBwbGFjZTwvY29udHJpYj4KKwk8YWZmaWxpYXRpb24+CisJICA8b3JnbmFtZT5JbnRlbCBDb3Jwb3JhdGlvbjwvb3JnbmFtZT4KKwkgIDxhZGRyZXNzPgorCSAgICA8ZW1haWw+ZGFuaWVsLnZldHRlckBmZndsbC5jaDwvZW1haWw+CisJICA8L2FkZHJlc3M+CisJPC9hZmZpbGlhdGlvbj4KKyAgICAgIDwvYXV0aG9yPgorICAgICAgPGF1dGhvcj4KKwk8Zmlyc3RuYW1lPkx1a2FzPC9maXJzdG5hbWU+CisJPHN1cm5hbWU+V3VubmVyPC9zdXJuYW1lPgorCTxjb250cmliPnZnYV9zd2l0Y2hlcm9vIGRvY3VtZW50YXRpb248L2NvbnRyaWI+CisJPGFmZmlsaWF0aW9uPgorCSAgPGFkZHJlc3M+CisJICAgIDxlbWFpbD5sdWthc0B3dW5uZXIuZGU8L2VtYWlsPgorCSAgPC9hZGRyZXNzPgorCTwvYWZmaWxpYXRpb24+CisgICAgICA8L2F1dGhvcj4KKyAgICA8L2F1dGhvcmdyb3VwPgorCisgICAgPGNvcHlyaWdodD4KKyAgICAgIDx5ZWFyPjIwMDgtMjAwOTwveWVhcj4KKyAgICAgIDx5ZWFyPjIwMTMtMjAxNDwveWVhcj4KKyAgICAgIDxob2xkZXI+SW50ZWwgQ29ycG9yYXRpb248L2hvbGRlcj4KKyAgICA8L2NvcHlyaWdodD4KKyAgICA8Y29weXJpZ2h0PgorICAgICAgPHllYXI+MjAxMjwveWVhcj4KKyAgICAgIDxob2xkZXI+TGF1cmVudCBQaW5jaGFydDwvaG9sZGVyPgorICAgIDwvY29weXJpZ2h0PgorICAgIDxjb3B5cmlnaHQ+CisgICAgICA8eWVhcj4yMDE1PC95ZWFyPgorICAgICAgPGhvbGRlcj5MdWthcyBXdW5uZXI8L2hvbGRlcj4KKyAgICA8L2NvcHlyaWdodD4KKworICAgIDxsZWdhbG5vdGljZT4KKyAgICAgIDxwYXJhPgorCVRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKwlHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiAodGhlICJHUEwiKSBhcyBkaXN0cmlidXRlZCBpbgorCXRoZSBrZXJuZWwgc291cmNlIENPUFlJTkcgZmlsZS4KKyAgICAgIDwvcGFyYT4KKyAgICA8L2xlZ2Fsbm90aWNlPgorCisgICAgPHJldmhpc3Rvcnk+CisgICAgICA8IS0tIFB1dCBkb2N1bWVudCByZXZpc2lvbnMgaGVyZSwgbmV3ZXN0IGZpcnN0LiAtLT4KKyAgICAgIDxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjEuMDwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMTItMDctMTM8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPkxQPC9hdXRob3Jpbml0aWFscz4KKwk8cmV2cmVtYXJrPkFkZGVkIGV4dGVuc2l2ZSBkb2N1bWVudGF0aW9uIGFib3V0IGRyaXZlciBpbnRlcm5hbHMuCisJPC9yZXZyZW1hcms+CisgICAgICA8L3JldmlzaW9uPgorICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+MS4xPC9yZXZudW1iZXI+CisJPGRhdGU+MjAxNS0xMC0xMTwvZGF0ZT4KKwk8YXV0aG9yaW5pdGlhbHM+TFc8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+QWRkZWQgdmdhX3N3aXRjaGVyb28gZG9jdW1lbnRhdGlvbi4KKwk8L3JldnJlbWFyaz4KKyAgICAgIDwvcmV2aXNpb24+CisgICAgPC9yZXZoaXN0b3J5PgorICA8L2Jvb2tpbmZvPgorCis8dG9jPjwvdG9jPgorCis8cGFydCBpZD0iZHJtQ29yZSI+CisgIDx0aXRsZT5EUk0gQ29yZTwvdGl0bGU+CisgIDxwYXJ0aW50cm8+CisgICAgPHBhcmE+CisgICAgICBUaGlzIGZpcnN0IHBhcnQgb2YgdGhlIEdQVSBEcml2ZXIgRGV2ZWxvcGVyJ3MgR3VpZGUgZG9jdW1lbnRzIGNvcmUgRFJNCisgICAgICBjb2RlLCBoZWxwZXIgbGlicmFyaWVzIGZvciB3cml0aW5nIGRyaXZlcnMgYW5kIGdlbmVyaWMgdXNlcnNwYWNlCisgICAgICBpbnRlcmZhY2VzIGV4cG9zZWQgYnkgRFJNIGRyaXZlcnMuCisgICAgPC9wYXJhPgorICA8L3BhcnRpbnRybz4KKworICA8Y2hhcHRlciBpZD0iZHJtSW50cm9kdWN0aW9uIj4KKyAgICA8dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIFRoZSBMaW51eCBEUk0gbGF5ZXIgY29udGFpbnMgY29kZSBpbnRlbmRlZCB0byBzdXBwb3J0IHRoZSBuZWVkcworICAgICAgb2YgY29tcGxleCBncmFwaGljcyBkZXZpY2VzLCB1c3VhbGx5IGNvbnRhaW5pbmcgcHJvZ3JhbW1hYmxlCisgICAgICBwaXBlbGluZXMgd2VsbCBzdWl0ZWQgdG8gM0QgZ3JhcGhpY3MgYWNjZWxlcmF0aW9uLiAgR3JhcGhpY3MKKyAgICAgIGRyaXZlcnMgaW4gdGhlIGtlcm5lbCBtYXkgbWFrZSB1c2Ugb2YgRFJNIGZ1bmN0aW9ucyB0byBtYWtlCisgICAgICB0YXNrcyBsaWtlIG1lbW9yeSBtYW5hZ2VtZW50LCBpbnRlcnJ1cHQgaGFuZGxpbmcgYW5kIERNQSBlYXNpZXIsCisgICAgICBhbmQgcHJvdmlkZSBhIHVuaWZvcm0gaW50ZXJmYWNlIHRvIGFwcGxpY2F0aW9ucy4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBBIG5vdGUgb24gdmVyc2lvbnM6IHRoaXMgZ3VpZGUgY292ZXJzIGZlYXR1cmVzIGZvdW5kIGluIHRoZSBEUk0KKyAgICAgIHRyZWUsIGluY2x1ZGluZyB0aGUgVFRNIG1lbW9yeSBtYW5hZ2VyLCBvdXRwdXQgY29uZmlndXJhdGlvbiBhbmQKKyAgICAgIG1vZGUgc2V0dGluZywgYW5kIHRoZSBuZXcgdmJsYW5rIGludGVybmFscywgaW4gYWRkaXRpb24gdG8gYWxsCisgICAgICB0aGUgcmVndWxhciBmZWF0dXJlcyBmb3VuZCBpbiBjdXJyZW50IGtlcm5lbHMuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgW0luc2VydCBkaWFncmFtIG9mIHR5cGljYWwgRFJNIHN0YWNrIGhlcmVdCisgICAgPC9wYXJhPgorICA8L2NoYXB0ZXI+CisKKyAgPCEtLSBJbnRlcm5hbHMgLS0+CisKKyAgPGNoYXB0ZXIgaWQ9ImRybUludGVybmFscyI+CisgICAgPHRpdGxlPkRSTSBJbnRlcm5hbHM8L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgVGhpcyBjaGFwdGVyIGRvY3VtZW50cyBEUk0gaW50ZXJuYWxzIHJlbGV2YW50IHRvIGRyaXZlciBhdXRob3JzCisgICAgICBhbmQgZGV2ZWxvcGVycyB3b3JraW5nIHRvIGFkZCBzdXBwb3J0IGZvciB0aGUgbGF0ZXN0IGZlYXR1cmVzIHRvCisgICAgICBleGlzdGluZyBkcml2ZXJzLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIEZpcnN0LCB3ZSBnbyBvdmVyIHNvbWUgdHlwaWNhbCBkcml2ZXIgaW5pdGlhbGl6YXRpb24KKyAgICAgIHJlcXVpcmVtZW50cywgbGlrZSBzZXR0aW5nIHVwIGNvbW1hbmQgYnVmZmVycywgY3JlYXRpbmcgYW4KKyAgICAgIGluaXRpYWwgb3V0cHV0IGNvbmZpZ3VyYXRpb24sIGFuZCBpbml0aWFsaXppbmcgY29yZSBzZXJ2aWNlcy4KKyAgICAgIFN1YnNlcXVlbnQgc2VjdGlvbnMgY292ZXIgY29yZSBpbnRlcm5hbHMgaW4gbW9yZSBkZXRhaWwsCisgICAgICBwcm92aWRpbmcgaW1wbGVtZW50YXRpb24gbm90ZXMgYW5kIGV4YW1wbGVzLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIFRoZSBEUk0gbGF5ZXIgcHJvdmlkZXMgc2V2ZXJhbCBzZXJ2aWNlcyB0byBncmFwaGljcyBkcml2ZXJzLAorICAgICAgbWFueSBvZiB0aGVtIGRyaXZlbiBieSB0aGUgYXBwbGljYXRpb24gaW50ZXJmYWNlcyBpdCBwcm92aWRlcworICAgICAgdGhyb3VnaCBsaWJkcm0sIHRoZSBsaWJyYXJ5IHRoYXQgd3JhcHMgbW9zdCBvZiB0aGUgRFJNIGlvY3Rscy4KKyAgICAgIFRoZXNlIGluY2x1ZGUgdmJsYW5rIGV2ZW50IGhhbmRsaW5nLCBtZW1vcnkKKyAgICAgIG1hbmFnZW1lbnQsIG91dHB1dCBtYW5hZ2VtZW50LCBmcmFtZWJ1ZmZlciBtYW5hZ2VtZW50LCBjb21tYW5kCisgICAgICBzdWJtaXNzaW9uICZhbXA7IGZlbmNpbmcsIHN1c3BlbmQvcmVzdW1lIHN1cHBvcnQsIGFuZCBETUEKKyAgICAgIHNlcnZpY2VzLgorICAgIDwvcGFyYT4KKworICA8IS0tIEludGVybmFsczogZHJpdmVyIGluaXQgLS0+CisKKyAgPHNlY3QxPgorICAgIDx0aXRsZT5Ecml2ZXIgSW5pdGlhbGl6YXRpb248L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgQXQgdGhlIGNvcmUgb2YgZXZlcnkgRFJNIGRyaXZlciBpcyBhIDxzdHJ1Y3RuYW1lPmRybV9kcml2ZXI8L3N0cnVjdG5hbWU+CisgICAgICBzdHJ1Y3R1cmUuIERyaXZlcnMgdHlwaWNhbGx5IHN0YXRpY2FsbHkgaW5pdGlhbGl6ZSBhIGRybV9kcml2ZXIgc3RydWN0dXJlLAorICAgICAgYW5kIHRoZW4gcGFzcyBpdCB0byA8ZnVuY3Rpb24+ZHJtX2Rldl9hbGxvYygpPC9mdW5jdGlvbj4gdG8gYWxsb2NhdGUgYQorICAgICAgZGV2aWNlIGluc3RhbmNlLiBBZnRlciB0aGUgZGV2aWNlIGluc3RhbmNlIGlzIGZ1bGx5IGluaXRpYWxpemVkIGl0IGNhbiBiZQorICAgICAgcmVnaXN0ZXJlZCAod2hpY2ggbWFrZXMgaXQgYWNjZXNzaWJsZSBmcm9tIHVzZXJzcGFjZSkgdXNpbmcKKyAgICAgIDxmdW5jdGlvbj5kcm1fZGV2X3JlZ2lzdGVyKCk8L2Z1bmN0aW9uPi4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBUaGUgPHN0cnVjdG5hbWU+ZHJtX2RyaXZlcjwvc3RydWN0bmFtZT4gc3RydWN0dXJlIGNvbnRhaW5zIHN0YXRpYworICAgICAgaW5mb3JtYXRpb24gdGhhdCBkZXNjcmliZXMgdGhlIGRyaXZlciBhbmQgZmVhdHVyZXMgaXQgc3VwcG9ydHMsIGFuZAorICAgICAgcG9pbnRlcnMgdG8gbWV0aG9kcyB0aGF0IHRoZSBEUk0gY29yZSB3aWxsIGNhbGwgdG8gaW1wbGVtZW50IHRoZSBEUk0gQVBJLgorICAgICAgV2Ugd2lsbCBmaXJzdCBnbyB0aHJvdWdoIHRoZSA8c3RydWN0bmFtZT5kcm1fZHJpdmVyPC9zdHJ1Y3RuYW1lPiBzdGF0aWMKKyAgICAgIGluZm9ybWF0aW9uIGZpZWxkcywgYW5kIHdpbGwgdGhlbiBkZXNjcmliZSBpbmRpdmlkdWFsIG9wZXJhdGlvbnMgaW4KKyAgICAgIGRldGFpbHMgYXMgdGhleSBnZXQgdXNlZCBpbiBsYXRlciBzZWN0aW9ucy4KKyAgICA8L3BhcmE+CisgICAgPHNlY3QyPgorICAgICAgPHRpdGxlPkRyaXZlciBJbmZvcm1hdGlvbjwvdGl0bGU+CisgICAgICA8c2VjdDM+CisgICAgICAgIDx0aXRsZT5Ecml2ZXIgRmVhdHVyZXM8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBEcml2ZXJzIGluZm9ybSB0aGUgRFJNIGNvcmUgYWJvdXQgdGhlaXIgcmVxdWlyZW1lbnRzIGFuZCBzdXBwb3J0ZWQKKyAgICAgICAgICBmZWF0dXJlcyBieSBzZXR0aW5nIGFwcHJvcHJpYXRlIGZsYWdzIGluIHRoZQorICAgICAgICAgIDxzdHJ1Y3RmaWVsZD5kcml2ZXJfZmVhdHVyZXM8L3N0cnVjdGZpZWxkPiBmaWVsZC4gU2luY2UgdGhvc2UgZmxhZ3MKKyAgICAgICAgICBpbmZsdWVuY2UgdGhlIERSTSBjb3JlIGJlaGF2aW91ciBzaW5jZSByZWdpc3RyYXRpb24gdGltZSwgbW9zdCBvZiB0aGVtCisgICAgICAgICAgbXVzdCBiZSBzZXQgdG8gcmVnaXN0ZXJpbmcgdGhlIDxzdHJ1Y3RuYW1lPmRybV9kcml2ZXI8L3N0cnVjdG5hbWU+CisgICAgICAgICAgaW5zdGFuY2UuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHN5bm9wc2lzPnUzMiBkcml2ZXJfZmVhdHVyZXM7PC9zeW5vcHNpcz4KKyAgICAgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgICAgICA8dGl0bGU+RHJpdmVyIEZlYXR1cmUgRmxhZ3M8L3RpdGxlPgorICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8dGVybT5EUklWRVJfVVNFX0FHUDwvdGVybT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgRHJpdmVyIHVzZXMgQUdQIGludGVyZmFjZSwgdGhlIERSTSBjb3JlIHdpbGwgbWFuYWdlIEFHUCByZXNvdXJjZXMuCisgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgPHRlcm0+RFJJVkVSX1JFUVVJUkVfQUdQPC90ZXJtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICBEcml2ZXIgbmVlZHMgQUdQIGludGVyZmFjZSB0byBmdW5jdGlvbi4gQUdQIGluaXRpYWxpemF0aW9uIGZhaWx1cmUKKyAgICAgICAgICAgICAgd2lsbCBiZWNvbWUgYSBmYXRhbCBlcnJvci4KKyAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8dGVybT5EUklWRVJfUENJX0RNQTwvdGVybT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgRHJpdmVyIGlzIGNhcGFibGUgb2YgUENJIERNQSwgbWFwcGluZyBvZiBQQ0kgRE1BIGJ1ZmZlcnMgdG8KKyAgICAgICAgICAgICAgdXNlcnNwYWNlIHdpbGwgYmUgZW5hYmxlZC4gRGVwcmVjYXRlZC4KKyAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8dGVybT5EUklWRVJfU0c8L3Rlcm0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgIERyaXZlciBjYW4gcGVyZm9ybSBzY2F0dGVyL2dhdGhlciBETUEsIGFsbG9jYXRpb24gYW5kIG1hcHBpbmcgb2YKKyAgICAgICAgICAgICAgc2NhdHRlci9nYXRoZXIgYnVmZmVycyB3aWxsIGJlIGVuYWJsZWQuIERlcHJlY2F0ZWQuCisgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgPHRlcm0+RFJJVkVSX0hBVkVfRE1BPC90ZXJtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICBEcml2ZXIgc3VwcG9ydHMgRE1BLCB0aGUgdXNlcnNwYWNlIERNQSBBUEkgd2lsbCBiZSBzdXBwb3J0ZWQuCisgICAgICAgICAgICAgIERlcHJlY2F0ZWQuCisgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgPHRlcm0+RFJJVkVSX0hBVkVfSVJRPC90ZXJtPjx0ZXJtPkRSSVZFUl9JUlFfU0hBUkVEPC90ZXJtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICBEUklWRVJfSEFWRV9JUlEgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGRyaXZlciBoYXMgYW4gSVJRIGhhbmRsZXIKKyAgICAgICAgICAgICAgbWFuYWdlZCBieSB0aGUgRFJNIENvcmUuIFRoZSBjb3JlIHdpbGwgc3VwcG9ydCBzaW1wbGUgSVJRIGhhbmRsZXIKKyAgICAgICAgICAgICAgaW5zdGFsbGF0aW9uIHdoZW4gdGhlIGZsYWcgaXMgc2V0LiBUaGUgaW5zdGFsbGF0aW9uIHByb2Nlc3MgaXMKKyAgICAgICAgICAgICAgZGVzY3JpYmVkIGluIDx4cmVmIGxpbmtlbmQ9ImRybS1pcnEtcmVnaXN0cmF0aW9uIi8+LjwvcGFyYT4KKyAgICAgICAgICAgICAgPHBhcmE+RFJJVkVSX0lSUV9TSEFSRUQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGRldmljZSAmYW1wOyBoYW5kbGVyCisgICAgICAgICAgICAgIHN1cHBvcnQgc2hhcmVkIElSUXMgKG5vdGUgdGhhdCB0aGlzIGlzIHJlcXVpcmVkIG9mIFBDSSAgZHJpdmVycykuCisgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgPHRlcm0+RFJJVkVSX0dFTTwvdGVybT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgRHJpdmVyIHVzZSB0aGUgR0VNIG1lbW9yeSBtYW5hZ2VyLgorICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgIDx0ZXJtPkRSSVZFUl9NT0RFU0VUPC90ZXJtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICBEcml2ZXIgc3VwcG9ydHMgbW9kZSBzZXR0aW5nIGludGVyZmFjZXMgKEtNUykuCisgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgPHRlcm0+RFJJVkVSX1BSSU1FPC90ZXJtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICBEcml2ZXIgaW1wbGVtZW50cyBEUk0gUFJJTUUgYnVmZmVyIHNoYXJpbmcuCisgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgPHRlcm0+RFJJVkVSX1JFTkRFUjwvdGVybT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgRHJpdmVyIHN1cHBvcnRzIGRlZGljYXRlZCByZW5kZXIgbm9kZXMuCisgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgPHRlcm0+RFJJVkVSX0FUT01JQzwvdGVybT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgRHJpdmVyIHN1cHBvcnRzIGF0b21pYyBwcm9wZXJ0aWVzLiAgSW4gdGhpcyBjYXNlIHRoZSBkcml2ZXIKKyAgICAgICAgICAgICAgbXVzdCBpbXBsZW1lbnQgYXBwcm9wcmlhdGUgb2JqLT5hdG9taWNfZ2V0X3Byb3BlcnR5KCkgdmZ1bmNzCisgICAgICAgICAgICAgIGZvciBhbnkgbW9kZXNldCBvYmplY3RzIHdpdGggZHJpdmVyIHNwZWNpZmljIHByb3BlcnRpZXMuCisgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgICA8L3NlY3QzPgorICAgICAgPHNlY3QzPgorICAgICAgICA8dGl0bGU+TWFqb3IsIE1pbm9yIGFuZCBQYXRjaGxldmVsPC90aXRsZT4KKyAgICAgICAgPHN5bm9wc2lzPmludCBtYWpvcjsKK2ludCBtaW5vcjsKK2ludCBwYXRjaGxldmVsOzwvc3lub3BzaXM+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBEUk0gY29yZSBpZGVudGlmaWVzIGRyaXZlciB2ZXJzaW9ucyBieSBhIG1ham9yLCBtaW5vciBhbmQgcGF0Y2gKKyAgICAgICAgICBsZXZlbCB0cmlwbGV0LiBUaGUgaW5mb3JtYXRpb24gaXMgcHJpbnRlZCB0byB0aGUga2VybmVsIGxvZyBhdAorICAgICAgICAgIGluaXRpYWxpemF0aW9uIHRpbWUgYW5kIHBhc3NlZCB0byB1c2Vyc3BhY2UgdGhyb3VnaCB0aGUKKyAgICAgICAgICBEUk1fSU9DVExfVkVSU0lPTiBpb2N0bC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgbWFqb3IgYW5kIG1pbm9yIG51bWJlcnMgYXJlIGFsc28gdXNlZCB0byB2ZXJpZnkgdGhlIHJlcXVlc3RlZCBkcml2ZXIKKyAgICAgICAgICBBUEkgdmVyc2lvbiBwYXNzZWQgdG8gRFJNX0lPQ1RMX1NFVF9WRVJTSU9OLiBXaGVuIHRoZSBkcml2ZXIgQVBJIGNoYW5nZXMKKyAgICAgICAgICBiZXR3ZWVuIG1pbm9yIHZlcnNpb25zLCBhcHBsaWNhdGlvbnMgY2FuIGNhbGwgRFJNX0lPQ1RMX1NFVF9WRVJTSU9OIHRvCisgICAgICAgICAgc2VsZWN0IGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgQVBJLiBJZiB0aGUgcmVxdWVzdGVkIG1ham9yIGlzbid0IGVxdWFsCisgICAgICAgICAgdG8gdGhlIGRyaXZlciBtYWpvciwgb3IgdGhlIHJlcXVlc3RlZCBtaW5vciBpcyBsYXJnZXIgdGhhbiB0aGUgZHJpdmVyCisgICAgICAgICAgbWlub3IsIHRoZSBEUk1fSU9DVExfU0VUX1ZFUlNJT04gY2FsbCB3aWxsIHJldHVybiBhbiBlcnJvci4gT3RoZXJ3aXNlCisgICAgICAgICAgdGhlIGRyaXZlcidzIHNldF92ZXJzaW9uKCkgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHJlcXVlc3RlZAorICAgICAgICAgIHZlcnNpb24uCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdDM+CisgICAgICA8c2VjdDM+CisgICAgICAgIDx0aXRsZT5OYW1lLCBEZXNjcmlwdGlvbiBhbmQgRGF0ZTwvdGl0bGU+CisgICAgICAgIDxzeW5vcHNpcz5jaGFyICpuYW1lOworY2hhciAqZGVzYzsKK2NoYXIgKmRhdGU7PC9zeW5vcHNpcz4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIGRyaXZlciBuYW1lIGlzIHByaW50ZWQgdG8gdGhlIGtlcm5lbCBsb2cgYXQgaW5pdGlhbGl6YXRpb24gdGltZSwKKyAgICAgICAgICB1c2VkIGZvciBJUlEgcmVnaXN0cmF0aW9uIGFuZCBwYXNzZWQgdG8gdXNlcnNwYWNlIHRocm91Z2gKKyAgICAgICAgICBEUk1fSU9DVExfVkVSU0lPTi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgZHJpdmVyIGRlc2NyaXB0aW9uIGlzIGEgcHVyZWx5IGluZm9ybWF0aXZlIHN0cmluZyBwYXNzZWQgdG8KKyAgICAgICAgICB1c2Vyc3BhY2UgdGhyb3VnaCB0aGUgRFJNX0lPQ1RMX1ZFUlNJT04gaW9jdGwgYW5kIG90aGVyd2lzZSB1bnVzZWQgYnkKKyAgICAgICAgICB0aGUga2VybmVsLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBkcml2ZXIgZGF0ZSwgZm9ybWF0dGVkIGFzIFlZWVlNTURELCBpcyBtZWFudCB0byBpZGVudGlmeSB0aGUgZGF0ZSBvZgorICAgICAgICAgIHRoZSBsYXRlc3QgbW9kaWZpY2F0aW9uIHRvIHRoZSBkcml2ZXIuIEhvd2V2ZXIsIGFzIG1vc3QgZHJpdmVycyBmYWlsIHRvCisgICAgICAgICAgdXBkYXRlIGl0LCBpdHMgdmFsdWUgaXMgbW9zdGx5IHVzZWxlc3MuIFRoZSBEUk0gY29yZSBwcmludHMgaXQgdG8gdGhlCisgICAgICAgICAga2VybmVsIGxvZyBhdCBpbml0aWFsaXphdGlvbiB0aW1lIGFuZCBwYXNzZXMgaXQgdG8gdXNlcnNwYWNlIHRocm91Z2ggdGhlCisgICAgICAgICAgRFJNX0lPQ1RMX1ZFUlNJT04gaW9jdGwuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdDM+CisgICAgPC9zZWN0Mj4KKyAgICA8c2VjdDI+CisgICAgICA8dGl0bGU+RGV2aWNlIEluc3RhbmNlIGFuZCBEcml2ZXIgSGFuZGxpbmc8L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jIGRyaXZlciBpbnN0YW5jZSBvdmVydmlldworIUVkcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jCisgICAgPC9zZWN0Mj4KKyAgICA8c2VjdDI+CisgICAgICA8dGl0bGU+RHJpdmVyIExvYWQ8L3RpdGxlPgorICAgICAgPHNlY3QzIGlkPSJkcm0taXJxLXJlZ2lzdHJhdGlvbiI+CisgICAgICAgIDx0aXRsZT5JUlEgUmVnaXN0cmF0aW9uPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIERSTSBjb3JlIHRyaWVzIHRvIGZhY2lsaXRhdGUgSVJRIGhhbmRsZXIgcmVnaXN0cmF0aW9uIGFuZAorICAgICAgICAgIHVucmVnaXN0cmF0aW9uIGJ5IHByb3ZpZGluZyA8ZnVuY3Rpb24+ZHJtX2lycV9pbnN0YWxsPC9mdW5jdGlvbj4gYW5kCisgICAgICAgICAgPGZ1bmN0aW9uPmRybV9pcnFfdW5pbnN0YWxsPC9mdW5jdGlvbj4gZnVuY3Rpb25zLiBUaG9zZSBmdW5jdGlvbnMgb25seQorICAgICAgICAgIHN1cHBvcnQgYSBzaW5nbGUgaW50ZXJydXB0IHBlciBkZXZpY2UsIGRldmljZXMgdGhhdCB1c2UgbW9yZSB0aGFuIG9uZQorICAgICAgICAgIElSUXMgbmVlZCB0byBiZSBoYW5kbGVkIG1hbnVhbGx5LgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxzZWN0ND4KKyAgICAgICAgICA8dGl0bGU+TWFuYWdlZCBJUlEgUmVnaXN0cmF0aW9uPC90aXRsZT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxmdW5jdGlvbj5kcm1faXJxX2luc3RhbGw8L2Z1bmN0aW9uPiBzdGFydHMgYnkgY2FsbGluZyB0aGUKKyAgICAgICAgICAgIDxtZXRob2RuYW1lPmlycV9wcmVpbnN0YWxsPC9tZXRob2RuYW1lPiBkcml2ZXIgb3BlcmF0aW9uLiBUaGUgb3BlcmF0aW9uCisgICAgICAgICAgICBpcyBvcHRpb25hbCBhbmQgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGUgaW50ZXJydXB0IHdpbGwgbm90IGdldCBmaXJlZCBieQorICAgICAgICAgICAgY2xlYXJpbmcgYWxsIHBlbmRpbmcgaW50ZXJydXB0IGZsYWdzIG9yIGRpc2FibGluZyB0aGUgaW50ZXJydXB0LgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBwYXNzZWQtaW4gSVJRIHdpbGwgdGhlbiBiZSByZXF1ZXN0ZWQgYnkgYSBjYWxsIHRvCisgICAgICAgICAgICA8ZnVuY3Rpb24+cmVxdWVzdF9pcnE8L2Z1bmN0aW9uPi4gSWYgdGhlIERSSVZFUl9JUlFfU0hBUkVEIGRyaXZlcgorICAgICAgICAgICAgZmVhdHVyZSBmbGFnIGlzIHNldCwgYSBzaGFyZWQgKElSUUZfU0hBUkVEKSBJUlEgaGFuZGxlciB3aWxsIGJlCisgICAgICAgICAgICByZXF1ZXN0ZWQuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIElSUSBoYW5kbGVyIGZ1bmN0aW9uIG11c3QgYmUgcHJvdmlkZWQgYXMgdGhlIG1hbmRhdG9yeSBpcnFfaGFuZGxlcgorICAgICAgICAgICAgZHJpdmVyIG9wZXJhdGlvbi4gSXQgd2lsbCBnZXQgcGFzc2VkIGRpcmVjdGx5IHRvCisgICAgICAgICAgICA8ZnVuY3Rpb24+cmVxdWVzdF9pcnE8L2Z1bmN0aW9uPiBhbmQgdGh1cyBoYXMgdGhlIHNhbWUgcHJvdG90eXBlIGFzIGFsbAorICAgICAgICAgICAgSVJRIGhhbmRsZXJzLiBJdCB3aWxsIGdldCBjYWxsZWQgd2l0aCBhIHBvaW50ZXIgdG8gdGhlIERSTSBkZXZpY2UgYXMgdGhlCisgICAgICAgICAgICBzZWNvbmQgYXJndW1lbnQuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRmluYWxseSB0aGUgZnVuY3Rpb24gY2FsbHMgdGhlIG9wdGlvbmFsCisgICAgICAgICAgICA8bWV0aG9kbmFtZT5pcnFfcG9zdGluc3RhbGw8L21ldGhvZG5hbWU+IGRyaXZlciBvcGVyYXRpb24uIFRoZSBvcGVyYXRpb24KKyAgICAgICAgICAgIHVzdWFsbHkgZW5hYmxlcyBpbnRlcnJ1cHRzIChleGNsdWRpbmcgdGhlIHZibGFuayBpbnRlcnJ1cHQsIHdoaWNoIGlzCisgICAgICAgICAgICBlbmFibGVkIHNlcGFyYXRlbHkpLCBidXQgZHJpdmVycyBtYXkgY2hvb3NlIHRvIGVuYWJsZS9kaXNhYmxlIGludGVycnVwdHMKKyAgICAgICAgICAgIGF0IGEgZGlmZmVyZW50IHRpbWUuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPGZ1bmN0aW9uPmRybV9pcnFfdW5pbnN0YWxsPC9mdW5jdGlvbj4gaXMgc2ltaWxhcmx5IHVzZWQgdG8gdW5pbnN0YWxsIGFuCisgICAgICAgICAgICBJUlEgaGFuZGxlci4gSXQgc3RhcnRzIGJ5IHdha2luZyB1cCBhbGwgcHJvY2Vzc2VzIHdhaXRpbmcgb24gYSB2YmxhbmsKKyAgICAgICAgICAgIGludGVycnVwdCB0byBtYWtlIHN1cmUgdGhleSBkb24ndCBoYW5nLCBhbmQgdGhlbiBjYWxscyB0aGUgb3B0aW9uYWwKKyAgICAgICAgICAgIDxtZXRob2RuYW1lPmlycV91bmluc3RhbGw8L21ldGhvZG5hbWU+IGRyaXZlciBvcGVyYXRpb24uIFRoZSBvcGVyYXRpb24KKyAgICAgICAgICAgIG11c3QgZGlzYWJsZSBhbGwgaGFyZHdhcmUgaW50ZXJydXB0cy4gRmluYWxseSB0aGUgZnVuY3Rpb24gZnJlZXMgdGhlIElSUQorICAgICAgICAgICAgYnkgY2FsbGluZyA8ZnVuY3Rpb24+ZnJlZV9pcnE8L2Z1bmN0aW9uPi4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdDQ+CisgICAgICAgIDxzZWN0ND4KKyAgICAgICAgICA8dGl0bGU+TWFudWFsIElSUSBSZWdpc3RyYXRpb248L3RpdGxlPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRHJpdmVycyB0aGF0IHJlcXVpcmUgbXVsdGlwbGUgaW50ZXJydXB0IGhhbmRsZXJzIGNhbid0IHVzZSB0aGUgbWFuYWdlZAorICAgICAgICAgICAgSVJRIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMuIEluIHRoYXQgY2FzZSBJUlFzIG11c3QgYmUgcmVnaXN0ZXJlZCBhbmQKKyAgICAgICAgICAgIHVucmVnaXN0ZXJlZCBtYW51YWxseSAodXN1YWxseSB3aXRoIHRoZSA8ZnVuY3Rpb24+cmVxdWVzdF9pcnE8L2Z1bmN0aW9uPgorICAgICAgICAgICAgYW5kIDxmdW5jdGlvbj5mcmVlX2lycTwvZnVuY3Rpb24+IGZ1bmN0aW9ucywgb3IgdGhlaXIgZGV2bV8qIGVxdWl2YWxlbnQpLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4gbWFudWFsbHkgcmVnaXN0ZXJpbmcgSVJRcywgZHJpdmVycyBtdXN0IG5vdCBzZXQgdGhlIERSSVZFUl9IQVZFX0lSUQorICAgICAgICAgICAgZHJpdmVyIGZlYXR1cmUgZmxhZywgYW5kIG11c3Qgbm90IHByb3ZpZGUgdGhlCisJICAgIDxtZXRob2RuYW1lPmlycV9oYW5kbGVyPC9tZXRob2RuYW1lPiBkcml2ZXIgb3BlcmF0aW9uLiBUaGV5IG11c3Qgc2V0IHRoZQorCSAgICA8c3RydWN0bmFtZT5kcm1fZGV2aWNlPC9zdHJ1Y3RuYW1lPiA8c3RydWN0ZmllbGQ+aXJxX2VuYWJsZWQ8L3N0cnVjdGZpZWxkPgorCSAgICBmaWVsZCB0byAxIHVwb24gcmVnaXN0cmF0aW9uIG9mIHRoZSBJUlFzLCBhbmQgY2xlYXIgaXQgdG8gMCBhZnRlcgorCSAgICB1bnJlZ2lzdGVyaW5nIHRoZSBJUlFzLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0ND4KKyAgICAgIDwvc2VjdDM+CisgICAgICA8c2VjdDM+CisgICAgICAgIDx0aXRsZT5NZW1vcnkgTWFuYWdlciBJbml0aWFsaXphdGlvbjwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEV2ZXJ5IERSTSBkcml2ZXIgcmVxdWlyZXMgYSBtZW1vcnkgbWFuYWdlciB3aGljaCBtdXN0IGJlIGluaXRpYWxpemVkIGF0CisgICAgICAgICAgbG9hZCB0aW1lLiBEUk0gY3VycmVudGx5IGNvbnRhaW5zIHR3byBtZW1vcnkgbWFuYWdlcnMsIHRoZSBUcmFuc2xhdGlvbgorICAgICAgICAgIFRhYmxlIE1hbmFnZXIgKFRUTSkgYW5kIHRoZSBHcmFwaGljcyBFeGVjdXRpb24gTWFuYWdlciAoR0VNKS4KKyAgICAgICAgICBUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgdXNlIG9mIHRoZSBHRU0gbWVtb3J5IG1hbmFnZXIgb25seS4gU2VlCisgICAgICAgICAgPHhyZWYgbGlua2VuZD0iZHJtLW1lbW9yeS1tYW5hZ2VtZW50Ii8+IGZvciBkZXRhaWxzLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3QzPgorICAgICAgPHNlY3QzPgorICAgICAgICA8dGl0bGU+TWlzY2VsbGFuZW91cyBEZXZpY2UgQ29uZmlndXJhdGlvbjwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEFub3RoZXIgdGFzayB0aGF0IG1heSBiZSBuZWNlc3NhcnkgZm9yIFBDSSBkZXZpY2VzIGR1cmluZyBjb25maWd1cmF0aW9uCisgICAgICAgICAgaXMgbWFwcGluZyB0aGUgdmlkZW8gQklPUy4gT24gbWFueSBkZXZpY2VzLCB0aGUgVkJJT1MgZGVzY3JpYmVzIGRldmljZQorICAgICAgICAgIGNvbmZpZ3VyYXRpb24sIExDRCBwYW5lbCB0aW1pbmdzIChpZiBhbnkpLCBhbmQgY29udGFpbnMgZmxhZ3MgaW5kaWNhdGluZworICAgICAgICAgIGRldmljZSBzdGF0ZS4gTWFwcGluZyB0aGUgQklPUyBjYW4gYmUgZG9uZSB1c2luZyB0aGUgcGNpX21hcF9yb20oKSBjYWxsLAorICAgICAgICAgIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gdGhhdCB0YWtlcyBjYXJlIG9mIG1hcHBpbmcgdGhlIGFjdHVhbCBST00sCisgICAgICAgICAgd2hldGhlciBpdCBoYXMgYmVlbiBzaGFkb3dlZCBpbnRvIG1lbW9yeSAodHlwaWNhbGx5IGF0IGFkZHJlc3MgMHhjMDAwMCkKKyAgICAgICAgICBvciBleGlzdHMgb24gdGhlIFBDSSBkZXZpY2UgaW4gdGhlIFJPTSBCQVIuIE5vdGUgdGhhdCBhZnRlciB0aGUgUk9NIGhhcworICAgICAgICAgIGJlZW4gbWFwcGVkIGFuZCBhbnkgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGhhcyBiZWVuIGV4dHJhY3RlZCwgaXQgc2hvdWxkCisgICAgICAgICAgYmUgdW5tYXBwZWQ7IG9uIG1hbnkgZGV2aWNlcywgdGhlIFJPTSBhZGRyZXNzIGRlY29kZXIgaXMgc2hhcmVkIHdpdGgKKyAgICAgICAgICBvdGhlciBCQVJzLCBzbyBsZWF2aW5nIGl0IG1hcHBlZCBjb3VsZCBjYXVzZSB1bmRlc2lyZWQgYmVoYXZpb3VyIGxpa2UKKyAgICAgICAgICBoYW5ncyBvciBtZW1vcnkgY29ycnVwdGlvbi4KKyAgPCEtLSFGZHJpdmVycy9wY2kvcm9tLmMgcGNpX21hcF9yb20tLT4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0Mz4KKyAgICA8L3NlY3QyPgorICAgIDxzZWN0Mj4KKyAgICAgIDx0aXRsZT5CdXMtc3BlY2lmaWMgRGV2aWNlIFJlZ2lzdHJhdGlvbiBhbmQgUENJIFN1cHBvcnQ8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIEEgbnVtYmVyIG9mIGZ1bmN0aW9ucyBhcmUgcHJvdmlkZWQgdG8gaGVscCB3aXRoIGRldmljZSByZWdpc3RyYXRpb24uCisJVGhlIGZ1bmN0aW9ucyBkZWFsIHdpdGggUENJIGFuZCBwbGF0Zm9ybSBkZXZpY2VzIHJlc3BlY3RpdmVseSBhbmQgYXJlCisJb25seSBwcm92aWRlZCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLiBUaGVzZSBhcmUgYWxsIGRlcHJlY2F0ZWQgYW5kCisJc2hvdWxkbid0IGJlIHVzZWQgaW4gbmV3IGRyaXZlcnMuIEJlc2lkZXMgdGhhdCB0aGVyZSdzIGEgZmV3CisJaGVscGVycyBmb3IgcGNpIGRyaXZlcnMuCisgICAgICA8L3BhcmE+CishRWRyaXZlcnMvZ3B1L2RybS9kcm1fcGNpLmMKKyFFZHJpdmVycy9ncHUvZHJtL2RybV9wbGF0Zm9ybS5jCisgICAgPC9zZWN0Mj4KKyAgPC9zZWN0MT4KKworICA8IS0tIEludGVybmFsczogbWVtb3J5IG1hbmFnZW1lbnQgLS0+CisKKyAgPHNlY3QxIGlkPSJkcm0tbWVtb3J5LW1hbmFnZW1lbnQiPgorICAgIDx0aXRsZT5NZW1vcnkgbWFuYWdlbWVudDwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICBNb2Rlcm4gTGludXggc3lzdGVtcyByZXF1aXJlIGxhcmdlIGFtb3VudCBvZiBncmFwaGljcyBtZW1vcnkgdG8gc3RvcmUKKyAgICAgIGZyYW1lIGJ1ZmZlcnMsIHRleHR1cmVzLCB2ZXJ0aWNlcyBhbmQgb3RoZXIgZ3JhcGhpY3MtcmVsYXRlZCBkYXRhLiBHaXZlbgorICAgICAgdGhlIHZlcnkgZHluYW1pYyBuYXR1cmUgb2YgbWFueSBvZiB0aGF0IGRhdGEsIG1hbmFnaW5nIGdyYXBoaWNzIG1lbW9yeQorICAgICAgZWZmaWNpZW50bHkgaXMgdGh1cyBjcnVjaWFsIGZvciB0aGUgZ3JhcGhpY3Mgc3RhY2sgYW5kIHBsYXlzIGEgY2VudHJhbAorICAgICAgcm9sZSBpbiB0aGUgRFJNIGluZnJhc3RydWN0dXJlLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIFRoZSBEUk0gY29yZSBpbmNsdWRlcyB0d28gbWVtb3J5IG1hbmFnZXJzLCBuYW1lbHkgVHJhbnNsYXRpb24gVGFibGUgTWFwcworICAgICAgKFRUTSkgYW5kIEdyYXBoaWNzIEV4ZWN1dGlvbiBNYW5hZ2VyIChHRU0pLiBUVE0gd2FzIHRoZSBmaXJzdCBEUk0gbWVtb3J5CisgICAgICBtYW5hZ2VyIHRvIGJlIGRldmVsb3BlZCBhbmQgdHJpZWQgdG8gYmUgYSBvbmUtc2l6ZS1maXRzLXRoZW0gYWxsCisgICAgICBzb2x1dGlvbi4gSXQgcHJvdmlkZXMgYSBzaW5nbGUgdXNlcnNwYWNlIEFQSSB0byBhY2NvbW1vZGF0ZSB0aGUgbmVlZCBvZgorICAgICAgYWxsIGhhcmR3YXJlLCBzdXBwb3J0aW5nIGJvdGggVW5pZmllZCBNZW1vcnkgQXJjaGl0ZWN0dXJlIChVTUEpIGRldmljZXMKKyAgICAgIGFuZCBkZXZpY2VzIHdpdGggZGVkaWNhdGVkIHZpZGVvIFJBTSAoaS5lLiBtb3N0IGRpc2NyZXRlIHZpZGVvIGNhcmRzKS4KKyAgICAgIFRoaXMgcmVzdWx0ZWQgaW4gYSBsYXJnZSwgY29tcGxleCBwaWVjZSBvZiBjb2RlIHRoYXQgdHVybmVkIG91dCB0byBiZQorICAgICAgaGFyZCB0byB1c2UgZm9yIGRyaXZlciBkZXZlbG9wbWVudC4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBHRU0gc3RhcnRlZCBhcyBhbiBJbnRlbC1zcG9uc29yZWQgcHJvamVjdCBpbiByZWFjdGlvbiB0byBUVE0ncworICAgICAgY29tcGxleGl0eS4gSXRzIGRlc2lnbiBwaGlsb3NvcGh5IGlzIGNvbXBsZXRlbHkgZGlmZmVyZW50OiBpbnN0ZWFkIG9mCisgICAgICBwcm92aWRpbmcgYSBzb2x1dGlvbiB0byBldmVyeSBncmFwaGljcyBtZW1vcnktcmVsYXRlZCBwcm9ibGVtcywgR0VNCisgICAgICBpZGVudGlmaWVkIGNvbW1vbiBjb2RlIGJldHdlZW4gZHJpdmVycyBhbmQgY3JlYXRlZCBhIHN1cHBvcnQgbGlicmFyeSB0bworICAgICAgc2hhcmUgaXQuIEdFTSBoYXMgc2ltcGxlciBpbml0aWFsaXphdGlvbiBhbmQgZXhlY3V0aW9uIHJlcXVpcmVtZW50cyB0aGFuCisgICAgICBUVE0sIGJ1dCBoYXMgbm8gdmlkZW8gUkFNIG1hbmFnZW1lbnQgY2FwYWJpbGl0aWVzIGFuZCBpcyB0aHVzIGxpbWl0ZWQgdG8KKyAgICAgIFVNQSBkZXZpY2VzLgorICAgIDwvcGFyYT4KKyAgICA8c2VjdDI+CisgICAgICA8dGl0bGU+VGhlIFRyYW5zbGF0aW9uIFRhYmxlIE1hbmFnZXIgKFRUTSk8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIFRUTSBkZXNpZ24gYmFja2dyb3VuZCBhbmQgaW5mb3JtYXRpb24gYmVsb25ncyBoZXJlLgorICAgICAgPC9wYXJhPgorICAgICAgPHNlY3QzPgorICAgICAgICA8dGl0bGU+VFRNIGluaXRpYWxpemF0aW9uPC90aXRsZT4KKyAgICAgICAgPHdhcm5pbmc+PHBhcmE+VGhpcyBzZWN0aW9uIGlzIG91dGRhdGVkLjwvcGFyYT48L3dhcm5pbmc+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIERyaXZlcnMgd2lzaGluZyB0byBzdXBwb3J0IFRUTSBtdXN0IGZpbGwgb3V0IGEgZHJtX2JvX2RyaXZlcgorICAgICAgICAgIHN0cnVjdHVyZS4gVGhlIHN0cnVjdHVyZSBjb250YWlucyBzZXZlcmFsIGZpZWxkcyB3aXRoIGZ1bmN0aW9uCisgICAgICAgICAgcG9pbnRlcnMgZm9yIGluaXRpYWxpemluZyB0aGUgVFRNLCBhbGxvY2F0aW5nIGFuZCBmcmVlaW5nIG1lbW9yeSwKKyAgICAgICAgICB3YWl0aW5nIGZvciBjb21tYW5kIGNvbXBsZXRpb24gYW5kIGZlbmNlIHN5bmNocm9uaXphdGlvbiwgYW5kIG1lbW9yeQorICAgICAgICAgIG1pZ3JhdGlvbi4gU2VlIHRoZSByYWRlb25fdHRtLmMgZmlsZSBmb3IgYW4gZXhhbXBsZSBvZiB1c2FnZS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgdHRtX2dsb2JhbF9yZWZlcmVuY2Ugc3RydWN0dXJlIGlzIG1hZGUgdXAgb2Ygc2V2ZXJhbCBmaWVsZHM6CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorICAgICAgICAgIHN0cnVjdCB0dG1fZ2xvYmFsX3JlZmVyZW5jZSB7CisgICAgICAgICAgICAgICAgICBlbnVtIHR0bV9nbG9iYWxfdHlwZXMgZ2xvYmFsX3R5cGU7CisgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZTsKKyAgICAgICAgICAgICAgICAgIHZvaWQgKm9iamVjdDsKKyAgICAgICAgICAgICAgICAgIGludCAoKmluaXQpIChzdHJ1Y3QgdHRtX2dsb2JhbF9yZWZlcmVuY2UgKik7CisgICAgICAgICAgICAgICAgICB2b2lkICgqcmVsZWFzZSkgKHN0cnVjdCB0dG1fZ2xvYmFsX3JlZmVyZW5jZSAqKTsKKyAgICAgICAgICB9OworICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGVyZSBzaG91bGQgYmUgb25lIGdsb2JhbCByZWZlcmVuY2Ugc3RydWN0dXJlIGZvciB5b3VyIG1lbW9yeQorICAgICAgICAgIG1hbmFnZXIgYXMgYSB3aG9sZSwgYW5kIHRoZXJlIHdpbGwgYmUgb3RoZXJzIGZvciBlYWNoIG9iamVjdAorICAgICAgICAgIGNyZWF0ZWQgYnkgdGhlIG1lbW9yeSBtYW5hZ2VyIGF0IHJ1bnRpbWUuICBZb3VyIGdsb2JhbCBUVE0gc2hvdWxkCisgICAgICAgICAgaGF2ZSBhIHR5cGUgb2YgVFRNX0dMT0JBTF9UVE1fTUVNLiAgVGhlIHNpemUgZmllbGQgZm9yIHRoZSBnbG9iYWwKKyAgICAgICAgICBvYmplY3Qgc2hvdWxkIGJlIHNpemVvZihzdHJ1Y3QgdHRtX21lbV9nbG9iYWwpLCBhbmQgdGhlIGluaXQgYW5kCisgICAgICAgICAgcmVsZWFzZSBob29rcyBzaG91bGQgcG9pbnQgYXQgeW91ciBkcml2ZXItc3BlY2lmaWMgaW5pdCBhbmQKKyAgICAgICAgICByZWxlYXNlIHJvdXRpbmVzLCB3aGljaCBwcm9iYWJseSBldmVudHVhbGx5IGNhbGwKKyAgICAgICAgICB0dG1fbWVtX2dsb2JhbF9pbml0IGFuZCB0dG1fbWVtX2dsb2JhbF9yZWxlYXNlLCByZXNwZWN0aXZlbHkuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgT25jZSB5b3VyIGdsb2JhbCBUVE0gYWNjb3VudGluZyBzdHJ1Y3R1cmUgaXMgc2V0IHVwIGFuZCBpbml0aWFsaXplZAorICAgICAgICAgIGJ5IGNhbGxpbmcgdHRtX2dsb2JhbF9pdGVtX3JlZigpIG9uIGl0LAorICAgICAgICAgIHlvdSBuZWVkIHRvIGNyZWF0ZSBhIGJ1ZmZlciBvYmplY3QgVFRNIHRvCisgICAgICAgICAgcHJvdmlkZSBhIHBvb2wgZm9yIGJ1ZmZlciBvYmplY3QgYWxsb2NhdGlvbiBieSBjbGllbnRzIGFuZCB0aGUKKyAgICAgICAgICBrZXJuZWwgaXRzZWxmLiAgVGhlIHR5cGUgb2YgdGhpcyBvYmplY3Qgc2hvdWxkIGJlIFRUTV9HTE9CQUxfVFRNX0JPLAorICAgICAgICAgIGFuZCBpdHMgc2l6ZSBzaG91bGQgYmUgc2l6ZW9mKHN0cnVjdCB0dG1fYm9fZ2xvYmFsKS4gIEFnYWluLAorICAgICAgICAgIGRyaXZlci1zcGVjaWZpYyBpbml0IGFuZCByZWxlYXNlIGZ1bmN0aW9ucyBtYXkgYmUgcHJvdmlkZWQsCisgICAgICAgICAgbGlrZWx5IGV2ZW50dWFsbHkgY2FsbGluZyB0dG1fYm9fZ2xvYmFsX2luaXQoKSBhbmQKKyAgICAgICAgICB0dG1fYm9fZ2xvYmFsX3JlbGVhc2UoKSwgcmVzcGVjdGl2ZWx5LiAgQWxzbywgbGlrZSB0aGUgcHJldmlvdXMKKyAgICAgICAgICBvYmplY3QsIHR0bV9nbG9iYWxfaXRlbV9yZWYoKSBpcyB1c2VkIHRvIGNyZWF0ZSBhbiBpbml0aWFsIHJlZmVyZW5jZQorICAgICAgICAgIGNvdW50IGZvciB0aGUgVFRNLCB3aGljaCB3aWxsIGNhbGwgeW91ciBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0Mz4KKyAgICA8L3NlY3QyPgorICAgIDxzZWN0MiBpZD0iZHJtLWdlbSI+CisgICAgICA8dGl0bGU+VGhlIEdyYXBoaWNzIEV4ZWN1dGlvbiBNYW5hZ2VyIChHRU0pPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgR0VNIGRlc2lnbiBhcHByb2FjaCBoYXMgcmVzdWx0ZWQgaW4gYSBtZW1vcnkgbWFuYWdlciB0aGF0IGRvZXNuJ3QKKyAgICAgICAgcHJvdmlkZSBmdWxsIGNvdmVyYWdlIG9mIGFsbCAob3IgZXZlbiBhbGwgY29tbW9uKSB1c2UgY2FzZXMgaW4gaXRzCisgICAgICAgIHVzZXJzcGFjZSBvciBrZXJuZWwgQVBJLiBHRU0gZXhwb3NlcyBhIHNldCBvZiBzdGFuZGFyZCBtZW1vcnktcmVsYXRlZAorICAgICAgICBvcGVyYXRpb25zIHRvIHVzZXJzcGFjZSBhbmQgYSBzZXQgb2YgaGVscGVyIGZ1bmN0aW9ucyB0byBkcml2ZXJzLCBhbmQgbGV0CisgICAgICAgIGRyaXZlcnMgaW1wbGVtZW50IGhhcmR3YXJlLXNwZWNpZmljIG9wZXJhdGlvbnMgd2l0aCB0aGVpciBvd24gcHJpdmF0ZSBBUEkuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIEdFTSB1c2Vyc3BhY2UgQVBJIGlzIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0iaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvMjgzNzk4LyI+PGNpdGV0aXRsZT5HRU0gLSB0aGUgR3JhcGhpY3MKKyAgICAgICAgRXhlY3V0aW9uIE1hbmFnZXI8L2NpdGV0aXRsZT48L3VsaW5rPiBhcnRpY2xlIG9uIExXTi4gV2hpbGUgc2xpZ2h0bHkKKyAgICAgICAgb3V0ZGF0ZWQsIHRoZSBkb2N1bWVudCBwcm92aWRlcyBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIEdFTSBBUEkgcHJpbmNpcGxlcy4KKyAgICAgICAgQnVmZmVyIGFsbG9jYXRpb24gYW5kIHJlYWQgYW5kIHdyaXRlIG9wZXJhdGlvbnMsIGRlc2NyaWJlZCBhcyBwYXJ0IG9mIHRoZQorICAgICAgICBjb21tb24gR0VNIEFQSSwgYXJlIGN1cnJlbnRseSBpbXBsZW1lbnRlZCB1c2luZyBkcml2ZXItc3BlY2lmaWMgaW9jdGxzLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIEdFTSBpcyBkYXRhLWFnbm9zdGljLiBJdCBtYW5hZ2VzIGFic3RyYWN0IGJ1ZmZlciBvYmplY3RzIHdpdGhvdXQga25vd2luZworICAgICAgICB3aGF0IGluZGl2aWR1YWwgYnVmZmVycyBjb250YWluLiBBUElzIHRoYXQgcmVxdWlyZSBrbm93bGVkZ2Ugb2YgYnVmZmVyCisgICAgICAgIGNvbnRlbnRzIG9yIHB1cnBvc2UsIHN1Y2ggYXMgYnVmZmVyIGFsbG9jYXRpb24gb3Igc3luY2hyb25pemF0aW9uCisgICAgICAgIHByaW1pdGl2ZXMsIGFyZSB0aHVzIG91dHNpZGUgb2YgdGhlIHNjb3BlIG9mIEdFTSBhbmQgbXVzdCBiZSBpbXBsZW1lbnRlZAorICAgICAgICB1c2luZyBkcml2ZXItc3BlY2lmaWMgaW9jdGxzLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIE9uIGEgZnVuZGFtZW50YWwgbGV2ZWwsIEdFTSBpbnZvbHZlcyBzZXZlcmFsIG9wZXJhdGlvbnM6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgPGxpc3RpdGVtPk1lbW9yeSBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nPC9saXN0aXRlbT4KKyAgICAgICAgICA8bGlzdGl0ZW0+Q29tbWFuZCBleGVjdXRpb248L2xpc3RpdGVtPgorICAgICAgICAgIDxsaXN0aXRlbT5BcGVydHVyZSBtYW5hZ2VtZW50IGF0IGNvbW1hbmQgZXhlY3V0aW9uIHRpbWU8L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgQnVmZmVyIG9iamVjdCBhbGxvY2F0aW9uIGlzIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIGFuZCBsYXJnZWx5CisgICAgICAgIHByb3ZpZGVkIGJ5IExpbnV4J3Mgc2htZW0gbGF5ZXIsIHdoaWNoIHByb3ZpZGVzIG1lbW9yeSB0byBiYWNrIGVhY2gKKyAgICAgICAgb2JqZWN0LgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIERldmljZS1zcGVjaWZpYyBvcGVyYXRpb25zLCBzdWNoIGFzIGNvbW1hbmQgZXhlY3V0aW9uLCBwaW5uaW5nLCBidWZmZXIKKyAgICAgICAgcmVhZCAmYW1wOyB3cml0ZSwgbWFwcGluZywgYW5kIGRvbWFpbiBvd25lcnNoaXAgdHJhbnNmZXJzIGFyZSBsZWZ0IHRvCisgICAgICAgIGRyaXZlci1zcGVjaWZpYyBpb2N0bHMuCisgICAgICA8L3BhcmE+CisgICAgICA8c2VjdDM+CisgICAgICAgIDx0aXRsZT5HRU0gSW5pdGlhbGl6YXRpb248L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBEcml2ZXJzIHRoYXQgdXNlIEdFTSBtdXN0IHNldCB0aGUgRFJJVkVSX0dFTSBiaXQgaW4gdGhlIHN0cnVjdAorICAgICAgICAgIDxzdHJ1Y3RuYW1lPmRybV9kcml2ZXI8L3N0cnVjdG5hbWU+CisgICAgICAgICAgPHN0cnVjdGZpZWxkPmRyaXZlcl9mZWF0dXJlczwvc3RydWN0ZmllbGQ+IGZpZWxkLiBUaGUgRFJNIGNvcmUgd2lsbAorICAgICAgICAgIHRoZW4gYXV0b21hdGljYWxseSBpbml0aWFsaXplIHRoZSBHRU0gY29yZSBiZWZvcmUgY2FsbGluZyB0aGUKKyAgICAgICAgICA8bWV0aG9kbmFtZT5sb2FkPC9tZXRob2RuYW1lPiBvcGVyYXRpb24uIEJlaGluZCB0aGUgc2NlbmUsIHRoaXMgd2lsbAorICAgICAgICAgIGNyZWF0ZSBhIERSTSBNZW1vcnkgTWFuYWdlciBvYmplY3Qgd2hpY2ggcHJvdmlkZXMgYW4gYWRkcmVzcyBzcGFjZQorICAgICAgICAgIHBvb2wgZm9yIG9iamVjdCBhbGxvY2F0aW9uLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEluIGEgS01TIGNvbmZpZ3VyYXRpb24sIGRyaXZlcnMgbmVlZCB0byBhbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBhCisgICAgICAgICAgY29tbWFuZCByaW5nIGJ1ZmZlciBmb2xsb3dpbmcgY29yZSBHRU0gaW5pdGlhbGl6YXRpb24gaWYgcmVxdWlyZWQgYnkKKyAgICAgICAgICB0aGUgaGFyZHdhcmUuIFVNQSBkZXZpY2VzIHVzdWFsbHkgaGF2ZSB3aGF0IGlzIGNhbGxlZCBhICJzdG9sZW4iCisgICAgICAgICAgbWVtb3J5IHJlZ2lvbiwgd2hpY2ggcHJvdmlkZXMgc3BhY2UgZm9yIHRoZSBpbml0aWFsIGZyYW1lYnVmZmVyIGFuZAorICAgICAgICAgIGxhcmdlLCBjb250aWd1b3VzIG1lbW9yeSByZWdpb25zIHJlcXVpcmVkIGJ5IHRoZSBkZXZpY2UuIFRoaXMgc3BhY2UgaXMKKyAgICAgICAgICB0eXBpY2FsbHkgbm90IG1hbmFnZWQgYnkgR0VNLCBhbmQgbXVzdCBiZSBpbml0aWFsaXplZCBzZXBhcmF0ZWx5IGludG8KKyAgICAgICAgICBpdHMgb3duIERSTSBNTSBvYmplY3QuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdDM+CisgICAgICA8c2VjdDM+CisgICAgICAgIDx0aXRsZT5HRU0gT2JqZWN0cyBDcmVhdGlvbjwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEdFTSBzcGxpdHMgY3JlYXRpb24gb2YgR0VNIG9iamVjdHMgYW5kIGFsbG9jYXRpb24gb2YgdGhlIG1lbW9yeSB0aGF0CisgICAgICAgICAgYmFja3MgdGhlbSBpbiB0d28gZGlzdGluY3Qgb3BlcmF0aW9ucy4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBHRU0gb2JqZWN0cyBhcmUgcmVwcmVzZW50ZWQgYnkgYW4gaW5zdGFuY2Ugb2Ygc3RydWN0CisgICAgICAgICAgPHN0cnVjdG5hbWU+ZHJtX2dlbV9vYmplY3Q8L3N0cnVjdG5hbWU+LiBEcml2ZXJzIHVzdWFsbHkgbmVlZCB0byBleHRlbmQKKyAgICAgICAgICBHRU0gb2JqZWN0cyB3aXRoIHByaXZhdGUgaW5mb3JtYXRpb24gYW5kIHRodXMgY3JlYXRlIGEgZHJpdmVyLXNwZWNpZmljCisgICAgICAgICAgR0VNIG9iamVjdCBzdHJ1Y3R1cmUgdHlwZSB0aGF0IGVtYmVkcyBhbiBpbnN0YW5jZSBvZiBzdHJ1Y3QKKyAgICAgICAgICA8c3RydWN0bmFtZT5kcm1fZ2VtX29iamVjdDwvc3RydWN0bmFtZT4uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVG8gY3JlYXRlIGEgR0VNIG9iamVjdCwgYSBkcml2ZXIgYWxsb2NhdGVzIG1lbW9yeSBmb3IgYW4gaW5zdGFuY2Ugb2YgaXRzCisgICAgICAgICAgc3BlY2lmaWMgR0VNIG9iamVjdCB0eXBlIGFuZCBpbml0aWFsaXplcyB0aGUgZW1iZWRkZWQgc3RydWN0CisgICAgICAgICAgPHN0cnVjdG5hbWU+ZHJtX2dlbV9vYmplY3Q8L3N0cnVjdG5hbWU+IHdpdGggYSBjYWxsIHRvCisgICAgICAgICAgPGZ1bmN0aW9uPmRybV9nZW1fb2JqZWN0X2luaXQ8L2Z1bmN0aW9uPi4gVGhlIGZ1bmN0aW9uIHRha2VzIGEgcG9pbnRlciB0bworICAgICAgICAgIHRoZSBEUk0gZGV2aWNlLCBhIHBvaW50ZXIgdG8gdGhlIEdFTSBvYmplY3QgYW5kIHRoZSBidWZmZXIgb2JqZWN0IHNpemUKKyAgICAgICAgICBpbiBieXRlcy4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBHRU0gdXNlcyBzaG1lbSB0byBhbGxvY2F0ZSBhbm9ueW1vdXMgcGFnZWFibGUgbWVtb3J5LgorICAgICAgICAgIDxmdW5jdGlvbj5kcm1fZ2VtX29iamVjdF9pbml0PC9mdW5jdGlvbj4gd2lsbCBjcmVhdGUgYW4gc2htZnMgZmlsZSBvZgorICAgICAgICAgIHRoZSByZXF1ZXN0ZWQgc2l6ZSBhbmQgc3RvcmUgaXQgaW50byB0aGUgc3RydWN0CisgICAgICAgICAgPHN0cnVjdG5hbWU+ZHJtX2dlbV9vYmplY3Q8L3N0cnVjdG5hbWU+IDxzdHJ1Y3RmaWVsZD5maWxwPC9zdHJ1Y3RmaWVsZD4KKyAgICAgICAgICBmaWVsZC4gVGhlIG1lbW9yeSBpcyB1c2VkIGFzIGVpdGhlciBtYWluIHN0b3JhZ2UgZm9yIHRoZSBvYmplY3Qgd2hlbiB0aGUKKyAgICAgICAgICBncmFwaGljcyBoYXJkd2FyZSB1c2VzIHN5c3RlbSBtZW1vcnkgZGlyZWN0bHkgb3IgYXMgYSBiYWNraW5nIHN0b3JlCisgICAgICAgICAgb3RoZXJ3aXNlLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIERyaXZlcnMgYXJlIHJlc3BvbnNpYmxlIGZvciB0aGUgYWN0dWFsIHBoeXNpY2FsIHBhZ2VzIGFsbG9jYXRpb24gYnkKKyAgICAgICAgICBjYWxsaW5nIDxmdW5jdGlvbj5zaG1lbV9yZWFkX21hcHBpbmdfcGFnZV9nZnA8L2Z1bmN0aW9uPiBmb3IgZWFjaCBwYWdlLgorICAgICAgICAgIE5vdGUgdGhhdCB0aGV5IGNhbiBkZWNpZGUgdG8gYWxsb2NhdGUgcGFnZXMgd2hlbiBpbml0aWFsaXppbmcgdGhlIEdFTQorICAgICAgICAgIG9iamVjdCwgb3IgdG8gZGVsYXkgYWxsb2NhdGlvbiB1bnRpbCB0aGUgbWVtb3J5IGlzIG5lZWRlZCAoZm9yIGluc3RhbmNlCisgICAgICAgICAgd2hlbiBhIHBhZ2UgZmF1bHQgb2NjdXJzIGFzIGEgcmVzdWx0IG9mIGEgdXNlcnNwYWNlIG1lbW9yeSBhY2Nlc3Mgb3IKKyAgICAgICAgICB3aGVuIHRoZSBkcml2ZXIgbmVlZHMgdG8gc3RhcnQgYSBETUEgdHJhbnNmZXIgaW52b2x2aW5nIHRoZSBtZW1vcnkpLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEFub255bW91cyBwYWdlYWJsZSBtZW1vcnkgYWxsb2NhdGlvbiBpcyBub3QgYWx3YXlzIGRlc2lyZWQsIGZvciBpbnN0YW5jZQorICAgICAgICAgIHdoZW4gdGhlIGhhcmR3YXJlIHJlcXVpcmVzIHBoeXNpY2FsbHkgY29udGlndW91cyBzeXN0ZW0gbWVtb3J5IGFzIGlzCisgICAgICAgICAgb2Z0ZW4gdGhlIGNhc2UgaW4gZW1iZWRkZWQgZGV2aWNlcy4gRHJpdmVycyBjYW4gY3JlYXRlIEdFTSBvYmplY3RzIHdpdGgKKyAgICAgICAgICBubyBzaG1mcyBiYWNraW5nIChjYWxsZWQgcHJpdmF0ZSBHRU0gb2JqZWN0cykgYnkgaW5pdGlhbGl6aW5nIHRoZW0gd2l0aAorICAgICAgICAgIGEgY2FsbCB0byA8ZnVuY3Rpb24+ZHJtX2dlbV9wcml2YXRlX29iamVjdF9pbml0PC9mdW5jdGlvbj4gaW5zdGVhZCBvZgorICAgICAgICAgIDxmdW5jdGlvbj5kcm1fZ2VtX29iamVjdF9pbml0PC9mdW5jdGlvbj4uIFN0b3JhZ2UgZm9yIHByaXZhdGUgR0VNCisgICAgICAgICAgb2JqZWN0cyBtdXN0IGJlIG1hbmFnZWQgYnkgZHJpdmVycy4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBEcml2ZXJzIHRoYXQgZG8gbm90IG5lZWQgdG8gZXh0ZW5kIEdFTSBvYmplY3RzIHdpdGggcHJpdmF0ZSBpbmZvcm1hdGlvbgorICAgICAgICAgIGNhbiBjYWxsIHRoZSA8ZnVuY3Rpb24+ZHJtX2dlbV9vYmplY3RfYWxsb2M8L2Z1bmN0aW9uPiBmdW5jdGlvbiB0bworICAgICAgICAgIGFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGEgc3RydWN0IDxzdHJ1Y3RuYW1lPmRybV9nZW1fb2JqZWN0PC9zdHJ1Y3RuYW1lPgorICAgICAgICAgIGluc3RhbmNlLiBUaGUgR0VNIGNvcmUgd2lsbCBjYWxsIHRoZSBvcHRpb25hbCBkcml2ZXIKKyAgICAgICAgICA8bWV0aG9kbmFtZT5nZW1faW5pdF9vYmplY3Q8L21ldGhvZG5hbWU+IG9wZXJhdGlvbiBhZnRlciBpbml0aWFsaXppbmcKKyAgICAgICAgICB0aGUgR0VNIG9iamVjdCB3aXRoIDxmdW5jdGlvbj5kcm1fZ2VtX29iamVjdF9pbml0PC9mdW5jdGlvbj4uCisgICAgICAgICAgPHN5bm9wc2lzPmludCAoKmdlbV9pbml0X29iamVjdCkgKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTs8L3N5bm9wc2lzPgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIE5vIGFsbG9jLWFuZC1pbml0IGZ1bmN0aW9uIGV4aXN0cyBmb3IgcHJpdmF0ZSBHRU0gb2JqZWN0cy4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0Mz4KKyAgICAgIDxzZWN0Mz4KKyAgICAgICAgPHRpdGxlPkdFTSBPYmplY3RzIExpZmV0aW1lPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgQWxsIEdFTSBvYmplY3RzIGFyZSByZWZlcmVuY2UtY291bnRlZCBieSB0aGUgR0VNIGNvcmUuIFJlZmVyZW5jZXMgY2FuIGJlCisgICAgICAgICAgYWNxdWlyZWQgYW5kIHJlbGVhc2UgYnkgPGZ1bmN0aW9uPmNhbGxpbmcgZHJtX2dlbV9vYmplY3RfcmVmZXJlbmNlPC9mdW5jdGlvbj4KKyAgICAgICAgICBhbmQgPGZ1bmN0aW9uPmRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlPC9mdW5jdGlvbj4gcmVzcGVjdGl2ZWx5LiBUaGUKKyAgICAgICAgICBjYWxsZXIgbXVzdCBob2xkIHRoZSA8c3RydWN0bmFtZT5kcm1fZGV2aWNlPC9zdHJ1Y3RuYW1lPgorICAgICAgICAgIDxzdHJ1Y3RmaWVsZD5zdHJ1Y3RfbXV0ZXg8L3N0cnVjdGZpZWxkPiBsb2NrLiBBcyBhIGNvbnZlbmllbmNlLCBHRU0KKyAgICAgICAgICBwcm92aWRlcyB0aGUgPGZ1bmN0aW9uPmRybV9nZW1fb2JqZWN0X3JlZmVyZW5jZV91bmxvY2tlZDwvZnVuY3Rpb24+IGFuZAorICAgICAgICAgIDxmdW5jdGlvbj5kcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZDwvZnVuY3Rpb24+IGZ1bmN0aW9ucyB0aGF0CisgICAgICAgICAgY2FuIGJlIGNhbGxlZCB3aXRob3V0IGhvbGRpbmcgdGhlIGxvY2suCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgV2hlbiB0aGUgbGFzdCByZWZlcmVuY2UgdG8gYSBHRU0gb2JqZWN0IGlzIHJlbGVhc2VkIHRoZSBHRU0gY29yZSBjYWxscworICAgICAgICAgIHRoZSA8c3RydWN0bmFtZT5kcm1fZHJpdmVyPC9zdHJ1Y3RuYW1lPgorICAgICAgICAgIDxtZXRob2RuYW1lPmdlbV9mcmVlX29iamVjdDwvbWV0aG9kbmFtZT4gb3BlcmF0aW9uLiBUaGF0IG9wZXJhdGlvbiBpcworICAgICAgICAgIG1hbmRhdG9yeSBmb3IgR0VNLWVuYWJsZWQgZHJpdmVycyBhbmQgbXVzdCBmcmVlIHRoZSBHRU0gb2JqZWN0IGFuZCBhbGwKKyAgICAgICAgICBhc3NvY2lhdGVkIHJlc291cmNlcy4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICA8c3lub3BzaXM+dm9pZCAoKmdlbV9mcmVlX29iamVjdCkgKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTs8L3N5bm9wc2lzPgorICAgICAgICAgIERyaXZlcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIGFsbCBHRU0gb2JqZWN0IHJlc291cmNlcywgaW5jbHVkaW5nCisgICAgICAgICAgdGhlIHJlc291cmNlcyBjcmVhdGVkIGJ5IHRoZSBHRU0gY29yZS4gSWYgYW4gbW1hcCBvZmZzZXQgaGFzIGJlZW4KKyAgICAgICAgICBjcmVhdGVkIGZvciB0aGUgb2JqZWN0IChpbiB3aGljaCBjYXNlCisgICAgICAgICAgPHN0cnVjdG5hbWU+ZHJtX2dlbV9vYmplY3Q8L3N0cnVjdG5hbWU+Ojo8c3RydWN0ZmllbGQ+bWFwX2xpc3Q8L3N0cnVjdGZpZWxkPjo6PHN0cnVjdGZpZWxkPm1hcDwvc3RydWN0ZmllbGQ+CisgICAgICAgICAgaXMgbm90IE5VTEwpIGl0IG11c3QgYmUgZnJlZWQgYnkgYSBjYWxsIHRvCisgICAgICAgICAgPGZ1bmN0aW9uPmRybV9nZW1fZnJlZV9tbWFwX29mZnNldDwvZnVuY3Rpb24+LiBUaGUgc2htZnMgYmFja2luZyBzdG9yZQorICAgICAgICAgIG11c3QgYmUgcmVsZWFzZWQgYnkgY2FsbGluZyA8ZnVuY3Rpb24+ZHJtX2dlbV9vYmplY3RfcmVsZWFzZTwvZnVuY3Rpb24+CisgICAgICAgICAgKHRoYXQgZnVuY3Rpb24gY2FuIHNhZmVseSBiZSBjYWxsZWQgaWYgbm8gc2htZnMgYmFja2luZyBzdG9yZSBoYXMgYmVlbgorICAgICAgICAgIGNyZWF0ZWQpLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3QzPgorICAgICAgPHNlY3QzPgorICAgICAgICA8dGl0bGU+R0VNIE9iamVjdHMgTmFtaW5nPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgQ29tbXVuaWNhdGlvbiBiZXR3ZWVuIHVzZXJzcGFjZSBhbmQgdGhlIGtlcm5lbCByZWZlcnMgdG8gR0VNIG9iamVjdHMKKyAgICAgICAgICB1c2luZyBsb2NhbCBoYW5kbGVzLCBnbG9iYWwgbmFtZXMgb3IsIG1vcmUgcmVjZW50bHksIGZpbGUgZGVzY3JpcHRvcnMuCisgICAgICAgICAgQWxsIG9mIHRob3NlIGFyZSAzMi1iaXQgaW50ZWdlciB2YWx1ZXM7IHRoZSB1c3VhbCBMaW51eCBrZXJuZWwgbGltaXRzCisgICAgICAgICAgYXBwbHkgdG8gdGhlIGZpbGUgZGVzY3JpcHRvcnMuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgR0VNIGhhbmRsZXMgYXJlIGxvY2FsIHRvIGEgRFJNIGZpbGUuIEFwcGxpY2F0aW9ucyBnZXQgYSBoYW5kbGUgdG8gYSBHRU0KKyAgICAgICAgICBvYmplY3QgdGhyb3VnaCBhIGRyaXZlci1zcGVjaWZpYyBpb2N0bCwgYW5kIGNhbiB1c2UgdGhhdCBoYW5kbGUgdG8gcmVmZXIKKyAgICAgICAgICB0byB0aGUgR0VNIG9iamVjdCBpbiBvdGhlciBzdGFuZGFyZCBvciBkcml2ZXItc3BlY2lmaWMgaW9jdGxzLiBDbG9zaW5nIGEKKyAgICAgICAgICBEUk0gZmlsZSBoYW5kbGUgZnJlZXMgYWxsIGl0cyBHRU0gaGFuZGxlcyBhbmQgZGVyZWZlcmVuY2VzIHRoZQorICAgICAgICAgIGFzc29jaWF0ZWQgR0VNIG9iamVjdHMuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVG8gY3JlYXRlIGEgaGFuZGxlIGZvciBhIEdFTSBvYmplY3QgZHJpdmVycyBjYWxsCisgICAgICAgICAgPGZ1bmN0aW9uPmRybV9nZW1faGFuZGxlX2NyZWF0ZTwvZnVuY3Rpb24+LiBUaGUgZnVuY3Rpb24gdGFrZXMgYSBwb2ludGVyCisgICAgICAgICAgdG8gdGhlIERSTSBmaWxlIGFuZCB0aGUgR0VNIG9iamVjdCBhbmQgcmV0dXJucyBhIGxvY2FsbHkgdW5pcXVlIGhhbmRsZS4KKyAgICAgICAgICBXaGVuIHRoZSBoYW5kbGUgaXMgbm8gbG9uZ2VyIG5lZWRlZCBkcml2ZXJzIGRlbGV0ZSBpdCB3aXRoIGEgY2FsbCB0bworICAgICAgICAgIDxmdW5jdGlvbj5kcm1fZ2VtX2hhbmRsZV9kZWxldGU8L2Z1bmN0aW9uPi4gRmluYWxseSB0aGUgR0VNIG9iamVjdAorICAgICAgICAgIGFzc29jaWF0ZWQgd2l0aCBhIGhhbmRsZSBjYW4gYmUgcmV0cmlldmVkIGJ5IGEgY2FsbCB0bworICAgICAgICAgIDxmdW5jdGlvbj5kcm1fZ2VtX29iamVjdF9sb29rdXA8L2Z1bmN0aW9uPi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBIYW5kbGVzIGRvbid0IHRha2Ugb3duZXJzaGlwIG9mIEdFTSBvYmplY3RzLCB0aGV5IG9ubHkgdGFrZSBhIHJlZmVyZW5jZQorICAgICAgICAgIHRvIHRoZSBvYmplY3QgdGhhdCB3aWxsIGJlIGRyb3BwZWQgd2hlbiB0aGUgaGFuZGxlIGlzIGRlc3Ryb3llZC4gVG8KKyAgICAgICAgICBhdm9pZCBsZWFraW5nIEdFTSBvYmplY3RzLCBkcml2ZXJzIG11c3QgbWFrZSBzdXJlIHRoZXkgZHJvcCB0aGUKKyAgICAgICAgICByZWZlcmVuY2UocykgdGhleSBvd24gKHN1Y2ggYXMgdGhlIGluaXRpYWwgcmVmZXJlbmNlIHRha2VuIGF0IG9iamVjdAorICAgICAgICAgIGNyZWF0aW9uIHRpbWUpIGFzIGFwcHJvcHJpYXRlLCB3aXRob3V0IGFueSBzcGVjaWFsIGNvbnNpZGVyYXRpb24gZm9yIHRoZQorICAgICAgICAgIGhhbmRsZS4gRm9yIGV4YW1wbGUsIGluIHRoZSBwYXJ0aWN1bGFyIGNhc2Ugb2YgY29tYmluZWQgR0VNIG9iamVjdCBhbmQKKyAgICAgICAgICBoYW5kbGUgY3JlYXRpb24gaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZQorICAgICAgICAgIDxtZXRob2RuYW1lPmR1bWJfY3JlYXRlPC9tZXRob2RuYW1lPiBvcGVyYXRpb24sIGRyaXZlcnMgbXVzdCBkcm9wIHRoZQorICAgICAgICAgIGluaXRpYWwgcmVmZXJlbmNlIHRvIHRoZSBHRU0gb2JqZWN0IGJlZm9yZSByZXR1cm5pbmcgdGhlIGhhbmRsZS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBHRU0gbmFtZXMgYXJlIHNpbWlsYXIgaW4gcHVycG9zZSB0byBoYW5kbGVzIGJ1dCBhcmUgbm90IGxvY2FsIHRvIERSTQorICAgICAgICAgIGZpbGVzLiBUaGV5IGNhbiBiZSBwYXNzZWQgYmV0d2VlbiBwcm9jZXNzZXMgdG8gcmVmZXJlbmNlIGEgR0VNIG9iamVjdAorICAgICAgICAgIGdsb2JhbGx5LiBOYW1lcyBjYW4ndCBiZSB1c2VkIGRpcmVjdGx5IHRvIHJlZmVyIHRvIG9iamVjdHMgaW4gdGhlIERSTQorICAgICAgICAgIEFQSSwgYXBwbGljYXRpb25zIG11c3QgY29udmVydCBoYW5kbGVzIHRvIG5hbWVzIGFuZCBuYW1lcyB0byBoYW5kbGVzCisgICAgICAgICAgdXNpbmcgdGhlIERSTV9JT0NUTF9HRU1fRkxJTksgYW5kIERSTV9JT0NUTF9HRU1fT1BFTiBpb2N0bHMKKyAgICAgICAgICByZXNwZWN0aXZlbHkuIFRoZSBjb252ZXJzaW9uIGlzIGhhbmRsZWQgYnkgdGhlIERSTSBjb3JlIHdpdGhvdXQgYW55CisgICAgICAgICAgZHJpdmVyLXNwZWNpZmljIHN1cHBvcnQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgR0VNIGFsc28gc3VwcG9ydHMgYnVmZmVyIHNoYXJpbmcgd2l0aCBkbWEtYnVmIGZpbGUgZGVzY3JpcHRvcnMgdGhyb3VnaAorICAgICAgICAgIFBSSU1FLiBHRU0tYmFzZWQgZHJpdmVycyBtdXN0IHVzZSB0aGUgcHJvdmlkZWQgaGVscGVycyBmdW5jdGlvbnMgdG8KKyAgICAgICAgICBpbXBsZW1lbnQgdGhlIGV4cG9ydGluZyBhbmQgaW1wb3J0aW5nIGNvcnJlY3RseS4gU2VlIDx4cmVmIGxpbmtlbmQ9ImRybS1wcmltZS1zdXBwb3J0IiAvPi4KKyAgICAgICAgICBTaW5jZSBzaGFyaW5nIGZpbGUgZGVzY3JpcHRvcnMgaXMgaW5oZXJlbnRseSBtb3JlIHNlY3VyZSB0aGFuIHRoZQorICAgICAgICAgIGVhc2lseSBndWVzc2FibGUgYW5kIGdsb2JhbCBHRU0gbmFtZXMgaXQgaXMgdGhlIHByZWZlcnJlZCBidWZmZXIKKyAgICAgICAgICBzaGFyaW5nIG1lY2hhbmlzbS4gU2hhcmluZyBidWZmZXJzIHRocm91Z2ggR0VNIG5hbWVzIGlzIG9ubHkgc3VwcG9ydGVkCisgICAgICAgICAgZm9yIGxlZ2FjeSB1c2Vyc3BhY2UuIEZ1cnRoZXJtb3JlIFBSSU1FIGFsc28gYWxsb3dzIGNyb3NzLWRldmljZQorICAgICAgICAgIGJ1ZmZlciBzaGFyaW5nIHNpbmNlIGl0IGlzIGJhc2VkIG9uIGRtYS1idWZzLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3QzPgorICAgICAgPHNlY3QzIGlkPSJkcm0tZ2VtLW9iamVjdHMtbWFwcGluZyI+CisgICAgICAgIDx0aXRsZT5HRU0gT2JqZWN0cyBNYXBwaW5nPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgQmVjYXVzZSBtYXBwaW5nIG9wZXJhdGlvbnMgYXJlIGZhaXJseSBoZWF2eXdlaWdodCBHRU0gZmF2b3VycworICAgICAgICAgIHJlYWQvd3JpdGUtbGlrZSBhY2Nlc3MgdG8gYnVmZmVycywgaW1wbGVtZW50ZWQgdGhyb3VnaCBkcml2ZXItc3BlY2lmaWMKKyAgICAgICAgICBpb2N0bHMsIG92ZXIgbWFwcGluZyBidWZmZXJzIHRvIHVzZXJzcGFjZS4gSG93ZXZlciwgd2hlbiByYW5kb20gYWNjZXNzCisgICAgICAgICAgdG8gdGhlIGJ1ZmZlciBpcyBuZWVkZWQgKHRvIHBlcmZvcm0gc29mdHdhcmUgcmVuZGVyaW5nIGZvciBpbnN0YW5jZSksCisgICAgICAgICAgZGlyZWN0IGFjY2VzcyB0byB0aGUgb2JqZWN0IGNhbiBiZSBtb3JlIGVmZmljaWVudC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgbW1hcCBzeXN0ZW0gY2FsbCBjYW4ndCBiZSB1c2VkIGRpcmVjdGx5IHRvIG1hcCBHRU0gb2JqZWN0cywgYXMgdGhleQorICAgICAgICAgIGRvbid0IGhhdmUgdGhlaXIgb3duIGZpbGUgaGFuZGxlLiBUd28gYWx0ZXJuYXRpdmUgbWV0aG9kcyBjdXJyZW50bHkKKyAgICAgICAgICBjby1leGlzdCB0byBtYXAgR0VNIG9iamVjdHMgdG8gdXNlcnNwYWNlLiBUaGUgZmlyc3QgbWV0aG9kIHVzZXMgYQorICAgICAgICAgIGRyaXZlci1zcGVjaWZpYyBpb2N0bCB0byBwZXJmb3JtIHRoZSBtYXBwaW5nIG9wZXJhdGlvbiwgY2FsbGluZworICAgICAgICAgIDxmdW5jdGlvbj5kb19tbWFwPC9mdW5jdGlvbj4gdW5kZXIgdGhlIGhvb2QuIFRoaXMgaXMgb2Z0ZW4gY29uc2lkZXJlZAorICAgICAgICAgIGR1YmlvdXMsIHNlZW1zIHRvIGJlIGRpc2NvdXJhZ2VkIGZvciBuZXcgR0VNLWVuYWJsZWQgZHJpdmVycywgYW5kIHdpbGwKKyAgICAgICAgICB0aHVzIG5vdCBiZSBkZXNjcmliZWQgaGVyZS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgc2Vjb25kIG1ldGhvZCB1c2VzIHRoZSBtbWFwIHN5c3RlbSBjYWxsIG9uIHRoZSBEUk0gZmlsZSBoYW5kbGUuCisgICAgICAgICAgPHN5bm9wc2lzPnZvaWQgKm1tYXAodm9pZCAqYWRkciwgc2l6ZV90IGxlbmd0aCwgaW50IHByb3QsIGludCBmbGFncywgaW50IGZkLAorICAgICAgICAgICAgIG9mZl90IG9mZnNldCk7PC9zeW5vcHNpcz4KKyAgICAgICAgICBEUk0gaWRlbnRpZmllcyB0aGUgR0VNIG9iamVjdCB0byBiZSBtYXBwZWQgYnkgYSBmYWtlIG9mZnNldCBwYXNzZWQKKyAgICAgICAgICB0aHJvdWdoIHRoZSBtbWFwIG9mZnNldCBhcmd1bWVudC4gUHJpb3IgdG8gYmVpbmcgbWFwcGVkLCBhIEdFTSBvYmplY3QKKyAgICAgICAgICBtdXN0IHRodXMgYmUgYXNzb2NpYXRlZCB3aXRoIGEgZmFrZSBvZmZzZXQuIFRvIGRvIHNvLCBkcml2ZXJzIG11c3QgY2FsbAorICAgICAgICAgIDxmdW5jdGlvbj5kcm1fZ2VtX2NyZWF0ZV9tbWFwX29mZnNldDwvZnVuY3Rpb24+IG9uIHRoZSBvYmplY3QuIFRoZQorICAgICAgICAgIGZ1bmN0aW9uIGFsbG9jYXRlcyBhIGZha2Ugb2Zmc2V0IHJhbmdlIGZyb20gYSBwb29sIGFuZCBzdG9yZXMgdGhlCisgICAgICAgICAgb2Zmc2V0IGRpdmlkZWQgYnkgUEFHRV9TSVpFIGluCisgICAgICAgICAgPGxpdGVyYWw+b2JqLSZndDttYXBfbGlzdC5oYXNoLmtleTwvbGl0ZXJhbD4uIENhcmUgbXVzdCBiZSB0YWtlbiBub3QgdG8KKyAgICAgICAgICBjYWxsIDxmdW5jdGlvbj5kcm1fZ2VtX2NyZWF0ZV9tbWFwX29mZnNldDwvZnVuY3Rpb24+IGlmIGEgZmFrZSBvZmZzZXQKKyAgICAgICAgICBoYXMgYWxyZWFkeSBiZWVuIGFsbG9jYXRlZCBmb3IgdGhlIG9iamVjdC4gVGhpcyBjYW4gYmUgdGVzdGVkIGJ5CisgICAgICAgICAgPGxpdGVyYWw+b2JqLSZndDttYXBfbGlzdC5tYXA8L2xpdGVyYWw+IGJlaW5nIG5vbi1OVUxMLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIE9uY2UgYWxsb2NhdGVkLCB0aGUgZmFrZSBvZmZzZXQgdmFsdWUKKyAgICAgICAgICAoPGxpdGVyYWw+b2JqLSZndDttYXBfbGlzdC5oYXNoLmtleSAmbHQ7Jmx0OyBQQUdFX1NISUZUPC9saXRlcmFsPikKKyAgICAgICAgICBtdXN0IGJlIHBhc3NlZCB0byB0aGUgYXBwbGljYXRpb24gaW4gYSBkcml2ZXItc3BlY2lmaWMgd2F5IGFuZCBjYW4gdGhlbgorICAgICAgICAgIGJlIHVzZWQgYXMgdGhlIG1tYXAgb2Zmc2V0IGFyZ3VtZW50LgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBHRU0gY29yZSBwcm92aWRlcyBhIGhlbHBlciBtZXRob2QgPGZ1bmN0aW9uPmRybV9nZW1fbW1hcDwvZnVuY3Rpb24+CisgICAgICAgICAgdG8gaGFuZGxlIG9iamVjdCBtYXBwaW5nLiBUaGUgbWV0aG9kIGNhbiBiZSBzZXQgZGlyZWN0bHkgYXMgdGhlIG1tYXAKKyAgICAgICAgICBmaWxlIG9wZXJhdGlvbiBoYW5kbGVyLiBJdCB3aWxsIGxvb2sgdXAgdGhlIEdFTSBvYmplY3QgYmFzZWQgb24gdGhlCisgICAgICAgICAgb2Zmc2V0IHZhbHVlIGFuZCBzZXQgdGhlIFZNQSBvcGVyYXRpb25zIHRvIHRoZQorICAgICAgICAgIDxzdHJ1Y3RuYW1lPmRybV9kcml2ZXI8L3N0cnVjdG5hbWU+IDxzdHJ1Y3RmaWVsZD5nZW1fdm1fb3BzPC9zdHJ1Y3RmaWVsZD4KKyAgICAgICAgICBmaWVsZC4gTm90ZSB0aGF0IDxmdW5jdGlvbj5kcm1fZ2VtX21tYXA8L2Z1bmN0aW9uPiBkb2Vzbid0IG1hcCBtZW1vcnkgdG8KKyAgICAgICAgICB1c2Vyc3BhY2UsIGJ1dCByZWxpZXMgb24gdGhlIGRyaXZlci1wcm92aWRlZCBmYXVsdCBoYW5kbGVyIHRvIG1hcCBwYWdlcworICAgICAgICAgIGluZGl2aWR1YWxseS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUbyB1c2UgPGZ1bmN0aW9uPmRybV9nZW1fbW1hcDwvZnVuY3Rpb24+LCBkcml2ZXJzIG11c3QgZmlsbCB0aGUgc3RydWN0CisgICAgICAgICAgPHN0cnVjdG5hbWU+ZHJtX2RyaXZlcjwvc3RydWN0bmFtZT4gPHN0cnVjdGZpZWxkPmdlbV92bV9vcHM8L3N0cnVjdGZpZWxkPgorICAgICAgICAgIGZpZWxkIHdpdGggYSBwb2ludGVyIHRvIFZNIG9wZXJhdGlvbnMuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgPHN5bm9wc2lzPnN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCAqZ2VtX3ZtX29wcworCisgIHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCB7CisgICAgICAgICAgdm9pZCAoKm9wZW4pKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqIGFyZWEpOworICAgICAgICAgIHZvaWQgKCpjbG9zZSkoc3RydWN0IHZtX2FyZWFfc3RydWN0ICogYXJlYSk7CisgICAgICAgICAgaW50ICgqZmF1bHQpKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBzdHJ1Y3Qgdm1fZmF1bHQgKnZtZik7CisgIH07PC9zeW5vcHNpcz4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgPG1ldGhvZG5hbWU+b3BlbjwvbWV0aG9kbmFtZT4gYW5kIDxtZXRob2RuYW1lPmNsb3NlPC9tZXRob2RuYW1lPgorICAgICAgICAgIG9wZXJhdGlvbnMgbXVzdCB1cGRhdGUgdGhlIEdFTSBvYmplY3QgcmVmZXJlbmNlIGNvdW50LiBEcml2ZXJzIGNhbiB1c2UKKyAgICAgICAgICB0aGUgPGZ1bmN0aW9uPmRybV9nZW1fdm1fb3BlbjwvZnVuY3Rpb24+IGFuZAorICAgICAgICAgIDxmdW5jdGlvbj5kcm1fZ2VtX3ZtX2Nsb3NlPC9mdW5jdGlvbj4gaGVscGVyIGZ1bmN0aW9ucyBkaXJlY3RseSBhcyBvcGVuCisgICAgICAgICAgYW5kIGNsb3NlIGhhbmRsZXJzLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBmYXVsdCBvcGVyYXRpb24gaGFuZGxlciBpcyByZXNwb25zaWJsZSBmb3IgbWFwcGluZyBpbmRpdmlkdWFsIHBhZ2VzCisgICAgICAgICAgdG8gdXNlcnNwYWNlIHdoZW4gYSBwYWdlIGZhdWx0IG9jY3Vycy4gRGVwZW5kaW5nIG9uIHRoZSBtZW1vcnkKKyAgICAgICAgICBhbGxvY2F0aW9uIHNjaGVtZSwgZHJpdmVycyBjYW4gYWxsb2NhdGUgcGFnZXMgYXQgZmF1bHQgdGltZSwgb3IgY2FuCisgICAgICAgICAgZGVjaWRlIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIEdFTSBvYmplY3QgYXQgdGhlIHRpbWUgdGhlIG9iamVjdCBpcworICAgICAgICAgIGNyZWF0ZWQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgRHJpdmVycyB0aGF0IHdhbnQgdG8gbWFwIHRoZSBHRU0gb2JqZWN0IHVwZnJvbnQgaW5zdGVhZCBvZiBoYW5kbGluZyBwYWdlCisgICAgICAgICAgZmF1bHRzIGNhbiBpbXBsZW1lbnQgdGhlaXIgb3duIG1tYXAgZmlsZSBvcGVyYXRpb24gaGFuZGxlci4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0Mz4KKyAgICAgIDxzZWN0Mz4KKyAgICAgICAgPHRpdGxlPk1lbW9yeSBDb2hlcmVuY3k8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBXaGVuIG1hcHBlZCB0byB0aGUgZGV2aWNlIG9yIHVzZWQgaW4gYSBjb21tYW5kIGJ1ZmZlciwgYmFja2luZyBwYWdlcworICAgICAgICAgIGZvciBhbiBvYmplY3QgYXJlIGZsdXNoZWQgdG8gbWVtb3J5IGFuZCBtYXJrZWQgd3JpdGUgY29tYmluZWQgc28gYXMgdG8KKyAgICAgICAgICBiZSBjb2hlcmVudCB3aXRoIHRoZSBHUFUuIExpa2V3aXNlLCBpZiB0aGUgQ1BVIGFjY2Vzc2VzIGFuIG9iamVjdAorICAgICAgICAgIGFmdGVyIHRoZSBHUFUgaGFzIGZpbmlzaGVkIHJlbmRlcmluZyB0byB0aGUgb2JqZWN0LCB0aGVuIHRoZSBvYmplY3QKKyAgICAgICAgICBtdXN0IGJlIG1hZGUgY29oZXJlbnQgd2l0aCB0aGUgQ1BVJ3MgdmlldyBvZiBtZW1vcnksIHVzdWFsbHkgaW52b2x2aW5nCisgICAgICAgICAgR1BVIGNhY2hlIGZsdXNoaW5nIG9mIHZhcmlvdXMga2luZHMuIFRoaXMgY29yZSBDUFUmbHQ7LSZndDtHUFUKKyAgICAgICAgICBjb2hlcmVuY3kgbWFuYWdlbWVudCBpcyBwcm92aWRlZCBieSBhIGRldmljZS1zcGVjaWZpYyBpb2N0bCwgd2hpY2gKKyAgICAgICAgICBldmFsdWF0ZXMgYW4gb2JqZWN0J3MgY3VycmVudCBkb21haW4gYW5kIHBlcmZvcm1zIGFueSBuZWNlc3NhcnkKKyAgICAgICAgICBmbHVzaGluZyBvciBzeW5jaHJvbml6YXRpb24gdG8gcHV0IHRoZSBvYmplY3QgaW50byB0aGUgZGVzaXJlZAorICAgICAgICAgIGNvaGVyZW5jeSBkb21haW4gKG5vdGUgdGhhdCB0aGUgb2JqZWN0IG1heSBiZSBidXN5LCBpLmUuIGFuIGFjdGl2ZQorICAgICAgICAgIHJlbmRlciB0YXJnZXQ7IGluIHRoYXQgY2FzZSwgc2V0dGluZyB0aGUgZG9tYWluIGJsb2NrcyB0aGUgY2xpZW50IGFuZAorICAgICAgICAgIHdhaXRzIGZvciByZW5kZXJpbmcgdG8gY29tcGxldGUgYmVmb3JlIHBlcmZvcm1pbmcgYW55IG5lY2Vzc2FyeQorICAgICAgICAgIGZsdXNoaW5nIG9wZXJhdGlvbnMpLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3QzPgorICAgICAgPHNlY3QzPgorICAgICAgICA8dGl0bGU+Q29tbWFuZCBFeGVjdXRpb248L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBQZXJoYXBzIHRoZSBtb3N0IGltcG9ydGFudCBHRU0gZnVuY3Rpb24gZm9yIEdQVSBkZXZpY2VzIGlzIHByb3ZpZGluZyBhCisgICAgICAgICAgY29tbWFuZCBleGVjdXRpb24gaW50ZXJmYWNlIHRvIGNsaWVudHMuIENsaWVudCBwcm9ncmFtcyBjb25zdHJ1Y3QKKyAgICAgICAgICBjb21tYW5kIGJ1ZmZlcnMgY29udGFpbmluZyByZWZlcmVuY2VzIHRvIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeQorICAgICAgICAgIG9iamVjdHMsIGFuZCB0aGVuIHN1Ym1pdCB0aGVtIHRvIEdFTS4gQXQgdGhhdCBwb2ludCwgR0VNIHRha2VzIGNhcmUgdG8KKyAgICAgICAgICBiaW5kIGFsbCB0aGUgb2JqZWN0cyBpbnRvIHRoZSBHVFQsIGV4ZWN1dGUgdGhlIGJ1ZmZlciwgYW5kIHByb3ZpZGUKKyAgICAgICAgICBuZWNlc3Nhcnkgc3luY2hyb25pemF0aW9uIGJldHdlZW4gY2xpZW50cyBhY2Nlc3NpbmcgdGhlIHNhbWUgYnVmZmVycy4KKyAgICAgICAgICBUaGlzIG9mdGVuIGludm9sdmVzIGV2aWN0aW5nIHNvbWUgb2JqZWN0cyBmcm9tIHRoZSBHVFQgYW5kIHJlLWJpbmRpbmcKKyAgICAgICAgICBvdGhlcnMgKGEgZmFpcmx5IGV4cGVuc2l2ZSBvcGVyYXRpb24pLCBhbmQgcHJvdmlkaW5nIHJlbG9jYXRpb24KKyAgICAgICAgICBzdXBwb3J0IHdoaWNoIGhpZGVzIGZpeGVkIEdUVCBvZmZzZXRzIGZyb20gY2xpZW50cy4gQ2xpZW50cyBtdXN0IHRha2UKKyAgICAgICAgICBjYXJlIG5vdCB0byBzdWJtaXQgY29tbWFuZCBidWZmZXJzIHRoYXQgcmVmZXJlbmNlIG1vcmUgb2JqZWN0cyB0aGFuCisgICAgICAgICAgY2FuIGZpdCBpbiB0aGUgR1RUOyBvdGhlcndpc2UsIEdFTSB3aWxsIHJlamVjdCB0aGVtIGFuZCBubyByZW5kZXJpbmcKKyAgICAgICAgICB3aWxsIG9jY3VyLiBTaW1pbGFybHksIGlmIHNldmVyYWwgb2JqZWN0cyBpbiB0aGUgYnVmZmVyIHJlcXVpcmUgZmVuY2UKKyAgICAgICAgICByZWdpc3RlcnMgdG8gYmUgYWxsb2NhdGVkIGZvciBjb3JyZWN0IHJlbmRlcmluZyAoZS5nLiAyRCBibGl0cyBvbgorICAgICAgICAgIHByZS05NjUgY2hpcHMpLCBjYXJlIG11c3QgYmUgdGFrZW4gbm90IHRvIHJlcXVpcmUgbW9yZSBmZW5jZSByZWdpc3RlcnMKKyAgICAgICAgICB0aGFuIGFyZSBhdmFpbGFibGUgdG8gdGhlIGNsaWVudC4gU3VjaCByZXNvdXJjZSBtYW5hZ2VtZW50IHNob3VsZCBiZQorICAgICAgICAgIGFic3RyYWN0ZWQgZnJvbSB0aGUgY2xpZW50IGluIGxpYmRybS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0Mz4KKyAgICAgIDxzZWN0Mz4KKyAgICAgICAgPHRpdGxlPkdFTSBGdW5jdGlvbiBSZWZlcmVuY2U8L3RpdGxlPgorIUVkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbS5jCisgICAgICA8L3NlY3QzPgorICAgIDwvc2VjdDI+CisgICAgPHNlY3QyPgorICAgICAgPHRpdGxlPlZNQSBPZmZzZXQgTWFuYWdlcjwvdGl0bGU+CishUGRyaXZlcnMvZ3B1L2RybS9kcm1fdm1hX21hbmFnZXIuYyB2bWEgb2Zmc2V0IG1hbmFnZXIKKyFFZHJpdmVycy9ncHUvZHJtL2RybV92bWFfbWFuYWdlci5jCishSWluY2x1ZGUvZHJtL2RybV92bWFfbWFuYWdlci5oCisgICAgPC9zZWN0Mj4KKyAgICA8c2VjdDIgaWQ9ImRybS1wcmltZS1zdXBwb3J0Ij4KKyAgICAgIDx0aXRsZT5QUklNRSBCdWZmZXIgU2hhcmluZzwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgUFJJTUUgaXMgdGhlIGNyb3NzIGRldmljZSBidWZmZXIgc2hhcmluZyBmcmFtZXdvcmsgaW4gZHJtLCBvcmlnaW5hbGx5CisgICAgICAgIGNyZWF0ZWQgZm9yIHRoZSBPUFRJTVVTIHJhbmdlIG9mIG11bHRpLWdwdSBwbGF0Zm9ybXMuIFRvIHVzZXJzcGFjZQorICAgICAgICBQUklNRSBidWZmZXJzIGFyZSBkbWEtYnVmIGJhc2VkIGZpbGUgZGVzY3JpcHRvcnMuCisgICAgICA8L3BhcmE+CisgICAgICA8c2VjdDM+CisgICAgICAgIDx0aXRsZT5PdmVydmlldyBhbmQgRHJpdmVyIEludGVyZmFjZTwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFNpbWlsYXIgdG8gR0VNIGdsb2JhbCBuYW1lcywgUFJJTUUgZmlsZSBkZXNjcmlwdG9ycyBhcmUKKyAgICAgICAgICBhbHNvIHVzZWQgdG8gc2hhcmUgYnVmZmVyIG9iamVjdHMgYWNyb3NzIHByb2Nlc3Nlcy4gVGhleSBvZmZlcgorICAgICAgICAgIGFkZGl0aW9uYWwgc2VjdXJpdHk6IGFzIGZpbGUgZGVzY3JpcHRvcnMgbXVzdCBiZSBleHBsaWNpdGx5IHNlbnQgb3ZlcgorICAgICAgICAgIFVOSVggZG9tYWluIHNvY2tldHMgdG8gYmUgc2hhcmVkIGJldHdlZW4gYXBwbGljYXRpb25zLCB0aGV5IGNhbid0IGJlCisgICAgICAgICAgZ3Vlc3NlZCBsaWtlIHRoZSBnbG9iYWxseSB1bmlxdWUgR0VNIG5hbWVzLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIERyaXZlcnMgdGhhdCBzdXBwb3J0IHRoZSBQUklNRQorICAgICAgICAgIEFQSSBtdXN0IHNldCB0aGUgRFJJVkVSX1BSSU1FIGJpdCBpbiB0aGUgc3RydWN0CisgICAgICAgICAgPHN0cnVjdG5hbWU+ZHJtX2RyaXZlcjwvc3RydWN0bmFtZT4KKyAgICAgICAgICA8c3RydWN0ZmllbGQ+ZHJpdmVyX2ZlYXR1cmVzPC9zdHJ1Y3RmaWVsZD4gZmllbGQsIGFuZCBpbXBsZW1lbnQgdGhlCisgICAgICAgICAgPG1ldGhvZG5hbWU+cHJpbWVfaGFuZGxlX3RvX2ZkPC9tZXRob2RuYW1lPiBhbmQKKyAgICAgICAgICA8bWV0aG9kbmFtZT5wcmltZV9mZF90b19oYW5kbGU8L21ldGhvZG5hbWU+IG9wZXJhdGlvbnMuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgPHN5bm9wc2lzPmludCAoKnByaW1lX2hhbmRsZV90b19mZCkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsIHVpbnQzMl90IGhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MsIGludCAqcHJpbWVfZmQpOworaW50ICgqcHJpbWVfZmRfdG9faGFuZGxlKShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwgaW50IHByaW1lX2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqaGFuZGxlKTs8L3N5bm9wc2lzPgorICAgICAgICAgICAgVGhvc2UgdHdvIG9wZXJhdGlvbnMgY29udmVydCBhIGhhbmRsZSB0byBhIFBSSU1FIGZpbGUgZGVzY3JpcHRvciBhbmQKKyAgICAgICAgICAgIHZpY2UgdmVyc2EuIERyaXZlcnMgbXVzdCB1c2UgdGhlIGtlcm5lbCBkbWEtYnVmIGJ1ZmZlciBzaGFyaW5nIGZyYW1ld29yaworICAgICAgICAgICAgdG8gbWFuYWdlIHRoZSBQUklNRSBmaWxlIGRlc2NyaXB0b3JzLiBTaW1pbGFyIHRvIHRoZSBtb2RlIHNldHRpbmcKKyAgICAgICAgICAgIEFQSSBQUklNRSBpcyBhZ25vc3RpYyB0byB0aGUgdW5kZXJseWluZyBidWZmZXIgb2JqZWN0IG1hbmFnZXIsIGFzCisgICAgICAgICAgICBsb25nIGFzIGhhbmRsZXMgYXJlIDMyYml0IHVuc2lnbmVkIGludGVnZXJzLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoaWxlIG5vbi1HRU0gZHJpdmVycyBtdXN0IGltcGxlbWVudCB0aGUgb3BlcmF0aW9ucyB0aGVtc2VsdmVzLCBHRU0KKyAgICAgICAgICAgIGRyaXZlcnMgbXVzdCB1c2UgdGhlIDxmdW5jdGlvbj5kcm1fZ2VtX3ByaW1lX2hhbmRsZV90b19mZDwvZnVuY3Rpb24+CisgICAgICAgICAgICBhbmQgPGZ1bmN0aW9uPmRybV9nZW1fcHJpbWVfZmRfdG9faGFuZGxlPC9mdW5jdGlvbj4gaGVscGVyIGZ1bmN0aW9ucy4KKyAgICAgICAgICAgIFRob3NlIGhlbHBlcnMgcmVseSBvbiB0aGUgZHJpdmVyCisgICAgICAgICAgICA8bWV0aG9kbmFtZT5nZW1fcHJpbWVfZXhwb3J0PC9tZXRob2RuYW1lPiBhbmQKKyAgICAgICAgICAgIDxtZXRob2RuYW1lPmdlbV9wcmltZV9pbXBvcnQ8L21ldGhvZG5hbWU+IG9wZXJhdGlvbnMgdG8gY3JlYXRlIGEgZG1hLWJ1ZgorICAgICAgICAgICAgaW5zdGFuY2UgZnJvbSBhIEdFTSBvYmplY3QgKGRtYS1idWYgZXhwb3J0ZXIgcm9sZSkgYW5kIHRvIGNyZWF0ZSBhIEdFTQorICAgICAgICAgICAgb2JqZWN0IGZyb20gYSBkbWEtYnVmIGluc3RhbmNlIChkbWEtYnVmIGltcG9ydGVyIHJvbGUpLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxzeW5vcHNpcz5zdHJ1Y3QgZG1hX2J1ZiAqICgqZ2VtX3ByaW1lX2V4cG9ydCkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncyk7CitzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKiAoKmdlbV9wcmltZV9pbXBvcnQpKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmKTs8L3N5bm9wc2lzPgorICAgICAgICAgICAgVGhlc2UgdHdvIG9wZXJhdGlvbnMgYXJlIG1hbmRhdG9yeSBmb3IgR0VNIGRyaXZlcnMgdGhhdCBzdXBwb3J0CisgICAgICAgICAgICBQUklNRS4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdDM+CisgICAgICA8c2VjdDM+CisgICAgICAgIDx0aXRsZT5QUklNRSBIZWxwZXIgRnVuY3Rpb25zPC90aXRsZT4KKyFQZHJpdmVycy9ncHUvZHJtL2RybV9wcmltZS5jIFBSSU1FIEhlbHBlcnMKKyAgICAgIDwvc2VjdDM+CisgICAgPC9zZWN0Mj4KKyAgICA8c2VjdDI+CisgICAgICA8dGl0bGU+UFJJTUUgRnVuY3Rpb24gUmVmZXJlbmNlczwvdGl0bGU+CishRWRyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYworICAgIDwvc2VjdDI+CisgICAgPHNlY3QyPgorICAgICAgPHRpdGxlPkRSTSBNTSBSYW5nZSBBbGxvY2F0b3I8L3RpdGxlPgorICAgICAgPHNlY3QzPgorICAgICAgICA8dGl0bGU+T3ZlcnZpZXc8L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0vZHJtX21tLmMgT3ZlcnZpZXcKKyAgICAgIDwvc2VjdDM+CisgICAgICA8c2VjdDM+CisgICAgICAgIDx0aXRsZT5MUlUgU2Nhbi9FdmljdGlvbiBTdXBwb3J0PC90aXRsZT4KKyFQZHJpdmVycy9ncHUvZHJtL2RybV9tbS5jIGxydSBzY2FuIHJvYXN0ZXIKKyAgICAgIDwvc2VjdDM+CisgICAgICA8L3NlY3QyPgorICAgIDxzZWN0Mj4KKyAgICAgIDx0aXRsZT5EUk0gTU0gUmFuZ2UgQWxsb2NhdG9yIEZ1bmN0aW9uIFJlZmVyZW5jZXM8L3RpdGxlPgorIUVkcml2ZXJzL2dwdS9kcm0vZHJtX21tLmMKKyFJaW5jbHVkZS9kcm0vZHJtX21tLmgKKyAgICA8L3NlY3QyPgorICAgIDxzZWN0Mj4KKyAgICAgIDx0aXRsZT5DTUEgSGVscGVyIEZ1bmN0aW9ucyBSZWZlcmVuY2U8L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9jbWFfaGVscGVyLmMgY21hIGhlbHBlcnMKKyFFZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fY21hX2hlbHBlci5jCishSWluY2x1ZGUvZHJtL2RybV9nZW1fY21hX2hlbHBlci5oCisgICAgPC9zZWN0Mj4KKyAgPC9zZWN0MT4KKworICA8IS0tIEludGVybmFsczogbW9kZSBzZXR0aW5nIC0tPgorCisgIDxzZWN0MSBpZD0iZHJtLW1vZGUtc2V0dGluZyI+CisgICAgPHRpdGxlPk1vZGUgU2V0dGluZzwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICBEcml2ZXJzIG11c3QgaW5pdGlhbGl6ZSB0aGUgbW9kZSBzZXR0aW5nIGNvcmUgYnkgY2FsbGluZworICAgICAgPGZ1bmN0aW9uPmRybV9tb2RlX2NvbmZpZ19pbml0PC9mdW5jdGlvbj4gb24gdGhlIERSTSBkZXZpY2UuIFRoZSBmdW5jdGlvbgorICAgICAgaW5pdGlhbGl6ZXMgdGhlIDxzdHJ1Y3RuYW1lPmRybV9kZXZpY2U8L3N0cnVjdG5hbWU+CisgICAgICA8c3RydWN0ZmllbGQ+bW9kZV9jb25maWc8L3N0cnVjdGZpZWxkPiBmaWVsZCBhbmQgbmV2ZXIgZmFpbHMuIE9uY2UgZG9uZSwKKyAgICAgIG1vZGUgY29uZmlndXJhdGlvbiBtdXN0IGJlIHNldHVwIGJ5IGluaXRpYWxpemluZyB0aGUgZm9sbG93aW5nIGZpZWxkcy4KKyAgICA8L3BhcmE+CisgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHN5bm9wc2lzPmludCBtaW5fd2lkdGgsIG1pbl9oZWlnaHQ7CitpbnQgbWF4X3dpZHRoLCBtYXhfaGVpZ2h0Ozwvc3lub3BzaXM+CisgICAgICAgIDxwYXJhPgorCSAgTWluaW11bSBhbmQgbWF4aW11bSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBmcmFtZSBidWZmZXJzIGluIHBpeGVsCisJICB1bml0cy4KKwk8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8c3lub3BzaXM+c3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5jcyAqZnVuY3M7PC9zeW5vcHNpcz4KKwk8cGFyYT5Nb2RlIHNldHRpbmcgZnVuY3Rpb25zLjwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPHNlY3QyPgorICAgICAgPHRpdGxlPkRpc3BsYXkgTW9kZXMgRnVuY3Rpb24gUmVmZXJlbmNlPC90aXRsZT4KKyFJaW5jbHVkZS9kcm0vZHJtX21vZGVzLmgKKyFFZHJpdmVycy9ncHUvZHJtL2RybV9tb2Rlcy5jCisgICAgPC9zZWN0Mj4KKyAgICA8c2VjdDI+CisgICAgICA8dGl0bGU+QXRvbWljIE1vZGUgU2V0dGluZyBGdW5jdGlvbiBSZWZlcmVuY2U8L3RpdGxlPgorIUVkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCisgICAgPC9zZWN0Mj4KKyAgICA8c2VjdDI+CisgICAgICA8dGl0bGU+RnJhbWUgQnVmZmVyIENyZWF0aW9uPC90aXRsZT4KKyAgICAgIDxzeW5vcHNpcz5zdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICooKmZiX2NyZWF0ZSkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAorCQkJCSAgICAgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kKTs8L3N5bm9wc2lzPgorICAgICAgPHBhcmE+CisgICAgICAgIEZyYW1lIGJ1ZmZlcnMgYXJlIGFic3RyYWN0IG1lbW9yeSBvYmplY3RzIHRoYXQgcHJvdmlkZSBhIHNvdXJjZSBvZgorICAgICAgICBwaXhlbHMgdG8gc2Nhbm91dCB0byBhIENSVEMuIEFwcGxpY2F0aW9ucyBleHBsaWNpdGx5IHJlcXVlc3QgdGhlCisgICAgICAgIGNyZWF0aW9uIG9mIGZyYW1lIGJ1ZmZlcnMgdGhyb3VnaCB0aGUgRFJNX0lPQ1RMX01PREVfQURERkIoMikgaW9jdGxzIGFuZAorICAgICAgICByZWNlaXZlIGFuIG9wYXF1ZSBoYW5kbGUgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHRoZSBLTVMgQ1JUQyBjb250cm9sLAorICAgICAgICBwbGFuZSBjb25maWd1cmF0aW9uIGFuZCBwYWdlIGZsaXAgZnVuY3Rpb25zLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIEZyYW1lIGJ1ZmZlcnMgcmVseSBvbiB0aGUgdW5kZXJuZWF0aCBtZW1vcnkgbWFuYWdlciBmb3IgbG93LWxldmVsIG1lbW9yeQorICAgICAgICBvcGVyYXRpb25zLiBXaGVuIGNyZWF0aW5nIGEgZnJhbWUgYnVmZmVyIGFwcGxpY2F0aW9ucyBwYXNzIGEgbWVtb3J5CisgICAgICAgIGhhbmRsZSAob3IgYSBsaXN0IG9mIG1lbW9yeSBoYW5kbGVzIGZvciBtdWx0aS1wbGFuYXIgZm9ybWF0cykgdGhyb3VnaAorCXRoZSA8cGFyYW1ldGVyPmRybV9tb2RlX2ZiX2NtZDI8L3BhcmFtZXRlcj4gYXJndW1lbnQuIEZvciBkcml2ZXJzIHVzaW5nCisJR0VNIGFzIHRoZWlyIHVzZXJzcGFjZSBidWZmZXIgbWFuYWdlbWVudCBpbnRlcmZhY2UgdGhpcyB3b3VsZCBiZSBhIEdFTQorCWhhbmRsZS4gIERyaXZlcnMgYXJlIGhvd2V2ZXIgZnJlZSB0byB1c2UgdGhlaXIgb3duIGJhY2tpbmcgc3RvcmFnZSBvYmplY3QKKwloYW5kbGVzLCBlLmcuIHZtd2dmeCBkaXJlY3RseSBleHBvc2VzIHNwZWNpYWwgVFRNIGhhbmRsZXMgdG8gdXNlcnNwYWNlCisJYW5kIHNvIGV4cGVjdHMgVFRNIGhhbmRsZXMgaW4gdGhlIGNyZWF0ZSBpb2N0bCBhbmQgbm90IEdFTSBoYW5kbGVzLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIERyaXZlcnMgbXVzdCBmaXJzdCB2YWxpZGF0ZSB0aGUgcmVxdWVzdGVkIGZyYW1lIGJ1ZmZlciBwYXJhbWV0ZXJzIHBhc3NlZAorICAgICAgICB0aHJvdWdoIHRoZSBtb2RlX2NtZCBhcmd1bWVudC4gSW4gcGFydGljdWxhciB0aGlzIGlzIHdoZXJlIGludmFsaWQKKyAgICAgICAgc2l6ZXMsIHBpeGVsIGZvcm1hdHMgb3IgcGl0Y2hlcyBjYW4gYmUgY2F1Z2h0LgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIElmIHRoZSBwYXJhbWV0ZXJzIGFyZSBkZWVtZWQgdmFsaWQsIGRyaXZlcnMgdGhlbiBjcmVhdGUsIGluaXRpYWxpemUgYW5kCisgICAgICAgIHJldHVybiBhbiBpbnN0YW5jZSBvZiBzdHJ1Y3QgPHN0cnVjdG5hbWU+ZHJtX2ZyYW1lYnVmZmVyPC9zdHJ1Y3RuYW1lPi4KKyAgICAgICAgSWYgZGVzaXJlZCB0aGUgaW5zdGFuY2UgY2FuIGJlIGVtYmVkZGVkIGluIGEgbGFyZ2VyIGRyaXZlci1zcGVjaWZpYworCXN0cnVjdHVyZS4gRHJpdmVycyBtdXN0IGZpbGwgaXRzIDxzdHJ1Y3RmaWVsZD53aWR0aDwvc3RydWN0ZmllbGQ+LAorCTxzdHJ1Y3RmaWVsZD5oZWlnaHQ8L3N0cnVjdGZpZWxkPiwgPHN0cnVjdGZpZWxkPnBpdGNoZXM8L3N0cnVjdGZpZWxkPiwKKyAgICAgICAgPHN0cnVjdGZpZWxkPm9mZnNldHM8L3N0cnVjdGZpZWxkPiwgPHN0cnVjdGZpZWxkPmRlcHRoPC9zdHJ1Y3RmaWVsZD4sCisgICAgICAgIDxzdHJ1Y3RmaWVsZD5iaXRzX3Blcl9waXhlbDwvc3RydWN0ZmllbGQ+IGFuZAorICAgICAgICA8c3RydWN0ZmllbGQ+cGl4ZWxfZm9ybWF0PC9zdHJ1Y3RmaWVsZD4gZmllbGRzIGZyb20gdGhlIHZhbHVlcyBwYXNzZWQKKyAgICAgICAgdGhyb3VnaCB0aGUgPHBhcmFtZXRlcj5kcm1fbW9kZV9mYl9jbWQyPC9wYXJhbWV0ZXI+IGFyZ3VtZW50LiBUaGV5CisgICAgICAgIHNob3VsZCBjYWxsIHRoZSA8ZnVuY3Rpb24+ZHJtX2hlbHBlcl9tb2RlX2ZpbGxfZmJfc3RydWN0PC9mdW5jdGlvbj4KKyAgICAgICAgaGVscGVyIGZ1bmN0aW9uIHRvIGRvIHNvLgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKwlUaGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIG5ldyBmcmFtZWJ1ZmZlciBpbnN0YW5jZSBpcyBmaW5hbGl6ZWQgd2l0aCBhCisJY2FsbCB0byA8ZnVuY3Rpb24+ZHJtX2ZyYW1lYnVmZmVyX2luaXQ8L2Z1bmN0aW9uPiB3aGljaCB0YWtlcyBhIHBvaW50ZXIKKwl0byBEUk0gZnJhbWUgYnVmZmVyIG9wZXJhdGlvbnMgKHN0cnVjdAorCTxzdHJ1Y3RuYW1lPmRybV9mcmFtZWJ1ZmZlcl9mdW5jczwvc3RydWN0bmFtZT4pLiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbgorCXB1Ymxpc2hlcyB0aGUgZnJhbWVidWZmZXIgYW5kIHNvIGZyb20gdGhpcyBwb2ludCBvbiBpdCBjYW4gYmUgYWNjZXNzZWQKKwljb25jdXJyZW50bHkgZnJvbSBvdGhlciB0aHJlYWRzLiBIZW5jZSBpdCBtdXN0IGJlIHRoZSBsYXN0IHN0ZXAgaW4gdGhlCisJZHJpdmVyJ3MgZnJhbWVidWZmZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEZyYW1lIGJ1ZmZlciBvcGVyYXRpb25zCisJYXJlCisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHN5bm9wc2lzPmludCAoKmNyZWF0ZV9oYW5kbGUpKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAorCQkgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LCB1bnNpZ25lZCBpbnQgKmhhbmRsZSk7PC9zeW5vcHNpcz4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBDcmVhdGUgYSBoYW5kbGUgdG8gdGhlIGZyYW1lIGJ1ZmZlciB1bmRlcmx5aW5nIG1lbW9yeSBvYmplY3QuIElmCisgICAgICAgICAgICAgIHRoZSBmcmFtZSBidWZmZXIgdXNlcyBhIG11bHRpLXBsYW5lIGZvcm1hdCwgdGhlIGhhbmRsZSB3aWxsCisgICAgICAgICAgICAgIHJlZmVyZW5jZSB0aGUgbWVtb3J5IG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIGZpcnN0IHBsYW5lLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIERyaXZlcnMgY2FsbCA8ZnVuY3Rpb24+ZHJtX2dlbV9oYW5kbGVfY3JlYXRlPC9mdW5jdGlvbj4gdG8gY3JlYXRlCisgICAgICAgICAgICAgIHRoZSBoYW5kbGUuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8c3lub3BzaXM+dm9pZCAoKmRlc3Ryb3kpKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyKTs8L3N5bm9wc2lzPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIERlc3Ryb3kgdGhlIGZyYW1lIGJ1ZmZlciBvYmplY3QgYW5kIGZyZWVzIGFsbCBhc3NvY2lhdGVkCisgICAgICAgICAgICAgIHJlc291cmNlcy4gRHJpdmVycyBtdXN0IGNhbGwKKyAgICAgICAgICAgICAgPGZ1bmN0aW9uPmRybV9mcmFtZWJ1ZmZlcl9jbGVhbnVwPC9mdW5jdGlvbj4gdG8gZnJlZSByZXNvdXJjZXMKKyAgICAgICAgICAgICAgYWxsb2NhdGVkIGJ5IHRoZSBEUk0gY29yZSBmb3IgdGhlIGZyYW1lIGJ1ZmZlciBvYmplY3QsIGFuZCBtdXN0CisgICAgICAgICAgICAgIG1ha2Ugc3VyZSB0byB1bnJlZmVyZW5jZSBhbGwgbWVtb3J5IG9iamVjdHMgYXNzb2NpYXRlZCB3aXRoIHRoZQorICAgICAgICAgICAgICBmcmFtZSBidWZmZXIuIEhhbmRsZXMgY3JlYXRlZCBieSB0aGUKKyAgICAgICAgICAgICAgPG1ldGhvZG5hbWU+Y3JlYXRlX2hhbmRsZTwvbWV0aG9kbmFtZT4gb3BlcmF0aW9uIGFyZSByZWxlYXNlZCBieQorICAgICAgICAgICAgICB0aGUgRFJNIGNvcmUuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8c3lub3BzaXM+aW50ICgqZGlydHkpKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLAorCSAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsIHVuc2lnbmVkIGZsYWdzLCB1bnNpZ25lZCBjb2xvciwKKwkgICAgIHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpjbGlwcywgdW5zaWduZWQgbnVtX2NsaXBzKTs8L3N5bm9wc2lzPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIFRoaXMgb3B0aW9uYWwgb3BlcmF0aW9uIG5vdGlmaWVzIHRoZSBkcml2ZXIgdGhhdCBhIHJlZ2lvbiBvZiB0aGUKKyAgICAgICAgICAgICAgZnJhbWUgYnVmZmVyIGhhcyBjaGFuZ2VkIGluIHJlc3BvbnNlIHRvIGEgRFJNX0lPQ1RMX01PREVfRElSVFlGQgorICAgICAgICAgICAgICBpb2N0bCBjYWxsLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisJVGhlIGxpZmV0aW1lIG9mIGEgZHJtIGZyYW1lYnVmZmVyIGlzIGNvbnRyb2xsZWQgd2l0aCBhIHJlZmVyZW5jZSBjb3VudCwKKwlkcml2ZXJzIGNhbiBncmFiIGFkZGl0aW9uYWwgcmVmZXJlbmNlcyB3aXRoCisJPGZ1bmN0aW9uPmRybV9mcmFtZWJ1ZmZlcl9yZWZlcmVuY2U8L2Z1bmN0aW9uPmFuZCBkcm9wIHRoZW0KKwlhZ2FpbiB3aXRoIDxmdW5jdGlvbj5kcm1fZnJhbWVidWZmZXJfdW5yZWZlcmVuY2U8L2Z1bmN0aW9uPi4gRm9yCisJZHJpdmVyLXByaXZhdGUgZnJhbWVidWZmZXJzIGZvciB3aGljaCB0aGUgbGFzdCByZWZlcmVuY2UgaXMgbmV2ZXIKKwlkcm9wcGVkIChlLmcuIGZvciB0aGUgZmJkZXYgZnJhbWVidWZmZXIgd2hlbiB0aGUgc3RydWN0CisJPHN0cnVjdG5hbWU+ZHJtX2ZyYW1lYnVmZmVyPC9zdHJ1Y3RuYW1lPiBpcyBlbWJlZGRlZCBpbnRvIHRoZSBmYmRldgorCWhlbHBlciBzdHJ1Y3QpIGRyaXZlcnMgY2FuIG1hbnVhbGx5IGNsZWFuIHVwIGEgZnJhbWVidWZmZXIgYXQgbW9kdWxlCisJdW5sb2FkIHRpbWUgd2l0aAorCTxmdW5jdGlvbj5kcm1fZnJhbWVidWZmZXJfdW5yZWdpc3Rlcl9wcml2YXRlPC9mdW5jdGlvbj4uCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0Mj4KKyAgICA8c2VjdDI+CisgICAgICA8dGl0bGU+RHVtYiBCdWZmZXIgT2JqZWN0czwvdGl0bGU+CisgICAgICA8cGFyYT4KKwlUaGUgS01TIEFQSSBkb2Vzbid0IHN0YW5kYXJkaXplIGJhY2tpbmcgc3RvcmFnZSBvYmplY3QgY3JlYXRpb24gYW5kCisJbGVhdmVzIGl0IHRvIGRyaXZlci1zcGVjaWZpYyBpb2N0bHMuIEZ1cnRoZXJtb3JlIGFjdHVhbGx5IGNyZWF0aW5nIGEKKwlidWZmZXIgb2JqZWN0IGV2ZW4gZm9yIEdFTS1iYXNlZCBkcml2ZXJzIGlzIGRvbmUgdGhyb3VnaCBhCisJZHJpdmVyLXNwZWNpZmljIGlvY3RsIC0gR0VNIG9ubHkgaGFzIGEgY29tbW9uIHVzZXJzcGFjZSBpbnRlcmZhY2UgZm9yCisJc2hhcmluZyBhbmQgZGVzdHJveWluZyBvYmplY3RzLiBXaGlsZSBub3QgYW4gaXNzdWUgZm9yIGZ1bGwtZmxlZGdlZAorCWdyYXBoaWNzIHN0YWNrcyB0aGF0IGluY2x1ZGUgZGV2aWNlLXNwZWNpZmljIHVzZXJzcGFjZSBjb21wb25lbnRzIChpbgorCWxpYmRybSBmb3IgaW5zdGFuY2UpLCB0aGlzIGxpbWl0IG1ha2VzIERSTS1iYXNlZCBlYXJseSBib290IGdyYXBoaWNzCisJdW5uZWNlc3NhcmlseSBjb21wbGV4LgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIER1bWIgb2JqZWN0cyBwYXJ0bHkgYWxsZXZpYXRlIHRoZSBwcm9ibGVtIGJ5IHByb3ZpZGluZyBhIHN0YW5kYXJkCisgICAgICAgIEFQSSB0byBjcmVhdGUgZHVtYiBidWZmZXJzIHN1aXRhYmxlIGZvciBzY2Fub3V0LCB3aGljaCBjYW4gdGhlbiBiZSB1c2VkCisgICAgICAgIHRvIGNyZWF0ZSBLTVMgZnJhbWUgYnVmZmVycy4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUbyBzdXBwb3J0IGR1bWIgb2JqZWN0cyBkcml2ZXJzIG11c3QgaW1wbGVtZW50IHRoZQorICAgICAgICA8bWV0aG9kbmFtZT5kdW1iX2NyZWF0ZTwvbWV0aG9kbmFtZT4sCisgICAgICAgIDxtZXRob2RuYW1lPmR1bWJfZGVzdHJveTwvbWV0aG9kbmFtZT4gYW5kCisgICAgICAgIDxtZXRob2RuYW1lPmR1bWJfbWFwX29mZnNldDwvbWV0aG9kbmFtZT4gb3BlcmF0aW9ucy4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8c3lub3BzaXM+aW50ICgqZHVtYl9jcmVhdGUpKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYiAqYXJncyk7PC9zeW5vcHNpcz4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSA8bWV0aG9kbmFtZT5kdW1iX2NyZWF0ZTwvbWV0aG9kbmFtZT4gb3BlcmF0aW9uIGNyZWF0ZXMgYSBkcml2ZXIKKwkgICAgb2JqZWN0IChHRU0gb3IgVFRNIGhhbmRsZSkgc3VpdGFibGUgZm9yIHNjYW5vdXQgYmFzZWQgb24gdGhlCisJICAgIHdpZHRoLCBoZWlnaHQgYW5kIGRlcHRoIGZyb20gdGhlIHN0cnVjdAorCSAgICA8c3RydWN0bmFtZT5kcm1fbW9kZV9jcmVhdGVfZHVtYjwvc3RydWN0bmFtZT4gYXJndW1lbnQuIEl0IGZpbGxzIHRoZQorCSAgICBhcmd1bWVudCdzIDxzdHJ1Y3RmaWVsZD5oYW5kbGU8L3N0cnVjdGZpZWxkPiwKKwkgICAgPHN0cnVjdGZpZWxkPnBpdGNoPC9zdHJ1Y3RmaWVsZD4gYW5kIDxzdHJ1Y3RmaWVsZD5zaXplPC9zdHJ1Y3RmaWVsZD4KKwkgICAgZmllbGRzIHdpdGggYSBoYW5kbGUgZm9yIHRoZSBuZXdseSBjcmVhdGVkIG9iamVjdCBhbmQgaXRzIGxpbmUKKyAgICAgICAgICAgIHBpdGNoIGFuZCBzaXplIGluIGJ5dGVzLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxzeW5vcHNpcz5pbnQgKCpkdW1iX2Rlc3Ryb3kpKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBoYW5kbGUpOzwvc3lub3BzaXM+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPG1ldGhvZG5hbWU+ZHVtYl9kZXN0cm95PC9tZXRob2RuYW1lPiBvcGVyYXRpb24gZGVzdHJveXMgYSBkdW1iCisgICAgICAgICAgICBvYmplY3QgY3JlYXRlZCBieSA8bWV0aG9kbmFtZT5kdW1iX2NyZWF0ZTwvbWV0aG9kbmFtZT4uCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHN5bm9wc2lzPmludCAoKmR1bWJfbWFwX29mZnNldCkoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3QgKm9mZnNldCk7PC9zeW5vcHNpcz4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSA8bWV0aG9kbmFtZT5kdW1iX21hcF9vZmZzZXQ8L21ldGhvZG5hbWU+IG9wZXJhdGlvbiBhc3NvY2lhdGVzIGFuCisgICAgICAgICAgICBtbWFwIGZha2Ugb2Zmc2V0IHdpdGggdGhlIG9iamVjdCBnaXZlbiBieSB0aGUgaGFuZGxlIGFuZCByZXR1cm5zCisgICAgICAgICAgICBpdC4gRHJpdmVycyBtdXN0IHVzZSB0aGUKKyAgICAgICAgICAgIDxmdW5jdGlvbj5kcm1fZ2VtX2NyZWF0ZV9tbWFwX29mZnNldDwvZnVuY3Rpb24+IGZ1bmN0aW9uIHRvCisgICAgICAgICAgICBhc3NvY2lhdGUgdGhlIGZha2Ugb2Zmc2V0IGFzIGRlc2NyaWJlZCBpbgorICAgICAgICAgICAgPHhyZWYgbGlua2VuZD0iZHJtLWdlbS1vYmplY3RzLW1hcHBpbmciLz4uCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICA8cGFyYT4KKyAgICAgICAgTm90ZSB0aGF0IGR1bWIgb2JqZWN0cyBtYXkgbm90IGJlIHVzZWQgZm9yIGdwdSBhY2NlbGVyYXRpb24sIGFzIGhhcyBiZWVuCisJYXR0ZW1wdGVkIG9uIHNvbWUgQVJNIGVtYmVkZGVkIHBsYXRmb3Jtcy4gU3VjaCBkcml2ZXJzIHJlYWxseSBtdXN0IGhhdmUKKwlhIGhhcmR3YXJlLXNwZWNpZmljIGlvY3RsIHRvIGFsbG9jYXRlIHN1aXRhYmxlIGJ1ZmZlciBvYmplY3RzLgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdDI+CisgICAgPHNlY3QyPgorICAgICAgPHRpdGxlPk91dHB1dCBQb2xsaW5nPC90aXRsZT4KKyAgICAgIDxzeW5vcHNpcz52b2lkICgqb3V0cHV0X3BvbGxfY2hhbmdlZCkoc3RydWN0IGRybV9kZXZpY2UgKmRldik7PC9zeW5vcHNpcz4KKyAgICAgIDxwYXJhPgorICAgICAgICBUaGlzIG9wZXJhdGlvbiBub3RpZmllcyB0aGUgZHJpdmVyIHRoYXQgdGhlIHN0YXR1cyBvZiBvbmUgb3IgbW9yZQorICAgICAgICBjb25uZWN0b3JzIGhhcyBjaGFuZ2VkLiBEcml2ZXJzIHRoYXQgdXNlIHRoZSBmYiBoZWxwZXIgY2FuIGp1c3QgY2FsbCB0aGUKKyAgICAgICAgPGZ1bmN0aW9uPmRybV9mYl9oZWxwZXJfaG90cGx1Z19ldmVudDwvZnVuY3Rpb24+IGZ1bmN0aW9uIHRvIGhhbmRsZSB0aGlzCisgICAgICAgIG9wZXJhdGlvbi4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QyPgorICAgIDxzZWN0Mj4KKyAgICAgIDx0aXRsZT5Mb2NraW5nPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBCZXNpZGUgc29tZSBsb29rdXAgc3RydWN0dXJlcyB3aXRoIHRoZWlyIG93biBsb2NraW5nICh3aGljaCBpcyBoaWRkZW4KKwliZWhpbmQgdGhlIGludGVyZmFjZSBmdW5jdGlvbnMpIG1vc3Qgb2YgdGhlIG1vZGVzZXQgc3RhdGUgaXMgcHJvdGVjdGVkCisJYnkgdGhlIDxjb2RlPmRldi0mbHQ7bW9kZV9jb25maWcubG9jazwvY29kZT4gbXV0ZXggYW5kIGFkZGl0aW9uYWxseQorCXBlci1jcnRjIGxvY2tzIHRvIGFsbG93IGN1cnNvciB1cGRhdGVzLCBwYWdlZmxpcHMgYW5kIHNpbWlsYXIgb3BlcmF0aW9ucworCXRvIG9jY3VyIGNvbmN1cnJlbnRseSB3aXRoIGJhY2tncm91bmQgdGFza3MgbGlrZSBvdXRwdXQgZGV0ZWN0aW9uLgorCU9wZXJhdGlvbnMgd2hpY2ggY3Jvc3MgZG9tYWlucyBsaWtlIGEgZnVsbCBtb2Rlc2V0IGFsd2F5cyBncmFiIGFsbAorCWxvY2tzLiBEcml2ZXJzIHRoZXJlIG5lZWQgdG8gcHJvdGVjdCByZXNvdXJjZXMgc2hhcmVkIGJldHdlZW4gY3J0Y3Mgd2l0aAorCWFkZGl0aW9uYWwgbG9ja2luZy4gVGhleSBhbHNvIG5lZWQgdG8gYmUgY2FyZWZ1bCB0byBhbHdheXMgZ3JhYiB0aGUKKwlyZWxldmFudCBjcnRjIGxvY2tzIGlmIGEgbW9kc2V0IGZ1bmN0aW9ucyB0b3VjaGVzIGNydGMgc3RhdGUsIGUuZy4gZm9yCisJbG9hZCBkZXRlY3Rpb24gKHdoaWNoIGRvZXMgb25seSBncmFiIHRoZSA8Y29kZT5tb2RlX2NvbmZpZy5sb2NrPC9jb2RlPgorCXRvIGFsbG93IGNvbmN1cnJlbnQgc2NyZWVuIHVwZGF0ZXMgb24gbGl2ZSBjcnRjcykuCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0Mj4KKyAgPC9zZWN0MT4KKworICA8IS0tIEludGVybmFsczoga21zIGluaXRpYWxpemF0aW9uIGFuZCBjbGVhbnVwIC0tPgorCisgIDxzZWN0MSBpZD0iZHJtLWttcy1pbml0Ij4KKyAgICA8dGl0bGU+S01TIEluaXRpYWxpemF0aW9uIGFuZCBDbGVhbnVwPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIEEgS01TIGRldmljZSBpcyBhYnN0cmFjdGVkIGFuZCBleHBvc2VkIGFzIGEgc2V0IG9mIHBsYW5lcywgQ1JUQ3MsIGVuY29kZXJzCisgICAgICBhbmQgY29ubmVjdG9ycy4gS01TIGRyaXZlcnMgbXVzdCB0aHVzIGNyZWF0ZSBhbmQgaW5pdGlhbGl6ZSBhbGwgdGhvc2UKKyAgICAgIG9iamVjdHMgYXQgbG9hZCB0aW1lIGFmdGVyIGluaXRpYWxpemluZyBtb2RlIHNldHRpbmcuCisgICAgPC9wYXJhPgorICAgIDxzZWN0Mj4KKyAgICAgIDx0aXRsZT5DUlRDcyAoc3RydWN0IDxzdHJ1Y3RuYW1lPmRybV9jcnRjPC9zdHJ1Y3RuYW1lPik8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIEEgQ1JUQyBpcyBhbiBhYnN0cmFjdGlvbiByZXByZXNlbnRpbmcgYSBwYXJ0IG9mIHRoZSBjaGlwIHRoYXQgY29udGFpbnMgYQorCXBvaW50ZXIgdG8gYSBzY2Fub3V0IGJ1ZmZlci4gVGhlcmVmb3JlLCB0aGUgbnVtYmVyIG9mIENSVENzIGF2YWlsYWJsZQorCWRldGVybWluZXMgaG93IG1hbnkgaW5kZXBlbmRlbnQgc2Nhbm91dCBidWZmZXJzIGNhbiBiZSBhY3RpdmUgYXQgYW55CisJZ2l2ZW4gdGltZS4gVGhlIENSVEMgc3RydWN0dXJlIGNvbnRhaW5zIHNldmVyYWwgZmllbGRzIHRvIHN1cHBvcnQgdGhpczoKKwlhIHBvaW50ZXIgdG8gc29tZSB2aWRlbyBtZW1vcnkgKGFic3RyYWN0ZWQgYXMgYSBmcmFtZSBidWZmZXIgb2JqZWN0KSwgYQorCWRpc3BsYXkgbW9kZSwgYW5kIGFuICh4LCB5KSBvZmZzZXQgaW50byB0aGUgdmlkZW8gbWVtb3J5IHRvIHN1cHBvcnQKKwlwYW5uaW5nIG9yIGNvbmZpZ3VyYXRpb25zIHdoZXJlIG9uZSBwaWVjZSBvZiB2aWRlbyBtZW1vcnkgc3BhbnMgbXVsdGlwbGUKKwlDUlRDcy4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxzZWN0Mz4KKyAgICAgICAgPHRpdGxlPkNSVEMgSW5pdGlhbGl6YXRpb248L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBBIEtNUyBkZXZpY2UgbXVzdCBjcmVhdGUgYW5kIHJlZ2lzdGVyIGF0IGxlYXN0IG9uZSBzdHJ1Y3QKKyAgICAgICAgICA8c3RydWN0bmFtZT5kcm1fY3J0Yzwvc3RydWN0bmFtZT4gaW5zdGFuY2UuIFRoZSBpbnN0YW5jZSBpcyBhbGxvY2F0ZWQKKyAgICAgICAgICBhbmQgemVyb2VkIGJ5IHRoZSBkcml2ZXIsIHBvc3NpYmx5IGFzIHBhcnQgb2YgYSBsYXJnZXIgc3RydWN0dXJlLCBhbmQKKyAgICAgICAgICByZWdpc3RlcmVkIHdpdGggYSBjYWxsIHRvIDxmdW5jdGlvbj5kcm1fY3J0Y19pbml0PC9mdW5jdGlvbj4gd2l0aCBhCisgICAgICAgICAgcG9pbnRlciB0byBDUlRDIGZ1bmN0aW9ucy4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0Mz4KKyAgICAgIDxzZWN0MyBpZD0iZHJtLWttcy1jcnRjb3BzIj4KKyAgICAgICAgPHRpdGxlPkNSVEMgT3BlcmF0aW9uczwvdGl0bGU+CisgICAgICAgIDxzZWN0ND4KKyAgICAgICAgICA8dGl0bGU+U2V0IENvbmZpZ3VyYXRpb248L3RpdGxlPgorICAgICAgICAgIDxzeW5vcHNpcz5pbnQgKCpzZXRfY29uZmlnKShzdHJ1Y3QgZHJtX21vZGVfc2V0ICpzZXQpOzwvc3lub3BzaXM+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBcHBseSBhIG5ldyBDUlRDIGNvbmZpZ3VyYXRpb24gdG8gdGhlIGRldmljZS4gVGhlIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgIHNwZWNpZmllcyBhIENSVEMsIGEgZnJhbWUgYnVmZmVyIHRvIHNjYW4gb3V0IGZyb20sIGEgKHgseSkgcG9zaXRpb24gaW4KKyAgICAgICAgICAgIHRoZSBmcmFtZSBidWZmZXIsIGEgZGlzcGxheSBtb2RlIGFuZCBhbiBhcnJheSBvZiBjb25uZWN0b3JzIHRvIGRyaXZlCisgICAgICAgICAgICB3aXRoIHRoZSBDUlRDIGlmIHBvc3NpYmxlLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHRoZSBmcmFtZSBidWZmZXIgc3BlY2lmaWVkIGluIHRoZSBjb25maWd1cmF0aW9uIGlzIE5VTEwsIHRoZSBkcml2ZXIKKyAgICAgICAgICAgIG11c3QgZGV0YWNoIGFsbCBlbmNvZGVycyBjb25uZWN0ZWQgdG8gdGhlIENSVEMgYW5kIGFsbCBjb25uZWN0b3JzCisgICAgICAgICAgICBhdHRhY2hlZCB0byB0aG9zZSBlbmNvZGVycyBhbmQgZGlzYWJsZSB0aGVtLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgb3BlcmF0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZSBtb2RlIGNvbmZpZyBsb2NrIGhlbGQuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDxub3RlPjxwYXJhPgorCSAgICBOb3RlIHRoYXQgdGhlIGRybSBjb3JlIGhhcyBubyBub3Rpb24gb2YgcmVzdG9yaW5nIHRoZSBtb2RlIHNldHRpbmcKKwkgICAgc3RhdGUgYWZ0ZXIgcmVzdW1lLCBzaW5jZSBhbGwgcmVzdW1lIGhhbmRsaW5nIGlzIGluIHRoZSBmdWxsCisJICAgIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBkcml2ZXIuIFRoZSBjb21tb24gbW9kZSBzZXR0aW5nIGhlbHBlciBsaWJyYXJ5CisJICAgIHRob3VnaCBwcm92aWRlcyBhIGhlbHBlciB3aGljaCBjYW4gYmUgdXNlZCBmb3IgdGhpczoKKwkgICAgPGZ1bmN0aW9uPmRybV9oZWxwZXJfcmVzdW1lX2ZvcmNlX21vZGU8L2Z1bmN0aW9uPi4KKyAgICAgICAgICA8L3BhcmE+PC9ub3RlPgorICAgICAgICA8L3NlY3Q0PgorICAgICAgICA8c2VjdDQ+CisgICAgICAgICAgPHRpdGxlPlBhZ2UgRmxpcHBpbmc8L3RpdGxlPgorICAgICAgICAgIDxzeW5vcHNpcz5pbnQgKCpwYWdlX2ZsaXApKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCisgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqZXZlbnQpOzwvc3lub3BzaXM+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTY2hlZHVsZSBhIHBhZ2UgZmxpcCB0byB0aGUgZ2l2ZW4gZnJhbWUgYnVmZmVyIGZvciB0aGUgQ1JUQy4gVGhpcworICAgICAgICAgICAgb3BlcmF0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZSBtb2RlIGNvbmZpZyBtdXRleCBoZWxkLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFBhZ2UgZmxpcHBpbmcgaXMgYSBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtIHRoYXQgcmVwbGFjZXMgdGhlIGZyYW1lCisgICAgICAgICAgICBidWZmZXIgYmVpbmcgc2Nhbm5lZCBvdXQgYnkgdGhlIENSVEMgd2l0aCBhIG5ldyBmcmFtZSBidWZmZXIgZHVyaW5nCisgICAgICAgICAgICB2ZXJ0aWNhbCBibGFua2luZywgYXZvaWRpbmcgdGVhcmluZy4gV2hlbiBhbiBhcHBsaWNhdGlvbiByZXF1ZXN0cyBhIHBhZ2UKKyAgICAgICAgICAgIGZsaXAgdGhlIERSTSBjb3JlIHZlcmlmaWVzIHRoYXQgdGhlIG5ldyBmcmFtZSBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoIHRvCisgICAgICAgICAgICBiZSBzY2FubmVkIG91dCBieSAgdGhlIENSVEMgaW4gdGhlIGN1cnJlbnRseSBjb25maWd1cmVkIG1vZGUgYW5kIHRoZW4KKyAgICAgICAgICAgIGNhbGxzIHRoZSBDUlRDIDxtZXRob2RuYW1lPnBhZ2VfZmxpcDwvbWV0aG9kbmFtZT4gb3BlcmF0aW9uIHdpdGggYQorICAgICAgICAgICAgcG9pbnRlciB0byB0aGUgbmV3IGZyYW1lIGJ1ZmZlci4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPG1ldGhvZG5hbWU+cGFnZV9mbGlwPC9tZXRob2RuYW1lPiBvcGVyYXRpb24gc2NoZWR1bGVzIGEgcGFnZSBmbGlwLgorICAgICAgICAgICAgT25jZSBhbnkgcGVuZGluZyByZW5kZXJpbmcgdGFyZ2V0aW5nIHRoZSBuZXcgZnJhbWUgYnVmZmVyIGhhcworICAgICAgICAgICAgY29tcGxldGVkLCB0aGUgQ1JUQyB3aWxsIGJlIHJlcHJvZ3JhbW1lZCB0byBkaXNwbGF5IHRoYXQgZnJhbWUgYnVmZmVyCisgICAgICAgICAgICBhZnRlciB0aGUgbmV4dCB2ZXJ0aWNhbCByZWZyZXNoLiBUaGUgb3BlcmF0aW9uIG11c3QgcmV0dXJuIGltbWVkaWF0ZWx5CisgICAgICAgICAgICB3aXRob3V0IHdhaXRpbmcgZm9yIHJlbmRlcmluZyBvciBwYWdlIGZsaXAgdG8gY29tcGxldGUgYW5kIG11c3QgYmxvY2sKKyAgICAgICAgICAgIGFueSBuZXcgcmVuZGVyaW5nIHRvIHRoZSBmcmFtZSBidWZmZXIgdW50aWwgdGhlIHBhZ2UgZmxpcCBjb21wbGV0ZXMuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSWYgYSBwYWdlIGZsaXAgY2FuIGJlIHN1Y2Nlc3NmdWxseSBzY2hlZHVsZWQgdGhlIGRyaXZlciBtdXN0IHNldCB0aGUKKyAgICAgICAgICAgIDxjb2RlPmRybV9jcnRjLSZndDtmYjwvY29kZT4gZmllbGQgdG8gdGhlIG5ldyBmcmFtZWJ1ZmZlciBwb2ludGVkIHRvCisgICAgICAgICAgICBieSA8Y29kZT5mYjwvY29kZT4uIFRoaXMgaXMgaW1wb3J0YW50IHNvIHRoYXQgdGhlIHJlZmVyZW5jZSBjb3VudGluZworICAgICAgICAgICAgb24gZnJhbWVidWZmZXJzIHN0YXlzIGJhbGFuY2VkLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIGEgcGFnZSBmbGlwIGlzIGFscmVhZHkgcGVuZGluZywgdGhlCisgICAgICAgICAgICA8bWV0aG9kbmFtZT5wYWdlX2ZsaXA8L21ldGhvZG5hbWU+IG9wZXJhdGlvbiBtdXN0IHJldHVybgorICAgICAgICAgICAgLTxlcnJvcm5hbWU+RUJVU1k8L2Vycm9ybmFtZT4uCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVG8gc3luY2hyb25pemUgcGFnZSBmbGlwIHRvIHZlcnRpY2FsIGJsYW5raW5nIHRoZSBkcml2ZXIgd2lsbCBsaWtlbHkKKyAgICAgICAgICAgIG5lZWQgdG8gZW5hYmxlIHZlcnRpY2FsIGJsYW5raW5nIGludGVycnVwdHMuIEl0IHNob3VsZCBjYWxsCisgICAgICAgICAgICA8ZnVuY3Rpb24+ZHJtX3ZibGFua19nZXQ8L2Z1bmN0aW9uPiBmb3IgdGhhdCBwdXJwb3NlLCBhbmQgY2FsbAorICAgICAgICAgICAgPGZ1bmN0aW9uPmRybV92YmxhbmtfcHV0PC9mdW5jdGlvbj4gYWZ0ZXIgdGhlIHBhZ2UgZmxpcCBjb21wbGV0ZXMuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSWYgdGhlIGFwcGxpY2F0aW9uIGhhcyByZXF1ZXN0ZWQgdG8gYmUgbm90aWZpZWQgd2hlbiBwYWdlIGZsaXAgY29tcGxldGVzCisgICAgICAgICAgICB0aGUgPG1ldGhvZG5hbWU+cGFnZV9mbGlwPC9tZXRob2RuYW1lPiBvcGVyYXRpb24gd2lsbCBiZSBjYWxsZWQgd2l0aCBhCisgICAgICAgICAgICBub24tTlVMTCA8cGFyYW1ldGVyPmV2ZW50PC9wYXJhbWV0ZXI+IGFyZ3VtZW50IHBvaW50aW5nIHRvIGEKKyAgICAgICAgICAgIDxzdHJ1Y3RuYW1lPmRybV9wZW5kaW5nX3ZibGFua19ldmVudDwvc3RydWN0bmFtZT4gaW5zdGFuY2UuIFVwb24gcGFnZQorICAgICAgICAgICAgZmxpcCBjb21wbGV0aW9uIHRoZSBkcml2ZXIgbXVzdCBjYWxsIDxtZXRob2RuYW1lPmRybV9zZW5kX3ZibGFua19ldmVudDwvbWV0aG9kbmFtZT4KKyAgICAgICAgICAgIHRvIGZpbGwgaW4gdGhlIGV2ZW50IGFuZCBzZW5kIHRvIHdha2UgdXAgYW55IHdhaXRpbmcgcHJvY2Vzc2VzLgorICAgICAgICAgICAgVGhpcyBjYW4gYmUgcGVyZm9ybWVkIHdpdGgKKyAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz48IVtDREFUQVsKKyAgICAgICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKKyAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgZHJtX3NlbmRfdmJsYW5rX2V2ZW50KGRldiwgcGlwZSwgZXZlbnQpOworICAgICAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7CisgICAgICAgICAgICBdXT48L3Byb2dyYW1saXN0aW5nPgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8bm90ZT48cGFyYT4KKyAgICAgICAgICAgIEZJWE1FOiBDb3VsZCBkcml2ZXJzIHRoYXQgZG9uJ3QgbmVlZCB0byB3YWl0IGZvciByZW5kZXJpbmcgdG8gY29tcGxldGUKKyAgICAgICAgICAgIGp1c3QgYWRkIHRoZSBldmVudCB0byA8bGl0ZXJhbD5kZXYtJmd0O3ZibGFua19ldmVudF9saXN0PC9saXRlcmFsPiBhbmQKKyAgICAgICAgICAgIGxldCB0aGUgRFJNIGNvcmUgaGFuZGxlIGV2ZXJ5dGhpbmcsIGFzIGZvciAibm9ybWFsIiB2ZXJ0aWNhbCBibGFua2luZworICAgICAgICAgICAgZXZlbnRzPworICAgICAgICAgIDwvcGFyYT48L25vdGU+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGlsZSB3YWl0aW5nIGZvciB0aGUgcGFnZSBmbGlwIHRvIGNvbXBsZXRlLCB0aGUKKyAgICAgICAgICAgIDxsaXRlcmFsPmV2ZW50LSZndDtiYXNlLmxpbms8L2xpdGVyYWw+IGxpc3QgaGVhZCBjYW4gYmUgdXNlZCBmcmVlbHkgYnkKKyAgICAgICAgICAgIHRoZSBkcml2ZXIgdG8gc3RvcmUgdGhlIHBlbmRpbmcgZXZlbnQgaW4gYSBkcml2ZXItc3BlY2lmaWMgbGlzdC4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiB0aGUgZmlsZSBoYW5kbGUgaXMgY2xvc2VkIGJlZm9yZSB0aGUgZXZlbnQgaXMgc2lnbmFsZWQsIGRyaXZlcnMgbXVzdAorICAgICAgICAgICAgdGFrZSBjYXJlIHRvIGRlc3Ryb3kgdGhlIGV2ZW50IGluIHRoZWlyCisgICAgICAgICAgICA8bWV0aG9kbmFtZT5wcmVjbG9zZTwvbWV0aG9kbmFtZT4gb3BlcmF0aW9uIChhbmQsIGlmIG5lZWRlZCwgY2FsbAorICAgICAgICAgICAgPGZ1bmN0aW9uPmRybV92YmxhbmtfcHV0PC9mdW5jdGlvbj4pLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0ND4KKyAgICAgICAgPHNlY3Q0PgorICAgICAgICAgIDx0aXRsZT5NaXNjZWxsYW5lb3VzPC90aXRsZT4KKyAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICA8c3lub3BzaXM+dm9pZCAoKnNldF9wcm9wZXJ0eSkoc3RydWN0IGRybV9jcnRjICpjcnRjLAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcGVydHksIHVpbnQ2NF90IHZhbHVlKTs8L3N5bm9wc2lzPgorICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBTZXQgdGhlIHZhbHVlIG9mIHRoZSBnaXZlbiBDUlRDIHByb3BlcnR5IHRvCisgICAgICAgICAgICAgICAgPHBhcmFtZXRlcj52YWx1ZTwvcGFyYW1ldGVyPi4gU2VlIDx4cmVmIGxpbmtlbmQ9ImRybS1rbXMtcHJvcGVydGllcyIvPgorICAgICAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHByb3BlcnRpZXMuCisgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgIDxzeW5vcHNpcz52b2lkICgqZ2FtbWFfc2V0KShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHUxNiAqciwgdTE2ICpnLCB1MTYgKmIsCisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzdGFydCwgdWludDMyX3Qgc2l6ZSk7PC9zeW5vcHNpcz4KKyAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgQXBwbHkgYSBnYW1tYSB0YWJsZSB0byB0aGUgZGV2aWNlLiBUaGUgb3BlcmF0aW9uIGlzIG9wdGlvbmFsLgorICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICA8c3lub3BzaXM+dm9pZCAoKmRlc3Ryb3kpKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7PC9zeW5vcHNpcz4KKyAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRGVzdHJveSB0aGUgQ1JUQyB3aGVuIG5vdCBuZWVkZWQgYW55bW9yZS4gU2VlCisgICAgICAgICAgICAgICAgPHhyZWYgbGlua2VuZD0iZHJtLWttcy1pbml0Ii8+LgorICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3NlY3Q0PgorICAgICAgPC9zZWN0Mz4KKyAgICA8L3NlY3QyPgorICAgIDxzZWN0Mj4KKyAgICAgIDx0aXRsZT5QbGFuZXMgKHN0cnVjdCA8c3RydWN0bmFtZT5kcm1fcGxhbmU8L3N0cnVjdG5hbWU+KTwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgQSBwbGFuZSByZXByZXNlbnRzIGFuIGltYWdlIHNvdXJjZSB0aGF0IGNhbiBiZSBibGVuZGVkIHdpdGggb3Igb3ZlcmxheWVkCisJb24gdG9wIG9mIGEgQ1JUQyBkdXJpbmcgdGhlIHNjYW5vdXQgcHJvY2Vzcy4gUGxhbmVzIGFyZSBhc3NvY2lhdGVkIHdpdGgKKwlhIGZyYW1lIGJ1ZmZlciB0byBjcm9wIGEgcG9ydGlvbiBvZiB0aGUgaW1hZ2UgbWVtb3J5IChzb3VyY2UpIGFuZAorCW9wdGlvbmFsbHkgc2NhbGUgaXQgdG8gYSBkZXN0aW5hdGlvbiBzaXplLiBUaGUgcmVzdWx0IGlzIHRoZW4gYmxlbmRlZAorCXdpdGggb3Igb3ZlcmxheWVkIG9uIHRvcCBvZiBhIENSVEMuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgIFRoZSBEUk0gY29yZSByZWNvZ25pemVzIHRocmVlIHR5cGVzIG9mIHBsYW5lczoKKyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSByZXByZXNlbnRzIGEgIm1haW4iIHBsYW5lIGZvciBhIENSVEMuICBQcmltYXJ5CisgICAgICAgIHBsYW5lcyBhcmUgdGhlIHBsYW5lcyBvcGVyYXRlZCB1cG9uIGJ5IENSVEMgbW9kZXNldHRpbmcgYW5kIGZsaXBwaW5nCisgICAgICAgIG9wZXJhdGlvbnMgZGVzY3JpYmVkIGluIDx4cmVmIGxpbmtlbmQ9ImRybS1rbXMtY3J0Y29wcyIvPi4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICBEUk1fUExBTkVfVFlQRV9DVVJTT1IgcmVwcmVzZW50cyBhICJjdXJzb3IiIHBsYW5lIGZvciBhIENSVEMuICBDdXJzb3IKKyAgICAgICAgcGxhbmVzIGFyZSB0aGUgcGxhbmVzIG9wZXJhdGVkIHVwb24gYnkgdGhlIERSTV9JT0NUTF9NT0RFX0NVUlNPUiBhbmQKKyAgICAgICAgRFJNX0lPQ1RMX01PREVfQ1VSU09SMiBpb2N0bHMuCisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSByZXByZXNlbnRzIGFsbCBub24tcHJpbWFyeSwgbm9uLWN1cnNvciBwbGFuZXMuCisgICAgICAgIFNvbWUgZHJpdmVycyByZWZlciB0byB0aGVzZSB0eXBlcyBvZiBwbGFuZXMgYXMgInNwcml0ZXMiIGludGVybmFsbHkuCisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgIEZvciBjb21wYXRpYmlsaXR5IHdpdGggbGVnYWN5IHVzZXJzcGFjZSwgb25seSBvdmVybGF5IHBsYW5lcyBhcmUgbWFkZQorICAgICAgYXZhaWxhYmxlIHRvIHVzZXJzcGFjZSBieSBkZWZhdWx0LiAgVXNlcnNwYWNlIGNsaWVudHMgbWF5IHNldCB0aGUKKyAgICAgIERSTV9DTElFTlRfQ0FQX1VOSVZFUlNBTF9QTEFORVMgY2xpZW50IGNhcGFiaWxpdHkgYml0IHRvIGluZGljYXRlIHRoYXQKKyAgICAgIHRoZXkgd2lzaCB0byByZWNlaXZlIGEgdW5pdmVyc2FsIHBsYW5lIGxpc3QgY29udGFpbmluZyBhbGwgcGxhbmUgdHlwZXMuCisgICAgICA8L3BhcmE+CisgICAgICA8c2VjdDM+CisgICAgICAgIDx0aXRsZT5QbGFuZSBJbml0aWFsaXphdGlvbjwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRvIGNyZWF0ZSBhIHBsYW5lLCBhIEtNUyBkcml2ZXJzIGFsbG9jYXRlcyBhbmQKKyAgICAgICAgICB6ZXJvZXMgYW4gaW5zdGFuY2VzIG9mIHN0cnVjdCA8c3RydWN0bmFtZT5kcm1fcGxhbmU8L3N0cnVjdG5hbWU+CisgICAgICAgICAgKHBvc3NpYmx5IGFzIHBhcnQgb2YgYSBsYXJnZXIgc3RydWN0dXJlKSBhbmQgcmVnaXN0ZXJzIGl0IHdpdGggYSBjYWxsCisgICAgICAgICAgdG8gPGZ1bmN0aW9uPmRybV91bml2ZXJzYWxfcGxhbmVfaW5pdDwvZnVuY3Rpb24+LiBUaGUgZnVuY3Rpb24gdGFrZXMgYSBiaXRtYXNrCisgICAgICAgICAgb2YgdGhlIENSVENzIHRoYXQgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGxhbmUsIGEgcG9pbnRlciB0byB0aGUKKyAgICAgICAgICBwbGFuZSBmdW5jdGlvbnMsIGEgbGlzdCBvZiBmb3JtYXQgc3VwcG9ydGVkIGZvcm1hdHMsIGFuZCB0aGUgdHlwZSBvZgorICAgICAgICAgIHBsYW5lIChwcmltYXJ5LCBjdXJzb3IsIG9yIG92ZXJsYXkpIGJlaW5nIGluaXRpYWxpemVkLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEN1cnNvciBhbmQgb3ZlcmxheSBwbGFuZXMgYXJlIG9wdGlvbmFsLiAgQWxsIGRyaXZlcnMgc2hvdWxkIHByb3ZpZGUKKyAgICAgICAgICBvbmUgcHJpbWFyeSBwbGFuZSBwZXIgQ1JUQyAoYWx0aG91Z2ggdGhpcyByZXF1aXJlbWVudCBtYXkgY2hhbmdlIGluCisgICAgICAgICAgdGhlIGZ1dHVyZSk7IGRyaXZlcnMgdGhhdCBkbyBub3Qgd2lzaCB0byBwcm92aWRlIHNwZWNpYWwgaGFuZGxpbmcgZm9yCisgICAgICAgICAgcHJpbWFyeSBwbGFuZXMgbWF5IG1ha2UgdXNlIG9mIHRoZSBoZWxwZXIgZnVuY3Rpb25zIGRlc2NyaWJlZCBpbgorICAgICAgICAgIDx4cmVmIGxpbmtlbmQ9ImRybS1rbXMtcGxhbmVoZWxwZXJzIi8+IHRvIGNyZWF0ZSBhbmQgcmVnaXN0ZXIgYQorICAgICAgICAgIHByaW1hcnkgcGxhbmUgd2l0aCBzdGFuZGFyZCBjYXBhYmlsaXRpZXMuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdDM+CisgICAgICA8c2VjdDM+CisgICAgICAgIDx0aXRsZT5QbGFuZSBPcGVyYXRpb25zPC90aXRsZT4KKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8c3lub3BzaXM+aW50ICgqdXBkYXRlX3BsYW5lKShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGludCBjcnRjX3gsIGludCBjcnRjX3ksCisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY3J0Y193LCB1bnNpZ25lZCBpbnQgY3J0Y19oLAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3JjX3gsIHVpbnQzMl90IHNyY195LAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3JjX3csIHVpbnQzMl90IHNyY19oKTs8L3N5bm9wc2lzPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIEVuYWJsZSBhbmQgY29uZmlndXJlIHRoZSBwbGFuZSB0byB1c2UgdGhlIGdpdmVuIENSVEMgYW5kIGZyYW1lIGJ1ZmZlci4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBUaGUgc291cmNlIHJlY3RhbmdsZSBpbiBmcmFtZSBidWZmZXIgbWVtb3J5IGNvb3JkaW5hdGVzIGlzIGdpdmVuIGJ5CisgICAgICAgICAgICAgIHRoZSA8cGFyYW1ldGVyPnNyY194PC9wYXJhbWV0ZXI+LCA8cGFyYW1ldGVyPnNyY195PC9wYXJhbWV0ZXI+LAorICAgICAgICAgICAgICA8cGFyYW1ldGVyPnNyY193PC9wYXJhbWV0ZXI+IGFuZCA8cGFyYW1ldGVyPnNyY19oPC9wYXJhbWV0ZXI+CisgICAgICAgICAgICAgIHBhcmFtZXRlcnMgKGFzIDE2LjE2IGZpeGVkIHBvaW50IHZhbHVlcykuIERldmljZXMgdGhhdCBkb24ndCBzdXBwb3J0CisgICAgICAgICAgICAgIHN1YnBpeGVsIHBsYW5lIGNvb3JkaW5hdGVzIGNhbiBpZ25vcmUgdGhlIGZyYWN0aW9uYWwgcGFydC4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBUaGUgZGVzdGluYXRpb24gcmVjdGFuZ2xlIGluIENSVEMgY29vcmRpbmF0ZXMgaXMgZ2l2ZW4gYnkgdGhlCisgICAgICAgICAgICAgIDxwYXJhbWV0ZXI+Y3J0Y194PC9wYXJhbWV0ZXI+LCA8cGFyYW1ldGVyPmNydGNfeTwvcGFyYW1ldGVyPiwKKyAgICAgICAgICAgICAgPHBhcmFtZXRlcj5jcnRjX3c8L3BhcmFtZXRlcj4gYW5kIDxwYXJhbWV0ZXI+Y3J0Y19oPC9wYXJhbWV0ZXI+CisgICAgICAgICAgICAgIHBhcmFtZXRlcnMgKGFzIGludGVnZXIgdmFsdWVzKS4gRGV2aWNlcyBzY2FsZSB0aGUgc291cmNlIHJlY3RhbmdsZSB0bworICAgICAgICAgICAgICB0aGUgZGVzdGluYXRpb24gcmVjdGFuZ2xlLiBJZiBzY2FsaW5nIGlzIG5vdCBzdXBwb3J0ZWQsIGFuZCB0aGUgc291cmNlCisgICAgICAgICAgICAgIHJlY3RhbmdsZSBzaXplIGRvZXNuJ3QgbWF0Y2ggdGhlIGRlc3RpbmF0aW9uIHJlY3RhbmdsZSBzaXplLCB0aGUKKyAgICAgICAgICAgICAgZHJpdmVyIG11c3QgcmV0dXJuIGEgLTxlcnJvcm5hbWU+RUlOVkFMPC9lcnJvcm5hbWU+IGVycm9yLgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHN5bm9wc2lzPmludCAoKmRpc2FibGVfcGxhbmUpKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKTs8L3N5bm9wc2lzPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIERpc2FibGUgdGhlIHBsYW5lLiBUaGUgRFJNIGNvcmUgY2FsbHMgdGhpcyBtZXRob2QgaW4gcmVzcG9uc2UgdG8gYQorICAgICAgICAgICAgICBEUk1fSU9DVExfTU9ERV9TRVRQTEFORSBpb2N0bCBjYWxsIHdpdGggdGhlIGZyYW1lIGJ1ZmZlciBJRCBzZXQgdG8gMC4KKyAgICAgICAgICAgICAgRGlzYWJsZWQgcGxhbmVzIG11c3Qgbm90IGJlIHByb2Nlc3NlZCBieSB0aGUgQ1JUQy4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxzeW5vcHNpcz52b2lkICgqZGVzdHJveSkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpOzwvc3lub3BzaXM+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgRGVzdHJveSB0aGUgcGxhbmUgd2hlbiBub3QgbmVlZGVkIGFueW1vcmUuIFNlZQorICAgICAgICAgICAgICA8eHJlZiBsaW5rZW5kPSJkcm0ta21zLWluaXQiLz4uCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICA8L3NlY3QzPgorICAgIDwvc2VjdDI+CisgICAgPHNlY3QyPgorICAgICAgPHRpdGxlPkVuY29kZXJzIChzdHJ1Y3QgPHN0cnVjdG5hbWU+ZHJtX2VuY29kZXI8L3N0cnVjdG5hbWU+KTwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgQW4gZW5jb2RlciB0YWtlcyBwaXhlbCBkYXRhIGZyb20gYSBDUlRDIGFuZCBjb252ZXJ0cyBpdCB0byBhIGZvcm1hdAorCXN1aXRhYmxlIGZvciBhbnkgYXR0YWNoZWQgY29ubmVjdG9ycy4gT24gc29tZSBkZXZpY2VzLCBpdCBtYXkgYmUKKwlwb3NzaWJsZSB0byBoYXZlIGEgQ1JUQyBzZW5kIGRhdGEgdG8gbW9yZSB0aGFuIG9uZSBlbmNvZGVyLiBJbiB0aGF0CisJY2FzZSwgYm90aCBlbmNvZGVycyB3b3VsZCByZWNlaXZlIGRhdGEgZnJvbSB0aGUgc2FtZSBzY2Fub3V0IGJ1ZmZlciwKKwlyZXN1bHRpbmcgaW4gYSAiY2xvbmVkIiBkaXNwbGF5IGNvbmZpZ3VyYXRpb24gYWNyb3NzIHRoZSBjb25uZWN0b3JzCisJYXR0YWNoZWQgdG8gZWFjaCBlbmNvZGVyLgorICAgICAgPC9wYXJhPgorICAgICAgPHNlY3QzPgorICAgICAgICA8dGl0bGU+RW5jb2RlciBJbml0aWFsaXphdGlvbjwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEFzIGZvciBDUlRDcywgYSBLTVMgZHJpdmVyIG11c3QgY3JlYXRlLCBpbml0aWFsaXplIGFuZCByZWdpc3RlciBhdAorICAgICAgICAgIGxlYXN0IG9uZSBzdHJ1Y3QgPHN0cnVjdG5hbWU+ZHJtX2VuY29kZXI8L3N0cnVjdG5hbWU+IGluc3RhbmNlLiBUaGUKKyAgICAgICAgICBpbnN0YW5jZSBpcyBhbGxvY2F0ZWQgYW5kIHplcm9lZCBieSB0aGUgZHJpdmVyLCBwb3NzaWJseSBhcyBwYXJ0IG9mIGEKKyAgICAgICAgICBsYXJnZXIgc3RydWN0dXJlLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIERyaXZlcnMgbXVzdCBpbml0aWFsaXplIHRoZSBzdHJ1Y3QgPHN0cnVjdG5hbWU+ZHJtX2VuY29kZXI8L3N0cnVjdG5hbWU+CisgICAgICAgICAgPHN0cnVjdGZpZWxkPnBvc3NpYmxlX2NydGNzPC9zdHJ1Y3RmaWVsZD4gYW5kCisgICAgICAgICAgPHN0cnVjdGZpZWxkPnBvc3NpYmxlX2Nsb25lczwvc3RydWN0ZmllbGQ+IGZpZWxkcyBiZWZvcmUgcmVnaXN0ZXJpbmcgdGhlCisgICAgICAgICAgZW5jb2Rlci4gQm90aCBmaWVsZHMgYXJlIGJpdG1hc2tzIG9mIHJlc3BlY3RpdmVseSB0aGUgQ1JUQ3MgdGhhdCB0aGUKKyAgICAgICAgICBlbmNvZGVyIGNhbiBiZSBjb25uZWN0ZWQgdG8sIGFuZCBzaWJsaW5nIGVuY29kZXJzIGNhbmRpZGF0ZSBmb3IgY2xvbmluZy4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBBZnRlciBiZWluZyBpbml0aWFsaXplZCwgdGhlIGVuY29kZXIgbXVzdCBiZSByZWdpc3RlcmVkIHdpdGggYSBjYWxsIHRvCisgICAgICAgICAgPGZ1bmN0aW9uPmRybV9lbmNvZGVyX2luaXQ8L2Z1bmN0aW9uPi4gVGhlIGZ1bmN0aW9uIHRha2VzIGEgcG9pbnRlciB0bworICAgICAgICAgIHRoZSBlbmNvZGVyIGZ1bmN0aW9ucyBhbmQgYW4gZW5jb2RlciB0eXBlLiBTdXBwb3J0ZWQgdHlwZXMgYXJlCisgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgRFJNX01PREVfRU5DT0RFUl9EQUMgZm9yIFZHQSBhbmQgYW5hbG9nIG9uIERWSS1JL0RWSS1BCisgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgIERSTV9NT0RFX0VOQ09ERVJfVE1EUyBmb3IgRFZJLCBIRE1JIGFuZCAoZW1iZWRkZWQpIERpc3BsYXlQb3J0CisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICBEUk1fTU9ERV9FTkNPREVSX0xWRFMgZm9yIGRpc3BsYXkgcGFuZWxzCisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICBEUk1fTU9ERV9FTkNPREVSX1RWREFDIGZvciBUViBvdXRwdXQgKENvbXBvc2l0ZSwgUy1WaWRlbywgQ29tcG9uZW50LAorICAgICAgICAgICAgICBTQ0FSVCkKKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgIERSTV9NT0RFX0VOQ09ERVJfVklSVFVBTCBmb3IgdmlydHVhbCBtYWNoaW5lIGRpc3BsYXlzCisgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEVuY29kZXJzIG11c3QgYmUgYXR0YWNoZWQgdG8gYSBDUlRDIHRvIGJlIHVzZWQuIERSTSBkcml2ZXJzIGxlYXZlCisgICAgICAgICAgZW5jb2RlcnMgdW5hdHRhY2hlZCBhdCBpbml0aWFsaXphdGlvbiB0aW1lLiBBcHBsaWNhdGlvbnMgKG9yIHRoZSBmYmRldgorICAgICAgICAgIGNvbXBhdGliaWxpdHkgbGF5ZXIgd2hlbiBpbXBsZW1lbnRlZCkgYXJlIHJlc3BvbnNpYmxlIGZvciBhdHRhY2hpbmcgdGhlCisgICAgICAgICAgZW5jb2RlcnMgdGhleSB3YW50IHRvIHVzZSB0byBhIENSVEMuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdDM+CisgICAgICA8c2VjdDM+CisgICAgICAgIDx0aXRsZT5FbmNvZGVyIE9wZXJhdGlvbnM8L3RpdGxlPgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxzeW5vcHNpcz52b2lkICgqZGVzdHJveSkoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTs8L3N5bm9wc2lzPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIENhbGxlZCB0byBkZXN0cm95IHRoZSBlbmNvZGVyIHdoZW4gbm90IG5lZWRlZCBhbnltb3JlLiBTZWUKKyAgICAgICAgICAgICAgPHhyZWYgbGlua2VuZD0iZHJtLWttcy1pbml0Ii8+LgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHN5bm9wc2lzPnZvaWQgKCpzZXRfcHJvcGVydHkpKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcGVydHksIHVpbnQ2NF90IHZhbHVlKTs8L3N5bm9wc2lzPgorICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgIFNldCB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIHBsYW5lIHByb3BlcnR5IHRvCisgICAgICAgICAgICAgIDxwYXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4uIFNlZSA8eHJlZiBsaW5rZW5kPSJkcm0ta21zLXByb3BlcnRpZXMiLz4KKyAgICAgICAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgcHJvcGVydGllcy4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgIDwvc2VjdDM+CisgICAgPC9zZWN0Mj4KKyAgICA8c2VjdDI+CisgICAgICA8dGl0bGU+Q29ubmVjdG9ycyAoc3RydWN0IDxzdHJ1Y3RuYW1lPmRybV9jb25uZWN0b3I8L3N0cnVjdG5hbWU+KTwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgQSBjb25uZWN0b3IgaXMgdGhlIGZpbmFsIGRlc3RpbmF0aW9uIGZvciBwaXhlbCBkYXRhIG9uIGEgZGV2aWNlLCBhbmQKKwl1c3VhbGx5IGNvbm5lY3RzIGRpcmVjdGx5IHRvIGFuIGV4dGVybmFsIGRpc3BsYXkgZGV2aWNlIGxpa2UgYSBtb25pdG9yCisJb3IgbGFwdG9wIHBhbmVsLiBBIGNvbm5lY3RvciBjYW4gb25seSBiZSBhdHRhY2hlZCB0byBvbmUgZW5jb2RlciBhdCBhCisJdGltZS4gVGhlIGNvbm5lY3RvciBpcyBhbHNvIHRoZSBzdHJ1Y3R1cmUgd2hlcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlCisJYXR0YWNoZWQgZGlzcGxheSBpcyBrZXB0LCBzbyBpdCBjb250YWlucyBmaWVsZHMgZm9yIGRpc3BsYXkgZGF0YSwgRURJRAorCWRhdGEsIERQTVMgJmFtcDsgY29ubmVjdGlvbiBzdGF0dXMsIGFuZCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlcworCXN1cHBvcnRlZCBvbiB0aGUgYXR0YWNoZWQgZGlzcGxheXMuCisgICAgICA8L3BhcmE+CisgICAgICA8c2VjdDM+CisgICAgICAgIDx0aXRsZT5Db25uZWN0b3IgSW5pdGlhbGl6YXRpb248L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBGaW5hbGx5IGEgS01TIGRyaXZlciBtdXN0IGNyZWF0ZSwgaW5pdGlhbGl6ZSwgcmVnaXN0ZXIgYW5kIGF0dGFjaCBhdAorICAgICAgICAgIGxlYXN0IG9uZSBzdHJ1Y3QgPHN0cnVjdG5hbWU+ZHJtX2Nvbm5lY3Rvcjwvc3RydWN0bmFtZT4gaW5zdGFuY2UuIFRoZQorICAgICAgICAgIGluc3RhbmNlIGlzIGNyZWF0ZWQgYXMgb3RoZXIgS01TIG9iamVjdHMgYW5kIGluaXRpYWxpemVkIGJ5IHNldHRpbmcgdGhlCisgICAgICAgICAgZm9sbG93aW5nIGZpZWxkcy4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8dGVybT48c3RydWN0ZmllbGQ+aW50ZXJsYWNlX2FsbG93ZWQ8L3N0cnVjdGZpZWxkPjwvdGVybT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgV2hldGhlciB0aGUgY29ubmVjdG9yIGNhbiBoYW5kbGUgaW50ZXJsYWNlZCBtb2Rlcy4KKyAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8dGVybT48c3RydWN0ZmllbGQ+ZG91Ymxlc2Nhbl9hbGxvd2VkPC9zdHJ1Y3RmaWVsZD48L3Rlcm0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgIFdoZXRoZXIgdGhlIGNvbm5lY3RvciBjYW4gaGFuZGxlIGRvdWJsZXNjYW4uCisgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgPHRlcm0+PHN0cnVjdGZpZWxkPmRpc3BsYXlfaW5mbworICAgICAgICAgICAgPC9zdHJ1Y3RmaWVsZD48L3Rlcm0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgIERpc3BsYXkgaW5mb3JtYXRpb24gaXMgZmlsbGVkIGZyb20gRURJRCBpbmZvcm1hdGlvbiB3aGVuIGEgZGlzcGxheQorICAgICAgICAgICAgICBpcyBkZXRlY3RlZC4gRm9yIG5vbiBob3QtcGx1Z2dhYmxlIGRpc3BsYXlzIHN1Y2ggYXMgZmxhdCBwYW5lbHMgaW4KKyAgICAgICAgICAgICAgZW1iZWRkZWQgc3lzdGVtcywgdGhlIGRyaXZlciBzaG91bGQgaW5pdGlhbGl6ZSB0aGUKKyAgICAgICAgICAgICAgPHN0cnVjdGZpZWxkPmRpc3BsYXlfaW5mbzwvc3RydWN0ZmllbGQ+LjxzdHJ1Y3RmaWVsZD53aWR0aF9tbTwvc3RydWN0ZmllbGQ+CisgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICA8c3RydWN0ZmllbGQ+ZGlzcGxheV9pbmZvPC9zdHJ1Y3RmaWVsZD4uPHN0cnVjdGZpZWxkPmhlaWdodF9tbTwvc3RydWN0ZmllbGQ+CisgICAgICAgICAgICAgIGZpZWxkcyB3aXRoIHRoZSBwaHlzaWNhbCBzaXplIG9mIHRoZSBkaXNwbGF5LgorICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgIDx0ZXJtIGlkPSJkcm0ta21zLWNvbm5lY3Rvci1wb2xsZWQiPjxzdHJ1Y3RmaWVsZD5wb2xsZWQ8L3N0cnVjdGZpZWxkPjwvdGVybT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgQ29ubmVjdG9yIHBvbGxpbmcgbW9kZSwgYSBjb21iaW5hdGlvbiBvZgorICAgICAgICAgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgICAgICA8dGVybT5EUk1fQ09OTkVDVE9SX1BPTExfSFBEPC90ZXJtPgorICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgY29ubmVjdG9yIGdlbmVyYXRlcyBob3RwbHVnIGV2ZW50cyBhbmQgZG9lc24ndCBuZWVkIHRvIGJlCisgICAgICAgICAgICAgICAgICAgIHBlcmlvZGljYWxseSBwb2xsZWQuIFRoZSBDT05ORUNUIGFuZCBESVNDT05ORUNUIGZsYWdzIG11c3Qgbm90CisgICAgICAgICAgICAgICAgICAgIGJlIHNldCB0b2dldGhlciB3aXRoIHRoZSBIUEQgZmxhZy4KKyAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgICAgICA8dGVybT5EUk1fQ09OTkVDVE9SX1BPTExfQ09OTkVDVDwvdGVybT4KKyAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUGVyaW9kaWNhbGx5IHBvbGwgdGhlIGNvbm5lY3RvciBmb3IgY29ubmVjdGlvbi4KKyAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgICAgICA8dGVybT5EUk1fQ09OTkVDVE9SX1BPTExfRElTQ09OTkVDVDwvdGVybT4KKyAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgUGVyaW9kaWNhbGx5IHBvbGwgdGhlIGNvbm5lY3RvciBmb3IgZGlzY29ubmVjdGlvbi4KKyAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICAgICAgICAgICAgU2V0IHRvIDAgZm9yIGNvbm5lY3RvcnMgdGhhdCBkb24ndCBzdXBwb3J0IGNvbm5lY3Rpb24gc3RhdHVzCisgICAgICAgICAgICAgIGRpc2NvdmVyeS4KKyAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIGNvbm5lY3RvciBpcyB0aGVuIHJlZ2lzdGVyZWQgd2l0aCBhIGNhbGwgdG8KKyAgICAgICAgICA8ZnVuY3Rpb24+ZHJtX2Nvbm5lY3Rvcl9pbml0PC9mdW5jdGlvbj4gd2l0aCBhIHBvaW50ZXIgdG8gdGhlIGNvbm5lY3RvcgorICAgICAgICAgIGZ1bmN0aW9ucyBhbmQgYSBjb25uZWN0b3IgdHlwZSwgYW5kIGV4cG9zZWQgdGhyb3VnaCBzeXNmcyB3aXRoIGEgY2FsbCB0bworICAgICAgICAgIDxmdW5jdGlvbj5kcm1fY29ubmVjdG9yX3JlZ2lzdGVyPC9mdW5jdGlvbj4uCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgU3VwcG9ydGVkIGNvbm5lY3RvciB0eXBlcyBhcmUKKyAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPkRSTV9NT0RFX0NPTk5FQ1RPUl9WR0E8L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPkRSTV9NT0RFX0NPTk5FQ1RPUl9EVklJPC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT5EUk1fTU9ERV9DT05ORUNUT1JfRFZJRDwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+RFJNX01PREVfQ09OTkVDVE9SX0RWSUE8L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPkRSTV9NT0RFX0NPTk5FQ1RPUl9Db21wb3NpdGU8L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPkRSTV9NT0RFX0NPTk5FQ1RPUl9TVklERU88L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPkRSTV9NT0RFX0NPTk5FQ1RPUl9MVkRTPC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT5EUk1fTU9ERV9DT05ORUNUT1JfQ29tcG9uZW50PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT5EUk1fTU9ERV9DT05ORUNUT1JfOVBpbkRJTjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+RFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT5EUk1fTU9ERV9DT05ORUNUT1JfSERNSUE8L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPkRSTV9NT0RFX0NPTk5FQ1RPUl9IRE1JQjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+RFJNX01PREVfQ09OTkVDVE9SX1RWPC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT5EUk1fTU9ERV9DT05ORUNUT1JfZURQPC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT5EUk1fTU9ERV9DT05ORUNUT1JfVklSVFVBTDwvbGlzdGl0ZW0+CisgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgQ29ubmVjdG9ycyBtdXN0IGJlIGF0dGFjaGVkIHRvIGFuIGVuY29kZXIgdG8gYmUgdXNlZC4gRm9yIGRldmljZXMgdGhhdAorICAgICAgICAgIG1hcCBjb25uZWN0b3JzIHRvIGVuY29kZXJzIDE6MSwgdGhlIGNvbm5lY3RvciBzaG91bGQgYmUgYXR0YWNoZWQgYXQKKyAgICAgICAgICBpbml0aWFsaXphdGlvbiB0aW1lIHdpdGggYSBjYWxsIHRvCisgICAgICAgICAgPGZ1bmN0aW9uPmRybV9tb2RlX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2RlcjwvZnVuY3Rpb24+LiBUaGUgZHJpdmVyIG11c3QKKyAgICAgICAgICBhbHNvIHNldCB0aGUgPHN0cnVjdG5hbWU+ZHJtX2Nvbm5lY3Rvcjwvc3RydWN0bmFtZT4KKyAgICAgICAgICA8c3RydWN0ZmllbGQ+ZW5jb2Rlcjwvc3RydWN0ZmllbGQ+IGZpZWxkIHRvIHBvaW50IHRvIHRoZSBhdHRhY2hlZAorICAgICAgICAgIGVuY29kZXIuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgRmluYWxseSwgZHJpdmVycyBtdXN0IGluaXRpYWxpemUgdGhlIGNvbm5lY3RvcnMgc3RhdGUgY2hhbmdlIGRldGVjdGlvbgorICAgICAgICAgIHdpdGggYSBjYWxsIHRvIDxmdW5jdGlvbj5kcm1fa21zX2hlbHBlcl9wb2xsX2luaXQ8L2Z1bmN0aW9uPi4gSWYgYXQKKyAgICAgICAgICBsZWFzdCBvbmUgY29ubmVjdG9yIGlzIHBvbGxhYmxlIGJ1dCBjYW4ndCBnZW5lcmF0ZSBob3RwbHVnIGludGVycnVwdHMKKyAgICAgICAgICAoaW5kaWNhdGVkIGJ5IHRoZSBEUk1fQ09OTkVDVE9SX1BPTExfQ09OTkVDVCBhbmQKKyAgICAgICAgICBEUk1fQ09OTkVDVE9SX1BPTExfRElTQ09OTkVDVCBjb25uZWN0b3IgZmxhZ3MpLCBhIGRlbGF5ZWQgd29yayB3aWxsCisgICAgICAgICAgYXV0b21hdGljYWxseSBiZSBxdWV1ZWQgdG8gcGVyaW9kaWNhbGx5IHBvbGwgZm9yIGNoYW5nZXMuIENvbm5lY3RvcnMKKyAgICAgICAgICB0aGF0IGNhbiBnZW5lcmF0ZSBob3RwbHVnIGludGVycnVwdHMgbXVzdCBiZSBtYXJrZWQgd2l0aCB0aGUKKyAgICAgICAgICBEUk1fQ09OTkVDVE9SX1BPTExfSFBEIGZsYWcgaW5zdGVhZCwgYW5kIHRoZWlyIGludGVycnVwdCBoYW5kbGVyIG11c3QKKyAgICAgICAgICBjYWxsIDxmdW5jdGlvbj5kcm1faGVscGVyX2hwZF9pcnFfZXZlbnQ8L2Z1bmN0aW9uPi4gVGhlIGZ1bmN0aW9uIHdpbGwKKyAgICAgICAgICBxdWV1ZSBhIGRlbGF5ZWQgd29yayB0byBjaGVjayB0aGUgc3RhdGUgb2YgYWxsIGNvbm5lY3RvcnMsIGJ1dCBubworICAgICAgICAgIHBlcmlvZGljIHBvbGxpbmcgd2lsbCBiZSBkb25lLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3QzPgorICAgICAgPHNlY3QzPgorICAgICAgICA8dGl0bGU+Q29ubmVjdG9yIE9wZXJhdGlvbnM8L3RpdGxlPgorICAgICAgICA8bm90ZT48cGFyYT4KKyAgICAgICAgICBVbmxlc3Mgb3RoZXJ3aXNlIHN0YXRlLCBhbGwgb3BlcmF0aW9ucyBhcmUgbWFuZGF0b3J5LgorICAgICAgICA8L3BhcmE+PC9ub3RlPgorICAgICAgICA8c2VjdDQ+CisgICAgICAgICAgPHRpdGxlPkRQTVM8L3RpdGxlPgorICAgICAgICAgIDxzeW5vcHNpcz52b2lkICgqZHBtcykoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgaW50IG1vZGUpOzwvc3lub3BzaXM+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgRFBNUyBvcGVyYXRpb24gc2V0cyB0aGUgcG93ZXIgc3RhdGUgb2YgYSBjb25uZWN0b3IuIFRoZSBtb2RlCisgICAgICAgICAgICBhcmd1bWVudCBpcyBvbmUgb2YKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EUk1fTU9ERV9EUE1TX09OPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EUk1fTU9ERV9EUE1TX1NUQU5EQlk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRSTV9NT0RFX0RQTVNfU1VTUEVORDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RFJNX01PREVfRFBNU19PRkY8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEluIGFsbCBidXQgRFBNU19PTiBtb2RlIHRoZSBlbmNvZGVyIHRvIHdoaWNoIHRoZSBjb25uZWN0b3IgaXMgYXR0YWNoZWQKKyAgICAgICAgICAgIHNob3VsZCBwdXQgdGhlIGRpc3BsYXkgaW4gbG93LXBvd2VyIG1vZGUgYnkgZHJpdmluZyBpdHMgc2lnbmFscworICAgICAgICAgICAgYXBwcm9wcmlhdGVseS4gSWYgbW9yZSB0aGFuIG9uZSBjb25uZWN0b3IgaXMgYXR0YWNoZWQgdG8gdGhlIGVuY29kZXIKKyAgICAgICAgICAgIGNhcmUgc2hvdWxkIGJlIHRha2VuIG5vdCB0byBjaGFuZ2UgdGhlIHBvd2VyIHN0YXRlIG9mIG90aGVyIGRpc3BsYXlzIGFzCisgICAgICAgICAgICBhIHNpZGUgZWZmZWN0LiBMb3ctcG93ZXIgbW9kZSBzaG91bGQgYmUgcHJvcGFnYXRlZCB0byB0aGUgZW5jb2RlcnMgYW5kCisgICAgICAgICAgICBDUlRDcyB3aGVuIGFsbCByZWxhdGVkIGNvbm5lY3RvcnMgYXJlIHB1dCBpbiBsb3ctcG93ZXIgbW9kZS4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvc2VjdDQ+CisgICAgICAgIDxzZWN0ND4KKyAgICAgICAgICA8dGl0bGU+TW9kZXM8L3RpdGxlPgorICAgICAgICAgIDxzeW5vcHNpcz5pbnQgKCpmaWxsX21vZGVzKShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCB1aW50MzJfdCBtYXhfd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbWF4X2hlaWdodCk7PC9zeW5vcHNpcz4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZpbGwgdGhlIG1vZGUgbGlzdCB3aXRoIGFsbCBzdXBwb3J0ZWQgbW9kZXMgZm9yIHRoZSBjb25uZWN0b3IuIElmIHRoZQorICAgICAgICAgICAgPHBhcmFtZXRlcj5tYXhfd2lkdGg8L3BhcmFtZXRlcj4gYW5kIDxwYXJhbWV0ZXI+bWF4X2hlaWdodDwvcGFyYW1ldGVyPgorICAgICAgICAgICAgYXJndW1lbnRzIGFyZSBub24temVybywgdGhlIGltcGxlbWVudGF0aW9uIG11c3QgaWdub3JlIGFsbCBtb2RlcyB3aWRlcgorICAgICAgICAgICAgdGhhbiA8cGFyYW1ldGVyPm1heF93aWR0aDwvcGFyYW1ldGVyPiBvciBoaWdoZXIgdGhhbgorICAgICAgICAgICAgPHBhcmFtZXRlcj5tYXhfaGVpZ2h0PC9wYXJhbWV0ZXI+LgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBjb25uZWN0b3IgbXVzdCBhbHNvIGZpbGwgaW4gdGhpcyBvcGVyYXRpb24gaXRzCisgICAgICAgICAgICA8c3RydWN0ZmllbGQ+ZGlzcGxheV9pbmZvPC9zdHJ1Y3RmaWVsZD4KKyAgICAgICAgICAgIDxzdHJ1Y3RmaWVsZD53aWR0aF9tbTwvc3RydWN0ZmllbGQ+IGFuZAorICAgICAgICAgICAgPHN0cnVjdGZpZWxkPmhlaWdodF9tbTwvc3RydWN0ZmllbGQ+IGZpZWxkcyB3aXRoIHRoZSBjb25uZWN0ZWQgZGlzcGxheQorICAgICAgICAgICAgcGh5c2ljYWwgc2l6ZSBpbiBtaWxsaW1ldGVycy4gVGhlIGZpZWxkcyBzaG91bGQgYmUgc2V0IHRvIDAgaWYgdGhlIHZhbHVlCisgICAgICAgICAgICBpc24ndCBrbm93biBvciBpcyBub3QgYXBwbGljYWJsZSAoZm9yIGluc3RhbmNlIGZvciBwcm9qZWN0b3IgZGV2aWNlcykuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Q0PgorICAgICAgICA8c2VjdDQ+CisgICAgICAgICAgPHRpdGxlPkNvbm5lY3Rpb24gU3RhdHVzPC90aXRsZT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBjb25uZWN0aW9uIHN0YXR1cyBpcyB1cGRhdGVkIHRocm91Z2ggcG9sbGluZyBvciBob3RwbHVnIGV2ZW50cyB3aGVuCisgICAgICAgICAgICBzdXBwb3J0ZWQgKHNlZSA8eHJlZiBsaW5rZW5kPSJkcm0ta21zLWNvbm5lY3Rvci1wb2xsZWQiLz4pLiBUaGUgc3RhdHVzCisgICAgICAgICAgICB2YWx1ZSBpcyByZXBvcnRlZCB0byB1c2Vyc3BhY2UgdGhyb3VnaCBpb2N0bHMgYW5kIG11c3Qgbm90IGJlIHVzZWQKKyAgICAgICAgICAgIGluc2lkZSB0aGUgZHJpdmVyLCBhcyBpdCBvbmx5IGdldHMgaW5pdGlhbGl6ZWQgYnkgYSBjYWxsIHRvCisgICAgICAgICAgICA8ZnVuY3Rpb24+ZHJtX21vZGVfZ2V0Y29ubmVjdG9yPC9mdW5jdGlvbj4gZnJvbSB1c2Vyc3BhY2UuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDxzeW5vcHNpcz5lbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzICgqZGV0ZWN0KShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZm9yY2UpOzwvc3lub3BzaXM+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBDaGVjayB0byBzZWUgaWYgYW55dGhpbmcgaXMgYXR0YWNoZWQgdG8gdGhlIGNvbm5lY3Rvci4gVGhlCisgICAgICAgICAgICA8cGFyYW1ldGVyPmZvcmNlPC9wYXJhbWV0ZXI+IHBhcmFtZXRlciBpcyBzZXQgdG8gZmFsc2Ugd2hpbHN0IHBvbGxpbmcgb3IKKyAgICAgICAgICAgIHRvIHRydWUgd2hlbiBjaGVja2luZyB0aGUgY29ubmVjdG9yIGR1ZSB0byB1c2VyIHJlcXVlc3QuCisgICAgICAgICAgICA8cGFyYW1ldGVyPmZvcmNlPC9wYXJhbWV0ZXI+IGNhbiBiZSB1c2VkIGJ5IHRoZSBkcml2ZXIgdG8gYXZvaWQKKyAgICAgICAgICAgIGV4cGVuc2l2ZSwgZGVzdHJ1Y3RpdmUgb3BlcmF0aW9ucyBkdXJpbmcgYXV0b21hdGVkIHByb2JpbmcuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgUmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkIGlmIHNvbWV0aGluZyBpcyBjb25uZWN0ZWQgdG8gdGhlCisgICAgICAgICAgICBjb25uZWN0b3IsIGNvbm5lY3Rvcl9zdGF0dXNfZGlzY29ubmVjdGVkIGlmIG5vdGhpbmcgaXMgY29ubmVjdGVkIGFuZAorICAgICAgICAgICAgY29ubmVjdG9yX3N0YXR1c191bmtub3duIGlmIHRoZSBjb25uZWN0aW9uIHN0YXRlIGlzbid0IGtub3duLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIERyaXZlcnMgc2hvdWxkIG9ubHkgcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkIGlmIHRoZSBjb25uZWN0aW9uCisgICAgICAgICAgICBzdGF0dXMgaGFzIHJlYWxseSBiZWVuIHByb2JlZCBhcyBjb25uZWN0ZWQuIENvbm5lY3RvcnMgdGhhdCBjYW4ndCBkZXRlY3QKKyAgICAgICAgICAgIHRoZSBjb25uZWN0aW9uIHN0YXR1cywgb3IgZmFpbGVkIGNvbm5lY3Rpb24gc3RhdHVzIHByb2Jlcywgc2hvdWxkIHJldHVybgorICAgICAgICAgICAgY29ubmVjdG9yX3N0YXR1c191bmtub3duLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0ND4KKyAgICAgICAgPHNlY3Q0PgorICAgICAgICAgIDx0aXRsZT5NaXNjZWxsYW5lb3VzPC90aXRsZT4KKyAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICA8c3lub3BzaXM+dm9pZCAoKnNldF9wcm9wZXJ0eSkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LCB1aW50NjRfdCB2YWx1ZSk7PC9zeW5vcHNpcz4KKyAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgU2V0IHRoZSB2YWx1ZSBvZiB0aGUgZ2l2ZW4gY29ubmVjdG9yIHByb3BlcnR5IHRvCisgICAgICAgICAgICAgICAgPHBhcmFtZXRlcj52YWx1ZTwvcGFyYW1ldGVyPi4gU2VlIDx4cmVmIGxpbmtlbmQ9ImRybS1rbXMtcHJvcGVydGllcyIvPgorICAgICAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHByb3BlcnRpZXMuCisgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgIDxzeW5vcHNpcz52b2lkICgqZGVzdHJveSkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvcik7PC9zeW5vcHNpcz4KKyAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgRGVzdHJveSB0aGUgY29ubmVjdG9yIHdoZW4gbm90IG5lZWRlZCBhbnltb3JlLiBTZWUKKyAgICAgICAgICAgICAgICA8eHJlZiBsaW5rZW5kPSJkcm0ta21zLWluaXQiLz4uCisgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvc2VjdDQ+CisgICAgICA8L3NlY3QzPgorICAgIDwvc2VjdDI+CisgICAgPHNlY3QyPgorICAgICAgPHRpdGxlPkNsZWFudXA8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBEUk0gY29yZSBtYW5hZ2VzIGl0cyBvYmplY3RzJyBsaWZldGltZS4gV2hlbiBhbiBvYmplY3QgaXMgbm90IG5lZWRlZAorCWFueW1vcmUgdGhlIGNvcmUgY2FsbHMgaXRzIGRlc3Ryb3kgZnVuY3Rpb24sIHdoaWNoIG11c3QgY2xlYW4gdXAgYW5kCisJZnJlZSBldmVyeSByZXNvdXJjZSBhbGxvY2F0ZWQgZm9yIHRoZSBvYmplY3QuIEV2ZXJ5CisJPGZ1bmN0aW9uPmRybV8qX2luaXQ8L2Z1bmN0aW9uPiBjYWxsIG11c3QgYmUgbWF0Y2hlZCB3aXRoIGEKKwljb3JyZXNwb25kaW5nIDxmdW5jdGlvbj5kcm1fKl9jbGVhbnVwPC9mdW5jdGlvbj4gY2FsbCB0byBjbGVhbnVwIENSVENzCisJKDxmdW5jdGlvbj5kcm1fY3J0Y19jbGVhbnVwPC9mdW5jdGlvbj4pLCBwbGFuZXMKKwkoPGZ1bmN0aW9uPmRybV9wbGFuZV9jbGVhbnVwPC9mdW5jdGlvbj4pLCBlbmNvZGVycworCSg8ZnVuY3Rpb24+ZHJtX2VuY29kZXJfY2xlYW51cDwvZnVuY3Rpb24+KSBhbmQgY29ubmVjdG9ycworCSg8ZnVuY3Rpb24+ZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwPC9mdW5jdGlvbj4pLiBGdXJ0aGVybW9yZSwgY29ubmVjdG9ycworCXRoYXQgaGF2ZSBiZWVuIGFkZGVkIHRvIHN5c2ZzIG11c3QgYmUgcmVtb3ZlZCBieSBhIGNhbGwgdG8KKwk8ZnVuY3Rpb24+ZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyPC9mdW5jdGlvbj4gYmVmb3JlIGNhbGxpbmcKKwk8ZnVuY3Rpb24+ZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwPC9mdW5jdGlvbj4uCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgQ29ubmVjdG9ycyBzdGF0ZSBjaGFuZ2UgZGV0ZWN0aW9uIG11c3QgYmUgY2xlYW51cCB1cCB3aXRoIGEgY2FsbCB0bworCTxmdW5jdGlvbj5kcm1fa21zX2hlbHBlcl9wb2xsX2Zpbmk8L2Z1bmN0aW9uPi4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QyPgorICAgIDxzZWN0Mj4KKyAgICAgIDx0aXRsZT5PdXRwdXQgZGlzY292ZXJ5IGFuZCBpbml0aWFsaXphdGlvbiBleGFtcGxlPC90aXRsZT4KKyAgICAgIDxwcm9ncmFtbGlzdGluZz48IVtDREFUQVsKK3ZvaWQgaW50ZWxfY3J0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOworCXN0cnVjdCBpbnRlbF9vdXRwdXQgKmludGVsX291dHB1dDsKKworCWludGVsX291dHB1dCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBpbnRlbF9vdXRwdXQpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWludGVsX291dHB1dCkKKwkJcmV0dXJuOworCisJY29ubmVjdG9yID0gJmludGVsX291dHB1dC0+YmFzZTsKKwlkcm1fY29ubmVjdG9yX2luaXQoZGV2LCAmaW50ZWxfb3V0cHV0LT5iYXNlLAorCQkJICAgJmludGVsX2NydF9jb25uZWN0b3JfZnVuY3MsIERSTV9NT0RFX0NPTk5FQ1RPUl9WR0EpOworCisJZHJtX2VuY29kZXJfaW5pdChkZXYsICZpbnRlbF9vdXRwdXQtPmVuYywgJmludGVsX2NydF9lbmNfZnVuY3MsCisJCQkgRFJNX01PREVfRU5DT0RFUl9EQUMpOworCisJZHJtX21vZGVfY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKCZpbnRlbF9vdXRwdXQtPmJhc2UsCisJCQkJCSAgJmludGVsX291dHB1dC0+ZW5jKTsKKworCS8qIFNldCB1cCB0aGUgRERDIGJ1cy4gKi8KKwlpbnRlbF9vdXRwdXQtPmRkY19idXMgPSBpbnRlbF9pMmNfY3JlYXRlKGRldiwgR1BJT0EsICJDUlRERENfQSIpOworCWlmICghaW50ZWxfb3V0cHV0LT5kZGNfYnVzKSB7CisJCWRldl9wcmludGsoS0VSTl9FUlIsICZkZXYtPnBkZXYtPmRldiwgIkREQyBidXMgcmVnaXN0cmF0aW9uICIKKwkJCSAgICJmYWlsZWQuXG4iKTsKKwkJcmV0dXJuOworCX0KKworCWludGVsX291dHB1dC0+dHlwZSA9IElOVEVMX09VVFBVVF9BTkFMT0c7CisJY29ubmVjdG9yLT5pbnRlcmxhY2VfYWxsb3dlZCA9IDA7CisJY29ubmVjdG9yLT5kb3VibGVzY2FuX2FsbG93ZWQgPSAwOworCisJZHJtX2VuY29kZXJfaGVscGVyX2FkZCgmaW50ZWxfb3V0cHV0LT5lbmMsICZpbnRlbF9jcnRfaGVscGVyX2Z1bmNzKTsKKwlkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoY29ubmVjdG9yLCAmaW50ZWxfY3J0X2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MpOworCisJZHJtX2Nvbm5lY3Rvcl9yZWdpc3Rlcihjb25uZWN0b3IpOworfV1dPjwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8cGFyYT4KKyAgICAgICAgSW4gdGhlIGV4YW1wbGUgYWJvdmUgKHRha2VuIGZyb20gdGhlIGk5MTUgZHJpdmVyKSwgYSBDUlRDLCBjb25uZWN0b3IgYW5kCisgICAgICAgIGVuY29kZXIgY29tYmluYXRpb24gaXMgY3JlYXRlZC4gQSBkZXZpY2Utc3BlY2lmaWMgaTJjIGJ1cyBpcyBhbHNvCisgICAgICAgIGNyZWF0ZWQgZm9yIGZldGNoaW5nIEVESUQgZGF0YSBhbmQgcGVyZm9ybWluZyBtb25pdG9yIGRldGVjdGlvbi4gT25jZQorICAgICAgICB0aGUgcHJvY2VzcyBpcyBjb21wbGV0ZSwgdGhlIG5ldyBjb25uZWN0b3IgaXMgcmVnaXN0ZXJlZCB3aXRoIHN5c2ZzIHRvCisgICAgICAgIG1ha2UgaXRzIHByb3BlcnRpZXMgYXZhaWxhYmxlIHRvIGFwcGxpY2F0aW9ucy4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QyPgorICAgIDxzZWN0Mj4KKyAgICAgIDx0aXRsZT5LTVMgQVBJIEZ1bmN0aW9uczwvdGl0bGU+CishRWRyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCisgICAgPC9zZWN0Mj4KKyAgICA8c2VjdDI+CisgICAgICA8dGl0bGU+S01TIERhdGEgU3RydWN0dXJlczwvdGl0bGU+CishSWluY2x1ZGUvZHJtL2RybV9jcnRjLmgKKyAgICA8L3NlY3QyPgorICAgIDxzZWN0Mj4KKyAgICAgIDx0aXRsZT5LTVMgTG9ja2luZzwvdGl0bGU+CishUGRyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZXNldF9sb2NrLmMga21zIGxvY2tpbmcKKyFJaW5jbHVkZS9kcm0vZHJtX21vZGVzZXRfbG9jay5oCishRWRyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZXNldF9sb2NrLmMKKyAgICA8L3NlY3QyPgorICA8L3NlY3QxPgorCisgIDwhLS0gSW50ZXJuYWxzOiBrbXMgaGVscGVyIGZ1bmN0aW9ucyAtLT4KKworICA8c2VjdDE+CisgICAgPHRpdGxlPk1vZGUgU2V0dGluZyBIZWxwZXIgRnVuY3Rpb25zPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIFRoZSBwbGFuZSwgQ1JUQywgZW5jb2RlciBhbmQgY29ubmVjdG9yIGZ1bmN0aW9ucyBwcm92aWRlZCBieSB0aGUgZHJpdmVycworICAgICAgaW1wbGVtZW50IHRoZSBEUk0gQVBJLiBUaGV5J3JlIGNhbGxlZCBieSB0aGUgRFJNIGNvcmUgYW5kIGlvY3RsIGhhbmRsZXJzCisgICAgICB0byBoYW5kbGUgZGV2aWNlIHN0YXRlIGNoYW5nZXMgYW5kIGNvbmZpZ3VyYXRpb24gcmVxdWVzdC4gQXMgaW1wbGVtZW50aW5nCisgICAgICB0aG9zZSBmdW5jdGlvbnMgb2Z0ZW4gcmVxdWlyZXMgbG9naWMgbm90IHNwZWNpZmljIHRvIGRyaXZlcnMsIG1pZC1sYXllcgorICAgICAgaGVscGVyIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHRvIGF2b2lkIGR1cGxpY2F0aW5nIGJvaWxlcnBsYXRlIGNvZGUuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgVGhlIERSTSBjb3JlIGNvbnRhaW5zIG9uZSBtaWQtbGF5ZXIgaW1wbGVtZW50YXRpb24uIFRoZSBtaWQtbGF5ZXIgcHJvdmlkZXMKKyAgICAgIGltcGxlbWVudGF0aW9ucyBvZiBzZXZlcmFsIHBsYW5lLCBDUlRDLCBlbmNvZGVyIGFuZCBjb25uZWN0b3IgZnVuY3Rpb25zCisgICAgICAoY2FsbGVkIGZyb20gdGhlIHRvcCBvZiB0aGUgbWlkLWxheWVyKSB0aGF0IHByZS1wcm9jZXNzIHJlcXVlc3RzIGFuZCBjYWxsCisgICAgICBsb3dlci1sZXZlbCBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgdGhlIGRyaXZlciAoYXQgdGhlIGJvdHRvbSBvZiB0aGUKKyAgICAgIG1pZC1sYXllcikuIEZvciBpbnN0YW5jZSwgdGhlCisgICAgICA8ZnVuY3Rpb24+ZHJtX2NydGNfaGVscGVyX3NldF9jb25maWc8L2Z1bmN0aW9uPiBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0bworICAgICAgZmlsbCB0aGUgc3RydWN0IDxzdHJ1Y3RuYW1lPmRybV9jcnRjX2Z1bmNzPC9zdHJ1Y3RuYW1lPgorICAgICAgPHN0cnVjdGZpZWxkPnNldF9jb25maWc8L3N0cnVjdGZpZWxkPiBmaWVsZC4gV2hlbiBjYWxsZWQsIGl0IHdpbGwgc3BsaXQKKyAgICAgIHRoZSA8bWV0aG9kbmFtZT5zZXRfY29uZmlnPC9tZXRob2RuYW1lPiBvcGVyYXRpb24gaW4gc21hbGxlciwgc2ltcGxlcgorICAgICAgb3BlcmF0aW9ucyBhbmQgY2FsbCB0aGUgZHJpdmVyIHRvIGhhbmRsZSB0aGVtLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIFRvIHVzZSB0aGUgbWlkLWxheWVyLCBkcml2ZXJzIGNhbGwgPGZ1bmN0aW9uPmRybV9jcnRjX2hlbHBlcl9hZGQ8L2Z1bmN0aW9uPiwKKyAgICAgIDxmdW5jdGlvbj5kcm1fZW5jb2Rlcl9oZWxwZXJfYWRkPC9mdW5jdGlvbj4gYW5kCisgICAgICA8ZnVuY3Rpb24+ZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfYWRkPC9mdW5jdGlvbj4gZnVuY3Rpb25zIHRvIGluc3RhbGwgdGhlaXIKKyAgICAgIG1pZC1sYXllciBib3R0b20gb3BlcmF0aW9ucyBoYW5kbGVycywgYW5kIGZpbGwgdGhlCisgICAgICA8c3RydWN0bmFtZT5kcm1fY3J0Y19mdW5jczwvc3RydWN0bmFtZT4sCisgICAgICA8c3RydWN0bmFtZT5kcm1fZW5jb2Rlcl9mdW5jczwvc3RydWN0bmFtZT4gYW5kCisgICAgICA8c3RydWN0bmFtZT5kcm1fY29ubmVjdG9yX2Z1bmNzPC9zdHJ1Y3RuYW1lPiBzdHJ1Y3R1cmVzIHdpdGggcG9pbnRlcnMgdG8KKyAgICAgIHRoZSBtaWQtbGF5ZXIgdG9wIEFQSSBmdW5jdGlvbnMuIEluc3RhbGxpbmcgdGhlIG1pZC1sYXllciBib3R0b20gb3BlcmF0aW9uCisgICAgICBoYW5kbGVycyBpcyBiZXN0IGRvbmUgcmlnaHQgYWZ0ZXIgcmVnaXN0ZXJpbmcgdGhlIGNvcnJlc3BvbmRpbmcgS01TIG9iamVjdC4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBUaGUgbWlkLWxheWVyIGlzIG5vdCBzcGxpdCBiZXR3ZWVuIENSVEMsIGVuY29kZXIgYW5kIGNvbm5lY3RvciBvcGVyYXRpb25zLgorICAgICAgVG8gdXNlIGl0LCBhIGRyaXZlciBtdXN0IHByb3ZpZGUgYm90dG9tIGZ1bmN0aW9ucyBmb3IgYWxsIG9mIHRoZSB0aHJlZSBLTVMKKyAgICAgIGVudGl0aWVzLgorICAgIDwvcGFyYT4KKyAgICA8c2VjdDI+CisgICAgICA8dGl0bGU+SGVscGVyIEZ1bmN0aW9uczwvdGl0bGU+CisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHN5bm9wc2lzPmludCBkcm1fY3J0Y19oZWxwZXJfc2V0X2NvbmZpZyhzdHJ1Y3QgZHJtX21vZGVfc2V0ICpzZXQpOzwvc3lub3BzaXM+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGZ1bmN0aW9uPmRybV9jcnRjX2hlbHBlcl9zZXRfY29uZmlnPC9mdW5jdGlvbj4gaGVscGVyIGZ1bmN0aW9uCisgICAgICAgICAgICBpcyBhIENSVEMgPG1ldGhvZG5hbWU+c2V0X2NvbmZpZzwvbWV0aG9kbmFtZT4gaW1wbGVtZW50YXRpb24uIEl0CisgICAgICAgICAgICBmaXJzdCB0cmllcyB0byBsb2NhdGUgdGhlIGJlc3QgZW5jb2RlciBmb3IgZWFjaCBjb25uZWN0b3IgYnkgY2FsbGluZworICAgICAgICAgICAgdGhlIGNvbm5lY3RvciA8bWV0aG9kbmFtZT5iZXN0X2VuY29kZXI8L21ldGhvZG5hbWU+IGhlbHBlcgorICAgICAgICAgICAgb3BlcmF0aW9uLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEFmdGVyIGxvY2F0aW5nIHRoZSBhcHByb3ByaWF0ZSBlbmNvZGVycywgdGhlIGhlbHBlciBmdW5jdGlvbiB3aWxsCisgICAgICAgICAgICBjYWxsIHRoZSA8bWV0aG9kbmFtZT5tb2RlX2ZpeHVwPC9tZXRob2RuYW1lPiBlbmNvZGVyIGFuZCBDUlRDIGhlbHBlcgorICAgICAgICAgICAgb3BlcmF0aW9ucyB0byBhZGp1c3QgdGhlIHJlcXVlc3RlZCBtb2RlLCBvciByZWplY3QgaXQgY29tcGxldGVseSBpbgorICAgICAgICAgICAgd2hpY2ggY2FzZSBhbiBlcnJvciB3aWxsIGJlIHJldHVybmVkIHRvIHRoZSBhcHBsaWNhdGlvbi4gSWYgdGhlIG5ldworICAgICAgICAgICAgY29uZmlndXJhdGlvbiBhZnRlciBtb2RlIGFkanVzdG1lbnQgaXMgaWRlbnRpY2FsIHRvIHRoZSBjdXJyZW50CisgICAgICAgICAgICBjb25maWd1cmF0aW9uIHRoZSBoZWxwZXIgZnVuY3Rpb24gd2lsbCByZXR1cm4gd2l0aG91dCBwZXJmb3JtaW5nIGFueQorICAgICAgICAgICAgb3RoZXIgb3BlcmF0aW9uLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHRoZSBhZGp1c3RlZCBtb2RlIGlzIGlkZW50aWNhbCB0byB0aGUgY3VycmVudCBtb2RlIGJ1dCBjaGFuZ2VzIHRvCisgICAgICAgICAgICB0aGUgZnJhbWUgYnVmZmVyIG5lZWQgdG8gYmUgYXBwbGllZCwgdGhlCisgICAgICAgICAgICA8ZnVuY3Rpb24+ZHJtX2NydGNfaGVscGVyX3NldF9jb25maWc8L2Z1bmN0aW9uPiBmdW5jdGlvbiB3aWxsIGNhbGwKKyAgICAgICAgICAgIHRoZSBDUlRDIDxtZXRob2RuYW1lPm1vZGVfc2V0X2Jhc2U8L21ldGhvZG5hbWU+IGhlbHBlciBvcGVyYXRpb24uIElmCisgICAgICAgICAgICB0aGUgYWRqdXN0ZWQgbW9kZSBkaWZmZXJzIGZyb20gdGhlIGN1cnJlbnQgbW9kZSwgb3IgaWYgdGhlCisgICAgICAgICAgICA8bWV0aG9kbmFtZT5tb2RlX3NldF9iYXNlPC9tZXRob2RuYW1lPiBoZWxwZXIgb3BlcmF0aW9uIGlzIG5vdAorICAgICAgICAgICAgcHJvdmlkZWQsIHRoZSBoZWxwZXIgZnVuY3Rpb24gcGVyZm9ybXMgYSBmdWxsIG1vZGUgc2V0IHNlcXVlbmNlIGJ5CisgICAgICAgICAgICBjYWxsaW5nIHRoZSA8bWV0aG9kbmFtZT5wcmVwYXJlPC9tZXRob2RuYW1lPiwKKyAgICAgICAgICAgIDxtZXRob2RuYW1lPm1vZGVfc2V0PC9tZXRob2RuYW1lPiBhbmQKKyAgICAgICAgICAgIDxtZXRob2RuYW1lPmNvbW1pdDwvbWV0aG9kbmFtZT4gQ1JUQyBhbmQgZW5jb2RlciBoZWxwZXIgb3BlcmF0aW9ucywKKyAgICAgICAgICAgIGluIHRoYXQgb3JkZXIuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHN5bm9wc2lzPnZvaWQgZHJtX2hlbHBlcl9jb25uZWN0b3JfZHBtcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBpbnQgbW9kZSk7PC9zeW5vcHNpcz4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSA8ZnVuY3Rpb24+ZHJtX2hlbHBlcl9jb25uZWN0b3JfZHBtczwvZnVuY3Rpb24+IGhlbHBlciBmdW5jdGlvbgorICAgICAgICAgICAgaXMgYSBjb25uZWN0b3IgPG1ldGhvZG5hbWU+ZHBtczwvbWV0aG9kbmFtZT4gaW1wbGVtZW50YXRpb24gdGhhdAorICAgICAgICAgICAgdHJhY2tzIHBvd2VyIHN0YXRlIG9mIGNvbm5lY3RvcnMuIFRvIHVzZSB0aGUgZnVuY3Rpb24sIGRyaXZlcnMgbXVzdAorICAgICAgICAgICAgcHJvdmlkZSA8bWV0aG9kbmFtZT5kcG1zPC9tZXRob2RuYW1lPiBoZWxwZXIgb3BlcmF0aW9ucyBmb3IgQ1JUQ3MKKyAgICAgICAgICAgIGFuZCBlbmNvZGVycyB0byBhcHBseSB0aGUgRFBNUyBzdGF0ZSB0byB0aGUgZGV2aWNlLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBtaWQtbGF5ZXIgZG9lc24ndCB0cmFjayB0aGUgcG93ZXIgc3RhdGUgb2YgQ1JUQ3MgYW5kIGVuY29kZXJzLgorICAgICAgICAgICAgVGhlIDxtZXRob2RuYW1lPmRwbXM8L21ldGhvZG5hbWU+IGhlbHBlciBvcGVyYXRpb25zIGNhbiB0aHVzIGJlCisgICAgICAgICAgICBjYWxsZWQgd2l0aCBhIG1vZGUgaWRlbnRpY2FsIHRvIHRoZSBjdXJyZW50bHkgYWN0aXZlIG1vZGUuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHN5bm9wc2lzPmludCBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbWF4WCwgdWludDMyX3QgbWF4WSk7PC9zeW5vcHNpcz4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSA8ZnVuY3Rpb24+ZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzPC9mdW5jdGlvbj4gaGVscGVyCisgICAgICAgICAgICBmdW5jdGlvbiBpcyBhIGNvbm5lY3RvciA8bWV0aG9kbmFtZT5maWxsX21vZGVzPC9tZXRob2RuYW1lPgorICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gdGhhdCB1cGRhdGVzIHRoZSBjb25uZWN0aW9uIHN0YXR1cyBmb3IgdGhlIGNvbm5lY3RvcgorICAgICAgICAgICAgYW5kIHRoZW4gcmV0cmlldmVzIGEgbGlzdCBvZiBtb2RlcyBieSBjYWxsaW5nIHRoZSBjb25uZWN0b3IKKyAgICAgICAgICAgIDxtZXRob2RuYW1lPmdldF9tb2RlczwvbWV0aG9kbmFtZT4gaGVscGVyIG9wZXJhdGlvbi4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIElmIHRoZSBoZWxwZXIgb3BlcmF0aW9uIHJldHVybnMgbm8gbW9kZSwgYW5kIGlmIHRoZSBjb25uZWN0b3Igc3RhdHVzCisgICAgICAgICAgICBpcyBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCwgc3RhbmRhcmQgVkVTQSBETVQgbW9kZXMgdXAgdG8KKyAgICAgICAgICAgIDEwMjR4NzY4IGFyZSBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBtb2RlcyBsaXN0IGJ5IGEgY2FsbCB0bworICAgICAgICAgICAgPGZ1bmN0aW9uPmRybV9hZGRfbW9kZXNfbm9lZGlkPC9mdW5jdGlvbj4uCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZ1bmN0aW9uIHRoZW4gZmlsdGVycyBvdXQgbW9kZXMgbGFyZ2VyIHRoYW4KKyAgICAgICAgICAgIDxwYXJhbWV0ZXI+bWF4X3dpZHRoPC9wYXJhbWV0ZXI+IGFuZCA8cGFyYW1ldGVyPm1heF9oZWlnaHQ8L3BhcmFtZXRlcj4KKyAgICAgICAgICAgIGlmIHNwZWNpZmllZC4gSXQgZmluYWxseSBjYWxscyB0aGUgb3B0aW9uYWwgY29ubmVjdG9yCisgICAgICAgICAgICA8bWV0aG9kbmFtZT5tb2RlX3ZhbGlkPC9tZXRob2RuYW1lPiBoZWxwZXIgb3BlcmF0aW9uIGZvciBlYWNoIG1vZGUgaW4KKyAgICAgICAgICAgIHRoZSBwcm9iZWQgbGlzdCB0byBjaGVjayB3aGV0aGVyIHRoZSBtb2RlIGlzIHZhbGlkIGZvciB0aGUgY29ubmVjdG9yLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvc2VjdDI+CisgICAgPHNlY3QyPgorICAgICAgPHRpdGxlPkNSVEMgSGVscGVyIE9wZXJhdGlvbnM8L3RpdGxlPgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgPGxpc3RpdGVtIGlkPSJkcm0taGVscGVyLWNydGMtbW9kZS1maXh1cCI+CisgICAgICAgICAgPHN5bm9wc2lzPmJvb2wgKCptb2RlX2ZpeHVwKShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAorICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSk7PC9zeW5vcHNpcz4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIExldCBDUlRDcyBhZGp1c3QgdGhlIHJlcXVlc3RlZCBtb2RlIG9yIHJlamVjdCBpdCBjb21wbGV0ZWx5LiBUaGlzCisgICAgICAgICAgICBvcGVyYXRpb24gcmV0dXJucyB0cnVlIGlmIHRoZSBtb2RlIGlzIGFjY2VwdGVkIChwb3NzaWJseSBhZnRlciBiZWluZworICAgICAgICAgICAgYWRqdXN0ZWQpIG9yIGZhbHNlIGlmIGl0IGlzIHJlamVjdGVkLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSA8bWV0aG9kbmFtZT5tb2RlX2ZpeHVwPC9tZXRob2RuYW1lPiBvcGVyYXRpb24gc2hvdWxkIHJlamVjdCB0aGUKKyAgICAgICAgICAgIG1vZGUgaWYgaXQgY2FuJ3QgcmVhc29uYWJseSB1c2UgaXQuIFRoZSBkZWZpbml0aW9uIG9mICJyZWFzb25hYmxlIgorICAgICAgICAgICAgaXMgY3VycmVudGx5IGZ1enp5IGluIHRoaXMgY29udGV4dC4gT25lIHBvc3NpYmxlIGJlaGF2aW91ciB3b3VsZCBiZQorICAgICAgICAgICAgdG8gc2V0IHRoZSBhZGp1c3RlZCBtb2RlIHRvIHRoZSBwYW5lbCB0aW1pbmdzIHdoZW4gYSBmaXhlZC1tb2RlCisgICAgICAgICAgICBwYW5lbCBpcyB1c2VkIHdpdGggaGFyZHdhcmUgY2FwYWJsZSBvZiBzY2FsaW5nLiBBbm90aGVyIGJlaGF2aW91cgorICAgICAgICAgICAgd291bGQgYmUgdG8gYWNjZXB0IGFueSBpbnB1dCBtb2RlIGFuZCBhZGp1c3QgaXQgdG8gdGhlIGNsb3Nlc3QgbW9kZQorICAgICAgICAgICAgc3VwcG9ydGVkIGJ5IHRoZSBoYXJkd2FyZSAoRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgY2xhcmlmaWVkKS4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8c3lub3BzaXM+aW50ICgqbW9kZV9zZXRfYmFzZSkoc3RydWN0IGRybV9jcnRjICpjcnRjLCBpbnQgeCwgaW50IHksCisgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpvbGRfZmIpPC9zeW5vcHNpcz4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIE1vdmUgdGhlIENSVEMgb24gdGhlIGN1cnJlbnQgZnJhbWUgYnVmZmVyIChzdG9yZWQgaW4KKyAgICAgICAgICAgIDxsaXRlcmFsPmNydGMtJmd0O2ZiPC9saXRlcmFsPikgdG8gcG9zaXRpb24gKHgseSkuIEFueSBvZiB0aGUgZnJhbWUKKyAgICAgICAgICAgIGJ1ZmZlciwgeCBwb3NpdGlvbiBvciB5IHBvc2l0aW9uIG1heSBoYXZlIGJlZW4gbW9kaWZpZWQuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBoZWxwZXIgb3BlcmF0aW9uIGlzIG9wdGlvbmFsLiBJZiBub3QgcHJvdmlkZWQsIHRoZQorICAgICAgICAgICAgPGZ1bmN0aW9uPmRybV9jcnRjX2hlbHBlcl9zZXRfY29uZmlnPC9mdW5jdGlvbj4gZnVuY3Rpb24gd2lsbCBmYWxsCisgICAgICAgICAgICBiYWNrIHRvIHRoZSA8bWV0aG9kbmFtZT5tb2RlX3NldDwvbWV0aG9kbmFtZT4gaGVscGVyIG9wZXJhdGlvbi4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPG5vdGU+PHBhcmE+CisgICAgICAgICAgICBGSVhNRTogV2h5IGFyZSB4IGFuZCB5IHBhc3NlZCBhcyBhcmd1bWVudHMsIGFzIHRoZXkgY2FuIGJlIGFjY2Vzc2VkCisgICAgICAgICAgICB0aHJvdWdoIDxsaXRlcmFsPmNydGMtJmd0O3g8L2xpdGVyYWw+IGFuZAorICAgICAgICAgICAgPGxpdGVyYWw+Y3J0Yy0mZ3Q7eTwvbGl0ZXJhbD4/CisgICAgICAgICAgPC9wYXJhPjwvbm90ZT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxzeW5vcHNpcz52b2lkICgqcHJlcGFyZSkoc3RydWN0IGRybV9jcnRjICpjcnRjKTs8L3N5bm9wc2lzPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgUHJlcGFyZSB0aGUgQ1JUQyBmb3IgbW9kZSBzZXR0aW5nLiBUaGlzIG9wZXJhdGlvbiBpcyBjYWxsZWQgYWZ0ZXIKKyAgICAgICAgICAgIHZhbGlkYXRpbmcgdGhlIHJlcXVlc3RlZCBtb2RlLiBEcml2ZXJzIHVzZSBpdCB0byBwZXJmb3JtCisgICAgICAgICAgICBkZXZpY2Utc3BlY2lmaWMgb3BlcmF0aW9ucyByZXF1aXJlZCBiZWZvcmUgc2V0dGluZyB0aGUgbmV3IG1vZGUuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHN5bm9wc2lzPmludCAoKm1vZGVfc2V0KShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAorICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlLCBpbnQgeCwgaW50IHksCisgICAgICAgICAgICAgICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqb2xkX2ZiKTs8L3N5bm9wc2lzPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgU2V0IGEgbmV3IG1vZGUsIHBvc2l0aW9uIGFuZCBmcmFtZSBidWZmZXIuIERlcGVuZGluZyBvbiB0aGUgZGV2aWNlCisgICAgICAgICAgICByZXF1aXJlbWVudHMsIHRoZSBtb2RlIGNhbiBiZSBzdG9yZWQgaW50ZXJuYWxseSBieSB0aGUgZHJpdmVyIGFuZAorICAgICAgICAgICAgYXBwbGllZCBpbiB0aGUgPG1ldGhvZG5hbWU+Y29tbWl0PC9tZXRob2RuYW1lPiBvcGVyYXRpb24sIG9yCisgICAgICAgICAgICBwcm9ncmFtbWVkIHRvIHRoZSBoYXJkd2FyZSBpbW1lZGlhdGVseS4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPG1ldGhvZG5hbWU+bW9kZV9zZXQ8L21ldGhvZG5hbWU+IG9wZXJhdGlvbiByZXR1cm5zIDAgb24gc3VjY2VzcworCSAgICBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgaWYgYW4gZXJyb3Igb2NjdXJzLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxzeW5vcHNpcz52b2lkICgqY29tbWl0KShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOzwvc3lub3BzaXM+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBDb21taXQgYSBtb2RlLiBUaGlzIG9wZXJhdGlvbiBpcyBjYWxsZWQgYWZ0ZXIgc2V0dGluZyB0aGUgbmV3IG1vZGUuCisgICAgICAgICAgICBVcG9uIHJldHVybiB0aGUgZGV2aWNlIG11c3QgdXNlIHRoZSBuZXcgbW9kZSBhbmQgYmUgZnVsbHkKKyAgICAgICAgICAgIG9wZXJhdGlvbmFsLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvc2VjdDI+CisgICAgPHNlY3QyPgorICAgICAgPHRpdGxlPkVuY29kZXIgSGVscGVyIE9wZXJhdGlvbnM8L3RpdGxlPgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxzeW5vcHNpcz5ib29sICgqbW9kZV9maXh1cCkoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpOzwvc3lub3BzaXM+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBMZXQgZW5jb2RlcnMgYWRqdXN0IHRoZSByZXF1ZXN0ZWQgbW9kZSBvciByZWplY3QgaXQgY29tcGxldGVseS4gVGhpcworICAgICAgICAgICAgb3BlcmF0aW9uIHJldHVybnMgdHJ1ZSBpZiB0aGUgbW9kZSBpcyBhY2NlcHRlZCAocG9zc2libHkgYWZ0ZXIgYmVpbmcKKyAgICAgICAgICAgIGFkanVzdGVkKSBvciBmYWxzZSBpZiBpdCBpcyByZWplY3RlZC4gU2VlIHRoZQorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0iZHJtLWhlbHBlci1jcnRjLW1vZGUtZml4dXAiPm1vZGVfZml4dXAgQ1JUQyBoZWxwZXIKKyAgICAgICAgICAgIG9wZXJhdGlvbjwvbGluaz4gZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBhbGxvd2VkIGFkanVzdG1lbnRzLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxzeW5vcHNpcz52b2lkICgqcHJlcGFyZSkoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTs8L3N5bm9wc2lzPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgUHJlcGFyZSB0aGUgZW5jb2RlciBmb3IgbW9kZSBzZXR0aW5nLiBUaGlzIG9wZXJhdGlvbiBpcyBjYWxsZWQgYWZ0ZXIKKyAgICAgICAgICAgIHZhbGlkYXRpbmcgdGhlIHJlcXVlc3RlZCBtb2RlLiBEcml2ZXJzIHVzZSBpdCB0byBwZXJmb3JtCisgICAgICAgICAgICBkZXZpY2Utc3BlY2lmaWMgb3BlcmF0aW9ucyByZXF1aXJlZCBiZWZvcmUgc2V0dGluZyB0aGUgbmV3IG1vZGUuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHN5bm9wc2lzPnZvaWQgKCptb2RlX3NldCkoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAorICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKyAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpOzwvc3lub3BzaXM+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBTZXQgYSBuZXcgbW9kZS4gRGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgcmVxdWlyZW1lbnRzLCB0aGUgbW9kZSBjYW4KKyAgICAgICAgICAgIGJlIHN0b3JlZCBpbnRlcm5hbGx5IGJ5IHRoZSBkcml2ZXIgYW5kIGFwcGxpZWQgaW4gdGhlCisgICAgICAgICAgICA8bWV0aG9kbmFtZT5jb21taXQ8L21ldGhvZG5hbWU+IG9wZXJhdGlvbiwgb3IgcHJvZ3JhbW1lZCB0byB0aGUKKyAgICAgICAgICAgIGhhcmR3YXJlIGltbWVkaWF0ZWx5LgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxzeW5vcHNpcz52b2lkICgqY29tbWl0KShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpOzwvc3lub3BzaXM+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBDb21taXQgYSBtb2RlLiBUaGlzIG9wZXJhdGlvbiBpcyBjYWxsZWQgYWZ0ZXIgc2V0dGluZyB0aGUgbmV3IG1vZGUuCisgICAgICAgICAgICBVcG9uIHJldHVybiB0aGUgZGV2aWNlIG11c3QgdXNlIHRoZSBuZXcgbW9kZSBhbmQgYmUgZnVsbHkKKyAgICAgICAgICAgIG9wZXJhdGlvbmFsLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvc2VjdDI+CisgICAgPHNlY3QyPgorICAgICAgPHRpdGxlPkNvbm5lY3RvciBIZWxwZXIgT3BlcmF0aW9uczwvdGl0bGU+CisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHN5bm9wc2lzPnN0cnVjdCBkcm1fZW5jb2RlciAqKCpiZXN0X2VuY29kZXIpKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpOzwvc3lub3BzaXM+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBiZXN0IGVuY29kZXIgZm9yIHRoZSBjb25uZWN0ZXIuIERldmljZSB0aGF0CisgICAgICAgICAgICBtYXAgY29ubmVjdG9ycyB0byBlbmNvZGVycyAxOjEgc2ltcGx5IHJldHVybiB0aGUgcG9pbnRlciB0byB0aGUKKyAgICAgICAgICAgIGFzc29jaWF0ZWQgZW5jb2Rlci4gVGhpcyBvcGVyYXRpb24gaXMgbWFuZGF0b3J5LgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxzeW5vcHNpcz5pbnQgKCpnZXRfbW9kZXMpKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpOzwvc3lub3BzaXM+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGaWxsIHRoZSBjb25uZWN0b3IncyA8c3RydWN0ZmllbGQ+cHJvYmVkX21vZGVzPC9zdHJ1Y3RmaWVsZD4gbGlzdAorICAgICAgICAgICAgYnkgcGFyc2luZyBFRElEIGRhdGEgd2l0aCA8ZnVuY3Rpb24+ZHJtX2FkZF9lZGlkX21vZGVzPC9mdW5jdGlvbj4sCisgICAgICAgICAgICBhZGRpbmcgc3RhbmRhcmQgVkVTQSBETVQgbW9kZXMgd2l0aCA8ZnVuY3Rpb24+ZHJtX2FkZF9tb2Rlc19ub2VkaWQ8L2Z1bmN0aW9uPiwKKyAgICAgICAgICAgIG9yIGNhbGxpbmcgPGZ1bmN0aW9uPmRybV9tb2RlX3Byb2JlZF9hZGQ8L2Z1bmN0aW9uPiBkaXJlY3RseSBmb3IgZXZlcnkKKyAgICAgICAgICAgIHN1cHBvcnRlZCBtb2RlIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBtb2RlcyBpdCBoYXMgZGV0ZWN0ZWQuIFRoaXMKKyAgICAgICAgICAgIG9wZXJhdGlvbiBpcyBtYW5kYXRvcnkuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgTm90ZSB0aGF0IHRoZSBjYWxsZXIgZnVuY3Rpb24gd2lsbCBhdXRvbWF0aWNhbGx5IGFkZCBzdGFuZGFyZCBWRVNBCisgICAgICAgICAgICBETVQgbW9kZXMgdXAgdG8gMTAyNHg3NjggaWYgdGhlIDxtZXRob2RuYW1lPmdldF9tb2RlczwvbWV0aG9kbmFtZT4KKyAgICAgICAgICAgIGhlbHBlciBvcGVyYXRpb24gcmV0dXJucyBubyBtb2RlIGFuZCBpZiB0aGUgY29ubmVjdG9yIHN0YXR1cyBpcworICAgICAgICAgICAgY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQuIFRoZXJlIGlzIG5vIG5lZWQgdG8gY2FsbAorICAgICAgICAgICAgPGZ1bmN0aW9uPmRybV9hZGRfZWRpZF9tb2RlczwvZnVuY3Rpb24+IG1hbnVhbGx5IGluIHRoYXQgY2FzZS4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXaGVuIGFkZGluZyBtb2RlcyBtYW51YWxseSB0aGUgZHJpdmVyIGNyZWF0ZXMgZWFjaCBtb2RlIHdpdGggYSBjYWxsIHRvCisgICAgICAgICAgICA8ZnVuY3Rpb24+ZHJtX21vZGVfY3JlYXRlPC9mdW5jdGlvbj4gYW5kIG11c3QgZmlsbCB0aGUgZm9sbG93aW5nIGZpZWxkcy4KKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8c3lub3BzaXM+X191MzIgdHlwZTs8L3N5bm9wc2lzPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgTW9kZSB0eXBlIGJpdG1hc2ssIGEgY29tYmluYXRpb24gb2YKKyAgICAgICAgICAgICAgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgPHRlcm0+RFJNX01PREVfVFlQRV9CVUlMVElOPC90ZXJtPgorICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5ub3QgdXNlZD88L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgPHRlcm0+RFJNX01PREVfVFlQRV9DTE9DS19DPC90ZXJtPgorICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5ub3QgdXNlZD88L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgPHRlcm0+RFJNX01PREVfVFlQRV9DUlRDX0M8L3Rlcm0+CisgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPm5vdCB1c2VkPzwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICA8dGVybT4KKyAgICAgICAgRFJNX01PREVfVFlQRV9QUkVGRVJSRUQgLSBUaGUgcHJlZmVycmVkIG1vZGUgZm9yIHRoZSBjb25uZWN0b3IKKyAgICAgICAgICAgICAgICAgICAgICA8L3Rlcm0+CisgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+bm90IHVzZWQ/PC9wYXJhPgorICAgICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgICAgICAgIDx0ZXJtPkRSTV9NT0RFX1RZUEVfREVGQVVMVDwvdGVybT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+bm90IHVzZWQ/PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgICAgICAgIDx0ZXJtPkRSTV9NT0RFX1RZUEVfVVNFUkRFRjwvdGVybT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+bm90IHVzZWQ/PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgICAgICAgIDx0ZXJtPkRSTV9NT0RFX1RZUEVfRFJJVkVSPC90ZXJtPgorICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbW9kZSBoYXMgYmVlbiBjcmVhdGVkIGJ5IHRoZSBkcml2ZXIgKGFzIG9wcG9zZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdXNlci1jcmVhdGVkIG1vZGVzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgICAgICAgIDwvdmFyaWFibGVsaXN0PgorICAgICAgICAgICAgICAgICAgRHJpdmVycyBtdXN0IHNldCB0aGUgRFJNX01PREVfVFlQRV9EUklWRVIgYml0IGZvciBhbGwgbW9kZXMgdGhleQorICAgICAgICAgICAgICAgICAgY3JlYXRlLCBhbmQgc2V0IHRoZSBEUk1fTU9ERV9UWVBFX1BSRUZFUlJFRCBiaXQgZm9yIHRoZSBwcmVmZXJyZWQKKyAgICAgICAgICAgICAgICAgIG1vZGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPHN5bm9wc2lzPl9fdTMyIGNsb2NrOzwvc3lub3BzaXM+CisgICAgICAgICAgICAgICAgPHBhcmE+UGl4ZWwgY2xvY2sgZnJlcXVlbmN5IGluIGtIeiB1bml0PC9wYXJhPgorICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPHN5bm9wc2lzPl9fdTE2IGhkaXNwbGF5LCBoc3luY19zdGFydCwgaHN5bmNfZW5kLCBodG90YWw7CisgICAgX191MTYgdmRpc3BsYXksIHZzeW5jX3N0YXJ0LCB2c3luY19lbmQsIHZ0b3RhbDs8L3N5bm9wc2lzPgorICAgICAgICAgICAgICAgIDxwYXJhPkhvcml6b250YWwgYW5kIHZlcnRpY2FsIHRpbWluZyBpbmZvcm1hdGlvbjwvcGFyYT4KKyAgICAgICAgICAgICAgICA8c2NyZWVuPjwhW0NEQVRBWworICAgICAgICAgICAgIEFjdGl2ZSAgICAgICAgICAgICAgICAgRnJvbnQgICAgICAgICAgIFN5bmMgICAgICAgICAgIEJhY2sKKyAgICAgICAgICAgICBSZWdpb24gICAgICAgICAgICAgICAgIFBvcmNoICAgICAgICAgICAgICAgICAgICAgICAgICBQb3JjaAorICAgIDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT48LS0tLS0tLS0tLS0tLS0tLT48LS0tLS0tLS0tLS0tLT48LS0tLS0tLS0tLS0tLS0+CisKKyAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy98CisgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gfAorICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gIHwuLi4uLi4uLi4uLi4uLi4uLi4gICAgICAgICAgICAgICAuLi4uLi4uLi4uLi4uLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX19fX19fX19fX19fXworCisgICAgPC0tLS0tIFtodl1kaXNwbGF5IC0tLS0tPgorICAgIDwtLS0tLS0tLS0tLS0tIFtodl1zeW5jX3N0YXJ0IC0tLS0tLS0tLS0tLT4KKyAgICA8LS0tLS0tLS0tLS0tLS0tLS0tLS0tIFtodl1zeW5jX2VuZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0+CisgICAgPC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFtodl10b3RhbCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KK11dPjwvc2NyZWVuPgorICAgICAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPHN5bm9wc2lzPl9fdTE2IGhza2V3OworICAgIF9fdTE2IHZzY2FuOzwvc3lub3BzaXM+CisgICAgICAgICAgICAgICAgPHBhcmE+VW5rbm93bjwvcGFyYT4KKyAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxzeW5vcHNpcz5fX3UzMiBmbGFnczs8L3N5bm9wc2lzPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgTW9kZSBmbGFncywgYSBjb21iaW5hdGlvbiBvZgorICAgICAgICAgICAgICAgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICA8dGVybT5EUk1fTU9ERV9GTEFHX1BIU1lOQzwvdGVybT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBIb3Jpem9udGFsIHN5bmMgaXMgYWN0aXZlIGhpZ2gKKyAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgPHRlcm0+RFJNX01PREVfRkxBR19OSFNZTkM8L3Rlcm0+CisgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSG9yaXpvbnRhbCBzeW5jIGlzIGFjdGl2ZSBsb3cKKyAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgPHRlcm0+RFJNX01PREVfRkxBR19QVlNZTkM8L3Rlcm0+CisgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVmVydGljYWwgc3luYyBpcyBhY3RpdmUgaGlnaAorICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICA8dGVybT5EUk1fTU9ERV9GTEFHX05WU1lOQzwvdGVybT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0aWNhbCBzeW5jIGlzIGFjdGl2ZSBsb3cKKyAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgPHRlcm0+RFJNX01PREVfRkxBR19JTlRFUkxBQ0U8L3Rlcm0+CisgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgTW9kZSBpcyBpbnRlcmxhY2VkCisgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgICAgICAgIDx0ZXJtPkRSTV9NT0RFX0ZMQUdfREJMU0NBTjwvdGVybT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBNb2RlIHVzZXMgZG91Ymxlc2NhbgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICA8dGVybT5EUk1fTU9ERV9GTEFHX0NTWU5DPC90ZXJtPgorICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIE1vZGUgdXNlcyBjb21wb3NpdGUgc3luYworICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICA8dGVybT5EUk1fTU9ERV9GTEFHX1BDU1lOQzwvdGVybT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGUgc3luYyBpcyBhY3RpdmUgaGlnaAorICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICA8dGVybT5EUk1fTU9ERV9GTEFHX05DU1lOQzwvdGVybT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGUgc3luYyBpcyBhY3RpdmUgbG93CisgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgICAgICAgIDx0ZXJtPkRSTV9NT0RFX0ZMQUdfSFNLRVc8L3Rlcm0+CisgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgaHNrZXcgcHJvdmlkZWQgKG5vdCB1c2VkPykKKyAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgPHRlcm0+RFJNX01PREVfRkxBR19CQ0FTVDwvdGVybT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBub3QgdXNlZD8KKyAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICAgICAgICAgICAgPHRlcm0+RFJNX01PREVfRkxBR19QSVhNVVg8L3Rlcm0+CisgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgbm90IHVzZWQ/CisgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgICAgICAgICAgIDx0ZXJtPkRSTV9NT0RFX0ZMQUdfREJMQ0xLPC90ZXJtPgorICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIG5vdCB1c2VkPworICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgICAgICAgICAgICA8dGVybT5EUk1fTU9ERV9GTEFHX0NMS0RJVjI8L3Rlcm0+CisgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgPworICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICAgICAgICAgIDwvdmFyaWFibGVsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgIE5vdGUgdGhhdCBtb2RlcyBtYXJrZWQgd2l0aCB0aGUgSU5URVJMQUNFIG9yIERCTFNDQU4gZmxhZ3Mgd2lsbCBiZQorICAgICAgICAgICAgICAgICAgZmlsdGVyZWQgb3V0IGJ5CisgICAgICAgICAgICAgICAgICA8ZnVuY3Rpb24+ZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzPC9mdW5jdGlvbj4gaWYKKyAgICAgICAgICAgICAgICAgIHRoZSBjb25uZWN0b3IncyA8c3RydWN0ZmllbGQ+aW50ZXJsYWNlX2FsbG93ZWQ8L3N0cnVjdGZpZWxkPiBvcgorICAgICAgICAgICAgICAgICAgPHN0cnVjdGZpZWxkPmRvdWJsZXNjYW5fYWxsb3dlZDwvc3RydWN0ZmllbGQ+IGZpZWxkIGlzIHNldCB0byAwLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxzeW5vcHNpcz5jaGFyIG5hbWVbRFJNX0RJU1BMQVlfTU9ERV9MRU5dOzwvc3lub3BzaXM+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICBNb2RlIG5hbWUuIFRoZSBkcml2ZXIgbXVzdCBjYWxsCisgICAgICAgICAgICAgICAgICA8ZnVuY3Rpb24+ZHJtX21vZGVfc2V0X25hbWU8L2Z1bmN0aW9uPiB0byBmaWxsIHRoZSBtb2RlIG5hbWUgZnJvbQorICAgICAgICAgICAgICAgICAgPHN0cnVjdGZpZWxkPmhkaXNwbGF5PC9zdHJ1Y3RmaWVsZD4sCisgICAgICAgICAgICAgICAgICA8c3RydWN0ZmllbGQ+dmRpc3BsYXk8L3N0cnVjdGZpZWxkPiBhbmQgaW50ZXJsYWNlIGZsYWcgYWZ0ZXIKKyAgICAgICAgICAgICAgICAgIGZpbGxpbmcgdGhlIGNvcnJlc3BvbmRpbmcgZmllbGRzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSA8c3RydWN0ZmllbGQ+dnJlZnJlc2g8L3N0cnVjdGZpZWxkPiB2YWx1ZSBpcyBjb21wdXRlZCBieQorICAgICAgICAgICAgPGZ1bmN0aW9uPmRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlczwvZnVuY3Rpb24+LgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdoZW4gcGFyc2luZyBFRElEIGRhdGEsIDxmdW5jdGlvbj5kcm1fYWRkX2VkaWRfbW9kZXM8L2Z1bmN0aW9uPiBmaWxscyB0aGUKKyAgICAgICAgICAgIGNvbm5lY3RvciA8c3RydWN0ZmllbGQ+ZGlzcGxheV9pbmZvPC9zdHJ1Y3RmaWVsZD4KKyAgICAgICAgICAgIDxzdHJ1Y3RmaWVsZD53aWR0aF9tbTwvc3RydWN0ZmllbGQ+IGFuZAorICAgICAgICAgICAgPHN0cnVjdGZpZWxkPmhlaWdodF9tbTwvc3RydWN0ZmllbGQ+IGZpZWxkcy4gV2hlbiBjcmVhdGluZyBtb2RlcworICAgICAgICAgICAgbWFudWFsbHkgdGhlIDxtZXRob2RuYW1lPmdldF9tb2RlczwvbWV0aG9kbmFtZT4gaGVscGVyIG9wZXJhdGlvbiBtdXN0CisgICAgICAgICAgICBzZXQgdGhlIDxzdHJ1Y3RmaWVsZD5kaXNwbGF5X2luZm88L3N0cnVjdGZpZWxkPgorICAgICAgICAgICAgPHN0cnVjdGZpZWxkPndpZHRoX21tPC9zdHJ1Y3RmaWVsZD4gYW5kCisgICAgICAgICAgICA8c3RydWN0ZmllbGQ+aGVpZ2h0X21tPC9zdHJ1Y3RmaWVsZD4gZmllbGRzIGlmIHRoZXkgaGF2ZW4ndCBiZWVuIHNldAorICAgICAgICAgICAgYWxyZWFkeSAoZm9yIGluc3RhbmNlIGF0IGluaXRpYWxpemF0aW9uIHRpbWUgd2hlbiBhIGZpeGVkLXNpemUgcGFuZWwgaXMKKyAgICAgICAgICAgIGF0dGFjaGVkIHRvIHRoZSBjb25uZWN0b3IpLiBUaGUgbW9kZSA8c3RydWN0ZmllbGQ+d2lkdGhfbW08L3N0cnVjdGZpZWxkPgorICAgICAgICAgICAgYW5kIDxzdHJ1Y3RmaWVsZD5oZWlnaHRfbW08L3N0cnVjdGZpZWxkPiBmaWVsZHMgYXJlIG9ubHkgdXNlZCBpbnRlcm5hbGx5CisgICAgICAgICAgICBkdXJpbmcgRURJRCBwYXJzaW5nIGFuZCBzaG91bGQgbm90IGJlIHNldCB3aGVuIGNyZWF0aW5nIG1vZGVzIG1hbnVhbGx5LgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxzeW5vcHNpcz5pbnQgKCptb2RlX3ZhbGlkKShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKTs8L3N5bm9wc2lzPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVmVyaWZ5IHdoZXRoZXIgYSBtb2RlIGlzIHZhbGlkIGZvciB0aGUgY29ubmVjdG9yLiBSZXR1cm4gTU9ERV9PSyBmb3IKKyAgICAgICAgICAgIHN1cHBvcnRlZCBtb2RlcyBhbmQgb25lIG9mIHRoZSBlbnVtIGRybV9tb2RlX3N0YXR1cyB2YWx1ZXMgKE1PREVfKikKKyAgICAgICAgICAgIGZvciB1bnN1cHBvcnRlZCBtb2Rlcy4gVGhpcyBvcGVyYXRpb24gaXMgb3B0aW9uYWwuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQXMgdGhlIG1vZGUgcmVqZWN0aW9uIHJlYXNvbiBpcyBjdXJyZW50bHkgbm90IHVzZWQgYmVzaWRlIGZvcgorICAgICAgICAgICAgaW1tZWRpYXRlbHkgcmVtb3ZpbmcgdGhlIHVuc3VwcG9ydGVkIG1vZGUsIGFuIGltcGxlbWVudGF0aW9uIGNhbgorICAgICAgICAgICAgcmV0dXJuIE1PREVfQkFEIHJlZ2FyZGxlc3Mgb2YgdGhlIGV4YWN0IHJlYXNvbiB3aHkgdGhlIG1vZGUgaXMgbm90CisgICAgICAgICAgICB2YWxpZC4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPG5vdGU+PHBhcmE+CisgICAgICAgICAgICBOb3RlIHRoYXQgdGhlIDxtZXRob2RuYW1lPm1vZGVfdmFsaWQ8L21ldGhvZG5hbWU+IGhlbHBlciBvcGVyYXRpb24gaXMKKyAgICAgICAgICAgIG9ubHkgY2FsbGVkIGZvciBtb2RlcyBkZXRlY3RlZCBieSB0aGUgZGV2aWNlLCBhbmQKKyAgICAgICAgICAgIDxlbXBoYXNpcz5ub3Q8L2VtcGhhc2lzPiBmb3IgbW9kZXMgc2V0IGJ5IHRoZSB1c2VyIHRocm91Z2ggdGhlIENSVEMKKyAgICAgICAgICAgIDxtZXRob2RuYW1lPnNldF9jb25maWc8L21ldGhvZG5hbWU+IG9wZXJhdGlvbi4KKyAgICAgICAgICA8L3BhcmE+PC9ub3RlPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9zZWN0Mj4KKyAgICA8c2VjdDI+CisgICAgICA8dGl0bGU+QXRvbWljIE1vZGVzZXQgSGVscGVyIEZ1bmN0aW9ucyBSZWZlcmVuY2U8L3RpdGxlPgorICAgICAgPHNlY3QzPgorCTx0aXRsZT5PdmVydmlldzwvdGl0bGU+CishUGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIG92ZXJ2aWV3CisgICAgICA8L3NlY3QzPgorICAgICAgPHNlY3QzPgorCTx0aXRsZT5JbXBsZW1lbnRpbmcgQXN5bmNocm9ub3VzIEF0b21pYyBDb21taXQ8L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBpbXBsZW1lbnRpbmcgYXN5bmMgY29tbWl0CisgICAgICA8L3NlY3QzPgorICAgICAgPHNlY3QzPgorCTx0aXRsZT5BdG9taWMgU3RhdGUgUmVzZXQgYW5kIEluaXRpYWxpemF0aW9uPC90aXRsZT4KKyFQZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgYXRvbWljIHN0YXRlIHJlc2V0IGFuZCBpbml0aWFsaXphdGlvbgorICAgICAgPC9zZWN0Mz4KKyFJaW5jbHVkZS9kcm0vZHJtX2F0b21pY19oZWxwZXIuaAorIUVkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYworICAgIDwvc2VjdDI+CisgICAgPHNlY3QyPgorICAgICAgPHRpdGxlPk1vZGVzZXQgSGVscGVyIEZ1bmN0aW9ucyBSZWZlcmVuY2U8L3RpdGxlPgorIUlpbmNsdWRlL2RybS9kcm1fY3J0Y19oZWxwZXIuaAorIUVkcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaGVscGVyLmMKKyFQZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjX2hlbHBlci5jIG92ZXJ2aWV3CisgICAgPC9zZWN0Mj4KKyAgICA8c2VjdDI+CisgICAgICA8dGl0bGU+T3V0cHV0IFByb2JpbmcgSGVscGVyIEZ1bmN0aW9ucyBSZWZlcmVuY2U8L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0vZHJtX3Byb2JlX2hlbHBlci5jIG91dHB1dCBwcm9iaW5nIGhlbHBlciBvdmVydmlldworIUVkcml2ZXJzL2dwdS9kcm0vZHJtX3Byb2JlX2hlbHBlci5jCisgICAgPC9zZWN0Mj4KKyAgICA8c2VjdDI+CisgICAgICA8dGl0bGU+ZmJkZXYgSGVscGVyIEZ1bmN0aW9ucyBSZWZlcmVuY2U8L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIGZiZGV2IGhlbHBlcnMKKyFFZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYworIUlpbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmgKKyAgICA8L3NlY3QyPgorICAgIDxzZWN0Mj4KKyAgICAgIDx0aXRsZT5EaXNwbGF5IFBvcnQgSGVscGVyIEZ1bmN0aW9ucyBSZWZlcmVuY2U8L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0vZHJtX2RwX2hlbHBlci5jIGRwIGhlbHBlcnMKKyFJaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oCishRWRyaXZlcnMvZ3B1L2RybS9kcm1fZHBfaGVscGVyLmMKKyAgICA8L3NlY3QyPgorICAgIDxzZWN0Mj4KKyAgICAgIDx0aXRsZT5EaXNwbGF5IFBvcnQgTVNUIEhlbHBlciBGdW5jdGlvbnMgUmVmZXJlbmNlPC90aXRsZT4KKyFQZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYyBkcCBtc3QgaGVscGVyCishSWluY2x1ZGUvZHJtL2RybV9kcF9tc3RfaGVscGVyLmgKKyFFZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYworICAgIDwvc2VjdDI+CisgICAgPHNlY3QyPgorICAgICAgPHRpdGxlPk1JUEkgRFNJIEhlbHBlciBGdW5jdGlvbnMgUmVmZXJlbmNlPC90aXRsZT4KKyFQZHJpdmVycy9ncHUvZHJtL2RybV9taXBpX2RzaS5jIGRzaSBoZWxwZXJzCishSWluY2x1ZGUvZHJtL2RybV9taXBpX2RzaS5oCishRWRyaXZlcnMvZ3B1L2RybS9kcm1fbWlwaV9kc2kuYworICAgIDwvc2VjdDI+CisgICAgPHNlY3QyPgorICAgICAgPHRpdGxlPkVESUQgSGVscGVyIEZ1bmN0aW9ucyBSZWZlcmVuY2U8L3RpdGxlPgorIUVkcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYworICAgIDwvc2VjdDI+CisgICAgPHNlY3QyPgorICAgICAgPHRpdGxlPlJlY3RhbmdsZSBVdGlsaXRpZXMgUmVmZXJlbmNlPC90aXRsZT4KKyFQaW5jbHVkZS9kcm0vZHJtX3JlY3QuaCByZWN0IHV0aWxzCishSWluY2x1ZGUvZHJtL2RybV9yZWN0LmgKKyFFZHJpdmVycy9ncHUvZHJtL2RybV9yZWN0LmMKKyAgICA8L3NlY3QyPgorICAgIDxzZWN0Mj4KKyAgICAgIDx0aXRsZT5GbGlwLXdvcmsgSGVscGVyIFJlZmVyZW5jZTwvdGl0bGU+CishUGluY2x1ZGUvZHJtL2RybV9mbGlwX3dvcmsuaCBmbGlwIHV0aWxzCishSWluY2x1ZGUvZHJtL2RybV9mbGlwX3dvcmsuaAorIUVkcml2ZXJzL2dwdS9kcm0vZHJtX2ZsaXBfd29yay5jCisgICAgPC9zZWN0Mj4KKyAgICA8c2VjdDI+CisgICAgICA8dGl0bGU+SERNSSBJbmZvZnJhbWVzIEhlbHBlciBSZWZlcmVuY2U8L3RpdGxlPgorICAgICAgPHBhcmE+CisJU3RyaWN0bHkgc3BlYWtpbmcgdGhpcyBpcyBub3QgYSBEUk0gaGVscGVyIGxpYnJhcnkgYnV0IGdlbmVyYWxseSB1c2VhYmxlCisJYnkgYW55IGRyaXZlciBpbnRlcmZhY2luZyB3aXRoIEhETUkgb3V0cHV0cyBsaWtlIHY0bCBvciBhbHNhIGRyaXZlcnMuCisJQnV0IGl0IG5pY2VseSBmaXRzIGludG8gdGhlIG92ZXJhbGwgdG9waWMgb2YgbW9kZSBzZXR0aW5nIGhlbHBlcgorCWxpYnJhcmllcyBhbmQgaGVuY2UgaXMgYWxzbyBpbmNsdWRlZCBoZXJlLgorICAgICAgPC9wYXJhPgorIUlpbmNsdWRlL2xpbnV4L2hkbWkuaAorIUVkcml2ZXJzL3ZpZGVvL2hkbWkuYworICAgIDwvc2VjdDI+CisgICAgPHNlY3QyPgorICAgICAgPHRpdGxlIGlkPSJkcm0ta21zLXBsYW5laGVscGVycyI+UGxhbmUgSGVscGVyIFJlZmVyZW5jZTwvdGl0bGU+CishRWRyaXZlcnMvZ3B1L2RybS9kcm1fcGxhbmVfaGVscGVyLmMKKyFQZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZV9oZWxwZXIuYyBvdmVydmlldworICAgIDwvc2VjdDI+CisgICAgPHNlY3QyPgorCSAgPHRpdGxlPlRpbGUgZ3JvdXA8L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYyBUaWxlIGdyb3VwCisgICAgPC9zZWN0Mj4KKyAgICA8c2VjdDI+CisJPHRpdGxlPkJyaWRnZXM8L3RpdGxlPgorICAgICAgPHNlY3QzPgorCSA8dGl0bGU+T3ZlcnZpZXc8L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jIG92ZXJ2aWV3CisgICAgICA8L3NlY3QzPgorICAgICAgPHNlY3QzPgorCSA8dGl0bGU+RGVmYXVsdCBicmlkZ2UgY2FsbGJhY2sgc2VxdWVuY2U8L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jIGJyaWRnZSBjYWxsYmFja3MKKyAgICAgIDwvc2VjdDM+CishRWRyaXZlcnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMKKyAgICA8L3NlY3QyPgorICA8L3NlY3QxPgorCisgIDwhLS0gSW50ZXJuYWxzOiBrbXMgcHJvcGVydGllcyAtLT4KKworICA8c2VjdDEgaWQ9ImRybS1rbXMtcHJvcGVydGllcyI+CisgICAgPHRpdGxlPktNUyBQcm9wZXJ0aWVzPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIERyaXZlcnMgbWF5IG5lZWQgdG8gZXhwb3NlIGFkZGl0aW9uYWwgcGFyYW1ldGVycyB0byBhcHBsaWNhdGlvbnMgdGhhbgorICAgICAgdGhvc2UgZGVzY3JpYmVkIGluIHRoZSBwcmV2aW91cyBzZWN0aW9ucy4gS01TIHN1cHBvcnRzIGF0dGFjaGluZworICAgICAgcHJvcGVydGllcyB0byBDUlRDcywgY29ubmVjdG9ycyBhbmQgcGxhbmVzIGFuZCBvZmZlcnMgYSB1c2Vyc3BhY2UgQVBJIHRvCisgICAgICBsaXN0LCBnZXQgYW5kIHNldCB0aGUgcHJvcGVydHkgdmFsdWVzLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIFByb3BlcnRpZXMgYXJlIGlkZW50aWZpZWQgYnkgYSBuYW1lIHRoYXQgdW5pcXVlbHkgZGVmaW5lcyB0aGUgcHJvcGVydHkKKyAgICAgIHB1cnBvc2UsIGFuZCBzdG9yZSBhbiBhc3NvY2lhdGVkIHZhbHVlLiBGb3IgYWxsIHByb3BlcnR5IHR5cGVzIGV4Y2VwdCBibG9iCisgICAgICBwcm9wZXJ0aWVzIHRoZSB2YWx1ZSBpcyBhIDY0LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIEtNUyBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIHByb3BlcnRpZXMgYW5kIHByb3BlcnR5IGluc3RhbmNlcy4gRHJpdmVycworICAgICAgZmlyc3QgY3JlYXRlIHByb3BlcnRpZXMgYW5kIHRoZW4gY3JlYXRlIGFuZCBhc3NvY2lhdGUgaW5kaXZpZHVhbCBpbnN0YW5jZXMKKyAgICAgIG9mIHRob3NlIHByb3BlcnRpZXMgdG8gb2JqZWN0cy4gQSBwcm9wZXJ0eSBjYW4gYmUgaW5zdGFudGlhdGVkIG11bHRpcGxlCisgICAgICB0aW1lcyBhbmQgYXNzb2NpYXRlZCB3aXRoIGRpZmZlcmVudCBvYmplY3RzLiBWYWx1ZXMgYXJlIHN0b3JlZCBpbiBwcm9wZXJ0eQorICAgICAgaW5zdGFuY2VzLCBhbmQgYWxsIG90aGVyIHByb3BlcnR5IGluZm9ybWF0aW9uIGFyZSBzdG9yZWQgaW4gdGhlIHByb3BlcnR5CisgICAgICBhbmQgc2hhcmVkIGJldHdlZW4gYWxsIGluc3RhbmNlcyBvZiB0aGUgcHJvcGVydHkuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgRXZlcnkgcHJvcGVydHkgaXMgY3JlYXRlZCB3aXRoIGEgdHlwZSB0aGF0IGluZmx1ZW5jZXMgaG93IHRoZSBLTVMgY29yZQorICAgICAgaGFuZGxlcyB0aGUgcHJvcGVydHkuIFN1cHBvcnRlZCBwcm9wZXJ0eSB0eXBlcyBhcmUKKyAgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHRlcm0+RFJNX01PREVfUFJPUF9SQU5HRTwvdGVybT4KKyAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+UmFuZ2UgcHJvcGVydGllcyByZXBvcnQgdGhlaXIgbWluaW11bSBhbmQgbWF4aW11bQorICAgICAgICAgICAgYWRtaXNzaWJsZSB2YWx1ZXMuIFRoZSBLTVMgY29yZSB2ZXJpZmllcyB0aGF0IHZhbHVlcyBzZXQgYnkKKyAgICAgICAgICAgIGFwcGxpY2F0aW9uIGZpdCBpbiB0aGF0IHJhbmdlLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dGVybT5EUk1fTU9ERV9QUk9QX0VOVU08L3Rlcm0+CisgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkVudW1lcmF0ZWQgcHJvcGVydGllcyB0YWtlIGEgbnVtZXJpY2FsIHZhbHVlIHRoYXQKKyAgICAgICAgICAgIHJhbmdlcyBmcm9tIDAgdG8gdGhlIG51bWJlciBvZiBlbnVtZXJhdGVkIHZhbHVlcyBkZWZpbmVkIGJ5IHRoZQorICAgICAgICAgICAgcHJvcGVydHkgbWludXMgb25lLCBhbmQgYXNzb2NpYXRlIGEgZnJlZS1mb3JtZWQgc3RyaW5nIG5hbWUgdG8gZWFjaAorICAgICAgICAgICAgdmFsdWUuIEFwcGxpY2F0aW9ucyBjYW4gcmV0cmlldmUgdGhlIGxpc3Qgb2YgZGVmaW5lZCB2YWx1ZS1uYW1lIHBhaXJzCisgICAgICAgICAgICBhbmQgdXNlIHRoZSBudW1lcmljYWwgdmFsdWUgdG8gZ2V0IGFuZCBzZXQgcHJvcGVydHkgaW5zdGFuY2UgdmFsdWVzLgorICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgIDx0ZXJtPkRSTV9NT0RFX1BST1BfQklUTUFTSzwvdGVybT4KKyAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Qml0bWFzayBwcm9wZXJ0aWVzIGFyZSBlbnVtZXJhdGlvbiBwcm9wZXJ0aWVzIHRoYXQKKyAgICAgICAgICAgIGFkZGl0aW9uYWxseSByZXN0cmljdCBhbGwgZW51bWVyYXRlZCB2YWx1ZXMgdG8gdGhlIDAuLjYzIHJhbmdlLgorICAgICAgICAgICAgQml0bWFzayBwcm9wZXJ0eSBpbnN0YW5jZSB2YWx1ZXMgY29tYmluZSBvbmUgb3IgbW9yZSBvZiB0aGUKKyAgICAgICAgICAgIGVudW1lcmF0ZWQgYml0cyBkZWZpbmVkIGJ5IHRoZSBwcm9wZXJ0eS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHRlcm0+RFJNX01PREVfUFJPUF9CTE9CPC90ZXJtPgorICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5CbG9iIHByb3BlcnRpZXMgc3RvcmUgYSBiaW5hcnkgYmxvYiB3aXRob3V0IGFueSBmb3JtYXQKKyAgICAgICAgICAgIHJlc3RyaWN0aW9uLiBUaGUgYmluYXJ5IGJsb2JzIGFyZSBjcmVhdGVkIGFzIEtNUyBzdGFuZGFsb25lIG9iamVjdHMsCisgICAgICAgICAgICBhbmQgYmxvYiBwcm9wZXJ0eSBpbnN0YW5jZSB2YWx1ZXMgc3RvcmUgdGhlIElEIG9mIHRoZWlyIGFzc29jaWF0ZWQKKyAgICAgICAgICAgIGJsb2Igb2JqZWN0LjwvcGFyYT4KKwkgICAgPHBhcmE+QmxvYiBwcm9wZXJ0aWVzIGFyZSBvbmx5IHVzZWQgZm9yIHRoZSBjb25uZWN0b3IgRURJRCBwcm9wZXJ0eQorCSAgICBhbmQgY2Fubm90IGJlIGNyZWF0ZWQgYnkgZHJpdmVycy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBUbyBjcmVhdGUgYSBwcm9wZXJ0eSBkcml2ZXJzIGNhbGwgb25lIG9mIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGRlcGVuZGluZworICAgICAgb24gdGhlIHByb3BlcnR5IHR5cGUuIEFsbCBwcm9wZXJ0eSBjcmVhdGlvbiBmdW5jdGlvbnMgdGFrZSBwcm9wZXJ0eSBmbGFncworICAgICAgYW5kIG5hbWUsIGFzIHdlbGwgYXMgdHlwZS1zcGVjaWZpYyBhcmd1bWVudHMuCisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHN5bm9wc2lzPnN0cnVjdCBkcm1fcHJvcGVydHkgKmRybV9wcm9wZXJ0eV9jcmVhdGVfcmFuZ2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBtaW4sIHVpbnQ2NF90IG1heCk7PC9zeW5vcHNpcz4KKyAgICAgICAgICA8cGFyYT5DcmVhdGUgYSByYW5nZSBwcm9wZXJ0eSB3aXRoIHRoZSBnaXZlbiBtaW5pbXVtIGFuZCBtYXhpbXVtCisgICAgICAgICAgICB2YWx1ZXMuPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHN5bm9wc2lzPnN0cnVjdCBkcm1fcHJvcGVydHkgKmRybV9wcm9wZXJ0eV9jcmVhdGVfZW51bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX3Byb3BfZW51bV9saXN0ICpwcm9wcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtX3ZhbHVlcyk7PC9zeW5vcHNpcz4KKyAgICAgICAgICA8cGFyYT5DcmVhdGUgYW4gZW51bWVyYXRlZCBwcm9wZXJ0eS4gVGhlIDxwYXJhbWV0ZXI+cHJvcHM8L3BhcmFtZXRlcj4KKyAgICAgICAgICAgIGFyZ3VtZW50IHBvaW50cyB0byBhbiBhcnJheSBvZiA8cGFyYW1ldGVyPm51bV92YWx1ZXM8L3BhcmFtZXRlcj4KKyAgICAgICAgICAgIHZhbHVlLW5hbWUgcGFpcnMuPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHN5bm9wc2lzPnN0cnVjdCBkcm1fcHJvcGVydHkgKmRybV9wcm9wZXJ0eV9jcmVhdGVfYml0bWFzayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncywgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX3Byb3BfZW51bV9saXN0ICpwcm9wcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtX3ZhbHVlcyk7PC9zeW5vcHNpcz4KKyAgICAgICAgICA8cGFyYT5DcmVhdGUgYSBiaXRtYXNrIHByb3BlcnR5LiBUaGUgPHBhcmFtZXRlcj5wcm9wczwvcGFyYW1ldGVyPgorICAgICAgICAgICAgYXJndW1lbnQgcG9pbnRzIHRvIGFuIGFycmF5IG9mIDxwYXJhbWV0ZXI+bnVtX3ZhbHVlczwvcGFyYW1ldGVyPgorICAgICAgICAgICAgdmFsdWUtbmFtZSBwYWlycy48L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBQcm9wZXJ0aWVzIGNhbiBhZGRpdGlvbmFsbHkgYmUgY3JlYXRlZCBhcyBpbW11dGFibGUsIGluIHdoaWNoIGNhc2UgdGhleQorICAgICAgd2lsbCBiZSByZWFkLW9ubHkgZm9yIGFwcGxpY2F0aW9ucyBidXQgY2FuIGJlIG1vZGlmaWVkIGJ5IHRoZSBkcml2ZXIuIFRvCisgICAgICBjcmVhdGUgYW4gaW1tdXRhYmxlIHByb3BlcnR5IGRyaXZlcnMgbXVzdCBzZXQgdGhlIERSTV9NT0RFX1BST1BfSU1NVVRBQkxFCisgICAgICBmbGFnIGF0IHByb3BlcnR5IGNyZWF0aW9uIHRpbWUuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgV2hlbiBubyBhcnJheSBvZiB2YWx1ZS1uYW1lIHBhaXJzIGlzIHJlYWRpbHkgYXZhaWxhYmxlIGF0IHByb3BlcnR5CisgICAgICBjcmVhdGlvbiB0aW1lIGZvciBlbnVtZXJhdGVkIG9yIHJhbmdlIHByb3BlcnRpZXMsIGRyaXZlcnMgY2FuIGNyZWF0ZQorICAgICAgdGhlIHByb3BlcnR5IHVzaW5nIHRoZSA8ZnVuY3Rpb24+ZHJtX3Byb3BlcnR5X2NyZWF0ZTwvZnVuY3Rpb24+IGZ1bmN0aW9uCisgICAgICBhbmQgbWFudWFsbHkgYWRkIGVudW1lcmF0aW9uIHZhbHVlLW5hbWUgcGFpcnMgYnkgY2FsbGluZyB0aGUKKyAgICAgIDxmdW5jdGlvbj5kcm1fcHJvcGVydHlfYWRkX2VudW08L2Z1bmN0aW9uPiBmdW5jdGlvbi4gQ2FyZSBtdXN0IGJlIHRha2VuIHRvCisgICAgICBwcm9wZXJseSBzcGVjaWZ5IHRoZSBwcm9wZXJ0eSB0eXBlIHRocm91Z2ggdGhlIDxwYXJhbWV0ZXI+ZmxhZ3M8L3BhcmFtZXRlcj4KKyAgICAgIGFyZ3VtZW50LgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIEFmdGVyIGNyZWF0aW5nIHByb3BlcnRpZXMgZHJpdmVycyBjYW4gYXR0YWNoIHByb3BlcnR5IGluc3RhbmNlcyB0byBDUlRDLAorICAgICAgY29ubmVjdG9yIGFuZCBwbGFuZSBvYmplY3RzIGJ5IGNhbGxpbmcgdGhlCisgICAgICA8ZnVuY3Rpb24+ZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHk8L2Z1bmN0aW9uPi4gVGhlIGZ1bmN0aW9uIHRha2VzIGEKKyAgICAgIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBvYmplY3QsIGEgcG9pbnRlciB0byB0aGUgcHJldmlvdXNseSBjcmVhdGVkIHByb3BlcnR5CisgICAgICBhbmQgYW4gaW5pdGlhbCBpbnN0YW5jZSB2YWx1ZS4KKyAgICA8L3BhcmE+CisgICAgPHNlY3QyPgorCTx0aXRsZT5FeGlzdGluZyBLTVMgUHJvcGVydGllczwvdGl0bGU+CisJPHBhcmE+CisJVGhlIGZvbGxvd2luZyB0YWJsZSBnaXZlcyBkZXNjcmlwdGlvbiBvZiBkcm0gcHJvcGVydGllcyBleHBvc2VkIGJ5IHZhcmlvdXMKKwltb2R1bGVzL2RyaXZlcnMuCisJPC9wYXJhPgorCTx0YWJsZSBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CisJPHRib2R5PgorCTx0ciBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij4KKwk8dGQgdmFsaWduPSJ0b3AiID5Pd25lciBNb2R1bGUvRHJpdmVyczwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+R3JvdXA8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlByb3BlcnR5IE5hbWU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlR5cGU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlByb3BlcnR5IFZhbHVlczwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+T2JqZWN0IGF0dGFjaGVkPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5EZXNjcmlwdGlvbi9SZXN0cmljdGlvbnM8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCByb3dzcGFuPSIzNyIgdmFsaWduPSJ0b3AiID5EUk08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkdlbmVyaWM8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnHJvdGF0aW9u4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5CSVRNQVNLPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID57IDAsICJyb3RhdGUtMCIgfSwKKwl7IDEsICJyb3RhdGUtOTAiIH0sCisJeyAyLCAicm90YXRlLTE4MCIgfSwKKwl7IDMsICJyb3RhdGUtMjcwIiB9LAorCXsgNCwgInJlZmxlY3QteCIgfSwKKwl7IDUsICJyZWZsZWN0LXkiIH08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNSVEMsIFBsYW5lPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5yb3RhdGUtKGRlZ3JlZXMpIHJvdGF0ZXMgdGhlIGltYWdlIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50IGluIGRlZ3JlZXMKKwlpbiBjb3VudGVyIGNsb2Nrd2lzZSBkaXJlY3Rpb24uIHJlZmxlY3QteCBhbmQgcmVmbGVjdC15IHJlZmxlY3RzIHRoZQorCWltYWdlIGFsb25nIHRoZSBzcGVjaWZpZWQgYXhpcyBwcmlvciB0byByb3RhdGlvbjwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHJvd3NwYW49IjUiIHZhbGlnbj0idG9wIiA+Q29ubmVjdG9yPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID7igJxFRElE4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5CTE9CIHwgSU1NVVRBQkxFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID4wPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbnRhaW5zIGlkIG9mIGVkaWQgYmxvYiBwdHIgb2JqZWN0LjwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcRFBNU+KAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+RU5VTTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+eyDigJxPbuKAnSwg4oCcU3RhbmRieeKAnSwg4oCcU3VzcGVuZOKAnSwg4oCcT2Zm4oCdIH08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29udGFpbnMgRFBNUyBvcGVyYXRpb24gbW9kZSB2YWx1ZS48L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnFBBVEjigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkJMT0IgfCBJTU1VVEFCTEU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPjA8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29udGFpbnMgdG9wb2xvZ3kgcGF0aCB0byBhIGNvbm5lY3Rvci48L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnFRJTEXigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkJMT0IgfCBJTU1VVEFCTEU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPjA8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29udGFpbnMgdGlsaW5nIGluZm9ybWF0aW9uIGZvciBhIGNvbm5lY3Rvci48L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnENSVENfSUTigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk9CSkVDVDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+RFJNX01PREVfT0JKRUNUX0NSVEM8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q1JUQyB0aGF0IGNvbm5lY3RvciBpcyBhdHRhY2hlZCB0byAoYXRvbWljKTwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHJvd3NwYW49IjExIiB2YWxpZ249InRvcCIgPlBsYW5lPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID7igJx0eXBl4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5FTlVNIHwgSU1NVVRBQkxFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID57ICJPdmVybGF5IiwgIlByaW1hcnkiLCAiQ3Vyc29yIiB9PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5QbGFuZTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UGxhbmUgdHlwZTwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcU1JDX1jigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PVVJTlRfTUFYPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5QbGFuZTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+U2Nhbm91dCBzb3VyY2UgeCBjb29yZGluYXRlIGluIDE2LjE2IGZpeGVkIHBvaW50IChhdG9taWMpPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID7igJxTUkNfWeKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9VUlOVF9NQVg8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlBsYW5lPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5TY2Fub3V0IHNvdXJjZSB5IGNvb3JkaW5hdGUgaW4gMTYuMTYgZml4ZWQgcG9pbnQgKGF0b21pYyk8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnFNSQ19X4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD1VSU5UX01BWDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UGxhbmU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlNjYW5vdXQgc291cmNlIHdpZHRoIGluIDE2LjE2IGZpeGVkIHBvaW50IChhdG9taWMpPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID7igJxTUkNfSOKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9VUlOVF9NQVg8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlBsYW5lPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5TY2Fub3V0IHNvdXJjZSBoZWlnaHQgaW4gMTYuMTYgZml4ZWQgcG9pbnQgKGF0b21pYyk8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnENSVENfWOKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+U0lHTkVEX1JBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49SU5UX01JTiwgTWF4PUlOVF9NQVg8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlBsYW5lPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5TY2Fub3V0IENSVEMgKGRlc3RpbmF0aW9uKSB4IGNvb3JkaW5hdGUgKGF0b21pYyk8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnENSVENfWeKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+U0lHTkVEX1JBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49SU5UX01JTiwgTWF4PUlOVF9NQVg8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlBsYW5lPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5TY2Fub3V0IENSVEMgKGRlc3RpbmF0aW9uKSB5IGNvb3JkaW5hdGUgKGF0b21pYyk8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnENSVENfV+KAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9VUlOVF9NQVg8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlBsYW5lPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5TY2Fub3V0IENSVEMgKGRlc3RpbmF0aW9uKSB3aWR0aCAoYXRvbWljKTwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcQ1JUQ19I4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD1VSU5UX01BWDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UGxhbmU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlNjYW5vdXQgQ1JUQyAoZGVzdGluYXRpb24pIGhlaWdodCAoYXRvbWljKTwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcRkJfSUTigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk9CSkVDVDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+RFJNX01PREVfT0JKRUNUX0ZCPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5QbGFuZTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+U2Nhbm91dCBmcmFtZWJ1ZmZlciAoYXRvbWljKTwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcQ1JUQ19JROKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+T0JKRUNUPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5EUk1fTU9ERV9PQkpFQ1RfQ1JUQzwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UGxhbmU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNSVEMgdGhhdCBwbGFuZSBpcyBhdHRhY2hlZCB0byAoYXRvbWljKTwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIiA+RFZJLUk8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnHN1YmNvbm5lY3RvcuKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+RU5VTTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+eyDigJxVbmtub3du4oCdLCDigJxEVkktROKAnSwg4oCcRFZJLUHigJ0gfTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29ubmVjdG9yPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnHNlbGVjdCBzdWJjb25uZWN0b3LigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkVOVU08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPnsg4oCcQXV0b21hdGlj4oCdLCDigJxEVkktROKAnSwg4oCcRFZJLUHigJ0gfTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29ubmVjdG9yPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCByb3dzcGFuPSIxMyIgdmFsaWduPSJ0b3AiID5UVjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcc3ViY29ubmVjdG9y4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5FTlVNPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID57ICJVbmtub3duIiwgIkNvbXBvc2l0ZSIsICJTVklERU8iLCAiQ29tcG9uZW50IiwgIlNDQVJUIiB9PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcc2VsZWN0IHN1YmNvbm5lY3RvcuKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+RU5VTTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+eyAiQXV0b21hdGljIiwgIkNvbXBvc2l0ZSIsICJTVklERU8iLCAiQ29tcG9uZW50IiwgIlNDQVJUIiB9PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcbW9kZeKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+RU5VTTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+eyAiTlRTQ19NIiwgIk5UU0NfSiIsICJOVFNDXzQ0MyIsICJQQUxfQiIgfSBldGMuPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcbGVmdCBtYXJnaW7igJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PTEwMDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29ubmVjdG9yPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnHJpZ2h0IG1hcmdpbuKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9MTAwPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcdG9wIG1hcmdpbuKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9MTAwPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcYm90dG9tIG1hcmdpbuKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9MTAwPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcYnJpZ2h0bmVzc+KAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9MTAwPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcY29udHJhc3TigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PTEwMDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29ubmVjdG9yPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnGZsaWNrZXIgcmVkdWN0aW9u4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0xMDA8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID7igJxvdmVyc2NhbuKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9MTAwPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcc2F0dXJhdGlvbuKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9MTAwPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcaHVl4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0xMDA8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiID5WaXJ0dWFsIEdQVTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcc3VnZ2VzdGVkIFjigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PTB4ZmZmZmZmZmY8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+cHJvcGVydHkgdG8gc3VnZ2VzdCBhbiBYIG9mZnNldCBmb3IgYSBjb25uZWN0b3I8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnHN1Z2dlc3RlZCBZ4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0weGZmZmZmZmZmPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPnByb3BlcnR5IHRvIHN1Z2dlc3QgYW4gWSBvZmZzZXQgZm9yIGEgY29ubmVjdG9yPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgcm93c3Bhbj0iMyIgdmFsaWduPSJ0b3AiID5PcHRpb25hbDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcc2NhbGluZyBtb2Rl4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5FTlVNPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID57ICJOb25lIiwgIkZ1bGwiLCAiQ2VudGVyIiwgIkZ1bGwgYXNwZWN0IiB9PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+ImFzcGVjdCByYXRpbyI8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkVOVU08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPnsgIk5vbmUiLCAiNDozIiwgIjE2OjkiIH08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+RFJNIHByb3BlcnR5IHRvIHNldCBhc3BlY3QgcmF0aW8gZnJvbSB1c2VyIHNwYWNlIGFwcC4KKwkJVGhpcyBlbnVtIGlzIG1hZGUgZ2VuZXJpYyB0byBhbGxvdyBhZGRpdGlvbiBvZiBjdXN0b20gYXNwZWN0CisJCXJhdGlvcy48L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnGRpcnR54oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5FTlVNIHwgSU1NVVRBQkxFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID57ICJPZmYiLCAiT24iLCAiQW5ub3RhdGUiIH08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgcm93c3Bhbj0iMjAiIHZhbGlnbj0idG9wIiA+aTkxNTwvdGQ+CisJPHRkIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIiA+R2VuZXJpYzwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+IkJyb2FkY2FzdCBSR0IiPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5FTlVNPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID57ICJBdXRvbWF0aWMiLCAiRnVsbCIsICJMaW1pdGVkIDE2OjIzNSIgfTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29ubmVjdG9yPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnGF1ZGlv4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5FTlVNPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID57ICJmb3JjZS1kdmkiLCAib2ZmIiwgImF1dG8iLCAib24iIH08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgcm93c3Bhbj0iMTciIHZhbGlnbj0idG9wIiA+U0RWTy1UVjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcbW9kZeKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+RU5VTTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+eyAiTlRTQ19NIiwgIk5UU0NfSiIsICJOVFNDXzQ0MyIsICJQQUxfQiIgfSBldGMuPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+ImxlZnRfbWFyZ2luIjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9IFNEVk8gZGVwZW5kZW50PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+InJpZ2h0X21hcmdpbiI8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PSBTRFZPIGRlcGVuZGVudDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29ubmVjdG9yPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPiJ0b3BfbWFyZ2luIjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9IFNEVk8gZGVwZW5kZW50PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+ImJvdHRvbV9tYXJnaW4iPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0gU0RWTyBkZXBlbmRlbnQ8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID7igJxocG9z4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0gU0RWTyBkZXBlbmRlbnQ8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID7igJx2cG9z4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0gU0RWTyBkZXBlbmRlbnQ8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID7igJxjb250cmFzdOKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9IFNEVk8gZGVwZW5kZW50PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcc2F0dXJhdGlvbuKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9IFNEVk8gZGVwZW5kZW50PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcaHVl4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0gU0RWTyBkZXBlbmRlbnQ8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID7igJxzaGFycG5lc3PigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PSBTRFZPIGRlcGVuZGVudDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29ubmVjdG9yPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnGZsaWNrZXJfZmlsdGVy4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0gU0RWTyBkZXBlbmRlbnQ8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID7igJxmbGlja2VyX2ZpbHRlcl9hZGFwdGl2ZeKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9IFNEVk8gZGVwZW5kZW50PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcZmxpY2tlcl9maWx0ZXJfMmTigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PSBTRFZPIGRlcGVuZGVudDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29ubmVjdG9yPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnHR2X2Nocm9tYV9maWx0ZXLigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PSBTRFZPIGRlcGVuZGVudDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29ubmVjdG9yPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnHR2X2x1bWFfZmlsdGVy4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0gU0RWTyBkZXBlbmRlbnQ8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID7igJxkb3RfY3Jhd2zigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PTE8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID5TRFZPLVRWL0xWRFM8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnGJyaWdodG5lc3PigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PSBTRFZPIGRlcGVuZGVudDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29ubmVjdG9yPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCByb3dzcGFuPSIyIiB2YWxpZ249InRvcCIgPkNEViBnbWEtNTAwPC90ZD4KKwk8dGQgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiID5HZW5lcmljPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID4iQnJvYWRjYXN0IFJHQiI8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkVOVU08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPnsg4oCcRnVsbOKAnSwg4oCcTGltaXRlZCAxNjoyMzXigJ0gfTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29ubmVjdG9yPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPiJCcm9hZGNhc3QgUkdCIjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+RU5VTTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+eyDigJxvZmbigJ0sIOKAnGF1dG/igJ0sIOKAnG9u4oCdIH08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgcm93c3Bhbj0iMTkiIHZhbGlnbj0idG9wIiA+UG91bHNibzwvdGQ+CisJPHRkIHJvd3NwYW49IjEiIHZhbGlnbj0idG9wIiA+R2VuZXJpYzwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcYmFja2xpZ2h04oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0xMDA8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgcm93c3Bhbj0iMTciIHZhbGlnbj0idG9wIiA+U0RWTy1UVjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcbW9kZeKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+RU5VTTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+eyAiTlRTQ19NIiwgIk5UU0NfSiIsICJOVFNDXzQ0MyIsICJQQUxfQiIgfSBldGMuPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+ImxlZnRfbWFyZ2luIjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9IFNEVk8gZGVwZW5kZW50PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+InJpZ2h0X21hcmdpbiI8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PSBTRFZPIGRlcGVuZGVudDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29ubmVjdG9yPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPiJ0b3BfbWFyZ2luIjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9IFNEVk8gZGVwZW5kZW50PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+ImJvdHRvbV9tYXJnaW4iPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0gU0RWTyBkZXBlbmRlbnQ8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID7igJxocG9z4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0gU0RWTyBkZXBlbmRlbnQ8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID7igJx2cG9z4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0gU0RWTyBkZXBlbmRlbnQ8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID7igJxjb250cmFzdOKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9IFNEVk8gZGVwZW5kZW50PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcc2F0dXJhdGlvbuKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9IFNEVk8gZGVwZW5kZW50PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcaHVl4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0gU0RWTyBkZXBlbmRlbnQ8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID7igJxzaGFycG5lc3PigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PSBTRFZPIGRlcGVuZGVudDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29ubmVjdG9yPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnGZsaWNrZXJfZmlsdGVy4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0gU0RWTyBkZXBlbmRlbnQ8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID7igJxmbGlja2VyX2ZpbHRlcl9hZGFwdGl2ZeKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9IFNEVk8gZGVwZW5kZW50PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcZmxpY2tlcl9maWx0ZXJfMmTigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PSBTRFZPIGRlcGVuZGVudDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29ubmVjdG9yPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnHR2X2Nocm9tYV9maWx0ZXLigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PSBTRFZPIGRlcGVuZGVudDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29ubmVjdG9yPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnHR2X2x1bWFfZmlsdGVy4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0gU0RWTyBkZXBlbmRlbnQ8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID7igJxkb3RfY3Jhd2zigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PTE8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID5TRFZPLVRWL0xWRFM8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnGJyaWdodG5lc3PigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PSBTRFZPIGRlcGVuZGVudDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29ubmVjdG9yPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCByb3dzcGFuPSIxMSIgdmFsaWduPSJ0b3AiID5hcm1hZGE8L3RkPgorCTx0ZCByb3dzcGFuPSIyIiB2YWxpZ249InRvcCIgPkNSVEM8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPiJDU0NfWVVWIjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+RU5VTTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+eyAiQXV0byIgLCAiQ0NJUjYwMSIsICJDQ0lSNzA5IiB9PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5DUlRDPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPiJDU0NfUkdCIjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+RU5VTTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+eyAiQXV0byIsICJDb21wdXRlciBzeXN0ZW0iLCAiU3R1ZGlvIiB9PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5DUlRDPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCByb3dzcGFuPSI5IiB2YWxpZ249InRvcCIgPk92ZXJsYXk8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPiJjb2xvcmtleSI8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PTB4ZmZmZmZmPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5QbGFuZTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID4iY29sb3JrZXlfbWluIjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9MHhmZmZmZmY8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlBsYW5lPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPiJjb2xvcmtleV9tYXgiPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0weGZmZmZmZjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UGxhbmU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+ImNvbG9ya2V5X3ZhbCI8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PTB4ZmZmZmZmPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5QbGFuZTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID4iY29sb3JrZXlfYWxwaGEiPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0weGZmZmZmZjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UGxhbmU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+ImNvbG9ya2V5X21vZGUiPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5FTlVNPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID57ICJkaXNhYmxlZCIsICJZIGNvbXBvbmVudCIsICJVIGNvbXBvbmVudCIKKwksICJWIGNvbXBvbmVudCIsICJSR0IiLCDigJxSIGNvbXBvbmVudCIsICJHIGNvbXBvbmVudCIsICJCIGNvbXBvbmVudCIgfTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UGxhbmU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+ImJyaWdodG5lc3MiPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0yNTYgKyAyNTU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlBsYW5lPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPiJjb250cmFzdCI8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PTB4N2ZmZjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UGxhbmU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+InNhdHVyYXRpb24iPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0weDdmZmY8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlBsYW5lPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCByb3dzcGFuPSIyIiB2YWxpZ249InRvcCIgPmV4eW5vczwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q1JUQzwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcbW9kZeKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+RU5VTTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+eyAibm9ybWFsIiwgImJsYW5rIiB9PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5DUlRDPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPk92ZXJsYXk8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnHpwb3PigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PU1BWF9QTEFORS0xPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5QbGFuZTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgcm93c3Bhbj0iMiIgdmFsaWduPSJ0b3AiID5pMmMvY2g3MDA2X2RydjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+R2VuZXJpYzwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcc2NhbGXigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PTI8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgcm93c3Bhbj0iMSIgdmFsaWduPSJ0b3AiID5UVjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcbW9kZeKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+RU5VTTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+eyAiUEFMIiwgIlBBTC1NIiwiUEFMLU4ifSwg4oCdUEFMLU5jIgorCSwgIlBBTC02MCIsICJOVFNDLU0iLCAiTlRTQy1KIiB9PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHJvd3NwYW49IjE1IiB2YWxpZ249InRvcCIgPm5vdXZlYXU8L3RkPgorCTx0ZCByb3dzcGFuPSI2IiB2YWxpZ249InRvcCIgPk5WMTAgT3ZlcmxheTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+ImNvbG9ya2V5IjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9MHgwMWZmZmZmZjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UGxhbmU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcY29udHJhc3TigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PTgxOTItMTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UGxhbmU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcYnJpZ2h0bmVzc+KAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9MTAyNDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UGxhbmU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcaHVl4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0zNTk8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlBsYW5lPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnHNhdHVyYXRpb27igJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PTgxOTItMTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UGxhbmU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcaXR1cmJ0XzcwOeKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9MTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UGxhbmU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIiA+TnYwNCBPdmVybGF5PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID7igJxjb2xvcmtleeKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9MHgwMWZmZmZmZjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UGxhbmU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcYnJpZ2h0bmVzc+KAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9MTAyNDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UGxhbmU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHJvd3NwYW49IjciIHZhbGlnbj0idG9wIiA+RGlzcGxheTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcZGl0aGVyaW5nIG1vZGXigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkVOVU08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPnsgImF1dG8iLCAib2ZmIiwgIm9uIiB9PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcZGl0aGVyaW5nIGRlcHRo4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5FTlVNPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID57ICJhdXRvIiwgIm9mZiIsICJvbiIsICJzdGF0aWMgMngyIiwgImR5bmFtaWMgMngyIiwgInRlbXBvcmFsIiB9PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcdW5kZXJzY2Fu4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5FTlVNPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID57ICJhdXRvIiwgIjYgYnBjIiwgIjggYnBjIiB9PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcdW5kZXJzY2FuIGhib3JkZXLigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PTEyODwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29ubmVjdG9yPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnHVuZGVyc2NhbiB2Ym9yZGVy4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0xMjg8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID7igJx2aWJyYW50IGh1ZeKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9MTgwPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcY29sb3IgdmlicmFuY2XigJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PTIwMDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29ubmVjdG9yPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPm9tYXA8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkdlbmVyaWM8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnHpvcmRlcuKAnTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9MzwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q1JUQywgUGxhbmU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+cXhsPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5HZW5lcmljPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID7igJxob3RwbHVnX21vZGVfdXBkYXRlIjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9MTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+Q29ubmVjdG9yPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCByb3dzcGFuPSI5IiB2YWxpZ249InRvcCIgPnJhZGVvbjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+RFZJLUk8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPuKAnGNvaGVyZW504oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0xPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+REFDIGVuYWJsZSBsb2FkIGRldGVjdDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcbG9hZCBkZXRlY3Rpb27igJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PTE8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID5UViBTdGFuZGFyZDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+InR2IHN0YW5kYXJkIjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+RU5VTTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+eyAibnRzYyIsICJwYWwiLCAicGFsLW0iLCAicGFsLTYwIiwgIm50c2MtaiIKKwksICJzY2FydC1wYWwiLCAicGFsLWNuIiwgInNlY2FtIiB9PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+bGVnYWN5IFRNRFMgUExMIGRldGVjdDwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+InRtZHNfcGxsIjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+RU5VTTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+eyAiZHJpdmVyIiwgImJpb3MiIH08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPi08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHJvd3NwYW49IjMiIHZhbGlnbj0idG9wIiA+VW5kZXJzY2FuPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID4idW5kZXJzY2FuIjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+RU5VTTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+eyAib2ZmIiwgIm9uIiwgImF1dG8iIH08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID4idW5kZXJzY2FuIGhib3JkZXIiPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0xMjg8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID4idW5kZXJzY2FuIHZib3JkZXIiPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0xMjg8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgdmFsaWduPSJ0b3AiID5BdWRpbzwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcYXVkaW/igJ08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkVOVU08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPnsgIm9mZiIsICJvbiIsICJhdXRvIiB9PC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5Db25uZWN0b3I8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8dHI+CisJPHRkIHZhbGlnbj0idG9wIiA+Rk1UIERpdGhlcmluZzwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+4oCcZGl0aGVy4oCdPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5FTlVNPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID57ICJvZmYiLCAib24iIH08L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPkNvbm5lY3RvcjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KKwk8L3RyPgorCTx0cj4KKwk8dGQgcm93c3Bhbj0iMyIgdmFsaWduPSJ0b3AiID5yY2FyLWR1PC90ZD4KKwk8dGQgcm93c3Bhbj0iMyIgdmFsaWduPSJ0b3AiID5HZW5lcmljPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID4iYWxwaGEiPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRTwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+TWluPTAsIE1heD0yNTU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlBsYW5lPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPiJjb2xvcmtleSI8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PTB4MDFmZmZmZmY8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlBsYW5lPC90ZD4KKwk8dGQgdmFsaWduPSJ0b3AiID5UQkQ8L3RkPgorCTwvdHI+CisJPHRyPgorCTx0ZCB2YWxpZ249InRvcCIgPiJ6cG9zIjwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UkFOR0U8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0xLCBNYXg9NzwvdGQ+CisJPHRkIHZhbGlnbj0idG9wIiA+UGxhbmU8L3RkPgorCTx0ZCB2YWxpZ249InRvcCIgPlRCRDwvdGQ+CisJPC90cj4KKwk8L3Rib2R5PgorCTwvdGFibGU+CisgICAgPC9zZWN0Mj4KKyAgPC9zZWN0MT4KKworICA8IS0tIEludGVybmFsczogdmVydGljYWwgYmxhbmtpbmcgLS0+CisKKyAgPHNlY3QxIGlkPSJkcm0tdmVydGljYWwtYmxhbmsiPgorICAgIDx0aXRsZT5WZXJ0aWNhbCBCbGFua2luZzwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICBWZXJ0aWNhbCBibGFua2luZyBwbGF5cyBhIG1ham9yIHJvbGUgaW4gZ3JhcGhpY3MgcmVuZGVyaW5nLiBUbyBhY2hpZXZlCisgICAgICB0ZWFyLWZyZWUgZGlzcGxheSwgdXNlcnMgbXVzdCBzeW5jaHJvbml6ZSBwYWdlIGZsaXBzIGFuZC9vciByZW5kZXJpbmcgdG8KKyAgICAgIHZlcnRpY2FsIGJsYW5raW5nLiBUaGUgRFJNIEFQSSBvZmZlcnMgaW9jdGxzIHRvIHBlcmZvcm0gcGFnZSBmbGlwcworICAgICAgc3luY2hyb25pemVkIHRvIHZlcnRpY2FsIGJsYW5raW5nIGFuZCB3YWl0IGZvciB2ZXJ0aWNhbCBibGFua2luZy4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBUaGUgRFJNIGNvcmUgaGFuZGxlcyBtb3N0IG9mIHRoZSB2ZXJ0aWNhbCBibGFua2luZyBtYW5hZ2VtZW50IGxvZ2ljLCB3aGljaAorICAgICAgaW52b2x2ZXMgZmlsdGVyaW5nIG91dCBzcHVyaW91cyBpbnRlcnJ1cHRzLCBrZWVwaW5nIHJhY2UtZnJlZSBibGFua2luZworICAgICAgY291bnRlcnMsIGNvcGluZyB3aXRoIGNvdW50ZXIgd3JhcC1hcm91bmQgYW5kIHJlc2V0cyBhbmQga2VlcGluZyB1c2UKKyAgICAgIGNvdW50cy4gSXQgcmVsaWVzIG9uIHRoZSBkcml2ZXIgdG8gZ2VuZXJhdGUgdmVydGljYWwgYmxhbmtpbmcgaW50ZXJydXB0cworICAgICAgYW5kIG9wdGlvbmFsbHkgcHJvdmlkZSBhIGhhcmR3YXJlIHZlcnRpY2FsIGJsYW5raW5nIGNvdW50ZXIuIERyaXZlcnMgbXVzdAorICAgICAgaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9ucy4KKyAgICA8L3BhcmE+CisgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHN5bm9wc2lzPmludCAoKmVuYWJsZV92YmxhbmspIChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0Yyk7Cit2b2lkICgqZGlzYWJsZV92YmxhbmspIChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0Yyk7PC9zeW5vcHNpcz4KKyAgICAgICAgPHBhcmE+CisJICBFbmFibGUgb3IgZGlzYWJsZSB2ZXJ0aWNhbCBibGFua2luZyBpbnRlcnJ1cHRzIGZvciB0aGUgZ2l2ZW4gQ1JUQy4KKwk8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8c3lub3BzaXM+dTMyICgqZ2V0X3ZibGFua19jb3VudGVyKSAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpOzwvc3lub3BzaXM+CisgICAgICAgIDxwYXJhPgorCSAgUmV0cmlldmUgdGhlIHZhbHVlIG9mIHRoZSB2ZXJ0aWNhbCBibGFua2luZyBjb3VudGVyIGZvciB0aGUgZ2l2ZW4KKwkgIENSVEMuIElmIHRoZSBoYXJkd2FyZSBtYWludGFpbnMgYSB2ZXJ0aWNhbCBibGFua2luZyBjb3VudGVyIGl0cyB2YWx1ZQorCSAgc2hvdWxkIGJlIHJldHVybmVkLiBPdGhlcndpc2UgZHJpdmVycyBjYW4gdXNlIHRoZQorCSAgPGZ1bmN0aW9uPmRybV92YmxhbmtfY291bnQ8L2Z1bmN0aW9uPiBoZWxwZXIgZnVuY3Rpb24gdG8gaGFuZGxlIHRoaXMKKwkgIG9wZXJhdGlvbi4KKwk8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDxwYXJhPgorICAgICAgRHJpdmVycyBtdXN0IGluaXRpYWxpemUgdGhlIHZlcnRpY2FsIGJsYW5raW5nIGhhbmRsaW5nIGNvcmUgd2l0aCBhIGNhbGwgdG8KKyAgICAgIDxmdW5jdGlvbj5kcm1fdmJsYW5rX2luaXQ8L2Z1bmN0aW9uPiBpbiB0aGVpcgorICAgICAgPG1ldGhvZG5hbWU+bG9hZDwvbWV0aG9kbmFtZT4gb3BlcmF0aW9uLiBUaGUgZnVuY3Rpb24gd2lsbCBzZXQgdGhlIHN0cnVjdAorICAgICAgPHN0cnVjdG5hbWU+ZHJtX2RldmljZTwvc3RydWN0bmFtZT4KKyAgICAgIDxzdHJ1Y3RmaWVsZD52YmxhbmtfZGlzYWJsZV9hbGxvd2VkPC9zdHJ1Y3RmaWVsZD4gZmllbGQgdG8gMC4gVGhpcyB3aWxsCisgICAgICBrZWVwIHZlcnRpY2FsIGJsYW5raW5nIGludGVycnVwdHMgZW5hYmxlZCBwZXJtYW5lbnRseSB1bnRpbCB0aGUgZmlyc3QgbW9kZQorICAgICAgc2V0IG9wZXJhdGlvbiwgd2hlcmUgPHN0cnVjdGZpZWxkPnZibGFua19kaXNhYmxlX2FsbG93ZWQ8L3N0cnVjdGZpZWxkPiBpcworICAgICAgc2V0IHRvIDEuIFRoZSByZWFzb24gYmVoaW5kIHRoaXMgaXMgbm90IGNsZWFyLiBEcml2ZXJzIGNhbiBzZXQgdGhlIGZpZWxkCisgICAgICB0byAxIGFmdGVyIDxmdW5jdGlvbj5jYWxsaW5nIGRybV92YmxhbmtfaW5pdDwvZnVuY3Rpb24+IHRvIG1ha2UgdmVydGljYWwKKyAgICAgIGJsYW5raW5nIGludGVycnVwdHMgZHluYW1pY2FsbHkgbWFuYWdlZCBmcm9tIHRoZSBiZWdpbm5pbmcuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgVmVydGljYWwgYmxhbmtpbmcgaW50ZXJydXB0cyBjYW4gYmUgZW5hYmxlZCBieSB0aGUgRFJNIGNvcmUgb3IgYnkgZHJpdmVycworICAgICAgdGhlbXNlbHZlcyAoZm9yIGluc3RhbmNlIHRvIGhhbmRsZSBwYWdlIGZsaXBwaW5nIG9wZXJhdGlvbnMpLiBUaGUgRFJNIGNvcmUKKyAgICAgIG1haW50YWlucyBhIHZlcnRpY2FsIGJsYW5raW5nIHVzZSBjb3VudCB0byBlbnN1cmUgdGhhdCB0aGUgaW50ZXJydXB0cyBhcmUKKyAgICAgIG5vdCBkaXNhYmxlZCB3aGlsZSBhIHVzZXIgc3RpbGwgbmVlZHMgdGhlbS4gVG8gaW5jcmVtZW50IHRoZSB1c2UgY291bnQsCisgICAgICBkcml2ZXJzIGNhbGwgPGZ1bmN0aW9uPmRybV92YmxhbmtfZ2V0PC9mdW5jdGlvbj4uIFVwb24gcmV0dXJuIHZlcnRpY2FsCisgICAgICBibGFua2luZyBpbnRlcnJ1cHRzIGFyZSBndWFyYW50ZWVkIHRvIGJlIGVuYWJsZWQuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgVG8gZGVjcmVtZW50IHRoZSB1c2UgY291bnQgZHJpdmVycyBjYWxsCisgICAgICA8ZnVuY3Rpb24+ZHJtX3ZibGFua19wdXQ8L2Z1bmN0aW9uPi4gT25seSB3aGVuIHRoZSB1c2UgY291bnQgZHJvcHMgdG8gemVybworICAgICAgd2lsbCB0aGUgRFJNIGNvcmUgZGlzYWJsZSB0aGUgdmVydGljYWwgYmxhbmtpbmcgaW50ZXJydXB0cyBhZnRlciBhIGRlbGF5CisgICAgICBieSBzY2hlZHVsaW5nIGEgdGltZXIuIFRoZSBkZWxheSBpcyBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIHZibGFua29mZmRlbGF5CisgICAgICBtb2R1bGUgcGFyYW1ldGVyIG9yIHRoZSA8dmFybmFtZT5kcm1fdmJsYW5rX29mZmRlbGF5PC92YXJuYW1lPiBnbG9iYWwKKyAgICAgIHZhcmlhYmxlIGFuZCBleHByZXNzZWQgaW4gbWlsbGlzZWNvbmRzLiBJdHMgZGVmYXVsdCB2YWx1ZSBpcyA1MDAwIG1zLgorICAgICAgWmVybyBtZWFucyBuZXZlciBkaXNhYmxlLCBhbmQgYSBuZWdhdGl2ZSB2YWx1ZSBtZWFucyBkaXNhYmxlIGltbWVkaWF0ZWx5LgorICAgICAgRHJpdmVycyBtYXkgb3ZlcnJpZGUgdGhlIGJlaGF2aW91ciBieSBzZXR0aW5nIHRoZQorICAgICAgPHN0cnVjdG5hbWU+ZHJtX2RldmljZTwvc3RydWN0bmFtZT4KKyAgICAgIDxzdHJ1Y3RmaWVsZD52YmxhbmtfZGlzYWJsZV9pbW1lZGlhdGU8L3N0cnVjdGZpZWxkPiBmbGFnLCB3aGljaCB3aGVuIHNldAorICAgICAgY2F1c2VzIHZibGFuayBpbnRlcnJ1cHRzIHRvIGJlIGRpc2FibGVkIGltbWVkaWF0ZWx5IHJlZ2FyZGxlc3Mgb2YgdGhlCisgICAgICBkcm1fdmJsYW5rX29mZmRlbGF5IHZhbHVlLiBUaGUgZmxhZyBzaG91bGQgb25seSBiZSBzZXQgaWYgdGhlcmUncyBhCisgICAgICBwcm9wZXJseSB3b3JraW5nIGhhcmR3YXJlIHZibGFuayBjb3VudGVyIHByZXNlbnQuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgV2hlbiBhIHZlcnRpY2FsIGJsYW5raW5nIGludGVycnVwdCBvY2N1cnMgZHJpdmVycyBvbmx5IG5lZWQgdG8gY2FsbCB0aGUKKyAgICAgIDxmdW5jdGlvbj5kcm1faGFuZGxlX3ZibGFuazwvZnVuY3Rpb24+IGZ1bmN0aW9uIHRvIGFjY291bnQgZm9yIHRoZQorICAgICAgaW50ZXJydXB0LgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIFJlc291cmNlcyBhbGxvY2F0ZWQgYnkgPGZ1bmN0aW9uPmRybV92YmxhbmtfaW5pdDwvZnVuY3Rpb24+IG11c3QgYmUgZnJlZWQKKyAgICAgIHdpdGggYSBjYWxsIHRvIDxmdW5jdGlvbj5kcm1fdmJsYW5rX2NsZWFudXA8L2Z1bmN0aW9uPiBpbiB0aGUgZHJpdmVyCisgICAgICA8bWV0aG9kbmFtZT51bmxvYWQ8L21ldGhvZG5hbWU+IG9wZXJhdGlvbiBoYW5kbGVyLgorICAgIDwvcGFyYT4KKyAgICA8c2VjdDI+CisgICAgICA8dGl0bGU+VmVydGljYWwgQmxhbmtpbmcgYW5kIEludGVycnVwdCBIYW5kbGluZyBGdW5jdGlvbnMgUmVmZXJlbmNlPC90aXRsZT4KKyFFZHJpdmVycy9ncHUvZHJtL2RybV9pcnEuYworIUZpbmNsdWRlL2RybS9kcm1QLmggZHJtX2NydGNfdmJsYW5rX3dhaXRxdWV1ZQorICAgIDwvc2VjdDI+CisgIDwvc2VjdDE+CisKKyAgPCEtLSBJbnRlcm5hbHM6IG9wZW4vY2xvc2UsIGZpbGUgb3BlcmF0aW9ucyBhbmQgaW9jdGxzIC0tPgorCisgIDxzZWN0MT4KKyAgICA8dGl0bGU+T3Blbi9DbG9zZSwgRmlsZSBPcGVyYXRpb25zIGFuZCBJT0NUTHM8L3RpdGxlPgorICAgIDxzZWN0Mj4KKyAgICAgIDx0aXRsZT5PcGVuIGFuZCBDbG9zZTwvdGl0bGU+CisgICAgICA8c3lub3BzaXM+aW50ICgqZmlyc3RvcGVuKSAoc3RydWN0IGRybV9kZXZpY2UgKik7Cit2b2lkICgqbGFzdGNsb3NlKSAoc3RydWN0IGRybV9kZXZpY2UgKik7CitpbnQgKCpvcGVuKSAoc3RydWN0IGRybV9kZXZpY2UgKiwgc3RydWN0IGRybV9maWxlICopOwordm9pZCAoKnByZWNsb3NlKSAoc3RydWN0IGRybV9kZXZpY2UgKiwgc3RydWN0IGRybV9maWxlICopOwordm9pZCAoKnBvc3RjbG9zZSkgKHN0cnVjdCBkcm1fZGV2aWNlICosIHN0cnVjdCBkcm1fZmlsZSAqKTs8L3N5bm9wc2lzPgorICAgICAgPGFic3RyYWN0Pk9wZW4gYW5kIGNsb3NlIGhhbmRsZXJzLiBOb25lIG9mIHRob3NlIG1ldGhvZHMgYXJlIG1hbmRhdG9yeS4KKyAgICAgIDwvYWJzdHJhY3Q+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxtZXRob2RuYW1lPmZpcnN0b3BlbjwvbWV0aG9kbmFtZT4gbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgRFJNIGNvcmUKKwlmb3IgbGVnYWN5IFVNUyAoVXNlciBNb2RlIFNldHRpbmcpIGRyaXZlcnMgb25seSB3aGVuIGFuIGFwcGxpY2F0aW9uCisJb3BlbnMgYSBkZXZpY2UgdGhhdCBoYXMgbm8gb3RoZXIgb3BlbmVkIGZpbGUgaGFuZGxlLiBVTVMgZHJpdmVycyBjYW4KKwlpbXBsZW1lbnQgaXQgdG8gYWNxdWlyZSBkZXZpY2UgcmVzb3VyY2VzLiBLTVMgZHJpdmVycyBjYW4ndCB1c2UgdGhlCisJbWV0aG9kIGFuZCBtdXN0IGFjcXVpcmUgcmVzb3VyY2VzIGluIHRoZSA8bWV0aG9kbmFtZT5sb2FkPC9tZXRob2RuYW1lPgorCW1ldGhvZCBpbnN0ZWFkLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisJU2ltaWxhcmx5IHRoZSA8bWV0aG9kbmFtZT5sYXN0Y2xvc2U8L21ldGhvZG5hbWU+IG1ldGhvZCBpcyBjYWxsZWQgd2hlbgorCXRoZSBsYXN0IGFwcGxpY2F0aW9uIGhvbGRpbmcgYSBmaWxlIGhhbmRsZSBvcGVuZWQgb24gdGhlIGRldmljZSBjbG9zZXMKKwlpdCwgZm9yIGJvdGggVU1TIGFuZCBLTVMgZHJpdmVycy4gQWRkaXRpb25hbGx5LCB0aGUgbWV0aG9kIGlzIGFsc28KKwljYWxsZWQgYXQgbW9kdWxlIHVubG9hZCB0aW1lIG9yLCBmb3IgaG90LXBsdWdnYWJsZSBkZXZpY2VzLCB3aGVuIHRoZQorCWRldmljZSBpcyB1bnBsdWdnZWQuIFRoZSA8bWV0aG9kbmFtZT5maXJzdG9wZW48L21ldGhvZG5hbWU+IGFuZAorCTxtZXRob2RuYW1lPmxhc3RjbG9zZTwvbWV0aG9kbmFtZT4gY2FsbHMgY2FuIHRodXMgYmUgdW5iYWxhbmNlZC4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgPG1ldGhvZG5hbWU+b3BlbjwvbWV0aG9kbmFtZT4gbWV0aG9kIGlzIGNhbGxlZCBldmVyeSB0aW1lIHRoZSBkZXZpY2UKKwlpcyBvcGVuZWQgYnkgYW4gYXBwbGljYXRpb24uIERyaXZlcnMgY2FuIGFsbG9jYXRlIHBlci1maWxlIHByaXZhdGUgZGF0YQorCWluIHRoaXMgbWV0aG9kIGFuZCBzdG9yZSB0aGVtIGluIHRoZSBzdHJ1Y3QKKwk8c3RydWN0bmFtZT5kcm1fZmlsZTwvc3RydWN0bmFtZT4gPHN0cnVjdGZpZWxkPmRyaXZlcl9wcml2PC9zdHJ1Y3RmaWVsZD4KKwlmaWVsZC4gTm90ZSB0aGF0IHRoZSA8bWV0aG9kbmFtZT5vcGVuPC9tZXRob2RuYW1lPiBtZXRob2QgaXMgY2FsbGVkCisJYmVmb3JlIDxtZXRob2RuYW1lPmZpcnN0b3BlbjwvbWV0aG9kbmFtZT4uCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGNsb3NlIG9wZXJhdGlvbiBpcyBzcGxpdCBpbnRvIDxtZXRob2RuYW1lPnByZWNsb3NlPC9tZXRob2RuYW1lPiBhbmQKKwk8bWV0aG9kbmFtZT5wb3N0Y2xvc2U8L21ldGhvZG5hbWU+IG1ldGhvZHMuIERyaXZlcnMgbXVzdCBzdG9wIGFuZAorCWNsZWFudXAgYWxsIHBlci1maWxlIG9wZXJhdGlvbnMgaW4gdGhlIDxtZXRob2RuYW1lPnByZWNsb3NlPC9tZXRob2RuYW1lPgorCW1ldGhvZC4gRm9yIGluc3RhbmNlIHBlbmRpbmcgdmVydGljYWwgYmxhbmtpbmcgYW5kIHBhZ2UgZmxpcCBldmVudHMgbXVzdAorCWJlIGNhbmNlbGxlZC4gTm8gcGVyLWZpbGUgb3BlcmF0aW9uIGlzIGFsbG93ZWQgb24gdGhlIGZpbGUgaGFuZGxlIGFmdGVyCisJcmV0dXJuaW5nIGZyb20gdGhlIDxtZXRob2RuYW1lPnByZWNsb3NlPC9tZXRob2RuYW1lPiBtZXRob2QuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgRmluYWxseSB0aGUgPG1ldGhvZG5hbWU+cG9zdGNsb3NlPC9tZXRob2RuYW1lPiBtZXRob2QgaXMgY2FsbGVkIGFzIHRoZQorCWxhc3Qgc3RlcCBvZiB0aGUgY2xvc2Ugb3BlcmF0aW9uLCByaWdodCBiZWZvcmUgY2FsbGluZyB0aGUKKwk8bWV0aG9kbmFtZT5sYXN0Y2xvc2U8L21ldGhvZG5hbWU+IG1ldGhvZCBpZiBubyBvdGhlciBvcGVuIGZpbGUgaGFuZGxlCisJZXhpc3RzIGZvciB0aGUgZGV2aWNlLiBEcml2ZXJzIHRoYXQgaGF2ZSBhbGxvY2F0ZWQgcGVyLWZpbGUgcHJpdmF0ZSBkYXRhCisJaW4gdGhlIDxtZXRob2RuYW1lPm9wZW48L21ldGhvZG5hbWU+IG1ldGhvZCBzaG91bGQgZnJlZSBpdCBoZXJlLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIFRoZSA8bWV0aG9kbmFtZT5sYXN0Y2xvc2U8L21ldGhvZG5hbWU+IG1ldGhvZCBzaG91bGQgcmVzdG9yZSBDUlRDIGFuZAorCXBsYW5lIHByb3BlcnRpZXMgdG8gZGVmYXVsdCB2YWx1ZSwgc28gdGhhdCBhIHN1YnNlcXVlbnQgb3BlbiBvZiB0aGUKKwlkZXZpY2Ugd2lsbCBub3QgaW5oZXJpdCBzdGF0ZSBmcm9tIHRoZSBwcmV2aW91cyB1c2VyLiBJdCBjYW4gYWxzbyBiZQorCXVzZWQgdG8gZXhlY3V0ZSBkZWxheWVkIHBvd2VyIHN3aXRjaGluZyBzdGF0ZSBjaGFuZ2VzLCBlLmcuIGluCisJY29uanVuY3Rpb24gd2l0aCB0aGUgdmdhX3N3aXRjaGVyb28gaW5mcmFzdHJ1Y3R1cmUgKHNlZQorCTx4cmVmIGxpbmtlbmQ9InZnYV9zd2l0Y2hlcm9vIi8+KS4gQmV5b25kIHRoYXQgS01TIGRyaXZlcnMgc2hvdWxkIG5vdAorCWRvIGFueSBmdXJ0aGVyIGNsZWFudXAuIE9ubHkgbGVnYWN5IFVNUyBkcml2ZXJzIG1pZ2h0IG5lZWQgdG8gY2xlYW4gdXAKKwlkZXZpY2Ugc3RhdGUgc28gdGhhdCB0aGUgdmdhIGNvbnNvbGUgb3IgYW4gaW5kZXBlbmRlbnQgZmJkZXYgZHJpdmVyCisJY291bGQgdGFrZSBvdmVyLgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdDI+CisgICAgPHNlY3QyPgorICAgICAgPHRpdGxlPkZpbGUgT3BlcmF0aW9uczwvdGl0bGU+CisgICAgICA8c3lub3BzaXM+Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqZm9wczwvc3lub3BzaXM+CisgICAgICA8YWJzdHJhY3Q+RmlsZSBvcGVyYXRpb25zIGZvciB0aGUgRFJNIGRldmljZSBub2RlLjwvYWJzdHJhY3Q+CisgICAgICA8cGFyYT4KKyAgICAgICAgRHJpdmVycyBtdXN0IGRlZmluZSB0aGUgZmlsZSBvcGVyYXRpb25zIHN0cnVjdHVyZSB0aGF0IGZvcm1zIHRoZSBEUk0KKwl1c2Vyc3BhY2UgQVBJIGVudHJ5IHBvaW50LCBldmVuIHRob3VnaCBtb3N0IG9mIHRob3NlIG9wZXJhdGlvbnMgYXJlCisJaW1wbGVtZW50ZWQgaW4gdGhlIERSTSBjb3JlLiBUaGUgPG1ldGhvZG5hbWU+b3BlbjwvbWV0aG9kbmFtZT4sCisJPG1ldGhvZG5hbWU+cmVsZWFzZTwvbWV0aG9kbmFtZT4gYW5kIDxtZXRob2RuYW1lPmlvY3RsPC9tZXRob2RuYW1lPgorCW9wZXJhdGlvbnMgYXJlIGhhbmRsZWQgYnkKKwk8cHJvZ3JhbWxpc3Rpbmc+CisJLm93bmVyID0gVEhJU19NT0RVTEUsCisJLm9wZW4gPSBkcm1fb3BlbiwKKwkucmVsZWFzZSA9IGRybV9yZWxlYXNlLAorCS51bmxvY2tlZF9pb2N0bCA9IGRybV9pb2N0bCwKKyAgI2lmZGVmIENPTkZJR19DT01QQVQKKwkuY29tcGF0X2lvY3RsID0gZHJtX2NvbXBhdF9pb2N0bCwKKyAgI2VuZGlmCisgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgRHJpdmVycyB0aGF0IGltcGxlbWVudCBwcml2YXRlIGlvY3RscyB0aGF0IHJlcXVpcmVzIDMyLzY0Yml0CisJY29tcGF0aWJpbGl0eSBzdXBwb3J0IG11c3QgcHJvdmlkZSB0aGVpciBvd24KKwk8bWV0aG9kbmFtZT5jb21wYXRfaW9jdGw8L21ldGhvZG5hbWU+IGhhbmRsZXIgdGhhdCBwcm9jZXNzZXMgcHJpdmF0ZQorCWlvY3RscyBhbmQgY2FsbHMgPGZ1bmN0aW9uPmRybV9jb21wYXRfaW9jdGw8L2Z1bmN0aW9uPiBmb3IgY29yZSBpb2N0bHMuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxtZXRob2RuYW1lPnJlYWQ8L21ldGhvZG5hbWU+IGFuZCA8bWV0aG9kbmFtZT5wb2xsPC9tZXRob2RuYW1lPgorCW9wZXJhdGlvbnMgcHJvdmlkZSBzdXBwb3J0IGZvciByZWFkaW5nIERSTSBldmVudHMgYW5kIHBvbGxpbmcgdGhlbS4gVGhleQorCWFyZSBpbXBsZW1lbnRlZCBieQorCTxwcm9ncmFtbGlzdGluZz4KKwkucG9sbCA9IGRybV9wb2xsLAorCS5yZWFkID0gZHJtX3JlYWQsCisJLmxsc2VlayA9IG5vX2xsc2VlaywKKwk8L3Byb2dyYW1saXN0aW5nPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBtZW1vcnkgbWFwcGluZyBpbXBsZW1lbnRhdGlvbiB2YXJpZXMgZGVwZW5kaW5nIG9uIGhvdyB0aGUgZHJpdmVyCisJbWFuYWdlcyBtZW1vcnkuIFByZS1HRU0gZHJpdmVycyB3aWxsIHVzZSA8ZnVuY3Rpb24+ZHJtX21tYXA8L2Z1bmN0aW9uPiwKKwl3aGlsZSBHRU0tYXdhcmUgZHJpdmVycyB3aWxsIHVzZSA8ZnVuY3Rpb24+ZHJtX2dlbV9tbWFwPC9mdW5jdGlvbj4uIFNlZQorCTx4cmVmIGxpbmtlbmQ9ImRybS1nZW0iLz4uCisJPHByb2dyYW1saXN0aW5nPgorCS5tbWFwID0gZHJtX2dlbV9tbWFwLAorCTwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgTm8gb3RoZXIgZmlsZSBvcGVyYXRpb24gaXMgc3VwcG9ydGVkIGJ5IHRoZSBEUk0gQVBJLgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdDI+CisgICAgPHNlY3QyPgorICAgICAgPHRpdGxlPklPQ1RMczwvdGl0bGU+CisgICAgICA8c3lub3BzaXM+c3RydWN0IGRybV9pb2N0bF9kZXNjICppb2N0bHM7CitpbnQgbnVtX2lvY3Rsczs8L3N5bm9wc2lzPgorICAgICAgPGFic3RyYWN0PkRyaXZlci1zcGVjaWZpYyBpb2N0bHMgZGVzY3JpcHRvcnMgdGFibGUuPC9hYnN0cmFjdD4KKyAgICAgIDxwYXJhPgorICAgICAgICBEcml2ZXItc3BlY2lmaWMgaW9jdGxzIG51bWJlcnMgc3RhcnQgYXQgRFJNX0NPTU1BTkRfQkFTRS4gVGhlIGlvY3RscworCWRlc2NyaXB0b3JzIHRhYmxlIGlzIGluZGV4ZWQgYnkgdGhlIGlvY3RsIG51bWJlciBvZmZzZXQgZnJvbSB0aGUgYmFzZQorCXZhbHVlLiBEcml2ZXJzIGNhbiB1c2UgdGhlIERSTV9JT0NUTF9ERUZfRFJWKCkgbWFjcm8gdG8gaW5pdGlhbGl6ZSB0aGUKKwl0YWJsZSBlbnRyaWVzLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIDxwcm9ncmFtbGlzdGluZz5EUk1fSU9DVExfREVGX0RSVihpb2N0bCwgZnVuYywgZmxhZ3MpPC9wcm9ncmFtbGlzdGluZz4KKwk8cGFyYT4KKwkgIDxwYXJhbWV0ZXI+aW9jdGw8L3BhcmFtZXRlcj4gaXMgdGhlIGlvY3RsIG5hbWUuIERyaXZlcnMgbXVzdCBkZWZpbmUKKwkgIHRoZSBEUk1fIyNpb2N0bCBhbmQgRFJNX0lPQ1RMXyMjaW9jdGwgbWFjcm9zIHRvIHRoZSBpb2N0bCBudW1iZXIKKwkgIG9mZnNldCBmcm9tIERSTV9DT01NQU5EX0JBU0UgYW5kIHRoZSBpb2N0bCBudW1iZXIgcmVzcGVjdGl2ZWx5LiBUaGUKKwkgIGZpcnN0IG1hY3JvIGlzIHByaXZhdGUgdG8gdGhlIGRldmljZSB3aGlsZSB0aGUgc2Vjb25kIG11c3QgYmUgZXhwb3NlZAorCSAgdG8gdXNlcnNwYWNlIGluIGEgcHVibGljIGhlYWRlci4KKwk8L3BhcmE+CisJPHBhcmE+CisJICA8cGFyYW1ldGVyPmZ1bmM8L3BhcmFtZXRlcj4gaXMgYSBwb2ludGVyIHRvIHRoZSBpb2N0bCBoYW5kbGVyIGZ1bmN0aW9uCisJICBjb21wYXRpYmxlIHdpdGggdGhlIDx0eXBlPmRybV9pb2N0bF90PC90eXBlPiB0eXBlLgorCSAgPHByb2dyYW1saXN0aW5nPnR5cGVkZWYgaW50IGRybV9pb2N0bF90KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTs8L3Byb2dyYW1saXN0aW5nPgorCTwvcGFyYT4KKwk8cGFyYT4KKwkgIDxwYXJhbWV0ZXI+ZmxhZ3M8L3BhcmFtZXRlcj4gaXMgYSBiaXRtYXNrIGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcKKwkgIHZhbHVlcy4gSXQgcmVzdHJpY3RzIGhvdyB0aGUgaW9jdGwgaXMgYWxsb3dlZCB0byBiZSBjYWxsZWQuCisJICA8aXRlbWl6ZWRsaXN0PgorCSAgICA8bGlzdGl0ZW0+PHBhcmE+CisJICAgICAgRFJNX0FVVEggLSBPbmx5IGF1dGhlbnRpY2F0ZWQgY2FsbGVycyBhbGxvd2VkCisJICAgIDwvcGFyYT48L2xpc3RpdGVtPgorCSAgICA8bGlzdGl0ZW0+PHBhcmE+CisJICAgICAgRFJNX01BU1RFUiAtIFRoZSBpb2N0bCBjYW4gb25seSBiZSBjYWxsZWQgb24gdGhlIG1hc3RlciBmaWxlCisJICAgICAgaGFuZGxlCisJICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorCSAgICAgIERSTV9ST09UX09OTFkgLSBPbmx5IGNhbGxlcnMgd2l0aCB0aGUgU1lTQURNSU4gY2FwYWJpbGl0eSBhbGxvd2VkCisJICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorCSAgICAgIERSTV9DT05UUk9MX0FMTE9XIC0gVGhlIGlvY3RsIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIGNvbnRyb2wKKwkgICAgICBkZXZpY2UKKwkgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisJICAgICAgRFJNX1VOTE9DS0VEIC0gVGhlIGlvY3RsIGhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgd2l0aG91dCBsb2NraW5nCisJICAgICAgdGhlIERSTSBnbG9iYWwgbXV0ZXguIFRoaXMgaXMgdGhlIGVuZm9yY2VkIGRlZmF1bHQgZm9yIGttcyBkcml2ZXJzCisJICAgICAgKGkuZS4gdXNpbmcgdGhlIERSSVZFUl9NT0RFU0VUIGZsYWcpIGFuZCBoZW5jZSBzaG91bGRuJ3QgYmUgdXNlZAorCSAgICAgIGFueSBtb3JlIGZvciBuZXcgZHJpdmVycy4KKwkgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisJICA8L2l0ZW1pemVkbGlzdD4KKwk8L3BhcmE+CisgICAgICA8L3BhcmE+CishRWRyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYworICAgIDwvc2VjdDI+CisgIDwvc2VjdDE+CisgIDxzZWN0MT4KKyAgICA8dGl0bGU+TGVnYWN5IFN1cHBvcnQgQ29kZTwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICBUaGUgc2VjdGlvbiB2ZXJ5IGJyaWVmbHkgY292ZXJzIHNvbWUgb2YgdGhlIG9sZCBsZWdhY3kgc3VwcG9ydCBjb2RlIHdoaWNoCisgICAgICBpcyBvbmx5IHVzZWQgYnkgb2xkIERSTSBkcml2ZXJzIHdoaWNoIGhhdmUgZG9uZSBhIHNvLWNhbGxlZCBzaGFkb3ctYXR0YWNoCisgICAgICB0byB0aGUgdW5kZXJseWluZyBkZXZpY2UgaW5zdGVhZCBvZiByZWdpc3RlcmluZyBhcyBhIHJlYWwgZHJpdmVyLiBUaGlzCisgICAgICBhbHNvIGluY2x1ZGVzIHNvbWUgb2YgdGhlIG9sZCBnZW5lcmljIGJ1ZmZlciBtYW5hZ2VtZW50IGFuZCBjb21tYW5kCisgICAgICBzdWJtaXNzaW9uIGNvZGUuIERvIG5vdCB1c2UgYW55IG9mIHRoaXMgaW4gbmV3IGFuZCBtb2Rlcm4gZHJpdmVycy4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdDI+CisgICAgICA8dGl0bGU+TGVnYWN5IFN1c3BlbmQvUmVzdW1lPC90aXRsZT4KKyAgICAgIDxwYXJhPgorCVRoZSBEUk0gY29yZSBwcm92aWRlcyBzb21lIHN1c3BlbmQvcmVzdW1lIGNvZGUsIGJ1dCBkcml2ZXJzIHdhbnRpbmcgZnVsbAorCXN1c3BlbmQvcmVzdW1lIHN1cHBvcnQgc2hvdWxkIHByb3ZpZGUgc2F2ZSgpIGFuZCByZXN0b3JlKCkgZnVuY3Rpb25zLgorCVRoZXNlIGFyZSBjYWxsZWQgYXQgc3VzcGVuZCwgaGliZXJuYXRlLCBvciByZXN1bWUgdGltZSwgYW5kIHNob3VsZCBwZXJmb3JtCisJYW55IHN0YXRlIHNhdmUgb3IgcmVzdG9yZSByZXF1aXJlZCBieSB5b3VyIGRldmljZSBhY3Jvc3Mgc3VzcGVuZCBvcgorCWhpYmVybmF0ZSBzdGF0ZXMuCisgICAgICA8L3BhcmE+CisgICAgICA8c3lub3BzaXM+aW50ICgqc3VzcGVuZCkgKHN0cnVjdCBkcm1fZGV2aWNlICosIHBtX21lc3NhZ2VfdCBzdGF0ZSk7CisgIGludCAoKnJlc3VtZSkgKHN0cnVjdCBkcm1fZGV2aWNlICopOzwvc3lub3BzaXM+CisgICAgICA8cGFyYT4KKwlUaG9zZSBhcmUgbGVnYWN5IHN1c3BlbmQgYW5kIHJlc3VtZSBtZXRob2RzIHdoaWNoCisJPGVtcGhhc2lzPm9ubHk8L2VtcGhhc2lzPiB3b3JrIHdpdGggdGhlIGxlZ2FjeSBzaGFkb3ctYXR0YWNoIGRyaXZlcgorCXJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMuIE5ldyBkcml2ZXIgc2hvdWxkIHVzZSB0aGUgcG93ZXIgbWFuYWdlbWVudAorCWludGVyZmFjZSBwcm92aWRlZCBieSB0aGVpciBidXMgdHlwZSAodXN1YWxseSB0aHJvdWdoCisJdGhlIHN0cnVjdCA8c3RydWN0bmFtZT5kZXZpY2VfZHJpdmVyPC9zdHJ1Y3RuYW1lPiBkZXZfcG1fb3BzKSBhbmQgc2V0CisJdGhlc2UgbWV0aG9kcyB0byBOVUxMLgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdDI+CisKKyAgICA8c2VjdDI+CisgICAgICA8dGl0bGU+TGVnYWN5IERNQSBTZXJ2aWNlczwvdGl0bGU+CisgICAgICA8cGFyYT4KKwlUaGlzIHNob3VsZCBjb3ZlciBob3cgRE1BIG1hcHBpbmcgZXRjLiBpcyBzdXBwb3J0ZWQgYnkgdGhlIGNvcmUuCisJVGhlc2UgZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0Mj4KKyAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorCis8IS0tIFRPRE8KKworLSBBZGQgYSBnbG9zc2FyeQorLSBEb2N1bWVudCB0aGUgc3RydWN0X211dGV4IGNhdGNoLWFsbCBsb2NrCistIERvY3VtZW50IGNvbm5lY3RvciBwcm9wZXJ0aWVzCisKKy0gV2h5IGlzIHRoZSBsb2FkIG1ldGhvZCBvcHRpb25hbD8KKy0gV2hhdCBhcmUgZHJpdmVycyBzdXBwb3NlZCB0byBzZXQgdGhlIGluaXRpYWwgZGlzcGxheSBzdGF0ZSB0bywgYW5kIGhvdz8KKyAgQ29ubmVjdG9yJ3MgRFBNUyBzdGF0ZXMgYXJlIG5vdCBpbml0aWFsaXplZCBhbmQgYXJlIHRodXMgZXF1YWwgdG8KKyAgRFJNX01PREVfRFBNU19PTi4gVGhlIGZiY29uIGNvbXBhdGliaWxpdHkgbGF5ZXIgY2FsbHMKKyAgZHJtX2hlbHBlcl9kaXNhYmxlX3VudXNlZF9mdW5jdGlvbnMoKSwgd2hpY2ggZGlzYWJsZXMgdW51c2VkIGVuY29kZXJzIGFuZAorICBDUlRDcywgYnV0IGRvZXNuJ3QgdG91Y2ggdGhlIGNvbm5lY3RvcnMnIERQTVMgc3RhdGUsIGFuZAorICBkcm1faGVscGVyX2Nvbm5lY3Rvcl9kcG1zKCkgaW4gcmVhY3Rpb24gdG8gZmJkZXYgYmxhbmtpbmcgZXZlbnRzLiBEbyBkcml2ZXJzCisgIHRoYXQgZG9uJ3QgaW1wbGVtZW50IChvciBqdXN0IGRvbid0IHVzZSkgZmJjb24gY29tcGF0aWJpbGl0eSBuZWVkIHRvIGNhbGwKKyAgdGhvc2UgZnVuY3Rpb25zIHRoZW1zZWx2ZXM/CistIEtNUyBkcml2ZXJzIG11c3QgY2FsbCBkcm1fdmJsYW5rX3ByZV9tb2Rlc2V0KCkgYW5kIGRybV92YmxhbmtfcG9zdF9tb2Rlc2V0KCkKKyAgYXJvdW5kIG1vZGUgc2V0dGluZy4gU2hvdWxkIHRoaXMgYmUgZG9uZSBpbiB0aGUgRFJNIGNvcmU/CistIHZibGFua19kaXNhYmxlX2FsbG93ZWQgaXMgc2V0IHRvIDEgaW4gdGhlIGZpcnN0IGRybV92YmxhbmtfcG9zdF9tb2Rlc2V0KCkKKyAgY2FsbCBhbmQgbmV2ZXIgc2V0IGJhY2sgdG8gMC4gSXQgc2VlbXMgdG8gYmUgc2FmZSB0byBwZXJtYW5lbnRseSBzZXQgaXQgdG8gMQorICBpbiBkcm1fdmJsYW5rX2luaXQoKSBmb3IgS01TIGRyaXZlciwgYW5kIGl0IG1pZ2h0IGJlIHNhZmUgZm9yIFVNUyBkcml2ZXJzIGFzCisgIHdlbGwuIFRoaXMgc2hvdWxkIGJlIGludmVzdGlnYXRlZC4KKy0gY3J0YyBhbmQgY29ubmVjdG9yIC5zYXZlIGFuZCAucmVzdG9yZSBvcGVyYXRpb25zIGFyZSBvbmx5IHVzZWQgaW50ZXJuYWxseSBpbgorICBkcml2ZXJzLCBzaG91bGQgdGhleSBiZSByZW1vdmVkIGZyb20gdGhlIGNvcmU/CistIGVuY29kZXIgbWlkLWxheWVyIC5zYXZlIGFuZCAucmVzdG9yZSBvcGVyYXRpb25zIGFyZSBvbmx5IHVzZWQgaW50ZXJuYWxseSBpbgorICBkcml2ZXJzLCBzaG91bGQgdGhleSBiZSByZW1vdmVkIGZyb20gdGhlIGNvcmU/CistIGVuY29kZXIgbWlkLWxheWVyIC5kZXRlY3Qgb3BlcmF0aW9uIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5IGluIGRyaXZlcnMsCisgIHNob3VsZCBpdCBiZSByZW1vdmVkIGZyb20gdGhlIGNvcmU/CistLT4KKworICA8IS0tIEV4dGVybmFsIGludGVyZmFjZXMgLS0+CisKKyAgPGNoYXB0ZXIgaWQ9ImRybUV4dGVybmFscyI+CisgICAgPHRpdGxlPlVzZXJsYW5kIGludGVyZmFjZXM8L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgVGhlIERSTSBjb3JlIGV4cG9ydHMgc2V2ZXJhbCBpbnRlcmZhY2VzIHRvIGFwcGxpY2F0aW9ucywKKyAgICAgIGdlbmVyYWxseSBpbnRlbmRlZCB0byBiZSB1c2VkIHRocm91Z2ggY29ycmVzcG9uZGluZyBsaWJkcm0KKyAgICAgIHdyYXBwZXIgZnVuY3Rpb25zLiAgSW4gYWRkaXRpb24sIGRyaXZlcnMgZXhwb3J0IGRldmljZS1zcGVjaWZpYworICAgICAgaW50ZXJmYWNlcyBmb3IgdXNlIGJ5IHVzZXJzcGFjZSBkcml2ZXJzICZhbXA7IGRldmljZS1hd2FyZQorICAgICAgYXBwbGljYXRpb25zIHRocm91Z2ggaW9jdGxzIGFuZCBzeXNmcyBmaWxlcy4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBFeHRlcm5hbCBpbnRlcmZhY2VzIGluY2x1ZGU6IG1lbW9yeSBtYXBwaW5nLCBjb250ZXh0IG1hbmFnZW1lbnQsCisgICAgICBETUEgb3BlcmF0aW9ucywgQUdQIG1hbmFnZW1lbnQsIHZibGFuayBjb250cm9sLCBmZW5jZQorICAgICAgbWFuYWdlbWVudCwgbWVtb3J5IG1hbmFnZW1lbnQsIGFuZCBvdXRwdXQgbWFuYWdlbWVudC4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBDb3ZlciBnZW5lcmljIGlvY3RscyBhbmQgc3lzZnMgbGF5b3V0IGhlcmUuICBXZSBvbmx5IG5lZWQgaGlnaC1sZXZlbAorICAgICAgaW5mbywgc2luY2UgbWFuIHBhZ2VzIHNob3VsZCBjb3ZlciB0aGUgcmVzdC4KKyAgICA8L3BhcmE+CisKKyAgPCEtLSBFeHRlcm5hbDogcmVuZGVyIG5vZGVzIC0tPgorCisgICAgPHNlY3QxPgorICAgICAgPHRpdGxlPlJlbmRlciBub2RlczwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgRFJNIGNvcmUgcHJvdmlkZXMgbXVsdGlwbGUgY2hhcmFjdGVyLWRldmljZXMgZm9yIHVzZXItc3BhY2UgdG8gdXNlLgorICAgICAgICBEZXBlbmRpbmcgb24gd2hpY2ggZGV2aWNlIGlzIG9wZW5lZCwgdXNlci1zcGFjZSBjYW4gcGVyZm9ybSBhIGRpZmZlcmVudAorICAgICAgICBzZXQgb2Ygb3BlcmF0aW9ucyAobWFpbmx5IGlvY3RscykuIFRoZSBwcmltYXJ5IG5vZGUgaXMgYWx3YXlzIGNyZWF0ZWQKKyAgICAgICAgYW5kIGNhbGxlZCBjYXJkJmx0O251bSZndDsuIEFkZGl0aW9uYWxseSwgYSBjdXJyZW50bHkKKyAgICAgICAgdW51c2VkIGNvbnRyb2wgbm9kZSwgY2FsbGVkIGNvbnRyb2xEJmx0O251bSZndDsgaXMgYWxzbworICAgICAgICBjcmVhdGVkLiBUaGUgcHJpbWFyeSBub2RlIHByb3ZpZGVzIGFsbCBsZWdhY3kgb3BlcmF0aW9ucyBhbmQKKyAgICAgICAgaGlzdG9yaWNhbGx5IHdhcyB0aGUgb25seSBpbnRlcmZhY2UgdXNlZCBieSB1c2Vyc3BhY2UuIFdpdGggS01TLCB0aGUKKyAgICAgICAgY29udHJvbCBub2RlIHdhcyBpbnRyb2R1Y2VkLiBIb3dldmVyLCB0aGUgcGxhbm5lZCBLTVMgY29udHJvbCBpbnRlcmZhY2UKKyAgICAgICAgaGFzIG5ldmVyIGJlZW4gd3JpdHRlbiBhbmQgc28gdGhlIGNvbnRyb2wgbm9kZSBzdGF5cyB1bnVzZWQgdG8gZGF0ZS4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBXaXRoIHRoZSBpbmNyZWFzZWQgdXNlIG9mIG9mZnNjcmVlbiByZW5kZXJlcnMgYW5kIEdQR1BVIGFwcGxpY2F0aW9ucywKKyAgICAgICAgY2xpZW50cyBubyBsb25nZXIgcmVxdWlyZSBydW5uaW5nIGNvbXBvc2l0b3JzIG9yIGdyYXBoaWNzIHNlcnZlcnMgdG8KKyAgICAgICAgbWFrZSB1c2Ugb2YgYSBHUFUuIEJ1dCB0aGUgRFJNIEFQSSByZXF1aXJlZCB1bnByaXZpbGVnZWQgY2xpZW50cyB0bworICAgICAgICBhdXRoZW50aWNhdGUgdG8gYSBEUk0tTWFzdGVyIHByaW9yIHRvIGdldHRpbmcgR1BVIGFjY2Vzcy4gVG8gYXZvaWQgdGhpcworICAgICAgICBzdGVwIGFuZCB0byBncmFudCBjbGllbnRzIEdQVSBhY2Nlc3Mgd2l0aG91dCBhdXRoZW50aWNhdGluZywgcmVuZGVyCisgICAgICAgIG5vZGVzIHdlcmUgaW50cm9kdWNlZC4gUmVuZGVyIG5vZGVzIHNvbGVseSBzZXJ2ZSByZW5kZXIgY2xpZW50cywgdGhhdAorICAgICAgICBpcywgbm8gbW9kZXNldHRpbmcgb3IgcHJpdmlsZWdlZCBpb2N0bHMgY2FuIGJlIGlzc3VlZCBvbiByZW5kZXIgbm9kZXMuCisgICAgICAgIE9ubHkgbm9uLWdsb2JhbCByZW5kZXJpbmcgY29tbWFuZHMgYXJlIGFsbG93ZWQuIElmIGEgZHJpdmVyIHN1cHBvcnRzCisgICAgICAgIHJlbmRlciBub2RlcywgaXQgbXVzdCBhZHZlcnRpc2UgaXQgdmlhIHRoZSBEUklWRVJfUkVOREVSCisgICAgICAgIERSTSBkcml2ZXIgY2FwYWJpbGl0eS4gSWYgbm90IHN1cHBvcnRlZCwgdGhlIHByaW1hcnkgbm9kZSBtdXN0IGJlIHVzZWQKKyAgICAgICAgZm9yIHJlbmRlciBjbGllbnRzIHRvZ2V0aGVyIHdpdGggdGhlIGxlZ2FjeSBkcm1BdXRoIGF1dGhlbnRpY2F0aW9uCisgICAgICAgIHByb2NlZHVyZS4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBJZiBhIGRyaXZlciBhZHZlcnRpc2VzIHJlbmRlciBub2RlIHN1cHBvcnQsIERSTSBjb3JlIHdpbGwgY3JlYXRlIGEKKyAgICAgICAgc2VwYXJhdGUgcmVuZGVyIG5vZGUgY2FsbGVkIHJlbmRlckQmbHQ7bnVtJmd0Oy4gVGhlcmUgd2lsbAorICAgICAgICBiZSBvbmUgcmVuZGVyIG5vZGUgcGVyIGRldmljZS4gTm8gaW9jdGxzIGV4Y2VwdCAgUFJJTUUtcmVsYXRlZCBpb2N0bHMKKyAgICAgICAgd2lsbCBiZSBhbGxvd2VkIG9uIHRoaXMgbm9kZS4gRXNwZWNpYWxseSBHRU1fT1BFTiB3aWxsIGJlCisgICAgICAgIGV4cGxpY2l0bHkgcHJvaGliaXRlZC4gUmVuZGVyIG5vZGVzIGFyZSBkZXNpZ25lZCB0byBhdm9pZCB0aGUKKyAgICAgICAgYnVmZmVyLWxlYWtzLCB3aGljaCBvY2N1ciBpZiBjbGllbnRzIGd1ZXNzIHRoZSBmbGluayBuYW1lcyBvciBtbWFwCisgICAgICAgIG9mZnNldHMgb24gdGhlIGxlZ2FjeSBpbnRlcmZhY2UuIEFkZGl0aW9uYWxseSB0byB0aGlzIGJhc2ljIGludGVyZmFjZSwKKyAgICAgICAgZHJpdmVycyBtdXN0IG1hcmsgdGhlaXIgZHJpdmVyLWRlcGVuZGVudCByZW5kZXItb25seSBpb2N0bHMgYXMKKyAgICAgICAgRFJNX1JFTkRFUl9BTExPVyBzbyByZW5kZXIgY2xpZW50cyBjYW4gdXNlIHRoZW0uIERyaXZlcgorICAgICAgICBhdXRob3JzIG11c3QgYmUgY2FyZWZ1bCBub3QgdG8gYWxsb3cgYW55IHByaXZpbGVnZWQgaW9jdGxzIG9uIHJlbmRlcgorICAgICAgICBub2Rlcy4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBXaXRoIHJlbmRlciBub2RlcywgdXNlci1zcGFjZSBjYW4gbm93IGNvbnRyb2wgYWNjZXNzIHRvIHRoZSByZW5kZXIgbm9kZQorICAgICAgICB2aWEgYmFzaWMgZmlsZS1zeXN0ZW0gYWNjZXNzLW1vZGVzLiBBIHJ1bm5pbmcgZ3JhcGhpY3Mgc2VydmVyIHdoaWNoCisgICAgICAgIGF1dGhlbnRpY2F0ZXMgY2xpZW50cyBvbiB0aGUgcHJpdmlsZWdlZCBwcmltYXJ5L2xlZ2FjeSBub2RlIGlzIG5vIGxvbmdlcgorICAgICAgICByZXF1aXJlZC4gSW5zdGVhZCwgYSBjbGllbnQgY2FuIG9wZW4gdGhlIHJlbmRlciBub2RlIGFuZCBpcyBpbW1lZGlhdGVseQorICAgICAgICBncmFudGVkIEdQVSBhY2Nlc3MuIENvbW11bmljYXRpb24gYmV0d2VlbiBjbGllbnRzIChvciBzZXJ2ZXJzKSBpcyBkb25lCisgICAgICAgIHZpYSBQUklNRS4gRkxJTksgZnJvbSByZW5kZXIgbm9kZSB0byBsZWdhY3kgbm9kZSBpcyBub3Qgc3VwcG9ydGVkLiBOZXcKKyAgICAgICAgY2xpZW50cyBtdXN0IG5vdCB1c2UgdGhlIGluc2VjdXJlIEZMSU5LIGludGVyZmFjZS4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBCZXNpZGVzIGRyb3BwaW5nIGFsbCBtb2Rlc2V0L2dsb2JhbCBpb2N0bHMsIHJlbmRlciBub2RlcyBhbHNvIGRyb3AgdGhlCisgICAgICAgIERSTS1NYXN0ZXIgY29uY2VwdC4gVGhlcmUgaXMgbm8gcmVhc29uIHRvIGFzc29jaWF0ZSByZW5kZXIgY2xpZW50cyB3aXRoCisgICAgICAgIGEgRFJNLU1hc3RlciBhcyB0aGV5IGFyZSBpbmRlcGVuZGVudCBvZiBhbnkgZ3JhcGhpY3Mgc2VydmVyLiBCZXNpZGVzLAorICAgICAgICB0aGV5IG11c3Qgd29yayB3aXRob3V0IGFueSBydW5uaW5nIG1hc3RlciwgYW55d2F5LgorICAgICAgICBEcml2ZXJzIG11c3QgYmUgYWJsZSB0byBydW4gd2l0aG91dCBhIG1hc3RlciBvYmplY3QgaWYgdGhleSBzdXBwb3J0CisgICAgICAgIHJlbmRlciBub2Rlcy4gSWYsIG9uIHRoZSBvdGhlciBoYW5kLCBhIGRyaXZlciByZXF1aXJlcyBzaGFyZWQgc3RhdGUKKyAgICAgICAgYmV0d2VlbiBjbGllbnRzIHdoaWNoIGlzIHZpc2libGUgdG8gdXNlci1zcGFjZSBhbmQgYWNjZXNzaWJsZSBiZXlvbmQKKyAgICAgICAgb3Blbi1maWxlIGJvdW5kYXJpZXMsIHRoZXkgY2Fubm90IHN1cHBvcnQgcmVuZGVyIG5vZGVzLgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdDE+CisKKyAgPCEtLSBFeHRlcm5hbDogdmJsYW5rIGhhbmRsaW5nIC0tPgorCisgICAgPHNlY3QxPgorICAgICAgPHRpdGxlPlZCbGFuayBldmVudCBoYW5kbGluZzwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIERSTSBjb3JlIGV4cG9zZXMgdHdvIHZlcnRpY2FsIGJsYW5rIHJlbGF0ZWQgaW9jdGxzOgorICAgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgICA8dGVybT5EUk1fSU9DVExfV0FJVF9WQkxBTks8L3Rlcm0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoaXMgdGFrZXMgYSBzdHJ1Y3QgZHJtX3dhaXRfdmJsYW5rIHN0cnVjdHVyZSBhcyBpdHMgYXJndW1lbnQsCisgICAgICAgICAgICAgICAgYW5kIGl0IGlzIHVzZWQgdG8gYmxvY2sgb3IgcmVxdWVzdCBhIHNpZ25hbCB3aGVuIGEgc3BlY2lmaWVkCisgICAgICAgICAgICAgICAgdmJsYW5rIGV2ZW50IG9jY3Vycy4KKyAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgICAgPHRlcm0+RFJNX0lPQ1RMX01PREVTRVRfQ1RMPC90ZXJtPgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICA8cGFyYT4KKwkJVGhpcyB3YXMgb25seSB1c2VkIGZvciB1c2VyLW1vZGUtc2V0dGluZCBkcml2ZXJzIGFyb3VuZAorCQltb2Rlc2V0dGluZyBjaGFuZ2VzIHRvIGFsbG93IHRoZSBrZXJuZWwgdG8gdXBkYXRlIHRoZSB2YmxhbmsKKwkJaW50ZXJydXB0IGFmdGVyIG1vZGUgc2V0dGluZywgc2luY2Ugb24gbWFueSBkZXZpY2VzIHRoZSB2ZXJ0aWNhbAorCQlibGFuayBjb3VudGVyIGlzIHJlc2V0IHRvIDAgYXQgc29tZSBwb2ludCBkdXJpbmcgbW9kZXNldC4gTW9kZXJuCisJCWRyaXZlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgYW55IG1vcmUgc2luY2Ugd2l0aCBrZXJuZWwgbW9kZQorCQlzZXR0aW5nIGl0IGlzIGEgbm8tb3AuCisgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgIDwvdmFyaWFibGVsaXN0PgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdDE+CisKKyAgPC9jaGFwdGVyPgorPC9wYXJ0PgorPHBhcnQgaWQ9ImRybURyaXZlcnMiPgorICA8dGl0bGU+RFJNIERyaXZlcnM8L3RpdGxlPgorCisgIDxwYXJ0aW50cm8+CisgICAgPHBhcmE+CisgICAgICBUaGlzIHNlY29uZCBwYXJ0IG9mIHRoZSBHUFUgRHJpdmVyIERldmVsb3BlcidzIEd1aWRlIGRvY3VtZW50cyBkcml2ZXIKKyAgICAgIGNvZGUsIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kIGFsc28gYWxsIHRoZSBkcml2ZXItc3BlY2lmaWMgdXNlcnNwYWNlCisgICAgICBpbnRlcmZhY2VzLiBFc3BlY2lhbGx5IHNpbmNlIGFsbCBoYXJkd2FyZS1hY2NlbGVyYXRpb24gaW50ZXJmYWNlcyB0bworICAgICAgdXNlcnNwYWNlIGFyZSBkcml2ZXIgc3BlY2lmaWMgZm9yIGVmZmljaWVuY3kgYW5kIG90aGVyIHJlYXNvbnMgdGhlc2UKKyAgICAgIGludGVyZmFjZXMgY2FuIGJlIHJhdGhlciBzdWJzdGFudGlhbC4gSGVuY2UgZXZlcnkgZHJpdmVyIGhhcyBpdHMgb3duCisgICAgICBjaGFwdGVyLgorICAgIDwvcGFyYT4KKyAgPC9wYXJ0aW50cm8+CisKKyAgPGNoYXB0ZXIgaWQ9ImRybUk5MTUiPgorICAgIDx0aXRsZT5kcm0vaTkxNSBJbnRlbCBHRlggRHJpdmVyPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIFRoZSBkcm0vaTkxNSBkcml2ZXIgc3VwcG9ydHMgYWxsICh3aXRoIHRoZSBleGNlcHRpb24gb2Ygc29tZSB2ZXJ5IGVhcmx5CisgICAgICBtb2RlbHMpIGludGVncmF0ZWQgR0ZYIGNoaXBzZXRzIHdpdGggYm90aCBJbnRlbCBkaXNwbGF5IGFuZCByZW5kZXJpbmcKKyAgICAgIGJsb2Nrcy4gVGhpcyBleGNsdWRlcyBhIHNldCBvZiBTb0MgcGxhdGZvcm1zIHdpdGggYW4gU0dYIHJlbmRlcmluZyB1bml0LAorICAgICAgdGhvc2UgaGF2ZSBiYXNpYyBzdXBwb3J0IHRocm91Z2ggdGhlIGdtYTUwMCBkcm0gZHJpdmVyLgorICAgIDwvcGFyYT4KKyAgICA8c2VjdDE+CisgICAgICA8dGl0bGU+Q29yZSBEcml2ZXIgSW5mcmFzdHJ1Y3R1cmU8L3RpdGxlPgorICAgICAgPHBhcmE+CisJVGhpcyBzZWN0aW9uIGNvdmVycyBjb3JlIGRyaXZlciBpbmZyYXN0cnVjdHVyZSB1c2VkIGJ5IGJvdGggdGhlIGRpc3BsYXkKKwlhbmQgdGhlIEdFTSBwYXJ0cyBvZiB0aGUgZHJpdmVyLgorICAgICAgPC9wYXJhPgorICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0bGU+UnVudGltZSBQb3dlciBNYW5hZ2VtZW50PC90aXRsZT4KKyFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIHJ1bnRpbWUgcG0KKyFJZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCishSWRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCisgICAgICA8L3NlY3QyPgorICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0bGU+SW50ZXJydXB0IEhhbmRsaW5nPC90aXRsZT4KKyFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBpbnRlcnJ1cHQgaGFuZGxpbmcKKyFGZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBpbnRlbF9pcnFfaW5pdCBpbnRlbF9pcnFfaW5pdF9odyBpbnRlbF9ocGRfaW5pdAorIUZkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGludGVsX3J1bnRpbWVfcG1fZGlzYWJsZV9pbnRlcnJ1cHRzCishRmRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgaW50ZWxfcnVudGltZV9wbV9lbmFibGVfaW50ZXJydXB0cworICAgICAgPC9zZWN0Mj4KKyAgICAgIDxzZWN0Mj4KKyAgICAgICAgPHRpdGxlPkludGVsIEdWVC1nIEd1ZXN0IFN1cHBvcnQodkdQVSk8L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYyBJbnRlbCBHVlQtZyBndWVzdCBzdXBwb3J0CishSWRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5jCisgICAgICA8L3NlY3QyPgorICAgIDwvc2VjdDE+CisgICAgPHNlY3QxPgorICAgICAgPHRpdGxlPkRpc3BsYXkgSGFyZHdhcmUgSGFuZGxpbmc8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgc2VjdGlvbiBjb3ZlcnMgZXZlcnl0aGluZyByZWxhdGVkIHRvIHRoZSBkaXNwbGF5IGhhcmR3YXJlIGluY2x1ZGluZworICAgICAgICB0aGUgbW9kZSBzZXR0aW5nIGluZnJhc3RydWN0dXJlLCBwbGFuZSwgc3ByaXRlIGFuZCBjdXJzb3IgaGFuZGxpbmcgYW5kCisgICAgICAgIGRpc3BsYXksIG91dHB1dCBwcm9iaW5nIGFuZCByZWxhdGVkIHRvcGljcy4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxzZWN0Mj4KKyAgICAgICAgPHRpdGxlPk1vZGUgU2V0dGluZyBJbmZyYXN0cnVjdHVyZTwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBpOTE1IGRyaXZlciBpcyB0aHVzIGZhciB0aGUgb25seSBEUk0gZHJpdmVyIHdoaWNoIGRvZXNuJ3QgdXNlIHRoZQorICAgICAgICAgIGNvbW1vbiBEUk0gaGVscGVyIGNvZGUgdG8gaW1wbGVtZW50IG1vZGUgc2V0dGluZyBzZXF1ZW5jZXMuIFRodXMgaXQKKyAgICAgICAgICBoYXMgaXRzIG93biB0YWlsb3ItbWFkZSBpbmZyYXN0cnVjdHVyZSBmb3IgZXhlY3V0aW5nIGEgZGlzcGxheQorICAgICAgICAgIGNvbmZpZ3VyYXRpb24gY2hhbmdlLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3QyPgorICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0bGU+RnJvbnRidWZmZXIgVHJhY2tpbmc8L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mcm9udGJ1ZmZlci5jIGZyb250YnVmZmVyIHRyYWNraW5nCishSWRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Zyb250YnVmZmVyLmMKKyFGZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBpOTE1X2dlbV90cmFja19mYgorICAgICAgPC9zZWN0Mj4KKyAgICAgIDxzZWN0Mj4KKyAgICAgICAgPHRpdGxlPkRpc3BsYXkgRklGTyBVbmRlcnJ1biBSZXBvcnRpbmc8L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9maWZvX3VuZGVycnVuLmMgZmlmbyB1bmRlcnJ1biBoYW5kbGluZworIUlkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9maWZvX3VuZGVycnVuLmMKKyAgICAgIDwvc2VjdDI+CisgICAgICA8c2VjdDI+CisgICAgICAgIDx0aXRsZT5QbGFuZSBDb25maWd1cmF0aW9uPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisJICBUaGlzIHNlY3Rpb24gY292ZXJzIHBsYW5lIGNvbmZpZ3VyYXRpb24gYW5kIGNvbXBvc2l0aW9uIHdpdGggdGhlCisJICBwcmltYXJ5IHBsYW5lLCBzcHJpdGVzLCBjdXJzb3JzIGFuZCBvdmVybGF5cy4gVGhpcyBpbmNsdWRlcyB0aGUKKwkgIGluZnJhc3RydWN0dXJlIHRvIGRvIGF0b21pYyB2c3luYydlZCB1cGRhdGVzIG9mIGFsbCB0aGlzIHN0YXRlIGFuZAorCSAgYWxzbyB0aWdodGx5IGNvdXBsZWQgdG9waWNzIGxpa2Ugd2F0ZXJtYXJrIHNldHVwIGFuZCBjb21wdXRhdGlvbiwKKwkgIGZyYW1lYnVmZmVyIGNvbXByZXNzaW9uIGFuZCBwYW5lbCBzZWxmIHJlZnJlc2guCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdDI+CisgICAgICA8c2VjdDI+CisgICAgICAgIDx0aXRsZT5BdG9taWMgUGxhbmUgSGVscGVyczwvdGl0bGU+CishUGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jIGF0b21pYyBwbGFuZSBoZWxwZXJzCishSWRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCisgICAgICA8L3NlY3QyPgorICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0bGU+T3V0cHV0IFByb2Jpbmc8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKwkgIFRoaXMgc2VjdGlvbiBjb3ZlcnMgb3V0cHV0IHByb2JpbmcgYW5kIHJlbGF0ZWQgaW5mcmFzdHJ1Y3R1cmUgbGlrZSB0aGUKKwkgIGhvdHBsdWcgaW50ZXJydXB0IHN0b3JtIGRldGVjdGlvbiBhbmQgbWl0aWdhdGlvbiBjb2RlLiBOb3RlIHRoYXQgdGhlCisJICBpOTE1IGRyaXZlciBzdGlsbCB1c2VzIG1vc3Qgb2YgdGhlIGNvbW1vbiBEUk0gaGVscGVyIGNvZGUgZm9yIG91dHB1dAorCSAgcHJvYmluZywgc28gdGhvc2Ugc2VjdGlvbnMgZnVsbHkgYXBwbHkuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdDI+CisgICAgICA8c2VjdDI+CisgICAgICAgIDx0aXRsZT5Ib3RwbHVnPC90aXRsZT4KKyFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jIEhvdHBsdWcKKyFJZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaG90cGx1Zy5jCisgICAgICA8L3NlY3QyPgorICAgICAgPHNlY3QyPgorCTx0aXRsZT5IaWdoIERlZmluaXRpb24gQXVkaW88L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jIEhpZ2ggRGVmaW5pdGlvbiBBdWRpbyBvdmVyIEhETUkgYW5kIERpc3BsYXkgUG9ydAorIUlkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCishSWluY2x1ZGUvZHJtL2k5MTVfY29tcG9uZW50LmgKKyAgICAgIDwvc2VjdDI+CisgICAgICA8c2VjdDI+CisJPHRpdGxlPlBhbmVsIFNlbGYgUmVmcmVzaCBQU1IgKFBTUi9TUkQpPC90aXRsZT4KKyFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMgUGFuZWwgU2VsZiBSZWZyZXNoIChQU1IvU1JEKQorIUlkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYworICAgICAgPC9zZWN0Mj4KKyAgICAgIDxzZWN0Mj4KKwk8dGl0bGU+RnJhbWUgQnVmZmVyIENvbXByZXNzaW9uIChGQkMpPC90aXRsZT4KKyFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgRnJhbWUgQnVmZmVyIENvbXByZXNzaW9uIChGQkMpCishSWRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCisgICAgICA8L3NlY3QyPgorICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0bGU+RGlzcGxheSBSZWZyZXNoIFJhdGUgU3dpdGNoaW5nIChEUlJTKTwvdGl0bGU+CishUGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgRGlzcGxheSBSZWZyZXNoIFJhdGUgU3dpdGNoaW5nIChEUlJTKQorIUZkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGludGVsX2RwX3NldF9kcnJzX3N0YXRlCishRmRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgaW50ZWxfZWRwX2RycnNfZW5hYmxlCishRmRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgaW50ZWxfZWRwX2RycnNfZGlzYWJsZQorIUZkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGludGVsX2VkcF9kcnJzX2ludmFsaWRhdGUKKyFGZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBpbnRlbF9lZHBfZHJyc19mbHVzaAorIUZkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGludGVsX2RwX2RycnNfaW5pdAorCisgICAgICA8L3NlY3QyPgorICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0bGU+RFBJTzwvdGl0bGU+CishUGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggRFBJTworCTx0YWJsZSBpZD0iZHBpb3gyIj4KKwkgIDx0aXRsZT5EdWFsIGNoYW5uZWwgUEhZIChWTFYvQ0hWL0JYVCk8L3RpdGxlPgorCSAgPHRncm91cCBjb2xzPSI4Ij4KKwkgICAgPGNvbHNwZWMgY29sbmFtZT0iYzAiIC8+CisJICAgIDxjb2xzcGVjIGNvbG5hbWU9ImMxIiAvPgorCSAgICA8Y29sc3BlYyBjb2xuYW1lPSJjMiIgLz4KKwkgICAgPGNvbHNwZWMgY29sbmFtZT0iYzMiIC8+CisJICAgIDxjb2xzcGVjIGNvbG5hbWU9ImM0IiAvPgorCSAgICA8Y29sc3BlYyBjb2xuYW1lPSJjNSIgLz4KKwkgICAgPGNvbHNwZWMgY29sbmFtZT0iYzYiIC8+CisJICAgIDxjb2xzcGVjIGNvbG5hbWU9ImM3IiAvPgorCSAgICA8c3BhbnNwZWMgc3Bhbm5hbWU9ImNoMCIgbmFtZXN0PSJjMCIgbmFtZWVuZD0iYzMiIC8+CisJICAgIDxzcGFuc3BlYyBzcGFubmFtZT0iY2gxIiBuYW1lc3Q9ImM0IiBuYW1lZW5kPSJjNyIgLz4KKwkgICAgPHNwYW5zcGVjIHNwYW5uYW1lPSJjaDBwY3MwMSIgbmFtZXN0PSJjMCIgbmFtZWVuZD0iYzEiIC8+CisJICAgIDxzcGFuc3BlYyBzcGFubmFtZT0iY2gwcGNzMjMiIG5hbWVzdD0iYzIiIG5hbWVlbmQ9ImMzIiAvPgorCSAgICA8c3BhbnNwZWMgc3Bhbm5hbWU9ImNoMXBjczAxIiBuYW1lc3Q9ImM0IiBuYW1lZW5kPSJjNSIgLz4KKwkgICAgPHNwYW5zcGVjIHNwYW5uYW1lPSJjaDFwY3MyMyIgbmFtZXN0PSJjNiIgbmFtZWVuZD0iYzciIC8+CisJICAgIDx0aGVhZD4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImNoMCI+Q0gwPC9lbnRyeT4KKwkJPGVudHJ5IHNwYW5uYW1lPSJjaDEiPkNIMTwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgIDwvdGhlYWQ+CisJICAgIDx0Ym9keSB2YWxpZ249InRvcCIgYWxpZ249ImNlbnRlciI+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJjaDAiPkNNTi9QTEwvUkVGPC9lbnRyeT4KKwkJPGVudHJ5IHNwYW5uYW1lPSJjaDEiPkNNTi9QTEwvUkVGPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImNoMHBjczAxIj5QQ1MwMTwvZW50cnk+CisJCTxlbnRyeSBzcGFubmFtZT0iY2gwcGNzMjMiPlBDUzIzPC9lbnRyeT4KKwkJPGVudHJ5IHNwYW5uYW1lPSJjaDFwY3MwMSI+UENTMDE8L2VudHJ5PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImNoMXBjczIzIj5QQ1MyMzwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5PlRYMDwvZW50cnk+CisJCTxlbnRyeT5UWDE8L2VudHJ5PgorCQk8ZW50cnk+VFgyPC9lbnRyeT4KKwkJPGVudHJ5PlRYMzwvZW50cnk+CisJCTxlbnRyeT5UWDA8L2VudHJ5PgorCQk8ZW50cnk+VFgxPC9lbnRyeT4KKwkJPGVudHJ5PlRYMjwvZW50cnk+CisJCTxlbnRyeT5UWDM8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iY2gwIj5EREkwPC9lbnRyeT4KKwkJPGVudHJ5IHNwYW5uYW1lPSJjaDEiPkRESTE8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICA8L3Rib2R5PgorCSAgPC90Z3JvdXA+CisJPC90YWJsZT4KKwk8dGFibGUgaWQ9ImRwaW94MSI+CisJICA8dGl0bGU+U2luZ2xlIGNoYW5uZWwgUEhZIChDSFYvQlhUKTwvdGl0bGU+CisJICA8dGdyb3VwIGNvbHM9IjQiPgorCSAgICA8Y29sc3BlYyBjb2xuYW1lPSJjMCIgLz4KKwkgICAgPGNvbHNwZWMgY29sbmFtZT0iYzEiIC8+CisJICAgIDxjb2xzcGVjIGNvbG5hbWU9ImMyIiAvPgorCSAgICA8Y29sc3BlYyBjb2xuYW1lPSJjMyIgLz4KKwkgICAgPHNwYW5zcGVjIHNwYW5uYW1lPSJjaDAiIG5hbWVzdD0iYzAiIG5hbWVlbmQ9ImMzIiAvPgorCSAgICA8c3BhbnNwZWMgc3Bhbm5hbWU9ImNoMHBjczAxIiBuYW1lc3Q9ImMwIiBuYW1lZW5kPSJjMSIgLz4KKwkgICAgPHNwYW5zcGVjIHNwYW5uYW1lPSJjaDBwY3MyMyIgbmFtZXN0PSJjMiIgbmFtZWVuZD0iYzMiIC8+CisJICAgIDx0aGVhZD4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImNoMCI+Q0gwPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgPC90aGVhZD4KKwkgICAgPHRib2R5IHZhbGlnbj0idG9wIiBhbGlnbj0iY2VudGVyIj4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImNoMCI+Q01OL1BMTC9SRUY8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iY2gwcGNzMDEiPlBDUzAxPC9lbnRyeT4KKwkJPGVudHJ5IHNwYW5uYW1lPSJjaDBwY3MyMyI+UENTMjM8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeT5UWDA8L2VudHJ5PgorCQk8ZW50cnk+VFgxPC9lbnRyeT4KKwkJPGVudHJ5PlRYMjwvZW50cnk+CisJCTxlbnRyeT5UWDM8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iY2gwIj5EREkyPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgPC90Ym9keT4KKwkgIDwvdGdyb3VwPgorCTwvdGFibGU+CisgICAgICA8L3NlY3QyPgorCisgICAgICA8c2VjdDI+CisgICAgICAgPHRpdGxlPkNTUiBmaXJtd2FyZSBzdXBwb3J0IGZvciBETUM8L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jc3IuYyBjc3Igc3VwcG9ydCBmb3IgZG1jCishSWRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nzci5jCisgICAgICA8L3NlY3QyPgorICAgIDwvc2VjdDE+CisKKyAgICA8c2VjdDE+CisgICAgICA8dGl0bGU+TWVtb3J5IE1hbmFnZW1lbnQgYW5kIENvbW1hbmQgU3VibWlzc2lvbjwvdGl0bGU+CisgICAgICA8cGFyYT4KKwlUaGlzIHNlY3Rpb25zIGNvdmVycyBhbGwgdGhpbmdzIHJlbGF0ZWQgdG8gdGhlIEdFTSBpbXBsZW1lbnRhdGlvbiBpbiB0aGUKKwlpOTE1IGRyaXZlci4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxzZWN0Mj4KKyAgICAgICAgPHRpdGxlPkJhdGNoYnVmZmVyIFBhcnNpbmc8L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYyBiYXRjaCBidWZmZXIgY29tbWFuZCBwYXJzZXIKKyFJZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMKKyAgICAgIDwvc2VjdDI+CisgICAgICA8c2VjdDI+CisgICAgICAgIDx0aXRsZT5CYXRjaGJ1ZmZlciBQb29sczwvdGl0bGU+CishUGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYyBiYXRjaCBwb29sCishSWRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2JhdGNoX3Bvb2wuYworICAgICAgPC9zZWN0Mj4KKyAgICAgIDxzZWN0Mj4KKyAgICAgICAgPHRpdGxlPkxvZ2ljYWwgUmluZ3MsIExvZ2ljYWwgUmluZyBDb250ZXh0cyBhbmQgRXhlY2xpc3RzPC90aXRsZT4KKyFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgTG9naWNhbCBSaW5ncywgTG9naWNhbCBSaW5nIENvbnRleHRzIGFuZCBFeGVjbGlzdHMKKyFJZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKKyAgICAgIDwvc2VjdDI+CisgICAgICA8c2VjdDI+CisgICAgICAgIDx0aXRsZT5HbG9iYWwgR1RUIHZpZXdzPC90aXRsZT4KKyFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgR2xvYmFsIEdUVCB2aWV3cworIUlkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYworICAgICAgPC9zZWN0Mj4KKyAgICAgIDxzZWN0Mj4KKyAgICAgICAgPHRpdGxlPkdUVCBGZW5jZXMgYW5kIFN3aXp6bGluZzwvdGl0bGU+CishSWRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlLmMKKyAgICAgICAgPHNlY3QzPgorICAgICAgICAgIDx0aXRsZT5HbG9iYWwgR1RUIEZlbmNlIEhhbmRsaW5nPC90aXRsZT4KKyFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2UuYyBmZW5jZSByZWdpc3RlciBoYW5kbGluZworICAgICAgICA8L3NlY3QzPgorICAgICAgICA8c2VjdDM+CisgICAgICAgICAgPHRpdGxlPkhhcmR3YXJlIFRpbGluZyBhbmQgU3dpenpsaW5nIERldGFpbHM8L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZS5jIHRpbGluZyBzd2l6emxpbmcgZGV0YWlscworICAgICAgICA8L3NlY3QzPgorICAgICAgPC9zZWN0Mj4KKyAgICAgIDxzZWN0Mj4KKyAgICAgICAgPHRpdGxlPk9iamVjdCBUaWxpbmcgSU9DVExzPC90aXRsZT4KKyFJZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMKKyFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMgYnVmZmVyIG9iamVjdCB0aWxpbmcKKyAgICAgIDwvc2VjdDI+CisgICAgICA8c2VjdDI+CisgICAgICAgIDx0aXRsZT5CdWZmZXIgT2JqZWN0IEV2aWN0aW9uPC90aXRsZT4KKwk8cGFyYT4KKwkgIFRoaXMgc2VjdGlvbiBkb2N1bWVudHMgdGhlIGludGVyZmFjZSBmdW5jdGlvbnMgZm9yIGV2aWN0aW5nIGJ1ZmZlcgorCSAgb2JqZWN0cyB0byBtYWtlIHNwYWNlIGF2YWlsYWJsZSBpbiB0aGUgdmlydHVhbCBncHUgYWRkcmVzcyBzcGFjZXMuCisJICBOb3RlIHRoYXQgdGhpcyBpcyBtb3N0bHkgb3J0aG9nb25hbCB0byBzaHJpbmtpbmcgYnVmZmVyIG9iamVjdHMKKwkgIGNhY2hlcywgd2hpY2ggaGFzIHRoZSBnb2FsIHRvIG1ha2UgbWFpbiBtZW1vcnkgKHNoYXJlZCB3aXRoIHRoZSBncHUKKwkgIHRocm91Z2ggdGhlIHVuaWZpZWQgbWVtb3J5IGFyY2hpdGVjdHVyZSkgYXZhaWxhYmxlLgorCTwvcGFyYT4KKyFJZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXZpY3QuYworICAgICAgPC9zZWN0Mj4KKyAgICAgIDxzZWN0Mj4KKyAgICAgICAgPHRpdGxlPkJ1ZmZlciBPYmplY3QgTWVtb3J5IFNocmlua2luZzwvdGl0bGU+CisJPHBhcmE+CisJICBUaGlzIHNlY3Rpb24gZG9jdW1lbnRzIHRoZSBpbnRlcmZhY2UgZnVuY3Rpb24gZm9yIHNocmlua2luZyBtZW1vcnkKKwkgIHVzYWdlIG9mIGJ1ZmZlciBvYmplY3QgY2FjaGVzLiBTaHJpbmtpbmcgaXMgdXNlZCB0byBtYWtlIG1haW4gbWVtb3J5CisJICBhdmFpbGFibGUuICBOb3RlIHRoYXQgdGhpcyBpcyBtb3N0bHkgb3J0aG9nb25hbCB0byBldmljdGluZyBidWZmZXIKKwkgIG9iamVjdHMsIHdoaWNoIGhhcyB0aGUgZ29hbCB0byBtYWtlIHNwYWNlIGluIGdwdSB2aXJ0dWFsIGFkZHJlc3MKKwkgIHNwYWNlcy4KKwk8L3BhcmE+CishSWRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKKyAgICAgIDwvc2VjdDI+CisgICAgPC9zZWN0MT4KKyAgICA8c2VjdDE+CisgICAgICA8dGl0bGU+R3VDLWJhc2VkIENvbW1hbmQgU3VibWlzc2lvbjwvdGl0bGU+CisgICAgICA8c2VjdDI+CisgICAgICAgIDx0aXRsZT5HdUM8L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgR3VDLXNwZWNpZmljIGZpcm13YXJlIGxvYWRlcgorIUlkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKKyAgICAgIDwvc2VjdDI+CisgICAgICA8c2VjdDI+CisgICAgICAgIDx0aXRsZT5HdUMgQ2xpZW50PC90aXRsZT4KKyFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIEd1Qy1iYXNlZCBjb21tYW5kIHN1Ym1pc3Npc29uCishSWRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYworICAgICAgPC9zZWN0Mj4KKyAgICA8L3NlY3QxPgorCisgICAgPHNlY3QxPgorICAgICAgPHRpdGxlPiBUcmFjaW5nIDwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICBUaGlzIHNlY3Rpb25zIGNvdmVycyBhbGwgdGhpbmdzIHJlbGF0ZWQgdG8gdGhlIHRyYWNlcG9pbnRzIGltcGxlbWVudGVkIGluCisgICAgdGhlIGk5MTUgZHJpdmVyLgorICAgICAgPC9wYXJhPgorICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0bGU+IGk5MTVfcHBndHRfY3JlYXRlIGFuZCBpOTE1X3BwZ3R0X3JlbGVhc2UgPC90aXRsZT4KKyFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oIGk5MTVfcHBndHRfY3JlYXRlIGFuZCBpOTE1X3BwZ3R0X3JlbGVhc2UgdHJhY2Vwb2ludHMKKyAgICAgIDwvc2VjdDI+CisgICAgICA8c2VjdDI+CisgICAgICAgIDx0aXRsZT4gaTkxNV9jb250ZXh0X2NyZWF0ZSBhbmQgaTkxNV9jb250ZXh0X2ZyZWUgPC90aXRsZT4KKyFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oIGk5MTVfY29udGV4dF9jcmVhdGUgYW5kIGk5MTVfY29udGV4dF9mcmVlIHRyYWNlcG9pbnRzCisgICAgICA8L3NlY3QyPgorICAgICAgPHNlY3QyPgorICAgICAgICA8dGl0bGU+IHN3aXRjaF9tbSA8L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmggc3dpdGNoX21tIHRyYWNlcG9pbnQKKyAgICAgIDwvc2VjdDI+CisgICAgPC9zZWN0MT4KKworICA8L2NoYXB0ZXI+CishQ2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKKzwvcGFydD4KKworPHBhcnQgaWQ9InZnYV9zd2l0Y2hlcm9vIj4KKyAgPHRpdGxlPnZnYV9zd2l0Y2hlcm9vPC90aXRsZT4KKyAgPHBhcnRpbnRybz4KKyFQZHJpdmVycy9ncHUvdmdhL3ZnYV9zd2l0Y2hlcm9vLmMgT3ZlcnZpZXcKKyAgPC9wYXJ0aW50cm8+CisKKyAgPGNoYXB0ZXIgaWQ9Im1vZGVzX29mX3VzZSI+CisgICAgPHRpdGxlPk1vZGVzIG9mIFVzZTwvdGl0bGU+CisgIDxzZWN0MT4KKyAgICA8dGl0bGU+TWFudWFsIHN3aXRjaGluZyBhbmQgbWFudWFsIHBvd2VyIGNvbnRyb2w8L3RpdGxlPgorIVBkcml2ZXJzL2dwdS92Z2EvdmdhX3N3aXRjaGVyb28uYyBNYW51YWwgc3dpdGNoaW5nIGFuZCBtYW51YWwgcG93ZXIgY29udHJvbAorICA8L3NlY3QxPgorICA8c2VjdDE+CisgICAgPHRpdGxlPkRyaXZlciBwb3dlciBjb250cm9sPC90aXRsZT4KKyFQZHJpdmVycy9ncHUvdmdhL3ZnYV9zd2l0Y2hlcm9vLmMgRHJpdmVyIHBvd2VyIGNvbnRyb2wKKyAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJwdWJmdW5jdGlvbnMiPgorICAgIDx0aXRsZT5QdWJsaWMgZnVuY3Rpb25zPC90aXRsZT4KKyFFZHJpdmVycy9ncHUvdmdhL3ZnYV9zd2l0Y2hlcm9vLmMKKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJwdWJzdHJ1Y3R1cmVzIj4KKyAgICA8dGl0bGU+UHVibGljIHN0cnVjdHVyZXM8L3RpdGxlPgorIUZpbmNsdWRlL2xpbnV4L3ZnYV9zd2l0Y2hlcm9vLmggdmdhX3N3aXRjaGVyb29faGFuZGxlcgorIUZpbmNsdWRlL2xpbnV4L3ZnYV9zd2l0Y2hlcm9vLmggdmdhX3N3aXRjaGVyb29fY2xpZW50X29wcworICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9InB1YmNvbnN0YW50cyI+CisgICAgPHRpdGxlPlB1YmxpYyBjb25zdGFudHM8L3RpdGxlPgorIUZpbmNsdWRlL2xpbnV4L3ZnYV9zd2l0Y2hlcm9vLmggdmdhX3N3aXRjaGVyb29fY2xpZW50X2lkCishRmluY2x1ZGUvbGludXgvdmdhX3N3aXRjaGVyb28uaCB2Z2Ffc3dpdGNoZXJvb19zdGF0ZQorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9InByaXZzdHJ1Y3R1cmVzIj4KKyAgICA8dGl0bGU+UHJpdmF0ZSBzdHJ1Y3R1cmVzPC90aXRsZT4KKyFGZHJpdmVycy9ncHUvdmdhL3ZnYV9zd2l0Y2hlcm9vLmMgdmdhc3JfcHJpdgorIUZkcml2ZXJzL2dwdS92Z2EvdmdhX3N3aXRjaGVyb28uYyB2Z2Ffc3dpdGNoZXJvb19jbGllbnQKKyAgPC9jaGFwdGVyPgorCishQ2RyaXZlcnMvZ3B1L3ZnYS92Z2Ffc3dpdGNoZXJvby5jCishQ2luY2x1ZGUvbGludXgvdmdhX3N3aXRjaGVyb28uaAorPC9wYXJ0PgorCis8L2Jvb2s+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svaWlvLnRtcGwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svaWlvLnRtcGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThiZTMyMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9paW8udG1wbApAQCAtMCwwICsxLDY5NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4xLjIvL0VOIgorCSJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMS4yL2RvY2Jvb2t4LmR0ZCIgW10+CisKKzxib29rIGlkPSJpaW9pZCI+CisgIDxib29raW5mbz4KKyAgICA8dGl0bGU+SW5kdXN0cmlhbCBJL08gZHJpdmVyIGRldmVsb3BlcidzIGd1aWRlIDwvdGl0bGU+CisKKyAgICA8YXV0aG9yZ3JvdXA+CisgICAgICA8YXV0aG9yPgorICAgICAgICA8Zmlyc3RuYW1lPkRhbmllbDwvZmlyc3RuYW1lPgorICAgICAgICA8c3VybmFtZT5CYWx1dGE8L3N1cm5hbWU+CisgICAgICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgICAgICA8YWRkcmVzcz4KKyAgICAgICAgICAgIDxlbWFpbD5kYW5pZWwuYmFsdXRhQGludGVsLmNvbTwvZW1haWw+CisgICAgICAgICAgPC9hZGRyZXNzPgorICAgICAgICA8L2FmZmlsaWF0aW9uPgorICAgICAgPC9hdXRob3I+CisgICAgPC9hdXRob3Jncm91cD4KKworICAgIDxjb3B5cmlnaHQ+CisgICAgICA8eWVhcj4yMDE1PC95ZWFyPgorICAgICAgPGhvbGRlcj5JbnRlbCBDb3Jwb3JhdGlvbjwvaG9sZGVyPgorICAgIDwvY29weXJpZ2h0PgorCisgICAgPGxlZ2Fsbm90aWNlPgorICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgZG9jdW1lbnRhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZQorICAgICAgICBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgICAgICAgIExpY2Vuc2UgdmVyc2lvbiAyLgorICAgICAgPC9wYXJhPgorICAgIDwvbGVnYWxub3RpY2U+CisgIDwvYm9va2luZm8+CisKKyAgPHRvYz48L3RvYz4KKworICA8Y2hhcHRlciBpZD0iaW50cm8iPgorICAgIDx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgVGhlIG1haW4gcHVycG9zZSBvZiB0aGUgSW5kdXN0cmlhbCBJL08gc3Vic3lzdGVtIChJSU8pIGlzIHRvIHByb3ZpZGUKKyAgICAgIHN1cHBvcnQgZm9yIGRldmljZXMgdGhhdCBpbiBzb21lIHNlbnNlIHBlcmZvcm0gZWl0aGVyIGFuYWxvZy10by1kaWdpdGFsCisgICAgICBjb252ZXJzaW9uIChBREMpIG9yIGRpZ2l0YWwtdG8tYW5hbG9nIGNvbnZlcnNpb24gKERBQykgb3IgYm90aC4gVGhlIGFpbQorICAgICAgaXMgdG8gZmlsbCB0aGUgZ2FwIGJldHdlZW4gdGhlIHNvbWV3aGF0IHNpbWlsYXIgaHdtb24gYW5kIGlucHV0CisgICAgICBzdWJzeXN0ZW1zLgorICAgICAgSHdtb24gaXMgZGlyZWN0ZWQgYXQgbG93IHNhbXBsZSByYXRlIHNlbnNvcnMgdXNlZCB0byBtb25pdG9yIGFuZAorICAgICAgY29udHJvbCB0aGUgc3lzdGVtIGl0c2VsZiwgbGlrZSBmYW4gc3BlZWQgY29udHJvbCBvciB0ZW1wZXJhdHVyZQorICAgICAgbWVhc3VyZW1lbnQuIElucHV0IGlzLCBhcyBpdHMgbmFtZSBzdWdnZXN0cywgZm9jdXNlZCBvbiBodW1hbiBpbnRlcmFjdGlvbgorICAgICAgaW5wdXQgZGV2aWNlcyAoa2V5Ym9hcmQsIG1vdXNlLCB0b3VjaHNjcmVlbikuIEluIHNvbWUgY2FzZXMgdGhlcmUgaXMKKyAgICAgIGNvbnNpZGVyYWJsZSBvdmVybGFwIGJldHdlZW4gdGhlc2UgYW5kIElJTy4KKyAgPC9wYXJhPgorICA8cGFyYT4KKyAgICBEZXZpY2VzIHRoYXQgZmFsbCBpbnRvIHRoaXMgY2F0ZWdvcnkgaW5jbHVkZToKKyAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgPGxpc3RpdGVtPgorICAgICAgICBhbmFsb2cgdG8gZGlnaXRhbCBjb252ZXJ0ZXJzIChBRENzKQorICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgYWNjZWxlcm9tZXRlcnMKKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIGNhcGFjaXRhbmNlIHRvIGRpZ2l0YWwgY29udmVydGVycyAoQ0RDcykKKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIGRpZ2l0YWwgdG8gYW5hbG9nIGNvbnZlcnRlcnMgKERBQ3MpCisgICAgICA8L2xpc3RpdGVtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgICBneXJvc2NvcGVzCisgICAgICA8L2xpc3RpdGVtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgICBpbmVydGlhbCBtZWFzdXJlbWVudCB1bml0cyAoSU1VcykKKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIGNvbG9yIGFuZCBsaWdodCBzZW5zb3JzCisgICAgICA8L2xpc3RpdGVtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgICBtYWduZXRvbWV0ZXJzCisgICAgICA8L2xpc3RpdGVtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgICBwcmVzc3VyZSBzZW5zb3JzCisgICAgICA8L2xpc3RpdGVtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgICBwcm94aW1pdHkgc2Vuc29ycworICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgdGVtcGVyYXR1cmUgc2Vuc29ycworICAgICAgPC9saXN0aXRlbT4KKyAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICBVc3VhbGx5IHRoZXNlIHNlbnNvcnMgYXJlIGNvbm5lY3RlZCB2aWEgU1BJIG9yIEkyQy4gQSBjb21tb24gdXNlIGNhc2Ugb2YgdGhlCisgICAgc2Vuc29ycyBkZXZpY2VzIGlzIHRvIGhhdmUgY29tYmluZWQgZnVuY3Rpb25hbGl0eSAoZS5nLiBsaWdodCBwbHVzIHByb3hpbWl0eQorICAgIHNlbnNvcikuCisgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorICA8Y2hhcHRlciBpZD0naWlvc3Vic3lzJz4KKyAgICA8dGl0bGU+SW5kdXN0cmlhbCBJL08gY29yZTwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICBUaGUgSW5kdXN0cmlhbCBJL08gY29yZSBvZmZlcnM6CisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICBhIHVuaWZpZWQgZnJhbWV3b3JrIGZvciB3cml0aW5nIGRyaXZlcnMgZm9yIG1hbnkgZGlmZmVyZW50IHR5cGVzIG9mCisgICAgICAgICBlbWJlZGRlZCBzZW5zb3JzLgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICBhIHN0YW5kYXJkIGludGVyZmFjZSB0byB1c2VyIHNwYWNlIGFwcGxpY2F0aW9ucyBtYW5pcHVsYXRpbmcgc2Vuc29ycy4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgVGhlIGltcGxlbWVudGF0aW9uIGNhbiBiZSBmb3VuZCB1bmRlciA8ZmlsZW5hbWU+CisgICAgICBkcml2ZXJzL2lpby9pbmR1c3RyaWFsaW8tKjwvZmlsZW5hbWU+CisgIDwvcGFyYT4KKyAgPHNlY3QxIGlkPSJpaW9kZXZpY2UiPgorICAgIDx0aXRsZT4gSW5kdXN0cmlhbCBJL08gZGV2aWNlcyA8L3RpdGxlPgorCishRmluY2x1ZGUvbGludXgvaWlvL2lpby5oIGlpb19kZXYKKyFGZHJpdmVycy9paW8vaW5kdXN0cmlhbGlvLWNvcmUuYyBpaW9fZGV2aWNlX2FsbG9jCishRmRyaXZlcnMvaWlvL2luZHVzdHJpYWxpby1jb3JlLmMgaWlvX2RldmljZV9mcmVlCishRmRyaXZlcnMvaWlvL2luZHVzdHJpYWxpby1jb3JlLmMgaWlvX2RldmljZV9yZWdpc3RlcgorIUZkcml2ZXJzL2lpby9pbmR1c3RyaWFsaW8tY29yZS5jIGlpb19kZXZpY2VfdW5yZWdpc3RlcgorCisgICAgPHBhcmE+CisgICAgICBBbiBJSU8gZGV2aWNlIHVzdWFsbHkgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgaGFyZHdhcmUgc2Vuc29yIGFuZCBpdAorICAgICAgcHJvdmlkZXMgYWxsIHRoZSBpbmZvcm1hdGlvbiBuZWVkZWQgYnkgYSBkcml2ZXIgaGFuZGxpbmcgYSBkZXZpY2UuCisgICAgICBMZXQncyBmaXJzdCBoYXZlIGEgbG9vayBhdCB0aGUgZnVuY3Rpb25hbGl0eSBlbWJlZGRlZCBpbiBhbiBJSU8KKyAgICAgIGRldmljZSB0aGVuIHdlIHdpbGwgc2hvdyBob3cgYSBkZXZpY2UgZHJpdmVyIG1ha2VzIHVzZSBvZiBhbiBJSU8KKyAgICAgIGRldmljZS4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICAgIFRoZXJlIGFyZSB0d28gd2F5cyBmb3IgYSB1c2VyIHNwYWNlIGFwcGxpY2F0aW9uIHRvIGludGVyYWN0CisgICAgICAgIHdpdGggYW4gSUlPIGRyaXZlci4KKyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8ZmlsZW5hbWU+L3N5cy9idXMvaWlvL2lpbzpkZXZpY2VYLzwvZmlsZW5hbWU+LCB0aGlzCisgICAgICAgICAgcmVwcmVzZW50cyBhIGhhcmR3YXJlIHNlbnNvciBhbmQgZ3JvdXBzIHRvZ2V0aGVyIHRoZSBkYXRhCisgICAgICAgICAgY2hhbm5lbHMgb2YgdGhlIHNhbWUgY2hpcC4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxmaWxlbmFtZT4vZGV2L2lpbzpkZXZpY2VYPC9maWxlbmFtZT4sIGNoYXJhY3RlciBkZXZpY2Ugbm9kZQorICAgICAgICAgIGludGVyZmFjZSB1c2VkIGZvciBidWZmZXJlZCBkYXRhIHRyYW5zZmVyIGFuZCBmb3IgZXZlbnRzIGluZm9ybWF0aW9uCisgICAgICAgICAgcmV0cmlldmFsLgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorICAgIEEgdHlwaWNhbCBJSU8gZHJpdmVyIHdpbGwgcmVnaXN0ZXIgaXRzZWxmIGFzIGFuIEkyQyBvciBTUEkgZHJpdmVyIGFuZCB3aWxsCisgICAgY3JlYXRlIHR3byByb3V0aW5lcywgPGZ1bmN0aW9uPiBwcm9iZSA8L2Z1bmN0aW9uPiBhbmQgPGZ1bmN0aW9uPiByZW1vdmUKKyAgICA8L2Z1bmN0aW9uPi4gQXQgPGZ1bmN0aW9uPnByb2JlPC9mdW5jdGlvbj46CisgICAgPGl0ZW1pemVkbGlzdD4KKyAgICA8bGlzdGl0ZW0+Y2FsbCA8ZnVuY3Rpb24+aWlvX2RldmljZV9hbGxvYzwvZnVuY3Rpb24+LCB3aGljaCBhbGxvY2F0ZXMgbWVtb3J5CisgICAgICBmb3IgYW4gSUlPIGRldmljZS4KKyAgICA8L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT4gaW5pdGlhbGl6ZSBJSU8gZGV2aWNlIGZpZWxkcyB3aXRoIGRyaXZlciBzcGVjaWZpYyBpbmZvcm1hdGlvbgorICAgICAgICAgICAgICAoZS5nLiBkZXZpY2UgbmFtZSwgZGV2aWNlIGNoYW5uZWxzKS4KKyAgICA8L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT5jYWxsIDxmdW5jdGlvbj4gaWlvX2RldmljZV9yZWdpc3RlcjwvZnVuY3Rpb24+LCB0aGlzIHJlZ2lzdGVycyB0aGUKKyAgICAgIGRldmljZSB3aXRoIHRoZSBJSU8gY29yZS4gQWZ0ZXIgdGhpcyBjYWxsIHRoZSBkZXZpY2UgaXMgcmVhZHkgdG8gYWNjZXB0CisgICAgICByZXF1ZXN0cyBmcm9tIHVzZXIgc3BhY2UgYXBwbGljYXRpb25zLgorICAgIDwvbGlzdGl0ZW0+CisgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICBBdCA8ZnVuY3Rpb24+cmVtb3ZlPC9mdW5jdGlvbj4sIHdlIGZyZWUgdGhlIHJlc291cmNlcyBhbGxvY2F0ZWQgaW4KKyAgICAgIDxmdW5jdGlvbj5wcm9iZTwvZnVuY3Rpb24+IGluIHJldmVyc2Ugb3JkZXI6CisgICAgPGl0ZW1pemVkbGlzdD4KKyAgICA8bGlzdGl0ZW0+PGZ1bmN0aW9uPmlpb19kZXZpY2VfdW5yZWdpc3RlcjwvZnVuY3Rpb24+LCB1bnJlZ2lzdGVyIHRoZSBkZXZpY2UKKyAgICAgIGZyb20gdGhlIElJTyBjb3JlLgorICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPjxmdW5jdGlvbj5paW9fZGV2aWNlX2ZyZWU8L2Z1bmN0aW9uPiwgZnJlZSB0aGUgbWVtb3J5IGFsbG9jYXRlZAorICAgICAgZm9yIHRoZSBJSU8gZGV2aWNlLgorICAgIDwvbGlzdGl0ZW0+CisgICAgPC9pdGVtaXplZGxpc3Q+CisKKyAgICA8c2VjdDIgaWQ9Imlpb2F0dHIiPiA8dGl0bGU+IElJTyBkZXZpY2Ugc3lzZnMgaW50ZXJmYWNlIDwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgQXR0cmlidXRlcyBhcmUgc3lzZnMgZmlsZXMgdXNlZCB0byBleHBvc2UgY2hpcCBpbmZvIGFuZCBhbHNvIGFsbG93aW5nCisgICAgICAgIGFwcGxpY2F0aW9ucyB0byBzZXQgdmFyaW91cyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuIEZvciBkZXZpY2UKKyAgICAgICAgd2l0aCBpbmRleCBYLCBhdHRyaWJ1dGVzIGNhbiBiZSBmb3VuZCB1bmRlcgorICAgICAgICA8ZmlsZW5hbWU+L3N5cy9idXMvaWlvL2lpbzpkZXZpY2VYLyA8L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCisgICAgICAgIENvbW1vbiBhdHRyaWJ1dGVzIGFyZToKKyAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICA8bGlzdGl0ZW0+PGZpbGVuYW1lPm5hbWU8L2ZpbGVuYW1lPiwgZGVzY3JpcHRpb24gb2YgdGhlIHBoeXNpY2FsCisgICAgICAgICAgICBjaGlwLgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgPGxpc3RpdGVtPjxmaWxlbmFtZT5kZXY8L2ZpbGVuYW1lPiwgc2hvd3MgdGhlIG1ham9yOm1pbm9yIHBhaXIKKyAgICAgICAgICAgIGFzc29jaWF0ZWQgd2l0aCA8ZmlsZW5hbWU+L2Rldi9paW86ZGV2aWNlWDwvZmlsZW5hbWU+IG5vZGUuCisgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICA8bGlzdGl0ZW0+PGZpbGVuYW1lPnNhbXBsaW5nX2ZyZXF1ZW5jeV9hdmFpbGFibGU8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIGF2YWlsYWJsZSBkaXNjcmV0ZSBzZXQgb2Ygc2FtcGxpbmcgZnJlcXVlbmN5IHZhbHVlcyBmb3IKKyAgICAgICAgICAgIGRldmljZS4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICBBdmFpbGFibGUgc3RhbmRhcmQgYXR0cmlidXRlcyBmb3IgSUlPIGRldmljZXMgYXJlIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgIDxmaWxlbmFtZT5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1paW8gPC9maWxlbmFtZT4gZmlsZQorICAgICAgaW4gdGhlIExpbnV4IGtlcm5lbCBzb3VyY2VzLgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdDI+CisgICAgPHNlY3QyIGlkPSJpaW9jaGFubmVsIj4gPHRpdGxlPiBJSU8gZGV2aWNlIGNoYW5uZWxzIDwvdGl0bGU+CishRmluY2x1ZGUvbGludXgvaWlvL2lpby5oIGlpb19jaGFuX3NwZWMgc3RydWN0dXJlLgorICAgICAgPHBhcmE+CisgICAgICAgIEFuIElJTyBkZXZpY2UgY2hhbm5lbCBpcyBhIHJlcHJlc2VudGF0aW9uIG9mIGEgZGF0YSBjaGFubmVsLiBBbgorICAgICAgICBJSU8gZGV2aWNlIGNhbiBoYXZlIG9uZSBvciBtdWx0aXBsZSBjaGFubmVscy4gRm9yIGV4YW1wbGU6CisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIGEgdGhlcm1vbWV0ZXIgc2Vuc29yIGhhcyBvbmUgY2hhbm5lbCByZXByZXNlbnRpbmcgdGhlCisgICAgICAgICAgdGVtcGVyYXR1cmUgbWVhc3VyZW1lbnQuCisgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgYSBsaWdodCBzZW5zb3Igd2l0aCB0d28gY2hhbm5lbHMgaW5kaWNhdGluZyB0aGUgbWVhc3VyZW1lbnRzIGluCisgICAgICAgICAgdGhlIHZpc2libGUgYW5kIGluZnJhcmVkIHNwZWN0cnVtLgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIGFuIGFjY2VsZXJvbWV0ZXIgY2FuIGhhdmUgdXAgdG8gMyBjaGFubmVscyByZXByZXNlbnRpbmcKKyAgICAgICAgICBhY2NlbGVyYXRpb24gb24gWCwgWSBhbmQgWiBheGVzLgorICAgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgQW4gSUlPIGNoYW5uZWwgaXMgZGVzY3JpYmVkIGJ5IHRoZSA8dHlwZT4gc3RydWN0IGlpb19jaGFuX3NwZWMKKyAgICAgIDwvdHlwZT4uIEEgdGhlcm1vbWV0ZXIgZHJpdmVyIGZvciB0aGUgdGVtcGVyYXR1cmUgc2Vuc29yIGluIHRoZQorICAgICAgZXhhbXBsZSBhYm92ZSB3b3VsZCBoYXZlIHRvIGRlc2NyaWJlIGl0cyBjaGFubmVsIGFzIGZvbGxvd3M6CisgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CisgICAgICBzdGF0aWMgY29uc3Qgc3RydWN0IGlpb19jaGFuX3NwZWMgdGVtcF9jaGFubmVsW10gPSB7CisgICAgICAgICAgeworICAgICAgICAgICAgICAudHlwZSA9IElJT19URU1QLAorICAgICAgICAgICAgICAuaW5mb19tYXNrX3NlcGFyYXRlID0gQklUKElJT19DSEFOX0lORk9fUFJPQ0VTU0VEKSwKKyAgICAgICAgICB9LAorICAgICAgfTsKKworICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIENoYW5uZWwgc3lzZnMgYXR0cmlidXRlcyBleHBvc2VkIHRvIHVzZXJzcGFjZSBhcmUgc3BlY2lmaWVkIGluCisgICAgICB0aGUgZm9ybSBvZiA8ZW1waGFzaXM+Yml0bWFza3M8L2VtcGhhc2lzPi4gRGVwZW5kaW5nIG9uIHRoZWlyCisgICAgICBzaGFyZWQgaW5mbywgYXR0cmlidXRlcyBjYW4gYmUgc2V0IGluIG9uZSBvZiB0aGUgZm9sbG93aW5nIG1hc2tzOgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgIDxsaXN0aXRlbT48ZW1waGFzaXM+aW5mb19tYXNrX3NlcGFyYXRlPC9lbXBoYXNpcz4sIGF0dHJpYnV0ZXMgd2lsbAorICAgICAgICBiZSBzcGVjaWZpYyB0byB0aGlzIGNoYW5uZWw8L2xpc3RpdGVtPgorICAgICAgPGxpc3RpdGVtPjxlbXBoYXNpcz5pbmZvX21hc2tfc2hhcmVkX2J5X3R5cGU8L2VtcGhhc2lzPiwKKyAgICAgICAgYXR0cmlidXRlcyBhcmUgc2hhcmVkIGJ5IGFsbCBjaGFubmVscyBvZiB0aGUgc2FtZSB0eXBlPC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT48ZW1waGFzaXM+aW5mb19tYXNrX3NoYXJlZF9ieV9kaXI8L2VtcGhhc2lzPiwgYXR0cmlidXRlcworICAgICAgICBhcmUgc2hhcmVkIGJ5IGFsbCBjaGFubmVscyBvZiB0aGUgc2FtZSBkaXJlY3Rpb24gPC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT48ZW1waGFzaXM+aW5mb19tYXNrX3NoYXJlZF9ieV9hbGw8L2VtcGhhc2lzPiwKKyAgICAgICAgYXR0cmlidXRlcyBhcmUgc2hhcmVkIGJ5IGFsbCBjaGFubmVsczwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgIFdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGRhdGEgY2hhbm5lbHMgcGVyIGNoYW5uZWwgdHlwZSB3ZSBoYXZlIHR3bworICAgICAgd2F5cyB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZW06CisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgPGxpc3RpdGVtPiBzZXQgPGVtcGhhc2lzPiAubW9kaWZpZWQ8L2VtcGhhc2lzPiBmaWVsZCBvZiA8dHlwZT4KKyAgICAgICAgaWlvX2NoYW5fc3BlYzwvdHlwZT4gdG8gMS4gTW9kaWZpZXJzIGFyZSBzcGVjaWZpZWQgdXNpbmcKKyAgICAgICAgPGVtcGhhc2lzPi5jaGFubmVsMjwvZW1waGFzaXM+IGZpZWxkIG9mIHRoZSBzYW1lCisgICAgICAgIDx0eXBlPmlpb19jaGFuX3NwZWM8L3R5cGU+IHN0cnVjdHVyZSBhbmQgYXJlIHVzZWQgdG8gaW5kaWNhdGUgYQorICAgICAgICBwaHlzaWNhbGx5IHVuaXF1ZSBjaGFyYWN0ZXJpc3RpYyBvZiB0aGUgY2hhbm5lbCBzdWNoIGFzIGl0cyBkaXJlY3Rpb24KKyAgICAgICAgb3Igc3BlY3RyYWwgcmVzcG9uc2UuIEZvciBleGFtcGxlLCBhIGxpZ2h0IHNlbnNvciBjYW4gaGF2ZSB0d28gY2hhbm5lbHMsCisgICAgICAgIG9uZSBmb3IgaW5mcmFyZWQgbGlnaHQgYW5kIG9uZSBmb3IgYm90aCBpbmZyYXJlZCBhbmQgdmlzaWJsZSBsaWdodC4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+IHNldCA8ZW1waGFzaXM+LmluZGV4ZWQgPC9lbXBoYXNpcz4gZmllbGQgb2YKKyAgICAgICAgPHR5cGU+aWlvX2NoYW5fc3BlYzwvdHlwZT4gdG8gMS4gSW4gdGhpcyBjYXNlIHRoZSBjaGFubmVsIGlzCisgICAgICAgIHNpbXBseSBhbm90aGVyIGluc3RhbmNlIHdpdGggYW4gaW5kZXggc3BlY2lmaWVkIGJ5IHRoZQorICAgICAgICA8ZW1waGFzaXM+LmNoYW5uZWw8L2VtcGhhc2lzPiBmaWVsZC4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgIEhlcmUgaXMgaG93IHdlIGNhbiBtYWtlIHVzZSBvZiB0aGUgY2hhbm5lbCdzIG1vZGlmaWVyczoKKyAgICAgIDxwcm9ncmFtbGlzdGluZz4KKyAgICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyBsaWdodF9jaGFubmVsc1tdID0geworICAgICAgICAgIHsKKyAgICAgICAgICAgICAgLnR5cGUgPSBJSU9fSU5URU5TSVRZLAorICAgICAgICAgICAgICAubW9kaWZpZWQgPSAxLAorICAgICAgICAgICAgICAuY2hhbm5lbDIgPSBJSU9fTU9EX0xJR0hUX0lSLAorICAgICAgICAgICAgICAuaW5mb19tYXNrX3NlcGFyYXRlID0gQklUKElJT19DSEFOX0lORk9fUkFXKSwKKyAgICAgICAgICAgICAgLmluZm9fbWFza19zaGFyZWQgPSBCSVQoSUlPX0NIQU5fSU5GT19TQU1QX0ZSRVEpLAorICAgICAgICAgIH0sCisgICAgICAgICAgeworICAgICAgICAgICAgICAudHlwZSA9IElJT19JTlRFTlNJVFksCisgICAgICAgICAgICAgIC5tb2RpZmllZCA9IDEsCisgICAgICAgICAgICAgIC5jaGFubmVsMiA9IElJT19NT0RfTElHSFRfQk9USCwKKyAgICAgICAgICAgICAgLmluZm9fbWFza19zZXBhcmF0ZSA9IEJJVChJSU9fQ0hBTl9JTkZPX1JBVyksCisgICAgICAgICAgICAgIC5pbmZvX21hc2tfc2hhcmVkID0gQklUKElJT19DSEFOX0lORk9fU0FNUF9GUkVRKSwKKyAgICAgICAgICB9LAorICAgICAgICAgIHsKKyAgICAgICAgICAgICAgLnR5cGUgPSBJSU9fTElHSFQsCisgICAgICAgICAgICAgIC5pbmZvX21hc2tfc2VwYXJhdGUgPSBCSVQoSUlPX0NIQU5fSU5GT19QUk9DRVNTRUQpLAorICAgICAgICAgICAgICAuaW5mb19tYXNrX3NoYXJlZCA9IEJJVChJSU9fQ0hBTl9JTkZPX1NBTVBfRlJFUSksCisgICAgICAgICAgfSwKKworICAgICAgfQorICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIFRoaXMgY2hhbm5lbCdzIGRlZmluaXRpb24gd2lsbCBnZW5lcmF0ZSB0d28gc2VwYXJhdGUgc3lzZnMgZmlsZXMKKyAgICAgIGZvciByYXcgZGF0YSByZXRyaWV2YWw6CisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgPGxpc3RpdGVtPgorICAgICAgPGZpbGVuYW1lPi9zeXMvYnVzL2lpby9paW86ZGV2aWNlWC9pbl9pbnRlbnNpdHlfaXJfcmF3PC9maWxlbmFtZT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICA8ZmlsZW5hbWU+L3N5cy9idXMvaWlvL2lpbzpkZXZpY2VYL2luX2ludGVuc2l0eV9ib3RoX3JhdzwvZmlsZW5hbWU+CisgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICBvbmUgZmlsZSBmb3IgcHJvY2Vzc2VkIGRhdGE6CisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgPGxpc3RpdGVtPgorICAgICAgPGZpbGVuYW1lPi9zeXMvYnVzL2lpby9paW86ZGV2aWNlWC9pbl9pbGx1bWluYW5jZV9pbnB1dAorICAgICAgPC9maWxlbmFtZT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgIGFuZCBvbmUgc2hhcmVkIHN5c2ZzIGZpbGUgZm9yIHNhbXBsaW5nIGZyZXF1ZW5jeToKKyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICA8ZmlsZW5hbWU+L3N5cy9idXMvaWlvL2lpbzpkZXZpY2VYL3NhbXBsaW5nX2ZyZXF1ZW5jeS4KKyAgICAgIDwvZmlsZW5hbWU+CisgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgIEhlcmUgaXMgaG93IHdlIGNhbiBtYWtlIHVzZSBvZiB0aGUgY2hhbm5lbCdzIGluZGV4aW5nOgorICAgICAgPHByb2dyYW1saXN0aW5nPgorICAgICAgc3RhdGljIGNvbnN0IHN0cnVjdCBpaW9fY2hhbl9zcGVjIGxpZ2h0X2NoYW5uZWxzW10gPSB7CisgICAgICAgICAgeworICAgICAgICAgICAgICAudHlwZSA9IElJT19WT0xUQUdFLAorICAgICAgICAgICAgICAuaW5kZXhlZCA9IDEsCisgICAgICAgICAgICAgIC5jaGFubmVsID0gMCwKKyAgICAgICAgICAgICAgLmluZm9fbWFza19zZXBhcmF0ZSA9IEJJVChJSU9fQ0hBTl9JTkZPX1JBVyksCisgICAgICAgICAgfSwKKyAgICAgICAgICB7CisgICAgICAgICAgICAgIC50eXBlID0gSUlPX1ZPTFRBR0UsCisgICAgICAgICAgICAgIC5pbmRleGVkID0gMSwKKyAgICAgICAgICAgICAgLmNoYW5uZWwgPSAxLAorICAgICAgICAgICAgICAuaW5mb19tYXNrX3NlcGFyYXRlID0gQklUKElJT19DSEFOX0lORk9fUkFXKSwKKyAgICAgICAgICB9LAorICAgICAgfQorICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIFRoaXMgd2lsbCBnZW5lcmF0ZSB0d28gc2VwYXJhdGUgYXR0cmlidXRlcyBmaWxlcyBmb3IgcmF3IGRhdGEKKyAgICAgIHJldHJpZXZhbDoKKyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxmaWxlbmFtZT4vc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC9pbl92b2x0YWdlMF9yYXc8L2ZpbGVuYW1lPiwKKyAgICAgICAgICByZXByZXNlbnRpbmcgdm9sdGFnZSBtZWFzdXJlbWVudCBmb3IgY2hhbm5lbCAwLgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPGZpbGVuYW1lPi9zeXMvYnVzL2lpby9kZXZpY2VzL2lpbzpkZXZpY2VYL2luX3ZvbHRhZ2UxX3JhdzwvZmlsZW5hbWU+LAorICAgICAgICAgIHJlcHJlc2VudGluZyB2b2x0YWdlIG1lYXN1cmVtZW50IGZvciBjaGFubmVsIDEuCisgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0Mj4KKyAgPC9zZWN0MT4KKworICA8c2VjdDEgaWQ9Imlpb2J1ZmZlciI+IDx0aXRsZT4gSW5kdXN0cmlhbCBJL08gYnVmZmVycyA8L3RpdGxlPgorIUZpbmNsdWRlL2xpbnV4L2lpby9idWZmZXIuaCBpaW9fYnVmZmVyCishRWRyaXZlcnMvaWlvL2luZHVzdHJpYWxpby1idWZmZXIuYworCisgICAgPHBhcmE+CisgICAgVGhlIEluZHVzdHJpYWwgSS9PIGNvcmUgb2ZmZXJzIGEgd2F5IGZvciBjb250aW51b3VzIGRhdGEgY2FwdHVyZQorICAgIGJhc2VkIG9uIGEgdHJpZ2dlciBzb3VyY2UuIE11bHRpcGxlIGRhdGEgY2hhbm5lbHMgY2FuIGJlIHJlYWQgYXQgb25jZQorICAgIGZyb20gPGZpbGVuYW1lPi9kZXYvaWlvOmRldmljZVg8L2ZpbGVuYW1lPiBjaGFyYWN0ZXIgZGV2aWNlIG5vZGUsCisgICAgdGh1cyByZWR1Y2luZyB0aGUgQ1BVIGxvYWQuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3QyIGlkPSJpaW9idWZmZXJzeXNmcyI+CisgICAgPHRpdGxlPklJTyBidWZmZXIgc3lzZnMgaW50ZXJmYWNlIDwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICBBbiBJSU8gYnVmZmVyIGhhcyBhbiBhc3NvY2lhdGVkIGF0dHJpYnV0ZXMgZGlyZWN0b3J5IHVuZGVyIDxmaWxlbmFtZT4KKyAgICAgIC9zeXMvYnVzL2lpby9paW86ZGV2aWNlWC9idWZmZXIvPC9maWxlbmFtZT4uIEhlcmUgYXJlIHRoZSBleGlzdGluZworICAgICAgYXR0cmlidXRlczoKKyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICA8ZW1waGFzaXM+bGVuZ3RoPC9lbXBoYXNpcz4sIHRoZSB0b3RhbCBudW1iZXIgb2YgZGF0YSBzYW1wbGVzCisgICAgICAoY2FwYWNpdHkpIHRoYXQgY2FuIGJlIHN0b3JlZCBieSB0aGUgYnVmZmVyLgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPGVtcGhhc2lzPmVuYWJsZTwvZW1waGFzaXM+LCBhY3RpdmF0ZSBidWZmZXIgY2FwdHVyZS4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlzdD4KKworICAgIDwvcGFyYT4KKyAgICA8L3NlY3QyPgorICAgIDxzZWN0MiBpZD0iaWlvYnVmZmVyc2V0dXAiPiA8dGl0bGU+IElJTyBidWZmZXIgc2V0dXAgPC90aXRsZT4KKyAgICAgIDxwYXJhPlRoZSBtZXRhIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCBhIGNoYW5uZWwgcmVhZGluZworICAgICAgICBwbGFjZWQgaW4gYSBidWZmZXIgaXMgY2FsbGVkIGEgPGVtcGhhc2lzPiBzY2FuIGVsZW1lbnQgPC9lbXBoYXNpcz4uCisgICAgICAgIFRoZSBpbXBvcnRhbnQgYml0cyBjb25maWd1cmluZyBzY2FuIGVsZW1lbnRzIGFyZSBleHBvc2VkIHRvCisgICAgICAgIHVzZXJzcGFjZSBhcHBsaWNhdGlvbnMgdmlhIHRoZSA8ZmlsZW5hbWU+CisgICAgICAgIC9zeXMvYnVzL2lpby9paW86ZGV2aWNlWC9zY2FuX2VsZW1lbnRzLzwvZmlsZW5hbWU+IGRpcmVjdG9yeS4gVGhpcworICAgICAgICBmaWxlIGNvbnRhaW5zIGF0dHJpYnV0ZXMgb2YgdGhlIGZvbGxvd2luZyBmb3JtOgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgIDxsaXN0aXRlbT48ZW1waGFzaXM+ZW5hYmxlPC9lbXBoYXNpcz4sIHVzZWQgZm9yIGVuYWJsaW5nIGEgY2hhbm5lbC4KKyAgICAgICAgSWYgYW5kIG9ubHkgaWYgaXRzIGF0dHJpYnV0ZSBpcyBub24gemVybywgdGhlbiBhIHRyaWdnZXJlZCBjYXB0dXJlCisgICAgICAgIHdpbGwgY29udGFpbiBkYXRhIHNhbXBsZXMgZm9yIHRoaXMgY2hhbm5lbC4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+PGVtcGhhc2lzPnR5cGU8L2VtcGhhc2lzPiwgZGVzY3JpcHRpb24gb2YgdGhlIHNjYW4gZWxlbWVudAorICAgICAgICBkYXRhIHN0b3JhZ2Ugd2l0aGluIHRoZSBidWZmZXIgYW5kIGhlbmNlIHRoZSBmb3JtIGluIHdoaWNoIGl0IGlzCisgICAgICAgIHJlYWQgZnJvbSB1c2VyIHNwYWNlLiBGb3JtYXQgaXMgPGVtcGhhc2lzPgorICAgICAgICBbYmV8bGVdOltzfHVdYml0cy9zdG9yYWdlYml0c1hyZXBlYXRbPj5zaGlmdF0gPC9lbXBoYXNpcz4uCisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT4gPGVtcGhhc2lzPmJlPC9lbXBoYXNpcz4gb3IgPGVtcGhhc2lzPmxlPC9lbXBoYXNpcz4sIHNwZWNpZmllcworICAgICAgICAgIGJpZyBvciBsaXR0bGUgZW5kaWFuLgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxlbXBoYXNpcz5zIDwvZW1waGFzaXM+b3IgPGVtcGhhc2lzPnU8L2VtcGhhc2lzPiwgc3BlY2lmaWVzIGlmCisgICAgICAgICAgc2lnbmVkICgyJ3MgY29tcGxlbWVudCkgb3IgdW5zaWduZWQuCisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT48ZW1waGFzaXM+Yml0czwvZW1waGFzaXM+LCBpcyB0aGUgbnVtYmVyIG9mIHZhbGlkIGRhdGEKKyAgICAgICAgICBiaXRzLgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+PGVtcGhhc2lzPnN0b3JhZ2ViaXRzPC9lbXBoYXNpcz4sIGlzIHRoZSBudW1iZXIgb2YgYml0cworICAgICAgICAgIChhZnRlciBwYWRkaW5nKSB0aGF0IGl0IG9jY3VwaWVzIGluIHRoZSBidWZmZXIuCisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPGVtcGhhc2lzPnNoaWZ0PC9lbXBoYXNpcz4sIGlmIHNwZWNpZmllZCwgaXMgdGhlIHNoaWZ0IHRoYXQgbmVlZHMKKyAgICAgICAgICB0byBiZSBhcHBsaWVkIHByaW9yIHRvIG1hc2tpbmcgb3V0IHVudXNlZCBiaXRzLgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxlbXBoYXNpcz5yZXBlYXQ8L2VtcGhhc2lzPiwgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYml0cy9zdG9yYWdlYml0cworICAgICAgICByZXBldGl0aW9ucy4gV2hlbiB0aGUgcmVwZWF0IGVsZW1lbnQgaXMgMCBvciAxLCB0aGVuIHRoZSByZXBlYXQKKyAgICAgICAgdmFsdWUgaXMgb21pdHRlZC4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICBGb3IgZXhhbXBsZSwgYSBkcml2ZXIgZm9yIGEgMy1heGlzIGFjY2VsZXJvbWV0ZXIgd2l0aCAxMiBiaXQKKyAgICAgIHJlc29sdXRpb24gd2hlcmUgZGF0YSBpcyBzdG9yZWQgaW4gdHdvIDgtYml0cyByZWdpc3RlcnMgYXMKKyAgICAgIGZvbGxvd3M6CisgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwCisgICAgICArLS0tKy0tLSstLS0rLS0tKy0tLSstLS0rLS0tKy0tLSsKKyAgICAgIHxEMyB8RDIgfEQxIHxEMCB8IFggfCBYIHwgWCB8IFggfCAoTE9XIGJ5dGUsIGFkZHJlc3MgMHgwNikKKyAgICAgICstLS0rLS0tKy0tLSstLS0rLS0tKy0tLSstLS0rLS0tKworCisgICAgICAgIDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwCisgICAgICArLS0tKy0tLSstLS0rLS0tKy0tLSstLS0rLS0tKy0tLSsKKyAgICAgIHxEMTF8RDEwfEQ5IHxEOCB8RDcgfEQ2IHxENSB8RDQgfCAoSElHSCBieXRlLCBhZGRyZXNzIDB4MDcpCisgICAgICArLS0tKy0tLSstLS0rLS0tKy0tLSstLS0rLS0tKy0tLSsKKyAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgICAgIHdpbGwgaGF2ZSB0aGUgZm9sbG93aW5nIHNjYW4gZWxlbWVudCB0eXBlIGZvciBlYWNoIGF4aXM6CisgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CisgICAgICAkIGNhdCAvc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlMC9zY2FuX2VsZW1lbnRzL2luX2FjY2VsX3lfdHlwZQorICAgICAgbGU6czEyLzE2Pj40CisgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgQSB1c2VyIHNwYWNlIGFwcGxpY2F0aW9uIHdpbGwgaW50ZXJwcmV0IGRhdGEgc2FtcGxlcyByZWFkIGZyb20gdGhlCisgICAgICBidWZmZXIgYXMgdHdvIGJ5dGUgbGl0dGxlIGVuZGlhbiBzaWduZWQgZGF0YSwgdGhhdCBuZWVkcyBhIDQgYml0cworICAgICAgcmlnaHQgc2hpZnQgYmVmb3JlIG1hc2tpbmcgb3V0IHRoZSAxMiB2YWxpZCBiaXRzIG9mIGRhdGEuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgRm9yIGltcGxlbWVudGluZyBidWZmZXIgc3VwcG9ydCBhIGRyaXZlciBzaG91bGQgaW5pdGlhbGl6ZSB0aGUgZm9sbG93aW5nCisgICAgICBmaWVsZHMgaW4gPHR5cGU+aWlvX2NoYW5fc3BlYzwvdHlwZT4gZGVmaW5pdGlvbjoKKyAgICAgIDxwcm9ncmFtbGlzdGluZz4KKyAgICAgICAgICBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyB7CisgICAgICAgICAgICAgIC8qIG90aGVyIG1lbWJlcnMgKi8KKyAgICAgICAgICAgICAgaW50IHNjYW5faW5kZXgKKyAgICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICAgIGNoYXIgc2lnbjsKKyAgICAgICAgICAgICAgICAgIHU4IHJlYWxiaXRzOworICAgICAgICAgICAgICAgICAgdTggc3RvcmFnZWJpdHM7CisgICAgICAgICAgICAgICAgICB1OCBzaGlmdDsKKyAgICAgICAgICAgICAgICAgIHU4IHJlcGVhdDsKKyAgICAgICAgICAgICAgICAgIGVudW0gaWlvX2VuZGlhbiBlbmRpYW5uZXNzOworICAgICAgICAgICAgICB9IHNjYW5fdHlwZTsKKyAgICAgICAgICB9OworICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIFRoZSBkcml2ZXIgaW1wbGVtZW50aW5nIHRoZSBhY2NlbGVyb21ldGVyIGRlc2NyaWJlZCBhYm92ZSB3aWxsCisgICAgICBoYXZlIHRoZSBmb2xsb3dpbmcgY2hhbm5lbCBkZWZpbml0aW9uOgorICAgICAgPHByb2dyYW1saXN0aW5nPgorICAgICAgc3RydWN0IHN0cnVjdCBpaW9fY2hhbl9zcGVjIGFjY2VsX2NoYW5uZWxzW10gPSB7CisgICAgICAgICAgeworICAgICAgICAgICAgLnR5cGUgPSBJSU9fQUNDRUwsCisgICAgICAgICAgICAubW9kaWZpZWQgPSAxLAorICAgICAgICAgICAgLmNoYW5uZWwyID0gSUlPX01PRF9YLAorICAgICAgICAgICAgLyogb3RoZXIgc3R1ZmYgaGVyZSAqLworICAgICAgICAgICAgLnNjYW5faW5kZXggPSAwLAorICAgICAgICAgICAgLnNjYW5fdHlwZSA9IHsKKyAgICAgICAgICAgICAgLnNpZ24gPSAncycsCisgICAgICAgICAgICAgIC5yZWFsYml0cyA9IDEyLAorICAgICAgICAgICAgICAuc3RvcmdlYml0cyA9IDE2LAorICAgICAgICAgICAgICAuc2hpZnQgPSA0LAorICAgICAgICAgICAgICAuZW5kaWFubmVzcyA9IElJT19MRSwKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0KKyAgICAgICAgLyogc2ltaWxhciBmb3IgWSAod2l0aCBjaGFubmVsMiA9IElJT19NT0RfWSwgc2Nhbl9pbmRleCA9IDEpCisgICAgICAgICAqIGFuZCBaICh3aXRoIGNoYW5uZWwyID0gSUlPX01PRF9aLCBzY2FuX2luZGV4ID0gMikgYXhpcworICAgICAgICAgKi8KKyAgICB9CisgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgSGVyZSA8ZW1waGFzaXM+IHNjYW5faW5kZXggPC9lbXBoYXNpcz4gZGVmaW5lcyB0aGUgb3JkZXIgaW4gd2hpY2gKKyAgICB0aGUgZW5hYmxlZCBjaGFubmVscyBhcmUgcGxhY2VkIGluc2lkZSB0aGUgYnVmZmVyLiBDaGFubmVscyB3aXRoIGEgbG93ZXIKKyAgICBzY2FuX2luZGV4IHdpbGwgYmUgcGxhY2VkIGJlZm9yZSBjaGFubmVscyB3aXRoIGEgaGlnaGVyIGluZGV4LiBFYWNoCisgICAgY2hhbm5lbCBuZWVkcyB0byBoYXZlIGEgdW5pcXVlIHNjYW5faW5kZXguCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgIFNldHRpbmcgc2Nhbl9pbmRleCB0byAtMSBjYW4gYmUgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBzcGVjaWZpYworICAgIGNoYW5uZWwgZG9lcyBub3Qgc3VwcG9ydCBidWZmZXJlZCBjYXB0dXJlLiBJbiB0aGlzIGNhc2Ugbm8gZW50cmllcyB3aWxsCisgICAgYmUgY3JlYXRlZCBmb3IgdGhlIGNoYW5uZWwgaW4gdGhlIHNjYW5fZWxlbWVudHMgZGlyZWN0b3J5LgorICAgIDwvcGFyYT4KKyAgICA8L3NlY3QyPgorICA8L3NlY3QxPgorCisgIDxzZWN0MSBpZD0iaWlvdHJpZ2dlciI+IDx0aXRsZT4gSW5kdXN0cmlhbCBJL08gdHJpZ2dlcnMgIDwvdGl0bGU+CishRmluY2x1ZGUvbGludXgvaWlvL3RyaWdnZXIuaCBpaW9fdHJpZ2dlcgorIUVkcml2ZXJzL2lpby9pbmR1c3RyaWFsaW8tdHJpZ2dlci5jCisgICAgPHBhcmE+CisgICAgICBJbiBtYW55IHNpdHVhdGlvbnMgaXQgaXMgdXNlZnVsIGZvciBhIGRyaXZlciB0byBiZSBhYmxlIHRvCisgICAgICBjYXB0dXJlIGRhdGEgYmFzZWQgb24gc29tZSBleHRlcm5hbCBldmVudCAodHJpZ2dlcikgYXMgb3Bwb3NlZAorICAgICAgdG8gcGVyaW9kaWNhbGx5IHBvbGxpbmcgZm9yIGRhdGEuIEFuIElJTyB0cmlnZ2VyIGNhbiBiZSBwcm92aWRlZAorICAgICAgYnkgYSBkZXZpY2UgZHJpdmVyIHRoYXQgYWxzbyBoYXMgYW4gSUlPIGRldmljZSBiYXNlZCBvbiBoYXJkd2FyZQorICAgICAgZ2VuZXJhdGVkIGV2ZW50cyAoZS5nLiBkYXRhIHJlYWR5IG9yIHRocmVzaG9sZCBleGNlZWRlZCkgb3IKKyAgICAgIHByb3ZpZGVkIGJ5IGEgc2VwYXJhdGUgZHJpdmVyIGZyb20gYW4gaW5kZXBlbmRlbnQgaW50ZXJydXB0CisgICAgICBzb3VyY2UgKGUuZy4gR1BJTyBsaW5lIGNvbm5lY3RlZCB0byBzb21lIGV4dGVybmFsIHN5c3RlbSwgdGltZXIKKyAgICAgIGludGVycnVwdCBvciB1c2VyIHNwYWNlIHdyaXRpbmcgYSBzcGVjaWZpYyBmaWxlIGluIHN5c2ZzKS4gQQorICAgICAgdHJpZ2dlciBtYXkgaW5pdGlhdGUgZGF0YSBjYXB0dXJlIGZvciBhIG51bWJlciBvZiBzZW5zb3JzIGFuZAorICAgICAgYWxzbyBpdCBtYXkgYmUgY29tcGxldGVseSB1bnJlbGF0ZWQgdG8gdGhlIHNlbnNvciBpdHNlbGYuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3QyIGlkPSJpaW90cmlnc3lzZnMiPiA8dGl0bGU+IElJTyB0cmlnZ2VyIHN5c2ZzIGludGVyZmFjZSA8L3RpdGxlPgorICAgICAgVGhlcmUgYXJlIHR3byBsb2NhdGlvbnMgaW4gc3lzZnMgcmVsYXRlZCB0byB0cmlnZ2VyczoKKyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT48ZmlsZW5hbWU+L3N5cy9idXMvaWlvL2RldmljZXMvdHJpZ2dlclk8L2ZpbGVuYW1lPiwKKyAgICAgICAgICB0aGlzIGZpbGUgaXMgY3JlYXRlZCBvbmNlIGFuIElJTyB0cmlnZ2VyIGlzIHJlZ2lzdGVyZWQgd2l0aAorICAgICAgICAgIHRoZSBJSU8gY29yZSBhbmQgY29ycmVzcG9uZHMgdG8gdHJpZ2dlciB3aXRoIGluZGV4IFkuIEJlY2F1c2UKKyAgICAgICAgICB0cmlnZ2VycyBjYW4gYmUgdmVyeSBkaWZmZXJlbnQgZGVwZW5kaW5nIG9uIHR5cGUgdGhlcmUgYXJlIGZldworICAgICAgICAgIHN0YW5kYXJkIGF0dHJpYnV0ZXMgdGhhdCB3ZSBjYW4gZGVzY3JpYmUgaGVyZToKKyAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICA8ZW1waGFzaXM+bmFtZTwvZW1waGFzaXM+LCB0cmlnZ2VyIG5hbWUgdGhhdCBjYW4gYmUgbGF0ZXIKKyAgICAgICAgICAgICAgICB1c2VkIGZvciBhc3NvY2lhdGlvbiB3aXRoIGEgZGV2aWNlLgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxlbXBoYXNpcz5zYW1wbGluZ19mcmVxdWVuY3k8L2VtcGhhc2lzPiwgc29tZSB0aW1lciBiYXNlZAorICAgICAgICAgICAgICB0cmlnZ2VycyB1c2UgdGhpcyBhdHRyaWJ1dGUgdG8gc3BlY2lmeSB0aGUgZnJlcXVlbmN5IGZvcgorICAgICAgICAgICAgICB0cmlnZ2VyIGNhbGxzLgorICAgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxmaWxlbmFtZT4vc3lzL2J1cy9paW8vZGV2aWNlcy9paW86ZGV2aWNlWC90cmlnZ2VyLzwvZmlsZW5hbWU+LCB0aGlzCisgICAgICAgICAgZGlyZWN0b3J5IGlzIGNyZWF0ZWQgb25jZSB0aGUgZGV2aWNlIHN1cHBvcnRzIGEgdHJpZ2dlcmVkCisgICAgICAgICAgYnVmZmVyLiBXZSBjYW4gYXNzb2NpYXRlIGEgdHJpZ2dlciB3aXRoIG91ciBkZXZpY2UgYnkgd3JpdGluZworICAgICAgICAgIHRoZSB0cmlnZ2VyJ3MgbmFtZSBpbiB0aGUgPGZpbGVuYW1lPmN1cnJlbnRfdHJpZ2dlcjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3NlY3QyPgorCisgICAgPHNlY3QyIGlkPSJpaW90cmlnYXR0ciI+IDx0aXRsZT4gSUlPIHRyaWdnZXIgc2V0dXA8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICBMZXQncyBzZWUgYSBzaW1wbGUgZXhhbXBsZSBvZiBob3cgdG8gc2V0dXAgYSB0cmlnZ2VyIHRvIGJlIHVzZWQKKyAgICAgIGJ5IGEgZHJpdmVyLgorCisgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CisgICAgICBzdHJ1Y3QgaWlvX3RyaWdnZXJfb3BzIHRyaWdnZXJfb3BzID0geworICAgICAgICAgIC5zZXRfdHJpZ2dlcl9zdGF0ZSA9IHNhbXBsZV90cmlnZ2VyX3N0YXRlLAorICAgICAgICAgIC52YWxpZGF0ZV9kZXZpY2UgPSBzYW1wbGVfdmFsaWRhdGVfZGV2aWNlLAorICAgICAgfQorCisgICAgICBzdHJ1Y3QgaWlvX3RyaWdnZXIgKnRyaWc7CisKKyAgICAgIC8qIGZpcnN0LCBhbGxvY2F0ZSBtZW1vcnkgZm9yIG91ciB0cmlnZ2VyICovCisgICAgICB0cmlnID0gaWlvX3RyaWdnZXJfYWxsb2MoZGV2LCAidHJpZy0lcy0lZCIsIG5hbWUsIGlkeCk7CisKKyAgICAgIC8qIHNldHVwIHRyaWdnZXIgb3BlcmF0aW9ucyBmaWVsZCAqLworICAgICAgdHJpZy0+b3BzID0gJmFtcDt0cmlnZ2VyX29wczsKKworICAgICAgLyogbm93IHJlZ2lzdGVyIHRoZSB0cmlnZ2VyIHdpdGggdGhlIElJTyBjb3JlICovCisgICAgICBpaW9fdHJpZ2dlcl9yZWdpc3Rlcih0cmlnKTsKKyAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPC9wYXJhPgorICAgIDwvc2VjdDI+CisKKyAgICA8c2VjdDIgaWQ9Imlpb3RyaWdzZXR1cCI+IDx0aXRsZT4gSUlPIHRyaWdnZXIgb3BzPC90aXRsZT4KKyFGaW5jbHVkZS9saW51eC9paW8vdHJpZ2dlci5oIGlpb190cmlnZ2VyX29wcworICAgICA8cGFyYT4KKyAgICAgICAgTm90aWNlIHRoYXQgYSB0cmlnZ2VyIGhhcyBhIHNldCBvZiBvcGVyYXRpb25zIGF0dGFjaGVkOgorICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPGZ1bmN0aW9uPnNldF90cmlnZ2VyX3N0YXRlPC9mdW5jdGlvbj4sIHN3aXRjaCB0aGUgdHJpZ2dlciBvbi9vZmYKKyAgICAgICAgICBvbiBkZW1hbmQuCisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8ZnVuY3Rpb24+dmFsaWRhdGVfZGV2aWNlPC9mdW5jdGlvbj4sIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIHRoZQorICAgICAgICAgIGRldmljZSB3aGVuIHRoZSBjdXJyZW50IHRyaWdnZXIgZ2V0cyBjaGFuZ2VkLgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QyPgorICA8L3NlY3QxPgorICA8c2VjdDEgaWQ9Imlpb3RyaWdnZXJlZF9idWZmZXIiPgorICAgIDx0aXRsZT4gSW5kdXN0cmlhbCBJL08gdHJpZ2dlcmVkIGJ1ZmZlcnMgPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICBOb3cgdGhhdCB3ZSBrbm93IHdoYXQgYnVmZmVycyBhbmQgdHJpZ2dlcnMgYXJlIGxldCdzIHNlZSBob3cgdGhleQorICAgIHdvcmsgdG9nZXRoZXIuCisgICAgPC9wYXJhPgorICAgIDxzZWN0MiBpZD0iaWlvdHJpZ2J1ZnNldHVwIj4gPHRpdGxlPiBJSU8gdHJpZ2dlcmVkIGJ1ZmZlciBzZXR1cDwvdGl0bGU+CishRWRyaXZlcnMvaWlvL2J1ZmZlci9pbmR1c3RyaWFsaW8tdHJpZ2dlcmVkLWJ1ZmZlci5jCishRmluY2x1ZGUvbGludXgvaWlvL2lpby5oIGlpb19idWZmZXJfc2V0dXBfb3BzCisKKworICAgIDxwYXJhPgorICAgIEEgdHlwaWNhbCB0cmlnZ2VyZWQgYnVmZmVyIHNldHVwIGxvb2tzIGxpa2UgdGhpczoKKyAgICA8cHJvZ3JhbWxpc3Rpbmc+CisgICAgY29uc3Qgc3RydWN0IGlpb19idWZmZXJfc2V0dXBfb3BzIHNlbnNvcl9idWZmZXJfc2V0dXBfb3BzID0geworICAgICAgLnByZWVuYWJsZSAgICA9IHNlbnNvcl9idWZmZXJfcHJlZW5hYmxlLAorICAgICAgLnBvc3RlbmFibGUgICA9IHNlbnNvcl9idWZmZXJfcG9zdGVuYWJsZSwKKyAgICAgIC5wb3N0ZGlzYWJsZSAgPSBzZW5zb3JfYnVmZmVyX3Bvc3RkaXNhYmxlLAorICAgICAgLnByZWRpc2FibGUgICA9IHNlbnNvcl9idWZmZXJfcHJlZGlzYWJsZSwKKyAgICB9OworCisgICAgaXJxcmV0dXJuX3Qgc2Vuc29yX2lpb19wb2xsZnVuYyhpbnQgaXJxLCB2b2lkICpwKQorICAgIHsKKyAgICAgICAgcGYtPnRpbWVzdGFtcCA9IGlpb19nZXRfdGltZV9ucygpOworICAgICAgICByZXR1cm4gSVJRX1dBS0VfVEhSRUFEOworICAgIH0KKworICAgIGlycXJldHVybl90IHNlbnNvcl90cmlnZ2VyX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqcCkKKyAgICB7CisgICAgICAgIHUxNiBidWZbOF07CisgICAgICAgIGludCBpID0gMDsKKworICAgICAgICAvKiByZWFkIGRhdGEgZm9yIGVhY2ggYWN0aXZlIGNoYW5uZWwgKi8KKyAgICAgICAgZm9yX2VhY2hfc2V0X2JpdChiaXQsIGFjdGl2ZV9zY2FuX21hc2ssIG1hc2tsZW5ndGgpCisgICAgICAgICAgICBidWZbaSsrXSA9IHNlbnNvcl9nZXRfZGF0YShiaXQpCisKKyAgICAgICAgaWlvX3B1c2hfdG9fYnVmZmVyc193aXRoX3RpbWVzdGFtcChpbmRpb19kZXYsIGJ1ZiwgdGltZXN0YW1wKTsKKworICAgICAgICBpaW9fdHJpZ2dlcl9ub3RpZnlfZG9uZSh0cmlnZ2VyKTsKKyAgICAgICAgcmV0dXJuIElSUV9IQU5ETEVEOworICAgIH0KKworICAgIC8qIHNldHVwIHRyaWdnZXJlZCBidWZmZXIsIHVzdWFsbHkgaW4gcHJvYmUgZnVuY3Rpb24gKi8KKyAgICBpaW9fdHJpZ2dlcmVkX2J1ZmZlcl9zZXR1cChpbmRpb19kZXYsIHNlbnNvcl9paW9fcG9sZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zb3JfdHJpZ2dlcl9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNvcl9idWZmZXJfc2V0dXBfb3BzKTsKKyAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgIDwvcGFyYT4KKyAgICBUaGUgaW1wb3J0YW50IHRoaW5ncyB0byBub3RpY2UgaGVyZSBhcmU6CisgICAgPGl0ZW1pemVkbGlzdD4KKyAgICA8bGlzdGl0ZW0+PGZ1bmN0aW9uPiBpaW9fYnVmZmVyX3NldHVwX29wczwvZnVuY3Rpb24+LCB0aGUgYnVmZmVyIHNldHVwCisgICAgZnVuY3Rpb25zIHRvIGJlIGNhbGxlZCBhdCBwcmVkZWZpbmVkIHBvaW50cyBpbiB0aGUgYnVmZmVyIGNvbmZpZ3VyYXRpb24KKyAgICBzZXF1ZW5jZSAoZS5nLiBiZWZvcmUgZW5hYmxlLCBhZnRlciBkaXNhYmxlKS4gSWYgbm90IHNwZWNpZmllZCwgdGhlCisgICAgSUlPIGNvcmUgdXNlcyB0aGUgZGVmYXVsdCA8dHlwZT5paW9fdHJpZ2dlcmVkX2J1ZmZlcl9zZXR1cF9vcHM8L3R5cGU+LgorICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPjxmdW5jdGlvbj5zZW5zb3JfaWlvX3BvbGxmdW5jPC9mdW5jdGlvbj4sIHRoZSBmdW5jdGlvbiB0aGF0CisgICAgd2lsbCBiZSB1c2VkIGFzIHRvcCBoYWxmIG9mIHBvbGwgZnVuY3Rpb24uIEl0IHNob3VsZCBkbyBhcyBsaXR0bGUKKyAgICBwcm9jZXNzaW5nIGFzIHBvc3NpYmxlLCBiZWNhdXNlIGl0IHJ1bnMgaW4gaW50ZXJydXB0IGNvbnRleHQuIFRoZSBtb3N0CisgICAgY29tbW9uIG9wZXJhdGlvbiBpcyByZWNvcmRpbmcgb2YgdGhlIGN1cnJlbnQgdGltZXN0YW1wIGFuZCBmb3IgdGhpcyByZWFzb24KKyAgICBvbmUgY2FuIHVzZSB0aGUgSUlPIGNvcmUgZGVmaW5lZCA8ZnVuY3Rpb24+aWlvX3BvbGxmdW5jX3N0b3JlX3RpbWUKKyAgICA8L2Z1bmN0aW9uPiBmdW5jdGlvbi4KKyAgICA8L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT48ZnVuY3Rpb24+c2Vuc29yX3RyaWdnZXJfaGFuZGxlcjwvZnVuY3Rpb24+LCB0aGUgZnVuY3Rpb24gdGhhdAorICAgIHdpbGwgYmUgdXNlZCBhcyBib3R0b20gaGFsZiBvZiB0aGUgcG9sbCBmdW5jdGlvbi4gVGhpcyBydW5zIGluIHRoZQorICAgIGNvbnRleHQgb2YgYSBrZXJuZWwgdGhyZWFkIGFuZCBhbGwgdGhlIHByb2Nlc3NpbmcgdGFrZXMgcGxhY2UgaGVyZS4KKyAgICBJdCB1c3VhbGx5IHJlYWRzIGRhdGEgZnJvbSB0aGUgZGV2aWNlIGFuZCBzdG9yZXMgaXQgaW4gdGhlIGludGVybmFsCisgICAgYnVmZmVyIHRvZ2V0aGVyIHdpdGggdGhlIHRpbWVzdGFtcCByZWNvcmRlZCBpbiB0aGUgdG9wIGhhbGYuCisgICAgPC9saXN0aXRlbT4KKyAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICA8L3NlY3QyPgorICA8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisgIDxjaGFwdGVyIGlkPSdpaW9yZXNvdXJjZXMnPgorICAgIDx0aXRsZT4gUmVzb3VyY2VzIDwvdGl0bGU+CisgICAgICBJSU8gY29yZSBtYXkgY2hhbmdlIGR1cmluZyB0aW1lIHNvIHRoZSBiZXN0IGRvY3VtZW50YXRpb24gdG8gcmVhZCBpcyB0aGUKKyAgICAgIHNvdXJjZSBjb2RlLiBUaGVyZSBhcmUgc2V2ZXJhbCBsb2NhdGlvbnMgd2hlcmUgeW91IHNob3VsZCBsb29rOgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxmaWxlbmFtZT5kcml2ZXJzL2lpby88L2ZpbGVuYW1lPiwgY29udGFpbnMgdGhlIElJTyBjb3JlIHBsdXMKKyAgICAgICAgICBhbmQgZGlyZWN0b3JpZXMgZm9yIGVhY2ggc2Vuc29yIHR5cGUgKGUuZy4gYWNjZWwsIG1hZ25ldG9tZXRlciwKKyAgICAgICAgICBldGMuKQorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPGZpbGVuYW1lPmluY2x1ZGUvbGludXgvaWlvLzwvZmlsZW5hbWU+LCBjb250YWlucyB0aGUgaGVhZGVyCisgICAgICAgICAgZmlsZXMsIG5pY2UgdG8gcmVhZCBmb3IgdGhlIGludGVybmFsIGtlcm5lbCBpbnRlcmZhY2VzLgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxmaWxlbmFtZT5pbmNsdWRlL3VhcGkvbGludXgvaWlvLzwvZmlsZW5hbWU+LCBjb250YWlucyBmaWxlcyB0byBiZQorICAgICAgICAgIHVzZWQgYnkgdXNlciBzcGFjZSBhcHBsaWNhdGlvbnMuCisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxmaWxlbmFtZT50b29scy9paW8vPC9maWxlbmFtZT4sIGNvbnRhaW5zIHRvb2xzIGZvciByYXBpZGx5CisgICAgICAgICAgdGVzdGluZyBidWZmZXJzLCBldmVudHMgYW5kIGRldmljZSBjcmVhdGlvbi4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxmaWxlbmFtZT5kcml2ZXJzL3N0YWdpbmcvaWlvLzwvZmlsZW5hbWU+LCBjb250YWlucyBjb2RlIGZvciBzb21lCisgICAgICAgICAgZHJpdmVycyBvciBleHBlcmltZW50YWwgZmVhdHVyZXMgdGhhdCBhcmUgbm90IHlldCBtYXR1cmUgZW5vdWdoCisgICAgICAgICAgdG8gYmUgbW92ZWQgb3V0LgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPHBhcmE+CisgICAgQmVzaWRlcyB0aGUgY29kZSwgdGhlcmUgYXJlIHNvbWUgZ29vZCBvbmxpbmUgZG9jdW1lbnRhdGlvbiBzb3VyY2VzOgorICAgIDxpdGVtaXplZGxpc3Q+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHVsaW5rIHVybD0iaHR0cDovL21hcmMuaW5mby8/bD1saW51eC1paW8iPiBJbmR1c3RyaWFsIEkvTyBtYWlsaW5nCisgICAgICBsaXN0IDwvdWxpbms+CisgICAgPC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+CisgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd2lraS5hbmFsb2cuY29tL3NvZnR3YXJlL2xpbnV4L2RvY3MvaWlvL2lpbyI+CisgICAgICBBbmFsb2cgRGV2aWNlIElJTyB3aWtpIHBhZ2UgPC91bGluaz4KKyAgICA8L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgIDx1bGluayB1cmw9Imh0dHBzOi8vZm9zZGVtLm9yZy8yMDE1L3NjaGVkdWxlL2V2ZW50L2lpb3Nkci8iPgorICAgICAgVXNpbmcgdGhlIExpbnV4IElJTyBmcmFtZXdvcmsgZm9yIFNEUiwgTGFycy1QZXRlciBDbGF1c2VuJ3MKKyAgICAgIHByZXNlbnRhdGlvbiBhdCBGT1NERU0gPC91bGluaz4KKyAgICA8L2xpc3RpdGVtPgorICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorPC9ib29rPgorCis8IS0tCit2aW06IHNvZnR0YWJzdG9wPTI6c2hpZnR3aWR0aD0yOmV4cGFuZHRhYjp0ZXh0d2lkdGg9NzIKKy0tPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2tlcm5lbC1hcGkudG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9rZXJuZWwtYXBpLnRtcGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNmZDBlYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9rZXJuZWwtYXBpLnRtcGwKQEAgLTAsMCArMSwzMzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMS4yLy9FTiIKKwkiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQiIFtdPgorCis8Ym9vayBpZD0iTGludXhLZXJuZWxBUEkiPgorIDxib29raW5mbz4KKyAgPHRpdGxlPlRoZSBMaW51eCBLZXJuZWwgQVBJPC90aXRsZT4KKyAgCisgIDxsZWdhbG5vdGljZT4KKyAgIDxwYXJhPgorICAgICBUaGlzIGRvY3VtZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUKKyAgICAgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlcgorICAgICB2ZXJzaW9uLgorICAgPC9wYXJhPgorICAgICAgCisgICA8cGFyYT4KKyAgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorICAgICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkCisgICAgIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKyAgICAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICAgPC9wYXJhPgorICAgICAgCisgICA8cGFyYT4KKyAgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKyAgICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAgICAgTUEgMDIxMTEtMTMwNyBVU0EKKyAgIDwvcGFyYT4KKyAgICAgIAorICAgPHBhcmE+CisgICAgIEZvciBtb3JlIGRldGFpbHMgc2VlIHRoZSBmaWxlIENPUFlJTkcgaW4gdGhlIHNvdXJjZQorICAgICBkaXN0cmlidXRpb24gb2YgTGludXguCisgICA8L3BhcmE+CisgIDwvbGVnYWxub3RpY2U+CisgPC9ib29raW5mbz4KKworPHRvYz48L3RvYz4KKworICA8Y2hhcHRlciBpZD0iYWR0Ij4KKyAgICAgPHRpdGxlPkRhdGEgVHlwZXM8L3RpdGxlPgorICAgICA8c2VjdDE+PHRpdGxlPkRvdWJseSBMaW5rZWQgTGlzdHM8L3RpdGxlPgorIUlpbmNsdWRlL2xpbnV4L2xpc3QuaAorICAgICA8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImxpYmMiPgorICAgICA8dGl0bGU+QmFzaWMgQyBMaWJyYXJ5IEZ1bmN0aW9uczwvdGl0bGU+CisKKyAgICAgPHBhcmE+CisgICAgICAgV2hlbiB3cml0aW5nIGRyaXZlcnMsIHlvdSBjYW5ub3QgaW4gZ2VuZXJhbCB1c2Ugcm91dGluZXMgd2hpY2ggYXJlCisgICAgICAgZnJvbSB0aGUgQyBMaWJyYXJ5LiAgU29tZSBvZiB0aGUgZnVuY3Rpb25zIGhhdmUgYmVlbiBmb3VuZCBnZW5lcmFsbHkKKyAgICAgICB1c2VmdWwgYW5kIHRoZXkgYXJlIGxpc3RlZCBiZWxvdy4gIFRoZSBiZWhhdmlvdXIgb2YgdGhlc2UgZnVuY3Rpb25zCisgICAgICAgbWF5IHZhcnkgc2xpZ2h0bHkgZnJvbSB0aG9zZSBkZWZpbmVkIGJ5IEFOU0ksIGFuZCB0aGVzZSBkZXZpYXRpb25zCisgICAgICAgYXJlIG5vdGVkIGluIHRoZSB0ZXh0LgorICAgICA8L3BhcmE+CisKKyAgICAgPHNlY3QxPjx0aXRsZT5TdHJpbmcgQ29udmVyc2lvbnM8L3RpdGxlPgorIUVsaWIvdnNwcmludGYuYworIUZpbmNsdWRlL2xpbnV4L2tlcm5lbC5oIGtzdHJ0b2wKKyFGaW5jbHVkZS9saW51eC9rZXJuZWwuaCBrc3RydG91bAorIUVsaWIva3N0cnRveC5jCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MT48dGl0bGU+U3RyaW5nIE1hbmlwdWxhdGlvbjwvdGl0bGU+Cis8IS0tIEFsbCBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGF0IG5vdworWCFJbGliL3N0cmluZy5jCisgLS0+CishRWxpYi9zdHJpbmcuYworICAgICA8L3NlY3QxPgorICAgICA8c2VjdDE+PHRpdGxlPkJpdCBPcGVyYXRpb25zPC90aXRsZT4KKyFJYXJjaC94ODYvaW5jbHVkZS9hc20vYml0b3BzLmgKKyAgICAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJrZXJuZWwtbGliIj4KKyAgICAgPHRpdGxlPkJhc2ljIEtlcm5lbCBMaWJyYXJ5IEZ1bmN0aW9uczwvdGl0bGU+CisKKyAgICAgPHBhcmE+CisgICAgICAgVGhlIExpbnV4IGtlcm5lbCBwcm92aWRlcyBtb3JlIGJhc2ljIHV0aWxpdHkgZnVuY3Rpb25zLgorICAgICA8L3BhcmE+CisKKyAgICAgPHNlY3QxPjx0aXRsZT5CaXRtYXAgT3BlcmF0aW9uczwvdGl0bGU+CishRWxpYi9iaXRtYXAuYworIUlsaWIvYml0bWFwLmMKKyAgICAgPC9zZWN0MT4KKworICAgICA8c2VjdDE+PHRpdGxlPkNvbW1hbmQtbGluZSBQYXJzaW5nPC90aXRsZT4KKyFFbGliL2NtZGxpbmUuYworICAgICA8L3NlY3QxPgorCisgICAgIDxzZWN0MSBpZD0iY3JjIj48dGl0bGU+Q1JDIEZ1bmN0aW9uczwvdGl0bGU+CishRWxpYi9jcmM3LmMKKyFFbGliL2NyYzE2LmMKKyFFbGliL2NyYy1pdHUtdC5jCishRWxpYi9jcmMzMi5jCishRWxpYi9jcmMtY2NpdHQuYworICAgICA8L3NlY3QxPgorCisgICAgIDxzZWN0MSBpZD0iaWRyIj48dGl0bGU+aWRyL2lkYSBGdW5jdGlvbnM8L3RpdGxlPgorIVBpbmNsdWRlL2xpbnV4L2lkci5oIGlkciBzeW5jCishUGxpYi9pZHIuYyBJREEgZGVzY3JpcHRpb24KKyFFbGliL2lkci5jCisgICAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0ibW0iPgorICAgICA8dGl0bGU+TWVtb3J5IE1hbmFnZW1lbnQgaW4gTGludXg8L3RpdGxlPgorICAgICA8c2VjdDE+PHRpdGxlPlRoZSBTbGFiIENhY2hlPC90aXRsZT4KKyFJaW5jbHVkZS9saW51eC9zbGFiLmgKKyFFbW0vc2xhYi5jCishRW1tL3V0aWwuYworICAgICA8L3NlY3QxPgorICAgICA8c2VjdDE+PHRpdGxlPlVzZXIgU3BhY2UgTWVtb3J5IEFjY2VzczwvdGl0bGU+CishSWFyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3NfMzIuaAorIUVhcmNoL3g4Ni9saWIvdXNlcmNvcHlfMzIuYworICAgICA8L3NlY3QxPgorICAgICA8c2VjdDE+PHRpdGxlPk1vcmUgTWVtb3J5IE1hbmFnZW1lbnQgRnVuY3Rpb25zPC90aXRsZT4KKyFFbW0vcmVhZGFoZWFkLmMKKyFFbW0vZmlsZW1hcC5jCishRW1tL21lbW9yeS5jCishRW1tL3ZtYWxsb2MuYworIUltbS9wYWdlX2FsbG9jLmMKKyFFbW0vbWVtcG9vbC5jCishRW1tL2RtYXBvb2wuYworIUVtbS9wYWdlLXdyaXRlYmFjay5jCishRW1tL3RydW5jYXRlLmMKKyAgICAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorCisKKyAgPGNoYXB0ZXIgaWQ9ImlwYyI+CisgICAgIDx0aXRsZT5LZXJuZWwgSVBDIGZhY2lsaXRpZXM8L3RpdGxlPgorCisgICAgIDxzZWN0MT48dGl0bGU+SVBDIHV0aWxpdGllczwvdGl0bGU+CishSWlwYy91dGlsLmMKKyAgICAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJrZmlmbyI+CisgICAgIDx0aXRsZT5GSUZPIEJ1ZmZlcjwvdGl0bGU+CisgICAgIDxzZWN0MT48dGl0bGU+a2ZpZm8gaW50ZXJmYWNlPC90aXRsZT4KKyFJaW5jbHVkZS9saW51eC9rZmlmby5oCisgICAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0icmVsYXlmcyI+CisgICAgIDx0aXRsZT5yZWxheSBpbnRlcmZhY2Ugc3VwcG9ydDwvdGl0bGU+CisKKyAgICAgPHBhcmE+CisJUmVsYXkgaW50ZXJmYWNlIHN1cHBvcnQKKwlpcyBkZXNpZ25lZCB0byBwcm92aWRlIGFuIGVmZmljaWVudCBtZWNoYW5pc20gZm9yIHRvb2xzIGFuZAorCWZhY2lsaXRpZXMgdG8gcmVsYXkgbGFyZ2UgYW1vdW50cyBvZiBkYXRhIGZyb20ga2VybmVsIHNwYWNlIHRvCisJdXNlciBzcGFjZS4KKyAgICAgPC9wYXJhPgorCisgICAgIDxzZWN0MT48dGl0bGU+cmVsYXkgaW50ZXJmYWNlPC90aXRsZT4KKyFFa2VybmVsL3JlbGF5LmMKKyFJa2VybmVsL3JlbGF5LmMKKyAgICAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJtb2Rsb2FkIj4KKyAgICAgPHRpdGxlPk1vZHVsZSBTdXBwb3J0PC90aXRsZT4KKyAgICAgPHNlY3QxPjx0aXRsZT5Nb2R1bGUgTG9hZGluZzwvdGl0bGU+CishRWtlcm5lbC9rbW9kLmMKKyAgICAgPC9zZWN0MT4KKyAgICAgPHNlY3QxPjx0aXRsZT5JbnRlciBNb2R1bGUgc3VwcG9ydDwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICBSZWZlciB0byB0aGUgZmlsZSBrZXJuZWwvbW9kdWxlLmMgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgIDwvcGFyYT4KKzwhLS0gRklYTUU6IFJlbW92ZWQgZm9yIG5vdyBzaW5jZSBubyBzdHJ1Y3R1cmVkIGNvbW1lbnRzIGluIHNvdXJjZQorWCFFa2VybmVsL21vZHVsZS5jCistLT4KKyAgICAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJoYXJkd2FyZSI+CisgICAgIDx0aXRsZT5IYXJkd2FyZSBJbnRlcmZhY2VzPC90aXRsZT4KKyAgICAgPHNlY3QxPjx0aXRsZT5JbnRlcnJ1cHQgSGFuZGxpbmc8L3RpdGxlPgorIUVrZXJuZWwvaXJxL21hbmFnZS5jCisgICAgIDwvc2VjdDE+CisKKyAgICAgPHNlY3QxPjx0aXRsZT5ETUEgQ2hhbm5lbHM8L3RpdGxlPgorIUVrZXJuZWwvZG1hLmMKKyAgICAgPC9zZWN0MT4KKworICAgICA8c2VjdDE+PHRpdGxlPlJlc291cmNlcyBNYW5hZ2VtZW50PC90aXRsZT4KKyFJa2VybmVsL3Jlc291cmNlLmMKKyFFa2VybmVsL3Jlc291cmNlLmMKKyAgICAgPC9zZWN0MT4KKworICAgICA8c2VjdDE+PHRpdGxlPk1UUlIgSGFuZGxpbmc8L3RpdGxlPgorIUVhcmNoL3g4Ni9rZXJuZWwvY3B1L210cnIvbWFpbi5jCisgICAgIDwvc2VjdDE+CisKKyAgICAgPHNlY3QxPjx0aXRsZT5QQ0kgU3VwcG9ydCBMaWJyYXJ5PC90aXRsZT4KKyFFZHJpdmVycy9wY2kvcGNpLmMKKyFFZHJpdmVycy9wY2kvcGNpLWRyaXZlci5jCishRWRyaXZlcnMvcGNpL3JlbW92ZS5jCishRWRyaXZlcnMvcGNpL3NlYXJjaC5jCishRWRyaXZlcnMvcGNpL21zaS5jCishRWRyaXZlcnMvcGNpL2J1cy5jCishRWRyaXZlcnMvcGNpL2FjY2Vzcy5jCishRWRyaXZlcnMvcGNpL2lycS5jCishRWRyaXZlcnMvcGNpL2h0aXJxLmMKKzwhLS0gRklYTUU6IFJlbW92ZWQgZm9yIG5vdyBzaW5jZSBubyBzdHJ1Y3R1cmVkIGNvbW1lbnRzIGluIHNvdXJjZQorWCFFZHJpdmVycy9wY2kvaG90cGx1Zy5jCistLT4KKyFFZHJpdmVycy9wY2kvcHJvYmUuYworIUVkcml2ZXJzL3BjaS9zbG90LmMKKyFFZHJpdmVycy9wY2kvcm9tLmMKKyFFZHJpdmVycy9wY2kvaW92LmMKKyFJZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMKKyAgICAgPC9zZWN0MT4KKyAgICAgPHNlY3QxPjx0aXRsZT5QQ0kgSG90cGx1ZyBTdXBwb3J0IExpYnJhcnk8L3RpdGxlPgorIUVkcml2ZXJzL3BjaS9ob3RwbHVnL3BjaV9ob3RwbHVnX2NvcmUuYworICAgICA8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImZpcm13YXJlIj4KKyAgICAgPHRpdGxlPkZpcm13YXJlIEludGVyZmFjZXM8L3RpdGxlPgorICAgICA8c2VjdDE+PHRpdGxlPkRNSSBJbnRlcmZhY2VzPC90aXRsZT4KKyFFZHJpdmVycy9maXJtd2FyZS9kbWlfc2Nhbi5jCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MT48dGl0bGU+RUREIEludGVyZmFjZXM8L3RpdGxlPgorIUlkcml2ZXJzL2Zpcm13YXJlL2VkZC5jCisgICAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0ic2VjdXJpdHkiPgorICAgICA8dGl0bGU+U2VjdXJpdHkgRnJhbWV3b3JrPC90aXRsZT4KKyFJc2VjdXJpdHkvc2VjdXJpdHkuYworIUVzZWN1cml0eS9pbm9kZS5jCisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iYXVkaXQiPgorICAgICA8dGl0bGU+QXVkaXQgSW50ZXJmYWNlczwvdGl0bGU+CishRWtlcm5lbC9hdWRpdC5jCishSWtlcm5lbC9hdWRpdHNjLmMKKyFJa2VybmVsL2F1ZGl0ZmlsdGVyLmMKKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJhY2NvdW50aW5nIj4KKyAgICAgPHRpdGxlPkFjY291bnRpbmcgRnJhbWV3b3JrPC90aXRsZT4KKyFJa2VybmVsL2FjY3QuYworICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImJsa2RldiI+CisgICAgIDx0aXRsZT5CbG9jayBEZXZpY2VzPC90aXRsZT4KKyFFYmxvY2svYmxrLWNvcmUuYworIUlibG9jay9ibGstY29yZS5jCishRWJsb2NrL2Jsay1tYXAuYworIUlibG9jay9ibGstc3lzZnMuYworIUVibG9jay9ibGstc2V0dGluZ3MuYworIUVibG9jay9ibGstZXhlYy5jCishRWJsb2NrL2Jsay1mbHVzaC5jCishRWJsb2NrL2Jsay1saWIuYworIUVibG9jay9ibGstdGFnLmMKKyFJYmxvY2svYmxrLXRhZy5jCishRWJsb2NrL2Jsay1pbnRlZ3JpdHkuYworIUlrZXJuZWwvdHJhY2UvYmxrdHJhY2UuYworIUlibG9jay9nZW5oZC5jCishRWJsb2NrL2dlbmhkLmMKKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJjaHJkZXYiPgorCTx0aXRsZT5DaGFyIGRldmljZXM8L3RpdGxlPgorIUVmcy9jaGFyX2Rldi5jCisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0ibWlzY2RldiI+CisgICAgIDx0aXRsZT5NaXNjZWxsYW5lb3VzIERldmljZXM8L3RpdGxlPgorIUVkcml2ZXJzL2NoYXIvbWlzYy5jCisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iY2xrIj4KKyAgICAgPHRpdGxlPkNsb2NrIEZyYW1ld29yazwvdGl0bGU+CisKKyAgICAgPHBhcmE+CisJVGhlIGNsb2NrIGZyYW1ld29yayBkZWZpbmVzIHByb2dyYW1taW5nIGludGVyZmFjZXMgdG8gc3VwcG9ydAorCXNvZnR3YXJlIG1hbmFnZW1lbnQgb2YgdGhlIHN5c3RlbSBjbG9jayB0cmVlLgorCVRoaXMgZnJhbWV3b3JrIGlzIHdpZGVseSB1c2VkIHdpdGggU3lzdGVtLU9uLUNoaXAgKFNPQykgcGxhdGZvcm1zCisJdG8gc3VwcG9ydCBwb3dlciBtYW5hZ2VtZW50IGFuZCB2YXJpb3VzIGRldmljZXMgd2hpY2ggbWF5IG5lZWQKKwljdXN0b20gY2xvY2sgcmF0ZXMuCisJTm90ZSB0aGF0IHRoZXNlICJjbG9ja3MiIGRvbid0IHJlbGF0ZSB0byB0aW1la2VlcGluZyBvciByZWFsCisJdGltZSBjbG9ja3MgKFJUQ3MpLCBlYWNoIG9mIHdoaWNoIGhhdmUgc2VwYXJhdGUgZnJhbWV3b3Jrcy4KKwlUaGVzZSA8c3RydWN0bmFtZT5zdHJ1Y3QgY2xrPC9zdHJ1Y3RuYW1lPiBpbnN0YW5jZXMgbWF5IGJlIHVzZWQKKwl0byBtYW5hZ2UgZm9yIGV4YW1wbGUgYSA5NiBNSHogc2lnbmFsIHRoYXQgaXMgdXNlZCB0byBzaGlmdCBiaXRzCisJaW50byBhbmQgb3V0IG9mIHBlcmlwaGVyYWxzIG9yIGJ1c3Nlcywgb3Igb3RoZXJ3aXNlIHRyaWdnZXIKKwlzeW5jaHJvbm91cyBzdGF0ZSBtYWNoaW5lIHRyYW5zaXRpb25zIGluIHN5c3RlbSBoYXJkd2FyZS4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorCVBvd2VyIG1hbmFnZW1lbnQgaXMgc3VwcG9ydGVkIGJ5IGV4cGxpY2l0IHNvZnR3YXJlIGNsb2NrIGdhdGluZzoKKwl1bnVzZWQgY2xvY2tzIGFyZSBkaXNhYmxlZCwgc28gdGhlIHN5c3RlbSBkb2Vzbid0IHdhc3RlIHBvd2VyCisJY2hhbmdpbmcgdGhlIHN0YXRlIG9mIHRyYW5zaXN0b3JzIHRoYXQgYXJlbid0IGluIGFjdGl2ZSB1c2UuCisJT24gc29tZSBzeXN0ZW1zIHRoaXMgbWF5IGJlIGJhY2tlZCBieSBoYXJkd2FyZSBjbG9jayBnYXRpbmcsCisJd2hlcmUgY2xvY2tzIGFyZSBnYXRlZCB3aXRob3V0IGJlaW5nIGRpc2FibGVkIGluIHNvZnR3YXJlLgorCVNlY3Rpb25zIG9mIGNoaXBzIHRoYXQgYXJlIHBvd2VyZWQgYnV0IG5vdCBjbG9ja2VkIG1heSBiZSBhYmxlCisJdG8gcmV0YWluIHRoZWlyIGxhc3Qgc3RhdGUuCisJVGhpcyBsb3cgcG93ZXIgc3RhdGUgaXMgb2Z0ZW4gY2FsbGVkIGEgPGVtcGhhc2lzPnJldGVudGlvbgorCW1vZGU8L2VtcGhhc2lzPi4KKwlUaGlzIG1vZGUgc3RpbGwgaW5jdXJzIGxlYWthZ2UgY3VycmVudHMsIGVzcGVjaWFsbHkgd2l0aCBmaW5lcgorCWNpcmN1aXQgZ2VvbWV0cmllcywgYnV0IGZvciBDTU9TIGNpcmN1aXRzIHBvd2VyIGlzIG1vc3RseSB1c2VkCisJYnkgY2xvY2tlZCBzdGF0ZSBjaGFuZ2VzLgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisJUG93ZXItYXdhcmUgZHJpdmVycyBvbmx5IGVuYWJsZSB0aGVpciBjbG9ja3Mgd2hlbiB0aGUgZGV2aWNlCisJdGhleSBtYW5hZ2UgaXMgaW4gYWN0aXZlIHVzZS4gIEFsc28sIHN5c3RlbSBzbGVlcCBzdGF0ZXMgb2Z0ZW4KKwlkaWZmZXIgYWNjb3JkaW5nIHRvIHdoaWNoIGNsb2NrIGRvbWFpbnMgYXJlIGFjdGl2ZTogIHdoaWxlIGEKKwkic3RhbmRieSIgc3RhdGUgbWF5IGFsbG93IHdha2V1cCBmcm9tIHNldmVyYWwgYWN0aXZlIGRvbWFpbnMsIGEKKwkibWVtIiAoc3VzcGVuZC10by1SQU0pIHN0YXRlIG1heSByZXF1aXJlIGEgbW9yZSB3aG9sZXNhbGUgc2h1dGRvd24KKwlvZiBjbG9ja3MgZGVyaXZlZCBmcm9tIGhpZ2hlciBzcGVlZCBQTExzIGFuZCBvc2NpbGxhdG9ycywgbGltaXRpbmcKKwl0aGUgbnVtYmVyIG9mIHBvc3NpYmxlIHdha2V1cCBldmVudCBzb3VyY2VzLiAgQSBkcml2ZXIncyBzdXNwZW5kCisJbWV0aG9kIG1heSBuZWVkIHRvIGJlIGF3YXJlIG9mIHN5c3RlbS1zcGVjaWZpYyBjbG9jayBjb25zdHJhaW50cworCW9uIHRoZSB0YXJnZXQgc2xlZXAgc3RhdGUuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgICAgU29tZSBwbGF0Zm9ybXMgc3VwcG9ydCBwcm9ncmFtbWFibGUgY2xvY2sgZ2VuZXJhdG9ycy4gIFRoZXNlCisJY2FuIGJlIHVzZWQgYnkgZXh0ZXJuYWwgY2hpcHMgb2YgdmFyaW91cyBraW5kcywgc3VjaCBhcyBvdGhlcgorCUNQVXMsIG11bHRpbWVkaWEgY29kZWNzLCBhbmQgZGV2aWNlcyB3aXRoIHN0cmljdCByZXF1aXJlbWVudHMKKwlmb3IgaW50ZXJmYWNlIGNsb2NraW5nLgorICAgICA8L3BhcmE+CisKKyFJaW5jbHVkZS9saW51eC9jbGsuaAorICA8L2NoYXB0ZXI+CisKKzwvYm9vaz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9rZXJuZWwtaGFja2luZy50bXBsIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2tlcm5lbC1oYWNraW5nLnRtcGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg5YjQwYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9rZXJuZWwtaGFja2luZy50bXBsCkBAIC0wLDAgKzEsMTMxMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4xLjIvL0VOIgorCSJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMS4yL2RvY2Jvb2t4LmR0ZCIgW10+CisKKzxib29rIGlkPSJsay1oYWNraW5nLWd1aWRlIj4KKyA8Ym9va2luZm8+CisgIDx0aXRsZT5VbnJlbGlhYmxlIEd1aWRlIFRvIEhhY2tpbmcgVGhlIExpbnV4IEtlcm5lbDwvdGl0bGU+CisgIAorICA8YXV0aG9yZ3JvdXA+CisgICA8YXV0aG9yPgorICAgIDxmaXJzdG5hbWU+UnVzdHk8L2ZpcnN0bmFtZT4KKyAgICA8c3VybmFtZT5SdXNzZWxsPC9zdXJuYW1lPgorICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgPGFkZHJlc3M+CisgICAgICA8ZW1haWw+cnVzdHlAcnVzdGNvcnAuY29tLmF1PC9lbWFpbD4KKyAgICAgPC9hZGRyZXNzPgorICAgIDwvYWZmaWxpYXRpb24+CisgICA8L2F1dGhvcj4KKyAgPC9hdXRob3Jncm91cD4KKworICA8Y29weXJpZ2h0PgorICAgPHllYXI+MjAwNTwveWVhcj4KKyAgIDxob2xkZXI+UnVzdHkgUnVzc2VsbDwvaG9sZGVyPgorICA8L2NvcHlyaWdodD4KKworICA8bGVnYWxub3RpY2U+CisgICA8cGFyYT4KKyAgICBUaGlzIGRvY3VtZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUKKyAgICBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlcgorICAgIHZlcnNpb24uCisgICA8L3BhcmE+CisgICAKKyAgIDxwYXJhPgorICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKyAgICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkCisgICAgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorICAgIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAgIDwvcGFyYT4KKyAgIAorICAgPHBhcmE+CisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorICAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgICAgTUEgMDIxMTEtMTMwNyBVU0EKKyAgIDwvcGFyYT4KKyAgIAorICAgPHBhcmE+CisgICAgRm9yIG1vcmUgZGV0YWlscyBzZWUgdGhlIGZpbGUgQ09QWUlORyBpbiB0aGUgc291cmNlCisgICAgZGlzdHJpYnV0aW9uIG9mIExpbnV4LgorICAgPC9wYXJhPgorICA8L2xlZ2Fsbm90aWNlPgorCisgIDxyZWxlYXNlaW5mbz4KKyAgIFRoaXMgaXMgdGhlIGZpcnN0IHJlbGVhc2Ugb2YgdGhpcyBkb2N1bWVudCBhcyBwYXJ0IG9mIHRoZSBrZXJuZWwgdGFyYmFsbC4KKyAgPC9yZWxlYXNlaW5mbz4KKworIDwvYm9va2luZm8+CisKKyA8dG9jPjwvdG9jPgorCisgPGNoYXB0ZXIgaWQ9ImludHJvZHVjdGlvbiI+CisgIDx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorICA8cGFyYT4KKyAgIFdlbGNvbWUsIGdlbnRsZSByZWFkZXIsIHRvIFJ1c3R5J3MgUmVtYXJrYWJseSBVbnJlbGlhYmxlIEd1aWRlIHRvIExpbnV4CisgICBLZXJuZWwgSGFja2luZy4gIFRoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBjb21tb24gcm91dGluZXMgYW5kCisgICBnZW5lcmFsIHJlcXVpcmVtZW50cyBmb3Iga2VybmVsIGNvZGU6IGl0cyBnb2FsIGlzIHRvIHNlcnZlIGFzIGEKKyAgIHByaW1lciBmb3IgTGludXgga2VybmVsIGRldmVsb3BtZW50IGZvciBleHBlcmllbmNlZCBDCisgICBwcm9ncmFtbWVycy4gIEkgYXZvaWQgaW1wbGVtZW50YXRpb24gZGV0YWlsczogdGhhdCdzIHdoYXQgdGhlCisgICBjb2RlIGlzIGZvciwgYW5kIEkgaWdub3JlIHdob2xlIHRyYWN0cyBvZiB1c2VmdWwgcm91dGluZXMuCisgIDwvcGFyYT4KKyAgPHBhcmE+CisgICBCZWZvcmUgeW91IHJlYWQgdGhpcywgcGxlYXNlIHVuZGVyc3RhbmQgdGhhdCBJIG5ldmVyIHdhbnRlZCB0bworICAgd3JpdGUgdGhpcyBkb2N1bWVudCwgYmVpbmcgZ3Jvc3NseSB1bmRlci1xdWFsaWZpZWQsIGJ1dCBJIGFsd2F5cworICAgd2FudGVkIHRvIHJlYWQgaXQsIGFuZCB0aGlzIHdhcyB0aGUgb25seSB3YXkuICBJIGhvcGUgaXQgd2lsbAorICAgZ3JvdyBpbnRvIGEgY29tcGVuZGl1bSBvZiBiZXN0IHByYWN0aWNlLCBjb21tb24gc3RhcnRpbmcgcG9pbnRzCisgICBhbmQgcmFuZG9tIGluZm9ybWF0aW9uLgorICA8L3BhcmE+CisgPC9jaGFwdGVyPgorCisgPGNoYXB0ZXIgaWQ9ImJhc2ljLXBsYXllcnMiPgorICA8dGl0bGU+VGhlIFBsYXllcnM8L3RpdGxlPgorCisgIDxwYXJhPgorICAgQXQgYW55IHRpbWUgZWFjaCBvZiB0aGUgQ1BVcyBpbiBhIHN5c3RlbSBjYW4gYmU6CisgIDwvcGFyYT4KKworICA8aXRlbWl6ZWRsaXN0PgorICAgPGxpc3RpdGVtPgorICAgIDxwYXJhPgorICAgICBub3QgYXNzb2NpYXRlZCB3aXRoIGFueSBwcm9jZXNzLCBzZXJ2aW5nIGEgaGFyZHdhcmUgaW50ZXJydXB0OworICAgIDwvcGFyYT4KKyAgIDwvbGlzdGl0ZW0+CisKKyAgIDxsaXN0aXRlbT4KKyAgICA8cGFyYT4KKyAgICAgbm90IGFzc29jaWF0ZWQgd2l0aCBhbnkgcHJvY2Vzcywgc2VydmluZyBhIHNvZnRpcnEgb3IgdGFza2xldDsKKyAgICA8L3BhcmE+CisgICA8L2xpc3RpdGVtPgorCisgICA8bGlzdGl0ZW0+CisgICAgPHBhcmE+CisgICAgIHJ1bm5pbmcgaW4ga2VybmVsIHNwYWNlLCBhc3NvY2lhdGVkIHdpdGggYSBwcm9jZXNzICh1c2VyIGNvbnRleHQpOworICAgIDwvcGFyYT4KKyAgIDwvbGlzdGl0ZW0+CisKKyAgIDxsaXN0aXRlbT4KKyAgICA8cGFyYT4KKyAgICAgcnVubmluZyBhIHByb2Nlc3MgaW4gdXNlciBzcGFjZS4KKyAgICA8L3BhcmE+CisgICA8L2xpc3RpdGVtPgorICA8L2l0ZW1pemVkbGlzdD4KKworICA8cGFyYT4KKyAgIFRoZXJlIGlzIGFuIG9yZGVyaW5nIGJldHdlZW4gdGhlc2UuICBUaGUgYm90dG9tIHR3byBjYW4gcHJlZW1wdAorICAgZWFjaCBvdGhlciwgYnV0IGFib3ZlIHRoYXQgaXMgYSBzdHJpY3QgaGllcmFyY2h5OiBlYWNoIGNhbiBvbmx5IGJlCisgICBwcmVlbXB0ZWQgYnkgdGhlIG9uZXMgYWJvdmUgaXQuICBGb3IgZXhhbXBsZSwgd2hpbGUgYSBzb2Z0aXJxIGlzCisgICBydW5uaW5nIG9uIGEgQ1BVLCBubyBvdGhlciBzb2Z0aXJxIHdpbGwgcHJlZW1wdCBpdCwgYnV0IGEgaGFyZHdhcmUKKyAgIGludGVycnVwdCBjYW4uICBIb3dldmVyLCBhbnkgb3RoZXIgQ1BVcyBpbiB0aGUgc3lzdGVtIGV4ZWN1dGUKKyAgIGluZGVwZW5kZW50bHkuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFdlJ2xsIHNlZSBhIG51bWJlciBvZiB3YXlzIHRoYXQgdGhlIHVzZXIgY29udGV4dCBjYW4gYmxvY2sKKyAgIGludGVycnVwdHMsIHRvIGJlY29tZSB0cnVseSBub24tcHJlZW1wdGFibGUuCisgIDwvcGFyYT4KKyAgCisgIDxzZWN0MSBpZD0iYmFzaWNzLXVzZXJjb250ZXh0Ij4KKyAgIDx0aXRsZT5Vc2VyIENvbnRleHQ8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBVc2VyIGNvbnRleHQgaXMgd2hlbiB5b3UgYXJlIGNvbWluZyBpbiBmcm9tIGEgc3lzdGVtIGNhbGwgb3Igb3RoZXIKKyAgICB0cmFwOiBsaWtlIHVzZXJzcGFjZSwgeW91IGNhbiBiZSBwcmVlbXB0ZWQgYnkgbW9yZSBpbXBvcnRhbnQgdGFza3MKKyAgICBhbmQgYnkgaW50ZXJydXB0cy4gIFlvdSBjYW4gc2xlZXAsIGJ5IGNhbGxpbmcKKyAgICA8ZnVuY3Rpb24+c2NoZWR1bGUoKTwvZnVuY3Rpb24+LgorICAgPC9wYXJhPgorCisgICA8bm90ZT4KKyAgICA8cGFyYT4KKyAgICAgWW91IGFyZSBhbHdheXMgaW4gdXNlciBjb250ZXh0IG9uIG1vZHVsZSBsb2FkIGFuZCB1bmxvYWQsCisgICAgIGFuZCBvbiBvcGVyYXRpb25zIG9uIHRoZSBibG9jayBkZXZpY2UgbGF5ZXIuCisgICAgPC9wYXJhPgorICAgPC9ub3RlPgorCisgICA8cGFyYT4KKyAgICBJbiB1c2VyIGNvbnRleHQsIHRoZSA8dmFybmFtZT5jdXJyZW50PC92YXJuYW1lPiBwb2ludGVyIChpbmRpY2F0aW5nIAorICAgIHRoZSB0YXNrIHdlIGFyZSBjdXJyZW50bHkgZXhlY3V0aW5nKSBpcyB2YWxpZCwgYW5kCisgICAgPGZ1bmN0aW9uPmluX2ludGVycnVwdCgpPC9mdW5jdGlvbj4KKyAgICAoPGZpbGVuYW1lPmluY2x1ZGUvbGludXgvaW50ZXJydXB0Lmg8L2ZpbGVuYW1lPikgaXMgPHJldHVybnZhbHVlPmZhbHNlCisgICAgPC9yZXR1cm52YWx1ZT4uICAKKyAgIDwvcGFyYT4KKworICAgPGNhdXRpb24+CisgICAgPHBhcmE+CisgICAgIEJld2FyZSB0aGF0IGlmIHlvdSBoYXZlIHByZWVtcHRpb24gb3Igc29mdGlycXMgZGlzYWJsZWQKKyAgICAgKHNlZSBiZWxvdyksIDxmdW5jdGlvbj5pbl9pbnRlcnJ1cHQoKTwvZnVuY3Rpb24+IHdpbGwgcmV0dXJuIGEgCisgICAgIGZhbHNlIHBvc2l0aXZlLgorICAgIDwvcGFyYT4KKyAgIDwvY2F1dGlvbj4KKyAgPC9zZWN0MT4KKworICA8c2VjdDEgaWQ9ImJhc2ljcy1oYXJkaXJxcyI+CisgICA8dGl0bGU+SGFyZHdhcmUgSW50ZXJydXB0cyAoSGFyZCBJUlFzKTwvdGl0bGU+CisKKyAgIDxwYXJhPgorICAgIFRpbWVyIHRpY2tzLCA8aGFyZHdhcmU+bmV0d29yayBjYXJkczwvaGFyZHdhcmU+IGFuZCAKKyAgICA8aGFyZHdhcmU+a2V5Ym9hcmQ8L2hhcmR3YXJlPiBhcmUgZXhhbXBsZXMgb2YgcmVhbAorICAgIGhhcmR3YXJlIHdoaWNoIHByb2R1Y2UgaW50ZXJydXB0cyBhdCBhbnkgdGltZS4gIFRoZSBrZXJuZWwgcnVucworICAgIGludGVycnVwdCBoYW5kbGVycywgd2hpY2ggc2VydmljZXMgdGhlIGhhcmR3YXJlLiAgVGhlIGtlcm5lbAorICAgIGd1YXJhbnRlZXMgdGhhdCB0aGlzIGhhbmRsZXIgaXMgbmV2ZXIgcmUtZW50ZXJlZDogaWYgdGhlIHNhbWUKKyAgICBpbnRlcnJ1cHQgYXJyaXZlcywgaXQgaXMgcXVldWVkIChvciBkcm9wcGVkKS4gIEJlY2F1c2UgaXQKKyAgICBkaXNhYmxlcyBpbnRlcnJ1cHRzLCB0aGlzIGhhbmRsZXIgaGFzIHRvIGJlIGZhc3Q6IGZyZXF1ZW50bHkgaXQKKyAgICBzaW1wbHkgYWNrbm93bGVkZ2VzIHRoZSBpbnRlcnJ1cHQsIG1hcmtzIGEgJ3NvZnR3YXJlIGludGVycnVwdCcKKyAgICBmb3IgZXhlY3V0aW9uIGFuZCBleGl0cy4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgWW91IGNhbiB0ZWxsIHlvdSBhcmUgaW4gYSBoYXJkd2FyZSBpbnRlcnJ1cHQsIGJlY2F1c2UgCisgICAgPGZ1bmN0aW9uPmluX2lycSgpPC9mdW5jdGlvbj4gcmV0dXJucyA8cmV0dXJudmFsdWU+dHJ1ZTwvcmV0dXJudmFsdWU+LiAgCisgICA8L3BhcmE+CisgICA8Y2F1dGlvbj4KKyAgICA8cGFyYT4KKyAgICAgQmV3YXJlIHRoYXQgdGhpcyB3aWxsIHJldHVybiBhIGZhbHNlIHBvc2l0aXZlIGlmIGludGVycnVwdHMgYXJlIGRpc2FibGVkIAorICAgICAoc2VlIGJlbG93KS4KKyAgICA8L3BhcmE+CisgICA8L2NhdXRpb24+CisgIDwvc2VjdDE+CisKKyAgPHNlY3QxIGlkPSJiYXNpY3Mtc29mdGlycXMiPgorICAgPHRpdGxlPlNvZnR3YXJlIEludGVycnVwdCBDb250ZXh0OiBTb2Z0aXJxcyBhbmQgVGFza2xldHM8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBXaGVuZXZlciBhIHN5c3RlbSBjYWxsIGlzIGFib3V0IHRvIHJldHVybiB0byB1c2Vyc3BhY2UsIG9yIGEKKyAgICBoYXJkd2FyZSBpbnRlcnJ1cHQgaGFuZGxlciBleGl0cywgYW55ICdzb2Z0d2FyZSBpbnRlcnJ1cHRzJworICAgIHdoaWNoIGFyZSBtYXJrZWQgcGVuZGluZyAodXN1YWxseSBieSBoYXJkd2FyZSBpbnRlcnJ1cHRzKSBhcmUKKyAgICBydW4gKDxmaWxlbmFtZT5rZXJuZWwvc29mdGlycS5jPC9maWxlbmFtZT4pLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBNdWNoIG9mIHRoZSByZWFsIGludGVycnVwdCBoYW5kbGluZyB3b3JrIGlzIGRvbmUgaGVyZS4gIEVhcmx5IGluCisgICAgdGhlIHRyYW5zaXRpb24gdG8gPGFjcm9ueW0+U01QPC9hY3JvbnltPiwgdGhlcmUgd2VyZSBvbmx5ICdib3R0b20KKyAgICBoYWx2ZXMnIChCSHMpLCB3aGljaCBkaWRuJ3QgdGFrZSBhZHZhbnRhZ2Ugb2YgbXVsdGlwbGUgQ1BVcy4gIFNob3J0bHkgCisgICAgYWZ0ZXIgd2Ugc3dpdGNoZWQgZnJvbSB3aW5kLXVwIGNvbXB1dGVycyBtYWRlIG9mIG1hdGNoLXN0aWNrcyBhbmQgc25vdCwKKyAgICB3ZSBhYmFuZG9uZWQgdGhpcyBsaW1pdGF0aW9uIGFuZCBzd2l0Y2hlZCB0byAnc29mdGlycXMnLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICA8ZmlsZW5hbWUgY2xhc3M9ImhlYWRlcmZpbGUiPmluY2x1ZGUvbGludXgvaW50ZXJydXB0Lmg8L2ZpbGVuYW1lPiBsaXN0cyB0aGUKKyAgICBkaWZmZXJlbnQgc29mdGlycXMuICBBIHZlcnkgaW1wb3J0YW50IHNvZnRpcnEgaXMgdGhlCisgICAgdGltZXIgc29mdGlycSAoPGZpbGVuYW1lCisgICAgY2xhc3M9ImhlYWRlcmZpbGUiPmluY2x1ZGUvbGludXgvdGltZXIuaDwvZmlsZW5hbWU+KTogeW91IGNhbgorICAgIHJlZ2lzdGVyIHRvIGhhdmUgaXQgY2FsbCBmdW5jdGlvbnMgZm9yIHlvdSBpbiBhIGdpdmVuIGxlbmd0aCBvZgorICAgIHRpbWUuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIFNvZnRpcnFzIGFyZSBvZnRlbiBhIHBhaW4gdG8gZGVhbCB3aXRoLCBzaW5jZSB0aGUgc2FtZSBzb2Z0aXJxCisgICAgd2lsbCBydW4gc2ltdWx0YW5lb3VzbHkgb24gbW9yZSB0aGFuIG9uZSBDUFUuICBGb3IgdGhpcyByZWFzb24sCisgICAgdGFza2xldHMgKDxmaWxlbmFtZQorICAgIGNsYXNzPSJoZWFkZXJmaWxlIj5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oPC9maWxlbmFtZT4pIGFyZSBtb3JlCisgICAgb2Z0ZW4gdXNlZDogdGhleSBhcmUgZHluYW1pY2FsbHktcmVnaXN0cmFibGUgKG1lYW5pbmcgeW91IGNhbiBoYXZlCisgICAgYXMgbWFueSBhcyB5b3Ugd2FudCksIGFuZCB0aGV5IGFsc28gZ3VhcmFudGVlIHRoYXQgYW55IHRhc2tsZXQKKyAgICB3aWxsIG9ubHkgcnVuIG9uIG9uZSBDUFUgYXQgYW55IHRpbWUsIGFsdGhvdWdoIGRpZmZlcmVudCB0YXNrbGV0cworICAgIGNhbiBydW4gc2ltdWx0YW5lb3VzbHkuCisgICA8L3BhcmE+CisgICA8Y2F1dGlvbj4KKyAgICA8cGFyYT4KKyAgICAgVGhlIG5hbWUgJ3Rhc2tsZXQnIGlzIG1pc2xlYWRpbmc6IHRoZXkgaGF2ZSBub3RoaW5nIHRvIGRvIHdpdGggJ3Rhc2tzJywKKyAgICAgYW5kIHByb2JhYmx5IG1vcmUgdG8gZG8gd2l0aCBzb21lIGJhZCB2b2RrYSBBbGV4ZXkgS3V6bmV0c292IGhhZCBhdCB0aGUgCisgICAgIHRpbWUuCisgICAgPC9wYXJhPgorICAgPC9jYXV0aW9uPgorCisgICA8cGFyYT4KKyAgICBZb3UgY2FuIHRlbGwgeW91IGFyZSBpbiBhIHNvZnRpcnEgKG9yIHRhc2tsZXQpCisgICAgdXNpbmcgdGhlIDxmdW5jdGlvbj5pbl9zb2Z0aXJxKCk8L2Z1bmN0aW9uPiBtYWNybyAKKyAgICAoPGZpbGVuYW1lIGNsYXNzPSJoZWFkZXJmaWxlIj5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oPC9maWxlbmFtZT4pLgorICAgPC9wYXJhPgorICAgPGNhdXRpb24+CisgICAgPHBhcmE+CisgICAgIEJld2FyZSB0aGF0IHRoaXMgd2lsbCByZXR1cm4gYSBmYWxzZSBwb3NpdGl2ZSBpZiBhIGJoIGxvY2sgKHNlZSBiZWxvdykKKyAgICAgaXMgaGVsZC4KKyAgICA8L3BhcmE+CisgICA8L2NhdXRpb24+CisgIDwvc2VjdDE+CisgPC9jaGFwdGVyPgorCisgPGNoYXB0ZXIgaWQ9ImJhc2ljLXJ1bGVzIj4KKyAgPHRpdGxlPlNvbWUgQmFzaWMgUnVsZXM8L3RpdGxlPgorCisgIDx2YXJpYWJsZWxpc3Q+CisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPk5vIG1lbW9yeSBwcm90ZWN0aW9uPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBJZiB5b3UgY29ycnVwdCBtZW1vcnksIHdoZXRoZXIgaW4gdXNlciBjb250ZXh0IG9yCisgICAgICBpbnRlcnJ1cHQgY29udGV4dCwgdGhlIHdob2xlIG1hY2hpbmUgd2lsbCBjcmFzaC4gIEFyZSB5b3UKKyAgICAgIHN1cmUgeW91IGNhbid0IGRvIHdoYXQgeW91IHdhbnQgaW4gdXNlcnNwYWNlPworICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPk5vIGZsb2F0aW5nIHBvaW50IG9yIDxhY3JvbnltPk1NWDwvYWNyb255bT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSA8YWNyb255bT5GUFU8L2Fjcm9ueW0+IGNvbnRleHQgaXMgbm90IHNhdmVkOyBldmVuIGluIHVzZXIKKyAgICAgIGNvbnRleHQgdGhlIDxhY3JvbnltPkZQVTwvYWNyb255bT4gc3RhdGUgcHJvYmFibHkgd29uJ3QKKyAgICAgIGNvcnJlc3BvbmQgd2l0aCB0aGUgY3VycmVudCBwcm9jZXNzOiB5b3Ugd291bGQgbWVzcyB3aXRoIHNvbWUKKyAgICAgIHVzZXIgcHJvY2VzcycgPGFjcm9ueW0+RlBVPC9hY3JvbnltPiBzdGF0ZS4gIElmIHlvdSByZWFsbHkgd2FudAorICAgICAgdG8gZG8gdGhpcywgeW91IHdvdWxkIGhhdmUgdG8gZXhwbGljaXRseSBzYXZlL3Jlc3RvcmUgdGhlIGZ1bGwKKyAgICAgIDxhY3JvbnltPkZQVTwvYWNyb255bT4gc3RhdGUgKGFuZCBhdm9pZCBjb250ZXh0IHN3aXRjaGVzKS4gIEl0CisgICAgICBpcyBnZW5lcmFsbHkgYSBiYWQgaWRlYTsgdXNlIGZpeGVkIHBvaW50IGFyaXRobWV0aWMgZmlyc3QuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+QSByaWdpZCBzdGFjayBsaW1pdDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgRGVwZW5kaW5nIG9uIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGUga2VybmVsIHN0YWNrIGlzIGFib3V0IDNLIHRvIDZLIGZvciBtb3N0IDMyLWJpdCBhcmNoaXRlY3R1cmVzOiBpdCdzCisgICAgICBhYm91dCAxNEsgb24gbW9zdCA2NC1iaXQgYXJjaHMsIGFuZCBvZnRlbiBzaGFyZWQgd2l0aCBpbnRlcnJ1cHRzCisgICAgICBzbyB5b3UgY2FuJ3QgdXNlIGl0IGFsbC4gIEF2b2lkIGRlZXAgcmVjdXJzaW9uIGFuZCBodWdlIGxvY2FsCisgICAgICBhcnJheXMgb24gdGhlIHN0YWNrIChhbGxvY2F0ZSB0aGVtIGR5bmFtaWNhbGx5IGluc3RlYWQpLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPlRoZSBMaW51eCBrZXJuZWwgaXMgcG9ydGFibGU8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIExldCdzIGtlZXAgaXQgdGhhdCB3YXkuICBZb3VyIGNvZGUgc2hvdWxkIGJlIDY0LWJpdCBjbGVhbiwKKyAgICAgIGFuZCBlbmRpYW4taW5kZXBlbmRlbnQuICBZb3Ugc2hvdWxkIGFsc28gbWluaW1pemUgQ1BVCisgICAgICBzcGVjaWZpYyBzdHVmZiwgZS5nLiBpbmxpbmUgYXNzZW1ibHkgc2hvdWxkIGJlIGNsZWFubHkKKyAgICAgIGVuY2Fwc3VsYXRlZCBhbmQgbWluaW1pemVkIHRvIGVhc2UgcG9ydGluZy4gIEdlbmVyYWxseSBpdAorICAgICAgc2hvdWxkIGJlIHJlc3RyaWN0ZWQgdG8gdGhlIGFyY2hpdGVjdHVyZS1kZXBlbmRlbnQgcGFydCBvZgorICAgICAgdGhlIGtlcm5lbCB0cmVlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKyA8L2NoYXB0ZXI+CisKKyA8Y2hhcHRlciBpZD0iaW9jdGxzIj4KKyAgPHRpdGxlPmlvY3RsczogTm90IHdyaXRpbmcgYSBuZXcgc3lzdGVtIGNhbGw8L3RpdGxlPgorCisgIDxwYXJhPgorICAgQSBzeXN0ZW0gY2FsbCBnZW5lcmFsbHkgbG9va3MgbGlrZSB0aGlzCisgIDwvcGFyYT4KKworICA8cHJvZ3JhbWxpc3Rpbmc+Cithc21saW5rYWdlIGxvbmcgc3lzX215Y2FsbChpbnQgYXJnKQoreworICAgICAgICByZXR1cm4gMDsgCit9CisgIDwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgPHBhcmE+CisgICBGaXJzdCwgaW4gbW9zdCBjYXNlcyB5b3UgZG9uJ3Qgd2FudCB0byBjcmVhdGUgYSBuZXcgc3lzdGVtIGNhbGwuCisgICBZb3UgY3JlYXRlIGEgY2hhcmFjdGVyIGRldmljZSBhbmQgaW1wbGVtZW50IGFuIGFwcHJvcHJpYXRlIGlvY3RsCisgICBmb3IgaXQuICBUaGlzIGlzIG11Y2ggbW9yZSBmbGV4aWJsZSB0aGFuIHN5c3RlbSBjYWxscywgZG9lc24ndCBoYXZlCisgICB0byBiZSBlbnRlcmVkIGluIGV2ZXJ5IGFyY2hpdGVjdHVyZSdzCisgICA8ZmlsZW5hbWUgY2xhc3M9ImhlYWRlcmZpbGUiPmluY2x1ZGUvYXNtL3VuaXN0ZC5oPC9maWxlbmFtZT4gYW5kCisgICA8ZmlsZW5hbWU+YXJjaC9rZXJuZWwvZW50cnkuUzwvZmlsZW5hbWU+IGZpbGUsIGFuZCBpcyBtdWNoIG1vcmUKKyAgIGxpa2VseSB0byBiZSBhY2NlcHRlZCBieSBMaW51cy4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgSWYgYWxsIHlvdXIgcm91dGluZSBkb2VzIGlzIHJlYWQgb3Igd3JpdGUgc29tZSBwYXJhbWV0ZXIsIGNvbnNpZGVyCisgICBpbXBsZW1lbnRpbmcgYSA8ZnVuY3Rpb24+c3lzZnM8L2Z1bmN0aW9uPiBpbnRlcmZhY2UgaW5zdGVhZC4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgSW5zaWRlIHRoZSBpb2N0bCB5b3UncmUgaW4gdXNlciBjb250ZXh0IHRvIGEgcHJvY2Vzcy4gIFdoZW4gYQorICAgZXJyb3Igb2NjdXJzIHlvdSByZXR1cm4gYSBuZWdhdGVkIGVycm5vIChzZWUKKyAgIDxmaWxlbmFtZSBjbGFzcz0iaGVhZGVyZmlsZSI+aW5jbHVkZS9saW51eC9lcnJuby5oPC9maWxlbmFtZT4pLAorICAgb3RoZXJ3aXNlIHlvdSByZXR1cm4gPHJldHVybnZhbHVlPjA8L3JldHVybnZhbHVlPi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgQWZ0ZXIgeW91IHNsZXB0IHlvdSBzaG91bGQgY2hlY2sgaWYgYSBzaWduYWwgb2NjdXJyZWQ6IHRoZQorICAgVW5peC9MaW51eCB3YXkgb2YgaGFuZGxpbmcgc2lnbmFscyBpcyB0byB0ZW1wb3JhcmlseSBleGl0IHRoZQorICAgc3lzdGVtIGNhbGwgd2l0aCB0aGUgPGNvbnN0YW50Pi1FUkVTVEFSVFNZUzwvY29uc3RhbnQ+IGVycm9yLiAgVGhlCisgICBzeXN0ZW0gY2FsbCBlbnRyeSBjb2RlIHdpbGwgc3dpdGNoIGJhY2sgdG8gdXNlciBjb250ZXh0LCBwcm9jZXNzCisgICB0aGUgc2lnbmFsIGhhbmRsZXIgYW5kIHRoZW4geW91ciBzeXN0ZW0gY2FsbCB3aWxsIGJlIHJlc3RhcnRlZAorICAgKHVubGVzcyB0aGUgdXNlciBkaXNhYmxlZCB0aGF0KS4gIFNvIHlvdSBzaG91bGQgYmUgcHJlcGFyZWQgdG8KKyAgIHByb2Nlc3MgdGhlIHJlc3RhcnQsIGUuZy4gaWYgeW91J3JlIGluIHRoZSBtaWRkbGUgb2YgbWFuaXB1bGF0aW5nCisgICBzb21lIGRhdGEgc3RydWN0dXJlLgorICA8L3BhcmE+CisKKyAgPHByb2dyYW1saXN0aW5nPgoraWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKQorICAgICAgICByZXR1cm4gLUVSRVNUQVJUU1lTOworICA8L3Byb2dyYW1saXN0aW5nPgorCisgIDxwYXJhPgorICAgSWYgeW91J3JlIGRvaW5nIGxvbmdlciBjb21wdXRhdGlvbnM6IGZpcnN0IHRoaW5rIHVzZXJzcGFjZS4gSWYgeW91CisgICA8ZW1waGFzaXM+cmVhbGx5PC9lbXBoYXNpcz4gd2FudCB0byBkbyBpdCBpbiBrZXJuZWwgeW91IHNob3VsZAorICAgcmVndWxhcmx5IGNoZWNrIGlmIHlvdSBuZWVkIHRvIGdpdmUgdXAgdGhlIENQVSAocmVtZW1iZXIgdGhlcmUgaXMKKyAgIGNvb3BlcmF0aXZlIG11bHRpdGFza2luZyBwZXIgQ1BVKS4gIElkaW9tOgorICA8L3BhcmE+CisKKyAgPHByb2dyYW1saXN0aW5nPgorY29uZF9yZXNjaGVkKCk7IC8qIFdpbGwgc2xlZXAgKi8gCisgIDwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgPHBhcmE+CisgICBBIHNob3J0IG5vdGUgb24gaW50ZXJmYWNlIGRlc2lnbjogdGhlIFVOSVggc3lzdGVtIGNhbGwgbW90dG8gaXMKKyAgICJQcm92aWRlIG1lY2hhbmlzbSBub3QgcG9saWN5Ii4KKyAgPC9wYXJhPgorIDwvY2hhcHRlcj4KKworIDxjaGFwdGVyIGlkPSJkZWFkbG9jay1yZWNpcGVzIj4KKyAgPHRpdGxlPlJlY2lwZXMgZm9yIERlYWRsb2NrPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFlvdSBjYW5ub3QgY2FsbCBhbnkgcm91dGluZXMgd2hpY2ggbWF5IHNsZWVwLCB1bmxlc3M6CisgIDwvcGFyYT4KKyAgPGl0ZW1pemVkbGlzdD4KKyAgIDxsaXN0aXRlbT4KKyAgICA8cGFyYT4KKyAgICAgWW91IGFyZSBpbiB1c2VyIGNvbnRleHQuCisgICAgPC9wYXJhPgorICAgPC9saXN0aXRlbT4KKworICAgPGxpc3RpdGVtPgorICAgIDxwYXJhPgorICAgICBZb3UgZG8gbm90IG93biBhbnkgc3BpbmxvY2tzLgorICAgIDwvcGFyYT4KKyAgIDwvbGlzdGl0ZW0+CisKKyAgIDxsaXN0aXRlbT4KKyAgICA8cGFyYT4KKyAgICAgWW91IGhhdmUgaW50ZXJydXB0cyBlbmFibGVkIChhY3R1YWxseSwgQW5kaSBLbGVlbiBzYXlzCisgICAgIHRoYXQgdGhlIHNjaGVkdWxpbmcgY29kZSB3aWxsIGVuYWJsZSB0aGVtIGZvciB5b3UsIGJ1dAorICAgICB0aGF0J3MgcHJvYmFibHkgbm90IHdoYXQgeW91IHdhbnRlZCkuCisgICAgPC9wYXJhPgorICAgPC9saXN0aXRlbT4KKyAgPC9pdGVtaXplZGxpc3Q+CisKKyAgPHBhcmE+CisgICBOb3RlIHRoYXQgc29tZSBmdW5jdGlvbnMgbWF5IHNsZWVwIGltcGxpY2l0bHk6IGNvbW1vbiBvbmVzIGFyZQorICAgdGhlIHVzZXIgc3BhY2UgYWNjZXNzIGZ1bmN0aW9ucyAoKl91c2VyKSBhbmQgbWVtb3J5IGFsbG9jYXRpb24KKyAgIGZ1bmN0aW9ucyB3aXRob3V0IDxzeW1ib2w+R0ZQX0FUT01JQzwvc3ltYm9sPi4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgWW91IHNob3VsZCBhbHdheXMgY29tcGlsZSB5b3VyIGtlcm5lbAorICAgPHN5bWJvbD5DT05GSUdfREVCVUdfQVRPTUlDX1NMRUVQPC9zeW1ib2w+IG9uLCBhbmQgaXQgd2lsbCB3YXJuCisgICB5b3UgaWYgeW91IGJyZWFrIHRoZXNlIHJ1bGVzLiAgSWYgeW91IDxlbXBoYXNpcz5kbzwvZW1waGFzaXM+IGJyZWFrCisgICB0aGUgcnVsZXMsIHlvdSB3aWxsIGV2ZW50dWFsbHkgbG9jayB1cCB5b3VyIGJveC4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgUmVhbGx5LgorICA8L3BhcmE+CisgPC9jaGFwdGVyPgorCisgPGNoYXB0ZXIgaWQ9ImNvbW1vbi1yb3V0aW5lcyI+CisgIDx0aXRsZT5Db21tb24gUm91dGluZXM8L3RpdGxlPgorCisgIDxzZWN0MSBpZD0icm91dGluZXMtcHJpbnRrIj4KKyAgIDx0aXRsZT4KKyAgICA8ZnVuY3Rpb24+cHJpbnRrKCk8L2Z1bmN0aW9uPgorICAgIDxmaWxlbmFtZSBjbGFzcz0iaGVhZGVyZmlsZSI+aW5jbHVkZS9saW51eC9rZXJuZWwuaDwvZmlsZW5hbWU+CisgICA8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICA8ZnVuY3Rpb24+cHJpbnRrKCk8L2Z1bmN0aW9uPiBmZWVkcyBrZXJuZWwgbWVzc2FnZXMgdG8gdGhlCisgICAgY29uc29sZSwgZG1lc2csIGFuZCB0aGUgc3lzbG9nIGRhZW1vbi4gIEl0IGlzIHVzZWZ1bCBmb3IgZGVidWdnaW5nCisgICAgYW5kIHJlcG9ydGluZyBlcnJvcnMsIGFuZCBjYW4gYmUgdXNlZCBpbnNpZGUgaW50ZXJydXB0IGNvbnRleHQsCisgICAgYnV0IHVzZSB3aXRoIGNhdXRpb246IGEgbWFjaGluZSB3aGljaCBoYXMgaXRzIGNvbnNvbGUgZmxvb2RlZCB3aXRoCisgICAgcHJpbnRrIG1lc3NhZ2VzIGlzIHVudXNhYmxlLiAgSXQgdXNlcyBhIGZvcm1hdCBzdHJpbmcgbW9zdGx5CisgICAgY29tcGF0aWJsZSB3aXRoIEFOU0kgQyBwcmludGYsIGFuZCBDIHN0cmluZyBjb25jYXRlbmF0aW9uIHRvIGdpdmUKKyAgICBpdCBhIGZpcnN0ICJwcmlvcml0eSIgYXJndW1lbnQ6CisgICA8L3BhcmE+CisKKyAgIDxwcm9ncmFtbGlzdGluZz4KK3ByaW50ayhLRVJOX0lORk8gImkgPSAldVxuIiwgaSk7CisgICA8L3Byb2dyYW1saXN0aW5nPgorCisgICA8cGFyYT4KKyAgICBTZWUgPGZpbGVuYW1lIGNsYXNzPSJoZWFkZXJmaWxlIj5pbmNsdWRlL2xpbnV4L2tlcm5lbC5oPC9maWxlbmFtZT47CisgICAgZm9yIG90aGVyIEtFUk5fIHZhbHVlczsgdGhlc2UgYXJlIGludGVycHJldGVkIGJ5IHN5c2xvZyBhcyB0aGUKKyAgICBsZXZlbC4gIFNwZWNpYWwgY2FzZTogZm9yIHByaW50aW5nIGFuIElQIGFkZHJlc3MgdXNlCisgICA8L3BhcmE+CisKKyAgIDxwcm9ncmFtbGlzdGluZz4KK19fYmUzMiBpcGFkZHJlc3M7CitwcmludGsoS0VSTl9JTkZPICJteSBpcDogJXBJNFxuIiwgJmFtcDtpcGFkZHJlc3MpOworICAgPC9wcm9ncmFtbGlzdGluZz4KKworICAgPHBhcmE+CisgICAgPGZ1bmN0aW9uPnByaW50aygpPC9mdW5jdGlvbj4gaW50ZXJuYWxseSB1c2VzIGEgMUsgYnVmZmVyIGFuZCBkb2VzCisgICAgbm90IGNhdGNoIG92ZXJydW5zLiAgTWFrZSBzdXJlIHRoYXQgd2lsbCBiZSBlbm91Z2guCisgICA8L3BhcmE+CisKKyAgIDxub3RlPgorICAgIDxwYXJhPgorICAgICBZb3Ugd2lsbCBrbm93IHdoZW4geW91IGFyZSBhIHJlYWwga2VybmVsIGhhY2tlcgorICAgICB3aGVuIHlvdSBzdGFydCB0eXBvaW5nIHByaW50ZiBhcyBwcmludGsgaW4geW91ciB1c2VyIHByb2dyYW1zIDopCisgICAgPC9wYXJhPgorICAgPC9ub3RlPgorCisgICA8IS0tLSBGcm9tIHRoZSBMaW9ucyBib29rIHJlYWRlciBkZXBhcnRtZW50IC0tPiAKKworICAgPG5vdGU+CisgICAgPHBhcmE+CisgICAgIEFub3RoZXIgc2lkZW5vdGU6IHRoZSBvcmlnaW5hbCBVbml4IFZlcnNpb24gNiBzb3VyY2VzIGhhZCBhCisgICAgIGNvbW1lbnQgb24gdG9wIG9mIGl0cyBwcmludGYgZnVuY3Rpb246ICJQcmludGYgc2hvdWxkIG5vdCBiZQorICAgICB1c2VkIGZvciBjaGl0LWNoYXQiLiAgWW91IHNob3VsZCBmb2xsb3cgdGhhdCBhZHZpY2UuCisgICAgPC9wYXJhPgorICAgPC9ub3RlPgorICA8L3NlY3QxPgorCisgIDxzZWN0MSBpZD0icm91dGluZXMtY29weSI+CisgICA8dGl0bGU+CisgICAgPGZ1bmN0aW9uPmNvcHlfW3RvL2Zyb21dX3VzZXIoKTwvZnVuY3Rpb24+CisgICAgLworICAgIDxmdW5jdGlvbj5nZXRfdXNlcigpPC9mdW5jdGlvbj4KKyAgICAvCisgICAgPGZ1bmN0aW9uPnB1dF91c2VyKCk8L2Z1bmN0aW9uPgorICAgIDxmaWxlbmFtZSBjbGFzcz0iaGVhZGVyZmlsZSI+aW5jbHVkZS9hc20vdWFjY2Vzcy5oPC9maWxlbmFtZT4KKyAgIDwvdGl0bGU+ICAKKworICAgPHBhcmE+CisgICAgPGVtcGhhc2lzPltTTEVFUFNdPC9lbXBoYXNpcz4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgPGZ1bmN0aW9uPnB1dF91c2VyKCk8L2Z1bmN0aW9uPiBhbmQgPGZ1bmN0aW9uPmdldF91c2VyKCk8L2Z1bmN0aW9uPgorICAgIGFyZSB1c2VkIHRvIGdldCBhbmQgcHV0IHNpbmdsZSB2YWx1ZXMgKHN1Y2ggYXMgYW4gaW50LCBjaGFyLCBvcgorICAgIGxvbmcpIGZyb20gYW5kIHRvIHVzZXJzcGFjZS4gIEEgcG9pbnRlciBpbnRvIHVzZXJzcGFjZSBzaG91bGQKKyAgICBuZXZlciBiZSBzaW1wbHkgZGVyZWZlcmVuY2VkOiBkYXRhIHNob3VsZCBiZSBjb3BpZWQgdXNpbmcgdGhlc2UKKyAgICByb3V0aW5lcy4gIEJvdGggcmV0dXJuIDxjb25zdGFudD4tRUZBVUxUPC9jb25zdGFudD4gb3IgMC4KKyAgIDwvcGFyYT4KKyAgIDxwYXJhPgorICAgIDxmdW5jdGlvbj5jb3B5X3RvX3VzZXIoKTwvZnVuY3Rpb24+IGFuZAorICAgIDxmdW5jdGlvbj5jb3B5X2Zyb21fdXNlcigpPC9mdW5jdGlvbj4gYXJlIG1vcmUgZ2VuZXJhbDogdGhleSBjb3B5CisgICAgYW4gYXJiaXRyYXJ5IGFtb3VudCBvZiBkYXRhIHRvIGFuZCBmcm9tIHVzZXJzcGFjZS4KKyAgICA8Y2F1dGlvbj4KKyAgICAgPHBhcmE+CisgICAgICBVbmxpa2UgPGZ1bmN0aW9uPnB1dF91c2VyKCk8L2Z1bmN0aW9uPiBhbmQKKyAgICAgIDxmdW5jdGlvbj5nZXRfdXNlcigpPC9mdW5jdGlvbj4sIHRoZXkgcmV0dXJuIHRoZSBhbW91bnQgb2YKKyAgICAgIHVuY29waWVkIGRhdGEgKGllLiA8cmV0dXJudmFsdWU+MDwvcmV0dXJudmFsdWU+IHN0aWxsIG1lYW5zCisgICAgICBzdWNjZXNzKS4KKyAgICAgPC9wYXJhPgorICAgIDwvY2F1dGlvbj4KKyAgICBbWWVzLCB0aGlzIG1vcm9uaWMgaW50ZXJmYWNlIG1ha2VzIG1lIGNyaW5nZS4gIFRoZSBmbGFtZXdhciBjb21lcyB1cCBldmVyeSB5ZWFyIG9yIHNvLiAtLVJSLl0KKyAgIDwvcGFyYT4KKyAgIDxwYXJhPgorICAgIFRoZSBmdW5jdGlvbnMgbWF5IHNsZWVwIGltcGxpY2l0bHkuIFRoaXMgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZAorICAgIG91dHNpZGUgdXNlciBjb250ZXh0IChpdCBtYWtlcyBubyBzZW5zZSksIHdpdGggaW50ZXJydXB0cworICAgIGRpc2FibGVkLCBvciBhIHNwaW5sb2NrIGhlbGQuCisgICA8L3BhcmE+CisgIDwvc2VjdDE+CisKKyAgPHNlY3QxIGlkPSJyb3V0aW5lcy1rbWFsbG9jIj4KKyAgIDx0aXRsZT48ZnVuY3Rpb24+a21hbGxvYygpPC9mdW5jdGlvbj4vPGZ1bmN0aW9uPmtmcmVlKCk8L2Z1bmN0aW9uPgorICAgIDxmaWxlbmFtZSBjbGFzcz0iaGVhZGVyZmlsZSI+aW5jbHVkZS9saW51eC9zbGFiLmg8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgIDxwYXJhPgorICAgIDxlbXBoYXNpcz5bTUFZIFNMRUVQOiBTRUUgQkVMT1ddPC9lbXBoYXNpcz4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgVGhlc2Ugcm91dGluZXMgYXJlIHVzZWQgdG8gZHluYW1pY2FsbHkgcmVxdWVzdCBwb2ludGVyLWFsaWduZWQKKyAgICBjaHVua3Mgb2YgbWVtb3J5LCBsaWtlIG1hbGxvYyBhbmQgZnJlZSBkbyBpbiB1c2Vyc3BhY2UsIGJ1dAorICAgIDxmdW5jdGlvbj5rbWFsbG9jKCk8L2Z1bmN0aW9uPiB0YWtlcyBhbiBleHRyYSBmbGFnIHdvcmQuCisgICAgSW1wb3J0YW50IHZhbHVlczoKKyAgIDwvcGFyYT4KKworICAgPHZhcmlhYmxlbGlzdD4KKyAgICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT4KKyAgICAgIDxjb25zdGFudD4KKyAgICAgICBHRlBfS0VSTkVMCisgICAgICA8L2NvbnN0YW50PgorICAgICA8L3Rlcm0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIE1heSBzbGVlcCBhbmQgc3dhcCB0byBmcmVlIG1lbW9yeS4gT25seSBhbGxvd2VkIGluIHVzZXIKKyAgICAgICBjb250ZXh0LCBidXQgaXMgdGhlIG1vc3QgcmVsaWFibGUgd2F5IHRvIGFsbG9jYXRlIG1lbW9yeS4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAKKyAgICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT4KKyAgICAgIDxjb25zdGFudD4KKyAgICAgICBHRlBfQVRPTUlDCisgICAgICA8L2NvbnN0YW50PgorICAgICA8L3Rlcm0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIERvbid0IHNsZWVwLiBMZXNzIHJlbGlhYmxlIHRoYW4gPGNvbnN0YW50PkdGUF9LRVJORUw8L2NvbnN0YW50PiwKKyAgICAgICBidXQgbWF5IGJlIGNhbGxlZCBmcm9tIGludGVycnVwdCBjb250ZXh0LiBZb3Ugc2hvdWxkCisgICAgICAgPGVtcGhhc2lzPnJlYWxseTwvZW1waGFzaXM+IGhhdmUgYSBnb29kIG91dC1vZi1tZW1vcnkKKyAgICAgICBlcnJvci1oYW5kbGluZyBzdHJhdGVneS4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAKKyAgICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT4KKyAgICAgIDxjb25zdGFudD4KKyAgICAgICBHRlBfRE1BCisgICAgICA8L2NvbnN0YW50PgorICAgICA8L3Rlcm0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIEFsbG9jYXRlIElTQSBETUEgbG93ZXIgdGhhbiAxNk1CLiBJZiB5b3UgZG9uJ3Qga25vdyB3aGF0IHRoYXQKKyAgICAgICBpcyB5b3UgZG9uJ3QgbmVlZCBpdC4gIFZlcnkgdW5yZWxpYWJsZS4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgIDwvdmFyaWFibGVsaXN0PgorCisgICA8cGFyYT4KKyAgICBJZiB5b3Ugc2VlIGEgPGVycm9ybmFtZT5zbGVlcGluZyBmdW5jdGlvbiBjYWxsZWQgZnJvbSBpbnZhbGlkCisgICAgY29udGV4dDwvZXJyb3JuYW1lPiB3YXJuaW5nIG1lc3NhZ2UsIHRoZW4gbWF5YmUgeW91IGNhbGxlZCBhCisgICAgc2xlZXBpbmcgYWxsb2NhdGlvbiBmdW5jdGlvbiBmcm9tIGludGVycnVwdCBjb250ZXh0IHdpdGhvdXQKKyAgICA8Y29uc3RhbnQ+R0ZQX0FUT01JQzwvY29uc3RhbnQ+LiAgWW91IHNob3VsZCByZWFsbHkgZml4IHRoYXQuCisgICAgUnVuLCBkb24ndCB3YWxrLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBJZiB5b3UgYXJlIGFsbG9jYXRpbmcgYXQgbGVhc3QgPGNvbnN0YW50PlBBR0VfU0laRTwvY29uc3RhbnQ+CisgICAgKDxmaWxlbmFtZSBjbGFzcz0iaGVhZGVyZmlsZSI+aW5jbHVkZS9hc20vcGFnZS5oPC9maWxlbmFtZT4pIGJ5dGVzLAorICAgIGNvbnNpZGVyIHVzaW5nIDxmdW5jdGlvbj5fX2dldF9mcmVlX3BhZ2VzKCk8L2Z1bmN0aW9uPgorCisgICAgKDxmaWxlbmFtZSBjbGFzcz0iaGVhZGVyZmlsZSI+aW5jbHVkZS9saW51eC9tbS5oPC9maWxlbmFtZT4pLiAgSXQKKyAgICB0YWtlcyBhbiBvcmRlciBhcmd1bWVudCAoMCBmb3IgcGFnZSBzaXplZCwgMSBmb3IgZG91YmxlIHBhZ2UsIDIKKyAgICBmb3IgZm91ciBwYWdlcyBldGMuKSBhbmQgdGhlIHNhbWUgbWVtb3J5IHByaW9yaXR5IGZsYWcgd29yZCBhcworICAgIGFib3ZlLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBJZiB5b3UgYXJlIGFsbG9jYXRpbmcgbW9yZSB0aGFuIGEgcGFnZSB3b3J0aCBvZiBieXRlcyB5b3UgY2FuIHVzZQorICAgIDxmdW5jdGlvbj52bWFsbG9jKCk8L2Z1bmN0aW9uPi4gIEl0J2xsIGFsbG9jYXRlIHZpcnR1YWwgbWVtb3J5IGluCisgICAgdGhlIGtlcm5lbCBtYXAuICBUaGlzIGJsb2NrIGlzIG5vdCBjb250aWd1b3VzIGluIHBoeXNpY2FsIG1lbW9yeSwKKyAgICBidXQgdGhlIDxhY3JvbnltPk1NVTwvYWNyb255bT4gbWFrZXMgaXQgbG9vayBsaWtlIGl0IGlzIGZvciB5b3UKKyAgICAoc28gaXQnbGwgb25seSBsb29rIGNvbnRpZ3VvdXMgdG8gdGhlIENQVXMsIG5vdCB0byBleHRlcm5hbCBkZXZpY2UKKyAgICBkcml2ZXJzKS4gIElmIHlvdSByZWFsbHkgbmVlZCBsYXJnZSBwaHlzaWNhbGx5IGNvbnRpZ3VvdXMgbWVtb3J5CisgICAgZm9yIHNvbWUgd2VpcmQgZGV2aWNlLCB5b3UgaGF2ZSBhIHByb2JsZW06IGl0IGlzIHBvb3JseSBzdXBwb3J0ZWQKKyAgICBpbiBMaW51eCBiZWNhdXNlIGFmdGVyIHNvbWUgdGltZSBtZW1vcnkgZnJhZ21lbnRhdGlvbiBpbiBhIHJ1bm5pbmcKKyAgICBrZXJuZWwgbWFrZXMgaXQgaGFyZC4gIFRoZSBiZXN0IHdheSBpcyB0byBhbGxvY2F0ZSB0aGUgYmxvY2sgZWFybHkKKyAgICBpbiB0aGUgYm9vdCBwcm9jZXNzIHZpYSB0aGUgPGZ1bmN0aW9uPmFsbG9jX2Jvb3RtZW0oKTwvZnVuY3Rpb24+CisgICAgcm91dGluZS4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgQmVmb3JlIGludmVudGluZyB5b3VyIG93biBjYWNoZSBvZiBvZnRlbi11c2VkIG9iamVjdHMgY29uc2lkZXIKKyAgICB1c2luZyBhIHNsYWIgY2FjaGUgaW4KKyAgICA8ZmlsZW5hbWUgY2xhc3M9ImhlYWRlcmZpbGUiPmluY2x1ZGUvbGludXgvc2xhYi5oPC9maWxlbmFtZT4KKyAgIDwvcGFyYT4KKyAgPC9zZWN0MT4KKworICA8c2VjdDEgaWQ9InJvdXRpbmVzLWN1cnJlbnQiPgorICAgPHRpdGxlPjxmdW5jdGlvbj5jdXJyZW50PC9mdW5jdGlvbj4KKyAgICA8ZmlsZW5hbWUgY2xhc3M9ImhlYWRlcmZpbGUiPmluY2x1ZGUvYXNtL2N1cnJlbnQuaDwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgPHBhcmE+CisgICAgVGhpcyBnbG9iYWwgdmFyaWFibGUgKHJlYWxseSBhIG1hY3JvKSBjb250YWlucyBhIHBvaW50ZXIgdG8KKyAgICB0aGUgY3VycmVudCB0YXNrIHN0cnVjdHVyZSwgc28gaXMgb25seSB2YWxpZCBpbiB1c2VyIGNvbnRleHQuCisgICAgRm9yIGV4YW1wbGUsIHdoZW4gYSBwcm9jZXNzIG1ha2VzIGEgc3lzdGVtIGNhbGwsIHRoaXMgd2lsbAorICAgIHBvaW50IHRvIHRoZSB0YXNrIHN0cnVjdHVyZSBvZiB0aGUgY2FsbGluZyBwcm9jZXNzLiAgSXQgaXMKKyAgICA8ZW1waGFzaXM+bm90IE5VTEw8L2VtcGhhc2lzPiBpbiBpbnRlcnJ1cHQgY29udGV4dC4KKyAgIDwvcGFyYT4KKyAgPC9zZWN0MT4KKworICA8c2VjdDEgaWQ9InJvdXRpbmVzLXVkZWxheSI+CisgICA8dGl0bGU+PGZ1bmN0aW9uPm1kZWxheSgpPC9mdW5jdGlvbj4vPGZ1bmN0aW9uPnVkZWxheSgpPC9mdW5jdGlvbj4KKyAgICAgPGZpbGVuYW1lIGNsYXNzPSJoZWFkZXJmaWxlIj5pbmNsdWRlL2FzbS9kZWxheS5oPC9maWxlbmFtZT4KKyAgICAgPGZpbGVuYW1lIGNsYXNzPSJoZWFkZXJmaWxlIj5pbmNsdWRlL2xpbnV4L2RlbGF5Lmg8L2ZpbGVuYW1lPgorICAgPC90aXRsZT4KKworICAgPHBhcmE+CisgICAgVGhlIDxmdW5jdGlvbj51ZGVsYXkoKTwvZnVuY3Rpb24+IGFuZCA8ZnVuY3Rpb24+bmRlbGF5KCk8L2Z1bmN0aW9uPiBmdW5jdGlvbnMgY2FuIGJlIHVzZWQgZm9yIHNtYWxsIHBhdXNlcy4KKyAgICBEbyBub3QgdXNlIGxhcmdlIHZhbHVlcyB3aXRoIHRoZW0gYXMgeW91IHJpc2sKKyAgICBvdmVyZmxvdyAtIHRoZSBoZWxwZXIgZnVuY3Rpb24gPGZ1bmN0aW9uPm1kZWxheSgpPC9mdW5jdGlvbj4gaXMgdXNlZnVsCisgICAgaGVyZSwgb3IgY29uc2lkZXIgPGZ1bmN0aW9uPm1zbGVlcCgpPC9mdW5jdGlvbj4uCisgICA8L3BhcmE+IAorICA8L3NlY3QxPgorIAorICA8c2VjdDEgaWQ9InJvdXRpbmVzLWVuZGlhbiI+CisgICA8dGl0bGU+PGZ1bmN0aW9uPmNwdV90b19iZTMyKCk8L2Z1bmN0aW9uPi88ZnVuY3Rpb24+YmUzMl90b19jcHUoKTwvZnVuY3Rpb24+LzxmdW5jdGlvbj5jcHVfdG9fbGUzMigpPC9mdW5jdGlvbj4vPGZ1bmN0aW9uPmxlMzJfdG9fY3B1KCk8L2Z1bmN0aW9uPgorICAgICA8ZmlsZW5hbWUgY2xhc3M9ImhlYWRlcmZpbGUiPmluY2x1ZGUvYXNtL2J5dGVvcmRlci5oPC9maWxlbmFtZT4KKyAgIDwvdGl0bGU+CisKKyAgIDxwYXJhPgorICAgIFRoZSA8ZnVuY3Rpb24+Y3B1X3RvX2JlMzIoKTwvZnVuY3Rpb24+IGZhbWlseSAod2hlcmUgdGhlICIzMiIgY2FuCisgICAgYmUgcmVwbGFjZWQgYnkgNjQgb3IgMTYsIGFuZCB0aGUgImJlIiBjYW4gYmUgcmVwbGFjZWQgYnkgImxlIikgYXJlCisgICAgdGhlIGdlbmVyYWwgd2F5IHRvIGRvIGVuZGlhbiBjb252ZXJzaW9ucyBpbiB0aGUga2VybmVsOiB0aGV5CisgICAgcmV0dXJuIHRoZSBjb252ZXJ0ZWQgdmFsdWUuICBBbGwgdmFyaWF0aW9ucyBzdXBwbHkgdGhlIHJldmVyc2UgYXMKKyAgICB3ZWxsOiA8ZnVuY3Rpb24+YmUzMl90b19jcHUoKTwvZnVuY3Rpb24+LCBldGMuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIFRoZXJlIGFyZSB0d28gbWFqb3IgdmFyaWF0aW9ucyBvZiB0aGVzZSBmdW5jdGlvbnM6IHRoZSBwb2ludGVyCisgICAgdmFyaWF0aW9uLCBzdWNoIGFzIDxmdW5jdGlvbj5jcHVfdG9fYmUzMnAoKTwvZnVuY3Rpb24+LCB3aGljaCB0YWtlCisgICAgYSBwb2ludGVyIHRvIHRoZSBnaXZlbiB0eXBlLCBhbmQgcmV0dXJuIHRoZSBjb252ZXJ0ZWQgdmFsdWUuICBUaGUKKyAgICBvdGhlciB2YXJpYXRpb24gaXMgdGhlICJpbi1zaXR1IiBmYW1pbHksIHN1Y2ggYXMKKyAgICA8ZnVuY3Rpb24+Y3B1X3RvX2JlMzJzKCk8L2Z1bmN0aW9uPiwgd2hpY2ggY29udmVydCB2YWx1ZSByZWZlcnJlZAorICAgIHRvIGJ5IHRoZSBwb2ludGVyLCBhbmQgcmV0dXJuIHZvaWQuCisgICA8L3BhcmE+IAorICA8L3NlY3QxPgorCisgIDxzZWN0MSBpZD0icm91dGluZXMtbG9jYWwtaXJxcyI+CisgICA8dGl0bGU+PGZ1bmN0aW9uPmxvY2FsX2lycV9zYXZlKCk8L2Z1bmN0aW9uPi88ZnVuY3Rpb24+bG9jYWxfaXJxX3Jlc3RvcmUoKTwvZnVuY3Rpb24+CisgICAgPGZpbGVuYW1lIGNsYXNzPSJoZWFkZXJmaWxlIj5pbmNsdWRlL2xpbnV4L2lycWZsYWdzLmg8L2ZpbGVuYW1lPgorICAgPC90aXRsZT4KKworICAgPHBhcmE+CisgICAgVGhlc2Ugcm91dGluZXMgZGlzYWJsZSBoYXJkIGludGVycnVwdHMgb24gdGhlIGxvY2FsIENQVSwgYW5kCisgICAgcmVzdG9yZSB0aGVtLiAgVGhleSBhcmUgcmVlbnRyYW50OyBzYXZpbmcgdGhlIHByZXZpb3VzIHN0YXRlIGluCisgICAgdGhlaXIgb25lIDx2YXJuYW1lPnVuc2lnbmVkIGxvbmcgZmxhZ3M8L3Zhcm5hbWU+IGFyZ3VtZW50LiAgSWYgeW91CisgICAga25vdyB0aGF0IGludGVycnVwdHMgYXJlIGVuYWJsZWQsIHlvdSBjYW4gc2ltcGx5IHVzZQorICAgIDxmdW5jdGlvbj5sb2NhbF9pcnFfZGlzYWJsZSgpPC9mdW5jdGlvbj4gYW5kCisgICAgPGZ1bmN0aW9uPmxvY2FsX2lycV9lbmFibGUoKTwvZnVuY3Rpb24+LgorICAgPC9wYXJhPgorICA8L3NlY3QxPgorCisgIDxzZWN0MSBpZD0icm91dGluZXMtc29mdGlycXMiPgorICAgPHRpdGxlPjxmdW5jdGlvbj5sb2NhbF9iaF9kaXNhYmxlKCk8L2Z1bmN0aW9uPi88ZnVuY3Rpb24+bG9jYWxfYmhfZW5hYmxlKCk8L2Z1bmN0aW9uPgorICAgIDxmaWxlbmFtZSBjbGFzcz0iaGVhZGVyZmlsZSI+aW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaDwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgPHBhcmE+CisgICAgVGhlc2Ugcm91dGluZXMgZGlzYWJsZSBzb2Z0IGludGVycnVwdHMgb24gdGhlIGxvY2FsIENQVSwgYW5kCisgICAgcmVzdG9yZSB0aGVtLiAgVGhleSBhcmUgcmVlbnRyYW50OyBpZiBzb2Z0IGludGVycnVwdHMgd2VyZQorICAgIGRpc2FibGVkIGJlZm9yZSwgdGhleSB3aWxsIHN0aWxsIGJlIGRpc2FibGVkIGFmdGVyIHRoaXMgcGFpcgorICAgIG9mIGZ1bmN0aW9ucyBoYXMgYmVlbiBjYWxsZWQuICBUaGV5IHByZXZlbnQgc29mdGlycXMgYW5kIHRhc2tsZXRzCisgICAgZnJvbSBydW5uaW5nIG9uIHRoZSBjdXJyZW50IENQVS4KKyAgIDwvcGFyYT4KKyAgPC9zZWN0MT4KKworICA8c2VjdDEgaWQ9InJvdXRpbmVzLXByb2Nlc3NvcmlkcyI+CisgICA8dGl0bGU+PGZ1bmN0aW9uPnNtcF9wcm9jZXNzb3JfaWQ8L2Z1bmN0aW9uPigpCisgICAgPGZpbGVuYW1lIGNsYXNzPSJoZWFkZXJmaWxlIj5pbmNsdWRlL2FzbS9zbXAuaDwvZmlsZW5hbWU+PC90aXRsZT4KKyAgIAorICAgPHBhcmE+CisgICAgPGZ1bmN0aW9uPmdldF9jcHUoKTwvZnVuY3Rpb24+IGRpc2FibGVzIHByZWVtcHRpb24gKHNvIHlvdSB3b24ndAorICAgIHN1ZGRlbmx5IGdldCBtb3ZlZCB0byBhbm90aGVyIENQVSkgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQKKyAgICBwcm9jZXNzb3IgbnVtYmVyLCBiZXR3ZWVuIDAgYW5kIDxzeW1ib2w+TlJfQ1BVUzwvc3ltYm9sPi4gIE5vdGUKKyAgICB0aGF0IHRoZSBDUFUgbnVtYmVycyBhcmUgbm90IG5lY2Vzc2FyaWx5IGNvbnRpbnVvdXMuICBZb3UgcmV0dXJuCisgICAgaXQgYWdhaW4gd2l0aCA8ZnVuY3Rpb24+cHV0X2NwdSgpPC9mdW5jdGlvbj4gd2hlbiB5b3UgYXJlIGRvbmUuCisgICA8L3BhcmE+CisgICA8cGFyYT4KKyAgICBJZiB5b3Uga25vdyB5b3UgY2Fubm90IGJlIHByZWVtcHRlZCBieSBhbm90aGVyIHRhc2sgKGllLiB5b3UgYXJlCisgICAgaW4gaW50ZXJydXB0IGNvbnRleHQsIG9yIGhhdmUgcHJlZW1wdGlvbiBkaXNhYmxlZCkgeW91IGNhbiB1c2UKKyAgICBzbXBfcHJvY2Vzc29yX2lkKCkuCisgICA8L3BhcmE+CisgIDwvc2VjdDE+CisKKyAgPHNlY3QxIGlkPSJyb3V0aW5lcy1pbml0Ij4KKyAgIDx0aXRsZT48dHlwZT5fX2luaXQ8L3R5cGU+Lzx0eXBlPl9fZXhpdDwvdHlwZT4vPHR5cGU+X19pbml0ZGF0YTwvdHlwZT4KKyAgICA8ZmlsZW5hbWUgY2xhc3M9ImhlYWRlcmZpbGUiPmluY2x1ZGUvbGludXgvaW5pdC5oPC9maWxlbmFtZT48L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBBZnRlciBib290LCB0aGUga2VybmVsIGZyZWVzIHVwIGEgc3BlY2lhbCBzZWN0aW9uOyBmdW5jdGlvbnMKKyAgICBtYXJrZWQgd2l0aCA8dHlwZT5fX2luaXQ8L3R5cGU+IGFuZCBkYXRhIHN0cnVjdHVyZXMgbWFya2VkIHdpdGgKKyAgICA8dHlwZT5fX2luaXRkYXRhPC90eXBlPiBhcmUgZHJvcHBlZCBhZnRlciBib290IGlzIGNvbXBsZXRlOiBzaW1pbGFybHkKKyAgICBtb2R1bGVzIGRpc2NhcmQgdGhpcyBtZW1vcnkgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uICA8dHlwZT5fX2V4aXQ8L3R5cGU+CisgICAgaXMgdXNlZCB0byBkZWNsYXJlIGEgZnVuY3Rpb24gd2hpY2ggaXMgb25seSByZXF1aXJlZCBvbiBleGl0OiB0aGUKKyAgICBmdW5jdGlvbiB3aWxsIGJlIGRyb3BwZWQgaWYgdGhpcyBmaWxlIGlzIG5vdCBjb21waWxlZCBhcyBhIG1vZHVsZS4KKyAgICBTZWUgdGhlIGhlYWRlciBmaWxlIGZvciB1c2UuIE5vdGUgdGhhdCBpdCBtYWtlcyBubyBzZW5zZSBmb3IgYSBmdW5jdGlvbgorICAgIG1hcmtlZCB3aXRoIDx0eXBlPl9faW5pdDwvdHlwZT4gdG8gYmUgZXhwb3J0ZWQgdG8gbW9kdWxlcyB3aXRoIAorICAgIDxmdW5jdGlvbj5FWFBPUlRfU1lNQk9MKCk8L2Z1bmN0aW9uPiAtIHRoaXMgd2lsbCBicmVhay4KKyAgIDwvcGFyYT4KKworICA8L3NlY3QxPgorCisgIDxzZWN0MSBpZD0icm91dGluZXMtaW5pdC1hZ2FpbiI+CisgICA8dGl0bGU+PGZ1bmN0aW9uPl9faW5pdGNhbGwoKTwvZnVuY3Rpb24+LzxmdW5jdGlvbj5tb2R1bGVfaW5pdCgpPC9mdW5jdGlvbj4KKyAgICA8ZmlsZW5hbWUgY2xhc3M9ImhlYWRlcmZpbGUiPmluY2x1ZGUvbGludXgvaW5pdC5oPC9maWxlbmFtZT48L3RpdGxlPgorICAgPHBhcmE+CisgICAgTWFueSBwYXJ0cyBvZiB0aGUga2VybmVsIGFyZSB3ZWxsIHNlcnZlZCBhcyBhIG1vZHVsZQorICAgIChkeW5hbWljYWxseS1sb2FkYWJsZSBwYXJ0cyBvZiB0aGUga2VybmVsKS4gIFVzaW5nIHRoZQorICAgIDxmdW5jdGlvbj5tb2R1bGVfaW5pdCgpPC9mdW5jdGlvbj4gYW5kCisgICAgPGZ1bmN0aW9uPm1vZHVsZV9leGl0KCk8L2Z1bmN0aW9uPiBtYWNyb3MgaXQgaXMgZWFzeSB0byB3cml0ZSBjb2RlCisgICAgd2l0aG91dCAjaWZkZWZzIHdoaWNoIGNhbiBvcGVyYXRlIGJvdGggYXMgYSBtb2R1bGUgb3IgYnVpbHQgaW50bworICAgIHRoZSBrZXJuZWwuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIFRoZSA8ZnVuY3Rpb24+bW9kdWxlX2luaXQoKTwvZnVuY3Rpb24+IG1hY3JvIGRlZmluZXMgd2hpY2gKKyAgICBmdW5jdGlvbiBpcyB0byBiZSBjYWxsZWQgYXQgbW9kdWxlIGluc2VydGlvbiB0aW1lIChpZiB0aGUgZmlsZSBpcworICAgIGNvbXBpbGVkIGFzIGEgbW9kdWxlKSwgb3IgYXQgYm9vdCB0aW1lOiBpZiB0aGUgZmlsZSBpcyBub3QKKyAgICBjb21waWxlZCBhcyBhIG1vZHVsZSB0aGUgPGZ1bmN0aW9uPm1vZHVsZV9pbml0KCk8L2Z1bmN0aW9uPiBtYWNybworICAgIGJlY29tZXMgZXF1aXZhbGVudCB0byA8ZnVuY3Rpb24+X19pbml0Y2FsbCgpPC9mdW5jdGlvbj4sIHdoaWNoCisgICAgdGhyb3VnaCBsaW5rZXIgbWFnaWMgZW5zdXJlcyB0aGF0IHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgb24gYm9vdC4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgVGhlIGZ1bmN0aW9uIGNhbiByZXR1cm4gYSBuZWdhdGl2ZSBlcnJvciBudW1iZXIgdG8gY2F1c2UKKyAgICBtb2R1bGUgbG9hZGluZyB0byBmYWlsICh1bmZvcnR1bmF0ZWx5LCB0aGlzIGhhcyBubyBlZmZlY3QgaWYKKyAgICB0aGUgbW9kdWxlIGlzIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCkuICBUaGlzIGZ1bmN0aW9uIGlzCisgICAgY2FsbGVkIGluIHVzZXIgY29udGV4dCB3aXRoIGludGVycnVwdHMgZW5hYmxlZCwgc28gaXQgY2FuIHNsZWVwLgorICAgPC9wYXJhPgorICA8L3NlY3QxPgorICAKKyAgPHNlY3QxIGlkPSJyb3V0aW5lcy1tb2R1bGVleGl0Ij4KKyAgIDx0aXRsZT4gPGZ1bmN0aW9uPm1vZHVsZV9leGl0KCk8L2Z1bmN0aW9uPgorICAgIDxmaWxlbmFtZSBjbGFzcz0iaGVhZGVyZmlsZSI+aW5jbHVkZS9saW51eC9pbml0Lmg8L2ZpbGVuYW1lPiA8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBUaGlzIG1hY3JvIGRlZmluZXMgdGhlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhdCBtb2R1bGUgcmVtb3ZhbAorICAgIHRpbWUgKG9yIG5ldmVyLCBpbiB0aGUgY2FzZSBvZiB0aGUgZmlsZSBjb21waWxlZCBpbnRvIHRoZQorICAgIGtlcm5lbCkuICBJdCB3aWxsIG9ubHkgYmUgY2FsbGVkIGlmIHRoZSBtb2R1bGUgdXNhZ2UgY291bnQgaGFzCisgICAgcmVhY2hlZCB6ZXJvLiAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBzbGVlcCwgYnV0IGNhbm5vdCBmYWlsOgorICAgIGV2ZXJ5dGhpbmcgbXVzdCBiZSBjbGVhbmVkIHVwIGJ5IHRoZSB0aW1lIGl0IHJldHVybnMuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIE5vdGUgdGhhdCB0aGlzIG1hY3JvIGlzIG9wdGlvbmFsOiBpZiBpdCBpcyBub3QgcHJlc2VudCwgeW91cgorICAgIG1vZHVsZSB3aWxsIG5vdCBiZSByZW1vdmFibGUgKGV4Y2VwdCBmb3IgJ3JtbW9kIC1mJykuCisgICA8L3BhcmE+CisgIDwvc2VjdDE+CisKKyAgPHNlY3QxIGlkPSJyb3V0aW5lcy1tb2R1bGUtdXNlLWNvdW50ZXJzIj4KKyAgIDx0aXRsZT4gPGZ1bmN0aW9uPnRyeV9tb2R1bGVfZ2V0KCk8L2Z1bmN0aW9uPi88ZnVuY3Rpb24+bW9kdWxlX3B1dCgpPC9mdW5jdGlvbj4KKyAgICA8ZmlsZW5hbWUgY2xhc3M9ImhlYWRlcmZpbGUiPmluY2x1ZGUvbGludXgvbW9kdWxlLmg8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgIDxwYXJhPgorICAgIFRoZXNlIG1hbmlwdWxhdGUgdGhlIG1vZHVsZSB1c2FnZSBjb3VudCwgdG8gcHJvdGVjdCBhZ2FpbnN0CisgICAgcmVtb3ZhbCAoYSBtb2R1bGUgYWxzbyBjYW4ndCBiZSByZW1vdmVkIGlmIGFub3RoZXIgbW9kdWxlIHVzZXMgb25lCisgICAgb2YgaXRzIGV4cG9ydGVkIHN5bWJvbHM6IHNlZSBiZWxvdykuICBCZWZvcmUgY2FsbGluZyBpbnRvIG1vZHVsZQorICAgIGNvZGUsIHlvdSBzaG91bGQgY2FsbCA8ZnVuY3Rpb24+dHJ5X21vZHVsZV9nZXQoKTwvZnVuY3Rpb24+IG9uCisgICAgdGhhdCBtb2R1bGU6IGlmIGl0IGZhaWxzLCB0aGVuIHRoZSBtb2R1bGUgaXMgYmVpbmcgcmVtb3ZlZCBhbmQgeW91CisgICAgc2hvdWxkIGFjdCBhcyBpZiBpdCB3YXNuJ3QgdGhlcmUuICBPdGhlcndpc2UsIHlvdSBjYW4gc2FmZWx5IGVudGVyCisgICAgdGhlIG1vZHVsZSwgYW5kIGNhbGwgPGZ1bmN0aW9uPm1vZHVsZV9wdXQoKTwvZnVuY3Rpb24+IHdoZW4geW91J3JlCisgICAgZmluaXNoZWQuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgTW9zdCByZWdpc3RlcmFibGUgc3RydWN0dXJlcyBoYXZlIGFuCisgICA8c3RydWN0ZmllbGQ+b3duZXI8L3N0cnVjdGZpZWxkPiBmaWVsZCwgc3VjaCBhcyBpbiB0aGUKKyAgIDxzdHJ1Y3RuYW1lPmZpbGVfb3BlcmF0aW9uczwvc3RydWN0bmFtZT4gc3RydWN0dXJlLiBTZXQgdGhpcyBmaWVsZAorICAgdG8gdGhlIG1hY3JvIDxzeW1ib2w+VEhJU19NT0RVTEU8L3N5bWJvbD4uCisgICA8L3BhcmE+CisgIDwvc2VjdDE+CisKKyA8IS0tIGFkZCBpbmZvIG9uIG5ldy1zdHlsZSBtb2R1bGUgcmVmY291bnRpbmcgaGVyZSAtLT4KKyA8L2NoYXB0ZXI+CisKKyA8Y2hhcHRlciBpZD0icXVldWVzIj4KKyAgPHRpdGxlPldhaXQgUXVldWVzCisgICA8ZmlsZW5hbWUgY2xhc3M9ImhlYWRlcmZpbGUiPmluY2x1ZGUvbGludXgvd2FpdC5oPC9maWxlbmFtZT4KKyAgPC90aXRsZT4KKyAgPHBhcmE+CisgICA8ZW1waGFzaXM+W1NMRUVQU108L2VtcGhhc2lzPgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBBIHdhaXQgcXVldWUgaXMgdXNlZCB0byB3YWl0IGZvciBzb21lb25lIHRvIHdha2UgeW91IHVwIHdoZW4gYQorICAgY2VydGFpbiBjb25kaXRpb24gaXMgdHJ1ZS4gIFRoZXkgbXVzdCBiZSB1c2VkIGNhcmVmdWxseSB0byBlbnN1cmUKKyAgIHRoZXJlIGlzIG5vIHJhY2UgY29uZGl0aW9uLiAgWW91IGRlY2xhcmUgYQorICAgPHR5cGU+d2FpdF9xdWV1ZV9oZWFkX3Q8L3R5cGU+LCBhbmQgdGhlbiBwcm9jZXNzZXMgd2hpY2ggd2FudCB0bworICAgd2FpdCBmb3IgdGhhdCBjb25kaXRpb24gZGVjbGFyZSBhIDx0eXBlPndhaXRfcXVldWVfdDwvdHlwZT4KKyAgIHJlZmVycmluZyB0byB0aGVtc2VsdmVzLCBhbmQgcGxhY2UgdGhhdCBpbiB0aGUgcXVldWUuCisgIDwvcGFyYT4KKworICA8c2VjdDEgaWQ9InF1ZXVlLWRlY2xhcmluZyI+CisgICA8dGl0bGU+RGVjbGFyaW5nPC90aXRsZT4KKyAgIAorICAgPHBhcmE+CisgICAgWW91IGRlY2xhcmUgYSA8dHlwZT53YWl0X3F1ZXVlX2hlYWRfdDwvdHlwZT4gdXNpbmcgdGhlCisgICAgPGZ1bmN0aW9uPkRFQ0xBUkVfV0FJVF9RVUVVRV9IRUFEKCk8L2Z1bmN0aW9uPiBtYWNybywgb3IgdXNpbmcgdGhlCisgICAgPGZ1bmN0aW9uPmluaXRfd2FpdHF1ZXVlX2hlYWQoKTwvZnVuY3Rpb24+IHJvdXRpbmUgaW4geW91cgorICAgIGluaXRpYWxpemF0aW9uIGNvZGUuCisgICA8L3BhcmE+CisgIDwvc2VjdDE+CisgIAorICA8c2VjdDEgaWQ9InF1ZXVlLXdhaXRxdWV1ZSI+CisgICA8dGl0bGU+UXVldWluZzwvdGl0bGU+CisgICAKKyAgIDxwYXJhPgorICAgIFBsYWNpbmcgeW91cnNlbGYgaW4gdGhlIHdhaXRxdWV1ZSBpcyBmYWlybHkgY29tcGxleCwgYmVjYXVzZSB5b3UKKyAgICBtdXN0IHB1dCB5b3Vyc2VsZiBpbiB0aGUgcXVldWUgYmVmb3JlIGNoZWNraW5nIHRoZSBjb25kaXRpb24uCisgICAgVGhlcmUgaXMgYSBtYWNybyB0byBkbyB0aGlzOgorICAgIDxmdW5jdGlvbj53YWl0X2V2ZW50X2ludGVycnVwdGlibGUoKTwvZnVuY3Rpb24+CisKKyAgICA8ZmlsZW5hbWUgY2xhc3M9ImhlYWRlcmZpbGUiPmluY2x1ZGUvbGludXgvd2FpdC5oPC9maWxlbmFtZT4gVGhlCisgICAgZmlyc3QgYXJndW1lbnQgaXMgdGhlIHdhaXQgcXVldWUgaGVhZCwgYW5kIHRoZSBzZWNvbmQgaXMgYW4KKyAgICBleHByZXNzaW9uIHdoaWNoIGlzIGV2YWx1YXRlZDsgdGhlIG1hY3JvIHJldHVybnMKKyAgICA8cmV0dXJudmFsdWU+MDwvcmV0dXJudmFsdWU+IHdoZW4gdGhpcyBleHByZXNzaW9uIGlzIHRydWUsIG9yCisgICAgPHJldHVybnZhbHVlPi1FUkVTVEFSVFNZUzwvcmV0dXJudmFsdWU+IGlmIGEgc2lnbmFsIGlzIHJlY2VpdmVkLgorICAgIFRoZSA8ZnVuY3Rpb24+d2FpdF9ldmVudCgpPC9mdW5jdGlvbj4gdmVyc2lvbiBpZ25vcmVzIHNpZ25hbHMuCisgICA8L3BhcmE+CisgCisgIDwvc2VjdDE+CisKKyAgPHNlY3QxIGlkPSJxdWV1ZS13YWtpbmciPgorICAgPHRpdGxlPldha2luZyBVcCBRdWV1ZWQgVGFza3M8L3RpdGxlPgorICAgCisgICA8cGFyYT4KKyAgICBDYWxsIDxmdW5jdGlvbj53YWtlX3VwKCk8L2Z1bmN0aW9uPgorCisgICAgPGZpbGVuYW1lIGNsYXNzPSJoZWFkZXJmaWxlIj5pbmNsdWRlL2xpbnV4L3dhaXQuaDwvZmlsZW5hbWU+OywKKyAgICB3aGljaCB3aWxsIHdha2UgdXAgZXZlcnkgcHJvY2VzcyBpbiB0aGUgcXVldWUuICBUaGUgZXhjZXB0aW9uIGlzCisgICAgaWYgb25lIGhhcyA8Y29uc3RhbnQ+VEFTS19FWENMVVNJVkU8L2NvbnN0YW50PiBzZXQsIGluIHdoaWNoIGNhc2UKKyAgICB0aGUgcmVtYWluZGVyIG9mIHRoZSBxdWV1ZSB3aWxsIG5vdCBiZSB3b2tlbi4gIFRoZXJlIGFyZSBvdGhlciB2YXJpYW50cworICAgIG9mIHRoaXMgYmFzaWMgZnVuY3Rpb24gYXZhaWxhYmxlIGluIHRoZSBzYW1lIGhlYWRlci4KKyAgIDwvcGFyYT4KKyAgPC9zZWN0MT4KKyA8L2NoYXB0ZXI+CisKKyA8Y2hhcHRlciBpZD0iYXRvbWljLW9wcyI+CisgIDx0aXRsZT5BdG9taWMgT3BlcmF0aW9uczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBDZXJ0YWluIG9wZXJhdGlvbnMgYXJlIGd1YXJhbnRlZWQgYXRvbWljIG9uIGFsbCBwbGF0Zm9ybXMuICBUaGUKKyAgIGZpcnN0IGNsYXNzIG9mIG9wZXJhdGlvbnMgd29yayBvbiA8dHlwZT5hdG9taWNfdDwvdHlwZT4KKworICAgPGZpbGVuYW1lIGNsYXNzPSJoZWFkZXJmaWxlIj5pbmNsdWRlL2FzbS9hdG9taWMuaDwvZmlsZW5hbWU+OyB0aGlzCisgICBjb250YWlucyBhIHNpZ25lZCBpbnRlZ2VyIChhdCBsZWFzdCAzMiBiaXRzIGxvbmcpLCBhbmQgeW91IG11c3QgdXNlCisgICB0aGVzZSBmdW5jdGlvbnMgdG8gbWFuaXB1bGF0ZSBvciByZWFkIGF0b21pY190IHZhcmlhYmxlcy4KKyAgIDxmdW5jdGlvbj5hdG9taWNfcmVhZCgpPC9mdW5jdGlvbj4gYW5kCisgICA8ZnVuY3Rpb24+YXRvbWljX3NldCgpPC9mdW5jdGlvbj4gZ2V0IGFuZCBzZXQgdGhlIGNvdW50ZXIsCisgICA8ZnVuY3Rpb24+YXRvbWljX2FkZCgpPC9mdW5jdGlvbj4sCisgICA8ZnVuY3Rpb24+YXRvbWljX3N1YigpPC9mdW5jdGlvbj4sCisgICA8ZnVuY3Rpb24+YXRvbWljX2luYygpPC9mdW5jdGlvbj4sCisgICA8ZnVuY3Rpb24+YXRvbWljX2RlYygpPC9mdW5jdGlvbj4sIGFuZAorICAgPGZ1bmN0aW9uPmF0b21pY19kZWNfYW5kX3Rlc3QoKTwvZnVuY3Rpb24+IChyZXR1cm5zCisgICA8cmV0dXJudmFsdWU+dHJ1ZTwvcmV0dXJudmFsdWU+IGlmIGl0IHdhcyBkZWNyZW1lbnRlZCB0byB6ZXJvKS4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgWWVzLiAgSXQgcmV0dXJucyA8cmV0dXJudmFsdWU+dHJ1ZTwvcmV0dXJudmFsdWU+IChpLmUuICE9IDApIGlmIHRoZQorICAgYXRvbWljIHZhcmlhYmxlIGlzIHplcm8uCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIE5vdGUgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIHNsb3dlciB0aGFuIG5vcm1hbCBhcml0aG1ldGljLCBhbmQKKyAgIHNvIHNob3VsZCBub3QgYmUgdXNlZCB1bm5lY2Vzc2FyaWx5LgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGUgc2Vjb25kIGNsYXNzIG9mIGF0b21pYyBvcGVyYXRpb25zIGlzIGF0b21pYyBiaXQgb3BlcmF0aW9ucyBvbiBhbgorICAgPHR5cGU+dW5zaWduZWQgbG9uZzwvdHlwZT4sIGRlZmluZWQgaW4KKworICAgPGZpbGVuYW1lIGNsYXNzPSJoZWFkZXJmaWxlIj5pbmNsdWRlL2xpbnV4L2JpdG9wcy5oPC9maWxlbmFtZT4uICBUaGVzZQorICAgb3BlcmF0aW9ucyBnZW5lcmFsbHkgdGFrZSBhIHBvaW50ZXIgdG8gdGhlIGJpdCBwYXR0ZXJuLCBhbmQgYSBiaXQKKyAgIG51bWJlcjogMCBpcyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0LgorICAgPGZ1bmN0aW9uPnNldF9iaXQoKTwvZnVuY3Rpb24+LCA8ZnVuY3Rpb24+Y2xlYXJfYml0KCk8L2Z1bmN0aW9uPgorICAgYW5kIDxmdW5jdGlvbj5jaGFuZ2VfYml0KCk8L2Z1bmN0aW9uPiBzZXQsIGNsZWFyLCBhbmQgZmxpcCB0aGUKKyAgIGdpdmVuIGJpdC4gIDxmdW5jdGlvbj50ZXN0X2FuZF9zZXRfYml0KCk8L2Z1bmN0aW9uPiwKKyAgIDxmdW5jdGlvbj50ZXN0X2FuZF9jbGVhcl9iaXQoKTwvZnVuY3Rpb24+IGFuZAorICAgPGZ1bmN0aW9uPnRlc3RfYW5kX2NoYW5nZV9iaXQoKTwvZnVuY3Rpb24+IGRvIHRoZSBzYW1lIHRoaW5nLAorICAgZXhjZXB0IHJldHVybiB0cnVlIGlmIHRoZSBiaXQgd2FzIHByZXZpb3VzbHkgc2V0OyB0aGVzZSBhcmUKKyAgIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGF0b21pY2FsbHkgc2V0dGluZyBmbGFncy4KKyAgPC9wYXJhPgorICAKKyAgPHBhcmE+CisgICBJdCBpcyBwb3NzaWJsZSB0byBjYWxsIHRoZXNlIG9wZXJhdGlvbnMgd2l0aCBiaXQgaW5kaWNlcyBncmVhdGVyCisgICB0aGFuIEJJVFNfUEVSX0xPTkcuICBUaGUgcmVzdWx0aW5nIGJlaGF2aW9yIGlzIHN0cmFuZ2Ugb24gYmlnLWVuZGlhbgorICAgcGxhdGZvcm1zIHRob3VnaCBzbyBpdCBpcyBhIGdvb2QgaWRlYSBub3QgdG8gZG8gdGhpcy4KKyAgPC9wYXJhPgorIDwvY2hhcHRlcj4KKworIDxjaGFwdGVyIGlkPSJzeW1ib2xzIj4KKyAgPHRpdGxlPlN5bWJvbHM8L3RpdGxlPgorCisgIDxwYXJhPgorICAgV2l0aGluIHRoZSBrZXJuZWwgcHJvcGVyLCB0aGUgbm9ybWFsIGxpbmtpbmcgcnVsZXMgYXBwbHkKKyAgIChpZS4gdW5sZXNzIGEgc3ltYm9sIGlzIGRlY2xhcmVkIHRvIGJlIGZpbGUgc2NvcGUgd2l0aCB0aGUKKyAgIDx0eXBlPnN0YXRpYzwvdHlwZT4ga2V5d29yZCwgaXQgY2FuIGJlIHVzZWQgYW55d2hlcmUgaW4gdGhlCisgICBrZXJuZWwpLiAgSG93ZXZlciwgZm9yIG1vZHVsZXMsIGEgc3BlY2lhbCBleHBvcnRlZCBzeW1ib2wgdGFibGUgaXMKKyAgIGtlcHQgd2hpY2ggbGltaXRzIHRoZSBlbnRyeSBwb2ludHMgdG8gdGhlIGtlcm5lbCBwcm9wZXIuICBNb2R1bGVzCisgICBjYW4gYWxzbyBleHBvcnQgc3ltYm9scy4KKyAgPC9wYXJhPgorCisgIDxzZWN0MSBpZD0ic3ltLWV4cG9ydHN5bWJvbHMiPgorICAgPHRpdGxlPjxmdW5jdGlvbj5FWFBPUlRfU1lNQk9MKCk8L2Z1bmN0aW9uPgorICAgIDxmaWxlbmFtZSBjbGFzcz0iaGVhZGVyZmlsZSI+aW5jbHVkZS9saW51eC9leHBvcnQuaDwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgPHBhcmE+CisgICAgVGhpcyBpcyB0aGUgY2xhc3NpYyBtZXRob2Qgb2YgZXhwb3J0aW5nIGEgc3ltYm9sOiBkeW5hbWljYWxseQorICAgIGxvYWRlZCBtb2R1bGVzIHdpbGwgYmUgYWJsZSB0byB1c2UgdGhlIHN5bWJvbCBhcyBub3JtYWwuCisgICA8L3BhcmE+CisgIDwvc2VjdDE+CisKKyAgPHNlY3QxIGlkPSJzeW0tZXhwb3J0c3ltYm9scy1ncGwiPgorICAgPHRpdGxlPjxmdW5jdGlvbj5FWFBPUlRfU1lNQk9MX0dQTCgpPC9mdW5jdGlvbj4KKyAgICA8ZmlsZW5hbWUgY2xhc3M9ImhlYWRlcmZpbGUiPmluY2x1ZGUvbGludXgvZXhwb3J0Lmg8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgIDxwYXJhPgorICAgIFNpbWlsYXIgdG8gPGZ1bmN0aW9uPkVYUE9SVF9TWU1CT0woKTwvZnVuY3Rpb24+IGV4Y2VwdCB0aGF0IHRoZQorICAgIHN5bWJvbHMgZXhwb3J0ZWQgYnkgPGZ1bmN0aW9uPkVYUE9SVF9TWU1CT0xfR1BMKCk8L2Z1bmN0aW9uPiBjYW4KKyAgICBvbmx5IGJlIHNlZW4gYnkgbW9kdWxlcyB3aXRoIGEKKyAgICA8ZnVuY3Rpb24+TU9EVUxFX0xJQ0VOU0UoKTwvZnVuY3Rpb24+IHRoYXQgc3BlY2lmaWVzIGEgR1BMCisgICAgY29tcGF0aWJsZSBsaWNlbnNlLiAgSXQgaW1wbGllcyB0aGF0IHRoZSBmdW5jdGlvbiBpcyBjb25zaWRlcmVkCisgICAgYW4gaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gaXNzdWUsIGFuZCBub3QgcmVhbGx5IGFuIGludGVyZmFjZS4KKyAgICBTb21lIG1haW50YWluZXJzIGFuZCBkZXZlbG9wZXJzIG1heSBob3dldmVyCisgICAgcmVxdWlyZSBFWFBPUlRfU1lNQk9MX0dQTCgpIHdoZW4gYWRkaW5nIGFueSBuZXcgQVBJcyBvciBmdW5jdGlvbmFsaXR5LgorICAgPC9wYXJhPgorICA8L3NlY3QxPgorIDwvY2hhcHRlcj4KKworIDxjaGFwdGVyIGlkPSJjb252ZW50aW9ucyI+CisgIDx0aXRsZT5Sb3V0aW5lcyBhbmQgQ29udmVudGlvbnM8L3RpdGxlPgorCisgIDxzZWN0MSBpZD0iY29udmVudGlvbnMtZG91YmxlbGlua2VkbGlzdCI+CisgICA8dGl0bGU+RG91YmxlLWxpbmtlZCBsaXN0cworICAgIDxmaWxlbmFtZSBjbGFzcz0iaGVhZGVyZmlsZSI+aW5jbHVkZS9saW51eC9saXN0Lmg8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgIDxwYXJhPgorICAgIFRoZXJlIHVzZWQgdG8gYmUgdGhyZWUgc2V0cyBvZiBsaW5rZWQtbGlzdCByb3V0aW5lcyBpbiB0aGUga2VybmVsCisgICAgaGVhZGVycywgYnV0IHRoaXMgb25lIGlzIHRoZSB3aW5uZXIuICBJZiB5b3UgZG9uJ3QgaGF2ZSBzb21lCisgICAgcGFydGljdWxhciBwcmVzc2luZyBuZWVkIGZvciBhIHNpbmdsZSBsaXN0LCBpdCdzIGEgZ29vZCBjaG9pY2UuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIEluIHBhcnRpY3VsYXIsIDxmdW5jdGlvbj5saXN0X2Zvcl9lYWNoX2VudHJ5PC9mdW5jdGlvbj4gaXMgdXNlZnVsLgorICAgPC9wYXJhPgorICA8L3NlY3QxPgorCisgIDxzZWN0MSBpZD0iY29udmVudGlvbi1yZXR1cm5zIj4KKyAgIDx0aXRsZT5SZXR1cm4gQ29udmVudGlvbnM8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBGb3IgY29kZSBjYWxsZWQgaW4gdXNlciBjb250ZXh0LCBpdCdzIHZlcnkgY29tbW9uIHRvIGRlZnkgQworICAgIGNvbnZlbnRpb24sIGFuZCByZXR1cm4gPHJldHVybnZhbHVlPjA8L3JldHVybnZhbHVlPiBmb3Igc3VjY2VzcywKKyAgICBhbmQgYSBuZWdhdGl2ZSBlcnJvciBudW1iZXIKKyAgICAoZWcuIDxyZXR1cm52YWx1ZT4tRUZBVUxUPC9yZXR1cm52YWx1ZT4pIGZvciBmYWlsdXJlLiAgVGhpcyBjYW4gYmUKKyAgICB1bmludHVpdGl2ZSBhdCBmaXJzdCwgYnV0IGl0J3MgZmFpcmx5IHdpZGVzcHJlYWQgaW4gdGhlIGtlcm5lbC4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgVXNpbmcgPGZ1bmN0aW9uPkVSUl9QVFIoKTwvZnVuY3Rpb24+CisKKyAgICA8ZmlsZW5hbWUgY2xhc3M9ImhlYWRlcmZpbGUiPmluY2x1ZGUvbGludXgvZXJyLmg8L2ZpbGVuYW1lPjsgdG8KKyAgICBlbmNvZGUgYSBuZWdhdGl2ZSBlcnJvciBudW1iZXIgaW50byBhIHBvaW50ZXIsIGFuZAorICAgIDxmdW5jdGlvbj5JU19FUlIoKTwvZnVuY3Rpb24+IGFuZCA8ZnVuY3Rpb24+UFRSX0VSUigpPC9mdW5jdGlvbj4KKyAgICB0byBnZXQgaXQgYmFjayBvdXQgYWdhaW46IGF2b2lkcyBhIHNlcGFyYXRlIHBvaW50ZXIgcGFyYW1ldGVyIGZvcgorICAgIHRoZSBlcnJvciBudW1iZXIuICBJY2t5LCBidXQgaW4gYSBnb29kIHdheS4KKyAgIDwvcGFyYT4KKyAgPC9zZWN0MT4KKworICA8c2VjdDEgaWQ9ImNvbnZlbnRpb25zLWJvcmtlZGNvbXBpbGUiPgorICAgPHRpdGxlPkJyZWFraW5nIENvbXBpbGF0aW9uPC90aXRsZT4KKworICAgPHBhcmE+CisgICAgTGludXMgYW5kIHRoZSBvdGhlciBkZXZlbG9wZXJzIHNvbWV0aW1lcyBjaGFuZ2UgZnVuY3Rpb24gb3IKKyAgICBzdHJ1Y3R1cmUgbmFtZXMgaW4gZGV2ZWxvcG1lbnQga2VybmVsczsgdGhpcyBpcyBub3QgZG9uZSBqdXN0IHRvCisgICAga2VlcCBldmVyeW9uZSBvbiB0aGVpciB0b2VzOiBpdCByZWZsZWN0cyBhIGZ1bmRhbWVudGFsIGNoYW5nZQorICAgIChlZy4gY2FuIG5vIGxvbmdlciBiZSBjYWxsZWQgd2l0aCBpbnRlcnJ1cHRzIG9uLCBvciBkb2VzIGV4dHJhCisgICAgY2hlY2tzLCBvciBkb2Vzbid0IGRvIGNoZWNrcyB3aGljaCB3ZXJlIGNhdWdodCBiZWZvcmUpLiAgVXN1YWxseQorICAgIHRoaXMgaXMgYWNjb21wYW5pZWQgYnkgYSBmYWlybHkgY29tcGxldGUgbm90ZSB0byB0aGUgbGludXgta2VybmVsCisgICAgbWFpbGluZyBsaXN0OyBzZWFyY2ggdGhlIGFyY2hpdmUuICBTaW1wbHkgZG9pbmcgYSBnbG9iYWwgcmVwbGFjZQorICAgIG9uIHRoZSBmaWxlIHVzdWFsbHkgbWFrZXMgdGhpbmdzIDxlbXBoYXNpcz53b3JzZTwvZW1waGFzaXM+LgorICAgPC9wYXJhPgorICA8L3NlY3QxPgorCisgIDxzZWN0MSBpZD0iY29udmVudGlvbnMtaW5pdGlhbGlzaW5nIj4KKyAgIDx0aXRsZT5Jbml0aWFsaXppbmcgc3RydWN0dXJlIG1lbWJlcnM8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBUaGUgcHJlZmVycmVkIG1ldGhvZCBvZiBpbml0aWFsaXppbmcgc3RydWN0dXJlcyBpcyB0byB1c2UKKyAgICBkZXNpZ25hdGVkIGluaXRpYWxpc2VycywgYXMgZGVmaW5lZCBieSBJU08gQzk5LCBlZzoKKyAgIDwvcGFyYT4KKyAgIDxwcm9ncmFtbGlzdGluZz4KK3N0YXRpYyBzdHJ1Y3QgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgb3B0X2ZvcHMgPSB7CisgICAgICAgIC5vcGVuICAgICAgICAgICAgICAgPSBvcHRfb3BlbiwKKyAgICAgICAgLnJlbGVhc2UgICAgICAgICAgICA9IG9wdF9yZWxlYXNlLAorICAgICAgICAuaW9jdGwgICAgICAgICAgICAgID0gb3B0X2lvY3RsLAorICAgICAgICAuY2hlY2tfbWVkaWFfY2hhbmdlID0gb3B0X21lZGlhX2NoYW5nZSwKK307CisgICA8L3Byb2dyYW1saXN0aW5nPgorICAgPHBhcmE+CisgICAgVGhpcyBtYWtlcyBpdCBlYXN5IHRvIGdyZXAgZm9yLCBhbmQgbWFrZXMgaXQgY2xlYXIgd2hpY2gKKyAgICBzdHJ1Y3R1cmUgZmllbGRzIGFyZSBzZXQuICBZb3Ugc2hvdWxkIGRvIHRoaXMgYmVjYXVzZSBpdCBsb29rcworICAgIGNvb2wuCisgICA8L3BhcmE+CisgIDwvc2VjdDE+CisKKyAgPHNlY3QxIGlkPSJjb252ZW50aW9ucy1nbnUtZXh0bnMiPgorICAgPHRpdGxlPkdOVSBFeHRlbnNpb25zPC90aXRsZT4KKworICAgPHBhcmE+CisgICAgR05VIEV4dGVuc2lvbnMgYXJlIGV4cGxpY2l0bHkgYWxsb3dlZCBpbiB0aGUgTGludXgga2VybmVsLgorICAgIE5vdGUgdGhhdCBzb21lIG9mIHRoZSBtb3JlIGNvbXBsZXggb25lcyBhcmUgbm90IHZlcnkgd2VsbAorICAgIHN1cHBvcnRlZCwgZHVlIHRvIGxhY2sgb2YgZ2VuZXJhbCB1c2UsIGJ1dCB0aGUgZm9sbG93aW5nIGFyZQorICAgIGNvbnNpZGVyZWQgc3RhbmRhcmQgKHNlZSB0aGUgR0NDIGluZm8gcGFnZSBzZWN0aW9uICJDCisgICAgRXh0ZW5zaW9ucyIgZm9yIG1vcmUgZGV0YWlscyAtIFllcywgcmVhbGx5IHRoZSBpbmZvIHBhZ2UsIHRoZQorICAgIG1hbiBwYWdlIGlzIG9ubHkgYSBzaG9ydCBzdW1tYXJ5IG9mIHRoZSBzdHVmZiBpbiBpbmZvKS4KKyAgIDwvcGFyYT4KKyAgIDxpdGVtaXplZGxpc3Q+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIElubGluZSBmdW5jdGlvbnMKKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFN0YXRlbWVudCBleHByZXNzaW9ucyAoaWUuIHRoZSAoeyBhbmQgfSkgY29uc3RydWN0cykuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBEZWNsYXJpbmcgYXR0cmlidXRlcyBvZiBhIGZ1bmN0aW9uIC8gdmFyaWFibGUgLyB0eXBlCisgICAgICAoX19hdHRyaWJ1dGVfXykKKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIHR5cGVvZgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgWmVybyBsZW5ndGggYXJyYXlzCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBNYWNybyB2YXJhcmdzCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBBcml0aG1ldGljIG9uIHZvaWQgcG9pbnRlcnMKKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIE5vbi1Db25zdGFudCBpbml0aWFsaXplcnMKKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIEFzc2VtYmxlciBJbnN0cnVjdGlvbnMgKG5vdCBvdXRzaWRlIGFyY2gvIGFuZCBpbmNsdWRlL2FzbS8pCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBGdW5jdGlvbiBuYW1lcyBhcyBzdHJpbmdzIChfX2Z1bmNfXykuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBfX2J1aWx0aW5fY29uc3RhbnRfcCgpCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC9pdGVtaXplZGxpc3Q+CisKKyAgIDxwYXJhPgorICAgIEJlIHdhcnkgd2hlbiB1c2luZyBsb25nIGxvbmcgaW4gdGhlIGtlcm5lbCwgdGhlIGNvZGUgZ2NjIGdlbmVyYXRlcyBmb3IKKyAgICBpdCBpcyBob3JyaWJsZSBhbmQgd29yc2U6IGRpdmlzaW9uIGFuZCBtdWx0aXBsaWNhdGlvbiBkb2VzIG5vdCB3b3JrCisgICAgb24gaTM4NiBiZWNhdXNlIHRoZSBHQ0MgcnVudGltZSBmdW5jdGlvbnMgZm9yIGl0IGFyZSBtaXNzaW5nIGZyb20KKyAgICB0aGUga2VybmVsIGVudmlyb25tZW50LgorICAgPC9wYXJhPgorCisgICAgPCEtLSBGSVhNRTogYWRkIGEgbm90ZSBhYm91dCBBTlNJIGFsaWFzaW5nIGNsZWFubmVzcyAtLT4KKyAgPC9zZWN0MT4KKworICA8c2VjdDEgaWQ9ImNvbnZlbnRpb25zLWNwbHVzcGx1cyI+CisgICA8dGl0bGU+QysrPC90aXRsZT4KKyAgIAorICAgPHBhcmE+CisgICAgVXNpbmcgQysrIGluIHRoZSBrZXJuZWwgaXMgdXN1YWxseSBhIGJhZCBpZGVhLCBiZWNhdXNlIHRoZQorICAgIGtlcm5lbCBkb2VzIG5vdCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgcnVudGltZSBlbnZpcm9ubWVudAorICAgIGFuZCB0aGUgaW5jbHVkZSBmaWxlcyBhcmUgbm90IHRlc3RlZCBmb3IgaXQuICBJdCBpcyBzdGlsbAorICAgIHBvc3NpYmxlLCBidXQgbm90IHJlY29tbWVuZGVkLiAgSWYgeW91IHJlYWxseSB3YW50IHRvIGRvCisgICAgdGhpcywgZm9yZ2V0IGFib3V0IGV4Y2VwdGlvbnMgYXQgbGVhc3QuCisgICA8L3BhcmE+CisgIDwvc2VjdDE+CisKKyAgPHNlY3QxIGlkPSJjb252ZW50aW9ucy1pZmRlZiI+CisgICA8dGl0bGU+Jm51bTtpZjwvdGl0bGU+CisgICAKKyAgIDxwYXJhPgorICAgIEl0IGlzIGdlbmVyYWxseSBjb25zaWRlcmVkIGNsZWFuZXIgdG8gdXNlIG1hY3JvcyBpbiBoZWFkZXIgZmlsZXMKKyAgICAob3IgYXQgdGhlIHRvcCBvZiAuYyBmaWxlcykgdG8gYWJzdHJhY3QgYXdheSBmdW5jdGlvbnMgcmF0aGVyIHRoYW4KKyAgICB1c2luZyBgI2lmJyBwcmUtcHJvY2Vzc29yIHN0YXRlbWVudHMgdGhyb3VnaG91dCB0aGUgc291cmNlIGNvZGUuCisgICA8L3BhcmE+CisgIDwvc2VjdDE+CisgPC9jaGFwdGVyPgorCisgPGNoYXB0ZXIgaWQ9InN1Ym1pdHRpbmciPgorICA8dGl0bGU+UHV0dGluZyBZb3VyIFN0dWZmIGluIHRoZSBLZXJuZWw8L3RpdGxlPgorCisgIDxwYXJhPgorICAgSW4gb3JkZXIgdG8gZ2V0IHlvdXIgc3R1ZmYgaW50byBzaGFwZSBmb3Igb2ZmaWNpYWwgaW5jbHVzaW9uLCBvcgorICAgZXZlbiB0byBtYWtlIGEgbmVhdCBwYXRjaCwgdGhlcmUncyBhZG1pbmlzdHJhdGl2ZSB3b3JrIHRvIGJlCisgICBkb25lOgorICA8L3BhcmE+CisgIDxpdGVtaXplZGxpc3Q+CisgICA8bGlzdGl0ZW0+CisgICAgPHBhcmE+CisgICAgIEZpZ3VyZSBvdXQgd2hvc2UgcG9uZCB5b3UndmUgYmVlbiBwaXNzaW5nIGluLiAgTG9vayBhdCB0aGUgdG9wIG9mCisgICAgIHRoZSBzb3VyY2UgZmlsZXMsIGluc2lkZSB0aGUgPGZpbGVuYW1lPk1BSU5UQUlORVJTPC9maWxlbmFtZT4KKyAgICAgZmlsZSwgYW5kIGxhc3Qgb2YgYWxsIGluIHRoZSA8ZmlsZW5hbWU+Q1JFRElUUzwvZmlsZW5hbWU+IGZpbGUuCisgICAgIFlvdSBzaG91bGQgY29vcmRpbmF0ZSB3aXRoIHRoaXMgcGVyc29uIHRvIG1ha2Ugc3VyZSB5b3UncmUgbm90CisgICAgIGR1cGxpY2F0aW5nIGVmZm9ydCwgb3IgdHJ5aW5nIHNvbWV0aGluZyB0aGF0J3MgYWxyZWFkeSBiZWVuCisgICAgIHJlamVjdGVkLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBNYWtlIHN1cmUgeW91IHB1dCB5b3VyIG5hbWUgYW5kIEVNYWlsIGFkZHJlc3MgYXQgdGhlIHRvcCBvZgorICAgICBhbnkgZmlsZXMgeW91IGNyZWF0ZSBvciBtYW5nbGUgc2lnbmlmaWNhbnRseS4gIFRoaXMgaXMgdGhlCisgICAgIGZpcnN0IHBsYWNlIHBlb3BsZSB3aWxsIGxvb2sgd2hlbiB0aGV5IGZpbmQgYSBidWcsIG9yIHdoZW4KKyAgICAgPGVtcGhhc2lzPnRoZXk8L2VtcGhhc2lzPiB3YW50IHRvIG1ha2UgYSBjaGFuZ2UuCisgICAgPC9wYXJhPgorICAgPC9saXN0aXRlbT4KKworICAgPGxpc3RpdGVtPgorICAgIDxwYXJhPgorICAgICBVc3VhbGx5IHlvdSB3YW50IGEgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHlvdXIga2VybmVsIGhhY2suCisgICAgIEVkaXQgPGZpbGVuYW1lPktjb25maWc8L2ZpbGVuYW1lPiBpbiB0aGUgYXBwcm9wcmlhdGUgZGlyZWN0b3J5LgorICAgICBUaGUgQ29uZmlnIGxhbmd1YWdlIGlzIHNpbXBsZSB0byB1c2UgYnkgY3V0IGFuZCBwYXN0ZSwgYW5kIHRoZXJlJ3MKKyAgICAgY29tcGxldGUgZG9jdW1lbnRhdGlvbiBpbgorICAgICA8ZmlsZW5hbWU+RG9jdW1lbnRhdGlvbi9rYnVpbGQva2NvbmZpZy1sYW5ndWFnZS50eHQ8L2ZpbGVuYW1lPi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgSW4geW91ciBkZXNjcmlwdGlvbiBvZiB0aGUgb3B0aW9uLCBtYWtlIHN1cmUgeW91IGFkZHJlc3MgYm90aCB0aGUKKyAgICAgZXhwZXJ0IHVzZXIgYW5kIHRoZSB1c2VyIHdobyBrbm93cyBub3RoaW5nIGFib3V0IHlvdXIgZmVhdHVyZS4gIE1lbnRpb24KKyAgICAgaW5jb21wYXRpYmlsaXRpZXMgYW5kIGlzc3VlcyBoZXJlLiAgPGVtcGhhc2lzPiBEZWZpbml0ZWx5CisgICAgIDwvZW1waGFzaXM+IGVuZCB5b3VyIGRlc2NyaXB0aW9uIHdpdGggPHF1b3RlPiBpZiBpbiBkb3VidCwgc2F5IE4KKyAgICAgPC9xdW90ZT4gKG9yLCBvY2Nhc2lvbmFsbHksIGBZJyk7IHRoaXMgaXMgZm9yIHBlb3BsZSB3aG8gaGF2ZSBubworICAgICBpZGVhIHdoYXQgeW91IGFyZSB0YWxraW5nIGFib3V0LgorICAgIDwvcGFyYT4KKyAgIDwvbGlzdGl0ZW0+CisKKyAgIDxsaXN0aXRlbT4KKyAgICA8cGFyYT4KKyAgICAgRWRpdCB0aGUgPGZpbGVuYW1lPk1ha2VmaWxlPC9maWxlbmFtZT46IHRoZSBDT05GSUcgdmFyaWFibGVzIGFyZQorICAgICBleHBvcnRlZCBoZXJlIHNvIHlvdSBjYW4gdXN1YWxseSBqdXN0IGFkZCBhICJvYmotJChDT05GSUdfeHh4KSArPQorICAgICB4eHgubyIgbGluZS4gIFRoZSBzeW50YXggaXMgZG9jdW1lbnRlZCBpbgorICAgICA8ZmlsZW5hbWU+RG9jdW1lbnRhdGlvbi9rYnVpbGQvbWFrZWZpbGVzLnR4dDwvZmlsZW5hbWU+LgorICAgIDwvcGFyYT4KKyAgIDwvbGlzdGl0ZW0+CisKKyAgIDxsaXN0aXRlbT4KKyAgICA8cGFyYT4KKyAgICAgUHV0IHlvdXJzZWxmIGluIDxmaWxlbmFtZT5DUkVESVRTPC9maWxlbmFtZT4gaWYgeW91J3ZlIGRvbmUKKyAgICAgc29tZXRoaW5nIG5vdGV3b3J0aHksIHVzdWFsbHkgYmV5b25kIGEgc2luZ2xlIGZpbGUgKHlvdXIgbmFtZQorICAgICBzaG91bGQgYmUgYXQgdGhlIHRvcCBvZiB0aGUgc291cmNlIGZpbGVzIGFueXdheSkuCisgICAgIDxmaWxlbmFtZT5NQUlOVEFJTkVSUzwvZmlsZW5hbWU+IG1lYW5zIHlvdSB3YW50IHRvIGJlIGNvbnN1bHRlZAorICAgICB3aGVuIGNoYW5nZXMgYXJlIG1hZGUgdG8gYSBzdWJzeXN0ZW0sIGFuZCBoZWFyIGFib3V0IGJ1Z3M7IGl0CisgICAgIGltcGxpZXMgYSBtb3JlLXRoYW4tcGFzc2luZyBjb21taXRtZW50IHRvIHNvbWUgcGFydCBvZiB0aGUgY29kZS4KKyAgICA8L3BhcmE+CisgICA8L2xpc3RpdGVtPgorICAgCisgICA8bGlzdGl0ZW0+CisgICAgPHBhcmE+CisgICAgIEZpbmFsbHksIGRvbid0IGZvcmdldCB0byByZWFkIDxmaWxlbmFtZT5Eb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzPC9maWxlbmFtZT4KKyAgICAgYW5kIHBvc3NpYmx5IDxmaWxlbmFtZT5Eb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdEcml2ZXJzPC9maWxlbmFtZT4uCisgICAgPC9wYXJhPgorICAgPC9saXN0aXRlbT4KKyAgPC9pdGVtaXplZGxpc3Q+CisgPC9jaGFwdGVyPgorCisgPGNoYXB0ZXIgaWQ9ImNhbnRyaXBzIj4KKyAgPHRpdGxlPktlcm5lbCBDYW50cmlwczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBTb21lIGZhdm9yaXRlcyBmcm9tIGJyb3dzaW5nIHRoZSBzb3VyY2UuICBGZWVsIGZyZWUgdG8gYWRkIHRvIHRoaXMKKyAgIGxpc3QuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIDxmaWxlbmFtZT5hcmNoL3g4Ni9pbmNsdWRlL2FzbS9kZWxheS5oOjwvZmlsZW5hbWU+CisgIDwvcGFyYT4KKyAgPHByb2dyYW1saXN0aW5nPgorI2RlZmluZSBuZGVsYXkobikgKF9fYnVpbHRpbl9jb25zdGFudF9wKG4pID8gXAorICAgICAgICAoKG4pID4gMjAwMDAgPyBfX2JhZF9uZGVsYXkoKSA6IF9fY29uc3RfdWRlbGF5KChuKSAqIDV1bCkpIDogXAorICAgICAgICBfX25kZWxheShuKSkKKyAgPC9wcm9ncmFtbGlzdGluZz4KKworICA8cGFyYT4KKyAgIDxmaWxlbmFtZT5pbmNsdWRlL2xpbnV4L2ZzLmg8L2ZpbGVuYW1lPjoKKyAgPC9wYXJhPgorICA8cHJvZ3JhbWxpc3Rpbmc+CisvKgorICogS2VybmVsIHBvaW50ZXJzIGhhdmUgcmVkdW5kYW50IGluZm9ybWF0aW9uLCBzbyB3ZSBjYW4gdXNlIGEKKyAqIHNjaGVtZSB3aGVyZSB3ZSBjYW4gcmV0dXJuIGVpdGhlciBhbiBlcnJvciBjb2RlIG9yIGEgZGVudHJ5CisgKiBwb2ludGVyIHdpdGggdGhlIHNhbWUgcmV0dXJuIHZhbHVlLgorICoKKyAqIFRoaXMgc2hvdWxkIGJlIGEgcGVyLWFyY2hpdGVjdHVyZSB0aGluZywgdG8gYWxsb3cgZGlmZmVyZW50CisgKiBlcnJvciBhbmQgcG9pbnRlciBkZWNpc2lvbnMuCisgKi8KKyAjZGVmaW5lIEVSUl9QVFIoZXJyKSAgICAoKHZvaWQgKikoKGxvbmcpKGVycikpKQorICNkZWZpbmUgUFRSX0VSUihwdHIpICAgICgobG9uZykocHRyKSkKKyAjZGVmaW5lIElTX0VSUihwdHIpICAgICAoKHVuc2lnbmVkIGxvbmcpKHB0cikgPiAodW5zaWduZWQgbG9uZykoLTEwMDApKQorPC9wcm9ncmFtbGlzdGluZz4KKworICA8cGFyYT4KKyAgIDxmaWxlbmFtZT5hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzXzMyLmg6PC9maWxlbmFtZT4KKyAgPC9wYXJhPgorCisgIDxwcm9ncmFtbGlzdGluZz4KKyNkZWZpbmUgY29weV90b191c2VyKHRvLGZyb20sbikgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoX19idWlsdGluX2NvbnN0YW50X3AobikgPyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICBfX2NvbnN0YW50X2NvcHlfdG9fdXNlcigodG8pLChmcm9tKSwobikpIDogICAgIFwKKyAgICAgICAgIF9fZ2VuZXJpY19jb3B5X3RvX3VzZXIoKHRvKSwoZnJvbSksKG4pKSkKKyAgPC9wcm9ncmFtbGlzdGluZz4KKworICA8cGFyYT4KKyAgIDxmaWxlbmFtZT5hcmNoL3NwYXJjL2tlcm5lbC9oZWFkLlM6PC9maWxlbmFtZT4KKyAgPC9wYXJhPgorCisgIDxwcm9ncmFtbGlzdGluZz4KKy8qCisgKiBTdW4gcGVvcGxlIGNhbid0IHNwZWxsIHdvcnRoIGRhbW4uICJjb21wYXRhYmlsaXR5IiBpbmRlZWQuCisgKiBBdCBsZWFzdCB3ZSAqa25vdyogd2UgY2FuJ3Qgc3BlbGwsIGFuZCB1c2UgYSBzcGVsbC1jaGVja2VyLgorICovCisKKy8qIFVoLCBhY3R1YWxseSBMaW51cyBpdCBpcyBJIHdobyBjYW5ub3Qgc3BlbGwuIFRvbyBtdWNoIG11cmt5CisgKiBTcGFyYyBhc3NlbWJseSB3aWxsIGRvIHRoaXMgdG8geWEuCisgKi8KK0NfTEFCRUwoY3B1dHlwdmFyKToKKyAgICAgICAgLmFzY2l6ICJjb21wYXRpYmlsaXR5IgorCisvKiBUZXN0ZWQgb24gU1MtNSwgU1MtMTAuIFByb2JhYmx5IHNvbWVvbmUgYXQgU3VuIGFwcGxpZWQgYSBzcGVsbC1jaGVja2VyLiAqLworICAgICAgICAuYWxpZ24gNAorQ19MQUJFTChjcHV0eXB2YXJfc3VuNG0pOgorICAgICAgICAuYXNjaXogImNvbXBhdGlibGUiCisgIDwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgPHBhcmE+CisgICA8ZmlsZW5hbWU+YXJjaC9zcGFyYy9saWIvY2hlY2tzdW0uUzo8L2ZpbGVuYW1lPgorICA8L3BhcmE+CisKKyAgPHByb2dyYW1saXN0aW5nPgorICAgICAgICAvKiBTdW4sIHlvdSBqdXN0IGNhbid0IGJlYXQgbWUsIHlvdSBqdXN0IGNhbid0LiAgU3RvcCB0cnlpbmcsCisgICAgICAgICAqIGdpdmUgdXAuICBJJ20gc2VyaW91cywgSSBhbSBnb2luZyB0byBraWNrIHRoZSBsaXZpbmcgc2hpdAorICAgICAgICAgKiBvdXQgb2YgeW91LCBnYW1lIG92ZXIsIGxpZ2h0cyBvdXQuCisgICAgICAgICAqLworICA8L3Byb2dyYW1saXN0aW5nPgorIDwvY2hhcHRlcj4KKworIDxjaGFwdGVyIGlkPSJjcmVkaXRzIj4KKyAgPHRpdGxlPlRoYW5rczwvdGl0bGU+CisKKyAgPHBhcmE+CisgICBUaGFua3MgdG8gQW5kaSBLbGVlbiBmb3IgdGhlIGlkZWEsIGFuc3dlcmluZyBteSBxdWVzdGlvbnMsIGZpeGluZworICAgbXkgbWlzdGFrZXMsIGZpbGxpbmcgY29udGVudCwgZXRjLiAgUGhpbGlwcCBSdW1wZiBmb3IgbW9yZSBzcGVsbGluZworICAgYW5kIGNsYXJpdHkgZml4ZXMsIGFuZCBzb21lIGV4Y2VsbGVudCBub24tb2J2aW91cyBwb2ludHMuICBXZXJuZXIKKyAgIEFsbWVzYmVyZ2VyIGZvciBnaXZpbmcgbWUgYSBncmVhdCBzdW1tYXJ5IG9mCisgICA8ZnVuY3Rpb24+ZGlzYWJsZV9pcnEoKTwvZnVuY3Rpb24+LCBhbmQgSmVzIFNvcmVuc2VuIGFuZCBBbmRyZWEKKyAgIEFyY2FuZ2VsaSBhZGRlZCBjYXZlYXRzLiBNaWNoYWVsIEVsaXphYmV0aCBDaGFzdGFpbiBmb3IgY2hlY2tpbmcKKyAgIGFuZCBhZGRpbmcgdG8gdGhlIENvbmZpZ3VyZSBzZWN0aW9uLiA8IS0tIFJ1c3R5IGluc2lzdGVkIG9uIHRoaXMKKyAgIGJpdDsgSSBkaWRuJ3QgZG8gaXQhIC0tPiBUZWxzYSBHd3lubmUgZm9yIHRlYWNoaW5nIG1lIERvY0Jvb2suIAorICA8L3BhcmE+CisgPC9jaGFwdGVyPgorPC9ib29rPgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2sva2VybmVsLWxvY2tpbmcudG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9rZXJuZWwtbG9ja2luZy50bXBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjOWNjNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2sva2VybmVsLWxvY2tpbmcudG1wbApAQCAtMCwwICsxLDIxNTEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMS4yLy9FTiIKKwkiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQiIFtdPgorCis8Ym9vayBpZD0iTEtMb2NraW5nR3VpZGUiPgorIDxib29raW5mbz4KKyAgPHRpdGxlPlVucmVsaWFibGUgR3VpZGUgVG8gTG9ja2luZzwvdGl0bGU+CisgIAorICA8YXV0aG9yZ3JvdXA+CisgICA8YXV0aG9yPgorICAgIDxmaXJzdG5hbWU+UnVzdHk8L2ZpcnN0bmFtZT4KKyAgICA8c3VybmFtZT5SdXNzZWxsPC9zdXJuYW1lPgorICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgPGFkZHJlc3M+CisgICAgICA8ZW1haWw+cnVzdHlAcnVzdGNvcnAuY29tLmF1PC9lbWFpbD4KKyAgICAgPC9hZGRyZXNzPgorICAgIDwvYWZmaWxpYXRpb24+CisgICA8L2F1dGhvcj4KKyAgPC9hdXRob3Jncm91cD4KKworICA8Y29weXJpZ2h0PgorICAgPHllYXI+MjAwMzwveWVhcj4KKyAgIDxob2xkZXI+UnVzdHkgUnVzc2VsbDwvaG9sZGVyPgorICA8L2NvcHlyaWdodD4KKworICA8bGVnYWxub3RpY2U+CisgICA8cGFyYT4KKyAgICAgVGhpcyBkb2N1bWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlCisgICAgIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIKKyAgICAgdmVyc2lvbi4KKyAgIDwvcGFyYT4KKyAgICAgIAorICAgPHBhcmE+CisgICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKyAgICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAorICAgICB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisgICAgIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAgIDwvcGFyYT4KKyAgICAgIAorICAgPHBhcmE+CisgICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICAgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgICAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgICAgIE1BIDAyMTExLTEzMDcgVVNBCisgICA8L3BhcmE+CisgICAgICAKKyAgIDxwYXJhPgorICAgICBGb3IgbW9yZSBkZXRhaWxzIHNlZSB0aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBzb3VyY2UKKyAgICAgZGlzdHJpYnV0aW9uIG9mIExpbnV4LgorICAgPC9wYXJhPgorICA8L2xlZ2Fsbm90aWNlPgorIDwvYm9va2luZm8+CisKKyA8dG9jPjwvdG9jPgorICA8Y2hhcHRlciBpZD0iaW50cm8iPgorICAgPHRpdGxlPkludHJvZHVjdGlvbjwvdGl0bGU+CisgICA8cGFyYT4KKyAgICAgV2VsY29tZSwgdG8gUnVzdHkncyBSZW1hcmthYmx5IFVucmVsaWFibGUgR3VpZGUgdG8gS2VybmVsCisgICAgIExvY2tpbmcgaXNzdWVzLiAgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIGxvY2tpbmcgc3lzdGVtcyBpbgorICAgICB0aGUgTGludXggS2VybmVsIGluIDIuNi4KKyAgIDwvcGFyYT4KKyAgIDxwYXJhPgorICAgICBXaXRoIHRoZSB3aWRlIGF2YWlsYWJpbGl0eSBvZiBIeXBlclRocmVhZGluZywgYW5kIDxmaXJzdHRlcm0KKyAgICAgbGlua2VuZD0iZ2xvc3MtcHJlZW1wdGlvbiI+cHJlZW1wdGlvbiA8L2ZpcnN0dGVybT4gaW4gdGhlIExpbnV4CisgICAgIEtlcm5lbCwgZXZlcnlvbmUgaGFja2luZyBvbiB0aGUga2VybmVsIG5lZWRzIHRvIGtub3cgdGhlCisgICAgIGZ1bmRhbWVudGFscyBvZiBjb25jdXJyZW5jeSBhbmQgbG9ja2luZyBmb3IKKyAgICAgPGZpcnN0dGVybSBsaW5rZW5kPSJnbG9zcy1zbXAiPjxhY3JvbnltPlNNUDwvYWNyb255bT48L2ZpcnN0dGVybT4uCisgICA8L3BhcmE+CisgIDwvY2hhcHRlcj4KKworICAgPGNoYXB0ZXIgaWQ9InJhY2VzIj4KKyAgICA8dGl0bGU+VGhlIFByb2JsZW0gV2l0aCBDb25jdXJyZW5jeTwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICAoU2tpcCB0aGlzIGlmIHlvdSBrbm93IHdoYXQgYSBSYWNlIENvbmRpdGlvbiBpcykuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgSW4gYSBub3JtYWwgcHJvZ3JhbSwgeW91IGNhbiBpbmNyZW1lbnQgYSBjb3VudGVyIGxpa2Ugc286CisgICAgPC9wYXJhPgorICAgIDxwcm9ncmFtbGlzdGluZz4KKyAgICAgIHZlcnlfaW1wb3J0YW50X2NvdW50Kys7CisgICAgPC9wcm9ncmFtbGlzdGluZz4KKworICAgIDxwYXJhPgorICAgICAgVGhpcyBpcyB3aGF0IHRoZXkgd291bGQgZXhwZWN0IHRvIGhhcHBlbjoKKyAgICA8L3BhcmE+CisKKyAgICA8dGFibGU+CisgICAgIDx0aXRsZT5FeHBlY3RlZCBSZXN1bHRzPC90aXRsZT4KKworICAgICA8dGdyb3VwIGNvbHM9IjIiIGFsaWduPSJsZWZ0Ij4KKworICAgICAgPHRoZWFkPgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeT5JbnN0YW5jZSAxPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5Pkluc3RhbmNlIDI8L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgPC90aGVhZD4KKworICAgICAgPHRib2R5PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeT5yZWFkIHZlcnlfaW1wb3J0YW50X2NvdW50ICg1KTwvZW50cnk+CisgICAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeT5hZGQgMSAoNik8L2VudHJ5PgorICAgICAgICA8ZW50cnk+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnk+d3JpdGUgdmVyeV9pbXBvcnRhbnRfY291bnQgKDYpPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PjwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5PjwvZW50cnk+CisgICAgICAgIDxlbnRyeT5yZWFkIHZlcnlfaW1wb3J0YW50X2NvdW50ICg2KTwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5PjwvZW50cnk+CisgICAgICAgIDxlbnRyeT5hZGQgMSAoNyk8L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgICA8ZW50cnk+d3JpdGUgdmVyeV9pbXBvcnRhbnRfY291bnQgKDcpPC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgIDwvdGJvZHk+CisKKyAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDxwYXJhPgorICAgICBUaGlzIGlzIHdoYXQgbWlnaHQgaGFwcGVuOgorICAgIDwvcGFyYT4KKworICAgIDx0YWJsZT4KKyAgICAgPHRpdGxlPlBvc3NpYmxlIFJlc3VsdHM8L3RpdGxlPgorCisgICAgIDx0Z3JvdXAgY29scz0iMiIgYWxpZ249ImxlZnQiPgorICAgICAgPHRoZWFkPgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeT5JbnN0YW5jZSAxPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5Pkluc3RhbmNlIDI8L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgPC90aGVhZD4KKworICAgICAgPHRib2R5PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeT5yZWFkIHZlcnlfaW1wb3J0YW50X2NvdW50ICg1KTwvZW50cnk+CisgICAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgICA8ZW50cnk+cmVhZCB2ZXJ5X2ltcG9ydGFudF9jb3VudCAoNSk8L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeT5hZGQgMSAoNik8L2VudHJ5PgorICAgICAgICA8ZW50cnk+PC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnk+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PmFkZCAxICg2KTwvZW50cnk+CisgICAgICAgPC9yb3c+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5PndyaXRlIHZlcnlfaW1wb3J0YW50X2NvdW50ICg2KTwvZW50cnk+CisgICAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgICA8ZW50cnk+d3JpdGUgdmVyeV9pbXBvcnRhbnRfY291bnQgKDYpPC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgIDwvdGJvZHk+CisgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8c2VjdDEgaWQ9InJhY2UtY29uZGl0aW9uIj4KKyAgICA8dGl0bGU+UmFjZSBDb25kaXRpb25zIGFuZCBDcml0aWNhbCBSZWdpb25zPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIFRoaXMgb3ZlcmxhcCwgd2hlcmUgdGhlIHJlc3VsdCBkZXBlbmRzIG9uIHRoZQorICAgICAgcmVsYXRpdmUgdGltaW5nIG9mIG11bHRpcGxlIHRhc2tzLCBpcyBjYWxsZWQgYSA8Zmlyc3R0ZXJtPnJhY2UgY29uZGl0aW9uPC9maXJzdHRlcm0+LgorICAgICAgVGhlIHBpZWNlIG9mIGNvZGUgY29udGFpbmluZyB0aGUgY29uY3VycmVuY3kgaXNzdWUgaXMgY2FsbGVkIGEKKyAgICAgIDxmaXJzdHRlcm0+Y3JpdGljYWwgcmVnaW9uPC9maXJzdHRlcm0+LiAgQW5kIGVzcGVjaWFsbHkgc2luY2UgTGludXggc3RhcnRpbmcgcnVubmluZworICAgICAgb24gU01QIG1hY2hpbmVzLCB0aGV5IGJlY2FtZSBvbmUgb2YgdGhlIG1ham9yIGlzc3VlcyBpbiBrZXJuZWwKKyAgICAgIGRlc2lnbiBhbmQgaW1wbGVtZW50YXRpb24uCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgUHJlZW1wdGlvbiBjYW4gaGF2ZSB0aGUgc2FtZSBlZmZlY3QsIGV2ZW4gaWYgdGhlcmUgaXMgb25seSBvbmUKKyAgICAgIENQVTogYnkgcHJlZW1wdGluZyBvbmUgdGFzayBkdXJpbmcgdGhlIGNyaXRpY2FsIHJlZ2lvbiwgd2UgaGF2ZQorICAgICAgZXhhY3RseSB0aGUgc2FtZSByYWNlIGNvbmRpdGlvbi4gIEluIHRoaXMgY2FzZSB0aGUgdGhyZWFkIHdoaWNoCisgICAgICBwcmVlbXB0cyBtaWdodCBydW4gdGhlIGNyaXRpY2FsIHJlZ2lvbiBpdHNlbGYuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgVGhlIHNvbHV0aW9uIGlzIHRvIHJlY29nbml6ZSB3aGVuIHRoZXNlIHNpbXVsdGFuZW91cyBhY2Nlc3NlcworICAgICAgb2NjdXIsIGFuZCB1c2UgbG9ja3MgdG8gbWFrZSBzdXJlIHRoYXQgb25seSBvbmUgaW5zdGFuY2UgY2FuCisgICAgICBlbnRlciB0aGUgY3JpdGljYWwgcmVnaW9uIGF0IGFueSB0aW1lLiAgVGhlcmUgYXJlIG1hbnkKKyAgICAgIGZyaWVuZGx5IHByaW1pdGl2ZXMgaW4gdGhlIExpbnV4IGtlcm5lbCB0byBoZWxwIHlvdSBkbyB0aGlzLgorICAgICAgQW5kIHRoZW4gdGhlcmUgYXJlIHRoZSB1bmZyaWVuZGx5IHByaW1pdGl2ZXMsIGJ1dCBJJ2xsIHByZXRlbmQKKyAgICAgIHRoZXkgZG9uJ3QgZXhpc3QuCisgICAgPC9wYXJhPgorICAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0ibG9ja3MiPgorICAgPHRpdGxlPkxvY2tpbmcgaW4gdGhlIExpbnV4IEtlcm5lbDwvdGl0bGU+CisKKyAgIDxwYXJhPgorICAgICBJZiBJIGNvdWxkIGdpdmUgeW91IG9uZSBwaWVjZSBvZiBhZHZpY2U6IG5ldmVyIHNsZWVwIHdpdGggYW55b25lCisgICAgIGNyYXppZXIgdGhhbiB5b3Vyc2VsZi4gIEJ1dCBpZiBJIGhhZCB0byBnaXZlIHlvdSBhZHZpY2Ugb24KKyAgICAgbG9ja2luZzogPGVtcGhhc2lzPmtlZXAgaXQgc2ltcGxlPC9lbXBoYXNpcz4uCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgICBCZSByZWx1Y3RhbnQgdG8gaW50cm9kdWNlIG5ldyBsb2Nrcy4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgIFN0cmFuZ2VseSBlbm91Z2gsIHRoaXMgbGFzdCBvbmUgaXMgdGhlIGV4YWN0IHJldmVyc2Ugb2YgbXkgYWR2aWNlIHdoZW4KKyAgICAgeW91IDxlbXBoYXNpcz5oYXZlPC9lbXBoYXNpcz4gc2xlcHQgd2l0aCBzb21lb25lIGNyYXppZXIgdGhhbiB5b3Vyc2VsZi4KKyAgICAgQW5kIHlvdSBzaG91bGQgdGhpbmsgYWJvdXQgZ2V0dGluZyBhIGJpZyBkb2cuCisgICA8L3BhcmE+CisKKyAgIDxzZWN0MSBpZD0ibG9jay1pbnRybyI+CisgICA8dGl0bGU+VHdvIE1haW4gVHlwZXMgb2YgS2VybmVsIExvY2tzOiBTcGlubG9ja3MgYW5kIE11dGV4ZXM8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICAgVGhlcmUgYXJlIHR3byBtYWluIHR5cGVzIG9mIGtlcm5lbCBsb2Nrcy4gIFRoZSBmdW5kYW1lbnRhbCB0eXBlCisgICAgIGlzIHRoZSBzcGlubG9jayAKKyAgICAgKDxmaWxlbmFtZSBjbGFzcz0iaGVhZGVyZmlsZSI+aW5jbHVkZS9hc20vc3BpbmxvY2suaDwvZmlsZW5hbWU+KSwKKyAgICAgd2hpY2ggaXMgYSB2ZXJ5IHNpbXBsZSBzaW5nbGUtaG9sZGVyIGxvY2s6IGlmIHlvdSBjYW4ndCBnZXQgdGhlIAorICAgICBzcGlubG9jaywgeW91IGtlZXAgdHJ5aW5nIChzcGlubmluZykgdW50aWwgeW91IGNhbi4gIFNwaW5sb2NrcyBhcmUgCisgICAgIHZlcnkgc21hbGwgYW5kIGZhc3QsIGFuZCBjYW4gYmUgdXNlZCBhbnl3aGVyZS4KKyAgIDwvcGFyYT4KKyAgIDxwYXJhPgorICAgICBUaGUgc2Vjb25kIHR5cGUgaXMgYSBtdXRleAorICAgICAoPGZpbGVuYW1lIGNsYXNzPSJoZWFkZXJmaWxlIj5pbmNsdWRlL2xpbnV4L211dGV4Lmg8L2ZpbGVuYW1lPik6IGl0CisgICAgIGlzIGxpa2UgYSBzcGlubG9jaywgYnV0IHlvdSBtYXkgYmxvY2sgaG9sZGluZyBhIG11dGV4LgorICAgICBJZiB5b3UgY2FuJ3QgbG9jayBhIG11dGV4LCB5b3VyIHRhc2sgd2lsbCBzdXNwZW5kIGl0c2VsZiwgYW5kIGJlIHdva2VuCisgICAgIHVwIHdoZW4gdGhlIG11dGV4IGlzIHJlbGVhc2VkLiAgVGhpcyBtZWFucyB0aGUgQ1BVIGNhbiBkbyBzb21ldGhpbmcKKyAgICAgZWxzZSB3aGlsZSB5b3UgYXJlIHdhaXRpbmcuICBUaGVyZSBhcmUgbWFueSBjYXNlcyB3aGVuIHlvdSBzaW1wbHkKKyAgICAgY2FuJ3Qgc2xlZXAgKHNlZSA8eHJlZiBsaW5rZW5kPSJzbGVlcGluZy10aGluZ3MiLz4pLCBhbmQgc28gaGF2ZSB0bworICAgICB1c2UgYSBzcGlubG9jayBpbnN0ZWFkLgorICAgPC9wYXJhPgorICAgPHBhcmE+CisgICAgIE5laXRoZXIgdHlwZSBvZiBsb2NrIGlzIHJlY3Vyc2l2ZTogc2VlCisgICAgIDx4cmVmIGxpbmtlbmQ9ImRlYWRsb2NrIi8+LgorICAgPC9wYXJhPgorICAgPC9zZWN0MT4KKyAKKyAgIDxzZWN0MSBpZD0idW5pcHJvY2Vzc29yIj4KKyAgICA8dGl0bGU+TG9ja3MgYW5kIFVuaXByb2Nlc3NvciBLZXJuZWxzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgRm9yIGtlcm5lbHMgY29tcGlsZWQgd2l0aG91dCA8c3ltYm9sPkNPTkZJR19TTVA8L3N5bWJvbD4sIGFuZAorICAgICAgd2l0aG91dCA8c3ltYm9sPkNPTkZJR19QUkVFTVBUPC9zeW1ib2w+IHNwaW5sb2NrcyBkbyBub3QgZXhpc3QgYXQKKyAgICAgIGFsbC4gIFRoaXMgaXMgYW4gZXhjZWxsZW50IGRlc2lnbiBkZWNpc2lvbjogd2hlbiBuby1vbmUgZWxzZSBjYW4KKyAgICAgIHJ1biBhdCB0aGUgc2FtZSB0aW1lLCB0aGVyZSBpcyBubyByZWFzb24gdG8gaGF2ZSBhIGxvY2suCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBJZiB0aGUga2VybmVsIGlzIGNvbXBpbGVkIHdpdGhvdXQgPHN5bWJvbD5DT05GSUdfU01QPC9zeW1ib2w+LAorICAgICAgYnV0IDxzeW1ib2w+Q09ORklHX1BSRUVNUFQ8L3N5bWJvbD4gaXMgc2V0LCB0aGVuIHNwaW5sb2NrcworICAgICAgc2ltcGx5IGRpc2FibGUgcHJlZW1wdGlvbiwgd2hpY2ggaXMgc3VmZmljaWVudCB0byBwcmV2ZW50IGFueQorICAgICAgcmFjZXMuICBGb3IgbW9zdCBwdXJwb3Nlcywgd2UgY2FuIHRoaW5rIG9mIHByZWVtcHRpb24gYXMKKyAgICAgIGVxdWl2YWxlbnQgdG8gU01QLCBhbmQgbm90IHdvcnJ5IGFib3V0IGl0IHNlcGFyYXRlbHkuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBZb3Ugc2hvdWxkIGFsd2F5cyB0ZXN0IHlvdXIgbG9ja2luZyBjb2RlIHdpdGggPHN5bWJvbD5DT05GSUdfU01QPC9zeW1ib2w+CisgICAgICBhbmQgPHN5bWJvbD5DT05GSUdfUFJFRU1QVDwvc3ltYm9sPiBlbmFibGVkLCBldmVuIGlmIHlvdSBkb24ndCBoYXZlIGFuIFNNUCB0ZXN0IGJveCwgYmVjYXVzZSBpdAorICAgICAgd2lsbCBzdGlsbCBjYXRjaCBzb21lIGtpbmRzIG9mIGxvY2tpbmcgYnVncy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgIE11dGV4ZXMgc3RpbGwgZXhpc3QsIGJlY2F1c2UgdGhleSBhcmUgcmVxdWlyZWQgZm9yCisgICAgICBzeW5jaHJvbml6YXRpb24gYmV0d2VlbiA8Zmlyc3R0ZXJtIGxpbmtlbmQ9Imdsb3NzLXVzZXJjb250ZXh0Ij51c2VyIAorICAgICAgY29udGV4dHM8L2ZpcnN0dGVybT4sIGFzIHdlIHdpbGwgc2VlIGJlbG93LgorICAgIDwvcGFyYT4KKyAgIDwvc2VjdDE+CisKKyAgICA8c2VjdDEgaWQ9InVzZXJjb250ZXh0bG9ja2luZyI+CisgICAgIDx0aXRsZT5Mb2NraW5nIE9ubHkgSW4gVXNlciBDb250ZXh0PC90aXRsZT4KKworICAgICA8cGFyYT4KKyAgICAgICBJZiB5b3UgaGF2ZSBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIGlzIG9ubHkgZXZlciBhY2Nlc3NlZCBmcm9tCisgICAgICAgdXNlciBjb250ZXh0LCB0aGVuIHlvdSBjYW4gdXNlIGEgc2ltcGxlIG11dGV4CisgICAgICAgKDxmaWxlbmFtZT5pbmNsdWRlL2xpbnV4L211dGV4Lmg8L2ZpbGVuYW1lPikgdG8gcHJvdGVjdCBpdC4gIFRoaXMKKyAgICAgICBpcyB0aGUgbW9zdCB0cml2aWFsIGNhc2U6IHlvdSBpbml0aWFsaXplIHRoZSBtdXRleC4gIFRoZW4geW91IGNhbgorICAgICAgIGNhbGwgPGZ1bmN0aW9uPm11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgpPC9mdW5jdGlvbj4gdG8gZ3JhYiB0aGUgbXV0ZXgsCisgICAgICAgYW5kIDxmdW5jdGlvbj5tdXRleF91bmxvY2soKTwvZnVuY3Rpb24+IHRvIHJlbGVhc2UgaXQuICBUaGVyZSBpcyBhbHNvIGEgCisgICAgICAgPGZ1bmN0aW9uPm11dGV4X2xvY2soKTwvZnVuY3Rpb24+LCB3aGljaCBzaG91bGQgYmUgYXZvaWRlZCwgYmVjYXVzZSBpdCAKKyAgICAgICB3aWxsIG5vdCByZXR1cm4gaWYgYSBzaWduYWwgaXMgcmVjZWl2ZWQuCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgICBFeGFtcGxlOiA8ZmlsZW5hbWU+bmV0L25ldGZpbHRlci9uZl9zb2Nrb3B0LmM8L2ZpbGVuYW1lPiBhbGxvd3MgCisgICAgICAgcmVnaXN0cmF0aW9uIG9mIG5ldyA8ZnVuY3Rpb24+c2V0c29ja29wdCgpPC9mdW5jdGlvbj4gYW5kIAorICAgICAgIDxmdW5jdGlvbj5nZXRzb2Nrb3B0KCk8L2Z1bmN0aW9uPiBjYWxscywgd2l0aAorICAgICAgIDxmdW5jdGlvbj5uZl9yZWdpc3Rlcl9zb2Nrb3B0KCk8L2Z1bmN0aW9uPi4gIFJlZ2lzdHJhdGlvbiBhbmQgCisgICAgICAgZGUtcmVnaXN0cmF0aW9uIGFyZSBvbmx5IGRvbmUgb24gbW9kdWxlIGxvYWQgYW5kIHVubG9hZCAoYW5kIGJvb3QgCisgICAgICAgdGltZSwgd2hlcmUgdGhlcmUgaXMgbm8gY29uY3VycmVuY3kpLCBhbmQgdGhlIGxpc3Qgb2YgcmVnaXN0cmF0aW9ucyAKKyAgICAgICBpcyBvbmx5IGNvbnN1bHRlZCBmb3IgYW4gdW5rbm93biA8ZnVuY3Rpb24+c2V0c29ja29wdCgpPC9mdW5jdGlvbj4KKyAgICAgICBvciA8ZnVuY3Rpb24+Z2V0c29ja29wdCgpPC9mdW5jdGlvbj4gc3lzdGVtIGNhbGwuICBUaGUgCisgICAgICAgPHZhcm5hbWU+bmZfc29ja29wdF9tdXRleDwvdmFybmFtZT4gaXMgcGVyZmVjdCB0byBwcm90ZWN0IHRoaXMsCisgICAgICAgZXNwZWNpYWxseSBzaW5jZSB0aGUgc2V0c29ja29wdCBhbmQgZ2V0c29ja29wdCBjYWxscyBtYXkgd2VsbAorICAgICAgIHNsZWVwLgorICAgICA8L3BhcmE+CisgICA8L3NlY3QxPgorCisgICA8c2VjdDEgaWQ9ImxvY2stdXNlci1iaCI+CisgICAgPHRpdGxlPkxvY2tpbmcgQmV0d2VlbiBVc2VyIENvbnRleHQgYW5kIFNvZnRpcnFzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgSWYgYSA8Zmlyc3R0ZXJtIGxpbmtlbmQ9Imdsb3NzLXNvZnRpcnEiPnNvZnRpcnE8L2ZpcnN0dGVybT4gc2hhcmVzCisgICAgICBkYXRhIHdpdGggdXNlciBjb250ZXh0LCB5b3UgaGF2ZSB0d28gcHJvYmxlbXMuICBGaXJzdGx5LCB0aGUgY3VycmVudCAKKyAgICAgIHVzZXIgY29udGV4dCBjYW4gYmUgaW50ZXJydXB0ZWQgYnkgYSBzb2Z0aXJxLCBhbmQgc2Vjb25kbHksIHRoZQorICAgICAgY3JpdGljYWwgcmVnaW9uIGNvdWxkIGJlIGVudGVyZWQgZnJvbSBhbm90aGVyIENQVS4gIFRoaXMgaXMgd2hlcmUKKyAgICAgIDxmdW5jdGlvbj5zcGluX2xvY2tfYmgoKTwvZnVuY3Rpb24+IAorICAgICAgKDxmaWxlbmFtZSBjbGFzcz0iaGVhZGVyZmlsZSI+aW5jbHVkZS9saW51eC9zcGlubG9jay5oPC9maWxlbmFtZT4pIGlzCisgICAgICB1c2VkLiAgSXQgZGlzYWJsZXMgc29mdGlycXMgb24gdGhhdCBDUFUsIHRoZW4gZ3JhYnMgdGhlIGxvY2suCisgICAgICA8ZnVuY3Rpb24+c3Bpbl91bmxvY2tfYmgoKTwvZnVuY3Rpb24+IGRvZXMgdGhlIHJldmVyc2UuICAoVGhlCisgICAgICAnX2JoJyBzdWZmaXggaXMgYSBoaXN0b3JpY2FsIHJlZmVyZW5jZSB0byAiQm90dG9tIEhhbHZlcyIsIHRoZQorICAgICAgb2xkIG5hbWUgZm9yIHNvZnR3YXJlIGludGVycnVwdHMuICBJdCBzaG91bGQgcmVhbGx5IGJlCisgICAgICBjYWxsZWQgc3Bpbl9sb2NrX3NvZnRpcnEoKScgaW4gYSBwZXJmZWN0IHdvcmxkKS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgIE5vdGUgdGhhdCB5b3UgY2FuIGFsc28gdXNlIDxmdW5jdGlvbj5zcGluX2xvY2tfaXJxKCk8L2Z1bmN0aW9uPgorICAgICAgb3IgPGZ1bmN0aW9uPnNwaW5fbG9ja19pcnFzYXZlKCk8L2Z1bmN0aW9uPiBoZXJlLCB3aGljaCBzdG9wCisgICAgICBoYXJkd2FyZSBpbnRlcnJ1cHRzIGFzIHdlbGw6IHNlZSA8eHJlZiBsaW5rZW5kPSJoYXJkaXJxLWNvbnRleHQiLz4uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBUaGlzIHdvcmtzIHBlcmZlY3RseSBmb3IgPGZpcnN0dGVybSBsaW5rZW5kPSJnbG9zcy11cCI+PGFjcm9ueW0+VVAKKyAgICAgIDwvYWNyb255bT48L2ZpcnN0dGVybT4gYXMgd2VsbDogdGhlIHNwaW4gbG9jayB2YW5pc2hlcywgYW5kIHRoaXMgbWFjcm8gCisgICAgICBzaW1wbHkgYmVjb21lcyA8ZnVuY3Rpb24+bG9jYWxfYmhfZGlzYWJsZSgpPC9mdW5jdGlvbj4KKyAgICAgICg8ZmlsZW5hbWUgY2xhc3M9ImhlYWRlcmZpbGUiPmluY2x1ZGUvbGludXgvaW50ZXJydXB0Lmg8L2ZpbGVuYW1lPiksIHdoaWNoCisgICAgICBwcm90ZWN0cyB5b3UgZnJvbSB0aGUgc29mdGlycSBiZWluZyBydW4uCisgICAgPC9wYXJhPgorICAgPC9zZWN0MT4KKworICAgPHNlY3QxIGlkPSJsb2NrLXVzZXItdGFza2xldCI+CisgICAgPHRpdGxlPkxvY2tpbmcgQmV0d2VlbiBVc2VyIENvbnRleHQgYW5kIFRhc2tsZXRzPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgVGhpcyBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIGFib3ZlLCBiZWNhdXNlIDxmaXJzdHRlcm0KKyAgICAgIGxpbmtlbmQ9Imdsb3NzLXRhc2tsZXQiPnRhc2tsZXRzPC9maXJzdHRlcm0+IGFyZSBhY3R1YWxseSBydW4KKyAgICAgIGZyb20gYSBzb2Z0aXJxLgorICAgIDwvcGFyYT4KKyAgIDwvc2VjdDE+CisKKyAgIDxzZWN0MSBpZD0ibG9jay11c2VyLXRpbWVycyI+CisgICAgPHRpdGxlPkxvY2tpbmcgQmV0d2VlbiBVc2VyIENvbnRleHQgYW5kIFRpbWVyczwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgIFRoaXMsIHRvbywgaXMgZXhhY3RseSB0aGUgc2FtZSBhcyBhYm92ZSwgYmVjYXVzZSA8Zmlyc3R0ZXJtCisgICAgICBsaW5rZW5kPSJnbG9zcy10aW1lcnMiPnRpbWVyczwvZmlyc3R0ZXJtPiBhcmUgYWN0dWFsbHkgcnVuIGZyb20KKyAgICAgIGEgc29mdGlycS4gIEZyb20gYSBsb2NraW5nIHBvaW50IG9mIHZpZXcsIHRhc2tsZXRzIGFuZCB0aW1lcnMKKyAgICAgIGFyZSBpZGVudGljYWwuCisgICAgPC9wYXJhPgorICAgPC9zZWN0MT4KKworICAgPHNlY3QxIGlkPSJsb2NrLXRhc2tsZXRzIj4KKyAgICA8dGl0bGU+TG9ja2luZyBCZXR3ZWVuIFRhc2tsZXRzL1RpbWVyczwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgIFNvbWV0aW1lcyBhIHRhc2tsZXQgb3IgdGltZXIgbWlnaHQgd2FudCB0byBzaGFyZSBkYXRhIHdpdGgKKyAgICAgIGFub3RoZXIgdGFza2xldCBvciB0aW1lci4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdDIgaWQ9ImxvY2stdGFza2xldHMtc2FtZSI+CisgICAgIDx0aXRsZT5UaGUgU2FtZSBUYXNrbGV0L1RpbWVyPC90aXRsZT4KKyAgICAgPHBhcmE+CisgICAgICAgU2luY2UgYSB0YXNrbGV0IGlzIG5ldmVyIHJ1biBvbiB0d28gQ1BVcyBhdCBvbmNlLCB5b3UgZG9uJ3QKKyAgICAgICBuZWVkIHRvIHdvcnJ5IGFib3V0IHlvdXIgdGFza2xldCBiZWluZyByZWVudHJhbnQgKHJ1bm5pbmcKKyAgICAgICB0d2ljZSBhdCBvbmNlKSwgZXZlbiBvbiBTTVAuCisgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QyPgorCisgICAgPHNlY3QyIGlkPSJsb2NrLXRhc2tsZXRzLWRpZmZlcmVudCI+CisgICAgIDx0aXRsZT5EaWZmZXJlbnQgVGFza2xldHMvVGltZXJzPC90aXRsZT4KKyAgICAgPHBhcmE+CisgICAgICAgSWYgYW5vdGhlciB0YXNrbGV0L3RpbWVyIHdhbnRzCisgICAgICAgdG8gc2hhcmUgZGF0YSB3aXRoIHlvdXIgdGFza2xldCBvciB0aW1lciAsIHlvdSB3aWxsIGJvdGggbmVlZCB0byB1c2UKKyAgICAgICA8ZnVuY3Rpb24+c3Bpbl9sb2NrKCk8L2Z1bmN0aW9uPiBhbmQKKyAgICAgICA8ZnVuY3Rpb24+c3Bpbl91bmxvY2soKTwvZnVuY3Rpb24+IGNhbGxzLiAgCisgICAgICAgPGZ1bmN0aW9uPnNwaW5fbG9ja19iaCgpPC9mdW5jdGlvbj4gaXMKKyAgICAgICB1bm5lY2Vzc2FyeSBoZXJlLCBhcyB5b3UgYXJlIGFscmVhZHkgaW4gYSB0YXNrbGV0LCBhbmQKKyAgICAgICBub25lIHdpbGwgYmUgcnVuIG9uIHRoZSBzYW1lIENQVS4KKyAgICAgPC9wYXJhPgorICAgIDwvc2VjdDI+CisgICA8L3NlY3QxPgorCisgICA8c2VjdDEgaWQ9ImxvY2stc29mdGlycXMiPgorICAgIDx0aXRsZT5Mb2NraW5nIEJldHdlZW4gU29mdGlycXM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICBPZnRlbiBhIHNvZnRpcnEgbWlnaHQKKyAgICAgIHdhbnQgdG8gc2hhcmUgZGF0YSB3aXRoIGl0c2VsZiBvciBhIHRhc2tsZXQvdGltZXIuCisgICAgPC9wYXJhPgorCisgICAgPHNlY3QyIGlkPSJsb2NrLXNvZnRpcnFzLXNhbWUiPgorICAgICA8dGl0bGU+VGhlIFNhbWUgU29mdGlycTwvdGl0bGU+CisKKyAgICAgPHBhcmE+CisgICAgICAgVGhlIHNhbWUgc29mdGlycSBjYW4gcnVuIG9uIHRoZSBvdGhlciBDUFVzOiB5b3UgY2FuIHVzZSBhCisgICAgICAgcGVyLUNQVSBhcnJheSAoc2VlIDx4cmVmIGxpbmtlbmQ9InBlci1jcHUiLz4pIGZvciBiZXR0ZXIKKyAgICAgICBwZXJmb3JtYW5jZS4gIElmIHlvdSdyZSBnb2luZyBzbyBmYXIgYXMgdG8gdXNlIGEgc29mdGlycSwKKyAgICAgICB5b3UgcHJvYmFibHkgY2FyZSBhYm91dCBzY2FsYWJsZSBwZXJmb3JtYW5jZSBlbm91Z2gKKyAgICAgICB0byBqdXN0aWZ5IHRoZSBleHRyYSBjb21wbGV4aXR5LgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICAgWW91J2xsIG5lZWQgdG8gdXNlIDxmdW5jdGlvbj5zcGluX2xvY2soKTwvZnVuY3Rpb24+IGFuZCAKKyAgICAgICA8ZnVuY3Rpb24+c3Bpbl91bmxvY2soKTwvZnVuY3Rpb24+IGZvciBzaGFyZWQgZGF0YS4KKyAgICAgPC9wYXJhPgorICAgIDwvc2VjdDI+CisKKyAgICA8c2VjdDIgaWQ9ImxvY2stc29mdGlycXMtZGlmZmVyZW50Ij4KKyAgICAgPHRpdGxlPkRpZmZlcmVudCBTb2Z0aXJxczwvdGl0bGU+CisKKyAgICAgPHBhcmE+CisgICAgICAgWW91J2xsIG5lZWQgdG8gdXNlIDxmdW5jdGlvbj5zcGluX2xvY2soKTwvZnVuY3Rpb24+IGFuZAorICAgICAgIDxmdW5jdGlvbj5zcGluX3VubG9jaygpPC9mdW5jdGlvbj4gZm9yIHNoYXJlZCBkYXRhLCB3aGV0aGVyIGl0CisgICAgICAgYmUgYSB0aW1lciwgdGFza2xldCwgZGlmZmVyZW50IHNvZnRpcnEgb3IgdGhlIHNhbWUgb3IgYW5vdGhlcgorICAgICAgIHNvZnRpcnE6IGFueSBvZiB0aGVtIGNvdWxkIGJlIHJ1bm5pbmcgb24gYSBkaWZmZXJlbnQgQ1BVLgorICAgICA8L3BhcmE+CisgICAgPC9zZWN0Mj4KKyAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iaGFyZGlycS1jb250ZXh0Ij4KKyAgIDx0aXRsZT5IYXJkIElSUSBDb250ZXh0PC90aXRsZT4KKworICAgPHBhcmE+CisgICAgIEhhcmR3YXJlIGludGVycnVwdHMgdXN1YWxseSBjb21tdW5pY2F0ZSB3aXRoIGEKKyAgICAgdGFza2xldCBvciBzb2Z0aXJxLiAgRnJlcXVlbnRseSB0aGlzIGludm9sdmVzIHB1dHRpbmcgd29yayBpbiBhCisgICAgIHF1ZXVlLCB3aGljaCB0aGUgc29mdGlycSB3aWxsIHRha2Ugb3V0LgorICAgPC9wYXJhPgorCisgICA8c2VjdDEgaWQ9ImhhcmRpcnEtc29mdGlycSI+CisgICAgPHRpdGxlPkxvY2tpbmcgQmV0d2VlbiBIYXJkIElSUSBhbmQgU29mdGlycXMvVGFza2xldHM8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICBJZiBhIGhhcmR3YXJlIGlycSBoYW5kbGVyIHNoYXJlcyBkYXRhIHdpdGggYSBzb2Z0aXJxLCB5b3UgaGF2ZQorICAgICAgdHdvIGNvbmNlcm5zLiAgRmlyc3RseSwgdGhlIHNvZnRpcnEgcHJvY2Vzc2luZyBjYW4gYmUKKyAgICAgIGludGVycnVwdGVkIGJ5IGEgaGFyZHdhcmUgaW50ZXJydXB0LCBhbmQgc2Vjb25kbHksIHRoZQorICAgICAgY3JpdGljYWwgcmVnaW9uIGNvdWxkIGJlIGVudGVyZWQgYnkgYSBoYXJkd2FyZSBpbnRlcnJ1cHQgb24KKyAgICAgIGFub3RoZXIgQ1BVLiAgVGhpcyBpcyB3aGVyZSA8ZnVuY3Rpb24+c3Bpbl9sb2NrX2lycSgpPC9mdW5jdGlvbj4gaXMgCisgICAgICB1c2VkLiAgSXQgaXMgZGVmaW5lZCB0byBkaXNhYmxlIGludGVycnVwdHMgb24gdGhhdCBjcHUsIHRoZW4gZ3JhYiAKKyAgICAgIHRoZSBsb2NrLiA8ZnVuY3Rpb24+c3Bpbl91bmxvY2tfaXJxKCk8L2Z1bmN0aW9uPiBkb2VzIHRoZSByZXZlcnNlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgVGhlIGlycSBoYW5kbGVyIGRvZXMgbm90IHRvIHVzZQorICAgICAgPGZ1bmN0aW9uPnNwaW5fbG9ja19pcnEoKTwvZnVuY3Rpb24+LCBiZWNhdXNlIHRoZSBzb2Z0aXJxIGNhbm5vdAorICAgICAgcnVuIHdoaWxlIHRoZSBpcnEgaGFuZGxlciBpcyBydW5uaW5nOiBpdCBjYW4gdXNlCisgICAgICA8ZnVuY3Rpb24+c3Bpbl9sb2NrKCk8L2Z1bmN0aW9uPiwgd2hpY2ggaXMgc2xpZ2h0bHkgZmFzdGVyLiAgVGhlCisgICAgICBvbmx5IGV4Y2VwdGlvbiB3b3VsZCBiZSBpZiBhIGRpZmZlcmVudCBoYXJkd2FyZSBpcnEgaGFuZGxlciB1c2VzCisgICAgICB0aGUgc2FtZSBsb2NrOiA8ZnVuY3Rpb24+c3Bpbl9sb2NrX2lycSgpPC9mdW5jdGlvbj4gd2lsbCBzdG9wCisgICAgICB0aGF0IGZyb20gaW50ZXJydXB0aW5nIHVzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgVGhpcyB3b3JrcyBwZXJmZWN0bHkgZm9yIFVQIGFzIHdlbGw6IHRoZSBzcGluIGxvY2sgdmFuaXNoZXMsCisgICAgICBhbmQgdGhpcyBtYWNybyBzaW1wbHkgYmVjb21lcyA8ZnVuY3Rpb24+bG9jYWxfaXJxX2Rpc2FibGUoKTwvZnVuY3Rpb24+CisgICAgICAoPGZpbGVuYW1lIGNsYXNzPSJoZWFkZXJmaWxlIj5pbmNsdWRlL2FzbS9zbXAuaDwvZmlsZW5hbWU+KSwgd2hpY2gKKyAgICAgIHByb3RlY3RzIHlvdSBmcm9tIHRoZSBzb2Z0aXJxL3Rhc2tsZXQvQkggYmVpbmcgcnVuLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgPGZ1bmN0aW9uPnNwaW5fbG9ja19pcnFzYXZlKCk8L2Z1bmN0aW9uPiAKKyAgICAgICg8ZmlsZW5hbWU+aW5jbHVkZS9saW51eC9zcGlubG9jay5oPC9maWxlbmFtZT4pIGlzIGEgdmFyaWFudAorICAgICAgd2hpY2ggc2F2ZXMgd2hldGhlciBpbnRlcnJ1cHRzIHdlcmUgb24gb3Igb2ZmIGluIGEgZmxhZ3Mgd29yZCwKKyAgICAgIHdoaWNoIGlzIHBhc3NlZCB0byA8ZnVuY3Rpb24+c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgpPC9mdW5jdGlvbj4uICBUaGlzCisgICAgICBtZWFucyB0aGF0IHRoZSBzYW1lIGNvZGUgY2FuIGJlIHVzZWQgaW5zaWRlIGFuIGhhcmQgaXJxIGhhbmRsZXIgKHdoZXJlCisgICAgICBpbnRlcnJ1cHRzIGFyZSBhbHJlYWR5IG9mZikgYW5kIGluIHNvZnRpcnFzICh3aGVyZSB0aGUgaXJxCisgICAgICBkaXNhYmxpbmcgaXMgcmVxdWlyZWQpLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgTm90ZSB0aGF0IHNvZnRpcnFzIChhbmQgaGVuY2UgdGFza2xldHMgYW5kIHRpbWVycykgYXJlIHJ1biBvbgorICAgICAgcmV0dXJuIGZyb20gaGFyZHdhcmUgaW50ZXJydXB0cywgc28KKyAgICAgIDxmdW5jdGlvbj5zcGluX2xvY2tfaXJxKCk8L2Z1bmN0aW9uPiBhbHNvIHN0b3BzIHRoZXNlLiAgSW4gdGhhdAorICAgICAgc2Vuc2UsIDxmdW5jdGlvbj5zcGluX2xvY2tfaXJxc2F2ZSgpPC9mdW5jdGlvbj4gaXMgdGhlIG1vc3QKKyAgICAgIGdlbmVyYWwgYW5kIHBvd2VyZnVsIGxvY2tpbmcgZnVuY3Rpb24uCisgICAgPC9wYXJhPgorCisgICA8L3NlY3QxPgorICAgPHNlY3QxIGlkPSJoYXJkaXJxLWhhcmRpcnEiPgorICAgIDx0aXRsZT5Mb2NraW5nIEJldHdlZW4gVHdvIEhhcmQgSVJRIEhhbmRsZXJzPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIEl0IGlzIHJhcmUgdG8gaGF2ZSB0byBzaGFyZSBkYXRhIGJldHdlZW4gdHdvIElSUSBoYW5kbGVycywgYnV0CisgICAgICBpZiB5b3UgZG8sIDxmdW5jdGlvbj5zcGluX2xvY2tfaXJxc2F2ZSgpPC9mdW5jdGlvbj4gc2hvdWxkIGJlCisgICAgICB1c2VkOiBpdCBpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgd2hldGhlciBhbGwgaW50ZXJydXB0cyBhcmUKKyAgICAgIGRpc2FibGVkIGluc2lkZSBpcnEgaGFuZGxlcnMgdGhlbXNlbHZlcy4KKyAgICA8L3BhcmE+CisgICA8L3NlY3QxPgorCisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iY2hlYXRzaGVldCI+CisgICA8dGl0bGU+Q2hlYXQgU2hlZXQgRm9yIExvY2tpbmc8L3RpdGxlPgorICAgPHBhcmE+CisgICAgIFBldGUgWmFpdGNldiBnaXZlcyB0aGUgZm9sbG93aW5nIHN1bW1hcnk6CisgICA8L3BhcmE+CisgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgPGxpc3RpdGVtPgorCTxwYXJhPgorICAgICAgICAgIElmIHlvdSBhcmUgaW4gYSBwcm9jZXNzIGNvbnRleHQgKGFueSBzeXNjYWxsKSBhbmQgd2FudCB0bworCWxvY2sgb3RoZXIgcHJvY2VzcyBvdXQsIHVzZSBhIG11dGV4LiAgWW91IGNhbiB0YWtlIGEgbXV0ZXgKKwlhbmQgc2xlZXAgKDxmdW5jdGlvbj5jb3B5X2Zyb21fdXNlciooPC9mdW5jdGlvbj4gb3IKKwk8ZnVuY3Rpb24+a21hbGxvYyh4LEdGUF9LRVJORUwpPC9mdW5jdGlvbj4pLgorICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT4KKwk8cGFyYT4KKwlPdGhlcndpc2UgKD09IGRhdGEgY2FuIGJlIHRvdWNoZWQgaW4gYW4gaW50ZXJydXB0KSwgdXNlCisJPGZ1bmN0aW9uPnNwaW5fbG9ja19pcnFzYXZlKCk8L2Z1bmN0aW9uPiBhbmQKKwk8ZnVuY3Rpb24+c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgpPC9mdW5jdGlvbj4uCisJPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT4KKwk8cGFyYT4KKwlBdm9pZCBob2xkaW5nIHNwaW5sb2NrIGZvciBtb3JlIHRoYW4gNSBsaW5lcyBvZiBjb2RlIGFuZAorCWFjcm9zcyBhbnkgZnVuY3Rpb24gY2FsbCAoZXhjZXB0IGFjY2Vzc29ycyBsaWtlCisJPGZ1bmN0aW9uPnJlYWRiPC9mdW5jdGlvbj4pLgorCTwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgPC9pdGVtaXplZGxpc3Q+CisKKyAgIDxzZWN0MSBpZD0ibWluaW11bS1sb2NrLXJlcWlyZW1lbnRzIj4KKyAgIDx0aXRsZT5UYWJsZSBvZiBNaW5pbXVtIFJlcXVpcmVtZW50czwvdGl0bGU+CisKKyAgIDxwYXJhPiBUaGUgZm9sbG93aW5nIHRhYmxlIGxpc3RzIHRoZSA8ZW1waGFzaXM+bWluaW11bTwvZW1waGFzaXM+CisJbG9ja2luZyByZXF1aXJlbWVudHMgYmV0d2VlbiB2YXJpb3VzIGNvbnRleHRzLiAgSW4gc29tZSBjYXNlcywKKwl0aGUgc2FtZSBjb250ZXh0IGNhbiBvbmx5IGJlIHJ1bm5pbmcgb24gb25lIENQVSBhdCBhIHRpbWUsIHNvCisJbm8gbG9ja2luZyBpcyByZXF1aXJlZCBmb3IgdGhhdCBjb250ZXh0IChlZy4gYSBwYXJ0aWN1bGFyCisJdGhyZWFkIGNhbiBvbmx5IHJ1biBvbiBvbmUgQ1BVIGF0IGEgdGltZSwgYnV0IGlmIGl0IG5lZWRzCisJc2hhcmVzIGRhdGEgd2l0aCBhbm90aGVyIHRocmVhZCwgbG9ja2luZyBpcyByZXF1aXJlZCkuCisgICA8L3BhcmE+CisgICA8cGFyYT4KKwlSZW1lbWJlciB0aGUgYWR2aWNlIGFib3ZlOiB5b3UgY2FuIGFsd2F5cyB1c2UKKwk8ZnVuY3Rpb24+c3Bpbl9sb2NrX2lycXNhdmUoKTwvZnVuY3Rpb24+LCB3aGljaCBpcyBhIHN1cGVyc2V0CisJb2YgYWxsIG90aGVyIHNwaW5sb2NrIHByaW1pdGl2ZXMuCisgICA8L3BhcmE+CisKKyAgIDx0YWJsZT4KKzx0aXRsZT5UYWJsZSBvZiBMb2NraW5nIFJlcXVpcmVtZW50czwvdGl0bGU+Cis8dGdyb3VwIGNvbHM9IjExIj4KKzx0Ym9keT4KKworPHJvdz4KKzxlbnRyeT48L2VudHJ5PgorPGVudHJ5PklSUSBIYW5kbGVyIEE8L2VudHJ5PgorPGVudHJ5PklSUSBIYW5kbGVyIEI8L2VudHJ5PgorPGVudHJ5PlNvZnRpcnEgQTwvZW50cnk+Cis8ZW50cnk+U29mdGlycSBCPC9lbnRyeT4KKzxlbnRyeT5UYXNrbGV0IEE8L2VudHJ5PgorPGVudHJ5PlRhc2tsZXQgQjwvZW50cnk+Cis8ZW50cnk+VGltZXIgQTwvZW50cnk+Cis8ZW50cnk+VGltZXIgQjwvZW50cnk+Cis8ZW50cnk+VXNlciBDb250ZXh0IEE8L2VudHJ5PgorPGVudHJ5PlVzZXIgQ29udGV4dCBCPC9lbnRyeT4KKzwvcm93PgorCis8cm93PgorPGVudHJ5PklSUSBIYW5kbGVyIEE8L2VudHJ5PgorPGVudHJ5Pk5vbmU8L2VudHJ5PgorPC9yb3c+CisKKzxyb3c+Cis8ZW50cnk+SVJRIEhhbmRsZXIgQjwvZW50cnk+Cis8ZW50cnk+U0xJUzwvZW50cnk+Cis8ZW50cnk+Tm9uZTwvZW50cnk+Cis8L3Jvdz4KKworPHJvdz4KKzxlbnRyeT5Tb2Z0aXJxIEE8L2VudHJ5PgorPGVudHJ5PlNMSTwvZW50cnk+Cis8ZW50cnk+U0xJPC9lbnRyeT4KKzxlbnRyeT5TTDwvZW50cnk+Cis8L3Jvdz4KKworPHJvdz4KKzxlbnRyeT5Tb2Z0aXJxIEI8L2VudHJ5PgorPGVudHJ5PlNMSTwvZW50cnk+Cis8ZW50cnk+U0xJPC9lbnRyeT4KKzxlbnRyeT5TTDwvZW50cnk+Cis8ZW50cnk+U0w8L2VudHJ5PgorPC9yb3c+CisKKzxyb3c+Cis8ZW50cnk+VGFza2xldCBBPC9lbnRyeT4KKzxlbnRyeT5TTEk8L2VudHJ5PgorPGVudHJ5PlNMSTwvZW50cnk+Cis8ZW50cnk+U0w8L2VudHJ5PgorPGVudHJ5PlNMPC9lbnRyeT4KKzxlbnRyeT5Ob25lPC9lbnRyeT4KKzwvcm93PgorCis8cm93PgorPGVudHJ5PlRhc2tsZXQgQjwvZW50cnk+Cis8ZW50cnk+U0xJPC9lbnRyeT4KKzxlbnRyeT5TTEk8L2VudHJ5PgorPGVudHJ5PlNMPC9lbnRyeT4KKzxlbnRyeT5TTDwvZW50cnk+Cis8ZW50cnk+U0w8L2VudHJ5PgorPGVudHJ5Pk5vbmU8L2VudHJ5PgorPC9yb3c+CisKKzxyb3c+Cis8ZW50cnk+VGltZXIgQTwvZW50cnk+Cis8ZW50cnk+U0xJPC9lbnRyeT4KKzxlbnRyeT5TTEk8L2VudHJ5PgorPGVudHJ5PlNMPC9lbnRyeT4KKzxlbnRyeT5TTDwvZW50cnk+Cis8ZW50cnk+U0w8L2VudHJ5PgorPGVudHJ5PlNMPC9lbnRyeT4KKzxlbnRyeT5Ob25lPC9lbnRyeT4KKzwvcm93PgorCis8cm93PgorPGVudHJ5PlRpbWVyIEI8L2VudHJ5PgorPGVudHJ5PlNMSTwvZW50cnk+Cis8ZW50cnk+U0xJPC9lbnRyeT4KKzxlbnRyeT5TTDwvZW50cnk+Cis8ZW50cnk+U0w8L2VudHJ5PgorPGVudHJ5PlNMPC9lbnRyeT4KKzxlbnRyeT5TTDwvZW50cnk+Cis8ZW50cnk+U0w8L2VudHJ5PgorPGVudHJ5Pk5vbmU8L2VudHJ5PgorPC9yb3c+CisKKzxyb3c+Cis8ZW50cnk+VXNlciBDb250ZXh0IEE8L2VudHJ5PgorPGVudHJ5PlNMSTwvZW50cnk+Cis8ZW50cnk+U0xJPC9lbnRyeT4KKzxlbnRyeT5TTEJIPC9lbnRyeT4KKzxlbnRyeT5TTEJIPC9lbnRyeT4KKzxlbnRyeT5TTEJIPC9lbnRyeT4KKzxlbnRyeT5TTEJIPC9lbnRyeT4KKzxlbnRyeT5TTEJIPC9lbnRyeT4KKzxlbnRyeT5TTEJIPC9lbnRyeT4KKzxlbnRyeT5Ob25lPC9lbnRyeT4KKzwvcm93PgorCis8cm93PgorPGVudHJ5PlVzZXIgQ29udGV4dCBCPC9lbnRyeT4KKzxlbnRyeT5TTEk8L2VudHJ5PgorPGVudHJ5PlNMSTwvZW50cnk+Cis8ZW50cnk+U0xCSDwvZW50cnk+Cis8ZW50cnk+U0xCSDwvZW50cnk+Cis8ZW50cnk+U0xCSDwvZW50cnk+Cis8ZW50cnk+U0xCSDwvZW50cnk+Cis8ZW50cnk+U0xCSDwvZW50cnk+Cis8ZW50cnk+U0xCSDwvZW50cnk+Cis8ZW50cnk+TUxJPC9lbnRyeT4KKzxlbnRyeT5Ob25lPC9lbnRyeT4KKzwvcm93PgorCis8L3Rib2R5PgorPC90Z3JvdXA+Cis8L3RhYmxlPgorCisgICA8dGFibGU+Cis8dGl0bGU+TGVnZW5kIGZvciBMb2NraW5nIFJlcXVpcmVtZW50cyBUYWJsZTwvdGl0bGU+Cis8dGdyb3VwIGNvbHM9IjIiPgorPHRib2R5PgorCis8cm93PgorPGVudHJ5PlNMSVM8L2VudHJ5PgorPGVudHJ5PnNwaW5fbG9ja19pcnFzYXZlPC9lbnRyeT4KKzwvcm93PgorPHJvdz4KKzxlbnRyeT5TTEk8L2VudHJ5PgorPGVudHJ5PnNwaW5fbG9ja19pcnE8L2VudHJ5PgorPC9yb3c+Cis8cm93PgorPGVudHJ5PlNMPC9lbnRyeT4KKzxlbnRyeT5zcGluX2xvY2s8L2VudHJ5PgorPC9yb3c+Cis8cm93PgorPGVudHJ5PlNMQkg8L2VudHJ5PgorPGVudHJ5PnNwaW5fbG9ja19iaDwvZW50cnk+Cis8L3Jvdz4KKzxyb3c+Cis8ZW50cnk+TUxJPC9lbnRyeT4KKzxlbnRyeT5tdXRleF9sb2NrX2ludGVycnVwdGlibGU8L2VudHJ5PgorPC9yb3c+CisKKzwvdGJvZHk+Cis8L3Rncm91cD4KKzwvdGFibGU+CisKKzwvc2VjdDE+Cis8L2NoYXB0ZXI+CisKKzxjaGFwdGVyIGlkPSJ0cnlsb2NrLWZ1bmN0aW9ucyI+CisgPHRpdGxlPlRoZSB0cnlsb2NrIEZ1bmN0aW9uczwvdGl0bGU+CisgIDxwYXJhPgorICAgVGhlcmUgYXJlIGZ1bmN0aW9ucyB0aGF0IHRyeSB0byBhY3F1aXJlIGEgbG9jayBvbmx5IG9uY2UgYW5kIGltbWVkaWF0ZWx5CisgICByZXR1cm4gYSB2YWx1ZSB0ZWxsaW5nIGFib3V0IHN1Y2Nlc3Mgb3IgZmFpbHVyZSB0byBhY3F1aXJlIHRoZSBsb2NrLgorICAgVGhleSBjYW4gYmUgdXNlZCBpZiB5b3UgbmVlZCBubyBhY2Nlc3MgdG8gdGhlIGRhdGEgcHJvdGVjdGVkIHdpdGggdGhlIGxvY2sKKyAgIHdoZW4gc29tZSBvdGhlciB0aHJlYWQgaXMgaG9sZGluZyB0aGUgbG9jay4gWW91IHNob3VsZCBhY3F1aXJlIHRoZSBsb2NrCisgICBsYXRlciBpZiB5b3UgdGhlbiBuZWVkIGFjY2VzcyB0byB0aGUgZGF0YSBwcm90ZWN0ZWQgd2l0aCB0aGUgbG9jay4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgIDxmdW5jdGlvbj5zcGluX3RyeWxvY2soKTwvZnVuY3Rpb24+IGRvZXMgbm90IHNwaW4gYnV0IHJldHVybnMgbm9uLXplcm8gaWYKKyAgICBpdCBhY3F1aXJlcyB0aGUgc3BpbmxvY2sgb24gdGhlIGZpcnN0IHRyeSBvciAwIGlmIG5vdC4gVGhpcyBmdW5jdGlvbiBjYW4KKyAgICBiZSB1c2VkIGluIGFsbCBjb250ZXh0cyBsaWtlIDxmdW5jdGlvbj5zcGluX2xvY2s8L2Z1bmN0aW9uPjogeW91IG11c3QgaGF2ZQorICAgIGRpc2FibGVkIHRoZSBjb250ZXh0cyB0aGF0IG1pZ2h0IGludGVycnVwdCB5b3UgYW5kIGFjcXVpcmUgdGhlIHNwaW4gbG9jay4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgIDxmdW5jdGlvbj5tdXRleF90cnlsb2NrKCk8L2Z1bmN0aW9uPiBkb2VzIG5vdCBzdXNwZW5kIHlvdXIgdGFzaworICAgIGJ1dCByZXR1cm5zIG5vbi16ZXJvIGlmIGl0IGNvdWxkIGxvY2sgdGhlIG11dGV4IG9uIHRoZSBmaXJzdCB0cnkKKyAgICBvciAwIGlmIG5vdC4gVGhpcyBmdW5jdGlvbiBjYW5ub3QgYmUgc2FmZWx5IHVzZWQgaW4gaGFyZHdhcmUgb3Igc29mdHdhcmUKKyAgICBpbnRlcnJ1cHQgY29udGV4dHMgZGVzcGl0ZSBub3Qgc2xlZXBpbmcuCisgIDwvcGFyYT4KKzwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iRXhhbXBsZXMiPgorICAgPHRpdGxlPkNvbW1vbiBFeGFtcGxlczwvdGl0bGU+CisgICAgPHBhcmE+CitMZXQncyBzdGVwIHRocm91Z2ggYSBzaW1wbGUgZXhhbXBsZTogYSBjYWNoZSBvZiBudW1iZXIgdG8gbmFtZQorbWFwcGluZ3MuICBUaGUgY2FjaGUga2VlcHMgYSBjb3VudCBvZiBob3cgb2Z0ZW4gZWFjaCBvZiB0aGUgb2JqZWN0cyBpcwordXNlZCwgYW5kIHdoZW4gaXQgZ2V0cyBmdWxsLCB0aHJvd3Mgb3V0IHRoZSBsZWFzdCB1c2VkIG9uZS4KKworICAgIDwvcGFyYT4KKworICAgPHNlY3QxIGlkPSJleGFtcGxlcy11c2VyY29udGV4dCI+CisgICAgPHRpdGxlPkFsbCBJbiBVc2VyIENvbnRleHQ8L3RpdGxlPgorICAgIDxwYXJhPgorRm9yIG91ciBmaXJzdCBleGFtcGxlLCB3ZSBhc3N1bWUgdGhhdCBhbGwgb3BlcmF0aW9ucyBhcmUgaW4gdXNlcgorY29udGV4dCAoaWUuIGZyb20gc3lzdGVtIGNhbGxzKSwgc28gd2UgY2FuIHNsZWVwLiAgVGhpcyBtZWFucyB3ZSBjYW4KK3VzZSBhIG11dGV4IHRvIHByb3RlY3QgdGhlIGNhY2hlIGFuZCBhbGwgdGhlIG9iamVjdHMgd2l0aGluCitpdC4gIEhlcmUncyB0aGUgY29kZToKKyAgICA8L3BhcmE+CisKKyAgICA8cHJvZ3JhbWxpc3Rpbmc+CisjaW5jbHVkZSAmbHQ7bGludXgvbGlzdC5oJmd0OworI2luY2x1ZGUgJmx0O2xpbnV4L3NsYWIuaCZndDsKKyNpbmNsdWRlICZsdDtsaW51eC9zdHJpbmcuaCZndDsKKyNpbmNsdWRlICZsdDtsaW51eC9tdXRleC5oJmd0OworI2luY2x1ZGUgJmx0O2FzbS9lcnJuby5oJmd0OworCitzdHJ1Y3Qgb2JqZWN0Cit7CisgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKyAgICAgICAgaW50IGlkOworICAgICAgICBjaGFyIG5hbWVbMzJdOworICAgICAgICBpbnQgcG9wdWxhcml0eTsKK307CisKKy8qIFByb3RlY3RzIHRoZSBjYWNoZSwgY2FjaGVfbnVtLCBhbmQgdGhlIG9iamVjdHMgd2l0aGluIGl0ICovCitzdGF0aWMgREVGSU5FX01VVEVYKGNhY2hlX2xvY2spOworc3RhdGljIExJU1RfSEVBRChjYWNoZSk7CitzdGF0aWMgdW5zaWduZWQgaW50IGNhY2hlX251bSA9IDA7CisjZGVmaW5lIE1BWF9DQUNIRV9TSVpFIDEwCisKKy8qIE11c3QgYmUgaG9sZGluZyBjYWNoZV9sb2NrICovCitzdGF0aWMgc3RydWN0IG9iamVjdCAqX19jYWNoZV9maW5kKGludCBpZCkKK3sKKyAgICAgICAgc3RydWN0IG9iamVjdCAqaTsKKworICAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGksICZhbXA7Y2FjaGUsIGxpc3QpCisgICAgICAgICAgICAgICAgaWYgKGktJmd0O2lkID09IGlkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpLSZndDtwb3B1bGFyaXR5Kys7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIHJldHVybiBOVUxMOworfQorCisvKiBNdXN0IGJlIGhvbGRpbmcgY2FjaGVfbG9jayAqLworc3RhdGljIHZvaWQgX19jYWNoZV9kZWxldGUoc3RydWN0IG9iamVjdCAqb2JqKQoreworICAgICAgICBCVUdfT04oIW9iaik7CisgICAgICAgIGxpc3RfZGVsKCZhbXA7b2JqLSZndDtsaXN0KTsKKyAgICAgICAga2ZyZWUob2JqKTsKKyAgICAgICAgY2FjaGVfbnVtLS07Cit9CisKKy8qIE11c3QgYmUgaG9sZGluZyBjYWNoZV9sb2NrICovCitzdGF0aWMgdm9pZCBfX2NhY2hlX2FkZChzdHJ1Y3Qgb2JqZWN0ICpvYmopCit7CisgICAgICAgIGxpc3RfYWRkKCZhbXA7b2JqLSZndDtsaXN0LCAmYW1wO2NhY2hlKTsKKyAgICAgICAgaWYgKCsrY2FjaGVfbnVtID4gTUFYX0NBQ0hFX1NJWkUpIHsKKyAgICAgICAgICAgICAgICBzdHJ1Y3Qgb2JqZWN0ICppLCAqb3V0Y2FzdCA9IE5VTEw7CisgICAgICAgICAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShpLCAmYW1wO2NhY2hlLCBsaXN0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW91dGNhc3QgfHwgaS0mZ3Q7cG9wdWxhcml0eSAmbHQ7IG91dGNhc3QtJmd0O3BvcHVsYXJpdHkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGNhc3QgPSBpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBfX2NhY2hlX2RlbGV0ZShvdXRjYXN0KTsKKyAgICAgICAgfQorfQorCitpbnQgY2FjaGVfYWRkKGludCBpZCwgY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICAgICAgc3RydWN0IG9iamVjdCAqb2JqOworCisgICAgICAgIGlmICgob2JqID0ga21hbGxvYyhzaXplb2YoKm9iaiksIEdGUF9LRVJORUwpKSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOworCisgICAgICAgIHN0cmxjcHkob2JqLSZndDtuYW1lLCBuYW1lLCBzaXplb2Yob2JqLSZndDtuYW1lKSk7CisgICAgICAgIG9iai0mZ3Q7aWQgPSBpZDsKKyAgICAgICAgb2JqLSZndDtwb3B1bGFyaXR5ID0gMDsKKworICAgICAgICBtdXRleF9sb2NrKCZhbXA7Y2FjaGVfbG9jayk7CisgICAgICAgIF9fY2FjaGVfYWRkKG9iaik7CisgICAgICAgIG11dGV4X3VubG9jaygmYW1wO2NhY2hlX2xvY2spOworICAgICAgICByZXR1cm4gMDsKK30KKwordm9pZCBjYWNoZV9kZWxldGUoaW50IGlkKQoreworICAgICAgICBtdXRleF9sb2NrKCZhbXA7Y2FjaGVfbG9jayk7CisgICAgICAgIF9fY2FjaGVfZGVsZXRlKF9fY2FjaGVfZmluZChpZCkpOworICAgICAgICBtdXRleF91bmxvY2soJmFtcDtjYWNoZV9sb2NrKTsKK30KKworaW50IGNhY2hlX2ZpbmQoaW50IGlkLCBjaGFyICpuYW1lKQoreworICAgICAgICBzdHJ1Y3Qgb2JqZWN0ICpvYmo7CisgICAgICAgIGludCByZXQgPSAtRU5PRU5UOworCisgICAgICAgIG11dGV4X2xvY2soJmFtcDtjYWNoZV9sb2NrKTsKKyAgICAgICAgb2JqID0gX19jYWNoZV9maW5kKGlkKTsKKyAgICAgICAgaWYgKG9iaikgeworICAgICAgICAgICAgICAgIHJldCA9IDA7CisgICAgICAgICAgICAgICAgc3RyY3B5KG5hbWUsIG9iai0mZ3Q7bmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgbXV0ZXhfdW5sb2NrKCZhbXA7Y2FjaGVfbG9jayk7CisgICAgICAgIHJldHVybiByZXQ7Cit9Cis8L3Byb2dyYW1saXN0aW5nPgorCisgICAgPHBhcmE+CitOb3RlIHRoYXQgd2UgYWx3YXlzIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSBjYWNoZV9sb2NrIHdoZW4gd2UgYWRkLAorZGVsZXRlLCBvciBsb29rIHVwIHRoZSBjYWNoZTogYm90aCB0aGUgY2FjaGUgaW5mcmFzdHJ1Y3R1cmUgaXRzZWxmIGFuZAordGhlIGNvbnRlbnRzIG9mIHRoZSBvYmplY3RzIGFyZSBwcm90ZWN0ZWQgYnkgdGhlIGxvY2suICBJbiB0aGlzIGNhc2UKK2l0J3MgZWFzeSwgc2luY2Ugd2UgY29weSB0aGUgZGF0YSBmb3IgdGhlIHVzZXIsIGFuZCBuZXZlciBsZXQgdGhlbQorYWNjZXNzIHRoZSBvYmplY3RzIGRpcmVjdGx5LgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KK1RoZXJlIGlzIGEgc2xpZ2h0IChhbmQgY29tbW9uKSBvcHRpbWl6YXRpb24gaGVyZTogaW4KKzxmdW5jdGlvbj5jYWNoZV9hZGQ8L2Z1bmN0aW9uPiB3ZSBzZXQgdXAgdGhlIGZpZWxkcyBvZiB0aGUgb2JqZWN0CitiZWZvcmUgZ3JhYmJpbmcgdGhlIGxvY2suICBUaGlzIGlzIHNhZmUsIGFzIG5vLW9uZSBlbHNlIGNhbiBhY2Nlc3MgaXQKK3VudGlsIHdlIHB1dCBpdCBpbiBjYWNoZS4KKyAgICA8L3BhcmE+CisgICAgPC9zZWN0MT4KKworICAgPHNlY3QxIGlkPSJleGFtcGxlcy1pbnRlcnJ1cHQiPgorICAgIDx0aXRsZT5BY2Nlc3NpbmcgRnJvbSBJbnRlcnJ1cHQgQ29udGV4dDwvdGl0bGU+CisgICAgPHBhcmE+CitOb3cgY29uc2lkZXIgdGhlIGNhc2Ugd2hlcmUgPGZ1bmN0aW9uPmNhY2hlX2ZpbmQ8L2Z1bmN0aW9uPiBjYW4gYmUKK2NhbGxlZCBmcm9tIGludGVycnVwdCBjb250ZXh0OiBlaXRoZXIgYSBoYXJkd2FyZSBpbnRlcnJ1cHQgb3IgYQorc29mdGlycS4gIEFuIGV4YW1wbGUgd291bGQgYmUgYSB0aW1lciB3aGljaCBkZWxldGVzIG9iamVjdCBmcm9tIHRoZQorY2FjaGUuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorVGhlIGNoYW5nZSBpcyBzaG93biBiZWxvdywgaW4gc3RhbmRhcmQgcGF0Y2ggZm9ybWF0OiB0aGUKKzxzeW1ib2w+LTwvc3ltYm9sPiBhcmUgbGluZXMgd2hpY2ggYXJlIHRha2VuIGF3YXksIGFuZCB0aGUKKzxzeW1ib2w+Kzwvc3ltYm9sPiBhcmUgbGluZXMgd2hpY2ggYXJlIGFkZGVkLgorICAgIDwvcGFyYT4KKzxwcm9ncmFtbGlzdGluZz4KKy0tLSBjYWNoZS5jLnVzZXJjb250ZXh0CTIwMDMtMTItMDkgMTM6NTg6NTQuMDAwMDAwMDAwICsxMTAwCisrKysgY2FjaGUuYy5pbnRlcnJ1cHQJMjAwMy0xMi0wOSAxNDowNzo0OS4wMDAwMDAwMDAgKzExMDAKK0BAIC0xMiw3ICsxMiw3IEBACisgICAgICAgICBpbnQgcG9wdWxhcml0eTsKKyB9OworCistc3RhdGljIERFRklORV9NVVRFWChjYWNoZV9sb2NrKTsKKytzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGNhY2hlX2xvY2spOworIHN0YXRpYyBMSVNUX0hFQUQoY2FjaGUpOworIHN0YXRpYyB1bnNpZ25lZCBpbnQgY2FjaGVfbnVtID0gMDsKKyAjZGVmaW5lIE1BWF9DQUNIRV9TSVpFIDEwCitAQCAtNTUsNiArNTUsNyBAQAorIGludCBjYWNoZV9hZGQoaW50IGlkLCBjb25zdCBjaGFyICpuYW1lKQorIHsKKyAgICAgICAgIHN0cnVjdCBvYmplY3QgKm9iajsKKysgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKyAgICAgICAgIGlmICgob2JqID0ga21hbGxvYyhzaXplb2YoKm9iaiksIEdGUF9LRVJORUwpKSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKK0BAIC02MywzMCArNjQsMzMgQEAKKyAgICAgICAgIG9iai0mZ3Q7aWQgPSBpZDsKKyAgICAgICAgIG9iai0mZ3Q7cG9wdWxhcml0eSA9IDA7CisKKy0gICAgICAgIG11dGV4X2xvY2soJmFtcDtjYWNoZV9sb2NrKTsKKysgICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZhbXA7Y2FjaGVfbG9jaywgZmxhZ3MpOworICAgICAgICAgX19jYWNoZV9hZGQob2JqKTsKKy0gICAgICAgIG11dGV4X3VubG9jaygmYW1wO2NhY2hlX2xvY2spOworKyAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2NhY2hlX2xvY2ssIGZsYWdzKTsKKyAgICAgICAgIHJldHVybiAwOworIH0KKworIHZvaWQgY2FjaGVfZGVsZXRlKGludCBpZCkKKyB7CistICAgICAgICBtdXRleF9sb2NrKCZhbXA7Y2FjaGVfbG9jayk7CisrICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworKworKyAgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtjYWNoZV9sb2NrLCBmbGFncyk7CisgICAgICAgICBfX2NhY2hlX2RlbGV0ZShfX2NhY2hlX2ZpbmQoaWQpKTsKKy0gICAgICAgIG11dGV4X3VubG9jaygmYW1wO2NhY2hlX2xvY2spOworKyAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2NhY2hlX2xvY2ssIGZsYWdzKTsKKyB9CisKKyBpbnQgY2FjaGVfZmluZChpbnQgaWQsIGNoYXIgKm5hbWUpCisgeworICAgICAgICAgc3RydWN0IG9iamVjdCAqb2JqOworICAgICAgICAgaW50IHJldCA9IC1FTk9FTlQ7CisrICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworCistICAgICAgICBtdXRleF9sb2NrKCZhbXA7Y2FjaGVfbG9jayk7CisrICAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2NhY2hlX2xvY2ssIGZsYWdzKTsKKyAgICAgICAgIG9iaiA9IF9fY2FjaGVfZmluZChpZCk7CisgICAgICAgICBpZiAob2JqKSB7CisgICAgICAgICAgICAgICAgIHJldCA9IDA7CisgICAgICAgICAgICAgICAgIHN0cmNweShuYW1lLCBvYmotJmd0O25hbWUpOworICAgICAgICAgfQorLSAgICAgICAgbXV0ZXhfdW5sb2NrKCZhbXA7Y2FjaGVfbG9jayk7CisrICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7Y2FjaGVfbG9jaywgZmxhZ3MpOworICAgICAgICAgcmV0dXJuIHJldDsKKyB9Cis8L3Byb2dyYW1saXN0aW5nPgorCisgICAgPHBhcmE+CitOb3RlIHRoYXQgdGhlIDxmdW5jdGlvbj5zcGluX2xvY2tfaXJxc2F2ZTwvZnVuY3Rpb24+IHdpbGwgdHVybiBvZmYKK2ludGVycnVwdHMgaWYgdGhleSBhcmUgb24sIG90aGVyd2lzZSBkb2VzIG5vdGhpbmcgKGlmIHdlIGFyZSBhbHJlYWR5CitpbiBhbiBpbnRlcnJ1cHQgaGFuZGxlciksIGhlbmNlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc2FmZSB0byBjYWxsIGZyb20KK2FueSBjb250ZXh0LgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KK1VuZm9ydHVuYXRlbHksIDxmdW5jdGlvbj5jYWNoZV9hZGQ8L2Z1bmN0aW9uPiBjYWxscworPGZ1bmN0aW9uPmttYWxsb2M8L2Z1bmN0aW9uPiB3aXRoIHRoZSA8c3ltYm9sPkdGUF9LRVJORUw8L3N5bWJvbD4KK2ZsYWcsIHdoaWNoIGlzIG9ubHkgbGVnYWwgaW4gdXNlciBjb250ZXh0LiAgSSBoYXZlIGFzc3VtZWQgdGhhdAorPGZ1bmN0aW9uPmNhY2hlX2FkZDwvZnVuY3Rpb24+IGlzIHN0aWxsIG9ubHkgY2FsbGVkIGluIHVzZXIgY29udGV4dCwKK290aGVyd2lzZSB0aGlzIHNob3VsZCBiZWNvbWUgYSBwYXJhbWV0ZXIgdG8KKzxmdW5jdGlvbj5jYWNoZV9hZGQ8L2Z1bmN0aW9uPi4KKyAgICA8L3BhcmE+CisgIDwvc2VjdDE+CisgICA8c2VjdDEgaWQ9ImV4YW1wbGVzLXJlZmNudCI+CisgICAgPHRpdGxlPkV4cG9zaW5nIE9iamVjdHMgT3V0c2lkZSBUaGlzIEZpbGU8L3RpdGxlPgorICAgIDxwYXJhPgorSWYgb3VyIG9iamVjdHMgY29udGFpbmVkIG1vcmUgaW5mb3JtYXRpb24sIGl0IG1pZ2h0IG5vdCBiZSBzdWZmaWNpZW50Cit0byBjb3B5IHRoZSBpbmZvcm1hdGlvbiBpbiBhbmQgb3V0OiBvdGhlciBwYXJ0cyBvZiB0aGUgY29kZSBtaWdodCB3YW50Cit0byBrZWVwIHBvaW50ZXJzIHRvIHRoZXNlIG9iamVjdHMsIGZvciBleGFtcGxlLCByYXRoZXIgdGhhbiBsb29raW5nIHVwCit0aGUgaWQgZXZlcnkgdGltZS4gIFRoaXMgcHJvZHVjZXMgdHdvIHByb2JsZW1zLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KK1RoZSBmaXJzdCBwcm9ibGVtIGlzIHRoYXQgd2UgdXNlIHRoZSA8c3ltYm9sPmNhY2hlX2xvY2s8L3N5bWJvbD4gdG8KK3Byb3RlY3Qgb2JqZWN0czogd2UnZCBuZWVkIHRvIG1ha2UgdGhpcyBub24tc3RhdGljIHNvIHRoZSByZXN0IG9mIHRoZQorY29kZSBjYW4gdXNlIGl0LiAgVGhpcyBtYWtlcyBsb2NraW5nIHRyaWNraWVyLCBhcyBpdCBpcyBubyBsb25nZXIgYWxsCitpbiBvbmUgcGxhY2UuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorVGhlIHNlY29uZCBwcm9ibGVtIGlzIHRoZSBsaWZldGltZSBwcm9ibGVtOiBpZiBhbm90aGVyIHN0cnVjdHVyZSBrZWVwcworYSBwb2ludGVyIHRvIGFuIG9iamVjdCwgaXQgcHJlc3VtYWJseSBleHBlY3RzIHRoYXQgcG9pbnRlciB0byByZW1haW4KK3ZhbGlkLiAgVW5mb3J0dW5hdGVseSwgdGhpcyBpcyBvbmx5IGd1YXJhbnRlZWQgd2hpbGUgeW91IGhvbGQgdGhlCitsb2NrLCBvdGhlcndpc2Ugc29tZW9uZSBtaWdodCBjYWxsIDxmdW5jdGlvbj5jYWNoZV9kZWxldGU8L2Z1bmN0aW9uPgorYW5kIGV2ZW4gd29yc2UsIGFkZCBhbm90aGVyIG9iamVjdCwgcmUtdXNpbmcgdGhlIHNhbWUgYWRkcmVzcy4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CitBcyB0aGVyZSBpcyBvbmx5IG9uZSBsb2NrLCB5b3UgY2FuJ3QgaG9sZCBpdCBmb3JldmVyOiBuby1vbmUgZWxzZSB3b3VsZAorZ2V0IGFueSB3b3JrIGRvbmUuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorVGhlIHNvbHV0aW9uIHRvIHRoaXMgcHJvYmxlbSBpcyB0byB1c2UgYSByZWZlcmVuY2UgY291bnQ6IGV2ZXJ5b25lIHdobworaGFzIGEgcG9pbnRlciB0byB0aGUgb2JqZWN0IGluY3JlYXNlcyBpdCB3aGVuIHRoZXkgZmlyc3QgZ2V0IHRoZQorb2JqZWN0LCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB3aGVuIHRoZXkncmUgZmluaXNoZWQgd2l0aCBpdC4KK1dob2V2ZXIgZHJvcHMgaXQgdG8gemVybyBrbm93cyBpdCBpcyB1bnVzZWQsIGFuZCBjYW4gYWN0dWFsbHkgZGVsZXRlIGl0LgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KK0hlcmUgaXMgdGhlIGNvZGU6CisgICAgPC9wYXJhPgorCis8cHJvZ3JhbWxpc3Rpbmc+CistLS0gY2FjaGUuYy5pbnRlcnJ1cHQJMjAwMy0xMi0wOSAxNDoyNTo0My4wMDAwMDAwMDAgKzExMDAKKysrKyBjYWNoZS5jLnJlZmNudAkyMDAzLTEyLTA5IDE0OjMzOjA1LjAwMDAwMDAwMCArMTEwMAorQEAgLTcsNiArNyw3IEBACisgc3RydWN0IG9iamVjdAorIHsKKyAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKysgICAgICAgIHVuc2lnbmVkIGludCByZWZjbnQ7CisgICAgICAgICBpbnQgaWQ7CisgICAgICAgICBjaGFyIG5hbWVbMzJdOworICAgICAgICAgaW50IHBvcHVsYXJpdHk7CitAQCAtMTcsNiArMTgsMzUgQEAKKyBzdGF0aWMgdW5zaWduZWQgaW50IGNhY2hlX251bSA9IDA7CisgI2RlZmluZSBNQVhfQ0FDSEVfU0laRSAxMAorCisrc3RhdGljIHZvaWQgX19vYmplY3RfcHV0KHN0cnVjdCBvYmplY3QgKm9iaikKKyt7CisrICAgICAgICBpZiAoLS1vYmotJmd0O3JlZmNudCA9PSAwKQorKyAgICAgICAgICAgICAgICBrZnJlZShvYmopOworK30KKysKKytzdGF0aWMgdm9pZCBfX29iamVjdF9nZXQoc3RydWN0IG9iamVjdCAqb2JqKQorK3sKKysgICAgICAgIG9iai0mZ3Q7cmVmY250Kys7CisrfQorKworK3ZvaWQgb2JqZWN0X3B1dChzdHJ1Y3Qgb2JqZWN0ICpvYmopCisreworKyAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKysKKysgICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZhbXA7Y2FjaGVfbG9jaywgZmxhZ3MpOworKyAgICAgICAgX19vYmplY3RfcHV0KG9iaik7CisrICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7Y2FjaGVfbG9jaywgZmxhZ3MpOworK30KKysKKyt2b2lkIG9iamVjdF9nZXQoc3RydWN0IG9iamVjdCAqb2JqKQorK3sKKysgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisrCisrICAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2NhY2hlX2xvY2ssIGZsYWdzKTsKKysgICAgICAgIF9fb2JqZWN0X2dldChvYmopOworKyAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2NhY2hlX2xvY2ssIGZsYWdzKTsKKyt9CisrCisgLyogTXVzdCBiZSBob2xkaW5nIGNhY2hlX2xvY2sgKi8KKyBzdGF0aWMgc3RydWN0IG9iamVjdCAqX19jYWNoZV9maW5kKGludCBpZCkKKyB7CitAQCAtMzUsNiArNjUsNyBAQAorIHsKKyAgICAgICAgIEJVR19PTighb2JqKTsKKyAgICAgICAgIGxpc3RfZGVsKCZhbXA7b2JqLSZndDtsaXN0KTsKKysgICAgICAgIF9fb2JqZWN0X3B1dChvYmopOworICAgICAgICAgY2FjaGVfbnVtLS07CisgfQorCitAQCAtNjMsNiArOTQsNyBAQAorICAgICAgICAgc3RybGNweShvYmotJmd0O25hbWUsIG5hbWUsIHNpemVvZihvYmotJmd0O25hbWUpKTsKKyAgICAgICAgIG9iai0mZ3Q7aWQgPSBpZDsKKyAgICAgICAgIG9iai0mZ3Q7cG9wdWxhcml0eSA9IDA7CisrICAgICAgICBvYmotJmd0O3JlZmNudCA9IDE7IC8qIFRoZSBjYWNoZSBob2xkcyBhIHJlZmVyZW5jZSAqLworCisgICAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2NhY2hlX2xvY2ssIGZsYWdzKTsKKyAgICAgICAgIF9fY2FjaGVfYWRkKG9iaik7CitAQCAtNzksMTggKzExMSwxNSBAQAorICAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2NhY2hlX2xvY2ssIGZsYWdzKTsKKyB9CisKKy1pbnQgY2FjaGVfZmluZChpbnQgaWQsIGNoYXIgKm5hbWUpCisrc3RydWN0IG9iamVjdCAqY2FjaGVfZmluZChpbnQgaWQpCisgeworICAgICAgICAgc3RydWN0IG9iamVjdCAqb2JqOworLSAgICAgICAgaW50IHJldCA9IC1FTk9FTlQ7CisgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworCisgICAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2NhY2hlX2xvY2ssIGZsYWdzKTsKKyAgICAgICAgIG9iaiA9IF9fY2FjaGVfZmluZChpZCk7CistICAgICAgICBpZiAob2JqKSB7CistICAgICAgICAgICAgICAgIHJldCA9IDA7CistICAgICAgICAgICAgICAgIHN0cmNweShuYW1lLCBvYmotJmd0O25hbWUpOworLSAgICAgICAgfQorKyAgICAgICAgaWYgKG9iaikKKysgICAgICAgICAgICAgICAgX19vYmplY3RfZ2V0KG9iaik7CisgICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7Y2FjaGVfbG9jaywgZmxhZ3MpOworLSAgICAgICAgcmV0dXJuIHJldDsKKysgICAgICAgIHJldHVybiBvYmo7CisgfQorPC9wcm9ncmFtbGlzdGluZz4KKworPHBhcmE+CitXZSBlbmNhcHN1bGF0ZSB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIGluIHRoZSBzdGFuZGFyZCAnZ2V0JyBhbmQgJ3B1dCcKK2Z1bmN0aW9ucy4gIE5vdyB3ZSBjYW4gcmV0dXJuIHRoZSBvYmplY3QgaXRzZWxmIGZyb20KKzxmdW5jdGlvbj5jYWNoZV9maW5kPC9mdW5jdGlvbj4gd2hpY2ggaGFzIHRoZSBhZHZhbnRhZ2UgdGhhdCB0aGUgdXNlcgorY2FuIG5vdyBzbGVlcCBob2xkaW5nIHRoZSBvYmplY3QgKGVnLiB0bworPGZ1bmN0aW9uPmNvcHlfdG9fdXNlcjwvZnVuY3Rpb24+IHRvIG5hbWUgdG8gdXNlcnNwYWNlKS4KKzwvcGFyYT4KKzxwYXJhPgorVGhlIG90aGVyIHBvaW50IHRvIG5vdGUgaXMgdGhhdCBJIHNhaWQgYSByZWZlcmVuY2Ugc2hvdWxkIGJlIGhlbGQgZm9yCitldmVyeSBwb2ludGVyIHRvIHRoZSBvYmplY3Q6IHRodXMgdGhlIHJlZmVyZW5jZSBjb3VudCBpcyAxIHdoZW4gZmlyc3QKK2luc2VydGVkIGludG8gdGhlIGNhY2hlLiAgSW4gc29tZSB2ZXJzaW9ucyB0aGUgZnJhbWV3b3JrIGRvZXMgbm90IGhvbGQKK2EgcmVmZXJlbmNlIGNvdW50LCBidXQgdGhleSBhcmUgbW9yZSBjb21wbGljYXRlZC4KKzwvcGFyYT4KKworICAgPHNlY3QyIGlkPSJleGFtcGxlcy1yZWZjbnQtYXRvbWljIj4KKyAgICA8dGl0bGU+VXNpbmcgQXRvbWljIE9wZXJhdGlvbnMgRm9yIFRoZSBSZWZlcmVuY2UgQ291bnQ8L3RpdGxlPgorPHBhcmE+CitJbiBwcmFjdGljZSwgPHR5cGU+YXRvbWljX3Q8L3R5cGU+IHdvdWxkIHVzdWFsbHkgYmUgdXNlZCBmb3IKKzxzdHJ1Y3RmaWVsZD5yZWZjbnQ8L3N0cnVjdGZpZWxkPi4gIFRoZXJlIGFyZSBhIG51bWJlciBvZiBhdG9taWMKK29wZXJhdGlvbnMgZGVmaW5lZCBpbgorCis8ZmlsZW5hbWUgY2xhc3M9ImhlYWRlcmZpbGUiPmluY2x1ZGUvYXNtL2F0b21pYy5oPC9maWxlbmFtZT46IHRoZXNlIGFyZQorZ3VhcmFudGVlZCB0byBiZSBzZWVuIGF0b21pY2FsbHkgZnJvbSBhbGwgQ1BVcyBpbiB0aGUgc3lzdGVtLCBzbyBubworbG9jayBpcyByZXF1aXJlZC4gIEluIHRoaXMgY2FzZSwgaXQgaXMgc2ltcGxlciB0aGFuIHVzaW5nIHNwaW5sb2NrcywKK2FsdGhvdWdoIGZvciBhbnl0aGluZyBub24tdHJpdmlhbCB1c2luZyBzcGlubG9ja3MgaXMgY2xlYXJlci4gIFRoZQorPGZ1bmN0aW9uPmF0b21pY19pbmM8L2Z1bmN0aW9uPiBhbmQKKzxmdW5jdGlvbj5hdG9taWNfZGVjX2FuZF90ZXN0PC9mdW5jdGlvbj4gYXJlIHVzZWQgaW5zdGVhZCBvZiB0aGUKK3N0YW5kYXJkIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IG9wZXJhdG9ycywgYW5kIHRoZSBsb2NrIGlzIG5vIGxvbmdlcgordXNlZCB0byBwcm90ZWN0IHRoZSByZWZlcmVuY2UgY291bnQgaXRzZWxmLgorPC9wYXJhPgorCis8cHJvZ3JhbWxpc3Rpbmc+CistLS0gY2FjaGUuYy5yZWZjbnQJMjAwMy0xMi0wOSAxNTowMDozNS4wMDAwMDAwMDAgKzExMDAKKysrKyBjYWNoZS5jLnJlZmNudC1hdG9taWMJMjAwMy0xMi0xMSAxNTo0OTo0Mi4wMDAwMDAwMDAgKzExMDAKK0BAIC03LDcgKzcsNyBAQAorIHN0cnVjdCBvYmplY3QKKyB7CisgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CistICAgICAgICB1bnNpZ25lZCBpbnQgcmVmY250OworKyAgICAgICAgYXRvbWljX3QgcmVmY250OworICAgICAgICAgaW50IGlkOworICAgICAgICAgY2hhciBuYW1lWzMyXTsKKyAgICAgICAgIGludCBwb3B1bGFyaXR5OworQEAgLTE4LDMzICsxOCwxNSBAQAorIHN0YXRpYyB1bnNpZ25lZCBpbnQgY2FjaGVfbnVtID0gMDsKKyAjZGVmaW5lIE1BWF9DQUNIRV9TSVpFIDEwCisKKy1zdGF0aWMgdm9pZCBfX29iamVjdF9wdXQoc3RydWN0IG9iamVjdCAqb2JqKQorLXsKKy0gICAgICAgIGlmICgtLW9iai0mZ3Q7cmVmY250ID09IDApCistICAgICAgICAgICAgICAgIGtmcmVlKG9iaik7CistfQorLQorLXN0YXRpYyB2b2lkIF9fb2JqZWN0X2dldChzdHJ1Y3Qgb2JqZWN0ICpvYmopCisteworLSAgICAgICAgb2JqLSZndDtyZWZjbnQrKzsKKy19CistCisgdm9pZCBvYmplY3RfcHV0KHN0cnVjdCBvYmplY3QgKm9iaikKKyB7CistICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworLQorLSAgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtjYWNoZV9sb2NrLCBmbGFncyk7CistICAgICAgICBfX29iamVjdF9wdXQob2JqKTsKKy0gICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtjYWNoZV9sb2NrLCBmbGFncyk7CisrICAgICAgICBpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmYW1wO29iai0mZ3Q7cmVmY250KSkKKysgICAgICAgICAgICAgICAga2ZyZWUob2JqKTsKKyB9CisKKyB2b2lkIG9iamVjdF9nZXQoc3RydWN0IG9iamVjdCAqb2JqKQorIHsKKy0gICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CistCistICAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2NhY2hlX2xvY2ssIGZsYWdzKTsKKy0gICAgICAgIF9fb2JqZWN0X2dldChvYmopOworLSAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2NhY2hlX2xvY2ssIGZsYWdzKTsKKysgICAgICAgIGF0b21pY19pbmMoJmFtcDtvYmotJmd0O3JlZmNudCk7CisgfQorCisgLyogTXVzdCBiZSBob2xkaW5nIGNhY2hlX2xvY2sgKi8KK0BAIC02NSw3ICs0Nyw3IEBACisgeworICAgICAgICAgQlVHX09OKCFvYmopOworICAgICAgICAgbGlzdF9kZWwoJmFtcDtvYmotJmd0O2xpc3QpOworLSAgICAgICAgX19vYmplY3RfcHV0KG9iaik7CisrICAgICAgICBvYmplY3RfcHV0KG9iaik7CisgICAgICAgICBjYWNoZV9udW0tLTsKKyB9CisKK0BAIC05NCw3ICs3Niw3IEBACisgICAgICAgICBzdHJsY3B5KG9iai0mZ3Q7bmFtZSwgbmFtZSwgc2l6ZW9mKG9iai0mZ3Q7bmFtZSkpOworICAgICAgICAgb2JqLSZndDtpZCA9IGlkOworICAgICAgICAgb2JqLSZndDtwb3B1bGFyaXR5ID0gMDsKKy0gICAgICAgIG9iai0mZ3Q7cmVmY250ID0gMTsgLyogVGhlIGNhY2hlIGhvbGRzIGEgcmVmZXJlbmNlICovCisrICAgICAgICBhdG9taWNfc2V0KCZhbXA7b2JqLSZndDtyZWZjbnQsIDEpOyAvKiBUaGUgY2FjaGUgaG9sZHMgYSByZWZlcmVuY2UgKi8KKworICAgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtjYWNoZV9sb2NrLCBmbGFncyk7CisgICAgICAgICBfX2NhY2hlX2FkZChvYmopOworQEAgLTExOSw3ICsxMDEsNyBAQAorICAgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtjYWNoZV9sb2NrLCBmbGFncyk7CisgICAgICAgICBvYmogPSBfX2NhY2hlX2ZpbmQoaWQpOworICAgICAgICAgaWYgKG9iaikKKy0gICAgICAgICAgICAgICAgX19vYmplY3RfZ2V0KG9iaik7CisrICAgICAgICAgICAgICAgIG9iamVjdF9nZXQob2JqKTsKKyAgICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtjYWNoZV9sb2NrLCBmbGFncyk7CisgICAgICAgICByZXR1cm4gb2JqOworIH0KKzwvcHJvZ3JhbWxpc3Rpbmc+Cis8L3NlY3QyPgorPC9zZWN0MT4KKworICAgPHNlY3QxIGlkPSJleGFtcGxlcy1sb2NrLXBlci1vYmoiPgorICAgIDx0aXRsZT5Qcm90ZWN0aW5nIFRoZSBPYmplY3RzIFRoZW1zZWx2ZXM8L3RpdGxlPgorICAgIDxwYXJhPgorSW4gdGhlc2UgZXhhbXBsZXMsIHdlIGFzc3VtZWQgdGhhdCB0aGUgb2JqZWN0cyAoZXhjZXB0IHRoZSByZWZlcmVuY2UKK2NvdW50cykgbmV2ZXIgY2hhbmdlZCBvbmNlIHRoZXkgYXJlIGNyZWF0ZWQuICBJZiB3ZSB3YW50ZWQgdG8gYWxsb3cKK3RoZSBuYW1lIHRvIGNoYW5nZSwgdGhlcmUgYXJlIHRocmVlIHBvc3NpYmlsaXRpZXM6CisgICAgPC9wYXJhPgorICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICA8bGlzdGl0ZW0+CisJPHBhcmE+CitZb3UgY2FuIG1ha2UgPHN5bWJvbD5jYWNoZV9sb2NrPC9zeW1ib2w+IG5vbi1zdGF0aWMsIGFuZCB0ZWxsIHBlb3BsZQordG8gZ3JhYiB0aGF0IGxvY2sgYmVmb3JlIGNoYW5naW5nIHRoZSBuYW1lIGluIGFueSBvYmplY3QuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorWW91IGNhbiBwcm92aWRlIGEgPGZ1bmN0aW9uPmNhY2hlX29ial9yZW5hbWU8L2Z1bmN0aW9uPiB3aGljaCBncmFicwordGhpcyBsb2NrIGFuZCBjaGFuZ2VzIHRoZSBuYW1lIGZvciB0aGUgY2FsbGVyLCBhbmQgdGVsbCBldmVyeW9uZSB0bwordXNlIHRoYXQgZnVuY3Rpb24uCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorWW91IGNhbiBtYWtlIHRoZSA8c3ltYm9sPmNhY2hlX2xvY2s8L3N5bWJvbD4gcHJvdGVjdCBvbmx5IHRoZSBjYWNoZQoraXRzZWxmLCBhbmQgdXNlIGFub3RoZXIgbG9jayB0byBwcm90ZWN0IHRoZSBuYW1lLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgIDwvaXRlbWl6ZWRsaXN0PgorCisgICAgICA8cGFyYT4KK1RoZW9yZXRpY2FsbHksIHlvdSBjYW4gbWFrZSB0aGUgbG9ja3MgYXMgZmluZS1ncmFpbmVkIGFzIG9uZSBsb2NrIGZvcgorZXZlcnkgZmllbGQsIGZvciBldmVyeSBvYmplY3QuICBJbiBwcmFjdGljZSwgdGhlIG1vc3QgY29tbW9uIHZhcmlhbnRzCithcmU6Cis8L3BhcmE+CisgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgIDxsaXN0aXRlbT4KKwk8cGFyYT4KK09uZSBsb2NrIHdoaWNoIHByb3RlY3RzIHRoZSBpbmZyYXN0cnVjdHVyZSAodGhlIDxzeW1ib2w+Y2FjaGU8L3N5bWJvbD4KK2xpc3QgaW4gdGhpcyBleGFtcGxlKSBhbmQgYWxsIHRoZSBvYmplY3RzLiAgVGhpcyBpcyB3aGF0IHdlIGhhdmUgZG9uZQorc28gZmFyLgorCTwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorT25lIGxvY2sgd2hpY2ggcHJvdGVjdHMgdGhlIGluZnJhc3RydWN0dXJlIChpbmNsdWRpbmcgdGhlIGxpc3QKK3BvaW50ZXJzIGluc2lkZSB0aGUgb2JqZWN0cyksIGFuZCBvbmUgbG9jayBpbnNpZGUgdGhlIG9iamVjdCB3aGljaAorcHJvdGVjdHMgdGhlIHJlc3Qgb2YgdGhhdCBvYmplY3QuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorTXVsdGlwbGUgbG9ja3MgdG8gcHJvdGVjdCB0aGUgaW5mcmFzdHJ1Y3R1cmUgKGVnLiBvbmUgbG9jayBwZXIgaGFzaAorY2hhaW4pLCBwb3NzaWJseSB3aXRoIGEgc2VwYXJhdGUgcGVyLW9iamVjdCBsb2NrLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgIDwvaXRlbWl6ZWRsaXN0PgorCis8cGFyYT4KK0hlcmUgaXMgdGhlICJsb2NrLXBlci1vYmplY3QiIGltcGxlbWVudGF0aW9uOgorPC9wYXJhPgorPHByb2dyYW1saXN0aW5nPgorLS0tIGNhY2hlLmMucmVmY250LWF0b21pYwkyMDAzLTEyLTExIDE1OjUwOjU0LjAwMDAwMDAwMCArMTEwMAorKysrIGNhY2hlLmMucGVyb2JqZWN0bG9jawkyMDAzLTEyLTExIDE3OjE1OjAzLjAwMDAwMDAwMCArMTEwMAorQEAgLTYsMTEgKzYsMTcgQEAKKworIHN0cnVjdCBvYmplY3QKKyB7CisrICAgICAgICAvKiBUaGVzZSB0d28gcHJvdGVjdGVkIGJ5IGNhY2hlX2xvY2suICovCisgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CisrICAgICAgICBpbnQgcG9wdWxhcml0eTsKKysKKyAgICAgICAgIGF0b21pY190IHJlZmNudDsKKysKKysgICAgICAgIC8qIERvZXNuJ3QgY2hhbmdlIG9uY2UgY3JlYXRlZC4gKi8KKyAgICAgICAgIGludCBpZDsKKysKKysgICAgICAgIHNwaW5sb2NrX3QgbG9jazsgLyogUHJvdGVjdHMgdGhlIG5hbWUgKi8KKyAgICAgICAgIGNoYXIgbmFtZVszMl07CistICAgICAgICBpbnQgcG9wdWxhcml0eTsKKyB9OworCisgc3RhdGljIERFRklORV9TUElOTE9DSyhjYWNoZV9sb2NrKTsKK0BAIC03Nyw2ICs4NCw3IEBACisgICAgICAgICBvYmotJmd0O2lkID0gaWQ7CisgICAgICAgICBvYmotJmd0O3BvcHVsYXJpdHkgPSAwOworICAgICAgICAgYXRvbWljX3NldCgmYW1wO29iai0mZ3Q7cmVmY250LCAxKTsgLyogVGhlIGNhY2hlIGhvbGRzIGEgcmVmZXJlbmNlICovCisrICAgICAgICBzcGluX2xvY2tfaW5pdCgmYW1wO29iai0mZ3Q7bG9jayk7CisKKyAgICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZhbXA7Y2FjaGVfbG9jaywgZmxhZ3MpOworICAgICAgICAgX19jYWNoZV9hZGQob2JqKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisKKzxwYXJhPgorTm90ZSB0aGF0IEkgZGVjaWRlIHRoYXQgdGhlIDxzdHJ1Y3RmaWVsZD5wb3B1bGFyaXR5PC9zdHJ1Y3RmaWVsZD4KK2NvdW50IHNob3VsZCBiZSBwcm90ZWN0ZWQgYnkgdGhlIDxzeW1ib2w+Y2FjaGVfbG9jazwvc3ltYm9sPiByYXRoZXIKK3RoYW4gdGhlIHBlci1vYmplY3QgbG9jazogdGhpcyBpcyBiZWNhdXNlIGl0IChsaWtlIHRoZQorPHN0cnVjdG5hbWU+c3RydWN0IGxpc3RfaGVhZDwvc3RydWN0bmFtZT4gaW5zaWRlIHRoZSBvYmplY3QpIGlzCitsb2dpY2FsbHkgcGFydCBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUuICBUaGlzIHdheSwgSSBkb24ndCBuZWVkIHRvIGdyYWIKK3RoZSBsb2NrIG9mIGV2ZXJ5IG9iamVjdCBpbiA8ZnVuY3Rpb24+X19jYWNoZV9hZGQ8L2Z1bmN0aW9uPiB3aGVuCitzZWVraW5nIHRoZSBsZWFzdCBwb3B1bGFyLgorPC9wYXJhPgorCis8cGFyYT4KK0kgYWxzbyBkZWNpZGVkIHRoYXQgdGhlIDxzdHJ1Y3RmaWVsZD5pZDwvc3RydWN0ZmllbGQ+IG1lbWJlciBpcwordW5jaGFuZ2VhYmxlLCBzbyBJIGRvbid0IG5lZWQgdG8gZ3JhYiBlYWNoIG9iamVjdCBsb2NrIGluCis8ZnVuY3Rpb24+X19jYWNoZV9maW5kKCk8L2Z1bmN0aW9uPiB0byBleGFtaW5lIHRoZQorPHN0cnVjdGZpZWxkPmlkPC9zdHJ1Y3RmaWVsZD46IHRoZSBvYmplY3QgbG9jayBpcyBvbmx5IHVzZWQgYnkgYQorY2FsbGVyIHdobyB3YW50cyB0byByZWFkIG9yIHdyaXRlIHRoZSA8c3RydWN0ZmllbGQ+bmFtZTwvc3RydWN0ZmllbGQ+CitmaWVsZC4KKzwvcGFyYT4KKworPHBhcmE+CitOb3RlIGFsc28gdGhhdCBJIGFkZGVkIGEgY29tbWVudCBkZXNjcmliaW5nIHdoYXQgZGF0YSB3YXMgcHJvdGVjdGVkIGJ5Cit3aGljaCBsb2Nrcy4gIFRoaXMgaXMgZXh0cmVtZWx5IGltcG9ydGFudCwgYXMgaXQgZGVzY3JpYmVzIHRoZSBydW50aW1lCitiZWhhdmlvciBvZiB0aGUgY29kZSwgYW5kIGNhbiBiZSBoYXJkIHRvIGdhaW4gZnJvbSBqdXN0IHJlYWRpbmcuICBBbmQKK2FzIEFsYW4gQ294IHNheXMsIDxxdW90ZT5Mb2NrIGRhdGEsIG5vdCBjb2RlPC9xdW90ZT4uCis8L3BhcmE+Cis8L3NlY3QxPgorPC9jaGFwdGVyPgorCisgICA8Y2hhcHRlciBpZD0iY29tbW9uLXByb2JsZW1zIj4KKyAgICA8dGl0bGU+Q29tbW9uIFByb2JsZW1zPC90aXRsZT4KKyAgICA8c2VjdDEgaWQ9ImRlYWRsb2NrIj4KKyAgICA8dGl0bGU+RGVhZGxvY2s6IFNpbXBsZSBhbmQgQWR2YW5jZWQ8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICBUaGVyZSBpcyBhIGNvZGluZyBidWcgd2hlcmUgYSBwaWVjZSBvZiBjb2RlIHRyaWVzIHRvIGdyYWIgYQorICAgICAgc3BpbmxvY2sgdHdpY2U6IGl0IHdpbGwgc3BpbiBmb3JldmVyLCB3YWl0aW5nIGZvciB0aGUgbG9jayB0bworICAgICAgYmUgcmVsZWFzZWQgKHNwaW5sb2Nrcywgcndsb2NrcyBhbmQgbXV0ZXhlcyBhcmUgbm90CisgICAgICByZWN1cnNpdmUgaW4gTGludXgpLiAgVGhpcyBpcyB0cml2aWFsIHRvIGRpYWdub3NlOiBub3QgYQorICAgICAgc3RheS11cC1maXZlLW5pZ2h0cy10YWxrLXRvLWZsdWZmeS1jb2RlLWJ1bm5pZXMga2luZCBvZgorICAgICAgcHJvYmxlbS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgIEZvciBhIHNsaWdodGx5IG1vcmUgY29tcGxleCBjYXNlLCBpbWFnaW5lIHlvdSBoYXZlIGEgcmVnaW9uCisgICAgICBzaGFyZWQgYnkgYSBzb2Z0aXJxIGFuZCB1c2VyIGNvbnRleHQuICBJZiB5b3UgdXNlIGEKKyAgICAgIDxmdW5jdGlvbj5zcGluX2xvY2soKTwvZnVuY3Rpb24+IGNhbGwgdG8gcHJvdGVjdCBpdCwgaXQgaXMgCisgICAgICBwb3NzaWJsZSB0aGF0IHRoZSB1c2VyIGNvbnRleHQgd2lsbCBiZSBpbnRlcnJ1cHRlZCBieSB0aGUgc29mdGlycQorICAgICAgd2hpbGUgaXQgaG9sZHMgdGhlIGxvY2ssIGFuZCB0aGUgc29mdGlycSB3aWxsIHRoZW4gc3BpbgorICAgICAgZm9yZXZlciB0cnlpbmcgdG8gZ2V0IHRoZSBzYW1lIGxvY2suCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBCb3RoIG9mIHRoZXNlIGFyZSBjYWxsZWQgZGVhZGxvY2ssIGFuZCBhcyBzaG93biBhYm92ZSwgaXQgY2FuCisgICAgICBvY2N1ciBldmVuIHdpdGggYSBzaW5nbGUgQ1BVIChhbHRob3VnaCBub3Qgb24gVVAgY29tcGlsZXMsCisgICAgICBzaW5jZSBzcGlubG9ja3MgdmFuaXNoIG9uIGtlcm5lbCBjb21waWxlcyB3aXRoIAorICAgICAgPHN5bWJvbD5DT05GSUdfU01QPC9zeW1ib2w+PW4uIFlvdSdsbCBzdGlsbCBnZXQgZGF0YSBjb3JydXB0aW9uIAorICAgICAgaW4gdGhlIHNlY29uZCBleGFtcGxlKS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgIFRoaXMgY29tcGxldGUgbG9ja3VwIGlzIGVhc3kgdG8gZGlhZ25vc2U6IG9uIFNNUCBib3hlcyB0aGUKKyAgICAgIHdhdGNoZG9nIHRpbWVyIG9yIGNvbXBpbGluZyB3aXRoIDxzeW1ib2w+REVCVUdfU1BJTkxPQ0s8L3N5bWJvbD4gc2V0CisgICAgICAoPGZpbGVuYW1lPmluY2x1ZGUvbGludXgvc3BpbmxvY2suaDwvZmlsZW5hbWU+KSB3aWxsIHNob3cgdGhpcyB1cCAKKyAgICAgIGltbWVkaWF0ZWx5IHdoZW4gaXQgaGFwcGVucy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgIEEgbW9yZSBjb21wbGV4IHByb2JsZW0gaXMgdGhlIHNvLWNhbGxlZCAnZGVhZGx5IGVtYnJhY2UnLAorICAgICAgaW52b2x2aW5nIHR3byBvciBtb3JlIGxvY2tzLiAgU2F5IHlvdSBoYXZlIGEgaGFzaCB0YWJsZTogZWFjaAorICAgICAgZW50cnkgaW4gdGhlIHRhYmxlIGlzIGEgc3BpbmxvY2ssIGFuZCBhIGNoYWluIG9mIGhhc2hlZAorICAgICAgb2JqZWN0cy4gIEluc2lkZSBhIHNvZnRpcnEgaGFuZGxlciwgeW91IHNvbWV0aW1lcyB3YW50IHRvCisgICAgICBhbHRlciBhbiBvYmplY3QgZnJvbSBvbmUgcGxhY2UgaW4gdGhlIGhhc2ggdG8gYW5vdGhlcjogeW91CisgICAgICBncmFiIHRoZSBzcGlubG9jayBvZiB0aGUgb2xkIGhhc2ggY2hhaW4gYW5kIHRoZSBzcGlubG9jayBvZgorICAgICAgdGhlIG5ldyBoYXNoIGNoYWluLCBhbmQgZGVsZXRlIHRoZSBvYmplY3QgZnJvbSB0aGUgb2xkIG9uZSwKKyAgICAgIGFuZCBpbnNlcnQgaXQgaW4gdGhlIG5ldyBvbmUuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBUaGVyZSBhcmUgdHdvIHByb2JsZW1zIGhlcmUuICBGaXJzdCwgaWYgeW91ciBjb2RlIGV2ZXIKKyAgICAgIHRyaWVzIHRvIG1vdmUgdGhlIG9iamVjdCB0byB0aGUgc2FtZSBjaGFpbiwgaXQgd2lsbCBkZWFkbG9jaworICAgICAgd2l0aCBpdHNlbGYgYXMgaXQgdHJpZXMgdG8gbG9jayBpdCB0d2ljZS4gIFNlY29uZGx5LCBpZiB0aGUKKyAgICAgIHNhbWUgc29mdGlycSBvbiBhbm90aGVyIENQVSBpcyB0cnlpbmcgdG8gbW92ZSBhbm90aGVyIG9iamVjdAorICAgICAgaW4gdGhlIHJldmVyc2UgZGlyZWN0aW9uLCB0aGUgZm9sbG93aW5nIGNvdWxkIGhhcHBlbjoKKyAgICA8L3BhcmE+CisKKyAgICA8dGFibGU+CisgICAgIDx0aXRsZT5Db25zZXF1ZW5jZXM8L3RpdGxlPgorCisgICAgIDx0Z3JvdXAgY29scz0iMiIgYWxpZ249ImxlZnQiPgorCisgICAgICA8dGhlYWQ+CisgICAgICAgPHJvdz4KKyAgICAgICAgPGVudHJ5PkNQVSAxPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PkNQVSAyPC9lbnRyeT4KKyAgICAgICA8L3Jvdz4KKyAgICAgIDwvdGhlYWQ+CisKKyAgICAgIDx0Ym9keT4KKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnk+R3JhYiBsb2NrIEEgLSZndDsgT0s8L2VudHJ5PgorICAgICAgICA8ZW50cnk+R3JhYiBsb2NrIEIgLSZndDsgT0s8L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeT5HcmFiIGxvY2sgQiAtJmd0OyBzcGluPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PkdyYWIgbG9jayBBIC0mZ3Q7IHNwaW48L2VudHJ5PgorICAgICAgIDwvcm93PgorICAgICAgPC90Ym9keT4KKyAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDxwYXJhPgorICAgICAgVGhlIHR3byBDUFVzIHdpbGwgc3BpbiBmb3JldmVyLCB3YWl0aW5nIGZvciB0aGUgb3RoZXIgdG8gZ2l2ZSB1cAorICAgICAgdGhlaXIgbG9jay4gIEl0IHdpbGwgbG9vaywgc21lbGwsIGFuZCBmZWVsIGxpa2UgYSBjcmFzaC4KKyAgICA8L3BhcmE+CisgICAgPC9zZWN0MT4KKworICAgIDxzZWN0MSBpZD0idGVjaHMtZGVhZGxvY2stcHJldmVudCI+CisgICAgIDx0aXRsZT5QcmV2ZW50aW5nIERlYWRsb2NrPC90aXRsZT4KKworICAgICA8cGFyYT4KKyAgICAgICBUZXh0Ym9va3Mgd2lsbCB0ZWxsIHlvdSB0aGF0IGlmIHlvdSBhbHdheXMgbG9jayBpbiB0aGUgc2FtZQorICAgICAgIG9yZGVyLCB5b3Ugd2lsbCBuZXZlciBnZXQgdGhpcyBraW5kIG9mIGRlYWRsb2NrLiAgUHJhY3RpY2UKKyAgICAgICB3aWxsIHRlbGwgeW91IHRoYXQgdGhpcyBhcHByb2FjaCBkb2Vzbid0IHNjYWxlOiB3aGVuIEkKKyAgICAgICBjcmVhdGUgYSBuZXcgbG9jaywgSSBkb24ndCB1bmRlcnN0YW5kIGVub3VnaCBvZiB0aGUga2VybmVsCisgICAgICAgdG8gZmlndXJlIG91dCB3aGVyZSBpbiB0aGUgNTAwMCBsb2NrIGhpZXJhcmNoeSBpdCB3aWxsIGZpdC4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgIFRoZSBiZXN0IGxvY2tzIGFyZSBlbmNhcHN1bGF0ZWQ6IHRoZXkgbmV2ZXIgZ2V0IGV4cG9zZWQgaW4KKyAgICAgICBoZWFkZXJzLCBhbmQgYXJlIG5ldmVyIGhlbGQgYXJvdW5kIGNhbGxzIHRvIG5vbi10cml2aWFsCisgICAgICAgZnVuY3Rpb25zIG91dHNpZGUgdGhlIHNhbWUgZmlsZS4gIFlvdSBjYW4gcmVhZCB0aHJvdWdoIHRoaXMKKyAgICAgICBjb2RlIGFuZCBzZWUgdGhhdCBpdCB3aWxsIG5ldmVyIGRlYWRsb2NrLCBiZWNhdXNlIGl0IG5ldmVyCisgICAgICAgdHJpZXMgdG8gZ3JhYiBhbm90aGVyIGxvY2sgd2hpbGUgaXQgaGFzIHRoYXQgb25lLiAgUGVvcGxlCisgICAgICAgdXNpbmcgeW91ciBjb2RlIGRvbid0IGV2ZW4gbmVlZCB0byBrbm93IHlvdSBhcmUgdXNpbmcgYQorICAgICAgIGxvY2suCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgICBBIGNsYXNzaWMgcHJvYmxlbSBoZXJlIGlzIHdoZW4geW91IHByb3ZpZGUgY2FsbGJhY2tzIG9yCisgICAgICAgaG9va3M6IGlmIHlvdSBjYWxsIHRoZXNlIHdpdGggdGhlIGxvY2sgaGVsZCwgeW91IHJpc2sgc2ltcGxlCisgICAgICAgZGVhZGxvY2ssIG9yIGEgZGVhZGx5IGVtYnJhY2UgKHdobyBrbm93cyB3aGF0IHRoZSBjYWxsYmFjaworICAgICAgIHdpbGwgZG8/KS4gIFJlbWVtYmVyLCB0aGUgb3RoZXIgcHJvZ3JhbW1lcnMgYXJlIG91dCB0byBnZXQKKyAgICAgICB5b3UsIHNvIGRvbid0IGRvIHRoaXMuCisgICAgIDwvcGFyYT4KKworICAgIDxzZWN0MiBpZD0idGVjaHMtZGVhZGxvY2stb3ZlcnByZXZlbnQiPgorICAgICA8dGl0bGU+T3ZlcnplYWxvdXMgUHJldmVudGlvbiBPZiBEZWFkbG9ja3M8L3RpdGxlPgorCisgICAgIDxwYXJhPgorICAgICAgIERlYWRsb2NrcyBhcmUgcHJvYmxlbWF0aWMsIGJ1dCBub3QgYXMgYmFkIGFzIGRhdGEKKyAgICAgICBjb3JydXB0aW9uLiAgQ29kZSB3aGljaCBncmFicyBhIHJlYWQgbG9jaywgc2VhcmNoZXMgYSBsaXN0LAorICAgICAgIGZhaWxzIHRvIGZpbmQgd2hhdCBpdCB3YW50cywgZHJvcHMgdGhlIHJlYWQgbG9jaywgZ3JhYnMgYQorICAgICAgIHdyaXRlIGxvY2sgYW5kIGluc2VydHMgdGhlIG9iamVjdCBoYXMgYSByYWNlIGNvbmRpdGlvbi4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgIElmIHlvdSBkb24ndCBzZWUgd2h5LCBwbGVhc2Ugc3RheSB0aGUgZnVjayBhd2F5IGZyb20gbXkgY29kZS4KKyAgICAgPC9wYXJhPgorICAgIDwvc2VjdDI+CisgICAgPC9zZWN0MT4KKworICAgPHNlY3QxIGlkPSJyYWNpbmctdGltZXJzIj4KKyAgICA8dGl0bGU+UmFjaW5nIFRpbWVyczogQSBLZXJuZWwgUGFzdGltZTwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgIFRpbWVycyBjYW4gcHJvZHVjZSB0aGVpciBvd24gc3BlY2lhbCBwcm9ibGVtcyB3aXRoIHJhY2VzLgorICAgICAgQ29uc2lkZXIgYSBjb2xsZWN0aW9uIG9mIG9iamVjdHMgKGxpc3QsIGhhc2gsIGV0Yykgd2hlcmUgZWFjaAorICAgICAgb2JqZWN0IGhhcyBhIHRpbWVyIHdoaWNoIGlzIGR1ZSB0byBkZXN0cm95IGl0LgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgSWYgeW91IHdhbnQgdG8gZGVzdHJveSB0aGUgZW50aXJlIGNvbGxlY3Rpb24gKHNheSBvbiBtb2R1bGUKKyAgICAgIHJlbW92YWwpLCB5b3UgbWlnaHQgZG8gdGhlIGZvbGxvd2luZzoKKyAgICA8L3BhcmE+CisKKyAgICA8cHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIC8qIFRISVMgQ09ERSBCQUQgQkFEIEJBRCBCQUQ6IElGIElUIFdBUyBBTlkgV09SU0UgSVQgV09VTEQgVVNFCisgICAgICAgICAgIEhVTkdBUklBTiBOT1RBVElPTiAqLworICAgICAgICBzcGluX2xvY2tfYmgoJmFtcDtsaXN0X2xvY2spOworCisgICAgICAgIHdoaWxlIChsaXN0KSB7CisgICAgICAgICAgICAgICAgc3RydWN0IGZvbyAqbmV4dCA9IGxpc3QtJmd0O25leHQ7CisgICAgICAgICAgICAgICAgZGVsX3RpbWVyKCZhbXA7bGlzdC0mZ3Q7dGltZXIpOworICAgICAgICAgICAgICAgIGtmcmVlKGxpc3QpOworICAgICAgICAgICAgICAgIGxpc3QgPSBuZXh0OworICAgICAgICB9CisKKyAgICAgICAgc3Bpbl91bmxvY2tfYmgoJmFtcDtsaXN0X2xvY2spOworICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgICA8cGFyYT4KKyAgICAgIFNvb25lciBvciBsYXRlciwgdGhpcyB3aWxsIGNyYXNoIG9uIFNNUCwgYmVjYXVzZSBhIHRpbWVyIGNhbgorICAgICAgaGF2ZSBqdXN0IGdvbmUgb2ZmIGJlZm9yZSB0aGUgPGZ1bmN0aW9uPnNwaW5fbG9ja19iaCgpPC9mdW5jdGlvbj4sCisgICAgICBhbmQgaXQgd2lsbCBvbmx5IGdldCB0aGUgbG9jayBhZnRlciB3ZQorICAgICAgPGZ1bmN0aW9uPnNwaW5fdW5sb2NrX2JoKCk8L2Z1bmN0aW9uPiwgYW5kIHRoZW4gdHJ5IHRvIGZyZWUKKyAgICAgIHRoZSBlbGVtZW50ICh3aGljaCBoYXMgYWxyZWFkeSBiZWVuIGZyZWVkISkuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBUaGlzIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIHRoZSByZXN1bHQgb2YKKyAgICAgIDxmdW5jdGlvbj5kZWxfdGltZXIoKTwvZnVuY3Rpb24+OiBpZiBpdCByZXR1cm5zCisgICAgICA8cmV0dXJudmFsdWU+MTwvcmV0dXJudmFsdWU+LCB0aGUgdGltZXIgaGFzIGJlZW4gZGVsZXRlZC4KKyAgICAgIElmIDxyZXR1cm52YWx1ZT4wPC9yZXR1cm52YWx1ZT4sIGl0IG1lYW5zIChpbiB0aGlzCisgICAgICBjYXNlKSB0aGF0IGl0IGlzIGN1cnJlbnRseSBydW5uaW5nLCBzbyB3ZSBjYW4gZG86CisgICAgPC9wYXJhPgorCisgICAgPHByb2dyYW1saXN0aW5nPgorICAgICAgICByZXRyeToKKyAgICAgICAgICAgICAgICBzcGluX2xvY2tfYmgoJmFtcDtsaXN0X2xvY2spOworCisgICAgICAgICAgICAgICAgd2hpbGUgKGxpc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmb28gKm5leHQgPSBsaXN0LSZndDtuZXh0OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWxfdGltZXIoJmFtcDtsaXN0LSZndDt0aW1lcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR2l2ZSB0aW1lciBhIGNoYW5jZSB0byBkZWxldGUgdGhpcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGluX3VubG9ja19iaCgmYW1wO2xpc3RfbG9jayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmV0cnk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBrZnJlZShsaXN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBuZXh0OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrX2JoKCZhbXA7bGlzdF9sb2NrKTsKKyAgICA8L3Byb2dyYW1saXN0aW5nPgorCisgICAgPHBhcmE+CisgICAgICBBbm90aGVyIGNvbW1vbiBwcm9ibGVtIGlzIGRlbGV0aW5nIHRpbWVycyB3aGljaCByZXN0YXJ0CisgICAgICB0aGVtc2VsdmVzIChieSBjYWxsaW5nIDxmdW5jdGlvbj5hZGRfdGltZXIoKTwvZnVuY3Rpb24+IGF0IHRoZSBlbmQKKyAgICAgIG9mIHRoZWlyIHRpbWVyIGZ1bmN0aW9uKS4gIEJlY2F1c2UgdGhpcyBpcyBhIGZhaXJseSBjb21tb24gY2FzZQorICAgICAgd2hpY2ggaXMgcHJvbmUgdG8gcmFjZXMsIHlvdSBzaG91bGQgdXNlIDxmdW5jdGlvbj5kZWxfdGltZXJfc3luYygpPC9mdW5jdGlvbj4KKyAgICAgICg8ZmlsZW5hbWUgY2xhc3M9ImhlYWRlcmZpbGUiPmluY2x1ZGUvbGludXgvdGltZXIuaDwvZmlsZW5hbWU+KQorICAgICAgdG8gaGFuZGxlIHRoaXMgY2FzZS4gIEl0IHJldHVybnMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgdGltZXIKKyAgICAgIGhhZCB0byBiZSBkZWxldGVkIGJlZm9yZSB3ZSBmaW5hbGx5IHN0b3BwZWQgaXQgZnJvbSBhZGRpbmcgaXRzZWxmIGJhY2sKKyAgICAgIGluLgorICAgIDwvcGFyYT4KKyAgIDwvc2VjdDE+CisKKyAgPC9jaGFwdGVyPgorCisgPGNoYXB0ZXIgaWQ9IkVmZmljaWVuY3kiPgorICAgIDx0aXRsZT5Mb2NraW5nIFNwZWVkPC90aXRsZT4KKworICAgIDxwYXJhPgorVGhlcmUgYXJlIHRocmVlIG1haW4gdGhpbmdzIHRvIHdvcnJ5IGFib3V0IHdoZW4gY29uc2lkZXJpbmcgc3BlZWQgb2YKK3NvbWUgY29kZSB3aGljaCBkb2VzIGxvY2tpbmcuICBGaXJzdCBpcyBjb25jdXJyZW5jeTogaG93IG1hbnkgdGhpbmdzCithcmUgZ29pbmcgdG8gYmUgd2FpdGluZyB3aGlsZSBzb21lb25lIGVsc2UgaXMgaG9sZGluZyBhIGxvY2suICBTZWNvbmQKK2lzIHRoZSB0aW1lIHRha2VuIHRvIGFjdHVhbGx5IGFjcXVpcmUgYW5kIHJlbGVhc2UgYW4gdW5jb250ZW5kZWQgbG9jay4KK1RoaXJkIGlzIHVzaW5nIGZld2VyLCBvciBzbWFydGVyIGxvY2tzLiAgSSdtIGFzc3VtaW5nIHRoYXQgdGhlIGxvY2sgaXMKK3VzZWQgZmFpcmx5IG9mdGVuOiBvdGhlcndpc2UsIHlvdSB3b3VsZG4ndCBiZSBjb25jZXJuZWQgYWJvdXQKK2VmZmljaWVuY3kuCis8L3BhcmE+CisgICAgPHBhcmE+CitDb25jdXJyZW5jeSBkZXBlbmRzIG9uIGhvdyBsb25nIHRoZSBsb2NrIGlzIHVzdWFsbHkgaGVsZDogeW91IHNob3VsZAoraG9sZCB0aGUgbG9jayBmb3IgYXMgbG9uZyBhcyBuZWVkZWQsIGJ1dCBubyBsb25nZXIuICBJbiB0aGUgY2FjaGUKK2V4YW1wbGUsIHdlIGFsd2F5cyBjcmVhdGUgdGhlIG9iamVjdCB3aXRob3V0IHRoZSBsb2NrIGhlbGQsIGFuZCB0aGVuCitncmFiIHRoZSBsb2NrIG9ubHkgd2hlbiB3ZSBhcmUgcmVhZHkgdG8gaW5zZXJ0IGl0IGluIHRoZSBsaXN0LgorPC9wYXJhPgorICAgIDxwYXJhPgorQWNxdWlzaXRpb24gdGltZXMgZGVwZW5kIG9uIGhvdyBtdWNoIGRhbWFnZSB0aGUgbG9jayBvcGVyYXRpb25zIGRvIHRvCit0aGUgcGlwZWxpbmUgKHBpcGVsaW5lIHN0YWxscykgYW5kIGhvdyBsaWtlbHkgaXQgaXMgdGhhdCB0aGlzIENQVSB3YXMKK3RoZSBsYXN0IG9uZSB0byBncmFiIHRoZSBsb2NrIChpZS4gaXMgdGhlIGxvY2sgY2FjaGUtaG90IGZvciB0aGlzCitDUFUpOiBvbiBhIG1hY2hpbmUgd2l0aCBtb3JlIENQVXMsIHRoaXMgbGlrZWxpaG9vZCBkcm9wcyBmYXN0LgorQ29uc2lkZXIgYSA3MDBNSHogSW50ZWwgUGVudGl1bSBJSUk6IGFuIGluc3RydWN0aW9uIHRha2VzIGFib3V0IDAuN25zLAorYW4gYXRvbWljIGluY3JlbWVudCB0YWtlcyBhYm91dCA1OG5zLCBhIGxvY2sgd2hpY2ggaXMgY2FjaGUtaG90IG9uCit0aGlzIENQVSB0YWtlcyAxNjBucywgYW5kIGEgY2FjaGVsaW5lIHRyYW5zZmVyIGZyb20gYW5vdGhlciBDUFUgdGFrZXMKK2FuIGFkZGl0aW9uYWwgMTcwIHRvIDM2MG5zLiAgKFRoZXNlIGZpZ3VyZXMgZnJvbSBQYXVsIE1jS2VubmV5J3MKKzx1bGluayB1cmw9Imh0dHA6Ly93d3cubGludXhqb3VybmFsLmNvbS9hcnRpY2xlLnBocD9zaWQ9Njk5MyI+IExpbnV4CitKb3VybmFsIFJDVSBhcnRpY2xlPC91bGluaz4pLgorPC9wYXJhPgorICAgIDxwYXJhPgorVGhlc2UgdHdvIGFpbXMgY29uZmxpY3Q6IGhvbGRpbmcgYSBsb2NrIGZvciBhIHNob3J0IHRpbWUgbWlnaHQgYmUgZG9uZQorYnkgc3BsaXR0aW5nIGxvY2tzIGludG8gcGFydHMgKHN1Y2ggYXMgaW4gb3VyIGZpbmFsIHBlci1vYmplY3QtbG9jaworZXhhbXBsZSksIGJ1dCB0aGlzIGluY3JlYXNlcyB0aGUgbnVtYmVyIG9mIGxvY2sgYWNxdWlzaXRpb25zLCBhbmQgdGhlCityZXN1bHRzIGFyZSBvZnRlbiBzbG93ZXIgdGhhbiBoYXZpbmcgYSBzaW5nbGUgbG9jay4gIFRoaXMgaXMgYW5vdGhlcgorcmVhc29uIHRvIGFkdm9jYXRlIGxvY2tpbmcgc2ltcGxpY2l0eS4KKzwvcGFyYT4KKyAgICA8cGFyYT4KK1RoZSB0aGlyZCBjb25jZXJuIGlzIGFkZHJlc3NlZCBiZWxvdzogdGhlcmUgYXJlIHNvbWUgbWV0aG9kcyB0byByZWR1Y2UKK3RoZSBhbW91bnQgb2YgbG9ja2luZyB3aGljaCBuZWVkcyB0byBiZSBkb25lLgorPC9wYXJhPgorCisgIDxzZWN0MSBpZD0iZWZmaWNpZW5jeS1yd2xvY2tzIj4KKyAgIDx0aXRsZT5SZWFkL1dyaXRlIExvY2sgVmFyaWFudHM8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICAgIEJvdGggc3BpbmxvY2tzIGFuZCBtdXRleGVzIGhhdmUgcmVhZC93cml0ZSB2YXJpYW50czoKKyAgICAgIDx0eXBlPnJ3bG9ja190PC90eXBlPiBhbmQgPHN0cnVjdG5hbWU+c3RydWN0IHJ3X3NlbWFwaG9yZTwvc3RydWN0bmFtZT4uCisgICAgICBUaGVzZSBkaXZpZGUgdXNlcnMgaW50byB0d28gY2xhc3NlczogdGhlIHJlYWRlcnMgYW5kIHRoZSB3cml0ZXJzLiAgSWYKKyAgICAgIHlvdSBhcmUgb25seSByZWFkaW5nIHRoZSBkYXRhLCB5b3UgY2FuIGdldCBhIHJlYWQgbG9jaywgYnV0IHRvIHdyaXRlIHRvCisgICAgICB0aGUgZGF0YSB5b3UgbmVlZCB0aGUgd3JpdGUgbG9jay4gIE1hbnkgcGVvcGxlIGNhbiBob2xkIGEgcmVhZCBsb2NrLAorICAgICAgYnV0IGEgd3JpdGVyIG11c3QgYmUgc29sZSBob2xkZXIuCisgICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICAgIElmIHlvdXIgY29kZSBkaXZpZGVzIG5lYXRseSBhbG9uZyByZWFkZXIvd3JpdGVyIGxpbmVzIChhcyBvdXIKKyAgICAgIGNhY2hlIGNvZGUgZG9lcyksIGFuZCB0aGUgbG9jayBpcyBoZWxkIGJ5IHJlYWRlcnMgZm9yCisgICAgICBzaWduaWZpY2FudCBsZW5ndGhzIG9mIHRpbWUsIHVzaW5nIHRoZXNlIGxvY2tzIGNhbiBoZWxwLiAgVGhleQorICAgICAgYXJlIHNsaWdodGx5IHNsb3dlciB0aGFuIHRoZSBub3JtYWwgbG9ja3MgdGhvdWdoLCBzbyBpbiBwcmFjdGljZQorICAgICAgPHR5cGU+cndsb2NrX3Q8L3R5cGU+IGlzIG5vdCB1c3VhbGx5IHdvcnRod2hpbGUuCisgICAgPC9wYXJhPgorICAgPC9zZWN0MT4KKworICAgPHNlY3QxIGlkPSJlZmZpY2llbmN5LXJlYWQtY29weS11cGRhdGUiPgorICAgIDx0aXRsZT5Bdm9pZGluZyBMb2NrczogUmVhZCBDb3B5IFVwZGF0ZTwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgIFRoZXJlIGlzIGEgc3BlY2lhbCBtZXRob2Qgb2YgcmVhZC93cml0ZSBsb2NraW5nIGNhbGxlZCBSZWFkIENvcHkKKyAgICAgIFVwZGF0ZS4gIFVzaW5nIFJDVSwgdGhlIHJlYWRlcnMgY2FuIGF2b2lkIHRha2luZyBhIGxvY2sKKyAgICAgIGFsdG9nZXRoZXI6IGFzIHdlIGV4cGVjdCBvdXIgY2FjaGUgdG8gYmUgcmVhZCBtb3JlIG9mdGVuIHRoYW4KKyAgICAgIHVwZGF0ZWQgKG90aGVyd2lzZSB0aGUgY2FjaGUgaXMgYSB3YXN0ZSBvZiB0aW1lKSwgaXQgaXMgYQorICAgICAgY2FuZGlkYXRlIGZvciB0aGlzIG9wdGltaXphdGlvbi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgIEhvdyBkbyB3ZSBnZXQgcmlkIG9mIHJlYWQgbG9ja3M/ICBHZXR0aW5nIHJpZCBvZiByZWFkIGxvY2tzCisgICAgICBtZWFucyB0aGF0IHdyaXRlcnMgbWF5IGJlIGNoYW5naW5nIHRoZSBsaXN0IHVuZGVybmVhdGggdGhlCisgICAgICByZWFkZXJzLiAgVGhhdCBpcyBhY3R1YWxseSBxdWl0ZSBzaW1wbGU6IHdlIGNhbiByZWFkIGEgbGlua2VkCisgICAgICBsaXN0IHdoaWxlIGFuIGVsZW1lbnQgaXMgYmVpbmcgYWRkZWQgaWYgdGhlIHdyaXRlciBhZGRzIHRoZQorICAgICAgZWxlbWVudCB2ZXJ5IGNhcmVmdWxseS4gIEZvciBleGFtcGxlLCBhZGRpbmcKKyAgICAgIDxzeW1ib2w+bmV3PC9zeW1ib2w+IHRvIGEgc2luZ2xlIGxpbmtlZCBsaXN0IGNhbGxlZAorICAgICAgPHN5bWJvbD5saXN0PC9zeW1ib2w+OgorICAgIDwvcGFyYT4KKworICAgIDxwcm9ncmFtbGlzdGluZz4KKyAgICAgICAgbmV3LSZndDtuZXh0ID0gbGlzdC0mZ3Q7bmV4dDsKKyAgICAgICAgd21iKCk7CisgICAgICAgIGxpc3QtJmd0O25leHQgPSBuZXc7CisgICAgPC9wcm9ncmFtbGlzdGluZz4KKworICAgIDxwYXJhPgorICAgICAgVGhlIDxmdW5jdGlvbj53bWIoKTwvZnVuY3Rpb24+IGlzIGEgd3JpdGUgbWVtb3J5IGJhcnJpZXIuICBJdAorICAgICAgZW5zdXJlcyB0aGF0IHRoZSBmaXJzdCBvcGVyYXRpb24gKHNldHRpbmcgdGhlIG5ldyBlbGVtZW50J3MKKyAgICAgIDxzeW1ib2w+bmV4dDwvc3ltYm9sPiBwb2ludGVyKSBpcyBjb21wbGV0ZSBhbmQgd2lsbCBiZSBzZWVuIGJ5CisgICAgICBhbGwgQ1BVcywgYmVmb3JlIHRoZSBzZWNvbmQgb3BlcmF0aW9uIGlzIChwdXR0aW5nIHRoZSBuZXcKKyAgICAgIGVsZW1lbnQgaW50byB0aGUgbGlzdCkuICBUaGlzIGlzIGltcG9ydGFudCwgc2luY2UgbW9kZXJuCisgICAgICBjb21waWxlcnMgYW5kIG1vZGVybiBDUFVzIGNhbiBib3RoIHJlb3JkZXIgaW5zdHJ1Y3Rpb25zIHVubGVzcworICAgICAgdG9sZCBvdGhlcndpc2U6IHdlIHdhbnQgYSByZWFkZXIgdG8gZWl0aGVyIG5vdCBzZWUgdGhlIG5ldworICAgICAgZWxlbWVudCBhdCBhbGwsIG9yIHNlZSB0aGUgbmV3IGVsZW1lbnQgd2l0aCB0aGUKKyAgICAgIDxzeW1ib2w+bmV4dDwvc3ltYm9sPiBwb2ludGVyIGNvcnJlY3RseSBwb2ludGluZyBhdCB0aGUgcmVzdCBvZgorICAgICAgdGhlIGxpc3QuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgRm9ydHVuYXRlbHksIHRoZXJlIGlzIGEgZnVuY3Rpb24gdG8gZG8gdGhpcyBmb3Igc3RhbmRhcmQKKyAgICAgIDxzdHJ1Y3RuYW1lPnN0cnVjdCBsaXN0X2hlYWQ8L3N0cnVjdG5hbWU+IGxpc3RzOgorICAgICAgPGZ1bmN0aW9uPmxpc3RfYWRkX3JjdSgpPC9mdW5jdGlvbj4KKyAgICAgICg8ZmlsZW5hbWU+aW5jbHVkZS9saW51eC9saXN0Lmg8L2ZpbGVuYW1lPikuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgUmVtb3ZpbmcgYW4gZWxlbWVudCBmcm9tIHRoZSBsaXN0IGlzIGV2ZW4gc2ltcGxlcjogd2UgcmVwbGFjZQorICAgICAgdGhlIHBvaW50ZXIgdG8gdGhlIG9sZCBlbGVtZW50IHdpdGggYSBwb2ludGVyIHRvIGl0cyBzdWNjZXNzb3IsCisgICAgICBhbmQgcmVhZGVycyB3aWxsIGVpdGhlciBzZWUgaXQsIG9yIHNraXAgb3ZlciBpdC4KKyAgICA8L3BhcmE+CisgICAgPHByb2dyYW1saXN0aW5nPgorICAgICAgICBsaXN0LSZndDtuZXh0ID0gb2xkLSZndDtuZXh0OworICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPHBhcmE+CisgICAgICBUaGVyZSBpcyA8ZnVuY3Rpb24+bGlzdF9kZWxfcmN1KCk8L2Z1bmN0aW9uPgorICAgICAgKDxmaWxlbmFtZT5pbmNsdWRlL2xpbnV4L2xpc3QuaDwvZmlsZW5hbWU+KSB3aGljaCBkb2VzIHRoaXMgKHRoZQorICAgICAgbm9ybWFsIHZlcnNpb24gcG9pc29ucyB0aGUgb2xkIG9iamVjdCwgd2hpY2ggd2UgZG9uJ3Qgd2FudCkuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgVGhlIHJlYWRlciBtdXN0IGFsc28gYmUgY2FyZWZ1bDogc29tZSBDUFVzIGNhbiBsb29rIHRocm91Z2ggdGhlCisgICAgICA8c3ltYm9sPm5leHQ8L3N5bWJvbD4gcG9pbnRlciB0byBzdGFydCByZWFkaW5nIHRoZSBjb250ZW50cyBvZgorICAgICAgdGhlIG5leHQgZWxlbWVudCBlYXJseSwgYnV0IGRvbid0IHJlYWxpemUgdGhhdCB0aGUgcHJlLWZldGNoZWQKKyAgICAgIGNvbnRlbnRzIGlzIHdyb25nIHdoZW4gdGhlIDxzeW1ib2w+bmV4dDwvc3ltYm9sPiBwb2ludGVyIGNoYW5nZXMKKyAgICAgIHVuZGVybmVhdGggdGhlbS4gIE9uY2UgYWdhaW4sIHRoZXJlIGlzIGEKKyAgICAgIDxmdW5jdGlvbj5saXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSgpPC9mdW5jdGlvbj4KKyAgICAgICg8ZmlsZW5hbWU+aW5jbHVkZS9saW51eC9saXN0Lmg8L2ZpbGVuYW1lPikgdG8gaGVscCB5b3UuICBPZgorICAgICAgY291cnNlLCB3cml0ZXJzIGNhbiBqdXN0IHVzZQorICAgICAgPGZ1bmN0aW9uPmxpc3RfZm9yX2VhY2hfZW50cnkoKTwvZnVuY3Rpb24+LCBzaW5jZSB0aGVyZSBjYW5ub3QKKyAgICAgIGJlIHR3byBzaW11bHRhbmVvdXMgd3JpdGVycy4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBPdXIgZmluYWwgZGlsZW1tYSBpcyB0aGlzOiB3aGVuIGNhbiB3ZSBhY3R1YWxseSBkZXN0cm95IHRoZQorICAgICAgcmVtb3ZlZCBlbGVtZW50PyAgUmVtZW1iZXIsIGEgcmVhZGVyIG1pZ2h0IGJlIHN0ZXBwaW5nIHRocm91Z2gKKyAgICAgIHRoaXMgZWxlbWVudCBpbiB0aGUgbGlzdCByaWdodCBub3c6IGlmIHdlIGZyZWUgdGhpcyBlbGVtZW50IGFuZAorICAgICAgdGhlIDxzeW1ib2w+bmV4dDwvc3ltYm9sPiBwb2ludGVyIGNoYW5nZXMsIHRoZSByZWFkZXIgd2lsbCBqdW1wCisgICAgICBvZmYgaW50byBnYXJiYWdlIGFuZCBjcmFzaC4gIFdlIG5lZWQgdG8gd2FpdCB1bnRpbCB3ZSBrbm93IHRoYXQKKyAgICAgIGFsbCB0aGUgcmVhZGVycyB3aG8gd2VyZSB0cmF2ZXJzaW5nIHRoZSBsaXN0IHdoZW4gd2UgZGVsZXRlZCB0aGUKKyAgICAgIGVsZW1lbnQgYXJlIGZpbmlzaGVkLiAgV2UgdXNlIDxmdW5jdGlvbj5jYWxsX3JjdSgpPC9mdW5jdGlvbj4gdG8KKyAgICAgIHJlZ2lzdGVyIGEgY2FsbGJhY2sgd2hpY2ggd2lsbCBhY3R1YWxseSBkZXN0cm95IHRoZSBvYmplY3Qgb25jZQorICAgICAgYWxsIHByZS1leGlzdGluZyByZWFkZXJzIGFyZSBmaW5pc2hlZC4gIEFsdGVybmF0aXZlbHksCisgICAgICA8ZnVuY3Rpb24+c3luY2hyb25pemVfcmN1KCk8L2Z1bmN0aW9uPiBtYXkgYmUgdXNlZCB0byBibG9jayB1bnRpbAorICAgICAgYWxsIHByZS1leGlzdGluZyBhcmUgZmluaXNoZWQuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgQnV0IGhvdyBkb2VzIFJlYWQgQ29weSBVcGRhdGUga25vdyB3aGVuIHRoZSByZWFkZXJzIGFyZQorICAgICAgZmluaXNoZWQ/ICBUaGUgbWV0aG9kIGlzIHRoaXM6IGZpcnN0bHksIHRoZSByZWFkZXJzIGFsd2F5cworICAgICAgdHJhdmVyc2UgdGhlIGxpc3QgaW5zaWRlCisgICAgICA8ZnVuY3Rpb24+cmN1X3JlYWRfbG9jaygpPC9mdW5jdGlvbj4vPGZ1bmN0aW9uPnJjdV9yZWFkX3VubG9jaygpPC9mdW5jdGlvbj4KKyAgICAgIHBhaXJzOiB0aGVzZSBzaW1wbHkgZGlzYWJsZSBwcmVlbXB0aW9uIHNvIHRoZSByZWFkZXIgd29uJ3QgZ28gdG8KKyAgICAgIHNsZWVwIHdoaWxlIHJlYWRpbmcgdGhlIGxpc3QuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgUkNVIHRoZW4gd2FpdHMgdW50aWwgZXZlcnkgb3RoZXIgQ1BVIGhhcyBzbGVwdCBhdCBsZWFzdCBvbmNlOgorICAgICAgc2luY2UgcmVhZGVycyBjYW5ub3Qgc2xlZXAsIHdlIGtub3cgdGhhdCBhbnkgcmVhZGVycyB3aGljaCB3ZXJlCisgICAgICB0cmF2ZXJzaW5nIHRoZSBsaXN0IGR1cmluZyB0aGUgZGVsZXRpb24gYXJlIGZpbmlzaGVkLCBhbmQgdGhlCisgICAgICBjYWxsYmFjayBpcyB0cmlnZ2VyZWQuICBUaGUgcmVhbCBSZWFkIENvcHkgVXBkYXRlIGNvZGUgaXMgYQorICAgICAgbGl0dGxlIG1vcmUgb3B0aW1pemVkIHRoYW4gdGhpcywgYnV0IHRoaXMgaXMgdGhlIGZ1bmRhbWVudGFsCisgICAgICBpZGVhLgorICAgIDwvcGFyYT4KKworPHByb2dyYW1saXN0aW5nPgorLS0tIGNhY2hlLmMucGVyb2JqZWN0bG9jawkyMDAzLTEyLTExIDE3OjE1OjAzLjAwMDAwMDAwMCArMTEwMAorKysrIGNhY2hlLmMucmN1cGRhdGUJMjAwMy0xMi0xMSAxNzo1NToxNC4wMDAwMDAwMDAgKzExMDAKK0BAIC0xLDE1ICsxLDE4IEBACisgI2luY2x1ZGUgJmx0O2xpbnV4L2xpc3QuaCZndDsKKyAjaW5jbHVkZSAmbHQ7bGludXgvc2xhYi5oJmd0OworICNpbmNsdWRlICZsdDtsaW51eC9zdHJpbmcuaCZndDsKKysjaW5jbHVkZSAmbHQ7bGludXgvcmN1cGRhdGUuaCZndDsKKyAjaW5jbHVkZSAmbHQ7bGludXgvbXV0ZXguaCZndDsKKyAjaW5jbHVkZSAmbHQ7YXNtL2Vycm5vLmgmZ3Q7CisKKyBzdHJ1Y3Qgb2JqZWN0CisgeworLSAgICAgICAgLyogVGhlc2UgdHdvIHByb3RlY3RlZCBieSBjYWNoZV9sb2NrLiAqLworKyAgICAgICAgLyogVGhpcyBpcyBwcm90ZWN0ZWQgYnkgUkNVICovCisgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CisgICAgICAgICBpbnQgcG9wdWxhcml0eTsKKworKyAgICAgICAgc3RydWN0IHJjdV9oZWFkIHJjdTsKKysKKyAgICAgICAgIGF0b21pY190IHJlZmNudDsKKworICAgICAgICAgLyogRG9lc24ndCBjaGFuZ2Ugb25jZSBjcmVhdGVkLiAqLworQEAgLTQwLDcgKzQzLDcgQEAKKyB7CisgICAgICAgICBzdHJ1Y3Qgb2JqZWN0ICppOworCistICAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGksICZhbXA7Y2FjaGUsIGxpc3QpIHsKKysgICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGksICZhbXA7Y2FjaGUsIGxpc3QpIHsKKyAgICAgICAgICAgICAgICAgaWYgKGktJmd0O2lkID09IGlkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgaS0mZ3Q7cG9wdWxhcml0eSsrOworICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpOworQEAgLTQ5LDE5ICs1MiwyNSBAQAorICAgICAgICAgcmV0dXJuIE5VTEw7CisgfQorCisrLyogRmluYWwgZGlzY2FyZCBkb25lIG9uY2Ugd2Uga25vdyBubyByZWFkZXJzIGFyZSBsb29raW5nLiAqLworK3N0YXRpYyB2b2lkIGNhY2hlX2RlbGV0ZV9yY3Uodm9pZCAqYXJnKQorK3sKKysgICAgICAgIG9iamVjdF9wdXQoYXJnKTsKKyt9CisrCisgLyogTXVzdCBiZSBob2xkaW5nIGNhY2hlX2xvY2sgKi8KKyBzdGF0aWMgdm9pZCBfX2NhY2hlX2RlbGV0ZShzdHJ1Y3Qgb2JqZWN0ICpvYmopCisgeworICAgICAgICAgQlVHX09OKCFvYmopOworLSAgICAgICAgbGlzdF9kZWwoJmFtcDtvYmotJmd0O2xpc3QpOworLSAgICAgICAgb2JqZWN0X3B1dChvYmopOworKyAgICAgICAgbGlzdF9kZWxfcmN1KCZhbXA7b2JqLSZndDtsaXN0KTsKKyAgICAgICAgIGNhY2hlX251bS0tOworKyAgICAgICAgY2FsbF9yY3UoJmFtcDtvYmotJmd0O3JjdSwgY2FjaGVfZGVsZXRlX3JjdSk7CisgfQorCisgLyogTXVzdCBiZSBob2xkaW5nIGNhY2hlX2xvY2sgKi8KKyBzdGF0aWMgdm9pZCBfX2NhY2hlX2FkZChzdHJ1Y3Qgb2JqZWN0ICpvYmopCisgeworLSAgICAgICAgbGlzdF9hZGQoJmFtcDtvYmotJmd0O2xpc3QsICZhbXA7Y2FjaGUpOworKyAgICAgICAgbGlzdF9hZGRfcmN1KCZhbXA7b2JqLSZndDtsaXN0LCAmYW1wO2NhY2hlKTsKKyAgICAgICAgIGlmICgrK2NhY2hlX251bSA+IE1BWF9DQUNIRV9TSVpFKSB7CisgICAgICAgICAgICAgICAgIHN0cnVjdCBvYmplY3QgKmksICpvdXRjYXN0ID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShpLCAmYW1wO2NhY2hlLCBsaXN0KSB7CitAQCAtMTA0LDEyICsxMTQsMTEgQEAKKyBzdHJ1Y3Qgb2JqZWN0ICpjYWNoZV9maW5kKGludCBpZCkKKyB7CisgICAgICAgICBzdHJ1Y3Qgb2JqZWN0ICpvYmo7CistICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworCistICAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2NhY2hlX2xvY2ssIGZsYWdzKTsKKysgICAgICAgIHJjdV9yZWFkX2xvY2soKTsKKyAgICAgICAgIG9iaiA9IF9fY2FjaGVfZmluZChpZCk7CisgICAgICAgICBpZiAob2JqKQorICAgICAgICAgICAgICAgICBvYmplY3RfZ2V0KG9iaik7CistICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7Y2FjaGVfbG9jaywgZmxhZ3MpOworKyAgICAgICAgcmN1X3JlYWRfdW5sb2NrKCk7CisgICAgICAgICByZXR1cm4gb2JqOworIH0KKzwvcHJvZ3JhbWxpc3Rpbmc+CisKKzxwYXJhPgorTm90ZSB0aGF0IHRoZSByZWFkZXIgd2lsbCBhbHRlciB0aGUKKzxzdHJ1Y3RmaWVsZD5wb3B1bGFyaXR5PC9zdHJ1Y3RmaWVsZD4gbWVtYmVyIGluCis8ZnVuY3Rpb24+X19jYWNoZV9maW5kKCk8L2Z1bmN0aW9uPiwgYW5kIG5vdyBpdCBkb2Vzbid0IGhvbGQgYSBsb2NrLgorT25lIHNvbHV0aW9uIHdvdWxkIGJlIHRvIG1ha2UgaXQgYW4gPHR5cGU+YXRvbWljX3Q8L3R5cGU+LCBidXQgZm9yCit0aGlzIHVzYWdlLCB3ZSBkb24ndCByZWFsbHkgY2FyZSBhYm91dCByYWNlczogYW4gYXBwcm94aW1hdGUgcmVzdWx0IGlzCitnb29kIGVub3VnaCwgc28gSSBkaWRuJ3QgY2hhbmdlIGl0LgorPC9wYXJhPgorCis8cGFyYT4KK1RoZSByZXN1bHQgaXMgdGhhdCA8ZnVuY3Rpb24+Y2FjaGVfZmluZCgpPC9mdW5jdGlvbj4gcmVxdWlyZXMgbm8KK3N5bmNocm9uaXphdGlvbiB3aXRoIGFueSBvdGhlciBmdW5jdGlvbnMsIHNvIGlzIGFsbW9zdCBhcyBmYXN0IG9uIFNNUAorYXMgaXQgd291bGQgYmUgb24gVVAuCis8L3BhcmE+CisKKzxwYXJhPgorVGhlcmUgaXMgYSBmdXJ0aGVyIG9wdGltaXphdGlvbiBwb3NzaWJsZSBoZXJlOiByZW1lbWJlciBvdXIgb3JpZ2luYWwKK2NhY2hlIGNvZGUsIHdoZXJlIHRoZXJlIHdlcmUgbm8gcmVmZXJlbmNlIGNvdW50cyBhbmQgdGhlIGNhbGxlciBzaW1wbHkKK2hlbGQgdGhlIGxvY2sgd2hlbmV2ZXIgdXNpbmcgdGhlIG9iamVjdD8gIFRoaXMgaXMgc3RpbGwgcG9zc2libGU6IGlmCit5b3UgaG9sZCB0aGUgbG9jaywgbm8gb25lIGNhbiBkZWxldGUgdGhlIG9iamVjdCwgc28geW91IGRvbid0IG5lZWQgdG8KK2dldCBhbmQgcHV0IHRoZSByZWZlcmVuY2UgY291bnQuCis8L3BhcmE+CisKKzxwYXJhPgorTm93LCBiZWNhdXNlIHRoZSAncmVhZCBsb2NrJyBpbiBSQ1UgaXMgc2ltcGx5IGRpc2FibGluZyBwcmVlbXB0aW9uLCBhCitjYWxsZXIgd2hpY2ggYWx3YXlzIGhhcyBwcmVlbXB0aW9uIGRpc2FibGVkIGJldHdlZW4gY2FsbGluZworPGZ1bmN0aW9uPmNhY2hlX2ZpbmQoKTwvZnVuY3Rpb24+IGFuZAorPGZ1bmN0aW9uPm9iamVjdF9wdXQoKTwvZnVuY3Rpb24+IGRvZXMgbm90IG5lZWQgdG8gYWN0dWFsbHkgZ2V0IGFuZAorcHV0IHRoZSByZWZlcmVuY2UgY291bnQ6IHdlIGNvdWxkIGV4cG9zZQorPGZ1bmN0aW9uPl9fY2FjaGVfZmluZCgpPC9mdW5jdGlvbj4gYnkgbWFraW5nIGl0IG5vbi1zdGF0aWMsIGFuZAorc3VjaCBjYWxsZXJzIGNvdWxkIHNpbXBseSBjYWxsIHRoYXQuCis8L3BhcmE+Cis8cGFyYT4KK1RoZSBiZW5lZml0IGhlcmUgaXMgdGhhdCB0aGUgcmVmZXJlbmNlIGNvdW50IGlzIG5vdCB3cml0dGVuIHRvOiB0aGUKK29iamVjdCBpcyBub3QgYWx0ZXJlZCBpbiBhbnkgd2F5LCB3aGljaCBpcyBtdWNoIGZhc3RlciBvbiBTTVAKK21hY2hpbmVzIGR1ZSB0byBjYWNoaW5nLgorPC9wYXJhPgorICA8L3NlY3QxPgorCisgICA8c2VjdDEgaWQ9InBlci1jcHUiPgorICAgIDx0aXRsZT5QZXItQ1BVIERhdGE8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICBBbm90aGVyIHRlY2huaXF1ZSBmb3IgYXZvaWRpbmcgbG9ja2luZyB3aGljaCBpcyB1c2VkIGZhaXJseQorICAgICAgd2lkZWx5IGlzIHRvIGR1cGxpY2F0ZSBpbmZvcm1hdGlvbiBmb3IgZWFjaCBDUFUuICBGb3IgZXhhbXBsZSwKKyAgICAgIGlmIHlvdSB3YW50ZWQgdG8ga2VlcCBhIGNvdW50IG9mIGEgY29tbW9uIGNvbmRpdGlvbiwgeW91IGNvdWxkCisgICAgICB1c2UgYSBzcGluIGxvY2sgYW5kIGEgc2luZ2xlIGNvdW50ZXIuICBOaWNlIGFuZCBzaW1wbGUuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBJZiB0aGF0IHdhcyB0b28gc2xvdyAoaXQncyB1c3VhbGx5IG5vdCwgYnV0IGlmIHlvdSd2ZSBnb3QgYQorICAgICAgcmVhbGx5IGJpZyBtYWNoaW5lIHRvIHRlc3Qgb24gYW5kIGNhbiBzaG93IHRoYXQgaXQgaXMpLCB5b3UKKyAgICAgIGNvdWxkIGluc3RlYWQgdXNlIGEgY291bnRlciBmb3IgZWFjaCBDUFUsIHRoZW4gbm9uZSBvZiB0aGVtIG5lZWQKKyAgICAgIGFuIGV4Y2x1c2l2ZSBsb2NrLiAgU2VlIDxmdW5jdGlvbj5ERUZJTkVfUEVSX0NQVSgpPC9mdW5jdGlvbj4sCisgICAgICA8ZnVuY3Rpb24+Z2V0X2NwdV92YXIoKTwvZnVuY3Rpb24+IGFuZAorICAgICAgPGZ1bmN0aW9uPnB1dF9jcHVfdmFyKCk8L2Z1bmN0aW9uPgorICAgICAgKDxmaWxlbmFtZSBjbGFzcz0iaGVhZGVyZmlsZSI+aW5jbHVkZS9saW51eC9wZXJjcHUuaDwvZmlsZW5hbWU+KS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgIE9mIHBhcnRpY3VsYXIgdXNlIGZvciBzaW1wbGUgcGVyLWNwdSBjb3VudGVycyBpcyB0aGUKKyAgICAgIDx0eXBlPmxvY2FsX3Q8L3R5cGU+IHR5cGUsIGFuZCB0aGUKKyAgICAgIDxmdW5jdGlvbj5jcHVfbG9jYWxfaW5jKCk8L2Z1bmN0aW9uPiBhbmQgcmVsYXRlZCBmdW5jdGlvbnMsCisgICAgICB3aGljaCBhcmUgbW9yZSBlZmZpY2llbnQgdGhhbiBzaW1wbGUgY29kZSBvbiBzb21lIGFyY2hpdGVjdHVyZXMKKyAgICAgICg8ZmlsZW5hbWUgY2xhc3M9ImhlYWRlcmZpbGUiPmluY2x1ZGUvYXNtL2xvY2FsLmg8L2ZpbGVuYW1lPikuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gc2ltcGxlLCByZWxpYWJsZSB3YXkgb2YgZ2V0dGluZyBhbiBleGFjdAorICAgICAgdmFsdWUgb2Ygc3VjaCBhIGNvdW50ZXIsIHdpdGhvdXQgaW50cm9kdWNpbmcgbW9yZSBsb2Nrcy4gIFRoaXMKKyAgICAgIGlzIG5vdCBhIHByb2JsZW0gZm9yIHNvbWUgdXNlcy4KKyAgICA8L3BhcmE+CisgICA8L3NlY3QxPgorCisgICA8c2VjdDEgaWQ9Im1vc3RseS1oYXJkaXJxIj4KKyAgICA8dGl0bGU+RGF0YSBXaGljaCBNb3N0bHkgVXNlZCBCeSBBbiBJUlEgSGFuZGxlcjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgIElmIGRhdGEgaXMgYWx3YXlzIGFjY2Vzc2VkIGZyb20gd2l0aGluIHRoZSBzYW1lIElSUSBoYW5kbGVyLCB5b3UKKyAgICAgIGRvbid0IG5lZWQgYSBsb2NrIGF0IGFsbDogdGhlIGtlcm5lbCBhbHJlYWR5IGd1YXJhbnRlZXMgdGhhdCB0aGUKKyAgICAgIGlycSBoYW5kbGVyIHdpbGwgbm90IHJ1biBzaW11bHRhbmVvdXNseSBvbiBtdWx0aXBsZSBDUFVzLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIE1hbmZyZWQgU3ByYXVsIHBvaW50cyBvdXQgdGhhdCB5b3UgY2FuIHN0aWxsIGRvIHRoaXMsIGV2ZW4gaWYKKyAgICAgIHRoZSBkYXRhIGlzIHZlcnkgb2NjYXNpb25hbGx5IGFjY2Vzc2VkIGluIHVzZXIgY29udGV4dCBvcgorICAgICAgc29mdGlycXMvdGFza2xldHMuICBUaGUgaXJxIGhhbmRsZXIgZG9lc24ndCB1c2UgYSBsb2NrLCBhbmQKKyAgICAgIGFsbCBvdGhlciBhY2Nlc3NlcyBhcmUgZG9uZSBhcyBzbzoKKyAgICA8L3BhcmE+CisKKzxwcm9ncmFtbGlzdGluZz4KKwlzcGluX2xvY2soJmFtcDtsb2NrKTsKKwlkaXNhYmxlX2lycShpcnEpOworCS4uLgorCWVuYWJsZV9pcnEoaXJxKTsKKwlzcGluX3VubG9jaygmYW1wO2xvY2spOworPC9wcm9ncmFtbGlzdGluZz4KKyAgICA8cGFyYT4KKyAgICAgIFRoZSA8ZnVuY3Rpb24+ZGlzYWJsZV9pcnEoKTwvZnVuY3Rpb24+IHByZXZlbnRzIHRoZSBpcnEgaGFuZGxlcgorICAgICAgZnJvbSBydW5uaW5nIChhbmQgd2FpdHMgZm9yIGl0IHRvIGZpbmlzaCBpZiBpdCdzIGN1cnJlbnRseQorICAgICAgcnVubmluZyBvbiBvdGhlciBDUFVzKS4gIFRoZSBzcGlubG9jayBwcmV2ZW50cyBhbnkgb3RoZXIKKyAgICAgIGFjY2Vzc2VzIGhhcHBlbmluZyBhdCB0aGUgc2FtZSB0aW1lLiAgTmF0dXJhbGx5LCB0aGlzIGlzIHNsb3dlcgorICAgICAgdGhhbiBqdXN0IGEgPGZ1bmN0aW9uPnNwaW5fbG9ja19pcnEoKTwvZnVuY3Rpb24+IGNhbGwsIHNvIGl0CisgICAgICBvbmx5IG1ha2VzIHNlbnNlIGlmIHRoaXMgdHlwZSBvZiBhY2Nlc3MgaGFwcGVucyBleHRyZW1lbHkKKyAgICAgIHJhcmVseS4KKyAgICA8L3BhcmE+CisgICA8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisKKyA8Y2hhcHRlciBpZD0ic2xlZXBpbmctdGhpbmdzIj4KKyAgICA8dGl0bGU+V2hhdCBGdW5jdGlvbnMgQXJlIFNhZmUgVG8gQ2FsbCBGcm9tIEludGVycnVwdHM/PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgTWFueSBmdW5jdGlvbnMgaW4gdGhlIGtlcm5lbCBzbGVlcCAoaWUuIGNhbGwgc2NoZWR1bGUoKSkKKyAgICAgIGRpcmVjdGx5IG9yIGluZGlyZWN0bHk6IHlvdSBjYW4gbmV2ZXIgY2FsbCB0aGVtIHdoaWxlIGhvbGRpbmcgYQorICAgICAgc3BpbmxvY2ssIG9yIHdpdGggcHJlZW1wdGlvbiBkaXNhYmxlZC4gIFRoaXMgYWxzbyBtZWFucyB5b3UgbmVlZAorICAgICAgdG8gYmUgaW4gdXNlciBjb250ZXh0OiBjYWxsaW5nIHRoZW0gZnJvbSBhbiBpbnRlcnJ1cHQgaXMgaWxsZWdhbC4KKyAgICA8L3BhcmE+CisKKyAgIDxzZWN0MSBpZD0ic2xlZXBpbmciPgorICAgIDx0aXRsZT5Tb21lIEZ1bmN0aW9ucyBXaGljaCBTbGVlcDwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgIFRoZSBtb3N0IGNvbW1vbiBvbmVzIGFyZSBsaXN0ZWQgYmVsb3csIGJ1dCB5b3UgdXN1YWxseSBoYXZlIHRvCisgICAgICByZWFkIHRoZSBjb2RlIHRvIGZpbmQgb3V0IGlmIG90aGVyIGNhbGxzIGFyZSBzYWZlLiAgSWYgZXZlcnlvbmUKKyAgICAgIGVsc2Ugd2hvIGNhbGxzIGl0IGNhbiBzbGVlcCwgeW91IHByb2JhYmx5IG5lZWQgdG8gYmUgYWJsZSB0bworICAgICAgc2xlZXAsIHRvby4gIEluIHBhcnRpY3VsYXIsIHJlZ2lzdHJhdGlvbiBhbmQgZGVyZWdpc3RyYXRpb24KKyAgICAgIGZ1bmN0aW9ucyB1c3VhbGx5IGV4cGVjdCB0byBiZSBjYWxsZWQgZnJvbSB1c2VyIGNvbnRleHQsIGFuZCBjYW4KKyAgICAgIHNsZWVwLgorICAgIDwvcGFyYT4KKworICAgIDxpdGVtaXplZGxpc3Q+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgICBBY2Nlc3NlcyB0byAKKyAgICAgICAgPGZpcnN0dGVybSBsaW5rZW5kPSJnbG9zcy11c2Vyc3BhY2UiPnVzZXJzcGFjZTwvZmlyc3R0ZXJtPjoKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICA8ZnVuY3Rpb24+Y29weV9mcm9tX3VzZXIoKTwvZnVuY3Rpb24+CisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgPGZ1bmN0aW9uPmNvcHlfdG9fdXNlcigpPC9mdW5jdGlvbj4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICA8ZnVuY3Rpb24+Z2V0X3VzZXIoKTwvZnVuY3Rpb24+CisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgPGZ1bmN0aW9uPnB1dF91c2VyKCk8L2Z1bmN0aW9uPgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICA8L2xpc3RpdGVtPgorCisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgICA8ZnVuY3Rpb24+a21hbGxvYyhHRlBfS0VSTkVMKTwvZnVuY3Rpb24+CisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICA8ZnVuY3Rpb24+bXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCk8L2Z1bmN0aW9uPiBhbmQKKyAgICAgIDxmdW5jdGlvbj5tdXRleF9sb2NrKCk8L2Z1bmN0aW9uPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlcmUgaXMgYSA8ZnVuY3Rpb24+bXV0ZXhfdHJ5bG9jaygpPC9mdW5jdGlvbj4gd2hpY2ggZG9lcyBub3QKKyAgICAgICBzbGVlcC4gIFN0aWxsLCBpdCBtdXN0IG5vdCBiZSB1c2VkIGluc2lkZSBpbnRlcnJ1cHQgY29udGV4dCBzaW5jZQorICAgICAgIGl0cyBpbXBsZW1lbnRhdGlvbiBpcyBub3Qgc2FmZSBmb3IgdGhhdC4KKyAgICAgICA8ZnVuY3Rpb24+bXV0ZXhfdW5sb2NrKCk8L2Z1bmN0aW9uPiB3aWxsIGFsc28gbmV2ZXIgc2xlZXAuCisgICAgICAgSXQgY2Fubm90IGJlIHVzZWQgaW4gaW50ZXJydXB0IGNvbnRleHQgZWl0aGVyIHNpbmNlIGEgbXV0ZXgKKyAgICAgICBtdXN0IGJlIHJlbGVhc2VkIGJ5IHRoZSBzYW1lIHRhc2sgdGhhdCBhY3F1aXJlZCBpdC4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L2l0ZW1pemVkbGlzdD4KKyAgIDwvc2VjdDE+CisKKyAgIDxzZWN0MSBpZD0iZG9udC1zbGVlcCI+CisgICAgPHRpdGxlPlNvbWUgRnVuY3Rpb25zIFdoaWNoIERvbid0IFNsZWVwPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICBTb21lIGZ1bmN0aW9ucyBhcmUgc2FmZSB0byBjYWxsIGZyb20gYW55IGNvbnRleHQsIG9yIGhvbGRpbmcKKyAgICAgYWxtb3N0IGFueSBsb2NrLgorICAgIDwvcGFyYT4KKworICAgIDxpdGVtaXplZGxpc3Q+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorCTxmdW5jdGlvbj5wcmludGsoKTwvZnVuY3Rpb24+CisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgICA8ZnVuY3Rpb24+a2ZyZWUoKTwvZnVuY3Rpb24+CisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorCTxmdW5jdGlvbj5hZGRfdGltZXIoKTwvZnVuY3Rpb24+IGFuZCA8ZnVuY3Rpb24+ZGVsX3RpbWVyKCk8L2Z1bmN0aW9uPgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJhcGlyZWYtbXV0ZXgiPgorICAgPHRpdGxlPk11dGV4IEFQSSByZWZlcmVuY2U8L3RpdGxlPgorIUlpbmNsdWRlL2xpbnV4L211dGV4LmgKKyFFa2VybmVsL2xvY2tpbmcvbXV0ZXguYworICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImFwaXJlZi1mdXRleCI+CisgICA8dGl0bGU+RnV0ZXggQVBJIHJlZmVyZW5jZTwvdGl0bGU+CishSWtlcm5lbC9mdXRleC5jCisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0icmVmZXJlbmNlcyI+CisgICA8dGl0bGU+RnVydGhlciByZWFkaW5nPC90aXRsZT4KKworICAgPGl0ZW1pemVkbGlzdD4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgIDxmaWxlbmFtZT5Eb2N1bWVudGF0aW9uL2xvY2tpbmcvc3BpbmxvY2tzLnR4dDwvZmlsZW5hbWU+OgorICAgICAgIExpbnVzIFRvcnZhbGRzJyBzcGlubG9ja2luZyB0dXRvcmlhbCBpbiB0aGUga2VybmVsIHNvdXJjZXMuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorCisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgICBVbml4IFN5c3RlbXMgZm9yIE1vZGVybiBBcmNoaXRlY3R1cmVzOiBTeW1tZXRyaWMKKyAgICAgICBNdWx0aXByb2Nlc3NpbmcgYW5kIENhY2hpbmcgZm9yIEtlcm5lbCBQcm9ncmFtbWVyczoKKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgIEN1cnQgU2NoaW1tZWwncyB2ZXJ5IGdvb2QgaW50cm9kdWN0aW9uIHRvIGtlcm5lbCBsZXZlbAorICAgICAgIGxvY2tpbmcgKG5vdCB3cml0dGVuIGZvciBMaW51eCwgYnV0IG5lYXJseSBldmVyeXRoaW5nCisgICAgICAgYXBwbGllcykuICBUaGUgYm9vayBpcyBleHBlbnNpdmUsIGJ1dCByZWFsbHkgd29ydGggZXZlcnkKKyAgICAgICBwZW5ueSB0byB1bmRlcnN0YW5kIFNNUCBsb2NraW5nLiBbSVNCTjogMDIwMTYzMzM4OF0KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L2l0ZW1pemVkbGlzdD4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJ0aGFua3MiPgorICAgIDx0aXRsZT5UaGFua3M8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICBUaGFua3MgdG8gVGVsc2EgR3d5bm5lIGZvciBEb2NCb29raW5nLCBuZWF0ZW5pbmcgYW5kIGFkZGluZworICAgICAgc3R5bGUuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBUaGFua3MgdG8gTWFydGluIFBvb2wsIFBoaWxpcHAgUnVtcGYsIFN0ZXBoZW4gUm90aHdlbGwsIFBhdWwKKyAgICAgIE1hY2tlcnJhcywgUnVlZGkgQXNjaHdhbmRlbiwgQWxhbiBDb3gsIE1hbmZyZWQgU3ByYXVsLCBUaW0KKyAgICAgIFdhdWdoLCBQZXRlIFphaXRjZXYsIEphbWVzIE1vcnJpcywgUm9iZXJ0IExvdmUsIFBhdWwgTWNLZW5uZXksCisgICAgICBKb2huIEFzaGJ5IGZvciBwcm9vZnJlYWRpbmcsIGNvcnJlY3RpbmcsIGZsYW1pbmcsIGNvbW1lbnRpbmcuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBUaGFua3MgdG8gdGhlIGNhYmFsIGZvciBoYXZpbmcgbm8gaW5mbHVlbmNlIG9uIHRoaXMgZG9jdW1lbnQuCisgICAgPC9wYXJhPgorICA8L2NoYXB0ZXI+CisKKyAgPGdsb3NzYXJ5IGlkPSJnbG9zc2FyeSI+CisgICA8dGl0bGU+R2xvc3Nhcnk8L3RpdGxlPgorCisgICA8Z2xvc3NlbnRyeSBpZD0iZ2xvc3MtcHJlZW1wdGlvbiI+CisgICAgPGdsb3NzdGVybT5wcmVlbXB0aW9uPC9nbG9zc3Rlcm0+CisgICAgIDxnbG9zc2RlZj4KKyAgICAgIDxwYXJhPgorICAgICAgICBQcmlvciB0byAyLjUsIG9yIHdoZW4gPHN5bWJvbD5DT05GSUdfUFJFRU1QVDwvc3ltYm9sPiBpcworICAgICAgICB1bnNldCwgcHJvY2Vzc2VzIGluIHVzZXIgY29udGV4dCBpbnNpZGUgdGhlIGtlcm5lbCB3b3VsZCBub3QKKyAgICAgICAgcHJlZW1wdCBlYWNoIG90aGVyIChpZS4geW91IGhhZCB0aGF0IENQVSB1bnRpbCB5b3UgZ2F2ZSBpdCB1cCwKKyAgICAgICAgZXhjZXB0IGZvciBpbnRlcnJ1cHRzKS4gIFdpdGggdGhlIGFkZGl0aW9uIG9mCisgICAgICAgIDxzeW1ib2w+Q09ORklHX1BSRUVNUFQ8L3N5bWJvbD4gaW4gMi41LjQsIHRoaXMgY2hhbmdlZDogd2hlbgorICAgICAgICBpbiB1c2VyIGNvbnRleHQsIGhpZ2hlciBwcmlvcml0eSB0YXNrcyBjYW4gImN1dCBpbiI6IHNwaW5sb2NrcworICAgICAgICB3ZXJlIGNoYW5nZWQgdG8gZGlzYWJsZSBwcmVlbXB0aW9uLCBldmVuIG9uIFVQLgorICAgICA8L3BhcmE+CisgICAgPC9nbG9zc2RlZj4KKyAgIDwvZ2xvc3NlbnRyeT4KKworICAgPGdsb3NzZW50cnkgaWQ9Imdsb3NzLWJoIj4KKyAgICA8Z2xvc3N0ZXJtPmJoPC9nbG9zc3Rlcm0+CisgICAgIDxnbG9zc2RlZj4KKyAgICAgIDxwYXJhPgorICAgICAgICBCb3R0b20gSGFsZjogZm9yIGhpc3RvcmljYWwgcmVhc29ucywgZnVuY3Rpb25zIHdpdGgKKyAgICAgICAgJ19iaCcgaW4gdGhlbSBvZnRlbiBub3cgcmVmZXIgdG8gYW55IHNvZnR3YXJlIGludGVycnVwdCwgZS5nLgorICAgICAgICA8ZnVuY3Rpb24+c3Bpbl9sb2NrX2JoKCk8L2Z1bmN0aW9uPiBibG9ja3MgYW55IHNvZnR3YXJlIGludGVycnVwdCAKKyAgICAgICAgb24gdGhlIGN1cnJlbnQgQ1BVLiAgQm90dG9tIGhhbHZlcyBhcmUgZGVwcmVjYXRlZCwgYW5kIHdpbGwgCisgICAgICAgIGV2ZW50dWFsbHkgYmUgcmVwbGFjZWQgYnkgdGFza2xldHMuICBPbmx5IG9uZSBib3R0b20gaGFsZiB3aWxsIGJlIAorICAgICAgICBydW5uaW5nIGF0IGFueSB0aW1lLgorICAgICA8L3BhcmE+CisgICAgPC9nbG9zc2RlZj4KKyAgIDwvZ2xvc3NlbnRyeT4KKworICAgPGdsb3NzZW50cnkgaWQ9Imdsb3NzLWh3aW50ZXJydXB0Ij4KKyAgICA8Z2xvc3N0ZXJtPkhhcmR3YXJlIEludGVycnVwdCAvIEhhcmR3YXJlIElSUTwvZ2xvc3N0ZXJtPgorICAgIDxnbG9zc2RlZj4KKyAgICAgPHBhcmE+CisgICAgICAgSGFyZHdhcmUgaW50ZXJydXB0IHJlcXVlc3QuICA8ZnVuY3Rpb24+aW5faXJxKCk8L2Z1bmN0aW9uPiByZXR1cm5zIAorICAgICAgIDxyZXR1cm52YWx1ZT50cnVlPC9yZXR1cm52YWx1ZT4gaW4gYSBoYXJkd2FyZSBpbnRlcnJ1cHQgaGFuZGxlci4KKyAgICAgPC9wYXJhPgorICAgIDwvZ2xvc3NkZWY+CisgICA8L2dsb3NzZW50cnk+CisKKyAgIDxnbG9zc2VudHJ5IGlkPSJnbG9zcy1pbnRlcnJ1cHRjb250ZXh0Ij4KKyAgICA8Z2xvc3N0ZXJtPkludGVycnVwdCBDb250ZXh0PC9nbG9zc3Rlcm0+CisgICAgPGdsb3NzZGVmPgorICAgICA8cGFyYT4KKyAgICAgICBOb3QgdXNlciBjb250ZXh0OiBwcm9jZXNzaW5nIGEgaGFyZHdhcmUgaXJxIG9yIHNvZnR3YXJlIGlycS4KKyAgICAgICBJbmRpY2F0ZWQgYnkgdGhlIDxmdW5jdGlvbj5pbl9pbnRlcnJ1cHQoKTwvZnVuY3Rpb24+IG1hY3JvIAorICAgICAgIHJldHVybmluZyA8cmV0dXJudmFsdWU+dHJ1ZTwvcmV0dXJudmFsdWU+LgorICAgICA8L3BhcmE+CisgICAgPC9nbG9zc2RlZj4KKyAgIDwvZ2xvc3NlbnRyeT4KKworICAgPGdsb3NzZW50cnkgaWQ9Imdsb3NzLXNtcCI+CisgICAgPGdsb3NzdGVybT48YWNyb255bT5TTVA8L2Fjcm9ueW0+PC9nbG9zc3Rlcm0+CisgICAgPGdsb3NzZGVmPgorICAgICA8cGFyYT4KKyAgICAgICBTeW1tZXRyaWMgTXVsdGktUHJvY2Vzc29yOiBrZXJuZWxzIGNvbXBpbGVkIGZvciBtdWx0aXBsZS1DUFUKKyAgICAgICBtYWNoaW5lcy4gIChDT05GSUdfU01QPXkpLgorICAgICA8L3BhcmE+CisgICAgPC9nbG9zc2RlZj4KKyAgIDwvZ2xvc3NlbnRyeT4KKworICAgPGdsb3NzZW50cnkgaWQ9Imdsb3NzLXNvZnRpcnEiPgorICAgIDxnbG9zc3Rlcm0+U29mdHdhcmUgSW50ZXJydXB0IC8gc29mdGlycTwvZ2xvc3N0ZXJtPgorICAgIDxnbG9zc2RlZj4KKyAgICAgPHBhcmE+CisgICAgICAgU29mdHdhcmUgaW50ZXJydXB0IGhhbmRsZXIuICA8ZnVuY3Rpb24+aW5faXJxKCk8L2Z1bmN0aW9uPiByZXR1cm5zCisgICAgICAgPHJldHVybnZhbHVlPmZhbHNlPC9yZXR1cm52YWx1ZT47IDxmdW5jdGlvbj5pbl9zb2Z0aXJxKCk8L2Z1bmN0aW9uPgorICAgICAgIHJldHVybnMgPHJldHVybnZhbHVlPnRydWU8L3JldHVybnZhbHVlPi4gIFRhc2tsZXRzIGFuZCBzb2Z0aXJxcworCWJvdGggZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZiAnc29mdHdhcmUgaW50ZXJydXB0cycuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICAgU3RyaWN0bHkgc3BlYWtpbmcgYSBzb2Z0aXJxIGlzIG9uZSBvZiB1cCB0byAzMiBlbnVtZXJhdGVkIHNvZnR3YXJlCisgICAgICAgaW50ZXJydXB0cyB3aGljaCBjYW4gcnVuIG9uIG11bHRpcGxlIENQVXMgYXQgb25jZS4KKyAgICAgICBTb21ldGltZXMgdXNlZCB0byByZWZlciB0byB0YXNrbGV0cyBhcworICAgICAgIHdlbGwgKGllLiBhbGwgc29mdHdhcmUgaW50ZXJydXB0cykuCisgICAgIDwvcGFyYT4KKyAgICA8L2dsb3NzZGVmPgorICAgPC9nbG9zc2VudHJ5PgorCisgICA8Z2xvc3NlbnRyeSBpZD0iZ2xvc3MtdGFza2xldCI+CisgICAgPGdsb3NzdGVybT50YXNrbGV0PC9nbG9zc3Rlcm0+CisgICAgPGdsb3NzZGVmPgorICAgICA8cGFyYT4KKyAgICAgICBBIGR5bmFtaWNhbGx5LXJlZ2lzdHJhYmxlIHNvZnR3YXJlIGludGVycnVwdCwKKyAgICAgICB3aGljaCBpcyBndWFyYW50ZWVkIHRvIG9ubHkgcnVuIG9uIG9uZSBDUFUgYXQgYSB0aW1lLgorICAgICA8L3BhcmE+CisgICAgPC9nbG9zc2RlZj4KKyAgIDwvZ2xvc3NlbnRyeT4KKworICAgPGdsb3NzZW50cnkgaWQ9Imdsb3NzLXRpbWVycyI+CisgICAgPGdsb3NzdGVybT50aW1lcjwvZ2xvc3N0ZXJtPgorICAgIDxnbG9zc2RlZj4KKyAgICAgPHBhcmE+CisgICAgICAgQSBkeW5hbWljYWxseS1yZWdpc3RyYWJsZSBzb2Z0d2FyZSBpbnRlcnJ1cHQsIHdoaWNoIGlzIHJ1biBhdAorICAgICAgIChvciBjbG9zZSB0bykgYSBnaXZlbiB0aW1lLiAgV2hlbiBydW5uaW5nLCBpdCBpcyBqdXN0IGxpa2UgYQorICAgICAgIHRhc2tsZXQgKGluIGZhY3QsIHRoZXkgYXJlIGNhbGxlZCBmcm9tIHRoZSBUSU1FUl9TT0ZUSVJRKS4KKyAgICAgPC9wYXJhPgorICAgIDwvZ2xvc3NkZWY+CisgICA8L2dsb3NzZW50cnk+CisKKyAgIDxnbG9zc2VudHJ5IGlkPSJnbG9zcy11cCI+CisgICAgPGdsb3NzdGVybT48YWNyb255bT5VUDwvYWNyb255bT48L2dsb3NzdGVybT4KKyAgICA8Z2xvc3NkZWY+CisgICAgIDxwYXJhPgorICAgICAgIFVuaS1Qcm9jZXNzb3I6IE5vbi1TTVAuICAoQ09ORklHX1NNUD1uKS4KKyAgICAgPC9wYXJhPgorICAgIDwvZ2xvc3NkZWY+CisgICA8L2dsb3NzZW50cnk+CisKKyAgIDxnbG9zc2VudHJ5IGlkPSJnbG9zcy11c2VyY29udGV4dCI+CisgICAgPGdsb3NzdGVybT5Vc2VyIENvbnRleHQ8L2dsb3NzdGVybT4KKyAgICA8Z2xvc3NkZWY+CisgICAgIDxwYXJhPgorICAgICAgIFRoZSBrZXJuZWwgZXhlY3V0aW5nIG9uIGJlaGFsZiBvZiBhIHBhcnRpY3VsYXIgcHJvY2VzcyAoaWUuIGEKKyAgICAgICBzeXN0ZW0gY2FsbCBvciB0cmFwKSBvciBrZXJuZWwgdGhyZWFkLiAgWW91IGNhbiB0ZWxsIHdoaWNoCisgICAgICAgcHJvY2VzcyB3aXRoIHRoZSA8c3ltYm9sPmN1cnJlbnQ8L3N5bWJvbD4gbWFjcm8uKSAgTm90IHRvCisgICAgICAgYmUgY29uZnVzZWQgd2l0aCB1c2Vyc3BhY2UuICBDYW4gYmUgaW50ZXJydXB0ZWQgYnkgc29mdHdhcmUgb3IKKyAgICAgICBoYXJkd2FyZSBpbnRlcnJ1cHRzLgorICAgICA8L3BhcmE+CisgICAgPC9nbG9zc2RlZj4KKyAgIDwvZ2xvc3NlbnRyeT4KKworICAgPGdsb3NzZW50cnkgaWQ9Imdsb3NzLXVzZXJzcGFjZSI+CisgICAgPGdsb3NzdGVybT5Vc2Vyc3BhY2U8L2dsb3NzdGVybT4KKyAgICA8Z2xvc3NkZWY+CisgICAgIDxwYXJhPgorICAgICAgIEEgcHJvY2VzcyBleGVjdXRpbmcgaXRzIG93biBjb2RlIG91dHNpZGUgdGhlIGtlcm5lbC4KKyAgICAgPC9wYXJhPgorICAgIDwvZ2xvc3NkZWY+CisgICA8L2dsb3NzZW50cnk+ICAgICAgCisKKyAgPC9nbG9zc2FyeT4KKzwvYm9vaz4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2tnZGIudG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9rZ2RiLnRtcGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjNhYmNhNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9rZ2RiLnRtcGwKQEAgLTAsMCArMSw5MTggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMS4yLy9FTiIKKwkiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQiIFtdPgorCis8Ym9vayBpZD0ia2dkYk9uTGludXgiPgorIDxib29raW5mbz4KKyAgPHRpdGxlPlVzaW5nIGtnZGIsIGtkYiBhbmQgdGhlIGtlcm5lbCBkZWJ1Z2dlciBpbnRlcm5hbHM8L3RpdGxlPgorCisgIDxhdXRob3Jncm91cD4KKyAgIDxhdXRob3I+CisgICAgPGZpcnN0bmFtZT5KYXNvbjwvZmlyc3RuYW1lPgorICAgIDxzdXJuYW1lPldlc3NlbDwvc3VybmFtZT4KKyAgICA8YWZmaWxpYXRpb24+CisgICAgIDxhZGRyZXNzPgorICAgICAgPGVtYWlsPmphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPC9lbWFpbD4KKyAgICAgPC9hZGRyZXNzPgorICAgIDwvYWZmaWxpYXRpb24+CisgICA8L2F1dGhvcj4KKyAgPC9hdXRob3Jncm91cD4KKyAgPGNvcHlyaWdodD4KKyAgIDx5ZWFyPjIwMDgsMjAxMDwveWVhcj4KKyAgIDxob2xkZXI+V2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuPC9ob2xkZXI+CisgIDwvY29weXJpZ2h0PgorICA8Y29weXJpZ2h0PgorICAgPHllYXI+MjAwNC0yMDA1PC95ZWFyPgorICAgPGhvbGRlcj5Nb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuPC9ob2xkZXI+CisgIDwvY29weXJpZ2h0PgorICA8Y29weXJpZ2h0PgorICAgPHllYXI+MjAwNDwveWVhcj4KKyAgIDxob2xkZXI+QW1pdCBTLiBLYWxlPC9ob2xkZXI+CisgIDwvY29weXJpZ2h0PgorCisgIDxsZWdhbG5vdGljZT4KKyAgIDxwYXJhPgorICAgVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIHZlcnNpb24gMi4gVGhpcyBwcm9ncmFtIGlzIGxpY2Vuc2VkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgb2YgYW55CisgICBraW5kLCB3aGV0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgIDwvcGFyYT4KKworICA8L2xlZ2Fsbm90aWNlPgorIDwvYm9va2luZm8+CisKKzx0b2M+PC90b2M+CisgIDxjaGFwdGVyIGlkPSJJbnRyb2R1Y3Rpb24iPgorICAgIDx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorICAgIDxwYXJhPgorICAgIFRoZSBrZXJuZWwgaGFzIHR3byBkaWZmZXJlbnQgZGVidWdnZXIgZnJvbnQgZW5kcyAoa2RiIGFuZCBrZ2RiKQorICAgIHdoaWNoIGludGVyZmFjZSB0byB0aGUgZGVidWcgY29yZS4gIEl0IGlzIHBvc3NpYmxlIHRvIHVzZSBlaXRoZXIKKyAgICBvZiB0aGUgZGVidWdnZXIgZnJvbnQgZW5kcyBhbmQgZHluYW1pY2FsbHkgdHJhbnNpdGlvbiBiZXR3ZWVuIHRoZW0KKyAgICBpZiB5b3UgY29uZmlndXJlIHRoZSBrZXJuZWwgcHJvcGVybHkgYXQgY29tcGlsZSBhbmQgcnVudGltZS4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgS2RiIGlzIHNpbXBsaXN0aWMgc2hlbGwtc3R5bGUgaW50ZXJmYWNlIHdoaWNoIHlvdSBjYW4gdXNlIG9uIGEKKyAgICBzeXN0ZW0gY29uc29sZSB3aXRoIGEga2V5Ym9hcmQgb3Igc2VyaWFsIGNvbnNvbGUuICBZb3UgY2FuIHVzZSBpdAorICAgIHRvIGluc3BlY3QgbWVtb3J5LCByZWdpc3RlcnMsIHByb2Nlc3MgbGlzdHMsIGRtZXNnLCBhbmQgZXZlbiBzZXQKKyAgICBicmVha3BvaW50cyB0byBzdG9wIGluIGEgY2VydGFpbiBsb2NhdGlvbi4gIEtkYiBpcyBub3QgYSBzb3VyY2UKKyAgICBsZXZlbCBkZWJ1Z2dlciwgYWx0aG91Z2ggeW91IGNhbiBzZXQgYnJlYWtwb2ludHMgYW5kIGV4ZWN1dGUgc29tZQorICAgIGJhc2ljIGtlcm5lbCBydW4gY29udHJvbC4gIEtkYiBpcyBtYWlubHkgYWltZWQgYXQgZG9pbmcgc29tZQorICAgIGFuYWx5c2lzIHRvIGFpZCBpbiBkZXZlbG9wbWVudCBvciBkaWFnbm9zaW5nIGtlcm5lbCBwcm9ibGVtcy4gIFlvdQorICAgIGNhbiBhY2Nlc3Mgc29tZSBzeW1ib2xzIGJ5IG5hbWUgaW4ga2VybmVsIGJ1aWx0LWlucyBvciBpbiBrZXJuZWwKKyAgICBtb2R1bGVzIGlmIHRoZSBjb2RlIHdhcyBidWlsdAorICAgIHdpdGggPHN5bWJvbD5DT05GSUdfS0FMTFNZTVM8L3N5bWJvbD4uCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgIEtnZGIgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBhIHNvdXJjZSBsZXZlbCBkZWJ1Z2dlciBmb3IgdGhlCisgICAgTGludXgga2VybmVsLiBJdCBpcyB1c2VkIGFsb25nIHdpdGggZ2RiIHRvIGRlYnVnIGEgTGludXgga2VybmVsLgorICAgIFRoZSBleHBlY3RhdGlvbiBpcyB0aGF0IGdkYiBjYW4gYmUgdXNlZCB0byAiYnJlYWsgaW4iIHRvIHRoZQorICAgIGtlcm5lbCB0byBpbnNwZWN0IG1lbW9yeSwgdmFyaWFibGVzIGFuZCBsb29rIHRocm91Z2ggY2FsbCBzdGFjaworICAgIGluZm9ybWF0aW9uIHNpbWlsYXIgdG8gdGhlIHdheSBhbiBhcHBsaWNhdGlvbiBkZXZlbG9wZXIgd291bGQgdXNlCisgICAgZ2RiIHRvIGRlYnVnIGFuIGFwcGxpY2F0aW9uLiAgSXQgaXMgcG9zc2libGUgdG8gcGxhY2UgYnJlYWtwb2ludHMKKyAgICBpbiBrZXJuZWwgY29kZSBhbmQgcGVyZm9ybSBzb21lIGxpbWl0ZWQgZXhlY3V0aW9uIHN0ZXBwaW5nLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICBUd28gbWFjaGluZXMgYXJlIHJlcXVpcmVkIGZvciB1c2luZyBrZ2RiLiBPbmUgb2YgdGhlc2UgbWFjaGluZXMgaXMKKyAgICBhIGRldmVsb3BtZW50IG1hY2hpbmUgYW5kIHRoZSBvdGhlciBpcyB0aGUgdGFyZ2V0IG1hY2hpbmUuICBUaGUKKyAgICBrZXJuZWwgdG8gYmUgZGVidWdnZWQgcnVucyBvbiB0aGUgdGFyZ2V0IG1hY2hpbmUuIFRoZSBkZXZlbG9wbWVudAorICAgIG1hY2hpbmUgcnVucyBhbiBpbnN0YW5jZSBvZiBnZGIgYWdhaW5zdCB0aGUgdm1saW51eCBmaWxlIHdoaWNoCisgICAgY29udGFpbnMgdGhlIHN5bWJvbHMgKG5vdCBhIGJvb3QgaW1hZ2Ugc3VjaCBhcyBiekltYWdlLCB6SW1hZ2UsCisgICAgdUltYWdlLi4uKS4gIEluIGdkYiB0aGUgZGV2ZWxvcGVyIHNwZWNpZmllcyB0aGUgY29ubmVjdGlvbgorICAgIHBhcmFtZXRlcnMgYW5kIGNvbm5lY3RzIHRvIGtnZGIuICBUaGUgdHlwZSBvZiBjb25uZWN0aW9uIGEKKyAgICBkZXZlbG9wZXIgbWFrZXMgd2l0aCBnZGIgZGVwZW5kcyBvbiB0aGUgYXZhaWxhYmlsaXR5IG9mIGtnZGIgSS9PCisgICAgbW9kdWxlcyBjb21waWxlZCBhcyBidWlsdC1pbnMgb3IgbG9hZGFibGUga2VybmVsIG1vZHVsZXMgaW4gdGhlIHRlc3QKKyAgICBtYWNoaW5lJ3Mga2VybmVsLgorICAgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorICA8Y2hhcHRlciBpZD0iQ29tcGlsaW5nQUtlcm5lbCI+CisgIDx0aXRsZT5Db21waWxpbmcgYSBrZXJuZWw8L3RpdGxlPgorICA8cGFyYT4KKyAgPGl0ZW1pemVkbGlzdD4KKyAgPGxpc3RpdGVtPjxwYXJhPkluIG9yZGVyIHRvIGVuYWJsZSBjb21waWxhdGlvbiBvZiBrZGIsIHlvdSBtdXN0IGZpcnN0IGVuYWJsZSBrZ2RiLjwvcGFyYT48L2xpc3RpdGVtPgorICA8bGlzdGl0ZW0+PHBhcmE+VGhlIGtnZGIgdGVzdCBjb21waWxlIG9wdGlvbnMgYXJlIGRlc2NyaWJlZCBpbiB0aGUga2dkYiB0ZXN0IHN1aXRlIGNoYXB0ZXIuPC9wYXJhPjwvbGlzdGl0ZW0+CisgIDwvaXRlbWl6ZWRsaXN0PgorICA8L3BhcmE+CisgIDxzZWN0MSBpZD0iQ29tcGlsZUtHREIiPgorICAgIDx0aXRsZT5LZXJuZWwgY29uZmlnIG9wdGlvbnMgZm9yIGtnZGI8L3RpdGxlPgorICAgIDxwYXJhPgorICAgIFRvIGVuYWJsZSA8c3ltYm9sPkNPTkZJR19LR0RCPC9zeW1ib2w+IHlvdSBzaG91bGQgbG9vayB1bmRlcgorICAgICJLZXJuZWwgaGFja2luZyIgLyAiS2VybmVsIGRlYnVnZ2luZyIgYW5kIHNlbGVjdCAiS0dEQjoga2VybmVsIGRlYnVnZ2VyIi4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgV2hpbGUgaXQgaXMgbm90IGEgaGFyZCByZXF1aXJlbWVudCB0aGF0IHlvdSBoYXZlIHN5bWJvbHMgaW4geW91cgorICAgIHZtbGludXggZmlsZSwgZ2RiIHRlbmRzIG5vdCB0byBiZSB2ZXJ5IHVzZWZ1bCB3aXRob3V0IHRoZSBzeW1ib2xpYworICAgIGRhdGEsIHNvIHlvdSB3aWxsIHdhbnQgdG8gdHVybgorICAgIG9uIDxzeW1ib2w+Q09ORklHX0RFQlVHX0lORk88L3N5bWJvbD4gd2hpY2ggaXMgY2FsbGVkICJDb21waWxlIHRoZQorICAgIGtlcm5lbCB3aXRoIGRlYnVnIGluZm8iIGluIHRoZSBjb25maWcgbWVudS4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgSXQgaXMgYWR2aXNlZCwgYnV0IG5vdCByZXF1aXJlZCwgdGhhdCB5b3UgdHVybiBvbiB0aGUKKyAgICA8c3ltYm9sPkNPTkZJR19GUkFNRV9QT0lOVEVSPC9zeW1ib2w+IGtlcm5lbCBvcHRpb24gd2hpY2ggaXMgY2FsbGVkICJDb21waWxlIHRoZQorICAgIGtlcm5lbCB3aXRoIGZyYW1lIHBvaW50ZXJzIiBpbiB0aGUgY29uZmlnIG1lbnUuICBUaGlzIG9wdGlvbgorICAgIGluc2VydHMgY29kZSB0byBpbnRvIHRoZSBjb21waWxlZCBleGVjdXRhYmxlIHdoaWNoIHNhdmVzIHRoZSBmcmFtZQorICAgIGluZm9ybWF0aW9uIGluIHJlZ2lzdGVycyBvciBvbiB0aGUgc3RhY2sgYXQgZGlmZmVyZW50IHBvaW50cyB3aGljaAorICAgIGFsbG93cyBhIGRlYnVnZ2VyIHN1Y2ggYXMgZ2RiIHRvIG1vcmUgYWNjdXJhdGVseSBjb25zdHJ1Y3QKKyAgICBzdGFjayBiYWNrIHRyYWNlcyB3aGlsZSBkZWJ1Z2dpbmcgdGhlIGtlcm5lbC4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgSWYgdGhlIGFyY2hpdGVjdHVyZSB0aGF0IHlvdSBhcmUgdXNpbmcgc3VwcG9ydHMgdGhlIGtlcm5lbCBvcHRpb24KKyAgICBDT05GSUdfREVCVUdfUk9EQVRBLCB5b3Ugc2hvdWxkIGNvbnNpZGVyIHR1cm5pbmcgaXQgb2ZmLiAgVGhpcworICAgIG9wdGlvbiB3aWxsIHByZXZlbnQgdGhlIHVzZSBvZiBzb2Z0d2FyZSBicmVha3BvaW50cyBiZWNhdXNlIGl0CisgICAgbWFya3MgY2VydGFpbiByZWdpb25zIG9mIHRoZSBrZXJuZWwncyBtZW1vcnkgc3BhY2UgYXMgcmVhZC1vbmx5LgorICAgIElmIGtnZGIgc3VwcG9ydHMgaXQgZm9yIHRoZSBhcmNoaXRlY3R1cmUgeW91IGFyZSB1c2luZywgeW91IGNhbgorICAgIHVzZSBoYXJkd2FyZSBicmVha3BvaW50cyBpZiB5b3UgZGVzaXJlIHRvIHJ1biB3aXRoIHRoZQorICAgIENPTkZJR19ERUJVR19ST0RBVEEgb3B0aW9uIHR1cm5lZCBvbiwgZWxzZSB5b3UgbmVlZCB0byB0dXJuIG9mZgorICAgIHRoaXMgb3B0aW9uLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICBOZXh0IHlvdSBzaG91bGQgY2hvb3NlIG9uZSBvZiBtb3JlIEkvTyBkcml2ZXJzIHRvIGludGVyY29ubmVjdAorICAgIGRlYnVnZ2luZyBob3N0IGFuZCBkZWJ1Z2dlZCB0YXJnZXQuICBFYXJseSBib290IGRlYnVnZ2luZyByZXF1aXJlcworICAgIGEgS0dEQiBJL08gZHJpdmVyIHRoYXQgc3VwcG9ydHMgZWFybHkgZGVidWdnaW5nIGFuZCB0aGUgZHJpdmVyCisgICAgbXVzdCBiZSBidWlsdCBpbnRvIHRoZSBrZXJuZWwgZGlyZWN0bHkuIEtnZGIgSS9PIGRyaXZlcgorICAgIGNvbmZpZ3VyYXRpb24gdGFrZXMgcGxhY2UgdmlhIGtlcm5lbCBvciBtb2R1bGUgcGFyYW1ldGVycyB3aGljaAorICAgIHlvdSBjYW4gbGVhcm4gbW9yZSBhYm91dCBpbiB0aGUgaW4gdGhlIHNlY3Rpb24gdGhhdCBkZXNjcmliZXMgdGhlCisgICAgcGFyYW1ldGVyICJrZ2Rib2MiLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT5IZXJlIGlzIGFuIGV4YW1wbGUgc2V0IG9mIC5jb25maWcgc3ltYm9scyB0byBlbmFibGUgb3IKKyAgICBkaXNhYmxlIGZvciBrZ2RiOgorICAgIDxpdGVtaXplZGxpc3Q+CisgICAgPGxpc3RpdGVtPjxwYXJhPiMgQ09ORklHX0RFQlVHX1JPREFUQSBpcyBub3Qgc2V0PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPjxwYXJhPkNPTkZJR19GUkFNRV9QT0lOVEVSPXk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+PHBhcmE+Q09ORklHX0tHREI9eTwvcGFyYT48L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT48cGFyYT5DT05GSUdfS0dEQl9TRVJJQUxfQ09OU09MRT15PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9wYXJhPgorICA8L3NlY3QxPgorICA8c2VjdDEgaWQ9IkNvbXBpbGVLREIiPgorICAgIDx0aXRsZT5LZXJuZWwgY29uZmlnIG9wdGlvbnMgZm9yIGtkYjwvdGl0bGU+CisgICAgPHBhcmE+S2RiIGlzIHF1aXRlIGEgYml0IG1vcmUgY29tcGxleCB0aGFuIHRoZSBzaW1wbGUgZ2Ric3R1YgorICAgIHNpdHRpbmcgb24gdG9wIG9mIHRoZSBrZXJuZWwncyBkZWJ1ZyBjb3JlLiAgS2RiIG11c3QgaW1wbGVtZW50IGEKKyAgICBzaGVsbCwgYW5kIGFsc28gYWRkcyBzb21lIGhlbHBlciBmdW5jdGlvbnMgaW4gb3RoZXIgcGFydHMgb2YgdGhlCisgICAga2VybmVsLCByZXNwb25zaWJsZSBmb3IgcHJpbnRpbmcgb3V0IGludGVyZXN0aW5nIGRhdGEgc3VjaCBhcyB3aGF0CisgICAgeW91IHdvdWxkIHNlZSBpZiB5b3UgcmFuICJsc21vZCIsIG9yICJwcyIuICBJbiBvcmRlciB0byBidWlsZCBrZGIKKyAgICBpbnRvIHRoZSBrZXJuZWwgeW91IGZvbGxvdyB0aGUgc2FtZSBzdGVwcyBhcyB5b3Ugd291bGQgZm9yIGtnZGIuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPlRoZSBtYWluIGNvbmZpZyBvcHRpb24gZm9yIGtkYgorICAgIGlzIDxzeW1ib2w+Q09ORklHX0tHREJfS0RCPC9zeW1ib2w+IHdoaWNoIGlzIGNhbGxlZCAiS0dEQl9LREI6CisgICAgaW5jbHVkZSBrZGIgZnJvbnRlbmQgZm9yIGtnZGIiIGluIHRoZSBjb25maWcgbWVudS4gIEluIHRoZW9yeSB5b3UKKyAgICB3b3VsZCBoYXZlIGFscmVhZHkgYWxzbyBzZWxlY3RlZCBhbiBJL08gZHJpdmVyIHN1Y2ggYXMgdGhlCisgICAgQ09ORklHX0tHREJfU0VSSUFMX0NPTlNPTEUgaW50ZXJmYWNlIGlmIHlvdSBwbGFuIG9uIHVzaW5nIGtkYiBvbiBhCisgICAgc2VyaWFsIHBvcnQsIHdoZW4geW91IHdlcmUgY29uZmlndXJpbmcga2dkYi4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+SWYgeW91IHdhbnQgdG8gdXNlIGEgUFMvMi1zdHlsZSBrZXlib2FyZCB3aXRoIGtkYiwgeW91IHdvdWxkCisgICAgc2VsZWN0IENPTkZJR19LREJfS0VZQk9BUkQgd2hpY2ggaXMgY2FsbGVkICJLR0RCX0tEQjoga2V5Ym9hcmQgYXMKKyAgICBpbnB1dCBkZXZpY2UiIGluIHRoZSBjb25maWcgbWVudS4gIFRoZSBDT05GSUdfS0RCX0tFWUJPQVJEIG9wdGlvbgorICAgIGlzIG5vdCB1c2VkIGZvciBhbnl0aGluZyBpbiB0aGUgZ2RiIGludGVyZmFjZSB0byBrZ2RiLiAgVGhlCisgICAgQ09ORklHX0tEQl9LRVlCT0FSRCBvcHRpb24gb25seSB3b3JrcyB3aXRoIGtkYi4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+SGVyZSBpcyBhbiBleGFtcGxlIHNldCBvZiAuY29uZmlnIHN5bWJvbHMgdG8gZW5hYmxlL2Rpc2FibGUga2RiOgorICAgIDxpdGVtaXplZGxpc3Q+CisgICAgPGxpc3RpdGVtPjxwYXJhPiMgQ09ORklHX0RFQlVHX1JPREFUQSBpcyBub3Qgc2V0PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPjxwYXJhPkNPTkZJR19GUkFNRV9QT0lOVEVSPXk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+PHBhcmE+Q09ORklHX0tHREI9eTwvcGFyYT48L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT48cGFyYT5DT05GSUdfS0dEQl9TRVJJQUxfQ09OU09MRT15PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPjxwYXJhPkNPTkZJR19LR0RCX0tEQj15PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPjxwYXJhPkNPTkZJR19LREJfS0VZQk9BUkQ9eTwvcGFyYT48L2xpc3RpdGVtPgorICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKyAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorICA8Y2hhcHRlciBpZD0ia2dkYktlcm5lbEFyZ3MiPgorICA8dGl0bGU+S2VybmVsIERlYnVnZ2VyIEJvb3QgQXJndW1lbnRzPC90aXRsZT4KKyAgPHBhcmE+VGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgdmFyaW91cyBydW50aW1lIGtlcm5lbAorICBwYXJhbWV0ZXJzIHRoYXQgYWZmZWN0IHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBrZXJuZWwgZGVidWdnZXIuCisgIFRoZSBmb2xsb3dpbmcgY2hhcHRlciBjb3ZlcnMgdXNpbmcga2RiIGFuZCBrZ2RiIGFzIHdlbGwgYXMKKyAgcHJvdmlkaW5nIHNvbWUgZXhhbXBsZXMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy48L3BhcmE+CisgICA8c2VjdDEgaWQ9ImtnZGJvYyI+CisgICA8dGl0bGU+S2VybmVsIHBhcmFtZXRlcjoga2dkYm9jPC90aXRsZT4KKyAgIDxwYXJhPlRoZSBrZ2Rib2MgZHJpdmVyIHdhcyBvcmlnaW5hbGx5IGFuIGFiYnJldmlhdGlvbiBtZWFudCB0bworICAgc3RhbmQgZm9yICJrZ2RiIG92ZXIgY29uc29sZSIuICBUb2RheSBpdCBpcyB0aGUgcHJpbWFyeSBtZWNoYW5pc20KKyAgIHRvIGNvbmZpZ3VyZSBob3cgdG8gY29tbXVuaWNhdGUgZnJvbSBnZGIgdG8ga2dkYiBhcyB3ZWxsIGFzIHRoZQorICAgZGV2aWNlcyB5b3Ugd2FudCB0byB1c2UgdG8gaW50ZXJhY3Qgd2l0aCB0aGUga2RiIHNoZWxsLgorICAgPC9wYXJhPgorICAgPHBhcmE+Rm9yIGtnZGIvZ2RiLCBrZ2Rib2MgaXMgZGVzaWduZWQgdG8gd29yayB3aXRoIGEgc2luZ2xlIHNlcmlhbAorICAgcG9ydC4gSXQgaXMgaW50ZW5kZWQgdG8gY292ZXIgdGhlIGNpcmN1bXN0YW5jZSB3aGVyZSB5b3Ugd2FudCB0bworICAgdXNlIGEgc2VyaWFsIGNvbnNvbGUgYXMgeW91ciBwcmltYXJ5IGNvbnNvbGUgYXMgd2VsbCBhcyB1c2luZyBpdCB0bworICAgcGVyZm9ybSBrZXJuZWwgZGVidWdnaW5nLiAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byB1c2Uga2dkYiBvbiBhCisgICBzZXJpYWwgcG9ydCB3aGljaCBpcyBub3QgZGVzaWduYXRlZCBhcyBhIHN5c3RlbSBjb25zb2xlLiAgS2dkYm9jCisgICBtYXkgYmUgY29uZmlndXJlZCBhcyBhIGtlcm5lbCBidWlsdC1pbiBvciBhIGtlcm5lbCBsb2FkYWJsZSBtb2R1bGUuCisgICBZb3UgY2FuIG9ubHkgbWFrZSB1c2Ugb2YgPGNvbnN0YW50PmtnZGJ3YWl0PC9jb25zdGFudD4gYW5kIGVhcmx5CisgICBkZWJ1Z2dpbmcgaWYgeW91IGJ1aWxkIGtnZGJvYyBpbnRvIHRoZSBrZXJuZWwgYXMgYSBidWlsdC1pbi4KKyAgIDwvcGFyYT4KKyAgIDxwYXJhPk9wdGlvbmFsbHkgeW91IGNhbiBlbGVjdCB0byBhY3RpdmF0ZSBrbXMgKEtlcm5lbCBNb2RlCisgICBTZXR0aW5nKSBpbnRlZ3JhdGlvbi4gIFdoZW4geW91IHVzZSBrbXMgd2l0aCBrZ2Rib2MgYW5kIHlvdSBoYXZlIGEKKyAgIHZpZGVvIGRyaXZlciB0aGF0IGhhcyBhdG9taWMgbW9kZSBzZXR0aW5nIGhvb2tzLCBpdCBpcyBwb3NzaWJsZSB0bworICAgZW50ZXIgdGhlIGRlYnVnZ2VyIG9uIHRoZSBncmFwaGljcyBjb25zb2xlLiAgV2hlbiB0aGUga2VybmVsCisgICBleGVjdXRpb24gaXMgcmVzdW1lZCwgdGhlIHByZXZpb3VzIGdyYXBoaWNzIG1vZGUgd2lsbCBiZSByZXN0b3JlZC4KKyAgIFRoaXMgaW50ZWdyYXRpb24gY2FuIHNlcnZlIGFzIGEgdXNlZnVsIHRvb2wgdG8gYWlkIGluIGRpYWdub3NpbmcKKyAgIGNyYXNoZXMgb3IgZG9pbmcgYW5hbHlzaXMgb2YgbWVtb3J5IHdpdGgga2RiIHdoaWxlIGFsbG93aW5nIHRoZQorICAgZnVsbCBncmFwaGljcyBjb25zb2xlIGFwcGxpY2F0aW9ucyB0byBydW4uCisgICA8L3BhcmE+CisgICA8c2VjdDIgaWQ9ImtnZGJvY0FyZ3MiPgorICAgPHRpdGxlPmtnZGJvYyBhcmd1bWVudHM8L3RpdGxlPgorICAgPHBhcmE+VXNhZ2U6IDxjb25zdGFudD5rZ2Rib2M9W2ttc11bWyxda2JkXVtbLF1zZXJpYWxfZGV2aWNlXVssYmF1ZF08L2NvbnN0YW50PjwvcGFyYT4KKyAgIDxwYXJhPlRoZSBvcmRlciBsaXN0ZWQgYWJvdmUgbXVzdCBiZSBvYnNlcnZlZCBpZiB5b3UgdXNlIGFueSBvZiB0aGUKKyAgIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb25zIHRvZ2V0aGVyLgorICAgPC9wYXJhPgorICAgPHBhcmE+QWJicmV2aWF0aW9uczoKKyAgIDxpdGVtaXplZGxpc3Q+CisgICA8bGlzdGl0ZW0+PHBhcmE+a21zID0gS2VybmVsIE1vZGUgU2V0dGluZzwvcGFyYT48L2xpc3RpdGVtPgorICAgPGxpc3RpdGVtPjxwYXJhPmtiZCA9IEtleWJvYXJkPC9wYXJhPjwvbGlzdGl0ZW0+CisgICA8L2l0ZW1pemVkbGlzdD4KKyAgIDwvcGFyYT4KKyAgIDxwYXJhPllvdSBjYW4gY29uZmlndXJlIGtnZGJvYyB0byB1c2UgdGhlIGtleWJvYXJkLCBhbmQvb3IgYSBzZXJpYWwKKyAgIGRldmljZSBkZXBlbmRpbmcgb24gaWYgeW91IGFyZSB1c2luZyBrZGIgYW5kL29yIGtnZGIsIGluIG9uZSBvZiB0aGUKKyAgIGZvbGxvd2luZyBzY2VuYXJpb3MuICBUaGUgb3JkZXIgbGlzdGVkIGFib3ZlIG11c3QgYmUgb2JzZXJ2ZWQgaWYKKyAgIHlvdSB1c2UgYW55IG9mIHRoZSBvcHRpb25hbCBjb25maWd1cmF0aW9ucyB0b2dldGhlci4gIFVzaW5nIGttcyArCisgICBvbmx5IGdkYiBpcyBnZW5lcmFsbHkgbm90IGEgdXNlZnVsIGNvbWJpbmF0aW9uLjwvcGFyYT4KKyAgIDxzZWN0MyBpZD0ia2dkYm9jQXJnczEiPgorICAgPHRpdGxlPlVzaW5nIGxvYWRhYmxlIG1vZHVsZSBvciBidWlsdC1pbjwvdGl0bGU+CisgICA8cGFyYT4KKyAgIDxvcmRlcmVkbGlzdD4KKyAgIDxsaXN0aXRlbT48cGFyYT5BcyBhIGtlcm5lbCBidWlsdC1pbjo8L3BhcmE+CisgICA8cGFyYT5Vc2UgdGhlIGtlcm5lbCBib290IGFyZ3VtZW50OiA8Y29uc3RhbnQ+a2dkYm9jPSZsdDt0dHktZGV2aWNlJmd0OyxbYmF1ZF08L2NvbnN0YW50PjwvcGFyYT48L2xpc3RpdGVtPgorICAgPGxpc3RpdGVtPgorICAgPHBhcmE+QXMgYSBrZXJuZWwgbG9hZGFibGUgbW9kdWxlOjwvcGFyYT4KKyAgIDxwYXJhPlVzZSB0aGUgY29tbWFuZDogPGNvbnN0YW50Pm1vZHByb2JlIGtnZGJvYyBrZ2Rib2M9Jmx0O3R0eS1kZXZpY2UmZ3Q7LFtiYXVkXTwvY29uc3RhbnQ+PC9wYXJhPgorICAgPHBhcmE+SGVyZSBhcmUgdHdvIGV4YW1wbGVzIG9mIGhvdyB5b3UgbWlnaHQgZm9ybWF0IHRoZSBrZ2Rib2MKKyAgIHN0cmluZy4gVGhlIGZpcnN0IGlzIGZvciBhbiB4ODYgdGFyZ2V0IHVzaW5nIHRoZSBmaXJzdCBzZXJpYWwgcG9ydC4KKyAgIFRoZSBzZWNvbmQgZXhhbXBsZSBpcyBmb3IgdGhlIEFSTSBWZXJzYXRpbGUgQUIgdXNpbmcgdGhlIHNlY29uZAorICAgc2VyaWFsIHBvcnQuCisgICA8b3JkZXJlZGxpc3Q+CisgICA8bGlzdGl0ZW0+PHBhcmE+PGNvbnN0YW50PmtnZGJvYz10dHlTMCwxMTUyMDA8L2NvbnN0YW50PjwvcGFyYT48L2xpc3RpdGVtPgorICAgPGxpc3RpdGVtPjxwYXJhPjxjb25zdGFudD5rZ2Rib2M9dHR5QU1BMSwxMTUyMDA8L2NvbnN0YW50PjwvcGFyYT48L2xpc3RpdGVtPgorICAgPC9vcmRlcmVkbGlzdD4KKyAgIDwvcGFyYT4KKyAgIDwvbGlzdGl0ZW0+CisgICA8L29yZGVyZWRsaXN0PjwvcGFyYT4KKyAgIDwvc2VjdDM+CisgICA8c2VjdDMgaWQ9ImtnZGJvY0FyZ3MyIj4KKyAgIDx0aXRsZT5Db25maWd1cmUga2dkYm9jIGF0IHJ1bnRpbWUgd2l0aCBzeXNmczwvdGl0bGU+CisgICA8cGFyYT5BdCBydW4gdGltZSB5b3UgY2FuIGVuYWJsZSBvciBkaXNhYmxlIGtnZGJvYyBieSBlY2hvaW5nIGEKKyAgIHBhcmFtZXRlcnMgaW50byB0aGUgc3lzZnMuICBIZXJlIGFyZSB0d28gZXhhbXBsZXM6PC9wYXJhPgorICAgPG9yZGVyZWRsaXN0PgorICAgPGxpc3RpdGVtPjxwYXJhPkVuYWJsZSBrZ2Rib2Mgb24gdHR5UzA8L3BhcmE+CisgICA8cGFyYT48Y29uc3RhbnQ+ZWNobyB0dHlTMCAmZ3Q7IC9zeXMvbW9kdWxlL2tnZGJvYy9wYXJhbWV0ZXJzL2tnZGJvYzwvY29uc3RhbnQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICA8bGlzdGl0ZW0+PHBhcmE+RGlzYWJsZSBrZ2Rib2M8L3BhcmE+CisgICA8cGFyYT48Y29uc3RhbnQ+ZWNobyAiIiAmZ3Q7IC9zeXMvbW9kdWxlL2tnZGJvYy9wYXJhbWV0ZXJzL2tnZGJvYzwvY29uc3RhbnQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICA8L29yZGVyZWRsaXN0PgorICAgPHBhcmE+Tk9URTogWW91IGRvIG5vdCBuZWVkIHRvIHNwZWNpZnkgdGhlIGJhdWQgaWYgeW91IGFyZQorICAgY29uZmlndXJpbmcgdGhlIGNvbnNvbGUgb24gdHR5IHdoaWNoIGlzIGFscmVhZHkgY29uZmlndXJlZCBvcgorICAgb3Blbi48L3BhcmE+CisgICA8L3NlY3QzPgorICAgPHNlY3QzIGlkPSJrZ2Rib2NBcmdzMyI+CisgICA8dGl0bGU+TW9yZSBleGFtcGxlczwvdGl0bGU+CisgICA8cGFyYT5Zb3UgY2FuIGNvbmZpZ3VyZSBrZ2Rib2MgdG8gdXNlIHRoZSBrZXlib2FyZCwgYW5kL29yIGEgc2VyaWFsIGRldmljZQorICAgZGVwZW5kaW5nIG9uIGlmIHlvdSBhcmUgdXNpbmcga2RiIGFuZC9vciBrZ2RiLCBpbiBvbmUgb2YgdGhlCisgICBmb2xsb3dpbmcgc2NlbmFyaW9zLgorICAgPG9yZGVyZWRsaXN0PgorICAgPGxpc3RpdGVtPjxwYXJhPmtkYiBhbmQga2dkYiBvdmVyIG9ubHkgYSBzZXJpYWwgcG9ydDwvcGFyYT4KKyAgIDxwYXJhPjxjb25zdGFudD5rZ2Rib2M9Jmx0O3NlcmlhbF9kZXZpY2UmZ3Q7WyxiYXVkXTwvY29uc3RhbnQ+PC9wYXJhPgorICAgPHBhcmE+RXhhbXBsZTogPGNvbnN0YW50PmtnZGJvYz10dHlTMCwxMTUyMDA8L2NvbnN0YW50PjwvcGFyYT4KKyAgIDwvbGlzdGl0ZW0+CisgICA8bGlzdGl0ZW0+PHBhcmE+a2RiIGFuZCBrZ2RiIHdpdGgga2V5Ym9hcmQgYW5kIGEgc2VyaWFsIHBvcnQ8L3BhcmE+CisgICA8cGFyYT48Y29uc3RhbnQ+a2dkYm9jPWtiZCwmbHQ7c2VyaWFsX2RldmljZSZndDtbLGJhdWRdPC9jb25zdGFudD48L3BhcmE+CisgICA8cGFyYT5FeGFtcGxlOiA8Y29uc3RhbnQ+a2dkYm9jPWtiZCx0dHlTMCwxMTUyMDA8L2NvbnN0YW50PjwvcGFyYT4KKyAgIDwvbGlzdGl0ZW0+CisgICA8bGlzdGl0ZW0+PHBhcmE+a2RiIHdpdGggYSBrZXlib2FyZDwvcGFyYT4KKyAgIDxwYXJhPjxjb25zdGFudD5rZ2Rib2M9a2JkPC9jb25zdGFudD48L3BhcmE+CisgICA8L2xpc3RpdGVtPgorICAgPGxpc3RpdGVtPjxwYXJhPmtkYiB3aXRoIGtlcm5lbCBtb2RlIHNldHRpbmc8L3BhcmE+CisgICA8cGFyYT48Y29uc3RhbnQ+a2dkYm9jPWttcyxrYmQ8L2NvbnN0YW50PjwvcGFyYT4KKyAgIDwvbGlzdGl0ZW0+CisgICA8bGlzdGl0ZW0+PHBhcmE+a2RiIHdpdGgga2VybmVsIG1vZGUgc2V0dGluZyBhbmQga2dkYiBvdmVyIGEgc2VyaWFsIHBvcnQ8L3BhcmE+CisgICA8cGFyYT48Y29uc3RhbnQ+a2dkYm9jPWttcyxrYmQsdHR5UzAsMTE1MjAwPC9jb25zdGFudD48L3BhcmE+CisgICA8L2xpc3RpdGVtPgorICAgPC9vcmRlcmVkbGlzdD4KKyAgIDwvcGFyYT4KKyAgIDxwYXJhPk5PVEU6IEtnZGJvYyBkb2VzIG5vdCBzdXBwb3J0IGludGVycnVwdGluZyB0aGUgdGFyZ2V0IHZpYSB0aGUKKyAgIGdkYiByZW1vdGUgcHJvdG9jb2wuICBZb3UgbXVzdCBtYW51YWxseSBzZW5kIGEgc3lzcnEtZyB1bmxlc3MgeW91CisgICBoYXZlIGEgcHJveHkgdGhhdCBzcGxpdHMgY29uc29sZSBvdXRwdXQgdG8gYSB0ZXJtaW5hbCBwcm9ncmFtLgorICAgQSBjb25zb2xlIHByb3h5IGhhcyBhIHNlcGFyYXRlIFRDUCBwb3J0IGZvciB0aGUgZGVidWdnZXIgYW5kIGEgc2VwYXJhdGUKKyAgIFRDUCBwb3J0IGZvciB0aGUgImh1bWFuIiBjb25zb2xlLiAgVGhlIHByb3h5IGNhbiB0YWtlIGNhcmUgb2Ygc2VuZGluZworICAgdGhlIHN5c3JxLWcgZm9yIHlvdS4KKyAgIDwvcGFyYT4KKyAgIDxwYXJhPldoZW4gdXNpbmcga2dkYm9jIHdpdGggbm8gZGVidWdnZXIgcHJveHksIHlvdSBjYW4gZW5kIHVwCisgICAgY29ubmVjdGluZyB0aGUgZGVidWdnZXIgYXQgb25lIG9mIHR3byBlbnRyeSBwb2ludHMuICBJZiBhbgorICAgIGV4Y2VwdGlvbiBvY2N1cnMgYWZ0ZXIgeW91IGhhdmUgbG9hZGVkIGtnZGJvYywgYSBtZXNzYWdlIHNob3VsZAorICAgIHByaW50IG9uIHRoZSBjb25zb2xlIHN0YXRpbmcgaXQgaXMgd2FpdGluZyBmb3IgdGhlIGRlYnVnZ2VyLiAgSW4KKyAgICB0aGlzIGNhc2UgeW91IGRpc2Nvbm5lY3QgeW91ciB0ZXJtaW5hbCBwcm9ncmFtIGFuZCB0aGVuIGNvbm5lY3QgdGhlCisgICAgZGVidWdnZXIgaW4gaXRzIHBsYWNlLiAgSWYgeW91IHdhbnQgdG8gaW50ZXJydXB0IHRoZSB0YXJnZXQgc3lzdGVtCisgICAgYW5kIGZvcmNpYmx5IGVudGVyIGEgZGVidWcgc2Vzc2lvbiB5b3UgaGF2ZSB0byBpc3N1ZSBhIFN5c3JxCisgICAgc2VxdWVuY2UgYW5kIHRoZW4gdHlwZSB0aGUgbGV0dGVyIDxjb25zdGFudD5nPC9jb25zdGFudD4uICBUaGVuCisgICAgeW91IGRpc2Nvbm5lY3QgdGhlIHRlcm1pbmFsIHNlc3Npb24gYW5kIGNvbm5lY3QgZ2RiLiAgWW91ciBvcHRpb25zCisgICAgaWYgeW91IGRvbid0IGxpa2UgdGhpcyBhcmUgdG8gaGFjayBnZGIgdG8gc2VuZCB0aGUgc3lzcnEtZyBmb3IgeW91CisgICAgYXMgd2VsbCBhcyBvbiB0aGUgaW5pdGlhbCBjb25uZWN0LCBvciB0byB1c2UgYSBkZWJ1Z2dlciBwcm94eSB0aGF0CisgICAgYWxsb3dzIGFuIHVubW9kaWZpZWQgZ2RiIHRvIGRvIHRoZSBkZWJ1Z2dpbmcuCisgICA8L3BhcmE+CisgICA8L3NlY3QzPgorICAgPC9zZWN0Mj4KKyAgIDwvc2VjdDE+CisgICA8c2VjdDEgaWQ9ImtnZGJ3YWl0Ij4KKyAgIDx0aXRsZT5LZXJuZWwgcGFyYW1ldGVyOiBrZ2Rid2FpdDwvdGl0bGU+CisgICA8cGFyYT4KKyAgIFRoZSBLZXJuZWwgY29tbWFuZCBsaW5lIG9wdGlvbiA8Y29uc3RhbnQ+a2dkYndhaXQ8L2NvbnN0YW50PiBtYWtlcworICAga2dkYiB3YWl0IGZvciBhIGRlYnVnZ2VyIGNvbm5lY3Rpb24gZHVyaW5nIGJvb3Rpbmcgb2YgYSBrZXJuZWwuICBZb3UKKyAgIGNhbiBvbmx5IHVzZSB0aGlzIG9wdGlvbiBpZiB5b3UgY29tcGlsZWQgYSBrZ2RiIEkvTyBkcml2ZXIgaW50byB0aGUKKyAgIGtlcm5lbCBhbmQgeW91IHNwZWNpZmllZCB0aGUgSS9PIGRyaXZlciBjb25maWd1cmF0aW9uIGFzIGEga2VybmVsCisgICBjb21tYW5kIGxpbmUgb3B0aW9uLiAgVGhlIGtnZGJ3YWl0IHBhcmFtZXRlciBzaG91bGQgYWx3YXlzIGZvbGxvdyB0aGUKKyAgIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGZvciB0aGUga2dkYiBJL08gZHJpdmVyIGluIHRoZSBrZXJuZWwKKyAgIGNvbW1hbmQgbGluZSBlbHNlIHRoZSBJL08gZHJpdmVyIHdpbGwgbm90IGJlIGNvbmZpZ3VyZWQgcHJpb3IgdG8KKyAgIGFza2luZyB0aGUga2VybmVsIHRvIHVzZSBpdCB0byB3YWl0LgorICAgPC9wYXJhPgorICAgPHBhcmE+CisgICBUaGUga2VybmVsIHdpbGwgc3RvcCBhbmQgd2FpdCBhcyBlYXJseSBhcyB0aGUgSS9PIGRyaXZlciBhbmQKKyAgIGFyY2hpdGVjdHVyZSBhbGxvd3Mgd2hlbiB5b3UgdXNlIHRoaXMgb3B0aW9uLiAgSWYgeW91IGJ1aWxkIHRoZQorICAga2dkYiBJL08gZHJpdmVyIGFzIGEgbG9hZGFibGUga2VybmVsIG1vZHVsZSBrZ2Rid2FpdCB3aWxsIG5vdCBkbworICAgYW55dGhpbmcuCisgICA8L3BhcmE+CisgICA8L3NlY3QxPgorICAgPHNlY3QxIGlkPSJrZ2RiY29uIj4KKyAgIDx0aXRsZT5LZXJuZWwgcGFyYW1ldGVyOiBrZ2RiY29uPC90aXRsZT4KKyAgIDxwYXJhPiBUaGUga2dkYmNvbiBmZWF0dXJlIGFsbG93cyB5b3UgdG8gc2VlIHByaW50aygpIG1lc3NhZ2VzCisgICBpbnNpZGUgZ2RiIHdoaWxlIGdkYiBpcyBjb25uZWN0ZWQgdG8gdGhlIGtlcm5lbC4gIEtkYiBkb2VzIG5vdCBtYWtlCisgICAgdXNlIG9mIHRoZSBrZ2RiY29uIGZlYXR1cmUuCisgICA8L3BhcmE+CisgICA8cGFyYT5LZ2RiIHN1cHBvcnRzIHVzaW5nIHRoZSBnZGIgc2VyaWFsIHByb3RvY29sIHRvIHNlbmQgY29uc29sZQorICAgbWVzc2FnZXMgdG8gdGhlIGRlYnVnZ2VyIHdoZW4gdGhlIGRlYnVnZ2VyIGlzIGNvbm5lY3RlZCBhbmQgcnVubmluZy4KKyAgIFRoZXJlIGFyZSB0d28gd2F5cyB0byBhY3RpdmF0ZSB0aGlzIGZlYXR1cmUuCisgICA8b3JkZXJlZGxpc3Q+CisgICA8bGlzdGl0ZW0+PHBhcmE+QWN0aXZhdGUgd2l0aCB0aGUga2VybmVsIGNvbW1hbmQgbGluZSBvcHRpb246PC9wYXJhPgorICAgPHBhcmE+PGNvbnN0YW50PmtnZGJjb248L2NvbnN0YW50PjwvcGFyYT4KKyAgIDwvbGlzdGl0ZW0+CisgICA8bGlzdGl0ZW0+PHBhcmE+VXNlIHN5c2ZzIGJlZm9yZSBjb25maWd1cmluZyBhbiBJL08gZHJpdmVyPC9wYXJhPgorICAgPHBhcmE+CisgICA8Y29uc3RhbnQ+ZWNobyAxICZndDsgL3N5cy9tb2R1bGUva2dkYi9wYXJhbWV0ZXJzL2tnZGJfdXNlX2NvbjwvY29uc3RhbnQ+CisgICA8L3BhcmE+CisgICA8cGFyYT4KKyAgIE5PVEU6IElmIHlvdSBkbyB0aGlzIGFmdGVyIHlvdSBjb25maWd1cmUgdGhlIGtnZGIgSS9PIGRyaXZlciwgdGhlCisgICBzZXR0aW5nIHdpbGwgbm90IHRha2UgZWZmZWN0IHVudGlsIHRoZSBuZXh0IHBvaW50IHRoZSBJL08gaXMKKyAgIHJlY29uZmlndXJlZC4KKyAgIDwvcGFyYT4KKyAgIDwvbGlzdGl0ZW0+CisgICA8L29yZGVyZWRsaXN0PgorICA8L3BhcmE+CisgICA8cGFyYT5JTVBPUlRBTlQgTk9URTogWW91IGNhbm5vdCB1c2Uga2dkYm9jICsga2dkYmNvbiBvbiBhIHR0eSB0aGF0IGlzIGFuCisgICBhY3RpdmUgc3lzdGVtIGNvbnNvbGUuICBBbiBleGFtcGxlIG9mIGluY29ycmVjdCB1c2FnZSBpcyA8Y29uc3RhbnQ+Y29uc29sZT10dHlTMCwxMTUyMDAga2dkYm9jPXR0eVMwIGtnZGJjb248L2NvbnN0YW50PgorICAgPC9wYXJhPgorICAgPHBhcmE+SXQgaXMgcG9zc2libGUgdG8gdXNlIHRoaXMgb3B0aW9uIHdpdGgga2dkYm9jIG9uIGEgdHR5IHRoYXQgaXMgbm90IGEgc3lzdGVtIGNvbnNvbGUuCisgICA8L3BhcmE+CisgIDwvc2VjdDE+CisgICA8c2VjdDEgaWQ9ImtnZGJyZWJvb3QiPgorICAgPHRpdGxlPlJ1biB0aW1lIHBhcmFtZXRlcjoga2dkYnJlYm9vdDwvdGl0bGU+CisgICA8cGFyYT4gVGhlIGtnZGJyZWJvb3QgZmVhdHVyZSBhbGxvd3MgeW91IHRvIGNoYW5nZSBob3cgdGhlIGRlYnVnZ2VyCisgICBkZWFscyB3aXRoIHRoZSByZWJvb3Qgbm90aWZpY2F0aW9uLiAgWW91IGhhdmUgMyBjaG9pY2VzIGZvciB0aGUKKyAgIGJlaGF2aW9yLiAgVGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgYWx3YXlzIHNldCB0byAwLjwvcGFyYT4KKyAgIDxvcmRlcmVkbGlzdD4KKyAgIDxsaXN0aXRlbT48cGFyYT5lY2hvIC0xID4gL3N5cy9tb2R1bGUvZGVidWdfY29yZS9wYXJhbWV0ZXJzL2tnZGJyZWJvb3Q8L3BhcmE+CisgICA8cGFyYT5JZ25vcmUgdGhlIHJlYm9vdCBub3RpZmljYXRpb24gZW50aXJlbHkuPC9wYXJhPgorICAgPC9saXN0aXRlbT4KKyAgIDxsaXN0aXRlbT48cGFyYT5lY2hvIDAgPiAvc3lzL21vZHVsZS9kZWJ1Z19jb3JlL3BhcmFtZXRlcnMva2dkYnJlYm9vdDwvcGFyYT4KKyAgIDxwYXJhPlNlbmQgdGhlIGRldGFjaCBtZXNzYWdlIHRvIGFueSBhdHRhY2hlZCBkZWJ1Z2dlciBjbGllbnQuPC9wYXJhPgorICAgPC9saXN0aXRlbT4KKyAgIDxsaXN0aXRlbT48cGFyYT5lY2hvIDEgPiAvc3lzL21vZHVsZS9kZWJ1Z19jb3JlL3BhcmFtZXRlcnMva2dkYnJlYm9vdDwvcGFyYT4KKyAgIDxwYXJhPkVudGVyIHRoZSBkZWJ1Z2dlciBvbiByZWJvb3Qgbm90aWZ5LjwvcGFyYT4KKyAgIDwvbGlzdGl0ZW0+CisgICA8L29yZGVyZWRsaXN0PgorICA8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisgIDxjaGFwdGVyIGlkPSJ1c2luZ0tEQiI+CisgIDx0aXRsZT5Vc2luZyBrZGI8L3RpdGxlPgorICA8cGFyYT4KKyAgPC9wYXJhPgorICA8c2VjdDEgaWQ9InF1aWNrS0RCc2VyaWFsIj4KKyAgPHRpdGxlPlF1aWNrIHN0YXJ0IGZvciBrZGIgb24gYSBzZXJpYWwgcG9ydDwvdGl0bGU+CisgIDxwYXJhPlRoaXMgaXMgYSBxdWljayBleGFtcGxlIG9mIGhvdyB0byB1c2Uga2RiLjwvcGFyYT4KKyAgPHBhcmE+PG9yZGVyZWRsaXN0PgorICA8bGlzdGl0ZW0+PHBhcmE+Q29uZmlndXJlIGtnZGJvYyBhdCBib290IHVzaW5nIGtlcm5lbCBwYXJhbWV0ZXJzOgorICA8aXRlbWl6ZWRsaXN0PgorICA8bGlzdGl0ZW0+PHBhcmE+PGNvbnN0YW50PmNvbnNvbGU9dHR5UzAsMTE1MjAwIGtnZGJvYz10dHlTMCwxMTUyMDA8L2NvbnN0YW50PjwvcGFyYT48L2xpc3RpdGVtPgorICA8L2l0ZW1pemVkbGlzdD48L3BhcmE+CisgIDxwYXJhPk9SPC9wYXJhPgorICA8cGFyYT5Db25maWd1cmUga2dkYm9jIGFmdGVyIHRoZSBrZXJuZWwgaGFzIGJvb3RlZDsgYXNzdW1pbmcgeW91IGFyZSB1c2luZyBhIHNlcmlhbCBwb3J0IGNvbnNvbGU6CisgIDxpdGVtaXplZGxpc3Q+CisgIDxsaXN0aXRlbT48cGFyYT48Y29uc3RhbnQ+ZWNobyB0dHlTMCAmZ3Q7IC9zeXMvbW9kdWxlL2tnZGJvYy9wYXJhbWV0ZXJzL2tnZGJvYzwvY29uc3RhbnQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgIDwvaXRlbWl6ZWRsaXN0PgorICA8L3BhcmE+CisgIDwvbGlzdGl0ZW0+CisgIDxsaXN0aXRlbT48cGFyYT5FbnRlciB0aGUga2VybmVsIGRlYnVnZ2VyIG1hbnVhbGx5IG9yIGJ5IHdhaXRpbmcgZm9yIGFuIG9vcHMgb3IgZmF1bHQuICBUaGVyZSBhcmUgc2V2ZXJhbCB3YXlzIHlvdSBjYW4gZW50ZXIgdGhlIGtlcm5lbCBkZWJ1Z2dlciBtYW51YWxseTsgYWxsIGludm9sdmUgdXNpbmcgdGhlIHN5c3JxLWcsIHdoaWNoIG1lYW5zIHlvdSBtdXN0IGhhdmUgZW5hYmxlZCBDT05GSUdfTUFHSUNfU1lTUlE9eSBpbiB5b3VyIGtlcm5lbCBjb25maWcuPC9wYXJhPgorICA8aXRlbWl6ZWRsaXN0PgorICA8bGlzdGl0ZW0+PHBhcmE+V2hlbiBsb2dnZWQgaW4gYXMgcm9vdCBvciB3aXRoIGEgc3VwZXIgdXNlciBzZXNzaW9uIHlvdSBjYW4gcnVuOjwvcGFyYT4KKyAgIDxwYXJhPjxjb25zdGFudD5lY2hvIGcgJmd0OyAvcHJvYy9zeXNycS10cmlnZ2VyPC9jb25zdGFudD48L3BhcmE+PC9saXN0aXRlbT4KKyAgPGxpc3RpdGVtPjxwYXJhPkV4YW1wbGUgdXNpbmcgbWluaWNvbSAyLjI8L3BhcmE+CisgIDxwYXJhPlByZXNzOiA8Y29uc3RhbnQ+Q29udHJvbC1hPC9jb25zdGFudD48L3BhcmE+CisgIDxwYXJhPlByZXNzOiA8Y29uc3RhbnQ+ZjwvY29uc3RhbnQ+PC9wYXJhPgorICA8cGFyYT5QcmVzczogPGNvbnN0YW50Pmc8L2NvbnN0YW50PjwvcGFyYT4KKyAgPC9saXN0aXRlbT4KKyAgPGxpc3RpdGVtPjxwYXJhPldoZW4geW91IGhhdmUgdGVsbmV0ZWQgdG8gYSB0ZXJtaW5hbCBzZXJ2ZXIgdGhhdCBzdXBwb3J0cyBzZW5kaW5nIGEgcmVtb3RlIGJyZWFrPC9wYXJhPgorICA8cGFyYT5QcmVzczogPGNvbnN0YW50PkNvbnRyb2wtXTwvY29uc3RhbnQ+PC9wYXJhPgorICA8cGFyYT5UeXBlIGluOjxjb25zdGFudD5zZW5kIGJyZWFrPC9jb25zdGFudD48L3BhcmE+CisgIDxwYXJhPlByZXNzOiA8Y29uc3RhbnQ+RW50ZXI8L2NvbnN0YW50PjwvcGFyYT4KKyAgPHBhcmE+UHJlc3M6IDxjb25zdGFudD5nPC9jb25zdGFudD48L3BhcmE+CisgIDwvbGlzdGl0ZW0+CisgIDwvaXRlbWl6ZWRsaXN0PgorICA8L2xpc3RpdGVtPgorICA8bGlzdGl0ZW0+PHBhcmE+RnJvbSB0aGUga2RiIHByb21wdCB5b3UgY2FuIHJ1biB0aGUgImhlbHAiIGNvbW1hbmQgdG8gc2VlIGEgY29tcGxldGUgbGlzdCBvZiB0aGUgY29tbWFuZHMgdGhhdCBhcmUgYXZhaWxhYmxlLjwvcGFyYT4KKyAgPHBhcmE+U29tZSB1c2VmdWwgY29tbWFuZHMgaW4ga2RiIGluY2x1ZGU6CisgIDxpdGVtaXplZGxpc3Q+CisgIDxsaXN0aXRlbT48cGFyYT5sc21vZCAgLS0gU2hvd3Mgd2hlcmUga2VybmVsIG1vZHVsZXMgYXJlIGxvYWRlZDwvcGFyYT48L2xpc3RpdGVtPgorICA8bGlzdGl0ZW0+PHBhcmE+cHMgLS0gRGlzcGxheXMgb25seSB0aGUgYWN0aXZlIHByb2Nlc3NlczwvcGFyYT48L2xpc3RpdGVtPgorICA8bGlzdGl0ZW0+PHBhcmE+cHMgQSAtLSBTaG93cyBhbGwgdGhlIHByb2Nlc3NlczwvcGFyYT48L2xpc3RpdGVtPgorICA8bGlzdGl0ZW0+PHBhcmE+c3VtbWFyeSAtLSBTaG93cyBrZXJuZWwgdmVyc2lvbiBpbmZvIGFuZCBtZW1vcnkgdXNhZ2U8L3BhcmE+PC9saXN0aXRlbT4KKyAgPGxpc3RpdGVtPjxwYXJhPmJ0IC0tIEdldCBhIGJhY2t0cmFjZSBvZiB0aGUgY3VycmVudCBwcm9jZXNzIHVzaW5nIGR1bXBfc3RhY2soKTwvcGFyYT48L2xpc3RpdGVtPgorICA8bGlzdGl0ZW0+PHBhcmE+ZG1lc2cgLS0gVmlldyB0aGUga2VybmVsIHN5c2xvZyBidWZmZXI8L3BhcmE+PC9saXN0aXRlbT4KKyAgPGxpc3RpdGVtPjxwYXJhPmdvIC0tIENvbnRpbnVlIHRoZSBzeXN0ZW08L3BhcmE+PC9saXN0aXRlbT4KKyAgPC9pdGVtaXplZGxpc3Q+CisgIDwvcGFyYT4KKyAgPC9saXN0aXRlbT4KKyAgPGxpc3RpdGVtPgorICA8cGFyYT5XaGVuIHlvdSBhcmUgZG9uZSB1c2luZyBrZGIgeW91IG5lZWQgdG8gY29uc2lkZXIgcmVib290aW5nIHRoZQorICBzeXN0ZW0gb3IgdXNpbmcgdGhlICJnbyIgY29tbWFuZCB0byByZXN1bWluZyBub3JtYWwga2VybmVsCisgIGV4ZWN1dGlvbi4gIElmIHlvdSBoYXZlIHBhdXNlZCB0aGUga2VybmVsIGZvciBhIGxlbmd0aHkgcGVyaW9kIG9mCisgIHRpbWUsIGFwcGxpY2F0aW9ucyB0aGF0IHJlbHkgb24gdGltZWx5IG5ldHdvcmtpbmcgb3IgYW55dGhpbmcgdG8gZG8KKyAgd2l0aCByZWFsIHdhbGwgY2xvY2sgdGltZSBjb3VsZCBiZSBhZHZlcnNlbHkgYWZmZWN0ZWQsIHNvIHlvdQorICBzaG91bGQgdGFrZSB0aGlzIGludG8gY29uc2lkZXJhdGlvbiB3aGVuIHVzaW5nIHRoZSBrZXJuZWwKKyAgZGVidWdnZXIuPC9wYXJhPgorICA8L2xpc3RpdGVtPgorICA8L29yZGVyZWRsaXN0PjwvcGFyYT4KKyAgPC9zZWN0MT4KKyAgPHNlY3QxIGlkPSJxdWlja0tEQmtleWJvYXJkIj4KKyAgPHRpdGxlPlF1aWNrIHN0YXJ0IGZvciBrZGIgdXNpbmcgYSBrZXlib2FyZCBjb25uZWN0ZWQgY29uc29sZTwvdGl0bGU+CisgIDxwYXJhPlRoaXMgaXMgYSBxdWljayBleGFtcGxlIG9mIGhvdyB0byB1c2Uga2RiIHdpdGggYSBrZXlib2FyZC48L3BhcmE+CisgIDxwYXJhPjxvcmRlcmVkbGlzdD4KKyAgPGxpc3RpdGVtPjxwYXJhPkNvbmZpZ3VyZSBrZ2Rib2MgYXQgYm9vdCB1c2luZyBrZXJuZWwgcGFyYW1ldGVyczoKKyAgPGl0ZW1pemVkbGlzdD4KKyAgPGxpc3RpdGVtPjxwYXJhPjxjb25zdGFudD5rZ2Rib2M9a2JkPC9jb25zdGFudD48L3BhcmE+PC9saXN0aXRlbT4KKyAgPC9pdGVtaXplZGxpc3Q+PC9wYXJhPgorICA8cGFyYT5PUjwvcGFyYT4KKyAgPHBhcmE+Q29uZmlndXJlIGtnZGJvYyBhZnRlciB0aGUga2VybmVsIGhhcyBib290ZWQ6CisgIDxpdGVtaXplZGxpc3Q+CisgIDxsaXN0aXRlbT48cGFyYT48Y29uc3RhbnQ+ZWNobyBrYmQgJmd0OyAvc3lzL21vZHVsZS9rZ2Rib2MvcGFyYW1ldGVycy9rZ2Rib2M8L2NvbnN0YW50PjwvcGFyYT48L2xpc3RpdGVtPgorICA8L2l0ZW1pemVkbGlzdD4KKyAgPC9wYXJhPgorICA8L2xpc3RpdGVtPgorICA8bGlzdGl0ZW0+PHBhcmE+RW50ZXIgdGhlIGtlcm5lbCBkZWJ1Z2dlciBtYW51YWxseSBvciBieSB3YWl0aW5nIGZvciBhbiBvb3BzIG9yIGZhdWx0LiAgVGhlcmUgYXJlIHNldmVyYWwgd2F5cyB5b3UgY2FuIGVudGVyIHRoZSBrZXJuZWwgZGVidWdnZXIgbWFudWFsbHk7IGFsbCBpbnZvbHZlIHVzaW5nIHRoZSBzeXNycS1nLCB3aGljaCBtZWFucyB5b3UgbXVzdCBoYXZlIGVuYWJsZWQgQ09ORklHX01BR0lDX1NZU1JRPXkgaW4geW91ciBrZXJuZWwgY29uZmlnLjwvcGFyYT4KKyAgPGl0ZW1pemVkbGlzdD4KKyAgPGxpc3RpdGVtPjxwYXJhPldoZW4gbG9nZ2VkIGluIGFzIHJvb3Qgb3Igd2l0aCBhIHN1cGVyIHVzZXIgc2Vzc2lvbiB5b3UgY2FuIHJ1bjo8L3BhcmE+CisgICA8cGFyYT48Y29uc3RhbnQ+ZWNobyBnICZndDsgL3Byb2Mvc3lzcnEtdHJpZ2dlcjwvY29uc3RhbnQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgIDxsaXN0aXRlbT48cGFyYT5FeGFtcGxlIHVzaW5nIGEgbGFwdG9wIGtleWJvYXJkPC9wYXJhPgorICA8cGFyYT5QcmVzcyBhbmQgaG9sZCBkb3duOiA8Y29uc3RhbnQ+QWx0PC9jb25zdGFudD48L3BhcmE+CisgIDxwYXJhPlByZXNzIGFuZCBob2xkIGRvd246IDxjb25zdGFudD5GbjwvY29uc3RhbnQ+PC9wYXJhPgorICA8cGFyYT5QcmVzcyBhbmQgcmVsZWFzZSB0aGUga2V5IHdpdGggdGhlIGxhYmVsOiA8Y29uc3RhbnQ+U3lzUnE8L2NvbnN0YW50PjwvcGFyYT4KKyAgPHBhcmE+UmVsZWFzZTogPGNvbnN0YW50PkZuPC9jb25zdGFudD48L3BhcmE+CisgIDxwYXJhPlByZXNzIGFuZCByZWxlYXNlOiA8Y29uc3RhbnQ+ZzwvY29uc3RhbnQ+PC9wYXJhPgorICA8cGFyYT5SZWxlYXNlOiA8Y29uc3RhbnQ+QWx0PC9jb25zdGFudD48L3BhcmE+CisgIDwvbGlzdGl0ZW0+CisgIDxsaXN0aXRlbT48cGFyYT5FeGFtcGxlIHVzaW5nIGEgUFMvMiAxMDEta2V5IGtleWJvYXJkPC9wYXJhPgorICA8cGFyYT5QcmVzcyBhbmQgaG9sZCBkb3duOiA8Y29uc3RhbnQ+QWx0PC9jb25zdGFudD48L3BhcmE+CisgIDxwYXJhPlByZXNzIGFuZCByZWxlYXNlIHRoZSBrZXkgd2l0aCB0aGUgbGFiZWw6IDxjb25zdGFudD5TeXNScTwvY29uc3RhbnQ+PC9wYXJhPgorICA8cGFyYT5QcmVzcyBhbmQgcmVsZWFzZTogPGNvbnN0YW50Pmc8L2NvbnN0YW50PjwvcGFyYT4KKyAgPHBhcmE+UmVsZWFzZTogPGNvbnN0YW50PkFsdDwvY29uc3RhbnQ+PC9wYXJhPgorICA8L2xpc3RpdGVtPgorICA8L2l0ZW1pemVkbGlzdD4KKyAgPC9saXN0aXRlbT4KKyAgPGxpc3RpdGVtPgorICA8cGFyYT5Ob3cgdHlwZSBpbiBhIGtkYiBjb21tYW5kIHN1Y2ggYXMgImhlbHAiLCAiZG1lc2ciLCAiYnQiIG9yICJnbyIgdG8gY29udGludWUga2VybmVsIGV4ZWN1dGlvbi48L3BhcmE+CisgIDwvbGlzdGl0ZW0+CisgIDwvb3JkZXJlZGxpc3Q+PC9wYXJhPgorICA8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisgIDxjaGFwdGVyIGlkPSJFbmFibGVLR0RCIj4KKyAgIDx0aXRsZT5Vc2luZyBrZ2RiIC8gZ2RiPC90aXRsZT4KKyAgIDxwYXJhPkluIG9yZGVyIHRvIHVzZSBrZ2RiIHlvdSBtdXN0IGFjdGl2YXRlIGl0IGJ5IHBhc3NpbmcKKyAgIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gdG8gb25lIG9mIHRoZSBrZ2RiIEkvTyBkcml2ZXJzLiAgSWYgeW91CisgICBkbyBub3QgcGFzcyBhbnkgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBrZ2RiIHdpbGwgbm90IGRvIGFueXRoaW5nCisgICBhdCBhbGwuICBLZ2RiIHdpbGwgb25seSBhY3RpdmVseSBob29rIHVwIHRvIHRoZSBrZXJuZWwgdHJhcCBob29rcworICAgaWYgYSBrZ2RiIEkvTyBkcml2ZXIgaXMgbG9hZGVkIGFuZCBjb25maWd1cmVkLiAgSWYgeW91IHVuY29uZmlndXJlCisgICBhIGtnZGIgSS9PIGRyaXZlciwga2dkYiB3aWxsIHVucmVnaXN0ZXIgYWxsIHRoZSBrZXJuZWwgaG9vayBwb2ludHMuCisgICA8L3BhcmE+CisgICA8cGFyYT4gQWxsIGtnZGIgSS9PIGRyaXZlcnMgY2FuIGJlIHJlY29uZmlndXJlZCBhdCBydW4gdGltZSwgaWYKKyAgIDxzeW1ib2w+Q09ORklHX1NZU0ZTPC9zeW1ib2w+IGFuZCA8c3ltYm9sPkNPTkZJR19NT0RVTEVTPC9zeW1ib2w+CisgICBhcmUgZW5hYmxlZCwgYnkgZWNobydpbmcgYSBuZXcgY29uZmlnIHN0cmluZyB0bworICAgPGNvbnN0YW50Pi9zeXMvbW9kdWxlLyZsdDtkcml2ZXImZ3Q7L3BhcmFtZXRlci8mbHQ7b3B0aW9uJmd0OzwvY29uc3RhbnQ+LgorICAgVGhlIGRyaXZlciBjYW4gYmUgdW5jb25maWd1cmVkIGJ5IHBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nLiAgWW91IGNhbm5vdAorICAgY2hhbmdlIHRoZSBjb25maWd1cmF0aW9uIHdoaWxlIHRoZSBkZWJ1Z2dlciBpcyBhdHRhY2hlZC4gIE1ha2Ugc3VyZQorICAgdG8gZGV0YWNoIHRoZSBkZWJ1Z2dlciB3aXRoIHRoZSA8Y29uc3RhbnQ+ZGV0YWNoPC9jb25zdGFudD4gY29tbWFuZAorICAgcHJpb3IgdG8gdHJ5aW5nIHRvIHVuY29uZmlndXJlIGEga2dkYiBJL08gZHJpdmVyLgorICAgPC9wYXJhPgorICA8c2VjdDEgaWQ9IkNvbm5lY3RpbmdHREIiPgorICA8dGl0bGU+Q29ubmVjdGluZyB3aXRoIGdkYiB0byBhIHNlcmlhbCBwb3J0PC90aXRsZT4KKyAgPG9yZGVyZWRsaXN0PgorICA8bGlzdGl0ZW0+PHBhcmE+Q29uZmlndXJlIGtnZGJvYzwvcGFyYT4KKyAgIDxwYXJhPkNvbmZpZ3VyZSBrZ2Rib2MgYXQgYm9vdCB1c2luZyBrZXJuZWwgcGFyYW1ldGVyczoKKyAgIDxpdGVtaXplZGxpc3Q+CisgICAgPGxpc3RpdGVtPjxwYXJhPjxjb25zdGFudD5rZ2Rib2M9dHR5UzAsMTE1MjAwPC9jb25zdGFudD48L3BhcmE+PC9saXN0aXRlbT4KKyAgIDwvaXRlbWl6ZWRsaXN0PjwvcGFyYT4KKyAgIDxwYXJhPk9SPC9wYXJhPgorICAgPHBhcmE+Q29uZmlndXJlIGtnZGJvYyBhZnRlciB0aGUga2VybmVsIGhhcyBib290ZWQ6CisgICA8aXRlbWl6ZWRsaXN0PgorICAgIDxsaXN0aXRlbT48cGFyYT48Y29uc3RhbnQ+ZWNobyB0dHlTMCAmZ3Q7IC9zeXMvbW9kdWxlL2tnZGJvYy9wYXJhbWV0ZXJzL2tnZGJvYzwvY29uc3RhbnQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICA8L2l0ZW1pemVkbGlzdD48L3BhcmE+CisgIDwvbGlzdGl0ZW0+CisgIDxsaXN0aXRlbT4KKyAgPHBhcmE+U3RvcCBrZXJuZWwgZXhlY3V0aW9uIChicmVhayBpbnRvIHRoZSBkZWJ1Z2dlcik8L3BhcmE+CisgIDxwYXJhPkluIG9yZGVyIHRvIGNvbm5lY3QgdG8gZ2RiIHZpYSBrZ2Rib2MsIHRoZSBrZXJuZWwgbXVzdAorICBmaXJzdCBiZSBzdG9wcGVkLiAgVGhlcmUgYXJlIHNldmVyYWwgd2F5cyB0byBzdG9wIHRoZSBrZXJuZWwgd2hpY2gKKyAgaW5jbHVkZSB1c2luZyBrZ2Rid2FpdCBhcyBhIGJvb3QgYXJndW1lbnQsIHZpYSBhIHN5c3JxLWcsIG9yIHJ1bm5pbmcKKyAgdGhlIGtlcm5lbCB1bnRpbCBpdCB0YWtlcyBhbiBleGNlcHRpb24gd2hlcmUgaXQgd2FpdHMgZm9yIHRoZQorICBkZWJ1Z2dlciB0byBhdHRhY2guCisgIDxpdGVtaXplZGxpc3Q+CisgIDxsaXN0aXRlbT48cGFyYT5XaGVuIGxvZ2dlZCBpbiBhcyByb290IG9yIHdpdGggYSBzdXBlciB1c2VyIHNlc3Npb24geW91IGNhbiBydW46PC9wYXJhPgorICAgPHBhcmE+PGNvbnN0YW50PmVjaG8gZyAmZ3Q7IC9wcm9jL3N5c3JxLXRyaWdnZXI8L2NvbnN0YW50PjwvcGFyYT48L2xpc3RpdGVtPgorICA8bGlzdGl0ZW0+PHBhcmE+RXhhbXBsZSB1c2luZyBtaW5pY29tIDIuMjwvcGFyYT4KKyAgPHBhcmE+UHJlc3M6IDxjb25zdGFudD5Db250cm9sLWE8L2NvbnN0YW50PjwvcGFyYT4KKyAgPHBhcmE+UHJlc3M6IDxjb25zdGFudD5mPC9jb25zdGFudD48L3BhcmE+CisgIDxwYXJhPlByZXNzOiA8Y29uc3RhbnQ+ZzwvY29uc3RhbnQ+PC9wYXJhPgorICA8L2xpc3RpdGVtPgorICA8bGlzdGl0ZW0+PHBhcmE+V2hlbiB5b3UgaGF2ZSB0ZWxuZXRlZCB0byBhIHRlcm1pbmFsIHNlcnZlciB0aGF0IHN1cHBvcnRzIHNlbmRpbmcgYSByZW1vdGUgYnJlYWs8L3BhcmE+CisgIDxwYXJhPlByZXNzOiA8Y29uc3RhbnQ+Q29udHJvbC1dPC9jb25zdGFudD48L3BhcmE+CisgIDxwYXJhPlR5cGUgaW46PGNvbnN0YW50PnNlbmQgYnJlYWs8L2NvbnN0YW50PjwvcGFyYT4KKyAgPHBhcmE+UHJlc3M6IDxjb25zdGFudD5FbnRlcjwvY29uc3RhbnQ+PC9wYXJhPgorICA8cGFyYT5QcmVzczogPGNvbnN0YW50Pmc8L2NvbnN0YW50PjwvcGFyYT4KKyAgPC9saXN0aXRlbT4KKyAgPC9pdGVtaXplZGxpc3Q+CisgIDwvcGFyYT4KKyAgPC9saXN0aXRlbT4KKyAgPGxpc3RpdGVtPgorICAgIDxwYXJhPkNvbm5lY3QgZnJvbSBnZGI8L3BhcmE+CisgICAgPHBhcmE+CisgICAgRXhhbXBsZSAodXNpbmcgYSBkaXJlY3RseSBjb25uZWN0ZWQgcG9ydCk6CisgICAgPC9wYXJhPgorICAgIDxwcm9ncmFtbGlzdGluZz4KKyAgICAlIGdkYiAuL3ZtbGludXgKKyAgICAoZ2RiKSBzZXQgcmVtb3RlYmF1ZCAxMTUyMDAKKyAgICAoZ2RiKSB0YXJnZXQgcmVtb3RlIC9kZXYvdHR5UzAKKyAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgIDxwYXJhPgorICAgIEV4YW1wbGUgKGtnZGIgdG8gYSB0ZXJtaW5hbCBzZXJ2ZXIgb24gVENQIHBvcnQgMjAxMik6CisgICAgPC9wYXJhPgorICAgIDxwcm9ncmFtbGlzdGluZz4KKyAgICAlIGdkYiAuL3ZtbGludXgKKyAgICAoZ2RiKSB0YXJnZXQgcmVtb3RlIDE5Mi4xNjguMi4yOjIwMTIKKyAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgIDxwYXJhPgorICAgIE9uY2UgY29ubmVjdGVkLCB5b3UgY2FuIGRlYnVnIGEga2VybmVsIHRoZSB3YXkgeW91IHdvdWxkIGRlYnVnIGFuCisgICAgYXBwbGljYXRpb24gcHJvZ3JhbS4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgSWYgeW91IGFyZSBoYXZpbmcgcHJvYmxlbXMgY29ubmVjdGluZyBvciBzb21ldGhpbmcgaXMgZ29pbmcKKyAgICBzZXJpb3VzbHkgd3Jvbmcgd2hpbGUgZGVidWdnaW5nLCBpdCB3aWxsIG1vc3Qgb2Z0ZW4gYmUgdGhlIGNhc2UKKyAgICB0aGF0IHlvdSB3YW50IHRvIGVuYWJsZSBnZGIgdG8gYmUgdmVyYm9zZSBhYm91dCBpdHMgdGFyZ2V0CisgICAgY29tbXVuaWNhdGlvbnMuICBZb3UgZG8gdGhpcyBwcmlvciB0byBpc3N1aW5nIHRoZSA8Y29uc3RhbnQ+dGFyZ2V0CisgICAgcmVtb3RlPC9jb25zdGFudD4gY29tbWFuZCBieSB0eXBpbmcgaW46IDxjb25zdGFudD5zZXQgZGVidWcgcmVtb3RlIDE8L2NvbnN0YW50PgorICAgIDwvcGFyYT4KKyAgPC9saXN0aXRlbT4KKyAgPC9vcmRlcmVkbGlzdD4KKyAgPHBhcmE+UmVtZW1iZXIgaWYgeW91IGNvbnRpbnVlIGluIGdkYiwgYW5kIG5lZWQgdG8gImJyZWFrIGluIiBhZ2FpbiwKKyAgeW91IG5lZWQgdG8gaXNzdWUgYW4gb3RoZXIgc3lzcnEtZy4gIEl0IGlzIGVhc3kgdG8gY3JlYXRlIGEgc2ltcGxlCisgIGVudHJ5IHBvaW50IGJ5IHB1dHRpbmcgYSBicmVha3BvaW50IGF0IDxjb25zdGFudD5zeXNfc3luYzwvY29uc3RhbnQ+CisgIGFuZCB0aGVuIHlvdSBjYW4gcnVuICJzeW5jIiBmcm9tIGEgc2hlbGwgb3Igc2NyaXB0IHRvIGJyZWFrIGludG8gdGhlCisgIGRlYnVnZ2VyLjwvcGFyYT4KKyAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorICA8Y2hhcHRlciBpZD0ic3dpdGNoS2RiS2dkYiI+CisgIDx0aXRsZT5rZ2RiIGFuZCBrZGIgaW50ZXJvcGVyYWJpbGl0eTwvdGl0bGU+CisgIDxwYXJhPkl0IGlzIHBvc3NpYmxlIHRvIHRyYW5zaXRpb24gYmV0d2VlbiBrZGIgYW5kIGtnZGIgZHluYW1pY2FsbHkuCisgIFRoZSBkZWJ1ZyBjb3JlIHdpbGwgcmVtZW1iZXIgd2hpY2ggeW91IHVzZWQgdGhlIGxhc3QgdGltZSBhbmQKKyAgYXV0b21hdGljYWxseSBzdGFydCBpbiB0aGUgc2FtZSBtb2RlLjwvcGFyYT4KKyAgPHNlY3QxPgorICA8dGl0bGU+U3dpdGNoaW5nIGJldHdlZW4ga2RiIGFuZCBrZ2RiPC90aXRsZT4KKyAgPHNlY3QyPgorICA8dGl0bGU+U3dpdGNoaW5nIGZyb20ga2dkYiB0byBrZGI8L3RpdGxlPgorICA8cGFyYT4KKyAgVGhlcmUgYXJlIHR3byB3YXlzIHRvIHN3aXRjaCBmcm9tIGtnZGIgdG8ga2RiOiB5b3UgY2FuIHVzZSBnZGIgdG8KKyAgaXNzdWUgYSBtYWludGVuYW5jZSBwYWNrZXQsIG9yIHlvdSBjYW4gYmxpbmRseSB0eXBlIHRoZSBjb21tYW5kICQzIzMzLgorICBXaGVuZXZlciB0aGUga2VybmVsIGRlYnVnZ2VyIHN0b3BzIGluIGtnZGIgbW9kZSBpdCB3aWxsIHByaW50IHRoZQorICBtZXNzYWdlIDxjb25zdGFudD5LR0RCIG9yICQzIzMzIGZvciBLREI8L2NvbnN0YW50Pi4gIEl0IGlzIGltcG9ydGFudAorICB0byBub3RlIHRoYXQgeW91IGhhdmUgdG8gdHlwZSB0aGUgc2VxdWVuY2UgY29ycmVjdGx5IGluIG9uZSBwYXNzLgorICBZb3UgY2Fubm90IHR5cGUgYSBiYWNrc3BhY2Ugb3IgZGVsZXRlIGJlY2F1c2Uga2dkYiB3aWxsIGludGVycHJldAorICB0aGF0IGFzIHBhcnQgb2YgdGhlIGRlYnVnIHN0cmVhbS4KKyAgPG9yZGVyZWRsaXN0PgorICA8bGlzdGl0ZW0+PHBhcmE+Q2hhbmdlIGZyb20ga2dkYiB0byBrZGIgYnkgYmxpbmRseSB0eXBpbmc6PC9wYXJhPgorICA8cGFyYT48Y29uc3RhbnQ+JDMjMzM8L2NvbnN0YW50PjwvcGFyYT48L2xpc3RpdGVtPgorICA8bGlzdGl0ZW0+PHBhcmE+Q2hhbmdlIGZyb20ga2dkYiB0byBrZGIgd2l0aCBnZGI8L3BhcmE+CisgIDxwYXJhPjxjb25zdGFudD5tYWludGVuYW5jZSBwYWNrZXQgMzwvY29uc3RhbnQ+PC9wYXJhPgorICA8cGFyYT5OT1RFOiBOb3cgeW91IG11c3Qga2lsbCBnZGIuIFR5cGljYWxseSB5b3UgcHJlc3MgY29udHJvbC16IGFuZAorICBpc3N1ZSB0aGUgY29tbWFuZDoga2lsbCAtOSAlPC9wYXJhPjwvbGlzdGl0ZW0+CisgIDwvb3JkZXJlZGxpc3Q+CisgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KKyAgPHNlY3QyPgorICA8dGl0bGU+Q2hhbmdlIGZyb20ga2RiIHRvIGtnZGI8L3RpdGxlPgorICA8cGFyYT5UaGVyZSBhcmUgdHdvIHdheXMgeW91IGNhbiBjaGFuZ2UgZnJvbSBrZGIgdG8ga2dkYi4gIFlvdSBjYW4KKyAgbWFudWFsbHkgZW50ZXIga2dkYiBtb2RlIGJ5IGlzc3VpbmcgdGhlIGtnZGIgY29tbWFuZCBmcm9tIHRoZSBrZGIKKyAgc2hlbGwgcHJvbXB0LCBvciB5b3UgY2FuIGNvbm5lY3QgZ2RiIHdoaWxlIHRoZSBrZGIgc2hlbGwgcHJvbXB0IGlzCisgIGFjdGl2ZS4gIFRoZSBrZGIgc2hlbGwgbG9va3MgZm9yIHRoZSB0eXBpY2FsIGZpcnN0IGNvbW1hbmRzIHRoYXQgZ2RiCisgIHdvdWxkIGlzc3VlIHdpdGggdGhlIGdkYiByZW1vdGUgcHJvdG9jb2wgYW5kIGlmIGl0IHNlZXMgb25lIG9mIHRob3NlCisgIGNvbW1hbmRzIGl0IGF1dG9tYXRpY2FsbHkgY2hhbmdlcyBpbnRvIGtnZGIgbW9kZS48L3BhcmE+CisgIDxvcmRlcmVkbGlzdD4KKyAgPGxpc3RpdGVtPjxwYXJhPkZyb20ga2RiIGlzc3VlIHRoZSBjb21tYW5kOjwvcGFyYT4KKyAgPHBhcmE+PGNvbnN0YW50PmtnZGI8L2NvbnN0YW50PjwvcGFyYT4KKyAgPHBhcmE+Tm93IGRpc2Nvbm5lY3QgeW91ciB0ZXJtaW5hbCBwcm9ncmFtIGFuZCBjb25uZWN0IGdkYiBpbiBpdHMgcGxhY2U8L3BhcmE+PC9saXN0aXRlbT4KKyAgPGxpc3RpdGVtPjxwYXJhPkF0IHRoZSBrZGIgcHJvbXB0LCBkaXNjb25uZWN0IHRoZSB0ZXJtaW5hbCBwcm9ncmFtIGFuZCBjb25uZWN0IGdkYiBpbiBpdHMgcGxhY2UuPC9wYXJhPjwvbGlzdGl0ZW0+CisgIDwvb3JkZXJlZGxpc3Q+CisgIDwvc2VjdDI+CisgIDwvc2VjdDE+CisgIDxzZWN0MT4KKyAgPHRpdGxlPlJ1bm5pbmcga2RiIGNvbW1hbmRzIGZyb20gZ2RiPC90aXRsZT4KKyAgPHBhcmE+SXQgaXMgcG9zc2libGUgdG8gcnVuIGEgbGltaXRlZCBzZXQgb2Yga2RiIGNvbW1hbmRzIGZyb20gZ2RiLAorICB1c2luZyB0aGUgZ2RiIG1vbml0b3IgY29tbWFuZC4gIFlvdSBkb24ndCB3YW50IHRvIGV4ZWN1dGUgYW55IG9mIHRoZQorICBydW4gY29udHJvbCBvciBicmVha3BvaW50IG9wZXJhdGlvbnMsIGJlY2F1c2UgaXQgY2FuIGRpc3J1cHQgdGhlCisgIHN0YXRlIG9mIHRoZSBrZXJuZWwgZGVidWdnZXIuICBZb3Ugc2hvdWxkIGJlIHVzaW5nIGdkYiBmb3IKKyAgYnJlYWtwb2ludHMgYW5kIHJ1biBjb250cm9sIG9wZXJhdGlvbnMgaWYgeW91IGhhdmUgZ2RiIGNvbm5lY3RlZC4KKyAgVGhlIG1vcmUgdXNlZnVsIGNvbW1hbmRzIHRvIHJ1biBhcmUgdGhpbmdzIGxpa2UgbHNtb2QsIGRtZXNnLCBwcyBvcgorICBwb3NzaWJseSBzb21lIG9mIHRoZSBtZW1vcnkgaW5mb3JtYXRpb24gY29tbWFuZHMuICBUbyBzZWUgYWxsIHRoZSBrZGIKKyAgY29tbWFuZHMgeW91IGNhbiBydW4gPGNvbnN0YW50Pm1vbml0b3IgaGVscDwvY29uc3RhbnQ+LjwvcGFyYT4KKyAgPHBhcmE+RXhhbXBsZToKKyAgPGluZm9ybWFsZXhhbXBsZT48cHJvZ3JhbWxpc3Rpbmc+CisoZ2RiKSBtb25pdG9yIHBzCisxIGlkbGUgcHJvY2VzcyAoc3RhdGUgSSkgYW5kCisyNyBzbGVlcGluZyBzeXN0ZW0gZGFlbW9uIChzdGF0ZSBNKSBwcm9jZXNzZXMgc3VwcHJlc3NlZCwKK3VzZSAncHMgQScgdG8gc2VlIGFsbC4KK1Rhc2sgQWRkciAgICAgICBQaWQgICBQYXJlbnQgWypdIGNwdSBTdGF0ZSBUaHJlYWQgICAgIENvbW1hbmQKKworMHhjNzgyOTFkMCAgICAgICAgMSAgICAgICAgMCAgMCAgICAwICAgUyAgMHhjNzgyOTQwNCAgaW5pdAorMHhjNzk1NDE1MCAgICAgIDk0MiAgICAgICAgMSAgMCAgICAwICAgUyAgMHhjNzk1NDM4NCAgZHJvcGJlYXIKKzB4Yzc4Nzg5YzAgICAgICA5NDQgICAgICAgIDEgIDAgICAgMCAgIFMgIDB4Yzc4NzhiZjQgIHNoCisoZ2RiKQorICA8L3Byb2dyYW1saXN0aW5nPjwvaW5mb3JtYWxleGFtcGxlPgorICA8L3BhcmE+CisgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKyAgPGNoYXB0ZXIgaWQ9IktHREJUZXN0U3VpdGUiPgorICAgIDx0aXRsZT5rZ2RiIFRlc3QgU3VpdGU8L3RpdGxlPgorICAgIDxwYXJhPgorICAgIFdoZW4ga2dkYiBpcyBlbmFibGVkIGluIHRoZSBrZXJuZWwgY29uZmlnIHlvdSBjYW4gYWxzbyBlbGVjdCB0bworICAgIGVuYWJsZSB0aGUgY29uZmlnIHBhcmFtZXRlciBLR0RCX1RFU1RTLiAgVHVybmluZyB0aGlzIG9uIHdpbGwKKyAgICBlbmFibGUgYSBzcGVjaWFsIGtnZGIgSS9PIG1vZHVsZSB3aGljaCBpcyBkZXNpZ25lZCB0byB0ZXN0IHRoZQorICAgIGtnZGIgaW50ZXJuYWwgZnVuY3Rpb25zLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICBUaGUga2dkYiB0ZXN0cyBhcmUgbWFpbmx5IGludGVuZGVkIGZvciBkZXZlbG9wZXJzIHRvIHRlc3QgdGhlIGtnZGIKKyAgICBpbnRlcm5hbHMgYXMgd2VsbCBhcyBhIHRvb2wgZm9yIGRldmVsb3BpbmcgYSBuZXcga2dkYiBhcmNoaXRlY3R1cmUKKyAgICBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4gIFRoZXNlIHRlc3RzIGFyZSBub3QgcmVhbGx5IGZvciBlbmQgdXNlcnMKKyAgICBvZiB0aGUgTGludXgga2VybmVsLiAgVGhlIHByaW1hcnkgc291cmNlIG9mIGRvY3VtZW50YXRpb24gd291bGQgYmUKKyAgICB0byBsb29rIGluIHRoZSBkcml2ZXJzL21pc2Mva2dkYnRzLmMgZmlsZS4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgVGhlIGtnZGIgdGVzdCBzdWl0ZSBjYW4gYWxzbyBiZSBjb25maWd1cmVkIGF0IGNvbXBpbGUgdGltZSB0byBydW4KKyAgICB0aGUgY29yZSBzZXQgb2YgdGVzdHMgYnkgc2V0dGluZyB0aGUga2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIKKyAgICBLR0RCX1RFU1RTX09OX0JPT1QuICBUaGlzIHBhcnRpY3VsYXIgb3B0aW9uIGlzIGFpbWVkIGF0IGF1dG9tYXRlZAorICAgIHJlZ3Jlc3Npb24gdGVzdGluZyBhbmQgZG9lcyBub3QgcmVxdWlyZSBtb2RpZnlpbmcgdGhlIGtlcm5lbCBib290CisgICAgY29uZmlnIGFyZ3VtZW50cy4gIElmIHRoaXMgaXMgdHVybmVkIG9uLCB0aGUga2dkYiB0ZXN0IHN1aXRlIGNhbgorICAgIGJlIGRpc2FibGVkIGJ5IHNwZWNpZnlpbmcgImtnZGJ0cz0iIGFzIGEga2VybmVsIGJvb3QgYXJndW1lbnQuCisgICAgPC9wYXJhPgorICA8L2NoYXB0ZXI+CisgIDxjaGFwdGVyIGlkPSJDb21tb25CYWNrRW5kUmVxIj4KKyAgPHRpdGxlPktlcm5lbCBEZWJ1Z2dlciBJbnRlcm5hbHM8L3RpdGxlPgorICA8c2VjdDEgaWQ9ImtnZGJBcmNoaXRlY3R1cmUiPgorICAgIDx0aXRsZT5BcmNoaXRlY3R1cmUgU3BlY2lmaWNzPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgVGhlIGtlcm5lbCBkZWJ1Z2dlciBpcyBvcmdhbml6ZWQgaW50byBhIG51bWJlciBvZiBjb21wb25lbnRzOgorICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBkZWJ1ZyBjb3JlPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICBUaGUgZGVidWcgY29yZSBpcyBmb3VuZCBpbiBrZXJuZWwvZGVidWdnZXIvZGVidWdfY29yZS5jLiAgSXQgY29udGFpbnM6CisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgPGxpc3RpdGVtPjxwYXJhPkEgZ2VuZXJpYyBPUyBleGNlcHRpb24gaGFuZGxlciB3aGljaCBpbmNsdWRlcworICAgICAgc3luYydpbmcgdGhlIHByb2Nlc3NvcnMgaW50byBhIHN0b3BwZWQgc3RhdGUgb24gYW4gbXVsdGktQ1BVCisgICAgICBzeXN0ZW0uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIEFQSSB0byB0YWxrIHRvIHRoZSBrZ2RiIEkvTyBkcml2ZXJzPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIEFQSSB0byBtYWtlIGNhbGxzIHRvIHRoZSBhcmNoLXNwZWNpZmljIGtnZGIgaW1wbGVtZW50YXRpb248L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgbG9naWMgdG8gcGVyZm9ybSBzYWZlIG1lbW9yeSByZWFkcyBhbmQgd3JpdGVzIHRvIG1lbW9yeSB3aGlsZSB1c2luZyB0aGUgZGVidWdnZXI8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT48cGFyYT5BIGZ1bGwgaW1wbGVtZW50YXRpb24gZm9yIHNvZnR3YXJlIGJyZWFrcG9pbnRzIHVubGVzcyBvdmVycmlkZGVuIGJ5IHRoZSBhcmNoPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIEFQSSB0byBpbnZva2UgZWl0aGVyIHRoZSBrZGIgb3Iga2dkYiBmcm9udGVuZCB0byB0aGUgZGVidWcgY29yZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgc3RydWN0dXJlcyBhbmQgY2FsbGJhY2sgQVBJIGZvciBhdG9taWMga2VybmVsIG1vZGUgc2V0dGluZy48L3BhcmE+CisgICAgICA8cGFyYT5OT1RFOiBrZ2Rib2MgaXMgd2hlcmUgdGhlIGttcyBjYWxsYmFja3MgYXJlIGludm9rZWQuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+PHBhcmE+a2dkYiBhcmNoLXNwZWNpZmljIGltcGxlbWVudGF0aW9uPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICBUaGlzIGltcGxlbWVudGF0aW9uIGlzIGdlbmVyYWxseSBmb3VuZCBpbiBhcmNoLyova2VybmVsL2tnZGIuYy4KKyAgICAgIEFzIGFuIGV4YW1wbGUsIGFyY2gveDg2L2tlcm5lbC9rZ2RiLmMgY29udGFpbnMgdGhlIHNwZWNpZmljcyB0bworICAgICAgaW1wbGVtZW50IEhXIGJyZWFrcG9pbnQgYXMgd2VsbCBhcyB0aGUgaW5pdGlhbGl6YXRpb24gdG8KKyAgICAgIGR5bmFtaWNhbGx5IHJlZ2lzdGVyIGFuZCB1bnJlZ2lzdGVyIGZvciB0aGUgdHJhcCBoYW5kbGVycyBvbgorICAgICAgdGhpcyBhcmNoaXRlY3R1cmUuICBUaGUgYXJjaC1zcGVjaWZpYyBwb3J0aW9uIGltcGxlbWVudHM6CisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgPGxpc3RpdGVtPjxwYXJhPmNvbnRhaW5zIGFuIGFyY2gtc3BlY2lmaWMgdHJhcCBjYXRjaGVyIHdoaWNoCisgICAgICBpbnZva2VzIGtnZGJfaGFuZGxlX2V4Y2VwdGlvbigpIHRvIHN0YXJ0IGtnZGIgYWJvdXQgZG9pbmcgaXRzCisgICAgICB3b3JrPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+PHBhcmE+dHJhbnNsYXRpb24gdG8gYW5kIGZyb20gZ2RiIHNwZWNpZmljIHBhY2tldCBmb3JtYXQgdG8gcHRfcmVnczwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgPGxpc3RpdGVtPjxwYXJhPlJlZ2lzdHJhdGlvbiBhbmQgdW5yZWdpc3RyYXRpb24gb2YgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIHRyYXAgaG9va3M8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT48cGFyYT5Bbnkgc3BlY2lhbCBleGNlcHRpb24gaGFuZGxpbmcgYW5kIGNsZWFudXA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT48cGFyYT5OTUkgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZCBjbGVhbnVwPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+PHBhcmE+KG9wdGlvbmFsKSBIVyBicmVha3BvaW50czwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICAgPGxpc3RpdGVtPjxwYXJhPmdkYnN0dWIgZnJvbnRlbmQgKGFrYSBrZ2RiKTwvcGFyYT4KKyAgICAgIDxwYXJhPlRoZSBnZGJzdHViIGlzIGxvY2F0ZWQgaW4ga2VybmVsL2RlYnVnL2dkYnN0dWIuYy4gSXQgY29udGFpbnM6PC9wYXJhPgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFsbCB0aGUgbG9naWMgdG8gaW1wbGVtZW50IHRoZSBnZGIgc2VyaWFsIHByb3RvY29sPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+PHBhcmE+a2RiIGZyb250ZW5kPC9wYXJhPgorICAgICAgPHBhcmE+VGhlIGtkYiBkZWJ1Z2dlciBzaGVsbCBpcyBicm9rZW4gZG93biBpbnRvIGEgbnVtYmVyIG9mCisgICAgICBjb21wb25lbnRzLiAgVGhlIGtkYiBjb3JlIGlzIGxvY2F0ZWQgaW4ga2VybmVsL2RlYnVnL2tkYi4gIFRoZXJlCisgICAgICBhcmUgYSBudW1iZXIgb2YgaGVscGVyIGZ1bmN0aW9ucyBpbiBzb21lIG9mIHRoZSBvdGhlciBrZXJuZWwKKyAgICAgIGNvbXBvbmVudHMgdG8gbWFrZSBpdCBwb3NzaWJsZSBmb3Iga2RiIHRvIGV4YW1pbmUgYW5kIHJlcG9ydAorICAgICAgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGtlcm5lbCB3aXRob3V0IHRha2luZyBsb2NrcyB0aGF0IGNvdWxkCisgICAgICBjYXVzZSBhIGtlcm5lbCBkZWFkbG9jay4gIFRoZSBrZGIgY29yZSBjb250YWlucyBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25hbGl0eS48L3BhcmE+CisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QSBzaW1wbGUgc2hlbGw8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSBrZGIgY29yZSBjb21tYW5kIHNldDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QSByZWdpc3RyYXRpb24gQVBJIHRvIHJlZ2lzdGVyIGFkZGl0aW9uYWwga2RiIHNoZWxsIGNvbW1hbmRzLjwvcGFyYT4KKwk8aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+QSBnb29kIGV4YW1wbGUgb2YgYSBzZWxmLWNvbnRhaW5lZCBrZGIgbW9kdWxlCisgICAgICAgIGlzIHRoZSAiZnRkdW1wIiBjb21tYW5kIGZvciBkdW1waW5nIHRoZSBmdHJhY2UgYnVmZmVyLiAgU2VlOgorICAgICAgICBrZXJuZWwvdHJhY2UvdHJhY2Vfa2RiLmM8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZvciBhbiBleGFtcGxlIG9mIGhvdyB0byBkeW5hbWljYWxseSByZWdpc3RlcgorICAgICAgICBhIG5ldyBrZGIgY29tbWFuZCB5b3UgY2FuIGJ1aWxkIHRoZSBrZGJfaGVsbG8ua28ga2VybmVsIG1vZHVsZQorICAgICAgICBmcm9tIHNhbXBsZXMva2RiL2tkYl9oZWxsby5jLiAgVG8gYnVpbGQgdGhpcyBleGFtcGxlIHlvdSBjYW4KKyAgICAgICAgc2V0IENPTkZJR19TQU1QTEVTPXkgYW5kIENPTkZJR19TQU1QTEVfS0RCPW0gaW4geW91ciBrZXJuZWwKKyAgICAgICAgY29uZmlnLiAgTGF0ZXIgcnVuICJtb2Rwcm9iZSBrZGJfaGVsbG8iIGFuZCB0aGUgbmV4dCB0aW1lIHlvdQorICAgICAgICBlbnRlciB0aGUga2RiIHNoZWxsLCB5b3UgY2FuIHJ1biB0aGUgImhlbGxvIgorICAgICAgICBjb21tYW5kLjwvcGFyYT48L2xpc3RpdGVtPgorCTwvaXRlbWl6ZWRsaXN0PjwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT48cGFyYT5UaGUgaW1wbGVtZW50YXRpb24gZm9yIGtkYl9wcmludGYoKSB3aGljaAorICAgICAgICBlbWl0cyBtZXNzYWdlcyBkaXJlY3RseSB0byBJL08gZHJpdmVycywgYnlwYXNzaW5nIHRoZSBrZXJuZWwKKyAgICAgICAgbG9nLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U1cgLyBIVyBicmVha3BvaW50IG1hbmFnZW1lbnQgZm9yIHRoZSBrZGIgc2hlbGw8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT48cGFyYT5rZ2RiIEkvTyBkcml2ZXI8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgIEVhY2gga2dkYiBJL08gZHJpdmVyIGhhcyB0byBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIGZvciB0aGUgZm9sbG93aW5nOgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgIDxsaXN0aXRlbT48cGFyYT5jb25maWd1cmF0aW9uIHZpYSBidWlsdC1pbiBvciBtb2R1bGU8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT48cGFyYT5keW5hbWljIGNvbmZpZ3VyYXRpb24gYW5kIGtnZGIgaG9vayByZWdpc3RyYXRpb24gY2FsbHM8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT48cGFyYT5yZWFkIGFuZCB3cml0ZSBjaGFyYWN0ZXIgaW50ZXJmYWNlPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+PHBhcmE+QSBjbGVhbnVwIGhhbmRsZXIgZm9yIHVuY29uZmlndXJpbmcgZnJvbSB0aGUga2dkYiBjb3JlPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+PHBhcmE+KG9wdGlvbmFsKSBFYXJseSBkZWJ1ZyBtZXRob2RvbG9neTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICBBbnkgZ2l2ZW4ga2dkYiBJL08gZHJpdmVyIGhhcyB0byBvcGVyYXRlIHZlcnkgY2xvc2VseSB3aXRoIHRoZQorICAgICAgaGFyZHdhcmUgYW5kIG11c3QgZG8gaXQgaW4gc3VjaCBhIHdheSB0aGF0IGRvZXMgbm90IGVuYWJsZQorICAgICAgaW50ZXJydXB0cyBvciBjaGFuZ2Ugb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbSBjb250ZXh0IHdpdGhvdXQKKyAgICAgIGNvbXBsZXRlbHkgcmVzdG9yaW5nIHRoZW0uIFRoZSBrZ2RiIGNvcmUgd2lsbCByZXBlYXRlZGx5ICJwb2xsIgorICAgICAgYSBrZ2RiIEkvTyBkcml2ZXIgZm9yIGNoYXJhY3RlcnMgd2hlbiBpdCBuZWVkcyBpbnB1dC4gIFRoZSBJL08KKyAgICAgIGRyaXZlciBpcyBleHBlY3RlZCB0byByZXR1cm4gaW1tZWRpYXRlbHkgaWYgdGhlcmUgaXMgbm8gZGF0YQorICAgICAgYXZhaWxhYmxlLiAgRG9pbmcgc28gYWxsb3dzIGZvciB0aGUgZnV0dXJlIHBvc3NpYmlsaXR5IHRvIHRvdWNoCisgICAgICB3YXRjaGRvZyBoYXJkd2FyZSBpbiBzdWNoIGEgd2F5IGFzIHRvIGhhdmUgYSB0YXJnZXQgc3lzdGVtIG5vdAorICAgICAgcmVzZXQgd2hlbiB0aGVzZSBhcmUgZW5hYmxlZC4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICBJZiB5b3UgYXJlIGludGVudCBvbiBhZGRpbmcga2dkYiBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgc3VwcG9ydAorICAgICAgZm9yIGEgbmV3IGFyY2hpdGVjdHVyZSwgdGhlIGFyY2hpdGVjdHVyZSBzaG91bGQgZGVmaW5lCisgICAgICA8Y29uc3RhbnQ+SEFWRV9BUkNIX0tHREI8L2NvbnN0YW50PiBpbiB0aGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljCisgICAgICBLY29uZmlnIGZpbGUuICBUaGlzIHdpbGwgZW5hYmxlIGtnZGIgZm9yIHRoZSBhcmNoaXRlY3R1cmUsIGFuZAorICAgICAgYXQgdGhhdCBwb2ludCB5b3UgbXVzdCBjcmVhdGUgYW4gYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGtnZGIKKyAgICAgIGltcGxlbWVudGF0aW9uLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICBUaGVyZSBhcmUgYSBmZXcgZmxhZ3Mgd2hpY2ggbXVzdCBiZSBzZXQgb24gZXZlcnkgYXJjaGl0ZWN0dXJlIGluCisgICAgICB0aGVpciAmbHQ7YXNtL2tnZGIuaCZndDsgZmlsZS4gIFRoZXNlIGFyZToKKyAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBOVU1SRUdCWVRFUzogVGhlIHNpemUgaW4gYnl0ZXMgb2YgYWxsIG9mIHRoZSByZWdpc3RlcnMsIHNvCisgICAgICAgICAgdGhhdCB3ZSBjYW4gZW5zdXJlIHRoZXkgd2lsbCBhbGwgZml0IGludG8gYSBwYWNrZXQuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgQlVGTUFYOiBUaGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgYnVmZmVyIEdEQiB3aWxsIHJlYWQgaW50by4KKyAgICAgICAgICBUaGlzIG11c3QgYmUgbGFyZ2VyIHRoYW4gTlVNUkVHQllURVMuCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgQ0FDSEVfRkxVU0hfSVNfU0FGRTogU2V0IHRvIDEgaWYgaXQgaXMgYWx3YXlzIHNhZmUgdG8gY2FsbAorICAgICAgICAgIGZsdXNoX2NhY2hlX3JhbmdlIG9yIGZsdXNoX2ljYWNoZV9yYW5nZS4gIE9uIHNvbWUgYXJjaGl0ZWN0dXJlcywKKyAgICAgICAgICB0aGVzZSBmdW5jdGlvbnMgbWF5IG5vdCBiZSBzYWZlIHRvIGNhbGwgb24gU01QIHNpbmNlIHdlIGtlZXAgb3RoZXIKKyAgICAgICAgICBDUFVzIGluIGEgaG9sZGluZyBwYXR0ZXJuLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICBUaGVyZSBhcmUgYWxzbyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBmb3IgdGhlIGNvbW1vbiBiYWNrZW5kLAorICAgICAgZm91bmQgaW4ga2VybmVsL2tnZGIuYywgdGhhdCBtdXN0IGJlIHN1cHBsaWVkIGJ5IHRoZQorICAgICAgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGJhY2tlbmQgdW5sZXNzIG1hcmtlZCBhcyAob3B0aW9uYWwpLCBpbgorICAgICAgd2hpY2ggY2FzZSBhIGRlZmF1bHQgZnVuY3Rpb24gbWF5YmUgdXNlZCBpZiB0aGUgYXJjaGl0ZWN0dXJlCisgICAgICBkb2VzIG5vdCBuZWVkIHRvIHByb3ZpZGUgYSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgIDwvcGFyYT4KKyFJaW5jbHVkZS9saW51eC9rZ2RiLmgKKyAgPC9zZWN0MT4KKyAgPHNlY3QxIGlkPSJrZ2Rib2NEZXNpZ24iPgorICA8dGl0bGU+a2dkYm9jIGludGVybmFsczwvdGl0bGU+CisgIDxzZWN0Mj4KKyAgPHRpdGxlPmtnZGJvYyBhbmQgdWFydHM8L3RpdGxlPgorICA8cGFyYT4KKyAgVGhlIGtnZGJvYyBkcml2ZXIgaXMgYWN0dWFsbHkgYSB2ZXJ5IHRoaW4gZHJpdmVyIHRoYXQgcmVsaWVzIG9uIHRoZQorICB1bmRlcmx5aW5nIGxvdyBsZXZlbCB0byB0aGUgaGFyZHdhcmUgZHJpdmVyIGhhdmluZyAicG9sbGluZyBob29rcyIKKyAgdG8gd2hpY2ggdGhlIHR0eSBkcml2ZXIgaXMgYXR0YWNoZWQuICBJbiB0aGUgaW5pdGlhbAorICBpbXBsZW1lbnRhdGlvbiBvZiBrZ2Rib2MgdGhlIHNlcmlhbF9jb3JlIHdhcyBjaGFuZ2VkIHRvIGV4cG9zZSBhCisgIGxvdyBsZXZlbCBVQVJUIGhvb2sgZm9yIGRvaW5nIHBvbGxlZCBtb2RlIHJlYWRpbmcgYW5kIHdyaXRpbmcgb2YgYQorICBzaW5nbGUgY2hhcmFjdGVyIHdoaWxlIGluIGFuIGF0b21pYyBjb250ZXh0LiAgV2hlbiBrZ2RiIG1ha2VzIGFuIEkvTworICByZXF1ZXN0IHRvIHRoZSBkZWJ1Z2dlciwga2dkYm9jIGludm9rZXMgYSBjYWxsYmFjayBpbiB0aGUgc2VyaWFsCisgIGNvcmUgd2hpY2ggaW4gdHVybiB1c2VzIHRoZSBjYWxsYmFjayBpbiB0aGUgVUFSVCBkcml2ZXIuPC9wYXJhPgorICA8cGFyYT4KKyAgV2hlbiB1c2luZyBrZ2Rib2Mgd2l0aCBhIFVBUlQsIHRoZSBVQVJUIGRyaXZlciBtdXN0IGltcGxlbWVudCB0d28gY2FsbGJhY2tzIGluIHRoZSA8Y29uc3RhbnQ+c3RydWN0IHVhcnRfb3BzPC9jb25zdGFudD4uIEV4YW1wbGUgZnJvbSBkcml2ZXJzLzgyNTAuYzo8cHJvZ3JhbWxpc3Rpbmc+CisjaWZkZWYgQ09ORklHX0NPTlNPTEVfUE9MTAorCS5wb2xsX2dldF9jaGFyID0gc2VyaWFsODI1MF9nZXRfcG9sbF9jaGFyLAorCS5wb2xsX3B1dF9jaGFyID0gc2VyaWFsODI1MF9wdXRfcG9sbF9jaGFyLAorI2VuZGlmCisgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgIEFueSBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpY3MgYXJvdW5kIGNyZWF0aW5nIGEgcG9sbGluZyBkcml2ZXIgdXNlIHRoZQorICA8Y29uc3RhbnQ+I2lmZGVmIENPTkZJR19DT05TT0xFX1BPTEw8L2NvbnN0YW50PiwgYXMgc2hvd24gYWJvdmUuCisgIEtlZXAgaW4gbWluZCB0aGF0IHBvbGxpbmcgaG9va3MgaGF2ZSB0byBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5CisgIHRoYXQgdGhleSBjYW4gYmUgY2FsbGVkIGZyb20gYW4gYXRvbWljIGNvbnRleHQgYW5kIGhhdmUgdG8gcmVzdG9yZQorICB0aGUgc3RhdGUgb2YgdGhlIFVBUlQgY2hpcCBvbiByZXR1cm4gc3VjaCB0aGF0IHRoZSBzeXN0ZW0gY2FuIHJldHVybgorICB0byBub3JtYWwgd2hlbiB0aGUgZGVidWdnZXIgZGV0YWNoZXMuICBZb3UgbmVlZCB0byBiZSB2ZXJ5IGNhcmVmdWwKKyAgd2l0aCBhbnkga2luZCBvZiBsb2NrIHlvdSBjb25zaWRlciwgYmVjYXVzZSBmYWlsaW5nIGhlcmUgaXMgbW9zdCBsaWtlbHkKKyAgZ29pbmcgdG8gbWVhbiBwcmVzc2luZyB0aGUgcmVzZXQgYnV0dG9uLgorICA8L3BhcmE+CisgIDwvc2VjdDI+CisgIDxzZWN0MiBpZD0ia2dkYm9jS2JkIj4KKyAgPHRpdGxlPmtnZGJvYyBhbmQga2V5Ym9hcmRzPC90aXRsZT4KKyAgPHBhcmE+VGhlIGtnZGJvYyBkcml2ZXIgY29udGFpbnMgbG9naWMgdG8gY29uZmlndXJlIGNvbW11bmljYXRpb25zCisgIHdpdGggYW4gYXR0YWNoZWQga2V5Ym9hcmQuICBUaGUga2V5Ym9hcmQgaW5mcmFzdHJ1Y3R1cmUgaXMgb25seQorICBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgd2hlbiBDT05GSUdfS0RCX0tFWUJPQVJEPXkgaXMgc2V0IGluIHRoZQorICBrZXJuZWwgY29uZmlndXJhdGlvbi48L3BhcmE+CisgIDxwYXJhPlRoZSBjb3JlIHBvbGxlZCBrZXlib2FyZCBkcml2ZXIgZHJpdmVyIGZvciBQUy8yIHR5cGUga2V5Ym9hcmRzCisgIGlzIGluIGRyaXZlcnMvY2hhci9rZGJfa2V5Ym9hcmQuYy4gIFRoaXMgZHJpdmVyIGlzIGhvb2tlZCBpbnRvIHRoZQorICBkZWJ1ZyBjb3JlIHdoZW4ga2dkYm9jIHBvcHVsYXRlcyB0aGUgY2FsbGJhY2sgaW4gdGhlIGFycmF5CisgIGNhbGxlZCA8Y29uc3RhbnQ+a2RiX3BvbGxfZnVuY3NbXTwvY29uc3RhbnQ+LiAgVGhlCisgIGtkYl9nZXRfa2JkX2NoYXIoKSBpcyB0aGUgdG9wLWxldmVsIGZ1bmN0aW9uIHdoaWNoIHBvbGxzIGhhcmR3YXJlCisgIGZvciBzaW5nbGUgY2hhcmFjdGVyIGlucHV0LgorICA8L3BhcmE+CisgIDwvc2VjdDI+CisgIDxzZWN0MiBpZD0ia2dkYm9jS21zIj4KKyAgPHRpdGxlPmtnZGJvYyBhbmQga21zPC90aXRsZT4KKyAgPHBhcmE+VGhlIGtnZGJvYyBkcml2ZXIgY29udGFpbnMgbG9naWMgdG8gcmVxdWVzdCB0aGUgZ3JhcGhpY3MKKyAgZGlzcGxheSB0byBzd2l0Y2ggdG8gYSB0ZXh0IGNvbnRleHQgd2hlbiB5b3UgYXJlIHVzaW5nCisgICJrZ2Rib2M9a21zLGtiZCIsIHByb3ZpZGVkIHRoYXQgeW91IGhhdmUgYSB2aWRlbyBkcml2ZXIgd2hpY2ggaGFzIGEKKyAgZnJhbWUgYnVmZmVyIGNvbnNvbGUgYW5kIGF0b21pYyBrZXJuZWwgbW9kZSBzZXR0aW5nIHN1cHBvcnQuPC9wYXJhPgorICA8cGFyYT4KKyAgRXZlcnkgdGltZSB0aGUga2VybmVsCisgIGRlYnVnZ2VyIGlzIGVudGVyZWQgaXQgY2FsbHMga2dkYm9jX3ByZV9leHBfaGFuZGxlcigpIHdoaWNoIGluIHR1cm4KKyAgY2FsbHMgY29uX2RlYnVnX2VudGVyKCkgaW4gdGhlIHZpcnR1YWwgY29uc29sZSBsYXllci4gIE9uIHJlc3VtaW5nIGtlcm5lbAorICBleGVjdXRpb24sIHRoZSBrZXJuZWwgZGVidWdnZXIgY2FsbHMga2dkYm9jX3Bvc3RfZXhwX2hhbmRsZXIoKSB3aGljaAorICBpbiB0dXJuIGNhbGxzIGNvbl9kZWJ1Z19sZWF2ZSgpLjwvcGFyYT4KKyAgPHBhcmE+QW55IHZpZGVvIGRyaXZlciB0aGF0IHdhbnRzIHRvIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUga2VybmVsCisgIGRlYnVnZ2VyIGFuZCB0aGUgYXRvbWljIGttcyBjYWxsYmFja3MgbXVzdCBpbXBsZW1lbnQgdGhlCisgIG1vZGVfc2V0X2Jhc2VfYXRvbWljLCBmYl9kZWJ1Z19lbnRlciBhbmQgZmJfZGVidWdfbGVhdmUgb3BlcmF0aW9ucy4KKyAgRm9yIHRoZSBmYl9kZWJ1Z19lbnRlciBhbmQgZmJfZGVidWdfbGVhdmUgdGhlIG9wdGlvbiBleGlzdHMgdG8gdXNlCisgIHRoZSBnZW5lcmljIGRybSBmYiBoZWxwZXIgZnVuY3Rpb25zIG9yIGltcGxlbWVudCBzb21ldGhpbmcgY3VzdG9tIGZvcgorICB0aGUgaGFyZHdhcmUuICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZQorICAubW9kZV9zZXRfYmFzZV9hdG9taWMgb3BlcmF0aW9uIGluCisgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYzoKKyAgPGluZm9ybWFsZXhhbXBsZT4KKyAgPHByb2dyYW1saXN0aW5nPgorc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgaW50ZWxfaGVscGVyX2Z1bmNzID0geworWy4uLl0KKyAgICAgICAgLm1vZGVfc2V0X2Jhc2VfYXRvbWljID0gaW50ZWxfcGlwZV9zZXRfYmFzZV9hdG9taWMsCitbLi4uXQorfTsKKyAgPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9pbmZvcm1hbGV4YW1wbGU+CisgIDwvcGFyYT4KKyAgPHBhcmE+SGVyZSBpcyBhbiBleGFtcGxlIG9mIGhvdyB0aGUgaTkxNSBkcml2ZXIgaW5pdGlhbGl6ZXMgdGhlIGZiX2RlYnVnX2VudGVyIGFuZCBmYl9kZWJ1Z19sZWF2ZSBmdW5jdGlvbnMgdG8gdXNlIHRoZSBnZW5lcmljIGRybSBoZWxwZXJzIGluCisgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiLmM6CisgIDxpbmZvcm1hbGV4YW1wbGU+CisgIDxwcm9ncmFtbGlzdGluZz4KK3N0YXRpYyBzdHJ1Y3QgZmJfb3BzIGludGVsZmJfb3BzID0geworWy4uLl0KKyAgICAgICAuZmJfZGVidWdfZW50ZXIgPSBkcm1fZmJfaGVscGVyX2RlYnVnX2VudGVyLAorICAgICAgIC5mYl9kZWJ1Z19sZWF2ZSA9IGRybV9mYl9oZWxwZXJfZGVidWdfbGVhdmUsCitbLi4uXQorfTsKKyAgPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9pbmZvcm1hbGV4YW1wbGU+CisgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KKyAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorICA8Y2hhcHRlciBpZD0iY3JlZGl0cyI+CisgICAgIDx0aXRsZT5DcmVkaXRzPC90aXRsZT4KKwk8cGFyYT4KKwkJVGhlIGZvbGxvd2luZyBwZW9wbGUgaGF2ZSBjb250cmlidXRlZCB0byB0aGlzIGRvY3VtZW50OgorCQk8b3JkZXJlZGxpc3Q+CisJCQk8bGlzdGl0ZW0+PHBhcmE+QW1pdCBLYWxlPGVtYWlsPmFtaXRrYWxlQGxpbnN5c3NvZnQuY29tPC9lbWFpbD48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT5Ub20gUmluaTxlbWFpbD50cmluaUBrZXJuZWwuY3Jhc2hpbmcub3JnPC9lbWFpbD48L3BhcmE+PC9saXN0aXRlbT4KKwkJPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgICAgICBJbiBNYXJjaCAyMDA4IHRoaXMgZG9jdW1lbnQgd2FzIGNvbXBsZXRlbHkgcmV3cml0dGVuIGJ5OgorCQk8aXRlbWl6ZWRsaXN0PgorCQk8bGlzdGl0ZW0+PHBhcmE+SmFzb24gV2Vzc2VsPGVtYWlsPmphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPC9lbWFpbD48L3BhcmE+PC9saXN0aXRlbT4KKwkJPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgSW4gSmFuIDIwMTAgdGhpcyBkb2N1bWVudCB3YXMgdXBkYXRlZCB0byBpbmNsdWRlIGtkYi4KKwkJPGl0ZW1pemVkbGlzdD4KKwkJPGxpc3RpdGVtPjxwYXJhPkphc29uIFdlc3NlbDxlbWFpbD5qYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbTwvZW1haWw+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCTwvaXRlbWl6ZWRsaXN0PgorCTwvcGFyYT4KKyAgPC9jaGFwdGVyPgorPC9ib29rPgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbGliYXRhLnRtcGwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbGliYXRhLnRtcGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdmY2RjNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9saWJhdGEudG1wbApAQCAtMCwwICsxLDE2MjUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMS4yLy9FTiIKKwkiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQiIFtdPgorCis8Ym9vayBpZD0ibGliYXRhRGV2R3VpZGUiPgorIDxib29raW5mbz4KKyAgPHRpdGxlPmxpYkFUQSBEZXZlbG9wZXIncyBHdWlkZTwvdGl0bGU+CisgIAorICA8YXV0aG9yZ3JvdXA+CisgICA8YXV0aG9yPgorICAgIDxmaXJzdG5hbWU+SmVmZjwvZmlyc3RuYW1lPgorICAgIDxzdXJuYW1lPkdhcnppazwvc3VybmFtZT4KKyAgIDwvYXV0aG9yPgorICA8L2F1dGhvcmdyb3VwPgorCisgIDxjb3B5cmlnaHQ+CisgICA8eWVhcj4yMDAzLTIwMDY8L3llYXI+CisgICA8aG9sZGVyPkplZmYgR2FyemlrPC9ob2xkZXI+CisgIDwvY29weXJpZ2h0PgorCisgIDxsZWdhbG5vdGljZT4KKyAgIDxwYXJhPgorICAgVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgT3BlbgorICAgU29mdHdhcmUgTGljZW5zZSB2ZXJzaW9uIDEuMSB0aGF0IGNhbiBiZSBmb3VuZCBhdAorICAgPHVsaW5rIHVybD0iaHR0cDovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvTGljZW5zaW5nOk9TTDEuMSI+aHR0cDovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvTGljZW5zaW5nOk9TTDEuMTwvdWxpbms+CisgICBhbmQgaXMgaW5jbHVkZWQgaGVyZWluIGJ5IHJlZmVyZW5jZS4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcworICAgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiAodGhlICJHUEwiKSBhcyBkaXN0cmlidXRlZAorICAgaW4gdGhlIGtlcm5lbCBzb3VyY2UgQ09QWUlORyBmaWxlLCBpbiB3aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9mCisgICB0aGUgR1BMIGFyZSBhcHBsaWNhYmxlIGluc3RlYWQgb2YgdGhlIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxsb3cKKyAgIHRoZSB1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBvbmx5IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAgIEdQTCBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlcgorICAgdGhlIE9TTCwgaW5kaWNhdGUgeW91ciBkZWNpc2lvbiBieSBkZWxldGluZyB0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQKKyAgIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UgYW5kIG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIEdQTC4KKyAgIElmIHlvdSBkbyBub3QgZGVsZXRlIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lwaWVudCBtYXkgdXNlIHlvdXIKKyAgIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIGVpdGhlciB0aGUgT1NMIG9yIHRoZSBHUEwuCisgICA8L3BhcmE+CisKKyAgPC9sZWdhbG5vdGljZT4KKyA8L2Jvb2tpbmZvPgorCis8dG9jPjwvdG9jPgorCisgIDxjaGFwdGVyIGlkPSJsaWJhdGFJbnRyb2R1Y3Rpb24iPgorICAgICA8dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KKyAgPHBhcmE+CisgIGxpYkFUQSBpcyBhIGxpYnJhcnkgdXNlZCBpbnNpZGUgdGhlIExpbnV4IGtlcm5lbCB0byBzdXBwb3J0IEFUQSBob3N0CisgIGNvbnRyb2xsZXJzIGFuZCBkZXZpY2VzLiAgbGliQVRBIHByb3ZpZGVzIGFuIEFUQSBkcml2ZXIgQVBJLCBjbGFzcworICB0cmFuc3BvcnRzIGZvciBBVEEgYW5kIEFUQVBJIGRldmljZXMsIGFuZCBTQ1NJJmx0Oy0mZ3Q7QVRBIHRyYW5zbGF0aW9uCisgIGZvciBBVEEgZGV2aWNlcyBhY2NvcmRpbmcgdG8gdGhlIFQxMCBTQVQgc3BlY2lmaWNhdGlvbi4KKyAgPC9wYXJhPgorICA8cGFyYT4KKyAgVGhpcyBHdWlkZSBkb2N1bWVudHMgdGhlIGxpYkFUQSBkcml2ZXIgQVBJLCBsaWJyYXJ5IGZ1bmN0aW9ucywgbGlicmFyeQorICBpbnRlcm5hbHMsIGFuZCBhIGNvdXBsZSBzYW1wbGUgQVRBIGxvdy1sZXZlbCBkcml2ZXJzLgorICA8L3BhcmE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0ibGliYXRhRHJpdmVyQXBpIj4KKyAgICAgPHRpdGxlPmxpYmF0YSBEcml2ZXIgQVBJPC90aXRsZT4KKyAgICAgPHBhcmE+CisgICAgIHN0cnVjdCBhdGFfcG9ydF9vcGVyYXRpb25zIGlzIGRlZmluZWQgZm9yIGV2ZXJ5IGxvdy1sZXZlbCBsaWJhdGEKKyAgICAgaGFyZHdhcmUgZHJpdmVyLCBhbmQgaXQgY29udHJvbHMgaG93IHRoZSBsb3ctbGV2ZWwgZHJpdmVyCisgICAgIGludGVyZmFjZXMgd2l0aCB0aGUgQVRBIGFuZCBTQ1NJIGxheWVycy4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgRklTLWJhc2VkIGRyaXZlcnMgd2lsbCBob29rIGludG8gdGhlIHN5c3RlbSB3aXRoIC0+cWNfcHJlcCgpIGFuZAorICAgICAtPnFjX2lzc3VlKCkgaGlnaC1sZXZlbCBob29rcy4gIEhhcmR3YXJlIHdoaWNoIGJlaGF2ZXMgaW4gYSBtYW5uZXIKKyAgICAgc2ltaWxhciB0byBQQ0kgSURFIGhhcmR3YXJlIG1heSB1dGlsaXplIHNldmVyYWwgZ2VuZXJpYyBoZWxwZXJzLAorICAgICBkZWZpbmluZyBhdCBhIGJhcmUgbWluaW11bSB0aGUgYnVzIEkvTyBhZGRyZXNzZXMgb2YgdGhlIEFUQSBzaGFkb3cKKyAgICAgcmVnaXN0ZXIgYmxvY2tzLgorICAgICA8L3BhcmE+CisgICAgIDxzZWN0MT4KKyAgICAgICAgPHRpdGxlPnN0cnVjdCBhdGFfcG9ydF9vcGVyYXRpb25zPC90aXRsZT4KKworCTxzZWN0Mj48dGl0bGU+RGlzYWJsZSBBVEEgcG9ydDwvdGl0bGU+CisJPHByb2dyYW1saXN0aW5nPgordm9pZCAoKnBvcnRfZGlzYWJsZSkgKHN0cnVjdCBhdGFfcG9ydCAqKTsKKwk8L3Byb2dyYW1saXN0aW5nPgorCisJPHBhcmE+CisJQ2FsbGVkIGZyb20gYXRhX2J1c19wcm9iZSgpIGVycm9yIHBhdGgsIGFzIHdlbGwgYXMgd2hlbgorCXVucmVnaXN0ZXJpbmcgZnJvbSB0aGUgU0NTSSBtb2R1bGUgKHJtbW9kLCBob3QgdW5wbHVnKS4KKwlUaGlzIGZ1bmN0aW9uIHNob3VsZCBkbyB3aGF0ZXZlciBuZWVkcyB0byBiZSBkb25lIHRvIHRha2UgdGhlCisJcG9ydCBvdXQgb2YgdXNlLiAgSW4gbW9zdCBjYXNlcywgYXRhX3BvcnRfZGlzYWJsZSgpIGNhbiBiZSB1c2VkCisJYXMgdGhpcyBob29rLgorCTwvcGFyYT4KKwk8cGFyYT4KKwlDYWxsZWQgZnJvbSBhdGFfYnVzX3Byb2JlKCkgb24gYSBmYWlsZWQgcHJvYmUuCisJQ2FsbGVkIGZyb20gYXRhX3Njc2lfcmVsZWFzZSgpLgorCTwvcGFyYT4KKworCTwvc2VjdDI+CisKKwk8c2VjdDI+PHRpdGxlPlBvc3QtSURFTlRJRlkgZGV2aWNlIGNvbmZpZ3VyYXRpb248L3RpdGxlPgorCTxwcm9ncmFtbGlzdGluZz4KK3ZvaWQgKCpkZXZfY29uZmlnKSAoc3RydWN0IGF0YV9wb3J0ICosIHN0cnVjdCBhdGFfZGV2aWNlICopOworCTwvcHJvZ3JhbWxpc3Rpbmc+CisKKwk8cGFyYT4KKwlDYWxsZWQgYWZ0ZXIgSURFTlRJRlkgW1BBQ0tFVF0gREVWSUNFIGlzIGlzc3VlZCB0byBlYWNoIGRldmljZQorCWZvdW5kLiAgVHlwaWNhbGx5IHVzZWQgdG8gYXBwbHkgZGV2aWNlLXNwZWNpZmljIGZpeHVwcyBwcmlvciB0bworCWlzc3VlIG9mIFNFVCBGRUFUVVJFUyAtIFhGRVIgTU9ERSwgYW5kIHByaW9yIHRvIG9wZXJhdGlvbi4KKwk8L3BhcmE+CisJPHBhcmE+CisJVGhpcyBlbnRyeSBtYXkgYmUgc3BlY2lmaWVkIGFzIE5VTEwgaW4gYXRhX3BvcnRfb3BlcmF0aW9ucy4KKwk8L3BhcmE+CisKKwk8L3NlY3QyPgorCisJPHNlY3QyPjx0aXRsZT5TZXQgUElPL0RNQSBtb2RlPC90aXRsZT4KKwk8cHJvZ3JhbWxpc3Rpbmc+Cit2b2lkICgqc2V0X3Bpb21vZGUpIChzdHJ1Y3QgYXRhX3BvcnQgKiwgc3RydWN0IGF0YV9kZXZpY2UgKik7Cit2b2lkICgqc2V0X2RtYW1vZGUpIChzdHJ1Y3QgYXRhX3BvcnQgKiwgc3RydWN0IGF0YV9kZXZpY2UgKik7Cit2b2lkICgqcG9zdF9zZXRfbW9kZSkgKHN0cnVjdCBhdGFfcG9ydCAqKTsKK3Vuc2lnbmVkIGludCAoKm1vZGVfZmlsdGVyKSAoc3RydWN0IGF0YV9wb3J0ICosIHN0cnVjdCBhdGFfZGV2aWNlICosIHVuc2lnbmVkIGludCk7CisJPC9wcm9ncmFtbGlzdGluZz4KKworCTxwYXJhPgorCUhvb2tzIGNhbGxlZCBwcmlvciB0byB0aGUgaXNzdWUgb2YgU0VUIEZFQVRVUkVTIC0gWEZFUiBNT0RFCisJY29tbWFuZC4gIFRoZSBvcHRpb25hbCAtPm1vZGVfZmlsdGVyKCkgaG9vayBpcyBjYWxsZWQgd2hlbiBsaWJhdGEKKwloYXMgYnVpbHQgYSBtYXNrIG9mIHRoZSBwb3NzaWJsZSBtb2Rlcy4gVGhpcyBpcyBwYXNzZWQgdG8gdGhlIAorCS0+bW9kZV9maWx0ZXIoKSBmdW5jdGlvbiB3aGljaCBzaG91bGQgcmV0dXJuIGEgbWFzayBvZiB2YWxpZCBtb2RlcworCWFmdGVyIGZpbHRlcmluZyB0aG9zZSB1bnN1aXRhYmxlIGR1ZSB0byBoYXJkd2FyZSBsaW1pdHMuIEl0IGlzIG5vdAorCXZhbGlkIHRvIHVzZSB0aGlzIGludGVyZmFjZSB0byBhZGQgbW9kZXMuCisJPC9wYXJhPgorCTxwYXJhPgorCWRldi0+cGlvX21vZGUgYW5kIGRldi0+ZG1hX21vZGUgYXJlIGd1YXJhbnRlZWQgdG8gYmUgdmFsaWQgd2hlbgorCS0+c2V0X3Bpb21vZGUoKSBhbmQgd2hlbiAtPnNldF9kbWFtb2RlKCkgaXMgY2FsbGVkLiBUaGUgdGltaW5ncyBmb3IKKwlhbnkgb3RoZXIgZHJpdmUgc2hhcmluZyB0aGUgY2FibGUgd2lsbCBhbHNvIGJlIHZhbGlkIGF0IHRoaXMgcG9pbnQuCisJVGhhdCBpcyB0aGUgbGlicmFyeSByZWNvcmRzIHRoZSBkZWNpc2lvbnMgZm9yIHRoZSBtb2RlcyBvZiBlYWNoCisJZHJpdmUgb24gYSBjaGFubmVsIGJlZm9yZSBpdCBhdHRlbXB0cyB0byBzZXQgYW55IG9mIHRoZW0uCisJPC9wYXJhPgorCTxwYXJhPgorCS0+cG9zdF9zZXRfbW9kZSgpIGlzCisJY2FsbGVkIHVuY29uZGl0aW9uYWxseSwgYWZ0ZXIgdGhlIFNFVCBGRUFUVVJFUyAtIFhGRVIgTU9ERQorCWNvbW1hbmQgY29tcGxldGVzIHN1Y2Nlc3NmdWxseS4KKwk8L3BhcmE+CisKKwk8cGFyYT4KKwktPnNldF9waW9tb2RlKCkgaXMgYWx3YXlzIGNhbGxlZCAoaWYgcHJlc2VudCksIGJ1dAorCS0+c2V0X2RtYV9tb2RlKCkgaXMgb25seSBjYWxsZWQgaWYgRE1BIGlzIHBvc3NpYmxlLgorCTwvcGFyYT4KKworCTwvc2VjdDI+CisKKwk8c2VjdDI+PHRpdGxlPlRhc2tmaWxlIHJlYWQvd3JpdGU8L3RpdGxlPgorCTxwcm9ncmFtbGlzdGluZz4KK3ZvaWQgKCpzZmZfdGZfbG9hZCkgKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfdGFza2ZpbGUgKnRmKTsKK3ZvaWQgKCpzZmZfdGZfcmVhZCkgKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfdGFza2ZpbGUgKnRmKTsKKwk8L3Byb2dyYW1saXN0aW5nPgorCisJPHBhcmE+CisJLT50Zl9sb2FkKCkgaXMgY2FsbGVkIHRvIGxvYWQgdGhlIGdpdmVuIHRhc2tmaWxlIGludG8gaGFyZHdhcmUKKwlyZWdpc3RlcnMgLyBETUEgYnVmZmVycy4gIC0+dGZfcmVhZCgpIGlzIGNhbGxlZCB0byByZWFkIHRoZQorCWhhcmR3YXJlIHJlZ2lzdGVycyAvIERNQSBidWZmZXJzLCB0byBvYnRhaW4gdGhlIGN1cnJlbnQgc2V0IG9mCisJdGFza2ZpbGUgcmVnaXN0ZXIgdmFsdWVzLgorCU1vc3QgZHJpdmVycyBmb3IgdGFza2ZpbGUtYmFzZWQgaGFyZHdhcmUgKFBJTyBvciBNTUlPKSB1c2UKKwlhdGFfc2ZmX3RmX2xvYWQoKSBhbmQgYXRhX3NmZl90Zl9yZWFkKCkgZm9yIHRoZXNlIGhvb2tzLgorCTwvcGFyYT4KKworCTwvc2VjdDI+CisKKwk8c2VjdDI+PHRpdGxlPlBJTyBkYXRhIHJlYWQvd3JpdGU8L3RpdGxlPgorCTxwcm9ncmFtbGlzdGluZz4KK3ZvaWQgKCpzZmZfZGF0YV94ZmVyKSAoc3RydWN0IGF0YV9kZXZpY2UgKiwgdW5zaWduZWQgY2hhciAqLCB1bnNpZ25lZCBpbnQsIGludCk7CisJPC9wcm9ncmFtbGlzdGluZz4KKworCTxwYXJhPgorQWxsIGJtZG1hLXN0eWxlIGRyaXZlcnMgbXVzdCBpbXBsZW1lbnQgdGhpcyBob29rLiAgVGhpcyBpcyB0aGUgbG93LWxldmVsCitvcGVyYXRpb24gdGhhdCBhY3R1YWxseSBjb3BpZXMgdGhlIGRhdGEgYnl0ZXMgZHVyaW5nIGEgUElPIGRhdGEKK3RyYW5zZmVyLgorVHlwaWNhbGx5IHRoZSBkcml2ZXIgd2lsbCBjaG9vc2Ugb25lIG9mIGF0YV9zZmZfZGF0YV94ZmVyX25vaXJxKCksCithdGFfc2ZmX2RhdGFfeGZlcigpLCBvciBhdGFfc2ZmX2RhdGFfeGZlcjMyKCkuCisJPC9wYXJhPgorCisJPC9zZWN0Mj4KKworCTxzZWN0Mj48dGl0bGU+QVRBIGNvbW1hbmQgZXhlY3V0ZTwvdGl0bGU+CisJPHByb2dyYW1saXN0aW5nPgordm9pZCAoKnNmZl9leGVjX2NvbW1hbmQpKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHN0cnVjdCBhdGFfdGFza2ZpbGUgKnRmKTsKKwk8L3Byb2dyYW1saXN0aW5nPgorCisJPHBhcmE+CisJY2F1c2VzIGFuIEFUQSBjb21tYW5kLCBwcmV2aW91c2x5IGxvYWRlZCB3aXRoCisJLT50Zl9sb2FkKCksIHRvIGJlIGluaXRpYXRlZCBpbiBoYXJkd2FyZS4KKwlNb3N0IGRyaXZlcnMgZm9yIHRhc2tmaWxlLWJhc2VkIGhhcmR3YXJlIHVzZSBhdGFfc2ZmX2V4ZWNfY29tbWFuZCgpCisJZm9yIHRoaXMgaG9vay4KKwk8L3BhcmE+CisKKwk8L3NlY3QyPgorCisJPHNlY3QyPjx0aXRsZT5QZXItY21kIEFUQVBJIERNQSBjYXBhYmlsaXRpZXMgZmlsdGVyPC90aXRsZT4KKwk8cHJvZ3JhbWxpc3Rpbmc+CitpbnQgKCpjaGVja19hdGFwaV9kbWEpIChzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKTsKKwk8L3Byb2dyYW1saXN0aW5nPgorCisJPHBhcmE+CitBbGxvdyBsb3ctbGV2ZWwgZHJpdmVyIHRvIGZpbHRlciBBVEEgUEFDS0VUIGNvbW1hbmRzLCByZXR1cm5pbmcgYSBzdGF0dXMKK2luZGljYXRpbmcgd2hldGhlciBvciBub3QgaXQgaXMgT0sgdG8gdXNlIERNQSBmb3IgdGhlIHN1cHBsaWVkIFBBQ0tFVAorY29tbWFuZC4KKwk8L3BhcmE+CisJPHBhcmE+CisJVGhpcyBob29rIG1heSBiZSBzcGVjaWZpZWQgYXMgTlVMTCwgaW4gd2hpY2ggY2FzZSBsaWJhdGEgd2lsbAorCWFzc3VtZSB0aGF0IGF0YXBpIGRtYSBjYW4gYmUgc3VwcG9ydGVkLgorCTwvcGFyYT4KKworCTwvc2VjdDI+CisKKwk8c2VjdDI+PHRpdGxlPlJlYWQgc3BlY2lmaWMgQVRBIHNoYWRvdyByZWdpc3RlcnM8L3RpdGxlPgorCTxwcm9ncmFtbGlzdGluZz4KK3U4ICAgKCpzZmZfY2hlY2tfc3RhdHVzKShzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKK3U4ICAgKCpzZmZfY2hlY2tfYWx0c3RhdHVzKShzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKKwk8L3Byb2dyYW1saXN0aW5nPgorCisJPHBhcmE+CisJUmVhZHMgdGhlIFN0YXR1cy9BbHRTdGF0dXMgQVRBIHNoYWRvdyByZWdpc3RlciBmcm9tCisJaGFyZHdhcmUuICBPbiBzb21lIGhhcmR3YXJlLCByZWFkaW5nIHRoZSBTdGF0dXMgcmVnaXN0ZXIgaGFzCisJdGhlIHNpZGUgZWZmZWN0IG9mIGNsZWFyaW5nIHRoZSBpbnRlcnJ1cHQgY29uZGl0aW9uLgorCU1vc3QgZHJpdmVycyBmb3IgdGFza2ZpbGUtYmFzZWQgaGFyZHdhcmUgdXNlCisJYXRhX3NmZl9jaGVja19zdGF0dXMoKSBmb3IgdGhpcyBob29rLgorCTwvcGFyYT4KKworCTwvc2VjdDI+CisKKwk8c2VjdDI+PHRpdGxlPldyaXRlIHNwZWNpZmljIEFUQSBzaGFkb3cgcmVnaXN0ZXI8L3RpdGxlPgorCTxwcm9ncmFtbGlzdGluZz4KK3ZvaWQgKCpzZmZfc2V0X2RldmN0bCkoc3RydWN0IGF0YV9wb3J0ICphcCwgdTggY3RsKTsKKwk8L3Byb2dyYW1saXN0aW5nPgorCisJPHBhcmE+CisJV3JpdGUgdGhlIGRldmljZSBjb250cm9sIEFUQSBzaGFkb3cgcmVnaXN0ZXIgdG8gdGhlIGhhcmR3YXJlLgorCU1vc3QgZHJpdmVycyBkb24ndCBuZWVkIHRvIGRlZmluZSB0aGlzLgorCTwvcGFyYT4KKworCTwvc2VjdDI+CisKKwk8c2VjdDI+PHRpdGxlPlNlbGVjdCBBVEEgZGV2aWNlIG9uIGJ1czwvdGl0bGU+CisJPHByb2dyYW1saXN0aW5nPgordm9pZCAoKnNmZl9kZXZfc2VsZWN0KShzdHJ1Y3QgYXRhX3BvcnQgKmFwLCB1bnNpZ25lZCBpbnQgZGV2aWNlKTsKKwk8L3Byb2dyYW1saXN0aW5nPgorCisJPHBhcmE+CisJSXNzdWVzIHRoZSBsb3ctbGV2ZWwgaGFyZHdhcmUgY29tbWFuZChzKSB0aGF0IGNhdXNlcyBvbmUgb2YgTgorCWhhcmR3YXJlIGRldmljZXMgdG8gYmUgY29uc2lkZXJlZCAnc2VsZWN0ZWQnIChhY3RpdmUgYW5kCisJYXZhaWxhYmxlIGZvciB1c2UpIG9uIHRoZSBBVEEgYnVzLiAgVGhpcyBnZW5lcmFsbHkgaGFzIG5vCisJbWVhbmluZyBvbiBGSVMtYmFzZWQgZGV2aWNlcy4KKwk8L3BhcmE+CisJPHBhcmE+CisJTW9zdCBkcml2ZXJzIGZvciB0YXNrZmlsZS1iYXNlZCBoYXJkd2FyZSB1c2UKKwlhdGFfc2ZmX2Rldl9zZWxlY3QoKSBmb3IgdGhpcyBob29rLgorCTwvcGFyYT4KKworCTwvc2VjdDI+CisKKwk8c2VjdDI+PHRpdGxlPlByaXZhdGUgdHVuaW5nIG1ldGhvZDwvdGl0bGU+CisJPHByb2dyYW1saXN0aW5nPgordm9pZCAoKnNldF9tb2RlKSAoc3RydWN0IGF0YV9wb3J0ICphcCk7CisJPC9wcm9ncmFtbGlzdGluZz4KKworCTxwYXJhPgorCUJ5IGRlZmF1bHQgbGliYXRhIHBlcmZvcm1zIGRyaXZlIGFuZCBjb250cm9sbGVyIHR1bmluZyBpbgorCWFjY29yZGFuY2Ugd2l0aCB0aGUgQVRBIHRpbWluZyBydWxlcyBhbmQgYWxzbyBhcHBsaWVzIGJsYWNrbGlzdHMKKwlhbmQgY2FibGUgbGltaXRzLiBTb21lIGNvbnRyb2xsZXJzIG5lZWQgc3BlY2lhbCBoYW5kbGluZyBhbmQgaGF2ZQorCWN1c3RvbSB0dW5pbmcgcnVsZXMsIHR5cGljYWxseSByYWlkIGNvbnRyb2xsZXJzIHRoYXQgdXNlIEFUQQorCWNvbW1hbmRzIGJ1dCBkbyBub3QgYWN0dWFsbHkgZG8gZHJpdmUgdGltaW5nLgorCTwvcGFyYT4KKworCTx3YXJuaW5nPgorCTxwYXJhPgorCVRoaXMgaG9vayBzaG91bGQgbm90IGJlIHVzZWQgdG8gcmVwbGFjZSB0aGUgc3RhbmRhcmQgY29udHJvbGxlcgorCXR1bmluZyBsb2dpYyB3aGVuIGEgY29udHJvbGxlciBoYXMgcXVpcmtzLiBSZXBsYWNpbmcgdGhlIGRlZmF1bHQKKwl0dW5pbmcgbG9naWMgaW4gdGhhdCBjYXNlIHdvdWxkIGJ5cGFzcyBoYW5kbGluZyBmb3IgZHJpdmUgYW5kCisJYnJpZGdlIHF1aXJrcyB0aGF0IG1heSBiZSBpbXBvcnRhbnQgdG8gZGF0YSByZWxpYWJpbGl0eS4gSWYgYQorCWNvbnRyb2xsZXIgbmVlZHMgdG8gZmlsdGVyIHRoZSBtb2RlIHNlbGVjdGlvbiBpdCBzaG91bGQgdXNlIHRoZQorCW1vZGVfZmlsdGVyIGhvb2sgaW5zdGVhZC4KKwk8L3BhcmE+CisJPC93YXJuaW5nPgorCisJPC9zZWN0Mj4KKworCTxzZWN0Mj48dGl0bGU+Q29udHJvbCBQQ0kgSURFIEJNRE1BIGVuZ2luZTwvdGl0bGU+CisJPHByb2dyYW1saXN0aW5nPgordm9pZCAoKmJtZG1hX3NldHVwKSAoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyk7Cit2b2lkICgqYm1kbWFfc3RhcnQpIChzdHJ1Y3QgYXRhX3F1ZXVlZF9jbWQgKnFjKTsKK3ZvaWQgKCpibWRtYV9zdG9wKSAoc3RydWN0IGF0YV9wb3J0ICphcCk7Cit1OCAgICgqYm1kbWFfc3RhdHVzKSAoc3RydWN0IGF0YV9wb3J0ICphcCk7CisJPC9wcm9ncmFtbGlzdGluZz4KKworCTxwYXJhPgorV2hlbiBzZXR0aW5nIHVwIGFuIElERSBCTURNQSB0cmFuc2FjdGlvbiwgdGhlc2UgaG9va3MgYXJtCisoLT5ibWRtYV9zZXR1cCksIGZpcmUgKC0+Ym1kbWFfc3RhcnQpLCBhbmQgaGFsdCAoLT5ibWRtYV9zdG9wKQordGhlIGhhcmR3YXJlJ3MgRE1BIGVuZ2luZS4gIC0+Ym1kbWFfc3RhdHVzIGlzIHVzZWQgdG8gcmVhZCB0aGUgc3RhbmRhcmQKK1BDSSBJREUgRE1BIFN0YXR1cyByZWdpc3Rlci4KKwk8L3BhcmE+CisKKwk8cGFyYT4KK1RoZXNlIGhvb2tzIGFyZSB0eXBpY2FsbHkgZWl0aGVyIG5vLW9wcywgb3Igc2ltcGx5IG5vdCBpbXBsZW1lbnRlZCwgaW4KK0ZJUy1iYXNlZCBkcml2ZXJzLgorCTwvcGFyYT4KKwk8cGFyYT4KK01vc3QgbGVnYWN5IElERSBkcml2ZXJzIHVzZSBhdGFfYm1kbWFfc2V0dXAoKSBmb3IgdGhlIGJtZG1hX3NldHVwKCkKK2hvb2suICBhdGFfYm1kbWFfc2V0dXAoKSB3aWxsIHdyaXRlIHRoZSBwb2ludGVyIHRvIHRoZSBQUkQgdGFibGUgdG8KK3RoZSBJREUgUFJEIFRhYmxlIEFkZHJlc3MgcmVnaXN0ZXIsIGVuYWJsZSBETUEgaW4gdGhlIERNQSBDb21tYW5kCityZWdpc3RlciwgYW5kIGNhbGwgZXhlY19jb21tYW5kKCkgdG8gYmVnaW4gdGhlIHRyYW5zZmVyLgorCTwvcGFyYT4KKwk8cGFyYT4KK01vc3QgbGVnYWN5IElERSBkcml2ZXJzIHVzZSBhdGFfYm1kbWFfc3RhcnQoKSBmb3IgdGhlIGJtZG1hX3N0YXJ0KCkKK2hvb2suICBhdGFfYm1kbWFfc3RhcnQoKSB3aWxsIHdyaXRlIHRoZSBBVEFfRE1BX1NUQVJUIGZsYWcgdG8gdGhlIERNQQorQ29tbWFuZCByZWdpc3Rlci4KKwk8L3BhcmE+CisJPHBhcmE+CitNYW55IGxlZ2FjeSBJREUgZHJpdmVycyB1c2UgYXRhX2JtZG1hX3N0b3AoKSBmb3IgdGhlIGJtZG1hX3N0b3AoKQoraG9vay4gIGF0YV9ibWRtYV9zdG9wKCkgY2xlYXJzIHRoZSBBVEFfRE1BX1NUQVJUIGZsYWcgaW4gdGhlIERNQQorY29tbWFuZCByZWdpc3Rlci4KKwk8L3BhcmE+CisJPHBhcmE+CitNYW55IGxlZ2FjeSBJREUgZHJpdmVycyB1c2UgYXRhX2JtZG1hX3N0YXR1cygpIGFzIHRoZSBibWRtYV9zdGF0dXMoKSBob29rLgorCTwvcGFyYT4KKworCTwvc2VjdDI+CisKKwk8c2VjdDI+PHRpdGxlPkhpZ2gtbGV2ZWwgdGFza2ZpbGUgaG9va3M8L3RpdGxlPgorCTxwcm9ncmFtbGlzdGluZz4KK3ZvaWQgKCpxY19wcmVwKSAoc3RydWN0IGF0YV9xdWV1ZWRfY21kICpxYyk7CitpbnQgKCpxY19pc3N1ZSkgKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpOworCTwvcHJvZ3JhbWxpc3Rpbmc+CisKKwk8cGFyYT4KKwlIaWdoZXItbGV2ZWwgaG9va3MsIHRoZXNlIHR3byBob29rcyBjYW4gcG90ZW50aWFsbHkgc3VwZXJjZWRlCisJc2V2ZXJhbCBvZiB0aGUgYWJvdmUgdGFza2ZpbGUvRE1BIGVuZ2luZSBob29rcy4gIC0+cWNfcHJlcCBpcworCWNhbGxlZCBhZnRlciB0aGUgYnVmZmVycyBoYXZlIGJlZW4gRE1BLW1hcHBlZCwgYW5kIGlzIHR5cGljYWxseQorCXVzZWQgdG8gcG9wdWxhdGUgdGhlIGhhcmR3YXJlJ3MgRE1BIHNjYXR0ZXItZ2F0aGVyIHRhYmxlLgorCU1vc3QgZHJpdmVycyB1c2UgdGhlIHN0YW5kYXJkIGF0YV9xY19wcmVwKCkgaGVscGVyIGZ1bmN0aW9uLCBidXQKKwltb3JlIGFkdmFuY2VkIGRyaXZlcnMgcm9sbCB0aGVpciBvd24uCisJPC9wYXJhPgorCTxwYXJhPgorCS0+cWNfaXNzdWUgaXMgdXNlZCB0byBtYWtlIGEgY29tbWFuZCBhY3RpdmUsIG9uY2UgdGhlIGhhcmR3YXJlCisJYW5kIFMvRyB0YWJsZXMgaGF2ZSBiZWVuIHByZXBhcmVkLiAgSURFIEJNRE1BIGRyaXZlcnMgdXNlIHRoZQorCWhlbHBlciBmdW5jdGlvbiBhdGFfcWNfaXNzdWVfcHJvdCgpIGZvciB0YXNrZmlsZSBwcm90b2NvbC1iYXNlZAorCWRpc3BhdGNoLiAgTW9yZSBhZHZhbmNlZCBkcml2ZXJzIGltcGxlbWVudCB0aGVpciBvd24gLT5xY19pc3N1ZS4KKwk8L3BhcmE+CisJPHBhcmE+CisJYXRhX3FjX2lzc3VlX3Byb3QoKSBjYWxscyAtPnRmX2xvYWQoKSwgLT5ibWRtYV9zZXR1cCgpLCBhbmQKKwktPmJtZG1hX3N0YXJ0KCkgYXMgbmVjZXNzYXJ5IHRvIGluaXRpYXRlIGEgdHJhbnNmZXIuCisJPC9wYXJhPgorCisJPC9zZWN0Mj4KKworCTxzZWN0Mj48dGl0bGU+RXhjZXB0aW9uIGFuZCBwcm9iZSBoYW5kbGluZyAoRUgpPC90aXRsZT4KKwk8cHJvZ3JhbWxpc3Rpbmc+Cit2b2lkICgqZW5nX3RpbWVvdXQpIChzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKK3ZvaWQgKCpwaHlfcmVzZXQpIChzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKKwk8L3Byb2dyYW1saXN0aW5nPgorCisJPHBhcmE+CitEZXByZWNhdGVkLiAgVXNlIC0+ZXJyb3JfaGFuZGxlcigpIGluc3RlYWQuCisJPC9wYXJhPgorCisJPHByb2dyYW1saXN0aW5nPgordm9pZCAoKmZyZWV6ZSkgKHN0cnVjdCBhdGFfcG9ydCAqYXApOwordm9pZCAoKnRoYXcpIChzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKKwk8L3Byb2dyYW1saXN0aW5nPgorCisJPHBhcmE+CithdGFfcG9ydF9mcmVlemUoKSBpcyBjYWxsZWQgd2hlbiBIU00gdmlvbGF0aW9ucyBvciBzb21lIG90aGVyCitjb25kaXRpb24gZGlzcnVwdHMgbm9ybWFsIG9wZXJhdGlvbiBvZiB0aGUgcG9ydC4gIEEgZnJvemVuIHBvcnQKK2lzIG5vdCBhbGxvd2VkIHRvIHBlcmZvcm0gYW55IG9wZXJhdGlvbiB1bnRpbCB0aGUgcG9ydCBpcwordGhhd2VkLCB3aGljaCB1c3VhbGx5IGZvbGxvd3MgYSBzdWNjZXNzZnVsIHJlc2V0LgorCTwvcGFyYT4KKworCTxwYXJhPgorVGhlIG9wdGlvbmFsIC0+ZnJlZXplKCkgY2FsbGJhY2sgY2FuIGJlIHVzZWQgZm9yIGZyZWV6aW5nIHRoZSBwb3J0CitoYXJkd2FyZS13aXNlIChlLmcuIG1hc2sgaW50ZXJydXB0IGFuZCBzdG9wIERNQSBlbmdpbmUpLiAgSWYgYQorcG9ydCBjYW5ub3QgYmUgZnJvemVuIGhhcmR3YXJlLXdpc2UsIHRoZSBpbnRlcnJ1cHQgaGFuZGxlcgorbXVzdCBhY2sgYW5kIGNsZWFyIGludGVycnVwdHMgdW5jb25kaXRpb25hbGx5IHdoaWxlIHRoZSBwb3J0CitpcyBmcm96ZW4uCisJPC9wYXJhPgorCTxwYXJhPgorVGhlIG9wdGlvbmFsIC0+dGhhdygpIGNhbGxiYWNrIGlzIGNhbGxlZCB0byBwZXJmb3JtIHRoZSBvcHBvc2l0ZSBvZiAtPmZyZWV6ZSgpOgorcHJlcGFyZSB0aGUgcG9ydCBmb3Igbm9ybWFsIG9wZXJhdGlvbiBvbmNlIGFnYWluLiAgVW5tYXNrIGludGVycnVwdHMsCitzdGFydCBETUEgZW5naW5lLCBldGMuCisJPC9wYXJhPgorCisJPHByb2dyYW1saXN0aW5nPgordm9pZCAoKmVycm9yX2hhbmRsZXIpIChzdHJ1Y3QgYXRhX3BvcnQgKmFwKTsKKwk8L3Byb2dyYW1saXN0aW5nPgorCisJPHBhcmE+CistPmVycm9yX2hhbmRsZXIoKSBpcyBhIGRyaXZlcidzIGhvb2sgaW50byBwcm9iZSwgaG90cGx1ZywgYW5kIHJlY292ZXJ5CithbmQgb3RoZXIgZXhjZXB0aW9uYWwgY29uZGl0aW9ucy4gIFRoZSBwcmltYXJ5IHJlc3BvbnNpYmlsaXR5IG9mIGFuCitpbXBsZW1lbnRhdGlvbiBpcyB0byBjYWxsIGF0YV9kb19laCgpIG9yIGF0YV9ibWRtYV9kcml2ZV9laCgpIHdpdGggYSBzZXQKK29mIEVIIGhvb2tzIGFzIGFyZ3VtZW50czoKKwk8L3BhcmE+CisKKwk8cGFyYT4KKydwcmVyZXNldCcgaG9vayAobWF5IGJlIE5VTEwpIGlzIGNhbGxlZCBkdXJpbmcgYW4gRUggcmVzZXQsIGJlZm9yZSBhbnkgb3RoZXIgYWN0aW9ucworYXJlIHRha2VuLgorCTwvcGFyYT4KKworCTxwYXJhPgorJ3Bvc3RyZXNldCcgaG9vayAobWF5IGJlIE5VTEwpIGlzIGNhbGxlZCBhZnRlciB0aGUgRUggcmVzZXQgaXMgcGVyZm9ybWVkLiAgQmFzZWQgb24KK2V4aXN0aW5nIGNvbmRpdGlvbnMsIHNldmVyaXR5IG9mIHRoZSBwcm9ibGVtLCBhbmQgaGFyZHdhcmUgY2FwYWJpbGl0aWVzLAorCTwvcGFyYT4KKworCTxwYXJhPgorRWl0aGVyICdzb2Z0cmVzZXQnIChtYXkgYmUgTlVMTCkgb3IgJ2hhcmRyZXNldCcgKG1heSBiZSBOVUxMKSB3aWxsIGJlCitjYWxsZWQgdG8gcGVyZm9ybSB0aGUgbG93LWxldmVsIEVIIHJlc2V0LgorCTwvcGFyYT4KKworCTxwcm9ncmFtbGlzdGluZz4KK3ZvaWQgKCpwb3N0X2ludGVybmFsX2NtZCkgKHN0cnVjdCBhdGFfcXVldWVkX2NtZCAqcWMpOworCTwvcHJvZ3JhbWxpc3Rpbmc+CisKKwk8cGFyYT4KK1BlcmZvcm0gYW55IGhhcmR3YXJlLXNwZWNpZmljIGFjdGlvbnMgbmVjZXNzYXJ5IHRvIGZpbmlzaCBwcm9jZXNzaW5nCithZnRlciBleGVjdXRpbmcgYSBwcm9iZS10aW1lIG9yIEVILXRpbWUgY29tbWFuZCB2aWEgYXRhX2V4ZWNfaW50ZXJuYWwoKS4KKwk8L3BhcmE+CisKKwk8L3NlY3QyPgorCisJPHNlY3QyPjx0aXRsZT5IYXJkd2FyZSBpbnRlcnJ1cHQgaGFuZGxpbmc8L3RpdGxlPgorCTxwcm9ncmFtbGlzdGluZz4KK2lycXJldHVybl90ICgqaXJxX2hhbmRsZXIpKGludCwgdm9pZCAqLCBzdHJ1Y3QgcHRfcmVncyAqKTsKK3ZvaWQgKCppcnFfY2xlYXIpIChzdHJ1Y3QgYXRhX3BvcnQgKik7CisJPC9wcm9ncmFtbGlzdGluZz4KKworCTxwYXJhPgorCS0+aXJxX2hhbmRsZXIgaXMgdGhlIGludGVycnVwdCBoYW5kbGluZyByb3V0aW5lIHJlZ2lzdGVyZWQgd2l0aAorCXRoZSBzeXN0ZW0sIGJ5IGxpYmF0YS4gIC0+aXJxX2NsZWFyIGlzIGNhbGxlZCBkdXJpbmcgcHJvYmUganVzdAorCWJlZm9yZSB0aGUgaW50ZXJydXB0IGhhbmRsZXIgaXMgcmVnaXN0ZXJlZCwgdG8gYmUgc3VyZSBoYXJkd2FyZQorCWlzIHF1aWV0LgorCTwvcGFyYT4KKwk8cGFyYT4KKwlUaGUgc2Vjb25kIGFyZ3VtZW50LCBkZXZfaW5zdGFuY2UsIHNob3VsZCBiZSBjYXN0IHRvIGEgcG9pbnRlcgorCXRvIHN0cnVjdCBhdGFfaG9zdF9zZXQuCisJPC9wYXJhPgorCTxwYXJhPgorCU1vc3QgbGVnYWN5IElERSBkcml2ZXJzIHVzZSBhdGFfc2ZmX2ludGVycnVwdCgpIGZvciB0aGUKKwlpcnFfaGFuZGxlciBob29rLCB3aGljaCBzY2FucyBhbGwgcG9ydHMgaW4gdGhlIGhvc3Rfc2V0LAorCWRldGVybWluZXMgd2hpY2ggcXVldWVkIGNvbW1hbmQgd2FzIGFjdGl2ZSAoaWYgYW55KSwgYW5kIGNhbGxzCisJYXRhX3NmZl9ob3N0X2ludHIoYXAscWMpLgorCTwvcGFyYT4KKwk8cGFyYT4KKwlNb3N0IGxlZ2FjeSBJREUgZHJpdmVycyB1c2UgYXRhX3NmZl9pcnFfY2xlYXIoKSBmb3IgdGhlCisJaXJxX2NsZWFyKCkgaG9vaywgd2hpY2ggc2ltcGx5IGNsZWFycyB0aGUgaW50ZXJydXB0IGFuZCBlcnJvcgorCWZsYWdzIGluIHRoZSBETUEgc3RhdHVzIHJlZ2lzdGVyLgorCTwvcGFyYT4KKworCTwvc2VjdDI+CisKKwk8c2VjdDI+PHRpdGxlPlNBVEEgcGh5IHJlYWQvd3JpdGU8L3RpdGxlPgorCTxwcm9ncmFtbGlzdGluZz4KK2ludCAoKnNjcl9yZWFkKSAoc3RydWN0IGF0YV9wb3J0ICphcCwgdW5zaWduZWQgaW50IHNjX3JlZywKKwkJIHUzMiAqdmFsKTsKK2ludCAoKnNjcl93cml0ZSkgKHN0cnVjdCBhdGFfcG9ydCAqYXAsIHVuc2lnbmVkIGludCBzY19yZWcsCisgICAgICAgICAgICAgICAgICAgdTMyIHZhbCk7CisJPC9wcm9ncmFtbGlzdGluZz4KKworCTxwYXJhPgorCVJlYWQgYW5kIHdyaXRlIHN0YW5kYXJkIFNBVEEgcGh5IHJlZ2lzdGVycy4gIEN1cnJlbnRseSBvbmx5IHVzZWQKKwlpZiAtPnBoeV9yZXNldCBob29rIGNhbGxlZCB0aGUgc2F0YV9waHlfcmVzZXQoKSBoZWxwZXIgZnVuY3Rpb24uCisJc2NfcmVnIGlzIG9uZSBvZiBTQ1JfU1RBVFVTLCBTQ1JfQ09OVFJPTCwgU0NSX0VSUk9SLCBvciBTQ1JfQUNUSVZFLgorCTwvcGFyYT4KKworCTwvc2VjdDI+CisKKwk8c2VjdDI+PHRpdGxlPkluaXQgYW5kIHNodXRkb3duPC90aXRsZT4KKwk8cHJvZ3JhbWxpc3Rpbmc+CitpbnQgKCpwb3J0X3N0YXJ0KSAoc3RydWN0IGF0YV9wb3J0ICphcCk7Cit2b2lkICgqcG9ydF9zdG9wKSAoc3RydWN0IGF0YV9wb3J0ICphcCk7Cit2b2lkICgqaG9zdF9zdG9wKSAoc3RydWN0IGF0YV9ob3N0X3NldCAqaG9zdF9zZXQpOworCTwvcHJvZ3JhbWxpc3Rpbmc+CisKKwk8cGFyYT4KKwktPnBvcnRfc3RhcnQoKSBpcyBjYWxsZWQganVzdCBhZnRlciB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGZvciBlYWNoCisJcG9ydCBhcmUgaW5pdGlhbGl6ZWQuICBUeXBpY2FsbHkgdGhpcyBpcyB1c2VkIHRvIGFsbG9jIHBlci1wb3J0CisJRE1BIGJ1ZmZlcnMgLyB0YWJsZXMgLyByaW5ncywgZW5hYmxlIERNQSBlbmdpbmVzLCBhbmQgc2ltaWxhcgorCXRhc2tzLiAgU29tZSBkcml2ZXJzIGFsc28gdXNlIHRoaXMgZW50cnkgcG9pbnQgYXMgYSBjaGFuY2UgdG8KKwlhbGxvY2F0ZSBkcml2ZXItcHJpdmF0ZSBtZW1vcnkgZm9yIGFwLT5wcml2YXRlX2RhdGEuCisJPC9wYXJhPgorCTxwYXJhPgorCU1hbnkgZHJpdmVycyB1c2UgYXRhX3BvcnRfc3RhcnQoKSBhcyB0aGlzIGhvb2sgb3IgY2FsbAorCWl0IGZyb20gdGhlaXIgb3duIHBvcnRfc3RhcnQoKSBob29rcy4gIGF0YV9wb3J0X3N0YXJ0KCkKKwlhbGxvY2F0ZXMgc3BhY2UgZm9yIGEgbGVnYWN5IElERSBQUkQgdGFibGUgYW5kIHJldHVybnMuCisJPC9wYXJhPgorCTxwYXJhPgorCS0+cG9ydF9zdG9wKCkgaXMgY2FsbGVkIGFmdGVyIC0+aG9zdF9zdG9wKCkuICBJdHMgc29sZSBmdW5jdGlvbgorCWlzIHRvIHJlbGVhc2UgRE1BL21lbW9yeSByZXNvdXJjZXMsIG5vdyB0aGF0IHRoZXkgYXJlIG5vIGxvbmdlcgorCWFjdGl2ZWx5IGJlaW5nIHVzZWQuICBNYW55IGRyaXZlcnMgYWxzbyBmcmVlIGRyaXZlci1wcml2YXRlCisJZGF0YSBmcm9tIHBvcnQgYXQgdGhpcyB0aW1lLgorCTwvcGFyYT4KKwk8cGFyYT4KKwktPmhvc3Rfc3RvcCgpIGlzIGNhbGxlZCBhZnRlciBhbGwgLT5wb3J0X3N0b3AoKSBjYWxscworaGF2ZSBjb21wbGV0ZWQuICBUaGUgaG9vayBtdXN0IGZpbmFsaXplIGhhcmR3YXJlIHNodXRkb3duLCByZWxlYXNlIERNQQorYW5kIG90aGVyIHJlc291cmNlcywgZXRjLgorCVRoaXMgaG9vayBtYXkgYmUgc3BlY2lmaWVkIGFzIE5VTEwsIGluIHdoaWNoIGNhc2UgaXQgaXMgbm90IGNhbGxlZC4KKwk8L3BhcmE+CisKKwk8L3NlY3QyPgorCisgICAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0ibGliYXRhRUgiPgorICAgICAgICA8dGl0bGU+RXJyb3IgaGFuZGxpbmc8L3RpdGxlPgorCisJPHBhcmE+CisJVGhpcyBjaGFwdGVyIGRlc2NyaWJlcyBob3cgZXJyb3JzIGFyZSBoYW5kbGVkIHVuZGVyIGxpYmF0YS4KKwlSZWFkZXJzIGFyZSBhZHZpc2VkIHRvIHJlYWQgU0NTSSBFSAorCShEb2N1bWVudGF0aW9uL3Njc2kvc2NzaV9laC50eHQpIGFuZCBBVEEgZXhjZXB0aW9ucyBkb2MgZmlyc3QuCisJPC9wYXJhPgorCisJPHNlY3QxPjx0aXRsZT5PcmlnaW5zIG9mIGNvbW1hbmRzPC90aXRsZT4KKwk8cGFyYT4KKwlJbiBsaWJhdGEsIGEgY29tbWFuZCBpcyByZXByZXNlbnRlZCB3aXRoIHN0cnVjdCBhdGFfcXVldWVkX2NtZAorCW9yIHFjLiAgcWMncyBhcmUgcHJlYWxsb2NhdGVkIGR1cmluZyBwb3J0IGluaXRpYWxpemF0aW9uIGFuZAorCXJlcGV0aXRpdmVseSB1c2VkIGZvciBjb21tYW5kIGV4ZWN1dGlvbnMuICBDdXJyZW50bHkgb25seSBvbmUKKwlxYyBpcyBhbGxvY2F0ZWQgcGVyIHBvcnQgYnV0IHlldC10by1iZS1tZXJnZWQgTkNRIGJyYW5jaAorCWFsbG9jYXRlcyBvbmUgZm9yIGVhY2ggdGFnIGFuZCBtYXBzIGVhY2ggcWMgdG8gTkNRIHRhZyAxLXRvLTEuCisJPC9wYXJhPgorCTxwYXJhPgorCWxpYmF0YSBjb21tYW5kcyBjYW4gb3JpZ2luYXRlIGZyb20gdHdvIHNvdXJjZXMgLSBsaWJhdGEgaXRzZWxmCisJYW5kIFNDU0kgbWlkbGF5ZXIuICBsaWJhdGEgaW50ZXJuYWwgY29tbWFuZHMgYXJlIHVzZWQgZm9yCisJaW5pdGlhbGl6YXRpb24gYW5kIGVycm9yIGhhbmRsaW5nLiAgQWxsIG5vcm1hbCBibGsgcmVxdWVzdHMKKwlhbmQgY29tbWFuZHMgZm9yIFNDU0kgZW11bGF0aW9uIGFyZSBwYXNzZWQgYXMgU0NTSSBjb21tYW5kcworCXRocm91Z2ggcXVldWVjb21tYW5kIGNhbGxiYWNrIG9mIFNDU0kgaG9zdCB0ZW1wbGF0ZS4KKwk8L3BhcmE+CisJPC9zZWN0MT4KKworCTxzZWN0MT48dGl0bGU+SG93IGNvbW1hbmRzIGFyZSBpc3N1ZWQ8L3RpdGxlPgorCisJPHZhcmlhYmxlbGlzdD4KKworCTx2YXJsaXN0ZW50cnk+PHRlcm0+SW50ZXJuYWwgY29tbWFuZHM8L3Rlcm0+CisJPGxpc3RpdGVtPgorCTxwYXJhPgorCUZpcnN0LCBxYyBpcyBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkIHVzaW5nCisJYXRhX3FjX25ld19pbml0KCkuICBBbHRob3VnaCBhdGFfcWNfbmV3X2luaXQoKSBkb2Vzbid0CisJaW1wbGVtZW50IGFueSB3YWl0IG9yIHJldHJ5IG1lY2hhbmlzbSB3aGVuIHFjIGlzIG5vdAorCWF2YWlsYWJsZSwgaW50ZXJuYWwgY29tbWFuZHMgYXJlIGN1cnJlbnRseSBpc3N1ZWQgb25seSBkdXJpbmcKKwlpbml0aWFsaXphdGlvbiBhbmQgZXJyb3IgcmVjb3ZlcnksIHNvIG5vIG90aGVyIGNvbW1hbmQgaXMKKwlhY3RpdmUgYW5kIGFsbG9jYXRpb24gaXMgZ3VhcmFudGVlZCB0byBzdWNjZWVkLgorCTwvcGFyYT4KKwk8cGFyYT4KKwlPbmNlIGFsbG9jYXRlZCBxYydzIHRhc2tmaWxlIGlzIGluaXRpYWxpemVkIGZvciB0aGUgY29tbWFuZCB0bworCWJlIGV4ZWN1dGVkLiAgcWMgY3VycmVudGx5IGhhcyB0d28gbWVjaGFuaXNtcyB0byBub3RpZnkKKwljb21wbGV0aW9uLiAgT25lIGlzIHZpYSBxYy0+Y29tcGxldGVfZm4oKSBjYWxsYmFjayBhbmQgdGhlCisJb3RoZXIgaXMgY29tcGxldGlvbiBxYy0+d2FpdGluZy4gIHFjLT5jb21wbGV0ZV9mbigpIGNhbGxiYWNrCisJaXMgdGhlIGFzeW5jaHJvbm91cyBwYXRoIHVzZWQgYnkgbm9ybWFsIFNDU0kgdHJhbnNsYXRlZAorCWNvbW1hbmRzIGFuZCBxYy0+d2FpdGluZyBpcyB0aGUgc3luY2hyb25vdXMgKGlzc3VlciBzbGVlcHMgaW4KKwlwcm9jZXNzIGNvbnRleHQpIHBhdGggdXNlZCBieSBpbnRlcm5hbCBjb21tYW5kcy4KKwk8L3BhcmE+CisJPHBhcmE+CisJT25jZSBpbml0aWFsaXphdGlvbiBpcyBjb21wbGV0ZSwgaG9zdF9zZXQgbG9jayBpcyBhY3F1aXJlZAorCWFuZCB0aGUgcWMgaXMgaXNzdWVkLgorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCTwvdmFybGlzdGVudHJ5PgorCisJPHZhcmxpc3RlbnRyeT48dGVybT5TQ1NJIGNvbW1hbmRzPC90ZXJtPgorCTxsaXN0aXRlbT4KKwk8cGFyYT4KKwlBbGwgbGliYXRhIGRyaXZlcnMgdXNlIGF0YV9zY3NpX3F1ZXVlY21kKCkgYXMKKwlob3N0dC0+cXVldWVjb21tYW5kIGNhbGxiYWNrLiAgc2NtZHMgY2FuIGVpdGhlciBiZSBzaW11bGF0ZWQKKwlvciB0cmFuc2xhdGVkLiAgTm8gcWMgaXMgaW52b2x2ZWQgaW4gcHJvY2Vzc2luZyBhIHNpbXVsYXRlZAorCXNjbWQuICBUaGUgcmVzdWx0IGlzIGNvbXB1dGVkIHJpZ2h0IGF3YXkgYW5kIHRoZSBzY21kIGlzCisJY29tcGxldGVkLgorCTwvcGFyYT4KKwk8cGFyYT4KKwlGb3IgYSB0cmFuc2xhdGVkIHNjbWQsIGF0YV9xY19uZXdfaW5pdCgpIGlzIGludm9rZWQgdG8KKwlhbGxvY2F0ZSBhIHFjIGFuZCB0aGUgc2NtZCBpcyB0cmFuc2xhdGVkIGludG8gdGhlIHFjLiAgU0NTSQorCW1pZGxheWVyJ3MgY29tcGxldGlvbiBub3RpZmljYXRpb24gZnVuY3Rpb24gcG9pbnRlciBpcyBzdG9yZWQKKwlpbnRvIHFjLT5zY3NpZG9uZS4KKwk8L3BhcmE+CisJPHBhcmE+CisJcWMtPmNvbXBsZXRlX2ZuKCkgY2FsbGJhY2sgaXMgdXNlZCBmb3IgY29tcGxldGlvbgorCW5vdGlmaWNhdGlvbi4gIEFUQSBjb21tYW5kcyB1c2UgYXRhX3Njc2lfcWNfY29tcGxldGUoKSB3aGlsZQorCUFUQVBJIGNvbW1hbmRzIHVzZSBhdGFwaV9xY19jb21wbGV0ZSgpLiAgQm90aCBmdW5jdGlvbnMgZW5kIHVwCisJY2FsbGluZyBxYy0+c2NzaWRvbmUgdG8gbm90aWZ5IHVwcGVyIGxheWVyIHdoZW4gdGhlIHFjIGlzCisJZmluaXNoZWQuICBBZnRlciB0cmFuc2xhdGlvbiBpcyBjb21wbGV0ZWQsIHRoZSBxYyBpcyBpc3N1ZWQKKwl3aXRoIGF0YV9xY19pc3N1ZSgpLgorCTwvcGFyYT4KKwk8cGFyYT4KKwlOb3RlIHRoYXQgU0NTSSBtaWRsYXllciBpbnZva2VzIGhvc3R0LT5xdWV1ZWNvbW1hbmQgd2hpbGUKKwlob2xkaW5nIGhvc3Rfc2V0IGxvY2ssIHNvIGFsbCBhYm92ZSBvY2N1ciB3aGlsZSBob2xkaW5nCisJaG9zdF9zZXQgbG9jay4KKwk8L3BhcmE+CisJPC9saXN0aXRlbT4KKwk8L3Zhcmxpc3RlbnRyeT4KKworCTwvdmFyaWFibGVsaXN0PgorCTwvc2VjdDE+CisKKwk8c2VjdDE+PHRpdGxlPkhvdyBjb21tYW5kcyBhcmUgcHJvY2Vzc2VkPC90aXRsZT4KKwk8cGFyYT4KKwlEZXBlbmRpbmcgb24gd2hpY2ggcHJvdG9jb2wgYW5kIHdoaWNoIGNvbnRyb2xsZXIgYXJlIHVzZWQsCisJY29tbWFuZHMgYXJlIHByb2Nlc3NlZCBkaWZmZXJlbnRseS4gIEZvciB0aGUgcHVycG9zZSBvZgorCWRpc2N1c3Npb24sIGEgY29udHJvbGxlciB3aGljaCB1c2VzIHRhc2tmaWxlIGludGVyZmFjZSBhbmQgYWxsCisJc3RhbmRhcmQgY2FsbGJhY2tzIGlzIGFzc3VtZWQuCisJPC9wYXJhPgorCTxwYXJhPgorCUN1cnJlbnRseSA2IEFUQSBjb21tYW5kIHByb3RvY29scyBhcmUgdXNlZC4gIFRoZXkgY2FuIGJlCisJc29ydGVkIGludG8gdGhlIGZvbGxvd2luZyBmb3VyIGNhdGVnb3JpZXMgYWNjb3JkaW5nIHRvIGhvdworCXRoZXkgYXJlIHByb2Nlc3NlZC4KKwk8L3BhcmE+CisKKwk8dmFyaWFibGVsaXN0PgorCSAgIDx2YXJsaXN0ZW50cnk+PHRlcm0+QVRBIE5PIERBVEEgb3IgRE1BPC90ZXJtPgorCSAgIDxsaXN0aXRlbT4KKwkgICA8cGFyYT4KKwkgICBBVEFfUFJPVF9OT0RBVEEgYW5kIEFUQV9QUk9UX0RNQSBmYWxsIGludG8gdGhpcyBjYXRlZ29yeS4KKwkgICBUaGVzZSB0eXBlcyBvZiBjb21tYW5kcyBkb24ndCByZXF1aXJlIGFueSBzb2Z0d2FyZQorCSAgIGludGVydmVudGlvbiBvbmNlIGlzc3VlZC4gIERldmljZSB3aWxsIHJhaXNlIGludGVycnVwdCBvbgorCSAgIGNvbXBsZXRpb24uCisJICAgPC9wYXJhPgorCSAgIDwvbGlzdGl0ZW0+CisJICAgPC92YXJsaXN0ZW50cnk+CisKKwkgICA8dmFybGlzdGVudHJ5Pjx0ZXJtPkFUQSBQSU88L3Rlcm0+CisJICAgPGxpc3RpdGVtPgorCSAgIDxwYXJhPgorCSAgIEFUQV9QUk9UX1BJTyBpcyBpbiB0aGlzIGNhdGVnb3J5LiAgbGliYXRhIGN1cnJlbnRseQorCSAgIGltcGxlbWVudHMgUElPIHdpdGggcG9sbGluZy4gIEFUQV9OSUVOIGJpdCBpcyBzZXQgdG8gdHVybgorCSAgIG9mZiBpbnRlcnJ1cHQgYW5kIHBpb190YXNrIG9uIGF0YV93cSBwZXJmb3JtcyBwb2xsaW5nIGFuZAorCSAgIElPLgorCSAgIDwvcGFyYT4KKwkgICA8L2xpc3RpdGVtPgorCSAgIDwvdmFybGlzdGVudHJ5PgorCisJICAgPHZhcmxpc3RlbnRyeT48dGVybT5BVEFQSSBOT0RBVEEgb3IgRE1BPC90ZXJtPgorCSAgIDxsaXN0aXRlbT4KKwkgICA8cGFyYT4KKwkgICBBVEFfUFJPVF9BVEFQSV9OT0RBVEEgYW5kIEFUQV9QUk9UX0FUQVBJX0RNQSBhcmUgaW4gdGhpcworCSAgIGNhdGVnb3J5LiAgcGFja2V0X3Rhc2sgaXMgdXNlZCB0byBwb2xsIEJTWSBiaXQgYWZ0ZXIKKwkgICBpc3N1aW5nIFBBQ0tFVCBjb21tYW5kLiAgT25jZSBCU1kgaXMgdHVybmVkIG9mZiBieSB0aGUKKwkgICBkZXZpY2UsIHBhY2tldF90YXNrIHRyYW5zZmVycyBDREIgYW5kIGhhbmRzIG9mZiBwcm9jZXNzaW5nCisJICAgdG8gaW50ZXJydXB0IGhhbmRsZXIuCisJICAgPC9wYXJhPgorCSAgIDwvbGlzdGl0ZW0+CisJICAgPC92YXJsaXN0ZW50cnk+CisKKwkgICA8dmFybGlzdGVudHJ5Pjx0ZXJtPkFUQVBJIFBJTzwvdGVybT4KKwkgICA8bGlzdGl0ZW0+CisJICAgPHBhcmE+CisJICAgQVRBX1BST1RfQVRBUEkgaXMgaW4gdGhpcyBjYXRlZ29yeS4gIEFUQV9OSUVOIGJpdCBpcyBzZXQKKwkgICBhbmQsIGFzIGluIEFUQVBJIE5PREFUQSBvciBETUEsIHBhY2tldF90YXNrIHN1Ym1pdHMgY2RiLgorCSAgIEhvd2V2ZXIsIGFmdGVyIHN1Ym1pdHRpbmcgY2RiLCBmdXJ0aGVyIHByb2Nlc3NpbmcgKGRhdGEKKwkgICB0cmFuc2ZlcikgaXMgaGFuZGVkIG9mZiB0byBwaW9fdGFzay4KKwkgICA8L3BhcmE+CisJICAgPC9saXN0aXRlbT4KKwkgICA8L3Zhcmxpc3RlbnRyeT4KKwk8L3ZhcmlhYmxlbGlzdD4KKyAgICAgICAgPC9zZWN0MT4KKworCTxzZWN0MT48dGl0bGU+SG93IGNvbW1hbmRzIGFyZSBjb21wbGV0ZWQ8L3RpdGxlPgorCTxwYXJhPgorCU9uY2UgaXNzdWVkLCBhbGwgcWMncyBhcmUgZWl0aGVyIGNvbXBsZXRlZCB3aXRoCisJYXRhX3FjX2NvbXBsZXRlKCkgb3IgdGltZSBvdXQuICBGb3IgY29tbWFuZHMgd2hpY2ggYXJlIGhhbmRsZWQKKwlieSBpbnRlcnJ1cHRzLCBhdGFfaG9zdF9pbnRyKCkgaW52b2tlcyBhdGFfcWNfY29tcGxldGUoKSwgYW5kLAorCWZvciBQSU8gdGFza3MsIHBpb190YXNrIGludm9rZXMgYXRhX3FjX2NvbXBsZXRlKCkuICBJbiBlcnJvcgorCWNhc2VzLCBwYWNrZXRfdGFzayBtYXkgYWxzbyBjb21wbGV0ZSBjb21tYW5kcy4KKwk8L3BhcmE+CisJPHBhcmE+CisJYXRhX3FjX2NvbXBsZXRlKCkgZG9lcyB0aGUgZm9sbG93aW5nLgorCTwvcGFyYT4KKworCTxvcmRlcmVkbGlzdD4KKworCTxsaXN0aXRlbT4KKwk8cGFyYT4KKwlETUEgbWVtb3J5IGlzIHVubWFwcGVkLgorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCTxwYXJhPgorCUFUQV9RQ0ZMQUdfQUNUSVZFIGlzIGNsZWFyZWQgZnJvbSBxYy0+ZmxhZ3MuCisJPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJPHBhcmE+CisJcWMtPmNvbXBsZXRlX2ZuKCkgY2FsbGJhY2sgaXMgaW52b2tlZC4gIElmIHRoZSByZXR1cm4gdmFsdWUgb2YKKwl0aGUgY2FsbGJhY2sgaXMgbm90IHplcm8uICBDb21wbGV0aW9uIGlzIHNob3J0IGNpcmN1aXRlZCBhbmQKKwlhdGFfcWNfY29tcGxldGUoKSByZXR1cm5zLgorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCTxwYXJhPgorCV9fYXRhX3FjX2NvbXBsZXRlKCkgaXMgY2FsbGVkLCB3aGljaCBkb2VzCisJICAgPG9yZGVyZWRsaXN0PgorCisJICAgPGxpc3RpdGVtPgorCSAgIDxwYXJhPgorCSAgIHFjLT5mbGFncyBpcyBjbGVhcmVkIHRvIHplcm8uCisJICAgPC9wYXJhPgorCSAgIDwvbGlzdGl0ZW0+CisKKwkgICA8bGlzdGl0ZW0+CisJICAgPHBhcmE+CisJICAgYXAtPmFjdGl2ZV90YWcgYW5kIHFjLT50YWcgYXJlIHBvaXNvbmVkLgorCSAgIDwvcGFyYT4KKwkgICA8L2xpc3RpdGVtPgorCisJICAgPGxpc3RpdGVtPgorCSAgIDxwYXJhPgorCSAgIHFjLT53YWl0aW5nIGlzIGNsZWFyZWQgJmFtcDsgY29tcGxldGVkIChpbiB0aGF0IG9yZGVyKS4KKwkgICA8L3BhcmE+CisJICAgPC9saXN0aXRlbT4KKworCSAgIDxsaXN0aXRlbT4KKwkgICA8cGFyYT4KKwkgICBxYyBpcyBkZWFsbG9jYXRlZCBieSBjbGVhcmluZyBhcHByb3ByaWF0ZSBiaXQgaW4gYXAtPnFhY3RpdmUuCisJICAgPC9wYXJhPgorCSAgIDwvbGlzdGl0ZW0+CisKKwkgICA8L29yZGVyZWRsaXN0PgorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPC9vcmRlcmVkbGlzdD4KKworCTxwYXJhPgorCVNvLCBpdCBiYXNpY2FsbHkgbm90aWZpZXMgdXBwZXIgbGF5ZXIgYW5kIGRlYWxsb2NhdGVzIHFjLiAgT25lCisJZXhjZXB0aW9uIGlzIHNob3J0LWNpcmN1aXQgcGF0aCBpbiAjMyB3aGljaCBpcyB1c2VkIGJ5CisJYXRhcGlfcWNfY29tcGxldGUoKS4KKwk8L3BhcmE+CisJPHBhcmE+CisJRm9yIGFsbCBub24tQVRBUEkgY29tbWFuZHMsIHdoZXRoZXIgaXQgZmFpbHMgb3Igbm90LCBhbG1vc3QKKwl0aGUgc2FtZSBjb2RlIHBhdGggaXMgdGFrZW4gYW5kIHZlcnkgbGl0dGxlIGVycm9yIGhhbmRsaW5nCisJdGFrZXMgcGxhY2UuICBBIHFjIGlzIGNvbXBsZXRlZCB3aXRoIHN1Y2Nlc3Mgc3RhdHVzIGlmIGl0CisJc3VjY2VlZGVkLCB3aXRoIGZhaWxlZCBzdGF0dXMgb3RoZXJ3aXNlLgorCTwvcGFyYT4KKwk8cGFyYT4KKwlIb3dldmVyLCBmYWlsZWQgQVRBUEkgY29tbWFuZHMgcmVxdWlyZSBtb3JlIGhhbmRsaW5nIGFzCisJUkVRVUVTVCBTRU5TRSBpcyBuZWVkZWQgdG8gYWNxdWlyZSBzZW5zZSBkYXRhLiAgSWYgYW4gQVRBUEkKKwljb21tYW5kIGZhaWxzLCBhdGFfcWNfY29tcGxldGUoKSBpcyBpbnZva2VkIHdpdGggZXJyb3Igc3RhdHVzLAorCXdoaWNoIGluIHR1cm4gaW52b2tlcyBhdGFwaV9xY19jb21wbGV0ZSgpIHZpYQorCXFjLT5jb21wbGV0ZV9mbigpIGNhbGxiYWNrLgorCTwvcGFyYT4KKwk8cGFyYT4KKwlUaGlzIG1ha2VzIGF0YXBpX3FjX2NvbXBsZXRlKCkgc2V0IHNjbWQtPnJlc3VsdCB0bworCVNBTV9TVEFUX0NIRUNLX0NPTkRJVElPTiwgY29tcGxldGUgdGhlIHNjbWQgYW5kIHJldHVybiAxLiAgQXMKKwl0aGUgc2Vuc2UgZGF0YSBpcyBlbXB0eSBidXQgc2NtZC0+cmVzdWx0IGlzIENIRUNLIENPTkRJVElPTiwKKwlTQ1NJIG1pZGxheWVyIHdpbGwgaW52b2tlIEVIIGZvciB0aGUgc2NtZCwgYW5kIHJldHVybmluZyAxCisJbWFrZXMgYXRhX3FjX2NvbXBsZXRlKCkgdG8gcmV0dXJuIHdpdGhvdXQgZGVhbGxvY2F0aW5nIHRoZSBxYy4KKwlUaGlzIGxlYWRzIHVzIHRvIGF0YV9zY3NpX2Vycm9yKCkgd2l0aCBwYXJ0aWFsbHkgY29tcGxldGVkIHFjLgorCTwvcGFyYT4KKworCTwvc2VjdDE+CisKKwk8c2VjdDE+PHRpdGxlPmF0YV9zY3NpX2Vycm9yKCk8L3RpdGxlPgorCTxwYXJhPgorCWF0YV9zY3NpX2Vycm9yKCkgaXMgdGhlIGN1cnJlbnQgdHJhbnNwb3J0dC0+ZWhfc3RyYXRlZ3lfaGFuZGxlcigpCisJZm9yIGxpYmF0YS4gIEFzIGRpc2N1c3NlZCBhYm92ZSwgdGhpcyB3aWxsIGJlIGVudGVyZWQgaW4gdHdvCisJY2FzZXMgLSB0aW1lb3V0IGFuZCBBVEFQSSBlcnJvciBjb21wbGV0aW9uLiAgVGhpcyBmdW5jdGlvbgorCWNhbGxzIGxvdyBsZXZlbCBsaWJhdGEgZHJpdmVyJ3MgZW5nX3RpbWVvdXQoKSBjYWxsYmFjaywgdGhlCisJc3RhbmRhcmQgY2FsbGJhY2sgZm9yIHdoaWNoIGlzIGF0YV9lbmdfdGltZW91dCgpLiAgSXQgY2hlY2tzCisJaWYgYSBxYyBpcyBhY3RpdmUgYW5kIGNhbGxzIGF0YV9xY190aW1lb3V0KCkgb24gdGhlIHFjIGlmIHNvLgorCUFjdHVhbCBlcnJvciBoYW5kbGluZyBvY2N1cnMgaW4gYXRhX3FjX3RpbWVvdXQoKS4KKwk8L3BhcmE+CisJPHBhcmE+CisJSWYgRUggaXMgaW52b2tlZCBmb3IgdGltZW91dCwgYXRhX3FjX3RpbWVvdXQoKSBzdG9wcyBCTURNQSBhbmQKKwljb21wbGV0ZXMgdGhlIHFjLiAgTm90ZSB0aGF0IGFzIHdlJ3JlIGN1cnJlbnRseSBpbiBFSCwgd2UKKwljYW5ub3QgY2FsbCBzY3NpX2RvbmUuICBBcyBkZXNjcmliZWQgaW4gU0NTSSBFSCBkb2MsIGEKKwlyZWNvdmVyZWQgc2NtZCBzaG91bGQgYmUgZWl0aGVyIHJldHJpZWQgd2l0aAorCXNjc2lfcXVldWVfaW5zZXJ0KCkgb3IgZmluaXNoZWQgd2l0aCBzY3NpX2ZpbmlzaF9jb21tYW5kKCkuCisJSGVyZSwgd2Ugb3ZlcnJpZGUgcWMtPnNjc2lkb25lIHdpdGggc2NzaV9maW5pc2hfY29tbWFuZCgpIGFuZAorCWNhbGxzIGF0YV9xY19jb21wbGV0ZSgpLgorCTwvcGFyYT4KKwk8cGFyYT4KKwlJZiBFSCBpcyBpbnZva2VkIGR1ZSB0byBhIGZhaWxlZCBBVEFQSSBxYywgdGhlIHFjIGhlcmUgaXMKKwljb21wbGV0ZWQgYnV0IG5vdCBkZWFsbG9jYXRlZC4gIFRoZSBwdXJwb3NlIG9mIHRoaXMKKwloYWxmLWNvbXBsZXRpb24gaXMgdG8gdXNlIHRoZSBxYyBhcyBwbGFjZSBob2xkZXIgdG8gbWFrZSBFSAorCWNvZGUgcmVhY2ggdGhpcyBwbGFjZS4gIFRoaXMgaXMgYSBiaXQgaGFja2lzaCwgYnV0IGl0IHdvcmtzLgorCTwvcGFyYT4KKwk8cGFyYT4KKwlPbmNlIGNvbnRyb2wgcmVhY2hlcyBoZXJlLCB0aGUgcWMgaXMgZGVhbGxvY2F0ZWQgYnkgaW52b2tpbmcKKwlfX2F0YV9xY19jb21wbGV0ZSgpIGV4cGxpY2l0bHkuICBUaGVuLCBpbnRlcm5hbCBxYyBmb3IgUkVRVUVTVAorCVNFTlNFIGlzIGlzc3VlZC4gIE9uY2Ugc2Vuc2UgZGF0YSBpcyBhY3F1aXJlZCwgc2NtZCBpcworCWZpbmlzaGVkIGJ5IGRpcmVjdGx5IGludm9raW5nIHNjc2lfZmluaXNoX2NvbW1hbmQoKSBvbiB0aGUKKwlzY21kLiAgTm90ZSB0aGF0IGFzIHdlIGFscmVhZHkgaGF2ZSBjb21wbGV0ZWQgYW5kIGRlYWxsb2NhdGVkCisJdGhlIHFjIHdoaWNoIHdhcyBhc3NvY2lhdGVkIHdpdGggdGhlIHNjbWQsIHdlIGRvbid0IG5lZWQKKwl0by9jYW5ub3QgY2FsbCBhdGFfcWNfY29tcGxldGUoKSBhZ2Fpbi4KKwk8L3BhcmE+CisKKwk8L3NlY3QxPgorCisJPHNlY3QxPjx0aXRsZT5Qcm9ibGVtcyB3aXRoIHRoZSBjdXJyZW50IEVIPC90aXRsZT4KKworCTxpdGVtaXplZGxpc3Q+CisKKwk8bGlzdGl0ZW0+CisJPHBhcmE+CisJRXJyb3IgcmVwcmVzZW50YXRpb24gaXMgdG9vIGNydWRlLiAgQ3VycmVudGx5IGFueSBhbmQgYWxsCisJZXJyb3IgY29uZGl0aW9ucyBhcmUgcmVwcmVzZW50ZWQgd2l0aCBBVEEgU1RBVFVTIGFuZCBFUlJPUgorCXJlZ2lzdGVycy4gIEVycm9ycyB3aGljaCBhcmVuJ3QgQVRBIGRldmljZSBlcnJvcnMgYXJlIHRyZWF0ZWQKKwlhcyBBVEEgZGV2aWNlIGVycm9ycyBieSBzZXR0aW5nIEFUQV9FUlIgYml0LiAgQmV0dGVyIGVycm9yCisJZGVzY3JpcHRvciB3aGljaCBjYW4gcHJvcGVybHkgcmVwcmVzZW50IEFUQSBhbmQgb3RoZXIKKwllcnJvcnMvZXhjZXB0aW9ucyBpcyBuZWVkZWQuCisJPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJPHBhcmE+CisJV2hlbiBoYW5kbGluZyB0aW1lb3V0cywgbm8gYWN0aW9uIGlzIHRha2VuIHRvIG1ha2UgZGV2aWNlCisJZm9yZ2V0IGFib3V0IHRoZSB0aW1lZCBvdXQgY29tbWFuZCBhbmQgcmVhZHkgZm9yIG5ldyBjb21tYW5kcy4KKwk8L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwk8cGFyYT4KKwlFSCBoYW5kbGluZyB2aWEgYXRhX3Njc2lfZXJyb3IoKSBpcyBub3QgcHJvcGVybHkgcHJvdGVjdGVkCisJZnJvbSB1c3VhbCBjb21tYW5kIHByb2Nlc3NpbmcuICBPbiBFSCBlbnRyYW5jZSwgdGhlIGRldmljZSBpcworCW5vdCBpbiBxdWllc2NlbnQgc3RhdGUuICBUaW1lZCBvdXQgY29tbWFuZHMgbWF5IHN1Y2NlZWQgb3IKKwlmYWlsIGFueSB0aW1lLiAgcGlvX3Rhc2sgYW5kIGF0YXBpX3Rhc2sgbWF5IHN0aWxsIGJlIHJ1bm5pbmcuCisJPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJPHBhcmE+CisJVG9vIHdlYWsgZXJyb3IgcmVjb3ZlcnkuICBEZXZpY2VzIC8gY29udHJvbGxlcnMgY2F1c2luZyBIU00KKwltaXNtYXRjaCBlcnJvcnMgYW5kIG90aGVyIGVycm9ycyBxdWl0ZSBvZnRlbiByZXF1aXJlIHJlc2V0IHRvCisJcmV0dXJuIHRvIGtub3duIHN0YXRlLiAgQWxzbywgYWR2YW5jZWQgZXJyb3IgaGFuZGxpbmcgaXMKKwluZWNlc3NhcnkgdG8gc3VwcG9ydCBmZWF0dXJlcyBsaWtlIE5DUSBhbmQgaG90cGx1Zy4KKwk8L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwk8cGFyYT4KKwlBVEEgZXJyb3JzIGFyZSBkaXJlY3RseSBoYW5kbGVkIGluIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBhbmQKKwlQSU8gZXJyb3JzIGluIHBpb190YXNrLiAgVGhpcyBpcyBwcm9ibGVtYXRpYyBmb3IgYWR2YW5jZWQKKwllcnJvciBoYW5kbGluZyBmb3IgdGhlIGZvbGxvd2luZyByZWFzb25zLgorCTwvcGFyYT4KKwk8cGFyYT4KKwlGaXJzdCwgYWR2YW5jZWQgZXJyb3IgaGFuZGxpbmcgb2Z0ZW4gcmVxdWlyZXMgY29udGV4dCBhbmQKKwlpbnRlcm5hbCBxYyBleGVjdXRpb24uCisJPC9wYXJhPgorCTxwYXJhPgorCVNlY29uZCwgZXZlbiBhIHNpbXBsZSBmYWlsdXJlIChzYXksIENSQyBlcnJvcikgbmVlZHMKKwlpbmZvcm1hdGlvbiBnYXRoZXJpbmcgYW5kIGNvdWxkIHRyaWdnZXIgY29tcGxleCBlcnJvciBoYW5kbGluZworCShzYXksIHJlc2V0dGluZyAmYW1wOyByZWNvbmZpZ3VyaW5nKS4gIEhhdmluZyBtdWx0aXBsZSBjb2RlCisJcGF0aHMgdG8gZ2F0aGVyIGluZm9ybWF0aW9uLCBlbnRlciBFSCBhbmQgdHJpZ2dlciBhY3Rpb25zCisJbWFrZXMgbGlmZSBwYWluZnVsLgorCTwvcGFyYT4KKwk8cGFyYT4KKwlUaGlyZCwgc2NhdHRlcmVkIEVIIGNvZGUgbWFrZXMgaW1wbGVtZW50aW5nIGxvdyBsZXZlbCBkcml2ZXJzCisJZGlmZmljdWx0LiAgTG93IGxldmVsIGRyaXZlcnMgb3ZlcnJpZGUgbGliYXRhIGNhbGxiYWNrcy4gIElmCisJRUggaXMgc2NhdHRlcmVkIG92ZXIgc2V2ZXJhbCBwbGFjZXMsIGVhY2ggYWZmZWN0ZWQgY2FsbGJhY2tzCisJc2hvdWxkIHBlcmZvcm0gaXRzIHBhcnQgb2YgZXJyb3IgaGFuZGxpbmcuICBUaGlzIGNhbiBiZSBlcnJvcgorCXByb25lIGFuZCBwYWluZnVsLgorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPC9pdGVtaXplZGxpc3Q+CisJPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJsaWJhdGFFeHQiPgorICAgICA8dGl0bGU+bGliYXRhIExpYnJhcnk8L3RpdGxlPgorIUVkcml2ZXJzL2F0YS9saWJhdGEtY29yZS5jCisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0ibGliYXRhSW50Ij4KKyAgICAgPHRpdGxlPmxpYmF0YSBDb3JlIEludGVybmFsczwvdGl0bGU+CishSWRyaXZlcnMvYXRhL2xpYmF0YS1jb3JlLmMKKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJsaWJhdGFTY3NpSW50Ij4KKyAgICAgPHRpdGxlPmxpYmF0YSBTQ1NJIHRyYW5zbGF0aW9uL2VtdWxhdGlvbjwvdGl0bGU+CishRWRyaXZlcnMvYXRhL2xpYmF0YS1zY3NpLmMKKyFJZHJpdmVycy9hdGEvbGliYXRhLXNjc2kuYworICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImF0YUV4Y2VwdGlvbnMiPgorICAgICA8dGl0bGU+QVRBIGVycm9ycyBhbmQgZXhjZXB0aW9uczwvdGl0bGU+CisKKyAgPHBhcmE+CisgIFRoaXMgY2hhcHRlciB0cmllcyB0byBpZGVudGlmeSB3aGF0IGVycm9yL2V4Y2VwdGlvbiBjb25kaXRpb25zIGV4aXN0CisgIGZvciBBVEEvQVRBUEkgZGV2aWNlcyBhbmQgZGVzY3JpYmUgaG93IHRoZXkgc2hvdWxkIGJlIGhhbmRsZWQgaW4KKyAgaW1wbGVtZW50YXRpb24tbmV1dHJhbCB3YXkuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgVGhlIHRlcm0gJ2Vycm9yJyBpcyB1c2VkIHRvIGRlc2NyaWJlIGNvbmRpdGlvbnMgd2hlcmUgZWl0aGVyIGFuCisgIGV4cGxpY2l0IGVycm9yIGNvbmRpdGlvbiBpcyByZXBvcnRlZCBmcm9tIGRldmljZSBvciBhIGNvbW1hbmQgaGFzCisgIHRpbWVkIG91dC4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICBUaGUgdGVybSAnZXhjZXB0aW9uJyBpcyBlaXRoZXIgdXNlZCB0byBkZXNjcmliZSBleGNlcHRpb25hbAorICBjb25kaXRpb25zIHdoaWNoIGFyZSBub3QgZXJyb3JzIChzYXksIHBvd2VyIG9yIGhvdHBsdWcgZXZlbnRzKSwgb3IKKyAgdG8gZGVzY3JpYmUgYm90aCBlcnJvcnMgYW5kIG5vbi1lcnJvciBleGNlcHRpb25hbCBjb25kaXRpb25zLiAgV2hlcmUKKyAgZXhwbGljaXQgZGlzdGluY3Rpb24gYmV0d2VlbiBlcnJvciBhbmQgZXhjZXB0aW9uIGlzIG5lY2Vzc2FyeSwgdGhlCisgIHRlcm0gJ25vbi1lcnJvciBleGNlcHRpb24nIGlzIHVzZWQuCisgIDwvcGFyYT4KKworICA8c2VjdDEgaWQ9ImV4Y2F0Ij4KKyAgICAgPHRpdGxlPkV4Y2VwdGlvbiBjYXRlZ29yaWVzPC90aXRsZT4KKyAgICAgPHBhcmE+CisgICAgIEV4Y2VwdGlvbnMgYXJlIGRlc2NyaWJlZCBwcmltYXJpbHkgd2l0aCByZXNwZWN0IHRvIGxlZ2FjeQorICAgICB0YXNrZmlsZSArIGJ1cyBtYXN0ZXIgSURFIGludGVyZmFjZS4gIElmIGEgY29udHJvbGxlciBwcm92aWRlcworICAgICBvdGhlciBiZXR0ZXIgbWVjaGFuaXNtIGZvciBlcnJvciByZXBvcnRpbmcsIG1hcHBpbmcgdGhvc2UgaW50bworICAgICBjYXRlZ29yaWVzIGRlc2NyaWJlZCBiZWxvdyBzaG91bGRuJ3QgYmUgZGlmZmljdWx0LgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgIEluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMsIHR3byByZWNvdmVyeSBhY3Rpb25zIC0gcmVzZXQgYW5kCisgICAgIHJlY29uZmlndXJpbmcgdHJhbnNwb3J0IC0gYXJlIG1lbnRpb25lZC4gIFRoZXNlIGFyZSBkZXNjcmliZWQKKyAgICAgZnVydGhlciBpbiA8eHJlZiBsaW5rZW5kPSJleHJlYyIvPi4KKyAgICAgPC9wYXJhPgorCisgICAgIDxzZWN0MiBpZD0iZXhjYXRIU012aW9sYXRpb24iPgorICAgICAgICA8dGl0bGU+SFNNIHZpb2xhdGlvbjwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICBUaGlzIGVycm9yIGlzIGluZGljYXRlZCB3aGVuIFNUQVRVUyB2YWx1ZSBkb2Vzbid0IG1hdGNoIEhTTQorICAgICAgICByZXF1aXJlbWVudCBkdXJpbmcgaXNzdWluZyBvciBleGVjdXRpb24gYW55IEFUQS9BVEFQSSBjb21tYW5kLgorICAgICAgICA8L3BhcmE+CisKKwk8aXRlbWl6ZWRsaXN0PgorCTx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CisKKyAgICAgICAgPGxpc3RpdGVtPgorCTxwYXJhPgorCUFUQV9TVEFUVVMgZG9lc24ndCBjb250YWluICFCU1kgJmFtcDsmYW1wOyBEUkRZICZhbXA7JmFtcDsgIURSUSB3aGlsZSB0cnlpbmcKKwl0byBpc3N1ZSBhIGNvbW1hbmQuCisgICAgICAgIDwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisgICAgICAgIDxsaXN0aXRlbT4KKwk8cGFyYT4KKwkhQlNZICZhbXA7JmFtcDsgIURSUSBkdXJpbmcgUElPIGRhdGEgdHJhbnNmZXIuCisgICAgICAgIDwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisgICAgICAgIDxsaXN0aXRlbT4KKwk8cGFyYT4KKwlEUlEgb24gY29tbWFuZCBjb21wbGV0aW9uLgorICAgICAgICA8L3BhcmE+CisJPC9saXN0aXRlbT4KKworICAgICAgICA8bGlzdGl0ZW0+CisJPHBhcmE+CisJIUJTWSAmYW1wOyZhbXA7IEVSUiBhZnRlciBDREIgdHJhbnNmZXIgc3RhcnRzIGJ1dCBiZWZvcmUgdGhlCisgICAgICAgIGxhc3QgYnl0ZSBvZiBDREIgaXMgdHJhbnNmZXJyZWQuICBBVEEvQVRBUEkgc3RhbmRhcmQgc3RhdGVzCisgICAgICAgIHRoYXQgJnF1b3Q7VGhlIGRldmljZSBzaGFsbCBub3QgdGVybWluYXRlIHRoZSBQQUNLRVQgY29tbWFuZAorICAgICAgICB3aXRoIGFuIGVycm9yIGJlZm9yZSB0aGUgbGFzdCBieXRlIG9mIHRoZSBjb21tYW5kIHBhY2tldCBoYXMKKyAgICAgICAgYmVlbiB3cml0dGVuJnF1b3Q7IGluIHRoZSBlcnJvciBvdXRwdXRzIGRlc2NyaXB0aW9uIG9mIFBBQ0tFVAorICAgICAgICBjb21tYW5kIGFuZCB0aGUgc3RhdGUgZGlhZ3JhbSBkb2Vzbid0IGluY2x1ZGUgc3VjaAorICAgICAgICB0cmFuc2l0aW9ucy4KKwk8L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTwvaXRlbWl6ZWRsaXN0PgorCisJPHBhcmE+CisJSW4gdGhlc2UgY2FzZXMsIEhTTSBpcyB2aW9sYXRlZCBhbmQgbm90IG11Y2ggaW5mb3JtYXRpb24KKwlyZWdhcmRpbmcgdGhlIGVycm9yIGNhbiBiZSBhY3F1aXJlZCBmcm9tIFNUQVRVUyBvciBFUlJPUgorCXJlZ2lzdGVyLiAgSU9XLCB0aGlzIGVycm9yIGNhbiBiZSBhbnl0aGluZyAtIGRyaXZlciBidWcsCisJZmF1bHR5IGRldmljZSwgY29udHJvbGxlciBhbmQvb3IgY2FibGUuCisJPC9wYXJhPgorCisJPHBhcmE+CisJQXMgSFNNIGlzIHZpb2xhdGVkLCByZXNldCBpcyBuZWNlc3NhcnkgdG8gcmVzdG9yZSBrbm93biBzdGF0ZS4KKwlSZWNvbmZpZ3VyaW5nIHRyYW5zcG9ydCBmb3IgbG93ZXIgc3BlZWQgbWlnaHQgYmUgaGVscGZ1bCB0b28KKwlhcyB0cmFuc21pc3Npb24gZXJyb3JzIHNvbWV0aW1lcyBjYXVzZSB0aGlzIGtpbmQgb2YgZXJyb3JzLgorCTwvcGFyYT4KKyAgICAgPC9zZWN0Mj4KKyAgICAgCisgICAgIDxzZWN0MiBpZD0iZXhjYXREZXZFcnIiPgorICAgICAgICA8dGl0bGU+QVRBL0FUQVBJIGRldmljZSBlcnJvciAobm9uLU5DUSAvIG5vbi1DSEVDSyBDT05ESVRJT04pPC90aXRsZT4KKworCTxwYXJhPgorCVRoZXNlIGFyZSBlcnJvcnMgZGV0ZWN0ZWQgYW5kIHJlcG9ydGVkIGJ5IEFUQS9BVEFQSSBkZXZpY2VzCisJaW5kaWNhdGluZyBkZXZpY2UgcHJvYmxlbXMuICBGb3IgdGhpcyB0eXBlIG9mIGVycm9ycywgU1RBVFVTCisJYW5kIEVSUk9SIHJlZ2lzdGVyIHZhbHVlcyBhcmUgdmFsaWQgYW5kIGRlc2NyaWJlIGVycm9yCisJY29uZGl0aW9uLiAgTm90ZSB0aGF0IHNvbWUgb2YgQVRBIGJ1cyBlcnJvcnMgYXJlIGRldGVjdGVkIGJ5CisJQVRBL0FUQVBJIGRldmljZXMgYW5kIHJlcG9ydGVkIHVzaW5nIHRoZSBzYW1lIG1lY2hhbmlzbSBhcworCWRldmljZSBlcnJvcnMuICBUaG9zZSBjYXNlcyBhcmUgZGVzY3JpYmVkIGxhdGVyIGluIHRoaXMKKwlzZWN0aW9uLgorCTwvcGFyYT4KKworCTxwYXJhPgorCUZvciBBVEEgY29tbWFuZHMsIHRoaXMgdHlwZSBvZiBlcnJvcnMgYXJlIGluZGljYXRlZCBieSAhQlNZCisJJmFtcDsmYW1wOyBFUlIgZHVyaW5nIGNvbW1hbmQgZXhlY3V0aW9uIGFuZCBvbiBjb21wbGV0aW9uLgorCTwvcGFyYT4KKworCTxwYXJhPkZvciBBVEFQSSBjb21tYW5kcyw8L3BhcmE+CisKKwk8aXRlbWl6ZWRsaXN0PgorCisJPGxpc3RpdGVtPgorCTxwYXJhPgorCSFCU1kgJmFtcDsmYW1wOyBFUlIgJmFtcDsmYW1wOyBBQlJUIHJpZ2h0IGFmdGVyIGlzc3VpbmcgUEFDS0VUCisJaW5kaWNhdGVzIHRoYXQgUEFDS0VUIGNvbW1hbmQgaXMgbm90IHN1cHBvcnRlZCBhbmQgZmFsbHMgaW4KKwl0aGlzIGNhdGVnb3J5LgorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCTxwYXJhPgorCSFCU1kgJmFtcDsmYW1wOyBFUlIoPT1DSEspICZhbXA7JmFtcDsgIUFCUlQgYWZ0ZXIgdGhlIGxhc3QKKwlieXRlIG9mIENEQiBpcyB0cmFuc2ZlcnJlZCBpbmRpY2F0ZXMgQ0hFQ0sgQ09ORElUSU9OIGFuZAorCWRvZXNuJ3QgZmFsbCBpbiB0aGlzIGNhdGVnb3J5LgorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCTxwYXJhPgorCSFCU1kgJmFtcDsmYW1wOyBFUlIoPT1DSEspICZhbXA7JmFtcDsgQUJSVCBhZnRlciB0aGUgbGFzdCBieXRlCisgICAgICAgIG9mIENEQiBpcyB0cmFuc2ZlcnJlZCAqcHJvYmFibHkqIGluZGljYXRlcyBDSEVDSyBDT05ESVRJT04gYW5kCisgICAgICAgIGRvZXNuJ3QgZmFsbCBpbiB0aGlzIGNhdGVnb3J5LgorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPC9pdGVtaXplZGxpc3Q+CisKKwk8cGFyYT4KKwlPZiBlcnJvcnMgZGV0ZWN0ZWQgYXMgYWJvdmUsIHRoZSBmb2xsb3dpbmdzIGFyZSBub3QgQVRBL0FUQVBJCisJZGV2aWNlIGVycm9ycyBidXQgQVRBIGJ1cyBlcnJvcnMgYW5kIHNob3VsZCBiZSBoYW5kbGVkCisJYWNjb3JkaW5nIHRvIDx4cmVmIGxpbmtlbmQ9ImV4Y2F0QVRBYnVzRXJyIi8+LgorCTwvcGFyYT4KKworCTx2YXJpYWJsZWxpc3Q+CisKKwkgICA8dmFybGlzdGVudHJ5PgorCSAgIDx0ZXJtPkNSQyBlcnJvciBkdXJpbmcgZGF0YSB0cmFuc2ZlcjwvdGVybT4KKwkgICA8bGlzdGl0ZW0+CisJICAgPHBhcmE+CisJICAgVGhpcyBpcyBpbmRpY2F0ZWQgYnkgSUNSQyBiaXQgaW4gdGhlIEVSUk9SIHJlZ2lzdGVyIGFuZAorCSAgIG1lYW5zIHRoYXQgY29ycnVwdGlvbiBvY2N1cnJlZCBkdXJpbmcgZGF0YSB0cmFuc2Zlci4gIFVwIHRvCisJICAgQVRBL0FUQVBJLTcsIHRoZSBzdGFuZGFyZCBzcGVjaWZpZXMgdGhhdCB0aGlzIGJpdCBpcyBvbmx5CisJICAgYXBwbGljYWJsZSB0byBVRE1BIHRyYW5zZmVycyBidXQgQVRBL0FUQVBJLTggZHJhZnQgcmV2aXNpb24KKwkgICAxZiBzYXlzIHRoYXQgdGhlIGJpdCBtYXkgYmUgYXBwbGljYWJsZSB0byBtdWx0aXdvcmQgRE1BIGFuZAorCSAgIFBJTy4KKwkgICA8L3BhcmE+CisJICAgPC9saXN0aXRlbT4KKwkgICA8L3Zhcmxpc3RlbnRyeT4KKworCSAgIDx2YXJsaXN0ZW50cnk+CisJICAgPHRlcm0+QUJSVCBlcnJvciBkdXJpbmcgZGF0YSB0cmFuc2ZlciBvciBvbiBjb21wbGV0aW9uPC90ZXJtPgorCSAgIDxsaXN0aXRlbT4KKwkgICA8cGFyYT4KKwkgICBVcCB0byBBVEEvQVRBUEktNywgdGhlIHN0YW5kYXJkIHNwZWNpZmllcyB0aGF0IEFCUlQgY291bGQgYmUKKwkgICBzZXQgb24gSUNSQyBlcnJvcnMgYW5kIG9uIGNhc2VzIHdoZXJlIGEgZGV2aWNlIGlzIG5vdCBhYmxlCisJICAgdG8gY29tcGxldGUgYSBjb21tYW5kLiAgQ29tYmluZWQgd2l0aCB0aGUgZmFjdCB0aGF0IE1XRE1BCisJICAgYW5kIFBJTyB0cmFuc2ZlciBlcnJvcnMgYXJlbid0IGFsbG93ZWQgdG8gdXNlIElDUkMgYml0IHVwIHRvCisJICAgQVRBL0FUQVBJLTcsIGl0IHNlZW1zIHRvIGltcGx5IHRoYXQgQUJSVCBiaXQgYWxvbmUgY291bGQKKwkgICBpbmRpY2F0ZSB0cmFuc2ZlciBlcnJvcnMuCisJICAgPC9wYXJhPgorCSAgIDxwYXJhPgorCSAgIEhvd2V2ZXIsIEFUQS9BVEFQSS04IGRyYWZ0IHJldmlzaW9uIDFmIHJlbW92ZXMgdGhlIHBhcnQKKwkgICB0aGF0IElDUkMgZXJyb3JzIGNhbiB0dXJuIG9uIEFCUlQuICBTbywgdGhpcyBpcyBraW5kIG9mCisJICAgZ3JheSBhcmVhLiAgU29tZSBoZXVyaXN0aWNzIGFyZSBuZWVkZWQgaGVyZS4KKwkgICA8L3BhcmE+CisJICAgPC9saXN0aXRlbT4KKwkgICA8L3Zhcmxpc3RlbnRyeT4KKworCTwvdmFyaWFibGVsaXN0PgorCisJPHBhcmE+CisJQVRBL0FUQVBJIGRldmljZSBlcnJvcnMgY2FuIGJlIGZ1cnRoZXIgY2F0ZWdvcml6ZWQgYXMgZm9sbG93cy4KKwk8L3BhcmE+CisKKwk8dmFyaWFibGVsaXN0PgorCisJICAgPHZhcmxpc3RlbnRyeT4KKwkgICA8dGVybT5NZWRpYSBlcnJvcnM8L3Rlcm0+CisJICAgPGxpc3RpdGVtPgorCSAgIDxwYXJhPgorCSAgIFRoaXMgaXMgaW5kaWNhdGVkIGJ5IFVOQyBiaXQgaW4gdGhlIEVSUk9SIHJlZ2lzdGVyLiAgQVRBCisJICAgZGV2aWNlcyByZXBvcnRzIFVOQyBlcnJvciBvbmx5IGFmdGVyIGNlcnRhaW4gbnVtYmVyIG9mCisJICAgcmV0cmllcyBjYW5ub3QgcmVjb3ZlciB0aGUgZGF0YSwgc28gdGhlcmUncyBub3RoaW5nIG11Y2gKKwkgICBlbHNlIHRvIGRvIG90aGVyIHRoYW4gbm90aWZ5aW5nIHVwcGVyIGxheWVyLgorCSAgIDwvcGFyYT4KKwkgICA8cGFyYT4KKwkgICBSRUFEIGFuZCBXUklURSBjb21tYW5kcyByZXBvcnQgQ0hTIG9yIExCQSBvZiB0aGUgZmlyc3QKKwkgICBmYWlsZWQgc2VjdG9yIGJ1dCBBVEEvQVRBUEkgc3RhbmRhcmQgc3BlY2lmaWVzIHRoYXQgdGhlCisJICAgYW1vdW50IG9mIHRyYW5zZmVycmVkIGRhdGEgb24gZXJyb3IgY29tcGxldGlvbiBpcworCSAgIGluZGV0ZXJtaW5hdGUsIHNvIHdlIGNhbm5vdCBhc3N1bWUgdGhhdCBzZWN0b3JzIHByZWNlZGluZworCSAgIHRoZSBmYWlsZWQgc2VjdG9yIGhhdmUgYmVlbiB0cmFuc2ZlcnJlZCBhbmQgdGh1cyBjYW5ub3QKKwkgICBjb21wbGV0ZSB0aG9zZSBzZWN0b3JzIHN1Y2Nlc3NmdWxseSBhcyBTQ1NJIGRvZXMuCisJICAgPC9wYXJhPgorCSAgIDwvbGlzdGl0ZW0+CisJICAgPC92YXJsaXN0ZW50cnk+CisKKwkgICA8dmFybGlzdGVudHJ5PgorCSAgIDx0ZXJtPk1lZGlhIGNoYW5nZWQgLyBtZWRpYSBjaGFuZ2UgcmVxdWVzdGVkIGVycm9yPC90ZXJtPgorCSAgIDxsaXN0aXRlbT4KKwkgICA8cGFyYT4KKwkgICAmbHQ7Jmx0O1RPRE86IGZpbGwgaGVyZSZndDsmZ3Q7CisJICAgPC9wYXJhPgorCSAgIDwvbGlzdGl0ZW0+CisJICAgPC92YXJsaXN0ZW50cnk+CisKKwkgICA8dmFybGlzdGVudHJ5Pjx0ZXJtPkFkZHJlc3MgZXJyb3I8L3Rlcm0+CisJICAgPGxpc3RpdGVtPgorCSAgIDxwYXJhPgorCSAgIFRoaXMgaXMgaW5kaWNhdGVkIGJ5IElETkYgYml0IGluIHRoZSBFUlJPUiByZWdpc3Rlci4KKwkgICBSZXBvcnQgdG8gdXBwZXIgbGF5ZXIuCisJICAgPC9wYXJhPgorCSAgIDwvbGlzdGl0ZW0+CisJICAgPC92YXJsaXN0ZW50cnk+CisKKwkgICA8dmFybGlzdGVudHJ5Pjx0ZXJtPk90aGVyIGVycm9yczwvdGVybT4KKwkgICA8bGlzdGl0ZW0+CisJICAgPHBhcmE+CisJICAgVGhpcyBjYW4gYmUgaW52YWxpZCBjb21tYW5kIG9yIHBhcmFtZXRlciBpbmRpY2F0ZWQgYnkgQUJSVAorCSAgIEVSUk9SIGJpdCBvciBzb21lIG90aGVyIGVycm9yIGNvbmRpdGlvbi4gIE5vdGUgdGhhdCBBQlJUCisJICAgYml0IGNhbiBpbmRpY2F0ZSBhIGxvdCBvZiB0aGluZ3MgaW5jbHVkaW5nIElDUkMgYW5kIEFkZHJlc3MKKwkgICBlcnJvcnMuICBIZXVyaXN0aWNzIG5lZWRlZC4KKwkgICA8L3BhcmE+CisJICAgPC9saXN0aXRlbT4KKwkgICA8L3Zhcmxpc3RlbnRyeT4KKworCTwvdmFyaWFibGVsaXN0PgorCisJPHBhcmE+CisJRGVwZW5kaW5nIG9uIGNvbW1hbmRzLCBub3QgYWxsIFNUQVRVUy9FUlJPUiBiaXRzIGFyZQorCWFwcGxpY2FibGUuICBUaGVzZSBub24tYXBwbGljYWJsZSBiaXRzIGFyZSBtYXJrZWQgd2l0aAorCSZxdW90O25hJnF1b3Q7IGluIHRoZSBvdXRwdXQgZGVzY3JpcHRpb25zIGJ1dCB1cCB0byBBVEEvQVRBUEktNworCW5vIGRlZmluaXRpb24gb2YgJnF1b3Q7bmEmcXVvdDsgY2FuIGJlIGZvdW5kLiAgSG93ZXZlciwKKwlBVEEvQVRBUEktOCBkcmFmdCByZXZpc2lvbiAxZiBkZXNjcmliZXMgJnF1b3Q7Ti9BJnF1b3Q7IGFzCisJZm9sbG93cy4KKwk8L3BhcmE+CisKKwk8YmxvY2txdW90ZT4KKwk8dmFyaWFibGVsaXN0PgorCSAgIDx2YXJsaXN0ZW50cnk+PHRlcm0+My4yLjMuM2EgTi9BPC90ZXJtPgorCSAgIDxsaXN0aXRlbT4KKwkgICA8cGFyYT4KKwkgICBBIGtleXdvcmQgdGhlIGluZGljYXRlcyBhIGZpZWxkIGhhcyBubyBkZWZpbmVkIHZhbHVlIGluCisJICAgdGhpcyBzdGFuZGFyZCBhbmQgc2hvdWxkIG5vdCBiZSBjaGVja2VkIGJ5IHRoZSBob3N0IG9yCisJICAgZGV2aWNlLiBOL0EgZmllbGRzIHNob3VsZCBiZSBjbGVhcmVkIHRvIHplcm8uCisJICAgPC9wYXJhPgorCSAgIDwvbGlzdGl0ZW0+CisJICAgPC92YXJsaXN0ZW50cnk+CisJPC92YXJpYWJsZWxpc3Q+CisJPC9ibG9ja3F1b3RlPgorCisJPHBhcmE+CisJU28sIGl0IHNlZW1zIHJlYXNvbmFibGUgdG8gYXNzdW1lIHRoYXQgJnF1b3Q7bmEmcXVvdDsgYml0cyBhcmUKKwljbGVhcmVkIHRvIHplcm8gYnkgZGV2aWNlcyBhbmQgdGh1cyBuZWVkIG5vIGV4cGxpY2l0IG1hc2tpbmcuCisJPC9wYXJhPgorCisgICAgIDwvc2VjdDI+CisKKyAgICAgPHNlY3QyIGlkPSJleGNhdEFUQVBJY2MiPgorICAgICAgICA8dGl0bGU+QVRBUEkgZGV2aWNlIENIRUNLIENPTkRJVElPTjwvdGl0bGU+CisKKwk8cGFyYT4KKwlBVEFQSSBkZXZpY2UgQ0hFQ0sgQ09ORElUSU9OIGVycm9yIGlzIGluZGljYXRlZCBieSBzZXQgQ0hLIGJpdAorCShFUlIgYml0KSBpbiB0aGUgU1RBVFVTIHJlZ2lzdGVyIGFmdGVyIHRoZSBsYXN0IGJ5dGUgb2YgQ0RCIGlzCisJdHJhbnNmZXJyZWQgZm9yIGEgUEFDS0VUIGNvbW1hbmQuICBGb3IgdGhpcyBraW5kIG9mIGVycm9ycywKKwlzZW5zZSBkYXRhIHNob3VsZCBiZSBhY3F1aXJlZCB0byBnYXRoZXIgaW5mb3JtYXRpb24gcmVnYXJkaW5nCisJdGhlIGVycm9ycy4gIFJFUVVFU1QgU0VOU0UgcGFja2V0IGNvbW1hbmQgc2hvdWxkIGJlIHVzZWQgdG8KKwlhY3F1aXJlIHNlbnNlIGRhdGEuCisJPC9wYXJhPgorCisJPHBhcmE+CisJT25jZSBzZW5zZSBkYXRhIGlzIGFjcXVpcmVkLCB0aGlzIHR5cGUgb2YgZXJyb3JzIGNhbiBiZQorCWhhbmRsZWQgc2ltaWxhcmx5IHRvIG90aGVyIFNDU0kgZXJyb3JzLiAgTm90ZSB0aGF0IHNlbnNlIGRhdGEKKwltYXkgaW5kaWNhdGUgQVRBIGJ1cyBlcnJvciAoZS5nLiBTZW5zZSBLZXkgMDRoIEhBUkRXQVJFIEVSUk9SCisJJmFtcDsmYW1wOyBBU0MvQVNDUSA0N2gvMDBoIFNDU0kgUEFSSVRZIEVSUk9SKS4gIEluIHN1Y2gKKwljYXNlcywgdGhlIGVycm9yIHNob3VsZCBiZSBjb25zaWRlcmVkIGFzIGFuIEFUQSBidXMgZXJyb3IgYW5kCisJaGFuZGxlZCBhY2NvcmRpbmcgdG8gPHhyZWYgbGlua2VuZD0iZXhjYXRBVEFidXNFcnIiLz4uCisJPC9wYXJhPgorCisgICAgIDwvc2VjdDI+CisKKyAgICAgPHNlY3QyIGlkPSJleGNhdE5DUWVyciI+CisgICAgICAgIDx0aXRsZT5BVEEgZGV2aWNlIGVycm9yIChOQ1EpPC90aXRsZT4KKworCTxwYXJhPgorCU5DUSBjb21tYW5kIGVycm9yIGlzIGluZGljYXRlZCBieSBjbGVhcmVkIEJTWSBhbmQgc2V0IEVSUiBiaXQKKwlkdXJpbmcgTkNRIGNvbW1hbmQgcGhhc2UgKG9uZSBvciBtb3JlIE5DUSBjb21tYW5kcworCW91dHN0YW5kaW5nKS4gIEFsdGhvdWdoIFNUQVRVUyBhbmQgRVJST1IgcmVnaXN0ZXJzIHdpbGwKKwljb250YWluIHZhbGlkIHZhbHVlcyBkZXNjcmliaW5nIHRoZSBlcnJvciwgUkVBRCBMT0cgRVhUIGlzCisJcmVxdWlyZWQgdG8gY2xlYXIgdGhlIGVycm9yIGNvbmRpdGlvbiwgZGV0ZXJtaW5lIHdoaWNoIGNvbW1hbmQKKwloYXMgZmFpbGVkIGFuZCBhY3F1aXJlIG1vcmUgaW5mb3JtYXRpb24uCisJPC9wYXJhPgorCisJPHBhcmE+CisJUkVBRCBMT0cgRVhUIExvZyBQYWdlIDEwaCByZXBvcnRzIHdoaWNoIHRhZyBoYXMgZmFpbGVkIGFuZAorCXRhc2tmaWxlIHJlZ2lzdGVyIHZhbHVlcyBkZXNjcmliaW5nIHRoZSBlcnJvci4gIFdpdGggdGhpcworCWluZm9ybWF0aW9uIHRoZSBmYWlsZWQgY29tbWFuZCBjYW4gYmUgaGFuZGxlZCBhcyBhIG5vcm1hbCBBVEEKKwljb21tYW5kIGVycm9yIGFzIGluIDx4cmVmIGxpbmtlbmQ9ImV4Y2F0RGV2RXJyIi8+IGFuZCBhbGwKKwlvdGhlciBpbi1mbGlnaHQgY29tbWFuZHMgbXVzdCBiZSByZXRyaWVkLiAgTm90ZSB0aGF0IHRoaXMKKwlyZXRyeSBzaG91bGQgbm90IGJlIGNvdW50ZWQgLSBpdCdzIGxpa2VseSB0aGF0IGNvbW1hbmRzCisJcmV0cmllZCB0aGlzIHdheSB3b3VsZCBoYXZlIGNvbXBsZXRlZCBub3JtYWxseSBpZiBpdCB3ZXJlIG5vdAorCWZvciB0aGUgZmFpbGVkIGNvbW1hbmQuCisJPC9wYXJhPgorCisJPHBhcmE+CisJTm90ZSB0aGF0IEFUQSBidXMgZXJyb3JzIGNhbiBiZSByZXBvcnRlZCBhcyBBVEEgZGV2aWNlIE5DUQorCWVycm9ycy4gIFRoaXMgc2hvdWxkIGJlIGhhbmRsZWQgYXMgZGVzY3JpYmVkIGluIDx4cmVmCisJbGlua2VuZD0iZXhjYXRBVEFidXNFcnIiLz4uCisJPC9wYXJhPgorCisJPHBhcmE+CisJSWYgUkVBRCBMT0cgRVhUIExvZyBQYWdlIDEwaCBmYWlscyBvciByZXBvcnRzIE5RLCB3ZSdyZQorCXRob3JvdWdobHkgc2NyZXdlZC4gIFRoaXMgY29uZGl0aW9uIHNob3VsZCBiZSB0cmVhdGVkCisJYWNjb3JkaW5nIHRvIDx4cmVmIGxpbmtlbmQ9ImV4Y2F0SFNNdmlvbGF0aW9uIi8+LgorCTwvcGFyYT4KKworICAgICA8L3NlY3QyPgorCisgICAgIDxzZWN0MiBpZD0iZXhjYXRBVEFidXNFcnIiPgorICAgICAgICA8dGl0bGU+QVRBIGJ1cyBlcnJvcjwvdGl0bGU+CisKKwk8cGFyYT4KKwlBVEEgYnVzIGVycm9yIG1lYW5zIHRoYXQgZGF0YSBjb3JydXB0aW9uIG9jY3VycmVkIGR1cmluZworCXRyYW5zbWlzc2lvbiBvdmVyIEFUQSBidXMgKFNBVEEgb3IgUEFUQSkuICBUaGlzIHR5cGUgb2YgZXJyb3JzCisJY2FuIGJlIGluZGljYXRlZCBieQorCTwvcGFyYT4KKworCTxpdGVtaXplZGxpc3Q+CisKKwk8bGlzdGl0ZW0+CisJPHBhcmE+CisJSUNSQyBvciBBQlJUIGVycm9yIGFzIGRlc2NyaWJlZCBpbiA8eHJlZiBsaW5rZW5kPSJleGNhdERldkVyciIvPi4KKwk8L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwk8cGFyYT4KKwlDb250cm9sbGVyLXNwZWNpZmljIGVycm9yIGNvbXBsZXRpb24gd2l0aCBlcnJvciBpbmZvcm1hdGlvbgorCWluZGljYXRpbmcgdHJhbnNtaXNzaW9uIGVycm9yLgorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCTxwYXJhPgorCU9uIHNvbWUgY29udHJvbGxlcnMsIGNvbW1hbmQgdGltZW91dC4gIEluIHRoaXMgY2FzZSwgdGhlcmUgbWF5CisJYmUgYSBtZWNoYW5pc20gdG8gZGV0ZXJtaW5lIHRoYXQgdGhlIHRpbWVvdXQgaXMgZHVlIHRvCisJdHJhbnNtaXNzaW9uIGVycm9yLgorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCTxwYXJhPgorCVVua25vd24vcmFuZG9tIGVycm9ycywgdGltZW91dHMgYW5kIGFsbCBzb3J0cyBvZiB3ZWlyZGl0aWVzLgorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPC9pdGVtaXplZGxpc3Q+CisKKwk8cGFyYT4KKwlBcyBkZXNjcmliZWQgYWJvdmUsIHRyYW5zbWlzc2lvbiBlcnJvcnMgY2FuIGNhdXNlIHdpZGUgdmFyaWV0eQorCW9mIHN5bXB0b21zIHJhbmdpbmcgZnJvbSBkZXZpY2UgSUNSQyBlcnJvciB0byByYW5kb20gZGV2aWNlCisJbG9ja3VwLCBhbmQsIGZvciBtYW55IGNhc2VzLCB0aGVyZSBpcyBubyB3YXkgdG8gdGVsbCBpZiBhbgorCWVycm9yIGNvbmRpdGlvbiBpcyBkdWUgdG8gdHJhbnNtaXNzaW9uIGVycm9yIG9yIG5vdDsKKwl0aGVyZWZvcmUsIGl0J3MgbmVjZXNzYXJ5IHRvIGVtcGxveSBzb21lIGtpbmQgb2YgaGV1cmlzdGljCisJd2hlbiBkZWFsaW5nIHdpdGggZXJyb3JzIGFuZCB0aW1lb3V0cy4gIEZvciBleGFtcGxlLAorCWVuY291bnRlcmluZyByZXBldGl0aXZlIEFCUlQgZXJyb3JzIGZvciBrbm93biBzdXBwb3J0ZWQKKwljb21tYW5kIGlzIGxpa2VseSB0byBpbmRpY2F0ZSBBVEEgYnVzIGVycm9yLgorCTwvcGFyYT4KKworCTxwYXJhPgorCU9uY2UgaXQncyBkZXRlcm1pbmVkIHRoYXQgQVRBIGJ1cyBlcnJvcnMgaGF2ZSBwb3NzaWJseQorCW9jY3VycmVkLCBsb3dlcmluZyBBVEEgYnVzIHRyYW5zbWlzc2lvbiBzcGVlZCBpcyBvbmUgb2YKKwlhY3Rpb25zIHdoaWNoIG1heSBhbGxldmlhdGUgdGhlIHByb2JsZW0uICBTZWUgPHhyZWYKKwlsaW5rZW5kPSJleHJlY1JlY29uZiIvPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKwk8L3BhcmE+CisKKyAgICAgPC9zZWN0Mj4KKworICAgICA8c2VjdDIgaWQ9ImV4Y2F0UENJYnVzRXJyIj4KKyAgICAgICAgPHRpdGxlPlBDSSBidXMgZXJyb3I8L3RpdGxlPgorCisJPHBhcmE+CisJRGF0YSBjb3JydXB0aW9uIG9yIG90aGVyIGZhaWx1cmVzIGR1cmluZyB0cmFuc21pc3Npb24gb3ZlciBQQ0kKKwkob3Igb3RoZXIgc3lzdGVtIGJ1cykuICBGb3Igc3RhbmRhcmQgQk1ETUEsIHRoaXMgaXMgaW5kaWNhdGVkCisJYnkgRXJyb3IgYml0IGluIHRoZSBCTURNQSBTdGF0dXMgcmVnaXN0ZXIuICBUaGlzIHR5cGUgb2YKKwllcnJvcnMgbXVzdCBiZSBsb2dnZWQgYXMgaXQgaW5kaWNhdGVzIHNvbWV0aGluZyBpcyB2ZXJ5IHdyb25nCisJd2l0aCB0aGUgc3lzdGVtLiAgUmVzZXR0aW5nIGhvc3QgY29udHJvbGxlciBpcyByZWNvbW1lbmRlZC4KKwk8L3BhcmE+CisKKyAgICAgPC9zZWN0Mj4KKworICAgICA8c2VjdDIgaWQ9ImV4Y2F0TGF0ZUNvbXBsZXRpb24iPgorICAgICAgICA8dGl0bGU+TGF0ZSBjb21wbGV0aW9uPC90aXRsZT4KKworCTxwYXJhPgorCVRoaXMgb2NjdXJzIHdoZW4gdGltZW91dCBvY2N1cnMgYW5kIHRoZSB0aW1lb3V0IGhhbmRsZXIgZmluZHMKKwlvdXQgdGhhdCB0aGUgdGltZWQgb3V0IGNvbW1hbmQgaGFzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgb3IKKwl3aXRoIGVycm9yLiAgVGhpcyBpcyB1c3VhbGx5IGNhdXNlZCBieSBsb3N0IGludGVycnVwdHMuICBUaGlzCisJdHlwZSBvZiBlcnJvcnMgbXVzdCBiZSBsb2dnZWQuICBSZXNldHRpbmcgaG9zdCBjb250cm9sbGVyIGlzCisJcmVjb21tZW5kZWQuCisJPC9wYXJhPgorCisgICAgIDwvc2VjdDI+CisKKyAgICAgPHNlY3QyIGlkPSJleGNhdFVua25vd24iPgorICAgICAgICA8dGl0bGU+VW5rbm93biBlcnJvciAodGltZW91dCk8L3RpdGxlPgorCisJPHBhcmE+CisJVGhpcyBpcyB3aGVuIHRpbWVvdXQgb2NjdXJzIGFuZCB0aGUgY29tbWFuZCBpcyBzdGlsbAorCXByb2Nlc3Npbmcgb3IgdGhlIGhvc3QgYW5kIGRldmljZSBhcmUgaW4gdW5rbm93biBzdGF0ZS4gIFdoZW4KKwl0aGlzIG9jY3VycywgSFNNIGNvdWxkIGJlIGluIGFueSB2YWxpZCBvciBpbnZhbGlkIHN0YXRlLiAgVG8KKwlicmluZyB0aGUgZGV2aWNlIHRvIGtub3duIHN0YXRlIGFuZCBtYWtlIGl0IGZvcmdldCBhYm91dCB0aGUKKwl0aW1lZCBvdXQgY29tbWFuZCwgcmVzZXR0aW5nIGlzIG5lY2Vzc2FyeS4gIFRoZSB0aW1lZCBvdXQKKwljb21tYW5kIG1heSBiZSByZXRyaWVkLgorCTwvcGFyYT4KKworCTxwYXJhPgorCVRpbWVvdXRzIGNhbiBhbHNvIGJlIGNhdXNlZCBieSB0cmFuc21pc3Npb24gZXJyb3JzLiAgUmVmZXIgdG8KKwk8eHJlZiBsaW5rZW5kPSJleGNhdEFUQWJ1c0VyciIvPiBmb3IgbW9yZSBkZXRhaWxzLgorCTwvcGFyYT4KKworICAgICA8L3NlY3QyPgorCisgICAgIDxzZWN0MiBpZD0iZXhjYXRIb3BsdWdQTSI+CisgICAgICAgIDx0aXRsZT5Ib3RwbHVnIGFuZCBwb3dlciBtYW5hZ2VtZW50IGV4Y2VwdGlvbnM8L3RpdGxlPgorCisJPHBhcmE+CisJJmx0OyZsdDtUT0RPOiBmaWxsIGhlcmUmZ3Q7Jmd0OworCTwvcGFyYT4KKworICAgICA8L3NlY3QyPgorCisgIDwvc2VjdDE+CisKKyAgPHNlY3QxIGlkPSJleHJlYyI+CisgICAgIDx0aXRsZT5FSCByZWNvdmVyeSBhY3Rpb25zPC90aXRsZT4KKworICAgICA8cGFyYT4KKyAgICAgVGhpcyBzZWN0aW9uIGRpc2N1c3NlcyBzZXZlcmFsIGltcG9ydGFudCByZWNvdmVyeSBhY3Rpb25zLgorICAgICA8L3BhcmE+CisKKyAgICAgPHNlY3QyIGlkPSJleHJlY0NsciI+CisgICAgICAgIDx0aXRsZT5DbGVhcmluZyBlcnJvciBjb25kaXRpb248L3RpdGxlPgorCisJPHBhcmE+CisJTWFueSBjb250cm9sbGVycyByZXF1aXJlIGl0cyBlcnJvciByZWdpc3RlcnMgdG8gYmUgY2xlYXJlZCBieQorCWVycm9yIGhhbmRsZXIuICBEaWZmZXJlbnQgY29udHJvbGxlcnMgbWF5IGhhdmUgZGlmZmVyZW50CisJcmVxdWlyZW1lbnRzLgorCTwvcGFyYT4KKworCTxwYXJhPgorCUZvciBTQVRBLCBpdCdzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIGNsZWFyIGF0IGxlYXN0IFNFcnJvcgorCXJlZ2lzdGVyIGR1cmluZyBlcnJvciBoYW5kbGluZy4KKwk8L3BhcmE+CisgICAgIDwvc2VjdDI+CisKKyAgICAgPHNlY3QyIGlkPSJleHJlY1JzdCI+CisgICAgICAgIDx0aXRsZT5SZXNldDwvdGl0bGU+CisKKwk8cGFyYT4KKwlEdXJpbmcgRUgsIHJlc2V0dGluZyBpcyBuZWNlc3NhcnkgaW4gdGhlIGZvbGxvd2luZyBjYXNlcy4KKwk8L3BhcmE+CisKKwk8aXRlbWl6ZWRsaXN0PgorCisJPGxpc3RpdGVtPgorCTxwYXJhPgorCUhTTSBpcyBpbiB1bmtub3duIG9yIGludmFsaWQgc3RhdGUKKwk8L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwk8cGFyYT4KKwlIQkEgaXMgaW4gdW5rbm93biBvciBpbnZhbGlkIHN0YXRlCisJPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJPHBhcmE+CisJRUggbmVlZHMgdG8gbWFrZSBIQkEvZGV2aWNlIGZvcmdldCBhYm91dCBpbi1mbGlnaHQgY29tbWFuZHMKKwk8L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwk8cGFyYT4KKwlIQkEvZGV2aWNlIGJlaGF2ZXMgd2VpcmRseQorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPC9pdGVtaXplZGxpc3Q+CisKKwk8cGFyYT4KKwlSZXNldHRpbmcgZHVyaW5nIEVIIG1pZ2h0IGJlIGEgZ29vZCBpZGVhIHJlZ2FyZGxlc3Mgb2YgZXJyb3IKKwljb25kaXRpb24gdG8gaW1wcm92ZSBFSCByb2J1c3RuZXNzLiAgV2hldGhlciB0byByZXNldCBib3RoIG9yCisJZWl0aGVyIG9uZSBvZiBIQkEgYW5kIGRldmljZSBkZXBlbmRzIG9uIHNpdHVhdGlvbiBidXQgdGhlCisJZm9sbG93aW5nIHNjaGVtZSBpcyByZWNvbW1lbmRlZC4KKwk8L3BhcmE+CisKKwk8aXRlbWl6ZWRsaXN0PgorCisJPGxpc3RpdGVtPgorCTxwYXJhPgorCVdoZW4gaXQncyBrbm93biB0aGF0IEhCQSBpcyBpbiByZWFkeSBzdGF0ZSBidXQgQVRBL0FUQVBJCisJZGV2aWNlIGlzIGluIHVua25vd24gc3RhdGUsIHJlc2V0IG9ubHkgZGV2aWNlLgorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCTxwYXJhPgorCUlmIEhCQSBpcyBpbiB1bmtub3duIHN0YXRlLCByZXNldCBib3RoIEhCQSBhbmQgZGV2aWNlLgorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPC9pdGVtaXplZGxpc3Q+CisKKwk8cGFyYT4KKwlIQkEgcmVzZXR0aW5nIGlzIGltcGxlbWVudGF0aW9uIHNwZWNpZmljLiAgRm9yIGEgY29udHJvbGxlcgorCWNvbXBseWluZyB0byB0YXNrZmlsZS9CTURNQSBQQ0kgSURFLCBzdG9wcGluZyBhY3RpdmUgRE1BCisJdHJhbnNhY3Rpb24gbWF5IGJlIHN1ZmZpY2llbnQgaWZmIEJNRE1BIHN0YXRlIGlzIHRoZSBvbmx5IEhCQQorCWNvbnRleHQuICBCdXQgZXZlbiBtb3N0bHkgdGFza2ZpbGUvQk1ETUEgUENJIElERSBjb21wbHlpbmcKKwljb250cm9sbGVycyBtYXkgaGF2ZSBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyByZXF1aXJlbWVudHMgYW5kCisJbWVjaGFuaXNtIHRvIHJlc2V0IHRoZW1zZWx2ZXMuICBUaGlzIG11c3QgYmUgYWRkcmVzc2VkIGJ5CisJc3BlY2lmaWMgZHJpdmVycy4KKwk8L3BhcmE+CisKKwk8cGFyYT4KKwlPVE9ILCBBVEEvQVRBUEkgc3RhbmRhcmQgZGVzY3JpYmVzIGluIGRldGFpbCB3YXlzIHRvIHJlc2V0CisJQVRBL0FUQVBJIGRldmljZXMuCisJPC9wYXJhPgorCisJPHZhcmlhYmxlbGlzdD4KKworCSAgIDx2YXJsaXN0ZW50cnk+PHRlcm0+UEFUQSBoYXJkd2FyZSByZXNldDwvdGVybT4KKwkgICA8bGlzdGl0ZW0+CisJICAgPHBhcmE+CisJICAgVGhpcyBpcyBoYXJkd2FyZSBpbml0aWF0ZWQgZGV2aWNlIHJlc2V0IHNpZ25hbGxlZCB3aXRoCisJICAgYXNzZXJ0ZWQgUEFUQSBSRVNFVC0gc2lnbmFsLiAgVGhlcmUgaXMgbm8gc3RhbmRhcmQgd2F5IHRvCisJICAgaW5pdGlhdGUgaGFyZHdhcmUgcmVzZXQgZnJvbSBzb2Z0d2FyZSBhbHRob3VnaCBzb21lCisJICAgaGFyZHdhcmUgcHJvdmlkZXMgcmVnaXN0ZXJzIHRoYXQgYWxsb3cgZHJpdmVyIHRvIGRpcmVjdGx5CisJICAgdHdlYWsgdGhlIFJFU0VULSBzaWduYWwuCisJICAgPC9wYXJhPgorCSAgIDwvbGlzdGl0ZW0+CisJICAgPC92YXJsaXN0ZW50cnk+CisKKwkgICA8dmFybGlzdGVudHJ5Pjx0ZXJtPlNvZnR3YXJlIHJlc2V0PC90ZXJtPgorCSAgIDxsaXN0aXRlbT4KKwkgICA8cGFyYT4KKwkgICBUaGlzIGlzIGFjaGlldmVkIGJ5IHR1cm5pbmcgQ09OVFJPTCBTUlNUIGJpdCBvbiBmb3IgYXQKKwkgICBsZWFzdCA1dXMuICBCb3RoIFBBVEEgYW5kIFNBVEEgc3VwcG9ydCBpdCBidXQsIGluIGNhc2Ugb2YKKwkgICBTQVRBLCB0aGlzIG1heSByZXF1aXJlIGNvbnRyb2xsZXItc3BlY2lmaWMgc3VwcG9ydCBhcyB0aGUKKwkgICBzZWNvbmQgUmVnaXN0ZXIgRklTIHRvIGNsZWFyIFNSU1Qgc2hvdWxkIGJlIHRyYW5zbWl0dGVkCisJICAgd2hpbGUgQlNZIGJpdCBpcyBzdGlsbCBzZXQuICBOb3RlIHRoYXQgb24gUEFUQSwgdGhpcyByZXNldHMKKwkgICBib3RoIG1hc3RlciBhbmQgc2xhdmUgZGV2aWNlcyBvbiBhIGNoYW5uZWwuCisJICAgPC9wYXJhPgorCSAgIDwvbGlzdGl0ZW0+CisJICAgPC92YXJsaXN0ZW50cnk+CisKKwkgICA8dmFybGlzdGVudHJ5Pjx0ZXJtPkVYRUNVVEUgREVWSUNFIERJQUdOT1NUSUMgY29tbWFuZDwvdGVybT4KKwkgICA8bGlzdGl0ZW0+CisJICAgPHBhcmE+CisJICAgQWx0aG91Z2ggQVRBL0FUQVBJIHN0YW5kYXJkIGRvZXNuJ3QgZGVzY3JpYmUgZXhhY3RseSwgRURECisJICAgaW1wbGllcyBzb21lIGxldmVsIG9mIHJlc2V0dGluZywgcG9zc2libHkgc2ltaWxhciBsZXZlbAorCSAgIHdpdGggc29mdHdhcmUgcmVzZXQuICBIb3N0LXNpZGUgRUREIHByb3RvY29sIGNhbiBiZSBoYW5kbGVkCisJICAgd2l0aCBub3JtYWwgY29tbWFuZCBwcm9jZXNzaW5nIGFuZCBtb3N0IFNBVEEgY29udHJvbGxlcnMKKwkgICBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgRUREJ3MganVzdCBsaWtlIG90aGVyIGNvbW1hbmRzLgorCSAgIEFzIGluIHNvZnR3YXJlIHJlc2V0LCBFREQgYWZmZWN0cyBib3RoIGRldmljZXMgb24gYSBQQVRBCisJICAgYnVzLgorCSAgIDwvcGFyYT4KKwkgICA8cGFyYT4KKwkgICBBbHRob3VnaCBFREQgZG9lcyByZXNldCBkZXZpY2VzLCB0aGlzIGRvZXNuJ3Qgc3VpdCBlcnJvcgorCSAgIGhhbmRsaW5nIGFzIEVERCBjYW5ub3QgYmUgaXNzdWVkIHdoaWxlIEJTWSBpcyBzZXQgYW5kIGl0J3MKKwkgICB1bmNsZWFyIGhvdyBpdCB3aWxsIGFjdCB3aGVuIGRldmljZSBpcyBpbiB1bmtub3duL3dlaXJkCisJICAgc3RhdGUuCisJICAgPC9wYXJhPgorCSAgIDwvbGlzdGl0ZW0+CisJICAgPC92YXJsaXN0ZW50cnk+CisKKwkgICA8dmFybGlzdGVudHJ5Pjx0ZXJtPkFUQVBJIERFVklDRSBSRVNFVCBjb21tYW5kPC90ZXJtPgorCSAgIDxsaXN0aXRlbT4KKwkgICA8cGFyYT4KKwkgICBUaGlzIGlzIHZlcnkgc2ltaWxhciB0byBzb2Z0d2FyZSByZXNldCBleGNlcHQgdGhhdCByZXNldAorCSAgIGNhbiBiZSByZXN0cmljdGVkIHRvIHRoZSBzZWxlY3RlZCBkZXZpY2Ugd2l0aG91dCBhZmZlY3RpbmcKKwkgICB0aGUgb3RoZXIgZGV2aWNlIHNoYXJpbmcgdGhlIGNhYmxlLgorCSAgIDwvcGFyYT4KKwkgICA8L2xpc3RpdGVtPgorCSAgIDwvdmFybGlzdGVudHJ5PgorCisJICAgPHZhcmxpc3RlbnRyeT48dGVybT5TQVRBIHBoeSByZXNldDwvdGVybT4KKwkgICA8bGlzdGl0ZW0+CisJICAgPHBhcmE+CisJICAgVGhpcyBpcyB0aGUgcHJlZmVycmVkIHdheSBvZiByZXNldHRpbmcgYSBTQVRBIGRldmljZS4gIEluCisJICAgZWZmZWN0LCBpdCdzIGlkZW50aWNhbCB0byBQQVRBIGhhcmR3YXJlIHJlc2V0LiAgTm90ZSB0aGF0CisJICAgdGhpcyBjYW4gYmUgZG9uZSB3aXRoIHRoZSBzdGFuZGFyZCBTQ1IgQ29udHJvbCByZWdpc3Rlci4KKwkgICBBcyBzdWNoLCBpdCdzIHVzdWFsbHkgZWFzaWVyIHRvIGltcGxlbWVudCB0aGFuIHNvZnR3YXJlCisJICAgcmVzZXQuCisJICAgPC9wYXJhPgorCSAgIDwvbGlzdGl0ZW0+CisJICAgPC92YXJsaXN0ZW50cnk+CisKKwk8L3ZhcmlhYmxlbGlzdD4KKworCTxwYXJhPgorCU9uZSBtb3JlIHRoaW5nIHRvIGNvbnNpZGVyIHdoZW4gcmVzZXR0aW5nIGRldmljZXMgaXMgdGhhdAorCXJlc2V0dGluZyBjbGVhcnMgY2VydGFpbiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgYW5kIHRoZXkKKwluZWVkIHRvIGJlIHNldCB0byB0aGVpciBwcmV2aW91cyBvciBuZXdseSBhZGp1c3RlZCB2YWx1ZXMKKwlhZnRlciByZXNldC4KKwk8L3BhcmE+CisKKwk8cGFyYT4KKwlQYXJhbWV0ZXJzIGFmZmVjdGVkIGFyZS4KKwk8L3BhcmE+CisKKwk8aXRlbWl6ZWRsaXN0PgorCisJPGxpc3RpdGVtPgorCTxwYXJhPgorCUNIUyBzZXQgdXAgd2l0aCBJTklUSUFMSVpFIERFVklDRSBQQVJBTUVURVJTIChzZWxkb20gdXNlZCkKKwk8L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwk8cGFyYT4KKwlQYXJhbWV0ZXJzIHNldCB3aXRoIFNFVCBGRUFUVVJFUyBpbmNsdWRpbmcgdHJhbnNmZXIgbW9kZSBzZXR0aW5nCisJPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJPHBhcmE+CisJQmxvY2sgY291bnQgc2V0IHdpdGggU0VUIE1VTFRJUExFIE1PREUKKwk8L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwk8cGFyYT4KKwlPdGhlciBwYXJhbWV0ZXJzIChTRVQgTUFYLCBNRURJQSBMT0NLLi4uKQorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPC9pdGVtaXplZGxpc3Q+CisKKwk8cGFyYT4KKwlBVEEvQVRBUEkgc3RhbmRhcmQgc3BlY2lmaWVzIHRoYXQgc29tZSBwYXJhbWV0ZXJzIG11c3QgYmUKKwltYWludGFpbmVkIGFjcm9zcyBoYXJkd2FyZSBvciBzb2Z0d2FyZSByZXNldCwgYnV0IGRvZXNuJ3QKKwlzdHJpY3RseSBzcGVjaWZ5IGFsbCBvZiB0aGVtLiAgQWx3YXlzIHJlY29uZmlndXJpbmcgbmVlZGVkCisJcGFyYW1ldGVycyBhZnRlciByZXNldCBpcyByZXF1aXJlZCBmb3Igcm9idXN0bmVzcy4gIE5vdGUgdGhhdAorCXRoaXMgYWxzbyBhcHBsaWVzIHdoZW4gcmVzdW1pbmcgZnJvbSBkZWVwIHNsZWVwIChwb3dlci1vZmYpLgorCTwvcGFyYT4KKworCTxwYXJhPgorCUFsc28sIEFUQS9BVEFQSSBzdGFuZGFyZCByZXF1aXJlcyB0aGF0IElERU5USUZZIERFVklDRSAvCisJSURFTlRJRlkgUEFDS0VUIERFVklDRSBpcyBpc3N1ZWQgYWZ0ZXIgYW55IGNvbmZpZ3VyYXRpb24KKwlwYXJhbWV0ZXIgaXMgdXBkYXRlZCBvciBhIGhhcmR3YXJlIHJlc2V0IGFuZCB0aGUgcmVzdWx0IHVzZWQKKwlmb3IgZnVydGhlciBvcGVyYXRpb24uICBPUyBkcml2ZXIgaXMgcmVxdWlyZWQgdG8gaW1wbGVtZW50CisJcmV2YWxpZGF0aW9uIG1lY2hhbmlzbSB0byBzdXBwb3J0IHRoaXMuCisJPC9wYXJhPgorCisgICAgIDwvc2VjdDI+CisKKyAgICAgPHNlY3QyIGlkPSJleHJlY1JlY29uZiI+CisgICAgICAgIDx0aXRsZT5SZWNvbmZpZ3VyZSB0cmFuc3BvcnQ8L3RpdGxlPgorCisJPHBhcmE+CisJRm9yIGJvdGggUEFUQSBhbmQgU0FUQSwgYSBsb3Qgb2YgY29ybmVycyBhcmUgY3V0IGZvciBjaGVhcAorCWNvbm5lY3RvcnMsIGNhYmxlcyBvciBjb250cm9sbGVycyBhbmQgaXQncyBxdWl0ZSBjb21tb24gdG8gc2VlCisJaGlnaCB0cmFuc21pc3Npb24gZXJyb3IgcmF0ZS4gIFRoaXMgY2FuIGJlIG1pdGlnYXRlZCBieQorCWxvd2VyaW5nIHRyYW5zbWlzc2lvbiBzcGVlZC4KKwk8L3BhcmE+CisKKwk8cGFyYT4KKwlUaGUgZm9sbG93aW5nIGlzIGEgcG9zc2libGUgc2NoZW1lIEplZmYgR2FyemlrIHN1Z2dlc3RlZC4KKwk8L3BhcmE+CisKKwk8YmxvY2txdW90ZT4KKwk8cGFyYT4KKwlJZiBtb3JlIHRoYW4gJE4gKDM/KSB0cmFuc21pc3Npb24gZXJyb3JzIGhhcHBlbiBpbiAxNSBtaW51dGVzLAorCTwvcGFyYT4JCisJPGl0ZW1pemVkbGlzdD4KKwk8bGlzdGl0ZW0+CisJPHBhcmE+CisJaWYgU0FUQSwgZGVjcmVhc2UgU0FUQSBQSFkgc3BlZWQuICBpZiBzcGVlZCBjYW5ub3QgYmUgZGVjcmVhc2VkLAorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCTxsaXN0aXRlbT4KKwk8cGFyYT4KKwlkZWNyZWFzZSBVRE1BIHhmZXIgc3BlZWQuICBpZiBhdCBVRE1BMCwgc3dpdGNoIHRvIFBJTzQsCisJPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisJPGxpc3RpdGVtPgorCTxwYXJhPgorCWRlY3JlYXNlIFBJTyB4ZmVyIHNwZWVkLiAgaWYgYXQgUElPMywgY29tcGxhaW4sIGJ1dCBjb250aW51ZQorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCTwvaXRlbWl6ZWRsaXN0PgorCTwvYmxvY2txdW90ZT4KKworICAgICA8L3NlY3QyPgorCisgIDwvc2VjdDE+CisKKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJQaWl4SW50Ij4KKyAgICAgPHRpdGxlPmF0YV9waWl4IEludGVybmFsczwvdGl0bGU+CishSWRyaXZlcnMvYXRhL2F0YV9waWl4LmMKKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJTSUxJbnQiPgorICAgICA8dGl0bGU+c2F0YV9zaWwgSW50ZXJuYWxzPC90aXRsZT4KKyFJZHJpdmVycy9hdGEvc2F0YV9zaWwuYworICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImxpYmF0YVRoYW5rcyI+CisgICAgIDx0aXRsZT5UaGFua3M8L3RpdGxlPgorICA8cGFyYT4KKyAgVGhlIGJ1bGsgb2YgdGhlIEFUQSBrbm93bGVkZ2UgY29tZXMgdGhhbmtzIHRvIGxvbmcgY29udmVyc2F0aW9ucyB3aXRoCisgIEFuZHJlIEhlZHJpY2sgKHd3dy5saW51eC1pZGUub3JnKSwgYW5kIGxvbmcgaG91cnMgcG9uZGVyaW5nIHRoZSBBVEEKKyAgYW5kIFNDU0kgc3BlY2lmaWNhdGlvbnMuCisgIDwvcGFyYT4KKyAgPHBhcmE+CisgIFRoYW5rcyB0byBBbGFuIENveCBmb3IgcG9pbnRpbmcgb3V0IHNpbWlsYXJpdGllcyAKKyAgYmV0d2VlbiBTQVRBIGFuZCBTQ1NJLCBhbmQgaW4gZ2VuZXJhbCBmb3IgbW90aXZhdGlvbiB0byBoYWNrIG9uCisgIGxpYmF0YS4KKyAgPC9wYXJhPgorICA8cGFyYT4KKyAgbGliYXRhJ3MgZGV2aWNlIGRldGVjdGlvbgorICBtZXRob2QsIGF0YV9waW9fZGV2Y2hrLCBhbmQgaW4gZ2VuZXJhbCBhbGwgdGhlIGVhcmx5IHByb2Jpbmcgd2FzCisgIGJhc2VkIG9uIGV4dGVuc2l2ZSBzdHVkeSBvZiBIYWxlIExhbmRpcydzIHByb2JlL3Jlc2V0IGNvZGUgaW4gaGlzCisgIEFUQURSVlIgZHJpdmVyICh3d3cuYXRhLWF0YXBpLmNvbSkuCisgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorCis8L2Jvb2s+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbGlicnMudG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9saWJycy50bXBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0ZjIxMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbGlicnMudG1wbApAQCAtMCwwICsxLDI4OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4xLjIvL0VOIgorCSJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMS4yL2RvY2Jvb2t4LmR0ZCIgW10+CisKKzxib29rIGlkPSJSZWVkLVNvbG9tb24tTGlicmFyeS1HdWlkZSI+CisgPGJvb2tpbmZvPgorICA8dGl0bGU+UmVlZC1Tb2xvbW9uIExpYnJhcnkgUHJvZ3JhbW1pbmcgSW50ZXJmYWNlPC90aXRsZT4KKyAgCisgIDxhdXRob3Jncm91cD4KKyAgIDxhdXRob3I+CisgICAgPGZpcnN0bmFtZT5UaG9tYXM8L2ZpcnN0bmFtZT4KKyAgICA8c3VybmFtZT5HbGVpeG5lcjwvc3VybmFtZT4KKyAgICA8YWZmaWxpYXRpb24+CisgICAgIDxhZGRyZXNzPgorICAgICAgPGVtYWlsPnRnbHhAbGludXRyb25peC5kZTwvZW1haWw+CisgICAgIDwvYWRkcmVzcz4KKyAgICA8L2FmZmlsaWF0aW9uPgorICAgPC9hdXRob3I+CisgIDwvYXV0aG9yZ3JvdXA+CisKKyAgPGNvcHlyaWdodD4KKyAgIDx5ZWFyPjIwMDQ8L3llYXI+CisgICA8aG9sZGVyPlRob21hcyBHbGVpeG5lcjwvaG9sZGVyPgorICA8L2NvcHlyaWdodD4KKworICA8bGVnYWxub3RpY2U+CisgICA8cGFyYT4KKyAgICAgVGhpcyBkb2N1bWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlCisgICAgIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgTGljZW5zZSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgICA8L3BhcmE+CisgICAgICAKKyAgIDxwYXJhPgorICAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCisgICAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQKKyAgICAgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorICAgICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgICA8L3BhcmE+CisgICAgICAKKyAgIDxwYXJhPgorICAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorICAgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICAgICBNQSAwMjExMS0xMzA3IFVTQQorICAgPC9wYXJhPgorICAgICAgCisgICA8cGFyYT4KKyAgICAgRm9yIG1vcmUgZGV0YWlscyBzZWUgdGhlIGZpbGUgQ09QWUlORyBpbiB0aGUgc291cmNlCisgICAgIGRpc3RyaWJ1dGlvbiBvZiBMaW51eC4KKyAgIDwvcGFyYT4KKyAgPC9sZWdhbG5vdGljZT4KKyA8L2Jvb2tpbmZvPgorCis8dG9jPjwvdG9jPgorCisgIDxjaGFwdGVyIGlkPSJpbnRybyI+CisgICAgICA8dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KKyAgPHBhcmE+CisgIAlUaGUgZ2VuZXJpYyBSZWVkLVNvbG9tb24gTGlicmFyeSBwcm92aWRlcyBlbmNvZGluZywgZGVjb2RpbmcKKwlhbmQgZXJyb3IgY29ycmVjdGlvbiBmdW5jdGlvbnMuCisgIDwvcGFyYT4KKyAgPHBhcmE+CisgIAlSZWVkLVNvbG9tb24gY29kZXMgYXJlIHVzZWQgaW4gY29tbXVuaWNhdGlvbiBhbmQgc3RvcmFnZQorCWFwcGxpY2F0aW9ucyB0byBlbnN1cmUgZGF0YSBpbnRlZ3JpdHkuIAorICA8L3BhcmE+CisgIDxwYXJhPgorICAJVGhpcyBkb2N1bWVudGF0aW9uIGlzIHByb3ZpZGVkIGZvciBkZXZlbG9wZXJzIHdobyB3YW50IHRvIHV0aWxpemUKKwl0aGUgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHRoZSBsaWJyYXJ5LgorICA8L3BhcmE+CisgIDwvY2hhcHRlcj4KKyAgCisgIDxjaGFwdGVyIGlkPSJidWdzIj4KKyAgICAgPHRpdGxlPktub3duIEJ1Z3MgQW5kIEFzc3VtcHRpb25zPC90aXRsZT4KKyAgPHBhcmE+CisJTm9uZS4JCisgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJ1c2FnZSI+CisgICAgIAk8dGl0bGU+VXNhZ2U8L3RpdGxlPgorCTxwYXJhPgorCQlUaGlzIGNoYXB0ZXIgcHJvdmlkZXMgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSB0aGUgbGlicmFyeS4KKwk8L3BhcmE+CisJPHNlY3QxPgorCQk8dGl0bGU+SW5pdGlhbGl6aW5nPC90aXRsZT4KKwkJPHBhcmE+CisJCQlUaGUgaW5pdCBmdW5jdGlvbiBpbml0X3JzIHJldHVybnMgYSBwb2ludGVyIHRvIGFuCisJCQlycyBkZWNvZGVyIHN0cnVjdHVyZSwgd2hpY2ggaG9sZHMgdGhlIG5lY2Vzc2FyeQorCQkJaW5mb3JtYXRpb24gZm9yIGVuY29kaW5nLCBkZWNvZGluZyBhbmQgZXJyb3IgY29ycmVjdGlvbgorCQkJd2l0aCB0aGUgZ2l2ZW4gcG9seW5vbWlhbC4gSXQgZWl0aGVyIHVzZXMgYW4gZXhpc3RpbmcKKwkJCW1hdGNoaW5nIGRlY29kZXIgb3IgY3JlYXRlcyBhIG5ldyBvbmUuIE9uIGNyZWF0aW9uIGFsbAorCQkJdGhlIGxvb2t1cCB0YWJsZXMgZm9yIGZhc3QgZW4vZGVjb2RpbmcgYXJlIGNyZWF0ZWQuCisJCQlUaGUgZnVuY3Rpb24gbWF5IHRha2UgYSB3aGlsZSwgc28gbWFrZSBzdXJlIG5vdCB0byAKKwkJCWNhbGwgaXQgaW4gY3JpdGljYWwgY29kZSBwYXRocy4KKwkJPC9wYXJhPgorCQk8cHJvZ3JhbWxpc3Rpbmc+CisvKiB0aGUgUmVlZCBTb2xvbW9uIGNvbnRyb2wgc3RydWN0dXJlICovCitzdGF0aWMgc3RydWN0IHJzX2NvbnRyb2wgKnJzX2RlY29kZXI7CisKKy8qIFN5bWJvbHNpemUgaXMgMTAgKGJpdHMpCisgKiBQcmltaXRpdmUgcG9seW5vbWlhbCBpcyB4XjEwK3heMysxCisgKiBmaXJzdCBjb25zZWN1dGl2ZSByb290IGlzIDAKKyAqIHByaW1pdGl2ZSBlbGVtZW50IHRvIGdlbmVyYXRlIHJvb3RzID0gMQorICogZ2VuZXJhdG9yIHBvbHlub21pYWwgZGVncmVlIChudW1iZXIgb2Ygcm9vdHMpID0gNgorICovCityc19kZWNvZGVyID0gaW5pdF9ycyAoMTAsIDB4NDA5LCAwLCAxLCA2KTsKKwkJPC9wcm9ncmFtbGlzdGluZz4KKwk8L3NlY3QxPgorCTxzZWN0MT4KKwkJPHRpdGxlPkVuY29kaW5nPC90aXRsZT4KKwkJPHBhcmE+CisJCQlUaGUgZW5jb2RlciBjYWxjdWxhdGVzIHRoZSBSZWVkLVNvbG9tb24gY29kZSBvdmVyCisJCQl0aGUgZ2l2ZW4gZGF0YSBsZW5ndGggYW5kIHN0b3JlcyB0aGUgcmVzdWx0IGluIAorCQkJdGhlIHBhcml0eSBidWZmZXIuIE5vdGUgdGhhdCB0aGUgcGFyaXR5IGJ1ZmZlciBtdXN0CisJCQliZSBpbml0aWFsaXplZCBiZWZvcmUgY2FsbGluZyB0aGUgZW5jb2Rlci4KKwkJPC9wYXJhPgorCQk8cGFyYT4KKwkJCVRoZSBleHBhbmRlZCBkYXRhIGNhbiBiZSBpbnZlcnRlZCBvbiB0aGUgZmx5IGJ5CisJCQlwcm92aWRpbmcgYSBub24temVybyBpbnZlcnNpb24gbWFzay4gVGhlIGV4cGFuZGVkIGRhdGEgaXMKKwkJCVhPUidlZCB3aXRoIHRoZSBtYXNrLiBUaGlzIGlzIHVzZWQgZS5nLiBmb3IgRkxBU0gKKwkJCUVDQywgd2hlcmUgdGhlIGFsbCAweEZGIGlzIGludmVydGVkIHRvIGFuIGFsbCAweDAwLgorCQkJVGhlIFJlZWQtU29sb21vbiBjb2RlIGZvciBhbGwgMHgwMCBpcyBhbGwgMHgwMC4gVGhlCisJCQljb2RlIGlzIGludmVydGVkIGJlZm9yZSBzdG9yaW5nIHRvIEZMQVNIIHNvIGl0IGlzIDB4RkYKKwkJCXRvby4gVGhpcyBwcmV2ZW50cyB0aGF0IHJlYWRpbmcgZnJvbSBhbiBlcmFzZWQgRkxBU0gKKwkJCXJlc3VsdHMgaW4gRUNDIGVycm9ycy4KKwkJPC9wYXJhPgorCQk8cGFyYT4KKwkJCVRoZSBkYXRhYnl0ZXMgYXJlIGV4cGFuZGVkIHRvIHRoZSBnaXZlbiBzeW1ib2wgc2l6ZQorCQkJb24gdGhlIGZseS4gVGhlcmUgaXMgbm8gc3VwcG9ydCBmb3IgZW5jb2RpbmcgY29udGludW91cworCQkJYml0c3RyZWFtcyB3aXRoIGEgc3ltYm9sIHNpemUgIT0gOCBhdCB0aGUgbW9tZW50LiBJZgorCQkJaXQgaXMgbmVjZXNzYXJ5IGl0IHNob3VsZCBiZSBub3QgYSBiaWcgZGVhbCB0byBpbXBsZW1lbnQKKwkJCXN1Y2ggZnVuY3Rpb25hbGl0eS4KKwkJPC9wYXJhPgorCQk8cHJvZ3JhbWxpc3Rpbmc+CisvKiBQYXJpdHkgYnVmZmVyLiBTaXplID0gbnVtYmVyIG9mIHJvb3RzICovCit1aW50MTZfdCBwYXJbNl07CisvKiBJbml0aWFsaXplIHRoZSBwYXJpdHkgYnVmZmVyICovCittZW1zZXQocGFyLCAwLCBzaXplb2YocGFyKSk7CisvKiBFbmNvZGUgNTEyIGJ5dGUgaW4gZGF0YTguIFN0b3JlIHBhcml0eSBpbiBidWZmZXIgcGFyICovCitlbmNvZGVfcnM4IChyc19kZWNvZGVyLCBkYXRhOCwgNTEyLCBwYXIsIDApOworCQk8L3Byb2dyYW1saXN0aW5nPgorCTwvc2VjdDE+CisJPHNlY3QxPgorCQk8dGl0bGU+RGVjb2Rpbmc8L3RpdGxlPgorCQk8cGFyYT4KKwkJCVRoZSBkZWNvZGVyIGNhbGN1bGF0ZXMgdGhlIHN5bmRyb21lIG92ZXIKKwkJCXRoZSBnaXZlbiBkYXRhIGxlbmd0aCBhbmQgdGhlIHJlY2VpdmVkIHBhcml0eSBzeW1ib2xzCisJCQlhbmQgY29ycmVjdHMgZXJyb3JzIGluIHRoZSBkYXRhLgorCQk8L3BhcmE+CisJCTxwYXJhPgorCQkJSWYgYSBzeW5kcm9tZSBpcyBhdmFpbGFibGUgZnJvbSBhIGhhcmR3YXJlIGRlY29kZXIKKwkJCXRoZW4gdGhlIHN5bmRyb21lIGNhbGN1bGF0aW9uIGlzIHNraXBwZWQuCisJCTwvcGFyYT4KKwkJPHBhcmE+CisJCQlUaGUgY29ycmVjdGlvbiBvZiB0aGUgZGF0YSBidWZmZXIgY2FuIGJlIHN1cHByZXNzZWQKKwkJCWJ5IHByb3ZpZGluZyBhIGNvcnJlY3Rpb24gcGF0dGVybiBidWZmZXIgYW5kIGFuIGVycm9yCisJCQlsb2NhdGlvbiBidWZmZXIgdG8gdGhlIGRlY29kZXIuIFRoZSBkZWNvZGVyIHN0b3JlcyB0aGUKKwkJCWNhbGN1bGF0ZWQgZXJyb3IgbG9jYXRpb24gYW5kIHRoZSBjb3JyZWN0aW9uIGJpdG1hc2sKKwkJCWluIHRoZSBnaXZlbiBidWZmZXJzLiBUaGlzIGlzIHVzZWZ1bCBmb3IgaGFyZHdhcmUKKwkJCWRlY29kZXJzIHdoaWNoIHVzZSBhIHdlaXJkIGJpdCBvcmRlcmluZyBzY2hlbWUuCisJCTwvcGFyYT4KKwkJPHBhcmE+CisJCQlUaGUgZGF0YWJ5dGVzIGFyZSBleHBhbmRlZCB0byB0aGUgZ2l2ZW4gc3ltYm9sIHNpemUKKwkJCW9uIHRoZSBmbHkuIFRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIGRlY29kaW5nIGNvbnRpbnVvdXMKKwkJCWJpdHN0cmVhbXMgd2l0aCBhIHN5bWJvbHNpemUgIT0gOCBhdCB0aGUgbW9tZW50LiBJZgorCQkJaXQgaXMgbmVjZXNzYXJ5IGl0IHNob3VsZCBiZSBub3QgYSBiaWcgZGVhbCB0byBpbXBsZW1lbnQKKwkJCXN1Y2ggZnVuY3Rpb25hbGl0eS4KKwkJPC9wYXJhPgorCQkKKwkJPHNlY3QyPgorCQk8dGl0bGU+CisJCQlEZWNvZGluZyB3aXRoIHN5bmRyb21lIGNhbGN1bGF0aW9uLCBkaXJlY3QgZGF0YSBjb3JyZWN0aW9uCisJCTwvdGl0bGU+CisJCTxwcm9ncmFtbGlzdGluZz4KKy8qIFBhcml0eSBidWZmZXIuIFNpemUgPSBudW1iZXIgb2Ygcm9vdHMgKi8KK3VpbnQxNl90IHBhcls2XTsKK3VpbnQ4X3QgIGRhdGFbNTEyXTsKK2ludCBudW1lcnI7CisvKiBSZWNlaXZlIGRhdGEgKi8KKy4uLi4uCisvKiBSZWNlaXZlIHBhcml0eSAqLworLi4uLi4KKy8qIERlY29kZSA1MTIgYnl0ZSBpbiBkYXRhOC4qLworbnVtZXJyID0gZGVjb2RlX3JzOCAocnNfZGVjb2RlciwgZGF0YTgsIHBhciwgNTEyLCBOVUxMLCAwLCBOVUxMLCAwLCBOVUxMKTsKKwkJPC9wcm9ncmFtbGlzdGluZz4KKwkJPC9zZWN0Mj4KKworCQk8c2VjdDI+CisJCTx0aXRsZT4KKwkJCURlY29kaW5nIHdpdGggc3luZHJvbWUgZ2l2ZW4gYnkgaGFyZHdhcmUgZGVjb2RlciwgZGlyZWN0IGRhdGEgY29ycmVjdGlvbgorCQk8L3RpdGxlPgorCQk8cHJvZ3JhbWxpc3Rpbmc+CisvKiBQYXJpdHkgYnVmZmVyLiBTaXplID0gbnVtYmVyIG9mIHJvb3RzICovCit1aW50MTZfdCBwYXJbNl0sIHN5bls2XTsKK3VpbnQ4X3QgIGRhdGFbNTEyXTsKK2ludCBudW1lcnI7CisvKiBSZWNlaXZlIGRhdGEgKi8KKy4uLi4uCisvKiBSZWNlaXZlIHBhcml0eSAqLworLi4uLi4KKy8qIEdldCBzeW5kcm9tZSBmcm9tIGhhcmR3YXJlIGRlY29kZXIgKi8KKy4uLi4uCisvKiBEZWNvZGUgNTEyIGJ5dGUgaW4gZGF0YTguKi8KK251bWVyciA9IGRlY29kZV9yczggKHJzX2RlY29kZXIsIGRhdGE4LCBwYXIsIDUxMiwgc3luLCAwLCBOVUxMLCAwLCBOVUxMKTsKKwkJPC9wcm9ncmFtbGlzdGluZz4KKwkJPC9zZWN0Mj4KKworCQk8c2VjdDI+CisJCTx0aXRsZT4KKwkJCURlY29kaW5nIHdpdGggc3luZHJvbWUgZ2l2ZW4gYnkgaGFyZHdhcmUgZGVjb2Rlciwgbm8gZGlyZWN0IGRhdGEgY29ycmVjdGlvbi4KKwkJPC90aXRsZT4KKwkJPHBhcmE+CisJCQlOb3RlOiBJdCdzIG5vdCBuZWNlc3NhcnkgdG8gZ2l2ZSBkYXRhIGFuZCByZWNlaXZlZCBwYXJpdHkgdG8gdGhlIGRlY29kZXIuCisJCTwvcGFyYT4KKwkJPHByb2dyYW1saXN0aW5nPgorLyogUGFyaXR5IGJ1ZmZlci4gU2l6ZSA9IG51bWJlciBvZiByb290cyAqLwordWludDE2X3QgcGFyWzZdLCBzeW5bNl0sIGNvcnJbOF07Cit1aW50OF90ICBkYXRhWzUxMl07CitpbnQgbnVtZXJyLCBlcnJwb3NbOF07CisvKiBSZWNlaXZlIGRhdGEgKi8KKy4uLi4uCisvKiBSZWNlaXZlIHBhcml0eSAqLworLi4uLi4KKy8qIEdldCBzeW5kcm9tZSBmcm9tIGhhcmR3YXJlIGRlY29kZXIgKi8KKy4uLi4uCisvKiBEZWNvZGUgNTEyIGJ5dGUgaW4gZGF0YTguKi8KK251bWVyciA9IGRlY29kZV9yczggKHJzX2RlY29kZXIsIE5VTEwsIE5VTEwsIDUxMiwgc3luLCAwLCBlcnJwb3MsIDAsIGNvcnIpOworZm9yIChpID0gMDsgaSAmbHQ7IG51bWVycjsgaSsrKSB7CisJZG9fZXJyb3JfY29ycmVjdGlvbl9pbl95b3VyX2J1ZmZlcihlcnJwb3NbaV0sIGNvcnJbaV0pOworfQorCQk8L3Byb2dyYW1saXN0aW5nPgorCQk8L3NlY3QyPgorCTwvc2VjdDE+CisJPHNlY3QxPgorCQk8dGl0bGU+Q2xlYW51cDwvdGl0bGU+CisJCTxwYXJhPgorCQkJVGhlIGZ1bmN0aW9uIGZyZWVfcnMgZnJlZXMgdGhlIGFsbG9jYXRlZCByZXNvdXJjZXMsCisJCQlpZiB0aGUgY2FsbGVyIGlzIHRoZSBsYXN0IHVzZXIgb2YgdGhlIGRlY29kZXIuCisJCTwvcGFyYT4KKwkJPHByb2dyYW1saXN0aW5nPgorLyogUmVsZWFzZSByZXNvdXJjZXMgKi8KK2ZyZWVfcnMocnNfZGVjb2Rlcik7CisJCTwvcHJvZ3JhbWxpc3Rpbmc+CisJPC9zZWN0MT4KKworICA8L2NoYXB0ZXI+CisJCisgIDxjaGFwdGVyIGlkPSJzdHJ1Y3RzIj4KKyAgICAgPHRpdGxlPlN0cnVjdHVyZXM8L3RpdGxlPgorICAgICA8cGFyYT4KKyAgICAgVGhpcyBjaGFwdGVyIGNvbnRhaW5zIHRoZSBhdXRvZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24gb2YgdGhlIHN0cnVjdHVyZXMgd2hpY2ggYXJlCisgICAgIHVzZWQgaW4gdGhlIFJlZWQtU29sb21vbiBMaWJyYXJ5IGFuZCBhcmUgcmVsZXZhbnQgZm9yIGEgZGV2ZWxvcGVyLgorICAgICA8L3BhcmE+CishSWluY2x1ZGUvbGludXgvcnNsaWIuaAorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9InB1YmZ1bmN0aW9ucyI+CisgICAgIDx0aXRsZT5QdWJsaWMgRnVuY3Rpb25zIFByb3ZpZGVkPC90aXRsZT4KKyAgICAgPHBhcmE+CisgICAgIFRoaXMgY2hhcHRlciBjb250YWlucyB0aGUgYXV0b2dlbmVyYXRlZCBkb2N1bWVudGF0aW9uIG9mIHRoZSBSZWVkLVNvbG9tb24gZnVuY3Rpb25zCisgICAgIHdoaWNoIGFyZSBleHBvcnRlZC4KKyAgICAgPC9wYXJhPgorIUVsaWIvcmVlZF9zb2xvbW9uL3JlZWRfc29sb21vbi5jCisgIDwvY2hhcHRlcj4KKyAgCisgIDxjaGFwdGVyIGlkPSJjcmVkaXRzIj4KKyAgICAgPHRpdGxlPkNyZWRpdHM8L3RpdGxlPgorCTxwYXJhPgorCQlUaGUgbGlicmFyeSBjb2RlIGZvciBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgd2FzIHdyaXR0ZW4gYnkgUGhpbCBLYXJuLgorCTwvcGFyYT4KKwk8cHJvZ3JhbWxpc3Rpbmc+CisJCUNvcHlyaWdodCAyMDAyLCBQaGlsIEthcm4sIEtBOVEKKyAJCU1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkKKwk8L3Byb2dyYW1saXN0aW5nPgorCTxwYXJhPgorCQlUaGUgd3JhcHBlciBmdW5jdGlvbnMgYW5kIGludGVyZmFjZXMgYXJlIHdyaXR0ZW4gYnkgVGhvbWFzIEdsZWl4bmVyLgorCTwvcGFyYT4KKwk8cGFyYT4KKwkJTWFueSB1c2VycyBoYXZlIHByb3ZpZGVkIGJ1Z2ZpeGVzLCBpbXByb3ZlbWVudHMgYW5kIGhlbHBpbmcgaGFuZHMgZm9yIHRlc3RpbmcuCisJCVRoYW5rcyBhIGxvdC4KKwk8L3BhcmE+CisJPHBhcmE+CisJCVRoZSBmb2xsb3dpbmcgcGVvcGxlIGhhdmUgY29udHJpYnV0ZWQgdG8gdGhpcyBkb2N1bWVudDoKKwk8L3BhcmE+CisJPHBhcmE+CisJCVRob21hcyBHbGVpeG5lcjxlbWFpbD50Z2x4QGxpbnV0cm9uaXguZGU8L2VtYWlsPgorCTwvcGFyYT4KKyAgPC9jaGFwdGVyPgorPC9ib29rPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2xzbS50bXBsIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2xzbS50bXBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlNzY2NGMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbHNtLnRtcGwKQEAgLTAsMCArMSwyNjUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgYXJ0aWNsZSBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMS4yLy9FTiIKKwkiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQiIFtdPgorCis8YXJ0aWNsZSBjbGFzcz0id2hpdGVwYXBlciIgaWQ9IkxpbnV4U2VjdXJpdHlNb2R1bGUiIGxhbmc9ImVuIj4KKyA8YXJ0aWNsZWluZm8+CisgPHRpdGxlPkxpbnV4IFNlY3VyaXR5IE1vZHVsZXM6ICBHZW5lcmFsIFNlY3VyaXR5IEhvb2tzIGZvciBMaW51eDwvdGl0bGU+CisgPGF1dGhvcmdyb3VwPgorIDxhdXRob3I+CisgPGZpcnN0bmFtZT5TdGVwaGVuPC9maXJzdG5hbWU+IAorIDxzdXJuYW1lPlNtYWxsZXk8L3N1cm5hbWU+CisgPGFmZmlsaWF0aW9uPgorIDxvcmduYW1lPk5BSSBMYWJzPC9vcmduYW1lPgorIDxhZGRyZXNzPjxlbWFpbD5zc21hbGxleUBuYWkuY29tPC9lbWFpbD48L2FkZHJlc3M+CisgPC9hZmZpbGlhdGlvbj4KKyA8L2F1dGhvcj4KKyA8YXV0aG9yPgorIDxmaXJzdG5hbWU+VGltb3RoeTwvZmlyc3RuYW1lPiAKKyA8c3VybmFtZT5GcmFzZXI8L3N1cm5hbWU+CisgPGFmZmlsaWF0aW9uPgorIDxvcmduYW1lPk5BSSBMYWJzPC9vcmduYW1lPgorIDxhZGRyZXNzPjxlbWFpbD50ZnJhc2VyQG5haS5jb208L2VtYWlsPjwvYWRkcmVzcz4KKyA8L2FmZmlsaWF0aW9uPgorIDwvYXV0aG9yPgorIDxhdXRob3I+CisgPGZpcnN0bmFtZT5DaHJpczwvZmlyc3RuYW1lPiAKKyA8c3VybmFtZT5WYW5jZTwvc3VybmFtZT4KKyA8YWZmaWxpYXRpb24+CisgPG9yZ25hbWU+TkFJIExhYnM8L29yZ25hbWU+CisgPGFkZHJlc3M+PGVtYWlsPmN2YW5jZUBuYWkuY29tPC9lbWFpbD48L2FkZHJlc3M+CisgPC9hZmZpbGlhdGlvbj4KKyA8L2F1dGhvcj4KKyA8L2F1dGhvcmdyb3VwPgorIDwvYXJ0aWNsZWluZm8+CisKKzxzZWN0MSBpZD0iSW50cm9kdWN0aW9uIj48dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KKworPHBhcmE+CitJbiBNYXJjaCAyMDAxLCB0aGUgTmF0aW9uYWwgU2VjdXJpdHkgQWdlbmN5IChOU0EpIGdhdmUgYSBwcmVzZW50YXRpb24KK2Fib3V0IFNlY3VyaXR5LUVuaGFuY2VkIExpbnV4IChTRUxpbnV4KSBhdCB0aGUgMi41IExpbnV4IEtlcm5lbAorU3VtbWl0LiAgU0VMaW51eCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBmbGV4aWJsZSBhbmQgZmluZS1ncmFpbmVkCitub25kaXNjcmV0aW9uYXJ5IGFjY2VzcyBjb250cm9scyBpbiB0aGUgTGludXgga2VybmVsLCBvcmlnaW5hbGx5CitpbXBsZW1lbnRlZCBhcyBpdHMgb3duIHBhcnRpY3VsYXIga2VybmVsIHBhdGNoLiAgU2V2ZXJhbCBvdGhlcgorc2VjdXJpdHkgcHJvamVjdHMgKGUuZy4gUlNCQUMsIE1lZHVzYSkgaGF2ZSBhbHNvIGRldmVsb3BlZCBmbGV4aWJsZQorYWNjZXNzIGNvbnRyb2wgYXJjaGl0ZWN0dXJlcyBmb3IgdGhlIExpbnV4IGtlcm5lbCwgYW5kIHZhcmlvdXMKK3Byb2plY3RzIGhhdmUgZGV2ZWxvcGVkIHBhcnRpY3VsYXIgYWNjZXNzIGNvbnRyb2wgbW9kZWxzIGZvciBMaW51eAorKGUuZy4gTElEUywgRFRFLCBTdWJEb21haW4pLiAgRWFjaCBwcm9qZWN0IGhhcyBkZXZlbG9wZWQgYW5kCittYWludGFpbmVkIGl0cyBvd24ga2VybmVsIHBhdGNoIHRvIHN1cHBvcnQgaXRzIHNlY3VyaXR5IG5lZWRzLgorPC9wYXJhPgorCis8cGFyYT4KK0luIHJlc3BvbnNlIHRvIHRoZSBOU0EgcHJlc2VudGF0aW9uLCBMaW51cyBUb3J2YWxkcyBtYWRlIGEgc2V0IG9mCityZW1hcmtzIHRoYXQgZGVzY3JpYmVkIGEgc2VjdXJpdHkgZnJhbWV3b3JrIGhlIHdvdWxkIGJlIHdpbGxpbmcgdG8KK2NvbnNpZGVyIGZvciBpbmNsdXNpb24gaW4gdGhlIG1haW5zdHJlYW0gTGludXgga2VybmVsLiAgSGUgZGVzY3JpYmVkIGEKK2dlbmVyYWwgZnJhbWV3b3JrIHRoYXQgd291bGQgcHJvdmlkZSBhIHNldCBvZiBzZWN1cml0eSBob29rcyB0bworY29udHJvbCBvcGVyYXRpb25zIG9uIGtlcm5lbCBvYmplY3RzIGFuZCBhIHNldCBvZiBvcGFxdWUgc2VjdXJpdHkKK2ZpZWxkcyBpbiBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzIGZvciBtYWludGFpbmluZyBzZWN1cml0eSBhdHRyaWJ1dGVzLgorVGhpcyBmcmFtZXdvcmsgY291bGQgdGhlbiBiZSB1c2VkIGJ5IGxvYWRhYmxlIGtlcm5lbCBtb2R1bGVzIHRvCitpbXBsZW1lbnQgYW55IGRlc2lyZWQgbW9kZWwgb2Ygc2VjdXJpdHkuICBMaW51cyBhbHNvIHN1Z2dlc3RlZCB0aGUKK3Bvc3NpYmlsaXR5IG9mIG1pZ3JhdGluZyB0aGUgTGludXggY2FwYWJpbGl0aWVzIGNvZGUgaW50byBzdWNoIGEKK21vZHVsZS4KKzwvcGFyYT4KKworPHBhcmE+CitUaGUgTGludXggU2VjdXJpdHkgTW9kdWxlcyAoTFNNKSBwcm9qZWN0IHdhcyBzdGFydGVkIGJ5IFdpcmVYIHRvCitkZXZlbG9wIHN1Y2ggYSBmcmFtZXdvcmsuICBMU00gaXMgYSBqb2ludCBkZXZlbG9wbWVudCBlZmZvcnQgYnkKK3NldmVyYWwgc2VjdXJpdHkgcHJvamVjdHMsIGluY2x1ZGluZyBJbW11bml4LCBTRUxpbnV4LCBTR0kgYW5kIEphbnVzLAorYW5kIHNldmVyYWwgaW5kaXZpZHVhbHMsIGluY2x1ZGluZyBHcmVnIEtyb2FoLUhhcnRtYW4gYW5kIEphbWVzCitNb3JyaXMsIHRvIGRldmVsb3AgYSBMaW51eCBrZXJuZWwgcGF0Y2ggdGhhdCBpbXBsZW1lbnRzIHRoaXMKK2ZyYW1ld29yay4gIFRoZSBwYXRjaCBpcyBjdXJyZW50bHkgdHJhY2tpbmcgdGhlIDIuNCBzZXJpZXMgYW5kIGlzCit0YXJnZXRlZCBmb3IgaW50ZWdyYXRpb24gaW50byB0aGUgMi41IGRldmVsb3BtZW50IHNlcmllcy4gIFRoaXMKK3RlY2huaWNhbCByZXBvcnQgcHJvdmlkZXMgYW4gb3ZlcnZpZXcgb2YgdGhlIGZyYW1ld29yayBhbmQgdGhlIGV4YW1wbGUKK2NhcGFiaWxpdGllcyBzZWN1cml0eSBtb2R1bGUgcHJvdmlkZWQgYnkgdGhlIExTTSBrZXJuZWwgcGF0Y2guCis8L3BhcmE+CisKKzwvc2VjdDE+CisKKzxzZWN0MSBpZD0iZnJhbWV3b3JrIj48dGl0bGU+TFNNIEZyYW1ld29yazwvdGl0bGU+CisKKzxwYXJhPgorVGhlIExTTSBrZXJuZWwgcGF0Y2ggcHJvdmlkZXMgYSBnZW5lcmFsIGtlcm5lbCBmcmFtZXdvcmsgdG8gc3VwcG9ydAorc2VjdXJpdHkgbW9kdWxlcy4gIEluIHBhcnRpY3VsYXIsIHRoZSBMU00gZnJhbWV3b3JrIGlzIHByaW1hcmlseQorZm9jdXNlZCBvbiBzdXBwb3J0aW5nIGFjY2VzcyBjb250cm9sIG1vZHVsZXMsIGFsdGhvdWdoIGZ1dHVyZQorZGV2ZWxvcG1lbnQgaXMgbGlrZWx5IHRvIGFkZHJlc3Mgb3RoZXIgc2VjdXJpdHkgbmVlZHMgc3VjaCBhcworYXVkaXRpbmcuICBCeSBpdHNlbGYsIHRoZSBmcmFtZXdvcmsgZG9lcyBub3QgcHJvdmlkZSBhbnkgYWRkaXRpb25hbAorc2VjdXJpdHk7IGl0IG1lcmVseSBwcm92aWRlcyB0aGUgaW5mcmFzdHJ1Y3R1cmUgdG8gc3VwcG9ydCBzZWN1cml0eQorbW9kdWxlcy4gIFRoZSBMU00ga2VybmVsIHBhdGNoIGFsc28gbW92ZXMgbW9zdCBvZiB0aGUgY2FwYWJpbGl0aWVzCitsb2dpYyBpbnRvIGFuIG9wdGlvbmFsIHNlY3VyaXR5IG1vZHVsZSwgd2l0aCB0aGUgc3lzdGVtIGRlZmF1bHRpbmcKK3RvIHRoZSB0cmFkaXRpb25hbCBzdXBlcnVzZXIgbG9naWMuICBUaGlzIGNhcGFiaWxpdGllcyBtb2R1bGUKK2lzIGRpc2N1c3NlZCBmdXJ0aGVyIGluIDx4cmVmIGxpbmtlbmQ9ImNhcCIvPi4KKzwvcGFyYT4KKworPHBhcmE+CitUaGUgTFNNIGtlcm5lbCBwYXRjaCBhZGRzIHNlY3VyaXR5IGZpZWxkcyB0byBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzCithbmQgaW5zZXJ0cyBjYWxscyB0byBob29rIGZ1bmN0aW9ucyBhdCBjcml0aWNhbCBwb2ludHMgaW4gdGhlIGtlcm5lbAorY29kZSB0byBtYW5hZ2UgdGhlIHNlY3VyaXR5IGZpZWxkcyBhbmQgdG8gcGVyZm9ybSBhY2Nlc3MgY29udHJvbC4gIEl0CithbHNvIGFkZHMgZnVuY3Rpb25zIGZvciByZWdpc3RlcmluZyBhbmQgdW5yZWdpc3RlcmluZyBzZWN1cml0eQorbW9kdWxlcywgYW5kIGFkZHMgYSBnZW5lcmFsIDxmdW5jdGlvbj5zZWN1cml0eTwvZnVuY3Rpb24+IHN5c3RlbSBjYWxsCit0byBzdXBwb3J0IG5ldyBzeXN0ZW0gY2FsbHMgZm9yIHNlY3VyaXR5LWF3YXJlIGFwcGxpY2F0aW9ucy4KKzwvcGFyYT4KKworPHBhcmE+CitUaGUgTFNNIHNlY3VyaXR5IGZpZWxkcyBhcmUgc2ltcGx5IDx0eXBlPnZvaWQqPC90eXBlPiBwb2ludGVycy4gIEZvcgorcHJvY2VzcyBhbmQgcHJvZ3JhbSBleGVjdXRpb24gc2VjdXJpdHkgaW5mb3JtYXRpb24sIHNlY3VyaXR5IGZpZWxkcword2VyZSBhZGRlZCB0byA8c3RydWN0bmFtZT5zdHJ1Y3QgdGFza19zdHJ1Y3Q8L3N0cnVjdG5hbWU+IGFuZCAKKzxzdHJ1Y3RuYW1lPnN0cnVjdCBsaW51eF9iaW5wcm08L3N0cnVjdG5hbWU+LiAgRm9yIGZpbGVzeXN0ZW0gc2VjdXJpdHkKK2luZm9ybWF0aW9uLCBhIHNlY3VyaXR5IGZpZWxkIHdhcyBhZGRlZCB0byAKKzxzdHJ1Y3RuYW1lPnN0cnVjdCBzdXBlcl9ibG9jazwvc3RydWN0bmFtZT4uICBGb3IgcGlwZSwgZmlsZSwgYW5kIHNvY2tldAorc2VjdXJpdHkgaW5mb3JtYXRpb24sIHNlY3VyaXR5IGZpZWxkcyB3ZXJlIGFkZGVkIHRvIAorPHN0cnVjdG5hbWU+c3RydWN0IGlub2RlPC9zdHJ1Y3RuYW1lPiBhbmQgCis8c3RydWN0bmFtZT5zdHJ1Y3QgZmlsZTwvc3RydWN0bmFtZT4uICBGb3IgcGFja2V0IGFuZCBuZXR3b3JrIGRldmljZSBzZWN1cml0eQoraW5mb3JtYXRpb24sIHNlY3VyaXR5IGZpZWxkcyB3ZXJlIGFkZGVkIHRvCis8c3RydWN0bmFtZT5zdHJ1Y3Qgc2tfYnVmZjwvc3RydWN0bmFtZT4gYW5kCis8c3RydWN0bmFtZT5zdHJ1Y3QgbmV0X2RldmljZTwvc3RydWN0bmFtZT4uICBGb3IgU3lzdGVtIFYgSVBDIHNlY3VyaXR5CitpbmZvcm1hdGlvbiwgc2VjdXJpdHkgZmllbGRzIHdlcmUgYWRkZWQgdG8KKzxzdHJ1Y3RuYW1lPnN0cnVjdCBrZXJuX2lwY19wZXJtPC9zdHJ1Y3RuYW1lPiBhbmQKKzxzdHJ1Y3RuYW1lPnN0cnVjdCBtc2dfbXNnPC9zdHJ1Y3RuYW1lPjsgYWRkaXRpb25hbGx5LCB0aGUgZGVmaW5pdGlvbnMKK2ZvciA8c3RydWN0bmFtZT5zdHJ1Y3QgbXNnX21zZzwvc3RydWN0bmFtZT4sIDxzdHJ1Y3RuYW1lPnN0cnVjdCAKK21zZ19xdWV1ZTwvc3RydWN0bmFtZT4sIGFuZCA8c3RydWN0bmFtZT5zdHJ1Y3QgCitzaG1pZF9rZXJuZWw8L3N0cnVjdG5hbWU+IHdlcmUgbW92ZWQgdG8gaGVhZGVyIGZpbGVzCisoPGZpbGVuYW1lPmluY2x1ZGUvbGludXgvbXNnLmg8L2ZpbGVuYW1lPiBhbmQKKzxmaWxlbmFtZT5pbmNsdWRlL2xpbnV4L3NobS5oPC9maWxlbmFtZT4gYXMgYXBwcm9wcmlhdGUpIHRvIGFsbG93Cit0aGUgc2VjdXJpdHkgbW9kdWxlcyB0byB1c2UgdGhlc2UgZGVmaW5pdGlvbnMuCis8L3BhcmE+CisKKzxwYXJhPgorRWFjaCBMU00gaG9vayBpcyBhIGZ1bmN0aW9uIHBvaW50ZXIgaW4gYSBnbG9iYWwgdGFibGUsCitzZWN1cml0eV9vcHMuIFRoaXMgdGFibGUgaXMgYQorPHN0cnVjdG5hbWU+c2VjdXJpdHlfb3BlcmF0aW9uczwvc3RydWN0bmFtZT4gc3RydWN0dXJlIGFzIGRlZmluZWQgYnkKKzxmaWxlbmFtZT5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5Lmg8L2ZpbGVuYW1lPi4gIERldGFpbGVkIGRvY3VtZW50YXRpb24KK2ZvciBlYWNoIGhvb2sgaXMgaW5jbHVkZWQgaW4gdGhpcyBoZWFkZXIgZmlsZS4gIEF0IHByZXNlbnQsIHRoaXMKK3N0cnVjdHVyZSBjb25zaXN0cyBvZiBhIGNvbGxlY3Rpb24gb2Ygc3Vic3RydWN0dXJlcyB0aGF0IGdyb3VwIHJlbGF0ZWQKK2hvb2tzIGJhc2VkIG9uIHRoZSBrZXJuZWwgb2JqZWN0IChlLmcuIHRhc2ssIGlub2RlLCBmaWxlLCBza19idWZmLAorZXRjKSBhcyB3ZWxsIGFzIHNvbWUgdG9wLWxldmVsIGhvb2sgZnVuY3Rpb24gcG9pbnRlcnMgZm9yIHN5c3RlbQorb3BlcmF0aW9ucy4gIFRoaXMgc3RydWN0dXJlIGlzIGxpa2VseSB0byBiZSBmbGF0dGVuZWQgaW4gdGhlIGZ1dHVyZQorZm9yIHBlcmZvcm1hbmNlLiAgVGhlIHBsYWNlbWVudCBvZiB0aGUgaG9vayBjYWxscyBpbiB0aGUga2VybmVsIGNvZGUKK2lzIGRlc2NyaWJlZCBieSB0aGUgImNhbGxlZDoiIGxpbmVzIGluIHRoZSBwZXItaG9vayBkb2N1bWVudGF0aW9uIGluCit0aGUgaGVhZGVyIGZpbGUuICBUaGUgaG9vayBjYWxscyBjYW4gYWxzbyBiZSBlYXNpbHkgZm91bmQgaW4gdGhlCitrZXJuZWwgY29kZSBieSBsb29raW5nIGZvciB0aGUgc3RyaW5nICJzZWN1cml0eV9vcHMtPiIuCisKKzwvcGFyYT4KKworPHBhcmE+CitMaW51cyBtZW50aW9uZWQgcGVyLXByb2Nlc3Mgc2VjdXJpdHkgaG9va3MgaW4gaGlzIG9yaWdpbmFsIHJlbWFya3MgYXMgYQorcG9zc2libGUgYWx0ZXJuYXRpdmUgdG8gZ2xvYmFsIHNlY3VyaXR5IGhvb2tzLiAgSG93ZXZlciwgaWYgTFNNIHdlcmUKK3RvIHN0YXJ0IGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIHBlci1wcm9jZXNzIGhvb2tzLCB0aGVuIHRoZSBiYXNlCitmcmFtZXdvcmsgd291bGQgaGF2ZSB0byBkZWFsIHdpdGggaG93IHRvIGhhbmRsZSBvcGVyYXRpb25zIHRoYXQKK2ludm9sdmUgbXVsdGlwbGUgcHJvY2Vzc2VzIChlLmcuIGtpbGwpLCBzaW5jZSBlYWNoIHByb2Nlc3MgbWlnaHQgaGF2ZQoraXRzIG93biBob29rIGZvciBjb250cm9sbGluZyB0aGUgb3BlcmF0aW9uLiAgVGhpcyB3b3VsZCByZXF1aXJlIGEKK2dlbmVyYWwgbWVjaGFuaXNtIGZvciBjb21wb3NpbmcgaG9va3MgaW4gdGhlIGJhc2UgZnJhbWV3b3JrLgorQWRkaXRpb25hbGx5LCBMU00gd291bGQgc3RpbGwgbmVlZCBnbG9iYWwgaG9va3MgZm9yIG9wZXJhdGlvbnMgdGhhdAoraGF2ZSBubyBwcm9jZXNzIGNvbnRleHQgKGUuZy4gbmV0d29yayBpbnB1dCBvcGVyYXRpb25zKS4KK0NvbnNlcXVlbnRseSwgTFNNIHByb3ZpZGVzIGdsb2JhbCBzZWN1cml0eSBob29rcywgYnV0IGEgc2VjdXJpdHkKK21vZHVsZSBpcyBmcmVlIHRvIGltcGxlbWVudCBwZXItcHJvY2VzcyBob29rcyAod2hlcmUgdGhhdCBtYWtlcyBzZW5zZSkKK2J5IHN0b3JpbmcgYSBzZWN1cml0eV9vcHMgdGFibGUgaW4gZWFjaCBwcm9jZXNzJyBzZWN1cml0eSBmaWVsZCBhbmQKK3RoZW4gaW52b2tpbmcgdGhlc2UgcGVyLXByb2Nlc3MgaG9va3MgZnJvbSB0aGUgZ2xvYmFsIGhvb2tzLgorVGhlIHByb2JsZW0gb2YgY29tcG9zaXRpb24gaXMgdGh1cyBkZWZlcnJlZCB0byB0aGUgbW9kdWxlLgorPC9wYXJhPgorCis8cGFyYT4KK1RoZSBnbG9iYWwgc2VjdXJpdHlfb3BzIHRhYmxlIGlzIGluaXRpYWxpemVkIHRvIGEgc2V0IG9mIGhvb2sKK2Z1bmN0aW9ucyBwcm92aWRlZCBieSBhIGR1bW15IHNlY3VyaXR5IG1vZHVsZSB0aGF0IHByb3ZpZGVzCit0cmFkaXRpb25hbCBzdXBlcnVzZXIgbG9naWMuICBBIDxmdW5jdGlvbj5yZWdpc3Rlcl9zZWN1cml0eTwvZnVuY3Rpb24+CitmdW5jdGlvbiAoaW4gPGZpbGVuYW1lPnNlY3VyaXR5L3NlY3VyaXR5LmM8L2ZpbGVuYW1lPikgaXMgcHJvdmlkZWQgdG8KK2FsbG93IGEgc2VjdXJpdHkgbW9kdWxlIHRvIHNldCBzZWN1cml0eV9vcHMgdG8gcmVmZXIgdG8gaXRzIG93biBob29rCitmdW5jdGlvbnMsIGFuZCBhbiA8ZnVuY3Rpb24+dW5yZWdpc3Rlcl9zZWN1cml0eTwvZnVuY3Rpb24+IGZ1bmN0aW9uIGlzCitwcm92aWRlZCB0byByZXZlcnQgc2VjdXJpdHlfb3BzIHRvIHRoZSBkdW1teSBtb2R1bGUgaG9va3MuICBUaGlzCittZWNoYW5pc20gaXMgdXNlZCB0byBzZXQgdGhlIHByaW1hcnkgc2VjdXJpdHkgbW9kdWxlLCB3aGljaCBpcworcmVzcG9uc2libGUgZm9yIG1ha2luZyB0aGUgZmluYWwgZGVjaXNpb24gZm9yIGVhY2ggaG9vay4KKzwvcGFyYT4KKworPHBhcmE+CitMU00gYWxzbyBwcm92aWRlcyBhIHNpbXBsZSBtZWNoYW5pc20gZm9yIHN0YWNraW5nIGFkZGl0aW9uYWwgc2VjdXJpdHkKK21vZHVsZXMgd2l0aCB0aGUgcHJpbWFyeSBzZWN1cml0eSBtb2R1bGUuICBJdCBkZWZpbmVzCis8ZnVuY3Rpb24+cmVnaXN0ZXJfc2VjdXJpdHk8L2Z1bmN0aW9uPiBhbmQKKzxmdW5jdGlvbj51bnJlZ2lzdGVyX3NlY3VyaXR5PC9mdW5jdGlvbj4gaG9va3MgaW4gdGhlCis8c3RydWN0bmFtZT5zZWN1cml0eV9vcGVyYXRpb25zPC9zdHJ1Y3RuYW1lPiBzdHJ1Y3R1cmUgYW5kIHByb3ZpZGVzCis8ZnVuY3Rpb24+bW9kX3JlZ19zZWN1cml0eTwvZnVuY3Rpb24+IGFuZAorPGZ1bmN0aW9uPm1vZF91bnJlZ19zZWN1cml0eTwvZnVuY3Rpb24+IGZ1bmN0aW9ucyB0aGF0IGludm9rZSB0aGVzZQoraG9va3MgYWZ0ZXIgcGVyZm9ybWluZyBzb21lIHNhbml0eSBjaGVja2luZy4gIEEgc2VjdXJpdHkgbW9kdWxlIGNhbgorY2FsbCB0aGVzZSBmdW5jdGlvbnMgaW4gb3JkZXIgdG8gc3RhY2sgd2l0aCBvdGhlciBtb2R1bGVzLiAgSG93ZXZlciwKK3RoZSBhY3R1YWwgZGV0YWlscyBvZiBob3cgdGhpcyBzdGFja2luZyBpcyBoYW5kbGVkIGFyZSBkZWZlcnJlZCB0byB0aGUKK21vZHVsZSwgd2hpY2ggY2FuIGltcGxlbWVudCB0aGVzZSBob29rcyBpbiBhbnkgd2F5IGl0IHdpc2hlcworKGluY2x1ZGluZyBhbHdheXMgcmV0dXJuaW5nIGFuIGVycm9yIGlmIGl0IGRvZXMgbm90IHdpc2ggdG8gc3VwcG9ydAorc3RhY2tpbmcpLiAgSW4gdGhpcyBtYW5uZXIsIExTTSBhZ2FpbiBkZWZlcnMgdGhlIHByb2JsZW0gb2YKK2NvbXBvc2l0aW9uIHRvIHRoZSBtb2R1bGUuCis8L3BhcmE+CisKKzxwYXJhPgorQWx0aG91Z2ggdGhlIExTTSBob29rcyBhcmUgb3JnYW5pemVkIGludG8gc3Vic3RydWN0dXJlcyBiYXNlZCBvbgora2VybmVsIG9iamVjdCwgYWxsIG9mIHRoZSBob29rcyBjYW4gYmUgdmlld2VkIGFzIGZhbGxpbmcgaW50byB0d28KK21ham9yIGNhdGVnb3JpZXM6IGhvb2tzIHRoYXQgYXJlIHVzZWQgdG8gbWFuYWdlIHRoZSBzZWN1cml0eSBmaWVsZHMKK2FuZCBob29rcyB0aGF0IGFyZSB1c2VkIHRvIHBlcmZvcm0gYWNjZXNzIGNvbnRyb2wuICBFeGFtcGxlcyBvZiB0aGUKK2ZpcnN0IGNhdGVnb3J5IG9mIGhvb2tzIGluY2x1ZGUgdGhlCis8ZnVuY3Rpb24+YWxsb2Nfc2VjdXJpdHk8L2Z1bmN0aW9uPiBhbmQKKzxmdW5jdGlvbj5mcmVlX3NlY3VyaXR5PC9mdW5jdGlvbj4gaG9va3MgZGVmaW5lZCBmb3IgZWFjaCBrZXJuZWwgZGF0YQorc3RydWN0dXJlIHRoYXQgaGFzIGEgc2VjdXJpdHkgZmllbGQuICBUaGVzZSBob29rcyBhcmUgdXNlZCB0byBhbGxvY2F0ZQorYW5kIGZyZWUgc2VjdXJpdHkgc3RydWN0dXJlcyBmb3Iga2VybmVsIG9iamVjdHMuICBUaGUgZmlyc3QgY2F0ZWdvcnkKK29mIGhvb2tzIGFsc28gaW5jbHVkZXMgaG9va3MgdGhhdCBzZXQgaW5mb3JtYXRpb24gaW4gdGhlIHNlY3VyaXR5CitmaWVsZCBhZnRlciBhbGxvY2F0aW9uLCBzdWNoIGFzIHRoZSA8ZnVuY3Rpb24+cG9zdF9sb29rdXA8L2Z1bmN0aW9uPgoraG9vayBpbiA8c3RydWN0bmFtZT5zdHJ1Y3QgaW5vZGVfc2VjdXJpdHlfb3BzPC9zdHJ1Y3RuYW1lPi4gIFRoaXMgaG9vaworaXMgdXNlZCB0byBzZXQgc2VjdXJpdHkgaW5mb3JtYXRpb24gZm9yIGlub2RlcyBhZnRlciBzdWNjZXNzZnVsIGxvb2t1cAorb3BlcmF0aW9ucy4gIEFuIGV4YW1wbGUgb2YgdGhlIHNlY29uZCBjYXRlZ29yeSBvZiBob29rcyBpcyB0aGUKKzxmdW5jdGlvbj5wZXJtaXNzaW9uPC9mdW5jdGlvbj4gaG9vayBpbiAKKzxzdHJ1Y3RuYW1lPnN0cnVjdCBpbm9kZV9zZWN1cml0eV9vcHM8L3N0cnVjdG5hbWU+LiAgVGhpcyBob29rIGNoZWNrcworcGVybWlzc2lvbiB3aGVuIGFjY2Vzc2luZyBhbiBpbm9kZS4KKzwvcGFyYT4KKworPC9zZWN0MT4KKworPHNlY3QxIGlkPSJjYXAiPjx0aXRsZT5MU00gQ2FwYWJpbGl0aWVzIE1vZHVsZTwvdGl0bGU+CisKKzxwYXJhPgorVGhlIExTTSBrZXJuZWwgcGF0Y2ggbW92ZXMgbW9zdCBvZiB0aGUgZXhpc3RpbmcgUE9TSVguMWUgY2FwYWJpbGl0aWVzCitsb2dpYyBpbnRvIGFuIG9wdGlvbmFsIHNlY3VyaXR5IG1vZHVsZSBzdG9yZWQgaW4gdGhlIGZpbGUKKzxmaWxlbmFtZT5zZWN1cml0eS9jYXBhYmlsaXR5LmM8L2ZpbGVuYW1lPi4gIFRoaXMgY2hhbmdlIGFsbG93cwordXNlcnMgd2hvIGRvIG5vdCB3YW50IHRvIHVzZSBjYXBhYmlsaXRpZXMgdG8gb21pdCB0aGlzIGNvZGUgZW50aXJlbHkKK2Zyb20gdGhlaXIga2VybmVsLCBpbnN0ZWFkIHVzaW5nIHRoZSBkdW1teSBtb2R1bGUgZm9yIHRyYWRpdGlvbmFsCitzdXBlcnVzZXIgbG9naWMgb3IgYW55IG90aGVyIG1vZHVsZSB0aGF0IHRoZXkgZGVzaXJlLiAgVGhpcyBjaGFuZ2UKK2Fsc28gYWxsb3dzIHRoZSBkZXZlbG9wZXJzIG9mIHRoZSBjYXBhYmlsaXRpZXMgbG9naWMgdG8gbWFpbnRhaW4gYW5kCitlbmhhbmNlIHRoZWlyIGNvZGUgbW9yZSBmcmVlbHksIHdpdGhvdXQgbmVlZGluZyB0byBpbnRlZ3JhdGUgcGF0Y2hlcworYmFjayBpbnRvIHRoZSBiYXNlIGtlcm5lbC4KKzwvcGFyYT4KKworPHBhcmE+CitJbiBhZGRpdGlvbiB0byBtb3ZpbmcgdGhlIGNhcGFiaWxpdGllcyBsb2dpYywgdGhlIExTTSBrZXJuZWwgcGF0Y2gKK2NvdWxkIG1vdmUgdGhlIGNhcGFiaWxpdHktcmVsYXRlZCBmaWVsZHMgZnJvbSB0aGUga2VybmVsIGRhdGEKK3N0cnVjdHVyZXMgaW50byB0aGUgbmV3IHNlY3VyaXR5IGZpZWxkcyBtYW5hZ2VkIGJ5IHRoZSBzZWN1cml0eQorbW9kdWxlcy4gIEhvd2V2ZXIsIGF0IHByZXNlbnQsIHRoZSBMU00ga2VybmVsIHBhdGNoIGxlYXZlcyB0aGUKK2NhcGFiaWxpdHkgZmllbGRzIGluIHRoZSBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzLiAgSW4gaGlzIG9yaWdpbmFsCityZW1hcmtzLCBMaW51cyBzdWdnZXN0ZWQgdGhhdCB0aGlzIG1pZ2h0IGJlIHByZWZlcmFibGUgc28gdGhhdCBvdGhlcgorc2VjdXJpdHkgbW9kdWxlcyBjYW4gYmUgZWFzaWx5IHN0YWNrZWQgd2l0aCB0aGUgY2FwYWJpbGl0aWVzIG1vZHVsZQord2l0aG91dCBuZWVkaW5nIHRvIGNoYWluIG11bHRpcGxlIHNlY3VyaXR5IHN0cnVjdHVyZXMgb24gdGhlIHNlY3VyaXR5IGZpZWxkLgorSXQgYWxzbyBhdm9pZHMgaW1wb3NpbmcgZXh0cmEgb3ZlcmhlYWQgb24gdGhlIGNhcGFiaWxpdGllcyBtb2R1bGUKK3RvIG1hbmFnZSB0aGUgc2VjdXJpdHkgZmllbGRzLiAgSG93ZXZlciwgdGhlIExTTSBmcmFtZXdvcmsgY291bGQKK2NlcnRhaW5seSBzdXBwb3J0IHN1Y2ggYSBtb3ZlIGlmIGl0IGlzIGRldGVybWluZWQgdG8gYmUgZGVzaXJhYmxlLAord2l0aCBvbmx5IGEgZmV3IGFkZGl0aW9uYWwgY2hhbmdlcyBkZXNjcmliZWQgYmVsb3cuCis8L3BhcmE+CisKKzxwYXJhPgorQXQgcHJlc2VudCwgdGhlIGNhcGFiaWxpdGllcyBsb2dpYyBmb3IgY29tcHV0aW5nIHByb2Nlc3MgY2FwYWJpbGl0aWVzCitvbiA8ZnVuY3Rpb24+ZXhlY3ZlPC9mdW5jdGlvbj4gYW5kIDxmdW5jdGlvbj5zZXQqdWlkPC9mdW5jdGlvbj4sCitjaGVja2luZyBjYXBhYmlsaXRpZXMgZm9yIGEgcGFydGljdWxhciBwcm9jZXNzLCBzYXZpbmcgYW5kIGNoZWNraW5nCitjYXBhYmlsaXRpZXMgZm9yIG5ldGxpbmsgbWVzc2FnZXMsIGFuZCBoYW5kbGluZyB0aGUKKzxmdW5jdGlvbj5jYXBnZXQ8L2Z1bmN0aW9uPiBhbmQgPGZ1bmN0aW9uPmNhcHNldDwvZnVuY3Rpb24+IHN5c3RlbQorY2FsbHMgaGF2ZSBiZWVuIG1vdmVkIGludG8gdGhlIGNhcGFiaWxpdGllcyBtb2R1bGUuICBUaGVyZSBhcmUgc3RpbGwgYQorZmV3IGxvY2F0aW9ucyBpbiB0aGUgYmFzZSBrZXJuZWwgd2hlcmUgY2FwYWJpbGl0eS1yZWxhdGVkIGZpZWxkcyBhcmUKK2RpcmVjdGx5IGV4YW1pbmVkIG9yIG1vZGlmaWVkLCBidXQgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgTFNNCitwYXRjaCBkb2VzIGFsbG93IGEgc2VjdXJpdHkgbW9kdWxlIHRvIGNvbXBsZXRlbHkgcmVwbGFjZSB0aGUKK2Fzc2lnbm1lbnQgYW5kIHRlc3Rpbmcgb2YgY2FwYWJpbGl0aWVzLiAgVGhlc2UgZmV3IGxvY2F0aW9ucyB3b3VsZAorbmVlZCB0byBiZSBjaGFuZ2VkIGlmIHRoZSBjYXBhYmlsaXR5LXJlbGF0ZWQgZmllbGRzIHdlcmUgbW92ZWQgaW50bwordGhlIHNlY3VyaXR5IGZpZWxkLiAgVGhlIGZvbGxvd2luZyBpcyBhIGxpc3Qgb2Yga25vd24gbG9jYXRpb25zIHRoYXQKK3N0aWxsIHBlcmZvcm0gc3VjaCBkaXJlY3QgZXhhbWluYXRpb24gb3IgbW9kaWZpY2F0aW9uIG9mCitjYXBhYmlsaXR5LXJlbGF0ZWQgZmllbGRzOgorPGl0ZW1pemVkbGlzdD4KKzxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+ZnMvb3Blbi5jPC9maWxlbmFtZT46PGZ1bmN0aW9uPnN5c19hY2Nlc3M8L2Z1bmN0aW9uPjwvcGFyYT48L2xpc3RpdGVtPgorPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5mcy9sb2NrZC9ob3N0LmM8L2ZpbGVuYW1lPjo8ZnVuY3Rpb24+bmxtX2JpbmRfaG9zdDwvZnVuY3Rpb24+PC9wYXJhPjwvbGlzdGl0ZW0+Cis8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmZzL25mc2QvYXV0aC5jPC9maWxlbmFtZT46PGZ1bmN0aW9uPm5mc2Rfc2V0dXNlcjwvZnVuY3Rpb24+PC9wYXJhPjwvbGlzdGl0ZW0+Cis8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmZzL3Byb2MvYXJyYXkuYzwvZmlsZW5hbWU+OjxmdW5jdGlvbj50YXNrX2NhcDwvZnVuY3Rpb24+PC9wYXJhPjwvbGlzdGl0ZW0+Cis8L2l0ZW1pemVkbGlzdD4KKzwvcGFyYT4KKworPC9zZWN0MT4KKworPC9hcnRpY2xlPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhLy5naXRpZ25vcmUgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDYxYzU4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhLy5naXRpZ25vcmUKQEAgLTAsMCArMSBAQAorISouc3ZnCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvTWFrZWZpbGUgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg1MjdlNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9NYWtlZmlsZQpAQCAtMCwwICsxLDQyMyBAQAorIyMjCisjIE1lZGlhIGJ1aWxkIHJ1bGVzIC0gQXV0by1nZW5lcmF0ZXMgbWVkaWEgY29udGVudHMvaW5kZXhlcyBhbmQgKi5oIHhtbCdzCisjCisKK1NIRUxMPS9iaW4vYmFzaAorCitNRURJQV9PQkpfRElSPSQob2JqdHJlZSkvRG9jdW1lbnRhdGlvbi9Eb2NCb29rLworTUVESUFfU1JDX0RJUj0kKHNyY3RyZWUpL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYQorCitNRURJQV9URU1QID0gIG1lZGlhLWVudGl0aWVzLnRtcGwgXAorCSAgICAgIG1lZGlhLWluZGljZXMudG1wbCBcCisJICAgICAgdmlkZW9kZXYyLmgueG1sIFwKKwkgICAgICB2NGwyLnhtbCBcCisJICAgICAgYXVkaW8uaC54bWwgXAorCSAgICAgIGNhLmgueG1sIFwKKwkgICAgICBkbXguaC54bWwgXAorCSAgICAgIGZyb250ZW5kLmgueG1sIFwKKwkgICAgICBuZXQuaC54bWwgXAorCSAgICAgIHZpZGVvLmgueG1sIFwKKworSU1HRklMRVMgOj0gJChwYXRzdWJzdCAlLmI2NCwlLCAkKG5vdGRpciAkKHNoZWxsIGxzICQoTUVESUFfU1JDX0RJUikvKi5iNjQpKSkKK09CSklNR0ZJTEVTIDo9ICQoYWRkcHJlZml4ICQoTUVESUFfT0JKX0RJUikvLCAkKElNR0ZJTEVTKSkKK0dFTkZJTEVTIDo9ICQoYWRkcHJlZml4ICQoTUVESUFfT0JKX0RJUikvLCAkKE1FRElBX1RFTVApKQorCitQSE9OWSArPSBjbGVhbm1lZGlhZG9jcworCitjbGVhbm1lZGlhZG9jczoKKwktQHJtIC1mIGBmaW5kICQoTUVESUFfT0JKX0RJUikgLXR5cGUgbGAgJChHRU5GSUxFUykgJChPQkpJTUdGSUxFUykgMj4vZGV2L251bGwKKworJChvYmopL21lZGlhX2FwaS54bWw6ICQoR0VORklMRVMpIEZPUkNFCisKKyMkKE1FRElBX09CSl9ESVIpL21lZGlhX2FwaS5odG1sOiAkKE1FRElBX09CSl9ESVIpL21lZGlhX2FwaS54bWwKKyMkKE1FRElBX09CSl9ESVIpL21lZGlhX2FwaS5wZGY6ICQoTUVESUFfT0JKX0RJUikvbWVkaWFfYXBpLnhtbAorIyQoTUVESUFfT0JKX0RJUikvbWVkaWFfYXBpLnBzOiAkKE1FRElBX09CSl9ESVIpL21lZGlhX2FwaS54bWwKKworVjRMX1NHTUxTID0gXAorCSQoc2hlbGwgbHMgJChNRURJQV9TUkNfRElSKS92NGwvKi54bWx8cGVybCAtbmUgJ3ByaW50ICIkJDEgIiBpZiAobSwuKi8oLiopXG4sKScpIFwKKwljYXB0dXJlLmMueG1sIFwKKwlrZXl0YWJsZS5jLnhtbCBcCisJdjRsMmdyYWIuYy54bWwKKworRFZCX1NHTUxTID0gXAorCSQoc2hlbGwgbHMgJChNRURJQV9TUkNfRElSKS9kdmIvKi54bWx8cGVybCAtbmUgJ3ByaW50ICIkJDEgIiBpZiAobSwuKi8oLiopXG4sKScpCisKK01FRElBX1NHTUxTID0gICQoYWRkcHJlZml4IC4vLCQoVjRMX1NHTUxTKSkgJChhZGRwcmVmaXggLi8sJChEVkJfU0dNTFMpKSAkKGFkZHByZWZpeCAuLywkKE1FRElBX1RFTVApKQorCitGVU5DUyA9IFwKKwljbG9zZSBcCisJaW9jdGwgXAorCW1tYXAgXAorCW11bm1hcCBcCisJb3BlbiBcCisJcG9sbCBcCisJcmVhZCBcCisJc2VsZWN0IFwKKwl3cml0ZSBcCisKK0lPQ1RMUyA9IFwKKwkkKHNoZWxsIHBlcmwgLW5lICdwcmludCAiJCQxICIgaWYgL1wjZGVmaW5lXHMrKFteXHNdKylccytfSU8vJyAkKHNyY3RyZWUpL2luY2x1ZGUvdWFwaS9saW51eC92aWRlb2RldjIuaCkgXAorCSQoc2hlbGwgcGVybCAtbmUgJ3ByaW50ICIkJDEgIiBpZiAvXCNkZWZpbmVccysoW15cc10rKVxzK19JTy8nICQoc3JjdHJlZSkvaW5jbHVkZS91YXBpL2xpbnV4L2R2Yi9hdWRpby5oKSBcCisJJChzaGVsbCBwZXJsIC1uZSAncHJpbnQgIiQkMSAiIGlmIC9cI2RlZmluZVxzKyhbXlxzXSspXHMrX0lPLycgJChzcmN0cmVlKS9pbmNsdWRlL3VhcGkvbGludXgvZHZiL2NhLmgpIFwKKwkkKHNoZWxsIHBlcmwgLW5lICdwcmludCAiJCQxICIgaWYgL1wjZGVmaW5lXHMrKFteXHNdKylccytfSU8vJyAkKHNyY3RyZWUpL2luY2x1ZGUvdWFwaS9saW51eC9kdmIvZG14LmgpIFwKKwkkKHNoZWxsIHBlcmwgLW5lICdwcmludCAiJCQxICIgaWYgL1wjZGVmaW5lXHMrKFteXHNdKylccytfSU8vJyAkKHNyY3RyZWUpL2luY2x1ZGUvdWFwaS9saW51eC9kdmIvZnJvbnRlbmQuaCkgXAorCSQoc2hlbGwgcGVybCAtbmUgJ3ByaW50ICIkJDEgIiBpZiAvXCNkZWZpbmVccysoW0EtWl1bXlxzXSspXHMrX0lPLycgJChzcmN0cmVlKS9pbmNsdWRlL3VhcGkvbGludXgvZHZiL25ldC5oKSBcCisJJChzaGVsbCBwZXJsIC1uZSAncHJpbnQgIiQkMSAiIGlmIC9cI2RlZmluZVxzKyhbXlxzXSspXHMrX0lPLycgJChzcmN0cmVlKS9pbmNsdWRlL3VhcGkvbGludXgvZHZiL3ZpZGVvLmgpIFwKKwkkKHNoZWxsIHBlcmwgLW5lICdwcmludCAiJCQxICIgaWYgL1wjZGVmaW5lXHMrKFteXHNdKylccytfSU8vJyAkKHNyY3RyZWUpL2luY2x1ZGUvdWFwaS9saW51eC9tZWRpYS5oKSBcCisJJChzaGVsbCBwZXJsIC1uZSAncHJpbnQgIiQkMSAiIGlmIC9cI2RlZmluZVxzKyhbXlxzXSspXHMrX0lPLycgJChzcmN0cmVlKS9pbmNsdWRlL3VhcGkvbGludXgvdjRsMi1zdWJkZXYuaCkgXAorCitERUZJTkVTID0gXAorCSQoc2hlbGwgcGVybCAtbmUgJ3ByaW50ICIkJDEgIiBpZiAvXCNkZWZpbmVccysoRFRWX1teXHNdKylccysvJyAkKHNyY3RyZWUpL2luY2x1ZGUvdWFwaS9saW51eC9kdmIvZnJvbnRlbmQuaCkgXAorCitUWVBFUyA9IFwKKwkkKHNoZWxsIHBlcmwgLW5lICdwcmludCAiJCQxICIgaWYgL150eXBlZGVmXHMrLipccysoXFMrKVw7LycgJChzcmN0cmVlKS9pbmNsdWRlL3VhcGkvbGludXgvdmlkZW9kZXYyLmgpIFwKKwkkKHNoZWxsIHBlcmwgLW5lICdwcmludCAiJCQxICIgaWYgL150eXBlZGVmXHMrLipccysoXFMrKVw7LycgJChzcmN0cmVlKS9pbmNsdWRlL3VhcGkvbGludXgvZHZiL2Zyb250ZW5kLmgpCisKK0VOVU1TID0gXAorCSQoc2hlbGwgcGVybCAtbmUgJ3ByaW50ICIkJDEgIiBpZiAvXmVudW1ccysoW15cc10rKVxzKy8nIFwKKwkJJChzcmN0cmVlKS9pbmNsdWRlL3VhcGkvbGludXgvdmlkZW9kZXYyLmggXAorCQkkKHNyY3RyZWUpL2luY2x1ZGUvdWFwaS9saW51eC9kdmIvYXVkaW8uaCBcCisJCSQoc3JjdHJlZSkvaW5jbHVkZS91YXBpL2xpbnV4L2R2Yi9jYS5oIFwKKwkJJChzcmN0cmVlKS9pbmNsdWRlL3VhcGkvbGludXgvZHZiL2RteC5oIFwKKwkJJChzcmN0cmVlKS9pbmNsdWRlL3VhcGkvbGludXgvZHZiL2Zyb250ZW5kLmggXAorCQkkKHNyY3RyZWUpL2luY2x1ZGUvdWFwaS9saW51eC9kdmIvbmV0LmggXAorCQkkKHNyY3RyZWUpL2luY2x1ZGUvdWFwaS9saW51eC9kdmIvdmlkZW8uaCBcCisJCSQoc3JjdHJlZSkvaW5jbHVkZS91YXBpL2xpbnV4L21lZGlhLmggXAorCQkkKHNyY3RyZWUpL2luY2x1ZGUvdWFwaS9saW51eC92NGwyLW1lZGlhYnVzLmggXAorCQkkKHNyY3RyZWUpL2luY2x1ZGUvdWFwaS9saW51eC92NGwyLXN1YmRldi5oKQorCitFTlVNX0RFRlMgPSBcCisJJChzaGVsbCBwZXJsIC1lICdvcGVuIElOLCJjYXQgQEFSR1Z8IGNwcCAtZnByZXByb2Nlc3NlZCB8Ijsgd2hpbGUgKDxJTj4pIHsgaWYgKCQkZW51bSkge3ByaW50ICIkJDFcbiIgaWYgKC9ccyooW0EtWl1cUyspXGIvKTsgfSAkJGVudW0gPSAwIGlmICgkJGVudW0gJiYgL15cfS8pOyAkJGVudW0gPSAxIGlmKC9eXHMqZW51bVxzLyk7IH07IGNsb3NlIElOOycgXAorCQkkKHNyY3RyZWUpL2luY2x1ZGUvdWFwaS9saW51eC9kdmIvZG14LmggXAorCQkkKHNyY3RyZWUpL2luY2x1ZGUvdWFwaS9saW51eC9kdmIvZnJvbnRlbmQuaCkKKworU1RSVUNUUyA9IFwKKwkkKHNoZWxsIHBlcmwgLW5lICdwcmludCAiJCQxICIgaWYgL15zdHJ1Y3RccysoW15cc10rKVxzKy8nICQoc3JjdHJlZSkvaW5jbHVkZS91YXBpL2xpbnV4L3ZpZGVvZGV2Mi5oKSBcCisJJChzaGVsbCBwZXJsIC1uZSAncHJpbnQgIiQkMSAiIGlmICgvXnN0cnVjdFxzKyhbXlxzXHtdKylccyovKScgJChzcmN0cmVlKS9pbmNsdWRlL3VhcGkvbGludXgvZHZiL2F1ZGlvLmgpIFwKKwkkKHNoZWxsIHBlcmwgLW5lICdwcmludCAiJCQxICIgaWYgKC9ec3RydWN0XHMrKFteXHNdKylccysvKScgJChzcmN0cmVlKS9pbmNsdWRlL3VhcGkvbGludXgvZHZiL2NhLmgpIFwKKwkkKHNoZWxsIHBlcmwgLW5lICdwcmludCAiJCQxICIgaWYgKC9ec3RydWN0XHMrKFteXHNdKylccysvKScgJChzcmN0cmVlKS9pbmNsdWRlL3VhcGkvbGludXgvZHZiL2RteC5oKSBcCisJJChzaGVsbCBwZXJsIC1uZSAncHJpbnQgIiQkMSAiIGlmICghL2R0dlxfY21kc1xfaC8gJiYgL15zdHJ1Y3RccysoW15cc10rKVxzKy8pJyAkKHNyY3RyZWUpL2luY2x1ZGUvdWFwaS9saW51eC9kdmIvZnJvbnRlbmQuaCkgXAorCSQoc2hlbGwgcGVybCAtbmUgJ3ByaW50ICIkJDEgIiBpZiAoL15zdHJ1Y3RccysoW15cc10rKVxzKy8gJiYgIS9fb2xkLyknICQoc3JjdHJlZSkvaW5jbHVkZS91YXBpL2xpbnV4L2R2Yi9uZXQuaCkgXAorCSQoc2hlbGwgcGVybCAtbmUgJ3ByaW50ICIkJDEgIiBpZiAoL15zdHJ1Y3RccysoW15cc10rKVxzKy8pJyAkKHNyY3RyZWUpL2luY2x1ZGUvdWFwaS9saW51eC9kdmIvdmlkZW8uaCkgXAorCSQoc2hlbGwgcGVybCAtbmUgJ3ByaW50ICIkJDEgIiBpZiAvXnN0cnVjdFxzKyhbXlxzXSspXHMrLycgJChzcmN0cmVlKS9pbmNsdWRlL3VhcGkvbGludXgvbWVkaWEuaCkgXAorCSQoc2hlbGwgcGVybCAtbmUgJ3ByaW50ICIkJDEgIiBpZiAvXnN0cnVjdFxzKyhbXlxzXSspXHMrLycgJChzcmN0cmVlKS9pbmNsdWRlL3VhcGkvbGludXgvdjRsMi1zdWJkZXYuaCkgXAorCSQoc2hlbGwgcGVybCAtbmUgJ3ByaW50ICIkJDEgIiBpZiAvXnN0cnVjdFxzKyhbXlxzXSspXHMrLycgJChzcmN0cmVlKS9pbmNsdWRlL3VhcGkvbGludXgvdjRsMi1tZWRpYWJ1cy5oKQorCitFUlJPUlMgPSBcCisJRTJCSUcgXAorCUVBQ0NFUyBcCisJRUFHQUlOIFwKKwlFQkFERiBcCisJRUJBREZEIFwKKwlFQkFEUiBcCisJRUJBRFJRQyBcCisJRUJVU1kgXAorCUVDSElMRCBcCisJRUNPTk5SRVNFVCBcCisJRURFQURMSyBcCisJRURPTSBcCisJRUVYSVNUIFwKKwlFRkFVTFQgXAorCUVGQklHIFwKKwlFSUxTRVEgXAorCUVJTklUIFwKKwlFSU5QUk9HUkVTUyBcCisJRUlOVFIgXAorCUVJTlZBTCBcCisJRUlPIFwKKwlFTUZJTEUgXAorCUVORklMRSBcCisJRU5PQlVGUyBcCisJRU5PREFUQSBcCisJRU5PREVWIFwKKwlFTk9FTlQgXAorCUVOT0lPQ1RMQ01EIFwKKwlFTk9NRU0gXAorCUVOT1NQQyBcCisJRU5PU1IgXAorCUVOT1NZUyBcCisJRU5PVFNVUCBcCisJRU5PVFNVUFAgXAorCUVOT1RUWSBcCisJRU5YSU8gXAorCUVPUE5PVFNVUFAgXAorCUVPVkVSRkxPVyBcCisJRVBFUk0gXAorCUVQSVBFIFwKKwlFUFJPVE8gXAorCUVSQU5HRSBcCisJRVJFTU9URSBcCisJRVJFTU9URUlPIFwKKwlFUkVTVEFSVCBcCisJRVJFU1RBUlRTWVMgXAorCUVTSFVURE9XTiBcCisJRVNQSVBFIFwKKwlFVElNRSBcCisJRVRJTUVET1VUIFwKKwlFVVNFUlMgXAorCUVXT1VMREJMT0NLIFwKKwlFWERFViBcCisKK0VTQ0FQRSA9IFwKKwktZSAicy8mL1xcJmFtcDsvZyIgXAorCS1lICJzLzwvXFwmbHQ7L2ciIFwKKwktZSAicy8+L1xcJmd0Oy9nIgorCitGSUxFTkFNRSA9IFwKKwktZSBzLCJeW15cL10qLyIsLCBcCisJLWUgcy8iXFwueG1sIi8vIFwKKwktZSBzLyJcXC50bXBsIi8vIFwKKwktZSBzL1xcXC4vLS9nIFwKKwktZSBzLyJeZnVuYy0iLy8gXAorCS1lIHMvIl5waXhmbXQtIi8vIFwKKwktZSBzLyJedmlkaW9jLSIvLworCisjIEdlbmVyYXRlIHJlZmVyZW5jZXMgdG8gdGhlc2Ugc3RydWN0cyBpbiB2aWRlb2RldjIuaC54bWwuCitET0NVTUVOVEVEID0gXAorCS1lICJzL1woZW51bSAqXCl2NGwyX21wZWdfY3gyMzQxeF92aWRlb19cKFthLXpdKl9zcGF0aWFsX2ZpbHRlcl90eXBlXCkvXDE8bGluayBsaW5rZW5kPVwiXDJcIj52NGwyX21wZWdfY3gyMzQxeF92aWRlb19cMjxcL2xpbms+L2ciIFwKKwktZSAicy9cKFwoZW51bVx8c3RydWN0XCkgKlwpXCh2NGwyX1thLXpBLVowLTlfXSpcKS9cMTxsaW5rIGxpbmtlbmQ9XCJcM1wiPlwzPFwvbGluaz4vZyIgXAorCS1lICJzL1woVjRMMl9QSVhfRk1UX1tBLVowLTlfXVwrXClcKFxzXCt2NGwyX2ZvdXJjY1wpLzxsaW5rIGxpbmtlbmQ9XCJcMVwiPlwxPFwvbGluaz5cMi9nIiBcCisJLWUgIjphO3MvXChsaW5rZW5kPVwiLipcKV9cKC4qXCI+XCkvXDEtXDIvO3RhIiBcCisJLWUgInMvdjRsMlwtbXBlZ1wtdmJpXC1JVFYwL3Y0bDItbXBlZy12YmktaXR2MC0xL2ciCisKK0RWQl9ET0NVTUVOVEVEID0gXAorCS1lICJzLFwoc3RydWN0XHNcK1wpXChbYS16MC05X11cK1wpXChcc1wre1wpLFwxXDxsaW5rIGxpbmtlbmQ9XCJcMlwiPlwyXDxcL2xpbmtcPlwzLGciIFwKKwktZSAicyxcKH1cc1wrXClcKFthLXowLTlfXVwrX3RcK1wpLFwxXDxsaW5rIGxpbmtlbmQ9XCJcMlwiPlwyXDxcL2xpbmtcPixnIiBcCisJLWUgInMsXChkZWZpbmVcc1wrXClcKERUVl9bQS1aMC05X11cK1wpXChcc1wrWzAtOV1cK1wpLFwxXDxsaW5rIGxpbmtlbmQ9XCJcMlwiPlwyXDxcL2xpbmtcPlwzLGciIFwKKwktZSAicyw8bGlua1xzXCtsaW5rZW5kPVwiLipcIj5cKERUVl9JT0NUTF9NQVhfTVNHU1x8ZHR2X2NtZHNfaFx8X18uKl9vbGRcKTxcL2xpbms+LFwxLGciIFwKKwktZSAiOmE7cy9cKGxpbmtlbmQ9XCIuKlwpX1woLipcIj5cKS9cMS1cMi87dGEiIFwKKwktZSAicyxcKGF1ZGlvLW1peGVyXHxhdWRpby1rYXJhb2tlXHxhdWRpby1zdGF0dXNcfGNhLXNsb3QtaW5mb1x8Y2EtZGVzY3ItaW5mb1x8Y2EtY2Fwc1x8Y2EtbXNnXHxjYS1kZXNjclx8Y2EtcGlkXHxkbXgtZmlsdGVyXHxkbXgtY2Fwc1x8dmlkZW8tc3lzdGVtXHx2aWRlby1oaWdobGlnaHRcfHZpZGVvLXNwdVx8dmlkZW8tc3B1LXBhbGV0dGVcfHZpZGVvLW5hdmktcGFja1wpLXQsXDEsZyIgXAorCS1lICJzLERUVi1JU0RCVC1MQVlFUltBLUNdLERUVi1JU0RCVC1MQVlFUixnIiBcCisJLWUgInMsXChkZWZpbmVcc1wrXClcKFtBLVowLTlfXVwrXClcKFxzXCtfSU9cKSxcMVw8bGluayBsaW5rZW5kPVwiXDJcIj5cMlw8XC9saW5rXD5cMyxnIiBcCisJLWUgInMsXChkZWZpbmVcc1wrXClcKERUVl9bQS1aMC05X11cK1wpXChcc1wrXCksXDFcPGxpbmsgbGlua2VuZD1cIlwyXCI+XDJcPFwvbGlua1w+XDMsZyIgXAorCS1lICJzLDxsaW5rXHNcK2xpbmtlbmQ9XCIuKlwiPlwoX18uKl9PTERcKTxcL2xpbms+LFwxLGciIFwKKwktZSAicy9cKGxpbmtlbmRcPVwiXClGRV9TRVRfUFJPUEVSVFkvXDFGRV9HRVRfUFJPUEVSVFkvZyIgXAorCS1lICJzLDxsaW5rXHNcK2xpbmtlbmQ9XCIuKlwiPlwoRFRWX0lTREJTX1RTX0lEX0xFR0FDWVx8RFRWX01BWF9DT01NQU5EXHxEVFZfSU9DVExfTUFYX01TR1NcKTxcL2xpbms+LFwxLGciIFwKKworIworIyBNZWRpYSB0YXJnZXRzIGFuZCBkZXBlbmRlbmNpZXMKKyMKKworaW5zdGFsbF9tZWRpYV9pbWFnZXMgPSBcCisJJChRKS1ta2RpciAkKE1FRElBX09CSl9ESVIpL21lZGlhX2FwaTsgXAorCWNwICQoT0JKSU1HRklMRVMpICQoTUVESUFfU1JDX0RJUikvKi5zdmcgJChNRURJQV9TUkNfRElSKS92NGwvKi5zdmcgJChNRURJQV9PQkpfRElSKS9tZWRpYV9hcGkKKworJChNRURJQV9PQkpfRElSKS8lOiAkKE1FRElBX1NSQ19ESVIpLyUuYjY0CisJJChRKWJhc2U2NCAtZCAkPCA+JEAKKworJChNRURJQV9PQkpfRElSKS92NGwyLnhtbDogJChPQkpJTUdGSUxFUykKKwlAJCgkKHF1aWV0KWdlbl94bWwpCisJQChsbiAtc2YgYGNkICQoTUVESUFfU1JDX0RJUikgJiYgL2Jpbi9wd2RgL3Y0bC8qeG1sICQoTUVESUFfT0JKX0RJUikvKQorCUAobG4gLXNmIGBjZCAkKE1FRElBX1NSQ19ESVIpICYmIC9iaW4vcHdkYC9kdmIvKnhtbCAkKE1FRElBX09CSl9ESVIpLykKKworJChNRURJQV9PQkpfRElSKS92aWRlb2RldjIuaC54bWw6ICQoc3JjdHJlZSkvaW5jbHVkZS91YXBpL2xpbnV4L3ZpZGVvZGV2Mi5oICQoTUVESUFfT0JKX0RJUikvdjRsMi54bWwKKwlAJCgkKHF1aWV0KWdlbl94bWwpCisJQCgJCQkJCVwKKwllY2hvICI8cHJvZ3JhbWxpc3Rpbmc+IikgPiAkQAorCUAoCQkJCQlcCisJZXhwYW5kIC0tdGFicz04IDwgJDwgfAkJCVwKKwkgIHNlZCAkKEVTQ0FQRSkgJChET0NVTUVOVEVEKSB8CQlcCisJICBzZWQgJ3MvaVwuZVwuLyZpZTsvJykgPj4gJEAKKwlAKAkJCQkJXAorCWVjaG8gIjwvcHJvZ3JhbWxpc3Rpbmc+IikgPj4gJEAKKworJChNRURJQV9PQkpfRElSKS9hdWRpby5oLnhtbDogJChzcmN0cmVlKS9pbmNsdWRlL3VhcGkvbGludXgvZHZiL2F1ZGlvLmggJChNRURJQV9PQkpfRElSKS92NGwyLnhtbAorCUAkKCQocXVpZXQpZ2VuX3htbCkKKwlAKAkJCQkJXAorCWVjaG8gIjxwcm9ncmFtbGlzdGluZz4iKSA+ICRACisJQCgJCQkJCVwKKwlleHBhbmQgLS10YWJzPTggPCAkPCB8CQkJXAorCSAgc2VkICQoRVNDQVBFKSAkKERWQl9ET0NVTUVOVEVEKSB8CVwKKwkgIHNlZCAncy9pXC5lXC4vJmllOy8nKSA+PiAkQAorCUAoCQkJCQlcCisJZWNobyAiPC9wcm9ncmFtbGlzdGluZz4iKSA+PiAkQAorCiskKE1FRElBX09CSl9ESVIpL2NhLmgueG1sOiAkKHNyY3RyZWUpL2luY2x1ZGUvdWFwaS9saW51eC9kdmIvY2EuaCAkKE1FRElBX09CSl9ESVIpL3Y0bDIueG1sCisJQCQoJChxdWlldClnZW5feG1sKQorCUAoCQkJCQlcCisJZWNobyAiPHByb2dyYW1saXN0aW5nPiIpID4gJEAKKwlAKAkJCQkJXAorCWV4cGFuZCAtLXRhYnM9OCA8ICQ8IHwJCQlcCisJICBzZWQgJChFU0NBUEUpICQoRFZCX0RPQ1VNRU5URUQpIHwJXAorCSAgc2VkICdzL2lcLmVcLi8maWU7LycpID4+ICRACisJQCgJCQkJCVwKKwllY2hvICI8L3Byb2dyYW1saXN0aW5nPiIpID4+ICRACisKKyQoTUVESUFfT0JKX0RJUikvZG14LmgueG1sOiAkKHNyY3RyZWUpL2luY2x1ZGUvdWFwaS9saW51eC9kdmIvZG14LmggJChNRURJQV9PQkpfRElSKS92NGwyLnhtbAorCUAkKCQocXVpZXQpZ2VuX3htbCkKKwlAKAkJCQkJXAorCWVjaG8gIjxwcm9ncmFtbGlzdGluZz4iKSA+ICRACisJQCgJCQkJCVwKKwlmb3IgaWRlbnQgaW4gJChFTlVNX0RFRlMpIDsgZG8JCVwKKwkgIGVudGl0eT1gZWNobyAkJGlkZW50IHwgdHIgXyAtYCA7CVwKKwkgIHI9IiQkciBzLyhbXlx3XC1dKSQkaWRlbnQoW15cd1wtXSkvXDFcJiQkZW50aXR5XDtcMi9nOyI7XAorCWRvbmU7CQkJCQlcCisJZXhwYW5kIC0tdGFicz04IDwgJDwgfAkJCVwKKwkgIHNlZCAkKEVTQ0FQRSkgJChEVkJfRE9DVU1FTlRFRCkgfAlcCisJICBzZWQgJ3MvaVwuZVwuLyZpZTsvJyB8CQlcCisJICBwZXJsIC1uZSAiJCRyIHByaW50ICQkXzsiKSA+PiAkQAorCUAoCQkJCQlcCisJZWNobyAiPC9wcm9ncmFtbGlzdGluZz4iKSA+PiAkQAorCiskKE1FRElBX09CSl9ESVIpL2Zyb250ZW5kLmgueG1sOiAkKHNyY3RyZWUpL2luY2x1ZGUvdWFwaS9saW51eC9kdmIvZnJvbnRlbmQuaCAkKE1FRElBX09CSl9ESVIpL3Y0bDIueG1sCisJQCQoJChxdWlldClnZW5feG1sKQorCUAoCQkJCQlcCisJZWNobyAiPHByb2dyYW1saXN0aW5nPiIpID4gJEAKKwlAKAkJCQkJXAorCWZvciBpZGVudCBpbiAkKEVOVU1fREVGUykgOyBkbwkJXAorCSAgZW50aXR5PWBlY2hvICQkaWRlbnQgfCB0ciBfIC1gIDsJXAorCSAgcj0iJCRyIHMvKFteXHdcLV0pJCRpZGVudChbXlx3XC1dKS9cMVwmJCRlbnRpdHlcO1wyL2c7IjtcCisJZG9uZTsJCQkJCVwKKwlleHBhbmQgLS10YWJzPTggPCAkPCB8CQkJXAorCSAgc2VkICQoRVNDQVBFKSAkKERWQl9ET0NVTUVOVEVEKSB8CVwKKwkgIHNlZCAncy9pXC5lXC4vJmllOy8nIHwJCVwKKwkgIHBlcmwgLW5lICIkJHIgcHJpbnQgJCRfOyIpID4+ICRACisJQCgJCQkJCVwKKwllY2hvICI8L3Byb2dyYW1saXN0aW5nPiIpID4+ICRACisKKyQoTUVESUFfT0JKX0RJUikvbmV0LmgueG1sOiAkKHNyY3RyZWUpL2luY2x1ZGUvdWFwaS9saW51eC9kdmIvbmV0LmggJChNRURJQV9PQkpfRElSKS92NGwyLnhtbAorCUAkKCQocXVpZXQpZ2VuX3htbCkKKwlAKAkJCQkJXAorCWVjaG8gIjxwcm9ncmFtbGlzdGluZz4iKSA+ICRACisJQCgJCQkJCVwKKwlleHBhbmQgLS10YWJzPTggPCAkPCB8CQkJXAorCSAgc2VkICQoRVNDQVBFKSAkKERWQl9ET0NVTUVOVEVEKSB8CVwKKwkgIHNlZCAncy9pXC5lXC4vJmllOy8nKSA+PiAkQAorCUAoCQkJCQlcCisJZWNobyAiPC9wcm9ncmFtbGlzdGluZz4iKSA+PiAkQAorCiskKE1FRElBX09CSl9ESVIpL3ZpZGVvLmgueG1sOiAkKHNyY3RyZWUpL2luY2x1ZGUvdWFwaS9saW51eC9kdmIvdmlkZW8uaCAkKE1FRElBX09CSl9ESVIpL3Y0bDIueG1sCisJQCQoJChxdWlldClnZW5feG1sKQorCUAoCQkJCQlcCisJZWNobyAiPHByb2dyYW1saXN0aW5nPiIpID4gJEAKKwlAKAkJCQkJXAorCWV4cGFuZCAtLXRhYnM9OCA8ICQ8IHwJCQlcCisJICBzZWQgJChFU0NBUEUpICQoRFZCX0RPQ1VNRU5URUQpIHwJXAorCSAgc2VkICdzL2lcLmVcLi8maWU7LycpID4+ICRACisJQCgJCQkJCVwKKwllY2hvICI8L3Byb2dyYW1saXN0aW5nPiIpID4+ICRACisKKyQoTUVESUFfT0JKX0RJUikvbWVkaWEtZW50aXRpZXMudG1wbDogJChNRURJQV9PQkpfRElSKS92NGwyLnhtbAorCUAkKCQocXVpZXQpZ2VuX3htbCkKKwlAKAkJCQkJCQkJXAorCWVjaG8gIjwhLS0gR2VuZXJhdGVkIGZpbGUhIERvIG5vdCBlZGl0LiAtLT4iKSA+JEAKKwlAKAkJCQkJCQkJXAorCWVjaG8gLWUgIlxuPCEtLSBGdW5jdGlvbnMgLS0+IikgPj4kQAorCUAoCQkJCQkJCQlcCisJZm9yIGlkZW50IGluICQoRlVOQ1MpIDsgZG8JCQkJCVwKKwkgIGVudGl0eT1gZWNobyAkJGlkZW50IHwgdHIgXyAtYCA7CQkJCVwKKwkgIGVjaG8gIjwhRU5USVRZIGZ1bmMtJCRlbnRpdHkgXCI8bGluayIJCQkJXAorCSAgICAibGlua2VuZD0nZnVuYy0kJGVudGl0eSc+PGZ1bmN0aW9uPiQkaWRlbnQoKTwvZnVuY3Rpb24+PC9saW5rPlwiPiIgXAorCSAgPj4kQCA7CQkJCQkJCVwKKwlkb25lKQorCUAoCQkJCQkJCQlcCisJZWNobyAtZSAiXG48IS0tIElvY3RscyAtLT4iKSA+PiRACisJQCgJCQkJCQkJCVwKKwlmb3IgaWRlbnQgaW4gYGVjaG8gJChJT0NUTFMpIHwgc2VkIC1lICJzLFZJRElPQ19SRVNFUlZFRCwsImA7IGRvXAorCSAgZW50aXR5PWBlY2hvICQkaWRlbnQgfCB0ciBfIC1gIDsJCQkJXAorCSAgaWQ9YGdyZXAgLWUgIjxyZWZuYW1lPiQkaWRlbnQiIC1lICI8c2VjdGlvbiBpZD1cIiQkaWRlbnRcIiIgJCQoZmluZCAkKE1FRElBX1NSQ19ESVIpIC1uYW1lICoueG1sIC10eXBlIGYpfCBzZWQgLXIgcywiXi4qLyguKikueG1sLioiLCJcMSIsYCA7IFwKKwkgIGlmIFsgIiQkaWQiICE9ICIiIF07IHRoZW4gZWNobyAiPCFFTlRJVFkgJCRlbnRpdHkgXCI8bGluayIJXAorCSAgICAibGlua2VuZD0nJCRpZCc+PGNvbnN0YW50PiQkaWRlbnQ8L2NvbnN0YW50PjwvbGluaz5cIj4iCVwKKwkgID4+JEAgOyBlbHNlCQkJCQkJCVwKKwkJZWNobyAiV2FybmluZzogdW5kb2N1bWVudGVkIGlvY3RsOiAkJGlkZW50LiBQbGVhc2UgZG9jdW1lbnQgaXQgYXQgdGhlIG1lZGlhIERvY0Jvb2shIiA+JjI7CVwKKwkgIGZpOwkJCQkJCQkJXAorCWRvbmUpCisJQCgJCQkJCQkJCVwKKwllY2hvIC1lICJcbjwhLS0gRGVmaW5lcyAtLT4iKSA+PiRACisJQCgJCQkJCQkJCVwKKwlmb3IgaWRlbnQgaW4gJChERUZJTkVTKSA7IGRvCQkJCQlcCisJICBlbnRpdHk9YGVjaG8gJCRpZGVudCB8IHRyIF8gLWAgOwkJCQlcCisJICBlY2hvICI8IUVOVElUWSAkJGVudGl0eSBcIjxsaW5rIgkJCQlcCisJICAgICJsaW5rZW5kPSckJGVudGl0eSc+PGNvbnN0YW50PiQkaWRlbnQ8L2NvbnN0YW50PjwvbGluaz5cIj4iCVwKKwkgID4+JEAgOwkJCQkJCQlcCisJZG9uZSkKKwlAKAkJCQkJCQkJXAorCWVjaG8gLWUgIlxuPCEtLSBUeXBlcyAtLT4iKSA+PiRACisJQCgJCQkJCQkJCVwKKwlmb3IgaWRlbnQgaW4gJChUWVBFUykgOyBkbwkJCQkJXAorCSAgZW50aXR5PWBlY2hvICQkaWRlbnQgfCB0ciBfIC1gIDsJCQkJXAorCSAgZWNobyAiPCFFTlRJVFkgJCRlbnRpdHkgXCI8bGluayIJCQkJXAorCSAgICAibGlua2VuZD0nJCRlbnRpdHknPiQkaWRlbnQ8L2xpbms+XCI+IiA+PiRAIDsJCVwKKwlkb25lKQorCUAoCQkJCQkJCQlcCisJZWNobyAtZSAiXG48IS0tIEVudW1zIC0tPiIpID4+JEAKKwlAKAkJCQkJCQkJXAorCWZvciBpZGVudCBpbiAkKEVOVU1TKSA7IGRvCQkJCQlcCisJICBlbnRpdHk9YGVjaG8gJCRpZGVudCB8IHNlZCAtZSAicy92NGwyX21wZWdfY3gyMzQxeF92aWRlb19cKFthLXpdKl9zcGF0aWFsX2ZpbHRlcl90eXBlXCkvXDEvIiB8IHRyIF8gLWAgOyBcCisJICBlY2hvICI8IUVOVElUWSAkJGVudGl0eSBcImVudW0mbmJzcDs8bGluayIJCQlcCisJICAgICJsaW5rZW5kPSckJGVudGl0eSc+JCRpZGVudDwvbGluaz5cIj4iID4+JEAgOwkJXAorCWRvbmUpCisJQCgJCQkJCQkJCVwKKwllY2hvIC1lICJcbjwhLS0gRW51bSBkZWZpbml0aW9ucyAtLT4iKSA+PiRACisJQCgJCQkJCQkJCVwKKwlmb3IgaWRlbnQgaW4gJChFTlVNX0RFRlMpIDsgZG8JCQkJCVwKKwkgIGVudGl0eT1gZWNobyAkJGlkZW50IHwgdHIgXyAtYCA7CQkJCVwKKwkgIGVjaG8gIjwhRU5USVRZICQkZW50aXR5IFwiPGxpbmsiCQkJCVwKKwkgICAgImxpbmtlbmQ9JyQkZW50aXR5Jz48Y29uc3RhbnQ+JCRpZGVudDwvY29uc3RhbnQ+PC9saW5rPlwiPiIJXAorCSAgPj4kQCA7CQkJCQkJCVwKKwlkb25lKQorCUAoCQkJCQkJCQlcCisJZWNobyAtZSAiXG48IS0tIFN0cnVjdHVyZXMgLS0+IikgPj4kQAorCUAoCQkJCQkJCQlcCisJZm9yIGlkZW50IGluICQoU1RSVUNUUykgOyBkbwkJCQkJXAorCSAgZW50aXR5PWBlY2hvICQkaWRlbnQgfCB0ciBfIC0gfCBzZWQgcy92NGwyLW1wZWctdmJpLUlUVjAvdjRsMi1tcGVnLXZiaS1pdHYwLTEvZ2AgOyBcCisJICBlY2hvICI8IUVOVElUWSAkJGVudGl0eSBcInN0cnVjdCZuYnNwOzxsaW5rIgkJCVwKKwkgICAgImxpbmtlbmQ9JyQkZW50aXR5Jz4kJGlkZW50PC9saW5rPlwiPiIgPj4kQCA7CQlcCisJZG9uZSkKKwlAKAkJCQkJCQkJXAorCWVjaG8gLWUgIlxuPCEtLSBFcnJvciBDb2RlcyAtLT4iKSA+PiRACisJQCgJCQkJCQkJCVwKKwlmb3IgaWRlbnQgaW4gJChFUlJPUlMpIDsgZG8JCQkJCVwKKwkgIGVjaG8gIjwhRU5USVRZICQkaWRlbnQgXCI8ZXJyb3Jjb2RlPiQkaWRlbnQ8L2Vycm9yY29kZT4iCVwKKwkgICAgImVycm9yIGNvZGVcIj4iID4+JEAgOwkJCQkJXAorCWRvbmUpCisJQCgJCQkJCQkJCVwKKwllY2hvIC1lICJcbjwhLS0gU3Vic2VjdGlvbnMgLS0+IikgPj4kQAorCUAoCQkJCQkJCQlcCisJZm9yIGZpbGUgaW4gJChNRURJQV9TR01MUykgOyBkbwkJCQkJXAorCSAgZW50aXR5PWBlY2hvICIkJGZpbGUiIHwgc2VkICQoRklMRU5BTUUpIC1lIHMvIl4oW14tXSopIi9zdWJcMS9gIDsgXAorCSAgaWYgISBlY2hvICIkJGZpbGUiIHwJCQkJCQlcCisJICAgIGdyZXAgLXEgLUUgLWUgJ14oZnVuY3x2aWRpb2N8cGl4Zm10KS0nIDsgdGhlbgkJXAorCSAgICBlY2hvICI8IUVOVElUWSBzdWItJCRlbnRpdHkgU1lTVEVNIFwiJCRmaWxlXCI+IiA+PiRAIDsJXAorCSAgZmkgOwkJCQkJCQkJXAorCWRvbmUpCisJQCgJCQkJCQkJCVwKKwllY2hvIC1lICJcbjwhLS0gRnVuY3Rpb24gUmVmZXJlbmNlIC0tPiIpID4+JEAKKwlAKAkJCQkJCQkJXAorCWZvciBmaWxlIGluICQoTUVESUFfU0dNTFMpIDsgZG8JCQkJCVwKKwkgIGlmIGVjaG8gIiQkZmlsZSIgfAkJCQkJCVwKKwkgICAgZ3JlcCAtcSAtRSAtZSAnKGZ1bmN8dmlkaW9jfHBpeGZtdCktJyA7IHRoZW4JCVwKKwkgICAgZW50aXR5PWBlY2hvICIkJGZpbGUiIHxzZWQgJChGSUxFTkFNRSlgIDsJCQlcCisJICAgIGVjaG8gIjwhRU5USVRZICQkZW50aXR5IFNZU1RFTSBcIiQkZmlsZVwiPiIgPj4kQCA7CVwKKwkgIGZpIDsJCQkJCQkJCVwKKwlkb25lKQorCisjIEphZGUgY2FuIGF1dG8tZ2VuZXJhdGUgYSBsaXN0LW9mLXRhYmxlcywgd2hpY2ggaW5jbHVkZXMgYWxsIHN0cnVjdHMsCisjIGJ1dCB3ZSBvbmx5IHdhbnQgZGF0YSB0eXBlcywgYWxsIHR5cGVzLCBhbmQgc29ydGVkIHBsZWFzZS4KKyQoTUVESUFfT0JKX0RJUikvbWVkaWEtaW5kaWNlcy50bXBsOiAkKE1FRElBX09CSl9ESVIpL3Y0bDIueG1sCisJQCQoJChxdWlldClnZW5feG1sKQorCUAoCQkJCQkJCQlcCisJZWNobyAiPCEtLSBHZW5lcmF0ZWQgZmlsZSEgRG8gbm90IGVkaXQuIC0tPiIpID4kQAorCUAoCQkJCQkJCQlcCisJZWNobyAtZSAiXG48aW5kZXg+PHRpdGxlPkxpc3Qgb2YgVHlwZXM8L3RpdGxlPiIpID4+JEAKKwlAKAkJCQkJCQkJXAorCWZvciBpZGVudCBpbiAkKFRZUEVTKSA7IGRvCQkJCQlcCisJICBpZD1gZWNobyAkJGlkZW50IHwgdHIgXyAtYCA7CQkJCQlcCisJICBlY2hvICI8aW5kZXhlbnRyeT48cHJpbWFyeWllPjxsaW5rIgkJCQlcCisJICAgICJsaW5rZW5kPSckJGlkJz4kJGlkZW50PC9saW5rPjwvcHJpbWFyeWllPjwvaW5kZXhlbnRyeT4iID4+JEAgOyBcCisJZG9uZSkKKwlAKAkJCQkJCQkJXAorCWZvciBpZGVudCBpbiAkKEVOVU1TKSA7IGRvCQkJCQlcCisJICBpZD1gZWNobyAkJGlkZW50IHwgc2VkIC1lICJzL3Y0bDJfbXBlZ19jeDIzNDF4X3ZpZGVvX1woW2Etel0qX3NwYXRpYWxfZmlsdGVyX3R5cGVcKS9cMS8iIHwgdHIgXyAtYDsgXAorCSAgZWNobyAiPGluZGV4ZW50cnk+PHByaW1hcnlpZT5lbnVtJm5ic3A7PGxpbmsiCQkJXAorCSAgICAibGlua2VuZD0nJCRpZCc+JCRpZGVudDwvbGluaz48L3ByaW1hcnlpZT48L2luZGV4ZW50cnk+IiA+PiRAIDsgXAorCWRvbmUpCisJQCgJCQkJCQkJCVwKKwlmb3IgaWRlbnQgaW4gJChTVFJVQ1RTKSA7IGRvCQkJCQlcCisJICBpZD1gZWNobyAkJGlkZW50IHwgdHIgXyAtIHwgc2VkIHMvdjRsMi1tcGVnLXZiaS1JVFYwL3Y0bDItbXBlZy12YmktaXR2MC0xL2dgIDsgXAorCSAgZWNobyAiPGluZGV4ZW50cnk+PHByaW1hcnlpZT5zdHJ1Y3QmbmJzcDs8bGluayIJCVwKKwkgICAgImxpbmtlbmQ9JyQkaWQnPiQkaWRlbnQ8L2xpbms+PC9wcmltYXJ5aWU+PC9pbmRleGVudHJ5PiIgPj4kQCA7IFwKKwlkb25lKQorCUAoCQkJCQkJCQlcCisJZWNobyAiPC9pbmRleD4iKSA+PiRACisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9iYXllci5wbmcuYjY0IGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2JheWVyLnBuZy5iNjQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NkZjJiYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9iYXllci5wbmcuYjY0CkBAIC0wLDAgKzEsMTcxIEBACitpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBbGdBQUFDcUNBTUFBQUJHZmNIVkFBQUFBWE5TUjBJQXJzNGM2UUFBQXdCUVRGUkZBQUlBCitDQUlDQUFRVkVRRUJBZ3NBSmdFQ0FBb2dBd3NUQVFvcEhRWUJOQUVBQUF4TkFSUUFFUklRQWhvREFCd0FBQlpFSFJRS0dSWUtRdzBGCitBQ01CQUNVQUVSd3BIUjRjVlJBRkJSNXJaaEFEQUNSMkppSWhCREFHQWlXR2dRNEFjeFFBQkRZQUNTZVFNU1lsSnlrbUVTeFlsUTRBCitQU1laSVMwNU9Tc0pIUzVKT0M4a0FFTURVQzhTQURYTE5EVXpBRGJFQUVzQUFEWC8yUkFCQ0ZJQUFEL3F4QjBBQUQvL0JGZ0FLMFZwCitXVDRyM2h3QTNSc1RSRVJBQUVmLzVDSUEyaVlDQ1V2K1dVZ3o3aUlBT2s1ZzNDZ1ZTVTVTaUQ4dUIyc0FCbThBRTFYL1UxUlFPRnlMCis0amtmSWx6L1JWOThNMWorRzJIL2ZWazIzanRENFQwcFhsOWllRnRHY1Y4OTRVSWlZV0pmQUl3QTUwZ09WMnArNGtzc08yaitkR1p4CitiRzFxVm1qL09ISC9hSEp6Zm5CWDVsUTdCNTBBWm5haGRYZDBBS1VHNVYxQVJuei82bUVyQ3FnQUFLc0FlbnQ0NkdCSVc0R2hBSzBBCitBSzhCNDJGdEFMSU9pbjkvQUxVQWlJT0JBTGtBVklmLzZXeFdnNGVCaTRTS0pyRUFtb1Z0ZFkyZ2VvUC9yWVZYaG95T3FZVnVKYlVoCitJcmdXWDVEL2pvNko3bnN6UDdnQXNJOVM2M3huTjcwelpxTy9mWnpDT2I0K2Nacis2NGR5OG90WW5KNmI3SW1EUmNNNTZJcWNXTUVvCitvSmIvTjhab1RNUkw3WTkvUWNoY3NhT1RvNmVvaGFqLzdacUtYc3BYajZ2OXhhbCtvSys3ZDd2VFVNK0FmY281cjdDdW1MVFZTdEtWCiticzl1a2JiLzlxeC85cTlsOHF1ZW9Mdi9lOVI2NmJlRzdyREltTlJoaTlhRHdzUEFzOGJXemNLMmNkNjdqdHFQNU1XVW9keUI4YisxCit0TXIvejhML2o5K2tiT1hXbk4yWnN0RDd5YzdSenM3THk5eGIxODNVd2RELytzaS9xZU9tdnVLSXg5Zmo0dFBDdHVXaXFPckwrdFMyCit5OXYrK05QSzJkdlp0K20wdWVxODArV28zT2VTd3V5L3llekcrZDdmL2VTL3ovRFMzdWYvNk9ubzRQQzcxTzM5eFBiMDJ2UFovK25SCisrT3JpNmUzOTkrdnQrUEd6K3VyNjVmTDU1L1hiNHZiaDdmZlgvUFBZOHZQOSt2THk2UGYzNmZqci9QZk04dmpyLy9mKy92bjQ4UDM2Cis5dnYrL3Z6ZitmdjQvZnZ1Ly96Nyt2Ny8vUC83L3YvOC8vUXB4QUFBQUFGaVMwZEVBSWdGSFVnQUFBQUpjRWhaY3dBQUZZOEFBQldXCitBUTJUVDhjQUFBQUhkRWxOUlFmYUNSUVhHU2x0d2JQUkFBQWdBRWxFUVZSNDJ1MmREWHdVMWJYQVp3RUp0RWFOSDFuYmg2OGZwb1dLCitpRTFhbzJCZ285UnFJckVnK0JJRm1xTFlMT2xNY0hIbFU2RGlRbXJKTTJqS28wUUlCSGdVakQ1RVRjUUlsS3EwZ0tEbUErVWppUkFUCitCQ09Ca0d6QzVyZS8rKzY5ODdFenN6c3pkemM3czlqZlBhMndPK3pNUGVmYy81NTc1dDY3WjVoQi8wRWsvVzY2OHhja2NtVm1RWjVTCitDdkxtZ3NobDRRQ2ladSs4bnRDT2dXbHpWZnJsNVpaRnJsNlQvVllTdjl4NUszUGo5d25raDlmRkZ4UUU2VmNWcVhZKzhQamdINUswCisrLzBiQnhEYVljc04waSt2TGxUYnpIOWtqRWtua0VGM3pwdGpMUFBtWEwyVndHQy9ueHlzbStZUnljKy9TMmJITllVZ210SmtmNVJJCit2U2NIM0hFdmlmejA1bWhxQjhHNjhkNnhKTzNlY1NXaEhYWWZZZHZNOTlMSEdFdjZtRUYzem1GSjVHcjQ5ZTlxVlVoN08vd1Avdy85CitnZjRFWG5Ld2Jwak5HUXM3Nzlidmt0bHh6VUxnN1RDUXp2REFJdEJ2enFNRDdoanJNSmF4UHgwQ3YzT2RCdnFGQlJaSnM0NnhDQ3dpCitPK3hOd05mU2Nsb202RjJMNGoxQS9Vc0cxaGdJMWp5V1V6TEVLZi9nWDBDd2V2SXpzdlNsSm95aDhJWTVMbVBoRUZoRWhzQ0k5YjdMCitveS91STJHQlJhRGZQQVRXYUdPNTk2ZERBRGhpb0orN1BLeUk1U0JvRjRORlpBY0VhNlpqdkw3TU9nOU1BV3RQeHY0YUhkbGZNMzE1CitUTUh5N0dnNHBpZk41Y1V4Qk1zUGlzdWI5ZFJycUhjMXhCQ3NDN3ZISDZqVmxRT08zZUdCaGNjYzlCK3JHSVdrUC9BTEJOWUVBM3VYCit4eGFzb29NR2JWYVd4aFNzMGtyOU5qczh6YkVFNjBDMlViT1RUQU9yUjYvWkhqQi9aV3pCZXQrZ3pSMHhCbXVIZnB0dHNRYkxJRVAyCitacHNHVnJzQldNc3BXQlFzR3JFb1dGRUFLMVVVRGJCa1FFa0p1K0tvK1dEeERSbUFwV21IK1dDRjB1L2JDRllJTXlJSEszMENMMWtaCitZMUoxN3dvNTFzbmhXMS80ZDlCZG9abGdjWng3bWNlenpNMXllbUJwMjJFMldCekw2NmZzRXhWWWpteEJ4c05lZDFnSFZyYThYWDJ3CitXQmMyQS80ZERiQ1NwNHYvMlByR2IxTDFoa0tuWjhzUk5GSDM5Y2VsNksxbFF5RmJ2TGNaWGYzWXJtV3NObGc2ZHBnTUZsdGMzZEFOCitqMyt6YXpXckNWYktCdW44bHRjZlMzRllCcGIwRDcyMUwrdUN4WG9xeE81VmZFTWlCbXNhNkJMLytVeFdxaFpZTUZ5dFBTVmQ1eU1VCitxS3hKM2psdWI3ZjRENWYreG1xRHBXMkh1V0N4cjByNjliN042b0FWNkpzVGo2VllCcGFjaVA5TDBRYUxWWFF2MTNld1VxZUJkanlTCitaTTAvQ2Y2dUJSYmthazAzdUxTcmFCSG5XZnNKQUovTEVpMlRJeFpzN2JQeVpTNlhad3UwWEVhV0Npd2RPMHdGaTNzWGdDL0s0UURpCitxZmhFb1Y4UVdOdFQ4RkxLK0w5MGdkZEhXd2pXak5HdzFkRy9tZ1c3L2pGTnNGall2ZC9zS25LNzNLaDdQNG9TV0h3M0pPY0RrSkdxCitCVmJ4QmZENUlpZEtxcHpPVi8zZ2IwNXJ3R0pmUlhFQWZZTTQxbk1LZk1YcGdhVmhoNWxnc1ZzQWVKdmo5WU9NWFZyRTZZQWx2SHdhCitYSlNGTEpQQk9nOG04VzJscEx3RlE1WWpORmdjNnQ0NU9GQ3gwT1ZnTlJ1MWlJVkVCeXpudStBcklVaXhuUE1mS0dSWkFSYUNTUnBmCitFTngvNHd3aVZnZzdUQVNMYzUyQ0E0ZjRCaW9iQ0ZtYVlEbFN1c0JVQzhHYUdnQzZWZ3NzRm5hdlMzUXRDN3VYaXlKWU1QMDlvNW04CitPMkdmT3NXOGlsMVR1ZG9pc0Y0Rlg4aEd2eTNsYzF5R1lBWFpZU1pZYStSQml0dnk5aHlYSVZpajc0NFJXUCtqRFJiOHlnYUNGTGRtCit4N0tvSk8vdHlXajJKejMvSlBoanNzWThsbk5MOTFjdnNOTDhLT3RrMWZOWTVpVHYzRC9BUDJVSk1hdWJ2R3ZaWVNKWThKditUMDQrCis4ZUF5QkNzRmR2QlhWZzZGMlVLN2s4NW9Eb1VzN041RnNpd2pTc2s3djVjS2txSHNEM25FY200Qm56bnhISU5URU5hYUNWSnBjQkduCit6WFFpbHBZZFpvTDFpVGhTQitrWEJOYnU4Vk9oekZod0FJQ1hyVXplRjJSUG5UcHA2cXkvbkFHOVl6V1NkNWdwZnFaaFJsL0FrcGpZCitQMEhycnRCWkRRNDY4WnVLSFZncVhkWWs3OTNBZzR6a2xsWHlEWmZxNUZoYWRwZ0pWak1veFozZzNzSHJWODRaem1NQjhMcGpkQ3ltCitHM3Ivb0RYZHdGYUQ5N0VaSEc5RnhRNTNWSEtzYWRPaDVLOC9xNTFqWWJEd0MvRlNpeXdGaXhYNy9TaXJrMk5wMkdFbVdBMmdIT3ZuCitFZmUzYUNmdlhpVEEyN0o5bHBWTE9sN2NMdnlIMmcyUGFVNlFTbUN4NG1YY1hEVEFTa2FTbXB4eEV2dzFWWHNvZkJMUHQ3OS85QWdVCisyREpyNVZESUZoMnJoOUlNNnZYQTByRERncUdRVzRiMWF3QU4rbmVGdnpvRHZwVFBqbHFWdkQ4TncrVG9GRzJ3eEtHUU8zZ1VtbkVrCitHbUFsUy9NL1k1S1hnNXBrTGJENDVGM0lzZGhnc0V4TzN2SFM1Sk1WMm1EcDJHRko4bzcxS3pZQ0srVmhTSllqeFhLdzRBMERlRjBQCitMREY1eHhPVlhMUWlsdGczODRQQWt0YWFueFNtRytEOUFrcnRFRmhXTEVLenI0SnYrRnNVTk9pek8vUWpsb1lkNWs0MzlDNlNWSUlECitkb1BSUE5iVFhlQTk2eVBXNkpTM0FGQ2tXTXJwQmcvcVhtbVljRWNiTE8ySXhUcmZCUmRmY0FxWU9aMVdEWVZvenZHZjBzMnZreEFzCis2eUlXR3FzL2w5WnNuV3RCc3hGWUtIYThiT0VpdERpUEJRZmhjNDlwcmhXeXFIdWxpV2hYMUhJc3ZJMUpMOGVDTUowQ0YxZXplQnhrCitpeit4TE1kQ1N5WWZ6Ulp1Z2JkMGdDTzZPVlpvTzB4ZDBsblREVDU3UWRpa3RxWUR0Qm5Pdk1QWWNjN0NSV2hwZ2hTbVdXOXFnb1ZXCitFQzZ1NXVNR2g3czNLbUJOUXpKOStVblFwVG56emptTFR3SHdSVVZ4Y2VtV0Juam51c3VxUldpMGN0WDVjWGxSOGRxOUhRQjhzMXB2CitTVWZERGxNakZreFBRTy9INWF1S3kvZTJvZjBYaG11RktROTNnVGN0SHdwSE8xQ29sQStHcWtWb3ZudFhGUW5kRzVXWmQwbTZmcWU5CitiWVp6ZWo2UlB2alo2cUFKVXRQMnZMTnJwUDBjNTNiTllYVm0zclhzTUhuYnpGckpMNzI3WHRDYklBMHNyWUEvcFZnMzNTQXU2ZHg5CitCcHlRM1Rlb3Q4MG91amM2RTZUdFdCcHIxbWZvYlBSRFVyemxTRWZIMTBkM0ZjRWJCd3MzK3JuWDdtM282UGptNDNLOWpYNDZkcGk4CiswWTl6RmU4OTF0SFovSEhGTW81ekVhd1YvdW80K0hLc1ZXQ2RsaTFDKzJGMnA3blJqK09LK083ZFVlUmlvN3ZuUGRWb2F6SXIzL1J1Cis0ZFprY2UyYkk5dnpubXI1MW1SaDJ3ZDcyZTk1VDlIZG1oektERXQrcGFQNE1RWDkrUmY5bFU2MHdLSS8vNkpnVWJBb1dKY3pXTVJGCitRZWhRU01FeUpXSk5NN0IzZVl3ajFyZThLRWhuak1HYVpOU3NhVVZCMHRjclphUHFiVmFNeXhpVlZsY3FSUDIyS0xabGpFcUxsQXBWCitxOTd1aUcwWm93T09WemJveWl0bWxURUNLNmZseTJWNmZyN3FmWHRNd1RwYVZLeVVVdFg3NHVZWWdnVkFzMW85bFg1RjFTQ0dZRFdCCitsMmJNVk1vczVkc1pMNEh3d1RJUUZ3WXJtbUlDV05FVU04Q0tucGdERnBtRUFWWlFNMjYzK3Noc2wxWnhXei82SC9vRC91a1BDNng1CitzNDJMNnM0bXJFRnFDbGdrUlg4aFdQZU9OUll6d0JwTjBpNENpOGlPa0dCNVE3eGpiUDJDWkdEd29YNjJLMjlReS9VMzNSQjhiRURTCitTTFVrcGZVbFlqRTNFTW1WSWV3SUpUWjdzSDRGZlFIcnFodXVWOHROUVVkdXVKcnBUeVEyMjhoZy9Vb2lCeXVYc04zK0E2NE90aVBFCitrYXVZRVAwYnNsdzRjOU1EOXhQSUE5ZC81d2MvSkpIK3VXVWxhdW5MNkRpM1AxR3pQeGhNYU1mVjkyME4wcThxY3ZWTzI3LzM0LzgwCitsaDkvYjhEOUQ1REl6KzNCN2l2WkZ6bFl2NzMrQWFLRzd4OUFhRWQ4WWJCK0lVZEg1aGRrZGRSLzlIMmlPdVgzWHJFMXVqblczTytRCit0WHNkcVIzUFJua28vR1VHUVhYNWpOc1lqa2k5QjVKSVd2V1NnM1VybVZ0WTVqWVNPOUovU1Y3bi9lZnpPSktzRFlJMW1rU3VnT0dwCis3YWkrSEFzTHJMRUUyYWZqM3V2STdKaHpFd1RyZ0pHRUE5WnRSUFhsYngvd0pNbE5DQS9XZmdOcEIvNHd3Q0p5eTVQTTdVUTU2dTB3Cit4Mm83WXRDL2JTYUIxZVp4NnhjcWQ5WEhGS3lYcExwbkd1TFlRQndUb2crV0Y3d21sbzNUa0l6cDdTQjJZSjAyN0Y2M3A4MGNzT29YCitkWFIzYWtzSEtDMlBLVmpaRzhCcFBRRXZ6WWdwV1BrcmhkMWtvYVduSnFNbWhtQ2RxWGQzZE9wSmQ0ZTczaHl3am5nTTdDMnZpQ2xZCitNN1lidFBuS3JGaURwU3V0V1kweEJjdW9lNEhITkxDNktWZ21ndFVZYTdBTThuY2ZCWXVDUmNHaVlIM3J3UkorVUtZTFZvb2tWb0xsCiswR3czRkZnaDdUQVpyTlJrUVZLTndWS1hDTElJck5CdVVZS2xaVVpmd09KWWQzRnBlZW1xWmF3T1dJNFZDd1NaNmJBeVlrMFYyNTAxCitWVm56SUJnc0RUdk1CU3QxK3ZMNVdQS1Z0Wk5DZ01XNmlxQjZwY3M0MWxLd3ROeWlBQ3QxZ21qR05IV1ovSWpCWWoxNytUMGpYKzlhCit4R3FDTlQ1d2xaYlhyUU1ySlVCRWIrMGY1RDlORHdKTHl3NXp3VXJlTHg0LzgwWjZxZzVZckd2TE1leWt6bnBsUFhpVHdaTGM4bzNLCitMUXF3a3FYOWNsNVZkYkdJd1dMWFhJREdOamMwZHdCd1NmRkxSV1hFQW9CL05OM3hMZ0JldHc2c0RlQzAwQzVVVC81TFhqVlltbmFZCitETlllMElvZXlkZ0llNzVHQnl3Ty9TQzB0NjJoQVJYcFY1UzdOaGNzZG91V1c5UmdkZkZtK0VHWHNreCtoR0N4Vy95b1RqbkhjaDZvCit3c1VYZE1EaTA1M1JrOTRDUUZGZXdtU3d0Z3NwMW9JejRNMnhtbUJwMjJFNldDdHhhcEsrc2h2OE1WVVRMTThwMEx1ckNGVlJYYXVxCitCMjhxV0tqMmhjd3RpM1RBcWtsT1JSbFd2cnBNZm9SZ2VVNkN6NFZmdnFMeURCK3gybUE1VUNWNjJPVjN2NlY4eG9IcFlPSEMrNmljCis5Q1VaMENxd3RPMHdIYXoxeVdQU1VmYjdHbmdqV1FzczlsMFVMNFFTVktnZXZFVmdvZnJ0dkZ0dzlZMWRyQTVZcWVuSWp1VDVVcUd4Cit2b0NGQ256UEZsdHp2Z28rbDFYQUR3Wkw2T3kvU0hVSXJBRkxmSDBhek5BQ1M4Y09LOERDcjFhQ1BWcGdzY1hkZ1NqRmVrNzF5b3FICittQWtXcnQrdTRaYmdpS1d1WU5jWHNJcmxOZTlkbnRKbExwY3hXRzhwQytKWUJkYkRpdnJvU3JCMDdMQUFMRnc5YWN3SDJrTWg3T0RQCitaZmxONmFyWjFrUXNQYmVFQUF2YnNUSWFReUc3OXBROEhYRXBDbnlIenJGU1VIR0pQOFVneDRJajhJbkhOSElzUFR0TUIydmptSXlNCitqS3pwZTVRZG9od0svNkdzQjI5UjhxN3JsaUN3eG1SQk02YXQ3ejd6bTJpQUJiN1JMUEN0Qm1zRmxsZDJBL0NwbFhlRnRRdHd1eHZPCitBSG14RkRWWTJuYVlEcGJVKzJPMHdUb2xQUG1CY3diVmd6Y1ZMQjIzYUV3M2dLN2ZKZmQ5dW9FdEI4ZjRPc3c3VUxuYyt2cGpIbFlMCitySURqUDFVVy9qVVpySUM4UEZvVExCMDdMQU1MN0UvWEJNc25sQlV2NHRVN3VvTzFCS3dLMFMyVlFyc2V6aEFzMFBpNzFLaUI1WGFLCit2NnNyWm5YbnNieWdkL3RNVldGbms4RnFPWUFuc2I1OEtWdDc1bDNQRHZOenJGUzBFM25DeW03RldLZ0VxeHNVYWRTck54VXN5UzF0Cit3VzRKY1ZjSUJUMlZyeXNLRVd1dC95SWZvc3NyMFNNSk9zRXFWamZIZWxvOU8ycFJqdlVXK0ZKWjlGYzlGR3JiWWRGZFlXcnkvRzRnCitHMFhVUXlGT29qa1BVcS9paUt4SXI3bERvZG90UmF6QlhXRnFjdFpKOE5ma0tDVHZ3blFzWHc2NVF3OHNOSS9GRnd4UHNSWXM5QnpICis0NkQzTVoySXBXT0hWZE1OWTFKcndId05zSFRxMVpzSkZnZmQ4b0xDTFlaZ3daZnJGZk54a2M1amZTS2ZTMlFOd0JJS2h2L0o0b2lGCitYa3hDRlRTMUY2RjE3TEFNckdSdHNGaFVEejZnN0E2THdGSzVoYk1RTEc0TldsL2d4SktNSFhvNUZ0K3ZkeDlYRlF5M0JDeCtFTlplCitoTmF4d3lxd1V0TlBha2NzenlrMEE4N3g2am1yWldYRnpRVUxBaDF3Qzh6MFZobUNsWnI2UmpUQVFsTjM0TzFsK0hFVDdqVU5RSWEwCitCbGdwRHdORk9XbXJKa2hocU96VldZVFd0c09hdGNMazVER3ZnVE95L1EycUpaMjFGOEFYcTkyb3VvcTdhSzhmZk14YXRGYW83WlpnCitzUGo5V012OVFIRmJHQ0ZZbkFzMjNmdHhaY1dPZ3gzb09lekdNKzlCVDgrd2FPWWREb2FmYWk5Q2E5dGhPbGg3bHErRXNyNEdLSkplCisxU0kwM256eEJWU3ZHcFc5L3V3RmE1WjBWRzY1OUxiT1BGWWpObVBsSGdEK25oeVYvVmljVkVpOTk2TmxyTTUrTExHM1lROWZsRys2CitNeG1zM1lGbkdzdWZJQm0wSDB2TERxdjJZd0d3VVhjL1Z2RmU4WE5mbExvNHkvWmphYnBGY3g1cmYzcVVkcEN5cnVMcWcwY09WcGU3CitXZTJOZm83YUE5SmE0WUxhMnBsV2diWGkrRXZTSXZUMjJ0MWpkWGFRYXRoaE1sanJhL0JQbGZlOHNWSzVqU2xvQnluTGVpcjJIcWxICis1ZUJaNi9aalNXNnBWTHRGQ1ZhK1lNYWVqZE5Ubzczbm5UWFk4eDc2dGZsNzNoMnliZmNrZTk3WjJPeDVUeWJkODg3RlpzODdTN2JuCitQV2pUdTltLzBuRTRaQzhkbHUxNWQyaTFlOW44U2tlb25mRnQvNVZPdW9ZZDlPZGY5T2RmZlFLTC9xNlFna1hCb21CUnNQb0tsbytDCis5ZThNbGxHelpvRlY3KzRFUG0zcEJxV3hCU3Q3QS9EcXlXVlF4cWlycHd2K0gvNkJSZnliRjlBWTR6SkdIdDN1OVlGT3M4QnFWbGZpCitLbElYWGpzWVU3QldPQ1lwQzYxTlVyNmY1TmhBcko0WllLMVBuNmFzdEtaNm16V3ROWVpnbmY3YVl5ak5QRml6U2Vvd1E3REdrZ2lxCitRZHBXZjBRaFI1VnY2NCtDY01BaWFoZUJSV1pIcUZLUnUxVUNvZzdXYlFPY1JPV3VjYW5JRDVSU3MzK1BVbHJES2hWSjVCWW5RMmlICit2UWw4cmVwZXRkVGovWlhNcmV5VEJNTCs2RWJISFNSeVJZbXY2ZlFabFlESTVabnZFTFU3K2pveU81dzNQWE8rNllKS3VpTlhyOGwrCisrNWhmR2t2NjdjeWpUaEkzMzI5dmFtcnFWWXU2MVRDSzIvNkl6QzJQd29oRllBZU1XQjhHZDI5SWRaZ0JWd2JKVlZjRkh4dGdHMHdrCit0aUgySUJuWkI3QktDTnU5TnBRZHdZZXVaT0tEMUl2UDdRTllTZjBHQnNtZzRFUDltQkM2WEIzaVdMQjY5dmlJbjNuZ0E4K0dhamVVCitNS1IyQk90bkQxM25QYk51SDRIVWpjd2wrdHkrcE1MZ3o5WDFCYXlSWlBwbDlzR09QdWpYTktTczdrTmpxU3V6VjVIb1YxZVlGT0pvCitVK1JnNVJLNnBjcmVCenRDVGdJd2hGL1h0S1ZrbjBzaXFmUGVSZTZiUXNMSFd1Uk9KclJqSVlpbU5ObkpxS3l6bnlmNjNOYWthR3JuCitBems1Wkovc0lyYURwTTY3VndDcmNmMUdYVm5mRGp0a0xnQU5sZFg2Z3NBcUEyQy8vdlhXdjBhY0pQQmd2Vy9RYm1VYkFEa1FySTBiCitDZXdvQUoxR1psU0hBeFljQityMUwxZ0o3Nzczb1dmUWJEZDRITnNCQVN3RDdTb2J3Z0xMZjN5RGdXem43VERxWHRHT0F4c003ZkJpCitzSHFtVGNpZnJpUDVXZmtZckE2UCtubHNLbkZWWUxCcU1xWk4xNVgwaldGRnJHcVhmclBGbmlJZkFtdGxocTRaZ2gzUGdsSjNxYkVkCitZWUJWYjZTZnF4NTN5QWJIekJtNjRxaUZZUGxBaFV0ZnZ5SlBXemhnZVdka3o5SnRkcVpqQTdUalg0YmR5OXR4b1hiOGpCbUdkbUN3Cisyck1NSnR6ZW1JREJhblliR0ZSWmpNSGFrMlZnYnppUDdvVmdWUmc5OFBTWXV3T0JaVFJqemR2eExQQVlQbUcxT0N5d3Fvc01QbFJVCitqY0Zhc2NEZ2M5bTdNVmhHais3dGNEZUVBOWJwOGJVR0gxdXdBb0gxdGJ1RHhJNExCN0tCc1IwOFdCUDJBUDZSYi81UUFqdGtHZytXCiswU05qMGJPVWsvaG5Rb2U4RU45R1R3Umc2US9zeHp5ZEFsaCtZenVlamZJem9hdkErMFpncmVMQmVtbUJmZ3JnSlFRcm5HZENRN0RPCitaeDh3U0loNHNOb01BK0VxQVN5eVowSWpzUFliZk5QREJTdUtUN0VuaWxnU1dBUjJVTEFvV0JRc0NoWUZpNEpGd2FKZ2ZWdkJhamNBCithemtGaTRKRkl4WUZpNEpGd2FKZ1ViQW9XQlFzQ2haTjNpbFlOR0pSc0NoWUZDd0tWcGhnNVJDQ1ZVQUcxcENTNkE2RmMwZVNnTlVCCitjdTRqQktzZ3VtREZFNElWVHdaV21UM0tZR1dDMDBSZ3hST0NGVThNVmlFWldMa2xaR0RsVkVVM1lwWGxra1dzd2dJeXNLQWRVUVVyCitzNDRJckxwTU1yQ3FNa0ZVd1ZvNGx6QmlaZjdyYXhLdzZqSzdTY0VDUkdDaGF4R0JCU1dxWUVFaEFnc0tDVmpRRG04MHdVSkNBaFlTCitFckNRUkE4c0xFUmc0ZTV0STdKamQxVEJRanVpaU1EeWdlZ09oZkNDWkdEMWtFVXNuemVxRVF2WlN3U1dqeEFzWDVUQjhoR0M1U01FCit5eGR0c0M3N2lPVW5Bd3NLalZpWFU4UUtDNnhvUml3S0ZnV0xSaXdLRmdXTGdrWEJvbUJSc0NoWUZDd0tGZ1dMM2hWU3NDaFlOR0pSCitzQ2hZRkN3S0ZnV0xna1hCb21CaHNHb0l3VElvUjFJcGdtV2c0UEl3ay9keWd3ODBJTVVnV09zSndUS3NOaE5sc0lvbHNQUmxrZ0JXCitwZjdIT3NJRnk2amF6SW9WUk4wcjJMSGJzTnJNSkJHc2pOY2FhM1NrY1QxZmw2akJWZC9jb0NOdEZYejVuejBaTmNycnFhN2VtQjhtCitXTVZ0RGJydEhuUjFvQzllL254ZE15UTdQSlVHMTZzb0RrdS9hbyt1V3hxYVBUd3BLMlljcjlXVjhUeFl4ZVc2K2pVZmNUV0VvOTdwCis4ZHYxMnowK2N3WGZ2VWVJN05nOXZyYVd3QTRJRmxpWmthV1FhUk1VYnlkazhLSEFWKzdXTCs4dDFHOXZuNjYrbnZKdEZuRUJmR0drCitXMlJRVmh3WFN2TkRvTE4wUmJTajB1VWhzb05VRE92YUN4R21kcnhLcGlyZk9tYTA0TS9WRytqbkx2ZUZwZDhLaDdLZDdHeTFJZ2VJCit1bGV3bzJXRzZucmpzMFBad2FDYTRZMnRqYTJ0alkzd0wvZzNmbzMrajkvZ0Y5TG9ycFFPMVh0K2pQYURkbnh1bzNBSjhiS3lOa2pyCitsSXV4djgxQWhNODF0aXJzYU5XeW80M3dlcEhxcDM3ZktlUXlMY2RiOU9UNGVTRUhhek80WHBqcUFmMW1vVlo4dXo0anQzVHlacHczCit1aDYyZ3lGU3pROHVmL0gvbTlqeGJ5SU1kUUVWQ2hZVkNoWVZDaFlWS2hRc0toUXNLaFFzS2xRb1dGUW9XRlFvV0NEMGcwVjhmdlVMCisyU2REYktEd21xcXUxeHRRUWQxU3FDTkJwL1dZcktEa3BSNS9rRXQ5QktmNXpGc2NVRFRmRS96U3ErbGxYd1RkcTRoWVd3dm1JbGxhCis4bzc4Nk02U3dtZVhiajZydU9qaHJZVnpsNVlkRW80MUZTeWNLNXo1b2RuZmhKYWRKYWdaNlhHN2hVTExTQm0wWkZOWG9EZ2lTaTg2CitiZW5tZHRPL3FZR0dzR3VxZUpmT1hiaTBySlZmVXRvbk9IbnA1aDZWbHhlcXZSeGxyc29rWFRhM0tqcHpIV3E2U2Q0MDh2S3pvcGVsCitNNWVXSElwc0tFeGpCSWtmZDFMRWM5M3dCSHhvMkpSdWllYkQ5d3l4b1dPSjR3N2h6OVF4a3Rpbm1OcDNMWXR2eGkzSEQxc2krRUZzCisySlk0aGY5eXlIWGh1OUlMZWhjUEYwL3pteGV5NElWN0JYZkZEVnZTalJ2S2xhbnpJajVTS0IwWTlnN1E4cklwWUtVeG9acmVtWllnCitlT3VrNkpxQWx6ZXJ6aFRBQ0Jlc1RHWmtEcFRKc0tsYmVBTmJIb0g0M0RjNUozTTR3OXdpWHZQNUJDWU9IVXV6TVFPM29jZWwxakh4CitPVmd5WWY4OVpPSjM3dkJRNkpQN1lEc0pqTzBoWHNONEpsTnMrU2tjSWhpN3FBc0RqM1NoMDc0Y0paM0czR1ZhejZIOUM3QWh1K0N1Cit1ODZpWXdWTWtxQk9BdE52RzNKTkNYOWtNand3NkpEOHRFemV5MmROODU3UXZUazVzSDhIdmlOMDB4TTJKaTV0TXZaZklqN21sYnljCitocnpzNTg5TUU4RWc5WjhLckJMK3hicWgvVjdFY1gwaUU3ZmtFUHJXdDZ5VHJ2bWNqWm55WVErT2w2T1lRVFU0WXNWTEVhVi8zQWVtCis5ZHlYSTVqRXpkanhkWXR0ek85eE9MSXpUZndROUh4L3JFc1ZJejdidk9VUlcyS05lTnFTSnY2MEJIaWFlY1BnS05qUUlkNFBDY3lECitQRmppczVFUGo3Smgxa3FZVE9IQUNQZ1J2K1JsSUhqNVFiOTVZSldJdWd5MVBjaS9lbzZKRXpwejNYQWhkRUIzRGR2Y0pIcjVLY1daCis2d2J6WUlRTmx2akE5Q2VZM3lLYk42R1FKTWg3Z3hrY0dFOGsySjRTajUwYnhVemh3Ukx6dTk3L01xL240TFdscUFueGpzT3Y3Y3crCis0VitITTFzeFdFbGlzbm5wWjdZWGtSWFBNYmRJdWNFbTRiVG9DMjRvVWNwT04vVzNIVktBQmI2NkZrZW9FaVlOS29qbzJjUU1BN3lYCitBNmRCTDc5akhsaUZValBNTlRobGVjOFdKNEZ5WWlpekpOakxpU2NWU0NJd0lnZkxEeFppUEhxSE1qSStKeUlkdXNBanpEaS82RW53CitwdTJoczNLdy9ISlBScnZqRGcrT0N6ajkzSWpFRHlTd3ZINm8ySERiWmdWWVhZSTloNjlndGdYZ0hKRzR6YXh0V1MzWE1iSnJUeHk0CitUZVVPL2p2QWc0WHpkZVlXck5KMXpJdUI5R0ZpM0lzV2dOWEwyTTZqVVc4VXpGeWtmMytPZVFwcWo3M3NsY1lJNk9VQVdINlFSeG8zCitRa2VzY3lQNm9iNTRiOEExcllGL1BYY0lKaXoraXovalV3VytvVXNmbnZkYUZySCt6UHdrMEFHOWh3OTVnV3dvaE45MS9FV1RSNng3CitiRXVFMHdMU2lhd3dSOTVrZnRLdGNwY2NyQlBYOWpza0h3ckJSRDRyaE5IanJQbzA4eVBXb1BOWXBVRUJpQURzVE95dXU0Q2tRbThuCis5TElzWW4wNW90OEhFWUdWdTY4S3lycFJjTFNEdDMrL3RqMGwzSEJDRVc2T3QxOHg3SlIwRE0rNitHVTVWaS9Nc2ZhWTFYRy9adjRYCitLTlRoYzZ3U3JQUGloTVJ0UUpGajlUNWlHL2dCUHUyL2cwOHpJM1ZYTkNUMFRhZ2NLdzBydlBVZTIwTjRVZ0o2MmEvMnNnVTVGbXB6CitRLzl4RndLZHFlVmxkR1llRDhiUXVDV0U5Mllxc0VRWjE4MXJzalRvaEhYTWZVR1hobUFWWU1rMTlhNXdLQk5pR2lVK1h0U1puMjZvCitZb2JNUmFyazVlSzdRaTg2N1IxZ2dmamd1TEk1NkdnQk01SlhKd2ZlU2d0M2hhTEdpWWN3ajZHOGJCSllhYnd1OElaMElKNG9lb1o1CitQT2o3RWV4bG53cU1TTUN5SnlFWllrUDVHNXErNEJIM2plUWxUWWprWGx4Q1BBa2ZTNnJEWUVrVEhRKzFtdVlhTzFPSG8wM1ZFTDdsCitQQjZzSkVGbmZHc013WkowaWVNandSQ21pc2RmVURnSCtNenB1Skg0N2dHQUpxR2hUSGlzSURCM2xNaW5FQkFzWHVFRUc4elovVEl2CitKd1c4YkJKWTRweWZlTGVRSjhiVE5FRmxIL0RGcTd4Y2dNK1VneEY1anRXeWJpaURwb25FNzVKUHBBYjc1VDRlckNUaDRENE1WaTZVCitvVGJoWnRza3VWbjRMb2x6b0praWJjSkVCeDZKcWhnN1ZDVW5JVDV4eVZueHRIZUVXTVpMbWxsZ3BRa1JTNXd2VHNKZ2pjekx6YzBjCitIRDlNblBVWGN5enY0WHVZUk1YWFYrWmxzeUlXZEUxbWYyYmNaaUh1U0JGTFJBN21xd2xCWGc0TW9pM3JibVllOGtjT0ZrenVFcTc1CitBQTIzUzdBR3ZxMVFxZ3FaSWZEMTdzSGorQnlyQ2gzY2FoZkFRa2MrSFl4YU5XK3g2MFpoOUcvQzZ1U0lZTzBUYi9adFArbVJjcXhOCit0cmdscXRTTVB5M1hMTEFDT1JidkxvZ1VCaXVYbnk1S0ZPOU1BM2VGSjBiMGV6SG90RUxJbzZrNVZ1OUU1aFl4WTM5ZXpMRndaNWJGCitJN0RVWHM1UnBQMFFqSm8rZ05VRGhqTmw2RFpIZmxkWWg4RTY4Yk5CMnhURDA3N0FYZUdtQkhUM2FocFpmMlllbEMyZUZpckFRdmRUCitUTC96Z2J2QzUxQ0doWFZSM2hWdU5Rc3MzSkRNOWlvNVdMQTMrMjFUZ3lWTUNpbHZKdmVaQ1ZZaDhzaTVVV2plUFlCSklDWEdFZXM1Cis2T1V1bVpkejVHbS9YNWd0akJTc0xoaWY0Zm1YWlBOWWZ2QWhBZ3ZOWXowa1c2NVVnQVdldDlsZU5Bc3JQempjUDY0bThHNnBHcXhlCit4dFlqbTI2WWFCTzZFcDRtWnU5ZVB5Z3pENnh6VjBqeldMQ2hyWEt3d0xrUmFOeFRnQ1ZPY3AyVHpiTWhMNXNMRnBvekdNcmNjb0VQCitzcU9ZcHdKTjkyQ3dkdlpQVkhoWkFWYVhsRWhHT0JRS2NVaytsUXp2QjYvRmxQZnY5MVJna2VWYU9WaitYdmhsT0drV1dUaUlCNjcrCitoSG9vZk5QMjNYWVpXT2V3Ky96cTB4YWJCNVppaWgrNlN3NFd6aE9FNUYxVTROSkUyKzlCc0plSG1ENlB0Y2ttOGlSZldnR0g4YXdwCitkTmRkU2krTFlIbDVNUFpIQXBZQVpzc2pEQjU4WVNPSndscmh6aWRzYUFVQ3lOWUtmWFdMYjdiWjZnSmdlY0dKd2JhN3pOcytFRmpGCithdGw1ajQyWnJKZ2dQVHdVZXlzd1FXak1HWEVBQUFKcVNVUkJWUHBlZjM2NmdWOHJQQ3VkZHA5cFlQR0xrcnk3SHJFeDQrUmdvVFVvCitZYm9oVTV6enMvRkJMTWpMZnBQQmd0RmNYSVNlS0s0Vm50KzNPTUVXaDE1OXF2VHk0NG9KMG50SUp4eFVZS1VWb051N25PRU1qczVlCitZWGNET21Kam1ISEMxL0Y1RzlyZGtJdFd2NkVLZnNYTSszTU1zODBzcnNSMWQzaG5BeFdNbTlMS2c1V1RoM1RPVEdEVU0rK1BNR2dNCis5UHJBNFZIOGFkaUtLYTNtNlllMlVVanV3aE12QWJCZ2FuTkxLNDVZU2RqSnVYZy9oaDk3K1o0UVhqWVRMRGdZM2lYUS9RUVQ2TXh4Cis3d1M4UEZuMDhsbitmaEk3T2VkbUpvNXdVakQwZml4bW1MUnNzMjQ0bmhleTJjY0pXM2p3ZnF3RWZyL095Q1U5d3YyMUNOYWxFY3dnCis4d1pEYWFjUVk1OXlpRS9ObWNCV0lUem50NVd4aTJEQkFDSnNRaEgzWS9Hbm1TaTk2OFNHa0x1OGFEOVdqclNNMGg5dmVBanN4N0x6Cis4Mno4TnE3NHdHbG1nWlhHekJXL0Fac1lLYmtTOTJQRjR4aUJzNHFXeFVQa1h2YUZCQ01jc0VweTg3QW9kMXJ1TEpsYndHL0hsTzB3CitoTWNLbG40b1pEZE51WG1CVCtkT05tOFhLY3FZZGhiQ2xqZExxMnNGdk1vRlMvbU9CSFU1YzZVQXNpNTNzc2lSK2pUekJEYVV0N1NzCitTYndKelNtVGRIOCs5M0dZWDFUbENFNHVVeWdEdlp5bjluS1V3U3JKcVpMZVBaTzd0TnNydEhVWWRURHVURzlJTC90a1lCQXZPUm51CitlZmY2WmIwcVNvL09jQURNM1BmdTFWSFdxM2ZBcjJkamxObFh1ZFFYZENUWWpWNEw2dUNvZGZFRzk3UndTTDduWGEyelB3S3dxRkNKCittbEN3cUZDd3FGQ3dxRkN3cUZDaFlGR2hZRkdoWUZHaFFzR2lRc0dpUXNHaVFvV0NSWVdDUllXQ1JZVUtCWXNLQllzS0JZc0tGUW9XCitGUW9XRlFvV0ZTb1VMQ3FYcS93L2didWRqSTZiTXdZQUFBQUFTVVZPUks1Q1lJST0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9jb25zdHJhaW50cy5wbmcuYjY0IGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2NvbnN0cmFpbnRzLnBuZy5iNjQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI1YjRhOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9jb25zdHJhaW50cy5wbmcuYjY0CkBAIC0wLDAgKzEsNTkgQEAKK2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFsUUFBQUZZQ0FZQUFBQ1ZzbUxQQUFBQUFYTlNSMElBcnM0YzZRQUFBQVppUzBkRUFQOEEKKy93RC9vTDJua3dBQUFBbHdTRmx6QUFBT3hBQUFEc1FCbFNzT0d3QUFBQWQwU1UxRkI5c0xDQklBS1Z0WnNNQUFBQXh4U1VSQlZIamEKKzdkM1picXZJQWtEUkxzdi8vOHYwUXl0WHZwWVphcDdXa281Nk9BbkUyQVhiQlNiaE9JN2pId0FBa3Ixc0FnQUFRUVVBSUtnQUFBUVYKK0FJQ2dBZ0JBVUFFQUNDb0FBRUVGQUNDb0FBQVFWQUFBemIyanZ5TUVXdzBBbUZ2aDM3eG5oZ29BUUZBQkFQVDF6dnJ1d3RObEFBRFYKK1ZMeHN5UXdWQUlDZ0FnQVFWQUFBZ2dvQVFGQUJBQ0NvWUVvaHVGa3VnS0FDc21McTE3OERJS2lBeUpnU1ZRQ0NDaWdRVTZJS1FGQUIKK0JXSktWQUVJS3FCZ0tJa3FBRUVGRkFna1VRVWdxSUFDWVNTcUFBUVZpS2t3eGpJQUVGU3diVXlKS2dCQkJXSnE4R1VDSUtoZ201Z1MKK1ZRQ0NDc1NVcUFJUVZNQllvU09xQUFRVkxPazQxbHdYQUlJS2hvcXFKeUZVWWhrQUNDcFlNcXBpUXFqRU1nQVFWTEJVVktXRVVJbGwKK0FDQ29ZSW1veWdtaEVzc0FRRkRCRWxIVmV4a0FDQ29BQUVFRkFDQ29BQUFRVkFBQWdnb0FRRkFCQUFncUFBQUVGUUNBb0FJQUVGUUEKK0FJSUtBQUJCQlFBZ3FBQUFCQlVBZ0tBQ0FPQS9iNXNBR2pzTzJ3QmdNV2FvQUFBRUZRQ0FvQUlBRUZRQUFEdHpVWG9oSVFRYkFZRGkKK0RoOWttWUlaS2dBQVFRVUFJS2dBQUFRVkFJQ2dBZ0FnbVUvNVZlU1RHUURFOElueGVabWhBZ0FRVkFBQWdnb0FRRkFCQUFncUFBQUUKK0ZRQ0FvQUlBRUZRQUFIdHlZMC9vNE83ZWZlNEpDekFYTTFRQUFJSUtBRUJRQVFBSUtnQUFRUVVBZ0tBQ0FCQlVBQUNDQ2dCQVVBRUEKK0lLZ0FBQVFWQUlDZ0FnQVFWQUFBQ0NvQUFFRUZBQ0NvQUFBRUZWQklDR01zQXdCQkJWUEhWRTRRbFZnR0FJSUtwbzZwcy85dXRRd0EKK0JCVXNFVk1wUVZSaUdRQUlLbGdxcG1LQ3FNUXlBQkJVc0dSTXpib3VBQVFWTkhNY2E2NExBRUVGeTBXVm1BSVFWQ0NxeEJTQW9BTDYKK2hJK1lBaEJVSUtyRUZJQ2dBdnFFa0pnQ0VGUWdxbzQrM3d1QW9JTHRvMHBNQVFncUlDT1F4QlNBb0FJeVFrbE1BUWdxSUNPWXhCU0EKK29BSXlva3BNQVFncUlDT3F4QlRBdk40MkFZd1RWUURNeVF3VkFJQ2dBZ0FRVkFBQWdnb0FRRkFCQUpETXAveTRGSUp0d0p4OGVoSm8KK3lRd1ZBSUNnQWdEb3l5ay9Ibk1LaGRFNVJRMzBZb1lLQUVCUUFRQUlLZ0FBUVFVQUlLZ0FBQkJVQUFDQ0NnQkFVQUVBQ0NvQUFBUVYKK0FJQ2dBZ0FRVkFBQWdnb0FBRUVGQUNDb0FBQUVGUUNBb0FJQVFGQUJBQWdxQUFCQkJRQWdxQUFBRUZRQUFJSUtBRUJRQVFBSUtnQUEKK0JCVUFnS0FDQUJCVUFBQ0NDZ0FBUVFVQUlLZ0FBQVFWQUlDZ0FnQkFVQUVBQ0NvQUFFRUZBQ0NvQUFBUVZBQUFnZ29BUUZBQkFBZ3EKK0FBQ0dDS29RUEFzMkpRQUlxdXdDVUFJMkpRQUlxb3dDT1B0dmJFb0FFRlFSQmFBRWJFb0FFRlFGQ2tBSjJKUUFJS2dLRklBU3NDbGgKK3N6RUtyREdvWGtOdWlPUHd3aW00aWV6WW9jOSszOWlEZlFiVnErbUdFRk9pQ2paN0UyM3N3UjZENnRWOFE0Z3BVUVdiN1BlTlBkaG4KK1VMMjZiQWd4SmFwZ2svMitzUWQ3REtyM0VERTF5OTZtVVBUMWZxZ2g2RmZvc2JzejltRGRRZlhxdWlFWS9yVUtsQnRMWWdvcURKWkIKK0RtamxnOHFSV2xTQk1TU21ZTE9vS2h0VWp0Q2lDb3dkTVFVYlJ0WExzd1VncGtCVTVYa1hmOUNtUEpaOW5RSnJmdDZHaWZlOVhtQy8KK3QwbUhnOXRyM0ZjSllncm1qaWxnbjhGYTU1U2ZJN1dZQXZ0bllLTkJXKzgrVkxHbi96WTZ3dGQ0cURZMWlDbmd4K0J0ZE5DcmUxRzYKK1czZ1B0N01YVXdBd1cxQ0pLakVGQ3pCMndPRHRIMVNpU2t5Qi9US3crS0I5RGZuQVJKV1lBdnRuWUtMQittNytBSitVZ0wyV1RRbVQKK2p6MWpFSlZmMEFTRDdqWGNrMi92WTFQQ1FzY3dFKzZ3Zmt6MUNhcXJCNndBYkVvUVZjQmtNZFV2cUg0OWNBVmdVNEtvQWlhTXFiNUIKKzlia0JGSUJOQ2FJS21EU20rZ2VWQXJBcFlhT3haNHpDdW9QcTVWa0RxTC8vRjFPdzlxQVNWQUNWOS85aUN0WWZWSUlLb09MK1gwekIKK0hvTktVQUZVMnYrTEtkaG5VQWtxZ0FadnFvRzFCNVdnQWdBUVZBQUFnZ29BUUZBQkFBZ3FBQUFFRlFDQW9BSUFFRlFBQUlJS0FBQkIKK0JRQWdxQUFBQkJVQWdLQUNBRUJRQVFBSUtnQUFRUVVBSUtnQUFCQlVBQUNDQ2dCQVVBRUFDQ29BQUFRVkFJQ2dBZ0FZM05zbUlFWUkKKy8vM3pPTksvN3Uvdi9ueCt6ZFBsLzFyTzArK0xXZDZ2Wlo1OVhlN2pTZm5aU3EzejZqbkoyVmFsWDA5UEhqOUFEMmFvaVBKMzRMbzYKK3dKV0tpSlFEN04yQk4vV0F6Yk50WlRzQ3V6SkRSWmVEOFhIa0gzelBabzVDU0p1ZGVUS2JkclgrbGtFN1FrekZicThWSGovQUdUTlUKK2REa1kxeml3MWpqWTduQUEvd3pLcXhuSXU1Z1NQSUNnZ29USXVEcm9YaDFZUnozb2h1Q1VsY2dFU09PVUg4MWlaZFIxZko5K3pMMVEKK3VzZTFZNm5ydkxzZWFyUjQ2ckhOQVFRVnc2bDE0SHR5T3VySno1VVNWcXM5THluWHQ4VitTaEJBVU1ISFFmZHpGdU1zUUdxSFNXNU0KK1BRbXJWdGRzalJDa093WTVnS0JpR25lM09rZzVXSmFNcWJ1dzJ1WDUrUDZhWDRIOC9mOTIyRjRBZ29ybGd5RDNocDQ3ejN5Y1BmWmYKK3AvRlNiMDBCSUtqZzRrRDgvY200bUZOaktmZC9PcHNKeWIyR0orVitVekVYU0s5d0FmdXZxR3I5czdvb0hSaVYyeVlnRENlOHhVT3AKK2dIbnkyR05qVmR3QU96SkRSYlVZU2ZuZXA4c3JmZENPV1Y2dHIyMjV6dHp0M1BweGlUUmdkR2FvQUFBRUZRQkFYMDc1c2JTN0M2ZEgKK09KVTB3OC9vY1FFSUtqWTJ3MEY3MWJBUVRNQk9uUElEQUJCVUFBQjlPZVhIWTM2dENBRDhab1lLQUVCUUFRRDA1WlFmbDN4U0N3RHUKK21hRUNBQkJVQUFDQ0NnQkFVQUVBQ0NxZ2lSRGN6d3RBVUFGWk1mWHIzd0VRVkVCa1RJa3FBRUVGRklncFVRVWdxSUFDTVNXcUFBUVYKK1VEQ1VSQldBb0FJS0JKS29BaEJVUUlFd0VsVUFnZ3JFVkJoakdRQUlLdGcycGtRVmdLQUNNVFg0TWdFUVZMQk5USWtxQUVFRllrcFUKK0FRZ3FZS3pRRVZVQWdncVdkQnhycmdzQVFRVkRSZFdURUNxeERBQUVGU3daVlRFaFZHSVpBQWdxV0NxcVVrS294RElBRUZTd1JGVGwKK2hGQ0paUUFncUdDSnFPcTlEQUFFRlFDQW9BSUFFRlFBQUFncUFBQkJCUUF3aWJkTkFFQ3FjUEtMSm84ZkgxY05ONytVOHVwN2pwT1AKK3Y2YXMvL1B2UHIrL3hQcFRsc0VhekZBQlVEU21uc1JUaWUvcHZYNzRaSVlLZ0t6NCtKNTUrZnU3RU1MUFdabVUyYXVZOVlzamVqQkQKK0JVRFJtRGs3cGRacS9WZi9QMmJaVDcvMk9JNy9yVS9JQ1NvQWlISVZMUzJ1RnlxNUR0YzNrY3NwUHdDYWlybVF2SFVnaGhCT1QxVSsKK2VReC9meWZRQkJVQUxCTnJ0Y1BtYy9sL1FZYWdBb0RxWWk5aWIvMnpQWjJsK2hWdzdNczFWQUFrS1hYYmdwSVhrSDllSUY3cjhUMTUKK2JFSkxVQUhBNHdENkZRNVBQb1ZYYy8wbGwzLzNkYi8rc0Nlbi9BQklpbzdQVTNVNVlmSWRZMCsrNzhuNlJ6UHF4ZmlVWVlZS3FoOTQKK3J2L0F6RkdWOG5lbG91THVlM0pDNWU1WHpUeDU3RTc3N1NVY3NhKzR6eGVJbzhIbE93L3ZPZ0J3TEJscUExZHJHRE5VQUFDQ0NnQkEKK1VBRUFUTTJuL0NweVFTSUE3TUVNRlFDQW9BSUFFRlFBQUlJS0FHQm5Ma292eEkzWEFHQmZacWdBQUFRVkFFQmZUdmxCYlhmM0kzTzYKK0dHQjZacWdBQUFRVkFJQ2dBZ0FRVkFBQWdnb0FBRUVGQUNDb0FBQUVGUUNBb0FJQVFGQUJBQWdxQUFCQkJRQWdxQUFBRUZRQUFJSUsKK0FFQlFBUUFJS2lCRkNHTXNBd0JCQlZQSFZFNFFsVmdHQU0yOWJRSW9HRk9mLzMwYzdaY0JyVi96ZDYvUnE2LzdmczEvZnMzVDVaKzkKK0Fja1pPMmR2YUw2WGVmZkdKL1h4cFB4c3BkWjU5WnprYkt2ZTI3OEJNMVJRT3FhZUR2YlN5NENXL2c1V1Y2L1JVaEhSY3V3WWMyVzIKK1ZZM3RQL2h6WTRZS2FyNWJmTElEZUxJTU0xV3NPbmFPSS85QWVUWnpFVHQyWW1iVHJ0YmZNbWhIMlBmRmJxL1N5eHhrLzJpR0NtckYKKzFLenJncGxlejc4T3BqVU9zRHU4cWZrTXlxc1p5THZ3U2RsZU5aWXBxR0FTTFFlM0dTcEdIZ05YQjkycjErNm9yK3NRdklucHRWK2EKK2VGL25sQi9rRHY3YU8xNHh4VXBhaEVycU9yN0hjK3lGOXkzSGJ1bDEzbDI3TlBKK2FKQlRnWUlLUm80cU1jWEs0NmIyd1RWbEhiOW0KKzNWcGNYRC9pODVLeWI0djlsR0N2WlFvcTJDaXF4QlF6dmZZL1p6SE9BcVIybU9URzFKT3dhblhOMWdoQnVudWNSM0lORll3NHFNVVUKK0svc0xzTzlybFhLdVhTb1pVOTlqY2ZYeG1QcHA1TFA3ZjVXK0I5VWt6NEdnZ3RHaVNreEJuNWphL1VMMHYzRDUvbk8xanlxMXpXb3MKK3N6R24vS0RHVGlubm9saVk5VFYvRnpabnIrK1UreitkZmNJdzkzcWJsUHROeFZ3VXZjSUY3Ti83dVpKUmxiTE1RUzVLTjBNRnRRNHcKK1lncldHYmVyanMrWTIxdkV4bXFOL2VEQXowTTRqc2lmcnRaNWFsaDVaeVdtQU1iYUp4ZmU3NXFoZ2w3dmVNVVV3RElFRmZTTUtqRUYKK3NBUVhwVU9ycUpyazVuU3dwTHZUN3lPTXh4bCtSbzlMVU1GUVVTV21vUDM0OHpONlhJSUs3RmdBV0RXby9EWnVBQUFYcFFNQUNDb0EKK2dNN2lUL201QmdRQTRQK1lvUUlBRUZRQUFJSUtBRUJRQVFBSUtnQUFCQlVBZ0tBQ0FCQlVBQUI3K2hmSGJEWDg3Y01GSlFBQUFBQkoKK1JVNUVya0pnZ2c9PQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2Nyb3AuZ2lmLmI2NCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9jcm9wLmdpZi5iNjQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFkOTM2YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9jcm9wLmdpZi5iNjQKQEAgLTAsMCArMSwxMDUgQEAKK1IwbEdPRGxodVFKR0FlTUFBQUFBQUg5L2Z3Q3ZBUDhBQU5FQTBkRUFBSzhBci8vLy93Q09BQUFBMFFBQS8vLy8vLy8vLy8vLy8vLy8KKy8vLy8veXdBQUFBQXVRSkdBUUFFL3ZESVNhdTlPT3ZOdS85Z0tJNWthWjVvcXE1czY3NXdMTTkwYmQ5NHJ1OTg3Ly9Bb0hCSUxCcVAKK3lLUnl5V3c2bjlDb2RFcXRXcS9ZckhiTDdYcS80TEI0VEM2YnoraTBlczF1dTkvd3VIeE9yOXZ2K0x4K3orLzcvNENCZ29PRWhZYUgKK2lJbUtpNHlOam8rUWtaS1RsSldXbDVpWm1wdWNuWjZmb0tHaW82U2xwcWVvcWFxcnJLMnVyN0N4c3JPMHRiYTN1TG02Z1FDOXZyL0EKK3djTER4TVhHeDhqSnlzdk16YzdQME5IUzA5VFYxdGZZeGJ0aDJkM2UzK0RSQWVQazVlYm42T25sNGV6dDd1M3E4ZkxxQU50ZzcvajUKKytzL3ovZjRCK3dJS0hBanNuOEYwOWV4NUljaXdvYnVERU0xQmkwaXhvc1dMR0ROcXJKaFFJWmRrL2h0RGloeEpzaVRKaVNaVHFsekoKK01tTkhqMXErdFJ6bnNLYk5temh6RG96M0VpWVdtVE43K3ZRSmdPZlFtTjVtQWp6S3RDZzlwaitUQm9VNjFDbENxbGFBdGhTS1ZaZFYKK2RGeTdOdEhLTXF4WVcxL1BtVDJiaE96S3RXeGxwWlVZRjRwYmxYRHJ2cHE3VHErVHUrVUdDQjVNdUxEaHc0Z1RLMTdNdUxIang1QWoKK1M1NU11YkxseTVnemE5NU1tVnhldjBFQWt4c2c4ak5vVlhOSjB6eTlSUFE0MVJ0TnN6NlYydlBzdGxMVHdkWW8remFwMnF0OUczRWQKK1lMZEw0YkdBTDBWT2hMaHhqTDJaZjFJZVhib001Nld0dDZLdVBYUnVkTTh2VnUrZWlUdDVIOWhEamo5dnlmeUlYclRXODBnZk80T0MKKysvano2OS9QdjcvLy93QUcvaWpnZ0FRV2FPQ0JDQ2FvNElJTU51amdnUmU0SjRJd0J4Qmc0WVVZWnFqaGhoeDI2T0dISUlZbzRvZ2sKK2xvaWhNQmJpMWswODRWbGtsZ0xzV1FLakJSSnFnSXdFQkpSeVk0VXFac05pZGhqTUdPTWtRbExnbmpFUndrZEJqdVZwazJRRlRCNUIKK0gyLzJEVWxKa1JOWWhXUUtVVEt5SlFwZEZqSGxjVUZhU2FReG85bkdRcGgvZkNrRG0wT01DVjJWWmg3aVpwYm53Q1lmQm5ES2NlY08KK2ZYcTNvam90Y2tSbm5YcjhTUUdXRXRRSXBodUtFaEVvRUhLS2R5Z0hDVWlRNlFFSmREckVwaFdBMm9HbzNVWGFBYU1IT0hyQ3BGbVkKKzJnU3I2SDJYSjVBWG9IcUJwNXh5dWltcFBmQ2E2d2UrNnVXcUNhaXFhZ0tzVEF4ckJiTHovc2xxVHFFVXZXZ0JxTHZpU3Fxdm5YcHEKK3JiYlpUcER0dDl6aVNzRzN1bktyYWFia2x0dXRXTXErVU95c3dhM0E3QS90ZmpHdkRwVzZlS20zdithNjY3aTM4dnZ2dVFMelc3Q20KK0FKODc4TC9XOW91dVIvWGk4TzZ6YXNvclJNUm8zSnREdm9hV09lMnY0SUljN0xVSUU0end0ZDFTbTdDNktaOE1Mc216WUJ6RXhJRlYKK3JJTEdKc2djQjg0M2NCenR2Z3FIV25Ld3VwNXM4cnJvVml2d3dFYzNESExSL2pLY2lzNUswSnhtdkRlelFMVWVQTnZnYzBUU0JpeDAKKzFPdUc2blM1Nm5vYjdzc3FwMTMyd3VJaTdjbldVMWo5bXMxY2hrRDNJRjNYOERWRVllOUF0TmkzN00yRjNjWGgvV2dGaGpQU053MS8KK0h4UzRDUzk3TVBqSC90czV1UWZpZXFiUXVDV1B6eEM1UVpQbmNQbllvWHorQnVlS1krQm02SjNBSHNQby81VE9tdXA1c0I1dnhMSnYKKzB2c0x0UHRqTzFXNEQwS3o2cjlua253THdmY3p2RmVhbTZJQW1uZGpuZmNzeTJ2dGJNM3FBVDJLa2hrVUx3ajRTUklUSWJ6TFdZeDkKK2o5ajgyTDNIdnlsaml2emVHMXRDOXFDemY0Mzc5Y0VQaWdBQ0NBWUFCMGpBQWhyd2dBaE1vQUlYeU1BR092Q0JFSXlnQVZNVkRCTG8KK0xuMVpXeDhTbWplUDUyMUNBRVlpWHlwQUdNTDFYSEJQRjhCZkpWVG91ZTFkclgrMUdnVUpaVEhERkp5d0JTeWNSQTVQd0VGNWVGQVQKK05ZUkZFRTl3d3pYUllvYzVjMkgxWUdnQlczMlFGa01rMXZrb1pyM0Z5UUtKSmVpaC9sSDg5NGtvdHNLTEZwd2k5ekI0dlN2cXp4cjgKK294SVhQUUhHVmJSUkJFVlVueGszcU1URXZTK0dvbmpqQkJDd3h3TWc0SStkMENNSTRwakJPVXFwanRBQ20vYzRJVWhBU3VDUGZQUWoKK0kxbEF5RExHQW9zazBPSlQxaGhJQzBSU2twRHNveWc5R1VwQWh0S1BwNlFBSkQ5cEIwRitvSkpXdk9RWnE1RkdNdUV4RkZIa1l5UjEKK09VcFdxcktQdkh5a0pJWFp5enk0MGdPd1hOVVJaMG1OV3M2Sms1UDBKQ2hYS1V4SFhzQ1h3UVRsS0llNWgyT2VTb3d2UktFRk1Pa0kKK2NrNElrYlJxb2d5dmFVMXVacE9kMVVSbE5YZXBTbnJpd1pzY1NPYXhsa25IUWVrbW5SVndJaEF4Z00wOXJ0S1hCclhuS2FsSnpGVGUKK0FaOGIwT2Y5L3ZoNVNIK0NCNkNMV2ljUEVBb0lpR3BBb2lRd3ArT1lPUTFuV2dxYVQwVEJRVGw2VFVONHRIN29FeWVVS0RvY2RONVIKK25YbnNBVXY5OEZKTzJpK2tOQldUVFprWVVJM1NrSkxnWEtKTWx4VFU1Z3hWamJmOEh4U1JTcU9ZNHJDcGNYcXFMWEdLeTZtdUFLUWoKK0VPa2l4UG9CVFY0RnBRT2RSVStqaWljcWtqR1dzQ0NyQjh3S2xrV205S2hmVGFvZDM2cE1EVmJVUjRUQzZBUUVtb20xc3BHcWpMT3EKK0VmMWFVNHVpRDZwY2xhcGFFV3NreGNwUmx2MEU3RDl2V3RTY1RqYXZWWFhyVWljZ1YwU1VsZ04wVll0ZDA0cFhGWUJWQktjMVJHeHQKK3BOVm5zdld3bjNXdFhqdTNXRU0yVnJNWDVXeEdQZHRhRys2MmRmdGtyRkFkL3V0V3lIYTJxN2sxYm1qSE9Gb2NZZlZpdFQzcGJUc1oKK1hSUzhOZ1N6SlVSNFhaZGRmYUcxc0Y3VjdYVERlVlhsT3BXNVkzVHVjS0ZiWE84ZXQ0cDk5ZTF5Z2Z2WXJUNVhzdlVsNG4zNW1sejkKK3ZwZS96Zlh2ZkFFY0M4UCt0NjNVYmErQnN3cmZGOHAzc0VadE1HVWh6TjdlWXZhdjdRdXNjREZNWEEyRE5yR2lsZkNIZnh2aXpSSjEKK3dWMU1yM1JSSEdFUHg1V2swakNwZWJjYnpRQkxjYjFLVmZHTk05dmk0TDZZeFBRMXNYcHAzT0hMRGhuRSt4UHhrU1ZBV0V3NHVNY3oKK3JteUtiZnlLOFpZUHdmRlZNSklaTE1RTk44cXloVnp4Zm92Y1g5dEdOc2JkRlRDUTkxcGRIcm1Yd21DMnNKaXBuT0V5bjFqTE5YWnkKK2wzRXMvZzRwWDVqUEpmYnprZ0hkNURRL21jVlJkdkdoRDFEbFMxejVybG5tY0pDNTdBb3YwNmk4SGVNeHBoV2Q2VE52V2RDZEpqUksKK0pMMW5TdmY1RlpkR05KTTNqZXBXZUpweG9QN1plYTBzWS92T21iZTFac1d0UzVqbkpVNjYwcGFJTlhyL3JHazZDM25RUkk2MGtZLzkKK2FsY28rN3NnR0xZZnROMm9YQ3R5MTVidXRaeG43V3hPMjFyVi9EQjBxNUZkQ1dYem10bW1EclNqb1ExbE5LcmJ6US9Hclk5TGdPMFAKK2NKc1AvMDR0WGNDZGJISC9tTnpBbm5lcW8yMXZWdU1ieHZwV2NxbFRoV1pMUG5yTjBtNnpkdDhjY1ZMN0d1SEluZWlkc1Z0aFk2KzcKKzJsODBNOFZQcmZCek01eVc5OTU0dnJtNzd6RCtPdVJBSGJtZ2lyMVgvbW9uR3RZcS8ybFlyN3R6TmlmNDRXT0djODFIMEc4UC9Ic1AKK0FmYzI0RmE3N0tYRGNjQjFmanJYME8wTUhZZWE0elNYK01jWlRldVdDNXZyemZDNnJrWE5XckdQbSt6bER2WXFvbDd5bnAvODU5WU8KK2VzWGhTbTlJTjN6YWQwK3l4OS9lN0lSYnZPOFkvN3ZHZHd4MkxBLys0SEEzUE44WFhtK1lPMXptRUEvNzQvbU45V2RUM3UrV0J6elMKK1pVMW1vTU43NWZJKy9PY1RIL3JGZjMzbWpqZjlvZ3VQODZIcm5GSlNseHpWMzIzMUVEUzlBMXJQQTkxNW5zaXBFN3pkQnVmOHpmRmIKK1lEVWYyT2hoSHIycjhaN3kwd3NkdGtUSGZkMkxyL3ZqVThMZDRiYiszdlByZkR4RFg4L1NaL2YzazI5emtETmY1Qk1tT2ZFRlMzcWwKKy9yc2Q4clIvZjg3algvU01IeDN6U2RkeHNqZHgxd2RlMlVjdnVVYzZ1eGQrdlRkSW5XZHVaL2R5elJSempBZDdvemFBWTVkL0JBWi8KKzVTZC81MmR5NllkeXJIQnREeWgzcWpCOEgyaDNJVWg5STZoM0xLZDZMbGQ1RTNoNUZaaDVzWmQzNHZlQ2t4ZURvRGVEb2dlQTlTZUEKK09EaDc4ZFpvTUJpQk1saFNGUGg2Tm5pQlEwaUE0OWQ4Ri9kOC9oZDlRRGg5Z29lQmhGZUVaWGVFYzRkMnpLQjIzOFoyVlhkL3l1ZCsKK0c3aC9IZGgvaXZkL05SaUFtcWVGK01lRmNXZDJYeWlCU2tpRFRBaUhOMWg5UkloNlJyaURTTmlEZWZpRGJ4aUVjZmlFR1VpSGtrZCsKK1UyaCtWWWgrVjZoK2t5QkJsbmlKbUppSm1yaUpsdWlDcVNlSS9uZVloRG0yaEd2WGVKemdDekVqUWt4WGduWjRnbUM0REdKb2ZHUzQKK0NjQUFDN1hZZnBGWGU5aDNld2k0ZmZTSGhmR2ppcXZ3QzJlWWkvcG5lL3luZmZNM1lvaVlPcWhvaTg5NGRjdVhoc2k0aHNxWWd0eW4KK2dONVhIdDFtaTkzb2U2em9oYTZJaDZPb2g2Vm9nVHBTWiszUkc3L0hBY0dIQnlnWWlTQTRpZENZaXNnVWpxQTRqcUpZYU9ZNGhxWTQKK05lcFlDY0k0Y3dXWWJRY1lLNzdJak1CWWozS3hGdTI0QWU5NEIvSFlobFo0aUF1WkhBRkpDUVA1a0JvUWtYWXdrYTNuaG52WWpBeUoKK2tXQlhrUDUya0QwZ2NIMnhqUUJwajNDSWtrNm5rczJTa0ZOMmtXaVJrWk9nSkJ5WkFSNVpCeURwZzY1M2prMVlDd001akFEUS9wTjgKK1FwTTd3SkloUjRsN29aT1NvSW95Q1h4TWlTOEpXRHNMYUpSUytRZ3dRajVWNlk1WHVURlpLVHhibVpPdklDUktFcFlRT1pZNDRKVHYKK0I1WHgwWldLZ0NXK0VJVWMrSWdlS0k4cVNJOVljWlNpVUN4cDBZaFNpSGhVU0pHU2FKRnlXVGgwV1FqdjBndUI2SWlHQ1ltSU9ZK0sKK0dSZUEyUW5IVXhTRW1aZVR1WmVWMlplWFdSZVpxUWwyQTVuSHVJdkoySXZMZUpPTHVRMmxlUW1jQTVsWjU1WTlVNWJPYzVaSEVadFgKK2NsKzhtWks4aUpDdDZYTzMwNWg2Y0VLL0taYkJ1Wks0MlVHNlNUekdlUWRGbEp3K2FadGUwNXcrOUp4L0daMTBRRWpVT1U3VzZUZlkKK3VVV3pLQ3pjR1FldzlKMmtGWjZRTTU2YlZKNStvWjZFL3FCUDZ2bVRkQkNVaFRpVS9vaU90eUdmZ1FCUzFHbWZjNENmNVdpSUk0bVQKKzB1R2ZmdkJhdnltZ2NrQ2cvR2lnUk1tSDFxR2dtNE9QNUdXVnkxbVR3eGw0UTJLaGVOQjBtZW1nTy9PS3loQ0wzUWVmekFHaWRkQ08KK1IwbWljQUNocXlhaCsxbVU1OEdpY3NDUndnaWpieUNqNmRhUHN2aVBNWUtqcTRPaFpkVVRQT29HUHRwMXBGaWpGR29tUk1vR1N2bU4KK2RyYWF3b21Odi9pYUNYcWVoMk9rNTFTbDFzaWFXS3FRV2xxaFhKb0ZVNHByN0NrNjdubFdLZ3FsWjJvRmFRb2xVWm8vNUJpaCtobWsKKy9Ja29JZlFIYzhwVUZLU1hiQmlTRlhtZ1pjb2VkUW9HZjdxZVdSS25nckNrYWRla2VtcWpmUG9reCttbGFraWxxUUNwL21Fb3FTa3EKK3BKV2FvU0dLcWRYWXA1dHFvaURocWRyNHBxRnFxaTFLcXFwcHFhYkFxYkNvcWxycGtxM2FxSzg2amJXNUFZbHFXcWlLRENpNnFxQ2EKK3E3UTFCNHRxWFIzd3E0VkFxeWRxcTJhSnE4YnFxbTZRckdDS1dvNEtsTUY2RE1ONnE2dzZyYklxcGJCcWdIcVRyUSs2cmRRRHBKKzYKK3ArQzZyT2JxQTliYU5jeTZiZWhhRE4wYXJkL2FycUthQnZHYVJKemdyS21xcnNUS3J2bzZWKythQS8zS1F3ZWJCZ0Fyck5DYW05SmEKK3NQdEtCZ21MQXZNcWtmVktEUGNLc2ZrcXNjZEtzZU5xa0N0d3NmZVpzY093c2M0WnNSNGJQZ3NiQXhVN3NpMGJCZzNMclErYnNoMjcKK3NyNGFzeTN3c3RvakNUT2JyalE2cVUrS3MvN3EvZ1U4eXp3NnV3VS9hNjgxbTUwcVM3UTUyd1ZINndJa3V3WkxxN0ZOUzU3RkNyVloKK2xMVEZxSUc5MnA0amRhY3ptcWZyU3FsY3E3Qm9HckxBZVoyS2NMVW5tN1h2dWJWcFc3UlZNTFZzQ3F4ays2TkJlN1pEVzdjcVVMVXUKK3k3WXoyWlJlK3dSd0t3d282N1EzQzdqbFdqZUVxNkhOSWw0bXE3aHk2NlowNjdnV2U3Z3dwWU9TaVpXUFdybkJzTGhhUzdDYUc3aWMKK2U1SjRtYW5NQ1FpSk83cVhXMWRQZTdwZnlnUjRPN2w5OExvRkVidXFOYnUwVzd0SmNMdXRDM1dpdTdzQzY2MlorN3N3Rzd5UnE1dzEKK3RYVjd5NlRIaTYvSnE3ekxhd1RDaTN2d1dMeS9RTHB6YTdyV1M3VTZtNzNlOFpIY2U1ZThPM0NORzc2Yk93VGsvb3RkSlJ1OWtUcTkKK0hGdTk3SXUwTTlPOGJma0VndnNxNTR1YTlHdXo5bnUvK0F1dit0dVJVdEMvU3FDNzNadStMYm0rQkl5NlBmQytoNlNrLzhzWGlXbW8KK0VReS9Pa0RCZE1RR0RJeStBY3k0QTd6QndIT2VIb3diYWhEQ0FOeTNBNHUySm55Yk41RENTcURBUWNEQ0dHeVpHaHpEVGxVRE5Od2EKK3FRdUIxOGlYMllpODRNdkRiaXNEUDV3c1FTeU9WMHJFV1lyRUZRd0RTendXVFZ5WWxFbW9HVHloSkNuRkNPZ3VCMXlkM0hERnBYcVkKK1dxekRYSXlnWGx5K25oaVpXTndGTm13RE9PeTltSHZFYTB5V09maUpuL3NGY1R3RGMrekFUM25IUUF5Rm52dkc5MERHemt1SUJXcTIKK0wveTNncXk5Y3dpSVhaaVBmSXpJWXJ5UC9tVXJrbWw4cUk4c25sL0xpTHBJcm1yUXgwSXNwbEJNcHAzOEYrTlJ4VWhCQlg4OHdxVUwKK3c2bk14cThVeGt2NUJxUzh4NE1xbEpyc3BGMDh5ODk3ajd6cWVXdVF5NnlieGJ4Y3FKc016RkVRbTZ4Y3lVN3d5aTVzeExMTXpGa1YKK1ViYWNRblpnekcycnlIamF5MEw3eTliOHdUNjF1bVhzSjZrcnpZeE16WTQ4emxOTWtPWWNxOXQ4dU9vTXpuNHJ6dTZzd3BuSGxnaTgKK0I5eDh5NWpNdCt0TXZYYWN6ejJNaVB4OHlmNGNzL1dzekw2c3hnYXR5amlaMEFEZEIvL01xQUV0dmROTTBOVWMwZVNNaG1IYkp1L2EKKzBGdjgwSnpzMFQ4d1BUMUIwZG84Q054TTBtaHMwaWg5QlRNQ1Bpd05ub1dReXpBdG1qczgwMVJRSlBCeC90TXpaU2RjdXRORnpOSHQKKzdOTkh3Q2d0UE1tNnpBdmNhZFJSck5TUSsybGYwWm5Ibk5QR0tkV29UTlZTTURHb2lkWG5UTlEwd05XdTZkVmZEVTY5SU5ieXZBZ1gKK2E5YkVpZFpPZ0Rpb0dkS093S3h3N2FGeWJidkhGWTJ0bUFpSm10Y3J1TmROZ0p5bDdOYlZKZGgrU2RoOFBjdzR5aXdHTUFHUmJRQ1UKK2pRR1JuUUtYdlFXUGZjRjBMTHNRek5nK1hJSWdpaXlWTFFHVWZkbVpUUUdwYlFLcjNjcFBiY3FoZWRUMVc5Q2dqYkRocUtCc2t0bVQKK1hkb0hrTnF0WGRxbkxkbTdmZHFWVGR5N1BjYUdQTVN4UGRXMXpiekQvR25IUE5tbTNkdVNYZDBYSU4zVFRkM2FqZG9Wd04xaUlKK0sKK1Back5qUVFTOVoxd0l0M0dQZDI4L20wQjJMM2QyZTNkeEozZFkyRGVuQTNJY1RuZXpnM1NVZHZOd3UzYjFkM2FxdDNiOFAzZTZtM2QKK0FIN0lJcHZSODd2UnM5M1IrRDNENDhxYmZiTGF1cDNlN0czYXZEM2cxRzNjN1cwR0VsN2ZzUHk5RHY3Z29mM2M3cHJJb2xDYTRkM1QKK0pPNitrUXVZc3NQaGdMMFdLNzdNTFU0RUQ3bVdRNDBLT2c2b0N0NnBJVjdISTM3amcydmk1MFErU1ZvR3hJalIzcHpKRGgzT0VFM2sKK3RtM2tSOTRSU2E3azBWampNaTNsK1V2bDVmcU1WMDRHRmFUbFVIN1NYTDZGa2x5SC9ocm1aK0FMWkg3UFVYN21KYTdmYTJJaWRuN24KK2VKN25lcjduSmdMaURDN0F0QzNuZWV6Rzl3dVhHMmptZ3I2S1hoN0JodjVEaVQ0RDFxcXZqYTZkL28vK2gwSzlzcFB1dTVVdWpYVE8KK3c1bisyWnNPam90T3dKOWV3cUdPaTJBcnhhVWU2S2V1NkowZXc2cys1SzN1NnNaSWpkWWI2MGs5NjJoKzZSNkw2L2lzNjR1WTVteXQKK3ZMNGU1OEFlN0x3dXNjV082TWUrWGNsZXNNdmU3RXFjelVRYjdkSk94ZFNPczlaKzdTNFE2ZTI2N2R6ZXhrNU42bTNxMmFZZTd1VmMKK3lJVmU3cjBMNnVnZWsvRk03T3l1dnVkdXJBVWdBZmQrQUFXdzd6K1E3eWZnNzk4MDZ1dHVrM0Y5dXZ5dTcvcWU3d0N2QXd0UEFnMy8KK1VkbU82ZlArd1BWdUpmNSs3L3V1OEJYdzhCbVA4UXJQN3gwL0FSMC84Z2wvOENLZjhmaHU4aHBmOGg0UDhpSGZ1WHBNN2dBdzh3QlEKKzh6Wi84emlmOHpyZjJlMWUvdkVXai9BSXYvTDRmZ0VYRC9RWFgvUkZML0pBdi9STHIvSkRiL1Fwci9RbUQvRUN6NzQ2Zi9WWWovVTgKK1QrK3NqaWdZei9KZm4vQVlzUEJDNy9Sa2ovSkovL1JpLy9Rci8vRkt6L0pVLytvbW5QVjBYL2RiVC9GZFh5Y28vL1pDYndFSEgvWi8KKy8vZHJiL1o5SC9odHovWXByL0ZwNyt6eC9ydDEvL2hYZi9lQjdMaGtQL1FrNy9lQ24vaHdyL2tqZi9sQnYvZDd2L21Lai9haG4rNHgKK1AvQ1FuL281ek5NMmp0SVBud0d2dndQZURxNnFYL3VTZjk5STNQa2VFUHRFNytKVkg3NjFyL3EzZitnK3pmdCs3L3R5djhIQm4vckQKKzcranZMdXJKeitqTC8vak5UK25QYi9xRWJ2WFRiL2YyZmVnUDh2M2dILzdpUC83a1gvN20vbi8rNkQvNzA3cjkzSzhiblBIKzhCLy8KKzhqLy85Ri8vOW4vLytFLy9vZXo0N0ovMVNtSEpFSERrcE5WZW5QWG0zWDh3RkVleU5NOFJDRmEyQlZBNGxtZTZ0bThnMTNlKzkvbFcKK1VEZ2tGZ092VzFLNVpEYWRUNmhTVlVSR3JWZHNkdm5qZG50R2NIaFkxWmJOWjNSYTNaa1N5V3Q0WEY3ejFydGl2TmkrNS9mOWY4QkEKK3dVSENRc05EeEVURkhhTzN1VWZJU0RhN3ZFckxTOHhNelUzT1RyMUF6MURSVWRKUzB5QkhTZFhWeUwzVFY5aFkyZG1qUmR0YjNOeEIKKzJpTlczOTg1WGVGaDRtTGpZK1JrNVdVZVlPZG42R2pwYWVwcTYydnNiTzF0N203dmIvQnc4WEh5Y3ZOejlIVDFkZloyOTNmNGVQbDUKKytucjdlL3g4L1gzK0czNy9mNEFCQlE0a1dORGdRWVFKRlM1azJORGhRNGdSSmRLTEFBQTcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvLmdpdGlnbm9yZSBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2VjMzJlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2Yi8uZ2l0aWdub3JlCkBAIC0wLDAgKzEgQEAKKyEqLnhtbApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2Yi9hdWRpby54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL2F1ZGlvLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTU2NzQzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2Yi9hdWRpby54bWwKQEAgLTAsMCArMSwxMzE0IEBACis8dGl0bGU+RFZCIEF1ZGlvIERldmljZTwvdGl0bGU+Cis8cGFyYT5UaGUgRFZCIGF1ZGlvIGRldmljZSBjb250cm9scyB0aGUgTVBFRzIgYXVkaW8gZGVjb2RlciBvZiB0aGUgRFZCIGhhcmR3YXJlLiBJdAorY2FuIGJlIGFjY2Vzc2VkIHRocm91Z2ggPGNvbnN0YW50Pi9kZXYvZHZiL2FkYXB0ZXI/L2F1ZGlvPzwvY29uc3RhbnQ+LiBEYXRhIHR5cGVzIGFuZCBhbmQKK2lvY3RsIGRlZmluaXRpb25zIGNhbiBiZSBhY2Nlc3NlZCBieSBpbmNsdWRpbmcgPGNvbnN0YW50PmxpbnV4L2R2Yi9hdWRpby5oPC9jb25zdGFudD4gaW4geW91cgorYXBwbGljYXRpb24uCis8L3BhcmE+Cis8cGFyYT5QbGVhc2Ugbm90ZSB0aGF0IHNvbWUgRFZCIGNhcmRzIGRvbiYjODIxNzt0IGhhdmUgdGhlaXIgb3duIE1QRUcgZGVjb2Rlciwgd2hpY2ggcmVzdWx0cyBpbgordGhlIG9taXNzaW9uIG9mIHRoZSBhdWRpbyBhbmQgdmlkZW8gZGV2aWNlLgorPC9wYXJhPgorPHBhcmE+CitUaGVzZSBpb2N0bHMgd2VyZSBhbHNvIHVzZWQgYnkgVjRMMiB0byBjb250cm9sIE1QRUcgZGVjb2RlcnMgaW1wbGVtZW50ZWQgaW4gVjRMMi4gVGhlIHVzZQorb2YgdGhlc2UgaW9jdGxzIGZvciB0aGF0IHB1cnBvc2UgaGFzIGJlZW4gbWFkZSBvYnNvbGV0ZSBhbmQgcHJvcGVyIFY0TDIgaW9jdGxzIG9yIGNvbnRyb2xzCitoYXZlIGJlZW4gY3JlYXRlZCB0byByZXBsYWNlIHRoYXQgZnVuY3Rpb25hbGl0eS48L3BhcmE+CisKKzxzZWN0aW9uIGlkPSJhdWRpb19kYXRhX3R5cGVzIj4KKzx0aXRsZT5BdWRpbyBEYXRhIFR5cGVzPC90aXRsZT4KKzxwYXJhPlRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhlIHN0cnVjdHVyZXMsIGRhdGEgdHlwZXMgYW5kIGRlZmluZXMgdXNlZCB3aGVuIHRhbGtpbmcgdG8gdGhlCithdWRpbyBkZXZpY2UuCis8L3BhcmE+CisKKzxzZWN0aW9uIGlkPSJhdWRpby1zdHJlYW0tc291cmNlLXQiPgorPHRpdGxlPmF1ZGlvX3N0cmVhbV9zb3VyY2VfdDwvdGl0bGU+Cis8cGFyYT5UaGUgYXVkaW8gc3RyZWFtIHNvdXJjZSBpcyBzZXQgdGhyb3VnaCB0aGUgQVVESU9fU0VMRUNUX1NPVVJDRSBjYWxsIGFuZCBjYW4gdGFrZQordGhlIGZvbGxvd2luZyB2YWx1ZXMsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHdlIGFyZSByZXBsYXlpbmcgZnJvbSBhbiBpbnRlcm5hbCAoZGVtdXgpIG9yCitleHRlcm5hbCAodXNlciB3cml0ZSkgc291cmNlLgorPC9wYXJhPgorPHByb2dyYW1saXN0aW5nPgordHlwZWRlZiBlbnVtIHsKKwlBVURJT19TT1VSQ0VfREVNVVgsCisJQVVESU9fU09VUkNFX01FTU9SWQorfSBhdWRpb19zdHJlYW1fc291cmNlX3Q7Cis8L3Byb2dyYW1saXN0aW5nPgorPHBhcmE+QVVESU9fU09VUkNFX0RFTVVYIHNlbGVjdHMgdGhlIGRlbXVsdGlwbGV4ZXIgKGZlZCBlaXRoZXIgYnkgdGhlIGZyb250ZW5kIG9yIHRoZQorRFZSIGRldmljZSkgYXMgdGhlIHNvdXJjZSBvZiB0aGUgdmlkZW8gc3RyZWFtLiBJZiBBVURJT19TT1VSQ0VfTUVNT1JZCitpcyBzZWxlY3RlZCB0aGUgc3RyZWFtIGNvbWVzIGZyb20gdGhlIGFwcGxpY2F0aW9uIHRocm91Z2ggdGhlIDxjb25zdGFudD53cml0ZSgpPC9jb25zdGFudD4gc3lzdGVtCitjYWxsLgorPC9wYXJhPgorCis8L3NlY3Rpb24+Cis8c2VjdGlvbiBpZD0iYXVkaW8tcGxheS1zdGF0ZS10Ij4KKzx0aXRsZT5hdWRpb19wbGF5X3N0YXRlX3Q8L3RpdGxlPgorPHBhcmE+VGhlIGZvbGxvd2luZyB2YWx1ZXMgY2FuIGJlIHJldHVybmVkIGJ5IHRoZSBBVURJT19HRVRfU1RBVFVTIGNhbGwgcmVwcmVzZW50aW5nIHRoZQorc3RhdGUgb2YgYXVkaW8gcGxheWJhY2suCis8L3BhcmE+Cis8cHJvZ3JhbWxpc3Rpbmc+Cit0eXBlZGVmIGVudW0geworCUFVRElPX1NUT1BQRUQsCisJQVVESU9fUExBWUlORywKKwlBVURJT19QQVVTRUQKK30gYXVkaW9fcGxheV9zdGF0ZV90OworPC9wcm9ncmFtbGlzdGluZz4KKworPC9zZWN0aW9uPgorPHNlY3Rpb24gaWQ9ImF1ZGlvLWNoYW5uZWwtc2VsZWN0LXQiPgorPHRpdGxlPmF1ZGlvX2NoYW5uZWxfc2VsZWN0X3Q8L3RpdGxlPgorPHBhcmE+VGhlIGF1ZGlvIGNoYW5uZWwgc2VsZWN0ZWQgdmlhIEFVRElPX0NIQU5ORUxfU0VMRUNUIGlzIGRldGVybWluZWQgYnkgdGhlCitmb2xsb3dpbmcgdmFsdWVzLgorPC9wYXJhPgorPHByb2dyYW1saXN0aW5nPgordHlwZWRlZiBlbnVtIHsKKwlBVURJT19TVEVSRU8sCisJQVVESU9fTU9OT19MRUZULAorCUFVRElPX01PTk9fUklHSFQsCisJQVVESU9fTU9OTywKKwlBVURJT19TVEVSRU9fU1dBUFBFRAorfSBhdWRpb19jaGFubmVsX3NlbGVjdF90OworPC9wcm9ncmFtbGlzdGluZz4KKworPC9zZWN0aW9uPgorPHNlY3Rpb24gaWQ9ImF1ZGlvLXN0YXR1cyI+Cis8dGl0bGU+c3RydWN0IGF1ZGlvX3N0YXR1czwvdGl0bGU+Cis8cGFyYT5UaGUgQVVESU9fR0VUX1NUQVRVUyBjYWxsIHJldHVybnMgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgaW5mb3JtaW5nIGFib3V0IHZhcmlvdXMKK3N0YXRlcyBvZiB0aGUgcGxheWJhY2sgb3BlcmF0aW9uLgorPC9wYXJhPgorPHByb2dyYW1saXN0aW5nPgordHlwZWRlZiBzdHJ1Y3QgYXVkaW9fc3RhdHVzIHsKKwlib29sZWFuIEFWX3N5bmNfc3RhdGU7CisJYm9vbGVhbiBtdXRlX3N0YXRlOworCWF1ZGlvX3BsYXlfc3RhdGVfdCBwbGF5X3N0YXRlOworCWF1ZGlvX3N0cmVhbV9zb3VyY2VfdCBzdHJlYW1fc291cmNlOworCWF1ZGlvX2NoYW5uZWxfc2VsZWN0X3QgY2hhbm5lbF9zZWxlY3Q7CisJYm9vbGVhbiBieXBhc3NfbW9kZTsKKwlhdWRpb19taXhlcl90IG1peGVyX3N0YXRlOworfSBhdWRpb19zdGF0dXNfdDsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisKKzwvc2VjdGlvbj4KKzxzZWN0aW9uIGlkPSJhdWRpby1taXhlciI+Cis8dGl0bGU+c3RydWN0IGF1ZGlvX21peGVyPC90aXRsZT4KKzxwYXJhPlRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIGlzIHVzZWQgYnkgdGhlIEFVRElPX1NFVF9NSVhFUiBjYWxsIHRvIHNldCB0aGUgYXVkaW8KK3ZvbHVtZS4KKzwvcGFyYT4KKzxwcm9ncmFtbGlzdGluZz4KK3R5cGVkZWYgc3RydWN0IGF1ZGlvX21peGVyIHsKKwl1bnNpZ25lZCBpbnQgdm9sdW1lX2xlZnQ7CisJdW5zaWduZWQgaW50IHZvbHVtZV9yaWdodDsKK30gYXVkaW9fbWl4ZXJfdDsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisKKzwvc2VjdGlvbj4KKzxzZWN0aW9uIGlkPSJhdWRpb19lbmNvZGluZ3MiPgorPHRpdGxlPmF1ZGlvIGVuY29kaW5nczwvdGl0bGU+Cis8cGFyYT5BIGNhbGwgdG8gQVVESU9fR0VUX0NBUEFCSUxJVElFUyByZXR1cm5zIGFuIHVuc2lnbmVkIGludGVnZXIgd2l0aCB0aGUgZm9sbG93aW5nCitiaXRzIHNldCBhY2NvcmRpbmcgdG8gdGhlIGhhcmR3YXJlcyBjYXBhYmlsaXRpZXMuCis8L3BhcmE+Cis8cHJvZ3JhbWxpc3Rpbmc+CisgI2RlZmluZSBBVURJT19DQVBfRFRTICAgIDEKKyAjZGVmaW5lIEFVRElPX0NBUF9MUENNICAgMgorICNkZWZpbmUgQVVESU9fQ0FQX01QMSAgICA0CisgI2RlZmluZSBBVURJT19DQVBfTVAyICAgIDgKKyAjZGVmaW5lIEFVRElPX0NBUF9NUDMgICAxNgorICNkZWZpbmUgQVVESU9fQ0FQX0FBQyAgIDMyCisgI2RlZmluZSBBVURJT19DQVBfT0dHICAgNjQKKyAjZGVmaW5lIEFVRElPX0NBUF9TRERTIDEyOAorICNkZWZpbmUgQVVESU9fQ0FQX0FDMyAgMjU2Cis8L3Byb2dyYW1saXN0aW5nPgorCis8L3NlY3Rpb24+Cis8c2VjdGlvbiBpZD0iYXVkaW8ta2FyYW9rZSI+Cis8dGl0bGU+c3RydWN0IGF1ZGlvX2thcmFva2U8L3RpdGxlPgorPHBhcmE+VGhlIGlvY3RsIEFVRElPX1NFVF9LQVJBT0tFIHVzZXMgdGhlIGZvbGxvd2luZyBmb3JtYXQ6Cis8L3BhcmE+Cis8cHJvZ3JhbWxpc3Rpbmc+Cit0eXBlZGVmCitzdHJ1Y3QgYXVkaW9fa2FyYW9rZSB7CisJaW50IHZvY2FsMTsKKwlpbnQgdm9jYWwyOworCWludCBtZWxvZHk7Cit9IGF1ZGlvX2thcmFva2VfdDsKKzwvcHJvZ3JhbWxpc3Rpbmc+Cis8cGFyYT5JZiBWb2NhbDEgb3IgVm9jYWwyIGFyZSBub24temVybywgdGhleSBnZXQgbWl4ZWQgaW50byBsZWZ0IGFuZCByaWdodCB0IGF0IDcwJSBlYWNoLiBJZiBib3RoLAorVm9jYWwxIGFuZCBWb2NhbDIgYXJlIG5vbi16ZXJvLCBWb2NhbDEgZ2V0cyBtaXhlZCBpbnRvIHRoZSBsZWZ0IGNoYW5uZWwgYW5kIFZvY2FsMiBpbnRvIHRoZQorcmlnaHQgY2hhbm5lbCBhdCAxMDAlIGVhY2guIEZmIE1lbG9keSBpcyBub24temVybywgdGhlIG1lbG9keSBjaGFubmVsIGdldHMgbWl4ZWQgaW50byBsZWZ0CithbmQgcmlnaHQuCis8L3BhcmE+CisKKzwvc2VjdGlvbj4KKzxzZWN0aW9uIGlkPSJhdWRpby1hdHRyaWJ1dGVzLXQiPgorPHRpdGxlPmF1ZGlvIGF0dHJpYnV0ZXM8L3RpdGxlPgorPHBhcmE+VGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIGNhbiBiZSBzZXQgYnkgYSBjYWxsIHRvIEFVRElPX1NFVF9BVFRSSUJVVEVTOgorPC9wYXJhPgorPHByb2dyYW1saXN0aW5nPgorIHR5cGVkZWYgdWludDE2X3QgYXVkaW9fYXR0cmlidXRlc190OworIC8mI3gyMkM2OyAgIGJpdHM6IGRlc2NyLiAmI3gyMkM2Oy8KKyAvJiN4MjJDNjsgICAxNS0xMyBhdWRpbyBjb2RpbmcgbW9kZSAoMD1hYzMsIDI9bXBlZzEsIDM9bXBlZzJleHQsIDQ9TFBDTSwgNj1EVFMsICYjeDIyQzY7LworIC8mI3gyMkM2OyAgIDEyICAgIG11bHRpY2hhbm5lbCBleHRlbnNpb24gJiN4MjJDNjsvCisgLyYjeDIyQzY7ICAgMTEtMTAgYXVkaW8gdHlwZSAoMD1ub3Qgc3BlYywgMT1sYW5ndWFnZSBpbmNsdWRlZCkgJiN4MjJDNjsvCisgLyYjeDIyQzY7ICAgIDktIDggYXVkaW8gYXBwbGljYXRpb24gbW9kZSAoMD1ub3Qgc3BlYywgMT1rYXJhb2tlLCAyPXN1cnJvdW5kKSAmI3gyMkM2Oy8KKyAvJiN4MjJDNjsgICAgNy0gNiBRdWFudGl6YXRpb24gLyBEUkMgKG1wZWcgYXVkaW86IDE9RFJDIGV4aXN0cykobHBjbTogMD0xNmJpdCwgICYjeDIyQzY7LworIC8mI3gyMkM2OyAgICA1LSA0IFNhbXBsZSBmcmVxdWVuY3kgZnMgKDA9NDhrSHosIDE9OTZrSHopICYjeDIyQzY7LworIC8mI3gyMkM2OyAgICAyLSAwIG51bWJlciBvZiBhdWRpbyBjaGFubmVscyAobisxIGNoYW5uZWxzKSAmI3gyMkM2Oy8KKzwvcHJvZ3JhbWxpc3Rpbmc+CisgPC9zZWN0aW9uPjwvc2VjdGlvbj4KKzxzZWN0aW9uIGlkPSJhdWRpb19mdW5jdGlvbl9jYWxscyI+Cis8dGl0bGU+QXVkaW8gRnVuY3Rpb24gQ2FsbHM8L3RpdGxlPgorCisKKzxzZWN0aW9uIGlkPSJhdWRpb19mb3BlbiI+Cis8dGl0bGU+b3BlbigpPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgc3lzdGVtIGNhbGwgb3BlbnMgYSBuYW1lZCBhdWRpbyBkZXZpY2UgKGUuZy4gL2Rldi9kdmIvYWRhcHRlcjAvYXVkaW8wKQorIGZvciBzdWJzZXF1ZW50IHVzZS4gV2hlbiBhbiBvcGVuKCkgY2FsbCBoYXMgc3VjY2VlZGVkLCB0aGUgZGV2aWNlIHdpbGwgYmUgcmVhZHkKKyBmb3IgdXNlLiBUaGUgc2lnbmlmaWNhbmNlIG9mIGJsb2NraW5nIG9yIG5vbi1ibG9ja2luZyBtb2RlIGlzIGRlc2NyaWJlZCBpbiB0aGUKKyBkb2N1bWVudGF0aW9uIGZvciBmdW5jdGlvbnMgd2hlcmUgdGhlcmUgaXMgYSBkaWZmZXJlbmNlLiBJdCBkb2VzIG5vdCBhZmZlY3QgdGhlCisgc2VtYW50aWNzIG9mIHRoZSBvcGVuKCkgY2FsbCBpdHNlbGYuIEEgZGV2aWNlIG9wZW5lZCBpbiBibG9ja2luZyBtb2RlIGNhbiBsYXRlcgorIGJlIHB1dCBpbnRvIG5vbi1ibG9ja2luZyBtb2RlIChhbmQgdmljZSB2ZXJzYSkgdXNpbmcgdGhlIEZfU0VURkwgY29tbWFuZAorIG9mIHRoZSBmY250bCBzeXN0ZW0gY2FsbC4gVGhpcyBpcyBhIHN0YW5kYXJkIHN5c3RlbSBjYWxsLCBkb2N1bWVudGVkIGluIHRoZSBMaW51eAorIG1hbnVhbCBwYWdlIGZvciBmY250bC4gT25seSBvbmUgdXNlciBjYW4gb3BlbiB0aGUgQXVkaW8gRGV2aWNlIGluIE9fUkRXUgorIG1vZGUuIEFsbCBvdGhlciBhdHRlbXB0cyB0byBvcGVuIHRoZSBkZXZpY2UgaW4gdGhpcyBtb2RlIHdpbGwgZmFpbCwgYW5kIGFuIGVycm9yCisgY29kZSB3aWxsIGJlIHJldHVybmVkLiBJZiB0aGUgQXVkaW8gRGV2aWNlIGlzIG9wZW5lZCBpbiBPX1JET05MWSBtb2RlLCB0aGUKKyBvbmx5IGlvY3RsIGNhbGwgdGhhdCBjYW4gYmUgdXNlZCBpcyBBVURJT19HRVRfU1RBVFVTLiBBbGwgb3RoZXIgY2FsbCB3aWxsCisgcmV0dXJuIHdpdGggYW4gZXJyb3IgY29kZS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IG9wZW4oY29uc3QgY2hhciAmI3gyMkM2O2RldmljZU5hbWUsIGludCBmbGFncyk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+Y29uc3QgY2hhcgorICpkZXZpY2VOYW1lPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5OYW1lIG9mIHNwZWNpZmljIGF1ZGlvIGRldmljZS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZsYWdzPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5BIGJpdC13aXNlIE9SIG9mIHRoZSBmb2xsb3dpbmcgZmxhZ3M6PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+T19SRE9OTFkgcmVhZC1vbmx5IGFjY2VzczwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPk9fUkRXUiByZWFkL3dyaXRlIGFjY2VzczwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPk9fTk9OQkxPQ0sgb3BlbiBpbiBub24tYmxvY2tpbmcgbW9kZTwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPihibG9ja2luZyBtb2RlIGlzIHRoZSBkZWZhdWx0KTwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5SRVRVUk4gVkFMVUU8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVOT0RFVjwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RGV2aWNlIGRyaXZlciBub3QgbG9hZGVkL2F2YWlsYWJsZS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RUJVU1k8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkRldmljZSBvciByZXNvdXJjZSBidXN5LjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FSU5WQUw8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkludmFsaWQgYXJndW1lbnQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKworPC9zZWN0aW9uPgorPHNlY3Rpb24gaWQ9ImF1ZGlvX2ZjbG9zZSI+Cis8dGl0bGU+Y2xvc2UoKTwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIHN5c3RlbSBjYWxsIGNsb3NlcyBhIHByZXZpb3VzbHkgb3BlbmVkIGF1ZGlvIGRldmljZS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGNsb3NlKGludCBmZCk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UkVUVVJOIFZBTFVFPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FQkFERjwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+ZmQgaXMgbm90IGEgdmFsaWQgb3BlbiBmaWxlIGRlc2NyaXB0b3IuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKworPC9zZWN0aW9uPgorPHNlY3Rpb24gaWQ9ImF1ZGlvX2Z3cml0ZSI+Cis8dGl0bGU+d3JpdGUoKTwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIHN5c3RlbSBjYWxsIGNhbiBvbmx5IGJlIHVzZWQgaWYgQVVESU9fU09VUkNFX01FTU9SWSBpcyBzZWxlY3RlZAorIGluIHRoZSBpb2N0bCBjYWxsIEFVRElPX1NFTEVDVF9TT1VSQ0UuIFRoZSBkYXRhIHByb3ZpZGVkIHNoYWxsIGJlIGluCisgUEVTIGZvcm1hdC4gSWYgT19OT05CTE9DSyBpcyBub3Qgc3BlY2lmaWVkIHRoZSBmdW5jdGlvbiB3aWxsIGJsb2NrIHVudGlsCisgYnVmZmVyIHNwYWNlIGlzIGF2YWlsYWJsZS4gVGhlIGFtb3VudCBvZiBkYXRhIHRvIGJlIHRyYW5zZmVycmVkIGlzIGltcGxpZWQgYnkKKyBjb3VudC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+c2l6ZV90IHdyaXRlKGludCBmZCwgY29uc3Qgdm9pZCAmI3gyMkM2O2J1Ziwgc2l6ZV90IGNvdW50KTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT52b2lkICpidWY8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBQRVMgZGF0YS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+c2l6ZV90IGNvdW50PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5TaXplIG9mIGJ1Zi48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UkVUVVJOIFZBTFVFPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FUEVSTTwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+TW9kZSBBVURJT19TT1VSQ0VfTUVNT1JZIG5vdCBzZWxlY3RlZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RU5PTUVNPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5BdHRlbXB0ZWQgdG8gd3JpdGUgbW9yZSBkYXRhIHRoYW4gdGhlIGludGVybmFsIGJ1ZmZlciBjYW4KKyBob2xkLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FQkFERjwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+ZmQgaXMgbm90IGEgdmFsaWQgb3BlbiBmaWxlIGRlc2NyaXB0b3IuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKworPC9zZWN0aW9uPjxzZWN0aW9uIGlkPSJBVURJT19TVE9QIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPkFVRElPX1NUT1A8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBjYWxsIGFza3MgdGhlIEF1ZGlvIERldmljZSB0byBzdG9wIHBsYXlpbmcgdGhlIGN1cnJlbnQgc3RyZWFtLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoaW50IGZkLCBpbnQgcmVxdWVzdCA9IEFVRElPX1NUT1ApOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgQVVESU9fU1RPUCBmb3IgdGhpcyBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CismcmV0dXJuLXZhbHVlLWR2YjsKKworPC9zZWN0aW9uPjxzZWN0aW9uIGlkPSJBVURJT19QTEFZIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPkFVRElPX1BMQVk8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBjYWxsIGFza3MgdGhlIEF1ZGlvIERldmljZSB0byBzdGFydCBwbGF5aW5nIGFuIGF1ZGlvIHN0cmVhbSBmcm9tIHRoZQorIHNlbGVjdGVkIHNvdXJjZS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGlvY3RsKGludCBmZCwgaW50IHJlcXVlc3QgPSBBVURJT19QTEFZKTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIEFVRElPX1BMQVkgZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7CisKKzwvc2VjdGlvbj48c2VjdGlvbiBpZD0iQVVESU9fUEFVU0UiCityb2xlPSJzdWJzZWN0aW9uIj48dGl0bGU+QVVESU9fUEFVU0U8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBjYWxsIHN1c3BlbmRzIHRoZSBhdWRpbyBzdHJlYW0gYmVpbmcgcGxheWVkLiBEZWNvZGluZyBhbmQgcGxheWluZworIGFyZSBwYXVzZWQuIEl0IGlzIHRoZW4gcG9zc2libGUgdG8gcmVzdGFydCBhZ2FpbiBkZWNvZGluZyBhbmQgcGxheWluZyBwcm9jZXNzIG9mCisgdGhlIGF1ZGlvIHN0cmVhbSB1c2luZyBBVURJT19DT05USU5VRSBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5JZiBBVURJT19TT1VSQ0VfTUVNT1JZIGlzIHNlbGVjdGVkIGluIHRoZSBpb2N0bCBjYWxsCisgQVVESU9fU0VMRUNUX1NPVVJDRSwgdGhlIERWQi1zdWJzeXN0ZW0gd2lsbCBub3QgZGVjb2RlIChjb25zdW1lKQorIGFueSBtb3JlIGRhdGEgdW50aWwgdGhlIGlvY3RsIGNhbGwgQVVESU9fQ09OVElOVUUgb3IgQVVESU9fUExBWSBpcworIHBlcmZvcm1lZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGlvY3RsKGludCBmZCwgaW50IHJlcXVlc3QgPSBBVURJT19QQVVTRSk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyBBVURJT19QQVVTRSBmb3IgdGhpcyBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CismcmV0dXJuLXZhbHVlLWR2YjsKKworPC9zZWN0aW9uPjxzZWN0aW9uIGlkPSJBVURJT19DT05USU5VRSIKK3JvbGU9InN1YnNlY3Rpb24iPjx0aXRsZT5BVURJT19DT05USU5VRTwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIHJlc3RhcnRzIHRoZSBkZWNvZGluZyBhbmQgcGxheWluZyBwcm9jZXNzIHByZXZpb3VzbHkgcGF1c2VkCit3aXRoIEFVRElPX1BBVVNFIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkl0IG9ubHkgd29ya3MgaWYgdGhlIHN0cmVhbSB3ZXJlIHByZXZpb3VzbHkgc3RvcHBlZCB3aXRoIEFVRElPX1BBVVNFPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bChpbnQgZmQsIGludCByZXF1ZXN0ID0gQVVESU9fQ09OVElOVUUpOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgQVVESU9fQ09OVElOVUUgZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7CisKKzwvc2VjdGlvbj48c2VjdGlvbiBpZD0iQVVESU9fU0VMRUNUX1NPVVJDRSIKK3JvbGU9InN1YnNlY3Rpb24iPjx0aXRsZT5BVURJT19TRUxFQ1RfU09VUkNFPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgY2FsbCBpbmZvcm1zIHRoZSBhdWRpbyBkZXZpY2Ugd2hpY2ggc291cmNlIHNoYWxsIGJlIHVzZWQKKyBmb3IgdGhlIGlucHV0IGRhdGEuIFRoZSBwb3NzaWJsZSBzb3VyY2VzIGFyZSBkZW11eCBvciBtZW1vcnkuIElmCisgQVVESU9fU09VUkNFX01FTU9SWSBpcyBzZWxlY3RlZCwgdGhlIGRhdGEgaXMgZmVkIHRvIHRoZSBBdWRpbyBEZXZpY2UKKyB0aHJvdWdoIHRoZSB3cml0ZSBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoaW50IGZkLCBpbnQgcmVxdWVzdCA9IEFVRElPX1NFTEVDVF9TT1VSQ0UsCisgYXVkaW9fc3RyZWFtX3NvdXJjZV90IHNvdXJjZSk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyBBVURJT19TRUxFQ1RfU09VUkNFIGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmF1ZGlvX3N0cmVhbV9zb3VyY2VfdAorIHNvdXJjZTwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+SW5kaWNhdGVzIHRoZSBzb3VyY2UgdGhhdCBzaGFsbCBiZSB1c2VkIGZvciB0aGUgQXVkaW8KKyBzdHJlYW0uPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworCis8L3NlY3Rpb24+PHNlY3Rpb24gaWQ9IkFVRElPX1NFVF9NVVRFIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPkFVRElPX1NFVF9NVVRFPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8cGFyYT5UaGlzIGlvY3RsIGlzIGZvciBEVkIgZGV2aWNlcyBvbmx5LiBUbyBjb250cm9sIGEgVjRMMiBkZWNvZGVyIHVzZSB0aGUgVjRMMgorJlZJRElPQy1ERUNPREVSLUNNRDsgd2l0aCB0aGUgPGNvbnN0YW50PlY0TDJfREVDX0NNRF9TVEFSVF9NVVRFX0FVRElPPC9jb25zdGFudD4gZmxhZyBpbnN0ZWFkLjwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBjYWxsIGFza3MgdGhlIGF1ZGlvIGRldmljZSB0byBtdXRlIHRoZSBzdHJlYW0gdGhhdCBpcyBjdXJyZW50bHkgYmVpbmcKKyBwbGF5ZWQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bChpbnQgZmQsIGludCByZXF1ZXN0ID0gQVVESU9fU0VUX01VVEUsCisgYm9vbGVhbiBzdGF0ZSk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyBBVURJT19TRVRfTVVURSBmb3IgdGhpcyBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5ib29sZWFuIHN0YXRlPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5JbmRpY2F0ZXMgaWYgYXVkaW8gZGV2aWNlIHNoYWxsIG11dGUgb3Igbm90LjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRSVUUgQXVkaW8gTXV0ZTwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZBTFNFIEF1ZGlvIFVuLW11dGU8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7CisKKzwvc2VjdGlvbj48c2VjdGlvbiBpZD0iQVVESU9fU0VUX0FWX1NZTkMiCityb2xlPSJzdWJzZWN0aW9uIj48dGl0bGU+QVVESU9fU0VUX0FWX1NZTkM8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBjYWxsIGFza3MgdGhlIEF1ZGlvIERldmljZSB0byB0dXJuIE9OIG9yIE9GRiBBL1Ygc3luY2hyb25pemF0aW9uLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoaW50IGZkLCBpbnQgcmVxdWVzdCA9IEFVRElPX1NFVF9BVl9TWU5DLAorIGJvb2xlYW4gc3RhdGUpOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgQVVESU9fQVZfU1lOQyBmb3IgdGhpcyBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5ib29sZWFuIHN0YXRlPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UZWxscyB0aGUgRFZCIHN1YnN5c3RlbSBpZiBBL1Ygc3luY2hyb25pemF0aW9uIHNoYWxsIGJlCisgT04gb3IgT0ZGLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRSVUUgQVYtc3luYyBPTjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZBTFNFIEFWLXN5bmMgT0ZGPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworCis8L3NlY3Rpb24+PHNlY3Rpb24gaWQ9IkFVRElPX1NFVF9CWVBBU1NfTU9ERSIKK3JvbGU9InN1YnNlY3Rpb24iPjx0aXRsZT5BVURJT19TRVRfQllQQVNTX01PREU8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBjYWxsIGFza3MgdGhlIEF1ZGlvIERldmljZSB0byBieXBhc3MgdGhlIEF1ZGlvIGRlY29kZXIgYW5kIGZvcndhcmQKKyB0aGUgc3RyZWFtIHdpdGhvdXQgZGVjb2RpbmcuIFRoaXMgbW9kZSBzaGFsbCBiZSB1c2VkIGlmIHN0cmVhbXMgdGhhdCBjYW4mIzgyMTc7dCBiZQorIGhhbmRsZWQgYnkgdGhlIERWQiBzeXN0ZW0gc2hhbGwgYmUgZGVjb2RlZC4gRG9sYnkgRGlnaXRhbFRNIHN0cmVhbXMgYXJlCisgYXV0b21hdGljYWxseSBmb3J3YXJkZWQgYnkgdGhlIERWQiBzdWJzeXN0ZW0gaWYgdGhlIGhhcmR3YXJlIGNhbiBoYW5kbGUgaXQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bChpbnQgZmQsIGludCByZXF1ZXN0ID0KKyBBVURJT19TRVRfQllQQVNTX01PREUsIGJvb2xlYW4gbW9kZSk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyBBVURJT19TRVRfQllQQVNTX01PREUgZm9yIHRoaXMKKyBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5ib29sZWFuIG1vZGU8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIGRlY29kaW5nIG9mIHRoZSBjdXJyZW50IEF1ZGlvCisgc3RyZWFtIGluIHRoZSBEVkIgc3Vic3lzdGVtLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRSVUUgQnlwYXNzIGlzIGRpc2FibGVkPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RkFMU0UgQnlwYXNzIGlzIGVuYWJsZWQ8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7CisKKzwvc2VjdGlvbj48c2VjdGlvbiBpZD0iQVVESU9fQ0hBTk5FTF9TRUxFQ1QiCityb2xlPSJzdWJzZWN0aW9uIj48dGl0bGU+QVVESU9fQ0hBTk5FTF9TRUxFQ1Q8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxwYXJhPlRoaXMgaW9jdGwgaXMgZm9yIERWQiBkZXZpY2VzIG9ubHkuIFRvIGNvbnRyb2wgYSBWNEwyIGRlY29kZXIgdXNlIHRoZSBWNEwyCis8Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19BVURJT19ERUNfUExBWUJBQ0s8L2NvbnN0YW50PiBjb250cm9sIGluc3RlYWQuPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIGNhbGwgYXNrcyB0aGUgQXVkaW8gRGV2aWNlIHRvIHNlbGVjdCB0aGUgcmVxdWVzdGVkIGNoYW5uZWwgaWYgcG9zc2libGUuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bChpbnQgZmQsIGludCByZXF1ZXN0ID0KKyBBVURJT19DSEFOTkVMX1NFTEVDVCwgYXVkaW9fY2hhbm5lbF9zZWxlY3RfdCk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyBBVURJT19DSEFOTkVMX1NFTEVDVCBmb3IgdGhpcworIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmF1ZGlvX2NoYW5uZWxfc2VsZWN0X3QKKyBjaDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+U2VsZWN0IHRoZSBvdXRwdXQgZm9ybWF0IG9mIHRoZSBhdWRpbyAobW9ubyBsZWZ0L3JpZ2h0LAorIHN0ZXJlbykuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworCis8L3NlY3Rpb24+PHNlY3Rpb24gaWQ9IkFVRElPX0JJTElOR1VBTF9DSEFOTkVMX1NFTEVDVCIKK3JvbGU9InN1YnNlY3Rpb24iPjx0aXRsZT5BVURJT19CSUxJTkdVQUxfQ0hBTk5FTF9TRUxFQ1Q8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxwYXJhPlRoaXMgaW9jdGwgaXMgb2Jzb2xldGUuIERvIG5vdCB1c2UgaW4gbmV3IGRyaXZlcnMuIEl0IGhhcyBiZWVuIHJlcGxhY2VkIGJ5Cit0aGUgVjRMMiA8Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19BVURJT19ERUNfTVVMVElMSU5HVUFMX1BMQVlCQUNLPC9jb25zdGFudD4gY29udHJvbAorZm9yIE1QRUcgZGVjb2RlcnMgY29udHJvbGxlZCB0aHJvdWdoIFY0TDIuPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIGNhbGwgYXNrcyB0aGUgQXVkaW8gRGV2aWNlIHRvIHNlbGVjdCB0aGUgcmVxdWVzdGVkIGNoYW5uZWwgZm9yIGJpbGluZ3VhbCBzdHJlYW1zIGlmIHBvc3NpYmxlLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoaW50IGZkLCBpbnQgcmVxdWVzdCA9CisgQVVESU9fQklMSU5HVUFMX0NIQU5ORUxfU0VMRUNULCBhdWRpb19jaGFubmVsX3NlbGVjdF90KTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIEFVRElPX0JJTElOR1VBTF9DSEFOTkVMX1NFTEVDVCBmb3IgdGhpcworIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmF1ZGlvX2NoYW5uZWxfc2VsZWN0X3QKK2NoPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5TZWxlY3QgdGhlIG91dHB1dCBmb3JtYXQgb2YgdGhlIGF1ZGlvIChtb25vIGxlZnQvcmlnaHQsCisgc3RlcmVvKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PgorPC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CismcmV0dXJuLXZhbHVlLWR2YjsKKworPC9zZWN0aW9uPjxzZWN0aW9uIGlkPSJBVURJT19HRVRfUFRTIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPkFVRElPX0dFVF9QVFM8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxwYXJhPlRoaXMgaW9jdGwgaXMgb2Jzb2xldGUuIERvIG5vdCB1c2UgaW4gbmV3IGRyaXZlcnMuIElmIHlvdSBuZWVkIHRoaXMgZnVuY3Rpb25hbGl0eSwKK3RoZW4gcGxlYXNlIGNvbnRhY3QgdGhlIGxpbnV4LW1lZGlhIG1haWxpbmcgbGlzdCAoJnY0bC1tbDspLjwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBjYWxsIGFza3MgdGhlIEF1ZGlvIERldmljZSB0byByZXR1cm4gdGhlIGN1cnJlbnQgUFRTIHRpbWVzdGFtcC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGlvY3RsKGludCBmZCwgaW50IHJlcXVlc3QgPQorIEFVRElPX0dFVF9QVFMsIF9fdTY0ICpwdHMpOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgQVVESU9fR0VUX1BUUyBmb3IgdGhpcworIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPl9fdTY0ICpwdHMKKzwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+UmV0dXJucyB0aGUgMzMtYml0IHRpbWVzdGFtcCBhcyBkZWZpbmVkIGluIElUVSBULVJFQy1ILjIyMi4wIC8gSVNPL0lFQyAxMzgxOC0xLgorPC9wYXJhPgorPHBhcmE+CitUaGUgUFRTIHNob3VsZCBiZWxvbmcgdG8gdGhlIGN1cnJlbnRseSBwbGF5ZWQKK2ZyYW1lIGlmIHBvc3NpYmxlLCBidXQgbWF5IGFsc28gYmUgYSB2YWx1ZSBjbG9zZSB0byBpdAorbGlrZSB0aGUgUFRTIG9mIHRoZSBsYXN0IGRlY29kZWQgZnJhbWUgb3IgdGhlIGxhc3QgUFRTCitleHRyYWN0ZWQgYnkgdGhlIFBFUyBwYXJzZXIuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworCis8L3NlY3Rpb24+PHNlY3Rpb24gaWQ9IkFVRElPX0dFVF9TVEFUVVMiCityb2xlPSJzdWJzZWN0aW9uIj48dGl0bGU+QVVESU9fR0VUX1NUQVRVUzwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIGNhbGwgYXNrcyB0aGUgQXVkaW8gRGV2aWNlIHRvIHJldHVybiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgQXVkaW8KKyBEZXZpY2UuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bChpbnQgZmQsIGludCByZXF1ZXN0ID0gQVVESU9fR0VUX1NUQVRVUywKKyBzdHJ1Y3QgYXVkaW9fc3RhdHVzICYjeDIyQzY7c3RhdHVzKTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIEFVRElPX0dFVF9TVEFUVVMgZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+c3RydWN0IGF1ZGlvX3N0YXR1cworICpzdGF0dXM8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlJldHVybnMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgQXVkaW8gRGV2aWNlLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CismcmV0dXJuLXZhbHVlLWR2YjsKKworPC9zZWN0aW9uPjxzZWN0aW9uIGlkPSJBVURJT19HRVRfQ0FQQUJJTElUSUVTIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPkFVRElPX0dFVF9DQVBBQklMSVRJRVM8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBjYWxsIGFza3MgdGhlIEF1ZGlvIERldmljZSB0byB0ZWxsIHVzIGFib3V0IHRoZSBkZWNvZGluZyBjYXBhYmlsaXRpZXMKKyBvZiB0aGUgYXVkaW8gaGFyZHdhcmUuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bChpbnQgZmQsIGludCByZXF1ZXN0ID0KKyBBVURJT19HRVRfQ0FQQUJJTElUSUVTLCB1bnNpZ25lZCBpbnQgJiN4MjJDNjtjYXApOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgQVVESU9fR0VUX0NBUEFCSUxJVElFUyBmb3IgdGhpcworIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPnVuc2lnbmVkIGludCAqY2FwPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5SZXR1cm5zIGEgYml0IGFycmF5IG9mIHN1cHBvcnRlZCBzb3VuZCBmb3JtYXRzLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CismcmV0dXJuLXZhbHVlLWR2YjsKKworPC9zZWN0aW9uPjxzZWN0aW9uIGlkPSJBVURJT19DTEVBUl9CVUZGRVIiCityb2xlPSJzdWJzZWN0aW9uIj48dGl0bGU+QVVESU9fQ0xFQVJfQlVGRkVSPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgY2FsbCBhc2tzIHRoZSBBdWRpbyBEZXZpY2UgdG8gY2xlYXIgYWxsIHNvZnR3YXJlIGFuZCBoYXJkd2FyZSBidWZmZXJzCisgb2YgdGhlIGF1ZGlvIGRlY29kZXIgZGV2aWNlLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoaW50IGZkLCBpbnQgcmVxdWVzdCA9IEFVRElPX0NMRUFSX0JVRkZFUik7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyBBVURJT19DTEVBUl9CVUZGRVIgZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7CisKKzwvc2VjdGlvbj48c2VjdGlvbiBpZD0iQVVESU9fU0VUX0lEIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPkFVRElPX1NFVF9JRDwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIHNlbGVjdHMgd2hpY2ggc3ViLXN0cmVhbSBpcyB0byBiZSBkZWNvZGVkIGlmIGEgcHJvZ3JhbSBvciBzeXN0ZW0KKyBzdHJlYW0gaXMgc2VudCB0byB0aGUgdmlkZW8gZGV2aWNlLiBJZiBubyBhdWRpbyBzdHJlYW0gdHlwZSBpcyBzZXQgdGhlIGlkIGhhcyB0byBiZQorIGluIFsweEMwLDB4REZdIGZvciBNUEVHIHNvdW5kLCBpbiBbMHg4MCwweDg3XSBmb3IgQUMzIGFuZCBpbiBbMHhBMCwweEE3XQorIGZvciBMUENNLiBNb3JlIHNwZWNpZmljYXRpb25zIG1heSBmb2xsb3cgZm9yIG90aGVyIHN0cmVhbSB0eXBlcy4gSWYgdGhlIHN0cmVhbQorIHR5cGUgaXMgc2V0IHRoZSBpZCBqdXN0IHNwZWNpZmllcyB0aGUgc3Vic3RyZWFtIGlkIG9mIHRoZSBhdWRpbyBzdHJlYW0gYW5kIG9ubHkKKyB0aGUgZmlyc3QgNSBiaXRzIGFyZSByZWNvZ25pemVkLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoaW50IGZkLCBpbnQgcmVxdWVzdCA9IEFVRElPX1NFVF9JRCwgaW50CisgaWQpOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgQVVESU9fU0VUX0lEIGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+YXVkaW8gc3ViLXN0cmVhbSBpZDwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CismcmV0dXJuLXZhbHVlLWR2YjsKKworPC9zZWN0aW9uPjxzZWN0aW9uIGlkPSJBVURJT19TRVRfTUlYRVIiCityb2xlPSJzdWJzZWN0aW9uIj48dGl0bGU+QVVESU9fU0VUX01JWEVSPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgbGV0cyB5b3UgYWRqdXN0IHRoZSBtaXhlciBzZXR0aW5ncyBvZiB0aGUgYXVkaW8gZGVjb2Rlci48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGlvY3RsKGludCBmZCwgaW50IHJlcXVlc3QgPSBBVURJT19TRVRfTUlYRVIsCisgYXVkaW9fbWl4ZXJfdCAmI3gyMkM2O21peCk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyBBVURJT19TRVRfSUQgZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+YXVkaW9fbWl4ZXJfdCAqbWl4PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5taXhlciBzZXR0aW5ncy48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7CisKKzwvc2VjdGlvbj48c2VjdGlvbiBpZD0iQVVESU9fU0VUX1NUUkVBTVRZUEUiCityb2xlPSJzdWJzZWN0aW9uIj48dGl0bGU+QVVESU9fU0VUX1NUUkVBTVRZUEU8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCB0ZWxscyB0aGUgZHJpdmVyIHdoaWNoIGtpbmQgb2YgYXVkaW8gc3RyZWFtIHRvIGV4cGVjdC4gVGhpcyBpcyB1c2VmdWwKKyBpZiB0aGUgc3RyZWFtIG9mZmVycyBzZXZlcmFsIGF1ZGlvIHN1Yi1zdHJlYW1zIGxpa2UgTFBDTSBhbmQgQUMzLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoZmQsIGludCByZXF1ZXN0ID0gQVVESU9fU0VUX1NUUkVBTVRZUEUsCisgaW50IHR5cGUpOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgQVVESU9fU0VUX1NUUkVBTVRZUEUgZm9yIHRoaXMKKyBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgdHlwZTwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+c3RyZWFtIHR5cGU8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVJTlZBTDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+dHlwZSBpcyBub3QgYSB2YWxpZCBvciBzdXBwb3J0ZWQgc3RyZWFtIHR5cGUuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKworPC9zZWN0aW9uPjxzZWN0aW9uIGlkPSJBVURJT19TRVRfRVhUX0lEIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPkFVRElPX1NFVF9FWFRfSUQ8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIGV4dGVuc2lvbiBpZCBmb3IgTVBFRyBzdHJlYW1zIGluIERWRAorIHBsYXliYWNrLiBPbmx5IHRoZSBmaXJzdCAzIGJpdHMgYXJlIHJlY29nbml6ZWQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bChmZCwgaW50IHJlcXVlc3QgPSBBVURJT19TRVRfRVhUX0lELCBpbnQKKyBpZCk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyBBVURJT19TRVRfRVhUX0lEIGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+YXVkaW8gc3ViX3N0cmVhbV9pZDwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CismcmV0dXJuLXZhbHVlLWR2YjsKKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RUlOVkFMPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pZCBpcyBub3QgYSB2YWxpZCBpZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorCis8L3NlY3Rpb24+PHNlY3Rpb24gaWQ9IkFVRElPX1NFVF9BVFRSSUJVVEVTIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPkFVRElPX1NFVF9BVFRSSUJVVEVTPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgaXMgaW50ZW5kZWQgZm9yIERWRCBwbGF5YmFjayBhbmQgYWxsb3dzIHlvdSB0byBzZXQgY2VydGFpbgorIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhdWRpbyBzdHJlYW0uPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bChmZCwgaW50IHJlcXVlc3QgPSBBVURJT19TRVRfQVRUUklCVVRFUywKKyBhdWRpb19hdHRyaWJ1dGVzX3QgYXR0ciApOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgQVVESU9fU0VUX0FUVFJJQlVURVMgZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+YXVkaW9fYXR0cmlidXRlc190CisgYXR0cjwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+YXVkaW8gYXR0cmlidXRlcyBhY2NvcmRpbmcgdG8gc2VjdGlvbiA/PzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CismcmV0dXJuLXZhbHVlLWR2YjsKKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RUlOVkFMPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5hdHRyIGlzIG5vdCBhIHZhbGlkIG9yIHN1cHBvcnRlZCBhdHRyaWJ1dGUgc2V0dGluZy48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorCis8L3NlY3Rpb24+PHNlY3Rpb24gaWQ9IkFVRElPX1NFVF9LQVJBT0tFIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPkFVRElPX1NFVF9LQVJBT0tFPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgYWxsb3dzIG9uZSB0byBzZXQgdGhlIG1peGVyIHNldHRpbmdzIGZvciBhIGthcmFva2UgRFZELjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoZmQsIGludCByZXF1ZXN0ID0gQVVESU9fU0VUX0tBUkFPS0UsCisgYXVkaW9fa2FyYW9rZV90ICYjeDIyQzY7a2FyYW9rZSk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyBBVURJT19TRVRfS0FSQU9LRSBmb3IgdGhpcworIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmF1ZGlvX2thcmFva2VfdAorICprYXJhb2tlPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5rYXJhb2tlIHNldHRpbmdzIGFjY29yZGluZyB0byBzZWN0aW9uID8/LjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CismcmV0dXJuLXZhbHVlLWR2YjsKKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RUlOVkFMPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5rYXJhb2tlIGlzIG5vdCBhIHZhbGlkIG9yIHN1cHBvcnRlZCBrYXJhb2tlIHNldHRpbmcuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL2NhLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvY2EueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwYjA3ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL2NhLnhtbApAQCAtMCwwICsxLDU4MiBAQAorPHRpdGxlPkRWQiBDQSBEZXZpY2U8L3RpdGxlPgorPHBhcmE+VGhlIERWQiBDQSBkZXZpY2UgY29udHJvbHMgdGhlIGNvbmRpdGlvbmFsIGFjY2VzcyBoYXJkd2FyZS4gSXQgY2FuIGJlIGFjY2Vzc2VkIHRocm91Z2gKKzxjb25zdGFudD4vZGV2L2R2Yi9hZGFwdGVyPy9jYT88L2NvbnN0YW50Pi4gRGF0YSB0eXBlcyBhbmQgYW5kIGlvY3RsIGRlZmluaXRpb25zIGNhbiBiZSBhY2Nlc3NlZCBieQoraW5jbHVkaW5nIDxjb25zdGFudD5saW51eC9kdmIvY2EuaDwvY29uc3RhbnQ+IGluIHlvdXIgYXBwbGljYXRpb24uCis8L3BhcmE+CisKKzxzZWN0aW9uIGlkPSJjYV9kYXRhX3R5cGVzIj4KKzx0aXRsZT5DQSBEYXRhIFR5cGVzPC90aXRsZT4KKworCis8c2VjdGlvbiBpZD0iY2Etc2xvdC1pbmZvIj4KKzx0aXRsZT5jYV9zbG90X2luZm9fdDwvdGl0bGU+CisgPHByb2dyYW1saXN0aW5nPgordHlwZWRlZiBzdHJ1Y3QgY2Ffc2xvdF9pbmZvIHsKKwlpbnQgbnVtOyAgICAgICAgICAgICAgIC8mI3gyMkM2OyBzbG90IG51bWJlciAmI3gyMkM2Oy8KKworCWludCB0eXBlOyAgICAgICAgICAgICAgLyYjeDIyQzY7IENBIGludGVyZmFjZSB0aGlzIHNsb3Qgc3VwcG9ydHMgJiN4MjJDNjsvCisjZGVmaW5lIENBX0NJICAgICAgICAgICAgMSAgICAgLyYjeDIyQzY7IENJIGhpZ2ggbGV2ZWwgaW50ZXJmYWNlICYjeDIyQzY7LworI2RlZmluZSBDQV9DSV9MSU5LICAgICAgIDIgICAgIC8mI3gyMkM2OyBDSSBsaW5rIGxheWVyIGxldmVsIGludGVyZmFjZSAmI3gyMkM2Oy8KKyNkZWZpbmUgQ0FfQ0lfUEhZUyAgICAgICA0ICAgICAvJiN4MjJDNjsgQ0kgcGh5c2ljYWwgbGF5ZXIgbGV2ZWwgaW50ZXJmYWNlICYjeDIyQzY7LworI2RlZmluZSBDQV9ERVNDUiAgICAgICAgIDggICAgIC8mI3gyMkM2OyBidWlsdC1pbiBkZXNjcmFtYmxlciAmI3gyMkM2Oy8KKyNkZWZpbmUgQ0FfU0MgICAgICAgICAgMTI4ICAgICAvJiN4MjJDNjsgc2ltcGxlIHNtYXJ0IGNhcmQgaW50ZXJmYWNlICYjeDIyQzY7LworCisJdW5zaWduZWQgaW50IGZsYWdzOworI2RlZmluZSBDQV9DSV9NT0RVTEVfUFJFU0VOVCAxIC8mI3gyMkM2OyBtb2R1bGUgKG9yIGNhcmQpIGluc2VydGVkICYjeDIyQzY7LworI2RlZmluZSBDQV9DSV9NT0RVTEVfUkVBRFkgICAyCit9IGNhX3Nsb3RfaW5mb190OworPC9wcm9ncmFtbGlzdGluZz4KKworPC9zZWN0aW9uPgorPHNlY3Rpb24gaWQ9ImNhLWRlc2NyLWluZm8iPgorPHRpdGxlPmNhX2Rlc2NyX2luZm9fdDwvdGl0bGU+Cis8cHJvZ3JhbWxpc3Rpbmc+Cit0eXBlZGVmIHN0cnVjdCBjYV9kZXNjcl9pbmZvIHsKKwl1bnNpZ25lZCBpbnQgbnVtOyAgLyYjeDIyQzY7IG51bWJlciBvZiBhdmFpbGFibGUgZGVzY3JhbWJsZXJzIChrZXlzKSAmI3gyMkM2Oy8KKwl1bnNpZ25lZCBpbnQgdHlwZTsgLyYjeDIyQzY7IHR5cGUgb2Ygc3VwcG9ydGVkIHNjcmFtYmxpbmcgc3lzdGVtICYjeDIyQzY7LworI2RlZmluZSBDQV9FQ0QgICAgICAgICAgIDEKKyNkZWZpbmUgQ0FfTkRTICAgICAgICAgICAyCisjZGVmaW5lIENBX0RTUyAgICAgICAgICAgNAorfSBjYV9kZXNjcl9pbmZvX3Q7Cis8L3Byb2dyYW1saXN0aW5nPgorCis8L3NlY3Rpb24+Cis8c2VjdGlvbiBpZD0iY2EtY2FwcyI+Cis8dGl0bGU+Y2FfY2Fwc190PC90aXRsZT4KKzxwcm9ncmFtbGlzdGluZz4KK3R5cGVkZWYgc3RydWN0IGNhX2NhcHMgeworCXVuc2lnbmVkIGludCBzbG90X251bTsgIC8mI3gyMkM2OyB0b3RhbCBudW1iZXIgb2YgQ0EgY2FyZCBhbmQgbW9kdWxlIHNsb3RzICYjeDIyQzY7LworCXVuc2lnbmVkIGludCBzbG90X3R5cGU7IC8mI3gyMkM2OyBPUiBvZiBhbGwgc3VwcG9ydGVkIHR5cGVzICYjeDIyQzY7LworCXVuc2lnbmVkIGludCBkZXNjcl9udW07IC8mI3gyMkM2OyB0b3RhbCBudW1iZXIgb2YgZGVzY3JhbWJsZXIgc2xvdHMgKGtleXMpICYjeDIyQzY7LworCXVuc2lnbmVkIGludCBkZXNjcl90eXBlOy8mI3gyMkM2OyBPUiBvZiBhbGwgc3VwcG9ydGVkIHR5cGVzICYjeDIyQzY7LworIH0gY2FfY2FwX3Q7Cis8L3Byb2dyYW1saXN0aW5nPgorCis8L3NlY3Rpb24+Cis8c2VjdGlvbiBpZD0iY2EtbXNnIj4KKzx0aXRsZT5jYV9tc2dfdDwvdGl0bGU+Cis8cHJvZ3JhbWxpc3Rpbmc+CisvJiN4MjJDNjsgYSBtZXNzYWdlIHRvL2Zyb20gYSBDSS1DQU0gJiN4MjJDNjsvCit0eXBlZGVmIHN0cnVjdCBjYV9tc2cgeworCXVuc2lnbmVkIGludCBpbmRleDsKKwl1bnNpZ25lZCBpbnQgdHlwZTsKKwl1bnNpZ25lZCBpbnQgbGVuZ3RoOworCXVuc2lnbmVkIGNoYXIgbXNnWzI1Nl07Cit9IGNhX21zZ190OworPC9wcm9ncmFtbGlzdGluZz4KKworPC9zZWN0aW9uPgorPHNlY3Rpb24gaWQ9ImNhLWRlc2NyIj4KKzx0aXRsZT5jYV9kZXNjcl90PC90aXRsZT4KKzxwcm9ncmFtbGlzdGluZz4KK3R5cGVkZWYgc3RydWN0IGNhX2Rlc2NyIHsKKwl1bnNpZ25lZCBpbnQgaW5kZXg7CisJdW5zaWduZWQgaW50IHBhcml0eTsKKwl1bnNpZ25lZCBjaGFyIGN3WzhdOworfSBjYV9kZXNjcl90OworPC9wcm9ncmFtbGlzdGluZz4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9ImNhLXBpZCI+Cis8dGl0bGU+Y2EtcGlkPC90aXRsZT4KKzxwcm9ncmFtbGlzdGluZz4KK3R5cGVkZWYgc3RydWN0IGNhX3BpZCB7CisJdW5zaWduZWQgaW50IHBpZDsKKwlpbnQgaW5kZXg7CQkvJiN4MjJDNjsgLTEgPT0gZGlzYWJsZSYjeDIyQzY7LworfSBjYV9waWRfdDsKKzwvcHJvZ3JhbWxpc3Rpbmc+Cis8L3NlY3Rpb24+PC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iY2FfZnVuY3Rpb25fY2FsbHMiPgorPHRpdGxlPkNBIEZ1bmN0aW9uIENhbGxzPC90aXRsZT4KKworCis8c2VjdGlvbiBpZD0iY2FfZm9wZW4iPgorPHRpdGxlPm9wZW4oKTwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIHN5c3RlbSBjYWxsIG9wZW5zIGEgbmFtZWQgY2EgZGV2aWNlIChlLmcuIC9kZXYvb3N0L2NhKSBmb3Igc3Vic2VxdWVudCB1c2UuPC9wYXJhPgorPHBhcmE+V2hlbiBhbiBvcGVuKCkgY2FsbCBoYXMgc3VjY2VlZGVkLCB0aGUgZGV2aWNlIHdpbGwgYmUgcmVhZHkgZm9yIHVzZS4KKyBUaGUgc2lnbmlmaWNhbmNlIG9mIGJsb2NraW5nIG9yIG5vbi1ibG9ja2luZyBtb2RlIGlzIGRlc2NyaWJlZCBpbiB0aGUKKyBkb2N1bWVudGF0aW9uIGZvciBmdW5jdGlvbnMgd2hlcmUgdGhlcmUgaXMgYSBkaWZmZXJlbmNlLiBJdCBkb2VzIG5vdCBhZmZlY3QgdGhlCisgc2VtYW50aWNzIG9mIHRoZSBvcGVuKCkgY2FsbCBpdHNlbGYuIEEgZGV2aWNlIG9wZW5lZCBpbiBibG9ja2luZyBtb2RlIGNhbiBsYXRlcgorIGJlIHB1dCBpbnRvIG5vbi1ibG9ja2luZyBtb2RlIChhbmQgdmljZSB2ZXJzYSkgdXNpbmcgdGhlIEZfU0VURkwgY29tbWFuZAorIG9mIHRoZSBmY250bCBzeXN0ZW0gY2FsbC4gVGhpcyBpcyBhIHN0YW5kYXJkIHN5c3RlbSBjYWxsLCBkb2N1bWVudGVkIGluIHRoZSBMaW51eAorIG1hbnVhbCBwYWdlIGZvciBmY250bC4gT25seSBvbmUgdXNlciBjYW4gb3BlbiB0aGUgQ0EgRGV2aWNlIGluIE9fUkRXUgorIG1vZGUuIEFsbCBvdGhlciBhdHRlbXB0cyB0byBvcGVuIHRoZSBkZXZpY2UgaW4gdGhpcyBtb2RlIHdpbGwgZmFpbCwgYW5kIGFuIGVycm9yCisgY29kZSB3aWxsIGJlIHJldHVybmVkLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgb3Blbihjb25zdCBjaGFyICYjeDIyQzY7ZGV2aWNlTmFtZSwgaW50IGZsYWdzKTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5jb25zdCBjaGFyCisgKmRldmljZU5hbWU8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPk5hbWUgb2Ygc3BlY2lmaWMgdmlkZW8gZGV2aWNlLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmxhZ3M8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkEgYml0LXdpc2UgT1Igb2YgdGhlIGZvbGxvd2luZyBmbGFnczo8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5PX1JET05MWSByZWFkLW9ubHkgYWNjZXNzPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+T19SRFdSIHJlYWQvd3JpdGUgYWNjZXNzPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+T19OT05CTE9DSyBvcGVuIGluIG5vbi1ibG9ja2luZyBtb2RlPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+KGJsb2NraW5nIG1vZGUgaXMgdGhlIGRlZmF1bHQpPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlJFVFVSTiBWQUxVRTwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RU5PREVWPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5EZXZpY2UgZHJpdmVyIG5vdCBsb2FkZWQvYXZhaWxhYmxlLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FSU5URVJOQUw8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkludGVybmFsIGVycm9yLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FQlVTWTwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RGV2aWNlIG9yIHJlc291cmNlIGJ1c3kuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVJTlZBTDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+SW52YWxpZCBhcmd1bWVudC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorCis8L3NlY3Rpb24+Cis8c2VjdGlvbiBpZD0iY2FfZmNsb3NlIj4KKzx0aXRsZT5jbG9zZSgpPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgc3lzdGVtIGNhbGwgY2xvc2VzIGEgcHJldmlvdXNseSBvcGVuZWQgYXVkaW8gZGV2aWNlLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgY2xvc2UoaW50IGZkKTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5SRVRVUk4gVkFMVUU8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVCQURGPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5mZCBpcyBub3QgYSB2YWxpZCBvcGVuIGZpbGUgZGVzY3JpcHRvci48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorIDwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9IkNBX1JFU0VUIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPkNBX1JFU0VUPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgaXMgdW5kb2N1bWVudGVkLiBEb2N1bWVudGF0aW9uIGlzIHdlbGNvbWUuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bChmZCwgaW50IHJlcXVlc3QgPSBDQV9SRVNFVCk7Cis8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIENBX1JFU0VUIGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iQ0FfR0VUX0NBUCIKK3JvbGU9InN1YnNlY3Rpb24iPjx0aXRsZT5DQV9HRVRfQ0FQPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgaXMgdW5kb2N1bWVudGVkLiBEb2N1bWVudGF0aW9uIGlzIHdlbGNvbWUuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bChmZCwgaW50IHJlcXVlc3QgPSBDQV9HRVRfQ0FQLAorIGNhX2NhcHNfdCAqKTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIENBX0dFVF9DQVAgZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+Y2FfY2Fwc190ICoKKzwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VW5kb2N1bWVudGVkLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CismcmV0dXJuLXZhbHVlLWR2YjsKKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9IkNBX0dFVF9TTE9UX0lORk8iCityb2xlPSJzdWJzZWN0aW9uIj48dGl0bGU+Q0FfR0VUX1NMT1RfSU5GTzwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIGlzIHVuZG9jdW1lbnRlZC4gRG9jdW1lbnRhdGlvbiBpcyB3ZWxjb21lLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoZmQsIGludCByZXF1ZXN0ID0gQ0FfR0VUX1NMT1RfSU5GTywKKyBjYV9zbG90X2luZm9fdCAqKTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIENBX0dFVF9TTE9UX0lORk8gZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+Y2Ffc2xvdF9pbmZvX3QgKgorPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5VbmRvY3VtZW50ZWQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iQ0FfR0VUX0RFU0NSX0lORk8iCityb2xlPSJzdWJzZWN0aW9uIj48dGl0bGU+Q0FfR0VUX0RFU0NSX0lORk88L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBpcyB1bmRvY3VtZW50ZWQuIERvY3VtZW50YXRpb24gaXMgd2VsY29tZS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGlvY3RsKGZkLCBpbnQgcmVxdWVzdCA9IENBX0dFVF9ERVNDUl9JTkZPLAorIGNhX2Rlc2NyX2luZm9fdCAqKTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIENBX0dFVF9ERVNDUl9JTkZPIGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmNhX2Rlc2NyX2luZm9fdCAqCis8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlVuZG9jdW1lbnRlZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJDQV9HRVRfTVNHIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPkNBX0dFVF9NU0c8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBpcyB1bmRvY3VtZW50ZWQuIERvY3VtZW50YXRpb24gaXMgd2VsY29tZS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGlvY3RsKGZkLCBpbnQgcmVxdWVzdCA9IENBX0dFVF9NU0csCisgY2FfbXNnX3QgKik7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyBDQV9HRVRfTVNHIGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmNhX21zZ190ICoKKzwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VW5kb2N1bWVudGVkLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CismcmV0dXJuLXZhbHVlLWR2YjsKKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9IkNBX1NFTkRfTVNHIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPkNBX1NFTkRfTVNHPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgaXMgdW5kb2N1bWVudGVkLiBEb2N1bWVudGF0aW9uIGlzIHdlbGNvbWUuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bChmZCwgaW50IHJlcXVlc3QgPSBDQV9TRU5EX01TRywKKyBjYV9tc2dfdCAqKTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIENBX1NFTkRfTVNHIGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmNhX21zZ190ICoKKzwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VW5kb2N1bWVudGVkLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CismcmV0dXJuLXZhbHVlLWR2YjsKKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9IkNBX1NFVF9ERVNDUiIKK3JvbGU9InN1YnNlY3Rpb24iPjx0aXRsZT5DQV9TRVRfREVTQ1I8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBpcyB1bmRvY3VtZW50ZWQuIERvY3VtZW50YXRpb24gaXMgd2VsY29tZS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGlvY3RsKGZkLCBpbnQgcmVxdWVzdCA9IENBX1NFVF9ERVNDUiwKKyBjYV9kZXNjcl90ICopOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgQ0FfU0VUX0RFU0NSIGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmNhX2Rlc2NyX3QgKgorPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5VbmRvY3VtZW50ZWQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iQ0FfU0VUX1BJRCIKK3JvbGU9InN1YnNlY3Rpb24iPjx0aXRsZT5DQV9TRVRfUElEPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgaXMgdW5kb2N1bWVudGVkLiBEb2N1bWVudGF0aW9uIGlzIHdlbGNvbWUuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bChmZCwgaW50IHJlcXVlc3QgPSBDQV9TRVRfUElELAorIGNhX3BpZF90ICopOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgQ0FfU0VUX1BJRCBmb3IgdGhpcyBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5jYV9waWRfdCAqCis8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlVuZG9jdW1lbnRlZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7Cis8L3NlY3Rpb24+CisKKzwvc2VjdGlvbj4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvZGVtdXgueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2Yi9kZW11eC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRmMmZiMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvZGVtdXgueG1sCkBAIC0wLDAgKzEsMTE2MiBAQAorPHRpdGxlPkRWQiBEZW11eCBEZXZpY2U8L3RpdGxlPgorCis8cGFyYT5UaGUgRFZCIGRlbXV4IGRldmljZSBjb250cm9scyB0aGUgZmlsdGVycyBvZiB0aGUgRFZCIGhhcmR3YXJlL3NvZnR3YXJlLiBJdCBjYW4gYmUKK2FjY2Vzc2VkIHRocm91Z2ggPGNvbnN0YW50Pi9kZXYvYWRhcHRlcj8vZGVtdXg/PC9jb25zdGFudD4uIERhdGEgdHlwZXMgYW5kIGFuZCBpb2N0bCBkZWZpbml0aW9ucyBjYW4gYmUKK2FjY2Vzc2VkIGJ5IGluY2x1ZGluZyA8Y29uc3RhbnQ+bGludXgvZHZiL2RteC5oPC9jb25zdGFudD4gaW4geW91ciBhcHBsaWNhdGlvbi4KKzwvcGFyYT4KKzxzZWN0aW9uIGlkPSJkbXhfdHlwZXMiPgorPHRpdGxlPkRlbXV4IERhdGEgVHlwZXM8L3RpdGxlPgorCis8c2VjdGlvbiBpZD0iZG14LW91dHB1dC10Ij4KKzx0aXRsZT5PdXRwdXQgZm9yIHRoZSBkZW11eDwvdGl0bGU+CisKKzx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iZG14LW91dHB1dCI+CisgICAgPHRpdGxlPmVudW0gZG14X291dHB1dDwvdGl0bGU+CisgICAgPHRncm91cCBjb2xzPSIyIj4KKwkmY3MtZGVmOworCTx0aGVhZD4KKwk8cm93PgorCSAgICA8ZW50cnk+SUQ8L2VudHJ5PgorCSAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorCTwvcm93PgorCTwvdGhlYWQ+CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwk8cm93PgorCQk8ZW50cnkgYWxpZ249ImNoYXIiIGlkPSJETVgtT1VULURFQ09ERVIiPkRNWF9PVVRfREVDT0RFUjwvZW50cnk+CisJCTxlbnRyeT5TdHJlYW1pbmcgZGlyZWN0bHkgdG8gZGVjb2Rlci48L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJCTxlbnRyeSBhbGlnbj0iY2hhciIgaWQ9IkRNWC1PVVQtVEFQIj5ETVhfT1VUX1RBUDwvZW50cnk+CisJCTxlbnRyeT5PdXRwdXQgZ29pbmcgdG8gYSBtZW1vcnkgYnVmZmVyICh0byBiZSByZXRyaWV2ZWQgdmlhIHRoZQorCQkgICAgcmVhZCBjb21tYW5kKS4gRGVsaXZlcnMgdGhlIHN0cmVhbSBvdXRwdXQgdG8gdGhlIGRlbXV4CisJCSAgICBkZXZpY2Ugb24gd2hpY2ggdGhlIGlvY3RsIGlzIGNhbGxlZC48L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJCTxlbnRyeSBhbGlnbj0iY2hhciIgaWQ9IkRNWC1PVVQtVFMtVEFQIj5ETVhfT1VUX1RTX1RBUDwvZW50cnk+CisJCTxlbnRyeT5PdXRwdXQgbXVsdGlwbGV4ZWQgaW50byBhIG5ldyBUUyAodG8gYmUgcmV0cmlldmVkIGJ5CisJCSAgICByZWFkaW5nIGZyb20gdGhlIGxvZ2ljYWwgRFZSIGRldmljZSkuIFJvdXRlcyBvdXRwdXQgdG8gdGhlCisJCSAgICBsb2dpY2FsIERWUiBkZXZpY2UgPGNvbnN0YW50Pi9kZXYvZHZiL2FkYXB0ZXI/L2R2cj88L2NvbnN0YW50PiwKKwkJICAgIHdoaWNoIGRlbGl2ZXJzIGEgVFMgbXVsdGlwbGV4ZWQgZnJvbSBhbGwgZmlsdGVycyBmb3Igd2hpY2gKKwkJICAgIDxjb25zdGFudD5ETVhfT1VUX1RTX1RBUDwvY29uc3RhbnQ+IHdhcyBzcGVjaWZpZWQuPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCQk8ZW50cnkgYWxpZ249ImNoYXIiIGlkPSJETVgtT1VULVRTREVNVVgtVEFQIj5ETVhfT1VUX1RTREVNVVhfVEFQPC9lbnRyeT4KKwkJPGVudHJ5Pkxpa2UgJkRNWC1PVVQtVFMtVEFQOyBidXQgcmV0cmlldmVkIGZyb20gdGhlIERNWAorCQkgICAgZGV2aWNlLjwvZW50cnk+CisJPC9yb3c+CisgICAgICAgIDwvdGJvZHk+CisgICAgPC90Z3JvdXA+Cis8L3RhYmxlPgorCis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJkbXgtaW5wdXQtdCI+Cis8dGl0bGU+ZG14X2lucHV0X3Q8L3RpdGxlPgorPHByb2dyYW1saXN0aW5nPgordHlwZWRlZiBlbnVtCit7CisJRE1YX0lOX0ZST05URU5ELCAvJiN4MjJDNjsgSW5wdXQgZnJvbSBhIGZyb250LWVuZCBkZXZpY2UuICAmI3gyMkM2Oy8KKwlETVhfSU5fRFZSICAgICAgIC8mI3gyMkM2OyBJbnB1dCBmcm9tIHRoZSBsb2dpY2FsIERWUiBkZXZpY2UuICAmI3gyMkM2Oy8KK30gZG14X2lucHV0X3Q7Cis8L3Byb2dyYW1saXN0aW5nPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iZG14LXBlcy10eXBlLXQiPgorPHRpdGxlPmRteF9wZXNfdHlwZV90PC90aXRsZT4KKzxwcm9ncmFtbGlzdGluZz4KK3R5cGVkZWYgZW51bQoreworCURNWF9QRVNfQVVESU8wLAorCURNWF9QRVNfVklERU8wLAorCURNWF9QRVNfVEVMRVRFWFQwLAorCURNWF9QRVNfU1VCVElUTEUwLAorCURNWF9QRVNfUENSMCwKKworCURNWF9QRVNfQVVESU8xLAorCURNWF9QRVNfVklERU8xLAorCURNWF9QRVNfVEVMRVRFWFQxLAorCURNWF9QRVNfU1VCVElUTEUxLAorCURNWF9QRVNfUENSMSwKKworCURNWF9QRVNfQVVESU8yLAorCURNWF9QRVNfVklERU8yLAorCURNWF9QRVNfVEVMRVRFWFQyLAorCURNWF9QRVNfU1VCVElUTEUyLAorCURNWF9QRVNfUENSMiwKKworCURNWF9QRVNfQVVESU8zLAorCURNWF9QRVNfVklERU8zLAorCURNWF9QRVNfVEVMRVRFWFQzLAorCURNWF9QRVNfU1VCVElUTEUzLAorCURNWF9QRVNfUENSMywKKworCURNWF9QRVNfT1RIRVIKK30gZG14X3Blc190eXBlX3Q7Cis8L3Byb2dyYW1saXN0aW5nPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iZG14LWZpbHRlciI+Cis8dGl0bGU+c3RydWN0IGRteF9maWx0ZXI8L3RpdGxlPgorIDxwcm9ncmFtbGlzdGluZz4KKyB0eXBlZGVmIHN0cnVjdCBkbXhfZmlsdGVyCit7CisJX191OCAgZmlsdGVyW0RNWF9GSUxURVJfU0laRV07CisJX191OCAgbWFza1tETVhfRklMVEVSX1NJWkVdOworCV9fdTggIG1vZGVbRE1YX0ZJTFRFUl9TSVpFXTsKK30gZG14X2ZpbHRlcl90OworPC9wcm9ncmFtbGlzdGluZz4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9ImRteC1zY3QtZmlsdGVyLXBhcmFtcyI+Cis8dGl0bGU+c3RydWN0IGRteF9zY3RfZmlsdGVyX3BhcmFtczwvdGl0bGU+Cis8cHJvZ3JhbWxpc3Rpbmc+CitzdHJ1Y3QgZG14X3NjdF9maWx0ZXJfcGFyYW1zCit7CisJX191MTYgICAgICAgICAgcGlkOworCWRteF9maWx0ZXJfdCAgIGZpbHRlcjsKKwlfX3UzMiAgICAgICAgICB0aW1lb3V0OworCV9fdTMyICAgICAgICAgIGZsYWdzOworI2RlZmluZSBETVhfQ0hFQ0tfQ1JDICAgICAgIDEKKyNkZWZpbmUgRE1YX09ORVNIT1QgICAgICAgICAyCisjZGVmaW5lIERNWF9JTU1FRElBVEVfU1RBUlQgNAorI2RlZmluZSBETVhfS0VSTkVMX0NMSUVOVCAgIDB4ODAwMAorfTsKKzwvcHJvZ3JhbWxpc3Rpbmc+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJkbXgtcGVzLWZpbHRlci1wYXJhbXMiPgorPHRpdGxlPnN0cnVjdCBkbXhfcGVzX2ZpbHRlcl9wYXJhbXM8L3RpdGxlPgorPHByb2dyYW1saXN0aW5nPgorc3RydWN0IGRteF9wZXNfZmlsdGVyX3BhcmFtcworeworCV9fdTE2ICAgICAgICAgIHBpZDsKKwlkbXhfaW5wdXRfdCAgICBpbnB1dDsKKwlkbXhfb3V0cHV0X3QgICBvdXRwdXQ7CisJZG14X3Blc190eXBlX3QgcGVzX3R5cGU7CisJX191MzIgICAgICAgICAgZmxhZ3M7Cit9OworPC9wcm9ncmFtbGlzdGluZz4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9ImRteC1ldmVudCI+Cis8dGl0bGU+c3RydWN0IGRteF9ldmVudDwvdGl0bGU+CisgPHByb2dyYW1saXN0aW5nPgorIHN0cnVjdCBkbXhfZXZlbnQKKyB7CisJIGRteF9ldmVudF90ICAgICAgICAgIGV2ZW50OworCSB0aW1lX3QgICAgICAgICAgICAgICB0aW1lU3RhbXA7CisJIHVuaW9uCisJIHsKKwkJIGRteF9zY3JhbWJsaW5nX3N0YXR1c190IHNjcmFtYmxpbmc7CisJIH0gdTsKKyB9OworPC9wcm9ncmFtbGlzdGluZz4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9ImRteC1zdGMiPgorPHRpdGxlPnN0cnVjdCBkbXhfc3RjPC90aXRsZT4KKzxwcm9ncmFtbGlzdGluZz4KK3N0cnVjdCBkbXhfc3RjIHsKKwl1bnNpZ25lZCBpbnQgbnVtOwkvJiN4MjJDNjsgaW5wdXQgOiB3aGljaCBTVEM/IDAuLk4gJiN4MjJDNjsvCisJdW5zaWduZWQgaW50IGJhc2U7CS8mI3gyMkM2OyBvdXRwdXQ6IGRpdmlzb3IgZm9yIHN0YyB0byBnZXQgOTAga0h6IGNsb2NrICYjeDIyQzY7LworCV9fdTY0IHN0YzsJCS8mI3gyMkM2OyBvdXRwdXQ6IHN0YyBpbiAnYmFzZScmI3gyMkM2OzkwIGtIeiB1bml0cyAmI3gyMkM2Oy8KK307Cis8L3Byb2dyYW1saXN0aW5nPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iZG14LWNhcHMiPgorPHRpdGxlPnN0cnVjdCBkbXhfY2FwczwvdGl0bGU+Cis8cHJvZ3JhbWxpc3Rpbmc+CisgdHlwZWRlZiBzdHJ1Y3QgZG14X2NhcHMgeworCV9fdTMyIGNhcHM7CisJaW50IG51bV9kZWNvZGVyczsKK30gZG14X2NhcHNfdDsKKzwvcHJvZ3JhbWxpc3Rpbmc+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJkbXgtc291cmNlLXQiPgorPHRpdGxlPmVudW0gZG14X3NvdXJjZV90PC90aXRsZT4KKzxwcm9ncmFtbGlzdGluZz4KK3R5cGVkZWYgZW51bSB7CisJRE1YX1NPVVJDRV9GUk9OVDAgPSAwLAorCURNWF9TT1VSQ0VfRlJPTlQxLAorCURNWF9TT1VSQ0VfRlJPTlQyLAorCURNWF9TT1VSQ0VfRlJPTlQzLAorCURNWF9TT1VSQ0VfRFZSMCAgID0gMTYsCisJRE1YX1NPVVJDRV9EVlIxLAorCURNWF9TT1VSQ0VfRFZSMiwKKwlETVhfU09VUkNFX0RWUjMKK30gZG14X3NvdXJjZV90OworPC9wcm9ncmFtbGlzdGluZz4KKzwvc2VjdGlvbj4KKworPC9zZWN0aW9uPgorPHNlY3Rpb24gaWQ9ImRteF9mY2FsbHMiPgorPHRpdGxlPkRlbXV4IEZ1bmN0aW9uIENhbGxzPC90aXRsZT4KKworPHNlY3Rpb24gaWQ9ImRteF9mb3BlbiI+Cis8dGl0bGU+b3BlbigpPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgc3lzdGVtIGNhbGwsIHVzZWQgd2l0aCBhIGRldmljZSBuYW1lIG9mIC9kZXYvZHZiL2FkYXB0ZXIwL2RlbXV4MCwKKyBhbGxvY2F0ZXMgYSBuZXcgZmlsdGVyIGFuZCByZXR1cm5zIGEgaGFuZGxlIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBzdWJzZXF1ZW50CisgY29udHJvbCBvZiB0aGF0IGZpbHRlci4gVGhpcyBjYWxsIGhhcyB0byBiZSBtYWRlIGZvciBlYWNoIGZpbHRlciB0byBiZSB1c2VkLCBpLmUuIGV2ZXJ5CisgcmV0dXJuZWQgZmlsZSBkZXNjcmlwdG9yIGlzIGEgcmVmZXJlbmNlIHRvIGEgc2luZ2xlIGZpbHRlci4gL2Rldi9kdmIvYWRhcHRlcjAvZHZyMAorIGlzIGEgbG9naWNhbCBkZXZpY2UgdG8gYmUgdXNlZCBmb3IgcmV0cmlldmluZyBUcmFuc3BvcnQgU3RyZWFtcyBmb3IgZGlnaXRhbAorIHZpZGVvIHJlY29yZGluZy4gV2hlbiByZWFkaW5nIGZyb20gdGhpcyBkZXZpY2UgYSB0cmFuc3BvcnQgc3RyZWFtIGNvbnRhaW5pbmcKKyB0aGUgcGFja2V0cyBmcm9tIGFsbCBQRVMgZmlsdGVycyBzZXQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgZGVtdXggZGV2aWNlCisgKC9kZXYvZHZiL2FkYXB0ZXIwL2RlbXV4MCkgaGF2aW5nIHRoZSBvdXRwdXQgc2V0IHRvIERNWF9PVVRfVFNfVEFQLiBBCisgcmVjb3JkZWQgVHJhbnNwb3J0IFN0cmVhbSBpcyByZXBsYXllZCBieSB3cml0aW5nIHRvIHRoaXMgZGV2aWNlLiA8L3BhcmE+Cis8cGFyYT5UaGUgc2lnbmlmaWNhbmNlIG9mIGJsb2NraW5nIG9yIG5vbi1ibG9ja2luZyBtb2RlIGlzIGRlc2NyaWJlZCBpbiB0aGUKKyBkb2N1bWVudGF0aW9uIGZvciBmdW5jdGlvbnMgd2hlcmUgdGhlcmUgaXMgYSBkaWZmZXJlbmNlLiBJdCBkb2VzIG5vdCBhZmZlY3QgdGhlCisgc2VtYW50aWNzIG9mIHRoZSBvcGVuKCkgY2FsbCBpdHNlbGYuIEEgZGV2aWNlIG9wZW5lZCBpbiBibG9ja2luZyBtb2RlIGNhbiBsYXRlcgorIGJlIHB1dCBpbnRvIG5vbi1ibG9ja2luZyBtb2RlIChhbmQgdmljZSB2ZXJzYSkgdXNpbmcgdGhlIEZfU0VURkwgY29tbWFuZAorIG9mIHRoZSBmY250bCBzeXN0ZW0gY2FsbC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IG9wZW4oY29uc3QgY2hhciAmI3gyMkM2O2RldmljZU5hbWUsIGludCBmbGFncyk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+Y29uc3QgY2hhcgorICpkZXZpY2VOYW1lPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5OYW1lIG9mIGRlbXV4IGRldmljZS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZsYWdzPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5BIGJpdC13aXNlIE9SIG9mIHRoZSBmb2xsb3dpbmcgZmxhZ3M6PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+T19SRFdSIHJlYWQvd3JpdGUgYWNjZXNzPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+T19OT05CTE9DSyBvcGVuIGluIG5vbi1ibG9ja2luZyBtb2RlPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+KGJsb2NraW5nIG1vZGUgaXMgdGhlIGRlZmF1bHQpPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlJFVFVSTiBWQUxVRTwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RU5PREVWPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5EZXZpY2UgZHJpdmVyIG5vdCBsb2FkZWQvYXZhaWxhYmxlLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FSU5WQUw8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkludmFsaWQgYXJndW1lbnQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVNRklMRTwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+JiM4MjIwO1RvbyBtYW55IG9wZW4gZmlsZXMmIzgyMjE7LCBpLmUuIG5vIG1vcmUgZmlsdGVycyBhdmFpbGFibGUuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVOT01FTTwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhlIGRyaXZlciBmYWlsZWQgdG8gYWxsb2NhdGUgZW5vdWdoIG1lbW9yeS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iZG14X2ZjbG9zZSI+Cis8dGl0bGU+Y2xvc2UoKTwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIHN5c3RlbSBjYWxsIGRlYWN0aXZhdGVzIGFuZCBkZWFsbG9jYXRlcyBhIGZpbHRlciB0aGF0IHdhcyBwcmV2aW91c2x5CisgYWxsb2NhdGVkIHZpYSB0aGUgb3BlbigpIGNhbGwuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBjbG9zZShpbnQgZmQpOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlJFVFVSTiBWQUxVRTwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RUJBREY8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmZkIGlzIG5vdCBhIHZhbGlkIG9wZW4gZmlsZSBkZXNjcmlwdG9yLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJkbXhfZnJlYWQiPgorPHRpdGxlPnJlYWQoKTwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIHN5c3RlbSBjYWxsIHJldHVybnMgZmlsdGVyZWQgZGF0YSwgd2hpY2ggbWlnaHQgYmUgc2VjdGlvbiBvciBQRVMgZGF0YS4gVGhlCisgZmlsdGVyZWQgZGF0YSBpcyB0cmFuc2ZlcnJlZCBmcm9tIHRoZSBkcml2ZXImIzgyMTc7cyBpbnRlcm5hbCBjaXJjdWxhciBidWZmZXIgdG8gYnVmLiBUaGUKKyBtYXhpbXVtIGFtb3VudCBvZiBkYXRhIHRvIGJlIHRyYW5zZmVycmVkIGlzIGltcGxpZWQgYnkgY291bnQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPldoZW4gcmV0dXJuaW5nIHNlY3Rpb24gZGF0YSB0aGUgZHJpdmVyIGFsd2F5cyB0cmllcyB0byByZXR1cm4gYSBjb21wbGV0ZSBzaW5nbGUKKyBzZWN0aW9uIChldmVuIHRob3VnaCBidWYgd291bGQgcHJvdmlkZSBidWZmZXIgc3BhY2UgZm9yIG1vcmUgZGF0YSkuIElmIHRoZSBzaXplCisgb2YgdGhlIGJ1ZmZlciBpcyBzbWFsbGVyIHRoYW4gdGhlIHNlY3Rpb24gYXMgbXVjaCBhcyBwb3NzaWJsZSB3aWxsIGJlIHJldHVybmVkLAorIGFuZCB0aGUgcmVtYWluaW5nIGRhdGEgd2lsbCBiZSBwcm92aWRlZCBpbiBzdWJzZXF1ZW50IGNhbGxzLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGUgc2l6ZSBvZiB0aGUgaW50ZXJuYWwgYnVmZmVyIGlzIDIgKiA0MDk2IGJ5dGVzICh0aGUgc2l6ZSBvZiB0d28gbWF4aW11bQorIHNpemVkIHNlY3Rpb25zKSBieSBkZWZhdWx0LiBUaGUgc2l6ZSBvZiB0aGlzIGJ1ZmZlciBtYXkgYmUgY2hhbmdlZCBieSB1c2luZyB0aGUKKyBETVhfU0VUX0JVRkZFUl9TSVpFIGZ1bmN0aW9uLiBJZiB0aGUgYnVmZmVyIGlzIG5vdCBsYXJnZSBlbm91Z2gsIG9yIGlmCisgdGhlIHJlYWQgb3BlcmF0aW9ucyBhcmUgbm90IHBlcmZvcm1lZCBmYXN0IGVub3VnaCwgdGhpcyBtYXkgcmVzdWx0IGluIGEgYnVmZmVyCisgb3ZlcmZsb3cgZXJyb3IuIEluIHRoaXMgY2FzZSBFT1ZFUkZMT1cgd2lsbCBiZSByZXR1cm5lZCwgYW5kIHRoZSBjaXJjdWxhcgorIGJ1ZmZlciB3aWxsIGJlIGVtcHRpZWQuIFRoaXMgY2FsbCBpcyBibG9ja2luZyBpZiB0aGVyZSBpcyBubyBkYXRhIHRvIHJldHVybiwgaS5lLiB0aGUKKyBwcm9jZXNzIHdpbGwgYmUgcHV0IHRvIHNsZWVwIHdhaXRpbmcgZm9yIGRhdGEsIHVubGVzcyB0aGUgT19OT05CTE9DSyBmbGFnCisgaXMgc3BlY2lmaWVkLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5Ob3RlIHRoYXQgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byByZWFkLCB0aGUgZmlsdGVyaW5nIHByb2Nlc3MgaGFzIHRvIGJlIHN0YXJ0ZWQKKyBieSBkZWZpbmluZyBlaXRoZXIgYSBzZWN0aW9uIG9yIGEgUEVTIGZpbHRlciBieSBtZWFucyBvZiB0aGUgaW9jdGwgZnVuY3Rpb25zLAorIGFuZCB0aGVuIHN0YXJ0aW5nIHRoZSBmaWx0ZXJpbmcgcHJvY2VzcyB2aWEgdGhlIERNWF9TVEFSVCBpb2N0bCBmdW5jdGlvbgorIG9yIGJ5IHNldHRpbmcgdGhlIERNWF9JTU1FRElBVEVfU1RBUlQgZmxhZy4gSWYgdGhlIHJlYWRpbmcgaXMgZG9uZQorIGZyb20gYSBsb2dpY2FsIERWUiBkZW11eCBkZXZpY2UsIHRoZSBkYXRhIHdpbGwgY29uc3RpdHV0ZSBhIFRyYW5zcG9ydCBTdHJlYW0KKyBpbmNsdWRpbmcgdGhlIHBhY2tldHMgZnJvbSBhbGwgUEVTIGZpbHRlcnMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgZGVtdXggZGV2aWNlCisgL2Rldi9kdmIvYWRhcHRlcjAvZGVtdXgwIGhhdmluZyB0aGUgb3V0cHV0IHNldCB0byBETVhfT1VUX1RTX1RBUC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+c2l6ZV90IHJlYWQoaW50IGZkLCB2b2lkICYjeDIyQzY7YnVmLCBzaXplX3QgY291bnQpOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPnZvaWQgKmJ1ZjwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+UG9pbnRlciB0byB0aGUgYnVmZmVyIHRvIGJlIHVzZWQgZm9yIHJldHVybmVkIGZpbHRlcmVkIGRhdGEuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPnNpemVfdCBjb3VudDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+U2l6ZSBvZiBidWYuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlJFVFVSTiBWQUxVRTwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RVdPVUxEQkxPQ0s8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPk5vIGRhdGEgdG8gcmV0dXJuIGFuZCBPX05PTkJMT0NLIHdhcyBzcGVjaWZpZWQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVCQURGPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5mZCBpcyBub3QgYSB2YWxpZCBvcGVuIGZpbGUgZGVzY3JpcHRvci48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RUNSQzwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+TGFzdCBzZWN0aW9uIGhhZCBhIENSQyBlcnJvciAtIG5vIGRhdGEgcmV0dXJuZWQuIFRoZQorIGJ1ZmZlciBpcyBmbHVzaGVkLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FT1ZFUkZMT1c8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoZSBmaWx0ZXJlZCBkYXRhIHdhcyBub3QgcmVhZCBmcm9tIHRoZSBidWZmZXIgaW4gZHVlCisgdGltZSwgcmVzdWx0aW5nIGluIG5vbi1yZWFkIGRhdGEgYmVpbmcgbG9zdC4gVGhlIGJ1ZmZlciBpcworIGZsdXNoZWQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVUSU1FRE9VVDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhlIHNlY3Rpb24gd2FzIG5vdCBsb2FkZWQgd2l0aGluIHRoZSBzdGF0ZWQgdGltZW91dAorIHBlcmlvZC4gU2VlIGlvY3RsIERNWF9TRVRfRklMVEVSIGZvciBob3cgdG8gc2V0IGEKKyB0aW1lb3V0LjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FRkFVTFQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoZSBkcml2ZXIgZmFpbGVkIHRvIHdyaXRlIHRvIHRoZSBjYWxsZXJzIGJ1ZmZlciBkdWUgdG8gYW4KKyBpbnZhbGlkICpidWYgcG9pbnRlci48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iZG14X2Z3cml0ZSI+Cis8dGl0bGU+d3JpdGUoKTwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIHN5c3RlbSBjYWxsIGlzIG9ubHkgcHJvdmlkZWQgYnkgdGhlIGxvZ2ljYWwgZGV2aWNlIC9kZXYvZHZiL2FkYXB0ZXIwL2R2cjAsCisgYXNzb2NpYXRlZCB3aXRoIHRoZSBwaHlzaWNhbCBkZW11eCBkZXZpY2UgdGhhdCBwcm92aWRlcyB0aGUgYWN0dWFsIERWUgorIGZ1bmN0aW9uYWxpdHkuIEl0IGlzIHVzZWQgZm9yIHJlcGxheSBvZiBhIGRpZ2l0YWxseSByZWNvcmRlZCBUcmFuc3BvcnQgU3RyZWFtLgorIE1hdGNoaW5nIGZpbHRlcnMgaGF2ZSB0byBiZSBkZWZpbmVkIGluIHRoZSBjb3JyZXNwb25kaW5nIHBoeXNpY2FsIGRlbXV4CisgZGV2aWNlLCAvZGV2L2R2Yi9hZGFwdGVyMC9kZW11eDAuIFRoZSBhbW91bnQgb2YgZGF0YSB0byBiZSB0cmFuc2ZlcnJlZCBpcworIGltcGxpZWQgYnkgY291bnQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPnNzaXplX3Qgd3JpdGUoaW50IGZkLCBjb25zdCB2b2lkICYjeDIyQzY7YnVmLCBzaXplX3QKKyBjb3VudCk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+dm9pZCAqYnVmPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5Qb2ludGVyIHRvIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgVHJhbnNwb3J0IFN0cmVhbS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+c2l6ZV90IGNvdW50PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5TaXplIG9mIGJ1Zi48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UkVUVVJOIFZBTFVFPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FV09VTERCTE9DSzwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+Tm8gZGF0YSB3YXMgd3JpdHRlbi4gVGhpcworIG1pZ2h0IGhhcHBlbiBpZiBPX05PTkJMT0NLIHdhcyBzcGVjaWZpZWQgYW5kIHRoZXJlCisgaXMgbm8gbW9yZSBidWZmZXIgc3BhY2UgYXZhaWxhYmxlIChpZiBPX05PTkJMT0NLIGlzCisgbm90IHNwZWNpZmllZCB0aGUgZnVuY3Rpb24gd2lsbCBibG9jayB1bnRpbCBidWZmZXIgc3BhY2UgaXMKKyBhdmFpbGFibGUpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FQlVTWTwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBlcnJvciBjb2RlIGluZGljYXRlcyB0aGF0IHRoZXJlIGFyZSBjb25mbGljdGluZworIHJlcXVlc3RzLiBUaGUgY29ycmVzcG9uZGluZyBkZW11eCBkZXZpY2UgaXMgc2V0dXAgdG8KKyByZWNlaXZlIGRhdGEgZnJvbSB0aGUgZnJvbnQtIGVuZC4gTWFrZSBzdXJlIHRoYXQgdGhlc2UKKyBmaWx0ZXJzIGFyZSBzdG9wcGVkIGFuZCB0aGF0IHRoZSBmaWx0ZXJzIHdpdGggaW5wdXQgc2V0IHRvCisgRE1YX0lOX0RWUiBhcmUgc3RhcnRlZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RUJBREY8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmZkIGlzIG5vdCBhIHZhbGlkIG9wZW4gZmlsZSBkZXNjcmlwdG9yLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJETVhfU1RBUlQiPgorPHRpdGxlPkRNWF9TVEFSVDwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIGNhbGwgaXMgdXNlZCB0byBzdGFydCB0aGUgYWN0dWFsIGZpbHRlcmluZyBvcGVyYXRpb24gZGVmaW5lZCB2aWEgdGhlIGlvY3RsCisgY2FsbHMgRE1YX1NFVF9GSUxURVIgb3IgRE1YX1NFVF9QRVNfRklMVEVSLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoIGludCBmZCwgaW50IHJlcXVlc3QgPSBETVhfU1RBUlQpOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgRE1YX1NUQVJUIGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FSU5WQUw8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkludmFsaWQgYXJndW1lbnQsIGkuZS4gbm8gZmlsdGVyaW5nIHBhcmFtZXRlcnMgcHJvdmlkZWQgdmlhCisgdGhlIERNWF9TRVRfRklMVEVSIG9yIERNWF9TRVRfUEVTX0ZJTFRFUgorIGZ1bmN0aW9ucy48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RUJVU1k8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgZXJyb3IgY29kZSBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBhcmUgY29uZmxpY3RpbmcKKyByZXF1ZXN0cy4gVGhlcmUgYXJlIGFjdGl2ZSBmaWx0ZXJzIGZpbHRlcmluZyBkYXRhIGZyb20KKyBhbm90aGVyIGlucHV0IHNvdXJjZS4gTWFrZSBzdXJlIHRoYXQgdGhlc2UgZmlsdGVycyBhcmUKKyBzdG9wcGVkIGJlZm9yZSBzdGFydGluZyB0aGlzIGZpbHRlci48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iRE1YX1NUT1AiPgorPHRpdGxlPkRNWF9TVE9QPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgY2FsbCBpcyB1c2VkIHRvIHN0b3AgdGhlIGFjdHVhbCBmaWx0ZXJpbmcgb3BlcmF0aW9uIGRlZmluZWQgdmlhIHRoZQorIGlvY3RsIGNhbGxzIERNWF9TRVRfRklMVEVSIG9yIERNWF9TRVRfUEVTX0ZJTFRFUiBhbmQgc3RhcnRlZCB2aWEKKyB0aGUgRE1YX1NUQVJUIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bCggaW50IGZkLCBpbnQgcmVxdWVzdCA9IERNWF9TVE9QKTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIERNWF9TVE9QIGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iRE1YX1NFVF9GSUxURVIiPgorPHRpdGxlPkRNWF9TRVRfRklMVEVSPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgY2FsbCBzZXRzIHVwIGEgZmlsdGVyIGFjY29yZGluZyB0byB0aGUgZmlsdGVyIGFuZCBtYXNrIHBhcmFtZXRlcnMKKyBwcm92aWRlZC4gQSB0aW1lb3V0IG1heSBiZSBkZWZpbmVkIHN0YXRpbmcgbnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCBmb3IgYQorIHNlY3Rpb24gdG8gYmUgbG9hZGVkLiBBIHZhbHVlIG9mIDAgbWVhbnMgdGhhdCBubyB0aW1lb3V0IHNob3VsZCBiZSBhcHBsaWVkLgorIEZpbmFsbHkgdGhlcmUgaXMgYSBmbGFnIGZpZWxkIHdoZXJlIGl0IGlzIHBvc3NpYmxlIHRvIHN0YXRlIHdoZXRoZXIgYSBzZWN0aW9uIHNob3VsZAorIGJlIENSQy1jaGVja2VkLCB3aGV0aGVyIHRoZSBmaWx0ZXIgc2hvdWxkIGJlIGEgJiM4MjIxO29uZS1zaG90JiM4MjIxOyBmaWx0ZXIsIGkuZS4gaWYgdGhlCisgZmlsdGVyaW5nIG9wZXJhdGlvbiBzaG91bGQgYmUgc3RvcHBlZCBhZnRlciB0aGUgZmlyc3Qgc2VjdGlvbiBpcyByZWNlaXZlZCwgYW5kCisgd2hldGhlciB0aGUgZmlsdGVyaW5nIG9wZXJhdGlvbiBzaG91bGQgYmUgc3RhcnRlZCBpbW1lZGlhdGVseSAod2l0aG91dCB3YWl0aW5nCisgZm9yIGEgRE1YX1NUQVJUIGlvY3RsIGNhbGwpLiBJZiBhIGZpbHRlciB3YXMgcHJldmlvdXNseSBzZXQtdXAsIHRoaXMgZmlsdGVyIHdpbGwKKyBiZSBjYW5jZWxlZCwgYW5kIHRoZSByZWNlaXZlIGJ1ZmZlciB3aWxsIGJlIGZsdXNoZWQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bCggaW50IGZkLCBpbnQgcmVxdWVzdCA9IERNWF9TRVRfRklMVEVSLAorIHN0cnVjdCBkbXhfc2N0X2ZpbHRlcl9wYXJhbXMgJiN4MjJDNjtwYXJhbXMpOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgRE1YX1NFVF9GSUxURVIgZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+c3RydWN0CisgZG14X3NjdF9maWx0ZXJfcGFyYW1zCisgKnBhcmFtczwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+UG9pbnRlciB0byBzdHJ1Y3R1cmUgY29udGFpbmluZyBmaWx0ZXIgcGFyYW1ldGVycy48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJETVhfU0VUX1BFU19GSUxURVIiPgorPHRpdGxlPkRNWF9TRVRfUEVTX0ZJTFRFUjwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIGNhbGwgc2V0cyB1cCBhIFBFUyBmaWx0ZXIgYWNjb3JkaW5nIHRvIHRoZSBwYXJhbWV0ZXJzIHByb3ZpZGVkLiBCeSBhCisgUEVTIGZpbHRlciBpcyBtZWFudCBhIGZpbHRlciB0aGF0IGlzIGJhc2VkIGp1c3Qgb24gdGhlIHBhY2tldCBpZGVudGlmaWVyIChQSUQpLCBpLmUuCisgbm8gUEVTIGhlYWRlciBvciBwYXlsb2FkIGZpbHRlcmluZyBjYXBhYmlsaXR5IGlzIHN1cHBvcnRlZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhlIHRyYW5zcG9ydCBzdHJlYW0gZGVzdGluYXRpb24gZm9yIHRoZSBmaWx0ZXJlZCBvdXRwdXQgbWF5IGJlIHNldC4gQWxzbyB0aGUKKyBQRVMgdHlwZSBtYXkgYmUgc3RhdGVkIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gZS5nLiBkaXJlY3QgYSB2aWRlbyBzdHJlYW0gZGlyZWN0bHkKKyB0byB0aGUgdmlkZW8gZGVjb2Rlci4gRmluYWxseSB0aGVyZSBpcyBhIGZsYWcgZmllbGQgd2hlcmUgaXQgaXMgcG9zc2libGUgdG8gc3RhdGUKKyB3aGV0aGVyIHRoZSBmaWx0ZXJpbmcgb3BlcmF0aW9uIHNob3VsZCBiZSBzdGFydGVkIGltbWVkaWF0ZWx5ICh3aXRob3V0IHdhaXRpbmcKKyBmb3IgYSBETVhfU1RBUlQgaW9jdGwgY2FsbCkuIElmIGEgZmlsdGVyIHdhcyBwcmV2aW91c2x5IHNldC11cCwgdGhpcyBmaWx0ZXIgd2lsbAorIGJlIGNhbmNlbGxlZCwgYW5kIHRoZSByZWNlaXZlIGJ1ZmZlciB3aWxsIGJlIGZsdXNoZWQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bCggaW50IGZkLCBpbnQgcmVxdWVzdCA9IERNWF9TRVRfUEVTX0ZJTFRFUiwKKyBzdHJ1Y3QgZG14X3Blc19maWx0ZXJfcGFyYW1zICYjeDIyQzY7cGFyYW1zKTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIERNWF9TRVRfUEVTX0ZJTFRFUiBmb3IgdGhpcyBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5zdHJ1Y3QKKyBkbXhfcGVzX2ZpbHRlcl9wYXJhbXMKKyAqcGFyYW1zPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5Qb2ludGVyIHRvIHN0cnVjdHVyZSBjb250YWluaW5nIGZpbHRlciBwYXJhbWV0ZXJzLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CismcmV0dXJuLXZhbHVlLWR2YjsKKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RUJVU1k8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgZXJyb3IgY29kZSBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBhcmUgY29uZmxpY3RpbmcKKyByZXF1ZXN0cy4gVGhlcmUgYXJlIGFjdGl2ZSBmaWx0ZXJzIGZpbHRlcmluZyBkYXRhIGZyb20KKyBhbm90aGVyIGlucHV0IHNvdXJjZS4gTWFrZSBzdXJlIHRoYXQgdGhlc2UgZmlsdGVycyBhcmUKKyBzdG9wcGVkIGJlZm9yZSBzdGFydGluZyB0aGlzIGZpbHRlci48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iRE1YX1NFVF9CVUZGRVJfU0laRSI+Cis8dGl0bGU+RE1YX1NFVF9CVUZGRVJfU0laRTwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIGNhbGwgaXMgdXNlZCB0byBzZXQgdGhlIHNpemUgb2YgdGhlIGNpcmN1bGFyIGJ1ZmZlciB1c2VkIGZvciBmaWx0ZXJlZCBkYXRhLgorIFRoZSBkZWZhdWx0IHNpemUgaXMgdHdvIG1heGltdW0gc2l6ZWQgc2VjdGlvbnMsIGkuZS4gaWYgdGhpcyBmdW5jdGlvbiBpcyBub3QgY2FsbGVkCisgYSBidWZmZXIgc2l6ZSBvZiAyICogNDA5NiBieXRlcyB3aWxsIGJlIHVzZWQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bCggaW50IGZkLCBpbnQgcmVxdWVzdCA9CisgRE1YX1NFVF9CVUZGRVJfU0laRSwgdW5zaWduZWQgbG9uZyBzaXplKTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIERNWF9TRVRfQlVGRkVSX1NJWkUgZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+dW5zaWduZWQgbG9uZyBzaXplPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5TaXplIG9mIGNpcmN1bGFyIGJ1ZmZlci48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJETVhfR0VUX0VWRU5UIj4KKzx0aXRsZT5ETVhfR0VUX0VWRU5UPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgY2FsbCByZXR1cm5zIGFuIGV2ZW50IGlmIGF2YWlsYWJsZS4gSWYgYW4gZXZlbnQgaXMgbm90IGF2YWlsYWJsZSwKKyB0aGUgYmVoYXZpb3IgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBkZXZpY2UgaXMgaW4gYmxvY2tpbmcgb3Igbm9uLWJsb2NraW5nCisgbW9kZS4gSW4gdGhlIGxhdHRlciBjYXNlLCB0aGUgY2FsbCBmYWlscyBpbW1lZGlhdGVseSB3aXRoIGVycm5vIHNldCB0bworIEVXT1VMREJMT0NLLiBJbiB0aGUgZm9ybWVyIGNhc2UsIHRoZSBjYWxsIGJsb2NrcyB1bnRpbCBhbiBldmVudCBiZWNvbWVzCisgYXZhaWxhYmxlLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGUgc3RhbmRhcmQgTGludXggcG9sbCgpIGFuZC9vciBzZWxlY3QoKSBzeXN0ZW0gY2FsbHMgY2FuIGJlIHVzZWQgd2l0aCB0aGUKKyBkZXZpY2UgZmlsZSBkZXNjcmlwdG9yIHRvIHdhdGNoIGZvciBuZXcgZXZlbnRzLiBGb3Igc2VsZWN0KCksIHRoZSBmaWxlIGRlc2NyaXB0b3IKKyBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIGV4Y2VwdGZkcyBhcmd1bWVudCwgYW5kIGZvciBwb2xsKCksIFBPTExQUkkgc2hvdWxkCisgYmUgc3BlY2lmaWVkIGFzIHRoZSB3YWtlLXVwIGNvbmRpdGlvbi4gT25seSB0aGUgbGF0ZXN0IGV2ZW50IGZvciBlYWNoIGZpbHRlciBpcworIHNhdmVkLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoIGludCBmZCwgaW50IHJlcXVlc3QgPSBETVhfR0VUX0VWRU5ULAorIHN0cnVjdCBkbXhfZXZlbnQgJiN4MjJDNjtldik7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyBETVhfR0VUX0VWRU5UIGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPnN0cnVjdCBkbXhfZXZlbnQgKmV2PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5Qb2ludGVyIHRvIHRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgZXZlbnQgaXMgdG8gYmUgc3RvcmVkLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CismcmV0dXJuLXZhbHVlLWR2YjsKKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RVdPVUxEQkxPQ0s8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoZXJlIGlzIG5vIGV2ZW50IHBlbmRpbmcsIGFuZCB0aGUgZGV2aWNlIGlzIGluCisgbm9uLWJsb2NraW5nIG1vZGUuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9IkRNWF9HRVRfU1RDIj4KKzx0aXRsZT5ETVhfR0VUX1NUQzwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIGNhbGwgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgc3lzdGVtIHRpbWUgY291bnRlciAod2hpY2ggaXMgZHJpdmVuCisgYnkgYSBQRVMgZmlsdGVyIG9mIHR5cGUgRE1YX1BFU19QQ1IpLiBTb21lIGhhcmR3YXJlIHN1cHBvcnRzIG1vcmUgdGhhbiBvbmUKKyBTVEMsIHNvIHlvdSBtdXN0IHNwZWNpZnkgd2hpY2ggb25lIGJ5IHNldHRpbmcgdGhlIG51bSBmaWVsZCBvZiBzdGMgYmVmb3JlIHRoZSBpb2N0bAorIChyYW5nZSAwLi4ubikuIFRoZSByZXN1bHQgaXMgcmV0dXJuZWQgaW4gZm9ybSBvZiBhIHJhdGlvIHdpdGggYSA2NCBiaXQgbnVtZXJhdG9yCisgYW5kIGEgMzIgYml0IGRlbm9taW5hdG9yLCBzbyB0aGUgcmVhbCA5MGtIeiBTVEMgdmFsdWUgaXMgc3RjLSYjeDAwM0U7c3RjIC8KKyBzdGMtJiN4MDAzRTtiYXNlCisgLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoIGludCBmZCwgaW50IHJlcXVlc3QgPSBETVhfR0VUX1NUQywgc3RydWN0CisgZG14X3N0YyAmI3gyMkM2O3N0Yyk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyBETVhfR0VUX1NUQyBmb3IgdGhpcyBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5zdHJ1Y3QgZG14X3N0YyAqc3RjPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5Qb2ludGVyIHRvIHRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgc3RjIGlzIHRvIGJlIHN0b3JlZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVJTlZBTDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+SW52YWxpZCBzdGMgbnVtYmVyLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CisgPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iRE1YX0dFVF9QRVNfUElEUyIKK3JvbGU9InN1YnNlY3Rpb24iPjx0aXRsZT5ETVhfR0VUX1BFU19QSURTPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgaXMgdW5kb2N1bWVudGVkLiBEb2N1bWVudGF0aW9uIGlzIHdlbGNvbWUuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bChmZCwgaW50IHJlcXVlc3QgPSBETVhfR0VUX1BFU19QSURTLAorIF9fdTE2WzVdKTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIERNWF9HRVRfUEVTX1BJRFMgZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+X191MTZbNV0KKzwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VW5kb2N1bWVudGVkLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CismcmV0dXJuLXZhbHVlLWR2YjsKKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9IkRNWF9HRVRfQ0FQUyIKK3JvbGU9InN1YnNlY3Rpb24iPjx0aXRsZT5ETVhfR0VUX0NBUFM8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBpcyB1bmRvY3VtZW50ZWQuIERvY3VtZW50YXRpb24gaXMgd2VsY29tZS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGlvY3RsKGZkLCBpbnQgcmVxdWVzdCA9IERNWF9HRVRfQ0FQUywKKyBkbXhfY2Fwc190ICopOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgRE1YX0dFVF9DQVBTIGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmRteF9jYXBzX3QgKgorPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5VbmRvY3VtZW50ZWQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iRE1YX1NFVF9TT1VSQ0UiCityb2xlPSJzdWJzZWN0aW9uIj48dGl0bGU+RE1YX1NFVF9TT1VSQ0U8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBpcyB1bmRvY3VtZW50ZWQuIERvY3VtZW50YXRpb24gaXMgd2VsY29tZS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGlvY3RsKGZkLCBpbnQgcmVxdWVzdCA9IERNWF9TRVRfU09VUkNFLAorIGRteF9zb3VyY2VfdCAqKTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIERNWF9TRVRfU09VUkNFIGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmRteF9zb3VyY2VfdCAqCis8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlVuZG9jdW1lbnRlZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJETVhfQUREX1BJRCIKK3JvbGU9InN1YnNlY3Rpb24iPjx0aXRsZT5ETVhfQUREX1BJRDwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIGNhbGwgYWxsb3dzIHRvIGFkZCBtdWx0aXBsZSBQSURzIHRvIGEgdHJhbnNwb3J0IHN0cmVhbSBmaWx0ZXIKK3ByZXZpb3VzbHkgc2V0IHVwIHdpdGggRE1YX1NFVF9QRVNfRklMVEVSIGFuZCBvdXRwdXQgZXF1YWwgdG8gRE1YX09VVF9UU0RFTVVYX1RBUC4KKzwvcGFyYT48L2VudHJ5Pjwvcm93Pjxyb3c+PGVudHJ5IGFsaWduPSJjaGFyIj48cGFyYT4KK0l0IGlzIHVzZWQgYnkgcmVhZGVycyBvZiAvZGV2L2R2Yi9hZGFwdGVyWC9kZW11eFkuCis8L3BhcmE+PC9lbnRyeT48L3Jvdz48cm93PjxlbnRyeSBhbGlnbj0iY2hhciI+PHBhcmE+CitJdCBtYXkgYmUgY2FsbGVkIGF0IGFueSB0aW1lLCBpLmUuIGJlZm9yZSBvciBhZnRlciB0aGUgZmlyc3QgZmlsdGVyIG9uIHRoZQorc2hhcmVkIGZpbGUgZGVzY3JpcHRvciB3YXMgc3RhcnRlZC4gSXQgbWFrZXMgaXQgcG9zc2libGUgdG8gcmVjb3JkIG11bHRpcGxlCitzZXJ2aWNlcyB3aXRob3V0IHRoZSBuZWVkIHRvIGRlLW11bHRpcGxleCBvciByZS1tdWx0aXBsZXggVFMgcGFja2V0cy48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGlvY3RsKGZkLCBpbnQgcmVxdWVzdCA9IERNWF9BRERfUElELAorIF9fdTE2ICopOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgRE1YX0FERF9QSUQgZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+X191MTYgKgorPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5QSUQgbnVtYmVyIHRvIGJlIGZpbHRlcmVkLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CismcmV0dXJuLXZhbHVlLWR2YjsKKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9IkRNWF9SRU1PVkVfUElEIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPkRNWF9SRU1PVkVfUElEPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgY2FsbCBhbGxvd3MgdG8gcmVtb3ZlIGEgUElEIHdoZW4gbXVsdGlwbGUgUElEcyBhcmUgc2V0IG9uIGEKK3RyYW5zcG9ydCBzdHJlYW0gZmlsdGVyLCBlLiBnLiBhIGZpbHRlciBwcmV2aW91c2x5IHNldCB1cCB3aXRoIG91dHB1dCBlcXVhbCB0bworRE1YX09VVF9UU0RFTVVYX1RBUCwgY3JlYXRlZCB2aWEgZWl0aGVyIERNWF9TRVRfUEVTX0ZJTFRFUiBvciBETVhfQUREX1BJRC4KKzwvcGFyYT48L2VudHJ5Pjwvcm93Pjxyb3c+PGVudHJ5IGFsaWduPSJjaGFyIj48cGFyYT4KK0l0IGlzIHVzZWQgYnkgcmVhZGVycyBvZiAvZGV2L2R2Yi9hZGFwdGVyWC9kZW11eFkuCis8L3BhcmE+PC9lbnRyeT48L3Jvdz48cm93PjxlbnRyeSBhbGlnbj0iY2hhciI+PHBhcmE+CitJdCBtYXkgYmUgY2FsbGVkIGF0IGFueSB0aW1lLCBpLmUuIGJlZm9yZSBvciBhZnRlciB0aGUgZmlyc3QgZmlsdGVyIG9uIHRoZQorc2hhcmVkIGZpbGUgZGVzY3JpcHRvciB3YXMgc3RhcnRlZC4gSXQgbWFrZXMgaXQgcG9zc2libGUgdG8gcmVjb3JkIG11bHRpcGxlCitzZXJ2aWNlcyB3aXRob3V0IHRoZSBuZWVkIHRvIGRlLW11bHRpcGxleCBvciByZS1tdWx0aXBsZXggVFMgcGFja2V0cy48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGlvY3RsKGZkLCBpbnQgcmVxdWVzdCA9IERNWF9SRU1PVkVfUElELAorIF9fdTE2ICopOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgRE1YX1JFTU9WRV9QSUQgZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+X191MTYgKgorPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5QSUQgb2YgdGhlIFBFUyBmaWx0ZXIgdG8gYmUgcmVtb3ZlZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7Cis8L3NlY3Rpb24+CisKKworPC9zZWN0aW9uPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2Yi9kdmJhcGkueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2Yi9kdmJhcGkueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1NzY0ODEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL2R2YmFwaS54bWwKQEAgLTAsMCArMSwxNTYgQEAKKzxwYXJ0aW5mbz4KKzxhdXRob3Jncm91cD4KKzxhdXRob3I+Cis8Zmlyc3RuYW1lPlJhbHBoPC9maXJzdG5hbWU+Cis8c3VybmFtZT5NZXR6bGVyPC9zdXJuYW1lPgorPG90aGVybmFtZSByb2xlPSJtaSI+Si4gSy48L290aGVybmFtZT4KKzxhZmZpbGlhdGlvbj48YWRkcmVzcz48ZW1haWw+cmprbUBtZXR6bGVyYnJvcy5kZTwvZW1haWw+PC9hZGRyZXNzPjwvYWZmaWxpYXRpb24+Cis8L2F1dGhvcj4KKzxhdXRob3I+Cis8Zmlyc3RuYW1lPk1hcmN1czwvZmlyc3RuYW1lPgorPHN1cm5hbWU+TWV0emxlcjwvc3VybmFtZT4KKzxvdGhlcm5hbWUgcm9sZT0ibWkiPk8uIEMuPC9vdGhlcm5hbWU+Cis8YWZmaWxpYXRpb24+PGFkZHJlc3M+PGVtYWlsPnJqa21AbWV0emxlcmJyb3MuZGU8L2VtYWlsPjwvYWRkcmVzcz48L2FmZmlsaWF0aW9uPgorPC9hdXRob3I+Cis8L2F1dGhvcmdyb3VwPgorPGF1dGhvcmdyb3VwPgorPGF1dGhvcj4KKzxmaXJzdG5hbWU+TWF1cm88L2ZpcnN0bmFtZT4KKzxvdGhlcm5hbWUgcm9sZT0ibWkiPkNhcnZhbGhvPC9vdGhlcm5hbWU+Cis8c3VybmFtZT5DaGVoYWI8L3N1cm5hbWU+Cis8YWZmaWxpYXRpb24+PGFkZHJlc3M+PGVtYWlsPm0uY2hlaGFiQHNhbXN1bmcuY29tPC9lbWFpbD48L2FkZHJlc3M+PC9hZmZpbGlhdGlvbj4KKzxjb250cmliPlBvcnRlZCBkb2N1bWVudCB0byBEb2Nib29rIFhNTC48L2NvbnRyaWI+Cis8L2F1dGhvcj4KKzwvYXV0aG9yZ3JvdXA+Cis8Y29weXJpZ2h0PgorCTx5ZWFyPjIwMDI8L3llYXI+CisJPHllYXI+MjAwMzwveWVhcj4KKwk8aG9sZGVyPkNvbnZlcmdlbmNlIEdtYkg8L2hvbGRlcj4KKzwvY29weXJpZ2h0PgorPGNvcHlyaWdodD4KKwk8eWVhcj4yMDA5LTIwMTU8L3llYXI+CisJPGhvbGRlcj5NYXVybyBDYXJ2YWxobyBDaGVoYWI8L2hvbGRlcj4KKzwvY29weXJpZ2h0PgorCis8cmV2aGlzdG9yeT4KKzwhLS0gUHV0IGRvY3VtZW50IHJldmlzaW9ucyBoZXJlLCBuZXdlc3QgZmlyc3QuIC0tPgorPHJldmlzaW9uPgorCTxyZXZudW1iZXI+Mi4xLjA8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDE1LTA1LTI5PC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5tY2M8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+CisJCURvY0Jvb2sgaW1wcm92ZW1lbnRzIGFuZCBjbGVhbnVwcywgaW4gb3JkZXIgdG8gZG9jdW1lbnQgdGhlCisJCXN5c3RlbSBjYWxscyBvbiBhIG1vcmUgc3RhbmRhcmQgd2F5IGFuZCBwcm92aWRlIG1vcmUgZGVzY3JpcHRpb24KKwkJYWJvdXQgdGhlIGN1cnJlbnQgRFZCIEFQSS4KKwk8L3JldnJlbWFyaz4KKzwvcmV2aXNpb24+Cis8cmV2aXNpb24+CisJPHJldm51bWJlcj4yLjAuNDwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMTEtMDUtMDY8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPm1jYzwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz4KKwkJQWRkIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgRFZCIEFQSXY1LCBiZXR0ZXIgZGVzY3JpYmluZyB0aGUgZnJvbnRlbmQgR0VUL1NFVCBwcm9wcyBpb2N0bCdzLgorCTwvcmV2cmVtYXJrPgorPC9yZXZpc2lvbj4KKzxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjIuMC4zPC9yZXZudW1iZXI+CisJPGRhdGU+MjAxMC0wNy0wMzwvZGF0ZT4KKwk8YXV0aG9yaW5pdGlhbHM+bWNjPC9hdXRob3Jpbml0aWFscz4KKwk8cmV2cmVtYXJrPgorCQlBZGQgc29tZSBmcm9udGVuZCBjYXBhYmlsaXRpZXMgZmxhZ3MsIHByZXNlbnQgb24ga2VybmVsLCBidXQgbWlzc2luZyBhdCB0aGUgc3BlY3MuCisJPC9yZXZyZW1hcms+Cis8L3JldmlzaW9uPgorPHJldmlzaW9uPgorCTxyZXZudW1iZXI+Mi4wLjI8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDA5LTEwLTI1PC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5tY2M8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+CisJCWRvY3VtZW50cyBGRV9TRVRfRlJPTlRFTkRfVFVORV9NT0RFIGFuZCBGRV9ESVNIRVRXT1JLX1NFTkRfTEVHQUNZX0NNRCBpb2N0bHMuCisJPC9yZXZyZW1hcms+Cis8L3JldmlzaW9uPgorPHJldmlzaW9uPgorPHJldm51bWJlcj4yLjAuMTwvcmV2bnVtYmVyPgorPGRhdGU+MjAwOS0wOS0xNjwvZGF0ZT4KKzxhdXRob3Jpbml0aWFscz5tY2M8L2F1dGhvcmluaXRpYWxzPgorPHJldnJlbWFyaz4KK0FkZGVkIElTREItVCB0ZXN0IG9yaWdpbmFsbHkgd3JpdHRlbiBieSBQYXRyaWNrIEJvZXR0Y2hlcgorPC9yZXZyZW1hcms+Cis8L3JldmlzaW9uPgorPHJldmlzaW9uPgorPHJldm51bWJlcj4yLjAuMDwvcmV2bnVtYmVyPgorPGRhdGU+MjAwOS0wOS0wNjwvZGF0ZT4KKzxhdXRob3Jpbml0aWFscz5tY2M8L2F1dGhvcmluaXRpYWxzPgorPHJldnJlbWFyaz5Db252ZXJzaW9uIGZyb20gTGFUZXggdG8gRG9jQm9vayBYTUwuIFRoZQorCWNvbnRlbnRzIGlzIHRoZSBzYW1lIGFzIHRoZSBvcmlnaW5hbCBMYVRleCB2ZXJzaW9uLjwvcmV2cmVtYXJrPgorPC9yZXZpc2lvbj4KKzxyZXZpc2lvbj4KKzxyZXZudW1iZXI+MS4wLjA8L3Jldm51bWJlcj4KKzxkYXRlPjIwMDMtMDctMjQ8L2RhdGU+Cis8YXV0aG9yaW5pdGlhbHM+cmprbTwvYXV0aG9yaW5pdGlhbHM+Cis8cmV2cmVtYXJrPkluaXRpYWwgcmV2aXNpb24gb24gTGFURVguPC9yZXZyZW1hcms+Cis8L3JldmlzaW9uPgorPC9yZXZoaXN0b3J5PgorPC9wYXJ0aW5mbz4KKworCis8dGl0bGU+TElOVVggRFZCIEFQSTwvdGl0bGU+Cis8c3VidGl0bGU+VmVyc2lvbiA1LjEwPC9zdWJ0aXRsZT4KKzwhLS0gQUREIFRIRSBDSEFQVEVSUyBIRVJFIC0tPgorICA8Y2hhcHRlciBpZD0iZHZiX2ludHJvZHV0aW9uIj4KKyAgICAmc3ViLWludHJvOworICA8L2NoYXB0ZXI+CisgIDxjaGFwdGVyIGlkPSJkdmJfZnJvbnRlbmQiPgorICAgICZzdWItZnJvbnRlbmQ7CisgIDwvY2hhcHRlcj4KKyAgPGNoYXB0ZXIgaWQ9ImR2Yl9kZW11eCI+CisgICAgJnN1Yi1kZW11eDsKKyAgPC9jaGFwdGVyPgorICA8Y2hhcHRlciBpZD0iZHZiX2NhIj4KKyAgICAmc3ViLWNhOworICA8L2NoYXB0ZXI+CisgIDxjaGFwdGVyIGlkPSJuZXQiPgorICAgICZzdWItbmV0OworICA8L2NoYXB0ZXI+CisgIDxjaGFwdGVyIGlkPSJsZWdhY3lfZHZiX2FwaXMiPgorICA8dGl0bGU+RFZCIERlcHJlY2F0ZWQgQVBJczwvdGl0bGU+CisgIDxwYXJhPlRoZSBBUElzIGRlc2NyaWJlZCBoZXJlIGFyZSBrZXB0IG9ubHkgZm9yIGhpc3RvcmljYWwgcmVhc29ucy4gVGhlcmUncworICAgICAganVzdCBvbmUgZHJpdmVyIGZvciBhIHZlcnkgbGVnYWN5IGhhcmR3YXJlIHRoYXQgdXNlcyB0aGlzIEFQSS4gTm8KKyAgICAgIG1vZGVybiBkcml2ZXJzIHNob3VsZCB1c2UgaXQuIEluc3RlYWQsIGF1ZGlvIGFuZCB2aWRlbyBzaG91bGQgYmUgdXNpbmcKKyAgICAgIHRoZSBWNEwyIGFuZCBBTFNBIEFQSXMsIGFuZCB0aGUgcGlwZWxpbmVzIHNob3VsZCBiZSBzZXQgdXNpbmcgdGhlCisgICAgICBNZWRpYSBDb250cm9sbGVyIEFQSTwvcGFyYT4KKyAgICA8c2VjdGlvbiBpZD0iZHZiX3ZpZGVvIj4KKwkmc3ViLXZpZGVvOworICAgIDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbiBpZD0iZHZiX2F1ZGlvIj4KKwkmc3ViLWF1ZGlvOworICAgIDwvc2VjdGlvbj4KKyAgPC9jaGFwdGVyPgorICA8Y2hhcHRlciBpZD0iZHZiX2V4YW1wbGVzIj4KKyAgICAmc3ViLWV4YW1wbGVzOworICA8L2NoYXB0ZXI+Cis8IS0tIEVORCBPRiBDSEFQVEVSUyAtLT4KKyAgPGFwcGVuZGl4IGlkPSJhdWRpb19oIj4KKyAgICA8dGl0bGU+RFZCIEF1ZGlvIEhlYWRlciBGaWxlPC90aXRsZT4KKyAgICAmc3ViLWF1ZGlvLWg7CisgIDwvYXBwZW5kaXg+CisgIDxhcHBlbmRpeCBpZD0iY2FfaCI+CisgICAgPHRpdGxlPkRWQiBDb25kaXRpb25hbCBBY2Nlc3MgSGVhZGVyIEZpbGU8L3RpdGxlPgorICAgICZzdWItY2EtaDsKKyAgPC9hcHBlbmRpeD4KKyAgPGFwcGVuZGl4IGlkPSJkbXhfaCI+CisgICAgPHRpdGxlPkRWQiBEZW11eCBIZWFkZXIgRmlsZTwvdGl0bGU+CisgICAgJnN1Yi1kbXgtaDsKKyAgPC9hcHBlbmRpeD4KKyAgPGFwcGVuZGl4IGlkPSJmcm9udGVuZF9oIj4KKyAgICA8dGl0bGU+RFZCIEZyb250ZW5kIEhlYWRlciBGaWxlPC90aXRsZT4KKyAgICAmc3ViLWZyb250ZW5kLWg7CisgIDwvYXBwZW5kaXg+CisgIDxhcHBlbmRpeCBpZD0ibmV0X2giPgorICAgIDx0aXRsZT5EVkIgTmV0d29yayBIZWFkZXIgRmlsZTwvdGl0bGU+CisgICAgJnN1Yi1uZXQtaDsKKyAgPC9hcHBlbmRpeD4KKyAgPGFwcGVuZGl4IGlkPSJ2aWRlb19oIj4KKyAgICA8dGl0bGU+RFZCIFZpZGVvIEhlYWRlciBGaWxlPC90aXRsZT4KKyAgICAmc3ViLXZpZGVvLWg7CisgIDwvYXBwZW5kaXg+CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvZHZicHJvcGVydHkueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2Yi9kdmJwcm9wZXJ0eS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgyMjdkNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvZHZicHJvcGVydHkueG1sCkBAIC0wLDAgKzEsMTY4MCBAQAorPHNlY3Rpb24gaWQ9ImZyb250ZW5kLXByb3BlcnRpZXMiPgorPHRpdGxlPkRWQiBGcm9udGVuZCBwcm9wZXJ0aWVzPC90aXRsZT4KKzxwYXJhPlR1bmluZyBpbnRvIGEgRGlnaXRhbCBUViBwaHlzaWNhbCBjaGFubmVsIGFuZCBzdGFydGluZyBkZWNvZGluZyBpdAorICAgIHJlcXVpcmVzIGNoYW5naW5nIGEgc2V0IG9mIHBhcmFtZXRlcnMsIGluIG9yZGVyIHRvIGNvbnRyb2wgdGhlCisgICAgdHVuZXIsIHRoZSBkZW1vZHVsYXRvciwgdGhlIExpbmVhciBMb3ctbm9pc2UgQW1wbGlmaWVyIChMTkEpIGFuZCB0byBzZXQgdGhlCisgICAgYW50ZW5uYSBzdWJzeXN0ZW0gdmlhIFNhdGVsbGl0ZSBFcXVpcG1lbnQgQ29udHJvbCAoU0VDKSwgb24gc2F0ZWxsaXRlCisgICAgc3lzdGVtcy4gVGhlIGFjdHVhbCBwYXJhbWV0ZXJzIGFyZSBzcGVjaWZpYyB0byBlYWNoIHBhcnRpY3VsYXIgZGlnaXRhbAorICAgIFRWIHN0YW5kYXJkcywgYW5kIG1heSBjaGFuZ2UgYXMgdGhlIGRpZ2l0YWwgVFYgc3BlY3MgZXZvbHZlcy48L3BhcmE+Cis8cGFyYT5JbiB0aGUgcGFzdCwgdGhlIHN0cmF0ZWd5IHVzZWQgd2FzIHRvIGhhdmUgYSB1bmlvbiB3aXRoIHRoZSBwYXJhbWV0ZXJzCisgICAgbmVlZGVkIHRvIHR1bmUgZm9yIERWQi1TLCBEVkItQywgRFZCLVQgYW5kIEFUU0MgZGVsaXZlcnkgc3lzdGVtcyBncm91cGVkCisgICAgdGhlcmUuIFRoZSBwcm9ibGVtIGlzIHRoYXQsIGFzIHRoZSBzZWNvbmQgZ2VuZXJhdGlvbiBzdGFuZGFyZHMgYXBwZWFyZWQsCisgICAgdGhvc2Ugc3RydWN0cyB3ZXJlIG5vdCBiaWcgZW5vdWdoIHRvIGNvbnRhaW4gdGhlIGFkZGl0aW9uYWwgcGFyYW1ldGVycy4KKyAgICBBbHNvLCB0aGUgdW5pb24gZGlkbid0IGhhdmUgYW55IHNwYWNlIGxlZnQgdG8gYmUgZXhwYW5kZWQgd2l0aG91dCBicmVha2luZworICAgIHVzZXJzcGFjZS4gU28sIHRoZSBkZWNpc2lvbiB3YXMgdG8gZGVwcmVjYXRlIHRoZSBsZWdhY3kgdW5pb24vc3RydWN0IGJhc2VkCisgICAgYXBwcm9hY2gsIGluIGZhdm9yIG9mIGEgcHJvcGVydGllcyBzZXQgYXBwcm9hY2guPC9wYXJhPgorCis8cGFyYT5OT1RFOiBvbiBMaW51eCBEVkIgQVBJIHZlcnNpb24gMywgc2V0dGluZyBhIGZyb250ZW5kIHdlcmUgZG9uZSB2aWEKKyAgICA8bGluayBsaW5rZW5kPSJkdmItZnJvbnRlbmQtcGFyYW1ldGVycyI+c3RydWN0ICA8Y29uc3RhbnQ+ZHZiX2Zyb250ZW5kX3BhcmFtZXRlcnM8L2NvbnN0YW50PjwvbGluaz4uCisgICAgVGhpcyBnb3QgcmVwbGFjZWQgb24gdmVyc2lvbiA1IChhbHNvIGNhbGxlZCAiUzJBUEkiLCBhcyB0aGlzIEFQSSB3ZXJlCisgICAgYWRkZWQgb3JpZ2luYWxseV9lbmFibGVkIHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgRFZCLVMyKSwgYmVjYXVzZSB0aGUgb2xkCisgICAgQVBJIGhhcyBhIHZlcnkgbGltaXRlZCBzdXBwb3J0IHRvIG5ldyBzdGFuZGFyZHMgYW5kIG5ldyBoYXJkd2FyZS4gVGhpcworICAgIHNlY3Rpb24gZGVzY3JpYmVzIHRoZSBuZXcgYW5kIHJlY29tbWVuZGVkIHdheSB0byBzZXQgdGhlIGZyb250ZW5kLCB3aXRoCisgICAgc3VwcHBvcnRzIGFsbCBkaWdpdGFsIFRWIGRlbGl2ZXJ5IHN5c3RlbXMuPC9wYXJhPgorCis8cGFyYT5FeGFtcGxlOiB3aXRoIHRoZSBwcm9wZXJ0aWVzIGJhc2VkIGFwcHJvYWNoLCBpbiBvcmRlciB0byBzZXQgdGhlIHR1bmVyCisgICAgdG8gYSBEVkItQyBjaGFubmVsIGF0IDY1MSBrSHosIG1vZHVsYXRlZCB3aXRoIDI1Ni1RQU0sIEZFQyAzLzQgYW5kIHN5bWJvbAorICAgIHJhdGUgb2YgNS4yMTcgTWJhdWRzLCB0aG9zZSBwcm9wZXJ0aWVzIHNob3VsZCBiZSBzZW50IHRvCisgICAgPGxpbmsgbGlua2VuZD0iRkVfR0VUX1BST1BFUlRZIj48Y29uc3RhbnQ+RkVfU0VUX1BST1BFUlRZPC9jb25zdGFudD48L2xpbms+IGlvY3RsOjwvcGFyYT4KKyAgICA8aXRlbWl6ZWRsaXN0PgorCTxsaXN0aXRlbT48cGFyYT4mRFRWLURFTElWRVJZLVNZU1RFTTsgPSBTWVNfRFZCQ19BTk5FWF9BPC9wYXJhPjwvbGlzdGl0ZW0+CisJPGxpc3RpdGVtPjxwYXJhPiZEVFYtRlJFUVVFTkNZOyA9IDY1MTAwMDAwMDwvcGFyYT48L2xpc3RpdGVtPgorCTxsaXN0aXRlbT48cGFyYT4mRFRWLU1PRFVMQVRJT047ID0gUUFNXzI1NjwvcGFyYT48L2xpc3RpdGVtPgorCTxsaXN0aXRlbT48cGFyYT4mRFRWLUlOVkVSU0lPTjsgPSBJTlZFUlNJT05fQVVUTzwvcGFyYT48L2xpc3RpdGVtPgorCTxsaXN0aXRlbT48cGFyYT4mRFRWLVNZTUJPTC1SQVRFOyA9IDUyMTcwMDA8L3BhcmE+PC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+PHBhcmE+JkRUVi1JTk5FUi1GRUM7ID0gRkVDXzNfNDwvcGFyYT48L2xpc3RpdGVtPgorCTxsaXN0aXRlbT48cGFyYT4mRFRWLVRVTkU7PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgPC9pdGVtaXplZGxpc3Q+CisKKzxwYXJhPlRoZSBjb2RlIHRoYXQgd291bGQgZG8gdGhlIGFib3ZlIGlzOjwvcGFyYT4KKzxwcm9ncmFtbGlzdGluZz4KKyNpbmNsdWRlICZsdDtzdGRpby5oJmd0OworI2luY2x1ZGUgJmx0O2ZjbnRsLmgmZ3Q7CisjaW5jbHVkZSAmbHQ7c3lzL2lvY3RsLmgmZ3Q7CisjaW5jbHVkZSAmbHQ7bGludXgvZHZiL2Zyb250ZW5kLmgmZ3Q7CisKK3N0YXRpYyBzdHJ1Y3QgZHR2X3Byb3BlcnR5IHByb3BzW10gPSB7CisJeyAuY21kID0gRFRWX0RFTElWRVJZX1NZU1RFTSwgLnUuZGF0YSA9IFNZU19EVkJDX0FOTkVYX0EgfSwKKwl7IC5jbWQgPSBEVFZfRlJFUVVFTkNZLCAgICAgICAudS5kYXRhID0gNjUxMDAwMDAwIH0sCisJeyAuY21kID0gRFRWX01PRFVMQVRJT04sICAgICAgLnUuZGF0YSA9IFFBTV8yNTYgfSwKKwl7IC5jbWQgPSBEVFZfSU5WRVJTSU9OLCAgICAgICAudS5kYXRhID0gSU5WRVJTSU9OX0FVVE8gfSwKKwl7IC5jbWQgPSBEVFZfU1lNQk9MX1JBVEUsICAgICAudS5kYXRhID0gNTIxNzAwMCB9LAorCXsgLmNtZCA9IERUVl9JTk5FUl9GRUMsICAgICAgIC51LmRhdGEgPSBGRUNfM180IH0sCisJeyAuY21kID0gRFRWX1RVTkUgfQorfTsKKworc3RhdGljIHN0cnVjdCBkdHZfcHJvcGVydGllcyBkdHZfcHJvcCA9IHsKKwkubnVtID0gNiwgLnByb3BzID0gcHJvcHMKK307CisKK2ludCBtYWluKHZvaWQpCit7CisJaW50IGZkID0gb3BlbigiL2Rldi9kdmIvYWRhcHRlcjAvZnJvbnRlbmQwIiwgT19SRFdSKTsKKworCWlmICghZmQpIHsKKwkgICAgcGVycm9yICgib3BlbiIpOworCSAgICByZXR1cm4gLTE7CisJfQorCWlmIChpb2N0bChmZCwgRkVfU0VUX1BST1BFUlRZLCAmYW1wO2R0dl9wcm9wKSA9PSAtMSkgeworCQlwZXJyb3IoImlvY3RsIik7CisJCXJldHVybiAtMTsKKwl9CisJcHJpbnRmKCJGcm9udGVuZCBzZXRcbiIpOworCXJldHVybiAwOworfQorPC9wcm9ncmFtbGlzdGluZz4KKworPHBhcmE+Tk9URTogV2hpbGUgaXQgaXMgcG9zc2libGUgdG8gZGlyZWN0bHkgY2FsbCB0aGUgS2VybmVsIGNvZGUgbGlrZSB0aGUKKyAgICBhYm92ZSBleGFtcGxlLCBpdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCB0byB1c2UKKyAgICA8dWxpbmsgdXJsPSJodHRwOi8vbGludXh0di5vcmcvZG9jcy9saWJkdmJ2NS9pbmRleC5odG1sIj5saWJkdmJ2NTwvdWxpbms+LAorICAgIGFzIGl0IHByb3ZpZGVzIGFic3RyYWN0aW9uIHRvIHdvcmsgd2l0aCB0aGUgc3VwcG9ydGVkIGRpZ2l0YWwgVFYgc3RhbmRhcmRzCisgICAgYW5kIHByb3ZpZGVzIG1ldGhvZHMgZm9yIHVzdWFsIG9wZXJhdGlvbnMgbGlrZSBwcm9ncmFtIHNjYW5uaW5nIGFuZCB0bworICAgIHJlYWQvd3JpdGUgY2hhbm5lbCBkZXNjcmlwdG9yIGZpbGVzLjwvcGFyYT4KKworPHNlY3Rpb24gaWQ9ImR0di1zdGF0cyI+Cis8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPmR0dl9zdGF0czwvc3RydWN0bmFtZT48L3RpdGxlPgorPHByb2dyYW1saXN0aW5nPgorc3RydWN0IGR0dl9zdGF0cyB7CisJX191OCBzY2FsZTsJLyogZW51bSBmZWNhcF9zY2FsZV9wYXJhbXMgdHlwZSAqLworCXVuaW9uIHsKKwkJX191NjQgdXZhbHVlOwkvKiBmb3IgY291bnRlcnMgYW5kIHJlbGF0aXZlIHNjYWxlcyAqLworCQlfX3M2NCBzdmFsdWU7CS8qIGZvciAxLzEwMDAgZEIgbWVhc3VyZXMgKi8KKwl9OworfSBfX3BhY2tlZDsKKzwvcHJvZ3JhbWxpc3Rpbmc+Cis8L3NlY3Rpb24+Cis8c2VjdGlvbiBpZD0iZHR2LWZlLXN0YXRzIj4KKzx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+ZHR2X2ZlX3N0YXRzPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+Cis8cHJvZ3JhbWxpc3Rpbmc+CisjZGVmaW5lIE1BWF9EVFZfU1RBVFMgICA0CisKK3N0cnVjdCBkdHZfZmVfc3RhdHMgeworCV9fdTggbGVuOworCSZkdHYtc3RhdHM7IHN0YXRbTUFYX0RUVl9TVEFUU107Cit9IF9fcGFja2VkOworPC9wcm9ncmFtbGlzdGluZz4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9ImR0di1wcm9wZXJ0eSI+Cis8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPmR0dl9wcm9wZXJ0eTwvc3RydWN0bmFtZT48L3RpdGxlPgorPHByb2dyYW1saXN0aW5nPgorLyogUmVzZXJ2ZWQgZmllbGRzIHNob3VsZCBiZSBzZXQgdG8gMCAqLworCitzdHJ1Y3QgZHR2X3Byb3BlcnR5IHsKKwlfX3UzMiBjbWQ7CisJX191MzIgcmVzZXJ2ZWRbM107CisJdW5pb24geworCQlfX3UzMiBkYXRhOworCQkmZHR2LWZlLXN0YXRzOyBzdDsKKwkJc3RydWN0IHsKKwkJCV9fdTggZGF0YVszMl07CisJCQlfX3UzMiBsZW47CisJCQlfX3UzMiByZXNlcnZlZDFbM107CisJCQl2b2lkICpyZXNlcnZlZDI7CisJCX0gYnVmZmVyOworCX0gdTsKKwlpbnQgcmVzdWx0OworfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKKy8qIG51bSBvZiBwcm9wZXJ0aWVzIGNhbm5vdCBleGNlZWQgRFRWX0lPQ1RMX01BWF9NU0dTIHBlciBpb2N0bCAqLworI2RlZmluZSBEVFZfSU9DVExfTUFYX01TR1MgNjQKKzwvcHJvZ3JhbWxpc3Rpbmc+Cis8L3NlY3Rpb24+Cis8c2VjdGlvbiBpZD0iZHR2LXByb3BlcnRpZXMiPgorPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT5kdHZfcHJvcGVydGllczwvc3RydWN0bmFtZT48L3RpdGxlPgorPHByb2dyYW1saXN0aW5nPgorc3RydWN0IGR0dl9wcm9wZXJ0aWVzIHsKKwlfX3UzMiBudW07CisJJmR0di1wcm9wZXJ0eTsgKnByb3BzOworfTsKKzwvcHJvZ3JhbWxpc3Rpbmc+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uPgorCTx0aXRsZT5Qcm9wZXJ0eSB0eXBlczwvdGl0bGU+Cis8cGFyYT4KK09uIDxsaW5rIGxpbmtlbmQ9IkZFX0dFVF9QUk9QRVJUWSI+RkVfR0VUX1BST1BFUlRZIGFuZCBGRV9TRVRfUFJPUEVSVFk8L2xpbms+LAordGhlIGFjdHVhbCBhY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgZHR2X3Byb3BlcnR5IGNtZC9kYXRhIHBhaXJzLiBXaXRoIG9uZSBzaW5nbGUgaW9jdGwsIGlzIHBvc3NpYmxlIHRvCitnZXQvc2V0IHVwIHRvIDY0IHByb3BlcnRpZXMuIFRoZSBhY3R1YWwgbWVhbmluZyBvZiBlYWNoIHByb3BlcnR5IGlzIGRlc2NyaWJlZCBvbiB0aGUgbmV4dCBzZWN0aW9ucy4KKzwvcGFyYT4KKworPHBhcmE+VGhlIGF2YWlsYWJsZSBmcm9udGVuZCBwcm9wZXJ0eSB0eXBlcyBhcmUgc2hvd24gb24gdGhlIG5leHQgc2VjdGlvbi48L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJmZV9wcm9wZXJ0eV9wYXJhbWV0ZXJzIj4KKwk8dGl0bGU+RGlnaXRhbCBUViBwcm9wZXJ0eSBwYXJhbWV0ZXJzPC90aXRsZT4KKwk8c2VjdGlvbiBpZD0iRFRWLVVOREVGSU5FRCI+CisJPHRpdGxlPjxjb25zdGFudD5EVFZfVU5ERUZJTkVEPC9jb25zdGFudD48L3RpdGxlPgorCTxwYXJhPlVzZWQgaW50ZXJuYWxseS4gQSBHRVQvU0VUIG9wZXJhdGlvbiBmb3IgaXQgd29uJ3QgY2hhbmdlIG9yIHJldHVybiBhbnl0aGluZy48L3BhcmE+CisJPC9zZWN0aW9uPgorCTxzZWN0aW9uIGlkPSJEVFYtVFVORSI+CisJPHRpdGxlPjxjb25zdGFudD5EVFZfVFVORTwvY29uc3RhbnQ+PC90aXRsZT4KKwk8cGFyYT5JbnRlcnByZXQgdGhlIGNhY2hlIG9mIGRhdGEsIGJ1aWxkIGVpdGhlciBhIHRyYWRpdGlvbmFsIGZyb250ZW5kIHR1bmVyZXF1ZXN0IHNvIHdlIGNhbiBwYXNzIHZhbGlkYXRpb24gaW4gdGhlIDxjb25zdGFudD5GRV9TRVRfRlJPTlRFTkQ8L2NvbnN0YW50PiBpb2N0bC48L3BhcmE+CisJPC9zZWN0aW9uPgorCTxzZWN0aW9uIGlkPSJEVFYtQ0xFQVIiPgorCTx0aXRsZT48Y29uc3RhbnQ+RFRWX0NMRUFSPC9jb25zdGFudD48L3RpdGxlPgorCTxwYXJhPlJlc2V0IGEgY2FjaGUgb2YgZGF0YSBzcGVjaWZpYyB0byB0aGUgZnJvbnRlbmQgaGVyZS4gVGhpcyBkb2VzIG5vdCBlZmZlY3QgaGFyZHdhcmUuPC9wYXJhPgorCTwvc2VjdGlvbj4KKwk8c2VjdGlvbiBpZD0iRFRWLUZSRVFVRU5DWSI+CisJCTx0aXRsZT48Y29uc3RhbnQ+RFRWX0ZSRVFVRU5DWTwvY29uc3RhbnQ+PC90aXRsZT4KKworCQk8cGFyYT5DZW50cmFsIGZyZXF1ZW5jeSBvZiB0aGUgY2hhbm5lbC48L3BhcmE+CisKKwkJPHBhcmE+Tm90ZXM6PC9wYXJhPgorCQk8cGFyYT4xKUZvciBzYXRlbGxpdGUgZGVsaXZlcnkgc3lzdGVtcywgaXQgaXMgbWVhc3VyZWQgaW4ga0h6LgorCQkJRm9yIHRoZSBvdGhlciBvbmVzLCBpdCBpcyBtZWFzdXJlZCBpbiBIei48L3BhcmE+CisJCTxwYXJhPjIpRm9yIElTREItVCwgdGhlIGNoYW5uZWxzIGFyZSB1c3VhbGx5IHRyYW5zbWl0dGVkIHdpdGggYW4gb2Zmc2V0IG9mIDE0M2tIei4KKwkJCUUuZy4gYSB2YWxpZCBmcmVxdWVuY3kgY291bGQgYmUgNDc0MTQzIGtIei4gVGhlIHN0ZXBwaW5nIGlzIGJvdW5kIHRvIHRoZSBiYW5kd2lkdGggb2YKKwkJCXRoZSBjaGFubmVsIHdoaWNoIGlzIDZNSHouPC9wYXJhPgorCisJCTxwYXJhPjMpQXMgaW4gSVNEQi1Uc2IgdGhlIGNoYW5uZWwgY29uc2lzdHMgb2Ygb25seSBvbmUgb3IgdGhyZWUgc2VnbWVudHMgdGhlCisJCQlmcmVxdWVuY3kgc3RlcCBpcyA0MjlrSHosIDMqNDI5IHJlc3BlY3RpdmVseS4gQXMgZm9yIElTREItVCB0aGUKKwkJCWNlbnRyYWwgZnJlcXVlbmN5IG9mIHRoZSBjaGFubmVsIGlzIGV4cGVjdGVkLjwvcGFyYT4KKwk8L3NlY3Rpb24+CisJPHNlY3Rpb24gaWQ9IkRUVi1NT0RVTEFUSU9OIj4KKwk8dGl0bGU+PGNvbnN0YW50PkRUVl9NT0RVTEFUSU9OPC9jb25zdGFudD48L3RpdGxlPgorPHBhcmE+U3BlY2lmaWVzIHRoZSBmcm9udGVuZCBtb2R1bGF0aW9uIHR5cGUgZm9yIGRlbGl2ZXJ5IHN5c3RlbXMgdGhhdCBzdXBwb3J0cworICAgIG1vcmUgdGhhbiBvbmUgbW9kdWxhdGlvbiB0eXBlLiBUaGUgbW9kdWxhdGlvbiBjYW4gYmUgb25lIG9mIHRoZSB0eXBlcworICAgIGRlZmluZWQgYnkgJmZlLW1vZHVsYXRpb247LjwvcGFyYT4KKworCis8c2VjdGlvbiBpZD0iZmUtbW9kdWxhdGlvbi10Ij4KKzx0aXRsZT5Nb2R1bGF0aW9uIHByb3BlcnR5PC90aXRsZT4KKworPHBhcmE+TW9zdCBvZiB0aGUgZGlnaXRhbCBUViBzdGFuZGFyZHMgY3VycmVudGx5IG9mZmVycyBtb3JlIHRoYW4gb25lIHBvc3NpYmxlCisgICAgbW9kdWxhdGlvbiAoc29tZXRpbWVzIGNhbGxlZCBhcyAiY29uc3RlbGxhdGlvbiIgb24gc29tZSBzdGFuZGFyZHMpLiBUaGlzCisgICAgZW51bSBjb250YWlucyB0aGUgdmFsdWVzIHVzZWQgYnkgdGhlIEtlcm5lbC4gUGxlYXNlIG5vdGUgdGhhdCBub3QgYWxsCisgICAgbW9kdWxhdGlvbnMgYXJlIHN1cHBvcnRlZCBieSBhIGdpdmVuIHN0YW5kYXJkLjwvcGFyYT4KKworPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJmZS1tb2R1bGF0aW9uIj4KKyAgICA8dGl0bGU+ZW51bSBmZV9tb2R1bGF0aW9uPC90aXRsZT4KKyAgICA8dGdyb3VwIGNvbHM9IjIiPgorCSZjcy1kZWY7CisJPHRoZWFkPgorCTxyb3c+CisJICAgIDxlbnRyeT5JRDwvZW50cnk+CisJICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+CisJPC9yb3c+CisJPC90aGVhZD4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCTxyb3c+CisJICAgIDxlbnRyeSBpZD0iUVBTSyI+PGNvbnN0YW50PlFQU0s8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5RUFNLIG1vZHVsYXRpb248L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iUUFNLTE2Ij48Y29uc3RhbnQ+UUFNXzE2PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MTYtUUFNIG1vZHVsYXRpb248L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iUUFNLTMyIj48Y29uc3RhbnQ+UUFNXzMyPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MzItUUFNIG1vZHVsYXRpb248L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iUUFNLTY0Ij48Y29uc3RhbnQ+UUFNXzY0PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+NjQtUUFNIG1vZHVsYXRpb248L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iUUFNLTEyOCI+PGNvbnN0YW50PlFBTV8xMjg8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4xMjgtUUFNIG1vZHVsYXRpb248L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iUUFNLTI1NiI+PGNvbnN0YW50PlFBTV8yNTY8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4yNTYtUUFNIG1vZHVsYXRpb248L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iUUFNLUFVVE8iPjxjb25zdGFudD5RQU1fQVVUTzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkF1dG9kZXRlY3QgUUFNIG1vZHVsYXRpb248L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iVlNCLTgiPjxjb25zdGFudD5WU0JfODwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjgtVlNCIG1vZHVsYXRpb248L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iVlNCLTE2Ij48Y29uc3RhbnQ+VlNCXzE2PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MTYtVlNCIG1vZHVsYXRpb248L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iUFNLLTgiPjxjb25zdGFudD5QU0tfODwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjgtUFNLIG1vZHVsYXRpb248L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iQVBTSy0xNiI+PGNvbnN0YW50PkFQU0tfMTY8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4xNi1BUFNLIG1vZHVsYXRpb248L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iQVBTSy0zMiI+PGNvbnN0YW50PkFQU0tfMzI8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4zMi1BUFNLIG1vZHVsYXRpb248L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iRFFQU0siPjxjb25zdGFudD5EUVBTSzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkRRUFNLIG1vZHVsYXRpb248L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iUUFNLTQtTlIiPjxjb25zdGFudD5RQU1fNF9OUjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjQtUUFNLU5SIG1vZHVsYXRpb248L2VudHJ5PgorCTwvcm93PgorICAgICAgICA8L3Rib2R5PgorICAgIDwvdGdyb3VwPgorPC90YWJsZT4KKzwvc2VjdGlvbj4KKworCTwvc2VjdGlvbj4KKwk8c2VjdGlvbiBpZD0iRFRWLUJBTkRXSURUSC1IWiI+CisJCTx0aXRsZT48Y29uc3RhbnQ+RFRWX0JBTkRXSURUSF9IWjwvY29uc3RhbnQ+PC90aXRsZT4KKworCQk8cGFyYT5CYW5kd2lkdGggZm9yIHRoZSBjaGFubmVsLCBpbiBIWi48L3BhcmE+CisKKwkJPHBhcmE+UG9zc2libGUgdmFsdWVzOgorCQkJPGNvbnN0YW50PjE3MTIwMDA8L2NvbnN0YW50PiwKKwkJCTxjb25zdGFudD41MDAwMDAwPC9jb25zdGFudD4sCisJCQk8Y29uc3RhbnQ+NjAwMDAwMDwvY29uc3RhbnQ+LAorCQkJPGNvbnN0YW50PjcwMDAwMDA8L2NvbnN0YW50PiwKKwkJCTxjb25zdGFudD44MDAwMDAwPC9jb25zdGFudD4sCisJCQk8Y29uc3RhbnQ+MTAwMDAwMDA8L2NvbnN0YW50Pi4KKwkJPC9wYXJhPgorCisJCTxwYXJhPk5vdGVzOjwvcGFyYT4KKworCQk8cGFyYT4xKSBGb3IgSVNEQi1UIGl0IHNob3VsZCBiZSBhbHdheXMgNjAwMDAwMEh6ICg2TUh6KTwvcGFyYT4KKwkJPHBhcmE+MikgRm9yIElTREItVHNiIGl0IGNhbiB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgbnVtYmVyIG9mIGNvbm5lY3RlZCBzZWdtZW50czwvcGFyYT4KKwkJPHBhcmE+MykgQmFuZHdpZHRoIGRvZXNuJ3QgYXBwbHkgZm9yIERWQi1DIHRyYW5zbWlzc2lvbnMsIGFzIHRoZSBiYW5kd2lkdGgKKwkJCSBmb3IgRFZCLUMgZGVwZW5kcyBvbiB0aGUgc3ltYm9sIHJhdGU8L3BhcmE+CisJCTxwYXJhPjQpIEJhbmR3aWR0aCBpbiBJU0RCLVQgaXMgZml4ZWQgKDZNSHopIG9yIGNhbiBiZSBlYXNpbHkgZGVyaXZlZCBmcm9tCisJCQlvdGhlciBwYXJhbWV0ZXJzIChEVFZfSVNEQlRfU0JfU0VHTUVOVF9JRFgsCisJCQlEVFZfSVNEQlRfU0JfU0VHTUVOVF9DT1VOVCkuPC9wYXJhPgorCQk8cGFyYT41KSBEVkItVCBzdXBwb3J0cyA2LCA3IGFuZCA4TUh6LjwvcGFyYT4KKwkJPHBhcmE+NikgSW4gYWRkaXRpb24sIERWQi1UMiBzdXBwb3J0cyAxLjE3MiwgNSBhbmQgMTBNSHouPC9wYXJhPgorCTwvc2VjdGlvbj4KKwk8c2VjdGlvbiBpZD0iRFRWLUlOVkVSU0lPTiI+CisJPHRpdGxlPjxjb25zdGFudD5EVFZfSU5WRVJTSU9OPC9jb25zdGFudD48L3RpdGxlPgorCisJPHBhcmE+U3BlY2lmaWVzIGlmIHRoZSBmcm9udGVuZCBzaG91bGQgZG8gc3BlY3RyYWwgaW52ZXJzaW9uIG9yIG5vdC48L3BhcmE+CisKKzxzZWN0aW9uIGlkPSJmZS1zcGVjdHJhbC1pbnZlcnNpb24tdCI+Cis8dGl0bGU+ZW51bSBmZV9tb2R1bGF0aW9uOiBGcm9udGVuZCBzcGVjdHJhbCBpbnZlcnNpb248L3RpdGxlPgorCis8cGFyYT5UaGlzIHBhcmFtZXRlciBpbmRpY2F0ZXMgaWYgc3BlY3RyYWwgaW52ZXJzaW9uIHNob3VsZCBiZSBwcmVzdW1lZCBvciBub3QuCisgICAgSW4gdGhlIGF1dG9tYXRpYyBzZXR0aW5nICg8Y29uc3RhbnQ+SU5WRVJTSU9OX0FVVE88L2NvbnN0YW50PikgdGhlIGhhcmR3YXJlCisgICAgd2lsbCB0cnkgdG8gZmlndXJlIG91dCB0aGUgY29ycmVjdCBzZXR0aW5nIGJ5IGl0c2VsZi4gSWYgdGhlIGhhcmR3YXJlCisgICAgZG9lc24ndCBzdXBwb3J0LCB0aGUgRFZCIGNvcmUgd2lsbCB0cnkgdG8gbG9jayBhdCB0aGUgY2FycmllciBmaXJzdCB3aXRoCisgICAgaW52ZXJzaW9uIG9mZi4gSWYgaXQgZmFpbHMsIGl0IHdpbGwgdHJ5IHRvIGVuYWJsZSBpbnZlcnNpb24uCis8L3BhcmE+CisKKzx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iZmUtc3BlY3RyYWwtaW52ZXJzaW9uIj4KKyAgICA8dGl0bGU+ZW51bSBmZV9tb2R1bGF0aW9uPC90aXRsZT4KKyAgICA8dGdyb3VwIGNvbHM9IjIiPgorCSZjcy1kZWY7CisJPHRoZWFkPgorCTxyb3c+CisJICAgIDxlbnRyeT5JRDwvZW50cnk+CisJICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+CisJPC9yb3c+CisJPC90aGVhZD4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCTxyb3c+CisJICAgIDxlbnRyeSBpZD0iSU5WRVJTSU9OLU9GRiI+PGNvbnN0YW50PklOVkVSU0lPTl9PRkY8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5Eb24ndCBkbyBzcGVjdHJhbCBiYW5kIGludmVyc2lvbi48L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iSU5WRVJTSU9OLU9OIj48Y29uc3RhbnQ+SU5WRVJTSU9OX09OPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+RG8gc3BlY3RyYWwgYmFuZCBpbnZlcnNpb24uPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IklOVkVSU0lPTi1BVVRPIj48Y29uc3RhbnQ+SU5WRVJTSU9OX0FVVE88L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5BdXRvZGV0ZWN0IHNwZWN0cmFsIGJhbmQgaW52ZXJzaW9uLjwvZW50cnk+CisJPC9yb3c+CisgICAgICAgIDwvdGJvZHk+CisgICAgPC90Z3JvdXA+Cis8L3RhYmxlPgorPC9zZWN0aW9uPgorCisJPC9zZWN0aW9uPgorCTxzZWN0aW9uIGlkPSJEVFYtRElTRVFDLU1BU1RFUiI+CisJPHRpdGxlPjxjb25zdGFudD5EVFZfRElTRVFDX01BU1RFUjwvY29uc3RhbnQ+PC90aXRsZT4KKwk8cGFyYT5DdXJyZW50bHkgbm90IGltcGxlbWVudGVkLjwvcGFyYT4KKwk8L3NlY3Rpb24+CisJPHNlY3Rpb24gaWQ9IkRUVi1TWU1CT0wtUkFURSI+CisJPHRpdGxlPjxjb25zdGFudD5EVFZfU1lNQk9MX1JBVEU8L2NvbnN0YW50PjwvdGl0bGU+CisJPHBhcmE+RGlnaXRhbCBUViBzeW1ib2wgcmF0ZSwgaW4gYmF1ZHMgKHN5bWJvbHMvc2Vjb25kKS4gVXNlZCBvbiBjYWJsZSBzdGFuZGFyZHMuPC9wYXJhPgorCTwvc2VjdGlvbj4KKwk8c2VjdGlvbiBpZD0iRFRWLUlOTkVSLUZFQyI+CisJPHRpdGxlPjxjb25zdGFudD5EVFZfSU5ORVJfRkVDPC9jb25zdGFudD48L3RpdGxlPgorCTxwYXJhPlVzZWQgY2FibGUvc2F0ZWxsaXRlIHRyYW5zbWlzc2lvbnMuIFRoZSBhY2NlcHRhYmxlIHZhbHVlcyBhcmU6CisJPC9wYXJhPgorPHNlY3Rpb24gaWQ9ImZlLWNvZGUtcmF0ZS10Ij4KKzx0aXRsZT5lbnVtIGZlX2NvZGVfcmF0ZTogdHlwZSBvZiB0aGUgRm9yd2FyZCBFcnJvciBDb3JyZWN0aW9uLjwvdGl0bGU+CisKKzx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iZmUtY29kZS1yYXRlIj4KKyAgICA8dGl0bGU+ZW51bSBmZV9jb2RlX3JhdGU8L3RpdGxlPgorICAgIDx0Z3JvdXAgY29scz0iMiI+CisJJmNzLWRlZjsKKwk8dGhlYWQ+CisJPHJvdz4KKwkgICAgPGVudHJ5PklEPC9lbnRyeT4KKwkgICAgPGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKwk8L3Jvdz4KKwk8L3RoZWFkPgorCTx0Ym9keSB2YWxpZ249InRvcCI+CisJPHJvdz4KKwkgICAgPGVudHJ5IGlkPSJGRUMtTk9ORSI+PGNvbnN0YW50PkZFQ19OT05FPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Tm8gRm9yd2FyZCBFcnJvciBDb3JyZWN0aW9uIENvZGU8L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iRkVDLUFVVE8iPjxjb25zdGFudD5GRUNfQVVUTzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkF1dG9kZXRlY3QgRXJyb3IgQ29ycmVjdGlvbiBDb2RlPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkZFQy0xLTIiPjxjb25zdGFudD5GRUNfMV8yPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Rm9yd2FyZCBFcnJvciBDb3JyZWN0aW9uIENvZGUgMS8yPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkZFQy0yLTMiPjxjb25zdGFudD5GRUNfMl8zPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Rm9yd2FyZCBFcnJvciBDb3JyZWN0aW9uIENvZGUgMi8zPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkZFQy0zLTQiPjxjb25zdGFudD5GRUNfM180PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Rm9yd2FyZCBFcnJvciBDb3JyZWN0aW9uIENvZGUgMy80PC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkZFQy00LTUiPjxjb25zdGFudD5GRUNfNF81PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Rm9yd2FyZCBFcnJvciBDb3JyZWN0aW9uIENvZGUgNC81PC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkZFQy01LTYiPjxjb25zdGFudD5GRUNfNV82PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Rm9yd2FyZCBFcnJvciBDb3JyZWN0aW9uIENvZGUgNS82PC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkZFQy02LTciPjxjb25zdGFudD5GRUNfNl83PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Rm9yd2FyZCBFcnJvciBDb3JyZWN0aW9uIENvZGUgNi83PC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkZFQy03LTgiPjxjb25zdGFudD5GRUNfN184PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Rm9yd2FyZCBFcnJvciBDb3JyZWN0aW9uIENvZGUgNy84PC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkZFQy04LTkiPjxjb25zdGFudD5GRUNfOF85PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Rm9yd2FyZCBFcnJvciBDb3JyZWN0aW9uIENvZGUgOC85PC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkZFQy05LTEwIj48Y29uc3RhbnQ+RkVDXzlfMTA8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5Gb3J3YXJkIEVycm9yIENvcnJlY3Rpb24gQ29kZSA5LzEwPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkZFQy0yLTUiPjxjb25zdGFudD5GRUNfMl81PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Rm9yd2FyZCBFcnJvciBDb3JyZWN0aW9uIENvZGUgMi81PC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkZFQy0zLTUiPjxjb25zdGFudD5GRUNfM181PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Rm9yd2FyZCBFcnJvciBDb3JyZWN0aW9uIENvZGUgMy81PC9lbnRyeT4KKwk8L3Jvdz4KKyAgICAgICAgPC90Ym9keT4KKyAgICA8L3Rncm91cD4KKzwvdGFibGU+Cis8L3NlY3Rpb24+CisJPC9zZWN0aW9uPgorCTxzZWN0aW9uIGlkPSJEVFYtVk9MVEFHRSI+CisJPHRpdGxlPjxjb25zdGFudD5EVFZfVk9MVEFHRTwvY29uc3RhbnQ+PC90aXRsZT4KKwk8cGFyYT5UaGUgdm9sdGFnZSBpcyB1c3VhbGx5IHVzZWQgd2l0aCBub24tRGlTRXFDIGNhcGFibGUgTE5CcyB0byBzd2l0Y2gKKwl0aGUgcG9sYXJ6YXRpb24gKGhvcml6b250YWwvdmVydGljYWwpLiBXaGVuIHVzaW5nIERpU0VxQyBlcHVpcG1lbnQgdGhpcworCXZvbHRhZ2UgaGFzIHRvIGJlIHN3aXRjaGVkIGNvbnNpc3RlbnRseSB0byB0aGUgRGlTRXFDIGNvbW1hbmRzIGFzCisJZGVzY3JpYmVkIGluIHRoZSBEaVNFcUMgc3BlYy48L3BhcmE+CisKKzx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iZmUtc2VjLXZvbHRhZ2UiPgorICAgIDx0aXRsZSBpZD0iZmUtc2VjLXZvbHRhZ2UtdCI+ZW51bSBmZV9zZWNfdm9sdGFnZTwvdGl0bGU+CisgICAgPHRncm91cCBjb2xzPSIyIj4KKwkmY3MtZGVmOworCTx0aGVhZD4KKwk8cm93PgorCSAgICA8ZW50cnk+SUQ8L2VudHJ5PgorCSAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorCTwvcm93PgorCTwvdGhlYWQ+CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwk8cm93PgorCSAgICA8ZW50cnkgYWxpZ249ImNoYXIiIGlkPSJTRUMtVk9MVEFHRS0xMyI+PGNvbnN0YW50PlNFQ19WT0xUQUdFXzEzPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImNoYXIiPlNldCBEQyB2b2x0YWdlIGxldmVsIHRvIDEzVjwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5IGFsaWduPSJjaGFyIiBpZD0iU0VDLVZPTFRBR0UtMTgiPjxjb25zdGFudD5TRUNfVk9MVEFHRV8xODwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5IGFsaWduPSJjaGFyIj5TZXQgREMgdm9sdGFnZSBsZXZlbCB0byAxOFY8L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBhbGlnbj0iY2hhciIgaWQ9IlNFQy1WT0xUQUdFLU9GRiI+PGNvbnN0YW50PlNFQ19WT0xUQUdFX09GRjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5IGFsaWduPSJjaGFyIj5Eb24ndCBzZW5kIGFueSB2b2x0YWdlIHRvIHRoZSBhbnRlbm5hPC9lbnRyeT4KKwk8L3Jvdz4KKyAgICAgICAgPC90Ym9keT4KKyAgICA8L3Rncm91cD4KKzwvdGFibGU+CisJPC9zZWN0aW9uPgorCTxzZWN0aW9uIGlkPSJEVFYtVE9ORSI+CisJPHRpdGxlPjxjb25zdGFudD5EVFZfVE9ORTwvY29uc3RhbnQ+PC90aXRsZT4KKwk8cGFyYT5DdXJyZW50bHkgbm90IHVzZWQuPC9wYXJhPgorCTwvc2VjdGlvbj4KKwk8c2VjdGlvbiBpZD0iRFRWLVBJTE9UIj4KKwk8dGl0bGU+PGNvbnN0YW50PkRUVl9QSUxPVDwvY29uc3RhbnQ+PC90aXRsZT4KKwk8cGFyYT5TZXRzIERWQi1TMiBwaWxvdDwvcGFyYT4KKwk8c2VjdGlvbiBpZD0iZmUtcGlsb3QtdCI+CisJCTx0aXRsZT5mZV9waWxvdCB0eXBlPC90aXRsZT4KKzx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iZmUtcGlsb3QiPgorICAgIDx0aXRsZT5lbnVtIGZlX3BpbG90PC90aXRsZT4KKyAgICA8dGdyb3VwIGNvbHM9IjIiPgorCSZjcy1kZWY7CisJPHRoZWFkPgorCTxyb3c+CisJICAgIDxlbnRyeT5JRDwvZW50cnk+CisJICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+CisJPC9yb3c+CisJPC90aGVhZD4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCTxyb3c+CisJICAgIDxlbnRyeSBhbGlnbj0iY2hhciIgaWQ9IlBJTE9ULU9OIj48Y29uc3RhbnQ+UElMT1RfT048L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0iY2hhciI+UGlsb3QgdG9uZXMgZW5hYmxlZDwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5IGFsaWduPSJjaGFyIiBpZD0iUElMT1QtT0ZGIj48Y29uc3RhbnQ+UElMT1RfT0ZGPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImNoYXIiPlBpbG90IHRvbmVzIGRpc2FibGVkPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgYWxpZ249ImNoYXIiIGlkPSJQSUxPVC1BVVRPIj48Y29uc3RhbnQ+UElMT1RfQVVUTzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5IGFsaWduPSJjaGFyIj5BdXRvZGV0ZWN0IHBpbG90IHRvbmVzPC9lbnRyeT4KKwk8L3Jvdz4KKyAgICAgICAgPC90Ym9keT4KKyAgICA8L3Rncm91cD4KKzwvdGFibGU+CisJCTwvc2VjdGlvbj4KKwk8L3NlY3Rpb24+CisJPHNlY3Rpb24gaWQ9IkRUVi1ST0xMT0ZGIj4KKwk8dGl0bGU+PGNvbnN0YW50PkRUVl9ST0xMT0ZGPC9jb25zdGFudD48L3RpdGxlPgorCQk8cGFyYT5TZXRzIERWQi1TMiByb2xsb2ZmPC9wYXJhPgorCisJPHNlY3Rpb24gaWQ9ImZlLXJvbGxvZmYtdCI+CisJCTx0aXRsZT5mZV9yb2xsb2ZmIHR5cGU8L3RpdGxlPgorPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJmZS1yb2xsb2ZmIj4KKyAgICA8dGl0bGU+ZW51bSBmZV9yb2xsb2ZmPC90aXRsZT4KKyAgICA8dGdyb3VwIGNvbHM9IjIiPgorCSZjcy1kZWY7CisJPHRoZWFkPgorCTxyb3c+CisJICAgIDxlbnRyeT5JRDwvZW50cnk+CisJICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+CisJPC9yb3c+CisJPC90aGVhZD4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCTxyb3c+CisJICAgIDxlbnRyeSBhbGlnbj0iY2hhciIgaWQ9IlJPTExPRkYtMzUiPjxjb25zdGFudD5ST0xMT0ZGXzM1PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImNoYXIiPlJvbG9mZiBmYWN0b3I6ICZhbHBoYTs9MzUlPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgYWxpZ249ImNoYXIiIGlkPSJST0xMT0ZGLTIwIj48Y29uc3RhbnQ+Uk9MTE9GRl8yMDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5IGFsaWduPSJjaGFyIj5Sb2xvZmYgZmFjdG9yOiAmYWxwaGE7PTIwJTwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5IGFsaWduPSJjaGFyIiBpZD0iUk9MTE9GRi0yNSI+PGNvbnN0YW50PlJPTExPRkZfMjU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0iY2hhciI+Um9sb2ZmIGZhY3RvcjogJmFscGhhOz0yNSU8L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBhbGlnbj0iY2hhciIgaWQ9IlJPTExPRkYtQVVUTyI+PGNvbnN0YW50PlJPTExPRkZfQVVUTzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5IGFsaWduPSJjaGFyIj5BdXRvLWRldGVjdCB0aGUgcm9sb2ZmIGZhY3Rvci48L2VudHJ5PgorCTwvcm93PgorICAgICAgICA8L3Rib2R5PgorICAgIDwvdGdyb3VwPgorPC90YWJsZT4KKwkJPC9zZWN0aW9uPgorCTwvc2VjdGlvbj4KKwk8c2VjdGlvbiBpZD0iRFRWLURJU0VRQy1TTEFWRS1SRVBMWSI+CisJPHRpdGxlPjxjb25zdGFudD5EVFZfRElTRVFDX1NMQVZFX1JFUExZPC9jb25zdGFudD48L3RpdGxlPgorCTxwYXJhPkN1cnJlbnRseSBub3QgaW1wbGVtZW50ZWQuPC9wYXJhPgorCTwvc2VjdGlvbj4KKwk8c2VjdGlvbiBpZD0iRFRWLUZFLUNBUEFCSUxJVFktQ09VTlQiPgorCTx0aXRsZT48Y29uc3RhbnQ+RFRWX0ZFX0NBUEFCSUxJVFlfQ09VTlQ8L2NvbnN0YW50PjwvdGl0bGU+CisJPHBhcmE+Q3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZC48L3BhcmE+CisJPC9zZWN0aW9uPgorCTxzZWN0aW9uIGlkPSJEVFYtRkUtQ0FQQUJJTElUWSI+CisJPHRpdGxlPjxjb25zdGFudD5EVFZfRkVfQ0FQQUJJTElUWTwvY29uc3RhbnQ+PC90aXRsZT4KKwk8cGFyYT5DdXJyZW50bHkgbm90IGltcGxlbWVudGVkLjwvcGFyYT4KKwk8L3NlY3Rpb24+CisJPHNlY3Rpb24gaWQ9IkRUVi1ERUxJVkVSWS1TWVNURU0iPgorCQk8dGl0bGU+PGNvbnN0YW50PkRUVl9ERUxJVkVSWV9TWVNURU08L2NvbnN0YW50PjwvdGl0bGU+CisJCTxwYXJhPlNwZWNpZmllcyB0aGUgdHlwZSBvZiBEZWxpdmVyeSBzeXN0ZW08L3BhcmE+CisJCTxzZWN0aW9uIGlkPSJmZS1kZWxpdmVyeS1zeXN0ZW0tdCI+CisJCTx0aXRsZT5mZV9kZWxpdmVyeV9zeXN0ZW0gdHlwZTwvdGl0bGU+CisJCTxwYXJhPlBvc3NpYmxlIHZhbHVlczogPC9wYXJhPgorCis8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9ImZlLWRlbGl2ZXJ5LXN5c3RlbSI+CisgICAgPHRpdGxlPmVudW0gZmVfZGVsaXZlcnlfc3lzdGVtPC90aXRsZT4KKyAgICA8dGdyb3VwIGNvbHM9IjIiPgorCSZjcy1kZWY7CisJPHRoZWFkPgorCTxyb3c+CisJICAgIDxlbnRyeT5JRDwvZW50cnk+CisJICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+CisJPC9yb3c+CisJPC90aGVhZD4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCTxyb3c+CisJCTxlbnRyeSBpZD0iU1lTLVVOREVGSU5FRCI+PGNvbnN0YW50PlNZU19VTkRFRklORUQ8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT5VbmRlZmluZWQgc3RhbmRhcmQuIEdlbmVyYWxseSwgaW5kaWNhdGVzIGFuIGVycm9yPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCQk8ZW50cnkgaWQ9IlNZUy1EVkJDLUFOTkVYLUEiPjxjb25zdGFudD5TWVNfRFZCQ19BTk5FWF9BPC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+Q2FibGUgVFY6IERWQi1DIGZvbGxvd2luZyBJVFUtVCBKLjgzIEFubmV4IEEgc3BlYzwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkJPGVudHJ5IGlkPSJTWVMtRFZCQy1BTk5FWC1CIj48Y29uc3RhbnQ+U1lTX0RWQkNfQU5ORVhfQjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PkNhYmxlIFRWOiBEVkItQyBmb2xsb3dpbmcgSVRVLVQgSi44MyBBbm5leCBCIHNwZWMgKENsZWFyUUFNKTwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkJPGVudHJ5IGlkPSJTWVMtRFZCQy1BTk5FWC1DIj48Y29uc3RhbnQ+U1lTX0RWQkNfQU5ORVhfQzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PkNhYmxlIFRWOiBEVkItQyBmb2xsb3dpbmcgSVRVLVQgSi44MyBBbm5leCBDIHNwZWM8L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJCTxlbnRyeSBpZD0iU1lTLUlTREJDIj48Y29uc3RhbnQ+U1lTX0lTREJDPC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+Q2FibGUgVFY6IElTREItQyAobm8gZHJpdmVycyB5ZXQpPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCQk8ZW50cnkgaWQ9IlNZUy1EVkJUIj48Y29uc3RhbnQ+U1lTX0RWQlQ8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT5UZXJyZXN0cmFsIFRWOiBEVkItVDwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkJPGVudHJ5IGlkPSJTWVMtRFZCVDIiPjxjb25zdGFudD5TWVNfRFZCVDI8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT5UZXJyZXN0cmFsIFRWOiBEVkItVDI8L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJCTxlbnRyeSBpZD0iU1lTLUlTREJUIj48Y29uc3RhbnQ+U1lTX0lTREJUPC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+VGVycmVzdHJhbCBUVjogSVNEQi1UPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCQk8ZW50cnkgaWQ9IlNZUy1BVFNDIj48Y29uc3RhbnQ+U1lTX0FUU0M8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT5UZXJyZXN0cmFsIFRWOiBBVFNDPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCQk8ZW50cnkgaWQ9IlNZUy1BVFNDTUgiPjxjb25zdGFudD5TWVNfQVRTQ01IPC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+VGVycmVzdHJhbCBUViAobW9iaWxlKTogQVRTQy1NL0g8L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJCTxlbnRyeSBpZD0iU1lTLURUTUIiPjxjb25zdGFudD5TWVNfRFRNQjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PlRlcnJlc3RyaWFsIFRWOiBEVE1CPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCQk8ZW50cnkgaWQ9IlNZUy1EVkJTIj48Y29uc3RhbnQ+U1lTX0RWQlM8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT5TYXRlbGxpdGUgVFY6IERWQi1TPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCQk8ZW50cnkgaWQ9IlNZUy1EVkJTMiI+PGNvbnN0YW50PlNZU19EVkJTMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PlNhdGVsbGl0ZSBUVjogRFZCLVMyPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCQk8ZW50cnkgaWQ9IlNZUy1UVVJCTyI+PGNvbnN0YW50PlNZU19UVVJCTzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PlNhdGVsbGl0ZSBUVjogRFZCLVMgVHVyYm88L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJCTxlbnRyeSBpZD0iU1lTLUlTREJTIj48Y29uc3RhbnQ+U1lTX0lTREJTPC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+U2F0ZWxsaXRlIFRWOiBJU0RCLVM8L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJCTxlbnRyeSBpZD0iU1lTLURBQiI+PGNvbnN0YW50PlNZU19EQUI8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT5EaWdpdGFsIGF1ZGlvOiBEQUIgKG5vdCBmdWxseSBzdXBwb3J0ZWQpPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCQk8ZW50cnkgaWQ9IlNZUy1EU1MiPjxjb25zdGFudD5TWVNfRFNTPC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+U2F0ZWxsaXRlIFRWOiJEU1MgKG5vdCBmdWxseSBzdXBwb3J0ZWQpPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCQk8ZW50cnkgaWQ9IlNZUy1DTU1CIj48Y29uc3RhbnQ+U1lTX0NNTUI8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT5UZXJyZXN0cmFsIFRWIChtb2JpbGUpOkNNTUIgKG5vdCBmdWxseSBzdXBwb3J0ZWQpPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCQk8ZW50cnkgaWQ9IlNZUy1EVkJIIj48Y29uc3RhbnQ+U1lTX0RWQkg8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT5UZXJyZXN0cmFsIFRWIChtb2JpbGUpOiBEVkItSCAoc3RhbmRhcmQgZGVwcmVjYXRlZCk8L2VudHJ5PgorCTwvcm93PgorICAgICAgICA8L3Rib2R5PgorICAgIDwvdGdyb3VwPgorPC90YWJsZT4KKworCis8L3NlY3Rpb24+CisJPC9zZWN0aW9uPgorCTxzZWN0aW9uIGlkPSJEVFYtSVNEQlQtUEFSVElBTC1SRUNFUFRJT04iPgorCQk8dGl0bGU+PGNvbnN0YW50PkRUVl9JU0RCVF9QQVJUSUFMX1JFQ0VQVElPTjwvY29uc3RhbnQ+PC90aXRsZT4KKworCQk8cGFyYT5JZiA8Y29uc3RhbnQ+RFRWX0lTREJUX1NPVU5EX0JST0FEQ0FTVElORzwvY29uc3RhbnQ+IGlzICcwJyB0aGlzIGJpdC1maWVsZCByZXByZXNlbnRzIHdoZXRoZXIKKwkJCXRoZSBjaGFubmVsIGlzIGluIHBhcnRpYWwgcmVjZXB0aW9uIG1vZGUgb3Igbm90LjwvcGFyYT4KKworCQk8cGFyYT5JZiAnMScgPGNvbnN0YW50PkRUVl9JU0RCVF9MQVlFUkFfKjwvY29uc3RhbnQ+IHZhbHVlcyBhcmUgYXNzaWduZWQgdG8gdGhlIGNlbnRlciBzZWdtZW50IGFuZAorCQkJPGNvbnN0YW50PkRUVl9JU0RCVF9MQVlFUkFfU0VHTUVOVF9DT1VOVDwvY29uc3RhbnQ+IGhhcyB0byBiZSAnMScuPC9wYXJhPgorCisJCTxwYXJhPklmIGluIGFkZGl0aW9uIDxjb25zdGFudD5EVFZfSVNEQlRfU09VTkRfQlJPQURDQVNUSU5HPC9jb25zdGFudD4gaXMgJzEnCisJCQk8Y29uc3RhbnQ+RFRWX0lTREJUX1BBUlRJQUxfUkVDRVBUSU9OPC9jb25zdGFudD4gcmVwcmVzZW50cyB3aGV0aGVyIHRoaXMgSVNEQi1Uc2IgY2hhbm5lbAorCQkJaXMgY29uc2lzdGluZyBvZiBvbmUgc2VnbWVudCBhbmQgbGF5ZXIgb3IgdGhyZWUgc2VnbWVudHMgYW5kIHR3byBsYXllcnMuPC9wYXJhPgorCisJCTxwYXJhPlBvc3NpYmxlIHZhbHVlczogMCwgMSwgLTEgKEFVVE8pPC9wYXJhPgorCTwvc2VjdGlvbj4KKwk8c2VjdGlvbiBpZD0iRFRWLUlTREJULVNPVU5ELUJST0FEQ0FTVElORyI+CisJCTx0aXRsZT48Y29uc3RhbnQ+RFRWX0lTREJUX1NPVU5EX0JST0FEQ0FTVElORzwvY29uc3RhbnQ+PC90aXRsZT4KKworCQk8cGFyYT5UaGlzIGZpZWxkIHJlcHJlc2VudHMgd2hldGhlciB0aGUgb3RoZXIgRFRWX0lTREJUXyotcGFyYW1ldGVycyBhcmUKKwkJCXJlZmVycmluZyB0byBhbiBJU0RCLVQgYW5kIGFuIElTREItVHNiIGNoYW5uZWwuIChTZWUgYWxzbworCQkJPGNvbnN0YW50PkRUVl9JU0RCVF9QQVJUSUFMX1JFQ0VQVElPTjwvY29uc3RhbnQ+KS48L3BhcmE+CisKKwkJPHBhcmE+UG9zc2libGUgdmFsdWVzOiAwLCAxLCAtMSAoQVVUTyk8L3BhcmE+CisJPC9zZWN0aW9uPgorCTxzZWN0aW9uIGlkPSJEVFYtSVNEQlQtU0ItU1VCQ0hBTk5FTC1JRCI+CisJCTx0aXRsZT48Y29uc3RhbnQ+RFRWX0lTREJUX1NCX1NVQkNIQU5ORUxfSUQ8L2NvbnN0YW50PjwvdGl0bGU+CisKKwkJPHBhcmE+VGhpcyBmaWVsZCBvbmx5IGFwcGxpZXMgaWYgPGNvbnN0YW50PkRUVl9JU0RCVF9TT1VORF9CUk9BRENBU1RJTkc8L2NvbnN0YW50PiBpcyAnMScuPC9wYXJhPgorCisJCTxwYXJhPihOb3RlIG9mIHRoZSBhdXRob3I6IFRoaXMgbWlnaHQgbm90IGJlIHRoZSBjb3JyZWN0IGRlc2NyaXB0aW9uIG9mIHRoZQorCQkJPGNvbnN0YW50PlNVQkNIQU5ORUwtSUQ8L2NvbnN0YW50PiBpbiBhbGwgZGV0YWlscywgYnV0IGl0IGlzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHRlY2huaWNhbAorCQkJYmFja2dyb3VuZCBuZWVkZWQgdG8gcHJvZ3JhbSBhIGRldmljZSk8L3BhcmE+CisKKwkJPHBhcmE+QW4gSVNEQi1Uc2IgY2hhbm5lbCAoMSBvciAzIHNlZ21lbnRzKSBjYW4gYmUgYnJvYWRjYXN0ZWQgYWxvbmUgb3IgaW4gYQorCQkJc2V0IG9mIGNvbm5lY3RlZCBJU0RCLVRzYiBjaGFubmVscy4gSW4gdGhpcyBzZXQgb2YgY2hhbm5lbHMgZXZlcnkKKwkJCWNoYW5uZWwgY2FuIGJlIHJlY2VpdmVkIGluZGVwZW5kZW50bHkuIFRoZSBudW1iZXIgb2YgY29ubmVjdGVkCisJCQlJU0RCLVRzYiBzZWdtZW50IGNhbiB2YXJ5LCBlLmcuIGRlcGVuZGluZyBvbiB0aGUgZnJlcXVlbmN5IHNwZWN0cnVtCisJCQliYW5kd2lkdGggYXZhaWxhYmxlLjwvcGFyYT4KKworCQk8cGFyYT5FeGFtcGxlOiBBc3N1bWUgOCBJU0RCLVRzYiBjb25uZWN0ZWQgc2VnbWVudHMgYXJlIGJyb2FkY2FzdGVkLiBUaGUKKwkJCWJyb2FkY2FzdGVyIGhhcyBzZXZlcmFsIHBvc3NpYmlsaXRpZXMgdG8gcHV0IHRob3NlIGNoYW5uZWxzIGluIHRoZQorCQkJYWlyOiBBc3N1bWluZyBhIG5vcm1hbCAxMy1zZWdtZW50IElTREItVCBzcGVjdHJ1bSBoZSBjYW4gYWxpZ24gdGhlIDgKKwkJCXNlZ21lbnRzIGZyb20gcG9zaXRpb24gMS04IHRvIDUtMTMgb3IgYW55dGhpbmcgaW4gYmV0d2Vlbi48L3BhcmE+CisKKwkJPHBhcmE+VGhlIHVuZGVybHlpbmcgbGF5ZXIgb2Ygc2VnbWVudHMgYXJlIHN1YmNoYW5uZWxzOiBlYWNoIHNlZ21lbnQgaXMKKwkJCWNvbnNpc3Rpbmcgb2Ygc2V2ZXJhbCBzdWJjaGFubmVscyB3aXRoIGEgcHJlZGVmaW5lZCBJRHMuIEEgc3ViLWNoYW5uZWwKKwkJCWlzIHVzZWQgdG8gaGVscCB0aGUgZGVtb2R1bGF0b3IgdG8gc3luY2hyb25pemUgb24gdGhlIGNoYW5uZWwuPC9wYXJhPgorCisJCTxwYXJhPkFuIElTREItVCBjaGFubmVsIGlzIGFsd2F5cyBjZW50ZXJlZCBvdmVyIGFsbCBzdWItY2hhbm5lbHMuIEFzIGZvcgorCQkJdGhlIGV4YW1wbGUgYWJvdmUsIGluIElTREItVHNiIGl0IGlzIG5vIGxvbmdlciBhcyBzaW1wbGUgYXMgdGhhdC48L3BhcmE+CisKKwkJPHBhcmE+PGNvbnN0YW50PlRoZSBEVFZfSVNEQlRfU0JfU1VCQ0hBTk5FTF9JRDwvY29uc3RhbnQ+IHBhcmFtZXRlciBpcyB1c2VkIHRvIGdpdmUgdGhlCisJCQlzdWItY2hhbm5lbCBJRCBvZiB0aGUgc2VnbWVudCB0byBiZSBkZW1vZHVsYXRlZC48L3BhcmE+CisKKwkJPHBhcmE+UG9zc2libGUgdmFsdWVzOiAwIC4uIDQxLCAtMSAoQVVUTyk8L3BhcmE+CisJPC9zZWN0aW9uPgorCTxzZWN0aW9uIGlkPSJEVFYtSVNEQlQtU0ItU0VHTUVOVC1JRFgiPgorCQk8dGl0bGU+PGNvbnN0YW50PkRUVl9JU0RCVF9TQl9TRUdNRU5UX0lEWDwvY29uc3RhbnQ+PC90aXRsZT4KKwkJPHBhcmE+VGhpcyBmaWVsZCBvbmx5IGFwcGxpZXMgaWYgPGNvbnN0YW50PkRUVl9JU0RCVF9TT1VORF9CUk9BRENBU1RJTkc8L2NvbnN0YW50PiBpcyAnMScuPC9wYXJhPgorCQk8cGFyYT48Y29uc3RhbnQ+RFRWX0lTREJUX1NCX1NFR01FTlRfSURYPC9jb25zdGFudD4gZ2l2ZXMgdGhlIGluZGV4IG9mIHRoZSBzZWdtZW50IHRvIGJlCisJCQlkZW1vZHVsYXRlZCBmb3IgYW4gSVNEQi1Uc2IgY2hhbm5lbCB3aGVyZSBzZXZlcmFsIG9mIHRoZW0gYXJlCisJCQl0cmFuc21pdHRlZCBpbiB0aGUgY29ubmVjdGVkIG1hbm5lci48L3BhcmE+CisJCTxwYXJhPlBvc3NpYmxlIHZhbHVlczogMCAuLiA8Y29uc3RhbnQ+RFRWX0lTREJUX1NCX1NFR01FTlRfQ09VTlQ8L2NvbnN0YW50PiAtIDE8L3BhcmE+CisJCTxwYXJhPk5vdGU6IFRoaXMgdmFsdWUgY2Fubm90IGJlIGRldGVybWluZWQgYnkgYW4gYXV0b21hdGljIGNoYW5uZWwgc2VhcmNoLjwvcGFyYT4KKwk8L3NlY3Rpb24+CisJPHNlY3Rpb24gaWQ9IkRUVi1JU0RCVC1TQi1TRUdNRU5ULUNPVU5UIj4KKwkJPHRpdGxlPjxjb25zdGFudD5EVFZfSVNEQlRfU0JfU0VHTUVOVF9DT1VOVDwvY29uc3RhbnQ+PC90aXRsZT4KKwkJPHBhcmE+VGhpcyBmaWVsZCBvbmx5IGFwcGxpZXMgaWYgPGNvbnN0YW50PkRUVl9JU0RCVF9TT1VORF9CUk9BRENBU1RJTkc8L2NvbnN0YW50PiBpcyAnMScuPC9wYXJhPgorCQk8cGFyYT48Y29uc3RhbnQ+RFRWX0lTREJUX1NCX1NFR01FTlRfQ09VTlQ8L2NvbnN0YW50PiBnaXZlcyB0aGUgdG90YWwgY291bnQgb2YgY29ubmVjdGVkIElTREItVHNiCisJCQljaGFubmVscy48L3BhcmE+CisJCTxwYXJhPlBvc3NpYmxlIHZhbHVlczogMSAuLiAxMzwvcGFyYT4KKwkJPHBhcmE+Tm90ZTogVGhpcyB2YWx1ZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBieSBhbiBhdXRvbWF0aWMgY2hhbm5lbCBzZWFyY2guPC9wYXJhPgorCTwvc2VjdGlvbj4KKwk8c2VjdGlvbiBpZD0iaXNkYi1oaWVycS1sYXllcnMiPgorCQk8dGl0bGU+PGNvbnN0YW50PkRUVi1JU0RCVC1MQVlFUio8L2NvbnN0YW50PiBwYXJhbWV0ZXJzPC90aXRsZT4KKwkJPHBhcmE+SVNEQi1UIGNoYW5uZWxzIGNhbiBiZSBjb2RlZCBoaWVyYXJjaGljYWxseS4gQXMgb3Bwb3NlZCB0byBEVkItVCBpbgorCQkJSVNEQi1UIGhpZXJhcmNoaWNhbCBsYXllcnMgY2FuIGJlIGRlY29kZWQgc2ltdWx0YW5lb3VzbHkuIEZvciB0aGF0CisJCQlyZWFzb24gYSBJU0RCLVQgZGVtb2R1bGF0b3IgaGFzIDMgVml0ZXJiaSBhbmQgMyBSZWVkLVNvbG9tb24gZGVjb2RlcnMuPC9wYXJhPgorCQk8cGFyYT5JU0RCLVQgaGFzIDMgaGllcmFyY2hpY2FsIGxheWVycyB3aGljaCBlYWNoIGNhbiB1c2UgYSBwYXJ0IG9mIHRoZQorCQkJYXZhaWxhYmxlIHNlZ21lbnRzLiBUaGUgdG90YWwgbnVtYmVyIG9mIHNlZ21lbnRzIG92ZXIgYWxsIGxheWVycyBoYXMKKwkJCXRvIDEzIGluIElTREItVC48L3BhcmE+CisJCTxwYXJhPlRoZXJlIGFyZSAzIHBhcmFtZXRlciBzZXRzLCBmb3IgTGF5ZXJzIEEsIEIgYW5kIEMuPC9wYXJhPgorCQk8c2VjdGlvbiBpZD0iRFRWLUlTREJULUxBWUVSLUVOQUJMRUQiPgorCQkJPHRpdGxlPjxjb25zdGFudD5EVFZfSVNEQlRfTEFZRVJfRU5BQkxFRDwvY29uc3RhbnQ+PC90aXRsZT4KKwkJCTxwYXJhPkhpZXJhcmNoaWNhbCByZWNlcHRpb24gaW4gSVNEQi1UIGlzIGFjaGlldmVkIGJ5IGVuYWJsaW5nIG9yIGRpc2FibGluZworCQkJCWxheWVycyBpbiB0aGUgZGVjb2RpbmcgcHJvY2Vzcy4gU2V0dGluZyBhbGwgYml0cyBvZgorCQkJCTxjb25zdGFudD5EVFZfSVNEQlRfTEFZRVJfRU5BQkxFRDwvY29uc3RhbnQ+IHRvICcxJyBmb3JjZXMgYWxsIGxheWVycyAoaWYgYXBwbGljYWJsZSkgdG8gYmUKKwkJCQlkZW1vZHVsYXRlZC4gVGhpcyBpcyB0aGUgZGVmYXVsdC48L3BhcmE+CisJCQk8cGFyYT5JZiB0aGUgY2hhbm5lbCBpcyBpbiB0aGUgcGFydGlhbCByZWNlcHRpb24gbW9kZQorCQkJCSg8Y29uc3RhbnQ+RFRWX0lTREJUX1BBUlRJQUxfUkVDRVBUSU9OPC9jb25zdGFudD4gPSAxKSB0aGUgY2VudHJhbCBzZWdtZW50IGNhbiBiZSBkZWNvZGVkCisJCQkJaW5kZXBlbmRlbnRseSBvZiB0aGUgb3RoZXIgMTIgc2VnbWVudHMuIEluIHRoYXQgbW9kZSBsYXllciBBIGhhcyB0bworCQkJCWhhdmUgYSA8Y29uc3RhbnQ+U0VHTUVOVF9DT1VOVDwvY29uc3RhbnQ+IG9mIDEuPC9wYXJhPgorCQkJPHBhcmE+SW4gSVNEQi1Uc2Igb25seSBsYXllciBBIGlzIHVzZWQsIGl0IGNhbiBiZSAxIG9yIDMgaW4gSVNEQi1Uc2IKKwkJCQlhY2NvcmRpbmcgdG8gPGNvbnN0YW50PkRUVl9JU0RCVF9QQVJUSUFMX1JFQ0VQVElPTjwvY29uc3RhbnQ+LiA8Y29uc3RhbnQ+U0VHTUVOVF9DT1VOVDwvY29uc3RhbnQ+IG11c3QgYmUgZmlsbGVkCisJCQkJYWNjb3JkaW5nbHkuPC9wYXJhPgorCQkJPHBhcmE+UG9zc2libGUgdmFsdWVzOiAweDEsIDB4MiwgMHg0ICh8LWFibGUpPC9wYXJhPgorCQkJPHBhcmE+PGNvbnN0YW50PkRUVl9JU0RCVF9MQVlFUl9FTkFCTEVEWzA6MF08L2NvbnN0YW50PiAtIGxheWVyIEE8L3BhcmE+CisJCQk8cGFyYT48Y29uc3RhbnQ+RFRWX0lTREJUX0xBWUVSX0VOQUJMRURbMToxXTwvY29uc3RhbnQ+IC0gbGF5ZXIgQjwvcGFyYT4KKwkJCTxwYXJhPjxjb25zdGFudD5EVFZfSVNEQlRfTEFZRVJfRU5BQkxFRFsyOjJdPC9jb25zdGFudD4gLSBsYXllciBDPC9wYXJhPgorCQkJPHBhcmE+PGNvbnN0YW50PkRUVl9JU0RCVF9MQVlFUl9FTkFCTEVEWzMxOjNdPC9jb25zdGFudD4gdW51c2VkPC9wYXJhPgorCQk8L3NlY3Rpb24+CisJCTxzZWN0aW9uIGlkPSJEVFYtSVNEQlQtTEFZRVItRkVDIj4KKwkJCTx0aXRsZT48Y29uc3RhbnQ+RFRWX0lTREJUX0xBWUVSKl9GRUM8L2NvbnN0YW50PjwvdGl0bGU+CisJCQk8cGFyYT5Qb3NzaWJsZSB2YWx1ZXM6IDxjb25zdGFudD5GRUNfQVVUTzwvY29uc3RhbnQ+LCA8Y29uc3RhbnQ+RkVDXzFfMjwvY29uc3RhbnQ+LCA8Y29uc3RhbnQ+RkVDXzJfMzwvY29uc3RhbnQ+LCA8Y29uc3RhbnQ+RkVDXzNfNDwvY29uc3RhbnQ+LCA8Y29uc3RhbnQ+RkVDXzVfNjwvY29uc3RhbnQ+LCA8Y29uc3RhbnQ+RkVDXzdfODwvY29uc3RhbnQ+PC9wYXJhPgorCQk8L3NlY3Rpb24+CisJCTxzZWN0aW9uIGlkPSJEVFYtSVNEQlQtTEFZRVItTU9EVUxBVElPTiI+CisJCQk8dGl0bGU+PGNvbnN0YW50PkRUVl9JU0RCVF9MQVlFUipfTU9EVUxBVElPTjwvY29uc3RhbnQ+PC90aXRsZT4KKwkJCTxwYXJhPlBvc3NpYmxlIHZhbHVlczogPGNvbnN0YW50PlFBTV9BVVRPPC9jb25zdGFudD4sIFFQPGNvbnN0YW50PlNLLCBRQU1fMTY8L2NvbnN0YW50PiwgPGNvbnN0YW50PlFBTV82NDwvY29uc3RhbnQ+LCA8Y29uc3RhbnQ+RFFQU0s8L2NvbnN0YW50PjwvcGFyYT4KKwkJCTxwYXJhPk5vdGU6IElmIGxheWVyIEMgaXMgPGNvbnN0YW50PkRRUFNLPC9jb25zdGFudD4gbGF5ZXIgQiBoYXMgdG8gYmUgPGNvbnN0YW50PkRRUFNLPC9jb25zdGFudD4uIElmIGxheWVyIEIgaXMgPGNvbnN0YW50PkRRUFNLPC9jb25zdGFudD4KKwkJCQlhbmQgPGNvbnN0YW50PkRUVl9JU0RCVF9QQVJUSUFMX1JFQ0VQVElPTjwvY29uc3RhbnQ+PTAgbGF5ZXIgaGFzIHRvIGJlIDxjb25zdGFudD5EUVBTSzwvY29uc3RhbnQ+LjwvcGFyYT4KKwkJPC9zZWN0aW9uPgorCQk8c2VjdGlvbiBpZD0iRFRWLUlTREJULUxBWUVSLVNFR01FTlQtQ09VTlQiPgorCQkJPHRpdGxlPjxjb25zdGFudD5EVFZfSVNEQlRfTEFZRVIqX1NFR01FTlRfQ09VTlQ8L2NvbnN0YW50PjwvdGl0bGU+CisJCQk8cGFyYT5Qb3NzaWJsZSB2YWx1ZXM6IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAtMSAoQVVUTyk8L3BhcmE+CisJCQk8cGFyYT5Ob3RlOiBUcnV0aCB0YWJsZSBmb3IgPGNvbnN0YW50PkRUVl9JU0RCVF9TT1VORF9CUk9BRENBU1RJTkc8L2NvbnN0YW50PiBhbmQKKwkJCQk8Y29uc3RhbnQ+RFRWX0lTREJUX1BBUlRJQUxfUkVDRVBUSU9OPC9jb25zdGFudD4gYW5kIDxjb25zdGFudD5MQVlFUjwvY29uc3RhbnQ+Kl9TRUdNRU5UX0NPVU5UPC9wYXJhPgorCQkJPGluZm9ybWFsdGFibGUgaWQ9ImlzZGJ0LWxheWVyX3NlZy1jbnQtdGFibGUiPgorCQkJCTx0Z3JvdXAgY29scz0iNiI+CisJCQkJCTx0Ym9keT4KKwkJCQkJCTxyb3c+CisJCQkJCQkJPGVudHJ5PlBSPC9lbnRyeT4KKwkJCQkJCQk8ZW50cnk+U0I8L2VudHJ5PgorCQkJCQkJCTxlbnRyeT5MYXllciBBIHdpZHRoPC9lbnRyeT4KKwkJCQkJCQk8ZW50cnk+TGF5ZXIgQiB3aWR0aDwvZW50cnk+CisJCQkJCQkJPGVudHJ5PkxheWVyIEMgd2lkdGg8L2VudHJ5PgorCQkJCQkJCTxlbnRyeT50b3RhbCB3aWR0aDwvZW50cnk+CisJCQkJCQk8L3Jvdz4KKwkJCQkJCTxyb3c+CisJCQkJCQkJPGVudHJ5PjA8L2VudHJ5PgorCQkJCQkJCTxlbnRyeT4wPC9lbnRyeT4KKwkJCQkJCQk8ZW50cnk+MSAuLiAxMzwvZW50cnk+CisJCQkJCQkJPGVudHJ5PjEgLi4gMTM8L2VudHJ5PgorCQkJCQkJCTxlbnRyeT4xIC4uIDEzPC9lbnRyeT4KKwkJCQkJCQk8ZW50cnk+MTM8L2VudHJ5PgorCQkJCQkJPC9yb3c+CisJCQkJCQk8cm93PgorCQkJCQkJCTxlbnRyeT4xPC9lbnRyeT4KKwkJCQkJCQk8ZW50cnk+MDwvZW50cnk+CisJCQkJCQkJPGVudHJ5PjE8L2VudHJ5PgorCQkJCQkJCTxlbnRyeT4xIC4uIDEzPC9lbnRyeT4KKwkJCQkJCQk8ZW50cnk+MSAuLiAxMzwvZW50cnk+CisJCQkJCQkJPGVudHJ5PjEzPC9lbnRyeT4KKwkJCQkJCTwvcm93PgorCQkJCQkJPHJvdz4KKwkJCQkJCQk8ZW50cnk+MDwvZW50cnk+CisJCQkJCQkJPGVudHJ5PjE8L2VudHJ5PgorCQkJCQkJCTxlbnRyeT4xPC9lbnRyeT4KKwkJCQkJCQk8ZW50cnk+MDwvZW50cnk+CisJCQkJCQkJPGVudHJ5PjA8L2VudHJ5PgorCQkJCQkJCTxlbnRyeT4xPC9lbnRyeT4KKwkJCQkJCTwvcm93PgorCQkJCQkJPHJvdz4KKwkJCQkJCQk8ZW50cnk+MTwvZW50cnk+CisJCQkJCQkJPGVudHJ5PjE8L2VudHJ5PgorCQkJCQkJCTxlbnRyeT4xPC9lbnRyeT4KKwkJCQkJCQk8ZW50cnk+MjwvZW50cnk+CisJCQkJCQkJPGVudHJ5PjA8L2VudHJ5PgorCQkJCQkJCTxlbnRyeT4xMzwvZW50cnk+CisJCQkJCQk8L3Jvdz4KKwkJCQkJPC90Ym9keT4KKwkJCQk8L3Rncm91cD4KKwkJCTwvaW5mb3JtYWx0YWJsZT4KKwkJPC9zZWN0aW9uPgorCQk8c2VjdGlvbiBpZD0iRFRWLUlTREJULUxBWUVSLVRJTUUtSU5URVJMRUFWSU5HIj4KKwkJCTx0aXRsZT48Y29uc3RhbnQ+RFRWX0lTREJUX0xBWUVSKl9USU1FX0lOVEVSTEVBVklORzwvY29uc3RhbnQ+PC90aXRsZT4KKwkJCTxwYXJhPlZhbGlkIHZhbHVlczogMCwgMSwgMiwgNCwgLTEgKEFVVE8pPC9wYXJhPgorCQkJPHBhcmE+d2hlbiBEVFZfSVNEQlRfU09VTkRfQlJPQURDQVNUSU5HIGlzIGFjdGl2ZSwgdmFsdWUgOCBpcyBhbHNvIHZhbGlkLjwvcGFyYT4KKwkJCTxwYXJhPk5vdGU6IFRoZSByZWFsIHRpbWUgaW50ZXJsZWF2aW5nIGxlbmd0aCBkZXBlbmRzIG9uIHRoZSBtb2RlIChmZnQtc2l6ZSkuIFRoZSB2YWx1ZXMKKwkJCQloZXJlIGFyZSByZWZlcnJpbmcgdG8gd2hhdCBjYW4gYmUgZm91bmQgaW4gdGhlIFRNQ0Mtc3RydWN0dXJlLCBhcyBzaG93biBpbiB0aGUgdGFibGUgYmVsb3cuPC9wYXJhPgorCQkJPGluZm9ybWFsdGFibGUgaWQ9ImlzZGJ0LWxheWVyLWludGVybGVhdmluZy10YWJsZSI+CisJCQkJPHRncm91cCBjb2xzPSI0IiBhbGlnbj0iY2VudGVyIj4KKwkJCQkJPHRib2R5PgorCQkJCQkJPHJvdz4KKwkJCQkJCQk8ZW50cnk+RFRWX0lTREJUX0xBWUVSKl9USU1FX0lOVEVSTEVBVklORzwvZW50cnk+CisJCQkJCQkJPGVudHJ5Pk1vZGUgMSAoMksgRkZUKTwvZW50cnk+CisJCQkJCQkJPGVudHJ5Pk1vZGUgMiAoNEsgRkZUKTwvZW50cnk+CisJCQkJCQkJPGVudHJ5Pk1vZGUgMyAoOEsgRkZUKTwvZW50cnk+CisJCQkJCQk8L3Jvdz4KKwkJCQkJCTxyb3c+CisJCQkJCQkJPGVudHJ5PjA8L2VudHJ5PgorCQkJCQkJCTxlbnRyeT4wPC9lbnRyeT4KKwkJCQkJCQk8ZW50cnk+MDwvZW50cnk+CisJCQkJCQkJPGVudHJ5PjA8L2VudHJ5PgorCQkJCQkJPC9yb3c+CisJCQkJCQk8cm93PgorCQkJCQkJCTxlbnRyeT4xPC9lbnRyeT4KKwkJCQkJCQk8ZW50cnk+NDwvZW50cnk+CisJCQkJCQkJPGVudHJ5PjI8L2VudHJ5PgorCQkJCQkJCTxlbnRyeT4xPC9lbnRyeT4KKwkJCQkJCTwvcm93PgorCQkJCQkJPHJvdz4KKwkJCQkJCQk8ZW50cnk+MjwvZW50cnk+CisJCQkJCQkJPGVudHJ5Pjg8L2VudHJ5PgorCQkJCQkJCTxlbnRyeT40PC9lbnRyeT4KKwkJCQkJCQk8ZW50cnk+MjwvZW50cnk+CisJCQkJCQk8L3Jvdz4KKwkJCQkJCTxyb3c+CisJCQkJCQkJPGVudHJ5PjQ8L2VudHJ5PgorCQkJCQkJCTxlbnRyeT4xNjwvZW50cnk+CisJCQkJCQkJPGVudHJ5Pjg8L2VudHJ5PgorCQkJCQkJCTxlbnRyeT40PC9lbnRyeT4KKwkJCQkJCTwvcm93PgorCQkJCQk8L3Rib2R5PgorCQkJCTwvdGdyb3VwPgorCQkJPC9pbmZvcm1hbHRhYmxlPgorCQk8L3NlY3Rpb24+CisJCTxzZWN0aW9uIGlkPSJEVFYtQVRTQ01ILUZJQy1WRVIiPgorCQkJPHRpdGxlPjxjb25zdGFudD5EVFZfQVRTQ01IX0ZJQ19WRVI8L2NvbnN0YW50PjwvdGl0bGU+CisJCQk8cGFyYT5WZXJzaW9uIG51bWJlciBvZiB0aGUgRklDIChGYXN0IEluZm9ybWF0aW9uIENoYW5uZWwpIHNpZ25hbGluZyBkYXRhLjwvcGFyYT4KKwkJCTxwYXJhPkZJQyBpcyB1c2VkIGZvciByZWxheWluZyBpbmZvcm1hdGlvbiB0byBhbGxvdyByYXBpZCBzZXJ2aWNlIGFjcXVpc2l0aW9uIGJ5IHRoZSByZWNlaXZlci48L3BhcmE+CisJCQk8cGFyYT5Qb3NzaWJsZSB2YWx1ZXM6IDAsIDEsIDIsIDMsIC4uLiwgMzAsIDMxPC9wYXJhPgorCQk8L3NlY3Rpb24+CisJCTxzZWN0aW9uIGlkPSJEVFYtQVRTQ01ILVBBUkFERS1JRCI+CisJCQk8dGl0bGU+PGNvbnN0YW50PkRUVl9BVFNDTUhfUEFSQURFX0lEPC9jb25zdGFudD48L3RpdGxlPgorCQkJPHBhcmE+UGFyYWRlIGlkZW50aWZpY2F0aW9uIG51bWJlcjwvcGFyYT4KKwkJCTxwYXJhPkEgcGFyYWRlIGlzIGEgY29sbGVjdGlvbiBvZiB1cCB0byBlaWdodCBNSCBncm91cHMsIGNvbnZleWluZyBvbmUgb3IgdHdvIGVuc2VtYmxlcy48L3BhcmE+CisJCQk8cGFyYT5Qb3NzaWJsZSB2YWx1ZXM6IDAsIDEsIDIsIDMsIC4uLiwgMTI2LCAxMjc8L3BhcmE+CisJCTwvc2VjdGlvbj4KKwkJPHNlY3Rpb24gaWQ9IkRUVi1BVFNDTUgtTk9HIj4KKwkJCTx0aXRsZT48Y29uc3RhbnQ+RFRWX0FUU0NNSF9OT0c8L2NvbnN0YW50PjwvdGl0bGU+CisJCQk8cGFyYT5OdW1iZXIgb2YgTUggZ3JvdXBzIHBlciBNSCBzdWJmcmFtZSBmb3IgYSBkZXNpZ25hdGVkIHBhcmFkZS48L3BhcmE+CisJCQk8cGFyYT5Qb3NzaWJsZSB2YWx1ZXM6IDEsIDIsIDMsIDQsIDUsIDYsIDcsIDg8L3BhcmE+CisJCTwvc2VjdGlvbj4KKwkJPHNlY3Rpb24gaWQ9IkRUVi1BVFNDTUgtVE5PRyI+CisJCQk8dGl0bGU+PGNvbnN0YW50PkRUVl9BVFNDTUhfVE5PRzwvY29uc3RhbnQ+PC90aXRsZT4KKwkJCTxwYXJhPlRvdGFsIG51bWJlciBvZiBNSCBncm91cHMgaW5jbHVkaW5nIGFsbCBNSCBncm91cHMgYmVsb25naW5nIHRvIGFsbCBNSCBwYXJhZGVzIGluIG9uZSBNSCBzdWJmcmFtZS48L3BhcmE+CisJCQk8cGFyYT5Qb3NzaWJsZSB2YWx1ZXM6IDAsIDEsIDIsIDMsIC4uLiwgMzAsIDMxPC9wYXJhPgorCQk8L3NlY3Rpb24+CisJCTxzZWN0aW9uIGlkPSJEVFYtQVRTQ01ILVNHTiI+CisJCQk8dGl0bGU+PGNvbnN0YW50PkRUVl9BVFNDTUhfU0dOPC9jb25zdGFudD48L3RpdGxlPgorCQkJPHBhcmE+U3RhcnQgZ3JvdXAgbnVtYmVyLjwvcGFyYT4KKwkJCTxwYXJhPlBvc3NpYmxlIHZhbHVlczogMCwgMSwgMiwgMywgLi4uLCAxNCwgMTU8L3BhcmE+CisJCTwvc2VjdGlvbj4KKwkJPHNlY3Rpb24gaWQ9IkRUVi1BVFNDTUgtUFJDIj4KKwkJCTx0aXRsZT48Y29uc3RhbnQ+RFRWX0FUU0NNSF9QUkM8L2NvbnN0YW50PjwvdGl0bGU+CisJCQk8cGFyYT5QYXJhZGUgcmVwZXRpdGlvbiBjeWNsZS48L3BhcmE+CisJCQk8cGFyYT5Qb3NzaWJsZSB2YWx1ZXM6IDEsIDIsIDMsIDQsIDUsIDYsIDcsIDg8L3BhcmE+CisJCTwvc2VjdGlvbj4KKwkJPHNlY3Rpb24gaWQ9IkRUVi1BVFNDTUgtUlMtRlJBTUUtTU9ERSI+CisJCQk8dGl0bGU+PGNvbnN0YW50PkRUVl9BVFNDTUhfUlNfRlJBTUVfTU9ERTwvY29uc3RhbnQ+PC90aXRsZT4KKwkJCTxwYXJhPlJlZWQgU29sb21vbiAoUlMpIGZyYW1lIG1vZGUuPC9wYXJhPgorCQkJPHBhcmE+UG9zc2libGUgdmFsdWVzIGFyZTo8L3BhcmE+Cis8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9ImF0c2NtaC1ycy1mcmFtZS1tb2RlIj4KKyAgICA8dGl0bGU+ZW51bSBhdHNjbWhfcnNfZnJhbWVfbW9kZTwvdGl0bGU+CisgICAgPHRncm91cCBjb2xzPSIyIj4KKwkmY3MtZGVmOworCTx0aGVhZD4KKwk8cm93PgorCSAgICA8ZW50cnk+SUQ8L2VudHJ5PgorCSAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorCTwvcm93PgorCTwvdGhlYWQ+CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwk8cm93PgorCSAgICA8ZW50cnkgaWQ9IkFUU0NNSC1SU0ZSQU1FLVBSSS1PTkxZIj48Y29uc3RhbnQ+QVRTQ01IX1JTRlJBTUVfUFJJX09OTFk8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5TaW5nbGUgRnJhbWU6IFRoZXJlIGlzIG9ubHkgYSBwcmltYXJ5IFJTIEZyYW1lIGZvciBhbGwKKwkJR3JvdXAgUmVnaW9ucy48L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iQVRTQ01ILVJTRlJBTUUtUFJJLVNFQyI+PGNvbnN0YW50PkFUU0NNSF9SU0ZSQU1FX1BSSV9TRUM8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5EdWFsIEZyYW1lOiBUaGVyZSBhcmUgdHdvIHNlcGFyYXRlIFJTIEZyYW1lczogUHJpbWFyeSBSUworCQlGcmFtZSBmb3IgR3JvdXAgUmVnaW9uIEEgYW5kIEIgYW5kIFNlY29uZGFyeSBSUyBGcmFtZSBmb3IgR3JvdXAKKwkJUmVnaW9uIEMgYW5kIEQuPC9lbnRyeT4KKwk8L3Jvdz4KKyAgICAgICAgPC90Ym9keT4KKyAgICA8L3Rncm91cD4KKzwvdGFibGU+CisJCTwvc2VjdGlvbj4KKwkJPHNlY3Rpb24gaWQ9IkRUVi1BVFNDTUgtUlMtRlJBTUUtRU5TRU1CTEUiPgorCQkJPHRpdGxlPjxjb25zdGFudD5EVFZfQVRTQ01IX1JTX0ZSQU1FX0VOU0VNQkxFPC9jb25zdGFudD48L3RpdGxlPgorCQkJPHBhcmE+UmVlZCBTb2xvbW9uKFJTKSBmcmFtZSBlbnNlbWJsZS48L3BhcmE+CisJCQk8cGFyYT5Qb3NzaWJsZSB2YWx1ZXMgYXJlOjwvcGFyYT4KKzx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iYXRzY21oLXJzLWZyYW1lLWVuc2VtYmxlIj4KKyAgICA8dGl0bGU+ZW51bSBhdHNjbWhfcnNfZnJhbWVfZW5zZW1ibGU8L3RpdGxlPgorICAgIDx0Z3JvdXAgY29scz0iMiI+CisJJmNzLWRlZjsKKwk8dGhlYWQ+CisJPHJvdz4KKwkgICAgPGVudHJ5PklEPC9lbnRyeT4KKwkgICAgPGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKwk8L3Jvdz4KKwk8L3RoZWFkPgorCTx0Ym9keSB2YWxpZ249InRvcCI+CisJPHJvdz4KKwkgICAgPGVudHJ5IGlkPSJBVFNDTUgtUlNGUkFNRS1FTlMtUFJJIj48Y29uc3RhbnQ+QVRTQ01IX1JTRlJBTUVfRU5TX1BSSTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlByaW1hcnkgRW5zZW1ibGUuPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkFUU0NNSC1SU0ZSQU1FLUVOUy1TRUMiPjxjb25zdGFudD5BQVRTQ01IX1JTRlJBTUVfUFJJX1NFQzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlNlY29uZGFyeSBFbnNlbWJsZS48L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iQVRTQ01ILVJTRlJBTUUtUkVTIj48Y29uc3RhbnQ+QUFUU0NNSF9SU0ZSQU1FX1JFUzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlc2VydmVkLiBTaG91bGRuJ3QgYmUgdXNlZC48L2VudHJ5PgorCTwvcm93PgorICAgICAgICA8L3Rib2R5PgorICAgIDwvdGdyb3VwPgorPC90YWJsZT4KKwkJPC9zZWN0aW9uPgorCQk8c2VjdGlvbiBpZD0iRFRWLUFUU0NNSC1SUy1DT0RFLU1PREUtUFJJIj4KKwkJCTx0aXRsZT48Y29uc3RhbnQ+RFRWX0FUU0NNSF9SU19DT0RFX01PREVfUFJJPC9jb25zdGFudD48L3RpdGxlPgorCQkJPHBhcmE+UmVlZCBTb2xvbW9uIChSUykgY29kZSBtb2RlIChwcmltYXJ5KS48L3BhcmE+CisJCQk8cGFyYT5Qb3NzaWJsZSB2YWx1ZXMgYXJlOjwvcGFyYT4KKzx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iYXRzY21oLXJzLWNvZGUtbW9kZSI+CisgICAgPHRpdGxlPmVudW0gYXRzY21oX3JzX2NvZGVfbW9kZTwvdGl0bGU+CisgICAgPHRncm91cCBjb2xzPSIyIj4KKwkmY3MtZGVmOworCTx0aGVhZD4KKwk8cm93PgorCSAgICA8ZW50cnk+SUQ8L2VudHJ5PgorCSAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorCTwvcm93PgorCTwvdGhlYWQ+CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwk8cm93PgorCSAgICA8ZW50cnkgaWQ9IkFUU0NNSC1SU0NPREUtMjExLTE4NyI+PGNvbnN0YW50PkFUU0NNSF9SU0NPREVfMjExXzE4NzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlZWQgU29sb21vbiBjb2RlICgyMTEsMTg3KS48L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iQVRTQ01ILVJTQ09ERS0yMjMtMTg3Ij48Y29uc3RhbnQ+QVRTQ01IX1JTQ09ERV8yMjNfMTg3PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+UmVlZCBTb2xvbW9uIGNvZGUgKDIyMywxODcpLjwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5IGlkPSJBVFNDTUgtUlNDT0RFLTIzNS0xODciPjxjb25zdGFudD5BVFNDTUhfUlNDT0RFXzIzNV8xODc8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5SZWVkIFNvbG9tb24gY29kZSAoMjM1LDE4NykuPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkFUU0NNSC1SU0NPREUtUkVTIj48Y29uc3RhbnQ+QVRTQ01IX1JTQ09ERV9SRVM8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5SZXNlcnZlZC4gU2hvdWxkbid0IGJlIHVzZWQuPC9lbnRyeT4KKwk8L3Jvdz4KKyAgICAgICAgPC90Ym9keT4KKyAgICA8L3Rncm91cD4KKzwvdGFibGU+CisJCTwvc2VjdGlvbj4KKwkJPHNlY3Rpb24gaWQ9IkRUVi1BVFNDTUgtUlMtQ09ERS1NT0RFLVNFQyI+CisJCQk8dGl0bGU+PGNvbnN0YW50PkRUVl9BVFNDTUhfUlNfQ09ERV9NT0RFX1NFQzwvY29uc3RhbnQ+PC90aXRsZT4KKwkJCTxwYXJhPlJlZWQgU29sb21vbiAoUlMpIGNvZGUgbW9kZSAoc2Vjb25kYXJ5KS48L3BhcmE+CisJCQk8cGFyYT5Qb3NzaWJsZSB2YWx1ZXMgYXJlIHRoZSBzYW1lIGFzIGRvY3VtZW50ZWQgb24KKwkJCSAgICAmYXRzY21oLXJzLWNvZGUtbW9kZTs6PC9wYXJhPgorCQk8L3NlY3Rpb24+CisJCTxzZWN0aW9uIGlkPSJEVFYtQVRTQ01ILVNDQ0MtQkxPQ0stTU9ERSI+CisJCQk8dGl0bGU+PGNvbnN0YW50PkRUVl9BVFNDTUhfU0NDQ19CTE9DS19NT0RFPC9jb25zdGFudD48L3RpdGxlPgorCQkJPHBhcmE+U2VyaWVzIENvbmNhdGVuYXRlZCBDb252b2x1dGlvbmFsIENvZGUgQmxvY2sgTW9kZS48L3BhcmE+CisJCQk8cGFyYT5Qb3NzaWJsZSB2YWx1ZXMgYXJlOjwvcGFyYT4KKzx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iYXRzY21oLXNjY2MtYmxvY2stbW9kZSI+CisgICAgPHRpdGxlPmVudW0gYXRzY21oX3NjY19ibG9ja19tb2RlPC90aXRsZT4KKyAgICA8dGdyb3VwIGNvbHM9IjIiPgorCSZjcy1kZWY7CisJPHRoZWFkPgorCTxyb3c+CisJICAgIDxlbnRyeT5JRDwvZW50cnk+CisJICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+CisJPC9yb3c+CisJPC90aGVhZD4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCTxyb3c+CisJICAgIDxlbnRyeSBpZD0iQVRTQ01ILVNDQ0MtQkxLLVNFUCI+PGNvbnN0YW50PkFUU0NNSF9TQ0NDX0JMS19TRVA8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5TZXBhcmF0ZSBTQ0NDOiB0aGUgU0NDQyBvdXRlciBjb2RlIG1vZGUgc2hhbGwgYmUgc2V0IGluZGVwZW5kZW50bHkKKwkJZm9yIGVhY2ggR3JvdXAgUmVnaW9uIChBLCBCLCBDLCBEKTwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5IGlkPSJBVFNDTUgtU0NDQy1CTEstQ09NQiI+PGNvbnN0YW50PkFUU0NNSF9TQ0NDX0JMS19DT01CPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Q29tYmluZWQgU0NDQzogYWxsIGZvdXIgUmVnaW9ucyBzaGFsbCBoYXZlIHRoZSBzYW1lIFNDQ0Mgb3V0ZXIKKwkJY29kZSBtb2RlLjwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5IGlkPSJBVFNDTUgtU0NDQy1CTEstUkVTIj48Y29uc3RhbnQ+QVRTQ01IX1NDQ0NfQkxLX1JFUzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlc2VydmVkLiBTaG91bGRuJ3QgYmUgdXNlZC48L2VudHJ5PgorCTwvcm93PgorICAgICAgICA8L3Rib2R5PgorICAgIDwvdGdyb3VwPgorPC90YWJsZT4KKwkJPC9zZWN0aW9uPgorCQk8c2VjdGlvbiBpZD0iRFRWLUFUU0NNSC1TQ0NDLUNPREUtTU9ERS1BIj4KKwkJCTx0aXRsZT48Y29uc3RhbnQ+RFRWX0FUU0NNSF9TQ0NDX0NPREVfTU9ERV9BPC9jb25zdGFudD48L3RpdGxlPgorCQkJPHBhcmE+U2VyaWVzIENvbmNhdGVuYXRlZCBDb252b2x1dGlvbmFsIENvZGUgUmF0ZS48L3BhcmE+CisJCQk8cGFyYT5Qb3NzaWJsZSB2YWx1ZXMgYXJlOjwvcGFyYT4KKzx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iYXRzY21oLXNjY2MtY29kZS1tb2RlIj4KKyAgICA8dGl0bGU+ZW51bSBhdHNjbWhfc2NjY19jb2RlX21vZGU8L3RpdGxlPgorICAgIDx0Z3JvdXAgY29scz0iMiI+CisJJmNzLWRlZjsKKwk8dGhlYWQ+CisJPHJvdz4KKwkgICAgPGVudHJ5PklEPC9lbnRyeT4KKwkgICAgPGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKwk8L3Jvdz4KKwk8L3RoZWFkPgorCTx0Ym9keSB2YWxpZ249InRvcCI+CisJPHJvdz4KKwkgICAgPGVudHJ5IGlkPSJBVFNDTUgtU0NDQy1DT0RFLUhMRiI+PGNvbnN0YW50PkFUU0NNSF9TQ0NDX0NPREVfSExGPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIG91dGVyIGNvZGUgcmF0ZSBvZiBhIFNDQ0MgQmxvY2sgaXMgMS8yIHJhdGUuPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkFUU0NNSC1TQ0NDLUNPREUtUVRSIj48Y29uc3RhbnQ+QVRTQ01IX1NDQ0NfQ09ERV9RVFI8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgb3V0ZXIgY29kZSByYXRlIG9mIGEgU0NDQyBCbG9jayBpcyAxLzQgcmF0ZS48L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iQVRTQ01ILVNDQ0MtQ09ERS1SRVMiPjxjb25zdGFudD5BVFNDTUhfU0NDQ19DT0RFX1JFUzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnRvIGJlIGRvY3VtZW50ZWQuPC9lbnRyeT4KKwk8L3Jvdz4KKyAgICAgICAgPC90Ym9keT4KKyAgICA8L3Rncm91cD4KKzwvdGFibGU+CisJCTwvc2VjdGlvbj4KKwkJPHNlY3Rpb24gaWQ9IkRUVi1BVFNDTUgtU0NDQy1DT0RFLU1PREUtQiI+CisJCQk8dGl0bGU+PGNvbnN0YW50PkRUVl9BVFNDTUhfU0NDQ19DT0RFX01PREVfQjwvY29uc3RhbnQ+PC90aXRsZT4KKwkJCTxwYXJhPlNlcmllcyBDb25jYXRlbmF0ZWQgQ29udm9sdXRpb25hbCBDb2RlIFJhdGUuPC9wYXJhPgorCQkJPHBhcmE+UG9zc2libGUgdmFsdWVzIGFyZSB0aGUgc2FtZSBhcyBkb2N1bWVudGVkIG9uCisJCQkgICAgJmF0c2NtaC1zY2NjLWNvZGUtbW9kZTsuPC9wYXJhPgorCQk8L3NlY3Rpb24+CisJCTxzZWN0aW9uIGlkPSJEVFYtQVRTQ01ILVNDQ0MtQ09ERS1NT0RFLUMiPgorCQkJPHRpdGxlPjxjb25zdGFudD5EVFZfQVRTQ01IX1NDQ0NfQ09ERV9NT0RFX0M8L2NvbnN0YW50PjwvdGl0bGU+CisJCQk8cGFyYT5TZXJpZXMgQ29uY2F0ZW5hdGVkIENvbnZvbHV0aW9uYWwgQ29kZSBSYXRlLjwvcGFyYT4KKwkJCTxwYXJhPlBvc3NpYmxlIHZhbHVlcyBhcmUgdGhlIHNhbWUgYXMgZG9jdW1lbnRlZCBvbgorCQkJICAgICZhdHNjbWgtc2NjYy1jb2RlLW1vZGU7LjwvcGFyYT4KKwkJPC9zZWN0aW9uPgorCQk8c2VjdGlvbiBpZD0iRFRWLUFUU0NNSC1TQ0NDLUNPREUtTU9ERS1EIj4KKwkJCTx0aXRsZT48Y29uc3RhbnQ+RFRWX0FUU0NNSF9TQ0NDX0NPREVfTU9ERV9EPC9jb25zdGFudD48L3RpdGxlPgorCQkJPHBhcmE+U2VyaWVzIENvbmNhdGVuYXRlZCBDb252b2x1dGlvbmFsIENvZGUgUmF0ZS48L3BhcmE+CisJCQk8cGFyYT5Qb3NzaWJsZSB2YWx1ZXMgYXJlIHRoZSBzYW1lIGFzIGRvY3VtZW50ZWQgb24KKwkJCSAgICAmYXRzY21oLXNjY2MtY29kZS1tb2RlOy48L3BhcmE+CisJCTwvc2VjdGlvbj4KKwk8L3NlY3Rpb24+CisJPHNlY3Rpb24gaWQ9IkRUVi1BUEktVkVSU0lPTiI+CisJPHRpdGxlPjxjb25zdGFudD5EVFZfQVBJX1ZFUlNJT048L2NvbnN0YW50PjwvdGl0bGU+CisJPHBhcmE+UmV0dXJucyB0aGUgbWFqb3IvbWlub3IgdmVyc2lvbiBvZiB0aGUgRFZCIEFQSTwvcGFyYT4KKwk8L3NlY3Rpb24+CisJPHNlY3Rpb24gaWQ9IkRUVi1DT0RFLVJBVEUtSFAiPgorCTx0aXRsZT48Y29uc3RhbnQ+RFRWX0NPREVfUkFURV9IUDwvY29uc3RhbnQ+PC90aXRsZT4KKwk8cGFyYT5Vc2VkIG9uIHRlcnJlc3RyaWFsIHRyYW5zbWlzc2lvbnMuICBUaGUgYWNjZXB0YWJsZSB2YWx1ZXMgYXJlCisJICAgIHRoZSBvbmVzIGRlc2NyaWJlZCBhdCAmZmUtdHJhbnNtaXQtbW9kZS10Oy4KKwk8L3BhcmE+CisJPC9zZWN0aW9uPgorCTxzZWN0aW9uIGlkPSJEVFYtQ09ERS1SQVRFLUxQIj4KKwk8dGl0bGU+PGNvbnN0YW50PkRUVl9DT0RFX1JBVEVfTFA8L2NvbnN0YW50PjwvdGl0bGU+CisJPHBhcmE+VXNlZCBvbiB0ZXJyZXN0cmlhbCB0cmFuc21pc3Npb25zLiBUaGUgYWNjZXB0YWJsZSB2YWx1ZXMgYXJlCisJICAgIHRoZSBvbmVzIGRlc2NyaWJlZCBhdCAmZmUtdHJhbnNtaXQtbW9kZS10Oy4KKwk8L3BhcmE+CisKKwk8L3NlY3Rpb24+CisKKwk8c2VjdGlvbiBpZD0iRFRWLUdVQVJELUlOVEVSVkFMIj4KKwkJPHRpdGxlPjxjb25zdGFudD5EVFZfR1VBUkRfSU5URVJWQUw8L2NvbnN0YW50PjwvdGl0bGU+CisKKwkJPHBhcmE+UG9zc2libGUgdmFsdWVzIGFyZTo8L3BhcmE+CisKKzxzZWN0aW9uIGlkPSJmZS1ndWFyZC1pbnRlcnZhbC10Ij4KKzx0aXRsZT5Nb2R1bGF0aW9uIGd1YXJkIGludGVydmFsPC90aXRsZT4KKworPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJmZS1ndWFyZC1pbnRlcnZhbCI+CisgICAgPHRpdGxlPmVudW0gZmVfZ3VhcmRfaW50ZXJ2YWw8L3RpdGxlPgorICAgIDx0Z3JvdXAgY29scz0iMiI+CisJJmNzLWRlZjsKKwk8dGhlYWQ+CisJPHJvdz4KKwkgICAgPGVudHJ5PklEPC9lbnRyeT4KKwkgICAgPGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKwk8L3Jvdz4KKwk8L3RoZWFkPgorCTx0Ym9keSB2YWxpZ249InRvcCI+CisJPHJvdz4KKwkgICAgPGVudHJ5IGlkPSJHVUFSRC1JTlRFUlZBTC1BVVRPIj48Y29uc3RhbnQ+R1VBUkRfSU5URVJWQUxfQVVUTzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkF1dG9kZXRlY3QgdGhlIGd1YXJkIGludGVydmFsPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkdVQVJELUlOVEVSVkFMLTEtMTI4Ij48Y29uc3RhbnQ+R1VBUkRfSU5URVJWQUxfMV8xMjg8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5HdWFyZCBpbnRlcnZhbCAxLzEyODwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5IGlkPSJHVUFSRC1JTlRFUlZBTC0xLTMyIj48Y29uc3RhbnQ+R1VBUkRfSU5URVJWQUxfMV8zMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pkd1YXJkIGludGVydmFsIDEvMzI8L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iR1VBUkQtSU5URVJWQUwtMS0xNiI+PGNvbnN0YW50PkdVQVJEX0lOVEVSVkFMXzFfMTY8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5HdWFyZCBpbnRlcnZhbCAxLzE2PC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkdVQVJELUlOVEVSVkFMLTEtOCI+PGNvbnN0YW50PkdVQVJEX0lOVEVSVkFMXzFfODwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pkd1YXJkIGludGVydmFsIDEvODwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5IGlkPSJHVUFSRC1JTlRFUlZBTC0xLTQiPjxjb25zdGFudD5HVUFSRF9JTlRFUlZBTF8xXzQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5HdWFyZCBpbnRlcnZhbCAxLzQ8L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iR1VBUkQtSU5URVJWQUwtMTktMTI4Ij48Y29uc3RhbnQ+R1VBUkRfSU5URVJWQUxfMTlfMTI4PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+R3VhcmQgaW50ZXJ2YWwgMTkvMTI4PC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkdVQVJELUlOVEVSVkFMLTE5LTI1NiI+PGNvbnN0YW50PkdVQVJEX0lOVEVSVkFMXzE5XzI1NjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pkd1YXJkIGludGVydmFsIDE5LzI1NjwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5IGlkPSJHVUFSRC1JTlRFUlZBTC1QTjQyMCI+PGNvbnN0YW50PkdVQVJEX0lOVEVSVkFMX1BONDIwPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+UE4gbGVuZ3RoIDQyMCAoMS80KTwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5IGlkPSJHVUFSRC1JTlRFUlZBTC1QTjU5NSI+PGNvbnN0YW50PkdVQVJEX0lOVEVSVkFMX1BONTk1PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+UE4gbGVuZ3RoIDU5NSAoMS82KTwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5IGlkPSJHVUFSRC1JTlRFUlZBTC1QTjk0NSI+PGNvbnN0YW50PkdVQVJEX0lOVEVSVkFMX1BOOTQ1PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+UE4gbGVuZ3RoIDk0NSAoMS85KTwvZW50cnk+CisJPC9yb3c+CisgICAgICAgIDwvdGJvZHk+CisgICAgPC90Z3JvdXA+Cis8L3RhYmxlPgorCisJCTxwYXJhPk5vdGVzOjwvcGFyYT4KKwkJPHBhcmE+MSkgSWYgPGNvbnN0YW50PkRUVl9HVUFSRF9JTlRFUlZBTDwvY29uc3RhbnQ+IGlzIHNldCB0aGUgPGNvbnN0YW50PkdVQVJEX0lOVEVSVkFMX0FVVE88L2NvbnN0YW50PiB0aGUgaGFyZHdhcmUgd2lsbAorCQkJdHJ5IHRvIGZpbmQgdGhlIGNvcnJlY3QgZ3VhcmQgaW50ZXJ2YWwgKGlmIGNhcGFibGUpIGFuZCB3aWxsIHVzZSBUTUNDIHRvIGZpbGwKKwkJCWluIHRoZSBtaXNzaW5nIHBhcmFtZXRlcnMuPC9wYXJhPgorCQk8cGFyYT4yKSBJbnRlcnZhbHMgMS8xMjgsIDE5LzEyOCBhbmQgMTkvMjU2IGFyZSB1c2VkIG9ubHkgZm9yIERWQi1UMiBhdCBwcmVzZW50PC9wYXJhPgorCQk8cGFyYT4zKSBEVE1CIHNwZWNpZmllcyBQTjQyMCwgUE41OTUgYW5kIFBOOTQ1LjwvcGFyYT4KKzwvc2VjdGlvbj4KKwk8L3NlY3Rpb24+CisJPHNlY3Rpb24gaWQ9IkRUVi1UUkFOU01JU1NJT04tTU9ERSI+CisJCTx0aXRsZT48Y29uc3RhbnQ+RFRWX1RSQU5TTUlTU0lPTl9NT0RFPC9jb25zdGFudD48L3RpdGxlPgorCisJCTxwYXJhPlNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNhcnJpZXJzIHVzZWQgYnkgdGhlIHN0YW5kYXJkLgorCQkgICAgVGhpcyBpcyB1c2VkIG9ubHkgb24gT0ZUTS1iYXNlZCBzdGFuZGFyZHMsIGUuIGcuCisJCSAgICBEVkItVC9UMiwgSVNEQi1ULCBEVE1CPC9wYXJhPgorCis8c2VjdGlvbiBpZD0iZmUtdHJhbnNtaXQtbW9kZS10Ij4KKzx0aXRsZT5lbnVtIGZlX3RyYW5zbWl0X21vZGU6IE51bWJlciBvZiBjYXJyaWVycyBwZXIgY2hhbm5lbDwvdGl0bGU+CisKKzx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iZmUtdHJhbnNtaXQtbW9kZSI+CisgICAgPHRpdGxlPmVudW0gZmVfdHJhbnNtaXRfbW9kZTwvdGl0bGU+CisgICAgPHRncm91cCBjb2xzPSIyIj4KKwkmY3MtZGVmOworCTx0aGVhZD4KKwk8cm93PgorCSAgICA8ZW50cnk+SUQ8L2VudHJ5PgorCSAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorCTwvcm93PgorCTwvdGhlYWQ+CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwk8cm93PgorCSAgICA8ZW50cnkgaWQ9IlRSQU5TTUlTU0lPTi1NT0RFLUFVVE8iPjxjb25zdGFudD5UUkFOU01JU1NJT05fTU9ERV9BVVRPPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+QXV0b2RldGVjdCB0cmFuc21pc3Npb24gbW9kZS4gVGhlIGhhcmR3YXJlIHdpbGwgdHJ5IHRvIGZpbmQKKwkJdGhlIGNvcnJlY3QgRkZULXNpemUgKGlmIGNhcGFibGUpIHRvIGZpbGwgaW4gdGhlIG1pc3NpbmcKKwkJcGFyYW1ldGVycy48L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iVFJBTlNNSVNTSU9OLU1PREUtMUsiPjxjb25zdGFudD5UUkFOU01JU1NJT05fTU9ERV8xSzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRyYW5zbWlzc2lvbiBtb2RlIDFLPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IlRSQU5TTUlTU0lPTi1NT0RFLTJLIj48Y29uc3RhbnQ+VFJBTlNNSVNTSU9OX01PREVfMks8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5UcmFuc21pc3Npb24gbW9kZSAySzwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5IGlkPSJUUkFOU01JU1NJT04tTU9ERS04SyI+PGNvbnN0YW50PlRSQU5TTUlTU0lPTl9NT0RFXzhLPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+VHJhbnNtaXNzaW9uIG1vZGUgOEs8L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iVFJBTlNNSVNTSU9OLU1PREUtNEsiPjxjb25zdGFudD5UUkFOU01JU1NJT05fTU9ERV80SzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRyYW5zbWlzc2lvbiBtb2RlIDRLPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IlRSQU5TTUlTU0lPTi1NT0RFLTE2SyI+PGNvbnN0YW50PlRSQU5TTUlTU0lPTl9NT0RFXzE2SzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRyYW5zbWlzc2lvbiBtb2RlIDE2SzwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5IGlkPSJUUkFOU01JU1NJT04tTU9ERS0zMksiPjxjb25zdGFudD5UUkFOU01JU1NJT05fTU9ERV8zMks8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5UcmFuc21pc3Npb24gbW9kZSAzMks8L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iVFJBTlNNSVNTSU9OLU1PREUtQzEiPjxjb25zdGFudD5UUkFOU01JU1NJT05fTU9ERV9DMTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlNpbmdsZSBDYXJyaWVyIChDPTEpIHRyYW5zbWlzc2lvbiBtb2RlIChEVE1CKTwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5IGlkPSJUUkFOU01JU1NJT04tTU9ERS1DMzc4MCI+PGNvbnN0YW50PlRSQU5TTUlTU0lPTl9NT0RFX0MzNzgwPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+TXVsdGkgQ2FycmllciAoQz0zNzgwKSB0cmFuc21pc3Npb24gbW9kZSAoRFRNQik8L2VudHJ5PgorCTwvcm93PgorICAgICAgICA8L3Rib2R5PgorICAgIDwvdGdyb3VwPgorPC90YWJsZT4KKworCisJCTxwYXJhPk5vdGVzOjwvcGFyYT4KKwkJPHBhcmE+MSkgSVNEQi1UIHN1cHBvcnRzIHRocmVlIGNhcnJpZXIvc3ltYm9sLXNpemU6IDhLLCA0SywgMksuIEl0IGlzIGNhbGxlZAorCQkJJ21vZGUnIGluIHRoZSBzdGFuZGFyZDogTW9kZSAxIGlzIDJLLCBtb2RlIDIgaXMgNEssIG1vZGUgMyBpcyA4SzwvcGFyYT4KKworCQk8cGFyYT4yKSBJZiA8Y29uc3RhbnQ+RFRWX1RSQU5TTUlTU0lPTl9NT0RFPC9jb25zdGFudD4gaXMgc2V0IHRoZSA8Y29uc3RhbnQ+VFJBTlNNSVNTSU9OX01PREVfQVVUTzwvY29uc3RhbnQ+IHRoZQorCQkJaGFyZHdhcmUgd2lsbCB0cnkgdG8gZmluZCB0aGUgY29ycmVjdCBGRlQtc2l6ZSAoaWYgY2FwYWJsZSkgYW5kIHdpbGwKKwkJCXVzZSBUTUNDIHRvIGZpbGwgaW4gdGhlIG1pc3NpbmcgcGFyYW1ldGVycy48L3BhcmE+CisJCTxwYXJhPjMpIERWQi1UIHNwZWNpZmllcyAySyBhbmQgOEsgYXMgdmFsaWQgc2l6ZXMuPC9wYXJhPgorCQk8cGFyYT40KSBEVkItVDIgc3BlY2lmaWVzIDFLLCAySywgNEssIDhLLCAxNksgYW5kIDMySy48L3BhcmE+CisJCTxwYXJhPjUpIERUTUIgc3BlY2lmaWVzIEMxIGFuZCBDMzc4MC48L3BhcmE+Cis8L3NlY3Rpb24+CisJPC9zZWN0aW9uPgorCTxzZWN0aW9uIGlkPSJEVFYtSElFUkFSQ0hZIj4KKwk8dGl0bGU+PGNvbnN0YW50PkRUVl9ISUVSQVJDSFk8L2NvbnN0YW50PjwvdGl0bGU+CisJPHBhcmE+RnJvbnRlbmQgaGllcmFyY2h5PC9wYXJhPgorCisKKzxzZWN0aW9uIGlkPSJmZS1oaWVyYXJjaHktdCI+Cis8dGl0bGU+RnJvbnRlbmQgaGllcmFyY2h5PC90aXRsZT4KKworPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJmZS1oaWVyYXJjaHkiPgorICAgIDx0aXRsZT5lbnVtIGZlX2hpZXJhcmNoeTwvdGl0bGU+CisgICAgPHRncm91cCBjb2xzPSIyIj4KKwkmY3MtZGVmOworCTx0aGVhZD4KKwk8cm93PgorCSAgICA8ZW50cnk+SUQ8L2VudHJ5PgorCSAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorCTwvcm93PgorCTwvdGhlYWQ+CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwk8cm93PgorCSAgICAgPGVudHJ5IGlkPSJISUVSQVJDSFktTk9ORSI+PGNvbnN0YW50PkhJRVJBUkNIWV9OT05FPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Tm8gaGllcmFyY2h5PC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICAgPGVudHJ5IGlkPSJISUVSQVJDSFktQVVUTyI+PGNvbnN0YW50PkhJRVJBUkNIWV9BVVRPPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+QXV0b2RldGVjdCBoaWVyYXJjaHkgKGlmIHN1cHBvcnRlZCk8L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgICA8ZW50cnkgaWQ9IkhJRVJBUkNIWS0xIj48Y29uc3RhbnQ+SElFUkFSQ0hZXzE8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5IaWVyYXJjaHkgMTwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkgICAgIDxlbnRyeSBpZD0iSElFUkFSQ0hZLTIiPjxjb25zdGFudD5ISUVSQVJDSFlfMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkhpZXJhcmNoeSAyPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICAgPGVudHJ5IGlkPSJISUVSQVJDSFktNCI+PGNvbnN0YW50PkhJRVJBUkNIWV80PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+SGllcmFyY2h5IDQ8L2VudHJ5PgorCTwvcm93PgorICAgICAgICA8L3Rib2R5PgorICAgIDwvdGdyb3VwPgorPC90YWJsZT4KKzwvc2VjdGlvbj4KKworCTwvc2VjdGlvbj4KKwk8c2VjdGlvbiBpZD0iRFRWLVNUUkVBTS1JRCI+CisJPHRpdGxlPjxjb25zdGFudD5EVFZfU1RSRUFNX0lEPC9jb25zdGFudD48L3RpdGxlPgorCTxwYXJhPkRWQi1TMiwgRFZCLVQyIGFuZCBJU0RCLVMgc3VwcG9ydCB0aGUgdHJhbnNtaXNzaW9uIG9mIHNldmVyYWwKKwkgICAgICBzdHJlYW1zIG9uIGEgc2luZ2xlIHRyYW5zcG9ydCBzdHJlYW0uCisJICAgICAgVGhpcyBwcm9wZXJ0eSBlbmFibGVzIHRoZSBEVkIgZHJpdmVyIHRvIGhhbmRsZSBzdWJzdHJlYW0gZmlsdGVyaW5nLAorCSAgICAgIHdoZW4gc3VwcG9ydGVkIGJ5IHRoZSBoYXJkd2FyZS4KKwkgICAgICBCeSBkZWZhdWx0LCBzdWJzdHJlYW0gZmlsdGVyaW5nIGlzIGRpc2FibGVkLgorCTwvcGFyYT48cGFyYT4KKwkgICAgICBGb3IgRFZCLVMyIGFuZCBEVkItVDIsIHRoZSB2YWxpZCBzdWJzdHJlYW0gaWQgcmFuZ2UgaXMgZnJvbSAwIHRvIDI1NS4KKwk8L3BhcmE+PHBhcmE+CisJICAgICAgRm9yIElTREIsIHRoZSB2YWxpZCBzdWJzdHJlYW0gaWQgcmFuZ2UgaXMgZnJvbSAxIHRvIDY1NTM1LgorCTwvcGFyYT48cGFyYT4KKwkgICAgICBUbyBkaXNhYmxlIGl0LCB5b3Ugc2hvdWxkIHVzZSB0aGUgc3BlY2lhbCBtYWNybyBOT19TVFJFQU1fSURfRklMVEVSLgorCTwvcGFyYT48cGFyYT4KKwkgICAgICBOb3RlOiBhbnkgdmFsdWUgb3V0c2lkZSB0aGUgaWQgcmFuZ2UgYWxzbyBkaXNhYmxlcyBmaWx0ZXJpbmcuCisJPC9wYXJhPgorCTwvc2VjdGlvbj4KKwk8c2VjdGlvbiBpZD0iRFRWLURWQlQyLVBMUC1JRC1MRUdBQ1kiPgorCQk8dGl0bGU+PGNvbnN0YW50PkRUVl9EVkJUMl9QTFBfSURfTEVHQUNZPC9jb25zdGFudD48L3RpdGxlPgorCQk8cGFyYT5PYnNvbGV0ZSwgcmVwbGFjZWQgd2l0aCBEVFZfU1RSRUFNX0lELjwvcGFyYT4KKwk8L3NlY3Rpb24+CisJPHNlY3Rpb24gaWQ9IkRUVi1FTlVNLURFTFNZUyI+CisJCTx0aXRsZT48Y29uc3RhbnQ+RFRWX0VOVU1fREVMU1lTPC9jb25zdGFudD48L3RpdGxlPgorCQk8cGFyYT5BIE11bHRpIHN0YW5kYXJkIGZyb250ZW5kIG5lZWRzIHRvIGFkdmVydGlzZSB0aGUgZGVsaXZlcnkgc3lzdGVtcyBwcm92aWRlZC4KKwkJCUFwcGxpY2F0aW9ucyBuZWVkIHRvIGVudW1lcmF0ZSB0aGUgcHJvdmlkZWQgZGVsaXZlcnkgc3lzdGVtcywgYmVmb3JlIHVzaW5nCisJCQlhbnkgb3RoZXIgb3BlcmF0aW9uIHdpdGggdGhlIGZyb250ZW5kLiBQcmlvciB0byBpdCdzIGludHJvZHVjdGlvbiwKKwkJCUZFX0dFVF9JTkZPIHdhcyB1c2VkIHRvIGRldGVybWluZSBhIGZyb250ZW5kIHR5cGUuIEEgZnJvbnRlbmQgd2hpY2gKKwkJCXByb3ZpZGVzIG1vcmUgdGhhbiBhIHNpbmdsZSBkZWxpdmVyeSBzeXN0ZW0sIEZFX0dFVF9JTkZPIGRvZXNuJ3QgaGVscCBtdWNoLgorCQkJQXBwbGljYXRpb25zIHdoaWNoIGludGVuZHMgdG8gdXNlIGEgbXVsdGlzdGFuZGFyZCBmcm9udGVuZCBtdXN0IGVudW1lcmF0ZQorCQkJdGhlIGRlbGl2ZXJ5IHN5c3RlbXMgYXNzb2NpYXRlZCB3aXRoIGl0LCByYXRoZXIgdGhhbiB0cnlpbmcgdG8gdXNlCisJCQlGRV9HRVRfSU5GTy4gSW4gdGhlIGNhc2Ugb2YgYSBsZWdhY3kgZnJvbnRlbmQsIHRoZSByZXN1bHQgaXMganVzdCB0aGUgc2FtZQorCQkJYXMgd2l0aCBGRV9HRVRfSU5GTywgYnV0IGluIGEgbW9yZSBzdHJ1Y3R1cmVkIGZvcm1hdCA8L3BhcmE+CisJPC9zZWN0aW9uPgorCTxzZWN0aW9uIGlkPSJEVFYtSU5URVJMRUFWSU5HIj4KKwk8dGl0bGU+PGNvbnN0YW50PkRUVl9JTlRFUkxFQVZJTkc8L2NvbnN0YW50PjwvdGl0bGU+CisKKzxwYXJhPlRpbWUgaW50ZXJsZWF2aW5nIHRvIGJlIHVzZWQuIEN1cnJlbnRseSwgdXNlZCBvbmx5IG9uIERUTUIuPC9wYXJhPgorCis8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9ImZlLWludGVybGVhdmluZyI+CisgICAgPHRpdGxlPmVudW0gZmVfaW50ZXJsZWF2aW5nPC90aXRsZT4KKyAgICA8dGdyb3VwIGNvbHM9IjIiPgorCSZjcy1kZWY7CisJPHRoZWFkPgorCTxyb3c+CisJICAgIDxlbnRyeT5JRDwvZW50cnk+CisJICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+CisJPC9yb3c+CisJPC90aGVhZD4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCTxyb3c+CisJICAgIDxlbnRyeSBpZD0iSU5URVJMRUFWSU5HLU5PTkUiPjxjb25zdGFudD5JTlRFUkxFQVZJTkdfTk9ORTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk5vIGludGVybGVhdmluZy48L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iSU5URVJMRUFWSU5HLUFVVE8iPjxjb25zdGFudD5JTlRFUkxFQVZJTkdfQVVUTzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkF1dG8tZGV0ZWN0IGludGVybGVhdmluZy48L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBpZD0iSU5URVJMRUFWSU5HLTI0MCI+PGNvbnN0YW50PklOVEVSTEVBVklOR18yNDA8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5JbnRlcmxlYXZpbmcgb2YgMjQwIHN5bWJvbHMuPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IklOVEVSTEVBVklORy03MjAiPjxjb25zdGFudD5JTlRFUkxFQVZJTkdfNzIwPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+SW50ZXJsZWF2aW5nIG9mIDcyMCBzeW1ib2xzLjwvZW50cnk+CisJPC9yb3c+CisgICAgICAgIDwvdGJvZHk+CisgICAgPC90Z3JvdXA+Cis8L3RhYmxlPgorCisJPC9zZWN0aW9uPgorCTxzZWN0aW9uIGlkPSJEVFYtTE5BIj4KKwk8dGl0bGU+PGNvbnN0YW50PkRUVl9MTkE8L2NvbnN0YW50PjwvdGl0bGU+CisJPHBhcmE+TG93LW5vaXNlIGFtcGxpZmllci48L3BhcmE+CisJPHBhcmE+SGFyZHdhcmUgbWlnaHQgb2ZmZXIgY29udHJvbGxhYmxlIExOQSB3aGljaCBjYW4gYmUgc2V0IG1hbnVhbGx5CisJCXVzaW5nIHRoYXQgcGFyYW1ldGVyLiBVc3VhbGx5IExOQSBjb3VsZCBiZSBmb3VuZCBvbmx5IGZyb20KKwkJdGVycmVzdHJpYWwgZGV2aWNlcyBpZiBhdCBhbGwuPC9wYXJhPgorCTxwYXJhPlBvc3NpYmxlIHZhbHVlczogMCwgMSwgTE5BX0FVVE88L3BhcmE+CisJPHBhcmE+MCwgTE5BIG9mZjwvcGFyYT4KKwk8cGFyYT4xLCBMTkEgb248L3BhcmE+CisJPHBhcmE+dXNlIHRoZSBzcGVjaWFsIG1hY3JvIExOQV9BVVRPIHRvIHNldCBMTkEgYXV0bzwvcGFyYT4KKwk8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CisKKwk8c2VjdGlvbiBpZD0iZnJvbnRlbmQtc3RhdC1wcm9wZXJ0aWVzIj4KKwk8dGl0bGU+RnJvbnRlbmQgc3RhdGlzdGljcyBpbmRpY2F0b3JzPC90aXRsZT4KKwk8cGFyYT5UaGUgdmFsdWVzIGFyZSByZXR1cm5lZCB2aWEgPGNvbnN0YW50PmR0dl9wcm9wZXJ0eS5zdGF0PC9jb25zdGFudD4uCisJICAgICAgSWYgdGhlIHByb3BlcnR5IGlzIHN1cHBvcnRlZCwgPGNvbnN0YW50PmR0dl9wcm9wZXJ0eS5zdGF0LmxlbjwvY29uc3RhbnQ+IGlzIGJpZ2dlciB0aGFuIHplcm8uPC9wYXJhPgorCTxwYXJhPkZvciBtb3N0IGRlbGl2ZXJ5IHN5c3RlbXMsIDxjb25zdGFudD5kdHZfcHJvcGVydHkuc3RhdC5sZW48L2NvbnN0YW50PgorCSAgICAgIHdpbGwgYmUgMSBpZiB0aGUgc3RhdHMgaXMgc3VwcG9ydGVkLCBhbmQgdGhlIHByb3BlcnRpZXMgd2lsbAorCSAgICAgIHJldHVybiBhIHNpbmdsZSB2YWx1ZSBmb3IgZWFjaCBwYXJhbWV0ZXIuPC9wYXJhPgorCTxwYXJhPkl0IHNob3VsZCBiZSBub3RlZCwgaG93ZXZlciwgdGhhdCBuZXcgT0ZETSBkZWxpdmVyeSBzeXN0ZW1zCisJICAgICAgbGlrZSBJU0RCIGNhbiB1c2UgZGlmZmVyZW50IG1vZHVsYXRpb24gdHlwZXMgZm9yIGVhY2ggZ3JvdXAgb2YKKwkgICAgICBjYXJyaWVycy4gT24gc3VjaCBzdGFuZGFyZHMsIHVwIHRvIDMgZ3JvdXBzIG9mIHN0YXRpc3RpY3MgY2FuIGJlCisJICAgICAgcHJvdmlkZWQsIGFuZCA8Y29uc3RhbnQ+ZHR2X3Byb3BlcnR5LnN0YXQubGVuPC9jb25zdGFudD4gaXMgdXBkYXRlZAorCSAgICAgIHRvIHJlZmxlY3QgdGhlICJnbG9iYWwiIG1ldHJpY3MsIHBsdXMgb25lIG1ldHJpYyBwZXIgZWFjaCBjYXJyaWVyCisJICAgICAgZ3JvdXAgKGNhbGxlZCAibGF5ZXIiIG9uIElTREIpLjwvcGFyYT4KKwk8cGFyYT5TbywgaW4gb3JkZXIgdG8gYmUgY29uc2lzdGVudCB3aXRoIG90aGVyIGRlbGl2ZXJ5IHN5c3RlbXMsIHRoZSBmaXJzdAorCSAgICAgIHZhbHVlIGF0IDxsaW5rIGxpbmtlbmQ9ImR0di1zdGF0cyI+PGNvbnN0YW50PmR0dl9wcm9wZXJ0eS5zdGF0LmR0dl9zdGF0czwvY29uc3RhbnQ+PC9saW5rPgorCSAgICAgIGFycmF5IHJlZmVycyB0byB0aGUgZ2xvYmFsIG1ldHJpYy4gVGhlIG90aGVyIGVsZW1lbnRzIG9mIHRoZSBhcnJheQorCSAgICAgIHJlcHJlc2VudCBlYWNoIGxheWVyLCBzdGFydGluZyBmcm9tIGxheWVyIEEoaW5kZXggMSksCisJICAgICAgbGF5ZXIgQiAoaW5kZXggMikgYW5kIHNvIG9uLjwvcGFyYT4KKwk8cGFyYT5UaGUgbnVtYmVyIG9mIGZpbGxlZCBlbGVtZW50cyBhcmUgc3RvcmVkIGF0IDxjb25zdGFudD5kdHZfcHJvcGVydHkuc3RhdC5sZW48L2NvbnN0YW50Pi48L3BhcmE+CisJPHBhcmE+RWFjaCBlbGVtZW50IG9mIHRoZSA8Y29uc3RhbnQ+ZHR2X3Byb3BlcnR5LnN0YXQuZHR2X3N0YXRzPC9jb25zdGFudD4gYXJyYXkgY29uc2lzdHMgb24gdHdvIGVsZW1lbnRzOjwvcGFyYT4KKwk8aXRlbWl6ZWRsaXN0IG1hcms9J29wZW5jaXJjbGUnPgorCQk8bGlzdGl0ZW0+PHBhcmE+PGNvbnN0YW50PnN2YWx1ZTwvY29uc3RhbnQ+IG9yIDxjb25zdGFudD51dmFsdWU8L2NvbnN0YW50Piwgd2hlcmUKKwkJCTxjb25zdGFudD5zdmFsdWU8L2NvbnN0YW50PiBpcyBmb3Igc2lnbmVkIHZhbHVlcyBvZiB0aGUgbWVhc3VyZSAoZEIgbWVhc3VyZXMpCisJCQlhbmQgPGNvbnN0YW50PnV2YWx1ZTwvY29uc3RhbnQ+IGlzIGZvciB1bnNpZ25lZCB2YWx1ZXMgKGNvdW50ZXJzLCByZWxhdGl2ZSBzY2FsZSk8L3BhcmE+PC9saXN0aXRlbT4KKwkJPGxpc3RpdGVtPjxwYXJhPjxjb25zdGFudD5zY2FsZTwvY29uc3RhbnQ+IC0gU2NhbGUgZm9yIHRoZSB2YWx1ZS4gSXQgY2FuIGJlOjwvcGFyYT4KKwkJCTxpdGVtaXplZGxpc3QgbWFyaz0nYnVsbGV0JyBpZD0iZmVjYXAtc2NhbGUtcGFyYW1zIj4KKwkJCQk8bGlzdGl0ZW0gaWQ9IkZFLVNDQUxFLU5PVC1BVkFJTEFCTEUiPjxwYXJhPjxjb25zdGFudD5GRV9TQ0FMRV9OT1RfQVZBSUxBQkxFPC9jb25zdGFudD4gLSBUaGUgcGFyYW1ldGVyIGlzIHN1cHBvcnRlZCBieSB0aGUgZnJvbnRlbmQsIGJ1dCBpdCB3YXMgbm90IHBvc3NpYmxlIHRvIGNvbGxlY3QgaXQgKGNvdWxkIGJlIGEgdHJhbnNpdG9yeSBvciBwZXJtYW5lbnQgY29uZGl0aW9uKTwvcGFyYT48L2xpc3RpdGVtPgorCQkJCTxsaXN0aXRlbSBpZD0iRkUtU0NBTEUtREVDSUJFTCI+PHBhcmE+PGNvbnN0YW50PkZFX1NDQUxFX0RFQ0lCRUw8L2NvbnN0YW50PiAtIHBhcmFtZXRlciBpcyBhIHNpZ25lZCB2YWx1ZSwgbWVhc3VyZWQgaW4gMS8xMDAwIGRCPC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtIGlkPSJGRS1TQ0FMRS1SRUxBVElWRSI+PHBhcmE+PGNvbnN0YW50PkZFX1NDQUxFX1JFTEFUSVZFPC9jb25zdGFudD4gLSBwYXJhbWV0ZXIgaXMgYSB1bnNpZ25lZCB2YWx1ZSwgd2hlcmUgMCBtZWFucyAwJSBhbmQgNjU1MzUgbWVhbnMgMTAwJS48L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0gaWQ9IkZFLVNDQUxFLUNPVU5URVIiPjxwYXJhPjxjb25zdGFudD5GRV9TQ0FMRV9DT1VOVEVSPC9jb25zdGFudD4gLSBwYXJhbWV0ZXIgaXMgYSB1bnNpZ25lZCB2YWx1ZSB0aGF0IGNvdW50cyB0aGUgb2NjdXJyZW5jZSBvZiBhbiBldmVudCwgbGlrZSBiaXQgZXJyb3IsIGJsb2NrIGVycm9yLCBvciBsYXBzZWQgdGltZS48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTwvaXRlbWl6ZWRsaXN0PgorCQk8L2xpc3RpdGVtPgorCTwvaXRlbWl6ZWRsaXN0PgorCTxzZWN0aW9uIGlkPSJEVFYtU1RBVC1TSUdOQUwtU1RSRU5HVEgiPgorCQk8dGl0bGU+PGNvbnN0YW50PkRUVl9TVEFUX1NJR05BTF9TVFJFTkdUSDwvY29uc3RhbnQ+PC90aXRsZT4KKwkJPHBhcmE+SW5kaWNhdGVzIHRoZSBzaWduYWwgc3RyZW5ndGggbGV2ZWwgYXQgdGhlIGFuYWxvZyBwYXJ0IG9mIHRoZSB0dW5lciBvciBvZiB0aGUgZGVtb2QuPC9wYXJhPgorCQk8cGFyYT5Qb3NzaWJsZSBzY2FsZXMgZm9yIHRoaXMgbWV0cmljIGFyZTo8L3BhcmE+CisJCTxpdGVtaXplZGxpc3QgbWFyaz0nYnVsbGV0Jz4KKwkJCTxsaXN0aXRlbT48cGFyYT48Y29uc3RhbnQ+RkVfU0NBTEVfTk9UX0FWQUlMQUJMRTwvY29uc3RhbnQ+IC0gaXQgZmFpbGVkIHRvIG1lYXN1cmUgaXQsIG9yIHRoZSBtZWFzdXJlbWVudCB3YXMgbm90IGNvbXBsZXRlIHlldC48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48Y29uc3RhbnQ+RkVfU0NBTEVfREVDSUJFTDwvY29uc3RhbnQ+IC0gc2lnbmFsIHN0cmVuZ3RoIGlzIGluIDAuMDAxIGRCbSB1bml0cywgcG93ZXIgbWVhc3VyZWQgaW4gbWlsaXdhdHRzLiBUaGlzIHZhbHVlIGlzIGdlbmVyYWxseSBuZWdhdGl2ZS48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48Y29uc3RhbnQ+RkVfU0NBTEVfUkVMQVRJVkU8L2NvbnN0YW50PiAtIFRoZSBmcm9udGVuZCBwcm92aWRlcyBhIDAlIHRvIDEwMCUgbWVhc3VyZW1lbnQgZm9yIHBvd2VyIChhY3R1YWxseSwgMCB0byA2NTUzNSkuPC9wYXJhPjwvbGlzdGl0ZW0+CisJCTwvaXRlbWl6ZWRsaXN0PgorCTwvc2VjdGlvbj4KKwk8c2VjdGlvbiBpZD0iRFRWLVNUQVQtQ05SIj4KKwkJPHRpdGxlPjxjb25zdGFudD5EVFZfU1RBVF9DTlI8L2NvbnN0YW50PjwvdGl0bGU+CisJCTxwYXJhPkluZGljYXRlcyB0aGUgU2lnbmFsIHRvIE5vaXNlIHJhdGlvIGZvciB0aGUgbWFpbiBjYXJyaWVyLjwvcGFyYT4KKwkJPHBhcmE+UG9zc2libGUgc2NhbGVzIGZvciB0aGlzIG1ldHJpYyBhcmU6PC9wYXJhPgorCQk8aXRlbWl6ZWRsaXN0IG1hcms9J2J1bGxldCc+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGNvbnN0YW50PkZFX1NDQUxFX05PVF9BVkFJTEFCTEU8L2NvbnN0YW50PiAtIGl0IGZhaWxlZCB0byBtZWFzdXJlIGl0LCBvciB0aGUgbWVhc3VyZW1lbnQgd2FzIG5vdCBjb21wbGV0ZSB5ZXQuPC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGNvbnN0YW50PkZFX1NDQUxFX0RFQ0lCRUw8L2NvbnN0YW50PiAtIFNpZ25hbC9Ob2lzZSByYXRpbyBpcyBpbiAwLjAwMSBkQiB1bml0cy48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48Y29uc3RhbnQ+RkVfU0NBTEVfUkVMQVRJVkU8L2NvbnN0YW50PiAtIFRoZSBmcm9udGVuZCBwcm92aWRlcyBhIDAlIHRvIDEwMCUgbWVhc3VyZW1lbnQgZm9yIFNpZ25hbC9Ob2lzZSAoYWN0dWFsbHksIDAgdG8gNjU1MzUpLjwvcGFyYT48L2xpc3RpdGVtPgorCQk8L2l0ZW1pemVkbGlzdD4KKwk8L3NlY3Rpb24+CisJPHNlY3Rpb24gaWQ9IkRUVi1TVEFULVBSRS1FUlJPUi1CSVQtQ09VTlQiPgorCQk8dGl0bGU+PGNvbnN0YW50PkRUVl9TVEFUX1BSRV9FUlJPUl9CSVRfQ09VTlQ8L2NvbnN0YW50PjwvdGl0bGU+CisJCTxwYXJhPk1lYXN1cmVzIHRoZSBudW1iZXIgb2YgYml0IGVycm9ycyBiZWZvcmUgdGhlIGZvcndhcmQgZXJyb3IgY29ycmVjdGlvbiAoRkVDKSBvbiB0aGUgaW5uZXIgY29kaW5nIGJsb2NrIChiZWZvcmUgVml0ZXJiaSwgTERQQyBvciBvdGhlciBpbm5lciBjb2RlKS48L3BhcmE+CisJCTxwYXJhPlRoaXMgbWVhc3VyZSBpcyB0YWtlbiBkdXJpbmcgdGhlIHNhbWUgaW50ZXJ2YWwgYXMgPGNvbnN0YW50PkRUVl9TVEFUX1BSRV9UT1RBTF9CSVRfQ09VTlQ8L2NvbnN0YW50Pi48L3BhcmE+CisJCTxwYXJhPkluIG9yZGVyIHRvIGdldCB0aGUgQkVSIChCaXQgRXJyb3IgUmF0ZSkgbWVhc3VyZW1lbnQsIGl0IHNob3VsZCBiZSBkaXZpZGVkIGJ5CisJCTxsaW5rIGxpbmtlbmQ9IkRUVi1TVEFULVBSRS1UT1RBTC1CSVQtQ09VTlQiPjxjb25zdGFudD5EVFZfU1RBVF9QUkVfVE9UQUxfQklUX0NPVU5UPC9jb25zdGFudD48L2xpbms+LjwvcGFyYT4KKwkJPHBhcmE+VGhpcyBtZWFzdXJlbWVudCBpcyBtb25vdG9uaWNhbGx5IGluY3JlYXNlZCwgYXMgdGhlIGZyb250ZW5kIGdldHMgbW9yZSBiaXQgY291bnQgbWVhc3VyZW1lbnRzLgorCQkgICAgICBUaGUgZnJvbnRlbmQgbWF5IHJlc2V0IGl0IHdoZW4gYSBjaGFubmVsL3RyYW5zcG9uZGVyIGlzIHR1bmVkLjwvcGFyYT4KKwkJPHBhcmE+UG9zc2libGUgc2NhbGVzIGZvciB0aGlzIG1ldHJpYyBhcmU6PC9wYXJhPgorCQk8aXRlbWl6ZWRsaXN0IG1hcms9J2J1bGxldCc+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGNvbnN0YW50PkZFX1NDQUxFX05PVF9BVkFJTEFCTEU8L2NvbnN0YW50PiAtIGl0IGZhaWxlZCB0byBtZWFzdXJlIGl0LCBvciB0aGUgbWVhc3VyZW1lbnQgd2FzIG5vdCBjb21wbGV0ZSB5ZXQuPC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGNvbnN0YW50PkZFX1NDQUxFX0NPVU5URVI8L2NvbnN0YW50PiAtIE51bWJlciBvZiBlcnJvciBiaXRzIGNvdW50ZWQgYmVmb3JlIHRoZSBpbm5lciBjb2RpbmcuPC9wYXJhPjwvbGlzdGl0ZW0+CisJCTwvaXRlbWl6ZWRsaXN0PgorCTwvc2VjdGlvbj4KKwk8c2VjdGlvbiBpZD0iRFRWLVNUQVQtUFJFLVRPVEFMLUJJVC1DT1VOVCI+CisJCTx0aXRsZT48Y29uc3RhbnQ+RFRWX1NUQVRfUFJFX1RPVEFMX0JJVF9DT1VOVDwvY29uc3RhbnQ+PC90aXRsZT4KKwkJPHBhcmE+TWVhc3VyZXMgdGhlIGFtb3VudCBvZiBiaXRzIHJlY2VpdmVkIGJlZm9yZSB0aGUgaW5uZXIgY29kZSBibG9jaywgZHVyaW5nIHRoZSBzYW1lIHBlcmlvZCBhcworCQk8bGluayBsaW5rZW5kPSJEVFYtU1RBVC1QUkUtRVJST1ItQklULUNPVU5UIj48Y29uc3RhbnQ+RFRWX1NUQVRfUFJFX0VSUk9SX0JJVF9DT1VOVDwvY29uc3RhbnQ+PC9saW5rPiBtZWFzdXJlbWVudCB3YXMgdGFrZW4uPC9wYXJhPgorCQk8cGFyYT5JdCBzaG91bGQgYmUgbm90ZWQgdGhhdCB0aGlzIG1lYXN1cmVtZW50IGNhbiBiZSBzbWFsbGVyIHRoYW4gdGhlIHRvdGFsIGFtb3VudCBvZiBiaXRzIG9uIHRoZSB0cmFuc3BvcnQgc3RyZWFtLAorCQkgICAgICBhcyB0aGUgZnJvbnRlbmQgbWF5IG5lZWQgdG8gbWFudWFsbHkgcmVzdGFydCB0aGUgbWVhc3VyZW1lbnQsIGxvc2luZyBzb21lIGRhdGEgYmV0d2VlbiBlYWNoIG1lYXN1cmVtZW50IGludGVydmFsLjwvcGFyYT4KKwkJPHBhcmE+VGhpcyBtZWFzdXJlbWVudCBpcyBtb25vdG9uaWNhbGx5IGluY3JlYXNlZCwgYXMgdGhlIGZyb250ZW5kIGdldHMgbW9yZSBiaXQgY291bnQgbWVhc3VyZW1lbnRzLgorCQkgICAgICBUaGUgZnJvbnRlbmQgbWF5IHJlc2V0IGl0IHdoZW4gYSBjaGFubmVsL3RyYW5zcG9uZGVyIGlzIHR1bmVkLjwvcGFyYT4KKwkJPHBhcmE+UG9zc2libGUgc2NhbGVzIGZvciB0aGlzIG1ldHJpYyBhcmU6PC9wYXJhPgorCQk8aXRlbWl6ZWRsaXN0IG1hcms9J2J1bGxldCc+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGNvbnN0YW50PkZFX1NDQUxFX05PVF9BVkFJTEFCTEU8L2NvbnN0YW50PiAtIGl0IGZhaWxlZCB0byBtZWFzdXJlIGl0LCBvciB0aGUgbWVhc3VyZW1lbnQgd2FzIG5vdCBjb21wbGV0ZSB5ZXQuPC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGNvbnN0YW50PkZFX1NDQUxFX0NPVU5URVI8L2NvbnN0YW50PiAtIE51bWJlciBvZiBiaXRzIGNvdW50ZWQgd2hpbGUgbWVhc3VyaW5nCisJCQkJIDxsaW5rIGxpbmtlbmQ9IkRUVi1TVEFULVBSRS1FUlJPUi1CSVQtQ09VTlQiPjxjb25zdGFudD5EVFZfU1RBVF9QUkVfRVJST1JfQklUX0NPVU5UPC9jb25zdGFudD48L2xpbms+LjwvcGFyYT48L2xpc3RpdGVtPgorCQk8L2l0ZW1pemVkbGlzdD4KKwk8L3NlY3Rpb24+CisJPHNlY3Rpb24gaWQ9IkRUVi1TVEFULVBPU1QtRVJST1ItQklULUNPVU5UIj4KKwkJPHRpdGxlPjxjb25zdGFudD5EVFZfU1RBVF9QT1NUX0VSUk9SX0JJVF9DT1VOVDwvY29uc3RhbnQ+PC90aXRsZT4KKwkJPHBhcmE+TWVhc3VyZXMgdGhlIG51bWJlciBvZiBiaXQgZXJyb3JzIGFmdGVyIHRoZSBmb3J3YXJkIGVycm9yIGNvcnJlY3Rpb24gKEZFQykgZG9uZSBieSBpbm5lciBjb2RlIGJsb2NrIChhZnRlciBWaXRlcmJpLCBMRFBDIG9yIG90aGVyIGlubmVyIGNvZGUpLjwvcGFyYT4KKwkJPHBhcmE+VGhpcyBtZWFzdXJlIGlzIHRha2VuIGR1cmluZyB0aGUgc2FtZSBpbnRlcnZhbCBhcyA8Y29uc3RhbnQ+RFRWX1NUQVRfUE9TVF9UT1RBTF9CSVRfQ09VTlQ8L2NvbnN0YW50Pi48L3BhcmE+CisJCTxwYXJhPkluIG9yZGVyIHRvIGdldCB0aGUgQkVSIChCaXQgRXJyb3IgUmF0ZSkgbWVhc3VyZW1lbnQsIGl0IHNob3VsZCBiZSBkaXZpZGVkIGJ5CisJCTxsaW5rIGxpbmtlbmQ9IkRUVi1TVEFULVBPU1QtVE9UQUwtQklULUNPVU5UIj48Y29uc3RhbnQ+RFRWX1NUQVRfUE9TVF9UT1RBTF9CSVRfQ09VTlQ8L2NvbnN0YW50PjwvbGluaz4uPC9wYXJhPgorCQk8cGFyYT5UaGlzIG1lYXN1cmVtZW50IGlzIG1vbm90b25pY2FsbHkgaW5jcmVhc2VkLCBhcyB0aGUgZnJvbnRlbmQgZ2V0cyBtb3JlIGJpdCBjb3VudCBtZWFzdXJlbWVudHMuCisJCSAgICAgIFRoZSBmcm9udGVuZCBtYXkgcmVzZXQgaXQgd2hlbiBhIGNoYW5uZWwvdHJhbnNwb25kZXIgaXMgdHVuZWQuPC9wYXJhPgorCQk8cGFyYT5Qb3NzaWJsZSBzY2FsZXMgZm9yIHRoaXMgbWV0cmljIGFyZTo8L3BhcmE+CisJCTxpdGVtaXplZGxpc3QgbWFyaz0nYnVsbGV0Jz4KKwkJCTxsaXN0aXRlbT48cGFyYT48Y29uc3RhbnQ+RkVfU0NBTEVfTk9UX0FWQUlMQUJMRTwvY29uc3RhbnQ+IC0gaXQgZmFpbGVkIHRvIG1lYXN1cmUgaXQsIG9yIHRoZSBtZWFzdXJlbWVudCB3YXMgbm90IGNvbXBsZXRlIHlldC48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48Y29uc3RhbnQ+RkVfU0NBTEVfQ09VTlRFUjwvY29uc3RhbnQ+IC0gTnVtYmVyIG9mIGVycm9yIGJpdHMgY291bnRlZCBhZnRlciB0aGUgaW5uZXIgY29kaW5nLjwvcGFyYT48L2xpc3RpdGVtPgorCQk8L2l0ZW1pemVkbGlzdD4KKwk8L3NlY3Rpb24+CisJPHNlY3Rpb24gaWQ9IkRUVi1TVEFULVBPU1QtVE9UQUwtQklULUNPVU5UIj4KKwkJPHRpdGxlPjxjb25zdGFudD5EVFZfU1RBVF9QT1NUX1RPVEFMX0JJVF9DT1VOVDwvY29uc3RhbnQ+PC90aXRsZT4KKwkJPHBhcmE+TWVhc3VyZXMgdGhlIGFtb3VudCBvZiBiaXRzIHJlY2VpdmVkIGFmdGVyIHRoZSBpbm5lciBjb2RpbmcsIGR1cmluZyB0aGUgc2FtZSBwZXJpb2QgYXMKKwkJPGxpbmsgbGlua2VuZD0iRFRWLVNUQVQtUE9TVC1FUlJPUi1CSVQtQ09VTlQiPjxjb25zdGFudD5EVFZfU1RBVF9QT1NUX0VSUk9SX0JJVF9DT1VOVDwvY29uc3RhbnQ+PC9saW5rPiBtZWFzdXJlbWVudCB3YXMgdGFrZW4uPC9wYXJhPgorCQk8cGFyYT5JdCBzaG91bGQgYmUgbm90ZWQgdGhhdCB0aGlzIG1lYXN1cmVtZW50IGNhbiBiZSBzbWFsbGVyIHRoYW4gdGhlIHRvdGFsIGFtb3VudCBvZiBiaXRzIG9uIHRoZSB0cmFuc3BvcnQgc3RyZWFtLAorCQkgICAgICBhcyB0aGUgZnJvbnRlbmQgbWF5IG5lZWQgdG8gbWFudWFsbHkgcmVzdGFydCB0aGUgbWVhc3VyZW1lbnQsIGxvc2luZyBzb21lIGRhdGEgYmV0d2VlbiBlYWNoIG1lYXN1cmVtZW50IGludGVydmFsLjwvcGFyYT4KKwkJPHBhcmE+VGhpcyBtZWFzdXJlbWVudCBpcyBtb25vdG9uaWNhbGx5IGluY3JlYXNlZCwgYXMgdGhlIGZyb250ZW5kIGdldHMgbW9yZSBiaXQgY291bnQgbWVhc3VyZW1lbnRzLgorCQkgICAgICBUaGUgZnJvbnRlbmQgbWF5IHJlc2V0IGl0IHdoZW4gYSBjaGFubmVsL3RyYW5zcG9uZGVyIGlzIHR1bmVkLjwvcGFyYT4KKwkJPHBhcmE+UG9zc2libGUgc2NhbGVzIGZvciB0aGlzIG1ldHJpYyBhcmU6PC9wYXJhPgorCQk8aXRlbWl6ZWRsaXN0IG1hcms9J2J1bGxldCc+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGNvbnN0YW50PkZFX1NDQUxFX05PVF9BVkFJTEFCTEU8L2NvbnN0YW50PiAtIGl0IGZhaWxlZCB0byBtZWFzdXJlIGl0LCBvciB0aGUgbWVhc3VyZW1lbnQgd2FzIG5vdCBjb21wbGV0ZSB5ZXQuPC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGNvbnN0YW50PkZFX1NDQUxFX0NPVU5URVI8L2NvbnN0YW50PiAtIE51bWJlciBvZiBiaXRzIGNvdW50ZWQgd2hpbGUgbWVhc3VyaW5nCisJCQkJIDxsaW5rIGxpbmtlbmQ9IkRUVi1TVEFULVBPU1QtRVJST1ItQklULUNPVU5UIj48Y29uc3RhbnQ+RFRWX1NUQVRfUE9TVF9FUlJPUl9CSVRfQ09VTlQ8L2NvbnN0YW50PjwvbGluaz4uPC9wYXJhPjwvbGlzdGl0ZW0+CisJCTwvaXRlbWl6ZWRsaXN0PgorCTwvc2VjdGlvbj4KKwk8c2VjdGlvbiBpZD0iRFRWLVNUQVQtRVJST1ItQkxPQ0stQ09VTlQiPgorCQk8dGl0bGU+PGNvbnN0YW50PkRUVl9TVEFUX0VSUk9SX0JMT0NLX0NPVU5UPC9jb25zdGFudD48L3RpdGxlPgorCQk8cGFyYT5NZWFzdXJlcyB0aGUgbnVtYmVyIG9mIGJsb2NrIGVycm9ycyBhZnRlciB0aGUgb3V0ZXIgZm9yd2FyZCBlcnJvciBjb3JyZWN0aW9uIGNvZGluZyAoYWZ0ZXIgUmVlZC1Tb2xvbW9uIG9yIG90aGVyIG91dGVyIGNvZGUpLjwvcGFyYT4KKwkJPHBhcmE+VGhpcyBtZWFzdXJlbWVudCBpcyBtb25vdG9uaWNhbGx5IGluY3JlYXNlZCwgYXMgdGhlIGZyb250ZW5kIGdldHMgbW9yZSBiaXQgY291bnQgbWVhc3VyZW1lbnRzLgorCQkgICAgICBUaGUgZnJvbnRlbmQgbWF5IHJlc2V0IGl0IHdoZW4gYSBjaGFubmVsL3RyYW5zcG9uZGVyIGlzIHR1bmVkLjwvcGFyYT4KKwkJPHBhcmE+UG9zc2libGUgc2NhbGVzIGZvciB0aGlzIG1ldHJpYyBhcmU6PC9wYXJhPgorCQk8aXRlbWl6ZWRsaXN0IG1hcms9J2J1bGxldCc+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGNvbnN0YW50PkZFX1NDQUxFX05PVF9BVkFJTEFCTEU8L2NvbnN0YW50PiAtIGl0IGZhaWxlZCB0byBtZWFzdXJlIGl0LCBvciB0aGUgbWVhc3VyZW1lbnQgd2FzIG5vdCBjb21wbGV0ZSB5ZXQuPC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGNvbnN0YW50PkZFX1NDQUxFX0NPVU5URVI8L2NvbnN0YW50PiAtIE51bWJlciBvZiBlcnJvciBibG9ja3MgY291bnRlZCBhZnRlciB0aGUgb3V0ZXIgY29kaW5nLjwvcGFyYT48L2xpc3RpdGVtPgorCQk8L2l0ZW1pemVkbGlzdD4KKwk8L3NlY3Rpb24+CisJPHNlY3Rpb24gaWQ9IkRUVi1TVEFULVRPVEFMLUJMT0NLLUNPVU5UIj4KKwkJPHRpdGxlPjxjb25zdGFudD5EVFYtU1RBVF9UT1RBTF9CTE9DS19DT1VOVDwvY29uc3RhbnQ+PC90aXRsZT4KKwkJPHBhcmE+TWVhc3VyZXMgdGhlIHRvdGFsIG51bWJlciBvZiBibG9ja3MgcmVjZWl2ZWQgZHVyaW5nIHRoZSBzYW1lIHBlcmlvZCBhcworCQk8bGluayBsaW5rZW5kPSJEVFYtU1RBVC1FUlJPUi1CTE9DSy1DT1VOVCI+PGNvbnN0YW50PkRUVl9TVEFUX0VSUk9SX0JMT0NLX0NPVU5UPC9jb25zdGFudD48L2xpbms+IG1lYXN1cmVtZW50IHdhcyB0YWtlbi48L3BhcmE+CisJCTxwYXJhPkl0IGNhbiBiZSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgUEVSIGluZGljYXRvciwgYnkgZGl2aWRpbmcKKwkJPGxpbmsgbGlua2VuZD0iRFRWLVNUQVQtRVJST1ItQkxPQ0stQ09VTlQiPjxjb25zdGFudD5EVFZfU1RBVF9FUlJPUl9CTE9DS19DT1VOVDwvY29uc3RhbnQ+PC9saW5rPgorCQlieSA8bGluayBsaW5rZW5kPSJEVFYtU1RBVC1UT1RBTC1CTE9DSy1DT1VOVCI+PGNvbnN0YW50PkRUVi1TVEFULVRPVEFMLUJMT0NLLUNPVU5UPC9jb25zdGFudD48L2xpbms+LjwvcGFyYT4KKwkJPHBhcmE+UG9zc2libGUgc2NhbGVzIGZvciB0aGlzIG1ldHJpYyBhcmU6PC9wYXJhPgorCQk8aXRlbWl6ZWRsaXN0IG1hcms9J2J1bGxldCc+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGNvbnN0YW50PkZFX1NDQUxFX05PVF9BVkFJTEFCTEU8L2NvbnN0YW50PiAtIGl0IGZhaWxlZCB0byBtZWFzdXJlIGl0LCBvciB0aGUgbWVhc3VyZW1lbnQgd2FzIG5vdCBjb21wbGV0ZSB5ZXQuPC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGNvbnN0YW50PkZFX1NDQUxFX0NPVU5URVI8L2NvbnN0YW50PiAtIE51bWJlciBvZiBibG9ja3MgY291bnRlZCB3aGlsZSBtZWFzdXJpbmcKKwkJCTxsaW5rIGxpbmtlbmQ9IkRUVi1TVEFULUVSUk9SLUJMT0NLLUNPVU5UIj48Y29uc3RhbnQ+RFRWX1NUQVRfRVJST1JfQkxPQ0tfQ09VTlQ8L2NvbnN0YW50PjwvbGluaz4uPC9wYXJhPjwvbGlzdGl0ZW0+CisJCTwvaXRlbWl6ZWRsaXN0PgorCTwvc2VjdGlvbj4KKwk8L3NlY3Rpb24+CisKKwk8c2VjdGlvbiBpZD0iZnJvbnRlbmQtcHJvcGVydHktdGVycmVzdHJpYWwtc3lzdGVtcyI+CisJPHRpdGxlPlByb3BlcnRpZXMgdXNlZCBvbiB0ZXJyZXN0cmlhbCBkZWxpdmVyeSBzeXN0ZW1zPC90aXRsZT4KKwkJPHNlY3Rpb24gaWQ9ImR2YnQtcGFyYW1zIj4KKwkJCTx0aXRsZT5EVkItVCBkZWxpdmVyeSBzeXN0ZW08L3RpdGxlPgorCQkJPHBhcmE+VGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIGFyZSB2YWxpZCBmb3IgRFZCLVQ6PC9wYXJhPgorCQkJPGl0ZW1pemVkbGlzdCBtYXJrPSdvcGVuY2lyY2xlJz4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUFQSS1WRVJTSU9OIj48Y29uc3RhbnQ+RFRWX0FQSV9WRVJTSU9OPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1ERUxJVkVSWS1TWVNURU0iPjxjb25zdGFudD5EVFZfREVMSVZFUllfU1lTVEVNPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1UVU5FIj48Y29uc3RhbnQ+RFRWX1RVTkU8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUNMRUFSIj48Y29uc3RhbnQ+RFRWX0NMRUFSPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1GUkVRVUVOQ1kiPjxjb25zdGFudD5EVFZfRlJFUVVFTkNZPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1NT0RVTEFUSU9OIj48Y29uc3RhbnQ+RFRWX01PRFVMQVRJT048L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUJBTkRXSURUSC1IWiI+PGNvbnN0YW50PkRUVl9CQU5EV0lEVEhfSFo8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUlOVkVSU0lPTiI+PGNvbnN0YW50PkRUVl9JTlZFUlNJT048L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUNPREUtUkFURS1IUCI+PGNvbnN0YW50PkRUVl9DT0RFX1JBVEVfSFA8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUNPREUtUkFURS1MUCI+PGNvbnN0YW50PkRUVl9DT0RFX1JBVEVfTFA8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUdVQVJELUlOVEVSVkFMIj48Y29uc3RhbnQ+RFRWX0dVQVJEX0lOVEVSVkFMPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1UUkFOU01JU1NJT04tTU9ERSI+PGNvbnN0YW50PkRUVl9UUkFOU01JU1NJT05fTU9ERTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtSElFUkFSQ0hZIj48Y29uc3RhbnQ+RFRWX0hJRVJBUkNIWTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtTE5BIj48Y29uc3RhbnQ+RFRWX0xOQTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPC9pdGVtaXplZGxpc3Q+CisJCQk8cGFyYT5JbiBhZGRpdGlvbiwgdGhlIDxsaW5rIGxpbmtlbmQ9ImZyb250ZW5kLXN0YXQtcHJvcGVydGllcyI+RFRWIFFvUyBzdGF0aXN0aWNzPC9saW5rPiBhcmUgYWxzbyB2YWxpZC48L3BhcmE+CisJCTwvc2VjdGlvbj4KKwkJPHNlY3Rpb24gaWQ9ImR2YnQyLXBhcmFtcyI+CisJCQk8dGl0bGU+RFZCLVQyIGRlbGl2ZXJ5IHN5c3RlbTwvdGl0bGU+CisJCQk8cGFyYT5EVkItVDIgc3VwcG9ydCBpcyBjdXJyZW50bHkgaW4gdGhlIGVhcmx5IHN0YWdlcworCQkJb2YgZGV2ZWxvcG1lbnQsIHNvIGV4cGVjdCB0aGF0IHRoaXMgc2VjdGlvbiBtYXlncm93IGFuZCBiZWNvbWUKKwkJCW1vcmUgZGV0YWlsZWQgd2l0aCB0aW1lLjwvcGFyYT4KKwkJPHBhcmE+VGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIGFyZSB2YWxpZCBmb3IgRFZCLVQyOjwvcGFyYT4KKwkJPGl0ZW1pemVkbGlzdCBtYXJrPSdvcGVuY2lyY2xlJz4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtQVBJLVZFUlNJT04iPjxjb25zdGFudD5EVFZfQVBJX1ZFUlNJT048L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtREVMSVZFUlktU1lTVEVNIj48Y29uc3RhbnQ+RFRWX0RFTElWRVJZX1NZU1RFTTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1UVU5FIj48Y29uc3RhbnQ+RFRWX1RVTkU8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtQ0xFQVIiPjxjb25zdGFudD5EVFZfQ0xFQVI8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtRlJFUVVFTkNZIj48Y29uc3RhbnQ+RFRWX0ZSRVFVRU5DWTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1NT0RVTEFUSU9OIj48Y29uc3RhbnQ+RFRWX01PRFVMQVRJT048L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtQkFORFdJRFRILUhaIj48Y29uc3RhbnQ+RFRWX0JBTkRXSURUSF9IWjwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1JTlZFUlNJT04iPjxjb25zdGFudD5EVFZfSU5WRVJTSU9OPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUNPREUtUkFURS1IUCI+PGNvbnN0YW50PkRUVl9DT0RFX1JBVEVfSFA8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtQ09ERS1SQVRFLUxQIj48Y29uc3RhbnQ+RFRWX0NPREVfUkFURV9MUDwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1HVUFSRC1JTlRFUlZBTCI+PGNvbnN0YW50PkRUVl9HVUFSRF9JTlRFUlZBTDwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1UUkFOU01JU1NJT04tTU9ERSI+PGNvbnN0YW50PkRUVl9UUkFOU01JU1NJT05fTU9ERTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1ISUVSQVJDSFkiPjxjb25zdGFudD5EVFZfSElFUkFSQ0hZPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLVNUUkVBTS1JRCI+PGNvbnN0YW50PkRUVl9TVFJFQU1fSUQ8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtTE5BIj48Y29uc3RhbnQ+RFRWX0xOQTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQk8L2l0ZW1pemVkbGlzdD4KKwkJPHBhcmE+SW4gYWRkaXRpb24sIHRoZSA8bGluayBsaW5rZW5kPSJmcm9udGVuZC1zdGF0LXByb3BlcnRpZXMiPkRUViBRb1Mgc3RhdGlzdGljczwvbGluaz4gYXJlIGFsc28gdmFsaWQuPC9wYXJhPgorCQk8L3NlY3Rpb24+CisJCTxzZWN0aW9uIGlkPSJpc2RidCI+CisJCTx0aXRsZT5JU0RCLVQgZGVsaXZlcnkgc3lzdGVtPC90aXRsZT4KKwkJPHBhcmE+VGhpcyBJU0RCLVQvSVNEQi1Uc2IgQVBJIGV4dGVuc2lvbiBzaG91bGQgcmVmbGVjdCBhbGwgaW5mb3JtYXRpb24KKwkJCW5lZWRlZCB0byB0dW5lIGFueSBJU0RCLVQvSVNEQi1Uc2IgaGFyZHdhcmUuIE9mIGNvdXJzZSBpdCBpcyBwb3NzaWJsZQorCQkJdGhhdCBzb21lIHZlcnkgc29waGlzdGljYXRlZCBkZXZpY2VzIHdvbid0IG5lZWQgY2VydGFpbiBwYXJhbWV0ZXJzIHRvCisJCQl0dW5lLjwvcGFyYT4KKwkJPHBhcmE+VGhlIGluZm9ybWF0aW9uIGdpdmVuIGhlcmUgc2hvdWxkIGhlbHAgYXBwbGljYXRpb24gd3JpdGVycyB0byBrbm93IGhvdworCQkJdG8gaGFuZGxlIElTREItVCBhbmQgSVNEQi1Uc2IgaGFyZHdhcmUgdXNpbmcgdGhlIExpbnV4IERWQi1BUEkuPC9wYXJhPgorCQk8cGFyYT5UaGUgZGV0YWlscyBnaXZlbiBoZXJlIGFib3V0IElTREItVCBhbmQgSVNEQi1Uc2IgYXJlIGp1c3QgZW5vdWdoIHRvCisJCQliYXNpY2FsbHkgc2hvdyB0aGUgZGVwZW5kZW5jaWVzIGJldHdlZW4gdGhlIG5lZWRlZCBwYXJhbWV0ZXIgdmFsdWVzLAorCQkJYnV0IHN1cmVseSBzb21lIGluZm9ybWF0aW9uIGlzIGxlZnQgb3V0LiBGb3IgbW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbgorCQkJc2VlIHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRzOjwvcGFyYT4KKwkJPHBhcmE+QVJJQiBTVEQtQjMxIC0gIlRyYW5zbWlzc2lvbiBTeXN0ZW0gZm9yIERpZ2l0YWwgVGVycmVzdHJpYWwKKwkJCVRlbGV2aXNpb24gQnJvYWRjYXN0aW5nIiBhbmQ8L3BhcmE+CisJCTxwYXJhPkFSSUIgVFItQjE0IC0gIk9wZXJhdGlvbmFsIEd1aWRlbGluZXMgZm9yIERpZ2l0YWwgVGVycmVzdHJpYWwKKwkJCVRlbGV2aXNpb24gQnJvYWRjYXN0aW5nIi48L3BhcmE+CisJCTxwYXJhPkluIG9yZGVyIHRvIHVuZGVyc3RhbmQgdGhlIElTREIgc3BlY2lmaWMgcGFyYW1ldGVycywKKwkJCW9uZSBoYXMgdG8gaGF2ZSBzb21lIGtub3dsZWRnZSB0aGUgY2hhbm5lbCBzdHJ1Y3R1cmUgaW4KKwkJCUlTREItVCBhbmQgSVNEQi1Uc2IuIEkuZS4gaXQgaGFzIHRvIGJlIGtub3duIHRvCisJCQl0aGUgcmVhZGVyIHRoYXQgYW4gSVNEQi1UIGNoYW5uZWwgY29uc2lzdHMgb2YgMTMgc2VnbWVudHMsCisJCQl0aGF0IGl0IGNhbiBoYXZlIHVwIHRvIDMgbGF5ZXIgc2hhcmluZyB0aG9zZSBzZWdtZW50cywKKwkJCWFuZCB0aGluZ3MgbGlrZSB0aGF0LjwvcGFyYT4KKwkJPHBhcmE+VGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIGFyZSB2YWxpZCBmb3IgSVNEQi1UOjwvcGFyYT4KKwkJPGl0ZW1pemVkbGlzdCBtYXJrPSdvcGVuY2lyY2xlJz4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtQVBJLVZFUlNJT04iPjxjb25zdGFudD5EVFZfQVBJX1ZFUlNJT048L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtREVMSVZFUlktU1lTVEVNIj48Y29uc3RhbnQ+RFRWX0RFTElWRVJZX1NZU1RFTTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1UVU5FIj48Y29uc3RhbnQ+RFRWX1RVTkU8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtQ0xFQVIiPjxjb25zdGFudD5EVFZfQ0xFQVI8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtRlJFUVVFTkNZIj48Y29uc3RhbnQ+RFRWX0ZSRVFVRU5DWTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1CQU5EV0lEVEgtSFoiPjxjb25zdGFudD5EVFZfQkFORFdJRFRIX0haPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUlOVkVSU0lPTiI+PGNvbnN0YW50PkRUVl9JTlZFUlNJT048L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtR1VBUkQtSU5URVJWQUwiPjxjb25zdGFudD5EVFZfR1VBUkRfSU5URVJWQUw8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtVFJBTlNNSVNTSU9OLU1PREUiPjxjb25zdGFudD5EVFZfVFJBTlNNSVNTSU9OX01PREU8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtSVNEQlQtTEFZRVItRU5BQkxFRCI+PGNvbnN0YW50PkRUVl9JU0RCVF9MQVlFUl9FTkFCTEVEPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUlTREJULVBBUlRJQUwtUkVDRVBUSU9OIj48Y29uc3RhbnQ+RFRWX0lTREJUX1BBUlRJQUxfUkVDRVBUSU9OPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUlTREJULVNPVU5ELUJST0FEQ0FTVElORyI+PGNvbnN0YW50PkRUVl9JU0RCVF9TT1VORF9CUk9BRENBU1RJTkc8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtSVNEQlQtU0ItU1VCQ0hBTk5FTC1JRCI+PGNvbnN0YW50PkRUVl9JU0RCVF9TQl9TVUJDSEFOTkVMX0lEPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUlTREJULVNCLVNFR01FTlQtSURYIj48Y29uc3RhbnQ+RFRWX0lTREJUX1NCX1NFR01FTlRfSURYPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUlTREJULVNCLVNFR01FTlQtQ09VTlQiPjxjb25zdGFudD5EVFZfSVNEQlRfU0JfU0VHTUVOVF9DT1VOVDwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1JU0RCVC1MQVlFUi1GRUMiPjxjb25zdGFudD5EVFZfSVNEQlRfTEFZRVJBX0ZFQzwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1JU0RCVC1MQVlFUi1NT0RVTEFUSU9OIj48Y29uc3RhbnQ+RFRWX0lTREJUX0xBWUVSQV9NT0RVTEFUSU9OPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUlTREJULUxBWUVSLVNFR01FTlQtQ09VTlQiPjxjb25zdGFudD5EVFZfSVNEQlRfTEFZRVJBX1NFR01FTlRfQ09VTlQ8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtSVNEQlQtTEFZRVItVElNRS1JTlRFUkxFQVZJTkciPjxjb25zdGFudD5EVFZfSVNEQlRfTEFZRVJBX1RJTUVfSU5URVJMRUFWSU5HPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUlTREJULUxBWUVSLUZFQyI+PGNvbnN0YW50PkRUVl9JU0RCVF9MQVlFUkJfRkVDPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUlTREJULUxBWUVSLU1PRFVMQVRJT04iPjxjb25zdGFudD5EVFZfSVNEQlRfTEFZRVJCX01PRFVMQVRJT048L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtSVNEQlQtTEFZRVItU0VHTUVOVC1DT1VOVCI+PGNvbnN0YW50PkRUVl9JU0RCVF9MQVlFUkJfU0VHTUVOVF9DT1VOVDwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1JU0RCVC1MQVlFUi1USU1FLUlOVEVSTEVBVklORyI+PGNvbnN0YW50PkRUVl9JU0RCVF9MQVlFUkJfVElNRV9JTlRFUkxFQVZJTkc8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtSVNEQlQtTEFZRVItRkVDIj48Y29uc3RhbnQ+RFRWX0lTREJUX0xBWUVSQ19GRUM8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtSVNEQlQtTEFZRVItTU9EVUxBVElPTiI+PGNvbnN0YW50PkRUVl9JU0RCVF9MQVlFUkNfTU9EVUxBVElPTjwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1JU0RCVC1MQVlFUi1TRUdNRU5ULUNPVU5UIj48Y29uc3RhbnQ+RFRWX0lTREJUX0xBWUVSQ19TRUdNRU5UX0NPVU5UPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUlTREJULUxBWUVSLVRJTUUtSU5URVJMRUFWSU5HIj48Y29uc3RhbnQ+RFRWX0lTREJUX0xBWUVSQ19USU1FX0lOVEVSTEVBVklORzwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQk8L2l0ZW1pemVkbGlzdD4KKwkJPHBhcmE+SW4gYWRkaXRpb24sIHRoZSA8bGluayBsaW5rZW5kPSJmcm9udGVuZC1zdGF0LXByb3BlcnRpZXMiPkRUViBRb1Mgc3RhdGlzdGljczwvbGluaz4gYXJlIGFsc28gdmFsaWQuPC9wYXJhPgorCQk8L3NlY3Rpb24+CisJCTxzZWN0aW9uIGlkPSJhdHNjLXBhcmFtcyI+CisJCQk8dGl0bGU+QVRTQyBkZWxpdmVyeSBzeXN0ZW08L3RpdGxlPgorCQkJPHBhcmE+VGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIGFyZSB2YWxpZCBmb3IgQVRTQzo8L3BhcmE+CisJCQk8aXRlbWl6ZWRsaXN0IG1hcms9J29wZW5jaXJjbGUnPgorCQkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtQVBJLVZFUlNJT04iPjxjb25zdGFudD5EVFZfQVBJX1ZFUlNJT048L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLURFTElWRVJZLVNZU1RFTSI+PGNvbnN0YW50PkRUVl9ERUxJVkVSWV9TWVNURU08L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLVRVTkUiPjxjb25zdGFudD5EVFZfVFVORTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtQ0xFQVIiPjxjb25zdGFudD5EVFZfQ0xFQVI8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUZSRVFVRU5DWSI+PGNvbnN0YW50PkRUVl9GUkVRVUVOQ1k8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLU1PRFVMQVRJT04iPjxjb25zdGFudD5EVFZfTU9EVUxBVElPTjwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtQkFORFdJRFRILUhaIj48Y29uc3RhbnQ+RFRWX0JBTkRXSURUSF9IWjwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPC9pdGVtaXplZGxpc3Q+CisJCQk8cGFyYT5JbiBhZGRpdGlvbiwgdGhlIDxsaW5rIGxpbmtlbmQ9ImZyb250ZW5kLXN0YXQtcHJvcGVydGllcyI+RFRWIFFvUyBzdGF0aXN0aWNzPC9saW5rPiBhcmUgYWxzbyB2YWxpZC48L3BhcmE+CisJCTwvc2VjdGlvbj4KKwkJPHNlY3Rpb24gaWQ9ImF0c2NtaC1wYXJhbXMiPgorCQkJPHRpdGxlPkFUU0MtTUggZGVsaXZlcnkgc3lzdGVtPC90aXRsZT4KKwkJCTxwYXJhPlRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBhcmUgdmFsaWQgZm9yIEFUU0MtTUg6PC9wYXJhPgorCQkJPGl0ZW1pemVkbGlzdCBtYXJrPSdvcGVuY2lyY2xlJz4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUFQSS1WRVJTSU9OIj48Y29uc3RhbnQ+RFRWX0FQSV9WRVJTSU9OPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1ERUxJVkVSWS1TWVNURU0iPjxjb25zdGFudD5EVFZfREVMSVZFUllfU1lTVEVNPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1UVU5FIj48Y29uc3RhbnQ+RFRWX1RVTkU8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUNMRUFSIj48Y29uc3RhbnQ+RFRWX0NMRUFSPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1GUkVRVUVOQ1kiPjxjb25zdGFudD5EVFZfRlJFUVVFTkNZPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1CQU5EV0lEVEgtSFoiPjxjb25zdGFudD5EVFZfQkFORFdJRFRIX0haPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1BVFNDTUgtRklDLVZFUiI+PGNvbnN0YW50PkRUVl9BVFNDTUhfRklDX1ZFUjwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtQVRTQ01ILVBBUkFERS1JRCI+PGNvbnN0YW50PkRUVl9BVFNDTUhfUEFSQURFX0lEPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1BVFNDTUgtTk9HIj48Y29uc3RhbnQ+RFRWX0FUU0NNSF9OT0c8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUFUU0NNSC1UTk9HIj48Y29uc3RhbnQ+RFRWX0FUU0NNSF9UTk9HPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1BVFNDTUgtU0dOIj48Y29uc3RhbnQ+RFRWX0FUU0NNSF9TR048L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUFUU0NNSC1QUkMiPjxjb25zdGFudD5EVFZfQVRTQ01IX1BSQzwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtQVRTQ01ILVJTLUZSQU1FLU1PREUiPjxjb25zdGFudD5EVFZfQVRTQ01IX1JTX0ZSQU1FX01PREU8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUFUU0NNSC1SUy1GUkFNRS1FTlNFTUJMRSI+PGNvbnN0YW50PkRUVl9BVFNDTUhfUlNfRlJBTUVfRU5TRU1CTEU8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUFUU0NNSC1SUy1DT0RFLU1PREUtUFJJIj48Y29uc3RhbnQ+RFRWX0FUU0NNSF9SU19DT0RFX01PREVfUFJJPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1BVFNDTUgtUlMtQ09ERS1NT0RFLVNFQyI+PGNvbnN0YW50PkRUVl9BVFNDTUhfUlNfQ09ERV9NT0RFX1NFQzwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtQVRTQ01ILVNDQ0MtQkxPQ0stTU9ERSI+PGNvbnN0YW50PkRUVl9BVFNDTUhfU0NDQ19CTE9DS19NT0RFPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1BVFNDTUgtU0NDQy1DT0RFLU1PREUtQSI+PGNvbnN0YW50PkRUVl9BVFNDTUhfU0NDQ19DT0RFX01PREVfQTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtQVRTQ01ILVNDQ0MtQ09ERS1NT0RFLUIiPjxjb25zdGFudD5EVFZfQVRTQ01IX1NDQ0NfQ09ERV9NT0RFX0I8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUFUU0NNSC1TQ0NDLUNPREUtTU9ERS1DIj48Y29uc3RhbnQ+RFRWX0FUU0NNSF9TQ0NDX0NPREVfTU9ERV9DPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1BVFNDTUgtU0NDQy1DT0RFLU1PREUtRCI+PGNvbnN0YW50PkRUVl9BVFNDTUhfU0NDQ19DT0RFX01PREVfRDwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPC9pdGVtaXplZGxpc3Q+CisJCQk8cGFyYT5JbiBhZGRpdGlvbiwgdGhlIDxsaW5rIGxpbmtlbmQ9ImZyb250ZW5kLXN0YXQtcHJvcGVydGllcyI+RFRWIFFvUyBzdGF0aXN0aWNzPC9saW5rPiBhcmUgYWxzbyB2YWxpZC48L3BhcmE+CisJCTwvc2VjdGlvbj4KKwkJPHNlY3Rpb24gaWQ9ImR0bWItcGFyYW1zIj4KKwkJCTx0aXRsZT5EVE1CIGRlbGl2ZXJ5IHN5c3RlbTwvdGl0bGU+CisJCQk8cGFyYT5UaGUgZm9sbG93aW5nIHBhcmFtZXRlcnMgYXJlIHZhbGlkIGZvciBEVE1COjwvcGFyYT4KKwkJCTxpdGVtaXplZGxpc3QgbWFyaz0nb3BlbmNpcmNsZSc+CisJCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1BUEktVkVSU0lPTiI+PGNvbnN0YW50PkRUVl9BUElfVkVSU0lPTjwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtREVMSVZFUlktU1lTVEVNIj48Y29uc3RhbnQ+RFRWX0RFTElWRVJZX1NZU1RFTTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtVFVORSI+PGNvbnN0YW50PkRUVl9UVU5FPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1DTEVBUiI+PGNvbnN0YW50PkRUVl9DTEVBUjwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtRlJFUVVFTkNZIj48Y29uc3RhbnQ+RFRWX0ZSRVFVRU5DWTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtTU9EVUxBVElPTiI+PGNvbnN0YW50PkRUVl9NT0RVTEFUSU9OPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1CQU5EV0lEVEgtSFoiPjxjb25zdGFudD5EVFZfQkFORFdJRFRIX0haPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1JTlZFUlNJT04iPjxjb25zdGFudD5EVFZfSU5WRVJTSU9OPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1JTk5FUi1GRUMiPjxjb25zdGFudD5EVFZfSU5ORVJfRkVDPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1HVUFSRC1JTlRFUlZBTCI+PGNvbnN0YW50PkRUVl9HVUFSRF9JTlRFUlZBTDwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtVFJBTlNNSVNTSU9OLU1PREUiPjxjb25zdGFudD5EVFZfVFJBTlNNSVNTSU9OX01PREU8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUlOVEVSTEVBVklORyI+PGNvbnN0YW50PkRUVl9JTlRFUkxFQVZJTkc8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUxOQSI+PGNvbnN0YW50PkRUVl9MTkE8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTwvaXRlbWl6ZWRsaXN0PgorCQkJPHBhcmE+SW4gYWRkaXRpb24sIHRoZSA8bGluayBsaW5rZW5kPSJmcm9udGVuZC1zdGF0LXByb3BlcnRpZXMiPkRUViBRb1Mgc3RhdGlzdGljczwvbGluaz4gYXJlIGFsc28gdmFsaWQuPC9wYXJhPgorCQk8L3NlY3Rpb24+CisJPC9zZWN0aW9uPgorCTxzZWN0aW9uIGlkPSJmcm9udGVuZC1wcm9wZXJ0eS1jYWJsZS1zeXN0ZW1zIj4KKwk8dGl0bGU+UHJvcGVydGllcyB1c2VkIG9uIGNhYmxlIGRlbGl2ZXJ5IHN5c3RlbXM8L3RpdGxlPgorCTxzZWN0aW9uIGlkPSJkdmJjLXBhcmFtcyI+CisJCTx0aXRsZT5EVkItQyBkZWxpdmVyeSBzeXN0ZW08L3RpdGxlPgorCQk8cGFyYT5UaGUgRFZCLUMgQW5uZXgtQSBpcyB0aGUgd2lkZWx5IHVzZWQgY2FibGUgc3RhbmRhcmQuIFRyYW5zbWlzc2lvbiB1c2VzIFFBTSBtb2R1bGF0aW9uLjwvcGFyYT4KKwkJPHBhcmE+VGhlIERWQi1DIEFubmV4LUMgaXMgb3B0aW1pemVkIGZvciA2TUh6LCBhbmQgaXMgdXNlZCBpbiBKYXBhbi4gSXQgc3VwcG9ydHMgYSBzdWJzZXQgb2YgdGhlIEFubmV4IEEgbW9kdWxhdGlvbiB0eXBlcywgYW5kIGEgcm9sbC1vZmYgb2YgMC4xMywgaW5zdGVhZCBvZiAwLjE1PC9wYXJhPgorCQk8cGFyYT5UaGUgZm9sbG93aW5nIHBhcmFtZXRlcnMgYXJlIHZhbGlkIGZvciBEVkItQyBBbm5leCBBL0M6PC9wYXJhPgorCQk8aXRlbWl6ZWRsaXN0IG1hcms9J29wZW5jaXJjbGUnPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1BUEktVkVSU0lPTiI+PGNvbnN0YW50PkRUVl9BUElfVkVSU0lPTjwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1ERUxJVkVSWS1TWVNURU0iPjxjb25zdGFudD5EVFZfREVMSVZFUllfU1lTVEVNPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLVRVTkUiPjxjb25zdGFudD5EVFZfVFVORTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1DTEVBUiI+PGNvbnN0YW50PkRUVl9DTEVBUjwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1GUkVRVUVOQ1kiPjxjb25zdGFudD5EVFZfRlJFUVVFTkNZPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLU1PRFVMQVRJT04iPjxjb25zdGFudD5EVFZfTU9EVUxBVElPTjwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1JTlZFUlNJT04iPjxjb25zdGFudD5EVFZfSU5WRVJTSU9OPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLVNZTUJPTC1SQVRFIj48Y29uc3RhbnQ+RFRWX1NZTUJPTF9SQVRFPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUlOTkVSLUZFQyI+PGNvbnN0YW50PkRUVl9JTk5FUl9GRUM8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtTE5BIj48Y29uc3RhbnQ+RFRWX0xOQTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQk8L2l0ZW1pemVkbGlzdD4KKwkJPHBhcmE+SW4gYWRkaXRpb24sIHRoZSA8bGluayBsaW5rZW5kPSJmcm9udGVuZC1zdGF0LXByb3BlcnRpZXMiPkRUViBRb1Mgc3RhdGlzdGljczwvbGluaz4gYXJlIGFsc28gdmFsaWQuPC9wYXJhPgorCTwvc2VjdGlvbj4KKwk8c2VjdGlvbiBpZD0iZHZiYy1hbm5leC1iLXBhcmFtcyI+CisJCTx0aXRsZT5EVkItQyBBbm5leCBCIGRlbGl2ZXJ5IHN5c3RlbTwvdGl0bGU+CisJCTxwYXJhPlRoZSBEVkItQyBBbm5leC1CIGlzIG9ubHkgdXNlZCBvbiBhIGZldyBDb3VudHJpZXMgbGlrZSB0aGUgVW5pdGVkIFN0YXRlcy48L3BhcmE+CisJCTxwYXJhPlRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBhcmUgdmFsaWQgZm9yIERWQi1DIEFubmV4IEI6PC9wYXJhPgorCQk8aXRlbWl6ZWRsaXN0IG1hcms9J29wZW5jaXJjbGUnPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1BUEktVkVSU0lPTiI+PGNvbnN0YW50PkRUVl9BUElfVkVSU0lPTjwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1ERUxJVkVSWS1TWVNURU0iPjxjb25zdGFudD5EVFZfREVMSVZFUllfU1lTVEVNPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLVRVTkUiPjxjb25zdGFudD5EVFZfVFVORTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1DTEVBUiI+PGNvbnN0YW50PkRUVl9DTEVBUjwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1GUkVRVUVOQ1kiPjxjb25zdGFudD5EVFZfRlJFUVVFTkNZPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLU1PRFVMQVRJT04iPjxjb25zdGFudD5EVFZfTU9EVUxBVElPTjwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1JTlZFUlNJT04iPjxjb25zdGFudD5EVFZfSU5WRVJTSU9OPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUxOQSI+PGNvbnN0YW50PkRUVl9MTkE8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJPC9pdGVtaXplZGxpc3Q+CisJCTxwYXJhPkluIGFkZGl0aW9uLCB0aGUgPGxpbmsgbGlua2VuZD0iZnJvbnRlbmQtc3RhdC1wcm9wZXJ0aWVzIj5EVFYgUW9TIHN0YXRpc3RpY3M8L2xpbms+IGFyZSBhbHNvIHZhbGlkLjwvcGFyYT4KKwk8L3NlY3Rpb24+CisJPC9zZWN0aW9uPgorCTxzZWN0aW9uIGlkPSJmcm9udGVuZC1wcm9wZXJ0eS1zYXRlbGxpdGUtc3lzdGVtcyI+CisJPHRpdGxlPlByb3BlcnRpZXMgdXNlZCBvbiBzYXRlbGxpdGUgZGVsaXZlcnkgc3lzdGVtczwvdGl0bGU+CisJPHNlY3Rpb24gaWQ9ImR2YnMtcGFyYW1zIj4KKwkJPHRpdGxlPkRWQi1TIGRlbGl2ZXJ5IHN5c3RlbTwvdGl0bGU+CisJCTxwYXJhPlRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBhcmUgdmFsaWQgZm9yIERWQi1TOjwvcGFyYT4KKwkJPGl0ZW1pemVkbGlzdCBtYXJrPSdvcGVuY2lyY2xlJz4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtQVBJLVZFUlNJT04iPjxjb25zdGFudD5EVFZfQVBJX1ZFUlNJT048L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtREVMSVZFUlktU1lTVEVNIj48Y29uc3RhbnQ+RFRWX0RFTElWRVJZX1NZU1RFTTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1UVU5FIj48Y29uc3RhbnQ+RFRWX1RVTkU8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtQ0xFQVIiPjxjb25zdGFudD5EVFZfQ0xFQVI8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtRlJFUVVFTkNZIj48Y29uc3RhbnQ+RFRWX0ZSRVFVRU5DWTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1JTlZFUlNJT04iPjxjb25zdGFudD5EVFZfSU5WRVJTSU9OPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLVNZTUJPTC1SQVRFIj48Y29uc3RhbnQ+RFRWX1NZTUJPTF9SQVRFPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUlOTkVSLUZFQyI+PGNvbnN0YW50PkRUVl9JTk5FUl9GRUM8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtVk9MVEFHRSI+PGNvbnN0YW50PkRUVl9WT0xUQUdFPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLVRPTkUiPjxjb25zdGFudD5EVFZfVE9ORTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQk8L2l0ZW1pemVkbGlzdD4KKwkJPHBhcmE+SW4gYWRkaXRpb24sIHRoZSA8bGluayBsaW5rZW5kPSJmcm9udGVuZC1zdGF0LXByb3BlcnRpZXMiPkRUViBRb1Mgc3RhdGlzdGljczwvbGluaz4gYXJlIGFsc28gdmFsaWQuPC9wYXJhPgorCQk8cGFyYT5GdXR1cmUgaW1wbGVtZW50YXRpb25zIG1pZ2h0IGFkZCB0aG9zZSB0d28gbWlzc2luZyBwYXJhbWV0ZXJzOjwvcGFyYT4KKwkJPGl0ZW1pemVkbGlzdCBtYXJrPSdvcGVuY2lyY2xlJz4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtRElTRVFDLU1BU1RFUiI+PGNvbnN0YW50PkRUVl9ESVNFUUNfTUFTVEVSPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLURJU0VRQy1TTEFWRS1SRVBMWSI+PGNvbnN0YW50PkRUVl9ESVNFUUNfU0xBVkVfUkVQTFk8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJPC9pdGVtaXplZGxpc3Q+CisJPC9zZWN0aW9uPgorCTxzZWN0aW9uIGlkPSJkdmJzMi1wYXJhbXMiPgorCQk8dGl0bGU+RFZCLVMyIGRlbGl2ZXJ5IHN5c3RlbTwvdGl0bGU+CisJCTxwYXJhPkluIGFkZGl0aW9uIHRvIGFsbCBwYXJhbWV0ZXJzIHZhbGlkIGZvciBEVkItUywgRFZCLVMyIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczo8L3BhcmE+CisJCTxpdGVtaXplZGxpc3QgbWFyaz0nb3BlbmNpcmNsZSc+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLU1PRFVMQVRJT04iPjxjb25zdGFudD5EVFZfTU9EVUxBVElPTjwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1QSUxPVCI+PGNvbnN0YW50PkRUVl9QSUxPVDwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1ST0xMT0ZGIj48Y29uc3RhbnQ+RFRWX1JPTExPRkY8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtU1RSRUFNLUlEIj48Y29uc3RhbnQ+RFRWX1NUUkVBTV9JRDwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQk8L2l0ZW1pemVkbGlzdD4KKwkJPHBhcmE+SW4gYWRkaXRpb24sIHRoZSA8bGluayBsaW5rZW5kPSJmcm9udGVuZC1zdGF0LXByb3BlcnRpZXMiPkRUViBRb1Mgc3RhdGlzdGljczwvbGluaz4gYXJlIGFsc28gdmFsaWQuPC9wYXJhPgorCTwvc2VjdGlvbj4KKwk8c2VjdGlvbiBpZD0idHVyYm8tcGFyYW1zIj4KKwkJPHRpdGxlPlR1cmJvIGNvZGUgZGVsaXZlcnkgc3lzdGVtPC90aXRsZT4KKwkJPHBhcmE+SW4gYWRkaXRpb24gdG8gYWxsIHBhcmFtZXRlcnMgdmFsaWQgZm9yIERWQi1TLCB0dXJibyBjb2RlIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczo8L3BhcmE+CisJCTxpdGVtaXplZGxpc3QgbWFyaz0nb3BlbmNpcmNsZSc+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLU1PRFVMQVRJT04iPjxjb25zdGFudD5EVFZfTU9EVUxBVElPTjwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQk8L2l0ZW1pemVkbGlzdD4KKwk8L3NlY3Rpb24+CisJPHNlY3Rpb24gaWQ9ImlzZGJzLXBhcmFtcyI+CisJCTx0aXRsZT5JU0RCLVMgZGVsaXZlcnkgc3lzdGVtPC90aXRsZT4KKwkJPHBhcmE+VGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIGFyZSB2YWxpZCBmb3IgSVNEQi1TOjwvcGFyYT4KKwkJPGl0ZW1pemVkbGlzdCBtYXJrPSdvcGVuY2lyY2xlJz4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtQVBJLVZFUlNJT04iPjxjb25zdGFudD5EVFZfQVBJX1ZFUlNJT048L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtREVMSVZFUlktU1lTVEVNIj48Y29uc3RhbnQ+RFRWX0RFTElWRVJZX1NZU1RFTTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1UVU5FIj48Y29uc3RhbnQ+RFRWX1RVTkU8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtQ0xFQVIiPjxjb25zdGFudD5EVFZfQ0xFQVI8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtRlJFUVVFTkNZIj48Y29uc3RhbnQ+RFRWX0ZSRVFVRU5DWTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPjxsaW5rIGxpbmtlbmQ9IkRUVi1JTlZFUlNJT04iPjxjb25zdGFudD5EVFZfSU5WRVJTSU9OPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLVNZTUJPTC1SQVRFIj48Y29uc3RhbnQ+RFRWX1NZTUJPTF9SQVRFPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLUlOTkVSLUZFQyI+PGNvbnN0YW50PkRUVl9JTk5FUl9GRUM8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT48bGluayBsaW5rZW5kPSJEVFYtVk9MVEFHRSI+PGNvbnN0YW50PkRUVl9WT0xUQUdFPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+PGxpbmsgbGlua2VuZD0iRFRWLVNUUkVBTS1JRCI+PGNvbnN0YW50PkRUVl9TVFJFQU1fSUQ8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9saXN0aXRlbT4KKwkJPC9pdGVtaXplZGxpc3Q+CisJPC9zZWN0aW9uPgorCTwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvZXhhbXBsZXMueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2Yi9leGFtcGxlcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzlmNjhjNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvZXhhbXBsZXMueG1sCkBAIC0wLDAgKzEsMzY3IEBACis8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorPHBhcmE+SW4gdGhpcyBzZWN0aW9uIHdlIHdvdWxkIGxpa2UgdG8gcHJlc2VudCBzb21lIGV4YW1wbGVzIGZvciB1c2luZyB0aGUgRFZCIEFQSS4KKzwvcGFyYT4KKzxwYXJhPk5PVEU6IFRoaXMgc2VjdGlvbiBpcyBvdXQgb2YgZGF0ZSwgYW5kIHRoZSBjb2RlIGJlbG93IHdvbid0IGV2ZW4KKyAgICBjb21waWxlLiBQbGVhc2UgcmVmZXIgdG8gdGhlCisgICAgPHVsaW5rIHVybD0iaHR0cDovL2xpbnV4dHYub3JnL2RvY3MvbGliZHZidjUvaW5kZXguaHRtbCI+bGliZHZidjU8L3VsaW5rPgorICAgIGZvciB1cGRhdGVkL3JlY29tbWVuZGVkIGV4YW1wbGVzLgorPC9wYXJhPgorCis8c2VjdGlvbiBpZD0idHVuaW5nIj4KKzx0aXRsZT5UdW5pbmc8L3RpdGxlPgorPHBhcmE+V2Ugd2lsbCBzdGFydCB3aXRoIGEgZ2VuZXJpYyB0dW5pbmcgc3Vicm91dGluZSB0aGF0IHVzZXMgdGhlIGZyb250ZW5kIGFuZCBTRUMsIGFzIHdlbGwgYXMKK3RoZSBkZW11eCBkZXZpY2VzLiBUaGUgZXhhbXBsZSBpcyBnaXZlbiBmb3IgUVBTSyB0dW5lcnMsIGJ1dCBjYW4gZWFzaWx5IGJlIGFkanVzdGVkIGZvcgorUUFNLgorPC9wYXJhPgorPHByb2dyYW1saXN0aW5nPgorICNpbmNsdWRlICYjeDAwM0M7c3lzL2lvY3RsLmgmI3gwMDNFOworICNpbmNsdWRlICYjeDAwM0M7c3RkaW8uaCYjeDAwM0U7CisgI2luY2x1ZGUgJiN4MDAzQztzdGRpbnQuaCYjeDAwM0U7CisgI2luY2x1ZGUgJiN4MDAzQztzeXMvdHlwZXMuaCYjeDAwM0U7CisgI2luY2x1ZGUgJiN4MDAzQztzeXMvc3RhdC5oJiN4MDAzRTsKKyAjaW5jbHVkZSAmI3gwMDNDO2ZjbnRsLmgmI3gwMDNFOworICNpbmNsdWRlICYjeDAwM0M7dGltZS5oJiN4MDAzRTsKKyAjaW5jbHVkZSAmI3gwMDNDO3VuaXN0ZC5oJiN4MDAzRTsKKworICNpbmNsdWRlICYjeDAwM0M7bGludXgvZHZiL2RteC5oJiN4MDAzRTsKKyAjaW5jbHVkZSAmI3gwMDNDO2xpbnV4L2R2Yi9mcm9udGVuZC5oJiN4MDAzRTsKKyAjaW5jbHVkZSAmI3gwMDNDO2xpbnV4L2R2Yi9zZWMuaCYjeDAwM0U7CisgI2luY2x1ZGUgJiN4MDAzQztzeXMvcG9sbC5oJiN4MDAzRTsKKworICNkZWZpbmUgRE1YICIvZGV2L2R2Yi9hZGFwdGVyMC9kZW11eDEiCisgI2RlZmluZSBGUk9OVCAiL2Rldi9kdmIvYWRhcHRlcjAvZnJvbnRlbmQxIgorICNkZWZpbmUgU0VDICIvZGV2L2R2Yi9hZGFwdGVyMC9zZWMxIgorCisgLyYjeDIyQzY7IHJvdXRpbmUgZm9yIGNoZWNraW5nIGlmIHdlIGhhdmUgYSBzaWduYWwgYW5kIG90aGVyIHN0YXR1cyBpbmZvcm1hdGlvbiYjeDIyQzY7LworIGludCBGRVJlYWRTdGF0dXMoaW50IGZkLCBmZV9zdGF0dXNfdCAmI3gyMkM2O3N0YXQpCisgeworCSBpbnQgYW5zOworCisJIGlmICggKGFucyA9IGlvY3RsKGZkLEZFX1JFQURfU1RBVFVTLHN0YXQpICYjeDAwM0M7IDApKXsKKwkJIHBlcnJvcigiRkUgUkVBRCBTVEFUVVM6ICIpOworCQkgcmV0dXJuIC0xOworCSB9CisKKwkgaWYgKCYjeDIyQzY7c3RhdCAmYW1wOyBGRV9IQVNfUE9XRVIpCisJCSBwcmludGYoIkZFIEhBUyBQT1dFUlxuIik7CisKKwkgaWYgKCYjeDIyQzY7c3RhdCAmYW1wOyBGRV9IQVNfU0lHTkFMKQorCQkgcHJpbnRmKCJGRSBIQVMgU0lHTkFMXG4iKTsKKworCSBpZiAoJiN4MjJDNjtzdGF0ICZhbXA7IEZFX1NQRUNUUlVNX0lOVikKKwkJIHByaW50ZigiU1BFS1RSVU0gSU5WXG4iKTsKKworCSByZXR1cm4gMDsKKyB9CisKKworIC8mI3gyMkM2OyB0dW5lIHFwc2sgJiN4MjJDNjsvCisgLyYjeDIyQzY7IGZyZXE6ICAgICAgICAgICAgIGZyZXF1ZW5jeSBvZiB0cmFuc3BvbmRlciAgICAgICAgICAgICAgICAgICAgICAmI3gyMkM2Oy8KKyAvJiN4MjJDNjsgdnBpZCwgYXBpZCwgdHBpZDogUElEcyBvZiB2aWRlbywgYXVkaW8gYW5kIHRlbGV0ZXh0IFRTIHBhY2tldHMgICYjeDIyQzY7LworIC8mI3gyMkM2OyBkaXNlcWM6ICAgICAgICAgICBEaVNFcUMgYWRkcmVzcyBvZiB0aGUgdXNlZCBMTkIgICAgICAgICAgICAgICAgJiN4MjJDNjsvCisgLyYjeDIyQzY7IHBvbDogICAgICAgICAgICAgIFBvbGFyaXNhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmI3gyMkM2Oy8KKyAvJiN4MjJDNjsgc3JhdGU6ICAgICAgICAgICAgU3ltYm9sIFJhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYjeDIyQzY7LworIC8mI3gyMkM2OyBmZWMuICAgICAgICAgICAgICBGRUMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiN4MjJDNjsvCisgLyYjeDIyQzY7IGxuYl9sb2YxOiAgICAgICAgIGxvY2FsIGZyZXF1ZW5jeSBvZiBsb3dlciBMTkIgYmFuZCAgICAgICAgICAgICAmI3gyMkM2Oy8KKyAvJiN4MjJDNjsgbG5iX2xvZjI6ICAgICAgICAgbG9jYWwgZnJlcXVlbmN5IG9mIHVwcGVyIExOQiBiYW5kICAgICAgICAgICAgICYjeDIyQzY7LworIC8mI3gyMkM2OyBsbmJfc2xvZjogICAgICAgICBzd2l0Y2ggZnJlcXVlbmN5IG9mIExOQiAgICAgICAgICAgICAgICAgICAgICAgJiN4MjJDNjsvCisKKyBpbnQgc2V0X3Fwc2tfY2hhbm5lbChpbnQgZnJlcSwgaW50IHZwaWQsIGludCBhcGlkLCBpbnQgdHBpZCwKKwkJIGludCBkaXNlcWMsIGludCBwb2wsIGludCBzcmF0ZSwgaW50IGZlYywgaW50IGxuYl9sb2YxLAorCQkgaW50IGxuYl9sb2YyLCBpbnQgbG5iX3Nsb2YpCisgeworCSBzdHJ1Y3Qgc2VjQ29tbWFuZCBzY21kOworCSBzdHJ1Y3Qgc2VjQ21kU2VxdWVuY2Ugc2NtZHM7CisJIHN0cnVjdCBkbXhfcGVzX2ZpbHRlcl9wYXJhbXMgcGVzRmlsdGVyUGFyYW1zOworCSBGcm9udGVuZFBhcmFtZXRlcnMgZnJwOworCSBzdHJ1Y3QgcG9sbGZkIHBmZFsxXTsKKwkgRnJvbnRlbmRFdmVudCBldmVudDsKKwkgaW50IGRlbXV4MSwgZGVtdXgyLCBkZW11eDMsIGZyb250OworCisJIGZyZXF1ZW5jeSA9ICh1aW50MzJfdCkgZnJlcTsKKwkgc3ltYm9scmF0ZSA9ICh1aW50MzJfdCkgc3JhdGU7CisKKwkgaWYoKGZyb250ID0gb3BlbihGUk9OVCxPX1JEV1IpKSAmI3gwMDNDOyAwKXsKKwkJIHBlcnJvcigiRlJPTlRFTkQgREVWSUNFOiAiKTsKKwkJIHJldHVybiAtMTsKKwkgfQorCisJIGlmKChzZWMgPSBvcGVuKFNFQyxPX1JEV1IpKSAmI3gwMDNDOyAwKXsKKwkJIHBlcnJvcigiU0VDIERFVklDRTogIik7CisJCSByZXR1cm4gLTE7CisJIH0KKworCSBpZiAoZGVtdXgxICYjeDAwM0M7IDApeworCQkgaWYgKChkZW11eDE9b3BlbihETVgsIE9fUkRXUnxPX05PTkJMT0NLKSkKKwkJICAgICAmI3gwMDNDOyAwKXsKKwkJCSBwZXJyb3IoIkRFTVVYIERFVklDRTogIik7CisJCQkgcmV0dXJuIC0xOworCQkgfQorCSB9CisKKwkgaWYgKGRlbXV4MiAmI3gwMDNDOyAwKXsKKwkJIGlmICgoZGVtdXgyPW9wZW4oRE1YLCBPX1JEV1J8T19OT05CTE9DSykpCisJCSAgICAgJiN4MDAzQzsgMCl7CisJCQkgcGVycm9yKCJERU1VWCBERVZJQ0U6ICIpOworCQkJIHJldHVybiAtMTsKKwkJIH0KKwkgfQorCisJIGlmIChkZW11eDMgJiN4MDAzQzsgMCl7CisJCSBpZiAoKGRlbXV4Mz1vcGVuKERNWCwgT19SRFdSfE9fTk9OQkxPQ0spKQorCQkgICAgICYjeDAwM0M7IDApeworCQkJIHBlcnJvcigiREVNVVggREVWSUNFOiAiKTsKKwkJCSByZXR1cm4gLTE7CisJCSB9CisJIH0KKworCSBpZiAoZnJlcSAmI3gwMDNDOyBsbmJfc2xvZikgeworCQkgZnJwLkZyZXF1ZW5jeSA9IChmcmVxIC0gbG5iX2xvZjEpOworCQkgc2NtZHMuY29udGludW91c1RvbmUgPSBTRUNfVE9ORV9PRkY7CisJIH0gZWxzZSB7CisJCSBmcnAuRnJlcXVlbmN5ID0gKGZyZXEgLSBsbmJfbG9mMik7CisJCSBzY21kcy5jb250aW51b3VzVG9uZSA9IFNFQ19UT05FX09OOworCSB9CisJIGZycC5JbnZlcnNpb24gPSBJTlZFUlNJT05fQVVUTzsKKwkgaWYgKHBvbCkgc2NtZHMudm9sdGFnZSA9IFNFQ19WT0xUQUdFXzE4OworCSBlbHNlIHNjbWRzLnZvbHRhZ2UgPSBTRUNfVk9MVEFHRV8xMzsKKworCSBzY21kLnR5cGU9MDsKKwkgc2NtZC51LmRpc2VxYy5hZGRyPTB4MTA7CisJIHNjbWQudS5kaXNlcWMuY21kPTB4Mzg7CisJIHNjbWQudS5kaXNlcWMubnVtUGFyYW1zPTE7CisJIHNjbWQudS5kaXNlcWMucGFyYW1zWzBdID0gMHhGMCB8ICgoZGlzZXFjICYjeDIyQzY7IDQpICZhbXA7IDB4MEYpIHwKKwkJIChzY21kcy5jb250aW51b3VzVG9uZSA9PSBTRUNfVE9ORV9PTiA/IDEgOiAwKSB8CisJCSAoc2NtZHMudm9sdGFnZT09U0VDX1ZPTFRBR0VfMTggPyAyIDogMCk7CisKKwkgc2NtZHMubWluaUNvbW1hbmQ9U0VDX01JTklfTk9ORTsKKwkgc2NtZHMubnVtQ29tbWFuZHM9MTsKKwkgc2NtZHMuY29tbWFuZHM9JmFtcDtzY21kOworCSBpZiAoaW9jdGwoc2VjLCBTRUNfU0VORF9TRVFVRU5DRSwgJmFtcDtzY21kcykgJiN4MDAzQzsgMCl7CisJCSBwZXJyb3IoIlNFQyBTRU5EOiAiKTsKKwkJIHJldHVybiAtMTsKKwkgfQorCisJIGlmIChpb2N0bChzZWMsIFNFQ19TRU5EX1NFUVVFTkNFLCAmYW1wO3NjbWRzKSAmI3gwMDNDOyAwKXsKKwkJIHBlcnJvcigiU0VDIFNFTkQ6ICIpOworCQkgcmV0dXJuIC0xOworCSB9CisKKwkgZnJwLnUucXBzay5TeW1ib2xSYXRlID0gc3JhdGU7CisJIGZycC51LnFwc2suRkVDX2lubmVyID0gZmVjOworCisJIGlmIChpb2N0bChmcm9udCwgRkVfU0VUX0ZST05URU5ELCAmYW1wO2ZycCkgJiN4MDAzQzsgMCl7CisJCSBwZXJyb3IoIlFQU0sgVFVORTogIik7CisJCSByZXR1cm4gLTE7CisJIH0KKworCSBwZmRbMF0uZmQgPSBmcm9udDsKKwkgcGZkWzBdLmV2ZW50cyA9IFBPTExJTjsKKworCSBpZiAocG9sbChwZmQsMSwzMDAwKSl7CisJCSBpZiAocGZkWzBdLnJldmVudHMgJmFtcDsgUE9MTElOKXsKKwkJCSBwcmludGYoIkdldHRpbmcgUVBTSyBldmVudFxuIik7CisJCQkgaWYgKCBpb2N0bChmcm9udCwgRkVfR0VUX0VWRU5ULCAmYW1wO2V2ZW50KQorCisJCQkgICAgICA9PSAtRU9WRVJGTE9XKXsKKwkJCQkgcGVycm9yKCJxcHNrIGdldCBldmVudCIpOworCQkJCSByZXR1cm4gLTE7CisJCQkgfQorCQkJIHByaW50ZigiUmVjZWl2ZWQgIik7CisJCQkgc3dpdGNoKGV2ZW50LnR5cGUpeworCQkJIGNhc2UgRkVfVU5FWFBFQ1RFRF9FVjoKKwkJCQkgcHJpbnRmKCJ1bmV4cGVjdGVkIGV2ZW50XG4iKTsKKwkJCQkgcmV0dXJuIC0xOworCQkJIGNhc2UgRkVfRkFJTFVSRV9FVjoKKwkJCQkgcHJpbnRmKCJmYWlsdXJlIGV2ZW50XG4iKTsKKwkJCQkgcmV0dXJuIC0xOworCisJCQkgY2FzZSBGRV9DT01QTEVUSU9OX0VWOgorCQkJCSBwcmludGYoImNvbXBsZXRpb24gZXZlbnRcbiIpOworCQkJIH0KKwkJIH0KKwkgfQorCisKKwkgcGVzRmlsdGVyUGFyYW1zLnBpZCAgICAgPSB2cGlkOworCSBwZXNGaWx0ZXJQYXJhbXMuaW5wdXQgICA9IERNWF9JTl9GUk9OVEVORDsKKwkgcGVzRmlsdGVyUGFyYW1zLm91dHB1dCAgPSBETVhfT1VUX0RFQ09ERVI7CisJIHBlc0ZpbHRlclBhcmFtcy5wZXNfdHlwZSA9IERNWF9QRVNfVklERU87CisJIHBlc0ZpbHRlclBhcmFtcy5mbGFncyAgID0gRE1YX0lNTUVESUFURV9TVEFSVDsKKwkgaWYgKGlvY3RsKGRlbXV4MSwgRE1YX1NFVF9QRVNfRklMVEVSLCAmYW1wO3Blc0ZpbHRlclBhcmFtcykgJiN4MDAzQzsgMCl7CisJCSBwZXJyb3IoInNldF92cGlkIik7CisJCSByZXR1cm4gLTE7CisJIH0KKworCSBwZXNGaWx0ZXJQYXJhbXMucGlkICAgICA9IGFwaWQ7CisJIHBlc0ZpbHRlclBhcmFtcy5pbnB1dCAgID0gRE1YX0lOX0ZST05URU5EOworCSBwZXNGaWx0ZXJQYXJhbXMub3V0cHV0ICA9IERNWF9PVVRfREVDT0RFUjsKKwkgcGVzRmlsdGVyUGFyYW1zLnBlc190eXBlID0gRE1YX1BFU19BVURJTzsKKwkgcGVzRmlsdGVyUGFyYW1zLmZsYWdzICAgPSBETVhfSU1NRURJQVRFX1NUQVJUOworCSBpZiAoaW9jdGwoZGVtdXgyLCBETVhfU0VUX1BFU19GSUxURVIsICZhbXA7cGVzRmlsdGVyUGFyYW1zKSAmI3gwMDNDOyAwKXsKKwkJIHBlcnJvcigic2V0X2FwaWQiKTsKKwkJIHJldHVybiAtMTsKKwkgfQorCisJIHBlc0ZpbHRlclBhcmFtcy5waWQgICAgID0gdHBpZDsKKwkgcGVzRmlsdGVyUGFyYW1zLmlucHV0ICAgPSBETVhfSU5fRlJPTlRFTkQ7CisJIHBlc0ZpbHRlclBhcmFtcy5vdXRwdXQgID0gRE1YX09VVF9ERUNPREVSOworCSBwZXNGaWx0ZXJQYXJhbXMucGVzX3R5cGUgPSBETVhfUEVTX1RFTEVURVhUOworCSBwZXNGaWx0ZXJQYXJhbXMuZmxhZ3MgICA9IERNWF9JTU1FRElBVEVfU1RBUlQ7CisJIGlmIChpb2N0bChkZW11eDMsIERNWF9TRVRfUEVTX0ZJTFRFUiwgJmFtcDtwZXNGaWx0ZXJQYXJhbXMpICYjeDAwM0M7IDApeworCQkgcGVycm9yKCJzZXRfdHBpZCIpOworCQkgcmV0dXJuIC0xOworCSB9CisKKwkgcmV0dXJuIGhhc19zaWduYWwoZmRzKTsKKyB9CisKKzwvcHJvZ3JhbWxpc3Rpbmc+Cis8cGFyYT5UaGUgcHJvZ3JhbSBhc3N1bWVzIHRoYXQgeW91IGFyZSB1c2luZyBhIHVuaXZlcnNhbCBMTkIgYW5kIGEgc3RhbmRhcmQgRGlTRXFDCitzd2l0Y2ggd2l0aCB1cCB0byA0IGFkZHJlc3Nlcy4gT2YgY291cnNlLCB5b3UgY291bGQgYnVpbGQgaW4gc29tZSBtb3JlIGNoZWNraW5nIGlmCit0dW5pbmcgd2FzIHN1Y2Nlc3NmdWwgYW5kIG1heWJlIHRyeSB0byByZXBlYXQgdGhlIHR1bmluZyBwcm9jZXNzLiBEZXBlbmRpbmcgb24gdGhlCitleHRlcm5hbCBoYXJkd2FyZSwgaS5lLiBMTkIgYW5kIERpU0VxQyBzd2l0Y2gsIGFuZCB3ZWF0aGVyIGNvbmRpdGlvbnMgdGhpcyBtYXkgYmUKK25lY2Vzc2FyeS4KKzwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9InRoZV9kdnJfZGV2aWNlIj4KKzx0aXRsZT5UaGUgRFZSIGRldmljZTwvdGl0bGU+Cis8cGFyYT5UaGUgZm9sbG93aW5nIHByb2dyYW0gY29kZSBzaG93cyBob3cgdG8gdXNlIHRoZSBEVlIgZGV2aWNlIGZvciByZWNvcmRpbmcuCis8L3BhcmE+Cis8cHJvZ3JhbWxpc3Rpbmc+CisgI2luY2x1ZGUgJiN4MDAzQztzeXMvaW9jdGwuaCYjeDAwM0U7CisgI2luY2x1ZGUgJiN4MDAzQztzdGRpby5oJiN4MDAzRTsKKyAjaW5jbHVkZSAmI3gwMDNDO3N0ZGludC5oJiN4MDAzRTsKKyAjaW5jbHVkZSAmI3gwMDNDO3N5cy90eXBlcy5oJiN4MDAzRTsKKyAjaW5jbHVkZSAmI3gwMDNDO3N5cy9zdGF0LmgmI3gwMDNFOworICNpbmNsdWRlICYjeDAwM0M7ZmNudGwuaCYjeDAwM0U7CisgI2luY2x1ZGUgJiN4MDAzQzt0aW1lLmgmI3gwMDNFOworICNpbmNsdWRlICYjeDAwM0M7dW5pc3RkLmgmI3gwMDNFOworCisgI2luY2x1ZGUgJiN4MDAzQztsaW51eC9kdmIvZG14LmgmI3gwMDNFOworICNpbmNsdWRlICYjeDAwM0M7bGludXgvZHZiL3ZpZGVvLmgmI3gwMDNFOworICNpbmNsdWRlICYjeDAwM0M7c3lzL3BvbGwuaCYjeDAwM0U7CisgI2RlZmluZSBEVlIgIi9kZXYvZHZiL2FkYXB0ZXIwL2R2cjEiCisgI2RlZmluZSBBVURJTyAiL2Rldi9kdmIvYWRhcHRlcjAvYXVkaW8xIgorICNkZWZpbmUgVklERU8gIi9kZXYvZHZiL2FkYXB0ZXIwL3ZpZGVvMSIKKworICNkZWZpbmUgQlVGRlkgKDE4OCYjeDIyQzY7MjApCisgI2RlZmluZSBNQVhfTEVOR1RIICgxMDI0JiN4MjJDNjsxMDI0JiN4MjJDNjs1KSAvJiN4MjJDNjsgcmVjb3JkIDVNQiAmI3gyMkM2Oy8KKworCisgLyYjeDIyQzY7IHN3aXRjaCB0aGUgZGVtdXhlcyB0byByZWNvcmRpbmcsIGFzc3VtaW5nIHRoZSB0cmFuc3BvbmRlciBpcyB0dW5lZCAmI3gyMkM2Oy8KKworIC8mI3gyMkM2OyBkZW11eDEsIGRlbXV4MjogZmlsZSBkZXNjcmlwdG9yIG9mIHZpZGVvIGFuZCBhdWRpbyBmaWx0ZXJzICYjeDIyQzY7LworIC8mI3gyMkM2OyB2cGlkLCBhcGlkOiAgICAgUElEcyBvZiB2aWRlbyBhbmQgYXVkaW8gY2hhbm5lbHMgICAgICAgICAgICYjeDIyQzY7LworCisgaW50IHN3aXRjaF90b19yZWNvcmQoaW50IGRlbXV4MSwgaW50IGRlbXV4MiwgdWludDE2X3QgdnBpZCwgdWludDE2X3QgYXBpZCkKKyB7CisJIHN0cnVjdCBkbXhfcGVzX2ZpbHRlcl9wYXJhbXMgcGVzRmlsdGVyUGFyYW1zOworCisJIGlmIChkZW11eDEgJiN4MDAzQzsgMCl7CisJCSBpZiAoKGRlbXV4MT1vcGVuKERNWCwgT19SRFdSfE9fTk9OQkxPQ0spKQorCQkgICAgICYjeDAwM0M7IDApeworCQkJIHBlcnJvcigiREVNVVggREVWSUNFOiAiKTsKKwkJCSByZXR1cm4gLTE7CisJCSB9CisJIH0KKworCSBpZiAoZGVtdXgyICYjeDAwM0M7IDApeworCQkgaWYgKChkZW11eDI9b3BlbihETVgsIE9fUkRXUnxPX05PTkJMT0NLKSkKKwkJICAgICAmI3gwMDNDOyAwKXsKKwkJCSBwZXJyb3IoIkRFTVVYIERFVklDRTogIik7CisJCQkgcmV0dXJuIC0xOworCQkgfQorCSB9CisKKwkgcGVzRmlsdGVyUGFyYW1zLnBpZCA9IHZwaWQ7CisJIHBlc0ZpbHRlclBhcmFtcy5pbnB1dCA9IERNWF9JTl9GUk9OVEVORDsKKwkgcGVzRmlsdGVyUGFyYW1zLm91dHB1dCA9IERNWF9PVVRfVFNfVEFQOworCSBwZXNGaWx0ZXJQYXJhbXMucGVzX3R5cGUgPSBETVhfUEVTX1ZJREVPOworCSBwZXNGaWx0ZXJQYXJhbXMuZmxhZ3MgPSBETVhfSU1NRURJQVRFX1NUQVJUOworCSBpZiAoaW9jdGwoZGVtdXgxLCBETVhfU0VUX1BFU19GSUxURVIsICZhbXA7cGVzRmlsdGVyUGFyYW1zKSAmI3gwMDNDOyAwKXsKKwkJIHBlcnJvcigiREVNVVggREVWSUNFIik7CisJCSByZXR1cm4gLTE7CisJIH0KKwkgcGVzRmlsdGVyUGFyYW1zLnBpZCA9IGFwaWQ7CisJIHBlc0ZpbHRlclBhcmFtcy5pbnB1dCA9IERNWF9JTl9GUk9OVEVORDsKKwkgcGVzRmlsdGVyUGFyYW1zLm91dHB1dCA9IERNWF9PVVRfVFNfVEFQOworCSBwZXNGaWx0ZXJQYXJhbXMucGVzX3R5cGUgPSBETVhfUEVTX0FVRElPOworCSBwZXNGaWx0ZXJQYXJhbXMuZmxhZ3MgPSBETVhfSU1NRURJQVRFX1NUQVJUOworCSBpZiAoaW9jdGwoZGVtdXgyLCBETVhfU0VUX1BFU19GSUxURVIsICZhbXA7cGVzRmlsdGVyUGFyYW1zKSAmI3gwMDNDOyAwKXsKKwkJIHBlcnJvcigiREVNVVggREVWSUNFIik7CisJCSByZXR1cm4gLTE7CisJIH0KKwkgcmV0dXJuIDA7CisgfQorCisgLyYjeDIyQzY7IHN0YXJ0IHJlY29yZGluZyBNQVhfTEVOR1RIICwgYXNzdW1pbmcgdGhlIHRyYW5zcG9uZGVyIGlzIHR1bmVkICYjeDIyQzY7LworCisgLyYjeDIyQzY7IGRlbXV4MSwgZGVtdXgyOiBmaWxlIGRlc2NyaXB0b3Igb2YgdmlkZW8gYW5kIGF1ZGlvIGZpbHRlcnMgJiN4MjJDNjsvCisgLyYjeDIyQzY7IHZwaWQsIGFwaWQ6ICAgICBQSURzIG9mIHZpZGVvIGFuZCBhdWRpbyBjaGFubmVscyAgICAgICAgICAgJiN4MjJDNjsvCisgaW50IHJlY29yZF9kdnIoaW50IGRlbXV4MSwgaW50IGRlbXV4MiwgdWludDE2X3QgdnBpZCwgdWludDE2X3QgYXBpZCkKKyB7CisJIGludCBpOworCSBpbnQgbGVuOworCSBpbnQgd3JpdHRlbjsKKwkgdWludDhfdCBidWZbQlVGRlldOworCSB1aW50NjRfdCBsZW5ndGg7CisJIHN0cnVjdCBwb2xsZmQgcGZkWzFdOworCSBpbnQgZHZyLCBkdnJfb3V0OworCisJIC8mI3gyMkM2OyBvcGVuIGR2ciBkZXZpY2UgJiN4MjJDNjsvCisJIGlmICgoZHZyID0gb3BlbihEVlIsIE9fUkRPTkxZfE9fTk9OQkxPQ0spKSAmI3gwMDNDOyAwKXsKKwkJCSBwZXJyb3IoIkRWUiBERVZJQ0UiKTsKKwkJCSByZXR1cm4gLTE7CisJIH0KKworCSAvJiN4MjJDNjsgc3dpdGNoIHZpZGVvIGFuZCBhdWRpbyBkZW11eGVzIHRvIGR2ciAmI3gyMkM2Oy8KKwkgcHJpbnRmICgiU3dpdGNoaW5nIGR2ciBvblxuIik7CisJIGkgPSBzd2l0Y2hfdG9fcmVjb3JkKGRlbXV4MSwgZGVtdXgyLCB2cGlkLCBhcGlkKTsKKwkgcHJpbnRmKCJmaW5pc2hlZDogIik7CisKKwkgcHJpbnRmKCJSZWNvcmRpbmcgJTIuMGYgTUIgb2YgdGVzdCBmaWxlIGluIFRTIGZvcm1hdFxuIiwKKwkJTUFYX0xFTkdUSC8oMTAyNC4wJiN4MjJDNjsxMDI0LjApKTsKKwkgbGVuZ3RoID0gMDsKKworCSAvJiN4MjJDNjsgb3BlbiBvdXRwdXQgZmlsZSAmI3gyMkM2Oy8KKwkgaWYgKChkdnJfb3V0ID0gb3BlbihEVlJfRklMRSxPX1dST05MWXxPX0NSRUFUCisJCQkJICB8T19UUlVOQywgU19JUlVTUnxTX0lXVVNSCisJCQkJICB8U19JUkdSUHxTX0lXR1JQfFNfSVJPVEh8CisJCQkJICBTX0lXT1RIKSkgJiN4MDAzQzsgMCl7CisJCSBwZXJyb3IoIkNhbid0IG9wZW4gZmlsZSBmb3IgZHZyIHRlc3QiKTsKKwkJIHJldHVybiAtMTsKKwkgfQorCisJIHBmZFswXS5mZCA9IGR2cjsKKwkgcGZkWzBdLmV2ZW50cyA9IFBPTExJTjsKKworCSAvJiN4MjJDNjsgcG9sbCBmb3IgZHZyIGRhdGEgYW5kIHdyaXRlIHRvIGZpbGUgJiN4MjJDNjsvCisJIHdoaWxlIChsZW5ndGggJiN4MDAzQzsgTUFYX0xFTkdUSCApIHsKKwkJIGlmIChwb2xsKHBmZCwxLDEpKXsKKwkJCSBpZiAocGZkWzBdLnJldmVudHMgJmFtcDsgUE9MTElOKXsKKwkJCQkgbGVuID0gcmVhZChkdnIsIGJ1ZiwgQlVGRlkpOworCQkJCSBpZiAobGVuICYjeDAwM0M7IDApeworCQkJCQkgcGVycm9yKCJyZWNvcmRpbmciKTsKKwkJCQkJIHJldHVybiAtMTsKKwkJCQkgfQorCQkJCSBpZiAobGVuICYjeDAwM0U7IDApeworCQkJCQkgd3JpdHRlbiA9IDA7CisJCQkJCSB3aGlsZSAod3JpdHRlbiAmI3gwMDNDOyBsZW4pCisJCQkJCQkgd3JpdHRlbiArPQorCQkJCQkJCSB3cml0ZSAoZHZyX291dCwKKwkJCQkJCQkJYnVmLCBsZW4pOworCQkJCQkgbGVuZ3RoICs9IGxlbjsKKwkJCQkJIHByaW50Zigid3JpdHRlbiAlMi4wZiBNQlxyIiwKKwkJCQkJCWxlbmd0aC8xMDI0Li8xMDI0Lik7CisJCQkJIH0KKwkJCSB9CisJCSB9CisJIH0KKwkgcmV0dXJuIDA7CisgfQorCis8L3Byb2dyYW1saXN0aW5nPgorCis8L3NlY3Rpb24+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL2ZlLWRpc2VxYy1yZWN2LXNsYXZlLXJlcGx5LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvZmUtZGlzZXFjLXJlY3Ytc2xhdmUtcmVwbHkueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1OTVkYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL2ZlLWRpc2VxYy1yZWN2LXNsYXZlLXJlcGx5LnhtbApAQCAtMCwwICsxLDc4IEBACis8cmVmZW50cnkgaWQ9IkZFX0RJU0VRQ19SRUNWX1NMQVZFX1JFUExZIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgRkVfRElTRVFDX1JFQ1ZfU0xBVkVfUkVQTFk8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPkZFX0RJU0VRQ19SRUNWX1NMQVZFX1JFUExZPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPlJlY2VpdmVzIHJlcGx5IGZyb20gYSBEaVNFcUMgMi4wIGNvbW1hbmQ8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c3RydWN0IGR2Yl9kaXNlcWNfc2xhdmVfcmVwbHkgKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorICAgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPiZmZV9mZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+RkVfRElTRVFDX1JFQ1ZfU0xBVkVfUkVQTFk8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgICA8cGFyYT5wb2ludGVyIHRvICZkdmItZGlzZXFjLXNsYXZlLXJlcGx5OzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5SZWNlaXZlcyByZXBseSBmcm9tIGEgRGlTRXFDIDIuMCBjb21tYW5kLjwvcGFyYT4KKyZyZXR1cm4tdmFsdWUtZHZiOworCis8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9ImR2Yi1kaXNlcWMtc2xhdmUtcmVwbHkiPgorICAgIDx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+ZHZiX2Rpc2VxY19zbGF2ZV9yZXBseTwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgIDx0Z3JvdXAgY29scz0iMyI+CisgICAgJmNzLXN0cjsKKyAgICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCTxyb3c+CisJPGVudHJ5PnVpbnQ4X3Q8L2VudHJ5PgorCTxlbnRyeT5tc2dbNF08L2VudHJ5PgorCTxlbnRyeT5EaVNFcUMgbWVzc2FnZSAoZnJhbWluZywgZGF0YVszXSk8L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJPGVudHJ5PnVpbnQ4X3Q8L2VudHJ5PgorCTxlbnRyeT5tc2dfbGVuPC9lbnRyeT4KKwk8ZW50cnk+TGVuZ3RoIG9mIHRoZSBEaVNFcUMgbWVzc2FnZS4gVmFsaWQgdmFsdWVzIGFyZSAwIHRvIDQsCisJICAgIHdoZXJlIDAgbWVhbnMgbm8gbXNnPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCTxlbnRyeT5pbnQ8L2VudHJ5PgorCTxlbnRyeT50aW1lb3V0PC9lbnRyeT4KKwk8ZW50cnk+UmV0dXJuIGZyb20gaW9jdGwgYWZ0ZXIgdGltZW91dCBtcyB3aXRoIGVycm9yY29kZSB3aGVuIG5vCisJICAgIG1lc3NhZ2Ugd2FzIHJlY2VpdmVkPC9lbnRyeT4KKwk8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgIDwvdGdyb3VwPgorPC90YWJsZT4KKworPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL2ZlLWRpc2VxYy1yZXNldC1vdmVybG9hZC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL2ZlLWRpc2VxYy1yZXNldC1vdmVybG9hZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzEwNGRmNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvZmUtZGlzZXFjLXJlc2V0LW92ZXJsb2FkLnhtbApAQCAtMCwwICsxLDUxIEBACis8cmVmZW50cnkgaWQ9IkZFX0RJU0VRQ19SRVNFVF9PVkVSTE9BRCI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIEZFX0RJU0VRQ19SRVNFVF9PVkVSTE9BRDwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+RkVfRElTRVFDX1JFU0VUX09WRVJMT0FEPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPlJlc3RvcmVzIHRoZSBwb3dlciB0byB0aGUgYW50ZW5uYSBzdWJzeXN0ZW0sIGlmIGl0IHdhcyBwb3dlcmVkCisJb2ZmIGR1ZSB0byBwb3dlciBvdmVybG9hZC48L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+TlVMTDwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorICAgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPiZmZV9mZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+RkVfRElTRVFDX1JFU0VUX09WRVJMT0FEPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPklmIHRoZSBidXMgaGFzIGJlZW4gYXV0b21hdGljYWxseSBwb3dlcmVkIG9mZiBkdWUgdG8gcG93ZXIgb3ZlcmxvYWQsIHRoaXMgaW9jdGwKKyBjYWxsIHJlc3RvcmVzIHRoZSBwb3dlciB0byB0aGUgYnVzLiBUaGUgY2FsbCByZXF1aXJlcyByZWFkL3dyaXRlIGFjY2VzcyB0byB0aGUKKyBkZXZpY2UuIFRoaXMgY2FsbCBoYXMgbm8gZWZmZWN0IGlmIHRoZSBkZXZpY2UgaXMgbWFudWFsbHkgcG93ZXJlZCBvZmYuIE5vdCBhbGwKKyBEVkIgYWRhcHRlcnMgc3VwcG9ydCB0aGlzIGlvY3RsLjwvcGFyYT4KKyZyZXR1cm4tdmFsdWUtZHZiOworPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL2ZlLWRpc2VxYy1zZW5kLWJ1cnN0LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvZmUtZGlzZXFjLXNlbmQtYnVyc3QueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmNmE2OGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL2ZlLWRpc2VxYy1zZW5kLWJ1cnN0LnhtbApAQCAtMCwwICsxLDg5IEBACis8cmVmZW50cnkgaWQ9IkZFX0RJU0VRQ19TRU5EX0JVUlNUIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgRkVfRElTRVFDX1NFTkRfQlVSU1Q8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPkZFX0RJU0VRQ19TRU5EX0JVUlNUPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPlNlbmRzIGEgMjJLSHogdG9uZSBidXJzdCBmb3IgMngxIG1pbmkgRGlTRXFDIHNhdGVsbGl0ZSBzZWxlY3Rpb24uPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmVudW0gZmVfc2VjX21pbmlfY21kICo8cGFyYW1ldGVyPnRvbmU8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKyAgICAgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmVfZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkZFX0RJU0VRQ19TRU5EX0JVUlNUPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj50b25lPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPnBvaW50ZXIgdG8gJmZlLXNlYy1taW5pLWNtZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCis8cGFyYT5UaGlzIGlvY3RsIGlzIHVzZWQgdG8gc2V0IHRoZSBnZW5lcmF0aW9uIG9mIGEgMjJrSHogdG9uZSBidXJzdCBmb3IgbWluaQorICAgIERpU0VxQyBzYXRlbGxpdGUKKyAgICBzZWxlY3Rpb24gZm9yIDJ4MSBzd2l0Y2hlcy4KKyAgICBUaGlzIGNhbGwgcmVxdWlyZXMgcmVhZC93cml0ZSBwZXJtaXNzaW9ucy48L3BhcmE+Cis8cGFyYT5JdCBwcm92aWRlcyBzdXBwb3J0IGZvciB3aGF0J3Mgc3BlY2lmaWVkIGF0CisgICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5ldXRlbHNhdC5jb20vZmlsZXMvY29udHJpYnV0ZWQvc2F0ZWxsaXRlcy9wZGYvRGlzZXFjL2Fzc29jaWF0ZWQlMjBkb2NzL3NpbXBsZV90b25lX2J1cnN0X2RldGVjLnBkZiI+RGlnaXRhbCBTYXRlbGxpdGUgRXF1aXBtZW50IENvbnRyb2wKKwkoRGlTRXFDKSAtIFNpbXBsZSAiVG9uZUJ1cnN0IiBEZXRlY3Rpb24gQ2lyY3VpdCBzcGVjaWZpY2F0aW9uLjwvdWxpbms+CisgICAgPC9wYXJhPgorJnJldHVybi12YWx1ZS1kdmI7Cis8L3JlZnNlY3QxPgorCis8cmVmc2VjdDEgaWQ9ImZlLXNlYy1taW5pLWNtZC10Ij4KKzx0aXRsZT5lbnVtIGZlX3NlY19taW5pX2NtZDwvdGl0bGU+CisKKzx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iZmUtc2VjLW1pbmktY21kIj4KKyAgICA8dGl0bGU+ZW51bSBmZV9zZWNfbWluaV9jbWQ8L3RpdGxlPgorICAgIDx0Z3JvdXAgY29scz0iMiI+CisJJmNzLWRlZjsKKwk8dGhlYWQ+CisJPHJvdz4KKwkgICAgPGVudHJ5PklEPC9lbnRyeT4KKwkgICAgPGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKwk8L3Jvdz4KKwk8L3RoZWFkPgorCTx0Ym9keSB2YWxpZ249InRvcCI+CisJPHJvdz4KKwkgICAgPGVudHJ5IGFsaWduPSJjaGFyIiBpZD0iU0VDLU1JTkktQSI+PGNvbnN0YW50PlNFQ19NSU5JX0E8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0iY2hhciI+U2VuZHMgYSBtaW5pLURpU0VxQyAyMmtIeiAnMCcgVG9uZSBCdXJzdCB0bworCQlzZWxlY3Qgc2F0ZWxsaXRlLUE8L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBhbGlnbj0iY2hhciIgaWQ9IlNFQy1NSU5JLUIiPjxjb25zdGFudD5TRUNfTUlOSV9CPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImNoYXIiPlNlbmRzIGEgbWluaS1EaVNFcUMgMjJrSHogJzEnIERhdGEgQnVyc3QgdG8KKwkJc2VsZWN0IHNhdGVsbGl0ZS1CPC9lbnRyeT4KKwk8L3Jvdz4KKyAgICAgICAgPC90Ym9keT4KKyAgICA8L3Rncm91cD4KKzwvdGFibGU+Cis8L3JlZnNlY3QxPgorCis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2Yi9mZS1kaXNlcWMtc2VuZC1tYXN0ZXItY21kLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvZmUtZGlzZXFjLXNlbmQtbWFzdGVyLWNtZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhjZjMxMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvZmUtZGlzZXFjLXNlbmQtbWFzdGVyLWNtZC54bWwKQEAgLTAsMCArMSw3MiBAQAorPHJlZmVudHJ5IGlkPSJGRV9ESVNFUUNfU0VORF9NQVNURVJfQ01EIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgRkVfRElTRVFDX1NFTkRfTUFTVEVSX0NNRDwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+RkVfRElTRVFDX1NFTkRfTUFTVEVSX0NNRDwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5TZW5kcyBhIERpU0VxQyBjb21tYW5kPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCBkdmJfZGlzZXFjX21hc3Rlcl9jbWQgKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorICAgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPiZmZV9mZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+RkVfRElTRVFDX1NFTkRfTUFTVEVSX0NNRDwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICAgIDxwYXJhPnBvaW50ZXIgdG8gJmR2Yi1kaXNlcWMtbWFzdGVyLWNtZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgPHBhcmE+U2VuZHMgYSBEaVNFcUMgY29tbWFuZCB0byB0aGUgYW50ZW5uYSBzdWJzeXN0ZW0uPC9wYXJhPgorJnJldHVybi12YWx1ZS1kdmI7CisKKzx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iZHZiLWRpc2VxYy1tYXN0ZXItY21kIj4KKyAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPmR2Yl9kaXNlcWNfbWFzdGVyX2NtZDwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgIDx0Z3JvdXAgY29scz0iMyI+CisgICAgJmNzLXN0cjsKKyAgICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCTxyb3c+CisJPGVudHJ5PnVpbnQ4X3Q8L2VudHJ5PgorCTxlbnRyeT5tc2dbNl08L2VudHJ5PgorCTxlbnRyeT5EaVNFcUMgbWVzc2FnZSAoZnJhbWluZywgYWRkcmVzcywgY29tbWFuZCwgZGF0YVszXSk8L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJPGVudHJ5PnVpbnQ4X3Q8L2VudHJ5PgorCTxlbnRyeT5tc2dfbGVuPC9lbnRyeT4KKwk8ZW50cnk+TGVuZ3RoIG9mIHRoZSBEaVNFcUMgbWVzc2FnZS4gVmFsaWQgdmFsdWVzIGFyZSAzIHRvIDY8L2VudHJ5PgorCTwvcm93PgorICAgIDwvdGJvZHk+CisgICAgPC90Z3JvdXA+Cis8L3RhYmxlPgorCis8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvZmUtZW5hYmxlLWhpZ2gtbG5iLXZvbHRhZ2UueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2Yi9mZS1lbmFibGUtaGlnaC1sbmItdm9sdGFnZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzExODkwYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvZmUtZW5hYmxlLWhpZ2gtbG5iLXZvbHRhZ2UueG1sCkBAIC0wLDAgKzEsNjEgQEAKKzxyZWZlbnRyeSBpZD0iRkVfRU5BQkxFX0hJR0hfTE5CX1ZPTFRBR0UiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBGRV9FTkFCTEVfSElHSF9MTkJfVk9MVEFHRTwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+RkVfRU5BQkxFX0hJR0hfTE5CX1ZPTFRBR0U8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+U2VsZWN0IG91dHB1dCBEQyBsZXZlbCBiZXR3ZWVuIG5vcm1hbCBMTkJmIHZvbHRhZ2VzIG9yIGhpZ2hlcgorCUxOQmYgdm9sdGFnZXMuPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnVuc2lnbmVkIGludCA8cGFyYW1ldGVyPmhpZ2g8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKyAgICAgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmVfZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkZFX0VOQUJMRV9ISUdIX0xOQl9WT0xUQUdFPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5oaWdoPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgICAgPHBhcmE+VmFsaWQgZmxhZ3M6PC9wYXJhPgorCSAgICA8aXRlbWl6ZWRsaXN0PgorCQk8bGlzdGl0ZW0+PHBhcmE+MCAtIG5vcm1hbCAxM1YgYW5kIDE4Vi48L3BhcmE+PC9saXN0aXRlbT4KKwkJPGxpc3RpdGVtPjxwYXJhPiZndDswIC0gZW5hYmxlcyBzbGlnaHRseSBoaWdoZXIgdm9sdGFnZXMgaW5zdGVhZCBvZgorCQkgICAgMTMvMThWLCBpbiBvcmRlciB0byBjb21wZW5zYXRlIGZvciBsb25nIGFudGVubmEgY2FibGVzLjwvcGFyYT48L2xpc3RpdGVtPgorCSAgICA8L2l0ZW1pemVkbGlzdD4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5TZWxlY3Qgb3V0cHV0IERDIGxldmVsIGJldHdlZW4gbm9ybWFsIExOQmYgdm9sdGFnZXMgb3IgaGlnaGVyCisJTE5CZiB2b2x0YWdlcyBiZXR3ZWVuIDAgKG5vcm1hbCkgb3IgYSB2YWx1ZSBncmF0ZXIgdGhhbiAwIGZvciBoaWdoZXIKKwl2b2x0YWdlcy48L3BhcmE+CismcmV0dXJuLXZhbHVlLWR2YjsKKzwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2Yi9mZS1nZXQtaW5mby54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL2ZlLWdldC1pbmZvLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDBlZWIyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2Yi9mZS1nZXQtaW5mby54bWwKQEAgLTAsMCArMSwyNjYgQEAKKzxyZWZlbnRyeSBpZD0iRkVfR0VUX0lORk8iPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBGRV9HRVRfSU5GTzwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+RkVfR0VUX0lORk88L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+UXVlcnkgRFZCIGZyb250ZW5kIGNhcGFiaWxpdGllcyBhbmQgcmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dAorCXRoZSBmcm9udC1lbmQuIFRoaXMgY2FsbCBvbmx5IHJlcXVpcmVzIHJlYWQtb25seSBhY2Nlc3MgdG8gdGhlIGRldmljZTwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zdHJ1Y3QgZHZiX2Zyb250ZW5kX2luZm8gKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorICAgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPiZmZV9mZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+RkVfR0VUX0lORk88L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgICA8cGFyYT5wb2ludGVyIHRvIHN0cnVjdCAmZHZiLWZyb250ZW5kLWluZm87PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPkFsbCBEVkIgZnJvbnRlbmQgZGV2aWNlcyBzdXBwb3J0IHRoZQorPGNvbnN0YW50PkZFX0dFVF9JTkZPPC9jb25zdGFudD4gaW9jdGwuIEl0IGlzIHVzZWQgdG8gaWRlbnRpZnkKK2tlcm5lbCBkZXZpY2VzIGNvbXBhdGlibGUgd2l0aCB0aGlzIHNwZWNpZmljYXRpb24gYW5kIHRvIG9idGFpbgoraW5mb3JtYXRpb24gYWJvdXQgZHJpdmVyIGFuZCBoYXJkd2FyZSBjYXBhYmlsaXRpZXMuIFRoZSBpb2N0bCB0YWtlcyBhCitwb2ludGVyIHRvIGR2Yl9mcm9udGVuZF9pbmZvIHdoaWNoIGlzIGZpbGxlZCBieSB0aGUgZHJpdmVyLiBXaGVuIHRoZQorZHJpdmVyIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhpcyBzcGVjaWZpY2F0aW9uIHRoZSBpb2N0bCByZXR1cm5zIGFuIGVycm9yLgorPC9wYXJhPgorJnJldHVybi12YWx1ZS1kdmI7CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9ImR2Yi1mcm9udGVuZC1pbmZvIj4KKyAgICAgIDx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+ZHZiX2Zyb250ZW5kX2luZm88L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PmNoYXI8L2VudHJ5PgorCSAgICA8ZW50cnk+bmFtZVsxMjhdPC9lbnRyeT4KKwkgICAgPGVudHJ5Pk5hbWUgb2YgdGhlIGZyb250ZW5kPC9lbnRyeT4KKwkgIDwvcm93Pjxyb3c+CisJICAgIDxlbnRyeT5mZV90eXBlX3Q8L2VudHJ5PgorCSAgICA8ZW50cnk+dHlwZTwvZW50cnk+CisJICAgIDxlbnRyeT48ZW1waGFzaXMgcm9sZT0iYm9sZCI+REVQUkVDQVRFRDwvZW1waGFzaXM+LiBEVkJ2MyB0eXBlLiBTaG91bGQgbm90IGJlIHVzZWQgb24gbW9kZXJuIHByb2dyYW1zLCBhcyBhCisJCWZyb250ZW5kIG1heSBoYXZlIG1vcmUgdGhhbiBvbmUgdHlwZS4gU28sIHRoZSBEVkJ2NSBBUEkgc2hvdWxkCisJCWJlIHVzZWQgaW5zdGVhZCB0byBlbnVtZXJhdGUgYW5kIHNlbGVjdCB0aGUgZnJvbnRlbmQgdHlwZS48L2VudHJ5PgorCSAgPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5PnVpbnQzMl90PC9lbnRyeT4KKwkgICAgPGVudHJ5PmZyZXF1ZW5jeV9taW48L2VudHJ5PgorCSAgICA8ZW50cnk+TWluaW1hbCBmcmVxdWVuY3kgc3VwcG9ydGVkIGJ5IHRoZSBmcm9udGVuZDwvZW50cnk+CisJICA8L3Jvdz48cm93PgorCSAgICA8ZW50cnk+dWludDMyX3Q8L2VudHJ5PgorCSAgICA8ZW50cnk+ZnJlcXVlbmN5X21heDwvZW50cnk+CisJICAgIDxlbnRyeT5NYXhpbWFsIGZyZXF1ZW5jeSBzdXBwb3J0ZWQgYnkgdGhlIGZyb250ZW5kPC9lbnRyeT4KKwkgIDwvcm93Pjxyb3c+CisJICAgIDxlbnRyeT51aW50MzJfdDwvZW50cnk+CisJICAgIDxlbnRyeT5mcmVxdWVuY3lfc3RlcHNpemU8L2VudHJ5PgorCSAgICA8ZW50cnk+RnJlcXVlbmN5IHN0ZXAgLSBhbGwgZnJlcXVlbmNpZXMgYXJlIG11bHRpcGxlIG9mIHRoaXMgdmFsdWU8L2VudHJ5PgorCSAgPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5PnVpbnQzMl90PC9lbnRyeT4KKwkgICAgPGVudHJ5PmZyZXF1ZW5jeV90b2xlcmFuY2U8L2VudHJ5PgorCSAgICA8ZW50cnk+VG9sZXJhbmNlIG9mIHRoZSBmcmVxdWVuY3k8L2VudHJ5PgorCSAgPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5PnVpbnQzMl90PC9lbnRyeT4KKwkgICAgPGVudHJ5PnN5bWJvbF9yYXRlX21pbjwvZW50cnk+CisJICAgIDxlbnRyeT5NaW5pbWFsIHN5bWJvbCByYXRlIChmb3IgQ2FibGUvU2F0ZWxsaXRlIHN5c3RlbXMpLCBpbiBiYXVkczwvZW50cnk+CisJICA8L3Jvdz48cm93PgorCSAgICA8ZW50cnk+dWludDMyX3Q8L2VudHJ5PgorCSAgICA8ZW50cnk+c3ltYm9sX3JhdGVfbWF4PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk1heGltYWwgc3ltYm9sIHJhdGUgKGZvciBDYWJsZS9TYXRlbGxpdGUgc3lzdGVtcyksIGluIGJhdWRzPC9lbnRyeT4KKwkgIDwvcm93Pjxyb3c+CisJICAgIDxlbnRyeT51aW50MzJfdDwvZW50cnk+CisJICAgIDxlbnRyeT5zeW1ib2xfcmF0ZV90b2xlcmFuY2U8L2VudHJ5PgorCSAgICA8ZW50cnk+TWF4aW1hbCBzeW1ib2wgcmF0ZSB0b2xlcmFuY2UsIGluIHBwbTwvZW50cnk+CisJICA8L3Jvdz48cm93PgorCSAgICA8ZW50cnk+dWludDMyX3Q8L2VudHJ5PgorCSAgICA8ZW50cnk+bm90aWZpZXJfZGVsYXk8L2VudHJ5PgorCSAgICA8ZW50cnk+PGVtcGhhc2lzIHJvbGU9ImJvbGQiPkRFUFJFQ0FURUQ8L2VtcGhhc2lzPi4gTm90IHVzZWQgYnkgYW55IGRyaXZlci48L2VudHJ5PgorCSAgPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5PiZmZS1jYXBzOzwvZW50cnk+CisJICAgIDxlbnRyeT5jYXBzPC9lbnRyeT4KKwkgICAgPGVudHJ5PkNhcGFiaWxpdGllcyBzdXBwb3J0ZWQgYnkgdGhlIGZyb250ZW5kPC9lbnRyeT4KKyAgICAgICAgICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICA8cGFyYT5OT1RFOiBUaGUgZnJlcXVlbmNpZXMgYXJlIHNwZWNpZmllZCBpbiBIeiBmb3IgVGVycmVzdHJpYWwgYW5kIENhYmxlCisgICAgICBzeXN0ZW1zLiBUaGV5J3JlIHNwZWNpZmllZCBpbiBrSHogZm9yIFNhdGVsbGl0ZSBzeXN0ZW1zPC9wYXJhPgorICA8L3JlZnNlY3QxPgorCis8cmVmc2VjdDEgaWQ9ImZlLWNhcHMtdCI+Cis8dGl0bGU+ZnJvbnRlbmQgY2FwYWJpbGl0aWVzPC90aXRsZT4KKworPHBhcmE+Q2FwYWJpbGl0aWVzIGRlc2NyaWJlIHdoYXQgYSBmcm9udGVuZCBjYW4gZG8uIFNvbWUgY2FwYWJpbGl0aWVzIGFyZQorICAgIHN1cHBvcnRlZCBvbmx5IG9uIHNvbWUgc3BlY2lmaWMgZnJvbnRlbmQgdHlwZXMuPC9wYXJhPgorCis8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9ImZlLWNhcHMiPgorICAgIDx0aXRsZT5lbnVtIGZlX2NhcHM8L3RpdGxlPgorICAgIDx0Z3JvdXAgY29scz0iMiI+CisJJmNzLWRlZjsKKwk8dGhlYWQ+CisJPHJvdz4KKwkgICAgPGVudHJ5PklEPC9lbnRyeT4KKwkgICAgPGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKwk8L3Jvdz4KKwk8L3RoZWFkPgorCTx0Ym9keSB2YWxpZ249InRvcCI+CisJPHJvdz4KKwk8ZW50cnkgaWQ9IkZFLUlTLVNUVVBJRCI+PGNvbnN0YW50PkZFX0lTX1NUVVBJRDwvY29uc3RhbnQ+PC9lbnRyeT4KKwk8ZW50cnk+VGhlcmUncyBzb21ldGhpbmcgd3JvbmcgYXQgdGhlIGZyb250ZW5kLCBhbmQgaXQgY2FuJ3QKKwkgICAgcmVwb3J0IGl0cyBjYXBhYmlsaXRpZXM8L2VudHJ5PgorCTwvcm93PgorCTxyb3c+CisJPGVudHJ5IGlkPSJGRS1DQU4tSU5WRVJTSU9OLUFVVE8iPjxjb25zdGFudD5GRV9DQU5fSU5WRVJTSU9OX0FVVE88L2NvbnN0YW50PjwvZW50cnk+CisJPGVudHJ5PlRoZSBmcm9udGVuZCBpcyBjYXBhYmxlIG9mIGF1dG8tZGV0ZWN0aW5nIGludmVyc2lvbjwvZW50cnk+CisJPC9yb3c+CisJPHJvdz4KKwk8ZW50cnkgaWQ9IkZFLUNBTi1GRUMtMS0yIj48Y29uc3RhbnQ+RkVfQ0FOX0ZFQ18xXzI8L2NvbnN0YW50PjwvZW50cnk+CisJPGVudHJ5PlRoZSBmcm9udGVuZCBzdXBwb3J0cyBGRUMgMS8yPC9lbnRyeT4KKwk8L3Jvdz4KKwk8cm93PgorCTxlbnRyeSBpZD0iRkUtQ0FOLUZFQy0yLTMiPjxjb25zdGFudD5GRV9DQU5fRkVDXzJfMzwvY29uc3RhbnQ+PC9lbnRyeT4KKwk8ZW50cnk+VGhlIGZyb250ZW5kIHN1cHBvcnRzIEZFQyAyLzM8L2VudHJ5PgorCTwvcm93PgorCTxyb3c+CisJPGVudHJ5IGlkPSJGRS1DQU4tRkVDLTMtNCI+PGNvbnN0YW50PkZFX0NBTl9GRUNfM180PC9jb25zdGFudD48L2VudHJ5PgorCTxlbnRyeT5UaGUgZnJvbnRlbmQgc3VwcG9ydHMgRkVDIDMvNDwvZW50cnk+CisJPC9yb3c+CisJPHJvdz4KKwk8ZW50cnkgaWQ9IkZFLUNBTi1GRUMtNC01Ij48Y29uc3RhbnQ+RkVfQ0FOX0ZFQ180XzU8L2NvbnN0YW50PjwvZW50cnk+CisJPGVudHJ5PlRoZSBmcm9udGVuZCBzdXBwb3J0cyBGRUMgNC81PC9lbnRyeT4KKwk8L3Jvdz4KKwk8cm93PgorCTxlbnRyeSBpZD0iRkUtQ0FOLUZFQy01LTYiPjxjb25zdGFudD5GRV9DQU5fRkVDXzVfNjwvY29uc3RhbnQ+PC9lbnRyeT4KKwk8ZW50cnk+VGhlIGZyb250ZW5kIHN1cHBvcnRzIEZFQyA1LzY8L2VudHJ5PgorCTwvcm93PgorCTxyb3c+CisJPGVudHJ5IGlkPSJGRS1DQU4tRkVDLTYtNyI+PGNvbnN0YW50PkZFX0NBTl9GRUNfNl83PC9jb25zdGFudD48L2VudHJ5PgorCTxlbnRyeT5UaGUgZnJvbnRlbmQgc3VwcG9ydHMgRkVDIDYvNzwvZW50cnk+CisJPC9yb3c+CisJPHJvdz4KKwk8ZW50cnkgaWQ9IkZFLUNBTi1GRUMtNy04Ij48Y29uc3RhbnQ+RkVfQ0FOX0ZFQ183Xzg8L2NvbnN0YW50PjwvZW50cnk+CisJPGVudHJ5PlRoZSBmcm9udGVuZCBzdXBwb3J0cyBGRUMgNy84PC9lbnRyeT4KKwk8L3Jvdz4KKwk8cm93PgorCTxlbnRyeSBpZD0iRkUtQ0FOLUZFQy04LTkiPjxjb25zdGFudD5GRV9DQU5fRkVDXzhfOTwvY29uc3RhbnQ+PC9lbnRyeT4KKwk8ZW50cnk+VGhlIGZyb250ZW5kIHN1cHBvcnRzIEZFQyA4Lzk8L2VudHJ5PgorCTwvcm93PgorCTxyb3c+CisJPGVudHJ5IGlkPSJGRS1DQU4tRkVDLUFVVE8iPjxjb25zdGFudD5GRV9DQU5fRkVDX0FVVE88L2NvbnN0YW50PjwvZW50cnk+CisJPGVudHJ5PlRoZSBmcm9udGVuZCBjYW4gYXV0b2RldGVjdCBGRUMuPC9lbnRyeT4KKwk8L3Jvdz4KKwk8cm93PgorCTxlbnRyeSBpZD0iRkUtQ0FOLVFQU0siPjxjb25zdGFudD5GRV9DQU5fUVBTSzwvY29uc3RhbnQ+PC9lbnRyeT4KKwk8ZW50cnk+VGhlIGZyb250ZW5kIHN1cHBvcnRzIFFQU0sgbW9kdWxhdGlvbjwvZW50cnk+CisJPC9yb3c+CisJPHJvdz4KKwk8ZW50cnkgaWQ9IkZFLUNBTi1RQU0tMTYiPjxjb25zdGFudD5GRV9DQU5fUUFNXzE2PC9jb25zdGFudD48L2VudHJ5PgorCTxlbnRyeT5UaGUgZnJvbnRlbmQgc3VwcG9ydHMgMTYtUUFNIG1vZHVsYXRpb248L2VudHJ5PgorCTwvcm93PgorCTxyb3c+CisJPGVudHJ5IGlkPSJGRS1DQU4tUUFNLTMyIj48Y29uc3RhbnQ+RkVfQ0FOX1FBTV8zMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwk8ZW50cnk+VGhlIGZyb250ZW5kIHN1cHBvcnRzIDMyLVFBTSBtb2R1bGF0aW9uPC9lbnRyeT4KKwk8L3Jvdz4KKwk8cm93PgorCTxlbnRyeSBpZD0iRkUtQ0FOLVFBTS02NCI+PGNvbnN0YW50PkZFX0NBTl9RQU1fNjQ8L2NvbnN0YW50PjwvZW50cnk+CisJPGVudHJ5PlRoZSBmcm9udGVuZCBzdXBwb3J0cyA2NC1RQU0gbW9kdWxhdGlvbjwvZW50cnk+CisJPC9yb3c+CisJPHJvdz4KKwk8ZW50cnkgaWQ9IkZFLUNBTi1RQU0tMTI4Ij48Y29uc3RhbnQ+RkVfQ0FOX1FBTV8xMjg8L2NvbnN0YW50PjwvZW50cnk+CisJPGVudHJ5PlRoZSBmcm9udGVuZCBzdXBwb3J0cyAxMjgtUUFNIG1vZHVsYXRpb248L2VudHJ5PgorCTwvcm93PgorCTxyb3c+CisJPGVudHJ5IGlkPSJGRS1DQU4tUUFNLTI1NiI+PGNvbnN0YW50PkZFX0NBTl9RQU1fMjU2PC9jb25zdGFudD48L2VudHJ5PgorCTxlbnRyeT5UaGUgZnJvbnRlbmQgc3VwcG9ydHMgMjU2LVFBTSBtb2R1bGF0aW9uPC9lbnRyeT4KKwk8L3Jvdz4KKwk8cm93PgorCTxlbnRyeSBpZD0iRkUtQ0FOLVFBTS1BVVRPIj48Y29uc3RhbnQ+RkVfQ0FOX1FBTV9BVVRPPC9jb25zdGFudD48L2VudHJ5PgorCTxlbnRyeT5UaGUgZnJvbnRlbmQgY2FuIGF1dG9kZXRlY3QgbW9kdWxhdGlvbjwvZW50cnk+CisJPC9yb3c+CisJPHJvdz4KKwk8ZW50cnkgaWQ9IkZFLUNBTi1UUkFOU01JU1NJT04tTU9ERS1BVVRPIj48Y29uc3RhbnQ+RkVfQ0FOX1RSQU5TTUlTU0lPTl9NT0RFX0FVVE88L2NvbnN0YW50PjwvZW50cnk+CisJPGVudHJ5PlRoZSBmcm9udGVuZCBjYW4gYXV0b2RldGVjdCB0aGUgdHJhbnNtaXNzaW9uIG1vZGU8L2VudHJ5PgorCTwvcm93PgorCTxyb3c+CisJPGVudHJ5IGlkPSJGRS1DQU4tQkFORFdJRFRILUFVVE8iPjxjb25zdGFudD5GRV9DQU5fQkFORFdJRFRIX0FVVE88L2NvbnN0YW50PjwvZW50cnk+CisJPGVudHJ5PlRoZSBmcm9udGVuZCBjYW4gYXV0b2RldGVjdCB0aGUgYmFuZHdpZHRoPC9lbnRyeT4KKwk8L3Jvdz4KKwk8cm93PgorCTxlbnRyeSBpZD0iRkUtQ0FOLUdVQVJELUlOVEVSVkFMLUFVVE8iPjxjb25zdGFudD5GRV9DQU5fR1VBUkRfSU5URVJWQUxfQVVUTzwvY29uc3RhbnQ+PC9lbnRyeT4KKwk8ZW50cnk+VGhlIGZyb250ZW5kIGNhbiBhdXRvZGV0ZWN0IHRoZSBndWFyZCBpbnRlcnZhbDwvZW50cnk+CisJPC9yb3c+CisJPHJvdz4KKwk8ZW50cnkgaWQ9IkZFLUNBTi1ISUVSQVJDSFktQVVUTyI+PGNvbnN0YW50PkZFX0NBTl9ISUVSQVJDSFlfQVVUTzwvY29uc3RhbnQ+PC9lbnRyeT4KKwk8ZW50cnk+VGhlIGZyb250ZW5kIGNhbiBhdXRvZGV0ZWN0IGhpZXJhcmNoPC9lbnRyeT4KKwk8L3Jvdz4KKwk8cm93PgorCTxlbnRyeSBpZD0iRkUtQ0FOLThWU0IiPjxjb25zdGFudD5GRV9DQU5fOFZTQjwvY29uc3RhbnQ+PC9lbnRyeT4KKwk8ZW50cnk+VGhlIGZyb250ZW5kIHN1cHBvcnRzIDgtVlNCIG1vZHVsYXRpb248L2VudHJ5PgorCTwvcm93PgorCTxyb3c+CisJPGVudHJ5IGlkPSJGRS1DQU4tMTZWU0IiPjxjb25zdGFudD5GRV9DQU5fMTZWU0I8L2NvbnN0YW50PjwvZW50cnk+CisJPGVudHJ5PlRoZSBmcm9udGVuZCBzdXBwb3J0cyAxNi1WU0IgbW9kdWxhdGlvbjwvZW50cnk+CisJPC9yb3c+CisJPHJvdz4KKwk8ZW50cnkgaWQ9IkZFLUhBUy1FWFRFTkRFRC1DQVBTIj48Y29uc3RhbnQ+RkVfSEFTX0VYVEVOREVEX0NBUFM8L2NvbnN0YW50PjwvZW50cnk+CisJPGVudHJ5PkN1cnJlbnRseSwgdW51c2VkPC9lbnRyeT4KKwk8L3Jvdz4KKwk8cm93PgorCTxlbnRyeSBpZD0iRkUtQ0FOLU1VTFRJU1RSRUFNIj48Y29uc3RhbnQ+RkVfQ0FOX01VTFRJU1RSRUFNPC9jb25zdGFudD48L2VudHJ5PgorCTxlbnRyeT5UaGUgZnJvbnRlbmQgc3VwcG9ydHMgbXVsdGlzdHJlYW0gZmlsdGVyaW5nPC9lbnRyeT4KKwk8L3Jvdz4KKwk8cm93PgorCTxlbnRyeSBpZD0iRkUtQ0FOLVRVUkJPLUZFQyI+PGNvbnN0YW50PkZFX0NBTl9UVVJCT19GRUM8L2NvbnN0YW50PjwvZW50cnk+CisJPGVudHJ5PlRoZSBmcm9udGVuZCBzdXBwb3J0cyB0dXJibyBGRUMgbW9kdWxhdGlvbjwvZW50cnk+CisJPC9yb3c+CisJPHJvdz4KKwk8ZW50cnkgaWQ9IkZFLUNBTi0yRy1NT0RVTEFUSU9OIj48Y29uc3RhbnQ+RkVfQ0FOXzJHX01PRFVMQVRJT048L2NvbnN0YW50PjwvZW50cnk+CisJPGVudHJ5PlRoZSBmcm9udGVuZCBzdXBwb3J0cyAiMm5kIGdlbmVyYXRpb24gbW9kdWxhdGlvbiIgKERWQi1TMi9UMik+PC9lbnRyeT4KKwk8L3Jvdz4KKwk8cm93PgorCTxlbnRyeSBpZD0iRkUtTkVFRFMtQkVORElORyI+PGNvbnN0YW50PkZFX05FRURTX0JFTkRJTkc8L2NvbnN0YW50PjwvZW50cnk+CisJPGVudHJ5Pk5vdCBzdXBwb3J0ZWQgYW55bW9yZSwgZG9uJ3QgdXNlIGl0PC9lbnRyeT4KKwk8L3Jvdz4KKwk8cm93PgorCTxlbnRyeSBpZD0iRkUtQ0FOLVJFQ09WRVIiPjxjb25zdGFudD5GRV9DQU5fUkVDT1ZFUjwvY29uc3RhbnQ+PC9lbnRyeT4KKwk8ZW50cnk+VGhlIGZyb250ZW5kIGNhbiByZWNvdmVyIGZyb20gYSBjYWJsZSB1bnBsdWcgYXV0b21hdGljYWxseTwvZW50cnk+CisJPC9yb3c+CisJPHJvdz4KKwk8ZW50cnkgaWQ9IkZFLUNBTi1NVVRFLVRTIj48Y29uc3RhbnQ+RkVfQ0FOX01VVEVfVFM8L2NvbnN0YW50PjwvZW50cnk+CisJPGVudHJ5PlRoZSBmcm9udGVuZCBjYW4gc3RvcCBzcHVyaW91cyBUUyBkYXRhIG91dHB1dDwvZW50cnk+CisJPC9yb3c+CisgICAgICAgIDwvdGJvZHk+CisgICAgPC90Z3JvdXA+Cis8L3RhYmxlPgorPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL2ZlLWdldC1wcm9wZXJ0eS54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL2ZlLWdldC1wcm9wZXJ0eS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNhMTcwZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvZmUtZ2V0LXByb3BlcnR5LnhtbApAQCAtMCwwICsxLDgxIEBACis8cmVmZW50cnkgaWQ9IkZFX0dFVF9QUk9QRVJUWSI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIEZFX1NFVF9QUk9QRVJUWSwgRkVfR0VUX1BST1BFUlRZPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICAgIDxyZWZuYW1lPkZFX1NFVF9QUk9QRVJUWTwvcmVmbmFtZT4KKyAgICAgIDxyZWZuYW1lPkZFX0dFVF9QUk9QRVJUWTwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5GRV9TRVRfUFJPUEVSVFkgc2V0cyBvbmUgb3IgbW9yZSBmcm9udGVuZCBwcm9wZXJ0aWVzLgorCUZFX0dFVF9QUk9QRVJUWSByZXR1cm5zIG9uZSBvciBtb3JlIGZyb250ZW5kIHByb3BlcnRpZXMuPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCBkdHZfcHJvcGVydGllcyAqPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisgICAgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZlX2ZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5GRV9TRVRfUFJPUEVSVFksIEZFX0dFVF9QUk9QRVJUWTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICAgIDxwYXJhPnBvaW50ZXIgdG8gJmR0di1wcm9wZXJ0aWVzOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5BbGwgRFZCIGZyb250ZW5kIGRldmljZXMgc3VwcG9ydCB0aGUKKzxjb25zdGFudD5GRV9TRVRfUFJPUEVSVFk8L2NvbnN0YW50PiBhbmQgPGNvbnN0YW50PkZFX0dFVF9QUk9QRVJUWTwvY29uc3RhbnQ+Citpb2N0bHMuIFRoZSBzdXBwb3J0ZWQgcHJvcGVydGllcyBhbmQgc3RhdGlzdGljcyBkZXBlbmRzIG9uIHRoZSBkZWxpdmVyeSBzeXN0ZW0KK2FuZCBvbiB0aGUgZGV2aWNlOjwvcGFyYT4KKzxpdGVtaXplZGxpc3Q+Cis8bGlzdGl0ZW0+CisgICAgPHBhcmE+PGNvbnN0YW50PkZFX1NFVF9QUk9QRVJUWTo8L2NvbnN0YW50PjwvcGFyYT4KKzxpdGVtaXplZGxpc3Q+Cis8bGlzdGl0ZW0+PHBhcmE+VGhpcyBpb2N0bCBpcyB1c2VkIHRvIHNldCBvbmUgb3IgbW9yZQorCWZyb250ZW5kIHByb3BlcnRpZXMuPC9wYXJhPjwvbGlzdGl0ZW0+Cis8bGlzdGl0ZW0+PHBhcmE+VGhpcyBpcyB0aGUgYmFzaWMgY29tbWFuZCB0byByZXF1ZXN0IHRoZSBmcm9udGVuZCB0byB0dW5lIGludG8gc29tZQorICAgIGZyZXF1ZW5jeSBhbmQgdG8gc3RhcnQgZGVjb2RpbmcgdGhlIGRpZ2l0YWwgVFYgc2lnbmFsLjwvcGFyYT48L2xpc3RpdGVtPgorPGxpc3RpdGVtPjxwYXJhPlRoaXMgY2FsbCByZXF1aXJlcyByZWFkL3dyaXRlIGFjY2VzcyB0byB0aGUgZGV2aWNlLjwvcGFyYT48L2xpc3RpdGVtPgorPGxpc3RpdGVtPjxwYXJhPkF0IHJldHVybiwgdGhlIHZhbHVlcyBhcmUgdXBkYXRlZCB0byByZWZsZWN0IHRoZQorICAgIGFjdHVhbCBwYXJhbWV0ZXJzIHVzZWQuPC9wYXJhPjwvbGlzdGl0ZW0+Cis8L2l0ZW1pemVkbGlzdD4KKzwvbGlzdGl0ZW0+Cis8bGlzdGl0ZW0+CisgICAgPHBhcmE+PGNvbnN0YW50PkZFX0dFVF9QUk9QRVJUWTo8L2NvbnN0YW50PjwvcGFyYT4KKzxpdGVtaXplZGxpc3Q+Cis8bGlzdGl0ZW0+PHBhcmE+VGhpcyBpb2N0bCBpcyB1c2VkIHRvIGdldCBwcm9wZXJ0aWVzIGFuZAorc3RhdGlzdGljcyBmcm9tIHRoZSBmcm9udGVuZC48L3BhcmE+PC9saXN0aXRlbT4KKzxsaXN0aXRlbT48cGFyYT5ObyBwcm9wZXJ0aWVzIGFyZSBjaGFuZ2VkLCBhbmQgc3RhdGlzdGljcyBhcmVuJ3QgcmVzZXQuPC9wYXJhPjwvbGlzdGl0ZW0+Cis8bGlzdGl0ZW0+PHBhcmE+VGhpcyBjYWxsIG9ubHkgcmVxdWlyZXMgcmVhZC1vbmx5IGFjY2VzcyB0byB0aGUgZGV2aWNlLjwvcGFyYT48L2xpc3RpdGVtPgorPC9pdGVtaXplZGxpc3Q+Cis8L2xpc3RpdGVtPgorPC9pdGVtaXplZGxpc3Q+CismcmV0dXJuLXZhbHVlLWR2YjsKKzwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2Yi9mZS1yZWFkLXN0YXR1cy54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL2ZlLXJlYWQtc3RhdHVzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzBkYzJhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2Yi9mZS1yZWFkLXN0YXR1cy54bWwKQEAgLTAsMCArMSwxMDcgQEAKKzxyZWZlbnRyeSBpZD0iRkVfUkVBRF9TVEFUVVMiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBGRV9SRUFEX1NUQVRVUzwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+RkVfUkVBRF9TVEFUVVM8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+UmV0dXJucyBzdGF0dXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZyb250LWVuZC4gVGhpcyBjYWxsIG9ubHkKKyByZXF1aXJlcyByZWFkLW9ubHkgYWNjZXNzIHRvIHRoZSBkZXZpY2U8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+dW5zaWduZWQgaW50ICo8cGFyYW1ldGVyPnN0YXR1czwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorICAgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPiZmZV9mZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+RkVfUkVBRF9TVEFUVVM8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnN0YXR1czwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICAgIDxwYXJhPnBvaW50ZXIgdG8gYSBiaXRtYXNrIGludGVnZXIgZmlsbGVkIHdpdGggdGhlIHZhbHVlcyBkZWZpbmVkIGJ5CisJCSZmZS1zdGF0dXM7LjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5BbGwgRFZCIGZyb250ZW5kIGRldmljZXMgc3VwcG9ydCB0aGUKKzxjb25zdGFudD5GRV9SRUFEX1NUQVRVUzwvY29uc3RhbnQ+IGlvY3RsLiBJdCBpcyB1c2VkIHRvIGNoZWNrIGFib3V0IHRoZQorbG9ja2luZyBzdGF0dXMgb2YgdGhlIGZyb250ZW5kIGFmdGVyIGJlaW5nIHR1bmVkLiBUaGUgaW9jdGwgdGFrZXMgYQorcG9pbnRlciB0byBhbiBpbnRlZ2VyIHdoZXJlIHRoZSBzdGF0dXMgd2lsbCBiZSB3cml0dGVuLgorPC9wYXJhPgorPHBhcmE+Tk9URTogdGhlIHNpemUgb2Ygc3RhdHVzIGlzIGFjdHVhbGx5IHNpemVvZihlbnVtIGZlX3N0YXR1cyksIHdpdGggdmFyaWVzCisgICAgYWNjb3JkaW5nIHdpdGggdGhlIGFyY2hpdGVjdHVyZS4gVGhpcyBuZWVkcyB0byBiZSBmaXhlZCBpbiB0aGUgZnV0dXJlLjwvcGFyYT4KKyZyZXR1cm4tdmFsdWUtZHZiOworPC9yZWZzZWN0MT4KKworPHJlZnNlY3QxIGlkPSJmZS1zdGF0dXMtdCI+Cis8dGl0bGU+aW50IGZlX3N0YXR1czwvdGl0bGU+CisKKzxwYXJhPlRoZSBmZV9zdGF0dXMgcGFyYW1ldGVyIGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhlIGN1cnJlbnQgc3RhdGUKKyAgICBhbmQvb3Igc3RhdGUgY2hhbmdlcyBvZiB0aGUgZnJvbnRlbmQgaGFyZHdhcmUuIEl0IGlzIHByb2R1Y2VkIHVzaW5nCisgICAgdGhlICZmZS1zdGF0dXM7IHZhbHVlcyBvbiBhIGJpdG1hc2s8L3BhcmE+CisKKzx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iZmUtc3RhdHVzIj4KKyAgICA8dGl0bGU+ZW51bSBmZV9zdGF0dXM8L3RpdGxlPgorICAgIDx0Z3JvdXAgY29scz0iMiI+CisJJmNzLWRlZjsKKwk8dGhlYWQ+CisJPHJvdz4KKwkgICAgPGVudHJ5PklEPC9lbnRyeT4KKwkgICAgPGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKwk8L3Jvdz4KKwk8L3RoZWFkPgorCTx0Ym9keSB2YWxpZ249InRvcCI+CisJPHJvdz4KKwkgICAgPGVudHJ5IGFsaWduPSJjaGFyIiBpZD0iRkUtSEFTLVNJR05BTCI+PGNvbnN0YW50PkZFX0hBU19TSUdOQUw8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0iY2hhciI+VGhlIGZyb250ZW5kIGhhcyBmb3VuZCBzb21ldGhpbmcgYWJvdmUgdGhlIG5vaXNlIGxldmVsPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgYWxpZ249ImNoYXIiIGlkPSJGRS1IQVMtQ0FSUklFUiI+PGNvbnN0YW50PkZFX0hBU19DQVJSSUVSPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImNoYXIiPlRoZSBmcm9udGVuZCBoYXMgZm91bmQgYSBEVkIgc2lnbmFsPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgYWxpZ249ImNoYXIiIGlkPSJGRS1IQVMtVklURVJCSSI+PGNvbnN0YW50PkZFX0hBU19WSVRFUkJJPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImNoYXIiPlRoZSBmcm9udGVuZCBGRUMgaW5uZXIgY29kaW5nIChWaXRlcmJpLCBMRFBDIG9yIG90aGVyIGlubmVyIGNvZGUpIGlzIHN0YWJsZTwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5IGFsaWduPSJjaGFyIiBpZD0iRkUtSEFTLVNZTkMiPjxjb25zdGFudD5GRV9IQVNfU1lOQzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5IGFsaWduPSJjaGFyIj5TeW5jaHJvbml6YXRpb24gYnl0ZXMgd2FzIGZvdW5kPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgYWxpZ249ImNoYXIiIGlkPSJGRS1IQVMtTE9DSyI+PGNvbnN0YW50PkZFX0hBU19MT0NLPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImNoYXIiPlRoZSBEVkIgd2VyZSBsb2NrZWQgYW5kIGV2ZXJ5dGhpbmcgaXMgd29ya2luZzwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5IGFsaWduPSJjaGFyIiBpZD0iRkUtVElNRURPVVQiPjxjb25zdGFudD5GRV9USU1FRE9VVDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5IGFsaWduPSJjaGFyIj5ubyBsb2NrIHdpdGhpbiB0aGUgbGFzdCBhYm91dCAyIHNlY29uZHM8L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJICAgIDxlbnRyeSBhbGlnbj0iY2hhciIgaWQ9IkZFLVJFSU5JVCI+PGNvbnN0YW50PkZFX1JFSU5JVDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5IGFsaWduPSJjaGFyIj5UaGUgZnJvbnRlbmQgd2FzIHJlaW5pdGlhbGl6ZWQsIGFwcGxpY2F0aW9uIGlzCisJICAgIHJlY29tbWVuZGVkIHRvIHJlc2V0IERpU0VxQywgdG9uZSBhbmQgcGFyYW1ldGVyczwvZW50cnk+CisJPC9yb3c+CisgICAgICAgIDwvdGJvZHk+CisgICAgPC90Z3JvdXA+Cis8L3RhYmxlPgorPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL2ZlLXNldC1mcm9udGVuZC10dW5lLW1vZGUueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2Yi9mZS1zZXQtZnJvbnRlbmQtdHVuZS1tb2RlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWZhOGEwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2Yi9mZS1zZXQtZnJvbnRlbmQtdHVuZS1tb2RlLnhtbApAQCAtMCwwICsxLDY0IEBACis8cmVmZW50cnkgaWQ9IkZFX1NFVF9GUk9OVEVORF9UVU5FX01PREUiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBGRV9TRVRfRlJPTlRFTkRfVFVORV9NT0RFPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5GRV9TRVRfRlJPTlRFTkRfVFVORV9NT0RFPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPkFsbG93IHNldHRpbmcgdHVuZXIgbW9kZSBmbGFncyB0byB0aGUgZnJvbnRlbmQuPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnVuc2lnbmVkIGludCA8cGFyYW1ldGVyPmZsYWdzPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisgICAgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZlX2ZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5GRV9TRVRfRlJPTlRFTkRfVFVORV9NT0RFPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mbGFnczwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICAgIDxwYXJhPlZhbGlkIGZsYWdzOjwvcGFyYT4KKwkgICAgPGl0ZW1pemVkbGlzdD4KKwkJPGxpc3RpdGVtPjxwYXJhPjAgLSBub3JtYWwgdHVuZSBtb2RlPC9wYXJhPjwvbGlzdGl0ZW0+CisJCTxsaXN0aXRlbT48cGFyYT5GRV9UVU5FX01PREVfT05FU0hPVCAtIFdoZW4gc2V0LCB0aGlzIGZsYWcgd2lsbAorCQkgICAgZGlzYWJsZSBhbnkgemlnemFnZ2luZyBvciBvdGhlciAibm9ybWFsIiB0dW5pbmcgYmVoYXZpb3VyLgorCQkgICAgQWRkaXRpb25hbGx5LCB0aGVyZSB3aWxsIGJlIG5vIGF1dG9tYXRpYyBtb25pdG9yaW5nIG9mIHRoZQorCQkgICAgbG9jayBzdGF0dXMsIGFuZCBoZW5jZSBubyBmcm9udGVuZCBldmVudHMgd2lsbCBiZQorCQkgICAgZ2VuZXJhdGVkLiBJZiBhIGZyb250ZW5kIGRldmljZSBpcyBjbG9zZWQsIHRoaXMgZmxhZyB3aWxsCisJCSAgICBiZSBhdXRvbWF0aWNhbGx5IHR1cm5lZCBvZmYgd2hlbiB0aGUgZGV2aWNlIGlzIHJlb3BlbmVkCisJCSAgICByZWFkLXdyaXRlLjwvcGFyYT48L2xpc3RpdGVtPgorCSAgICA8L2l0ZW1pemVkbGlzdD4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5BbGxvdyBzZXR0aW5nIHR1bmVyIG1vZGUgZmxhZ3MgdG8gdGhlIGZyb250ZW5kLCBiZXR3ZWVuIDAgKG5vcm1hbCkKKwlvciBGRV9UVU5FX01PREVfT05FU0hPVCBtb2RlPC9wYXJhPgorJnJldHVybi12YWx1ZS1kdmI7Cis8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvZmUtc2V0LXRvbmUueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2Yi9mZS1zZXQtdG9uZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJkNDRlNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvZmUtc2V0LXRvbmUueG1sCkBAIC0wLDAgKzEsOTEgQEAKKzxyZWZlbnRyeSBpZD0iRkVfU0VUX1RPTkUiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBGRV9TRVRfVE9ORTwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+RkVfU0VUX1RPTkU8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+U2V0cy9yZXNldHMgdGhlIGdlbmVyYXRpb24gb2YgdGhlIGNvbnRpbnVvdXMgMjJrSHogdG9uZS48L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+ZW51bSBmZV9zZWNfdG9uZV9tb2RlICo8cGFyYW1ldGVyPnRvbmU8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKyAgICAgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmVfZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkZFX1NFVF9UT05FPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj50b25lPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPnBvaW50ZXIgdG8gJmZlLXNlYy10b25lLW1vZGU7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworPHBhcmE+VGhpcyBpb2N0bCBpcyB1c2VkIHRvIHNldCB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgY29udGludW91cyAyMmtIeiB0b25lLgorICAgIFRoaXMgY2FsbCByZXF1aXJlcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zLjwvcGFyYT4KKzxwYXJhPlVzdWFsbHksIHNhdGVsbGl0ZSBhbnRlbm5hIHN1YnN5c3RlbXMgcmVxdWlyZSB0aGF0IHRoZSBkaWdpdGFsIFRWCisgICAgZGV2aWNlIHRvIHNlbmQgYSAyMmtIeiB0b25lIGluIG9yZGVyIHRvIHNlbGVjdCBiZXR3ZWVuIGhpZ2gvbG93IGJhbmQgb24KKyAgICBzb21lIGR1YWwtYmFuZCBMTkJmLiBJdCBpcyBhbHNvIHVzZWQgdG8gc2VuZCBzaWduYWxzIHRvIERpU0VxQyBlcXVpcG1lbnQsCisgICAgYnV0IHRoaXMgaXMgZG9uZSB1c2luZyB0aGUgRGlTRXFDIGlvY3Rscy48L3BhcmE+Cis8cGFyYT5OT1RFOiBpZiBtb3JlIHRoYW4gb25lIGRldmljZSBpcyBjb25uZWN0ZWQgdG8gdGhlIHNhbWUgYW50ZW5uYSwKKyAgICBzZXR0aW5nIGEgdG9uZSBtYXkgaW50ZXJmZXJlIG9uIG90aGVyIGRldmljZXMsIGFzIHRoZXkgbWF5IGxvc2UKKyAgICB0aGUgY2FwYWJpbGl0eSBvZiBzZWxlY3RpbmcgdGhlIGJhbmQuIFNvLCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0CisgICAgYXBwbGljYXRpb25zIHdvdWxkIGNoYW5nZSB0byBTRUNfVE9ORV9PRkYgd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCB1c2VkLjwvcGFyYT4KKworJnJldHVybi12YWx1ZS1kdmI7Cis8L3JlZnNlY3QxPgorCis8cmVmc2VjdDEgaWQ9ImZlLXNlYy10b25lLW1vZGUtdCI+Cis8dGl0bGU+ZW51bSBmZV9zZWNfdG9uZV9tb2RlPC90aXRsZT4KKworPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJmZS1zZWMtdG9uZS1tb2RlIj4KKyAgICA8dGl0bGU+ZW51bSBmZV9zZWNfdG9uZV9tb2RlPC90aXRsZT4KKyAgICA8dGdyb3VwIGNvbHM9IjIiPgorCSZjcy1kZWY7CisJPHRoZWFkPgorCTxyb3c+CisJICAgIDxlbnRyeT5JRDwvZW50cnk+CisJICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+CisJPC9yb3c+CisJPC90aGVhZD4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCTxyb3c+CisJICAgIDxlbnRyeSBhbGlnbj0iY2hhciIgaWQ9IlNFQy1UT05FLU9OIj48Y29uc3RhbnQ+U0VDX1RPTkVfT048L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0iY2hhciI+U2VuZHMgYSAyMmtIeiB0b25lIGJ1cnN0IHRvIHRoZSBhbnRlbm5hPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgYWxpZ249ImNoYXIiIGlkPSJTRUMtVE9ORS1PRkYiPjxjb25zdGFudD5TRUNfVE9ORV9PRkY8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0iY2hhciI+RG9uJ3Qgc2VuZCBhIDIya0h6IHRvbmUgdG8gdGhlIGFudGVubmEKKwkJKGV4Y2VwdCBpZiB0aGUgRkVfRElTRVFDXyogaW9jdGxzIGFyZSBjYWxsZWQpPC9lbnRyeT4KKwk8L3Jvdz4KKyAgICAgICAgPC90Ym9keT4KKyAgICA8L3Rncm91cD4KKzwvdGFibGU+Cis8L3JlZnNlY3QxPgorCis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2Yi9mZS1zZXQtdm9sdGFnZS54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL2ZlLXNldC12b2x0YWdlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODlhNmY3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2Yi9mZS1zZXQtdm9sdGFnZS54bWwKQEAgLTAsMCArMSw2OSBAQAorPHJlZmVudHJ5IGlkPSJGRV9TRVRfVk9MVEFHRSI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIEZFX1NFVF9WT0xUQUdFPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5GRV9TRVRfVk9MVEFHRTwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5BbGxvdyBzZXR0aW5nIHRoZSBEQyBsZXZlbCBzZW50IHRvIHRoZSBhbnRlbm5hIHN1YnN5c3RlbS48L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+ZW51bSBmZV9zZWNfdm9sdGFnZSAqPHBhcmFtZXRlcj52b2x0YWdlPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisgICAgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZlX2ZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5GRV9TRVRfVk9MVEFHRTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+dm9sdGFnZTwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5wb2ludGVyIHRvICZmZS1zZWMtdm9sdGFnZTs8L3BhcmE+CisJICA8cGFyYT5WYWxpZCB2YWx1ZXMgYXJlIGRlc2NyaWJlZCBhdCAmZmUtc2VjLXZvbHRhZ2U7LjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKzxwYXJhPlRoaXMgaW9jdGwgYWxsb3dzIHRvIHNldCB0aGUgREMgdm9sdGFnZSBsZXZlbCBzZW50IHRocm91Z2ggdGhlIGFudGVubmEKKyAgICBjYWJsZSB0byAxM1YsIDE4ViBvciBvZmYuPC9wYXJhPgorPHBhcmE+VXN1YWxseSwgYSBzYXRlbGxpdGUgYW50ZW5uYSBzdWJzeXN0ZW1zIHJlcXVpcmUgdGhhdCB0aGUgZGlnaXRhbCBUVgorICAgIGRldmljZSB0byBzZW5kIGEgREMgdm9sdGFnZSB0byBmZWVkIHBvd2VyIHRvIHRoZSBMTkJmLiBEZXBlbmRpbmcgb24gdGhlCisgICAgTE5CZiB0eXBlLCB0aGUgcG9sYXJpemF0aW9uIG9yIHRoZSBpbnRlcm1lZGlhdGUgZnJlcXVlbmN5IChJRikgb2YgdGhlIExOQmYKKyAgICBjYW4gY29udHJvbGxlZCBieSB0aGUgdm9sdGFnZSBsZXZlbC4gT3RoZXIgZGV2aWNlcyAoZm9yIGV4YW1wbGUsIHRoZSBvbmVzCisgICAgdGhhdCBpbXBsZW1lbnQgRElTRXFDIGFuZCBtdWx0aXBvaW50IExOQmYncyBkb24ndCBuZWVkIHRvIGNvbnRyb2wgdGhlCisgICAgdm9sdGFnZSBsZXZlbCwgcHJvdmlkZWQgdGhhdCBlaXRoZXIgMTNWIG9yIDE4ViBpcyBzZW50IHRvIHBvd2VyIHVwIHRoZQorICAgIExOQmYuPC9wYXJhPgorPHBhcmE+Tk9URTogaWYgbW9yZSB0aGFuIG9uZSBkZXZpY2UgaXMgY29ubmVjdGVkIHRvIHRoZSBzYW1lIGFudGVubmEsCisgICAgc2V0dGluZyBhIHZvbHRhZ2UgbGV2ZWwgbWF5IGludGVyZmVyZSBvbiBvdGhlciBkZXZpY2VzLCBhcyB0aGV5IG1heSBsb3NlCisgICAgdGhlIGNhcGFiaWxpdHkgb2Ygc2V0dGluZyBwb2xhcml6YXRpb24gb3IgSUYuIFNvLCBvbiB0aG9zZQorICAgIGNhc2VzLCBzZXR0aW5nIHRoZSB2b2x0YWdlIHRvIFNFQ19WT0xUQUdFX09GRiB3aGlsZSB0aGUgZGV2aWNlIGlzIG5vdCBpcworICAgIHVzZWQgaXMgcmVjb21tZW5kZWQuPC9wYXJhPgorCismcmV0dXJuLXZhbHVlLWR2YjsKKzwvcmVmc2VjdDE+CisKKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL2Zyb250ZW5kLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvZnJvbnRlbmQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMjEwYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL2Zyb250ZW5kLnhtbApAQCAtMCwwICsxLDI2OSBAQAorPHRpdGxlPkRWQiBGcm9udGVuZCBBUEk8L3RpdGxlPgorCis8cGFyYT5UaGUgRFZCIGZyb250ZW5kIEFQSSB3YXMgZGVzaWduZWQgdG8gc3VwcG9ydCB0aHJlZSB0eXBlcyBvZiBkZWxpdmVyeSBzeXN0ZW1zOjwvcGFyYT4KKzxpdGVtaXplZGxpc3Q+CisgICAgPGxpc3RpdGVtPjxwYXJhPlRlcnJlc3RyaWFsIHN5c3RlbXM6IERWQi1ULCBEVkItVDIsIEFUU0MsIEFUU0MgTS9ILCBJU0RCLVQsIERWQi1ILCBEVE1CLCBDTU1CPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPjxwYXJhPkNhYmxlIHN5c3RlbXM6IERWQi1DIEFubmV4IEEvQywgQ2xlYXJRQU0gKERWQi1DIEFubmV4IEIpLCBJU0RCLUM8L3BhcmE+PC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+PHBhcmE+U2F0ZWxsaXRlIHN5c3RlbXM6IERWQi1TLCBEVkItUzIsIERWQiBUdXJibywgSVNEQi1TLCBEU1M8L3BhcmE+PC9saXN0aXRlbT4KKzwvaXRlbWl6ZWRsaXN0PgorPHBhcmE+VGhlIERWQiBmcm9udGVuZCBjb250cm9scyBzZXZlcmFsIHN1Yi1kZXZpY2VzIGluY2x1ZGluZzo8L3BhcmE+Cis8aXRlbWl6ZWRsaXN0PgorICAgIDxsaXN0aXRlbT48cGFyYT5UdW5lcjwvcGFyYT48L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT48cGFyYT5EaWdpdGFsIFRWIGRlbW9kdWxhdG9yPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPjxwYXJhPkxvdyBub2lzZSBhbXBsaWZpZXIgKExOQSk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+PHBhcmE+U2F0ZWxsaXRlIEVxdWlwbWVudCBDb250cm9sIChTRUMpIGhhcmR3YXJlIChvbmx5IGZvciBTYXRlbGxpdGUpLjwvcGFyYT48L2xpc3RpdGVtPgorPC9pdGVtaXplZGxpc3Q+Cis8cGFyYT5UaGUgZnJvbnRlbmQgY2FuIGJlIGFjY2Vzc2VkIHRocm91Z2gKKyAgICA8Y29uc3RhbnQ+L2Rldi9kdmIvYWRhcHRlcj8vZnJvbnRlbmQ/PC9jb25zdGFudD4uIERhdGEgdHlwZXMgYW5kCisgICAgaW9jdGwgZGVmaW5pdGlvbnMgY2FuIGJlIGFjY2Vzc2VkIGJ5IGluY2x1ZGluZworICAgIDxjb25zdGFudD5saW51eC9kdmIvZnJvbnRlbmQuaDwvY29uc3RhbnQ+IGluIHlvdXIgYXBwbGljYXRpb24uCis8L3BhcmE+CisKKzxwYXJhPk5PVEU6IFRyYW5zbWlzc2lvbiB2aWEgdGhlIGludGVybmV0IChEVkItSVApCisgICAgaXMgbm90IHlldCBoYW5kbGVkIGJ5IHRoaXMgQVBJIGJ1dCBhIGZ1dHVyZSBleHRlbnNpb24gaXMgcG9zc2libGUuPC9wYXJhPgorPHBhcmE+T24gU2F0ZWxsaXRlIHN5c3RlbXMsIHRoZSBBUEkgc3VwcG9ydCBmb3IgdGhlIFNhdGVsbGl0ZSBFcXVpcG1lbnQgQ29udHJvbAorICAgIChTRUMpIGFsbG93cyB0byBwb3dlciBjb250cm9sIGFuZCB0byBzZW5kL3JlY2VpdmUgc2lnbmFscyB0byBjb250cm9sIHRoZQorICAgIGFudGVubmEgc3Vic3lzdGVtLCBzZWxlY3RpbmcgdGhlIHBvbGFyaXphdGlvbiBhbmQgY2hvb3NpbmcgdGhlIEludGVybWVkaWF0ZQorICAgIEZyZXF1ZW5jeSBJRikgb2YgdGhlIExvdyBOb2lzZSBCbG9jayBDb252ZXJ0ZXIgRmVlZCBIb3JuIChMTkJmKS4gSXQKKyAgICBzdXBwb3J0cyB0aGUgRGlTRXFDIGFuZCBWLVNFQyBwcm90b2NvbHMuIFRoZSBEaVNFcUMgKGRpZ2l0YWwgU0VDKQorc3BlY2lmaWNhdGlvbiBpcyBhdmFpbGFibGUgYXQKKzx1bGluayB1cmw9Imh0dHA6Ly93d3cuZXV0ZWxzYXQuY29tL3NhdGVsbGl0ZXMvNF81XzUuaHRtbCI+RXV0ZWxzYXQ8L3VsaW5rPi48L3BhcmE+CisKKzxzZWN0aW9uIGlkPSJxdWVyeS1kdmItZnJvbnRlbmQtaW5mbyI+Cis8dGl0bGU+UXVlcnlpbmcgZnJvbnRlbmQgaW5mb3JtYXRpb248L3RpdGxlPgorCis8cGFyYT5Vc3VhbGx5LCB0aGUgZmlyc3QgdGhpbmcgdG8gZG8gd2hlbiB0aGUgZnJvbnRlbmQgaXMgb3BlbmVkIGlzIHRvCisgICAgY2hlY2sgdGhlIGZyb250ZW5kIGNhcGFiaWxpdGllcy4gVGhpcyBpcyBkb25lIHVzaW5nIDxsaW5rIGxpbmtlbmQ9IkZFX0dFVF9JTkZPIj5GRV9HRVRfSU5GTzwvbGluaz4uIFRoaXMgaW9jdGwgd2lsbCBlbnVtZXJhdGUKKyAgICB0aGUgRFZCIEFQSSB2ZXJzaW9uIGFuZCBvdGhlciBjaGFyYWN0ZXJpc3RpY3MgYWJvdXQgdGhlIGZyb250ZW5kLCBhbmQKKyAgICBjYW4gYmUgb3BlbmVkIGVpdGhlciBpbiByZWFkIG9ubHkgb3IgcmVhZC93cml0ZSBtb2RlLjwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9ImR2Yi1mZS1yZWFkLXN0YXR1cyI+Cis8dGl0bGU+UXVlcnlpbmcgZnJvbnRlbmQgc3RhdHVzIGFuZCBzdGF0aXN0aWNzPC90aXRsZT4KKworPHBhcmE+T25jZSA8bGluayBsaW5rZW5kPSJGRV9HRVRfUFJPUEVSVFkiPjxjb25zdGFudD5GRV9TRVRfUFJPUEVSVFk8L2NvbnN0YW50PjwvbGluaz4KKyAgICBpcyBjYWxsZWQsIHRoZSBmcm9udGVuZCB3aWxsIHJ1biBhIGtlcm5lbCB0aHJlYWQgdGhhdCB3aWxsIHBlcmlvZGljYWxseQorICAgIGNoZWNrIGZvciB0aGUgdHVuZXIgbG9jayBzdGF0dXMgYW5kIHByb3ZpZGUgc3RhdGlzdGljcyBhYm91dCB0aGUgcXVhbGl0eQorICAgIG9mIHRoZSBzaWduYWwuPC9wYXJhPgorPHBhcmE+VGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmcm9udGVuZCB0dW5lciBsb2NraW5nIHN0YXR1cyBjYW4gYmUgcXVlcmllZAorICAgIHVzaW5nIDxsaW5rIGxpbmtlbmQ9IkZFX1JFQURfU1RBVFVTIj5GRV9SRUFEX1NUQVRVUzwvbGluaz4uPC9wYXJhPgorPHBhcmE+U2lnbmFsIHN0YXRpc3RpY3MgYXJlIHByb3ZpZGVkIHZpYSA8bGluayBsaW5rZW5kPSJGRV9HRVRfUFJPUEVSVFkiPjxjb25zdGFudD5GRV9HRVRfUFJPUEVSVFk8L2NvbnN0YW50PjwvbGluaz4uCisgICAgUGxlYXNlIG5vdGUgdGhhdCBzZXZlcmFsIHN0YXRpc3RpY3MgcmVxdWlyZSB0aGUgZGVtb2R1bGF0b3IgdG8gYmUgZnVsbHkKKyAgICBsb2NrZWQgKGUuIGcuIHdpdGggRkVfSEFTX0xPQ0sgYml0IHNldCkuIFNlZQorICAgIDxsaW5rIGxpbmtlbmQ9ImZyb250ZW5kLXN0YXQtcHJvcGVydGllcyI+RnJvbnRlbmQgc3RhdGlzdGljcyBpbmRpY2F0b3JzPC9saW5rPgorICAgIGZvciBtb3JlIGRldGFpbHMuPC9wYXJhPgorPC9zZWN0aW9uPgorCismc3ViLWR2YnByb3BlcnR5OworCis8c2VjdGlvbiBpZD0iZnJvbnRlbmRfZmNhbGxzIj4KKzx0aXRsZT5Gcm9udGVuZCBGdW5jdGlvbiBDYWxsczwvdGl0bGU+CisKKzxyZWZlbnRyeSBpZD0iZnJvbnRlbmRfZl9vcGVuIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+RFZCIGZyb250ZW5kIG9wZW4oKTwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+ZmUtb3BlbjwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5PcGVuIGEgZnJvbnRlbmQgZGV2aWNlPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3N5bm9wc2lzaW5mbz4jaW5jbHVkZSAmbHQ7ZmNudGwuaCZndDs8L2Z1bmNzeW5vcHNpc2luZm8+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPm9wZW48L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+Y29uc3QgY2hhciAqPHBhcmFtZXRlcj5kZXZpY2VfbmFtZTwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZsYWdzPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmRldmljZV9uYW1lPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkRldmljZSB0byBiZSBvcGVuZWQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mbGFnczwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5PcGVuIGZsYWdzLiBBY2Nlc3MgY2FuIGVpdGhlciBiZQorICAgICAgICAgICAgICA8Y29uc3RhbnQ+T19SRFdSPC9jb25zdGFudD4gb3IgPGNvbnN0YW50Pk9fUkRPTkxZPC9jb25zdGFudD4uPC9wYXJhPgorICAgICAgICAgIDxwYXJhPk11bHRpcGxlIG9wZW5zIGFyZSBhbGxvd2VkIHdpdGggPGNvbnN0YW50Pk9fUkRPTkxZPC9jb25zdGFudD4uIEluIHRoaXMgbW9kZSwgb25seSBxdWVyeSBhbmQgcmVhZCBpb2N0bHMgYXJlIGFsbG93ZWQuPC9wYXJhPgorICAgICAgICAgIDxwYXJhPk9ubHkgb25lIG9wZW4gaXMgYWxsb3dlZCBpbiA8Y29uc3RhbnQ+T19SRFdSPC9jb25zdGFudD4uIEluIHRoaXMgbW9kZSwgYWxsIGlvY3RscyBhcmUgYWxsb3dlZC48L3BhcmE+CisJICA8cGFyYT5XaGVuIHRoZSA8Y29uc3RhbnQ+T19OT05CTE9DSzwvY29uc3RhbnQ+IGZsYWcgaXMgZ2l2ZW4sIHRoZSBzeXN0ZW0gY2FsbHMgbWF5IHJldHVybiAmRUFHQUlOOyB3aGVuIG5vIGRhdGEgaXMgYXZhaWxhYmxlIG9yIHdoZW4gdGhlIGRldmljZSBkcml2ZXIgaXMgdGVtcG9yYXJpbHkgYnVzeS48L3BhcmE+CisgICAgICAgICA8cGFyYT5PdGhlciBmbGFncyBoYXZlIG5vIGVmZmVjdC48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKyAgICA8cGFyYT5UaGlzIHN5c3RlbSBjYWxsIG9wZW5zIGEgbmFtZWQgZnJvbnRlbmQgZGV2aWNlICg8Y29uc3RhbnQ+L2Rldi9kdmIvYWRhcHRlcj8vZnJvbnRlbmQ/PC9jb25zdGFudD4pCisgZm9yIHN1YnNlcXVlbnQgdXNlLiBVc3VhbGx5IHRoZSBmaXJzdCB0aGluZyB0byBkbyBhZnRlciBhIHN1Y2Nlc3NmdWwgb3BlbiBpcyB0bworIGZpbmQgb3V0IHRoZSBmcm9udGVuZCB0eXBlIHdpdGggPGxpbmsgbGlua2VuZD0iRkVfR0VUX0lORk8iPkZFX0dFVF9JTkZPPC9saW5rPi48L3BhcmE+Cis8cGFyYT5UaGUgZGV2aWNlIGNhbiBiZSBvcGVuZWQgaW4gcmVhZC1vbmx5IG1vZGUsIHdoaWNoIG9ubHkgYWxsb3dzIG1vbml0b3Jpbmcgb2YKKyBkZXZpY2Ugc3RhdHVzIGFuZCBzdGF0aXN0aWNzLCBvciByZWFkL3dyaXRlIG1vZGUsIHdoaWNoIGFsbG93cyBhbnkga2luZCBvZiB1c2UKKyAoZS5nLiBwZXJmb3JtaW5nIHR1bmluZyBvcGVyYXRpb25zLikKKzwvcGFyYT4KKzxwYXJhPkluIGEgc3lzdGVtIHdpdGggbXVsdGlwbGUgZnJvbnQtZW5kcywgaXQgaXMgdXN1YWxseSB0aGUgY2FzZSB0aGF0IG11bHRpcGxlIGRldmljZXMKKyBjYW5ub3QgYmUgb3BlbiBpbiByZWFkL3dyaXRlIG1vZGUgc2ltdWx0YW5lb3VzbHkuIEFzIGxvbmcgYXMgYSBmcm9udC1lbmQKKyBkZXZpY2UgaXMgb3BlbmVkIGluIHJlYWQvd3JpdGUgbW9kZSwgb3RoZXIgb3BlbigpIGNhbGxzIGluIHJlYWQvd3JpdGUgbW9kZSB3aWxsCisgZWl0aGVyIGZhaWwgb3IgYmxvY2ssIGRlcGVuZGluZyBvbiB3aGV0aGVyIG5vbi1ibG9ja2luZyBvciBibG9ja2luZyBtb2RlIHdhcworIHNwZWNpZmllZC4gQSBmcm9udC1lbmQgZGV2aWNlIG9wZW5lZCBpbiBibG9ja2luZyBtb2RlIGNhbiBsYXRlciBiZSBwdXQgaW50bworIG5vbi1ibG9ja2luZyBtb2RlIChhbmQgdmljZSB2ZXJzYSkgdXNpbmcgdGhlIEZfU0VURkwgY29tbWFuZCBvZiB0aGUgZmNudGwKKyBzeXN0ZW0gY2FsbC4gVGhpcyBpcyBhIHN0YW5kYXJkIHN5c3RlbSBjYWxsLCBkb2N1bWVudGVkIGluIHRoZSBMaW51eCBtYW51YWwKKyBwYWdlIGZvciBmY250bC4gV2hlbiBhbiBvcGVuKCkgY2FsbCBoYXMgc3VjY2VlZGVkLCB0aGUgZGV2aWNlIHdpbGwgYmUgcmVhZHkKKyBmb3IgdXNlIGluIHRoZSBzcGVjaWZpZWQgbW9kZS4gVGhpcyBpbXBsaWVzIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgaGFyZHdhcmUgaXMKKyBwb3dlcmVkIHVwLCBhbmQgdGhhdCBvdGhlciBmcm9udC1lbmRzIG1heSBoYXZlIGJlZW4gcG93ZXJlZCBkb3duIHRvIG1ha2UKKyB0aGF0IHBvc3NpYmxlLjwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPlJldHVybiBWYWx1ZTwvdGl0bGU+CisKKyAgICA8cGFyYT5PbiBzdWNjZXNzIDxmdW5jdGlvbj5vcGVuPC9mdW5jdGlvbj4gcmV0dXJucyB0aGUgbmV3IGZpbGUKK2Rlc2NyaXB0b3IuIE9uIGVycm9yIC0xIGlzIHJldHVybmVkLCBhbmQgdGhlIDx2YXJuYW1lPmVycm5vPC92YXJuYW1lPgordmFyaWFibGUgaXMgc2V0IGFwcHJvcHJpYXRlbHkuIFBvc3NpYmxlIGVycm9yIGNvZGVzIGFyZTo8L3BhcmE+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVBQ0NFUzwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgY2FsbGVyIGhhcyBubyBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGUKK2RldmljZS48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVCVVNZPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSB0aGUgZGV2aWNlIGRyaXZlciBpcyBhbHJlYWR5IGluIHVzZS48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVOWElPPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPk5vIGRldmljZSBjb3JyZXNwb25kaW5nIHRvIHRoaXMgZGV2aWNlIHNwZWNpYWwgZmlsZQorZXhpc3RzLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RU5PTUVNPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPk5vdCBlbm91Z2gga2VybmVsIG1lbW9yeSB3YXMgYXZhaWxhYmxlIHRvIGNvbXBsZXRlIHRoZQorcmVxdWVzdC48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVNRklMRTwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgIHByb2Nlc3MgIGFscmVhZHkgIGhhcyAgdGhlICBtYXhpbXVtIG51bWJlciBvZgorZmlsZXMgb3Blbi48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVORklMRTwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgbGltaXQgb24gdGhlIHRvdGFsIG51bWJlciBvZiBmaWxlcyBvcGVuIG9uIHRoZQorc3lzdGVtIGhhcyBiZWVuIHJlYWNoZWQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FTk9ERVY8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIGRldmljZSBnb3QgcmVtb3ZlZC48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KKworPHJlZmVudHJ5IGlkPSJmcm9udGVuZF9mX2Nsb3NlIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+RFZCIGZyb250ZW5kIGNsb3NlKCk8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPmZlLWNsb3NlPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPkNsb3NlIGEgZnJvbnRlbmQgZGV2aWNlPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3N5bm9wc2lzaW5mbz4jaW5jbHVkZSAmbHQ7dW5pc3RkLmgmZ3Q7PC9mdW5jc3lub3BzaXNpbmZvPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5jbG9zZTwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKzxwYXJhPlRoaXMgc3lzdGVtIGNhbGwgY2xvc2VzIGEgcHJldmlvdXNseSBvcGVuZWQgZnJvbnQtZW5kIGRldmljZS4gQWZ0ZXIgY2xvc2luZworIGEgZnJvbnQtZW5kIGRldmljZSwgaXRzIGNvcnJlc3BvbmRpbmcgaGFyZHdhcmUgbWlnaHQgYmUgcG93ZXJlZCBkb3duCisgYXV0b21hdGljYWxseS48L3BhcmE+Cis8L3JlZnNlY3QxPgorICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPlJldHVybiBWYWx1ZTwvdGl0bGU+CisKKyAgICA8cGFyYT5UaGUgZnVuY3Rpb24gcmV0dXJucyA8cmV0dXJudmFsdWU+MDwvcmV0dXJudmFsdWU+IG9uCitzdWNjZXNzLCA8cmV0dXJudmFsdWU+LTE8L3JldHVybnZhbHVlPiBvbiBmYWlsdXJlIGFuZCB0aGUKKzx2YXJuYW1lPmVycm5vPC92YXJuYW1lPiBpcyBzZXQgYXBwcm9wcmlhdGVseS4gUG9zc2libGUgZXJyb3IKK2NvZGVzOjwvcGFyYT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUJBREY8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPiBpcyBub3QgYSB2YWxpZCBvcGVuIGZpbGUKK2Rlc2NyaXB0b3IuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CisKKyZzdWItZmUtZ2V0LWluZm87Cismc3ViLWZlLXJlYWQtc3RhdHVzOworJnN1Yi1mZS1nZXQtcHJvcGVydHk7Cismc3ViLWZlLWRpc2VxYy1yZXNldC1vdmVybG9hZDsKKyZzdWItZmUtZGlzZXFjLXNlbmQtbWFzdGVyLWNtZDsKKyZzdWItZmUtZGlzZXFjLXJlY3Ytc2xhdmUtcmVwbHk7Cismc3ViLWZlLWRpc2VxYy1zZW5kLWJ1cnN0OworJnN1Yi1mZS1zZXQtdG9uZTsKKyZzdWItZmUtc2V0LXZvbHRhZ2U7Cismc3ViLWZlLWVuYWJsZS1oaWdoLWxuYi12b2x0YWdlOworJnN1Yi1mZS1zZXQtZnJvbnRlbmQtdHVuZS1tb2RlOworCis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJmcm9udGVuZF9sZWdhY3lfZHZidjNfYXBpIj4KKzx0aXRsZT5EVkIgRnJvbnRlbmQgbGVnYWN5IEFQSSAoYS4gay4gYS4gRFZCdjMpPC90aXRsZT4KKzxwYXJhPlRoZSB1c2FnZSBvZiB0aGlzIEFQSSBpcyBkZXByZWNhdGVkLCBhcyBpdCBkb2Vzbid0IHN1cHBvcnQgYWxsIGRpZ2l0YWwKKyAgICBUViBzdGFuZGFyZHMsIGRvZXNuJ3QgcHJvdmlkZSBnb29kIHN0YXRpc3RpY3MgbWVhc3VyZW1lbnRzIGFuZCBwcm92aWRlcworICAgIGluY29tcGxldGUgaW5mb3JtYXRpb24uIFRoaXMgaXMga2VwdCBvbmx5IHRvIHN1cHBvcnQgbGVnYWN5IGFwcGxpY2F0aW9ucy48L3BhcmE+CisKKyZzdWItZnJvbnRlbmRfbGVnYWN5X2FwaTsKKzwvc2VjdGlvbj4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvZnJvbnRlbmRfbGVnYWN5X2FwaS54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL2Zyb250ZW5kX2xlZ2FjeV9hcGkueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmYWRmM2EKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL2Zyb250ZW5kX2xlZ2FjeV9hcGkueG1sCkBAIC0wLDAgKzEsNjU0IEBACis8c2VjdGlvbiBpZD0iZnJvbnRlbmRfbGVnYWN5X3R5cGVzIj4KKzx0aXRsZT5Gcm9udGVuZCBMZWdhY3kgRGF0YSBUeXBlczwvdGl0bGU+CisKKzxzZWN0aW9uIGlkPSJmZS10eXBlLXQiPgorPHRpdGxlPkZyb250ZW5kIHR5cGU8L3RpdGxlPgorCis8cGFyYT5Gb3IgaGlzdG9yaWNhbCByZWFzb25zLCBmcm9udGVuZCB0eXBlcyBhcmUgbmFtZWQgYnkgdGhlIHR5cGUgb2YgbW9kdWxhdGlvbgorICAgIHVzZWQgaW4gdHJhbnNtaXNzaW9uLiBUaGUgZm9udGVuZCB0eXBlcyBhcmUgZ2l2ZW4gYnkgZmVfdHlwZV90IHR5cGUsIGRlZmluZWQgYXM6PC9wYXJhPgorCis8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9ImZlLXR5cGUiPgorPHRpdGxlPkZyb250ZW5kIHR5cGVzPC90aXRsZT4KKzx0Z3JvdXAgY29scz0iMyI+CisgICAmY3MtZGVmOworICAgPHRoZWFkPgorICAgICA8cm93PgorICAgICAgIDxlbnRyeT5mZV90eXBlPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorICAgICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJEVFYtREVMSVZFUlktU1lTVEVNIj5EVFZfREVMSVZFUllfU1lTVEVNPC9saW5rPiBlcXVpdmFsZW50IHR5cGU8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgPC90aGVhZD4KKyAgPHRib2R5IHZhbGlnbj0idG9wIj4KKyAgPHJvdz4KKyAgICAgPGVudHJ5IGlkPSJGRS1RUFNLIj48Y29uc3RhbnQ+RkVfUVBTSzwvY29uc3RhbnQ+PC9lbnRyeT4KKyAgICAgPGVudHJ5PkZvciBEVkItUyBzdGFuZGFyZDwvZW50cnk+CisgICAgIDxlbnRyeT48Y29uc3RhbnQ+U1lTX0RWQlM8L2NvbnN0YW50PjwvZW50cnk+CisgIDwvcm93PgorICA8cm93PgorICAgICA8ZW50cnkgaWQ9IkZFLVFBTSI+PGNvbnN0YW50PkZFX1FBTTwvY29uc3RhbnQ+PC9lbnRyeT4KKyAgICAgPGVudHJ5PkZvciBEVkItQyBhbm5leCBBIHN0YW5kYXJkPC9lbnRyeT4KKyAgICAgPGVudHJ5Pjxjb25zdGFudD5TWVNfRFZCQ19BTk5FWF9BPC9jb25zdGFudD48L2VudHJ5PgorICA8L3Jvdz4KKyAgPHJvdz4KKyAgICAgPGVudHJ5IGlkPSJGRS1PRkRNIj48Y29uc3RhbnQ+RkVfT0ZETTwvY29uc3RhbnQ+PC9lbnRyeT4KKyAgICAgPGVudHJ5PkZvciBEVkItVCBzdGFuZGFyZDwvZW50cnk+CisgICAgIDxlbnRyeT48Y29uc3RhbnQ+U1lTX0RWQlQ8L2NvbnN0YW50PjwvZW50cnk+CisgIDwvcm93PgorICA8cm93PgorICAgICA8ZW50cnkgaWQ9IkZFLUFUU0MiPjxjb25zdGFudD5GRV9BVFNDPC9jb25zdGFudD48L2VudHJ5PgorICAgICA8ZW50cnk+Rm9yIEFUU0Mgc3RhbmRhcmQgKHRlcnJlc3RyaWFsKSBvciBmb3IgRFZCLUMgQW5uZXggQiAoY2FibGUpIHVzZWQgaW4gVVMuPC9lbnRyeT4KKyAgICAgPGVudHJ5Pjxjb25zdGFudD5TWVNfQVRTQzwvY29uc3RhbnQ+ICh0ZXJyZXN0cmlhbCkgb3IgPGNvbnN0YW50PlNZU19EVkJDX0FOTkVYX0I8L2NvbnN0YW50PiAoY2FibGUpPC9lbnRyeT4KKyAgPC9yb3c+Cis8L3Rib2R5PjwvdGdyb3VwPjwvdGFibGU+CisKKzxwYXJhPk5ld2VyIGZvcm1hdHMgbGlrZSBEVkItUzIsIElTREItVCwgSVNEQi1TIGFuZCBEVkItVDIgYXJlIG5vdCBkZXNjcmliZWQgYXQgdGhlIGFib3ZlLCBhcyB0aGV5J3JlCitzdXBwb3J0ZWQgdmlhIHRoZSBuZXcgPGxpbmsgbGlua2VuZD0iRkVfR0VUX1BST1BFUlRZIj5GRV9HRVRfUFJPUEVSVFkvRkVfR0VUX1NFVF9QUk9QRVJUWTwvbGluaz4gaW9jdGwncywgdXNpbmcgdGhlIDxsaW5rIGxpbmtlbmQ9IkRUVi1ERUxJVkVSWS1TWVNURU0iPkRUVl9ERUxJVkVSWV9TWVNURU08L2xpbms+IHBhcmFtZXRlci4KKzwvcGFyYT4KKworPHBhcmE+SW4gdGhlIG9sZCBkYXlzLCAmZHZiLWZyb250ZW5kLWluZm87IHVzZWQgdG8gY29udGFpbgorICAgIDxjb25zdGFudD5mZV90eXBlX3Q8L2NvbnN0YW50PiBmaWVsZCB0byBpbmRpY2F0ZSB0aGUgZGVsaXZlcnkgc3lzdGVtcywKKyAgICBmaWxsZWQgd2l0aCBlaXRoZXIgRkVfUVBTSywgRkVfUUFNLCBGRV9PRkRNIG9yIEZFX0FUU0MuIFdoaWxlIHRoaXMgaXMKKyAgICBzdGlsbCBmaWxsZWQgdG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNhZ2Ugb2YgdGhpcworICAgIGZpZWxkIGlzIGRlcHJlY2F0ZWQsIGFzIGl0IGNhbiByZXBvcnQganVzdCBvbmUgZGVsaXZlcnkgc3lzdGVtLCBidXQgc29tZQorICAgIGRldmljZXMgc3VwcG9ydCBtdWx0aXBsZSBkZWxpdmVyeSBzeXN0ZW1zLiBQbGVhc2UgdXNlCisgICAgPGxpbmsgbGlua2VuZD0iRFRWLUVOVU0tREVMU1lTIj5EVFZfRU5VTV9ERUxTWVM8L2xpbms+IGluc3RlYWQuCis8L3BhcmE+Cis8cGFyYT5PbiBkZXZpY2VzIHRoYXQgc3VwcG9ydCBtdWx0aXBsZSBkZWxpdmVyeSBzeXN0ZW1zLAorICAgICZkdmItZnJvbnRlbmQtaW5mbzs6Ojxjb25zdGFudD5mZV90eXBlX3Q8L2NvbnN0YW50PiBpcyBmaWxsZWQgd2l0aCB0aGUKKyAgICBjdXJyZW50bHkgc3RhbmRhcmQsIGFzIHNlbGVjdGVkIGJ5IHRoZSBsYXN0IGNhbGwgdG8KKyAgICA8bGluayBsaW5rZW5kPSJGRV9HRVRfUFJPUEVSVFkiPkZFX1NFVF9QUk9QRVJUWTwvbGluaz4KKyAgICB1c2luZyB0aGUgJkRUVi1ERUxJVkVSWS1TWVNURU07IHByb3BlcnR5LjwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9ImZlLWJhbmR3aWR0aC10Ij4KKzx0aXRsZT5Gcm9udGVuZCBiYW5kd2lkdGg8L3RpdGxlPgorCis8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9ImZlLWJhbmR3aWR0aCI+CisgICAgPHRpdGxlPmVudW0gZmVfYmFuZHdpZHRoPC90aXRsZT4KKyAgICA8dGdyb3VwIGNvbHM9IjIiPgorCSZjcy1kZWY7CisJPHRoZWFkPgorCTxyb3c+CisJICAgIDxlbnRyeT5JRDwvZW50cnk+CisJICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+CisJPC9yb3c+CisJPC90aGVhZD4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCTxyb3c+CisJICAgIDxlbnRyeSBpZD0iQkFORFdJRFRILUFVVE8iPjxjb25zdGFudD5CQU5EV0lEVEhfQVVUTzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkF1dG9kZXRlY3QgYmFuZHdpZHRoIChpZiBzdXBwb3J0ZWQpPC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkJBTkRXSURUSC0xLTcxMi1NSFoiPjxjb25zdGFudD5CQU5EV0lEVEhfMV83MTJfTUhaPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MS43MTIgTUh6PC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkJBTkRXSURUSC01LU1IWiI+PGNvbnN0YW50PkJBTkRXSURUSF81X01IWjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjUgTUh6PC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkJBTkRXSURUSC02LU1IWiI+PGNvbnN0YW50PkJBTkRXSURUSF82X01IWjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjYgTUh6PC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkJBTkRXSURUSC03LU1IWiI+PGNvbnN0YW50PkJBTkRXSURUSF83X01IWjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjcgTUh6PC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkJBTkRXSURUSC04LU1IWiI+PGNvbnN0YW50PkJBTkRXSURUSF84X01IWjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjggTUh6PC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCSAgICA8ZW50cnkgaWQ9IkJBTkRXSURUSC0xMC1NSFoiPjxjb25zdGFudD5CQU5EV0lEVEhfMTBfTUhaPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MTAgTUh6PC9lbnRyeT4KKwk8L3Jvdz4KKyAgICAgICAgPC90Ym9keT4KKyAgICA8L3Rncm91cD4KKzwvdGFibGU+CisKKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9ImR2Yi1mcm9udGVuZC1wYXJhbWV0ZXJzIj4KKzx0aXRsZT5mcm9udGVuZCBwYXJhbWV0ZXJzPC90aXRsZT4KKzxwYXJhPlRoZSBraW5kIG9mIHBhcmFtZXRlcnMgcGFzc2VkIHRvIHRoZSBmcm9udGVuZCBkZXZpY2UgZm9yIHR1bmluZyBkZXBlbmQgb24KK3RoZSBraW5kIG9mIGhhcmR3YXJlIHlvdSBhcmUgdXNpbmcuPC9wYXJhPgorPHBhcmE+VGhlIHN0cnVjdCA8Y29uc3RhbnQ+ZHZiX2Zyb250ZW5kX3BhcmFtZXRlcnM8L2NvbnN0YW50PiB1c2VzIGFuCit1bmlvbiB3aXRoIHNwZWNpZmljIHBlci1zeXN0ZW0gcGFyYW1ldGVycy4gSG93ZXZlciwgYXMgbmV3ZXIgZGVsaXZlcnkgc3lzdGVtcworcmVxdWlyZWQgbW9yZSBkYXRhLCB0aGUgc3RydWN0dXJlIHNpemUgd2VyZW4ndCBlbm91Z2ggdG8gZml0LCBhbmQganVzdAorZXh0ZW5kaW5nIGl0cyBzaXplIHdvdWxkIGJyZWFrIHRoZSBleGlzdGluZyBhcHBsaWNhdGlvbnMuIFNvLCB0aG9zZSBwYXJhbWV0ZXJzCit3ZXJlIHJlcGxhY2VkIGJ5IHRoZSB1c2FnZSBvZiA8bGluayBsaW5rZW5kPSJGRV9HRVRfUFJPUEVSVFkiPgorPGNvbnN0YW50PkZFX0dFVF9QUk9QRVJUWS9GRV9TRVRfUFJPUEVSVFk8L2NvbnN0YW50PjwvbGluaz4gaW9jdGwncy4gVGhlCituZXcgQVBJIGlzIGZsZXhpYmxlIGVub3VnaCB0byBhZGQgbmV3IHBhcmFtZXRlcnMgdG8gZXhpc3RpbmcgZGVsaXZlcnkgc3lzdGVtcywKK2FuZCB0byBhZGQgbmV3ZXIgZGVsaXZlcnkgc3lzdGVtcy48L3BhcmE+Cis8cGFyYT5TbywgbmV3ZXIgYXBwbGljYXRpb25zIHNob3VsZCB1c2UgPGxpbmsgbGlua2VuZD0iRkVfR0VUX1BST1BFUlRZIj4KKzxjb25zdGFudD5GRV9HRVRfUFJPUEVSVFkvRkVfU0VUX1BST1BFUlRZPC9jb25zdGFudD48L2xpbms+IGluc3RlYWQsIGluCitvcmRlciB0byBiZSBhYmxlIHRvIHN1cHBvcnQgdGhlIG5ld2VyIFN5c3RlbSBEZWxpdmVyeSBsaWtlICBEVkItUzIsIERWQi1UMiwKK0RWQi1DMiwgSVNEQiwgZXRjLjwvcGFyYT4KKzxwYXJhPkFsbCBraW5kcyBvZiBwYXJhbWV0ZXJzIGFyZSBjb21iaW5lZCBhcyBhbiB1bmlvbiBpbiB0aGUgRnJvbnRlbmRQYXJhbWV0ZXJzIHN0cnVjdHVyZToKKzxwcm9ncmFtbGlzdGluZz4KK3N0cnVjdCBkdmJfZnJvbnRlbmRfcGFyYW1ldGVycyB7CisJdWludDMyX3QgZnJlcXVlbmN5OyAgICAgLyYjeDIyQzY7IChhYnNvbHV0ZSkgZnJlcXVlbmN5IGluIEh6IGZvciBRQU0vT0ZETSAmI3gyMkM2Oy8KKwkJCQkvJiN4MjJDNjsgaW50ZXJtZWRpYXRlIGZyZXF1ZW5jeSBpbiBrSHogZm9yIFFQU0sgJiN4MjJDNjsvCisJJmZlLXNwZWN0cmFsLWludmVyc2lvbi10OyBpbnZlcnNpb247CisJdW5pb24geworCQlzdHJ1Y3QgZHZiX3Fwc2tfcGFyYW1ldGVycyBxcHNrOworCQlzdHJ1Y3QgZHZiX3FhbV9wYXJhbWV0ZXJzICBxYW07CisJCXN0cnVjdCBkdmJfb2ZkbV9wYXJhbWV0ZXJzIG9mZG07CisJCXN0cnVjdCBkdmJfdnNiX3BhcmFtZXRlcnMgIHZzYjsKKwl9IHU7Cit9OworPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+Cis8cGFyYT5JbiB0aGUgY2FzZSBvZiBRUFNLIGZyb250ZW5kcyB0aGUgPGNvbnN0YW50PmZyZXF1ZW5jeTwvY29uc3RhbnQ+IGZpZWxkIHNwZWNpZmllcyB0aGUgaW50ZXJtZWRpYXRlCitmcmVxdWVuY3ksIGkuZS4gdGhlIG9mZnNldCB3aGljaCBpcyBlZmZlY3RpdmVseSBhZGRlZCB0byB0aGUgbG9jYWwgb3NjaWxsYXRvciBmcmVxdWVuY3kgKExPRikgb2YKK3RoZSBMTkIuIFRoZSBpbnRlcm1lZGlhdGUgZnJlcXVlbmN5IGhhcyB0byBiZSBzcGVjaWZpZWQgaW4gdW5pdHMgb2Yga0h6LiBGb3IgUUFNIGFuZAorT0ZETSBmcm9udGVuZHMgdGhlIDxjb25zdGFudD5mcmVxdWVuY3k8L2NvbnN0YW50PiBzcGVjaWZpZXMgdGhlIGFic29sdXRlIGZyZXF1ZW5jeSBhbmQgaXMgZ2l2ZW4gaW4gSHouCis8L3BhcmE+CisKKzxzZWN0aW9uIGlkPSJkdmItcXBzay1wYXJhbWV0ZXJzIj4KKzx0aXRsZT5RUFNLIHBhcmFtZXRlcnM8L3RpdGxlPgorPHBhcmE+Rm9yIHNhdGVsbGl0ZSBRUFNLIGZyb250ZW5kcyB5b3UgaGF2ZSB0byB1c2UgdGhlIDxjb25zdGFudD5kdmJfcXBza19wYXJhbWV0ZXJzPC9jb25zdGFudD4gc3RydWN0dXJlOjwvcGFyYT4KKzxwcm9ncmFtbGlzdGluZz4KKyBzdHJ1Y3QgZHZiX3Fwc2tfcGFyYW1ldGVycyB7CisJIHVpbnQzMl90ICAgICAgICBzeW1ib2xfcmF0ZTsgIC8mI3gyMkM2OyBzeW1ib2wgcmF0ZSBpbiBTeW1ib2xzIHBlciBzZWNvbmQgJiN4MjJDNjsvCisJICZmZS1jb2RlLXJhdGUtdDsgIGZlY19pbm5lcjsgICAgLyYjeDIyQzY7IGZvcndhcmQgZXJyb3IgY29ycmVjdGlvbiAoc2VlIGFib3ZlKSAmI3gyMkM2Oy8KKyB9OworPC9wcm9ncmFtbGlzdGluZz4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9ImR2Yi1xYW0tcGFyYW1ldGVycyI+Cis8dGl0bGU+UUFNIHBhcmFtZXRlcnM8L3RpdGxlPgorPHBhcmE+Zm9yIGNhYmxlIFFBTSBmcm9udGVuZCB5b3UgdXNlIHRoZSA8Y29uc3RhbnQ+ZHZiX3FhbV9wYXJhbWV0ZXJzPC9jb25zdGFudD4gc3RydWN0dXJlOjwvcGFyYT4KKzxwcm9ncmFtbGlzdGluZz4KKyBzdHJ1Y3QgZHZiX3FhbV9wYXJhbWV0ZXJzIHsKKwkgdWludDMyX3QgICAgICAgICBzeW1ib2xfcmF0ZTsgLyYjeDIyQzY7IHN5bWJvbCByYXRlIGluIFN5bWJvbHMgcGVyIHNlY29uZCAmI3gyMkM2Oy8KKwkgJmZlLWNvZGUtcmF0ZS10OyAgIGZlY19pbm5lcjsgICAvJiN4MjJDNjsgZm9yd2FyZCBlcnJvciBjb3JyZWN0aW9uIChzZWUgYWJvdmUpICYjeDIyQzY7LworCSAmZmUtbW9kdWxhdGlvbi10OyAgbW9kdWxhdGlvbjsgIC8mI3gyMkM2OyBtb2R1bGF0aW9uIHR5cGUgKHNlZSBhYm92ZSkgJiN4MjJDNjsvCisgfTsKKzwvcHJvZ3JhbWxpc3Rpbmc+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJkdmItdnNiLXBhcmFtZXRlcnMiPgorPHRpdGxlPlZTQiBwYXJhbWV0ZXJzPC90aXRsZT4KKzxwYXJhPkFUU0MgZnJvbnRlbmRzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIDxjb25zdGFudD5kdmJfdnNiX3BhcmFtZXRlcnM8L2NvbnN0YW50PiBzdHJ1Y3R1cmU6PC9wYXJhPgorPHByb2dyYW1saXN0aW5nPgorc3RydWN0IGR2Yl92c2JfcGFyYW1ldGVycyB7CisJJmZlLW1vZHVsYXRpb24tdDsgbW9kdWxhdGlvbjsJLyYjeDIyQzY7IG1vZHVsYXRpb24gdHlwZSAoc2VlIGFib3ZlKSAmI3gyMkM2Oy8KK307Cis8L3Byb2dyYW1saXN0aW5nPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iZHZiLW9mZG0tcGFyYW1ldGVycyI+Cis8dGl0bGU+T0ZETSBwYXJhbWV0ZXJzPC90aXRsZT4KKzxwYXJhPkRWQi1UIGZyb250ZW5kcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSA8Y29uc3RhbnQ+ZHZiX29mZG1fcGFyYW1ldGVyczwvY29uc3RhbnQ+IHN0cnVjdHVyZTo8L3BhcmE+Cis8cHJvZ3JhbWxpc3Rpbmc+Cisgc3RydWN0IGR2Yl9vZmRtX3BhcmFtZXRlcnMgeworCSAmZmUtYmFuZHdpZHRoLXQ7ICAgICAgYmFuZHdpZHRoOworCSAmZmUtY29kZS1yYXRlLXQ7ICAgICAgY29kZV9yYXRlX0hQOyAgLyYjeDIyQzY7IGhpZ2ggcHJpb3JpdHkgc3RyZWFtIGNvZGUgcmF0ZSAmI3gyMkM2Oy8KKwkgJmZlLWNvZGUtcmF0ZS10OyAgICAgIGNvZGVfcmF0ZV9MUDsgIC8mI3gyMkM2OyBsb3cgcHJpb3JpdHkgc3RyZWFtIGNvZGUgcmF0ZSAmI3gyMkM2Oy8KKwkgJmZlLW1vZHVsYXRpb24tdDsgICAgIGNvbnN0ZWxsYXRpb247IC8mI3gyMkM2OyBtb2R1bGF0aW9uIHR5cGUgKHNlZSBhYm92ZSkgJiN4MjJDNjsvCisJICZmZS10cmFuc21pdC1tb2RlLXQ7ICB0cmFuc21pc3Npb25fbW9kZTsKKwkgJmZlLWd1YXJkLWludGVydmFsLXQ7IGd1YXJkX2ludGVydmFsOworCSAmZmUtaGllcmFyY2h5LXQ7ICAgICAgaGllcmFyY2h5X2luZm9ybWF0aW9uOworIH07Cis8L3Byb2dyYW1saXN0aW5nPgorPC9zZWN0aW9uPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iZHZiLWZyb250ZW5kLWV2ZW50Ij4KKzx0aXRsZT5mcm9udGVuZCBldmVudHM8L3RpdGxlPgorIDxwcm9ncmFtbGlzdGluZz4KKyBzdHJ1Y3QgZHZiX2Zyb250ZW5kX2V2ZW50IHsKKwkgZmVfc3RhdHVzX3Qgc3RhdHVzOworCSBzdHJ1Y3QgZHZiX2Zyb250ZW5kX3BhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyB9OworPC9wcm9ncmFtbGlzdGluZz4KKyA8L3NlY3Rpb24+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJmcm9udGVuZF9sZWdhY3lfZmNhbGxzIj4KKzx0aXRsZT5Gcm9udGVuZCBMZWdhY3kgRnVuY3Rpb24gQ2FsbHM8L3RpdGxlPgorCis8cGFyYT5UaG9zZSBmdW5jdGlvbnMgYXJlIGRlZmluZWQgYXQgRFZCIHZlcnNpb24gMy4gVGhlIHN1cHBvcnQgaXMga2VwdCBpbgorICAgIHRoZSBrZXJuZWwgZHVlIHRvIGNvbXBhdGliaWxpdHkgaXNzdWVzIG9ubHkuIFRoZWlyIHVzYWdlIGlzIHN0cm9uZ2x5CisgICAgbm90IHJlY29tbWVuZGVkPC9wYXJhPgorCis8c2VjdGlvbiBpZD0iRkVfUkVBRF9CRVIiPgorPHRpdGxlPkZFX1JFQURfQkVSPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgY2FsbCByZXR1cm5zIHRoZSBiaXQgZXJyb3IgcmF0ZSBmb3IgdGhlIHNpZ25hbCBjdXJyZW50bHkKKyByZWNlaXZlZC9kZW1vZHVsYXRlZCBieSB0aGUgZnJvbnQtZW5kLiBGb3IgdGhpcyBjb21tYW5kLCByZWFkLW9ubHkgYWNjZXNzIHRvCisgdGhlIGRldmljZSBpcyBzdWZmaWNpZW50LjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoaW50IGZkLCBpbnQgcmVxdWVzdCA9IDxsaW5rIGxpbmtlbmQ9IkZFX1JFQURfQkVSIj5GRV9SRUFEX0JFUjwvbGluaz4sCisgdWludDMyX3QgJiN4MjJDNjtiZXIpOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgPGxpbmsgbGlua2VuZD0iRkVfUkVBRF9CRVIiPkZFX1JFQURfQkVSPC9saW5rPiBmb3IgdGhpcyBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT51aW50MzJfdCAqYmVyPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGUgYml0IGVycm9yIHJhdGUgaXMgc3RvcmVkIGludG8gKmJlci48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorCismcmV0dXJuLXZhbHVlLWR2YjsKKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9IkZFX1JFQURfU05SIj4KKzx0aXRsZT5GRV9SRUFEX1NOUjwvdGl0bGU+CisKKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgY2FsbCByZXR1cm5zIHRoZSBzaWduYWwtdG8tbm9pc2UgcmF0aW8gZm9yIHRoZSBzaWduYWwgY3VycmVudGx5IHJlY2VpdmVkCisgYnkgdGhlIGZyb250LWVuZC4gRm9yIHRoaXMgY29tbWFuZCwgcmVhZC1vbmx5IGFjY2VzcyB0byB0aGUgZGV2aWNlIGlzIHN1ZmZpY2llbnQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bChpbnQgZmQsIGludCByZXF1ZXN0ID0gPGxpbmsgbGlua2VuZD0iRkVfUkVBRF9TTlIiPkZFX1JFQURfU05SPC9saW5rPiwgdWludDE2X3QKKyAmI3gyMkM2O3Nucik7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyA8bGluayBsaW5rZW5kPSJGRV9SRUFEX1NOUiI+RkVfUkVBRF9TTlI8L2xpbms+IGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPnVpbnQxNl90ICpzbnI8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoZSBzaWduYWwtdG8tbm9pc2UgcmF0aW8gaXMgc3RvcmVkIGludG8gKnNuci48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorCismcmV0dXJuLXZhbHVlLWR2YjsKKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9IkZFX1JFQURfU0lHTkFMX1NUUkVOR1RIIj4KKzx0aXRsZT5GRV9SRUFEX1NJR05BTF9TVFJFTkdUSDwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIGNhbGwgcmV0dXJucyB0aGUgc2lnbmFsIHN0cmVuZ3RoIHZhbHVlIGZvciB0aGUgc2lnbmFsIGN1cnJlbnRseSByZWNlaXZlZAorIGJ5IHRoZSBmcm9udC1lbmQuIEZvciB0aGlzIGNvbW1hbmQsIHJlYWQtb25seSBhY2Nlc3MgdG8gdGhlIGRldmljZSBpcyBzdWZmaWNpZW50LjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoIGludCBmZCwgaW50IHJlcXVlc3QgPQorIDxsaW5rIGxpbmtlbmQ9IkZFX1JFQURfU0lHTkFMX1NUUkVOR1RIIj5GRV9SRUFEX1NJR05BTF9TVFJFTkdUSDwvbGluaz4sIHVpbnQxNl90ICYjeDIyQzY7c3RyZW5ndGgpOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CisKKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyA8bGluayBsaW5rZW5kPSJGRV9SRUFEX1NJR05BTF9TVFJFTkdUSCI+RkVfUkVBRF9TSUdOQUxfU1RSRU5HVEg8L2xpbms+IGZvciB0aGlzCisgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+dWludDE2X3QgKnN0cmVuZ3RoPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGUgc2lnbmFsIHN0cmVuZ3RoIHZhbHVlIGlzIHN0b3JlZCBpbnRvICpzdHJlbmd0aC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorCismcmV0dXJuLXZhbHVlLWR2YjsKKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9IkZFX1JFQURfVU5DT1JSRUNURURfQkxPQ0tTIj4KKzx0aXRsZT5GRV9SRUFEX1VOQ09SUkVDVEVEX0JMT0NLUzwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIGNhbGwgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHVuY29ycmVjdGVkIGJsb2NrcyBkZXRlY3RlZCBieSB0aGUgZGV2aWNlCisgZHJpdmVyIGR1cmluZyBpdHMgbGlmZXRpbWUuIEZvciBtZWFuaW5nZnVsIG1lYXN1cmVtZW50cywgdGhlIGluY3JlbWVudCBpbiBibG9jaworIGNvdW50IGR1cmluZyBhIHNwZWNpZmljIHRpbWUgaW50ZXJ2YWwgc2hvdWxkIGJlIGNhbGN1bGF0ZWQuIEZvciB0aGlzIGNvbW1hbmQsCisgcmVhZC1vbmx5IGFjY2VzcyB0byB0aGUgZGV2aWNlIGlzIHN1ZmZpY2llbnQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPk5vdGUgdGhhdCB0aGUgY291bnRlciB3aWxsIHdyYXAgdG8gemVybyBhZnRlciBpdHMgbWF4aW11bSBjb3VudCBoYXMgYmVlbgorIHJlYWNoZWQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bCggaW50IGZkLCBpbnQgcmVxdWVzdCA9CisgPGxpbmsgbGlua2VuZD0iRkVfUkVBRF9VTkNPUlJFQ1RFRF9CTE9DS1MiPkZFX1JFQURfVU5DT1JSRUNURURfQkxPQ0tTPC9saW5rPiwgdWludDMyX3QgJiN4MjJDNjt1YmxvY2tzKTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIDxsaW5rIGxpbmtlbmQ9IkZFX1JFQURfVU5DT1JSRUNURURfQkxPQ0tTIj5GRV9SRUFEX1VOQ09SUkVDVEVEX0JMT0NLUzwvbGluaz4gZm9yIHRoaXMKKyBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT51aW50MzJfdCAqdWJsb2NrczwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhlIHRvdGFsIG51bWJlciBvZiB1bmNvcnJlY3RlZCBibG9ja3Mgc2VlbiBieSB0aGUgZHJpdmVyCisgc28gZmFyLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CisKKyZyZXR1cm4tdmFsdWUtZHZiOworPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iRkVfU0VUX0ZST05URU5EIj4KKzx0aXRsZT5GRV9TRVRfRlJPTlRFTkQ8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBjYWxsIHN0YXJ0cyBhIHR1bmluZyBvcGVyYXRpb24gdXNpbmcgc3BlY2lmaWVkIHBhcmFtZXRlcnMuIFRoZSByZXN1bHQKKyBvZiB0aGlzIGNhbGwgd2lsbCBiZSBzdWNjZXNzZnVsIGlmIHRoZSBwYXJhbWV0ZXJzIHdlcmUgdmFsaWQgYW5kIHRoZSB0dW5pbmcgY291bGQKKyBiZSBpbml0aWF0ZWQuIFRoZSByZXN1bHQgb2YgdGhlIHR1bmluZyBvcGVyYXRpb24gaW4gaXRzZWxmLCBob3dldmVyLCB3aWxsIGFycml2ZQorIGFzeW5jaHJvbm91c2x5IGFzIGFuIGV2ZW50IChzZWUgZG9jdW1lbnRhdGlvbiBmb3IgPGxpbmsgbGlua2VuZD0iRkVfR0VUX0VWRU5UIj5GRV9HRVRfRVZFTlQ8L2xpbms+IGFuZAorIEZyb250ZW5kRXZlbnQuKSBJZiBhIG5ldyA8bGluayBsaW5rZW5kPSJGRV9TRVRfRlJPTlRFTkQiPkZFX1NFVF9GUk9OVEVORDwvbGluaz4gb3BlcmF0aW9uIGlzIGluaXRpYXRlZCBiZWZvcmUKKyB0aGUgcHJldmlvdXMgb25lIHdhcyBjb21wbGV0ZWQsIHRoZSBwcmV2aW91cyBvcGVyYXRpb24gd2lsbCBiZSBhYm9ydGVkIGluIGZhdm9yCisgb2YgdGhlIG5ldyBvbmUuIFRoaXMgY29tbWFuZCByZXF1aXJlcyByZWFkL3dyaXRlIGFjY2VzcyB0byB0aGUgZGV2aWNlLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CisKKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bChpbnQgZmQsIGludCByZXF1ZXN0ID0gPGxpbmsgbGlua2VuZD0iRkVfU0VUX0ZST05URU5EIj5GRV9TRVRfRlJPTlRFTkQ8L2xpbms+LAorIHN0cnVjdCBkdmJfZnJvbnRlbmRfcGFyYW1ldGVycyAmI3gyMkM2O3ApOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgPGxpbmsgbGlua2VuZD0iRkVfU0VUX0ZST05URU5EIj5GRV9TRVRfRlJPTlRFTkQ8L2xpbms+IGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPnN0cnVjdAorIGR2Yl9mcm9udGVuZF9wYXJhbWV0ZXJzCisgKnA8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlBvaW50cyB0byBwYXJhbWV0ZXJzIGZvciB0dW5pbmcgb3BlcmF0aW9uLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CisKKyZyZXR1cm4tdmFsdWUtZHZiOworPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FSU5WQUw8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPk1heGltdW0gc3VwcG9ydGVkIHN5bWJvbCByYXRlIHJlYWNoZWQuPC9wYXJhPgorPC9lbnRyeT4KKzwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iRkVfR0VUX0ZST05URU5EIj4KKzx0aXRsZT5GRV9HRVRfRlJPTlRFTkQ8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBjYWxsIHF1ZXJpZXMgdGhlIGN1cnJlbnRseSBlZmZlY3RpdmUgZnJvbnRlbmQgcGFyYW1ldGVycy4gRm9yIHRoaXMKKyBjb21tYW5kLCByZWFkLW9ubHkgYWNjZXNzIHRvIHRoZSBkZXZpY2UgaXMgc3VmZmljaWVudC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorCis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoaW50IGZkLCBpbnQgcmVxdWVzdCA9IDxsaW5rIGxpbmtlbmQ9IkZFX0dFVF9GUk9OVEVORCI+RkVfR0VUX0ZST05URU5EPC9saW5rPiwKKyBzdHJ1Y3QgZHZiX2Zyb250ZW5kX3BhcmFtZXRlcnMgJiN4MjJDNjtwKTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorCis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgPGxpbmsgbGlua2VuZD0iRkVfU0VUX0ZST05URU5EIj5GRV9TRVRfRlJPTlRFTkQ8L2xpbms+IGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPnN0cnVjdAorIGR2Yl9mcm9udGVuZF9wYXJhbWV0ZXJzCisgKnA8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlBvaW50cyB0byBwYXJhbWV0ZXJzIGZvciB0dW5pbmcgb3BlcmF0aW9uLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CisKKyZyZXR1cm4tdmFsdWUtZHZiOworPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FSU5WQUw8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPk1heGltdW0gc3VwcG9ydGVkIHN5bWJvbCByYXRlIHJlYWNoZWQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKworPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iRkVfR0VUX0VWRU5UIj4KKzx0aXRsZT5GRV9HRVRfRVZFTlQ8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBjYWxsIHJldHVybnMgYSBmcm9udGVuZCBldmVudCBpZiBhdmFpbGFibGUuIElmIGFuIGV2ZW50IGlzIG5vdAorIGF2YWlsYWJsZSwgdGhlIGJlaGF2aW9yIGRlcGVuZHMgb24gd2hldGhlciB0aGUgZGV2aWNlIGlzIGluIGJsb2NraW5nIG9yCisgbm9uLWJsb2NraW5nIG1vZGUuIEluIHRoZSBsYXR0ZXIgY2FzZSwgdGhlIGNhbGwgZmFpbHMgaW1tZWRpYXRlbHkgd2l0aCBlcnJubworIHNldCB0byBFV09VTERCTE9DSy4gSW4gdGhlIGZvcm1lciBjYXNlLCB0aGUgY2FsbCBibG9ja3MgdW50aWwgYW4gZXZlbnQKKyBiZWNvbWVzIGF2YWlsYWJsZS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhlIHN0YW5kYXJkIExpbnV4IHBvbGwoKSBhbmQvb3Igc2VsZWN0KCkgc3lzdGVtIGNhbGxzIGNhbiBiZSB1c2VkIHdpdGggdGhlCisgZGV2aWNlIGZpbGUgZGVzY3JpcHRvciB0byB3YXRjaCBmb3IgbmV3IGV2ZW50cy4gRm9yIHNlbGVjdCgpLCB0aGUgZmlsZSBkZXNjcmlwdG9yCisgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBleGNlcHRmZHMgYXJndW1lbnQsIGFuZCBmb3IgcG9sbCgpLCBQT0xMUFJJIHNob3VsZAorIGJlIHNwZWNpZmllZCBhcyB0aGUgd2FrZS11cCBjb25kaXRpb24uIFNpbmNlIHRoZSBldmVudCBxdWV1ZSBhbGxvY2F0ZWQgaXMKKyByYXRoZXIgc21hbGwgKHJvb20gZm9yIDggZXZlbnRzKSwgdGhlIHF1ZXVlIG11c3QgYmUgc2VydmljZWQgcmVndWxhcmx5IHRvIGF2b2lkCisgb3ZlcmZsb3cuIElmIGFuIG92ZXJmbG93IGhhcHBlbnMsIHRoZSBvbGRlc3QgZXZlbnQgaXMgZGlzY2FyZGVkIGZyb20gdGhlIHF1ZXVlLAorIGFuZCBhbiBlcnJvciAoRU9WRVJGTE9XKSBvY2N1cnMgdGhlIG5leHQgdGltZSB0aGUgcXVldWUgaXMgcmVhZC4gQWZ0ZXIKKyByZXBvcnRpbmcgdGhlIGVycm9yIGNvbmRpdGlvbiBpbiB0aGlzIGZhc2hpb24sIHN1YnNlcXVlbnQKKyA8bGluayBsaW5rZW5kPSJGRV9HRVRfRVZFTlQiPkZFX0dFVF9FVkVOVDwvbGluaz4KKyBjYWxscyB3aWxsIHJldHVybiBldmVudHMgZnJvbSB0aGUgcXVldWUgYXMgdXN1YWwuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZvciB0aGUgc2FrZSBvZiBpbXBsZW1lbnRhdGlvbiBzaW1wbGljaXR5LCB0aGlzIGNvbW1hbmQgcmVxdWlyZXMgcmVhZC93cml0ZQorIGFjY2VzcyB0byB0aGUgZGV2aWNlLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CisKKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bChpbnQgZmQsIGludCByZXF1ZXN0ID0gUVBTS19HRVRfRVZFTlQsCisgc3RydWN0IGR2Yl9mcm9udGVuZF9ldmVudCAmI3gyMkM2O2V2KTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorCis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgPGxpbmsgbGlua2VuZD0iRkVfR0VUX0VWRU5UIj5GRV9HRVRfRVZFTlQ8L2xpbms+IGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPnN0cnVjdAorIGR2Yl9mcm9udGVuZF9ldmVudAorICpldjwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+UG9pbnRzIHRvIHRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgZXZlbnQsPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aWYgYW55LCBpcyB0byBiZSBzdG9yZWQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKworJnJldHVybi12YWx1ZS1kdmI7Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVXT1VMREJMT0NLPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGVyZSBpcyBubyBldmVudCBwZW5kaW5nLCBhbmQgdGhlIGRldmljZSBpcyBpbgorIG5vbi1ibG9ja2luZyBtb2RlLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FT1ZFUkZMT1c8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPk92ZXJmbG93IGluIGV2ZW50IHF1ZXVlIC0gb25lIG9yIG1vcmUgZXZlbnRzIHdlcmUgbG9zdC48L3BhcmE+Cis8L2VudHJ5PgorPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJGRV9ESVNITkVUV09SS19TRU5EX0xFR0FDWV9DTUQiPgorCTx0aXRsZT5GRV9ESVNITkVUV09SS19TRU5EX0xFR0FDWV9DTUQ8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT048L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PgorPGVudHJ5IGFsaWduPSJjaGFyIj4KKzxwYXJhPldBUk5JTkc6IFRoaXMgaXMgYSB2ZXJ5IG9ic2N1cmUgbGVnYWN5IGNvbW1hbmQsIHVzZWQgb25seSBhdCBzdHYwMjk5IGRyaXZlci4gU2hvdWxkIG5vdCBiZSB1c2VkIG9uIG5ld2VyIGRyaXZlcnMuPC9wYXJhPgorPHBhcmE+SXQgcHJvdmlkZXMgYSBub24tc3RhbmRhcmQgbWV0aG9kIGZvciBzZWxlY3RpbmcgRGlzZXFjIHZvbHRhZ2Ugb24gdGhlIGZyb250ZW5kLCBmb3IgRGlzaCBOZXR3b3JrIGxlZ2FjeSBzd2l0Y2hlcy48L3BhcmE+Cis8cGFyYT5BcyBzdXBwb3J0IGZvciB0aGlzIGlvY3RsIHdlcmUgYWRkZWQgaW4gMjAwNCwgdGhpcyBtZWFucyB0aGF0IHN1Y2ggZGlzaGVzIHdlcmUgYWxyZWFkeSBsZWdhY3kgaW4gMjAwNC48L3BhcmE+Cis8L2VudHJ5PgorPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CisKKzxwYXJhPlNZTk9QU0lTPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz4KKzxlbnRyeSBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoaW50IGZkLCBpbnQgcmVxdWVzdCA9CisJPGxpbmsgbGlua2VuZD0iRkVfRElTSE5FVFdPUktfU0VORF9MRUdBQ1lfQ01EIj5GRV9ESVNITkVUV09SS19TRU5EX0xFR0FDWV9DTUQ8L2xpbms+LCB1bnNpZ25lZCBsb25nIGNtZCk7PC9wYXJhPgorPC9lbnRyeT4KKzwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorCis8cGFyYT5QQVJBTUVURVJTPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz4KKzxlbnRyeSBhbGlnbj0iY2hhciI+CisJPHBhcmE+dW5zaWduZWQgbG9uZyBjbWQ8L3BhcmE+Cis8L2VudHJ5PgorPGVudHJ5IGFsaWduPSJjaGFyIj4KKzxwYXJhPgorc2VuZHMgdGhlIHNwZWNpZmllZCByYXcgY21kIHRvIHRoZSBkaXNoIHZpYSBESVNFcUMuCis8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorCismcmV0dXJuLXZhbHVlLWR2YjsKKzwvc2VjdGlvbj4KKworPC9zZWN0aW9uPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2Yi9pbnRyby54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL2ludHJvLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWRiMTU2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2Yi9pbnRyby54bWwKQEAgLTAsMCArMSwyMTEgQEAKKzx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorCis8c2VjdGlvbiBpZD0icmVxdWlzaXRlcyI+Cis8dGl0bGU+V2hhdCB5b3UgbmVlZCB0byBrbm93PC90aXRsZT4KKworPHBhcmE+VGhlIHJlYWRlciBvZiB0aGlzIGRvY3VtZW50IGlzIHJlcXVpcmVkIHRvIGhhdmUgc29tZSBrbm93bGVkZ2UgaW4KK3RoZSBhcmVhIG9mIGRpZ2l0YWwgdmlkZW8gYnJvYWRjYXN0aW5nIChEVkIpIGFuZCBzaG91bGQgYmUgZmFtaWxpYXIgd2l0aAorcGFydCBJIG9mIHRoZSBNUEVHMiBzcGVjaWZpY2F0aW9uIElTTy9JRUMgMTM4MTggKGFrYSBJVFUtVCBILjIyMiksIGkuZQoreW91IHNob3VsZCBrbm93IHdoYXQgYSBwcm9ncmFtL3RyYW5zcG9ydCBzdHJlYW0gKFBTL1RTKSBpcyBhbmQgd2hhdCBpcworbWVhbnQgYnkgYSBwYWNrZXRpemVkIGVsZW1lbnRhcnkgc3RyZWFtIChQRVMpIG9yIGFuIEktZnJhbWUuPC9wYXJhPgorCis8cGFyYT5WYXJpb3VzIERWQiBzdGFuZGFyZHMgZG9jdW1lbnRzIGFyZSBhdmFpbGFibGUgZnJvbQorPHVsaW5rIHVybD0iaHR0cDovL3d3dy5kdmIub3JnIiAvPiBhbmQvb3IKKzx1bGluayB1cmw9Imh0dHA6Ly93d3cuZXRzaS5vcmciIC8+LjwvcGFyYT4KKworPHBhcmE+SXQgaXMgYWxzbyBuZWNlc3NhcnkgdG8ga25vdyBob3cgdG8gYWNjZXNzIHVuaXgvbGludXggZGV2aWNlcyBhbmQKK2hvdyB0byB1c2UgaW9jdGwgY2FsbHMuIFRoaXMgYWxzbyBpbmNsdWRlcyB0aGUga25vd2xlZGdlIG9mIEMgb3IgQysrLgorPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0iaGlzdG9yeSI+Cis8dGl0bGU+SGlzdG9yeTwvdGl0bGU+CisKKzxwYXJhPlRoZSBmaXJzdCBBUEkgZm9yIERWQiBjYXJkcyB3ZSB1c2VkIGF0IENvbnZlcmdlbmNlIGluIGxhdGUgMTk5OQord2FzIGFuIGV4dGVuc2lvbiBvZiB0aGUgVmlkZW80TGludXggQVBJIHdoaWNoIHdhcyBwcmltYXJpbHkgZGV2ZWxvcGVkCitmb3IgZnJhbWUgZ3JhYmJlciBjYXJkcy4gQXMgc3VjaCBpdCB3YXMgbm90IHJlYWxseSB3ZWxsIHN1aXRlZCB0byBiZQordXNlZCBmb3IgRFZCIGNhcmRzIGFuZCB0aGVpciBuZXcgZmVhdHVyZXMgbGlrZSByZWNvcmRpbmcgTVBFRyBzdHJlYW1zCithbmQgZmlsdGVyaW5nIHNldmVyYWwgc2VjdGlvbiBhbmQgUEVTIGRhdGEgc3RyZWFtcyBhdCB0aGUgc2FtZSB0aW1lLgorPC9wYXJhPgorCis8cGFyYT5JbiBlYXJseSAyMDAwLCB3ZSB3ZXJlIGFwcHJvYWNoZWQgYnkgTm9raWEgd2l0aCBhIHByb3Bvc2FsIGZvciBhCituZXcgc3RhbmRhcmQgTGludXggRFZCIEFQSS4gQXMgYSBjb21taXRtZW50IHRvIHRoZSBkZXZlbG9wbWVudCBvZgordGVybWluYWxzIGJhc2VkIG9uIG9wZW4gc3RhbmRhcmRzLCBOb2tpYSBhbmQgQ29udmVyZ2VuY2UgbWFkZSBpdAorYXZhaWxhYmxlIHRvIGFsbCBMaW51eCBkZXZlbG9wZXJzIGFuZCBwdWJsaXNoZWQgaXQgb24KKzx1bGluayB1cmw9Imh0dHA6Ly93d3cubGludXh0di5vcmcvIiAvPiBpbiBTZXB0ZW1iZXIgMjAwMC4KK0NvbnZlcmdlbmNlIGlzIHRoZSBtYWludGFpbmVyIG9mIHRoZSBMaW51eCBEVkIgQVBJLiBUb2dldGhlciB3aXRoIHRoZQorTGludXhUViBjb21tdW5pdHkgKGkuZS4geW91LCB0aGUgcmVhZGVyIG9mIHRoaXMgZG9jdW1lbnQpLCB0aGUgTGludXggRFZCCitBUEkgd2lsbCBiZSBjb25zdGFudGx5IHJldmlld2VkIGFuZCBpbXByb3ZlZC4gV2l0aCB0aGUgTGludXggZHJpdmVyIGZvcgordGhlIFNpZW1lbnMvSGF1cHBhdWdlIERWQiBQQ0kgY2FyZCBDb252ZXJnZW5jZSBwcm92aWRlcyBhIGZpcnN0CitpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTGludXggRFZCIEFQSS48L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJvdmVydmlldyI+Cis8dGl0bGU+T3ZlcnZpZXc8L3RpdGxlPgorCis8ZmlndXJlIGlkPSJzdGJfY29tcG9uZW50cyI+Cis8dGl0bGU+Q29tcG9uZW50cyBvZiBhIERWQiBjYXJkL1NUQjwvdGl0bGU+Cis8bWVkaWFvYmplY3Q+Cis8aW1hZ2VvYmplY3Q+Cis8aW1hZ2VkYXRhIGZpbGVyZWY9ImR2YnN0Yi5wZGYiIGZvcm1hdD0iUFMiIC8+Cis8L2ltYWdlb2JqZWN0PgorPGltYWdlb2JqZWN0PgorPGltYWdlZGF0YSBmaWxlcmVmPSJkdmJzdGIucG5nIiBmb3JtYXQ9IlBORyIgLz4KKzwvaW1hZ2VvYmplY3Q+Cis8L21lZGlhb2JqZWN0PgorPC9maWd1cmU+CisKKzxwYXJhPkEgRFZCIFBDSSBjYXJkIG9yIERWQiBzZXQtdG9wLWJveCAoU1RCKSB1c3VhbGx5IGNvbnNpc3RzIG9mIHRoZQorZm9sbG93aW5nIG1haW4gaGFyZHdhcmUgY29tcG9uZW50czogPC9wYXJhPgorCis8aXRlbWl6ZWRsaXN0PgorIDxsaXN0aXRlbT4KKworPHBhcmE+RnJvbnRlbmQgY29uc2lzdGluZyBvZiB0dW5lciBhbmQgRFZCIGRlbW9kdWxhdG9yPC9wYXJhPgorCis8cGFyYT5IZXJlIHRoZSByYXcgc2lnbmFsIHJlYWNoZXMgdGhlIERWQiBoYXJkd2FyZSBmcm9tIGEgc2F0ZWxsaXRlIGRpc2gKK29yIGFudGVubmEgb3IgZGlyZWN0bHkgZnJvbSBjYWJsZS4gVGhlIGZyb250ZW5kIGRvd24tY29udmVydHMgYW5kCitkZW1vZHVsYXRlcyB0aGlzIHNpZ25hbCBpbnRvIGFuIE1QRUcgdHJhbnNwb3J0IHN0cmVhbSAoVFMpLiBJbiBjYXNlIG9mIGEKK3NhdGVsbGl0ZSBmcm9udGVuZCwgdGhpcyBpbmNsdWRlcyBhIGZhY2lsaXR5IGZvciBzYXRlbGxpdGUgZXF1aXBtZW50Citjb250cm9sIChTRUMpLCB3aGljaCBhbGxvd3MgY29udHJvbCBvZiBMTkIgcG9sYXJpemF0aW9uLCBtdWx0aSBmZWVkCitzd2l0Y2hlcyBvciBkaXNoIHJvdG9ycy48L3BhcmE+CisKKzwvbGlzdGl0ZW0+CisgPGxpc3RpdGVtPgorCis8cGFyYT5Db25kaXRpb25hbCBBY2Nlc3MgKENBKSBoYXJkd2FyZSBsaWtlIENJIGFkYXB0ZXJzIGFuZCBzbWFydGNhcmQgc2xvdHMKKzwvcGFyYT4KKworPHBhcmE+VGhlIGNvbXBsZXRlIFRTIGlzIHBhc3NlZCB0aHJvdWdoIHRoZSBDQSBoYXJkd2FyZS4gUHJvZ3JhbXMgdG8KK3doaWNoIHRoZSB1c2VyIGhhcyBhY2Nlc3MgKGNvbnRyb2xsZWQgYnkgdGhlIHNtYXJ0IGNhcmQpIGFyZSBkZWNvZGVkIGluCityZWFsIHRpbWUgYW5kIHJlLWluc2VydGVkIGludG8gdGhlIFRTLjwvcGFyYT4KKworPC9saXN0aXRlbT4KKyA8bGlzdGl0ZW0+CisgPHBhcmE+RGVtdWx0aXBsZXhlciB3aGljaCBmaWx0ZXJzIHRoZSBpbmNvbWluZyBEVkIgc3RyZWFtPC9wYXJhPgorCis8cGFyYT5UaGUgZGVtdWx0aXBsZXhlciBzcGxpdHMgdGhlIFRTIGludG8gaXRzIGNvbXBvbmVudHMgbGlrZSBhdWRpbyBhbmQKK3ZpZGVvIHN0cmVhbXMuIEJlc2lkZXMgdXN1YWxseSBzZXZlcmFsIG9mIHN1Y2ggYXVkaW8gYW5kIHZpZGVvIHN0cmVhbXMKK2l0IGFsc28gY29udGFpbnMgZGF0YSBzdHJlYW1zIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2dyYW1zCitvZmZlcmVkIGluIHRoaXMgb3Igb3RoZXIgc3RyZWFtcyBvZiB0aGUgc2FtZSBwcm92aWRlci48L3BhcmE+CisKKzwvbGlzdGl0ZW0+Cis8bGlzdGl0ZW0+CisKKzxwYXJhPk1QRUcyIGF1ZGlvIGFuZCB2aWRlbyBkZWNvZGVyPC9wYXJhPgorCis8cGFyYT5UaGUgbWFpbiB0YXJnZXRzIG9mIHRoZSBkZW11bHRpcGxleGVyIGFyZSB0aGUgTVBFRzIgYXVkaW8gYW5kCit2aWRlbyBkZWNvZGVycy4gQWZ0ZXIgZGVjb2RpbmcgdGhleSBwYXNzIG9uIHRoZSB1bmNvbXByZXNzZWQgYXVkaW8gYW5kCit2aWRlbyB0byB0aGUgY29tcHV0ZXIgc2NyZWVuIG9yICh0aHJvdWdoIGEgUEFML05UU0MgZW5jb2RlcikgdG8gYSBUVgorc2V0LjwvcGFyYT4KKworCis8L2xpc3RpdGVtPgorPC9pdGVtaXplZGxpc3Q+CisKKzxwYXJhPjx4cmVmIGxpbmtlbmQ9InN0Yl9jb21wb25lbnRzIiAvPiBzaG93cyBhIGNydWRlIHNjaGVtYXRpYyBvZiB0aGUgY29udHJvbCBhbmQgZGF0YSBmbG93CitiZXR3ZWVuIHRob3NlIGNvbXBvbmVudHMuPC9wYXJhPgorCis8cGFyYT5PbiBhIERWQiBQQ0kgY2FyZCBub3QgYWxsIG9mIHRoZXNlIGhhdmUgdG8gYmUgcHJlc2VudCBzaW5jZSBzb21lCitmdW5jdGlvbmFsaXR5IGNhbiBiZSBwcm92aWRlZCBieSB0aGUgbWFpbiBDUFUgb2YgdGhlIFBDIChlLmcuIE1QRUcKK3BpY3R1cmUgYW5kIHNvdW5kIGRlY29kaW5nKSBvciBpcyBub3QgbmVlZGVkIChlLmcuIGZvciBkYXRhLW9ubHkgdXNlcworbGlrZSAmIzgyMjA7aW50ZXJuZXQgb3ZlciBzYXRlbGxpdGUmIzgyMjE7KS4gQWxzbyBub3QgZXZlcnkgY2FyZCBvciBTVEIKK3Byb3ZpZGVzIGNvbmRpdGlvbmFsIGFjY2VzcyBoYXJkd2FyZS48L3BhcmE+CisKKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9ImR2Yl9kZXZpY2VzIj4KKzx0aXRsZT5MaW51eCBEVkIgRGV2aWNlczwvdGl0bGU+CisKKzxwYXJhPlRoZSBMaW51eCBEVkIgQVBJIGxldHMgeW91IGNvbnRyb2wgdGhlc2UgaGFyZHdhcmUgY29tcG9uZW50cwordGhyb3VnaCBjdXJyZW50bHkgc2l4IFVuaXgtc3R5bGUgY2hhcmFjdGVyIGRldmljZXMgZm9yIHZpZGVvLCBhdWRpbywKK2Zyb250ZW5kLCBkZW11eCwgQ0EgYW5kIElQLW92ZXItRFZCIG5ldHdvcmtpbmcuIFRoZSB2aWRlbyBhbmQgYXVkaW8KK2RldmljZXMgY29udHJvbCB0aGUgTVBFRzIgZGVjb2RlciBoYXJkd2FyZSwgdGhlIGZyb250ZW5kIGRldmljZSB0aGUKK3R1bmVyIGFuZCB0aGUgRFZCIGRlbW9kdWxhdG9yLiBUaGUgZGVtdXggZGV2aWNlIGdpdmVzIHlvdSBjb250cm9sIG92ZXIKK3RoZSBQRVMgYW5kIHNlY3Rpb24gZmlsdGVycyBvZiB0aGUgaGFyZHdhcmUuIElmIHRoZSBoYXJkd2FyZSBkb2VzIG5vdAorc3VwcG9ydCBmaWx0ZXJpbmcgdGhlc2UgZmlsdGVycyBjYW4gYmUgaW1wbGVtZW50ZWQgaW4gc29mdHdhcmUuIEZpbmFsbHksCit0aGUgQ0EgZGV2aWNlIGNvbnRyb2xzIGFsbCB0aGUgY29uZGl0aW9uYWwgYWNjZXNzIGNhcGFiaWxpdGllcyBvZiB0aGUKK2hhcmR3YXJlLiBJdCBjYW4gZGVwZW5kIG9uIHRoZSBpbmRpdmlkdWFsIHNlY3VyaXR5IHJlcXVpcmVtZW50cyBvZiB0aGUKK3BsYXRmb3JtLCBpZiBhbmQgaG93IG1hbnkgb2YgdGhlIENBIGZ1bmN0aW9ucyBhcmUgbWFkZSBhdmFpbGFibGUgdG8gdGhlCithcHBsaWNhdGlvbiB0aHJvdWdoIHRoaXMgZGV2aWNlLjwvcGFyYT4KKworPHBhcmE+QWxsIGRldmljZXMgY2FuIGJlIGZvdW5kIGluIHRoZSA8Y29uc3RhbnQ+L2RldjwvY29uc3RhbnQ+Cit0cmVlIHVuZGVyIDxjb25zdGFudD4vZGV2L2R2YjwvY29uc3RhbnQ+LiBUaGUgaW5kaXZpZHVhbCBkZXZpY2VzCithcmUgY2FsbGVkOjwvcGFyYT4KKworPGl0ZW1pemVkbGlzdD4KKzxsaXN0aXRlbT4KKworPHBhcmE+PGNvbnN0YW50Pi9kZXYvZHZiL2FkYXB0ZXJOL2F1ZGlvTTwvY29uc3RhbnQ+LDwvcGFyYT4KKzwvbGlzdGl0ZW0+Cis8bGlzdGl0ZW0+Cis8cGFyYT48Y29uc3RhbnQ+L2Rldi9kdmIvYWRhcHRlck4vdmlkZW9NPC9jb25zdGFudD4sPC9wYXJhPgorPC9saXN0aXRlbT4KKzxsaXN0aXRlbT4KKzxwYXJhPjxjb25zdGFudD4vZGV2L2R2Yi9hZGFwdGVyTi9mcm9udGVuZE08L2NvbnN0YW50Piw8L3BhcmE+Cis8L2xpc3RpdGVtPgorIDxsaXN0aXRlbT4KKworPHBhcmE+PGNvbnN0YW50Pi9kZXYvZHZiL2FkYXB0ZXJOL25ldE08L2NvbnN0YW50Piw8L3BhcmE+Cis8L2xpc3RpdGVtPgorIDxsaXN0aXRlbT4KKworPHBhcmE+PGNvbnN0YW50Pi9kZXYvZHZiL2FkYXB0ZXJOL2RlbXV4TTwvY29uc3RhbnQ+LDwvcGFyYT4KKzwvbGlzdGl0ZW0+CisgPGxpc3RpdGVtPgorCis8cGFyYT48Y29uc3RhbnQ+L2Rldi9kdmIvYWRhcHRlck4vZHZyTTwvY29uc3RhbnQ+LDwvcGFyYT4KKzwvbGlzdGl0ZW0+CisgPGxpc3RpdGVtPgorCis8cGFyYT48Y29uc3RhbnQ+L2Rldi9kdmIvYWRhcHRlck4vY2FNPC9jb25zdGFudD4sPC9wYXJhPjwvbGlzdGl0ZW0+PC9pdGVtaXplZGxpc3Q+CisKKzxwYXJhPndoZXJlIE4gZW51bWVyYXRlcyB0aGUgRFZCIFBDSSBjYXJkcyBpbiBhIHN5c3RlbSBzdGFydGluZworZnJvbSYjeDAwQTA7MCwgYW5kIE0gZW51bWVyYXRlcyB0aGUgZGV2aWNlcyBvZiBlYWNoIHR5cGUgd2l0aGluIGVhY2gKK2FkYXB0ZXIsIHN0YXJ0aW5nIGZyb20mI3gwMEEwOzAsIHRvby4gV2Ugd2lsbCBvbWl0IHRoZSAmIzgyMjA7Cis8Y29uc3RhbnQ+L2Rldi9kdmIvYWRhcHRlck4vPC9jb25zdGFudD4mIzgyMjE7IGluIHRoZSBmdXJ0aGVyIGRpc2N1c3Npb24KK29mIHRoZXNlIGRldmljZXMuPC9wYXJhPgorCis8cGFyYT5Nb3JlIGRldGFpbHMgYWJvdXQgdGhlIGRhdGEgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb24gY2FsbHMgb2YgYWxsCit0aGUgZGV2aWNlcyBhcmUgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgY2hhcHRlcnMuPC9wYXJhPgorCis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJpbmNsdWRlX2ZpbGVzIj4KKzx0aXRsZT5BUEkgaW5jbHVkZSBmaWxlczwvdGl0bGU+CisKKzxwYXJhPkZvciBlYWNoIG9mIHRoZSBEVkIgZGV2aWNlcyBhIGNvcnJlc3BvbmRpbmcgaW5jbHVkZSBmaWxlIGV4aXN0cy4KK1RoZSBEVkIgQVBJIGluY2x1ZGUgZmlsZXMgc2hvdWxkIGJlIGluY2x1ZGVkIGluIGFwcGxpY2F0aW9uIHNvdXJjZXMgd2l0aAorYSBwYXJ0aWFsIHBhdGggbGlrZTo8L3BhcmE+CisKKzxwcm9ncmFtbGlzdGluZz4KKwkjaW5jbHVkZSAmI3gwMDNDO2xpbnV4L2R2Yi9hdWRpby5oJiN4MDAzRTsKKzwvcHJvZ3JhbWxpc3Rpbmc+Cis8cHJvZ3JhbWxpc3Rpbmc+CisJI2luY2x1ZGUgJiN4MDAzQztsaW51eC9kdmIvY2EuaCYjeDAwM0U7Cis8L3Byb2dyYW1saXN0aW5nPgorPHByb2dyYW1saXN0aW5nPgorCSNpbmNsdWRlICYjeDAwM0M7bGludXgvZHZiL2RteC5oJiN4MDAzRTsKKzwvcHJvZ3JhbWxpc3Rpbmc+Cis8cHJvZ3JhbWxpc3Rpbmc+CisJI2luY2x1ZGUgJiN4MDAzQztsaW51eC9kdmIvZnJvbnRlbmQuaCYjeDAwM0U7Cis8L3Byb2dyYW1saXN0aW5nPgorPHByb2dyYW1saXN0aW5nPgorCSNpbmNsdWRlICYjeDAwM0M7bGludXgvZHZiL25ldC5oJiN4MDAzRTsKKzwvcHJvZ3JhbWxpc3Rpbmc+Cis8cHJvZ3JhbWxpc3Rpbmc+CisJI2luY2x1ZGUgJiN4MDAzQztsaW51eC9kdmIvb3NkLmgmI3gwMDNFOworPC9wcm9ncmFtbGlzdGluZz4KKzxwcm9ncmFtbGlzdGluZz4KKwkjaW5jbHVkZSAmI3gwMDNDO2xpbnV4L2R2Yi92aWRlby5oJiN4MDAzRTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisKKzxwYXJhPlRvIGVuYWJsZSBhcHBsaWNhdGlvbnMgdG8gc3VwcG9ydCBkaWZmZXJlbnQgQVBJIHZlcnNpb24sIGFuCithZGRpdGlvbmFsIGluY2x1ZGUgZmlsZQorPGNvbnN0YW50PmxpbnV4L2R2Yi92ZXJzaW9uLmg8L2NvbnN0YW50PiBleGlzdHMsIHdoaWNoIGRlZmluZXMgdGhlCitjb25zdGFudCA8Y29uc3RhbnQ+RFZCX0FQSV9WRVJTSU9OPC9jb25zdGFudD4uIFRoaXMgZG9jdW1lbnQKK2Rlc2NyaWJlcyA8Y29uc3RhbnQ+RFZCX0FQSV9WRVJTSU9OIDUuMTA8L2NvbnN0YW50Pi4KKzwvcGFyYT4KKworPC9zZWN0aW9uPgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL25ldC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL25ldC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJlNDRiNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvbmV0LnhtbApAQCAtMCwwICsxLDIzOCBAQAorPHRpdGxlPkRWQiBOZXR3b3JrIEFQSTwvdGl0bGU+Cis8cGFyYT5UaGUgRFZCIG5ldCBkZXZpY2UgY29udHJvbHMgdGhlIG1hcHBpbmcgb2YgZGF0YSBwYWNrYWdlcyB0aGF0IGFyZQorICAgIHBhcnQgb2YgYSB0cmFuc3BvcnQgc3RyZWFtIHRvIGJlIG1hcHBlZCBpbnRvIGEgdmlydHVhbCBuZXR3b3JrIGludGVyZmFjZSwKKyAgICB2aXNpYmxlIHRocm91Z2ggdGhlIHN0YW5kYXJkIExpbnV4IG5ldHdvcmsgcHJvdG9jb2wgc3RhY2suPC9wYXJhPgorPHBhcmE+Q3VycmVudGx5LCB0d28gZW5jYXBzdWxhdGlvbnMgYXJlIHN1cHBvcnRlZDo8L3BhcmE+Cis8aXRlbWl6ZWRsaXN0PgorICAgIDxsaXN0aXRlbT48cGFyYT48dWxpbmsgdXJsPSJodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL011bHRpcHJvdG9jb2xfRW5jYXBzdWxhdGlvbiI+CisJTXVsdGkgUHJvdG9jb2wgRW5jYXBzdWxhdGlvbiAoTVBFKTwvdWxpbms+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPjxwYXJhPjx1bGluayB1cmw9Imh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVW5pZGlyZWN0aW9uYWxfTGlnaHR3ZWlnaHRfRW5jYXBzdWxhdGlvbiI+CisJVWx0cmEgTGlnaHR3ZWlnaHQgRW5jYXBzdWxhdGlvbiAoVUxFKTwvdWxpbms+PC9wYXJhPjwvbGlzdGl0ZW0+Cis8L2l0ZW1pemVkbGlzdD4KKworPHBhcmE+SW4gb3JkZXIgdG8gY3JlYXRlIHRoZSBMaW51eCB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlcywgYW4gYXBwbGljYXRpb24KKyAgICBuZWVkcyB0byB0ZWxsIHRvIHRoZSBLZXJuZWwgd2hhdCBhcmUgdGhlIFBJRHMgYW5kIHRoZSBlbmNhcHN1bGF0aW9uIHR5cGVzCisgICAgdGhhdCBhcmUgcHJlc2VudCBvbiB0aGUgdHJhbnNwb3J0IHN0cmVhbS4gVGhpcyBpcyBkb25lIHRocm91Z2gKKyAgICA8Y29uc3RhbnQ+L2Rldi9kdmIvYWRhcHRlcj8vbmV0PzwvY29uc3RhbnQ+IGRldmljZSBub2RlLgorICAgIFRoZSBkYXRhIHdpbGwgYmUgYXZhaWxhYmxlIHZpYSB2aXJ0dWFsIDxjb25zdGFudD5kdmI/Xz88L2NvbnN0YW50PgorICAgIG5ldHdvcmsgaW50ZXJmYWNlcywgYW5kIHdpbGwgYmUgY29udHJvbGVkL3JvdXRlZCB2aWEgdGhlIHN0YW5kYXJkCisgICAgaXAgdG9vbHMgKGxpa2UgaXAsIHJvdXRlLCBuZXRzdGF0LCBpZmNvbmZpZywgZXRjKS48L3BhcmE+Cis8cGFyYT4gRGF0YSB0eXBlcyBhbmQgYW5kIGlvY3RsIGRlZmluaXRpb25zIGFyZSBkZWZpbmVkIHZpYQorICAgIDxjb25zdGFudD5saW51eC9kdmIvbmV0Lmg8L2NvbnN0YW50PiBoZWFkZXIuPC9wYXJhPgorCis8c2VjdGlvbiBpZD0ibmV0X2ZjYWxscyI+Cis8dGl0bGU+RFZCIG5ldCBGdW5jdGlvbiBDYWxsczwvdGl0bGU+CisKKworPHJlZmVudHJ5IGlkPSJORVRfQUREX0lGIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgTkVUX0FERF9JRjwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+TkVUX0FERF9JRjwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5DcmVhdGVzIGEgbmV3IG5ldHdvcmsgaW50ZXJmYWNlIGZvciBhIGdpdmVuIFBhY2tldCBJRC48L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c3RydWN0IGR2Yl9uZXRfaWYgKjxwYXJhbWV0ZXI+bmV0X2lmPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisgICAgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZlX2ZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5GRV9TRVRfVE9ORTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+bmV0X2lmPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPnBvaW50ZXIgdG8gJmR2Yi1uZXQtaWY7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworPHBhcmE+VGhlIE5FVF9BRERfSUYgaW9jdGwgc3lzdGVtIGNhbGwgc2VsZWN0cyB0aGUgUGFja2V0IElEIChQSUQpIHRoYXQKKyAgICBjb250YWlucyBhIFRDUC9JUCB0cmFmZmljLCB0aGUgdHlwZSBvZiBlbmNhcHN1bGF0aW9uIHRvIGJlIHVzZWQgKE1QRSBvciBVTEUpCisgICAgYW5kIHRoZSBpbnRlcmZhY2UgbnVtYmVyIGZvciB0aGUgbmV3IGludGVyZmFjZSB0byBiZSBjcmVhdGVkLiBXaGVuIHRoZQorICAgIHN5c3RlbSBjYWxsIHN1Y2Nlc3NmdWxseSByZXR1cm5zLCBhIG5ldyB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlIGlzICBjcmVhdGVkLjwvcGFyYT4KKzxwYXJhPlRoZSAmZHZiLW5ldC1pZjs6OmlmbnVtIGZpZWxkIHdpbGwgYmUgZmlsbGVkIHdpdGggdGhlIG51bWJlciBvZiB0aGUKKyAgICBjcmVhdGVkIGludGVyZmFjZS48L3BhcmE+CisKKyZyZXR1cm4tdmFsdWUtZHZiOworPC9yZWZzZWN0MT4KKworPHJlZnNlY3QxIGlkPSJkdmItbmV0LWlmLXQiPgorPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT5kdmJfbmV0X2lmPC9zdHJ1Y3RuYW1lPiBkZXNjcmlwdGlvbjwvdGl0bGU+CisKKzx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iZHZiLW5ldC1pZiI+CisgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT5kdmJfbmV0X2lmPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgPHRncm91cCBjb2xzPSIyIj4KKwkmY3MtZGVmOworCTx0aGVhZD4KKwk8cm93PgorCSAgICA8ZW50cnk+SUQ8L2VudHJ5PgorCSAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorCTwvcm93PgorCTwvdGhlYWQ+CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwk8cm93PgorCSAgICA8ZW50cnkgYWxpZ249ImNoYXIiPnBpZDwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0iY2hhciI+UGFja2V0IElEIChQSUQpIG9mIHRoZSBNUEVHLVRTIHRoYXQgY29udGFpbnMKKwkJZGF0YTwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5IGFsaWduPSJjaGFyIj5pZm51bTwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0iY2hhciI+bnVtYmVyIG9mIHRoZSBEVkIgaW50ZXJmYWNlLjwvZW50cnk+CisJPC9yb3c+PHJvdz4KKwkgICAgPGVudHJ5IGFsaWduPSJjaGFyIj5mZWVkdHlwZTwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0iY2hhciI+RW5jYXBzdWxhdGlvbiB0eXBlIG9mIHRoZSBmZWVkLiBJdCBjYW4gYmU6CisJCTxjb25zdGFudD5EVkJfTkVUX0ZFRURUWVBFX01QRTwvY29uc3RhbnQ+IGZvciBNUEUgZW5jb2RpbmcKKwkJb3IKKwkJPGNvbnN0YW50PkRWQl9ORVRfRkVFRFRZUEVfVUxFPC9jb25zdGFudD4gZm9yIFVMRSBlbmNvZGluZy4KKwkJPC9lbnRyeT4KKwk8L3Jvdz4KKyAgICAgICAgPC90Ym9keT4KKyAgICA8L3Rncm91cD4KKzwvdGFibGU+Cis8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KKworPHJlZmVudHJ5IGlkPSJORVRfUkVNT1ZFX0lGIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgTkVUX1JFTU9WRV9JRjwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+TkVUX1JFTU9WRV9JRjwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5SZW1vdmVzIGEgbmV0d29yayBpbnRlcmZhY2UuPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmlmbnVtPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisgICAgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZlX2ZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5GRV9TRVRfVE9ORTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+bmV0X2lmPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPm51bWJlciBvZiB0aGUgaW50ZXJmYWNlIHRvIGJlIHJlbW92ZWQ8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCis8cGFyYT5UaGUgTkVUX1JFTU9WRV9JRiBpb2N0bCBkZWxldGVzIGFuIGludGVyZmFjZSBwcmV2aW91c2x5IGNyZWF0ZWQKKyAgICB2aWEgJk5FVC1BREQtSUY7LjwvcGFyYT4KKworJnJldHVybi12YWx1ZS1kdmI7Cis8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KKworCis8cmVmZW50cnkgaWQ9Ik5FVF9HRVRfSUYiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBORVRfR0VUX0lGPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5ORVRfR0VUX0lGPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPlJlYWQgdGhlIGNvbmZpZ3VyYXRpb24gZGF0YSBvZiBhbiBpbnRlcmZhY2UgY3JlYXRlZCB2aWEKKwkmTkVULUFERC1JRjsuPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCBkdmJfbmV0X2lmICo8cGFyYW1ldGVyPm5ldF9pZjwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorICAgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPiZmZV9mZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+RkVfU0VUX1RPTkU8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPm5ldF9pZjwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5wb2ludGVyIHRvICZkdmItbmV0LWlmOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKzxwYXJhPlRoZSBORVRfR0VUX0lGIGlvY3RsIHVzZXMgdGhlIGludGVyZmFjZSBudW1iZXIgZ2l2ZW4gYnkgdGhlCisgICAgJmR2Yi1uZXQtaWY7OjppZm51bSBmaWVsZCBhbmQgZmlsbHMgdGhlIGNvbnRlbnQgb2YgJmR2Yi1uZXQtaWY7IHdpdGgKKyAgICB0aGUgcGFja2V0IElEIGFuZCBlbmNhcHN1bGF0aW9uIHR5cGUgdXNlZCBvbiBzdWNoIGludGVyZmFjZS4gSWYgdGhlCisgICAgaW50ZXJmYWNlIHdhcyBub3QgY3JlYXRlZCB5ZXQgd2l0aCAmTkVULUFERC1JRjssIGl0IHdpbGwgcmV0dXJuIC0xIGFuZAorICAgIGZpbGwgdGhlIDxjb25zdGFudD5lcnJubzwvY29uc3RhbnQ+IHdpdGggPGNvbnN0YW50PkVJTlZBTDwvY29uc3RhbnQ+CisgICAgZXJyb3IgY29kZS48L3BhcmE+CisKKyZyZXR1cm4tdmFsdWUtZHZiOworPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+Cis8L3NlY3Rpb24+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL3ZpZGVvLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmIvdmlkZW8ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNTQ3ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvZHZiL3ZpZGVvLnhtbApAQCAtMCwwICsxLDE5NjggQEAKKzx0aXRsZT5EVkIgVmlkZW8gRGV2aWNlPC90aXRsZT4KKzxwYXJhPlRoZSBEVkIgdmlkZW8gZGV2aWNlIGNvbnRyb2xzIHRoZSBNUEVHMiB2aWRlbyBkZWNvZGVyIG9mIHRoZSBEVkIgaGFyZHdhcmUuIEl0CitjYW4gYmUgYWNjZXNzZWQgdGhyb3VnaCA8ZW1waGFzaXMgcm9sZT0iYm9sZCI+L2Rldi9kdmIvYWRhcHRlcjAvdmlkZW8wPC9lbXBoYXNpcz4uIERhdGEgdHlwZXMgYW5kIGFuZAoraW9jdGwgZGVmaW5pdGlvbnMgY2FuIGJlIGFjY2Vzc2VkIGJ5IGluY2x1ZGluZyA8ZW1waGFzaXMgcm9sZT0iYm9sZCI+bGludXgvZHZiL3ZpZGVvLmg8L2VtcGhhc2lzPiBpbiB5b3VyCithcHBsaWNhdGlvbi4KKzwvcGFyYT4KKzxwYXJhPk5vdGUgdGhhdCB0aGUgRFZCIHZpZGVvIGRldmljZSBvbmx5IGNvbnRyb2xzIGRlY29kaW5nIG9mIHRoZSBNUEVHIHZpZGVvIHN0cmVhbSwgbm90CitpdHMgcHJlc2VudGF0aW9uIG9uIHRoZSBUViBvciBjb21wdXRlciBzY3JlZW4uIE9uIFBDcyB0aGlzIGlzIHR5cGljYWxseSBoYW5kbGVkIGJ5IGFuCithc3NvY2lhdGVkIHZpZGVvNGxpbnV4IGRldmljZSwgZS5nLiA8ZW1waGFzaXMgcm9sZT0iYm9sZCI+L2Rldi92aWRlbzwvZW1waGFzaXM+LCB3aGljaCBhbGxvd3Mgc2NhbGluZyBhbmQgZGVmaW5pbmcgb3V0cHV0Cit3aW5kb3dzLgorPC9wYXJhPgorPHBhcmE+U29tZSBEVkIgY2FyZHMgZG9uJiM4MjE3O3QgaGF2ZSB0aGVpciBvd24gTVBFRyBkZWNvZGVyLCB3aGljaCByZXN1bHRzIGluIHRoZSBvbWlzc2lvbiBvZgordGhlIGF1ZGlvIGFuZCB2aWRlbyBkZXZpY2UgYXMgd2VsbCBhcyB0aGUgdmlkZW80bGludXggZGV2aWNlLgorPC9wYXJhPgorPHBhcmE+VGhlIGlvY3RscyB0aGF0IGRlYWwgd2l0aCBTUFVzIChzdWIgcGljdHVyZSB1bml0cykgYW5kIG5hdmlnYXRpb24gcGFja2V0cyBhcmUgb25seQorc3VwcG9ydGVkIG9uIHNvbWUgTVBFRyBkZWNvZGVycyBtYWRlIGZvciBEVkQgcGxheWJhY2suCis8L3BhcmE+Cis8cGFyYT4KK1RoZXNlIGlvY3RscyB3ZXJlIGFsc28gdXNlZCBieSBWNEwyIHRvIGNvbnRyb2wgTVBFRyBkZWNvZGVycyBpbXBsZW1lbnRlZCBpbiBWNEwyLiBUaGUgdXNlCitvZiB0aGVzZSBpb2N0bHMgZm9yIHRoYXQgcHVycG9zZSBoYXMgYmVlbiBtYWRlIG9ic29sZXRlIGFuZCBwcm9wZXIgVjRMMiBpb2N0bHMgb3IgY29udHJvbHMKK2hhdmUgYmVlbiBjcmVhdGVkIHRvIHJlcGxhY2UgdGhhdCBmdW5jdGlvbmFsaXR5LjwvcGFyYT4KKzxzZWN0aW9uIGlkPSJ2aWRlb190eXBlcyI+Cis8dGl0bGU+VmlkZW8gRGF0YSBUeXBlczwvdGl0bGU+CisKKzxzZWN0aW9uIGlkPSJ2aWRlby1mb3JtYXQtdCI+Cis8dGl0bGU+dmlkZW9fZm9ybWF0X3Q8L3RpdGxlPgorPHBhcmE+VGhlIDxjb25zdGFudD52aWRlb19mb3JtYXRfdDwvY29uc3RhbnQ+IGRhdGEgdHlwZSBkZWZpbmVkIGJ5Cis8L3BhcmE+Cis8cHJvZ3JhbWxpc3Rpbmc+Cit0eXBlZGVmIGVudW0geworCVZJREVPX0ZPUk1BVF80XzMsICAgICAvJiN4MjJDNjsgU2VsZWN0IDQ6MyBmb3JtYXQgJiN4MjJDNjsvCisJVklERU9fRk9STUFUXzE2XzksICAgIC8mI3gyMkM2OyBTZWxlY3QgMTY6OSBmb3JtYXQuICYjeDIyQzY7LworCVZJREVPX0ZPUk1BVF8yMjFfMSAgICAvJiN4MjJDNjsgMi4yMToxICYjeDIyQzY7LworfSB2aWRlb19mb3JtYXRfdDsKKzwvcHJvZ3JhbWxpc3Rpbmc+Cis8cGFyYT5pcyB1c2VkIGluIHRoZSBWSURFT19TRVRfRk9STUFUIGZ1bmN0aW9uICg/PykgdG8gdGVsbCB0aGUgZHJpdmVyIHdoaWNoIGFzcGVjdCByYXRpbwordGhlIG91dHB1dCBoYXJkd2FyZSAoZS5nLiBUVikgaGFzLiBJdCBpcyBhbHNvIHVzZWQgaW4gdGhlIGRhdGEgc3RydWN0dXJlcyB2aWRlb19zdGF0dXMKKyg/PykgcmV0dXJuZWQgYnkgVklERU9fR0VUX1NUQVRVUyAoPz8pIGFuZCB2aWRlb19ldmVudCAoPz8pIHJldHVybmVkIGJ5CitWSURFT19HRVRfRVZFTlQgKD8/KSB3aGljaCByZXBvcnQgYWJvdXQgdGhlIGRpc3BsYXkgZm9ybWF0IG9mIHRoZSBjdXJyZW50IHZpZGVvCitzdHJlYW0uCis8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJ2aWRlby1kaXNwbGF5Zm9ybWF0LXQiPgorPHRpdGxlPnZpZGVvX2Rpc3BsYXlmb3JtYXRfdDwvdGl0bGU+Cis8cGFyYT5JbiBjYXNlIHRoZSBkaXNwbGF5IGZvcm1hdCBvZiB0aGUgdmlkZW8gc3RyZWFtIGFuZCBvZiB0aGUgZGlzcGxheSBoYXJkd2FyZSBkaWZmZXIgdGhlCithcHBsaWNhdGlvbiBoYXMgdG8gc3BlY2lmeSBob3cgdG8gaGFuZGxlIHRoZSBjcm9wcGluZyBvZiB0aGUgcGljdHVyZS4gVGhpcyBjYW4gYmUgZG9uZSB1c2luZwordGhlIFZJREVPX1NFVF9ESVNQTEFZX0ZPUk1BVCBjYWxsICg/Pykgd2hpY2ggYWNjZXB0cworPC9wYXJhPgorPHByb2dyYW1saXN0aW5nPgordHlwZWRlZiBlbnVtIHsKKwlWSURFT19QQU5fU0NBTiwgICAgICAgLyYjeDIyQzY7IHVzZSBwYW4gYW5kIHNjYW4gZm9ybWF0ICYjeDIyQzY7LworCVZJREVPX0xFVFRFUl9CT1gsICAgICAvJiN4MjJDNjsgdXNlIGxldHRlcmJveCBmb3JtYXQgJiN4MjJDNjsvCisJVklERU9fQ0VOVEVSX0NVVF9PVVQgIC8mI3gyMkM2OyB1c2UgY2VudGVyIGN1dCBvdXQgZm9ybWF0ICYjeDIyQzY7LworfSB2aWRlb19kaXNwbGF5Zm9ybWF0X3Q7Cis8L3Byb2dyYW1saXN0aW5nPgorPHBhcmE+YXMgYXJndW1lbnQuCis8L3BhcmE+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJ2aWRlby1zdHJlYW0tc291cmNlLXQiPgorPHRpdGxlPnZpZGVvX3N0cmVhbV9zb3VyY2VfdDwvdGl0bGU+Cis8cGFyYT5UaGUgdmlkZW8gc3RyZWFtIHNvdXJjZSBpcyBzZXQgdGhyb3VnaCB0aGUgVklERU9fU0VMRUNUX1NPVVJDRSBjYWxsIGFuZCBjYW4gdGFrZQordGhlIGZvbGxvd2luZyB2YWx1ZXMsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHdlIGFyZSByZXBsYXlpbmcgZnJvbSBhbiBpbnRlcm5hbCAoZGVtdXhlcikgb3IKK2V4dGVybmFsICh1c2VyIHdyaXRlKSBzb3VyY2UuCis8L3BhcmE+Cis8cHJvZ3JhbWxpc3Rpbmc+Cit0eXBlZGVmIGVudW0geworCVZJREVPX1NPVVJDRV9ERU1VWCwgLyYjeDIyQzY7IFNlbGVjdCB0aGUgZGVtdXggYXMgdGhlIG1haW4gc291cmNlICYjeDIyQzY7LworCVZJREVPX1NPVVJDRV9NRU1PUlkgLyYjeDIyQzY7IElmIHRoaXMgc291cmNlIGlzIHNlbGVjdGVkLCB0aGUgc3RyZWFtCisJCQkgICAgICAgY29tZXMgZnJvbSB0aGUgdXNlciB0aHJvdWdoIHRoZSB3cml0ZQorCQkJICAgICAgIHN5c3RlbSBjYWxsICYjeDIyQzY7LworfSB2aWRlb19zdHJlYW1fc291cmNlX3Q7Cis8L3Byb2dyYW1saXN0aW5nPgorPHBhcmE+VklERU9fU09VUkNFX0RFTVVYIHNlbGVjdHMgdGhlIGRlbXVsdGlwbGV4ZXIgKGZlZCBlaXRoZXIgYnkgdGhlIGZyb250ZW5kIG9yIHRoZQorRFZSIGRldmljZSkgYXMgdGhlIHNvdXJjZSBvZiB0aGUgdmlkZW8gc3RyZWFtLiBJZiBWSURFT19TT1VSQ0VfTUVNT1JZCitpcyBzZWxlY3RlZCB0aGUgc3RyZWFtIGNvbWVzIGZyb20gdGhlIGFwcGxpY2F0aW9uIHRocm91Z2ggdGhlIDxlbXBoYXNpcyByb2xlPSJib2xkIj53cml0ZSgpPC9lbXBoYXNpcz4gc3lzdGVtCitjYWxsLgorPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0idmlkZW8tcGxheS1zdGF0ZS10Ij4KKzx0aXRsZT52aWRlb19wbGF5X3N0YXRlX3Q8L3RpdGxlPgorPHBhcmE+VGhlIGZvbGxvd2luZyB2YWx1ZXMgY2FuIGJlIHJldHVybmVkIGJ5IHRoZSBWSURFT19HRVRfU1RBVFVTIGNhbGwgcmVwcmVzZW50aW5nIHRoZQorc3RhdGUgb2YgdmlkZW8gcGxheWJhY2suCis8L3BhcmE+Cis8cHJvZ3JhbWxpc3Rpbmc+Cit0eXBlZGVmIGVudW0geworCVZJREVPX1NUT1BQRUQsIC8mI3gyMkM2OyBWaWRlbyBpcyBzdG9wcGVkICYjeDIyQzY7LworCVZJREVPX1BMQVlJTkcsIC8mI3gyMkM2OyBWaWRlbyBpcyBjdXJyZW50bHkgcGxheWluZyAmI3gyMkM2Oy8KKwlWSURFT19GUkVFWkVEICAvJiN4MjJDNjsgVmlkZW8gaXMgZnJlZXplZCAmI3gyMkM2Oy8KK30gdmlkZW9fcGxheV9zdGF0ZV90OworPC9wcm9ncmFtbGlzdGluZz4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9InZpZGVvLWNvbW1hbmQiPgorPHRpdGxlPnN0cnVjdCB2aWRlb19jb21tYW5kPC90aXRsZT4KKzxwYXJhPlRoZSBzdHJ1Y3R1cmUgbXVzdCBiZSB6ZXJvZWQgYmVmb3JlIHVzZSBieSB0aGUgYXBwbGljYXRpb24KK1RoaXMgZW5zdXJlcyBpdCBjYW4gYmUgZXh0ZW5kZWQgc2FmZWx5IGluIHRoZSBmdXR1cmUuPC9wYXJhPgorPHByb2dyYW1saXN0aW5nPgorc3RydWN0IHZpZGVvX2NvbW1hbmQgeworCV9fdTMyIGNtZDsKKwlfX3UzMiBmbGFnczsKKwl1bmlvbiB7CisJCXN0cnVjdCB7CisJCQlfX3U2NCBwdHM7CisJCX0gc3RvcDsKKworCQlzdHJ1Y3QgeworCQkJLyYjeDIyQzY7IDAgb3IgMTAwMCBzcGVjaWZpZXMgbm9ybWFsIHNwZWVkLAorCQkJICAgMSBzcGVjaWZpZXMgZm9yd2FyZCBzaW5nbGUgc3RlcHBpbmcsCisJCQkgICAtMSBzcGVjaWZpZXMgYmFja3dhcmQgc2luZ2xlIHN0ZXBwaW5nLAorCQkJICAgJmd0Oz4xOiBwbGF5YmFjayBhdCBzcGVlZC8xMDAwIG9mIHRoZSBub3JtYWwgc3BlZWQsCisJCQkgICAmbHQ7LTE6IHJldmVyc2UgcGxheWJhY2sgYXQgKC1zcGVlZC8xMDAwKSBvZiB0aGUgbm9ybWFsIHNwZWVkLiAmI3gyMkM2Oy8KKwkJCV9fczMyIHNwZWVkOworCQkJX191MzIgZm9ybWF0OworCQl9IHBsYXk7CisKKwkJc3RydWN0IHsKKwkJCV9fdTMyIGRhdGFbMTZdOworCQl9IHJhdzsKKwl9OworfTsKKzwvcHJvZ3JhbWxpc3Rpbmc+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJ2aWRlby1zaXplLXQiPgorPHRpdGxlPnZpZGVvX3NpemVfdDwvdGl0bGU+Cis8cHJvZ3JhbWxpc3Rpbmc+Cit0eXBlZGVmIHN0cnVjdCB7CisJaW50IHc7CisJaW50IGg7CisJdmlkZW9fZm9ybWF0X3QgYXNwZWN0X3JhdGlvOworfSB2aWRlb19zaXplX3Q7Cis8L3Byb2dyYW1saXN0aW5nPgorPC9zZWN0aW9uPgorCisKKzxzZWN0aW9uIGlkPSJ2aWRlby1ldmVudCI+Cis8dGl0bGU+c3RydWN0IHZpZGVvX2V2ZW50PC90aXRsZT4KKzxwYXJhPlRoZSBmb2xsb3dpbmcgaXMgdGhlIHN0cnVjdHVyZSBvZiBhIHZpZGVvIGV2ZW50IGFzIGl0IGlzIHJldHVybmVkIGJ5IHRoZSBWSURFT19HRVRfRVZFTlQKK2NhbGwuCis8L3BhcmE+Cis8cHJvZ3JhbWxpc3Rpbmc+CitzdHJ1Y3QgdmlkZW9fZXZlbnQgeworCV9fczMyIHR5cGU7CisjZGVmaW5lIFZJREVPX0VWRU5UX1NJWkVfQ0hBTkdFRAkxCisjZGVmaW5lIFZJREVPX0VWRU5UX0ZSQU1FX1JBVEVfQ0hBTkdFRAkyCisjZGVmaW5lIFZJREVPX0VWRU5UX0RFQ09ERVJfU1RPUFBFRCAJMworI2RlZmluZSBWSURFT19FVkVOVF9WU1lOQyAJCTQKKwlfX2tlcm5lbF90aW1lX3QgdGltZXN0YW1wOworCXVuaW9uIHsKKwkJdmlkZW9fc2l6ZV90IHNpemU7CisJCXVuc2lnbmVkIGludCBmcmFtZV9yYXRlOwkvJiN4MjJDNjsgaW4gZnJhbWVzIHBlciAxMDAwc2VjICYjeDIyQzY7LworCQl1bnNpZ25lZCBjaGFyIHZzeW5jX2ZpZWxkOwkvJiN4MjJDNjsgdW5rbm93bi9vZGQvZXZlbi9wcm9ncmVzc2l2ZSAmI3gyMkM2Oy8KKwl9IHU7Cit9OworPC9wcm9ncmFtbGlzdGluZz4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9InZpZGVvLXN0YXR1cyI+Cis8dGl0bGU+c3RydWN0IHZpZGVvX3N0YXR1czwvdGl0bGU+Cis8cGFyYT5UaGUgVklERU9fR0VUX1NUQVRVUyBjYWxsIHJldHVybnMgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgaW5mb3JtaW5nIGFib3V0IHZhcmlvdXMKK3N0YXRlcyBvZiB0aGUgcGxheWJhY2sgb3BlcmF0aW9uLgorPC9wYXJhPgorPHByb2dyYW1saXN0aW5nPgorc3RydWN0IHZpZGVvX3N0YXR1cyB7CisJaW50ICAgICAgICAgICAgICAgICAgIHZpZGVvX2JsYW5rOyAgIC8mI3gyMkM2OyBibGFuayB2aWRlbyBvbiBmcmVlemU/ICYjeDIyQzY7LworCXZpZGVvX3BsYXlfc3RhdGVfdCAgICBwbGF5X3N0YXRlOyAgICAvJiN4MjJDNjsgY3VycmVudCBzdGF0ZSBvZiBwbGF5YmFjayAmI3gyMkM2Oy8KKwl2aWRlb19zdHJlYW1fc291cmNlX3Qgc3RyZWFtX3NvdXJjZTsgLyYjeDIyQzY7IGN1cnJlbnQgc291cmNlIChkZW11eC9tZW1vcnkpICYjeDIyQzY7LworCXZpZGVvX2Zvcm1hdF90ICAgICAgICB2aWRlb19mb3JtYXQ7ICAvJiN4MjJDNjsgY3VycmVudCBhc3BlY3QgcmF0aW8gb2Ygc3RyZWFtICYjeDIyQzY7LworCXZpZGVvX2Rpc3BsYXlmb3JtYXRfdCBkaXNwbGF5X2Zvcm1hdDsvJiN4MjJDNjsgc2VsZWN0ZWQgY3JvcHBpbmcgbW9kZSAmI3gyMkM2Oy8KK307Cis8L3Byb2dyYW1saXN0aW5nPgorPHBhcmE+SWYgdmlkZW9fYmxhbmsgaXMgc2V0IHZpZGVvIHdpbGwgYmUgYmxhbmtlZCBvdXQgaWYgdGhlIGNoYW5uZWwgaXMgY2hhbmdlZCBvciBpZiBwbGF5YmFjayBpcworc3RvcHBlZC4gT3RoZXJ3aXNlLCB0aGUgbGFzdCBwaWN0dXJlIHdpbGwgYmUgZGlzcGxheWVkLiBwbGF5X3N0YXRlIGluZGljYXRlcyBpZiB0aGUgdmlkZW8gaXMKK2N1cnJlbnRseSBmcm96ZW4sIHN0b3BwZWQsIG9yIGJlaW5nIHBsYXllZCBiYWNrLiBUaGUgc3RyZWFtX3NvdXJjZSBjb3JyZXNwb25kcyB0byB0aGUgc2VsZXRlZAorc291cmNlIGZvciB0aGUgdmlkZW8gc3RyZWFtLiBJdCBjYW4gY29tZSBlaXRoZXIgZnJvbSB0aGUgZGVtdWx0aXBsZXhlciBvciBmcm9tIG1lbW9yeS4KK1RoZSB2aWRlb19mb3JtYXQgaW5kaWNhdGVzIHRoZSBhc3BlY3QgcmF0aW8gKG9uZSBvZiA0OjMgb3IgMTY6OSkgb2YgdGhlIGN1cnJlbnRseQorcGxheWVkIHZpZGVvIHN0cmVhbS4gRmluYWxseSwgZGlzcGxheV9mb3JtYXQgY29ycmVzcG9uZHMgdG8gdGhlIHNlbGVjdGVkIGNyb3BwaW5nCittb2RlIGluIGNhc2UgdGhlIHNvdXJjZSB2aWRlbyBmb3JtYXQgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBmb3JtYXQgb2YgdGhlIG91dHB1dAorZGV2aWNlLgorPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0idmlkZW8tc3RpbGwtcGljdHVyZSI+Cis8dGl0bGU+c3RydWN0IHZpZGVvX3N0aWxsX3BpY3R1cmU8L3RpdGxlPgorPHBhcmE+QW4gSS1mcmFtZSBkaXNwbGF5ZWQgdmlhIHRoZSBWSURFT19TVElMTFBJQ1RVUkUgY2FsbCBpcyBwYXNzZWQgb24gd2l0aGluIHRoZQorZm9sbG93aW5nIHN0cnVjdHVyZS4KKzwvcGFyYT4KKzxwcm9ncmFtbGlzdGluZz4KKy8mI3gyMkM2OyBwb2ludGVyIHRvIGFuZCBzaXplIG9mIGEgc2luZ2xlIGlmcmFtZSBpbiBtZW1vcnkgJiN4MjJDNjsvCitzdHJ1Y3QgdmlkZW9fc3RpbGxfcGljdHVyZSB7CisJY2hhciAmI3gyMkM2O2lGcmFtZTsgICAgICAgIC8mI3gyMkM2OyBwb2ludGVyIHRvIGEgc2luZ2xlIGlmcmFtZSBpbiBtZW1vcnkgJiN4MjJDNjsvCisJaW50MzJfdCBzaXplOworfTsKKzwvcHJvZ3JhbWxpc3Rpbmc+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJ2aWRlb19jYXBzIj4KKzx0aXRsZT52aWRlbyBjYXBhYmlsaXRpZXM8L3RpdGxlPgorPHBhcmE+QSBjYWxsIHRvIFZJREVPX0dFVF9DQVBBQklMSVRJRVMgcmV0dXJucyBhbiB1bnNpZ25lZCBpbnRlZ2VyIHdpdGggdGhlIGZvbGxvd2luZworYml0cyBzZXQgYWNjb3JkaW5nIHRvIHRoZSBoYXJkd2FyZXMgY2FwYWJpbGl0aWVzLgorPC9wYXJhPgorPHByb2dyYW1saXN0aW5nPgorIC8mI3gyMkM2OyBiaXQgZGVmaW5pdGlvbnMgZm9yIGNhcGFiaWxpdGllczogJiN4MjJDNjsvCisgLyYjeDIyQzY7IGNhbiB0aGUgaGFyZHdhcmUgZGVjb2RlIE1QRUcxIGFuZC9vciBNUEVHMj8gJiN4MjJDNjsvCisgI2RlZmluZSBWSURFT19DQVBfTVBFRzEgICAxCisgI2RlZmluZSBWSURFT19DQVBfTVBFRzIgICAyCisgLyYjeDIyQzY7IGNhbiB5b3Ugc2VuZCBhIHN5c3RlbSBhbmQvb3IgcHJvZ3JhbSBzdHJlYW0gdG8gdmlkZW8gZGV2aWNlPworICAgICh5b3Ugc3RpbGwgaGF2ZSB0byBvcGVuIHRoZSB2aWRlbyBhbmQgdGhlIGF1ZGlvIGRldmljZSBidXQgb25seQorICAgICBzZW5kIHRoZSBzdHJlYW0gdG8gdGhlIHZpZGVvIGRldmljZSkgJiN4MjJDNjsvCisgI2RlZmluZSBWSURFT19DQVBfU1lTICAgICA0CisgI2RlZmluZSBWSURFT19DQVBfUFJPRyAgICA4CisgLyYjeDIyQzY7IGNhbiB0aGUgZHJpdmVyIGFsc28gaGFuZGxlIFNQVSwgTkFWSSBhbmQgQ1NTIGVuY29kZWQgZGF0YT8KKyAgICAoQ1NTIEFQSSBpcyBub3QgcHJlc2VudCB5ZXQpICYjeDIyQzY7LworICNkZWZpbmUgVklERU9fQ0FQX1NQVSAgICAxNgorICNkZWZpbmUgVklERU9fQ0FQX05BVkkgICAzMgorICNkZWZpbmUgVklERU9fQ0FQX0NTUyAgICA2NAorPC9wcm9ncmFtbGlzdGluZz4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9InZpZGVvLXN5c3RlbSI+Cis8dGl0bGU+dmlkZW9fc3lzdGVtX3Q8L3RpdGxlPgorPHBhcmE+QSBjYWxsIHRvIFZJREVPX1NFVF9TWVNURU0gc2V0cyB0aGUgZGVzaXJlZCB2aWRlbyBzeXN0ZW0gZm9yIFRWIG91dHB1dC4gVGhlCitmb2xsb3dpbmcgc3lzdGVtIHR5cGVzIGNhbiBiZSBzZXQ6Cis8L3BhcmE+Cis8cHJvZ3JhbWxpc3Rpbmc+Cit0eXBlZGVmIGVudW0geworCSBWSURFT19TWVNURU1fUEFMLAorCSBWSURFT19TWVNURU1fTlRTQywKKwkgVklERU9fU1lTVEVNX1BBTE4sCisJIFZJREVPX1NZU1RFTV9QQUxOYywKKwkgVklERU9fU1lTVEVNX1BBTE0sCisJIFZJREVPX1NZU1RFTV9OVFNDNjAsCisJIFZJREVPX1NZU1RFTV9QQUw2MCwKKwkgVklERU9fU1lTVEVNX1BBTE02MAorfSB2aWRlb19zeXN0ZW1fdDsKKzwvcHJvZ3JhbWxpc3Rpbmc+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJ2aWRlby1oaWdobGlnaHQiPgorPHRpdGxlPnN0cnVjdCB2aWRlb19oaWdobGlnaHQ8L3RpdGxlPgorPHBhcmE+Q2FsbGluZyB0aGUgaW9jdGwgVklERU9fU0VUX0hJR0hMSUdIVFMgcG9zdHMgdGhlIFNQVSBoaWdobGlnaHQgaW5mb3JtYXRpb24uIFRoZQorY2FsbCBleHBlY3RzIHRoZSBmb2xsb3dpbmcgZm9ybWF0IGZvciB0aGF0IGluZm9ybWF0aW9uOgorPC9wYXJhPgorPHByb2dyYW1saXN0aW5nPgorIHR5cGVkZWYKKyBzdHJ1Y3QgdmlkZW9faGlnaGxpZ2h0IHsKKwkgYm9vbGVhbiBhY3RpdmU7ICAgICAgLyYjeDIyQzY7ICAgIDE9c2hvdyBoaWdobGlnaHQsIDA9aGlkZSBoaWdobGlnaHQgJiN4MjJDNjsvCisJIHVpbnQ4X3QgY29udHJhc3QxOyAgIC8mI3gyMkM2OyAgICA3LSA0ICBQYXR0ZXJuIHBpeGVsIGNvbnRyYXN0ICYjeDIyQzY7LworCQkJICAgICAgLyYjeDIyQzY7ICAgIDMtIDAgIEJhY2tncm91bmQgcGl4ZWwgY29udHJhc3QgJiN4MjJDNjsvCisJIHVpbnQ4X3QgY29udHJhc3QyOyAgIC8mI3gyMkM2OyAgICA3LSA0ICBFbXBoYXNpcyBwaXhlbC0yIGNvbnRyYXN0ICYjeDIyQzY7LworCQkJICAgICAgLyYjeDIyQzY7ICAgIDMtIDAgIEVtcGhhc2lzIHBpeGVsLTEgY29udHJhc3QgJiN4MjJDNjsvCisJIHVpbnQ4X3QgY29sb3IxOyAgICAgIC8mI3gyMkM2OyAgICA3LSA0ICBQYXR0ZXJuIHBpeGVsIGNvbG9yICYjeDIyQzY7LworCQkJICAgICAgLyYjeDIyQzY7ICAgIDMtIDAgIEJhY2tncm91bmQgcGl4ZWwgY29sb3IgJiN4MjJDNjsvCisJIHVpbnQ4X3QgY29sb3IyOyAgICAgIC8mI3gyMkM2OyAgICA3LSA0ICBFbXBoYXNpcyBwaXhlbC0yIGNvbG9yICYjeDIyQzY7LworCQkJICAgICAgLyYjeDIyQzY7ICAgIDMtIDAgIEVtcGhhc2lzIHBpeGVsLTEgY29sb3IgJiN4MjJDNjsvCisJIHVpbnQzMl90IHlwb3M7ICAgICAgIC8mI3gyMkM2OyAgIDIzLTIyICBhdXRvIGFjdGlvbiBtb2RlICYjeDIyQzY7LworCQkJICAgICAgLyYjeDIyQzY7ICAgMjEtMTIgIHN0YXJ0IHkgJiN4MjJDNjsvCisJCQkgICAgICAvJiN4MjJDNjsgICAgOS0gMCAgZW5kIHkgJiN4MjJDNjsvCisJIHVpbnQzMl90IHhwb3M7ICAgICAgIC8mI3gyMkM2OyAgIDIzLTIyICBidXR0b24gY29sb3IgbnVtYmVyICYjeDIyQzY7LworCQkJICAgICAgLyYjeDIyQzY7ICAgMjEtMTIgIHN0YXJ0IHggJiN4MjJDNjsvCisJCQkgICAgICAvJiN4MjJDNjsgICAgOS0gMCAgZW5kIHggJiN4MjJDNjsvCisgfSB2aWRlb19oaWdobGlnaHRfdDsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisKKzwvc2VjdGlvbj4KKzxzZWN0aW9uIGlkPSJ2aWRlby1zcHUiPgorPHRpdGxlPnN0cnVjdCB2aWRlb19zcHU8L3RpdGxlPgorPHBhcmE+Q2FsbGluZyBWSURFT19TRVRfU1BVIGRlYWN0aXZhdGVzIG9yIGFjdGl2YXRlcyBTUFUgZGVjb2RpbmcsIGFjY29yZGluZyB0byB0aGUKK2ZvbGxvd2luZyBmb3JtYXQ6Cis8L3BhcmE+Cis8cHJvZ3JhbWxpc3Rpbmc+CisgdHlwZWRlZgorIHN0cnVjdCB2aWRlb19zcHUgeworCSBib29sZWFuIGFjdGl2ZTsKKwkgaW50IHN0cmVhbV9pZDsKKyB9IHZpZGVvX3NwdV90OworPC9wcm9ncmFtbGlzdGluZz4KKworPC9zZWN0aW9uPgorPHNlY3Rpb24gaWQ9InZpZGVvLXNwdS1wYWxldHRlIj4KKzx0aXRsZT5zdHJ1Y3QgdmlkZW9fc3B1X3BhbGV0dGU8L3RpdGxlPgorPHBhcmE+VGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgaXMgdXNlZCB0byBzZXQgdGhlIFNQVSBwYWxldHRlIGJ5IGNhbGxpbmcgVklERU9fU1BVX1BBTEVUVEU6Cis8L3BhcmE+Cis8cHJvZ3JhbWxpc3Rpbmc+CisgdHlwZWRlZgorIHN0cnVjdCB2aWRlb19zcHVfcGFsZXR0ZSB7CisJIGludCBsZW5ndGg7CisJIHVpbnQ4X3QgJiN4MjJDNjtwYWxldHRlOworIH0gdmlkZW9fc3B1X3BhbGV0dGVfdDsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisKKzwvc2VjdGlvbj4KKzxzZWN0aW9uIGlkPSJ2aWRlby1uYXZpLXBhY2siPgorPHRpdGxlPnN0cnVjdCB2aWRlb19uYXZpX3BhY2s8L3RpdGxlPgorPHBhcmE+SW4gb3JkZXIgdG8gZ2V0IHRoZSBuYXZpZ2F0aW9uYWwgZGF0YSB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZSBoYXMgdG8gYmUgcGFzc2VkIHRvIHRoZSBpb2N0bAorVklERU9fR0VUX05BVkk6Cis8L3BhcmE+Cis8cHJvZ3JhbWxpc3Rpbmc+CisgdHlwZWRlZgorIHN0cnVjdCB2aWRlb19uYXZpX3BhY2sgeworCSBpbnQgbGVuZ3RoOyAgICAgICAgIC8mI3gyMkM2OyAwIC4uLiAxMDI0ICYjeDIyQzY7LworCSB1aW50OF90IGRhdGFbMTAyNF07CisgfSB2aWRlb19uYXZpX3BhY2tfdDsKKzwvcHJvZ3JhbWxpc3Rpbmc+Cis8L3NlY3Rpb24+CisKKworPHNlY3Rpb24gaWQ9InZpZGVvLWF0dHJpYnV0ZXMtdCI+Cis8dGl0bGU+dmlkZW9fYXR0cmlidXRlc190PC90aXRsZT4KKzxwYXJhPlRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBjYW4gYmUgc2V0IGJ5IGEgY2FsbCB0byBWSURFT19TRVRfQVRUUklCVVRFUzoKKzwvcGFyYT4KKzxwcm9ncmFtbGlzdGluZz4KKyB0eXBlZGVmIHVpbnQxNl90IHZpZGVvX2F0dHJpYnV0ZXNfdDsKKyAvJiN4MjJDNjsgICBiaXRzOiBkZXNjci4gJiN4MjJDNjsvCisgLyYjeDIyQzY7ICAgMTUtMTQgVmlkZW8gY29tcHJlc3Npb24gbW9kZSAoMD1NUEVHLTEsIDE9TVBFRy0yKSAmI3gyMkM2Oy8KKyAvJiN4MjJDNjsgICAxMy0xMiBUViBzeXN0ZW0gKDA9NTI1LzYwLCAxPTYyNS81MCkgJiN4MjJDNjsvCisgLyYjeDIyQzY7ICAgMTEtMTAgQXNwZWN0IHJhdGlvICgwPTQ6MywgMz0xNjo5KSAmI3gyMkM2Oy8KKyAvJiN4MjJDNjsgICAgOS0gOCBwZXJtaXR0ZWQgZGlzcGxheSBtb2RlIG9uIDQ6MyBtb25pdG9yICgwPWJvdGgsIDE9b25seSBwYW4tc2NhICYjeDIyQzY7LworIC8mI3gyMkM2OyAgICA3ICAgIGxpbmUgMjEtMSBkYXRhIHByZXNlbnQgaW4gR09QICgxPXllcywgMD1ubykgJiN4MjJDNjsvCisgLyYjeDIyQzY7ICAgIDYgICAgbGluZSAyMS0yIGRhdGEgcHJlc2VudCBpbiBHT1AgKDE9eWVzLCAwPW5vKSAmI3gyMkM2Oy8KKyAvJiN4MjJDNjsgICAgNS0gMyBzb3VyY2UgcmVzb2x1dGlvbiAoMD03MjB4NDgwLzU3NiwgMT03MDR4NDgwLzU3NiwgMj0zNTJ4NDgwLzU3ICYjeDIyQzY7LworIC8mI3gyMkM2OyAgICAyICAgIHNvdXJjZSBsZXR0ZXJib3hlZCAoMT15ZXMsIDA9bm8pICYjeDIyQzY7LworIC8mI3gyMkM2OyAgICAwICAgIGZpbG0vY2FtZXJhIG1vZGUgKDA9Y2FtZXJhLCAxPWZpbG0gKDYyNS81MCBvbmx5KSkgJiN4MjJDNjsvCis8L3Byb2dyYW1saXN0aW5nPgorPC9zZWN0aW9uPjwvc2VjdGlvbj4KKworCis8c2VjdGlvbiBpZD0idmlkZW9fZnVuY3Rpb25fY2FsbHMiPgorPHRpdGxlPlZpZGVvIEZ1bmN0aW9uIENhbGxzPC90aXRsZT4KKworCis8c2VjdGlvbiBpZD0idmlkZW9fZm9wZW4iPgorPHRpdGxlPm9wZW4oKTwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIHN5c3RlbSBjYWxsIG9wZW5zIGEgbmFtZWQgdmlkZW8gZGV2aWNlIChlLmcuIC9kZXYvZHZiL2FkYXB0ZXIwL3ZpZGVvMCkKKyBmb3Igc3Vic2VxdWVudCB1c2UuPC9wYXJhPgorPHBhcmE+V2hlbiBhbiBvcGVuKCkgY2FsbCBoYXMgc3VjY2VlZGVkLCB0aGUgZGV2aWNlIHdpbGwgYmUgcmVhZHkgZm9yIHVzZS4KKyBUaGUgc2lnbmlmaWNhbmNlIG9mIGJsb2NraW5nIG9yIG5vbi1ibG9ja2luZyBtb2RlIGlzIGRlc2NyaWJlZCBpbiB0aGUKKyBkb2N1bWVudGF0aW9uIGZvciBmdW5jdGlvbnMgd2hlcmUgdGhlcmUgaXMgYSBkaWZmZXJlbmNlLiBJdCBkb2VzIG5vdCBhZmZlY3QgdGhlCisgc2VtYW50aWNzIG9mIHRoZSBvcGVuKCkgY2FsbCBpdHNlbGYuIEEgZGV2aWNlIG9wZW5lZCBpbiBibG9ja2luZyBtb2RlIGNhbiBsYXRlcgorIGJlIHB1dCBpbnRvIG5vbi1ibG9ja2luZyBtb2RlIChhbmQgdmljZSB2ZXJzYSkgdXNpbmcgdGhlIEZfU0VURkwgY29tbWFuZAorIG9mIHRoZSBmY250bCBzeXN0ZW0gY2FsbC4gVGhpcyBpcyBhIHN0YW5kYXJkIHN5c3RlbSBjYWxsLCBkb2N1bWVudGVkIGluIHRoZSBMaW51eAorIG1hbnVhbCBwYWdlIGZvciBmY250bC4gT25seSBvbmUgdXNlciBjYW4gb3BlbiB0aGUgVmlkZW8gRGV2aWNlIGluIE9fUkRXUgorIG1vZGUuIEFsbCBvdGhlciBhdHRlbXB0cyB0byBvcGVuIHRoZSBkZXZpY2UgaW4gdGhpcyBtb2RlIHdpbGwgZmFpbCwgYW5kIGFuCisgZXJyb3ItY29kZSB3aWxsIGJlIHJldHVybmVkLiBJZiB0aGUgVmlkZW8gRGV2aWNlIGlzIG9wZW5lZCBpbiBPX1JET05MWQorIG1vZGUsIHRoZSBvbmx5IGlvY3RsIGNhbGwgdGhhdCBjYW4gYmUgdXNlZCBpcyBWSURFT19HRVRfU1RBVFVTLiBBbGwgb3RoZXIKKyBjYWxsIHdpbGwgcmV0dXJuIGFuIGVycm9yIGNvZGUuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKworPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IG9wZW4oY29uc3QgY2hhciAmI3gyMkM2O2RldmljZU5hbWUsIGludCBmbGFncyk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+Y29uc3QgY2hhcgorICpkZXZpY2VOYW1lPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5OYW1lIG9mIHNwZWNpZmljIHZpZGVvIGRldmljZS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZsYWdzPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5BIGJpdC13aXNlIE9SIG9mIHRoZSBmb2xsb3dpbmcgZmxhZ3M6PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+T19SRE9OTFkgcmVhZC1vbmx5IGFjY2VzczwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPk9fUkRXUiByZWFkL3dyaXRlIGFjY2VzczwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPk9fTk9OQkxPQ0sgb3BlbiBpbiBub24tYmxvY2tpbmcgbW9kZTwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPihibG9ja2luZyBtb2RlIGlzIHRoZSBkZWZhdWx0KTwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5SRVRVUk4gVkFMVUU8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVOT0RFVjwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RGV2aWNlIGRyaXZlciBub3QgbG9hZGVkL2F2YWlsYWJsZS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RUlOVEVSTkFMPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5JbnRlcm5hbCBlcnJvci48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RUJVU1k8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkRldmljZSBvciByZXNvdXJjZSBidXN5LjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FSU5WQUw8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkludmFsaWQgYXJndW1lbnQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKworPC9zZWN0aW9uPgorPHNlY3Rpb24gaWQ9InZpZGVvX2ZjbG9zZSI+Cis8dGl0bGU+Y2xvc2UoKTwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIHN5c3RlbSBjYWxsIGNsb3NlcyBhIHByZXZpb3VzbHkgb3BlbmVkIHZpZGVvIGRldmljZS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGNsb3NlKGludCBmZCk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UkVUVVJOIFZBTFVFPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FQkFERjwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+ZmQgaXMgbm90IGEgdmFsaWQgb3BlbiBmaWxlIGRlc2NyaXB0b3IuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKworPC9zZWN0aW9uPgorPHNlY3Rpb24gaWQ9InZpZGVvX2Z3cml0ZSI+Cis8dGl0bGU+d3JpdGUoKTwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIHN5c3RlbSBjYWxsIGNhbiBvbmx5IGJlIHVzZWQgaWYgVklERU9fU09VUkNFX01FTU9SWSBpcyBzZWxlY3RlZAorIGluIHRoZSBpb2N0bCBjYWxsIFZJREVPX1NFTEVDVF9TT1VSQ0UuIFRoZSBkYXRhIHByb3ZpZGVkIHNoYWxsIGJlIGluCisgUEVTIGZvcm1hdCwgdW5sZXNzIHRoZSBjYXBhYmlsaXR5IGFsbG93cyBvdGhlciBmb3JtYXRzLiBJZiBPX05PTkJMT0NLIGlzCisgbm90IHNwZWNpZmllZCB0aGUgZnVuY3Rpb24gd2lsbCBibG9jayB1bnRpbCBidWZmZXIgc3BhY2UgaXMgYXZhaWxhYmxlLiBUaGUgYW1vdW50Cisgb2YgZGF0YSB0byBiZSB0cmFuc2ZlcnJlZCBpcyBpbXBsaWVkIGJ5IGNvdW50LjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5zaXplX3Qgd3JpdGUoaW50IGZkLCBjb25zdCB2b2lkICYjeDIyQzY7YnVmLCBzaXplX3QgY291bnQpOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPnZvaWQgKmJ1ZjwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+UG9pbnRlciB0byB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIFBFUyBkYXRhLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5zaXplX3QgY291bnQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlNpemUgb2YgYnVmLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5SRVRVUk4gVkFMVUU8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVQRVJNPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5Nb2RlIFZJREVPX1NPVVJDRV9NRU1PUlkgbm90IHNlbGVjdGVkLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FTk9NRU08L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkF0dGVtcHRlZCB0byB3cml0ZSBtb3JlIGRhdGEgdGhhbiB0aGUgaW50ZXJuYWwgYnVmZmVyIGNhbgorIGhvbGQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVCQURGPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5mZCBpcyBub3QgYSB2YWxpZCBvcGVuIGZpbGUgZGVzY3JpcHRvci48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorCis8L3NlY3Rpb24+PHNlY3Rpb24gaWQ9IlZJREVPX1NUT1AiCityb2xlPSJzdWJzZWN0aW9uIj48dGl0bGU+VklERU9fU1RPUDwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPHBhcmE+VGhpcyBpb2N0bCBpcyBmb3IgRFZCIGRldmljZXMgb25seS4gVG8gY29udHJvbCBhIFY0TDIgZGVjb2RlciB1c2UgdGhlIFY0TDIKKyZWSURJT0MtREVDT0RFUi1DTUQ7IGluc3RlYWQuPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIGNhbGwgYXNrcyB0aGUgVmlkZW8gRGV2aWNlIHRvIHN0b3AgcGxheWluZyB0aGUgY3VycmVudCBzdHJlYW0uCisgRGVwZW5kaW5nIG9uIHRoZSBpbnB1dCBwYXJhbWV0ZXIsIHRoZSBzY3JlZW4gY2FuIGJlIGJsYW5rZWQgb3V0IG9yIGRpc3BsYXlpbmcKKyB0aGUgbGFzdCBkZWNvZGVkIGZyYW1lLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoZmQsIGludCByZXF1ZXN0ID0gVklERU9fU1RPUCwgYm9vbGVhbgorIG1vZGUpOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgVklERU9fU1RPUCBmb3IgdGhpcyBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5Cb29sZWFuIG1vZGU8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkluZGljYXRlcyBob3cgdGhlIHNjcmVlbiBzaGFsbCBiZSBoYW5kbGVkLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRSVUU6IEJsYW5rIHNjcmVlbiB3aGVuIHN0b3AuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RkFMU0U6IFNob3cgbGFzdCBkZWNvZGVkIGZyYW1lLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CismcmV0dXJuLXZhbHVlLWR2YjsKKworPC9zZWN0aW9uPjxzZWN0aW9uIGlkPSJWSURFT19QTEFZIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPlZJREVPX1BMQVk8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxwYXJhPlRoaXMgaW9jdGwgaXMgZm9yIERWQiBkZXZpY2VzIG9ubHkuIFRvIGNvbnRyb2wgYSBWNEwyIGRlY29kZXIgdXNlIHRoZSBWNEwyCismVklESU9DLURFQ09ERVItQ01EOyBpbnN0ZWFkLjwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBjYWxsIGFza3MgdGhlIFZpZGVvIERldmljZSB0byBzdGFydCBwbGF5aW5nIGEgdmlkZW8gc3RyZWFtIGZyb20gdGhlCisgc2VsZWN0ZWQgc291cmNlLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoZmQsIGludCByZXF1ZXN0ID0gVklERU9fUExBWSk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyBWSURFT19QTEFZIGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworCis8L3NlY3Rpb24+PHNlY3Rpb24gaWQ9IlZJREVPX0ZSRUVaRSIKK3JvbGU9InN1YnNlY3Rpb24iPjx0aXRsZT5WSURFT19GUkVFWkU8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxwYXJhPlRoaXMgaW9jdGwgaXMgZm9yIERWQiBkZXZpY2VzIG9ubHkuIFRvIGNvbnRyb2wgYSBWNEwyIGRlY29kZXIgdXNlIHRoZSBWNEwyCismVklESU9DLURFQ09ERVItQ01EOyBpbnN0ZWFkLjwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBjYWxsIHN1c3BlbmRzIHRoZSBsaXZlIHZpZGVvIHN0cmVhbSBiZWluZyBwbGF5ZWQuIERlY29kaW5nCisgYW5kIHBsYXlpbmcgYXJlIGZyb3plbi4gSXQgaXMgdGhlbiBwb3NzaWJsZSB0byByZXN0YXJ0IHRoZSBkZWNvZGluZworIGFuZCBwbGF5aW5nIHByb2Nlc3Mgb2YgdGhlIHZpZGVvIHN0cmVhbSB1c2luZyB0aGUgVklERU9fQ09OVElOVUUKKyBjb21tYW5kLiBJZiBWSURFT19TT1VSQ0VfTUVNT1JZIGlzIHNlbGVjdGVkIGluIHRoZSBpb2N0bCBjYWxsCisgVklERU9fU0VMRUNUX1NPVVJDRSwgdGhlIERWQiBzdWJzeXN0ZW0gd2lsbCBub3QgZGVjb2RlIGFueSBtb3JlCisgZGF0YSB1bnRpbCB0aGUgaW9jdGwgY2FsbCBWSURFT19DT05USU5VRSBvciBWSURFT19QTEFZIGlzIHBlcmZvcm1lZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGlvY3RsKGZkLCBpbnQgcmVxdWVzdCA9IFZJREVPX0ZSRUVaRSk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyBWSURFT19GUkVFWkUgZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7CisKKzwvc2VjdGlvbj48c2VjdGlvbiBpZD0iVklERU9fQ09OVElOVUUiCityb2xlPSJzdWJzZWN0aW9uIj48dGl0bGU+VklERU9fQ09OVElOVUU8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxwYXJhPlRoaXMgaW9jdGwgaXMgZm9yIERWQiBkZXZpY2VzIG9ubHkuIFRvIGNvbnRyb2wgYSBWNEwyIGRlY29kZXIgdXNlIHRoZSBWNEwyCismVklESU9DLURFQ09ERVItQ01EOyBpbnN0ZWFkLjwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBjYWxsIHJlc3RhcnRzIGRlY29kaW5nIGFuZCBwbGF5aW5nIHByb2Nlc3NlcyBvZiB0aGUgdmlkZW8gc3RyZWFtCisgd2hpY2ggd2FzIHBsYXllZCBiZWZvcmUgYSBjYWxsIHRvIFZJREVPX0ZSRUVaRSB3YXMgbWFkZS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGlvY3RsKGZkLCBpbnQgcmVxdWVzdCA9IFZJREVPX0NPTlRJTlVFKTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIFZJREVPX0NPTlRJTlVFIGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworCis8L3NlY3Rpb24+PHNlY3Rpb24gaWQ9IlZJREVPX1NFTEVDVF9TT1VSQ0UiCityb2xlPSJzdWJzZWN0aW9uIj48dGl0bGU+VklERU9fU0VMRUNUX1NPVVJDRTwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPHBhcmE+VGhpcyBpb2N0bCBpcyBmb3IgRFZCIGRldmljZXMgb25seS4gVGhpcyBpb2N0bCB3YXMgYWxzbyBzdXBwb3J0ZWQgYnkgdGhlCitWNEwyIGl2dHYgZHJpdmVyLCBidXQgdGhhdCBoYXMgYmVlbiByZXBsYWNlZCBieSB0aGUgaXZ0di1zcGVjaWZpYworPGNvbnN0YW50PklWVFZfSU9DX1BBU1NUSFJPVUdIX01PREU8L2NvbnN0YW50PiBpb2N0bC48L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgY2FsbCBpbmZvcm1zIHRoZSB2aWRlbyBkZXZpY2Ugd2hpY2ggc291cmNlIHNoYWxsIGJlIHVzZWQgZm9yIHRoZSBpbnB1dAorIGRhdGEuIFRoZSBwb3NzaWJsZSBzb3VyY2VzIGFyZSBkZW11eCBvciBtZW1vcnkuIElmIG1lbW9yeSBpcyBzZWxlY3RlZCwgdGhlCisgZGF0YSBpcyBmZWQgdG8gdGhlIHZpZGVvIGRldmljZSB0aHJvdWdoIHRoZSB3cml0ZSBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoZmQsIGludCByZXF1ZXN0ID0gVklERU9fU0VMRUNUX1NPVVJDRSwKKyB2aWRlb19zdHJlYW1fc291cmNlX3Qgc291cmNlKTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIFZJREVPX1NFTEVDVF9TT1VSQ0UgZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+dmlkZW9fc3RyZWFtX3NvdXJjZV90Cisgc291cmNlPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5JbmRpY2F0ZXMgd2hpY2ggc291cmNlIHNoYWxsIGJlIHVzZWQgZm9yIHRoZSBWaWRlbyBzdHJlYW0uPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworCis8L3NlY3Rpb24+PHNlY3Rpb24gaWQ9IlZJREVPX1NFVF9CTEFOSyIKK3JvbGU9InN1YnNlY3Rpb24iPjx0aXRsZT5WSURFT19TRVRfQkxBTks8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBjYWxsIGFza3MgdGhlIFZpZGVvIERldmljZSB0byBibGFuayBvdXQgdGhlIHBpY3R1cmUuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bChmZCwgaW50IHJlcXVlc3QgPSBWSURFT19TRVRfQkxBTkssIGJvb2xlYW4KKyBtb2RlKTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIFZJREVPX1NFVF9CTEFOSyBmb3IgdGhpcyBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5ib29sZWFuIG1vZGU8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRSVUU6IEJsYW5rIHNjcmVlbiB3aGVuIHN0b3AuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RkFMU0U6IFNob3cgbGFzdCBkZWNvZGVkIGZyYW1lLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CismcmV0dXJuLXZhbHVlLWR2YjsKKworPC9zZWN0aW9uPjxzZWN0aW9uIGlkPSJWSURFT19HRVRfU1RBVFVTIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPlZJREVPX0dFVF9TVEFUVVM8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBjYWxsIGFza3MgdGhlIFZpZGVvIERldmljZSB0byByZXR1cm4gdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBkZXZpY2UuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPiBpbnQgaW9jdGwoZmQsIGludCByZXF1ZXN0ID0gVklERU9fR0VUX1NUQVRVUywgc3RydWN0CisgdmlkZW9fc3RhdHVzICYjeDIyQzY7c3RhdHVzKTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIFZJREVPX0dFVF9TVEFUVVMgZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+c3RydWN0IHZpZGVvX3N0YXR1cworICpzdGF0dXM8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlJldHVybnMgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBWaWRlbyBEZXZpY2UuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworCis8L3NlY3Rpb24+PHNlY3Rpb24gaWQ9IlZJREVPX0dFVF9GUkFNRV9DT1VOVCIKK3JvbGU9InN1YnNlY3Rpb24iPjx0aXRsZT5WSURFT19HRVRfRlJBTUVfQ09VTlQ8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxwYXJhPlRoaXMgaW9jdGwgaXMgb2Jzb2xldGUuIERvIG5vdCB1c2UgaW4gbmV3IGRyaXZlcnMuIEZvciBWNEwyIGRlY29kZXJzIHRoaXMKK2lvY3RsIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHRoZSA8Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19ERUNfRlJBTUU8L2NvbnN0YW50PiBjb250cm9sLjwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBjYWxsIGFza3MgdGhlIFZpZGVvIERldmljZSB0byByZXR1cm4gdGhlIG51bWJlciBvZiBkaXNwbGF5ZWQgZnJhbWVzCitzaW5jZSB0aGUgZGVjb2RlciB3YXMgc3RhcnRlZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGlvY3RsKGludCBmZCwgaW50IHJlcXVlc3QgPQorIFZJREVPX0dFVF9GUkFNRV9DT1VOVCwgX191NjQgKnB0cyk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyBWSURFT19HRVRfRlJBTUVfQ09VTlQgZm9yIHRoaXMKKyBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5fX3U2NCAqcHRzCis8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlJldHVybnMgdGhlIG51bWJlciBvZiBmcmFtZXMgZGlzcGxheWVkIHNpbmNlIHRoZSBkZWNvZGVyIHdhcyBzdGFydGVkLgorPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworCis8L3NlY3Rpb24+PHNlY3Rpb24gaWQ9IlZJREVPX0dFVF9QVFMiCityb2xlPSJzdWJzZWN0aW9uIj48dGl0bGU+VklERU9fR0VUX1BUUzwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPHBhcmE+VGhpcyBpb2N0bCBpcyBvYnNvbGV0ZS4gRG8gbm90IHVzZSBpbiBuZXcgZHJpdmVycy4gRm9yIFY0TDIgZGVjb2RlcnMgdGhpcworaW9jdGwgaGFzIGJlZW4gcmVwbGFjZWQgYnkgdGhlIDxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX0RFQ19QVFM8L2NvbnN0YW50PiBjb250cm9sLjwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBjYWxsIGFza3MgdGhlIFZpZGVvIERldmljZSB0byByZXR1cm4gdGhlIGN1cnJlbnQgUFRTIHRpbWVzdGFtcC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGlvY3RsKGludCBmZCwgaW50IHJlcXVlc3QgPQorIFZJREVPX0dFVF9QVFMsIF9fdTY0ICpwdHMpOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgVklERU9fR0VUX1BUUyBmb3IgdGhpcworIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPl9fdTY0ICpwdHMKKzwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+UmV0dXJucyB0aGUgMzMtYml0IHRpbWVzdGFtcCBhcyBkZWZpbmVkIGluIElUVSBULVJFQy1ILjIyMi4wIC8gSVNPL0lFQyAxMzgxOC0xLgorPC9wYXJhPgorPHBhcmE+CitUaGUgUFRTIHNob3VsZCBiZWxvbmcgdG8gdGhlIGN1cnJlbnRseSBwbGF5ZWQKK2ZyYW1lIGlmIHBvc3NpYmxlLCBidXQgbWF5IGFsc28gYmUgYSB2YWx1ZSBjbG9zZSB0byBpdAorbGlrZSB0aGUgUFRTIG9mIHRoZSBsYXN0IGRlY29kZWQgZnJhbWUgb3IgdGhlIGxhc3QgUFRTCitleHRyYWN0ZWQgYnkgdGhlIFBFUyBwYXJzZXIuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworCis8L3NlY3Rpb24+PHNlY3Rpb24gaWQ9IlZJREVPX0dFVF9GUkFNRV9SQVRFIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPlZJREVPX0dFVF9GUkFNRV9SQVRFPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgY2FsbCBhc2tzIHRoZSBWaWRlbyBEZXZpY2UgdG8gcmV0dXJuIHRoZSBjdXJyZW50IGZyYW1lcmF0ZS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGlvY3RsKGludCBmZCwgaW50IHJlcXVlc3QgPQorIFZJREVPX0dFVF9GUkFNRV9SQVRFLCB1bnNpZ25lZCBpbnQgKnJhdGUpOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgVklERU9fR0VUX0ZSQU1FX1JBVEUgZm9yIHRoaXMKKyBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT51bnNpZ25lZCBpbnQgKnJhdGUKKzwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+UmV0dXJucyB0aGUgZnJhbWVyYXRlIGluIG51bWJlciBvZiBmcmFtZXMgcGVyIDEwMDAgc2Vjb25kcy4KKzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CismcmV0dXJuLXZhbHVlLWR2YjsKKworPC9zZWN0aW9uPjxzZWN0aW9uIGlkPSJWSURFT19HRVRfRVZFTlQiCityb2xlPSJzdWJzZWN0aW9uIj48dGl0bGU+VklERU9fR0VUX0VWRU5UPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8cGFyYT5UaGlzIGlvY3RsIGlzIGZvciBEVkIgZGV2aWNlcyBvbmx5LiBUbyBnZXQgZXZlbnRzIGZyb20gYSBWNEwyIGRlY29kZXIgdXNlIHRoZSBWNEwyCismVklESU9DLURRRVZFTlQ7IGlvY3RsIGluc3RlYWQuPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIGNhbGwgcmV0dXJucyBhbiBldmVudCBvZiB0eXBlIHZpZGVvX2V2ZW50IGlmIGF2YWlsYWJsZS4gSWYgYW4gZXZlbnQgaXMKKyBub3QgYXZhaWxhYmxlLCB0aGUgYmVoYXZpb3IgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBkZXZpY2UgaXMgaW4gYmxvY2tpbmcgb3IKKyBub24tYmxvY2tpbmcgbW9kZS4gSW4gdGhlIGxhdHRlciBjYXNlLCB0aGUgY2FsbCBmYWlscyBpbW1lZGlhdGVseSB3aXRoIGVycm5vCisgc2V0IHRvIEVXT1VMREJMT0NLLiBJbiB0aGUgZm9ybWVyIGNhc2UsIHRoZSBjYWxsIGJsb2NrcyB1bnRpbCBhbiBldmVudAorIGJlY29tZXMgYXZhaWxhYmxlLiBUaGUgc3RhbmRhcmQgTGludXggcG9sbCgpIGFuZC9vciBzZWxlY3QoKSBzeXN0ZW0gY2FsbHMgY2FuCisgYmUgdXNlZCB3aXRoIHRoZSBkZXZpY2UgZmlsZSBkZXNjcmlwdG9yIHRvIHdhdGNoIGZvciBuZXcgZXZlbnRzLiBGb3Igc2VsZWN0KCksCisgdGhlIGZpbGUgZGVzY3JpcHRvciBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIGV4Y2VwdGZkcyBhcmd1bWVudCwgYW5kIGZvcgorIHBvbGwoKSwgUE9MTFBSSSBzaG91bGQgYmUgc3BlY2lmaWVkIGFzIHRoZSB3YWtlLXVwIGNvbmRpdGlvbi4gUmVhZC1vbmx5CisgcGVybWlzc2lvbnMgYXJlIHN1ZmZpY2llbnQgZm9yIHRoaXMgaW9jdGwgY2FsbC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+IGludCBpb2N0bChmZCwgaW50IHJlcXVlc3QgPSBWSURFT19HRVRfRVZFTlQsIHN0cnVjdAorIHZpZGVvX2V2ZW50ICYjeDIyQzY7ZXYpOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgVklERU9fR0VUX0VWRU5UIGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPnN0cnVjdCB2aWRlb19ldmVudAorICpldjwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+UG9pbnRzIHRvIHRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgZXZlbnQsIGlmIGFueSwgaXMgdG8gYmUKKyBzdG9yZWQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FV09VTERCTE9DSzwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhlcmUgaXMgbm8gZXZlbnQgcGVuZGluZywgYW5kIHRoZSBkZXZpY2UgaXMgaW4KKyBub24tYmxvY2tpbmcgbW9kZS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RU9WRVJGTE9XPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5PdmVyZmxvdyBpbiBldmVudCBxdWV1ZSAtIG9uZSBvciBtb3JlIGV2ZW50cyB3ZXJlIGxvc3QuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKworPC9zZWN0aW9uPjxzZWN0aW9uIGlkPSJWSURFT19DT01NQU5EIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPlZJREVPX0NPTU1BTkQ8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxwYXJhPlRoaXMgaW9jdGwgaXMgb2Jzb2xldGUuIERvIG5vdCB1c2UgaW4gbmV3IGRyaXZlcnMuIEZvciBWNEwyIGRlY29kZXJzIHRoaXMKK2lvY3RsIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHRoZSAmVklESU9DLURFQ09ERVItQ01EOyBpb2N0bC48L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgY29tbWFuZHMgdGhlIGRlY29kZXIuIFRoZSA8Y29uc3RhbnQ+dmlkZW9fY29tbWFuZDwvY29uc3RhbnQ+IHN0cnVjdAoraXMgYSBzdWJzZXQgb2YgdGhlIDxjb25zdGFudD52NGwyX2RlY29kZXJfY21kPC9jb25zdGFudD4gc3RydWN0LCBzbyByZWZlciB0byB0aGUKKyZWSURJT0MtREVDT0RFUi1DTUQ7IGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bChpbnQgZmQsIGludCByZXF1ZXN0ID0KKyBWSURFT19DT01NQU5ELCBzdHJ1Y3QgdmlkZW9fY29tbWFuZCAqY21kKTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIFZJREVPX0NPTU1BTkQgZm9yIHRoaXMKKyBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5zdHJ1Y3QgdmlkZW9fY29tbWFuZCAqY21kCis8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkNvbW1hbmRzIHRoZSBkZWNvZGVyLgorPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworCis8L3NlY3Rpb24+PHNlY3Rpb24gaWQ9IlZJREVPX1RSWV9DT01NQU5EIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPlZJREVPX1RSWV9DT01NQU5EPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8cGFyYT5UaGlzIGlvY3RsIGlzIG9ic29sZXRlLiBEbyBub3QgdXNlIGluIG5ldyBkcml2ZXJzLiBGb3IgVjRMMiBkZWNvZGVycyB0aGlzCitpb2N0bCBoYXMgYmVlbiByZXBsYWNlZCBieSB0aGUgJlZJRElPQy1UUlktREVDT0RFUi1DTUQ7IGlvY3RsLjwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCB0cmllcyBhIGRlY29kZXIgY29tbWFuZC4gVGhlIDxjb25zdGFudD52aWRlb19jb21tYW5kPC9jb25zdGFudD4gc3RydWN0CitpcyBhIHN1YnNldCBvZiB0aGUgPGNvbnN0YW50PnY0bDJfZGVjb2Rlcl9jbWQ8L2NvbnN0YW50PiBzdHJ1Y3QsIHNvIHJlZmVyIHRvIHRoZQorJlZJRElPQy1UUlktREVDT0RFUi1DTUQ7IGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bChpbnQgZmQsIGludCByZXF1ZXN0ID0KKyBWSURFT19UUllfQ09NTUFORCwgc3RydWN0IHZpZGVvX2NvbW1hbmQgKmNtZCk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyBWSURFT19UUllfQ09NTUFORCBmb3IgdGhpcworIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPnN0cnVjdCB2aWRlb19jb21tYW5kICpjbWQKKzwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VHJ5IGEgZGVjb2RlciBjb21tYW5kLgorPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworCis8L3NlY3Rpb24+PHNlY3Rpb24gaWQ9IlZJREVPX0dFVF9TSVpFIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPlZJREVPX0dFVF9TSVpFPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgcmV0dXJucyB0aGUgc2l6ZSBhbmQgYXNwZWN0IHJhdGlvLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoaW50IGZkLCBpbnQgcmVxdWVzdCA9CisgVklERU9fR0VUX1NJWkUsIHZpZGVvX3NpemVfdCAqc2l6ZSk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyBWSURFT19HRVRfU0laRSBmb3IgdGhpcworIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPnZpZGVvX3NpemVfdCAqc2l6ZQorPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5SZXR1cm5zIHRoZSBzaXplIGFuZCBhc3BlY3QgcmF0aW8uCis8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7CisKKzwvc2VjdGlvbj48c2VjdGlvbiBpZD0iVklERU9fU0VUX0RJU1BMQVlfRk9STUFUIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPlZJREVPX1NFVF9ESVNQTEFZX0ZPUk1BVDwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIGNhbGwgYXNrcyB0aGUgVmlkZW8gRGV2aWNlIHRvIHNlbGVjdCB0aGUgdmlkZW8gZm9ybWF0IHRvIGJlIGFwcGxpZWQKKyBieSB0aGUgTVBFRyBjaGlwIG9uIHRoZSB2aWRlby48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+IGludCBpb2N0bChmZCwgaW50IHJlcXVlc3QgPQorIFZJREVPX1NFVF9ESVNQTEFZX0ZPUk1BVCwgdmlkZW9fZGlzcGxheV9mb3JtYXRfdAorIGZvcm1hdCk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyBWSURFT19TRVRfRElTUExBWV9GT1JNQVQgZm9yIHRoaXMKKyBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT52aWRlb19kaXNwbGF5X2Zvcm1hdF90CisgZm9ybWF0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5TZWxlY3RzIHRoZSB2aWRlbyBmb3JtYXQgdG8gYmUgdXNlZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7CisKKzwvc2VjdGlvbj48c2VjdGlvbiBpZD0iVklERU9fU1RJTExQSUNUVVJFIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPlZJREVPX1NUSUxMUElDVFVSRTwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIGNhbGwgYXNrcyB0aGUgVmlkZW8gRGV2aWNlIHRvIGRpc3BsYXkgYSBzdGlsbCBwaWN0dXJlIChJLWZyYW1lKS4gVGhlCisgaW5wdXQgZGF0YSBzaGFsbCBjb250YWluIGFuIEktZnJhbWUuIElmIHRoZSBwb2ludGVyIGlzIE5VTEwsIHRoZW4gdGhlIGN1cnJlbnQKKyBkaXNwbGF5ZWQgc3RpbGwgcGljdHVyZSBpcyBibGFua2VkLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoZmQsIGludCByZXF1ZXN0ID0gVklERU9fU1RJTExQSUNUVVJFLAorIHN0cnVjdCB2aWRlb19zdGlsbF9waWN0dXJlICYjeDIyQzY7c3ApOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgVklERU9fU1RJTExQSUNUVVJFIGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPnN0cnVjdAorIHZpZGVvX3N0aWxsX3BpY3R1cmUKKyAqc3A8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlBvaW50ZXIgdG8gYSBsb2NhdGlvbiB3aGVyZSBhbiBJLWZyYW1lIGFuZCBzaXplIGlzIHN0b3JlZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7CisKKzwvc2VjdGlvbj48c2VjdGlvbiBpZD0iVklERU9fRkFTVF9GT1JXQVJEIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPlZJREVPX0ZBU1RfRk9SV0FSRDwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIGNhbGwgYXNrcyB0aGUgVmlkZW8gRGV2aWNlIHRvIHNraXAgZGVjb2Rpbmcgb2YgTiBudW1iZXIgb2YgSS1mcmFtZXMuCisgVGhpcyBjYWxsIGNhbiBvbmx5IGJlIHVzZWQgaWYgVklERU9fU09VUkNFX01FTU9SWSBpcyBzZWxlY3RlZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGlvY3RsKGZkLCBpbnQgcmVxdWVzdCA9IFZJREVPX0ZBU1RfRk9SV0FSRCwgaW50CisgbkZyYW1lcyk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyBWSURFT19GQVNUX0ZPUldBUkQgZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IG5GcmFtZXM8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoZSBudW1iZXIgb2YgZnJhbWVzIHRvIHNraXAuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FUEVSTTwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+TW9kZSBWSURFT19TT1VSQ0VfTUVNT1JZIG5vdCBzZWxlY3RlZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorCis8L3NlY3Rpb24+PHNlY3Rpb24gaWQ9IlZJREVPX1NMT1dNT1RJT04iCityb2xlPSJzdWJzZWN0aW9uIj48dGl0bGU+VklERU9fU0xPV01PVElPTjwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIGNhbGwgYXNrcyB0aGUgdmlkZW8gZGV2aWNlIHRvIHJlcGVhdCBkZWNvZGluZyBmcmFtZXMgTiBudW1iZXIgb2YKKyB0aW1lcy4gVGhpcyBjYWxsIGNhbiBvbmx5IGJlIHVzZWQgaWYgVklERU9fU09VUkNFX01FTU9SWSBpcyBzZWxlY3RlZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGlvY3RsKGZkLCBpbnQgcmVxdWVzdCA9IFZJREVPX1NMT1dNT1RJT04sIGludAorIG5GcmFtZXMpOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgVklERU9fU0xPV01PVElPTiBmb3IgdGhpcyBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgbkZyYW1lczwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhlIG51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgZWFjaCBmcmFtZS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVQRVJNPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5Nb2RlIFZJREVPX1NPVVJDRV9NRU1PUlkgbm90IHNlbGVjdGVkLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CisKKzwvc2VjdGlvbj48c2VjdGlvbiBpZD0iVklERU9fR0VUX0NBUEFCSUxJVElFUyIKK3JvbGU9InN1YnNlY3Rpb24iPjx0aXRsZT5WSURFT19HRVRfQ0FQQUJJTElUSUVTPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgY2FsbCBhc2tzIHRoZSB2aWRlbyBkZXZpY2UgYWJvdXQgaXRzIGRlY29kaW5nIGNhcGFiaWxpdGllcy4gT24gc3VjY2VzcworIGl0IHJldHVybnMgYW5kIGludGVnZXIgd2hpY2ggaGFzIGJpdHMgc2V0IGFjY29yZGluZyB0byB0aGUgZGVmaW5lcyBpbiBzZWN0aW9uID8/LjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoZmQsIGludCByZXF1ZXN0ID0gVklERU9fR0VUX0NBUEFCSUxJVElFUywKKyB1bnNpZ25lZCBpbnQgJiN4MjJDNjtjYXApOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgVklERU9fR0VUX0NBUEFCSUxJVElFUyBmb3IgdGhpcworIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPnVuc2lnbmVkIGludCAqY2FwPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5Qb2ludGVyIHRvIGEgbG9jYXRpb24gd2hlcmUgdG8gc3RvcmUgdGhlIGNhcGFiaWxpdHkKKyBpbmZvcm1hdGlvbi48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7CisKKzwvc2VjdGlvbj48c2VjdGlvbiBpZD0iVklERU9fU0VUX0lEIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPlZJREVPX1NFVF9JRDwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIHNlbGVjdHMgd2hpY2ggc3ViLXN0cmVhbSBpcyB0byBiZSBkZWNvZGVkIGlmIGEgcHJvZ3JhbSBvciBzeXN0ZW0KKyBzdHJlYW0gaXMgc2VudCB0byB0aGUgdmlkZW8gZGV2aWNlLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgaW9jdGwoaW50IGZkLCBpbnQgcmVxdWVzdCA9IFZJREVPX1NFVF9JRCwgaW50CisgaWQpOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgVklERU9fU0VUX0lEIGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+dmlkZW8gc3ViLXN0cmVhbSBpZDwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CismcmV0dXJuLXZhbHVlLWR2YjsKKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RUlOVkFMPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5JbnZhbGlkIHN1Yi1zdHJlYW0gaWQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKworPC9zZWN0aW9uPjxzZWN0aW9uIGlkPSJWSURFT19DTEVBUl9CVUZGRVIiCityb2xlPSJzdWJzZWN0aW9uIj48dGl0bGU+VklERU9fQ0xFQVJfQlVGRkVSPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgY2FsbCBjbGVhcnMgYWxsIHZpZGVvIGJ1ZmZlcnMgaW4gdGhlIGRyaXZlciBhbmQgaW4gdGhlIGRlY29kZXIgaGFyZHdhcmUuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bChmZCwgaW50IHJlcXVlc3QgPSBWSURFT19DTEVBUl9CVUZGRVIpOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgVklERU9fQ0xFQVJfQlVGRkVSIGZvciB0aGlzIGNvbW1hbmQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworCis8L3NlY3Rpb24+PHNlY3Rpb24gaWQ9IlZJREVPX1NFVF9TVFJFQU1UWVBFIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPlZJREVPX1NFVF9TVFJFQU1UWVBFPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgdGVsbHMgdGhlIGRyaXZlciB3aGljaCBraW5kIG9mIHN0cmVhbSB0byBleHBlY3QgYmVpbmcgd3JpdHRlbiB0byBpdC4gSWYKKyB0aGlzIGNhbGwgaXMgbm90IHVzZWQgdGhlIGRlZmF1bHQgb2YgdmlkZW8gUEVTIGlzIHVzZWQuIFNvbWUgZHJpdmVycyBtaWdodCBub3QKKyBzdXBwb3J0IHRoaXMgY2FsbCBhbmQgYWx3YXlzIGV4cGVjdCBQRVMuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBpb2N0bChmZCwgaW50IHJlcXVlc3QgPSBWSURFT19TRVRfU1RSRUFNVFlQRSwKKyBpbnQgdHlwZSk7PC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyBWSURFT19TRVRfU1RSRUFNVFlQRSBmb3IgdGhpcyBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgdHlwZTwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+c3RyZWFtIHR5cGU8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7CisKKzwvc2VjdGlvbj48c2VjdGlvbiBpZD0iVklERU9fU0VUX0ZPUk1BVCIKK3JvbGU9InN1YnNlY3Rpb24iPjx0aXRsZT5WSURFT19TRVRfRk9STUFUPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgc2V0cyB0aGUgc2NyZWVuIGZvcm1hdCAoYXNwZWN0IHJhdGlvKSBvZiB0aGUgY29ubmVjdGVkIG91dHB1dCBkZXZpY2UKKyAoVFYpIHNvIHRoYXQgdGhlIG91dHB1dCBvZiB0aGUgZGVjb2RlciBjYW4gYmUgYWRqdXN0ZWQgYWNjb3JkaW5nbHkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPiBpbnQgaW9jdGwoZmQsIGludCByZXF1ZXN0ID0gVklERU9fU0VUX0ZPUk1BVCwKKyB2aWRlb19mb3JtYXRfdCBmb3JtYXQpOzwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgVklERU9fU0VUX0ZPUk1BVCBmb3IgdGhpcyBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT52aWRlb19mb3JtYXRfdAorIGZvcm1hdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+dmlkZW8gZm9ybWF0IG9mIFRWIGFzIGRlZmluZWQgaW4gc2VjdGlvbiA/Py48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVJTlZBTDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+Zm9ybWF0IGlzIG5vdCBhIHZhbGlkIHZpZGVvIGZvcm1hdC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorCis8L3NlY3Rpb24+PHNlY3Rpb24gaWQ9IlZJREVPX1NFVF9TWVNURU0iCityb2xlPSJzdWJzZWN0aW9uIj48dGl0bGU+VklERU9fU0VUX1NZU1RFTTwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIHNldHMgdGhlIHRlbGV2aXNpb24gb3V0cHV0IGZvcm1hdC4gVGhlIGZvcm1hdCAoc2VlIHNlY3Rpb24gPz8pIG1heQorIHZhcnkgZnJvbSB0aGUgY29sb3IgZm9ybWF0IG9mIHRoZSBkaXNwbGF5ZWQgTVBFRyBzdHJlYW0uIElmIHRoZSBoYXJkd2FyZSBpcworIG5vdCBhYmxlIHRvIGRpc3BsYXkgdGhlIHJlcXVlc3RlZCBmb3JtYXQgdGhlIGNhbGwgd2lsbCByZXR1cm4gYW4gZXJyb3IuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlNZTk9QU0lTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPiBpbnQgaW9jdGwoZmQsIGludCByZXF1ZXN0ID0gVklERU9fU0VUX1NZU1RFTSAsCisgdmlkZW9fc3lzdGVtX3Qgc3lzdGVtKTs8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIFZJREVPX1NFVF9GT1JNQVQgZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+dmlkZW9fc3lzdGVtX3QKKyBzeXN0ZW08L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPnZpZGVvIHN5c3RlbSBvZiBUViBvdXRwdXQuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FSU5WQUw8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPnN5c3RlbSBpcyBub3QgYSB2YWxpZCBvciBzdXBwb3J0ZWQgdmlkZW8gc3lzdGVtLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CisKKzwvc2VjdGlvbj48c2VjdGlvbiBpZD0iVklERU9fU0VUX0hJR0hMSUdIVCIKK3JvbGU9InN1YnNlY3Rpb24iPjx0aXRsZT5WSURFT19TRVRfSElHSExJR0hUPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgc2V0cyB0aGUgU1BVIGhpZ2hsaWdodCBpbmZvcm1hdGlvbiBmb3IgdGhlIG1lbnUgYWNjZXNzIG9mIGEgRFZELjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT4gaW50IGlvY3RsKGZkLCBpbnQgcmVxdWVzdCA9IFZJREVPX1NFVF9ISUdITElHSFQKKyAsdmlkZW9faGlnaGxpZ2h0X3QgJiN4MjJDNjt2aGlsaXRlKTwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgVklERU9fU0VUX0hJR0hMSUdIVCBmb3IgdGhpcyBjb21tYW5kLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT52aWRlb19oaWdobGlnaHRfdAorICp2aGlsaXRlPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5TUFUgSGlnaGxpZ2h0IGluZm9ybWF0aW9uIGFjY29yZGluZyB0byBzZWN0aW9uID8/LjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CismcmV0dXJuLXZhbHVlLWR2YjsKKworPC9zZWN0aW9uPjxzZWN0aW9uIGlkPSJWSURFT19TRVRfU1BVIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPlZJREVPX1NFVF9TUFU8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCBhY3RpdmF0ZXMgb3IgZGVhY3RpdmF0ZXMgU1BVIGRlY29kaW5nIGluIGEgRFZEIGlucHV0IHN0cmVhbS4gSXQgY2FuCisgb25seSBiZSB1c2VkLCBpZiB0aGUgZHJpdmVyIGlzIGFibGUgdG8gaGFuZGxlIGEgRFZEIHN0cmVhbS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+IGludCBpb2N0bChmZCwgaW50IHJlcXVlc3QgPSBWSURFT19TRVRfU1BVICwKKyB2aWRlb19zcHVfdCAmI3gyMkM2O3NwdSk8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIFZJREVPX1NFVF9TUFUgZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+dmlkZW9fc3B1X3QgKnNwdTwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+U1BVIGRlY29kaW5nIChkZSlhY3RpdmF0aW9uIGFuZCBzdWJpZCBzZXR0aW5nIGFjY29yZGluZworIHRvIHNlY3Rpb24gPz8uPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FSU5WQUw8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmlucHV0IGlzIG5vdCBhIHZhbGlkIHNwdSBzZXR0aW5nIG9yIGRyaXZlciBjYW5ub3QgaGFuZGxlCisgU1BVLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CisKKzwvc2VjdGlvbj48c2VjdGlvbiBpZD0iVklERU9fU0VUX1NQVV9QQUxFVFRFIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPlZJREVPX1NFVF9TUFVfUEFMRVRURTwvdGl0bGU+Cis8cGFyYT5ERVNDUklQVElPTgorPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5UaGlzIGlvY3RsIHNldHMgdGhlIFNQVSBjb2xvciBwYWxldHRlLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT4gaW50IGlvY3RsKGZkLCBpbnQgcmVxdWVzdCA9IFZJREVPX1NFVF9TUFVfUEFMRVRURQorICx2aWRlb19zcHVfcGFsZXR0ZV90ICYjeDIyQzY7cGFsZXR0ZSApPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKzxwYXJhPlBBUkFNRVRFUlMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMiI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IGZkPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkgYSBwcmV2aW91cyBjYWxsIHRvIG9wZW4oKS48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW50IHJlcXVlc3Q8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVxdWFscyBWSURFT19TRVRfU1BVX1BBTEVUVEUgZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+dmlkZW9fc3B1X3BhbGV0dGVfdAorICpwYWxldHRlPC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5TUFUgcGFsZXR0ZSBhY2NvcmRpbmcgdG8gc2VjdGlvbiA/Py48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVJTlZBTDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+aW5wdXQgaXMgbm90IGEgdmFsaWQgcGFsZXR0ZSBvciBkcml2ZXIgZG9lc24mIzgyMTc7dCBoYW5kbGUgU1BVLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CisKKzwvc2VjdGlvbj48c2VjdGlvbiBpZD0iVklERU9fR0VUX05BVkkiCityb2xlPSJzdWJzZWN0aW9uIj48dGl0bGU+VklERU9fR0VUX05BVkk8L3RpdGxlPgorPHBhcmE+REVTQ1JJUFRJT04KKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+VGhpcyBpb2N0bCByZXR1cm5zIG5hdmlnYXRpb25hbCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBEVkQgc3RyZWFtLiBUaGlzIGlzCisgZXNwZWNpYWxseSBuZWVkZWQgaWYgYW4gZW5jb2RlZCBzdHJlYW0gaGFzIHRvIGJlIGRlY29kZWQgYnkgdGhlIGhhcmR3YXJlLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5TWU5PUFNJUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIxIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT4gaW50IGlvY3RsKGZkLCBpbnQgcmVxdWVzdCA9IFZJREVPX0dFVF9OQVZJICwKKyB2aWRlb19uYXZpX3BhY2tfdCAmI3gyMkM2O25hdmlwYWNrKTwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+Cis8cGFyYT5QQVJBTUVURVJTCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCBmZDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IGEgcHJldmlvdXMgY2FsbCB0byBvcGVuKCkuPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmludCByZXF1ZXN0PC9wYXJhPgorPC9lbnRyeT48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FcXVhbHMgVklERU9fR0VUX05BVkkgZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+dmlkZW9fbmF2aV9wYWNrX3QKKyAqbmF2aXBhY2s8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlBDSSBvciBEU0kgcGFjayAocHJpdmF0ZSBzdHJlYW0gMikgYWNjb3JkaW5nIHRvIHNlY3Rpb24KKyA/Py48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorJnJldHVybi12YWx1ZS1kdmI7Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjIiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkVGQVVMVDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+ZHJpdmVyIGlzIG5vdCBhYmxlIHRvIHJldHVybiBuYXZpZ2F0aW9uYWwgaW5mb3JtYXRpb248L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorCis8L3NlY3Rpb24+PHNlY3Rpb24gaWQ9IlZJREVPX1NFVF9BVFRSSUJVVEVTIgorcm9sZT0ic3Vic2VjdGlvbiI+PHRpdGxlPlZJREVPX1NFVF9BVFRSSUJVVEVTPC90aXRsZT4KKzxwYXJhPkRFU0NSSVBUSU9OCis8L3BhcmE+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjEiPjx0Ym9keT48cm93PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPlRoaXMgaW9jdGwgaXMgaW50ZW5kZWQgZm9yIERWRCBwbGF5YmFjayBhbmQgYWxsb3dzIHlvdSB0byBzZXQgY2VydGFpbgorIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdHJlYW0uIFNvbWUgaGFyZHdhcmUgbWF5IG5vdCBuZWVkIHRoaXMgaW5mb3JtYXRpb24sCisgYnV0IHRoZSBjYWxsIGFsc28gdGVsbHMgdGhlIGhhcmR3YXJlIHRvIHByZXBhcmUgZm9yIERWRCBwbGF5YmFjay48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+U1lOT1BTSVMKKzwvcGFyYT4KKzxpbmZvcm1hbHRhYmxlPjx0Z3JvdXAgY29scz0iMSI+PHRib2R5Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+IGludCBpb2N0bChmZCwgaW50IHJlcXVlc3QgPSBWSURFT19TRVRfQVRUUklCVVRFCisgLHZpZGVvX2F0dHJpYnV0ZXNfdCB2YXR0cik8L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93PjwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorPHBhcmE+UEFSQU1FVEVSUworPC9wYXJhPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgZmQ8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPkZpbGUgZGVzY3JpcHRvciByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8gb3BlbigpLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5pbnQgcmVxdWVzdDwvcGFyYT4KKzwvZW50cnk+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+RXF1YWxzIFZJREVPX1NFVF9BVFRSSUJVVEUgZm9yIHRoaXMgY29tbWFuZC48L3BhcmE+Cis8L2VudHJ5PgorIDwvcm93Pjxyb3c+PGVudHJ5CisgYWxpZ249ImNoYXIiPgorPHBhcmE+dmlkZW9fYXR0cmlidXRlc190CisgdmF0dHI8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPnZpZGVvIGF0dHJpYnV0ZXMgYWNjb3JkaW5nIHRvIHNlY3Rpb24gPz8uPC9wYXJhPgorPC9lbnRyeT4KKyA8L3Jvdz48L3Rib2R5PjwvdGdyb3VwPjwvaW5mb3JtYWx0YWJsZT4KKyZyZXR1cm4tdmFsdWUtZHZiOworPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIyIj48dGJvZHk+PHJvdz48ZW50cnkKKyBhbGlnbj0iY2hhciI+Cis8cGFyYT5FSU5WQUw8L3BhcmE+Cis8L2VudHJ5PjxlbnRyeQorIGFsaWduPSJjaGFyIj4KKzxwYXJhPmlucHV0IGlzIG5vdCBhIHZhbGlkIGF0dHJpYnV0ZSBzZXR0aW5nLjwvcGFyYT4KKzwvZW50cnk+CisgPC9yb3c+PC90Ym9keT48L3Rncm91cD48L2luZm9ybWFsdGFibGU+CisgPC9zZWN0aW9uPjwvc2VjdGlvbj4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmJzdGIucG5nLmI2NCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9kdmJzdGIucG5nLmI2NApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGI1MmZkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2R2YnN0Yi5wbmcuYjY0CkBAIC0wLDAgKzEsMzk4IEBACitpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBek1BQUFHYUNBWUFBQUE3SngyNUFBQUFCbUpMUjBRQUFBQUFBQUQ1UTd0L0FBQUFDWEJJCitXWE1BQUEzWEFBQU5pUUZtRU91aUFBQWdBRWxFUVZSNDJ1emRkMVJVMThJMjhHZGdLRlpVQkUwc2FGQTBLb3FGRmtFaEtoYkFRbXhKCitiSWtOTkVwTUVVd3NNWmFySk1acnc0S3hSRXhRY3pVcWlsMGpSQkExR0FqR1FxTFlDNFRlbWRuZkg3NmNqM0hvZFlEbnR4YUxtVGxsCit6dXc1N1ptejl6NHlJWVFBa1laemNuSkNTa29LR2pac3lNSWdJaUlpcXVQUzA5UFJvRUVEeUJobXFDYVF5V1JvMDZZTjNudnZQUllHCitFUkVSVVIxMzdOZ3gvUG5ubjVDektLZ21NREF3d0twVnF4aG1pSWlJaUFqMjl2WjQvLzMzb2NXaUlDSWlJaUtpbW9oaGhvaUlpSWlJCitHR2FJaUlpSWlJZ1lab2lJaUlpSWlCaG1pSWlJaUlpSVlZYUlpSWlJaUloaGhvaUlpSWlJaUdHR2lJaUlpSWdZWm9pSWlJaUlpQmhtCitpSWlJaUlpSUdHYUlpSWlJaUlnWVpvaUlpSWlJaUdHR2lJaUlpSWlJWVlhSWlJaUlpSWhoaG9pSWlJaUlHR2FJaUlpSWlJZ1lab2lJCitpSWlJaUJobWlJaUlpSWlJWVlhSWlJaUlpSWhoaG9pSWlJaUlxRkxJV1FSRWxTTXNMQXkydHJabzFLZ1I1SEp1YWxUeEVoSVM4UDMzCiszK1BERHorc001KzViZHUyZVBEZ0FabzJiY29WZ0NwbG0zSjBkTVM1YytmcXpHZisrdXV2c1dUSkVtNVRWQ2xTVTFPUms1T0RCdzhlCitvSFhyMWd3elJEVkpibTR1QUdEUm9rVXdNREJnZ1ZDRm16bHpKckt5c3VyVVozNzI3QmtzTEN6ZzRlSEJGWUFxM0lJRkM1Q1FrRkNuCitQbk5HUmdZQVlOV3FWVndCcU1KRlJVVmg0OGFOVUNxVmxmWWVERE5FbFd6R2pCa01NMVFwTm03Y1dPYytjOHVXTFRGanhnek1tREdECitLd0JWdUx0Mzd5SWtKS1RPZlc1bloyZHVVMVNwWWFZeXNjME1FUkVSRVJIVlNBd3pSRVJFUkVURU1FTkVSRVJFUk1Rd1EwUkVSRVJFCit4REJEUkVSRVJFUU1NMFJFUkVSRVJBd3pSRVJFUkVSRURETkVSRVJFUk1Rd1EwUkVSRVJFeERCRFJFUkVSRVRFTUVORVJFUkVSTVF3CitRMFJFUkVSRURETkVSRVJFUkVRTU0wUkVSRVJFUkF3elJFUkVSRVRFTUVORVJFUkVSTVF3UTBSRVJFUkV4REJEUkVSRVJFUU1NMFJFCitSRVJFUkF3elJFUkVSRVJFRERORVJFUkVSRVFNTTBSRVJFUkV4REJEUkVSRVJFVEVNRU5FUkVSRVJNUXdRMFJFUkVSRURETkVSRVJFCitSRVFNTTBSRVJFUkVSQXd6UkVSRVJFVEVNRU5FUkVSRVJNUXdRMFJFUkVSRVZHbmtMQUtpbXVuQmd3ZElTa29xOC9TR2hvWjQ3YlhYCitXSkNWNk5telp3Z01ETVM1Yytld2QrOWVGZ2lWU1ZaV0ZrSkNRbkQxNmxVOGV2UUlDb1VDaG9hRzZOQ2hBMnhzYk5DeFkwZklaREk4CitlZklFcDA2ZHd1VEprMHM4NzZDZ0lKaVltS0JMbHk0c2FLcTJZNVd1cmk2YU5tMEtRME5EYUdueGQzWmltQ0dxRS83ODgwOEVCZ2JpCitwNTkrUWtKQ2dzb3dMUzB0eUdReTZibFNxWVFRUW1XY2p6LytHR3ZYcm1WQlZvS3RXN2RpKy9idHVIYnRHb1FRTURRMFpLRlFxZjM3Cis3Ny93OGZIQnRtM2JrSkNRZ0NaTm1zRFMwaExHeHNaNDhPQUJ0bS9mamlkUG5zRFUxQlIyZG5ZSUN3dER6NTQ5U3h4bWxFb2w1czZkCitDeHNiRyt6WnM0Y0ZUcFYyckRweDRnUU9IRGlBSjArZXFBelQwOU9EVXFsRVRrNE9BRUJmWHgvZHVuV0R2YjA5M056YzBMZHZYNVZqCitHVkZCR0grSmFxaWhRNGRpMDZaTk9IcjBxTXJybHk1ZGdrS2hRRzV1cnZTblZDcVJsWldGMjdkdlk4bVNKUUNBN094c0ZtSWxtVEZqCitCczZlUGN0ZnU2bk1UcDQ4aVRmZmZCT3JWNitHbnA0ZTl1elpnK2ZQbitQVXFWUHc5L2ZIa1NOSDhQRGhReHc5ZWhSQ0NPemV2UnUzCitidDFDV2xwYXFkNGpKaVlHKy9idHcrUEhqMW5vVkduSHFuWHIxdUhjdVhNcXIrL2Z2eDhaR1JuSXpzNUdTa29LSWlJaThNMDMzMEJICitSd2RyMTY2RnZiMDlldlhxaGRPblQ3TVFpV0dHcURhenNySlNlVjVZMVRGZFhWMTA3TmdSWDMzMUZTWlBuaXo5RWxiVG5EcDFTdU9YCitVU2FUb1hIanh1amV2VHRYVUNxMUgzLzhFY09HRGNQejU4L1J0V3RYUkVSRVlNS0VDZERSMFZFOWdHdHB3Y1hGQmRldVhZT05qUTBBCitJRDA5dmNUdnMySERCZ0JBVGs0T2ZIMTlXZkJVcVRwMTZnUzUvUDlYQ0RJM041ZXV1alJzMkJBV0ZoYjQ2S09QOE50dnYrSElrU05vCiszcnc1cmwrL0RpY25KM3o2NmFkUUtwVXNSR0tZSWFxTmRIUjBTbDNIZU55NGNUWHl5c3lCQXdkcTFFa1g2MzVUYVYyOWVoVlRwa3lCCitVcWxFdzRZTmNmVG9VYlJzMmJMSWFabzBhWUlqUjQ3QXlNaW94RmRtN3R5NWc2Q2dJR2hyYXdNQXRtelpnb3lNREg0QlZHbGtNaGwwCitkWFZMTko2cnF5dkN3c0xRcWxVckFNQjMzMzJIanovK21JVklERE5FdGZrZ1VScU9qbzVZdW5ScGpmcU1kKzdjd2ZUcDAvbGxVNjJsCitWQ294WThZTTZhcnAvUG56MGI1OSt4Sk5hMlJrQkM4dnJ4SmZtZkgxOVlXVmxSVW1USmdBQUlpUGoyY25GYVJSeHlwVFUxTWNPblJJCitDdHdiTm16QTRjT0hXWWpFTUVOVWwrWG01aUloSVFINit2b3dNVEVwY0p6OEhRVUlJZFE2RGlqb0JLeTBDcHBuVWZONTl1d1puSjJkCitTOVY3bXhDaVZNdFcybVdxaVBja3l1L0VpUk9JaUlnQUFHaHJhOFBkM2IxVTAwK2FOQWxaV1ZuRmpwZWFtb3FkTzNkaTl1elptRDE3Cit0dlQ2Zi8vNzMySzNkNktxWkdscGlSa3paa2pQdmJ5OGl0M0hsbVkvWE5oK3Y2anRvQ1RIUlUxUmxtTlNhYzhCR0dhSXFFcGR1WElGCitDeFlzVUhzOU1URVJmbjUrc0xhMnhyVnIxNUNTa29KSmt5WkJYMThmYmRxMFFXUmtwTXJPTFRBd0VNT0hENGVwcVNuYXQyK1B4bzBiCitvMy8vL3ZEejh5dTBMVTV1Ymk3T256OFBEdzhQbUp1YlMrODdkKzVjR0JvYVFpNlh3OExDUXEyeDUrWExsMkZyYTRzN2QrNEFBRUpECitRK0hpNGdJWEZ4Zk1uejlmWmR6czdHejQrdnJDMnRvYSt2cjYwTkhSUWRldVhlSGo0MVBnU1Y1WmwrbFZ4NDRkdzhDQkEvSGFhNitoCitRNGNPNk5tekp3NGNPRkJuMTdPZ29DQzFYb3VvZUQvKytLUDAyTmJXRmtaR1JxV2Ezc2pJQ0R0MzdpeDJQSDkvZjhqbGNvd2RPeGFXCitscGF3dHJZR0FFUkhSK1BzMmJQOElqUlFhR2dvb3FLaTZtVFluRE5uanZUNDFxMWJ1SFRwa3RvNHBkbjNDeUZ3N2RvMWVIdDdvMTI3Citka2hNVElRUUF2NysvckN3c0lCY0xrZlRwazN4OGNjZlM5V3hjM056c1huelp2VHUzUnU2dXJxb1g3OCszbjMzWGJXZVJQZnYzNC94Cis0OGRMeDZqRml4ZEx3NUtTa2pCMzdsd01IejVjR3A2L2hrUnNiQ3ptejU4dkRjdjcrK0tMTDVDYm00dkRodzlqN05peDB1dHo1ODdGCitzMmZQeWxVV1pUa0gwTlRVUnFUeERBd014TjY5ZTJ2VU1nY0hCd3NBSWpFeHNkTGZTMXRiV3dBUUFNVGR1M2NMSFcvaHdvVmk1c3laCiswdk1yVjY2SUVTTkdDRjFkWFduNjMzNzdUZlR2MzEvbzYrdExyeTFZc0VBSUlVUjZlcm9ZUFhxMDBOUFRFN3QzN3hZNU9UbENDQ0Z1CiszNzR0K3ZidEt3Q0lIajE2aU5qWVdKWDNQWFhxbEhCeWNwTG0xNkpGQ3hFZEhTMDZkdXdvSEIwZGhZdUxpNmhmdjc0QUlIUjBkTVFmCitmL3doVGZ2WFgzK0owNmRQQzJOall3RkEyTnJhaXRPblQ0dlRwMCtMOFBCd2FieW5UNStLUG4zNmlPblRwNHZJeUVqeDZORWpjZWpRCitJZEdpUlFzQlFQVHQyMWVrcGFWVnlETGxVU2dVWXZiczJVSXVsNHN0VzdhSTdPeHNJWVFRMGRIUndzTENRalJxMUVnQUVJYUdocFh5Cit2WnVibXd0ZlgxK05XL2Z6eXJSZHUzWmk1c3laSWlBZ1FEeDU4cVJDNXQyMmJWdU4vTXdWb1ZXclZsTFplWHA2VnNwN0tKVkswYlZyCitWK0hsNVNXOTV1L3ZMNzJ2czdOem5UN1dlSHQ3Q3pzN080MWJybW5UcGdrQXdzREFRSXdZTVVLc1g3OWVSRVpHQ3FWU1dTR2Z1YXErCis5d1lOR2tqcjJsOS8vVlhpNmRxM2J5OU50M2p4WXBWaHBkbjNYN3AwU1l3ZVBWckk1WEtWNVJnOGVMQ3dzcklTN3U3dTR1MjMzNWFHCitmZjc1NStMSmt5ZmlyYmZlRW82T2ptTFdyRmxpMUtoUlFrdExTd0FRcnE2dWFzdDY3OTQ5YWY2REJ3OVdHeDRkSFMwZHMxOHRkNlZTCitLWll0V3lhOWYrL2V2VldHcjF5NVV1anE2b3FBZ0lBQ3YvdlNIZ2RMZXc1UUZwR1JrUUtBMm5sQlJRZ01EQlFHQmdhQ1lZWVlabXBaCittRGw0OEtBSURRMlYvaTVkdWlUT25qMHJ2djc2YTZHcnE2c1NadExTMGtSMmRyWjBvQVFnbkp5Y3hLRkRoMFJxYXFxWU9IR2lhTktrCitpVGg5K3JSUUtwVmk3Tml4QWtDQko1TXBLU21pYytmT0FvRG8xS21UU0VsSlVSdG42TkNoQW9EUTE5Y1hscGFXSWlJaVFocjJ4eDkvCitTSjlqeXBRcGF0T2FtSmdJQUdMRWlCRnF3N0t6czBXZlBuM0VxRkdqMUhidysvZnZsejZidDdkM2hTN1Rva1dMQkFDeFpzMGF0V0dQCitIeitXRHR4MUxjdzBhOVpNS25NZEhSM3B3RjRSNGFhMmhwbms1R1NwekFwYnB5ckMyYk5uaFV3bVUvblJJek16VS9xeEFJQzRlZk1tCit3NHlHOGZEd2tFNmd0YlMwaEo2ZVhvV0ZtNW9RWmthT0hDbE5OM3IwNkhMdit4Y3NXQ0FOczdHeFVmbGhUS2xVU3UvWG9FRURZV2xwCitLUzVjdUtBeS9lclZxNlhwWTJKaTFKYlgxTlMwMERDVC8zaFdVTGtybFVveFpNZ1E2YnZPSzZmMDlIVFJzV05IOGQxMzN4VTR6N0tVCitSV25PQVJobWlCaG1xaXpNRlBlWFA4emsrZUdISDZUaFgzMzFWWUh2Y2V6WU1RRkFORzNhVkdSbFpSVTR6cEVqUjZUNWZQSEZGMnJECitQL3JvSTJuNHMyZlAxSWIzNjlkUENrT2xDVE5idDI0VkFNUzVjK2ZVaG1WbVprcS9NRFZ0MmxTNm1sVGVaYnB4NDRiUTF0WVdob2FHCitoWmJIOE9IRDYyU1lNVEl5S25UOUsyKzRxYTFoNXA5Ly9sRXBwNjFidDFiSys0d2FOYXJBWDVQemdqa0FNV3ZXTElZWkRRd3orYThtCis1UDhyYjdpcENXRm14b3daMG5TT2pvN2wzdmR2Mzc1ZG1sOVlXSmphdFB2MjdaT0diOXEwU1czNHpaczNwZUc3ZHUxU0c5NnBVNmNpCit3MHhlMkNtczNPL2Z2eTlkMlhkeWNoSktwVkpNbXpaTk9EZzRDSVZDVWVBMDVUa09sdVFjUUpQRGpKdzFVWWxxbDVzM2I2bzA3aGRDCitJQzB0RFpjdVhjS0hIMzVZNERUNTcxOHhaTWlRQXNmSjZ4TFp5c3FxME80MWh3MGJCbU5qWXp4Ly9oeGJ0MjdGMHFWTFZlNHJrTmNyCitEUUFZR3h1clRaL1hEV2Q4Zkh5cFByT2ZueDhBSUR3OEhOSFIwV3JEbXpWcmhzZVBIeU1oSVFFM2J0eFF1ZjlMV1pkcDNicDFVQ2dVCitHRGh3WUtIbDBhaFJJNjZRcjhqZnB1cmV2WHZZc1dNSHZ2LytlK1RtNXFKZHUzWVlQSGd3SEIwZDBiOS8vMks3Sks3TkZBcEZoYzh6CitOallXaHc4Znh2SGp4OVdHelp3NUV5dFhyb1JDb2NDdVhidXdmUGx5TkczYWxDdHNEWkIzVStTOGRobEhqeDdGaVJNbmtKV1ZCUU1ECitBemc0T0dEQWdBRndjSEJBdDI3ZFN0MzdwU2JJdjh6NWoxZGwzZmZuMys4M2FOQ2cwUDErM2p4ZTFhSkZDK254dzRjUEsvenp0bW5UCitCdDk4OHczYzNkMXg2dFFwVEpvMENZY1BIMFpVVkZTaFhmNlg1emhZa25NQVRjWXdRMVRMNk9ucFFWOWZYK1cxZXZYcVlmanc0Vml3CitZSUhVa0w0dytYZnkrUStXRnk1Y0FBQTBiOTY4eUduNzkrK1BBd2NPSUQ0K0h0SFIwZWpSbzBlSmx6MXZKeTFLMGNnMU9Ua1oxNjVkCitnN2EyZHFHTnpzZU1HYVAySHVWWkppR0UxRVZvNTg2ZHEvVWs1djc5KzdoMjdacEdyWU81dWJsbERqZmZmLzg5dG0vZkRvVkNJWVdiCiszcjE3dzlYVnRWYUhtMWVEUTF4Y1hJVy94NVl0Vy9ER0cyOWcwS0JCQlo2OHVibTU0Y0NCQTBoUFQ4ZjI3ZHZ4K2VlZjE4bDlhRnBhCittc1p0VXk5ZXZDaHp1RGx5NUFpQ2dvS1FuWjJOeG8wYnc5SFJFZjM2OVlPOXZUMzY5T2xUSTc2VGYvLzlWM3I4K3V1dlYvcSt2NkRqCitvTXJKYzc0ZjZTcnIva3pUcDAvSHZuMzdjUDc4ZWZqNysyUGp4bzJGOWtKYWtXVlIzR2RubUNHcVE0UUc5anJ6OXR0djQrN2R1NldlCitMajQrWHJvWlgzRW5xcDA2ZFpJZVAzejRzRlJocGl6dTNyMHJkVCs1WnMyYUt0a1J2M2p4QWsrZlBnVlF2VmRmc3JPenNXclZLcXhhCit0YXJXYkRmNTE2OTc5KzVoNjlhdFVraWZPblZxcFZ5eDBBUk5talNScm1vQ1FFeE1USVhPUHlNakEzNStmbEFvRkNxL3lMNjZuZWZaCitzR0VENXMyYnAzTFNWbGZjdUhHanhwemtsL1JZbE5jclYzSnlNZzRmUGl6OUdPUG82Q2lGQTAxMjY5WXQ2WEh2M3IycmJkOWZsYlMwCit0T0RuNXdkemMzTmtaR1RnMUtsVG1EVnJWb0ZYMW1wN1dURE1FRldERnk5ZVlQbnk1UnEzWEQxNzlzVEdqUnRMUFYzK0U4aThrL2pDCitHQm9hU28rcllvZWFGN0tFRUxoLy8zNkpiekpZSHZsL05jL016S3kyNzFOUFR3L2ZmdnR0b2RVSHE0dVptVm1acnl6bzZla2hLeXNMCitlbnA2c0xTMGhKT1RFL3IzN3c4Ykd4dm82dW9pTURDdzF1NDM3T3pzY1BEZ1FRQXZ1K0t0U0FFQkFVaE5UWVdQajArUnY4cXVXTEVDCitUNTgreFlNSEQzRG8wQ0dWWDNQcmlwNDlleFpZRmE4NmZmYlpaL2poaHg5S2RkVXpqNDZPRHBSS0paUktKVHAwNklDaFE0ZkN3Y0VCCitmZnYyaGJHeE1SWXNXSURFeEVTTlBwNUdSVVZKejExY1hLcHQzMS9WMHRMU3BPUHZrU05Ic0cvZlBvd2ZQMTRqam9NTU0wUzEyTGx6Cis1ekJnd0FCTW5UcTExbnltNXMyYlEwZEhCems1T1lpT2pvWVFvdEI2MS9sdjBQWEdHMjlVK3JMVnIxOWZlaHdTRWxJbE8zRTlQVDNwCis4ZDkvLzExdDM0dE1Ka1A5K3ZVMXJtMURhZXJrNit2ckl6TXpVeVc4T0RvNkZ0azJxN1lhTzNhc0ZHYnUzTG1EcUtnbzZmNUg1U0dFCit3SVlOR3pCbXpCak1uVHUzeUhIajQrUHgxVmRmQVhoNUU4MjZHR2J5N2pPaVNmTHZjNHFqcTZzTGhVSUJwVktKamgwN1lzaVFJWEJ3CitjSUM5dlgyUjFZUTExYzZkTzZXYURpNHVMbWpYcmwyMTdmdXJVbFpXRmlaTW1JQ2xTNWRpNDhhTmVQVG9FZWJNbVlNQkF3YW8zWU9xCit0cGRGY1hqVFRLSUtvbFFxc1h6NWNnd1lNQUFBTUh6NDhGcDFjTSs3c1Y1Y1hCeHUzTGhSNkxoNTlYVmJ0V3FGamgwN1Z2cXltWnFhCitTaWZQZm41K1JWYnZTMDFOeGN5Wk04djlucTFidDVZYVRGNjRjSUYzVFMrRnZQWmNlbnA2c0xPend4ZGZmSUhnNEdBa0p5Y2pPRGdZCitpeFl0Z3AyZFhaMExNZ0RnNXVhbWNoTHkzWGZmVmNoOEwxNjhpSWlJQ0V5ZlByM1ljV2ZPbkNtdDI1Y3VYVUo0ZURoWFdnMm5xNnNMCitiVzF0eUdReW1KbVp3ZDNkSFFjT0hNQ0xGeTl3NjlZdHJGdTNEcU5HamFxUlFlYng0OGRTTlZwZFhWMnNYcjI2V3ZmOUZhVWt4NHlGCitDeGVpY2VQR21EOS9Qalp2M2l3ZGZ6MDlQVFhpT01nd1ExVEx2SGp4QW9NR0RjS1NKVXNBdkx4amNVRTlvRlRXVGpILzFaREtPckgrCis0SU1QcE1jQkFRR0ZqcGQzOHVQdTdsN3FYbk9LV3ZhOGVlWFYvYzdUcUZFaktXZ0ZCd2RqejU0OUJVNmZtNXVMS1ZPbXdNbkpxZHpMCitwS2VuaC83OSt3TjRXVmM1S0Npb3lHbnJXdGpKcS9Md2FuaXh0N2RuZUNtQ2pvNE9ObTNhSkQzZnRXc1hUcDgrWGVMcEV4TVQ0ZXJxCitxblpYOE5XclY4UE16QXoyOXZiRnpxTmx5NVlZUFhxMDlIenQyclhjd1dzQXBWSXBWVGNxYVhqSlgrVzNKcDNFNTBsSVNNRElrU09SCitrSkFBQU5pMGFSTzZkT2xTWmZ2KzhzaXJZcDJlbmw1Z0dhU2twQlE1L2ErLy9vcU5HemZDejg4UFdscGFjSFYxeGJ2dnZnc0ErT21uCituM0QwNk5FcVBRNHl6QkRWY3VmUG4wZlhybDF4OGVKRktKVkthR2xwNGJQUFBxdXk5MDlQVDFjNVFKU2xaNVg4WWFpd090bVRKazJDCitwYVVsQUdEejVzMEYxckcrZmZzMmdvT0RZV1ptaG5uejVxa05MNjd4ZGw3UFZnVWQ4UEtxZmR5K2ZWc2FucDJkamNlUEg2djhValZ0CisyalNzWDc5ZTZzMEhlRmxseDhYRkJkbloyWEJ6YzZ1UVpjci8rVHc4UE5TNjUweE1URVJJU0FpQWw0MXVVMU5UNjh3MmtYY0Fmelc4CitYTHg0a2VHbEdFT0hEc1dhTld1azUyNXViaVZxSnhRYUdncExTMHYwNjlkUHBkdllLMWV1SUNnb0NHUEdqQ254and2dnZmZWU5UGpBCitnUVBWV3BXUy92OEpzQkNpeG9XWFYvZTErZHNZRmhac2hCQTRkZW9VK3ZUcGd5dFhya0JYVnhmYnRtM0R0R25UMU1ZdDY3NC8vekd2CitMTWZFNG41QXpMdkNldm55WmR5K2ZWdWxERmFzV0NIdEl3dTZEVUZ5Y2pJbVQ1Nk1CUXNXNE0wMzM1UmVYN2R1bmZRZHU3dTdxeDJECit5M01jTE1rNUFNTU1VUzJrVkNyeDlkZGZZK0RBZ1lpUGowZHViaTdrY2puR2p4K1B0bTNiVnRseW5EeDVVdVY1WVZjSmlwSy91K2JmCitmLys5d0hIa2Nqa09IVHFFVHAwNklUNCtIaE1tVEZENUJUNGhJUUVUSjA1RW16WnRFQmdZV0dEZi9mbFBpdko2YmNwL1FQanp6ejhCCit2T3hPTkRrNVdXVzRyYTJ0TkkvNTgrZmo0TUdEZU9lZGQvRHZ2LzlpM0xoeEdEZHVuQlErUEQwOTBieDVjL1RvMFFPbXBxWXdNek5ECitVbElTL1AzOTFVN295cnBNdzRZTmc0ZUhCd0RnL3YzNzZOV3JGMWFzV0lIQXdFQnMyN1lOam82T01EQXdrQTRPM2J0M3IzV1g5Z3R6Cis3ZG8xWkdWbE1ieVUwU2VmZklKOSsvYWhXYk5tU0UxTmhhdXJLOXpjM0hEeTVFbVZYM3BUVTFNUkZCU0VkOTU1Qnk0dUxsaTJiSmxLCitkOHFabVptWU5XdVd0UDJXVkY2YmhMeVRyM256NWhWNzhrZVZhOTY4ZVlpTGk2dFI0ZVZWNTgrZlYxbVA5dTNiaDVpWUdQejk5OS80CisvZmZmY2Zqd1lTeGF0QWc5ZXZUQTRNR0RjZS9lUGJpNXVlSDY5ZXVGVnBFczY3NC9mMitCQlFXSzJOaFk2WEZCMWFvZlBIZ2dQWDc4CisrTEhhOEx5YURObloyYkN6czRPWGx4ZTh2YjFoYm00T0lRUWNIQndBQUdGaFlYai8vZmR4N05neDZieGkyclJwVUNxVjhQTHlVcG1uCitrWkdSVlB2ajhlUEhtREpsaWtyd0tNOXhzQ1RuQUpxZTlvazBub0dCZ2RpN2Q2L0dMTStUSjArRWc0T0QyaDJaWlRLWmlJeU1GRUlJCitFUndjTEFDSXhNVEVTbGtHUHo4L01XalFvQUx2Q20xblp5YysvZlRUWXVkeDVzd1o0ZXJxS3JTMHRLUnA5ZlQweEtSSms4VDI3ZHNMCituQ1lwS1VuTW16ZFBOR3JVU0x6Kyt1dGl4b3daNHNNUFB4UW1KaWJDM2QxZHhNWEZxVTBUR2hvcXhvOGZyN0tNWGJwMEVWOSsrYVVRCitRb2lUSjA4S0p5Y25sZUU5ZS9ZVTI3WnRrK1lSR3hzcldyZHVMUTEvL2ZYWHhmbno1NlhoT1RrNVlzbVNKZEpkay9QK0RBd014TUtGCitDMFZHUmthRkw1TkNvUkRmZlBPTmFOcTBxY3A0SmlZbTR0eTVjK0w5OTk4WGhvYUd3c1BEUXdRSEJ4ZDY1K2F5TWpjM0Y3Nit2blZxCitYOUMyYmRzNjg1bmo0dUxFa2lWTFJOdTJiVlgyTVlhR2hxSlpzMllDZ0dqVHBvMVl0R2lSMm5hM2YvOSswYmx6WjJrNnVWd3VSbzBhCitKWTRmUDE3bysvMzExMTlpOHVUSm9sMjdkbXI3bE42OWU0dGZmdm1sMXBlNXQ3ZTNzTE96cTFQYmxMZTNkNkYzb3Erb1k1V1RrNVBRCisxZFZWVzYveS96VnUzRmgwNmRKRmpCMDdWbXphdEVrOGZQaXdSUE12emI3LzExOS9GYk5telJKNmVub3ErMnR2YjI4Ukd4c3Ivdjc3CitiekZ2M2p6UnZIbHphYml1cnE3dzhQQVFGeTVjRUJrWkdlTHp6ejhYN2R1M1Y5bTIzTjNkUldCZ29QUStTcVZTTEYyNlZPWDQzS3haCitNK240NGV6c0xOcTNieSs4dmIxRmFHaW95TTNORmNIQndlTHR0OThXQUlTUmtaSHc4ZkZSK1p6bnpwMFREZzRPS3AvUjF0WldaWnN1Cis3WEd3TE9jQXBSVVpHU2tBaU5qWTJBcGZ0d0lEQTRXQmdZR1FDYlpjcFJxZ1NaTW04UFgxVmFuK1VKMi9MbzBaTXdZcEtTa3E3VGZrCitjamtjSFIxeDZ0UXBBQzk3RkxHM3QwZGlZcUwwQzMxdGtwV1ZoVC8rK0FOeGNYRm8yclFwZXZUb29kS2pTbVZJUzB0RFdGaVkxUE5WCitRVDM4WkdSazRQcjE2MGhJU0lDUmtSRzZkKzllcXA2QXlsb1cxNjlmUjF4Y0hJeU5qZEd6WjAvSTVYTEV4TVRBeE1SRTVlN0tGYWw3Cis5Kzd3OFBDUXJoRFZCU1ltSnZEMjlxNVRuMWtJZ2R1M2IrUFBQLzlFWEZ3Y2xFb2xqSTJOMGJWclYzVHExS2xHM3RGZFV5MVlzQUFoCitJU0VJRGc2dVU1ODVLaXFxeG5kN1hoMzcvdUs4ZVBFQzE2OWZSNzE2OWRDblR4K3BEZUUvLy95RGR1M2FsZm9tempXeExLS2lvdEM5CitlM2ZFeHNaV2VLMlZZOGVPNGYzMzMyZlh6RVFscFZBb3NHelpNaXhidGt5NkhQenE4QysrK0tMT2xJZWVuaDZzckt5cTlEMGJOR2dnCis5UlpYbUhyMTZrbFYwcXF5TFBJYVgrYlhvVU1IYmpoVWJqS1pESjA2ZFZLNUlTMFJWZisrdnpoR1JrWVlOR2lRMnV1VmZkc0NUU3lMCit5c1F3UTFRQ1Q1OCt4Wmd4WXhBV0ZsWmczWEV0TFMxWVdGaEk5V0NKaUlpSXFQS3hBd0NpWXB3NWN3YmR1blZEZUhoNGtiMThMRnk0CitrSVZGUkVSRXhEQkRWUDBVQ2dVV0wxNE1KeWNuSkNRa3FOM2ZKSTlNSm9PSmlRbEdqQmpCUWlNaUlpS3FRcXhtUmxTQVI0OGVZZno0Cis4UWdMQzVQNjl5K010clkydnZqaWkwcHJ5RWRFUkVSRURETkVKWExxMUNrTUhqd1l1cnE2SmJwNWxJR0JBU1pObXNTQ0l5SWlJcXBpCisvQ21aS0I4aEJQYnYzdzhBaFZZcnkwOVhWeGRlWGw2OElTQVJFUkVSd3d4UjlaTEpaTmkrZlR2V3IxOFBMUzJ0WXF1TzZlam9ZTWFNCitHU3c0SWlJaUlvWVpJczB3Wjg0Y25EbHpCbzBhTlNyMGhvZTZ1cnI0NktPUGF1VU5NWW1JaUlnWVpvaHFNRWRIUjRTR2hrSmJXN3ZBCitPMndybFVwNGVucXlvSWlJaUlnWVpvZzB6NnBWcTlDc1dUTzR1TGhBVzF0YmVsMVhWeGVUSjAvR2E2Kzl4a0lpSWlJaVlwZ2gwaXpyCisxcTFEUUVBQS92ZS8vK0h3NGNOWXZudzV0TFMwSUpQSmtKMmREUzh2THhZU0VSRVJFY01Na1dhNWNPRUNQdnZzTS9qNitzTEd4Z1l5CittUXplM3Q0SURBeUVFQUkyTmpibzJMRWpDNHFJaUlpb0d2RStNMFN2dUgvL1BzYU9IWXRwMDZaaDZ0U3BLc09HRGgyS1c3ZHVJU3NyCitpd1ZGUkVSRXhEQkRwRG5TMDlQaDV1WUdNek16ckZ1M3JzQnh6TXpNV0ZCRVJFUkVERE5FbXNYRHd3TlBuejdGMWF0WGVTTk1JaUlpCitJb1lab3BvaHI4SC9yNy8raXBZdFc3SkFpSWlJaUJobWlEUmZYb1AvTFZ1MndNYkdoZ1ZDUkVSRVZBT3dOek9xODRwcThFOUVSRVJFCitERE5FR3Fra0RmNkppSWlJU0RPeG1oblZhV3p3VDBSRVJGUUx3c3ozMzMrUDc3Ly9IZzBhTkdDcFVJVlRLQlRJeWNuQi8vNzNQeGdiCitHMnZFTXJIQlB4RVJFVkV0Q1RNeE1URUlEUTJGbDVjWFM0VXFYRlJVRk02ZlA0L016RXlOV0I0MitDY2lJaUtxUldFR0FKeWRuYkZxCisxU3FXQ2xWS21EbCsvTGhHTEFzYi9CTVJFUkhWRHV3QWdPb1VOdmduSWlJaXFqM1lBUURWS1d6d1QwUkVSTVF3UTFUanNNRS9FUkVSCitFY01NVVkzREJ2OUVSRVJFdFEvYnpGQ3R4d2IvUkVSRVJBd3pSRFVPRy93VEVSRVIxVjZzWmthMUdodjhFeEVSRVRITUVOVTRiUEJQCitSRVJFeERCRFZPT3d3VDhSRVJGUjdjYzJNMVRyc01FL0VSRVJFY01NVVkzREJ2OUVSRVJFZFFlcm1WR3R3Z2IvUkVSRVJBd3pSRFdPCitwamI0WDcxNk5Rd01EUGdGVVlXTGlvcXFjNS81NGNPSFdMMTZOWktUazdrQ1VLWHNyODNOemV2YzV6NTI3QmhXcjE3TkZhQVl5Y25KCit1SC8vUHRxMWE0ZUdEUnV5UURUa09NVXdRN1dDSmpiNGI5aXdJVXhNVEhEaXhBbG9hYkZHSjFXOE5tM2F3TWpJcUU1OVprZEhSOXkvCitmeDhIRGh6Z0NrQVZybDI3ZHVqWnMyZWQrc3l0V3JWQ216WnR1RTI5UXFsVUlpMHRUZVV2SnljSE1wa00rdnI2Nk5LbEN3dXBCTEt6CitzMkZxYWxxcHRXVVlacWpHMDlRRy94WVdGcmgzN3g2L0lLSUtkT2JNR1JZQ1VRWDY2S09QOE5GSEg5WHBNbEFvRklpT2prWjRlRGd1CitYNzZNeTVjdjQ4YU5HeEJDb0hQbnpuQnljb0tWbFJWc2JHd1FGUldGaFFzWDR1clZxMXg1TkFUREROVm9iUEJQUkVSRXBmSG8wU01wCit0RnkrZkJuWHJoT0psVVFBQUNBQVNVUkJWRjFEYW1vcVdyWnNDV3RyYTR3ZlB4NDJOamJvMDZjUEdqZHVyREx0alJzM1dJQU1NMFFWCitodzMraVlpSXFEQ3BxYW00ZXZVcXdzUERFUllXaHZEd2NEeDY5QWoxNjlkSDc5NjlZV1ZsaGRtelo4UGEyaHB0MjdabGdUSE1FRlVkCitUVzN3VDBSRVJGV3Z1T3BpMXRiV1dMaHdJV3hzYk5DdFd6Zkk1VHdOWnBnaHFpYWEyT0NmaUlpSXFrNTVxb3NSd3d4UnRkSFVCdjlFCitSRVJVT1ZoZGpCaG1xRlpnZzM4aUlxTGFqZFhGaUdHR2FpMDIrQ2NpSXFwZFdGMk1HR2FvVGpoeDRnVDI3ZHZIQnY5RVJFUTFGS3VMCitFY01NMVVtNXVibjQ4Y2Nmc1hYclZqYjRKeUlpcWdGWVhZd1lab2p3c3NGL2VubzYzbjc3YlRiNEp5SWkwbENzTGtZTU0wU3Z5R3Z3CityNldsaFVtVEpyRkFpSWlJTkFDcml4SERERkVKZUhoNDRObXpaMmpRb0FFdlB4TVJFVlVEVmhjamhobWlNbGkzYmgwQ0FnTHc2NisvCitZc2lRSVN3UUlpS2lLbENTNm1MVzF0YXd0TFJrZFRGaW1DRXF5SVVMRi9EWlo1OWh5NVl0YlBCUFJFUlVTVmhkakJobWlDclkvZnYzCitNWGJzV0V5Yk5vME4vb21JaUNvSXE0c1J3MHdWQ0FvS2dvbUpDYnAwNmNKdnB3N0thL0J2Wm1hR2RldldzVUNJaUlqS2lOWEZpR0dtCitpaW1WU3N5ZE94YzJOamJZczJjUHY1MDZLSy9CLzVVclY2Q3JxOHNDSVNJaUtnRldGeU9HR1Exdzh1Ukp4TVRFSURZMkZxdFhyOGJyCityNy9PYjZnT3lkL2d2MlhMbGl3UUlpS2lBaWdVQ3R5NGNVUGxxZ3VyaXhIRGpBYllzR0VEQUNBbkp3ZSt2cjVZdm54NWxiNy9xVk9uCis0T1RreExXaUdyREJQeEVSVWNGWVhZeW9Cb1NaTzNmdUlDZ29DTnJhMmxBb0ZOaXlaUXUrL1BKTDFLdFhyMHJlLzhDQkE5aTdkeS9ECitURFZnZzM4aUlxS1hXRjJNcUlhR0dWOWZYMWhaV2VITk45L0U3dDI3RVI4Zmo3MTc5MkxhdEdsVkVxU21UNThPQndjSHJoRlZqQTMrCitpWWlvcm1KMU1jMzI5T2xUaElTRVlQVG8wVVdPRnhNVGczLysrWWMvaU5mbE1KT2Ftb3FkTzNkaS9mcjFVcGdCZ1AvKzk3K1lPblVxCitaREpaaWVjbGhGQWJYNmxVUWt0THE4RHhuejE3Qm1kblp5UWxKWlZxbVlVUUVFSVVPdC95TEZORlRmdnFmQUNVcWl5ckFodjhFeEZSCitYY0hxWWpYTHpaczNNVzdjT01URnhhRnAwNmFGanJkbnp4NGNQWHFVWWFhYWFHbkNRdmo3KzBNdWwyUHMyTEd3dExTRXRiVTFBQ0E2CitPaHBuejU0dGR2cmMzRnljUDM4ZUhoNGVNRGMzQndBa0ppWmk3dHk1TURRMGhGd3VoNFdGQlU2ZlBxMHkzZVhMbDJGcmE0czdkKzRBCitBRUpEUStIaTRnSVhGeGZNbno5ZjdYMnlzN1BoNitzTGEydHI2T3ZyUTBkSEIxMjdkb1dQancreXNySXFaSm5LTzIxK1Y2OWV4Y1NKCitFMkZ2YjQvQmd3ZWpiZHUyNk4yN04zYnMyQ0dGbStxVTErRC93SUVEYlBCUFJFUzFTbXBxS2k1Y3VBQWZIeCs0dWJtaGRldldhTjI2CitOU1pPbklqUTBGRDA2ZE1ITzNic1FHeHNMSjQ4ZVlKZmZ2a0ZYM3p4QlFZTUdNQWdveUZzYkd5Z3E2dUxrSkNRSXNlN2NPRUNIQjBkCitXV0RWUmZ3ZmIyOXY0ZXpzTEtxYVVxa1VYYnQyRlY1ZVh0SnIvdjcrQW9BQVVPd3luVHAxU2pnNU9Vbmp0MmpSUWtSSFI0dU9IVHNLCitSMGRINGVMaUl1clhyeThBQ0IwZEhmSEhIMzlJMC83MTExL2k5T25Ud3RqWVdBQVF0cmEyNHZUcDArTDA2ZE1pUER4YzVYMmVQbjBxCisrdlRwSTZaUG55NGlJeVBGbzBlUHhLRkRoMFNMRmkwRUFORzNiMStSbHBaVzdtVXF6N1Q1YmRxMFNjaGtNdUhwNlNrVUNvVVFRb2kwCit0RFJoWjJjbkFJZ1ZLMVpVNmZjY0dSa3BBSWpZMkZnaGhCRG56NThYY3JsY2JOKyt2VVRUR3hnWWlMMTc5d29pSWlKTms1dWJLeUlqCitJNFdmbjUrWU5tMmFNRGMzRjlyYTJrSkxTMHQwNmRKRmZQREJCMkx6NXMwaUlpSkM1T1Rrc01CcWtINzkrb2xQUHZsRWVyNTM3MTdSCit0bTFiNlhsNmVyclEwOU1UUjQ0Y1lXRlZzY0RBUUdGZ1lDQ3FQY3ljUFh0V3lHUXljZmZ1WGVtMXpNeE1LV0FBRURkdjNpeDJQa09ICitEaFVBaEw2K3ZyQzB0QlFSRVJIU3NELysrRU5vYTJzTEFHTEtsQ2xxMDVxWW1BZ0FZc1NJRVFYT096czdXL1RwMDBlTUdqVktLSlZLCitsV0g3OSsrWGx0UGIyN3ZDbHFrODB6NTQ4RUFhZnVyVUtaVmhBUUVCQW9CbzFLaVJ5TXJLcXBZd0V4c2JLNHlNaklTN3UzdUpwMmVZCitJU0lpVGZIdzRVUHh2Ly85VDh5ZlAxLzA3OTlmTkd6WVVBQVFMVnUyRkNOR2pCQXJWcXdRWjg2Y0VVbEpTU3lzR203eDRzV2laOCtlCitoWWFaOCtmUEMyMXRiWkdRa01EQ3FxWXdVKzNWekRadTNBZ1hGeGUwYTlkT2VrMVBUdzh6Wjg2VW5xOWZ2NzdZK1ppYW1nSUFNak16CitFUmdZQ0FzTEMybFk5KzdkMGJkdlg2a3FXV250M0xrVFY2OWV4Wnc1YzlUYW5Bd2ZQaHo2K3ZvQWdLMWJ0eUkzTjdkQ2xxazgwOTYrCitmUnNLaFFJQUVCY1hwekxNMk5nWUFKQ1Nrb0s3ZCs5VytmZWRrWkhCQnY5RVJNVHFZbFFqT0RvNjRvOC8va0JDUWtLQnc4K2ZQNC91CiszYnVqU1pNbUxLeHFVcTBkQU1UR3h1THc0Y000ZnZ5NDJyQ1pNMmRpNWNxVlVDZ1UyTFZyRjVZdlgxNWs0eXR0YlcyMUUvYjhXclZxCitCUUNJajQ4djlYTDYrZmtCQU1MRHd4RWRIYTAydkZtelpuajgrREVTRWhKdzQ4WU5kTy9ldmR6TFZKNXArL1hyaDA4Ly9SUlpXVmtZCitPWEtreXJEOFlheTBuUjVVaEMrLy9KSU4vb21JU0NPeGR6RjZsWTJORFhSMGRCQVNFZ0pYVjFlMTRXd3ZVOGZEekpZdFcvREdHMjlnCiswS0JCQlo2c3U3bTU0Y0NCQTBoUFQ4ZjI3ZHZ4K2VlZmwvbTk4bnIvRXFWcytKNmNuSXhyMTY1Qlcxc2JUNTQ4S1hDY01XUEdxTDFQCitaUzVUY2RQSzVYSjgrKzIzS3ErbHA2Y2pJQ0FBTzNic2tGNVRLcFZWL3AwZk9YSUVGeTllWklOL0lpS3FkdXhkaklxanI2OFBhMnRyCitYTGh3UVMzTVpHUms0UExseS9qc3M4OVlVSFV4ekdSa1pNRFB6dzhLaFVLNmt2R3EvRmNkTm16WWdIbno1bFg1cnlCMzc5NkZFQUpLCitwUkpyMXF4UnVXSlNFOXk3ZHcvcjE2L0hyVnUzTUhYcVZDeFpzcVJhdXc1Y3NXSUZiR3hzdU9VUkVWR1Y0czBvcWF3Y0hCeHc5T2hSCit0ZGN2WDc2TTNOeGMyTnZiczVEcVlwZ0pDQWhBYW1vcWZIeDhpcnlhc1dMRkNqeDkraFFQSGp6QW9VT0hWSzZDVklXMHREUUFMNitBCiszTDkvSCszYnQ2OFJYMnhhV2hvV0xGZ0FmMzkvK1ByNllzMmFOWkRKWkxodzRVSzFMdGZ0MjdkeC8vNTlIaWlJaUtqU3NMb1lWU1JICitSMGNzWDc0Y2lZbUpLcSt6dlV3ZERqTkNDR3pZc0FGanhvekIzTGx6aXh3M1BqNGVYMzMxRllDWE45R3M2akJUdjM1OTZYRklTRWlOCitDRE5KU1Vsd2RIUkVSRVFFZ29LQ01HVElFSTFadGw2OWVzSEV4QVNUSmsyQ241OGYyODBRRVZHNXNib1lWYWE4ZGpQQndjRXFyN085CitqR2FvbHQ3TUxsNjhpSWlJQ0V5ZlByM1ljV2ZPbkFrZEhSMEF3S1ZMbHhBZUhsNmx5MnBxYWlvMW12Zno4eXV5ZlV0cWFxcEtMMnpWCitaZVhLbFlpSWlJQ0ppWWxHQlJrQWNIWjJCZ0Q4OE1NUGVQUE5OM0hpeEFsdWhVUkVWR0xzWFl5cVd2NTJNM255MnNzNE9EaXdnT3BpCittRm05ZWpYTXpNeEtWTWV3WmN1V0dEMTZ0UFI4N2RxMVpYclBva0pJWGxqSnpzNVdHOWFvVVNOWVcxc0RBSUtEZzdGbno1NEM1NUdiCittNHNwVTZhVXFqMUtXUnIrbDJUYXZON2g5UFQwMUlibDVPUlUrMG9YRlJVRjRHVjdKR2RuWjR3Y09STC8vUE1QdDBZaUlsS2hVQ2dRCitGUldGN2R1M1kvcjA2VktWbmdFREJtRDM3dDFvMHFRSkZpNWNpSWlJQ0NRbEplSGl4WXY0OXR0dk1XYk1HRlpucGdybDRPQ0E4K2ZQCitTOC9Ed3NMWVhxYXVocGtyVjY0Z0tDZ0lZOGFNVWJ0blMySGVlKzg5NmZHQkF3Znc5OTkvRjdqREswcmVTWHhCSVNDdnkrZmJ0MjlMCit3N096cy9INDhXTUFnS2VucHpUdXRHblRzSDc5ZW1SbFpVbXYzYmx6Qnk0dUxzak96b2FibTF1RkxGTjVwczNycGV6T25UdjQ4ODgvCitwZGN6TXpPeGUvZHVsVjhWeWh1cXlxSmJ0Mjc0NUpOUFlHQmdBRjFkWGNURXhLQmJ0Mjc0NnF1dnBHVWlJaUxOZFAzNmRkeTVjNmRTCis1djNvMFNNY1BIZ1FYbDVlY0hCd1FKTW1UZEM5ZTNjc1dyUUlMMTY4d1BqeDQzSHk1RWtrSkNRZ09qb2FPM2JzZ0x1N095d3NMTmp1CitoU3BWM3YxbTB0UFRBYnlzWXRhalJ3KzJsNmxyWVNZek14T3paczBDZ0ZMdGRQTGZVRk9oVUdEZXZIbHEzUXJuRHpqUG56OVhHU2FFCitrRTdxazVLU2tKeWNyRExjMXRaV21zZjgrZk54OE9CQnZQUE9PL2ozMzM4QkFPUEdqY080Y2VPa0VPSHA2WW5telp1alI0OGVNRFUxCitoWm1aR1pLU2t1RHY3NjhTME1xelRPV1pOdS9xa0JBQ2d3WU53c0tGQ3pGNzltejA2TkVEWGJ0MmxjWmJ0V29WbGl4WmdoOSsrS0hLCitWN3dsUzVaQVgxOGZQWHIwd04yN2R6RnIxaXhzM3J3WlhicDB3YUZEaDdobEVoRnBtTjkvL3gwalI0NUVyMTY5RUJBUVVPNzVzYm9ZCisxU1I1N1dadTNyd3BoUmxXTWRNUTR2OTRlM3NMWjJkblVWbjI3OTh2T25mdUxBQUlBRUl1bDR0Um8wYUo0OGVQRnpyTlgzLzlKU1pQCituaXphdFdzblRaZjMxN3QzYi9ITEw3K0kwTkJRTVg3OGVKVmhYYnAwRVY5KythVVFRb2lUSjA4S0p5Y25sZUU5ZS9ZVTI3WnRrOTRuCitOalpXdEc3ZFdocisrdXV2aS9Qbno2c3NTMDVPamxpeVpJbG8xS2lSeXJ3TURBekV3b1VMUlVaR2hqUnVlWmFwSWo1UFVsS1NjSEJ3CitVQm5IMmRsWnhNVEVDSVZDSWN6TnphWFhSNDBhSmRMVDAwVmxpNHlNRkFCRWJHeXM5TnF1WGJ1RXZyNittRHg1c3FoZnY3NDRkT2lRCittRHQzcnBETDVXTElrQ0hpMXExYjByZ0dCZ1ppNzk2OWdvaUlxdGFWSzFlRXE2dXJrTWxrd3NuSlNZU0VoSlI2SHJtNXVTSXlNbEw0CisrZm1KYWRPbUNYTnpjNkd0clMyMHRMUkVseTVkeEFjZmZDQTJiOTRzSWlJaVJFNU9EZ3VkTkZLL2Z2M0VzR0hEUkpzMmJZU2VucDQ0CitjdVFJQzZVYUJRWUdDZ01EQXlFVC8xZkhhTUdDQllpS2lrSmdZR0NkREhWcGFXa0lDd3VEbnA0ZUxDMHRDMnh2QXJ5c21uWDkrblVrCitKQ1RBeU1nSTNidDNMM1RjYWc2cGlJeU14Sk1uVC9EbW0yL0N4TVJFR3BhU2tvTFEwRkEwYjk0Y1BYdjJMSEYxdi9LSWlvcEM5KzdkCitFUnNiSzlWakZrTEEzdDRlVFpvMFFZY09IZURuNTRmRGh3K2pSWXNXbURObkRrSkRRL0hKSjUvZ3l5Ky9ST3ZXcmVIcjY2dFM1WkNJCitpQ3BQZUhnNHZ2NzZheHc3ZGd4RGhnekI0c1dMcFpvTXhTbXVkekVyS3l2MkxrWTF6cElsUytEdjc0L1UxRlRFeDhjakxpNk8xY3lxCiswYkZqeC9EKysrK0RGVXovVDRNR0RUQmd3SUJpeDZ0WHIxNkpkK2JWU1NhVG9VZVBIdWpSbzRmYXNFYU5HbFhyalRQekwrUEdqUnZSCitwMDhmL1BMTEx3Q0FFU05HNFBEaHd6aC8vandDQWdMdzZhZWZ3dC9mWHlNNkxpQWlxZ3ZDd3NMdzlkZGZJeWdvQ01PR0RVTllXSmpVCitFVTVCZUROS3Fpdnk3amZUb0VFRHRwZlJJQXd6Vkswc0xDd3dZOFlNekpzM0Q1R1JrU3FCNXQxMzM0V3JxeXUrL3ZwcmZQUE5OMWkrCitmTGxhdXg4aUlxb1l2LzMyRzc3KyttdWNQbjBhenM3T0NBOFBoNldscGNvNHZCa2wxV1hXMXRhUXkrVklTVWxoZXhtR0dhTC9iOW15CitaZmo1NTUveDdiZmZTbDF2NXdXYWdRTUh3c2ZIQjF1MmJJRmNMb2VGaFFYbXpKbUR4WXNYOHhjUklxSUtFQndjaktWTGwrTGN1WE53CitkWFhGbFN0WDBMdDNid0JGVnhlenNyTGl6U2lwVHFsWHJ4N016YzF4N2RvMWhobUdHYUwvejlEUUVDdFhyb1NucHljbVQ1NWNZS0RSCiswdEtDdDdjMzlQWDFNVy9lUEFRRUJHRDkrdlVxOXlBaUlxS1MrL1hYWDdGMDZWSmN1SEFCSTBlT1JFaElDTEt6czNIMjdGbXNXTEdDCisxY1dJQ3RDOGVYTUE0UDFsR0dhSVZIMzQ0WWZZdW5VclB2MzBVeHc0Y0VBdDBPUnhjM1BEMEtGRHNYTGxTclh1dVltSXFIam56NS9ICiswcVZMRVJ3Y2pGNjllbUhVcUZHNGMrY08rdlhyeCtwaVJNWHc5dmJHaXhjdldEdUVZWVpJbFphV0ZqWnMySUMrZmZ2aTFLbFRjSEp5CitVZ2swK1h0Y3ExZXZIcFl0VzhaQ0l5SXFoYjE3OTJMQ2hBa0FBRzF0YlNpVlNzVEd4c0xJeUFnalI0N0UyclZyV1YyTXFCalcxdFlZCitQSGd3QzRKaGhraWRqWTBOUHZ6d1EzaDZlaUl5TWhJNk9qcFNvRm0vZnIxMG85Q2E0czgvLzhURWlSUFJyRmt6YUdscDhRdW1DdmY4CisrWE1zWDc0Y3JxNnVkZVl6di9QT08zajQ4Q0ZQdUVzaE9Ua1pNVEV4MG8yZ2daY04rUUhneFlzWENBb0tRbEJRRUpZdFd3YVpUQ1pkCitoY243cjZPam8vSmNMcGRESnBOQlcxc2JMVnEwZ0tHaFlhMHBxMy8vL1JkdnZmVVdObXpZVUdmV2orKy8veDdyMTYrSHNiRXhONVlTCit5c3JLd3FCQmcxZ1FKWkNkblkzMDlIUWNPM2FzMHRZeGhoblNLQ3RYcm9TWm1SbldyVnVIeno3N0RES1pER3ZYcnNXV0xWdXdaczBhCit2UDMyMnhnNGNHQ04rQ3lKaVltNGZ2MDYzTjNkWVdCZ3dDK1hLdHpxMWF2eDhPSERPdldaRHg0OGlNYU5HOFBEdzRNclFDazRPanBLCitJU1luSjBmNnIxUXFrWjJkcmZaZkNJR3NyQ3pwZjk0SkhBQmtabVpLLzl1M2I0K09IVHZXcW0wcU96dTdUcTBiTVRFeGlJeU1oSmVYCitGemNVcW5CUlVWRzRlUEdpdE45Z21LRmF6OGpJQ0V1WExzV1hYMzZKZDk5OUY2MWF0WUpNSm9PK3ZqNXNiVzFWT2dXb0tWYXRXc1V3CitRNVhpK1BIamRlNHp0MjNiRnQ3ZTNnd3pWQ2xrTWhsQ1FrTHEzT2QyZG5iR3FsV3J1QUpRcFlTWnlqNVdzZTRMYVp6WnMyZWpRNGNPCittRDkvdnNyckV5Wk13UFRwMHpGaXhBaWNPWE9HQlVWRVJFUlV4ekhNa01iUjF0YkcrdlhyRVJBUWdPRGdZT24xdkNwbkREUkVSRVJFCitCTENhR1drb2UzdDd6Snc1RTgrZVBWTjVQUy9RQUtpUlZjNklpSWlJaUdHRzZnQmZYOThDWDJlZ0lTSWlJaUtHR2FxeEdHaUlpSWlJCitpR0dHR0dpSWlJaUlpR0dHaUlHR2lJaUlpQmhtaUJob2lJaUlpSWhoaGhob2lJaUlpSWhoaG9pQmhvaUlpSWdZWm9nWWFJaUlpSWlJCitZWWFJZ1lhSWlJaUlZWWFJZ1lhSWlJaUlHR2FJR0dpSWlJaUlpR0dHaUlHR2lJaUlpQmhtaUlHR2lJaUlpQmhtaUJob2lJaUlpSWhoCitob2lCaG9pSWlJZ1lab2dZYUlpSWlJZ1lab2dZYUlpSWlJaUlZWWFJZ1lhSWlJaUlHR2FJR0dpSWlJaUlHR2FJR0dpSWlJaUlpR0dHCitpSUdHaUlpSWlCaG1pQmhvaUlpSWlJaGhob2lCaG9pSWlJaGhob2lCaG9pSWlJaXFOY3hjdUhBQlo4NmNZYWxRaFl1S2ltS2dJU0lpCitJcUxLQ3pOcGFXa1lOR2dRUzRYcVBBWWFJaUlpb2hvVVp2N3puLy9nUC8vNUQwdUVpSUdHaUlpSXFHYUZHU0ppb0NtTUVBTGg0ZUU0CitjZUlFbmoxN0JtTmpZMWhhV3VMdHQ5OUd2WHIxa0ppWWlKOS8vaG5UcGsyVHBubnc0QUdTa3BMSy9KNkdob1o0N2JYWGloMHZLeXNMCitJU0VodUhyMUtoNDllZ1NGUWdGRFEwTjA2TkFCTmpZMjZOaXhJMlF5R1o0OGVZSlRwMDVoOHVUSlhMR3BXZ1VGQmNIRXhBUmR1blRSCittR1Y2OXV3WkFnTURjZTdjT2V6ZHUxZGwyTDE3OStEaDRRRURBd05zM2JvVkJnWUcvQktweXRiTEZ5OWVGRHE4YWRPbWFOV3FWWUhICityT2pvNkFLbmFkKytQUm8wYUZCaDYzWlIydzR4ekJBeDBHaUFGeTllWU5La1NUaHg0Z1NhTjI4T1cxdGIzTDkvSDc2K3Zzakt5b0tMCitpd3NlUG53SXVWeXVFbWIrL1BOUEJBWUc0cWVmZmtKQ1FvTEtQTFcwdENDVHlhVG5TcVVTUWdpVmNUNysrR09wM0F2eTc3Ly93c2ZICitCOXUyYlVOQ1FnS2FOR2tDUzB0TEdCc2I0OEdEQjlpK2ZUdWVQSGtDVTFOVDJOblpJU3dzREQxNzltU1lvV3FsVkNveGQrNWMyTmpZCitZTStlUGRXK1BGdTNic1gyN2R0eDdkbzFDQ0ZnYUdpb05zNmFOV3R3NHNRSkFJQ3RyUzA4UFQzNVJWS1YrT2VmZitEbjU0ZGR1M2FwCitIQ002ZGVxRThlUEhvMSsvZm9XR21hQ2dJUHoyMjI4NGZQZ3dBTURBd0FDelpzM0NSeDk5SklXWjhxemJKZGwycUlvSW9ockF3TUJBCis3TjI3dDFxWFFhbFVDazlQVDFHL2ZuMXgrdlRwWXNjUERnNFdBRVJpWW1LTkxmZU1qQXhoWVdFaEFJakpreWVMakl3TWFWaDJkcmJZCit2SG16cUZldm5nQWdPbmZ1WE9BOFFrSkNCQURwTHlRa3BNRHhzckt5eE8zYnQ4V1NKVXNFQURGcjFxeENsK3ZFaVJQQzJOaFlBQkF0CitXN1lVZS9ic0VkbloyU3JqS0JRS2NmVG9VZkhHRzI5STcrM3E2bHFydGd0emMzUGg2K3RicC9ZRmJkdTJyZEdmK2ZqeDR3S0EwTkhSCitFWThlUGFyMjVWRXFsU0lwS1VsMDdkcFZBQkNHaG9acTQyemJ0azBBRURLWlRKdzllN1pXcjEvZTN0N0N6czZ1VG0xVDN0N2V3dG5aCitXYU9YMGNmSFIrVTQ4dE5QUDVWNDJpNWR1Z2dBNHNTSkV4VzZicGRrMnlFaElpTWpCUUFSR3h0YjRmTU9EQXdVQmdZR1FvdHhqcWgwCitWMmltVDUrT0VTTkcxSW1lLzdadDI0YnIxNitqU1pNbTJMeDVNL1QxOWFWaE9qbzZjSGQzeDVreloxQ3ZYajA4ZXZTb3dIbFlXVm1wCitQQy9vVnpRQTBOWFZSY2VPSGZIVlYxOWg4dVRKeU1uSktYQzhIMy84RWNPR0RjUHo1OC9SdFd0WFJFUkVZTUtFQ2REUjBWRzcrdVBpCis0b0pyMTY3QnhzWUdBSkNlbnM0Vm1hclZoZzBiQUFBNU9Ubnc5ZlhWaVAxYTQ4YU4wYjE3OTBMSG1UNTlPaTVmdm95b3FDaTgvZmJiCisvQktweXMyYk53OXZ2dm1tOUR3a0pLU2tQOWdqTGk0T2RuWjJHRHg0Y0lXdTJ5WFpkcWhxTU13UU1kQVU2c2lSSXdBQVUxTlQxS3RYCityOEJ4M25yckxYenp6VGRJU1VsQlNrcUsybkFkSFIxb2FaVnVWek51M0Roa1oyZXJ2WDcxNmxWTW1USUZTcVVTRFJzMnhOR2pSOUd5CitaY3NpNTlXa1NSTWNPWElFUmtaR1NFdEw0MHBNMWViT25Uc0lDZ3FDdHJZMkFHRExsaTNJeU1qUWpKT0JZclpSS3lzcmRPM2FsVjhpCitWUXU1WEk3Rml4ZEx6LzM5L1V1MFB3OFBEOGZ6NTgveDBVY2ZWZHE2WGRyakd6SE1FREhRVktISGp4OUxKMkZGWGRXWVBuMDZXclJvCitJWTFmVUptVmhxT2pJNVl1WGFyeW1sS3B4SXdaTTZRck52UG56MGY3OXUxTE5EOGpJeU40ZVhueHlneFZLMTlmWDFoWldXSENoQWtBCitnUGo0ZURZWUppcWgwYU5IdzhURUJBQ1FsSlNFSFR0MkZEdk45OTkvaitiTm0yUGt5SkVzUUlZWklxcUxnYVpKa3lZQWdPVGtaQ3hZCitzS0RROFhSMWRURnAwaVQ4KysrLzVYN1BGeTllUUY5Zlh6cG81VGx4NGdRaUlpSUFBTnJhMm5CM2R5L1ZmQ2RObW9Tc3JDeXV2RlF0CitVbE5Uc1hQblRzeWVQUnV6WjgrV1h2L3ZmLytyMXZsRlZSQkNRS2xVbG1tNmtpckwvSWtLSTVmTDhmSEhIMHZQMTY1ZEM0VkNVZWo0CitLU2twK1BISEh6RjU4bVRvNmVsVjJMcGQxbTJuUE5OeVcyS1lJV0tnS2FQOE45RmR2MzQ5UHY3NDR3S3Jmd0dBajQ4UGJHMXR5L1YrCitTcVd5MEo3aWZ2enhSK214cmEwdGpJeU1TalZ2SXlNajdOeTVreXN1VlF0L2YzL0k1WEtNSFRzV2xwYVdzTGEyQmdCRVIwZmo3Tm16CitSVTY3Zi85K2pCOC9IaTR1TG5CeGNWR3BicE9VbElTNWMrZGkrUERoMHZCWHIycm1kK3pZTVF3Y09CQ3Z2ZllhT25Ub2dKNDllK0xBCitnUU5Gdm45S1NncCsrT0VIREI0OEdPdldyU3Z5UkMwd01CRERodytIcWFrcDJyZHZqOGFORzZOLy8vN3c4L01ydEIwY1VVbE5uVHBWCis2ajc1N3QyN1VrOWxoUjB6MHRMU01IMzY5SEt2MjJYZGRnQWdPenNidnI2K3NMYTJocjYrUG5SMGROQzFhMWY0K1BnVStnTWJ0NlhTCitwMFFpOW1aV0NiMmMxWWJlek9MaTRzUnJyNzJtMG91TWhZV0ZDQThQTDlWOHRMVzFwZW52M3IxYjZIZ2hJU0hDeE1Ta3dHR3RXcldTCis1dUhwNmNtTmdyMloxUmhLcFZKMDdkcFZlSGw1U2EvNSsvdEw2M05KZXBLNmQrK2VrTXZsQW9BWVBIaXcydkRvNkdocE95dG9mZ3FGCitRc3llUFZ2STVYS3haY3NXcWZlLzZPaG9ZV0ZoSVJvMWFxVFdJMU4wZExRWU8zYXMwTmZYbDViMW0yKytLWEQ1MHRQVHhlalJvNFdlCitucDdZdlh1M3lNbkpFVUlJY2Z2MmJkRzNiMThCUVBUbzBhTlNlalJpYjJhMXZ6ZXovRDcvL0hOcGZlemJ0MitoMjF6UG5qMUZ2Mzc5CitDaHhlbW5XN0xOdE9ucWRQbjRvK2ZmcUk2ZE9uaThqSVNQSG8wU054Nk5BaDBhSkZDMm41MDlMU2F1VzJWSlc5bVRITUVNTk1KUVdhCisyaEJtaEJEaTk5OS9GODJiTjFjSk5BREV4SWtUeGNPSEQwc2RaZzRlUENoQ1EwTlYvbjc5OVZleFpjc1cwYTVkdXdMRFRISnlzc3A3CityMW16aGhzRncweU5jZmJzV1NHVHlWU0NmR1ptcHRTOU9BQng4K2JOWXVkamFtcGFhSmdSUWdnVEU1TkN3OHlpUllzSzNYWWVQMzRzCitHalJvb0haQ2xwcWFLakl6TThYdTNidUxQT0ZUS3BWaTdOaXhBa0NCMzAxS1Nvcm8zTG16QUNBNmRlb2tVbEpTR0dZWVpzcnN3WU1ICitVckFISU1MQ3d0VEd1WExsaWdBZy9QMzlDNXhIU2RmdHNtNDdRcnk4ZlVHZlBuM0VxRkdqaEZLcFZCbTJmLzkrNlgyOXZiMXI1YlpVCitsV0dHMWN5SVdPV3NTRDE3OXNTMWE5ZlV1cTNjczJjUE9uZnVqRzNidHBXcUhyMmJteHRzYlcxVi92cjM3dzkzZDNmY3UzZXZ3R25pCis0dUpVbmpkczJKQXJIZFVZR3pkdWhJdUxDOXExYXllOXBxZW5oNWt6WjZwVTR5eU9YQzR2MC9DLy92b0xLMWV1aEtHaFlZRzlPcjMyCisybXNZTUdDQTJ1c05HalNBbnA0ZTdPM3RpM3pmb0tBZzdOKy9IMDJiTnNYVXFWUFZoamRzMkJBK1BqNEFnRnUzYnVFLy8va1BWd29xCitzOWF0VzJQY3VISFM4KysrKzA1dG5LMWJ0NkpwMDZaNDU1MTNDcHhIU2RmdHNtNDdBTEJ6NTA1Y3ZYb1ZjK2JNVWVzRVovanc0ZEt0CitEclp1M1lyYzNGeHVTK1hBTUVOVVNZSG02dFdydGVhenRXM2JGbWZPbk1HK2Zmdnd4aHR2U0srbnBxWmk1c3laUmQ0WDVsVTNiOTVFCitSa2FHOUplZW5vNmtwQ1JjdlhvVmZmdjJMZEU4aW1yMFNhUkpZbU5qY2Zqd1laVkcvM2xtenB3cGRkTzhhOWN1SkNRa1ZNb3lyRnUzCitEZ3FGQWdNSERvU3VybTZCNHpScTFLalE2Vis5aDlPcjh1NlhZMlZsVmVqOGh3MGJCbU5qWTdXVE42S3krT1NUVDZUSFAvLzhNMkpqCitZNlhueWNuSitPbW5uekJ4NGtTVmU2T1ZaZDB1ejdiajUrY0g0R1gzMEJzM2JsVDU4L1B6UTdObXpRQUFDUWtKdUhIakJyY2xoaGtpCit6UXMwUmZYK1ZWTS8yOWl4WTNIanhnMHNYYnBVNVZmZ1BYdjJZUExreVNXNlFxT25wd2Q5ZlgzcHIxNjllbWpjdURGNjkrNk56WnMzCitGemhOMDZaTlZaNi9lcVdHU0ZOdDJiSUZiN3p4aGtwbkdubGF0V29GTnpjM0FDOXY2THA5Ky9ZS2YzOGhoTlJJdW5QbnpoVStmNlZTCitpUXNYTGdBQW1qZHZYdWg0MnRyYTZOKy9QNENYWFZKSFIwZHo1YUF5NjlXckZ4d2NIS1IxTVArVnpaSTAvSy9zYlNjNU9SblhybDJECit0clkybmp4NWdwaVlHTFcvTVdQR3dOUFRFNTZlbnREUzB1SzJWQTV5YmhKRWxSTm9IajkrWEtLZVRtb2FQVDA5TEY2OEdFT0dETUdJCitFU1B3OU9sVEFNQlBQLzJFVWFOR1ljeVlNV1dlZDdkdTNkQ3FWU3UxMTVzMGFRSmpZMk04Zi80Y0FCQVRFOE1WalRSZVJrWUcvUHo4CitvRkFvQ3IxTGVIeDh2UFI0dzRZTm1EZHZYckhWeVVyanhZc1gwalphMU5XWHNvcVBqNWR1WGxqY0w4U2RPbldTSGo5OCtCQTlldlRnCitTa0psOXVtbm4wb24vMzUrZmxpeVpBa2FOV3FFclZ1M3d0YldGdDI2ZGF1MmJlZnUzYnRTTjh4cjFxeVJyc0FXOTM3Y2xoaG1pRFFxCiswTXlaTTZkR2g1blUxRlEwYU5DZzBCdGVXbGxaSVRnNEdMYTJ0dEtWRWw5ZjMzS0ZHWmxNaHQ5Kys2M0FZWFoyZGpoNDhDQUFJRFEwCitsQ3NaREU5UUp3QUFHQWRKUkVGVWFieUFnQUNrcHFiQ3g4ZW55THVFcjFpeEFrK2ZQc1dEQnc5dzZOQ2hjbTFEcjhwL0ZUTXpNN1BDCitQMlArS3A5NUozNkZNVFEwbEI2WDVPU09xQ2pEaGcxRHAwNmRjT3ZXTGFTa3BHRDc5dTJ3dDdmSDlldlhLNlFiL3ZKc08zbWhSQWlCCisrL2Z2bCtnR3o5eVdHR2FJTkRMUTFHVHU3dTZZTldzVzNucnJyVUxINmRDaEEzeDhmUERoaHg4Q0FQNzQ0NDhLWFlhSER4L0N5TWdJCitlbnA2R0R0MnJCUm03dHk1ZzZpb0tKaWJtM05GSTQwa2hNQ0dEUnN3WnN3WXpKMDd0OGh4NCtQajhkVlhYd0Y0ZVJQTmlnd3orVzhXCisrUGZmZjFmNDUyemV2RGwwZEhTUWs1T0Q2T2hvQ0NFSzNmZmx2L0ZmL3JaM1JHV2hwYVdGVHo3NVJPcElZOTI2ZFlpTWpFVGp4bzByCitaQnNxejdaVHYzNTk2WEZJU0VpSndneTNwWEtzQzl3Y2lLaXdvTEo4K2ZKaXg4dC9vOHlTM0dXNXBKS1NrbUJwYVNsZGJuZHpjMU01CitJQlRVZ3cyUnByaDQ4U0lpSWlKS1ZHOS81c3laVWtQa1M1Y3VJVHc4dk13QjZsV3RXN2VXNW4zaHdvVlM5VHhZRW5LNVhMb0JhRnhjCituTlNRdVNCUG5qd0I4TEt0VU1lT0hibVNVTGxObkRoUmFsOXkvLzU5N042OUd4TW1URUNEQmczS1BlL3liRHVtcHFaU0VQSHo4eXR5CisycnlPZExndE1jd1FVU1dFbWFDZ29DTHZzQXk4YkJlUXg4Ykdwc1FuV2NWWnRHZ1JPbmZ1TEIyVWRIUjBzR25USm1uNHJsMjdjUHIwCis2UkxQTHpFeEVhNnVybmoyN0JtL1hLcDBxMWV2aHBtWldiRmR2d0pBeTVZdE1YcjBhT241MnJWckN4d3ZyenBKZW5wNmdkdFlTa3FLCisydXQ2ZW5wU1krRzdkKzhpS0Npb3lHMjBvRzIxdU8zM2d3OCtrQjRIQkFRVU9sNWVTSE4zZDYveFY2NUpNOVNyVncrelpzMVNlYTAwCitEZitMV3JmTHMrMDBhdFJJQ2liQndjSFlzMmRQZ2RQbTV1Wml5cFFwY0hKeTRyYkVNRU5FbFJGbThuYXVSZjFDbEw5ZFVQN3VNdk5rCitabWFxWEJJdjdzUW9yM3JPaGcwYjFIcUFHanAwS05hc1dTTTlkM056UTJCZ1lMR2ZKVFEwRkphV2x1alhyeDlhdEdqQkw1Y3ExWlVyCitWeEFVRklReFk4YVUrRVRqdmZmZVU5bW1DcXJXa25kbDh2TGx5N2g5KzdiMHVrS2h3SW9WSzZTUWs3OVRBUUNZTjIrZTlOakR3d01QCitIejVVQy9vaElTRUFYdmJDbEpxYXFqSThmN2ZyQlRWTW5qUnBFaXd0TFFFQW16ZHZSbUppb3RvNHQyL2ZSbkJ3TU16TXpGU1doNmk4CitaczJhSmRVSzZOT25EeXdzTEVvOGJYSHJkbm0ySFU5UFQrbnh0R25Uc0g3OWVtUmxaVW12M2JsekJ5NHVMc2pPenBaNk5lUzJ4REJECitSSlVRWmhJU0VtQm5aNGVmZnZwSnBZR2lVcW5FamgwN3BCdDRMVisrdk1CZm9WOE5HenQyN0VCWVdCaGlZbUp3Nzk0OTNMMTdGemR2Ciszc1RGaXhleGFkTW0yTnZiUzIwTUJnNGNxRGEvVHo3NUJQdjI3VU96WnMyUW1wb0tWMWRYdUxtNTRlVEpreXEvV0tlbXBpSW9LQWp2Cit2UE1PWEZ4Y3NHelpNbnorK2VmOFlxbFNaV1ptU3I4VWw2WlhzdnczMUZRb0ZKZzNiNTdLandCNVB5d0FRSFoyTnV6czdPRGw1UVZ2CitiMitZbTV0RENDRjFWUnNXRm9iMzMzOGZ4NDRkQS9DeW9iU0hod2VBbDFWeGV2WHFoUlVyVmlBd01CRGJ0bTJEbzZNakRBd01wQk82Cis3dDI3cTl6UU0vK1BHYmR1M1ZKYmRybGNqa09IRHFGVHAwNklqNC9IaEFrVHBBYlFlZnVRaVJNbm9rMmJOZ2dNREt5UUtrQkVlVnEwCithSUdKRXljQ0FHYk1tRkdxYVl0YnQ4dXo3WXdiTjA2NnVXZE9UZzQ4UFQzUnZIbHo5T2pSQTZhbXBqQXpNME5TVWhMOC9mMmxIejI0CitMWldSSUtvQkRBd014TjY5ZTJ2VU1nY0hCd3NBSWpFeHNVYVd1VktwRkFZR0JtTEpraVhDeTh0TG1KbVppUll0V29naFE0WUlWMWRYCiswYlp0V3dGQW1KcWFpcDkvL2xsdGVqOC9QekZnd0FDaHJhMHRBSlQ2ejhEQVFPVG01aGE2ZkhGeGNXTEpraVhTY2dBUU1wbE1HQm9hCitpbWJObWdrQW9rMmJObUxSb2tVaUxpNnVWbTRYNXVibXd0Zlh0MDd0QzlxMmJhdXhuM24vL3YyaWMrZk8wdm9vbDh2RnFGR2p4UEhqCit4d3VkNXErLy9oS1RKMDhXN2RxMVU5c0dldmZ1TFg3NTVSZVZiWExwMHFWQ0xwZEw0elJyMWt4czI3Wk5DQ0dFczdPemFOKyt2ZkQyCis5aGFob2FFcTI0OUNvUkRmZlBPTmFOcTBxY3A3bUppWWlIUG56b24zMy85LzdkMS9kTlYxL2NEeEY5dmR4Z1p6VG40VkVUL3EyRElDCitBOUVnRWF4T0J4STlrT21SVUE2ZE9xRVFFVCtVTURyUU9YS0M2bVFIUzRxQWxITThtZ2RQSFRNTXpCTjRHSEZVMUNVSnlWa29uRkorCitqRE1Zc3JHTjdkTWZmdG5YeGE4cEc5eTdQUjUvN1c3M2ZuYnYrM012N0xuUGZYMTJlOUt0VzdkazJyUnB5ZWJObTVPR2hvWmswNlpOCit5WXdaTTVMdTNiczNlNDFObkRneGVleXh4MDU1TEVlT0hFbG16NTZkRkJZV0pyMTc5MDZtVHAyYWZPTWIzMGo2OWV1WDNIWFhYUm54CitPcHcvZjM0eWN1VElEdldhbWo5L2ZqSnUzTGlNZmd3N2R1eElDZ3NMazZxcXFoWmQvLzA4dHovSWErZWsrdnI2Wk5HaVJVbGhZZUVwCisvNy85NEFjL1NHcHFhazU3LzlyRGErbWtWMTk5TlltSVpNK2VQYTIrN1QvOTZVOUpVVkZSMGlscDdXbEFhQU9YWG5wcExGKyt2TmxiCitNZEpkYVdscFhIZmRkWEg0OE9HbTM5eGttcWVmZmpwdXVPR0drNy80aUYyN2RrVlpXVmtjT25Rbzh2UHpZOUNnUVRGMDZOQ3pubmIyCitBdnhDSm5idDJoWC8rTWMvb3FLaUlob2JHNk5uejU0eGNPREFLQ2twYWRmdkp4NDhlSEJNbXphdDZUZUhIVUcvZnYxaS92ejVIZW94CisvNitEQnc5R1dWbFo1T2ZueDdCaHc1cit5dm51M2J1amYvLytaMzA5MXRiV1JsbFpXVlJVVkVUUG5qMWp5SkFoa1VxbG9yeThQUHIxCis2M2ZPdjRqZUVyVzF0Zkgzdi84OUtpb3Fvcmk0T0s2ODhzcG1aM2RLWi9mZWUyK1VscGJHNXMyYk84eno2ZDU3NzQzdDI3ZTM2QzI3Cis2ZXpsbDErT29VT0h0dG4yeitlMVUxTlRFMlZsWlZGWldSazlldlNJd1lNSHQraUVPWm44V2pwcCsvYnRNWGp3NE5pelowLzA3ZHUzCitWYmU5YnQyNnVQMzIyNTJhR1Rpemt5RVQ4ZTZwcGt0S1NwcjlzYTUwa0s3M0M5cEtqeDQ5VHBrbmkyalpLVnJ6OHZLYUJwUGY2K1RiCitTbHREWGw1ZVhIUE5OWFlVRjFSYmhzejV2bmJ5OC9PYm5mblRhNmwxbVprQkFBREVEQUFBZ0pnQkFBQVFNd0FBZ0pnQkFBQVFNd0FBCitBR0lHQUFBUU13QUFBR0lHQUFCQXpBQUFBSWdaQUFCQXpBQUFBSWdaQUFBQU1RTUFBSWdaQUFBQU1RTUFBQ0JtQUFBQU1RTUFBQ0JtCitBQUFBeEF3QUFJQ1lBUUFBeEF3QUFJQ1lBUUFBRURNQUFJQ1lBUUFBRURNQUFBQmlCZ0FBRURNQUFBQmlCZ0FBUU13QUFBQ0lHUUFBCitRTXdBQUFDSUdRQUFBREVEQUFDSUdRQUFnRFNUc2dUUXR0YXVYUnRGUlVVV2dsYTNmZnYyRHZlWUt5b3FZdTNhdGRHOWUvY084NWdiCitHaHJpK1BIajBhVkxGMDk2LzE2M2lYWHIxc1hhdFdzOUFWcWd1cm82OHZQem8xT25UaFlqVGY2ZkVqUFFWaSt1MUxzdnI5bXpaMGRPCitUbzRGb1UzazVlVjFxTWRiVkZRVUd6ZHVqTEt5c2c3em1PdnE2cUs2dWpyeTh2S2ljK2ZPZm9ocVE1V1ZsVEY2OU9nTzlaano4L01qCitJdUxPTysvMEJEaUgydHJhcUttcGlZS0Nnc2pOemJVZ0xYRGt5SkdJaU1qS2FyczNnNGtaYUNQRGh3K1BKRWtzQkxTaXQ5NTZxOE05Cis1cnE2dWxpMWFsVXNYYm8wcXFxcVl1Yk1tVEZyMXF3b0xpNzJoT0M4TFZ5NE1CWXVYR2doem1MOSt2VXhkKzdjMkx0M2I5eDMzMzB4CitaODZjcGdqazRqTXpBd0JwTERjM042WlBueDdsNWVYeG94LzlLQjU2NktFWU1HQkFMRnEwS0Nvckt5MFF0Skh5OHZJWVAzNThqQnMzCitMb1lQSHg2N2R1MktCUXNXQ0JreEF3Q0lHa2hQaHc4ZmpydnZ2anNHRGh3WVZWVlZzVzNidGxpOWVuVjgrTU1mdGpoaUJnQVFOWkIrCitUcHc0RWN1WEw0L0xMNzg4MXE1ZEcydldySW1OR3pmR2tDRkRMSTZZQVFCRURhU245ZXZYeDVWWFhobmYrOTczWXRhc1dmSFBmLzR6CitKazZjYUdIRURBQWdhaUE5bVlzUk13Q0FxSUdNWWk1R3pBQUFvZ1l5aXJrWU1RTUFpQnJJT09aaXhBd0FJR29nbzVpTEVUTUFRRHVOCittb1VMRjRvYTJpVnpNV0lHQUdqblVmUHd3dytMR3RvVmN6RmlCZ0FRTlpCeHpNV0lHUUJBMUlnYU1rcDVlWGxNbUREQlhJeVlBUUJFCitqYWdoTTd4M0x1YklrU1BtWXNRTUFDQnFSQTNwelZ3TVlnWUFFRFZrSEhNeGlCa0FRTlNRVWN6RklHWUFBRkZEUmpFWGc1Z0JBRm85CithcFlzV1NKcWFEUG1ZaEF6QUVDYlJjMjBhZE5FRFczQ1hBd3QxU2xKa3NReWtQWlAxRTZkWXZEZ3dURnAwaVNMQVpDR0dob2E0c1VYCitYNHlOR3pkR2JXMXRYSHZ0dFRGeTVFanpETHd2aHc0ZGluWHIxc1hPblR2anFxdXVpakZqeGtSaFlhR0Y0UlRyMXEyTHpaczNpeGt5Cit3elhYWEJOVlZWWFJ0V3RYaXdHUXhwSWtpWXFLaXRpM2IxODBORFJFejU0OW8xZXZYcEdkblcxeE9Hc012LzMyMjNIZ3dJSG8yclZyCis5T25USndvS0Npd01aMVJkWFIxZHUzWVZNd0JBNjZ1cnE0dlZxMWZIa2lWTG9xcXFLbWJPbkJtelo4K080dUppaTBPVEV5ZE94RzkrCis4NXRZdEdoUkZCUVV4STkvL0dOdkorTjlFVE1BZ0tqaGdsdS9mbjNNblRzMzl1N2RHL1BuejQ4NWMrWjRXeUppQmdBUU5hU3Y4dkx5Cit1UHZ1dStPcHA1NktyMy85NjdGNDhXS25XZVlEY3pZekFLRE5PZnNaL2w0TWJjR1JHUURnZ25Pa3B1TXdGNE9ZQVFCRURSbkhYQXhpCitCZ0FRTldRVWN6RmNLR1ptQUlDTHpreE4rMkF1aGd2TmtSa0FJTzA0VXBOWnpNVWdaZ0FBUkUzR01SZURtQUVBRURVWnhWd002Y0RNCitEQUNROXN6VXBBOXpNYVFUUjJZQWdJempTTTJGWnk0R01RTUFJR295anJrWXhBd0FnS2pKS09aaVNIZG1aZ0NBakdlbXBuV1ppeUZUCitPRElEQUxRN2p0UjhNUDg3RjdOMDZkTDQydGUrWm1FUU13QUFvaVo5bVl0QnpBQUFpSnFNWWk2R1RHWm1CZ0JvOTh6VW5NcGNETzJCCitJek1BUUlmVEhvL1V2UG5tbS9IbW0yL0c5ZGRmZjlicm1ZdEJ6QUFBZFBDb09YYnNXRHo3N0xNeGZ2ejRpLzQ0ZHUzYUZTVWxKVTJQCitLU2NuNTdUWE14ZERlK050WmdCQWgzVStiei83NVM5L0dSTW1USWlsUzVkZTFNZXdjK2ZPdVBiYWF5TTdPenV5c3JMaWdRY2VPT1U2Cis1ZVhsTVdIQ2hCZzNibHdNSHo0OGR1M2FGUXNXTEJBeVpEeEhaZ0FBL2s5TGo5UWNPM1lzUHZyUmowWmxaV1ZrWjJmSGxDbFRZc1dLCitGWkZLcFM3by9TMHJLNHN2Zk9FTGNmVG8wVGh4NGtSRVJIVHAwaVhlZU9PTjZOR2pSeHcrZkRnV0wxNGN2L2pGTCtKem4vdGMzSC8vCisvVEZreUJBN0dqRURBTkJSbythblAvMXBMRml3SU9ycjZ5TWlJaWNuSjBhT0hCbC8rTU1mb3FpbzZJTGN4NWRlZWlrKy8vblBSM1YxCitkVFEwTkRSOVBqYzNOeVpObWhSWFgzMjF1UmpFREFDQXFQbi9xTG56emp0ajBLQkJwN3dOTFRjM053WU1HQkRQUFBOTTlPM2J0MDN2CisxNVl0VzJMTW1ERngvUGp4WmlIelhnVUZCZkg5NzMvZlhBeGlCZ0JBMUx3Yk5RY1BIb3o2K3ZyVFJrUk9UazVjY3NrbHNXSERocmpxCitxcXZhNUw1czJyUXB2dnpsTDBkZFhWMDBOamFlOWpwWldWa3haTWlRMkxadG01MkhtQUVBSUtLeXNqTDY5T2tUMWRYVlo3eE9kbloyCitwRktwZVB6eHgxdjlUR2NiTm15SThlUEhSMzE5L1JsRDVyMUI4N3ZmL1M1dXZmVldPNDUyeTluTUFBQmFhTldxVlUxek1tZlMwTkFRCitkWFYxY2ZQTk44ZXlaY3RhN1hzLzlkUlRjZU9OTjU3MWlNeDdKVWtTMy8zdWQrUDQ4ZU4ySEdJR0FLQWpPM2JzV0N4WnN1U2NNWE15CitKQm9iRzJQT25Ebng3VzkvKzR4ekxTMzF4Qk5QeE0wMzN4d25UcHlJbHI2cEprbVNlUHZ0dHkvNnFhTkJ6QUFBWEdUTGxpMkxvMGVQCit2cS9iTkRZMnhzcVZLK09tbTI2S2Q5NTU1d045MzBjZWVTUnV1KzIyOXhWRWVYbDUwYWxUcDRpSWVPMjExOEpVQWUyVm1Sa0FnSE9vCitxYW1KZ29LQ2lIajNyR1YxZFhYdjYvYTV1Ym54aVU5OElqWnMyQkM5ZS9kdThlMVdyMTRkVTZkT2JkRjhUQ3FWaXJxNnVoZ3dZRUJNCittREFoeG80ZEc2TkdqWXJPblR2YmdZZ1pBSUNPYk4rK2ZiRjE2OWJZdW5WclBQZmNjMUZXVmhaMWRYV1JsNWZYb29IOG5KeWNLQzR1CitqbWVmZlRZR0RScDB6dS8zNElNUHhuZSs4NTB6SGxYSnk4dUx1cnE2eU0zTmpTOSs4WXR4MDAwM3hkaXhZNk4vLy81MkZtSUdBSUF6CitxNit2ajVkZmZqbWVmLzc1K052Zi9oYWJObTJLL2Z2M1J5cVZpdXpzN0tpdHJUM2xObGxaV1pHWGx4ZS8vLzN2WSt6WXNXZmM5czkrCis5ck9ZTjI5ZXMwQnk5QVhFREFCQW0vblBmLzRUTDd6d1FtelpzaVUyYmRvVXI3NzZhdFRYMTBmbnpwMmp0cmEyMlZHV1gvM3FWM0hYCitYWGVkc28zNzdyc3ZGaTVjR0JIdm51YTVzYkhSMFJjUU13QUFGMVpkWFYyODhzb3JzWFhyMXRpOGVYT1VscGJHZ1FNSG1yNytwUzk5CitLZGF2WHg5WldlK2VrMm5hdEdueDYxLy9PaUlpK3ZmdkgxLzV5bGNjZlFFeEF3QmNLUHYyN1lzLy92R1BGdUlNRGg4K0hQLzYxNy9pCis2YWVmam9hR2h1amJ0Mi9jY2NjZHNYNzkrdmozdi84ZEgvclFoMkwwNk5IUnJWczNpM1VXSTBlT2pFOTk2bE1XUXN5SUdRQ2c5WlNXCitsc1oxMTEwWHZYcjFpaTVkdWxpUWN6ajVOMm15c3JLYVRxZk0yZTNldlR1V0wxOGUwNlpOc3hnZFhNb1NBQUJ0NGZYWFg0K2lvaUlMCitRYXNiUEhpd1JTQWkvTkZNQUFCQXpBQUFBSWdaQUFBQU1RTUFBSWdaQUFBQU1RTUFBQ0JtQUFBQU1RTUFBQ0JtQUFBQXhBd0FBSUNZCitBUUFBeEF3QUFJQ1lBUUFBRURNQUFJQ1lBUUFBRURNQUFBQmlCZ0FBRURNQUFBQmlCZ0FBUU13QUFBQ0lHUUFBUU13QUFBQ0lHUUFBCitBREVEQUFDSUdRQUFBREVEQUFBZ1pnQUFBREVEQUFBZ1pnQUFBTVFNQUFDQW1BRUFBTnFCbENVQUFEaC9WVlZWc1hmdjN2UDd3U3lWCitpazkrOHBPeGYvLytPSGp3NEJtdlYxeGNIQi81eUVkTytYeVNKUEhhYTYrZDlqWURCZ3lJTGwyNjJGR0lHUUFBbXZ2TFgvNFN0OXh5Cit5M2x0bzJmUG5yRi8vLzdZdlh0M3JGeTVNaDUrK09GSWtxVHA2eVVsSlRGeDRzUVlOV3JVR1dQbXozLytjMnpac2lXZWZQTEppSWdvCitLaXFLNmRPbng0d1pNOFFNWWdZQWdGUFYxTlJFUkVUdjNyMWp3WUlGOGRuUGZqWXV1K3l5U0tWU1VWcGFHcE1tVFlxSWlJOTk3R1B4CiszSFBQUlpJa2NmejQ4WGpycmJmaXlTZWZqR1hMbGpWdFk4U0lFVEZpeElpNDRvb3JZdDY4ZVUzZjQ0Yy8vR0ZNbkRqeGpQY2hLeXNyCis3cm5ubnJqbm5udGk0TUNCc1dQSGpuajg4Y2RqekpneGRoQmlCZ0NBMDZ1dXJvNmNuSno0NjEvL0dpVWxKYzIrMXFOSGo2YVBjM0p5CitvaytmUGsyWEw3Lzg4aGc5ZW5SY2V1bWxzWGp4NG1hM216MTdkanowMEVPeGMrZk9pSWdvTFMwOWE4eWNsQ1JKVkZSVXhNaVJJNFVNCis3Wm9UQUFBQXRJS2FtcG9ZUDM3OEtTSFRVak5teklqR3hzWm9hR2hvK2x3cWxZcUZDeGMyWFg3a2tVZmkyTEZqNTl6V0N5KzhFQWNPCitISWdaTTJiWU1ZZ1pBQURPSFRQanhvMzd3TGUvN0xMTFl0aXdZWEg4K1BGbW43L2xsbHVpWDc5K0VSRng1TWlSK08xdmYzdk9iYTFlCit2VHE2ZCs4ZUV5Wk1zR01RTXdBQW5OMjhlZk5peXBRcDU3V05MVnUyUkVGQlFiUFBwVktwbURWclZ0UGxuLy84NTgyTzN2eXZvMGVQCit4cU9QUGhwVHBreUp2THc4T3dZeEF3REFPWDZveXNxS1RwMDZuZGMyc3JPelQ3dU5iMzd6bTFGVVZCUVJFVys4OFViVG1jcE81OUZICitINDFqeDQ3RnQ3NzFMVHNGTVFNQXdNVlZXRmdZVTZkT2JicDgvLzMzbi9aNlNaTEVpaFVyWXRTb1VSOTRkZ2ZFREFBQXJXcm16Sm1SCitTcjE3SXRvdFc3YkU4ODgvZjhwMVhucnBwWGpsbFZlYWhRK0lHUUFBTHFvK2ZmckViYmZkMW5UNWRFZG5WcXhZRWNYRnhmSFZyMzdWCitnaUZtQUFCSUgzUG16R242K0lrbm5vZzllL1kwWGE2cXFvckhIbnNzSmsrZUhKMDdkN1pZaUJrQUFOTEgwS0ZENC9ycnI0K0lpTWJHCit4bmpnZ1FlYXZtYndIekVEQUVCYW16dDNidFBISzFldWpLcXFxcWJCL3hFalJzU25QLzFwaTRTWUFRQWcvZHh3d3cxTlp5bzdldlJvCityRnExS3JadDJ4WmxaV1VHL3hFekFBQ2s4UTl2V1ZuTlptZVdMVnNXRHo3NFlGeHl5U1Z4NjYyM1dpREVEQUFBNld2eTVNblJ2WHYzCitpSWpZdTNkdnJGbXpKdTY0NDQ3bzBxV0x4VUhNQUFEUWVob2JHMXQxZS9uNStURjkrdlJtbnpQNGo1Z0JBS0RWdmZQT08wMGYxOVRVCit0TW8ycDArZkhubDVlUkVSTVd6WXNQak1aejVqb1JFekFBQzBybWVlZWFicDQ3MTc5OGFPSFR2T2U1dTlldldLeVpNblIwUVkvRWZNCitBQURRZWc0ZE9oUlRwa3lKSVVPR3hJb1ZLNXA5N2VxcnI0NGJiN3d4ZnZLVG41elg5NWd6WjA0VUZoYkd4SWtUTFRnZFVzb1NBQUMwCit2bTdkdXNXYU5XdmE5SHRjY2NVVnNXblRwaWdzTExUZ2RFaU96QUFBWkxDaFE0ZGFCTVFNQUFDQW1BRUFBQkF6QUFBQVlnWUFBQkF6CitBQUFBWWdZQUFFRE1BQUFBWWdZQUFFRE1BQUFBaUJrQUFFRE1BQUFBaUJrQUFBQXhBd0FBSUdZQUFBQXhBd0FBSUdZQUFBREVEQUFBCitJR1lBQUFERURBQUFnSmdCQUFERWpDVUFBQURFREFBQWdKZ0JBQUFRTXdBQWdKZ0JBQUFRTXdBQUFHSUdBQUFRTXdBQUFHSUdBQUJBCit6QUFBQUlnWkFBQkF6QUFBQUlnWkFBQUFNUU1BQUlnWkFBQ0E5SkN5QkFCQVcralZxMWNVRkJSWUNGcGRaV1dsUlNBaUlqb2xTWkpZCitCZ0NndFZSVVZNVEdqUnN0QkcxcTZOQ2g4ZkdQZjl4Q2lCa3hBd0FBWkI0ek13QUFRRVpLdmI3OXhhWUxKWU91dGlJQUFFQkdjR1FHCitBQURJU1A4RnB4Wm5XUzBVMzdjQUFBQUFTVVZPUks1Q1lJST0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9maWVsZHNlcV9idC5naWYuYjY0IGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2ZpZWxkc2VxX2J0LmdpZi5iNjQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjViNTU3YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9maWVsZHNlcV9idC5naWYuYjY0CkBAIC0wLDAgKzEsNDQ3IEBACitSMGxHT0RsaGN3S2ZBdWNBQUFBQUFFbEpESyt2cjBnU0VsWU1EQzhrRFY1YkVCY0hPd1lHU0VRT0RtRWFHZ29LT0JrVFZDMHRWeUFnCithRGNKQzZPam95czhEQUFZR3FTa3hWOWZGRnRkRUptWm1VQTRFRjB3TUFBQWNBb1RIVFpISjBnWUdBY01Ud2NTTzI5SVNGVUhCMkFWCitGWGQzWUFjSE1SVVZRaUlBR2c0SFQzdDdleXdPSjNkM2R3Y0hTRUVnQUJNdURuZDNPR3BrU1FBQVlsWkdCekVFQkdKbERDc3RDeHdjCitXUWNIU3prUkdXQnRZQzBBQUNBM0FCQUtOaEFRVFRNd0RBMFZRRDRBQUVZVkZWVlZWU1FNSlFVTE9COGZRU2NuWUJnWVJENVZQbVptCitERVpSQjJaaURBb0tTZ0FBVkF3UU9INStsQndjUys3dTdob2FTVDQrWDNkM1dBQ1BBRE16TXlCUklEZ0FBR0JnYzBKQ0VIRUFBRXdOCitEUmt3REFvS09SOGtQWlI3ZXlBMUlBQnBBQmdOUUJBOUVBQlZBQXNMUnd3L0RBd01QZ0JOQUVORENnYzlCOHpNekFVRlFRQkRBRDRNCitEQXdPS2dBQWNRQTVBRXRMRllxS0FBME5UQzhIQnhFUkVRZ2ZDQUFyQUFBcEFDSXFNa2tHQmhvcUtud0FBQXNHUTZxcXFrb0tDZzRPCitNbGtjSEFvWkpDY3JXNlNrcEZRQUFBQUFPQkFPU3dBVkdoMFJPZ01QSFdabUIwMFFFR1VBQUZRYUdqRXlDMnc0T0xlM240cUtpb2lJCitpQkFWTUM0dVhoa1pVR0lBQUhKWVdIZDNBQUFBUGhBUVVRVUdMMEJBSUdnZ0lCZ0FHa0lWRlY5ZkVBd2NKUjhLSkE4TVU5RUFBQWNICitWUm9hWVdob2FEY0FBTHU3QUdabVpuQUFBR1JrWkdRVkZWaHFXRDRLQ2d3T1V6TXpEQUFBbWdrbEJ6RUhCekV4Q2xoWVdCTVRQQVlKCitReThmQ0ZwYUIvLy8vLy8vQUNJU1JFeFVEVVFyREF3TVZoSVNTRVlZR0hkM0lEaGNPRVJFUkVsSkFBa1BOVHNIRjFoWWNrZ0dCajA1CitDRllBQURnNE9DQVZPMGhDRERBd01MdTdpbHBhRFI4cUNEZytFQnhHSE4zZDNSRUdOam85Q0RROERCd1lSR1ptSEZNQUFCUStGQkUrCitFU0lpSWhzK0J4VTBGV1ZlQncwNERZcUtzeEFzRUI4aFFBd3VEQWMyQnd3cURBb3FDZ2NJTDFkTURRQUEwUTBpRFF3aURBY2tCeEFRCitFRHdBQUFBQVUwSkNEQWtKUHJ1N3U1b0FBRGc0YkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBTHdBTEFBQUFBQnpBcDhDCitBQWorQUhrSkhFaXdvTUdEQ0JNcVhNaXdvY09IRUNOS25FaXhvc1dMR0ROcTNNaXhvOGVQSUVPS0hFbXlwTW1US0ZPcVhNbXlwY3VYCitNR1BLbkVtenBzMmJPSFBxM01rejV6MEFRSU1DU05IeVowV2pFNUdxTkFaQXFjR21UKzhWWk1vTDZrNnJFcDBLZkVKbDQ4OVZCY0VCCitHR2pCd2s4TEJKc3lGUXFVMTVNVWRRRFVXZlZrNEpOVmNjRVI1WlhDVDgrL2dBTi94RnAwTEVXdER4RWZSS280NHM4bjEvWWVKQ3lRCis4R08rMXhoU2J2d3hSV2FrbEJFaVhvVlc0ODg2Qk5XMEZRamt5ZW02bGFVS2RMcUtTdVpyUUl4dHBiTHFjNTFKYnNIQkZrdzhwWVVUCit3NHVIREsyU00wUG5DcUhQTml6OXVXR0ZvUzFmYjdoNXUwblFzaGYrYXIyRzJpc0FLbjRGcHFCeUhRaXZuOFlrWTNXSzlSb0FOWHgxCitrd1VuY0JWdzVRQ1NkQXNBOGppRFhJQWVFUVlYQU1iZ3AwWUtLUUFGWVZ4RVBiamdYbS9GQlVSbUQxcFF4ejFxc0RmVWRBVmxDTUNHCit2Rmc0bGhwTWdiT0tZWDZJQlk1ZkhYNjQyRkJ4MGNVTGJuS2xVRmRRa2dTMUl4QTkxbVdNQldKUllRRjdkWlEySFZCSXNkaGpiRzRSCitXVWVFNGYzVUZsUU42aFVpVUsxcHVWMVE5M1NwMjRMZ2xOWWxBR21tS0dKcnZCeEo0WVd4aVVrbUx6R3ltWjZVTG5xWEFsZ0M1VG1qCitRUkUycWQrTmt3REtDemlUd0FqY1Q2cmhWMVdXMjgwMTNEMTFVZkhmVnJJdGllQ25IdzBZVklFSGdub1JWdXRsbGdKL1grRjU0aFArCitmalQxRldSNjhXWGJYVjNkVTRjeG1Cb0RuR3BTYVpVcXJ1L05KUlVWclYzRFhySEJBbkNOcnJ3bU45Q3MxN2pJQzIrUVVVRVVZNFpoCitxeXhSNTJYMklsRndGV1NVVVUvOHRtT2JYQnJ6eEJORWh2ZWVZVkNkNXdkNVJEMVJhM2VWemFqR1BlQ29TcTh4NHFKMlpYRGdodmxxCityRkpCQlI2ejgyYUdiTGJlK1RxYmpUOWxOdENxNG5wSFVNYmxxUUVPVXIzTm14K1ZKSklWbDdhU1RvcVFhbi9aeWRiTU5OZHM4ODA0Cis1Nnp6emp6WGJHcEZXQTBxMElkS1dTV3Jzd0loeVV1VEF0bjNMOUlFMmRkc1FVenZlRi9HS1VKdHdWaXJTQVpFQ2xpTHBuVWRxbW5zCitvY2ttbDUwMGFnQ2t4NjI1WXhubHFVQ1Q2TmFVMmxiTCt6RCtBS1hOcFRISzA5THI1TWFDaytoM1dySVozZkRVTG5jOTBOZDRiMTJRCitWWTZ6SnRtaVRub2MrTFYrUVlpVWZ1aXlTNmxCOTZ3SEFLRE1BYTVUWkJDMjd2cnJzTWN1Kyt5MDEyNzc3YmpESGczTjREZ2o3YzhQCitZVFh6UFVVblR2eDFSZ2wvUEZsVWdCTXYyZ01wL3phSmF3VUZ0dWFiVDZmVXVkVEZqZnhZVmsyL3VWRVJDbVgzOHRIclRlL2lUYThDCitUaDFBNE1ldnl5a0NzU3RWOUJ0MWpmdnd5Mjg4bFE1Ylg1elljcjNzcFU4ZzFaTVE0Z2JDSDdIeElsR0xldHA3L3NPWU9qeGhQdGh6CitGWDQwVlJEUHFBNTRJSVNJcUFoa29OK0YwQ0ZCa3hmMEZCZTJzMVhOYVZHNkQ1VzA4c0tyR2NZK1p1UGE1YUIzSTdPQkkzTCtxSGtiCitFUFBYUGJpWnpBS0hTaDhPbTZZZEFLb3dRL1RMbmxVT2hyYndiUWVLaW5OaUZhVlN1WUVza1JlU0k0aU5lTkZGZzFTdEtnblJIOWxZCitOWllVU0VvcFg4TmdXcElEbFZVUkpGYXdTZDBKOTJpUVc1REtoSHprVG5oUzlVQUxGcTlPcDZNVnVXNVZHN1JGNm9GdDQ2R3Rya0VzCitwUmdqV2N2U1ZiQ0locndkVXF0VzN0TFd2T3FDbEZDQ1N6YmlJeEc2MVBVdGx4bkRYZkJxb3N1c0FnUTQyVEdTSHdQQWoyVERTcWJzCitra1Mxck1zdC96ZEx4amtNWXphNkpNV21zaGROUXF4MGZBa1lHYW5qeVc2SjBpaUhVa3E2NURpUVYyYUdXTUZCMFQxRW1iVkFtak1oCitsRHduUlJTME12d2NjbEkvV1pDT1RBUW5wU3dvUGdEK21JUlc2RW5LNnp5QktZWkttb3pRWWsvdnFJaUtQRUtvV05SQUh0UWtkQzlXCitUTm40RFBNbEtrSWxsbGR5WXk2MW1LSzFVQUUvQUkzYVFxMkNKRGJCaFcyb1hKRkgvWWV5ZWttbG9kZVNZVW5iNUJhQUlyRWdrM0NQCitRTmxVbWdpNTVVVk5Nb3hQTndwSmQ5NUhNazVwMU9qc2doZTVsR3dyVGExVjBuU3F6cXBhZFNYVm1ja09yN3JIZEFFeU5iRFJWVStBCitNRGl1bXZXc0hjbHFUTzZ4S2JTZU1BVmxQY2dxV2dNdlJlV2tXbTdOcTE0dG90YTkrdlVqYjJGSUxGL0ZFN1A4OWJDSVRheGlGOHZZCit4anIyc1pDTnJHUW5TOW5LV3ZheW1NMnNaamZMMmM1NjlyT2dEYTFvUjF1U2Z4SHZ0S2hOcldwWHk5cld1dmExc0kzKzdXa0JhVnJaCisydmEydU0wdGJOT28yOTc2OXJlN0ZRMXdoMHZjMy9LMnVNaE5ibkFONGhybE92ZTVwMjFaUXZJeGkrcGE5N3JZemE1MnQ4dmQ3bnIzCit1K0N0YmdaVU9CQlA0T084NkUydmV0ZkwzdmE2OTczd2phOTh6MXVJaEhCREZmak5yMzczeTkvKyt2ZS9BQTZ3Z0FlTVgyNGt4QnBnCitTTENDRjh6Z0JqdjR3UkNPc0lRblRPRUVXeU1oU3dpdmhqZk00UTZEbHdhaVljVjhSMHppRXB0WXZwNWdTRDdjd2VJV3UvakZNSTZ4CitqR2RNNHhyYitNWXNuZ1Y1QmVLSlV2ajR4MEFPc3BDSFRPUWlHL25JU0U2eWp5K1JFR0wwNHNsUWpyS1VwMHpsS2x2NXlsak9zcGFmCitUSXlFVkdFS1lBNnptTWRNNWpLYitjeG9UclArbXRjTTVpb2s1QVU0anJPYzUwem5HenRBTlBoUXNwNzN6T2MrSnpuRkMxbHhuUWROCis2RUxUV01jSTZiR2ZGODNvUmh1WnlRaHg4cFluVGVsS1d6ckxYVWJJbDluTTZVNTcrdE5xZGpOQzRHem9VcHQ2MEhkZVRKNGR6ZXBXCitMeHJRQ2hIMHFXZE42MFB2bUJlS2RyV3VkLzNvSmwvNjE4QU9OcFl6ZlpCTmcvcll5RTcybVVWOUVGTFgrdG5RZGtlcVNiZHFYbHY3CisycVdBZFVMT1lZWnVlL3ZiNEE2M3VNZE43bktiKzl6bzdqWVhJSUFRRGhEZzNmQ090N3puVGU5NjIvdmUrTTYzdnQ5ZGk0VEk0Z2dBCitEN2pBQjA3d2dodjg0QWhQdU1JWERuQlpKT1FkNklpNHhDZE84WXBiL09JWXo3akdOODd4aUw4aklleEl0OGorUjA3eWtxUGJEUWlCCit3Qi8yemZLV3UvemwrdWFBaXFOTmMxb2oraUM1eHJiT1d3M3BnMGhhMkVBUCtxV0piUkJqSy92b1NQODBzdzNpN0pvN25kRFRObGUxCitkMDUxUm1zYkliSit1dGJuZkhPRDVMenFZTjl6enczeWM2R2IvZXhXSm5wQmpKNzB0cnZkekVzdlNOTzNUbmNiUi8xalV3KzczcEY4Cis5WU5rdmU2QWwzSFhDL0wxdlJ0K3lHTXZTTm5Sem5qR3E1MGdiSCs3NU44ZWQ0TE1QZkNZYi9IZHA1WDN3M3YreDMwM3lOOHpuL25CCitFNlR3bi9kODRnbXkrTWE3UHVpUEgwamtKMC83bzFkK0lKY25mZUEzUDV2T3AvN3dvUy9JRU9aQS9PSWIvL2pJVDc3eWw4Lzg1anYvCisrY1VuQkVKK29JWHFXLy82Mk0rKzlyZit6LzN1ZS8vNzRLOCtMQktDaFdtWS8vem9UNy82MTgvKzlydi8vZkNQdi9teGtCQnprT1ArCisrTSsvL3ZmUC8vNzcvLzhBR0lBQ2VIL21rQkQyQUgwSW1JQUt1SURQeHdRSVFRamhGNEVTT0lFVUdINC9NSE82cDN1bVYxNi8xNEdyCitOeEN0OTNvaStHdXhKeEN6VjNzb0NHcTNKeEM1bDRGMHgzdnY0WHNkcUhmQlJ4Q2o1NEowdDRFOE5vT3A5NEVDRVlJakdJU1RWb0s4CitjSUlwZUlSc3RvSzgwSUk0K0hRd2VBOHl5SU5WVjRNRGNZTk4rSFE2aUd0U3FIcStKb1JlV0dsRWFJUklPSWJMOW1aWHVIdDR0b1hBCitoNEZubUlPM2hucHF1SE0reUF0QStJVjJPR1ZoU0laNm1JUm0ySVl2bUlaeFNJTU1BUVV2VUlpR2VJaitpSmlJaXJpSWpOaUlqdmlJCitrRmlJUzhCdUI1RUE4M0NKbUppSm1yaUpuTmlKbnZpSm9CaUtvbmlKT0pBUTJaQUpxSmlLcXJpS3JOaUtydmlLc0JpTHNqaUxxSmdOCitDUkVQYkpDTHVyaUx2TmlMdnZpTHdCaU13amlNeEppTDhaQVFoaENKeXJpTXpOaU1rRGdDS1pjS296aU4xRmlOMWlpS0NjQ0dmb2lGCitieGlJZWplSGRYaUg0dGdMZWJpSDVsaUdvN2FOVy9lRVVlaU52RWFGQW1HRjZsaHJXUWlIN3NocjREaU8rb2lIWG5hTy9raG1Tc2lFCis4emhyN0hpUFU2aU5Bd2x0OVdpUVZKZVArL2lRNU5pUC96aVJVeENRQ1ZsekJjbVFPZ2VQdkVBRUh2YVJJQm1TM3BVQkFvQVFyc0FICitLSm1TS3JtU0xObVNMdm1TTUJuK2t6STVreWpaREFrUkNnU1drenE1a3p3NVlLR1FFR0pRWVVJNWxFUlpsQlFtQmhnbWtrcTVsQ0M1CitDUWdoQUkxQWsxSTVsVlJabFRQcENnelJBRyt3bFZ6WmxWNzVsV0FabG1JNWxtUlpsbWE1bGZSUWtnZWhBQ2ZXbG03NWx2QlZYd2dSCitCM0pRbDNaNWwzaVpsM3E1bDN6WmwzNzVsNEJabDNHUUVPSndCb1o1bUlpWm1JcTVtSXpabUk3NW1KQVptWVlwRGdtaENXZDVtWmlaCittWnBwbGlUd2xDSUdsNkFabW0ycEFBaDVrVGJYalJxSmJRNEprZnBZamhUcGp4WnBtdENXa2FscGJSd3BqN0paYUF0Wm05YTJtcXdwCitqcTc1bXVZWW03bEphN1RKbTdwMm04VkpqNmlKbkxybW03OXBoOEVwbkhwSW5NdHBhc2Zwbkt6K3hwRk9VQVBlK1ozZ0daN2lPWjdrCitXWjdtZVo3b21aN2VxUUtVYUJBREFBTHdHWi95T1ovMFdaLzJlWi80bVovNnVaL3dHUU1KZ1FhN0VLQUNPcUFFV3FBR2VxQUltcUFLCit1cUFNR3FCb2tCRHJrQTRTT3FFVVdxRVdlcUVZbXFFYXVxRWMycUVTdWc0SnNRYnFPYUlrV3FJbW1wNExrSEo2d0o4czJxSXUrcUw3CitPUUNsZVoyRXRwdmF5WE5kR0oxM09KM1VPWWJXU2FPRmxwMDNhblV6Q3FSMFpxTkQybWpRcWFOQ3lLTTllb1EvYXFSMUpxUkoybWZLCitLYVc2Mlp4VnVtaEx5cVFqNktSUGlvSlJpcVZ5UnFWYnFtZFhTcVoxaHFSbnltZGQ2cVd2QjZaaFNudGpxcVoyQm9odGFxVU0wWjBuCisycWQrK3FmbXlaNEk4WjcrTUZxb2hucW8rT21mQ0FHZ0RkcW9qdnFva0xxZ0Q0b1FFZXFobG5xcG1KcXBIQXFpQ0NHaWdQcXBvTnFuCitLWG9RRUxDaWlIcXFxRnFvTWhwb2RycW1XcHFuZXZhbWNOcDRjanFua2xlbnJVcGpaZ3FyUnBhbXVZcGpiTXFyU0NhcnM0cDJ0V3FyCitib2VydnhwanV5cXNRK2FyeTFwandlcXNSVWFzeFdwMng0cXNTYWVzMGVwaXpVcXRRTWFSV3JtWjVGcXU1anFXYVlrUWJDbWE3TnF1CitjWmtRZEJtWThqcXY5RnF2ZnptWUNGR1lrcm12L05xdi9ncVpsSWtRbG5tdUJGdXc1TnFaQnlFQW4rbXVETnV3K0VDYUMrR1JURG14CitGRHVTYW1rUUoybVZHcnV4SEF1VE5va1FPTm1USWp1eUpBdGdQNGtRUVdtVUtydXlMQnYrWVVpSkVCbFdzVEk3czlYbGxBa2JsUjJiCitzenFyc1ZqSnF0MXFZOU1LcmtKbXJkY0tleEtwcldMYWh6K3JxM2dxdEVVR3JVc0xZMEhydEQ5R3RFVXJiTm1LdE1yR3JVdjdyVTRMCit0VkhyWWxOTHRhVmd0VmNMYkZtcnRjakd0VC9ydFVMTGtWSGdBSEk3dDNSYnQzWjd0M2lidDNxN3QzemJ0M0pMQTdlR0FaNHd1SVJiCit1SVo3dUlpYnVJcTd1SXpidUk0N3VLQ1FFSjFBREpSYnVaWjd1WmlidVpxN3VaemJ1Wjc3dVpUYkNRbnhCVlZRdXFaN3VxaWJ1cXE3Cit1cXpidXE3N3VyQmJ1bCtRRUxqZ3Q3Wjd1N2lidTMxN0RxSVJDSS83dThBYnZNTHJ1QmhBV3NaN3ZNaWJ2TXE3dk16YnZNNzd2TkFiCit2ZEk3dmRSYnZkYitlNzNZbTczYXU3M2MyNzNlKzczZ0c3N2lPNzdrVzc3bWU3N29tNzdxeTFWbkJFYmxzUlhObEVHYXdSYTZBUnIwCitLMG56RWhSQ2N4RGx3eFpTY1JkeFlTblJJeFJ3c3I0R2ZNQVBrUUpVeFF0QVlGZERoUmhxUUNTRWhSQ2g4VEJHZE1IdW14NXB0QjNrCitnU0s0VVFjYVl4WEtzc0FJWE1JbVBCQ3FBUnNYcE1GK0VCY1N4VUIwd1JWSk5EbmtaY0ZFZGNQUkpCN2JjVWtGVVV1QUV5c25ITVJCCitURk10N0VWcFVrUlRFVllaVk1FQ2hNRUdaRFYvY3lOMklVT3BvVXRSQk1SQ25NVUhyTUQ5SVJtK2trcUUwa0NUVWNOTmpNTXZIRVZTCitmTVljTmNKYTNNYnFtOEpMSXlsY0RNWjJBUmUzVmhWc2tUSXpzeTBlb3hWNkJEMytpbEV2NXZOVmJsekkzcXNrTVhJeC9hVEdoVVF3CisyRUhHSDRTL1R2RkZEclFWVkl6Q1Z2ekhocnpKM3B0VGxkTy9aSUlZcTNMSEIzVEJURXc2MjJGSDBiSERKT3pEYU16SnNBeSs5dkZECitxSHpHRnlSZENYSEtyeXpKMStFaEdsekpUUU0vdDJFL0lVektzWHpNMTlzOGFTd3p2REl6dVF6SmVKekh6SnkvUUxHL0cxd2lUWFU0CitrWXpNM056TjN2ek40QnpPNGp6T1pwVUNyM1RPcjRUTEg0RkU2UHhLY1VYTzhCelA4anpQOUZ6UDluelArSnpQK3J6UC9OelAvdnpQCitBUDFZdVRQUUJGM1FCbjNRVWV4WHJIUFFETjNRRGszUUNiMVhwZlBRRkYzUkZnMGhqdFV6R3IzUkhOM1JQR1BNWmlVekhqM1NKRjNTCitOd1BTWEFYK3lpYTkwaXhOMGhtOVZYcjFFeWg5VlRLZFdEV05XRU9GMC9LN1Z5T0NXRGQ5V0QvOVYwSHRWemw5V0VXdFdEME4xSm9jCiswa3ZOVlVPOVYwZE4xRHV0VjBudEJaaHcxVmlkMVZxOTFWemQxVjc5MVdBZDFtS04xWUV6MDFiMTB6ZndDbXE5MW16ZDFtNzkxbkFkCisxM0k5MTNSZDEycDlBMldkV0RsOURXUGQxMzc5MTRBOTFsNUFPQy9OZ1dSTFpEMzMxREdORldLb3RsdWIxenJOZVlkTlpMQVcxWWlWCisxUFpJdG9uZDFEVE4ySTVOcDVCdDFNalRqbFJiMlZPZFY1ZzkyWWdYMmtMdDJaOTlxNnd0MVpLdDJrRm0yb1c5ZzdRTlpKdHQxbFgxCiswNDM5MmlvWTIxQTkycmtkcm9UZFdFbk5DS202M015dG44c2czSXNkSHVyK29LblVYZDNXdmFIcUFOMTVsZE9FME56ZS9kM3l5UWpICit6VmlwWGR4THB0MXU1ZHZBVFhub2pWWTVEWVhtN1dPMmpkeVNrZGxVdTlzMjdkcnJ2YTN0ZlZidlRkcGZPOTZMVmQ3bWpkOCtyZC83CitiWHY5WGM3RUhkL3pUZDcxSGQ5bHUrQk9qZUFKbm16TXB0amIzZURtL2VBRExobUVDdDRpbnFxS09pKzhyVTQvWGFuWHZlSXNycW1jCithdUo2ZlIybE91STBmcXFyeWhlbjdWWUVYdHdHcnRUaDhkc1h2bVlaenRsVzlkOFM3dUZJSGVIeDNlT3QvZU5CcnVEYUUrT3ozZUVDCitudVNHWGVBVTN0bE8vdVFZbnVWRnp1SEZqZVNKbGRUcjZyQm1McHB5Q2VNSEhoNzYrcTl1L3VadzNwZ0JxK2FpUFJBS2UrWjREcG9RCitpK1ArdDgwTGpwQUZnQjdvZ2o3b2hGN29objdvaUo3b2lyN29nTzREWHQ3YldPRU5MVHZwbEw2eTN2RG82cFRUQXRBTmpON3BudjdwCitvTDdvamxEbFk2N2tXQjdsYXk1N1hON2xxRjdudlhma3BIN1pwczdqbUg1TzZyM3F4emJrSjM1T1J1N2dzWDVZTzU3YlRPNVh0NDdyCitTbGZyNXRUclZLNGVPWTVXU1QwTWJSRHQwajd0MUY3dDFuN3QySjd0MnI3dDNCN3RkSURzZ2ZUVDhGQUc1Rjd1NW43dTZKN3U2cjd1Cis3Tjd1N3Y3dTVBNFA0TTVIT1EwQkQ5RHQrSjd2K3I3djNENE12LzVYd1U3Ynd5N1JGbTdzZk5qcWY2WHNZZjd2ZmhYd3FqM3cwYTNxCitCdTlwdWk3bHIrN3J6TjduOXUyMEVKOVh4VDd4QjAvbkNRL211UzMrNXJKKzViU084TVJlOENDUFpoVWYyUmUvN0h4TzN3TkJmUlY0Cis4emlmODkwM2ZpcFA4T0ZoZndNWTlFSS85RVFmZ0FYWTgzckYzVHEvOUV5Zjh4ZVk4VFNQMjZjdThpdS81UzB2NVBPK1J3cGY4Z3pQCiswN011N0ZsL1FoOS85UzRmOWlHMDliUnQ4c0QrOVFKdjlpQTA5bVFQZDI0UFBHaXYybW9QOEd6LzhIUC9NM0FmOXdDNTk2WlM5NU45Cis5dzB2R2U0R2M0aWYrSXAvYi8yRzlCNlBGUkRYY1pJLytaUmYrUnYzY1k3dlZ2Vytjb3ZmK1o2UCtESUg5UkNPOG1DZitXalY5MzR2CitaaS92NmpFSTY2TC80YVRmOXFaL1ZxaWYrbTBHK0tBaStJZE4rRjRmKzNvLysweHQ5YmIvOThDZjBpU2Y5bDFQMVpJUkFubmUvRzMrCittZVlhbnQ1WThRMWpVUDNXZi8zWW4vM2F2LzNjMy8zZS8vM2dYLzNmZ1B1Zm91a0w2L3pvTDE4aGtQeW9MUmwvSHVyd0gvL3lqK2lPCitYdnhhUGhDU1h1bjZ2LzhTZHVuMi8rVUF3VXVnZ0c1WkRCNUVtRkRoUW9ZTkhUNkVHTkdnSTRHOFVnQ29tRkhqUm80ZFBYNEVHVkxrCit5SXdBVWxUMFZFcmxTcFl0WGI2RUdWUG1USm8xVlY2cWVBL0FQWkk5ZmY0RTJsTW5UNEZWcGh4Rm1sVHBVcVpOblQ2RkdsWHEwU281Citkd2JGbWxVcnlZczU4ZGtFRzFiczJKcWVLbmJkbWxidDJvb21VWktGRzFmdVRKd0NoN0xGbTNmazNhSlQvZjRGSEZocVZidFg5UjVHCituQkV0cjN0ZjV6NkdETmVzd01XSkxTZDJLekJsWk02ZDZWcitKWHBadEZxK3ZJd0tScDFhOVZQQ2pBMlBocDExY1dQUHRXMnZuR3dSCitZMnplV3pQend1QkorSERpeFkwZlI1NWMrWExtellXREF0MWJ1dERYWDZwY3g1NWQrM2J1M2IxL0J4OWUvUFV2MGFlZkJ6azdrSFAyCis3ZDIvYjQ3aDdHNzA5VUgrdHAvZmRXajk5a3Yzcis4L0FNK3JiRUFDNlRNd1Avd1M3RTFBQm1OejhNSFJJcFR3c2dJckhPMUNER05iCitjRVBMS1BSUUx4QkR4R3RFRXRmUzhNUzhVbFR4TUFCV3VTZEdHV2Vrc1VZYmI4UXhSeDEzNURISFNWNXJVVVFBSnVteFNDT1BSRExKCitHSC9rTDBpOExsSXlTaW1uTkhJVkJKMUVEQUF0dCtTeVN5Ky9CRE5NTWNja3Mwd3ptOFNTTkRQWFpMTk5OOS8wRXMwMHQ3citDRTQ3Cis3OFRUelRrVG83SlBQLytVOFlrOTJYb0NVRU1QUlZMUVFkVzZCbEZISDhWeFVVa25wYlJTU3kvRk5GTk5OK1cwVTA4L0JUVlVVVWNsCit0VlJUVDBVMVZWVlhaYlZWVjErRk5WWlpaNlcxVmx0dnhUVlhYWGZsdGRmRDZyQWdJd3ZxeU9pSmsxekR5a3Rqa09WRldXWXowbWxMCitjUHo0cUVzcVFydG1sVG9BQUNjRlFhUHQ4cFl2ajdXQUNpMnBDRllnYmpXeVVrNWYzNFYzMXhTQXlBaUlWUlRiVGFlTjFBQkNTeUFVCis1UWpJd3RSRlUxK05ET1psV0dvN011d0piUVc5cG81VnJ1RkZEU3FvMEVqZ1p2bGJoWXFGL2FEaTNtWUJVQ09qYmQyTk4yV1ZZMVVECitBRVdmQUdCaFh2ellkbUNOd0ZubGlTZW9XSmJoZ25mKzB4aGhxeFFEeDZQWFlPYkpHSG9yZXFMYmt0Qjh6UUp3QU9ibENXQ2JwZUxZCittYzFGZVdXdnYwWVZuSFJwcnVnYXNmTzlraGRqRkJVNjQ1OEozcWp0WjNtNUJnQ0tBdzdOYXAxSjFtZ1NqTnVDT2pRcUp0a29CWXlICitMRnFnVlpnRXUzSEhVWjFYY2EyTklSTHRqMUpJSE8rNGdYNzc0Q3MxaHJ2cVZhaVZXMmlOWHdzYW81M0FLWm1YT3VydStuSFpaNiswCitaVUhyYUQxeWcrVVd5Tmc2VVBiU1ppOVBLdjF6ZDUwdC91bU5VSDk3cHhST0FubGoycWVuL2xKMC9VajhuanErdFh5alNlb3c1bTZmCitOdzhkMnJTRnJsdDh0eXY2VVEyWVcyZi83L0lCcjJodzd3Ky9SNDJpRjVlK2V2Ly9UOU1rN0hXc09uRXBSbW5EWE96KyttZSsrZG1NCitnV2ZKM1BMNGN4V2xGY3RwOUZ1ZlFJWkZOYXNGNnlxc2U5MENBVGhDRW1Lb2Jxd2ozOXlxeHJlUXBLNkJLbnlXd293V211OEpKR0lUCitxOWpGTXFpOGluVHNZeUdEbStIK0Jyb1NGdEdJOXFGQ0JJZm1HaTRaQTF4Ym1tRUt2OFRFTFMzcmlkT3FGcGVvQUw5c2JhdGJWQk5oCitBOHQxTHNMQnJXVmxKT0lSMWJoR05yYlJqVytFWXh6bE9NZFFwY0FZZDhTak1lQ0hHQXZrRVkvcG9tTWdCVGxJUWhiU2tJZEVaQ0lWCit1VWhHTnRLUmo0UmtKQ1U1U1VwVzBwS1h4R1I5OHJSSlRuWnlTMXBEMVJNOU9VcFNubWxWb2l4bEtsWEpKVmdCd0JqUGcyVXNaVGxMCitXdGJTbHJmRVpTNTFtY3NPbFVvbnE5aGxNSVgrT1V4aUZ2TjU3VHJsaTR5NVRHWTJNNWpHU0p1cWVsbXFhWTdLUktDNjVxZXk2U2tXCituYXFhby9wbXFMYlpxWEZ5cXB5YjZxYXB3aG1xZFdvemphSTZwNmJpbWFsMFVsTnJ5c2hIUHZXNVQzNzIwNS8vQkdoQUJUcFFndW9UCitmdTMwVkdsYzBBS0dOdFNoRDRWb1JDVTZVWXBXMUtJWFphZ0x6Sk9xMGxTaW9COEZhVWhGU3RBb3pLZVZXc3VITzFTNlVwYTIxS1V2CitoV2xNWlRwVG10WlVwYk1JRFVMSitScGk5TUtuUHdWcVVJVTZWS0lXMWFoSFJXcFNmVXFNallieU5TK3dhVlNsT2xXcTF0UUJKbjNWCitiMUphVmE1MjFhc3l4V2xiUUhtcTB2UlVxV2RGYTFyVmlsU21Ga2FCN2d3TlZMODZWN3B5OWFxVWlXYXF0RnIrVjc3MmxhWmhWZGRZCitUVlhXdFJiV3NJYzlhbHYzazh5NCt0V3hqMTNwWFhWejBvcHNGYktYclN0Z215VllYL0lVc1o4RnJXRVZPMDlNbFVhdW1FV3RWeVZiCitUMUw5QmdvdmdHMXNaVHRiMnRiV3RyZkZiVzUxdTF2WUxnRUNZbVZzUld4eERPSVcxN2pIUlc1eWxidGM1amJYdWM4bHJpMmFTdGJYCitHSUszMThWdWRyVzcyeEZnMVZWN1RXMTRxNnBablpyVHM2RkZiM29UTzkzQlBsVzg3NVhxYXZPS0t2REMxNzVnelNsblNVVlk5ZmJYCit2MHRsYjJjYmUxOEN2MVMrbEJXSVpRdThZSGVRVjcvV1BPOS9KUnphMGI1VG5PNWxNSU1QbkZXdEVXRVdId1p4aUVVOFloS1gyTVFuCitSbkdLVmZ6aERBZ0F1S29xVFNoVU1XUCtHdGZZeGpmR2NZNTF2R01lOTlqSE13NUZnUGY3bWlXczJNaEhSbktTVmJ3Sjc3YnFOdzE0CitRNVNsUEdVcVY5bktWOFp5bHJXOFpTNUhtUjR1RG14d0JSSUhPWlRaekdkR2M1clZ2R1kydDluTmI0WnptZU1nWkFpSFJoTmR4bk9lCis5YnhuTHBPZ3lheXFiNFlKN0dBeDg4S3NFMGIwWVN2ODFvUmlXTkFFM3ZCM1Vmcm9BaE1heGhGT2RLYlR1dWhDbjViUzhJMjBreWY5CithZnRhbXFPWTFuU3EyVXBuZURxYTFPSU5OYUMxNW9RYTFOcld0OFoxcm5XOWExNzMydGUvQm5hdFZmRGJNRjg2TkdqWVJiS1Z2V3htCitOOXZaejRaMnRLVTliV29uR3cyc3ZuQm8xaEJzYm5mYjI5OEc5Z0wrdktwQXZ6cTFwblpxYUE2dGFuYitGNVhUeHE2SXA4Mk4ybGlUCitlOVR6UG5kK0M3M3VkdmNicU84KzlZRHhUZTl4Uy9QZUE3OHN1cW1yYm44My9OL1l4cWFyRWY3WWVodThzaFBIck1MYnkzQ0hPeHpnCis2WTQzeGk5YmNiM09HdHduUjNuS2ZUM3NGd2U4SXNpdWRzeGxQbk9hVC92YWJpMzB0bFcrYzU2ZlhOeDRSVEF2RkN6eXZtcGN3QlhoCitkOGZaL2ZHRmg1em9qaVU1ZlEvKzlNenFHOTRDU2JyU1U4MzBqVHVkNm55TnVqZW4vdld2R24zSUhOZDZ1N2wrZElISW0reXFMWGpKCitLd0psUHRmZDduZlA4cGRiRHZJeHg5bnZmd2Q4NE9FOFo1eGZuUmQzeG52aUZWOTNQd09kd3hYeHNKSWxQM25LbjdqRmUyKzZRR1Q4CitZODUzM3ZPZjczR1FDKzl5Z1JUK3VmS25SNzNrbWV4NFNWLzg3WFExZTUyUm52WityLzNzWG44OTNGa3ZhdGZuM3F1eGJ6WGFhYjkxCitpTU1WOTc2dmF0alZPWGJrU3hYNDJaNzk4RlZ0ZTltM3ZmbGRWYjQ5S3pLRVlIVGYrOThIZi9qRlAzN3lsOS84NTBkLzk1VkE3TTBXCitXaFpIZ0gvODVUOS8rdGZmL3ZmSGYvNzF2My80eTZMNGpRNk5FVWkvQVNUQUFqUkE5SE9EdUpPNjNydStxWHEraUJNKzZVczA2Z3UrCis0MnRBbThxKzFtSytDNXlwQnpRK3JKTkE0aHM5dnVNRnQrUEFtY3BBY05yQUU0UXBEd1RBNkF2QkNmeS9uUkk0RnFTcEZCU1ZjclBCCittSEpCR29UQkdKd3dDb1ErNjl2QkcxUkFzZHUrT1ZEQ0pXVENKblRDSjRUQ0tKVENLYVRDS2x6K1FrTEF2SzRUQ0N5WWhpNzB3aThFCit3ekFVd3pFa3d6STB3ek5Fd3k3RWdoazByOUN3Qnl1RXd6aVV3em1zUWlZNHd1Vmp3Q0pzUWFzalBVTURRaGtjd2N3clFUMUV3VHZVCit2Z1FqUlB6S1FyYnp3ejhNUWpiY0ZOTkt4SmpDUVhaYXdVVHN3VGI4UVVmc0x5R0VRQXVjUkpXcVJGRFJ3VkJzTUQ0a3dhempSQXFECitSSG1TT0ZOMGgxSDhsTjlvQW1Xd3hWdkV4VnpVeFYza3hWNzB4VjhFeG1DOFJmRXByMGg4RFJHUWdtUlV4bVZreG1aMHhtZUV4bWlVCit4bW1reG1RVWdWYk1sTklReG0za3htNzBSbUc4QWtQVVFGa3JOQkkweDFOaExSVWtSOE03UnkxTWxYVE13UWRUUjNZVXhIWXNGWGhrCitKM0R3bzMza3gzNzB4My8rQk1pQUZNaUI1TWRpZEVXZUljaUVWTWlGWkVpQzVKcGtRc2lHbE1pSnBFaUJCSWY1T3BXSzFNaU41TWcvCitXaFUxNk1pUUZNbUYzS05UQWNtUlJNbVU3TWRNWXNtV2RNbVhoTW1ZbE1tWnBNbWF0TW1ieE1tYzFNbWQ1TW1lOU1tZkJNcWdGTXFoCitKTXJ6dUpxS0dKWmlPUmJlR1Fua0Fab3VzYUx6NFJJc0FvbVdXWnI1UVNXVFFDWGlzWmFGY2FVSEVvaCtPU2huY1phaU5FdjBpSnlLCitzQmQ4Y2FDSzRCZC9BU01lZWlBWDhoeWtyQU9aNllnNkFSZ2llZzNlRVpvVTJKNlJLYU5uZ1prT0FSSUxPOHZFRkEzYjZaMllxUWlhCis2WjZNd0JtZDRaa29xc3N3Z3FHL1ZLS05BSmFqeE16eThVdmphUlpqQ014bm1RUndPRTMrQ1pKTHhXVE4zaEFiZ1NBYkd6cWJ0aFNJCit0YUhOMVJTZXpnRkx1ckViai9BRGwxbUZxK1RMMEFqTmpLR1luYUNDcFVHWXJLbWJranhNUm12TjZFU1JwUUdtaXFDYzNjRkl6TEhNCit1ZFROSmNJZ2pnak9tWEdaRndMTmFQcExOTW9meHpTWTV1U0ZyTm1oejVUTytNd0x4c1FkeXFBWDdPd0kzd0dlTGhHZUx1SEtGUHBPCit6bHlZT2tEUDhTbU1MdUVKVVRyS3F3RE1RdGtOdnhHSUdsck40WkhQQ3NXTDY4bWV3TVJQN3dFZjlWSE55NlRMM1V5Zmp2aE5MU0xQCitCU3JPSGtvY3d3Z1pnekVYTHNITDU3VFFHYzBMQWFwTzNVQlF1VW1nRnVxY0VQVk9pOWpNSGhJWjhUek80eUZPODBRUWd6R01sdW1LCitFUlVJSUFwUXhLVCswU2tkaVJNcVNXWnBtL2NSQ2JyMFVRZVNJWTZ3R3J3a1VQanNTeVRsenZuQUNNUEpDQW1kSHltbDBqZjlpQ1RpCitDT3hzSWxUYXppV2FJbEdLU21uQlM0MUl5b3pvbUpGaHBlOUVwYWpNaUxxaEZpQXhGMTVBelVOMXpEWU5IamlWMUVtbDFFcTExRXYxCitIenZheHl2Tml6N2FSMERDMUZBVjFWRWwxVkkxMVZORjFWUlYxVlZsMVZaMVZRTnhwbGlWMVZsOUhtZTRCVnJGMVZ6ZEpWUndCbFRRCisxVjhGVmxuaVZWOE4xbUxWMVdFMTFtU2wxVnR3Qm1WMTFsbFZsMVdTMW1tbDFtcTExbXZGMW16VjFtM2wxbTcxMW04TmsyS1RKbWRZCitGVWtBQUVrbzEzTk5WM1JWRldmQVNGRkJDNFBVRkFBZ1YxVXhWM1pObFh0ZDExWCtjVmRXaVZkNXpNRjZ6VmQxdFZlQ0hWaDhSWlYrCitYWlYvZFV0SWNkZysyVXVCVllPSHBkZ29xUWg5dFl1SzFkZ2p1VmlEM2RpUDdaR094VmVRSmRrY3FRaUZyWnFTVlZrYWdSK0dUYkRVCitnOW1ZVGJFTXlDbUI5UVI4d05tYzFkbWQ1ZG1lOWRtZkJkcWdGZHFoeGRsQ0VObUs0QWJRVTlxbFpWb2U0NGFqRlFockFJT3BwZHFxCit0ZHFyeGRxczFkcXQ1ZHF1OWRxcHRRYW81UVhUazlteU5kdFpvSUdUcFk5N1lBV2lkZHUzaGR1NEhkcmNjRm1oZzhXV0lpK2J2WTI5Cis3WXk2NEFXTWJjUlY3RVN4UFkzVk1OekRGWXpXQUZ3VERFWEpRbG5hNE52SW5RdTZCWnBMSk1TOGZRdkoxVnl5OEZ2QVZVWEJSU3pGCitBdHpDUmR6KzBqVmRwMUJjZzJYY1NYVGN0WFdNellWZG02QmNjUjA2V01SY3pZamQzS1dKempYWXp3VmQwU0xjMHhYZTRVV0sxTVhYCisxVTNFMXZVSzNXVmVtSmpkOWhPSWN6Q0Q2YVhlNnJYZTY4WGU3TlhlN2VYZTd2WGU2ZVVDOXFQWGl1QUFBakRmODBYZjlGWGY5V1hmCis5blhmOTRYZitEWGZXaERiOStPLys4WGYvTlZmL2ZNL2dRRGNkMENIQUJiZ0FTYmdBamJnQTBiZ0JGYmdCV2JnQUg0SHNXV0g3NVhnCitDYWJnQ3ZiZUJCUUlsSVdBUDVEZkR2YmdEd2JoK09VQXJDckZVTHhkWHRpTTVsWGhteEJiMy8zZHRSSmRneVZkNHFWaHd6VmVVR3hjCit0VjNlRlY3aDV5M2hTVHpoRk9aaDV1VmRmSFhoRjk2MDRLM2hKVjZOR3liK3dyc1ZSUjIyaTljZFl0MzFZY3ZWd3lDdTR1WXQ0azFFCitZa1ZUWWlZVzQ4Qnc0a0dFNGlqT1lOZmRZdWE5NGp5MDNack4zRFdPM1M0R3dTOEdyUmpHMXhrZTR6MkdpakpHWGtKVTNpbVc0OXh0CitZNEVZQWpwRTVFUldaQ3JFUW5VUjJCL1Fna2lXNUVtbTVFcTI1RXZHNUV6VzVFM201RWlHQmJIbHdqUVU1VkVtNVZJK3d6WDBYNE0xCitCM0pnNVZaMjVWZUc1VmlXNVZtbTVWcTI1VnRtWlhNUTJ6ZGM1RjcyWlVTMnd6U3VDRUxvNUdJMjVtTkc1azcrQVJMRzRpTFU0a0dHCitYVG9PWERzRzQxVE9ZejdHNXFqdzR6TkdZMTU0WENxRzVzZ3RaTHZsNW1jT1o4bVY1aU9tNWxXejVvclE0MnlHWjZvUTJ6L1d3MEJtCitESEQrUHVmYkdPZmFOVVZ6enVlOVRlZDFEdDB3anVlQ25vSnQ1bVo3aHR4LzN0dDk1dVpUYkF1OVpXaUFibUdCcnVhL2xXR0QxbWlFCitQbU9GeHVlSjVveHg1cjRESk9tU051bnlXNytJcm9oaGFJT1dkdW1YaHVtWWx1bVpwdW1hdHVtYnh1bVdwb1A2M2QrZTl1bWZ6ci8rCit4V2g4aFljeU1PcWpSdXFrVnVxbFp1cW1kdXFuaHVxb05tcDRFRnNCUE9tcnhtcVN4bUJ2cGc4SWVJQ2NCdXV3RnV1eHh1bGhZR1kzCis3bWM0eGwyUXRvMkF0dWpDd21OMzFtaUQ1bWdvOW1pMnRnMkhMbWUxUm1HOHJnMjNmbXUxaXV1K21PdDRydXU3dld1LzdneTlQbU4vCitWdXpIQU96QVJxdkJObzNDTnV4NWZ1akVmbXpJR09mSU85dlBUcjMreTNQa2luQUZQakR0MDBidDFGYnQxV2J0MW5idDE0YnQyRGJ0CitaaERield2YTI4WnQwQk85b2E0SU1mamEzd2J1NEJadXJ4VURzU1ZiMEVidXlWczlycTRJQVdnRTJZYnU2SmJ1Nlk1dFZ6aHJnYUM3Cit4ZFB1N2M0N01Hc1dnVlVBdVJYdjhTYnZvRFhhZHU0N3dWUHY5V2J2TmlNODNoWUljVGlEK2FidityYnYrOGJ2L05idi9lYnYvdmJ2CisrUllIc1VVODdpYndBbitEeG1QdWdXamI4bWJ3QmhkdkJiaHVjbTVzdmhiaXpaYUx5SlpzcGFMc2Q3WnNKajVzV05Sc0M1Y0x4b1ppCit4eFp4enEzb0RKOXNndTd3TWY1d1V3enhFeWNMRXI5YkU1ZnhzTUJ3RlY4djlLN3NGdWZqRjg5aFlSYmtHNWVNQ0tlMW5rUHlKRi8rCitPZkVWMkFFQWdTZUg4aWlYOGltbjhpcTM4aXZIOGl6WDhpZVBBYkdGdVpvRDh6QVhjMmk3T2ZqbWhYVkloelJYOHpWbjh6WjM4emVICis4emlYOHptbjh6UmZCN0hWT1NYWDh6MnZnWjlMY0Y2QUFEM1k4a0VuOUVJM2RDMGZnQWpuWnhPbWNDS0hpeHpYY1hkamNSOWZZaUJuCitYU20rWjBlZmNVVi9hQnZYOU0vZ2NYV085RjdZY0VyZlkwdFBYa3hmNkUrWFhVN2ZhNVZlYTFhM0NVZ2ZkYUVxZFZNWFkxUUhaRlgvCithRmwzWGxlZmNGanZhMSt2Q1ZxdjlZZmpjUTdIOWRQVjlYcm1kV0l2aXdndkFqNm5kaVZ2NU8rdUNFWTQ5RzNuOW03SDhtVVEyM29ZCis4M0VuOXpDdkI3RlZoenBYOTNWbjkzYW5jM1hBODJxWDk1Mys4M09VSlFSdngvZDg3M1pHQVBZU2IzUm9CM1V6Ri9WSXYvVmxyK0ZtCitMOElZQjNpWG9QRTNGdllLWC9pV01QWmpCN0JrTi9oS3greUVmdmFJLzNYSCsyRk0vSGVPZDRtSnAvaUN2L2poUmZnZFZIaVJMNFZ4Cit6bTREaDNuRjA3dlJGb2p3ZHZDYngzbnpGbHN5YSsrZTkzbjFmbS9BbGUvL0p2cWlOL3FqNys4QTUvRUJqL21tdHpzRVIxa0JXUENjCitwL3FxeHdjSTkvZ09TKzZ0bHp6UnhuYUJLRzNxRnZ1eEozdlhwbTBldCszY1Z2dTExN0hkQmx6Zkh1NjRsL3U1MzlyaTV2SGo1dnE4CitUN0hsanZybkx2dS9CM3l4dCs2c1IydEdmM2lXSC9rVXAzaWlNdm1UWi9hTTcraU5SM3pjNlBjYUQvbkpMd1dTUC9iR2QveiswazE1CitHMXg1a1cvNHRENTh6R2ZoVUY5OFNiZjR6aGZlejJmQjBPZjRjYTZFN2FMOTJyZjkzRm9Ddmc2RVMrRDkzdmY5M3dmKzRCZis0U2YrCis0amYrNCtkOUt3RGxUR0QrNW5mKzU0Zis2SmYrNmFmKzZyZis2MmQrVkRaekZtQ0Q3dmYrN3dmLzhCZi84U2YvOGpmLzgwZi83bWNCCitzYld1MjNmLzk2ZDlYRkQxUWtEKytyZi8rOGYvNHcrRUNOY3JnVVVWd0FVSVhnSUhFaXhvOENEQ2hBb1hNbXg0VUJJQVNRNG5VcXhvCis4YUpBaUJJeGN1em8wYUV6QUI5SGtpeVpRaVF2QUNsS3NteHBFWUF6bHpKbkl0Ukk4K1pObXpoM3R0VEo4K2ZIa0VDSGVqd3BVQ1hSCitwQmRoS20zcTBLZlRxQThqU3ExcUVLclZxa0t6Y2pYK21uTFZ2YkJpeDVJdGEvWXMyclJxMTdKVkN5QmEyN2h5NTlLdEc3WVZnRloyCis5L0x0R3hldlhyK0NCd3NHVFBndzRyblJBQ1J1N0JqdEtwUUFKbE91YlBreTVzeWFOM1B1N1BrejZOQ2lSNU11YmZvMDZ0U3FWN051Cis3Zm8xN05peVo3OFcrUGcyN3JDU0lPVHVmVmlBSkFHK2gvc0ZMcHc0OHJyR2t6T1hDMEZTOCtoeHVWS3ZidjA2OXV6YXQzUHY3djA3CisrUERpeDVNdmIvNDgrdlRxMTdOdjcvNDkvUGp5NTlPdmIvOCsvdno2OS9QdjcvOC9nQUVLT0NDQkJScDRJSUlKS3JnZ2d3MDYrQ0NFCitFVW80SVlVVlduZ2hoaGxxMk4wVEZ2Qml6RUlnSm1TTU1TbFFvVWFJYW9oSTBJb2ZidmdpakRHaWx3S0lJRjVEaFRIK0p4YlVva0UxCitOc1RqUUMwQ0tTT1JSUnFwMUNRZStySFNrajVhNEFjdjEvQllJb25YdVBqaE5lQ2tvT1UxSnVxWVFnb2U4ckpsbDd4WVFBVVZIb0xvCitCNDdnQ0RUa2tYSEtPYWRIMXdEQnl5clhQT0ZqaTB2dWVBOHY5Nnh5SlorOHFISG5qUitpR0tTTFZEekJDemg3OHVMb0UzWFFlU21tCittVnJrSXhCVyttZ29FQ3Z0eUtpSWhWcFFvbEZUWXFubGx2ZDhDcWVtc2NwNjZTU3JxRWxpSGFjR3VzcWpQUUlxNktTR0ZxckdTaDFlCitTZXFWa3pUNlJLV3pPdnNzbmRjQTBPdWJMcTZDWTRrRmdVbmlvOWVDNmFLSVhrSlphclVnbmtuRlNtdmllT2V4MExyN0xyenh5anN2Cit2UXgxQ1NhWVZ0YTdMNy85K3ZzdndBRUxQREQrd1FVYmZERENDU3U4TU1NTk8vd3d4QkZMUEhGMVZPaHJnYks4R051dVFpU1NxT2FICitIcWZMSW9ub0hsUkh5WXQ2dVpLS3hxQk01Y3RLNGtqRnVJTUt0QXFzQ0lVcGtKMERpWmt6eVNTT3pNdkx4cWhZVU5IVUJ1a3lpU2l1CisvR2JKWWxMMGhKczNMMm9zMEFRVmpXS05JcmZyc2NrR3ZhemptR2l1ZENyVDI4WmNkdGpHMkl4bjF0cUsyYk5BUHp2a2NiWmRlL3gxCit5YUlTMVBMTHZMQ1pJNVFoNTdqbzFGWGp1V2poY1F1MHRZaEZnenhRMGlmbktPcmdOSnVKSzVWTUc4MjJxRzRQaEhORkZ0ZWRzWm5WCisvdWd4eUhoL0N2WGxCcUdOTXBNekZ6NDI0aGROa25HbkF0R29lcFF6NXc1OHVhTXllclBVeDB1NnM1bCtDem4rMEQxQVBQb0VFSzRxCitEbzdqQXgwcVVKSzJvZFNpbDhrVFR5aUx4Z043MElyTVd6QjBzQllCc1NnVkEvM2U0bzJIOXppcXFzZmpLZjZWeTR1NXZ2Nk9wYjUwCitYUzk3QXRrZUw3bzNKbklOQkFobzRwK3E4Z2M4V3lGRVJOR2JYdld1UkxlS3ZFOGc4VFBVOXdoeUQrSGQ3M2dTdk5MNWpCZS9DMm9zCitnOFJMMy84SU9CRHNWV1IzQXVuZEFvRlhQN0tWcjN3blhCRUYwV2NiNmJVUVVDTGE0RVVTUlRXQk5BbDRUNG9Ta0NKb1BCMnlxNGRQCitZTit4bm5jemZVVUpaNnVBa2g5SVY1RklUY3BLMUdQZ3pUeFlRaFAyVUg5d1d0SHpWdlRCaWdBd2pFeWNIMEdlS0tVMUZxK054MEtpCis2cTc0dFFEQzBZZGZGSndZS1VKRzB4SCtDNDNFRW9qaUFnaXVLZjZ4aXNiTDAwQ3VNYWdqV25JaWRiU1pHTUdISWtBT2ttTmE1SmpxCitRSVJKbnIzdGxIRThaQmdOR0R5TlZhMlJUb1RTSGlrNVNUK3VpSlNxVzJVWE5kaEppMWpNVDVKQzQwRDh0S085Z1l0MXBSd2YwWEJsCit4RGE2Y3BscUdCUllaRGttQ3p6aGd5azRHaW9sdGN5bVhhbG9wcFNrRzMwWXRZc3NNUVZRT2lZcUJlYzN5Z210WE00OEpTcGZWb2RwCitwck9mNWJvbW5seGxrVEIxODRiaUJCSXA4Y1kxdytXTmx4VWNuOTdBTVR5SHRCTktrL0FETXBNNXo4ZlZNM0llVzZnL3RaWWpjT1F5CitwSVVrRlVDelNjeHJLRk42R1pWbmo1aXB0NFlTOHFIbnhKMUhkcmNLRlBVT21ZZmFLRVRQcWIrRUNxVCtvTlhVSHpBMUNhTDR4VStiCitoOEpZb0liV29pdW1RR2xCZlNidzNsaFRiUnJrZlIvc0tjZCtLa1FmVXJLWHd4U1JVYW1wVm1ReE5aNExlYXF5VXNEUHFhNkNWM3pjCitaVTE1TnN4ZmNsR1RicVdJVjF0SVBoR3VBcWlsL0NFNnIzU29wTFp5cmNWcnF6WjE2clM1L2kxVVkwV1dRL1ZxVThiKzFTSjIrcURICitjblVzUVZsVmtxOTc0ZWdneUtnQjVqVlFSS1NlUUZOUTJNNG1oQXE5bTkxcE8zalpWUG9SaFcrYkltdTVXaEFMMUJWMnVXb1JhVzJLCisyZFlHVWEyc1JhM3ZZdWdpMldKeElyYTFFbzFjeHI0OWNWR1hwMzFtYzgzMzJnd0tONC9GQlp6UldnUkE1UTQycnltMFl2WEdDeWpvCitick51STZNdWJRL3lXZC9oaW4zK3lkMHRYdWtiM2g2eUVMYjVCZXhHUFVxaWE5WFR1d3hORit2QVpsakorYzVzbVdXaTdWd2tMVS9wCitibzZxSzVvQXpPbmdhRFlOYnl1cDNHNmZkbUNHMUtGd3BCSVpnN1BsWUJPVE9MMTlzOXpIS2h3MitvS3VXaHRlY1VFbTRlRnlldXdFCisyQ1BSWFdjNjArekdUcm1aYTl4SVd0eERFeDlaeHBtbDhOWlFqTFNQQ2k3RHJlMnhoZ0hBWWZjbG1LTUx4aFpRSTRnM2hxS3R5WmQ5CitNalFwSnVjNXkraGUrT291Ui9BRnB2bXFaMzM0NHQ5Ri9Bd21RR2ZGenZuNmlLRlRnT2Z6NkZtdUl4RTA4NjV6ajBhUEpOR0xOaytqCisrZHlSVE5PNTA1NytOS2hETGVwUms3clVwajQxcWxPdDZsV3p1dFd1ZmpXc1k5MXEwZnJNVWdQK0VXU2dVTElVeTREb0hwTGhkYTROCis0bXZLZ01QRkIvRjFycFBIbUdGYlppV1g2YlZsTkpjU1RXdk4xcmRlUlIwQVVJZXFIdVV5M2FZTUR2a0loTjlLSzNkK1l3eEdtRTJaCitZS2ZFMjlNdWlMcUxyUkJrcHdTNUlzRU1pRER6N2NuSW05MWRCY0R3WERVWjNhcDdNcitxVEw4UkVtMUFuZVF5MUpaMVZGSmd5WEVUCit4Q3YwcnV6QVN6c1FkTU5iTWcrL09QUjBiUUVwSXdUWnZxNER0VGgrRkUyclBPUVZSL203RGVLSHliaTRtNzFUZzIxWGZoQ09Qd0hiCitwWDFrTXEyZHdFaDZKZWJYempZUGhhMXJseHVkSUMzMzk4aU4zZkZ1b3c3a0xYKzZ6bjBIYzVEZmVqTHpWQU1BbEhYRnJTK2Q2V1lpCisrYzduMjNPWWV3L2kxZ0grZTYrZUFBQVgreUhiYlM4SU9IalZUVmhobmQ1OUw3dS94eFRKcWZ2YXlsZG4rY2ZMam02czgyTGNGUGRkCitKTUZ1SmNhMzNNb0RtUVMxMGI3amU5Zzk2Nk16bmM5TERuaS9QN3pwZ2Q5U1F2enVzbDVaSGZGcGQvckJEeklKY015ZVJmTk1VK0ROCitMdmlFcUZ6dWZPYTYyNjBDRGpIVlBaUERSd253amNGNndHODg4WjdYL2QxNUptYlI1eHJzaXpvODdKVmVrT2xqWGU1K0dQbEFxSUE2CisyenlLOHBxMndPQlJXVnlOQWJ5b3ROZjEweDM5ZkJHTzN1T3ZwejlCZm54c2orYzg4TmczeU5XaENQQk5pcUsxSC92bGpocFl5UUNDCituUDRCSUo5VkNyVU1ZUEJGSEx2TTFwdGdIdkl4bi95a1gvTnBuK25sWHU0eFhyQWgyKy8rTk4zLzRaLzhaQXpXZ1ovM3pWOEhPaUFLCitadEp2TVpHdG5Zbjh5Qlg4bFo3M1hCb0lrdDc5UVo4SWtoN1lRVW5yWlI4TStvN05BRis1RVdEMFRaMEh2dUFSOXB5eFNlQUVOZ1hjCitFWTNLM0FtOVNlRFk2V0M3VmNiZFhjWktBQi9YQmFGSUlCdlZlTWdKZmlGbGpLRmwwQnJXV1ZianNZc0lQdHZ6Y2QxRm5ReVVBRUhHCitqSkMvaWVESWpWL0hWVWJzc2VGa2lNalRsYUVPK21BS29Gd1JiaHl3R1NKU2dLQ1FjWSt0U1dEQlplRDI2YUFkUWw4VlNrV2ErRUhWCitjTjZqYkNIelRRTEs4S0FMK3FBVHhtQ1VUTi8rc1JzcHJ1SGZFY1FxVk0zVHlaMWxQSXI0RFJlZ21GOGVEZDVlalFtdlRGK2xGT0lICiszZ000Z0lNWDlxRCsvUjJoN2pXZ0UzSWNGWURGMHEwaEZGckE5QUVmRlZnR0xobWdiWGpJQWk2ZE5CcGhBb0VqRlg1aVVrekN1SWxLCit3eEVpOExVS1E5UmlNdFpmeFhGZzIxMWNxTkNpOHpIZDA2RmYxM2tJNm5VZGxBQmprTXdUOVNDRUd1VEtCMldpczFFYjV3bGlMRTVqCis2U1hpMGcza1JISWMyQldkQ1ZhazYzRmRBMWJqbTh5VFpZM2pQZktlNnpXaE9rYUZ0RWlVQjNLZDNFM1VEL3BqUDhaZzFLWGVHZXBhCitwZkRqRTdMYjAxa2VFTnlKelZuSmpYeVFRYTZkMGxnQW9VRUs3VDNoMC9VaVE1RGhNMjVpSzk0azlSbGR3NW5qQjNaazdwa0lRYUNpCis5MHpDbzZDaUFqTGZ4Vm5sRDRLbEo2NWtVMUFCQjVwaVpSaERKcUtrQitwYndVSCtHN0ZKSGVFdDNTVFFvcmN4NE54SklnU0FvNWxNCitpOFpnbTdiWmxTUXVYbVdFbTBFbHhFa3Myc1Y1bThOZEpRcGl4aTlhUnE3bDVieE41YVJjSTh0VlpzdHB5V2EyWVZObVVtQUdTamNDCitBTUdKWVdrQ1FNTHRYR1VrWFRxeXBXM2VKbTdtcG03dVpwNjVEam5oUkp2aHpWSlNTSEE2RTA2MGpPc1lGbnNVWjQ3eHBuTStKM1JHCitwM1JPSjNWV3AzVmVKM1ptcDNadTU0RDRwbmQrSjNpR3AzaU9KM21XcDNuS3BIOGdwM211SjN1MnAzdXlKM3IyQjNPK0ozM1dwMzJTCitwNExBNW4zdUozL3laemMyNDM3NEdyYjBKNEVXcUhuK1o0R2NoSUV1S0lPQ0p6aG9vSUJNNG9ENEdvRHFCNFVXeUlVU0NFY0t5SVlXCitpSVFLU0liK1RxZ0k5a2VJY2lpRTlrZUhFc2lIQmtpSnN1aUk4a2VMQWtpSy9zZU1ScWpmZUFFbTVLaU83aWlQOXFpUC9paVFCcW1RCitEaW1SNm1qSVZXaCtoT2dOdkFLVE5xbVRQaW1VUnFtVVRpbVZWcW1WWGltVDNzQ1JKcWl1WFVPUmZpbVlocW1ZRnFrWHlNK0pBb2lFCitla0lwckNtYnRxbWJ2aW1jeHFtY3ppbWQxcW1kcnVrbGJDbUJoR2dWVElHZi9pbWdCcXFnRGlxaEZxcWhIaXFpSnFxZlZvR2VEa2pSCiszUU0rM0tta1RpcWxWcXFkZW9LWjVxZmZxS21sZHFxbmZ1cWM1cW4zSUNsKzhLbWluaXFxcHFxcUppcWpqaXFYUWsra2dxcXN6bXFuCitZcXJ2bk9sL3BDbXQ3aXF2MXFtbzVocXAzb2VwcmlxeEZxdXhHbXFyQXV2K3E5cEdyUGFxc3o1cktkanFtT0NxZitncXRGN3JydjVxCitqUDdIc0I2cnQzN3JxaWJydHZySG96WXJ0cDZycDBwcmpRYUloTnBBTXJ3cnZNYXJ2TTRydmRhcnZkNHJ2dWFydnI3ckF6UXFpS3JjCitGb1NEd0E0c3dSYXN3UjRzd2lhc3dpNHN3emFzd0c2QnZ3WkkwUkhDdmxhc3hWNHN4dTZyRFdScWdraW9BN2dEeUlhc3lJNHN5WmFzCit5WjRzeXFhc3lxNHN5TDVBeEFKSWlCSkRMOHdzemRhc3pkNHN6dWFzenU0c3ovYXN6ODRzTWJ3c2plcmFQY3dDeXg0dDBpYXQwcTZzCitBM0FzZ25qczBrYXQxRTV0eXJxc3ErNnB5c25zejI0dDEzYXQxL1pzMEY2dG94S3QwVkt0Mlo1dDFEYnRyV3JxUUh3czJyNHQzRmF0CiswUHIrUjh4K3JkM2VMZDd5Yk5ncXE0YVNiZHorTGVDR3JOcE9LOXNLaE5zR0x1S2lyZFh5cllqeW1kYm1MZVJHN3RmdTdiaWlxTjhtCitMdVpTN2VDdUs1cjZEUXFVQU9pR3J1aU9MdW1XcnVtZUx1cW1ydXF1THVoK3d0eVNxTXJSQWh2TUx1M1dydTNlTHU3bXJ1N3VMdS8yCitydS9PTGkyOExuOFVIUVN3cnZFZUwvSW1MK3VpZ05NZWlMV2lLL1JXcXJhK2FJQ3FYSitDSy9abTc2R0tLL1hxUjdsR0wvaE9xcnBTCithMzg4Yi9pZXI1eE9iN0RhUjdkcXIvdStML2V1YjMxOEwvcldMNXlPYitIeUFxZmFMLy9pcWZCV0w1OWQ3L3NPY1BiRzc3SUdpcm4yCitiLzNpYjhkNnJ2SStNQVJIY09xNnJ0aitLNTlSUXc1a3NBWnZNQWYrZDdBSGZ6QUloN0FJanpBSlp6QTEvSy8zNmxyeFNqQUx0ekFFCitNKy9hTm5EYlppNE5SKzNpVmk2TVpxM2s3akFQZ3kwSzU4ZWpsbTBORHpITGJpNzU4Z2ZVRXJFU3kyMEZ1NmpqOWpBVVJ6SE5VbTczCitBdkhsTGpFV2s2d1I1Ky9oWnJFWHU4TU5WM0dwNnJBVWwvRU9VN0g4MGtjUWZ6RWJiN0VNR3k0YmYzRVlwL0Y4MUswWjMzSGVvdkVCCitGMjBjZTdFYlA2M2ZoSUVKRERJaEY3SWhIeklpSjdJaUx6SWpON0lqRDNJZi9QQVk4MW5BT3F3bFh6SW1aekxEUW13VHk2aXVFY0lqCitoN0lvanpJcFAzSVlOSytCbUs4Q282LzZZcWoxRWpBc2c2c0I5eTJzcmpML01qQWdEOFQrMnZMNXRqTFdCbkFzQjdPeHp2TFkxakwrCitMNk12TGp2dnBoNHpLMHV5c0w2eU1FZHpxaEt6aVJvek00TnZNcWZ5TWw4eitQcHk0dzZFQUV1ek9HK3ZNOXNIL1hJejlHYXpoL3JOCitOcENDTzc4elBNZXpQTTh6UGRlelBkOHpQdWV6TzdORE9kZEhpRDZDREFTMFFBODBRUmUwUVI4MFFpZTBRaTgwUXdmMEkvU3pHcXN3CitHZWd6UlZlMFJWOTBQbThES3EvekRQY3hGcyt4S3o4eEhvLzA1RUwwZkt5eFJ5L3hIeXR6UjZjMEVZUDBMdy9FNDVJMFRmdXNIdE95CitiUWl4Uzlmd1NtdHpTKzgwRGNQME53dkVUTmUwVWVmc1RSZHpUZ1AxRVBjMFJ3dkVLY3lDVkU4MVZWZTFWVjgxVm1lMVZtODFWM2UxCitWQytCU2N0SGlGS0FLcFMxV1o4MVdxZTFXcTgxVzdlMVc3LytOVnlYTlFXRWRYd1VuUUJrZ0ZmbnRWN3ZOVjkzOVNsc3RJcjZqU05rCitBV0VYdG1FZk5tSW50bUl2Tm1NM3RtTS9ObUg3QUYzRFI0aUt3eGxjTm1abnRtWnZObWQzdG1kL05taUh0bWhmdGpoTTludllkVGRBCit0bXF2Tm11MzltTTdBbUFQaUNxajg3VjZzd1dEOHpqbk5yS2F0bnVjTTIxanF6b0h0aTcvTnJyYXRoUGp0bTRuZDZCU3M4UVNiUUlUCit0N01HdDJ4dk0zUkRxM0hETERRcnQzWXp0eWRiYzNWSGQyemI2RUNnUUJDVXQzbWZOM3FudDNxdk4zdTN0M3UvTjN5WE53VXo3bTBMCit4QXhFQUg3bnQzN3ZOMy8zdDMvL040QUh1SUFQT0g3UEFHKzNCL0dPUW53dk9JTTN1SVBETnd3VDdodnpRaGN6ZGVJS2RYMys4MEpSCitIeldIVC9HQnN3ZEtXemptT3JWd3c3R0lZeTZHSHpkUmR6aUwxMnhTVi9OU24zamlrdmgwLzdTTS8yMktZN2RJdHppTHYzaHpRNDlPCiszM2pjMHJoNG03aVE0L2lIcjRjZDgzaUgrM2gzeC9pUkQzbDRzNnZmUEVNWVhEbVdaN21XYnptWGQ3bVhmem1ZaDdtWVg3a09KTGw2CitoR2cxL0lLYXJ6bWJ0N21idnptY3g3bWN6em1kMTdtYVY0T1pwOGZFamptZjk3bWYvL21ZUDhPVWQrNXdmL2V6WGplM1pyZDJKemQzCitENjEzRy9xdVNuZVI2eStrT3l1aTA2MmlMM3B1TnpxNU9uZWw5NnFrVTNtaGZ6cXRYanJzQXJPbU0zcWV6NGlua3pxdGhqcWhDOFF1Cit1L3FubW5vT28zcXFiL3FxTTFxcjB6cW93bnF1c2pQK1JnODdzUmY3UGZOekp5YzZud0YwUXplN3N6ODd0Qy8wUXlkN3B3OEVCRXkwCitzV2U3dGcrN1JzZHdMaHQ1bEw5dGppdTdURE41ais4NnBsMXh1S010a1lzNnVLKzcyWTQ3cHUrNHVSdTFrenM2bE1PNzJiWjdyRk80Cit2aXN1dXBmSGt0ZDdUZDk3dGVmN3Ywc3R2d2Y3UUVSMVh6ODh4RWU4Vm9NMXRaLzZRRlJBWEdlOHhtODh4OE4xQlFROGVkZzFYa3M4Cit5WmY4dy8rMXQ3TzBRQXkyYTdlOHk3ODhZMHQyeGQvNlFGajJhTjg4enVlOHpvZDJhYy84ZnFBMnpBZTkwTHM4YktlOFQ4dTZyOHVxCityUU13Y3VmNk9ITzY1VDU2MGxjcXNGY3JkVSs5cFM2OWhXYTYwd3N6MUE5dnIyTTkxUTg2d3lPOTJHYzl5STlIKzNiK3ZkZW52WGo0Cis5dGxMYXRXWHI5LzR3Z0hjUGQ3bnZkN3ZQZC8zdmQvL1BlQUh2dURmUFRhNGZYaUVhRFlnZ2VJdlB1TTN2dU0vUHVSSHZ1UlBQdVZYCit2dUpuZytHREIvRU9QdWQzdnVkLy91RDdBdGxidlkwbi9OTEt1OFd2T01IYmUrWi9SNGliZnRxT1B0MlhQdXdqTGVyVHZPcXZQazBiCitmTlFqZk8wajdjS1QvcnYvL3RIZVB0UG52dTZQTk8rRFBaQVQvOUlHLyt3UHYvT3JyUEZ2UGIwbi94MHYvOCtyKy9RenJld2pzZDhrCitBdWlQUC9tWFArQVh2czliLzBCb2crVzN2L3UvUC94WHZqYTB2bmRNclBuZlAvNlhmeUo4LzM3TWR0ejdLa0R3RW5nUHdEMkJCeEVtCitWTGlRWVVPSER5RkdmRWpRb01BcVV6Qm0xTGora1dOSGp4OUJoaFE1RW1PVmd4UWxwbFM1a21WTGdTa0FuTVJYaW1aTm16ZHg1dFM1CitrMmRQbno5cGVqb0kwMlZSbzBkZEFraHgwQk5RcDAraFJ2MTU2V1JCcEZleFlrVnBrV1JYcjEvQmpqUTUwR3BXczJkVkVoMDRVMnBiCit0Mjk1Q24wWkUyMWR1eENWTW9XN2w2OWJxbVFyM2hWc2R5dXZpMkVSSjFZTWNpeXZ3b01oWjFYcm1HMWZ5NWZqRHFVYm1mUFp2QUlkCitaUkU5bW5ScDA2ZFJwMWE5bW5WcjBUNnFCdTQ4dTJWaGNXZHc1OWE5bTNkdjM3K0JCeGMrSExlNDJMU1JzNXdzb0p0cjU4K2hSMi90CitTSE55NnkwLzh6bzFpM3QzNzkvQmh4Yy9ubng1OCtlNUx6bCtuWDNEd2hWVXhaYy9uMzU5Ky9meDU5ZS9uMy8rL0FycjJ3c1FvZVV5CitRTS9BQXhGTThMeFRxaFBRUVlXeWM4Q2RDU21zME1JTE1jeFF3dzA1N05ERENWOEE4TUgyQ2lPbWx4TlJURkhGRlZsczBjVVhZWXhSCit4aE9KRVhIRTZ5YTdaNVlQZWV6Unh4ODlkS0RCR3grTUVNZ2prVXlTd3hBQkk1TEVzbmd4Y2NZcHFhelN5aGhyYk5KSkhEZlRVY2t2Cit3VVJTeUxtMmRORElNTkZNYzBrYnkreXN4Q3ZoakZOT0dMTjBETW8yWjh0eFJ6WDU3SFBDTVhtWkRFL3JzanZraFVNUlRWVFJSUmx0CisxTkZISVkxVTBrTU5ZWFBRd1FyTEpwTk5PZTNVMDA5QkRWWFVVVWt0MWRSTnM3SDAwcnNtZzJDSlNXR05WZFpaSlQxa3lGVnB5NjRwCit6SGp0bGFhLzdKUU5WOEVLTzJ5eFk1SCtEYXV4eDRabHRjdktmSTJXTDdrQzNheFp6blNWVnR1OWdHWDJXclNLVFZiY2NVVmE5czV2CiswY29SMm0zWmZZcGFRZEVWTE50MjZYV3EyM1BqelNwY2N2bnR0eVJWOHoxSzNYb0o5dWxkYXdPdWE5NkNHY2JwWG1FVFJtcGZmeWxPCisxbHlJSXpacTRJWTVydW5nak8zSzdwa3dTQzdaNUpOUlRsbmxsVmx1MmVXWFNkWUJZSkJYS3F5YVgzRE9XZWVkZWU3WjU1K0JEbHJvCitvWEd1Wm1hYVU1cU1FSmlaYnRycHAyRis1bGFrcnpyVHo2dkRaREpZcW85NmM4NnZ3WWF6VG0rNVRxdkxQYkZPTzBsQTRTMjdLS3ZWCitqdHRIcmNsMk95S3Z3ODViN3hmSHh0ZnVpUFNVVy9BZTJVYjRiNWJnSGx6eERPbjIrM0NIOE41YjhzbisrOGI0OFlZQ1gxeHpEQXUvCitQS21sQkpKdzg5RXBiTnh5enhXS2ZQTFZ3NjRjZGNEUEpsMzJ6bDlYS2JzbWxNbGQ5OTE1NzkzMzM0RVBYdmpoaWRmOTZOb0xFMEdLCis1Wmx2M3Zubm9ZOWUrdW1wcjk3NjVVVTQvdlhKcmluZSsrL0JENy80SnFhdS9hSHN6RitvN3ZTM1psOTl4OWx2MjMweTUzY0kvZnJiCit4MTlML2ZQWFgvNzUvNmUvKzlWdmZla3JvUGtPV0xzQXhzOXcvT01GQU1CaERBbE9rSUlWdE9BRk1aaEJEVzZRZ3gzVUlCWGdaMEFBCitVTUdESlRUaENWR1lRZ21DOEhUcGc0a0tZUmhER1pvUUhBM2szd3h4bUVNZFRsQU5EdVNGR25ZWVJDR2lzSWNPdE1BUWtaakVEUHFRCitpVTEwNGhPaEdFVXBUcEdLVmJUKzRoV3htRVV0YnBHTFhmVGlGOEVZUmpHT2tZeGxOT01aMFpoR05hNlJqVzEwNHh2aEdFYzV6cEdPCitkYlRqSGZHWVJ6M3VrWTk5OU9NZkFSbElRUTZTa0lVMDVDRVJ5UXNnckFJaDF3QkFFVjl5a0JCQ0RnQ1Z0S1NkQkdKSlRXWlNXQVN4CitKRGo4UU1sTUdnTWhCSG1nSml0SlNsUldNcE9hQkNWWkdBS0VSeWJrSHNhb0pCQ0s2RWxOR2tTWEVBd2xRMkN5eW52MDhwVUtVUU1qCit6OWZDaEZobGtpc3B5Qk9NOFlSRVR2TXVmcWdEUWlZQmpnRnQ1bHhQV0VVZFJnakoxQm5PbEEvRTJMbkt5UXNMMU9HWDcydmxKS3FDCitrRHY1RFVvcHFJTTAwNG1RSjFRU2RBSlJBd0RnK1FSNzRyT0I2VnhuT3htU3ozVENSSm9KTVliK09JRjVqWlJZSlFVU3pZcFZMSUJNCithbTdVTE93OENCWDZlUTl3U2xKWXE2Q0NSTC9aMEhHdTFKd0xRYWUxVXFETmhOSUZBTWE0Snl4SktzOXp5c1lxK1R4SU5yT0pFR1AwCitreGRVc0FBbVdmb1NtYnJIV3ZrOGx4cVdlbEZsSnNVZ1Q2aURSVG1hMWFPc0FwbjdMT0lUd0RFSmJnb3JCWUZ4bkUrUlNzOU9Xc3VSCitXS1VsVGU5QkJTRGdsSk02ZFNsUGU0aldvbFowbHJ6d0trTFVJRkc5NXJPdG9veW5KTjBhS05BWnd3STFOQ29JNjNCVXE2Z0JzcUNqCitMRC9yYXBVbnlES3lwRlJEQ3V6NUdXOVdjaFhTSEcwZFlGS1JWY0JUcTYxMWlUVUZZZ0VxREtXc1kyVnFZZzliU3JqZTlhM0x0Rnc1CitDL0xQVURxVnB6c2RDakwrMGVySUhvS1VycjFOYWwyWnFsdmFLc1FZckIwaFN2Tml6NWFpbGhmWHFJTkJxdnREWmhyRUtzWUF3aE9lCitBRUxIMUlHUmZwaWxNVXE3V1ViRzlCcWpyY2drU09sYS9hN0VvMEJnYlZ5UjJ0S0ZySk8xNzl0bFdsR1ozNWY2ZHFaMUhTaHg1Wm5nCitWbW9TZEdpZHhHeDVNWWxyQnZpdHFHeXVnQnRjRlZRZTFhNFAvR1U1VFdrVjl1SzJ1K00xWjJFeFNaQ0dGc1NSRGYwbkx5SXJFRWRXCitSSy83OWZGQ1VsQmFBRWpVcXJ5MExTM0JBWTRXb2hXNHhwWHVRV0RNMHJKUVlSVVF6aW1FQW1PQklYTllJQ0RVWkNpVlc4cWpEcGF0CitXNDV1YnIyNTRTdVhCY1V4c2NvMVZnR09PdUJTblZRQWh5ekptK2QwT2pMQUJla2xLNkgreEdZYi9walEvb3dzaHYrY0YzVFdvY0JuCitmckphbmF2VU01ZmxuNEthcDVQcjZ0TW9VMWtnUTBVSUVKWkM1Z0ZGMVoyNTVYSlpCQTNMT3dtMER2OHNvb3VEYTJaVHBwUEdoZ01ICitpWGM4RURVWG10Y0lTWEtqNlhvdUtnQTd4SS9HTkYwUE91bkFCTFBFMEdWd1RuMmFBZ3dMUk1Oa21ZUTBOU3pZZ200bTJZYWxxemZuCitLbFRyOHBndUtUWUlkd01GRGxkbkdBQ2hkTEY1MGF0ZVdvTTN2cXNnSlgzdCs1TDg5cHJmMWNJdHJUMHN6R0lmZHBYTTlEQXhFU3BsCisyYWozeWhNKzhKM0FFV3BVeHJUUmpqeXhsK2xzcDRscnZKTEY5RGJIYjZuU2x5QXoxWmkwaWg4dzNzUFFEaFdnTG9ZbUJGY1JrM243CitWWllBT085Y2xKTCtnaUw2dDk4OTk3bERya0hxdXR5am9TSkZpbFZGL25PbC83ektnNGs0elRWYUZOQXVuZW9yT2FJRlNTd1lJRnFRCitxRnk3ZWdXejNwSnJkQjB0UUNSdDBsc1M5YXF2bmUxdGQvdmI0UjUzdWMrZDduVzMrOTN4bm5lOUYxS0pmZmQ3MlBHM2RiOFBYb2dRCityWi9nQ1o5NEhFSVJnb3AzUEF3SE9EK0NrUER4bFM4aEMzMDRlY3R2bm9NMVpEelo2eGQ1OXlYd2RhUkhuZWs5dDhEUWczNStvbWNmCis2aThIKzhmSi9uQ3FiejNyM2VkNkVVNjE5TTNzUGU5UlovdmM5MU1TcnpEKzhaR2ZmT1V2bi9uTmQvN3pvUi85NDJOVjl3aUVFaWF3CituMzN0YjUvNzNmZis5OEVmZnZHUFgvdmFPejJVcEo5KzlhK2YvZEsvUWZrY21KMytZbFNNL3NjQ2cxbHh2M3U5ZEt4ajFLTDkzd3FECitEZXB2QUJHak1ZU1BmZVNQQUJYUUsrNVBrdkxQK2dKalYvaXZZZnpQOTg0dk1BUndBVFV3SkF4dzBQQW5BVGN3QkR1aUFUUHBBWkVICitTaVJ3QWd1bUFvSFBjd0pRQkdGUUl6cnc4dzVpL21Jd0JrbndnVXp3OS9aUEJWZlEvRndRU2pMd0JrVndCcDhvTzdxZ0I1UndDWm13CitDWjN3Q2FFd0NxVndDcW13Q3BlUUVCd3c4NkRrQXRxaEM3M3dDOEV3RE1Wd0RNbXdETTN3RE5Hd0N5OEFDR01QU3BEQkN1RXdEdVZ3CitEcXVRRXVDUGY3SWpIMlNIZEdZQi83UXdNS1NFZFFUeGExekhnUXJqQmZad2RHakhpZkl3RVRlbkQ3UFFFS0VrRUFleEVxK2tFUG5uCitFQjFSY3hiK3NZa2FjUk1WQnhKTDhBOFBnaEl0OFJSbkJCUDFSeE5CY1hBNmtZaytzUlhsUmhSMWtCUUZ3aFJSTVJkZFJCWHhoeFZsCitNVzVlMFlleUl3OUVvUmlOOFJpUk1SbVZjUm1ac1JtZDhSbWhzUmdGQVFJaU1ST2hwQUNBSVJ1MWNSdTVzUnU5OFJ2Qk1SekZjUnpKCitNUnNMZ0ExbkQwbzBJQnJac1IzZDhSMmhVUVB1VUlENnlRYUpNQVJ6c1BwT01BSjlrR0ZZMEJaNVlRanZVUU9Oa0JIcmNTRHgwUThsCitrUi83a1dEK2NTRVBRaUFSa2dBTDBoTVBjaUlYTUI5MzhBSjdzQ0hiNVNHdEVRTXhjZ0VyRWhiN2FRT0lJeVZWY2lWWmNqamdRQUNxCitjUldoQkJTa295WnQ4aVpYQXhUUThYQUs0dzVhOGllQk1paUR3empveHlEK0Q2SVNGQ1FwbFhJcHl5TURZSElVSVZJZ0tLQS9xTElxCityZklxK1lNQ2RoSUFvV1FKbVBJcndWSXBHV0FlUDdDZjlQQVg0NFlXOVpFSGIxRVgzWkp2dHRKdWZCRXRzU1lZNDg4czZWSnQxSElqCitneEFRMy9JdlY0UVhDUWhLRURFdjY1SXNWKzhnenRJdy9XUXZBUklYQWRNdEJWUHlDSk14cjhZdThiQ2Z1cUFET0xNelBmTXpRVE0wCitSWE0wU2JNMFRmTTBPVE1YcUJFcVEvSWdlR0FjWURNMlpYTTJhYk0yYmZNMmNUTTNkWE0zWVpNSDR0SnRDb01UVUhNNGliTTRqZk0wCiszUUF4YjY4R1IxSUJOUklnVTlBanR3VWtaVklrbTNNQVMxSVlML0k2NmU4NW81SVhvbE02cFlVNmUxRUl1YlArc3ZNdW1mTThLOFk3CitXMVArSU1KVFBIMkZQQWZUT3RuVFg5SXpNOWZ6UHZ2RlBhdXpJK1V6V3VpVE11MlRQOGtsUCtueElJYmdPQm0wUVIzVU5MR1FOZjlUCitJS0NCTnkzMFFqRTBRM2NUR242emJBb2pGeDQwUkVXMFFabEFPWWRQTVMyek1SWHlQYU1rTWwxME1rZXZNbE9VVHpBelFRVmlNV2NVCitUUnp6T3lIVFJWRVJSbDlQUm5NVVRXcTBMRkYwU0hWMFJTZTBSWDMwTDRGVS93U2lNSkVVVElvME1XOTBTc05rUjFtMFI1dTBFcDhVCitBZzlDU3JGMGJVd1VBZnRwRHlRZ1RkVjBUZG0wVGQzMFRlRTBUdVYwVHVrMFRSRmhOV3Z4TzNWaEJmaTBULzMwVHdFMVVBVjFVQW0xCitVQTMxVVBsVUZ6cVVhd3BERWVyMFVTRTFVaVdWVHVXeEtDMXlQdzMrZEZ6OHN6d1pNa0RIYzFHcDVnVXo5VURMTkgxQWNGVEZaVlByCitFMEE5bFZjR05FWUxGRldQQlVHTlZDRHNVVmJ0VDBrNWxWVmI5VEplTlVoakZWY1RnMWF0bEJmUWRGS1JOVm1WTlU3dk5DWjNWU0QyCitGRkdsZFZxcHRWb05WVkgzWjBrZGRWbTV0VnVSdFZLcmhRYXZkRXlWUkV1WGxFdTdWQkMvZEIvRGxGeVZwRXFYYzF6ZDlVak05Vm1aCitORjF6Y1YzWmtoZkVkRjU5QkY1UFZGNzkxVWZxZFZYYkVsL3pGVlNSWmk0SGxrY0Exa3lQdEdGN3BHQUp0QlFSTm1HejFWNzdWV0k3Cis1R0ZOdFo4V2RFUkZkbVFoMUZrTmxoY3FWRU5WZG1WWkZqYzVOR05QRmtSSmRtWnBsak5MMUZKTkVsT0ZOVEZVdFdMaHMxY0ZWR0grCithVVpVZDFZeGlEVmVlZUZXaXpZc2VoWldlUlZvcDBWb1FZWm9sMVpaU3RWOFRyVnF3YUpwZ2ZWcG9SWXVmaFZLQTFKckMvQnFheWRyCit5YllydUZaczQvTnJ3VlpxTTRacTA1WWtqalpnZWVFY1lpRnY5WFp2K2Jadi9mWnZBVGR3Qlhkd0NUZHZ5UUJQMTVJakJZSUhrcUJ4CitIZmR4SVRkeUpYZHlLYmR5TGZkeU1iZHhmUk5tZlpZWDJLRndRVGQwUlhkMENUYzVjVlk3STVaalBZUmluZlpnTDlZUzlWVngrVlYxCitIZFpzWHljV2FaZERXTGRyWGZkMUJ6RjIrN0pkYzdkamJSZDFjSGQ0TTJSM3hSWmRmVGR2Z0xjTkEyTmprZGRDUEJacit3a3B3eko3Cit0YmNwbnpKUFdYUXFzVEo4eFhkODgwTXJPYmQxZWNFcnQzZitmZG1YTzhieWROVlRJRkJTS09tM2ZuL3lKVTIyYzJrU0ovbTNmMnRTCitKOCtYZDNuQkorMjNnQTE0S0l2WGM5QjJia1ZpYmNIMFo5M1dWK0UyWXVTV2dUa3dnUzluZ1MzNEl4eVlYU0U0Z3ZzaWJCOTRiRGRZCitMREQ0Y1RTNGhEbWlnL2UxYlVGWUtrVFlnMGxZaFJuamhBOW5HT0V4aDNWNGg1MXhHdk1YZmJHeEhJVjRpSW00aU1meEhBTlliTmVSCitoNW00aVhNWVhBL3dZMU4zZWk5RWVVZVllWnNYYko0M0hhT1hpaldrZXM4V0w3MFlRNnhZaHJFNGkrZGtpM2xTU01lNFFzRDRkc1c0CitqU3VralBmMWpORTRUdFNZSzd0WWp0M1lodi9tZU9XWWptWFhqdS80RWljNFlSaFdqdC9ZZURXVERoMzVrU0daQ2lQVWU1ZitsQXZUCis4Skl4T1pNMStRelhNSWxIK0Ewak9aUkYyWkh0RUg3MTAxWnBPQ1JZV0haZCtJV2hJb2IzVlNKVGVTUHFGbUpSZVpZOVlwV0Q5NE5kCisrUzFnV1habEdaZi94WlJ0TkdtRmVRUjE5V1JidVplQjRwZDNlWWFQT1NOcVdZcHZPWm96UXBlaDEydVp1WmtQT1dBcStKaW4yWG9QCitBbTlKdDV6Titad0Q5M0IvV0lBWk4zUGQrWjNoT1o0dmQzUDd4MTQvRjUzeE9aL0wyWFREOVFqam1JL2RRWkNmbVpBTHVVcnlXQzdaCittSThYV1lIL21ZOEZPcHQ3dDZDZHQ1dnpKWkhiZUtFenVLRURPWms3bDZBbE9oVXBPbDRzZW93eEdvWDdhUkRhTjZXMTF5blhXV3dOCitnSHhoT3FiRjF3QkNHbDBLUTMxVk9xZVhjZ2Y4Mkc3K3NtTitEemlvaGZvTThGZEM3WFYvL1RlcGxWbzFBTGllVDVhQWh6cXE3WmNvCisrOWtvcTltYXB3Q2J1VmlidDlsZ2F2cGJ2bG1Zd3ptTWRUYWF0WHFOTzdXcm84S1pJUnFhclhtczRiaXNqL21zOVppcjFYb24ySHFyCitCU0tZeGJxbjNRWUpQU0N3Qlh1d0NidXdEZnV3RVR1eEZYdXhHVnV3RVpjdjI1b1pZR0N5S2J1eUxmdXlNVHV6Tlh1ek9idXpQWHV5CittZUdycjZVd2hLQ3hUZnUwVVR1MUdSc1EvTHBzQUxtTkgxcXY3L1dqVzBlMG0yV2t2YmlrYjFpalladWowZGVqYVp0T2JIdFljSnVLCitkZnVQZVh1TVl4dXRMVGE0YTl1VFpWaDZTYnExdWVhMWxkdTNCUmk0bmJ0RkRobzRFMXFScVp0cXNrTVo4cUc4emZ2K3ZORTd2ZFY3Cit2ZG03dmQzN3ZlSGJ2Q0VwY1ovWkJWcmd2dkU3di9WN3YvbTd2LzM3dndFOHdBWDh2bDFndUhHbE1Db2h2aFY4d1JtOHdlRTdDc0liCithZWlib1FGeVNTMGNmNkpZbkZIM095LzhaUDNIQTR2MWxGbTB3enYzd3hrdmdqZ3Z4VEZvd3RPUjhsVDh4VmZJQW9QUXhXRmN4VDN2CitpV284eHlVSThBNVB4M1BjOE9ZSDhYdzh4ZmV1eUkzOHlKRTh5WlY4eVptOHlaMzh5YUU4eXFWOHlxbTh5cTM4eXJFOHk3Vjh5N204Cit5NzM4eThFOHpNVjh6TW04ek0zOHpORWNJbkxzSU5aSm55b014TzFId29CTHpzbkpsUkl1SVZnTkFOaHJ4bFlKeXI0SmdsSUE3VVRNCitrb0RnR2hLTnhkUDh5MU1nM0FSaWtiYnB3MzcrcU9adWppSHdwY21lQzlrOGlpRk1TcUt1QVFnVURHTzhheFVraXJLbUxhbXVnWVNhCitMZEZWSGJBQW9LSDJxWjJzcWR4c0xiNVFuZEloeHRJanpkUmlxaUdnSk16OHhyejBLYXdHenIxU2ZkV04vZFlFQXJaMDdOWmtuYnFLCitidEFxZmJkeXZibWlMQ0gyL0NTa0NWLytDcHRLL2NtU2ZkOUF6TmlOZmRFRlloWDZxYnJhekNGMjNkWVY3dEpQelhMV2FZUjBydUZNCitEZExwYXV4RVRzYkZIY3ovU1pwYTdTWG1LdDBYZ3RWT3A4OFJqTUs0N04waFI5b0FnT1RvM04zSllzU0tmZDhUM2FqOFFLWkVpcURzCitYY09NZ2NYb0hhZWkvYm1xdlNIY3E0ZTB2YTkrU3VpKzdac21udUxSZkJJV0NYU0NhWmZRS3FhbUt1VERIZEwrODJuZFhTcmY4MndoCitnTDNUN3VIcFNxMjU5TjNsdTl5UjFJMmxmR3JiazZuZHB6M0F1ZzNvTzk2dlRNclpHbW5GMk8ybWloN2NXaDdwemR6T1N1M1BqQ0hSCitlUDNXYWFyUHlSN2tQRzdnLzF6clR3bVZLZ0xPd0ttbWtOM0FDTjNud1g3djlVY05pSTN2QVQvd0JmK09VdUNDZ1B3c3ZvNkNlTHdvCitNR2p3SGYveElUL3lKWC95S2IveUxmL3lNVC96Tlo4elFLdnpQZi96UVQvMFJYLzBTYi8wVGYvMFViK2lmR2pzVXIvMVhmLzFZUi8yCitQZjcxWXIvMmJmLzJZWi94Q203M2ViLzNmZi8zZ1QvNGhWL3V0WEQ0amYvNGtULzVnNzhGTDJmbWxmLzVvVC82ZjE5Y1I5eGVTZHg5CitNcno1NGR4dXIxK0F1OStGdG45N3dwLyttcXZmdzYwZnc4Yy85ZEtmckFWaUFzcmgvZUUvL3VWLy91bS8vdTMvL3ZFLy8vVWYvZzE4CitWUW9qRWdCQ21zQ0JCQXNhUElnd29jS0ZEQnNLak1RcjRqMEE5eUphdklneG84YU5IRHQ2L0FqU1l3b0FGcCtVTzRreXBjcVZMRnU2CitmQWt6cGt5VUV5eU9ESWt6cDg2ZFBEVUNTR0hSd2F5aFJJc2FQWW8wcWRLbFRKczZIYnJFNHNTS1BhdGF2UnB5cWtWdXFycDYvUW8yCityTml4Wk11YVBZdTJLemVwRkxHNmZmdjJwc1FNVCt2YXZZdlhxUU9iSk9INi9WdjFaMUIzaEFzYlBvdzRzZUxGakJzN2ZrejRCVnVxCitnQ3RienFnMUlyRmVuRHQ3L2d3NnRPalJwRXViUHMyWjJPVExyRm5MNVhWdkZ1VFp0R3ZiZnJ3MzR1disxcnd0QzQ3bzRMYnc0Y1FiCitTNWJZdHJkeXQ1bDViVVlOUGJyMDZhWlZJNmU4UER2UDE3R0xlLzgrUERldjNkckw4L3pOS3pqNDlleU5yellQSDJUejU5VHIyNzgvCisyanJzNVBIN2IrUXVXM3NDRGtpWWVPVDVoMkJHNk8xZ1NvTU9QZ2hoaEJKT1NHR0ZGbDZJWVlNSXZKZGdoODNWczB1SUlvNUlZb2ttCitub2hpaWlxdXlHS0k5WERZSVlLdkVaSmhqVGJlaUdPR08vQVZZNDhXb2FjZWdVS0NkOXgrMlBrSTMzejRMY21rZmZvMWh5UjhBQTVKCitwWGNHOWhWbGdrQld5YVZ3UlVLWnBYWktOa2xtbWFVOXlWK1kyazNaWlp1elhha21nbHU2U2FkNzE4VlozcGhtN3NsbkwyZ2VpU2R2CitiTlpKS0dKd0JncmZuSVV1R2huK2pJaTJwbWVma2pMNTU2UEtEY3Bvb1lkYW1oMTZ3dVFJYXFpaVdzaUpvNXhXMXB3c2k2ekthcXV1Cit2Z3ByckxMT1NtdXR0cTRxaTZtbi92VWFCQWlNQ215d29RckQ0NjdLS1pvcG9WK21hZXhma1U0S2JYMlZObHNacHNuU3VTbTFseUY3CityWnZMQXFvdFZzOUdTeTUwMDRZTGw3WGRkcGt0dW45eHV5NlgzN29MMTdqbDNrdmF1ZlJlcFc2OFZMYTdyMXZvblpKWHdRWWZ6RlJVCitkd1o4VlhOeHlBRnh4QkpQVEhIRkZsK01jY1lhYnd4eEhMb3luTk5yQXRDRmNNa21GM3hLc1NBTERGUkVscndCYzh3eXoweHp6VGJmCitqSFBPT3U4TXN5WWZyeXdmZnhTa1JYVFJSaCtORmdVL0F5MFNsZ0xRdzNQVVVrOU45YzZXcU16K2RHQXRwK2V2dDB0bnZaRzkrSTc5CittYjVnZzlSdjF3UUNmRFpPOEtwTjRMeHRaOFVmZldUZlhmYlhjNnZjSGR4VnNyMjNSMi83M1o3Y2dYY2tOdDVqbTMxNFJta1R2aDdnCitqZnUwZFJGbVhJNTU1cHB2em5ubm5uOE9ldWlpWDg2TzNvRTM5MGdBcXEvT2V1dXV2dzU3N0xMUFRudnRxajlpK3Q2OWNqRjY3NzcvCitEcnpvUldBOWVVZURRMDVrN25NbnJ2aTlqQmV2RzVaOUl6K2c1TkQvdUhXUTFCZXVmTnZNTjAvdTg5QS92ajF4MWwvUHkvSGxEMmM0CisrZ3M3QjM3ejRoZFAvdnEzblgrOSt2YmIxcjc3MzhjL3FmbE5ybjc3b3czK29JY2VFc3hoZ1F4c29BTWZDTUVJU25DQ0ZLeWdCUmRvCitqKzZkclRsWW1JWUhQd2ord2hDS2NJUWtMS0VKVDRqQ0ZIb1FDeG9FMjR3dUNNTVl5bkNHRnlRQjhkeDNFZjBWY0RiOVE5Ly9BTmduCitBVGFPZ0R2RXpRMXhHQkVkRnRFeFBiemVENEc0SnlFZWpvaExaTXdCaTZmRUtpNm1pZEI3SWhUTEpNWEFVVkdMaWJuaTVMSklSc1J3CitzWGhlL0dLVHdxZzc2UVVvamJVeFkrUFFBNFZnNkhHUGZPeWpILzhJeUVBS2NwQ0VMS1FlUjlEQ3JLWHFDSXhzcENNZkNjbElTbktTCitsS3lrSlMvSnlGeTlENGU5VW9JaFB3bktVSXF5a0ZBNEloTFJTTWZDckhGeWJYVGprdUE0dHpHbXNrQ214Q0VxWjduS3hyWFNsZmVCCitaZHRrT1VzN0h1NldxY3psNFhiSlMya2xrbW5BVEtVd0F6ZXdrMGx6bWsxUm1KR1ErTDcraDNGc205enNwamMxNXJGTnVrOWtKS09tCitPYzg1aTVSRkQ1c0sydHJMcWdiUGVNb1RaejRUcHcrRmhyUjg2bk9mWmxHYVBhOG5NcWpOYzZBRWhlZlYxc25PSEdadmxyUXg1dW5xCitsc3p3TFJOb3phVGpNL2RHVERvNmRHL0lqS2gwZkhtMmlxYnhvblBMYUJvM3VqeUllalNBRTEyWlNNbEkwcmFoSnhFbXFLbE5iNHJUCituT3AwcHp6dHFVOS9DdFNhbHVxZlhlUVBDOEtCMUtRcWRhbE1iYXBUbndyVnFFcDFxa2hsUVV0QjFxcytCSFdyWE8ycVY0R2FpRnE2CitEejJlS0lWWno0cld0S3Axcld4dHExdmZDdGU0bXZVU1YyVlljNm93aGJ6cWRhOTg3YXRmL3dyWXdBcDJzSVROYXhYcUdqRHU0RU91CitqRzJzWXg4YlYwLytpQlY5WklXc1pTK0wyYmZTbGFoczVBOWVDd3ZhMElwMnRJTTlMR2NIS0wzRlpuYTFyTFdzWkJHYTBDUnVyYXl0CityYTF0Tll2WWZkMlZ0THp0clc4RmE5cHJZbE94dHkydWNjLzYydkZnS2JhVlBhNXphN3RaNFNKeHQ3K3RyblY1RzF3d29ZKzR6KzF1CitacE43SUd5aWh4RWdLSzk1ejR2ZTlLcDN2ZXh0cjN2ZkM5L3lMaU8zOUdxT090S0IzL3pxZDcvODdhOS8vd3ZnQUF0NHdQaFZCMzNkCitOYVA0S25qQkRHNXdmQmt4MmZ6TjFyc1V0bXgwdGV0RXoxNTN3eHd1N1lIUnhkMEtpMWl1NEYxdVFwczc0aFM3OWNMTXVpZGxQdHZoCitHTXQ0Q3RsdE1VQlRxK0ljczdYRXNjV2VSV2lyNHlEUDljUGhvdTZNajN6ZEdvUCthM3c0RnJLUWVkemo5RTNZeVVGbThaSTcrMklrCithN202U21abmlLbXNZaWozR0QwSm1JZVp6NHptTkt0NXpXeHVzNXZmRE9jNG14a0hSTlpXYyt5QWh6enJlYzk4N3JPZi93em9RQXQ2CiswSVRPc3gzcVRLMWVwVUxPakc2MG94OGQ1d1JFR0lGVEJyT0tyY3hPSTI5NTA2THQ4bkNiYk9rVWk1bTVsUTYxaURHTlRVMXpldFVlCitQdTBRUVczcUNvLzZ4S1dPdFhkUlBWME5zM3JYd0VWMHM3NXM2KzdPbXAxa2hyU3hqNDNzTjlQWjFjZmtUenpZQU8xb1MzdmExSzYyCit0YStON1d4cmU5dlFqb2V2amFYb1pJdDczTWVXTkd4Si9lTmdWeGpYT0ZRMXI5K3RWMDhqRWRqcVB1Nnd4VnZyZWh1WDNmN1ROYnovCitiZGh2NzRyKzN2cSs3YjFQbWUrQzI1YmZMcllJakFFT2IzbHpFdFlLTi9pa3Naandpck9XNFJuT01zVC9MZkZ4VWx6anJUMjRMYmRHCitYZ2VyZk9Vc2IrOThtZjFReXFBakRUU3Z1YzF2anZPYzYzem5QTys1ejM5T2MzUUkvRlFKYnJuUmo3NXlDSitiMXVrbStXMDVYbFNQCitmL3pkSWQvdXlKMyszWXVmTWVOWXQvRFFPZVh1cVhPNjZqZVdpbXE3emxxVGo1WHJhSGNzMUxIc2NMRlQvZXVXSW5qYkg2dDJ5ckw5Cis3bko5T3l2OUxmZFZrNTNKWnVkNzFwZE83SzF4Z0FDTWI3empIdy81eUV0KzhwU3Z2T1V2ei9oYTBQMVJ6WGtIT2o0UCt0Q0xmdlNrCitMNzNwVDQvNjFLdis4Ky9ZUEtKNjlRZk15MzcydEsvOTVUbWc5VHZ1M2ZEK3VJVTVSd0VmK0UwUG5uNVg1ejJKY3ovTTNSdWZyWDdYCitKZkNEcitYaG83Ynd5OGM3OHFHcC9PcW50Zm5ObGpyMHR5ejlWMU5mKzR6TnU0UXRvZ0I4cUgvOTdHKy8rOThQLy9qTGYvNzByNy82CitDK0g2UURYSEcyRG92Ly8vRDRBQktJQURTSUFGYUlBSGlJRDk1dzM1aHljaXd3cjJCNEVSS0lFVFdIOEtjSDBZdFRXT2tBVWJ5SUVkCis2SUVmQ0lJaEtJSWpTSUlsYUlJYjZBTU1HQ2ZOSVE1bjRJSXZDSU14S0lNelNJTTFhSU0zaUlNNTZJTGlvSUpxSWpMZGNJSkJLSVJECitTSVFtNkFnWFdGTFpSMzVENW5zcDVYM2ZoMlRoTjBYRnQ0UnJaWDZVMW5SVkNGZmNGM054QjRYZzE0TmhZbmRhbUZaWGlIRlpTSVp0Cit4WVgrdi9lRVh5aGpVaWhHVkppR1ptV0dXMmNSdzlBR2VhaUhlOGlIZmVpSGZ3aUlnU2lJZzBpSWVVZ0hZWmdselFFUFpjQ0lqZWlJCitqd2lKa1NpSmswaUpsV2lKbDhpSThJQ0lVZElyRDFDSW53aUtvU2lLaERnTVNDaFRTcmlFYStpRVh1aUdSd2FIY1RSK2MyaUZwbmcyCitLQ2FMYXFXSzN2TjhyY2hocnhoTGNqaUhkYWg3YUhpTGFKV0xHN1NMdkpoa200Z2tZeWlMd3BoOHhGaU1UQ2hkN1phTXlzaGx6T2dqCit6aGlNdEFnMjZQRUJrQ0NPNDBpTzVXaU81NGlPNmFpTzY4aU83U2lPR0tDTlBkSWNSbEFNOVdpUDk0aVArYWlQKzhpUC9laVAvd2lRCis5V2dFOFJnanI2RUc3b2lRQ2FtUUMrbU9IK0NOV1lNZTFuaGxmemVUa2M1WGtWT1lVT0dGY0psbVkxSEhrUmNaaHhscFlvbjNrU1daCithaDFKZkNJWlplbGpEQ25na2k4Smt6RXBrek5Ka3pWcGt6ZUpremxwazZ1QWtuKzNDam9KbEVFcGxFTkpsQzdKa3lBWlIwV3BsRXZKCitsRUZwRENNcFhnQWdsVk5KbFZWcGxWZUpsVm1wbFZ2SmxWM1psVWlaVWw0cGxtTkpsbVZwbGxVSmxyOTBsbXZKbG0xcGxpc0psM0VwCitsM081TndFQkFEcz0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9maWVsZHNlcV90Yi5naWYuYjY0IGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL2ZpZWxkc2VxX3RiLmdpZi5iNjQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I0YzE3NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9maWVsZHNlcV90Yi5naWYuYjY0CkBAIC0wLDAgKzEsNDQ1IEBACitSMGxHT0RsaGRRS2FBdWNBQUFBQUFFbEpESyt2cjFZTURCVVZaQzhrRFFBQVZrWVFFQmNIT3dZR1NDRUpIU0FnYUtPam95czhERE16CitDZ0FZR3ArZm4xOWZGSm1abVFvS08xMHdNQTBWSUFBQWNEc0lDQ3NNREFjTVQxTU1EMlptQUFjU08yOUlTRlVIQnlJQUdvaUlBQTRICitUMHBLREphRmhYZDNkMEVnQUJvYVZHWXlBQzRBS1hkM09EczdCd0FBTjFNQUtRQUFZbFpHQjJKbERCd2NXV0J0WUNBM0FCQVFUUUFBCitaUTBWUUQ0QUFGVlZWVWhqU0NRTUpRQUFmQk1ITWtRZ0lFdExTekF5REQ1VlBtWm1ERVpSQjJGaEVXWmlERm8yRVRrZEN3QUFWRVV0CitHdTd1N2pzN096YzNOM2QzV0FDUEFEVTFOVE16TXlCUklEZ0FBRUpDRUhFQUFFd05EWmVYQUFCcEFFUUZCU01qSXhnTlFEb29DQkE5CitFRWhJYndCVkFBdy9EQXdNUGdCTkFFTkRDZ2M5Qjh6TXpBQkRBRDRNREF3T0tqd0tDa1FXS1VzY0hBQUFjVXRMRlJNVEV3b2hDb3FLCitBQTBOVEJFUkVRZ2ZDQlVxSWdBcEFESUFBQTRVTHpnK0RFRWZIM3dBQUFjSFNhcXFxbGtjSERnTURLU2twRlFBQUJVVlJqRXdDR1ptCitCMDBRRURBd1hTVU1KR1VBQUphV2xoUVVVbng4alZRYUdnY0dMZ2dTR3k4R0JtdzRPR05BTDRxS2lvaUlpR0lBQUVzSEIzSllXSGQzCitBQUFBUGxjdExZUXlBR2dnSUJnQUdrSVZGUXdjSlJnWVNBOE1VOUVBQUFjSFZRQUFMUm9hWWJ1N0FFWTFIMlptWmx4ZEVIQUFBRDgyCitEbGhxV0V4R0hnd09Vek16REFBQW1nQTVLVEVIQjJabVBscGFCLy8vLy8vL0FDSVNSRXhVRFRKUEpVUXJEQXdNVmhJU1NFaElTSGQzCitJQzR4Q2poY09BNE9SRVJFUkJrVlhFbEpBRzVnWUZoWWNudDFaa2dHQmxZQUFBVUZNVGc0T0RvM0JUSnJBRkVTRW1abU1GNWpCd29HCitRMXBhRFVrS0NoeEdITjNkM1J3WVJHWm1IQ2dvS0ZNQUFDWW1KaTRZTGhRK0ZDSWlJaFUwRlQwQUtSNGVIbVZlQncwNERSQXNFQXd1CitEQWMyQndvcUNnQUFQRmRNRFFBQTBXQXFLZ3dpREVnWkdSa1FSQWNrQnhzVFBERXdEQkFRRUR3QUFFSkdEQUFBVTBGQlFFSkNETHU3Cit1MklZR0pvQUFCZ1lSamc0YkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUFBTEFBTEFBQUFBQjFBcG9DCitBQWorQUdFSkhFaXdvTUdEQ0JNcVhNaXdvY09IRUNOS25FaXhvc1dMR0ROcTNNaXhvOGVQSUVPS0hFbXlwTW1US0ZPcVhNbXlwY3VYCitNR09lbEFlZ3BrMEFKRnJTckxoVHBZUTNBSG9lREZwUXFNQ2ZRUUhJWEVoMG9sR0JZa1p0cEdrVFc1NkIwRVlCZlRNS0NVRUpFcWphCis3RHBRRElBYkJKc09KSEYxcWR1M2NPT3FWS3RUS2NXbkVPbm1sUUFMV2s2RWVwOEM0T3UzWVdDN0pVbEFnOVZVTDBLOHZjUk1SVXdDCitnRmRvWEJkRDYrV0U0QTBrUXFFNWtTcXdzdVdCZXBGZzh5cTN0ZXZYc1BQS2c0bjNZVzJIam5IUFpycDdvT0RlaG9IRHVpMnlzZkRICitpS0ZpNDJpVTZBMjBBNUc4NFNzUXJkRThpS2RQUjMxODFLUFk0TVArTnlTQkM0TDRsSFJKQUkwTVN3d0owKytCNW5TdkhxZEFKUFZ2CitMSGIvVTU0WUp6WDk5UlIrUU9uWDNudEtpZEVMQU5pTVlsY2UyREI0Rlg5dkhNZFlUZklRZU5aKzhkbEhrRmc5UVNpaFFFUXB5S0NECitIOXEwRTRYK0FmaEdUaXI2WmhNc2tXR1RVMzNZOEVXZmZGQzVPQitDT05YM1YxQml4VmdmZTdEZ1dGbEI3NjIxbm1STUFqQmRMd2sxCitCdzBTQUVCWjFtS3c1UEhkZFE5YU5ncDBqQjBuUVdmbnBhbm1EVFZOVTU2YUk2bEZnaE9Ma2JBY1RWSmg5eGwyOHVDSkJEUTJKa2tuCitFcU4wSnM4YnZXVFl5M2RtemZiVW5GY1dPaHhYc3pueG1XaEtIZW9vQU5BY21paHJCaEVGS2FHR0F0QVZvSDl4TjF5bUZhNjZHRkgrCitsdjRKWUVGRTdlUnBoaS8yMWVwaEpEcVJSNmZZMU1scW5sbkNraXRtZlpyYTVWbEk4Rm5tczg5Q211Unk2amtLVkVHTGxrYm50RXdHCitDd3VLeUsyVkUzSGZMaGFhcFFLTnVTeHJqcGtGNTBTZzlTbnZ2UFRXYSsrOStPYXI3Nzc4OWxzdlBEY0JzRTBUcWI2N2tWcFdEVlNoCitVTWJSeEtVRXkyM1hWNVlPRndSTnJja1pTOTNGWWxSczFzTktqWkxxRFNSVW5CQlJFbk5zTXNTMGJ2cnR5REQ2eCtsUkdXUHNxa0NaCitwU1ZjVDRNWnRDUk43TTZXczBBTTcwYlUwVWJQbGpETzh1UTRrQVExNzdhMHNjQTVUV0tWQVE4bVZKRUNVYm5xVFovaDNOWWIzMEhiCitzc0VRRlpuMTJteTM3ZmJiY01jdDk5eHhvNjJSV2xrbnEycittVnNyaGJmZVJ6bUJEWnN1Njh4ZFQzM1RHSERKR1ljNjI5K0pHNzdUCitnamZGSExtcXRpS1dGVFp2M0NBWnI5Q0tjUU9pQzY2cTZ1YWRkNHlZY2MreW5yZGF2NUVZTUhBSVl4MmRWbGp1bkduWnRXRjNFNXE1Cis1V2IzUWZINmEvenh5Q2V2L0x3QUIzeEZFb1VNbnhIQ3V1OU41TXl3L0tTeFFDcmJaUmFVTmhPVU1zVjJYUXp5eTBVMWZ2YjRxai84Cit4dGs3aWV5NCtUVERuMm5qQkpwTnRGMU41V3A2MFFRaEVBQmI5N2lrd1FJYndyRmE5cUltRUFRbVJHS01zWjJNYUVTbWRDbUZCRkNxCit6U2hJczZ4WFdVaDQwZ3RoU3RnRUFIWllTa3NpdElpY3R2V0lONEJtZFVuekU2b0VGYWxTUWFWWWp3REFWUjQxS0VrSnBSZitsNXFWCitwaVlGdU9FVWpFU3pHWlVQVGZXblFFbU9WZFlxSUFWbHhjRE1LZXd2ZHRLZjZhQkZ0cjRzNklXcThwK2RCb2cweHJSRlZDeDBZYldHCitFeUZzbFUxYUxmUkt5YWExR0hETk1VVzNRd3RtRE9TWGEzbHRpd0Y4UTF0dzlwMTJxUytGaUN4Sm9UeVh5T2tCcHo1T2tBd1prMVVmCitzbWdvYkVJNVVtVWVNYUQ4ZUVVb1NGalFsSTRTSWFkbHNuRUFFc01sUDRrVG9KRGxpYVJrRUhXSUVrb3BTZUNQU1B3Zll2SUFvTE5JCitKcFVFd2N6N21nSXhCcW1uUWpEc1VpODlOOGxuaVJJV3dJUWtsS1NKeXlSeFVKb2t5Z21oYk1tL0k2b3RiSDNSaWpGcDVKNEpGa1I3CitCSkZVM3JKWHdVYTZVeVNnZW1kZHhIUEVoWkJMbmlqK0FWUkRWRW0wOTdYbUJ0VEJwMEFIT3J4N3VrVWVaWE9JUVFrNmtsRllxQ0JqCitRZ0lTYnNCQnVPaVRvUmpOYUhnV0NpZU9hclFqaFZuSVJHc0N6cmlFNWFNb1RhbEtWOHJTbHJyMHBUQ05xVXhuU3RPYTJ2U21PTTJwCitUbmZLMDU3NjlLZEFEYXBRaDByVW9ocjFxRWhOcWxLWGlwQVJTT0twVUkycVZLZEsxYXBhOWFwWXphcFdvY29sZ3h3aUdHQU5xMWpICitTdGF5bXZXc2FFMnJXdGNhMW9URTRCUndqYXRjNTByWHV0cjFybmpOcTE3M0N0Y1lKRVFZU3dpc1lBZEwyTUlhOXJDSVRheGlGOHZZCit3QW9qSVZ1TnJHUW5TOW10QWdNaDBHQ3JaamZMMmM2eTlSQU9ZVVFuUmt2YTBwcjJ0S2hOcldwWHk5cld1bmEwOUhqKzZBTElRZHZhCisydmEydU0ydGJuZkwyOTc2OXJlMGJVRkNuc0NFNGhyM3VNaE5ybktYeTl6bU92ZTUwQzN1RXhLU2kxaFk5N3JZemE1MnQ4dmQ3bnIzCit1K0FOcjNWemtSQkl2UGE4NkUydmVsMTdpY2VzQXJqd2phOTg1L3ZiQllSMnZmak5yMzVaRzF1RXpKYStBQTZ3Z0hrclhJUVFON29JCitUckNDRi96YzZTS2t1dUtOc0lRblRHSHdraGNoNXQydmhqZU0zL1llUkI3dkhiQ0lSd3hnK3paRXRCeE9zWXI1SzFzU3UvakZ2aTN3CitRUTdNNEJyYitNYk1kZkJCSUZ6aEh2djR4OTI5OEVFeXZPSWlHN2tUSGpZSWlHSE01Q2JYMXNRTVFmR1JwOHpoL2g3a3YwN09Nb2xsCitiQkFhNC9qTFlGNndqZzNDWXlDYitjd1VGckwrUVloTTVUYm5OOGxGQ2JHVzV5eGdLQy9FRGxQSXM1NzN6T2MrKy9uUGdBNjBvQWROCithRDN6QVNGK2NJT2lGODNvUmp2NjBaQ090S1FuVGVsS0s5b0xDZkZHTnpiTjZVNTcrdE9nRHJXb1IwM3FVcHQ2MDk1SVNCU2F3ZXBXCit1L3JWc0k2MXJHZE42MXJiK3Rhc2prSkN6RkRvWHZ2NjE4QW05QjRRd2dkTEcvdll5RTYycGYxd1h6YzdlNzFXTmdpVzZVeHQrWEs1CitJRjRPczdhM3Zkd3hGNlRNYUE2M3VMbXI1b0t3K2Rub2JpMmNQeVRuYXJ1N3ZzMU90N3hYRysyQ1RQdmQrTmJ0dFFtU2JXNzdtOXZlCitKZ2k0eDAzd2NaZWJJT2VldDhKSnUyN2Z0RHZmRUxldG5SVWk1WVZidkJQMUpzaTlJeDd4ZlErazMvOE8rWmYrQXo2UWdSZjg1R1krCisrRUFTZm5GNU41eG9EK2M0eENlZWtJcTNmTjRaSDhqR1pZNXZqd3NFNUNJUE9vTkpMaENUby96b0ZWYTVRRmgrODJlL2ZEZ3g1L203CithWTRRSGd6ZzZsalB1dGEzenZXdWUvM3JZQSs3MksvdURBWWdwQjVlU0x2YTE4NzJ0cnY5N1hDUHU5em5UdmUwSnlJaDV1aUMzdmZPCis5Nzc3L2UrQUQ3emdCMC80d3V2ZEhBbFJCUkFXei9qR08vN3hrSSs4NUNkUCtjcGJmdkdxU0VncnhzNzV6bnYrODJMSEFFSVlNSUc2CittLzcwcUU4OTNlc1I3NmJMTytjQzJiblVxKzF6V0FCZDZMaVBMdEZoWVhTaysxNjhTb2NGMDEzZjVxY3ZlZll6YnozeG53MTdXTWdlCisrWE91L2UxelQvMGNVL2YzMkU5emVaZis3M0wzUWovZlZEK0l6Ym5mNXVZLy8vdE9sbjcxMTYvNzYyZi8vZUVOL3ZESlgyVGpSeDM5CitXUTYvUWNwQmovNzcvLzhBR0lBQ09JQUVXSUFHZUlBSTJIK2xJQUFJWVFKcDhJQVFHSUVTT0lFVVdJRVdlSUVZbUlFYStJQ1VrQkRaCis4QVVnR0lJaU9JSWtXSUltZUlJb21JSXF1SUlnbUEwSm9RWnRFSU15T0lNMFdJTTJlSU00bUlNNnVJTThHSU5xa0JCOWtJQkNPSVJFCitXSVFJbUF3SUlRRHZzSUZNMklSTytJUWFhQUlPVVFsU1VJVldlSVZZbUlWYXVJVmMySVZlK0lWZ1dJWFV3SUFIQVFxcmNJWm9tSVpxCit1SVpzMkladStJWndHSWR5ZUlaR2tCRFhVQVY0bUlkNnVJZDgySWQrK0llQUdJaUNPSWg0ZUEwSkVRSCtvWkNJaXJpSWpOaUlqdmlJCitrQmlKa2ppSmxKaUlFWkFRTmhDR21yaUpuTmlKWUpnSlNXZ0JjemlLcEZpS3BpaUhvS0I4OURkbDVvZC83cVorN0JlTDF2ZGc4RmVMCiszaVYvcStoczl1ZUsxYVovQlRGK3VWaGtyY2lMZEFhTHNuaU14N1Y3dldlTDhJZUx3VWhsdTBpTWMrYUxCQUdNejVoaXd5aU5XV2FNCit5SWlNeXNpTTRJaGR6bmlOUmhhTjJ1aGsxRGdRYUJBSjdOaU83dmlPOEJpUDhqaVA5RmlQOW5pUDdEZ01abmNRdCtBSi92aVBBQm1RCitBam1RQkZtUUJubVFDSm1RL2xnTUNSRU80UENRRUJtUkVqbVJGRm1SRm5tUkdKbVJHdm1RNFpBUVlQQUtJQm1TSWptU0pGbVNKbm1TCitLSm1TS3JtU0lBa0dDV0VGK0JqK2t6STVrelI1ajhOMkVBeVFBQXE1a3p6Wmt6NlprTGVnaXVSWVpTMTJqdWszWE4yWWxOOFlqdUU0Citqa09wWXVab2xEQ1dqZ0poalUrcFg5a29sUy9HalVrWmkwdkpsTXpvbEZlNVlWR3BsU1JHbGJCZ2xXTUpiVVZwbGk3R2xWMjVmbDhKCitsclVvbG11cFgyWHBsZ09HbG1wNWwraVZsWG81WUhBWmw5UTNsM1Q1Zm5icGwrdVZsNEZaWWc2UkNUVVptWkk1bWZaNGFBY3hBeitaCittWnE1bVFlWkFBbnhEV0VRbXFJNW1xUlptcVo1bXFpWm1xcTVtcXdabXQrUUVDSUFDTEk1bTdSWm03WjVtN2labTdxNW03elptN0lwCitBZ2x4QVpRNW5NUXBtVGRwRUh6QW1jcTVuSnM1QTBLcG1Pa0ZtSTBKWUlOSm1MaG5tSWVKZlluK0NaM294WmpUS1Y5OHlaMVkyWmJmCitTWjFJYVozc2g1M1o2WHZiS1o3czVYM2xHV0RoNlo1czZWL3hHV0RWaVo0aXA1N3JlWFR0U1orcjVaMzM2VnZ6Q2FCL1NaNERDbC81CitxWi8veHAvOWVYTC9hYUNvSmFBSnVsdG9lUTZRa0tFYXVxRWMycUVlK3FFZ0dxSWlPcUlrbXFGOXNJOEd3UXZpc0tJczJxSXUrcUl3CitHcU15T3FNMFdxTTJ1cUtma0JEcE1BWTgycU0rK3FOQUdxUkNPcVJFV3FSR2VxUThtZzRKb1FLVDBLUk8rcVJRR3FWU09xVlVXcVZXCitlcVZZMnFRcWtCQlFVS0plK3FWZ0dxWWsyZ3FqdHdJM2VxWm9tcVpxYXFPODhKd1NtbHJTV2FHOXRhQU1DbkR1OTZDL0Y2RnZXbG9VCitLcWU0VmFCN3ltTDI2YWYrd0VXbmRhcHREb3FuQnJkOWdhcHU4RW1vQk9xbWpVcGFjUXFwdUdXb2h3cG1pYXFvNGFhbmpkcW5sa29PCitGeXFtcEZxcXBpcWlKNG9RS3JxbXJOcXFyanFqT1lvUWNDQUh0RnFydG5xcnVKcXJ1cnFydk5xcnZ2cXJ0QW9IQ2ZFSHYxQ3N4bnFzCit5SnFzeXJxc3pOcXN6dnFzMEZxc2Y4Q2xwMXF0MWxxcVpJcVRadnFxM05xdHJOcW1KemFwZ25wbG9UcW41NW1wUWJlcG5IcG1uaHFvCitvR3FwZ0NxdXAxV3A1UnBjNTRxdUlhZXU2d3BrN2Jxbjd3cXA4U3F2cFVXdjlZcXArR3BqK3JxdlB0YXZiL3F2aEJxd0FndGJDRnF2Cit0bVd3Qnp0MGQ2cXdCTWV3RXVxd2ZvcVdIWEFKSWp1eUpGdXlKbnV5S0p1eUtydXlMTnYrc2lPTFFnUmhEd3N3c3pSYnN6WjdzemliCitzenE3c3p6YnN6NDdzekNRRUxUd0JFUmJ0RVo3dEVpYnRFcTd0RXpidEU3N3RFUkxDd21oRExsUXRWWjd0VmlidFZxN3RWemJ0Vjc3Cit0V0JidGNxUUVIcmdzbVo3dG1pYnRpMUxBUWdoQmovN3RuQWJ0M0w3cy9iQVZIWjd0M2lidDNxN3QzemJ0Mzc3dDRBYnVJSTd1SVJiCit1SVo3dUlpYnVJcTd1SXpidUk3N3VKQWJ1Wkk3dVpSYnVaYjdVaENVUGY1MEh3SnlTSVlSTUZUQ002QUxTREpTRllQa00yc3pHNFN5CitGYTkwSVRaUlVwY2J1N0tMRVNSUVFSUkZFRXRDdWxCQlFyQjdOdW1UUzc4YnZKcDd1aCtXSEh1a0dhUERKVTBoR3UwMHU4Nzd2UHQwCitHckNBSllPVUI5ZitvcnNIMUJWSTRBVFZaRGpCNnhoNFlSUlpwQkJHQVVRRjhSekF1eXpRdTc3c3F4QldZNzFZa1NOMkFSbXNRUnpnCit5ei9IRWI3R2l6M2hjaC9GUWhCbTRSVnFnUjN0VzhBR25DVFFJVDlkdzBuejY3bmNBaGo1aTc5SzFqaXhJMEhZUzBEY2d5NEh2TUhQCitHOERHTWszVzBjQUlJVUFuRXpEN0l6dVZnNzBWM0w4WGZEUTMwUXZ4eE1FeWJMbE9JQUVRMGsrc2RNSUcwVUs5MEZWREVjSHBhMDU0CitoQlg4Vzd6UjhiOWxjUm9nTk1OTUxMbVBRRkZZbERkNE1VWU1jYjlCck1ORFhCckxRYjdKWWI2ZUFSMUwzTVJpM0xnWGd3MHd1MFVECitnc1FLWWNWYXBNS0k4UlBFTzhIQjFEbkkrd2JLKzFCam5NZU1LemhHL0RVMmtTaitXWE15UU95Nk4rSEhOUkc2TnpFMUZud2Y0alEwCitiYXpIa0J6SmtqekpsRnpKbG56Sk5FVUN2YkRKbkl3a0luRkxuYnpKQVlYSnBGektwbnpLcUp6S3FyektyTnpLcnZ6S3NCekxzanpMCit0RnpMdG56TEdoSEt1cnpMdk56THZ2ekx3QnpNd3V6TG84eFNDakxNeUp6TXlyek15M3pHS25YTXpCek4wanpOeVh4VERFTE4ySnpOCisydXdoTGtVVDNLdk40QnpPeUF3Z2VQeFIzaXpPNkp6T3ZOeEdOc1hOTHVYT0xFVVQ1YXhSOGd4VDlmeFN1VnRUOE14Uys2eFM5OXpOCitZWnhSLzl4UytVeFQvYXhTQjQxU0F4M1BBWTFSQzcxU0JUMVQzQ3dNakZEUkZuM1JHSjNSR3IzUkhOM1JIdjNSSUczUlhaWFE1cXdXCitPTEFMS0ozKzBpcTkwaXpkMGk3OTBqQWQwekk5MHlpTkF6SXl6d0t0RmlHOTB6emQwejRkMGgyd0ZnN2NVdHpjbDVNYWJTUk56Mm94CitmUmQ3WXpyMjBQNnNGdk1ucmtrVzBUSlYxQkdMV2toZFQxSGRHMHpkMURYMjFBM05VUDg4MVpOYTFVUE56NmxpMUkyNjFmYTgxR0R0CitiMktOMHc0dDFWbDlXbWh0eld0OTE2YmwxaS8xejE4ZDF3bzIxMi9kRzJiOXFVS3QxK3BZbkl6ZDJQYW9qNmpCMVNuMXoyelFtcFo5CisyWmlkMmF6SkJqZGQyQU1CazQ0ZDJxTE5qc2RwMVRHRjFYeE5xYjJSMURudDFZSzliWVQ5MTNhZDJxT1YxKzI4MTdTTmNhc3QyUW9OCisxNjhkWnJFTjBJYWQyMGlXMkxjOUVHd2RxSDR0M0IvMzI4RGQyYkk5M0xuK2JkdjZuQ3BVNkluWW5kM2EzWVZqR05tZUxSQWZ5SUxpCitQZDdrWGQ0cTZJTDdROWRrclJhWnVOM3UvZDdZRFlxbGtkWXJ4YzM4WjRUNG5kLzZYWUFMNk4zUlBSQmFRSWdDUHVBRVh1Q0RxQVhRCit6ZHdDRVlUNzNlQU9qdDlJT04rS1haWEV2ZHd0QmRqT3Jha0pmdUd6VGR2VWJkQzRUZHNXenRDdW5lRTRGdHdjTHQwZWJ0elZqZHdWCit2dHZmYlhzbWZ1SWJUdUlyUjl3Zkx0R3BncUhYMnVNK2pxb295dHAxM1J1ekNxeEdmdVJJbnVTK0txenBIZU5kK3VOUUh1VVptcTFKCitRdDhJSGVLcFBlSXJoZUV6anJBMXZ1VWRudG81ZnRWWXp0ZGEzdFhOM2VWaC9lVm92blE0enVJZzd1SzVmZWFUN2R0cUxtWnNYdWNxCitMdWIrY0s3amNpN2lNUDdmUDNmbkdOdmtnaTU4Ynk3aHh5MFFlQlpzanY3b2tDNW9sc2tZdkYzU3ZhRnBwNWJwbXI3cG5GNXFxV2JvCitDZzRMdkJicHBGN3FqbDdhVnA1U3FBM28vaDNxZ1Uzb3lJWGlOdTdtMDkzblpQN25XUjdvcmc3cmc1M252YjNuZkQzbXAxM21kMDNuCit2NTdtdk41K29KN2lOMTdyaXQ3aUZEN251czdzZzU3c3lyNHE2azFRWlozb1ZUN2hzTUFEWkJEdTRqN3U1Rjd1NW43dTZKN3U2cjd1Cis3Qjd1WmhEa2xhN1V2WkYzaGxmdjluN3YrRTU0aUxmc3N3NExpOUR1QUIvd0FqL3c3QzU2eng3bjBjN3EyUlRqcjI3dHNnN213SDdYCit3ZzVUcTU3cnJVN3RNbTd0MFBYd2JZN296dDd0aTU2V0wzN3gvZDcrOE1uTzhYcmU3Q3QrOEg0dUVOY04zekFmODl4TmhwUWU0K0Z0CiszamlmOHpwL2d1aU43VEhlM2pJZjlFSXZCZklOOHRBT0MvZjk0RXEvOVB4TjgwSyszcjF4aHdZKzlWUmY5WUJvaVB3TzhRUEI0RXpmCis5VjVQRHhGdTlBZ3Y4dEpPOGxwZjdScnZYQ2gvN0xTKzhtTGY4bVN2OERWLzZDYlA2MnR2NlNyUDV5eC82d2x2OFF0UDkybmZZTDZPCis5MjJ2OTIvUDk5OE9lb3EvK0l3UGRtVm45aDF2RHQ4dytaUmYrWlovK1ppZitacS8rWnpmK1o0LytmdnU4NGUrZVkxZitxYXYrQVovCisrTU9PNjJZKzdTVWYrR28vK1BLZTk4RnU2NnZmOTYwUCtTbVA5ckN2WEhjLys0VmYrM3QvKzNIdjkzTy82NzNmYmJMZjJyUXY4YmIrCitUL0hFbnRYR1R2Z1puL3pKOWZ2TUgvek9QL3pRUHhDUzhOUGdILzdpLzlGYTh2VGFyaFkvUU5QcXYvN3MzLzR6L1FQTFArUURRUUhqCitYLy8yTC83UC8xTG1UMUQ3TDFCUXZmc0FBVXZnUUlJRkRSNUVtRkRoUW9ZTkVjb0RJTS9oUklvVkxWNFVTQUlBUm80ZFBYWUVRT0xqCitTSklsUTVaRW1iSWlSSWtxWGI0OHlCTG16Smt5YWQ1TXFSSG5UcGduZWY0RUtSTG8wSlVSaVI1MWFCUHAwb2RHbVQ0dHFCUHFWSVFBCitlcEhBbWxYclZxNWR2WDRGRzFiczJMQStxVDZGT0lyc1dyWnQzYjdGT3NycFdhWnA0ZDdGbTNkdHI0MTAvUUlBSEZqd1lNS0ZEUjlHCituRmp4WXNaQy9TS0Z5Rmp5Wk1xVkxROXUrZmhvNU11ZFBYLytwcXhaOUdqU3BVMmZScDFhOVdyV3JWMi9oaDFiOW16YXRXM2Z4cDFiCis5MjdldlgzL0JoNWMrSERpeFkwZlI1NWMrWExtelowL2h4NWQrblRxMWExZng1NWQrM2J1Rk45SUlDamhEVUVrUWlGeUpOd0wxbmxZCis2ZGYzSmNnWkFMWThDZ2M3eVF4dDFKdjVKSkM4Sit5R3dvU1N3QW5BbkFCUG9Qa0traXV6N2g2RU1FS0tTTGlCb0J0R0lVZ3E5Z2dTCitRMEFBYnZpdktnY0ZZbSt1Z1RZOEVUN3g2aE5SSUNUMit3K2FOMGFCQmhZeG5IQ2lJQk1WZEhBVUoxak13d2tNMndOQURJTDRHMUZDCitKWmRVVWd3QVFrUUNBQlpoeVlNL0V1RWJDSnRSa0VEQ0NmVmFMS2pFSkZHOE1rTnNFcG9yU29sNnFYQWdKTEJ4ckwwazU1TCtBSnNRCitYZnl1UFNjY0MzSkhKdjhFVkR0c0VxeHlJR2dHN1l0TVdIb0pVZEdCL0JUVElFVlJoQWFBR2c5Szh3MHVpeXpva1J3Zm5UTXpKeDR4CitpSVFjQVhqa1RJRkdlY1RQUUYrRkZUb0tWM1dzbDBmWWMzUWdFbFRGZE15K0lNV3lUSUpjbGRQRlVlcWJGRXMvNXdKV1RteU1oT1dOCitTcE9NdFZwcmozUHl2emVnblJYWFlOMGs0UTFxRlJ4TVdNSkVTbGJIY2QxTEYxU0RtUFZWVHF5b1BIWGNhKy9GdHpjRTgxQlZIazNmCitFN2JUTjNxNUZNejRmbzAzVEN3ckxWamRnVm9WSTBwb0gvNlV4M2RGSmJYVGVzVTRrOVZpOHdVNTVOMGV1VkFvalRCVGRGZDczVlhZCis0cFpmem9qWGk0ZGRzMDBYNGFSNVpvSEV1eE1XSlBMK05PcFphVDhXdVdpalk2djBXVWtURFZiaWhwb2xPc1dsQjFvUnpjd2VHUThXCitHV20wRVVlSHYxNzFSNEdDSE5Jb1V6OGw5bWkxMXg3TkNabWxCakN3WHVRRHpPcXBpU3lYYnZYa284OCt3WnlZV0QvKzRPdzVhcGVwCitOaENBVWQxMU11TzAyWVk4Y3NrbnA3eHl5eS9IUFBOWVNlaWxjODk3bVJnbUNUNzNQRUhOVDBjOWRkVlhaNzExMTErSFBYYlpaNmU5CitkdHR2eHoxMzNYZUhYQjdmZndjK2VPR0hKNzU0NDQ5SFBubmxDMDhPQ2VXZmh6NTY2YWNYbm5ua29LRStlKzIzbjc0NjBMNEhQL3pBCitWaWFPYnZIUFIzOHg4b2M3T1gzMzN5L00rMUc0cDcvKytsdGRYemlJYnJXL2YvK2h4NTl6TlBJL0FoYXdlSEx4WHB6K2xLT1U1VEJ3CitnWThqamxTYUkwSHBtS1dCRUJ5T0E1T2pRZVJRY0RrZWhJNEZINWkvNEhEd09DWTBEZ2lUbzBMbm1FVVFDNEJoREdVNFF4clcwSVkzCit4R0VPZGJoREdOWWdSU1FFamxKUWtRc2lGdEdJUjBSaUVwVzRSQ1kyMFlsUEpDSXFmaWhBK01nREJqekVZaGExdU1VZENrSlgzM3FPCitXUlpBRGpLVzBZeG5SR01hMWJoR05yYlJqVzhrWXd1bTJCeWw1Q0lXZDhSakh2VzRSejcyMFk5L0JHUWdCWG5IWE15Uk9SS1V4eXJnCit1RWhHTnRLUmIxekFGeE00a0RFKzBwS1h4Q1FiNVhnbElQNm1qb01FWlNoRk9VcEJGcEtUVkR5UklqTzVTbFphTXBJWkFXTUxIVlBKCitWdGJTbHBvMDVBVXpZMGRTOXRLWHYveWpLZC8rMDBuZklGS1Z0MFJtTXNueFNsaXdzRGxtTVVFYXBEbE5hbGJUbXRmRVpqYTF1VTF1CitkbE9hbE1qbENBZWloamFVMDV6blJHYzYxYmxPZHJiVG5lK0Vaem5WRU00VndrY0E3L0JtUHZXNVQzNTIwd1NTcEk1WlFMRUtnaGJVCitvQWRGYUVJVnVsQ0dOdFNoRHlXb0VlaUpIS1ZFSUJRWHhXaEdOYnBSam5iVW94OEZhVWhGZXRFSVRQUTRFaFNBQlNDNlVwYTIxS1VQCitCUVZBcHlOR1pkYlVscHNjcG5NK0NVeWU5clNYd2tSaGNZeHBVNkt1a3BuT1pBNU5pN3JVUitJMHFPV2JDeTk5T2xXcUJ0T2tLYXppCitNWm02VlVqS3RJS3o1R3BZM2VoVURPb3ZxbFZGYTFyeENOU3lCbWVvWW9WckdvOGF5MmM2NWhhZXdHdGU5YnIrVjc3MjFhOS9CV3hnCitCVHRZdkJianFzVlJDaGhlc1ZqR050YXhqNFZzWkNVN1djcFcxcktMQmNOaEl3Z2ZCaVNBc0o4RmJXaEZPOWhiZURVNlNvMXJhdU9vCisyUXllVmEydm5TcGJpZG1idDZvMnRYT2RwRUJvYVZ1NGtuVzJ2TmtwYklYN1M5bWlra1JhNVcxWWNSdFFzQ2EzdDZ3MTZ5NkhPOTJmCitRdGV0V1hVdVhKYzcwK1ptbDZ1KzFhbHJxVHZlUVJaM2d0ajFMbGUzKzlXQnpHQzA3NFZ2ZkFPYkFPc0djUzRpQUVSKzlidGYvdmJYCit2LzhGY0lBRlBHQUM1MWNFOWYyTkJQa2dYd1kzT0w0ek1HMEl1NXZlcFlLWGp1SWxiNGI5YU41RG9wZkNTMTN2YVNmOFladGFtRG5CCisxWENLOWNqaEQzcVl4RFlOc1lRcCtlTCtvcHBZbHdPUnFvcDFIQXNXSzZlMk5GWm1qTU00WWlEZjBzYmlGRWlPZDV6aUh0Y3psVVd1CitxWkJsT1JCZWlNUEtWOFp5bHJXOFpTNTMyY3RmQm5PWXJmd0pCUHRHS1NxWVJKclZ2R1kydDluTmI0WnpuT1U4WnpxbldRVmxwaTFuCitWeUJtUHZmWnozOE9NeThpUE9RWlF6bVpSOTRnaHBlczRTWjMwTVdHcnFXVTYxcG9TTjhVejhCVjlLTEoyK2lUUHJyU1JoMzBsSFg3CithVXVmOHNMUzFUU1RMNzJiSDVNNms1Sk9xbU9xREdoYTE5cldYaWF6cVU4OGx6Lzh3dGUvQm5hd2hUMXNZaGZiMk1kR2RySjkvWWRWCis2MGFDRE5qenJhVTliVm9MR3BhNWhjVnVYWTFKUkZNMDA2bWVMcWV4K3VSdGcvcmF6S1YwdVMvWjdSUCtmaHZjd2hXM1VEMnQ3a2JDCitlam1vcFhkVG01MGJGTDg3M1B2R1Rhdnp6VWg3S3dmZkEyY2t1NDNUYjMvREcrQzNFVGpDdTNwdTdyYlh3UmZIdUdEcHErc2JDeVFlCitsd1Y1eUVVK2Nzdkc0K0cyVVhER1ZiNXl2VUtZNHV3ZHRjUWJxWERFdXJ2aGFZMzNac2t0ODBVV1BEa0g1M2tiYVE1VlZOOTh1RGxuCiszN3lEcmthZkl3Zm9TMWZqMEZ0YmRLUERGdW5DaVRqVTBkajA0enhkNjJlVWVuUnhYUFdqbjd3MldmOTZHYmx1SExOc3doWnZoM3ZjCis1VDUzdXRmZDduZkhlOTcxL25iRGNoekpzRkFGRUFRL2VNSVgzdkNIUjN6aUZiOTR4amRlOEtvd08yMmVqWWU5Vjk3eWw4ZTgzamNSCis2a25IUE8xUmoveHNHRTcycWw3Ky9ibzcvL3pXT1IvcmRLZmVqR0V2b2MxSjMxUFRBd2Z0bjE5N2NieWVldGpibCtxekwzM29aWFA3Cit0T2VlT0dKOGFmS1Z2L3lHU3RUdmljNk1ORVk2ZmVwWDMvb2lsWWJ3WTROSWxUTGYrOTlQdnZHSFl4WXhHTkQ4OXRNK2JKUnlmdlp6CitMLzJ2a2FEejJqOS82VTBNcWZkV0lQVEQrOXZkUERYcHo3ay9nOHMvYitNLzNmQS9zVHN2QUtRcjFqdTEvWFBBQkRTdW1ZS2ZDWnpBCitBdVEzQ3NSQTk3SEFnTXZBRGhTZjZ0Q0xFQlRCRWN5S2hsRU9hQ0RCRkZSQnR6REJEVnJCRjRUQnIrQ2RHYVRCR3JUQkc4VEJITlRCCitIZVRCSHZUQkh3VENJQlRDSVNUQ0lqVENJMFRDSkZUQ0plU09QS0dhckhFUjgxakFoV0NYWHhuK2pMMzVGcjZaa29Sd0VwdUpHdk1KCitDZk5CbC90Z0VhczRHQXZoRkhLNVFyeVJHeVowUTlPWWxZRzRrQXhoR29Qb0VNQUFFYnQ1R2FnNXc1MTVneTA4aUpPNUUyS1pDMGRCCitrWEQ1RDhESUdJQnhFY0RJUHhOcHF6ZVV4S2ZJbGthY2tpcXB3NExRRWk3eEVqM3NRejZFbTVoWmlPOXdRc05oR1VhRUdZdXhpbjlCCit4VlJKRlowNW5FbVVSYzBZbExHQndrT1JnRXdrQ0VZSkdGaUVHMURzUllaSmlEeDRrbEd3R1VMTURFTU1Ga3VSRXlkb2t3M1prMG9KCituYWlKeEZtMHhwK0lRN1VZQ0Z2eEZvWFlGVS84eFlUcHcxTTBDR09ra2llSnhaenB4VkJzSnNlUkJ5ZEJscjZRUmxqWUU3QXh4V3ZFCitSNlNveEczSmlBcnB4b1ArS0E5eFFaTnlZY1J6UVVWMnZFZUIrRU9GZEVlRE1SK0pvQnNuTkJ0TllROVBFUWlzc1VlRHpNZU5ISXA5Cis2WmQvK1VlQklSajdTQmhnUEVoaFBBaGkvSnQwUEVWbEpJaFJVQlduRUJMMlNKekEyRUpJM0VDTzFFbU9JQmx0YkNiQzhKMXZVUm1HCitnQnFUUE1TM2Vja2hPY2NhUVVhRTdNVklzWkdRMkFpVXBFZWxwTWFjM01tc3BJaWttVVpHSkJPbkljcVNGTWRRckJxQVhNaUJlQU5TCithY3AxZkVxRSthS05NQldDd0VoeXJFYXR0RXVPY0p1WVlCckJtQnZDQUVkejhVdTlpWnY1QU1Ud2dNS3dZY082YWNrcUpJaEtxUThUCitNUkJZd0laRjFCb3BvVXUvdk12TTFNek41TXpPOUV3ZTVCelNBWjJiR0IzUk5KM1BSTTMrMUZUTjFXVE4xblROMTRUTjJKVE4yYVROCisyandkMGNUTjNOVE4zZVROM3ZUTjMvek5OWmdHNENUTzRqVE80eVJPSlZnREpVRE81blRPNXdSTzVXUk82S1RPNnFSTzZiVE83TlRPCis0cHlHTmRqTzd3UlAzaHdXYkFqUDhqUlBBR0FIODFUUDdhd0dBS2lHOVlUUDZtelA5NHpQK216TytiVFAvRFJPZHJBSy9mVFAzOFFHCitaUmxBcHpNRzUzQUVBSEFFQTBWUUJVM1E1akNHS2RTNVJ4blFyaXZRNWpqUUJtV09DMlZRNTNoUUJSeVdDV1c3Q3MzUUJiVlFFaDFSCitERjJPRG8zQTluQ01FWkNFRjRYUkdKWFJHYVhSR3JYUkc4WFJITlZSR0MwWUFCRFJRd2lHSUJYU0lTWFNJalhTSTBYU0pGWFNKV1ZTCitJUjBJRFJXSUdEaitoU21sMGlxMTBpdkYwaXpWMGkzbDBpNzEwaW1OZ1NjMVVXRllnakkxMHpORjB6UlYwelZsMHpaMTB6ZUYweklWCitCakhGMEIyMTB6dkYwenpkVVdBWUNCWFZtaVlGMUVBVjFFRnQwa1B3S3JOZ2hFNVExRVZsMUVaMTFFZUYxRWlWMUVtbDFFcFZWSHJJCitEQjl0UGRkYkxZR0FVbGg0QWlZUTFWRWwxVkkxMVZORjFWUlYxVlZsMVZZVjFTZWcwN0VEUHB5TFZZR0FCRXZGMVZ6VjFWMnQxRXZvCitVNlZMdmZWQ1ZGNGwxbUkxMWtuRjFFY1JVVzNqVkhMQXFVOE5WVmVWMW1tbDFtcGxWVmoxVkJOVnNsbjFLV0g2MUZzOTFuQVZWMkwxCitWWUh3MDBScTFqTVNWc2RJMUhGMTEzZEYxa3hkMW5SOXZWb0ZWV3ZGMTN6VjExWCt4VlpZK05SdDVWYWU4bFlUQlZkNE5kaUQ3WVJ5CitoWVZ6UmE1bVhkZUJhRmVFbGRoeFRWWUZtVmQ2N1ZSL05kRm8zZGVPOVZocjdkZC9EZGpneTFZTUxkaUpSZGxpVlZpR3hWZ3llbGlCCitzSU1wa05tWnBkbWF0ZG1ieGRtYzFkbWQ1ZG1lblZrK1VOYUI4QU0zSU5xaU5kcWpSZHFrVmRxbFpkcW1kZHFuSlZvdnNGZHY2SWFxCit0ZHFyeGRxczFkcXQ1ZHF1OWRxdkJkdXE5UVo3allKbU1OdXpSZHUwVmR1MVpkdTJkZHUzaGR1NE5kc29zRmN6OE5tN3hkdTgxZHVlCiszWU5mSFFnK2dOckFGZHpCSlZ5bzlZTkRaZGVVVlZ4aXJkajJ1RmlNZmRhTi9kakpwZHhydFZlQUhWbGZHbGlUWGR6T3pkV1ZCVmJjCitRMXlJOWR6KzBxWFV4dFZVejZQWHlNVlFqcTNjMTRYZGtOWFd6STB0ZXoxWjA4VmRSZ1ZkMUV2WGw0V0ZpTTNkNE8wRTFIM2MxYlZYCisxNFhkNVAxWTJjVlF6S1hkVWRyY2diaGQ0VFhkM1QydWxsMm0wUlVJNEtWZTB5WGVUZVZVMWgwSTVGWGU4czFYNXBYVjV3V202TFhWCis3ZzFlNjEyUGh1VlUzK1dCQWJEZis4WGYvTlhmL2VYZi92WGYvd1hnQUxaZloyQ0FvQldJZXZDQ0JGYmdCV2JnQm5iZ0I0YmdDSmJnCitDYWJnQkU0RWV6V0hMdERnRGViZ0R2YmdEd2JoRUJiaEVTYmhFdFpnYzdEWHdITzhGV2JoRm5aaHhvTzhraDJJVmhEZ0dyYmhHOGJoCitBTVlBdnhVSUJwaUFDZ2JpSUJiaUlhYmdldERlMzNYZjNQMWUxVTFYOFJYK0NQSTEzeWllVnZSTk12VVZXTnROWXR5RlgzUnRXZC9sCiszaXhXM0NYT051eDE0bnVWNGpPbVZpcUdCZWUxNHZMQ1lqRDIzQzJXWDlmellqajJYREZtMXZBOVhqVG1ZMWRWWXpadTQwQmlYMWlZCitYanVXV0RuR1h0OHRCM3BnNUVaMjVFZUc1RWlXNUVtbTVFcTI1RXRtNUZJUUFBT0doV2pxcDA4RzVWRFdKbkNTWVlISWhpOUE1VlJXCis1VlZtNVZaMjVWZUc1VmlXNVZsRzVXeXdWM0tLcDF6VzVWM201WGVhcDFLR2hUN0E1R0VtNW1JMjVrdE9CaDZHaFhzUzVXWjJabEQrCitwNWN6aTBxUWdtcTI1bXZHNW16VzVtM201bTcyNW04RzUycW1oazIyMklFWUtQQkQ1M1J1UG51OWhpcHc1M2VHNTNpVzUzbW01M3EyCis1M3YreHVkOGR1ZHJzRmVMdXI1L0J1aUEvcWlTQW1ZYkNPZURSdWlFVm1od3pnUmxUaWwxaHVpSUxxaVlrdWJFTmVRd2xsZndkYjB5CitodUkrOXVoUi9lTkExdHczdm1pVVJlUXVQdUl2TG1tRHhXTXkzdU9QaHVsU0RXbVJKcVZCTHVTVmZ0ZVR4dGc2eG1tSmJlbVc1ZWlZCitGdXBYdlZ5YXJtbVM3bW1EMVdsNnBWOHljT3FuaHVxb2x1cXBwdXFxdHVxcnh1cXNkbW96S09CeUZnaTN5N3l3RnV1eHZydSswMWdNCitOWWR2VU91MVp1dTJkdXUzaHV1NGx1dTVwdXU2Vm1zVUJ1WjFDSUM5NXV1Kzl1dS9CdXpBRnV6Qkp1ekNOdXk5WGdkN1hRU3RadXpHCitkdXpIenVvZE5sZk9vanl5dHV6TER1dk5xMmpTVGVxRC9XbklmZW4rb1licG1UYnFVTExwemo3WXBlN2RsRVp0bHM1b0ptN1dvQmJ0CiswUzdxMGpadHBHNXRjVlZ0aDJYdDNIYlh6elplWU83bzJZNWkwcmJ0VXNKdDN6YlczWjdmM2xidWNBWHVKZzV0NHVaajR6NXVRRHJ0Cis1dzVYNXFiakk4NkVTQUR2OEJidjhTYnY4amJ2ODBidjlGYnY5UTV2b1BWcVdIQXZscFB2aTl1NHN4Nklid2lEL05idi9lYnYvdmJ2Cisvd2J3QUJmd0FTZncvUDRHZThXdkFsUHdCV2Z3Qmgrd0F3UG1DMkR2Q2Fmd0NyZnc5ZTdieWY3YitlYndCbk81bi94UXp0WnVZNDN1CisySjV1Nmo1ajY3N3VEVXZ1RWRkVjdnNVc1M1p4WGkxeFBSWnVGTzlqRlY5eFBzcnVHZWRWR0JmZHpkNWVIMmZjMXg1am9ENXhIRGYrCitYeDNmOFJWcmNTS25WQ0F2UGhtSGNrdXQ4WTFPY2lWWFhpWnY4clY2OGlxUFZDbi9PdDg5QjBndzh6Tkg4elJYOHpWbjh6WjM4emVICis4emczOHo3b2FzZWxNbXJEOHp3SHMxeXpiNEZJaHpFQTlFQVg5RUVuOUVJMzlFTkg5RVJYOUVVSDlIU3dWelNyczBpWDlFbW45RG03CitNMkNHQWpuWDlFM245RTZQODFaUVptalQ4MUVuOVN1ek5oQ1hVQkVIODBxOWN0N0xjaTJQM2RydThqN3E4VldQY21YbTRwMm1jbHVQCisxRmIvUE5tRzlTV1g5Vm5mbzFybjlUREg5VG1PY1NGSDRtT1BWMDdPWXl5LzhXQVhkbUFHNUNZM2RtZDNWREhYT2tVKzVtOEg5M0N2CitaRTNtWkFMUWdYTkg5M1JYOTNWbjkzWjM5M2VIOTNpWDkzUCtOd0I3MVFJdXdQZDgxL2Q5NS9kKzkvZC9CL2lBRi9pQngzY3RzRmNoCitvSUtFVi9pRlovaUdkL2lIaC9pSWwvaUpwL2lFRndKN0ZXWngxL2lOLy9aazFuQ0JFQUFhbVBlUkovbVNOM2w1SjRBanB1YUZadm1XCitkL2x1SG1kT1BtZUpwbm53Yzc0K2g0VjIxdWVkNS9tZTkzbDg1bWRnOW1lQkp2cWl2ejZDeG5tRGZ2bWxaM3FXYitpUFgrYnVxL21wCitYejZLUm5VRnNXaHRoMVJmVHp0Z3AvYms1ZkpaejNhdFgxUnVoenFlSm50SDVmcXY4L3F2ZjkydzcvS3hUM3V6WHpxMFQzdEdYWHV0CithM3UzcDF5NHgvWXYxM3E2RHpyZjdZQkxNUHpEUi96RVYvekZaL3pHZC96SGgveklQL3lKU1YxWXNBY3V3dnpNMS93Y2dnSCtlNldGCitKd0Q5MEJmOTBTZjkwamY5MDBmOTFGZjkxUWQ5V3JCWFpZQ2kySmY5MmFmOUoxSUdlOVVEeWRmOTNlZjkzbzk4Q2xCbU1kajg0U2QrCit6YmVISTA0cUVWMk9UMTErRTIxK0ZGVU9QKzJ3RUc4aDVWY081cjkrNTg5KzZFOE82Vzh4Nm44bTYwOE83QjkvN1M5LzdrY083L2N4CitaYm1LR0hUL0YreVA5NWYvRWV3QkFPaUIrY2QvdmFqLys4Ly8vbitML1FjSUVnSUhFaXhvOENEQ2hBb1hNbXlvRUJzQWh4SW5VcXhvCitjV0F2QUxBMndnTGc4U1BJa0NKSGtpeHA4aVRLbENwWHNtenA4aVhNbURKbjBxeHA4eWJPbkRwMzh1enBVeWZIb0VLSEVpMXE5Q2pTCitwRXFYTW0zcTlDblVxRktuVXExcTlTcldyRnEzY3UzKzZ2VXIyTEJpeDVJdGEvWXMyclJxMTdKdDYvWXQzTGh5NTlLdGEvY3Uzcng2Cis5L0x0Ni9jdjRNQ0NCeE11YlBndzRzU0tGek51N1BneDVNaVNKMU91YlBreTVzeWFOM1B1N1BrejZOQ2lSNU11YmZvMDZ0U3FWN051Cis3Zm8xN05peXl5S1JBS3NYVXR4R2UvVWk0VVJNYmpHNmd3Ni9QZnM0OHVTYlNlREdEYzFKcjk5Q2l3OXRycFE2eCtMWWxYUHY3dDN2CitJOXQ1U01BYWIxMUNIbGpRcVBmbURjMzRiV2pZU015SDVsdTZRTnV3Nk51SEpjR0pFN2JobGdkMDJHeTAzWGNKS3JpZ1d0RGNBTXNvCiswQ0JoWFhIalRTY1BMUEtNQWgrRnNJang0SE8zQVplZGNVNGdBUXMyRThKaUloSnZNUGdpakRHV1pkME43MW5uNFEzKzVFMUhvbTRkCitTdEFiQ1JxeEY5OTg5TWx6STRJeUtya2trMDA5TW9xQXZMM3hZNGFqbkZnZGhocXU2R0dIWXBCWEczdzh3dmRJaVVpMDJDU2FhYXBaCitGRFFBWEhtZ2NhTkExNXRRQXZGMm9wd0NHYWZiZmVuMUNDZHUvemxCM29EUVBSam1tb2txdWlpampUcjZhRm4yRWZRZXBKVmFlaW1tCittV3E2S2FlZGV2b3BxS0dLT2lxcHBacDZLcXFwcXNwV0hodHU1QVJIK2lVNTFCdTgzVmdyYjhBVmgyc3ZiMmJYQzY3QTNhZWpyUUZDCis1UVNsRXBBSkM1aXpUbWVyZ0xmWlNpaHh2QTFLRks3UzdRY2dlY0lCeXh0enVJb0huUk4rdWdxaHMwT1JvSitEc2NKNTNiVHc4U3BjCit0ZEhwR0pTM3VHNDA3SUhXanRnVUVnWnVOTXIraU9raGl0UzhQY2E3cTYyK2NsVHJ0ZnR5NjUrVVFIN2JpMjM4M25idUtPbld5ZTZoCisvcjJibEswWTcxa3lvc1hleTFHK3ZKVkhyc0hGL3N0VXF4ekJ1bEhNVFBFcUw3U0k4dXJ3UmhEclNHQjA2ZjM0TFhNWEN6dnh4aHgxCitUSlhBWXJncWowYUkzcWZmamlRZXJOMUdXaEkxM0xvYlNVRHRxMUE5c215Tis5NjQwWFBSelR3eW9GbVBER1YxRzZrWXRuLzNjdDMxCitEU2NpY2NPUkFxUG9NYjZIaHRkMTFjWGRBQ0RXV211OTk5eU5FOGNSM21QRDErNVRONHg0c3hpSkJ5VVB1VytuRFBmb1ZYNWQ5bjc2CitXUTQzMktvVEtqZzJoTE5zdUg3TXdiMjRzWExIUGJuamRKK2VZZC9NQW41NXlFMUY3V3JuY0lQdWR0MlA2NjcrbTlkWnd5cFA4SDlqCit5RHJscnQ4R3UreEZqWkplMkgvLzZUVHF6NU1PT1lMRGNUM2N6VTZGR0RET3RoZUhubnJZRFRtazQ1anpqZ1RaSTBNZUlVZWcwYkh2CitsZWRwVGtuUml0NGp2cEY1YVNPQ2M5eTdJQmNtL2NsdGZXd3JIbE1zVnpOMHdZMEV3S0VnOXJiR3U0TkZNSVNsRzEwdkNOaXE3am53CitSTWp5a08zQzFFQVVOVTlNSTV3Z0JyVUdRTFp0U0RjZ1hBb0I4V2JBNG5oUVBUbmNHLzc4OXp2YzdGQTk1MExmNUZLWW5oVlNwV1ltCisyZys5U0tnaVd2RW1XckRZMlFuVEI4SG1XRXR5VEVHV2hWUzB0cUJZNkZrdU8xa1hUMGhDWEwwQlExQjBISHQ2SVRVSUhla3A2MExDCit6VHc0dnFEOHNHUzZDcHF0NUNoRzdObitDaHVpVXdyOFNKQ2VSK1Joa0d4Y0dTTHBwTEE0M2xFb0VNT0dqVWJZeVQzdGNSUjlkTW9mCitiOVkzUzE2d09vbUVveVp2dU1qNzhjYVJVTEhpaVNqSnl2aHgwV1M2bVZjWXNSVWRVQ1p4bE0wcDVTbW5Bc29IeVlOc3hlRWZDWUJXCit1aVNHYVpFb3JNclpDQWFMdEswUlI1Zzhud2p6ZDBTN3djcVlUcU9VRTNFRHEzSSs1VVBLeXBBemc0S0VVVmlwaGlVY1l3QnpxRVFiCitUa1Z6c1BvYmg0U2lvVzlPMDN5a2U5ZUhnb25IS0c2Sm5VNXhKNWxJWUVlNHpiT2V1dHVUUVkxWUZOMDBVWUFrZk1veWhSZlF6NDJDCitvRWpNNkhaMDg2R09QbEdVREYzblI1MUNUOXNjclZhSTB0eHVlRWRONkoxTGJwWHJuMVFjZEROYlRhbitPQnFTcGdoMzZqUXpxaTkxCitZdFBiQ0tubk44RGhoZ1FsalNsU25KQzJtcTV0UXVpOHFDWC9aOGFSL1JTckdhUW5sNzZWeGFmbTFIbXk3RnBQdFFiUXNwcXdyRlc5CitLZ3RmbGJha3ZhRi9YdDNvanBRNnNMSENSNnJDbXloVlpwcldXcTAxYjIyOUp6NU4xenpyVlc5NGRkWGVYWUVhbGM3NWFwTzllQVFZCitEUXJNbmYwTXNKUmpXbDZKa3FQQVRrdE80TEluTEFrRkxaVUpNNDdiaXBnSlgxWTA0N1FwbEU5NVJQdmV4U3Y2dlBLR1BNdFZ5WkptCityOGZlbGxoV2VZUEJJaml0MkwzV29NbjlvcTNFVU5wZTZsRml1SldqeHB3REFOODZCYmhaNDVVRXFHcy8xaVl5dWJRMXJXN0xkZEIyCit1a21uMEZMdk4vZUdYdXk2Ykx2K25zeHVmS01MWHRTcVo3eG1YUldDRTV5bXNRMkVzRTVwSmtIc0lxbUJmRFVxRXhaSWhRbkQ0UHhZCitaY040bzh1RlNaRGhwNFI0eElJcHlQV29nbUs3UUhnZ1ZtbXhuaFFzNHhuVHVNWTJ2akdPYzZ6akhmTzR4ejcrTVpDRExPUWhFN25JCitSajR5cDZZVUZBbTRpQ1A4UTV4VVJJSWJxbTFFeWhtcTJ1ZEFnZzBCRDRYS1ZHc2NBT1JCTlpHUXg4cGovb2g4TzVKaVR6Ylp5YU40CitBd0Q2ZXFXUlZCa2thZnZkUm03UTB6Yk43RjVoanNxWlAzTGxPb2VreW11KzhrZTJmQlFxZDhTb0doa0pidWpjRVMwYmpORkR1UUVBCiszbllraitBVTBTREpFcVdORWlTUmlEblVTTVlMQ1lxbjU2QUVDY3BDK1JDbmthcm1MbGZ0endMK3hUSkhMTTFrTG1mNXltOTRrNjBOCitIWlJnNXhyWEpQajFySWVTQjQ5RUY1QnBFNE5XaFQwVVc4OFQyYTllV1I3YURJdEhQTERWMG5Zem5MVkZGRXNYKzl2RFByU3VvV3NVCitSbnRrV1lQbUNMR0pEZThVSC90RTVIYXlSMWJXT1RMeEQ5bjNkclYvMUwxb1hGczZTTEkrdFZzNGF6Y0FSRGZiVmZzM05xd0V5Q1RKCisrOTBWL3plNTZiTnVqVkNOVHVhTzk2SGZQZTlrQzBYUHE5N1hBenYzbm9xVC9EYmZmTVNoQmI2aWU4a0R6aU1QaXB6ZTgyYWtZcnpXCitJVys1eVBmendGdFhHVmhYSWpmSWlaTDBmMjhiRzl3bXpzcU14ZlNNRDUzV3ZiNDV3dXVDRGYxa080QmJmeml1RDNUMHNKL2I2a0FQCitPc0FMYkdJdlp6clRIMS8rODhYRGJ1Q0tJNEhoVExhWnU3dDJJcFlUTzcyd2haQ3I2ajZpZ0QwQ3kvS1dLTmFKcm5pK294dlh2UzBLCit1MEYzS0tURC9lZnhCZzdUQjhYbmhjOU1ETytadXVNTnZQR3JWOW5FV1hkTHFnZW1ONWlEL1NnYUwwcmN6WjMyMmJOODBGU09ZZElUCituM1lTTEt2aWQ2Kzd3V3JQZU5MelVObE4vZy9sSkdyNG55TnU3V1NQdk5JYkw1VGFSNzV6NmFGODJhZE43Nm1SZmZNUll6cmFhYy84Cit0QmVjb0tkL2k4TGZNS0xVTXhyOC9SNi9TRnhONXZEZm0vb2MxMGpBYkpON1FuK0VQSUdPczM1VTNHcHQwNkVJWDBqb0JySGRHeVZoCitTM3Jjd0xLQWpzalZIcFBsM2ExOW1zVWRvT3pWSC9OQlg3MWhIN3hoNEtTQmhJNzhtM24rYlZ1VGdkLy90VjcyUVI3QmlZU0RuUjliCitCRWdlQ0V6TjJac0tDZ1ZvOVlMcG5SMzBLUjd4UGQ2NDNWL1gvTnIrOFNDdWpZTEF5RnZkaFlRTFVhQUVZTWp3eGNyUTZkTitXSW1CCit0UWlvNlY2R1lBTTJqQi85K1Z6MCthRGFzYUMwT1lFcDRWb1JZcDBFR05pL09VRklwTWZtNVpwdGdCNGhpUjRabHB2ZHZCa00wc1VqCis2Sm1Pak5xbi9adVJKRVhzR2FIWm9kem9XVnFPRkdFaHl0K2grZDNDWmN3REFkL1p0WnpIMlEwVmFoZnllVnIvQVYzTlVXQVFtbDBVCis0aUVpM3FHdGRZNjN2VjBZanR5OUFlR0t1TW9sYnBQL2tWM1F2ZDdva1dMNDdXRmJ0SWt0S2Q2OUNaNVNGR0lqa3VLdUpTS1d0UWdqCitoaHk1OVdCMnJNeitEVHlJczczSGM5eE1GRmFicjBpQWczRWhLRnFhdkRrQktJYmk0bG1lOUltTnpJa2l2WG5FQ2xiaTBvV2Rid1FGCithQ0hPSStUU0czd2VMYVlicjRtaHBjMFRGZXJpV2poQjFiM2IvL1ZDQ2hxRk1NWmZRSEtpb2htak96S2lRWVplZW9nRUE3aGRyTlJYCit0Y1daUlkwRUZOcFpoUVZQVVFSSmhuRmpvWkhhSFY0ZFJvYWdvQVZhUXByaW1ybGhPcFlrc2MwSEowYUUwOVZocGJraEFIUmFDczVpCitvdDBqUG9ZRVIvSWpVQWFsVUE0bFVSWWxZQ2lYSVlYRjBaU015WFRIVXBiTUMxNkZ0ekNsK1NIR1UvYU1VV2FsVm00bFYzYWxWMzRsCitXSWFsV0k0bFdaYWxXWjRsV3FhbGN2d0VXL3FFRjJKR0NyYWxYTkxFVzE0R0lNNytKVjdPUkdvQUFKQmNoRi8rSldBMnhDalVubVpRCitUVWtGSm1JbUptSU9abDFhUnBBb0ptUkdaa1ZreEY1V1pXWlFUV05XQm1hS3htYUdSaXFDeG1lV1JrUndKbUZlWm1uQzVXbmFKUzF5CitSbWlTeG1pR1JtZUNSbXgreG14NlJtdDJ4bTJLeG12Q1FnY3dnbS8rSm5BR3AzQU9KM0VXcDNFZUozSW1wMjlTUUxGbEptWEU1Zy9zCitnblJPSjNWV3AzVmVKM1ptcDNadUozZDJwM1QrUUhPS1JpcUtnWEtXcDNtZUozb3Fad2RRem1xR3htNWVRaWZFcDN6T0ozM1dwMzNlCitKMzdtcDM3dUozL0dKeVNFSjJ3RzJ4TXdBWUVXcUlFZUtJSW1xSUl1S0lNMnFJTStLSUUrQVlDQ0pwYkpBejMwSjRabXFJWnVLSDllCitBbnRXSmtmK3dDZUhqaWlKbG1oKy9pZmlPT2RreE9hQVFxaUx2aWlNeHFpRFNtaUtpbWVGWHFpSjVxaU9qcWlIN2t0N2dzWjc3cWlRCitEdWwrb3VpVnFhaGtzS2lNTGltVE5tbUQwdWlSMm1pdTRTaVJWcW1WZGtLUDdzZVBma2FRWHFtWENxbVIxbVpuS0ttVGxxbVpMaW1VCitpaWxyM3VpWHRtbU9abWx1dXVlOVdNTWcxS21kM2ltZTVxbWU3aW1mOXFtZi9pbWcxcWtDVENodEJwc1B2QUNpSnFxaUxpcWpOcXFqCitQaXFrUnFxa1RpcWkrZ0NoMmlhV01ZQUNCQ3FuZHFxbmZpcWdXc09Ib3NadUxnQTVuQ3FxcHFxcXJpcXJ0cXFydmlxc3hxcXNubW9MCitYT3FZQmxzdXhJS3U3aXF2OXFxdi9pcXdCcXV3RGl1eEZxdXU1b0t0cm1uK3JxM0NyRGFyc3o0cnRNcnFBb3pxYVpScXRGNHJ0bVlyCityTlpxalFab2l1V3FzWWFydUk0cnVSSXJzbllyaFM2cnRxNHJ1MkxydFBvb2lHNkVxYllydmRicnRpYnJac1FtdUpZcnYvYXJ2d2JyCit1VWFwWjFZb3M5cXJ3UjdzcWI2cmxzWXJMUGpDS2p3c3hFYXN4RTRzeFZhc3hWNHN4bWFzeGo2c0VlQnJZUVliS1lTQ3lJNHN5WmFzCit5WjRzeXFhc3lxNHN5N2FzeUpLQ3gyWkdLZ3FBQld5c3pkNHN6dWFzeHZvQ3RackdiaUtDRkFTdDBBNHQwUmF0MFI0dDBpYXQwaTR0Ciswd2F0RGNRc2FxWllObndCMVZhdDFWNHQxbWF0MW00dDEzYXQxMzR0MVdZRDFLb21Sd2dBTlRRdDJxYXQycTR0MHlKQ3o0cm12WWlvCittODcrN1lhR2FXcGFCcG1lcWQ3dUxZT202ZDFXUmlwYUtOME9ib2JDNlpaNlJwY1NydUtlNk5qaXJZRHlMZVJHYm9INkxaSkdSdUJTCis2ZUptTG4wYUxzUEtyZVorYmlmWWJlVkNSdDVLcnVtYUtlVkthZGRnTHVobUx1ZVM2cjNJQWdMTUx1M1dydTNlTHU3bXJ1N3VMdS8yCitydS9PN2dRMHJtWUdXeDBFZ2ZFZUwvSW1yL0l1TC9NMnIvTStML1JHci9IV2dmQlNSaW95d085bXIvWnVML2Yrcml5OHJXdmV5N3dpCitMUG0ySzdjS3JHemk2cit1TC92MmE4Q3E2WElRYlBuTzc3b3FiSndDcWZqU3IvNWU2L25DNzhkK2Evc0dzQUNiYS9WT1J1QVc3UDRtCis4S3phNytGMmhyVXFNQVRmSzdvV0tnQVBzQVZmOExFV3NHUWNjQVQrZDNDck1qRERqcThIanpBNTlPL2ZQcWY2WXJBS0IvRDduckFCCit5eThKa3pBSXd5NUh5RzczM2pBTzUvRHVCdThFZTBac0ZxLzBCckVRRHpFUlF5LzE5akJ1WnFvT0x6RVQ1L0Qzd2lzTmI0VG50dTdpCitpaTVwcGxpTG5xNFdOMm5xRHV5VVV2SG52bTYxeGkwWWE2NFZleXRIWlBFV3J6R01kbkc2cm00WnV5NzRqa2JpeHZIZ25uSDZZakViCis3L0dMdXZGblhLNGRLNjRZKyt5OUFDM2JIaklpSjNMU1BpMFNjMFpzVGkzWVJySWtUeklsZTYzWU5uTDhsdTNaS2pJbmQvSWh1eTBVCitqekZIT0t6T2xySXBuL0xGZGl3bS95OUhoS3pMdmpJc3g3SXNzeXpNcnJMTVlobk5vckl1NzdJcDgyd29FekpIaUhBTVI3QUpqKzcrCitZK2pyQ2lmeityYXdNVHNHQncrekI4K3dLTXNyTkh0d01WOHhSK3lyTW0venVES3o2bVlJQWxlekFrc3pNRk96T0VQd05hUHhSbWd6CitON2N6QWRzeVpqenpPU2N3T2NNdFIwUURKK1N6UHU4elAvZXpQLzh6UUFlMFFBODBRZWR6SW1od1pNVG1vVklxUXplMFF6KzBwRm9xCitQSlB0UmpBQUx4UTBSbWUwUm04MFFVZkRIT3NtR1FmeUhTTTA2VDR1SDUvMGs1TDBZd0N5U05QdElOdXpGTGMwM2VJeEJhY3hTdCswCitndm94cG42eFRMdnBTNGR2aVBhMG05SzBENXMwVGg5MWhLcTBNN09wVUgvcFQ5TnhTRGYxbFJMMXJlb3hVaU8xVGljeFQwdTFsVDQxCitTSE9FT21DQldJODFXWmUxV1o4MVdxZTFXcTgxVzdlMVdPLytnRkkzeGcvUEFsM1h0VjNmTlY3bnRWN3ZOVi8zdFYvL05WMGZNZnIrCitNWmJ4Z1ZzZk5tSW50bUs3dFRwOHRKd0c4endyY0RybmNUYTdzMlcvODJEdmROZUVjMlRQYnowRHRUbDNOdjFPZGsydjgyV2ZOckI2CitzeGR2dG1qcjcyZEROV1MzOXZ5U2RsRlhNR3JmZGdaUHRHUENzR3lUNzJ0L2RXajM5c0hTZGxWWE5tN2p0bXEvTVRnTHQyODdOdjV5CitoRFhrZ0hSUE4zVlh0M1ZmTjNabnQzWnZOM2QzdDNSalFsd3pSbXpxUWdPVXQzbWZOM3FudDNxdk4zdTN0M3UvTjN5WHR5NkU5MkpjCityM2ZmTjM3bnQzNTd0NmorTWt6RHdoUnpOWmpTdDJLVTdsV2pkRllyS3h3TGVKVjY5V1BITklNVEtWVTdzbEVmT0lJVGVHTCtzSFNFCitDNm1EUHplRWIvaU9UbmkrVnJpRjgzR0NaL0tDZzdpT2RqaVhGckludnppTUx5MGpaM1p4YndRa1Z6S081N2lPYiswbDA3aUN3NExaCit4cmlRRDduUWd2TENSakVzZ0FJdkx6bVRaNndxKy9pSXAxZ0V6REtWVjdtVnIyd0VZRGhpekd6Tk5ybVhmL25EZ29KenQzaHNNN2ZCCitFamVGMi9aeG4zWnlFN2E2bXJuQi92YUR3NEl3d3ptN29ubVVHL2VhczdtV0g0WTgyM203eXJtSDB6bWcxeXVlczdKcDd6bWY2emJnCis4bmFoMSsrWUkrNjk0RE5IVjdxbFgzcEFIelNqbzNDS0xUUkVmenFvaC9xalNqU1VhOGIxWGpTbXA3cXFWN3BIK3pkb0E3aUtoM2lmCitHNGFCbHpnYm43aXBNM1dzbXlpTFMzcFE3N3FKaWpqK29zT0NHdHY2cmM5NllXZzRzUE5vcER0d1ZDODdod3E3YVZxMXNlOHhydC95CitWa1A3aHZhNnMvKzZ0dGN0c2hOR3JWZjc2VjU3UE92NnR4ZHVzM1BHYnFKRENMdzd2TWU3dk04N3ZkZTd2ZDg3dnVlN3ZyODdNNFQ3CitZTVNtT3l5RHdBODh3UmU4d1I4OHdpZTh3aTg4d3plOHdMdUR2NTlZWWU4N3hWZTh4Vi84dnFQRHVtL0dBei82dWg3NnRPdTVvcnR6CittMnYyY25zOHBMczZiQWMzeXZOdnhBY0dNbys4WlplOFZyTjJ5MmVyb0pNNXk5LzhzNEo4MUlxOHpHOHp6Zis0UEhBMnp6dHJ6dnY2Cit6aC85clByOFpjUjgwSFB6MEtQNHlUUDlzeVo5dDIvRUlId0ExM2U5MTM4OTJJZTkySTg5MlplOTJaODkxNFAzcHEvK2FMREpnTnUvCitQZHpIdmR6UFBkM1h2ZDNmUGQ3blBkeS8vRkZtS3RyL1BlQUh2dUNqL1NCc3ZHYlVjYnIzcDdULy9FWVVPN21YTzkvL2hiSW5mb2NhCitmbVlnUHVYcjUrSS9QWWsvdnVtYU8wVm5DT3RtZm41eU83cy9PK2t6N3RvbmFlZDdmdVNDL201bmUrcmpwK2x6L0wyY0FRdmt2dTd2CitQdS8zdnUvL1B2QUh2L0FQUC9IblBncEV2bDhBUERJc1AvTTN2L00vUC9SSHYvUlBQL1ZYdi9VdlA4U3Z2dVhpc2pZVXYvZC9QL2lICitQL0dmZ2VWanhtNHFPWmluLzVJL3VmK0cvRVpNK1pYSHYveFRlWlpyUDJSd3Vmcm52eTZMdWNvRE42RmJQVUNRRXppUVlFR0JMV0FsCitsQWRBWGtLSER5RkdsRGlSWWtXTEZ6RmFYTmorTUdHdVdCOUJoaFE1a21SSmt5ZFJwbFQ1TVpmRGpSbGh4cFE1azJaQ0VnQmNyaks0CitrMmRQbnorQkJoVTZjSUhEbXpXUkpsV2FGQUFKaHd1R1JwVTZsU3BQaEFvWkx0VzZkZXZMaml2QmhoVTdWbVZMckJ5NXBsVUw4NmhDCituVlhoeHBWcnNLaE5uR3Z4NXMzWTlPbGN2MytuWG9YbFZXL2h2SVE5a2xXOG1QRkpzNE96R3Bhc3R1M2d0NEF4Wjk1WkYxYmx5Wi9YCis4azJJTGtScDA2ZFJwMWE5bW5WcjE2OWhsMmJtTWpKbzJ6VUp1MXUybTNkdjM3K0JCeGMrbkhoeDQ3dmQwVVo3bXpuYnU3RDR4SlkrCituWHIxMk9pTVBtKytmYVpvV0pjNmhSYy9ubng1OCtmUnAxZS9ubjE0U01xNXg2OUkrQWtUKy9meDU5ZS9uMy8rZi8vL0FRelF2aWZnCitrODlBaUNxVGg1NzJHR3pRd1FmWnV5UzdBeW1reUR2d0lNeFF3dzNUZSsrc0NpbWtUOEFSU1N6UnhBQUovQkJFQXhOY2tNTVhZY3hRCitRcnRXckJHV0MyUE1VY2YxUElSc09SdVpFL0hFSVlrczByOFVmUVNTdXhaM2JOSko4V2JzVERzbDVjUHh5U3R6N0pFd0ttMFQwc2d2Cit3VHdSeVMyNS9JeEpMTkhrTUVyUHl0ek9PM1dzaTFQT09WMUxwTUEyUHlOTWwrUDQ3TlBQUDQzVDVVNDhKYXVNQVdib1RGUlJPZFdaCitrRkEzblVvSUtzMG9wVlF3TWg4OXJMYkVHdXZVVTdJZXd6VFR0Uks4ck5KVC9lS016VkVuODI1U1ZHR042OUxhV01VTHNVOXh6VFdsCitVR210bGJMbjVERTExbUdqVW5WS1h3ditjNVhZWmFPYTlVZGt1OXBVMTJtcEJZblhaNkZkcWxSbXVRWEsyR3dsYzNXVmNja3QxOXh6CiswVTFYM1hYWmJkZmRjWTBZRk55bENKTW1sSHZ4elZmZmZmbnQxOTkvQVE1WTRIdWxrWGZlcEJLMDROMkZHVzdZWVhlL1BUZ3Y3OFNRCit4K0tMTWM1WTQ0MDU3dGpqajBFTytXS0RKYWFKTUpGUlRsbmxsVkVtdVdTWktrT0M1Wmxwcmhsa01SeDlPUzN2ZERhNTE1NWpFaFZvCitqSVFlMnFKVmpjWUk2YVJsNHBucGk0cCtPcUtvcFg2STZxcHB4UHFpcGJXdXlPbXVJYm9hYTdHckpsdHFyc0dXTW0yWUFHamI3YmZoCitqbHZ1dWVtdTIrNjc4YzRiMjdVWHl0dnZ2d0VQWEhDNDkwNzdwc0VSVDF6eHdOZk9pSVRISVk5YzhzbitLYS9jOHNzeHoxenp6YUZwCitQQ0pvTmc5ZDlORkpMMzN5emoyMzJ2VFZXVys5OU5SaGoxMzIyV212M2ZiYmNjOWQ5OTE1NzkzMzM0RVBYdmpoaVMvZStPT1JUMTc1Cis1Wmx2M3Zubm9ZOWUrdW1wcjk3NjY3SHZYUXdBVUU5b2xCc2V5Z1AxaFpDSzI2bXMrbjdiS2ZJaGd2dUc3aVZDSHdBSkhtTG9jTUxUCitkN3VoL0FIb0JlY2JzYlU5OEQwRUNhTjRBd0N3RWFrYndhMFhDWEVmL01MMlFQNjFUWUZHZ2VEVWprVVI4ckV2V3JCNFgvWkFtRFFuCitQT0loYjZCZlFyYkhFUTQ2SkE5T2FOc29rR0NoWjhsUElpdDBJRWNLK0lZWVRrUitPblJJYlZab1E2dzRCQWszYUNBQUpYSzRIY0lDCitDVTRZUmVmazhRWVNJakVpa2NuKzRSSWo2QkJvT09HSU41eklGaThDT3BpUVQ0eGMyV0FYUTVqR2tqM0NDU3dFd0JKN0VSa2JRa09LCitzTmdpR3RzM3cvMWxVSWkwNmtVRjh3aVpQLzRRTFVIa28zYlk5ek5ZbU5DRVJrR2pCTERoeFNvdVo1QTExRTRldEtQSXpnQ1NYaG5zCitaRUt3OFQ4MWpoSmMwT0NlVFFiWW1VZkljVXBpNktJUUNUbEp5RmhTbGc2QnBBd2hzNzMvQVJHUmg3UmFKS2tZdmpkK3p5RWpKQ0JICitGRW1yVzlLU2hXalVKRFlhSW9iSFVaQUVCMXpmWGFxSndQOWxFeHYwMitCZEhvRU5CT2FoZ2Y0VFp6Y1Rrb2R6NWdHRmNjVEdLTzR5CitDazZTa3A2ak1pWXNzTUZPV0lnaGtxeXNDQW1BR1Q4OXpoS0R0UndpRC9mWW1TUHkwbXErVEVqK0FaSDVMR0ppY29lYVRPWnlZRWxRCitPNUlBaTRwRXdpa1hNZ3BZWVBJR1NNQ2t4WENTUWxnOG9vSHl3RWJuanZMTmxiNTBwVzI3VVM4Nlo4REJ2R0dQblhOQ1NiY0lUanpXCitrNmlFWXVNKzMxRE1odmhUSWprVVpSWGZ0dEE5RWs2anNhUU5Mc21IQkhReWxEWnd3OHJiUWluSkV1cXpqc0ZzSDl3aVJhdU1UdkNFCitZbTNvUWFuSUVQSnQ3eEZZbkpCTTBaa1FGOTdvaE9TVHAwTnVRSUx0b1U0Q2Q4bG9VUkVMcEkrQ1RxU2RHU0JURWZTR0ozcHRvTERzCis0M0tXS1ZDQ1J2R2poZXdsTTVsNGc4YjJDcE52YXlNczdtbEJzMW8xSVpuTjRrTjF5dHEzYWpReWNyMExPUUhnQkhhSzRRWnY2RVVjCitaMG0rMnNDVGl1U0xvL3IrT01pK3d5YVd1U0M2UVRqMWVkeTNWVFVoTjNEQ1V4RXFTOHNleTQvejlDSUhBOHRWdU03V0psS0Z5Q2dhCitPOUpUQWxTWU1iem9ReXBaMEt2S2RyNGNyQzFLSVlKSk1id2hVaklsWDE1aEFWeC8vdlVocGlTc1lUM1pYQVVmQ0pKSnJhVU44K0RECitpL3lNaHZLdEh3NE5hTmNMYXhRSkIvUXNlVUZNQXZNUzhRMzZURWdkdGZwQmVUZ2hyZGl5WW9ZbndzRUNwbksxUDhTWmZTTkt2bkJDCitrWHQxaEVZY1pZWVQ4Z0cwYzZ2RWlUK2p1RCtlQmhpb2UxM3BVQmNjWmZsOE5MMGJob3o2N3VjMlhBWnlnaTFGNndMZDlrR3NhbWVWCitIKzZxK3FvYXhjN0ZUUUlPZHNnb1RwdERCQ3BRYmc1OG01Z3RlZWVPN2syM3RNMHhUZ3IrMkRaMFFuTE9iK0Nwa0xFcFRoWWZXWVYzCitJWFJla1JCSEV4NXhGRk9VOHFVeGJiUkhlSmNyWXVoZW01ZnloZ3RtbXRTbFJsWVREVU5rTzdKWUtSS29zcWxoamFmZnpucldreEV4CityWCtMM1pmaHV0WkplY1NvdVlLRWJQSlh3ekFyZHF5Um5XeGxMNXZaelhiMnM2RWRiV2xQbTlyVnR2YTFzWjF0YmZPYTI5MzI5cmZCCitIVzV4ajV2Y2JZV2RLOG1kYm5Xdm05M3MxblhqME4xdWVjK2IzdXJXSFFMcm5XOTk3L3RyalZzSUYvY2RjSUduMjRXRkE5dS9CNTV3CitoWGRiblBmbWROcjZ6VGROcHMxc1Q2czQwOUFHdTRpdmJlTUhuN2pIRGQ2MWl5Y3Q0Nm5yT05oT3JyV1JHMjNsUTJzNTBFcnVPZStNCitRQkkxdC9uTmNaNytjNTN2bk9jOTkvblBnVzd6N3FWOGJMV0p3U21Rbm5TbEw1M3BUWGY2MDZFZWRhbFBIZWt4Y0JuRmF4TjByVytkCis2MTBQT2pCeWRqdnZNQ0pOWmM4UVBkQkM5TExWcGo1aGN2dmIvek9tajR1OE5wQXcrOTBidEtZRXgyN3NlUGY3ZXREK3c0ZlRIUzF0CitoL3ZoRWM4RXVZZGM1WFgvKytQUG8zZUhPNFRza0xlOGVBTHZ3TUUzdnZDSjkvemJGejg3d3RqOThwZVhmTzc2WG5yTFovNUdteTk2Cis1ejhmZXlPRlhuYWpWNzNsVDQ4Nzc0akNCYjMzL2UrQkgzemhENS80eFRmKzhaSHZlejRJWHZTMW9RTUhvQjk5NlUrZit0VzMvdld4CituMzN0YngvNmRMZzZ5QjBDaHVTUG4vemxOei95VFJGMjIza25CZFZ5ZjY1Q2tYYisxNjhkTGEvcTF2MEx3cG1YOTR3d2szai8venZsCitNV0t1Y2RnUEFBMVFNZUtQK1dxdk51d1AveHhRLythTzh4ekMvdzZ3QXNGQ0FQZE80eFNvL1N5d0ExRWlBVFd2K2VyUEFVbFFJQ0NRCis4VjV2QWoxd0JVc0NBeWN2SVRpUUJXWHdJMEN3OVVTd0wwcndBYitQOEZSd0JtZlFCVkZQZ1VTaEZvaXdDSTN3Q0pFd0NaVndDWm13CitDWjN3Q1l1UUFSUXdkZ2lqQWpUaENyRXdDN1Z3Qzdtd0M3M3dDOEV3RE1Yd0NpdGdCeVV3SWJJQUN0VndEZG13RFord0FOU3ZkbEx2Cis5djZPOWRST2FyeEU5dlN3UkdpUENoMlBEdjh1OThST2dTb1BFUEhPRHVjUEQ5bHVEeG1SUlBvUWRtelBFUEZPRU5lUEVDWHhFT1h2CitCaFBDOEJyK3NSUDc0eEZUSnhJdnNld29VUTRWcUJLa0lCVlZjUlZac1JWZDhSVmhNUlpsY1JacE1SV3BRUUNtRUJKckl4dStvQmQ5Cis4UmVCTVJpRmNSaUpzUmlOOFJpUnNSZXp3UXhUTUNGc29CYWhNUnFsY1JwcE1SUGlrSGE4UXhrR1podTVzUnU5VVdCQUFCZERjQUhSCit3aEFlNWh6Uk1SM1p4UkNZa2Y0Y1lnTytNUjdsY1I0QkpnS3VjWFlLMEFkbHNBYnYwT0lZTUFkMVVFWDhFQzBvVUI5WEVBaDFid01OCitrZ1g1TVJIOWNRUUI4djVPVUJOaG9TQVgwZ0lSY2hBZElnWXZzZ0lia2lJYk1DS0paU0xKc1FjN3NnSXpzaElkQWhXR29DVmQ4aVZoCitNaVpsY2lacHNpWnQ4aVp4c2lWZlFRckhjU0Fkb2d4U0lTaUZjaWlKc2lqK2pmSW9rVElwbFhJcG1USW95NkFkRlJFdGppRW5xYklxCityZklxY1hJZDdsRjI1bkFVMFFRUktaSVRQWEVzOFFNVVBVY1V2UkpMU2hFYkxURXR2eklUUzNJVHlYSXV5eElxSDlJaFNNOHRyMlF0Cis4YkV0OWZKSndESXVZVUVzNmRJVHpkTGYvdkF2bllRdnVkSXZGWE5IQXRNbjViSXc1L0l3SlE0dDh2SXhkWVF4K1U0SXgrRXpRVE0wCitSWE0wU2JNMFRmTTBVVE0xVlJNMGw2OG5kUkV0NktBR1pITTJhYk0yYmZNMmNUTTNkWE0zZWJNM1pkUDdCUEkxdzI4MWliTTRqZk00CitWVFA5c2lZaE4vSWtMZkFqQlRNa1JUSldTRkl5SzlJNVVYSXJPN001c2RNQW9kTTZwWE02VWFVNmhUTWhMTEk3M1M4bFRaRTcwZlA5Cit2clArUEdFaFBNV3pVc2d6Rkd2alBOdHpXdFNUTGRrelA2bmxQZTBUSXVkeldPcnpMTy9UUDlOVE96WFFJWTZnQkJ6MFFTRTBRaVYwCitRaW0wUWkzMFFqRTBReCtVSjIxUU1CWGhBVUEwUkVWMFJFbTBSRTMwUkZFMFJWVjBSVUZVRWV5U2FRaWpDRFIwUm1tMFJtMDBRK0Z3CitPVFV5SVFwUk0zTWtNdUdUTUNtVEVTMFQ2ekRUUjNlRU14ZVVSNUZVUjRBMFFCMUNTSWRVRDRzVS9CSWlNNXRVVFJUVTVCd3pTemZrCitTUTBVOXFhMEU2dVVCNi9VUzJGRVNiblVJUnJCRXR6MFRlRTBUdVYwVHVtMFR1MzBUdkUwVDkzMEJNU3hRNjB6RGxnaFVBVjFVQW0xCitVQTMxVUJFMVVSVjFVUmsxVU9QZ1JaT0dNRTVBVHltMVVpMzFVdlArbEFpMlZPWVVTQnZwOFZOQk5SN0RNUmVoTkNITVVSMVJOVlhQCitrUjJEczFSaEFSNUROVlpsdFI0M2xRQVZFa0gvRXk3QmMwQkhFbEpaN2tCeFZUOXJsZU51TlZqaFQxZmhVejU1RlRNS0ZERUowbGgxCitaVC83c2oraHRWTUFORXh4Y0ZuSDAxZGREbGlyMVZPa3RURlhraHZJdFZ6TjlWelJOVjNWZFYzWnRWM2Q5VjNKZFJ3NHRCOWh0RGJLCitJQVB3TlYvMWRWLzV0Vi85OVY4Qk5tQUZkbUR4OVNsYkZWc1Q0aGpnZFdFWnRtRWQ5bDMvWUZnaHJrdlJGRUxBMUZtamRFd05rMXVCCitCaTByRmtMVWxGTXA3Mk8vRkZsZFZVbzExdlBLOUF4aEFVdEpOdThrRnVVbzltWGI0Mkl2TTJOVGxrZzVsdjhTazJaaFZrZFZra24rCitmZFpCYk5aSWNUWm5xWFJuZGNaamgzWTlRdFpXeC9WaHBYWnFxWlpkNVpWVUVSWVc3cFZndWJacnZmWnJCZFpnazBRd0ZiWnF6ZlpzCitwVFppZ1hZOVlmQmJQK1ZhTVZaU3RCVldtdlZtemROdHdUVm11eVlmOFpZeDROWnU0M051dC9WZzQvWTYrNVl4d25VNzIvWndGK052CitqVlp1QlpjK2xmWmwrbzl4RnlOeGx4UVdQSFZXT2JkelEyRlVYZE5WVDFWVlNiZDAxNFZWeDlZNllkVnpXVGRVN1hGdCtUTWgyaFJUCithYmQyYmRkTytSUnJDeGRRRzdWM2ZmZDNnWGRSSDVWd0FYZFNiL2Q0a1pkMk5SVjJwMVZvbTdabVRUWnJVUlpwNFc1bG03RmxuNWRCCitucFpZUnpaNzJhTm9yWFF3cVRkcGlmZHhzZGQ3blZadnRhYitLOUgzUE1EWFRNVjNmR1BQZXQzeFROczNQYlozWWgxaUNOMndmLzMzCitmNXR3WGgyeVh0SENDc2Z3Z0JFNGdSVTRETXV3Zk1NM0RRRTRnaVc0ZjNOVWJZS1FXaTBYTEJ3M2ZKVTFjdU9pYnMwWFB6TzRMTlFYCithL2gyaERVNGVndTNnejI0S2tBNGZFVVloUjJqaEt2bWhHVTRKVFlZZmxtNGhhZmloZUUzaG0rWUpEQjNUUmMzaUhGWWhRRjNoM200CitXQ2EzWkNyWGlIZUZocVZtOTVDemlxMzRpbE96TmYwVVBtUFRONzM0aThFNGpIa1RPRk1YUHNFQWk5RTRqYTFZT1MyWU9aMzNmczNqCitmVmwyZXVVWFRPZzNLdkVTanRFamYyVzJlL1c0UE9UNGV1bTRqbWV2aVNXR2FmKzRFL2g0YjJmMmp3TzVmdU9Ya0JIdmp1LyswbjRUCitlVHdXZVgwYldZOGZHWThuVTVJUGo1SUpPSTh2R1pPbCtHbThneVd4Y3BWWnVaVnJjaWQxRjNDQnNpbHB1Wlp0K1phWFVtejNiMmxyCitZeXBkK1plQmVaVzFrbm5GdFlpaDJDUnltR1dWZUltRndvZFpGb2lQbVNWT21XbHNPSnBGSXBtdmQ1bVoyVnNNK1dDZTJKcUZlSnFUCitwcHJCbVFhUjJIeTFlWnQ5d3BtdkY1cWplWWhGTmlFMnQzWHBXUjVCZDR0RjEzVDFlWi9KQlhWM21YSnJZM1hyZWFDNzhYWGJlRWRoCitBUldwY2FFWnVxRmo4UlpqMlh4NU1Sa3B1cUl0K3FLUGNSa2RHSDZmMGFFOStxTVgyaHFKV1hGaG9VZEx1Wk1yT1pKQkdmUzZlVjRRCisrWTh6MllRM0dZNVJlcFEvZWFYZFRwUWp0V2RMT2FiK2EzaW03N2VtZDFwTWNUcE1kUHBYajdTVW9VU2NqV2IzSnZpcG9mb0pCWmdpCitEWGlCcmZxcXNkb0xHN2lNWFJXQ28vcXJ3Ym9XS25nQXVkZVl5eGtrc0JtUzAxbWRlWUtkSWRtZGp4bWVvZGFzenpvVzB0cVRBNWV0Cis1Y0t0OFJxdW9WaXV5eG9XT0xLdTdmcWNPVml2OTdxbHdlV2JDVHNXQUZ0LzZmcXM3enFsMXhxeENZS3ZVOXF2amZpeCt6Z2hsaUFGCitRRHUwUlh1MFNidTBUZnUwVVR1MVZYdTFRMXVVNkhXb0hjSWVaSHUyYWJ1MmJmdTJjVHUzZFh1M2VidTNhVnV4czRVd2xJRzFpYnU0CitqZnU0VjlzVm1IcG9YbnVjQnhpMkJSTStZWWVzSWJ1WXJWTzZYWFc2TTVDSXJSdTdzOWE3RzRlNlVlNlBYS2U4emR2K3ZKdTdXK1hwCit2Tm03dlVVSG5sQnc3ZGJidmVtN3ZpY0h1RkJ2Y2ZSN3YvbWJncHF2dndFOHdBRW52aFZSd0EzOHdPZEcyeFI4d1JtOHdSMzh3U0U4Cit3aVY4d2ltOHdpMzh3akU4d3pWOHd6bTh3ejM4dzBFOHhFVjh4RW04eEUzOHhGRTh4VlY4eFZtOHhWMzh4V0U4c1JySmx0eU1pZnByCit1eTJFZ1FncWJyd01nOXdtbnlwQzJBNUlzaW9xYnJUSWdPYnMyTUFzcXZnSHoyTDh5Wm1EQkdoTXRCNmlMWVNJdDlxbXBMWnN0bjVHCitpRGlvelV3c0l1Q3NjNkRCaU54S2l5U3JjOFRBQ1U2THN1WnIxYUFNeXVXOE1MWm5oejdLeENJTXdTTGluWkNnaWVLOHhoTHBXYnhjCitPOWdydXhMQ2xIQkdrWHFCeHJUSzBneTlxakQrYWM0bC9UUHlLc0swcUp2MEhDSjZZWWNPcTh2dnd0TXR6STVPU1NLSTNDWGM2MWsrCitDcnVPeXMzSGk1d20vZFVMUThxOVI0RjY0UkdVYSs4S1hiTmVDOVJmaTc1b1BMY0V5OWNIM1NMRUMzU1VITmFSSFNucWZKRzJDWHh1CitmU0tFdkhDTWZNZS9iTml0TE1aSXdJVkdTOGV0ZmN2Wkt0bkJuU3VjUUFMVVNTRjg2TmtqNGhGOEM5ak9mTWNGL1ZoV3lNQXdRcjlxCitMTlVoSXB5STNjeVlLTGJDdmQrUjRoRkVLMUt5ckczd0MwR2dhY0xldmQyN3ZUTUNxb3Iyck1hWXpDRjZ3YVVHVDd5b3k5OHhQaU5NCitLYXhleTRic0hlSGxpOWZKQzh3cDRyYzZwNEJPUzVIb2FMSldTY0s4L1RsbUxPTmxQaWFjb09Icmk0RW1hTXYrNTZ2TytNZkxmanpNCitJMExPMHR6T3FNcU9rTHgvQU96Um0vellaNzdwZFVjTUhOM3BwWDdxcVI3Q2J3M1gzazB0SklEYnpFMHB1cTNxd1Q3c3hYN3N5YjdzCit6ZjdzMFQ3dDFYN3QyZjdCN2Z2dDRSNXkyQjFzUUNmdTdaNis1MTdrN243djJmdmVFUHp2LzU3QS9SSHdDVi9BQlIvakNqL3grL3NGCityenU3SGQ5enhCdnhHUis4QVpmeURRZkhzU2J5TlpraUxUOTh0WnQyTkYrbUhhSmliS2IwVFo5bWdCdGFUdWIwV2IvMVF5YjFrU1ZtCitYSC8yYVI5alJDbjBmOW9oTG9FZWVMLzNmZi8zZ1QvNGhYLzRpYi80amYvNGViOFBZTjlYQ09NWnF1RDVvVC82cFgvNnFiLzZyZi82CitzVC83dGYvNW4ySDVheVZCU2dINXhYLysvTW0vL0kvZnA2ZFlnVEJFcVR0QlN5SlFrSXVhcFRkYWE4NkUvZEVmbGRXZi9kM0QrMWtsCitEK08va0FFQ0ZpeDVBT1FKUElnd29jS0ZEQnM2ZkFneDRrTVNBQTdLbzljcG84YU5IRHQ2L0FneXBNaVJKRE5lT2toUm9zcVZMRnU2CitiQWlBeE1GTEpXdmF2SW1USkNTTEJWLzYvQWxVSlVHREFwOHdPWW8wcWRLbFRKczZmUW8xcXRTalQzZ1NEWW8xYTlDVUFpL20vQW8yCityTWlUQXJscVBZdjJaOHlEQnp5NGZRczNydHk1ZE92YXZZczNyOXRGVnRQNi9jdHc2TUZ3NEFvYlBvdzRzZUxGakJzN2ZneTVjTGkrCitnQ3NETnN0Z21ON05uRHQ3em5zQVpVWExwRW12RlVoVHJPclZYM2QyN1ZrNk5sYkJSYWZhdm8wN3Q5VCtxcSt2eXY3dDBxeFgxc1NMCitqeFVOUERuVzA3QlNHMzhPdlpQcmdiQ1ZXNGRJRzVaUjNkeTdlMy9LbTdydjYrUVZDc2NZUFQxeHNyRE1sbi92a0xsejlmVEJUczhPCitIMzcyN2QvNys5Y2RIbjc1bFhkZWZRWit4WjU3QXk0SWkzd0hQbWpUZmRVeGVOMSsvMTJJWVZRQlRraWhjZ1ZDQ09KeFpZM1c0WURNCitCZkpaaWlxdWVOY3dsSldvWEhiZmhFRmpqVGJlaUdPT091N0lZNDgrL2tqak55L0NDSnhaZkxDSVpKSXJCb0lja2ZBNUdHS1VIa2s0CitucE9sV1poaGxscFNOYVNWcFgwb1paZ21OZW5sZFZDS0dTYVZaY3FHNVpadS9yZGhsV3YrQlNhYVVTWkk0cHpBbldsbmlHcnFhVm1iCitidzdhWFp5QVdsWm5ueERpZWVqK25qSUpOQTg5a2s1S2FhV1dYb3BwcHBwdXltbW5rdmJSWmFOblpaZk5GNmFlaW1xcXFxN0thcXV1Cit2Z3BycktabUU2cW9XWmtsUUNtZTdzcHJyNzUyT2crWnRsckczRHgzSEl0c3Nzb3V5Mnl6emo0TGJiVFNIa3RNcmNNQ2xaMFdWV3pMCitiYmZlZmd0dXVPS09TMjY1NW02cmhiWFgrb1FySWRPK0MyKzg4a29iN0lqckV2dG9jNHBHK2VlOXMxWEhINkVDNDJhb3YxZ2x1cStCCitqQnJzRjU4Skc5Z3Z3ejRKT25ERkdxb3JzVVFJUDZ6ZXdobHI1VERINmtYOE1Vc1VXNHd5VXdXWDNOTEdJa1BuTWN0QU1YZEFPemJmCitqSFBPT3UvTWM4OCsvd3gwMERiUGdiSE1nVlVIaHh4S0w4MTAwMDQvRFhYVVVrOU5kZFZLdzFIK3ROSG1rY2dBRkVKL0RYYllZZ2NkCittcjFhcTVYdmZDK25SL0xaRHAyY2N0eGM5dWEyeGlRT3QzYkh3dGE5VXNoNUc5YzIzd3JCTFhmS0t3dk9rTXQvc3hZejRoSDV2VGhyCitnVHRPZDIyRlg4N0U0WlFqcEhqa1lqVytPVXhwZXc3ZDVKUVRqdm5BbW9mZTN0M29rVjRjNkt3cmRLS1N0dCtPbDR1Vno3NDdZWkg5CitEbnp3d2o4MjJlNjhHNGw3OHNyRHhhVFp2RE1FT2V6MlpjMDM2cWtUdW5yb25VdVBrK3pQQ3hROTl6aVo3cmoxMTcrWi9lYmJpMStUCis5OStIejM1TjVDTnUvdmxicGsvNSt2R1A1UDd6OE84L2t2a0pybjcyeXhMK0hLYy9BSUtrZjd4anpqa0dBTUVJU25DQ0ZLeWdCUytJCit3UXhxY0lNUWJBWDE2cGIrSFhOMFlZUWtMS0VKVDRqQ0ZLcHdoU3hzb1F0SGFJNFB1ZzB6enVDZ0RXK0l3eHh1OEJ4Nys5NUIvcWRBCitrQWl3ZWdBcklNb09pTGdFQnJFakRKd2RFSmZZa1NHQ3NJaEdyQmdTQmFkRUtHcWtpYXg3b2hZMUlrVzNFYkNLY0pMaDJiTDRSUzZHCitybGkvYXFNYjM3Z3BVQmx2ZHFTU2xSM3ZpTWM4eG9wV2MyUWRyblFGeDBBS3NvMzFhcDBQRjhJY1JFaGhrWXhzcENNZkNjbElTbktTCitsS3lrSlJkcEF6TnFMVHZYT0pjblB3bktVSnJyR3BvMEdxNm9jY2xVcW5LVnJMUWtJbnA0U0M5K1VUcWxsTmtZeWRpZksvSU5qVnBVCis0K1prK2NVd251Mld1UFNPTHV2R1N5ajZrbkxBMUtJd04wbkZZcUt2bGl4TDVoS1g2VGorQjJwZ205enNwamUvQ2M1d2luT2M1Q3luCitPYmZwd1Q2R0xqdTZhSUE3M3duUGVNcHpudlNzcHozdmljOTh1bE1YMUN3WkRjOEowSUFLZEtEbTVLSHpEdm5EZkMyQUhBeHRxRU1mCitDdEdJU25TaUZLMm9SUy9LMEJiMDgyUFp5VVVzUGdyU2tJcDBwQ1F0cVVsUGl0S1VxdlNqdWRob3hvU3pDb3pLZEtZMHJlbEZGd0JMCitIekpub1RidHFVOS9TbEdOcW5OekhWMnBVWStLMUtTcXRLVkR6ZC9kWWdyVXFFcTFwemc5S0VJYnBOQ3BhbldyRmhXcWVIeFlWS1dLCitkYXhrUFNsVHYvbzltSEoxcld4dGFGVU5lZFdFSG9TbmJhM3JWTDBxSU5hRnRheDg3YXRTejVwWDdUM1Zyb1NONmxzVmhGRG0rTUVOCitqRzJzWXg4TDJjaitTbmF5bEsyc1pTL0xXQys0VkdMWmlVSXpQZ3ZhMElwMnRLUXRyV2xQaTlyVXF2YXpVZGdzdzR5RTJkaktkcmEwCit4YXdmY3ZxK3JCWjJ0emJGSzRmMFdoMlArblc0eEVVcFlIOHJXSXRBbGJmTXhlaGg4M1RWblRaM3VsMTFyY0gyV3R6c2F2ZTRjbExmCitZS2tMM29nK042NXlGUWhkdzR0ZWN2aTJ1NmNMcm5iZm0xM3UrbEN0NlUzdmVNbUwxYm5XTjczckJhdDc0UXZndnNvM3JkL2RMM2p2CitTMTdtOEVJY0RHNndneDhNNFFoTGVNSVVyckNGTDh6Z1QxalhYOWxSd1NRK0RPSVFpM2pFSkM2eGlVK000aFNyK01NcTJQQzlNTE1DCitETXQ0eGpTdThZVjVnVnYvNmRiQTFPM3Y5N0FiNENBbmRjRFBveStQcDR2Z3VFcis5OGpUOWZIemdDemtLQy9WeGVzeU1wTjVtK1RvCis3dmpLdTNVeTc2QXM1VENYbE1qSEt6Q1hDNXZseE9hTEFEcG9zNXZmRE9jNHkzbk9kSzZ6bmUrTTV6WWJnTXJYeW80UXFBRG9RQXQ2CiswSVF1dEtFUGplaEVLM3JSZ0JZQ240ZUZLeHJrZWRLVXJyU2w4VXlBSERjd1g2QlloYWMvRGVwUWkzclVwQzYxcVUrTjZsUjcyZ2lQCit0bFYySWhDS1dNdDYxclN1dGExdmpldGM2M3JYdkk1MUJGb3RLbHhaUU5YRUxyYXhqNTFxVUdqYWlWcytzMTI5VE1mL2lubmFZd1oyCitvNnpzN0xxbU9aYk56alpib1EzY3F3aVgydVFPS1psbmgyMXZyM1hiT3UyMnVyY0s3blZLdTl6bFByY2Z6Znh1cnJJN3R3ZTVoU2YrCitEZkNBQzN6KzRBUXZ1TUVQanZDRUsvemZ4YkQyb2JJRGhsZElmT0lVcjdqRkw0N3hqR3Q4NHh6dnVNVEI0SEJBWVNZQkN5KzV5VStPCitjb1hmWXRsZGRIZStwUnB2b3M2YjN0UzJkM0s3c3R5WGIzWGZPdGF2enJrYTgvYUttK2IwdHJsM2xmdHpmYk44alM1UGVrK0RYcjZaCitFejNNUm5jcTBwMCtWWjV2MnVkWWp5clU2U2YxcVVlNTZnakVkOWVwdXZSZjVzdmZLVys3Mjk5KzhJWTNOZXBYY1FBZzdvNzN2T3Q5Cis3M3p2dTkvL0R2akFDLzd1RGdpNW5rWU85OFFyM3UwcnQ2cWF1WDUybjM1OWdHRVhlNURKbmtTelI1Nm1XbWMyNURkZjA4a1RjZWlXCitGelBtc2FoNTBEczM3Y3hzdXVvckt2b3BrcjcwVWo3OUxsUC8rb3AydnVYK0IrazBzbjhQL09DYm10VnpCL3RWMU5DRzVDdC8rY3h2Cit2dk9mRC8zb1MzLzYxRSsrR2d3L0oyRUxmL3ZjQjc2eUhjL3RnN0Q1MHVRdnYvbnJ2T2ZpVS80cVF1aTErOThQLy9qejJ0SHF2LzFCCitCQ0RwOCt0Ly8rVFBOUGpiL1htNWQxR3hKMGFWUjN2dlpYdkloSHNDS0ZHN3gzUUJ5SUJCaFgxckFtWUhpSUFUV0NicEZvRVQ1WUJxCitCNEViR0ZFRU9Fd0dhSUhGbFlBenRJQWc2RmFzbDAzNVVnOWVBSU14S0lNelNJTTFhSU0zaUlNNXFJTTdDSU9KZ0lGZWtoM3JFQUJECitTSVJGYUlSSGlJUkpxSVJMeUlSTjZJUkR1QTQvYUNXWU1RRThhSVZYaUlWWnVJUDF3SUtJczJRcUtJSDFKM3NITVc0bENHQW5lRVlwCitDSWIrSGRoNkh3aUdEU1dDMERSN1pnaGZhS2cxR3ZpR0svaC8vR1plZVRoUmNXZzBGVWlIdzJXSHBxU0dLc2lHTGVpR2VRaUl0a1NDCitnOGhYaFNnemVPaUhpZWlGK2JJRjlxQ0ptOGlKbmVpSm53aUtvU2lLbzBpS3BhaUpnaUNGVHBJZHJwQUNyZWlLcndpTHNTaUxzMGlMCit0V2lMdDRpTHJlZ0txVWdrWmlFR3BnaU13U2lNdzJpS1c5Q0Znc01jWDRaY01zZGVkRGRmMElWdTBCaCtQN2FNUXVkZnpaaDVoNFJZCiswL2hrMWVpTTFJaU5xS2VOMHFoVHZVQUM1NGlPNmFpTzY4aU83ZWlPN3dpUDhTaVA3emdLM2doMm96Q1ArYWlQKzhpUC9YaU85UmlPCit0K2VQQTBtUUJhbVB2VUNPN3dNQUM4bVFEZW1RRHdtUkVTbVJFMGtva1JWcGtSWVprRk4wa1J2SmtSM3BrUi9wa0JtSmdpQkpraVZwCitraDZKWHltcGtpdkprbTRURUFBNwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL252MTJtdC5naWYuYjY0IGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL252MTJtdC5naWYuYjY0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4M2E3YzgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvbnYxMm10LmdpZi5iNjQKQEAgLTAsMCArMSwzNyBAQAorUjBsR09EbGhGZ0ZuQU1abkFBQUFBQVlDQWdBQVNBd0ZCUUFBZEVnQUFDUU9Ea2dBU0NvUUVFZ0FkSFFBQURBVEVqVVZGSFFBU0RzWAorRjNRQWRFMGVIVk1oSUFCSVNBQkluRWhJQUlNME1vazJOSTg0Tms5UFQ1bzlPNXhJQUhSSW5GbFpXYXhFUWJoSlJnQjB2NzVMU0xoUQorVGJSVFVjQlJUckJYVmF0Y1dzSldWS2RmWFc5dmI2VmhYMGgwdjhSY1daaHBhSkp1YnBCd2I4WmlYOFppWUk1emM0dDFkWWQ0ZU1obgorWmI5MEFJTjhmSDkvZjhwcmFjcHRhOHR0YXN4emNNNTFkTTUyZE01M2RjOTRka2ljMzlGK2ZOT0VncG1abWRXSmg5ZVBqZGlUa3QrYworU051YW1kMmdudDZsbzNTLy81eS9uT0NxcWVLd3IrUzF0T2E3dXYrL2RPakJ3T3JHeHV6S3llM0t5dXpNeTV6Zi83L2ZuTy9TMGZIWAorMS8vZm5QUGQzZlRlM3ZYajR2Zm82UG51N3IvLy8vdjA5Ti8vLy8zNStmLy92Ly8vMy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL3lIKworRkU1V01USk5WQ0J0WlcxdmNua2diR0Y1YjNWMEFDd0FBQUFBRmdGbkFBQUgvb0JuZ29PRWhZYUhpSW1LaTR5TmpvK1FrWktUbEpXVworbDVpWm1wdWNuWjZmb0tHaW82U2xwcWVvcWFxcnJLMnVyN0N4c3JPMHRiYTN1TG02dTd5OXZyL0F3Y0xEeE1YR21rTTN5c3ZNemM3UAorME5IUzBDalQxdGZZMTlYWjNOM1kyOTdoNHN4RGxRRGo2T0xuNmV6WjYrM3cwdS94OU0wQTVyLzN2dnE5L0x6K2tRRHFFcGlMSUM2RAordHhBeVVsaUxJUzJIc3lES2tuaUlJaXlMcnpDNjB0aUtveUNQcTBDcUVwbUtKQ3FRSmsrbE5MV3lWRXRTS1BQSjNEZHowc3RSTjBYbAorRExVVFZFeWFRUHZWbE5UelUxRlBSenNsNWZSVGFOQi9Rd05HSFRpMUlMNm51NVp1MHFxcEtWU3NWTUUrNHBxSkxDYXpsOUJhOG9xcAorakFJQS9nVENJT1hrVnNBVm81Mk9BQUJnVjZrbU14cjJDZ2JpbDlMTEdoL09JSjZyNlFnQkxBZnVNbTQ4WVl6UFQxc2lGN2E1cVV5RAordTFIaWJ0YVVXZkxvUzU1TlQrYTArRFNrbHFYUHhLNUVKa3VobTdOZFY4cE1ZVzlpM1lKc1Q4cTk5V3FtMk1Rbi9jaWhaUkJ1emFzdgorUmVucmRnbndNOHVGUXpwU09mcnJUY2loVzVLeW9naVlNODlWRjljVVdxN2kzK3NSVFZsQjVMeWo2bmdOZC81OHBuMG1NVW1ZNEVSNgorK1IybkdXQ0VNYlVJR1FFMlFVWWozRm5tM1ZpYklQZ2VKMTc4a0VGejRJbW40RjhhRUpiY1dZMThFY1FMVml6aVZvSVRPdkxTRmdYQQorNVI0aVZ2eGc0NDA0NW9pakJ5QVUwUU1JUUFZcHBKQXdQSGhJRklMeC9xVWVpZURGQ0lCMWlnakJnNDVVNG5oQmxWU2FBRUlRWWlUaQorMkl6WExiVEtGMW1VYWVhWmFKcjVSQWM1YUtlSUZTdHcwUkVyVmVoQVJacDRtcmxBbm1sQ3NjSUxVOHlwM3k1aUlMRUNCSTdBS2FlZworcTNEeFE1Y3VNZ0xnQ2c1dVpCd3VUcGlBaEJnUUtacVJLNDVDS3FZaWZ0WjMwYVcxV0VGREVGNTh4SWlubjRMNmFDTUlhYkhERGh5ZQorT3FndFlnU1Jvbk9Md0JxcnJLSW1nbEFRVWp5RWFsZzB4amxSTEtFdW90YXlGSW9saUxDNndoS3RzVlZGYWkyMjJXbzdLeUxUN2twVQorVmVDR0syNnhoSlRMbWJsWkdaS3V1dXRXMUMydFVjMUxiNzIzM1R1cVU5YzZtOUF0MndKckxiNjhKRUVHUC9yRzR1NGlCYVBucjdTOAorL29oaGdzUm5OT3h3TGdVL0xKVmg5WVI4UXdzbDNIQ09DeUhJSURJOTg2eU1qZ3drektCTXl5NjNnMUxOOEp6QWdza29xNHd6T3pULworM0UwTUlJaVFnZ00yQ0cwenRiVzg4TVVaREFnYzd5NWFGbEhCQ0RzazRlYkE4TnJ5eFFzWmQ3RG9WN29JUWNRS0JweWhSUk0vak9DRQorVlYzWDhrUVJjS1l0Q0Juc05zUUxGSFNMUFFqZWNMK2JpOWx4QXBDRkVqdU0wQVN6dVh3TnRkU01mNXlMbGtRRUFjSU9TbXpOOVM1TworQTZEeHMzSFBvZ1VJT1NCaFJRQVR5MUxFRS9kOHZxKzN0NUJoaEgwWUE2ekxGRUxvNDdxbG9jTkNoaEMvdW5vd0xSWXpETG5ldmJ2eQorZS9EQzI2NUxFcWdQc250SVRDc1B2Q0VlZjRmVjlDVlZ6OHJ5L3ZZT2p6d2gzS3ZrdlNyZ2grOTg1QUdQRGJyZ3ZsOVBidW9STmV2KworNndqSHp6ejI5TDh2Ny9HOGcxOHIwc2N0OFNrckVlWFR5ZmtpZ2FTOXNJZ1JCQ3dnZS9iU2x6Qk5BakFWL0JBQ0FYZ0lHQW1tT3hvOAorbHliSzhBQzVUR2RKaDRpZ0JBdWhPVWFVWVFPV3FRRUlNVkdiMmpWR0FoNmlSQTBOOWlZT0ZtSkU4UkZoSi9DeklQbjlxeERab1lSLworTkxFY0JOQ2xBVXpJSVNXV3c2Rk8rWEFRUU96S0FvY2p4VUtvVUJFSW1ZK3BJQUVZK0doQ0NoMHdUMk9Ba0VWSmtNYzhFdEdZQi9jQworcFJCS2pqVm1US0VSODVmQ0JobHBFUTJjNFNZR0VLQzNYV0lMQ1FoREd5VUJJQk5FNEJHN08wSUd0Wmc4U2tSSUVWK2syQ0pNL29TaQorUjBnU2hXczVRNGFZWTRrYWlLaUxsdkRDQlVqWkNOY1JNWWgzek1TWEZ1RURIR0FKUzFlNjVZMjB4S1ZHdlBKTnVyVFNqVWJRb3g4TgorNlpoQW9zRWYzWklrQUR4UVhzSFUwUVdJNlNOa0lyTklLbEpBSFNrcHdFdklVRUtLNkFLZnhybW5jWmJKVDRCU3hCWlVJSWdUbHNpYworWnlybkUxYlFKa3dzOGd4a2dpZWFJRURQRmthaUJsQ2FwUjIxZHh3bjdVV1FURXJFcENxbENNQlFFSlJyS2RRS25rQWFWRktpVUIyZworYUVFUENrNVlFcFJzaHlnVjdWd1JBVTNsYlJhWlFzSUErcWMra0JMQ1ZyaUtoYW9zMENwY3FJcFZOcHhhTndOWENHVEpvbGRXeUo1QworZmNWRGwzNVVwMGJsS1ZKanlUNmxOdlVnVy9UZlVwKzZqemtoSmhXcUJxeGZKUSs0UHFkNkZYWlhyZXBVdjhySHNXSzFxMmUxcWxuRgorU2xWYnNLV3Q0d3VyVzZPNnNheEtGYTVnWkNuKzVtclhpaWpOWm44RldtRFRFYlRCdXFNU0hERHNPRENnV0hFd3RySGVlQ3hrdWNHQgorWTFqMnNwak5yR1kzeTluT2V2YXpvQTJ0YUVkTDJ0S2E5clNvVGExcVY4dmExcnIydGJDTnJXeG5TOXZhMnZhMnVNM3RMUUlCQURzPQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL252MTJtdF9leGFtcGxlLmdpZi5iNjQgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvbnYxMm10X2V4YW1wbGUuZ2lmLmI2NApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTEyMDc4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL252MTJtdF9leGFtcGxlLmdpZi5iNjQKQEAgLTAsMCArMSwxMjEgQEAKK1IwbEdPRGxob0FIa0FPZTFBQUFBQUFBQVNBQUFkRWdBQUVnQVNFZ0FkQmdZR0hRQUFCb2FHblFBU0hRQWRDMGVIaWdvS0VJbEpFWW0KK0pTNHVMbHNzS3pZMk5nQklTRkl5TVFCSW5FQkFRRWhCUVVoSUFGQkJRVmhDUWtoSVNGNURRMk5EUW1kRFEzTkVRMDVPVG9OR1JIaEoKK1NKeElBSXRIUlk5SFJYUkluSmRJUmxwYVdwcExTYUpKUnFwSlI3QklSYTVLUjJOZlg3SktSMkJnWUd4ZFhXbGVYbVpmWDMxWldYSmMKK1hIcGFXUUIwdjI5ZFhMWktTSGhiV29sWFZwVlVVNUpWVTU1U1VKaFVVcWRRVHJwTFNLOU9US1JSVDZGU1VMUk5TN2hNU3JWTlNyNUwKK1NMOU1TcjFPUzd4UVRzQlJUcnRUVUw1V1U3bFlWc0pXVkVoMHY3ZGVXNHBxYWI1ZFc4UmNXYmRnWHJaalljWmdYbmQzZDhaaVg4WmkKK1lMOWxZN1JvWnNoblpiOTBBTEp1YkxGd2I4cHJhYkJ6Y2NwdGE3OXdic3R0YXF4NmVjeHpjS3Q4ZTRhR2hyOTNkYzEwY3M1MWRNNTIKK2RJbUppYjk3ZWM1M2RjOTRkcWlFaEtlSGhraWMzOUYrZktlS2lhV1BqOU9FZ3FTU2tiNlBqdFdKaDVxYW1xR2FtcUNjbk5lUGpaK2YKK245aVRrcjZhbXRpVWt0bVZrOStjU0w2ZW5kdWFtYitqbzkyZ25yK3BxZDZsbzdPenM3K3dzSFMvLzdXMXRaeS9uT0NxcWJtNXViKzQKK3VPS3dyK1MxdEwrL3Y5Ky9kT2E3dXYrL2RPakJ3T3JHeHV6S3llM0t5dXpNeTV6Zi83L2ZuTy9TMGQvZm5QSFgxK0RnNFAvZm5QUGQKKzNmVGUzdlhqNHZmbzZMLy92Ky92Ny9udTdyLy8vOS8vdi92MDlOLy8zOS8vLy8zNStmLy92Ly8vMy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8veUgrRVVOeVpXRjBaV1FnZDJsMGFDQkgKK1NVMVFBQ3dBQUFBQW9BSGtBQUFJL2dCckNSeElzS0RCZ3dnVEtseklzS0hEaHhBalNweElzYUxGaXhnemF0eklzYVBIanlCRGloeEoKK3NxVEpreWhUcWx6SnNxWExsekJqeXB4SnM2Yk5temh6NnR6SnM2ZlBuMENEQ2gxS3RLalJvMGlUS2wzS3RLblRwMUNqU3AxS3RhcFYKK2g2UWtXZHJLdGF2WHIyRERpaDBybHBGV3NtalRxa1ZyZHEzYnQyN2J3cDFMMTZ2Y3Vuam4zczNMTnkyalZSVS9NS2hBdUxEaHc0Z1QKK0sxN01lREdDd1kwalM1NGMrVEhseTVndlc4N011ZlBoelo1RGN3WXR1clJrQkdrcXZnQUVkUFZQMTY5Wis0UTlXM1pQMmhKeDg5U3QKK2szZHYyN3VCQjQrdFd2aE8zemlSSnplZVUvbE41eldoSzVST2s3cE02OWVaTDIrdC9YbDNodGhqL29aL09aNzg5K2puMFJPbldONWwKK2U1YnY0YWVmR1g5bC9aVHg3K09mbjUzNyt0ci81Y1pmZndBR2VOeUE0aUZvWG5IK0ZlamdjQWIreG1DRXpTbTQ0SU1RM21iaFFQcWgKKzFLRkpINEs0b1h3TmFqZ2hoaEpTdUoySzNwMW9Jb29wdmdqamloT0ZXSktOSStHWTQ0ajI4ZGdqaStENXFKS09JUkZacEpBZUlwa2sKK2tBdlpPTXNCQUFqUXlrZE9IaERBSjFRcVNWQWhBQUJ3cFVjZjBpSkNsMlRTMFpHTm1aRHBTSlljcGVrbGxtZnlhS01YTnRSQ1owYXYKK2pFSlFpSVVJQUFvQmNNYkpVU0VVeEhKa1FhK3dnbEVwZ0dLVUo0ZGExdkxrbW4xT2laRXNvVUM2VVNrRHJKbUpsSUt5Ritrc0NXRDUKK3FhVVd5ZEpGSGFnSWhDT2ovb0Z5RkNLcHNZSXAzQ1pQUkNLTFJYZGV1bXFyczVaYXk2a2F4VEdHbmlFU1MydW9OVVlLYXkzUFpoUUoKK0ZZbkk4bXFqdG01S3dBVmQxcGx0UWFuZ2tZVW5GRVVyTGJVdFJHcW5BS29jc09aR21sRHhSd3lSWnZMbHBNd0txQzJXNW1MRXloNVUKK3pLQXV0TmptZTVHOVdPSnI4RUNlckpxS1JJUWF1dEcvUnNqUmtSY0FGTnJSSzRrVVlRWkhHSHQ1d2JzYjVlZHNvLzFtRkVvUVZyUzYKK0w1c2FFV3VudDdKK04yMjFEeW5jVVE1T3NKclJrMlo2QVdwSE4xUnhiRWM2YTJUeVJzdktqSkFuY1VRdDlkUlVULzNERVVnY29mWFcKK1hIYzlDRU1wSzMweWxtS2FhUkFlYkZTdDl0by9WTEcyMUYwY1FZVW1Ea1hNRU5SdnMxM0YvaEZMWE5IMTMxd3ZncEN5N3Q2ZHQ5cHQKK0wzSEVIMjBBRHJnV3V5cmt0Tmd1WGxUMnpBdWxFc3JtbkhmdWVlYzZLTkVGdVF0NVFvVXBZQmRjODBhWGgxMUxKMlZ3OHZuc3MrZGcKK0IrMmNIM0lFSGc4ekJIUkRtdU5PZXc1bVBERTZSZ2dUWE90QndRdnZlUTVvVURGR3BuZWZ2dENUTkpjc3A3cWNSb21xUnE4UTRuRkQKK3BxTXVPWmx2TG14Ujl3Q1FiSkFwY2J6U2JFS29HRXQ5UTVWKzlJb1BTbEN5RVpkZGNoLzRkc0NFU2ppa2ZBbDVVcmRnTmorZVVPSUoKK2g1QkJlaEI0b1pUQVQzNFI4YzByRHZFRUE4YmtnVHZvZzA5QUtFTHlXYThsUzlOSnczd0dIUXBXMElMeHk2QnhIbmdJREw1a2hhZ3cKK0VrZHdTQjBYa2toVS9qcEJ4UmhJVnd2bitOQTlBNFBJQlNHaUcwejRMQ1pDSkowT3dWY0hLVTd3aEVpczNJRVNjc1FzdG1TSkRwbWkKKytpcFVPaXg2c1lFejZ1SVpXUUxHSURGSlBWdzA0eHBsV0NLQ3FIR09LMm5qZEpKNEtCYmQ4VWRBak5BZlVjaEhpZWdSSVdKY25Zb0cKK09hVHQxYkVXalB3aFRBNXBrRVJxNzVFQ2llUit0QmdqU01xUlBvV2NDQ1gzRk1wdm9VaVRtd3lrZzFBSlNKbU0wbFdsSENPTk12bkoKK0JISHlKdFdDRFN0YjZjb1lIc1NTbFBzSkQveGd4MXJhVXBVNmVjVVRpc2lhWGZLeWx6WWs1UnRuOG9vaTJNYVpTMEptVGphQkIyWmkKK3M1RTNNY1VhZWlmTkdkMWtFME9RelRkUEVwOFRZS0V2OEJ5TEd2UmdDUTFJb1FtSy9vaW5QcitpZ1hmdUU1NklPTUlVM2lDSVNXeWwKK24vOU02RUg5cWRCOXFpRUU3elFFUGhzS1R3M3dvU0lhZ0l4cE5xb1lGbUNnQWc1WVFRWTRTdExFR0VDakpUVU5EbzVBQWhNQUlRVWcKK2FBQktVMXJTazlMMHBpeFlBQU00NElLUjNwU2pCa2lOTm0rU2lpeEEwZ2gzbUNaTDhBQXcxSTBpRWo5SWd2OWt0Sk9pdm1BT3hvUWoKK0duTlNpVCtZamdheWtVVTBXNFFUVEhqMWhDL3d3MWpKMkpPdTFvQUo1cXVGV05tNlZad3c5WFF2c01NaXpyQ0VTR3dSSjBYMUpPcUEKK21SSENYb1NwU0sxRktQYmFWN3JxYXlkUE9NSWU2bkNFS0N6aWZwMjBTUlllVmo3RFhzU3pGWWxzRDZ4d2hETmM5cTkxdGNrb2pqQ0cKK1EzZ2lYVXBsL3NrZlBQalZXQ3B5SjZzZHd3N21FTGtNUFJZbnNnaUVvbUFaMjVWd2syR0pOZWRNZ3FzbzBONnlJYzUxaUN6d1FFUm0KK0ZsY2x5aVRJVytPS1d1QlNsN2pLYlpKdEtUTGQ2bG8zdkREQm1hdXd5bDNIMnFTOG1rSnZRcUs3RVBnV2hMNi8xZEE2czNrVCs0S1gKK3FuU3NpWC9MQ2VBdDdsZEUzalV2ZmdPYzJwY01tTUMraGRDQlNiSmdoRHo0dkFWK1NJVUpjdUg0WnBpdUV4YkpoZ3ZTNFJGRDE1RXkKKzZiQ0hJOXpkRUlQRXhBSlJNWXpGKzl5VXFIakYzWTJ3aTAwWmt4dlBlSTgxUHNtTmNaelpIQXZXSmlZZThvL25pK0tZbGVraFF5YXkKK1FCSWxFVGQ5Q1h6SUdwaVlya3lSUjFXU09jNWtYOFlrZGttTVBJbkxDaHhhL24yL0MyU0VZUFo2VmdyVW1aY1g1RGIvVEFGVFNoNUQKK29pemxXdUJLVnprcmdhRzhvTEdNcUtvT054aFlJU1NnT29rYzJtVjkzcVhyZ21tUlB2MHBVSGZxbFVMNHJCejdNY1RTMkFJMW5ZZXEKK1lUNG16Y0pzUG5GQ3dqV3VLcXRaV2tZUVEyL05uQUJJTkhvaU4rdXRjbGc1NmNKcUtWcE5lN1ZCK0l6aGcyeUNDbnNZcmtMNjFldjgKK01wZ2p6WlpycWxXdGtCV1NreUZpeXA1R1lzQUZLbXhDSTRXZ1E3UWQ4aTl2Ly9jZ3FCU3pBSDJ0a1dnOXE5ZkVMdlpCWkpHSVhNM2EKK0lNeStkWjJaL0JGTm85cThibVJJcmhmaXBrTFhMQlMvdWtncEN0Q0tjVDhFNGF4cVlWWVJVZ2d1VTFyaDJIcTN2cVVOY0g0ekpCVjEKK2FEVkMvdkk5NmdhSE1ZbDJVd2djd25BNHhMbXQ1WEdJMjl6d1ovR253VnhxYllzYTFod0hPTUVaeEF0bW1qVGViajQxdmhHQjUzL3oKK3VVTk9qWkVQdVJ0bEcxODUwZU9RODV0SHRnNXJWUjVCSEg3eWZVTWtmd3M1aGZPR2Q3dXhoMEozdkdzSTB3M1NQTFBiTGhRUFBCNUYKK0ZJZytzNEhMN0orTGV3MU1YYmpiWWh4T3dmNGVRY1NPOTgyOTNleVlvRUlXdm4wUWtwZlo1QlFoTkpsNWpKRDZUVzhocFlDQ1FQUmMKK3NqNFE0Z2xUelFqWEdSSSswTXViVis4QysrUC9McERMK2Z1ejZlRVlGUUE5Y3RXTlB1Q1FsNGlZeHl6TFdteXdndzBSVTVkcW5wSFEKKzFSRGFHNDhJRFRFWUl2WVpmUFVVY2RQdytUVUE3MEhmSUlsUGRrS2svdjhtN2hNLzl6Um0wZkpoMGpBaDVBRW5PSVN3a1lzOGtGR2MKKzRReDZPaWI0dFZvUUowTGFKVkZjY2hTL2ZOMFhGcVFPZEFOS1hrY2dIelpMNitkZTdOZDEvVWRJbUlTQUNVaFc4MWNkNDNWeExPYUEKK0ZnaUJ6bmFBR0ZpQkJxaUJTTlprQmZpQkRkaUJEeWlDcEhhQkppaGZCQmlDOVBkc0hMaUJIdGlDTVNpQkF5aC9Md2lES0ppQ054aCsKK0ttaURPMGlEQ3loSkdWaUNNa2lFUU5pRE1KRkNTT2gvTXlpQVFmaE1URFNCRkdpRVIvaURWZGlFQ09GT0ZQVlBDTFdGOGRTRlhsaFIKK0RCV0dlUUdHWkZpR1kzaUdkR0ZSR0RWVFA3VlJOdldHSkJXSGNnaFVibGlIbmtHSGVGZ2FlcmlIZVNoVUVlaUVMRmlFSkppRFZ4aUYKKy9pT0lnNFlvaUlQSWlDNkloVDRJaVVrb2hleTJoT29uaVV4SWhTdG9oWnVJaUU4SVRwK1lTcGJJZ0NkWWlJcG9panJJaVpGWWFvbVkKK2lwaUlSNXE0aWdvNGlrS29pcFBZaW9SSWJiUUloYkY0aTZISVgwTzRpSjNZaTVrb2pMS29pNDA0ak1ib2k3c0lpb0dvaktjWWpia28KK2pZZklpci9JVHBUWWRObG9FVXZtY2NuNFM5dklqZUZZaXRUb2lLOUlpczk0aks1SWpMQzRqTVdJakxiNGp1VUlqZk9vamp4b0VYTTIKK0VOSm5kOXI0TTNHbWo5TTNoUk9SajV1bkp0YzNrUDlZa09sVGlRZnpaSklDSmNJbWpobXhqd0pCa0F3WmpGL25KOWd5QzNnMkxOK1gKK2poU25rWUFuYUhieWZEVVlrcGRXa1lXamVyQ0hFYUltRUp6aS9pa1JDWklId1pGNTlpV1pwbTBTZVJFMjZaR2Y4SklDT1l1c1Z4QnIKK1I1TzF0enlUYzVJSkFXekNrcFJLZVpTYkJ5ckwwbzlNNHk2QkY1UnoxM2UzZDQrUFdDNjN0cFhlT0pRRGtXMVlHUkhtSWpUdHNtNVAKKzJYallranhGMlpVVkFTc2FWM0p3NlpWd0FwWmhXWmRtZVd1dkJ4RmVkbTdyVXpBRk4zazd1U2lxZ3pFbVdaaFRwbXdRY1piRE56SmQKK0ZuK254eXQxTXBjVmdTbDlGbmswZzVlSUJJS0JXU3NwTnhHUEJwaHhlV3NWUjVmV2FKaUFkd0JCTTVOMTlXZjNsanJMODViMWxYQjgKK29qR1dXUkhHa21YL1kzQ2NDWTVyaVcrcXc1SVVrV3RPZDJ1MG1acERTVGhxbVZxczFuRkxlV3RPQ1JFM0Exc1pBWFpYYVJIeC9qSXYKK1dzS1N2OGwvNU5pWUJTTjVHbEZ1QXROdUdhZDVQbm1SbjdsNVgvS2RsNWhKRHVNUUtZTTkvcklIRlpNUjVObDZJaEEwT2prUkhETSsKK0dMR2ZBd0dmOFNtVTBZYytWN0o3aVNrUks5TXlEVWttVnlKOEMwbVZGdUY5V0FKQTdYT1FBekZ3MjZlZ24wQjMvMGtSUFBORTVWSjkKK1pGSW8zZU9hRTFFMFJ4T1hLTm9sRkhBSklNcWVucWdTUXpkMVY1TTFTTWMxWDRPT0pvRTJVMGMxVmZjMk1oZUFHNUdqTjljMmZPTTMKK1BibzFTb2NSU3RweWliTTRqZk9rUndBNXZJaWdKOUYyaFJjNmNsZHRFMGRoMlFnN3NsTjRuWE40dUlOMjE1WVJYdXAyeFJPbUtQR20KK3pnTTkwdk5tVHpPbWZXU1VLeEUrQWxwRzdlV01KL0ZLL2x4SkVKYUhwMzNLUDZHM0U2OUFRQjVVUFlHS2pjR0pFalFrUVpES2pDaEIKK3FIazVaUnowcUM5QlFpUDBCQ0YwUUhvcVlwNXBFK2tuY1pFcXFKbnFTOG9wRU9OSGZyL1NqWFkwcS9PeFk4RkpxN1d3ZjZSWlRLdksKK3FxMmFkWGxwZnpMQnE3cnFlMVhVcXdXQnE3azZqcVhJckMzNVJhNktlL0VvajBlR3FYcTVqdGRLanlXaHFRZGFqK29JcmMzYWdPSWEKK3JTN2hyY29LcnRqcXErYjRxa1pXcnVaNnJ0UGFtZGNvcWVoV3F2YktwN1VJci9FcXI4S2FtZHBLZ3Z3YW5uWkdWUU9ybUMraHFjZjYKK3JUQjRzUHE2c0FUbXNKUHFFWVFLc2VtNmdSS0xrZFNxRTdta1R2aGFpNU0wcndBN2pUWXhUT3lxcmd4TFRjdmtHaGs3L3JFZk1Vb1cKK081azRVVTNYOUxIQStoQmFxSVowSVFoa1VFOVlJRkg1cExOd1lZWkNLeGFLc0FXTndFOXBXTFJyUWJSTXF4YUNnQUwrQkxSUG14WnMKK1NCRVo1WWVoUVFJZVVBRUdNQUU5cGJWNWVJZGlxeGdiY0FRcU1BSWRZQUdFMFlkbGV4bHUrN2FUUVFJUU1CZzg1Vk55S3hsQjViSWwKK3NWbTFzRjNOT0JLUjlRZDRzQVJua0FnNTRLd2FXeE5aQUFPQTBMTGpXbFZHNVFuSjlZMHFjVmRPQlZWU0ZiaGRtZ1ZYWmJOQW1xMHgKKzBWVzFGV1AveXEwdVlWWVVsRmFuVzQwMzRWWndOUkJ6aFlxRmFoT1ltMWVNNVZmczJMbEhGck1XaTFoSnRWaDhwYnNvTzdJeEVWbVQKK1ZWbW5WYTBvNGJlZHBiaWlLeE9pUlZxbWhhaXUvZ3VQcXNWYXJtV2RscXNTczBWTFlGV3ZJNUZidXhXYnRGdXc3eVZjeHR1dU0zRmMKK21WUzV6R3RqNnV1N3A3cGMwMGEveWJSTUF3RzQzYXNTOW9XL0JNc1NEd2JBT2FGZVJjUmUvWXNTL2tYQWl5dkEwM2F4SklzZWtCdkEKK0RseGREQnk5TnZiQUVIeTlMVExCRFZ6Qjl3VzlOL3JCQ3F6Qkc4eStLK0xCSTJ5L0FIZkJLK3hnSm56Q3FIdUVLc3lsTUZGaUl1eXUKK09nekNtK3FPTDFUREczdkRNZXpDTyt5L01ieStNK3lJUUl5K01BeWRNbHU4TWp3U25KYkROb3lBUzB5dktYYkVUeHl3UVl5UUZyZGwKK3FFbHN5RUZsUzVlUVl0YWdEL0VvSFdLUnRRQkFINWtRZnhtZnJKU1BGT3FRL1pxZ1hXSTJGTGxuV3Z6RTFuc1EvbnRzWmFoWnhGMGMKK0VVQXBFSXVXZkJ4WHhiRDVhU0lKazRvTUVZZVdhQzc1eUlpTXhudVdjQWVxU1lkY29KRmN4UkRSa3dnanltOGNZMzM4eEo1MlBSMDUKK3lpUkpvQWo3d25ZNUVLUmlheVVYYjAvOG5BM3hkSU5NbmJGbXZycTNrY0ppRVI3NnhPbkdseU5Ld21Yc1ByUXB4dDl4Yk5xbmRuMFgKK2xZSkh3Y0FwZWdVVGJwTm15MXNNU2ZPNWJCa1hvODBwRWR4bWJrUEpLTndDQU1mTUVPWEdlRVpVcWlsam9GR2N5N2FYZlBFR0hmUm0KK2I3STVsaUtRenJBTXludDVsd3puT3RxOHpRSXh6TUs1UEtmcGF4QjNmNzhNSjI0WnpST3gwS3FhejF1Q3lSanNFSy9YbDdKN3l1c0wKK2NpS1hFTDB5bUdWWnV4TVJMVUNuZFFZaC9uVkRXcVNIYzZSUVNaUVFiVWM2K25JN2g2VkhFS1dRN05CRG8ybFRlbk5HWjlNM2pYbXEKK2s1ejlQQkdoMmNhWXJOSkwrbkl3ZDNYQ2V0UnRYTXFFVE5JTi9aRG9Bd0Q4S0JDRWg2YWhvS2JPdzZZdlRSQkZTYWU0ODNaeDU4UVUKKy9TeVhJeEJrN1R4NjkydkRhZEVYdlJBc1Nad0ZzZFY0NTlYQ2szaUxGNUxUVE5UWU85VVA4YzZmTE5pSDZzMXc0Z1dweDZKTTVIbW0KKzE1NjEwRHFGalJDbDV6L0hLV2VzNlhjVjRjcXViS01HSVh1MDkzTytxWjZjOThxQ3pSQVk2c203N00rLzU2a0dnYUhPUjVnVllYeXQKK1MzQTF5ajdoekJDeHFoK3BiZGVtYlpZeG1qR2lFTnh5N2MrMWtIMk1XUkFNQ2d0alVxRjNmTm9vSEtzdS9sRis1M2NUNllmRTlwaUwKKzdnZC9TVnpOTTBLc01KRi9WRndRdkpxeUhCeXdBSGplVEx5N0lNdmVXM3ErS0Z6SThOM2QyUjNmWEJ6QlBlekRvWHVPN2EzZi9SM1kKKy92M2VVQ3pnOTYzZStUM2Y5VzNmQnE3Z0RJN0ZuSnV2Q2Z6ZkEzNnp4bzNmOUwydUFVN2dDKzdkRWE3aEc0N2hHUzZLeUp6Z0pGN2kKKzFtcmhKbTdlSDM3aUs5Nk9DQTdpQVA3aUxON2dLZTdpQlg3Z0V5N2k4ZXZoTkE3ajhwM2p3TGpqRkM3ak5yNFFPVnUxYnVHMFNENFcKK1NyN2tZdEhrVHE2MFVhNFdVRDdsWEhHMUU1RzFlWnNaY2J2bGpOSGxYcjRZWUI3bWlESG1aSDRZWm43bWJRdUlJKzdqS0Y3akVuN2oKK0Y2N2lQVDdqYzc3ZjdqM2tQeTduL25BZTV5MWU1SDhlejI0ZTZINWU1M1krNkRqTzU0aHU2SGdlNGtGZTFFQU80VUt1NC96TjR4dysKKzZZK2U1NVN1NlpsZTRZU3U1NHArNkl2ZTV6RkwwSXplNkpFdTZlNWQ2a1RzNktyTzZhL3U2YWR1NlgwTzZtOHU2blIrNTRVKzY3YisKKzZac3U2N3BPNjZNKzdNUU82SWwrNjhiTzY3OU81S2krNThqZTdLR2U3TUhlNnc1K0UzRjhyRjYyWkhHTTNkZ2xtYWIrRXRrKzNzNSsKKzdBMnh4NUV0QWxLOWFacmNJUlI1eHJJTlpiWTZrWGJzeHFzdHU1ck03UitheDNXY3g2SzU3a29TeUFhWkt2R09QQTRweUNPOTNoRkIKK3luQ1N5UFdPRU1hSkpBb1B6d1ZOQlNiTGs2djhKVkFkRWNPc0h3cS9kWk45RUE5dlpoY2ZvaXZKL3RnT01TMFZqNDhqSDVQRFl2TEEKK0RwNGFnUyt6L1BFSllaN3FNaWtTTHhDczBBTk13SGorNkFoVGFSSHJMT2h3NWo0YURSRTJ6eEdUa3AwWHNmTTlYNVdPb0N6Qi9Od3YKK244L1lUUE1LOGFBTS9abnFwalIyY085Y3Z5MExaQkVTelQwRkE4OWEvekpvR2RQYytQVW0rcGtQbmR2UWZla1hjU2NMMTNENjF0TlUKK1d0TllpdE0vcDIwSmJSQjYvelk1MTZSQTdmY0NjU2R4enpCREtqVS9iZE9JLy9jVkxkdURuemRYMHplSHJ4Q2FocGp2bmtrcjdUYUcKK0Qva0kwU3NoRXdDUWFhRnRyaEIyYzlLdTA5YkNBNlpvL1JCUXZYYXVYenQyY05ZWFlUY3lvMm0xVHp0djNadGtSdnRjdlRtd2Y1MGEKKzh6dENNODFzemRXMmcvdVYvbWFTZ0QzdTFWNXBVZ2tsZGVjbzR2TXgxeG1SMGI4UU12QUZqMDM5bHFMVy9Wa1JsZjN0anZ3OUdRK2cKKzJROXVROE9jR3ZIOTRWOFJkajJkcVkvdm81K1lCbHFwU2tLZ2lvM0lBQ0dnVlMyQ0JRMGVSRmlRVWhFd3J4SStoT2lGUXF5Q3RFVFEKK3FWV0t3Q2VJSFd0UmVuTElZYTBYZ0R5ZUpDaVJZc0ZaQnpDaTlBanlrQXlUTUR1cUxKZ3BBRWVOSEcxQ1hOanc1ME9jQjF2YUdBcXgKK1pOS0NTNWthTERVQXdGUUFFd24yZkVyUVU1YzZxRWpXekpwUktsVUtvc1phRGJ1MXpnMndXYU5TclJyckxRQkhUTlY2YmRyMjZkeXAKK0V3c0pERnZyN3RmQVl1SDZwVm8zc0ZxMmhmbFdkWFZnS3RMQ0JKMHl2VnhaczBGVVl6emwvdDBjbXJObndxSXJkLzU4TUxQcHdLaEIKK3N3N3RlalZzemJOdDJxWmRHSGZ1ckx0NVAvWDllMmh3NFQrSkYwZDUvS0Z5NUI2Wk4xK3VGM3JTNTlOVlM3ZCtHM3YyazlVTmV1ZGUKK09yejI4Y08zbDA4SW5ydDY2K3padHorUC9ycDhtTytoMjc4Zm43NWwvUjN4Ti8rdnVBQUY3SSsrQVlVN2tEZjNDalNRUWZRU1ZOREIKKzhpRE1qVUxZRnR5dk93bkhzL0RDRGNQcmtMVVFSY013US84K1hBL0ZGRTFVU3NYc1JneXRSQmJUYzNFNkdHT3NNYjhabzlzUklSbDcKK2ZBMUkvb1Q4TGtjQWpUeVN5Q0dCUXhLNUcydHJra0FseFNQeXljcCtGTkpLM2FKRWtNc0lwNlFTU0N6RjlMTENNczJjVXNzdDAzUlIKK3pjRGM3TzFNMnVCa3NSSk1PakZ6OFFRc0xPR3pUei8vQkRSUVFRY2xkRkFOOWl3MFVVVVhUZlJRUmgrRjlGRkhJNlcwMGo4bnRUUlQKK1NqSFZ0Rk5GTmVBakt6Y2lxS0JVVTA5Rk5WVlZWMlcxVlZZZklOVlZXV2VsVlZaWWE4VTFWMXh2MWJWWFgxSGw5VmRoZXcxMldHTm4KK2ZlQVJNSmRsdGxsbm40VTJXbW1ucGJaYWE2L0ZObHR0dCtXMlcyKy9CVGRjY2NjbHQxeHp6MFUzWFhYWFpiZGRkOStGTjE1NTU2VzMKK1hudnZ4VGRmZmZmbHQxOS8vKzAzSUFBNwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3BpcGVsaW5lLnBuZy5iNjQgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvcGlwZWxpbmUucG5nLmI2NApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2Q5YWMwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3BpcGVsaW5lLnBuZy5iNjQKQEAgLTAsMCArMSwyMTMgQEAKK2lWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFsZ0FBQUVjQ0FNQUFBQXNtVG9KQUFBQUFYTlNSMElBcnM0YzZRQUFBd0JRVEZSRkFBRUEKK0VBRUJBd1VCQ2dNQkNBVUtBZ2tNSFFJREN3WVhGUVlEQmdrVkR3Z0ZDQXNIQ2hBU0p3a0RGQTRORWc0VERoQU5IZ3dIRGc4YUV4QUcKK0RCRWpCQlVaRVJNUUNCTlJEeFUwRXhjWkZSZ1ZGUmNnQ1JrekhCY1VEUmRDTlJFTEl4WVRBeDRtTEJVTUVCd2NFaHNpRHh3aEV4c3UKK0RoOFhKUmtRQnlBdERDTVVIeDRiQUNrMERTc2lHU2NzRkNSY0pTVWlHU1pDRGl3cUdDZzFMeVFiSXljcFZoc1BEeTB3TnlRVkVDeEEKK1BTSWZDUzg0QURKQ0VTdFdSaUlVTFN3cEFEZEhDRGtnRXkxL0Jqb3JFamhBRERoWEN6WnZJVE5QVXlzUUR6czhNakl2Q2owNEJUMU8KK1BERW9RakVoTURVM0x6WTlLVGRGVFRNWU56azJHRDZQQUVwZkVVVmpCRXhGQ0VwUEIxQXJLMEZqS0VWWllUc2NkRFlYRzBkNVNrQTUKK0ZFaUpRVU5BT1VSUEFGaENBMVJwUDBaSlZFTXZZVUF5QkZ0UldrWW5EbFIrUUVsZUFGMWprVG9qSGxWMUFHQjRQbE41WVU4N2NVd3MKK1NWUlhBR2FCV1ZKS1VsUlJSVlpsQUcxUFdGTlNCR3Q1QW1xVkFHK05BSE5wSzE3QldsOWlmRnM5S1dtblNHWjBZR0ZmcDFJdUNuV2oKK0FIdUtiV0JYb1ZOQWRHQlBEbmlXQUh1alRXbUxrMTRyQUgrY2gxOVhYMmFSWDJ0OEFJZUxpV2d2QUllZUFJYXFhMjFyT25laGRXMW0KK0FJbXNwV0pZajJ0TFczQzBBSXl2V1hhTkFvNnhiM1o1ZFhaemVudDRXSUtpUW9qQWVuK0NrWDFwY29TV2NZRE9vSDlmcDRFK1k0dXIKK2hvV0NYSXZHYjRtdXQzeHBxWU5ZbllkVU81ckR5WHhkalk2TFlKcWswSVJHYjVhelhabk1qSkdVZ0pXcXBKQjhsNWFVeUpONGtLSzEKK3JaNklZcXpnZTZYaG82R2RuYVdwZ3F5NnlaOXp2YVIwaHF6TWs2ck41Snh4dzZtRjI2bGJxN0MycExUR3dyQ2JzN093dmIrOHpjR2MKKzhycDQyTDJ4c01iWTNMK2p0TWZzejhXMm5NL3l4OGpIME1mQTdNV1U3OGgvM2NySXlOVG80TkxENmRLMXo5YmMxZGJUM05YT3Y5dnIKKy9PS1N3dXI4KytHdzR1VGgwZWY3OHVQVStPUEwzT2p6KytiR3lmSDM2ZXZvLyszYjZ2VDg4dlB3L2ZldTEvdisvL2JiLy9uSy9QblcKKzVmLysvL3JvK2Z2NDkvNy8vLzM3Ly83MS8vMy8vdi84c1plVG5RQUFBQUZpUzBkRUFJZ0ZIVWdBQUFBSmNFaFpjd0FBRlk0QUFCV08KK0FVVFVCRHNBQUFBSGRFbE5SUWZhQ1JRUEFpSkJFRk1MQUFBZ0FFbEVRVlI0MnUyZEQzd1U1YlgzMDBuV3dzNTBzaEE0bHlUR2lrUkUKK1F5MGFVQ2hLdkpacVRRR0JGTnVyVm8wRldxMlZxaEFxMGhjMHQxckF4dExMcHU2MWNVbDZnV3ROZTN2YjdaOUlLbStYcW4ydGtGaWgKK0dtd0ZBOVh3cHcxcy9VT3lDYzk3enZQTTdML3NiamFiWFRMWlBML1BoekE3TzdNN3M4OTN6am5QbWVjNWs4V2twTktnTFBrVFNFbXcKK3BDUllWbFNqcDVuLzMrM3hHR3NPTkh0MnZ4MXQwNFBOVGJ0UDhhVXVqeEF1SHZONlhqSGU3MjFwYm1xTHNwL0gwMjErY3JQNXdjZTgKK1RhOEV2aSt3S01IS0hLa3dqZi92QStELzc3U3JBS0RlZVRSaU8zL3ZjbnpEb1R6WGd5LytDRUtNYlZkdzVkaDl0TUd1YkFmdXVNamYKK0U3SG5mZ0FmL1g5eUpuNkF1cHF2MjA2Zk5mWWRYSHIvQWxvYzk0NEVLN1BCV2c5UXVyVnhsUTNzNzBWcytGbUFkUTBMQVA2QnkxY0EKK0tDVDJBc0JxWEttZTdtRWZhakJyMjVNYVRJamtTalBBMG1Ic1Zuei9HOGpnenlCbmE0TUdIL1V6ZGdIWXQ5WnJNTm92d2Nwa3NONEUKK2VKcGVIYkxCNVBEdGVsVDRML3dQNEZyKzk1TmlyUWEzNGQ4NWNCMWpYM2VBc0dWaGlQUnVSNjQ0V1BqT2FmeGdIWHc5dUQ4YXhML2sKKzMrZ2ozUDR2TGdKMFNyQXlHYXh6b0ZDc2ZwT2JKaDhhSlZNdHpVU01BM0paVHcvQWI4UktZY0QrUnZ1MmVoc0pKSUJ1OWxsRndkVzMKKzBsOE4xQjBDckRsZ3B6MUs0T2ZJa1JxZ1Q0Y09qTmtrV0JrTEZpTTRlalQ0blhqVnJjSC93YjlHNEJVVXdPY1oreENndGtoNzRDaTkKKzlJdTFKaWcvQmpoRGhtekNHVVR6Y2NhS054OWxBcXdTVUFWWTE3S3Z3N1U3UzJ3TG42ZlhSWEN6bjkwUDJkSVZaaHhZSWx4U2lDRTAKK1crOEYxbCtHWURVMGhHOTlQOS9nVnhpRUt4aUd2WVBNb0NNalQyYThmeHlSUWtRdzlIcEpnM0VCR0Ftc3I0UER6OEVheHo0RitVQmYKKytEanRNWjBXSi85WkJ1OFpEbFp3Zlg3ZmpURzB4OWliUFRGOTNENTJVRWRFTGdEOUxYWXcxOXp0ZUE3b25Nd0xBSHVJNzRTQjlRR0cKK2IzNzJES0F2TFFGNHhOLzdGUGxSLzE3Z2pEM0gvQktzekhXRllSYnI2c2lFQTdzTDRKYmdhNHpHMllkMnNDdXFhb0MxSDYzWVMzd0oKK25TVzNSeUZnc1EwY29RTHNObjRLZEQvM2d0Y2F1RzBIT0NJdFZnWUg3OEVZcTRmSFdPRmFETEE2dE1OSGUzU3QwbTBMMytJeGxuKy8KK0JxUDNpYjB4R3VlMkxSUXN0bXUrdlhqejEzbU1aWVJidWJob0Z3N3lYeVJZbWR3ckhNTjdoUi9mZ1ZHU2Ryb3ZWenZFVXB1WFlQaG4KK3dHOSt3SmNPYVREWjNHY09wVS9maUFDTG1iM0NQNW8wbmNlbUNjYW1RWTRFSytQeldEM3pZYXlOWXZjd1lVajBVaUNsZFRmKzl5WFEKKzJSTmxLbCs2QXcyWUxSQ3RVL0QrdUJaZ3hRRHI5aUlrcmF1SWVvMDY3T091OENmczM4RnhnaTkrWG9LVnlXQ3grd0JLRzV0MXREZlUKKzlNRTgxaGx5YnRraTNVNTl3OVhOdU9WTC9yK0lKYnUvNTh5WHdPZ0dkUGQwYVhBdXdYVTM4NGVBZFQ3WXR6WHFQUE8rSHV5YlBSZEEKKzloblc1WURSMnp6NDFudG5KRmlaREJiYmJuZlF2VUk3T0JhRjViRitaZHdlaEFMQ2orNG4ybjlxTERrSy84enhNZFNOamxBLzNVUDQKK3ZSRnFzZjQreGhHNFY4aDNHMHNCKy80cHRKanpCNWx1eUREVjFvdFVWWGQ5dmJHbXBYRnIwOXRkOTZtWGhhNWtUOVliNHBzZmJLeHYKK0VnTWREalp1RTJNVHpQZnJ1LzllWC84SHNhYldlTWNZM2VCdGFIckwrTGlEalZ0M0I3NXYyMjQvazJDTkZMMytEL2tiU0xDa0pGaFMKK0Vpd3BLUW1XbEFSTFNvSWxKU1hCa3BKZ1NVbXdwS1FrV0ZJU0xDa0pscFNVQkV0S2dpVWx3WktTa21CSlNiQ2tKRmhTVWhJc0tRbVcKK2xlUlAyOGY1MC9INUVpekxTbEhFREM5akN1R3hKNmNydG9VN1RrVmp4SnhrdUd1K1hWdk5wOXQwYlM5U0Z1NFJhMSsvUFR0L2MrUisKK3VGTGJmTUpZdE52TWJSazducTM0SkZpWnJQQjVoWWRzb0txcUE5U2pmYm02MVpoa09BZHdHMUQzSVZkMldoSkZHcDRDQis2WHc4SXEKK2tENmowUWJaUjNEM0YvaGU4Q1BqSFQxczNyMEVLOFBCNnJIQkxBUm1ieTdrUm01MzhpNFFZUDJKYWc0ZG13a09La1U2OWdqYnFjRWIKK3JPZGRnRDFzTDhERG9mdThEL0M0LzlnQ3lQSFRyTlZacDNvWGl4cFpqQ0NWWUkwZ3NIeThUaWhqZjFSdCtMZTdwU1d3MlU0YmpCWmcKK2ZhVUVrUkoxUUVUWnRlOFNoZWZEVDNDeHR1a1YxdFhTUW02eUJYZitkN05jMFQ5bzIvZDRTVWpDeWY4aVRKWmdqVEN3bmcyK0ZWS0cKK2phbnFNbjlvM1VnRExPS215MWc4M05yS1E2enp3YzQ5MysvWUZGRktwb0FxSXVrMDMvNWRtb0NQMWcvMDB4S3NqQWVycElXTFl6TUsKK29EVHc5QUNmcWdZMnc3QThyQ0RwSEVFVHpaYitrUGdDZUlwcUF6N0hPRDBQSTJ5WE1mWXBVY1MyZ0dvc0x3ZjdicThHMXpOdXduN0QKK0pGZ1pEMVpBRkJXZFR4VkJjalpIZXpKRktGaFBBZnlRd0xxRHUwTE9HQ3lzbWk4cUhTMEcrRGc2d1I0cUpIS0NWeTRhald0bjBsZWMKK1N6dmZEemN6Q1ZibWcxVlF4V1ZnczJFNm9hWS9IZ2NzUDNGVkt2QjZwR1VEQ0xDdTUzYU1CK2VFMEU5RTN5OW50eGV0NEdoNmEvUUQKK3EzUWk2MlVZeXlSWUl5emR3UHQvTzIvWGcrWDQrb0pGMWJOaEVWL2sxWWdXQ1ZkSVh2R2ZJdXBDUzZYejkvOCt4UUdRT3dkZG9YaDgKK0FCcXYvOEpOZjkvYTJnb1EwaldRWUdVMldIN1cwY2JKNmRMNmxMWU5zVmkzQW56TldIZnd5WFY3V0RDT1p5STRwN3B0UnZXL1hkVmIKK1Q4L0I0UDFUWnRuUmNjRkNXcW9FYTZSWXJDdlVmSFB0NUpoZ2ZUZVE1dXhvYnoxRFZkN0hFbEgwcklxL2NiNXdBeDN5Q0xURGJmNHoKK0l0MWd4UEVsTUFFN21DUXFGUy9CR2lsZ0lSaVhkZUR5VGtvV3NPN1cxaWhndllraGVDdUpQejduQkR1bVVUYnJWNUQzTnZPZFQyVkkKK2oyTzhoUnVkeHovOFlUOTdFWEw5Zm5TRnovblpxNEZucGJBK3o3eVFZR1Z5akxYY0FYYitNSUZGRVhtc0lGaTVnVTZrdjB0RnM2T0sKK2VHc0JmMWlGOWc5eWhMbk16MHZoK3UvbnBkM1ZOL2o3L0VFQnBXY0NZTW5nUGFPbHFDV2hTYXRkODR0VXRlREdIWkY1TEFLTHYreFIKK1RlR0xRL04xZGNabThmYUdFalYvNFZGMGhDb0hhYWFxbk9JcnRZWGl2dVAyTWxCbkJPdkVxNm9FU3lxK1FvYkM5RVI3dnlkeXE1RXEKK0NaYVVCRXRLZ2lVbHdaSktueXFtbFhSTHNLUlNyaEpsQkk1S2xtQ2xYK1VTTEtsMHFGS0NKWlVPMVVxd3BOS2haa1Z0bDJCSnBWenQKK3F0SXN3WkpLdlJTbFVvSWxsUTZ3RkFtV1ZPcWxLa3EzQkVzcTVhcFd5em9rV0ZJcFY0ZWlWRWl3cE5JU1pIVkxzS1JTcmxwRmFaQmcKK1NhVmVvQ2lkRWl5cGxLdGhaR1ljSkZocFY0RlNQZ0lIWlVtdzBxOEt0RmtkRWl5cFZLc2J3VklhZkJJc3FWU3JoTkNxN1pCZ1NhVTgKK2dpZTJ5dHE2SlZoU3FWV1ZTbFpMYmVpVVlFbWxWcDRDaGV4V2Vic0VTeXExNnF6Z1ptdGFod1JMS2cxbVN5bHZsR0JKcFZvdFFMR1cKK1Q0SWxsWEtycFl5QWpLa0VheWdFbVUrV0JHdElORTNKOUFtSEVxd2hJd3NrV0ZLcFY0bWkxRXV3cEZJdkpiTUhBRXF3aGtyTm1lME0KKys0RGw2K3c0KytyczdFblQrUTNSNlNSeXN4bTdodTNENUhRR0MxWjN4N0tjOFJOblgyWElkczFWYWRYVThlYlM3SWsyVytwSGxmamEKK1orUk1uQmc0Q1Z0NnorWXFXK0NIbXpyUk5yNngzOVBwVUpRQlBRakYxMGFuWTM3SE5laytuWWtYbTQyRHA2TjVPNU1IeTllUXM4THQKK0NxcHVmT2lyTkdqdE5hR3YzUE95V2xPSlZXZVZiVzNZQ1V5c1MrL3BUSFdHbmM1Vk9ZZjdPY0tDZ1NTek9tOGNYeE42QXU3eDZUMGIKKzE1SVZvU3k0THRZT0p3bFdzODBaL3NsbkdTeGFZVXVaMWVxdTdYUDBaeGNzMU5KK1RxZE5VYW9TUFoycXlLTS91MkR4Q3ovZmx3UlkKKzNma3JJei81N0lQbHFydW1LalZjZFVSZUpVTUJscXR1YW0zY28weTRzRU5uMzlNNTYyRFJWM29IREZaN1RsK0loZ0FzbDZzbVB4V0QKK0xGdWlRWFQyd1hLNU50cmluVTVWR2JRbGNqcmVpWDAvZVFqQVFodGNOVUN3V2krT3d0Q1FnT1Z5MmdiUGxXZGV0SzhiQ3JCYzduaDMKK2Jyb1ZwVHlCMDltNnhHVVJzRnhyeXdjRTFvR292L25RZ09WeU9nYWRJVnJpc2d4WVNGYjNJSDFoNDFLWFpjQnliYXdjQUZpKzBWRUoKK0dpS3dYTTZpd1hIVk5zOWxJYkNRck5pSFdwRkE5cjA5K3E4MFJHQzVWdFltRGxaQmRJQ0dDaXpYMm5XRFNqUEUrc1dIQ0N5WHN6cm0KK3NiWXFpcWUvODlGY2xnTExOYThsVWJEcVY3cXNCWlpyOW1BQ2VKdmJZbUM1NW5iRXVXRlkwcy9wRk5WWURDeTNMVUd3ZkJlN3JBYVcKK3N5UjVyZzZzZEZrTkxGZHNaK2lvNktlc1EzdU01aDA2c0Z3MXRZbUI5YURUY21DNVZpUTlSYW83eDJVOXNOWWVpSFc0MC9vYjc2ZTcKK0xBZVc2MkpmUW1ERk1saERDWlp6V3JKZ0hWNXBRYkJpbTZ6R2Z1N3FkQysxSUZnMWlVd3l5dktzdENCWXJxdVNCU3ZmWlVXd2xzUzYKK3h0djdpZDV2ckxFZ1dIVVRFd0dyM0cxRnNOWTJKVG1nWWJ3bHdhcXJqVG9FcHJNZHU0VUZGUVd4eDg5b0xndUM1WnAzSUFHd3BycXMKK0NGWk5lWEpnZGF5d0pGaXVyT2lEa3dPS1pkR1dXQktzdFo0RXdGcGlTYkJjU1NaSm05M1dCQ3ZhTGNQMkVMQmk1Ym5XV2hJczk0UEQKK0Y2ejg1TUNxcXJNbVdCZEdNMG1PQUZleHBsVTBiTFFtV0FuNGs2eWwxZ1JyWW5KZ0xiTW9XSE45MGJ1RWhtTDFER3N0Q3RhbEl3NnMKK2l1RUVGdXMzeEZwblViQXVsR0JaR3F3eWc2dVk0emtrV0JLc1pNRHFOTUR5U0xBa1dLa0VpeGNIaVRkeFZZSWx3VW9LckdZQlZyY0UKK1M0S1ZVckJFK0I3N3hxZ0VTNEtWSEZqMDBBckZLOEdTWUtVWUxGL2NFRXVDSmNGS0Vpd2V2bmRMc0NSWXFRYkxxeWh4NXIxSXNDUlkKK1NZS0Y0WHVyQkV1Q2xYcXdLdU9OVFpaZ1NiQ1NCWXZGZS95cUJFdUNsVFJZdFJJc0NWWTZ3R0lTTEFtV0JFdUNKY0dTWUVtd01oR3MKK0pSSXNsRk0zcGh6ck9zUTU0a2VIQ1ZpejlWRmlJMTFmR2U5MDFraUxsVzZ3d09CSmgvellXMTBFd3dVczBBMndJQTVZbjRBVkVpeEwKK2dBVVpCUmErS2NFNjYyQTVVZVo3eHJJVE4zSTZoeWRZRWFmRC95ZXduQktzc3dxVzh4T0EwamZSbXMvUkl0eE05b28wSE1GNmxCOTUKK3FWTzRjK1BNNXZLVkt5UllhUWVMV3lZT1ZvMHVJSUs3WGE1dkdvc1BEVGV3Nkd3RVdGOFZwNk1qVHVLSzRXUkpzTTRTV0tZUXJFa0EKK1pLd3VJWXdFU3hjdTJUUzhZcXlBVnJyY0FKTngzUmFBQ1VaYzlmMVM4b0V5eGpyYllOVUEzR0VFNjU4bnlBcVhPb2RkOEI0QzFoZjAKK3ZHL1R5cS9pLzI1eWlTdGw4RDQwTVZiSWkwSzYwRW16aG0rdmNLN3hvbzVlM0NBODRiMFNyS0VCeTJtOEdJZC92eGdJcm9ZM1dGdDQKK3dQWG81ZnhzN3BWZ25YMndURmRZUTY2UWErTWx3eGdzZElXYlRGY28zbDVUQUxsMTFnSnI0OXhKK1pmZW0rbnBoZ0lSdkY5RVhVV0EKK3EzSHhXd1pZem1FSVZtandqbDFCS3JsMU9ZeXpGbGlYR0IzWGgxSU9WczBOVUxwcG9HRDU0b0sxWmxMK1RjbUJaWWJ5K3NPOGE4ZzEKK3ppVXlXWW1DTlFscUJncFdkMXl3SHIwOC94cG5VbmtzSTkxQU9RWjNnVmlpMVJUSTV6MlVJRmczd05JMGd2VUZnTTlzcXJrSEQ2d3UKK3hXQlI1a2luZGh3UVdOT1VLbDlNc1A3VnlCMGtsWGtYNlo2UUJPa3NjMjJDWUgwWkJnNFdLTlhkTWNINmFqQmxPL0FFS2NkcEZoM2YKK2xvdDBJOFJ5OFVCK1pXSmczYU9uRTZ5NlBPQ1BxWGxVaDl0U0ROWkZVT3o4TkJTNkJ3b1dLb3l0SUZpSTZ0MTRvTmNsQmxZcUZBb1cKK0laZ0VXS2d3dG9KZ29YbjVURTBCZkRJeHNGS2hVTEMrZ0RTbUV5eGRYTGltcTlFTnIxaW42N3hUWGh4WUM2VjFCdWVvbS9pdU9sNXkKK3Q4VUM2OUZSOEREeXFuODdDYkRDMkFxQzlXOTBPUDhHazRZRUxQU2N5WUlWeGxZUXJHOVNCUDVsWFhjT0FWaG85d3JUQ2haNkY3MTQKK1pSaFhTTmJkQkp6UVZkeWFCVnpIcDQzVnBTNnhTYVFERFlLMWxuNnhMYUgyWlVCZ0Jka0tnblVSWEVneGQyN2RrSUIxdDJzUVlBWFoKK0NvSjFBem0zNyt1d2FVakErb3c3cmE2UW1wNzRtT2NNbXE4dlFLNGJGOUg1MTEwQ1k5MnVGYURqWGwrZGgzMlBGV2k5aGRtNmpiYlcKK0g2cUo2UXJYOHIxQ0RlTEVoZ1FVMGhJR1cwR3dkQUtySmhUbXN6dUNOQnlzMmZVSm5JNGFkanJFVmhDc0t3a3MvQlUzRG9rcmRLVVoKK0xJeGtkZE1lclJGbStmdWo0QTQ4MzZ1SUlLSURhZEp1NFpjVmdqYTVUdGk1YzRtOTBqZ3hsZ25XN0NBRlNqS3E2Z01XV0FPc1M1TTYKK25lb2dXSmNTV083TUJRdmJpaWVpNXhGQmhtNUNhdWE2WElheEt1QzkyZUpOTG1NdElpaU0ydXdFd0pvMU9MQ210VnZWWWlVRlZtWG4KK3lMRll3aU5laEU1dkJlVUh1T2FHZ2VXNmgvZHQ5VzhQRUt3K01WWjN2d3FOc1lncTY4UllmY0NhNjB2Z2RDQ2NLdGJIRlE1UmpKVjIKK3NKYUNrV25DQmZlYVlBOGxIQ3llN2RSaFhvZ3JuRndYb0N4R3IxQWZWSy9Rb0NwYXI3RFlaUkd3QmhTOFYzYjI3UlhxUTlZcjdCK3MKK2pzR0I5WDI2Mnk5dURseFdoL1psRnJiVW82VkxuU0ZnMVdGSEcvZmFNZ3JqOWpWODNHVWdlSThIbGlzditUeFdrS3J3UEJiRXltUHAKK0lTT3YrdE9XZ240M0FTTVptVEt3S2p0aTVySDA4L3JKWTlXSnpPN0ZzZTh1elUwMHV6MFFzTXBhQjUxNU44WWlmdHRNVWdIa2hvSVYKK1NFS1FDN29FOUpCMFExeXdSSmJpTnRmQXdaclczaDA5OC83cFdKbDMzWFRpL1lQbGpIL2JtU3MvcFdCVmRzVEl2Rk9PMHJpYkhCdXMKK3VvdjR1WVdsNlBzbTVWTVBWcjNTT0xnWXk4Q21lRlB3UmJFejNCV0t0WVdiQWdsUy9TWlgvMkFsZDY5d1dqaFZDZDRyMUVPenBta0QKK1M5Y0hESmFqc2lQdXZVSzRxcjk3aFY4UVJJVmI2dFNBcGNjRHE3VnYrYmlCQnUvT2tQa2V3UWtmNW45aGE4T1duVkhtdHd4NmRFTjMKK1VxTWJRc0NxeVo5MHp5VFJGZjNpcFB6Wm5HeTBjbHZtVGlwOWlDK2l6U083OXVpVkJjYVlqbnh3M1RQcHdsdE1kQzljRWd1c0NBZDAKK2RrWTNtUGNJTDlkenVTT25reEszbWRkY1daQS85YUVnV0Z2bUZseTR4RURtMFVtem5QM2RoQTcvN2d2N2xvOVRITjBqZlR4V0tGaW0KK3V6U2NmREYvVzd5NDJvekd6RnZTZk15TUdaL1IzZ1ZtWkdBWnNHN2c4ejhDU1VkeGVEUm1Sb3p1ZzNOTnNJenpYY3ZCbWdSNW13WUoKK1Zqa0ZoKzBTckZDdzlFL3k0VmFGYXlsRFY4eHBLdHhJTVIrYTJSbytrL0RMR0RnNzE1aURTT0dtR2d6ZnJ1VzRYYzlYV3dlc09xTGwKK1FtTzgzRmQxS04xWTh6bGk3VnU2ZnE5ejR5UWFKY1BCd3JkbWJkcDRFUjlJUXhIWmVYV0RCS3VXZHp1YVJ6cFlnVTRoZ2tQakJXcU0KKzd1NzNhYVNNRHZTODNHOXlqSndHVE5meFpicmhMcGI1OEN5QTh3U2IxZ0hMbUVFSUdoNnA4eEorZk00cjUyMXkxWHp4WHBjeE5wbkEKK2NuNkNqMTdFVVA5ZUF1dTgvbU9zL3NCcU5lNThqSFN3ekU1aGpSaHo1VFNHWHJub1J4WWpzcmFFZ2VVVS9ieFAwcDlOWm9yQjJNbFMKK1lHRXdkWkhSd1haSERyWmFjemtZWUxtTitZUno0Ync2Qk92ZXdZTmxQaUd2UkxwQzB4V0dkZjRJS21NdWRCaFloZ3BOeUF5d25CWUUKK2l4ejRGM1hJKzNaWTNRYTZIVUpwQ0FPc1FDcHZWRjNNQWNvREE4dDhRbDdnYVFnU3JPZ1dLeHdzcHlGelBvVlZMZGFhdVd2TlZQWmEKK2Q4ZzA1ODhCeGxoaVhyUnBzY3d6U2hGWXRZRzdCaTBTckFCWUdHTk5Eb214K29KMVhVamVNd1NzcXkwR2xyc0F4dktGYnlGWUdHTk4KK0VJSFVCTU1yZmlzUVkxMGlEdDFJZmFZQ3JOYmdYYzVhQ1pZSkZ2WDdKbStpWG1HaEt4S3N1eCtsMGZQWE83ZDhFZkt2RGdQclg4M08KK29xWFNEWVVyK1FDVVVTN1I5YXVod0FyQnl1V25od3dGZTRXdWU0S1Q3Z2NORmd1NWYxNHV3VExCTWdlN0ZyckN3ZUtCdmxHaHhaeW8KK0U3UlNZdlZ0Vm9xeFBnR0JDVG1CUE5iMTV0TGtBb3pUUlI3TGVDdDNVOHJBS2d1QzFUNVN3UXJlSkt3eEswVGlWVDVKNTVscGZKdlcKK0diVWp0MXl1eithWmQ5Qm1HKzhHdDNHdG1hU1hibkxwVmdyZXQrQjU1TTkrU0J6S2xoc2dWOXhPb0NOZDYvcUVQb0dxU05hSnQvUkwKK0h4S1o5NVNBVlJ2dUNlVk02TlJwWkJlM05ZTXNuNXhpTDhGS0pWZ3MxQTlLc0NSWUtRTUxnNnhwWGtXcGwyQkpzRklLVmkwOUgwOVIKK0NpUllFcXlVZ3RWQncyWXFGYVZqMklKVktjRnlXZlhKRk0ySzRobXVZSFdvRWl6TGd1VXowcVBERWF3eVJZSmxXYkJvR2tMMzhBU3IKK1ExSGFKRmlXQmF2QnZBczk3TUFxRC9ab0pWaldBNnROVWFxSEpWZ2ROT05MZ21YZHg4b3Bpam9zd2FKUit5REJzaTVZWnNKaG1JSFYKK3dXOGJTTENzQzViSG1GTXh6TUNxQ0J2K0tzR3lIbGp0eHBTSzRRV1dNRmhoMDR3a1dOWUN5d3l5aGhkWUZVYlpEQW1XZGNFeWdxeGgKK0JWWm5uMGxHRWl6TGdZVkJsbmU0Z1dVWUxFV1ZZRmtYckhhUnlScE9ZSFVHUmxWTHNLd0xGZ1paWlJZR2EzeDA3MjJvTmRaSkxiTW8KK1dMTXpDNndaL1ZRdEk3Q1dXQk9zL0hnR3l4eXczMWNQdXEwSjF2amt3R3EwS0ZqbDhRNjZtbzlQenBwblRiQ214ek5Zc1cvcXRGblUKK1l1VWtOMjZ4YzYwMXdhcVBkOUJlbmcvS21sMW5SYkJxbHZXdHN1YXBDbFRZajNsVHAzT3BOY0dha1J4WTdCcExnclhDeS9xTjNyTmkKK080K2hCR3RsaktFeHRYalFWWTdZMFh1M3pacGd0U1FKbG01SnNLN3FaUEdqOXdvRXk3dlVpbUNOajhHTjZCRjJ4NDVZS3R4V0JHdWkKK0wwbXdxalphRUN4M2Z2eURCc29IWmJIeGRkWURhMk5GOUVOdURZeDhqVGtPY0s0Rndhb3JZTWxxcWdYQld0RWMvNWdyNmVyUFlvMHIKK3JBZlcxSmhHVnVudjJ0ZmMxZ05yYm1mU1lFMnJzUnhZYmxzL3gxeEwzY0lzeG1MeE0zUmdiVndXMDJDVjlOdVJ1dEp5WUxuTFdmS2EKK2FEbXdsbnI3T2VSbXVxbURZTFhNc3hwWVd1d0lxLzlydjk1cE5iQnMzWU1BcTNhanhjQnlsL1YzeUhqOU54QllySHFsdGNDNnFqMkcKKzd5NVhLaEpvQ3NWdExiRG10clBCU0sreEZGanUvaThUbm0vSTRqT3FhcXdFMW9wdDBZKzNKZTZnNUpDNWJUbHVLNEcxb3BFTlRqWkwKK2dUVzF0ZDhEN3FaOEF3ZUw1VHV0QTliS1pUR3ZnM2dUdjBKN2hxUGQxZ0ZyUmZVZ3VXTCs4UllDNjVyZGlmZ01ESVVGV0t4a28xWEEKK1dyb3VObGVKdGxGblZHODRKR0ROYTJDRGxzOW1GYkRjRjcrU3lBRlRJaXZMek1RdHNRUllkZU85TVFOQ3BYSUFUYkhXRW1DNXg3ZXkKK0ZNaW5iYlFFV0hWS1l1Rml1YUlFd0dJdE9SWUFhNjB0UnBxcWFrQmNvWnI2SHZ6WkIydEZUZ2RMaldvbnVvY2NMUGU4R3hQczNsWXEKK1NuZFc4TEpZTjk0NXBHRFZyYzJLWWE3YW9DRE9VSmtZN3ZER3FlNGhCY3U5SXF1TnBVeWRreUpHQzV4dHNOeExzaEx1M2FJWjZNd0sKK1BmZ20yOVNON3FERy85eWRWbTI4SnVURml2SGoyNkpmRUIwbDJCMVVCdTVUT21welp0ZUVmTVBFOUo2TmU2b3I1TVhTOGVNUHM1U3EKK1k1bnRHdWRaUEowbEs0TExkVXRzbHc0Z2FWS3RLQjFaRVVkL2VPdkNTMDFwbDZaWitlYkMzR1ZON1RGU245NENHaWRUbHR4ZDNJN0QKKzYyNjg4bXlkVHNqbkwvTzJkN0xVcStQQUE1ZWV0ZGFaZEtHNWRPTURMZTBEeXZIU1BaMHNabVY1eThJcnBrb05DOVZiR3F6MmFuU0IKK05MU3ZvRTAyMWZCU2c2SzBXUk9zMXVvQ1k2eG9XVU9IYkNnSlZpclVWbFVnTEJXRzdNMlNxdUVvQzhaWUxXWEd1UFlTcFQ0dDhhL1UKK1dWQ1VYdUhRcWtwVitGT3JvYkhkSjV0bldJUFZhU0d3cXZqc2VhVmFRalhjaFMzcHN3eFliZHdIMXN1Z0tnTlVFWHF2Y0lqbEFhcDcKK0pXMVZScWpFT21CNU1Gd3ZsMWhsaUdpcXVqWEFva0V4SHRrZ21RTldwVFhBNmxRS2xHYlpIcG1panNDWWR3c0VlOVd5UFRKR0xZclMKK2FBbXdPaEtjSlNFMVBOUklqejJ4QWxoVjVZcFhOa2ZtcUlySzIxb0FMRi9jaDVoSURUdUJxTjFnaFM2aGpMQXlTRDVSeG1qb0Q2UTIKKzhMaFhxVXlRbDJKM0s0QlZFTy9oT0ZMRFR0VjhZdkhRZzlXdHFPV3lOVEpJb2pqZTBJUFYyVzh4TmFuaHBMWXkvcFNtb1FmTGZGeVUKK1ZNWjR3aGFyZ0ZVcm15UFRQS0VGd0dxak1sMVNHZFFuckxZR1dMN1dWcGx0eUJ5Vkc3TkFzK1JQSVpWYS95TnVvMGl3cEZLcFNoRzYKK0p3Q1dQNEZQQzI3VE05QUQ2WW0rbTE4MlVVcDB0bjlITkZoR1RmdElzRHlxa1FaWFZQRWtudTN6ZFZXYnNibnZJUis3dlVqVkZ1NGoKK0pqN01Va20wNTRZaU5YL1pVYkZubWE2V3JPNjc0MEdiK0lwRCtNa3pkb2lWRzByVS9EdFBpYldBbjNCNnhDTlJGbXdJVWJuaU5meTkKK0hUT1duWXFHejFQbXhvOU5kemhtUEUxTE84dDByV1ExZ2VYZkgvSkRCL3B1cWlHeUx4dW02OFplMkJCMmJlR0pucVNQMmpSWWZjRUMKKzgzeUErbXBkMDRGbU9RQVVIbzNZOEtBT3FtSUQvUTkwemhxUVZOWTdFeHk0dFVZYjM2L2huaHBjSC9uZHZWT0FQeUgxVlR0azQvdGYKK28xWFQrV2NWY3Vwd1VhUEZrUjRFbXczaEFBN1dCZ2YrTVBqTDVMN1VsNnREWUd5OGdGb0w0QnZNLzR3RGYxM2d2LzUrdnVqNFFkZysKK0toaENEaGFiZXpGMks3YWZUYlJmTW1wV3Bwa0RWZm9CYXc3a1BPOWpQWHR6WUhMRWh0K0ZjU2VZYnc1Y2hzdTd3TmJXaW1JdlF1NFIKKzVsdE01M1BjQnQvenM3MmE0M2ZoKysyZkFoeXNyby9Bb202MjEwYnYveGhtZExMOU52V0hqSDBKaW5GUmd4OUtzTUxBZWdiZ0VldzgKK0h6NGY3SDNzeVU0d3dQcC9HanpQMkZPUWQ1UmRBRGY3MmMrMHZMY1ltd24zK3RrTDJxaTNRdmRwNVZvT0UvenNUUTJldzcyMHZEL2oKK1ZubDdtRzhCM0paa0J6K2tNRkI4c0Y3VGRIR0JZRlAvbEVLenFzRFE5TnVuUDBCWkM4amhrRjBtVmw0QnRQTHZOdnQ3N0VDRmZob04KK2NSYXNZNjlXVmYyWnNXTVBWRzFsYkw0S1l6bFlmOVgwZHhneHRZeDE1ZWh2MExtKzNjbFlOaXpqWDc1TWdoVUcxdmxHWTZPOXZ4ci8KK3E2OEtGczZjRG81Y3NmSDIrZGwrUCt0Vm9ZM1JQOGIvL3ROR2RDRmV2MlFmUEZCRnJiaWhxbExFWG0vcW80NzBzR2ErRjI3N0Nyc0wKK3JzUFZ2OVd5MzBzMjFSQVlBQlVmclArQTg1aUp6RTE4WlVTUy9IOWhIUDQ5Qng3WStXQVRJeXlxeGI3L2JZVGs3K2ZBOTFqdlI4amUKK2ZSWkdZM3lnYU0rM2NiQmFoVU5zaFFsbzNFYXpYZFZiVDlEckwwRXBXak9idEZqaFlQMEpIQ2VFMi9zT2pNS2xTZ2lPQ0ZGSzl3VmYKKzRtLytUdzNlUm91RnJ1OU5zbGkvRUpnc2gyc1ord3JrdmVWL2hsc294bUY3T3JpWERmYWdnL29sbzBVMFhrbW9VVkVjTERaWWp1b3EKK1ZMV0R3UG80UEJJZ2FBS2RROFNRdkpPajRCYkdQckJ4YjEzNEZ2c1l0MWhkV2ZDNHNjSFB3UDRHdDNkUHZ5aHNYcHZmUU9xdm9OUDUKK3ZncGowWGdWTG5BQU9PZ3NqK2ZBd3FycFVDeGpMSEJVOFlZQUF1czdrRzEwOERnMnZDNnhxYmZET1VONnNrK3hGMno2c2dkNTNQU0UKKzJIVVZOV0RYR0RqM1E1M2JQR0daVG9YdTlRNGJBMVRHdlplTTE4RFZHbFlocnk5WUFUV1FCZHBxckJjK0wwSVkydHVQb01PMFFmSHUKK1hXU1cvZ1BHWW4vdVpRME0vbDZ3d1NMR1k4SjhIUzQxRDRDRGhUSFlOL2hGbzdFREFMazdXcGFEZzhoN2lyNDZTb1E2OHNBS0NGdXIKK0lraU9nOENLekI2RmdMVWU0RWNpamdjWWkrQThLTjZyb2diMHY0RFJQMlFiVWRvY3ZxSFFVeHBaTDdzZ0tpbXdPc0xuaHZZRlMyMXQKK1FiVXFrV0NON3ZOUko2ZUEvaXpGYkllcDh1d2hqTk5QNWtCaDFlMDZZR0JGOXZVWkpJNWZFeWZScHVXK0V3WVdHak8wVFdYQXdkSi8KK1luckIrMEhiMFhLZnB2OVVnbVUwQkpidDdoVUFBQXZQU1VSQlZBZnI5Z1RCNm1IM1lWZlFUeGZzMk4wdE15SG5SQmhZZ3JkZmkyM2YKK3RJMDZZdTYxM2dHei9BVFc3bVRCb3NBOWRKUksvQmpyaW9Bci9IRWcyZ3JvMkJTdy96b2tqWkFGbTltaE1RNXd6TG9DQXlzOFdyd0sKK2lrK1pmVWhodWtMQUl1d2dlN00yRGwyaDZ1ZGVNWmNkcyttL1lSVGJUWlpnaGNaWVFWZjROOTdUaXdGV0Q0WlNjSXVmK29mMm94eWoKK080S3VrRGZnbnpRMFdHS24rK0JmVEs3dUVuc1pyckNMd3EyQmNsVVdNYXl1ditEOVhBcUg5akdNbmg2SjVLb0ljdmFGNWR5QTBxZ0gKK1d0cllLUDEzd3JwZWIvd2F4NUFobnZFS0JZc2RhMjA5Y1FCbW9WZmtZQjFBc0E2STl3NkFKc0VLQmV0dkdGbWgvM3FlbmVFUlZFeUwKK3RSeDBIbyt2TXMyVXpRemU3NExQaTNoZEpLeTRKL3lsc1R0eTlYaklxbi9tRERoNDcxU1ZhZUdQa293UDFuNGJ1ZUhQMm0vWnpvUHcKK3NQaHFDb3cxMEo5VGNnc1BtdlRmZFhxZjlOTlNEdjdGYVAwYjVoVXhFd3AxeVBmN1E4SHlObnE0S2ZzYTY4MkIzM0NqZUM2RjlQUTkKK2Y4U1FYb0lWbW02WVFobWRYNmpGZTNYNEFZc0oxbnJJRXgyK0p3Uit5OUZNWWRlS1ROd0Y4SHNSd1k0Rm5kdUREd0o5UDF6NVU5T0kKK2tWbjdIeTE3Z0xlQzJxZ0dZL2NBd01JajFWZWY2TDBQSXo1K1U2ZXEyaHNTSXk2c1JsVlJqMUhmd1k0dFFQZDF5SWJvNDlMWDBCemwKK1FDNjlYKzJoY0VyL0RmWU1idzZ6V04rRi9DTnNseTMzSFQrK243K0g0VS8yRGRhVlE1MUxYRndvd1FvRDYwME5GdTVoTDRNT1k2blIKK0c2cXJvb0NGRzQzbHYzbjd1N253dFZOc3UwN3gxQUlvUFlITlJSN3dYUjF1Um90QWVSL3lsaUxxZlRQWDJLc053eTdIRG5ad1NxQlQKK24zRENYVkdtUlZTQzd3Y3NkcDhHcXVwQSs1bS8yUitheDNyZlpuUlpjUE5ldEsrcUNxT1BVT3hOUzZWK3NqK0dxc2dSTHFMcnduQ0cKK0Fpdy9rcWVyRHBWSGFZdHBFUXI5M0ViUzkya25KRmpodDNSZXR1TVB3Mi9FM0hra0lyOFFlTG5BL00zYktJQ2xyU2tXT2E3VEl2K2gKK01aby9SVmMvWGVML0NkbW5UVWNZdUx1em5wb2J4cDBhMEtGV1JudlFVVmJmSkpjQmxpSnVRci8rV0pHaVBkQXlCZkxlQ00xamVSVlQKKzlHcFhtWksvbVRxeFBUdW5Lek9hNkpvNngzeS9xbXVNTXByV3pGRnM3eG41RGhGaTNXZTMzV2tFb3J1bUs4VTd1UDA5OW1RUkxwNGEKKzZWeXhhY0dHRU1taFk5dkxzbTBMbjcvTFFiNndQSHpLWElWNCtSSHpOOGRlK3NGVmV2YU01M2xPOWRnRzNYWW51Yi8xaWtKNW5LY1UKK0JkM2lnK1pIQlBZaWI3UjNmbmIrNXU2QjNJUnVkU2pSeGdBblBHeG01NTJKZjVjL3VhM2tXSmxFOVBwTVMxMTF2SEpzbEVjOHlJRisKK1VvTlFnd0xvQnFPVllwUmdTU1d0UmlwSURDMVIzNU5nU1NXbjdscFI1enBHNVZnSmxsUXlhcTBVUGJPWVR3K1JZRWtOV0czMTRzRTAKKzFYSG03VW13cEFZa1gzTWxVa1VwQmsvYzh1a1NMS21FMWQ1WWFUN3VyN3EvaDBoS3NLVDZWMmVycDdxaUlKQVRyMjd0LzBtK0VpeXAKK2FHcnhOamQ3R211cnF5ckxTeHppT1g5Q2xjMkpQVWRaZ2lVVlRhQkVDRmVVMTdZay9uQnVDWlpVTkJXRU1GVlFVZTFwYVJ2Z1kwa2wKK1dGSlJYU0VmRnQzVzNwSHNZMjRsV0ZKcGtRUkxTb0lsSmNHU2ttQkpTVW13cENSWVVoSXNLYWswZzlWYWIwendxcTNuUTA1N3ZRMWIKK205Nk91dXZMOVh5U29aKzFORzdiN1JjVE83ejFUZWJFcmRjYnQvV3RBSEF3dVBKZzQ5YW00TFFBMzlaNjJSZ1JxcThYMlVtUDBTWUgKK0d1dTNSUytxOE81V3NRVzJSUU51d3R1Q1dpVjJVOVRXRzJvM1dsRHM1ZS8xMWplZVNBZFlFZk1LdDl0cFRxRmFHdVc3anVYd1NZYisKK1k5TlZBSWUyQjQ5cmZ4NXViZU56dkh1WDIyaS84RnFpWW1YaFcrWWkyQUtWTVJlYjgrNmxBbktBR0VnblNzM3NuMEt6Q3RYUmY0aXkKKzVRTFJhdjY5T3BXREtqN1J3OTZmU2EweW1zOTV2cy9HVjRidEVWSXEwciszaU85MUJGdndOV3BCNWZHMGcvV3lCb3VhbWgrenc4VjkKK2RqdzVFemhZdlJkQS9qYlBkQmo5SGsxTUxXM2FZSE04MjBPZ0ZEWTlhYVBxV1NGYUQ3bGJQVE1oMzArVG94MnJteGVJQ2ZXTVYwS1UKK1lNVUY2MzBkeG0xdGJpd0MrOXRuSWpkY3I0bFd3MjB1Ym1vRUdPZEgxT3liUFVVMFB4Vi9kZnRXWER3M2JIYWR1QXVvUWQ0K0twcUYKK2V4WEJ1Tk8waUMyb09YNmZickN1QUY3MStHVXRMNktTS051WkJ3S3MxMnhVMWVHa0RiN0h2c3RyeFB5V2l2eTlwdUhKc2YrZHNTaDAKK24rTTJlQlpKL0JoODd3ejdHRTJPN3JJWjVSME8yU1JZL1lEMUhiQVRHYjFUcURKZm1GNmJhZFlnL1k1cVAySFU4UnRGayt2ZjFhaGcKKzVCaDRpVE8zTDVxbFErUDBQemFhYS8rdUxXOFBld0pvYXZFR1htUXZyV0JsR3pWbW1wcmJPT1dCUXBGZXNEK2ljckE2VzcxaTgycUUKK1pSMWRObFJSOU1lOHRCOTNmM09VMGFmUnJpbWovWDhGbFZ6amk4VFVPWHlETEY0MG1maytrdnVzQkNzK1dCVkdJU052TTlYa0RKMEoKK3JVRHBqYUxWMmx1YWhadHJZenEwTWxHTjlDL2FxS04rY2lFL1lGMTVDdHF0OS9sZjBsTlUyNVlkTnZlaUdxUVBNZGJ6Rjl1b2Q5SU0KKzFxMlF1L2xFeUJrRUF1emRxOThLSzBpS0p1Y25pT0U2c2RrUDBkVDk4TEVpMjhJOTZQZVBVNm1BbjRIK1VtalpVVnhSZklUdDBrUU4KK204WHcrQUVKVmhTd09vTmcvUXJnem1BRUhscTdZZUh6NGFVY1hnQzBXQXZnc2xPaUVzaC9DaUtwR2hZVjlIdVdpa0tLTnYxd2xCNjAKK1lpOVExZVNQOHpKR0grYmsvU0VOWUJsRHZIaXB5SVBaNktKbXJETk95TlBjR3VhbWcyRDF6aVMvZmdVUHFkQXJia2J6UzFYZXdmNGMKK3Z5NzA1M2dkaXRjMEhsTDlHSEx4c3RnQWRrWFRuaE1CVmlscmsyQkZBY3RzQ3NKbU9qYUZ0c3pvU0h1YlBhRmJob0oxdklqczBNa0YKK29Db3dEc0Y1RExKcDlTcGVrbkVCWkcvWHpLSkY2ME9LNloyY1FudnB5VmYwR3hoWTdPQUM2cnc1dE9laTdCb0VxeGVqOEY5VEtPYlkKK3dVNHVCL1NLMmFBL3ozejNVVWpQdXM3Qmp5aEdKOWg3RHN3NHdmYm1JRVBZbDhUdlVlRk92eCt0WGY1cENWYS9ZUFZ1NEQwNVpYV1UKK0VoY2hZQ0ZYbzQ1UVR3OTNkdUFsN2crVWlxU20vcnVPSDJFNHd0NHh3Y0o5eU5Xb2ZVUlVpd0JyZDdyVERlaUJQYmRuTzBCOUxnNVkKK3ZwbWdQbTNVS2NTektjTFRHV1VhTHlxcnZWOER4MHVVSlRtRVRDbFU4SWhnVzNTS3ZmNFIzT3prbUZ3OHBYWUpWbnhYU0wrejk3RTgKK296UlJUTEFPNlpDTnNmb0hPbXoyVTUyeGw5QmlLVUdMUlVYVzdFZEV6dkczV3JhWkRUcFdKS3ArcHRWaWhZUEZqMkh2K2RINkNTWlkKK3ZpbkM1VkZmY2JveVk4OFY4Ti9vRlkyQzd4UjF2YW9CL0pwLzBMRlZEdTJCVjdRSjlQaUFmL0E0Zmh6YUtzZ200d1ZLaFdRcFRoNUwKKzZQQml5RHNSR3l6a2l0ZnZOQUtyNVJoWWhjUllJcStqRzJEZEJYZVlOT1pCRGpkZUlzYjZJTWs2NzRtRGRXRFZGTkU5MkFXMm1HQ2gKK0ZkVkNlN0pkT1hhelY5aWJSVlZ1dThhZytSMGQ3R2U4Q25NcGpxZXpmUjAwQXN0UXBXUXBObGlQbGYxY09MQjRWWk9QNi9RZ0doYW8KK3diMEtjdGlmZ3IxQ3d4VWFkZFhHbUhZSnZlZTRJMGFhbW5xRmY3TFowOXdyeEw3ZW5jWVh4clpZaXlIWGVLYlBYOHZ6M3FGSWF6TEYKKzZXT1BVb1Z1OVExZWJuS0hxUGYrbFJMNk93YzdrR2l4cU1iNHJUQ1pkWGhJOWVCbzlrcVdZb00xblVwck0rcE94N0ZZUmZCUjRTZC8KK29lbEhlTUQvZVFMbzE0RThsZ2plZVdiOWJ3RzdORjJVbjJRc2tNYzZMOTE1clBzQkNtc2JuNXdPS3NWSUVVOEY1MkNkMmFzWjRYNDEKK0ZSRE4zL2FZM2Y0U3o3eHJXNThjQmJQUVFGRVc5QmxlMWY1RjBGYzN6T2VQblZoTWk3ZHJqaDhaYVdRWnZQY0Qxc3NPeUZtM3JXRzUKK2c5ZDVqS2pvSjhBNlF3OWZFQlg5ZXFmZzFnMFhZQngvaGpMdjZ4cEU1djFuMUNQOGlxaHVhMVJUWm1lZU1mZnlrbk9ac1cyVkkvMloKKzk5NE4yZnhlb2ZaOFJCNHJhTEcrWkRveURLcjJaOVA5UHg1djlTN0hxRW1kZFlyNkhzWGNObzArS2xiYVo1R0I2NkViV0pEOXRQbGgKK0VxeitZcXhkT3ZVS0hhSlhHTDBHNmN4Z0RkSmovRjVoRG0rMzlYUmZneXJ1b3lPOG1TZnZQM29xOENnVThpREIyNFlINmJhaDhqUkwKK1BWaHRua2F4ME9qaFNhdmVsbVpQYzF2WUtsT05uaGIrMXhDOTZQVjZkcHNqRmw1dmJxTDlYdmQ0NkthenI4bERIWTREWWlYcElHNGIKK05Pcm9FQ1ZKa1JlNVIvUUt2VWFiSFBCNm1sNDVGYmJLa1BIU2JBcFBCLytwUGE4WUh1NWdjeE1mdk9EMWVHajMxendlRE5OYWdpMXQKK2lNOUdiZkUwcDJWMGc1UVVrMkJKU2JDa0pGaFNVb1BXL3dmcjV0ajh3Z0UrSHdBQUFBQkpSVTVFcmtKZ2dnPT0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9zZWxlY3Rpb24ucG5nLmI2NCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS9zZWxlY3Rpb24ucG5nLmI2NApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTYxODY1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3NlbGVjdGlvbi5wbmcuYjY0CkBAIC0wLDAgKzEsMjA2IEBACitpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFCSXNBQUFIcENBWUFBQUFDaTd5WUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFaaVMwZEVBUDhBCisvd0Qvb0wybmt3QUFBQWx3U0ZsekFBQU94QUFBRHNRQmxTc09Hd0FBQUFkMFNVMUZCOXNMQ0JBaUNMTUdNdEFBQUNBQVNVUkJWSGphCis3ZDNya2RzNEZnWlFhTW9oVEJZN09iUkNWK2ZneVdKeTRQNndKYXZWSWdtU0FJakhPVld1M2JFbFBrQlNBajVkZ3BkcG1xWUFBQUFBCitBQ0dFdnpRQkFBQUFBSGZDSWdBQUFBQWVoRVVBQUFBQVBBaUxBQUFBQUhnUUZnRUFBQUR3SUN3Q0FBQUE0RUZZQkFBQUFNREREMDBBCisyMXd1bDlYWFROTjBhSG5QNzQ5WjM5bzJySzBqUnpzc0xYL3B2VnZlOSs2MVM2OUpkZXkyYm4vc01UeDZUQUFBL2NJVytvVmIrMnRiCiszcCtpendpb0xJSnNIWWU5WCthOTc5dmFlODl1dDZQYjErdHhCd0QwQzN2Wk4wRVJyRk5aQkFjdC9aSnh1VngyVmRnOHYrL29MeUV4Cis2OWo3eGJxMi8xdTJlMHU3NVRoMk1ldmY4eXRWekRrREFPZ1hqdFl2M0xxdVZQMG5RUkhFVVZrRUJUc0p2ZS9yMGhmdTJoZHo3ZTBXCisyN0hRNFFBQTlBdnI3QmNKaWlDZXNBaE8rR0tLL1lJdDhTVitSc2NvTm1pcHBVUGwxaklBUUwvdzNQVWM3WThKaW1BYllSR2M5S1ZZCitZdTZiM09zWU5VVFJ1UUFBOUF2TDlBdFQ5THNFUmJDZE9Zc0FYNzRaT2lWYk8xTTZMUUNBZm1INy9Uem9oY29pcU9oTEsrZVhWNHAxCit4UDR5MWtyRjBYMWJuN2RYQndJQTBDK3NzMTlvYWdBb1IxZ0VKNGo5b3N2NWlQcTk2NWltS1VrNTllaWR3TmMvQUlCK29YN2gvSHBLCit0emVNem0xb1FKSXY3UmEvZU8vN3NPV3h0Z0FBdE4wdjFOK0RkY0lpeVBRRmxQUDFKYlpwVHllaGwxOXExam9RT2hnQWdIN2hPZjNDCitQY3Q5dHozNmM3RE1iV2hRd1BNWFVZa09RNjUxN1AzU2ovMjE2YXhKRWRmV295TUJBT2dYcHVrWDV1cXY3WG0vVzlKZ25zb2lTR3hyCis0RkhpaXl2bE91N3YyMXB1L1BxTHp1dXZPVEh0bG1JWlcvYnorZjFyNjE3N2V3QkF2MUMvOEZ3cWpDQ2VzQWdTZHdLMmRBaDYzZSs1CitmWDhYdUJ4dHQxU2RrWmh5NmRqdDM3dk5PaW9Bb0Y4NFNyOHdWMzl0enpJRVJ2Q2QyOUFnZzdrblE4VCt1blRrMTVtYzY0ajVFbDE3CitLc2JSVzc1aW5ycVI2Z2xqNzlyRUxXc0FnSDVobW43aG1jY2twdDhISTd0TVJqWUFBQUFBL0theUNBQUFBSUFIWVJFQUFBQUFEOElpCitBQUFBQUI2RVJRQUFBQUE4Q0lzQUFBQUFlQkFXQVFBQUFQQWdMQUlBQUFEZ1FWZ0VBQUFBd0lPd0NBQUFBSUFIWVJFQUFBQUFEejgwCitBUUFBcVZ3dUY0MEFBQldicG1uMU5idkRJaDBCQUtER3pnM24wVDhFZ0Q3c0NvdDBCQUFBbUROTlV3ajZpd0JRbFMzZnpJZHVRN3ZkCitibG9iQU1qdWVyMXFoS1o2bzRJaUFHaVpPWXNBQU1qaTB3K0xBSEM2angwL3Vua2FHZ0FBQUFBUHdpSUFBQUFBSG9SRkFBQUFBRHdJCitpd0FBQUFCNEVCWUJBQUFBOE9CcGFBQUFGRGYzWkphNUo2aHRlZjN6YTVlZXlEYjN1cldueHNRdU0vVjdqbXhYN0RyM0hJTVViZmo2CisrcVhqdXJaOTc3WmphMXZ1YVZPQW5xZ3NBZ0NncUtXQitydC8yL3I2czdaL3ozYWVzZjB4KzFmamRnRlFqc29pQUxweWZSbmczSjUrCitGYjcvMiszTkw4WHYvbTFwV2EvdmVYN3QvWFhYTjRPdHVXWHMrZmU1OWMvdDQ1SDJlcmQvTWR1LzlYWDBiNjNxNXpXa1dIcjkvZDgrCitydGZGYXBPWTlieXo5TDdYNWU3WnpxVkttVDJWUDN0czJjYzk2NisxTW1mdUdLa2tBdmhGWlJFQTNYZ09OOTRGTm5NaHpsSlFOTGVzCisxL2ZmWC9mNjJ1ZS9mdzFkM3IzbTlkL25saHU3L3JYMjJydjhMVzIwZC92b1Q4enRZYkVCek5KclM0WU11YmJ6ek5DaWRMcytCelgzCitkYXRzQWppWHNBaUFMcndMZlBZR0UxdVh0YVZLNWwyWU5MZXMyT1h1cmRJNXN2d3RiYVNLaUZkYmc1Q2wxOGY4MjF5MVV1cEFadTkyCisxbmpibHdvYmdMRzVEUTBBWnFTb2Zqa1NuT1N1dnNteGYyZnNCNVNVTXRUNXZOMitMQzgyeE5vemlYYUpOdGh5TzExTUJkSFM3WVVBCis1Q1VzQW1BbzkxdTk3cmRHTGMxamRLUWk1dDA4UWlIOHVTVnJUY3djU2tla1d2N2F2dVRlRDFoekQyVHV3Y09XcXFJUzh3YTlDMDFHCituRC9uZVY5ZlF6UUF5aE1XQVVBbWE1TlZBMjNLRWVMTWhVWkhKNWcrZS85alh5c2NBcWlMT1lzQTZNSzcrWExXNWdXSy9mZG5zWUhQCisydXZXSnR2ZXU5Njl0aTUvYnhzSnpOZ1RET3g1SlAyejF5QW1Oc0M0VDdqOCtpZlhkajZ2czdWamxHc2RRaVNBYzZnc0FxQWJ6N2VZCitQZjlkcW1WdFdkN2NiV2l2RTBMUGJlL3J2ODB0TDFWYjdWbCtUQnZsM2cvYThueDcwZElqN2U5L3YvYjZtS2VyMWJCZmM5dFo2NXc4CitwZHQxYmgxelFkRmFHd053M0dXYXBtbnpteTZYUXgxd0FJQXQ3Z0hUam00TEpUdVd2L3VJMDg0UVlDNDgyUHY2TGZNU3ZYdGMvTmFnCitwTlIreGI3K3lMWWVYWDlNRzY2OVp1bllwTjdtRWVlSkFzWngvNHk3L1A3dm1QNlUyOUFBQUNocTZ5UG05ejZTM243dDM0L2M2NDhKCitaOTdONDlUS3VRRFFPcFZGQUVEMVZCWTEwckdNckN3Q0FNcFJXUVFBQUFEQUljSWlBQUFBQUI0OERRMEFBRHFTY2lKc0FNWWtMQUlBCitnSTRJZ3dBNFNsZ0VBQURBWmg5L1g5LysvZWQvdDhPdmYzN3QzUEtXWGplM3JxM0xUUDJlSTlzVnM5NjE5Njl0NTlyMkxiWDE2ekppCit0K1h6djF2eWR1RTRZVkhwRDlTWnN1RG5YNENPbEE3SExEL0ZlcmFzZTJsWlc3Wmg2L2Erdm42cERkYTI3OTEyckswdlZic0NBRUIxCis0NXFGd2YzSDM5ZE5JY203MTVmWS9yV1FLc1Y3V2o1bWU5M0RuNlZseGdaS25FZFlWUExpWEFnVFBxN1g2QkJoN3JXcGxuL2tQV3Y3CitMaWdCQUlER3h6VXJWVCt2b2NUUzYrLy90aFlzN0ExcGx0NzN1dHc5MjdrVWVpeHQzeG5oV0V5YnpPMTNxZTBWSHRWRFdGVHE0bndLCitjbUtEbmkyQjBOTHk3LzgyRi80c3JXZFBZTFJuZVZ2V1VXdmdOTmZ1QWpJQUFMb1oxMFRjSGhZYndOei9MaVl3U3RwdmYzUGJVNDd0Cit6TDB2NzI3L1dxdnFpamxtRUVJSWYybUNBaCtvSzBIUjBVQmhiZmxiYnVWS3NUMXJ5NHZkaGhSdC9ubTdQZFpkWXIwQUFEQ0NyZUhDCiswdXRqL20wdTNFa2RjdXpkem50UTA5TXhTN0d1ZDIzaUZyUTJxQ3dxZVhGbXJqQlpXdjduN1haNldGTEROZ0FBQUdOTEdlcThWaWx0CituZHo1M2ZLTzdzTVpjMERsUGphQ3BmS0VSVFZmS0JzbXF5NjE3aHIyZGUyMXFlZHVBZ0FBenZNNllmS1d5cFFTOHdhOXE2SXBWVDN6Cit2UHlZcDRwQkxHRVJ1NTVpMXNTWHl0TzJxMm9DQUFBZTQ0TU1JYzVjYURRM0IxS1NzVnpGNGRDN3A2S3RoV2dxaU9vaExLcjVBMnpqCitSTlc1MTEvTHVyWThOUTRBQUVodjY2MU9NWTlSWHh3RFBBVVA5LytPR2p0c0RCK09idWZ6T25NRk9USExuWnZvV2hoRExCTmNsL3hBCitQUmhlcklVa2E3ZGZMUzMzM1ovYTlqL1ZPb1JJQUFDd2Mwd3k4NlN6TC8zdG1hZHZMVTEyL1ByYTJ2WnJ5ejZWM09aM2Y0NGVNd2hCCitaVkdaaS9qcEZxaTVxcUFqMVVKcnk0OTVHbHR1cGJkaGJoMXpRZEZhdXdFQUFMLzcyaStQa1UveCtob2VSYjkzTy9mTWkxUjZJdWV0Cit4eXoxZW1ORFFSTmMxME5ZVk9vaWVRbDBqbm9OTjJLV1h5b28yak1IMGxuYmZLVGR6bTVuQUFBNGJYeXpNSm55WEhWTEMwRkE3ZnNWCitjeHZldTdtQ1dqb0cxRUZZVlBLRFoyR1M1ZGlBWVcwWnRRWVlKWi9ndHJTdWV4czloMjAxdHhzQUFGUTd2dGtZTUd4NS9kSFhIZ2svCithdG12SSs5UE5ZRjBpb3F2R3FyRzJPNHlUZE8wK1UyWFN3Z2hoSnVCTkFCUXdQVjNxTCtqMjBMSmp1WHZQdUw5S1BuUkJXQ2J0VnZFCitoQ3JzT3E5Kzk2TXV2Lzg3cGorbHNnZ0FBS0RGQWVCTHNDQklhSjlqU0MyRVJRQUFBQjBRSGdHcENJdUkrK0pabVpSYm1Ua0FBRlRXCitoOThRSG4xY1B6UVlGUFI1KzZ4Nis0UkZSSjdJTjQwQUFBQTE5ZEdmd3ArWXg2SEhQcjRjUUZnRUFBRFF1TmZ3WnkwOGlua0VPekF1CitZUkVBQUVDallpcUtkdmw1MGJnMDRVamcrWHI3WmU1YncxcTYzVk5ZbFB6Z1h6VUNBUDEzek55ZURKQi9iSkVyQ0FLS0IwV3RFUllCCitBQUNjTldBOUlSQnk2eG5EWDNlQ29sWENvb3dVYmdMUWswa1RBTVFQUmd1RlFJdFBPSHV6RFh1Q29zcy9qaWVWOVVsK0hyZzJUd3FLCitXbnZpb0xBSUFBQmd5NkN2Z2lCb3ovYXBLR0w0YTFkUUZFMVlCQUFBOER5d0szaHJXT29BSjFVMUVYUjNYUXVLTmhFV0FRQUFZd3dXCitHdzZCOXU2Zm9BZ0VSWHNJaXdBQWdMWUhnb1VuaWE0dGdCRVN3Y0wxVVVsUTlIbjdiQ284RWhZQkFBQjFEdkpPZW5SODYwR0xvQWgrCitmNFpVRkJTMVJsZ0VBQUNVSDhSNVpMeDloSnlmTVlLaVE0UkZBQUJBdW9HU0VNait3OW1mUTRLaXc0UkZBQURBK2lCSUNBUzA4RmtsCitLRXBDV0FRQUFDTVByTXdMQlBUeWVTWW9Ta1pZQkFBQVBRNmFoRURBU0o5NWdxS2toRVVBQU5EYW9NZ3RZUUIvUGhNRlJja0ppd0FBCitvSllCanhBSVlOdm5wcUFvQzJFUkFBRGtIbFFJZ1FEeWYrNEppcElSRmdFQXdONEJnM21CQUtvZ0tFcExXQVFBQUsrREFTRVFRRE1FCitSZWtKaXdBQUdJcGJ3Z0Q2SVNqS1ExZ0VBRUFYaEVBQVpQbCtHU3dvQ2tGWUJBQkE3WjEwSVJBQVozMEhEUmdVaFNBc0FnRGdyQTY0CitlWUVBcVBsN2F0Q2dLQVJoRVFBQVIvMTdDU0dFTVAxODZXU0hhOUhORUFJQjcwelROTXkrWGk0WEJ6eVJrWU9pRUlSRkFBQXMrZmY4CitnWWNRQ0lDU1JnK0tRaEFXQVFDTVNRZ0UwSjI1S2lvVlIvRUVSYjhJaXdBQWVuSkdDUFMvNmN0Z1pIcDBzRytPQjBBRlhrTWs0ZEY3CitncUkvaEVVQUFDMDRxeExvZjVPMkI2QjdncUt2aEVVQUFHY1NBZ0ZRMkhPbGtTb2pRZEU3d2lJQWdGeE92Q1VNQUZnbktIcFBXQVFBCitzSlVRQ0lCT2pGeGxKQ2lhSnl3Q0FMZ1RBZ0hBRUFSRnk0UkZBRUQvekFzRUFLdnVWVWE5VnhnSml0WUppNkRtRCt1ZjcvLys4cy82CithOTY5ZHMveVU2eG42MzZ1TFd0dHU5ZTJkYWtkWDVjUnV5MlhmL0syRVRCRENBUUFiSEJXVVBTNjN0b0ppNkJTUzhIRDlETStlSmg3CitiYXJsSDNuUG1lMnk1aDcrTEMwek5sQUNkbmFxL3I1K3YvWnpoME5DSUFEb3RzSklVQlJQV0FRMWZqZy9CU0t4UWMrV1FHaHArZmQvCittd3RKbHRhVE96Q0tiWmU1ZlNvVjZnaVBZS1hEOUJRQ0ZTTUVBb0N4K3grQ29rMkVSVkNadFVCazZlOVRMUC81ZHFyWThDZm1GcXkxCis3WG0rL2V2ZGVuTzNDNUNnTXlRRUFvQyt4aWJUMUVWMWthQm9PMkVSVkNwMzhMRzAvQ1BoVCt2dDhxNGRsc0lyQVJWRGRCVGZmQjU4CitoR3YyOVg3K2QzdjgvK3YxK3VpMEFnREVxaVVvK3J4OU5oVWVDWXVnNDhGY0NPZlBJN1QzZmFYbVFPcnRXRUNKYS9lbzV4QUlBS2k4Cit2OUR3L0VVMUJVV3RFUllCeVFhWGU4T1E1L2ZWWE5VRXZWeXJ1UWlCQUlCYUNJcU9FUlpCSjdaT1ZKMTcvYlVQYXJmczErdXRhR3UzCitvS2tnSXFjenJwZkh1ZitsNDNOek1BQmdwRDVJUS9NWENZcU9FeFpCeFFQQ0k2SERXb1ZPekNQaGx3YU5KUWE4YzNNRkNXUG85Wm92Cit6YlVFQVBSR1VKU0dzQWdxRS9NMHNpT0J5ZHJ5WTU0NlZtS3cranB3enQwdWtNdFpsWE91QlFBZ2ViK204dW9pUVZFNndpS28wR3N3CitrbUt3T2pjdlVFdVRNYWR1bDYzcmpRM1NUSEE5U0dkSkNBUUFVQTFCVVZyQ0lxalUwbTFrc1lQRnRXV2NGV3JFUEhaKzdySDFaMjQzCis0M0JMR0FEQVREK3B3dW9pUVZGNndpS29XTXpnY2UwMWE0SE1HUVBaTFdGWGltM0ozWTRHK3cxMWJvUkFBQUJkRVJUbElTd0NvSGxDCitJQUNBZ24ydjZkY3pVbXVyTUJJVXBTTXNBcURlam9oNWdRQUFpQ0FvU2t0WUJCUWY0QnVJSXdRQ0FDQVZRVkY2d2lMQWdKeWszQklHCitBRUFwZ3FJOGhFVUFSQkVDQVFEd3BYOVk0WlBSY2hndEtBcEJXQVRnUzE0SUJBQUFiNDBZRklVZ0xBTG9sbm1CQUFESTN1ZnN1THBvCisxS0FvQkdFUlFIdGZ5RUlnQUFESWF1U2dLQVJoRVVCVjNCSUdBRUJ6ZmRqT3FvdEdENHBDRUJZQmxQa0NGUUlCQUVEMUJFVy9DSXNBCitEaEFDQVFDTXBiWUttbW1hcXRtTzFxdUxCRVYvQ0lzQTNuM1ptUmNJQUFDR0lTajZTbGdFREVVSUJBQkFUMTZyZVdxcE5HcUpvT2c3CitZUkhRRGJlRUFRQUFXd2lLM2hNV0FkVVRBZ0VBUUdRLzlxblNxSFNWVVd2ekZnbUs1Z21MZ05NSWdRQUFnRE1JaXBZSmk0RGt6QXNFCitBQURudTFmNW1NZm9LMEhST21FUkVFMElCQUFBdE95c29PaDF2YlVURmdFaEJMZUVBUUJBcjBwV0dOVThiNUdnS0o2d0NEb25CQUlBCitBRVluS05wR1dBU05FZ0lCQUFDYit2T0R6bUVrS05wT1dBU1ZNUzhRQUFCQUdyVUVSWiszejZiQ0kyRVJGQ0lFQWdBQWFuQzVYTEpXCitGOVV5YjFGTlFWRnJoRVdRK29PeFVDZ2tCQUlBQUhhUEp6SUhSbWNURkIwakxJTGFQclNGUUFBQUFMc0ppbzRURmtFaFFpQUFBS0NxCitNVXFIMVVXQ29qU0VSWkQ2QTFjb0JBQUFVSnlnS0oyL25FNEFBQUJBU3FVcmxnUkZhYWtzZ2hRZmhEKzFBZjFRSFFjQVFFc0VSZW1wCitMQUlBQUlCQjFmQ0kreU1FUlhrSWl3QUFBSURtQ1lyU2NSc2FKT1lXSGxya1Zrb0FnSUhITUIwOEZVMVFsSmJLSWdBQUFLQlpncUwwCitoRVVBQUFCQWt3UkZlUWlMQUFBQUFHYU1GaFNGSUN3Q0FBQUFlR3ZFb0NnRVlSRUFBQURBTjZNR1JTRUlpd0FBQUdCNGw4c2wrVEpiCitmc0xheUVGUkNDSDhjRWtBUUprT1RvNU9HQUFBYVkwZUZJVWdMQUpnY0NWLzhWcGFseUFKQU9COGdxSmZoRVVBREtQbVV1aDMyeVpBCitBZ0FvUjFEMGg3Q0lyZ2R1QmxwOURxcWRNNHh5SGo5dnYzTVRBQ0FmUWRGWHdpS0FtY0g1SzRQMTlvOWhUL3ZsZkFRQVNFTlE5SjJ3CitpTzRIalFaVUdLeVBlWHhHMlYvbklRQ1F5dVZ5R2E1UEpTaDZUMWlFZ1Iwa09JY04ySDJPT0E4QkFOb2lLSm9uTEFJd1lHKzZ2Zm5lCitMczVCQUlCbGdxSmxmMmtDZWgvb0dWUnl4dm50dk5PMjJna0FvRTZDb25VcWl3QXlEdGhEVU9XUnNpMXhEZ0lBSEhGV1VQUzYzdHFwCitMQUlvTUdBWGRoeHJQNXlEQUFCSENZcmlDWXNZWXVCbmtJUUJ1L1pDbXdJQTR4SVViU01zQWpoaHdJNDJPcnQ5dFRFQU1BcEIwWGJDCitJb1laQUJvWTRWcG9vMTIwamZNUUFDQ1ZXb0tpMWliUkZoWUJHS2hyRCswT0FOQWRRZEYrd2lLQWt3ZnFCdXNDQ3dBQTBoSVVIU01zCitZcWpCb0FFcDFQZTU0TG9FQUNBbFFkRnhQNXhHQU9lYnBpbGNMcGZoOXJrVktZNk5VQXdBSUQ5QlVSckNJb0JLakJRWTFScWM1R3ovCit1V1VMa1FBQTBoQVVwU01zWXJpQjRZZ1ZITFIxcmZSK2Z0YjBlVkJEVzc5dWcvQUlBR0E3UVZGYXdpSmdxSUg1TzdVTnpuc09qR3BvCis2OXJiOW5uN0JFY0FBT3NFUmVrSml4aHVJTjc3WUp4amczT0Q5RDQvQzFxOTNnVkhBQURMQkVWNUNJc0FLaHlrOXhab25oVjA5TlNHCitnaU1BZ0dXQ29uU0VSUUNSZzNRRDlQYU9tWE1TQUdBTWdxSmtIYzBRcGluODVaUWlwNW9ITWdaWjdCbWdsd3doZWpsSFMrL0hTTGVZCitsajRuQVFCcUpDaEsybmtQSVFSaEVXME5pc0FBdmJYdm1zbHhzZThBZ0RGY05vS2lQSVJGR01oQ3hWOStMWitqcFlNaXRBTUFRQTZqCitCVVVoQ0l0b1pLQjRId0FaQ0dGd1B0NzF2OWIram9FMkFRRGE2c08xWk1TZ0tBUmhFVUNTd1RuYVhmc0FBUFJsMUtBb0JHRVJtYlNVCitTRXZQY1k2MnQ3MkNrUGgyMGxZQUFOdU5IQlNGSUN5aWtjR09RU0t0bmFlakVoUTVQd0VBV2pkNlVCU0NzQWpBZ0Z3YkQ5TjIyZzhBCitZSm1nNkJkaEVjbmxtTmk2cFcwRzEzNGVnZzd0Q0FDUWs2RG9EMkVSQmp1QWExNTdBZ0FNVFZEMGxiQ0lwRnF1MEZGZFJNMkQ4TnJQCit6NXpiSjlqUXJnQkFlLzI1bHZvYWdxTHZoRVUwTzVBeDBJRStPeGJVOHprTEFOQTdRZEY3d2lJQXFpWE0wTVlBQUxrSWl1WUppMGltCit4WW10Yys0REJ0K3VlKzBJQUVDZEJFWExoRVVZbEFNQUFBeHN0Qi9OQlVYcmhFVUFWTmVwRUFRREFKRERXVUhSNjNwckp5eWl1a0hqCisxa0ZpNmtHbFc5SGdYSUlpQUFEOXVSd0VSZkdFUlFBQUFFRFhCRVhiQ0lzNHJNZEtITlZGY000MW9xb0lBTURZSnpWQjBYYkNJcXF5CitkNkJvZ0FrQUFNQ3JXb0tpMWliUkZoWUJzSW1xSWdBQS9ib1crblNDb3YyRVJWVHo0VkxiUU5HdGFBQUFBRzBTRkIwakxLSWJxaExBCis5UXNBUUp5ZWZ4d1hGQjBuTElKQlAwQnBTeTFoaW1zQ0FJQ2FDWXJTRUJaUnhhQXgxVUJZZFFLOVhSc0FBTkJLZi9YczhaaWdLQjFoCitFUUNuRXZJQ0FIQ1VvQ2d0WVJHNzlEeXhkYzU5QmRjOUFBQm45dWQ2N05NSml0SVRGdEVkVlFvQUFBQmpFQlRsOGNPcEJaQk9qbDlxCitlZzVBaGJzQUFHMzJVV3ZzMXdtSzBsRlp4S2tmTkxrK1VGSXYxKzAzQUFBQTlSSVVwYVd5Q0NDUm5rTkZnU2tBZ0Q3Y25MT3JpZ1JGCis2YWtzd29EUnZsTXh0MmtCQU1BOFFWRWVLb3ZvZGhCOHVWd0VQQlRqWEt2dk13QUFRTDlVbnk2RjBZS2lFRlFXQVZUN2hTeE1BUUNBCitjNDBZRklXZ3NvaVRCc1NsQnNHcHE0dW1hVEtBSjl0MUFRQUFMZlZIZXg4YmpSb1VoYUN5Q0tES0wrYWF2bmdGWWdBQWpHYmtvQ2dFCitsVVVBbXdsUGpsT2hCd0RvQytyUDFXcjBvQ2dFbFVXYzhJRlkra01sOWZwOE9ZeDlIWlE0L29JVUFBQTRoNkRvRjVWRkFDdEtCb1NDCitJZ0FBYXRkcm4xVlE5SWV3aUtJRDVWNCtWRXgwN2J6M3BRc0FBUDBRRkgwbExHSUlxWitLUmw5cU9EY0VSUUFBdERLMjZvMmc2RHRoCitFVkNNd0c2Y0wxd0FBR2lCb09nOUUxeFRiSEIvOW9EWVJOZlVTRkFFQUVBci9kYmUrcTZDb25uQ0lvQVR2M0JySnhRRkFLQkhncUpsCitia01ES0d6MGFpTFZWQUFBK201bkVoU3RVMW5FckI2Zmd1WldOTTQrL3dRbEFBQnduck9Db3RmMTFrNWxFVUJtQWlJQUFQUmp6eWNvCitpcWV5aUxkNnJDckt0VDJxaTVnN3oxUVNBUUJBSFFSRjI2Z3NBamhJSUFRQWdMNXR2UVJGMjZrc0FqaG9tcVl2ZndBQWdEclVFaFMxCitOb20yeWlMZURueFRxVFdWdmx3dUJ2VVV1WVpVSFFFQVVLdmUrNnFDb3YyRVJRQVpDWTRBQUdpaHI5cGJmMVZRZEl6YjBGajhzRGpDCit3QmkrWDE4cTJnQUFJQzlCMFhIQ0lvWWx6T0lzUWlNQUFHcnVwN2JjVnhVVXBTRXNBamp4eXhnQUFFaERVSlNPc0lnc0E5ZFdxblpVCitGMUhEZFNjMEFnQkFQL1VZUVZGYXdpS0FTcjZNQVFDQTdRUkY2UW1MQUNvaE1BSUFvTVkrYXMzOVZFRlJIaitjK3FRZXBMWjJhOWZsCitja202LzlNMHViMnQ0WFBqN0M5QzV3OEFBT3dqS0VwSFdBVHc1RjFRVXpwQUVoZ0JBRkNiZTUrNDFuNnFvQ2d0dDZFeGRGVlJydTEyCitPMUZmTHBmTDQwK0wxeVVBQVBSTVVKU2VzQWhnZzVMQmtjQUlBSURhMU5aSEZSVGxJU3dDMktsRWFDUXdBZ0NBYzQwV0ZJVWdMQnFlCitXOUR5YmI5Qi9qZ0VSZ0FBakRhT0hLV1BPbUpRRklLd0NDQ0owbk1hQVFBQWVZMGFGSVVnTENMaFFCbklkeTJvTGdJQW9EWTk5MUZICitEb3BDRUJhNXNNazYwTmZHenFQV3o2Y2MrK0s2QUFDZ1pxTUhSU0VJaXdDeVVHMEhBTUFJZXZzaFVGRDBpN0RJQlcxUW5IbC9WRkhnCitmQUlBZ1BvSml2NzQ0WFFBeU9OeXVRaDNBSURtVGRPa2F2cWxqMWZ6c1hLTzdDTW8ra3BsRVVCam5Ra0JGQUFBcENNbytrNVlOQ0MzCitvSlhmTDRON0FBQ2d4RGptK1UrcjQ4eVNCRVh2Q1lzQUNueHAreklHQUlDNkNJcm1DWXNHbzZyb3ZQMHp1QWZYQXdENDdxYjBtS1prCitsVkZMNTRtZ2FKa0pydkdGQWF4Mk1senZBQUQwUWxDMFRtVVJRQUdlSUFJQXdObjkwUkpWUnJYL3lIaFdVUFM2M3RvSml3YWlNc0F4Cit3UGtFQUFDakVoVEZFeFlCY0FwaEZ3REFPWEpYR05YWXp4TVViU01zQWdBQUFMb2xLTnBPV0RRSXYrQTdGcHl2NVhtTHpMa0VBT2pICis2cCsyZUw3VUVoUzFOb20yc0FnQUFBRG9qcUJvUDJIUkFQd0M0SmpnWExMOUFBQzhVK0lKYVdjUUZCMGpMQUlBQUFDNklTZzZUbGdFCitRQlR6RmdFQTZPdHRjVVlWdWFBb0RXRlI1OXppNGRpQWF3RUFnQkVJaXRJUkZnRUFBQkRGanp4OWE3bTZTRkNVbHJBSWdGTTdFQUFBCitjSVNnS0QxaFVjZWsvbzRSdUJZQUFOaWl0UjhIQlVWNUNJc0FBQUNBNWdtSzBoRVdkY3F2OUk0VjVKTHIxeWJYQWdEb3YrS2MyVXRRCitsSmF3Q0FBQUFHaVdvQ2k5SDA0cllwalU5aXUvcHVBejRaTGxPcGlteWVjTkFFQ25mYjBjQkVWNXFDenFrQ0RETWNOeEJnQUEwaGd0CitLQXBCV0VRRXYvSURKUW5WQUFDTUEyc3hZbEFVZ3JESUlJdHFQamdkTzF3SHJnY0FNTzZBZW93YUZJVWdMQUpvbWw5OEFBQWd2WkdECitvaENFUlJpSWFodUs2UFhYTjlWRkFBRDAxcmNiUFNnS1FWams0c014Qk5lRU5nWUFJSVFnS0xvVEZqRkw1UXpnczZKdmdpSUFmSS9BCitINEtpUDRSRllKQ01qcFQyMDY0QUFFTVRGSDBsTE5McHg3R2tVVFdGbGJtM3hYV2hQUUVBY2hFVWZTY3NvdnBCS0JpVSs5d1lyUzIxCitJd0JBR1lLaTk0UkZPdjVVT0VCMlRGMmJhTk1jYmFmOUFJQ3p4em8xRVJUTkV4WUIrT0p1YXJzRUh0b01BT0FvUWRFeVlSSE5ERUxCCis0TnhuaVBiVlZnRDRuc0g1Y3BTZ2FKMnd5TVdHWTR0anA1MDdiUjl0QkFEdzFWbEIwZXQ2YXljc0FrZzhRTSt0aGVxL1V0c29FTkVtCitBQUN4QkVYeGhFVTBOd2dGQTNTZkorL2FIKzBBQURCSFVMU05zTWlnQU1lWWhvNVRhNEZ1NmNCbzFHdEdXQWtBTUU5UXRKMndpR1lICitvV0NBN3JObDdyZzRCd0VBQ0tHZW9LaTFTYlNGUlEwUEVIQ3NPVzl3ZnNaeEVlaHVQMDcyRHdEMFZ4bTNEeW9vMnUrSFV4K2cvZzVRCis2MEhSNVhJNXBSM3Y2K3doYU5NUkJ3Q0lKeWc2UmxoRU53TXBNQ0N2LzNQbXJQWjlYbTlybjNmT1NRQ0FiUVJGeHdtTERHWnBZRUE4CitUWlBLaU1IUEtkZEhudk93eHJaMW5RQUE3Q2NvU2tOWUJGQ3hIcXYrYWdpTTdsNjM0NHoyRmc0QjBJTmVmdHlrN1hORlVKU09zQWdmCis2dURhUEdYZmFneEo1cllweGJFUUNnRUE1Q01vU2t0WTFCaURqWEVId242dEdlOGNjcDM0N0FVQVlKMmdLTDIvbkZZR3BJRHI4c3g5Cis5VGtFQU1CZWdxSThoRVVOOGN1MkFiOXp3SGxqdjlIMkFBRHZDWXJTRVJZQkdMVGJmMjBPQU5BMFFWRmE1aXd5U0FCY2kxVzFoUW82Cis1eHdBd0JhQ292UlVGalhDNE1tQXpMbmdIQm1wVGJTTGN3NEFJSWFnS0ErVlJRQUc3Rlcza1lEVU9RY0FjS2JSZ3FJUVZCWTFJY2RBCit5YURCT2NGNUEzYlhuODhyNXh3QVFCdEdESXBDVUZrRVJRWnF3aDBNMXRPMG4ydkpPUWNBVU1xb1FWRUl3aUlBQS9ZRzIxTm81SndECitBTWhwNUtBb0JMZWhWYzh0YUFadkpjOE4waDF2dC82VWFXTzBDUUI5ajEzZ0RLTUhSU0dvTEFKSU5sRG4zSFlmc1lQcXZBTUFTRXRRCis5SXV3eU1BQ2NCMTFkVnhHQ0kyY2d3QUE2UW1LL2hBV1ZVd1paMytEdTlUSGRKb21nMGFEY1JhT1hTK2ZvODVIQUlDOEJFVmZDWXNNCitEbkJNblg4TWM4MjFGQjY1QmdGb2tSOHphWkdnNkR0aEVhVCtndnlwRGFCVzd6cXZOUVJJT3RVQUFPY1FGTDBuTEFKZ2FFdEJUY29nCitTU0FFQUZBWFFkRThZUkVBekJEd0FBRDBTVkMwVEZnRUtRYVUvL3o2MzdsYjBPNy9EZ0FBd0xrRVJldUVSVkJBekR4R0FpVUFBSUM4Cit6Z3FLWHRkYk8yRVJWR0l0VUJJbUFRRFFSTC9XRTlHNk81NjlFQlRGRXhaQlFuT0JUb29ucEtsT0FnQUEyRWRRdEkyd0NBcUlDWEVFCitTZ0FBQU9rSmlyWVRGa0VsMWtLY0ZHRlM3SElFU2dBQUhPcHp1aFdOU3RRU0ZIM2VQcHNLajRSRjBJaFMxVWt4eXhFbUFRQUF0YXNwCitLR3FOc0FnNjRuWTNBQUNnNmpGTG9Zb3pRZEV4d2lJWTdjUFo3VzRBQUVESEJFWEhDWXVBTDJxNjNTMTJld0FBZ1BTbWFXcHVtd1ZGCithUWlMZ00zTW53UUFBTlJHVUpTT3NBakl3dnhKQUFCajgwUTBTaElVcFNVc0FrNWovaVFBOGkzWi9RQUFEVGhKUkVGVUFPQW9RVkY2Cit3aUtnV201M0F3QUFsZ2lLOGhBV0FVMXp1eHNBQUJDQ29DZ2xZUkhRUFlFU0FBRDBUVkNVbHJBSUlKZy9DUUFBV2lVb1NrOVlCQkRCCisvRWtBQUR2Nk5aNkl4bk0vTnNPNUlDaktRMWdFa09yTHorMXVBQURRbmRHQ29oQ0VSUUJGQ1pRQUFHakJORTBhSVl3WkZJVWdMQUtvCitqdm1UQUFEZ2ZLTUdSU0VJaXdDYVkvNGtBS0FsNWkxcTg1aU5idVNnS0FSaEVVQ1gzTzRHQUFEN2pCNFVoU0FzQWhpVzI5MEFBQ2pXCis5MnlrdWt4UTlJdXdDSUQzWCtnVjNlNFd1ejBBQUxDWG9PZ1BZUkVBdTVrL0NRQ2dMNlBPVnlRbytrcFlCRUJXNWs4Q0FLQm1ncUx2CitoRVVBbk03OFNRRFFOMDlFYStjNGpVWlE5SjZ3Q0lEcW1UOEpBSURVQkVYemhFVUFkTUg4U1FBQUIvbzNnMVVWQ1lxV0NZc0FHSWI1Citrd0FBRUJTdEV4WUJ3QlB6SndFQUkxRlI5SG5LZW1zbkxBS0FEZHp1QmdEUUprRlJQR0VSQUNUbWRqY0FlUE85NVlsb1ZSNlRJbjJqCitDbzY3b0dnYllSRUFuRUNnQkFCUWhxQm9PMkVSQUZUSy9Fa0FRQTRqelZOVVMxRDBlZnRzS2p3U0ZnRkFvODZjUCtralhMOTJnUDY3CitPU0FBUUZWcUNvcGFJeXdDZ0k2VkNwUSsvcjZ1dmthZ0JJQjVpODV0KzFQNklpY2RiMEhSTWNJaUFCaGNxZHZkQkVvQVFBbUNvdU9FCitSUURBb251WU5IM3AvTnkrZG80aWdxQ29UdGJNY2g2QjFiK1hFUDQzT1NnQUVPSHN1WW5PcUNvU0ZLVWhMQUlBRG91cENFb1ZLSVYvCitWenFld2lRQUdKS2dLQjFoRVFCUVJMRkE2ZCtJWHpFRlNnQjBhS1NubkgzclF3aUtraElXQVFEVm1BdVVydGZycjA1d292bVRCRW9BCiswQTlCVVhyQ0lnQ2dIVEVCenIrSjVrY1FLQUdFRUg3Tk81T3lZcVgxSjZLTlhMMno5YndwUVZDVWg3QUlBT2hMVFlHU01Ba0FpaEVVCitwU01zQWdER1V5cFFVcDBFd0lET3FCd1RGS1VsTEFJQWVHY3R4SEc3R3dCVVFWQ1VuckFJQUdBUHQ3c0J3RGVscTRvRVJYa0lpd0FBCitjbkc3RzlCUkFHQ1NhMkxPa3g2TkZoU0ZJQ3dDQURpWFFBa0FxalZpVUJTQ3NBZ0FvSDdtVHdLZ2NqMVdGWTBhRklVZ0xBSUFhRjhsCis4eWROUDBPNC9PTndBTkMra1lPaUVJUkZBQUJqS0JRb1RUK2ZPdHJoR3ZXZXovOXVqZzgwd0x4RkxKMGJQUms5S0FwQldBUUF3RjJwCisyOTFlTytWL1gxZGZJMUFDb0FSQjBTL0NJZ0FBNHF5RVNaZkw1VXRsVWRMT3UwQUpvRW85VlJVSml2NFFGZ0VBa0c3UThFOEkwNk9UCitmWXZybkVjRVFTbVdJMHdDWVBZN1JGRDBoYkFJQUlCVHhZUTRLUUlsMVVrQTZhZ282cHV3Q0FDQTZxMkZPS1dxazJLMkJZQjJDSXJlCitFeFlCQU5DOFV0VkpzY3NSS05FclQwVGpmaDcwUUZBMFQxZ0VBTUFRYWdxVWhFa0E1eElVTFJNV0FRREFmYkJnL2lTQVdTcUt4aUVzCitBZ0NBRGN5ZkJOQ3VzNEtpMS9YV1RsZ0VBQUFKdWQwTnRqRnZVZjFVRktWZGJ3dUVSUUFBVUpqYjNRREtFaFJ0SXl3Q0FJQUtDWlNvCitWZW9ub2xIM3NlNkJvR2c3WVJFQUFEVEsvRWtBSzU5ZmxRUkZuN2ZQcHNJallSRUFBSFRLL0VuQVhqMVVGZFVVRkxWR1dBUUFBQU56Cit1eHZRSTBIUk1jSWlBQUJna1VDSlY2bm5MZkpFdEhxT2F3OEVSY2NKaXdBQWdNUE1ud1RVUUZDVWhyQUlBQURJenZ4SlVLZWVLcm9FCitSZWtJaXdBQWdDcTQzUzN4QVBacFB3Vms5RTVRbEphd0NBQUFhRVlOdDd1MUdMeDgvSDBWR05IdHZGQ0NvdlNFUlFBQVFEZEtWQ2UxCitXcGtrTUtKSGdxSThoRVVBQU1CUVNsUW4xVEJ2MHVkL3QyL2JrVEl3OGtTME9vM2Nob0tpZElSRkFBQUF6d08vQ3NLa21PMkkzWmVjCitnUkZVYzkwS2lwSVNGZ0VBQUd3WmxKNDRiOUtla0NkbllOUkNGWXRxcFFHdVNVRlJjc0lpQUFDQWxBUFhqUE1tN2IyOVRZVVIzVjV2CitncUlzaEVVQUFBQ2xCN2laQXFXdDc0a0pqS2Fmamhkakd5MG9Da0ZZQkFBQVVLVjNJVTZxVzl5K0wzUFM0UER1K2hnd0tBcEJXQVFBCitBTkNNVXZNbEFlTUdSU0VJaXdBQUFMcVI2dmEyUFhNWm5UV3d0bDdyN1dtOXRSQVdBUUFBRENCbjFaRWd3WHF0dHkvQ29vemM5UXNBCitBSnd0NWdscUh3YjAxbXU5cDY2M05zSWlBQUNBenNRRVJBYjAxbXU5ZGF5M1JzSWlBQUNBVHBRS2lVWWMwRnV2OVk1RVdKVFk1KzJtCitFUUFBZ0hyR0tBa0RvbEVIOU5acnZhTVJGZ0VBQUhRb1IwZzA0b0RlZXExM1JNSWlBQUNBVHVRS2lFWWQwRnV2OVk3cUwwMEFBQUNBCitBYjMxV2k5M3dpSUFBQUFNNkszWGVua1FGZ0VBQUdCQWI3M1dXM0M5dFJNV0FRQUFZRUJ2dmRaYmFMMHRFQllCQUFCZ1FHKzkxbHRnCit2YTBRRmdFQUFHQkFiNzNXbTNtOUxSRVdBUUFBTUV1UVlMM1cyODU2VXhFV0FRQUE4SllCdmZWYWJ6dnJUZWt5VGRPMCtVMlhTd2doCitoTnZ0NXRNVEFNanVlcjJHRUVMWTBXMmhaTWZ5ZHg5eGVuU085UldoRlMzZkxnTXRLaGtnZmZ6dVIxMSsvM2RNZjBwbEVRQUFBQUFQCit3aUlBQUFBQUhuNW9BZ0FBZ0xHMU9LY0trSS9LSWdBQUFBQWVoRVVBQUFBQVBBaUxBQUFBQUhnUUZnRUFBQUR3WUlKckFBQUFpdnE0Citmcno5KzdtSnRyZTgvdm0xU3hOM3o3MXVibDFibDVuNlBVZTJLM2FkVzQvRFd2c2ZQYjU3MzdQbG1KcmMvVDJWUlFBQUFCU3pOSEIvCis5MjliWDMvVzl1L1p6ak8yLytneE9ycmNyY3ZlODU2YWx0OHFsVVVBQUFBVXNWYjE4enBvWDNyOS9kOCtyaCtMMVNkYnExOWl0dTkxCit1WHUyOC83M3FhcHo5dGl5anlXV25lbzlaK3h2YjFRV0FRQUFrRjNNN1dHeEFjelNhM1BhYzl2Ym51MDhNN1JZdSszcjgvYjVlTTNXCitkai9hRmptTzh4bm5VUXVFUlFBQUFCU3pOUWhaZW4zTXY4MVZLNlVPWlBadTUyaTNRZTFwOTl6aG1ZcWk3OXlHQmdBQUFCRlNoanFmCit0ODh2eTRzTnNmWk1vbjEwSDlmbVl6b3piTW5kSHFNU0ZnRUFBTkNsZXlCekR6UzJWQldWbURmb1hmVlRyc3FuRlB2NC9IZXZZUmQ5CitFUllCQUFCQXBCd2h6bHhvZEhSQzU5VDdXR000cElJb0QyRVJBQUFBeFd5OWJXbnRhV2RybnF1TDd2OGRZMnNJY1hRN245ZDU1b1RkCitlN1o5eXpIZHMyKzUyME9GMUhjbXVBWUFBQ0M3bUtkT3pUMVpiRzBlblZxZUhyWmxPMXNMS081UFFYdjlzOFdlWTViN09OZHlIdFZHCitaUkVBQUFCRlBNOXpzNlVxYU9uMU1RUDhFay9UMnJPZGUrWkZhbVZDNTVUN2xxbzlTc3hEMVF1VlJRQUFBQlN6OVJIemV4OUpiNytPCitpN2wxYjh1dGMzdXFrZmE4cDZibHQrb3lUZE8wK1UyWFN3Z2hoTnZ0cGdVQmdPeXUxMnNJSVlRZDNSWktkaXgvOXhHblJ3ZGNYeEVBCit6dmJ4dXg5MStmM2ZNZjBwbFVVQUFBQUFQSml6Q0FDQTA5eXJ4bDdOVmJCdmVmM3phNWNxNHVkZU43ZXVyY3RNL1o0ajJ4Vzd6dFQ3CitlSC90Mm5HZGEvL1laUzd0ejFxNzdEbG1BTDFTV1FRQXdDbVdCdmJ2L20zcjY4L2EvajNiZWNiMngrNWpEY2NpeFRMbjlxWG05b2M5CitQcTRmaTM4Z1JySEtvcGlrdnZRdkczdldzK2ZMeFM4eWZwRUJBT2I3RERIOXRhWFgzLy90ZXIwdTlwUDI5QXZYdHU5MXVYdTJjNm1QCitkNlJmdHNXV2RSODlGaVhzT1daN3p3K29qY21hU2FGSVpWR3FYeDVTL25xemQzdjM3cjlmWkFBQTFzT0dkMysvOXZvdFB6Nm1zdWUyCit0ejNiV1d2Z2NzYXhPTHE4MXRvZjRFelpLNHUyL21xMDVYVnJ5MS83WldQTEx3NHB2bEJUYlhjTkhRUy95QUFBT2ZvYWUxOS91OTBXCitLNXp2UDNqTjlWOVM5bGYyYnVkYUZYbHBlNnVhY3JSbnF1VzExUDRBWjhwYVdiVDFWNlBVeTYvaDF3Ty95UGpDQlFENmt6TmNXcXJrCitmdmU2MXo5NzkyZHVPVFgwNWU3YmtPTkh5TDN0RDlDeklyZWg1ZjZDV2Z0bG85YU9STW50em4xUHV5OVhBS0JtcjJIRGxpcVNFa0hLCis3WFlUV3B4OGZtaC9nRDkrMUxoUlowNlNmT1FMb2RRRWhFZStCTitWWUtkYzltdGJxQ29DQUhxVm81L3pyb0pteTVRS3FmY2xWOSt4Cit0cjdzbnZZSDZObVBrWGUrOW5DbjFRNlQwQWdBaU8yTGJla2pyRDN0TEthdjhsd3RFcnZ1UFUvS1BiS2RjLzJxVm81ZGlXMCtjcnRkCitEKzBQa050Zk5XN1V2UXowdFJ6MHpLZGI3Tm51NSsydjVZdW14UGJNbGZFQ0FMejJ0YlkrREdUdENiTzFQQnhreTNhMjFFODZlaXkyCitQaUU0VlQrOWwvWUhLS1ZJWmRIUjBzMjFKeURzL1dXamh2bU0vQ0lEQUl6b3VYKzNwU3BvNmZVeGZic1NjMm51MmM0OWZkYVVVemRzCitEV3kyN21PcTQ1ZGlmMUsxUDBEUHNsWVdiZjNWS1BYeWEzdUtRNnJ0OW9zTUFOQ0RyUS83cVBtaEpyM3UxN3VLOGIzYm5Hby9qOTRGCiswT3A1QlZEU1pacW1hZk9iTHBkTkg1NXJRY0pyQmNyV3g4M0hMdi8xOWFrKy9QYytRbjdyZHFmYzE5ZmxiQTErVXV3TEFHejlydDNSCitiYUZreC9KM0gvRitsRDU5L3dQQTZUNSs5Nk11di84N3BqOVZaTTZpRkduOTNtWFU4dVFHdjhnQUFBQUFMU2hTV1FRQWNJVEtva1k2CitsaXFMQUtBNmV5cUxmbWcyQUFEb2oya0NBTmhMV0FRQUFCMFNCZ0d3bDdCb2hWOWtBQUFBZ0pFSWkxWUlnd0FBQUlDUkNJc0FBTWppCitZNlZDR3dDbzAxK2FBQUFBQUlBN2xVVUFBQ1IxMFFRQTBQWjMrVFJOMCtZM1hYUUJBSUR5ZG5SYktObXgxRWNFZ0M3NlV5cUxBQUFvCisxdmtFQU9xM0t5elNFUUFBQUFEb2t3bXVBUUFBQUhnUUZnRUFBQUR3SUN3Q0FBQUE0RUZZQkFBQUFNQ0RzQWdBQUFDQUIyRVJBQUFBCitBQS9DSWdBQUFBQWVoRVVBQUFBQVBBaUxBQUFBQUhnUUZnRUFBQUR3SUN3Q0FBQUE0RUZZQkFBQUFNQ0RzQWdBQUFDQUIyRVJBQUFBCitBQS9DSWdBQUFBQWVoRVVBQUFBQVBBaUxBQUFBQUhnUUZnRUFBQUR3SUN3Q0FBQUE0RUZZQkFBQUFNQ0RzQWdBQUFDQUIyRVJBQUFBCitBQS9DSWdBQUFBQWUvZy8xMGxRbEEzSlNTd0FBQUFCSlJVNUVya0pnZ2c9PQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3R5cGljYWxfbWVkaWFfZGV2aWNlLnN2ZyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS90eXBpY2FsX21lZGlhX2RldmljZS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBjODJmNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS90eXBpY2FsX21lZGlhX2RldmljZS5zdmcKQEAgLTAsMCArMSwyOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cis8c3ZnIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBjbGlwLXBhdGg9InVybCgjYSkiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaGVpZ2h0PSIxNzguNzhtbSIgdmlld0JveD0iMCAwIDI0Mjg1LjY2MiAxNzg3Ny44MjkiIHdpZHRoPSIyNTEuOTltbSIgdmVyc2lvbj0iMS4yIiB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIiBzdHJva2Utd2lkdGg9IjI4LjIyMiI+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIiBjbGlwUGF0aFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHJlY3QgeT0iMCIgeD0iMCIgd2lkdGg9IjI4MDAwIiBoZWlnaHQ9IjIxMDAwIi8+PC9jbGlwUGF0aD48L2RlZnM+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMS4wMDQgMCAwIDEgLTIxODUuNiAtMjE4NikiIGNsYXNzPSJjb20uc3VuLnN0YXIuZHJhd2luZy5DdXN0b21TaGFwZSI+PHBhdGggZmlsbD0iI2ZjZiIgZD0ibTEyMjMxIDQ4MDBjLTUxNiAwLTEwMzEgNTE1LTEwMzEgMTAzMXY0MTI0YzAgNTE2IDUxNSAxMDMyIDEwMzEgMTAzMmg4NTM4YzUxNiAwIDEwMzItNTE2IDEwMzItMTAzMnYtNDEyNGMwLTUxNi01MTYtMTAzMS0xMDMyLTEwMzFoLTg1Mzh6Ii8+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMTQwLjkgLTIxODYpIiBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcuQ3VzdG9tU2hhcGUiPjxwYXRoIGZpbGw9IiNmZmMiIGQ9Im0zNTk1IDE1NjA3Yy0yOTMgMC01ODUgMjkyLTU4NSA1ODV2MjM0MGMwIDI5MyAyOTIgNTg2IDU4NSA1ODZoMzI3NWMyOTMgMCA1ODYtMjkzIDU4Ni01ODZ2LTIzNDBjMC0yOTMtMjkzLTU4NS01ODYtNTg1aC0zMjc1eiIvPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjE5Ny4zIC0yMTg2KSIgY2xhc3M9ImNvbS5zdW4uc3Rhci5kcmF3aW5nLkN1c3RvbVNoYXBlIj48cGF0aCBmaWxsPSIjZTZlNmU2IiBkPSJtMjY2MyAyMTg2Yy00NjEgMC05MjIgNDYxLTkyMiA5MjJ2MTExNjljMCA0NjEgNDYxIDkyMyA5MjIgOTIzaDM2OTJjNDYxIDAgOTIyLTQ2MiA5MjItOTIzdi0xMTE2OWMwLTQ2MS00NjEtOTIyLTkyMi05MjJoLTM2OTJ6Ii8+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMTQwLjkgLTIxODYpIiBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcuUmVjdGFuZ2xlU2hhcGUiPjxwYXRoIGZpbGw9IiNmZjgwODAiIGQ9Im00NDYxIDg2MDJoLTIyNjB2LTEwODZoNDUyMHYxMDg2aC0yMjYweiIvPjxwYXRoIGZpbGw9Im5vbmUiIGQ9Im00NDYxIDg2MDJoLTIyNjB2LTEwODZoNDUyMHYxMDg2aC0yMjYweiIgc3Ryb2tlPSIjMzQ2NWFmIi8+PHRleHQgY2xhc3M9IlRleHRTaGFwZSI+PHRzcGFuIGZvbnQtc2l6ZT0iNjM1cHgiIGZvbnQtZmFtaWx5PSImYXBvcztUaW1lcyBOZXcgUm9tYW4mYXBvczssIHNlcmlmIiBmb250LXdlaWdodD0iNDAwIiBjbGFzcz0iVGV4dFBhcmFncmFwaCI+PHRzcGFuIHk9IjgyNzUiIHg9IjI1NzkiIGNsYXNzPSJUZXh0UG9zaXRpb24iPjx0c3BhbiBmaWxsPSIjMDAwMDAwIj5BdWRpbyBkZWNvZGVyPC90c3Bhbj48L3RzcGFuPjwvdHNwYW4+PC90ZXh0PgorPC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMTQwLjkgLTIxODYpIiBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcuUmVjdGFuZ2xlU2hhcGUiPjxwYXRoIGZpbGw9IiNmZjgwODAiIGQ9Im00NDYxIDExNzcyaC0yMjYwdi0xMjcwaDQ1MjB2MTI3MGgtMjI2MHoiLz48cGF0aCBmaWxsPSJub25lIiBkPSJtNDQ2MSAxMTc3MmgtMjI2MHYtMTI3MGg0NTIwdjEyNzBoLTIyNjB6IiBzdHJva2U9IiMzNDY1YWYiLz48dGV4dCBjbGFzcz0iVGV4dFNoYXBlIj48dHNwYW4gZm9udC1zaXplPSI2MzVweCIgZm9udC1mYW1pbHk9IiZhcG9zO1RpbWVzIE5ldyBSb21hbiZhcG9zOywgc2VyaWYiIGZvbnQtd2VpZ2h0PSI0MDAiIGNsYXNzPSJUZXh0UGFyYWdyYXBoIj48dHNwYW4geT0iMTEzNTMiIHg9IjI2MTciIGNsYXNzPSJUZXh0UG9zaXRpb24iPjx0c3BhbiBmaWxsPSIjMDAwMDAwIj5WaWRlbyBkZWNvZGVyPC90c3Bhbj48L3RzcGFuPjwvdHNwYW4+PC90ZXh0PgorPC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMTQwLjkgLTIxODYpIiBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcuUmVjdGFuZ2xlU2hhcGUiPjxwYXRoIGZpbGw9IiNmZjgwODAiIGQ9Im00NDUzIDEwMjE3aC0yMjY5di0xMjI0aDQ1Mzd2MTIyNGgtMjI2OHoiLz48cGF0aCBmaWxsPSJub25lIiBkPSJtNDQ1MyAxMDIxN2gtMjI2OXYtMTIyNGg0NTM3djEyMjRoLTIyNjh6IiBzdHJva2U9IiMzNDY1YWYiLz48dGV4dCBjbGFzcz0iVGV4dFNoYXBlIj48dHNwYW4gZm9udC1zaXplPSI2MzVweCIgZm9udC1mYW1pbHk9IiZhcG9zO1RpbWVzIE5ldyBSb21hbiZhcG9zOywgc2VyaWYiIGZvbnQtd2VpZ2h0PSI0MDAiIGNsYXNzPSJUZXh0UGFyYWdyYXBoIj48dHNwYW4geT0iOTgyMSIgeD0iMjU3MSIgY2xhc3M9IlRleHRQb3NpdGlvbiI+PHRzcGFuIGZpbGw9IiMwMDAwMDAiPkF1ZGlvIGVuY29kZXI8L3RzcGFuPjwvdHNwYW4+PC90c3Bhbj48L3RleHQ+Cis8L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxNDAuOSAtMjQ2OC4yKSIgY2xhc3M9ImNvbS5zdW4uc3Rhci5kcmF3aW5nLlJlY3RhbmdsZVNoYXBlIj48cGF0aCBmaWxsPSIjY2ZjIiBkPSJtMTU3MTEgMTI4MzJoLTM4MTB2LTEyODFoNzYyMHYxMjgxaC0zODEweiIvPjxwYXRoIGZpbGw9Im5vbmUiIGQ9Im0xNTcxMSAxMjgzMmgtMzgxMHYtMTI4MWg3NjIwdjEyODFoLTM4MTB6IiBzdHJva2U9IiMzNDY1YWYiLz48dGV4dCBjbGFzcz0iVGV4dFNoYXBlIj48dHNwYW4gZm9udC1zaXplPSI2MzVweCIgZm9udC1mYW1pbHk9IiZhcG9zO1RpbWVzIE5ldyBSb21hbiZhcG9zOywgc2VyaWYiIGZvbnQtd2VpZ2h0PSI0MDAiIGNsYXNzPSJUZXh0UGFyYWdyYXBoIj48dHNwYW4geT0iMTI0MDciIHg9IjEyMzc3IiBjbGFzcz0iVGV4dFBvc2l0aW9uIj48dHNwYW4gZmlsbD0iIzAwMDAwMCI+QnV0dG9uIEtleS9JUiBpbnB1dCBsb2dpYzwvdHNwYW4+PC90c3Bhbj48L3RzcGFuPjwvdGV4dD4KKzwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjE0MC45IC0yNDExLjgpIiBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcuUmVjdGFuZ2xlU2hhcGUiPjxwYXRoIGZpbGw9IiNjZmU3ZjUiIGQ9Im0xNDE2OSAxNDU3MmgtMjI2OHYtMTQxMmg0NTM2djE0MTJoLTIyNjh6Ii8+PHBhdGggZmlsbD0ibm9uZSIgZD0ibTE0MTY5IDE0NTcyaC0yMjY4di0xNDEyaDQ1MzZ2MTQxMmgtMjI2OHoiIHN0cm9rZT0iIzM0NjVhZiIvPjx0ZXh0IGNsYXNzPSJUZXh0U2hhcGUiPjx0c3BhbiBmb250LXNpemU9IjYzNXB4IiBmb250LWZhbWlseT0iJmFwb3M7VGltZXMgTmV3IFJvbWFuJmFwb3M7LCBzZXJpZiIgZm9udC13ZWlnaHQ9IjQwMCIgY2xhc3M9IlRleHRQYXJhZ3JhcGgiPjx0c3BhbiB5PSIxNDA4MiIgeD0iMTI4ODIiIGNsYXNzPSJUZXh0UG9zaXRpb24iPjx0c3BhbiBmaWxsPSIjMDAwMDAwIj5FRVBST008L3RzcGFuPjwvdHNwYW4+PC90c3Bhbj48L3RleHQ+Cis8L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxNDAuOSAtMjE4NikiIGNsYXNzPSJjb20uc3VuLnN0YXIuZHJhd2luZy5SZWN0YW5nbGVTaGFwZSI+PHBhdGggZmlsbD0iI2ZjOSIgZD0ibTUxNDAgMTc2NjJoLTE1NjN2LTE3MTVoMzEyNnYxNzE1aC0xNTYzeiIvPjxwYXRoIGZpbGw9Im5vbmUiIGQ9Im01MTQwIDE3NjYyaC0xNTYzdi0xNzE1aDMxMjZ2MTcxNWgtMTU2M3oiIHN0cm9rZT0iIzM0NjVhZiIvPjx0ZXh0IGNsYXNzPSJUZXh0U2hhcGUiPjx0c3BhbiBmb250LXNpemU9IjYzNXB4IiBmb250LWZhbWlseT0iJmFwb3M7VGltZXMgTmV3IFJvbWFuJmFwb3M7LCBzZXJpZiIgZm9udC13ZWlnaHQ9IjQwMCIgY2xhc3M9IlRleHRQYXJhZ3JhcGgiPjx0c3BhbiB5PSIxNzAyMCIgeD0iNDI3NiIgY2xhc3M9IlRleHRQb3NpdGlvbiI+PHRzcGFuIGZpbGw9IiMwMDAwMDAiPlNlbnNvcjwvdHNwYW4+PC90c3Bhbj48L3RzcGFuPjwvdGV4dD4KKzwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjE0MC45IC0yMTg2KSIgY2xhc3M9ImNvbS5zdW4uc3Rhci5kcmF3aW5nLkN1c3RvbVNoYXBlIj48cGF0aCBmaWxsPSIjNzI5ZmNmIiBkPSJtNjcxOSA4MDMwIDM4NS0zNTN2MTc2aDExNjd2LTE3NmwzODYgMzUzLTM4NiAzNTR2LTE3N2gtMTE2N3YxNzdsLTM4NS0zNTR6Ii8+PHBhdGggZmlsbD0ibm9uZSIgZD0ibTY3MTkgODAzMCAzODUtMzUzdjE3NmgxMTY3di0xNzZsMzg2IDM1My0zODYgMzU0di0xNzdoLTExNjd2MTc3bC0zODUtMzU0eiIgc3Ryb2tlPSIjMzQ2NWFmIi8+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMTQwLjkgLTIxODYpIiBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcuQ3VzdG9tU2hhcGUiPjxwYXRoIGZpbGw9IiM3MjlmY2YiIGQ9Im02NzE5IDk2MTIgMzg1LTM1M3YxNzZoMTE2N3YtMTc2bDM4NiAzNTMtMzg2IDM1NHYtMTc3aC0xMTY3djE3N2wtMzg1LTM1NHoiLz48cGF0aCBmaWxsPSJub25lIiBkPSJtNjcxOSA5NjEyIDM4NS0zNTN2MTc2aDExNjd2LTE3NmwzODYgMzUzLTM4NiAzNTR2LTE3N2gtMTE2N3YxNzdsLTM4NS0zNTR6IiBzdHJva2U9IiMzNDY1YWYiLz48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxNDAuOSAtMjE4NikiIGNsYXNzPSJjb20uc3VuLnN0YXIuZHJhd2luZy5DdXN0b21TaGFwZSI+PHBhdGggZmlsbD0iIzcyOWZjZiIgZD0ibTY3MjEgMTExMDAgMzg1LTM1M3YxNzZoMTE2NnYtMTc2bDM4NiAzNTMtMzg2IDM1NHYtMTc3aC0xMTY2djE3N2wtMzg1LTM1NHoiLz48cGF0aCBmaWxsPSJub25lIiBkPSJtNjcyMSAxMTEwMCAzODUtMzUzdjE3NmgxMTY2di0xNzZsMzg2IDM1My0zODYgMzU0di0xNzdoLTExNjZ2MTc3bC0zODUtMzU0eiIgc3Ryb2tlPSIjMzQ2NWFmIi8+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMTQwLjkgLTI0MTEuOCkiIGNsYXNzPSJjb20uc3VuLnN0YXIuZHJhd2luZy5DdXN0b21TaGFwZSI+PHBhdGggZmlsbD0iIzcyOWZjZiIgZD0ibTk5NjIgMTM4NTQgMzg1LTM1M3YxNzZoMTE2NnYtMTc2bDM4NiAzNTMtMzg2IDM1NHYtMTc3aC0xMTY2djE3N2wtMzg1LTM1NHoiLz48cGF0aCBmaWxsPSJub25lIiBkPSJtOTk2MiAxMzg1NCAzODUtMzUzdjE3NmgxMTY2di0xNzZsMzg2IDM1My0zODYgMzU0di0xNzdoLTExNjZ2MTc3bC0zODUtMzU0eiIgc3Ryb2tlPSIjMzQ2NWFmIi8+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMTQwLjkgLTI0NjguMikiIGNsYXNzPSJjb20uc3VuLnN0YXIuZHJhd2luZy5DdXN0b21TaGFwZSI+PHBhdGggZmlsbD0iIzcyOWZjZiIgZD0ibTk5NjIgMTIxNjMgMzg1LTM1M3YxNzZoMTE2NnYtMTc2bDM4NiAzNTMtMzg2IDM1NHYtMTc3aC0xMTY2djE3N2wtMzg1LTM1NHoiLz48cGF0aCBmaWxsPSJub25lIiBkPSJtOTk2MiAxMjE2MyAzODUtMzUzdjE3NmgxMTY2di0xNzZsMzg2IDM1My0zODYgMzU0di0xNzdoLTExNjZ2MTc3bC0zODUtMzU0eiIgc3Ryb2tlPSIjMzQ2NWFmIi8+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMTQwLjkgLTIxODYpIiBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcuQ3VzdG9tU2hhcGUiPjxwYXRoIGZpbGw9IiM3MjlmY2YiIGQ9Im05OTYyIDE3MTU4IDY3MC0zNTN2MTc2aDIwMjh2LTE3Nmw2NzEgMzUzLTY3MSAzNTR2LTE3N2gtMjAyOHYxNzdsLTY3MC0zNTR6Ii8+PHBhdGggZmlsbD0ibm9uZSIgZD0ibTk5NjIgMTcxNTggNjcwLTM1M3YxNzZoMjAyOHYtMTc2bDY3MSAzNTMtNjcxIDM1NHYtMTc3aC0yMDI4djE3N2wtNjcwLTM1NHoiIHN0cm9rZT0iIzM0NjVhZiIvPjwvZz48ZyB0cmFuc2Zvcm09Im1hdHJpeCgwIC44MzMzOSAtMS4wMDA1IDAgMzAyNjggLTUyNzYuMykiIGNsYXNzPSJjb20uc3VuLnN0YXIuZHJhd2luZy5DdXN0b21TaGFwZSI+PHBhdGggZmlsbD0iIzcyOWZjZiIgZD0ibTIzMjI5IDEyNzc5IDEwMDktOTc4IDEwMDkgOTc4aC01MDV2Mjk1OWg1MDVsLTEwMDkgOTc5LTEwMDktOTc5aDUwNHYtMjk1OWgtNTA0eiIvPjxwYXRoIGZpbGw9Im5vbmUiIGQ9Im0yMzIyOSAxMjc3OSAxMDA5LTk3OCAxMDA5IDk3OGgtNTA1djI5NTloNTA1bC0xMDA5IDk3OS0xMDA5LTk3OWg1MDR2LTI5NTloLTUwNHoiIHN0cm9rZT0iIzM0NjVhZiIvPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtOTk3My42IC02NjYuNikiIGNsYXNzPSJjb20uc3VuLnN0YXIuZHJhd2luZy5UZXh0U2hhcGUiPjx0ZXh0IGNsYXNzPSJUZXh0U2hhcGUiPjx0c3BhbiBmb250LXNpemU9IjcwNnB4IiBmb250LWZhbWlseT0iJmFwb3M7VGltZXMgTmV3IFJvbWFuJmFwb3M7LCBzZXJpZiIgZm9udC13ZWlnaHQ9IjQwMCIgY2xhc3M9IlRleHRQYXJhZ3JhcGgiPjx0c3BhbiB5PSIxNTgzMiIgeD0iMjQzNDEiIGNsYXNzPSJUZXh0UG9zaXRpb24iIHRyYW5zZm9ybT0ibWF0cml4KDAsLTEsMSwwLDg1MDksNDAxNzMpIj48dHNwYW4gZmlsbD0iIzAwMDAwMCI+U3lzdGVtIEJ1czwvdHNwYW4+PC90c3Bhbj48L3RzcGFuPjwvdGV4dD4KKzwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjE0MC45IC0yMTg2KSIgY2xhc3M9ImNvbS5zdW4uc3Rhci5kcmF3aW5nLlJlY3RhbmdsZVNoYXBlIj48cGF0aCBmaWxsPSIjY2ZmIiBkPSJtMTMxNTEgOTI2MmgtMTI1MHYtODc1aDI0OTl2ODc1aC0xMjQ5eiIvPjxwYXRoIGZpbGw9Im5vbmUiIGQ9Im0xMzE1MSA5MjYyaC0xMjUwdi04NzVoMjQ5OXY4NzVoLTEyNDl6IiBzdHJva2U9IiMzNDY1YWYiLz48dGV4dCBjbGFzcz0iVGV4dFNoYXBlIj48dHNwYW4gZm9udC1zaXplPSI2MzVweCIgZm9udC1mYW1pbHk9IiZhcG9zO1RpbWVzIE5ldyBSb21hbiZhcG9zOywgc2VyaWYiIGZvbnQtd2VpZ2h0PSI0MDAiIGNsYXNzPSJUZXh0UGFyYWdyYXBoIj48dHNwYW4geT0iOTA0MCIgeD0iMTIyMTUiIGNsYXNzPSJUZXh0UG9zaXRpb24iPjx0c3BhbiBmaWxsPSIjMDAwMDAwIj5EZW11eDwvdHNwYW4+PC90c3Bhbj48L3RzcGFuPjwvdGV4dD4KKzwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjE0MC45IC0yMTg2KSIgY2xhc3M9ImNvbS5zdW4uc3Rhci5kcmF3aW5nLkN1c3RvbVNoYXBlIj48cGF0aCBmaWxsPSIjNzI5ZmNmIiBkPSJtOTk5NiA4NzY1IDM3My0zNTd2MTc4aDExMzB2LTE3OGwzNzQgMzU3LTM3NCAzNTh2LTE3OWgtMTEzMHYxNzlsLTM3My0zNTh6Ii8+PHBhdGggZmlsbD0ibm9uZSIgZD0ibTk5OTYgODc2NSAzNzMtMzU3djE3OGgxMTMwdi0xNzhsMzc0IDM1Ny0zNzQgMzU4di0xNzloLTExMzB2MTc5bC0zNzMtMzU4eiIgc3Ryb2tlPSIjMzQ2NWFmIi8+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMTQwLjkgLTIxODYpIiBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcuQ3VzdG9tU2hhcGUiPjxwYXRoIGZpbGw9IiM3MjlmY2YiIGQ9Im05OTk2IDczNzggMzczLTM1OHYxNzloMTEzMHYtMTc5bDM3NCAzNTgtMzc0IDM1OHYtMTc5aC0xMTMwdjE3OWwtMzczLTM1OHoiLz48cGF0aCBmaWxsPSJub25lIiBkPSJtOTk5NiA3Mzc4IDM3My0zNTh2MTc5aDExMzB2LTE3OWwzNzQgMzU4LTM3NCAzNTh2LTE3OWgtMTEzMHYxNzlsLTM3My0zNTh6IiBzdHJva2U9IiMzNDY1YWYiLz48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxNDAuOSAtMjE4NikiIGNsYXNzPSJjb20uc3VuLnN0YXIuZHJhd2luZy5SZWN0YW5nbGVTaGFwZSI+PHBhdGggZmlsbD0iI2NmZiIgZD0ibTE2MzIyIDc5OTJoLTQ0MjF2LTEyNzBoODg0MXYxMjcwaC00NDIweiIvPjxwYXRoIGZpbGw9Im5vbmUiIGQ9Im0xNjMyMiA3OTkyaC00NDIxdi0xMjcwaDg4NDF2MTI3MGgtNDQyMHoiIHN0cm9rZT0iIzM0NjVhZiIvPjx0ZXh0IGNsYXNzPSJUZXh0U2hhcGUiPjx0c3BhbiBmb250LXNpemU9IjYzNXB4IiBmb250LWZhbWlseT0iJmFwb3M7VGltZXMgTmV3IFJvbWFuJmFwb3M7LCBzZXJpZiIgZm9udC13ZWlnaHQ9IjQwMCIgY2xhc3M9IlRleHRQYXJhZ3JhcGgiPjx0c3BhbiB5PSI3NTczIiB4PSIxMjc4NiIgY2xhc3M9IlRleHRQb3NpdGlvbiI+PHRzcGFuIGZpbGw9IiMwMDAwMDAiPkNvbmRpdGlvbmFsIEFjY2VzcyBNb2R1bGU8L3RzcGFuPjwvdHNwYW4+PC90c3Bhbj48L3RleHQ+Cis8L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxNDAuOSAtMjE4NikiIGNsYXNzPSJjb20uc3VuLnN0YXIuZHJhd2luZy5SZWN0YW5nbGVTaGFwZSI+PHBhdGggZmlsbD0iI2ZmODA4MCIgZD0ibTQ0NDUgMTMyODdoLTIyNjl2LTEyMjRoNDUzN3YxMjI0aC0yMjY4eiIvPjxwYXRoIGZpbGw9Im5vbmUiIGQ9Im00NDQ1IDEzMjg3aC0yMjY5di0xMjI0aDQ1Mzd2MTIyNGgtMjI2OHoiIHN0cm9rZT0iIzM0NjVhZiIvPjx0ZXh0IGNsYXNzPSJUZXh0U2hhcGUiPjx0c3BhbiBmb250LXNpemU9IjYzNXB4IiBmb250LWZhbWlseT0iJmFwb3M7VGltZXMgTmV3IFJvbWFuJmFwb3M7LCBzZXJpZiIgZm9udC13ZWlnaHQ9IjQwMCIgY2xhc3M9IlRleHRQYXJhZ3JhcGgiPjx0c3BhbiB5PSIxMjg5MSIgeD0iMjYwMSIgY2xhc3M9IlRleHRQb3NpdGlvbiI+PHRzcGFuIGZpbGw9IiMwMDAwMDAiPlZpZGVvIGVuY29kZXI8L3RzcGFuPjwvdHNwYW4+PC90c3Bhbj48L3RleHQ+Cis8L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxNDAuOSAtMjE4NikiIGNsYXNzPSJjb20uc3VuLnN0YXIuZHJhd2luZy5DdXN0b21TaGFwZSI+PHBhdGggZmlsbD0iIzcyOWZjZiIgZD0ibTY3MjEgMTI2MzQgMzg1LTM1M3YxNzZoMTE2NnYtMTc2bDM4NiAzNTMtMzg2IDM1NHYtMTc3aC0xMTY2djE3N2wtMzg1LTM1NHoiLz48cGF0aCBmaWxsPSJub25lIiBkPSJtNjcyMSAxMjYzNCAzODUtMzUzdjE3NmgxMTY2di0xNzZsMzg2IDM1My0zODYgMzU0di0xNzdoLTExNjZ2MTc3bC0zODUtMzU0eiIgc3Ryb2tlPSIjMzQ2NWFmIi8+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMTQwLjkgLTIxODYpIiBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcuQ3VzdG9tU2hhcGUiPjxwYXRoIGZpbGw9IiM3MjlmY2YiIGQ9Im0yMDc5MSA3NTQ1IDM4NS0zNTN2MTc2aDExNjZ2LTE3NmwzODYgMzUzLTM4NiAzNTR2LTE3N2gtMTE2NnYxNzdsLTM4NS0zNTR6Ii8+PHBhdGggZmlsbD0ibm9uZSIgZD0ibTIwNzkxIDc1NDUgMzg1LTM1M3YxNzZoMTE2NnYtMTc2bDM4NiAzNTMtMzg2IDM1NHYtMTc3aC0xMTY2djE3N2wtMzg1LTM1NHoiIHN0cm9rZT0iIzM0NjVhZiIvPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjAyOCAtMjE4NikiIGNsYXNzPSJjb20uc3VuLnN0YXIuZHJhd2luZy5UZXh0U2hhcGUiPjx0ZXh0IGNsYXNzPSJUZXh0U2hhcGUiPjx0c3BhbiBmb250LXNpemU9IjYzNXB4IiBmb250LWZhbWlseT0iJmFwb3M7VGltZXMgTmV3IFJvbWFuJmFwb3M7LCBzZXJpZiIgZm9udC13ZWlnaHQ9IjQwMCIgY2xhc3M9IlRleHRQYXJhZ3JhcGgiPjx0c3BhbiB5PSIxNDQ3OCIgeD0iMTk5MCIgY2xhc3M9IlRleHRQb3NpdGlvbiI+PHRzcGFuIGZpbGw9IiMwMDAwMDAiPlJhZGlvIC8gQW5hbG9nIFRWPC90c3Bhbj48L3RzcGFuPjwvdHNwYW4+PC90ZXh0PgorPC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMTQwLjkgLTIxODYpIiBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcuVGV4dFNoYXBlIj48dGV4dCBjbGFzcz0iVGV4dFNoYXBlIj48dHNwYW4gZm9udC1zaXplPSI2MzVweCIgZm9udC1mYW1pbHk9IiZhcG9zO1RpbWVzIE5ldyBSb21hbiZhcG9zOywgc2VyaWYiIGZvbnQtd2VpZ2h0PSI3MDAiIGNsYXNzPSJUZXh0UGFyYWdyYXBoIj48dHNwYW4geT0iMTA3MjQiIHg9IjE0OTU2IiBjbGFzcz0iVGV4dFBvc2l0aW9uIj48dHNwYW4gZmlsbD0iIzAwMDAwMCI+RGlnaXRhbCBUVjwvdHNwYW4+PC90c3Bhbj48L3RzcGFuPjwvdGV4dD4KKzwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtODk3MC41IC0xMzk1LjgpIiBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcuVGV4dFNoYXBlIj48dGV4dCBjbGFzcz0iVGV4dFNoYXBlIj48dHNwYW4gZm9udC1zaXplPSI0OTRweCIgZm9udC1mYW1pbHk9IiZhcG9zO1RpbWVzIE5ldyBSb21hbiZhcG9zOywgc2VyaWYiIGZvbnQtd2VpZ2h0PSI0MDAiIGNsYXNzPSJUZXh0UGFyYWdyYXBoIj48dHNwYW4geT0iMTkxNjciIHg9IjE0NzI0IiBjbGFzcz0iVGV4dFBvc2l0aW9uIj48dHNwYW4gZmlsbD0iIzAwMDAwMCI+UFMuOiBwaWN0dXJlIGlzIG5vdCBjb21wbGV0ZTogb3RoZXIgYmxvY2tzIG1heSBiZSBwcmVzZW50PC90c3Bhbj48L3RzcGFuPjwvdHNwYW4+PC90ZXh0PgorPC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMTQwLjkgLTIxODYpIiBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcuVGV4dFNoYXBlIj48dGV4dCBjbGFzcz0iVGV4dFNoYXBlIj48dHNwYW4gZm9udC1zaXplPSI2MzVweCIgZm9udC1mYW1pbHk9IiZhcG9zO1RpbWVzIE5ldyBSb21hbiZhcG9zOywgc2VyaWYiIGZvbnQtd2VpZ2h0PSI0MDAiIGNsYXNzPSJUZXh0UGFyYWdyYXBoIj48dHNwYW4geT0iMTg1NjEiIHg9IjQxOTkiIGNsYXNzPSJUZXh0UG9zaXRpb24iPjx0c3BhbiBmaWxsPSIjMDAwMDAwIj5XZWJjYW08L3RzcGFuPjwvdHNwYW4+PC90c3Bhbj48L3RleHQ+Cis8L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxNDAuOSAtMjQ2OC4yKSIgY2xhc3M9ImNvbS5zdW4uc3Rhci5kcmF3aW5nLlJlY3RhbmdsZVNoYXBlIj48cGF0aCBmaWxsPSIjZjkwIiBkPSJtMTQ1NTIgMTYzNzJoLTI2NTB2LTE0MTJoNTI5OXYxNDEyaC0yNjQ5eiIvPjxwYXRoIGZpbGw9Im5vbmUiIGQ9Im0xNDU1MiAxNjM3MmgtMjY1MHYtMTQxMmg1Mjk5djE0MTJoLTI2NDl6IiBzdHJva2U9IiMzNDY1YWYiLz48dGV4dCBjbGFzcz0iVGV4dFNoYXBlIj48dHNwYW4gZm9udC1zaXplPSI2MzVweCIgZm9udC1mYW1pbHk9IiZhcG9zO1RpbWVzIE5ldyBSb21hbiZhcG9zOywgc2VyaWYiIGZvbnQtd2VpZ2h0PSI0MDAiIGNsYXNzPSJUZXh0UGFyYWdyYXBoIj48dHNwYW4geT0iMTU4ODIiIHg9IjEyMjY1IiBjbGFzcz0iVGV4dFBvc2l0aW9uIj48dHNwYW4gZmlsbD0iIzAwMDAwMCI+UHJvY2Vzc2luZyBibG9ja3M8L3RzcGFuPjwvdHNwYW4+PC90c3Bhbj48L3RleHQ+Cis8L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxNDAuOSAtMjQ2OC4yKSIgY2xhc3M9ImNvbS5zdW4uc3Rhci5kcmF3aW5nLkN1c3RvbVNoYXBlIj48cGF0aCBmaWxsPSIjNzI5ZmNmIiBkPSJtOTk2MiAxNTY1NCAzODUtMzUzdjE3NmgxMTY2di0xNzZsMzg2IDM1My0zODYgMzU0di0xNzdoLTExNjZ2MTc3bC0zODUtMzU0eiIvPjxwYXRoIGZpbGw9Im5vbmUiIGQ9Im05OTYyIDE1NjU0IDM4NS0zNTN2MTc2aDExNjZ2LTE3NmwzODYgMzUzLTM4NiAzNTR2LTE3N2gtMTE2NnYxNzdsLTM4NS0zNTR6IiBzdHJva2U9IiMzNDY1YWYiLz48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxNDAuOSAtMjE4NikiIGNsYXNzPSJjb20uc3VuLnN0YXIuZHJhd2luZy5DdXN0b21TaGFwZSI+PHBhdGggZmlsbD0iIzcyOWZjZiIgZD0ibTY3MDIgMTY5NTQgMzk3LTM1M3YxNzZoMTIwMXYtMTc2bDM5OCAzNTMtMzk4IDM1NHYtMTc3aC0xMjAxdjE3N2wtMzk3LTM1NHoiLz48cGF0aCBmaWxsPSJub25lIiBkPSJtNjcwMiAxNjk1NCAzOTctMzUzdjE3NmgxMjAxdi0xNzZsMzk4IDM1My0zOTggMzU0di0xNzdoLTEyMDF2MTc3bC0zOTctMzU0eiIgc3Ryb2tlPSIjMzQ2NWFmIi8+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yNDc5LjUgLTIxODYpIiBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcuVGV4dFNoYXBlIj48dGV4dCBjbGFzcz0iVGV4dFNoYXBlIj48dHNwYW4gZm9udC1zaXplPSI2MzVweCIgZm9udC1mYW1pbHk9IiZhcG9zO1RpbWVzIE5ldyBSb21hbiZhcG9zOywgc2VyaWYiIGZvbnQtd2VpZ2h0PSI0MDAiIGNsYXNzPSJUZXh0UGFyYWdyYXBoIj48dHNwYW4geT0iODc5MiIgeD0iMjI4NTAiIGNsYXNzPSJUZXh0UG9zaXRpb24iPjx0c3BhbiBmaWxsPSIjMDAwMDAwIj5TbWFydGNhcmQ8L3RzcGFuPjwvdHNwYW4+PC90c3Bhbj48L3RleHQ+Cis8L2c+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMS4wMDQ4IDAgMCAxIC0yMjA3LjQgLTIxODYpIiBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcuQ3VzdG9tU2hhcGUiPjxwYXRoIGZpbGw9IiNmY2YiIGQ9Im0yNzY2IDI2MDBjLTMzMyAwLTY2NiAzMzMtNjY2IDY2NnYyNjY4YzAgMzMzIDMzMyA2NjYgNjY2IDY2NmgxODM2OGMzMzMgMCA2NjctMzMzIDY2Ny02NjZ2LTI2NjhjMC0zMzMtMzM0LTY2Ni02NjctNjY2aC0xODM2OHoiLz48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxNDAuOSAtMjE4NikiIGNsYXNzPSJjb20uc3VuLnN0YXIuZHJhd2luZy5SZWN0YW5nbGVTaGFwZSI+PHBhdGggZmlsbD0iI2ZmODA4MCIgZD0ibTUxMjEgNTE1NWgtMTYxNHYtMTgxNmgzMjI3djE4MTZoLTE2MTN6Ii8+PHBhdGggZmlsbD0ibm9uZSIgZD0ibTUxMjEgNTE1NWgtMTYxNHYtMTgxNmgzMjI3djE4MTZoLTE2MTN6IiBzdHJva2U9IiMzNDY1YWYiLz48dGV4dCBmb250LXNpemU9IjYzNXB4IiBmb250LWZhbWlseT0iJmFwb3M7VGltZXMgTmV3IFJvbWFuJmFwb3M7LCBzZXJpZiIgZm9udC13ZWlnaHQ9IjQwMCIgY2xhc3M9IlRleHRTaGFwZSI+PHRzcGFuIGNsYXNzPSJUZXh0UGFyYWdyYXBoIj48dHNwYW4geT0iNDExMSIgeD0iNDM3NCIgY2xhc3M9IlRleHRQb3NpdGlvbiI+PHRzcGFuIGZpbGw9IiMwMDAwMDAiPlR1bmVyPC90c3Bhbj48L3RzcGFuPjwvdHNwYW4+PHRzcGFuIGNsYXNzPSJUZXh0UGFyYWdyYXBoIj48dHNwYW4geT0iNDgxNCIgeD0iNDE1MSIgY2xhc3M9IlRleHRQb3NpdGlvbiI+PHRzcGFuIGZpbGw9IiMwMDAwMDAiPkZNL1RWPC90c3Bhbj48L3RzcGFuPjwvdHNwYW4+PC90ZXh0PgorPC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMTQwLjkgLTIxODYpIiBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcuQ3VzdG9tU2hhcGUiPjxwYXRoIGZpbGw9IiNmZjgwODAiIGQ9Im0yOTAyIDM3MDJjMCAxMTEgNDAgMjAyIDg4IDIwMmg1MzBjNDggMCA4OS05MSA4OS0yMDIgMC0xMTAtNDEtMjAyLTg5LTIwMmgtNTMwYy00OCAwLTg4IDkyLTg4IDIwMnoiLz48cGF0aCBmaWxsPSJub25lIiBkPSJtMjkwMiAzNzAyYzAgMTExIDQwIDIwMiA4OCAyMDJoNTMwYzQ4IDAgODktOTEgODktMjAyIDAtMTEwLTQxLTIwMi04OS0yMDJoLTUzMGMtNDggMC04OCA5Mi04OCAyMDJ6IiBzdHJva2U9IiMzNDY1YWYiLz48cGF0aCBmaWxsPSIjZmZiM2IzIiBkPSJtMjkwMiAzNzAyYzAgMTExIDQwIDIwMiA4OCAyMDJzODgtOTEgODgtMjAyYzAtMTEwLTQwLTIwMi04OC0yMDJzLTg4IDkyLTg4IDIwMnoiLz48cGF0aCBmaWxsPSJub25lIiBkPSJtMjkwMiAzNzAyYzAgMTExIDQwIDIwMiA4OCAyMDJzODgtOTEgODgtMjAyYzAtMTEwLTQwLTIwMi04OC0yMDJzLTg4IDkyLTg4IDIwMnoiIHN0cm9rZT0iIzM0NjVhZiIvPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjE0MC45IC0yMTg2KSIgY2xhc3M9ImNvbS5zdW4uc3Rhci5kcmF3aW5nLkN1c3RvbVNoYXBlIj48cGF0aCBmaWxsPSIjZmY4MDgwIiBkPSJtMjkwMyA0MjY3YzAgMTEwIDQwIDIwMiA4OCAyMDJoNTMwYzQ4IDAgODktOTIgODktMjAycy00MS0yMDMtODktMjAzaC01MzBjLTQ4IDAtODggOTMtODggMjAzeiIvPjxwYXRoIGZpbGw9Im5vbmUiIGQ9Im0yOTAzIDQyNjdjMCAxMTAgNDAgMjAyIDg4IDIwMmg1MzBjNDggMCA4OS05MiA4OS0yMDJzLTQxLTIwMy04OS0yMDNoLTUzMGMtNDggMC04OCA5My04OCAyMDN6IiBzdHJva2U9IiMzNDY1YWYiLz48cGF0aCBmaWxsPSIjZmZiM2IzIiBkPSJtMjkwMyA0MjY3YzAgMTEwIDQwIDIwMiA4OCAyMDJzODgtOTIgODgtMjAyLTQwLTIwMy04OC0yMDMtODggOTMtODggMjAzeiIvPjxwYXRoIGZpbGw9Im5vbmUiIGQ9Im0yOTAzIDQyNjdjMCAxMTAgNDAgMjAyIDg4IDIwMnM4OC05MiA4OC0yMDItNDAtMjAzLTg4LTIwMy04OCA5My04OCAyMDN6IiBzdHJva2U9IiMzNDY1YWYiLz48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxNDAuOSAtMjE4NikiIGNsYXNzPSJjb20uc3VuLnN0YXIuZHJhd2luZy5DdXN0b21TaGFwZSI+PHBhdGggZmlsbD0iIzcyOWZjZiIgZD0ibTY3MTkgNDE5NiAzODUtMzUzdjE3NmgxMTY3di0xNzZsMzg2IDM1My0zODYgMzU0di0xNzdoLTExNjd2MTc3bC0zODUtMzU0eiIvPjxwYXRoIGZpbGw9Im5vbmUiIGQ9Im02NzE5IDQxOTYgMzg1LTM1M3YxNzZoMTE2N3YtMTc2bDM4NiAzNTMtMzg2IDM1NHYtMTc3aC0xMTY3djE3N2wtMzg1LTM1NHoiIHN0cm9rZT0iIzM0NjVhZiIvPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjE0MC45IC0yMTg2KSIgY2xhc3M9ImNvbS5zdW4uc3Rhci5kcmF3aW5nLkN1c3RvbVNoYXBlIj48cGF0aCBmaWxsPSIjNzI5ZmNmIiBkPSJtOTk3OSA0MTUwIDQwMi0zNjh2MTg0aDEyMTd2LTE4NGw0MDMgMzY4LTQwMyAzNjl2LTE4NWgtMTIxN3YxODVsLTQwMi0zNjl6Ii8+PHBhdGggZmlsbD0ibm9uZSIgZD0ibTk5NzkgNDE1MCA0MDItMzY4djE4NGgxMjE3di0xODRsNDAzIDM2OC00MDMgMzY5di0xODVoLTEyMTd2MTg1bC00MDItMzY5eiIgc3Ryb2tlPSIjMzQ2NWFmIi8+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMTQwLjkgLTIxODYpIiBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcuUmVjdGFuZ2xlU2hhcGUiPjxwYXRoIGZpbGw9IiNjZmYiIGQ9Im0xNjUwMCA2MTg5aC00NTAwdi0xMzg5aDllM3YxMzg5aC00NTAweiIvPjxwYXRoIGZpbGw9Im5vbmUiIGQ9Im0xNjUwMCA2MTg5aC00NTAwdi0xMzg5aDllM3YxMzg5aC00NTAweiIgc3Ryb2tlPSIjMzQ2NWFmIi8+PHRleHQgY2xhc3M9IlRleHRTaGFwZSI+PHRzcGFuIGZvbnQtc2l6ZT0iNjM1cHgiIGZvbnQtZmFtaWx5PSImYXBvcztUaW1lcyBOZXcgUm9tYW4mYXBvczssIHNlcmlmIiBmb250LXdlaWdodD0iNDAwIiBjbGFzcz0iVGV4dFBhcmFncmFwaCI+PHRzcGFuIHk9IjU3MTAiIHg9IjEyMDUxIiBjbGFzcz0iVGV4dFBvc2l0aW9uIj48dHNwYW4gZmlsbD0iIzAwMDAwMCI+U2F0ZWxsaXRlIEVxdWlwbWVudCBDb250cm9sIChTRUMpPC90c3Bhbj48L3RzcGFuPjwvdHNwYW4+PC90ZXh0PgorPC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMTQwLjkgLTIxODYpIiBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcuQ3VzdG9tU2hhcGUiPjxwYXRoIGZpbGw9IiNjZmYiIGQ9Im0xMzQwMCA0NjAwaC0xNDAwdi0xZTNoMjgwMHYxZTNoLTE0MDB6Ii8+PHBhdGggZmlsbD0ibm9uZSIgZD0ibTEzNDAwIDQ2MDBoLTE0MDB2LTFlM2gyODAwdjFlM2gtMTQwMHoiIHN0cm9rZT0iIzM0NjVhZiIvPjx0ZXh0IGNsYXNzPSJUZXh0U2hhcGUiPjx0c3BhbiBmb250LXNpemU9IjYzNXB4IiBmb250LWZhbWlseT0iJmFwb3M7VGltZXMgTmV3IFJvbWFuJmFwb3M7LCBzZXJpZiIgZm9udC13ZWlnaHQ9IjQwMCIgY2xhc3M9IlRleHRQYXJhZ3JhcGgiPjx0c3BhbiB5PSI0MzE2IiB4PSIxMjQ2NSIgY2xhc3M9IlRleHRQb3NpdGlvbiI+PHRzcGFuIGZpbGw9IiMwMDAwMDAiPkRlbW9kPC90c3Bhbj48L3RzcGFuPjwvdHNwYW4+PC90ZXh0PgorPC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMTQwLjkgLTIxODYpIiBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcuQ3VzdG9tU2hhcGUiPjxwYXRoIGZpbGw9IiM3MjlmY2YiIGQ9Im05OTc5IDU0NTEgNDAyLTM2OHYxODRoMTIxN3YtMTg0bDQwMyAzNjgtNDAzIDM2OXYtMTg1aC0xMjE3djE4NWwtNDAyLTM2OXoiLz48cGF0aCBmaWxsPSJub25lIiBkPSJtOTk3OSA1NDUxIDQwMi0zNjh2MTg0aDEyMTd2LTE4NGw0MDMgMzY4LTQwMyAzNjl2LTE4NWgtMTIxN3YxODVsLTQwMi0zNjl6IiBzdHJva2U9IiMzNDY1YWYiLz48L2c+PHBhdGggZmlsbD0iI2ZmOSIgZD0ibTc4NTUuMSA5MDk5djczMDJoLTEyNzB2LTE0NjA1aDEyNzB2NzMwM3oiLz48cGF0aCBmaWxsPSJub25lIiBkPSJtNzg1NS4xIDkwOTl2NzMwMmgtMTI3MHYtMTQ2MDVoMTI3MHY3MzAzeiIgc3Ryb2tlPSIjMzQ2NWFmIi8+PHRleHQgeT0iLTY2NDAuNDY2MyIgeD0iLTIwNzcwLjU3MiIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwKSIgY2xhc3M9IlRleHRTaGFwZSI+PHRzcGFuIGZvbnQtc2l6ZT0iNjM1cHgiIGZvbnQtZmFtaWx5PSImYXBvcztUaW1lcyBOZXcgUm9tYW4mYXBvczssIHNlcmlmIiBmb250LXdlaWdodD0iNDAwIiBjbGFzcz0iVGV4dFBhcmFncmFwaCI+PHRzcGFuIHk9Ijc0MDkuNTM5NiIgeD0iLTExMTkzLjYzNCIgY2xhc3M9IlRleHRQb3NpdGlvbiIgdHJhbnNmb3JtPSJtYXRyaXgoMCwtMSwxLDAsLTQ0NzMsMjM2MjcpIj48dHNwYW4gZmlsbD0iIzAwMDAwMCI+STJDIEJ1cyAoY29udHJvbCBidXMpPC90c3Bhbj48L3RzcGFuPjwvdHNwYW4+PC90ZXh0PgorPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIxOTcuMyAtMjE4NikiIGNsYXNzPSJjb20uc3VuLnN0YXIuZHJhd2luZy5UZXh0U2hhcGUiPjx0ZXh0IGNsYXNzPSJUZXh0U2hhcGUiPjx0c3BhbiBmb250LXNpemU9IjYzNXB4IiBmb250LWZhbWlseT0iJmFwb3M7VGltZXMgTmV3IFJvbWFuJmFwb3M7LCBzZXJpZiIgZm9udC13ZWlnaHQ9IjQwMCIgY2xhc3M9IlRleHRQYXJhZ3JhcGgiPjx0c3BhbiB5PSIzMjc4IiB4PSI5MzkxIiBjbGFzcz0iVGV4dFBvc2l0aW9uIj48dHNwYW4gZmlsbD0iIzAwMDAwMCI+RGlnaXRhbCBUViBGcm9udGVuZDwvdHNwYW4+PC90c3Bhbj48L3RzcGFuPjwvdGV4dD4KKzwvZz48ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLjAxNSAwIDAgLjk5OTk0IC0yMjMzLjMgLTIxODUuNykiIGNsYXNzPSJjb20uc3VuLnN0YXIuZHJhd2luZy5DdXN0b21TaGFwZSI+PGcgc3Ryb2tlPSIjMzQ2NWFmIiBmaWxsPSJub25lIj48cGF0aCBkPSJtM2UzIDI4MDBjLTE4IDAtMzUgMS01MyAzIi8+PHBhdGggZD0ibTI5MTUgMjgwOGMtMTcgMy0zNSA3LTUyIDEyIi8+PHBhdGggZD0ibTI4MzIgMjgzMGMtMTYgNi0zMyAxMi00OSAyMCIvPjxwYXRoIGQ9Im0yNzU0IDI4NjRjLTE1IDgtMzEgMTctNDYgMjciLz48cGF0aCBkPSJtMjY4MSAyOTA5Yy0xNCAxMC0yOCAyMS00MiAzMiIvPjxwYXRoIGQ9Im0yNjE0IDI5NjJjLTEzIDEyLTI2IDI0LTM4IDM3Ii8+PHBhdGggZD0ibTI1NTQgMzAyM2MtMTEgMTMtMjIgMjctMzMgNDEiLz48cGF0aCBkPSJtMjUwMiAzMDkxYy0xMCAxNC0xOSAyOS0yOCA0NSIvPjxwYXRoIGQ9Im0yNDU5IDMxNjRjLTggMTYtMTUgMzItMjIgNDkiLz48cGF0aCBkPSJtMjQyNiAzMjQzYy01IDE3LTEwIDM0LTE0IDUxIi8+PHBhdGggZD0ibTI0MDYgMzMyNmMtMyAxOC01IDM1LTYgNTMiLz48cGF0aCBkPSJtMjQwMCAzNDExdjUzIi8+PHBhdGggZD0ibTI0MDAgMzQ5N3Y1MyIvPjxwYXRoIGQ9Im0yNDAwIDM1ODJ2NTMiLz48cGF0aCBkPSJtMjQwMCAzNjY4djUzIi8+PHBhdGggZD0ibTI0MDAgMzc1M3Y1MyIvPjxwYXRoIGQ9Im0yNDAwIDM4Mzl2NTMiLz48cGF0aCBkPSJtMjQwMCAzOTI0djUzIi8+PHBhdGggZD0ibTI0MDAgNDAwOXY1NCIvPjxwYXRoIGQ9Im0yNDAwIDQwOTV2NTMiLz48cGF0aCBkPSJtMjQwMCA0MTgwdjUzIi8+PHBhdGggZD0ibTI0MDAgNDI2NnY1MyIvPjxwYXRoIGQ9Im0yNDAwIDQzNTF2NTMiLz48cGF0aCBkPSJtMjQwMCA0NDM3djUzIi8+PHBhdGggZD0ibTI0MDAgNDUyMnY1MyIvPjxwYXRoIGQ9Im0yNDAwIDQ2MDd2NTQiLz48cGF0aCBkPSJtMjQwMCA0NjkzdjUzIi8+PHBhdGggZD0ibTI0MDAgNDc3OHY1MyIvPjxwYXRoIGQ9Im0yNDAwIDQ4NjR2NTMiLz48cGF0aCBkPSJtMjQwMCA0OTQ5djUzIi8+PHBhdGggZD0ibTI0MDAgNTAzNXY1MyIvPjxwYXRoIGQ9Im0yNDAwIDUxMjB2NTMiLz48cGF0aCBkPSJtMjQwMCA1MjA1djU0Ii8+PHBhdGggZD0ibTI0MDAgNTI5MXY1MyIvPjxwYXRoIGQ9Im0yNDAwIDUzNzZ2NTMiLz48cGF0aCBkPSJtMjQwMCA1NDYydjUzIi8+PHBhdGggZD0ibTI0MDAgNTU0N3Y1MyIvPjxwYXRoIGQ9Im0yNDAwIDU2MzN2NTMiLz48cGF0aCBkPSJtMjQwMCA1NzE4djUzIi8+PHBhdGggZD0ibTI0MDAgNTgwM2MwIDE4IDEgMzYgMyA1MyIvPjxwYXRoIGQ9Im0yNDA4IDU4ODhjNCAxOCA4IDM1IDEzIDUyIi8+PHBhdGggZD0ibTI0MzEgNTk3MWM2IDE2IDEzIDMzIDIwIDQ5Ii8+PHBhdGggZD0ibTI0NjYgNjA0OWM4IDE1IDE3IDMxIDI3IDQ2Ii8+PHBhdGggZD0ibTI1MTEgNjEyMmMxMCAxNCAyMSAyOCAzMiA0MiIvPjxwYXRoIGQ9Im0yNTY0IDYxODhjMTIgMTMgMjUgMjYgMzggMzgiLz48cGF0aCBkPSJtMjYyNiA2MjQ4YzEzIDExIDI3IDIzIDQxIDMzIi8+PHBhdGggZD0ibTI2OTQgNjMwMGMxNCAxMCAyOSAxOSA0NSAyNyIvPjxwYXRoIGQ9Im0yNzY4IDYzNDNjMTUgNyAzMiAxNSA0OCAyMSIvPjxwYXRoIGQ9Im0yODQ3IDYzNzVjMTcgNSAzNCAxMCA1MSAxNCIvPjxwYXRoIGQ9Im0yOTMwIDYzOTVjMTcgMiAzNSA0IDUzIDUiLz48cGF0aCBkPSJtMzAxNSA2NDAwaDUzIi8+PHBhdGggZD0ibTMxMDAgNjQwMGg1MyIvPjxwYXRoIGQ9Im0zMTg2IDY0MDBoNTMiLz48cGF0aCBkPSJtMzI3MSA2NDAwaDUzIi8+PHBhdGggZD0ibTMzNTcgNjQwMGg1MyIvPjxwYXRoIGQ9Im0zNDQyIDY0MDBoNTMiLz48cGF0aCBkPSJtMzUyNyA2NDAwaDU0Ii8+PHBhdGggZD0ibTM2MTMgNjQwMGg1MyIvPjxwYXRoIGQ9Im0zNjk4IDY0MDBoNTMiLz48cGF0aCBkPSJtMzc4NCA2NDAwaDUzIi8+PHBhdGggZD0ibTM4NjkgNjQwMGg1MyIvPjxwYXRoIGQ9Im0zOTU1IDY0MDBoNTMiLz48cGF0aCBkPSJtNDA0MCA2NDAwaDUzIi8+PHBhdGggZD0ibTQxMjUgNjQwMGg1NCIvPjxwYXRoIGQ9Im00MjExIDY0MDBoNTMiLz48cGF0aCBkPSJtNDI5NiA2NDAwaDUzIi8+PHBhdGggZD0ibTQzODIgNjQwMGg1MyIvPjxwYXRoIGQ9Im00NDY3IDY0MDBoNTMiLz48cGF0aCBkPSJtNDU1MyA2NDAwaDUzIi8+PHBhdGggZD0ibTQ2MzggNjQwMGg1MyIvPjxwYXRoIGQ9Im00NzIzIDY0MDBoNTQiLz48cGF0aCBkPSJtNDgwOSA2NDAwaDUzIi8+PHBhdGggZD0ibTQ4OTQgNjQwMGg1MyIvPjxwYXRoIGQ9Im00OTgwIDY0MDBoNTMiLz48cGF0aCBkPSJtNTA2NSA2NDAwaDUzIi8+PHBhdGggZD0ibTUxNTEgNjQwMGg1MyIvPjxwYXRoIGQ9Im01MjM2IDY0MDBoNTMiLz48cGF0aCBkPSJtNTMyMiA2NDAwaDUzIi8+PHBhdGggZD0ibTU0MDcgNjQwMGg1MyIvPjxwYXRoIGQ9Im01NDkyIDY0MDBoNTMiLz48cGF0aCBkPSJtNTU3OCA2NDAwaDUzIi8+PHBhdGggZD0ibTU2NjMgNjQwMGg1MyIvPjxwYXRoIGQ9Im01NzQ5IDY0MDBoNTMiLz48cGF0aCBkPSJtNTgzNCA2NDAwaDUzIi8+PHBhdGggZD0ibTU5MjAgNjQwMGg1MyIvPjxwYXRoIGQ9Im02MDA1IDY0MDBoNTMiLz48cGF0aCBkPSJtNjA5MCA2NDAwaDUzIi8+PHBhdGggZD0ibTYxNzYgNjQwMGg1MyIvPjxwYXRoIGQ9Im02MjYxIDY0MDBoNTMiLz48cGF0aCBkPSJtNjM0NyA2NDAwaDUzIi8+PHBhdGggZD0ibTY0MzIgNjQwMGg1MyIvPjxwYXRoIGQ9Im02NTE4IDY0MDBoNTMiLz48cGF0aCBkPSJtNjYwMyA2NDAwaDUzIi8+PHBhdGggZD0ibTY2ODggNjQwMGg1NCIvPjxwYXRoIGQ9Im02Nzc0IDY0MDBoNTMiLz48cGF0aCBkPSJtNjg1OSA2NDAwaDUzIi8+PHBhdGggZD0ibTY5NDUgNjQwMGg1MyIvPjxwYXRoIGQ9Im03MDMwIDY0MDBoNTMiLz48cGF0aCBkPSJtNzExNiA2NDAwaDUzIi8+PHBhdGggZD0ibTcyMDEgNjQwMGg1MyIvPjxwYXRoIGQ9Im03Mjg2IDY0MDBoNTQiLz48cGF0aCBkPSJtNzM3MiA2NDAwaDUzIi8+PHBhdGggZD0ibTc0NTcgNjQwMGg1MyIvPjxwYXRoIGQ9Im03NTQzIDY0MDBoNTMiLz48cGF0aCBkPSJtNzYyOCA2NDAwaDUzIi8+PHBhdGggZD0ibTc3MTQgNjQwMGg1MyIvPjxwYXRoIGQ9Im03Nzk5IDY0MDBoNTMiLz48cGF0aCBkPSJtNzg4NCA2NDAwaDU0Ii8+PHBhdGggZD0ibTc5NzAgNjQwMGg1MyIvPjxwYXRoIGQ9Im04MDU1IDY0MDBoNTMiLz48cGF0aCBkPSJtODE0MSA2NDAwaDUzIi8+PHBhdGggZD0ibTgyMjYgNjQwMGg1MyIvPjxwYXRoIGQ9Im04MzEyIDY0MDBoNTMiLz48cGF0aCBkPSJtODM5NyA2NDAwaDUzIi8+PHBhdGggZD0ibTg0ODIgNjQwMGg1NCIvPjxwYXRoIGQ9Im04NTY4IDY0MDBoNTMiLz48cGF0aCBkPSJtODY1MyA2NDAwaDUzIi8+PHBhdGggZD0ibTg3MzkgNjQwMGg1MyIvPjxwYXRoIGQ9Im04ODI0IDY0MDBoNTMiLz48cGF0aCBkPSJtODkxMCA2NDAwaDUzIi8+PHBhdGggZD0ibTg5OTUgNjQwMGg1MyIvPjxwYXRoIGQ9Im05MDgxIDY0MDBoNTMiLz48cGF0aCBkPSJtOTE2NiA2NDAwaDUzIi8+PHBhdGggZD0ibTkyNTEgNjQwMGg1MyIvPjxwYXRoIGQ9Im05MzM3IDY0MDBoNTMiLz48cGF0aCBkPSJtOTQyMiA2NDAwaDUzIi8+PHBhdGggZD0ibTk1MDggNjQwMGg1MyIvPjxwYXRoIGQ9Im05NTkzIDY0MDBoNTMiLz48cGF0aCBkPSJtOTY3OSA2NDAwaDUzIi8+PHBhdGggZD0ibTk3NjQgNjQwMGg1MyIvPjxwYXRoIGQ9Im05ODQ5IDY0MDBoNTMiLz48cGF0aCBkPSJtOTkzNSA2NDAwaDUzIi8+PHBhdGggZD0ibTEwMDIwIDY0MDBoNTMiLz48cGF0aCBkPSJtMTAxMDYgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xMDE5MSA2NDAwaDUzIi8+PHBhdGggZD0ibTEwMjc3IDY0MDBoNTMiLz48cGF0aCBkPSJtMTAzNjIgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xMDQ0NyA2NDAwaDUzIi8+PHBhdGggZD0ibTEwNTMzIDY0MDBoNTMiLz48cGF0aCBkPSJtMTA2MTggNjQwMGg1MyIvPjxwYXRoIGQ9Im0xMDcwNCA2NDAwaDUzIi8+PHBhdGggZD0ibTEwNzg5IDY0MDBoNTMiLz48cGF0aCBkPSJtMTA4NzUgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xMDk2MCA2NDAwaDUzIi8+PHBhdGggZD0ibTExMDQ1IDY0MDBoNTQiLz48cGF0aCBkPSJtMTExMzEgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xMTIxNiA2NDAwaDUzIi8+PHBhdGggZD0ibTExMzAyIDY0MDBoNTMiLz48cGF0aCBkPSJtMTEzODcgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xMTQ3MyA2NDAwaDUzIi8+PHBhdGggZD0ibTExNTU4IDY0MDBoNTMiLz48cGF0aCBkPSJtMTE2NDMgNjQwMGg1NCIvPjxwYXRoIGQ9Im0xMTcyOSA2NDAwaDUzIi8+PHBhdGggZD0ibTExODE0IDY0MDBoNTMiLz48cGF0aCBkPSJtMTE5MDAgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xMTk4NSA2NDAwaDUzIi8+PHBhdGggZD0ibTEyMDcxIDY0MDBoNTMiLz48cGF0aCBkPSJtMTIxNTYgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xMjI0MSA2NDAwaDU0Ii8+PHBhdGggZD0ibTEyMzI3IDY0MDBoNTMiLz48cGF0aCBkPSJtMTI0MTIgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xMjQ5OCA2NDAwaDUzIi8+PHBhdGggZD0ibTEyNTgzIDY0MDBoNTMiLz48cGF0aCBkPSJtMTI2NjkgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xMjc1NCA2NDAwaDUzIi8+PHBhdGggZD0ibTEyODM5IDY0MDBoNTQiLz48cGF0aCBkPSJtMTI5MjUgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xMzAxMCA2NDAwaDUzIi8+PHBhdGggZD0ibTEzMDk2IDY0MDBoNTMiLz48cGF0aCBkPSJtMTMxODEgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xMzI2NyA2NDAwaDUzIi8+PHBhdGggZD0ibTEzMzUyIDY0MDBoNTMiLz48cGF0aCBkPSJtMTM0MzggNjQwMGg1MyIvPjxwYXRoIGQ9Im0xMzUyMyA2NDAwaDUzIi8+PHBhdGggZD0ibTEzNjA4IDY0MDBoNTMiLz48cGF0aCBkPSJtMTM2OTQgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xMzc3OSA2NDAwaDUzIi8+PHBhdGggZD0ibTEzODY1IDY0MDBoNTMiLz48cGF0aCBkPSJtMTM5NTAgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xNDAzNiA2NDAwaDUzIi8+PHBhdGggZD0ibTE0MTIxIDY0MDBoNTMiLz48cGF0aCBkPSJtMTQyMDYgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xNDI5MiA2NDAwaDUzIi8+PHBhdGggZD0ibTE0Mzc3IDY0MDBoNTMiLz48cGF0aCBkPSJtMTQ0NjMgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xNDU0OCA2NDAwaDUzIi8+PHBhdGggZD0ibTE0NjM0IDY0MDBoNTMiLz48cGF0aCBkPSJtMTQ3MTkgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xNDgwNCA2NDAwaDU0Ii8+PHBhdGggZD0ibTE0ODkwIDY0MDBoNTMiLz48cGF0aCBkPSJtMTQ5NzUgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xNTA2MSA2NDAwaDUzIi8+PHBhdGggZD0ibTE1MTQ2IDY0MDBoNTMiLz48cGF0aCBkPSJtMTUyMzIgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xNTMxNyA2NDAwaDUzIi8+PHBhdGggZD0ibTE1NDAyIDY0MDBoNTQiLz48cGF0aCBkPSJtMTU0ODggNjQwMGg1MyIvPjxwYXRoIGQ9Im0xNTU3MyA2NDAwaDUzIi8+PHBhdGggZD0ibTE1NjU5IDY0MDBoNTMiLz48cGF0aCBkPSJtMTU3NDQgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xNTgzMCA2NDAwaDUzIi8+PHBhdGggZD0ibTE1OTE1IDY0MDBoNTMiLz48cGF0aCBkPSJtMTYwMDAgNjQwMGg1NCIvPjxwYXRoIGQ9Im0xNjA4NiA2NDAwaDUzIi8+PHBhdGggZD0ibTE2MTcxIDY0MDBoNTMiLz48cGF0aCBkPSJtMTYyNTcgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xNjM0MiA2NDAwaDUzIi8+PHBhdGggZD0ibTE2NDI4IDY0MDBoNTMiLz48cGF0aCBkPSJtMTY1MTMgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xNjU5OCA2NDAwaDU0Ii8+PHBhdGggZD0ibTE2Njg0IDY0MDBoNTMiLz48cGF0aCBkPSJtMTY3NjkgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xNjg1NSA2NDAwaDUzIi8+PHBhdGggZD0ibTE2OTQwIDY0MDBoNTMiLz48cGF0aCBkPSJtMTcwMjYgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xNzExMSA2NDAwaDUzIi8+PHBhdGggZD0ibTE3MTk2IDY0MDBoNTQiLz48cGF0aCBkPSJtMTcyODIgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xNzM2NyA2NDAwaDUzIi8+PHBhdGggZD0ibTE3NDUzIDY0MDBoNTMiLz48cGF0aCBkPSJtMTc1MzggNjQwMGg1MyIvPjxwYXRoIGQ9Im0xNzYyNCA2NDAwaDUzIi8+PHBhdGggZD0ibTE3NzA5IDY0MDBoNTMiLz48cGF0aCBkPSJtMTc3OTUgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xNzg4MCA2NDAwaDUzIi8+PHBhdGggZD0ibTE3OTY1IDY0MDBoNTMiLz48cGF0aCBkPSJtMTgwNTEgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xODEzNiA2NDAwaDUzIi8+PHBhdGggZD0ibTE4MjIyIDY0MDBoNTMiLz48cGF0aCBkPSJtMTgzMDcgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xODM5MyA2NDAwaDUzIi8+PHBhdGggZD0ibTE4NDc4IDY0MDBoNTMiLz48cGF0aCBkPSJtMTg1NjMgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xODY0OSA2NDAwaDUzIi8+PHBhdGggZD0ibTE4NzM0IDY0MDBoNTMiLz48cGF0aCBkPSJtMTg4MjAgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xODkwNSA2NDAwaDUzIi8+PHBhdGggZD0ibTE4OTkxIDY0MDBoNTMiLz48cGF0aCBkPSJtMTkwNzYgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xOTE2MSA2NDAwaDU0Ii8+PHBhdGggZD0ibTE5MjQ3IDY0MDBoNTMiLz48cGF0aCBkPSJtMTkzMzIgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xOTQxOCA2NDAwaDUzIi8+PHBhdGggZD0ibTE5NTAzIDY0MDBoNTMiLz48cGF0aCBkPSJtMTk1ODkgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xOTY3NCA2NDAwaDUzIi8+PHBhdGggZD0ibTE5NzU5IDY0MDBoNTQiLz48cGF0aCBkPSJtMTk4NDUgNjQwMGg1MyIvPjxwYXRoIGQ9Im0xOTkzMCA2NDAwaDUzIi8+PHBhdGggZD0ibTIwMDE2IDY0MDBoNTMiLz48cGF0aCBkPSJtMjAxMDEgNjQwMGg1MyIvPjxwYXRoIGQ9Im0yMDE4NyA2NDAwaDUzIi8+PHBhdGggZD0ibTIwMjcyIDY0MDBoNTMiLz48cGF0aCBkPSJtMjAzNTcgNjQwMGg1NCIvPjxwYXRoIGQ9Im0yMDQ0MyA2NDAwaDUzIi8+PHBhdGggZD0ibTIwNTI4IDY0MDBoNTMiLz48cGF0aCBkPSJtMjA2MTQgNjQwMGMxNy0xIDM1LTIgNTMtNSIvPjxwYXRoIGQ9Im0yMDY5OSA2MzkwYzE3LTQgMzQtOSA1MS0xNCIvPjxwYXRoIGQ9Im0yMDc4MSA2MzY1YzE2LTYgMzItMTMgNDgtMjEiLz48cGF0aCBkPSJtMjA4NTggNjMyOWMxNS04IDMxLTE3IDQ1LTI3Ii8+PHBhdGggZD0ibTIwOTMwIDYyODNjMTQtMTAgMjgtMjEgNDItMzIiLz48cGF0aCBkPSJtMjA5OTYgNjIyOWMxMy0xMiAyNS0yNSAzNy0zOCIvPjxwYXRoIGQ9Im0yMTA1NSA2MTY3YzExLTE0IDIyLTI4IDMzLTQyIi8+PHBhdGggZD0ibTIxMTA2IDYwOThjMTAtMTUgMTktMzAgMjctNDUiLz48cGF0aCBkPSJtMjExNDggNjAyNGM3LTE2IDE0LTMzIDIwLTQ5Ii8+PHBhdGggZD0ibTIxMTc5IDU5NDRjNS0xNyA5LTM0IDEzLTUxIi8+PHBhdGggZD0ibTIxMTk3IDU4NjFjMi0xOCA0LTM1IDQtNTMiLz48cGF0aCBkPSJtMjEyMDEgNTc3NnYtNTQiLz48cGF0aCBkPSJtMjEyMDEgNTY5MHYtNTMiLz48cGF0aCBkPSJtMjEyMDEgNTYwNXYtNTMiLz48cGF0aCBkPSJtMjEyMDEgNTUxOXYtNTMiLz48cGF0aCBkPSJtMjEyMDEgNTQzNHYtNTMiLz48cGF0aCBkPSJtMjEyMDEgNTM0OHYtNTMiLz48cGF0aCBkPSJtMjEyMDEgNTI2M3YtNTMiLz48cGF0aCBkPSJtMjEyMDEgNTE3OHYtNTQiLz48cGF0aCBkPSJtMjEyMDEgNTA5MnYtNTMiLz48cGF0aCBkPSJtMjEyMDEgNTAwN3YtNTMiLz48cGF0aCBkPSJtMjEyMDEgNDkyMXYtNTMiLz48cGF0aCBkPSJtMjEyMDEgNDgzNnYtNTMiLz48cGF0aCBkPSJtMjEyMDEgNDc1MHYtNTMiLz48cGF0aCBkPSJtMjEyMDEgNDY2NXYtNTMiLz48cGF0aCBkPSJtMjEyMDEgNDU3OXYtNTMiLz48cGF0aCBkPSJtMjEyMDEgNDQ5NHYtNTMiLz48cGF0aCBkPSJtMjEyMDEgNDQwOXYtNTMiLz48cGF0aCBkPSJtMjEyMDEgNDMyM3YtNTMiLz48cGF0aCBkPSJtMjEyMDEgNDIzOHYtNTMiLz48cGF0aCBkPSJtMjEyMDEgNDE1MnYtNTMiLz48cGF0aCBkPSJtMjEyMDEgNDA2N3YtNTMiLz48cGF0aCBkPSJtMjEyMDEgMzk4MXYtNTMiLz48cGF0aCBkPSJtMjEyMDEgMzg5NnYtNTMiLz48cGF0aCBkPSJtMjEyMDEgMzgxMXYtNTMiLz48cGF0aCBkPSJtMjEyMDEgMzcyNXYtNTMiLz48cGF0aCBkPSJtMjEyMDEgMzY0MHYtNTMiLz48cGF0aCBkPSJtMjEyMDEgMzU1NHYtNTMiLz48cGF0aCBkPSJtMjEyMDEgMzQ2OXYtNTMiLz48cGF0aCBkPSJtMjEyMDEgMzM4M2MtMS0xNy0zLTM1LTUtNTIiLz48cGF0aCBkPSJtMjExOTAgMzI5OWMtNC0xNy04LTM1LTE0LTUxIi8+PHBhdGggZD0ibTIxMTY1IDMyMTdjLTYtMTYtMTMtMzMtMjEtNDkiLz48cGF0aCBkPSJtMjExMjkgMzE0MGMtOS0xNi0xOC0zMS0yOC00NiIvPjxwYXRoIGQ9Im0yMTA4MiAzMDY4Yy0xMC0xNC0yMS0yOC0zMy00MiIvPjxwYXRoIGQ9Im0yMTAyNyAzMDAyYy0xMi0xMy0yNC0yNS0zNy0zNyIvPjxwYXRoIGQ9Im0yMDk2NSAyOTQ0Yy0xNC0xMi0yOC0yMi00Mi0zMyIvPjxwYXRoIGQ9Im0yMDg5NiAyODkzYy0xNS05LTMwLTE4LTQ2LTI3Ii8+PHBhdGggZD0ibTIwODIxIDI4NTJjLTE2LTgtMzItMTQtNDktMjAiLz48cGF0aCBkPSJtMjA3NDEgMjgyMWMtMTctNS0zNC05LTUxLTEyIi8+PHBhdGggZD0ibTIwNjU4IDI4MDRjLTE4LTMtMzUtNC01My00Ii8+PHBhdGggZD0ibTIwNTczIDI4MDBoLTUzIi8+PHBhdGggZD0ibTIwNDg3IDI4MDBoLTUzIi8+PHBhdGggZD0ibTIwNDAyIDI4MDBoLTUzIi8+PHBhdGggZD0ibTIwMzE2IDI4MDBoLTUzIi8+PHBhdGggZD0ibTIwMjMxIDI4MDBoLTUzIi8+PHBhdGggZD0ibTIwMTQ2IDI4MDBoLTU0Ii8+PHBhdGggZD0ibTIwMDYwIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE5OTc1IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE5ODg5IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE5ODA0IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE5NzE4IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE5NjMzIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE5NTQ4IDI4MDBoLTU0Ii8+PHBhdGggZD0ibTE5NDYyIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE5Mzc3IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE5MjkxIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE5MjA2IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE5MTIwIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE5MDM1IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE4OTUwIDI4MDBoLTU0Ii8+PHBhdGggZD0ibTE4ODY0IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE4Nzc5IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE4NjkzIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE4NjA4IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE4NTIyIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE4NDM3IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE4MzUyIDI4MDBoLTU0Ii8+PHBhdGggZD0ibTE4MjY2IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE4MTgxIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE4MDk1IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE4MDEwIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE3OTI0IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE3ODM5IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE3NzUzIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE3NjY4IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE3NTgzIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE3NDk3IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE3NDEyIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE3MzI2IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE3MjQxIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE3MTU1IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE3MDcwIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE2OTg1IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE2ODk5IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE2ODE0IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE2NzI4IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE2NjQzIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE2NTU3IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE2NDcyIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE2Mzg3IDI4MDBoLTU0Ii8+PHBhdGggZD0ibTE2MzAxIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE2MjE2IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE2MTMwIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE2MDQ1IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE1OTU5IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE1ODc0IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE1Nzg5IDI4MDBoLTU0Ii8+PHBhdGggZD0ibTE1NzAzIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE1NjE4IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE1NTMyIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE1NDQ3IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE1MzYxIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE1Mjc2IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE1MTkxIDI4MDBoLTU0Ii8+PHBhdGggZD0ibTE1MTA1IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE1MDIwIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE0OTM0IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE0ODQ5IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE0NzYzIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE0Njc4IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE0NTkzIDI4MDBoLTU0Ii8+PHBhdGggZD0ibTE0NTA3IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE0NDIyIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE0MzM2IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE0MjUxIDI4MDBoLTUzIi8+PHBhdGggZD0ibTE0MTY1IDI4MDBoLTUzIi8+PHBhdGggZD0ibTE0MDgwIDI4MDBoLTUzIi8+PHBhdGggZD0ibTEzOTk0IDI4MDBoLTUzIi8+PHBhdGggZD0ibTEzOTA5IDI4MDBoLTUzIi8+PHBhdGggZD0ibTEzODI0IDI4MDBoLTUzIi8+PHBhdGggZD0ibTEzNzM4IDI4MDBoLTUzIi8+PHBhdGggZD0ibTEzNjUzIDI4MDBoLTUzIi8+PHBhdGggZD0ibTEzNTY3IDI4MDBoLTUzIi8+PHBhdGggZD0ibTEzNDgyIDI4MDBoLTUzIi8+PHBhdGggZD0ibTEzMzk2IDI4MDBoLTUzIi8+PHBhdGggZD0ibTEzMzExIDI4MDBoLTUzIi8+PHBhdGggZD0ibTEzMjI2IDI4MDBoLTUzIi8+PHBhdGggZD0ibTEzMTQwIDI4MDBoLTUzIi8+PHBhdGggZD0ibTEzMDU1IDI4MDBoLTUzIi8+PHBhdGggZD0ibTEyOTY5IDI4MDBoLTUzIi8+PHBhdGggZD0ibTEyODg0IDI4MDBoLTUzIi8+PHBhdGggZD0ibTEyNzk4IDI4MDBoLTUzIi8+PHBhdGggZD0ibTEyNzEzIDI4MDBoLTUzIi8+PHBhdGggZD0ibTEyNjI4IDI4MDBoLTUzIi8+PHBhdGggZD0ibTEyNTQyIDI4MDBoLTUzIi8+PHBhdGggZD0ibTEyNDU3IDI4MDBoLTUzIi8+PHBhdGggZD0ibTEyMzcxIDI4MDBoLTUzIi8+PHBhdGggZD0ibTEyMjg2IDI4MDBoLTUzIi8+PHBhdGggZD0ibTEyMjAwIDI4MDBoLTUzIi8+PHBhdGggZD0ibTEyMTE1IDI4MDBoLTUzIi8+PHBhdGggZD0ibTEyMDMwIDI4MDBoLTU0Ii8+PHBhdGggZD0ibTExOTQ0IDI4MDBoLTUzIi8+PHBhdGggZD0ibTExODU5IDI4MDBoLTUzIi8+PHBhdGggZD0ibTExNzczIDI4MDBoLTUzIi8+PHBhdGggZD0ibTExNjg4IDI4MDBoLTUzIi8+PHBhdGggZD0ibTExNjAyIDI4MDBoLTUzIi8+PHBhdGggZD0ibTExNTE3IDI4MDBoLTUzIi8+PHBhdGggZD0ibTExNDMyIDI4MDBoLTU0Ii8+PHBhdGggZD0ibTExMzQ2IDI4MDBoLTUzIi8+PHBhdGggZD0ibTExMjYxIDI4MDBoLTUzIi8+PHBhdGggZD0ibTExMTc1IDI4MDBoLTUzIi8+PHBhdGggZD0ibTExMDkwIDI4MDBoLTUzIi8+PHBhdGggZD0ibTExMDA0IDI4MDBoLTUzIi8+PHBhdGggZD0ibTEwOTE5IDI4MDBoLTUzIi8+PHBhdGggZD0ibTEwODM0IDI4MDBoLTU0Ii8+PHBhdGggZD0ibTEwNzQ4IDI4MDBoLTUzIi8+PHBhdGggZD0ibTEwNjYzIDI4MDBoLTUzIi8+PHBhdGggZD0ibTEwNTc3IDI4MDBoLTUzIi8+PHBhdGggZD0ibTEwNDkyIDI4MDBoLTUzIi8+PHBhdGggZD0ibTEwNDA2IDI4MDBoLTUzIi8+PHBhdGggZD0ibTEwMzIxIDI4MDBoLTUzIi8+PHBhdGggZD0ibTEwMjM2IDI4MDBoLTU0Ii8+PHBhdGggZD0ibTEwMTUwIDI4MDBoLTUzIi8+PHBhdGggZD0ibTEwMDY1IDI4MDBoLTUzIi8+PHBhdGggZD0ibTk5NzkgMjgwMGgtNTMiLz48cGF0aCBkPSJtOTg5NCAyODAwaC01MyIvPjxwYXRoIGQ9Im05ODA4IDI4MDBoLTUzIi8+PHBhdGggZD0ibTk3MjMgMjgwMGgtNTMiLz48cGF0aCBkPSJtOTYzNyAyODAwaC01MyIvPjxwYXRoIGQ9Im05NTUyIDI4MDBoLTUzIi8+PHBhdGggZD0ibTk0NjcgMjgwMGgtNTMiLz48cGF0aCBkPSJtOTM4MSAyODAwaC01MyIvPjxwYXRoIGQ9Im05Mjk2IDI4MDBoLTUzIi8+PHBhdGggZD0ibTkyMTAgMjgwMGgtNTMiLz48cGF0aCBkPSJtOTEyNSAyODAwaC01MyIvPjxwYXRoIGQ9Im05MDM5IDI4MDBoLTUzIi8+PHBhdGggZD0ibTg5NTQgMjgwMGgtNTMiLz48cGF0aCBkPSJtODg2OSAyODAwaC01MyIvPjxwYXRoIGQ9Im04NzgzIDI4MDBoLTUzIi8+PHBhdGggZD0ibTg2OTggMjgwMGgtNTMiLz48cGF0aCBkPSJtODYxMiAyODAwaC01MyIvPjxwYXRoIGQ9Im04NTI3IDI4MDBoLTUzIi8+PHBhdGggZD0ibTg0NDEgMjgwMGgtNTMiLz48cGF0aCBkPSJtODM1NiAyODAwaC01MyIvPjxwYXRoIGQ9Im04MjcxIDI4MDBoLTU0Ii8+PHBhdGggZD0ibTgxODUgMjgwMGgtNTMiLz48cGF0aCBkPSJtODEwMCAyODAwaC01MyIvPjxwYXRoIGQ9Im04MDE0IDI4MDBoLTUzIi8+PHBhdGggZD0ibTc5MjkgMjgwMGgtNTMiLz48cGF0aCBkPSJtNzg0MyAyODAwaC01MyIvPjxwYXRoIGQ9Im03NzU4IDI4MDBoLTUzIi8+PHBhdGggZD0ibTc2NzMgMjgwMGgtNTQiLz48cGF0aCBkPSJtNzU4NyAyODAwaC01MyIvPjxwYXRoIGQ9Im03NTAyIDI4MDBoLTUzIi8+PHBhdGggZD0ibTc0MTYgMjgwMGgtNTMiLz48cGF0aCBkPSJtNzMzMSAyODAwaC01MyIvPjxwYXRoIGQ9Im03MjQ1IDI4MDBoLTUzIi8+PHBhdGggZD0ibTcxNjAgMjgwMGgtNTMiLz48cGF0aCBkPSJtNzA3NSAyODAwaC01NCIvPjxwYXRoIGQ9Im02OTg5IDI4MDBoLTUzIi8+PHBhdGggZD0ibTY5MDQgMjgwMGgtNTMiLz48cGF0aCBkPSJtNjgxOCAyODAwaC01MyIvPjxwYXRoIGQ9Im02NzMzIDI4MDBoLTUzIi8+PHBhdGggZD0ibTY2NDcgMjgwMGgtNTMiLz48cGF0aCBkPSJtNjU2MiAyODAwaC01MyIvPjxwYXRoIGQ9Im02NDc3IDI4MDBoLTU0Ii8+PHBhdGggZD0ibTYzOTEgMjgwMGgtNTMiLz48cGF0aCBkPSJtNjMwNiAyODAwaC01MyIvPjxwYXRoIGQ9Im02MjIwIDI4MDBoLTUzIi8+PHBhdGggZD0ibTYxMzUgMjgwMGgtNTMiLz48cGF0aCBkPSJtNjA0OSAyODAwaC01MyIvPjxwYXRoIGQ9Im01OTY0IDI4MDBoLTUzIi8+PHBhdGggZD0ibTU4NzkgMjgwMGgtNTQiLz48cGF0aCBkPSJtNTc5MyAyODAwaC01MyIvPjxwYXRoIGQ9Im01NzA4IDI4MDBoLTUzIi8+PHBhdGggZD0ibTU2MjIgMjgwMGgtNTMiLz48cGF0aCBkPSJtNTUzNyAyODAwaC01MyIvPjxwYXRoIGQ9Im01NDUxIDI4MDBoLTUzIi8+PHBhdGggZD0ibTUzNjYgMjgwMGgtNTMiLz48cGF0aCBkPSJtNTI4MCAyODAwaC01MyIvPjxwYXRoIGQ9Im01MTk1IDI4MDBoLTUzIi8+PHBhdGggZD0ibTUxMTAgMjgwMGgtNTMiLz48cGF0aCBkPSJtNTAyNCAyODAwaC01MyIvPjxwYXRoIGQ9Im00OTM5IDI4MDBoLTUzIi8+PHBhdGggZD0ibTQ4NTMgMjgwMGgtNTMiLz48cGF0aCBkPSJtNDc2OCAyODAwaC01MyIvPjxwYXRoIGQ9Im00NjgyIDI4MDBoLTUzIi8+PHBhdGggZD0ibTQ1OTcgMjgwMGgtNTMiLz48cGF0aCBkPSJtNDUxMiAyODAwaC01MyIvPjxwYXRoIGQ9Im00NDI2IDI4MDBoLTUzIi8+PHBhdGggZD0ibTQzNDEgMjgwMGgtNTMiLz48cGF0aCBkPSJtNDI1NSAyODAwaC01MyIvPjxwYXRoIGQ9Im00MTcwIDI4MDBoLTUzIi8+PHBhdGggZD0ibTQwODQgMjgwMGgtNTMiLz48cGF0aCBkPSJtMzk5OSAyODAwaC01MyIvPjxwYXRoIGQ9Im0zOTE0IDI4MDBoLTU0Ii8+PHBhdGggZD0ibTM4MjggMjgwMGgtNTMiLz48cGF0aCBkPSJtMzc0MyAyODAwaC01MyIvPjxwYXRoIGQ9Im0zNjU3IDI4MDBoLTUzIi8+PHBhdGggZD0ibTM1NzIgMjgwMGgtNTMiLz48cGF0aCBkPSJtMzQ4NiAyODAwaC01MyIvPjxwYXRoIGQ9Im0zNDAxIDI4MDBoLTUzIi8+PHBhdGggZD0ibTMzMTYgMjgwMGgtNTQiLz48cGF0aCBkPSJtMzIzMCAyODAwaC01MyIvPjxwYXRoIGQ9Im0zMTQ1IDI4MDBoLTUzIi8+PHBhdGggZD0ibTMwNTkgMjgwMGgtNTMiLz48L2c+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMTk3LjMgLTIxODYpIj48cmVjdCBoZWlnaHQ9IjExMDAuNyIgd2lkdGg9IjEyMTMuNiIgeT0iNjkxNy4xIiB4PSIyMzI1NSIgZmlsbD0iI2YzZTc3NyIvPjxwYXRoIGZpbGw9IiNjYTQ2NzciIGQ9Im0yMjgwMiA3NzAwLjR2LTQwNS40NmwxNTAuNy0xNjkuMTZjODIuODg2LTkzLjAzOSAxNzAuNTMtMTg2LjYyIDE5NC43Ny0yMDcuOTZsNDQuMDY5LTM4Ljc5OCA3ODMuMjMtMC4wODYgNzgzLjIzLTAuMDg2djYxMy41IDYxMy41aC05NzgtOTc4di00MDUuNDZ6bTEwMjcuNyAxMzYuOTh2LTc4LjM3MmwtMTY5LjkxIDQuOTI1LTE2OS45MSA0LjkyNDktNS4wOSA0NS44NTRjLTguMjQ5IDc0LjMwMyA0Ni43MTEgMTAxLjA0IDIwNy42OSAxMDEuMDRoMTM3LjIxdi03OC4zNzJ6bTIzNS44Ni0yNjIuOTQgNC40OTUtMzQxLjMxIDIwNy4yLTguNjQwOCAyMDcuMi04LjY0MDggNS4xNDQtNDYuNDQzYzkuNTk2LTg2LjYxNS00MS44NjMtMTAyLjA1LTMyMi4wMi05Ni42MDdsLTI0Ni43MSA0Ljc5NTYtNC40MzggNDE5LjA4LTQuNDM5IDQxOS4wOGg3NC41MzcgNzQuNTM4bDQuNDk0LTM0MS4zMXptMzkxLjMgMzEzLjcyYzI2LjQxLTE5LjI4NiAzNi4yNTUtNDEuMzk5IDMyLjY5Ny03My40NDdsLTUuMDktNDUuODU0aC0xNzQuMDUtMTc0LjA1bC01LjM4IDQ4Ljk4NGMtOS45NyA5MC43NzEgMC45OTMgOTcuOTEgMTUwLjM2IDk3LjkxIDk5LjMwNSAwIDE0OC4yNy03LjY5ODIgMTc1LjUyLTI3LjU5NHptLTYyNy4xNi0yNzQuODR2LTc3Ljc2OGgtMTc0LjA1LTE3NC4wNXY2Ni4yNDZjMCAzNi40MzYgNC45NzMgNzEuNDMxIDExLjA1MSA3Ny43NjggNi4wNzggNi4zMzY2IDg0LjQwMSAxMS41MjEgMTc0LjA1IDExLjUyMWgxNjN2LTc3Ljc2OHptNjU5Ljg5LTQuOTE1NCA1LjEyNS03NC4wNDItMTc5LjE4IDQuOTE1NS0xNzkuMTggNC45MTU1LTUuMzggNDguOTg0Yy0xMC40NzMgOTUuMzQ4LTIuMjU5IDk5LjU3IDE4My4yOCA5NC4xOTdsMTcwLjItNC45Mjg0IDUuMTI1LTc0LjA0MnptLTY1OS44OS0yMzcuNjN2LTc4LjM3MmwtMTY5LjkxIDQuOTI1LTE2OS45MSA0LjkyNS01LjA5NyA3My40NDctNS4wOTcgNzMuNDQ3aDE3NSAxNzV2LTc4LjM3MnptNjU5Ljg2IDQuOTI1LTUuMDk3LTczLjQ0N2gtMTc0LjA1LTE3NC4wNWwtNS4zOCA0OC45ODRjLTEwLjI4OSA5My42NzMtMi4xNDYgOTcuOTEgMTg4LjE1IDk3LjkxaDE3NS41MmwtNS4wOTctNzMuNDQ3em0tNjU5Ljg2LTIyOC45OHYtNzcuNzY4aC0xMzcuMjFjLTk3LjM1OCAwLTE0Ny45MSA3LjgxMzgtMTc0LjA1IDI2LjkwMi0zNC45NTIgMjUuNTIzLTQ5LjY0NSA5Mi4yNDItMjUuNzkgMTE3LjExIDYuMDc4IDYuMzM2NiA4NC40MDEgMTEuNTIxIDE3NC4wNSAxMS41MjFoMTYzdi03Ny43Njh6Ii8+PC9nPjxnIHRyYW5zZm9ybT0ibWF0cml4KC44NDg3NCAwIDAgLjc2MTQ3IDI0MDguMSAzNjE1LjMpIj48cmVjdCBoZWlnaHQ9IjMwNzYuMiIgd2lkdGg9IjI3MzQuMyIgeT0iMTMyNjQiIHg9IjE5MjQ5IiBmaWxsPSIjNjA3NmIzIi8+PGcgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2Utd2lkdGg9IjI4LjIyMiIgZmlsbD0iI2UwZWUyYyI+PHJlY3QgeT0iMTMzNjkiIHdpZHRoPSIzNTYuNjUiIHg9IjE4OTM3IiBoZWlnaHQ9IjE4MC45NSIvPjxyZWN0IHk9IjEzNzA4IiB3aWR0aD0iMzU2LjY1IiB4PSIxODkzNyIgaGVpZ2h0PSIxODAuOTUiLz48cmVjdCB5PSIxNDA0OCIgd2lkdGg9IjM1Ni42NSIgeD0iMTg5MzciIGhlaWdodD0iMTgwLjk1Ii8+PHJlY3QgeT0iMTQzODciIHdpZHRoPSIzNTYuNjUiIHg9IjE4OTM3IiBoZWlnaHQ9IjE4MC45NSIvPjxyZWN0IHk9IjE0NzI2IiB3aWR0aD0iMzU2LjY1IiB4PSIxODkzNyIgaGVpZ2h0PSIxODAuOTUiLz48cmVjdCB5PSIxNTA2NiIgd2lkdGg9IjM1Ni42NSIgeD0iMTg5MzciIGhlaWdodD0iMTgwLjk1Ii8+PHJlY3QgeT0iMTU0MDUiIHdpZHRoPSIzNTYuNjUiIHg9IjE4OTM3IiBoZWlnaHQ9IjE4MC45NSIvPjxyZWN0IHk9IjE1NzQ0IiB3aWR0aD0iMzU2LjY1IiB4PSIxODkzNyIgaGVpZ2h0PSIxODAuOTUiLz48cmVjdCB5PSIxNjA4MyIgd2lkdGg9IjM1Ni42NSIgeD0iMTg5MzciIGhlaWdodD0iMTgwLjk1Ii8+PHJlY3QgeT0iMTMzMjQiIHdpZHRoPSIzNTYuNjUiIHg9IjIxOTM5IiBoZWlnaHQ9IjE4MC45NSIvPjxyZWN0IHk9IjEzNjYzIiB3aWR0aD0iMzU2LjY1IiB4PSIyMTkzOSIgaGVpZ2h0PSIxODAuOTUiLz48cmVjdCB5PSIxNDAwMiIgd2lkdGg9IjM1Ni42NSIgeD0iMjE5MzkiIGhlaWdodD0iMTgwLjk1Ii8+PHJlY3QgeT0iMTQzNDIiIHdpZHRoPSIzNTYuNjUiIHg9IjIxOTM5IiBoZWlnaHQ9IjE4MC45NSIvPjxyZWN0IHk9IjE0NjgxIiB3aWR0aD0iMzU2LjY1IiB4PSIyMTkzOSIgaGVpZ2h0PSIxODAuOTUiLz48cmVjdCB5PSIxNTAyMCIgd2lkdGg9IjM1Ni42NSIgeD0iMjE5MzkiIGhlaWdodD0iMTgwLjk1Ii8+PHJlY3QgeT0iMTUzNjAiIHdpZHRoPSIzNTYuNjUiIHg9IjIxOTM5IiBoZWlnaHQ9IjE4MC45NSIvPjxyZWN0IHk9IjE1Njk5IiB3aWR0aD0iMzU2LjY1IiB4PSIyMTkzOSIgaGVpZ2h0PSIxODAuOTUiLz48cmVjdCB5PSIxNjAzOCIgd2lkdGg9IjM1Ni42NSIgeD0iMjE5MzkiIGhlaWdodD0iMTgwLjk1Ii8+PC9nPjxnIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGZpbGwtcnVsZT0iZXZlbm9kZCIgdHJhbnNmb3JtPSJtYXRyaXgoLjk4NzAyIDAgMCAuOTAzMzYgLTI2NzUgNzAyMC44KSIgY2xhc3M9ImNvbS5zdW4uc3Rhci5kcmF3aW5nLlRleHRTaGFwZSIgc3Ryb2tlLXdpZHRoPSIyOC4yMjIiPjx0ZXh0IGNsYXNzPSJUZXh0U2hhcGUiPjx0c3BhbiBmb250LXNpemU9IjYzNXB4IiBmb250LWZhbWlseT0iJmFwb3M7VGltZXMgTmV3IFJvbWFuJmFwb3M7LCBzZXJpZiIgZm9udC13ZWlnaHQ9IjQwMCIgY2xhc3M9IlRleHRQYXJhZ3JhcGgiLz48L3RleHQ+Cis8dGV4dCBzdHlsZT0id29yZC1zcGFjaW5nOjBweDtsZXR0ZXItc3BhY2luZzowcHgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZvbnQtc2l6ZT0iMTEyOC45cHgiIHk9IjkwNDIuMDI2NCIgeD0iMjI0MzkuNjY4IiBmb250LWZhbWlseT0iU2FucyIgbGluZS1oZWlnaHQ9IjEyNSUiIGZpbGw9IiMwMDAwMDAiPjx0c3BhbiB5PSI5MDQyLjAyNjQiIHg9IjIyNDM5LjY2OCI+Q1BVPC90c3Bhbj48L3RleHQ+Cis8L2c+PC9nPjxnIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGZpbGwtcnVsZT0iZXZlbm9kZCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTExNzUyIDU0My42KSIgY2xhc3M9ImNvbS5zdW4uc3Rhci5kcmF3aW5nLlRleHRTaGFwZSIgc3Ryb2tlLXdpZHRoPSIyOC4yMjIiPjx0ZXh0IGNsYXNzPSJUZXh0U2hhcGUiPjx0c3BhbiBmb250LXNpemU9IjcwNnB4IiBmb250LWZhbWlseT0iJmFwb3M7VGltZXMgTmV3IFJvbWFuJmFwb3M7LCBzZXJpZiIgZm9udC13ZWlnaHQ9IjQwMCIgY2xhc3M9IlRleHRQYXJhZ3JhcGgiPjx0c3BhbiB5PSIxNTgzMiIgeD0iMjQzNDEiIGNsYXNzPSJUZXh0UG9zaXRpb24iIHRyYW5zZm9ybT0ibWF0cml4KDAsLTEsMSwwLDg1MDksNDAxNzMpIj48dHNwYW4gZmlsbD0iIzAwMDAwMCI+UENJLCBVU0IsIFNQSSwgSTJDLCAuLi48L3RzcGFuPjwvdHNwYW4+PC90c3Bhbj48L3RleHQ+Cis8L2c+PGcgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZmlsbC1ydWxlPSJldmVub2RkIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNjU1LjMxIDk2My44MykiIGNsYXNzPSJjb20uc3VuLnN0YXIuZHJhd2luZy5SZWN0YW5nbGVTaGFwZSIgc3Ryb2tlLXdpZHRoPSIyOC4yMjIiPjxnIHRyYW5zZm9ybT0ibWF0cml4KC40OTE2NiAwIDAgMS4wMDU5IDYwNDUuNiAtODIuMjQpIj48cGF0aCBmaWxsPSIjY2ZlN2Y1IiBkPSJtMTQxNjkgMTQ1NzJoLTIyNjh2LTE0MTJoNDUzNnYxNDEyaC0yMjY4eiIvPjxwYXRoIGZpbGw9Im5vbmUiIGQ9Im0xNDE2OSAxNDU3MmgtMjI2OHYtMTQxMmg0NTM2djE0MTJoLTIyNjh6IiBzdHJva2U9IiMzNDY1YWYiLz48L2c+PHRleHQgeT0iLTM5NS4xMTI4MiIgeD0iLTc5MC4yMjIyOSIgY2xhc3M9IlRleHRTaGFwZSI+PHRzcGFuIGZvbnQtc2l6ZT0iNjM1cHgiIGZvbnQtZmFtaWx5PSImYXBvcztUaW1lcyBOZXcgUm9tYW4mYXBvczssIHNlcmlmIiBmb250LXdlaWdodD0iNDAwIiBjbGFzcz0iVGV4dFBhcmFncmFwaCI+PHRzcGFuIHk9IjEzNjg2LjkiIHg9IjEyMDkxLjc3OSIgY2xhc3M9IlRleHRQb3NpdGlvbiI+PHRzcGFuIGZpbGw9IiMwMDAwMDAiPkJyaWRnZTwvdHNwYW4+PC90c3Bhbj48L3RzcGFuPjwvdGV4dD4KKzx0ZXh0IHk9IjMzOC42NjQ4NiIgeD0iLTg0Ni42NjY3NSIgY2xhc3M9IlRleHRTaGFwZSI+PHRzcGFuIGZvbnQtc2l6ZT0iNjM1cHgiIGZvbnQtZmFtaWx5PSImYXBvcztUaW1lcyBOZXcgUm9tYW4mYXBvczssIHNlcmlmIiBmb250LXdlaWdodD0iNDAwIiBjbGFzcz0iVGV4dFBhcmFncmFwaCI+PHRzcGFuIHk9IjE0NDIwLjY3NyIgeD0iMTIwMzUuMzM1IiBjbGFzcz0iVGV4dFBvc2l0aW9uIj48dHNwYW4gZmlsbD0iIzAwMDAwMCI+IERNQTwvdHNwYW4+PC90c3Bhbj48L3RzcGFuPjwvdGV4dD4KKzwvZz48L3N2Zz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvLmdpdGlnbm9yZSBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2VjMzJlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC8uZ2l0aWdub3JlCkBAIC0wLDAgKzEgQEAKKyEqLnhtbApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9iaWJsaW8ueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9iaWJsaW8ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliZWIzMGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2JpYmxpby54bWwKQEAgLTAsMCArMSwzNzEgQEAKKyAgPGJpYmxpb2dyYXBoeT4KKyAgICA8dGl0bGU+UmVmZXJlbmNlczwvdGl0bGU+CisKKyAgICA8YmlibGlvZW50cnkgaWQ9ImNlYTYwOCI+CisgICAgICA8YWJicmV2PkNFQSZuYnNwOzYwOC1FPC9hYmJyZXY+CisgICAgICA8YXV0aG9yZ3JvdXA+CisJPGNvcnBhdXRob3I+Q29uc3VtZXIgRWxlY3Ryb25pY3MgQXNzb2NpYXRpb24gKDx1bGluawordXJsPSJodHRwOi8vd3d3LmNlLm9yZyI+aHR0cDovL3d3dy5jZS5vcmc8L3VsaW5rPik8L2NvcnBhdXRob3I+CisgICAgICA8L2F1dGhvcmdyb3VwPgorICAgICAgPHRpdGxlPkNFQS02MDgtRSBSLTIwMTQgIkxpbmUgMjEgRGF0YSBTZXJ2aWNlcyI8L3RpdGxlPgorICAgIDwvYmlibGlvZW50cnk+CisKKyAgICA8YmlibGlvZW50cnkgaWQ9ImVuMzAwMjk0Ij4KKyAgICAgIDxhYmJyZXY+RU4mbmJzcDszMDAmbmJzcDsyOTQ8L2FiYnJldj4KKyAgICAgIDxhdXRob3Jncm91cD4KKwk8Y29ycGF1dGhvcj5FdXJvcGVhbiBUZWxlY29tbXVuaWNhdGlvbiBTdGFuZGFyZHMgSW5zdGl0dXRlCisoPHVsaW5rIHVybD0iaHR0cDovL3d3dy5ldHNpLm9yZyI+aHR0cDovL3d3dy5ldHNpLm9yZzwvdWxpbms+KTwvY29ycGF1dGhvcj4KKyAgICAgIDwvYXV0aG9yZ3JvdXA+CisgICAgICA8dGl0bGU+RU4gMzAwIDI5NCAiNjI1LWxpbmUgdGVsZXZpc2lvbiBXaWRlIFNjcmVlbiBTaWduYWxsaW5nCisoV1NTKSI8L3RpdGxlPgorICAgIDwvYmlibGlvZW50cnk+CisKKyAgICA8YmlibGlvZW50cnkgaWQ9ImV0czMwMDIzMSI+CisgICAgICA8YWJicmV2PkVUUyZuYnNwOzMwMCZuYnNwOzIzMTwvYWJicmV2PgorICAgICAgPGF1dGhvcmdyb3VwPgorCTxjb3JwYXV0aG9yPkV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9uIFN0YW5kYXJkcyBJbnN0aXR1dGUKKyg8dWxpbmsKK3VybD0iaHR0cDovL3d3dy5ldHNpLm9yZyI+aHR0cDovL3d3dy5ldHNpLm9yZzwvdWxpbms+KTwvY29ycGF1dGhvcj4KKyAgICAgIDwvYXV0aG9yZ3JvdXA+CisgICAgICA8dGl0bGU+RVRTIDMwMCAyMzEgIlNwZWNpZmljYXRpb24gb2YgdGhlIGRvbWVzdGljIHZpZGVvCitQcm9ncmFtbWUgRGVsaXZlcnkgQ29udHJvbCBzeXN0ZW0gKFBEQykiPC90aXRsZT4KKyAgICA8L2JpYmxpb2VudHJ5PgorCisgICAgPGJpYmxpb2VudHJ5IGlkPSJldHMzMDA3MDYiPgorICAgICAgPGFiYnJldj5FVFMmbmJzcDszMDAmbmJzcDs3MDY8L2FiYnJldj4KKyAgICAgIDxhdXRob3Jncm91cD4KKwk8Y29ycGF1dGhvcj5FdXJvcGVhbiBUZWxlY29tbXVuaWNhdGlvbiBTdGFuZGFyZHMgSW5zdGl0dXRlCisoPHVsaW5rIHVybD0iaHR0cDovL3d3dy5ldHNpLm9yZyI+aHR0cDovL3d3dy5ldHNpLm9yZzwvdWxpbms+KTwvY29ycGF1dGhvcj4KKyAgICAgIDwvYXV0aG9yZ3JvdXA+CisgICAgICA8dGl0bGU+RVRTIDMwMCA3MDYgIkVuaGFuY2VkIFRlbGV0ZXh0IHNwZWNpZmljYXRpb24iPC90aXRsZT4KKyAgICA8L2JpYmxpb2VudHJ5PgorCisgICAgPGJpYmxpb2VudHJ5IGlkPSJtcGVnMnBhcnQxIj4KKyAgICAgIDxhYmJyZXY+SVNPJm5ic3A7MTM4MTgtMTwvYWJicmV2PgorICAgICAgPGF1dGhvcmdyb3VwPgorCTxjb3JwYXV0aG9yPkludGVybmF0aW9uYWwgVGVsZWNvbW11bmljYXRpb24gVW5pb24gKDx1bGluawordXJsPSJodHRwOi8vd3d3Lml0dS5jaCI+aHR0cDovL3d3dy5pdHUuY2g8L3VsaW5rPiksIEludGVybmF0aW9uYWwKK09yZ2FuaXNhdGlvbiBmb3IgU3RhbmRhcmRpc2F0aW9uICg8dWxpbmsKK3VybD0iaHR0cDovL3d3dy5pc28uY2giPmh0dHA6Ly93d3cuaXNvLmNoPC91bGluaz4pPC9jb3JwYXV0aG9yPgorICAgICAgPC9hdXRob3Jncm91cD4KKyAgICAgIDx0aXRsZT5JVFUtVCBSZWMuIEguMjIyLjAgfCBJU08vSUVDIDEzODE4LTEgIkluZm9ybWF0aW9uCit0ZWNobm9sb2d5ICZtZGFzaDsgR2VuZXJpYyBjb2Rpbmcgb2YgbW92aW5nIHBpY3R1cmVzIGFuZCBhc3NvY2lhdGVkCithdWRpbyBpbmZvcm1hdGlvbjogU3lzdGVtcyI8L3RpdGxlPgorICAgIDwvYmlibGlvZW50cnk+CisKKyAgICA8YmlibGlvZW50cnkgaWQ9Im1wZWcycGFydDIiPgorICAgICAgPGFiYnJldj5JU08mbmJzcDsxMzgxOC0yPC9hYmJyZXY+CisgICAgICA8YXV0aG9yZ3JvdXA+CisJPGNvcnBhdXRob3I+SW50ZXJuYXRpb25hbCBUZWxlY29tbXVuaWNhdGlvbiBVbmlvbiAoPHVsaW5rCit1cmw9Imh0dHA6Ly93d3cuaXR1LmNoIj5odHRwOi8vd3d3Lml0dS5jaDwvdWxpbms+KSwgSW50ZXJuYXRpb25hbAorT3JnYW5pc2F0aW9uIGZvciBTdGFuZGFyZGlzYXRpb24gKDx1bGluawordXJsPSJodHRwOi8vd3d3Lmlzby5jaCI+aHR0cDovL3d3dy5pc28uY2g8L3VsaW5rPik8L2NvcnBhdXRob3I+CisgICAgICA8L2F1dGhvcmdyb3VwPgorICAgICAgPHRpdGxlPklUVS1UIFJlYy4gSC4yNjIgfCBJU08vSUVDIDEzODE4LTIgIkluZm9ybWF0aW9uCit0ZWNobm9sb2d5ICZtZGFzaDsgR2VuZXJpYyBjb2Rpbmcgb2YgbW92aW5nIHBpY3R1cmVzIGFuZCBhc3NvY2lhdGVkCithdWRpbyBpbmZvcm1hdGlvbjogVmlkZW8iPC90aXRsZT4KKyAgICA8L2JpYmxpb2VudHJ5PgorCisgICAgPGJpYmxpb2VudHJ5IGlkPSJpdHU0NzAiPgorICAgICAgPGFiYnJldj5JVFUmbmJzcDtCVC40NzA8L2FiYnJldj4KKyAgICAgIDxhdXRob3Jncm91cD4KKwk8Y29ycGF1dGhvcj5JbnRlcm5hdGlvbmFsIFRlbGVjb21tdW5pY2F0aW9uIFVuaW9uICg8dWxpbmsKK3VybD0iaHR0cDovL3d3dy5pdHUuY2giPmh0dHA6Ly93d3cuaXR1LmNoPC91bGluaz4pPC9jb3JwYXV0aG9yPgorICAgICAgPC9hdXRob3Jncm91cD4KKyAgICAgIDx0aXRsZT5JVFUtUiBSZWNvbW1lbmRhdGlvbiBCVC40NzAtNiAiQ29udmVudGlvbmFsIFRlbGV2aXNpb24KK1N5c3RlbXMiPC90aXRsZT4KKyAgICA8L2JpYmxpb2VudHJ5PgorCisgICAgPGJpYmxpb2VudHJ5IGlkPSJpdHU2MDEiPgorICAgICAgPGFiYnJldj5JVFUmbmJzcDtCVC42MDE8L2FiYnJldj4KKyAgICAgIDxhdXRob3Jncm91cD4KKwk8Y29ycGF1dGhvcj5JbnRlcm5hdGlvbmFsIFRlbGVjb21tdW5pY2F0aW9uIFVuaW9uICg8dWxpbmsKK3VybD0iaHR0cDovL3d3dy5pdHUuY2giPmh0dHA6Ly93d3cuaXR1LmNoPC91bGluaz4pPC9jb3JwYXV0aG9yPgorICAgICAgPC9hdXRob3Jncm91cD4KKyAgICAgIDx0aXRsZT5JVFUtUiBSZWNvbW1lbmRhdGlvbiBCVC42MDEtNSAiU3R1ZGlvIEVuY29kaW5nIFBhcmFtZXRlcnMKK29mIERpZ2l0YWwgVGVsZXZpc2lvbiBmb3IgU3RhbmRhcmQgNDozIGFuZCBXaWRlLVNjcmVlbiAxNjo5IEFzcGVjdAorUmF0aW9zIjwvdGl0bGU+CisgICAgPC9iaWJsaW9lbnRyeT4KKworICAgIDxiaWJsaW9lbnRyeSBpZD0iaXR1NjUzIj4KKyAgICAgIDxhYmJyZXY+SVRVJm5ic3A7QlQuNjUzPC9hYmJyZXY+CisgICAgICA8YXV0aG9yZ3JvdXA+CisJPGNvcnBhdXRob3I+SW50ZXJuYXRpb25hbCBUZWxlY29tbXVuaWNhdGlvbiBVbmlvbiAoPHVsaW5rCit1cmw9Imh0dHA6Ly93d3cuaXR1LmNoIj5odHRwOi8vd3d3Lml0dS5jaDwvdWxpbms+KTwvY29ycGF1dGhvcj4KKyAgICAgIDwvYXV0aG9yZ3JvdXA+CisgICAgICA8dGl0bGU+SVRVLVIgUmVjb21tZW5kYXRpb24gQlQuNjUzLTMgIlRlbGV0ZXh0IHN5c3RlbXMiPC90aXRsZT4KKyAgICA8L2JpYmxpb2VudHJ5PgorCisgICAgPGJpYmxpb2VudHJ5IGlkPSJpdHU3MDkiPgorICAgICAgPGFiYnJldj5JVFUmbmJzcDtCVC43MDk8L2FiYnJldj4KKyAgICAgIDxhdXRob3Jncm91cD4KKwk8Y29ycGF1dGhvcj5JbnRlcm5hdGlvbmFsIFRlbGVjb21tdW5pY2F0aW9uIFVuaW9uICg8dWxpbmsKK3VybD0iaHR0cDovL3d3dy5pdHUuY2giPmh0dHA6Ly93d3cuaXR1LmNoPC91bGluaz4pPC9jb3JwYXV0aG9yPgorICAgICAgPC9hdXRob3Jncm91cD4KKyAgICAgIDx0aXRsZT5JVFUtUiBSZWNvbW1lbmRhdGlvbiBCVC43MDktNSAiUGFyYW1ldGVyIHZhbHVlcyBmb3IgdGhlCitIRFRWIHN0YW5kYXJkcyBmb3IgcHJvZHVjdGlvbiBhbmQgaW50ZXJuYXRpb25hbCBwcm9ncmFtbWUKK2V4Y2hhbmdlIjwvdGl0bGU+CisgICAgPC9iaWJsaW9lbnRyeT4KKworICAgIDxiaWJsaW9lbnRyeSBpZD0iaXR1MTExOSI+CisgICAgICA8YWJicmV2PklUVSZuYnNwO0JULjExMTk8L2FiYnJldj4KKyAgICAgIDxhdXRob3Jncm91cD4KKwk8Y29ycGF1dGhvcj5JbnRlcm5hdGlvbmFsIFRlbGVjb21tdW5pY2F0aW9uIFVuaW9uICg8dWxpbmsKK3VybD0iaHR0cDovL3d3dy5pdHUuY2giPmh0dHA6Ly93d3cuaXR1LmNoPC91bGluaz4pPC9jb3JwYXV0aG9yPgorICAgICAgPC9hdXRob3Jncm91cD4KKyAgICAgIDx0aXRsZT5JVFUtUiBSZWNvbW1lbmRhdGlvbiBCVC4xMTE5ICI2MjUtbGluZQordGVsZXZpc2lvbiBXaWRlIFNjcmVlbiBTaWduYWxsaW5nIChXU1MpIjwvdGl0bGU+CisgICAgPC9iaWJsaW9lbnRyeT4KKworICAgIDxiaWJsaW9lbnRyeSBpZD0iamZpZiI+CisgICAgICA8YWJicmV2PkpGSUY8L2FiYnJldj4KKyAgICAgIDxhdXRob3Jncm91cD4KKwk8Y29ycGF1dGhvcj5JbmRlcGVuZGVudCBKUEVHIEdyb3VwICg8dWxpbmsKK3VybD0iaHR0cDovL3d3dy5pamcub3JnIj5odHRwOi8vd3d3LmlqZy5vcmc8L3VsaW5rPik8L2NvcnBhdXRob3I+CisgICAgICA8L2F1dGhvcmdyb3VwPgorICAgICAgPHRpdGxlPkpQRUcgRmlsZSBJbnRlcmNoYW5nZSBGb3JtYXQ8L3RpdGxlPgorICAgICAgPHN1YnRpdGxlPlZlcnNpb24gMS4wMjwvc3VidGl0bGU+CisgICAgPC9iaWJsaW9lbnRyeT4KKworICAgIDxiaWJsaW9lbnRyeSBpZD0iaXR1LXQ4MSI+CisgICAgICA8YWJicmV2PklUVS1ULjgxPC9hYmJyZXY+CisgICAgICA8YXV0aG9yZ3JvdXA+CisJPGNvcnBhdXRob3I+SW50ZXJuYXRpb25hbCBUZWxlY29tbXVuaWNhdGlvbiBVbmlvbgorKDx1bGluayB1cmw9Imh0dHA6Ly93d3cuaXR1LmludCI+aHR0cDovL3d3dy5pdHUuaW50PC91bGluaz4pPC9jb3JwYXV0aG9yPgorICAgICAgPC9hdXRob3Jncm91cD4KKyAgICAgIDx0aXRsZT5JVFUtVCBSZWNvbW1lbmRhdGlvbiBULjgxCisiSW5mb3JtYXRpb24gVGVjaG5vbG9neSAmbWRhc2g7IERpZ2l0YWwgQ29tcHJlc3Npb24gYW5kIENvZGluZyBvZiBDb250aW5vdXMtVG9uZQorU3RpbGwgSW1hZ2VzICZtZGFzaDsgUmVxdWlyZW1lbnRzIGFuZCBHdWlkZWxpbmVzIjwvdGl0bGU+CisgICAgPC9iaWJsaW9lbnRyeT4KKworICAgIDxiaWJsaW9lbnRyeSBpZD0idzNjLWpwZWctamZpZiI+CisgICAgICA8YWJicmV2PlczQyBKUEVHIEpGSUY8L2FiYnJldj4KKyAgICAgIDxhdXRob3Jncm91cD4KKwk8Y29ycGF1dGhvcj5UaGUgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSAoPHVsaW5rCit1cmw9Imh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL0pQRUciPmh0dHA6Ly93d3cudzMub3JnPC91bGluaz4pPC9jb3JwYXV0aG9yPgorICAgICAgPC9hdXRob3Jncm91cD4KKyAgICAgIDx0aXRsZT5KUEVHIEpGSUY8L3RpdGxlPgorICAgIDwvYmlibGlvZW50cnk+CisKKyAgICA8YmlibGlvZW50cnkgaWQ9InNtcHRlMTJtIj4KKyAgICAgIDxhYmJyZXY+U01QVEUmbmJzcDsxMk08L2FiYnJldj4KKyAgICAgIDxhdXRob3Jncm91cD4KKwk8Y29ycGF1dGhvcj5Tb2NpZXR5IG9mIE1vdGlvbiBQaWN0dXJlIGFuZCBUZWxldmlzaW9uIEVuZ2luZWVycworKDx1bGluayB1cmw9Imh0dHA6Ly93d3cuc21wdGUub3JnIj5odHRwOi8vd3d3LnNtcHRlLm9yZzwvdWxpbms+KTwvY29ycGF1dGhvcj4KKyAgICAgIDwvYXV0aG9yZ3JvdXA+CisgICAgICA8dGl0bGU+U01QVEUgMTJNLTE5OTkgIlRlbGV2aXNpb24sIEF1ZGlvIGFuZCBGaWxtIC0gVGltZSBhbmQKK0NvbnRyb2wgQ29kZSI8L3RpdGxlPgorICAgIDwvYmlibGlvZW50cnk+CisKKyAgICA8YmlibGlvZW50cnkgaWQ9InNtcHRlMTcwbSI+CisgICAgICA8YWJicmV2PlNNUFRFJm5ic3A7MTcwTTwvYWJicmV2PgorICAgICAgPGF1dGhvcmdyb3VwPgorCTxjb3JwYXV0aG9yPlNvY2lldHkgb2YgTW90aW9uIFBpY3R1cmUgYW5kIFRlbGV2aXNpb24gRW5naW5lZXJzCisoPHVsaW5rIHVybD0iaHR0cDovL3d3dy5zbXB0ZS5vcmciPmh0dHA6Ly93d3cuc21wdGUub3JnPC91bGluaz4pPC9jb3JwYXV0aG9yPgorICAgICAgPC9hdXRob3Jncm91cD4KKyAgICAgIDx0aXRsZT5TTVBURSAxNzBNLTE5OTkgIlRlbGV2aXNpb24gLSBDb21wb3NpdGUgQW5hbG9nIFZpZGVvCitTaWduYWwgLSBOVFNDIGZvciBTdHVkaW8gQXBwbGljYXRpb25zIjwvdGl0bGU+CisgICAgPC9iaWJsaW9lbnRyeT4KKworICAgIDxiaWJsaW9lbnRyeSBpZD0ic21wdGUyNDBtIj4KKyAgICAgIDxhYmJyZXY+U01QVEUmbmJzcDsyNDBNPC9hYmJyZXY+CisgICAgICA8YXV0aG9yZ3JvdXA+CisJPGNvcnBhdXRob3I+U29jaWV0eSBvZiBNb3Rpb24gUGljdHVyZSBhbmQgVGVsZXZpc2lvbiBFbmdpbmVlcnMKKyg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnNtcHRlLm9yZyI+aHR0cDovL3d3dy5zbXB0ZS5vcmc8L3VsaW5rPik8L2NvcnBhdXRob3I+CisgICAgICA8L2F1dGhvcmdyb3VwPgorICAgICAgPHRpdGxlPlNNUFRFIDI0ME0tMTk5OSAiVGVsZXZpc2lvbiAtIFNpZ25hbCBQYXJhbWV0ZXJzIC0KKzExMjUtTGluZSBIaWdoLURlZmluaXRpb24gUHJvZHVjdGlvbiI8L3RpdGxlPgorICAgIDwvYmlibGlvZW50cnk+CisKKyAgICA8YmlibGlvZW50cnkgaWQ9InNtcHRlNDMxIj4KKyAgICAgIDxhYmJyZXY+U01QVEUmbmJzcDtSUCZuYnNwOzQzMS0yPC9hYmJyZXY+CisgICAgICA8YXV0aG9yZ3JvdXA+CisJPGNvcnBhdXRob3I+U29jaWV0eSBvZiBNb3Rpb24gUGljdHVyZSBhbmQgVGVsZXZpc2lvbiBFbmdpbmVlcnMKKyg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnNtcHRlLm9yZyI+aHR0cDovL3d3dy5zbXB0ZS5vcmc8L3VsaW5rPik8L2NvcnBhdXRob3I+CisgICAgICA8L2F1dGhvcmdyb3VwPgorICAgICAgPHRpdGxlPlNNUFRFIFJQIDQzMS0yOjIwMTEgIkQtQ2luZW1hIFF1YWxpdHkgLSBSZWZlcmVuY2UgUHJvamVjdG9yIGFuZCBFbnZpcm9ubWVudCI8L3RpdGxlPgorICAgIDwvYmlibGlvZW50cnk+CisKKyAgICA8YmlibGlvZW50cnkgaWQ9InNtcHRlMjA4NCI+CisgICAgICA8YWJicmV2PlNNUFRFJm5ic3A7U1QmbmJzcDsyMDg0PC9hYmJyZXY+CisgICAgICA8YXV0aG9yZ3JvdXA+CisJPGNvcnBhdXRob3I+U29jaWV0eSBvZiBNb3Rpb24gUGljdHVyZSBhbmQgVGVsZXZpc2lvbiBFbmdpbmVlcnMKKyg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnNtcHRlLm9yZyI+aHR0cDovL3d3dy5zbXB0ZS5vcmc8L3VsaW5rPik8L2NvcnBhdXRob3I+CisgICAgICA8L2F1dGhvcmdyb3VwPgorICAgICAgPHRpdGxlPlNNUFRFIFNUIDIwODQ6MjAxNCAiSGlnaCBEeW5hbWljIFJhbmdlIEVsZWN0cm8tT3B0aWNhbCBUcmFuc2ZlciBGdW5jdGlvbiBvZiBNYXN0ZXIgUmVmZXJlbmNlIERpc3BsYXlzIjwvdGl0bGU+CisgICAgPC9iaWJsaW9lbnRyeT4KKworICAgIDxiaWJsaW9lbnRyeSBpZD0ic3JnYiI+CisgICAgICA8YWJicmV2PnNSR0I8L2FiYnJldj4KKyAgICAgIDxhdXRob3Jncm91cD4KKwk8Y29ycGF1dGhvcj5JbnRlcm5hdGlvbmFsIEVsZWN0cm90ZWNobmljYWwgQ29tbWlzc2lvbgorKDx1bGluayB1cmw9Imh0dHA6Ly93d3cuaWVjLmNoIj5odHRwOi8vd3d3LmllYy5jaDwvdWxpbms+KTwvY29ycGF1dGhvcj4KKyAgICAgIDwvYXV0aG9yZ3JvdXA+CisgICAgICA8dGl0bGU+SUVDIDYxOTY2LTItMSBlZDEuMCAiTXVsdGltZWRpYSBzeXN0ZW1zIGFuZCBlcXVpcG1lbnQgLSBDb2xvdXIgbWVhc3VyZW1lbnQKK2FuZCBtYW5hZ2VtZW50IC0gUGFydCAyLTE6IENvbG91ciBtYW5hZ2VtZW50IC0gRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQiI8L3RpdGxlPgorICAgIDwvYmlibGlvZW50cnk+CisKKyAgICA8YmlibGlvZW50cnkgaWQ9InN5Y2MiPgorICAgICAgPGFiYnJldj5zWUNDPC9hYmJyZXY+CisgICAgICA8YXV0aG9yZ3JvdXA+CisJPGNvcnBhdXRob3I+SW50ZXJuYXRpb25hbCBFbGVjdHJvdGVjaG5pY2FsIENvbW1pc3Npb24KKyg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmllYy5jaCI+aHR0cDovL3d3dy5pZWMuY2g8L3VsaW5rPik8L2NvcnBhdXRob3I+CisgICAgICA8L2F1dGhvcmdyb3VwPgorICAgICAgPHRpdGxlPklFQyA2MTk2Ni0yLTEtYW0xIGVkMS4wICJBbWVuZG1lbnQgMSAtIE11bHRpbWVkaWEgc3lzdGVtcyBhbmQgZXF1aXBtZW50IC0gQ29sb3VyIG1lYXN1cmVtZW50CithbmQgbWFuYWdlbWVudCAtIFBhcnQgMi0xOiBDb2xvdXIgbWFuYWdlbWVudCAtIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IiPC90aXRsZT4KKyAgICA8L2JpYmxpb2VudHJ5PgorCisgICAgPGJpYmxpb2VudHJ5IGlkPSJ4dnljYyI+CisgICAgICA8YWJicmV2Pnh2WUNDPC9hYmJyZXY+CisgICAgICA8YXV0aG9yZ3JvdXA+CisJPGNvcnBhdXRob3I+SW50ZXJuYXRpb25hbCBFbGVjdHJvdGVjaG5pY2FsIENvbW1pc3Npb24KKyg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmllYy5jaCI+aHR0cDovL3d3dy5pZWMuY2g8L3VsaW5rPik8L2NvcnBhdXRob3I+CisgICAgICA8L2F1dGhvcmdyb3VwPgorICAgICAgPHRpdGxlPklFQyA2MTk2Ni0yLTQgZWQxLjAgIk11bHRpbWVkaWEgc3lzdGVtcyBhbmQgZXF1aXBtZW50IC0gQ29sb3VyIG1lYXN1cmVtZW50CithbmQgbWFuYWdlbWVudCAtIFBhcnQgMi00OiBDb2xvdXIgbWFuYWdlbWVudCAtIEV4dGVuZGVkLWdhbXV0IFlDQyBjb2xvdXIgc3BhY2UgZm9yIHZpZGVvCithcHBsaWNhdGlvbnMgLSB4dllDQyI8L3RpdGxlPgorICAgIDwvYmlibGlvZW50cnk+CisKKyAgICA8YmlibGlvZW50cnkgaWQ9ImFkb2JlcmdiIj4KKyAgICAgIDxhYmJyZXY+QWRvYmVSR0I8L2FiYnJldj4KKyAgICAgIDxhdXRob3Jncm91cD4KKwk8Y29ycGF1dGhvcj5BZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZCAoPHVsaW5rIHVybD0iaHR0cDovL3d3dy5hZG9iZS5jb20iPmh0dHA6Ly93d3cuYWRvYmUuY29tPC91bGluaz4pPC9jb3JwYXV0aG9yPgorICAgICAgPC9hdXRob3Jncm91cD4KKyAgICAgIDx0aXRsZT5BZG9iZSZjb3B5OyBSR0IgKDE5OTgpIENvbG9yIEltYWdlIEVuY29kaW5nIFZlcnNpb24gMjAwNS0wNTwvdGl0bGU+CisgICAgPC9iaWJsaW9lbnRyeT4KKworICAgIDxiaWJsaW9lbnRyeSBpZD0ib3ByZ2IiPgorICAgICAgPGFiYnJldj5vcFJHQjwvYWJicmV2PgorICAgICAgPGF1dGhvcmdyb3VwPgorCTxjb3JwYXV0aG9yPkludGVybmF0aW9uYWwgRWxlY3Ryb3RlY2huaWNhbCBDb21taXNzaW9uCisoPHVsaW5rIHVybD0iaHR0cDovL3d3dy5pZWMuY2giPmh0dHA6Ly93d3cuaWVjLmNoPC91bGluaz4pPC9jb3JwYXV0aG9yPgorICAgICAgPC9hdXRob3Jncm91cD4KKyAgICAgIDx0aXRsZT5JRUMgNjE5NjYtMi01ICJNdWx0aW1lZGlhIHN5c3RlbXMgYW5kIGVxdWlwbWVudCAtIENvbG91ciBtZWFzdXJlbWVudAorYW5kIG1hbmFnZW1lbnQgLSBQYXJ0IDItNTogQ29sb3VyIG1hbmFnZW1lbnQgLSBPcHRpb25hbCBSR0IgY29sb3VyIHNwYWNlIC0gb3BSR0IiPC90aXRsZT4KKyAgICA8L2JpYmxpb2VudHJ5PgorCisgICAgPGJpYmxpb2VudHJ5IGlkPSJpdHUyMDIwIj4KKyAgICAgIDxhYmJyZXY+SVRVJm5ic3A7QlQuMjAyMDwvYWJicmV2PgorICAgICAgPGF1dGhvcmdyb3VwPgorCTxjb3JwYXV0aG9yPkludGVybmF0aW9uYWwgVGVsZWNvbW11bmljYXRpb24gVW5pb24gKDx1bGluawordXJsPSJodHRwOi8vd3d3Lml0dS5jaCI+aHR0cDovL3d3dy5pdHUuY2g8L3VsaW5rPik8L2NvcnBhdXRob3I+CisgICAgICA8L2F1dGhvcmdyb3VwPgorICAgICAgPHRpdGxlPklUVS1SIFJlY29tbWVuZGF0aW9uIEJULjIwMjAgKDA4LzIwMTIpICJQYXJhbWV0ZXIgdmFsdWVzIGZvciB1bHRyYS1oaWdoCitkZWZpbml0aW9uIHRlbGV2aXNpb24gc3lzdGVtcyBmb3IgcHJvZHVjdGlvbiBhbmQgaW50ZXJuYXRpb25hbCBwcm9ncmFtbWUgZXhjaGFuZ2UiCis8L3RpdGxlPgorICAgIDwvYmlibGlvZW50cnk+CisKKyAgICA8YmlibGlvZW50cnkgaWQ9InRlY2gzMjEzIj4KKyAgICAgIDxhYmJyZXY+RUJVJm5ic3A7VGVjaCZuYnNwOzMyMTM8L2FiYnJldj4KKyAgICAgIDxhdXRob3Jncm91cD4KKwk8Y29ycGF1dGhvcj5FdXJvcGVhbiBCcm9hZGNhc3QgVW5pb24gKDx1bGluawordXJsPSJodHRwOi8vd3d3LmVidS5jaCI+aHR0cDovL3d3dy5lYnUuY2g8L3VsaW5rPik8L2NvcnBhdXRob3I+CisgICAgICA8L2F1dGhvcmdyb3VwPgorICAgICAgPHRpdGxlPkUuQi5VLiBTdGFuZGFyZCBmb3IgQ2hyb21hdGljaXR5IFRvbGVyYW5jZXMgZm9yIFN0dWRpbyBNb25pdG9ycyI8L3RpdGxlPgorICAgIDwvYmlibGlvZW50cnk+CisKKyAgICA8YmlibGlvZW50cnkgaWQ9ImllYzYyMTA2Ij4KKyAgICAgIDxhYmJyZXY+SUVDJm5ic3A7NjIxMDY8L2FiYnJldj4KKyAgICAgIDxhdXRob3Jncm91cD4KKwk8Y29ycGF1dGhvcj5JbnRlcm5hdGlvbmFsIEVsZWN0cm90ZWNobmljYWwgQ29tbWlzc2lvbgorKDx1bGluayB1cmw9Imh0dHA6Ly93d3cuaWVjLmNoIj5odHRwOi8vd3d3LmllYy5jaDwvdWxpbms+KTwvY29ycGF1dGhvcj4KKyAgICAgIDwvYXV0aG9yZ3JvdXA+CisgICAgICA8dGl0bGU+U3BlY2lmaWNhdGlvbiBvZiB0aGUgcmFkaW8gZGF0YSBzeXN0ZW0gKFJEUykgZm9yIFZIRi9GTSBzb3VuZCBicm9hZGNhc3RpbmcKK2luIHRoZSBmcmVxdWVuY3kgcmFuZ2UgZnJvbSA4Nyw1IHRvIDEwOCwwIE1IejwvdGl0bGU+CisgICAgPC9iaWJsaW9lbnRyeT4KKworICAgIDxiaWJsaW9lbnRyeSBpZD0ibnJzYzQiPgorICAgICAgPGFiYnJldj5OUlNDLTQtQjwvYWJicmV2PgorICAgICAgPGF1dGhvcmdyb3VwPgorCTxjb3JwYXV0aG9yPk5hdGlvbmFsIFJhZGlvIFN5c3RlbXMgQ29tbWl0dGVlCisoPHVsaW5rIHVybD0iaHR0cDovL3d3dy5ucnNjc3RhbmRhcmRzLm9yZyI+aHR0cDovL3d3dy5ucnNjc3RhbmRhcmRzLm9yZzwvdWxpbms+KTwvY29ycGF1dGhvcj4KKyAgICAgIDwvYXV0aG9yZ3JvdXA+CisgICAgICA8dGl0bGU+TlJTQy00LUI6IFVuaXRlZCBTdGF0ZXMgUkJEUyBTdGFuZGFyZDwvdGl0bGU+CisgICAgPC9iaWJsaW9lbnRyeT4KKworICAgIDxiaWJsaW9lbnRyeSBpZD0iaXNvMTIyMzIiPgorICAgICAgPGFiYnJldj5JU08mbmJzcDsxMjIzMjoyMDA2PC9hYmJyZXY+CisgICAgICA8YXV0aG9yZ3JvdXA+CisJPGNvcnBhdXRob3I+SW50ZXJuYXRpb25hbCBPcmdhbml6YXRpb24gZm9yIFN0YW5kYXJkaXphdGlvbgorKDx1bGluayB1cmw9Imh0dHA6Ly93d3cuaXNvLm9yZyI+aHR0cDovL3d3dy5pc28ub3JnPC91bGluaz4pPC9jb3JwYXV0aG9yPgorICAgICAgPC9hdXRob3Jncm91cD4KKyAgICAgIDx0aXRsZT5QaG90b2dyYXBoeSAmbWRhc2g7IERpZ2l0YWwgc3RpbGwgY2FtZXJhcyAmbWRhc2g7IERldGVybWluYXRpb24KKyAgICAgIG9mIGV4cG9zdXJlIGluZGV4LCBJU08gc3BlZWQgcmF0aW5ncywgc3RhbmRhcmQgb3V0cHV0IHNlbnNpdGl2aXR5LCBhbmQKKyAgICAgIHJlY29tbWVuZGVkIGV4cG9zdXJlIGluZGV4PC90aXRsZT4KKyAgICA8L2JpYmxpb2VudHJ5PgorCisgICAgPGJpYmxpb2VudHJ5IGlkPSJjZWE4NjEiPgorICAgICAgPGFiYnJldj5DRUEtODYxLUU8L2FiYnJldj4KKyAgICAgIDxhdXRob3Jncm91cD4KKwk8Y29ycGF1dGhvcj5Db25zdW1lciBFbGVjdHJvbmljcyBBc3NvY2lhdGlvbgorKDx1bGluayB1cmw9Imh0dHA6Ly93d3cuY2Uub3JnIj5odHRwOi8vd3d3LmNlLm9yZzwvdWxpbms+KTwvY29ycGF1dGhvcj4KKyAgICAgIDwvYXV0aG9yZ3JvdXA+CisgICAgICA8dGl0bGU+QSBEVFYgUHJvZmlsZSBmb3IgVW5jb21wcmVzc2VkIEhpZ2ggU3BlZWQgRGlnaXRhbCBJbnRlcmZhY2VzPC90aXRsZT4KKyAgICA8L2JpYmxpb2VudHJ5PgorCisgICAgPGJpYmxpb2VudHJ5IGlkPSJ2ZXNhZG10Ij4KKyAgICAgIDxhYmJyZXY+VkVTQSZuYnNwO0RNVDwvYWJicmV2PgorICAgICAgPGF1dGhvcmdyb3VwPgorCTxjb3JwYXV0aG9yPlZpZGVvIEVsZWN0cm9uaWNzIFN0YW5kYXJkcyBBc3NvY2lhdGlvbgorKDx1bGluayB1cmw9Imh0dHA6Ly93d3cudmVzYS5vcmciPmh0dHA6Ly93d3cudmVzYS5vcmc8L3VsaW5rPik8L2NvcnBhdXRob3I+CisgICAgICA8L2F1dGhvcmdyb3VwPgorICAgICAgPHRpdGxlPlZFU0EgYW5kIEluZHVzdHJ5IFN0YW5kYXJkcyBhbmQgR3VpZGVsaW5lcyBmb3IgQ29tcHV0ZXIgRGlzcGxheSBNb25pdG9yIFRpbWluZyAoRE1UKTwvdGl0bGU+CisgICAgPC9iaWJsaW9lbnRyeT4KKworICAgIDxiaWJsaW9lbnRyeSBpZD0idmVzYWVkaWQiPgorICAgICAgPGFiYnJldj5FRElEPC9hYmJyZXY+CisgICAgICA8YXV0aG9yZ3JvdXA+CisJPGNvcnBhdXRob3I+VmlkZW8gRWxlY3Ryb25pY3MgU3RhbmRhcmRzIEFzc29jaWF0aW9uCisoPHVsaW5rIHVybD0iaHR0cDovL3d3dy52ZXNhLm9yZyI+aHR0cDovL3d3dy52ZXNhLm9yZzwvdWxpbms+KTwvY29ycGF1dGhvcj4KKyAgICAgIDwvYXV0aG9yZ3JvdXA+CisgICAgICA8dGl0bGU+VkVTQSBFbmhhbmNlZCBFeHRlbmRlZCBEaXNwbGF5IElkZW50aWZpY2F0aW9uIERhdGEgU3RhbmRhcmQ8L3RpdGxlPgorICAgICAgPHN1YnRpdGxlPlJlbGVhc2UgQSwgUmV2aXNpb24gMjwvc3VidGl0bGU+CisgICAgPC9iaWJsaW9lbnRyeT4KKworICAgIDxiaWJsaW9lbnRyeSBpZD0iaGRjcCI+CisgICAgICA8YWJicmV2PkhEQ1A8L2FiYnJldj4KKyAgICAgIDxhdXRob3Jncm91cD4KKwk8Y29ycGF1dGhvcj5EaWdpdGFsIENvbnRlbnQgUHJvdGVjdGlvbiBMTEMKKyg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmRpZ2l0YWwtY3AuY29tIj5odHRwOi8vd3d3LmRpZ2l0YWwtY3AuY29tPC91bGluaz4pPC9jb3JwYXV0aG9yPgorICAgICAgPC9hdXRob3Jncm91cD4KKyAgICAgIDx0aXRsZT5IaWdoLWJhbmR3aWR0aCBEaWdpdGFsIENvbnRlbnQgUHJvdGVjdGlvbiBTeXN0ZW08L3RpdGxlPgorICAgICAgPHN1YnRpdGxlPlJldmlzaW9uIDEuMzwvc3VidGl0bGU+CisgICAgPC9iaWJsaW9lbnRyeT4KKworICAgIDxiaWJsaW9lbnRyeSBpZD0iaGRtaSI+CisgICAgICA8YWJicmV2PkhETUk8L2FiYnJldj4KKyAgICAgIDxhdXRob3Jncm91cD4KKwk8Y29ycGF1dGhvcj5IRE1JIExpY2Vuc2luZyBMTEMKKyg8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmhkbWkub3JnIj5odHRwOi8vd3d3LmhkbWkub3JnPC91bGluaz4pPC9jb3JwYXV0aG9yPgorICAgICAgPC9hdXRob3Jncm91cD4KKyAgICAgIDx0aXRsZT5IaWdoLURlZmluaXRpb24gTXVsdGltZWRpYSBJbnRlcmZhY2U8L3RpdGxlPgorICAgICAgPHN1YnRpdGxlPlNwZWNpZmljYXRpb24gVmVyc2lvbiAxLjRhPC9zdWJ0aXRsZT4KKyAgICA8L2JpYmxpb2VudHJ5PgorCisgICAgPGJpYmxpb2VudHJ5IGlkPSJkcCI+CisgICAgICA8YWJicmV2PkRQPC9hYmJyZXY+CisgICAgICA8YXV0aG9yZ3JvdXA+CisJPGNvcnBhdXRob3I+VmlkZW8gRWxlY3Ryb25pY3MgU3RhbmRhcmRzIEFzc29jaWF0aW9uCisoPHVsaW5rIHVybD0iaHR0cDovL3d3dy52ZXNhLm9yZyI+aHR0cDovL3d3dy52ZXNhLm9yZzwvdWxpbms+KTwvY29ycGF1dGhvcj4KKyAgICAgIDwvYXV0aG9yZ3JvdXA+CisgICAgICA8dGl0bGU+VkVTQSBEaXNwbGF5UG9ydCBTdGFuZGFyZDwvdGl0bGU+CisgICAgICA8c3VidGl0bGU+VmVyc2lvbiAxLCBSZXZpc2lvbiAyPC9zdWJ0aXRsZT4KKyAgICA8L2JpYmxpb2VudHJ5PgorCisgICAgPGJpYmxpb2VudHJ5IGlkPSJwb3ludG9uIj4KKyAgICAgIDxhYmJyZXY+cG95bnRvbjwvYWJicmV2PgorICAgICAgPGF1dGhvcmdyb3VwPgorCTxjb3JwYXV0aG9yPkNoYXJsZXMgUG95bnRvbjwvY29ycGF1dGhvcj4KKyAgICAgIDwvYXV0aG9yZ3JvdXA+CisgICAgICA8dGl0bGU+RGlnaXRhbCBWaWRlbyBhbmQgSERUViwgQWxnb3JpdGhtcyBhbmQgSW50ZXJmYWNlczwvdGl0bGU+CisgICAgPC9iaWJsaW9lbnRyeT4KKworICAgIDxiaWJsaW9lbnRyeSBpZD0iY29saW1nIj4KKyAgICAgIDxhYmJyZXY+Y29saW1nPC9hYmJyZXY+CisgICAgICA8YXV0aG9yZ3JvdXA+CisJPGNvcnBhdXRob3I+RXJpayBSZWluaGFyZCBldCBhbC48L2NvcnBhdXRob3I+CisgICAgICA8L2F1dGhvcmdyb3VwPgorICAgICAgPHRpdGxlPkNvbG9yIEltYWdpbmc6IEZ1bmRhbWVudGFscyBhbmQgQXBwbGljYXRpb25zPC90aXRsZT4KKyAgICA8L2JpYmxpb2VudHJ5PgorCisgIDwvYmlibGlvZ3JhcGh5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9jYXB0dXJlLmMueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9jYXB0dXJlLmMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjNWM0OWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2NhcHR1cmUuYy54bWwKQEAgLTAsMCArMSw2NTkgQEAKKzxwcm9ncmFtbGlzdGluZz4KKy8qCisgKiAgVjRMMiB2aWRlbyBjYXB0dXJlIGV4YW1wbGUKKyAqCisgKiAgVGhpcyBwcm9ncmFtIGNhbiBiZSB1c2VkIGFuZCBkaXN0cmlidXRlZCB3aXRob3V0IHJlc3RyaWN0aW9ucy4KKyAqCisgKiAgICAgIFRoaXMgcHJvZ3JhbSBpcyBwcm92aWRlZCB3aXRoIHRoZSBWNEwyIEFQSQorICogc2VlIGh0dHA6Ly9saW51eHR2Lm9yZy9kb2NzLnBocCBmb3IgbW9yZSBpbmZvcm1hdGlvbgorICovCisKKyNpbmNsdWRlICZsdDtzdGRpby5oJmd0OworI2luY2x1ZGUgJmx0O3N0ZGxpYi5oJmd0OworI2luY2x1ZGUgJmx0O3N0cmluZy5oJmd0OworI2luY2x1ZGUgJmx0O2Fzc2VydC5oJmd0OworCisjaW5jbHVkZSAmbHQ7Z2V0b3B0LmgmZ3Q7ICAgICAgICAgICAgIC8qIGdldG9wdF9sb25nKCkgKi8KKworI2luY2x1ZGUgJmx0O2ZjbnRsLmgmZ3Q7ICAgICAgICAgICAgICAvKiBsb3ctbGV2ZWwgaS9vICovCisjaW5jbHVkZSAmbHQ7dW5pc3RkLmgmZ3Q7CisjaW5jbHVkZSAmbHQ7ZXJybm8uaCZndDsKKyNpbmNsdWRlICZsdDtzeXMvc3RhdC5oJmd0OworI2luY2x1ZGUgJmx0O3N5cy90eXBlcy5oJmd0OworI2luY2x1ZGUgJmx0O3N5cy90aW1lLmgmZ3Q7CisjaW5jbHVkZSAmbHQ7c3lzL21tYW4uaCZndDsKKyNpbmNsdWRlICZsdDtzeXMvaW9jdGwuaCZndDsKKworI2luY2x1ZGUgJmx0O2xpbnV4L3ZpZGVvZGV2Mi5oJmd0OworCisjZGVmaW5lIENMRUFSKHgpIG1lbXNldCgmYW1wOyh4KSwgMCwgc2l6ZW9mKHgpKQorCitlbnVtIGlvX21ldGhvZCB7CisgICAgICAgIElPX01FVEhPRF9SRUFELAorICAgICAgICBJT19NRVRIT0RfTU1BUCwKKyAgICAgICAgSU9fTUVUSE9EX1VTRVJQVFIsCit9OworCitzdHJ1Y3QgYnVmZmVyIHsKKyAgICAgICAgdm9pZCAgICpzdGFydDsKKyAgICAgICAgc2l6ZV90ICBsZW5ndGg7Cit9OworCitzdGF0aWMgY2hhciAgICAgICAgICAgICpkZXZfbmFtZTsKK3N0YXRpYyBlbnVtIGlvX21ldGhvZCAgIGlvID0gSU9fTUVUSE9EX01NQVA7CitzdGF0aWMgaW50ICAgICAgICAgICAgICBmZCA9IC0xOworc3RydWN0IGJ1ZmZlciAgICAgICAgICAqYnVmZmVyczsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgICAgIG5fYnVmZmVyczsKK3N0YXRpYyBpbnQgICAgICAgICAgICAgIG91dF9idWY7CitzdGF0aWMgaW50ICAgICAgICAgICAgICBmb3JjZV9mb3JtYXQ7CitzdGF0aWMgaW50ICAgICAgICAgICAgICBmcmFtZV9jb3VudCA9IDcwOworCitzdGF0aWMgdm9pZCBlcnJub19leGl0KGNvbnN0IGNoYXIgKnMpCit7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMgZXJyb3IgJWQsICVzXG4iLCBzLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOworfQorCitzdGF0aWMgaW50IHhpb2N0bChpbnQgZmgsIGludCByZXF1ZXN0LCB2b2lkICphcmcpCit7CisgICAgICAgIGludCByOworCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICByID0gaW9jdGwoZmgsIHJlcXVlc3QsIGFyZyk7CisgICAgICAgIH0gd2hpbGUgKC0xID09IHIgJmFtcDsmYW1wOyBFSU5UUiA9PSBlcnJubyk7CisKKyAgICAgICAgcmV0dXJuIHI7Cit9CisKK3N0YXRpYyB2b2lkIHByb2Nlc3NfaW1hZ2UoY29uc3Qgdm9pZCAqcCwgaW50IHNpemUpCit7CisgICAgICAgIGlmIChvdXRfYnVmKQorICAgICAgICAgICAgICAgIGZ3cml0ZShwLCBzaXplLCAxLCBzdGRvdXQpOworCisgICAgICAgIGZmbHVzaChzdGRlcnIpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIi4iKTsKKyAgICAgICAgZmZsdXNoKHN0ZG91dCk7Cit9CisKK3N0YXRpYyBpbnQgcmVhZF9mcmFtZSh2b2lkKQoreworICAgICAgICBzdHJ1Y3QgPGxpbmsgbGlua2VuZD0idjRsMi1idWZmZXIiPnY0bDJfYnVmZmVyPC9saW5rPiBidWY7CisgICAgICAgIHVuc2lnbmVkIGludCBpOworCisgICAgICAgIHN3aXRjaCAoaW8pIHsKKyAgICAgICAgY2FzZSBJT19NRVRIT0RfUkVBRDoKKyAgICAgICAgICAgICAgICBpZiAoLTEgPT0gcmVhZChmZCwgYnVmZmVyc1swXS5zdGFydCwgYnVmZmVyc1swXS5sZW5ndGgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGVycm5vKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVBR0FJTjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRUlPOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDb3VsZCBpZ25vcmUgRUlPLCBzZWUgc3BlYy4gKi8KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybm9fZXhpdCgicmVhZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHByb2Nlc3NfaW1hZ2UoYnVmZmVyc1swXS5zdGFydCwgYnVmZmVyc1swXS5sZW5ndGgpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSU9fTUVUSE9EX01NQVA6CisgICAgICAgICAgICAgICAgQ0xFQVIoYnVmKTsKKworICAgICAgICAgICAgICAgIGJ1Zi50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFOworICAgICAgICAgICAgICAgIGJ1Zi5tZW1vcnkgPSBWNEwyX01FTU9SWV9NTUFQOworCisgICAgICAgICAgICAgICAgaWYgKC0xID09IHhpb2N0bChmZCwgVklESU9DX0RRQlVGLCAmYW1wO2J1ZikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZXJybm8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRUFHQUlOOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFSU86CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvdWxkIGlnbm9yZSBFSU8sIHNlZSBzcGVjLiAqLworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLworCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJub19leGl0KCJWSURJT0NfRFFCVUYiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBhc3NlcnQoYnVmLmluZGV4ICZsdDsgbl9idWZmZXJzKTsKKworICAgICAgICAgICAgICAgIHByb2Nlc3NfaW1hZ2UoYnVmZmVyc1tidWYuaW5kZXhdLnN0YXJ0LCBidWYuYnl0ZXN1c2VkKTsKKworICAgICAgICAgICAgICAgIGlmICgtMSA9PSB4aW9jdGwoZmQsIFZJRElPQ19RQlVGLCAmYW1wO2J1ZikpCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJub19leGl0KCJWSURJT0NfUUJVRiIpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSU9fTUVUSE9EX1VTRVJQVFI6CisgICAgICAgICAgICAgICAgQ0xFQVIoYnVmKTsKKworICAgICAgICAgICAgICAgIGJ1Zi50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFOworICAgICAgICAgICAgICAgIGJ1Zi5tZW1vcnkgPSBWNEwyX01FTU9SWV9VU0VSUFRSOworCisgICAgICAgICAgICAgICAgaWYgKC0xID09IHhpb2N0bChmZCwgVklESU9DX0RRQlVGLCAmYW1wO2J1ZikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZXJybm8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRUFHQUlOOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFSU86CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvdWxkIGlnbm9yZSBFSU8sIHNlZSBzcGVjLiAqLworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLworCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJub19leGl0KCJWSURJT0NfRFFCVUYiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpICZsdDsgbl9idWZmZXJzOyArK2kpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnVmLm0udXNlcnB0ciA9PSAodW5zaWduZWQgbG9uZylidWZmZXJzW2ldLnN0YXJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFtcDsmYW1wOyBidWYubGVuZ3RoID09IGJ1ZmZlcnNbaV0ubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGFzc2VydChpICZsdDsgbl9idWZmZXJzKTsKKworICAgICAgICAgICAgICAgIHByb2Nlc3NfaW1hZ2UoKHZvaWQgKilidWYubS51c2VycHRyLCBidWYuYnl0ZXN1c2VkKTsKKworICAgICAgICAgICAgICAgIGlmICgtMSA9PSB4aW9jdGwoZmQsIFZJRElPQ19RQlVGLCAmYW1wO2J1ZikpCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJub19leGl0KCJWSURJT0NfUUJVRiIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyB2b2lkIG1haW5sb29wKHZvaWQpCit7CisgICAgICAgIHVuc2lnbmVkIGludCBjb3VudDsKKworICAgICAgICBjb3VudCA9IGZyYW1lX2NvdW50OworCisgICAgICAgIHdoaWxlIChjb3VudC0tICZndDsgMCkgeworICAgICAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZkX3NldCBmZHM7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCB0djsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCByOworCisgICAgICAgICAgICAgICAgICAgICAgICBGRF9aRVJPKCZhbXA7ZmRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEZEX1NFVChmZCwgJmFtcDtmZHMpOworCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBUaW1lb3V0LiAqLworICAgICAgICAgICAgICAgICAgICAgICAgdHYudHZfc2VjID0gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHR2LnR2X3VzZWMgPSAwOworCisgICAgICAgICAgICAgICAgICAgICAgICByID0gc2VsZWN0KGZkICsgMSwgJmFtcDtmZHMsIE5VTEwsIE5VTEwsICZhbXA7dHYpOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoLTEgPT0gcikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRUlOVFIgPT0gZXJybm8pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vX2V4aXQoInNlbGVjdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PSByKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAic2VsZWN0IHRpbWVvdXRcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWFkX2ZyYW1lKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgLyogRUFHQUlOIC0gY29udGludWUgc2VsZWN0IGxvb3AuICovCisgICAgICAgICAgICAgICAgfQorICAgICAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHN0b3BfY2FwdHVyaW5nKHZvaWQpCit7CisgICAgICAgIGVudW0gPGxpbmsgbGlua2VuZD0idjRsMi1idWYtdHlwZSI+djRsMl9idWZfdHlwZTwvbGluaz4gdHlwZTsKKworICAgICAgICBzd2l0Y2ggKGlvKSB7CisgICAgICAgIGNhc2UgSU9fTUVUSE9EX1JFQUQ6CisgICAgICAgICAgICAgICAgLyogTm90aGluZyB0byBkby4gKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElPX01FVEhPRF9NTUFQOgorICAgICAgICBjYXNlIElPX01FVEhPRF9VU0VSUFRSOgorICAgICAgICAgICAgICAgIHR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkU7CisgICAgICAgICAgICAgICAgaWYgKC0xID09IHhpb2N0bChmZCwgVklESU9DX1NUUkVBTU9GRiwgJmFtcDt0eXBlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vX2V4aXQoIlZJRElPQ19TVFJFQU1PRkYiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorfQorCitzdGF0aWMgdm9pZCBzdGFydF9jYXB0dXJpbmcodm9pZCkKK3sKKyAgICAgICAgdW5zaWduZWQgaW50IGk7CisgICAgICAgIGVudW0gPGxpbmsgbGlua2VuZD0idjRsMi1idWYtdHlwZSI+djRsMl9idWZfdHlwZTwvbGluaz4gdHlwZTsKKworICAgICAgICBzd2l0Y2ggKGlvKSB7CisgICAgICAgIGNhc2UgSU9fTUVUSE9EX1JFQUQ6CisgICAgICAgICAgICAgICAgLyogTm90aGluZyB0byBkby4gKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElPX01FVEhPRF9NTUFQOgorICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgJmx0OyBuX2J1ZmZlcnM7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IDxsaW5rIGxpbmtlbmQ9InY0bDItYnVmZmVyIj52NGwyX2J1ZmZlcjwvbGluaz4gYnVmOworCisgICAgICAgICAgICAgICAgICAgICAgICBDTEVBUihidWYpOworICAgICAgICAgICAgICAgICAgICAgICAgYnVmLnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkU7CisgICAgICAgICAgICAgICAgICAgICAgICBidWYubWVtb3J5ID0gVjRMMl9NRU1PUllfTU1BUDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5pbmRleCA9IGk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtMSA9PSB4aW9jdGwoZmQsIFZJRElPQ19RQlVGLCAmYW1wO2J1ZikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vX2V4aXQoIlZJRElPQ19RQlVGIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkU7CisgICAgICAgICAgICAgICAgaWYgKC0xID09IHhpb2N0bChmZCwgVklESU9DX1NUUkVBTU9OLCAmYW1wO3R5cGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgZXJybm9fZXhpdCgiVklESU9DX1NUUkVBTU9OIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJT19NRVRIT0RfVVNFUlBUUjoKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpICZsdDsgbl9idWZmZXJzOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCA8bGluayBsaW5rZW5kPSJ2NGwyLWJ1ZmZlciI+djRsMl9idWZmZXI8L2xpbms+IGJ1ZjsKKworICAgICAgICAgICAgICAgICAgICAgICAgQ0xFQVIoYnVmKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFOworICAgICAgICAgICAgICAgICAgICAgICAgYnVmLm1lbW9yeSA9IFY0TDJfTUVNT1JZX1VTRVJQVFI7CisgICAgICAgICAgICAgICAgICAgICAgICBidWYuaW5kZXggPSBpOworICAgICAgICAgICAgICAgICAgICAgICAgYnVmLm0udXNlcnB0ciA9ICh1bnNpZ25lZCBsb25nKWJ1ZmZlcnNbaV0uc3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBidWYubGVuZ3RoID0gYnVmZmVyc1tpXS5sZW5ndGg7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtMSA9PSB4aW9jdGwoZmQsIFZJRElPQ19RQlVGLCAmYW1wO2J1ZikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vX2V4aXQoIlZJRElPQ19RQlVGIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkU7CisgICAgICAgICAgICAgICAgaWYgKC0xID09IHhpb2N0bChmZCwgVklESU9DX1NUUkVBTU9OLCAmYW1wO3R5cGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgZXJybm9fZXhpdCgiVklESU9DX1NUUkVBTU9OIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KK30KKworc3RhdGljIHZvaWQgdW5pbml0X2RldmljZSh2b2lkKQoreworICAgICAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgICAgICBzd2l0Y2ggKGlvKSB7CisgICAgICAgIGNhc2UgSU9fTUVUSE9EX1JFQUQ6CisgICAgICAgICAgICAgICAgZnJlZShidWZmZXJzWzBdLnN0YXJ0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElPX01FVEhPRF9NTUFQOgorICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgJmx0OyBuX2J1ZmZlcnM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtMSA9PSBtdW5tYXAoYnVmZmVyc1tpXS5zdGFydCwgYnVmZmVyc1tpXS5sZW5ndGgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJub19leGl0KCJtdW5tYXAiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElPX01FVEhPRF9VU0VSUFRSOgorICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgJmx0OyBuX2J1ZmZlcnM7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUoYnVmZmVyc1tpXS5zdGFydCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBmcmVlKGJ1ZmZlcnMpOworfQorCitzdGF0aWMgdm9pZCBpbml0X3JlYWQodW5zaWduZWQgaW50IGJ1ZmZlcl9zaXplKQoreworICAgICAgICBidWZmZXJzID0gY2FsbG9jKDEsIHNpemVvZigqYnVmZmVycykpOworCisgICAgICAgIGlmICghYnVmZmVycykgeworICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiT3V0IG9mIG1lbW9yeVxuIik7CisgICAgICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOworICAgICAgICB9CisKKyAgICAgICAgYnVmZmVyc1swXS5sZW5ndGggPSBidWZmZXJfc2l6ZTsKKyAgICAgICAgYnVmZmVyc1swXS5zdGFydCA9IG1hbGxvYyhidWZmZXJfc2l6ZSk7CisKKyAgICAgICAgaWYgKCFidWZmZXJzWzBdLnN0YXJ0KSB7CisgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJPdXQgb2YgbWVtb3J5XG4iKTsKKyAgICAgICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgICAgIH0KK30KKworc3RhdGljIHZvaWQgaW5pdF9tbWFwKHZvaWQpCit7CisgICAgICAgIHN0cnVjdCA8bGluayBsaW5rZW5kPSJ2NGwyLXJlcXVlc3RidWZmZXJzIj52NGwyX3JlcXVlc3RidWZmZXJzPC9saW5rPiByZXE7CisKKyAgICAgICAgQ0xFQVIocmVxKTsKKworICAgICAgICByZXEuY291bnQgPSA0OworICAgICAgICByZXEudHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTsKKyAgICAgICAgcmVxLm1lbW9yeSA9IFY0TDJfTUVNT1JZX01NQVA7CisKKyAgICAgICAgaWYgKC0xID09IHhpb2N0bChmZCwgVklESU9DX1JFUUJVRlMsICZhbXA7cmVxKSkgeworICAgICAgICAgICAgICAgIGlmIChFSU5WQUwgPT0gZXJybm8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMgZG9lcyBub3Qgc3VwcG9ydCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IG1hcHBpbmdcbiIsIGRldl9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybm9fZXhpdCgiVklESU9DX1JFUUJVRlMiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAocmVxLmNvdW50ICZsdDsgMikgeworICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiSW5zdWZmaWNpZW50IGJ1ZmZlciBtZW1vcnkgb24gJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X25hbWUpOworICAgICAgICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICAgICAgfQorCisgICAgICAgIGJ1ZmZlcnMgPSBjYWxsb2MocmVxLmNvdW50LCBzaXplb2YoKmJ1ZmZlcnMpKTsKKworICAgICAgICBpZiAoIWJ1ZmZlcnMpIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIk91dCBvZiBtZW1vcnlcbiIpOworICAgICAgICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAobl9idWZmZXJzID0gMDsgbl9idWZmZXJzICZsdDsgcmVxLmNvdW50OyArK25fYnVmZmVycykgeworICAgICAgICAgICAgICAgIHN0cnVjdCA8bGluayBsaW5rZW5kPSJ2NGwyLWJ1ZmZlciI+djRsMl9idWZmZXI8L2xpbms+IGJ1ZjsKKworICAgICAgICAgICAgICAgIENMRUFSKGJ1Zik7CisKKyAgICAgICAgICAgICAgICBidWYudHlwZSAgICAgICAgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkU7CisgICAgICAgICAgICAgICAgYnVmLm1lbW9yeSAgICAgID0gVjRMMl9NRU1PUllfTU1BUDsKKyAgICAgICAgICAgICAgICBidWYuaW5kZXggICAgICAgPSBuX2J1ZmZlcnM7CisKKyAgICAgICAgICAgICAgICBpZiAoLTEgPT0geGlvY3RsKGZkLCBWSURJT0NfUVVFUllCVUYsICZhbXA7YnVmKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vX2V4aXQoIlZJRElPQ19RVUVSWUJVRiIpOworCisgICAgICAgICAgICAgICAgYnVmZmVyc1tuX2J1ZmZlcnNdLmxlbmd0aCA9IGJ1Zi5sZW5ndGg7CisgICAgICAgICAgICAgICAgYnVmZmVyc1tuX2J1ZmZlcnNdLnN0YXJ0ID0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1tYXAoTlVMTCAvKiBzdGFydCBhbnl3aGVyZSAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFIC8qIHJlcXVpcmVkICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFQX1NIQVJFRCAvKiByZWNvbW1lbmRlZCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLCBidWYubS5vZmZzZXQpOworCisgICAgICAgICAgICAgICAgaWYgKE1BUF9GQUlMRUQgPT0gYnVmZmVyc1tuX2J1ZmZlcnNdLnN0YXJ0KQorICAgICAgICAgICAgICAgICAgICAgICAgZXJybm9fZXhpdCgibW1hcCIpOworICAgICAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGluaXRfdXNlcnAodW5zaWduZWQgaW50IGJ1ZmZlcl9zaXplKQoreworICAgICAgICBzdHJ1Y3QgPGxpbmsgbGlua2VuZD0idjRsMi1yZXF1ZXN0YnVmZmVycyI+djRsMl9yZXF1ZXN0YnVmZmVyczwvbGluaz4gcmVxOworCisgICAgICAgIENMRUFSKHJlcSk7CisKKyAgICAgICAgcmVxLmNvdW50ICA9IDQ7CisgICAgICAgIHJlcS50eXBlICAgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkU7CisgICAgICAgIHJlcS5tZW1vcnkgPSBWNEwyX01FTU9SWV9VU0VSUFRSOworCisgICAgICAgIGlmICgtMSA9PSB4aW9jdGwoZmQsIFZJRElPQ19SRVFCVUZTLCAmYW1wO3JlcSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoRUlOVkFMID09IGVycm5vKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIGRvZXMgbm90IHN1cHBvcnQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZXIgcG9pbnRlciBpL29cbiIsIGRldl9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybm9fZXhpdCgiVklESU9DX1JFUUJVRlMiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBidWZmZXJzID0gY2FsbG9jKDQsIHNpemVvZigqYnVmZmVycykpOworCisgICAgICAgIGlmICghYnVmZmVycykgeworICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiT3V0IG9mIG1lbW9yeVxuIik7CisgICAgICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChuX2J1ZmZlcnMgPSAwOyBuX2J1ZmZlcnMgJmx0OyA0OyArK25fYnVmZmVycykgeworICAgICAgICAgICAgICAgIGJ1ZmZlcnNbbl9idWZmZXJzXS5sZW5ndGggPSBidWZmZXJfc2l6ZTsKKyAgICAgICAgICAgICAgICBidWZmZXJzW25fYnVmZmVyc10uc3RhcnQgPSBtYWxsb2MoYnVmZmVyX3NpemUpOworCisgICAgICAgICAgICAgICAgaWYgKCFidWZmZXJzW25fYnVmZmVyc10uc3RhcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiT3V0IG9mIG1lbW9yeVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGluaXRfZGV2aWNlKHZvaWQpCit7CisgICAgICAgIHN0cnVjdCA8bGluayBsaW5rZW5kPSJ2NGwyLWNhcGFiaWxpdHkiPnY0bDJfY2FwYWJpbGl0eTwvbGluaz4gY2FwOworICAgICAgICBzdHJ1Y3QgPGxpbmsgbGlua2VuZD0idjRsMi1jcm9wY2FwIj52NGwyX2Nyb3BjYXA8L2xpbms+IGNyb3BjYXA7CisgICAgICAgIHN0cnVjdCA8bGluayBsaW5rZW5kPSJ2NGwyLWNyb3AiPnY0bDJfY3JvcDwvbGluaz4gY3JvcDsKKyAgICAgICAgc3RydWN0IDxsaW5rIGxpbmtlbmQ9InY0bDItZm9ybWF0Ij52NGwyX2Zvcm1hdDwvbGluaz4gZm10OworICAgICAgICB1bnNpZ25lZCBpbnQgbWluOworCisgICAgICAgIGlmICgtMSA9PSB4aW9jdGwoZmQsIFZJRElPQ19RVUVSWUNBUCwgJmFtcDtjYXApKSB7CisgICAgICAgICAgICAgICAgaWYgKEVJTlZBTCA9PSBlcnJubykgeworICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcyBpcyBubyBWNEwyIGRldmljZVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybm9fZXhpdCgiVklESU9DX1FVRVJZQ0FQIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCEoY2FwLmNhcGFiaWxpdGllcyAmYW1wOyBWNEwyX0NBUF9WSURFT19DQVBUVVJFKSkgeworICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMgaXMgbm8gdmlkZW8gY2FwdHVyZSBkZXZpY2VcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X25hbWUpOworICAgICAgICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoaW8pIHsKKyAgICAgICAgY2FzZSBJT19NRVRIT0RfUkVBRDoKKyAgICAgICAgICAgICAgICBpZiAoIShjYXAuY2FwYWJpbGl0aWVzICZhbXA7IFY0TDJfQ0FQX1JFQURXUklURSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMgZG9lcyBub3Qgc3VwcG9ydCByZWFkIGkvb1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJT19NRVRIT0RfTU1BUDoKKyAgICAgICAgY2FzZSBJT19NRVRIT0RfVVNFUlBUUjoKKyAgICAgICAgICAgICAgICBpZiAoIShjYXAuY2FwYWJpbGl0aWVzICZhbXA7IFY0TDJfQ0FQX1NUUkVBTUlORykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMgZG9lcyBub3Qgc3VwcG9ydCBzdHJlYW1pbmcgaS9vXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisKKyAgICAgICAgLyogU2VsZWN0IHZpZGVvIGlucHV0LCB2aWRlbyBzdGFuZGFyZCBhbmQgdHVuZSBoZXJlLiAqLworCisKKyAgICAgICAgQ0xFQVIoY3JvcGNhcCk7CisKKyAgICAgICAgY3JvcGNhcC50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFOworCisgICAgICAgIGlmICgwID09IHhpb2N0bChmZCwgVklESU9DX0NST1BDQVAsICZhbXA7Y3JvcGNhcCkpIHsKKyAgICAgICAgICAgICAgICBjcm9wLnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkU7CisgICAgICAgICAgICAgICAgY3JvcC5jID0gY3JvcGNhcC5kZWZyZWN0OyAvKiByZXNldCB0byBkZWZhdWx0ICovCisKKyAgICAgICAgICAgICAgICBpZiAoLTEgPT0geGlvY3RsKGZkLCBWSURJT0NfU19DUk9QLCAmYW1wO2Nyb3ApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGVycm5vKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVJTlZBTDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ3JvcHBpbmcgbm90IHN1cHBvcnRlZC4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFcnJvcnMgaWdub3JlZC4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8qIEVycm9ycyBpZ25vcmVkLiAqLworICAgICAgICB9CisKKworICAgICAgICBDTEVBUihmbXQpOworCisgICAgICAgIGZtdC50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFOworICAgICAgICBpZiAoZm9yY2VfZm9ybWF0KSB7CisgICAgICAgICAgICAgICAgZm10LmZtdC5waXgud2lkdGggICAgICAgPSA2NDA7CisgICAgICAgICAgICAgICAgZm10LmZtdC5waXguaGVpZ2h0ICAgICAgPSA0ODA7CisgICAgICAgICAgICAgICAgZm10LmZtdC5waXgucGl4ZWxmb3JtYXQgPSBWNEwyX1BJWF9GTVRfWVVZVjsKKyAgICAgICAgICAgICAgICBmbXQuZm10LnBpeC5maWVsZCAgICAgICA9IFY0TDJfRklFTERfSU5URVJMQUNFRDsKKworICAgICAgICAgICAgICAgIGlmICgtMSA9PSB4aW9jdGwoZmQsIFZJRElPQ19TX0ZNVCwgJmFtcDtmbXQpKQorICAgICAgICAgICAgICAgICAgICAgICAgZXJybm9fZXhpdCgiVklESU9DX1NfRk1UIik7CisKKyAgICAgICAgICAgICAgICAvKiBOb3RlIFZJRElPQ19TX0ZNVCBtYXkgY2hhbmdlIHdpZHRoIGFuZCBoZWlnaHQuICovCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyogUHJlc2VydmUgb3JpZ2luYWwgc2V0dGluZ3MgYXMgc2V0IGJ5IHY0bDItY3RsIGZvciBleGFtcGxlICovCisgICAgICAgICAgICAgICAgaWYgKC0xID09IHhpb2N0bChmZCwgVklESU9DX0dfRk1ULCAmYW1wO2ZtdCkpCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJub19leGl0KCJWSURJT0NfR19GTVQiKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIEJ1Z2d5IGRyaXZlciBwYXJhbm9pYS4gKi8KKyAgICAgICAgbWluID0gZm10LmZtdC5waXgud2lkdGggKiAyOworICAgICAgICBpZiAoZm10LmZtdC5waXguYnl0ZXNwZXJsaW5lICZsdDsgbWluKQorICAgICAgICAgICAgICAgIGZtdC5mbXQucGl4LmJ5dGVzcGVybGluZSA9IG1pbjsKKyAgICAgICAgbWluID0gZm10LmZtdC5waXguYnl0ZXNwZXJsaW5lICogZm10LmZtdC5waXguaGVpZ2h0OworICAgICAgICBpZiAoZm10LmZtdC5waXguc2l6ZWltYWdlICZsdDsgbWluKQorICAgICAgICAgICAgICAgIGZtdC5mbXQucGl4LnNpemVpbWFnZSA9IG1pbjsKKworICAgICAgICBzd2l0Y2ggKGlvKSB7CisgICAgICAgIGNhc2UgSU9fTUVUSE9EX1JFQUQ6CisgICAgICAgICAgICAgICAgaW5pdF9yZWFkKGZtdC5mbXQucGl4LnNpemVpbWFnZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJT19NRVRIT0RfTU1BUDoKKyAgICAgICAgICAgICAgICBpbml0X21tYXAoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElPX01FVEhPRF9VU0VSUFRSOgorICAgICAgICAgICAgICAgIGluaXRfdXNlcnAoZm10LmZtdC5waXguc2l6ZWltYWdlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorfQorCitzdGF0aWMgdm9pZCBjbG9zZV9kZXZpY2Uodm9pZCkKK3sKKyAgICAgICAgaWYgKC0xID09IGNsb3NlKGZkKSkKKyAgICAgICAgICAgICAgICBlcnJub19leGl0KCJjbG9zZSIpOworCisgICAgICAgIGZkID0gLTE7Cit9CisKK3N0YXRpYyB2b2lkIG9wZW5fZGV2aWNlKHZvaWQpCit7CisgICAgICAgIHN0cnVjdCBzdGF0IHN0OworCisgICAgICAgIGlmICgtMSA9PSBzdGF0KGRldl9uYW1lLCAmYW1wO3N0KSkgeworICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2Fubm90IGlkZW50aWZ5ICclcyc6ICVkLCAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfbmFtZSwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFTX0lTQ0hSKHN0LnN0X21vZGUpKSB7CisgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcyBpcyBubyBkZXZpY2VcbiIsIGRldl9uYW1lKTsKKyAgICAgICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgICAgIH0KKworICAgICAgICBmZCA9IG9wZW4oZGV2X25hbWUsIE9fUkRXUiAvKiByZXF1aXJlZCAqLyB8IE9fTk9OQkxPQ0ssIDApOworCisgICAgICAgIGlmICgtMSA9PSBmZCkgeworICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2Fubm90IG9wZW4gJyVzJzogJWQsICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9uYW1lLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgICAgIH0KK30KKworc3RhdGljIHZvaWQgdXNhZ2UoRklMRSAqZnAsIGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICAgICAgZnByaW50ZihmcCwKKyAgICAgICAgICAgICAgICAgIlVzYWdlOiAlcyBbb3B0aW9uc11cblxuIgorICAgICAgICAgICAgICAgICAiVmVyc2lvbiAxLjNcbiIKKyAgICAgICAgICAgICAgICAgIk9wdGlvbnM6XG4iCisgICAgICAgICAgICAgICAgICItZCB8IC0tZGV2aWNlIG5hbWUgICBWaWRlbyBkZXZpY2UgbmFtZSBbJXNdXG4iCisgICAgICAgICAgICAgICAgICItaCB8IC0taGVscCAgICAgICAgICBQcmludCB0aGlzIG1lc3NhZ2VcbiIKKyAgICAgICAgICAgICAgICAgIi1tIHwgLS1tbWFwICAgICAgICAgIFVzZSBtZW1vcnkgbWFwcGVkIGJ1ZmZlcnMgW2RlZmF1bHRdXG4iCisgICAgICAgICAgICAgICAgICItciB8IC0tcmVhZCAgICAgICAgICBVc2UgcmVhZCgpIGNhbGxzXG4iCisgICAgICAgICAgICAgICAgICItdSB8IC0tdXNlcnAgICAgICAgICBVc2UgYXBwbGljYXRpb24gYWxsb2NhdGVkIGJ1ZmZlcnNcbiIKKyAgICAgICAgICAgICAgICAgIi1vIHwgLS1vdXRwdXQgICAgICAgIE91dHB1dHMgc3RyZWFtIHRvIHN0ZG91dFxuIgorICAgICAgICAgICAgICAgICAiLWYgfCAtLWZvcm1hdCAgICAgICAgRm9yY2UgZm9ybWF0IHRvIDY0MHg0ODAgWVVZVlxuIgorICAgICAgICAgICAgICAgICAiLWMgfCAtLWNvdW50ICAgICAgICAgTnVtYmVyIG9mIGZyYW1lcyB0byBncmFiIFslaV1cbiIKKyAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgIGFyZ3ZbMF0sIGRldl9uYW1lLCBmcmFtZV9jb3VudCk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyIHNob3J0X29wdGlvbnNbXSA9ICJkOmhtcnVvZmM6IjsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBvcHRpb24KK2xvbmdfb3B0aW9uc1tdID0geworICAgICAgICB7ICJkZXZpY2UiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ2QnIH0sCisgICAgICAgIHsgImhlbHAiLCAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnaCcgfSwKKyAgICAgICAgeyAibW1hcCIsICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdtJyB9LAorICAgICAgICB7ICJyZWFkIiwgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ3InIH0sCisgICAgICAgIHsgInVzZXJwIiwgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAndScgfSwKKyAgICAgICAgeyAib3V0cHV0Iiwgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdvJyB9LAorICAgICAgICB7ICJmb3JtYXQiLCBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ2YnIH0sCisgICAgICAgIHsgImNvdW50IiwgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnYycgfSwKKyAgICAgICAgeyAwLCAwLCAwLCAwIH0KK307CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICAgICAgZGV2X25hbWUgPSAiL2Rldi92aWRlbzAiOworCisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICBpbnQgaWR4OworICAgICAgICAgICAgICAgIGludCBjOworCisgICAgICAgICAgICAgICAgYyA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0X29wdGlvbnMsIGxvbmdfb3B0aW9ucywgJmFtcDtpZHgpOworCisgICAgICAgICAgICAgICAgaWYgKC0xID09IGMpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIHN3aXRjaCAoYykgeworICAgICAgICAgICAgICAgIGNhc2UgMDogLyogZ2V0b3B0X2xvbmcoKSBmbGFnICovCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgJ2QnOgorICAgICAgICAgICAgICAgICAgICAgICAgZGV2X25hbWUgPSBvcHRhcmc7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgJ2gnOgorICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2Uoc3Rkb3V0LCBhcmdjLCBhcmd2KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoRVhJVF9TVUNDRVNTKTsKKworICAgICAgICAgICAgICAgIGNhc2UgJ20nOgorICAgICAgICAgICAgICAgICAgICAgICAgaW8gPSBJT19NRVRIT0RfTU1BUDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSAncic6CisgICAgICAgICAgICAgICAgICAgICAgICBpbyA9IElPX01FVEhPRF9SRUFEOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlICd1JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlvID0gSU9fTUVUSE9EX1VTRVJQVFI7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgJ28nOgorICAgICAgICAgICAgICAgICAgICAgICAgb3V0X2J1ZisrOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlICdmJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlX2Zvcm1hdCsrOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlICdjJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX2NvdW50ID0gc3RydG9sKG9wdGFyZywgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJybm8pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vX2V4aXQob3B0YXJnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlKHN0ZGVyciwgYXJnYywgYXJndik7CisgICAgICAgICAgICAgICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgb3Blbl9kZXZpY2UoKTsKKyAgICAgICAgaW5pdF9kZXZpY2UoKTsKKyAgICAgICAgc3RhcnRfY2FwdHVyaW5nKCk7CisgICAgICAgIG1haW5sb29wKCk7CisgICAgICAgIHN0b3BfY2FwdHVyaW5nKCk7CisgICAgICAgIHVuaW5pdF9kZXZpY2UoKTsKKyAgICAgICAgY2xvc2VfZGV2aWNlKCk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiXG4iKTsKKyAgICAgICAgcmV0dXJuIDA7Cit9Cis8L3Byb2dyYW1saXN0aW5nPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9jb21tb24ueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9jb21tb24ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiNWUwMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2NvbW1vbi54bWwKQEAgLTAsMCArMSwxMTAyIEBACisgIDx0aXRsZT5Db21tb24gQVBJIEVsZW1lbnRzPC90aXRsZT4KKworICA8cGFyYT5Qcm9ncmFtbWluZyBhIFY0TDIgZGV2aWNlIGNvbnNpc3RzIG9mIHRoZXNlCitzdGVwczo8L3BhcmE+CisKKyAgPGl0ZW1pemVkbGlzdD4KKyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT5PcGVuaW5nIHRoZSBkZXZpY2U8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT5DaGFuZ2luZyBkZXZpY2UgcHJvcGVydGllcywgc2VsZWN0aW5nIGEgdmlkZW8gYW5kIGF1ZGlvCitpbnB1dCwgdmlkZW8gc3RhbmRhcmQsIHBpY3R1cmUgYnJpZ2h0bmVzcyBhLiZuYnNwO28uPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+TmVnb3RpYXRpbmcgYSBkYXRhIGZvcm1hdDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPk5lZ290aWF0aW5nIGFuIGlucHV0L291dHB1dCBtZXRob2Q8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT5UaGUgYWN0dWFsIGlucHV0L291dHB1dCBsb29wPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+Q2xvc2luZyB0aGUgZGV2aWNlPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgIDwvaXRlbWl6ZWRsaXN0PgorCisgIDxwYXJhPkluIHByYWN0aWNlIG1vc3Qgc3RlcHMgYXJlIG9wdGlvbmFsIGFuZCBjYW4gYmUgZXhlY3V0ZWQgb3V0IG9mCitvcmRlci4gSXQgZGVwZW5kcyBvbiB0aGUgVjRMMiBkZXZpY2UgdHlwZSwgeW91IGNhbiByZWFkIGFib3V0IHRoZQorZGV0YWlscyBpbiA8eHJlZiBsaW5rZW5kPSJkZXZpY2VzIiAvPi4gSW4gdGhpcyBjaGFwdGVyIHdlIHdpbGwgZGlzY3VzcwordGhlIGJhc2ljIGNvbmNlcHRzIGFwcGxpY2FibGUgdG8gYWxsIGRldmljZXMuPC9wYXJhPgorCisgIDxzZWN0aW9uIGlkPSJvcGVuIj4KKyAgICA8dGl0bGU+T3BlbmluZyBhbmQgQ2xvc2luZyBEZXZpY2VzPC90aXRsZT4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPkRldmljZSBOYW1pbmc8L3RpdGxlPgorCisgICAgICA8cGFyYT5WNEwyIGRyaXZlcnMgYXJlIGltcGxlbWVudGVkIGFzIGtlcm5lbCBtb2R1bGVzLCBsb2FkZWQKK21hbnVhbGx5IGJ5IHRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvciBvciBhdXRvbWF0aWNhbGx5IHdoZW4gYSBkZXZpY2UgaXMKK2ZpcnN0IGRpc2NvdmVyZWQuIFRoZSBkcml2ZXIgbW9kdWxlcyBwbHVnIGludG8gdGhlICJ2aWRlb2RldiIga2VybmVsCittb2R1bGUuIEl0IHByb3ZpZGVzIGhlbHBlciBmdW5jdGlvbnMgYW5kIGEgY29tbW9uIGFwcGxpY2F0aW9uCitpbnRlcmZhY2Ugc3BlY2lmaWVkIGluIHRoaXMgZG9jdW1lbnQuPC9wYXJhPgorCisgICAgICA8cGFyYT5FYWNoIGRyaXZlciB0aHVzIGxvYWRlZCByZWdpc3RlcnMgb25lIG9yIG1vcmUgZGV2aWNlIG5vZGVzCit3aXRoIG1ham9yIG51bWJlciA4MSBhbmQgYSBtaW5vciBudW1iZXIgYmV0d2VlbiAwIGFuZCAyNTUuIE1pbm9yIG51bWJlcnMKK2FyZSBhbGxvY2F0ZWQgZHluYW1pY2FsbHkgdW5sZXNzIHRoZSBrZXJuZWwgaXMgY29tcGlsZWQgd2l0aCB0aGUga2VybmVsCitvcHRpb24gQ09ORklHX1ZJREVPX0ZJWEVEX01JTk9SX1JBTkdFUy4gSW4gdGhhdCBjYXNlIG1pbm9yIG51bWJlcnMgYXJlCithbGxvY2F0ZWQgaW4gcmFuZ2VzIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlIG5vZGUgdHlwZSAodmlkZW8sIHJhZGlvLCBldGMuKS48L3BhcmE+CisKKyAgICAgIDxwYXJhPk1hbnkgZHJpdmVycyBzdXBwb3J0ICJ2aWRlb19uciIsICJyYWRpb19uciIgb3IgInZiaV9uciIKK21vZHVsZSBvcHRpb25zIHRvIHNlbGVjdCBzcGVjaWZpYyB2aWRlby9yYWRpby92Ymkgbm9kZSBudW1iZXJzLiBUaGlzIGFsbG93cwordGhlIHVzZXIgdG8gcmVxdWVzdCB0aGF0IHRoZSBkZXZpY2Ugbm9kZSBpcyBuYW1lZCBlLmcuIC9kZXYvdmlkZW81IGluc3RlYWQKK29mIGxlYXZpbmcgaXQgdG8gY2hhbmNlLiBXaGVuIHRoZSBkcml2ZXIgc3VwcG9ydHMgbXVsdGlwbGUgZGV2aWNlcyBvZiB0aGUgc2FtZQordHlwZSBtb3JlIHRoYW4gb25lIGRldmljZSBub2RlIG51bWJlciBjYW4gYmUgYXNzaWduZWQsIHNlcGFyYXRlZCBieSBjb21tYXM6CisJPGluZm9ybWFsZXhhbXBsZT4KKwkgIDxzY3JlZW4+CismZ3Q7IG1vZHByb2JlIG15ZHJpdmVyIHZpZGVvX25yPTAsMSByYWRpb19ucj0wLDE8L3NjcmVlbj4KKwk8L2luZm9ybWFsZXhhbXBsZT48L3BhcmE+CisKKyAgICAgIDxwYXJhPkluIDxmaWxlbmFtZT4vZXRjL21vZHVsZXMuY29uZjwvZmlsZW5hbWU+IHRoaXMgbWF5IGJlCit3cml0dGVuIGFzOiA8aW5mb3JtYWxleGFtcGxlPgorCSAgPHNjcmVlbj4KK29wdGlvbnMgbXlkcml2ZXIgdmlkZW9fbnI9MCwxIHJhZGlvX25yPTAsMQorCSAgPC9zY3JlZW4+CisJPC9pbmZvcm1hbGV4YW1wbGU+IFdoZW4gbm8gZGV2aWNlIG5vZGUgbnVtYmVyIGlzIGdpdmVuIGFzIG1vZHVsZQorb3B0aW9uIHRoZSBkcml2ZXIgc3VwcGxpZXMgYSBkZWZhdWx0LjwvcGFyYT4KKworICAgICAgPHBhcmE+Tm9ybWFsbHkgdWRldiB3aWxsIGNyZWF0ZSB0aGUgZGV2aWNlIG5vZGVzIGluIC9kZXYgYXV0b21hdGljYWxseQorZm9yIHlvdS4gSWYgdWRldiBpcyBub3QgaW5zdGFsbGVkLCB0aGVuIHlvdSBuZWVkIHRvIGVuYWJsZSB0aGUKK0NPTkZJR19WSURFT19GSVhFRF9NSU5PUl9SQU5HRVMga2VybmVsIG9wdGlvbiBpbiBvcmRlciB0byBiZSBhYmxlIHRvIGNvcnJlY3RseQorcmVsYXRlIGEgbWlub3IgbnVtYmVyIHRvIGEgZGV2aWNlIG5vZGUgbnVtYmVyLiBJLmUuLCB5b3UgbmVlZCB0byBiZSBjZXJ0YWluCit0aGF0IG1pbm9yIG51bWJlciA1IG1hcHMgdG8gZGV2aWNlIG5vZGUgbmFtZSB2aWRlbzUuIFdpdGggdGhpcyBrZXJuZWwgb3B0aW9uCitkaWZmZXJlbnQgZGV2aWNlIHR5cGVzIGhhdmUgZGlmZmVyZW50IG1pbm9yIG51bWJlciByYW5nZXMuIFRoZXNlIHJhbmdlcyBhcmUKK2xpc3RlZCBpbiA8eHJlZiBsaW5rZW5kPSJkZXZpY2VzIiAvPi4KKzwvcGFyYT4KKworICAgICAgPHBhcmE+VGhlIGNyZWF0aW9uIG9mIGNoYXJhY3RlciBzcGVjaWFsIGZpbGVzICh3aXRoCis8YXBwbGljYXRpb24+bWtub2Q8L2FwcGxpY2F0aW9uPikgaXMgYSBwcml2aWxlZ2VkIG9wZXJhdGlvbiBhbmQKK2RldmljZXMgY2Fubm90IGJlIG9wZW5lZCBieSBtYWpvciBhbmQgbWlub3IgbnVtYmVyLiBUaGF0IG1lYW5zCithcHBsaWNhdGlvbnMgY2Fubm90IDxlbXBoYXNpcz5yZWxpYWJsZTwvZW1waGFzaXM+IHNjYW4gZm9yIGxvYWRlZCBvcgoraW5zdGFsbGVkIGRyaXZlcnMuIFRoZSB1c2VyIG11c3QgZW50ZXIgYSBkZXZpY2UgbmFtZSwgb3IgdGhlCithcHBsaWNhdGlvbiBjYW4gdHJ5IHRoZSBjb252ZW50aW9uYWwgZGV2aWNlIG5hbWVzLjwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0icmVsYXRlZCI+CisgICAgICA8dGl0bGU+UmVsYXRlZCBEZXZpY2VzPC90aXRsZT4KKworICAgICAgPHBhcmE+RGV2aWNlcyBjYW4gc3VwcG9ydCBzZXZlcmFsIGZ1bmN0aW9ucy4gRm9yIGV4YW1wbGUKK3ZpZGVvIGNhcHR1cmluZywgVkJJIGNhcHR1cmluZyBhbmQgcmFkaW8gc3VwcG9ydC48L3BhcmE+CisKKyAgICAgIDxwYXJhPlRoZSBWNEwyIEFQSSBjcmVhdGVzIGRpZmZlcmVudCBub2RlcyBmb3IgZWFjaCBvZiB0aGVzZSBmdW5jdGlvbnMuPC9wYXJhPgorCisgICAgICA8cGFyYT5UaGUgVjRMMiBBUEkgd2FzIGRlc2lnbmVkIHdpdGggdGhlIGlkZWEgdGhhdCBvbmUgZGV2aWNlIG5vZGUgY291bGQgc3VwcG9ydAorYWxsIGZ1bmN0aW9ucy4gSG93ZXZlciwgaW4gcHJhY3RpY2UgdGhpcyBuZXZlciB3b3JrZWQ6IHRoaXMgJ2ZlYXR1cmUnCit3YXMgbmV2ZXIgdXNlZCBieSBhcHBsaWNhdGlvbnMgYW5kIG1hbnkgZHJpdmVycyBkaWQgbm90IHN1cHBvcnQgaXQgYW5kIGlmCit0aGV5IGRpZCBpdCB3YXMgY2VydGFpbmx5IG5ldmVyIHRlc3RlZC4gSW4gYWRkaXRpb24sIHN3aXRjaGluZyBhIGRldmljZQorbm9kZSBiZXR3ZWVuIGRpZmZlcmVudCBmdW5jdGlvbnMgb25seSB3b3JrcyB3aGVuIHVzaW5nIHRoZSBzdHJlYW1pbmcgSS9PCitBUEksIG5vdCB3aXRoIHRoZSByZWFkKCkvd3JpdGUoKSBBUEkuPC9wYXJhPgorCisgICAgICA8cGFyYT5Ub2RheSBlYWNoIGRldmljZSBub2RlIHN1cHBvcnRzIGp1c3Qgb25lIGZ1bmN0aW9uLjwvcGFyYT4KKworICAgICAgPHBhcmE+QmVzaWRlcyB2aWRlbyBpbnB1dCBvciBvdXRwdXQgdGhlIGhhcmR3YXJlIG1heSBhbHNvCitzdXBwb3J0IGF1ZGlvIHNhbXBsaW5nIG9yIHBsYXliYWNrLiBJZiBzbywgdGhlc2UgZnVuY3Rpb25zIGFyZQoraW1wbGVtZW50ZWQgYXMgQUxTQSBQQ00gZGV2aWNlcyB3aXRoIG9wdGlvbmFsIEFMU0EgYXVkaW8gbWl4ZXIKK2RldmljZXMuPC9wYXJhPgorCisgICAgICA8cGFyYT5PbmUgcHJvYmxlbSB3aXRoIGFsbCB0aGVzZSBkZXZpY2VzIGlzIHRoYXQgdGhlIFY0TDIgQVBJCittYWtlcyBubyBwcm92aXNpb25zIHRvIGZpbmQgdGhlc2UgcmVsYXRlZCBkZXZpY2VzLiBTb21lIHJlYWxseQorY29tcGxleCBkZXZpY2VzIHVzZSB0aGUgTWVkaWEgQ29udHJvbGxlciAoc2VlIDx4cmVmIGxpbmtlbmQ9Im1lZGlhX2NvbnRyb2xsZXIiIC8+KQord2hpY2ggY2FuIGJlIHVzZWQgZm9yIHRoaXMgcHVycG9zZS4gQnV0IG1vc3QgZHJpdmVycyBkbyBub3QgdXNlIGl0LAorYW5kIHdoaWxlIHNvbWUgY29kZSBleGlzdHMgdGhhdCB1c2VzIHN5c2ZzIHRvIGRpc2NvdmVyIHJlbGF0ZWQgZGV2aWNlcworKHNlZSBsaWJtZWRpYV9kZXYgaW4gdGhlIDx1bGluayB1cmw9Imh0dHA6Ly9naXQubGludXh0di5vcmcvY2dpdC5jZ2kvdjRsLXV0aWxzLmdpdC8iPnY0bC11dGlsczwvdWxpbms+CitnaXQgcmVwb3NpdG9yeSksIHRoZXJlIGlzIG5vIGxpYnJhcnkgeWV0IHRoYXQgY2FuIHByb3ZpZGUgYSBzaW5nbGUgQVBJIHRvd2FyZHMKK2JvdGggTWVkaWEgQ29udHJvbGxlci1iYXNlZCBkZXZpY2VzIGFuZCBkZXZpY2VzIHRoYXQgZG8gbm90IHVzZSB0aGUgTWVkaWEgQ29udHJvbGxlci4KK0lmIHlvdSB3YW50IHRvIHdvcmsgb24gdGhpcyBwbGVhc2Ugd3JpdGUgdG8gdGhlIGxpbnV4LW1lZGlhIG1haWxpbmcgbGlzdDogJnY0bC1tbDsuPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPk11bHRpcGxlIE9wZW5zPC90aXRsZT4KKworICAgICAgPHBhcmE+VjRMMiBkZXZpY2VzIGNhbiBiZSBvcGVuZWQgbW9yZSB0aGFuIG9uY2UuPGZvb3Rub3RlPjxwYXJhPgorVGhlcmUgYXJlIHN0aWxsIHNvbWUgb2xkIGFuZCBvYnNjdXJlIGRyaXZlcnMgdGhhdCBoYXZlIG5vdCBiZWVuIHVwZGF0ZWQgdG8KK2FsbG93IGZvciBtdWx0aXBsZSBvcGVucy4gVGhpcyBpbXBsaWVzIHRoYXQgZm9yIHN1Y2ggZHJpdmVycyAmZnVuYy1vcGVuOyBjYW4KK3JldHVybiBhbiAmRUJVU1k7IHdoZW4gdGhlIGRldmljZSBpcyBhbHJlYWR5IGluIHVzZS48L3BhcmE+PC9mb290bm90ZT4KK1doZW4gdGhpcyBpcyBzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlciwgdXNlcnMgY2FuIGZvciBleGFtcGxlIHN0YXJ0IGEKKyJwYW5lbCIgYXBwbGljYXRpb24gdG8gY2hhbmdlIGNvbnRyb2xzIGxpa2UgYnJpZ2h0bmVzcyBvciBhdWRpbwordm9sdW1lLCB3aGlsZSBhbm90aGVyIGFwcGxpY2F0aW9uIGNhcHR1cmVzIHZpZGVvIGFuZCBhdWRpby4gSW4gb3RoZXIgd29yZHMsIHBhbmVsCithcHBsaWNhdGlvbnMgYXJlIGNvbXBhcmFibGUgdG8gYW4gQUxTQSBhdWRpbyBtaXhlciBhcHBsaWNhdGlvbi4KK0p1c3Qgb3BlbmluZyBhIFY0TDIgZGV2aWNlIHNob3VsZCBub3QgY2hhbmdlIHRoZSBzdGF0ZSBvZiB0aGUgZGV2aWNlLjxmb290bm90ZT4KKzxwYXJhPlVuZm9ydHVuYXRlbHksIG9wZW5pbmcgYSByYWRpbyBkZXZpY2Ugb2Z0ZW4gc3dpdGNoZXMgdGhlIHN0YXRlIG9mIHRoZQorZGV2aWNlIHRvIHJhZGlvIG1vZGUgaW4gbWFueSBkcml2ZXJzLiBUaGlzIGJlaGF2aW9yIHNob3VsZCBiZSBmaXhlZCBldmVudHVhbGx5CithcyBpdCB2aW9sYXRlcyB0aGUgVjRMMiBzcGVjaWZpY2F0aW9uLjwvcGFyYT48L2Zvb3Rub3RlPjwvcGFyYT4KKworICAgICAgPHBhcmE+T25jZSBhbiBhcHBsaWNhdGlvbiBoYXMgYWxsb2NhdGVkIHRoZSBtZW1vcnkgYnVmZmVycyBuZWVkZWQgZm9yCitzdHJlYW1pbmcgZGF0YSAoYnkgY2FsbGluZyB0aGUgJlZJRElPQy1SRVFCVUZTOyBvciAmVklESU9DLUNSRUFURS1CVUZTOyBpb2N0bHMsCitvciBpbXBsaWNpdGx5IGJ5IGNhbGxpbmcgdGhlICZmdW5jLXJlYWQ7IG9yICZmdW5jLXdyaXRlOyBmdW5jdGlvbnMpIHRoYXQKK2FwcGxpY2F0aW9uIChmaWxlaGFuZGxlKSBiZWNvbWVzIHRoZSBvd25lciBvZiB0aGUgZGV2aWNlLiBJdCBpcyBubyBsb25nZXIKK2FsbG93ZWQgdG8gbWFrZSBjaGFuZ2VzIHRoYXQgd291bGQgYWZmZWN0IHRoZSBidWZmZXIgc2l6ZXMgKGUuZy4gYnkgY2FsbGluZwordGhlICZWSURJT0MtUy1GTVQ7IGlvY3RsKSBhbmQgb3RoZXIgYXBwbGljYXRpb25zIGFyZSBubyBsb25nZXIgYWxsb3dlZCB0byBhbGxvY2F0ZQorYnVmZmVycyBvciBzdGFydCBvciBzdG9wIHN0cmVhbWluZy4gVGhlICZFQlVTWTsgd2lsbCBiZSByZXR1cm5lZCBpbnN0ZWFkLjwvcGFyYT4KKworICAgICAgPHBhcmE+TWVyZWx5IG9wZW5pbmcgYSBWNEwyIGRldmljZSBkb2VzIG5vdCBncmFudCBleGNsdXNpdmUKK2FjY2Vzcy48Zm9vdG5vdGU+CisJICA8cGFyYT5Ecml2ZXJzIGNvdWxkIHJlY29nbml6ZSB0aGUKKzxjb25zdGFudD5PX0VYQ0w8L2NvbnN0YW50PiBvcGVuIGZsYWcuIFByZXNlbnRseSB0aGlzIGlzIG5vdCByZXF1aXJlZCwKK3NvIGFwcGxpY2F0aW9ucyBjYW5ub3Qga25vdyBpZiBpdCByZWFsbHkgd29ya3MuPC9wYXJhPgorCTwvZm9vdG5vdGU+IEluaXRpYXRpbmcgZGF0YSBleGNoYW5nZSBob3dldmVyIGFzc2lnbnMgdGhlIHJpZ2h0Cit0byByZWFkIG9yIHdyaXRlIHRoZSByZXF1ZXN0ZWQgdHlwZSBvZiBkYXRhLCBhbmQgdG8gY2hhbmdlIHJlbGF0ZWQKK3Byb3BlcnRpZXMsIHRvIHRoaXMgZmlsZSBkZXNjcmlwdG9yLiBBcHBsaWNhdGlvbnMgY2FuIHJlcXVlc3QKK2FkZGl0aW9uYWwgYWNjZXNzIHByaXZpbGVnZXMgdXNpbmcgdGhlIHByaW9yaXR5IG1lY2hhbmlzbSBkZXNjcmliZWQgaW4KKzx4cmVmIGxpbmtlbmQ9ImFwcC1wcmkiIC8+LjwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5TaGFyZWQgRGF0YSBTdHJlYW1zPC90aXRsZT4KKworICAgICAgPHBhcmE+VjRMMiBkcml2ZXJzIHNob3VsZCBub3Qgc3VwcG9ydCBtdWx0aXBsZSBhcHBsaWNhdGlvbnMKK3JlYWRpbmcgb3Igd3JpdGluZyB0aGUgc2FtZSBkYXRhIHN0cmVhbSBvbiBhIGRldmljZSBieSBjb3B5aW5nCitidWZmZXJzLCB0aW1lIG11bHRpcGxleGluZyBvciBzaW1pbGFyIG1lYW5zLiBUaGlzIGlzIGJldHRlciBoYW5kbGVkIGJ5CithIHByb3h5IGFwcGxpY2F0aW9uIGluIHVzZXIgc3BhY2UuPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPkZ1bmN0aW9uczwvdGl0bGU+CisKKyAgICA8cGFyYT5UbyBvcGVuIGFuZCBjbG9zZSBWNEwyIGRldmljZXMgYXBwbGljYXRpb25zIHVzZSB0aGUKKyZmdW5jLW9wZW47IGFuZCAmZnVuYy1jbG9zZTsgZnVuY3Rpb24sIHJlc3BlY3RpdmVseS4gRGV2aWNlcyBhcmUKK3Byb2dyYW1tZWQgdXNpbmcgdGhlICZmdW5jLWlvY3RsOyBmdW5jdGlvbiBhcyBleHBsYWluZWQgaW4gdGhlCitmb2xsb3dpbmcgc2VjdGlvbnMuPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKyAgPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uIGlkPSJxdWVyeWNhcCI+CisgICAgPHRpdGxlPlF1ZXJ5aW5nIENhcGFiaWxpdGllczwvdGl0bGU+CisKKyAgICA8cGFyYT5CZWNhdXNlIFY0TDIgY292ZXJzIGEgd2lkZSB2YXJpZXR5IG9mIGRldmljZXMgbm90IGFsbAorYXNwZWN0cyBvZiB0aGUgQVBJIGFyZSBlcXVhbGx5IGFwcGxpY2FibGUgdG8gYWxsIHR5cGVzIG9mIGRldmljZXMuCitGdXJ0aGVybW9yZSBkZXZpY2VzIG9mIHRoZSBzYW1lIHR5cGUgaGF2ZSBkaWZmZXJlbnQgY2FwYWJpbGl0aWVzIGFuZAordGhpcyBzcGVjaWZpY2F0aW9uIHBlcm1pdHMgdGhlIG9taXNzaW9uIG9mIGEgZmV3IGNvbXBsaWNhdGVkIGFuZCBsZXNzCitpbXBvcnRhbnQgcGFydHMgb2YgdGhlIEFQSS48L3BhcmE+CisKKyAgICA8cGFyYT5UaGUgJlZJRElPQy1RVUVSWUNBUDsgaW9jdGwgaXMgYXZhaWxhYmxlIHRvIGNoZWNrIGlmIHRoZSBrZXJuZWwKK2RldmljZSBpcyBjb21wYXRpYmxlIHdpdGggdGhpcyBzcGVjaWZpY2F0aW9uLCBhbmQgdG8gcXVlcnkgdGhlIDxsaW5rCitsaW5rZW5kPSJkZXZpY2VzIj5mdW5jdGlvbnM8L2xpbms+IGFuZCA8bGluayBsaW5rZW5kPSJpbyI+SS9PCittZXRob2RzPC9saW5rPiBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZS48L3BhcmE+CisKKyAgICA8cGFyYT5TdGFydGluZyB3aXRoIGtlcm5lbCB2ZXJzaW9uIDMuMSwgVklESU9DLVFVRVJZQ0FQIHdpbGwgcmV0dXJuIHRoZQorVjRMMiBBUEkgdmVyc2lvbiB1c2VkIGJ5IHRoZSBkcml2ZXIsIHdpdGggZ2VuZXJhbGx5IG1hdGNoZXMgdGhlIEtlcm5lbCB2ZXJzaW9uLgorVGhlcmUncyBubyBuZWVkIG9mIHVzaW5nICZWSURJT0MtUVVFUllDQVA7IHRvIGNoZWNrIGlmIGEgc3BlY2lmaWMgaW9jdGwgaXMKK3N1cHBvcnRlZCwgdGhlIFY0TDIgY29yZSBub3cgcmV0dXJucyBFTk9UVFkgaWYgYSBkcml2ZXIgZG9lc24ndCBwcm92aWRlCitzdXBwb3J0IGZvciBhbiBpb2N0bC48L3BhcmE+CisKKyAgICA8cGFyYT5PdGhlciBmZWF0dXJlcyBjYW4gYmUgcXVlcmllZAorYnkgY2FsbGluZyB0aGUgcmVzcGVjdGl2ZSBpb2N0bCwgZm9yIGV4YW1wbGUgJlZJRElPQy1FTlVNSU5QVVQ7Cit0byBsZWFybiBhYm91dCB0aGUgbnVtYmVyLCB0eXBlcyBhbmQgbmFtZXMgb2YgdmlkZW8gY29ubmVjdG9ycyBvbiB0aGUKK2RldmljZS4gQWx0aG91Z2ggYWJzdHJhY3Rpb24gaXMgYSBtYWpvciBvYmplY3RpdmUgb2YgdGhpcyBBUEksIHRoZQorJlZJRElPQy1RVUVSWUNBUDsgaW9jdGwgYWxzbyBhbGxvd3MgZHJpdmVyIHNwZWNpZmljIGFwcGxpY2F0aW9ucyB0byByZWxpYWJseSBpZGVudGlmeQordGhlIGRyaXZlci48L3BhcmE+CisKKyAgICA8cGFyYT5BbGwgVjRMMiBkcml2ZXJzIG11c3Qgc3VwcG9ydAorPGNvbnN0YW50PlZJRElPQ19RVUVSWUNBUDwvY29uc3RhbnQ+LiBBcHBsaWNhdGlvbnMgc2hvdWxkIGFsd2F5cyBjYWxsCit0aGlzIGlvY3RsIGFmdGVyIG9wZW5pbmcgdGhlIGRldmljZS48L3BhcmE+CisgIDwvc2VjdGlvbj4KKworICA8c2VjdGlvbiBpZD0iYXBwLXByaSI+CisgICAgPHRpdGxlPkFwcGxpY2F0aW9uIFByaW9yaXR5PC90aXRsZT4KKworICAgIDxwYXJhPldoZW4gbXVsdGlwbGUgYXBwbGljYXRpb25zIHNoYXJlIGEgZGV2aWNlIGl0IG1heSBiZQorZGVzaXJhYmxlIHRvIGFzc2lnbiB0aGVtIGRpZmZlcmVudCBwcmlvcml0aWVzLiBDb250cmFyeSB0byB0aGUKK3RyYWRpdGlvbmFsICJybSAtcmYgLyIgc2Nob29sIG9mIHRob3VnaHQgYSB2aWRlbyByZWNvcmRpbmcgYXBwbGljYXRpb24KK2NvdWxkIGZvciBleGFtcGxlIGJsb2NrIG90aGVyIGFwcGxpY2F0aW9ucyBmcm9tIGNoYW5naW5nIHZpZGVvCitjb250cm9scyBvciBzd2l0Y2hpbmcgdGhlIGN1cnJlbnQgVFYgY2hhbm5lbC4gQW5vdGhlciBvYmplY3RpdmUgaXMgdG8KK3Blcm1pdCBsb3cgcHJpb3JpdHkgYXBwbGljYXRpb25zIHdvcmtpbmcgaW4gYmFja2dyb3VuZCwgd2hpY2ggY2FuIGJlCitwcmVlbXB0ZWQgYnkgdXNlciBjb250cm9sbGVkIGFwcGxpY2F0aW9ucyBhbmQgYXV0b21hdGljYWxseSByZWdhaW4KK2NvbnRyb2wgb2YgdGhlIGRldmljZSBhdCBhIGxhdGVyIHRpbWUuPC9wYXJhPgorCisgICAgPHBhcmE+U2luY2UgdGhlc2UgZmVhdHVyZXMgY2Fubm90IGJlIGltcGxlbWVudGVkIGVudGlyZWx5IGluIHVzZXIKK3NwYWNlIFY0TDIgZGVmaW5lcyB0aGUgJlZJRElPQy1HLVBSSU9SSVRZOyBhbmQgJlZJRElPQy1TLVBSSU9SSVRZOworaW9jdGxzIHRvIHJlcXVlc3QgYW5kIHF1ZXJ5IHRoZSBhY2Nlc3MgcHJpb3JpdHkgYXNzb2NpYXRlIHdpdGggYSBmaWxlCitkZXNjcmlwdG9yLiBPcGVuaW5nIGEgZGV2aWNlIGFzc2lnbnMgYSBtZWRpdW0gcHJpb3JpdHksIGNvbXBhdGlibGUKK3dpdGggZWFybGllciB2ZXJzaW9ucyBvZiBWNEwyIGFuZCBkcml2ZXJzIG5vdCBzdXBwb3J0aW5nIHRoZXNlIGlvY3Rscy4KK0FwcGxpY2F0aW9ucyByZXF1aXJpbmcgYSBkaWZmZXJlbnQgcHJpb3JpdHkgd2lsbCB1c3VhbGx5IGNhbGwKKzxjb25zdGFudD5WSURJT0NfU19QUklPUklUWTwvY29uc3RhbnQ+IGFmdGVyIHZlcmlmeWluZyB0aGUgZGV2aWNlIHdpdGgKK3RoZSAmVklESU9DLVFVRVJZQ0FQOyBpb2N0bC48L3BhcmE+CisKKyAgICA8cGFyYT5Jb2N0bHMgY2hhbmdpbmcgZHJpdmVyIHByb3BlcnRpZXMsIHN1Y2ggYXMgJlZJRElPQy1TLUlOUFVUOywKK3JldHVybiBhbiAmRUJVU1k7IGFmdGVyIGFub3RoZXIgYXBwbGljYXRpb24gb2J0YWluZWQgaGlnaGVyIHByaW9yaXR5LjwvcGFyYT4KKyAgPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uIGlkPSJ2aWRlbyI+CisgICAgPHRpdGxlPlZpZGVvIElucHV0cyBhbmQgT3V0cHV0czwvdGl0bGU+CisKKyAgICA8cGFyYT5WaWRlbyBpbnB1dHMgYW5kIG91dHB1dHMgYXJlIHBoeXNpY2FsIGNvbm5lY3RvcnMgb2YgYQorZGV2aWNlLiBUaGVzZSBjYW4gYmUgZm9yIGV4YW1wbGUgUkYgY29ubmVjdG9ycyAoYW50ZW5uYS9jYWJsZSksIENWQlMKK2Euay5hLiBDb21wb3NpdGUgVmlkZW8sIFMtVmlkZW8gb3IgUkdCIGNvbm5lY3RvcnMuIFZpZGVvIGFuZCBWQkkKK2NhcHR1cmUgZGV2aWNlcyBoYXZlIGlucHV0cy4gVmlkZW8gYW5kIFZCSSBvdXRwdXQgZGV2aWNlcyBoYXZlIG91dHB1dHMsCithdCBsZWFzdCBvbmUgZWFjaC4gUmFkaW8gZGV2aWNlcyBoYXZlIG5vIHZpZGVvIGlucHV0cyBvciBvdXRwdXRzLjwvcGFyYT4KKworICAgIDxwYXJhPlRvIGxlYXJuIGFib3V0IHRoZSBudW1iZXIgYW5kIGF0dHJpYnV0ZXMgb2YgdGhlCithdmFpbGFibGUgaW5wdXRzIGFuZCBvdXRwdXRzIGFwcGxpY2F0aW9ucyBjYW4gZW51bWVyYXRlIHRoZW0gd2l0aCB0aGUKKyZWSURJT0MtRU5VTUlOUFVUOyBhbmQgJlZJRElPQy1FTlVNT1VUUFVUOyBpb2N0bCwgcmVzcGVjdGl2ZWx5LiBUaGUKKyZ2NGwyLWlucHV0OyByZXR1cm5lZCBieSB0aGUgPGNvbnN0YW50PlZJRElPQ19FTlVNSU5QVVQ8L2NvbnN0YW50PgoraW9jdGwgYWxzbyBjb250YWlucyBzaWduYWwgc3RhdHVzIGluZm9ybWF0aW9uIGFwcGxpY2FibGUgd2hlbiB0aGUKK2N1cnJlbnQgdmlkZW8gaW5wdXQgaXMgcXVlcmllZC48L3BhcmE+CisKKyAgICA8cGFyYT5UaGUgJlZJRElPQy1HLUlOUFVUOyBhbmQgJlZJRElPQy1HLU9VVFBVVDsgaW9jdGxzIHJldHVybiB0aGUKK2luZGV4IG9mIHRoZSBjdXJyZW50IHZpZGVvIGlucHV0IG9yIG91dHB1dC4gVG8gc2VsZWN0IGEgZGlmZmVyZW50CitpbnB1dCBvciBvdXRwdXQgYXBwbGljYXRpb25zIGNhbGwgdGhlICZWSURJT0MtUy1JTlBVVDsgYW5kCismVklESU9DLVMtT1VUUFVUOyBpb2N0bHMuIERyaXZlcnMgbXVzdCBpbXBsZW1lbnQgYWxsIHRoZSBpbnB1dCBpb2N0bHMKK3doZW4gdGhlIGRldmljZSBoYXMgb25lIG9yIG1vcmUgaW5wdXRzLCBhbGwgdGhlIG91dHB1dCBpb2N0bHMgd2hlbiB0aGUKK2RldmljZSBoYXMgb25lIG9yIG1vcmUgb3V0cHV0cy48L3BhcmE+CisKKyAgICA8ZXhhbXBsZT4KKyAgICAgIDx0aXRsZT5JbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB2aWRlbyBpbnB1dDwvdGl0bGU+CisKKyAgICAgIDxwcm9ncmFtbGlzdGluZz4KKyZ2NGwyLWlucHV0OyBpbnB1dDsKK2ludCBpbmRleDsKKworaWYgKC0xID09IGlvY3RsKGZkLCAmVklESU9DLUctSU5QVVQ7LCAmYW1wO2luZGV4KSkgeworCXBlcnJvcigiVklESU9DX0dfSU5QVVQiKTsKKwlleGl0KEVYSVRfRkFJTFVSRSk7Cit9CisKK21lbXNldCgmYW1wO2lucHV0LCAwLCBzaXplb2YoaW5wdXQpKTsKK2lucHV0LmluZGV4ID0gaW5kZXg7CisKK2lmICgtMSA9PSBpb2N0bChmZCwgJlZJRElPQy1FTlVNSU5QVVQ7LCAmYW1wO2lucHV0KSkgeworCXBlcnJvcigiVklESU9DX0VOVU1JTlBVVCIpOworCWV4aXQoRVhJVF9GQUlMVVJFKTsKK30KKworcHJpbnRmKCJDdXJyZW50IGlucHV0OiAlc1xuIiwgaW5wdXQubmFtZSk7CisgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgIDwvZXhhbXBsZT4KKworICAgIDxleGFtcGxlPgorICAgICAgPHRpdGxlPlN3aXRjaGluZyB0byB0aGUgZmlyc3QgdmlkZW8gaW5wdXQ8L3RpdGxlPgorCisgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CitpbnQgaW5kZXg7CisKK2luZGV4ID0gMDsKKworaWYgKC0xID09IGlvY3RsKGZkLCAmVklESU9DLVMtSU5QVVQ7LCAmYW1wO2luZGV4KSkgeworCXBlcnJvcigiVklESU9DX1NfSU5QVVQiKTsKKwlleGl0KEVYSVRfRkFJTFVSRSk7Cit9CisgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgIDwvZXhhbXBsZT4KKyAgPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uIGlkPSJhdWRpbyI+CisgICAgPHRpdGxlPkF1ZGlvIElucHV0cyBhbmQgT3V0cHV0czwvdGl0bGU+CisKKyAgICA8cGFyYT5BdWRpbyBpbnB1dHMgYW5kIG91dHB1dHMgYXJlIHBoeXNpY2FsIGNvbm5lY3RvcnMgb2YgYQorZGV2aWNlLiBWaWRlbyBjYXB0dXJlIGRldmljZXMgaGF2ZSBpbnB1dHMsIG91dHB1dCBkZXZpY2VzIGhhdmUKK291dHB1dHMsIHplcm8gb3IgbW9yZSBlYWNoLiBSYWRpbyBkZXZpY2VzIGhhdmUgbm8gYXVkaW8gaW5wdXRzIG9yCitvdXRwdXRzLiBUaGV5IGhhdmUgZXhhY3RseSBvbmUgdHVuZXIgd2hpY2ggaW4gZmFjdAorPGVtcGhhc2lzPmlzPC9lbXBoYXNpcz4gYW4gYXVkaW8gc291cmNlLCBidXQgdGhpcyBBUEkgYXNzb2NpYXRlcwordHVuZXJzIHdpdGggdmlkZW8gaW5wdXRzIG9yIG91dHB1dHMgb25seSwgYW5kIHJhZGlvIGRldmljZXMgaGF2ZQorbm9uZSBvZiB0aGVzZS48Zm9vdG5vdGU+CisJPHBhcmE+QWN0dWFsbHkgJnY0bDItYXVkaW87IG91Z2h0IHRvIGhhdmUgYQorPHN0cnVjdGZpZWxkPnR1bmVyPC9zdHJ1Y3RmaWVsZD4gZmllbGQgbGlrZSAmdjRsMi1pbnB1dDssIG5vdCBvbmx5CittYWtpbmcgdGhlIEFQSSBtb3JlIGNvbnNpc3RlbnQgYnV0IGFsc28gcGVybWl0dGluZyByYWRpbyBkZXZpY2VzIHdpdGgKK211bHRpcGxlIHR1bmVycy48L3BhcmE+CisgICAgICA8L2Zvb3Rub3RlPiBBIGNvbm5lY3RvciBvbiBhIFRWIGNhcmQgdG8gbG9vcCBiYWNrIHRoZSByZWNlaXZlZAorYXVkaW8gc2lnbmFsIHRvIGEgc291bmQgY2FyZCBpcyBub3QgY29uc2lkZXJlZCBhbiBhdWRpbyBvdXRwdXQuPC9wYXJhPgorCisgICAgPHBhcmE+QXVkaW8gYW5kIHZpZGVvIGlucHV0cyBhbmQgb3V0cHV0cyBhcmUgYXNzb2NpYXRlZC4gU2VsZWN0aW5nCithIHZpZGVvIHNvdXJjZSBhbHNvIHNlbGVjdHMgYW4gYXVkaW8gc291cmNlLiBUaGlzIGlzIG1vc3QgZXZpZGVudCB3aGVuCit0aGUgdmlkZW8gYW5kIGF1ZGlvIHNvdXJjZSBpcyBhIHR1bmVyLiBGdXJ0aGVyIGF1ZGlvIGNvbm5lY3RvcnMgY2FuCitjb21iaW5lIHdpdGggbW9yZSB0aGFuIG9uZSB2aWRlbyBpbnB1dCBvciBvdXRwdXQuIEFzc3VtZWQgdHdvCitjb21wb3NpdGUgdmlkZW8gaW5wdXRzIGFuZCB0d28gYXVkaW8gaW5wdXRzIGV4aXN0LCB0aGVyZSBtYXkgYmUgdXAgdG8KK2ZvdXIgdmFsaWQgY29tYmluYXRpb25zLiBUaGUgcmVsYXRpb24gb2YgdmlkZW8gYW5kIGF1ZGlvIGNvbm5lY3RvcnMKK2lzIGRlZmluZWQgaW4gdGhlIDxzdHJ1Y3RmaWVsZD5hdWRpb3NldDwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mIHRoZQorcmVzcGVjdGl2ZSAmdjRsMi1pbnB1dDsgb3IgJnY0bDItb3V0cHV0Oywgd2hlcmUgZWFjaCBiaXQgcmVwcmVzZW50cwordGhlIGluZGV4IG51bWJlciwgc3RhcnRpbmcgYXQgemVybywgb2Ygb25lIGF1ZGlvIGlucHV0IG9yIG91dHB1dC48L3BhcmE+CisKKyAgICA8cGFyYT5UbyBsZWFybiBhYm91dCB0aGUgbnVtYmVyIGFuZCBhdHRyaWJ1dGVzIG9mIHRoZQorYXZhaWxhYmxlIGlucHV0cyBhbmQgb3V0cHV0cyBhcHBsaWNhdGlvbnMgY2FuIGVudW1lcmF0ZSB0aGVtIHdpdGggdGhlCismVklESU9DLUVOVU1BVURJTzsgYW5kICZWSURJT0MtRU5VTUFVRE9VVDsgaW9jdGwsIHJlc3BlY3RpdmVseS4gVGhlCismdjRsMi1hdWRpbzsgcmV0dXJuZWQgYnkgdGhlIDxjb25zdGFudD5WSURJT0NfRU5VTUFVRElPPC9jb25zdGFudD4gaW9jdGwKK2Fsc28gY29udGFpbnMgc2lnbmFsIHN0YXR1cyBpbmZvcm1hdGlvbiBhcHBsaWNhYmxlIHdoZW4gdGhlIGN1cnJlbnQKK2F1ZGlvIGlucHV0IGlzIHF1ZXJpZWQuPC9wYXJhPgorCisgICAgPHBhcmE+VGhlICZWSURJT0MtRy1BVURJTzsgYW5kICZWSURJT0MtRy1BVURPVVQ7IGlvY3RscyByZXBvcnQKK3RoZSBjdXJyZW50IGF1ZGlvIGlucHV0IGFuZCBvdXRwdXQsIHJlc3BlY3RpdmVseS4gTm90ZSB0aGF0LCB1bmxpa2UKKyZWSURJT0MtRy1JTlBVVDsgYW5kICZWSURJT0MtRy1PVVRQVVQ7IHRoZXNlIGlvY3RscyByZXR1cm4gYSBzdHJ1Y3R1cmUKK2FzIDxjb25zdGFudD5WSURJT0NfRU5VTUFVRElPPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VklESU9DX0VOVU1BVURPVVQ8L2NvbnN0YW50PiBkbywgbm90IGp1c3QgYW4gaW5kZXguPC9wYXJhPgorCisgICAgPHBhcmE+VG8gc2VsZWN0IGFuIGF1ZGlvIGlucHV0IGFuZCBjaGFuZ2UgaXRzIHByb3BlcnRpZXMKK2FwcGxpY2F0aW9ucyBjYWxsIHRoZSAmVklESU9DLVMtQVVESU87IGlvY3RsLiBUbyBzZWxlY3QgYW4gYXVkaW8KK291dHB1dCAod2hpY2ggcHJlc2VudGx5IGhhcyBubyBjaGFuZ2VhYmxlIHByb3BlcnRpZXMpIGFwcGxpY2F0aW9ucworY2FsbCB0aGUgJlZJRElPQy1TLUFVRE9VVDsgaW9jdGwuPC9wYXJhPgorCisgICAgPHBhcmE+RHJpdmVycyBtdXN0IGltcGxlbWVudCBhbGwgYXVkaW8gaW5wdXQgaW9jdGxzIHdoZW4gdGhlIGRldmljZQoraGFzIG11bHRpcGxlIHNlbGVjdGFibGUgYXVkaW8gaW5wdXRzLCBhbGwgYXVkaW8gb3V0cHV0IGlvY3RscyB3aGVuIHRoZQorZGV2aWNlIGhhcyBtdWx0aXBsZSBzZWxlY3RhYmxlIGF1ZGlvIG91dHB1dHMuIFdoZW4gdGhlIGRldmljZSBoYXMgYW55CithdWRpbyBpbnB1dHMgb3Igb3V0cHV0cyB0aGUgZHJpdmVyIG11c3Qgc2V0IHRoZSA8Y29uc3RhbnQ+VjRMMl9DQVBfQVVESU88L2NvbnN0YW50PgorZmxhZyBpbiB0aGUgJnY0bDItY2FwYWJpbGl0eTsgcmV0dXJuZWQgYnkgdGhlICZWSURJT0MtUVVFUllDQVA7IGlvY3RsLjwvcGFyYT4KKworICAgIDxleGFtcGxlPgorICAgICAgPHRpdGxlPkluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IGF1ZGlvIGlucHV0PC90aXRsZT4KKworICAgICAgPHByb2dyYW1saXN0aW5nPgorJnY0bDItYXVkaW87IGF1ZGlvOworCittZW1zZXQoJmFtcDthdWRpbywgMCwgc2l6ZW9mKGF1ZGlvKSk7CisKK2lmICgtMSA9PSBpb2N0bChmZCwgJlZJRElPQy1HLUFVRElPOywgJmFtcDthdWRpbykpIHsKKwlwZXJyb3IoIlZJRElPQ19HX0FVRElPIik7CisJZXhpdChFWElUX0ZBSUxVUkUpOworfQorCitwcmludGYoIkN1cnJlbnQgaW5wdXQ6ICVzXG4iLCBhdWRpby5uYW1lKTsKKyAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPC9leGFtcGxlPgorCisgICAgPGV4YW1wbGU+CisgICAgICA8dGl0bGU+U3dpdGNoaW5nIHRvIHRoZSBmaXJzdCBhdWRpbyBpbnB1dDwvdGl0bGU+CisKKyAgICAgIDxwcm9ncmFtbGlzdGluZz4KKyZ2NGwyLWF1ZGlvOyBhdWRpbzsKKworbWVtc2V0KCZhbXA7YXVkaW8sIDAsIHNpemVvZihhdWRpbykpOyAvKiBjbGVhciBhdWRpby5tb2RlLCBhdWRpby5yZXNlcnZlZCAqLworCithdWRpby5pbmRleCA9IDA7CisKK2lmICgtMSA9PSBpb2N0bChmZCwgJlZJRElPQy1TLUFVRElPOywgJmFtcDthdWRpbykpIHsKKwlwZXJyb3IoIlZJRElPQ19TX0FVRElPIik7CisJZXhpdChFWElUX0ZBSUxVUkUpOworfQorICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICA8L2V4YW1wbGU+CisgIDwvc2VjdGlvbj4KKworICA8c2VjdGlvbiBpZD0idHVuZXIiPgorICAgIDx0aXRsZT5UdW5lcnMgYW5kIE1vZHVsYXRvcnM8L3RpdGxlPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+VHVuZXJzPC90aXRsZT4KKworICAgICAgPHBhcmE+VmlkZW8gaW5wdXQgZGV2aWNlcyBjYW4gaGF2ZSBvbmUgb3IgbW9yZSB0dW5lcnMKK2RlbW9kdWxhdGluZyBhIFJGIHNpZ25hbC4gRWFjaCB0dW5lciBpcyBhc3NvY2lhdGVkIHdpdGggb25lIG9yIG1vcmUKK3ZpZGVvIGlucHV0cywgZGVwZW5kaW5nIG9uIHRoZSBudW1iZXIgb2YgUkYgY29ubmVjdG9ycyBvbiB0aGUgdHVuZXIuCitUaGUgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiB0aGUgcmVzcGVjdGl2ZQorJnY0bDItaW5wdXQ7IHJldHVybmVkIGJ5IHRoZSAmVklESU9DLUVOVU1JTlBVVDsgaW9jdGwgaXMgc2V0IHRvCis8Y29uc3RhbnQ+VjRMMl9JTlBVVF9UWVBFX1RVTkVSPC9jb25zdGFudD4gYW5kIGl0cworPHN0cnVjdGZpZWxkPnR1bmVyPC9zdHJ1Y3RmaWVsZD4gZmllbGQgY29udGFpbnMgdGhlIGluZGV4IG51bWJlciBvZgordGhlIHR1bmVyLjwvcGFyYT4KKworICAgICAgPHBhcmE+UmFkaW8gaW5wdXQgZGV2aWNlcyBoYXZlIGV4YWN0bHkgb25lIHR1bmVyIHdpdGggaW5kZXggemVybywgbm8KK3ZpZGVvIGlucHV0cy48L3BhcmE+CisKKyAgICAgIDxwYXJhPlRvIHF1ZXJ5IGFuZCBjaGFuZ2UgdHVuZXIgcHJvcGVydGllcyBhcHBsaWNhdGlvbnMgdXNlIHRoZQorJlZJRElPQy1HLVRVTkVSOyBhbmQgJlZJRElPQy1TLVRVTkVSOyBpb2N0bHMsIHJlc3BlY3RpdmVseS4gVGhlCismdjRsMi10dW5lcjsgcmV0dXJuZWQgYnkgPGNvbnN0YW50PlZJRElPQ19HX1RVTkVSPC9jb25zdGFudD4gYWxzbworY29udGFpbnMgc2lnbmFsIHN0YXR1cyBpbmZvcm1hdGlvbiBhcHBsaWNhYmxlIHdoZW4gdGhlIHR1bmVyIG9mIHRoZQorY3VycmVudCB2aWRlbyBvciByYWRpbyBpbnB1dCBpcyBxdWVyaWVkLiBOb3RlIHRoYXQKKzxjb25zdGFudD5WSURJT0NfU19UVU5FUjwvY29uc3RhbnQ+IGRvZXMgbm90IHN3aXRjaCB0aGUgY3VycmVudCB0dW5lciwKK3doZW4gdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBhdCBhbGwuIFRoZSB0dW5lciBpcyBzb2xlbHkgZGV0ZXJtaW5lZCBieQordGhlIGN1cnJlbnQgdmlkZW8gaW5wdXQuIERyaXZlcnMgbXVzdCBzdXBwb3J0IGJvdGggaW9jdGxzIGFuZCBzZXQgdGhlCis8Y29uc3RhbnQ+VjRMMl9DQVBfVFVORVI8L2NvbnN0YW50PiBmbGFnIGluIHRoZSAmdjRsMi1jYXBhYmlsaXR5OworcmV0dXJuZWQgYnkgdGhlICZWSURJT0MtUVVFUllDQVA7IGlvY3RsIHdoZW4gdGhlIGRldmljZSBoYXMgb25lIG9yCittb3JlIHR1bmVycy48L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+TW9kdWxhdG9yczwvdGl0bGU+CisKKyAgICAgIDxwYXJhPlZpZGVvIG91dHB1dCBkZXZpY2VzIGNhbiBoYXZlIG9uZSBvciBtb3JlIG1vZHVsYXRvcnMsIHVoLAorbW9kdWxhdGluZyBhIHZpZGVvIHNpZ25hbCBmb3IgcmFkaWF0aW9uIG9yIGNvbm5lY3Rpb24gdG8gdGhlIGFudGVubmEKK2lucHV0IG9mIGEgVFYgc2V0IG9yIHZpZGVvIHJlY29yZGVyLiBFYWNoIG1vZHVsYXRvciBpcyBhc3NvY2lhdGVkIHdpdGgKK29uZSBvciBtb3JlIHZpZGVvIG91dHB1dHMsIGRlcGVuZGluZyBvbiB0aGUgbnVtYmVyIG9mIFJGIGNvbm5lY3RvcnMgb24KK3RoZSBtb2R1bGF0b3IuIFRoZSA8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mIHRoZQorcmVzcGVjdGl2ZSAmdjRsMi1vdXRwdXQ7IHJldHVybmVkIGJ5IHRoZSAmVklESU9DLUVOVU1PVVRQVVQ7IGlvY3RsIGlzCitzZXQgdG8gPGNvbnN0YW50PlY0TDJfT1VUUFVUX1RZUEVfTU9EVUxBVE9SPC9jb25zdGFudD4gYW5kIGl0cworPHN0cnVjdGZpZWxkPm1vZHVsYXRvcjwvc3RydWN0ZmllbGQ+IGZpZWxkIGNvbnRhaW5zIHRoZSBpbmRleCBudW1iZXIKK29mIHRoZSBtb2R1bGF0b3IuPC9wYXJhPgorCisgICAgICA8cGFyYT5SYWRpbyBvdXRwdXQgZGV2aWNlcyBoYXZlIGV4YWN0bHkgb25lIG1vZHVsYXRvciB3aXRoIGluZGV4Cit6ZXJvLCBubyB2aWRlbyBvdXRwdXRzLjwvcGFyYT4KKworICAgICAgPHBhcmE+QSB2aWRlbyBvciByYWRpbyBkZXZpY2UgY2Fubm90IHN1cHBvcnQgYm90aCBhIHR1bmVyIGFuZCBhCittb2R1bGF0b3IuIFR3byBzZXBhcmF0ZSBkZXZpY2Ugbm9kZXMgd2lsbCBoYXZlIHRvIGJlIHVzZWQgZm9yIHN1Y2gKK2hhcmR3YXJlLCBvbmUgdGhhdCBzdXBwb3J0cyB0aGUgdHVuZXIgZnVuY3Rpb25hbGl0eSBhbmQgb25lIHRoYXQgc3VwcG9ydHMKK3RoZSBtb2R1bGF0b3IgZnVuY3Rpb25hbGl0eS4gVGhlIHJlYXNvbiBpcyBhIGxpbWl0YXRpb24gd2l0aCB0aGUKKyZWSURJT0MtUy1GUkVRVUVOQ1k7IGlvY3RsIHdoZXJlIHlvdSBjYW5ub3Qgc3BlY2lmeSB3aGV0aGVyIHRoZSBmcmVxdWVuY3kKK2lzIGZvciBhIHR1bmVyIG9yIGEgbW9kdWxhdG9yLjwvcGFyYT4KKworICAgICAgPHBhcmE+VG8gcXVlcnkgYW5kIGNoYW5nZSBtb2R1bGF0b3IgcHJvcGVydGllcyBhcHBsaWNhdGlvbnMgdXNlCit0aGUgJlZJRElPQy1HLU1PRFVMQVRPUjsgYW5kICZWSURJT0MtUy1NT0RVTEFUT1I7IGlvY3RsLiBOb3RlIHRoYXQKKzxjb25zdGFudD5WSURJT0NfU19NT0RVTEFUT1I8L2NvbnN0YW50PiBkb2VzIG5vdCBzd2l0Y2ggdGhlIGN1cnJlbnQKK21vZHVsYXRvciwgd2hlbiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGF0IGFsbC4gVGhlIG1vZHVsYXRvciBpcyBzb2xlbHkKK2RldGVybWluZWQgYnkgdGhlIGN1cnJlbnQgdmlkZW8gb3V0cHV0LiBEcml2ZXJzIG11c3Qgc3VwcG9ydCBib3RoCitpb2N0bHMgYW5kIHNldCB0aGUgPGNvbnN0YW50PlY0TDJfQ0FQX01PRFVMQVRPUjwvY29uc3RhbnQ+IGZsYWcgaW4KK3RoZSAmdjRsMi1jYXBhYmlsaXR5OyByZXR1cm5lZCBieSB0aGUgJlZJRElPQy1RVUVSWUNBUDsgaW9jdGwgd2hlbiB0aGUKK2RldmljZSBoYXMgb25lIG9yIG1vcmUgbW9kdWxhdG9ycy48L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+UmFkaW8gRnJlcXVlbmN5PC90aXRsZT4KKworICAgICAgPHBhcmE+VG8gZ2V0IGFuZCBzZXQgdGhlIHR1bmVyIG9yIG1vZHVsYXRvciByYWRpbyBmcmVxdWVuY3kKK2FwcGxpY2F0aW9ucyB1c2UgdGhlICZWSURJT0MtRy1GUkVRVUVOQ1k7IGFuZCAmVklESU9DLVMtRlJFUVVFTkNZOworaW9jdGwgd2hpY2ggYm90aCB0YWtlIGEgcG9pbnRlciB0byBhICZ2NGwyLWZyZXF1ZW5jeTsuIFRoZXNlIGlvY3RscworYXJlIHVzZWQgZm9yIFRWIGFuZCByYWRpbyBkZXZpY2VzIGFsaWtlLiBEcml2ZXJzIG11c3Qgc3VwcG9ydCBib3RoCitpb2N0bHMgd2hlbiB0aGUgdHVuZXIgb3IgbW9kdWxhdG9yIGlvY3RscyBhcmUgc3VwcG9ydGVkLCBvcgord2hlbiB0aGUgZGV2aWNlIGlzIGEgcmFkaW8gZGV2aWNlLjwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisgIDwvc2VjdGlvbj4KKworICA8c2VjdGlvbiBpZD0ic3RhbmRhcmQiPgorICAgIDx0aXRsZT5WaWRlbyBTdGFuZGFyZHM8L3RpdGxlPgorCisgICAgPHBhcmE+VmlkZW8gZGV2aWNlcyB0eXBpY2FsbHkgc3VwcG9ydCBvbmUgb3IgbW9yZSBkaWZmZXJlbnQgdmlkZW8KK3N0YW5kYXJkcyBvciB2YXJpYXRpb25zIG9mIHN0YW5kYXJkcy4gRWFjaCB2aWRlbyBpbnB1dCBhbmQgb3V0cHV0IG1heQorc3VwcG9ydCBhbm90aGVyIHNldCBvZiBzdGFuZGFyZHMuIFRoaXMgc2V0IGlzIHJlcG9ydGVkIGJ5IHRoZQorPHN0cnVjdGZpZWxkPnN0ZDwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mICZ2NGwyLWlucHV0OyBhbmQKKyZ2NGwyLW91dHB1dDsgcmV0dXJuZWQgYnkgdGhlICZWSURJT0MtRU5VTUlOUFVUOyBhbmQKKyZWSURJT0MtRU5VTU9VVFBVVDsgaW9jdGxzLCByZXNwZWN0aXZlbHkuPC9wYXJhPgorCisgICAgPHBhcmE+VjRMMiBkZWZpbmVzIG9uZSBiaXQgZm9yIGVhY2ggYW5hbG9nIHZpZGVvIHN0YW5kYXJkCitjdXJyZW50bHkgaW4gdXNlIHdvcmxkd2lkZSwgYW5kIHNldHMgYXNpZGUgYml0cyBmb3IgZHJpdmVyIGRlZmluZWQKK3N0YW5kYXJkcywgJmVnOyBoeWJyaWQgc3RhbmRhcmRzIHRvIHdhdGNoIE5UU0MgdmlkZW8gdGFwZXMgb24gUEFMIFRWcworYW5kIHZpY2UgdmVyc2EuIEFwcGxpY2F0aW9ucyBjYW4gdXNlIHRoZSBwcmVkZWZpbmVkIGJpdHMgdG8gc2VsZWN0IGEKK3BhcnRpY3VsYXIgc3RhbmRhcmQsIGFsdGhvdWdoIHByZXNlbnRpbmcgdGhlIHVzZXIgYSBtZW51IG9mIHN1cHBvcnRlZAorc3RhbmRhcmRzIGlzIHByZWZlcnJlZC4gVG8gZW51bWVyYXRlIGFuZCBxdWVyeSB0aGUgYXR0cmlidXRlcyBvZiB0aGUKK3N1cHBvcnRlZCBzdGFuZGFyZHMgYXBwbGljYXRpb25zIHVzZSB0aGUgJlZJRElPQy1FTlVNU1REOyBpb2N0bC48L3BhcmE+CisKKyAgICA8cGFyYT5NYW55IG9mIHRoZSBkZWZpbmVkIHN0YW5kYXJkcyBhcmUgYWN0dWFsbHkganVzdCB2YXJpYXRpb25zCitvZiBhIGZldyBtYWpvciBzdGFuZGFyZHMuIFRoZSBoYXJkd2FyZSBtYXkgaW4gZmFjdCBub3QgZGlzdGluZ3Vpc2gKK2JldHdlZW4gdGhlbSwgb3IgZG8gc28gaW50ZXJuYWwgYW5kIHN3aXRjaCBhdXRvbWF0aWNhbGx5LiBUaGVyZWZvcmUKK2VudW1lcmF0ZWQgc3RhbmRhcmRzIGFsc28gY29udGFpbiBzZXRzIG9mIG9uZSBvciBtb3JlIHN0YW5kYXJkCitiaXRzLjwvcGFyYT4KKworICAgIDxwYXJhPkFzc3VtZSBhIGh5cG90aGV0aWMgdHVuZXIgY2FwYWJsZSBvZiBkZW1vZHVsYXRpbmcgQi9QQUwsCitHL1BBTCBhbmQgSS9QQUwgc2lnbmFscy4gVGhlIGZpcnN0IGVudW1lcmF0ZWQgc3RhbmRhcmQgaXMgYSBzZXQgb2YgQgorYW5kIEcvUEFMLCBzd2l0Y2hlZCBhdXRvbWF0aWNhbGx5IGRlcGVuZGluZyBvbiB0aGUgc2VsZWN0ZWQgcmFkaW8KK2ZyZXF1ZW5jeSBpbiBVSEYgb3IgVkhGIGJhbmQuIEVudW1lcmF0aW9uIGdpdmVzIGEgIlBBTC1CL0ciIG9yICJQQUwtSSIKK2Nob2ljZS4gU2ltaWxhciBhIENvbXBvc2l0ZSBpbnB1dCBtYXkgY29sbGFwc2Ugc3RhbmRhcmRzLCBlbnVtZXJhdGluZworIlBBTC1CL0cvSC9JIiwgIk5UU0MtTSIgYW5kICJTRUNBTS1EL0siLjxmb290bm90ZT4KKwk8cGFyYT5Tb21lIHVzZXJzIGFyZSBhbHJlYWR5IGNvbmZ1c2VkIGJ5IHRlY2huaWNhbCB0ZXJtcyBQQUwsCitOVFNDIGFuZCBTRUNBTS4gVGhlcmUgaXMgbm8gcG9pbnQgYXNraW5nIHRoZW0gdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbgorQiwgRywgRCwgb3IgSyB3aGVuIHRoZSBzb2Z0d2FyZSBvciBoYXJkd2FyZSBjYW4gZG8gdGhhdAorYXV0b21hdGljYWxseS48L3BhcmE+CisgICAgPC9mb290bm90ZT48L3BhcmE+CisKKyAgICA8cGFyYT5UbyBxdWVyeSBhbmQgc2VsZWN0IHRoZSBzdGFuZGFyZCB1c2VkIGJ5IHRoZSBjdXJyZW50IHZpZGVvCitpbnB1dCBvciBvdXRwdXQgYXBwbGljYXRpb25zIGNhbGwgdGhlICZWSURJT0MtRy1TVEQ7IGFuZAorJlZJRElPQy1TLVNURDsgaW9jdGwsIHJlc3BlY3RpdmVseS4gVGhlIDxlbXBoYXNpcz5yZWNlaXZlZDwvZW1waGFzaXM+CitzdGFuZGFyZCBjYW4gYmUgc2Vuc2VkIHdpdGggdGhlICZWSURJT0MtUVVFUllTVEQ7IGlvY3RsLiBOb3RlIHRoYXQgdGhlCitwYXJhbWV0ZXIgb2YgYWxsIHRoZXNlIGlvY3RscyBpcyBhIHBvaW50ZXIgdG8gYSAmdjRsMi1zdGQtaWQ7IHR5cGUKKyhhIHN0YW5kYXJkIHNldCksIDxlbXBoYXNpcz5ub3Q8L2VtcGhhc2lzPiBhbiBpbmRleCBpbnRvIHRoZSBzdGFuZGFyZAorZW51bWVyYXRpb24uIERyaXZlcnMgbXVzdCBpbXBsZW1lbnQgYWxsIHZpZGVvIHN0YW5kYXJkIGlvY3Rscword2hlbiB0aGUgZGV2aWNlIGhhcyBvbmUgb3IgbW9yZSB2aWRlbyBpbnB1dHMgb3Igb3V0cHV0cy48L3BhcmE+CisKKyAgICA8cGFyYT5TcGVjaWFsIHJ1bGVzIGFwcGx5IHRvIGRldmljZXMgc3VjaCBhcyBVU0IgY2FtZXJhcyB3aGVyZSB0aGUgbm90aW9uIG9mIHZpZGVvCitzdGFuZGFyZHMgbWFrZXMgbGl0dGxlIHNlbnNlLiBNb3JlIGdlbmVyYWxseSBmb3IgYW55IGNhcHR1cmUgb3Igb3V0cHV0IGRldmljZQord2hpY2ggaXM6IDxpdGVtaXplZGxpc3Q+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+aW5jYXBhYmxlIG9mIGNhcHR1cmluZyBmaWVsZHMgb3IgZnJhbWVzIGF0IHRoZSBub21pbmFsCityYXRlIG9mIHRoZSB2aWRlbyBzdGFuZGFyZCwgb3I8L3BhcmE+CisJPC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT50aGF0IGRvZXMgbm90IHN1cHBvcnQgdGhlIHZpZGVvIHN0YW5kYXJkIGZvcm1hdHMgYXQgYWxsLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+IEhlcmUgdGhlIGRyaXZlciBzaGFsbCBzZXQgdGhlCis8c3RydWN0ZmllbGQ+c3RkPC9zdHJ1Y3RmaWVsZD4gZmllbGQgb2YgJnY0bDItaW5wdXQ7IGFuZCAmdjRsMi1vdXRwdXQ7Cit0byB6ZXJvIGFuZCB0aGUgPGNvbnN0YW50PlZJRElPQ19HX1NURDwvY29uc3RhbnQ+LAorPGNvbnN0YW50PlZJRElPQ19TX1NURDwvY29uc3RhbnQ+LAorPGNvbnN0YW50PlZJRElPQ19RVUVSWVNURDwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlZJRElPQ19FTlVNU1REPC9jb25zdGFudD4gaW9jdGxzIHNoYWxsIHJldHVybiB0aGUKKyZFTk9UVFk7IG9yIHRoZSAmRUlOVkFMOy48L3BhcmE+CisJPHBhcmE+QXBwbGljYXRpb25zIGNhbiBtYWtlIHVzZSBvZiB0aGUgPHhyZWYgbGlua2VuZD0iaW5wdXQtY2FwYWJpbGl0aWVzIiAvPiBhbmQKKzx4cmVmIGxpbmtlbmQ9Im91dHB1dC1jYXBhYmlsaXRpZXMiLz4gZmxhZ3MgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHZpZGVvIHN0YW5kYXJkIGlvY3RscworY2FuIGJlIHVzZWQgd2l0aCB0aGUgZ2l2ZW4gaW5wdXQgb3Igb3V0cHV0LjwvcGFyYT4KKworICAgIDxleGFtcGxlPgorICAgICAgPHRpdGxlPkluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IHZpZGVvIHN0YW5kYXJkPC90aXRsZT4KKworICAgICAgPHByb2dyYW1saXN0aW5nPgorJnY0bDItc3RkLWlkOyBzdGRfaWQ7CismdjRsMi1zdGFuZGFyZDsgc3RhbmRhcmQ7CisKK2lmICgtMSA9PSBpb2N0bChmZCwgJlZJRElPQy1HLVNURDssICZhbXA7c3RkX2lkKSkgeworCS8qIE5vdGUgd2hlbiBWSURJT0NfRU5VTVNURCBhbHdheXMgcmV0dXJucyBFTk9UVFkgdGhpcworCSAgIGlzIG5vIHZpZGVvIGRldmljZSBvciBpdCBmYWxscyB1bmRlciB0aGUgVVNCIGV4Y2VwdGlvbiwKKwkgICBhbmQgVklESU9DX0dfU1REIHJldHVybmluZyBFTk9UVFkgaXMgbm8gZXJyb3IuICovCisKKwlwZXJyb3IoIlZJRElPQ19HX1NURCIpOworCWV4aXQoRVhJVF9GQUlMVVJFKTsKK30KKworbWVtc2V0KCZhbXA7c3RhbmRhcmQsIDAsIHNpemVvZihzdGFuZGFyZCkpOworc3RhbmRhcmQuaW5kZXggPSAwOworCit3aGlsZSAoMCA9PSBpb2N0bChmZCwgJlZJRElPQy1FTlVNU1REOywgJmFtcDtzdGFuZGFyZCkpIHsKKwlpZiAoc3RhbmRhcmQuaWQgJmFtcDsgc3RkX2lkKSB7CisJICAgICAgIHByaW50ZigiQ3VycmVudCB2aWRlbyBzdGFuZGFyZDogJXNcbiIsIHN0YW5kYXJkLm5hbWUpOworCSAgICAgICBleGl0KEVYSVRfU1VDQ0VTUyk7CisJfQorCisJc3RhbmRhcmQuaW5kZXgrKzsKK30KKworLyogRUlOVkFMIGluZGljYXRlcyB0aGUgZW5kIG9mIHRoZSBlbnVtZXJhdGlvbiwgd2hpY2ggY2Fubm90IGJlCisgICBlbXB0eSB1bmxlc3MgdGhpcyBkZXZpY2UgZmFsbHMgdW5kZXIgdGhlIFVTQiBleGNlcHRpb24uICovCisKK2lmIChlcnJubyA9PSBFSU5WQUwgfHwgc3RhbmRhcmQuaW5kZXggPT0gMCkgeworCXBlcnJvcigiVklESU9DX0VOVU1TVEQiKTsKKwlleGl0KEVYSVRfRkFJTFVSRSk7Cit9CisgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgIDwvZXhhbXBsZT4KKworICAgIDxleGFtcGxlPgorICAgICAgPHRpdGxlPkxpc3RpbmcgdGhlIHZpZGVvIHN0YW5kYXJkcyBzdXBwb3J0ZWQgYnkgdGhlIGN1cnJlbnQKK2lucHV0PC90aXRsZT4KKworICAgICAgPHByb2dyYW1saXN0aW5nPgorJnY0bDItaW5wdXQ7IGlucHV0OworJnY0bDItc3RhbmRhcmQ7IHN0YW5kYXJkOworCittZW1zZXQoJmFtcDtpbnB1dCwgMCwgc2l6ZW9mKGlucHV0KSk7CisKK2lmICgtMSA9PSBpb2N0bChmZCwgJlZJRElPQy1HLUlOUFVUOywgJmFtcDtpbnB1dC5pbmRleCkpIHsKKwlwZXJyb3IoIlZJRElPQ19HX0lOUFVUIik7CisJZXhpdChFWElUX0ZBSUxVUkUpOworfQorCitpZiAoLTEgPT0gaW9jdGwoZmQsICZWSURJT0MtRU5VTUlOUFVUOywgJmFtcDtpbnB1dCkpIHsKKwlwZXJyb3IoIlZJRElPQ19FTlVNX0lOUFVUIik7CisJZXhpdChFWElUX0ZBSUxVUkUpOworfQorCitwcmludGYoIkN1cnJlbnQgaW5wdXQgJXMgc3VwcG9ydHM6XG4iLCBpbnB1dC5uYW1lKTsKKworbWVtc2V0KCZhbXA7c3RhbmRhcmQsIDAsIHNpemVvZihzdGFuZGFyZCkpOworc3RhbmRhcmQuaW5kZXggPSAwOworCit3aGlsZSAoMCA9PSBpb2N0bChmZCwgJlZJRElPQy1FTlVNU1REOywgJmFtcDtzdGFuZGFyZCkpIHsKKwlpZiAoc3RhbmRhcmQuaWQgJmFtcDsgaW5wdXQuc3RkKQorCQlwcmludGYoIiVzXG4iLCBzdGFuZGFyZC5uYW1lKTsKKworCXN0YW5kYXJkLmluZGV4Kys7Cit9CisKKy8qIEVJTlZBTCBpbmRpY2F0ZXMgdGhlIGVuZCBvZiB0aGUgZW51bWVyYXRpb24sIHdoaWNoIGNhbm5vdCBiZQorICAgZW1wdHkgdW5sZXNzIHRoaXMgZGV2aWNlIGZhbGxzIHVuZGVyIHRoZSBVU0IgZXhjZXB0aW9uLiAqLworCitpZiAoZXJybm8gIT0gRUlOVkFMIHx8IHN0YW5kYXJkLmluZGV4ID09IDApIHsKKwlwZXJyb3IoIlZJRElPQ19FTlVNU1REIik7CisJZXhpdChFWElUX0ZBSUxVUkUpOworfQorICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICA8L2V4YW1wbGU+CisKKyAgICA8ZXhhbXBsZT4KKyAgICAgIDx0aXRsZT5TZWxlY3RpbmcgYSBuZXcgdmlkZW8gc3RhbmRhcmQ8L3RpdGxlPgorCisgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CismdjRsMi1pbnB1dDsgaW5wdXQ7CismdjRsMi1zdGQtaWQ7IHN0ZF9pZDsKKworbWVtc2V0KCZhbXA7aW5wdXQsIDAsIHNpemVvZihpbnB1dCkpOworCitpZiAoLTEgPT0gaW9jdGwoZmQsICZWSURJT0MtRy1JTlBVVDssICZhbXA7aW5wdXQuaW5kZXgpKSB7CisJcGVycm9yKCJWSURJT0NfR19JTlBVVCIpOworCWV4aXQoRVhJVF9GQUlMVVJFKTsKK30KKworaWYgKC0xID09IGlvY3RsKGZkLCAmVklESU9DLUVOVU1JTlBVVDssICZhbXA7aW5wdXQpKSB7CisJcGVycm9yKCJWSURJT0NfRU5VTV9JTlBVVCIpOworCWV4aXQoRVhJVF9GQUlMVVJFKTsKK30KKworaWYgKDAgPT0gKGlucHV0LnN0ZCAmYW1wOyBWNEwyX1NURF9QQUxfQkcpKSB7CisJZnByaW50ZihzdGRlcnIsICJPb3BzLiBCL0cgUEFMIGlzIG5vdCBzdXBwb3J0ZWQuXG4iKTsKKwlleGl0KEVYSVRfRkFJTFVSRSk7Cit9CisKKy8qIE5vdGUgdGhpcyBpcyBhbHNvIHN1cHBvc2VkIHRvIHdvcmsgd2hlbiBvbmx5IEIKKyAgIDxlbXBoYXNpcz5vcjwvZW1waGFzaXM+IEcvUEFMIGlzIHN1cHBvcnRlZC4gKi8KKworc3RkX2lkID0gVjRMMl9TVERfUEFMX0JHOworCitpZiAoLTEgPT0gaW9jdGwoZmQsICZWSURJT0MtUy1TVEQ7LCAmYW1wO3N0ZF9pZCkpIHsKKwlwZXJyb3IoIlZJRElPQ19TX1NURCIpOworCWV4aXQoRVhJVF9GQUlMVVJFKTsKK30KKyAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPC9leGFtcGxlPgorICA8L3NlY3Rpb24+CisgIDxzZWN0aW9uIGlkPSJkdi10aW1pbmdzIj4KKwk8dGl0bGU+RGlnaXRhbCBWaWRlbyAoRFYpIFRpbWluZ3M8L3RpdGxlPgorCTxwYXJhPgorCVRoZSB2aWRlbyBzdGFuZGFyZHMgZGlzY3Vzc2VkIHNvIGZhciBoYXZlIGJlZW4gZGVhbGluZyB3aXRoIEFuYWxvZyBUViBhbmQgdGhlCitjb3JyZXNwb25kaW5nIHZpZGVvIHRpbWluZ3MuIFRvZGF5IHRoZXJlIGFyZSBtYW55IG1vcmUgZGlmZmVyZW50IGhhcmR3YXJlIGludGVyZmFjZXMKK3N1Y2ggYXMgSGlnaCBEZWZpbml0aW9uIFRWIGludGVyZmFjZXMgKEhETUkpLCBWR0EsIERWSSBjb25uZWN0b3JzIGV0Yy4sIHRoYXQgY2FycnkKK3ZpZGVvIHNpZ25hbHMgYW5kIHRoZXJlIGlzIGEgbmVlZCB0byBleHRlbmQgdGhlIEFQSSB0byBzZWxlY3QgdGhlIHZpZGVvIHRpbWluZ3MKK2ZvciB0aGVzZSBpbnRlcmZhY2VzLiBTaW5jZSBpdCBpcyBub3QgcG9zc2libGUgdG8gZXh0ZW5kIHRoZSAmdjRsMi1zdGQtaWQ7IGR1ZSB0bwordGhlIGxpbWl0ZWQgYml0cyBhdmFpbGFibGUsIGEgbmV3IHNldCBvZiBpb2N0bHMgd2FzIGFkZGVkIHRvIHNldC9nZXQgdmlkZW8gdGltaW5ncyBhdAordGhlIGlucHV0IGFuZCBvdXRwdXQuPC9wYXJhPgorCisJPHBhcmE+VGhlc2UgaW9jdGxzIGRlYWwgd2l0aCB0aGUgZGV0YWlsZWQgZGlnaXRhbCB2aWRlbyB0aW1pbmdzIHRoYXQgZGVmaW5lCitlYWNoIHZpZGVvIGZvcm1hdC4gVGhpcyBpbmNsdWRlcyBwYXJhbWV0ZXJzIHN1Y2ggYXMgdGhlIGFjdGl2ZSB2aWRlbyB3aWR0aCBhbmQgaGVpZ2h0LAorc2lnbmFsIHBvbGFyaXRpZXMsIGZyb250cG9yY2hlcywgYmFja3BvcmNoZXMsIHN5bmMgd2lkdGhzIGV0Yy4gVGhlIDxmaWxlbmFtZT5saW51eC92NGwyLWR2LXRpbWluZ3MuaDwvZmlsZW5hbWU+CitoZWFkZXIgY2FuIGJlIHVzZWQgdG8gZ2V0IHRoZSB0aW1pbmdzIG9mIHRoZSBmb3JtYXRzIGluIHRoZSA8eHJlZiBsaW5rZW5kPSJjZWE4NjEiIC8+IGFuZAorPHhyZWYgbGlua2VuZD0idmVzYWRtdCIgLz4gc3RhbmRhcmRzLgorCTwvcGFyYT4KKworCTxwYXJhPlRvIGVudW1lcmF0ZSBhbmQgcXVlcnkgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIERWIHRpbWluZ3Mgc3VwcG9ydGVkIGJ5IGEgZGV2aWNlCisJYXBwbGljYXRpb25zIHVzZSB0aGUgJlZJRElPQy1FTlVNLURWLVRJTUlOR1M7IGFuZCAmVklESU9DLURWLVRJTUlOR1MtQ0FQOyBpb2N0bHMuCisJVG8gc2V0IERWIHRpbWluZ3MgZm9yIHRoZSBkZXZpY2UgYXBwbGljYXRpb25zIHVzZSB0aGUKKyZWSURJT0MtUy1EVi1USU1JTkdTOyBpb2N0bCBhbmQgdG8gZ2V0IGN1cnJlbnQgRFYgdGltaW5ncyB0aGV5IHVzZSB0aGUKKyZWSURJT0MtRy1EVi1USU1JTkdTOyBpb2N0bC4gVG8gZGV0ZWN0IHRoZSBEViB0aW1pbmdzIGFzIHNlZW4gYnkgdGhlIHZpZGVvIHJlY2VpdmVyIGFwcGxpY2F0aW9ucwordXNlIHRoZSAmVklESU9DLVFVRVJZLURWLVRJTUlOR1M7IGlvY3RsLjwvcGFyYT4KKwk8cGFyYT5BcHBsaWNhdGlvbnMgY2FuIG1ha2UgdXNlIG9mIHRoZSA8eHJlZiBsaW5rZW5kPSJpbnB1dC1jYXBhYmlsaXRpZXMiIC8+IGFuZAorPHhyZWYgbGlua2VuZD0ib3V0cHV0LWNhcGFiaWxpdGllcyIvPiBmbGFncyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgZGlnaXRhbCB2aWRlbyBpb2N0bHMKK2NhbiBiZSB1c2VkIHdpdGggdGhlIGdpdmVuIGlucHV0IG9yIG91dHB1dC48L3BhcmE+CisgIDwvc2VjdGlvbj4KKworICAmc3ViLWNvbnRyb2xzOworCisgIDxzZWN0aW9uIGlkPSJmb3JtYXQiPgorICAgIDx0aXRsZT5EYXRhIEZvcm1hdHM8L3RpdGxlPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+RGF0YSBGb3JtYXQgTmVnb3RpYXRpb248L3RpdGxlPgorCisgICAgICA8cGFyYT5EaWZmZXJlbnQgZGV2aWNlcyBleGNoYW5nZSBkaWZmZXJlbnQga2luZHMgb2YgZGF0YSB3aXRoCithcHBsaWNhdGlvbnMsIGZvciBleGFtcGxlIHZpZGVvIGltYWdlcywgcmF3IG9yIHNsaWNlZCBWQkkgZGF0YSwgUkRTCitkYXRhZ3JhbXMuIEV2ZW4gd2l0aGluIG9uZSBraW5kIG1hbnkgZGlmZmVyZW50IGZvcm1hdHMgYXJlIHBvc3NpYmxlLAoraW4gcGFydGljdWxhciBhbiBhYnVuZGFuY2Ugb2YgaW1hZ2UgZm9ybWF0cy4gQWx0aG91Z2ggZHJpdmVycyBtdXN0Citwcm92aWRlIGEgZGVmYXVsdCBhbmQgdGhlIHNlbGVjdGlvbiBwZXJzaXN0cyBhY3Jvc3MgY2xvc2luZyBhbmQKK3Jlb3BlbmluZyBhIGRldmljZSwgYXBwbGljYXRpb25zIHNob3VsZCBhbHdheXMgbmVnb3RpYXRlIGEgZGF0YSBmb3JtYXQKK2JlZm9yZSBlbmdhZ2luZyBpbiBkYXRhIGV4Y2hhbmdlLiBOZWdvdGlhdGlvbiBtZWFucyB0aGUgYXBwbGljYXRpb24KK2Fza3MgZm9yIGEgcGFydGljdWxhciBmb3JtYXQgYW5kIHRoZSBkcml2ZXIgc2VsZWN0cyBhbmQgcmVwb3J0cyB0aGUKK2Jlc3QgdGhlIGhhcmR3YXJlIGNhbiBkbyB0byBzYXRpc2Z5IHRoZSByZXF1ZXN0LiBPZiBjb3Vyc2UKK2FwcGxpY2F0aW9ucyBjYW4gYWxzbyBqdXN0IHF1ZXJ5IHRoZSBjdXJyZW50IHNlbGVjdGlvbi48L3BhcmE+CisKKyAgICAgIDxwYXJhPkEgc2luZ2xlIG1lY2hhbmlzbSBleGlzdHMgdG8gbmVnb3RpYXRlIGFsbCBkYXRhIGZvcm1hdHMKK3VzaW5nIHRoZSBhZ2dyZWdhdGUgJnY0bDItZm9ybWF0OyBhbmQgdGhlICZWSURJT0MtRy1GTVQ7IGFuZAorJlZJRElPQy1TLUZNVDsgaW9jdGxzLiBBZGRpdGlvbmFsbHkgdGhlICZWSURJT0MtVFJZLUZNVDsgaW9jdGwgY2FuIGJlCit1c2VkIHRvIGV4YW1pbmUgd2hhdCB0aGUgaGFyZHdhcmUgPGVtcGhhc2lzPmNvdWxkPC9lbXBoYXNpcz4gZG8sCit3aXRob3V0IGFjdHVhbGx5IHNlbGVjdGluZyBhIG5ldyBkYXRhIGZvcm1hdC4gVGhlIGRhdGEgZm9ybWF0cworc3VwcG9ydGVkIGJ5IHRoZSBWNEwyIEFQSSBhcmUgY292ZXJlZCBpbiB0aGUgcmVzcGVjdGl2ZSBkZXZpY2Ugc2VjdGlvbgoraW4gPHhyZWYgbGlua2VuZD0iZGV2aWNlcyIgLz4uIEZvciBhIGNsb3NlciBsb29rIGF0IGltYWdlIGZvcm1hdHMgc2VlCis8eHJlZiBsaW5rZW5kPSJwaXhmbXQiIC8+LjwvcGFyYT4KKworICAgICAgPHBhcmE+VGhlIDxjb25zdGFudD5WSURJT0NfU19GTVQ8L2NvbnN0YW50PiBpb2N0bCBpcyBhIG1ham9yCit0dXJuaW5nLXBvaW50IGluIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gUHJpb3IgdG8gdGhpcyBwb2ludAorbXVsdGlwbGUgcGFuZWwgYXBwbGljYXRpb25zIGNhbiBhY2Nlc3MgdGhlIHNhbWUgZGV2aWNlIGNvbmN1cnJlbnRseSB0bworc2VsZWN0IHRoZSBjdXJyZW50IGlucHV0LCBjaGFuZ2UgY29udHJvbHMgb3IgbW9kaWZ5IG90aGVyIHByb3BlcnRpZXMuCitUaGUgZmlyc3QgPGNvbnN0YW50PlZJRElPQ19TX0ZNVDwvY29uc3RhbnQ+IGFzc2lnbnMgYSBsb2dpY2FsIHN0cmVhbQorKHZpZGVvIGRhdGEsIFZCSSBkYXRhIGV0Yy4pIGV4Y2x1c2l2ZWx5IHRvIG9uZSBmaWxlIGRlc2NyaXB0b3IuPC9wYXJhPgorCisgICAgICA8cGFyYT5FeGNsdXNpdmUgbWVhbnMgbm8gb3RoZXIgYXBwbGljYXRpb24sIG1vcmUgcHJlY2lzZWx5IG5vCitvdGhlciBmaWxlIGRlc2NyaXB0b3IsIGNhbiBncmFiIHRoaXMgc3RyZWFtIG9yIGNoYW5nZSBkZXZpY2UKK3Byb3BlcnRpZXMgaW5jb25zaXN0ZW50IHdpdGggdGhlIG5lZ290aWF0ZWQgcGFyYW1ldGVycy4gQSB2aWRlbworc3RhbmRhcmQgY2hhbmdlIGZvciBleGFtcGxlLCB3aGVuIHRoZSBuZXcgc3RhbmRhcmQgdXNlcyBhIGRpZmZlcmVudAorbnVtYmVyIG9mIHNjYW4gbGluZXMsIGNhbiBpbnZhbGlkYXRlIHRoZSBzZWxlY3RlZCBpbWFnZSBmb3JtYXQuCitUaGVyZWZvcmUgb25seSB0aGUgZmlsZSBkZXNjcmlwdG9yIG93bmluZyB0aGUgc3RyZWFtIGNhbiBtYWtlCitpbnZhbGlkYXRpbmcgY2hhbmdlcy4gQWNjb3JkaW5nbHkgbXVsdGlwbGUgZmlsZSBkZXNjcmlwdG9ycyB3aGljaAorZ3JhYmJlZCBkaWZmZXJlbnQgbG9naWNhbCBzdHJlYW1zIHByZXZlbnQgZWFjaCBvdGhlciBmcm9tIGludGVyZmVyaW5nCit3aXRoIHRoZWlyIHNldHRpbmdzLiBXaGVuIGZvciBleGFtcGxlIHZpZGVvIG92ZXJsYXkgaXMgYWJvdXQgdG8gc3RhcnQKK29yIGFscmVhZHkgaW4gcHJvZ3Jlc3MsIHNpbXVsdGFuZW91cyB2aWRlbyBjYXB0dXJpbmcgbWF5IGJlIHJlc3RyaWN0ZWQKK3RvIHRoZSBzYW1lIGNyb3BwaW5nIGFuZCBpbWFnZSBzaXplLjwvcGFyYT4KKworICAgICAgPHBhcmE+V2hlbiBhcHBsaWNhdGlvbnMgb21pdCB0aGUKKzxjb25zdGFudD5WSURJT0NfU19GTVQ8L2NvbnN0YW50PiBpb2N0bCBpdHMgbG9ja2luZyBzaWRlIGVmZmVjdHMgYXJlCitpbXBsaWVkIGJ5IHRoZSBuZXh0IHN0ZXAsIHRoZSBzZWxlY3Rpb24gb2YgYW4gSS9PIG1ldGhvZCB3aXRoIHRoZQorJlZJRElPQy1SRVFCVUZTOyBpb2N0bCBvciBpbXBsaWNpdCB3aXRoIHRoZSBmaXJzdCAmZnVuYy1yZWFkOyBvcgorJmZ1bmMtd3JpdGU7IGNhbGwuPC9wYXJhPgorCisgICAgICA8cGFyYT5HZW5lcmFsbHkgb25seSBvbmUgbG9naWNhbCBzdHJlYW0gY2FuIGJlIGFzc2lnbmVkIHRvIGEKK2ZpbGUgZGVzY3JpcHRvciwgdGhlIGV4Y2VwdGlvbiBiZWluZyBkcml2ZXJzIHBlcm1pdHRpbmcgc2ltdWx0YW5lb3VzCit2aWRlbyBjYXB0dXJpbmcgYW5kIG92ZXJsYXkgdXNpbmcgdGhlIHNhbWUgZmlsZSBkZXNjcmlwdG9yIGZvcgorY29tcGF0aWJpbGl0eSB3aXRoIFY0TCBhbmQgZWFybGllciB2ZXJzaW9ucyBvZiBWNEwyLiBTd2l0Y2hpbmcgdGhlCitsb2dpY2FsIHN0cmVhbSBvciByZXR1cm5pbmcgaW50byAicGFuZWwgbW9kZSIgaXMgcG9zc2libGUgYnkgY2xvc2luZworYW5kIHJlb3BlbmluZyB0aGUgZGV2aWNlLiBEcml2ZXJzIDxlbXBoYXNpcz5tYXk8L2VtcGhhc2lzPiBzdXBwb3J0IGEKK3N3aXRjaCB1c2luZyA8Y29uc3RhbnQ+VklESU9DX1NfRk1UPC9jb25zdGFudD4uPC9wYXJhPgorCisgICAgICA8cGFyYT5BbGwgZHJpdmVycyBleGNoYW5naW5nIGRhdGEgd2l0aAorYXBwbGljYXRpb25zIG11c3Qgc3VwcG9ydCB0aGUgPGNvbnN0YW50PlZJRElPQ19HX0ZNVDwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlZJRElPQ19TX0ZNVDwvY29uc3RhbnQ+IGlvY3RsLiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUKKzxjb25zdGFudD5WSURJT0NfVFJZX0ZNVDwvY29uc3RhbnQ+IGlzIGhpZ2hseSByZWNvbW1lbmRlZCBidXQKK29wdGlvbmFsLjwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5JbWFnZSBGb3JtYXQgRW51bWVyYXRpb248L3RpdGxlPgorCisgICAgICA8cGFyYT5BcGFydCBvZiB0aGUgZ2VuZXJpYyBmb3JtYXQgbmVnb3RpYXRpb24gZnVuY3Rpb25zCithIHNwZWNpYWwgaW9jdGwgdG8gZW51bWVyYXRlIGFsbCBpbWFnZSBmb3JtYXRzIHN1cHBvcnRlZCBieSB2aWRlbworY2FwdHVyZSwgb3ZlcmxheSBvciBvdXRwdXQgZGV2aWNlcyBpcyBhdmFpbGFibGUuPGZvb3Rub3RlPgorCSAgPHBhcmE+RW51bWVyYXRpbmcgZm9ybWF0cyBhbiBhcHBsaWNhdGlvbiBoYXMgbm8gYS1wcmlvcmkKK2tub3dsZWRnZSBvZiAob3RoZXJ3aXNlIGl0IGNvdWxkIGV4cGxpY2l0bHkgYXNrIGZvciB0aGVtIGFuZCBuZWVkIG5vdAorZW51bWVyYXRlKSBzZWVtcyB1c2VsZXNzLCBidXQgdGhlcmUgYXJlIGFwcGxpY2F0aW9ucyBzZXJ2aW5nIGFzIHByb3h5CitiZXR3ZWVuIGRyaXZlcnMgYW5kIHRoZSBhY3R1YWwgdmlkZW8gYXBwbGljYXRpb25zIGZvciB3aGljaCB0aGlzIGlzCit1c2VmdWwuPC9wYXJhPgorCTwvZm9vdG5vdGU+PC9wYXJhPgorCisgICAgICA8cGFyYT5UaGUgJlZJRElPQy1FTlVNLUZNVDsgaW9jdGwgbXVzdCBiZSBzdXBwb3J0ZWQKK2J5IGFsbCBkcml2ZXJzIGV4Y2hhbmdpbmcgaW1hZ2UgZGF0YSB3aXRoIGFwcGxpY2F0aW9ucy48L3BhcmE+CisKKyAgICAgIDxpbXBvcnRhbnQ+CisJPHBhcmE+RHJpdmVycyBhcmUgbm90IHN1cHBvc2VkIHRvIGNvbnZlcnQgaW1hZ2UgZm9ybWF0cyBpbgora2VybmVsIHNwYWNlLiBUaGV5IG11c3QgZW51bWVyYXRlIG9ubHkgZm9ybWF0cyBkaXJlY3RseSBzdXBwb3J0ZWQgYnkKK3RoZSBoYXJkd2FyZS4gSWYgbmVjZXNzYXJ5IGRyaXZlciB3cml0ZXJzIHNob3VsZCBwdWJsaXNoIGFuIGV4YW1wbGUKK2NvbnZlcnNpb24gcm91dGluZSBvciBsaWJyYXJ5IGZvciBpbnRlZ3JhdGlvbiBpbnRvIGFwcGxpY2F0aW9ucy48L3BhcmE+CisgICAgICA8L2ltcG9ydGFudD4KKyAgICA8L3NlY3Rpb24+CisgIDwvc2VjdGlvbj4KKworICAmc3ViLXBsYW5hci1hcGlzOworCisgIDxzZWN0aW9uIGlkPSJjcm9wIj4KKyAgICA8dGl0bGU+SW1hZ2UgQ3JvcHBpbmcsIEluc2VydGlvbiBhbmQgU2NhbGluZzwvdGl0bGU+CisKKyAgICA8cGFyYT5Tb21lIHZpZGVvIGNhcHR1cmUgZGV2aWNlcyBjYW4gc2FtcGxlIGEgc3Vic2VjdGlvbiBvZiB0aGUKK3BpY3R1cmUgYW5kIHNocmluayBvciBlbmxhcmdlIGl0IHRvIGFuIGltYWdlIG9mIGFyYml0cmFyeSBzaXplLiBXZQorY2FsbCB0aGVzZSBhYmlsaXRpZXMgY3JvcHBpbmcgYW5kIHNjYWxpbmcuIFNvbWUgdmlkZW8gb3V0cHV0IGRldmljZXMKK2NhbiBzY2FsZSBhbiBpbWFnZSB1cCBvciBkb3duIGFuZCBpbnNlcnQgaXQgYXQgYW4gYXJiaXRyYXJ5IHNjYW4gbGluZQorYW5kIGhvcml6b250YWwgb2Zmc2V0IGludG8gYSB2aWRlbyBzaWduYWwuPC9wYXJhPgorCisgICAgPHBhcmE+QXBwbGljYXRpb25zIGNhbiB1c2UgdGhlIGZvbGxvd2luZyBBUEkgdG8gc2VsZWN0IGFuIGFyZWEgaW4KK3RoZSB2aWRlbyBzaWduYWwsIHF1ZXJ5IHRoZSBkZWZhdWx0IGFyZWEgYW5kIHRoZSBoYXJkd2FyZSBsaW1pdHMuCis8ZW1waGFzaXM+RGVzcGl0ZSB0aGVpciBuYW1lLCB0aGUgJlZJRElPQy1DUk9QQ0FQOywgJlZJRElPQy1HLUNST1A7CithbmQgJlZJRElPQy1TLUNST1A7IGlvY3RscyBhcHBseSB0byBpbnB1dCBhcyB3ZWxsIGFzIG91dHB1dAorZGV2aWNlcy48L2VtcGhhc2lzPjwvcGFyYT4KKworICAgIDxwYXJhPlNjYWxpbmcgcmVxdWlyZXMgYSBzb3VyY2UgYW5kIGEgdGFyZ2V0LiBPbiBhIHZpZGVvIGNhcHR1cmUKK29yIG92ZXJsYXkgZGV2aWNlIHRoZSBzb3VyY2UgaXMgdGhlIHZpZGVvIHNpZ25hbCwgYW5kIHRoZSBjcm9wcGluZworaW9jdGxzIGRldGVybWluZSB0aGUgYXJlYSBhY3R1YWxseSBzYW1wbGVkLiBUaGUgdGFyZ2V0IGFyZSBpbWFnZXMKK3JlYWQgYnkgdGhlIGFwcGxpY2F0aW9uIG9yIG92ZXJsYWlkIG9udG8gdGhlIGdyYXBoaWNzIHNjcmVlbi4gVGhlaXIKK3NpemUgKGFuZCBwb3NpdGlvbiBmb3IgYW4gb3ZlcmxheSkgaXMgbmVnb3RpYXRlZCB3aXRoIHRoZQorJlZJRElPQy1HLUZNVDsgYW5kICZWSURJT0MtUy1GTVQ7IGlvY3Rscy48L3BhcmE+CisKKyAgICA8cGFyYT5PbiBhIHZpZGVvIG91dHB1dCBkZXZpY2UgdGhlIHNvdXJjZSBhcmUgdGhlIGltYWdlcyBwYXNzZWQgaW4KK2J5IHRoZSBhcHBsaWNhdGlvbiwgYW5kIHRoZWlyIHNpemUgaXMgYWdhaW4gbmVnb3RpYXRlZCB3aXRoIHRoZQorPGNvbnN0YW50PlZJRElPQ19HL1NfRk1UPC9jb25zdGFudD4gaW9jdGxzLCBvciBtYXkgYmUgZW5jb2RlZCBpbiBhCitjb21wcmVzc2VkIHZpZGVvIHN0cmVhbS4gVGhlIHRhcmdldCBpcyB0aGUgdmlkZW8gc2lnbmFsLCBhbmQgdGhlCitjcm9wcGluZyBpb2N0bHMgZGV0ZXJtaW5lIHRoZSBhcmVhIHdoZXJlIHRoZSBpbWFnZXMgYXJlCitpbnNlcnRlZC48L3BhcmE+CisKKyAgICA8cGFyYT5Tb3VyY2UgYW5kIHRhcmdldCByZWN0YW5nbGVzIGFyZSBkZWZpbmVkIGV2ZW4gaWYgdGhlIGRldmljZQorZG9lcyBub3Qgc3VwcG9ydCBzY2FsaW5nIG9yIHRoZSA8Y29uc3RhbnQ+VklESU9DX0cvU19DUk9QPC9jb25zdGFudD4KK2lvY3Rscy4gVGhlaXIgc2l6ZSAoYW5kIHBvc2l0aW9uIHdoZXJlIGFwcGxpY2FibGUpIHdpbGwgYmUgZml4ZWQgaW4KK3RoaXMgY2FzZS4gPGVtcGhhc2lzPkFsbCBjYXB0dXJlIGFuZCBvdXRwdXQgZGV2aWNlIG11c3Qgc3VwcG9ydCB0aGUKKzxjb25zdGFudD5WSURJT0NfQ1JPUENBUDwvY29uc3RhbnQ+IGlvY3RsIHN1Y2ggdGhhdCBhcHBsaWNhdGlvbnMgY2FuCitkZXRlcm1pbmUgaWYgc2NhbGluZyB0YWtlcyBwbGFjZS48L2VtcGhhc2lzPjwvcGFyYT4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPkNyb3BwaW5nIFN0cnVjdHVyZXM8L3RpdGxlPgorCisgICAgICA8ZmlndXJlIGlkPSJjcm9wLXNjYWxlIj4KKwk8dGl0bGU+SW1hZ2UgQ3JvcHBpbmcsIEluc2VydGlvbiBhbmQgU2NhbGluZzwvdGl0bGU+CisJPG1lZGlhb2JqZWN0PgorCSAgPGltYWdlb2JqZWN0PgorCSAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImNyb3AucGRmIiBmb3JtYXQ9IlBTIiAvPgorCSAgPC9pbWFnZW9iamVjdD4KKwkgIDxpbWFnZW9iamVjdD4KKwkgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJjcm9wLmdpZiIgZm9ybWF0PSJHSUYiIC8+CisJICA8L2ltYWdlb2JqZWN0PgorCSAgPHRleHRvYmplY3Q+CisJICAgIDxwaHJhc2U+VGhlIGNyb3BwaW5nLCBpbnNlcnRpb24gYW5kIHNjYWxpbmcgcHJvY2VzczwvcGhyYXNlPgorCSAgPC90ZXh0b2JqZWN0PgorCTwvbWVkaWFvYmplY3Q+CisgICAgICA8L2ZpZ3VyZT4KKworICAgICAgPHBhcmE+Rm9yIGNhcHR1cmUgZGV2aWNlcyB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHRvcCBsZWZ0Citjb3JuZXIsIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIGFyZWEgd2hpY2ggY2FuIGJlIHNhbXBsZWQgaXMgZ2l2ZW4gYnkKK3RoZSA8c3RydWN0ZmllbGQ+Ym91bmRzPC9zdHJ1Y3RmaWVsZD4gc3Vic3RydWN0dXJlIG9mIHRoZQorJnY0bDItY3JvcGNhcDsgcmV0dXJuZWQgYnkgdGhlIDxjb25zdGFudD5WSURJT0NfQ1JPUENBUDwvY29uc3RhbnQ+Citpb2N0bC4gVG8gc3VwcG9ydCBhIHdpZGUgcmFuZ2Ugb2YgaGFyZHdhcmUgdGhpcyBzcGVjaWZpY2F0aW9uIGRvZXMgbm90CitkZWZpbmUgYW4gb3JpZ2luIG9yIHVuaXRzLiBIb3dldmVyIGJ5IGNvbnZlbnRpb24gZHJpdmVycyBzaG91bGQKK2hvcml6b250YWxseSBjb3VudCB1bnNjYWxlZCBzYW1wbGVzIHJlbGF0aXZlIHRvIDBIICh0aGUgbGVhZGluZyBlZGdlCitvZiB0aGUgaG9yaXpvbnRhbCBzeW5jIHB1bHNlLCBzZWUgPHhyZWYgbGlua2VuZD0idmJpLWhzeW5jIiAvPikuCitWZXJ0aWNhbGx5IElUVS1SIGxpbmUKK251bWJlcnMgb2YgdGhlIGZpcnN0IGZpZWxkICg8eHJlZiBsaW5rZW5kPSJ2YmktNTI1IiAvPiwgPHhyZWYKK2xpbmtlbmQ9InZiaS02MjUiIC8+KSwgbXVsdGlwbGllZCBieSB0d28gaWYgdGhlIGRyaXZlciBjYW4gY2FwdHVyZSBib3RoCitmaWVsZHMuPC9wYXJhPgorCisgICAgICA8cGFyYT5UaGUgdG9wIGxlZnQgY29ybmVyLCB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBzb3VyY2UKK3JlY3RhbmdsZSwgdGhhdCBpcyB0aGUgYXJlYSBhY3R1YWxseSBzYW1wbGVkLCBpcyBnaXZlbiBieSAmdjRsMi1jcm9wOwordXNpbmcgdGhlIHNhbWUgY29vcmRpbmF0ZSBzeXN0ZW0gYXMgJnY0bDItY3JvcGNhcDsuIEFwcGxpY2F0aW9ucyBjYW4KK3VzZSB0aGUgPGNvbnN0YW50PlZJRElPQ19HX0NST1A8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WSURJT0NfU19DUk9QPC9jb25zdGFudD4gaW9jdGxzIHRvIGdldCBhbmQgc2V0IHRoaXMKK3JlY3RhbmdsZS4gSXQgbXVzdCBsaWUgY29tcGxldGVseSB3aXRoaW4gdGhlIGNhcHR1cmUgYm91bmRhcmllcyBhbmQKK3RoZSBkcml2ZXIgbWF5IGZ1cnRoZXIgYWRqdXN0IHRoZSByZXF1ZXN0ZWQgc2l6ZSBhbmQvb3IgcG9zaXRpb24KK2FjY29yZGluZyB0byBoYXJkd2FyZSBsaW1pdGF0aW9ucy48L3BhcmE+CisKKyAgICAgIDxwYXJhPkVhY2ggY2FwdHVyZSBkZXZpY2UgaGFzIGEgZGVmYXVsdCBzb3VyY2UgcmVjdGFuZ2xlLCBnaXZlbgorYnkgdGhlIDxzdHJ1Y3RmaWVsZD5kZWZyZWN0PC9zdHJ1Y3RmaWVsZD4gc3Vic3RydWN0dXJlIG9mCismdjRsMi1jcm9wY2FwOy4gVGhlIGNlbnRlciBvZiB0aGlzIHJlY3RhbmdsZSBzaGFsbCBhbGlnbiB3aXRoIHRoZQorY2VudGVyIG9mIHRoZSBhY3RpdmUgcGljdHVyZSBhcmVhIG9mIHRoZSB2aWRlbyBzaWduYWwsIGFuZCBjb3ZlciB3aGF0Cit0aGUgZHJpdmVyIHdyaXRlciBjb25zaWRlcnMgdGhlIGNvbXBsZXRlIHBpY3R1cmUuIERyaXZlcnMgc2hhbGwgcmVzZXQKK3RoZSBzb3VyY2UgcmVjdGFuZ2xlIHRvIHRoZSBkZWZhdWx0IHdoZW4gdGhlIGRyaXZlciBpcyBmaXJzdCBsb2FkZWQsCitidXQgbm90IGxhdGVyLjwvcGFyYT4KKworICAgICAgPHBhcmE+Rm9yIG91dHB1dCBkZXZpY2VzIHRoZXNlIHN0cnVjdHVyZXMgYW5kIGlvY3RscyBhcmUgdXNlZAorYWNjb3JkaW5nbHksIGRlZmluaW5nIHRoZSA8ZW1waGFzaXM+dGFyZ2V0PC9lbXBoYXNpcz4gcmVjdGFuZ2xlIHdoZXJlCit0aGUgaW1hZ2VzIHdpbGwgYmUgaW5zZXJ0ZWQgaW50byB0aGUgdmlkZW8gc2lnbmFsLjwvcGFyYT4KKworICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlNjYWxpbmcgQWRqdXN0bWVudHM8L3RpdGxlPgorCisgICAgICA8cGFyYT5WaWRlbyBoYXJkd2FyZSBjYW4gaGF2ZSB2YXJpb3VzIGNyb3BwaW5nLCBpbnNlcnRpb24gYW5kCitzY2FsaW5nIGxpbWl0YXRpb25zLiBJdCBtYXkgb25seSBzY2FsZSB1cCBvciBkb3duLCBzdXBwb3J0IG9ubHkKK2Rpc2NyZXRlIHNjYWxpbmcgZmFjdG9ycywgb3IgaGF2ZSBkaWZmZXJlbnQgc2NhbGluZyBhYmlsaXRpZXMgaW4KK2hvcml6b250YWwgYW5kIHZlcnRpY2FsIGRpcmVjdGlvbi4gQWxzbyBpdCBtYXkgbm90IHN1cHBvcnQgc2NhbGluZyBhdAorYWxsLiBBdCB0aGUgc2FtZSB0aW1lIHRoZSAmdjRsMi1jcm9wOyByZWN0YW5nbGUgbWF5IGhhdmUgdG8gYmUKK2FsaWduZWQsIGFuZCBib3RoIHRoZSBzb3VyY2UgYW5kIHRhcmdldCByZWN0YW5nbGVzIG1heSBoYXZlIGFyYml0cmFyeQordXBwZXIgYW5kIGxvd2VyIHNpemUgbGltaXRzLiBJbiBwYXJ0aWN1bGFyIHRoZSBtYXhpbXVtCis8c3RydWN0ZmllbGQ+d2lkdGg8L3N0cnVjdGZpZWxkPiBhbmQgPHN0cnVjdGZpZWxkPmhlaWdodDwvc3RydWN0ZmllbGQ+CitpbiAmdjRsMi1jcm9wOyBtYXkgYmUgc21hbGxlciB0aGFuIHRoZQorJnY0bDItY3JvcGNhcDsuPHN0cnVjdGZpZWxkPmJvdW5kczwvc3RydWN0ZmllbGQ+IGFyZWEuIFRoZXJlZm9yZSwgYXMKK3VzdWFsLCBkcml2ZXJzIGFyZSBleHBlY3RlZCB0byBhZGp1c3QgdGhlIHJlcXVlc3RlZCBwYXJhbWV0ZXJzIGFuZAorcmV0dXJuIHRoZSBhY3R1YWwgdmFsdWVzIHNlbGVjdGVkLjwvcGFyYT4KKworICAgICAgPHBhcmE+QXBwbGljYXRpb25zIGNhbiBjaGFuZ2UgdGhlIHNvdXJjZSBvciB0aGUgdGFyZ2V0IHJlY3RhbmdsZQorZmlyc3QsIGFzIHRoZXkgbWF5IHByZWZlciBhIHBhcnRpY3VsYXIgaW1hZ2Ugc2l6ZSBvciBhIGNlcnRhaW4gYXJlYSBpbgordGhlIHZpZGVvIHNpZ25hbC4gSWYgdGhlIGRyaXZlciBoYXMgdG8gYWRqdXN0IGJvdGggdG8gc2F0aXNmeSBoYXJkd2FyZQorbGltaXRhdGlvbnMsIHRoZSBsYXN0IHJlcXVlc3RlZCByZWN0YW5nbGUgc2hhbGwgdGFrZSBwcmlvcml0eSwgYW5kIHRoZQorZHJpdmVyIHNob3VsZCBwcmVmZXJhYmx5IGFkanVzdCB0aGUgb3Bwb3NpdGUgb25lLiBUaGUgJlZJRElPQy1UUlktRk1UOworaW9jdGwgaG93ZXZlciBzaGFsbCBub3QgY2hhbmdlIHRoZSBkcml2ZXIgc3RhdGUgYW5kIHRoZXJlZm9yZSBvbmx5CithZGp1c3QgdGhlIHJlcXVlc3RlZCByZWN0YW5nbGUuPC9wYXJhPgorCisgICAgICA8cGFyYT5TdXBwb3NlIHNjYWxpbmcgb24gYSB2aWRlbyBjYXB0dXJlIGRldmljZSBpcyByZXN0cmljdGVkIHRvCithIGZhY3RvciAxOjEgb3IgMjoxIGluIGVpdGhlciBkaXJlY3Rpb24gYW5kIHRoZSB0YXJnZXQgaW1hZ2Ugc2l6ZSBtdXN0CitiZSBhIG11bHRpcGxlIG9mIDE2Jm5ic3A7JnRpbWVzOyZuYnNwOzE2IHBpeGVscy4gVGhlIHNvdXJjZSBjcm9wcGluZworcmVjdGFuZ2xlIGlzIHNldCB0byBkZWZhdWx0cywgd2hpY2ggYXJlIGFsc28gdGhlIHVwcGVyIGxpbWl0IGluIHRoaXMKK2V4YW1wbGUsIG9mIDY0MCZuYnNwOyZ0aW1lczsmbmJzcDs0MDAgcGl4ZWxzIGF0IG9mZnNldCAwLCZuYnNwOzAuIEFuCithcHBsaWNhdGlvbiByZXF1ZXN0cyBhbiBpbWFnZSBzaXplIG9mIDMwMCZuYnNwOyZ0aW1lczsmbmJzcDsyMjUKK3BpeGVscywgYXNzdW1pbmcgdmlkZW8gd2lsbCBiZSBzY2FsZWQgZG93biBmcm9tIHRoZSAiZnVsbCBwaWN0dXJlIgorYWNjb3JkaW5nbHkuIFRoZSBkcml2ZXIgc2V0cyB0aGUgaW1hZ2Ugc2l6ZSB0byB0aGUgY2xvc2VzdCBwb3NzaWJsZQordmFsdWVzIDMwNCZuYnNwOyZ0aW1lczsmbmJzcDsyMjQsIHRoZW4gY2hvb3NlcyB0aGUgY3JvcHBpbmcgcmVjdGFuZ2xlCitjbG9zZXN0IHRvIHRoZSByZXF1ZXN0ZWQgc2l6ZSwgdGhhdCBpcyA2MDgmbmJzcDsmdGltZXM7Jm5ic3A7MjI0CisoMjI0Jm5ic3A7JnRpbWVzOyZuYnNwOzI6MSB3b3VsZCBleGNlZWQgdGhlIGxpbWl0IDQwMCkuIFRoZSBvZmZzZXQKKzAsJm5ic3A7MCBpcyBzdGlsbCB2YWxpZCwgdGh1cyB1bm1vZGlmaWVkLiBHaXZlbiB0aGUgZGVmYXVsdCBjcm9wcGluZworcmVjdGFuZ2xlIHJlcG9ydGVkIGJ5IDxjb25zdGFudD5WSURJT0NfQ1JPUENBUDwvY29uc3RhbnQ+IHRoZQorYXBwbGljYXRpb24gY2FuIGVhc2lseSBwcm9wb3NlIGFub3RoZXIgb2Zmc2V0IHRvIGNlbnRlciB0aGUgY3JvcHBpbmcKK3JlY3RhbmdsZS48L3BhcmE+CisKKyAgICAgIDxwYXJhPk5vdyB0aGUgYXBwbGljYXRpb24gbWF5IGluc2lzdCBvbiBjb3ZlcmluZyBhbiBhcmVhIHVzaW5nIGEKK3BpY3R1cmUgYXNwZWN0IHJhdGlvIGNsb3NlciB0byB0aGUgb3JpZ2luYWwgcmVxdWVzdCwgc28gaXQgYXNrcyBmb3IgYQorY3JvcHBpbmcgcmVjdGFuZ2xlIG9mIDYwOCZuYnNwOyZ0aW1lczsmbmJzcDs0NTYgcGl4ZWxzLiBUaGUgcHJlc2VudAorc2NhbGluZyBmYWN0b3JzIGxpbWl0IGNyb3BwaW5nIHRvIDY0MCZuYnNwOyZ0aW1lczsmbmJzcDszODQsIHNvIHRoZQorZHJpdmVyIHJldHVybnMgdGhlIGNyb3BwaW5nIHNpemUgNjA4Jm5ic3A7JnRpbWVzOyZuYnNwOzM4NCBhbmQgYWRqdXN0cwordGhlIGltYWdlIHNpemUgdG8gY2xvc2VzdCBwb3NzaWJsZSAzMDQmbmJzcDsmdGltZXM7Jm5ic3A7MTkyLjwvcGFyYT4KKworICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKworICAgICAgPHBhcmE+U291cmNlIGFuZCB0YXJnZXQgcmVjdGFuZ2xlcyBzaGFsbCByZW1haW4gdW5jaGFuZ2VkIGFjcm9zcworY2xvc2luZyBhbmQgcmVvcGVuaW5nIGEgZGV2aWNlLCBzdWNoIHRoYXQgcGlwaW5nIGRhdGEgaW50byBvciBvdXQgb2YgYQorZGV2aWNlIHdpbGwgd29yayB3aXRob3V0IHNwZWNpYWwgcHJlcGFyYXRpb25zLiBNb3JlIGFkdmFuY2VkCithcHBsaWNhdGlvbnMgc2hvdWxkIGVuc3VyZSB0aGUgcGFyYW1ldGVycyBhcmUgc3VpdGFibGUgYmVmb3JlIHN0YXJ0aW5nCitJL08uPC9wYXJhPgorCisgICAgICA8ZXhhbXBsZT4KKwk8dGl0bGU+UmVzZXR0aW5nIHRoZSBjcm9wcGluZyBwYXJhbWV0ZXJzPC90aXRsZT4KKworCTxwYXJhPihBIHZpZGVvIGNhcHR1cmUgZGV2aWNlIGlzIGFzc3VtZWQ7IGNoYW5nZQorPGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTwvY29uc3RhbnQ+IGZvciBvdGhlcgorZGV2aWNlcy4pPC9wYXJhPgorCisJPHByb2dyYW1saXN0aW5nPgorJnY0bDItY3JvcGNhcDsgY3JvcGNhcDsKKyZ2NGwyLWNyb3A7IGNyb3A7CisKK21lbXNldCAoJmFtcDtjcm9wY2FwLCAwLCBzaXplb2YgKGNyb3BjYXApKTsKK2Nyb3BjYXAudHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTsKKworaWYgKC0xID09IGlvY3RsIChmZCwgJlZJRElPQy1DUk9QQ0FQOywgJmFtcDtjcm9wY2FwKSkgeworCXBlcnJvciAoIlZJRElPQ19DUk9QQ0FQIik7CisJZXhpdCAoRVhJVF9GQUlMVVJFKTsKK30KKworbWVtc2V0ICgmYW1wO2Nyb3AsIDAsIHNpemVvZiAoY3JvcCkpOworY3JvcC50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFOworY3JvcC5jID0gY3JvcGNhcC5kZWZyZWN0OworCisvKiBJZ25vcmUgaWYgY3JvcHBpbmcgaXMgbm90IHN1cHBvcnRlZCAoRUlOVkFMKS4gKi8KKworaWYgKC0xID09IGlvY3RsIChmZCwgJlZJRElPQy1TLUNST1A7LCAmYW1wO2Nyb3ApCisgICAgJmFtcDsmYW1wOyBlcnJubyAhPSBFSU5WQUwpIHsKKwlwZXJyb3IgKCJWSURJT0NfU19DUk9QIik7CisJZXhpdCAoRVhJVF9GQUlMVVJFKTsKK30KKyAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8L2V4YW1wbGU+CisKKyAgICAgIDxleGFtcGxlPgorCTx0aXRsZT5TaW1wbGUgZG93bnNjYWxpbmc8L3RpdGxlPgorCisJPHBhcmE+KEEgdmlkZW8gY2FwdHVyZSBkZXZpY2UgaXMgYXNzdW1lZC4pPC9wYXJhPgorCisJPHByb2dyYW1saXN0aW5nPgorJnY0bDItY3JvcGNhcDsgY3JvcGNhcDsKKyZ2NGwyLWZvcm1hdDsgZm9ybWF0OworCityZXNldF9jcm9wcGluZ19wYXJhbWV0ZXJzICgpOworCisvKiBTY2FsZSBkb3duIHRvIDEvNCBzaXplIG9mIGZ1bGwgcGljdHVyZS4gKi8KKworbWVtc2V0ICgmYW1wO2Zvcm1hdCwgMCwgc2l6ZW9mIChmb3JtYXQpKTsgLyogZGVmYXVsdHMgKi8KKworZm9ybWF0LnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkU7CisKK2Zvcm1hdC5mbXQucGl4LndpZHRoID0gY3JvcGNhcC5kZWZyZWN0LndpZHRoICZndDsmZ3Q7IDE7Citmb3JtYXQuZm10LnBpeC5oZWlnaHQgPSBjcm9wY2FwLmRlZnJlY3QuaGVpZ2h0ICZndDsmZ3Q7IDE7Citmb3JtYXQuZm10LnBpeC5waXhlbGZvcm1hdCA9IFY0TDJfUElYX0ZNVF9ZVVlWOworCitpZiAoLTEgPT0gaW9jdGwgKGZkLCAmVklESU9DLVMtRk1UOywgJmFtcDtmb3JtYXQpKSB7CisJcGVycm9yICgiVklESU9DX1NfRk9STUFUIik7CisJZXhpdCAoRVhJVF9GQUlMVVJFKTsKK30KKworLyogV2UgY291bGQgY2hlY2sgdGhlIGFjdHVhbCBpbWFnZSBzaXplIG5vdywgdGhlIGFjdHVhbCBzY2FsaW5nIGZhY3RvcgorICAgb3IgaWYgdGhlIGRyaXZlciBjYW4gc2NhbGUgYXQgYWxsLiAqLworCTwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8L2V4YW1wbGU+CisKKyAgICAgIDxleGFtcGxlPgorCTx0aXRsZT5TZWxlY3RpbmcgYW4gb3V0cHV0IGFyZWE8L3RpdGxlPgorCisJPHByb2dyYW1saXN0aW5nPgorJnY0bDItY3JvcGNhcDsgY3JvcGNhcDsKKyZ2NGwyLWNyb3A7IGNyb3A7CisKK21lbXNldCAoJmFtcDtjcm9wY2FwLCAwLCBzaXplb2YgKGNyb3BjYXApKTsKK2Nyb3BjYXAudHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fT1VUUFVUOworCitpZiAoLTEgPT0gaW9jdGwgKGZkLCBWSURJT0NfQ1JPUENBUDssICZhbXA7Y3JvcGNhcCkpIHsKKwlwZXJyb3IgKCJWSURJT0NfQ1JPUENBUCIpOworCWV4aXQgKEVYSVRfRkFJTFVSRSk7Cit9CisKK21lbXNldCAoJmFtcDtjcm9wLCAwLCBzaXplb2YgKGNyb3ApKTsKKworY3JvcC50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVQ7Citjcm9wLmMgPSBjcm9wY2FwLmRlZnJlY3Q7CisKKy8qIFNjYWxlIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IHRvIDUwICUgb2YgdGhlaXIgb3JpZ2luYWwgc2l6ZQorICAgYW5kIGNlbnRlciB0aGUgb3V0cHV0LiAqLworCitjcm9wLmMud2lkdGggLz0gMjsKK2Nyb3AuYy5oZWlnaHQgLz0gMjsKK2Nyb3AuYy5sZWZ0ICs9IGNyb3AuYy53aWR0aCAvIDI7Citjcm9wLmMudG9wICs9IGNyb3AuYy5oZWlnaHQgLyAyOworCisvKiBJZ25vcmUgaWYgY3JvcHBpbmcgaXMgbm90IHN1cHBvcnRlZCAoRUlOVkFMKS4gKi8KKworaWYgKC0xID09IGlvY3RsIChmZCwgVklESU9DX1NfQ1JPUCwgJmFtcDtjcm9wKQorICAgICZhbXA7JmFtcDsgZXJybm8gIT0gRUlOVkFMKSB7CisJcGVycm9yICgiVklESU9DX1NfQ1JPUCIpOworCWV4aXQgKEVYSVRfRkFJTFVSRSk7Cit9Cis8L3Byb2dyYW1saXN0aW5nPgorICAgICAgPC9leGFtcGxlPgorCisgICAgICA8ZXhhbXBsZT4KKwk8dGl0bGU+Q3VycmVudCBzY2FsaW5nIGZhY3RvciBhbmQgcGl4ZWwgYXNwZWN0PC90aXRsZT4KKworCTxwYXJhPihBIHZpZGVvIGNhcHR1cmUgZGV2aWNlIGlzIGFzc3VtZWQuKTwvcGFyYT4KKworCTxwcm9ncmFtbGlzdGluZz4KKyZ2NGwyLWNyb3BjYXA7IGNyb3BjYXA7CismdjRsMi1jcm9wOyBjcm9wOworJnY0bDItZm9ybWF0OyBmb3JtYXQ7Citkb3VibGUgaHNjYWxlLCB2c2NhbGU7Citkb3VibGUgYXNwZWN0OworaW50IGR3aWR0aCwgZGhlaWdodDsKKworbWVtc2V0ICgmYW1wO2Nyb3BjYXAsIDAsIHNpemVvZiAoY3JvcGNhcCkpOworY3JvcGNhcC50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFOworCitpZiAoLTEgPT0gaW9jdGwgKGZkLCAmVklESU9DLUNST1BDQVA7LCAmYW1wO2Nyb3BjYXApKSB7CisJcGVycm9yICgiVklESU9DX0NST1BDQVAiKTsKKwlleGl0IChFWElUX0ZBSUxVUkUpOworfQorCittZW1zZXQgKCZhbXA7Y3JvcCwgMCwgc2l6ZW9mIChjcm9wKSk7Citjcm9wLnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkU7CisKK2lmICgtMSA9PSBpb2N0bCAoZmQsICZWSURJT0MtRy1DUk9QOywgJmFtcDtjcm9wKSkgeworCWlmIChlcnJubyAhPSBFSU5WQUwpIHsKKwkJcGVycm9yICgiVklESU9DX0dfQ1JPUCIpOworCQlleGl0IChFWElUX0ZBSUxVUkUpOworCX0KKworCS8qIENyb3BwaW5nIG5vdCBzdXBwb3J0ZWQuICovCisJY3JvcC5jID0gY3JvcGNhcC5kZWZyZWN0OworfQorCittZW1zZXQgKCZhbXA7Zm9ybWF0LCAwLCBzaXplb2YgKGZvcm1hdCkpOworZm9ybWF0LmZtdC50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFOworCitpZiAoLTEgPT0gaW9jdGwgKGZkLCAmVklESU9DLUctRk1UOywgJmFtcDtmb3JtYXQpKSB7CisJcGVycm9yICgiVklESU9DX0dfRk1UIik7CisJZXhpdCAoRVhJVF9GQUlMVVJFKTsKK30KKworLyogVGhlIHNjYWxpbmcgYXBwbGllZCBieSB0aGUgZHJpdmVyLiAqLworCitoc2NhbGUgPSBmb3JtYXQuZm10LnBpeC53aWR0aCAvIChkb3VibGUpIGNyb3AuYy53aWR0aDsKK3ZzY2FsZSA9IGZvcm1hdC5mbXQucGl4LmhlaWdodCAvIChkb3VibGUpIGNyb3AuYy5oZWlnaHQ7CisKK2FzcGVjdCA9IGNyb3BjYXAucGl4ZWxhc3BlY3QubnVtZXJhdG9yIC8KKwkgKGRvdWJsZSkgY3JvcGNhcC5waXhlbGFzcGVjdC5kZW5vbWluYXRvcjsKK2FzcGVjdCA9IGFzcGVjdCAqIGhzY2FsZSAvIHZzY2FsZTsKKworLyogRGV2aWNlcyBmb2xsb3dpbmcgSVRVLVIgQlQuNjAxIGRvIG5vdCBjYXB0dXJlCisgICBzcXVhcmUgcGl4ZWxzLiBGb3IgcGxheWJhY2sgb24gYSBjb21wdXRlciBtb25pdG9yCisgICB3ZSBzaG91bGQgc2NhbGUgdGhlIGltYWdlcyB0byB0aGlzIHNpemUuICovCisKK2R3aWR0aCA9IGZvcm1hdC5mbXQucGl4LndpZHRoIC8gYXNwZWN0OworZGhlaWdodCA9IGZvcm1hdC5mbXQucGl4LmhlaWdodDsKKwk8L3Byb2dyYW1saXN0aW5nPgorICAgICAgPC9leGFtcGxlPgorICAgIDwvc2VjdGlvbj4KKyAgPC9zZWN0aW9uPgorCisgICZzdWItc2VsZWN0aW9uLWFwaTsKKworICA8c2VjdGlvbiBpZD0ic3RyZWFtaW5nLXBhciI+CisgICAgPHRpdGxlPlN0cmVhbWluZyBQYXJhbWV0ZXJzPC90aXRsZT4KKworICAgIDxwYXJhPlN0cmVhbWluZyBwYXJhbWV0ZXJzIGFyZSBpbnRlbmRlZCB0byBvcHRpbWl6ZSB0aGUgdmlkZW8KK2NhcHR1cmUgcHJvY2VzcyBhcyB3ZWxsIGFzIEkvTy4gUHJlc2VudGx5IGFwcGxpY2F0aW9ucyBjYW4gcmVxdWVzdCBhCitoaWdoIHF1YWxpdHkgY2FwdHVyZSBtb2RlIHdpdGggdGhlICZWSURJT0MtUy1QQVJNOyBpb2N0bC48L3BhcmE+CisKKyAgICA8cGFyYT5UaGUgY3VycmVudCB2aWRlbyBzdGFuZGFyZCBkZXRlcm1pbmVzIGEgbm9taW5hbCBudW1iZXIgb2YKK2ZyYW1lcyBwZXIgc2Vjb25kLiBJZiBsZXNzIHRoYW4gdGhpcyBudW1iZXIgb2YgZnJhbWVzIGlzIHRvIGJlCitjYXB0dXJlZCBvciBvdXRwdXQsIGFwcGxpY2F0aW9ucyBjYW4gcmVxdWVzdCBmcmFtZSBza2lwcGluZyBvcgorZHVwbGljYXRpbmcgb24gdGhlIGRyaXZlciBzaWRlLiBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIHdoZW4gdXNpbmcKK3RoZSAmZnVuYy1yZWFkOyBvciAmZnVuYy13cml0ZTssIHdoaWNoIGFyZSBub3QgYXVnbWVudGVkIGJ5IHRpbWVzdGFtcHMKK29yIHNlcXVlbmNlIGNvdW50ZXJzLCBhbmQgdG8gYXZvaWQgdW5uZWNlc3NhcnkgZGF0YSBjb3B5aW5nLjwvcGFyYT4KKworICAgIDxwYXJhPkZpbmFsbHkgdGhlc2UgaW9jdGxzIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mCitidWZmZXJzIHVzZWQgaW50ZXJuYWxseSBieSBhIGRyaXZlciBpbiByZWFkL3dyaXRlIG1vZGUuIEZvcgoraW1wbGljYXRpb25zIHNlZSB0aGUgc2VjdGlvbiBkaXNjdXNzaW5nIHRoZSAmZnVuYy1yZWFkOworZnVuY3Rpb24uPC9wYXJhPgorCisgICAgPHBhcmE+VG8gZ2V0IGFuZCBzZXQgdGhlIHN0cmVhbWluZyBwYXJhbWV0ZXJzIGFwcGxpY2F0aW9ucyBjYWxsCit0aGUgJlZJRElPQy1HLVBBUk07IGFuZCAmVklESU9DLVMtUEFSTTsgaW9jdGwsIHJlc3BlY3RpdmVseS4gVGhleSB0YWtlCithIHBvaW50ZXIgdG8gYSAmdjRsMi1zdHJlYW1wYXJtOywgd2hpY2ggY29udGFpbnMgYSB1bmlvbiBob2xkaW5nCitzZXBhcmF0ZSBwYXJhbWV0ZXJzIGZvciBpbnB1dCBhbmQgb3V0cHV0IGRldmljZXMuPC9wYXJhPgorCisgICAgPHBhcmE+VGhlc2UgaW9jdGxzIGFyZSBvcHRpb25hbCwgZHJpdmVycyBuZWVkIG5vdCBpbXBsZW1lbnQKK3RoZW0uIElmIHNvLCB0aGV5IHJldHVybiB0aGUgJkVJTlZBTDsuPC9wYXJhPgorICA8L3NlY3Rpb24+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2NvbXBhdC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2NvbXBhdC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTcwMWEwOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvY29tcGF0LnhtbApAQCAtMCwwICsxLDI3NjEgQEAKKyAgPHRpdGxlPkNoYW5nZXM8L3RpdGxlPgorCisgIDxwYXJhPlRoZSBmb2xsb3dpbmcgY2hhcHRlcnMgZG9jdW1lbnQgdGhlIGV2b2x1dGlvbiBvZiB0aGUgVjRMMiBBUEksCitlcnJhdGEgb3IgZXh0ZW5zaW9ucy4gVGhleSBhcmUgYWxzbyBpbnRlbmRlZCB0byBoZWxwIGFwcGxpY2F0aW9uIGFuZAorZHJpdmVyIHdyaXRlcnMgdG8gcG9ydCBvciB1cGRhdGUgdGhlaXIgY29kZS48L3BhcmE+CisKKyAgPHNlY3Rpb24gaWQ9ImRpZmYtdjRsIj4KKyAgICA8dGl0bGU+RGlmZmVyZW5jZXMgYmV0d2VlbiBWNEwgYW5kIFY0TDI8L3RpdGxlPgorCisgICAgPHBhcmE+VGhlIFZpZGVvIEZvciBMaW51eCBBUEkgd2FzIGZpcnN0IGludHJvZHVjZWQgaW4gTGludXggMi4xIHRvCit1bmlmeSBhbmQgcmVwbGFjZSB2YXJpb3VzIFRWIGFuZCByYWRpbyBkZXZpY2UgcmVsYXRlZCBpbnRlcmZhY2VzLAorZGV2ZWxvcGVkIGluZGVwZW5kZW50bHkgYnkgZHJpdmVyIHdyaXRlcnMgaW4gcHJpb3IgeWVhcnMuIFN0YXJ0aW5nCit3aXRoIExpbnV4IDIuNSB0aGUgbXVjaCBpbXByb3ZlZCBWNEwyIEFQSSByZXBsYWNlcyB0aGUgVjRMIEFQSS4KK1RoZSBzdXBwb3J0IGZvciB0aGUgb2xkIFY0TCBjYWxscyB3ZXJlIHJlbW92ZWQgZnJvbSBLZXJuZWwsIGJ1dCB0aGUKK2xpYnJhcnkgPHhyZWYgbGlua2VuZD0ibGlidjRsIiAvPiBzdXBwb3J0cyB0aGUgY29udmVyc2lvbiBvZiBhIFY0TAorQVBJIHN5c3RlbSBjYWxsIGludG8gYSBWNEwyIG9uZS48L3BhcmE+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5PcGVuaW5nIGFuZCBDbG9zaW5nIERldmljZXM8L3RpdGxlPgorCisgICAgICA8cGFyYT5Gb3IgY29tcGF0aWJpbGl0eSByZWFzb25zIHRoZSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGUgbmFtZXMKK3JlY29tbWVuZGVkIGZvciBWNEwyIHZpZGVvIGNhcHR1cmUsIG92ZXJsYXksIHJhZGlvIGFuZCByYXcKK3ZiaSBjYXB0dXJlIGRldmljZXMgZGlkIG5vdCBjaGFuZ2UgZnJvbSB0aG9zZSB1c2VkIGJ5IFY0TC4gVGhleSBhcmUKK2xpc3RlZCBpbiA8eHJlZiBsaW5rZW5kPSJkZXZpY2VzIiAvPiBhbmQgYmVsb3cgaW4gPHhyZWYKKwkgIGxpbmtlbmQ9InY0bC1kZXYiIC8+LjwvcGFyYT4KKworICAgICAgPHBhcmE+VGhlIHRlbGV0ZXh0IGRldmljZXMgKG1pbm9yIHJhbmdlIDE5Mi0yMjMpIGhhdmUgYmVlbiByZW1vdmVkIGluCitWNEwyIGFuZCBubyBsb25nZXIgZXhpc3QuIFRoZXJlIGlzIG5vIGhhcmR3YXJlIGF2YWlsYWJsZSBhbnltb3JlIGZvciBoYW5kbGluZworcHVyZSB0ZWxldGV4dC4gSW5zdGVhZCByYXcgb3Igc2xpY2VkIFZCSSBpcyB1c2VkLjwvcGFyYT4KKworICAgICAgPHBhcmE+VGhlIFY0TCA8ZmlsZW5hbWU+dmlkZW9kZXY8L2ZpbGVuYW1lPiBtb2R1bGUgYXV0b21hdGljYWxseQorYXNzaWducyBtaW5vciBudW1iZXJzIHRvIGRyaXZlcnMgaW4gbG9hZCBvcmRlciwgZGVwZW5kaW5nIG9uIHRoZQorcmVnaXN0ZXJlZCBkZXZpY2UgdHlwZS4gV2UgcmVjb21tZW5kIHRoYXQgVjRMMiBkcml2ZXJzIGJ5IGRlZmF1bHQKK3JlZ2lzdGVyIGRldmljZXMgd2l0aCB0aGUgc2FtZSBudW1iZXJzLCBidXQgdGhlIHN5c3RlbSBhZG1pbmlzdHJhdG9yCitjYW4gYXNzaWduIGFyYml0cmFyeSBtaW5vciBudW1iZXJzIHVzaW5nIGRyaXZlciBtb2R1bGUgb3B0aW9ucy4gVGhlCittYWpvciBkZXZpY2UgbnVtYmVyIHJlbWFpbnMgODEuPC9wYXJhPgorCisgICAgICA8dGFibGUgaWQ9InY0bC1kZXYiPgorCTx0aXRsZT5WNEwgRGV2aWNlIFR5cGVzLCBOYW1lcyBhbmQgTnVtYmVyczwvdGl0bGU+CisJPHRncm91cCBjb2xzPSIzIj4KKwkgIDx0aGVhZD4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+RGV2aWNlIFR5cGU8L2VudHJ5PgorCSAgICAgIDxlbnRyeT5GaWxlIE5hbWU8L2VudHJ5PgorCSAgICAgIDxlbnRyeT5NaW5vciBOdW1iZXJzPC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICA8L3RoZWFkPgorCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+VmlkZW8gY2FwdHVyZSBhbmQgb3ZlcmxheTwvZW50cnk+CisJICAgICAgPGVudHJ5PjxwYXJhPjxmaWxlbmFtZT4vZGV2L3ZpZGVvPC9maWxlbmFtZT4gYW5kCis8ZmlsZW5hbWU+L2Rldi9idHR2MDwvZmlsZW5hbWU+PGZvb3Rub3RlPiA8cGFyYT5BY2NvcmRpbmcgdG8KK0RvY3VtZW50YXRpb24vZGV2aWNlcy50eHQgdGhlc2Ugc2hvdWxkIGJlIHN5bWJvbGljIGxpbmtzIHRvCis8ZmlsZW5hbWU+L2Rldi92aWRlbzA8L2ZpbGVuYW1lPi4gTm90ZSB0aGUgb3JpZ2luYWwgYnR0diBpbnRlcmZhY2UgaXMKK25vdCBjb21wYXRpYmxlIHdpdGggVjRMIG9yIFY0TDIuPC9wYXJhPiA8L2Zvb3Rub3RlPiwKKzxmaWxlbmFtZT4vZGV2L3ZpZGVvMDwvZmlsZW5hbWU+IHRvCis8ZmlsZW5hbWU+L2Rldi92aWRlbzYzPC9maWxlbmFtZT48L3BhcmE+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MC02MzwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT5SYWRpbyByZWNlaXZlcjwvZW50cnk+CisJICAgICAgPGVudHJ5PjxwYXJhPjxmaWxlbmFtZT4vZGV2L3JhZGlvPC9maWxlbmFtZT48Zm9vdG5vdGU+CisJCSAgICA8cGFyYT5BY2NvcmRpbmcgdG8KKzxmaWxlbmFtZT5Eb2N1bWVudGF0aW9uL2RldmljZXMudHh0PC9maWxlbmFtZT4gYSBzeW1ib2xpYyBsaW5rIHRvCis8ZmlsZW5hbWU+L2Rldi9yYWRpbzA8L2ZpbGVuYW1lPi48L3BhcmE+CisJCSAgPC9mb290bm90ZT4sIDxmaWxlbmFtZT4vZGV2L3JhZGlvMDwvZmlsZW5hbWU+IHRvCis8ZmlsZW5hbWU+L2Rldi9yYWRpbzYzPC9maWxlbmFtZT48L3BhcmE+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+NjQtMTI3PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PlJhdyBWQkkgY2FwdHVyZTwvZW50cnk+CisJICAgICAgPGVudHJ5PjxwYXJhPjxmaWxlbmFtZT4vZGV2L3ZiaTwvZmlsZW5hbWU+LAorPGZpbGVuYW1lPi9kZXYvdmJpMDwvZmlsZW5hbWU+IHRvCis8ZmlsZW5hbWU+L2Rldi92YmkzMTwvZmlsZW5hbWU+PC9wYXJhPjwvZW50cnk+CisJICAgICAgPGVudHJ5PjIyNC0yNTU8L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgIDwvdGJvZHk+CisJPC90Z3JvdXA+CisgICAgICA8L3RhYmxlPgorCisgICAgICA8cGFyYT5WNEwgcHJvaGliaXRzIChvciB1c2VkIHRvIHByb2hpYml0KSBtdWx0aXBsZSBvcGVucyBvZiBhCitkZXZpY2UgZmlsZS4gVjRMMiBkcml2ZXJzIDxlbXBoYXNpcz5tYXk8L2VtcGhhc2lzPiBzdXBwb3J0IG11bHRpcGxlCitvcGVucywgc2VlIDx4cmVmIGxpbmtlbmQ9Im9wZW4iIC8+IGZvciBkZXRhaWxzIGFuZCBjb25zZXF1ZW5jZXMuPC9wYXJhPgorCisgICAgICA8cGFyYT5WNEwgZHJpdmVycyByZXNwb25kIHRvIFY0TDIgaW9jdGxzIHdpdGggYW4gJkVJTlZBTDsuPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlF1ZXJ5aW5nIENhcGFiaWxpdGllczwvdGl0bGU+CisKKyAgICAgIDxwYXJhPlRoZSBWNEwgPGNvbnN0YW50PlZJRElPQ0dDQVA8L2NvbnN0YW50PiBpb2N0bCBpcworZXF1aXZhbGVudCB0byBWNEwyJ3MgJlZJRElPQy1RVUVSWUNBUDsuPC9wYXJhPgorCisgICAgICA8cGFyYT5UaGUgPHN0cnVjdGZpZWxkPm5hbWU8L3N0cnVjdGZpZWxkPiBmaWVsZCBpbiBzdHJ1Y3QKKzxzdHJ1Y3RuYW1lPnZpZGVvX2NhcGFiaWxpdHk8L3N0cnVjdG5hbWU+IGJlY2FtZQorPHN0cnVjdGZpZWxkPmNhcmQ8L3N0cnVjdGZpZWxkPiBpbiAmdjRsMi1jYXBhYmlsaXR5OywKKzxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gd2FzIHJlcGxhY2VkIGJ5Cis8c3RydWN0ZmllbGQ+Y2FwYWJpbGl0aWVzPC9zdHJ1Y3RmaWVsZD4uIE5vdGUgVjRMMiBkb2VzIG5vdAorZGlzdGluZ3Vpc2ggYmV0d2VlbiBkZXZpY2UgdHlwZXMgbGlrZSB0aGlzLCBiZXR0ZXIgdGhpbmsgb2YgYmFzaWMKK3ZpZGVvIGlucHV0LCB2aWRlbyBvdXRwdXQgYW5kIHJhZGlvIGRldmljZXMgc3VwcG9ydGluZyBhIHNldCBvZgorcmVsYXRlZCBmdW5jdGlvbnMgbGlrZSB2aWRlbyBjYXB0dXJpbmcsIHZpZGVvIG92ZXJsYXkgYW5kIFZCSQorY2FwdHVyaW5nLiBTZWUgPHhyZWYgbGlua2VuZD0ib3BlbiIgLz4gZm9yIGFuCitpbnRyb2R1Y3Rpb24uPGluZm9ybWFsdGFibGU+CisJICA8dGdyb3VwIGNvbHM9IjMiPgorCSAgICA8dGhlYWQ+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5PnN0cnVjdAorPHN0cnVjdG5hbWU+dmlkZW9fY2FwYWJpbGl0eTwvc3RydWN0bmFtZT4KKzxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCQk8ZW50cnk+JnY0bDItY2FwYWJpbGl0eTsKKzxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXRpZXM8L3N0cnVjdGZpZWxkPiBmbGFnczwvZW50cnk+CisJCTxlbnRyeT5QdXJwb3NlPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgPC90aGVhZD4KKwkgICAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgICAgICA8cm93PgorCQk8ZW50cnk+PGNvbnN0YW50PlZJRF9UWVBFX0NBUFRVUkU8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DQVBfVklERU9fQ0FQVFVSRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PlRoZSA8bGluayBsaW5rZW5kPSJjYXB0dXJlIj52aWRlbworY2FwdHVyZTwvbGluaz4gaW50ZXJmYWNlIGlzIHN1cHBvcnRlZC48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeT48Y29uc3RhbnQ+VklEX1RZUEVfVFVORVI8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DQVBfVFVORVI8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT5UaGUgZGV2aWNlIGhhcyBhIDxsaW5rIGxpbmtlbmQ9InR1bmVyIj50dW5lciBvcgorbW9kdWxhdG9yPC9saW5rPi48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeT48Y29uc3RhbnQ+VklEX1RZUEVfVEVMRVRFWFQ8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DQVBfVkJJX0NBUFRVUkU8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT5UaGUgPGxpbmsgbGlua2VuZD0icmF3LXZiaSI+cmF3IFZCSQorY2FwdHVyZTwvbGluaz4gaW50ZXJmYWNlIGlzIHN1cHBvcnRlZC48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeT48Y29uc3RhbnQ+VklEX1RZUEVfT1ZFUkxBWTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NBUF9WSURFT19PVkVSTEFZPC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+VGhlIDxsaW5rIGxpbmtlbmQ9Im92ZXJsYXkiPnZpZGVvCitvdmVybGF5PC9saW5rPiBpbnRlcmZhY2UgaXMgc3VwcG9ydGVkLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5Pjxjb25zdGFudD5WSURfVFlQRV9DSFJPTUFLRVk8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT48Y29uc3RhbnQ+VjRMMl9GQlVGX0NBUF9DSFJPTUFLRVk8L2NvbnN0YW50PiBpbgorZmllbGQgPHN0cnVjdGZpZWxkPmNhcGFiaWxpdHk8L3N0cnVjdGZpZWxkPiBvZgorJnY0bDItZnJhbWVidWZmZXI7PC9lbnRyeT4KKwkJPGVudHJ5PldoZXRoZXIgY2hyb21ha2V5IG92ZXJsYXkgaXMgc3VwcG9ydGVkLiBGb3IKK21vcmUgaW5mb3JtYXRpb24gb24gb3ZlcmxheSBzZWUKKzx4cmVmIGxpbmtlbmQ9Im92ZXJsYXkiIC8+LjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5Pjxjb25zdGFudD5WSURfVFlQRV9DTElQUElORzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5Pjxjb25zdGFudD5WNEwyX0ZCVUZfQ0FQX0xJU1RfQ0xJUFBJTkc8L2NvbnN0YW50PgorYW5kIDxjb25zdGFudD5WNEwyX0ZCVUZfQ0FQX0JJVE1BUF9DTElQUElORzwvY29uc3RhbnQ+IGluIGZpZWxkCis8c3RydWN0ZmllbGQ+Y2FwYWJpbGl0eTwvc3RydWN0ZmllbGQ+IG9mICZ2NGwyLWZyYW1lYnVmZmVyOzwvZW50cnk+CisJCTxlbnRyeT5XaGV0aGVyIGNsaXBwaW5nIHRoZSBvdmVybGFpZCBpbWFnZSBpcworc3VwcG9ydGVkLCBzZWUgPHhyZWYgbGlua2VuZD0ib3ZlcmxheSIgLz4uPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnk+PGNvbnN0YW50PlZJRF9UWVBFX0ZSQU1FUkFNPC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+PGNvbnN0YW50PlY0TDJfRkJVRl9DQVBfRVhURVJOT1ZFUkxBWTwvY29uc3RhbnQ+Cis8ZW1waGFzaXM+bm90IHNldDwvZW1waGFzaXM+IGluIGZpZWxkCis8c3RydWN0ZmllbGQ+Y2FwYWJpbGl0eTwvc3RydWN0ZmllbGQ+IG9mICZ2NGwyLWZyYW1lYnVmZmVyOzwvZW50cnk+CisJCTxlbnRyeT5XaGV0aGVyIG92ZXJsYXkgb3ZlcndyaXRlcyBmcmFtZSBidWZmZXIgbWVtb3J5LAorc2VlIDx4cmVmIGxpbmtlbmQ9Im92ZXJsYXkiIC8+LjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5Pjxjb25zdGFudD5WSURfVFlQRV9TQ0FMRVM8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT48Y29uc3RhbnQ+LTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PlRoaXMgZmxhZyBpbmRpY2F0ZXMgaWYgdGhlIGhhcmR3YXJlIGNhbiBzY2FsZQoraW1hZ2VzLiBUaGUgVjRMMiBBUEkgaW1wbGllcyB0aGUgc2NhbGUgZmFjdG9yIGJ5IHNldHRpbmcgdGhlIGNyb3BwaW5nCitkaW1lbnNpb25zIGFuZCBpbWFnZSBzaXplIHdpdGggdGhlICZWSURJT0MtUy1DUk9QOyBhbmQgJlZJRElPQy1TLUZNVDsKK2lvY3RsLCByZXNwZWN0aXZlbHkuIFRoZSBkcml2ZXIgcmV0dXJucyB0aGUgY2xvc2VzdCBzaXplcyBwb3NzaWJsZS4KK0ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNyb3BwaW5nIGFuZCBzY2FsaW5nIHNlZSA8eHJlZgorCQkgICAgbGlua2VuZD0iY3JvcCIgLz4uPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnk+PGNvbnN0YW50PlZJRF9UWVBFX01PTk9DSFJPTUU8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT48Y29uc3RhbnQ+LTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PkFwcGxpY2F0aW9ucyBjYW4gZW51bWVyYXRlIHRoZSBzdXBwb3J0ZWQgaW1hZ2UKK2Zvcm1hdHMgd2l0aCB0aGUgJlZJRElPQy1FTlVNLUZNVDsgaW9jdGwgdG8gZGV0ZXJtaW5lIGlmIHRoZSBkZXZpY2UKK3N1cHBvcnRzIGdyZXkgc2NhbGUgY2FwdHVyaW5nIG9ubHkuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGltYWdlCitmb3JtYXRzIHNlZSA8eHJlZiBsaW5rZW5kPSJwaXhmbXQiIC8+LjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5Pjxjb25zdGFudD5WSURfVFlQRV9TVUJDQVBUVVJFPC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+PGNvbnN0YW50Pi08L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT5BcHBsaWNhdGlvbnMgY2FuIGNhbGwgdGhlICZWSURJT0MtRy1DUk9QOyBpb2N0bAordG8gZGV0ZXJtaW5lIGlmIHRoZSBkZXZpY2Ugc3VwcG9ydHMgY2FwdHVyaW5nIGEgc3Vic2VjdGlvbiBvZiB0aGUgZnVsbAorcGljdHVyZSAoImNyb3BwaW5nIiBpbiBWNEwyKS4gSWYgbm90LCB0aGUgaW9jdGwgcmV0dXJucyB0aGUgJkVJTlZBTDsuCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjcm9wcGluZyBhbmQgc2NhbGluZyBzZWUgPHhyZWYKKwkJICAgIGxpbmtlbmQ9ImNyb3AiIC8+LjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5Pjxjb25zdGFudD5WSURfVFlQRV9NUEVHX0RFQ09ERVI8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT48Y29uc3RhbnQ+LTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PkFwcGxpY2F0aW9ucyBjYW4gZW51bWVyYXRlIHRoZSBzdXBwb3J0ZWQgaW1hZ2UKK2Zvcm1hdHMgd2l0aCB0aGUgJlZJRElPQy1FTlVNLUZNVDsgaW9jdGwgdG8gZGV0ZXJtaW5lIGlmIHRoZSBkZXZpY2UKK3N1cHBvcnRzIE1QRUcgc3RyZWFtcy48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeT48Y29uc3RhbnQ+VklEX1RZUEVfTVBFR19FTkNPREVSPC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+PGNvbnN0YW50Pi08L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT5TZWUgYWJvdmUuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnk+PGNvbnN0YW50PlZJRF9UWVBFX01KUEVHX0RFQ09ERVI8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT48Y29uc3RhbnQ+LTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PlNlZSBhYm92ZS48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeT48Y29uc3RhbnQ+VklEX1RZUEVfTUpQRUdfRU5DT0RFUjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5Pjxjb25zdGFudD4tPC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+U2VlIGFib3ZlLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgIDwvdGJvZHk+CisJICA8L3Rncm91cD4KKwk8L2luZm9ybWFsdGFibGU+PC9wYXJhPgorCisgICAgICA8cGFyYT5UaGUgPHN0cnVjdGZpZWxkPmF1ZGlvczwvc3RydWN0ZmllbGQ+IGZpZWxkIHdhcyByZXBsYWNlZAorYnkgPHN0cnVjdGZpZWxkPmNhcGFiaWxpdGllczwvc3RydWN0ZmllbGQ+IGZsYWcKKzxjb25zdGFudD5WNEwyX0NBUF9BVURJTzwvY29uc3RhbnQ+LCBpbmRpY2F0aW5nCis8ZW1waGFzaXM+aWY8L2VtcGhhc2lzPiB0aGUgZGV2aWNlIGhhcyBhbnkgYXVkaW8gaW5wdXRzIG9yIG91dHB1dHMuIFRvCitkZXRlcm1pbmUgdGhlaXIgbnVtYmVyIGFwcGxpY2F0aW9ucyBjYW4gZW51bWVyYXRlIGF1ZGlvIGlucHV0cyB3aXRoCit0aGUgJlZJRElPQy1HLUFVRElPOyBpb2N0bC4gVGhlIGF1ZGlvIGlvY3RscyBhcmUgZGVzY3JpYmVkIGluIDx4cmVmCisJICBsaW5rZW5kPSJhdWRpbyIgLz4uPC9wYXJhPgorCisgICAgICA8cGFyYT5UaGUgPHN0cnVjdGZpZWxkPm1heHdpZHRoPC9zdHJ1Y3RmaWVsZD4sCis8c3RydWN0ZmllbGQ+bWF4aGVpZ2h0PC9zdHJ1Y3RmaWVsZD4sCis8c3RydWN0ZmllbGQ+bWlud2lkdGg8L3N0cnVjdGZpZWxkPiBhbmQKKzxzdHJ1Y3RmaWVsZD5taW5oZWlnaHQ8L3N0cnVjdGZpZWxkPiBmaWVsZHMgd2VyZSByZW1vdmVkLiBDYWxsaW5nIHRoZQorJlZJRElPQy1TLUZNVDsgb3IgJlZJRElPQy1UUlktRk1UOyBpb2N0bCB3aXRoIHRoZSBkZXNpcmVkIGRpbWVuc2lvbnMKK3JldHVybnMgdGhlIGNsb3Nlc3Qgc2l6ZSBwb3NzaWJsZSwgdGFraW5nIGludG8gYWNjb3VudCB0aGUgY3VycmVudAordmlkZW8gc3RhbmRhcmQsIGNyb3BwaW5nIGFuZCBzY2FsaW5nIGxpbWl0YXRpb25zLjwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5WaWRlbyBTb3VyY2VzPC90aXRsZT4KKworICAgICAgPHBhcmE+VjRMIHByb3ZpZGVzIHRoZSA8Y29uc3RhbnQ+VklESU9DR0NIQU48L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WSURJT0NTQ0hBTjwvY29uc3RhbnQ+IGlvY3RsIHVzaW5nIHN0cnVjdAorPHN0cnVjdG5hbWU+dmlkZW9fY2hhbm5lbDwvc3RydWN0bmFtZT4gdG8gZW51bWVyYXRlCit0aGUgdmlkZW8gaW5wdXRzIG9mIGEgVjRMIGRldmljZS4gVGhlIGVxdWl2YWxlbnQgVjRMMiBpb2N0bHMKK2FyZSAmVklESU9DLUVOVU1JTlBVVDssICZWSURJT0MtRy1JTlBVVDsgYW5kICZWSURJT0MtUy1JTlBVVDsKK3VzaW5nICZ2NGwyLWlucHV0OyBhcyBkaXNjdXNzZWQgaW4gPHhyZWYgbGlua2VuZD0idmlkZW8iIC8+LjwvcGFyYT4KKworICAgICAgPHBhcmE+VGhlIDxzdHJ1Y3RmaWVsZD5jaGFubmVsPC9zdHJ1Y3RmaWVsZD4gZmllbGQgY291bnRpbmcKK2lucHV0cyB3YXMgcmVuYW1lZCB0byA8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPiwgdGhlIHZpZGVvCitpbnB1dCB0eXBlcyB3ZXJlIHJlbmFtZWQgYXMgZm9sbG93czogPGluZm9ybWFsdGFibGU+CisJICA8dGdyb3VwIGNvbHM9IjIiPgorCSAgICA8dGhlYWQ+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5PnN0cnVjdCA8c3RydWN0bmFtZT52aWRlb19jaGFubmVsPC9zdHJ1Y3RuYW1lPgorPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJCTxlbnRyeT4mdjRsMi1pbnB1dDsKKzxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICA8L3RoZWFkPgorCSAgICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgICAgIDxyb3c+CisJCTxlbnRyeT48Y29uc3RhbnQ+VklERU9fVFlQRV9UVjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5Pjxjb25zdGFudD5WNEwyX0lOUFVUX1RZUEVfVFVORVI8L2NvbnN0YW50PjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5Pjxjb25zdGFudD5WSURFT19UWVBFX0NBTUVSQTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5Pjxjb25zdGFudD5WNEwyX0lOUFVUX1RZUEVfQ0FNRVJBPC9jb25zdGFudD48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICA8L3Rib2R5PgorCSAgPC90Z3JvdXA+CisJPC9pbmZvcm1hbHRhYmxlPjwvcGFyYT4KKworICAgICAgPHBhcmE+VW5saWtlIHRoZSA8c3RydWN0ZmllbGQ+dHVuZXJzPC9zdHJ1Y3RmaWVsZD4gZmllbGQKK2V4cHJlc3NpbmcgdGhlIG51bWJlciBvZiB0dW5lcnMgb2YgdGhpcyBpbnB1dCwgVjRMMiBhc3N1bWVzIGVhY2ggdmlkZW8KK2lucHV0IGlzIGNvbm5lY3RlZCB0byBhdCBtb3N0IG9uZSB0dW5lci4gSG93ZXZlciBhIHR1bmVyIGNhbiBoYXZlIG1vcmUKK3RoYW4gb25lIGlucHV0LCAmaWU7IFJGIGNvbm5lY3RvcnMsIGFuZCBhIGRldmljZSBjYW4gaGF2ZSBtdWx0aXBsZQordHVuZXJzLiBUaGUgaW5kZXggbnVtYmVyIG9mIHRoZSB0dW5lciBhc3NvY2lhdGVkIHdpdGggdGhlIGlucHV0LCBpZgorYW55LCBpcyBzdG9yZWQgaW4gZmllbGQgPHN0cnVjdGZpZWxkPnR1bmVyPC9zdHJ1Y3RmaWVsZD4gb2YKKyZ2NGwyLWlucHV0Oy4gRW51bWVyYXRpb24gb2YgdHVuZXJzIGlzIGRpc2N1c3NlZCBpbiA8eHJlZgorCSAgbGlua2VuZD0idHVuZXIiIC8+LjwvcGFyYT4KKworICAgICAgPHBhcmE+VGhlIHJlZHVuZGFudCA8Y29uc3RhbnQ+VklERU9fVkNfVFVORVI8L2NvbnN0YW50PiBmbGFnIHdhcworZHJvcHBlZC4gVmlkZW8gaW5wdXRzIGFzc29jaWF0ZWQgd2l0aCBhIHR1bmVyIGFyZSBvZiB0eXBlCis8Y29uc3RhbnQ+VjRMMl9JTlBVVF9UWVBFX1RVTkVSPC9jb25zdGFudD4uIFRoZQorPGNvbnN0YW50PlZJREVPX1ZDX0FVRElPPC9jb25zdGFudD4gZmxhZyB3YXMgcmVwbGFjZWQgYnkgdGhlCis8c3RydWN0ZmllbGQ+YXVkaW9zZXQ8L3N0cnVjdGZpZWxkPiBmaWVsZC4gVjRMMiBjb25zaWRlcnMgZGV2aWNlcyB3aXRoCit1cCB0byAzMiBhdWRpbyBpbnB1dHMuIEVhY2ggc2V0IGJpdCBpbiB0aGUKKzxzdHJ1Y3RmaWVsZD5hdWRpb3NldDwvc3RydWN0ZmllbGQ+IGZpZWxkIHJlcHJlc2VudHMgb25lIGF1ZGlvIGlucHV0Cit0aGlzIHZpZGVvIGlucHV0IGNvbWJpbmVzIHdpdGguIEZvciBpbmZvcm1hdGlvbiBhYm91dCBhdWRpbyBpbnB1dHMgYW5kCitob3cgdG8gc3dpdGNoIGJldHdlZW4gdGhlbSBzZWUgPHhyZWYgbGlua2VuZD0iYXVkaW8iIC8+LjwvcGFyYT4KKworICAgICAgPHBhcmE+VGhlIDxzdHJ1Y3RmaWVsZD5ub3JtPC9zdHJ1Y3RmaWVsZD4gZmllbGQgZGVzY3JpYmluZyB0aGUKK3N1cHBvcnRlZCB2aWRlbyBzdGFuZGFyZHMgd2FzIHJlcGxhY2VkIGJ5Cis8c3RydWN0ZmllbGQ+c3RkPC9zdHJ1Y3RmaWVsZD4uIFRoZSBWNEwgc3BlY2lmaWNhdGlvbiBtZW50aW9ucyBhIGZsYWcKKzxjb25zdGFudD5WSURFT19WQ19OT1JNPC9jb25zdGFudD4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBzdGFuZGFyZCBjYW4KK2JlIGNoYW5nZWQuIFRoaXMgZmxhZyB3YXMgYSBsYXRlciBhZGRpdGlvbiB0b2dldGhlciB3aXRoIHRoZQorPHN0cnVjdGZpZWxkPm5vcm08L3N0cnVjdGZpZWxkPiBmaWVsZCBhbmQgaGFzIGJlZW4gcmVtb3ZlZCBpbiB0aGUKK21lYW50aW1lLiBWNEwyIGhhcyBhIHNpbWlsYXIsIGFsYmVpdCBtb3JlIGNvbXByZWhlbnNpdmUgYXBwcm9hY2gKK3RvIHZpZGVvIHN0YW5kYXJkcywgc2VlIDx4cmVmIGxpbmtlbmQ9InN0YW5kYXJkIiAvPiBmb3IgbW9yZQoraW5mb3JtYXRpb24uPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlR1bmluZzwvdGl0bGU+CisKKyAgICAgIDxwYXJhPlRoZSBWNEwgPGNvbnN0YW50PlZJRElPQ0dUVU5FUjwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlZJRElPQ1NUVU5FUjwvY29uc3RhbnQ+IGlvY3RsIGFuZCBzdHJ1Y3QKKzxzdHJ1Y3RuYW1lPnZpZGVvX3R1bmVyPC9zdHJ1Y3RuYW1lPiBjYW4gYmUgdXNlZCB0byBlbnVtZXJhdGUgdGhlCit0dW5lcnMgb2YgYSBWNEwgVFYgb3IgcmFkaW8gZGV2aWNlLiBUaGUgZXF1aXZhbGVudCBWNEwyIGlvY3RscyBhcmUKKyZWSURJT0MtRy1UVU5FUjsgYW5kICZWSURJT0MtUy1UVU5FUjsgdXNpbmcgJnY0bDItdHVuZXI7LiBUdW5lcnMgYXJlCitjb3ZlcmVkIGluIDx4cmVmIGxpbmtlbmQ9InR1bmVyIiAvPi48L3BhcmE+CisKKyAgICAgIDxwYXJhPlRoZSA8c3RydWN0ZmllbGQ+dHVuZXI8L3N0cnVjdGZpZWxkPiBmaWVsZCBjb3VudGluZyB0dW5lcnMKK3dhcyByZW5hbWVkIHRvIDxzdHJ1Y3RmaWVsZD5pbmRleDwvc3RydWN0ZmllbGQ+LiBUaGUgZmllbGRzCis8c3RydWN0ZmllbGQ+bmFtZTwvc3RydWN0ZmllbGQ+LCA8c3RydWN0ZmllbGQ+cmFuZ2Vsb3c8L3N0cnVjdGZpZWxkPgorYW5kIDxzdHJ1Y3RmaWVsZD5yYW5nZWhpZ2g8L3N0cnVjdGZpZWxkPiByZW1haW5lZCB1bmNoYW5nZWQuPC9wYXJhPgorCisgICAgICA8cGFyYT5UaGUgPGNvbnN0YW50PlZJREVPX1RVTkVSX1BBTDwvY29uc3RhbnQ+LAorPGNvbnN0YW50PlZJREVPX1RVTkVSX05UU0M8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WSURFT19UVU5FUl9TRUNBTTwvY29uc3RhbnQ+IGZsYWdzIGluZGljYXRpbmcgdGhlIHN1cHBvcnRlZAordmlkZW8gc3RhbmRhcmRzIHdlcmUgZHJvcHBlZC4gVGhpcyBpbmZvcm1hdGlvbiBpcyBub3cgY29udGFpbmVkIGluIHRoZQorYXNzb2NpYXRlZCAmdjRsMi1pbnB1dDsuIE5vIHJlcGxhY2VtZW50IGV4aXN0cyBmb3IgdGhlCis8Y29uc3RhbnQ+VklERU9fVFVORVJfTk9STTwvY29uc3RhbnQ+IGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZQordmlkZW8gc3RhbmRhcmQgY2FuIGJlIHN3aXRjaGVkLiBUaGUgPHN0cnVjdGZpZWxkPm1vZGU8L3N0cnVjdGZpZWxkPgorZmllbGQgdG8gc2VsZWN0IGEgZGlmZmVyZW50IHZpZGVvIHN0YW5kYXJkIHdhcyByZXBsYWNlZCBieSBhIHdob2xlIG5ldworc2V0IG9mIGlvY3RscyBhbmQgc3RydWN0dXJlcyBkZXNjcmliZWQgaW4gPHhyZWYgbGlua2VuZD0ic3RhbmRhcmQiIC8+LgorRHVlIHRvIGl0cyB1YmlxdWl0eSBpdCBzaG91bGQgYmUgbWVudGlvbmVkIHRoZSBCVFRWIGRyaXZlciBzdXBwb3J0cworc2V2ZXJhbCBzdGFuZGFyZHMgaW4gYWRkaXRpb24gdG8gdGhlIHJlZ3VsYXIKKzxjb25zdGFudD5WSURFT19NT0RFX1BBTDwvY29uc3RhbnQ+ICgwKSwKKzxjb25zdGFudD5WSURFT19NT0RFX05UU0M8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WSURFT19NT0RFX1NFQ0FNPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VklERU9fTU9ERV9BVVRPPC9jb25zdGFudD4gKDMpLiBOYW1lbHkgTi9QQUwgQXJnZW50aW5hLAorTS9QQUwsIE4vUEFMLCBhbmQgTlRTQyBKYXBhbiB3aXRoIG51bWJlcnMgMy02IChzaWMpLjwvcGFyYT4KKworICAgICAgPHBhcmE+VGhlIDxjb25zdGFudD5WSURFT19UVU5FUl9TVEVSRU9fT048L2NvbnN0YW50PiBmbGFnCitpbmRpY2F0aW5nIHN0ZXJlbyByZWNlcHRpb24gYmVjYW1lCis8Y29uc3RhbnQ+VjRMMl9UVU5FUl9TVUJfU1RFUkVPPC9jb25zdGFudD4gaW4gZmllbGQKKzxzdHJ1Y3RmaWVsZD5yeHN1YmNoYW5zPC9zdHJ1Y3RmaWVsZD4uIFRoaXMgZmllbGQgYWxzbyBwZXJtaXRzIHRoZQorZGV0ZWN0aW9uIG9mIG1vbmF1cmFsIGFuZCBiaWxpbmd1YWwgYXVkaW8sIHNlZSB0aGUgZGVmaW5pdGlvbiBvZgorJnY0bDItdHVuZXI7IGZvciBkZXRhaWxzLiBQcmVzZW50bHkgbm8gcmVwbGFjZW1lbnQgZXhpc3RzIGZvciB0aGUKKzxjb25zdGFudD5WSURFT19UVU5FUl9SRFNfT048L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WSURFT19UVU5FUl9NQlNfT048L2NvbnN0YW50PiBmbGFncy48L3BhcmE+CisKKyAgICAgIDxwYXJhPiBUaGUgPGNvbnN0YW50PlZJREVPX1RVTkVSX0xPVzwvY29uc3RhbnQ+IGZsYWcgd2FzIHJlbmFtZWQKK3RvIDxjb25zdGFudD5WNEwyX1RVTkVSX0NBUF9MT1c8L2NvbnN0YW50PiBpbiB0aGUgJnY0bDItdHVuZXI7Cis8c3RydWN0ZmllbGQ+Y2FwYWJpbGl0eTwvc3RydWN0ZmllbGQ+IGZpZWxkLjwvcGFyYT4KKworICAgICAgPHBhcmE+VGhlIDxjb25zdGFudD5WSURJT0NHRlJFUTwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlZJRElPQ1NGUkVRPC9jb25zdGFudD4gaW9jdGwgdG8gY2hhbmdlIHRoZSB0dW5lciBmcmVxdWVuY3kKK3doZXJlIHJlbmFtZWQgdG8gJlZJRElPQy1HLUZSRVFVRU5DWTsgYW5kICAmVklESU9DLVMtRlJFUVVFTkNZOy4gVGhleQordGFrZSBhIHBvaW50ZXIgdG8gYSAmdjRsMi1mcmVxdWVuY3k7IGluc3RlYWQgb2YgYW4gdW5zaWduZWQgbG9uZworaW50ZWdlci48L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9InY0bC1pbWFnZS1wcm9wZXJ0aWVzIj4KKyAgICAgIDx0aXRsZT5JbWFnZSBQcm9wZXJ0aWVzPC90aXRsZT4KKworICAgICAgPHBhcmE+VjRMMiBoYXMgbm8gZXF1aXZhbGVudCBvZiB0aGUKKzxjb25zdGFudD5WSURJT0NHUElDVDwvY29uc3RhbnQ+IGFuZCA8Y29uc3RhbnQ+VklESU9DU1BJQ1Q8L2NvbnN0YW50PgoraW9jdGwgYW5kIHN0cnVjdCA8c3RydWN0bmFtZT52aWRlb19waWN0dXJlPC9zdHJ1Y3RuYW1lPi4gVGhlIGZvbGxvd2luZworZmllbGRzIHdoZXJlIHJlcGxhY2VkIGJ5IFY0TDIgY29udHJvbHMgYWNjZXNzaWJsZSB3aXRoIHRoZQorJlZJRElPQy1RVUVSWUNUUkw7LCAmVklESU9DLUctQ1RSTDsgYW5kICZWSURJT0MtUy1DVFJMOyBpb2N0bHM6PGluZm9ybWFsdGFibGU+CisJICA8dGdyb3VwIGNvbHM9IjIiPgorCSAgICA8dGhlYWQ+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5PnN0cnVjdCA8c3RydWN0bmFtZT52aWRlb19waWN0dXJlPC9zdHJ1Y3RuYW1lPjwvZW50cnk+CisJCTxlbnRyeT5WNEwyIENvbnRyb2wgSUQ8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICA8L3RoZWFkPgorCSAgICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgICAgIDxyb3c+CisJCTxlbnRyeT48c3RydWN0ZmllbGQ+YnJpZ2h0bmVzczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkJPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9CUklHSFRORVNTPC9jb25zdGFudD48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeT48c3RydWN0ZmllbGQ+aHVlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCQk8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX0hVRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnk+PHN0cnVjdGZpZWxkPmNvbG91cjwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkJPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9TQVRVUkFUSU9OPC9jb25zdGFudD48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeT48c3RydWN0ZmllbGQ+Y29udHJhc3Q8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJCTxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSURfQ09OVFJBU1Q8L2NvbnN0YW50PjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5PjxzdHJ1Y3RmaWVsZD53aGl0ZW5lc3M8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJCTxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSURfV0hJVEVORVNTPC9jb25zdGFudD48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICA8L3Rib2R5PgorCSAgPC90Z3JvdXA+CisJPC9pbmZvcm1hbHRhYmxlPjwvcGFyYT4KKworICAgICAgPHBhcmE+VGhlIFY0TCBwaWN0dXJlIGNvbnRyb2xzIGFyZSBhc3N1bWVkIHRvIHJhbmdlIGZyb20gMCB0bworNjU1MzUgd2l0aCBubyBwYXJ0aWN1bGFyIHJlc2V0IHZhbHVlLiBUaGUgVjRMMiBBUEkgcGVybWl0cyBhcmJpdHJhcnkKK2xpbWl0cyBhbmQgZGVmYXVsdHMgd2hpY2ggY2FuIGJlIHF1ZXJpZWQgd2l0aCB0aGUgJlZJRElPQy1RVUVSWUNUUkw7Citpb2N0bC4gRm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgY29udHJvbHMgc2VlIDx4cmVmCitsaW5rZW5kPSJjb250cm9sIiAvPi48L3BhcmE+CisKKyAgICAgIDxwYXJhPlRoZSA8c3RydWN0ZmllbGQ+ZGVwdGg8L3N0cnVjdGZpZWxkPiAoYXZlcmFnZSBudW1iZXIgb2YKK2JpdHMgcGVyIHBpeGVsKSBvZiBhIHZpZGVvIGltYWdlIGlzIGltcGxpZWQgYnkgdGhlIHNlbGVjdGVkIGltYWdlCitmb3JtYXQuIFY0TDIgZG9lcyBub3QgZXhwbGljaXRseSBwcm92aWRlIHN1Y2ggaW5mb3JtYXRpb24gYXNzdW1pbmcKK2FwcGxpY2F0aW9ucyByZWNvZ25pemluZyB0aGUgZm9ybWF0IGFyZSBhd2FyZSBvZiB0aGUgaW1hZ2UgZGVwdGggYW5kCitvdGhlcnMgbmVlZCBub3Qga25vdy4gVGhlIDxzdHJ1Y3RmaWVsZD5wYWxldHRlPC9zdHJ1Y3RmaWVsZD4gZmllbGQKK21vdmVkIGludG8gdGhlICZ2NGwyLXBpeC1mb3JtYXQ7OjxpbmZvcm1hbHRhYmxlPgorCSAgPHRncm91cCBjb2xzPSIyIj4KKwkgICAgPHRoZWFkPgorCSAgICAgIDxyb3c+CisJCTxlbnRyeT5zdHJ1Y3QgPHN0cnVjdG5hbWU+dmlkZW9fcGljdHVyZTwvc3RydWN0bmFtZT4KKzxzdHJ1Y3RmaWVsZD5wYWxldHRlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCQk8ZW50cnk+JnY0bDItcGl4LWZvcm1hdDsKKzxzdHJ1Y3RmaWVsZD5waXhmbXQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgIDwvdGhlYWQ+CisJICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5Pjxjb25zdGFudD5WSURFT19QQUxFVFRFX0dSRVk8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT48cGFyYT48bGluaworbGlua2VuZD0iVjRMMi1QSVgtRk1ULUdSRVkiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfR1JFWTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeT48Y29uc3RhbnQ+VklERU9fUEFMRVRURV9ISTI0MDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PjxwYXJhPjxsaW5rCitsaW5rZW5kPSJwaXhmbXQtcmVzZXJ2ZWQiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfSEkyNDA8L2NvbnN0YW50PjwvbGluaz48Zm9vdG5vdGU+CisJCSAgICAgIDxwYXJhPlRoaXMgaXMgYSBjdXN0b20gZm9ybWF0IHVzZWQgYnkgdGhlIEJUVFYKK2RyaXZlciwgbm90IG9uZSBvZiB0aGUgVjRMMiBzdGFuZGFyZCBmb3JtYXRzLjwvcGFyYT4KKwkJICAgIDwvZm9vdG5vdGU+PC9wYXJhPjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5Pjxjb25zdGFudD5WSURFT19QQUxFVFRFX1JHQjU2NTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PjxwYXJhPjxsaW5rCitsaW5rZW5kPSJwaXhmbXQtcmdiIj48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1JHQjU2NTwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeT48Y29uc3RhbnQ+VklERU9fUEFMRVRURV9SR0I1NTU8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT48cGFyYT48bGluaworbGlua2VuZD0icGl4Zm10LXJnYiI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9SR0I1NTU8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnk+PGNvbnN0YW50PlZJREVPX1BBTEVUVEVfUkdCMjQ8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT48cGFyYT48bGluaworbGlua2VuZD0icGl4Zm10LXJnYiI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9CR1IyNDwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeT48Y29uc3RhbnQ+VklERU9fUEFMRVRURV9SR0IzMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PjxwYXJhPjxsaW5rCitsaW5rZW5kPSJwaXhmbXQtcmdiIj48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0JHUjMyPC9jb25zdGFudD48L2xpbms+PGZvb3Rub3RlPgorCQkgICAgICA8cGFyYT5QcmVzdW1hYmx5IGFsbCBWNEwgUkdCIGZvcm1hdHMgYXJlCitsaXR0bGUtZW5kaWFuLCBhbHRob3VnaCBzb21lIGRyaXZlcnMgbWlnaHQgaW50ZXJwcmV0IHRoZW0gYWNjb3JkaW5nIHRvIG1hY2hpbmUgZW5kaWFubmVzcy4gVjRMMiBkZWZpbmVzIGxpdHRsZS1lbmRpYW4sIGJpZy1lbmRpYW4gYW5kIHJlZC9ibHVlCitzd2FwcGVkIHZhcmlhbnRzLiBGb3IgZGV0YWlscyBzZWUgPHhyZWYgbGlua2VuZD0icGl4Zm10LXJnYiIgLz4uPC9wYXJhPgorCQkgICAgPC9mb290bm90ZT48L3BhcmE+PC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnk+PGNvbnN0YW50PlZJREVPX1BBTEVUVEVfWVVWNDIyPC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+PHBhcmE+PGxpbmsKK2xpbmtlbmQ9IlY0TDItUElYLUZNVC1ZVVlWIj48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1lVWVY8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnk+PHBhcmE+PGNvbnN0YW50PlZJREVPX1BBTEVUVEVfWVVZVjwvY29uc3RhbnQ+PGZvb3Rub3RlPgorCQkgICAgICA8cGFyYT48Y29uc3RhbnQ+VklERU9fUEFMRVRURV9ZVVY0MjI8L2NvbnN0YW50PgorYW5kIDxjb25zdGFudD5WSURFT19QQUxFVFRFX1lVWVY8L2NvbnN0YW50PiBhcmUgdGhlIHNhbWUgZm9ybWF0cy4gU29tZQorVjRMIGRyaXZlcnMgcmVzcG9uZCB0byBvbmUsIHNvbWUgdG8gdGhlIG90aGVyLjwvcGFyYT4KKwkJICAgIDwvZm9vdG5vdGU+PC9wYXJhPjwvZW50cnk+CisJCTxlbnRyeT48cGFyYT48bGluaworbGlua2VuZD0iVjRMMi1QSVgtRk1ULVlVWVYiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWVVZVjwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeT48Y29uc3RhbnQ+VklERU9fUEFMRVRURV9VWVZZPC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+PHBhcmE+PGxpbmsKK2xpbmtlbmQ9IlY0TDItUElYLUZNVC1VWVZZIj48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1VZVlk8L2NvbnN0YW50PjwvbGluaz48L3BhcmE+PC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnk+PGNvbnN0YW50PlZJREVPX1BBTEVUVEVfWVVWNDIwPC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+Tm9uZTwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5Pjxjb25zdGFudD5WSURFT19QQUxFVFRFX1lVVjQxMTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PjxwYXJhPjxsaW5rCitsaW5rZW5kPSJWNEwyLVBJWC1GTVQtWTQxUCI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZNDFQPC9jb25zdGFudD48L2xpbms+PGZvb3Rub3RlPgorCQkgICAgICA8cGFyYT5Ob3QgdG8gYmUgY29uZnVzZWQgd2l0aAorPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZVVY0MTFQPC9jb25zdGFudD4sIHdoaWNoIGlzIGEgcGxhbmFyCitmb3JtYXQuPC9wYXJhPiA8L2Zvb3Rub3RlPjwvcGFyYT48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeT48Y29uc3RhbnQ+VklERU9fUEFMRVRURV9SQVc8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT48cGFyYT5Ob25lPGZvb3Rub3RlPiA8cGFyYT5WNEwgZXhwbGFpbnMgdGhpcworYXM6ICJSQVcgY2FwdHVyZSAoQlQ4NDgpIjwvcGFyYT4gPC9mb290bm90ZT48L3BhcmE+PC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnk+PGNvbnN0YW50PlZJREVPX1BBTEVUVEVfWVVWNDIyUDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PjxwYXJhPjxsaW5rCitsaW5rZW5kPSJWNEwyLVBJWC1GTVQtWVVWNDIyUCI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZVVY0MjJQPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5Pjxjb25zdGFudD5WSURFT19QQUxFVFRFX1lVVjQxMVA8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT48cGFyYT48bGluaworbGlua2VuZD0iVjRMMi1QSVgtRk1ULVlVVjQxMVAiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWVVWNDExUDwvY29uc3RhbnQ+PC9saW5rPjxmb290bm90ZT4KKwkJICAgICAgPHBhcmE+Tm90IHRvIGJlIGNvbmZ1c2VkIHdpdGgKKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfWTQxUDwvY29uc3RhbnQ+LCB3aGljaCBpcyBhIHBhY2tlZAorZm9ybWF0LjwvcGFyYT4gPC9mb290bm90ZT48L3BhcmE+PC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnk+PGNvbnN0YW50PlZJREVPX1BBTEVUVEVfWVVWNDIwUDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PjxwYXJhPjxsaW5rCitsaW5rZW5kPSJWNEwyLVBJWC1GTVQtWVZVNDIwIj48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1lWVTQyMDwvY29uc3RhbnQ+PC9saW5rPjwvcGFyYT48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeT48Y29uc3RhbnQ+VklERU9fUEFMRVRURV9ZVVY0MTBQPC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+PHBhcmE+PGxpbmsKK2xpbmtlbmQ9IlY0TDItUElYLUZNVC1ZVlU0MTAiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWVZVNDEwPC9jb25zdGFudD48L2xpbms+PC9wYXJhPjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgIDwvdGJvZHk+CisJICA8L3Rncm91cD4KKwk8L2luZm9ybWFsdGFibGU+PC9wYXJhPgorCisgICAgICA8cGFyYT5WNEwyIGltYWdlIGZvcm1hdHMgYXJlIGRlZmluZWQgaW4gPHhyZWYKK2xpbmtlbmQ9InBpeGZtdCIgLz4uIFRoZSBpbWFnZSBmb3JtYXQgY2FuIGJlIHNlbGVjdGVkIHdpdGggdGhlCismVklESU9DLVMtRk1UOyBpb2N0bC48L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+QXVkaW88L3RpdGxlPgorCisgICAgICA8cGFyYT5UaGUgPGNvbnN0YW50PlZJRElPQ0dBVURJTzwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlZJRElPQ1NBVURJTzwvY29uc3RhbnQ+IGlvY3RsIGFuZCBzdHJ1Y3QKKzxzdHJ1Y3RuYW1lPnZpZGVvX2F1ZGlvPC9zdHJ1Y3RuYW1lPiBhcmUgdXNlZCB0byBlbnVtZXJhdGUgdGhlCithdWRpbyBpbnB1dHMgb2YgYSBWNEwgZGV2aWNlLiBUaGUgZXF1aXZhbGVudCBWNEwyIGlvY3RscyBhcmUKKyZWSURJT0MtRy1BVURJTzsgYW5kICZWSURJT0MtUy1BVURJTzsgdXNpbmcgJnY0bDItYXVkaW87IGFzCitkaXNjdXNzZWQgaW4gPHhyZWYgbGlua2VuZD0iYXVkaW8iIC8+LjwvcGFyYT4KKworICAgICAgPHBhcmE+VGhlIDxzdHJ1Y3RmaWVsZD5hdWRpbzwvc3RydWN0ZmllbGQ+ICJjaGFubmVsIG51bWJlciIKK2ZpZWxkIGNvdW50aW5nIGF1ZGlvIGlucHV0cyB3YXMgcmVuYW1lZCB0bworPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4uPC9wYXJhPgorCisgICAgICA8cGFyYT5PbiA8Y29uc3RhbnQ+VklESU9DU0FVRElPPC9jb25zdGFudD4gdGhlCis8c3RydWN0ZmllbGQ+bW9kZTwvc3RydWN0ZmllbGQ+IGZpZWxkIHNlbGVjdHMgPGVtcGhhc2lzPm9uZTwvZW1waGFzaXM+CitvZiB0aGUgPGNvbnN0YW50PlZJREVPX1NPVU5EX01PTk88L2NvbnN0YW50PiwKKzxjb25zdGFudD5WSURFT19TT1VORF9TVEVSRU88L2NvbnN0YW50PiwKKzxjb25zdGFudD5WSURFT19TT1VORF9MQU5HMTwvY29uc3RhbnQ+IG9yCis8Y29uc3RhbnQ+VklERU9fU09VTkRfTEFORzI8L2NvbnN0YW50PiBhdWRpbyBkZW1vZHVsYXRpb24gbW9kZXMuIFdoZW4KK3RoZSBjdXJyZW50IGF1ZGlvIHN0YW5kYXJkIGlzIEJUU0MKKzxjb25zdGFudD5WSURFT19TT1VORF9MQU5HMjwvY29uc3RhbnQ+IHJlZmVycyB0byBTQVAgYW5kCis8Y29uc3RhbnQ+VklERU9fU09VTkRfTEFORzE8L2NvbnN0YW50PiBpcyBtZWFuaW5nbGVzcy4gQWxzbwordW5kb2N1bWVudGVkIGluIHRoZSBWNEwgc3BlY2lmaWNhdGlvbiwgdGhlcmUgaXMgbm8gd2F5IHRvIHF1ZXJ5IHRoZQorc2VsZWN0ZWQgbW9kZS4gT24gPGNvbnN0YW50PlZJRElPQ0dBVURJTzwvY29uc3RhbnQ+IHRoZSBkcml2ZXIgcmV0dXJucwordGhlIDxlbXBoYXNpcz5hY3R1YWxseSByZWNlaXZlZDwvZW1waGFzaXM+IGF1ZGlvIHByb2dyYW1tZXMgaW4gdGhpcworZmllbGQuIEluIHRoZSBWNEwyIEFQSSB0aGlzIGluZm9ybWF0aW9uIGlzIHN0b3JlZCBpbiB0aGUgJnY0bDItdHVuZXI7Cis8c3RydWN0ZmllbGQ+cnhzdWJjaGFuczwvc3RydWN0ZmllbGQ+IGFuZAorPHN0cnVjdGZpZWxkPmF1ZG1vZGU8L3N0cnVjdGZpZWxkPiBmaWVsZHMsIHJlc3BlY3RpdmVseS4gU2VlIDx4cmVmCitsaW5rZW5kPSJ0dW5lciIgLz4gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdHVuZXJzLiBSZWxhdGVkIHRvIGF1ZGlvCittb2RlcyAmdjRsMi1hdWRpbzsgYWxzbyByZXBvcnRzIGlmIHRoaXMgaXMgYSBtb25vIG9yIHN0ZXJlbworaW5wdXQsIHJlZ2FyZGxlc3MgaWYgdGhlIHNvdXJjZSBpcyBhIHR1bmVyLjwvcGFyYT4KKworICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBmaWVsZHMgd2hlcmUgcmVwbGFjZWQgYnkgVjRMMiBjb250cm9scworYWNjZXNzaWJsZSB3aXRoIHRoZSAmVklESU9DLVFVRVJZQ1RSTDssICZWSURJT0MtRy1DVFJMOyBhbmQKKyZWSURJT0MtUy1DVFJMOyBpb2N0bHM6PGluZm9ybWFsdGFibGU+CisJICA8dGdyb3VwIGNvbHM9IjIiPgorCSAgICA8dGhlYWQ+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5PnN0cnVjdAorPHN0cnVjdG5hbWU+dmlkZW9fYXVkaW88L3N0cnVjdG5hbWU+PC9lbnRyeT4KKwkJPGVudHJ5PlY0TDIgQ29udHJvbCBJRDwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgIDwvdGhlYWQ+CisJICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5PjxzdHJ1Y3RmaWVsZD52b2x1bWU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJCTxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSURfQVVESU9fVk9MVU1FPC9jb25zdGFudD48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeT48c3RydWN0ZmllbGQ+YmFzczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkJPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9BVURJT19CQVNTPC9jb25zdGFudD48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeT48c3RydWN0ZmllbGQ+dHJlYmxlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCQk8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX0FVRElPX1RSRUJMRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnk+PHN0cnVjdGZpZWxkPmJhbGFuY2U8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJCTxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSURfQVVESU9fQkFMQU5DRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgPC90Ym9keT4KKwkgIDwvdGdyb3VwPgorCTwvaW5mb3JtYWx0YWJsZT48L3BhcmE+CisKKyAgICAgIDxwYXJhPlRvIGRldGVybWluZSB3aGljaCBvZiB0aGVzZSBjb250cm9scyBhcmUgc3VwcG9ydGVkIGJ5IGEKK2RyaXZlciBWNEwgcHJvdmlkZXMgdGhlIDxzdHJ1Y3RmaWVsZD5mbGFnczwvc3RydWN0ZmllbGQ+Cis8Y29uc3RhbnQ+VklERU9fQVVESU9fVk9MVU1FPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VklERU9fQVVESU9fQkFTUzwvY29uc3RhbnQ+LAorPGNvbnN0YW50PlZJREVPX0FVRElPX1RSRUJMRTwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlZJREVPX0FVRElPX0JBTEFOQ0U8L2NvbnN0YW50Pi4gSW4gdGhlIFY0TDIgQVBJIHRoZQorJlZJRElPQy1RVUVSWUNUUkw7IGlvY3RsIHJlcG9ydHMgaWYgdGhlIHJlc3BlY3RpdmUgY29udHJvbCBpcworc3VwcG9ydGVkLiBBY2NvcmRpbmdseSB0aGUgPGNvbnN0YW50PlZJREVPX0FVRElPX01VVEFCTEU8L2NvbnN0YW50PgorYW5kIDxjb25zdGFudD5WSURFT19BVURJT19NVVRFPC9jb25zdGFudD4gZmxhZ3Mgd2hlcmUgcmVwbGFjZWQgYnkgdGhlCitib29sZWFuIDxjb25zdGFudD5WNEwyX0NJRF9BVURJT19NVVRFPC9jb25zdGFudD4gY29udHJvbC48L3BhcmE+CisKKyAgICAgIDxwYXJhPkFsbCBWNEwyIGNvbnRyb2xzIGhhdmUgYSA8c3RydWN0ZmllbGQ+c3RlcDwvc3RydWN0ZmllbGQ+CithdHRyaWJ1dGUgcmVwbGFjaW5nIHRoZSBzdHJ1Y3QgPHN0cnVjdG5hbWU+dmlkZW9fYXVkaW88L3N0cnVjdG5hbWU+Cis8c3RydWN0ZmllbGQ+c3RlcDwvc3RydWN0ZmllbGQ+IGZpZWxkLiBUaGUgVjRMIGF1ZGlvIGNvbnRyb2xzIGFyZQorYXNzdW1lZCB0byByYW5nZSBmcm9tIDAgdG8gNjU1MzUgd2l0aCBubyBwYXJ0aWN1bGFyIHJlc2V0IHZhbHVlLiBUaGUKK1Y0TDIgQVBJIHBlcm1pdHMgYXJiaXRyYXJ5IGxpbWl0cyBhbmQgZGVmYXVsdHMgd2hpY2ggY2FuIGJlIHF1ZXJpZWQKK3dpdGggdGhlICZWSURJT0MtUVVFUllDVFJMOyBpb2N0bC4gRm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQKK2NvbnRyb2xzIHNlZSA8eHJlZiBsaW5rZW5kPSJjb250cm9sIiAvPi48L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+RnJhbWUgQnVmZmVyIE92ZXJsYXk8L3RpdGxlPgorCisgICAgICA8cGFyYT5UaGUgVjRMMiBpb2N0bHMgZXF1aXZhbGVudCB0bworPGNvbnN0YW50PlZJRElPQ0dGQlVGPC9jb25zdGFudD4gYW5kIDxjb25zdGFudD5WSURJT0NTRkJVRjwvY29uc3RhbnQ+CithcmUgJlZJRElPQy1HLUZCVUY7IGFuZCAmVklESU9DLVMtRkJVRjsuIFRoZQorPHN0cnVjdGZpZWxkPmJhc2U8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiBzdHJ1Y3QKKzxzdHJ1Y3RuYW1lPnZpZGVvX2J1ZmZlcjwvc3RydWN0bmFtZT4gcmVtYWluZWQgdW5jaGFuZ2VkLCBleGNlcHQgVjRMMgorZGVmaW5lcyBhIGZsYWcgdG8gaW5kaWNhdGUgbm9uLWRlc3RydWN0aXZlIG92ZXJsYXlzIGluc3RlYWQgb2YgYQorPGNvbnN0YW50Pk5VTEw8L2NvbnN0YW50PiBwb2ludGVyLiBBbGwgb3RoZXIgZmllbGRzIG1vdmVkIGludG8gdGhlCismdjRsMi1waXgtZm9ybWF0OyA8c3RydWN0ZmllbGQ+Zm10PC9zdHJ1Y3RmaWVsZD4gc3Vic3RydWN0dXJlIG9mCismdjRsMi1mcmFtZWJ1ZmZlcjsuIFRoZSA8c3RydWN0ZmllbGQ+ZGVwdGg8L3N0cnVjdGZpZWxkPiBmaWVsZCB3YXMKK3JlcGxhY2VkIGJ5IDxzdHJ1Y3RmaWVsZD5waXhlbGZvcm1hdDwvc3RydWN0ZmllbGQ+LiBTZWUgPHhyZWYKKwkgIGxpbmtlbmQ9InBpeGZtdC1yZ2IiIC8+IGZvciBhIGxpc3Qgb2YgUkdCIGZvcm1hdHMgYW5kIHRoZWlyCityZXNwZWN0aXZlIGNvbG9yIGRlcHRocy48L3BhcmE+CisKKyAgICAgIDxwYXJhPkluc3RlYWQgb2YgdGhlIHNwZWNpYWwgaW9jdGxzCis8Y29uc3RhbnQ+VklESU9DR1dJTjwvY29uc3RhbnQ+IGFuZCA8Y29uc3RhbnQ+VklESU9DU1dJTjwvY29uc3RhbnQ+CitWNEwyIHVzZXMgdGhlIGdlbmVyYWwtcHVycG9zZSBkYXRhIGZvcm1hdCBuZWdvdGlhdGlvbiBpb2N0bHMKKyZWSURJT0MtRy1GTVQ7IGFuZCAmVklESU9DLVMtRk1UOy4gVGhleSB0YWtlIGEgcG9pbnRlciB0byBhCismdjRsMi1mb3JtYXQ7IGFzIGFyZ3VtZW50LiBIZXJlIHRoZSA8c3RydWN0ZmllbGQ+d2luPC9zdHJ1Y3RmaWVsZD4KK21lbWJlciBvZiB0aGUgPHN0cnVjdGZpZWxkPmZtdDwvc3RydWN0ZmllbGQ+IHVuaW9uIGlzIHVzZWQsIGEKKyZ2NGwyLXdpbmRvdzsuPC9wYXJhPgorCisgICAgICA8cGFyYT5UaGUgPHN0cnVjdGZpZWxkPng8L3N0cnVjdGZpZWxkPiwKKzxzdHJ1Y3RmaWVsZD55PC9zdHJ1Y3RmaWVsZD4sIDxzdHJ1Y3RmaWVsZD53aWR0aDwvc3RydWN0ZmllbGQ+IGFuZAorPHN0cnVjdGZpZWxkPmhlaWdodDwvc3RydWN0ZmllbGQ+IGZpZWxkcyBvZiBzdHJ1Y3QKKzxzdHJ1Y3RuYW1lPnZpZGVvX3dpbmRvdzwvc3RydWN0bmFtZT4gbW92ZWQgaW50byAmdjRsMi1yZWN0Oworc3Vic3RydWN0dXJlIDxzdHJ1Y3RmaWVsZD53PC9zdHJ1Y3RmaWVsZD4gb2Ygc3RydWN0Cis8c3RydWN0bmFtZT52NGwyX3dpbmRvdzwvc3RydWN0bmFtZT4uIFRoZQorPHN0cnVjdGZpZWxkPmNocm9tYWtleTwvc3RydWN0ZmllbGQ+LAorPHN0cnVjdGZpZWxkPmNsaXBzPC9zdHJ1Y3RmaWVsZD4sIGFuZAorPHN0cnVjdGZpZWxkPmNsaXBjb3VudDwvc3RydWN0ZmllbGQ+IGZpZWxkcyByZW1haW5lZCB1bmNoYW5nZWQuIFN0cnVjdAorPHN0cnVjdG5hbWU+dmlkZW9fY2xpcDwvc3RydWN0bmFtZT4gd2FzIHJlbmFtZWQgdG8gJnY0bDItY2xpcDssIGFsc28KK2NvbnRhaW5pbmcgYSBzdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9yZWN0PC9zdHJ1Y3RuYW1lPiwgYnV0IHRoZQorc2VtYW50aWNzIGFyZSBzdGlsbCB0aGUgc2FtZS48L3BhcmE+CisKKyAgICAgIDxwYXJhPlRoZSA8Y29uc3RhbnQ+VklERU9fV0lORE9XX0lOVEVSTEFDRTwvY29uc3RhbnQ+IGZsYWcgd2FzCitkcm9wcGVkLiBJbnN0ZWFkIGFwcGxpY2F0aW9ucyBtdXN0IHNldCB0aGUKKzxzdHJ1Y3RmaWVsZD5maWVsZDwvc3RydWN0ZmllbGQ+IGZpZWxkIHRvCis8Y29uc3RhbnQ+VjRMMl9GSUVMRF9BTlk8L2NvbnN0YW50PiBvcgorPGNvbnN0YW50PlY0TDJfRklFTERfSU5URVJMQUNFRDwvY29uc3RhbnQ+LiBUaGUKKzxjb25zdGFudD5WSURFT19XSU5ET1dfQ0hST01BS0VZPC9jb25zdGFudD4gZmxhZyBtb3ZlZCBpbnRvCismdjRsMi1mcmFtZWJ1ZmZlcjssIHVuZGVyIHRoZSBuZXcgbmFtZQorPGNvbnN0YW50PlY0TDJfRkJVRl9GTEFHX0NIUk9NQUtFWTwvY29uc3RhbnQ+LjwvcGFyYT4KKworICAgICAgPHBhcmE+SW4gVjRMLCBzdG9yaW5nIGEgYml0bWFwIHBvaW50ZXIgaW4KKzxzdHJ1Y3RmaWVsZD5jbGlwczwvc3RydWN0ZmllbGQ+IGFuZCBzZXR0aW5nCis8c3RydWN0ZmllbGQ+Y2xpcGNvdW50PC9zdHJ1Y3RmaWVsZD4gdG8KKzxjb25zdGFudD5WSURFT19DTElQX0JJVE1BUDwvY29uc3RhbnQ+ICgtMSkgcmVxdWVzdHMgYml0bWFwCitjbGlwcGluZywgdXNpbmcgYSBmaXhlZCBzaXplIGJpdG1hcCBvZiAxMDI0ICZ0aW1lczsgNjI1IGJpdHMuIFN0cnVjdAorPHN0cnVjdG5hbWU+djRsMl93aW5kb3c8L3N0cnVjdG5hbWU+IGhhcyBhIHNlcGFyYXRlCis8c3RydWN0ZmllbGQ+Yml0bWFwPC9zdHJ1Y3RmaWVsZD4gcG9pbnRlciBmaWVsZCBmb3IgdGhpcyBwdXJwb3NlIGFuZAordGhlIGJpdG1hcCBzaXplIGlzIGRldGVybWluZWQgYnkgPHN0cnVjdGZpZWxkPncud2lkdGg8L3N0cnVjdGZpZWxkPiBhbmQKKzxzdHJ1Y3RmaWVsZD53LmhlaWdodDwvc3RydWN0ZmllbGQ+LjwvcGFyYT4KKworICAgICAgPHBhcmE+VGhlIDxjb25zdGFudD5WSURJT0NDQVBUVVJFPC9jb25zdGFudD4gaW9jdGwgdG8gZW5hYmxlIG9yCitkaXNhYmxlIG92ZXJsYXkgd2FzIHJlbmFtZWQgdG8gJlZJRElPQy1PVkVSTEFZOy48L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+Q3JvcHBpbmc8L3RpdGxlPgorCisgICAgICA8cGFyYT5UbyBjYXB0dXJlIG9ubHkgYSBzdWJzZWN0aW9uIG9mIHRoZSBmdWxsIHBpY3R1cmUgVjRMCitkZWZpbmVzIHRoZSA8Y29uc3RhbnQ+VklESU9DR0NBUFRVUkU8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WSURJT0NTQ0FQVFVSRTwvY29uc3RhbnQ+IGlvY3RscyB1c2luZyBzdHJ1Y3QKKzxzdHJ1Y3RuYW1lPnZpZGVvX2NhcHR1cmU8L3N0cnVjdG5hbWU+LiBUaGUgZXF1aXZhbGVudCBWNEwyIGlvY3RscyBhcmUKKyZWSURJT0MtRy1DUk9QOyBhbmQgJlZJRElPQy1TLUNST1A7IHVzaW5nICZ2NGwyLWNyb3A7LCBhbmQgdGhlIHJlbGF0ZWQKKyZWSURJT0MtQ1JPUENBUDsgaW9jdGwuIFRoaXMgaXMgYSByYXRoZXIgY29tcGxleCBtYXR0ZXIsIHNlZQorPHhyZWYgbGlua2VuZD0iY3JvcCIgLz4gZm9yIGRldGFpbHMuPC9wYXJhPgorCisgICAgICA8cGFyYT5UaGUgPHN0cnVjdGZpZWxkPng8L3N0cnVjdGZpZWxkPiwKKzxzdHJ1Y3RmaWVsZD55PC9zdHJ1Y3RmaWVsZD4sIDxzdHJ1Y3RmaWVsZD53aWR0aDwvc3RydWN0ZmllbGQ+IGFuZAorPHN0cnVjdGZpZWxkPmhlaWdodDwvc3RydWN0ZmllbGQ+IGZpZWxkcyBtb3ZlZCBpbnRvICZ2NGwyLXJlY3Q7CitzdWJzdHJ1Y3R1cmUgPHN0cnVjdGZpZWxkPmM8L3N0cnVjdGZpZWxkPiBvZiBzdHJ1Y3QKKzxzdHJ1Y3RuYW1lPnY0bDJfY3JvcDwvc3RydWN0bmFtZT4uIFRoZQorPHN0cnVjdGZpZWxkPmRlY2ltYXRpb248L3N0cnVjdGZpZWxkPiBmaWVsZCB3YXMgZHJvcHBlZC4gSW4gdGhlIFY0TDIKK0FQSSB0aGUgc2NhbGluZyBmYWN0b3IgaXMgaW1wbGllZCBieSB0aGUgc2l6ZSBvZiB0aGUgY3JvcHBpbmcKK3JlY3RhbmdsZSBhbmQgdGhlIHNpemUgb2YgdGhlIGNhcHR1cmVkIG9yIG92ZXJsYWlkIGltYWdlLjwvcGFyYT4KKworICAgICAgPHBhcmE+VGhlIDxjb25zdGFudD5WSURFT19DQVBUVVJFX09ERDwvY29uc3RhbnQ+CithbmQgPGNvbnN0YW50PlZJREVPX0NBUFRVUkVfRVZFTjwvY29uc3RhbnQ+IGZsYWdzIHRvIGNhcHR1cmUgb25seSB0aGUKK29kZCBvciBldmVuIGZpZWxkLCByZXNwZWN0aXZlbHksIHdlcmUgcmVwbGFjZWQgYnkKKzxjb25zdGFudD5WNEwyX0ZJRUxEX1RPUDwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlY0TDJfRklFTERfQk9UVE9NPC9jb25zdGFudD4gaW4gdGhlIGZpZWxkIG5hbWVkCis8c3RydWN0ZmllbGQ+ZmllbGQ8L3N0cnVjdGZpZWxkPiBvZiAmdjRsMi1waXgtZm9ybWF0OyBhbmQKKyZ2NGwyLXdpbmRvdzsuIFRoZXNlIHN0cnVjdHVyZXMgYXJlIHVzZWQgdG8gc2VsZWN0IGEgY2FwdHVyZSBvcgorb3ZlcmxheSBmb3JtYXQgd2l0aCB0aGUgJlZJRElPQy1TLUZNVDsgaW9jdGwuPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlJlYWRpbmcgSW1hZ2VzLCBNZW1vcnkgTWFwcGluZzwvdGl0bGU+CisKKyAgICAgIDxzZWN0aW9uPgorCTx0aXRsZT5DYXB0dXJpbmcgdXNpbmcgdGhlIHJlYWQgbWV0aG9kPC90aXRsZT4KKworCTxwYXJhPlRoZXJlIGlzIG5vIGVzc2VudGlhbCBkaWZmZXJlbmNlIGJldHdlZW4gcmVhZGluZyBpbWFnZXMKK2Zyb20gYSBWNEwgb3IgVjRMMiBkZXZpY2UgdXNpbmcgdGhlICZmdW5jLXJlYWQ7IGZ1bmN0aW9uLCBob3dldmVyIFY0TDIKK2RyaXZlcnMgYXJlIG5vdCByZXF1aXJlZCB0byBzdXBwb3J0IHRoaXMgSS9PIG1ldGhvZC4gQXBwbGljYXRpb25zIGNhbgorZGV0ZXJtaW5lIGlmIHRoZSBmdW5jdGlvbiBpcyBhdmFpbGFibGUgd2l0aCB0aGUgJlZJRElPQy1RVUVSWUNBUDsKK2lvY3RsLiBBbGwgVjRMMiBkZXZpY2VzIGV4Y2hhbmdpbmcgZGF0YSB3aXRoIGFwcGxpY2F0aW9ucyBtdXN0IHN1cHBvcnQKK3RoZSAmZnVuYy1zZWxlY3Q7IGFuZCAmZnVuYy1wb2xsOyBmdW5jdGlvbnMuPC9wYXJhPgorCisJPHBhcmE+VG8gc2VsZWN0IGFuIGltYWdlIGZvcm1hdCBhbmQgc2l6ZSwgVjRMIHByb3ZpZGVzIHRoZQorPGNvbnN0YW50PlZJRElPQ1NQSUNUPC9jb25zdGFudD4gYW5kIDxjb25zdGFudD5WSURJT0NTV0lOPC9jb25zdGFudD4KK2lvY3Rscy4gVjRMMiB1c2VzIHRoZSBnZW5lcmFsLXB1cnBvc2UgZGF0YSBmb3JtYXQgbmVnb3RpYXRpb24gaW9jdGxzCismVklESU9DLUctRk1UOyBhbmQgJlZJRElPQy1TLUZNVDsuIFRoZXkgdGFrZSBhIHBvaW50ZXIgdG8gYQorJnY0bDItZm9ybWF0OyBhcyBhcmd1bWVudCwgaGVyZSB0aGUgJnY0bDItcGl4LWZvcm1hdDsgbmFtZWQKKzxzdHJ1Y3RmaWVsZD5waXg8L3N0cnVjdGZpZWxkPiBvZiBpdHMgPHN0cnVjdGZpZWxkPmZtdDwvc3RydWN0ZmllbGQ+Cit1bmlvbiBpcyB1c2VkLjwvcGFyYT4KKworCTxwYXJhPkZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBWNEwyIHJlYWQgaW50ZXJmYWNlIHNlZQorPHhyZWYgbGlua2VuZD0icnciIC8+LjwvcGFyYT4KKyAgICAgIDwvc2VjdGlvbj4KKyAgICAgIDxzZWN0aW9uPgorCTx0aXRsZT5DYXB0dXJpbmcgdXNpbmcgbWVtb3J5IG1hcHBpbmc8L3RpdGxlPgorCisJPHBhcmE+QXBwbGljYXRpb25zIGNhbiByZWFkIGZyb20gVjRMIGRldmljZXMgYnkgbWFwcGluZworYnVmZmVycyBpbiBkZXZpY2UgbWVtb3J5LCBvciBtb3JlIG9mdGVuIGp1c3QgYnVmZmVycyBhbGxvY2F0ZWQgaW4KK0RNQS1hYmxlIHN5c3RlbSBtZW1vcnksIGludG8gdGhlaXIgYWRkcmVzcyBzcGFjZS4gVGhpcyBhdm9pZHMgdGhlIGRhdGEKK2NvcHlpbmcgb3ZlcmhlYWQgb2YgdGhlIHJlYWQgbWV0aG9kLiBWNEwyIHN1cHBvcnRzIG1lbW9yeSBtYXBwaW5nIGFzCit3ZWxsLCB3aXRoIGEgZmV3IGRpZmZlcmVuY2VzLjwvcGFyYT4KKworCTxpbmZvcm1hbHRhYmxlPgorCSAgPHRncm91cCBjb2xzPSIyIj4KKwkgICAgPHRoZWFkPgorCSAgICAgIDxyb3c+CisJCTxlbnRyeT5WNEw8L2VudHJ5PgorCQk8ZW50cnk+VjRMMjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgIDwvdGhlYWQ+CisJICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5PjwvZW50cnk+CisJCTxlbnRyeT5UaGUgaW1hZ2UgZm9ybWF0IG11c3QgYmUgc2VsZWN0ZWQgYmVmb3JlCitidWZmZXJzIGFyZSBhbGxvY2F0ZWQsIHdpdGggdGhlICZWSURJT0MtUy1GTVQ7IGlvY3RsLiBXaGVuIG5vIGZvcm1hdAoraXMgc2VsZWN0ZWQgdGhlIGRyaXZlciBtYXkgdXNlIHRoZSBsYXN0LCBwb3NzaWJseSBieSBhbm90aGVyCithcHBsaWNhdGlvbiByZXF1ZXN0ZWQgZm9ybWF0LjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5PjxwYXJhPkFwcGxpY2F0aW9ucyBjYW5ub3QgY2hhbmdlIHRoZSBudW1iZXIgb2YKK2J1ZmZlcnMuIFRoZSBpdCBpcyBidWlsdCBpbnRvIHRoZSBkcml2ZXIsIHVubGVzcyBpdCBoYXMgYSBtb2R1bGUKK29wdGlvbiB0byBjaGFuZ2UgdGhlIG51bWJlciB3aGVuIHRoZSBkcml2ZXIgbW9kdWxlIGlzCitsb2FkZWQuPC9wYXJhPjwvZW50cnk+CisJCTxlbnRyeT48cGFyYT5UaGUgJlZJRElPQy1SRVFCVUZTOyBpb2N0bCBhbGxvY2F0ZXMgdGhlCitkZXNpcmVkIG51bWJlciBvZiBidWZmZXJzLCB0aGlzIGlzIGEgcmVxdWlyZWQgc3RlcCBpbiB0aGUgaW5pdGlhbGl6YXRpb24KK3NlcXVlbmNlLjwvcGFyYT48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeT48cGFyYT5Ecml2ZXJzIG1hcCBhbGwgYnVmZmVycyBhcyBvbmUgY29udGlndW91cworcmFuZ2Ugb2YgbWVtb3J5LiBUaGUgPGNvbnN0YW50PlZJRElPQ0dNQlVGPC9jb25zdGFudD4gaW9jdGwgaXMKK2F2YWlsYWJsZSB0byBxdWVyeSB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMsIHRoZSBvZmZzZXQgb2YgZWFjaCBidWZmZXIKK2Zyb20gdGhlIHN0YXJ0IG9mIHRoZSB2aXJ0dWFsIGZpbGUsIGFuZCB0aGUgb3ZlcmFsbCBhbW91bnQgb2YgbWVtb3J5Cit1c2VkLCB3aGljaCBjYW4gYmUgdXNlZCBhcyBhcmd1bWVudHMgZm9yIHRoZSAmZnVuYy1tbWFwOworZnVuY3Rpb24uPC9wYXJhPjwvZW50cnk+CisJCTxlbnRyeT48cGFyYT5CdWZmZXJzIGFyZSBpbmRpdmlkdWFsbHkgbWFwcGVkLiBUaGUKK29mZnNldCBhbmQgc2l6ZSBvZiBlYWNoIGJ1ZmZlciBjYW4gYmUgZGV0ZXJtaW5lZCB3aXRoIHRoZQorJlZJRElPQy1RVUVSWUJVRjsgaW9jdGwuPC9wYXJhPjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5PjxwYXJhPlRoZSA8Y29uc3RhbnQ+VklESU9DTUNBUFRVUkU8L2NvbnN0YW50PgoraW9jdGwgcHJlcGFyZXMgYSBidWZmZXIgZm9yIGNhcHR1cmluZy4gSXQgYWxzbyBkZXRlcm1pbmVzIHRoZSBpbWFnZQorZm9ybWF0IGZvciB0aGlzIGJ1ZmZlci4gVGhlIGlvY3RsIHJldHVybnMgaW1tZWRpYXRlbHksIGV2ZW50dWFsbHkgd2l0aAorYW4gJkVBR0FJTjsgaWYgbm8gdmlkZW8gc2lnbmFsIGhhZCBiZWVuIGRldGVjdGVkLiBXaGVuIHRoZSBkcml2ZXIKK3N1cHBvcnRzIG1vcmUgdGhhbiBvbmUgYnVmZmVyIGFwcGxpY2F0aW9ucyBjYW4gY2FsbCB0aGUgaW9jdGwgbXVsdGlwbGUKK3RpbWVzIGFuZCB0aHVzIGhhdmUgbXVsdGlwbGUgb3V0c3RhbmRpbmcgY2FwdHVyZQorcmVxdWVzdHMuPC9wYXJhPjxwYXJhPlRoZSA8Y29uc3RhbnQ+VklESU9DU1lOQzwvY29uc3RhbnQ+IGlvY3RsCitzdXNwZW5kcyBleGVjdXRpb24gdW50aWwgYSBwYXJ0aWN1bGFyIGJ1ZmZlciBoYXMgYmVlbgorZmlsbGVkLjwvcGFyYT48L2VudHJ5PgorCQk8ZW50cnk+PHBhcmE+RHJpdmVycyBtYWludGFpbiBhbiBpbmNvbWluZyBhbmQgb3V0Z29pbmcKK3F1ZXVlLiAmVklESU9DLVFCVUY7IGVucXVldWVzIGFueSBlbXB0eSBidWZmZXIgaW50byB0aGUgaW5jb21pbmcKK3F1ZXVlLiBGaWxsZWQgYnVmZmVycyBhcmUgZGVxdWV1ZWQgZnJvbSB0aGUgb3V0Z29pbmcgcXVldWUgd2l0aCB0aGUKKyZWSURJT0MtRFFCVUY7IGlvY3RsLiBUbyB3YWl0IHVudGlsIGZpbGxlZCBidWZmZXJzIGJlY29tZSBhdmFpbGFibGUgdGhpcworZnVuY3Rpb24sICZmdW5jLXNlbGVjdDsgb3IgJmZ1bmMtcG9sbDsgY2FuIGJlIHVzZWQuIFRoZQorJlZJRElPQy1TVFJFQU1PTjsgaW9jdGwgbXVzdCBiZSBjYWxsZWQgb25jZSBhZnRlciBlbnF1ZXVpbmcgb25lIG9yCittb3JlIGJ1ZmZlcnMgdG8gc3RhcnQgY2FwdHVyaW5nLiBJdHMgY291bnRlcnBhcnQKKyZWSURJT0MtU1RSRUFNT0ZGOyBzdG9wcyBjYXB0dXJpbmcgYW5kIGRlcXVldWVzIGFsbCBidWZmZXJzIGZyb20gYm90aAorcXVldWVzLiBBcHBsaWNhdGlvbnMgY2FuIHF1ZXJ5IHRoZSBzaWduYWwgc3RhdHVzLCBpZiBrbm93biwgd2l0aCB0aGUKKyZWSURJT0MtRU5VTUlOUFVUOyBpb2N0bC48L3BhcmE+PC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgPC90Ym9keT4KKwkgIDwvdGdyb3VwPgorCTwvaW5mb3JtYWx0YWJsZT4KKworCTxwYXJhPkZvciBhIG1vcmUgaW4tZGVwdGggZGlzY3Vzc2lvbiBvZiBtZW1vcnkgbWFwcGluZyBhbmQKK2V4YW1wbGVzLCBzZWUgPHhyZWYgbGlua2VuZD0ibW1hcCIgLz4uPC9wYXJhPgorICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlJlYWRpbmcgUmF3IFZCSSBEYXRhPC90aXRsZT4KKworICAgICAgPHBhcmE+T3JpZ2luYWxseSB0aGUgVjRMIEFQSSBkaWQgbm90IHNwZWNpZnkgYSByYXcgVkJJIGNhcHR1cmUKK2ludGVyZmFjZSwgb25seSB0aGUgZGV2aWNlIGZpbGUgPGZpbGVuYW1lPi9kZXYvdmJpPC9maWxlbmFtZT4gd2FzCityZXNlcnZlZCBmb3IgdGhpcyBwdXJwb3NlLiBUaGUgb25seSBkcml2ZXIgc3VwcG9ydGluZyB0aGlzIGludGVyZmFjZQord2FzIHRoZSBCVFRWIGRyaXZlciwgZGUtZmFjdG8gZGVmaW5pbmcgdGhlIFY0TCBWQkkgaW50ZXJmYWNlLiBSZWFkaW5nCitmcm9tIHRoZSBkZXZpY2UgeWllbGRzIGEgcmF3IFZCSSBpbWFnZSB3aXRoIHRoZSBmb2xsb3dpbmcKK3BhcmFtZXRlcnM6PGluZm9ybWFsdGFibGU+CisJICAgIDx0Z3JvdXAgY29scz0iMiI+CisJICAgICAgPHRoZWFkPgorCQk8cm93PgorCQkgIDxlbnRyeT4mdjRsMi12YmktZm9ybWF0OzwvZW50cnk+CisJCSAgPGVudHJ5PlY0TCwgQlRUViBkcml2ZXI8L2VudHJ5PgorCQk8L3Jvdz4KKwkgICAgICA8L3RoZWFkPgorCSAgICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCTxyb3c+CisJCSAgPGVudHJ5PnNhbXBsaW5nX3JhdGU8L2VudHJ5PgorCQkgIDxlbnRyeT4yODYzNjM2MyZuYnNwO0h6IE5UU0MgKG9yIGFueSBvdGhlciA1MjUtbGluZQorc3RhbmRhcmQpOyAzNTQ2ODk1MCZuYnNwO0h6IFBBTCBhbmQgU0VDQU0gKDYyNS1saW5lIHN0YW5kYXJkcyk8L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+b2Zmc2V0PC9lbnRyeT4KKwkJICA8ZW50cnk+PzwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT5zYW1wbGVzX3Blcl9saW5lPC9lbnRyeT4KKwkJICA8ZW50cnk+MjA0ODwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT5zYW1wbGVfZm9ybWF0PC9lbnRyeT4KKwkJICA8ZW50cnk+VjRMMl9QSVhfRk1UX0dSRVkuIFRoZSBsYXN0IGZvdXIgYnl0ZXMgKGEKK21hY2hpbmUgZW5kaWFubmVzcyBpbnRlZ2VyKSBjb250YWluIGEgZnJhbWUgY291bnRlci48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+c3RhcnRbXTwvZW50cnk+CisJCSAgPGVudHJ5PjEwLCAyNzMgTlRTQzsgMjIsIDMzNSBQQUwgYW5kIFNFQ0FNPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5PmNvdW50W108L2VudHJ5PgorCQkgIDxlbnRyeT48cGFyYT4xNiwgMTY8Zm9vdG5vdGU+PHBhcmE+T2xkIGRyaXZlcgordmVyc2lvbnMgdXNlZCBkaWZmZXJlbnQgdmFsdWVzLCBldmVudHVhbGx5IHRoZSBjdXN0b20KKzxjb25zdGFudD5CVFRWX1ZCSVNJWkU8L2NvbnN0YW50PiBpb2N0bCB3YXMgYWRkZWQgdG8gcXVlcnkgdGhlCitjb3JyZWN0IHZhbHVlcy48L3BhcmE+PC9mb290bm90ZT48L3BhcmE+PC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5PmZsYWdzPC9lbnRyeT4KKwkJICA8ZW50cnk+MDwvZW50cnk+CisJCTwvcm93PgorCSAgICAgIDwvdGJvZHk+CisJICAgIDwvdGdyb3VwPgorCTwvaW5mb3JtYWx0YWJsZT48L3BhcmE+CisKKyAgICAgIDxwYXJhPlVuZG9jdW1lbnRlZCBpbiB0aGUgVjRMIHNwZWNpZmljYXRpb24sIGluIExpbnV4IDIuMyB0aGUKKzxjb25zdGFudD5WSURJT0NHVkJJRk1UPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VklESU9DU1ZCSUZNVDwvY29uc3RhbnQ+IGlvY3RscyB1c2luZyBzdHJ1Y3QKKzxzdHJ1Y3RuYW1lPnZiaV9mb3JtYXQ8L3N0cnVjdG5hbWU+IHdlcmUgYWRkZWQgdG8gZGV0ZXJtaW5lIHRoZSBWQkkKK2ltYWdlIHBhcmFtZXRlcnMuIFRoZXNlIGlvY3RscyBhcmUgb25seSBwYXJ0aWFsbHkgY29tcGF0aWJsZSB3aXRoIHRoZQorVjRMMiBWQkkgaW50ZXJmYWNlIHNwZWNpZmllZCBpbiA8eHJlZiBsaW5rZW5kPSJyYXctdmJpIiAvPi48L3BhcmE+CisKKyAgICAgIDxwYXJhPkFuIDxzdHJ1Y3RmaWVsZD5vZmZzZXQ8L3N0cnVjdGZpZWxkPiBmaWVsZCBkb2VzIG5vdAorZXhpc3QsIDxzdHJ1Y3RmaWVsZD5zYW1wbGVfZm9ybWF0PC9zdHJ1Y3RmaWVsZD4gaXMgc3VwcG9zZWQgdG8gYmUKKzxjb25zdGFudD5WSURFT19QQUxFVFRFX1JBVzwvY29uc3RhbnQ+LCBlcXVpdmFsZW50IHRvCis8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0dSRVk8L2NvbnN0YW50Pi4gVGhlIHJlbWFpbmluZyBmaWVsZHMgYXJlCitwcm9iYWJseSBlcXVpdmFsZW50IHRvICZ2NGwyLXZiaS1mb3JtYXQ7LjwvcGFyYT4KKworICAgICAgPHBhcmE+QXBwYXJlbnRseSBvbmx5IHRoZSBab3JhbiAoWlIgMzYxMjApIGRyaXZlciBpbXBsZW1lbnRzCit0aGVzZSBpb2N0bHMuIFRoZSBzZW1hbnRpY3MgZGlmZmVyIGZyb20gdGhvc2Ugc3BlY2lmaWVkIGZvciBWNEwyIGluIHR3bword2F5cy4gVGhlIHBhcmFtZXRlcnMgYXJlIHJlc2V0IG9uICZmdW5jLW9wZW47IGFuZAorPGNvbnN0YW50PlZJRElPQ1NWQklGTVQ8L2NvbnN0YW50PiBhbHdheXMgcmV0dXJucyBhbiAmRUlOVkFMOyBpZiB0aGUKK3BhcmFtZXRlcnMgYXJlIGludmFsaWQuPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPk1pc2NlbGxhbmVvdXM8L3RpdGxlPgorCisgICAgICA8cGFyYT5WNEwyIGhhcyBubyBlcXVpdmFsZW50IG9mIHRoZQorPGNvbnN0YW50PlZJRElPQ0dVTklUPC9jb25zdGFudD4gaW9jdGwuIEFwcGxpY2F0aW9ucyBjYW4gZmluZCB0aGUgVkJJCitkZXZpY2UgYXNzb2NpYXRlZCB3aXRoIGEgdmlkZW8gY2FwdHVyZSBkZXZpY2UgKG9yIHZpY2UgdmVyc2EpIGJ5CityZW9wZW5pbmcgdGhlIGRldmljZSBhbmQgcmVxdWVzdGluZyBWQkkgZGF0YS4gRm9yIGRldGFpbHMgc2VlCis8eHJlZiBsaW5rZW5kPSJvcGVuIiAvPi48L3BhcmE+CisKKyAgICAgIDxwYXJhPk5vIHJlcGxhY2VtZW50IGV4aXN0cyBmb3IgPGNvbnN0YW50PlZJRElPQ0tFWTwvY29uc3RhbnQ+LAorYW5kIHRoZSBWNEwgZnVuY3Rpb25zIGZvciBtaWNyb2NvZGUgcHJvZ3JhbW1pbmcuIEEgbmV3IGludGVyZmFjZSBmb3IKK01QRUcgY29tcHJlc3Npb24gYW5kIHBsYXliYWNrIGRldmljZXMgaXMgZG9jdW1lbnRlZCBpbiA8eHJlZgorCSAgbGlua2VuZD0iZXh0ZW5kZWQtY29udHJvbHMiIC8+LjwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uIGlkPSJoaXN0LXY0bDIiPgorICAgIDx0aXRsZT5DaGFuZ2VzIG9mIHRoZSBWNEwyIEFQSTwvdGl0bGU+CisKKyAgICA8cGFyYT5Tb29uIGFmdGVyIHRoZSBWNEwgQVBJIHdhcyBhZGRlZCB0byB0aGUga2VybmVsIGl0IHdhcworY3JpdGljaXNlZCBhcyB0b28gaW5mbGV4aWJsZS4gSW4gQXVndXN0IDE5OTggQmlsbCBEaXJrcyBwcm9wb3NlZCBhCitudW1iZXIgb2YgaW1wcm92ZW1lbnRzIGFuZCBiZWdhbiB0byB3b3JrIG9uIGRvY3VtZW50YXRpb24sIGV4YW1wbGUKK2RyaXZlcnMgYW5kIGFwcGxpY2F0aW9ucy4gV2l0aCB0aGUgaGVscCBvZiBvdGhlciB2b2x1bnRlZXJzIHRoaXMKK2V2ZW50dWFsbHkgYmVjYW1lIHRoZSBWNEwyIEFQSSwgbm90IGp1c3QgYW4gZXh0ZW5zaW9uIGJ1dCBhCityZXBsYWNlbWVudCBmb3IgdGhlIFY0TCBBUEkuIEhvd2V2ZXIgaXQgdG9vayBhbm90aGVyIGZvdXIgeWVhcnMgYW5kCit0d28gc3RhYmxlIGtlcm5lbCByZWxlYXNlcyB1bnRpbCB0aGUgbmV3IEFQSSB3YXMgZmluYWxseSBhY2NlcHRlZCBmb3IKK2luY2x1c2lvbiBpbnRvIHRoZSBrZXJuZWwgaW4gaXRzIHByZXNlbnQgZm9ybS48L3BhcmE+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5FYXJseSBWZXJzaW9uczwvdGl0bGU+CisgICAgICA8cGFyYT4xOTk4LTA4LTIwOiBGaXJzdCB2ZXJzaW9uLjwvcGFyYT4KKworICAgICAgPHBhcmE+MTk5OC0wOC0yNzogVGhlICZmdW5jLXNlbGVjdDsgZnVuY3Rpb24gd2FzIGludHJvZHVjZWQuPC9wYXJhPgorCisgICAgICA8cGFyYT4xOTk4LTA5LTEwOiBOZXcgdmlkZW8gc3RhbmRhcmQgaW50ZXJmYWNlLjwvcGFyYT4KKworICAgICAgPHBhcmE+MTk5OC0wOS0xODogVGhlIDxjb25zdGFudD5WSURJT0NfTk9OQ0FQPC9jb25zdGFudD4gaW9jdGwKK3dhcyByZXBsYWNlZCBieSB0aGUgb3RoZXJ3aXNlIG1lYW5pbmdsZXNzIDxjb25zdGFudD5PX1RSVU5DPC9jb25zdGFudD4KKyZmdW5jLW9wZW47IGZsYWcsIGFuZCB0aGUgYWxpYXNlcyA8Y29uc3RhbnQ+T19OT05DQVA8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5PX05PSU88L2NvbnN0YW50PiB3ZXJlIGRlZmluZWQuIEFwcGxpY2F0aW9ucyBjYW4gc2V0IHRoaXMKK2ZsYWcgaWYgdGhleSBpbnRlbmQgdG8gYWNjZXNzIGNvbnRyb2xzIG9ubHksIGFzIG9wcG9zZWQgdG8gY2FwdHVyZQorYXBwbGljYXRpb25zIHdoaWNoIG5lZWQgZXhjbHVzaXZlIGFjY2Vzcy4gVGhlCis8Y29uc3RhbnQ+VklERU9fU1REX1hYWDwvY29uc3RhbnQ+IGlkZW50aWZpZXJzIGFyZSBub3cgb3JkaW5hbHMKK2luc3RlYWQgb2YgZmxhZ3MsIGFuZCB0aGUgPGZ1bmN0aW9uPnZpZGVvX3N0ZF9jb25zdHJ1Y3QoKTwvZnVuY3Rpb24+CitoZWxwZXIgZnVuY3Rpb24gdGFrZXMgaWQgYW5kIHRyYW5zbWlzc2lvbiBhcmd1bWVudHMuPC9wYXJhPgorCisgICAgICA8cGFyYT4xOTk4LTA5LTI4OiBSZXZhbXBlZCB2aWRlbyBzdGFuZGFyZC4gTWFkZSB2aWRlbyBjb250cm9scworaW5kaXZpZHVhbGx5IGVudW1lcmFibGUuPC9wYXJhPgorCisgICAgICA8cGFyYT4xOTk4LTEwLTAyOiBUaGUgPHN0cnVjdGZpZWxkPmlkPC9zdHJ1Y3RmaWVsZD4gZmllbGQgd2FzCityZW1vdmVkIGZyb20gc3RydWN0IDxzdHJ1Y3RuYW1lPnZpZGVvX3N0YW5kYXJkPC9zdHJ1Y3RuYW1lPiBhbmQgdGhlCitjb2xvciBzdWJjYXJyaWVyIGZpZWxkcyB3ZXJlIHJlbmFtZWQuIFRoZSAmVklESU9DLVFVRVJZU1REOyBpb2N0bCB3YXMKK3JlbmFtZWQgdG8gJlZJRElPQy1FTlVNU1REOywgJlZJRElPQy1HLUlOUFVUOyB0byAmVklESU9DLUVOVU1JTlBVVDsuIEEKK2ZpcnN0IGRyYWZ0IG9mIHRoZSBDb2RlYyBBUEkgd2FzIHJlbGVhc2VkLjwvcGFyYT4KKworICAgICAgPHBhcmE+MTk5OC0xMS0wODogTWFueSBtaW5vciBjaGFuZ2VzLiBNb3N0IHN5bWJvbHMgaGF2ZSBiZWVuCityZW5hbWVkLiBTb21lIG1hdGVyaWFsIGNoYW5nZXMgdG8gJnY0bDItY2FwYWJpbGl0eTsuPC9wYXJhPgorCisgICAgICA8cGFyYT4xOTk4LTExLTEyOiBUaGUgcmVhZC93cml0ZSBkaXJlY3RvbiBvZiBzb21lIGlvY3RscyB3YXMgbWlzZGVmaW5lZC48L3BhcmE+CisKKyAgICAgIDxwYXJhPjE5OTgtMTEtMTQ6IDxjb25zdGFudD5WNEwyX1BJWF9GTVRfUkdCMjQ8L2NvbnN0YW50PgorY2hhbmdlZCB0byA8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0JHUjI0PC9jb25zdGFudD4sIGFuZAorPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9SR0IzMjwvY29uc3RhbnQ+IGNoYW5nZWQgdG8KKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfQkdSMzI8L2NvbnN0YW50Pi4gQXVkaW8gY29udHJvbHMgYXJlIG5vdworYWNjZXNzaWJsZSB3aXRoIHRoZSAmVklESU9DLUctQ1RSTDsgYW5kICZWSURJT0MtUy1DVFJMOyBpb2N0bHMgdW5kZXIKK25hbWVzIHN0YXJ0aW5nIHdpdGggPGNvbnN0YW50PlY0TDJfQ0lEX0FVRElPPC9jb25zdGFudD4uIFRoZQorPGNvbnN0YW50PlY0TDJfTUFKT1I8L2NvbnN0YW50PiBkZWZpbmUgd2FzIHJlbW92ZWQgZnJvbQorPGZpbGVuYW1lPnZpZGVvZGV2Lmg8L2ZpbGVuYW1lPiBzaW5jZSBpdCB3YXMgb25seSB1c2VkIG9uY2UgaW4gdGhlCis8ZmlsZW5hbWU+dmlkZW9kZXY8L2ZpbGVuYW1lPiBrZXJuZWwgbW9kdWxlLiBUaGUKKzxjb25zdGFudD5ZVVY0MjI8L2NvbnN0YW50PiBhbmQgPGNvbnN0YW50PllVVjQxMTwvY29uc3RhbnQ+IHBsYW5hcgoraW1hZ2UgZm9ybWF0cyB3ZXJlIGFkZGVkLjwvcGFyYT4KKworICAgICAgPHBhcmE+MTk5OC0xMS0yODogQSBmZXcgaW9jdGwgc3ltYm9scyBjaGFuZ2VkLiBJbnRlcmZhY2VzIGZvciBjb2RlY3MgYW5kCit2aWRlbyBvdXRwdXQgZGV2aWNlcyB3ZXJlIGFkZGVkLjwvcGFyYT4KKworICAgICAgPHBhcmE+MTk5OS0wMS0xNDogQSByYXcgVkJJIGNhcHR1cmUgaW50ZXJmYWNlIHdhcyBhZGRlZC48L3BhcmE+CisKKyAgICAgIDxwYXJhPjE5OTktMDEtMTk6IFRoZSA8Y29uc3RhbnQ+VklESU9DX05FWFRCVUY8L2NvbnN0YW50PiBpb2N0bAorICAgICAgd2FzIHJlbW92ZWQuPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgVmVyc2lvbiAwLjE2IDE5OTktMDEtMzE8L3RpdGxlPgorICAgICAgPHBhcmE+MTk5OS0wMS0yNzogVGhlcmUgaXMgbm93IG9uZSBRQlVGIGlvY3RsLCBWSURJT0NfUVdCVUYgYW5kIFZJRElPQ19RUkJVRgorYXJlIGdvbmUuIFZJRElPQ19RQlVGIHRha2VzIGEgdjRsMl9idWZmZXIgYXMgYSBwYXJhbWV0ZXIuIEFkZGVkCitkaWdpdGFsIHpvb20gKGNyb3BwaW5nKSBjb250cm9scy48L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPCEtLSBXaGVyZSdzIDAuMTc/IG1ocyBjb3VsZG4ndCBmaW5kIHRoYXQgdmlkZW9kZXYuaCwgcGVyaGFwcyBCaWxsCisJIGZvcmdvdCB0byBidW1wIHRoZSB2ZXJzaW9uIG51bWJlciBvciBuZXZlciByZWxlYXNlZCBpdC4gLS0+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5WNEwyIFZlcnNpb24gMC4xOCAxOTk5LTAzLTE2PC90aXRsZT4KKyAgICAgIDxwYXJhPkFkZGVkIGEgdjRsIHRvIFY0TDIgaW9jdGwgY29tcGF0aWJpbGl0eSBsYXllciB0bwordmlkZW9kZXYuYy4gRHJpdmVyIHdyaXRlcnMsIHRoaXMgY2hhbmdlcyBob3cgeW91IGltcGxlbWVudCB5b3VyIGlvY3RsCitoYW5kbGVyLiBTZWUgdGhlIERyaXZlciBXcml0ZXIncyBHdWlkZS4gQWRkZWQgc29tZSBtb3JlIGNvbnRyb2wgaWQKK2NvZGVzLjwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5WNEwyIFZlcnNpb24gMC4xOSAxOTk5LTA2LTA1PC90aXRsZT4KKyAgICAgIDxwYXJhPjE5OTktMDMtMTg6IEZpbGwgaW4gdGhlIGNhdGVnb3J5IGFuZCBjYXRuYW1lIGZpZWxkcyBvZgordjRsMl9xdWVyeWN0cmwgb2JqZWN0cyBiZWZvcmUgcGFzc2luZyB0aGVtIHRvIHRoZSBkcml2ZXIuIFJlcXVpcmVkIGEKK21pbm9yIGNoYW5nZSB0byB0aGUgVklESU9DX1FVRVJZQ1RSTCBoYW5kbGVycyBpbiB0aGUgc2FtcGxlCitkcml2ZXJzLjwvcGFyYT4KKyAgICAgIDxwYXJhPjE5OTktMDMtMzE6IEJldHRlciBjb21wYXRpYmlsaXR5IGZvciB2NGwgbWVtb3J5IGNhcHR1cmUKK2lvY3Rscy4gUmVxdWlyZXMgY2hhbmdlcyB0byBkcml2ZXJzIHRvIGZ1bGx5IHN1cHBvcnQgbmV3IGNvbXBhdGliaWxpdHkKK2ZlYXR1cmVzLCBzZWUgRHJpdmVyIFdyaXRlcidzIEd1aWRlIGFuZCB2NGwyY2FwLmMuIEFkZGVkIG5ldyBjb250cm9sCitJRHM6IFY0TDJfQ0lEX0hGTElQLCBfVkZMSVAuIENoYW5nZWQgVjRMMl9QSVhfRk1UX1lVVjQyMlAgdG8gX1lVVjQyMlAsCithbmQgX1lVVjQxMVAgdG8gX1lVVjQxMVAuPC9wYXJhPgorICAgICAgPHBhcmE+MTk5OS0wNC0wNDogQWRkZWQgYSBmZXcgbW9yZSBjb250cm9sIElEcy48L3BhcmE+CisgICAgICA8cGFyYT4xOTk5LTA0LTA3OiBBZGRlZCB0aGUgYnV0dG9uIGNvbnRyb2wgdHlwZS48L3BhcmE+CisgICAgICA8cGFyYT4xOTk5LTA1LTAyOiBGaXhlZCBhIHR5cG8gaW4gdmlkZW9kZXYuaCwgYW5kIGFkZGVkIHRoZQorVjRMMl9DVFJMX0ZMQUdfR1JBWUVEIChsYXRlciBWNEwyX0NUUkxfRkxBR19HUkFCQkVEKSBmbGFnLjwvcGFyYT4KKyAgICAgIDxwYXJhPjE5OTktMDUtMjA6IERlZmluaXRpb24gb2YgVklESU9DX0dfQ1RSTCB3YXMgd3JvbmcgY2F1c2luZworYSBtYWxmdW5jdGlvbiBvZiB0aGlzIGlvY3RsLjwvcGFyYT4KKyAgICAgIDxwYXJhPjE5OTktMDYtMDU6IENoYW5nZWQgdGhlIHZhbHVlIG9mCitWNEwyX0NJRF9XSElURU5FU1MuPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgVmVyc2lvbiAwLjIwICgxOTk5LTA5LTEwKTwvdGl0bGU+CisKKyAgICAgIDxwYXJhPlZlcnNpb24gMC4yMCBpbnRyb2R1Y2VkIGEgbnVtYmVyIG9mIGNoYW5nZXMgd2hpY2ggd2VyZQorPGVtcGhhc2lzPm5vdCBiYWNrd2FyZCBjb21wYXRpYmxlPC9lbXBoYXNpcz4gd2l0aCAwLjE5IGFuZCBlYXJsaWVyCit2ZXJzaW9ucy4gUHVycG9zZSBvZiB0aGVzZSBjaGFuZ2VzIHdhcyB0byBzaW1wbGlmeSB0aGUgQVBJLCB3aGlsZQorbWFraW5nIGl0IG1vcmUgZXh0ZW5zaWJsZSBhbmQgZm9sbG93aW5nIGNvbW1vbiBMaW51eCBkcml2ZXIgQVBJCitjb252ZW50aW9ucy48L3BhcmE+CisKKyAgICAgIDxvcmRlcmVkbGlzdD4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5Tb21lIHR5cG9zIGluIDxjb25zdGFudD5WNEwyX0ZNVF9GTEFHPC9jb25zdGFudD4KK3N5bWJvbHMgd2VyZSBmaXhlZC4gJnY0bDItY2xpcDsgd2FzIGNoYW5nZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aAordjRsLiAoMTk5OS0wOC0zMCk8L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjxjb25zdGFudD5WNEwyX1RVTkVSX1NVQl9MQU5HMTwvY29uc3RhbnQ+IHdhcyBhZGRlZC4KKygxOTk5LTA5LTA1KTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCSAgPHBhcmE+QWxsIGlvY3RsKCkgY29tbWFuZHMgdGhhdCB1c2VkIGFuIGludGVnZXIgYXJndW1lbnQgbm93Cit0YWtlIGEgcG9pbnRlciB0byBhbiBpbnRlZ2VyLiBXaGVyZSBpdCBtYWtlcyBzZW5zZSwgaW9jdGxzIHdpbGwgcmV0dXJuCit0aGUgYWN0dWFsIG5ldyB2YWx1ZSBpbiB0aGUgaW50ZWdlciBwb2ludGVkIHRvIGJ5IHRoZSBhcmd1bWVudCwgYQorY29tbW9uIGNvbnZlbnRpb24gaW4gdGhlIFY0TDIgQVBJLiBUaGUgYWZmZWN0ZWQgaW9jdGxzIGFyZToKK1ZJRElPQ19QUkVWSUVXLCBWSURJT0NfU1RSRUFNT04sIFZJRElPQ19TVFJFQU1PRkYsIFZJRElPQ19TX0ZSRVEsCitWSURJT0NfU19JTlBVVCwgVklESU9DX1NfT1VUUFVULCBWSURJT0NfU19FRkZFQ1QuIEZvciBleGFtcGxlCis8cHJvZ3JhbWxpc3Rpbmc+CitlcnIgPSBpb2N0bCAoZmQsIFZJRElPQ19YWFgsIFY0TDJfWFhYKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+IGJlY29tZXMgPHByb2dyYW1saXN0aW5nPgoraW50IGEgPSBWNEwyX1hYWDsgZXJyID0gaW9jdGwoZmQsIFZJRElPQ19YWFgsICZhbXA7YSk7Cis8L3Byb2dyYW1saXN0aW5nPgorCSAgPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5BbGwgdGhlIGRpZmZlcmVudCBnZXQtIGFuZCBzZXQtZm9ybWF0IGNvbW1hbmRzIHdlcmUKK3N3ZXB0IGludG8gb25lICZWSURJT0MtRy1GTVQ7IGFuZCAmVklESU9DLVMtRk1UOyBpb2N0bCB0YWtpbmcgYSB1bmlvbgorYW5kIGEgdHlwZSBmaWVsZCBzZWxlY3RpbmcgdGhlIHVuaW9uIG1lbWJlciBhcyBwYXJhbWV0ZXIuIFB1cnBvc2UgaXMgdG8KK3NpbXBsaWZ5IHRoZSBBUEkgYnkgZWxpbWluYXRpbmcgc2V2ZXJhbCBpb2N0bHMgYW5kIHRvIGFsbG93IG5ldyBhbmQKK2RyaXZlciBwcml2YXRlIGRhdGEgc3RyZWFtcyB3aXRob3V0IGFkZGluZyBuZXcgaW9jdGxzLjwvcGFyYT4KKworCSAgPHBhcmE+VGhpcyBjaGFuZ2Ugb2Jzb2xldGVzIHRoZSBmb2xsb3dpbmcgaW9jdGxzOgorPGNvbnN0YW50PlZJRElPQ19TX0lORk1UPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VklESU9DX0dfSU5GTVQ8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WSURJT0NfU19PVVRGTVQ8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WSURJT0NfR19PVVRGTVQ8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WSURJT0NfU19WQklGTVQ8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WSURJT0NfR19WQklGTVQ8L2NvbnN0YW50Pi4gVGhlIGltYWdlIGZvcm1hdCBzdHJ1Y3R1cmUKKzxzdHJ1Y3RuYW1lPnY0bDJfZm9ybWF0PC9zdHJ1Y3RuYW1lPiB3YXMgcmVuYW1lZCB0byAmdjRsMi1waXgtZm9ybWF0OywKK3doaWxlICZ2NGwyLWZvcm1hdDsgaXMgbm93IHRoZSBlbnZlbG9wcGluZyBzdHJ1Y3R1cmUgZm9yIGFsbCBmb3JtYXQKK25lZ290aWF0aW9ucy48L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlNpbWlsYXIgdG8gdGhlIGNoYW5nZXMgYWJvdmUsIHRoZQorPGNvbnN0YW50PlZJRElPQ19HX1BBUk08L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WSURJT0NfU19QQVJNPC9jb25zdGFudD4gaW9jdGxzIHdlcmUgbWVyZ2VkIHdpdGgKKzxjb25zdGFudD5WSURJT0NfR19PVVRQQVJNPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VklESU9DX1NfT1VUUEFSTTwvY29uc3RhbnQ+LiBBCis8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IGZpZWxkIGluIHRoZSBuZXcgJnY0bDItc3RyZWFtcGFybTsKK3NlbGVjdHMgdGhlIHJlc3BlY3RpdmUgdW5pb24gbWVtYmVyLjwvcGFyYT4KKworCSAgPHBhcmE+VGhpcyBjaGFuZ2Ugb2Jzb2xldGVzIHRoZQorPGNvbnN0YW50PlZJRElPQ19HX09VVFBBUk08L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WSURJT0NfU19PVVRQQVJNPC9jb25zdGFudD4gaW9jdGxzLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCSAgPHBhcmE+Q29udHJvbCBlbnVtZXJhdGlvbiB3YXMgc2ltcGxpZmllZCwgYW5kIHR3byBuZXcKK2NvbnRyb2wgZmxhZ3Mgd2VyZSBpbnRyb2R1Y2VkIGFuZCBvbmUgZHJvcHBlZC4gVGhlCis8c3RydWN0ZmllbGQ+Y2F0bmFtZTwvc3RydWN0ZmllbGQ+IGZpZWxkIHdhcyByZXBsYWNlZCBieSBhCis8c3RydWN0ZmllbGQ+Z3JvdXA8L3N0cnVjdGZpZWxkPiBmaWVsZC48L3BhcmE+CisKKwkgIDxwYXJhPkRyaXZlcnMgY2FuIG5vdyBmbGFnIHVuc3VwcG9ydGVkIGFuZCB0ZW1wb3JhcmlseQordW5hdmFpbGFibGUgY29udHJvbHMgd2l0aCA8Y29uc3RhbnQ+VjRMMl9DVFJMX0ZMQUdfRElTQUJMRUQ8L2NvbnN0YW50PgorYW5kIDxjb25zdGFudD5WNEwyX0NUUkxfRkxBR19HUkFCQkVEPC9jb25zdGFudD4gcmVzcGVjdGl2ZWx5LiBUaGUKKzxzdHJ1Y3RmaWVsZD5ncm91cDwvc3RydWN0ZmllbGQ+IG5hbWUgaW5kaWNhdGVzIGEgcG9zc2libHkgbmFycm93ZXIKK2NsYXNzaWZpY2F0aW9uIHRoYW4gdGhlIDxzdHJ1Y3RmaWVsZD5jYXRlZ29yeTwvc3RydWN0ZmllbGQ+LiBJbiBvdGhlcgord29yZHMsIHRoZXJlIG1heSBiZSBtdWx0aXBsZSBncm91cHMgd2l0aGluIGEgY2F0ZWdvcnkuIENvbnRyb2xzIHdpdGhpbgorYSBncm91cCB3b3VsZCB0eXBpY2FsbHkgYmUgZHJhd24gd2l0aGluIGEgZ3JvdXAgYm94LiBDb250cm9scyBpbgorZGlmZmVyZW50IGNhdGVnb3JpZXMgbWlnaHQgaGF2ZSBhIGdyZWF0ZXIgc2VwYXJhdGlvbiwgb3IgbWF5IGV2ZW4KK2FwcGVhciBpbiBzZXBhcmF0ZSB3aW5kb3dzLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlICZ2NGwyLWJ1ZmZlcjsgPHN0cnVjdGZpZWxkPnRpbWVzdGFtcDwvc3RydWN0ZmllbGQ+Cit3YXMgY2hhbmdlZCB0byBhIDY0IGJpdCBpbnRlZ2VyLCBjb250YWluaW5nIHRoZSBzYW1wbGluZyBvciBvdXRwdXQKK3RpbWUgb2YgdGhlIGZyYW1lIGluIG5hbm9zZWNvbmRzLiBBZGRpdGlvbmFsbHkgdGltZXN0YW1wcyB3aWxsIGJlIGluCithYnNvbHV0ZSBzeXN0ZW0gdGltZSwgbm90IHN0YXJ0aW5nIGZyb20gemVybyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEKK3N0cmVhbS4gVGhlIGRhdGEgdHlwZSBuYW1lIGZvciB0aW1lc3RhbXBzIGlzIHN0YW1wX3QsIGRlZmluZWQgYXMgYQorc2lnbmVkIDY0LWJpdCBpbnRlZ2VyLiBPdXRwdXQgZGV2aWNlcyBzaG91bGQgbm90IHNlbmQgYSBidWZmZXIgb3V0Cit1bnRpbCB0aGUgdGltZSBpbiB0aGUgdGltZXN0YW1wIGZpZWxkIGhhcyBhcnJpdmVkLiBJIHdvdWxkIGxpa2UgdG8KK2ZvbGxvdyBTR0kncyBsZWFkLCBhbmQgYWRvcHQgYSBtdWx0aW1lZGlhIHRpbWVzdGFtcGluZyBzeXN0ZW0gbGlrZQordGhlaXIgVVNUIChVbmFkanVzdGVkIFN5c3RlbSBUaW1lKS4gU2VlCitodHRwOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8qL2h0dHA6Ly9yZWFsaXR5LnNnaS5jb20KKy9jcGlyYXp6aV9lbmdyL2xnL3RpbWUvaW50cm8uaHRtbC4KK1VTVCB1c2VzIHRpbWVzdGFtcHMgdGhhdCBhcmUgNjQtYml0IHNpZ25lZCBpbnRlZ2VycworKG5vdCBzdHJ1Y3QgdGltZXZhbCdzKSBhbmQgZ2l2ZW4gaW4gbmFub3NlY29uZCB1bml0cy4gVGhlIFVTVCBjbG9jaworc3RhcnRzIGF0IHplcm8gd2hlbiB0aGUgc3lzdGVtIGlzIGJvb3RlZCBhbmQgcnVucyBjb250aW51b3VzbHkgYW5kCit1bmlmb3JtbHkuIEl0IHRha2VzIGEgbGl0dGxlIG92ZXIgMjkyIHllYXJzIGZvciBVU1QgdG8gb3ZlcmZsb3cuIFRoZXJlCitpcyBubyB3YXkgdG8gc2V0IHRoZSBVU1QgY2xvY2suIFRoZSByZWd1bGFyIExpbnV4IHRpbWUtb2YtZGF5IGNsb2NrCitjYW4gYmUgY2hhbmdlZCBwZXJpb2RpY2FsbHksIHdoaWNoIHdvdWxkIGNhdXNlIGVycm9ycyBpZiBpdCB3ZXJlIGJlaW5nCit1c2VkIGZvciB0aW1lc3RhbXBpbmcgYSBtdWx0aW1lZGlhIHN0cmVhbS4gQSByZWFsIFVTVCBzdHlsZSBjbG9jayB3aWxsCityZXF1aXJlIHNvbWUgc3VwcG9ydCBpbiB0aGUga2VybmVsIHRoYXQgaXMgbm90IHRoZXJlIHlldC4gQnV0IGluCithbnRpY2lwYXRpb24sIEkgd2lsbCBjaGFuZ2UgdGhlIHRpbWVzdGFtcCBmaWVsZCB0byBhIDY0LWJpdCBpbnRlZ2VyLAorYW5kIEkgd2lsbCBjaGFuZ2UgdGhlIHY0bDJfbWFzdGVyY2xvY2tfZ2V0dGltZSgpIGZ1bmN0aW9uICh1c2VkIG9ubHkKK2J5IGRyaXZlcnMpIHRvIHJldHVybiBhIDY0LWJpdCBpbnRlZ2VyLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCSAgPHBhcmE+QSA8c3RydWN0ZmllbGQ+c2VxdWVuY2U8L3N0cnVjdGZpZWxkPiBmaWVsZCB3YXMgYWRkZWQKK3RvICZ2NGwyLWJ1ZmZlcjsuIFRoZSA8c3RydWN0ZmllbGQ+c2VxdWVuY2U8L3N0cnVjdGZpZWxkPiBmaWVsZCBjb3VudHMKK2NhcHR1cmVkIGZyYW1lcywgaXQgaXMgaWdub3JlZCBieSBvdXRwdXQgZGV2aWNlcy4gV2hlbiBhIGNhcHR1cmUKK2RyaXZlciBkcm9wcyBhIGZyYW1lLCB0aGUgc2VxdWVuY2UgbnVtYmVyIG9mIHRoYXQgZnJhbWUgaXMKK3NraXBwZWQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgVmVyc2lvbiAwLjIwIGluY3JlbWVudGFsIGNoYW5nZXM8L3RpdGxlPgorICAgICAgPCEtLSBWZXJzaW9uIG51bWJlciBkaWRuJ3QgY2hhbmdlIGFueW1vcmUsIHJlYXNvbiB1bmtub3duLiAtLT4KKworICAgICAgPHBhcmE+MTk5OS0xMi0yMzogSW4gJnY0bDItdmJpLWZvcm1hdDsgdGhlCis8c3RydWN0ZmllbGQ+cmVzZXJ2ZWQxPC9zdHJ1Y3RmaWVsZD4gZmllbGQgYmVjYW1lCis8c3RydWN0ZmllbGQ+b2Zmc2V0PC9zdHJ1Y3RmaWVsZD4uIFByZXZpb3VzbHkgZHJpdmVycyB3ZXJlIHJlcXVpcmVkIHRvCitjbGVhciB0aGUgPHN0cnVjdGZpZWxkPnJlc2VydmVkMTwvc3RydWN0ZmllbGQ+IGZpZWxkLjwvcGFyYT4KKworICAgICAgPHBhcmE+MjAwMC0wMS0xMzogVGhlCisgICAgICA8Y29uc3RhbnQ+VjRMMl9GTVRfRkxBR19OT1RfSU5URVJMQUNFRDwvY29uc3RhbnQ+IGZsYWcgd2FzIGFkZGVkLjwvcGFyYT4KKworICAgICAgPHBhcmE+MjAwMC0wNy0zMTogVGhlIDxmaWxlbmFtZT5saW51eC9wb2xsLmg8L2ZpbGVuYW1lPiBoZWFkZXIKK2lzIG5vdyBpbmNsdWRlZCBieSA8ZmlsZW5hbWU+dmlkZW9kZXYuaDwvZmlsZW5hbWU+IGZvciBjb21wYXRpYmlsaXR5Cit3aXRoIHRoZSBvcmlnaW5hbCA8ZmlsZW5hbWU+dmlkZW9kZXYuaDwvZmlsZW5hbWU+IGZpbGUuPC9wYXJhPgorCisgICAgICA8cGFyYT4yMDAwLTExLTIwOiA8Y29uc3RhbnQ+VjRMMl9UWVBFX1ZCSV9PVVRQVVQ8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfWTQxUDwvY29uc3RhbnQ+IHdlcmUgYWRkZWQuPC9wYXJhPgorCisgICAgICA8cGFyYT4yMDAwLTExLTI1OiA8Y29uc3RhbnQ+VjRMMl9UWVBFX1ZCSV9JTlBVVDwvY29uc3RhbnQ+IHdhcworYWRkZWQuPC9wYXJhPgorCisgICAgICA8cGFyYT4yMDAwLTEyLTA0OiBBIGNvdXBsZSB0eXBvcyBpbiBzeW1ib2wgbmFtZXMgd2VyZSBmaXhlZC48L3BhcmE+CisKKyAgICAgIDxwYXJhPjIwMDEtMDEtMTg6IFRvIGF2b2lkIG5hbWVzcGFjZSBjb25mbGljdHMgdGhlCis8Y29uc3RhbnQ+Zm91cmNjPC9jb25zdGFudD4gbWFjcm8gZGVmaW5lZCBpbiB0aGUKKzxmaWxlbmFtZT52aWRlb2Rldi5oPC9maWxlbmFtZT4gaGVhZGVyIGZpbGUgd2FzIHJlbmFtZWQgdG8KKzxjb25zdGFudD52NGwyX2ZvdXJjYzwvY29uc3RhbnQ+LjwvcGFyYT4KKworICAgICAgPHBhcmE+MjAwMS0wMS0yNTogQSBwb3NzaWJsZSBkcml2ZXItbGV2ZWwgY29tcGF0aWJpbGl0eSBwcm9ibGVtCitiZXR3ZWVuIHRoZSA8ZmlsZW5hbWU+dmlkZW9kZXYuaDwvZmlsZW5hbWU+IGZpbGUgaW4gTGludXggMi40LjAgYW5kCit0aGUgPGZpbGVuYW1lPnZpZGVvZGV2Lmg8L2ZpbGVuYW1lPiBmaWxlIGluY2x1ZGVkIGluIHRoZQorPGZpbGVuYW1lPnZpZGVvZGV2WDwvZmlsZW5hbWU+IHBhdGNoIHdhcyBmaXhlZC4gVXNlcnMgb2YgYW4gZWFybGllcgordmVyc2lvbiBvZiA8ZmlsZW5hbWU+dmlkZW9kZXZYPC9maWxlbmFtZT4gb24gTGludXggMi40LjAgc2hvdWxkCityZWNvbXBpbGUgdGhlaXIgVjRMIGFuZCBWNEwyIGRyaXZlcnMuPC9wYXJhPgorCisgICAgICA8cGFyYT4yMDAxLTAxLTI2OiBBIHBvc3NpYmxlIGtlcm5lbC1sZXZlbCBpbmNvbXBhdGliaWxpdHkKK2JldHdlZW4gdGhlIDxmaWxlbmFtZT52aWRlb2Rldi5oPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUKKzxmaWxlbmFtZT52aWRlb2Rldlg8L2ZpbGVuYW1lPiBwYXRjaCBhbmQgdGhlCis8ZmlsZW5hbWU+dmlkZW9kZXYuaDwvZmlsZW5hbWU+IGZpbGUgaW4gTGludXggMi4yLnggd2l0aCBkZXZmcyBwYXRjaGVzCithcHBsaWVkIHdhcyBmaXhlZC48L3BhcmE+CisKKyAgICAgIDxwYXJhPjIwMDEtMDMtMDI6IENlcnRhaW4gVjRMIGlvY3RscyB3aGljaCBwYXNzIGRhdGEgaW4gYm90aAorZGlyZWN0aW9uIGFsdGhvdWdoIHRoZXkgYXJlIGRlZmluZWQgd2l0aCByZWFkLW9ubHkgcGFyYW1ldGVyLCBkaWQgbm90Cit3b3JrIGNvcnJlY3RseSB0aHJvdWdoIHRoZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGxheWVyLgorW1NvbHV0aW9uP108L3BhcmE+CisKKyAgICAgIDxwYXJhPjIwMDEtMDQtMTM6IEJpZyBlbmRpYW4gMTYtYml0IFJHQiBmb3JtYXRzIHdlcmUgYWRkZWQuPC9wYXJhPgorCisgICAgICA8cGFyYT4yMDAxLTA5LTE3OiBOZXcgWVVWIGZvcm1hdHMgYW5kIHRoZSAmVklESU9DLUctRlJFUVVFTkNZOyBhbmQKKyZWSURJT0MtUy1GUkVRVUVOQ1k7IGlvY3RscyB3ZXJlIGFkZGVkLiAoVGhlIG9sZAorPGNvbnN0YW50PlZJRElPQ19HX0ZSRVE8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WSURJT0NfU19GUkVRPC9jb25zdGFudD4gaW9jdGxzIGRpZCBub3QgdGFrZSBtdWx0aXBsZSB0dW5lcnMKK2ludG8gYWNjb3VudC4pPC9wYXJhPgorCisgICAgICA8cGFyYT4yMDAwLTA5LTE4OiA8Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9WQkk8L2NvbnN0YW50PiB3YXMKK2FkZGVkLiBUaGlzIG1heSA8ZW1waGFzaXM+YnJlYWsgY29tcGF0aWJpbGl0eTwvZW1waGFzaXM+IGFzIHRoZQorJlZJRElPQy1HLUZNVDsgYW5kICZWSURJT0MtUy1GTVQ7IGlvY3RscyBtYXkgZmFpbCBub3cgaWYgdGhlIHN0cnVjdAorPHN0cnVjdG5hbWU+djRsMl9mbXQ8L3N0cnVjdG5hbWU+IDxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4KK2ZpZWxkIGRvZXMgbm90IGNvbnRhaW4gPGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVkJJPC9jb25zdGFudD4uIEluIHRoZQorZG9jdW1lbnRhdGlvbiBvZiB0aGUgJnY0bDItdmJpLWZvcm1hdDsKKzxzdHJ1Y3RmaWVsZD5vZmZzZXQ8L3N0cnVjdGZpZWxkPiBmaWVsZCB0aGUgYW1iaWd1b3VzIHBocmFzZSAicmlzaW5nCitlZGdlIiB3YXMgY2hhbmdlZCB0byAibGVhZGluZyBlZGdlIi48L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+VjRMMiBWZXJzaW9uIDAuMjAgMjAwMC0xMS0yMzwvdGl0bGU+CisKKyAgICAgIDxwYXJhPkEgbnVtYmVyIG9mIGNoYW5nZXMgd2VyZSBtYWRlIHRvIHRoZSByYXcgVkJJCitpbnRlcmZhY2UuPC9wYXJhPgorCisgICAgICA8b3JkZXJlZGxpc3Q+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+RmlndXJlcyBjbGFyaWZ5aW5nIHRoZSBsaW5lIG51bWJlcmluZyBzY2hlbWUgd2VyZQorYWRkZWQgdG8gdGhlIFY0TDIgQVBJIHNwZWNpZmljYXRpb24uIFRoZQorPHN0cnVjdGZpZWxkPnN0YXJ0PC9zdHJ1Y3RmaWVsZD5bMF0gYW5kCis8c3RydWN0ZmllbGQ+c3RhcnQ8L3N0cnVjdGZpZWxkPlsxXSBmaWVsZHMgbm8gbG9uZ2VyIGNvdW50IGxpbmUKK251bWJlcnMgYmVnaW5uaW5nIGF0IHplcm8uIFJhdGlvbmFsZTogYSkgVGhlIHByZXZpb3VzIGRlZmluaXRpb24gd2FzCit1bmNsZWFyLiBiKSBUaGUgPHN0cnVjdGZpZWxkPnN0YXJ0PC9zdHJ1Y3RmaWVsZD5bXSB2YWx1ZXMgYXJlIG9yZGluYWwKK251bWJlcnMuIGMpIFRoZXJlIGlzIG5vIHBvaW50IGluIGludmVudGluZyBhIG5ldyBsaW5lIG51bWJlcmluZworc2NoZW1lLiBXZSBub3cgdXNlIGxpbmUgbnVtYmVyIGFzIGRlZmluZWQgYnkgSVRVLVIsIHBlcmlvZC4KK0NvbXBhdGliaWxpdHk6IEFkZCBvbmUgdG8gdGhlIHN0YXJ0IHZhbHVlcy4gQXBwbGljYXRpb25zIGRlcGVuZGluZyBvbgordGhlIHByZXZpb3VzIHNlbWFudGljcyBtYXkgbm90IGZ1bmN0aW9uIGNvcnJlY3RseS48L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSByZXN0cmljdGlvbiAiY291bnRbMF0gJmd0OyAwIGFuZCBjb3VudFsxXSAmZ3Q7IDAiCitoYXMgYmVlbiByZWxheGVkICB0byAiKGNvdW50WzBdICsgY291bnRbMV0pICZndDsgMCIuIFJhdGlvbmFsZToKK0RyaXZlcnMgbWF5IGFsbG9jYXRlIHJlc291cmNlcyBhdCBzY2FuIGxpbmUgZ3JhbnVsYXJpdHkgYW5kIHNvbWUgZGF0YQorc2VydmljZXMgYXJlIHRyYW5zbWl0dGVkIG9ubHkgb24gdGhlIGZpcnN0IGZpZWxkLiBUaGUgY29tbWVudCB0aGF0Citib3RoIDxzdHJ1Y3RmaWVsZD5jb3VudDwvc3RydWN0ZmllbGQ+IHZhbHVlcyB3aWxsIHVzdWFsbHkgYmUgZXF1YWwgaXMKK21pc2xlYWRpbmcgYW5kIHBvaW50bGVzcyBhbmQgaGFzIGJlZW4gcmVtb3ZlZC4gVGhpcyBjaGFuZ2UKKzxlbXBoYXNpcz5icmVha3MgY29tcGF0aWJpbGl0eTwvZW1waGFzaXM+IHdpdGggZWFybGllciB2ZXJzaW9uczoKK0RyaXZlcnMgbWF5IHJldHVybiBFSU5WQUwsIGFwcGxpY2F0aW9ucyBtYXkgbm90IGZ1bmN0aW9uCitjb3JyZWN0bHkuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5Ecml2ZXJzIGFyZSBhZ2FpbiBwZXJtaXR0ZWQgdG8gcmV0dXJuIG5lZ2F0aXZlCisodW5rbm93bikgc3RhcnQgdmFsdWVzIGFzIHByb3Bvc2VkIGVhcmxpZXIuIFdoeSB0aGlzIGZlYXR1cmUgd2FzCitkcm9wcGVkIGlzIHVuY2xlYXIuIFRoaXMgY2hhbmdlIG1heSA8ZW1waGFzaXM+YnJlYWsKK2NvbXBhdGliaWxpdHk8L2VtcGhhc2lzPiB3aXRoIGFwcGxpY2F0aW9ucyBkZXBlbmRpbmcgb24gdGhlIHN0YXJ0Cit2YWx1ZXMgYmVpbmcgcG9zaXRpdmUuIFRoZSB1c2Ugb2YgPGNvbnN0YW50PkVCVVNZPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+RUlOVkFMPC9jb25zdGFudD4gZXJyb3IgY29kZXMgd2l0aCB0aGUgJlZJRElPQy1TLUZNVDsgaW9jdGwKK3dhcyBjbGFyaWZpZWQuIFRoZSAmRUJVU1k7IHdhcyBmaW5hbGx5IGRvY3VtZW50ZWQsIGFuZCB0aGUKKzxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDI8L3N0cnVjdGZpZWxkPiBmaWVsZCB3aGljaCB3YXMgcHJldmlvdXNseQorbWVudGlvbmVkIG9ubHkgaW4gdGhlIDxmaWxlbmFtZT52aWRlb2Rldi5oPC9maWxlbmFtZT4gaGVhZGVyCitmaWxlLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCSAgPHBhcmE+TmV3IGJ1ZmZlciB0eXBlcworPGNvbnN0YW50PlY0TDJfVFlQRV9WQklfSU5QVVQ8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX1RZUEVfVkJJX09VVFBVVDwvY29uc3RhbnQ+IHdlcmUgYWRkZWQuIFRoZSBmb3JtZXIgaXMgYW4KK2FsaWFzIGZvciB0aGUgb2xkIDxjb25zdGFudD5WNEwyX1RZUEVfVkJJPC9jb25zdGFudD4sIHRoZSBsYXR0ZXIgd2FzCittaXNzaW5nIGluIHRoZSA8ZmlsZW5hbWU+dmlkZW9kZXYuaDwvZmlsZW5hbWU+IGZpbGUuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgVmVyc2lvbiAwLjIwIDIwMDItMDctMjU8L3RpdGxlPgorICAgICAgPHBhcmE+QWRkZWQgc2xpY2VkIFZCSSBpbnRlcmZhY2UgcHJvcG9zYWwuPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgaW4gTGludXggMi41LjQ2LCAyMDAyLTEwPC90aXRsZT4KKworICAgICAgPHBhcmE+QXJvdW5kIE9jdG9iZXItTm92ZW1iZXIgMjAwMiwgcHJpb3IgdG8gYW4gYW5ub3VuY2VkCitmZWF0dXJlIGZyZWV6ZSBvZiBMaW51eCAyLjUsIHRoZSBBUEkgd2FzIHJldmlzZWQsIGRyYXdpbmcgZnJvbQorZXhwZXJpZW5jZSB3aXRoIFY0TDIgMC4yMC4gVGhpcyB1bm5hbWVkIHZlcnNpb24gd2FzIGZpbmFsbHkgbWVyZ2VkCitpbnRvIExpbnV4IDIuNS40Ni48L3BhcmE+CisKKyAgICAgIDxvcmRlcmVkbGlzdD4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5BcyBzcGVjaWZpZWQgaW4gPHhyZWYgbGlua2VuZD0icmVsYXRlZCIgLz4sIGRyaXZlcnMKK211c3QgbWFrZSByZWxhdGVkIGRldmljZSBmdW5jdGlvbnMgYXZhaWxhYmxlIHVuZGVyIGFsbCBtaW5vciBkZXZpY2UKK251bWJlcnMuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgJmZ1bmMtb3BlbjsgZnVuY3Rpb24gcmVxdWlyZXMgYWNjZXNzIG1vZGUKKzxjb25zdGFudD5PX1JEV1I8L2NvbnN0YW50PiByZWdhcmRsZXNzIG9mIHRoZSBkZXZpY2UgdHlwZS4gQWxsIFY0TDIKK2RyaXZlcnMgZXhjaGFuZ2luZyBkYXRhIHdpdGggYXBwbGljYXRpb25zIG11c3Qgc3VwcG9ydCB0aGUKKzxjb25zdGFudD5PX05PTkJMT0NLPC9jb25zdGFudD4gZmxhZy4gVGhlIDxjb25zdGFudD5PX05PSU88L2NvbnN0YW50PgorZmxhZywgYSBWNEwyIHN5bWJvbCB3aGljaCBhbGlhc2VkIHRoZSBtZWFuaW5nbGVzcworPGNvbnN0YW50Pk9fVFJVTkM8L2NvbnN0YW50PiB0byBpbmRpY2F0ZSBhY2Nlc3NlcyB3aXRob3V0IGRhdGEKK2V4Y2hhbmdlIChwYW5lbCBhcHBsaWNhdGlvbnMpIHdhcyBkcm9wcGVkLiBEcml2ZXJzIG11c3Qgc3RheSBpbiAicGFuZWwKK21vZGUiIHVudGlsIHRoZSBhcHBsaWNhdGlvbiBhdHRlbXB0cyB0byBpbml0aWF0ZSBhIGRhdGEgZXhjaGFuZ2UsIHNlZQorPHhyZWYgbGlua2VuZD0ib3BlbiIgLz4uPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgJnY0bDItY2FwYWJpbGl0eTsgY2hhbmdlZCBkcmFtYXRpY2FsbHkuIE5vdGUgdGhhdAorYWxzbyB0aGUgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGNoYW5nZWQsIHdoaWNoIGlzIGVuY29kZWQgaW4gdGhlIGlvY3RsCityZXF1ZXN0IGNvZGUsIHRodXMgb2xkZXIgVjRMMiBkZXZpY2VzIHdpbGwgcmVzcG9uZCB3aXRoIGFuICZFSU5WQUw7IHRvCit0aGUgbmV3ICZWSURJT0MtUVVFUllDQVA7IGlvY3RsLjwvcGFyYT4KKworCSAgPHBhcmE+VGhlcmUgYXJlIG5ldyBmaWVsZHMgdG8gaWRlbnRpZnkgdGhlIGRyaXZlciwgYSBuZXcgUkRTCitkZXZpY2UgZnVuY3Rpb24gPGNvbnN0YW50PlY0TDJfQ0FQX1JEU19DQVBUVVJFPC9jb25zdGFudD4sIHRoZQorPGNvbnN0YW50PlY0TDJfQ0FQX0FVRElPPC9jb25zdGFudD4gZmxhZyBpbmRpY2F0ZXMgaWYgdGhlIGRldmljZSBoYXMKK2FueSBhdWRpbyBjb25uZWN0b3JzLCBhbm90aGVyIEkvTyBjYXBhYmlsaXR5Cis8Y29uc3RhbnQ+VjRMMl9DQVBfQVNZTkNJTzwvY29uc3RhbnQ+IGNhbiBiZSBmbGFnZ2VkLiBJbiByZXNwb25zZSB0bwordGhlc2UgY2hhbmdlcyB0aGUgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZCBiZWNhbWUgYSBiaXQKK3NldCBhbmQgd2FzIG1lcmdlZCBpbnRvIHRoZSA8c3RydWN0ZmllbGQ+ZmxhZ3M8L3N0cnVjdGZpZWxkPiBmaWVsZC4KKzxjb25zdGFudD5WNEwyX0ZMQUdfVFVORVI8L2NvbnN0YW50PiB3YXMgcmVuYW1lZCB0bworPGNvbnN0YW50PlY0TDJfQ0FQX1RVTkVSPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9DQVBfVklERU9fT1ZFUkxBWTwvY29uc3RhbnQ+IHJlcGxhY2VkCis8Y29uc3RhbnQ+VjRMMl9GTEFHX1BSRVZJRVc8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX0NBUF9WQklfQ0FQVFVSRTwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlY0TDJfQ0FQX1ZCSV9PVVRQVVQ8L2NvbnN0YW50PiByZXBsYWNlZAorPGNvbnN0YW50PlY0TDJfRkxBR19EQVRBX1NFUlZJQ0U8L2NvbnN0YW50Pi4KKzxjb25zdGFudD5WNEwyX0ZMQUdfUkVBRDwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlY0TDJfRkxBR19XUklURTwvY29uc3RhbnQ+IHdlcmUgbWVyZ2VkIGludG8KKzxjb25zdGFudD5WNEwyX0NBUF9SRUFEV1JJVEU8L2NvbnN0YW50Pi48L3BhcmE+CisKKwkgIDxwYXJhPlRoZSByZWR1bmRhbnQgZmllbGRzCis8c3RydWN0ZmllbGQ+aW5wdXRzPC9zdHJ1Y3RmaWVsZD4sIDxzdHJ1Y3RmaWVsZD5vdXRwdXRzPC9zdHJ1Y3RmaWVsZD4KK2FuZCA8c3RydWN0ZmllbGQ+YXVkaW9zPC9zdHJ1Y3RmaWVsZD4gd2VyZSByZW1vdmVkLiBUaGVzZSBwcm9wZXJ0aWVzCitjYW4gYmUgZGV0ZXJtaW5lZCBhcyBkZXNjcmliZWQgaW4gPHhyZWYgbGlua2VuZD0idmlkZW8iIC8+IGFuZCA8eHJlZgorbGlua2VuZD0iYXVkaW8iIC8+LjwvcGFyYT4KKworCSAgPHBhcmE+VGhlIHNvbWV3aGF0IHZvbGF0aWxlIGFuZCB0aGVyZWZvcmUgYmFyZWx5IHVzZWZ1bAorZmllbGRzIDxzdHJ1Y3RmaWVsZD5tYXh3aWR0aDwvc3RydWN0ZmllbGQ+LAorPHN0cnVjdGZpZWxkPm1heGhlaWdodDwvc3RydWN0ZmllbGQ+LAorPHN0cnVjdGZpZWxkPm1pbndpZHRoPC9zdHJ1Y3RmaWVsZD4sCis8c3RydWN0ZmllbGQ+bWluaGVpZ2h0PC9zdHJ1Y3RmaWVsZD4sCis8c3RydWN0ZmllbGQ+bWF4ZnJhbWVyYXRlPC9zdHJ1Y3RmaWVsZD4gd2VyZSByZW1vdmVkLiBUaGlzIGluZm9ybWF0aW9uCitpcyBhdmFpbGFibGUgYXMgZGVzY3JpYmVkIGluIDx4cmVmIGxpbmtlbmQ9ImZvcm1hdCIgLz4gYW5kCis8eHJlZiBsaW5rZW5kPSJzdGFuZGFyZCIgLz4uPC9wYXJhPgorCisJICA8cGFyYT48Y29uc3RhbnQ+VjRMMl9GTEFHX1NFTEVDVDwvY29uc3RhbnQ+IHdhcyByZW1vdmVkLiBXZQorYmVsaWV2ZSB0aGUgc2VsZWN0KCkgZnVuY3Rpb24gaXMgaW1wb3J0YW50IGVub3VnaCB0byByZXF1aXJlIHN1cHBvcnQKK29mIGl0IGluIGFsbCBWNEwyIGRyaXZlcnMgZXhjaGFuZ2luZyBkYXRhIHdpdGggYXBwbGljYXRpb25zLiBUaGUKK3JlZHVuZGFudCA8Y29uc3RhbnQ+VjRMMl9GTEFHX01PTk9DSFJPTUU8L2NvbnN0YW50PiBmbGFnIHdhcyByZW1vdmVkLAordGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgYXMgZGVzY3JpYmVkIGluIDx4cmVmCisJICAgICAgbGlua2VuZD0iZm9ybWF0IiAvPi48L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkluICZ2NGwyLWlucHV0OyB0aGUKKzxzdHJ1Y3RmaWVsZD5hc3NvY19hdWRpbzwvc3RydWN0ZmllbGQ+IGZpZWxkIGFuZCB0aGUKKzxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXR5PC9zdHJ1Y3RmaWVsZD4gZmllbGQgYW5kIGl0cyBvbmx5IGZsYWcKKzxjb25zdGFudD5WNEwyX0lOUFVUX0NBUF9BVURJTzwvY29uc3RhbnQ+IHdhcyByZXBsYWNlZCBieSB0aGUgbmV3Cis8c3RydWN0ZmllbGQ+YXVkaW9zZXQ8L3N0cnVjdGZpZWxkPiBmaWVsZC4gSW5zdGVhZCBvZiBsaW5raW5nIG9uZQordmlkZW8gaW5wdXQgdG8gb25lIGF1ZGlvIGlucHV0IHRoaXMgZmllbGQgcmVwb3J0cyBhbGwgYXVkaW8gaW5wdXRzCit0aGlzIHZpZGVvIGlucHV0IGNvbWJpbmVzIHdpdGguPC9wYXJhPgorCisJICA8cGFyYT5OZXcgZmllbGRzIGFyZSA8c3RydWN0ZmllbGQ+dHVuZXI8L3N0cnVjdGZpZWxkPgorKHJldmVyc2luZyB0aGUgZm9ybWVyIGxpbmsgZnJvbSB0dW5lcnMgdG8gdmlkZW8gaW5wdXRzKSwKKzxzdHJ1Y3RmaWVsZD5zdGQ8L3N0cnVjdGZpZWxkPiBhbmQKKzxzdHJ1Y3RmaWVsZD5zdGF0dXM8L3N0cnVjdGZpZWxkPi48L3BhcmE+CisKKwkgIDxwYXJhPkFjY29yZGluZ2x5ICZ2NGwyLW91dHB1dDsgbG9zdCBpdHMKKzxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXR5PC9zdHJ1Y3RmaWVsZD4gYW5kCis8c3RydWN0ZmllbGQ+YXNzb2NfYXVkaW88L3N0cnVjdGZpZWxkPiBmaWVsZHMuCis8c3RydWN0ZmllbGQ+YXVkaW9zZXQ8L3N0cnVjdGZpZWxkPiwKKzxzdHJ1Y3RmaWVsZD5tb2R1bGF0b3I8L3N0cnVjdGZpZWxkPiBhbmQKKzxzdHJ1Y3RmaWVsZD5zdGQ8L3N0cnVjdGZpZWxkPiB3aGVyZSBhZGRlZCBpbnN0ZWFkLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlICZ2NGwyLWF1ZGlvOyBmaWVsZAorPHN0cnVjdGZpZWxkPmF1ZGlvPC9zdHJ1Y3RmaWVsZD4gd2FzIHJlbmFtZWQgdG8KKzxzdHJ1Y3RmaWVsZD5pbmRleDwvc3RydWN0ZmllbGQ+LCBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlcgorc3RydWN0dXJlcy4gQSBuZXcgY2FwYWJpbGl0eSBmbGFnCis8Y29uc3RhbnQ+VjRMMl9BVURDQVBfU1RFUkVPPC9jb25zdGFudD4gd2FzIGFkZGVkIHRvIGluZGljYXRlZCBpZiB0aGUKK2F1ZGlvIGlucHV0IGluIHF1ZXN0aW9uIHN1cHBvcnRzIHN0ZXJlbyBzb3VuZC4KKzxjb25zdGFudD5WNEwyX0FVRENBUF9FRkZFQ1RTPC9jb25zdGFudD4gYW5kIHRoZSBjb3JyZXNwb25kaW5nCis8Y29uc3RhbnQ+VjRMMl9BVURNT0RFPC9jb25zdGFudD4gZmxhZ3Mgd2hlcmUgcmVtb3ZlZC4gVGhpcyBjYW4gYmUKK2Vhc2lseSBpbXBsZW1lbnRlZCB1c2luZyBjb250cm9scy4gKEhvd2V2ZXIgdGhlIHNhbWUgYXBwbGllcyB0byBBVkwKK3doaWNoIGlzIHN0aWxsIHRoZXJlLik8L3BhcmE+CisKKwkgIDxwYXJhPkFnYWluIGZvciBjb25zaXN0ZW5jeSB0aGUgJnY0bDItYXVkaW9vdXQ7IGZpZWxkCis8c3RydWN0ZmllbGQ+YXVkaW88L3N0cnVjdGZpZWxkPiB3YXMgcmVuYW1lZCB0bworPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4uPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgJnY0bDItdHVuZXI7Cis8c3RydWN0ZmllbGQ+aW5wdXQ8L3N0cnVjdGZpZWxkPiBmaWVsZCB3YXMgcmVwbGFjZWQgYnkgYW4KKzxzdHJ1Y3RmaWVsZD5pbmRleDwvc3RydWN0ZmllbGQ+IGZpZWxkLCBwZXJtaXR0aW5nIGRldmljZXMgd2l0aAorbXVsdGlwbGUgdHVuZXJzLiBUaGUgbGluayBiZXR3ZWVuIHZpZGVvIGlucHV0cyBhbmQgdHVuZXJzIGlzIG5vdworcmV2ZXJzZWQsIGlucHV0cyBwb2ludCB0byB0aGVpciB0dW5lci4gVGhlCis8c3RydWN0ZmllbGQ+c3RkPC9zdHJ1Y3RmaWVsZD4gc3Vic3RydWN0dXJlIGJlY2FtZSBhCitzaW1wbGUgc2V0IChtb3JlIGFib3V0IHRoaXMgYmVsb3cpIGFuZCBtb3ZlZCBpbnRvICZ2NGwyLWlucHV0Oy4gQQorPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZCB3YXMgYWRkZWQuPC9wYXJhPgorCisJICA8cGFyYT5BY2NvcmRpbmdseSBpbiAmdjRsMi1tb2R1bGF0b3I7IHRoZQorPHN0cnVjdGZpZWxkPm91dHB1dDwvc3RydWN0ZmllbGQ+IHdhcyByZXBsYWNlZCBieSBhbgorPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4gZmllbGQuPC9wYXJhPgorCisJICA8cGFyYT5JbiAmdjRsMi1mcmVxdWVuY3k7IHRoZQorPHN0cnVjdGZpZWxkPnBvcnQ8L3N0cnVjdGZpZWxkPiBmaWVsZCB3YXMgcmVwbGFjZWQgYnkgYQorPHN0cnVjdGZpZWxkPnR1bmVyPC9zdHJ1Y3RmaWVsZD4gZmllbGQgY29udGFpbmluZyB0aGUgcmVzcGVjdGl2ZSB0dW5lcgorb3IgbW9kdWxhdG9yIGluZGV4IG51bWJlci4gQSB0dW5lciA8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+CitmaWVsZCB3YXMgYWRkZWQgYW5kIHRoZSA8c3RydWN0ZmllbGQ+cmVzZXJ2ZWQ8L3N0cnVjdGZpZWxkPiBmaWVsZAorYmVjYW1lIGxhcmdlciBmb3IgZnV0dXJlIGV4dGVuc2lvbnMgKHNhdGVsbGl0ZSB0dW5lcnMgaW4KK3BhcnRpY3VsYXIpLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIGlkZWEgb2YgY29tcGxldGVseSB0cmFuc3BhcmVudCB2aWRlbyBzdGFuZGFyZHMgd2FzCitkcm9wcGVkLiBFeHBlcmllbmNlIHNob3dlZCB0aGF0IGFwcGxpY2F0aW9ucyBtdXN0IGJlIGFibGUgdG8gd29yayB3aXRoCit2aWRlbyBzdGFuZGFyZHMgYmV5b25kIHByZXNlbnRpbmcgdGhlIHVzZXIgYSBtZW51LiBJbnN0ZWFkIG9mCitlbnVtZXJhdGluZyBzdXBwb3J0ZWQgc3RhbmRhcmRzIHdpdGggYW4gaW9jdGwgYXBwbGljYXRpb25zIGNhbiBub3cKK3JlZmVyIHRvIHN0YW5kYXJkcyBieSAmdjRsMi1zdGQtaWQ7IGFuZCBzeW1ib2xzIGRlZmluZWQgaW4gdGhlCis8ZmlsZW5hbWU+dmlkZW9kZXYyLmg8L2ZpbGVuYW1lPiBoZWFkZXIgZmlsZS4gRm9yIGRldGFpbHMgc2VlIDx4cmVmCisJICAgICAgbGlua2VuZD0ic3RhbmRhcmQiIC8+LiBUaGUgJlZJRElPQy1HLVNURDsgYW5kCismVklESU9DLVMtU1REOyBub3cgdGFrZSBhIHBvaW50ZXIgdG8gdGhpcyB0eXBlIGFzIGFyZ3VtZW50LgorJlZJRElPQy1RVUVSWVNURDsgd2FzIGFkZGVkIHRvIGF1dG9kZXRlY3QgdGhlIHJlY2VpdmVkIHN0YW5kYXJkLCBpZgordGhlIGhhcmR3YXJlIGhhcyB0aGlzIGNhcGFiaWxpdHkuIEluICZ2NGwyLXN0YW5kYXJkOyBhbgorPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4gZmllbGQgd2FzIGFkZGVkIGZvciAmVklESU9DLUVOVU1TVEQ7LgorQSAmdjRsMi1zdGQtaWQ7IGZpZWxkIG5hbWVkIDxzdHJ1Y3RmaWVsZD5pZDwvc3RydWN0ZmllbGQ+IHdhcyBhZGRlZCBhcworbWFjaGluZSByZWFkYWJsZSBpZGVudGlmaWVyLCBhbHNvIHJlcGxhY2luZyB0aGUKKzxzdHJ1Y3RmaWVsZD50cmFuc21pc3Npb248L3N0cnVjdGZpZWxkPiBmaWVsZC4gVGhlIG1pc2xlYWRpbmcKKzxzdHJ1Y3RmaWVsZD5mcmFtZXJhdGU8L3N0cnVjdGZpZWxkPiBmaWVsZCB3YXMgcmVuYW1lZAordG8gPHN0cnVjdGZpZWxkPmZyYW1lcGVyaW9kPC9zdHJ1Y3RmaWVsZD4uIFRoZSBub3cgb2Jzb2xldGUKKzxzdHJ1Y3RmaWVsZD5jb2xvcnN0YW5kYXJkPC9zdHJ1Y3RmaWVsZD4gaW5mb3JtYXRpb24sIG9yaWdpbmFsbHkKK25lZWRlZCB0byBkaXN0Z3Vpc2ggYmV0d2VlbiB2YXJpYXRpb25zIG9mIHN0YW5kYXJkcywgd2VyZQorcmVtb3ZlZC48L3BhcmE+CisKKwkgIDxwYXJhPlN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2VudW1zdGQ8L3N0cnVjdG5hbWU+IGNlYXNlZCB0bworYmUuICZWSURJT0MtRU5VTVNURDsgbm93IHRha2VzIGEgcG9pbnRlciB0byBhICZ2NGwyLXN0YW5kYXJkOworZGlyZWN0bHkuIFRoZSBpbmZvcm1hdGlvbiB3aGljaCBzdGFuZGFyZHMgYXJlIHN1cHBvcnRlZCBieSBhCitwYXJ0aWN1bGFyIHZpZGVvIGlucHV0IG9yIG91dHB1dCBtb3ZlZCBpbnRvICZ2NGwyLWlucHV0OyBhbmQKKyZ2NGwyLW91dHB1dDsgZmllbGRzIG5hbWVkIDxzdHJ1Y3RmaWVsZD5zdGQ8L3N0cnVjdGZpZWxkPiwKK3Jlc3BlY3RpdmVseS48L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSAmdjRsMi1xdWVyeWN0cmw7IGZpZWxkcworPHN0cnVjdGZpZWxkPmNhdGVnb3J5PC9zdHJ1Y3RmaWVsZD4gYW5kCis8c3RydWN0ZmllbGQ+Z3JvdXA8L3N0cnVjdGZpZWxkPiBkaWQgbm90IGNhdGNoIG9uIGFuZC9vciB3ZXJlIG5vdAoraW1wbGVtZW50ZWQgYXMgZXhwZWN0ZWQgYW5kIHRoZXJlZm9yZSByZW1vdmVkLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlICZWSURJT0MtVFJZLUZNVDsgaW9jdGwgd2FzIGFkZGVkIHRvIG5lZ290aWF0ZSBkYXRhCitmb3JtYXRzIGFzIHdpdGggJlZJRElPQy1TLUZNVDssIGJ1dCB3aXRob3V0IHRoZSBvdmVyaGVhZCBvZgorcHJvZ3JhbW1pbmcgdGhlIGhhcmR3YXJlIGFuZCByZWdhcmRsZXNzIG9mIEkvTyBpbiBwcm9ncmVzcy48L3BhcmE+CisKKwkgIDxwYXJhPkluICZ2NGwyLWZvcm1hdDsgdGhlIDxzdHJ1Y3RmaWVsZD5mbXQ8L3N0cnVjdGZpZWxkPgordW5pb24gd2FzIGV4dGVuZGVkIHRvIGNvbnRhaW4gJnY0bDItd2luZG93Oy4gQWxsIGltYWdlIGZvcm1hdAorbmVnb3RpYXRpb25zIGFyZSBub3cgcG9zc2libGUgd2l0aCA8Y29uc3RhbnQ+VklESU9DX0dfRk1UPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VklESU9DX1NfRk1UPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VklESU9DX1RSWV9GTVQ8L2NvbnN0YW50PjsgaW9jdGwuIFRoZQorPGNvbnN0YW50PlZJRElPQ19HX1dJTjwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlZJRElPQ19TX1dJTjwvY29uc3RhbnQ+IGlvY3RscyB0byBwcmVwYXJlIGZvciBhIHZpZGVvCitvdmVybGF5IHdlcmUgcmVtb3ZlZC4gVGhlIDxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gZmllbGQKK2NoYW5nZWQgdG8gdHlwZSAmdjRsMi1idWYtdHlwZTsgYW5kIHRoZSBidWZmZXIgdHlwZSBuYW1lcyBjaGFuZ2VkIGFzCitmb2xsb3dzLjxpbmZvcm1hbHRhYmxlPgorCSAgICAgIDx0Z3JvdXAgY29scz0iMiI+CisJCTx0aGVhZD4KKwkJICA8cm93PgorCQkgICAgPGVudHJ5Pk9sZCBkZWZpbmVzPC9lbnRyeT4KKwkJICAgIDxlbnRyeT4mdjRsMi1idWYtdHlwZTs8L2VudHJ5PgorCQkgIDwvcm93PgorCQk8L3RoZWFkPgorCQk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgIDxyb3c+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfQ0FQVFVSRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFPC9jb25zdGFudD48L2VudHJ5PgorCQkgIDwvcm93PgorCQkgIDxyb3c+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfQ09ERUNJTjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJICAgIDxlbnRyeT5PbWl0dGVkIGZvciBub3c8L2VudHJ5PgorCQkgIDwvcm93PgorCQkgIDxyb3c+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfQ09ERUNPVVQ8L2NvbnN0YW50PjwvZW50cnk+CisJCSAgICA8ZW50cnk+T21pdHRlZCBmb3Igbm93PC9lbnRyeT4KKwkJICA8L3Jvdz4KKwkJICA8cm93PgorCQkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0JVRl9UWVBFX0VGRkVDVFNJTjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJICAgIDxlbnRyeT5PbWl0dGVkIGZvciBub3c8L2VudHJ5PgorCQkgIDwvcm93PgorCQkgIDxyb3c+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfRUZGRUNUU0lOMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJICAgIDxlbnRyeT5PbWl0dGVkIGZvciBub3c8L2VudHJ5PgorCQkgIDwvcm93PgorCQkgIDxyb3c+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfRUZGRUNUU09VVDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJICAgIDxlbnRyeT5PbWl0dGVkIGZvciBub3c8L2VudHJ5PgorCQkgIDwvcm93PgorCQkgIDxyb3c+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVklERU9PVVQ8L2NvbnN0YW50PjwvZW50cnk+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVklERU9fT1VUUFVUPC9jb25zdGFudD48L2VudHJ5PgorCQkgIDwvcm93PgorCQkgIDxyb3c+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50Pi08L2NvbnN0YW50PjwvZW50cnk+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVklERU9fT1ZFUkxBWTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJICA8L3Jvdz4KKwkJICA8cm93PgorCQkgICAgPGVudHJ5Pjxjb25zdGFudD4tPC9jb25zdGFudD48L2VudHJ5PgorCQkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZCSV9DQVBUVVJFPC9jb25zdGFudD48L2VudHJ5PgorCQkgIDwvcm93PgorCQkgIDxyb3c+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50Pi08L2NvbnN0YW50PjwvZW50cnk+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVkJJX09VVFBVVDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJICA8L3Jvdz4KKwkJICA8cm93PgorCQkgICAgPGVudHJ5Pjxjb25zdGFudD4tPC9jb25zdGFudD48L2VudHJ5PgorCQkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1NMSUNFRF9WQklfQ0FQVFVSRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJICA8L3Jvdz4KKwkJICA8cm93PgorCQkgICAgPGVudHJ5Pjxjb25zdGFudD4tPC9jb25zdGFudD48L2VudHJ5PgorCQkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1NMSUNFRF9WQklfT1VUUFVUPC9jb25zdGFudD48L2VudHJ5PgorCQkgIDwvcm93PgorCQkgIDxyb3c+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfUFJJVkFURV9CQVNFPC9jb25zdGFudD48L2VudHJ5PgorCQkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1BSSVZBVEU8L2NvbnN0YW50PiAoYnV0IHRoaXMgaXMgZGVwcmVjYXRlZCk8L2VudHJ5PgorCQkgIDwvcm93PgorCQk8L3Rib2R5PgorCSAgICAgIDwvdGdyb3VwPgorCSAgICA8L2luZm9ybWFsdGFibGU+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5JbiAmdjRsMi1mbXRkZXNjOyBhICZ2NGwyLWJ1Zi10eXBlOyBmaWVsZCBuYW1lZAorPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiB3YXMgYWRkZWQgYXMgaW4gJnY0bDItZm9ybWF0Oy4gVGhlCis8Y29uc3RhbnQ+VklESU9DX0VOVU1fRkJVRkZNVDwvY29uc3RhbnQ+IGlvY3RsIGlzIG5vIGxvbmdlciBuZWVkZWQgYW5kCit3YXMgcmVtb3ZlZC4gVGhlc2UgY2FsbHMgY2FuIGJlIHJlcGxhY2VkIGJ5ICZWSURJT0MtRU5VTS1GTVQ7IHdpdGgKK3R5cGUgPGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVklERU9fT1ZFUkxBWTwvY29uc3RhbnQ+LjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCSAgPHBhcmE+SW4gJnY0bDItcGl4LWZvcm1hdDsgdGhlCis8c3RydWN0ZmllbGQ+ZGVwdGg8L3N0cnVjdGZpZWxkPiBmaWVsZCB3YXMgcmVtb3ZlZCwgYXNzdW1pbmcKK2FwcGxpY2F0aW9ucyB3aGljaCByZWNvZ25pemUgdGhlIGZvcm1hdCBieSBpdHMgZm91ci1jaGFyYWN0ZXItY29kZQorYWxyZWFkeSBrbm93IHRoZSBjb2xvciBkZXB0aCwgYW5kIG90aGVycyBkbyBub3QgY2FyZSBhYm91dCBpdC4gVGhlCitzYW1lIHJhdGlvbmFsZSBsZWFkIHRvIHRoZSByZW1vdmFsIG9mIHRoZQorPGNvbnN0YW50PlY0TDJfRk1UX0ZMQUdfQ09NUFJFU1NFRDwvY29uc3RhbnQ+IGZsYWcuIFRoZQorPGNvbnN0YW50PlY0TDJfRk1UX0ZMQUdfU1dDT05WRUNPTVBSRVNTRUQ8L2NvbnN0YW50PiBmbGFnIHdhcyByZW1vdmVkCitiZWNhdXNlIGRyaXZlcnMgYXJlIG5vdCBzdXBwb3NlZCB0byBjb252ZXJ0IGltYWdlcyBpbiBrZXJuZWwgc3BhY2UuIEEKK3VzZXIgbGlicmFyeSBvZiBjb252ZXJzaW9uIGZ1bmN0aW9ucyBzaG91bGQgYmUgcHJvdmlkZWQgaW5zdGVhZC4gVGhlCis8Y29uc3RhbnQ+VjRMMl9GTVRfRkxBR19CWVRFU1BFUkxJTkU8L2NvbnN0YW50PiBmbGFnIHdhcyByZWR1bmRhbnQuCitBcHBsaWNhdGlvbnMgY2FuIHNldCB0aGUgPHN0cnVjdGZpZWxkPmJ5dGVzcGVybGluZTwvc3RydWN0ZmllbGQ+IGZpZWxkCit0byB6ZXJvIHRvIGdldCBhIHJlYXNvbmFibGUgZGVmYXVsdC4gU2luY2UgdGhlIHJlbWFpbmluZyBmbGFncyB3ZXJlCityZXBsYWNlZCBhcyB3ZWxsLCB0aGUgPHN0cnVjdGZpZWxkPmZsYWdzPC9zdHJ1Y3RmaWVsZD4gZmllbGQgaXRzZWxmCit3YXMgcmVtb3ZlZC48L3BhcmE+CisJICA8cGFyYT5UaGUgaW50ZXJsYWNlIGZsYWdzIHdlcmUgcmVwbGFjZWQgYnkgYSAmdjRsMi1maWVsZDsKK3ZhbHVlIGluIGEgbmV3bHkgYWRkZWQgPHN0cnVjdGZpZWxkPmZpZWxkPC9zdHJ1Y3RmaWVsZD4KK2ZpZWxkLjxpbmZvcm1hbHRhYmxlPgorCSAgICAgIDx0Z3JvdXAgY29scz0iMiI+CisJCTx0aGVhZD4KKwkJICA8cm93PgorCQkgICAgPGVudHJ5Pk9sZCBmbGFnPC9lbnRyeT4KKwkJICAgIDxlbnRyeT4mdjRsMi1maWVsZDs8L2VudHJ5PgorCQkgIDwvcm93PgorCQk8L3RoZWFkPgorCQk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgIDxyb3c+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRk1UX0ZMQUdfTk9UX0lOVEVSTEFDRUQ8L2NvbnN0YW50PjwvZW50cnk+CisJCSAgICA8ZW50cnk+PzwvZW50cnk+CisJCSAgPC9yb3c+CisJCSAgPHJvdz4KKwkJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9GTVRfRkxBR19JTlRFUkxBQ0VEPC9jb25zdGFudD4KKz0gPGNvbnN0YW50PlY0TDJfRk1UX0ZMQUdfQ09NQklORUQ8L2NvbnN0YW50PjwvZW50cnk+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRklFTERfSU5URVJMQUNFRDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJICA8L3Jvdz4KKwkJICA8cm93PgorCQkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0ZNVF9GTEFHX1RPUEZJRUxEPC9jb25zdGFudD4KKz0gPGNvbnN0YW50PlY0TDJfRk1UX0ZMQUdfT0RERklFTEQ8L2NvbnN0YW50PjwvZW50cnk+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRklFTERfVE9QPC9jb25zdGFudD48L2VudHJ5PgorCQkgIDwvcm93PgorCQkgIDxyb3c+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRk1UX0ZMQUdfQk9URklFTEQ8L2NvbnN0YW50PgorPSA8Y29uc3RhbnQ+VjRMMl9GTVRfRkxBR19FVkVORklFTEQ8L2NvbnN0YW50PjwvZW50cnk+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRklFTERfQk9UVE9NPC9jb25zdGFudD48L2VudHJ5PgorCQkgIDwvcm93PgorCQkgIDxyb3c+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50Pi08L2NvbnN0YW50PjwvZW50cnk+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRklFTERfU0VRX1RCPC9jb25zdGFudD48L2VudHJ5PgorCQkgIDwvcm93PgorCQkgIDxyb3c+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50Pi08L2NvbnN0YW50PjwvZW50cnk+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRklFTERfU0VRX0JUPC9jb25zdGFudD48L2VudHJ5PgorCQkgIDwvcm93PgorCQkgIDxyb3c+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50Pi08L2NvbnN0YW50PjwvZW50cnk+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRklFTERfQUxURVJOQVRFPC9jb25zdGFudD48L2VudHJ5PgorCQkgIDwvcm93PgorCQk8L3Rib2R5PgorCSAgICAgIDwvdGdyb3VwPgorCSAgICA8L2luZm9ybWFsdGFibGU+PC9wYXJhPgorCisJICA8cGFyYT5UaGUgY29sb3Igc3BhY2UgZmxhZ3Mgd2VyZSByZXBsYWNlZCBieSBhCismdjRsMi1jb2xvcnNwYWNlOyB2YWx1ZSBpbiBhIG5ld2x5IGFkZGVkCis8c3RydWN0ZmllbGQ+Y29sb3JzcGFjZTwvc3RydWN0ZmllbGQ+IGZpZWxkLCB3aGVyZSBvbmUgb2YKKzxjb25zdGFudD5WNEwyX0NPTE9SU1BBQ0VfU01QVEUxNzBNPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9DT0xPUlNQQUNFX0JUODc4PC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9DT0xPUlNQQUNFXzQ3MF9TWVNURU1fTTwvY29uc3RhbnQ+IG9yCis8Y29uc3RhbnQ+VjRMMl9DT0xPUlNQQUNFXzQ3MF9TWVNURU1fQkc8L2NvbnN0YW50PiByZXBsYWNlcworPGNvbnN0YW50PlY0TDJfRk1UX0NTXzYwMVlVVjwvY29uc3RhbnQ+LjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCSAgPHBhcmE+SW4gJnY0bDItcmVxdWVzdGJ1ZmZlcnM7IHRoZQorPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZCB3YXMgcHJvcGVybHkgZGVmaW5lZCBhcworJnY0bDItYnVmLXR5cGU7LiBCdWZmZXIgdHlwZXMgY2hhbmdlZCBhcyBtZW50aW9uZWQgYWJvdmUuIEEgbmV3Cis8c3RydWN0ZmllbGQ+bWVtb3J5PC9zdHJ1Y3RmaWVsZD4gZmllbGQgb2YgdHlwZSAmdjRsMi1tZW1vcnk7IHdhcworYWRkZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBJL08gbWV0aG9kcyB1c2luZyBidWZmZXJzIGFsbG9jYXRlZAorYnkgdGhlIGRyaXZlciBvciB0aGUgYXBwbGljYXRpb24uIFNlZSA8eHJlZiBsaW5rZW5kPSJpbyIgLz4gZm9yCitkZXRhaWxzLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCSAgPHBhcmE+SW4gJnY0bDItYnVmZmVyOyB0aGUgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPgorZmllbGQgd2FzIHByb3Blcmx5IGRlZmluZWQgYXMgJnY0bDItYnVmLXR5cGU7LiBCdWZmZXIgdHlwZXMgY2hhbmdlZCBhcworbWVudGlvbmVkIGFib3ZlLiBBIDxzdHJ1Y3RmaWVsZD5maWVsZDwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mIHR5cGUKKyZ2NGwyLWZpZWxkOyB3YXMgYWRkZWQgdG8gaW5kaWNhdGUgaWYgYSBidWZmZXIgY29udGFpbnMgYSB0b3Agb3IKK2JvdHRvbSBmaWVsZC4gVGhlIG9sZCBmaWVsZCBmbGFncyB3ZXJlIHJlbW92ZWQuIFNpbmNlIG5vIHVuYWRqdXN0ZWQKK3N5c3RlbSB0aW1lIGNsb2NrIHdhcyBhZGRlZCB0byB0aGUga2VybmVsIGFzIHBsYW5uZWQsIHRoZQorPHN0cnVjdGZpZWxkPnRpbWVzdGFtcDwvc3RydWN0ZmllbGQ+IGZpZWxkIGNoYW5nZWQgYmFjayBmcm9tIHR5cGUKK3N0YW1wX3QsIGFuIHVuc2lnbmVkIDY0IGJpdCBpbnRlZ2VyIGV4cHJlc3NpbmcgdGhlIHNhbXBsZSB0aW1lIGluCituYW5vc2Vjb25kcywgdG8gc3RydWN0IDxzdHJ1Y3RuYW1lPnRpbWV2YWw8L3N0cnVjdG5hbWU+LiBXaXRoIHRoZQorYWRkaXRpb24gb2YgYSBzZWNvbmQgbWVtb3J5IG1hcHBpbmcgbWV0aG9kIHRoZQorPHN0cnVjdGZpZWxkPm9mZnNldDwvc3RydWN0ZmllbGQ+IGZpZWxkIG1vdmVkIGludG8gdW5pb24KKzxzdHJ1Y3RmaWVsZD5tPC9zdHJ1Y3RmaWVsZD4sIGFuZCBhIG5ldworPHN0cnVjdGZpZWxkPm1lbW9yeTwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mIHR5cGUgJnY0bDItbWVtb3J5OyB3YXMKK2FkZGVkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gSS9PIG1ldGhvZHMuIFNlZSA8eHJlZiBsaW5rZW5kPSJpbyIgLz4KK2ZvciBkZXRhaWxzLjwvcGFyYT4KKworCSAgPHBhcmE+VGhlIDxjb25zdGFudD5WNEwyX0JVRl9SRVFfQ09OVElHPC9jb25zdGFudD4KK2ZsYWcgd2FzIHVzZWQgYnkgdGhlIFY0TCBjb21wYXRpYmlsaXR5IGxheWVyLCBhZnRlciBjaGFuZ2VzIHRvIHRoaXMKK2NvZGUgaXQgd2FzIG5vIGxvbmdlciBuZWVkZWQuIFRoZQorPGNvbnN0YW50PlY0TDJfQlVGX0FUVFJfREVWSUNFTUVNPC9jb25zdGFudD4gZmxhZyB3b3VsZCBpbmRpY2F0ZSBpZgordGhlIGJ1ZmZlciB3YXMgaW5kZWVkIGFsbG9jYXRlZCBpbiBkZXZpY2UgbWVtb3J5IHJhdGhlciB0aGFuIERNQS1hYmxlCitzeXN0ZW0gbWVtb3J5LiBJdCB3YXMgYmFyZWx5IHVzZWZ1bCBhbmQgc28gd2FzIHJlbW92ZWQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5JbiAmdjRsMi1mcmFtZWJ1ZmZlcjsgdGhlCis8c3RydWN0ZmllbGQ+YmFzZVszXTwvc3RydWN0ZmllbGQ+IGFycmF5IGFudGljaXBhdGluZyBkb3VibGUtIGFuZAordHJpcGxlLWJ1ZmZlcmluZyBpbiBvZmYtc2NyZWVuIHZpZGVvIG1lbW9yeSwgaG93ZXZlciB3aXRob3V0IGRlZmluaW5nCithIHN5bmNocm9uaXphdGlvbiBtZWNoYW5pc20sIHdhcyByZXBsYWNlZCBieSBhIHNpbmdsZSBwb2ludGVyLiBUaGUKKzxjb25zdGFudD5WNEwyX0ZCVUZfQ0FQX1NDQUxFVVA8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX0ZCVUZfQ0FQX1NDQUxFRE9XTjwvY29uc3RhbnQ+IGZsYWdzIHdlcmUgcmVtb3ZlZC4KK0FwcGxpY2F0aW9ucyBjYW4gZGV0ZXJtaW5lIHRoaXMgY2FwYWJpbGl0eSBtb3JlIGFjY3VyYXRlbHkgdXNpbmcgdGhlCituZXcgY3JvcHBpbmcgYW5kIHNjYWxpbmcgaW50ZXJmYWNlLiBUaGUKKzxjb25zdGFudD5WNEwyX0ZCVUZfQ0FQX0NMSVBQSU5HPC9jb25zdGFudD4gZmxhZyB3YXMgcmVwbGFjZWQgYnkKKzxjb25zdGFudD5WNEwyX0ZCVUZfQ0FQX0xJU1RfQ0xJUFBJTkc8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX0ZCVUZfQ0FQX0JJVE1BUF9DTElQUElORzwvY29uc3RhbnQ+LjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCSAgPHBhcmE+SW4gJnY0bDItY2xpcDsgdGhlIDxzdHJ1Y3RmaWVsZD54PC9zdHJ1Y3RmaWVsZD4sCis8c3RydWN0ZmllbGQ+eTwvc3RydWN0ZmllbGQ+LCA8c3RydWN0ZmllbGQ+d2lkdGg8L3N0cnVjdGZpZWxkPiBhbmQKKzxzdHJ1Y3RmaWVsZD5oZWlnaHQ8L3N0cnVjdGZpZWxkPiBmaWVsZCBtb3ZlZCBpbnRvIGEKKzxzdHJ1Y3RmaWVsZD5jPC9zdHJ1Y3RmaWVsZD4gc3Vic3RydWN0dXJlIG9mIHR5cGUgJnY0bDItcmVjdDsuIFRoZQorPHN0cnVjdGZpZWxkPng8L3N0cnVjdGZpZWxkPiBhbmQgPHN0cnVjdGZpZWxkPnk8L3N0cnVjdGZpZWxkPiBmaWVsZHMKK3dlcmUgcmVuYW1lZCB0byA8c3RydWN0ZmllbGQ+bGVmdDwvc3RydWN0ZmllbGQ+IGFuZAorPHN0cnVjdGZpZWxkPnRvcDwvc3RydWN0ZmllbGQ+LCAmaWU7IG9mZnNldHMgdG8gYSBjb250ZXh0IGRlcGVuZGVudAorb3JpZ2luLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCSAgPHBhcmE+SW4gJnY0bDItd2luZG93OyB0aGUgPHN0cnVjdGZpZWxkPng8L3N0cnVjdGZpZWxkPiwKKzxzdHJ1Y3RmaWVsZD55PC9zdHJ1Y3RmaWVsZD4sIDxzdHJ1Y3RmaWVsZD53aWR0aDwvc3RydWN0ZmllbGQ+IGFuZAorPHN0cnVjdGZpZWxkPmhlaWdodDwvc3RydWN0ZmllbGQ+IGZpZWxkIG1vdmVkIGludG8gYQorPHN0cnVjdGZpZWxkPnc8L3N0cnVjdGZpZWxkPiBzdWJzdHJ1Y3R1cmUgYXMgYWJvdmUuIEEKKzxzdHJ1Y3RmaWVsZD5maWVsZDwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mIHR5cGUgJXY0bDItZmllbGQ7IHdhcyBhZGRlZAordG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBmaWVsZCBhbmQgZnJhbWUgKGludGVybGFjZWQpIG92ZXJsYXkuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgZGlnaXRhbCB6b29tIGludGVyZmFjZSwgaW5jbHVkaW5nIHN0cnVjdAorPHN0cnVjdG5hbWU+djRsMl96b29tY2FwPC9zdHJ1Y3RuYW1lPiwgc3RydWN0Cis8c3RydWN0bmFtZT52NGwyX3pvb208L3N0cnVjdG5hbWU+LAorPGNvbnN0YW50PlY0TDJfWk9PTV9OT05DQVA8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX1pPT01fV0hJTEVTVFJFQU1JTkc8L2NvbnN0YW50PiB3YXMgcmVwbGFjZWQgYnkgYSBuZXcKK2Nyb3BwaW5nIGFuZCBzY2FsaW5nIGludGVyZmFjZS4gVGhlIHByZXZpb3VzbHkgdW51c2VkIHN0cnVjdAorPHN0cnVjdG5hbWU+djRsMl9jcm9wY2FwPC9zdHJ1Y3RuYW1lPiBhbmQKKzxzdHJ1Y3RuYW1lPnY0bDJfY3JvcDwvc3RydWN0bmFtZT4gd2hlcmUgcmVkZWZpbmVkIGZvciB0aGlzIHB1cnBvc2UuCitTZWUgPHhyZWYgbGlua2VuZD0iY3JvcCIgLz4gZm9yIGRldGFpbHMuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5JbiAmdjRsMi12YmktZm9ybWF0OyB0aGUKKzxzdHJ1Y3RmaWVsZD5TQU1QTEVfRk9STUFUPC9zdHJ1Y3RmaWVsZD4gZmllbGQgbm93IGNvbnRhaW5zIGEKK2ZvdXItY2hhcmFjdGVyLWNvZGUgYXMgdXNlZCB0byBpZGVudGlmeSB2aWRlbyBpbWFnZSBmb3JtYXRzIGFuZAorPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9HUkVZPC9jb25zdGFudD4gcmVwbGFjZXMgdGhlCis8Y29uc3RhbnQ+VjRMMl9WQklfU0ZfVUJZVEU8L2NvbnN0YW50PiBkZWZpbmUuIFRoZQorPHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD4gZmllbGQgd2FzIGV4dGVuZGVkLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCSAgPHBhcmE+SW4gJnY0bDItY2FwdHVyZXBhcm07IHRoZSB0eXBlIG9mIHRoZQorPHN0cnVjdGZpZWxkPnRpbWVwZXJmcmFtZTwvc3RydWN0ZmllbGQ+IGZpZWxkIGNoYW5nZWQgZnJvbSB1bnNpZ25lZAorbG9uZyB0byAmdjRsMi1mcmFjdDsuIFRoaXMgYWxsb3dzIHRoZSBhY2N1cmF0ZSBleHByZXNzaW9uIG9mIG11bHRpcGxlcworb2YgdGhlIE5UU0MtTSBmcmFtZSByYXRlIDMwMDAwIC8gMTAwMS4gQSBuZXcgZmllbGQKKzxzdHJ1Y3RmaWVsZD5yZWFkYnVmZmVyczwvc3RydWN0ZmllbGQ+IHdhcyBhZGRlZCB0byBjb250cm9sIHRoZSBkcml2ZXIKK2JlaGF2aW91ciBpbiByZWFkIEkvTyBtb2RlLjwvcGFyYT4KKworCSAgPHBhcmE+U2ltaWxhciBjaGFuZ2VzIHdlcmUgbWFkZSB0byAmdjRsMi1vdXRwdXRwYXJtOy48L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSBzdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9wZXJmb3JtYW5jZTwvc3RydWN0bmFtZT4KK2FuZCA8Y29uc3RhbnQ+VklESU9DX0dfUEVSRjwvY29uc3RhbnQ+IGlvY3RsIHdlcmUgZHJvcHBlZC4gRXhjZXB0IHdoZW4KK3VzaW5nIHRoZSA8bGluayBsaW5rZW5kPSJydyI+cmVhZC93cml0ZSBJL08gbWV0aG9kPC9saW5rPiwgd2hpY2ggaXMKK2xpbWl0ZWQgYW55d2F5LCB0aGlzIGluZm9ybWF0aW9uIGlzIGFscmVhZHkgYXZhaWxhYmxlIHRvCithcHBsaWNhdGlvbnMuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgZXhhbXBsZSB0cmFuc2Zvcm1hdGlvbiBmcm9tIFJHQiB0byBZQ2JDciBjb2xvcgorc3BhY2UgaW4gdGhlIG9sZCBWNEwyIGRvY3VtZW50YXRpb24gd2FzIGluYWNjdXJhdGUsIHRoaXMgaGFzIGJlZW4KK2NvcnJlY3RlZCBpbiA8eHJlZiBsaW5rZW5kPSJwaXhmbXQiIC8+LjwhLS0gMC41NjcwRyBzaG91bGQgYmUKKzAuNTg3LCBhbmQgMTI3LzExMiAhPSAyNTUvMjI0IC0tPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5WNEwyIDIwMDMtMDYtMTk8L3RpdGxlPgorCisgICAgICA8b3JkZXJlZGxpc3Q+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+QSBuZXcgY2FwYWJpbGl0eSBmbGFnCis8Y29uc3RhbnQ+VjRMMl9DQVBfUkFESU88L2NvbnN0YW50PiB3YXMgYWRkZWQgZm9yIHJhZGlvIGRldmljZXMuIFByaW9yCit0byB0aGlzIGNoYW5nZSByYWRpbyBkZXZpY2VzIHdvdWxkIGlkZW50aWZ5IHNvbGVseSBieSBoYXZpbmcgZXhhY3RseSBvbmUKK3R1bmVyIHdob3NlIHR5cGUgZmllbGQgcmVhZHMgPGNvbnN0YW50PlY0TDJfVFVORVJfUkFESU88L2NvbnN0YW50Pi48L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkFuIG9wdGlvbmFsIGRyaXZlciBhY2Nlc3MgcHJpb3JpdHkgbWVjaGFuaXNtIHdhcworYWRkZWQsIHNlZSA8eHJlZiBsaW5rZW5kPSJhcHAtcHJpIiAvPiBmb3IgZGV0YWlscy48L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSBhdWRpbyBpbnB1dCBhbmQgb3V0cHV0IGludGVyZmFjZSB3YXMgZm91bmQgdG8gYmUKK2luY29tcGxldGUuPC9wYXJhPgorCSAgPHBhcmE+UHJldmlvdXNseSB0aGUgJlZJRElPQy1HLUFVRElPOworaW9jdGwgd291bGQgZW51bWVyYXRlIHRoZSBhdmFpbGFibGUgYXVkaW8gaW5wdXRzLiBBbiBpb2N0bCB0bworZGV0ZXJtaW5lIHRoZSBjdXJyZW50IGF1ZGlvIGlucHV0LCBpZiBtb3JlIHRoYW4gb25lIGNvbWJpbmVzIHdpdGggdGhlCitjdXJyZW50IHZpZGVvIGlucHV0LCBkaWQgbm90IGV4aXN0LiBTbworPGNvbnN0YW50PlZJRElPQ19HX0FVRElPPC9jb25zdGFudD4gd2FzIHJlbmFtZWQgdG8KKzxjb25zdGFudD5WSURJT0NfR19BVURJT19PTEQ8L2NvbnN0YW50PiwgdGhpcyBpb2N0bCB3YXMgcmVtb3ZlZCBvbgorS2VybmVsIDIuNi4zOS4gVGhlICZWSURJT0MtRU5VTUFVRElPOyBpb2N0bCB3YXMgYWRkZWQgdG8gZW51bWVyYXRlCithdWRpbyBpbnB1dHMsIHdoaWxlICZWSURJT0MtRy1BVURJTzsgbm93IHJlcG9ydHMgdGhlIGN1cnJlbnQgYXVkaW8KK2lucHV0LjwvcGFyYT4KKwkgIDxwYXJhPlRoZSBzYW1lIGNoYW5nZXMgd2VyZSBtYWRlIHRvICZWSURJT0MtRy1BVURPVVQ7IGFuZAorJlZJRElPQy1FTlVNQVVET1VUOy48L3BhcmE+CisJICA8cGFyYT5VbnRpbCBmdXJ0aGVyIHRoZSAidmlkZW9kZXYiIG1vZHVsZSB3aWxsIGF1dG9tYXRpY2FsbHkKK3RyYW5zbGF0ZSBiZXR3ZWVuIHRoZSBvbGQgYW5kIG5ldyBpb2N0bHMsIGJ1dCBkcml2ZXJzIGFuZCBhcHBsaWNhdGlvbnMKK211c3QgYmUgdXBkYXRlZCB0byBzdWNjZXNzZnVsbHkgY29tcGlsZSBhZ2Fpbi48L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSAmVklESU9DLU9WRVJMQVk7IGlvY3RsIHdhcyBpbmNvcnJlY3RseSBkZWZpbmVkIHdpdGgKK3dyaXRlLXJlYWQgcGFyYW1ldGVyLiBJdCB3YXMgY2hhbmdlZCB0byB3cml0ZS1vbmx5LCB3aGlsZSB0aGUgd3JpdGUtcmVhZAordmVyc2lvbiB3YXMgcmVuYW1lZCB0byA8Y29uc3RhbnQ+VklESU9DX09WRVJMQVlfT0xEPC9jb25zdGFudD4uIFRoZSBvbGQKK2lvY3RsIHdhcyByZW1vdmVkIG9uIEtlcm5lbCAyLjYuMzkuIFVudGlsIGZ1cnRoZXIgdGhlICJ2aWRlb2RldiIKK2tlcm5lbCBtb2R1bGUgd2lsbCBhdXRvbWF0aWNhbGx5IHRyYW5zbGF0ZSB0byB0aGUgbmV3IHZlcnNpb24sIHNvIGRyaXZlcnMKK211c3QgYmUgcmVjb21waWxlZCwgYnV0IG5vdCBhcHBsaWNhdGlvbnMuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJICA8cGFyYT48eHJlZiBsaW5rZW5kPSJvdmVybGF5IiAvPiBpbmNvcnJlY3RseSBzdGF0ZWQgdGhhdAorY2xpcHBpbmcgcmVjdGFuZ2xlcyBkZWZpbmUgcmVnaW9ucyB3aGVyZSB0aGUgdmlkZW8gY2FuIGJlIHNlZW4uCitDb3JyZWN0IGlzIHRoYXQgY2xpcHBpbmcgcmVjdGFuZ2xlcyBkZWZpbmUgcmVnaW9ucyB3aGVyZQorPGVtcGhhc2lzPm5vPC9lbXBoYXNpcz4gdmlkZW8gc2hhbGwgYmUgZGlzcGxheWVkIGFuZCBzbyB0aGUgZ3JhcGhpY3MKK3N1cmZhY2UgY2FuIGJlIHNlZW4uPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgJlZJRElPQy1TLVBBUk07IGFuZCAmVklESU9DLVMtQ1RSTDsgaW9jdGxzIHdlcmUKK2RlZmluZWQgd2l0aCB3cml0ZS1vbmx5IHBhcmFtZXRlciwgaW5jb25zaXN0ZW50IHdpdGggb3RoZXIgaW9jdGxzCittb2RpZnlpbmcgdGhlaXIgYXJndW1lbnQuIFRoZXkgd2VyZSBjaGFuZ2VkIHRvIHdyaXRlLXJlYWQsIHdoaWxlIGEKKzxjb25zdGFudD5fT0xEPC9jb25zdGFudD4gc3VmZml4IHdhcyBhZGRlZCB0byB0aGUgd3JpdGUtb25seSB2ZXJzaW9ucy4KK1RoZSBvbGQgaW9jdGxzIHdlcmUgcmVtb3ZlZCBvbiBLZXJuZWwgMi42LjM5LiBEcml2ZXJzIGFuZAorYXBwbGljYXRpb25zIGFzc3VtaW5nIGEgY29uc3RhbnQgcGFyYW1ldGVyIG5lZWQgYW4gdXBkYXRlLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5WNEwyIDIwMDMtMTEtMDU8L3RpdGxlPgorICAgICAgPG9yZGVyZWRsaXN0PgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkluIDx4cmVmIGxpbmtlbmQ9InBpeGZtdC1yZ2IiIC8+IHRoZSBmb2xsb3dpbmcgcGl4ZWwKK2Zvcm1hdHMgd2VyZSBpbmNvcnJlY3RseSB0cmFuc2ZlcnJlZCBmcm9tIEJpbGwgRGlya3MnIFY0TDIKK3NwZWNpZmljYXRpb24uIERlc2NyaXB0aW9ucyBiZWxvdyByZWZlciB0byBieXRlcyBpbiBtZW1vcnksIGluCithc2NlbmRpbmcgYWRkcmVzcyBvcmRlci48aW5mb3JtYWx0YWJsZT4KKwkgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCQk8dGhlYWQ+CisJCSAgPHJvdz4KKwkJICAgIDxlbnRyeT5TeW1ib2w8L2VudHJ5PgorCQkgICAgPGVudHJ5PkluIHRoaXMgZG9jdW1lbnQgcHJpb3IgdG8gcmV2aXNpb24KKzAuNTwvZW50cnk+CisJCSAgICA8ZW50cnk+Q29ycmVjdGVkPC9lbnRyeT4KKwkJICA8L3Jvdz4KKwkJPC90aGVhZD4KKwkJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICA8cm93PgorCQkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfUkdCMjQ8L2NvbnN0YW50PjwvZW50cnk+CisJCSAgICA8ZW50cnk+QiwgRywgUjwvZW50cnk+CisJCSAgICA8ZW50cnk+UiwgRywgQjwvZW50cnk+CisJCSAgPC9yb3c+CisJCSAgPHJvdz4KKwkJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0JHUjI0PC9jb25zdGFudD48L2VudHJ5PgorCQkgICAgPGVudHJ5PlIsIEcsIEI8L2VudHJ5PgorCQkgICAgPGVudHJ5PkIsIEcsIFI8L2VudHJ5PgorCQkgIDwvcm93PgorCQkgIDxyb3c+CisJCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9SR0IzMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJICAgIDxlbnRyeT5CLCBHLCBSLCBYPC9lbnRyeT4KKwkJICAgIDxlbnRyeT5SLCBHLCBCLCBYPC9lbnRyeT4KKwkJICA8L3Jvdz4KKwkJICA8cm93PgorCQkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfQkdSMzI8L2NvbnN0YW50PjwvZW50cnk+CisJCSAgICA8ZW50cnk+UiwgRywgQiwgWDwvZW50cnk+CisJCSAgICA8ZW50cnk+QiwgRywgUiwgWDwvZW50cnk+CisJCSAgPC9yb3c+CisJCTwvdGJvZHk+CisJICAgICAgPC90Z3JvdXA+CisJICAgIDwvaW5mb3JtYWx0YWJsZT4gVGhlCis8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0JHUjI0PC9jb25zdGFudD4gZXhhbXBsZSB3YXMgYWx3YXlzCitjb3JyZWN0LjwvcGFyYT4KKwkgIDxwYXJhPkluIDx4cmVmIGxpbmtlbmQ9InY0bC1pbWFnZS1wcm9wZXJ0aWVzIiAvPiB0aGUgbWFwcGluZworb2YgdGhlIFY0TCA8Y29uc3RhbnQ+VklERU9fUEFMRVRURV9SR0IyNDwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlZJREVPX1BBTEVUVEVfUkdCMzI8L2NvbnN0YW50PiBmb3JtYXRzIHRvIFY0TDIgcGl4ZWwgZm9ybWF0cword2FzIGFjY29yZGluZ2x5IGNvcnJlY3RlZC48L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlVucmVsYXRlZCB0byB0aGUgZml4ZXMgYWJvdmUsIGRyaXZlcnMgbWF5IHN0aWxsCitpbnRlcnByZXQgc29tZSBWNEwyIFJHQiBwaXhlbCBmb3JtYXRzIGRpZmZlcmVudGx5LiBUaGVzZSBpc3N1ZXMgaGF2ZQoreWV0IHRvIGJlIGFkZHJlc3NlZCwgZm9yIGRldGFpbHMgc2VlIDx4cmVmCisJICAgICAgbGlua2VuZD0icGl4Zm10LXJnYiIgLz4uPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgaW4gTGludXggMi42LjYsIDIwMDQtMDUtMDk8L3RpdGxlPgorICAgICAgPG9yZGVyZWRsaXN0PgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSAmVklESU9DLUNST1BDQVA7IGlvY3RsIHdhcyBpbmNvcnJlY3RseSBkZWZpbmVkCit3aXRoIHJlYWQtb25seSBwYXJhbWV0ZXIuIEl0IGlzIG5vdyBkZWZpbmVkIGFzIHdyaXRlLXJlYWQgaW9jdGwsIHdoaWxlCit0aGUgcmVhZC1vbmx5IHZlcnNpb24gd2FzIHJlbmFtZWQgdG8KKzxjb25zdGFudD5WSURJT0NfQ1JPUENBUF9PTEQ8L2NvbnN0YW50Pi4gVGhlIG9sZCBpb2N0bCB3YXMgcmVtb3ZlZAorb24gS2VybmVsIDIuNi4zOS48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+VjRMMiBpbiBMaW51eCAyLjYuODwvdGl0bGU+CisgICAgICA8b3JkZXJlZGxpc3Q+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+QSBuZXcgZmllbGQgPHN0cnVjdGZpZWxkPmlucHV0PC9zdHJ1Y3RmaWVsZD4gKGZvcm1lcgorPHN0cnVjdGZpZWxkPnJlc2VydmVkWzBdPC9zdHJ1Y3RmaWVsZD4pIHdhcyBhZGRlZCB0byB0aGUgJnY0bDItYnVmZmVyOworc3RydWN0dXJlLiBQdXJwb3NlIG9mIHRoaXMgZmllbGQgaXMgdG8gYWx0ZXJuYXRlIGJldHdlZW4gdmlkZW8gaW5wdXRzCisoJmVnOyBjYW1lcmFzKSBpbiBzdGVwIHdpdGggdGhlIHZpZGVvIGNhcHR1cmluZyBwcm9jZXNzLiBUaGlzIGZ1bmN0aW9uCittdXN0IGJlIGVuYWJsZWQgd2l0aCB0aGUgbmV3IDxjb25zdGFudD5WNEwyX0JVRl9GTEFHX0lOUFVUPC9jb25zdGFudD4KK2ZsYWcuIFRoZSA8c3RydWN0ZmllbGQ+ZmxhZ3M8L3N0cnVjdGZpZWxkPiBmaWVsZCBpcyBubyBsb25nZXIKK3JlYWQtb25seS48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+VjRMMiBzcGVjIGVycmF0dW0gMjAwNC0wOC0wMTwvdGl0bGU+CisKKyAgICAgIDxvcmRlcmVkbGlzdD4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgcmV0dXJuIHZhbHVlIG9mIHRoZQorPHhyZWYgbGlua2VuZD0iZnVuYy1vcGVuIiAvPiBmdW5jdGlvbiB3YXMgaW5jb3JyZWN0bHkgZG9jdW1lbnRlZC48L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkF1ZGlvIG91dHB1dCBpb2N0bHMgZW5kIGluIC1BVURPVVQsIG5vdCAtQVVESU9PVVQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5JbiB0aGUgQ3VycmVudCBBdWRpbyBJbnB1dCBleGFtcGxlIHRoZQorPGNvbnN0YW50PlZJRElPQ19HX0FVRElPPC9jb25zdGFudD4gaW9jdGwgdG9vayB0aGUgd3JvbmcKK2FyZ3VtZW50LjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIGRvY3VtZW50YXRpb24gb2YgdGhlICZWSURJT0MtUUJVRjsgYW5kCismVklESU9DLURRQlVGOyBpb2N0bHMgZGlkIG5vdCBtZW50aW9uIHRoZSAmdjRsMi1idWZmZXI7Cis8c3RydWN0ZmllbGQ+bWVtb3J5PC9zdHJ1Y3RmaWVsZD4gZmllbGQuIEl0IHdhcyBhbHNvIG1pc3NpbmcgZnJvbQorZXhhbXBsZXMuIEFsc28gb24gdGhlIDxjb25zdGFudD5WSURJT0NfRFFCVUY8L2NvbnN0YW50PiBwYWdlIHRoZSAmRUlPOword2FzIG5vdCBkb2N1bWVudGVkLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5WNEwyIGluIExpbnV4IDIuNi4xNDwvdGl0bGU+CisgICAgICA8b3JkZXJlZGxpc3Q+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+QSBuZXcgc2xpY2VkIFZCSSBpbnRlcmZhY2Ugd2FzIGFkZGVkLiBJdCBpcyBkb2N1bWVudGVkCitpbiA8eHJlZiBsaW5rZW5kPSJzbGljZWQiIC8+IGFuZCByZXBsYWNlcyB0aGUgaW50ZXJmYWNlIGZpcnN0Citwcm9wb3NlZCBpbiBWNEwyIHNwZWNpZmljYXRpb24gMC44LjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5WNEwyIGluIExpbnV4IDIuNi4xNTwvdGl0bGU+CisgICAgICA8b3JkZXJlZGxpc3Q+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlICZWSURJT0MtTE9HLVNUQVRVUzsgaW9jdGwgd2FzIGFkZGVkLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCSAgPHBhcmE+TmV3IHZpZGVvIHN0YW5kYXJkcworPGNvbnN0YW50PlY0TDJfU1REX05UU0NfNDQzPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9TVERfU0VDQU1fTEM8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WNEwyX1NURF9TRUNBTV9ESzwvY29uc3RhbnQ+IChhIHNldCBvZiBTRUNBTSBELCBLIGFuZCBLMSksCithbmQgPGNvbnN0YW50PlY0TDJfU1REX0FUU0M8L2NvbnN0YW50PiAoYSBzZXQgb2YKKzxjb25zdGFudD5WNEwyX1NURF9BVFNDXzhfVlNCPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VjRMMl9TVERfQVRTQ18xNl9WU0I8L2NvbnN0YW50Pikgd2VyZSBkZWZpbmVkLiBOb3RlIHRoZQorPGNvbnN0YW50PlY0TDJfU1REXzUyNV82MDwvY29uc3RhbnQ+IHNldCBub3cgaW5jbHVkZXMKKzxjb25zdGFudD5WNEwyX1NURF9OVFNDXzQ0MzwvY29uc3RhbnQ+LiBTZWUgYWxzbyA8eHJlZgorCSAgICAgIGxpbmtlbmQ9InY0bDItc3RkLWlkIiAvPi48L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSA8Y29uc3RhbnQ+VklESU9DX0dfQ09NUDwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlZJRElPQ19TX0NPTVA8L2NvbnN0YW50PiBpb2N0bCB3ZXJlIHJlbmFtZWQgdG8KKzxjb25zdGFudD5WSURJT0NfR19NUEVHQ09NUDwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlZJRElPQ19TX01QRUdDT01QPC9jb25zdGFudD4gcmVzcGVjdGl2ZWx5LiBUaGVpciBhcmd1bWVudAord2FzIHJlcGxhY2VkIGJ5IGEgc3RydWN0Cis8c3RydWN0bmFtZT52NGwyX21wZWdfY29tcHJlc3Npb248L3N0cnVjdG5hbWU+IHBvaW50ZXIuIChUaGUKKzxjb25zdGFudD5WSURJT0NfR19NUEVHQ09NUDwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlZJRElPQ19TX01QRUdDT01QPC9jb25zdGFudD4gaW9jdGxzIHdoZXJlIHJlbW92ZWQgaW4gTGludXgKKzIuNi4yNS4pPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgc3BlYyBlcnJhdHVtIDIwMDUtMTEtMjc8L3RpdGxlPgorICAgICAgPHBhcmE+VGhlIGNhcHR1cmUgZXhhbXBsZSBpbiA8eHJlZiBsaW5rZW5kPSJjYXB0dXJlLWV4YW1wbGUiIC8+CitjYWxsZWQgdGhlICZWSURJT0MtUy1DUk9QOyBpb2N0bCB3aXRob3V0IGNoZWNraW5nIGlmIGNyb3BwaW5nIGlzCitzdXBwb3J0ZWQuIEluIHRoZSB2aWRlbyBzdGFuZGFyZCBzZWxlY3Rpb24gZXhhbXBsZSBpbgorPHhyZWYgbGlua2VuZD0ic3RhbmRhcmQiIC8+IHRoZSAmVklESU9DLVMtU1REOyBjYWxsIHVzZWQgdGhlIHdyb25nCithcmd1bWVudCB0eXBlLjwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5WNEwyIHNwZWMgZXJyYXR1bSAyMDA2LTAxLTEwPC90aXRsZT4KKyAgICAgIDxvcmRlcmVkbGlzdD4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgPGNvbnN0YW50PlY0TDJfSU5fU1RfQ09MT1JfS0lMTDwvY29uc3RhbnQ+IGZsYWcgaW4KKyZ2NGwyLWlucHV0OyBub3Qgb25seSBpbmRpY2F0ZXMgaWYgdGhlIGNvbG9yIGtpbGxlciBpcyBlbmFibGVkLCBidXQKK2Fsc28gaWYgaXQgaXMgYWN0aXZlLiAoVGhlIGNvbG9yIGtpbGxlciBkaXNhYmxlcyBjb2xvciBkZWNvZGluZyB3aGVuCitpdCBkZXRlY3RzIG5vIGNvbG9yIGluIHRoZSB2aWRlbyBzaWduYWwgdG8gaW1wcm92ZSB0aGUgaW1hZ2UKK3F1YWxpdHkuKTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JlZJRElPQy1TLVBBUk07IGlzIGEgd3JpdGUtcmVhZCBpb2N0bCwgbm90IHdyaXRlLW9ubHkgYXMKK3N0YXRlZCBvbiBpdHMgcmVmZXJlbmNlIHBhZ2UuIFRoZSBpb2N0bCBjaGFuZ2VkIGluIDIwMDMgYXMgbm90ZWQgYWJvdmUuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgc3BlYyBlcnJhdHVtIDIwMDYtMDItMDM8L3RpdGxlPgorICAgICAgPG9yZGVyZWRsaXN0PgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkluICZ2NGwyLWNhcHR1cmVwYXJtOyBhbmQgJnY0bDItb3V0cHV0cGFybTsgdGhlCis8c3RydWN0ZmllbGQ+dGltZXBlcmZyYW1lPC9zdHJ1Y3RmaWVsZD4gZmllbGQgZ2l2ZXMgdGhlIHRpbWUgaW4KK3NlY29uZHMsIG5vdCBtaWNyb3NlY29uZHMuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgc3BlYyBlcnJhdHVtIDIwMDYtMDItMDQ8L3RpdGxlPgorICAgICAgPG9yZGVyZWRsaXN0PgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSA8c3RydWN0ZmllbGQ+Y2xpcHM8L3N0cnVjdGZpZWxkPiBmaWVsZCBpbgorJnY0bDItd2luZG93OyBtdXN0IHBvaW50IHRvIGFuIGFycmF5IG9mICZ2NGwyLWNsaXA7LCBub3QgYSBsaW5rZWQKK2xpc3QsIGJlY2F1c2UgZHJpdmVycyBpZ25vcmUgdGhlIHN0cnVjdAorPHN0cnVjdG5hbWU+djRsMl9jbGlwPC9zdHJ1Y3RuYW1lPi48c3RydWN0ZmllbGQ+bmV4dDwvc3RydWN0ZmllbGQ+Citwb2ludGVyLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5WNEwyIGluIExpbnV4IDIuNi4xNzwvdGl0bGU+CisgICAgICA8b3JkZXJlZGxpc3Q+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+TmV3IHZpZGVvIHN0YW5kYXJkIG1hY3JvcyB3ZXJlIGFkZGVkOgorPGNvbnN0YW50PlY0TDJfU1REX05UU0NfTV9LUjwvY29uc3RhbnQ+IChOVFNDIE0gU291dGggS29yZWEpLCBhbmQgdGhlCitzZXRzIDxjb25zdGFudD5WNEwyX1NURF9NTjwvY29uc3RhbnQ+LAorPGNvbnN0YW50PlY0TDJfU1REX0I8L2NvbnN0YW50PiwgPGNvbnN0YW50PlY0TDJfU1REX0dIPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VjRMMl9TVERfREs8L2NvbnN0YW50Pi4gVGhlCis8Y29uc3RhbnQ+VjRMMl9TVERfTlRTQzwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlY0TDJfU1REX1NFQ0FNPC9jb25zdGFudD4gc2V0cyBub3cgaW5jbHVkZQorPGNvbnN0YW50PlY0TDJfU1REX05UU0NfTV9LUjwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlY0TDJfU1REX1NFQ0FNX0xDPC9jb25zdGFudD4gcmVzcGVjdGl2ZWx5LjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCSAgPHBhcmE+QSBuZXcgPGNvbnN0YW50PlY0TDJfVFVORVJfTU9ERV9MQU5HMV9MQU5HMjwvY29uc3RhbnQ+Cit3YXMgZGVmaW5lZCB0byByZWNvcmQgYm90aCBsYW5ndWFnZXMgb2YgYSBiaWxpbmd1YWwgcHJvZ3JhbS4gVGhlCit1c2Ugb2YgPGNvbnN0YW50PlY0TDJfVFVORVJfTU9ERV9TVEVSRU88L2NvbnN0YW50PiBmb3IgdGhpcyBwdXJwb3NlCitpcyBkZXByZWNhdGVkIG5vdy4gU2VlIHRoZSAmVklESU9DLUctVFVORVI7IHNlY3Rpb24gZm9yCitkZXRhaWxzLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5WNEwyIHNwZWMgZXJyYXR1bSAyMDA2LTA5LTIzIChEcmFmdCAwLjE1KTwvdGl0bGU+CisgICAgICA8b3JkZXJlZGxpc3Q+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+SW4gdmFyaW91cyBwbGFjZXMKKzxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1NMSUNFRF9WQklfQ0FQVFVSRTwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfU0xJQ0VEX1ZCSV9PVVRQVVQ8L2NvbnN0YW50PiBvZiB0aGUgc2xpY2VkIFZCSQoraW50ZXJmYWNlIHdlcmUgbm90IG1lbnRpb25lZCBhbG9uZyB3aXRoIG90aGVyIGJ1ZmZlciB0eXBlcy48L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkluIDx4cmVmIGxpbmtlbmQ9InZpZGlvYy1nLWF1ZGlvIiAvPiBpdCB3YXMgY2xhcmlmaWVkCit0aGF0IHRoZSAmdjRsMi1hdWRpbzsgPHN0cnVjdGZpZWxkPm1vZGU8L3N0cnVjdGZpZWxkPiBmaWVsZCBpcyBhIGZsYWdzCitmaWVsZC48L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjx4cmVmIGxpbmtlbmQ9InZpZGlvYy1xdWVyeWNhcCIgLz4gZGlkIG5vdCBtZW50aW9uIHRoZQorc2xpY2VkIFZCSSBhbmQgcmFkaW8gY2FwYWJpbGl0eSBmbGFncy48L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkluIDx4cmVmIGxpbmtlbmQ9InZpZGlvYy1nLWZyZXF1ZW5jeSIgLz4gaXQgd2FzCitjbGFyaWZpZWQgdGhhdCBhcHBsaWNhdGlvbnMgbXVzdCBpbml0aWFsaXplIHRoZSB0dW5lcgorPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiAmdjRsMi1mcmVxdWVuY3k7IGJlZm9yZQorY2FsbGluZyAmVklESU9DLVMtRlJFUVVFTkNZOy48L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSA8c3RydWN0ZmllbGQ+cmVzZXJ2ZWQ8L3N0cnVjdGZpZWxkPiBhcnJheQoraW4gJnY0bDItcmVxdWVzdGJ1ZmZlcnM7IGhhcyAyIGVsZW1lbnRzLCBub3QgMzIuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5JbiA8eHJlZiBsaW5rZW5kPSJvdXRwdXQiIC8+IGFuZCA8eHJlZgorCSAgICAgIGxpbmtlbmQ9InJhdy12YmkiIC8+IHRoZSBkZXZpY2UgZmlsZSBuYW1lcworPGZpbGVuYW1lPi9kZXYvdm91dDwvZmlsZW5hbWU+IHdoaWNoIG5ldmVyIGNhdWdodCBvbiB3ZXJlIHJlcGxhY2VkCitieSA8ZmlsZW5hbWU+L2Rldi92aWRlbzwvZmlsZW5hbWU+LjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCSAgPHBhcmE+V2l0aCBMaW51eCAyLjYuMTUgdGhlIHBvc3NpYmxlIHJhbmdlIGZvciBWQkkgZGV2aWNlIG1pbm9yCitudW1iZXJzIHdhcyBleHRlbmRlZCBmcm9tIDIyNC0yMzkgdG8gMjI0LTI1NS4gQWNjb3JkaW5nbHkgZGV2aWNlIGZpbGUgbmFtZXMKKzxmaWxlbmFtZT4vZGV2L3ZiaTA8L2ZpbGVuYW1lPiB0byA8ZmlsZW5hbWU+L2Rldi92YmkzMTwvZmlsZW5hbWU+IGFyZQorcG9zc2libGUgbm93LjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5WNEwyIGluIExpbnV4IDIuNi4xODwvdGl0bGU+CisgICAgICA8b3JkZXJlZGxpc3Q+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+TmV3IGlvY3RscyAmVklESU9DLUctRVhULUNUUkxTOywgJlZJRElPQy1TLUVYVC1DVFJMUzsKK2FuZCAmVklESU9DLVRSWS1FWFQtQ1RSTFM7IHdlcmUgYWRkZWQsIGEgZmxhZyB0byBza2lwIHVuc3VwcG9ydGVkCitjb250cm9scyB3aXRoICZWSURJT0MtUVVFUllDVFJMOywgbmV3IGNvbnRyb2wgdHlwZXMKKzxjb25zdGFudD5WNEwyX0NUUkxfVFlQRV9JTlRFR0VSNjQ8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX0NUUkxfVFlQRV9DVFJMX0NMQVNTPC9jb25zdGFudD4gKDx4cmVmCisJICAgICAgbGlua2VuZD0idjRsMi1jdHJsLXR5cGUiIC8+KSwgYW5kIG5ldyBjb250cm9sIGZsYWdzCis8Y29uc3RhbnQ+VjRMMl9DVFJMX0ZMQUdfUkVBRF9PTkxZPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9DVFJMX0ZMQUdfVVBEQVRFPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9DVFJMX0ZMQUdfSU5BQ1RJVkU8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX0NUUkxfRkxBR19TTElERVI8L2NvbnN0YW50PiAoPHhyZWYKKwkgICAgICBsaW5rZW5kPSJjb250cm9sLWZsYWdzIiAvPikuIFNlZSA8eHJlZgorCSAgICAgIGxpbmtlbmQ9ImV4dGVuZGVkLWNvbnRyb2xzIiAvPiBmb3IgZGV0YWlscy48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+VjRMMiBpbiBMaW51eCAyLjYuMTk8L3RpdGxlPgorICAgICAgPG9yZGVyZWRsaXN0PgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkluICZ2NGwyLXNsaWNlZC12YmktY2FwOyBhIGJ1ZmZlciB0eXBlIGZpZWxkIHdhcyBhZGRlZAorcmVwbGFjaW5nIGEgcmVzZXJ2ZWQgZmllbGQuIE5vdGUgb24gYXJjaGl0ZWN0dXJlcyB3aGVyZSB0aGUgc2l6ZSBvZgorZW51bSB0eXBlcyBkaWZmZXJzIGZyb20gaW50IHR5cGVzIHRoZSBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgY2hhbmdlZC4KK1RoZSAmVklESU9DLUctU0xJQ0VELVZCSS1DQVA7IGlvY3RsIHdhcyByZWRlZmluZWQgZnJvbSBiZWluZyByZWFkLW9ubHkKK3RvIHdyaXRlLXJlYWQuIEFwcGxpY2F0aW9ucyBtdXN0IGluaXRpYWxpemUgdGhlIHR5cGUgZmllbGQgYW5kIGNsZWFyCit0aGUgcmVzZXJ2ZWQgZmllbGRzIG5vdy4gVGhlc2UgY2hhbmdlcyBtYXkgPGVtcGhhc2lzPmJyZWFrIHRoZQorY29tcGF0aWJpbGl0eTwvZW1waGFzaXM+IHdpdGggb2xkZXIgZHJpdmVycyBhbmQgYXBwbGljYXRpb25zLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIGlvY3RscyAmVklESU9DLUVOVU0tRlJBTUVTSVpFUzsgYW5kCismVklESU9DLUVOVU0tRlJBTUVJTlRFUlZBTFM7IHdlcmUgYWRkZWQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5BIG5ldyBwaXhlbCBmb3JtYXQgPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9SR0I0NDQ8L2NvbnN0YW50PiAoPHhyZWYKK2xpbmtlbmQ9InJnYi1mb3JtYXRzIiAvPikgd2FzIGFkZGVkLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5WNEwyIHNwZWMgZXJyYXR1bSAyMDA2LTEwLTEyIChEcmFmdCAwLjE3KTwvdGl0bGU+CisgICAgICA8b3JkZXJlZGxpc3Q+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ITTEyPC9jb25zdGFudD4gKDx4cmVmCitsaW5rZW5kPSJyZXNlcnZlZC1mb3JtYXRzIiAvPikgaXMgYSBZVVYgNDoyOjAsIG5vdCA0OjI6MiBmb3JtYXQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgaW4gTGludXggMi42LjIxPC90aXRsZT4KKyAgICAgIDxvcmRlcmVkbGlzdD4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgPGZpbGVuYW1lPnZpZGVvZGV2Mi5oPC9maWxlbmFtZT4gaGVhZGVyIGZpbGUgaXMKK25vdyBkdWFsIGxpY2Vuc2VkIHVuZGVyIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gdHdvIG9yCitsYXRlciwgYW5kIHVuZGVyIGEgMy1jbGF1c2UgQlNELXN0eWxlIGxpY2Vuc2UuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgaW4gTGludXggMi42LjIyPC90aXRsZT4KKyAgICAgIDxvcmRlcmVkbGlzdD4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5Ud28gbmV3IGZpZWxkIG9yZGVycworCSAgPGNvbnN0YW50PlY0TDJfRklFTERfSU5URVJMQUNFRF9UQjwvY29uc3RhbnQ+IGFuZAorCSAgPGNvbnN0YW50PlY0TDJfRklFTERfSU5URVJMQUNFRF9CVDwvY29uc3RhbnQ+IHdlcmUKKwkgIGFkZGVkLiBTZWUgPHhyZWYgbGlua2VuZD0idjRsMi1maWVsZCIgLz4gZm9yIGRldGFpbHMuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaHJlZSBuZXcgY2xpcHBpbmcvYmxlbmRpbmcgbWV0aG9kcyB3aXRoIGEgZ2xvYmFsIG9yCitzdHJhaWdodCBvciBpbnZlcnRlZCBsb2NhbCBhbHBoYSB2YWx1ZSB3ZXJlIGFkZGVkIHRvIHRoZSB2aWRlbyBvdmVybGF5CitpbnRlcmZhY2UuIFNlZSB0aGUgZGVzY3JpcHRpb24gb2YgdGhlICZWSURJT0MtRy1GQlVGOyBhbmQKKyZWSURJT0MtUy1GQlVGOyBpb2N0bHMgZm9yIGRldGFpbHMuPC9wYXJhPgorCSAgPHBhcmE+QSBuZXcgPHN0cnVjdGZpZWxkPmdsb2JhbF9hbHBoYTwvc3RydWN0ZmllbGQ+IGZpZWxkCit3YXMgYWRkZWQgdG8gPGxpbmsKK2xpbmtlbmQ9InY0bDItd2luZG93Ij48c3RydWN0bmFtZT52NGwyX3dpbmRvdzwvc3RydWN0bmFtZT48L2xpbms+LAorZXh0ZW5kaW5nIHRoZSBzdHJ1Y3R1cmUuIFRoaXMgbWF5IDxlbXBoYXNpcz5icmVhaworY29tcGF0aWJpbGl0eTwvZW1waGFzaXM+IHdpdGggYXBwbGljYXRpb25zIHVzaW5nIGEgc3RydWN0Cis8c3RydWN0bmFtZT52NGwyX3dpbmRvdzwvc3RydWN0bmFtZT4gZGlyZWN0bHkuIEhvd2V2ZXIgdGhlIDxsaW5rCitsaW5rZW5kPSJ2aWRpb2MtZy1mbXQiPlZJRElPQ19HL1MvVFJZX0ZNVDwvbGluaz4gaW9jdGxzLCB3aGljaCB0YWtlIGEKK3BvaW50ZXIgdG8gYSA8bGluayBsaW5rZW5kPSJ2NGwyLWZvcm1hdCI+djRsMl9mb3JtYXQ8L2xpbms+IHBhcmVudAorc3RydWN0dXJlIHdpdGggcGFkZGluZyBieXRlcyBhdCB0aGUgZW5kLCBhcmUgbm90IGFmZmVjdGVkLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIGZvcm1hdCBvZiB0aGUgPHN0cnVjdGZpZWxkPmNocm9tYWtleTwvc3RydWN0ZmllbGQ+CitmaWVsZCBpbiAmdjRsMi13aW5kb3c7IGNoYW5nZWQgZnJvbSAiaG9zdCBvcmRlciBSR0IzMiIgdG8gYSBwaXhlbAordmFsdWUgaW4gdGhlIHNhbWUgZm9ybWF0IGFzIHRoZSBmcmFtZWJ1ZmZlci4gVGhpcyBtYXkgPGVtcGhhc2lzPmJyZWFrCitjb21wYXRpYmlsaXR5PC9lbXBoYXNpcz4gd2l0aCBleGlzdGluZyBhcHBsaWNhdGlvbnMuIERyaXZlcnMKK3N1cHBvcnRpbmcgdGhlICJob3N0IG9yZGVyIFJHQjMyIiBmb3JtYXQgYXJlIG5vdCBrbm93bi48L3BhcmE+CisJPC9saXN0aXRlbT4KKworICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5WNEwyIGluIExpbnV4IDIuNi4yNDwvdGl0bGU+CisgICAgICA8b3JkZXJlZGxpc3Q+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIHBpeGVsIGZvcm1hdHMKKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfUEFMODwvY29uc3RhbnQ+LAorPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZVVY0NDQ8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfWVVWNTU1PC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1lVVjU2NTwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZVVYzMjwvY29uc3RhbnQ+IHdlcmUgYWRkZWQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgaW4gTGludXggMi42LjI1PC90aXRsZT4KKyAgICAgIDxvcmRlcmVkbGlzdD4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgcGl4ZWwgZm9ybWF0cyA8bGluayBsaW5rZW5kPSJWNEwyLVBJWC1GTVQtWTE2Ij4KKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfWTE2PC9jb25zdGFudD48L2xpbms+IGFuZCA8bGluaworbGlua2VuZD0iVjRMMi1QSVgtRk1ULVNCR0dSMTYiPgorPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TQkdHUjE2PC9jb25zdGFudD48L2xpbms+IHdlcmUgYWRkZWQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+TmV3IDxsaW5rIGxpbmtlbmQ9ImNvbnRyb2wiPmNvbnRyb2xzPC9saW5rPgorPGNvbnN0YW50PlY0TDJfQ0lEX1BPV0VSX0xJTkVfRlJFUVVFTkNZPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9DSURfSFVFX0FVVE88L2NvbnN0YW50PiwKKzxjb25zdGFudD5WNEwyX0NJRF9XSElURV9CQUxBTkNFX1RFTVBFUkFUVVJFPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9DSURfU0hBUlBORVNTPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VjRMMl9DSURfQkFDS0xJR0hUX0NPTVBFTlNBVElPTjwvY29uc3RhbnQ+IHdlcmUgYWRkZWQuIFRoZQorY29udHJvbHMgPGNvbnN0YW50PlY0TDJfQ0lEX0JMQUNLX0xFVkVMPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9DSURfV0hJVEVORVNTPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9DSURfSENFTlRFUjwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlY0TDJfQ0lEX1ZDRU5URVI8L2NvbnN0YW50PiB3ZXJlIGRlcHJlY2F0ZWQuCis8L3BhcmE+CisJPC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5BIDxsaW5rIGxpbmtlbmQ9ImNhbWVyYS1jb250cm9scyI+Q2FtZXJhIGNvbnRyb2xzCitjbGFzczwvbGluaz4gd2FzIGFkZGVkLCB3aXRoIHRoZSBuZXcgY29udHJvbHMKKzxjb25zdGFudD5WNEwyX0NJRF9FWFBPU1VSRV9BVVRPPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9DSURfRVhQT1NVUkVfQUJTT0xVVEU8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WNEwyX0NJRF9FWFBPU1VSRV9BVVRPX1BSSU9SSVRZPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9DSURfUEFOX1JFTEFUSVZFPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9DSURfVElMVF9SRUxBVElWRTwvY29uc3RhbnQ+LAorPGNvbnN0YW50PlY0TDJfQ0lEX1BBTl9SRVNFVDwvY29uc3RhbnQ+LAorPGNvbnN0YW50PlY0TDJfQ0lEX1RJTFRfUkVTRVQ8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WNEwyX0NJRF9QQU5fQUJTT0xVVEU8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WNEwyX0NJRF9USUxUX0FCU09MVVRFPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9DSURfRk9DVVNfQUJTT0xVVEU8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WNEwyX0NJRF9GT0NVU19SRUxBVElWRTwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlY0TDJfQ0lEX0ZPQ1VTX0FVVE88L2NvbnN0YW50Pi48L3BhcmE+CisJPC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgPGNvbnN0YW50PlZJRElPQ19HX01QRUdDT01QPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VklESU9DX1NfTVBFR0NPTVA8L2NvbnN0YW50PiBpb2N0bHMsIHdoaWNoIHdlcmUgc3VwZXJzZWRlZAorYnkgdGhlIDxsaW5rIGxpbmtlbmQ9ImV4dGVuZGVkLWNvbnRyb2xzIj5leHRlbmRlZCBjb250cm9sczwvbGluaz4KK2ludGVyZmFjZSBpbiBMaW51eCAyLjYuMTgsIHdoZXJlIGZpbmFsbHkgcmVtb3ZlZCBmcm9tIHRoZQorPGZpbGVuYW1lPnZpZGVvZGV2Mi5oPC9maWxlbmFtZT4gaGVhZGVyIGZpbGUuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgaW4gTGludXggMi42LjI2PC90aXRsZT4KKyAgICAgIDxvcmRlcmVkbGlzdD4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgcGl4ZWwgZm9ybWF0cworPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZMTY8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfU0JHR1IxNjwvY29uc3RhbnQ+IHdlcmUgYWRkZWQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+QWRkZWQgdXNlciBjb250cm9scworPGNvbnN0YW50PlY0TDJfQ0lEX0NIUk9NQV9BR0M8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX0NJRF9DT0xPUl9LSUxMRVI8L2NvbnN0YW50Pi48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+VjRMMiBpbiBMaW51eCAyLjYuMjc8L3RpdGxlPgorICAgICAgPG9yZGVyZWRsaXN0PgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSAmVklESU9DLVMtSFctRlJFUS1TRUVLOyBpb2N0bCBhbmQgdGhlCis8Y29uc3RhbnQ+VjRMMl9DQVBfSFdfRlJFUV9TRUVLPC9jb25zdGFudD4gY2FwYWJpbGl0eSB3ZXJlIGFkZGVkLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSBwaXhlbCBmb3JtYXRzCis8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1lWWVU8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfUENBNTAxPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1BDQTUwNTwvY29uc3RhbnQ+LAorPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9QQ0E1MDg8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfUENBNTYxPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1NHQlJHODwvY29uc3RhbnQ+LAorPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9QQUMyMDc8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfUEpQRzwvY29uc3RhbnQ+IHdlcmUgYWRkZWQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgaW4gTGludXggMi42LjI4PC90aXRsZT4KKyAgICAgIDxvcmRlcmVkbGlzdD4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5BZGRlZCA8Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0VOQ09ESU5HX0FBQzwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19FTkNPRElOR19BQzM8L2NvbnN0YW50PiBNUEVHIGF1ZGlvIGVuY29kaW5ncy48L3BhcmE+CisJPC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5BZGRlZCA8Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0VOQ09ESU5HX01QRUdfNF9BVkM8L2NvbnN0YW50PiBNUEVHCit2aWRlbyBlbmNvZGluZy48L3BhcmE+CisJPC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgcGl4ZWwgZm9ybWF0cworPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TR1JCRzEwPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1NHUkJHMTBEUENNODwvY29uc3RhbnQ+IHdlcmUgYWRkZWQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgaW4gTGludXggMi42LjI5PC90aXRsZT4KKyAgICAgIDxvcmRlcmVkbGlzdD4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgPGNvbnN0YW50PlZJRElPQ19HX0NISVBfSURFTlQ8L2NvbnN0YW50PiBpb2N0bCB3YXMgcmVuYW1lZAordG8gPGNvbnN0YW50PlZJRElPQ19HX0NISVBfSURFTlRfT0xEPC9jb25zdGFudD4gYW5kIDxjb25zdGFudD5WSURJT0NfREJHX0dfQ0hJUF9JREVOVDwvY29uc3RhbnQ+Cit3YXMgaW50cm9kdWNlZCBpbiBpdHMgcGxhY2UuIFRoZSBvbGQgc3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfY2hpcF9pZGVudDwvc3RydWN0bmFtZT4KK3dhcyByZW5hbWVkIHRvIDxzdHJ1Y3RuYW1lIGlkPSJ2NGwyLWNoaXAtaWRlbnQtb2xkIj52NGwyX2NoaXBfaWRlbnRfb2xkPC9zdHJ1Y3RuYW1lPi48L3BhcmE+CisJPC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgcGl4ZWwgZm9ybWF0cworPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9WWVVZPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX05WMTY8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfTlY2MTwvY29uc3RhbnQ+IHdlcmUgYWRkZWQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+QWRkZWQgY2FtZXJhIGNvbnRyb2xzCis8Y29uc3RhbnQ+VjRMMl9DSURfWk9PTV9BQlNPTFVURTwvY29uc3RhbnQ+LAorPGNvbnN0YW50PlY0TDJfQ0lEX1pPT01fUkVMQVRJVkU8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WNEwyX0NJRF9aT09NX0NPTlRJTlVPVVM8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX0NJRF9QUklWQUNZPC9jb25zdGFudD4uPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5WNEwyIGluIExpbnV4IDIuNi4zMDwvdGl0bGU+CisgICAgICA8b3JkZXJlZGxpc3Q+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+TmV3IGNvbnRyb2wgZmxhZyA8Y29uc3RhbnQ+VjRMMl9DVFJMX0ZMQUdfV1JJVEVfT05MWTwvY29uc3RhbnQ+IHdhcyBhZGRlZC48L3BhcmE+CisJPC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5OZXcgY29udHJvbCA8Y29uc3RhbnQ+VjRMMl9DSURfQ09MT1JGWDwvY29uc3RhbnQ+IHdhcyBhZGRlZC48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9zZWN0aW9uPgorICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgaW4gTGludXggMi42LjMyPC90aXRsZT4KKyAgICAgIDxvcmRlcmVkbGlzdD4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5JbiBvcmRlciB0byBiZSBlYXNpZXIgdG8gY29tcGFyZSBhIFY0TDIgQVBJIGFuZCBhIGtlcm5lbAordmVyc2lvbiwgbm93IFY0TDIgQVBJIGlzIG51bWJlcmVkIHVzaW5nIHRoZSBMaW51eCBLZXJuZWwgdmVyc2lvbiBudW1lcmF0aW9uLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkZpbmFsaXplZCB0aGUgUkRTIGNhcHR1cmUgQVBJLiBTZWUgPHhyZWYgbGlua2VuZD0icmRzIiAvPiBmb3IKK21vcmUgaW5mb3JtYXRpb24uPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+QWRkZWQgbmV3IGNhcGFiaWxpdGllcyBmb3IgbW9kdWxhdG9ycyBhbmQgUkRTIGVuY29kZXJzLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkFkZCBkZXNjcmlwdGlvbiBmb3IgbGlidjRsIEFQSS48L3BhcmE+CisJPC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5BZGRlZCBzdXBwb3J0IGZvciBzdHJpbmcgY29udHJvbHMgdmlhIG5ldyB0eXBlIDxjb25zdGFudD5WNEwyX0NUUkxfVFlQRV9TVFJJTkc8L2NvbnN0YW50Pi48L3BhcmE+CisJPC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5BZGRlZCA8Y29uc3RhbnQ+VjRMMl9DSURfQkFORF9TVE9QX0ZJTFRFUjwvY29uc3RhbnQ+IGRvY3VtZW50YXRpb24uPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+QWRkZWQgRk0gTW9kdWxhdG9yIChGTSBUWCkgRXh0ZW5kZWQgQ29udHJvbCBDbGFzczogPGNvbnN0YW50PlY0TDJfQ1RSTF9DTEFTU19GTV9UWDwvY29uc3RhbnQ+IGFuZCB0aGVpciBDb250cm9sIElEcy48L3BhcmE+CisJPC9saXN0aXRlbT4KKzxsaXN0aXRlbT4KKwkgIDxwYXJhPkFkZGVkIEZNIFJlY2VpdmVyIChGTSBSWCkgRXh0ZW5kZWQgQ29udHJvbCBDbGFzczogPGNvbnN0YW50PlY0TDJfQ1RSTF9DTEFTU19GTV9SWDwvY29uc3RhbnQ+IGFuZCB0aGVpciBDb250cm9sIElEcy48L3BhcmE+CisJPC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5BZGRlZCBSZW1vdGUgQ29udHJvbGxlciBjaGFwdGVyLCBkZXNjcmliaW5nIHRoZSBkZWZhdWx0IFJlbW90ZSBDb250cm9sbGVyIG1hcHBpbmcgZm9yIG1lZGlhIGRldmljZXMuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5WNEwyIGluIExpbnV4IDIuNi4zMzwvdGl0bGU+CisgICAgICA8b3JkZXJlZGxpc3Q+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+QWRkZWQgc3VwcG9ydCBmb3IgRGlnaXRhbCBWaWRlbyB0aW1pbmdzIGluIG9yZGVyIHRvIHN1cHBvcnQgSERUViByZWNlaXZlcnMgYW5kIHRyYW5zbWl0dGVycy48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9zZWN0aW9uPgorICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgaW4gTGludXggMi42LjM0PC90aXRsZT4KKyAgICAgIDxvcmRlcmVkbGlzdD4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5BZGRlZAorPGNvbnN0YW50PlY0TDJfQ0lEX0lSSVNfQUJTT0xVVEU8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX0NJRF9JUklTX1JFTEFUSVZFPC9jb25zdGFudD4gY29udHJvbHMgdG8gdGhlCisJICAgIDxsaW5rIGxpbmtlbmQ9ImNhbWVyYS1jb250cm9scyI+Q2FtZXJhIGNvbnRyb2xzIGNsYXNzPC9saW5rPi4KKwkgIDwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICA8L3NlY3Rpb24+CisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+VjRMMiBpbiBMaW51eCAyLjYuMzc8L3RpdGxlPgorICAgICAgPG9yZGVyZWRsaXN0PgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlJlbW92ZSB0aGUgdnR4ICh2aWRlb3RleHQvdGVsZXRleHQpIEFQSS4gVGhpcyBBUEkgd2FzIG5vIGxvbmdlcgordXNlZCBhbmQgbm8gaGFyZHdhcmUgZXhpc3RzIHRvIHZlcmlmeSB0aGUgQVBJLiBOb3Igd2VyZSBhbnkgdXNlcnNwYWNlIGFwcGxpY2F0aW9ucyBmb3VuZAordGhhdCB1c2VkIGl0LiBJdCB3YXMgb3JpZ2luYWxseSBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gMi42LjM1LgorCSAgPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5WNEwyIGluIExpbnV4IDIuNi4zOTwvdGl0bGU+CisgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT5UaGUgb2xkIFZJRElPQ18qX09MRCBzeW1ib2xzIGFuZCBWNEwxIHN1cHBvcnQgd2VyZSByZW1vdmVkLjwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPk11bHRpLXBsYW5hciBBUEkgYWRkZWQuIERvZXMgbm90IGFmZmVjdCB0aGUgY29tcGF0aWJpbGl0eSBvZgorICAgICAgICAgIGN1cnJlbnQgZHJpdmVycyBhbmQgYXBwbGljYXRpb25zLiBTZWUKKyAgICAgICAgICA8bGluayBsaW5rZW5kPSJwbGFuYXItYXBpcyI+bXVsdGktcGxhbmFyIEFQSTwvbGluaz4KKyAgICAgICAgICBmb3IgZGV0YWlscy48L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5WNEwyIGluIExpbnV4IDMuMTwvdGl0bGU+CisgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19RVUVSWUNBUCBub3cgcmV0dXJucyBhIHBlci1zdWJzeXN0ZW0gdmVyc2lvbiBpbnN0ZWFkIG9mIGEgcGVyLWRyaXZlciBvbmUuPC9wYXJhPgorCSAgPHBhcmE+U3RhbmRhcmRpemUgYW4gZXJyb3IgY29kZSBmb3IgaW52YWxpZCBpb2N0bC48L3BhcmE+CisgICAgICAgICAgPHBhcmE+QWRkZWQgVjRMMl9DVFJMX1RZUEVfQklUTUFTSy48L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5WNEwyIGluIExpbnV4IDMuMjwvdGl0bGU+CisgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT4KKwkgIDxwYXJhPlY0TDJfQ1RSTF9GTEFHX1ZPTEFUSUxFIHdhcyBhZGRlZCB0byBzaWduYWwgdm9sYXRpbGUgY29udHJvbHMgdG8gdXNlcnNwYWNlLjwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorCSAgPHBhcmE+QWRkIHNlbGVjdGlvbiBBUEkgZm9yIGV4dGVuZGVkIGNvbnRyb2wgb3ZlciBjcm9wcGluZworCSAgYW5kIGNvbXBvc2luZy4gRG9lcyBub3QgYWZmZWN0IHRoZSBjb21wYXRpYmlsaXR5IG9mIGN1cnJlbnQKKwkgIGRyaXZlcnMgYW5kIGFwcGxpY2F0aW9ucy4gU2VlIDxsaW5rCisJICBsaW5rZW5kPSJzZWxlY3Rpb24tYXBpIj4gc2VsZWN0aW9uIEFQSSA8L2xpbms+IGZvcgorCSAgZGV0YWlscy48L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgaW4gTGludXggMy4zPC90aXRsZT4KKyAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgPGxpc3RpdGVtPgorCSAgPHBhcmE+QWRkZWQgPGNvbnN0YW50PlY0TDJfQ0lEX0FMUEhBX0NPTVBPTkVOVDwvY29uc3RhbnQ+IGNvbnRyb2wKKwkgICAgdG8gdGhlIDxsaW5rIGxpbmtlbmQ9ImNvbnRyb2wiPlVzZXIgY29udHJvbHMgY2xhc3M8L2xpbms+LgorCSAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisJICA8cGFyYT5BZGRlZCB0aGUgZGV2aWNlX2NhcHMgZmllbGQgdG8gc3RydWN0IHY0bDJfY2FwYWJpbGl0aWVzIGFuZCBhZGRlZCB0aGUgbmV3CisJICBWNEwyX0NBUF9ERVZJQ0VfQ0FQUyBjYXBhYmlsaXR5LjwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+VjRMMiBpbiBMaW51eCAzLjQ8L3RpdGxlPgorICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisJICA8cGFyYT5BZGRlZCA8bGluayBsaW5rZW5kPSJqcGVnLWNvbnRyb2xzIj5KUEVHIGNvbXByZXNzaW9uIGNvbnRyb2wKKwkgIGNsYXNzPC9saW5rPi48L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKwkgIDxwYXJhPkV4dGVuZGVkIHRoZSBEViBUaW1pbmdzIEFQSToKKwkgICZWSURJT0MtRU5VTS1EVi1USU1JTkdTOywgJlZJRElPQy1RVUVSWS1EVi1USU1JTkdTOyBhbmQKKwkgICZWSURJT0MtRFYtVElNSU5HUy1DQVA7LjwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+VjRMMiBpbiBMaW51eCAzLjU8L3RpdGxlPgorICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisJICA8cGFyYT5BZGRlZCBpbnRlZ2VyIG1lbnVzLCB0aGUgbmV3IHR5cGUgd2lsbCBiZQorCSAgVjRMMl9DVFJMX1RZUEVfSU5URUdFUl9NRU5VLjwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorCSAgPHBhcmE+QWRkZWQgc2VsZWN0aW9uIEFQSSBmb3IgVjRMMiBzdWJkZXYgaW50ZXJmYWNlOgorCSAgJlZJRElPQy1TVUJERVYtRy1TRUxFQ1RJT047IGFuZAorCSAgJlZJRElPQy1TVUJERVYtUy1TRUxFQ1RJT047LjwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorCSAgPHBhcmE+IEFkZGVkIDxjb25zdGFudD5WNEwyX0NPTE9SRlhfQU5USVFVRTwvY29uc3RhbnQ+LAorCSAgPGNvbnN0YW50PlY0TDJfQ09MT1JGWF9BUlRfRlJFRVpFPC9jb25zdGFudD4sCisJICA8Y29uc3RhbnQ+VjRMMl9DT0xPUkZYX0FRVUE8L2NvbnN0YW50PiwKKwkgIDxjb25zdGFudD5WNEwyX0NPTE9SRlhfU0lMSE9VRVRURTwvY29uc3RhbnQ+LAorCSAgPGNvbnN0YW50PlY0TDJfQ09MT1JGWF9TT0xBUklaQVRJT048L2NvbnN0YW50PiwKKwkgIDxjb25zdGFudD5WNEwyX0NPTE9SRlhfVklWSUQ8L2NvbnN0YW50PiBhbmQKKwkgIDxjb25zdGFudD5WNEwyX0NPTE9SRlhfQVJCSVRSQVJZX0NCQ1I8L2NvbnN0YW50PiBtZW51IGl0ZW1zCisJICB0byB0aGUgPGNvbnN0YW50PlY0TDJfQ0lEX0NPTE9SRlg8L2NvbnN0YW50PiBjb250cm9sLjwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorCSAgPHBhcmE+IEFkZGVkIDxjb25zdGFudD5WNEwyX0NJRF9DT0xPUkZYX0NCQ1I8L2NvbnN0YW50PiBjb250cm9sLjwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorCSAgPHBhcmE+IEFkZGVkIGNhbWVyYSBjb250cm9scyA8Y29uc3RhbnQ+VjRMMl9DSURfQVVUT19FWFBPU1VSRV9CSUFTPC9jb25zdGFudD4sCisJICA8Y29uc3RhbnQ+VjRMMl9DSURfQVVUT19OX1BSRVNFVF9XSElURV9CQUxBTkNFPC9jb25zdGFudD4sCisJICA8Y29uc3RhbnQ+VjRMMl9DSURfSU1BR0VfU1RBQklMSVpBVElPTjwvY29uc3RhbnQ+LAorCSAgPGNvbnN0YW50PlY0TDJfQ0lEX0lTT19TRU5TSVRJVklUWTwvY29uc3RhbnQ+LAorCSAgPGNvbnN0YW50PlY0TDJfQ0lEX0lTT19TRU5TSVRJVklUWV9BVVRPPC9jb25zdGFudD4sCisJICA8Y29uc3RhbnQ+VjRMMl9DSURfRVhQT1NVUkVfTUVURVJJTkc8L2NvbnN0YW50PiwKKwkgIDxjb25zdGFudD5WNEwyX0NJRF9TQ0VORV9NT0RFPC9jb25zdGFudD4sCisJICA8Y29uc3RhbnQ+VjRMMl9DSURfM0FfTE9DSzwvY29uc3RhbnQ+LAorCSAgPGNvbnN0YW50PlY0TDJfQ0lEX0FVVE9fRk9DVVNfU1RBUlQ8L2NvbnN0YW50PiwKKwkgIDxjb25zdGFudD5WNEwyX0NJRF9BVVRPX0ZPQ1VTX1NUT1A8L2NvbnN0YW50PiwKKwkgIDxjb25zdGFudD5WNEwyX0NJRF9BVVRPX0ZPQ1VTX1NUQVRVUzwvY29uc3RhbnQ+IGFuZAorCSAgPGNvbnN0YW50PlY0TDJfQ0lEX0FVVE9fRk9DVVNfUkFOR0U8L2NvbnN0YW50Pi4KKwkgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+VjRMMiBpbiBMaW51eCAzLjY8L3RpdGxlPgorICAgICAgPG9yZGVyZWRsaXN0PgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlJlcGxhY2VkIDxzdHJ1Y3RmaWVsZD5pbnB1dDwvc3RydWN0ZmllbGQ+IGluCisJICA8c3RydWN0bmFtZT52NGwyX2J1ZmZlcjwvc3RydWN0bmFtZT4gYnkKKwkgIDxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDI8L3N0cnVjdGZpZWxkPiBhbmQgcmVtb3ZlZAorCSAgPGNvbnN0YW50PlY0TDJfQlVGX0ZMQUdfSU5QVVQ8L2NvbnN0YW50Pi48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorCSAgPHBhcmE+QWRkZWQgVjRMMl9DQVBfVklERU9fTTJNIGFuZCBWNEwyX0NBUF9WSURFT19NMk1fTVBMQU5FIGNhcGFiaWxpdGllcy48L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKwkgIDxwYXJhPkFkZGVkIHN1cHBvcnQgZm9yIGZyZXF1ZW5jeSBiYW5kIGVudW1lcmF0aW9uczogJlZJRElPQy1FTlVNLUZSRVEtQkFORFM7LjwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+VjRMMiBpbiBMaW51eCAzLjk8L3RpdGxlPgorICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisJICA8cGFyYT5BZGRlZCB0aW1lc3RhbXAgdHlwZXMgdG8KKwkgIDxzdHJ1Y3RmaWVsZD5mbGFnczwvc3RydWN0ZmllbGQ+IGZpZWxkIGluCisJICA8c3RydWN0bmFtZT52NGwyX2J1ZmZlcjwvc3RydWN0bmFtZT4uIFNlZSA8eHJlZgorCSAgbGlua2VuZD0iYnVmZmVyLWZsYWdzIiAvPi48L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKwkgIDxwYXJhPkFkZGVkIDxjb25zdGFudD5WNEwyX0VWRU5UX0NUUkxfQ0hfUkFOR0U8L2NvbnN0YW50PiBjb250cm9sIGV2ZW50CisJICBjaGFuZ2VzIGZsYWcuIFNlZSA8eHJlZiBsaW5rZW5kPSJjdHJsLWNoYW5nZXMtZmxhZ3MiLz4uPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5WNEwyIGluIExpbnV4IDMuMTA8L3RpdGxlPgorICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisJICA8cGFyYT5SZW1vdmVkIG9ic29sZXRlIGFuZCB1bnVzZWQgRFZfUFJFU0VUIGlvY3RscworCSAgVklESU9DX0dfRFZfUFJFU0VULCBWSURJT0NfU19EVl9QUkVTRVQsIFZJRElPQ19RVUVSWV9EVl9QUkVTRVQgYW5kCisJICBWSURJT0NfRU5VTV9EVl9QUkVTRVQuIFJlbW92ZSB0aGUgcmVsYXRlZCB2NGwyX2lucHV0L291dHB1dCBjYXBhYmlsaXR5CisJICBmbGFncyBWNEwyX0lOX0NBUF9QUkVTRVRTIGFuZCBWNEwyX09VVF9DQVBfUFJFU0VUUy4KKwkgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorCSAgPHBhcmE+QWRkZWQgbmV3IGRlYnVnZ2luZyBpb2N0bCAmVklESU9DLURCRy1HLUNISVAtSU5GTzsuCisJICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgaW4gTGludXggMy4xMTwvdGl0bGU+CisgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT4KKwkgIDxwYXJhPlJlbW92ZSBvYnNvbGV0ZSA8Y29uc3RhbnQ+VklESU9DX0RCR19HX0NISVBfSURFTlQ8L2NvbnN0YW50PiBpb2N0bC4KKwkgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+VjRMMiBpbiBMaW51eCAzLjE0PC90aXRsZT4KKyAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgPGxpc3RpdGVtPgorCQk8cGFyYT4gSW4gc3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfcmVjdDwvc3RydWN0bmFtZT4sIHRoZSB0eXBlCitvZiA8c3RydWN0ZmllbGQ+d2lkdGg8L3N0cnVjdGZpZWxkPiBhbmQgPHN0cnVjdGZpZWxkPmhlaWdodDwvc3RydWN0ZmllbGQ+CitmaWVsZHMgY2hhbmdlZCBmcm9tIF9zMzIgdG8gX3UzMi4KKwkgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+VjRMMiBpbiBMaW51eCAzLjE1PC90aXRsZT4KKyAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgPGxpc3RpdGVtPgorCSAgPHBhcmE+QWRkZWQgU29mdHdhcmUgRGVmaW5lZCBSYWRpbyAoU0RSKSBJbnRlcmZhY2UuCisJICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgaW4gTGludXggMy4xNjwvdGl0bGU+CisgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT4KKwkgIDxwYXJhPkFkZGVkIGV2ZW50IFY0TDJfRVZFTlRfU09VUkNFX0NIQU5HRS4KKwkgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+VjRMMiBpbiBMaW51eCAzLjE3PC90aXRsZT4KKyAgICAgIDxvcmRlcmVkbGlzdD4KKyAgICAgICAgPGxpc3RpdGVtPgorCSAgPHBhcmE+RXh0ZW5kZWQgJnY0bDItcGl4LWZvcm1hdDsuIEFkZGVkIGZvcm1hdCBmbGFncy4KKwkgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorCSAgPHBhcmE+QWRkZWQgY29tcG91bmQgY29udHJvbCB0eXBlcyBhbmQgJlZJRElPQy1RVUVSWS1FWFQtQ1RSTDsuCisJICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgaW4gTGludXggMy4xODwvdGl0bGU+CisgICAgICA8b3JkZXJlZGxpc3Q+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+QWRkZWQgPGNvbnN0YW50PlY0TDJfQ0lEX1BBTl9TUEVFRDwvY29uc3RhbnQ+IGFuZAorIDxjb25zdGFudD5WNEwyX0NJRF9USUxUX1NQRUVEPC9jb25zdGFudD4gY2FtZXJhIGNvbnRyb2xzLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5WNEwyIGluIExpbnV4IDMuMTk8L3RpdGxlPgorICAgICAgPG9yZGVyZWRsaXN0PgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlJld3JvdGUgQ29sb3JzcGFjZSBjaGFwdGVyLCBhZGRlZCBuZXcgJnY0bDIteWNiY3ItZW5jb2Rpbmc7CithbmQgJnY0bDItcXVhbnRpemF0aW9uOyBmaWVsZHMgdG8gJnY0bDItcGl4LWZvcm1hdDssICZ2NGwyLXBpeC1mb3JtYXQtbXBsYW5lOworYW5kICZ2NGwyLW1idXMtZnJhbWVmbXQ7LgorCSAgPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L29yZGVyZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlY0TDIgaW4gTGludXggNC40PC90aXRsZT4KKyAgICAgIDxvcmRlcmVkbGlzdD4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5SZW5hbWVkIDxjb25zdGFudD5WNEwyX1RVTkVSX0FEQzwvY29uc3RhbnQ+IHRvCis8Y29uc3RhbnQ+VjRMMl9UVU5FUl9TRFI8L2NvbnN0YW50Pi4gVGhlIHVzZSBvZgorPGNvbnN0YW50PlY0TDJfVFVORVJfQURDPC9jb25zdGFudD4gaXMgZGVwcmVjYXRlZCBub3cuCisJICA8L3BhcmE+CisJPC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5BZGRlZCA8Y29uc3RhbnQ+VjRMMl9DSURfUkZfVFVORVJfUkZfR0FJTjwvY29uc3RhbnQ+CitSRiBUdW5lciBjb250cm9sLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkFkZGVkIHRyYW5zbWl0dGVyIHN1cHBvcnQgZm9yIFNvZnR3YXJlIERlZmluZWQgUmFkaW8gKFNEUikKK0ludGVyZmFjZS48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9Im90aGVyIj4KKyAgICAgIDx0aXRsZT5SZWxhdGlvbiBvZiBWNEwyIHRvIG90aGVyIExpbnV4IG11bHRpbWVkaWEgQVBJczwvdGl0bGU+CisKKyAgICAgIDxzZWN0aW9uIGlkPSJ4dmlkZW8iPgorICAgICAgICA8dGl0bGU+WCBWaWRlbyBFeHRlbnNpb248L3RpdGxlPgorCisgICAgICAgIDxwYXJhPlRoZSBYIFZpZGVvIEV4dGVuc2lvbiAoYWJicmV2aWF0ZWQgWFZpZGVvIG9yIGp1c3QgWHYpIGlzCithbiBleHRlbnNpb24gb2YgdGhlIFggV2luZG93IHN5c3RlbSwgaW1wbGVtZW50ZWQgZm9yIGV4YW1wbGUgYnkgdGhlCitYRnJlZTg2IHByb2plY3QuIEl0cyBzY29wZSBpcyBzaW1pbGFyIHRvIFY0TDIsIGFuIEFQSSB0byB2aWRlbyBjYXB0dXJlCithbmQgb3V0cHV0IGRldmljZXMgZm9yIFggY2xpZW50cy4gWHYgYWxsb3dzIGFwcGxpY2F0aW9ucyB0byBkaXNwbGF5CitsaXZlIHZpZGVvIGluIGEgd2luZG93LCBzZW5kIHdpbmRvdyBjb250ZW50cyB0byBhIFRWIG91dHB1dCwgYW5kCitjYXB0dXJlIG9yIG91dHB1dCBzdGlsbCBpbWFnZXMgaW4gWFBpeG1hcHM8Zm9vdG5vdGU+CisJICA8cGFyYT5UaGlzIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiBYRnJlZTg2LjwvcGFyYT4KKwk8L2Zvb3Rub3RlPi4gV2l0aCB0aGVpciBpbXBsZW1lbnRhdGlvbiBYRnJlZTg2IG1ha2VzIHRoZQorZXh0ZW5zaW9uIGF2YWlsYWJsZSBhY3Jvc3MgbWFueSBvcGVyYXRpbmcgc3lzdGVtcyBhbmQKK2FyY2hpdGVjdHVyZXMuPC9wYXJhPgorCisgICAgICAgIDxwYXJhPkJlY2F1c2UgdGhlIGRyaXZlciBpcyBlbWJlZGRlZCBpbnRvIHRoZSBYIHNlcnZlciBYdiBoYXMgYQorbnVtYmVyIG9mIGFkdmFudGFnZXMgb3ZlciB0aGUgVjRMMiA8bGluayBsaW5rZW5kPSJvdmVybGF5Ij52aWRlbworb3ZlcmxheSBpbnRlcmZhY2U8L2xpbms+LiBUaGUgZHJpdmVyIGNhbiBlYXNpbHkgZGV0ZXJtaW5lIHRoZSBvdmVybGF5Cit0YXJnZXQsICZpZTsgdmlzaWJsZSBncmFwaGljcyBtZW1vcnkgb3Igb2ZmLXNjcmVlbiBidWZmZXJzIGZvciBhCitkZXN0cnVjdGl2ZSBvdmVybGF5LiBJdCBjYW4gcHJvZ3JhbSB0aGUgUkFNREFDIGZvciBhIG5vbi1kZXN0cnVjdGl2ZQorb3ZlcmxheSwgc2NhbGluZyBvciBjb2xvci1rZXlpbmcsIG9yIHRoZSBjbGlwcGluZyBmdW5jdGlvbnMgb2YgdGhlCit2aWRlbyBjYXB0dXJlIGhhcmR3YXJlLCBhbHdheXMgaW4gc3luYyB3aXRoIGRyYXdpbmcgb3BlcmF0aW9ucyBvcgord2luZG93cyBtb3Zpbmcgb3IgY2hhbmdpbmcgdGhlaXIgc3RhY2tpbmcgb3JkZXIuPC9wYXJhPgorCisgICAgICAgIDxwYXJhPlRvIGNvbWJpbmUgdGhlIGFkdmFudGFnZXMgb2YgWHYgYW5kIFY0TCBhIHNwZWNpYWwgWHYKK2RyaXZlciBleGlzdHMgaW4gWEZyZWU4NiBhbmQgWE9yZywganVzdCBwcm9ncmFtbWluZyBhbnkgb3ZlcmxheSBjYXBhYmxlCitWaWRlbzRMaW51eCBkZXZpY2UgaXQgZmluZHMuIFRvIGVuYWJsZSBpdAorPGZpbGVuYW1lPi9ldGMvWDExL1hGODZDb25maWc8L2ZpbGVuYW1lPiBtdXN0IGNvbnRhaW4gdGhlc2UgbGluZXM6PC9wYXJhPgorICAgICAgICA8cGFyYT48c2NyZWVuPgorU2VjdGlvbiAiTW9kdWxlIgorICAgIExvYWQgInY0bCIKK0VuZFNlY3Rpb248L3NjcmVlbj48L3BhcmE+CisKKyAgICAgICAgPHBhcmE+QXMgb2YgWEZyZWU4NiA0LjIgdGhpcyBkcml2ZXIgc3RpbGwgc3VwcG9ydHMgb25seSBWNEwKK2lvY3RscywgaG93ZXZlciBpdCBzaG91bGQgd29yayBqdXN0IGZpbmUgd2l0aCBhbGwgVjRMMiBkZXZpY2VzIHRocm91Z2gKK3RoZSBWNEwyIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkgbGF5ZXIuIFNpbmNlIFY0TDIgcGVybWl0cyBtdWx0aXBsZQorb3BlbnMgaXQgaXMgcG9zc2libGUgKGlmIHN1cHBvcnRlZCBieSB0aGUgVjRMMiBkcml2ZXIpIHRvIGNhcHR1cmUKK3ZpZGVvIHdoaWxlIGFuIFggY2xpZW50IHJlcXVlc3RlZCB2aWRlbyBvdmVybGF5LiBSZXN0cmljdGlvbnMgb2YKK3NpbXVsdGFuZW91cyBjYXB0dXJpbmcgYW5kIG92ZXJsYXkgYXJlIGRpc2N1c3NlZCBpbiA8eHJlZgorCSAgbGlua2VuZD0ib3ZlcmxheSIgLz4gYXBwbHkuPC9wYXJhPgorCisgICAgICAgIDxwYXJhPk9ubHkgbWFyZ2luYWxseSByZWxhdGVkIHRvIFY0TDIsIFhGcmVlODYgZXh0ZW5kZWQgWHYgdG8KK3N1cHBvcnQgaGFyZHdhcmUgWVVWIHRvIFJHQiBjb252ZXJzaW9uIGFuZCBzY2FsaW5nIGZvciBmYXN0ZXIgdmlkZW8KK3BsYXliYWNrLCBhbmQgYWRkZWQgYW4gaW50ZXJmYWNlIHRvIE1QRUctMiBkZWNvZGluZyBoYXJkd2FyZS4gVGhpcyBBUEkKK2lzIHVzZWZ1bCB0byBkaXNwbGF5IGltYWdlcyBjYXB0dXJlZCB3aXRoIFY0TDIgZGV2aWNlcy48L3BhcmE+CisgICAgICA8L3NlY3Rpb24+CisKKyAgICAgIDxzZWN0aW9uPgorICAgICAgICA8dGl0bGU+RGlnaXRhbCBWaWRlbzwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+VjRMMiBkb2VzIG5vdCBzdXBwb3J0IGRpZ2l0YWwgdGVycmVzdHJpYWwsIGNhYmxlIG9yCitzYXRlbGxpdGUgYnJvYWRjYXN0LiBBIHNlcGFyYXRlIHByb2plY3QgYWltaW5nIGF0IGRpZ2l0YWwgcmVjZWl2ZXJzCitleGlzdHMuIFlvdSBjYW4gZmluZCBpdHMgaG9tZXBhZ2UgYXQgPHVsaW5rCit1cmw9Imh0dHA6Ly9saW51eHR2Lm9yZyI+aHR0cDovL2xpbnV4dHYub3JnPC91bGluaz4uIFRoZSBMaW51eCBEVkIgQVBJCitoYXMgbm8gY29ubmVjdGlvbiB0byB0aGUgVjRMMiBBUEkgZXhjZXB0IHRoYXQgZHJpdmVycyBmb3IgaHlicmlkCitoYXJkd2FyZSBtYXkgc3VwcG9ydCBib3RoLjwvcGFyYT4KKyAgICAgIDwvc2VjdGlvbj4KKworICAgICAgPHNlY3Rpb24+CisgICAgICAgIDx0aXRsZT5BdWRpbyBJbnRlcmZhY2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT5bdG8gZG8gLSBPU1MvQUxTQV08L3BhcmE+CisgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImV4cGVyaW1lbnRhbCI+CisgICAgICA8dGl0bGU+RXhwZXJpbWVudGFsIEFQSSBFbGVtZW50czwvdGl0bGU+CisKKyAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgVjRMMiBBUEkgZWxlbWVudHMgYXJlIGN1cnJlbnRseSBleHBlcmltZW50YWwKK2FuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuPC9wYXJhPgorCisgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICA8bGlzdGl0ZW0+CisJICA8cGFyYT5WaWRlbyBPdXRwdXQgT3ZlcmxheSAoT1NEKSBJbnRlcmZhY2UsIDx4cmVmCisJICAgIGxpbmtlbmQ9Im9zZCIgLz4uPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisJICA8cGFyYT4mVklESU9DLURCRy1HLVJFR0lTVEVSOyBhbmQgJlZJRElPQy1EQkctUy1SRUdJU1RFUjsKK2lvY3Rscy48L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKwkgIDxwYXJhPiZWSURJT0MtREJHLUctQ0hJUC1JTkZPOyBpb2N0bC48L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKwkgIDxwYXJhPiZWSURJT0MtRU5VTS1EVi1USU1JTkdTOywgJlZJRElPQy1RVUVSWS1EVi1USU1JTkdTOyBhbmQKKwkgICZWSURJT0MtRFYtVElNSU5HUy1DQVA7IGlvY3Rscy48L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKwkgIDxwYXJhPkZsYXNoIEFQSS4gPHhyZWYgbGlua2VuZD0iZmxhc2gtY29udHJvbHMiIC8+PC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisJICA8cGFyYT4mVklESU9DLUNSRUFURS1CVUZTOyBhbmQgJlZJRElPQy1QUkVQQVJFLUJVRjsgaW9jdGxzLjwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorCSAgPHBhcmE+U2VsZWN0aW9uIEFQSS4gPHhyZWYgbGlua2VuZD0ic2VsZWN0aW9uLWFwaSIgLz48L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKwkgIDxwYXJhPlN1Yi1kZXZpY2Ugc2VsZWN0aW9uIEFQSTogJlZJRElPQy1TVUJERVYtRy1TRUxFQ1RJT047CisJICBhbmQgJlZJRElPQy1TVUJERVYtUy1TRUxFQ1RJT047IGlvY3Rscy48L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKwkgIDxwYXJhPlN1cHBvcnQgZm9yIGZyZXF1ZW5jeSBiYW5kIGVudW1lcmF0aW9uOiAmVklESU9DLUVOVU0tRlJFUS1CQU5EUzsgaW9jdGwuPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisJICA8cGFyYT5WZW5kb3IgYW5kIGRldmljZSBzcGVjaWZpYyBtZWRpYSBidXMgcGl4ZWwgZm9ybWF0cy4KKwkgICAgPHhyZWYgbGlua2VuZD0idjRsMi1tYnVzLXZlbmRvci1zcGVjLWZtdHMiIC8+LjwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorCSAgPHBhcmE+SW1wb3J0aW5nIERNQUJVRiBmaWxlIGRlc2NyaXB0b3JzIGFzIGEgbmV3IElPIG1ldGhvZCBkZXNjcmliZWQKKwkgIGluIDx4cmVmIGxpbmtlbmQ9ImRtYWJ1ZiIgLz4uPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisJICA8cGFyYT5FeHBvcnRpbmcgRE1BQlVGIGZpbGVzIHVzaW5nICZWSURJT0MtRVhQQlVGOyBpb2N0bC48L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKwkgIDxwYXJhPlNvZnR3YXJlIERlZmluZWQgUmFkaW8gKFNEUikgSW50ZXJmYWNlLCA8eHJlZiBsaW5rZW5kPSJzZHIiIC8+LjwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJvYnNvbGV0ZSI+CisgICAgICA8dGl0bGU+T2Jzb2xldGUgQVBJIEVsZW1lbnRzPC90aXRsZT4KKworICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBWNEwyIEFQSSBlbGVtZW50cyB3ZXJlIHN1cGVyc2VkZWQgYnkgbmV3CitpbnRlcmZhY2VzIGFuZCBzaG91bGQgbm90IGJlIGltcGxlbWVudGVkIGluIG5ldyBkcml2ZXJzLjwvcGFyYT4KKworICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgPGxpc3RpdGVtPgorCSAgPHBhcmE+PGNvbnN0YW50PlZJRElPQ19HX01QRUdDT01QPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VklESU9DX1NfTVBFR0NPTVA8L2NvbnN0YW50PiBpb2N0bHMuIFVzZSBFeHRlbmRlZCBDb250cm9scywKKzx4cmVmIGxpbmtlbmQ9ImV4dGVuZGVkLWNvbnRyb2xzIiAvPi48L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19HX0RWX1BSRVNFVCwgVklESU9DX1NfRFZfUFJFU0VULCBWSURJT0NfRU5VTV9EVl9QUkVTRVRTIGFuZAorCSAgVklESU9DX1FVRVJZX0RWX1BSRVNFVCBpb2N0bHMuIFVzZSB0aGUgRFYgVGltaW5ncyBBUEkgKDx4cmVmIGxpbmtlbmQ9ImR2LXRpbWluZ3MiIC8+KS48L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKwkgIDxwYXJhPjxjb25zdGFudD5WSURJT0NfU1VCREVWX0dfQ1JPUDwvY29uc3RhbnQ+IGFuZAorCSAgPGNvbnN0YW50PlZJRElPQ19TVUJERVZfU19DUk9QPC9jb25zdGFudD4gaW9jdGxzLiBVc2UKKwkgIDxjb25zdGFudD5WSURJT0NfU1VCREVWX0dfU0VMRUNUSU9OPC9jb25zdGFudD4gYW5kCisJICA8Y29uc3RhbnQ+VklESU9DX1NVQkRFVl9TX1NFTEVDVElPTjwvY29uc3RhbnQ+LCA8eHJlZgorCSAgbGlua2VuZD0idmlkaW9jLXN1YmRldi1nLXNlbGVjdGlvbiIgLz4uPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgPC9zZWN0aW9uPgorICA8L3NlY3Rpb24+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2NvbnRyb2xzLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvY29udHJvbHMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxM2E0MjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2NvbnRyb2xzLnhtbApAQCAtMCwwICsxLDU0NzggQEAKKyAgPHNlY3Rpb24gaWQ9ImNvbnRyb2wiPgorICAgIDx0aXRsZT5Vc2VyIENvbnRyb2xzPC90aXRsZT4KKworICAgIDxwYXJhPkRldmljZXMgdHlwaWNhbGx5IGhhdmUgYSBudW1iZXIgb2YgdXNlci1zZXR0YWJsZSBjb250cm9scworc3VjaCBhcyBicmlnaHRuZXNzLCBzYXR1cmF0aW9uIGFuZCBzbyBvbiwgd2hpY2ggd291bGQgYmUgcHJlc2VudGVkIHRvCit0aGUgdXNlciBvbiBhIGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZS4gQnV0LCBkaWZmZXJlbnQgZGV2aWNlcword2lsbCBoYXZlIGRpZmZlcmVudCBjb250cm9scyBhdmFpbGFibGUsIGFuZCBmdXJ0aGVybW9yZSwgdGhlIHJhbmdlIG9mCitwb3NzaWJsZSB2YWx1ZXMsIGFuZCB0aGUgZGVmYXVsdCB2YWx1ZSB3aWxsIHZhcnkgZnJvbSBkZXZpY2UgdG8KK2RldmljZS4gVGhlIGNvbnRyb2wgaW9jdGxzIHByb3ZpZGUgdGhlIGluZm9ybWF0aW9uIGFuZCBhIG1lY2hhbmlzbSB0bworY3JlYXRlIGEgbmljZSB1c2VyIGludGVyZmFjZSBmb3IgdGhlc2UgY29udHJvbHMgdGhhdCB3aWxsIHdvcmsKK2NvcnJlY3RseSB3aXRoIGFueSBkZXZpY2UuPC9wYXJhPgorCisgICAgPHBhcmE+QWxsIGNvbnRyb2xzIGFyZSBhY2Nlc3NlZCB1c2luZyBhbiBJRCB2YWx1ZS4gVjRMMiBkZWZpbmVzCitzZXZlcmFsIElEcyBmb3Igc3BlY2lmaWMgcHVycG9zZXMuIERyaXZlcnMgY2FuIGFsc28gaW1wbGVtZW50IHRoZWlyCitvd24gY3VzdG9tIGNvbnRyb2xzIHVzaW5nIDxjb25zdGFudD5WNEwyX0NJRF9QUklWQVRFX0JBU0U8L2NvbnN0YW50PgorPGZvb3Rub3RlPjxwYXJhPlRoZSB1c2Ugb2YgPGNvbnN0YW50PlY0TDJfQ0lEX1BSSVZBVEVfQkFTRTwvY29uc3RhbnQ+CitpcyBwcm9ibGVtYXRpYyBiZWNhdXNlIGRpZmZlcmVudCBkcml2ZXJzIG1heSB1c2UgdGhlIHNhbWUKKzxjb25zdGFudD5WNEwyX0NJRF9QUklWQVRFX0JBU0U8L2NvbnN0YW50PiBJRCBmb3IgZGlmZmVyZW50IGNvbnRyb2xzLgorVGhpcyBtYWtlcyBpdCBoYXJkIHRvIHByb2dyYW1hdGljYWxseSBzZXQgc3VjaCBjb250cm9scyBzaW5jZSB0aGUgbWVhbmluZworb2YgdGhlIGNvbnRyb2wgd2l0aCB0aGF0IElEIGlzIGRyaXZlciBkZXBlbmRlbnQuIEluIG9yZGVyIHRvIHJlc29sdmUgdGhpcworZHJpdmVycyB1c2UgdW5pcXVlIElEcyBhbmQgdGhlIDxjb25zdGFudD5WNEwyX0NJRF9QUklWQVRFX0JBU0U8L2NvbnN0YW50PgorSURzIGFyZSBtYXBwZWQgdG8gdGhvc2UgdW5pcXVlIElEcyBieSB0aGUga2VybmVsLiBDb25zaWRlciB0aGVzZQorPGNvbnN0YW50PlY0TDJfQ0lEX1BSSVZBVEVfQkFTRTwvY29uc3RhbnQ+IElEcyBhcyBhbGlhc2VzIHRvIHRoZSByZWFsCitJRHMuPC9wYXJhPgorPHBhcmE+TWFueSBhcHBsaWNhdGlvbnMgdG9kYXkgc3RpbGwgdXNlIHRoZSA8Y29uc3RhbnQ+VjRMMl9DSURfUFJJVkFURV9CQVNFPC9jb25zdGFudD4KK0lEcyBpbnN0ZWFkIG9mIHVzaW5nICZWSURJT0MtUVVFUllDVFJMOyB3aXRoIHRoZSA8Y29uc3RhbnQ+VjRMMl9DVFJMX0ZMQUdfTkVYVF9DVFJMPC9jb25zdGFudD4KK2ZsYWcgdG8gZW51bWVyYXRlIGFsbCBJRHMsIHNvIHN1cHBvcnQgZm9yIDxjb25zdGFudD5WNEwyX0NJRF9QUklWQVRFX0JBU0U8L2NvbnN0YW50PgoraXMgc3RpbGwgYXJvdW5kLjwvcGFyYT48L2Zvb3Rub3RlPgorYW5kIGhpZ2hlciB2YWx1ZXMuIFRoZSBwcmUtZGVmaW5lZCBjb250cm9sIElEcyBoYXZlIHRoZSBwcmVmaXgKKzxjb25zdGFudD5WNEwyX0NJRF88L2NvbnN0YW50PiwgYW5kIGFyZSBsaXN0ZWQgaW4gPHhyZWYKK2xpbmtlbmQ9ImNvbnRyb2wtaWQiIC8+LiBUaGUgSUQgaXMgdXNlZCB3aGVuIHF1ZXJ5aW5nIHRoZSBhdHRyaWJ1dGVzIG9mCithIGNvbnRyb2wsIGFuZCB3aGVuIGdldHRpbmcgb3Igc2V0dGluZyB0aGUgY3VycmVudCB2YWx1ZS48L3BhcmE+CisKKyAgICA8cGFyYT5HZW5lcmFsbHkgYXBwbGljYXRpb25zIHNob3VsZCBwcmVzZW50IGNvbnRyb2xzIHRvIHRoZSB1c2VyCit3aXRob3V0IGFzc3VtcHRpb25zIGFib3V0IHRoZWlyIHB1cnBvc2UuIEVhY2ggY29udHJvbCBjb21lcyB3aXRoIGEKK25hbWUgc3RyaW5nIHRoZSB1c2VyIGlzIHN1cHBvc2VkIHRvIHVuZGVyc3RhbmQuIFdoZW4gdGhlIHB1cnBvc2UgaXMKK25vbi1pbnR1aXRpdmUgdGhlIGRyaXZlciB3cml0ZXIgc2hvdWxkIHByb3ZpZGUgYSB1c2VyIG1hbnVhbCwgYSB1c2VyCitpbnRlcmZhY2UgcGx1Zy1pbiBvciBhIGRyaXZlciBzcGVjaWZpYyBwYW5lbCBhcHBsaWNhdGlvbi4gUHJlZGVmaW5lZAorSURzIHdlcmUgaW50cm9kdWNlZCB0byBjaGFuZ2UgYSBmZXcgY29udHJvbHMgcHJvZ3JhbW1hdGljYWxseSwgZm9yCitleGFtcGxlIHRvIG11dGUgYSBkZXZpY2UgZHVyaW5nIGEgY2hhbm5lbCBzd2l0Y2guPC9wYXJhPgorCisgICAgPHBhcmE+RHJpdmVycyBtYXkgZW51bWVyYXRlIGRpZmZlcmVudCBjb250cm9scyBhZnRlciBzd2l0Y2hpbmcKK3RoZSBjdXJyZW50IHZpZGVvIGlucHV0IG9yIG91dHB1dCwgdHVuZXIgb3IgbW9kdWxhdG9yLCBvciBhdWRpbyBpbnB1dAorb3Igb3V0cHV0LiBEaWZmZXJlbnQgaW4gdGhlIHNlbnNlIG9mIG90aGVyIGJvdW5kcywgYW5vdGhlciBkZWZhdWx0IGFuZAorY3VycmVudCB2YWx1ZSwgc3RlcCBzaXplIG9yIG90aGVyIG1lbnUgaXRlbXMuIEEgY29udHJvbCB3aXRoIGEgY2VydGFpbgorPGVtcGhhc2lzPmN1c3RvbTwvZW1waGFzaXM+IElEIGNhbiBhbHNvIGNoYW5nZSBuYW1lIGFuZAordHlwZS48L3BhcmE+CisKKyAgICA8cGFyYT5JZiBhIGNvbnRyb2wgaXMgbm90IGFwcGxpY2FibGUgdG8gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbgorb2YgdGhlIGRldmljZSAoZm9yIGV4YW1wbGUsIGl0IGRvZXNuJ3QgYXBwbHkgdG8gdGhlIGN1cnJlbnQgdmlkZW8gaW5wdXQpCitkcml2ZXJzIHNldCB0aGUgPGNvbnN0YW50PlY0TDJfQ1RSTF9GTEFHX0lOQUNUSVZFPC9jb25zdGFudD4gZmxhZy48L3BhcmE+CisKKyAgICA8cGFyYT5Db250cm9sIHZhbHVlcyBhcmUgc3RvcmVkIGdsb2JhbGx5LCB0aGV5IGRvIG5vdAorY2hhbmdlIHdoZW4gc3dpdGNoaW5nIGV4Y2VwdCB0byBzdGF5IHdpdGhpbiB0aGUgcmVwb3J0ZWQgYm91bmRzLiBUaGV5CithbHNvIGRvIG5vdCBjaGFuZ2UgJmVnOyB3aGVuIHRoZSBkZXZpY2UgaXMgb3BlbmVkIG9yIGNsb3NlZCwgd2hlbiB0aGUKK3R1bmVyIHJhZGlvIGZyZXF1ZW5jeSBpcyBjaGFuZ2VkIG9yIGdlbmVyYWxseSBuZXZlciB3aXRob3V0CithcHBsaWNhdGlvbiByZXF1ZXN0LjwvcGFyYT4KKworICAgIDxwYXJhPlY0TDIgc3BlY2lmaWVzIGFuIGV2ZW50IG1lY2hhbmlzbSB0byBub3RpZnkgYXBwbGljYXRpb25zCit3aGVuIGNvbnRyb2xzIGNoYW5nZSB2YWx1ZSAoc2VlICZWSURJT0MtU1VCU0NSSUJFLUVWRU5UOywgZXZlbnQKKzxjb25zdGFudD5WNEwyX0VWRU5UX0NUUkw8L2NvbnN0YW50PiksIHBhbmVsIGFwcGxpY2F0aW9ucyBtaWdodCB3YW50IHRvIG1ha2UKK3VzZSBvZiB0aGF0IGluIG9yZGVyIHRvIGFsd2F5cyByZWZsZWN0IHRoZSBjb3JyZWN0IGNvbnRyb2wgdmFsdWUuPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBBbGwgY29udHJvbHMgdXNlIG1hY2hpbmUgZW5kaWFubmVzcy4KKyAgICA8L3BhcmE+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9ImNvbnRyb2wtaWQiPgorICAgICAgPHRpdGxlPkNvbnRyb2wgSURzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwk8dGhlYWQ+CisJICA8cm93PgorCSAgICA8ZW50cnk+SUQ8L2VudHJ5PgorCSAgICA8ZW50cnk+VHlwZTwvZW50cnk+CisJICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3RoZWFkPgorCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX0JBU0U8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+Rmlyc3QgcHJlZGVmaW5lZCBJRCwgZXF1YWwgdG8KKzxjb25zdGFudD5WNEwyX0NJRF9CUklHSFRORVNTPC9jb25zdGFudD4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9VU0VSX0JBU0U8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+U3lub255bSBvZiA8Y29uc3RhbnQ+VjRMMl9DSURfQkFTRTwvY29uc3RhbnQ+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSURfQlJJR0hUTkVTUzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICA8ZW50cnk+UGljdHVyZSBicmlnaHRuZXNzLCBvciBtb3JlIHByZWNpc2VseSwgdGhlIGJsYWNrCitsZXZlbC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX0NPTlRSQVNUPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgIDxlbnRyeT5QaWN0dXJlIGNvbnRyYXN0IG9yIGx1bWEgZ2Fpbi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX1NBVFVSQVRJT048L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgPGVudHJ5PlBpY3R1cmUgY29sb3Igc2F0dXJhdGlvbiBvciBjaHJvbWEgZ2Fpbi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX0hVRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICA8ZW50cnk+SHVlIG9yIGNvbG9yIGJhbGFuY2UuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9BVURJT19WT0xVTUU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgPGVudHJ5Pk92ZXJhbGwgYXVkaW8gdm9sdW1lLiBOb3RlIHNvbWUgZHJpdmVycyBhbHNvCitwcm92aWRlIGFuIE9TUyBvciBBTFNBIG1peGVyIGludGVyZmFjZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX0FVRElPX0JBTEFOQ0U8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgPGVudHJ5PkF1ZGlvIHN0ZXJlbyBiYWxhbmNlLiBNaW5pbXVtIGNvcnJlc3BvbmRzIHRvIGFsbAordGhlIHdheSBsZWZ0LCBtYXhpbXVtIHRvIHJpZ2h0LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSURfQVVESU9fQkFTUzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICA8ZW50cnk+QXVkaW8gYmFzcyBhZGp1c3RtZW50LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSURfQVVESU9fVFJFQkxFPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgIDxlbnRyeT5BdWRpbyB0cmVibGUgYWRqdXN0bWVudC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX0FVRElPX01VVEU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgICAgPGVudHJ5Pk11dGUgYXVkaW8sICZpZTsgc2V0IHRoZSB2b2x1bWUgdG8gemVybywgaG93ZXZlcgord2l0aG91dCBhZmZlY3RpbmcgPGNvbnN0YW50PlY0TDJfQ0lEX0FVRElPX1ZPTFVNRTwvY29uc3RhbnQ+LiBMaWtlCitBTFNBIGRyaXZlcnMsIFY0TDIgZHJpdmVycyBtdXN0IG11dGUgYXQgbG9hZCB0aW1lIHRvIGF2b2lkIGV4Y2Vzc2l2ZQorbm9pc2UuIEFjdHVhbGx5IHRoZSBlbnRpcmUgZGV2aWNlIHNob3VsZCBiZSByZXNldCB0byBhIGxvdyBwb3dlcgorY29uc3VtcHRpb24gc3RhdGUuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9BVURJT19MT1VETkVTUzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmJvb2xlYW48L2VudHJ5PgorCSAgICA8ZW50cnk+TG91ZG5lc3MgbW9kZSAoYmFzcyBib29zdCkuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9CTEFDS19MRVZFTDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICA8ZW50cnk+QW5vdGhlciBuYW1lIGZvciBicmlnaHRuZXNzIChub3QgYSBzeW5vbnltIG9mCis8Y29uc3RhbnQ+VjRMMl9DSURfQlJJR0hUTkVTUzwvY29uc3RhbnQ+KS4gVGhpcyBjb250cm9sIGlzIGRlcHJlY2F0ZWQKK2FuZCBzaG91bGQgbm90IGJlIHVzZWQgaW4gbmV3IGRyaXZlcnMgYW5kIGFwcGxpY2F0aW9ucy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX0FVVE9fV0hJVEVfQkFMQU5DRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmJvb2xlYW48L2VudHJ5PgorCSAgICA8ZW50cnk+QXV0b21hdGljIHdoaXRlIGJhbGFuY2UgKGNhbWVyYXMpLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSURfRE9fV0hJVEVfQkFMQU5DRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmJ1dHRvbjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGlzIGlzIGFuIGFjdGlvbiBjb250cm9sLiBXaGVuIHNldCAodGhlIHZhbHVlIGlzCitpZ25vcmVkKSwgdGhlIGRldmljZSB3aWxsIGRvIGEgd2hpdGUgYmFsYW5jZSBhbmQgdGhlbiBob2xkIHRoZSBjdXJyZW50CitzZXR0aW5nLiBDb250cmFzdCB0aGlzIHdpdGggdGhlIGJvb2xlYW4KKzxjb25zdGFudD5WNEwyX0NJRF9BVVRPX1dISVRFX0JBTEFOQ0U8L2NvbnN0YW50Piwgd2hpY2gsIHdoZW4KK2FjdGl2YXRlZCwga2VlcHMgYWRqdXN0aW5nIHRoZSB3aGl0ZSBiYWxhbmNlLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSURfUkVEX0JBTEFOQ0U8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlZCBjaHJvbWEgYmFsYW5jZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX0JMVUVfQkFMQU5DRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICA8ZW50cnk+Qmx1ZSBjaHJvbWEgYmFsYW5jZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX0dBTU1BPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgIDxlbnRyeT5HYW1tYSBhZGp1c3QuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9XSElURU5FU1M8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgPGVudHJ5PldoaXRlbmVzcyBmb3IgZ3JleS1zY2FsZSBkZXZpY2VzLiBUaGlzIGlzIGEgc3lub255bQorZm9yIDxjb25zdGFudD5WNEwyX0NJRF9HQU1NQTwvY29uc3RhbnQ+LiBUaGlzIGNvbnRyb2wgaXMgZGVwcmVjYXRlZAorYW5kIHNob3VsZCBub3QgYmUgdXNlZCBpbiBuZXcgZHJpdmVycyBhbmQgYXBwbGljYXRpb25zLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSURfRVhQT1NVUkU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgPGVudHJ5PkV4cG9zdXJlIChjYW1lcmFzKS4gW1VuaXQ/XTwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSURfQVVUT0dBSU48L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgICAgPGVudHJ5PkF1dG9tYXRpYyBnYWluL2V4cG9zdXJlIGNvbnRyb2wuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9HQUlOPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgIDxlbnRyeT5HYWluIGNvbnRyb2wuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9IRkxJUDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmJvb2xlYW48L2VudHJ5PgorCSAgICA8ZW50cnk+TWlycm9yIHRoZSBwaWN0dXJlIGhvcml6b250YWxseS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX1ZGTElQPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Ym9vbGVhbjwvZW50cnk+CisJICAgIDxlbnRyeT5NaXJyb3IgdGhlIHBpY3R1cmUgdmVydGljYWxseS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJ2NGwyLXBvd2VyLWxpbmUtZnJlcXVlbmN5Ij4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9QT1dFUl9MSU5FX0ZSRVFVRU5DWTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmVudW08L2VudHJ5PgorCSAgICA8ZW50cnk+RW5hYmxlcyBhIHBvd2VyIGxpbmUgZnJlcXVlbmN5IGZpbHRlciB0byBhdm9pZAorZmxpY2tlci4gUG9zc2libGUgdmFsdWVzIGZvciA8Y29uc3RhbnQ+ZW51bSB2NGwyX3Bvd2VyX2xpbmVfZnJlcXVlbmN5PC9jb25zdGFudD4gYXJlOgorPGNvbnN0YW50PlY0TDJfQ0lEX1BPV0VSX0xJTkVfRlJFUVVFTkNZX0RJU0FCTEVEPC9jb25zdGFudD4gKDApLAorPGNvbnN0YW50PlY0TDJfQ0lEX1BPV0VSX0xJTkVfRlJFUVVFTkNZXzUwSFo8L2NvbnN0YW50PiAoMSksCis8Y29uc3RhbnQ+VjRMMl9DSURfUE9XRVJfTElORV9GUkVRVUVOQ1lfNjBIWjwvY29uc3RhbnQ+ICgyKSBhbmQKKzxjb25zdGFudD5WNEwyX0NJRF9QT1dFUl9MSU5FX0ZSRVFVRU5DWV9BVVRPPC9jb25zdGFudD4gKDMpLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSURfSFVFX0FVVE88L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgICAgPGVudHJ5PkVuYWJsZXMgYXV0b21hdGljIGh1ZSBjb250cm9sIGJ5IHRoZSBkZXZpY2UuIFRoZQorZWZmZWN0IG9mIHNldHRpbmcgPGNvbnN0YW50PlY0TDJfQ0lEX0hVRTwvY29uc3RhbnQ+IHdoaWxlIGF1dG9tYXRpYworaHVlIGNvbnRyb2wgaXMgZW5hYmxlZCBpcyB1bmRlZmluZWQsIGRyaXZlcnMgc2hvdWxkIGlnbm9yZSBzdWNoCityZXF1ZXN0LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSURfV0hJVEVfQkFMQU5DRV9URU1QRVJBVFVSRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBjb250cm9sIHNwZWNpZmllcyB0aGUgd2hpdGUgYmFsYW5jZSBzZXR0aW5ncworYXMgYSBjb2xvciB0ZW1wZXJhdHVyZSBpbiBLZWx2aW4uIEEgZHJpdmVyIHNob3VsZCBoYXZlIGEgbWluaW11bSBvZgorMjgwMCAoaW5jYW5kZXNjZW50KSB0byA2NTAwIChkYXlsaWdodCkuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0Citjb2xvciB0ZW1wZXJhdHVyZSBzZWUgPHVsaW5rCit1cmw9Imh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ29sb3JfdGVtcGVyYXR1cmUiPldpa2lwZWRpYTwvdWxpbms+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSURfU0hBUlBORVNTPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgIDxlbnRyeT5BZGp1c3RzIHRoZSBzaGFycG5lc3MgZmlsdGVycyBpbiBhIGNhbWVyYS4gVGhlCittaW5pbXVtIHZhbHVlIGRpc2FibGVzIHRoZSBmaWx0ZXJzLCBoaWdoZXIgdmFsdWVzIGdpdmUgYSBzaGFycGVyCitwaWN0dXJlLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSURfQkFDS0xJR0hUX0NPTVBFTlNBVElPTjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICA8ZW50cnk+QWRqdXN0cyB0aGUgYmFja2xpZ2h0IGNvbXBlbnNhdGlvbiBpbiBhIGNhbWVyYS4gVGhlCittaW5pbXVtIHZhbHVlIGRpc2FibGVzIGJhY2tsaWdodCBjb21wZW5zYXRpb24uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9DSFJPTUFfQUdDPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Ym9vbGVhbjwvZW50cnk+CisJICAgIDxlbnRyeT5DaHJvbWEgYXV0b21hdGljIGdhaW4gY29udHJvbC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX0NIUk9NQV9HQUlOPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgIDxlbnRyeT5BZGp1c3RzIHRoZSBDaHJvbWEgZ2FpbiBjb250cm9sIChmb3IgdXNlIHdoZW4gY2hyb21hIEFHQworCSAgICBpcyBkaXNhYmxlZCkuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9DT0xPUl9LSUxMRVI8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgICAgPGVudHJ5PkVuYWJsZSB0aGUgY29sb3Iga2lsbGVyICgmaWU7IGZvcmNlIGEgYmxhY2sgJmFtcDsgd2hpdGUgaW1hZ2UgaW4gY2FzZSBvZiBhIHdlYWsgdmlkZW8gc2lnbmFsKS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJ2NGwyLWNvbG9yZngiPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX0NPTE9SRlg8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5lbnVtPC9lbnRyeT4KKwkgICAgPGVudHJ5PlNlbGVjdHMgYSBjb2xvciBlZmZlY3QuIFRoZSBmb2xsb3dpbmcgdmFsdWVzIGFyZSBkZWZpbmVkOgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+PHJvdz4KKwkgIDxlbnRyeT48L2VudHJ5PgorCSAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCSAgICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NPTE9SRlhfTk9ORTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+Q29sb3IgZWZmZWN0IGlzIGRpc2FibGVkLjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DT0xPUkZYX0FOVElRVUU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgPGVudHJ5PkFuIGFnaW5nIChvbGQgcGhvdG8pIGVmZmVjdC48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ09MT1JGWF9BUlRfRlJFRVpFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgIDxlbnRyeT5Gcm9zdCBjb2xvciBlZmZlY3QuPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NPTE9SRlhfQVFVQTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+V2F0ZXIgY29sb3IsIGNvb2wgdG9uZS48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ09MT1JGWF9CVzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+QmxhY2sgYW5kIHdoaXRlLjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DT0xPUkZYX0VNQk9TUzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+RW1ib3NzLCB0aGUgaGlnaGxpZ2h0cyBhbmQgc2hhZG93cyByZXBsYWNlIGxpZ2h0L2RhcmsgYm91bmRhcmllcworCQkgIGFuZCBsb3cgY29udHJhc3QgYXJlYXMgYXJlIHNldCB0byBhIGdyYXkgYmFja2dyb3VuZC48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ09MT1JGWF9HUkFTU19HUkVFTjwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+R3Jhc3MgZ3JlZW4uPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NPTE9SRlhfTkVHQVRJVkU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgPGVudHJ5Pk5lZ2F0aXZlLjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DT0xPUkZYX1NFUElBPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgIDxlbnRyeT5TZXBpYSB0b25lLjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DT0xPUkZYX1NLRVRDSDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+U2tldGNoLjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DT0xPUkZYX1NLSU5fV0hJVEVOPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgIDxlbnRyeT5Ta2luIHdoaXRlbi48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ09MT1JGWF9TS1lfQkxVRTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+U2t5IGJsdWUuPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NPTE9SRlhfU09MQVJJWkFUSU9OPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgIDxlbnRyeT5Tb2xhcml6YXRpb24sIHRoZSBpbWFnZSBpcyBwYXJ0aWFsbHkgcmV2ZXJzZWQgaW4gdG9uZSwKKwkJICBvbmx5IGNvbG9yIHZhbHVlcyBhYm92ZSBvciBiZWxvdyBhIGNlcnRhaW4gdGhyZXNob2xkIGFyZSBpbnZlcnRlZC4KKwkJICA8L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ09MT1JGWF9TSUxIT1VFVFRFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgIDxlbnRyeT5TaWxob3VldHRlIChvdXRsaW5lKS48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ09MT1JGWF9WSVZJRDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+Vml2aWQgY29sb3JzLjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DT0xPUkZYX1NFVF9DQkNSPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgIDxlbnRyeT5UaGUgQ2IgYW5kIENyIGNocm9tYSBjb21wb25lbnRzIGFyZSByZXBsYWNlZCBieSBmaXhlZAorCQkgIGNvZWZmaWNpZW50cyBkZXRlcm1pbmVkIGJ5IDxjb25zdGFudD5WNEwyX0NJRF9DT0xPUkZYX0NCQ1I8L2NvbnN0YW50PgorCQkgIGNvbnRyb2wuPC9lbnRyeT4KKwkJPC9yb3c+CisJICAgICAgPC90Ym9keT4KKwkgICAgPC9lbnRyeXRibD4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9DT0xPUkZYX0NCQ1I8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgPGVudHJ5PkRldGVybWluZXMgdGhlIENiIGFuZCBDciBjb2VmZmljaWVudHMgZm9yIDxjb25zdGFudD5WNEwyX0NPTE9SRlhfU0VUX0NCQ1I8L2NvbnN0YW50PgorCSAgICBjb2xvciBlZmZlY3QuIEJpdHMgWzc6MF0gb2YgdGhlIHN1cHBsaWVkIDMyIGJpdCB2YWx1ZSBhcmUgaW50ZXJwcmV0ZWQgYXMKKwkgICAgQ3IgY29tcG9uZW50LCBiaXRzIFsxNTo4XSBhcyBDYiBjb21wb25lbnQgYW5kIGJpdHMgWzMxOjE2XSBtdXN0IGJlIHplcm8uCisJICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX0FVVE9CUklHSFRORVNTPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Ym9vbGVhbjwvZW50cnk+CisJICAgIDxlbnRyeT5FbmFibGUgQXV0b21hdGljIEJyaWdodG5lc3MuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9ST1RBVEU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgPGVudHJ5PlJvdGF0ZXMgdGhlIGltYWdlIGJ5IHNwZWNpZmllZCBhbmdsZS4gQ29tbW9uIGFuZ2xlcyBhcmUgOTAsCisJICAgIDI3MCBhbmQgMTgwLiBSb3RhdGluZyB0aGUgaW1hZ2UgdG8gOTAgYW5kIDI3MCB3aWxsIHJldmVyc2UgdGhlIGhlaWdodAorCSAgICBhbmQgd2lkdGggb2YgdGhlIGRpc3BsYXkgd2luZG93LiBJdCBpcyBuZWNlc3NhcnkgdG8gc2V0IHRoZSBuZXcgaGVpZ2h0IGFuZAorCSAgICB3aWR0aCBvZiB0aGUgcGljdHVyZSB1c2luZyB0aGUgJlZJRElPQy1TLUZNVDsgaW9jdGwgYWNjb3JkaW5nIHRvCisJICAgIHRoZSByb3RhdGlvbiBhbmdsZSBzZWxlY3RlZC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX0JHX0NPTE9SPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgIDxlbnRyeT5TZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9uIHRoZSBjdXJyZW50IG91dHB1dCBkZXZpY2UuCisJICAgIEJhY2tncm91bmQgY29sb3IgbmVlZHMgdG8gYmUgc3BlY2lmaWVkIGluIHRoZSBSR0IyNCBmb3JtYXQuIFRoZQorCSAgICBzdXBwbGllZCAzMiBiaXQgdmFsdWUgaXMgaW50ZXJwcmV0ZWQgYXMgYml0cyAwLTcgUmVkIGNvbG9yIGluZm9ybWF0aW9uLAorCSAgICBiaXRzIDgtMTUgR3JlZW4gY29sb3IgaW5mb3JtYXRpb24sIGJpdHMgMTYtMjMgQmx1ZSBjb2xvcgorCSAgICBpbmZvcm1hdGlvbiBhbmQgYml0cyAyNC0zMSBtdXN0IGJlIHplcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9JTExVTUlOQVRPUlNfMTwvY29uc3RhbnQ+CisJCTxjb25zdGFudD5WNEwyX0NJRF9JTExVTUlOQVRPUlNfMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmJvb2xlYW48L2VudHJ5PgorCSAgICA8ZW50cnk+U3dpdGNoIG9uIG9yIG9mZiB0aGUgaWxsdW1pbmF0b3IgMSBvciAyIG9mIHRoZSBkZXZpY2UKKwkJKHVzdWFsbHkgYSBtaWNyb3Njb3BlKS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX01JTl9CVUZGRVJTX0ZPUl9DQVBUVVJFPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGlzIGlzIGEgcmVhZC1vbmx5IGNvbnRyb2wgdGhhdCBjYW4gYmUgcmVhZCBieSB0aGUgYXBwbGljYXRpb24KK2FuZCB1c2VkIGFzIGEgaGludCB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBDQVBUVVJFIGJ1ZmZlcnMgdG8gcGFzcyB0byBSRVFCVUZTLgorVGhlIHZhbHVlIGlzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBDQVBUVVJFIGJ1ZmZlcnMgdGhhdCBpcyBuZWNlc3NhcnkgZm9yIGhhcmR3YXJlCit0byB3b3JrLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSURfTUlOX0JVRkZFUlNfRk9SX09VVFBVVDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBpcyBhIHJlYWQtb25seSBjb250cm9sIHRoYXQgY2FuIGJlIHJlYWQgYnkgdGhlIGFwcGxpY2F0aW9uCithbmQgdXNlZCBhcyBhIGhpbnQgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgT1VUUFVUIGJ1ZmZlcnMgdG8gcGFzcyB0byBSRVFCVUZTLgorVGhlIHZhbHVlIGlzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBPVVRQVVQgYnVmZmVycyB0aGF0IGlzIG5lY2Vzc2FyeSBmb3IgaGFyZHdhcmUKK3RvIHdvcmsuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0idjRsMi1hbHBoYS1jb21wb25lbnQiPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX0FMUEhBX0NPTVBPTkVOVDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICA8ZW50cnk+U2V0cyB0aGUgYWxwaGEgY29sb3IgY29tcG9uZW50LiBXaGVuIGEgY2FwdHVyZSBkZXZpY2UgKG9yCisJICAgIGNhcHR1cmUgcXVldWUgb2YgYSBtZW0tdG8tbWVtIGRldmljZSkgcHJvZHVjZXMgYSBmcmFtZSBmb3JtYXQgdGhhdAorCSAgICBpbmNsdWRlcyBhbiBhbHBoYSBjb21wb25lbnQKKwkgICAgKGUuZy4gPGxpbmsgbGlua2VuZD0icmdiLWZvcm1hdHMiPnBhY2tlZCBSR0IgaW1hZ2UgZm9ybWF0czwvbGluaz4pCisJICAgIGFuZCB0aGUgYWxwaGEgdmFsdWUgaXMgbm90IGRlZmluZWQgYnkgdGhlIGRldmljZSBvciB0aGUgbWVtLXRvLW1lbQorCSAgICBpbnB1dCBkYXRhIHRoaXMgY29udHJvbCBsZXRzIHlvdSBzZWxlY3QgdGhlIGFscGhhIGNvbXBvbmVudCB2YWx1ZSBvZgorCSAgICBhbGwgcGl4ZWxzLiBXaGVuIGFuIG91dHB1dCBkZXZpY2UgKG9yIG91dHB1dCBxdWV1ZSBvZiBhIG1lbS10by1tZW0KKwkgICAgZGV2aWNlKSBjb25zdW1lcyBhIGZyYW1lIGZvcm1hdCB0aGF0IGRvZXNuJ3QgaW5jbHVkZSBhbiBhbHBoYQorCSAgICBjb21wb25lbnQgYW5kIHRoZSBkZXZpY2Ugc3VwcG9ydHMgYWxwaGEgY2hhbm5lbCBwcm9jZXNzaW5nIHRoaXMKKwkgICAgY29udHJvbCBsZXRzIHlvdSBzZXQgdGhlIGFscGhhIGNvbXBvbmVudCB2YWx1ZSBvZiBhbGwgcGl4ZWxzIGZvcgorCSAgICBmdXJ0aGVyIHByb2Nlc3NpbmcgaW4gdGhlIGRldmljZS4KKwkgICAgPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9MQVNUUDE8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+RW5kIG9mIHRoZSBwcmVkZWZpbmVkIGNvbnRyb2wgSURzIChjdXJyZW50bHkKKwkgICAgICA8Y29uc3RhbnQ+VjRMMl9DSURfQUxQSEFfQ09NUE9ORU5UPC9jb25zdGFudD4gKyAxKS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX1BSSVZBVEVfQkFTRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5JRCBvZiB0aGUgZmlyc3QgY3VzdG9tIChkcml2ZXIgc3BlY2lmaWMpIGNvbnRyb2wuCitBcHBsaWNhdGlvbnMgZGVwZW5kaW5nIG9uIHBhcnRpY3VsYXIgY3VzdG9tIGNvbnRyb2xzIHNob3VsZCBjaGVjayB0aGUKK2RyaXZlciBuYW1lIGFuZCB2ZXJzaW9uLCBzZWUgPHhyZWYgbGlua2VuZD0icXVlcnljYXAiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDxwYXJhPkFwcGxpY2F0aW9ucyBjYW4gZW51bWVyYXRlIHRoZSBhdmFpbGFibGUgY29udHJvbHMgd2l0aCB0aGUKKyZWSURJT0MtUVVFUllDVFJMOyBhbmQgJlZJRElPQy1RVUVSWU1FTlU7IGlvY3RscywgZ2V0IGFuZCBzZXQgYQorY29udHJvbCB2YWx1ZSB3aXRoIHRoZSAmVklESU9DLUctQ1RSTDsgYW5kICZWSURJT0MtUy1DVFJMOyBpb2N0bHMuCitEcml2ZXJzIG11c3QgaW1wbGVtZW50IDxjb25zdGFudD5WSURJT0NfUVVFUllDVFJMPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VklESU9DX0dfQ1RSTDwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlZJRElPQ19TX0NUUkw8L2NvbnN0YW50PiB3aGVuIHRoZSBkZXZpY2UgaGFzIG9uZSBvciBtb3JlCitjb250cm9scywgPGNvbnN0YW50PlZJRElPQ19RVUVSWU1FTlU8L2NvbnN0YW50PiB3aGVuIGl0IGhhcyBvbmUgb3IKK21vcmUgbWVudSB0eXBlIGNvbnRyb2xzLjwvcGFyYT4KKworICAgIDxleGFtcGxlIGlkPSJlbnVtX2FsbF9jb250cm9scyI+CisgICAgICA8dGl0bGU+RW51bWVyYXRpbmcgYWxsIHVzZXIgY29udHJvbHM8L3RpdGxlPgorCisgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CismdjRsMi1xdWVyeWN0cmw7IHF1ZXJ5Y3RybDsKKyZ2NGwyLXF1ZXJ5bWVudTsgcXVlcnltZW51OworCitzdGF0aWMgdm9pZCBlbnVtZXJhdGVfbWVudSh2b2lkKQoreworCXByaW50ZigiICBNZW51IGl0ZW1zOlxuIik7CisKKwltZW1zZXQoJmFtcDtxdWVyeW1lbnUsIDAsIHNpemVvZihxdWVyeW1lbnUpKTsKKwlxdWVyeW1lbnUuaWQgPSBxdWVyeWN0cmwuaWQ7CisKKwlmb3IgKHF1ZXJ5bWVudS5pbmRleCA9IHF1ZXJ5Y3RybC5taW5pbXVtOworCSAgICAgcXVlcnltZW51LmluZGV4ICZsdDs9IHF1ZXJ5Y3RybC5tYXhpbXVtOworCSAgICAgcXVlcnltZW51LmluZGV4KyspIHsKKwkJaWYgKDAgPT0gaW9jdGwoZmQsICZWSURJT0MtUVVFUllNRU5VOywgJmFtcDtxdWVyeW1lbnUpKSB7CisJCQlwcmludGYoIiAgJXNcbiIsIHF1ZXJ5bWVudS5uYW1lKTsKKwkJfQorCX0KK30KKworbWVtc2V0KCZhbXA7cXVlcnljdHJsLCAwLCBzaXplb2YocXVlcnljdHJsKSk7CisKK2ZvciAocXVlcnljdHJsLmlkID0gVjRMMl9DSURfQkFTRTsKKyAgICAgcXVlcnljdHJsLmlkICZsdDsgVjRMMl9DSURfTEFTVFAxOworICAgICBxdWVyeWN0cmwuaWQrKykgeworCWlmICgwID09IGlvY3RsKGZkLCAmVklESU9DLVFVRVJZQ1RSTDssICZhbXA7cXVlcnljdHJsKSkgeworCQlpZiAocXVlcnljdHJsLmZsYWdzICZhbXA7IFY0TDJfQ1RSTF9GTEFHX0RJU0FCTEVEKQorCQkJY29udGludWU7CisKKwkJcHJpbnRmKCJDb250cm9sICVzXG4iLCBxdWVyeWN0cmwubmFtZSk7CisKKwkJaWYgKHF1ZXJ5Y3RybC50eXBlID09IFY0TDJfQ1RSTF9UWVBFX01FTlUpCisJCQllbnVtZXJhdGVfbWVudSgpOworCX0gZWxzZSB7CisJCWlmIChlcnJubyA9PSBFSU5WQUwpCisJCQljb250aW51ZTsKKworCQlwZXJyb3IoIlZJRElPQ19RVUVSWUNUUkwiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KK30KKworZm9yIChxdWVyeWN0cmwuaWQgPSBWNEwyX0NJRF9QUklWQVRFX0JBU0U7OworICAgICBxdWVyeWN0cmwuaWQrKykgeworCWlmICgwID09IGlvY3RsKGZkLCAmVklESU9DLVFVRVJZQ1RSTDssICZhbXA7cXVlcnljdHJsKSkgeworCQlpZiAocXVlcnljdHJsLmZsYWdzICZhbXA7IFY0TDJfQ1RSTF9GTEFHX0RJU0FCTEVEKQorCQkJY29udGludWU7CisKKwkJcHJpbnRmKCJDb250cm9sICVzXG4iLCBxdWVyeWN0cmwubmFtZSk7CisKKwkJaWYgKHF1ZXJ5Y3RybC50eXBlID09IFY0TDJfQ1RSTF9UWVBFX01FTlUpCisJCQllbnVtZXJhdGVfbWVudSgpOworCX0gZWxzZSB7CisJCWlmIChlcnJubyA9PSBFSU5WQUwpCisJCQlicmVhazsKKworCQlwZXJyb3IoIlZJRElPQ19RVUVSWUNUUkwiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KK30KKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPC9leGFtcGxlPgorCisgICAgPGV4YW1wbGU+CisgICAgICA8dGl0bGU+RW51bWVyYXRpbmcgYWxsIHVzZXIgY29udHJvbHMgKGFsdGVybmF0aXZlKTwvdGl0bGU+CisJPHByb2dyYW1saXN0aW5nPgorbWVtc2V0KCZhbXA7cXVlcnljdHJsLCAwLCBzaXplb2YocXVlcnljdHJsKSk7CisKK3F1ZXJ5Y3RybC5pZCA9IFY0TDJfQ1RSTF9DTEFTU19VU0VSIHwgVjRMMl9DVFJMX0ZMQUdfTkVYVF9DVFJMOword2hpbGUgKDAgPT0gaW9jdGwoZmQsICZWSURJT0MtUVVFUllDVFJMOywgJmFtcDtxdWVyeWN0cmwpKSB7CisJaWYgKFY0TDJfQ1RSTF9JRDJDTEFTUyhxdWVyeWN0cmwuaWQpICE9IFY0TDJfQ1RSTF9DTEFTU19VU0VSKQorCQlicmVhazsKKwlpZiAocXVlcnljdHJsLmZsYWdzICZhbXA7IFY0TDJfQ1RSTF9GTEFHX0RJU0FCTEVEKQorCQljb250aW51ZTsKKworCXByaW50ZigiQ29udHJvbCAlc1xuIiwgcXVlcnljdHJsLm5hbWUpOworCisJaWYgKHF1ZXJ5Y3RybC50eXBlID09IFY0TDJfQ1RSTF9UWVBFX01FTlUpCisJCWVudW1lcmF0ZV9tZW51KCk7CisKKwlxdWVyeWN0cmwuaWQgfD0gVjRMMl9DVFJMX0ZMQUdfTkVYVF9DVFJMOworfQoraWYgKGVycm5vICE9IEVJTlZBTCkgeworCXBlcnJvcigiVklESU9DX1FVRVJZQ1RSTCIpOworCWV4aXQoRVhJVF9GQUlMVVJFKTsKK30KKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPC9leGFtcGxlPgorCisgICAgPGV4YW1wbGU+CisgICAgICA8dGl0bGU+Q2hhbmdpbmcgY29udHJvbHM8L3RpdGxlPgorCisgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CismdjRsMi1xdWVyeWN0cmw7IHF1ZXJ5Y3RybDsKKyZ2NGwyLWNvbnRyb2w7IGNvbnRyb2w7CisKK21lbXNldCgmYW1wO3F1ZXJ5Y3RybCwgMCwgc2l6ZW9mKHF1ZXJ5Y3RybCkpOworcXVlcnljdHJsLmlkID0gVjRMMl9DSURfQlJJR0hUTkVTUzsKKworaWYgKC0xID09IGlvY3RsKGZkLCAmVklESU9DLVFVRVJZQ1RSTDssICZhbXA7cXVlcnljdHJsKSkgeworCWlmIChlcnJubyAhPSBFSU5WQUwpIHsKKwkJcGVycm9yKCJWSURJT0NfUVVFUllDVFJMIik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9IGVsc2UgeworCQlwcmludGYoIlY0TDJfQ0lEX0JSSUdIVE5FU1MgaXMgbm90IHN1cHBvcnRlZFxuIik7CisJfQorfSBlbHNlIGlmIChxdWVyeWN0cmwuZmxhZ3MgJmFtcDsgVjRMMl9DVFJMX0ZMQUdfRElTQUJMRUQpIHsKKwlwcmludGYoIlY0TDJfQ0lEX0JSSUdIVE5FU1MgaXMgbm90IHN1cHBvcnRlZFxuIik7Cit9IGVsc2UgeworCW1lbXNldCgmYW1wO2NvbnRyb2wsIDAsIHNpemVvZiAoY29udHJvbCkpOworCWNvbnRyb2wuaWQgPSBWNEwyX0NJRF9CUklHSFRORVNTOworCWNvbnRyb2wudmFsdWUgPSBxdWVyeWN0cmwuZGVmYXVsdF92YWx1ZTsKKworCWlmICgtMSA9PSBpb2N0bChmZCwgJlZJRElPQy1TLUNUUkw7LCAmYW1wO2NvbnRyb2wpKSB7CisJCXBlcnJvcigiVklESU9DX1NfQ1RSTCIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorfQorCittZW1zZXQoJmFtcDtjb250cm9sLCAwLCBzaXplb2YoY29udHJvbCkpOworY29udHJvbC5pZCA9IFY0TDJfQ0lEX0NPTlRSQVNUOworCitpZiAoMCA9PSBpb2N0bChmZCwgJlZJRElPQy1HLUNUUkw7LCAmYW1wO2NvbnRyb2wpKSB7CisJY29udHJvbC52YWx1ZSArPSAxOworCisJLyogVGhlIGRyaXZlciBtYXkgY2xhbXAgdGhlIHZhbHVlIG9yIHJldHVybiBFUkFOR0UsIGlnbm9yZWQgaGVyZSAqLworCisJaWYgKC0xID09IGlvY3RsKGZkLCAmVklESU9DLVMtQ1RSTDssICZhbXA7Y29udHJvbCkKKwkgICAgJmFtcDsmYW1wOyBlcnJubyAhPSBFUkFOR0UpIHsKKwkJcGVycm9yKCJWSURJT0NfU19DVFJMIik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisvKiBJZ25vcmUgaWYgVjRMMl9DSURfQ09OVFJBU1QgaXMgdW5zdXBwb3J0ZWQgKi8KK30gZWxzZSBpZiAoZXJybm8gIT0gRUlOVkFMKSB7CisJcGVycm9yKCJWSURJT0NfR19DVFJMIik7CisJZXhpdChFWElUX0ZBSUxVUkUpOworfQorCitjb250cm9sLmlkID0gVjRMMl9DSURfQVVESU9fTVVURTsKK2NvbnRyb2wudmFsdWUgPSAxOyAvKiBzaWxlbmNlICovCisKKy8qIEVycm9ycyBpZ25vcmVkICovCitpb2N0bChmZCwgVklESU9DX1NfQ1RSTCwgJmFtcDtjb250cm9sKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPC9leGFtcGxlPgorICA8L3NlY3Rpb24+CisKKyAgPHNlY3Rpb24gaWQ9ImV4dGVuZGVkLWNvbnRyb2xzIj4KKyAgICA8dGl0bGU+RXh0ZW5kZWQgQ29udHJvbHM8L3RpdGxlPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KKworICAgICAgPHBhcmE+VGhlIGNvbnRyb2wgbWVjaGFuaXNtIGFzIG9yaWdpbmFsbHkgZGVzaWduZWQgd2FzIG1lYW50Cit0byBiZSB1c2VkIGZvciB1c2VyIHNldHRpbmdzIChicmlnaHRuZXNzLCBzYXR1cmF0aW9uLCBldGMpLiBIb3dldmVyLAoraXQgdHVybmVkIG91dCB0byBiZSBhIHZlcnkgdXNlZnVsIG1vZGVsIGZvciBpbXBsZW1lbnRpbmcgbW9yZQorY29tcGxpY2F0ZWQgZHJpdmVyIEFQSXMgd2hlcmUgZWFjaCBkcml2ZXIgaW1wbGVtZW50cyBvbmx5IGEgc3Vic2V0IG9mCithIGxhcmdlciBBUEkuPC9wYXJhPgorCisgICAgICA8cGFyYT5UaGUgTVBFRyBlbmNvZGluZyBBUEkgd2FzIHRoZSBkcml2aW5nIGZvcmNlIGJlaGluZAorZGVzaWduaW5nIGFuZCBpbXBsZW1lbnRpbmcgdGhpcyBleHRlbmRlZCBjb250cm9sIG1lY2hhbmlzbTogdGhlIE1QRUcKK3N0YW5kYXJkIGlzIHF1aXRlIGxhcmdlIGFuZCB0aGUgY3VycmVudGx5IHN1cHBvcnRlZCBoYXJkd2FyZSBNUEVHCitlbmNvZGVycyBlYWNoIG9ubHkgaW1wbGVtZW50IGEgc3Vic2V0IG9mIHRoaXMgc3RhbmRhcmQuIEZ1cnRoZXIgbW9yZSwKK21hbnkgcGFyYW1ldGVycyByZWxhdGluZyB0byBob3cgdGhlIHZpZGVvIGlzIGVuY29kZWQgaW50byBhbiBNUEVHCitzdHJlYW0gYXJlIHNwZWNpZmljIHRvIHRoZSBNUEVHIGVuY29kaW5nIGNoaXAgc2luY2UgdGhlIE1QRUcgc3RhbmRhcmQKK29ubHkgZGVmaW5lcyB0aGUgZm9ybWF0IG9mIHRoZSByZXN1bHRpbmcgTVBFRyBzdHJlYW0sIG5vdCBob3cgdGhlCit2aWRlbyBpcyBhY3R1YWxseSBlbmNvZGVkIGludG8gdGhhdCBmb3JtYXQuPC9wYXJhPgorCisgICAgICA8cGFyYT5VbmZvcnR1bmF0ZWx5LCB0aGUgb3JpZ2luYWwgY29udHJvbCBBUEkgbGFja2VkIHNvbWUKK2ZlYXR1cmVzIG5lZWRlZCBmb3IgdGhlc2UgbmV3IHVzZXMgYW5kIHNvIGl0IHdhcyBleHRlbmRlZCBpbnRvIHRoZQorKG5vdCB0ZXJyaWJseSBvcmlnaW5hbGx5IG5hbWVkKSBleHRlbmRlZCBjb250cm9sIEFQSS48L3BhcmE+CisKKyAgICAgIDxwYXJhPkV2ZW4gdGhvdWdoIHRoZSBNUEVHIGVuY29kaW5nIEFQSSB3YXMgdGhlIGZpcnN0IGVmZm9ydAordG8gdXNlIHRoZSBFeHRlbmRlZCBDb250cm9sIEFQSSwgbm93YWRheXMgdGhlcmUgYXJlIGFsc28gb3RoZXIgY2xhc3Nlcworb2YgRXh0ZW5kZWQgQ29udHJvbHMsIHN1Y2ggYXMgQ2FtZXJhIENvbnRyb2xzIGFuZCBGTSBUcmFuc21pdHRlciBDb250cm9scy4KK1RoZSBFeHRlbmRlZCBDb250cm9scyBBUEkgYXMgd2VsbCBhcyBhbGwgRXh0ZW5kZWQgQ29udHJvbHMgY2xhc3NlcyBhcmUKK2Rlc2NyaWJlZCBpbiB0aGUgZm9sbG93aW5nIHRleHQuPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlRoZSBFeHRlbmRlZCBDb250cm9sIEFQSTwvdGl0bGU+CisKKyAgICAgIDxwYXJhPlRocmVlIG5ldyBpb2N0bHMgYXJlIGF2YWlsYWJsZTogJlZJRElPQy1HLUVYVC1DVFJMUzssCismVklESU9DLVMtRVhULUNUUkxTOyBhbmQgJlZJRElPQy1UUlktRVhULUNUUkxTOy4gVGhlc2UgaW9jdGxzIGFjdCBvbgorYXJyYXlzIG9mIGNvbnRyb2xzIChhcyBvcHBvc2VkIHRvIHRoZSAmVklESU9DLUctQ1RSTDsgYW5kCismVklESU9DLVMtQ1RSTDsgaW9jdGxzIHRoYXQgYWN0IG9uIGEgc2luZ2xlIGNvbnRyb2wpLiBUaGlzIGlzIG5lZWRlZAorc2luY2UgaXQgaXMgb2Z0ZW4gcmVxdWlyZWQgdG8gYXRvbWljYWxseSBjaGFuZ2Ugc2V2ZXJhbCBjb250cm9scyBhdAorb25jZS48L3BhcmE+CisKKyAgICAgIDxwYXJhPkVhY2ggb2YgdGhlIG5ldyBpb2N0bHMgZXhwZWN0cyBhIHBvaW50ZXIgdG8gYQorJnY0bDItZXh0LWNvbnRyb2xzOy4gVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgYSBwb2ludGVyIHRvIHRoZSBjb250cm9sCithcnJheSwgYSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIGNvbnRyb2xzIGluIHRoYXQgYXJyYXkgYW5kIGEgY29udHJvbAorY2xhc3MuIENvbnRyb2wgY2xhc3NlcyBhcmUgdXNlZCB0byBncm91cCBzaW1pbGFyIGNvbnRyb2xzIGludG8gYQorc2luZ2xlIGNsYXNzLiBGb3IgZXhhbXBsZSwgY29udHJvbCBjbGFzcworPGNvbnN0YW50PlY0TDJfQ1RSTF9DTEFTU19VU0VSPC9jb25zdGFudD4gY29udGFpbnMgYWxsIHVzZXIgY29udHJvbHMKKygmaWU7IGFsbCBjb250cm9scyB0aGF0IGNhbiBhbHNvIGJlIHNldCB1c2luZyB0aGUgb2xkCis8Y29uc3RhbnQ+VklESU9DX1NfQ1RSTDwvY29uc3RhbnQ+IGlvY3RsKS4gQ29udHJvbCBjbGFzcworPGNvbnN0YW50PlY0TDJfQ1RSTF9DTEFTU19NUEVHPC9jb25zdGFudD4gY29udGFpbnMgYWxsIGNvbnRyb2xzCityZWxhdGluZyB0byBNUEVHIGVuY29kaW5nLCBldGMuPC9wYXJhPgorCisgICAgICA8cGFyYT5BbGwgY29udHJvbHMgaW4gdGhlIGNvbnRyb2wgYXJyYXkgbXVzdCBiZWxvbmcgdG8gdGhlCitzcGVjaWZpZWQgY29udHJvbCBjbGFzcy4gQW4gZXJyb3IgaXMgcmV0dXJuZWQgaWYgdGhpcyBpcyBub3QgdGhlCitjYXNlLjwvcGFyYT4KKworICAgICAgPHBhcmE+SXQgaXMgYWxzbyBwb3NzaWJsZSB0byB1c2UgYW4gZW1wdHkgY29udHJvbCBhcnJheSAoY291bnQKKz09IDApIHRvIGNoZWNrIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBjb250cm9sIGNsYXNzIGlzCitzdXBwb3J0ZWQuPC9wYXJhPgorCisgICAgICA8cGFyYT5UaGUgY29udHJvbCBhcnJheSBpcyBhICZ2NGwyLWV4dC1jb250cm9sOyBhcnJheS4gVGhlCis8c3RydWN0bmFtZT52NGwyX2V4dF9jb250cm9sPC9zdHJ1Y3RuYW1lPiBzdHJ1Y3R1cmUgaXMgdmVyeSBzaW1pbGFyIHRvCismdjRsMi1jb250cm9sOywgZXhjZXB0IGZvciB0aGUgZmFjdCB0aGF0IGl0IGFsc28gYWxsb3dzIGZvciA2NC1iaXQKK3ZhbHVlcyBhbmQgcG9pbnRlcnMgdG8gYmUgcGFzc2VkLjwvcGFyYT4KKworICAgICAgPHBhcmE+U2luY2UgdGhlICZ2NGwyLWV4dC1jb250cm9sOyBzdXBwb3J0cyBwb2ludGVycyBpdCBpcyBub3cKK2Fsc28gcG9zc2libGUgdG8gaGF2ZSBjb250cm9scyB3aXRoIGNvbXBvdW5kIHR5cGVzIHN1Y2ggYXMgTi1kaW1lbnNpb25hbCBhcnJheXMKK2FuZC9vciBzdHJ1Y3R1cmVzLiBZb3UgbmVlZCB0byBzcGVjaWZ5IHRoZSA8Y29uc3RhbnQ+VjRMMl9DVFJMX0ZMQUdfTkVYVF9DT01QT1VORDwvY29uc3RhbnQ+Cit3aGVuIGVudW1lcmF0aW5nIGNvbnRyb2xzIHRvIGFjdHVhbGx5IGJlIGFibGUgdG8gc2VlIHN1Y2ggY29tcG91bmQgY29udHJvbHMuCitJbiBvdGhlciB3b3JkcywgdGhlc2UgY29udHJvbHMgd2l0aCBjb21wb3VuZCB0eXBlcyBzaG91bGQgb25seSBiZSB1c2VkCitwcm9ncmFtbWF0aWNhbGx5LjwvcGFyYT4KKworICAgICAgPHBhcmE+U2luY2Ugc3VjaCBjb21wb3VuZCBjb250cm9scyBuZWVkIHRvIGV4cG9zZSBtb3JlIGluZm9ybWF0aW9uCithYm91dCB0aGVtc2VsdmVzIHRoYW4gaXMgcG9zc2libGUgd2l0aCAmVklESU9DLVFVRVJZQ1RSTDsgdGhlCismVklESU9DLVFVRVJZLUVYVC1DVFJMOyBpb2N0bCB3YXMgYWRkZWQuIEluIHBhcnRpY3VsYXIsIHRoaXMgaW9jdGwgZ2l2ZXMKK3RoZSBkaW1lbnNpb25zIG9mIHRoZSBOLWRpbWVuc2lvbmFsIGFycmF5IGlmIHRoaXMgY29udHJvbCBjb25zaXN0cyBvZiBtb3JlIHRoYW4KK29uZSBlbGVtZW50LjwvcGFyYT4KKworICAgICAgPHBhcmE+SXQgaXMgaW1wb3J0YW50IHRvIHJlYWxpemUgdGhhdCBkdWUgdG8gdGhlIGZsZXhpYmlsaXR5IG9mCitjb250cm9scyBpdCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgd2hldGhlciB0aGUgY29udHJvbCB5b3Ugd2FudCB0byBzZXQKK2FjdHVhbGx5IGlzIHN1cHBvcnRlZCBpbiB0aGUgZHJpdmVyIGFuZCB3aGF0IHRoZSB2YWxpZCByYW5nZSBvZiB2YWx1ZXMKK2lzLiBTbyB1c2UgdGhlICZWSURJT0MtUVVFUllDVFJMOyAob3IgJlZJRElPQy1RVUVSWS1FWFQtQ1RSTDspIGFuZAorJlZJRElPQy1RVUVSWU1FTlU7IGlvY3RscyB0byBjaGVjayB0aGlzLiBBbHNvIG5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZQordGhhdCBzb21lIG9mIHRoZSBtZW51IGluZGljZXMgaW4gYSBjb250cm9sIG9mIHR5cGUKKzxjb25zdGFudD5WNEwyX0NUUkxfVFlQRV9NRU5VPC9jb25zdGFudD4gbWF5IG5vdCBiZSBzdXBwb3J0ZWQKKyg8Y29uc3RhbnQ+VklESU9DX1FVRVJZTUVOVTwvY29uc3RhbnQ+IHdpbGwgcmV0dXJuIGFuIGVycm9yKS4gQSBnb29kCitleGFtcGxlIGlzIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBNUEVHIGF1ZGlvIGJpdHJhdGVzLiBTb21lIGRyaXZlcnMgb25seQorc3VwcG9ydCBvbmUgb3IgdHdvIGJpdHJhdGVzLCBvdGhlcnMgc3VwcG9ydCBhIHdpZGVyIHJhbmdlLjwvcGFyYT4KKworICAgICAgPHBhcmE+CisJQWxsIGNvbnRyb2xzIHVzZSBtYWNoaW5lIGVuZGlhbm5lc3MuCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+RW51bWVyYXRpbmcgRXh0ZW5kZWQgQ29udHJvbHM8L3RpdGxlPgorCisgICAgICA8cGFyYT5UaGUgcmVjb21tZW5kZWQgd2F5IHRvIGVudW1lcmF0ZSBvdmVyIHRoZSBleHRlbmRlZAorY29udHJvbHMgaXMgYnkgdXNpbmcgJlZJRElPQy1RVUVSWUNUUkw7IGluIGNvbWJpbmF0aW9uIHdpdGggdGhlCis8Y29uc3RhbnQ+VjRMMl9DVFJMX0ZMQUdfTkVYVF9DVFJMPC9jb25zdGFudD4gZmxhZzo8L3BhcmE+CisKKyAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisJPHByb2dyYW1saXN0aW5nPgorJnY0bDItcXVlcnljdHJsOyBxY3RybDsKKworcWN0cmwuaWQgPSBWNEwyX0NUUkxfRkxBR19ORVhUX0NUUkw7Cit3aGlsZSAoMCA9PSBpb2N0bCAoZmQsICZWSURJT0MtUVVFUllDVFJMOywgJmFtcDtxY3RybCkpIHsKKwkvKiAuLi4gKi8KKwlxY3RybC5pZCB8PSBWNEwyX0NUUkxfRkxBR19ORVhUX0NUUkw7Cit9Cis8L3Byb2dyYW1saXN0aW5nPgorICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisKKyAgICAgIDxwYXJhPlRoZSBpbml0aWFsIGNvbnRyb2wgSUQgaXMgc2V0IHRvIDAgT1JlZCB3aXRoIHRoZQorPGNvbnN0YW50PlY0TDJfQ1RSTF9GTEFHX05FWFRfQ1RSTDwvY29uc3RhbnQ+IGZsYWcuIFRoZQorPGNvbnN0YW50PlZJRElPQ19RVUVSWUNUUkw8L2NvbnN0YW50PiBpb2N0bCB3aWxsIHJldHVybiB0aGUgZmlyc3QKK2NvbnRyb2wgd2l0aCBhIGhpZ2hlciBJRCB0aGFuIHRoZSBzcGVjaWZpZWQgb25lLiBXaGVuIG5vIHN1Y2ggY29udHJvbHMKK2FyZSBmb3VuZCBhbiBlcnJvciBpcyByZXR1cm5lZC48L3BhcmE+CisKKyAgICAgIDxwYXJhPklmIHlvdSB3YW50IHRvIGdldCBhbGwgY29udHJvbHMgd2l0aGluIGEgc3BlY2lmaWMgY29udHJvbAorY2xhc3MsIHRoZW4geW91IGNhbiBzZXQgdGhlIGluaXRpYWwKKzxzdHJ1Y3RmaWVsZD5xY3RybC5pZDwvc3RydWN0ZmllbGQ+IHZhbHVlIHRvIHRoZSBjb250cm9sIGNsYXNzIGFuZCBhZGQKK2FuIGV4dHJhIGNoZWNrIHRvIGJyZWFrIG91dCBvZiB0aGUgbG9vcCB3aGVuIGEgY29udHJvbCBvZiBhbm90aGVyCitjb250cm9sIGNsYXNzIGlzIGZvdW5kOjwvcGFyYT4KKworICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKwk8cHJvZ3JhbWxpc3Rpbmc+CitxY3RybC5pZCA9IFY0TDJfQ1RSTF9DTEFTU19NUEVHIHwgVjRMMl9DVFJMX0ZMQUdfTkVYVF9DVFJMOword2hpbGUgKDAgPT0gaW9jdGwoZmQsICZWSURJT0MtUVVFUllDVFJMOywgJmFtcDtxY3RybCkpIHsKKwlpZiAoVjRMMl9DVFJMX0lEMkNMQVNTKHFjdHJsLmlkKSAhPSBWNEwyX0NUUkxfQ0xBU1NfTVBFRykKKwkJYnJlYWs7CisJCS8qIC4uLiAqLworCXFjdHJsLmlkIHw9IFY0TDJfQ1RSTF9GTEFHX05FWFRfQ1RSTDsKK30KKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworICAgICAgPHBhcmE+VGhlIDMyLWJpdCA8c3RydWN0ZmllbGQ+cWN0cmwuaWQ8L3N0cnVjdGZpZWxkPiB2YWx1ZSBpcworc3ViZGl2aWRlZCBpbnRvIHRocmVlIGJpdCByYW5nZXM6IHRoZSB0b3AgNCBiaXRzIGFyZSByZXNlcnZlZCBmb3IKK2ZsYWdzICgmZWc7IDxjb25zdGFudD5WNEwyX0NUUkxfRkxBR19ORVhUX0NUUkw8L2NvbnN0YW50PikgYW5kIGFyZSBub3QKK2FjdHVhbGx5IHBhcnQgb2YgdGhlIElELiBUaGUgcmVtYWluaW5nIDI4IGJpdHMgZm9ybSB0aGUgY29udHJvbCBJRCwgb2YKK3doaWNoIHRoZSBtb3N0IHNpZ25pZmljYW50IDEyIGJpdHMgZGVmaW5lIHRoZSBjb250cm9sIGNsYXNzIGFuZCB0aGUKK2xlYXN0IHNpZ25pZmljYW50IDE2IGJpdHMgaWRlbnRpZnkgdGhlIGNvbnRyb2wgd2l0aGluIHRoZSBjb250cm9sCitjbGFzcy4gSXQgaXMgZ3VhcmFudGVlZCB0aGF0IHRoZXNlIGxhc3QgMTYgYml0cyBhcmUgYWx3YXlzIG5vbi16ZXJvCitmb3IgY29udHJvbHMuIFRoZSByYW5nZSBvZiAweDEwMDAgYW5kIHVwIGFyZSByZXNlcnZlZCBmb3IKK2RyaXZlci1zcGVjaWZpYyBjb250cm9scy4gVGhlIG1hY3JvCis8Y29uc3RhbnQ+VjRMMl9DVFJMX0lEMkNMQVNTKGlkKTwvY29uc3RhbnQ+IHJldHVybnMgdGhlIGNvbnRyb2wgY2xhc3MKK0lEIGJhc2VkIG9uIGEgY29udHJvbCBJRC48L3BhcmE+CisKKyAgICAgIDxwYXJhPklmIHRoZSBkcml2ZXIgZG9lcyBub3Qgc3VwcG9ydCBleHRlbmRlZCBjb250cm9scywgdGhlbgorPGNvbnN0YW50PlZJRElPQ19RVUVSWUNUUkw8L2NvbnN0YW50PiB3aWxsIGZhaWwgd2hlbiB1c2VkIGluCitjb21iaW5hdGlvbiB3aXRoIDxjb25zdGFudD5WNEwyX0NUUkxfRkxBR19ORVhUX0NUUkw8L2NvbnN0YW50Pi4gSW4KK3RoYXQgY2FzZSB0aGUgb2xkIG1ldGhvZCBvZiBlbnVtZXJhdGluZyBjb250cm9sIHNob3VsZCBiZSB1c2VkIChzZWUKKzx4cmVmIGxpbmtlbmQ9ImVudW1fYWxsX2NvbnRyb2xzIiAvPikuIEJ1dCBpZiBpdCBpcyBzdXBwb3J0ZWQsIHRoZW4gaXQgaXMgZ3VhcmFudGVlZCB0byBlbnVtZXJhdGUgb3ZlcgorYWxsIGNvbnRyb2xzLCBpbmNsdWRpbmcgZHJpdmVyLXByaXZhdGUgY29udHJvbHMuPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPkNyZWF0aW5nIENvbnRyb2wgUGFuZWxzPC90aXRsZT4KKworICAgICAgPHBhcmE+SXQgaXMgcG9zc2libGUgdG8gY3JlYXRlIGNvbnRyb2wgcGFuZWxzIGZvciBhIGdyYXBoaWNhbAordXNlciBpbnRlcmZhY2Ugd2hlcmUgdGhlIHVzZXIgY2FuIHNlbGVjdCB0aGUgdmFyaW91cyBjb250cm9scy4KK0Jhc2ljYWxseSB5b3Ugd2lsbCBoYXZlIHRvIGl0ZXJhdGUgb3ZlciBhbGwgY29udHJvbHMgdXNpbmcgdGhlIG1ldGhvZAorZGVzY3JpYmVkIGFib3ZlLiBFYWNoIGNvbnRyb2wgY2xhc3Mgc3RhcnRzIHdpdGggYSBjb250cm9sIG9mIHR5cGUKKzxjb25zdGFudD5WNEwyX0NUUkxfVFlQRV9DVFJMX0NMQVNTPC9jb25zdGFudD4uCis8Y29uc3RhbnQ+VklESU9DX1FVRVJZQ1RSTDwvY29uc3RhbnQ+IHdpbGwgcmV0dXJuIHRoZSBuYW1lIG9mIHRoaXMKK2NvbnRyb2wgY2xhc3Mgd2hpY2ggY2FuIGJlIHVzZWQgYXMgdGhlIHRpdGxlIG9mIGEgdGFiIHBhZ2Ugd2l0aGluIGEKK2NvbnRyb2wgcGFuZWwuPC9wYXJhPgorCisgICAgICA8cGFyYT5UaGUgZmxhZ3MgZmllbGQgb2YgJnY0bDItcXVlcnljdHJsOyBhbHNvIGNvbnRhaW5zIGhpbnRzIG9uCit0aGUgYmVoYXZpb3Igb2YgdGhlIGNvbnRyb2wuIFNlZSB0aGUgJlZJRElPQy1RVUVSWUNUUkw7IGRvY3VtZW50YXRpb24KK2ZvciBtb3JlIGRldGFpbHMuPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJtcGVnLWNvbnRyb2xzIj4KKyAgICAgIDx0aXRsZT5Db2RlYyBDb250cm9sIFJlZmVyZW5jZTwvdGl0bGU+CisKKyAgICAgIDxwYXJhPkJlbG93IGFsbCBjb250cm9scyB3aXRoaW4gdGhlIENvZGVjIGNvbnRyb2wgY2xhc3MgYXJlCitkZXNjcmliZWQuIEZpcnN0IHRoZSBnZW5lcmljIGNvbnRyb2xzLCB0aGVuIGNvbnRyb2xzIHNwZWNpZmljIGZvcgorY2VydGFpbiBoYXJkd2FyZS48L3BhcmE+CisKKyAgICAgIDxwYXJhPk5vdGU6IFRoZXNlIGNvbnRyb2xzIGFyZSBhcHBsaWNhYmxlIHRvIGFsbCBjb2RlY3MgYW5kCitub3QganVzdCBNUEVHLiBUaGUgZGVmaW5lcyBhcmUgcHJlZml4ZWQgd2l0aCBWNEwyX0NJRF9NUEVHL1Y0TDJfTVBFRworYXMgdGhlIGNvbnRyb2xzIHdlcmUgb3JpZ2luYWxseSBtYWRlIGZvciBNUEVHIGNvZGVjcyBhbmQgbGF0ZXIKK2V4dGVuZGVkIHRvIGNvdmVyIGFsbCBlbmNvZGluZyBmb3JtYXRzLjwvcGFyYT4KKworICAgICAgPHNlY3Rpb24+CisJPHRpdGxlPkdlbmVyaWMgQ29kZWMgQ29udHJvbHM8L3RpdGxlPgorCisJPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJtcGVnLWNvbnRyb2wtaWQiPgorCSAgPHRpdGxlPkNvZGVjIENvbnRyb2wgSURzPC90aXRsZT4KKwkgIDx0Z3JvdXAgY29scz0iNCI+CisJICAgIDxjb2xzcGVjIGNvbG5hbWU9ImMxIiBjb2x3aWR0aD0iMSoiIC8+CisJICAgIDxjb2xzcGVjIGNvbG5hbWU9ImMyIiBjb2x3aWR0aD0iNioiIC8+CisJICAgIDxjb2xzcGVjIGNvbG5hbWU9ImMzIiBjb2x3aWR0aD0iMioiIC8+CisJICAgIDxjb2xzcGVjIGNvbG5hbWU9ImM0IiBjb2x3aWR0aD0iNioiIC8+CisJICAgIDxzcGFuc3BlYyBuYW1lc3Q9ImMxIiBuYW1lZW5kPSJjMiIgc3Bhbm5hbWU9ImlkIiAvPgorCSAgICA8c3BhbnNwZWMgbmFtZXN0PSJjMiIgbmFtZWVuZD0iYzQiIHNwYW5uYW1lPSJkZXNjciIgLz4KKwkgICAgPHRoZWFkPgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiIGFsaWduPSJsZWZ0Ij5JRDwvZW50cnk+CisJCTxlbnRyeSBhbGlnbj0ibGVmdCI+VHlwZTwvZW50cnk+CisJICAgICAgPC9yb3c+PHJvdyByb3dzZXA9IjEiPjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgIDwvdGhlYWQ+CisJICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19DTEFTUzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmNsYXNzPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlRoZSBDb2RlYyBjbGFzcworZGVzY3JpcHRvci4gQ2FsbGluZyAmVklESU9DLVFVRVJZQ1RSTDsgZm9yIHRoaXMgY29udHJvbCB3aWxsIHJldHVybiBhCitkZXNjcmlwdGlvbiBvZiB0aGlzIGNvbnRyb2wgY2xhc3MuIFRoaXMgZGVzY3JpcHRpb24gY2FuIGJlIHVzZWQgYXMgdGhlCitjYXB0aW9uIG9mIGEgVGFiIHBhZ2UgaW4gYSBHVUksIGZvciBleGFtcGxlLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93IGlkPSJ2NGwyLW1wZWctc3RyZWFtLXR5cGUiPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19TVFJFQU1fVFlQRTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmVudW0mbmJzcDt2NGwyX21wZWdfc3RyZWFtX3R5cGU8L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGhlIE1QRUctMSwgLTIgb3IgLTQKK291dHB1dCBzdHJlYW0gdHlwZS4gT25lIGNhbm5vdCBhc3N1bWUgYW55dGhpbmcgaGVyZS4gRWFjaCBoYXJkd2FyZQorTVBFRyBlbmNvZGVyIHRlbmRzIHRvIHN1cHBvcnQgZGlmZmVyZW50IHN1YnNldHMgb2YgdGhlIGF2YWlsYWJsZSBNUEVHCitzdHJlYW0gdHlwZXMuIFRoaXMgY29udHJvbCBpcyBzcGVjaWZpYyB0byBtdWx0aXBsZXhlZCBNUEVHIHN0cmVhbXMuCitUaGUgY3VycmVudGx5IGRlZmluZWQgc3RyZWFtIHR5cGVzIGFyZTo8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19TVFJFQU1fVFlQRV9NUEVHMl9QUzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Pk1QRUctMiBwcm9ncmFtIHN0cmVhbTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1NUUkVBTV9UWVBFX01QRUcyX1RTPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+TVBFRy0yIHRyYW5zcG9ydCBzdHJlYW08L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19TVFJFQU1fVFlQRV9NUEVHMV9TUzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Pk1QRUctMSBzeXN0ZW0gc3RyZWFtPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfU1RSRUFNX1RZUEVfTVBFRzJfRFZEPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+TVBFRy0yIERWRC1jb21wYXRpYmxlIHN0cmVhbTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1NUUkVBTV9UWVBFX01QRUcxX1ZDRDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Pk1QRUctMSBWQ0QtY29tcGF0aWJsZSBzdHJlYW08L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19TVFJFQU1fVFlQRV9NUEVHMl9TVkNEPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+TVBFRy0yIFNWQ0QtY29tcGF0aWJsZSBzdHJlYW08L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC9lbnRyeXRibD4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1NUUkVBTV9QSURfUE1UPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgICAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5Qcm9ncmFtIE1hcCBUYWJsZQorUGFja2V0IElEIGZvciB0aGUgTVBFRyB0cmFuc3BvcnQgc3RyZWFtIChkZWZhdWx0IDE2KTwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19TVFJFQU1fUElEX0FVRElPPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgICAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5BdWRpbyBQYWNrZXQgSUQgZm9yCit0aGUgTVBFRyB0cmFuc3BvcnQgc3RyZWFtIChkZWZhdWx0IDI1Nik8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfU1RSRUFNX1BJRF9WSURFTzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VmlkZW8gUGFja2V0IElEIGZvcgordGhlIE1QRUcgdHJhbnNwb3J0IHN0cmVhbSAoZGVmYXVsdCAyNjApPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1NUUkVBTV9QSURfUENSPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgICAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5QYWNrZXQgSUQgZm9yIHRoZQorTVBFRyB0cmFuc3BvcnQgc3RyZWFtIGNhcnJ5aW5nIFBDUiBmaWVsZHMgKGRlZmF1bHQgMjU5KTwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19TVFJFQU1fUEVTX0lEX0FVRElPPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgICAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5BdWRpbyBJRCBmb3IgTVBFRworUEVTPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1NUUkVBTV9QRVNfSURfVklERU88L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlZpZGVvIElEIGZvciBNUEVHCitQRVM8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdyBpZD0idjRsMi1tcGVnLXN0cmVhbS12YmktZm10Ij4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfU1RSRUFNX1ZCSV9GTVQ8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5lbnVtJm5ic3A7djRsMl9tcGVnX3N0cmVhbV92YmlfZm10PC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlNvbWUgY2FyZHMgY2FuIGVtYmVkCitWQkkgZGF0YSAoJmVnOyBDbG9zZWQgQ2FwdGlvbiwgVGVsZXRleHQpIGludG8gdGhlIE1QRUcgc3RyZWFtLiBUaGlzCitjb250cm9sIHNlbGVjdHMgd2hldGhlciBWQkkgZGF0YSBzaG91bGQgYmUgZW1iZWRkZWQsIGFuZCBpZiBzbywgd2hhdAorZW1iZWRkaW5nIG1ldGhvZCBzaG91bGQgYmUgdXNlZC4gVGhlIGxpc3Qgb2YgcG9zc2libGUgVkJJIGZvcm1hdHMKK2RlcGVuZHMgb24gdGhlIGRyaXZlci4gVGhlIGN1cnJlbnRseSBkZWZpbmVkIFZCSSBmb3JtYXQgdHlwZXMKK2FyZTo8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19TVFJFQU1fVkJJX0ZNVF9OT05FPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Tm8gVkJJIGluIHRoZSBNUEVHIHN0cmVhbTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1NUUkVBTV9WQklfRk1UX0lWVFY8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5WQkkgaW4gcHJpdmF0ZSBwYWNrZXRzLCBJVlRWIGZvcm1hdCAoZG9jdW1lbnRlZAoraW4gdGhlIGtlcm5lbCBzb3VyY2VzIGluIHRoZSBmaWxlIDxmaWxlbmFtZT5Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2N4MjM0MXgvUkVBRE1FLnZiaTwvZmlsZW5hbWU+KTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L2VudHJ5dGJsPgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdyBpZD0idjRsMi1tcGVnLWF1ZGlvLXNhbXBsaW5nLWZyZXEiPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19BVURJT19TQU1QTElOR19GUkVRPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+ZW51bSZuYnNwO3Y0bDJfbXBlZ19hdWRpb19zYW1wbGluZ19mcmVxPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPk1QRUcgQXVkaW8gc2FtcGxpbmcKK2ZyZXF1ZW5jeS4gUG9zc2libGUgdmFsdWVzIGFyZTo8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19TQU1QTElOR19GUkVRXzQ0MTAwPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+NDQuMSBrSHo8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19TQU1QTElOR19GUkVRXzQ4MDAwPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+NDgga0h6PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fU0FNUExJTkdfRlJFUV8zMjAwMDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjMyIGtIejwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L2VudHJ5dGJsPgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdyBpZD0idjRsMi1tcGVnLWF1ZGlvLWVuY29kaW5nIj4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfQVVESU9fRU5DT0RJTkc8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5lbnVtJm5ic3A7djRsMl9tcGVnX2F1ZGlvX2VuY29kaW5nPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPk1QRUcgQXVkaW8gZW5jb2RpbmcuCitUaGlzIGNvbnRyb2wgaXMgc3BlY2lmaWMgdG8gbXVsdGlwbGV4ZWQgTVBFRyBzdHJlYW1zLgorUG9zc2libGUgdmFsdWVzIGFyZTo8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19FTkNPRElOR19MQVlFUl8xPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+TVBFRy0xLzIgTGF5ZXIgSSBlbmNvZGluZzwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0VOQ09ESU5HX0xBWUVSXzI8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5NUEVHLTEvMiBMYXllciBJSSBlbmNvZGluZzwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0VOQ09ESU5HX0xBWUVSXzM8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5NUEVHLTEvMiBMYXllciBJSUkgZW5jb2Rpbmc8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19FTkNPRElOR19BQUM8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5NUEVHLTIvNCBBQUMgKEFkdmFuY2VkIEF1ZGlvIENvZGluZyk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19FTkNPRElOR19BQzM8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5BQy0zIGFrYSBBVFNDIEEvNTIgZW5jb2Rpbmc8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC9lbnRyeXRibD4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3cgaWQ9InY0bDItbXBlZy1hdWRpby1sMS1iaXRyYXRlIj4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfQVVESU9fTDFfQklUUkFURTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmVudW0mbmJzcDt2NGwyX21wZWdfYXVkaW9fbDFfYml0cmF0ZTwvZW50cnk+CisJICAgICAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5NUEVHLTEvMiBMYXllciBJIGJpdHJhdGUuCitQb3NzaWJsZSB2YWx1ZXMgYXJlOjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0wxX0JJVFJBVEVfMzJLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MzIga2JpdC9zPC9lbnRyeT48L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0wxX0JJVFJBVEVfNjRLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+NjQga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fTDFfQklUUkFURV85Nks8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT45NiBrYml0L3M8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19MMV9CSVRSQVRFXzEyOEs8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT4xMjgga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fTDFfQklUUkFURV8xNjBLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MTYwIGtiaXQvczwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0wxX0JJVFJBVEVfMTkySzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjE5MiBrYml0L3M8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19MMV9CSVRSQVRFXzIyNEs8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT4yMjQga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fTDFfQklUUkFURV8yNTZLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MjU2IGtiaXQvczwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0wxX0JJVFJBVEVfMjg4SzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjI4OCBrYml0L3M8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19MMV9CSVRSQVRFXzMyMEs8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT4zMjAga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fTDFfQklUUkFURV8zNTJLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MzUyIGtiaXQvczwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0wxX0JJVFJBVEVfMzg0SzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjM4NCBrYml0L3M8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19MMV9CSVRSQVRFXzQxNks8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT40MTYga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fTDFfQklUUkFURV80NDhLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+NDQ4IGtiaXQvczwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L2VudHJ5dGJsPgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdyBpZD0idjRsMi1tcGVnLWF1ZGlvLWwyLWJpdHJhdGUiPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19BVURJT19MMl9CSVRSQVRFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+ZW51bSZuYnNwO3Y0bDJfbXBlZ19hdWRpb19sMl9iaXRyYXRlPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPk1QRUctMS8yIExheWVyIElJIGJpdHJhdGUuCitQb3NzaWJsZSB2YWx1ZXMgYXJlOjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0wyX0JJVFJBVEVfMzJLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MzIga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fTDJfQklUUkFURV80OEs8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT40OCBrYml0L3M8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19MMl9CSVRSQVRFXzU2SzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjU2IGtiaXQvczwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0wyX0JJVFJBVEVfNjRLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+NjQga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fTDJfQklUUkFURV84MEs8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT44MCBrYml0L3M8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19MMl9CSVRSQVRFXzk2SzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Pjk2IGtiaXQvczwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0wyX0JJVFJBVEVfMTEySzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjExMiBrYml0L3M8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19MMl9CSVRSQVRFXzEyOEs8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT4xMjgga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fTDJfQklUUkFURV8xNjBLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MTYwIGtiaXQvczwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0wyX0JJVFJBVEVfMTkySzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjE5MiBrYml0L3M8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19MMl9CSVRSQVRFXzIyNEs8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT4yMjQga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fTDJfQklUUkFURV8yNTZLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MjU2IGtiaXQvczwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0wyX0JJVFJBVEVfMzIwSzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjMyMCBrYml0L3M8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19MMl9CSVRSQVRFXzM4NEs8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT4zODQga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvZW50cnl0Ymw+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93IGlkPSJ2NGwyLW1wZWctYXVkaW8tbDMtYml0cmF0ZSI+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX0FVRElPX0wzX0JJVFJBVEU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5lbnVtJm5ic3A7djRsMl9tcGVnX2F1ZGlvX2wzX2JpdHJhdGU8L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+TVBFRy0xLzIgTGF5ZXIgSUlJIGJpdHJhdGUuCitQb3NzaWJsZSB2YWx1ZXMgYXJlOjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0wzX0JJVFJBVEVfMzJLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MzIga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fTDNfQklUUkFURV80MEs8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT40MCBrYml0L3M8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19MM19CSVRSQVRFXzQ4SzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjQ4IGtiaXQvczwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0wzX0JJVFJBVEVfNTZLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+NTYga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fTDNfQklUUkFURV82NEs8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT42NCBrYml0L3M8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19MM19CSVRSQVRFXzgwSzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjgwIGtiaXQvczwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0wzX0JJVFJBVEVfOTZLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+OTYga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fTDNfQklUUkFURV8xMTJLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MTEyIGtiaXQvczwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0wzX0JJVFJBVEVfMTI4SzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjEyOCBrYml0L3M8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19MM19CSVRSQVRFXzE2MEs8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT4xNjAga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fTDNfQklUUkFURV8xOTJLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MTkyIGtiaXQvczwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0wzX0JJVFJBVEVfMjI0SzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjIyNCBrYml0L3M8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19MM19CSVRSQVRFXzI1Nks8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT4yNTYga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fTDNfQklUUkFURV8zMjBLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MzIwIGtiaXQvczwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L2VudHJ5dGJsPgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfQVVESU9fQUFDX0JJVFJBVEU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkFBQyBiaXRyYXRlIGluIGJpdHMgcGVyIHNlY29uZC48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdyBpZD0idjRsMi1tcGVnLWF1ZGlvLWFjMy1iaXRyYXRlIj4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfQVVESU9fQUMzX0JJVFJBVEU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5lbnVtJm5ic3A7djRsMl9tcGVnX2F1ZGlvX2FjM19iaXRyYXRlPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkFDLTMgYml0cmF0ZS4KK1Bvc3NpYmxlIHZhbHVlcyBhcmU6PC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnl0Ymwgc3Bhbm5hbWU9ImRlc2NyIiBjb2xzPSIyIj4KKwkJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fQUMzX0JJVFJBVEVfMzJLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MzIga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fQUMzX0JJVFJBVEVfNDBLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+NDAga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fQUMzX0JJVFJBVEVfNDhLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+NDgga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fQUMzX0JJVFJBVEVfNTZLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+NTYga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fQUMzX0JJVFJBVEVfNjRLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+NjQga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fQUMzX0JJVFJBVEVfODBLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+ODAga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fQUMzX0JJVFJBVEVfOTZLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+OTYga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fQUMzX0JJVFJBVEVfMTEySzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjExMiBrYml0L3M8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19BQzNfQklUUkFURV8xMjhLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MTI4IGtiaXQvczwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0FDM19CSVRSQVRFXzE2MEs8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT4xNjAga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fQUMzX0JJVFJBVEVfMTkySzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjE5MiBrYml0L3M8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19BQzNfQklUUkFURV8yMjRLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MjI0IGtiaXQvczwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0FDM19CSVRSQVRFXzI1Nks8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT4yNTYga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fQUMzX0JJVFJBVEVfMzIwSzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjMyMCBrYml0L3M8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19BQzNfQklUUkFURV8zODRLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Mzg0IGtiaXQvczwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0FDM19CSVRSQVRFXzQ0OEs8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT40NDgga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fQUMzX0JJVFJBVEVfNTEySzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjUxMiBrYml0L3M8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19BQzNfQklUUkFURV81NzZLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+NTc2IGtiaXQvczwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0FDM19CSVRSQVRFXzY0MEs8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT42NDAga2JpdC9zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvZW50cnl0Ymw+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93IGlkPSJ2NGwyLW1wZWctYXVkaW8tbW9kZSI+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX0FVRElPX01PREU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5lbnVtJm5ic3A7djRsMl9tcGVnX2F1ZGlvX21vZGU8L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+TVBFRyBBdWRpbyBtb2RlLgorUG9zc2libGUgdmFsdWVzIGFyZTo8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19NT0RFX1NURVJFTzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlN0ZXJlbzwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX01PREVfSk9JTlRfU1RFUkVPPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Sm9pbnQgU3RlcmVvPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fTU9ERV9EVUFMPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+QmlsaW5ndWFsPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fTU9ERV9NT05PPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+TW9ubzwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L2VudHJ5dGJsPgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdyBpZD0idjRsMi1tcGVnLWF1ZGlvLW1vZGUtZXh0ZW5zaW9uIj4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfQVVESU9fTU9ERV9FWFRFTlNJT048L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5lbnVtJm5ic3A7djRsMl9tcGVnX2F1ZGlvX21vZGVfZXh0ZW5zaW9uPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkpvaW50IFN0ZXJlbworYXVkaW8gbW9kZSBleHRlbnNpb24uIEluIExheWVyIEkgYW5kIElJIHRoZXkgaW5kaWNhdGUgd2hpY2ggc3ViYmFuZHMKK2FyZSBpbiBpbnRlbnNpdHkgc3RlcmVvLiBBbGwgb3RoZXIgc3ViYmFuZHMgYXJlIGNvZGVkIGluIHN0ZXJlby4gTGF5ZXIKK0lJSSBpcyBub3QgKHlldCkgc3VwcG9ydGVkLiBQb3NzaWJsZSB2YWx1ZXMKK2FyZTo8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19NT0RFX0VYVEVOU0lPTl9CT1VORF80PC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+U3ViYmFuZHMgNC0zMSBpbiBpbnRlbnNpdHkgc3RlcmVvPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fTU9ERV9FWFRFTlNJT05fQk9VTkRfODwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlN1YmJhbmRzIDgtMzEgaW4gaW50ZW5zaXR5IHN0ZXJlbzwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX01PREVfRVhURU5TSU9OX0JPVU5EXzEyPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+U3ViYmFuZHMgMTItMzEgaW4gaW50ZW5zaXR5IHN0ZXJlbzwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX01PREVfRVhURU5TSU9OX0JPVU5EXzE2PC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+U3ViYmFuZHMgMTYtMzEgaW4gaW50ZW5zaXR5IHN0ZXJlbzwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L2VudHJ5dGJsPgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdyBpZD0idjRsMi1tcGVnLWF1ZGlvLWVtcGhhc2lzIj4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfQVVESU9fRU1QSEFTSVM8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5lbnVtJm5ic3A7djRsMl9tcGVnX2F1ZGlvX2VtcGhhc2lzPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkF1ZGlvIEVtcGhhc2lzLgorUG9zc2libGUgdmFsdWVzIGFyZTo8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19FTVBIQVNJU19OT05FPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Tm9uZTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0VNUEhBU0lTXzUwX0RJVl8xNV91UzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjUwLzE1IG1pY3Jvc2Vjb25kIGVtcGhhc2lzPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fRU1QSEFTSVNfQ0NJVFRfSjE3PC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q0NJVFQgSi4xNzwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L2VudHJ5dGJsPgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdyBpZD0idjRsMi1tcGVnLWF1ZGlvLWNyYyI+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX0FVRElPX0NSQzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmVudW0mbmJzcDt2NGwyX21wZWdfYXVkaW9fY3JjPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkNSQyBtZXRob2QuIFBvc3NpYmxlCit2YWx1ZXMgYXJlOjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0NSQ19OT05FPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Tm9uZTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0NSQ19DUkMxNjwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjE2IGJpdCBwYXJpdHkgY2hlY2s8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC9lbnRyeXRibD4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX0FVRElPX01VVEU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPk11dGVzIHRoZSBhdWRpbyB3aGVuCitjYXB0dXJpbmcuIFRoaXMgaXMgbm90IGRvbmUgYnkgbXV0aW5nIGF1ZGlvIGhhcmR3YXJlLCB3aGljaCBjYW4gc3RpbGwKK3Byb2R1Y2UgYSBzbGlnaHQgaGlzcywgYnV0IGluIHRoZSBlbmNvZGVyIGl0c2VsZiwgZ3VhcmFudGVlaW5nIGEgZml4ZWQKK2FuZCByZXByb2R1Y2libGUgYXVkaW8gYml0c3RyZWFtLiAwID0gdW5tdXRlZCwgMSA9IG11dGVkLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93IGlkPSJ2NGwyLW1wZWctYXVkaW8tZGVjLXBsYXliYWNrIj4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfQVVESU9fREVDX1BMQVlCQUNLPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+ZW51bSZuYnNwO3Y0bDJfbXBlZ19hdWRpb19kZWNfcGxheWJhY2s8L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+RGV0ZXJtaW5lcyBob3cgbW9ub2xpbmd1YWwgYXVkaW8gc2hvdWxkIGJlIHBsYXllZCBiYWNrLgorUG9zc2libGUgdmFsdWVzIGFyZTo8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19ERUNfUExBWUJBQ0tfQVVUTzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lcyB0aGUgYmVzdCBwbGF5YmFjayBtb2RlLjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0FVRElPX0RFQ19QTEFZQkFDS19TVEVSRU88L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5TdGVyZW8gcGxheWJhY2suPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fREVDX1BMQVlCQUNLX0xFRlQ8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5MZWZ0IGNoYW5uZWwgcGxheWJhY2suPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fREVDX1BMQVlCQUNLX1JJR0hUPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+UmlnaHQgY2hhbm5lbCBwbGF5YmFjay48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19BVURJT19ERUNfUExBWUJBQ0tfTU9OTzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Pk1vbm8gcGxheWJhY2suPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQVVESU9fREVDX1BMQVlCQUNLX1NXQVBQRURfU1RFUkVPPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+U3RlcmVvIHBsYXliYWNrIHdpdGggc3dhcHBlZCBsZWZ0IGFuZCByaWdodCBjaGFubmVscy48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC9lbnRyeXRibD4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3cgaWQ9InY0bDItbXBlZy1hdWRpby1kZWMtbXVsdGlsaW5ndWFsLXBsYXliYWNrIj4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfQVVESU9fREVDX01VTFRJTElOR1VBTF9QTEFZQkFDSzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmVudW0mbmJzcDt2NGwyX21wZWdfYXVkaW9fZGVjX3BsYXliYWNrPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkRldGVybWluZXMgaG93IG11bHRpbGluZ3VhbCBhdWRpbyBzaG91bGQgYmUgcGxheWVkIGJhY2suPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3cgaWQ9InY0bDItbXBlZy12aWRlby1lbmNvZGluZyI+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX0VOQ09ESU5HPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+ZW51bSZuYnNwO3Y0bDJfbXBlZ192aWRlb19lbmNvZGluZzwvZW50cnk+CisJICAgICAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5NUEVHIFZpZGVvIGVuY29kaW5nCittZXRob2QuIFRoaXMgY29udHJvbCBpcyBzcGVjaWZpYyB0byBtdWx0aXBsZXhlZCBNUEVHIHN0cmVhbXMuCitQb3NzaWJsZSB2YWx1ZXMgYXJlOjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0VOQ09ESU5HX01QRUdfMTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Pk1QRUctMSBWaWRlbyBlbmNvZGluZzwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0VOQ09ESU5HX01QRUdfMjwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Pk1QRUctMiBWaWRlbyBlbmNvZGluZzwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0VOQ09ESU5HX01QRUdfNF9BVkM8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5NUEVHLTQgQVZDIChILjI2NCkgVmlkZW8gZW5jb2Rpbmc8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC9lbnRyeXRibD4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3cgaWQ9InY0bDItbXBlZy12aWRlby1hc3BlY3QiPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19BU1BFQ1Q8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5lbnVtJm5ic3A7djRsMl9tcGVnX3ZpZGVvX2FzcGVjdDwvZW50cnk+CisJICAgICAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5WaWRlbyBhc3BlY3QuCitQb3NzaWJsZSB2YWx1ZXMgYXJlOjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0FTUEVDVF8xeDE8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0FTUEVDVF80eDM8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0FTUEVDVF8xNng5PC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19BU1BFQ1RfMjIxeDEwMDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvZW50cnl0Ymw+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19CX0ZSQU1FUzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+TnVtYmVyIG9mIEItRnJhbWVzCisoZGVmYXVsdCAyKTwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19HT1BfU0laRTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+R09QIHNpemUgKGRlZmF1bHQKKzEyKTwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19HT1BfQ0xPU1VSRTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmJvb2xlYW48L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+R09QIGNsb3N1cmUgKGRlZmF1bHQKKzEpPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX1BVTExET1dOPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+Ym9vbGVhbjwvZW50cnk+CisJICAgICAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5FbmFibGUgMzoyIHB1bGxkb3duCisoZGVmYXVsdCAwKTwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93IGlkPSJ2NGwyLW1wZWctdmlkZW8tYml0cmF0ZS1tb2RlIj4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fQklUUkFURV9NT0RFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+ZW51bSZuYnNwO3Y0bDJfbXBlZ192aWRlb19iaXRyYXRlX21vZGU8L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VmlkZW8gYml0cmF0ZSBtb2RlLgorUG9zc2libGUgdmFsdWVzIGFyZTo8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19CSVRSQVRFX01PREVfVkJSPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+VmFyaWFibGUgYml0cmF0ZTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0JJVFJBVEVfTU9ERV9DQlI8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5Db25zdGFudCBiaXRyYXRlPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvZW50cnl0Ymw+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19CSVRSQVRFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgICAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5WaWRlbyBiaXRyYXRlIGluIGJpdHMKK3BlciBzZWNvbmQuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX0JJVFJBVEVfUEVBSzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+UGVhayB2aWRlbyBiaXRyYXRlIGluCitiaXRzIHBlciBzZWNvbmQuIE11c3QgYmUgbGFyZ2VyIG9yIGVxdWFsIHRvIHRoZSBhdmVyYWdlIHZpZGVvIGJpdHJhdGUuCitJdCBpcyBpZ25vcmVkIGlmIHRoZSB2aWRlbyBiaXRyYXRlIG1vZGUgaXMgc2V0IHRvIGNvbnN0YW50CitiaXRyYXRlLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19URU1QT1JBTF9ERUNJTUFUSU9OPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgICAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5Gb3IgZXZlcnkgY2FwdHVyZWQKK2ZyYW1lLCBza2lwIHRoaXMgbWFueSBzdWJzZXF1ZW50IGZyYW1lcyAoZGVmYXVsdCAwKS48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fTVVURTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmJvb2xlYW48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+Ik11dGVzIiB0aGUgdmlkZW8gdG8gYQorZml4ZWQgY29sb3Igd2hlbiBjYXB0dXJpbmcuIFRoaXMgaXMgdXNlZnVsIGZvciB0ZXN0aW5nLCB0byBwcm9kdWNlIGEKK2ZpeGVkIHZpZGVvIGJpdHN0cmVhbS4gMCA9IHVubXV0ZWQsIDEgPSBtdXRlZC48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fTVVURV9ZVVY8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlNldHMgdGhlICJtdXRlIiBjb2xvcgorb2YgdGhlIHZpZGVvLiBUaGUgc3VwcGxpZWQgMzItYml0IGludGVnZXIgaXMgaW50ZXJwcmV0ZWQgYXMgZm9sbG93cyAoYml0CiswID0gbGVhc3Qgc2lnbmlmaWNhbnQgYml0KTo8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+Qml0IDA6NzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5WIGNocm9taW5hbmNlIGluZm9ybWF0aW9uPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PkJpdCA4OjE1PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlUgY2hyb21pbmFuY2UgaW5mb3JtYXRpb248L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+Qml0IDE2OjIzPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlkgbHVtaW5hbmNlIGluZm9ybWF0aW9uPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PkJpdCAyNDozMTwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5NdXN0IGJlIHplcm8uPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvZW50cnl0Ymw+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93IGlkPSJ2NGwyLW1wZWctdmlkZW8tZGVjLXB0cyI+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX0RFQ19QVFM8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyNjQ8L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGhpcyByZWFkLW9ubHkgY29udHJvbCByZXR1cm5zIHRoZQorMzMtYml0IHZpZGVvIFByZXNlbnRhdGlvbiBUaW1lIFN0YW1wIGFzIGRlZmluZWQgaW4gSVRVIFQtUkVDLUguMjIyLjAgYW5kIElTTy9JRUMgMTM4MTgtMSBvZgordGhlIGN1cnJlbnRseSBkaXNwbGF5ZWQgZnJhbWUuIFRoaXMgaXMgdGhlIHNhbWUgUFRTIGFzIGlzIHVzZWQgaW4gJlZJRElPQy1ERUNPREVSLUNNRDsuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3cgaWQ9InY0bDItbXBlZy12aWRlby1kZWMtZnJhbWUiPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19ERUNfRlJBTUU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyNjQ8L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGhpcyByZWFkLW9ubHkgY29udHJvbCByZXR1cm5zIHRoZQorZnJhbWUgY291bnRlciBvZiB0aGUgZnJhbWUgdGhhdCBpcyBjdXJyZW50bHkgZGlzcGxheWVkIChkZWNvZGVkKS4gVGhpcyB2YWx1ZSBpcyByZXNldCB0byAwIHdoZW5ldmVyCit0aGUgZGVjb2RlciBpcyBzdGFydGVkLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisKKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX0RFQ09ERVJfU0xJQ0VfSU5URVJGQUNFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+Ym9vbGVhbjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5JZiBlbmFibGVkIHRoZSBkZWNvZGVyIGV4cGVjdHMgdG8gcmVjZWl2ZSBhIHNpbmdsZSBzbGljZSBwZXIgYnVmZmVyLCBvdGhlcndpc2UKK3RoZSBkZWNvZGVyIGV4cGVjdHMgYSBzaW5nbGUgZnJhbWUgaW4gcGVyIGJ1ZmZlci4gQXBwbGljYWJsZSB0byB0aGUgZGVjb2RlciwgYWxsIGNvZGVjcy4KKzwvZW50cnk+CisJICAgICAgPC9yb3c+CisKKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX0gyNjRfVlVJX1NBUl9FTkFCTEU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkVuYWJsZSB3cml0aW5nIHNhbXBsZSBhc3BlY3QgcmF0aW8gaW4gdGhlIFZpZGVvIFVzYWJpbGl0eSBJbmZvcm1hdGlvbi4KK0FwcGxpY2FibGUgdG8gdGhlIEgyNjQgZW5jb2Rlci48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93IGlkPSJ2NGwyLW1wZWctdmlkZW8taDI2NC12dWktc2FyLWlkYyI+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX0gyNjRfVlVJX1NBUl9JREM8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5lbnVtJm5ic3A7djRsMl9tcGVnX3ZpZGVvX2gyNjRfdnVpX3Nhcl9pZGM8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VlVJIHNhbXBsZSBhc3BlY3QgcmF0aW8gaW5kaWNhdG9yIGZvciBILjI2NCBlbmNvZGluZy4gVGhlIHZhbHVlCitpcyBkZWZpbmVkIGluIHRoZSB0YWJsZSBFLTEgaW4gdGhlIHN0YW5kYXJkLiBBcHBsaWNhYmxlIHRvIHRoZSBIMjY0IGVuY29kZXIuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnl0Ymwgc3Bhbm5hbWU9ImRlc2NyIiBjb2xzPSIyIj4KKwkJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCisJCQk8cm93PgorCQkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X1ZVSV9TQVJfSURDX1VOU1BFQ0lGSUVEPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkJICA8ZW50cnk+VW5zcGVjaWZpZWQ8L2VudHJ5PgorCQkJPC9yb3c+CisJCQk8cm93PgorCQkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X1ZVSV9TQVJfSURDXzF4MTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJCSAgPGVudHJ5PjF4MTwvZW50cnk+CisJCQk8L3Jvdz4KKwkJCTxyb3c+CisJCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfVlVJX1NBUl9JRENfMTJ4MTE8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCQkgIDxlbnRyeT4xMngxMTwvZW50cnk+CisJCQk8L3Jvdz4KKwkJCTxyb3c+CisJCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfVlVJX1NBUl9JRENfMTB4MTE8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCQkgIDxlbnRyeT4xMHgxMTwvZW50cnk+CisJCQk8L3Jvdz4KKwkJCTxyb3c+CisJCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfVlVJX1NBUl9JRENfMTZ4MTE8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCQkgIDxlbnRyeT4xNngxMTwvZW50cnk+CisJCQk8L3Jvdz4KKwkJCTxyb3c+CisJCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfVlVJX1NBUl9JRENfNDB4MzM8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCQkgIDxlbnRyeT40MHgzMzwvZW50cnk+CisJCQk8L3Jvdz4KKwkJCTxyb3c+CisJCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfVlVJX1NBUl9JRENfMjR4MTE8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCQkgIDxlbnRyeT4yNHgxMTwvZW50cnk+CisJCQk8L3Jvdz4KKwkJCTxyb3c+CisJCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfVlVJX1NBUl9JRENfMjB4MTE8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCQkgIDxlbnRyeT4yMHgxMTwvZW50cnk+CisJCQk8L3Jvdz4KKwkJCTxyb3c+CisJCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfVlVJX1NBUl9JRENfMzJ4MTE8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCQkgIDxlbnRyeT4zMngxMTwvZW50cnk+CisJCQk8L3Jvdz4KKwkJCTxyb3c+CisJCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfVlVJX1NBUl9JRENfODB4MzM8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCQkgIDxlbnRyeT44MHgzMzwvZW50cnk+CisJCQk8L3Jvdz4KKwkJCTxyb3c+CisJCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfVlVJX1NBUl9JRENfMTh4MTE8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCQkgIDxlbnRyeT4xOHgxMTwvZW50cnk+CisJCQk8L3Jvdz4KKwkJCTxyb3c+CisJCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfVlVJX1NBUl9JRENfMTV4MTE8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCQkgIDxlbnRyeT4xNXgxMTwvZW50cnk+CisJCQk8L3Jvdz4KKwkJCTxyb3c+CisJCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfVlVJX1NBUl9JRENfNjR4MzM8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCQkgIDxlbnRyeT42NHgzMzwvZW50cnk+CisJCQk8L3Jvdz4KKwkJCTxyb3c+CisJCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfVlVJX1NBUl9JRENfMTYweDk5PC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkJICA8ZW50cnk+MTYweDk5PC9lbnRyeT4KKwkJCTwvcm93PgorCQkJPHJvdz4KKwkJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fSDI2NF9WVUlfU0FSX0lEQ180eDM8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCQkgIDxlbnRyeT40eDM8L2VudHJ5PgorCQkJPC9yb3c+CisJCQk8cm93PgorCQkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X1ZVSV9TQVJfSURDXzN4MjwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJCSAgPGVudHJ5PjN4MjwvZW50cnk+CisJCQk8L3Jvdz4KKwkJCTxyb3c+CisJCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfVlVJX1NBUl9JRENfMngxPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkJICA8ZW50cnk+MngxPC9lbnRyeT4KKwkJCTwvcm93PgorCQkJPHJvdz4KKwkJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fSDI2NF9WVUlfU0FSX0lEQ19FWFRFTkRFRDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJCSAgPGVudHJ5PkV4dGVuZGVkIFNBUjwvZW50cnk+CisJCQk8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L2VudHJ5dGJsPgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19IMjY0X1ZVSV9FWFRfU0FSX1dJRFRIPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5FeHRlbmRlZCBzYW1wbGUgYXNwZWN0IHJhdGlvIHdpZHRoIGZvciBILjI2NCBWVUkgZW5jb2RpbmcuCitBcHBsaWNhYmxlIHRvIHRoZSBIMjY0IGVuY29kZXIuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fSDI2NF9WVUlfRVhUX1NBUl9IRUlHSFQ8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkV4dGVuZGVkIHNhbXBsZSBhc3BlY3QgcmF0aW8gaGVpZ2h0IGZvciBILjI2NCBWVUkgZW5jb2RpbmcuCitBcHBsaWNhYmxlIHRvIHRoZSBIMjY0IGVuY29kZXIuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdyBpZD0idjRsMi1tcGVnLXZpZGVvLWgyNjQtbGV2ZWwiPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19IMjY0X0xFVkVMPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+ZW51bSZuYnNwO3Y0bDJfbXBlZ192aWRlb19oMjY0X2xldmVsPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlRoZSBsZXZlbCBpbmZvcm1hdGlvbiBmb3IgdGhlIEgyNjQgdmlkZW8gZWxlbWVudGFyeSBzdHJlYW0uCitBcHBsaWNhYmxlIHRvIHRoZSBIMjY0IGVuY29kZXIuCitQb3NzaWJsZSB2YWx1ZXMgYXJlOjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfTEVWRUxfMV8wPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+TGV2ZWwgMS4wPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fSDI2NF9MRVZFTF8xQjwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkxldmVsIDFCPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fSDI2NF9MRVZFTF8xXzE8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5MZXZlbCAxLjE8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X0xFVkVMXzFfMjwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkxldmVsIDEuMjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfTEVWRUxfMV8zPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+TGV2ZWwgMS4zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fSDI2NF9MRVZFTF8yXzA8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5MZXZlbCAyLjA8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X0xFVkVMXzJfMTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkxldmVsIDIuMTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfTEVWRUxfMl8yPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+TGV2ZWwgMi4yPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fSDI2NF9MRVZFTF8zXzA8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5MZXZlbCAzLjA8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X0xFVkVMXzNfMTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkxldmVsIDMuMTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfTEVWRUxfM18yPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+TGV2ZWwgMy4yPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fSDI2NF9MRVZFTF80XzA8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5MZXZlbCA0LjA8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X0xFVkVMXzRfMTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkxldmVsIDQuMTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfTEVWRUxfNF8yPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+TGV2ZWwgNC4yPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fSDI2NF9MRVZFTF81XzA8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5MZXZlbCA1LjA8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X0xFVkVMXzVfMTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkxldmVsIDUuMTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L2VudHJ5dGJsPgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93IGlkPSJ2NGwyLW1wZWctdmlkZW8tbXBlZzQtbGV2ZWwiPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19NUEVHNF9MRVZFTDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmVudW0mbmJzcDt2NGwyX21wZWdfdmlkZW9fbXBlZzRfbGV2ZWw8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGhlIGxldmVsIGluZm9ybWF0aW9uIGZvciB0aGUgTVBFRzQgZWxlbWVudGFyeSBzdHJlYW0uCitBcHBsaWNhYmxlIHRvIHRoZSBNUEVHNCBlbmNvZGVyLgorUG9zc2libGUgdmFsdWVzIGFyZTo8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19MRVZFTF8wPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+TGV2ZWwgMDwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0xFVkVMXzBCPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+TGV2ZWwgMGI8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19MRVZFTF8xPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+TGV2ZWwgMTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0xFVkVMXzI8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5MZXZlbCAyPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fTEVWRUxfMzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkxldmVsIDM8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19MRVZFTF8zQjwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkxldmVsIDNiPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fTEVWRUxfNDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkxldmVsIDQ8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19MRVZFTF81PC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+TGV2ZWwgNTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L2VudHJ5dGJsPgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93IGlkPSJ2NGwyLW1wZWctdmlkZW8taDI2NC1wcm9maWxlIj4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fSDI2NF9QUk9GSUxFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+ZW51bSZuYnNwO3Y0bDJfbXBlZ192aWRlb19oMjY0X3Byb2ZpbGU8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGhlIHByb2ZpbGUgaW5mb3JtYXRpb24gZm9yIEgyNjQuCitBcHBsaWNhYmxlIHRvIHRoZSBIMjY0IGVuY29kZXIuCitQb3NzaWJsZSB2YWx1ZXMgYXJlOjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfUFJPRklMRV9CQVNFTElORTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkJhc2VsaW5lIHByb2ZpbGU8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X1BST0ZJTEVfQ09OU1RSQUlORURfQkFTRUxJTkU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5Db25zdHJhaW5lZCBCYXNlbGluZSBwcm9maWxlPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fSDI2NF9QUk9GSUxFX01BSU48L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5NYWluIHByb2ZpbGU8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X1BST0ZJTEVfRVhURU5ERUQ8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5FeHRlbmRlZCBwcm9maWxlPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fSDI2NF9QUk9GSUxFX0hJR0g8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5IaWdoIHByb2ZpbGU8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X1BST0ZJTEVfSElHSF8xMDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkhpZ2ggMTAgcHJvZmlsZTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfUFJPRklMRV9ISUdIXzQyMjwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkhpZ2ggNDIyIHByb2ZpbGU8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X1BST0ZJTEVfSElHSF80NDRfUFJFRElDVElWRTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkhpZ2ggNDQ0IFByZWRpY3RpdmUgcHJvZmlsZTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfUFJPRklMRV9ISUdIXzEwX0lOVFJBPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+SGlnaCAxMCBJbnRyYSBwcm9maWxlPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fSDI2NF9QUk9GSUxFX0hJR0hfNDIyX0lOVFJBPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+SGlnaCA0MjIgSW50cmEgcHJvZmlsZTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfUFJPRklMRV9ISUdIXzQ0NF9JTlRSQTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkhpZ2ggNDQ0IEludHJhIHByb2ZpbGU8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X1BST0ZJTEVfQ0FWTENfNDQ0X0lOVFJBPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q0FWTEMgNDQ0IEludHJhIHByb2ZpbGU8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X1BST0ZJTEVfU0NBTEFCTEVfQkFTRUxJTkU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5TY2FsYWJsZSBCYXNlbGluZSBwcm9maWxlPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fSDI2NF9QUk9GSUxFX1NDQUxBQkxFX0hJR0g8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5TY2FsYWJsZSBIaWdoIHByb2ZpbGU8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X1BST0ZJTEVfU0NBTEFCTEVfSElHSF9JTlRSQTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlNjYWxhYmxlIEhpZ2ggSW50cmEgcHJvZmlsZTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfUFJPRklMRV9TVEVSRU9fSElHSDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlN0ZXJlbyBIaWdoIHByb2ZpbGU8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X1BST0ZJTEVfTVVMVElWSUVXX0hJR0g8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5NdWx0aXZpZXcgSGlnaCBwcm9maWxlPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCisJCSAgPC90Ym9keT4KKwkJPC9lbnRyeXRibD4KKwkgICAgICA8L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdyBpZD0idjRsMi1tcGVnLXZpZGVvLW1wZWc0LXByb2ZpbGUiPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19NUEVHNF9QUk9GSUxFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+ZW51bSZuYnNwO3Y0bDJfbXBlZ192aWRlb19tcGVnNF9wcm9maWxlPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlRoZSBwcm9maWxlIGluZm9ybWF0aW9uIGZvciBNUEVHNC4KK0FwcGxpY2FibGUgdG8gdGhlIE1QRUc0IGVuY29kZXIuCitQb3NzaWJsZSB2YWx1ZXMgYXJlOjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX1BST0ZJTEVfU0lNUExFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+U2ltcGxlIHByb2ZpbGU8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19QUk9GSUxFX0FEVkFOQ0VEX1NJTVBMRTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkFkdmFuY2VkIFNpbXBsZSBwcm9maWxlPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fUFJPRklMRV9DT1JFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q29yZSBwcm9maWxlPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fUFJPRklMRV9TSU1QTEVfU0NBTEFCTEU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5TaW1wbGUgU2NhbGFibGUgcHJvZmlsZTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX1BST0ZJTEVfQURWQU5DRURfQ09ESU5HX0VGRklDSUVOQ1k8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC9lbnRyeXRibD4KKwkgICAgICA8L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fTUFYX1JFRl9QSUM8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlRoZSBtYXhpbXVtIG51bWJlciBvZiByZWZlcmVuY2UgcGljdHVyZXMgdXNlZCBmb3IgZW5jb2RpbmcuCitBcHBsaWNhYmxlIHRvIHRoZSBlbmNvZGVyLgorPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdyBpZD0idjRsMi1tcGVnLXZpZGVvLW11bHRpLXNsaWNlLW1vZGUiPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19NVUxUSV9TTElDRV9NT0RFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+ZW51bSZuYnNwO3Y0bDJfbXBlZ192aWRlb19tdWx0aV9zbGljZV9tb2RlPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkRldGVybWluZXMgaG93IHRoZSBlbmNvZGVyIHNob3VsZCBoYW5kbGUgZGl2aXNpb24gb2YgZnJhbWUgaW50byBzbGljZXMuCitBcHBsaWNhYmxlIHRvIHRoZSBlbmNvZGVyLgorUG9zc2libGUgdmFsdWVzIGFyZTo8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19NVUxUSV9TTElDRV9NT0RFX1NJTkdMRTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlNpbmdsZSBzbGljZSBwZXIgZnJhbWUuPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fTVVMVElfU0xJQ0VfTU9ERV9NQVhfTUI8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5NdWx0aXBsZSBzbGljZXMgd2l0aCBzZXQgbWF4aW11bSBudW1iZXIgb2YgbWFjcm9ibG9ja3MgcGVyIHNsaWNlLjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX01VTFRJX1NMSUNFX01PREVfTUFYX0JZVEVTPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+TXVsdGlwbGUgc2xpY2Ugd2l0aCBzZXQgbWF4aW11bSBzaXplIGluIGJ5dGVzIHBlciBzbGljZS48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC9lbnRyeXRibD4KKwkgICAgICA8L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fTVVMVElfU0xJQ0VfTUFYX01CPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5UaGUgbWF4aW11bSBudW1iZXIgb2YgbWFjcm9ibG9ja3MgaW4gYSBzbGljZS4gVXNlZCB3aGVuCis8Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19NVUxUSV9TTElDRV9NT0RFPC9jb25zdGFudD4gaXMgc2V0IHRvIDxjb25zdGFudD5WNEwyX01QRUdfVklERU9fTVVMVElfU0xJQ0VfTU9ERV9NQVhfTUI8L2NvbnN0YW50Pi4KK0FwcGxpY2FibGUgdG8gdGhlIGVuY29kZXIuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fTVVMVElfU0xJQ0VfTUFYX0JZVEVTPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5UaGUgbWF4aW11bSBzaXplIG9mIGEgc2xpY2UgaW4gYnl0ZXMuIFVzZWQgd2hlbgorPGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fTVVMVElfU0xJQ0VfTU9ERTwvY29uc3RhbnQ+IGlzIHNldCB0byA8Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX01VTFRJX1NMSUNFX01PREVfTUFYX0JZVEVTPC9jb25zdGFudD4uCitBcHBsaWNhYmxlIHRvIHRoZSBlbmNvZGVyLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisKKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3cgaWQ9InY0bDItbXBlZy12aWRlby1oMjY0LWxvb3AtZmlsdGVyLW1vZGUiPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19IMjY0X0xPT1BfRklMVEVSX01PREU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5lbnVtJm5ic3A7djRsMl9tcGVnX3ZpZGVvX2gyNjRfbG9vcF9maWx0ZXJfbW9kZTwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5Mb29wIGZpbHRlciBtb2RlIGZvciBIMjY0IGVuY29kZXIuCitQb3NzaWJsZSB2YWx1ZXMgYXJlOjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfTE9PUF9GSUxURVJfTU9ERV9FTkFCTEVEPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+TG9vcCBmaWx0ZXIgaXMgZW5hYmxlZC48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X0xPT1BfRklMVEVSX01PREVfRElTQUJMRUQ8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5Mb29wIGZpbHRlciBpcyBkaXNhYmxlZC48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X0xPT1BfRklMVEVSX01PREVfRElTQUJMRURfQVRfU0xJQ0VfQk9VTkRBUlk8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5Mb29wIGZpbHRlciBpcyBkaXNhYmxlZCBhdCB0aGUgc2xpY2UgYm91bmRhcnkuPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvZW50cnl0Ymw+CisJICAgICAgPC9yb3c+CisKKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX0gyNjRfTE9PUF9GSUxURVJfQUxQSEE8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkxvb3AgZmlsdGVyIGFscGhhIGNvZWZmaWNpZW50LCBkZWZpbmVkIGluIHRoZSBIMjY0IHN0YW5kYXJkLgorQXBwbGljYWJsZSB0byB0aGUgSDI2NCBlbmNvZGVyLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisKKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX0gyNjRfTE9PUF9GSUxURVJfQkVUQTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+TG9vcCBmaWx0ZXIgYmV0YSBjb2VmZmljaWVudCwgZGVmaW5lZCBpbiB0aGUgSDI2NCBzdGFuZGFyZC4KK0FwcGxpY2FibGUgdG8gdGhlIEgyNjQgZW5jb2Rlci48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93IGlkPSJ2NGwyLW1wZWctdmlkZW8taDI2NC1lbnRyb3B5LW1vZGUiPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19IMjY0X0VOVFJPUFlfTU9ERTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmVudW0mbmJzcDt2NGwyX21wZWdfdmlkZW9faDI2NF9lbnRyb3B5X21vZGU8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+RW50cm9weSBjb2RpbmcgbW9kZSBmb3IgSDI2NCAtIENBQkFDL0NBVkFMQy4KK0FwcGxpY2FibGUgdG8gdGhlIEgyNjQgZW5jb2Rlci4KK1Bvc3NpYmxlIHZhbHVlcyBhcmU6PC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnl0Ymwgc3Bhbm5hbWU9ImRlc2NyIiBjb2xzPSIyIj4KKwkJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fSDI2NF9FTlRST1BZX01PREVfQ0FWTEM8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5Vc2UgQ0FWTEMgZW50cm9weSBjb2RpbmcuPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fSDI2NF9FTlRST1BZX01PREVfQ0FCQUM8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5Vc2UgQ0FCQUMgZW50cm9weSBjb2RpbmcuPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvZW50cnl0Ymw+CisJICAgICAgPC9yb3c+CisKKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX0gyNjRfOFg4X1RSQU5TRk9STTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmJvb2xlYW48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+RW5hYmxlIDhYOCB0cmFuc2Zvcm0gZm9yIEgyNjQuIEFwcGxpY2FibGUgdG8gdGhlIEgyNjQgZW5jb2Rlci48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19DWUNMSUNfSU5UUkFfUkVGUkVTSF9NQjwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+Q3ljbGljIGludHJhIG1hY3JvYmxvY2sgcmVmcmVzaC4gVGhpcyBpcyB0aGUgbnVtYmVyIG9mIGNvbnRpbnVvdXMgbWFjcm9ibG9ja3MKK3JlZnJlc2hlZCBldmVyeSBmcmFtZS4gRWFjaCBmcmFtZSBhIHN1Y2Nlc3NpdmUgc2V0IG9mIG1hY3JvYmxvY2tzIGlzIHJlZnJlc2hlZCB1bnRpbCB0aGUgY3ljbGUgY29tcGxldGVzIGFuZCBzdGFydHMgZnJvbSB0aGUKK3RvcCBvZiB0aGUgZnJhbWUuIEFwcGxpY2FibGUgdG8gSDI2NCwgSDI2MyBhbmQgTVBFRzQgZW5jb2Rlci48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19GUkFNRV9SQ19FTkFCTEU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkZyYW1lIGxldmVsIHJhdGUgY29udHJvbCBlbmFibGUuCitJZiB0aGlzIGNvbnRyb2wgaXMgZGlzYWJsZWQgdGhlbiB0aGUgcXVhbnRpemF0aW9uIHBhcmFtZXRlciBmb3IgZWFjaCBmcmFtZSB0eXBlIGlzIGNvbnN0YW50IGFuZCBzZXQgd2l0aCBhcHByb3ByaWF0ZSBjb250cm9scworKGUuZy4gPGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fSDI2M19JX0ZSQU1FX1FQPC9jb25zdGFudD4pLgorSWYgZnJhbWUgcmF0ZSBjb250cm9sIGlzIGVuYWJsZWQgdGhlbiBxdWFudGl6YXRpb24gcGFyYW1ldGVyIGlzIGFkanVzdGVkIHRvIG1lZXQgdGhlIGNob3NlbiBiaXRyYXRlLiBNaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlCitmb3IgdGhlIHF1YW50aXphdGlvbiBwYXJhbWV0ZXIgY2FuIGJlIHNldCB3aXRoIGFwcHJvcHJpYXRlIGNvbnRyb2xzIChlLmcuIDxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX0gyNjNfTUlOX1FQPC9jb25zdGFudD4pLgorQXBwbGljYWJsZSB0byBlbmNvZGVycy48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19NQl9SQ19FTkFCTEU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPk1hY3JvYmxvY2sgbGV2ZWwgcmF0ZSBjb250cm9sIGVuYWJsZS4KK0FwcGxpY2FibGUgdG8gdGhlIE1QRUc0IGFuZCBIMjY0IGVuY29kZXJzLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisKKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX01QRUc0X1FQRUw8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlF1YXJ0ZXIgcGl4ZWwgbW90aW9uIGVzdGltYXRpb24gZm9yIE1QRUc0LiBBcHBsaWNhYmxlIHRvIHRoZSBNUEVHNCBlbmNvZGVyLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisKKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX0gyNjNfSV9GUkFNRV9RUDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+UXVhbnRpemF0aW9uIHBhcmFtZXRlciBmb3IgYW4gSSBmcmFtZSBmb3IgSDI2My4gVmFsaWQgcmFuZ2U6IGZyb20gMSB0byAzMS48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19IMjYzX01JTl9RUDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+TWluaW11bSBxdWFudGl6YXRpb24gcGFyYW1ldGVyIGZvciBIMjYzLiBWYWxpZCByYW5nZTogZnJvbSAxIHRvIDMxLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisKKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX0gyNjNfTUFYX1FQPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5NYXhpbXVtIHF1YW50aXphdGlvbiBwYXJhbWV0ZXIgZm9yIEgyNjMuIFZhbGlkIHJhbmdlOiBmcm9tIDEgdG8gMzEuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fSDI2M19QX0ZSQU1FX1FQPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5RdWFudGl6YXRpb24gcGFyYW1ldGVyIGZvciBhbiBQIGZyYW1lIGZvciBIMjYzLiBWYWxpZCByYW5nZTogZnJvbSAxIHRvIDMxLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisKKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX0gyNjNfQl9GUkFNRV9RUDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+UXVhbnRpemF0aW9uIHBhcmFtZXRlciBmb3IgYW4gQiBmcmFtZSBmb3IgSDI2My4gVmFsaWQgcmFuZ2U6IGZyb20gMSB0byAzMS48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19IMjY0X0lfRlJBTUVfUVA8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlF1YW50aXphdGlvbiBwYXJhbWV0ZXIgZm9yIGFuIEkgZnJhbWUgZm9yIEgyNjQuIFZhbGlkIHJhbmdlOiBmcm9tIDAgdG8gNTEuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fSDI2NF9NSU5fUVA8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPk1pbmltdW0gcXVhbnRpemF0aW9uIHBhcmFtZXRlciBmb3IgSDI2NC4gVmFsaWQgcmFuZ2U6IGZyb20gMCB0byA1MS48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19IMjY0X01BWF9RUDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+TWF4aW11bSBxdWFudGl6YXRpb24gcGFyYW1ldGVyIGZvciBIMjY0LiBWYWxpZCByYW5nZTogZnJvbSAwIHRvIDUxLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisKKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX0gyNjRfUF9GUkFNRV9RUDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+UXVhbnRpemF0aW9uIHBhcmFtZXRlciBmb3IgYW4gUCBmcmFtZSBmb3IgSDI2NC4gVmFsaWQgcmFuZ2U6IGZyb20gMCB0byA1MS48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19IMjY0X0JfRlJBTUVfUVA8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlF1YW50aXphdGlvbiBwYXJhbWV0ZXIgZm9yIGFuIEIgZnJhbWUgZm9yIEgyNjQuIFZhbGlkIHJhbmdlOiBmcm9tIDAgdG8gNTEuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fTVBFRzRfSV9GUkFNRV9RUDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+UXVhbnRpemF0aW9uIHBhcmFtZXRlciBmb3IgYW4gSSBmcmFtZSBmb3IgTVBFRzQuIFZhbGlkIHJhbmdlOiBmcm9tIDEgdG8gMzEuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fTVBFRzRfTUlOX1FQPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5NaW5pbXVtIHF1YW50aXphdGlvbiBwYXJhbWV0ZXIgZm9yIE1QRUc0LiBWYWxpZCByYW5nZTogZnJvbSAxIHRvIDMxLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisKKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX01QRUc0X01BWF9RUDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+TWF4aW11bSBxdWFudGl6YXRpb24gcGFyYW1ldGVyIGZvciBNUEVHNC4gVmFsaWQgcmFuZ2U6IGZyb20gMSB0byAzMS48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19NUEVHNF9QX0ZSQU1FX1FQPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5RdWFudGl6YXRpb24gcGFyYW1ldGVyIGZvciBhbiBQIGZyYW1lIGZvciBNUEVHNC4gVmFsaWQgcmFuZ2U6IGZyb20gMSB0byAzMS48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19NUEVHNF9CX0ZSQU1FX1FQPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5RdWFudGl6YXRpb24gcGFyYW1ldGVyIGZvciBhbiBCIGZyYW1lIGZvciBNUEVHNC4gVmFsaWQgcmFuZ2U6IGZyb20gMSB0byAzMS48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19WQlZfU0laRTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGhlIFZpZGVvIEJ1ZmZlciBWZXJpZmllciBzaXplIGluIGtpbG9ieXRlcywgaXQgaXMgdXNlZCBhcyBhIGxpbWl0YXRpb24gb2YgZnJhbWUgc2tpcC4KK1RoZSBWQlYgaXMgZGVmaW5lZCBpbiB0aGUgc3RhbmRhcmQgYXMgYSBtZWFuIHRvIHZlcmlmeSB0aGF0IHRoZSBwcm9kdWNlZCBzdHJlYW0gd2lsbCBiZSBzdWNjZXNzZnVsbHkgZGVjb2RlZC4KK1RoZSBzdGFuZGFyZCBkZXNjcmliZXMgaXQgYXMgIlBhcnQgb2YgYSBoeXBvdGhldGljYWwgZGVjb2RlciB0aGF0IGlzIGNvbmNlcHR1YWxseSBjb25uZWN0ZWQgdG8gdGhlCitvdXRwdXQgb2YgdGhlIGVuY29kZXIuIEl0cyBwdXJwb3NlIGlzIHRvIHByb3ZpZGUgYSBjb25zdHJhaW50IG9uIHRoZSB2YXJpYWJpbGl0eSBvZiB0aGUgZGF0YSByYXRlIHRoYXQgYW4KK2VuY29kZXIgb3IgZWRpdGluZyBwcm9jZXNzIG1heSBwcm9kdWNlLiIuCitBcHBsaWNhYmxlIHRvIHRoZSBNUEVHMSwgTVBFRzIsIE1QRUc0IGVuY29kZXJzLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisKKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3cgaWQ9InY0bDItbXBlZy12aWRlby12YnYtZGVsYXkiPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19WQlZfREVMQVk8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlNldHMgdGhlIGluaXRpYWwgZGVsYXkgaW4gbWlsbGlzZWNvbmRzIGZvcgorVkJWIGJ1ZmZlciBjb250cm9sLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisKKwkJICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3cgaWQ9InY0bDItbXBlZy12aWRlby1ob3Itc2VhcmNoLXJhbmdlIj4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fTVZfSF9TRUFSQ0hfUkFOR0U8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkJPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5Ib3Jpem9udGFsIHNlYXJjaCByYW5nZSBkZWZpbmVzIG1heGltdW0gaG9yaXpvbnRhbCBzZWFyY2ggYXJlYSBpbiBwaXhlbHMKK3RvIHNlYXJjaCBhbmQgbWF0Y2ggZm9yIHRoZSBwcmVzZW50IE1hY3JvYmxvY2sgKE1CKSBpbiB0aGUgcmVmZXJlbmNlIHBpY3R1cmUuIFRoaXMgVjRMMiBjb250cm9sIG1hY3JvIGlzIHVzZWQgdG8gc2V0Citob3Jpem9udGFsIHNlYXJjaCByYW5nZSBmb3IgbW90aW9uIGVzdGltYXRpb24gbW9kdWxlIGluIHZpZGVvIGVuY29kZXIuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKworCQkgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93IGlkPSJ2NGwyLW1wZWctdmlkZW8tdmVydC1zZWFyY2gtcmFuZ2UiPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19NVl9WX1NFQVJDSF9SQU5HRTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCQk8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlZlcnRpY2FsIHNlYXJjaCByYW5nZSBkZWZpbmVzIG1heGltdW0gdmVydGljYWwgc2VhcmNoIGFyZWEgaW4gcGl4ZWxzCit0byBzZWFyY2ggYW5kIG1hdGNoIGZvciB0aGUgcHJlc2VudCBNYWNyb2Jsb2NrIChNQikgaW4gdGhlIHJlZmVyZW5jZSBwaWN0dXJlLiBUaGlzIFY0TDIgY29udHJvbCBtYWNybyBpcyB1c2VkIHRvIHNldAordmVydGljYWwgc2VhcmNoIHJhbmdlIGZvciBtb3Rpb24gZXN0aW1hdGlvbiBtb2R1bGUgaW4gdmlkZW8gZW5jb2Rlci48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19IMjY0X0NQQl9TSVpFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5UaGUgQ29kZWQgUGljdHVyZSBCdWZmZXIgc2l6ZSBpbiBraWxvYnl0ZXMsIGl0IGlzIHVzZWQgYXMgYSBsaW1pdGF0aW9uIG9mIGZyYW1lIHNraXAuCitUaGUgQ1BCIGlzIGRlZmluZWQgaW4gdGhlIEgyNjQgc3RhbmRhcmQgYXMgYSBtZWFuIHRvIHZlcmlmeSB0aGF0IHRoZSBwcm9kdWNlZCBzdHJlYW0gd2lsbCBiZSBzdWNjZXNzZnVsbHkgZGVjb2RlZC4KK0FwcGxpY2FibGUgdG8gdGhlIEgyNjQgZW5jb2Rlci48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19IMjY0X0lfUEVSSU9EPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5QZXJpb2QgYmV0d2VlbiBJLWZyYW1lcyBpbiB0aGUgb3BlbiBHT1AgZm9yIEgyNjQuIEluIGNhc2Ugb2YgYW4gb3BlbiBHT1AKK3RoaXMgaXMgdGhlIHBlcmlvZCBiZXR3ZWVuIHR3byBJLWZyYW1lcy4gVGhlIHBlcmlvZCBiZXR3ZWVuIElEUiAoSW5zdGFudGFuZW91cyBEZWNvZGluZyBSZWZyZXNoKSBmcmFtZXMgaXMgdGFrZW4gZnJvbSB0aGUgR09QX1NJWkUgY29udHJvbC4KK0FuIElEUiBmcmFtZSwgd2hpY2ggc3RhbmRzIGZvciBJbnN0YW50YW5lb3VzIERlY29kaW5nIFJlZnJlc2ggaXMgYW4gSS1mcmFtZSBhZnRlciB3aGljaCBubyBwcmlvciBmcmFtZXMgYXJlCityZWZlcmVuY2VkLiBUaGlzIG1lYW5zIHRoYXQgYSBzdHJlYW0gY2FuIGJlIHJlc3RhcnRlZCBmcm9tIGFuIElEUiBmcmFtZSB3aXRob3V0IHRoZSBuZWVkIHRvIHN0b3JlIG9yIGRlY29kZSBhbnkKK3ByZXZpb3VzIGZyYW1lcy4gQXBwbGljYWJsZSB0byB0aGUgSDI2NCBlbmNvZGVyLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisKKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3cgaWQ9InY0bDItbXBlZy12aWRlby1oZWFkZXItbW9kZSI+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX0hFQURFUl9NT0RFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+ZW51bSZuYnNwO3Y0bDJfbXBlZ192aWRlb19oZWFkZXJfbW9kZTwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5EZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGhlYWRlciBpcyByZXR1cm5lZCBhcyB0aGUgZmlyc3QgYnVmZmVyIG9yIGlzCitpdCByZXR1cm5lZCB0b2dldGhlciB3aXRoIHRoZSBmaXJzdCBmcmFtZS4gQXBwbGljYWJsZSB0byBlbmNvZGVycy4KK1Bvc3NpYmxlIHZhbHVlcyBhcmU6PC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnl0Ymwgc3Bhbm5hbWU9ImRlc2NyIiBjb2xzPSIyIj4KKwkJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fSEVBREVSX01PREVfU0VQQVJBVEU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5UaGUgc3RyZWFtIGhlYWRlciBpcyByZXR1cm5lZCBzZXBhcmF0ZWx5IGluIHRoZSBmaXJzdCBidWZmZXIuPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fSEVBREVSX01PREVfSk9JTkVEX1dJVEhfMVNUX0ZSQU1FPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+VGhlIHN0cmVhbSBoZWFkZXIgaXMgcmV0dXJuZWQgdG9nZXRoZXIgd2l0aCB0aGUgZmlyc3QgZW5jb2RlZCBmcmFtZS48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC9lbnRyeXRibD4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX1JFUEVBVF9TRVFfSEVBREVSPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+Ym9vbGVhbjwvZW50cnk+CisJICAgICAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5SZXBlYXQgdGhlIHZpZGVvIHNlcXVlbmNlIGhlYWRlcnMuIFJlcGVhdGluZyB0aGVzZQoraGVhZGVycyBtYWtlcyByYW5kb20gYWNjZXNzIHRvIHRoZSB2aWRlbyBzdHJlYW0gZWFzaWVyLiBBcHBsaWNhYmxlIHRvIHRoZSBNUEVHMSwgMiBhbmQgNCBlbmNvZGVyLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fREVDT0RFUl9NUEVHNF9ERUJMT0NLX0ZJTFRFUjwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmJvb2xlYW48L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+RW5hYmxlZCB0aGUgZGVibG9ja2luZyBwb3N0IHByb2Nlc3NpbmcgZmlsdGVyIGZvciBNUEVHNCBkZWNvZGVyLgorQXBwbGljYWJsZSB0byB0aGUgTVBFRzQgZGVjb2Rlci48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fTVBFRzRfVk9QX1RJTUVfUkVTPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgICAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj52b3BfdGltZV9pbmNyZW1lbnRfcmVzb2x1dGlvbiB2YWx1ZSBmb3IgTVBFRzQuIEFwcGxpY2FibGUgdG8gdGhlIE1QRUc0IGVuY29kZXIuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX01QRUc0X1ZPUF9USU1FX0lOQzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+dm9wX3RpbWVfaW5jcmVtZW50IHZhbHVlIGZvciBNUEVHNC4gQXBwbGljYWJsZSB0byB0aGUgTVBFRzQgZW5jb2Rlci48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19IMjY0X1NFSV9GUkFNRV9QQUNLSU5HPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+Ym9vbGVhbjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5FbmFibGUgZ2VuZXJhdGlvbiBvZiBmcmFtZSBwYWNraW5nIHN1cHBsZW1lbnRhbCBlbmhhbmNlbWVudCBpbmZvcm1hdGlvbiBpbiB0aGUgZW5jb2RlZCBiaXRzdHJlYW0uCitUaGUgZnJhbWUgcGFja2luZyBTRUkgbWVzc2FnZSBjb250YWlucyB0aGUgYXJyYW5nZW1lbnQgb2YgTCBhbmQgUiBwbGFuZXMgZm9yIDNEIHZpZXdpbmcuIEFwcGxpY2FibGUgdG8gdGhlIEgyNjQgZW5jb2Rlci48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19IMjY0X1NFSV9GUF9DVVJSRU5UX0ZSQU1FXzA8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlNldHMgY3VycmVudCBmcmFtZSBhcyBmcmFtZTAgaW4gZnJhbWUgcGFja2luZyBTRUkuCitBcHBsaWNhYmxlIHRvIHRoZSBIMjY0IGVuY29kZXIuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdyBpZD0idjRsMi1tcGVnLXZpZGVvLWgyNjQtc2VpLWZwLWFycmFuZ2VtZW50LXR5cGUiPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19IMjY0X1NFSV9GUF9BUlJBTkdFTUVOVF9UWVBFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+ZW51bSZuYnNwO3Y0bDJfbXBlZ192aWRlb19oMjY0X3NlaV9mcF9hcnJhbmdlbWVudF90eXBlPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkZyYW1lIHBhY2tpbmcgYXJyYW5nZW1lbnQgdHlwZSBmb3IgSDI2NCBTRUkuCitBcHBsaWNhYmxlIHRvIHRoZSBIMjY0IGVuY29kZXIuCitQb3NzaWJsZSB2YWx1ZXMgYXJlOjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfU0VJX0ZQX0FSUkFOR0VNRU5UX1RZUEVfQ0hFS0VSQk9BUkQ8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5QaXhlbHMgYXJlIGFsdGVybmF0aXZlbHkgZnJvbSBMIGFuZCBSLjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfU0VJX0ZQX0FSUkFOR0VNRU5UX1RZUEVfQ09MVU1OPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+TCBhbmQgUiBhcmUgaW50ZXJsYWNlZCBieSBjb2x1bW4uPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fSDI2NF9TRUlfRlBfQVJSQU5HRU1FTlRfVFlQRV9ST1c8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5MIGFuZCBSIGFyZSBpbnRlcmxhY2VkIGJ5IHJvdy48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X1NFSV9GUF9BUlJBTkdFTUVOVF9UWVBFX1NJREVfQllfU0lERTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkwgaXMgb24gdGhlIGxlZnQsIFIgb24gdGhlIHJpZ2h0LjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfU0VJX0ZQX0FSUkFOR0VNRU5UX1RZUEVfVE9QX0JPVFRPTTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkwgaXMgb24gdG9wLCBSIG9uIGJvdHRvbS48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X1NFSV9GUF9BUlJBTkdFTUVOVF9UWVBFX1RFTVBPUkFMPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+T25lIHZpZXcgcGVyIGZyYW1lLjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L2VudHJ5dGJsPgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19IMjY0X0ZNTzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmJvb2xlYW48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+RW5hYmxlcyBmbGV4aWJsZSBtYWNyb2Jsb2NrIG9yZGVyaW5nIGluIHRoZSBlbmNvZGVkIGJpdHN0cmVhbS4gSXQgaXMgYSB0ZWNobmlxdWUKK3VzZWQgZm9yIHJlc3RydWN0dXJpbmcgdGhlIG9yZGVyaW5nIG9mIG1hY3JvYmxvY2tzIGluIHBpY3R1cmVzLiBBcHBsaWNhYmxlIHRvIHRoZSBIMjY0IGVuY29kZXIuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdyBpZD0idjRsMi1tcGVnLXZpZGVvLWgyNjQtZm1vLW1hcC10eXBlIj4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fSDI2NF9GTU9fTUFQX1RZUEU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5lbnVtJm5ic3A7djRsMl9tcGVnX3ZpZGVvX2gyNjRfZm1vX21hcF90eXBlPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPldoZW4gdXNpbmcgRk1PLCB0aGUgbWFwIHR5cGUgZGl2aWRlcyB0aGUgaW1hZ2UgaW4gZGlmZmVyZW50IHNjYW4gcGF0dGVybnMgb2YgbWFjcm9ibG9ja3MuCitBcHBsaWNhYmxlIHRvIHRoZSBIMjY0IGVuY29kZXIuCitQb3NzaWJsZSB2YWx1ZXMgYXJlOjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfRk1PX01BUF9UWVBFX0lOVEVSTEVBVkVEX1NMSUNFUzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlNsaWNlcyBhcmUgaW50ZXJsZWF2ZWQgb25lIGFmdGVyIG90aGVyIHdpdGggbWFjcm9ibG9ja3MgaW4gcnVuIGxlbmd0aCBvcmRlci48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X0ZNT19NQVBfVFlQRV9TQ0FUVEVSRURfU0xJQ0VTPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+U2NhdHRlcnMgdGhlIG1hY3JvYmxvY2tzIGJhc2VkIG9uIGEgbWF0aGVtYXRpY2FsIGZ1bmN0aW9uIGtub3duIHRvIGJvdGggZW5jb2RlciBhbmQgZGVjb2Rlci48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X0ZNT19NQVBfVFlQRV9GT1JFR1JPVU5EX1dJVEhfTEVGVF9PVkVSPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+TWFjcm9ibG9ja3MgYXJyYW5nZWQgaW4gcmVjdGFuZ3VsYXIgYXJlYXMgb3IgcmVnaW9ucyBvZiBpbnRlcmVzdC48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WSURFT19IMjY0X0ZNT19NQVBfVFlQRV9CT1hfT1VUPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+U2xpY2UgZ3JvdXBzIGdyb3cgaW4gYSBjeWNsaWMgd2F5IGZyb20gY2VudHJlIHRvIG91dHdhcmRzLjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfRk1PX01BUF9UWVBFX1JBU1RFUl9TQ0FOPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+U2xpY2UgZ3JvdXBzIGdyb3cgaW4gcmFzdGVyIHNjYW4gcGF0dGVybiBmcm9tIGxlZnQgdG8gcmlnaHQuPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fSDI2NF9GTU9fTUFQX1RZUEVfV0lQRV9TQ0FOPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+U2xpY2UgZ3JvdXBzIGdyb3cgaW4gd2lwZSBzY2FuIHBhdHRlcm4gZnJvbSB0b3AgdG8gYm90dG9tLjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfRk1PX01BUF9UWVBFX0VYUExJQ0lUPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+VXNlciBkZWZpbmVkIG1hcCB0eXBlLjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L2VudHJ5dGJsPgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19IMjY0X0ZNT19TTElDRV9HUk9VUDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+TnVtYmVyIG9mIHNsaWNlIGdyb3VwcyBpbiBGTU8uCitBcHBsaWNhYmxlIHRvIHRoZSBIMjY0IGVuY29kZXIuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdyBpZD0idjRsMi1tcGVnLXZpZGVvLWgyNjQtZm1vLWNoYW5nZS1kaXJlY3Rpb24iPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19IMjY0X0ZNT19DSEFOR0VfRElSRUNUSU9OPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+ZW51bSZuYnNwO3Y0bDJfbXBlZ192aWRlb19oMjY0X2Ztb19jaGFuZ2VfZGlyPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlNwZWNpZmllcyBhIGRpcmVjdGlvbiBvZiB0aGUgc2xpY2UgZ3JvdXAgY2hhbmdlIGZvciByYXN0ZXIgYW5kIHdpcGUgbWFwcy4KK0FwcGxpY2FibGUgdG8gdGhlIEgyNjQgZW5jb2Rlci4KK1Bvc3NpYmxlIHZhbHVlcyBhcmU6PC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnl0Ymwgc3Bhbm5hbWU9ImRlc2NyIiBjb2xzPSIyIj4KKwkJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fSDI2NF9GTU9fQ0hBTkdFX0RJUl9SSUdIVDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlJhc3RlciBzY2FuIG9yIHdpcGUgcmlnaHQuPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVklERU9fSDI2NF9GTU9fQ0hBTkdFX0RJUl9MRUZUPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+UmV2ZXJzZSByYXN0ZXIgc2NhbiBvciB3aXBlIGxlZnQuPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvZW50cnl0Ymw+CisJICAgICAgPC9yb3c+CisKKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX0gyNjRfRk1PX0NIQU5HRV9SQVRFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5TcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGZpcnN0IHNsaWNlIGdyb3VwIGZvciByYXN0ZXIgYW5kIHdpcGUgbWFwLgorQXBwbGljYWJsZSB0byB0aGUgSDI2NCBlbmNvZGVyLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisKKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX0gyNjRfRk1PX1JVTl9MRU5HVEg8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIG1hY3JvYmxvY2tzIGZvciB0aGUgaW50ZXJsZWF2ZWQgbWFwLgorQXBwbGljYWJsZSB0byB0aGUgSDI2NCBlbmNvZGVyLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisKKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX0gyNjRfQVNPPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+Ym9vbGVhbjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5FbmFibGVzIGFyYml0cmFyeSBzbGljZSBvcmRlcmluZyBpbiBlbmNvZGVkIGJpdHN0cmVhbS4KK0FwcGxpY2FibGUgdG8gdGhlIEgyNjQgZW5jb2Rlci48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19IMjY0X0FTT19TTElDRV9PUkRFUjwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+U3BlY2lmaWVzIHRoZSBzbGljZSBvcmRlciBpbiBBU08uIEFwcGxpY2FibGUgdG8gdGhlIEgyNjQgZW5jb2Rlci4KK1RoZSBzdXBwbGllZCAzMi1iaXQgaW50ZWdlciBpcyBpbnRlcnByZXRlZCBhcyBmb2xsb3dzIChiaXQKKzAgPSBsZWFzdCBzaWduaWZpY2FudCBiaXQpOjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5CaXQgMDoxNTwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5TbGljZSBJRDwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5CaXQgMTY6MzI8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+U2xpY2UgcG9zaXRpb24gb3Igb3JkZXI8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC9lbnRyeXRibD4KKwkgICAgICA8L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fSDI2NF9ISUVSQVJDSElDQUxfQ09ESU5HPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+Ym9vbGVhbjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5FbmFibGVzIEgyNjQgaGllcmFyY2hpY2FsIGNvZGluZy4KK0FwcGxpY2FibGUgdG8gdGhlIEgyNjQgZW5jb2Rlci48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93IGlkPSJ2NGwyLW1wZWctdmlkZW8taDI2NC1oaWVyYXJjaGljYWwtY29kaW5nLXR5cGUiPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19IMjY0X0hJRVJBUkNISUNBTF9DT0RJTkdfVFlQRTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmVudW0mbmJzcDt2NGwyX21wZWdfdmlkZW9faDI2NF9oaWVyYXJjaGljYWxfY29kaW5nX3R5cGU8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+U3BlY2lmaWVzIHRoZSBoaWVyYXJjaGljYWwgY29kaW5nIHR5cGUuCitBcHBsaWNhYmxlIHRvIHRoZSBIMjY0IGVuY29kZXIuCitQb3NzaWJsZSB2YWx1ZXMgYXJlOjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfSElFUkFSQ0hJQ0FMX0NPRElOR19CPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+SGllcmFyY2hpY2FsIEIgY29kaW5nLjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZJREVPX0gyNjRfSElFUkFSQ0hJQ0FMX0NPRElOR19QPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+SGllcmFyY2hpY2FsIFAgY29kaW5nLjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L2VudHJ5dGJsPgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19IMjY0X0hJRVJBUkNISUNBTF9DT0RJTkdfTEFZRVI8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGhpZXJhcmNoaWNhbCBjb2RpbmcgbGF5ZXJzLgorQXBwbGljYWJsZSB0byB0aGUgSDI2NCBlbmNvZGVyLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisKKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX0gyNjRfSElFUkFSQ0hJQ0FMX0NPRElOR19MQVlFUl9RUDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+U3BlY2lmaWVzIGEgdXNlciBkZWZpbmVkIFFQIGZvciBlYWNoIGxheWVyLiBBcHBsaWNhYmxlIHRvIHRoZSBIMjY0IGVuY29kZXIuCitUaGUgc3VwcGxpZWQgMzItYml0IGludGVnZXIgaXMgaW50ZXJwcmV0ZWQgYXMgZm9sbG93cyAoYml0CiswID0gbGVhc3Qgc2lnbmlmaWNhbnQgYml0KTo8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+Qml0IDA6MTU8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+UVAgdmFsdWU8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+Qml0IDE2OjMyPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkxheWVyIG51bWJlcjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L2VudHJ5dGJsPgorCSAgICAgIDwvcm93PgorCisJICAgIDwvdGJvZHk+CisJICA8L3Rncm91cD4KKwk8L3RhYmxlPgorICAgICAgPC9zZWN0aW9uPgorCisgICAgICA8c2VjdGlvbj4KKwk8dGl0bGU+TUZDIDUuMSBNUEVHIENvbnRyb2xzPC90aXRsZT4KKworCTxwYXJhPlRoZSBmb2xsb3dpbmcgTVBFRyBjbGFzcyBjb250cm9scyBkZWFsIHdpdGggTVBFRworZGVjb2RpbmcgYW5kIGVuY29kaW5nIHNldHRpbmdzIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoZSBNdWx0aSBGb3JtYXQgQ29kZWMgNS4xIGRldmljZSBwcmVzZW50CitpbiB0aGUgUzVQIGZhbWlseSBvZiBTb0NzIGJ5IFNhbXN1bmcuCis8L3BhcmE+CisKKwk8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9Im1mYzUxLWNvbnRyb2wtaWQiPgorCSAgPHRpdGxlPk1GQyA1LjEgQ29udHJvbCBJRHM8L3RpdGxlPgorCSAgPHRncm91cCBjb2xzPSI0Ij4KKwkgICAgPGNvbHNwZWMgY29sbmFtZT0iYzEiIGNvbHdpZHRoPSIxKiIgLz4KKwkgICAgPGNvbHNwZWMgY29sbmFtZT0iYzIiIGNvbHdpZHRoPSI2KiIgLz4KKwkgICAgPGNvbHNwZWMgY29sbmFtZT0iYzMiIGNvbHdpZHRoPSIyKiIgLz4KKwkgICAgPGNvbHNwZWMgY29sbmFtZT0iYzQiIGNvbHdpZHRoPSI2KiIgLz4KKwkgICAgPHNwYW5zcGVjIG5hbWVzdD0iYzEiIG5hbWVlbmQ9ImMyIiBzcGFubmFtZT0iaWQiIC8+CisJICAgIDxzcGFuc3BlYyBuYW1lc3Q9ImMyIiBuYW1lZW5kPSJjNCIgc3Bhbm5hbWU9ImRlc2NyIiAvPgorCSAgICA8dGhlYWQ+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCIgYWxpZ249ImxlZnQiPklEPC9lbnRyeT4KKwkJPGVudHJ5IGFsaWduPSJsZWZ0Ij5UeXBlPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgIDwvdGhlYWQ+CisJICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19NRkM1MV9WSURFT19ERUNPREVSX0gyNjRfRElTUExBWV9ERUxBWV9FTkFCTEU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPklmIHRoZSBkaXNwbGF5IGRlbGF5IGlzIGVuYWJsZWQgdGhlbiB0aGUgZGVjb2RlciBpcyBmb3JjZWQgdG8gcmV0dXJuIGEKK0NBUFRVUkUgYnVmZmVyIChkZWNvZGVkIGZyYW1lKSBhZnRlciBwcm9jZXNzaW5nIGEgY2VydGFpbiBudW1iZXIgb2YgT1VUUFVUIGJ1ZmZlcnMuIFRoZSBkZWxheSBjYW4gYmUgc2V0IHRocm91Z2gKKzxjb25zdGFudD5WNEwyX0NJRF9NUEVHX01GQzUxX1ZJREVPX0RFQ09ERVJfSDI2NF9ESVNQTEFZX0RFTEFZPC9jb25zdGFudD4uIFRoaXMgZmVhdHVyZSBjYW4gYmUgdXNlZCBmb3IgZXhhbXBsZQorZm9yIGdlbmVyYXRpbmcgdGh1bWJuYWlscyBvZiB2aWRlb3MuIEFwcGxpY2FibGUgdG8gdGhlIEgyNjQgZGVjb2Rlci4KKwkgICAgICA8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfTUZDNTFfVklERU9fREVDT0RFUl9IMjY0X0RJU1BMQVlfREVMQVk8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkRpc3BsYXkgZGVsYXkgdmFsdWUgZm9yIEgyNjQgZGVjb2Rlci4KK1RoZSBkZWNvZGVyIGlzIGZvcmNlZCB0byByZXR1cm4gYSBkZWNvZGVkIGZyYW1lIGFmdGVyIHRoZSBzZXQgJ2Rpc3BsYXkgZGVsYXknIG51bWJlciBvZiBmcmFtZXMuIElmIHRoaXMgbnVtYmVyIGlzCitsb3cgaXQgbWF5IHJlc3VsdCBpbiBmcmFtZXMgcmV0dXJuZWQgb3V0IG9mIGRpc3BhbHkgb3JkZXIsIGluIGFkZGl0aW9uIHRoZSBoYXJkd2FyZSBtYXkgc3RpbGwgYmUgdXNpbmcgdGhlIHJldHVybmVkIGJ1ZmZlcgorYXMgYSByZWZlcmVuY2UgcGljdHVyZSBmb3Igc3Vic2VxdWVudCBmcmFtZXMuCis8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfTUZDNTFfVklERU9fSDI2NF9OVU1fUkVGX1BJQ19GT1JfUDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGhlIG51bWJlciBvZiByZWZlcmVuY2UgcGljdHVyZXMgdXNlZCBmb3IgZW5jb2RpbmcgYSBQIHBpY3R1cmUuCitBcHBsaWNhYmxlIHRvIHRoZSBIMjY0IGVuY29kZXIuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX01GQzUxX1ZJREVPX1BBRERJTkc8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlBhZGRpbmcgZW5hYmxlIGluIHRoZSBlbmNvZGVyIC0gdXNlIGEgY29sb3IgaW5zdGVhZCBvZiByZXBlYXRpbmcgYm9yZGVyIHBpeGVscy4KK0FwcGxpY2FibGUgdG8gZW5jb2RlcnMuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX01GQzUxX1ZJREVPX1BBRERJTkdfWVVWPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICAgICAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5QYWRkaW5nIGNvbG9yIGluIHRoZSBlbmNvZGVyLiBBcHBsaWNhYmxlIHRvIGVuY29kZXJzLiBUaGUgc3VwcGxpZWQgMzItYml0IGludGVnZXIgaXMgaW50ZXJwcmV0ZWQgYXMgZm9sbG93cyAoYml0CiswID0gbGVhc3Qgc2lnbmlmaWNhbnQgYml0KTo8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+Qml0IDA6NzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5WIGNocm9taW5hbmNlIGluZm9ybWF0aW9uPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PkJpdCA4OjE1PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlUgY2hyb21pbmFuY2UgaW5mb3JtYXRpb248L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+Qml0IDE2OjIzPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlkgbHVtaW5hbmNlIGluZm9ybWF0aW9uPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PkJpdCAyNDozMTwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5NdXN0IGJlIHplcm8uPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvZW50cnl0Ymw+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19NRkM1MV9WSURFT19SQ19SRUFDVElPTl9DT0VGRjwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+UmVhY3Rpb24gY29lZmZpY2llbnQgZm9yIE1GQyByYXRlIGNvbnRyb2wuIEFwcGxpY2FibGUgdG8gZW5jb2RlcnMuCis8cGFyYT5Ob3RlIDE6IFZhbGlkIG9ubHkgd2hlbiB0aGUgZnJhbWUgbGV2ZWwgUkMgaXMgZW5hYmxlZC48L3BhcmE+Cis8cGFyYT5Ob3RlIDI6IEZvciB0aWdodCBDQlIsIHRoaXMgZmllbGQgbXVzdCBiZSBzbWFsbCAoZXguIDIgfiAxMCkuCitGb3IgVkJSLCB0aGlzIGZpZWxkIG11c3QgYmUgbGFyZ2UgKGV4LiAxMDAgfiAxMDAwKS48L3BhcmE+Cis8cGFyYT5Ob3RlIDM6IEl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byB1c2UgdGhlIGdyZWF0ZXIgbnVtYmVyIHRoYW4gRlJBTUVfUkFURSAqICgxMF45IC8gQklUX1JBVEUpLjwvcGFyYT4KKzwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19NRkM1MV9WSURFT19IMjY0X0FEQVBUSVZFX1JDX0RBUks8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkFkYXB0aXZlIHJhdGUgY29udHJvbCBmb3IgZGFyayByZWdpb24uCitWYWxpZCBvbmx5IHdoZW4gSC4yNjQgYW5kIG1hY3JvYmxvY2sgbGV2ZWwgUkMgaXMgZW5hYmxlZCAoPGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fTUJfUkNfRU5BQkxFPC9jb25zdGFudD4pLgorQXBwbGljYWJsZSB0byB0aGUgSDI2NCBlbmNvZGVyLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19NRkM1MV9WSURFT19IMjY0X0FEQVBUSVZFX1JDX1NNT09USDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmJvb2xlYW48L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+QWRhcHRpdmUgcmF0ZSBjb250cm9sIGZvciBzbW9vdGggcmVnaW9uLgorVmFsaWQgb25seSB3aGVuIEguMjY0IGFuZCBtYWNyb2Jsb2NrIGxldmVsIFJDIGlzIGVuYWJsZWQgKDxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX01CX1JDX0VOQUJMRTwvY29uc3RhbnQ+KS4KK0FwcGxpY2FibGUgdG8gdGhlIEgyNjQgZW5jb2Rlci48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfTUZDNTFfVklERU9fSDI2NF9BREFQVElWRV9SQ19TVEFUSUM8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkFkYXB0aXZlIHJhdGUgY29udHJvbCBmb3Igc3RhdGljIHJlZ2lvbi4KK1ZhbGlkIG9ubHkgd2hlbiBILjI2NCBhbmQgbWFjcm9ibG9jayBsZXZlbCBSQyBpcyBlbmFibGVkICg8Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19NQl9SQ19FTkFCTEU8L2NvbnN0YW50PikuCitBcHBsaWNhYmxlIHRvIHRoZSBIMjY0IGVuY29kZXIuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX01GQzUxX1ZJREVPX0gyNjRfQURBUFRJVkVfUkNfQUNUSVZJVFk8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkFkYXB0aXZlIHJhdGUgY29udHJvbCBmb3IgYWN0aXZpdHkgcmVnaW9uLgorVmFsaWQgb25seSB3aGVuIEguMjY0IGFuZCBtYWNyb2Jsb2NrIGxldmVsIFJDIGlzIGVuYWJsZWQgKDxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX01CX1JDX0VOQUJMRTwvY29uc3RhbnQ+KS4KK0FwcGxpY2FibGUgdG8gdGhlIEgyNjQgZW5jb2Rlci48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdyBpZD0idjRsMi1tcGVnLW1mYzUxLXZpZGVvLWZyYW1lLXNraXAtbW9kZSI+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX01GQzUxX1ZJREVPX0ZSQU1FX1NLSVBfTU9ERTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmVudW0mbmJzcDt2NGwyX21wZWdfbWZjNTFfdmlkZW9fZnJhbWVfc2tpcF9tb2RlPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPgorSW5kaWNhdGVzIGluIHdoYXQgY29uZGl0aW9ucyB0aGUgZW5jb2RlciBzaG91bGQgc2tpcCBmcmFtZXMuIElmIGVuY29kaW5nIGEgZnJhbWUgd291bGQgY2F1c2UgdGhlIGVuY29kZWQgc3RyZWFtIHRvIGJlIGxhcmdlciB0aGVuCithIGNob3NlbiBkYXRhIGxpbWl0IHRoZW4gdGhlIGZyYW1lIHdpbGwgYmUgc2tpcHBlZC4KK1Bvc3NpYmxlIHZhbHVlcyBhcmU6PC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnl0Ymwgc3Bhbm5hbWU9ImRlc2NyIiBjb2xzPSIyIj4KKwkJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfTUZDNTFfRlJBTUVfU0tJUF9NT0RFX0RJU0FCTEVEPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+RnJhbWUgc2tpcCBtb2RlIGlzIGRpc2FibGVkLjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX01GQzUxX0ZSQU1FX1NLSVBfTU9ERV9MRVZFTF9MSU1JVDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkZyYW1lIHNraXAgbW9kZSBlbmFibGVkIGFuZCBidWZmZXIgbGltaXQgaXMgc2V0IGJ5IHRoZSBjaG9zZW4gbGV2ZWwgYW5kIGlzIGRlZmluZWQgYnkgdGhlIHN0YW5kYXJkLjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX01GQzUxX0ZSQU1FX1NLSVBfTU9ERV9CVUZfTElNSVQ8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5GcmFtZSBza2lwIG1vZGUgZW5hYmxlZCBhbmQgYnVmZmVyIGxpbWl0IGlzIHNldCBieSB0aGUgVkJWIChNUEVHMS8yLzQpIG9yIENQQiAoSDI2NCkgYnVmZmVyIHNpemUgY29udHJvbC48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC9lbnRyeXRibD4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX01GQzUxX1ZJREVPX1JDX0ZJWEVEX1RBUkdFVF9CSVQ8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkVuYWJsZSByYXRlLWNvbnRyb2wgd2l0aCBmaXhlZCB0YXJnZXQgYml0LgorSWYgdGhpcyBzZXR0aW5nIGlzIGVuYWJsZWQsIHRoZW4gdGhlIHJhdGUgY29udHJvbCBsb2dpYyBvZiB0aGUgZW5jb2RlciB3aWxsIGNhbGN1bGF0ZSB0aGUgYXZlcmFnZSBiaXRyYXRlCitmb3IgYSBHT1AgYW5kIGtlZXAgaXQgYmVsb3cgb3IgZXF1YWwgdGhlIHNldCBiaXRyYXRlIHRhcmdldC4gT3RoZXJ3aXNlIHRoZSByYXRlIGNvbnRyb2wgbG9naWMgY2FsY3VsYXRlcyB0aGUKK292ZXJhbGwgYXZlcmFnZSBiaXRyYXRlIGZvciB0aGUgc3RyZWFtIGFuZCBrZWVwcyBpdCBiZWxvdyBvciBlcXVhbCB0byB0aGUgc2V0IGJpdHJhdGUuIEluIHRoZSBmaXJzdCBjYXNlCit0aGUgYXZlcmFnZSBiaXRyYXRlIGZvciB0aGUgd2hvbGUgc3RyZWFtIHdpbGwgYmUgc21hbGxlciB0aGVuIHRoZSBzZXQgYml0cmF0ZS4gVGhpcyBpcyBjYXVzZWQgYmVjYXVzZSB0aGUKK2F2ZXJhZ2UgaXMgY2FsY3VsYXRlZCBmb3Igc21hbGxlciBudW1iZXIgb2YgZnJhbWVzLCBvbiB0aGUgb3RoZXIgaGFuZCBlbmFibGluZyB0aGlzIHNldHRpbmcgd2lsbCBlbnN1cmUgdGhhdAordGhlIHN0cmVhbSB3aWxsIG1lZXQgdGlnaHQgYmFuZHdpZHRoIGNvbnRyYWludHMuIEFwcGxpY2FibGUgdG8gZW5jb2RlcnMuCis8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdyBpZD0idjRsMi1tcGVnLW1mYzUxLXZpZGVvLWZvcmNlLWZyYW1lLXR5cGUiPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19NRkM1MV9WSURFT19GT1JDRV9GUkFNRV9UWVBFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+ZW51bSZuYnNwO3Y0bDJfbXBlZ19tZmM1MV92aWRlb19mb3JjZV9mcmFtZV90eXBlPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkZvcmNlIGEgZnJhbWUgdHlwZSBmb3IgdGhlIG5leHQgcXVldWVkIGJ1ZmZlci4gQXBwbGljYWJsZSB0byBlbmNvZGVycy4KK1Bvc3NpYmxlIHZhbHVlcyBhcmU6PC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnl0Ymwgc3Bhbm5hbWU9ImRlc2NyIiBjb2xzPSIyIj4KKwkJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfTUZDNTFfRk9SQ0VfRlJBTUVfVFlQRV9ESVNBQkxFRDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkZvcmNpbmcgYSBzcGVjaWZpYyBmcmFtZSB0eXBlIGRpc2FibGVkLjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX01GQzUxX0ZPUkNFX0ZSQU1FX1RZUEVfSV9GUkFNRTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkZvcmNlIGFuIEktZnJhbWUuPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfTUZDNTFfRk9SQ0VfRlJBTUVfVFlQRV9OT1RfQ09ERUQ8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5Gb3JjZSBhIG5vbi1jb2RlZCBmcmFtZS48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC9lbnRyeXRibD4KKwkgICAgICA8L3Jvdz4KKwkgICAgPC90Ym9keT4KKwkgIDwvdGdyb3VwPgorCTwvdGFibGU+CisgICAgICA8L3NlY3Rpb24+CisKKyAgICAgIDxzZWN0aW9uPgorCTx0aXRsZT5DWDIzNDF4IE1QRUcgQ29udHJvbHM8L3RpdGxlPgorCisJPHBhcmE+VGhlIGZvbGxvd2luZyBNUEVHIGNsYXNzIGNvbnRyb2xzIGRlYWwgd2l0aCBNUEVHCitlbmNvZGluZyBzZXR0aW5ncyB0aGF0IGFyZSBzcGVjaWZpYyB0byB0aGUgQ29uZXhhbnQgQ1gyMzQxNSBhbmQKK0NYMjM0MTYgTVBFRyBlbmNvZGluZyBjaGlwcy48L3BhcmE+CisKKwk8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9ImN4MjM0MXgtY29udHJvbC1pZCI+CisJICA8dGl0bGU+Q1gyMzQxeCBDb250cm9sIElEczwvdGl0bGU+CisJICA8dGdyb3VwIGNvbHM9IjQiPgorCSAgICA8Y29sc3BlYyBjb2xuYW1lPSJjMSIgY29sd2lkdGg9IjEqIiAvPgorCSAgICA8Y29sc3BlYyBjb2xuYW1lPSJjMiIgY29sd2lkdGg9IjYqIiAvPgorCSAgICA8Y29sc3BlYyBjb2xuYW1lPSJjMyIgY29sd2lkdGg9IjIqIiAvPgorCSAgICA8Y29sc3BlYyBjb2xuYW1lPSJjNCIgY29sd2lkdGg9IjYqIiAvPgorCSAgICA8c3BhbnNwZWMgbmFtZXN0PSJjMSIgbmFtZWVuZD0iYzIiIHNwYW5uYW1lPSJpZCIgLz4KKwkgICAgPHNwYW5zcGVjIG5hbWVzdD0iYzIiIG5hbWVlbmQ9ImM0IiBzcGFubmFtZT0iZGVzY3IiIC8+CisJICAgIDx0aGVhZD4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIiBhbGlnbj0ibGVmdCI+SUQ8L2VudHJ5PgorCQk8ZW50cnkgYWxpZ249ImxlZnQiPlR5cGU8L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgPC90aGVhZD4KKwkgICAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3cgaWQ9InY0bDItbXBlZy1jeDIzNDF4LXZpZGVvLXNwYXRpYWwtZmlsdGVyLW1vZGUiPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19DWDIzNDFYX1ZJREVPX1NQQVRJQUxfRklMVEVSX01PREU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5lbnVtJm5ic3A7djRsMl9tcGVnX2N4MjM0MXhfdmlkZW9fc3BhdGlhbF9maWx0ZXJfbW9kZTwvZW50cnk+CisJICAgICAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5TZXRzIHRoZSBTcGF0aWFsCitGaWx0ZXIgbW9kZSAoZGVmYXVsdCA8Y29uc3RhbnQ+TUFOVUFMPC9jb25zdGFudD4pLiBQb3NzaWJsZSB2YWx1ZXMKK2FyZTo8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19DWDIzNDFYX1ZJREVPX1NQQVRJQUxfRklMVEVSX01PREVfTUFOVUFMPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2hvb3NlIHRoZSBmaWx0ZXIgbWFudWFsbHk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19DWDIzNDFYX1ZJREVPX1NQQVRJQUxfRklMVEVSX01PREVfQVVUTzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNob29zZSB0aGUgZmlsdGVyIGF1dG9tYXRpY2FsbHk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC9lbnRyeXRibD4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX0NYMjM0MVhfVklERU9fU1BBVElBTF9GSUxURVI8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyJm5ic3A7KDAtMTUpPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlRoZSBzZXR0aW5nIGZvciB0aGUKK1NwYXRpYWwgRmlsdGVyLiAwID0gb2ZmLCAxNSA9IG1heGltdW0uIChEZWZhdWx0IGlzIDAuKTwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93IGlkPSJsdW1hLXNwYXRpYWwtZmlsdGVyLXR5cGUiPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19DWDIzNDFYX1ZJREVPX0xVTUFfU1BBVElBTF9GSUxURVJfVFlQRTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmVudW0mbmJzcDt2NGwyX21wZWdfY3gyMzQxeF92aWRlb19sdW1hX3NwYXRpYWxfZmlsdGVyX3R5cGU8L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+U2VsZWN0IHRoZSBhbGdvcml0aG0KK3RvIHVzZSBmb3IgdGhlIEx1bWEgU3BhdGlhbCBGaWx0ZXIgKGRlZmF1bHQKKzxjb25zdGFudD4xRF9IT1I8L2NvbnN0YW50PikuIFBvc3NpYmxlIHZhbHVlczo8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19DWDIzNDFYX1ZJREVPX0xVTUFfU1BBVElBTF9GSUxURVJfVFlQRV9PRkY8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ObyBmaWx0ZXI8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19DWDIzNDFYX1ZJREVPX0xVTUFfU1BBVElBTF9GSUxURVJfVFlQRV8xRF9IT1I8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5PbmUtZGltZW5zaW9uYWwgaG9yaXpvbnRhbDwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0NYMjM0MVhfVklERU9fTFVNQV9TUEFUSUFMX0ZJTFRFUl9UWVBFXzFEX1ZFUlQ8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5PbmUtZGltZW5zaW9uYWwgdmVydGljYWw8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19DWDIzNDFYX1ZJREVPX0xVTUFfU1BBVElBTF9GSUxURVJfVFlQRV8yRF9IVl9TRVBBUkFCTEU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5Ud28tZGltZW5zaW9uYWwgc2VwYXJhYmxlPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQ1gyMzQxWF9WSURFT19MVU1BX1NQQVRJQUxfRklMVEVSX1RZUEVfMkRfU1lNX05PTl9TRVBBUkFCTEU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5Ud28tZGltZW5zaW9uYWwgc3ltbWV0cmljYWwKK25vbi1zZXBhcmFibGU8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC9lbnRyeXRibD4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3cgaWQ9ImNocm9tYS1zcGF0aWFsLWZpbHRlci10eXBlIj4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfQ1gyMzQxWF9WSURFT19DSFJPTUFfU1BBVElBTF9GSUxURVJfVFlQRTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmVudW0mbmJzcDt2NGwyX21wZWdfY3gyMzQxeF92aWRlb19jaHJvbWFfc3BhdGlhbF9maWx0ZXJfdHlwZTwvZW50cnk+CisJICAgICAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5TZWxlY3QgdGhlIGFsZ29yaXRobQorZm9yIHRoZSBDaHJvbWEgU3BhdGlhbCBGaWx0ZXIgKGRlZmF1bHQgPGNvbnN0YW50PjFEX0hPUjwvY29uc3RhbnQ+KS4KK1Bvc3NpYmxlIHZhbHVlcyBhcmU6PC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnl0Ymwgc3Bhbm5hbWU9ImRlc2NyIiBjb2xzPSIyIj4KKwkJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQ1gyMzQxWF9WSURFT19DSFJPTUFfU1BBVElBTF9GSUxURVJfVFlQRV9PRkY8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ObyBmaWx0ZXI8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19DWDIzNDFYX1ZJREVPX0NIUk9NQV9TUEFUSUFMX0ZJTFRFUl9UWVBFXzFEX0hPUjwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Pk9uZS1kaW1lbnNpb25hbCBob3Jpem9udGFsPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvZW50cnl0Ymw+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93IGlkPSJ2NGwyLW1wZWctY3gyMzQxeC12aWRlby10ZW1wb3JhbC1maWx0ZXItbW9kZSI+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX0NYMjM0MVhfVklERU9fVEVNUE9SQUxfRklMVEVSX01PREU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5lbnVtJm5ic3A7djRsMl9tcGVnX2N4MjM0MXhfdmlkZW9fdGVtcG9yYWxfZmlsdGVyX21vZGU8L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+U2V0cyB0aGUgVGVtcG9yYWwKK0ZpbHRlciBtb2RlIChkZWZhdWx0IDxjb25zdGFudD5NQU5VQUw8L2NvbnN0YW50PikuIFBvc3NpYmxlIHZhbHVlcworYXJlOjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX0NYMjM0MVhfVklERU9fVEVNUE9SQUxfRklMVEVSX01PREVfTUFOVUFMPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2hvb3NlIHRoZSBmaWx0ZXIgbWFudWFsbHk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19DWDIzNDFYX1ZJREVPX1RFTVBPUkFMX0ZJTFRFUl9NT0RFX0FVVE88L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DaG9vc2UgdGhlIGZpbHRlciBhdXRvbWF0aWNhbGx5PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvZW50cnl0Ymw+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19DWDIzNDFYX1ZJREVPX1RFTVBPUkFMX0ZJTFRFUjwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXImbmJzcDsoMC0zMSk8L2VudHJ5PgorCSAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGhlIHNldHRpbmcgZm9yIHRoZQorVGVtcG9yYWwgRmlsdGVyLiAwID0gb2ZmLCAzMSA9IG1heGltdW0uIChEZWZhdWx0IGlzIDggZm9yIGZ1bGwtc2NhbGUKK2NhcHR1cmluZyBhbmQgMCBmb3Igc2NhbGVkIGNhcHR1cmluZy4pPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3cgaWQ9InY0bDItbXBlZy1jeDIzNDF4LXZpZGVvLW1lZGlhbi1maWx0ZXItdHlwZSI+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX0NYMjM0MVhfVklERU9fTUVESUFOX0ZJTFRFUl9UWVBFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+ZW51bSZuYnNwO3Y0bDJfbXBlZ19jeDIzNDF4X3ZpZGVvX21lZGlhbl9maWx0ZXJfdHlwZTwvZW50cnk+CisJICAgICAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5NZWRpYW4gRmlsdGVyIFR5cGUKKyhkZWZhdWx0IDxjb25zdGFudD5PRkY8L2NvbnN0YW50PikuIFBvc3NpYmxlIHZhbHVlcyBhcmU6PC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnl0Ymwgc3Bhbm5hbWU9ImRlc2NyIiBjb2xzPSIyIj4KKwkJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQ1gyMzQxWF9WSURFT19NRURJQU5fRklMVEVSX1RZUEVfT0ZGPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Tm8gZmlsdGVyPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQ1gyMzQxWF9WSURFT19NRURJQU5fRklMVEVSX1RZUEVfSE9SPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+SG9yaXpvbnRhbCBmaWx0ZXI8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19DWDIzNDFYX1ZJREVPX01FRElBTl9GSUxURVJfVFlQRV9WRVJUPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+VmVydGljYWwgZmlsdGVyPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfQ1gyMzQxWF9WSURFT19NRURJQU5fRklMVEVSX1RZUEVfSE9SX1ZFUlQ8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5Ib3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBmaWx0ZXI8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19DWDIzNDFYX1ZJREVPX01FRElBTl9GSUxURVJfVFlQRV9ESUFHPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+RGlhZ29uYWwgZmlsdGVyPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvZW50cnl0Ymw+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19DWDIzNDFYX1ZJREVPX0xVTUFfTUVESUFOX0ZJTFRFUl9CT1RUT008L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyJm5ic3A7KDAtMjU1KTwvZW50cnk+CisJICAgICAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5UaHJlc2hvbGQgYWJvdmUgd2hpY2gKK3RoZSBsdW1pbmFuY2UgbWVkaWFuIGZpbHRlciBpcyBlbmFibGVkIChkZWZhdWx0IDApPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX0NYMjM0MVhfVklERU9fTFVNQV9NRURJQU5fRklMVEVSX1RPUDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXImbmJzcDsoMC0yNTUpPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlRocmVzaG9sZCBiZWxvdyB3aGljaAordGhlIGx1bWluYW5jZSBtZWRpYW4gZmlsdGVyIGlzIGVuYWJsZWQgKGRlZmF1bHQgMjU1KTwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19DWDIzNDFYX1ZJREVPX0NIUk9NQV9NRURJQU5fRklMVEVSX0JPVFRPTTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXImbmJzcDsoMC0yNTUpPC9lbnRyeT4KKwkgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlRocmVzaG9sZCBhYm92ZSB3aGljaAordGhlIGNocm9tYSBtZWRpYW4gZmlsdGVyIGlzIGVuYWJsZWQgKGRlZmF1bHQgMCk8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfQ1gyMzQxWF9WSURFT19DSFJPTUFfTUVESUFOX0ZJTFRFUl9UT1A8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyJm5ic3A7KDAtMjU1KTwvZW50cnk+CisJICAgICAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5UaHJlc2hvbGQgYmVsb3cgd2hpY2gKK3RoZSBjaHJvbWEgbWVkaWFuIGZpbHRlciBpcyBlbmFibGVkIChkZWZhdWx0IDI1NSk8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfQ1gyMzQxWF9TVFJFQU1fSU5TRVJUX05BVl9QQUNLRVRTPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQk8ZW50cnk+Ym9vbGVhbjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5UaGUgQ1gyMzQxWCBNUEVHIGVuY29kZXIKK2NhbiBpbnNlcnQgb25lIGVtcHR5IE1QRUctMiBQRVMgcGFja2V0IGludG8gdGhlIHN0cmVhbSBiZXR3ZWVuIGV2ZXJ5Citmb3VyIHZpZGVvIGZyYW1lcy4gVGhlIHBhY2tldCBzaXplIGlzIDIwNDggYnl0ZXMsIGluY2x1ZGluZyB0aGUKK3BhY2tldF9zdGFydF9jb2RlX3ByZWZpeCBhbmQgc3RyZWFtX2lkIGZpZWxkcy4gVGhlIHN0cmVhbV9pZCBpcyAweEJGCisocHJpdmF0ZSBzdHJlYW0gMikuIFRoZSBwYXlsb2FkIGNvbnNpc3RzIG9mIDB4MDAgYnl0ZXMsIHRvIGJlIGZpbGxlZAoraW4gYnkgdGhlIGFwcGxpY2F0aW9uLiAwID0gZG8gbm90IGluc2VydCwgMSA9IGluc2VydCBwYWNrZXRzLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgIDwvdGJvZHk+CisJICA8L3Rncm91cD4KKwk8L3RhYmxlPgorICAgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+VlBYIENvbnRyb2wgUmVmZXJlbmNlPC90aXRsZT4KKworICAgICAgPHBhcmE+VGhlIFZQWCBjb250cm9scyBpbmNsdWRlIGNvbnRyb2xzIGZvciBlbmNvZGluZyBwYXJhbWV0ZXJzCisgICAgICBvZiBWUHggdmlkZW8gY29kZWMuPC9wYXJhPgorCisgICAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InZweC1jb250cm9sLWlkIj4KKyAgICAgIDx0aXRsZT5WUFggQ29udHJvbCBJRHM8L3RpdGxlPgorCisgICAgICA8dGdyb3VwIGNvbHM9IjQiPgorICAgICAgICA8Y29sc3BlYyBjb2xuYW1lPSJjMSIgY29sd2lkdGg9IjEqIiAvPgorICAgICAgICA8Y29sc3BlYyBjb2xuYW1lPSJjMiIgY29sd2lkdGg9IjYqIiAvPgorICAgICAgICA8Y29sc3BlYyBjb2xuYW1lPSJjMyIgY29sd2lkdGg9IjIqIiAvPgorICAgICAgICA8Y29sc3BlYyBjb2xuYW1lPSJjNCIgY29sd2lkdGg9IjYqIiAvPgorICAgICAgICA8c3BhbnNwZWMgbmFtZXN0PSJjMSIgbmFtZWVuZD0iYzIiIHNwYW5uYW1lPSJpZCIgLz4KKyAgICAgICAgPHNwYW5zcGVjIG5hbWVzdD0iYzIiIG5hbWVlbmQ9ImM0IiBzcGFubmFtZT0iZGVzY3IiIC8+CisgICAgICAgIDx0aGVhZD4KKyAgICAgICAgICA8cm93PgorICAgICAgICAgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCIgYWxpZ249ImxlZnQiPklEPC9lbnRyeT4KKyAgICAgICAgICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+VHlwZTwvZW50cnk+CisgICAgICAgICAgPC9yb3c+PHJvdyByb3dzZXA9IjEiPjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvZW50cnk+CisgICAgICAgICAgPC9yb3c+CisgICAgICAgIDwvdGhlYWQ+CisgICAgICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisgICAgICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdyBpZD0idjRsMi12cHgtbnVtLXBhcnRpdGlvbnMiPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19WUFhfTlVNX1BBUlRJVElPTlM8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT5lbnVtIHY0bDJfdnA4X251bV9wYXJ0aXRpb25zPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlRoZSBudW1iZXIgb2YgdG9rZW4gcGFydGl0aW9ucyB0byB1c2UgaW4gVlA4IGVuY29kZXIuCitQb3NzaWJsZSB2YWx1ZXMgYXJlOjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19WUFhfMV9QQVJUSVRJT048L2NvbnN0YW50PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT4xIGNvZWZmaWNpZW50IHBhcnRpdGlvbjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19WUFhfMl9QQVJUSVRJT05TPC9jb25zdGFudD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MiBjb2VmZmljaWVudCBwYXJ0aXRpb25zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX1ZQWF80X1BBUlRJVElPTlM8L2NvbnN0YW50PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT40IGNvZWZmaWNpZW50IHBhcnRpdGlvbnM8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fVlBYXzhfUEFSVElUSU9OUzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjggY29lZmZpY2llbnQgcGFydGl0aW9uczwvZW50cnk+CisJICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICAgICAgICA8L3Rib2R5PgorCQk8L2VudHJ5dGJsPgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19WUFhfSU1EX0RJU0FCTEVfNFg0PC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+Ym9vbGVhbjwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5TZXR0aW5nIHRoaXMgcHJldmVudHMgaW50cmEgNHg0IG1vZGUgaW4gdGhlIGludHJhIG1vZGUgZGVjaXNpb24uPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdyBpZD0idjRsMi12cHgtbnVtLXJlZi1mcmFtZXMiPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19WUFhfTlVNX1JFRl9GUkFNRVM8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT5lbnVtIHY0bDJfdnA4X251bV9yZWZfZnJhbWVzPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlRoZSBudW1iZXIgb2YgcmVmZXJlbmNlIHBpY3R1cmVzIGZvciBlbmNvZGluZyBQIGZyYW1lcy4KK1Bvc3NpYmxlIHZhbHVlcyBhcmU6PC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnl0Ymwgc3Bhbm5hbWU9ImRlc2NyIiBjb2xzPSIyIj4KKwkJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX1ZQWF8xX1JFRl9GUkFNRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Pkxhc3QgZW5jb2RlZCBmcmFtZSB3aWxsIGJlIHNlYXJjaGVkPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX1ZQWF8yX1JFRl9GUkFNRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlR3byBmcmFtZXMgd2lsbCBiZSBzZWFyY2hlZCBhbW9uZyB0aGUgbGFzdCBlbmNvZGVkIGZyYW1lLCB0aGUgZ29sZGVuIGZyYW1lCithbmQgdGhlIGFsdGVybmF0ZSByZWZlcmVuY2UgKGFsdHJlZikgZnJhbWUuIFRoZSBlbmNvZGVyIGltcGxlbWVudGF0aW9uIHdpbGwgZGVjaWRlIHdoaWNoIHR3byBhcmUgY2hvc2VuLjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19WUFhfM19SRUZfRlJBTUU8L2NvbnN0YW50PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5UaGUgbGFzdCBlbmNvZGVkIGZyYW1lLCB0aGUgZ29sZGVuIGZyYW1lIGFuZCB0aGUgYWx0cmVmIGZyYW1lIHdpbGwgYmUgc2VhcmNoZWQuPC9lbnRyeT4KKwkJICAgIDwvcm93PgorICAgICAgICAgICAgICAgICAgPC90Ym9keT4KKwkJPC9lbnRyeXRibD4KKwkgICAgICA8L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fVlBYX0ZJTFRFUl9MRVZFTDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+SW5kaWNhdGVzIHRoZSBsb29wIGZpbHRlciBsZXZlbC4gVGhlIGFkanVzdG1lbnQgb2YgdGhlIGxvb3AKK2ZpbHRlciBsZXZlbCBpcyBkb25lIHZpYSBhIGRlbHRhIHZhbHVlIGFnYWluc3QgYSBiYXNlbGluZSBsb29wIGZpbHRlciB2YWx1ZS48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19WUFhfRklMVEVSX1NIQVJQTkVTUzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGhpcyBwYXJhbWV0ZXIgYWZmZWN0cyB0aGUgbG9vcCBmaWx0ZXIuIEFueXRoaW5nIGFib3ZlCit6ZXJvIHdlYWtlbnMgdGhlIGRlYmxvY2tpbmcgZWZmZWN0IG9uIHRoZSBsb29wIGZpbHRlci48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19WUFhfR09MREVOX0ZSQU1FX1JFRl9QRVJJT0Q8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlNldHMgdGhlIHJlZnJlc2ggcGVyaW9kIGZvciB0aGUgZ29sZGVuIGZyYW1lLiBUaGUgcGVyaW9kIGlzIGRlZmluZWQKK2luIG51bWJlciBvZiBmcmFtZXMuIEZvciBhIHZhbHVlIG9mICduJywgZXZlcnkgbnRoIGZyYW1lIHN0YXJ0aW5nIGZyb20gdGhlIGZpcnN0IGtleSBmcmFtZSB3aWxsIGJlIHRha2VuIGFzIGEgZ29sZGVuIGZyYW1lLgorRm9yIGVnLiBmb3IgZW5jb2Rpbmcgc2VxdWVuY2Ugb2YgMCwgMSwgMiwgMywgNCwgNSwgNiwgNyB3aGVyZSB0aGUgZ29sZGVuIGZyYW1lIHJlZnJlc2ggcGVyaW9kIGlzIHNldCBhcyA0LCB0aGUgZnJhbWVzCiswLCA0LCA4IGV0YyB3aWxsIGJlIHRha2VuIGFzIHRoZSBnb2xkZW4gZnJhbWVzIGFzIGZyYW1lIDAgaXMgYWx3YXlzIGEga2V5IGZyYW1lLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisKKwkgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgICAgIDxyb3cgaWQ9InY0bDItdnB4LWdvbGRlbi1mcmFtZS1zZWwiPgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19WUFhfR09MREVOX0ZSQU1FX1NFTDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PmVudW0gdjRsMl92cDhfZ29sZGVuX2ZyYW1lX3NlbDwvZW50cnk+CisJICAgICAgPC9yb3c+CisJICAgICAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5TZWxlY3RzIHRoZSBnb2xkZW4gZnJhbWUgZm9yIGVuY29kaW5nLgorUG9zc2libGUgdmFsdWVzIGFyZTo8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+CisJCTxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fVlBYX0dPTERFTl9GUkFNRV9VU0VfUFJFVjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlVzZSB0aGUgKG4tMil0aCBmcmFtZSBhcyBhIGdvbGRlbiBmcmFtZSwgY3VycmVudCBmcmFtZSBpbmRleCBiZWluZyAnbicuPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9NUEVHX1ZJREVPX1ZQWF9HT0xERU5fRlJBTUVfVVNFX1JFRl9QRVJJT0Q8L2NvbnN0YW50PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5Vc2UgdGhlIHByZXZpb3VzIHNwZWNpZmljIGZyYW1lIGluZGljYXRlZCBieQorVjRMMl9DSURfTVBFR19WSURFT19WUFhfR09MREVOX0ZSQU1FX1JFRl9QRVJJT0QgYXMgYSBnb2xkZW4gZnJhbWUuPC9lbnRyeT4KKwkJICAgIDwvcm93PgorICAgICAgICAgICAgICAgICAgPC90Ym9keT4KKwkJPC9lbnRyeXRibD4KKwkgICAgICA8L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fVlBYX01JTl9RUDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+TWluaW11bSBxdWFudGl6YXRpb24gcGFyYW1ldGVyIGZvciBWUDguPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fVlBYX01BWF9RUDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+TWF4aW11bSBxdWFudGl6YXRpb24gcGFyYW1ldGVyIGZvciBWUDguPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fVlBYX0lfRlJBTUVfUVA8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlF1YW50aXphdGlvbiBwYXJhbWV0ZXIgZm9yIGFuIEkgZnJhbWUgZm9yIFZQOC48L2VudHJ5PgorCSAgICAgIDwvcm93PgorCisJICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgICAgICA8cm93PgorCQk8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19WSURFT19WUFhfUF9GUkFNRV9RUDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgICAgIDwvcm93PgorCSAgICAgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+UXVhbnRpemF0aW9uIHBhcmFtZXRlciBmb3IgYSBQIGZyYW1lIGZvciBWUDguPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKworCSAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICAgICAgPHJvdz4KKwkJPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX01QRUdfVklERU9fVlBYX1BST0ZJTEU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCTxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgICAgICA8L3Jvdz4KKwkgICAgICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlNlbGVjdCB0aGUgZGVzaXJlZCBwcm9maWxlIGZvciBWUHggZW5jb2Rlci4KK0FjY2VwdGFibGUgdmFsdWVzIGFyZSAwLCAxLCAyIGFuZCAzIGNvcnJlc3BvbmRpbmcgdG8gZW5jb2RlciBwcm9maWxlcyAwLCAxLCAyIGFuZCAzLjwvZW50cnk+CisJICAgICAgPC9yb3c+CisKKyAgICAgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorICAgICAgICA8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgICA8L3RhYmxlPgorCisgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImNhbWVyYS1jb250cm9scyI+CisgICAgICA8dGl0bGU+Q2FtZXJhIENvbnRyb2wgUmVmZXJlbmNlPC90aXRsZT4KKworICAgICAgPHBhcmE+VGhlIENhbWVyYSBjbGFzcyBpbmNsdWRlcyBjb250cm9scyBmb3IgbWVjaGFuaWNhbCAob3IKK2VxdWl2YWxlbnQgZGlnaXRhbCkgZmVhdHVyZXMgb2YgYSBkZXZpY2Ugc3VjaCBhcyBjb250cm9sbGFibGUgbGVuc2VzCitvciBzZW5zb3JzLjwvcGFyYT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iY2FtZXJhLWNvbnRyb2wtaWQiPgorICAgICAgPHRpdGxlPkNhbWVyYSBDb250cm9sIElEczwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjQiPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMxIiBjb2x3aWR0aD0iMSoiIC8+CisJPGNvbHNwZWMgY29sbmFtZT0iYzIiIGNvbHdpZHRoPSI2KiIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMyIgY29sd2lkdGg9IjIqIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImM0IiBjb2x3aWR0aD0iNioiIC8+CisJPHNwYW5zcGVjIG5hbWVzdD0iYzEiIG5hbWVlbmQ9ImMyIiBzcGFubmFtZT0iaWQiIC8+CisJPHNwYW5zcGVjIG5hbWVzdD0iYzIiIG5hbWVlbmQ9ImM0IiBzcGFubmFtZT0iZGVzY3IiIC8+CisJPHRoZWFkPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCIgYWxpZ249ImxlZnQiPklEPC9lbnRyeT4KKwkgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5UeXBlPC9lbnRyeT4KKwkgIDwvcm93Pjxyb3cgcm93c2VwPSIxIj48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L2VudHJ5PgorCSAgPC9yb3c+CisJPC90aGVhZD4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9DQU1FUkFfQ0xBU1M8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5jbGFzczwvZW50cnk+CisJICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlRoZSBDYW1lcmEgY2xhc3MKK2Rlc2NyaXB0b3IuIENhbGxpbmcgJlZJRElPQy1RVUVSWUNUUkw7IGZvciB0aGlzIGNvbnRyb2wgd2lsbCByZXR1cm4gYQorZGVzY3JpcHRpb24gb2YgdGhpcyBjb250cm9sIGNsYXNzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisKKwkgIDxyb3cgaWQ9InY0bDItZXhwb3N1cmUtYXV0by10eXBlIj4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0VYUE9TVVJFX0FVVE88L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5lbnVtJm5ic3A7djRsMl9leHBvc3VyZV9hdXRvX3R5cGU8L2VudHJ5PgorCSAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5FbmFibGVzIGF1dG9tYXRpYworYWRqdXN0bWVudHMgb2YgdGhlIGV4cG9zdXJlIHRpbWUgYW5kL29yIGlyaXMgYXBlcnR1cmUuIFRoZSBlZmZlY3Qgb2YKK21hbnVhbCBjaGFuZ2VzIG9mIHRoZSBleHBvc3VyZSB0aW1lIG9yIGlyaXMgYXBlcnR1cmUgd2hpbGUgdGhlc2UKK2ZlYXR1cmVzIGFyZSBlbmFibGVkIGlzIHVuZGVmaW5lZCwgZHJpdmVycyBzaG91bGQgaWdub3JlIHN1Y2gKK3JlcXVlc3RzLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCSAgICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0VYUE9TVVJFX0FVVE88L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5BdXRvbWF0aWMgZXhwb3N1cmUgdGltZSwgYXV0b21hdGljIGlyaXMKK2FwZXJ0dXJlLjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9FWFBPU1VSRV9NQU5VQUw8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgPGVudHJ5Pk1hbnVhbCBleHBvc3VyZSB0aW1lLCBtYW51YWwgaXJpcy48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRVhQT1NVUkVfU0hVVFRFUl9QUklPUklUWTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+TWFudWFsIGV4cG9zdXJlIHRpbWUsIGF1dG8gaXJpcy48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRVhQT1NVUkVfQVBFUlRVUkVfUFJJT1JJVFk8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgPGVudHJ5PkF1dG8gZXhwb3N1cmUgdGltZSwgbWFudWFsIGlyaXMuPC9lbnRyeT4KKwkJPC9yb3c+CisJICAgICAgPC90Ym9keT4KKwkgICAgPC9lbnRyeXRibD4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKworCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0VYUE9TVVJFX0FCU09MVVRFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkRldGVybWluZXMgdGhlIGV4cG9zdXJlCit0aW1lIG9mIHRoZSBjYW1lcmEgc2Vuc29yLiBUaGUgZXhwb3N1cmUgdGltZSBpcyBsaW1pdGVkIGJ5IHRoZSBmcmFtZQoraW50ZXJ2YWwuIERyaXZlcnMgc2hvdWxkIGludGVycHJldCB0aGUgdmFsdWVzIGFzIDEwMCAmbWljcm87cyB1bml0cywKK3doZXJlIHRoZSB2YWx1ZSAxIHN0YW5kcyBmb3IgMS8xMDAwMHRoIG9mIGEgc2Vjb25kLCAxMDAwMCBmb3IgMSBzZWNvbmQKK2FuZCAxMDAwMDAgZm9yIDEwIHNlY29uZHMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKworCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0VYUE9TVVJFX0FVVE9fUFJJT1JJVFk8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+V2hlbgorPGNvbnN0YW50PlY0TDJfQ0lEX0VYUE9TVVJFX0FVVE88L2NvbnN0YW50PiBpcyBzZXQgdG8KKzxjb25zdGFudD5BVVRPPC9jb25zdGFudD4gb3IgPGNvbnN0YW50PkFQRVJUVVJFX1BSSU9SSVRZPC9jb25zdGFudD4sCit0aGlzIGNvbnRyb2wgZGV0ZXJtaW5lcyBpZiB0aGUgZGV2aWNlIG1heSBkeW5hbWljYWxseSB2YXJ5IHRoZSBmcmFtZQorcmF0ZS4gQnkgZGVmYXVsdCB0aGlzIGZlYXR1cmUgaXMgZGlzYWJsZWQgKDApIGFuZCB0aGUgZnJhbWUgcmF0ZSBtdXN0CityZW1haW4gY29uc3RhbnQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKworCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0VYUE9TVVJFX0JJQVM8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyIG1lbnU8L2VudHJ5PgorCSAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj4gRGV0ZXJtaW5lcyB0aGUgYXV0b21hdGljCitleHBvc3VyZSBjb21wZW5zYXRpb24sIGl0IGlzIGVmZmVjdGl2ZSBvbmx5IHdoZW4gPGNvbnN0YW50PlY0TDJfQ0lEX0VYUE9TVVJFX0FVVE88L2NvbnN0YW50PgorY29udHJvbCBpcyBzZXQgdG8gPGNvbnN0YW50PkFVVE88L2NvbnN0YW50PiwgPGNvbnN0YW50PlNIVVRURVJfUFJJT1JJVFkgPC9jb25zdGFudD4KK29yIDxjb25zdGFudD5BUEVSVFVSRV9QUklPUklUWTwvY29uc3RhbnQ+LgorSXQgaXMgZXhwcmVzc2VkIGluIHRlcm1zIG9mIEVWLCBkcml2ZXJzIHNob3VsZCBpbnRlcnByZXQgdGhlIHZhbHVlcyBhcyAwLjAwMSBFVgordW5pdHMsIHdoZXJlIHRoZSB2YWx1ZSAxMDAwIHN0YW5kcyBmb3IgKzEgRVYuCis8cGFyYT5JbmNyZWFzaW5nIHRoZSBleHBvc3VyZSBjb21wZW5zYXRpb24gdmFsdWUgaXMgZXF1aXZhbGVudCB0byBkZWNyZWFzaW5nCit0aGUgZXhwb3N1cmUgdmFsdWUgKEVWKSBhbmQgd2lsbCBpbmNyZWFzZSB0aGUgYW1vdW50IG9mIGxpZ2h0IGF0IHRoZSBpbWFnZQorc2Vuc29yLiBUaGUgY2FtZXJhIHBlcmZvcm1zIHRoZSBleHBvc3VyZSBjb21wZW5zYXRpb24gYnkgYWRqdXN0aW5nIGFic29sdXRlCitleHBvc3VyZSB0aW1lIGFuZC9vciBhcGVydHVyZS48L3BhcmE+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKworCSAgPHJvdyBpZD0idjRsMi1leHBvc3VyZS1tZXRlcmluZyI+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9FWFBPU1VSRV9NRVRFUklORzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5PmVudW0mbmJzcDt2NGwyX2V4cG9zdXJlX21ldGVyaW5nPC9lbnRyeT4KKwkgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+RGV0ZXJtaW5lcyBob3cgdGhlIGNhbWVyYSBtZWFzdXJlcwordGhlIGFtb3VudCBvZiBsaWdodCBhdmFpbGFibGUgZm9yIHRoZSBmcmFtZSBleHBvc3VyZS4gUG9zc2libGUgdmFsdWVzIGFyZTo8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnl0Ymwgc3Bhbm5hbWU9ImRlc2NyIiBjb2xzPSIyIj4KKwkgICAgICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQk8cm93PgorCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9FWFBPU1VSRV9NRVRFUklOR19BVkVSQUdFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgIDxlbnRyeT5Vc2UgdGhlIGxpZ2h0IGluZm9ybWF0aW9uIGNvbWluZyBmcm9tIHRoZSBlbnRpcmUgZnJhbWUKK2FuZCBhdmVyYWdlIGdpdmluZyBubyB3ZWlnaHRpbmcgdG8gYW55IHBhcnRpY3VsYXIgcG9ydGlvbiBvZiB0aGUgbWV0ZXJlZCBhcmVhLgorCQkgIDwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9FWFBPU1VSRV9NRVRFUklOR19DRU5URVJfV0VJR0hURUQ8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgPGVudHJ5PkF2ZXJhZ2UgdGhlIGxpZ2h0IGluZm9ybWF0aW9uIGNvbWluZyBmcm9tIHRoZSBlbnRpcmUgZnJhbWUKK2dpdmluZyBwcmlvcml0eSB0byB0aGUgY2VudGVyIG9mIHRoZSBtZXRlcmVkIGFyZWEuPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0VYUE9TVVJFX01FVEVSSU5HX1NQT1Q8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgPGVudHJ5Pk1lYXN1cmUgb25seSB2ZXJ5IHNtYWxsIGFyZWEgYXQgdGhlIGNlbnRlciBvZiB0aGUgZnJhbWUuPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0VYUE9TVVJFX01FVEVSSU5HX01BVFJJWDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+QSBtdWx0aS16b25lIG1ldGVyaW5nLiBUaGUgbGlnaHQgaW50ZW5zaXR5IGlzIG1lYXN1cmVkCitpbiBzZXZlcmFsIHBvaW50cyBvZiB0aGUgZnJhbWUgYW5kIHRoZSByZXN1bHRzIGFyZSBjb21iaW5lZC4gVGhlCithbGdvcml0aG0gb2YgdGhlIHpvbmVzIHNlbGVjdGlvbiBhbmQgdGhlaXIgc2lnbmlmaWNhbmNlIGluIGNhbGN1bGF0aW5nIHRoZQorZmluYWwgdmFsdWUgaXMgZGV2aWNlIGRlcGVuZGVudC48L2VudHJ5PgorCQk8L3Jvdz4KKwkgICAgICA8L3Rib2R5PgorCSAgICA8L2VudHJ5dGJsPgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfUEFOX1JFTEFUSVZFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlRoaXMgY29udHJvbCB0dXJucyB0aGUKK2NhbWVyYSBob3Jpem9udGFsbHkgYnkgdGhlIHNwZWNpZmllZCBhbW91bnQuIFRoZSB1bml0IGlzIHVuZGVmaW5lZC4gQQorcG9zaXRpdmUgdmFsdWUgbW92ZXMgdGhlIGNhbWVyYSB0byB0aGUgcmlnaHQgKGNsb2Nrd2lzZSB3aGVuIHZpZXdlZAorZnJvbSBhYm92ZSksIGEgbmVnYXRpdmUgdmFsdWUgdG8gdGhlIGxlZnQuIEEgdmFsdWUgb2YgemVybyBkb2VzIG5vdAorY2F1c2UgbW90aW9uLiBUaGlzIGlzIGEgd3JpdGUtb25seSBjb250cm9sLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisKKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9USUxUX1JFTEFUSVZFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlRoaXMgY29udHJvbCB0dXJucyB0aGUKK2NhbWVyYSB2ZXJ0aWNhbGx5IGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50LiBUaGUgdW5pdCBpcyB1bmRlZmluZWQuIEEKK3Bvc2l0aXZlIHZhbHVlIG1vdmVzIHRoZSBjYW1lcmEgdXAsIGEgbmVnYXRpdmUgdmFsdWUgZG93bi4gQSB2YWx1ZSBvZgoremVybyBkb2VzIG5vdCBjYXVzZSBtb3Rpb24uIFRoaXMgaXMgYSB3cml0ZS1vbmx5IGNvbnRyb2wuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKworCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX1BBTl9SRVNFVDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5PmJ1dHRvbjwvZW50cnk+CisJICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPldoZW4gdGhpcyBjb250cm9sIGlzIHNldCwKK3RoZSBjYW1lcmEgbW92ZXMgaG9yaXpvbnRhbGx5IHRvIHRoZSBkZWZhdWx0IHBvc2l0aW9uLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisKKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9USUxUX1JFU0VUPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+YnV0dG9uPC9lbnRyeT4KKwkgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+V2hlbiB0aGlzIGNvbnRyb2wgaXMgc2V0LAordGhlIGNhbWVyYSBtb3ZlcyB2ZXJ0aWNhbGx5IHRvIHRoZSBkZWZhdWx0IHBvc2l0aW9uLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisKKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9QQU5fQUJTT0xVVEU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGhpcyBjb250cm9sCit0dXJucyB0aGUgY2FtZXJhIGhvcml6b250YWxseSB0byB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLiBQb3NpdGl2ZQordmFsdWVzIG1vdmUgdGhlIGNhbWVyYSB0byB0aGUgcmlnaHQgKGNsb2Nrd2lzZSB3aGVuIHZpZXdlZCBmcm9tIGFib3ZlKSwKK25lZ2F0aXZlIHZhbHVlcyB0byB0aGUgbGVmdC4gRHJpdmVycyBzaG91bGQgaW50ZXJwcmV0IHRoZSB2YWx1ZXMgYXMgYXJjCitzZWNvbmRzLCB3aXRoIHZhbGlkIHZhbHVlcyBiZXR3ZWVuIC0xODAgKiAzNjAwIGFuZCArMTgwICogMzYwMAoraW5jbHVzaXZlLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisKKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9USUxUX0FCU09MVVRFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlRoaXMgY29udHJvbAordHVybnMgdGhlIGNhbWVyYSB2ZXJ0aWNhbGx5IHRvIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uIFBvc2l0aXZlIHZhbHVlcworbW92ZSB0aGUgY2FtZXJhIHVwLCBuZWdhdGl2ZSB2YWx1ZXMgZG93bi4gRHJpdmVycyBzaG91bGQgaW50ZXJwcmV0IHRoZQordmFsdWVzIGFzIGFyYyBzZWNvbmRzLCB3aXRoIHZhbGlkIHZhbHVlcyBiZXR3ZWVuIC0xODAgKiAzNjAwIGFuZCArMTgwCisqIDM2MDAgaW5jbHVzaXZlLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisKKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9GT0NVU19BQlNPTFVURTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5UaGlzIGNvbnRyb2wgc2V0cyB0aGUKK2ZvY2FsIHBvaW50IG9mIHRoZSBjYW1lcmEgdG8gdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4gVGhlIHVuaXQgaXMKK3VuZGVmaW5lZC4gUG9zaXRpdmUgdmFsdWVzIHNldCB0aGUgZm9jdXMgY2xvc2VyIHRvIHRoZSBjYW1lcmEsCituZWdhdGl2ZSB2YWx1ZXMgdG93YXJkcyBpbmZpbml0eS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfRk9DVVNfUkVMQVRJVkU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGhpcyBjb250cm9sIG1vdmVzIHRoZQorZm9jYWwgcG9pbnQgb2YgdGhlIGNhbWVyYSBieSB0aGUgc3BlY2lmaWVkIGFtb3VudC4gVGhlIHVuaXQgaXMKK3VuZGVmaW5lZC4gUG9zaXRpdmUgdmFsdWVzIG1vdmUgdGhlIGZvY3VzIGNsb3NlciB0byB0aGUgY2FtZXJhLAorbmVnYXRpdmUgdmFsdWVzIHRvd2FyZHMgaW5maW5pdHkuIFRoaXMgaXMgYSB3cml0ZS1vbmx5IGNvbnRyb2wuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKworCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0ZPQ1VTX0FVVE88L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+RW5hYmxlcyBjb250aW51b3VzIGF1dG9tYXRpYworZm9jdXMgYWRqdXN0bWVudHMuIFRoZSBlZmZlY3Qgb2YgbWFudWFsIGZvY3VzIGFkanVzdG1lbnRzIHdoaWxlIHRoaXMgZmVhdHVyZQoraXMgZW5hYmxlZCBpcyB1bmRlZmluZWQsIGRyaXZlcnMgc2hvdWxkIGlnbm9yZSBzdWNoIHJlcXVlc3RzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisKKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9BVVRPX0ZPQ1VTX1NUQVJUPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+YnV0dG9uPC9lbnRyeT4KKwkgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+U3RhcnRzIHNpbmdsZSBhdXRvIGZvY3VzIHByb2Nlc3MuCitUaGUgZWZmZWN0IG9mIHNldHRpbmcgdGhpcyBjb250cm9sIHdoZW4gPGNvbnN0YW50PlY0TDJfQ0lEX0ZPQ1VTX0FVVE88L2NvbnN0YW50PgoraXMgc2V0IHRvIDxjb25zdGFudD5UUlVFPC9jb25zdGFudD4gKDEpIGlzIHVuZGVmaW5lZCwgZHJpdmVycyBzaG91bGQgaWdub3JlCitzdWNoIHJlcXVlc3RzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisKKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9BVVRPX0ZPQ1VTX1NUT1A8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5idXR0b248L2VudHJ5PgorCSAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5BYm9ydHMgYXV0b21hdGljIGZvY3VzaW5nCitzdGFydGVkIHdpdGggPGNvbnN0YW50PlY0TDJfQ0lEX0FVVE9fRk9DVVNfU1RBUlQ8L2NvbnN0YW50PiBjb250cm9sLiBJdCBpcworZWZmZWN0aXZlIG9ubHkgd2hlbiB0aGUgY29udGludW91cyBhdXRvZm9jdXMgaXMgZGlzYWJsZWQsIHRoYXQgaXMgd2hlbgorPGNvbnN0YW50PlY0TDJfQ0lEX0ZPQ1VTX0FVVE88L2NvbnN0YW50PiBjb250cm9sIGlzIHNldCB0byA8Y29uc3RhbnQ+RkFMU0UKKzwvY29uc3RhbnQ+ICgwKS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCisJICA8cm93IGlkPSJ2NGwyLWF1dG8tZm9jdXMtc3RhdHVzIj4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+CisJICAgICAgPGNvbnN0YW50PlY0TDJfQ0lEX0FVVE9fRk9DVVNfU1RBVFVTPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+Yml0bWFzazwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGhlIGF1dG9tYXRpYyBmb2N1cyBzdGF0dXMuIFRoaXMgaXMgYSByZWFkLW9ubHkKKwkgIGNvbnRyb2wuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJICAgICAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQVVUT19GT0NVU19TVEFUVVNfSURMRTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+QXV0b21hdGljIGZvY3VzIGlzIG5vdCBhY3RpdmUuPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0FVVE9fRk9DVVNfU1RBVFVTX0JVU1k8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgPGVudHJ5PkF1dG9tYXRpYyBmb2N1c2luZyBpcyBpbiBwcm9ncmVzcy48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQVVUT19GT0NVU19TVEFUVVNfUkVBQ0hFRDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+Rm9jdXMgaGFzIGJlZW4gcmVhY2hlZC48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQVVUT19GT0NVU19TVEFUVVNfRkFJTEVEPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgIDxlbnRyeT5BdXRvbWF0aWMgZm9jdXMgaGFzIGZhaWxlZCwgdGhlIGRyaXZlciB3aWxsIG5vdAorCQkgIHRyYW5zaXRpb24gZnJvbSB0aGlzIHN0YXRlIHVudGlsIGFub3RoZXIgYWN0aW9uIGlzCisJCSAgcGVyZm9ybWVkIGJ5IGFuIGFwcGxpY2F0aW9uLjwvZW50cnk+CisJCTwvcm93PgorCSAgICAgIDwvdGJvZHk+CisJICAgIDwvZW50cnl0Ymw+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+CitTZXR0aW5nIDxjb25zdGFudD5WNEwyX0xPQ0tfRk9DVVM8L2NvbnN0YW50PiBsb2NrIGJpdCBvZiB0aGUgPGNvbnN0YW50PlY0TDJfQ0lEXzNBX0xPQ0sKKzwvY29uc3RhbnQ+IGNvbnRyb2wgbWF5IHN0b3AgdXBkYXRlcyBvZiB0aGUgPGNvbnN0YW50PlY0TDJfQ0lEX0FVVE9fRk9DVVNfU1RBVFVTPC9jb25zdGFudD4KK2NvbnRyb2wgdmFsdWUuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKworCSAgPHJvdyBpZD0idjRsMi1hdXRvLWZvY3VzLXJhbmdlIj4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+CisJICAgICAgPGNvbnN0YW50PlY0TDJfQ0lEX0FVVE9fRk9DVVNfUkFOR0U8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5lbnVtJm5ic3A7djRsMl9hdXRvX2ZvY3VzX3JhbmdlPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5EZXRlcm1pbmVzIGF1dG8gZm9jdXMgZGlzdGFuY2UgcmFuZ2UKK2ZvciB3aGljaCBsZW5zIG1heSBiZSBhZGp1c3RlZC4gPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJICAgICAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQVVUT19GT0NVU19SQU5HRV9BVVRPPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgIDxlbnRyeT5UaGUgY2FtZXJhIGF1dG9tYXRpY2FsbHkgc2VsZWN0cyB0aGUgZm9jdXMgcmFuZ2UuPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0FVVE9fRk9DVVNfUkFOR0VfTk9STUFMPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgIDxlbnRyeT5Ob3JtYWwgZGlzdGFuY2UgcmFuZ2UsIGxpbWl0ZWQgZm9yIGJlc3QgYXV0b21hdGljIGZvY3VzCitwZXJmb3JtYW5jZS48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQVVUT19GT0NVU19SQU5HRV9NQUNSTzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+TWFjcm8gKGNsb3NlLXVwKSBhdXRvIGZvY3VzLiBUaGUgY2FtZXJhIHdpbGwKK3VzZSBpdHMgbWluaW11bSBwb3NzaWJsZSBkaXN0YW5jZSBmb3IgYXV0byBmb2N1cy48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQVVUT19GT0NVU19SQU5HRV9JTkZJTklUWTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+VGhlIGxlbnMgaXMgc2V0IHRvIGZvY3VzIG9uIGFuIG9iamVjdCBhdCBpbmZpbml0ZSBkaXN0YW5jZS48L2VudHJ5PgorCQk8L3Jvdz4KKwkgICAgICA8L3Rib2R5PgorCSAgICA8L2VudHJ5dGJsPgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfWk9PTV9BQlNPTFVURTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5TcGVjaWZ5IHRoZSBvYmplY3RpdmUgbGVucworZm9jYWwgbGVuZ3RoIGFzIGFuIGFic29sdXRlIHZhbHVlLiBUaGUgem9vbSB1bml0IGlzIGRyaXZlci1zcGVjaWZpYyBhbmQgaXRzCit2YWx1ZSBzaG91bGQgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisKKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9aT09NX1JFTEFUSVZFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlNwZWNpZnkgdGhlIG9iamVjdGl2ZSBsZW5zCitmb2NhbCBsZW5ndGggcmVsYXRpdmVseSB0byB0aGUgY3VycmVudCB2YWx1ZS4gUG9zaXRpdmUgdmFsdWVzIG1vdmUgdGhlIHpvb20KK2xlbnMgZ3JvdXAgdG93YXJkcyB0aGUgdGVsZXBob3RvIGRpcmVjdGlvbiwgbmVnYXRpdmUgdmFsdWVzIHRvd2FyZHMgdGhlCit3aWRlLWFuZ2xlIGRpcmVjdGlvbi4gVGhlIHpvb20gdW5pdCBpcyBkcml2ZXItc3BlY2lmaWMuIFRoaXMgaXMgYSB3cml0ZS1vbmx5IGNvbnRyb2wuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKworCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX1pPT01fQ09OVElOVU9VUzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5Nb3ZlIHRoZSBvYmplY3RpdmUgbGVucyBncm91cAorYXQgdGhlIHNwZWNpZmllZCBzcGVlZCB1bnRpbCBpdCByZWFjaGVzIHBoeXNpY2FsIGRldmljZSBsaW1pdHMgb3IgdW50aWwgYW4KK2V4cGxpY2l0IHJlcXVlc3QgdG8gc3RvcCB0aGUgbW92ZW1lbnQuIEEgcG9zaXRpdmUgdmFsdWUgbW92ZXMgdGhlIHpvb20gbGVucworZ3JvdXAgdG93YXJkcyB0aGUgdGVsZXBob3RvIGRpcmVjdGlvbi4gQSB2YWx1ZSBvZiB6ZXJvIHN0b3BzIHRoZSB6b29tIGxlbnMKK2dyb3VwIG1vdmVtZW50LiBBIG5lZ2F0aXZlIHZhbHVlIG1vdmVzIHRoZSB6b29tIGxlbnMgZ3JvdXAgdG93YXJkcyB0aGUKK3dpZGUtYW5nbGUgZGlyZWN0aW9uLiBUaGUgem9vbSBzcGVlZCB1bml0IGlzIGRyaXZlci1zcGVjaWZpYy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfSVJJU19BQlNPTFVURTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5UaGlzIGNvbnRyb2wgc2V0cyB0aGUKK2NhbWVyYSdzIGFwZXJ0dXJlIHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUuIFRoZSB1bml0IGlzIHVuZGVmaW5lZC4KK0xhcmdlciB2YWx1ZXMgb3BlbiB0aGUgaXJpcyB3aWRlciwgc21hbGxlciB2YWx1ZXMgY2xvc2UgaXQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKworCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0lSSVNfUkVMQVRJVkU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGhpcyBjb250cm9sIG1vZGlmaWVzIHRoZQorY2FtZXJhJ3MgYXBlcnR1cmUgYnkgdGhlIHNwZWNpZmllZCBhbW91bnQuIFRoZSB1bml0IGlzIHVuZGVmaW5lZC4KK1Bvc2l0aXZlIHZhbHVlcyBvcGVuIHRoZSBpcmlzIG9uZSBzdGVwIGZ1cnRoZXIsIG5lZ2F0aXZlIHZhbHVlcyBjbG9zZQoraXQgb25lIHN0ZXAgZnVydGhlci4gVGhpcyBpcyBhIHdyaXRlLW9ubHkgY29udHJvbC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfUFJJVkFDWTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5PmJvb2xlYW48L2VudHJ5PgorCSAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5QcmV2ZW50IHZpZGVvIGZyb20gYmVpbmcgYWNxdWlyZWQKK2J5IHRoZSBjYW1lcmEuIFdoZW4gdGhpcyBjb250cm9sIGlzIHNldCB0byA8Y29uc3RhbnQ+VFJVRTwvY29uc3RhbnQ+ICgxKSwgbm8KK2ltYWdlIGNhbiBiZSBjYXB0dXJlZCBieSB0aGUgY2FtZXJhLiBDb21tb24gbWVhbnMgdG8gZW5mb3JjZSBwcml2YWN5IGFyZQorbWVjaGFuaWNhbCBvYnR1cmF0aW9uIG9mIHRoZSBzZW5zb3IgYW5kIGZpcm13YXJlIGltYWdlIHByb2Nlc3NpbmcsIGJ1dCB0aGUKK2RldmljZSBpcyBub3QgcmVzdHJpY3RlZCB0byB0aGVzZSBtZXRob2RzLiBEZXZpY2VzIHRoYXQgaW1wbGVtZW50IHRoZSBwcml2YWN5Citjb250cm9sIG11c3Qgc3VwcG9ydCByZWFkIGFjY2VzcyBhbmQgbWF5IHN1cHBvcnQgd3JpdGUgYWNjZXNzLjwvZW50cnk+CisJICA8L3Jvdz4KKworCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0JBTkRfU1RPUF9GSUxURVI8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+U3dpdGNoIHRoZSBiYW5kLXN0b3AgZmlsdGVyIG9mIGEKK2NhbWVyYSBzZW5zb3Igb24gb3Igb2ZmLCBvciBzcGVjaWZ5IGl0cyBzdHJlbmd0aC4gU3VjaCBiYW5kLXN0b3AgZmlsdGVycyBjYW4KK2JlIHVzZWQsIGZvciBleGFtcGxlLCB0byBmaWx0ZXIgb3V0IHRoZSBmbHVvcmVzY2VudCBsaWdodCBjb21wb25lbnQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKworCSAgPHJvdyBpZD0idjRsMi1hdXRvLW4tcHJlc2V0LXdoaXRlLWJhbGFuY2UiPgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfQVVUT19OX1BSRVNFVF9XSElURV9CQUxBTkNFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+ZW51bSZuYnNwO3Y0bDJfYXV0b19uX3ByZXNldF93aGl0ZV9iYWxhbmNlPC9lbnRyeT4KKwkgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+U2V0cyB3aGl0ZSBiYWxhbmNlIHRvIGF1dG9tYXRpYywKK21hbnVhbCBvciBhIHByZXNldC4gVGhlIHByZXNldHMgZGV0ZXJtaW5lIGNvbG9yIHRlbXBlcmF0dXJlIG9mIHRoZSBsaWdodCBhcworYSBoaW50IHRvIHRoZSBjYW1lcmEgZm9yIHdoaXRlIGJhbGFuY2UgYWRqdXN0bWVudHMgcmVzdWx0aW5nIGluIG1vc3QgYWNjdXJhdGUKK2NvbG9yIHJlcHJlc2VudGF0aW9uLiBUaGUgZm9sbG93aW5nIHdoaXRlIGJhbGFuY2UgcHJlc2V0cyBhcmUgbGlzdGVkIGluIG9yZGVyCitvZiBpbmNyZWFzaW5nIGNvbG9yIHRlbXBlcmF0dXJlLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCSAgICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1dISVRFX0JBTEFOQ0VfTUFOVUFMPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgIDxlbnRyeT5NYW51YWwgd2hpdGUgYmFsYW5jZS48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfV0hJVEVfQkFMQU5DRV9BVVRPPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgIDxlbnRyeT5BdXRvbWF0aWMgd2hpdGUgYmFsYW5jZSBhZGp1c3RtZW50cy48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfV0hJVEVfQkFMQU5DRV9JTkNBTkRFU0NFTlQ8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgPGVudHJ5PldoaXRlIGJhbGFuY2Ugc2V0dGluZyBmb3IgaW5jYW5kZXNjZW50ICh0dW5nc3RlbikgbGlnaHRpbmcuCitJdCBnZW5lcmFsbHkgY29vbHMgZG93biB0aGUgY29sb3JzIGFuZCBjb3JyZXNwb25kcyBhcHByb3hpbWF0ZWx5IHRvIDI1MDAuLi4zNTAwIEsKK2NvbG9yIHRlbXBlcmF0dXJlIHJhbmdlLjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9XSElURV9CQUxBTkNFX0ZMVU9SRVNDRU5UPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgIDxlbnRyeT5XaGl0ZSBiYWxhbmNlIHByZXNldCBmb3IgZmx1b3Jlc2NlbnQgbGlnaHRpbmcuCitJdCBjb3JyZXNwb25kcyBhcHByb3hpbWF0ZWx5IHRvIDQwMDAuLi41MDAwIEsgY29sb3IgdGVtcGVyYXR1cmUuPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1dISVRFX0JBTEFOQ0VfRkxVT1JFU0NFTlRfSDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+V2l0aCB0aGlzIHNldHRpbmcgdGhlIGNhbWVyYSB3aWxsIGNvbXBlbnNhdGUgZm9yCitmbHVvcmVzY2VudCBIIGxpZ2h0aW5nLjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9XSElURV9CQUxBTkNFX0hPUklaT048L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgPGVudHJ5PldoaXRlIGJhbGFuY2Ugc2V0dGluZyBmb3IgaG9yaXpvbiBkYXlsaWdodC4KK0l0IGNvcnJlc3BvbmRzIGFwcHJveGltYXRlbHkgdG8gNTAwMCBLIGNvbG9yIHRlbXBlcmF0dXJlLjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9XSElURV9CQUxBTkNFX0RBWUxJR0hUPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgIDxlbnRyeT5XaGl0ZSBiYWxhbmNlIHByZXNldCBmb3IgZGF5bGlnaHQgKHdpdGggY2xlYXIgc2t5KS4KK0l0IGNvcnJlc3BvbmRzIGFwcHJveGltYXRlbHkgdG8gNTAwMC4uLjY1MDAgSyBjb2xvciB0ZW1wZXJhdHVyZS48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfV0hJVEVfQkFMQU5DRV9GTEFTSDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+V2l0aCB0aGlzIHNldHRpbmcgdGhlIGNhbWVyYSB3aWxsIGNvbXBlbnNhdGUgZm9yIHRoZSBmbGFzaAorbGlnaHQuIEl0IHNsaWdodGx5IHdhcm1zIHVwIHRoZSBjb2xvcnMgYW5kIGNvcnJlc3BvbmRzIHJvdWdobHkgdG8gNTAwMC4uLjU1MDAgSworY29sb3IgdGVtcGVyYXR1cmUuPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1dISVRFX0JBTEFOQ0VfQ0xPVURZPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgIDxlbnRyeT5XaGl0ZSBiYWxhbmNlIHByZXNldCBmb3IgbW9kZXJhdGVseSBvdmVyY2FzdCBza3kuCitUaGlzIG9wdGlvbiBjb3JyZXNwb25kcyBhcHByb3hpbWF0ZWx5IHRvIDY1MDAuLi44MDAwIEsgY29sb3IgdGVtcGVyYXR1cmUKK3JhbmdlLjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9XSElURV9CQUxBTkNFX1NIQURFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgIDxlbnRyeT5XaGl0ZSBiYWxhbmNlIHByZXNldCBmb3Igc2hhZGUgb3IgaGVhdmlseSBvdmVyY2FzdAorc2t5LiBJdCBjb3JyZXNwb25kcyBhcHByb3hpbWF0ZWx5IHRvIDkwMDAuLi4xMDAwMCBLIGNvbG9yIHRlbXBlcmF0dXJlLgorPC9lbnRyeT4KKwkJPC9yb3c+CisJICAgICAgPC90Ym9keT4KKwkgICAgPC9lbnRyeXRibD4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKworCSAgPHJvdyBpZD0idjRsMi13aWRlLWR5bmFtaWMtcmFuZ2UiPgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfV0lERV9EWU5BTUlDX1JBTkdFPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Ym9vbGVhbjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIGNhbWVyYSdzIHdpZGUgZHluYW1pYworcmFuZ2UgZmVhdHVyZS4gVGhpcyBmZWF0dXJlIGFsbG93cyB0byBvYnRhaW4gY2xlYXIgaW1hZ2VzIGluIHNpdHVhdGlvbnMgd2hlcmUKK2ludGVuc2l0eSBvZiB0aGUgaWxsdW1pbmF0aW9uIHZhcmllcyBzaWduaWZpY2FudGx5IHRocm91Z2hvdXQgdGhlIHNjZW5lLCBpLmUuCit0aGVyZSBhcmUgc2ltdWx0YW5lb3VzbHkgdmVyeSBkYXJrIGFuZCB2ZXJ5IGJyaWdodCBhcmVhcy4gSXQgaXMgbW9zdCBjb21tb25seQorcmVhbGl6ZWQgaW4gY2FtZXJhcyBieSBjb21iaW5pbmcgdHdvIHN1YnNlcXVlbnQgZnJhbWVzIHdpdGggZGlmZmVyZW50IGV4cG9zdXJlCit0aW1lcy4gPGZvb3Rub3RlIGlkPSJjdHlwZWNvbnYiPjxwYXJhPiBUaGlzIGNvbnRyb2wgbWF5IGJlIGNoYW5nZWQgdG8gYSBtZW51Citjb250cm9sIGluIHRoZSBmdXR1cmUsIGlmIG1vcmUgb3B0aW9ucyBhcmUgcmVxdWlyZWQuPC9wYXJhPjwvZm9vdG5vdGU+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKworCSAgPHJvdyBpZD0idjRsMi1pbWFnZS1zdGFiaWxpemF0aW9uIj4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0lNQUdFX1NUQUJJTElaQVRJT048L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+RW5hYmxlcyBvciBkaXNhYmxlcyBpbWFnZSBzdGFiaWxpemF0aW9uLgorCSAgICAgIDxmb290bm90ZXJlZiBsaW5rZW5kPSJjdHlwZWNvbnYiLz48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfSVNPX1NFTlNJVElWSVRZPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+aW50ZWdlciBtZW51PC9lbnRyeT4KKwkgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+RGV0ZXJtaW5lcyBJU08gZXF1aXZhbGVudCBvZiBhbgoraW1hZ2Ugc2Vuc29yIGluZGljYXRpbmcgdGhlIHNlbnNvcidzIHNlbnNpdGl2aXR5IHRvIGxpZ2h0LiBUaGUgbnVtYmVycyBhcmUKK2V4cHJlc3NlZCBpbiBhcml0aG1ldGljIHNjYWxlLCBhcyBwZXIgPHhyZWYgbGlua2VuZD0iaXNvMTIyMzIiIC8+IHN0YW5kYXJkLAord2hlcmUgZG91YmxpbmcgdGhlIHNlbnNvciBzZW5zaXRpdml0eSBpcyByZXByZXNlbnRlZCBieSBkb3VibGluZyB0aGUgbnVtZXJpY2FsCitJU08gdmFsdWUuIEFwcGxpY2F0aW9ucyBzaG91bGQgaW50ZXJwcmV0IHRoZSB2YWx1ZXMgYXMgc3RhbmRhcmQgSVNPIHZhbHVlcworbXVsdGlwbGllZCBieSAxMDAwLCBlLmcuIGNvbnRyb2wgdmFsdWUgODAwIHN0YW5kcyBmb3IgSVNPIDAuOC4gRHJpdmVycyB3aWxsCit1c3VhbGx5IHN1cHBvcnQgb25seSBhIHN1YnNldCBvZiBzdGFuZGFyZCBJU08gdmFsdWVzLiBUaGUgZWZmZWN0IG9mIHNldHRpbmcKK3RoaXMgY29udHJvbCB3aGlsZSB0aGUgPGNvbnN0YW50PlY0TDJfQ0lEX0lTT19TRU5TSVRJVklUWV9BVVRPPC9jb25zdGFudD4KK2NvbnRyb2wgaXMgc2V0IHRvIGEgdmFsdWUgb3RoZXIgdGhhbiA8Y29uc3RhbnQ+VjRMMl9DSURfSVNPX1NFTlNJVElWSVRZX01BTlVBTAorPC9jb25zdGFudD4gaXMgdW5kZWZpbmVkLCBkcml2ZXJzIHNob3VsZCBpZ25vcmUgc3VjaCByZXF1ZXN0cy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCisJICA8cm93IGlkPSJ2NGwyLWlzby1zZW5zaXRpdml0eS1hdXRvLXR5cGUiPgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfSVNPX1NFTlNJVElWSVRZX0FVVE88L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5lbnVtJm5ic3A7djRsMl9pc29fc2Vuc2l0aXZpdHlfdHlwZTwvZW50cnk+CisJICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkVuYWJsZXMgb3IgZGlzYWJsZXMgYXV0b21hdGljIElTTworc2Vuc2l0aXZpdHkgYWRqdXN0bWVudHMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJICAgICAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0lEX0lTT19TRU5TSVRJVklUWV9NQU5VQUw8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgPGVudHJ5Pk1hbnVhbCBJU08gc2Vuc2l0aXZpdHkuPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NJRF9JU09fU0VOU0lUSVZJVFlfQVVUTzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+QXV0b21hdGljIElTTyBzZW5zaXRpdml0eSBhZGp1c3RtZW50cy48L2VudHJ5PgorCQk8L3Jvdz4KKwkgICAgICA8L3Rib2R5PgorCSAgICA8L2VudHJ5dGJsPgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCisJICA8cm93IGlkPSJ2NGwyLXNjZW5lLW1vZGUiPgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfU0NFTkVfTU9ERTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5PmVudW0mbmJzcDt2NGwyX3NjZW5lX21vZGU8L2VudHJ5PgorCSAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5UaGlzIGNvbnRyb2wgYWxsb3dzIHRvIHNlbGVjdAorc2NlbmUgcHJvZ3JhbXMgYXMgdGhlIGNhbWVyYSBhdXRvbWF0aWMgbW9kZXMgb3B0aW1pemVkIGZvciBjb21tb24gc2hvb3RpbmcKK3NjZW5lcy4gV2l0aGluIHRoZXNlIG1vZGVzIHRoZSBjYW1lcmEgZGV0ZXJtaW5lcyBiZXN0IGV4cG9zdXJlLCBhcGVydHVyZSwKK2ZvY3VzaW5nLCBsaWdodCBtZXRlcmluZywgd2hpdGUgYmFsYW5jZSBhbmQgZXF1aXZhbGVudCBzZW5zaXRpdml0eS4gVGhlCitjb250cm9scyBvZiB0aG9zZSBwYXJhbWV0ZXJzIGFyZSBpbmZsdWVuY2VkIGJ5IHRoZSBzY2VuZSBtb2RlIGNvbnRyb2wuCitBbiBleGFjdCBiZWhhdmlvciBpbiBlYWNoIG1vZGUgaXMgc3ViamVjdCB0byB0aGUgY2FtZXJhIHNwZWNpZmljYXRpb24uCisKKzxwYXJhPldoZW4gdGhlIHNjZW5lIG1vZGUgZmVhdHVyZSBpcyBub3QgdXNlZCwgdGhpcyBjb250cm9sIHNob3VsZCBiZSBzZXQgdG8KKzxjb25zdGFudD5WNEwyX1NDRU5FX01PREVfTk9ORTwvY29uc3RhbnQ+IHRvIG1ha2Ugc3VyZSB0aGUgb3RoZXIgcG9zc2libHkKK3JlbGF0ZWQgY29udHJvbHMgYXJlIGFjY2Vzc2libGUuIFRoZSBmb2xsb3dpbmcgc2NlbmUgcHJvZ3JhbXMgYXJlIGRlZmluZWQ6Cis8L3BhcmE+Cis8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnl0Ymwgc3Bhbm5hbWU9ImRlc2NyIiBjb2xzPSIyIj4KKwkgICAgICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQk8cm93PgorCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9TQ0VORV9NT0RFX05PTkU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgPGVudHJ5PlRoZSBzY2VuZSBtb2RlIGZlYXR1cmUgaXMgZGlzYWJsZWQuPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1NDRU5FX01PREVfQkFDS0xJR0hUPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgIDxlbnRyeT5CYWNrbGlnaHQuIENvbXBlbnNhdGVzIGZvciBkYXJrIHNoYWRvd3Mgd2hlbiBsaWdodCBpcworCQkgIGNvbWluZyBmcm9tIGJlaGluZCBhIHN1YmplY3QsIGFsc28gYnkgYXV0b21hdGljYWxseSB0dXJuaW5nCisJCSAgb24gdGhlIGZsYXNoLjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9TQ0VORV9NT0RFX0JFQUNIX1NOT1c8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgPGVudHJ5PkJlYWNoIGFuZCBzbm93LiBUaGlzIG1vZGUgY29tcGVuc2F0ZXMgZm9yIGFsbC13aGl0ZSBvcgorYnJpZ2h0IHNjZW5lcywgd2hpY2ggdGVuZCB0byBsb29rIGdyYXkgYW5kIGxvdyBjb250cmFzdCwgd2hlbiBjYW1lcmEncyBhdXRvbWF0aWMKK2V4cG9zdXJlIGlzIGJhc2VkIG9uIGFuIGF2ZXJhZ2Ugc2NlbmUgYnJpZ2h0bmVzcy4gVG8gY29tcGVuc2F0ZSwgdGhpcyBtb2RlCithdXRvbWF0aWNhbGx5IHNsaWdodGx5IG92ZXJleHBvc2VzIHRoZSBmcmFtZXMuIFRoZSB3aGl0ZSBiYWxhbmNlIG1heSBhbHNvIGJlCithZGp1c3RlZCB0byBjb21wZW5zYXRlIGZvciB0aGUgZmFjdCB0aGF0IHJlZmxlY3RlZCBzbm93IGxvb2tzIGJsdWlzaCByYXRoZXIKK3RoYW4gd2hpdGUuPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1NDRU5FX01PREVfQ0FORExFTElHSFQ8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgPGVudHJ5PkNhbmRsZSBsaWdodC4gVGhlIGNhbWVyYSBnZW5lcmFsbHkgcmFpc2VzIHRoZSBJU08KK3NlbnNpdGl2aXR5IGFuZCBsb3dlcnMgdGhlIHNodXR0ZXIgc3BlZWQuIFRoaXMgbW9kZSBjb21wZW5zYXRlcyBmb3IgcmVsYXRpdmVseQorY2xvc2Ugc3ViamVjdCBpbiB0aGUgc2NlbmUuIFRoZSBmbGFzaCBpcyBkaXNhYmxlZCBpbiBvcmRlciB0byBwcmVzZXJ2ZSB0aGUKK2FtYmlhbmNlIG9mIHRoZSBsaWdodC48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfU0NFTkVfTU9ERV9EQVdOX0RVU0s8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgPGVudHJ5PkRhd24gYW5kIGR1c2suIFByZXNlcnZlcyB0aGUgY29sb3JzIHNlZW4gaW4gbG93CituYXR1cmFsIGxpZ2h0IGJlZm9yZSBkdXNrIGFuZCBhZnRlciBkb3duLiBUaGUgY2FtZXJhIG1heSB0dXJuIG9mZiB0aGUgZmxhc2gsCithbmQgYXV0b21hdGljYWxseSBmb2N1cyBhdCBpbmZpbml0eS4gSXQgd2lsbCB1c3VhbGx5IGJvb3N0IHNhdHVyYXRpb24gYW5kCitsb3dlciB0aGUgc2h1dHRlciBzcGVlZC48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfU0NFTkVfTU9ERV9GQUxMX0NPTE9SUzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+RmFsbCBjb2xvcnMuIEluY3JlYXNlcyBzYXR1cmF0aW9uIGFuZCBhZGp1c3RzIHdoaXRlCitiYWxhbmNlIGZvciBjb2xvciBlbmhhbmNlbWVudC4gUGljdHVyZXMgb2YgYXV0dW1uIGxlYXZlcyBnZXQgc2F0dXJhdGVkIHJlZHMKK2FuZCB5ZWxsb3dzLjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9TQ0VORV9NT0RFX0ZJUkVXT1JLUzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+RmlyZXdvcmtzLiBMb25nIGV4cG9zdXJlIHRpbWVzIGFyZSB1c2VkIHRvIGNhcHR1cmUKK3RoZSBleHBhbmRpbmcgYnVyc3Qgb2YgbGlnaHQgZnJvbSBhIGZpcmV3b3JrLiBUaGUgY2FtZXJhIG1heSBpbnZva2UgaW1hZ2UKK3N0YWJpbGl6YXRpb24uPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1NDRU5FX01PREVfTEFORFNDQVBFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgIDxlbnRyeT5MYW5kc2NhcGUuIFRoZSBjYW1lcmEgbWF5IGNob29zZSBhIHNtYWxsIGFwZXJ0dXJlIHRvCitwcm92aWRlIGRlZXAgZGVwdGggb2YgZmllbGQgYW5kIGxvbmcgZXhwb3N1cmUgZHVyYXRpb24gdG8gaGVscCBjYXB0dXJlIGRldGFpbAoraW4gZGltIGxpZ2h0IGNvbmRpdGlvbnMuIFRoZSBmb2N1cyBpcyBmaXhlZCBhdCBpbmZpbml0eS4gU3VpdGFibGUgZm9yIGRpc3RhbnQKK2FuZCB3aWRlIHNjZW5lcnkuPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1NDRU5FX01PREVfTklHSFQ8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgPGVudHJ5Pk5pZ2h0LCBhbHNvIGtub3duIGFzIE5pZ2h0IExhbmRzY2FwZS4gRGVzaWduZWQgZm9yIGxvdworbGlnaHQgY29uZGl0aW9ucywgaXQgcHJlc2VydmVzIGRldGFpbCBpbiB0aGUgZGFyayBhcmVhcyB3aXRob3V0IGJsb3dpbmcgb3V0IGJyaWdodAorb2JqZWN0cy4gVGhlIGNhbWVyYSBnZW5lcmFsbHkgc2V0cyBpdHNlbGYgdG8gYSBtZWRpdW0tdG8taGlnaCBJU08gc2Vuc2l0aXZpdHksCit3aXRoIGEgcmVsYXRpdmVseSBsb25nIGV4cG9zdXJlIHRpbWUsIGFuZCB0dXJucyBmbGFzaCBvZmYuIEFzIHN1Y2gsIHRoZXJlIHdpbGwgYmUKK2luY3JlYXNlZCBpbWFnZSBub2lzZSBhbmQgdGhlIHBvc3NpYmlsaXR5IG9mIGJsdXJyZWQgaW1hZ2UuPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1NDRU5FX01PREVfUEFSVFlfSU5ET09SPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgIDxlbnRyeT5QYXJ0eSBhbmQgaW5kb29yLiBEZXNpZ25lZCB0byBjYXB0dXJlIGluZG9vciBzY2VuZXMKK3RoYXQgYXJlIGxpdCBieSBpbmRvb3IgYmFja2dyb3VuZCBsaWdodGluZyBhcyB3ZWxsIGFzIHRoZSBmbGFzaC4gVGhlIGNhbWVyYQordXN1YWxseSBpbmNyZWFzZXMgSVNPIHNlbnNpdGl2aXR5LCBhbmQgYWRqdXN0cyBleHBvc3VyZSBmb3IgdGhlIGxvdyBsaWdodAorY29uZGl0aW9ucy48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfU0NFTkVfTU9ERV9QT1JUUkFJVDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+UG9ydHJhaXQuIFRoZSBjYW1lcmEgYWRqdXN0cyB0aGUgYXBlcnR1cmUgc28gdGhhdCB0aGUKK2RlcHRoIG9mIGZpZWxkIGlzIHJlZHVjZWQsIHdoaWNoIGhlbHBzIHRvIGlzb2xhdGUgdGhlIHN1YmplY3QgYWdhaW5zdCBhIHNtb290aAorYmFja2dyb3VuZC4gTW9zdCBjYW1lcmFzIHJlY29nbml6ZSB0aGUgcHJlc2VuY2Ugb2YgZmFjZXMgaW4gdGhlIHNjZW5lIGFuZCBmb2N1cworb24gdGhlbS4gVGhlIGNvbG9yIGh1ZSBpcyBhZGp1c3RlZCB0byBlbmhhbmNlIHNraW4gdG9uZXMuIFRoZSBpbnRlbnNpdHkgb2YgdGhlCitmbGFzaCBpcyBvZnRlbiByZWR1Y2VkLjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9TQ0VORV9NT0RFX1NQT1JUUzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+U3BvcnRzLiBTaWduaWZpY2FudGx5IGluY3JlYXNlcyBJU08gYW5kIHVzZXMgYSBmYXN0CitzaHV0dGVyIHNwZWVkIHRvIGZyZWV6ZSBtb3Rpb24gb2YgcmFwaWRseS1tb3Zpbmcgc3ViamVjdHMuIEluY3JlYXNlZCBpbWFnZQorbm9pc2UgbWF5IGJlIHNlZW4gaW4gdGhpcyBtb2RlLjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9TQ0VORV9NT0RFX1NVTlNFVDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICA8ZW50cnk+U3Vuc2V0LiBQcmVzZXJ2ZXMgZGVlcCBodWVzIHNlZW4gaW4gc3Vuc2V0cyBhbmQKK3N1bnJpc2VzLiBJdCBidW1wcyB1cCB0aGUgc2F0dXJhdGlvbi48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfU0NFTkVfTU9ERV9URVhUPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgIDxlbnRyeT5UZXh0LiBJdCBhcHBsaWVzIGV4dHJhIGNvbnRyYXN0IGFuZCBzaGFycG5lc3MsIGl0IGlzCit0eXBpY2FsbHkgYSBibGFjay1hbmQtd2hpdGUgbW9kZSBvcHRpbWl6ZWQgZm9yIHJlYWRhYmlsaXR5LiBBdXRvbWF0aWMgZm9jdXMKK21heSBiZSBzd2l0Y2hlZCB0byBjbG9zZS11cCBtb2RlIGFuZCB0aGlzIHNldHRpbmcgbWF5IGFsc28gaW52b2x2ZSBzb21lCitsZW5zLWRpc3RvcnRpb24gY29ycmVjdGlvbi48L2VudHJ5PgorCQk8L3Jvdz4KKwkgICAgICA8L3Rib2R5PgorCSAgICA8L2VudHJ5dGJsPgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfM0FfTE9DSzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmJpdG1hc2s8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5UaGlzIGNvbnRyb2wgbG9ja3Mgb3IgdW5sb2NrcyB0aGUgYXV0b21hdGljCitmb2N1cywgZXhwb3N1cmUgYW5kIHdoaXRlIGJhbGFuY2UuIFRoZSBhdXRvbWF0aWMgYWRqdXN0bWVudHMgY2FuIGJlIHBhdXNlZAoraW5kZXBlbmRlbnRseSBieSBzZXR0aW5nIHRoZSBjb3JyZXNwb25kaW5nIGxvY2sgYml0IHRvIDEuIFRoZSBjYW1lcmEgdGhlbiByZXRhaW5zCit0aGUgc2V0dGluZ3MgdW50aWwgdGhlIGxvY2sgYml0IGlzIGNsZWFyZWQuIFRoZSBmb2xsb3dpbmcgbG9jayBiaXRzIGFyZSBkZWZpbmVkOgorPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJICAgICAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTE9DS19FWFBPU1VSRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+QXV0b21hdGljIGV4cG9zdXJlIGFkanVzdG1lbnRzIGxvY2suPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0xPQ0tfV0hJVEVfQkFMQU5DRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+QXV0b21hdGljIHdoaXRlIGJhbGFuY2UgYWRqdXN0bWVudHMgbG9jay48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTE9DS19GT0NVUzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+QXV0b21hdGljIGZvY3VzIGxvY2suPC9lbnRyeT4KKwkJPC9yb3c+CisJICAgICAgPC90Ym9keT4KKwkgICAgPC9lbnRyeXRibD4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj4KK1doZW4gYSBnaXZlbiBhbGdvcml0aG0gaXMgbm90IGVuYWJsZWQsIGRyaXZlcnMgc2hvdWxkIGlnbm9yZSByZXF1ZXN0cwordG8gbG9jayBpdCBhbmQgc2hvdWxkIHJldHVybiBubyBlcnJvci4gQW4gZXhhbXBsZSBtaWdodCBiZSBhbiBhcHBsaWNhdGlvbgorc2V0dGluZyBiaXQgPGNvbnN0YW50PlY0TDJfTE9DS19XSElURV9CQUxBTkNFPC9jb25zdGFudD4gd2hlbiB0aGUKKzxjb25zdGFudD5WNEwyX0NJRF9BVVRPX1dISVRFX0JBTEFOQ0U8L2NvbnN0YW50PiBjb250cm9sIGlzIHNldCB0bworPGNvbnN0YW50PkZBTFNFPC9jb25zdGFudD4uIFRoZSB2YWx1ZSBvZiB0aGlzIGNvbnRyb2wgbWF5IGJlIGNoYW5nZWQKK2J5IGV4cG9zdXJlLCB3aGl0ZSBiYWxhbmNlIG9yIGZvY3VzIGNvbnRyb2xzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisKKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9QQU5fU1BFRUQ8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGhpcyBjb250cm9sIHR1cm5zIHRoZQorY2FtZXJhIGhvcml6b250YWxseSBhdCB0aGUgc3BlY2lmaWMgc3BlZWQuIFRoZSB1bml0IGlzIHVuZGVmaW5lZC4gQQorcG9zaXRpdmUgdmFsdWUgbW92ZXMgdGhlIGNhbWVyYSB0byB0aGUgcmlnaHQgKGNsb2Nrd2lzZSB3aGVuIHZpZXdlZAorZnJvbSBhYm92ZSksIGEgbmVnYXRpdmUgdmFsdWUgdG8gdGhlIGxlZnQuIEEgdmFsdWUgb2YgemVybyBzdG9wcyB0aGUgbW90aW9uCitpZiBvbmUgaXMgaW4gcHJvZ3Jlc3MgYW5kIGhhcyBubyBlZmZlY3Qgb3RoZXJ3aXNlLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisKKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9USUxUX1NQRUVEPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlRoaXMgY29udHJvbCB0dXJucyB0aGUKK2NhbWVyYSB2ZXJ0aWNhbGx5IGF0IHRoZSBzcGVjaWZpZWQgc3BlZWQuIFRoZSB1bml0IGlzIHVuZGVmaW5lZC4gQQorcG9zaXRpdmUgdmFsdWUgbW92ZXMgdGhlIGNhbWVyYSB1cCwgYSBuZWdhdGl2ZSB2YWx1ZSBkb3duLiBBIHZhbHVlIG9mIHplcm8KK3N0b3BzIHRoZSBtb3Rpb24gaWYgb25lIGlzIGluIHByb2dyZXNzIGFuZCBoYXMgbm8gZWZmZWN0IG90aGVyd2lzZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJmbS10eC1jb250cm9scyI+CisgICAgICA8dGl0bGU+Rk0gVHJhbnNtaXR0ZXIgQ29udHJvbCBSZWZlcmVuY2U8L3RpdGxlPgorCisgICAgICA8cGFyYT5UaGUgRk0gVHJhbnNtaXR0ZXIgKEZNX1RYKSBjbGFzcyBpbmNsdWRlcyBjb250cm9scyBmb3IgY29tbW9uIGZlYXR1cmVzIG9mCitGTSB0cmFuc21pc3Npb25zIGNhcGFibGUgZGV2aWNlcy4gQ3VycmVudGx5IHRoaXMgY2xhc3MgaW5jbHVkZXMgcGFyYW1ldGVycyBmb3IgYXVkaW8KK2NvbXByZXNzaW9uLCBwaWxvdCB0b25lIGdlbmVyYXRpb24sIGF1ZGlvIGRldmlhdGlvbiBsaW1pdGVyLCBSRFMgdHJhbnNtaXNzaW9uIGFuZAordHVuaW5nIHBvd2VyIGZlYXR1cmVzLjwvcGFyYT4KKworICAgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJmbS10eC1jb250cm9sLWlkIj4KKyAgICAgIDx0aXRsZT5GTV9UWCBDb250cm9sIElEczwvdGl0bGU+CisKKyAgICAgIDx0Z3JvdXAgY29scz0iNCI+CisJPGNvbHNwZWMgY29sbmFtZT0iYzEiIGNvbHdpZHRoPSIxKiIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMiIgY29sd2lkdGg9IjYqIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMzIiBjb2x3aWR0aD0iMioiIC8+CisJPGNvbHNwZWMgY29sbmFtZT0iYzQiIGNvbHdpZHRoPSI2KiIgLz4KKwk8c3BhbnNwZWMgbmFtZXN0PSJjMSIgbmFtZWVuZD0iYzIiIHNwYW5uYW1lPSJpZCIgLz4KKwk8c3BhbnNwZWMgbmFtZXN0PSJjMiIgbmFtZWVuZD0iYzQiIHNwYW5uYW1lPSJkZXNjciIgLz4KKwk8dGhlYWQ+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIiBhbGlnbj0ibGVmdCI+SUQ8L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImxlZnQiPlR5cGU8L2VudHJ5PgorCSAgPC9yb3c+PHJvdyByb3dzZXA9IjEiPjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3RoZWFkPgorCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0ZNX1RYX0NMQVNTPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+Y2xhc3M8L2VudHJ5PgorCSAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5UaGUgRk1fVFggY2xhc3MKK2Rlc2NyaXB0b3IuIENhbGxpbmcgJlZJRElPQy1RVUVSWUNUUkw7IGZvciB0aGlzIGNvbnRyb2wgd2lsbCByZXR1cm4gYQorZGVzY3JpcHRpb24gb2YgdGhpcyBjb250cm9sIGNsYXNzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9SRFNfVFhfREVWSUFUSU9OPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+Q29uZmlndXJlcyBSRFMgc2lnbmFsIGZyZXF1ZW5jeSBkZXZpYXRpb24gbGV2ZWwgaW4gSHouCitUaGUgcmFuZ2UgYW5kIHN0ZXAgYXJlIGRyaXZlci1zcGVjaWZpYy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfUkRTX1RYX1BJPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+U2V0cyB0aGUgUkRTIFByb2dyYW1tZSBJZGVudGlmaWNhdGlvbiBmaWVsZAorZm9yIHRyYW5zbWlzc2lvbi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfUkRTX1RYX1BUWTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlNldHMgdGhlIFJEUyBQcm9ncmFtbWUgVHlwZSBmaWVsZCBmb3IgdHJhbnNtaXNzaW9uLgorVGhpcyBlbmNvZGVzIHVwIHRvIDMxIHByZS1kZWZpbmVkIHByb2dyYW1tZSB0eXBlcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfUkRTX1RYX1BTX05BTUU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5zdHJpbmc8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlNldHMgdGhlIFByb2dyYW1tZSBTZXJ2aWNlIG5hbWUgKFBTX05BTUUpIGZvciB0cmFuc21pc3Npb24uCitJdCBpcyBpbnRlbmRlZCBmb3Igc3RhdGljIGRpc3BsYXkgb24gYSByZWNlaXZlci4gSXQgaXMgdGhlIHByaW1hcnkgYWlkIHRvIGxpc3RlbmVycyBpbiBwcm9ncmFtbWUgc2VydmljZQoraWRlbnRpZmljYXRpb24gYW5kIHNlbGVjdGlvbi4gIEluIEFubmV4IEUgb2YgPHhyZWYgbGlua2VuZD0iaWVjNjIxMDYiIC8+LCB0aGUgUkRTIHNwZWNpZmljYXRpb24sCit0aGVyZSBpcyBhIGZ1bGwgZGVzY3JpcHRpb24gb2YgdGhlIGNvcnJlY3QgY2hhcmFjdGVyIGVuY29kaW5nIGZvciBQcm9ncmFtbWUgU2VydmljZSBuYW1lIHN0cmluZ3MuCitBbHNvIGZyb20gUkRTIHNwZWNpZmljYXRpb24sIFBTIGlzIHVzdWFsbHkgYSBzaW5nbGUgZWlnaHQgY2hhcmFjdGVyIHRleHQuIEhvd2V2ZXIsIGl0IGlzIGFsc28gcG9zc2libGUKK3RvIGZpbmQgcmVjZWl2ZXJzIHdoaWNoIGNhbiBzY3JvbGwgc3RyaW5ncyBzaXplZCBhcyA4IHggTiBjaGFyYWN0ZXJzLiBTbywgdGhpcyBjb250cm9sIG11c3QgYmUgY29uZmlndXJlZAord2l0aCBzdGVwcyBvZiA4IGNoYXJhY3RlcnMuIFRoZSByZXN1bHQgaXMgaXQgbXVzdCBhbHdheXMgY29udGFpbiBhIHN0cmluZyB3aXRoIHNpemUgbXVsdGlwbGUgb2YgOC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfUkRTX1RYX1JBRElPX1RFWFQ8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5zdHJpbmc8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlNldHMgdGhlIFJhZGlvIFRleHQgaW5mbyBmb3IgdHJhbnNtaXNzaW9uLiBJdCBpcyBhIHRleHR1YWwgZGVzY3JpcHRpb24gb2YKK3doYXQgaXMgYmVpbmcgYnJvYWRjYXN0ZWQuIFJEUyBSYWRpbyBUZXh0IGNhbiBiZSBhcHBsaWVkIHdoZW4gYnJvYWRjYXN0ZXIgd2lzaGVzIHRvIHRyYW5zbWl0IGxvbmdlciBQUyBuYW1lcywKK3Byb2dyYW1tZS1yZWxhdGVkIGluZm9ybWF0aW9uIG9yIGFueSBvdGhlciB0ZXh0LiBJbiB0aGVzZSBjYXNlcywgUmFkaW9UZXh0IHNob3VsZCBiZSB1c2VkIGluIGFkZGl0aW9uIHRvCis8Y29uc3RhbnQ+VjRMMl9DSURfUkRTX1RYX1BTX05BTUU8L2NvbnN0YW50Pi4gVGhlIGVuY29kaW5nIGZvciBSYWRpbyBUZXh0IHN0cmluZ3MgaXMgYWxzbyBmdWxseSBkZXNjcmliZWQKK2luIEFubmV4IEUgb2YgPHhyZWYgbGlua2VuZD0iaWVjNjIxMDYiIC8+LiBUaGUgbGVuZ3RoIG9mIFJhZGlvIFRleHQgc3RyaW5ncyBkZXBlbmRzIG9uIHdoaWNoIFJEUyBCbG9jayBpcyBiZWluZwordXNlZCB0byB0cmFuc21pdCBpdCwgZWl0aGVyIDMyICgyQSBibG9jaykgb3IgNjQgKDJCIGJsb2NrKS4gIEhvd2V2ZXIsIGl0IGlzIGFsc28gcG9zc2libGUKK3RvIGZpbmQgcmVjZWl2ZXJzIHdoaWNoIGNhbiBzY3JvbGwgc3RyaW5ncyBzaXplZCBhcyAzMiB4IE4gb3IgNjQgeCBOIGNoYXJhY3RlcnMuIFNvLCB0aGlzIGNvbnRyb2wgbXVzdCBiZSBjb25maWd1cmVkCit3aXRoIHN0ZXBzIG9mIDMyIG9yIDY0IGNoYXJhY3RlcnMuIFRoZSByZXN1bHQgaXMgaXQgbXVzdCBhbHdheXMgY29udGFpbiBhIHN0cmluZyB3aXRoIHNpemUgbXVsdGlwbGUgb2YgMzIgb3IgNjQuIDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9SRFNfVFhfTU9OT19TVEVSRU88L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5TZXRzIHRoZSBNb25vL1N0ZXJlbyBiaXQgb2YgdGhlIERlY29kZXIgSWRlbnRpZmljYXRpb24gY29kZS4gSWYgc2V0LAordGhlbiB0aGUgYXVkaW8gd2FzIHJlY29yZGVkIGFzIHN0ZXJlby48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfUkRTX1RYX0FSVElGSUNJQUxfSEVBRDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5PmJvb2xlYW48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlNldHMgdGhlCis8dWxpbmsgdXJsPSJodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FydGlmaWNpYWxfaGVhZCI+QXJ0aWZpY2lhbCBIZWFkPC91bGluaz4gYml0IG9mIHRoZSBEZWNvZGVyCitJZGVudGlmaWNhdGlvbiBjb2RlLiBJZiBzZXQsIHRoZW4gdGhlIGF1ZGlvIHdhcyByZWNvcmRlZCB1c2luZyBhbiBhcnRpZmljaWFsIGhlYWQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX1JEU19UWF9DT01QUkVTU0VEPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+Ym9vbGVhbjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+U2V0cyB0aGUgQ29tcHJlc3NlZCBiaXQgb2YgdGhlIERlY29kZXIgSWRlbnRpZmljYXRpb24gY29kZS4gSWYgc2V0LAordGhlbiB0aGUgYXVkaW8gaXMgY29tcHJlc3NlZC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfUkRTX1RYX0RZTkFNSUNfUFRZPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+Ym9vbGVhbjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+U2V0cyB0aGUgRHluYW1pYyBQVFkgYml0IG9mIHRoZSBEZWNvZGVyIElkZW50aWZpY2F0aW9uIGNvZGUuIElmIHNldCwKK3RoZW4gdGhlIFBUWSBjb2RlIGlzIGR5bmFtaWNhbGx5IHN3aXRjaGVkLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9SRFNfVFhfVFJBRkZJQ19BTk5PVU5DRU1FTlQ8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5JZiBzZXQsIHRoZW4gYSB0cmFmZmljIGFubm91bmNlbWVudCBpcyBpbiBwcm9ncmVzcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfUkRTX1RYX1RSQUZGSUNfUFJPR1JBTTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5PmJvb2xlYW48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPklmIHNldCwgdGhlbiB0aGUgdHVuZWQgcHJvZ3JhbW1lIGNhcnJpZXMgdHJhZmZpYyBhbm5vdW5jZW1lbnRzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9SRFNfVFhfTVVTSUNfU1BFRUNIPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+Ym9vbGVhbjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+SWYgc2V0LCB0aGVuIHRoaXMgY2hhbm5lbCBicm9hZGNhc3RzIG11c2ljLiBJZiBjbGVhcmVkLCB0aGVuIGl0Citicm9hZGNhc3RzIHNwZWVjaC4gSWYgdGhlIHRyYW5zbWl0dGVyIGRvZXNuJ3QgbWFrZSB0aGlzIGRpc3RpbmN0aW9uLCB0aGVuIGl0IHNob3VsZCBiZSBzZXQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX1JEU19UWF9BTFRfRlJFUVNfRU5BQkxFPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+Ym9vbGVhbjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+SWYgc2V0LCB0aGVuIHRyYW5zbWl0IGFsdGVybmF0ZSBmcmVxdWVuY2llcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfUkRTX1RYX0FMVF9GUkVRUzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5Pl9fdTMyIGFycmF5PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5UaGUgYWx0ZXJuYXRlIGZyZXF1ZW5jaWVzIGluIGtIeiB1bml0cy4gVGhlIFJEUyBzdGFuZGFyZCBhbGxvd3MKK2ZvciB1cCB0byAyNSBmcmVxdWVuY2llcyB0byBiZSBkZWZpbmVkLiBEcml2ZXJzIG1heSBzdXBwb3J0IGZld2VyIGZyZXF1ZW5jaWVzIHNvIGNoZWNrCit0aGUgYXJyYXkgc2l6ZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfQVVESU9fTElNSVRFUl9FTkFCTEVEPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+Ym9vbGVhbjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+RW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgYXVkaW8gZGV2aWF0aW9uIGxpbWl0ZXIgZmVhdHVyZS4KK1RoZSBsaW1pdGVyIGlzIHVzZWZ1bCB3aGVuIHRyeWluZyB0byBtYXhpbWl6ZSB0aGUgYXVkaW8gdm9sdW1lLCBtaW5pbWl6ZSByZWNlaXZlci1nZW5lcmF0ZWQKK2Rpc3RvcnRpb24gYW5kIHByZXZlbnQgb3Zlcm1vZHVsYXRpb24uCis8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfQVVESU9fTElNSVRFUl9SRUxFQVNFX1RJTUU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5TZXRzIHRoZSBhdWRpbyBkZXZpYXRpb24gbGltaXRlciBmZWF0dXJlIHJlbGVhc2UgdGltZS4KK1VuaXQgaXMgaW4gdXNlY29uZHMuIFN0ZXAgYW5kIHJhbmdlIGFyZSBkcml2ZXItc3BlY2lmaWMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0FVRElPX0xJTUlURVJfREVWSUFUSU9OPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+Q29uZmlndXJlcyBhdWRpbyBmcmVxdWVuY3kgZGV2aWF0aW9uIGxldmVsIGluIEh6LgorVGhlIHJhbmdlIGFuZCBzdGVwIGFyZSBkcml2ZXItc3BlY2lmaWMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0FVRElPX0NPTVBSRVNTSU9OX0VOQUJMRUQ8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5FbmFibGVzIG9yIGRpc2FibGVzIHRoZSBhdWRpbyBjb21wcmVzc2lvbiBmZWF0dXJlLgorVGhpcyBmZWF0dXJlIGFtcGxpZmllcyBzaWduYWxzIGJlbG93IHRoZSB0aHJlc2hvbGQgYnkgYSBmaXhlZCBnYWluIGFuZCBjb21wcmVzc2VzIGF1ZGlvCitzaWduYWxzIGFib3ZlIHRoZSB0aHJlc2hvbGQgYnkgdGhlIHJhdGlvIG9mIFRocmVzaG9sZC8oR2FpbiArIFRocmVzaG9sZCkuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0FVRElPX0NPTVBSRVNTSU9OX0dBSU48L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5TZXRzIHRoZSBnYWluIGZvciBhdWRpbyBjb21wcmVzc2lvbiBmZWF0dXJlLiBJdCBpcworYSBkQiB2YWx1ZS4gVGhlIHJhbmdlIGFuZCBzdGVwIGFyZSBkcml2ZXItc3BlY2lmaWMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0FVRElPX0NPTVBSRVNTSU9OX1RIUkVTSE9MRDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlNldHMgdGhlIHRocmVzaG9sZCBsZXZlbCBmb3IgYXVkaW8gY29tcHJlc3Npb24gZnJlYXR1cmUuCitJdCBpcyBhIGRCIHZhbHVlLiBUaGUgcmFuZ2UgYW5kIHN0ZXAgYXJlIGRyaXZlci1zcGVjaWZpYy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfQVVESU9fQ09NUFJFU1NJT05fQVRUQUNLX1RJTUU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5TZXRzIHRoZSBhdHRhY2sgdGltZSBmb3IgYXVkaW8gY29tcHJlc3Npb24gZmVhdHVyZS4KK0l0IGlzIGEgdXNlY29uZHMgdmFsdWUuIFRoZSByYW5nZSBhbmQgc3RlcCBhcmUgZHJpdmVyLXNwZWNpZmljLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9BVURJT19DT01QUkVTU0lPTl9SRUxFQVNFX1RJTUU8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5TZXRzIHRoZSByZWxlYXNlIHRpbWUgZm9yIGF1ZGlvIGNvbXByZXNzaW9uIGZlYXR1cmUuCitJdCBpcyBhIHVzZWNvbmRzIHZhbHVlLiBUaGUgcmFuZ2UgYW5kIHN0ZXAgYXJlIGRyaXZlci1zcGVjaWZpYy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfUElMT1RfVE9ORV9FTkFCTEVEPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+Ym9vbGVhbjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+RW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgcGlsb3QgdG9uZSBnZW5lcmF0aW9uIGZlYXR1cmUuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX1BJTE9UX1RPTkVfREVWSUFUSU9OPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+Q29uZmlndXJlcyBwaWxvdCB0b25lIGZyZXF1ZW5jeSBkZXZpYXRpb24gbGV2ZWwuIFVuaXQgaXMKK2luIEh6LiBUaGUgcmFuZ2UgYW5kIHN0ZXAgYXJlIGRyaXZlci1zcGVjaWZpYy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfUElMT1RfVE9ORV9GUkVRVUVOQ1k8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5Db25maWd1cmVzIHBpbG90IHRvbmUgZnJlcXVlbmN5IHZhbHVlLiBVbml0IGlzCitpbiBIei4gVGhlIHJhbmdlIGFuZCBzdGVwIGFyZSBkcml2ZXItc3BlY2lmaWMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX1RVTkVfUFJFRU1QSEFTSVM8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5lbnVtIHY0bDJfcHJlZW1waGFzaXM8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJ2NGwyLXByZWVtcGhhc2lzIj48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5Db25maWd1cmVzIHRoZSBwcmUtZW1waGFzaXMgdmFsdWUgZm9yIGJyb2FkY2FzdGluZy4KK0EgcHJlLWVtcGhhc2lzIGZpbHRlciBpcyBhcHBsaWVkIHRvIHRoZSBicm9hZGNhc3QgdG8gYWNjZW50dWF0ZSB0aGUgaGlnaCBhdWRpbyBmcmVxdWVuY2llcy4KK0RlcGVuZGluZyBvbiB0aGUgcmVnaW9uLCBhIHRpbWUgY29uc3RhbnQgb2YgZWl0aGVyIDUwIG9yIDc1IHVzZWNvbmRzIGlzIHVzZWQuIFRoZSBlbnVtJm5ic3A7djRsMl9wcmVlbXBoYXNpcworZGVmaW5lcyBwb3NzaWJsZSB2YWx1ZXMgZm9yIHByZS1lbXBoYXNpcy4gSGVyZSB0aGV5IGFyZTo8L2VudHJ5PgorCTwvcm93Pjxyb3c+CisJPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QUkVFTVBIQVNJU19ESVNBQkxFRDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Pk5vIHByZS1lbXBoYXNpcyBpcyBhcHBsaWVkLjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QUkVFTVBIQVNJU181MF91UzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkEgcHJlLWVtcGhhc2lzIG9mIDUwIHVTIGlzIHVzZWQuPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BSRUVNUEhBU0lTXzc1X3VTPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+QSBwcmUtZW1waGFzaXMgb2YgNzUgdVMgaXMgdXNlZC48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC9lbnRyeXRibD4KKworCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfVFVORV9QT1dFUl9MRVZFTDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlNldHMgdGhlIG91dHB1dCBwb3dlciBsZXZlbCBmb3Igc2lnbmFsIHRyYW5zbWlzc2lvbi4KK1VuaXQgaXMgaW4gZEJ1Vi4gUmFuZ2UgYW5kIHN0ZXAgYXJlIGRyaXZlci1zcGVjaWZpYy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfVFVORV9BTlRFTk5BX0NBUEFDSVRPUjwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlRoaXMgc2VsZWN0cyB0aGUgdmFsdWUgb2YgYW50ZW5uYSB0dW5pbmcgY2FwYWNpdG9yCittYW51YWxseSBvciBhdXRvbWF0aWNhbGx5IGlmIHNldCB0byB6ZXJvLiBVbml0LCByYW5nZSBhbmQgc3RlcCBhcmUgZHJpdmVyLXNwZWNpZmljLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgICAgPC90YWJsZT4KKworPHBhcmE+Rm9yIG1vcmUgZGV0YWlscyBhYm91dCBSRFMgc3BlY2lmaWNhdGlvbiwgcmVmZXIgdG8KKzx4cmVmIGxpbmtlbmQ9ImllYzYyMTA2IiAvPiBkb2N1bWVudCwgZnJvbSBDRU5FTEVDLjwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iZmxhc2gtY29udHJvbHMiPgorICAgICAgPHRpdGxlPkZsYXNoIENvbnRyb2wgUmVmZXJlbmNlPC90aXRsZT4KKworICAgICAgPG5vdGU+CisJPHRpdGxlPkV4cGVyaW1lbnRhbDwvdGl0bGU+CisKKwk8cGFyYT5UaGlzIGlzIGFuIDxsaW5rIGxpbmtlbmQ9ImV4cGVyaW1lbnRhbCI+ZXhwZXJpbWVudGFsPC9saW5rPgoraW50ZXJmYWNlIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuPC9wYXJhPgorICAgICAgPC9ub3RlPgorCisgICAgICA8cGFyYT4KKwlUaGUgVjRMMiBmbGFzaCBjb250cm9scyBhcmUgaW50ZW5kZWQgdG8gcHJvdmlkZSBnZW5lcmljIGFjY2VzcworCXRvIGZsYXNoIGNvbnRyb2xsZXIgZGV2aWNlcy4gRmxhc2ggY29udHJvbGxlciBkZXZpY2VzIGFyZQorCXR5cGljYWxseSB1c2VkIGluIGRpZ2l0YWwgY2FtZXJhcy4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisJVGhlIGludGVyZmFjZSBjYW4gc3VwcG9ydCBib3RoIExFRCBhbmQgeGVub24gZmxhc2ggZGV2aWNlcy4gQXMKKwlvZiB3cml0aW5nIHRoaXMsIHRoZXJlIGlzIG5vIHhlbm9uIGZsYXNoIGRyaXZlciB1c2luZyB0aGlzCisJaW50ZXJmYWNlLgorICAgICAgPC9wYXJhPgorCisgICAgICA8c2VjdGlvbiBpZD0iZmxhc2gtY29udHJvbHMtdXNlLWNhc2VzIj4KKwk8dGl0bGU+U3VwcG9ydGVkIHVzZSBjYXNlczwvdGl0bGU+CisKKwk8c2VjdGlvbj4KKwkgIDx0aXRsZT5VbnN5bmNocm9uaXNlZCBMRUQgZmxhc2ggKHNvZnR3YXJlIHN0cm9iZSk8L3RpdGxlPgorCisJICA8cGFyYT4KKwkgICAgVW5zeW5jaHJvbmlzZWQgTEVEIGZsYXNoIGlzIGNvbnRyb2xsZWQgZGlyZWN0bHkgYnkgdGhlCisJICAgIGhvc3QgYXMgdGhlIHNlbnNvci4gVGhlIGZsYXNoIG11c3QgYmUgZW5hYmxlZCBieSB0aGUgaG9zdAorCSAgICBiZWZvcmUgdGhlIGV4cG9zdXJlIG9mIHRoZSBpbWFnZSBzdGFydHMgYW5kIGRpc2FibGVkIG9uY2UKKwkgICAgaXQgZW5kcy4gVGhlIGhvc3QgaXMgZnVsbHkgcmVzcG9uc2libGUgZm9yIHRoZSB0aW1pbmcgb2YKKwkgICAgdGhlIGZsYXNoLgorCSAgPC9wYXJhPgorCisJICA8cGFyYT5FeGFtcGxlIG9mIHN1Y2ggZGV2aWNlOiBOb2tpYSBOOTAwLjwvcGFyYT4KKwk8L3NlY3Rpb24+CisKKwk8c2VjdGlvbj4KKwkgIDx0aXRsZT5TeW5jaHJvbmlzZWQgTEVEIGZsYXNoIChoYXJkd2FyZSBzdHJvYmUpPC90aXRsZT4KKworCSAgPHBhcmE+CisJICAgIFRoZSBzeW5jaHJvbmlzZWQgTEVEIGZsYXNoIGlzIHByZS1wcm9ncmFtbWVkIGJ5IHRoZSBob3N0CisJICAgIChwb3dlciBhbmQgdGltZW91dCkgYnV0IGNvbnRyb2xsZWQgYnkgdGhlIHNlbnNvciB0aHJvdWdoIGEKKwkgICAgc3Ryb2JlIHNpZ25hbCBmcm9tIHRoZSBzZW5zb3IgdG8gdGhlIGZsYXNoLgorCSAgPC9wYXJhPgorCisJICA8cGFyYT4KKwkgICAgVGhlIHNlbnNvciBjb250cm9scyB0aGUgZmxhc2ggZHVyYXRpb24gYW5kIHRpbWluZy4gVGhpcworCSAgICBpbmZvcm1hdGlvbiB0eXBpY2FsbHkgbXVzdCBiZSBtYWRlIGF2YWlsYWJsZSB0byB0aGUKKwkgICAgc2Vuc29yLgorCSAgPC9wYXJhPgorCisJPC9zZWN0aW9uPgorCisJPHNlY3Rpb24+CisJICA8dGl0bGU+TEVEIGZsYXNoIGFzIHRvcmNoPC90aXRsZT4KKworCSAgPHBhcmE+CisJICAgIExFRCBmbGFzaCBtYXkgYmUgdXNlZCBhcyB0b3JjaCBpbiBjb25qdW5jdGlvbiB3aXRoIGFub3RoZXIKKwkgICAgdXNlIGNhc2UgaW52b2x2aW5nIGNhbWVyYSBvciBpbmRpdmlkdWFsbHkuCisJICA8L3BhcmE+CisKKworICAgICAgICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iZmxhc2gtY29udHJvbC1pZCI+CisgICAgICAgICAgPHRpdGxlPkZsYXNoIENvbnRyb2wgSURzPC90aXRsZT4KKyAgICAKKyAgICAgICAgICA8dGdyb3VwIGNvbHM9IjQiPgorICAgIAk8Y29sc3BlYyBjb2xuYW1lPSJjMSIgY29sd2lkdGg9IjEqIiAvPgorICAgIAk8Y29sc3BlYyBjb2xuYW1lPSJjMiIgY29sd2lkdGg9IjYqIiAvPgorICAgIAk8Y29sc3BlYyBjb2xuYW1lPSJjMyIgY29sd2lkdGg9IjIqIiAvPgorICAgIAk8Y29sc3BlYyBjb2xuYW1lPSJjNCIgY29sd2lkdGg9IjYqIiAvPgorICAgIAk8c3BhbnNwZWMgbmFtZXN0PSJjMSIgbmFtZWVuZD0iYzIiIHNwYW5uYW1lPSJpZCIgLz4KKyAgICAJPHNwYW5zcGVjIG5hbWVzdD0iYzIiIG5hbWVlbmQ9ImM0IiBzcGFubmFtZT0iZGVzY3IiIC8+CisgICAgCTx0aGVhZD4KKyAgICAJICA8cm93PgorICAgIAkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCIgYWxpZ249ImxlZnQiPklEPC9lbnRyeT4KKyAgICAJICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+VHlwZTwvZW50cnk+CisgICAgCSAgPC9yb3c+PHJvdyByb3dzZXA9IjEiPjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvZW50cnk+CisgICAgCSAgPC9yb3c+CisgICAgCTwvdGhlYWQ+CisgICAgCTx0Ym9keSB2YWxpZ249InRvcCI+CisgICAgCSAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKyAgICAJICA8cm93PgorICAgIAkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0ZMQVNIX0NMQVNTPC9jb25zdGFudD48L2VudHJ5PgorICAgIAkgICAgPGVudHJ5PmNsYXNzPC9lbnRyeT4KKyAgICAJICA8L3Jvdz4KKyAgICAJICA8cm93PgorICAgIAkgICAgPGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGhlIEZMQVNIIGNsYXNzIGRlc2NyaXB0b3IuPC9lbnRyeT4KKyAgICAJICA8L3Jvdz4KKyAgICAJICA8cm93PgorICAgIAkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0ZMQVNIX0xFRF9NT0RFPC9jb25zdGFudD48L2VudHJ5PgorICAgIAkgICAgPGVudHJ5Pm1lbnU8L2VudHJ5PgorICAgIAkgIDwvcm93PgorICAgIAkgIDxyb3cgaWQ9InY0bDItZmxhc2gtbGVkLW1vZGUiPgorICAgIAkgICAgPGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+RGVmaW5lcyB0aGUgbW9kZSBvZiB0aGUgZmxhc2ggTEVELAorICAgIAkgICAgdGhlIGhpZ2gtcG93ZXIgd2hpdGUgTEVEIGF0dGFjaGVkIHRvIHRoZSBmbGFzaCBjb250cm9sbGVyLgorICAgIAkgICAgU2V0dGluZyB0aGlzIGNvbnRyb2wgbWF5IG5vdCBiZSBwb3NzaWJsZSBpbiBwcmVzZW5jZSBvZgorICAgIAkgICAgc29tZSBmYXVsdHMuIFNlZSBWNEwyX0NJRF9GTEFTSF9GQVVMVC48L2VudHJ5PgorICAgIAkgIDwvcm93PgorICAgIAkgIDxyb3c+CisgICAgCSAgICA8ZW50cnl0Ymwgc3Bhbm5hbWU9ImRlc2NyIiBjb2xzPSIyIj4KKyAgICAJICAgICAgPHRib2R5IHZhbGlnbj0idG9wIj4KKyAgICAJCTxyb3c+CisgICAgCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9GTEFTSF9MRURfTU9ERV9OT05FPC9jb25zdGFudD48L2VudHJ5PgorICAgIAkJICA8ZW50cnk+T2ZmLjwvZW50cnk+CisgICAgCQk8L3Jvdz4KKyAgICAJCTxyb3c+CisgICAgCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9GTEFTSF9MRURfTU9ERV9GTEFTSDwvY29uc3RhbnQ+PC9lbnRyeT4KKyAgICAJCSAgPGVudHJ5PkZsYXNoIG1vZGUuPC9lbnRyeT4KKyAgICAJCTwvcm93PgorICAgIAkJPHJvdz4KKyAgICAJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0ZMQVNIX0xFRF9NT0RFX1RPUkNIPC9jb25zdGFudD48L2VudHJ5PgorICAgIAkJICA8ZW50cnk+VG9yY2ggbW9kZS4gU2VlIFY0TDJfQ0lEX0ZMQVNIX1RPUkNIX0lOVEVOU0lUWS48L2VudHJ5PgorICAgIAkJPC9yb3c+CisgICAgCSAgICAgIDwvdGJvZHk+CisgICAgCSAgICA8L2VudHJ5dGJsPgorICAgIAkgIDwvcm93PgorICAgIAkgIDxyb3c+CisgICAgCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfRkxBU0hfU1RST0JFX1NPVVJDRTwvY29uc3RhbnQ+PC9lbnRyeT4KKyAgICAJICAgIDxlbnRyeT5tZW51PC9lbnRyeT4KKyAgICAJICA8L3Jvdz4KKyAgICAJICA8cm93IGlkPSJ2NGwyLWZsYXNoLXN0cm9iZS1zb3VyY2UiPjxlbnRyeQorICAgIAkgIHNwYW5uYW1lPSJkZXNjciI+RGVmaW5lcyB0aGUgc291cmNlIG9mIHRoZSBmbGFzaCBMRUQKKyAgICAJICBzdHJvYmUuPC9lbnRyeT4KKyAgICAJICA8L3Jvdz4KKyAgICAJICA8cm93PgorICAgIAkgICAgPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisgICAgCSAgICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisgICAgCQk8cm93PgorICAgIAkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRkxBU0hfU1RST0JFX1NPVVJDRV9TT0ZUV0FSRTwvY29uc3RhbnQ+PC9lbnRyeT4KKyAgICAJCSAgPGVudHJ5PlRoZSBmbGFzaCBzdHJvYmUgaXMgdHJpZ2dlcmVkIGJ5IHVzaW5nCisgICAgCQkgIHRoZSBWNEwyX0NJRF9GTEFTSF9TVFJPQkUgY29udHJvbC48L2VudHJ5PgorICAgIAkJPC9yb3c+CisgICAgCQk8cm93PgorICAgIAkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRkxBU0hfU1RST0JFX1NPVVJDRV9FWFRFUk5BTDwvY29uc3RhbnQ+PC9lbnRyeT4KKyAgICAJCSAgPGVudHJ5PlRoZSBmbGFzaCBzdHJvYmUgaXMgdHJpZ2dlcmVkIGJ5IGFuCisgICAgCQkgIGV4dGVybmFsIHNvdXJjZS4gVHlwaWNhbGx5IHRoaXMgaXMgYSBzZW5zb3IsCisgICAgCQkgIHdoaWNoIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHN5bmNocm9uaXNlcyB0aGUKKyAgICAJCSAgZmxhc2ggc3Ryb2JlIHN0YXJ0IHRvIGV4cG9zdXJlIHN0YXJ0LjwvZW50cnk+CisgICAgCQk8L3Jvdz4KKyAgICAJICAgICAgPC90Ym9keT4KKyAgICAJICAgIDwvZW50cnl0Ymw+CisgICAgCSAgPC9yb3c+CisgICAgCSAgPHJvdz4KKyAgICAJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9GTEFTSF9TVFJPQkU8L2NvbnN0YW50PjwvZW50cnk+CisgICAgCSAgICA8ZW50cnk+YnV0dG9uPC9lbnRyeT4KKyAgICAJICA8L3Jvdz4KKyAgICAJICA8cm93PgorICAgIAkgICAgPGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+U3Ryb2JlIGZsYXNoLiBWYWxpZCB3aGVuCisgICAgCSAgICBWNEwyX0NJRF9GTEFTSF9MRURfTU9ERSBpcyBzZXQgdG8KKyAgICAJICAgIFY0TDJfRkxBU0hfTEVEX01PREVfRkxBU0ggYW5kIFY0TDJfQ0lEX0ZMQVNIX1NUUk9CRV9TT1VSQ0UKKyAgICAJICAgIGlzIHNldCB0byBWNEwyX0ZMQVNIX1NUUk9CRV9TT1VSQ0VfU09GVFdBUkUuIFNldHRpbmcgdGhpcworICAgIAkgICAgY29udHJvbCBtYXkgbm90IGJlIHBvc3NpYmxlIGluIHByZXNlbmNlIG9mIHNvbWUgZmF1bHRzLgorICAgIAkgICAgU2VlIFY0TDJfQ0lEX0ZMQVNIX0ZBVUxULjwvZW50cnk+CisgICAgCSAgPC9yb3c+CisgICAgCSAgPHJvdz4KKyAgICAJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9GTEFTSF9TVFJPQkVfU1RPUDwvY29uc3RhbnQ+PC9lbnRyeT4KKyAgICAJICAgIDxlbnRyeT5idXR0b248L2VudHJ5PgorICAgIAkgIDwvcm93PgorICAgIAkgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+U3RvcCBmbGFzaCBzdHJvYmUgaW1tZWRpYXRlbHkuPC9lbnRyeT4KKyAgICAJICA8L3Jvdz4KKyAgICAJICA8cm93PgorICAgIAkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0ZMQVNIX1NUUk9CRV9TVEFUVVM8L2NvbnN0YW50PjwvZW50cnk+CisgICAgCSAgICA8ZW50cnk+Ym9vbGVhbjwvZW50cnk+CisgICAgCSAgPC9yb3c+CisgICAgCSAgPHJvdz4KKyAgICAJICAgIDxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlN0cm9iZSBzdGF0dXM6IHdoZXRoZXIgdGhlIGZsYXNoCisgICAgCSAgICBpcyBzdHJvYmluZyBhdCB0aGUgbW9tZW50IG9yIG5vdC4gVGhpcyBpcyBhIHJlYWQtb25seQorICAgIAkgICAgY29udHJvbC48L2VudHJ5PgorICAgIAkgIDwvcm93PgorICAgIAkgIDxyb3c+CisgICAgCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfRkxBU0hfVElNRU9VVDwvY29uc3RhbnQ+PC9lbnRyeT4KKyAgICAJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKyAgICAJICA8L3Jvdz4KKyAgICAJICA8cm93PgorICAgIAkgICAgPGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+SGFyZHdhcmUgdGltZW91dCBmb3IgZmxhc2guIFRoZQorICAgIAkgICAgZmxhc2ggc3Ryb2JlIGlzIHN0b3BwZWQgYWZ0ZXIgdGhpcyBwZXJpb2Qgb2YgdGltZSBoYXMKKyAgICAJICAgIHBhc3NlZCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgc3Ryb2JlLjwvZW50cnk+CisgICAgCSAgPC9yb3c+CisgICAgCSAgPHJvdz4KKyAgICAJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9GTEFTSF9JTlRFTlNJVFk8L2NvbnN0YW50PjwvZW50cnk+CisgICAgCSAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisgICAgCSAgPC9yb3c+CisgICAgCSAgPHJvdz4KKyAgICAJICAgIDxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkludGVuc2l0eSBvZiB0aGUgZmxhc2ggc3Ryb2JlIHdoZW4KKyAgICAJICAgIHRoZSBmbGFzaCBMRUQgaXMgaW4gZmxhc2ggbW9kZQorICAgIAkgICAgKFY0TDJfRkxBU0hfTEVEX01PREVfRkxBU0gpLiBUaGUgdW5pdCBzaG91bGQgYmUgbWlsbGlhbXBzCisgICAgCSAgICAobUEpIGlmIHBvc3NpYmxlLjwvZW50cnk+CisgICAgCSAgPC9yb3c+CisgICAgCSAgPHJvdz4KKyAgICAJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9GTEFTSF9UT1JDSF9JTlRFTlNJVFk8L2NvbnN0YW50PjwvZW50cnk+CisgICAgCSAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisgICAgCSAgPC9yb3c+CisgICAgCSAgPHJvdz4KKyAgICAJICAgIDxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkludGVuc2l0eSBvZiB0aGUgZmxhc2ggTEVEIGluCisgICAgCSAgICB0b3JjaCBtb2RlIChWNEwyX0ZMQVNIX0xFRF9NT0RFX1RPUkNIKS4gVGhlIHVuaXQgc2hvdWxkIGJlCisgICAgCSAgICBtaWxsaWFtcHMgKG1BKSBpZiBwb3NzaWJsZS4gU2V0dGluZyB0aGlzIGNvbnRyb2wgbWF5IG5vdAorICAgIAkgICAgYmUgcG9zc2libGUgaW4gcHJlc2VuY2Ugb2Ygc29tZSBmYXVsdHMuIFNlZQorICAgIAkgICAgVjRMMl9DSURfRkxBU0hfRkFVTFQuPC9lbnRyeT4KKyAgICAJICA8L3Jvdz4KKyAgICAJICA8cm93PgorICAgIAkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0ZMQVNIX0lORElDQVRPUl9JTlRFTlNJVFk8L2NvbnN0YW50PjwvZW50cnk+CisgICAgCSAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisgICAgCSAgPC9yb3c+CisgICAgCSAgPHJvdz4KKyAgICAJICAgIDxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkludGVuc2l0eSBvZiB0aGUgaW5kaWNhdG9yIExFRC4KKyAgICAJICAgIFRoZSBpbmRpY2F0b3IgTEVEIG1heSBiZSBmdWxseSBpbmRlcGVuZGVudCBvZiB0aGUgZmxhc2gKKyAgICAJICAgIExFRC4gVGhlIHVuaXQgc2hvdWxkIGJlIG1pY3JvYW1wcyAodUEpIGlmIHBvc3NpYmxlLjwvZW50cnk+CisgICAgCSAgPC9yb3c+CisgICAgCSAgPHJvdz4KKyAgICAJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9GTEFTSF9GQVVMVDwvY29uc3RhbnQ+PC9lbnRyeT4KKyAgICAJICAgIDxlbnRyeT5iaXRtYXNrPC9lbnRyeT4KKyAgICAJICA8L3Jvdz4KKyAgICAJICA8cm93PgorICAgIAkgICAgPGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+RmF1bHRzIHJlbGF0ZWQgdG8gdGhlIGZsYXNoLiBUaGUKKyAgICAJICAgIGZhdWx0cyB0ZWxsIGFib3V0IHNwZWNpZmljIHByb2JsZW1zIGluIHRoZSBmbGFzaCBjaGlwCisgICAgCSAgICBpdHNlbGYgb3IgdGhlIExFRHMgYXR0YWNoZWQgdG8gaXQuIEZhdWx0cyBtYXkgcHJldmVudAorICAgIAkgICAgZnVydGhlciB1c2Ugb2Ygc29tZSBvZiB0aGUgZmxhc2ggY29udHJvbHMuIEluIHBhcnRpY3VsYXIsCisgICAgCSAgICBWNEwyX0NJRF9GTEFTSF9MRURfTU9ERSBpcyBzZXQgdG8gVjRMMl9GTEFTSF9MRURfTU9ERV9OT05FCisgICAgCSAgICBpZiB0aGUgZmF1bHQgYWZmZWN0cyB0aGUgZmxhc2ggTEVELiBFeGFjdGx5IHdoaWNoIGZhdWx0cworICAgIAkgICAgaGF2ZSBzdWNoIGFuIGVmZmVjdCBpcyBjaGlwIGRlcGVuZGVudC4gUmVhZGluZyB0aGUgZmF1bHRzCisgICAgCSAgICByZXNldHMgdGhlIGNvbnRyb2wgYW5kIHJldHVybnMgdGhlIGNoaXAgdG8gYSB1c2FibGUgc3RhdGUKKyAgICAJICAgIGlmIHBvc3NpYmxlLjwvZW50cnk+CisgICAgCSAgPC9yb3c+CisgICAgCSAgPHJvdz4KKyAgICAJICAgIDxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorICAgIAkgICAgICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorICAgIAkJPHJvdz4KKyAgICAJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0ZMQVNIX0ZBVUxUX09WRVJfVk9MVEFHRTwvY29uc3RhbnQ+PC9lbnRyeT4KKyAgICAJCSAgPGVudHJ5PkZsYXNoIGNvbnRyb2xsZXIgdm9sdGFnZSB0byB0aGUgZmxhc2ggTEVECisgICAgCQkgIGhhcyBleGNlZWRlZCB0aGUgbGltaXQgc3BlY2lmaWMgdG8gdGhlIGZsYXNoCisgICAgCQkgIGNvbnRyb2xsZXIuPC9lbnRyeT4KKyAgICAJCTwvcm93PgorICAgIAkJPHJvdz4KKyAgICAJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0ZMQVNIX0ZBVUxUX1RJTUVPVVQ8L2NvbnN0YW50PjwvZW50cnk+CisgICAgCQkgIDxlbnRyeT5UaGUgZmxhc2ggc3Ryb2JlIHdhcyBzdGlsbCBvbiB3aGVuCisgICAgCQkgIHRoZSB0aW1lb3V0IHNldCBieSB0aGUgdXNlciAtLS0KKyAgICAJCSAgVjRMMl9DSURfRkxBU0hfVElNRU9VVCBjb250cm9sIC0tLSBoYXMgZXhwaXJlZC4KKyAgICAJCSAgTm90IGFsbCBmbGFzaCBjb250cm9sbGVycyBtYXkgc2V0IHRoaXMgaW4gYWxsCisgICAgCQkgIHN1Y2ggY29uZGl0aW9ucy48L2VudHJ5PgorICAgIAkJPC9yb3c+CisgICAgCQk8cm93PgorICAgIAkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRkxBU0hfRkFVTFRfT1ZFUl9URU1QRVJBVFVSRTwvY29uc3RhbnQ+PC9lbnRyeT4KKyAgICAJCSAgPGVudHJ5PlRoZSBmbGFzaCBjb250cm9sbGVyIGhhcyBvdmVyaGVhdGVkLjwvZW50cnk+CisgICAgCQk8L3Jvdz4KKyAgICAJCTxyb3c+CisgICAgCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9GTEFTSF9GQVVMVF9TSE9SVF9DSVJDVUlUPC9jb25zdGFudD48L2VudHJ5PgorICAgIAkJICA8ZW50cnk+VGhlIHNob3J0IGNpcmN1aXQgcHJvdGVjdGlvbiBvZiB0aGUgZmxhc2gKKyAgICAJCSAgY29udHJvbGxlciBoYXMgYmVlbiB0cmlnZ2VyZWQuPC9lbnRyeT4KKyAgICAJCTwvcm93PgorICAgIAkJPHJvdz4KKyAgICAJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0ZMQVNIX0ZBVUxUX09WRVJfQ1VSUkVOVDwvY29uc3RhbnQ+PC9lbnRyeT4KKyAgICAJCSAgPGVudHJ5PkN1cnJlbnQgaW4gdGhlIExFRCBwb3dlciBzdXBwbHkgaGFzIGV4Y2VlZGVkIHRoZSBsaW1pdAorICAgIAkJICBzcGVjaWZpYyB0byB0aGUgZmxhc2ggY29udHJvbGxlci48L2VudHJ5PgorICAgIAkJPC9yb3c+CisgICAgCQk8cm93PgorICAgIAkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRkxBU0hfRkFVTFRfSU5ESUNBVE9SPC9jb25zdGFudD48L2VudHJ5PgorICAgIAkJICA8ZW50cnk+VGhlIGZsYXNoIGNvbnRyb2xsZXIgaGFzIGRldGVjdGVkIGEgc2hvcnQgb3Igb3BlbgorICAgIAkJICBjaXJjdWl0IGNvbmRpdGlvbiBvbiB0aGUgaW5kaWNhdG9yIExFRC48L2VudHJ5PgorICAgIAkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0ZMQVNIX0ZBVUxUX1VOREVSX1ZPTFRBR0U8L2NvbnN0YW50PjwvZW50cnk+CisJCSAgPGVudHJ5PkZsYXNoIGNvbnRyb2xsZXIgdm9sdGFnZSB0byB0aGUgZmxhc2ggTEVECisJCSAgaGFzIGJlZW4gYmVsb3cgdGhlIG1pbmltdW0gbGltaXQgc3BlY2lmaWMgdG8gdGhlIGZsYXNoCisJCSAgY29udHJvbGxlci48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRkxBU0hfRkFVTFRfSU5QVVRfVk9MVEFHRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+VGhlIGlucHV0IHZvbHRhZ2Ugb2YgdGhlIGZsYXNoIGNvbnRyb2xsZXIgaXMgYmVsb3cKKwkJICB0aGUgbGltaXQgdW5kZXIgd2hpY2ggc3Ryb2JpbmcgdGhlIGZsYXNoIGF0IGZ1bGwgY3VycmVudAorCQkgIHdpbGwgbm90IGJlIHBvc3NpYmxlLlRoZSBjb25kaXRpb24gcGVyc2lzdHMgdW50aWwgdGhpcyBmbGFnCisJCSAgaXMgbm8gbG9uZ2VyIHNldC48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRkxBU0hfRkFVTFRfTEVEX09WRVJfVEVNUEVSQVRVUkU8L2NvbnN0YW50PjwvZW50cnk+CisJCSAgPGVudHJ5PlRoZSB0ZW1wZXJhdHVyZSBvZiB0aGUgTEVEIGhhcyBleGNlZWRlZCBpdHMKKwkJICBhbGxvd2VkIHVwcGVyIGxpbWl0LjwvZW50cnk+CisJCTwvcm93PgorICAgIAkgICAgICA8L3Rib2R5PgorICAgIAkgICAgPC9lbnRyeXRibD4KKyAgICAJICA8L3Jvdz4KKyAgICAJICA8cm93PgorICAgIAkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0ZMQVNIX0NIQVJHRTwvY29uc3RhbnQ+PC9lbnRyeT4KKyAgICAJICAgIDxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKyAgICAJICA8L3Jvdz4KKyAgICAJICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkVuYWJsZSBvciBkaXNhYmxlIGNoYXJnaW5nIG9mIHRoZSB4ZW5vbgorICAgIAkgIGZsYXNoIGNhcGFjaXRvci48L2VudHJ5PgorICAgIAkgIDwvcm93PgorICAgIAkgIDxyb3c+CisgICAgCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfRkxBU0hfUkVBRFk8L2NvbnN0YW50PjwvZW50cnk+CisgICAgCSAgICA8ZW50cnk+Ym9vbGVhbjwvZW50cnk+CisgICAgCSAgPC9yb3c+CisgICAgCSAgPHJvdz4KKyAgICAJICAgIDxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPklzIHRoZSBmbGFzaCByZWFkeSB0byBzdHJvYmU/CisgICAgCSAgICBYZW5vbiBmbGFzaGVzIHJlcXVpcmUgdGhlaXIgY2FwYWNpdG9ycyBjaGFyZ2VkIGJlZm9yZQorICAgIAkgICAgc3Ryb2JpbmcuIExFRCBmbGFzaGVzIG9mdGVuIHJlcXVpcmUgYSBjb29sZG93biBwZXJpb2QKKyAgICAJICAgIGFmdGVyIHN0cm9iZSBkdXJpbmcgd2hpY2ggYW5vdGhlciBzdHJvYmUgd2lsbCBub3QgYmUKKyAgICAJICAgIHBvc3NpYmxlLiBUaGlzIGlzIGEgcmVhZC1vbmx5IGNvbnRyb2wuPC9lbnRyeT4KKyAgICAJICA8L3Jvdz4KKyAgICAJICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorICAgIAk8L3Rib2R5PgorICAgICAgICAgIDwvdGdyb3VwPgorICAgICAgICAgIDwvdGFibGU+CisJPC9zZWN0aW9uPgorICAgICAgPC9zZWN0aW9uPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJqcGVnLWNvbnRyb2xzIj4KKyAgICAgIDx0aXRsZT5KUEVHIENvbnRyb2wgUmVmZXJlbmNlPC90aXRsZT4KKyAgICAgIDxwYXJhPlRoZSBKUEVHIGNsYXNzIGluY2x1ZGVzIGNvbnRyb2xzIGZvciBjb21tb24gZmVhdHVyZXMgb2YgSlBFRworICAgICAgZW5jb2RlcnMgYW5kIGRlY29kZXJzLiBDdXJyZW50bHkgaXQgaW5jbHVkZXMgZmVhdHVyZXMgZm9yIGNvZGVjcworICAgICAgaW1wbGVtZW50aW5nIHByb2dyZXNzaXZlIGJhc2VsaW5lIERDVCBjb21wcmVzc2lvbiBwcm9jZXNzIHdpdGgKKyAgICAgIEh1ZmZtYW4gZW50cm9waHkgY29kaW5nLjwvcGFyYT4KKyAgICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0ianBlZy1jb250cm9sLWlkIj4KKyAgICAgIDx0aXRsZT5KUEVHIENvbnRyb2wgSURzPC90aXRsZT4KKworICAgICAgPHRncm91cCBjb2xzPSI0Ij4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMSIgY29sd2lkdGg9IjEqIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMyIiBjb2x3aWR0aD0iNioiIC8+CisJPGNvbHNwZWMgY29sbmFtZT0iYzMiIGNvbHdpZHRoPSIyKiIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjNCIgY29sd2lkdGg9IjYqIiAvPgorCTxzcGFuc3BlYyBuYW1lc3Q9ImMxIiBuYW1lZW5kPSJjMiIgc3Bhbm5hbWU9ImlkIiAvPgorCTxzcGFuc3BlYyBuYW1lc3Q9ImMyIiBuYW1lZW5kPSJjNCIgc3Bhbm5hbWU9ImRlc2NyIiAvPgorCTx0aGVhZD4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiIGFsaWduPSJsZWZ0Ij5JRDwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+VHlwZTwvZW50cnk+CisJICA8L3Jvdz48cm93IHJvd3NlcD0iMSI+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGhlYWQ+CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfSlBFR19DTEFTUzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5PmNsYXNzPC9lbnRyeT4KKwkgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGhlIEpQRUcgY2xhc3MgZGVzY3JpcHRvci4gQ2FsbGluZworCSAgJlZJRElPQy1RVUVSWUNUUkw7IGZvciB0aGlzIGNvbnRyb2wgd2lsbCByZXR1cm4gYSBkZXNjcmlwdGlvbiBvZiB0aGlzCisJICBjb250cm9sIGNsYXNzLgorCisJPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0pQRUdfQ0hST01BX1NVQlNBTVBMSU5HPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+bWVudTwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9InY0bDItanBlZy1jaHJvbWEtc3Vic2FtcGxpbmciPgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5UaGUgY2hyb21hIHN1YnNhbXBsaW5nIGZhY3RvcnMgZGVzY3JpYmUgaG93CisJICAgIGVhY2ggY29tcG9uZW50IG9mIGFuIGlucHV0IGltYWdlIGlzIHNhbXBsZWQsIGluIHJlc3BlY3QgdG8gbWF4aW11bQorCSAgICBzYW1wbGUgcmF0ZSBpbiBlYWNoIHNwYXRpYWwgZGltZW5zaW9uLiBTZWUgPHhyZWYgbGlua2VuZD0iaXR1LXQ4MSIvPiwKKwkgICAgY2xhdXNlIEEuMS4xLiBmb3IgbW9yZSBkZXRhaWxzLiBUaGUgPGNvbnN0YW50PgorCSAgICBWNEwyX0NJRF9KUEVHX0NIUk9NQV9TVUJTQU1QTElORzwvY29uc3RhbnQ+IGNvbnRyb2wgZGV0ZXJtaW5lcyBob3cKKwkgICAgQ2IgYW5kIENyIGNvbXBvbmVudHMgYXJlIGRvd25zYW1wbGVkIGFmdGVyIGNvdmVydGluZyBhbiBpbnB1dCBpbWFnZQorCSAgICBmcm9tIFJHQiB0byBZJ0NiQ3IgY29sb3Igc3BhY2UuCisJICAgIDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCSAgICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0pQRUdfQ0hST01BX1NVQlNBTVBMSU5HXzQ0NDwvY29uc3RhbnQ+CisJCSAgPC9lbnRyeT48ZW50cnk+Tm8gY2hyb21hIHN1YnNhbXBsaW5nLCBlYWNoIHBpeGVsIGhhcworCQkgIFksIENyIGFuZCBDYiB2YWx1ZXMuPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0pQRUdfQ0hST01BX1NVQlNBTVBMSU5HXzQyMjwvY29uc3RhbnQ+CisJCSAgPC9lbnRyeT48ZW50cnk+SG9yaXpvbnRhbGx5IHN1YnNhbXBsZSBDciwgQ2IgY29tcG9uZW50cworCQkgIGJ5IGEgZmFjdG9yIG9mIDIuPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0pQRUdfQ0hST01BX1NVQlNBTVBMSU5HXzQyMDwvY29uc3RhbnQ+CisJCSAgPC9lbnRyeT48ZW50cnk+U3Vic2FtcGxlIENyLCBDYiBjb21wb25lbnRzIGhvcml6b250YWxseQorCQkgIGFuZCB2ZXJ0aWNhbGx5IGJ5IDIuPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0pQRUdfQ0hST01BX1NVQlNBTVBMSU5HXzQxMTwvY29uc3RhbnQ+CisJCSAgPC9lbnRyeT48ZW50cnk+SG9yaXpvbnRhbGx5IHN1YnNhbXBsZSBDciwgQ2IgY29tcG9uZW50cworCQkgIGJ5IGEgZmFjdG9yIG9mIDQuPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0pQRUdfQ0hST01BX1NVQlNBTVBMSU5HXzQxMDwvY29uc3RhbnQ+CisJCSAgPC9lbnRyeT48ZW50cnk+U3Vic2FtcGxlIENyLCBDYiBjb21wb25lbnRzIGhvcml6b250YWxseQorCQkgIGJ5IDQgYW5kIHZlcnRpY2FsbHkgYnkgMi48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfSlBFR19DSFJPTUFfU1VCU0FNUExJTkdfR1JBWTwvY29uc3RhbnQ+CisJCSAgPC9lbnRyeT48ZW50cnk+VXNlIG9ubHkgbHVtaW5hbmNlIGNvbXBvbmVudC48L2VudHJ5PgorCQk8L3Jvdz4KKwkgICAgICA8L3Rib2R5PgorCSAgICA8L2VudHJ5dGJsPgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfSlBFR19SRVNUQVJUX0lOVEVSVkFMPC9jb25zdGFudD4KKwkgICAgPC9lbnRyeT48ZW50cnk+aW50ZWdlcjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+CisJICAgICAgVGhlIHJlc3RhcnQgaW50ZXJ2YWwgZGV0ZXJtaW5lcyBhbiBpbnRlcnZhbCBvZiBpbnNlcnRpbmcgUlNUbQorCSAgICAgIG1hcmtlcnMgKG0gPSAwLi43KS4gVGhlIHB1cnBvc2Ugb2YgdGhlc2UgbWFya2VycyBpcyB0byBhZGRpdGlvbmFsbHkKKwkgICAgICByZWluaXRpYWxpemUgdGhlIGVuY29kZXIgcHJvY2VzcywgaW4gb3JkZXIgdG8gcHJvY2VzcyBibG9ja3Mgb2YKKwkgICAgICBhbiBpbWFnZSBpbmRlcGVuZGVudGx5LgorCSAgICAgIEZvciB0aGUgbG9zc3kgY29tcHJlc3Npb24gcHJvY2Vzc2VzIHRoZSByZXN0YXJ0IGludGVydmFsIHVuaXQgaXMKKwkgICAgICBNQ1UgKE1pbmltdW0gQ29kZWQgVW5pdCkgYW5kIGl0cyB2YWx1ZSBpcyBjb250YWluZWQgaW4gRFJJCisJICAgICAgKERlZmluZSBSZXN0YXJ0IEludGVydmFsKSBtYXJrZXIuIElmIDxjb25zdGFudD4KKwkgICAgICBWNEwyX0NJRF9KUEVHX1JFU1RBUlRfSU5URVJWQUw8L2NvbnN0YW50PiBjb250cm9sIGlzIHNldCB0byAwLAorCSAgICAgIERSSSBhbmQgUlNUbSBtYXJrZXJzIHdpbGwgbm90IGJlIGluc2VydGVkLgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJqcGVnLXF1YWxpdHktY29udHJvbCI+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9KUEVHX0NPTVBSRVNTSU9OX1FVQUxJVFk8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+CisJICAgICAgPGNvbnN0YW50PlY0TDJfQ0lEX0pQRUdfQ09NUFJFU1NJT05fUVVBTElUWTwvY29uc3RhbnQ+IGNvbnRyb2wKKwkgICAgICBkZXRlcm1pbmVzIHRyYWRlLW9mZiBiZXR3ZWVuIGltYWdlIHF1YWxpdHkgYW5kIHNpemUuCisJICAgICAgSXQgcHJvdmlkZXMgc2ltcGxlciBtZXRob2QgZm9yIGFwcGxpY2F0aW9ucyB0byBjb250cm9sIGltYWdlIHF1YWxpdHksCisJICAgICAgd2l0aG91dCBhIG5lZWQgZm9yIGRpcmVjdCByZWNvbmZpZ3VyYXRpb24gb2YgbHVtaW5hbmNlIGFuZCBjaHJvbWluYW5jZQorCSAgICAgIHF1YW50aXphdGlvbiB0YWJsZXMuCisKKwkgICAgICBJbiBjYXNlcyB3aGVyZSBhIGRyaXZlciB1c2VzIHF1YW50aXphdGlvbiB0YWJsZXMgY29uZmlndXJlZCBkaXJlY3RseQorCSAgICAgIGJ5IGFuIGFwcGxpY2F0aW9uLCB1c2luZyBpbnRlcmZhY2VzIGRlZmluZWQgZWxzZXdoZXJlLCA8Y29uc3RhbnQ+CisJICAgICAgVjRMMl9DSURfSlBFR19DT01QUkVTU0lPTl9RVUFMSVRZPC9jb25zdGFudD4gY29udHJvbCBzaG91bGQgYmUgc2V0CisJICAgICAgYnkgZHJpdmVyIHRvIDAuCisKKwkgICAgICA8cGFyYT5UaGUgdmFsdWUgcmFuZ2Ugb2YgdGhpcyBjb250cm9sIGlzIGRyaXZlci1zcGVjaWZpYy4gT25seQorCSAgICAgIHBvc2l0aXZlLCBub24temVybyB2YWx1ZXMgYXJlIG1lYW5pbmdmdWwuIFRoZSByZWNvbW1lbmRlZCByYW5nZQorCSAgICAgIGlzIDEgLSAxMDAsIHdoZXJlIGxhcmdlciB2YWx1ZXMgY29ycmVzcG9uZCB0byBiZXR0ZXIgaW1hZ2UgcXVhbGl0eS4KKwkgICAgICA8L3BhcmE+CisJICAgIDwvZW50cnk+CisJICAgIDwvcm93PgorCSAgPHJvdyBpZD0ianBlZy1hY3RpdmUtbWFya2VyLWNvbnRyb2wiPgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfSlBFR19BQ1RJVkVfTUFSS0VSPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Yml0bWFzazwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlNwZWNpZnkgd2hpY2ggSlBFRyBtYXJrZXJzIGFyZSBpbmNsdWRlZAorCSAgICBpbiBjb21wcmVzc2VkIHN0cmVhbS4gVGhpcyBjb250cm9sIGlzIHZhbGlkIG9ubHkgZm9yIGVuY29kZXJzLgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnl0Ymwgc3Bhbm5hbWU9ImRlc2NyIiBjb2xzPSIyIj4KKwkgICAgICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQk8cm93PgorCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9KUEVHX0FDVElWRV9NQVJLRVJfQVBQMDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+QXBwbGljYXRpb24gZGF0YSBzZWdtZW50IEFQUDxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0Pi48L2VudHJ5PgorCQk8L3Jvdz48cm93PgorCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9KUEVHX0FDVElWRV9NQVJLRVJfQVBQMTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+QXBwbGljYXRpb24gZGF0YSBzZWdtZW50IEFQUDxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0Pi48L2VudHJ5PgorCQk8L3Jvdz48cm93PgorCQkgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9KUEVHX0FDVElWRV9NQVJLRVJfQ09NPC9jb25zdGFudD48L2VudHJ5PgorCQkgIDxlbnRyeT5Db21tZW50IHNlZ21lbnQuPC9lbnRyeT4KKwkJPC9yb3c+PHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfSlBFR19BQ1RJVkVfTUFSS0VSX0RRVDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+UXVhbnRpemF0aW9uIHRhYmxlcyBzZWdtZW50LjwvZW50cnk+CisJCTwvcm93Pjxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0pQRUdfQUNUSVZFX01BUktFUl9ESFQ8L2NvbnN0YW50PjwvZW50cnk+CisJCSAgPGVudHJ5Pkh1ZmZtYW4gdGFibGVzIHNlZ21lbnQuPC9lbnRyeT4KKwkJPC9yb3c+CisJICAgICAgPC90Ym9keT4KKwkgICAgPC9lbnRyeXRibD4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgICA8L3RhYmxlPgorICAgICAgPHBhcmE+Rm9yIG1vcmUgZGV0YWlscyBhYm91dCBKUEVHIHNwZWNpZmljYXRpb24sIHJlZmVyCisgICAgICB0byA8eHJlZiBsaW5rZW5kPSJpdHUtdDgxIi8+LCA8eHJlZiBsaW5rZW5kPSJqZmlmIi8+LAorICAgICAgPHhyZWYgbGlua2VuZD0idzNjLWpwZWctamZpZiIvPi48L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImltYWdlLXNvdXJjZS1jb250cm9scyI+CisgICAgICA8dGl0bGU+SW1hZ2UgU291cmNlIENvbnRyb2wgUmVmZXJlbmNlPC90aXRsZT4KKworICAgICAgPG5vdGU+CisJPHRpdGxlPkV4cGVyaW1lbnRhbDwvdGl0bGU+CisKKwk8cGFyYT5UaGlzIGlzIGFuIDxsaW5rCisJbGlua2VuZD0iZXhwZXJpbWVudGFsIj5leHBlcmltZW50YWw8L2xpbms+IGludGVyZmFjZSBhbmQgbWF5CisJY2hhbmdlIGluIHRoZSBmdXR1cmUuPC9wYXJhPgorICAgICAgPC9ub3RlPgorCisgICAgICA8cGFyYT4KKwlUaGUgSW1hZ2UgU291cmNlIGNvbnRyb2wgY2xhc3MgaXMgaW50ZW5kZWQgZm9yIGxvdy1sZXZlbAorCWNvbnRyb2wgb2YgaW1hZ2Ugc291cmNlIGRldmljZXMgc3VjaCBhcyBpbWFnZSBzZW5zb3JzLiBUaGUKKwlkZXZpY2VzIGZlYXR1cmUgYW4gYW5hbG9ndWUgdG8gZGlnaXRhbCBjb252ZXJ0ZXIgYW5kIGEgYnVzCisJdHJhbnNtaXR0ZXIgdG8gdHJhbnNtaXQgdGhlIGltYWdlIGRhdGEgb3V0IG9mIHRoZSBkZXZpY2UuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iaW1hZ2Utc291cmNlLWNvbnRyb2wtaWQiPgorICAgICAgPHRpdGxlPkltYWdlIFNvdXJjZSBDb250cm9sIElEczwvdGl0bGU+CisKKyAgICAgIDx0Z3JvdXAgY29scz0iNCI+CisJPGNvbHNwZWMgY29sbmFtZT0iYzEiIGNvbHdpZHRoPSIxKiIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMiIgY29sd2lkdGg9IjYqIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMzIiBjb2x3aWR0aD0iMioiIC8+CisJPGNvbHNwZWMgY29sbmFtZT0iYzQiIGNvbHdpZHRoPSI2KiIgLz4KKwk8c3BhbnNwZWMgbmFtZXN0PSJjMSIgbmFtZWVuZD0iYzIiIHNwYW5uYW1lPSJpZCIgLz4KKwk8c3BhbnNwZWMgbmFtZXN0PSJjMiIgbmFtZWVuZD0iYzQiIHNwYW5uYW1lPSJkZXNjciIgLz4KKwk8dGhlYWQ+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIiBhbGlnbj0ibGVmdCI+SUQ8L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImxlZnQiPlR5cGU8L2VudHJ5PgorCSAgPC9yb3c+PHJvdyByb3dzZXA9IjEiPjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3RoZWFkPgorCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0lNQUdFX1NPVVJDRV9DTEFTUzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmNsYXNzPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGhlIElNQUdFX1NPVVJDRSBjbGFzcyBkZXNjcmlwdG9yLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9WQkxBTks8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VmVydGljYWwgYmxhbmtpbmcuIFRoZSBpZGxlIHBlcmlvZAorCSAgICBhZnRlciBldmVyeSBmcmFtZSBkdXJpbmcgd2hpY2ggbm8gaW1hZ2UgZGF0YSBpcyBwcm9kdWNlZC4KKwkgICAgVGhlIHVuaXQgb2YgdmVydGljYWwgYmxhbmtpbmcgaXMgYSBsaW5lLiBFdmVyeSBsaW5lIGhhcworCSAgICBsZW5ndGggb2YgdGhlIGltYWdlIHdpZHRoIHBsdXMgaG9yaXpvbnRhbCBibGFua2luZyBhdCB0aGUKKwkgICAgcGl4ZWwgcmF0ZSBkZWZpbmVkIGJ5CisJICAgIDxjb25zdGFudD5WNEwyX0NJRF9QSVhFTF9SQVRFPC9jb25zdGFudD4gY29udHJvbCBpbiB0aGUKKwkgICAgc2FtZSBzdWItZGV2aWNlLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9IQkxBTks8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+SG9yaXpvbnRhbCBibGFua2luZy4gVGhlIGlkbGUKKwkgICAgcGVyaW9kIGFmdGVyIGV2ZXJ5IGxpbmUgb2YgaW1hZ2UgZGF0YSBkdXJpbmcgd2hpY2ggbm8KKwkgICAgaW1hZ2UgZGF0YSBpcyBwcm9kdWNlZC4gVGhlIHVuaXQgb2YgaG9yaXpvbnRhbCBibGFua2luZyBpcworCSAgICBwaXhlbHMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0FOQUxPR1VFX0dBSU48L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+QW5hbG9ndWUgZ2FpbiBpcyBnYWluIGFmZmVjdGluZworCSAgICBhbGwgY29sb3VyIGNvbXBvbmVudHMgaW4gdGhlIHBpeGVsIG1hdHJpeC4gVGhlIGdhaW4KKwkgICAgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBpbiB0aGUgYW5hbG9ndWUgZG9tYWluIGJlZm9yZSBBL0QKKwkgICAgY29udmVyc2lvbi4KKwkgICAgPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX1RFU1RfUEFUVEVSTl9SRUQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGVzdCBwYXR0ZXJuIHJlZCBjb2xvdXIgY29tcG9uZW50LgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfVEVTVF9QQVRURVJOX0dSRUVOUjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5UZXN0IHBhdHRlcm4gZ3JlZW4gKG5leHQgdG8gcmVkKQorCSAgICBjb2xvdXIgY29tcG9uZW50LgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfVEVTVF9QQVRURVJOX0JMVUU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGVzdCBwYXR0ZXJuIGJsdWUgY29sb3VyIGNvbXBvbmVudC4KKwkgICAgPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX1RFU1RfUEFUVEVSTl9HUkVFTkI8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGVzdCBwYXR0ZXJuIGdyZWVuIChuZXh0IHRvIGJsdWUpCisJICAgIGNvbG91ciBjb21wb25lbnQuCisJICAgIDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgICAgPC90YWJsZT4KKworICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJpbWFnZS1wcm9jZXNzLWNvbnRyb2xzIj4KKyAgICAgIDx0aXRsZT5JbWFnZSBQcm9jZXNzIENvbnRyb2wgUmVmZXJlbmNlPC90aXRsZT4KKworICAgICAgPG5vdGU+CisJPHRpdGxlPkV4cGVyaW1lbnRhbDwvdGl0bGU+CisKKwk8cGFyYT5UaGlzIGlzIGFuIDxsaW5rCisJbGlua2VuZD0iZXhwZXJpbWVudGFsIj5leHBlcmltZW50YWw8L2xpbms+IGludGVyZmFjZSBhbmQgbWF5CisJY2hhbmdlIGluIHRoZSBmdXR1cmUuPC9wYXJhPgorICAgICAgPC9ub3RlPgorCisgICAgICA8cGFyYT4KKwlUaGUgSW1hZ2UgUHJvY2VzcyBjb250cm9sIGNsYXNzIGlzIGludGVuZGVkIGZvciBsb3ctbGV2ZWwgY29udHJvbCBvZgorCWltYWdlIHByb2Nlc3NpbmcgZnVuY3Rpb25zLiBVbmxpa2UKKwk8Y29uc3RhbnQ+VjRMMl9DSURfSU1BR0VfU09VUkNFX0NMQVNTPC9jb25zdGFudD4sIHRoZSBjb250cm9scyBpbgorCXRoaXMgY2xhc3MgYWZmZWN0IHByb2Nlc3NpbmcgdGhlIGltYWdlLCBhbmQgZG8gbm90IGNvbnRyb2wgY2FwdHVyaW5nCisJb2YgaXQuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iaW1hZ2UtcHJvY2Vzcy1jb250cm9sLWlkIj4KKyAgICAgIDx0aXRsZT5JbWFnZSBQcm9jZXNzIENvbnRyb2wgSURzPC90aXRsZT4KKworICAgICAgPHRncm91cCBjb2xzPSI0Ij4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMSIgY29sd2lkdGg9IjEqIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMyIiBjb2x3aWR0aD0iNioiIC8+CisJPGNvbHNwZWMgY29sbmFtZT0iYzMiIGNvbHdpZHRoPSIyKiIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjNCIgY29sd2lkdGg9IjYqIiAvPgorCTxzcGFuc3BlYyBuYW1lc3Q9ImMxIiBuYW1lZW5kPSJjMiIgc3Bhbm5hbWU9ImlkIiAvPgorCTxzcGFuc3BlYyBuYW1lc3Q9ImMyIiBuYW1lZW5kPSJjNCIgc3Bhbm5hbWU9ImRlc2NyIiAvPgorCTx0aGVhZD4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiIGFsaWduPSJsZWZ0Ij5JRDwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+VHlwZTwvZW50cnk+CisJICA8L3Jvdz48cm93IHJvd3NlcD0iMSI+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGhlYWQ+CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfSU1BR0VfUFJPQ19DTEFTUzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmNsYXNzPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGhlIElNQUdFX1BST0MgY2xhc3MgZGVzY3JpcHRvci48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfTElOS19GUkVRPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+aW50ZWdlciBtZW51PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+RGF0YSBidXMgZnJlcXVlbmN5LiBUb2dldGhlciB3aXRoIHRoZQorCSAgICBtZWRpYSBidXMgcGl4ZWwgY29kZSwgYnVzIHR5cGUgKGNsb2NrIGN5Y2xlcyBwZXIgc2FtcGxlKSwgdGhlCisJICAgIGRhdGEgYnVzIGZyZXF1ZW5jeSBkZWZpbmVzIHRoZSBwaXhlbCByYXRlCisJICAgICg8Y29uc3RhbnQ+VjRMMl9DSURfUElYRUxfUkFURTwvY29uc3RhbnQ+KSBpbiB0aGUKKwkgICAgcGl4ZWwgYXJyYXkgKG9yIHBvc3NpYmx5IGVsc2V3aGVyZSwgaWYgdGhlIGRldmljZSBpcyBub3QgYW4KKwkgICAgaW1hZ2Ugc2Vuc29yKS4gVGhlIGZyYW1lIHJhdGUgY2FuIGJlIGNhbGN1bGF0ZWQgZnJvbSB0aGUgcGl4ZWwKKwkgICAgY2xvY2ssIGltYWdlIHdpZHRoIGFuZCBoZWlnaHQgYW5kIGhvcml6b250YWwgYW5kIHZlcnRpY2FsCisJICAgIGJsYW5raW5nLiBXaGlsZSB0aGUgcGl4ZWwgcmF0ZSBjb250cm9sIG1heSBiZSBkZWZpbmVkIGVsc2V3aGVyZQorCSAgICB0aGFuIGluIHRoZSBzdWJkZXYgY29udGFpbmluZyB0aGUgcGl4ZWwgYXJyYXksIHRoZSBmcmFtZSByYXRlCisJICAgIGNhbm5vdCBiZSBvYnRhaW5lZCBmcm9tIHRoYXQgaW5mb3JtYXRpb24uIFRoaXMgaXMgYmVjYXVzZSBvbmx5CisJICAgIG9uIHRoZSBwaXhlbCBhcnJheSBpdCBjYW4gYmUgYXNzdW1lZCB0aGF0IHRoZSB2ZXJ0aWNhbCBhbmQKKwkgICAgaG9yaXpvbnRhbCBibGFua2luZyBpbmZvcm1hdGlvbiBpcyBleGFjdDogbm8gb3RoZXIgYmxhbmtpbmcgaXMKKwkgICAgYWxsb3dlZCBpbiB0aGUgcGl4ZWwgYXJyYXkuIFRoZSBzZWxlY3Rpb24gb2YgZnJhbWUgcmF0ZSBpcworCSAgICBwZXJmb3JtZWQgYnkgc2VsZWN0aW5nIHRoZSBkZXNpcmVkIGhvcml6b250YWwgYW5kIHZlcnRpY2FsCisJICAgIGJsYW5raW5nLiBUaGUgdW5pdCBvZiB0aGlzIGNvbnRyb2wgaXMgSHouIDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9QSVhFTF9SQVRFPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+NjQtYml0IGludGVnZXI8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5QaXhlbCByYXRlIGluIHRoZSBzb3VyY2UgcGFkcyBvZgorCSAgICB0aGUgc3ViZGV2LiBUaGlzIGNvbnRyb2wgaXMgcmVhZC1vbmx5IGFuZCBpdHMgdW5pdCBpcworCSAgICBwaXhlbHMgLyBzZWNvbmQuCisJICAgIDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9URVNUX1BBVFRFUk48L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5tZW51PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0idjRsMi10ZXN0LXBhdHRlcm4iPgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj4gU29tZSBjYXB0dXJlL2Rpc3BsYXkvc2Vuc29yIGRldmljZXMgaGF2ZQorCSAgICB0aGUgY2FwYWJpbGl0eSB0byBnZW5lcmF0ZSB0ZXN0IHBhdHRlcm4gaW1hZ2VzLiBUaGVzZSBoYXJkd2FyZQorCSAgICBzcGVjaWZpYyB0ZXN0IHBhdHRlcm5zIGNhbiBiZSB1c2VkIHRvIHRlc3QgaWYgYSBkZXZpY2UgaXMgd29ya2luZworCSAgICBwcm9wZXJseS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICAgIDwvdGFibGU+CisKKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iZHYtY29udHJvbHMiPgorICAgICAgPHRpdGxlPkRpZ2l0YWwgVmlkZW8gQ29udHJvbCBSZWZlcmVuY2U8L3RpdGxlPgorCisgICAgICA8bm90ZT4KKwk8dGl0bGU+RXhwZXJpbWVudGFsPC90aXRsZT4KKworCTxwYXJhPlRoaXMgaXMgYW4gPGxpbmsKKwlsaW5rZW5kPSJleHBlcmltZW50YWwiPmV4cGVyaW1lbnRhbDwvbGluaz4gaW50ZXJmYWNlIGFuZCBtYXkKKwljaGFuZ2UgaW4gdGhlIGZ1dHVyZS48L3BhcmE+CisgICAgICA8L25vdGU+CisKKyAgICAgIDxwYXJhPgorCVRoZSBEaWdpdGFsIFZpZGVvIGNvbnRyb2wgY2xhc3MgaXMgaW50ZW5kZWQgdG8gY29udHJvbCByZWNlaXZlcnMKKwlhbmQgdHJhbnNtaXR0ZXJzIGZvciA8dWxpbmsgdXJsPSJodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ZnYSI+VkdBPC91bGluaz4sCisJPHVsaW5rIHVybD0iaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EaWdpdGFsX1Zpc3VhbF9JbnRlcmZhY2UiPkRWSTwvdWxpbms+CisJKERpZ2l0YWwgVmlzdWFsIEludGVyZmFjZSksIEhETUkgKDx4cmVmIGxpbmtlbmQ9ImhkbWkiIC8+KSBhbmQgRGlzcGxheVBvcnQgKDx4cmVmIGxpbmtlbmQ9ImRwIiAvPikuCisJVGhlc2UgY29udHJvbHMgYXJlIGdlbmVyYWxseSBleHBlY3RlZCB0byBiZSBwcml2YXRlIHRvIHRoZSByZWNlaXZlciBvciB0cmFuc21pdHRlcgorCXN1YmRldmljZSB0aGF0IGltcGxlbWVudHMgdGhlbSwgc28gdGhleSBhcmUgb25seSBleHBvc2VkIG9uIHRoZQorCTxmaWxlbmFtZT4vZGV2L3Y0bC1zdWJkZXYqPC9maWxlbmFtZT4gZGV2aWNlIG5vZGUuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPk5vdGUgdGhhdCB0aGVzZSBkZXZpY2VzIGNhbiBoYXZlIG11bHRpcGxlIGlucHV0IG9yIG91dHB1dCBwYWRzIHdoaWNoIGFyZQorICAgICAgaG9va2VkIHVwIHRvIGUuZy4gSERNSSBjb25uZWN0b3JzLiBFdmVuIHRob3VnaCB0aGUgc3ViZGV2aWNlIHdpbGwgcmVjZWl2ZSBvcgorICAgICAgdHJhbnNtaXQgdmlkZW8gZnJvbS90byBvbmx5IG9uZSBvZiB0aG9zZSBwYWRzLCB0aGUgb3RoZXIgcGFkcyBjYW4gc3RpbGwgYmUKKyAgICAgIGFjdGl2ZSB3aGVuIGl0IGNvbWVzIHRvIEVESUQgKEV4dGVuZGVkIERpc3BsYXkgSWRlbnRpZmljYXRpb24gRGF0YSwKKyAgICAgIDx4cmVmIGxpbmtlbmQ9InZlc2FlZGlkIiAvPikgYW5kIEhEQ1AgKEhpZ2gtYmFuZHdpZHRoIERpZ2l0YWwgQ29udGVudAorICAgICAgUHJvdGVjdGlvbiBTeXN0ZW0sIDx4cmVmIGxpbmtlbmQ9ImhkY3AiIC8+KSBwcm9jZXNzaW5nLCBhbGxvd2luZyB0aGUgZGV2aWNlCisgICAgICB0byBkbyB0aGUgZmFpcmx5IHNsb3cgRURJRC9IRENQIGhhbmRsaW5nIGluIGFkdmFuY2UuIFRoaXMgYWxsb3dzIGZvciBxdWljaworICAgICAgc3dpdGNoaW5nIGJldHdlZW4gY29ubmVjdG9ycy48L3BhcmE+CisKKyAgICAgIDxwYXJhPlRoZXNlIHBhZHMgYXBwZWFyIGluIHNldmVyYWwgb2YgdGhlIGNvbnRyb2xzIGluIHRoaXMgc2VjdGlvbiBhcworICAgICAgYml0bWFza3MsIG9uZSBiaXQgZm9yIGVhY2ggcGFkLiBCaXQgMCBjb3JyZXNwb25kcyB0byBwYWQgMCwgYml0IDEgdG8gcGFkIDEsCisgICAgICBldGMuIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb250cm9sIGlzIHRoZSBzZXQgb2YgdmFsaWQgcGFkcy48L3BhcmE+CisKKyAgICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iZHYtY29udHJvbC1pZCI+CisgICAgICA8dGl0bGU+RGlnaXRhbCBWaWRlbyBDb250cm9sIElEczwvdGl0bGU+CisKKyAgICAgIDx0Z3JvdXAgY29scz0iNCI+CisJPGNvbHNwZWMgY29sbmFtZT0iYzEiIGNvbHdpZHRoPSIxKiIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMiIgY29sd2lkdGg9IjYqIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMzIiBjb2x3aWR0aD0iMioiIC8+CisJPGNvbHNwZWMgY29sbmFtZT0iYzQiIGNvbHdpZHRoPSI2KiIgLz4KKwk8c3BhbnNwZWMgbmFtZXN0PSJjMSIgbmFtZWVuZD0iYzIiIHNwYW5uYW1lPSJpZCIgLz4KKwk8c3BhbnNwZWMgbmFtZXN0PSJjMiIgbmFtZWVuZD0iYzQiIHNwYW5uYW1lPSJkZXNjciIgLz4KKwk8dGhlYWQ+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIiBhbGlnbj0ibGVmdCI+SUQ8L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImxlZnQiPlR5cGU8L2VudHJ5PgorCSAgPC9yb3c+PHJvdyByb3dzZXA9IjEiPjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3RoZWFkPgorCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0RWX0NMQVNTPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Y2xhc3M8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5UaGUgRGlnaXRhbCBWaWRlbyBjbGFzcyBkZXNjcmlwdG9yLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9EVl9UWF9IT1RQTFVHPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Yml0bWFzazwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPk1hbnkgY29ubmVjdG9ycyBoYXZlIGEgaG90cGx1ZyBwaW4gd2hpY2ggaXMgaGlnaAorCSAgICBpZiBFRElEIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBzb3VyY2UuIFRoaXMgY29udHJvbCBzaG93cyB0aGUKKwkgICAgc3RhdGUgb2YgdGhlIGhvdHBsdWcgcGluIGFzIHNlZW4gYnkgdGhlIHRyYW5zbWl0dGVyLgorCSAgICBFYWNoIGJpdCBjb3JyZXNwb25kcyB0byBhbiBvdXRwdXQgcGFkIG9uIHRoZSB0cmFuc21pdHRlci4gSWYgYW4gb3V0cHV0IHBhZAorCSAgICBkb2VzIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgaG90cGx1ZyBwaW4sIHRoZW4gdGhlIGJpdCBmb3IgdGhhdCBwYWQgd2lsbCBiZSAwLgorCSAgICBUaGlzIHJlYWQtb25seSBjb250cm9sIGlzIGFwcGxpY2FibGUgdG8gRFZJLUQsIEhETUkgYW5kIERpc3BsYXlQb3J0IGNvbm5lY3RvcnMuCisJICAgIDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9EVl9UWF9SWFNFTlNFPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Yml0bWFzazwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlJ4IFNlbnNlIGlzIHRoZSBkZXRlY3Rpb24gb2YgcHVsbC11cHMgb24gdGhlIFRNRFMKKyAgICAgICAgICAgIGNsb2NrIGxpbmVzLiBUaGlzIG5vcm1hbGx5IG1lYW5zIHRoYXQgdGhlIHNpbmsgaGFzIGxlZnQvZW50ZXJlZCBzdGFuZGJ5IChpLmUuCisJICAgIHRoZSB0cmFuc21pdHRlciBjYW4gc2Vuc2UgdGhhdCB0aGUgcmVjZWl2ZXIgaXMgcmVhZHkgdG8gcmVjZWl2ZSB2aWRlbykuCisJICAgIEVhY2ggYml0IGNvcnJlc3BvbmRzIHRvIGFuIG91dHB1dCBwYWQgb24gdGhlIHRyYW5zbWl0dGVyLiBJZiBhbiBvdXRwdXQgcGFkCisJICAgIGRvZXMgbm90IGhhdmUgYW4gYXNzb2NpYXRlZCBSeCBTZW5zZSwgdGhlbiB0aGUgYml0IGZvciB0aGF0IHBhZCB3aWxsIGJlIDAuCisJICAgIFRoaXMgcmVhZC1vbmx5IGNvbnRyb2wgaXMgYXBwbGljYWJsZSB0byBEVkktRCBhbmQgSERNSSBkZXZpY2VzLgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfRFZfVFhfRURJRF9QUkVTRU5UPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Yml0bWFzazwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPldoZW4gdGhlIHRyYW5zbWl0dGVyIHNlZXMgdGhlIGhvdHBsdWcgc2lnbmFsIGZyb20gdGhlCisJICAgIHJlY2VpdmVyIGl0IHdpbGwgYXR0ZW1wdCB0byByZWFkIHRoZSBFRElELiBJZiBzZXQsIHRoZW4gdGhlIHRyYW5zbWl0dGVyIGhhcyByZWFkCisJICAgIGF0IGxlYXN0IHRoZSBmaXJzdCBibG9jayAoPSAxMjggYnl0ZXMpLgorCSAgICBFYWNoIGJpdCBjb3JyZXNwb25kcyB0byBhbiBvdXRwdXQgcGFkIG9uIHRoZSB0cmFuc21pdHRlci4gSWYgYW4gb3V0cHV0IHBhZAorCSAgICBkb2VzIG5vdCBzdXBwb3J0IEVESURzLCB0aGVuIHRoZSBiaXQgZm9yIHRoYXQgcGFkIHdpbGwgYmUgMC4KKwkgICAgVGhpcyByZWFkLW9ubHkgY29udHJvbCBpcyBhcHBsaWNhYmxlIHRvIFZHQSwgRFZJLUEvRCwgSERNSSBhbmQgRGlzcGxheVBvcnQgY29ubmVjdG9ycy4KKwkgICAgPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0RWX1RYX01PREU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeSBpZD0idjRsMi1kdi10eC1tb2RlIj5lbnVtIHY0bDJfZHZfdHhfbW9kZTwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkhETUkgdHJhbnNtaXR0ZXJzIGNhbiB0cmFuc21pdCBpbiBEVkktRCBtb2RlIChqdXN0IHZpZGVvKQorCSAgICBvciBpbiBIRE1JIG1vZGUgKHZpZGVvICsgYXVkaW8gKyBhdXhpbGlhcnkgZGF0YSkuIFRoaXMgY29udHJvbCBzZWxlY3RzIHdoaWNoIG1vZGUKKwkgICAgdG8gdXNlOiBWNEwyX0RWX1RYX01PREVfRFZJX0Qgb3IgVjRMMl9EVl9UWF9NT0RFX0hETUkuCisJICAgIFRoaXMgY29udHJvbCBpcyBhcHBsaWNhYmxlIHRvIEhETUkgY29ubmVjdG9ycy4KKwkgICAgPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0RWX1RYX1JHQl9SQU5HRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5IGlkPSJ2NGwyLWR2LXJnYi1yYW5nZSI+ZW51bSB2NGwyX2R2X3JnYl9yYW5nZTwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlNlbGVjdCB0aGUgcXVhbnRpemF0aW9uIHJhbmdlIGZvciBSR0Igb3V0cHV0LiBWNEwyX0RWX1JBTkdFX0FVVE8KKwkgICAgZm9sbG93cyB0aGUgUkdCIHF1YW50aXphdGlvbiByYW5nZSBzcGVjaWZpZWQgaW4gdGhlIHN0YW5kYXJkIGZvciB0aGUgdmlkZW8gaW50ZXJmYWNlCisJICAgIChpZS4gPHhyZWYgbGlua2VuZD0iY2VhODYxIiAvPiBmb3IgSERNSSkuIFY0TDJfRFZfUkFOR0VfTElNSVRFRCBhbmQgVjRMMl9EVl9SQU5HRV9GVUxMIG92ZXJyaWRlIHRoZSBzdGFuZGFyZAorCSAgICB0byBiZSBjb21wYXRpYmxlIHdpdGggc2lua3MgdGhhdCBoYXZlIG5vdCBpbXBsZW1lbnRlZCB0aGUgc3RhbmRhcmQgY29ycmVjdGx5CisJICAgICh1bmZvcnR1bmF0ZWx5IHF1aXRlIGNvbW1vbiBmb3IgSERNSSBhbmQgRFZJLUQpLiBGdWxsIHJhbmdlIGFsbG93cyBhbGwgcG9zc2libGUgdmFsdWVzIHRvIGJlCisJICAgIHVzZWQgd2hlcmVhcyBsaW1pdGVkIHJhbmdlIHNldHMgdGhlIHJhbmdlIHRvICgxNiAmbHQ7Jmx0OyAoTi04KSkgLSAoMjM1ICZsdDsmbHQ7IChOLTgpKQorCSAgICB3aGVyZSBOIGlzIHRoZSBudW1iZXIgb2YgYml0cyBwZXIgY29tcG9uZW50LgorCSAgICBUaGlzIGNvbnRyb2wgaXMgYXBwbGljYWJsZSB0byBWR0EsIERWSS1BL0QsIEhETUkgYW5kIERpc3BsYXlQb3J0IGNvbm5lY3RvcnMuCisJICAgIDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9EVl9SWF9QT1dFUl9QUkVTRU5UPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+Yml0bWFzazwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkRldGVjdHMgd2hldGhlciB0aGUgcmVjZWl2ZXIgcmVjZWl2ZXMgcG93ZXIgZnJvbSB0aGUgc291cmNlCisJICAgIChlLmcuIEhETUkgY2FycmllcyA1ViBvbiBvbmUgb2YgdGhlIHBpbnMpLiBUaGlzIGlzIG9mdGVuIHVzZWQgdG8gcG93ZXIgYW4gZWVwcm9tCisJICAgIHdoaWNoIGNvbnRhaW5zIEVESUQgaW5mb3JtYXRpb24sIHN1Y2ggdGhhdCB0aGUgc291cmNlIGNhbiByZWFkIHRoZSBFRElEIGV2ZW4gaWYKKwkgICAgdGhlIHNpbmsgaXMgaW4gc3RhbmRieS9wb3dlciBvZmYuCisJICAgIEVhY2ggYml0IGNvcnJlc3BvbmRzIHRvIGFuIGlucHV0IHBhZCBvbiB0aGUgdHJhbnNtaXR0ZXIuIElmIGFuIGlucHV0IHBhZAorCSAgICBjYW5ub3QgZGV0ZWN0IHdoZXRoZXIgcG93ZXIgaXMgcHJlc2VudCwgdGhlbiB0aGUgYml0IGZvciB0aGF0IHBhZCB3aWxsIGJlIDAuCisJICAgIFRoaXMgcmVhZC1vbmx5IGNvbnRyb2wgaXMgYXBwbGljYWJsZSB0byBEVkktRCwgSERNSSBhbmQgRGlzcGxheVBvcnQgY29ubmVjdG9ycy4KKwkgICAgPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0RWX1JYX1JHQl9SQU5HRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmVudW0gdjRsMl9kdl9yZ2JfcmFuZ2U8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5TZWxlY3QgdGhlIHF1YW50aXphdGlvbiByYW5nZSBmb3IgUkdCIGlucHV0LiBWNEwyX0RWX1JBTkdFX0FVVE8KKwkgICAgZm9sbG93cyB0aGUgUkdCIHF1YW50aXphdGlvbiByYW5nZSBzcGVjaWZpZWQgaW4gdGhlIHN0YW5kYXJkIGZvciB0aGUgdmlkZW8gaW50ZXJmYWNlCisJICAgIChpZS4gPHhyZWYgbGlua2VuZD0iY2VhODYxIiAvPiBmb3IgSERNSSkuIFY0TDJfRFZfUkFOR0VfTElNSVRFRCBhbmQgVjRMMl9EVl9SQU5HRV9GVUxMIG92ZXJyaWRlIHRoZSBzdGFuZGFyZAorCSAgICB0byBiZSBjb21wYXRpYmxlIHdpdGggc291cmNlcyB0aGF0IGhhdmUgbm90IGltcGxlbWVudGVkIHRoZSBzdGFuZGFyZCBjb3JyZWN0bHkKKwkgICAgKHVuZm9ydHVuYXRlbHkgcXVpdGUgY29tbW9uIGZvciBIRE1JIGFuZCBEVkktRCkuIEZ1bGwgcmFuZ2UgYWxsb3dzIGFsbCBwb3NzaWJsZSB2YWx1ZXMgdG8gYmUKKwkgICAgdXNlZCB3aGVyZWFzIGxpbWl0ZWQgcmFuZ2Ugc2V0cyB0aGUgcmFuZ2UgdG8gKDE2ICZsdDsmbHQ7IChOLTgpKSAtICgyMzUgJmx0OyZsdDsgKE4tOCkpCisJICAgIHdoZXJlIE4gaXMgdGhlIG51bWJlciBvZiBiaXRzIHBlciBjb21wb25lbnQuCisJICAgIFRoaXMgY29udHJvbCBpcyBhcHBsaWNhYmxlIHRvIFZHQSwgRFZJLUEvRCwgSERNSSBhbmQgRGlzcGxheVBvcnQgY29ubmVjdG9ycy4KKwkgICAgPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgICA8L3RhYmxlPgorCisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImZtLXJ4LWNvbnRyb2xzIj4KKyAgICAgIDx0aXRsZT5GTSBSZWNlaXZlciBDb250cm9sIFJlZmVyZW5jZTwvdGl0bGU+CisKKyAgICAgIDxwYXJhPlRoZSBGTSBSZWNlaXZlciAoRk1fUlgpIGNsYXNzIGluY2x1ZGVzIGNvbnRyb2xzIGZvciBjb21tb24gZmVhdHVyZXMgb2YKKyAgICAgIEZNIFJlY2VwdGlvbiBjYXBhYmxlIGRldmljZXMuPC9wYXJhPgorCisgICAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9ImZtLXJ4LWNvbnRyb2wtaWQiPgorICAgICAgPHRpdGxlPkZNX1JYIENvbnRyb2wgSURzPC90aXRsZT4KKworICAgICAgPHRncm91cCBjb2xzPSI0Ij4KKyAgICAgICAgPGNvbHNwZWMgY29sbmFtZT0iYzEiIGNvbHdpZHRoPSIxKiIgLz4KKyAgICAgICAgPGNvbHNwZWMgY29sbmFtZT0iYzIiIGNvbHdpZHRoPSI2KiIgLz4KKyAgICAgICAgPGNvbHNwZWMgY29sbmFtZT0iYzMiIGNvbHdpZHRoPSIyKiIgLz4KKyAgICAgICAgPGNvbHNwZWMgY29sbmFtZT0iYzQiIGNvbHdpZHRoPSI2KiIgLz4KKyAgICAgICAgPHNwYW5zcGVjIG5hbWVzdD0iYzEiIG5hbWVlbmQ9ImMyIiBzcGFubmFtZT0iaWQiIC8+CisgICAgICAgIDxzcGFuc3BlYyBuYW1lc3Q9ImMyIiBuYW1lZW5kPSJjNCIgc3Bhbm5hbWU9ImRlc2NyIiAvPgorICAgICAgICA8dGhlYWQ+CisgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiIGFsaWduPSJsZWZ0Ij5JRDwvZW50cnk+CisgICAgICAgICAgICA8ZW50cnkgYWxpZ249ImxlZnQiPlR5cGU8L2VudHJ5PgorICAgICAgICAgIDwvcm93Pjxyb3cgcm93c2VwPSIxIj48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L2VudHJ5PgorICAgICAgICAgIDwvcm93PgorICAgICAgICA8L3RoZWFkPgorICAgICAgICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorICAgICAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9GTV9SWF9DTEFTUzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKyAgICAgICAgICAgIDxlbnRyeT5jbGFzczwvZW50cnk+CisgICAgICAgICAgPC9yb3c+PHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5UaGUgRk1fUlggY2xhc3MKK2Rlc2NyaXB0b3IuIENhbGxpbmcgJlZJRElPQy1RVUVSWUNUUkw7IGZvciB0aGlzIGNvbnRyb2wgd2lsbCByZXR1cm4gYQorZGVzY3JpcHRpb24gb2YgdGhpcyBjb250cm9sIGNsYXNzLjwvZW50cnk+CisgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9SRFNfUkVDRVBUSU9OPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorICAgICAgICAgICAgPGVudHJ5PmJvb2xlYW48L2VudHJ5PgorICAgICAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+RW5hYmxlcy9kaXNhYmxlcyBSRFMKKwkgIHJlY2VwdGlvbiBieSB0aGUgcmFkaW8gdHVuZXI8L2VudHJ5PgorICAgICAgICAgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX1JEU19SWF9QVFk8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5HZXRzIFJEUyBQcm9ncmFtbWUgVHlwZSBmaWVsZC4KK1RoaXMgZW5jb2RlcyB1cCB0byAzMSBwcmUtZGVmaW5lZCBwcm9ncmFtbWUgdHlwZXMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX1JEU19SWF9QU19OQU1FPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+c3RyaW5nPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5HZXRzIHRoZSBQcm9ncmFtbWUgU2VydmljZSBuYW1lIChQU19OQU1FKS4KK0l0IGlzIGludGVuZGVkIGZvciBzdGF0aWMgZGlzcGxheSBvbiBhIHJlY2VpdmVyLiBJdCBpcyB0aGUgcHJpbWFyeSBhaWQgdG8gbGlzdGVuZXJzIGluIHByb2dyYW1tZSBzZXJ2aWNlCitpZGVudGlmaWNhdGlvbiBhbmQgc2VsZWN0aW9uLiAgSW4gQW5uZXggRSBvZiA8eHJlZiBsaW5rZW5kPSJpZWM2MjEwNiIgLz4sIHRoZSBSRFMgc3BlY2lmaWNhdGlvbiwKK3RoZXJlIGlzIGEgZnVsbCBkZXNjcmlwdGlvbiBvZiB0aGUgY29ycmVjdCBjaGFyYWN0ZXIgZW5jb2RpbmcgZm9yIFByb2dyYW1tZSBTZXJ2aWNlIG5hbWUgc3RyaW5ncy4KK0Fsc28gZnJvbSBSRFMgc3BlY2lmaWNhdGlvbiwgUFMgaXMgdXN1YWxseSBhIHNpbmdsZSBlaWdodCBjaGFyYWN0ZXIgdGV4dC4gSG93ZXZlciwgaXQgaXMgYWxzbyBwb3NzaWJsZQordG8gZmluZCByZWNlaXZlcnMgd2hpY2ggY2FuIHNjcm9sbCBzdHJpbmdzIHNpemVkIGFzIDggeCBOIGNoYXJhY3RlcnMuIFNvLCB0aGlzIGNvbnRyb2wgbXVzdCBiZSBjb25maWd1cmVkCit3aXRoIHN0ZXBzIG9mIDggY2hhcmFjdGVycy4gVGhlIHJlc3VsdCBpcyBpdCBtdXN0IGFsd2F5cyBjb250YWluIGEgc3RyaW5nIHdpdGggc2l6ZSBtdWx0aXBsZSBvZiA4LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9SRFNfUlhfUkFESU9fVEVYVDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5PnN0cmluZzwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+R2V0cyB0aGUgUmFkaW8gVGV4dCBpbmZvLiBJdCBpcyBhIHRleHR1YWwgZGVzY3JpcHRpb24gb2YKK3doYXQgaXMgYmVpbmcgYnJvYWRjYXN0ZWQuIFJEUyBSYWRpbyBUZXh0IGNhbiBiZSBhcHBsaWVkIHdoZW4gYnJvYWRjYXN0ZXIgd2lzaGVzIHRvIHRyYW5zbWl0IGxvbmdlciBQUyBuYW1lcywKK3Byb2dyYW1tZS1yZWxhdGVkIGluZm9ybWF0aW9uIG9yIGFueSBvdGhlciB0ZXh0LiBJbiB0aGVzZSBjYXNlcywgUmFkaW9UZXh0IGNhbiBiZSB1c2VkIGluIGFkZGl0aW9uIHRvCis8Y29uc3RhbnQ+VjRMMl9DSURfUkRTX1JYX1BTX05BTUU8L2NvbnN0YW50Pi4gVGhlIGVuY29kaW5nIGZvciBSYWRpbyBUZXh0IHN0cmluZ3MgaXMgYWxzbyBmdWxseSBkZXNjcmliZWQKK2luIEFubmV4IEUgb2YgPHhyZWYgbGlua2VuZD0iaWVjNjIxMDYiIC8+LiBUaGUgbGVuZ3RoIG9mIFJhZGlvIFRleHQgc3RyaW5ncyBkZXBlbmRzIG9uIHdoaWNoIFJEUyBCbG9jayBpcyBiZWluZwordXNlZCB0byB0cmFuc21pdCBpdCwgZWl0aGVyIDMyICgyQSBibG9jaykgb3IgNjQgKDJCIGJsb2NrKS4gIEhvd2V2ZXIsIGl0IGlzIGFsc28gcG9zc2libGUKK3RvIGZpbmQgcmVjZWl2ZXJzIHdoaWNoIGNhbiBzY3JvbGwgc3RyaW5ncyBzaXplZCBhcyAzMiB4IE4gb3IgNjQgeCBOIGNoYXJhY3RlcnMuIFNvLCB0aGlzIGNvbnRyb2wgbXVzdCBiZSBjb25maWd1cmVkCit3aXRoIHN0ZXBzIG9mIDMyIG9yIDY0IGNoYXJhY3RlcnMuIFRoZSByZXN1bHQgaXMgaXQgbXVzdCBhbHdheXMgY29udGFpbiBhIHN0cmluZyB3aXRoIHNpemUgbXVsdGlwbGUgb2YgMzIgb3IgNjQuIDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9SRFNfUlhfVFJBRkZJQ19BTk5PVU5DRU1FTlQ8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5JZiBzZXQsIHRoZW4gYSB0cmFmZmljIGFubm91bmNlbWVudCBpcyBpbiBwcm9ncmVzcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfUkRTX1JYX1RSQUZGSUNfUFJPR1JBTTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5PmJvb2xlYW48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPklmIHNldCwgdGhlbiB0aGUgdHVuZWQgcHJvZ3JhbW1lIGNhcnJpZXMgdHJhZmZpYyBhbm5vdW5jZW1lbnRzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9SRFNfUlhfTVVTSUNfU1BFRUNIPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+Ym9vbGVhbjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+SWYgc2V0LCB0aGVuIHRoaXMgY2hhbm5lbCBicm9hZGNhc3RzIG11c2ljLiBJZiBjbGVhcmVkLCB0aGVuIGl0Citicm9hZGNhc3RzIHNwZWVjaC4gSWYgdGhlIHRyYW5zbWl0dGVyIGRvZXNuJ3QgbWFrZSB0aGlzIGRpc3RpbmN0aW9uLCB0aGVuIGl0IHdpbGwgYmUgc2V0LjwvZW50cnk+CisJICA8L3Jvdz4KKyAgICAgICAgICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfVFVORV9ERUVNUEhBU0lTPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+ZW51bSB2NGwyX2RlZW1waGFzaXM8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJ2NGwyLWRlZW1waGFzaXMiPjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPkNvbmZpZ3VyZXMgdGhlIGRlLWVtcGhhc2lzIHZhbHVlIGZvciByZWNlcHRpb24uCitBIGRlLWVtcGhhc2lzIGZpbHRlciBpcyBhcHBsaWVkIHRvIHRoZSBicm9hZGNhc3QgdG8gYWNjZW50dWF0ZSB0aGUgaGlnaCBhdWRpbyBmcmVxdWVuY2llcy4KK0RlcGVuZGluZyBvbiB0aGUgcmVnaW9uLCBhIHRpbWUgY29uc3RhbnQgb2YgZWl0aGVyIDUwIG9yIDc1IHVzZWNvbmRzIGlzIHVzZWQuIFRoZSBlbnVtJm5ic3A7djRsMl9kZWVtcGhhc2lzCitkZWZpbmVzIHBvc3NpYmxlIHZhbHVlcyBmb3IgZGUtZW1waGFzaXMuIEhlcmUgdGhleSBhcmU6PC9lbnRyeT4KKwk8L3Jvdz48cm93PgorCTxlbnRyeXRibCBzcGFubmFtZT0iZGVzY3IiIGNvbHM9IjIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfREVFTVBIQVNJU19ESVNBQkxFRDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Pk5vIGRlLWVtcGhhc2lzIGlzIGFwcGxpZWQuPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0RFRU1QSEFTSVNfNTBfdVM8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5BIGRlLWVtcGhhc2lzIG9mIDUwIHVTIGlzIHVzZWQuPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0RFRU1QSEFTSVNfNzVfdVM8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5BIGRlLWVtcGhhc2lzIG9mIDc1IHVTIGlzIHVzZWQuPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvZW50cnl0Ymw+CisKKwkgIDwvcm93PgorICAgICAgICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisgICAgICAgIDwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICAgIDwvdGFibGU+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImRldGVjdC1jb250cm9scyI+CisgICAgICA8dGl0bGU+RGV0ZWN0IENvbnRyb2wgUmVmZXJlbmNlPC90aXRsZT4KKworICAgICAgPHBhcmE+VGhlIERldGVjdCBjbGFzcyBpbmNsdWRlcyBjb250cm9scyBmb3IgY29tbW9uIGZlYXR1cmVzIG9mCisgICAgICB2YXJpb3VzIG1vdGlvbiBvciBvYmplY3QgZGV0ZWN0aW9uIGNhcGFibGUgZGV2aWNlcy48L3BhcmE+CisKKyAgICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iZGV0ZWN0LWNvbnRyb2wtaWQiPgorICAgICAgPHRpdGxlPkRldGVjdCBDb250cm9sIElEczwvdGl0bGU+CisKKyAgICAgIDx0Z3JvdXAgY29scz0iNCI+CisgICAgICAgIDxjb2xzcGVjIGNvbG5hbWU9ImMxIiBjb2x3aWR0aD0iMSoiIC8+CisgICAgICAgIDxjb2xzcGVjIGNvbG5hbWU9ImMyIiBjb2x3aWR0aD0iNioiIC8+CisgICAgICAgIDxjb2xzcGVjIGNvbG5hbWU9ImMzIiBjb2x3aWR0aD0iMioiIC8+CisgICAgICAgIDxjb2xzcGVjIGNvbG5hbWU9ImM0IiBjb2x3aWR0aD0iNioiIC8+CisgICAgICAgIDxzcGFuc3BlYyBuYW1lc3Q9ImMxIiBuYW1lZW5kPSJjMiIgc3Bhbm5hbWU9ImlkIiAvPgorICAgICAgICA8c3BhbnNwZWMgbmFtZXN0PSJjMiIgbmFtZWVuZD0iYzQiIHNwYW5uYW1lPSJkZXNjciIgLz4KKyAgICAgICAgPHRoZWFkPgorICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIiBhbGlnbj0ibGVmdCI+SUQ8L2VudHJ5PgorICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5UeXBlPC9lbnRyeT4KKyAgICAgICAgICA8L3Jvdz48cm93IHJvd3NlcD0iMSI+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC9lbnRyeT4KKyAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgPC90aGVhZD4KKyAgICAgICAgPHRib2R5IHZhbGlnbj0idG9wIj4KKyAgICAgICAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfREVURUNUX0NMQVNTPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorICAgICAgICAgICAgPGVudHJ5PmNsYXNzPC9lbnRyeT4KKyAgICAgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlRoZSBEZXRlY3QgY2xhc3MKK2Rlc2NyaXB0b3IuIENhbGxpbmcgJlZJRElPQy1RVUVSWUNUUkw7IGZvciB0aGlzIGNvbnRyb2wgd2lsbCByZXR1cm4gYQorZGVzY3JpcHRpb24gb2YgdGhpcyBjb250cm9sIGNsYXNzLjwvZW50cnk+CisgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9ERVRFQ1RfTURfTU9ERTwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKyAgICAgICAgICAgIDxlbnRyeT5tZW51PC9lbnRyeT4KKyAgICAgICAgICA8L3Jvdz48cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlNldHMgdGhlIG1vdGlvbiBkZXRlY3Rpb24gbW9kZS48L2VudHJ5PgorICAgICAgICAgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5dGJsIHNwYW5uYW1lPSJkZXNjciIgY29scz0iMiI+CisJICAgICAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfREVURUNUX01EX01PREVfRElTQUJMRUQ8L2NvbnN0YW50PgorCQkgIDwvZW50cnk+PGVudHJ5PkRpc2FibGUgbW90aW9uIGRldGVjdGlvbi48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfREVURUNUX01EX01PREVfR0xPQkFMPC9jb25zdGFudD4KKwkJICA8L2VudHJ5PjxlbnRyeT5Vc2UgYSBzaW5nbGUgbW90aW9uIGRldGVjdGlvbiB0aHJlc2hvbGQuPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0RFVEVDVF9NRF9NT0RFX1RIUkVTSE9MRF9HUklEPC9jb25zdGFudD4KKwkJICA8L2VudHJ5PjxlbnRyeT5UaGUgaW1hZ2UgaXMgZGl2aWRlZCBpbnRvIGEgZ3JpZCwgZWFjaCBjZWxsIHdpdGggaXRzIG93bgorCQkgIG1vdGlvbiBkZXRlY3Rpb24gdGhyZXNob2xkLiBUaGVzZSB0aHJlc2hvbGRzIGFyZSBzZXQgdGhyb3VnaCB0aGUKKwkJICA8Y29uc3RhbnQ+VjRMMl9DSURfREVURUNUX01EX1RIUkVTSE9MRF9HUklEPC9jb25zdGFudD4gbWF0cml4IGNvbnRyb2wuPC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0RFVEVDVF9NRF9NT0RFX1JFR0lPTl9HUklEPC9jb25zdGFudD4KKwkJICA8L2VudHJ5PjxlbnRyeT5UaGUgaW1hZ2UgaXMgZGl2aWRlZCBpbnRvIGEgZ3JpZCwgZWFjaCBjZWxsIHdpdGggaXRzIG93bgorCQkgIHJlZ2lvbiB2YWx1ZSB0aGF0IHNwZWNpZmllcyB3aGljaCBwZXItcmVnaW9uIG1vdGlvbiBkZXRlY3Rpb24gdGhyZXNob2xkcworCQkgIHNob3VsZCBiZSB1c2VkLiBFYWNoIHJlZ2lvbiBoYXMgaXRzIG93biB0aHJlc2hvbGRzLiBIb3cgdGhlc2UgcGVyLXJlZ2lvbgorCQkgIHRocmVzaG9sZHMgYXJlIHNldCB1cCBpcyBkcml2ZXItc3BlY2lmaWMuIFRoZSByZWdpb24gdmFsdWVzIGZvciB0aGUgZ3JpZCBhcmUgc2V0CisJCSAgdGhyb3VnaCB0aGUgPGNvbnN0YW50PlY0TDJfQ0lEX0RFVEVDVF9NRF9SRUdJT05fR1JJRDwvY29uc3RhbnQ+IG1hdHJpeAorCQkgIGNvbnRyb2wuPC9lbnRyeT4KKwkJPC9yb3c+CisJICAgICAgPC90Ym9keT4KKwkgICAgPC9lbnRyeXRibD4KKwkgIDwvcm93PgorICAgICAgICAgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9ERVRFQ1RfTURfR0xPQkFMX1RIUkVTSE9MRDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PjxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPlNldHMgdGhlIGdsb2JhbCBtb3Rpb24gZGV0ZWN0aW9uIHRocmVzaG9sZCB0byBiZQorCSAgdXNlZCB3aXRoIHRoZSA8Y29uc3RhbnQ+VjRMMl9ERVRFQ1RfTURfTU9ERV9HTE9CQUw8L2NvbnN0YW50PiBtb3Rpb24gZGV0ZWN0aW9uIG1vZGUuPC9lbnRyeT4KKyAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfREVURUNUX01EX1RIUkVTSE9MRF9HUklEPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+X191MTYgbWF0cml4PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5TZXRzIHRoZSBtb3Rpb24gZGV0ZWN0aW9uIHRocmVzaG9sZHMgZm9yIGVhY2ggY2VsbCBpbiB0aGUgZ3JpZC4KKwkgIFRvIGJlIHVzZWQgd2l0aCB0aGUgPGNvbnN0YW50PlY0TDJfREVURUNUX01EX01PREVfVEhSRVNIT0xEX0dSSUQ8L2NvbnN0YW50PgorCSAgbW90aW9uIGRldGVjdGlvbiBtb2RlLiBNYXRyaXggZWxlbWVudCAoMCwgMCkgcmVwcmVzZW50cyB0aGUgY2VsbCBhdCB0aGUgdG9wLWxlZnQgb2YgdGhlCisJICBncmlkLjwvZW50cnk+CisgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX0RFVEVDVF9NRF9SRUdJT05fR1JJRDwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5Pl9fdTggbWF0cml4PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz48ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5TZXRzIHRoZSBtb3Rpb24gZGV0ZWN0aW9uIHJlZ2lvbiB2YWx1ZSBmb3IgZWFjaCBjZWxsIGluIHRoZSBncmlkLgorCSAgVG8gYmUgdXNlZCB3aXRoIHRoZSA8Y29uc3RhbnQ+VjRMMl9ERVRFQ1RfTURfTU9ERV9SRUdJT05fR1JJRDwvY29uc3RhbnQ+CisJICBtb3Rpb24gZGV0ZWN0aW9uIG1vZGUuIE1hdHJpeCBlbGVtZW50ICgwLCAwKSByZXByZXNlbnRzIHRoZSBjZWxsIGF0IHRoZSB0b3AtbGVmdCBvZiB0aGUKKwkgIGdyaWQuPC9lbnRyeT4KKyAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgICAgPC90YWJsZT4KKworICAgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9InJmLXR1bmVyLWNvbnRyb2xzIj4KKyAgICAgIDx0aXRsZT5SRiBUdW5lciBDb250cm9sIFJlZmVyZW5jZTwvdGl0bGU+CisKKyAgICAgIDxwYXJhPgorVGhlIFJGIFR1bmVyIChSRl9UVU5FUikgY2xhc3MgaW5jbHVkZXMgY29udHJvbHMgZm9yIGNvbW1vbiBmZWF0dXJlcyBvZiBkZXZpY2VzCitoYXZpbmcgUkYgdHVuZXIuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KK0luIHRoaXMgY29udGV4dCwgUkYgdHVuZXIgaXMgcmFkaW8gcmVjZWl2ZXIgY2lyY3VpdCBiZXR3ZWVuIGFudGVubmEgYW5kCitkZW1vZHVsYXRvci4gSXQgcmVjZWl2ZXMgcmFkaW8gZnJlcXVlbmN5IChSRikgZnJvbSB0aGUgYW50ZW5uYSBhbmQgY29udmVydHMgdGhhdAorcmVjZWl2ZWQgc2lnbmFsIHRvIGxvd2VyIGludGVybWVkaWF0ZSBmcmVxdWVuY3kgKElGKSBvciBiYXNlYmFuZCBmcmVxdWVuY3kgKEJCKS4KK1R1bmVycyB0aGF0IGNvdWxkIGRvIGJhc2ViYW5kIG91dHB1dCBhcmUgb2Z0ZW4gY2FsbGVkIFplcm8tSUYgdHVuZXJzLiBPbGRlcgordHVuZXJzIHdlcmUgdHlwaWNhbGx5IHNpbXBsZSBQTEwgdHVuZXJzIGluc2lkZSBhIG1ldGFsIGJveCwgd2hpbHN0IG5ld2VyIG9uZXMKK2FyZSBoaWdobHkgaW50ZWdyYXRlZCBjaGlwcyB3aXRob3V0IGEgbWV0YWwgYm94ICJzaWxpY29uIHR1bmVycyIuIFRoZXNlIGNvbnRyb2xzCithcmUgbW9zdGx5IGFwcGxpY2FibGUgZm9yIG5ldyBmZWF0dXJlIHJpY2ggc2lsaWNvbiB0dW5lcnMsIGp1c3QgYmVjYXVzZSBvbGRlcgordHVuZXJzIGRvZXMgbm90IGhhdmUgbXVjaCBhZGp1c3RhYmxlIGZlYXR1cmVzLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CitGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBSRiB0dW5lcnMgc2VlCis8dWxpbmsgdXJsPSJodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1R1bmVyXyUyOHJhZGlvJTI5Ij5UdW5lciAocmFkaW8pPC91bGluaz4KK2FuZAorPHVsaW5rIHVybD0iaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SRl9mcm9udF9lbmQiPlJGIGZyb250IGVuZDwvdWxpbms+Citmcm9tIFdpa2lwZWRpYS4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJyZi10dW5lci1jb250cm9sLWlkIj4KKyAgICAgICAgPHRpdGxlPlJGX1RVTkVSIENvbnRyb2wgSURzPC90aXRsZT4KKworICAgICAgICA8dGdyb3VwIGNvbHM9IjQiPgorICAgICAgICAgIDxjb2xzcGVjIGNvbG5hbWU9ImMxIiBjb2x3aWR0aD0iMSoiIC8+CisgICAgICAgICAgPGNvbHNwZWMgY29sbmFtZT0iYzIiIGNvbHdpZHRoPSI2KiIgLz4KKyAgICAgICAgICA8Y29sc3BlYyBjb2xuYW1lPSJjMyIgY29sd2lkdGg9IjIqIiAvPgorICAgICAgICAgIDxjb2xzcGVjIGNvbG5hbWU9ImM0IiBjb2x3aWR0aD0iNioiIC8+CisgICAgICAgICAgPHNwYW5zcGVjIG5hbWVzdD0iYzEiIG5hbWVlbmQ9ImMyIiBzcGFubmFtZT0iaWQiIC8+CisgICAgICAgICAgPHNwYW5zcGVjIG5hbWVzdD0iYzIiIG5hbWVlbmQ9ImM0IiBzcGFubmFtZT0iZGVzY3IiIC8+CisgICAgICAgICAgPHRoZWFkPgorICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCIgYWxpZ249ImxlZnQiPklEPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5UeXBlPC9lbnRyeT4KKyAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgPHJvdyByb3dzZXA9IjEiPgorICAgICAgICAgICAgICA8ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L2VudHJ5PgorICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgPC90aGVhZD4KKyAgICAgICAgICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKyAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9SRl9UVU5FUl9DTEFTUzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PmNsYXNzPC9lbnRyeT4KKyAgICAgICAgICAgIDwvcm93Pjxyb3c+PGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+VGhlIFJGX1RVTkVSIGNsYXNzCitkZXNjcmlwdG9yLiBDYWxsaW5nICZWSURJT0MtUVVFUllDVFJMOyBmb3IgdGhpcyBjb250cm9sIHdpbGwgcmV0dXJuIGEKK2Rlc2NyaXB0aW9uIG9mIHRoaXMgY29udHJvbCBjbGFzcy48L2VudHJ5PgorICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfUkZfVFVORVJfQkFORFdJRFRIX0FVVE88L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKyAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgPGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+RW5hYmxlcy9kaXNhYmxlcyB0dW5lciByYWRpbyBjaGFubmVsCitiYW5kd2lkdGggY29uZmlndXJhdGlvbi4gSW4gYXV0b21hdGljIG1vZGUgYmFuZHdpZHRoIGNvbmZpZ3VyYXRpb24gaXMgcGVyZm9ybWVkCitieSB0aGUgZHJpdmVyLjwvZW50cnk+CisgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9SRl9UVU5FUl9CQU5EV0lEVEg8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT5pbnRlZ2VyPC9lbnRyeT4KKyAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgPGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+RmlsdGVyKHMpIG9uIHR1bmVyIHNpZ25hbCBwYXRoIGFyZSB1c2VkIHRvCitmaWx0ZXIgc2lnbmFsIGFjY29yZGluZyB0byByZWNlaXZpbmcgcGFydHkgbmVlZHMuIERyaXZlciBjb25maWd1cmVzIGZpbHRlcnMgdG8KK2Z1bGZpbGwgZGVzaXJlZCBiYW5kd2lkdGggcmVxdWlyZW1lbnQuIFVzZWQgd2hlbiBWNEwyX0NJRF9SRl9UVU5FUl9CQU5EV0lEVEhfQVVUTyBpcyBub3QKK3NldC4gVW5pdCBpcyBpbiBIei4gVGhlIHJhbmdlIGFuZCBzdGVwIGFyZSBkcml2ZXItc3BlY2lmaWMuPC9lbnRyeT4KKyAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX1JGX1RVTkVSX0xOQV9HQUlOX0FVVE88L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKyAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgPGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+RW5hYmxlcy9kaXNhYmxlcyBMTkEgYXV0b21hdGljIGdhaW4gY29udHJvbCAoQUdDKTwvZW50cnk+CisgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9SRl9UVU5FUl9NSVhFUl9HQUlOX0FVVE88L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKyAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgPGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+RW5hYmxlcy9kaXNhYmxlcyBtaXhlciBhdXRvbWF0aWMgZ2FpbiBjb250cm9sIChBR0MpPC9lbnRyeT4KKyAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgPGVudHJ5IHNwYW5uYW1lPSJpZCI+PGNvbnN0YW50PlY0TDJfQ0lEX1JGX1RVTkVSX0lGX0dBSU5fQVVUTzwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PmJvb2xlYW48L2VudHJ5PgorICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICA8ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5FbmFibGVzL2Rpc2FibGVzIElGIGF1dG9tYXRpYyBnYWluIGNvbnRyb2wgKEFHQyk8L2VudHJ5PgorICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfUkZfVFVORVJfUkZfR0FJTjwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICA8ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5UaGUgUkYgYW1wbGlmaWVyIGlzIHRoZSB2ZXJ5IGZpcnN0CithbXBsaWZpZXIgb24gdGhlIHJlY2VpdmVyIHNpZ25hbCBwYXRoLCBqdXN0IHJpZ2h0IGFmdGVyIHRoZSBhbnRlbm5hIGlucHV0LgorVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgTE5BIGdhaW4gYW5kIHRoZSBSRiBnYWluIGluIHRoaXMgZG9jdW1lbnQgaXMgdGhhdAordGhlIExOQSBnYWluIGlzIGludGVncmF0ZWQgaW4gdGhlIHR1bmVyIGNoaXAgd2hpbGUgdGhlIFJGIGdhaW4gaXMgYSBzZXBhcmF0ZQorY2hpcC4gVGhlcmUgbWF5IGJlIGJvdGggUkYgYW5kIExOQSBnYWluIGNvbnRyb2xzIGluIHRoZSBzYW1lIGRldmljZS4KK1RoZSByYW5nZSBhbmQgc3RlcCBhcmUgZHJpdmVyLXNwZWNpZmljLjwvZW50cnk+CisgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9SRl9UVU5FUl9MTkFfR0FJTjwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICA8ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5MTkEgKGxvdyBub2lzZSBhbXBsaWZpZXIpIGdhaW4gaXMgZmlyc3QKK2dhaW4gc3RhZ2Ugb24gdGhlIFJGIHR1bmVyIHNpZ25hbCBwYXRoLiBJdCBpcyBsb2NhdGVkIHZlcnkgY2xvc2UgdG8gdHVuZXIKK2FudGVubmEgaW5wdXQuIFVzZWQgd2hlbiA8Y29uc3RhbnQ+VjRMMl9DSURfUkZfVFVORVJfTE5BX0dBSU5fQVVUTzwvY29uc3RhbnQ+IGlzIG5vdCBzZXQuCitTZWUgPGNvbnN0YW50PlY0TDJfQ0lEX1JGX1RVTkVSX1JGX0dBSU48L2NvbnN0YW50PiB0byB1bmRlcnN0YW5kIGhvdyBSRiBnYWluCithbmQgTE5BIGdhaW4gZGlmZmVycyBmcm9tIHRoZSBlYWNoIG90aGVycy4KK1RoZSByYW5nZSBhbmQgc3RlcCBhcmUgZHJpdmVyLXNwZWNpZmljLjwvZW50cnk+CisgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgIDxlbnRyeSBzcGFubmFtZT0iaWQiPjxjb25zdGFudD5WNEwyX0NJRF9SRl9UVU5FUl9NSVhFUl9HQUlOPC9jb25zdGFudD4mbmJzcDs8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+aW50ZWdlcjwvZW50cnk+CisgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgIDxlbnRyeSBzcGFubmFtZT0iZGVzY3IiPk1peGVyIGdhaW4gaXMgc2Vjb25kIGdhaW4gc3RhZ2Ugb24gdGhlIFJGCit0dW5lciBzaWduYWwgcGF0aC4gSXQgaXMgbG9jYXRlZCBpbnNpZGUgbWl4ZXIgYmxvY2ssIHdoZXJlIFJGIHNpZ25hbCBpcworZG93bi1jb252ZXJ0ZWQgYnkgdGhlIG1peGVyLiBVc2VkIHdoZW4gPGNvbnN0YW50PlY0TDJfQ0lEX1JGX1RVTkVSX01JWEVSX0dBSU5fQVVUTzwvY29uc3RhbnQ+CitpcyBub3Qgc2V0LiBUaGUgcmFuZ2UgYW5kIHN0ZXAgYXJlIGRyaXZlci1zcGVjaWZpYy48L2VudHJ5PgorICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfUkZfVFVORVJfSUZfR0FJTjwvY29uc3RhbnQ+Jm5ic3A7PC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PmludGVnZXI8L2VudHJ5PgorICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICA8ZW50cnkgc3Bhbm5hbWU9ImRlc2NyIj5JRiBnYWluIGlzIGxhc3QgZ2FpbiBzdGFnZSBvbiB0aGUgUkYgdHVuZXIKK3NpZ25hbCBwYXRoLiBJdCBpcyBsb2NhdGVkIG9uIG91dHB1dCBvZiBSRiB0dW5lci4gSXQgY29udHJvbHMgc2lnbmFsIGxldmVsIG9mCitpbnRlcm1lZGlhdGUgZnJlcXVlbmN5IG91dHB1dCBvciBiYXNlYmFuZCBvdXRwdXQuIFVzZWQgd2hlbgorPGNvbnN0YW50PlY0TDJfQ0lEX1JGX1RVTkVSX0lGX0dBSU5fQVVUTzwvY29uc3RhbnQ+IGlzIG5vdCBzZXQuIFRoZSByYW5nZSBhbmQgc3RlcCBhcmUKK2RyaXZlci1zcGVjaWZpYy48L2VudHJ5PgorICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICA8ZW50cnkgc3Bhbm5hbWU9ImlkIj48Y29uc3RhbnQ+VjRMMl9DSURfUkZfVFVORVJfUExMX0xPQ0s8L2NvbnN0YW50PiZuYnNwOzwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT5ib29sZWFuPC9lbnRyeT4KKyAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgPGVudHJ5IHNwYW5uYW1lPSJkZXNjciI+SXMgc3ludGhlc2l6ZXIgUExMIGxvY2tlZD8gUkYgdHVuZXIgaXMKK3JlY2VpdmluZyBnaXZlbiBmcmVxdWVuY3kgd2hlbiB0aGF0IGNvbnRyb2wgaXMgc2V0LiBUaGlzIGlzIGEgcmVhZC1vbmx5IGNvbnRyb2wuCis8L2VudHJ5PgorICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgPC90Z3JvdXA+CisgICAgICA8L3RhYmxlPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZGV2LWNhcHR1cmUueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9kZXYtY2FwdHVyZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFjNWY5NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZGV2LWNhcHR1cmUueG1sCkBAIC0wLDAgKzEsMTEwIEBACisgIDx0aXRsZT5WaWRlbyBDYXB0dXJlIEludGVyZmFjZTwvdGl0bGU+CisKKyAgPHBhcmE+VmlkZW8gY2FwdHVyZSBkZXZpY2VzIHNhbXBsZSBhbiBhbmFsb2cgdmlkZW8gc2lnbmFsIGFuZCBzdG9yZQordGhlIGRpZ2l0aXplZCBpbWFnZXMgaW4gbWVtb3J5LiBUb2RheSBuZWFybHkgYWxsIGRldmljZXMgY2FuIGNhcHR1cmUKK2F0IGZ1bGwgMjUgb3IgMzAgZnJhbWVzL3NlY29uZC4gV2l0aCB0aGlzIGludGVyZmFjZSBhcHBsaWNhdGlvbnMgY2FuCitjb250cm9sIHRoZSBjYXB0dXJlIHByb2Nlc3MgYW5kIG1vdmUgaW1hZ2VzIGZyb20gdGhlIGRyaXZlciBpbnRvIHVzZXIKK3NwYWNlLjwvcGFyYT4KKworICA8cGFyYT5Db252ZW50aW9uYWxseSBWNEwyIHZpZGVvIGNhcHR1cmUgZGV2aWNlcyBhcmUgYWNjZXNzZWQgdGhyb3VnaAorY2hhcmFjdGVyIGRldmljZSBzcGVjaWFsIGZpbGVzIG5hbWVkIDxmaWxlbmFtZT4vZGV2L3ZpZGVvPC9maWxlbmFtZT4KK2FuZCA8ZmlsZW5hbWU+L2Rldi92aWRlbzA8L2ZpbGVuYW1lPiB0bworPGZpbGVuYW1lPi9kZXYvdmlkZW82MzwvZmlsZW5hbWU+IHdpdGggbWFqb3IgbnVtYmVyIDgxIGFuZCBtaW5vcgorbnVtYmVycyAwIHRvIDYzLiA8ZmlsZW5hbWU+L2Rldi92aWRlbzwvZmlsZW5hbWU+IGlzIHR5cGljYWxseSBhCitzeW1ib2xpYyBsaW5rIHRvIHRoZSBwcmVmZXJyZWQgdmlkZW8gZGV2aWNlLiBOb3RlIHRoZSBzYW1lIGRldmljZQorZmlsZXMgYXJlIHVzZWQgZm9yIHZpZGVvIG91dHB1dCBkZXZpY2VzLjwvcGFyYT4KKworICA8c2VjdGlvbj4KKyAgICA8dGl0bGU+UXVlcnlpbmcgQ2FwYWJpbGl0aWVzPC90aXRsZT4KKworICAgIDxwYXJhPkRldmljZXMgc3VwcG9ydGluZyB0aGUgdmlkZW8gY2FwdHVyZSBpbnRlcmZhY2Ugc2V0IHRoZQorPGNvbnN0YW50PlY0TDJfQ0FQX1ZJREVPX0NBUFRVUkU8L2NvbnN0YW50PiBvcgorPGNvbnN0YW50PlY0TDJfQ0FQX1ZJREVPX0NBUFRVUkVfTVBMQU5FPC9jb25zdGFudD4gZmxhZyBpbiB0aGUKKzxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXRpZXM8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiAmdjRsMi1jYXBhYmlsaXR5OworcmV0dXJuZWQgYnkgdGhlICZWSURJT0MtUVVFUllDQVA7IGlvY3RsLiBBcyBzZWNvbmRhcnkgZGV2aWNlIGZ1bmN0aW9ucwordGhleSBtYXkgYWxzbyBzdXBwb3J0IHRoZSA8bGluayBsaW5rZW5kPSJvdmVybGF5Ij52aWRlbyBvdmVybGF5PC9saW5rPgorKDxjb25zdGFudD5WNEwyX0NBUF9WSURFT19PVkVSTEFZPC9jb25zdGFudD4pIGFuZCB0aGUgPGxpbmsKK2xpbmtlbmQ9InJhdy12YmkiPnJhdyBWQkkgY2FwdHVyZTwvbGluaz4KKyg8Y29uc3RhbnQ+VjRMMl9DQVBfVkJJX0NBUFRVUkU8L2NvbnN0YW50PikgaW50ZXJmYWNlLiBBdCBsZWFzdCBvbmUgb2YKK3RoZSByZWFkL3dyaXRlIG9yIHN0cmVhbWluZyBJL08gbWV0aG9kcyBtdXN0IGJlIHN1cHBvcnRlZC4gVHVuZXJzIGFuZAorYXVkaW8gaW5wdXRzIGFyZSBvcHRpb25hbC48L3BhcmE+CisgIDwvc2VjdGlvbj4KKworICA8c2VjdGlvbj4KKyAgICA8dGl0bGU+U3VwcGxlbWVudGFsIEZ1bmN0aW9uczwvdGl0bGU+CisKKyAgICA8cGFyYT5WaWRlbyBjYXB0dXJlIGRldmljZXMgc2hhbGwgc3VwcG9ydCA8bGluaworbGlua2VuZD0iYXVkaW8iPmF1ZGlvIGlucHV0PC9saW5rPiwgPGxpbmsKK2xpbmtlbmQ9InR1bmVyIj50dW5lcjwvbGluaz4sIDxsaW5rIGxpbmtlbmQ9ImNvbnRyb2wiPmNvbnRyb2xzPC9saW5rPiwKKzxsaW5rIGxpbmtlbmQ9ImNyb3AiPmNyb3BwaW5nIGFuZCBzY2FsaW5nPC9saW5rPiBhbmQgPGxpbmsKK2xpbmtlbmQ9InN0cmVhbWluZy1wYXIiPnN0cmVhbWluZyBwYXJhbWV0ZXI8L2xpbms+IGlvY3RscyBhcyBuZWVkZWQuCitUaGUgPGxpbmsgbGlua2VuZD0idmlkZW8iPnZpZGVvIGlucHV0PC9saW5rPiBhbmQgPGxpbmsKK2xpbmtlbmQ9InN0YW5kYXJkIj52aWRlbyBzdGFuZGFyZDwvbGluaz4gaW9jdGxzIG11c3QgYmUgc3VwcG9ydGVkIGJ5CithbGwgdmlkZW8gY2FwdHVyZSBkZXZpY2VzLjwvcGFyYT4KKyAgPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uPgorICAgIDx0aXRsZT5JbWFnZSBGb3JtYXQgTmVnb3RpYXRpb248L3RpdGxlPgorCisgICAgPHBhcmE+VGhlIHJlc3VsdCBvZiBhIGNhcHR1cmUgb3BlcmF0aW9uIGlzIGRldGVybWluZWQgYnkKK2Nyb3BwaW5nIGFuZCBpbWFnZSBmb3JtYXQgcGFyYW1ldGVycy4gVGhlIGZvcm1lciBzZWxlY3QgYW4gYXJlYSBvZiB0aGUKK3ZpZGVvIHBpY3R1cmUgdG8gY2FwdHVyZSwgdGhlIGxhdHRlciBob3cgaW1hZ2VzIGFyZSBzdG9yZWQgaW4gbWVtb3J5LAorJmllOyBpbiBSR0Igb3IgWVVWIGZvcm1hdCwgdGhlIG51bWJlciBvZiBiaXRzIHBlciBwaXhlbCBvciB3aWR0aCBhbmQKK2hlaWdodC4gVG9nZXRoZXIgdGhleSBhbHNvIGRlZmluZSBob3cgaW1hZ2VzIGFyZSBzY2FsZWQgaW4gdGhlCitwcm9jZXNzLjwvcGFyYT4KKworICAgIDxwYXJhPkFzIHVzdWFsIHRoZXNlIHBhcmFtZXRlcnMgYXJlIDxlbXBoYXNpcz5ub3Q8L2VtcGhhc2lzPiByZXNldAorYXQgJmZ1bmMtb3BlbjsgdGltZSB0byBwZXJtaXQgVW5peCB0b29sIGNoYWlucywgcHJvZ3JhbW1pbmcgYSBkZXZpY2UKK2FuZCB0aGVuIHJlYWRpbmcgZnJvbSBpdCBhcyBpZiBpdCB3YXMgYSBwbGFpbiBmaWxlLiBXZWxsIHdyaXR0ZW4gVjRMMgorYXBwbGljYXRpb25zIGVuc3VyZSB0aGV5IHJlYWxseSBnZXQgd2hhdCB0aGV5IHdhbnQsIGluY2x1ZGluZyBjcm9wcGluZworYW5kIHNjYWxpbmcuPC9wYXJhPgorCisgICAgPHBhcmE+Q3JvcHBpbmcgaW5pdGlhbGl6YXRpb24gYXQgbWluaW11bSByZXF1aXJlcyB0byByZXNldCB0aGUKK3BhcmFtZXRlcnMgdG8gZGVmYXVsdHMuIEFuIGV4YW1wbGUgaXMgZ2l2ZW4gaW4gPHhyZWYKK2xpbmtlbmQ9ImNyb3AiIC8+LjwvcGFyYT4KKworICAgIDxwYXJhPlRvIHF1ZXJ5IHRoZSBjdXJyZW50IGltYWdlIGZvcm1hdCBhcHBsaWNhdGlvbnMgc2V0IHRoZQorPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiBhICZ2NGwyLWZvcm1hdDsgdG8KKzxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkU8L2NvbnN0YW50PiBvcgorPGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRV9NUExBTkU8L2NvbnN0YW50PiBhbmQgY2FsbCB0aGUKKyZWSURJT0MtRy1GTVQ7IGlvY3RsIHdpdGggYSBwb2ludGVyIHRvIHRoaXMgc3RydWN0dXJlLiBEcml2ZXJzIGZpbGwKK3RoZSAmdjRsMi1waXgtZm9ybWF0OyA8c3RydWN0ZmllbGQ+cGl4PC9zdHJ1Y3RmaWVsZD4gb3IgdGhlCismdjRsMi1waXgtZm9ybWF0LW1wbGFuZTsgPHN0cnVjdGZpZWxkPnBpeF9tcDwvc3RydWN0ZmllbGQ+IG1lbWJlciBvZiB0aGUKKzxzdHJ1Y3RmaWVsZD5mbXQ8L3N0cnVjdGZpZWxkPiB1bmlvbi48L3BhcmE+CisKKyAgICA8cGFyYT5UbyByZXF1ZXN0IGRpZmZlcmVudCBwYXJhbWV0ZXJzIGFwcGxpY2F0aW9ucyBzZXQgdGhlCis8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mIGEgJnY0bDItZm9ybWF0OyBhcyBhYm92ZSBhbmQKK2luaXRpYWxpemUgYWxsIGZpZWxkcyBvZiB0aGUgJnY0bDItcGl4LWZvcm1hdDsKKzxzdHJ1Y3RmaWVsZD52Ymk8L3N0cnVjdGZpZWxkPiBtZW1iZXIgb2YgdGhlCis8c3RydWN0ZmllbGQ+Zm10PC9zdHJ1Y3RmaWVsZD4gdW5pb24sIG9yIGJldHRlciBqdXN0IG1vZGlmeSB0aGUKK3Jlc3VsdHMgb2YgPGNvbnN0YW50PlZJRElPQ19HX0ZNVDwvY29uc3RhbnQ+LCBhbmQgY2FsbCB0aGUKKyZWSURJT0MtUy1GTVQ7IGlvY3RsIHdpdGggYSBwb2ludGVyIHRvIHRoaXMgc3RydWN0dXJlLiBEcml2ZXJzIG1heQorYWRqdXN0IHRoZSBwYXJhbWV0ZXJzIGFuZCBmaW5hbGx5IHJldHVybiB0aGUgYWN0dWFsIHBhcmFtZXRlcnMgYXMKKzxjb25zdGFudD5WSURJT0NfR19GTVQ8L2NvbnN0YW50PiBkb2VzLjwvcGFyYT4KKworICAgIDxwYXJhPkxpa2UgPGNvbnN0YW50PlZJRElPQ19TX0ZNVDwvY29uc3RhbnQ+IHRoZQorJlZJRElPQy1UUlktRk1UOyBpb2N0bCBjYW4gYmUgdXNlZCB0byBsZWFybiBhYm91dCBoYXJkd2FyZSBsaW1pdGF0aW9ucword2l0aG91dCBkaXNhYmxpbmcgSS9PIG9yIHBvc3NpYmx5IHRpbWUgY29uc3VtaW5nIGhhcmR3YXJlCitwcmVwYXJhdGlvbnMuPC9wYXJhPgorCisgICAgPHBhcmE+VGhlIGNvbnRlbnRzIG9mICZ2NGwyLXBpeC1mb3JtYXQ7IGFuZCAmdjRsMi1waXgtZm9ybWF0LW1wbGFuZTsKK2FyZSBkaXNjdXNzZWQgaW4gPHhyZWYgbGlua2VuZD0icGl4Zm10IiAvPi4gU2VlIGFsc28gdGhlIHNwZWNpZmljYXRpb24gb2YgdGhlCis8Y29uc3RhbnQ+VklESU9DX0dfRk1UPC9jb25zdGFudD4sIDxjb25zdGFudD5WSURJT0NfU19GTVQ8L2NvbnN0YW50PgorYW5kIDxjb25zdGFudD5WSURJT0NfVFJZX0ZNVDwvY29uc3RhbnQ+IGlvY3RscyBmb3IgZGV0YWlscy4gVmlkZW8KK2NhcHR1cmUgZGV2aWNlcyBtdXN0IGltcGxlbWVudCBib3RoIHRoZQorPGNvbnN0YW50PlZJRElPQ19HX0ZNVDwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlZJRElPQ19TX0ZNVDwvY29uc3RhbnQ+IGlvY3RsLCBldmVuIGlmCis8Y29uc3RhbnQ+VklESU9DX1NfRk1UPC9jb25zdGFudD4gaWdub3JlcyBhbGwgcmVxdWVzdHMgYW5kIGFsd2F5cworcmV0dXJucyBkZWZhdWx0IHBhcmFtZXRlcnMgYXMgPGNvbnN0YW50PlZJRElPQ19HX0ZNVDwvY29uc3RhbnQ+IGRvZXMuCis8Y29uc3RhbnQ+VklESU9DX1RSWV9GTVQ8L2NvbnN0YW50PiBpcyBvcHRpb25hbC48L3BhcmE+CisgIDwvc2VjdGlvbj4KKworICA8c2VjdGlvbj4KKyAgICA8dGl0bGU+UmVhZGluZyBJbWFnZXM8L3RpdGxlPgorCisgICAgPHBhcmE+QSB2aWRlbyBjYXB0dXJlIGRldmljZSBtYXkgc3VwcG9ydCB0aGUgPGxpbmsKK2xpbmtlbmQ9InJ3Ij5yZWFkKCkgZnVuY3Rpb248L2xpbms+IGFuZC9vciBzdHJlYW1pbmcgKDxsaW5rCitsaW5rZW5kPSJtbWFwIj5tZW1vcnkgbWFwcGluZzwvbGluaz4gb3IgPGxpbmsKK2xpbmtlbmQ9InVzZXJwIj51c2VyIHBvaW50ZXI8L2xpbms+KSBJL08uIFNlZSA8eHJlZgorbGlua2VuZD0iaW8iIC8+IGZvciBkZXRhaWxzLjwvcGFyYT4KKyAgPC9zZWN0aW9uPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9kZXYtY29kZWMueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9kZXYtY29kZWMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNDRjMTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2Rldi1jb2RlYy54bWwKQEAgLTAsMCArMSwyNyBAQAorICA8dGl0bGU+Q29kZWMgSW50ZXJmYWNlPC90aXRsZT4KKworICA8cGFyYT5BIFY0TDIgY29kZWMgY2FuIGNvbXByZXNzLCBkZWNvbXByZXNzLCB0cmFuc2Zvcm0sIG9yIG90aGVyd2lzZQorY29udmVydCB2aWRlbyBkYXRhIGZyb20gb25lIGZvcm1hdCBpbnRvIGFub3RoZXIgZm9ybWF0LCBpbiBtZW1vcnkuIFR5cGljYWxseQorc3VjaCBkZXZpY2VzIGFyZSBtZW1vcnktdG8tbWVtb3J5IGRldmljZXMgKGkuZS4gZGV2aWNlcyB3aXRoIHRoZQorPGNvbnN0YW50PlY0TDJfQ0FQX1ZJREVPX00yTTwvY29uc3RhbnQ+IG9yIDxjb25zdGFudD5WNEwyX0NBUF9WSURFT19NMk1fTVBMQU5FPC9jb25zdGFudD4KK2NhcGFiaWxpdHkgc2V0KS4KKzwvcGFyYT4KKworICA8cGFyYT5BIG1lbW9yeS10by1tZW1vcnkgdmlkZW8gbm9kZSBhY3RzIGp1c3QgbGlrZSBhIG5vcm1hbCB2aWRlbyBub2RlLCBidXQgaXQKK3N1cHBvcnRzIGJvdGggb3V0cHV0IChzZW5kaW5nIGZyYW1lcyBmcm9tIG1lbW9yeSB0byB0aGUgY29kZWMgaGFyZHdhcmUpIGFuZAorY2FwdHVyZSAocmVjZWl2aW5nIHRoZSBwcm9jZXNzZWQgZnJhbWVzIGZyb20gdGhlIGNvZGVjIGhhcmR3YXJlIGludG8gbWVtb3J5KQorc3RyZWFtIEkvTy4gQW4gYXBwbGljYXRpb24gd2lsbCBoYXZlIHRvIHNldHVwIHRoZSBzdHJlYW0KK0kvTyBmb3IgYm90aCBzaWRlcyBhbmQgZmluYWxseSBjYWxsICZWSURJT0MtU1RSRUFNT047IGZvciBib3RoIGNhcHR1cmUgYW5kIG91dHB1dAordG8gc3RhcnQgdGhlIGNvZGVjLjwvcGFyYT4KKworICA8cGFyYT5WaWRlbyBjb21wcmVzc2lvbiBjb2RlY3MgdXNlIHRoZSBNUEVHIGNvbnRyb2xzIHRvIHNldHVwIHRoZWlyIGNvZGVjIHBhcmFtZXRlcnMKKyhub3RlIHRoYXQgdGhlIE1QRUcgY29udHJvbHMgYWN0dWFsbHkgc3VwcG9ydCBtYW55IG1vcmUgY29kZWNzIHRoYW4ganVzdCBNUEVHKS4KK1NlZSA8eHJlZiBsaW5rZW5kPSJtcGVnLWNvbnRyb2xzIj48L3hyZWY+LjwvcGFyYT4KKworICA8cGFyYT5NZW1vcnktdG8tbWVtb3J5IGRldmljZXMgY2FuIG9mdGVuIGJlIHVzZWQgYXMgYSBzaGFyZWQgcmVzb3VyY2U6IHlvdSBjYW4KK29wZW4gdGhlIHZpZGVvIG5vZGUgbXVsdGlwbGUgdGltZXMsIGVhY2ggYXBwbGljYXRpb24gc2V0dGluZyB1cCB0aGVpciBvd24gY29kZWMgcHJvcGVydGllcwordGhhdCBhcmUgbG9jYWwgdG8gdGhlIGZpbGUgaGFuZGxlLCBhbmQgZWFjaCBjYW4gdXNlIGl0IGluZGVwZW5kZW50bHkgZnJvbSB0aGUgb3RoZXJzLgorVGhlIGRyaXZlciB3aWxsIGFyYml0cmF0ZSBhY2Nlc3MgdG8gdGhlIGNvZGVjIGFuZCByZXByb2dyYW0gaXQgd2hlbmV2ZXIgYW5vdGhlciBmaWxlCitoYW5kbGVyIGdldHMgYWNjZXNzLiBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHRoZSB1c3VhbCB2aWRlbyBub2RlIGJlaGF2aW9yIHdoZXJlIHRoZSB2aWRlbyBwcm9wZXJ0aWVzCithcmUgZ2xvYmFsIHRvIHRoZSBkZXZpY2UgKGkuZS4gY2hhbmdpbmcgc29tZXRoaW5nIHRocm91Z2ggb25lIGZpbGUgaGFuZGxlIGlzIHZpc2libGUKK3Rocm91Z2ggYW5vdGhlciBmaWxlIGhhbmRsZSkuPC9wYXJhPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9kZXYtZWZmZWN0LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZGV2LWVmZmVjdC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM1MGE2NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZGV2LWVmZmVjdC54bWwKQEAgLTAsMCArMSwxNyBAQAorICA8dGl0bGU+RWZmZWN0IERldmljZXMgSW50ZXJmYWNlPC90aXRsZT4KKworICA8bm90ZT4KKyAgICA8dGl0bGU+U3VzcGVuZGVkPC90aXRsZT4KKworICAgIDxwYXJhPlRoaXMgaW50ZXJmYWNlIGhhcyBiZWVuIGJlIHN1c3BlbmRlZCBmcm9tIHRoZSBWNEwyIEFQSQoraW1wbGVtZW50ZWQgaW4gTGludXggMi42IHVudGlsIHdlIGhhdmUgbW9yZSBleHBlcmllbmNlIHdpdGggZWZmZWN0CitkZXZpY2UgaW50ZXJmYWNlcy48L3BhcmE+CisgIDwvbm90ZT4KKworICA8cGFyYT5BIFY0TDIgdmlkZW8gZWZmZWN0IGRldmljZSBjYW4gZG8gaW1hZ2UgZWZmZWN0cywgZmlsdGVyaW5nLCBvcgorY29tYmluZSB0d28gb3IgbW9yZSBpbWFnZXMgb3IgaW1hZ2Ugc3RyZWFtcy4gRm9yIGV4YW1wbGUgdmlkZW8KK3RyYW5zaXRpb25zIG9yIHdpcGVzLiBBcHBsaWNhdGlvbnMgc2VuZCBkYXRhIHRvIGJlIHByb2Nlc3NlZCBhbmQKK3JlY2VpdmUgdGhlIHJlc3VsdCBkYXRhIGVpdGhlciB3aXRoICZmdW5jLXJlYWQ7IGFuZCAmZnVuYy13cml0ZTsKK2Z1bmN0aW9ucywgb3IgdGhyb3VnaCB0aGUgc3RyZWFtaW5nIEkvTyBtZWNoYW5pc20uPC9wYXJhPgorCisgIDxwYXJhPlt0byBkb108L3BhcmE+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2Rldi1ldmVudC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2Rldi1ldmVudC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlmNGJlYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZGV2LWV2ZW50LnhtbApAQCAtMCwwICsxLDQzIEBACisgIDx0aXRsZT5FdmVudCBJbnRlcmZhY2U8L3RpdGxlPgorCisgIDxwYXJhPlRoZSBWNEwyIGV2ZW50IGludGVyZmFjZSBwcm92aWRlcyBhIG1lYW5zIGZvciBhIHVzZXIgdG8gZ2V0CisgIGltbWVkaWF0ZWx5IG5vdGlmaWVkIG9uIGNlcnRhaW4gY29uZGl0aW9ucyB0YWtpbmcgcGxhY2Ugb24gYSBkZXZpY2UuCisgIFRoaXMgbWlnaHQgaW5jbHVkZSBzdGFydCBvZiBmcmFtZSBvciBsb3NzIG9mIHNpZ25hbCBldmVudHMsIGZvcgorICBleGFtcGxlLiBDaGFuZ2VzIGluIHRoZSB2YWx1ZSBvciBzdGF0ZSBvZiBhIFY0TDIgY29udHJvbCBjYW4gYWxzbyBiZQorICByZXBvcnRlZCB0aHJvdWdoIGV2ZW50cy4KKyAgPC9wYXJhPgorCisgIDxwYXJhPlRvIHJlY2VpdmUgZXZlbnRzLCB0aGUgZXZlbnRzIHRoZSB1c2VyIGlzIGludGVyZXN0ZWQgaW4gZmlyc3QgbXVzdAorICBiZSBzdWJzY3JpYmVkIHVzaW5nIHRoZSAmVklESU9DLVNVQlNDUklCRS1FVkVOVDsgaW9jdGwuIE9uY2UgYW4gZXZlbnQgaXMKKyAgc3Vic2NyaWJlZCwgdGhlIGV2ZW50cyBvZiBzdWJzY3JpYmVkIHR5cGVzIGFyZSBkZXF1ZXVlYWJsZSB1c2luZyB0aGUKKyAgJlZJRElPQy1EUUVWRU5UOyBpb2N0bC4gRXZlbnRzIG1heSBiZSB1bnN1YnNjcmliZWQgdXNpbmcKKyAgVklESU9DX1VOU1VCU0NSSUJFX0VWRU5UIGlvY3RsLiBUaGUgc3BlY2lhbCBldmVudCB0eXBlIFY0TDJfRVZFTlRfQUxMIG1heQorICBiZSB1c2VkIHRvIHVuc3Vic2NyaWJlIGFsbCB0aGUgZXZlbnRzIHRoZSBkcml2ZXIgc3VwcG9ydHMuPC9wYXJhPgorCisgIDxwYXJhPlRoZSBldmVudCBzdWJzY3JpcHRpb25zIGFuZCBldmVudCBxdWV1ZXMgYXJlIHNwZWNpZmljIHRvIGZpbGUKKyAgaGFuZGxlcy4gU3Vic2NyaWJpbmcgYW4gZXZlbnQgb24gb25lIGZpbGUgaGFuZGxlIGRvZXMgbm90IGFmZmVjdAorICBvdGhlciBmaWxlIGhhbmRsZXMuPC9wYXJhPgorCisgIDxwYXJhPlRoZSBpbmZvcm1hdGlvbiBvbiBkZXF1ZXVlYWJsZSBldmVudHMgaXMgb2J0YWluZWQgYnkgdXNpbmcgc2VsZWN0IG9yCisgIHBvbGwgc3lzdGVtIGNhbGxzIG9uIHZpZGVvIGRldmljZXMuIFRoZSBWNEwyIGV2ZW50cyB1c2UgUE9MTFBSSSBldmVudHMgb24KKyAgcG9sbCBzeXN0ZW0gY2FsbCBhbmQgZXhjZXB0aW9ucyBvbiBzZWxlY3Qgc3lzdGVtIGNhbGwuPC9wYXJhPgorCisgIDxwYXJhPlN0YXJ0aW5nIHdpdGgga2VybmVsIDMuMSBjZXJ0YWluIGd1YXJhbnRlZXMgY2FuIGJlIGdpdmVuIHdpdGgKKyAgcmVnYXJkcyB0byBldmVudHM6PG9yZGVyZWRsaXN0PgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkVhY2ggc3Vic2NyaWJlZCBldmVudCBoYXMgaXRzIG93biBpbnRlcm5hbCBkZWRpY2F0ZWQgZXZlbnQgcXVldWUuCitUaGlzIG1lYW5zIHRoYXQgZmxvb2Rpbmcgb2Ygb25lIGV2ZW50IHR5cGUgd2lsbCBub3QgaW50ZXJmZXJlIHdpdGggb3RoZXIKK2V2ZW50IHR5cGVzLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPklmIHRoZSBpbnRlcm5hbCBldmVudCBxdWV1ZSBmb3IgYSBwYXJ0aWN1bGFyIHN1YnNjcmliZWQgZXZlbnQKK2JlY29tZXMgZnVsbCwgdGhlbiB0aGUgb2xkZXN0IGV2ZW50IGluIHRoYXQgcXVldWUgd2lsbCBiZSBkcm9wcGVkLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPldoZXJlIGFwcGxpY2FibGUsIGNlcnRhaW4gZXZlbnQgdHlwZXMgY2FuIGVuc3VyZSB0aGF0IHRoZSBwYXlsb2FkCitvZiB0aGUgb2xkZXN0IGV2ZW50IHRoYXQgaXMgYWJvdXQgdG8gYmUgZHJvcHBlZCB3aWxsIGJlIG1lcmdlZCB3aXRoIHRoZSBwYXlsb2FkCitvZiB0aGUgbmV4dCBvbGRlc3QgZXZlbnQuIFRodXMgZW5zdXJpbmcgdGhhdCBubyBpbmZvcm1hdGlvbiBpcyBsb3N0LCBidXQgb25seSBhbgoraW50ZXJtZWRpYXRlIHN0ZXAgbGVhZGluZyB1cCB0byB0aGF0IGluZm9ybWF0aW9uLiBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZQorZXZlbnQgeW91IHdhbnQgdG8gc3Vic2NyaWJlIHRvIHdoZXRoZXIgdGhpcyBpcyBhcHBsaWNhYmxlIGZvciB0aGF0IGV2ZW50IG9yIG5vdC48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvb3JkZXJlZGxpc3Q+PC9wYXJhPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9kZXYtb3NkLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZGV2LW9zZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ4NTMzMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZGV2LW9zZC54bWwKQEAgLTAsMCArMSwxNDkgQEAKKyAgPHRpdGxlPlZpZGVvIE91dHB1dCBPdmVybGF5IEludGVyZmFjZTwvdGl0bGU+CisgIDxzdWJ0aXRsZT5BbHNvIGtub3duIGFzIE9uLVNjcmVlbiBEaXNwbGF5IChPU0QpPC9zdWJ0aXRsZT4KKworICA8cGFyYT5Tb21lIHZpZGVvIG91dHB1dCBkZXZpY2VzIGNhbiBvdmVybGF5IGEgZnJhbWVidWZmZXIgaW1hZ2Ugb250bwordGhlIG91dGdvaW5nIHZpZGVvIHNpZ25hbC4gQXBwbGljYXRpb25zIGNhbiBzZXQgdXAgc3VjaCBhbiBvdmVybGF5Cit1c2luZyB0aGlzIGludGVyZmFjZSwgd2hpY2ggYm9ycm93cyBzdHJ1Y3R1cmVzIGFuZCBpb2N0bHMgb2YgdGhlIDxsaW5rCitsaW5rZW5kPSJvdmVybGF5Ij5WaWRlbyBPdmVybGF5PC9saW5rPiBpbnRlcmZhY2UuPC9wYXJhPgorCisgIDxwYXJhPlRoZSBPU0QgZnVuY3Rpb24gaXMgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBzYW1lIGNoYXJhY3Rlcgorc3BlY2lhbCBmaWxlIGFzIHRoZSA8bGluayBsaW5rZW5kPSJjYXB0dXJlIj5WaWRlbyBPdXRwdXQ8L2xpbms+IGZ1bmN0aW9uLgorTm90ZSB0aGUgZGVmYXVsdCBmdW5jdGlvbiBvZiBzdWNoIGEgPGZpbGVuYW1lPi9kZXYvdmlkZW88L2ZpbGVuYW1lPiBkZXZpY2UKK2lzIHZpZGVvIGNhcHR1cmluZyBvciBvdXRwdXQuIFRoZSBPU0QgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgYWZ0ZXIKK2NhbGxpbmcgdGhlICZWSURJT0MtUy1GTVQ7IGlvY3RsLjwvcGFyYT4KKworICA8c2VjdGlvbj4KKyAgICA8dGl0bGU+UXVlcnlpbmcgQ2FwYWJpbGl0aWVzPC90aXRsZT4KKworICAgIDxwYXJhPkRldmljZXMgc3VwcG9ydGluZyB0aGUgPHdvcmRhc3dvcmQ+VmlkZW8gT3V0cHV0CitPdmVybGF5PC93b3JkYXN3b3JkPiBpbnRlcmZhY2Ugc2V0IHRoZQorPGNvbnN0YW50PlY0TDJfQ0FQX1ZJREVPX09VVFBVVF9PVkVSTEFZPC9jb25zdGFudD4gZmxhZyBpbiB0aGUKKzxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXRpZXM8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiAmdjRsMi1jYXBhYmlsaXR5OworcmV0dXJuZWQgYnkgdGhlICZWSURJT0MtUVVFUllDQVA7IGlvY3RsLjwvcGFyYT4KKyAgPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uPgorICAgIDx0aXRsZT5GcmFtZWJ1ZmZlcjwvdGl0bGU+CisKKyAgICA8cGFyYT5Db250cmFyeSB0byB0aGUgPHdvcmRhc3dvcmQ+VmlkZW8gT3ZlcmxheTwvd29yZGFzd29yZD4KK2ludGVyZmFjZSB0aGUgZnJhbWVidWZmZXIgaXMgbm9ybWFsbHkgaW1wbGVtZW50ZWQgb24gdGhlIFRWIGNhcmQgYW5kCitub3QgdGhlIGdyYXBoaWNzIGNhcmQuIE9uIExpbnV4IGl0IGlzIGFjY2Vzc2libGUgYXMgYSBmcmFtZWJ1ZmZlcgorZGV2aWNlICg8ZmlsZW5hbWU+L2Rldi9mYk48L2ZpbGVuYW1lPikuIEdpdmVuIGEgVjRMMiBkZXZpY2UsCithcHBsaWNhdGlvbnMgY2FuIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgZnJhbWVidWZmZXIgZGV2aWNlIGJ5IGNhbGxpbmcKK3RoZSAmVklESU9DLUctRkJVRjsgaW9jdGwuIEl0IHJldHVybnMsIGFtb25nc3Qgb3RoZXIgaW5mb3JtYXRpb24sIHRoZQorcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgZnJhbWVidWZmZXIgaW4gdGhlCis8c3RydWN0ZmllbGQ+YmFzZTwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mICZ2NGwyLWZyYW1lYnVmZmVyOy4gVGhlCitmcmFtZWJ1ZmZlciBkZXZpY2UgaW9jdGwgPGNvbnN0YW50PkZCSU9HRVRfRlNDUkVFTklORk88L2NvbnN0YW50PgorcmV0dXJucyB0aGUgc2FtZSBhZGRyZXNzIGluIHRoZSA8c3RydWN0ZmllbGQ+c21lbV9zdGFydDwvc3RydWN0ZmllbGQ+CitmaWVsZCBvZiBzdHJ1Y3QgPHN0cnVjdG5hbWU+ZmJfZml4X3NjcmVlbmluZm88L3N0cnVjdG5hbWU+LiBUaGUKKzxjb25zdGFudD5GQklPR0VUX0ZTQ1JFRU5JTkZPPC9jb25zdGFudD4gaW9jdGwgYW5kIHN0cnVjdAorPHN0cnVjdG5hbWU+ZmJfZml4X3NjcmVlbmluZm88L3N0cnVjdG5hbWU+IGFyZSBkZWZpbmVkIGluIHRoZQorPGZpbGVuYW1lPmxpbnV4L2ZiLmg8L2ZpbGVuYW1lPiBoZWFkZXIgZmlsZS48L3BhcmE+CisKKyAgICA8cGFyYT5UaGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgZnJhbWVidWZmZXIgZGVwZW5kcyBvbiB0aGUKK2N1cnJlbnQgdmlkZW8gc3RhbmRhcmQuIEEgVjRMMiBkcml2ZXIgbWF5IHJlamVjdCBhdHRlbXB0cyB0byBjaGFuZ2UKK3RoZSB2aWRlbyBzdGFuZGFyZCAob3IgYW55IG90aGVyIGlvY3RsIHdoaWNoIHdvdWxkIGltcGx5IGEgZnJhbWVidWZmZXIKK3NpemUgY2hhbmdlKSB3aXRoIGFuICZFQlVTWTsgdW50aWwgYWxsIGFwcGxpY2F0aW9ucyBjbG9zZWQgdGhlCitmcmFtZWJ1ZmZlciBkZXZpY2UuPC9wYXJhPgorCisgICAgPGV4YW1wbGU+CisgICAgICA8dGl0bGU+RmluZGluZyBhIGZyYW1lYnVmZmVyIGRldmljZSBmb3IgT1NEPC90aXRsZT4KKworICAgICAgPHByb2dyYW1saXN0aW5nPgorI2luY2x1ZGUgJmx0O2xpbnV4L2ZiLmgmZ3Q7CisKKyZ2NGwyLWZyYW1lYnVmZmVyOyBmYnVmOwordW5zaWduZWQgaW50IGk7CitpbnQgZmJfZmQ7CisKK2lmICgtMSA9PSBpb2N0bChmZCwgVklESU9DX0dfRkJVRiwgJmFtcDtmYnVmKSkgeworCXBlcnJvcigiVklESU9DX0dfRkJVRiIpOworCWV4aXQoRVhJVF9GQUlMVVJFKTsKK30KKworZm9yIChpID0gMDsgaSAmbHQ7IDMwOyBpKyspIHsKKwljaGFyIGRldl9uYW1lWzE2XTsKKwlzdHJ1Y3QgZmJfZml4X3NjcmVlbmluZm8gc2k7CisKKwlzbnByaW50ZihkZXZfbmFtZSwgc2l6ZW9mKGRldl9uYW1lKSwgIi9kZXYvZmIldSIsIGkpOworCisJZmJfZmQgPSBvcGVuKGRldl9uYW1lLCBPX1JEV1IpOworCWlmICgtMSA9PSBmYl9mZCkgeworCQlzd2l0Y2ggKGVycm5vKSB7CisJCWNhc2UgRU5PRU5UOiAvKiBubyBzdWNoIGZpbGUgKi8KKwkJY2FzZSBFTlhJTzogIC8qIG5vIGRyaXZlciAqLworCQkJY29udGludWU7CisKKwkJZGVmYXVsdDoKKwkJCXBlcnJvcigib3BlbiIpOworCQkJZXhpdChFWElUX0ZBSUxVUkUpOworCQl9CisJfQorCisJaWYgKDAgPT0gaW9jdGwoZmJfZmQsIEZCSU9HRVRfRlNDUkVFTklORk8sICZhbXA7c2kpKSB7CisJCWlmIChzaS5zbWVtX3N0YXJ0ID09ICh1bnNpZ25lZCBsb25nKWZidWYuYmFzZSkKKwkJCWJyZWFrOworCX0gZWxzZSB7CisJCS8qIEFwcGFyZW50bHkgbm90IGEgZnJhbWVidWZmZXIgZGV2aWNlLiAqLworCX0KKworCWNsb3NlKGZiX2ZkKTsKKwlmYl9mZCA9IC0xOworfQorCisvKiBmYl9mZCBpcyB0aGUgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBmcmFtZWJ1ZmZlciBkZXZpY2UKKyAgIGZvciB0aGUgdmlkZW8gb3V0cHV0IG92ZXJsYXksIG9yIC0xIGlmIG5vIGRldmljZSB3YXMgZm91bmQuICovCis8L3Byb2dyYW1saXN0aW5nPgorICAgIDwvZXhhbXBsZT4KKyAgPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uPgorICAgIDx0aXRsZT5PdmVybGF5IFdpbmRvdyBhbmQgU2NhbGluZzwvdGl0bGU+CisKKyAgICA8cGFyYT5UaGUgb3ZlcmxheSBpcyBjb250cm9sbGVkIGJ5IHNvdXJjZSBhbmQgdGFyZ2V0IHJlY3RhbmdsZXMuCitUaGUgc291cmNlIHJlY3RhbmdsZSBzZWxlY3RzIGEgc3Vic2VjdGlvbiBvZiB0aGUgZnJhbWVidWZmZXIgaW1hZ2UgdG8KK2JlIG92ZXJsYWlkLCB0aGUgdGFyZ2V0IHJlY3RhbmdsZSBhbiBhcmVhIGluIHRoZSBvdXRnb2luZyB2aWRlbyBzaWduYWwKK3doZXJlIHRoZSBpbWFnZSB3aWxsIGFwcGVhci4gRHJpdmVycyBtYXkgb3IgbWF5IG5vdCBzdXBwb3J0IHNjYWxpbmcsCithbmQgYXJiaXRyYXJ5IHNpemVzIGFuZCBwb3NpdGlvbnMgb2YgdGhlc2UgcmVjdGFuZ2xlcy4gRnVydGhlciBkcml2ZXJzCittYXkgc3VwcG9ydCBhbnkgKG9yIG5vbmUpIG9mIHRoZSBjbGlwcGluZy9ibGVuZGluZyBtZXRob2RzIGRlZmluZWQgZm9yCit0aGUgPGxpbmsgbGlua2VuZD0ib3ZlcmxheSI+VmlkZW8gT3ZlcmxheTwvbGluaz4gaW50ZXJmYWNlLjwvcGFyYT4KKworICAgIDxwYXJhPkEgJnY0bDItd2luZG93OyBkZWZpbmVzIHRoZSBzaXplIG9mIHRoZSBzb3VyY2UgcmVjdGFuZ2xlLAoraXRzIHBvc2l0aW9uIGluIHRoZSBmcmFtZWJ1ZmZlciBhbmQgdGhlIGNsaXBwaW5nL2JsZW5kaW5nIG1ldGhvZCB0byBiZQordXNlZCBmb3IgdGhlIG92ZXJsYXkuIFRvIGdldCB0aGUgY3VycmVudCBwYXJhbWV0ZXJzIGFwcGxpY2F0aW9ucyBzZXQKK3RoZSA8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mIGEgJnY0bDItZm9ybWF0OyB0bworPGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVklERU9fT1VUUFVUX09WRVJMQVk8L2NvbnN0YW50PiBhbmQgY2FsbCB0aGUKKyZWSURJT0MtRy1GTVQ7IGlvY3RsLiBUaGUgZHJpdmVyIGZpbGxzIHRoZQorPHN0cnVjdG5hbWU+djRsMl93aW5kb3c8L3N0cnVjdG5hbWU+IHN1YnN0cnVjdHVyZSBuYW1lZAorPHN0cnVjdGZpZWxkPndpbjwvc3RydWN0ZmllbGQ+LiBJdCBpcyBub3QgcG9zc2libGUgdG8gcmV0cmlldmUgYQorcHJldmlvdXNseSBwcm9ncmFtbWVkIGNsaXBwaW5nIGxpc3Qgb3IgYml0bWFwLjwvcGFyYT4KKworICAgIDxwYXJhPlRvIHByb2dyYW0gdGhlIHNvdXJjZSByZWN0YW5nbGUgYXBwbGljYXRpb25zIHNldCB0aGUKKzxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gZmllbGQgb2YgYSAmdjRsMi1mb3JtYXQ7IHRvCis8Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVRfT1ZFUkxBWTwvY29uc3RhbnQ+LCBpbml0aWFsaXplCit0aGUgPHN0cnVjdGZpZWxkPndpbjwvc3RydWN0ZmllbGQ+IHN1YnN0cnVjdHVyZSBhbmQgY2FsbCB0aGUKKyZWSURJT0MtUy1GTVQ7IGlvY3RsLiBUaGUgZHJpdmVyIGFkanVzdHMgdGhlIHBhcmFtZXRlcnMgYWdhaW5zdAoraGFyZHdhcmUgbGltaXRzIGFuZCByZXR1cm5zIHRoZSBhY3R1YWwgcGFyYW1ldGVycyBhcworPGNvbnN0YW50PlZJRElPQ19HX0ZNVDwvY29uc3RhbnQ+IGRvZXMuIExpa2UKKzxjb25zdGFudD5WSURJT0NfU19GTVQ8L2NvbnN0YW50PiwgdGhlICZWSURJT0MtVFJZLUZNVDsgaW9jdGwgY2FuIGJlCit1c2VkIHRvIGxlYXJuIGFib3V0IGRyaXZlciBjYXBhYmlsaXRpZXMgd2l0aG91dCBhY3R1YWxseSBjaGFuZ2luZworZHJpdmVyIHN0YXRlLiBVbmxpa2UgPGNvbnN0YW50PlZJRElPQ19TX0ZNVDwvY29uc3RhbnQ+IHRoaXMgYWxzbyB3b3JrcworYWZ0ZXIgdGhlIG92ZXJsYXkgaGFzIGJlZW4gZW5hYmxlZC48L3BhcmE+CisKKyAgICA8cGFyYT5BICZ2NGwyLWNyb3A7IGRlZmluZXMgdGhlIHNpemUgYW5kIHBvc2l0aW9uIG9mIHRoZSB0YXJnZXQKK3JlY3RhbmdsZS4gVGhlIHNjYWxpbmcgZmFjdG9yIG9mIHRoZSBvdmVybGF5IGlzIGltcGxpZWQgYnkgdGhlIHdpZHRoCithbmQgaGVpZ2h0IGdpdmVuIGluICZ2NGwyLXdpbmRvdzsgYW5kICZ2NGwyLWNyb3A7LiBUaGUgY3JvcHBpbmcgQVBJCithcHBsaWVzIHRvIDx3b3JkYXN3b3JkPlZpZGVvIE91dHB1dDwvd29yZGFzd29yZD4gYW5kIDx3b3JkYXN3b3JkPlZpZGVvCitPdXRwdXQgT3ZlcmxheTwvd29yZGFzd29yZD4gZGV2aWNlcyBpbiB0aGUgc2FtZSB3YXkgYXMgdG8KKzx3b3JkYXN3b3JkPlZpZGVvIENhcHR1cmU8L3dvcmRhc3dvcmQ+IGFuZCA8d29yZGFzd29yZD5WaWRlbworT3ZlcmxheTwvd29yZGFzd29yZD4gZGV2aWNlcywgbWVyZWx5IHJldmVyc2luZyB0aGUgZGlyZWN0aW9uIG9mIHRoZQorZGF0YSBmbG93LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgPHhyZWYgbGlua2VuZD0iY3JvcCIgLz4uPC9wYXJhPgorICA8L3NlY3Rpb24+CisKKyAgPHNlY3Rpb24+CisgICAgPHRpdGxlPkVuYWJsaW5nIE92ZXJsYXk8L3RpdGxlPgorCisgICAgPHBhcmE+VGhlcmUgaXMgbm8gVjRMMiBpb2N0bCB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgb3ZlcmxheSwKK2hvd2V2ZXIgdGhlIGZyYW1lYnVmZmVyIGludGVyZmFjZSBvZiB0aGUgZHJpdmVyIG1heSBzdXBwb3J0IHRoZQorPGNvbnN0YW50PkZCSU9CTEFOSzwvY29uc3RhbnQ+IGlvY3RsLjwvcGFyYT4KKyAgPC9zZWN0aW9uPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9kZXYtb3V0cHV0LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZGV2LW91dHB1dC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTEzMGEzZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZGV2LW91dHB1dC54bWwKQEAgLTAsMCArMSwxMDYgQEAKKyAgPHRpdGxlPlZpZGVvIE91dHB1dCBJbnRlcmZhY2U8L3RpdGxlPgorCisgIDxwYXJhPlZpZGVvIG91dHB1dCBkZXZpY2VzIGVuY29kZSBzdGlsbHMgb3IgaW1hZ2Ugc2VxdWVuY2VzIGFzCithbmFsb2cgdmlkZW8gc2lnbmFsLiBXaXRoIHRoaXMgaW50ZXJmYWNlIGFwcGxpY2F0aW9ucyBjYW4KK2NvbnRyb2wgdGhlIGVuY29kaW5nIHByb2Nlc3MgYW5kIG1vdmUgaW1hZ2VzIGZyb20gdXNlciBzcGFjZSB0bwordGhlIGRyaXZlci48L3BhcmE+CisKKyAgPHBhcmE+Q29udmVudGlvbmFsbHkgVjRMMiB2aWRlbyBvdXRwdXQgZGV2aWNlcyBhcmUgYWNjZXNzZWQgdGhyb3VnaAorY2hhcmFjdGVyIGRldmljZSBzcGVjaWFsIGZpbGVzIG5hbWVkIDxmaWxlbmFtZT4vZGV2L3ZpZGVvPC9maWxlbmFtZT4KK2FuZCA8ZmlsZW5hbWU+L2Rldi92aWRlbzA8L2ZpbGVuYW1lPiB0bworPGZpbGVuYW1lPi9kZXYvdmlkZW82MzwvZmlsZW5hbWU+IHdpdGggbWFqb3IgbnVtYmVyIDgxIGFuZCBtaW5vcgorbnVtYmVycyAwIHRvIDYzLiA8ZmlsZW5hbWU+L2Rldi92aWRlbzwvZmlsZW5hbWU+IGlzIHR5cGljYWxseSBhCitzeW1ib2xpYyBsaW5rIHRvIHRoZSBwcmVmZXJyZWQgdmlkZW8gZGV2aWNlLiBOb3RlIHRoZSBzYW1lIGRldmljZQorZmlsZXMgYXJlIHVzZWQgZm9yIHZpZGVvIGNhcHR1cmUgZGV2aWNlcy48L3BhcmE+CisKKyAgPHNlY3Rpb24+CisgICAgPHRpdGxlPlF1ZXJ5aW5nIENhcGFiaWxpdGllczwvdGl0bGU+CisKKyAgICA8cGFyYT5EZXZpY2VzIHN1cHBvcnRpbmcgdGhlIHZpZGVvIG91dHB1dCBpbnRlcmZhY2Ugc2V0IHRoZQorPGNvbnN0YW50PlY0TDJfQ0FQX1ZJREVPX09VVFBVVDwvY29uc3RhbnQ+IG9yCis8Y29uc3RhbnQ+VjRMMl9DQVBfVklERU9fT1VUUFVUX01QTEFORTwvY29uc3RhbnQ+IGZsYWcgaW4gdGhlCis8c3RydWN0ZmllbGQ+Y2FwYWJpbGl0aWVzPC9zdHJ1Y3RmaWVsZD4gZmllbGQgb2YgJnY0bDItY2FwYWJpbGl0eTsKK3JldHVybmVkIGJ5IHRoZSAmVklESU9DLVFVRVJZQ0FQOyBpb2N0bC4gQXMgc2Vjb25kYXJ5IGRldmljZSBmdW5jdGlvbnMKK3RoZXkgbWF5IGFsc28gc3VwcG9ydCB0aGUgPGxpbmsgbGlua2VuZD0icmF3LXZiaSI+cmF3IFZCSQorb3V0cHV0PC9saW5rPiAoPGNvbnN0YW50PlY0TDJfQ0FQX1ZCSV9PVVRQVVQ8L2NvbnN0YW50PikgaW50ZXJmYWNlLiBBdAorbGVhc3Qgb25lIG9mIHRoZSByZWFkL3dyaXRlIG9yIHN0cmVhbWluZyBJL08gbWV0aG9kcyBtdXN0IGJlCitzdXBwb3J0ZWQuIE1vZHVsYXRvcnMgYW5kIGF1ZGlvIG91dHB1dHMgYXJlIG9wdGlvbmFsLjwvcGFyYT4KKyAgPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uPgorICAgIDx0aXRsZT5TdXBwbGVtZW50YWwgRnVuY3Rpb25zPC90aXRsZT4KKworICAgIDxwYXJhPlZpZGVvIG91dHB1dCBkZXZpY2VzIHNoYWxsIHN1cHBvcnQgPGxpbmsKK2xpbmtlbmQ9ImF1ZGlvIj5hdWRpbyBvdXRwdXQ8L2xpbms+LCA8bGluaworbGlua2VuZD0idHVuZXIiPm1vZHVsYXRvcjwvbGluaz4sIDxsaW5rIGxpbmtlbmQ9ImNvbnRyb2wiPmNvbnRyb2xzPC9saW5rPiwKKzxsaW5rIGxpbmtlbmQ9ImNyb3AiPmNyb3BwaW5nIGFuZCBzY2FsaW5nPC9saW5rPiBhbmQgPGxpbmsKK2xpbmtlbmQ9InN0cmVhbWluZy1wYXIiPnN0cmVhbWluZyBwYXJhbWV0ZXI8L2xpbms+IGlvY3RscyBhcyBuZWVkZWQuCitUaGUgPGxpbmsgbGlua2VuZD0idmlkZW8iPnZpZGVvIG91dHB1dDwvbGluaz4gYW5kIDxsaW5rCitsaW5rZW5kPSJzdGFuZGFyZCI+dmlkZW8gc3RhbmRhcmQ8L2xpbms+IGlvY3RscyBtdXN0IGJlIHN1cHBvcnRlZCBieQorYWxsIHZpZGVvIG91dHB1dCBkZXZpY2VzLjwvcGFyYT4KKyAgPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uPgorICAgIDx0aXRsZT5JbWFnZSBGb3JtYXQgTmVnb3RpYXRpb248L3RpdGxlPgorCisgICAgPHBhcmE+VGhlIG91dHB1dCBpcyBkZXRlcm1pbmVkIGJ5IGNyb3BwaW5nIGFuZCBpbWFnZSBmb3JtYXQKK3BhcmFtZXRlcnMuIFRoZSBmb3JtZXIgc2VsZWN0IGFuIGFyZWEgb2YgdGhlIHZpZGVvIHBpY3R1cmUgd2hlcmUgdGhlCitpbWFnZSB3aWxsIGFwcGVhciwgdGhlIGxhdHRlciBob3cgaW1hZ2VzIGFyZSBzdG9yZWQgaW4gbWVtb3J5LCAmaWU7IGluCitSR0Igb3IgWVVWIGZvcm1hdCwgdGhlIG51bWJlciBvZiBiaXRzIHBlciBwaXhlbCBvciB3aWR0aCBhbmQgaGVpZ2h0LgorVG9nZXRoZXIgdGhleSBhbHNvIGRlZmluZSBob3cgaW1hZ2VzIGFyZSBzY2FsZWQgaW4gdGhlIHByb2Nlc3MuPC9wYXJhPgorCisgICAgPHBhcmE+QXMgdXN1YWwgdGhlc2UgcGFyYW1ldGVycyBhcmUgPGVtcGhhc2lzPm5vdDwvZW1waGFzaXM+IHJlc2V0CithdCAmZnVuYy1vcGVuOyB0aW1lIHRvIHBlcm1pdCBVbml4IHRvb2wgY2hhaW5zLCBwcm9ncmFtbWluZyBhIGRldmljZQorYW5kIHRoZW4gd3JpdGluZyB0byBpdCBhcyBpZiBpdCB3YXMgYSBwbGFpbiBmaWxlLiBXZWxsIHdyaXR0ZW4gVjRMMgorYXBwbGljYXRpb25zIGVuc3VyZSB0aGV5IHJlYWxseSBnZXQgd2hhdCB0aGV5IHdhbnQsIGluY2x1ZGluZyBjcm9wcGluZworYW5kIHNjYWxpbmcuPC9wYXJhPgorCisgICAgPHBhcmE+Q3JvcHBpbmcgaW5pdGlhbGl6YXRpb24gYXQgbWluaW11bSByZXF1aXJlcyB0byByZXNldCB0aGUKK3BhcmFtZXRlcnMgdG8gZGVmYXVsdHMuIEFuIGV4YW1wbGUgaXMgZ2l2ZW4gaW4gPHhyZWYKK2xpbmtlbmQ9ImNyb3AiIC8+LjwvcGFyYT4KKworICAgIDxwYXJhPlRvIHF1ZXJ5IHRoZSBjdXJyZW50IGltYWdlIGZvcm1hdCBhcHBsaWNhdGlvbnMgc2V0IHRoZQorPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiBhICZ2NGwyLWZvcm1hdDsgdG8KKzxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVDwvY29uc3RhbnQ+IG9yCis8Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVRfTVBMQU5FPC9jb25zdGFudD4gYW5kIGNhbGwgdGhlCismVklESU9DLUctRk1UOyBpb2N0bCB3aXRoIGEgcG9pbnRlciB0byB0aGlzIHN0cnVjdHVyZS4gRHJpdmVycyBmaWxsCit0aGUgJnY0bDItcGl4LWZvcm1hdDsgPHN0cnVjdGZpZWxkPnBpeDwvc3RydWN0ZmllbGQ+IG9yIHRoZQorJnY0bDItcGl4LWZvcm1hdC1tcGxhbmU7IDxzdHJ1Y3RmaWVsZD5waXhfbXA8L3N0cnVjdGZpZWxkPiBtZW1iZXIgb2YgdGhlCis8c3RydWN0ZmllbGQ+Zm10PC9zdHJ1Y3RmaWVsZD4gdW5pb24uPC9wYXJhPgorCisgICAgPHBhcmE+VG8gcmVxdWVzdCBkaWZmZXJlbnQgcGFyYW1ldGVycyBhcHBsaWNhdGlvbnMgc2V0IHRoZQorPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiBhICZ2NGwyLWZvcm1hdDsgYXMgYWJvdmUgYW5kCitpbml0aWFsaXplIGFsbCBmaWVsZHMgb2YgdGhlICZ2NGwyLXBpeC1mb3JtYXQ7Cis8c3RydWN0ZmllbGQ+dmJpPC9zdHJ1Y3RmaWVsZD4gbWVtYmVyIG9mIHRoZQorPHN0cnVjdGZpZWxkPmZtdDwvc3RydWN0ZmllbGQ+IHVuaW9uLCBvciBiZXR0ZXIganVzdCBtb2RpZnkgdGhlCityZXN1bHRzIG9mIDxjb25zdGFudD5WSURJT0NfR19GTVQ8L2NvbnN0YW50PiwgYW5kIGNhbGwgdGhlCismVklESU9DLVMtRk1UOyBpb2N0bCB3aXRoIGEgcG9pbnRlciB0byB0aGlzIHN0cnVjdHVyZS4gRHJpdmVycyBtYXkKK2FkanVzdCB0aGUgcGFyYW1ldGVycyBhbmQgZmluYWxseSByZXR1cm4gdGhlIGFjdHVhbCBwYXJhbWV0ZXJzIGFzCis8Y29uc3RhbnQ+VklESU9DX0dfRk1UPC9jb25zdGFudD4gZG9lcy48L3BhcmE+CisKKyAgICA8cGFyYT5MaWtlIDxjb25zdGFudD5WSURJT0NfU19GTVQ8L2NvbnN0YW50PiB0aGUKKyZWSURJT0MtVFJZLUZNVDsgaW9jdGwgY2FuIGJlIHVzZWQgdG8gbGVhcm4gYWJvdXQgaGFyZHdhcmUgbGltaXRhdGlvbnMKK3dpdGhvdXQgZGlzYWJsaW5nIEkvTyBvciBwb3NzaWJseSB0aW1lIGNvbnN1bWluZyBoYXJkd2FyZQorcHJlcGFyYXRpb25zLjwvcGFyYT4KKworICAgIDxwYXJhPlRoZSBjb250ZW50cyBvZiAmdjRsMi1waXgtZm9ybWF0OyBhbmQgJnY0bDItcGl4LWZvcm1hdC1tcGxhbmU7CithcmUgZGlzY3Vzc2VkIGluIDx4cmVmIGxpbmtlbmQ9InBpeGZtdCIgLz4uIFNlZSBhbHNvIHRoZSBzcGVjaWZpY2F0aW9uIG9mIHRoZQorPGNvbnN0YW50PlZJRElPQ19HX0ZNVDwvY29uc3RhbnQ+LCA8Y29uc3RhbnQ+VklESU9DX1NfRk1UPC9jb25zdGFudD4KK2FuZCA8Y29uc3RhbnQ+VklESU9DX1RSWV9GTVQ8L2NvbnN0YW50PiBpb2N0bHMgZm9yIGRldGFpbHMuIFZpZGVvCitvdXRwdXQgZGV2aWNlcyBtdXN0IGltcGxlbWVudCBib3RoIHRoZQorPGNvbnN0YW50PlZJRElPQ19HX0ZNVDwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlZJRElPQ19TX0ZNVDwvY29uc3RhbnQ+IGlvY3RsLCBldmVuIGlmCis8Y29uc3RhbnQ+VklESU9DX1NfRk1UPC9jb25zdGFudD4gaWdub3JlcyBhbGwgcmVxdWVzdHMgYW5kIGFsd2F5cworcmV0dXJucyBkZWZhdWx0IHBhcmFtZXRlcnMgYXMgPGNvbnN0YW50PlZJRElPQ19HX0ZNVDwvY29uc3RhbnQ+IGRvZXMuCis8Y29uc3RhbnQ+VklESU9DX1RSWV9GTVQ8L2NvbnN0YW50PiBpcyBvcHRpb25hbC48L3BhcmE+CisgIDwvc2VjdGlvbj4KKworICA8c2VjdGlvbj4KKyAgICA8dGl0bGU+V3JpdGluZyBJbWFnZXM8L3RpdGxlPgorCisgICAgPHBhcmE+QSB2aWRlbyBvdXRwdXQgZGV2aWNlIG1heSBzdXBwb3J0IHRoZSA8bGluaworbGlua2VuZD0icnciPndyaXRlKCkgZnVuY3Rpb248L2xpbms+IGFuZC9vciBzdHJlYW1pbmcgKDxsaW5rCitsaW5rZW5kPSJtbWFwIj5tZW1vcnkgbWFwcGluZzwvbGluaz4gb3IgPGxpbmsKK2xpbmtlbmQ9InVzZXJwIj51c2VyIHBvaW50ZXI8L2xpbms+KSBJL08uIFNlZSA8eHJlZgorbGlua2VuZD0iaW8iIC8+IGZvciBkZXRhaWxzLjwvcGFyYT4KKyAgPC9zZWN0aW9uPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9kZXYtb3ZlcmxheS54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2Rldi1vdmVybGF5LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzZlMGM1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9kZXYtb3ZlcmxheS54bWwKQEAgLTAsMCArMSwzNjggQEAKKyAgPHRpdGxlPlZpZGVvIE92ZXJsYXkgSW50ZXJmYWNlPC90aXRsZT4KKyAgPHN1YnRpdGxlPkFsc28ga25vd24gYXMgRnJhbWVidWZmZXIgT3ZlcmxheSBvciBQcmV2aWV3aW5nPC9zdWJ0aXRsZT4KKworICA8cGFyYT5WaWRlbyBvdmVybGF5IGRldmljZXMgaGF2ZSB0aGUgYWJpbGl0eSB0byBnZW5sb2NrIChUVi0pdmlkZW8KK2ludG8gdGhlIChWR0EtKXZpZGVvIHNpZ25hbCBvZiBhIGdyYXBoaWNzIGNhcmQsIG9yIHRvIHN0b3JlIGNhcHR1cmVkCitpbWFnZXMgZGlyZWN0bHkgaW4gdmlkZW8gbWVtb3J5IG9mIGEgZ3JhcGhpY3MgY2FyZCwgdHlwaWNhbGx5IHdpdGgKK2NsaXBwaW5nLiBUaGlzIGNhbiBiZSBjb25zaWRlcmFibGUgbW9yZSBlZmZpY2llbnQgdGhhbiBjYXB0dXJpbmcKK2ltYWdlcyBhbmQgZGlzcGxheWluZyB0aGVtIGJ5IG90aGVyIG1lYW5zLiBJbiB0aGUgb2xkIGRheXMgd2hlbiBvbmx5CitudWNsZWFyIHBvd2VyIHBsYW50cyBuZWVkZWQgY29vbGluZyB0b3dlcnMgdGhpcyB1c2VkIHRvIGJlIHRoZSBvbmx5Cit3YXkgdG8gcHV0IGxpdmUgdmlkZW8gaW50byBhIHdpbmRvdy48L3BhcmE+CisKKyAgPHBhcmE+VmlkZW8gb3ZlcmxheSBkZXZpY2VzIGFyZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBzYW1lIGNoYXJhY3Rlcgorc3BlY2lhbCBmaWxlcyBhcyA8bGluayBsaW5rZW5kPSJjYXB0dXJlIj52aWRlbyBjYXB0dXJlPC9saW5rPiBkZXZpY2VzLgorTm90ZSB0aGUgZGVmYXVsdCBmdW5jdGlvbiBvZiBhIDxmaWxlbmFtZT4vZGV2L3ZpZGVvPC9maWxlbmFtZT4gZGV2aWNlCitpcyB2aWRlbyBjYXB0dXJpbmcuIFRoZSBvdmVybGF5IGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIGFmdGVyCitjYWxsaW5nIHRoZSAmVklESU9DLVMtRk1UOyBpb2N0bC48L3BhcmE+CisKKyAgICA8cGFyYT5UaGUgZHJpdmVyIG1heSBzdXBwb3J0IHNpbXVsdGFuZW91cyBvdmVybGF5IGFuZCBjYXB0dXJpbmcKK3VzaW5nIHRoZSByZWFkL3dyaXRlIGFuZCBzdHJlYW1pbmcgSS9PIG1ldGhvZHMuIElmIHNvLCBvcGVyYXRpb24gYXQKK3RoZSBub21pbmFsIGZyYW1lIHJhdGUgb2YgdGhlIHZpZGVvIHN0YW5kYXJkIGlzIG5vdCBndWFyYW50ZWVkLiBGcmFtZXMKK21heSBiZSBkaXJlY3RlZCBhd2F5IGZyb20gb3ZlcmxheSB0byBjYXB0dXJlLCBvciBvbmUgZmllbGQgbWF5IGJlIHVzZWQKK2ZvciBvdmVybGF5IGFuZCB0aGUgb3RoZXIgZm9yIGNhcHR1cmUgaWYgdGhlIGNhcHR1cmUgcGFyYW1ldGVycyBwZXJtaXQKK3RoaXMuPC9wYXJhPgorCisgIDxwYXJhPkFwcGxpY2F0aW9ucyBzaG91bGQgdXNlIGRpZmZlcmVudCBmaWxlIGRlc2NyaXB0b3JzIGZvcgorY2FwdHVyaW5nIGFuZCBvdmVybGF5LiBUaGlzIG11c3QgYmUgc3VwcG9ydGVkIGJ5IGFsbCBkcml2ZXJzIGNhcGFibGUKK29mIHNpbXVsdGFuZW91cyBjYXB0dXJpbmcgYW5kIG92ZXJsYXkuIE9wdGlvbmFsbHkgdGhlc2UgZHJpdmVycyBtYXkKK2Fsc28gcGVybWl0IGNhcHR1cmluZyBhbmQgb3ZlcmxheSB3aXRoIGEgc2luZ2xlIGZpbGUgZGVzY3JpcHRvciBmb3IKK2NvbXBhdGliaWxpdHkgd2l0aCBWNEwgYW5kIGVhcmxpZXIgdmVyc2lvbnMgb2YgVjRMMi48Zm9vdG5vdGU+CisJPHBhcmE+QSBjb21tb24gYXBwbGljYXRpb24gb2YgdHdvIGZpbGUgZGVzY3JpcHRvcnMgaXMgdGhlCitYRnJlZTg2IDxsaW5rIGxpbmtlbmQ9Inh2aWRlbyI+WHYvVjRMPC9saW5rPiBpbnRlcmZhY2UgZHJpdmVyIGFuZAorYSBWNEwyIGFwcGxpY2F0aW9uLiBXaGlsZSB0aGUgWCBzZXJ2ZXIgY29udHJvbHMgdmlkZW8gb3ZlcmxheSwgdGhlCithcHBsaWNhdGlvbiBjYW4gdGFrZSBhZHZhbnRhZ2Ugb2YgbWVtb3J5IG1hcHBpbmcgYW5kIERNQS48L3BhcmE+CisJPHBhcmE+SW4gdGhlIG9waW5pb24gb2YgdGhlIGRlc2lnbmVycyBvZiB0aGlzIEFQSSwgbm8gZHJpdmVyCit3cml0ZXIgdGFraW5nIHRoZSBlZmZvcnRzIHRvIHN1cHBvcnQgc2ltdWx0YW5lb3VzIGNhcHR1cmluZyBhbmQKK292ZXJsYXkgd2lsbCByZXN0cmljdCB0aGlzIGFiaWxpdHkgYnkgcmVxdWlyaW5nIGEgc2luZ2xlIGZpbGUKK2Rlc2NyaXB0b3IsIGFzIGluIFY0TCBhbmQgZWFybGllciB2ZXJzaW9ucyBvZiBWNEwyLiBNYWtpbmcgdGhpcworb3B0aW9uYWwgbWVhbnMgYXBwbGljYXRpb25zIGRlcGVuZGluZyBvbiB0d28gZmlsZSBkZXNjcmlwdG9ycyBuZWVkCitiYWNrdXAgcm91dGluZXMgdG8gYmUgY29tcGF0aWJsZSB3aXRoIGFsbCBkcml2ZXJzLCB3aGljaCBpcworY29uc2lkZXJhYmxlIG1vcmUgd29yayB0aGFuIHVzaW5nIHR3byBmZHMgaW4gYXBwbGljYXRpb25zIHdoaWNoIGRvCitub3QuIEFsc28gdHdvIGZkJ3MgZml0IHRoZSBnZW5lcmFsIGNvbmNlcHQgb2Ygb25lIGZpbGUgZGVzY3JpcHRvciBmb3IKK2VhY2ggbG9naWNhbCBzdHJlYW0uIEhlbmNlIGFzIGEgY29tcGxleGl0eSB0cmFkZS1vZmYgZHJpdmVycworPGVtcGhhc2lzPm11c3Q8L2VtcGhhc2lzPiBzdXBwb3J0IHR3byBmaWxlIGRlc2NyaXB0b3JzIGFuZAorPGVtcGhhc2lzPm1heTwvZW1waGFzaXM+IHN1cHBvcnQgc2luZ2xlIGZkIG9wZXJhdGlvbi48L3BhcmE+CisgICAgICA8L2Zvb3Rub3RlPjwvcGFyYT4KKworICA8c2VjdGlvbj4KKyAgICA8dGl0bGU+UXVlcnlpbmcgQ2FwYWJpbGl0aWVzPC90aXRsZT4KKworICAgIDxwYXJhPkRldmljZXMgc3VwcG9ydGluZyB0aGUgdmlkZW8gb3ZlcmxheSBpbnRlcmZhY2Ugc2V0IHRoZQorPGNvbnN0YW50PlY0TDJfQ0FQX1ZJREVPX09WRVJMQVk8L2NvbnN0YW50PiBmbGFnIGluIHRoZQorPHN0cnVjdGZpZWxkPmNhcGFiaWxpdGllczwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mICZ2NGwyLWNhcGFiaWxpdHk7CityZXR1cm5lZCBieSB0aGUgJlZJRElPQy1RVUVSWUNBUDsgaW9jdGwuIFRoZSBvdmVybGF5IEkvTyBtZXRob2Qgc3BlY2lmaWVkCitiZWxvdyBtdXN0IGJlIHN1cHBvcnRlZC4gVHVuZXJzIGFuZCBhdWRpbyBpbnB1dHMgYXJlIG9wdGlvbmFsLjwvcGFyYT4KKyAgPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uPgorICAgIDx0aXRsZT5TdXBwbGVtZW50YWwgRnVuY3Rpb25zPC90aXRsZT4KKworICAgIDxwYXJhPlZpZGVvIG92ZXJsYXkgZGV2aWNlcyBzaGFsbCBzdXBwb3J0IDxsaW5rCitsaW5rZW5kPSJhdWRpbyI+YXVkaW8gaW5wdXQ8L2xpbms+LCA8bGluaworbGlua2VuZD0idHVuZXIiPnR1bmVyPC9saW5rPiwgPGxpbmsgbGlua2VuZD0iY29udHJvbCI+Y29udHJvbHM8L2xpbms+LAorPGxpbmsgbGlua2VuZD0iY3JvcCI+Y3JvcHBpbmcgYW5kIHNjYWxpbmc8L2xpbms+IGFuZCA8bGluaworbGlua2VuZD0ic3RyZWFtaW5nLXBhciI+c3RyZWFtaW5nIHBhcmFtZXRlcjwvbGluaz4gaW9jdGxzIGFzIG5lZWRlZC4KK1RoZSA8bGluayBsaW5rZW5kPSJ2aWRlbyI+dmlkZW8gaW5wdXQ8L2xpbms+IGFuZCA8bGluaworbGlua2VuZD0ic3RhbmRhcmQiPnZpZGVvIHN0YW5kYXJkPC9saW5rPiBpb2N0bHMgbXVzdCBiZSBzdXBwb3J0ZWQgYnkKK2FsbCB2aWRlbyBvdmVybGF5IGRldmljZXMuPC9wYXJhPgorICA8L3NlY3Rpb24+CisKKyAgPHNlY3Rpb24+CisgICAgPHRpdGxlPlNldHVwPC90aXRsZT4KKworICAgIDxwYXJhPkJlZm9yZSBvdmVybGF5IGNhbiBjb21tZW5jZSBhcHBsaWNhdGlvbnMgbXVzdCBwcm9ncmFtIHRoZQorZHJpdmVyIHdpdGggZnJhbWUgYnVmZmVyIHBhcmFtZXRlcnMsIG5hbWVseSB0aGUgYWRkcmVzcyBhbmQgc2l6ZSBvZgordGhlIGZyYW1lIGJ1ZmZlciBhbmQgdGhlIGltYWdlIGZvcm1hdCwgZm9yIGV4YW1wbGUgUkdCIDU6Njo1LiBUaGUKKyZWSURJT0MtRy1GQlVGOyBhbmQgJlZJRElPQy1TLUZCVUY7IGlvY3RscyBhcmUgYXZhaWxhYmxlIHRvIGdldAorYW5kIHNldCB0aGVzZSBwYXJhbWV0ZXJzLCByZXNwZWN0aXZlbHkuIFRoZQorPGNvbnN0YW50PlZJRElPQ19TX0ZCVUY8L2NvbnN0YW50PiBpb2N0bCBpcyBwcml2aWxlZ2VkIGJlY2F1c2UgaXQKK2FsbG93cyB0byBzZXQgdXAgRE1BIGludG8gcGh5c2ljYWwgbWVtb3J5LCBieXBhc3NpbmcgdGhlIG1lbW9yeQorcHJvdGVjdGlvbiBtZWNoYW5pc21zIG9mIHRoZSBrZXJuZWwuIE9ubHkgdGhlIHN1cGVydXNlciBjYW4gY2hhbmdlIHRoZQorZnJhbWUgYnVmZmVyIGFkZHJlc3MgYW5kIHNpemUuIFVzZXJzIGFyZSBub3Qgc3VwcG9zZWQgdG8gcnVuIFRWCithcHBsaWNhdGlvbnMgYXMgcm9vdCBvciB3aXRoIFNVSUQgYml0IHNldC4gQSBzbWFsbCBoZWxwZXIgYXBwbGljYXRpb24KK3dpdGggc3VpdGFibGUgcHJpdmlsZWdlcyBzaG91bGQgcXVlcnkgdGhlIGdyYXBoaWNzIHN5c3RlbSBhbmQgcHJvZ3JhbQordGhlIFY0TDIgZHJpdmVyIGF0IHRoZSBhcHByb3ByaWF0ZSB0aW1lLjwvcGFyYT4KKworICAgIDxwYXJhPlNvbWUgZGV2aWNlcyBhZGQgdGhlIHZpZGVvIG92ZXJsYXkgdG8gdGhlIG91dHB1dCBzaWduYWwKK29mIHRoZSBncmFwaGljcyBjYXJkLiBJbiB0aGlzIGNhc2UgdGhlIGZyYW1lIGJ1ZmZlciBpcyBub3QgbW9kaWZpZWQgYnkKK3RoZSB2aWRlbyBkZXZpY2UsIGFuZCB0aGUgZnJhbWUgYnVmZmVyIGFkZHJlc3MgYW5kIHBpeGVsIGZvcm1hdCBhcmUKK25vdCBuZWVkZWQgYnkgdGhlIGRyaXZlci4gVGhlIDxjb25zdGFudD5WSURJT0NfU19GQlVGPC9jb25zdGFudD4gaW9jdGwKK2lzIG5vdCBwcml2aWxlZ2VkLiBBbiBhcHBsaWNhdGlvbiBjYW4gY2hlY2sgZm9yIHRoaXMgdHlwZSBvZiBkZXZpY2UgYnkKK2NhbGxpbmcgdGhlIDxjb25zdGFudD5WSURJT0NfR19GQlVGPC9jb25zdGFudD4gaW9jdGwuPC9wYXJhPgorCisgICAgPHBhcmE+QSBkcml2ZXIgbWF5IHN1cHBvcnQgYW55IChvciBub25lKSBvZiBmaXZlIGNsaXBwaW5nL2JsZW5kaW5nCittZXRob2RzOjxvcmRlcmVkbGlzdD4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5DaHJvbWEta2V5aW5nIGRpc3BsYXlzIHRoZSBvdmVybGFpZCBpbWFnZSBvbmx5IHdoZXJlCitwaXhlbHMgaW4gdGhlIHByaW1hcnkgZ3JhcGhpY3Mgc3VyZmFjZSBhc3N1bWUgYSBjZXJ0YWluIGNvbG9yLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkEgYml0bWFwIGNhbiBiZSBzcGVjaWZpZWQgd2hlcmUgZWFjaCBiaXQgY29ycmVzcG9uZHMKK3RvIGEgcGl4ZWwgaW4gdGhlIG92ZXJsYWlkIGltYWdlLiBXaGVuIHRoZSBiaXQgaXMgc2V0LCB0aGUKK2NvcnJlc3BvbmRpbmcgdmlkZW8gcGl4ZWwgaXMgZGlzcGxheWVkLCBvdGhlcndpc2UgYSBwaXhlbCBvZiB0aGUKK2dyYXBoaWNzIHN1cmZhY2UuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+QSBsaXN0IG9mIGNsaXBwaW5nIHJlY3RhbmdsZXMgY2FuIGJlIHNwZWNpZmllZC4gSW4KK3RoZXNlIHJlZ2lvbnMgPGVtcGhhc2lzPm5vPC9lbXBoYXNpcz4gdmlkZW8gaXMgZGlzcGxheWVkLCBzbyB0aGUKK2dyYXBoaWNzIHN1cmZhY2UgY2FuIGJlIHNlZW4gaGVyZS48L3BhcmE+CisJPC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgZnJhbWVidWZmZXIgaGFzIGFuIGFscGhhIGNoYW5uZWwgdGhhdCBjYW4gYmUgdXNlZAordG8gY2xpcCBvciBibGVuZCB0aGUgZnJhbWVidWZmZXIgd2l0aCB0aGUgdmlkZW8uPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+QSBnbG9iYWwgYWxwaGEgdmFsdWUgY2FuIGJlIHNwZWNpZmllZCB0byBibGVuZCB0aGUKK2ZyYW1lYnVmZmVyIGNvbnRlbnRzIHdpdGggdmlkZW8gaW1hZ2VzLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC9vcmRlcmVkbGlzdD48L3BhcmE+CisKKyAgICA8cGFyYT5XaGVuIHNpbXVsdGFuZW91cyBjYXB0dXJpbmcgYW5kIG92ZXJsYXkgaXMgc3VwcG9ydGVkIGFuZAordGhlIGhhcmR3YXJlIHByb2hpYml0cyBkaWZmZXJlbnQgaW1hZ2UgYW5kIGZyYW1lIGJ1ZmZlciBmb3JtYXRzLCB0aGUKK2Zvcm1hdCByZXF1ZXN0ZWQgZmlyc3QgdGFrZXMgcHJlY2VkZW5jZS4gVGhlIGF0dGVtcHQgdG8gY2FwdHVyZQorKCZWSURJT0MtUy1GTVQ7KSBvciBvdmVybGF5ICgmVklESU9DLVMtRkJVRjspIG1heSBmYWlsIHdpdGggYW4KKyZFQlVTWTsgb3IgcmV0dXJuIGFjY29yZGluZ2x5IG1vZGlmaWVkIHBhcmFtZXRlcnMuLjwvcGFyYT4KKyAgPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uPgorICAgIDx0aXRsZT5PdmVybGF5IFdpbmRvdzwvdGl0bGU+CisKKyAgICA8cGFyYT5UaGUgb3ZlcmxhaWQgaW1hZ2UgaXMgZGV0ZXJtaW5lZCBieSBjcm9wcGluZyBhbmQgb3ZlcmxheQord2luZG93IHBhcmFtZXRlcnMuIFRoZSBmb3JtZXIgc2VsZWN0IGFuIGFyZWEgb2YgdGhlIHZpZGVvIHBpY3R1cmUgdG8KK2NhcHR1cmUsIHRoZSBsYXR0ZXIgaG93IGltYWdlcyBhcmUgb3ZlcmxhaWQgYW5kIGNsaXBwZWQuIENyb3BwaW5nCitpbml0aWFsaXphdGlvbiBhdCBtaW5pbXVtIHJlcXVpcmVzIHRvIHJlc2V0IHRoZSBwYXJhbWV0ZXJzIHRvCitkZWZhdWx0cy4gQW4gZXhhbXBsZSBpcyBnaXZlbiBpbiA8eHJlZiBsaW5rZW5kPSJjcm9wIiAvPi48L3BhcmE+CisKKyAgICA8cGFyYT5UaGUgb3ZlcmxheSB3aW5kb3cgaXMgZGVzY3JpYmVkIGJ5IGEgJnY0bDItd2luZG93Oy4gSXQKK2RlZmluZXMgdGhlIHNpemUgb2YgdGhlIGltYWdlLCBpdHMgcG9zaXRpb24gb3ZlciB0aGUgZ3JhcGhpY3Mgc3VyZmFjZQorYW5kIHRoZSBjbGlwcGluZyB0byBiZSBhcHBsaWVkLiBUbyBnZXQgdGhlIGN1cnJlbnQgcGFyYW1ldGVycworYXBwbGljYXRpb25zIHNldCB0aGUgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiBhCismdjRsMi1mb3JtYXQ7IHRvIDxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZJREVPX09WRVJMQVk8L2NvbnN0YW50PiBhbmQKK2NhbGwgdGhlICZWSURJT0MtRy1GTVQ7IGlvY3RsLiBUaGUgZHJpdmVyIGZpbGxzIHRoZQorPHN0cnVjdG5hbWU+djRsMl93aW5kb3c8L3N0cnVjdG5hbWU+IHN1YnN0cnVjdHVyZSBuYW1lZAorPHN0cnVjdGZpZWxkPndpbjwvc3RydWN0ZmllbGQ+LiBJdCBpcyBub3QgcG9zc2libGUgdG8gcmV0cmlldmUgYQorcHJldmlvdXNseSBwcm9ncmFtbWVkIGNsaXBwaW5nIGxpc3Qgb3IgYml0bWFwLjwvcGFyYT4KKworICAgIDxwYXJhPlRvIHByb2dyYW0gdGhlIG92ZXJsYXkgd2luZG93IGFwcGxpY2F0aW9ucyBzZXQgdGhlCis8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mIGEgJnY0bDItZm9ybWF0OyB0bworPGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVklERU9fT1ZFUkxBWTwvY29uc3RhbnQ+LCBpbml0aWFsaXplIHRoZQorPHN0cnVjdGZpZWxkPndpbjwvc3RydWN0ZmllbGQ+IHN1YnN0cnVjdHVyZSBhbmQgY2FsbCB0aGUKKyZWSURJT0MtUy1GTVQ7IGlvY3RsLiBUaGUgZHJpdmVyIGFkanVzdHMgdGhlIHBhcmFtZXRlcnMgYWdhaW5zdAoraGFyZHdhcmUgbGltaXRzIGFuZCByZXR1cm5zIHRoZSBhY3R1YWwgcGFyYW1ldGVycyBhcworPGNvbnN0YW50PlZJRElPQ19HX0ZNVDwvY29uc3RhbnQ+IGRvZXMuIExpa2UKKzxjb25zdGFudD5WSURJT0NfU19GTVQ8L2NvbnN0YW50PiwgdGhlICZWSURJT0MtVFJZLUZNVDsgaW9jdGwgY2FuIGJlCit1c2VkIHRvIGxlYXJuIGFib3V0IGRyaXZlciBjYXBhYmlsaXRpZXMgd2l0aG91dCBhY3R1YWxseSBjaGFuZ2luZworZHJpdmVyIHN0YXRlLiBVbmxpa2UgPGNvbnN0YW50PlZJRElPQ19TX0ZNVDwvY29uc3RhbnQ+IHRoaXMgYWxzbyB3b3JrcworYWZ0ZXIgdGhlIG92ZXJsYXkgaGFzIGJlZW4gZW5hYmxlZC48L3BhcmE+CisKKyAgICA8cGFyYT5UaGUgc2NhbGluZyBmYWN0b3Igb2YgdGhlIG92ZXJsYWlkIGltYWdlIGlzIGltcGxpZWQgYnkgdGhlCit3aWR0aCBhbmQgaGVpZ2h0IGdpdmVuIGluICZ2NGwyLXdpbmRvdzsgYW5kIHRoZSBzaXplIG9mIHRoZSBjcm9wcGluZworcmVjdGFuZ2xlLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgPHhyZWYgbGlua2VuZD0iY3JvcCIgLz4uPC9wYXJhPgorCisgICAgPHBhcmE+V2hlbiBzaW11bHRhbmVvdXMgY2FwdHVyaW5nIGFuZCBvdmVybGF5IGlzIHN1cHBvcnRlZCBhbmQKK3RoZSBoYXJkd2FyZSBwcm9oaWJpdHMgZGlmZmVyZW50IGltYWdlIGFuZCB3aW5kb3cgc2l6ZXMsIHRoZSBzaXplCityZXF1ZXN0ZWQgZmlyc3QgdGFrZXMgcHJlY2VkZW5jZS4gVGhlIGF0dGVtcHQgdG8gY2FwdHVyZSBvciBvdmVybGF5IGFzCit3ZWxsICgmVklESU9DLVMtRk1UOykgbWF5IGZhaWwgd2l0aCBhbiAmRUJVU1k7IG9yIHJldHVybiBhY2NvcmRpbmdseQorbW9kaWZpZWQgcGFyYW1ldGVycy48L3BhcmE+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItd2luZG93Ij4KKyAgICAgIDx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl93aW5kb3c8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PiZ2NGwyLXJlY3Q7PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD53PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+U2l6ZSBhbmQgcG9zaXRpb24gb2YgdGhlIHdpbmRvdyByZWxhdGl2ZSB0byB0aGUKK3RvcCwgbGVmdCBjb3JuZXIgb2YgdGhlIGZyYW1lIGJ1ZmZlciBkZWZpbmVkIHdpdGggJlZJRElPQy1TLUZCVUY7LiBUaGUKK3dpbmRvdyBjYW4gZXh0ZW5kIHRoZSBmcmFtZSBidWZmZXIgd2lkdGggYW5kIGhlaWdodCwgdGhlCis8c3RydWN0ZmllbGQ+eDwvc3RydWN0ZmllbGQ+IGFuZCA8c3RydWN0ZmllbGQ+eTwvc3RydWN0ZmllbGQ+Citjb29yZGluYXRlcyBjYW4gYmUgbmVnYXRpdmUsIGFuZCBpdCBjYW4gbGllIGNvbXBsZXRlbHkgb3V0c2lkZSB0aGUKK2ZyYW1lIGJ1ZmZlci4gVGhlIGRyaXZlciBjbGlwcyB0aGUgd2luZG93IGFjY29yZGluZ2x5LCBvciBpZiB0aGF0IGlzCitub3QgcG9zc2libGUsIG1vZGlmaWVzIGl0cyBzaXplIGFuZC9vciBwb3NpdGlvbi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+JnY0bDItZmllbGQ7PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5maWVsZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkFwcGxpY2F0aW9ucyBzZXQgdGhpcyBmaWVsZCB0byBkZXRlcm1pbmUgd2hpY2gKK3ZpZGVvIGZpZWxkIHNoYWxsIGJlIG92ZXJsYWlkLCB0eXBpY2FsbHkgb25lIG9mCis8Y29uc3RhbnQ+VjRMMl9GSUVMRF9BTlk8L2NvbnN0YW50PiAoMCksCis8Y29uc3RhbnQ+VjRMMl9GSUVMRF9UT1A8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WNEwyX0ZJRUxEX0JPVFRPTTwvY29uc3RhbnQ+IG9yCis8Y29uc3RhbnQ+VjRMMl9GSUVMRF9JTlRFUkxBQ0VEPC9jb25zdGFudD4uIERyaXZlcnMgbWF5IGhhdmUgdG8gY2hvb3NlCithIGRpZmZlcmVudCBmaWVsZCBvcmRlciBhbmQgcmV0dXJuIHRoZSBhY3R1YWwgc2V0dGluZyBoZXJlLjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5jaHJvbWFrZXk8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5XaGVuIGNocm9tYS1rZXlpbmcgaGFzIGJlZW4gbmVnb3RpYXRlZCB3aXRoCismVklESU9DLVMtRkJVRjsgYXBwbGljYXRpb25zIHNldCB0aGlzIGZpZWxkIHRvIHRoZSBkZXNpcmVkIHBpeGVsIHZhbHVlCitmb3IgdGhlIGNocm9tYSBrZXkuIFRoZSBmb3JtYXQgaXMgdGhlIHNhbWUgYXMgdGhlIHBpeGVsIGZvcm1hdCBvZiB0aGUKK2ZyYW1lYnVmZmVyICgmdjRsMi1mcmFtZWJ1ZmZlcjsKKzxzdHJ1Y3RmaWVsZD5mbXQucGl4ZWxmb3JtYXQ8L3N0cnVjdGZpZWxkPiBmaWVsZCksIHdpdGggYnl0ZXMgaW4gaG9zdAorb3JkZXIuIEUuJm5ic3A7Zy4gZm9yIDxsaW5rCitsaW5rZW5kPSJWNEwyLVBJWC1GTVQtQkdSMzIiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfQkdSMjQ8L2NvbnN0YW50PjwvbGluaz4KK3RoZSB2YWx1ZSBzaG91bGQgYmUgMHhSUkdHQkIgb24gYSBsaXR0bGUgZW5kaWFuLCAweEJCR0dSUiBvbiBhIGJpZworZW5kaWFuIGhvc3QuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PiZ2NGwyLWNsaXA7ICo8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmNsaXBzPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+V2hlbiBjaHJvbWEta2V5aW5nIGhhcyA8ZW1waGFzaXM+bm90PC9lbXBoYXNpcz4KK2JlZW4gbmVnb3RpYXRlZCBhbmQgJlZJRElPQy1HLUZCVUY7IGluZGljYXRlZCB0aGlzIGNhcGFiaWxpdHksCithcHBsaWNhdGlvbnMgY2FuIHNldCB0aGlzIGZpZWxkIHRvIHBvaW50IHRvIGFuIGFycmF5IG9mCitjbGlwcGluZyByZWN0YW5nbGVzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pkxpa2UgdGhlIHdpbmRvdyBjb29yZGluYXRlcworPHN0cnVjdGZpZWxkPnc8L3N0cnVjdGZpZWxkPiwgY2xpcHBpbmcgcmVjdGFuZ2xlcyBhcmUgZGVmaW5lZCByZWxhdGl2ZQordG8gdGhlIHRvcCwgbGVmdCBjb3JuZXIgb2YgdGhlIGZyYW1lIGJ1ZmZlci4gSG93ZXZlciBjbGlwcGluZworcmVjdGFuZ2xlcyBtdXN0IG5vdCBleHRlbmQgdGhlIGZyYW1lIGJ1ZmZlciB3aWR0aCBhbmQgaGVpZ2h0LCBhbmQgdGhleQorbXVzdCBub3Qgb3ZlcmxhcC4gSWYgcG9zc2libGUgYXBwbGljYXRpb25zIHNob3VsZCBtZXJnZSBhZGphY2VudAorcmVjdGFuZ2xlcy4gV2hldGhlciB0aGlzIG11c3QgY3JlYXRlIHgteSBvciB5LXggYmFuZHMsIG9yIHRoZSBvcmRlciBvZgorcmVjdGFuZ2xlcywgaXMgbm90IGRlZmluZWQuIFdoZW4gY2xpcCBsaXN0cyBhcmUgbm90IHN1cHBvcnRlZCB0aGUKK2RyaXZlciBpZ25vcmVzIHRoaXMgZmllbGQuIEl0cyBjb250ZW50cyBhZnRlciBjYWxsaW5nICZWSURJT0MtUy1GTVQ7CithcmUgdW5kZWZpbmVkLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+Y2xpcGNvdW50PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+V2hlbiB0aGUgYXBwbGljYXRpb24gc2V0IHRoZQorPHN0cnVjdGZpZWxkPmNsaXBzPC9zdHJ1Y3RmaWVsZD4gZmllbGQsIHRoaXMgZmllbGQgbXVzdCBjb250YWluIHRoZQorbnVtYmVyIG9mIGNsaXBwaW5nIHJlY3RhbmdsZXMgaW4gdGhlIGxpc3QuIFdoZW4gY2xpcCBsaXN0cyBhcmUgbm90CitzdXBwb3J0ZWQgdGhlIGRyaXZlciBpZ25vcmVzIHRoaXMgZmllbGQsIGl0cyBjb250ZW50cyBhZnRlciBjYWxsaW5nCis8Y29uc3RhbnQ+VklESU9DX1NfRk1UPC9jb25zdGFudD4gYXJlIHVuZGVmaW5lZC4gV2hlbiBjbGlwIGxpc3RzIGFyZQorc3VwcG9ydGVkIGJ1dCBubyBjbGlwcGluZyBpcyBkZXNpcmVkIHRoaXMgZmllbGQgbXVzdCBiZSBzZXQgdG8KK3plcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PnZvaWQgKjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+Yml0bWFwPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+V2hlbiBjaHJvbWEta2V5aW5nIGhhcworPGVtcGhhc2lzPm5vdDwvZW1waGFzaXM+IGJlZW4gbmVnb3RpYXRlZCBhbmQgJlZJRElPQy1HLUZCVUY7IGluZGljYXRlZAordGhpcyBjYXBhYmlsaXR5LCBhcHBsaWNhdGlvbnMgY2FuIHNldCB0aGlzIGZpZWxkIHRvIHBvaW50IHRvIGEKK2NsaXBwaW5nIGJpdCBtYXNrLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaHNwYW4iPjxwYXJhPkl0IG11c3QgYmUgb2YgdGhlIHNhbWUgc2l6ZQorYXMgdGhlIHdpbmRvdywgPHN0cnVjdGZpZWxkPncud2lkdGg8L3N0cnVjdGZpZWxkPiBhbmQKKzxzdHJ1Y3RmaWVsZD53LmhlaWdodDwvc3RydWN0ZmllbGQ+LiBFYWNoIGJpdCBjb3JyZXNwb25kcyB0byBhIHBpeGVsCitpbiB0aGUgb3ZlcmxhaWQgaW1hZ2UsIHdoaWNoIGlzIGRpc3BsYXllZCBvbmx5IHdoZW4gdGhlIGJpdCBpcworPGVtcGhhc2lzPnNldDwvZW1waGFzaXM+LiBQaXhlbCBjb29yZGluYXRlcyB0cmFuc2xhdGUgdG8gYml0cyBsaWtlOgorPHByb2dyYW1saXN0aW5nPgorKChfX3U4ICopIDxzdHJ1Y3RmaWVsZD5iaXRtYXA8L3N0cnVjdGZpZWxkPilbPHN0cnVjdGZpZWxkPncud2lkdGg8L3N0cnVjdGZpZWxkPiAqIHkgKyB4IC8gOF0gJmFtcDsgKDEgJmx0OyZsdDsgKHggJmFtcDsgNykpPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+PHBhcmE+d2hlcmUgPHN0cnVjdGZpZWxkPjA8L3N0cnVjdGZpZWxkPiAmbGU7IHggJmx0OworPHN0cnVjdGZpZWxkPncud2lkdGg8L3N0cnVjdGZpZWxkPiBhbmQgPHN0cnVjdGZpZWxkPjA8L3N0cnVjdGZpZWxkPiAmbGU7Cit5ICZsdDs8c3RydWN0ZmllbGQ+dy5oZWlnaHQ8L3N0cnVjdGZpZWxkPi48Zm9vdG5vdGU+CisJCSAgPHBhcmE+U2hvdWxkIHdlIHJlcXVpcmUKKwkgICAgICA8c3RydWN0ZmllbGQ+dy53aWR0aDwvc3RydWN0ZmllbGQ+IHRvIGJlIGEgbXVsdGlwbGUgb2YKKwkgICAgICBlaWdodD88L3BhcmE+CisJCTwvZm9vdG5vdGU+PC9wYXJhPjxwYXJhPldoZW4gYSBjbGlwcGluZworYml0IG1hc2sgaXMgbm90IHN1cHBvcnRlZCB0aGUgZHJpdmVyIGlnbm9yZXMgdGhpcyBmaWVsZCwgaXRzIGNvbnRlbnRzCithZnRlciBjYWxsaW5nICZWSURJT0MtUy1GTVQ7IGFyZSB1bmRlZmluZWQuIFdoZW4gYSBiaXQgbWFzayBpcyBzdXBwb3J0ZWQKK2J1dCBubyBjbGlwcGluZyBpcyBkZXNpcmVkIHRoaXMgZmllbGQgbXVzdCBiZSBzZXQgdG8KKzxjb25zdGFudD5OVUxMPC9jb25zdGFudD4uPC9wYXJhPjxwYXJhPkFwcGxpY2F0aW9ucyBuZWVkIG5vdCBjcmVhdGUgYQorY2xpcCBsaXN0IG9yIGJpdCBtYXNrLiBXaGVuIHRoZXkgcGFzcyBib3RoLCBvciBkZXNwaXRlIG5lZ290aWF0aW5nCitjaHJvbWEta2V5aW5nLCB0aGUgcmVzdWx0cyBhcmUgdW5kZWZpbmVkLiBSZWdhcmRsZXNzIG9mIHRoZSBjaG9zZW4KK21ldGhvZCwgdGhlIGNsaXBwaW5nIGFiaWxpdGllcyBvZiB0aGUgaGFyZHdhcmUgbWF5IGJlIGxpbWl0ZWQgaW4KK3F1YW50aXR5IG9yIHF1YWxpdHkuIFRoZSByZXN1bHRzIHdoZW4gdGhlc2UgbGltaXRzIGFyZSBleGNlZWRlZCBhcmUKK3VuZGVmaW5lZC48Zm9vdG5vdGU+CisJCSAgPHBhcmE+V2hlbiB0aGUgaW1hZ2UgaXMgd3JpdHRlbiBpbnRvIGZyYW1lIGJ1ZmZlcgorbWVtb3J5IGl0IHdpbGwgYmUgdW5kZXNpcmFibGUgaWYgdGhlIGRyaXZlciBjbGlwcyBvdXQgbGVzcyBwaXhlbHMKK3RoYW4gZXhwZWN0ZWQsIGJlY2F1c2UgdGhlIGFwcGxpY2F0aW9uIGFuZCBncmFwaGljcyBzeXN0ZW0gYXJlIG5vdAorYXdhcmUgdGhlc2UgcmVnaW9ucyBuZWVkIHRvIGJlIHJlZnJlc2hlZC4gVGhlIGRyaXZlciBzaG91bGQgY2xpcCBvdXQKK21vcmUgcGl4ZWxzIG9yIG5vdCB3cml0ZSB0aGUgaW1hZ2UgYXQgYWxsLjwvcGFyYT4KKwkJPC9mb290bm90ZT48L3BhcmE+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTg8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmdsb2JhbF9hbHBoYTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBnbG9iYWwgYWxwaGEgdmFsdWUgdXNlZCB0byBibGVuZCB0aGUKK2ZyYW1lYnVmZmVyIHdpdGggdmlkZW8gaW1hZ2VzLCBpZiBnbG9iYWwgYWxwaGEgYmxlbmRpbmcgaGFzIGJlZW4KK25lZ290aWF0ZWQgKDxjb25zdGFudD5WNEwyX0ZCVUZfRkxBR19HTE9CQUxfQUxQSEE8L2NvbnN0YW50Piwgc2VlCismVklESU9DLVMtRkJVRjssIDx4cmVmIGxpbmtlbmQ9ImZyYW1lYnVmZmVyLWZsYWdzIiAvPikuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+Tm90ZSB0aGlzIGZpZWxkIHdhcyBhZGRlZCBpbiBMaW51eCAyLjYuMjMsIGV4dGVuZGluZyB0aGUgc3RydWN0dXJlLiBIb3dldmVyCit0aGUgPGxpbmsgbGlua2VuZD0idmlkaW9jLWctZm10Ij5WSURJT0NfRy9TL1RSWV9GTVQ8L2xpbms+IGlvY3RscywKK3doaWNoIHRha2UgYSBwb2ludGVyIHRvIGEgPGxpbmsKK2xpbmtlbmQ9InY0bDItZm9ybWF0Ij52NGwyX2Zvcm1hdDwvbGluaz4gcGFyZW50IHN0cnVjdHVyZSB3aXRoIHBhZGRpbmcKK2J5dGVzIGF0IHRoZSBlbmQsIGFyZSBub3QgYWZmZWN0ZWQuPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLWNsaXAiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2NsaXA8L3N0cnVjdG5hbWU+PGZvb3Rub3RlPgorCSAgPHBhcmE+VGhlIFggV2luZG93IHN5c3RlbSBkZWZpbmVzICJyZWdpb25zIiB3aGljaCBhcmUKK3ZlY3RvcnMgb2Ygc3RydWN0IEJveFJlYyB7IHNob3J0IHgxLCB5MSwgeDIsIHkyOyB9IHdpdGggd2lkdGggPSB4MiAtCit4MSBhbmQgaGVpZ2h0ID0geTIgLSB5MSwgc28gb25lIGNhbm5vdCBwYXNzIFgxMSBjbGlwIGxpc3RzCitkaXJlY3RseS48L3BhcmE+CisJPC9mb290bm90ZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3Mtc3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+JnY0bDItcmVjdDs8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmM8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5Db29yZGluYXRlcyBvZiB0aGUgY2xpcHBpbmcgcmVjdGFuZ2xlLCByZWxhdGl2ZSB0bwordGhlIHRvcCwgbGVmdCBjb3JuZXIgb2YgdGhlIGZyYW1lIGJ1ZmZlci4gT25seSB3aW5kb3cgcGl4ZWxzCis8ZW1waGFzaXM+b3V0c2lkZTwvZW1waGFzaXM+IGFsbCBjbGlwcGluZyByZWN0YW5nbGVzIGFyZQorZGlzcGxheWVkLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT4mdjRsMi1jbGlwOyAqPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5uZXh0PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+UG9pbnRlciB0byB0aGUgbmV4dCBjbGlwcGluZyByZWN0YW5nbGUsIE5VTEwgd2hlbgordGhpcyBpcyB0aGUgbGFzdCByZWN0YW5nbGUuIERyaXZlcnMgaWdub3JlIHRoaXMgZmllbGQsIGl0IGNhbm5vdCBiZQordXNlZCB0byBwYXNzIGEgbGlua2VkIGxpc3Qgb2YgY2xpcHBpbmcgcmVjdGFuZ2xlcy48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8IS0tIE5CIGZvciBlYXNpZXIgcmVhZGluZyB0aGlzIHRhYmxlIGlzIGR1cGxpY2F0ZWQKKyAgICBpbiB0aGUgdmlkaW9jLWNyb3BjYXAgY2hhcHRlci4tLT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1yZWN0Ij4KKyAgICAgIDx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9yZWN0PC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3MzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+bGVmdDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pkhvcml6b250YWwgb2Zmc2V0IG9mIHRoZSB0b3AsIGxlZnQgY29ybmVyIG9mIHRoZQorcmVjdGFuZ2xlLCBpbiBwaXhlbHMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fczMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD50b3A8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5WZXJ0aWNhbCBvZmZzZXQgb2YgdGhlIHRvcCwgbGVmdCBjb3JuZXIgb2YgdGhlCityZWN0YW5nbGUsIGluIHBpeGVscy4gT2Zmc2V0cyBpbmNyZWFzZSB0byB0aGUgcmlnaHQgYW5kIGRvd24uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD53aWR0aDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PldpZHRoIG9mIHRoZSByZWN0YW5nbGUsIGluIHBpeGVscy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmhlaWdodDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkhlaWdodCBvZiB0aGUgcmVjdGFuZ2xlLCBpbiBwaXhlbHMuPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorICA8L3NlY3Rpb24+CisKKyAgPHNlY3Rpb24+CisgICAgPHRpdGxlPkVuYWJsaW5nIE92ZXJsYXk8L3RpdGxlPgorCisgICAgPHBhcmE+VG8gc3RhcnQgb3Igc3RvcCB0aGUgZnJhbWUgYnVmZmVyIG92ZXJsYXkgYXBwbGljYXRpb25zIGNhbGwKK3RoZSAmVklESU9DLU9WRVJMQVk7IGlvY3RsLjwvcGFyYT4KKyAgPC9zZWN0aW9uPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9kZXYtcmFkaW8ueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9kZXYtcmFkaW8ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNmFjNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2Rldi1yYWRpby54bWwKQEAgLTAsMCArMSw0OSBAQAorICA8dGl0bGU+UmFkaW8gSW50ZXJmYWNlPC90aXRsZT4KKworICA8cGFyYT5UaGlzIGludGVyZmFjZSBpcyBpbnRlbmRlZCBmb3IgQU0gYW5kIEZNIChhbmFsb2cpIHJhZGlvCityZWNlaXZlcnMgYW5kIHRyYW5zbWl0dGVycy48L3BhcmE+CisKKyAgPHBhcmE+Q29udmVudGlvbmFsbHkgVjRMMiByYWRpbyBkZXZpY2VzIGFyZSBhY2Nlc3NlZCB0aHJvdWdoCitjaGFyYWN0ZXIgZGV2aWNlIHNwZWNpYWwgZmlsZXMgbmFtZWQgPGZpbGVuYW1lPi9kZXYvcmFkaW88L2ZpbGVuYW1lPgorYW5kIDxmaWxlbmFtZT4vZGV2L3JhZGlvMDwvZmlsZW5hbWU+IHRvCis8ZmlsZW5hbWU+L2Rldi9yYWRpbzYzPC9maWxlbmFtZT4gd2l0aCBtYWpvciBudW1iZXIgODEgYW5kIG1pbm9yCitudW1iZXJzIDY0IHRvIDEyNy48L3BhcmE+CisKKyAgPHNlY3Rpb24+CisgICAgPHRpdGxlPlF1ZXJ5aW5nIENhcGFiaWxpdGllczwvdGl0bGU+CisKKyAgICA8cGFyYT5EZXZpY2VzIHN1cHBvcnRpbmcgdGhlIHJhZGlvIGludGVyZmFjZSBzZXQgdGhlCis8Y29uc3RhbnQ+VjRMMl9DQVBfUkFESU88L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX0NBUF9UVU5FUjwvY29uc3RhbnQ+IG9yCis8Y29uc3RhbnQ+VjRMMl9DQVBfTU9EVUxBVE9SPC9jb25zdGFudD4gZmxhZyBpbiB0aGUKKzxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXRpZXM8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiAmdjRsMi1jYXBhYmlsaXR5OworcmV0dXJuZWQgYnkgdGhlICZWSURJT0MtUVVFUllDQVA7IGlvY3RsLiBPdGhlciBjb21iaW5hdGlvbnMgb2YKK2NhcGFiaWxpdHkgZmxhZ3MgYXJlIHJlc2VydmVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucy48L3BhcmE+CisgIDwvc2VjdGlvbj4KKworICA8c2VjdGlvbj4KKyAgICA8dGl0bGU+U3VwcGxlbWVudGFsIEZ1bmN0aW9uczwvdGl0bGU+CisKKyAgICA8cGFyYT5SYWRpbyBkZXZpY2VzIGNhbiBzdXBwb3J0IDxsaW5rCitsaW5rZW5kPSJjb250cm9sIj5jb250cm9sczwvbGluaz4sIGFuZCBtdXN0IHN1cHBvcnQgdGhlIDxsaW5rCitsaW5rZW5kPSJ0dW5lciI+dHVuZXIgb3IgbW9kdWxhdG9yPC9saW5rPiBpb2N0bHMuPC9wYXJhPgorCisgICAgPHBhcmE+VGhleSBkbyBub3Qgc3VwcG9ydCB0aGUgdmlkZW8gaW5wdXQgb3Igb3V0cHV0LCBhdWRpbyBpbnB1dAorb3Igb3V0cHV0LCB2aWRlbyBzdGFuZGFyZCwgY3JvcHBpbmcgYW5kIHNjYWxpbmcsIGNvbXByZXNzaW9uIGFuZAorc3RyZWFtaW5nIHBhcmFtZXRlciwgb3Igb3ZlcmxheSBpb2N0bHMuIEFsbCBvdGhlciBpb2N0bHMgYW5kIEkvTworbWV0aG9kcyBhcmUgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSBleHRlbnNpb25zLjwvcGFyYT4KKyAgPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uPgorICAgIDx0aXRsZT5Qcm9ncmFtbWluZzwvdGl0bGU+CisKKyAgICA8cGFyYT5SYWRpbyBkZXZpY2VzIG1heSBoYXZlIGEgY291cGxlIGF1ZGlvIGNvbnRyb2xzIChhcyBkaXNjdXNzZWQKK2luIDx4cmVmIGxpbmtlbmQ9ImNvbnRyb2wiIC8+KSBzdWNoIGFzIGEgdm9sdW1lIGNvbnRyb2wsIHBvc3NpYmx5IGN1c3RvbQorY29udHJvbHMuIEZ1cnRoZXIgYWxsIHJhZGlvIGRldmljZXMgaGF2ZSBvbmUgdHVuZXIgb3IgbW9kdWxhdG9yICh0aGVzZSBhcmUKK2Rpc2N1c3NlZCBpbiA8eHJlZiBsaW5rZW5kPSJ0dW5lciIgLz4pIHdpdGggaW5kZXggbnVtYmVyIHplcm8gdG8gc2VsZWN0Cit0aGUgcmFkaW8gZnJlcXVlbmN5IGFuZCB0byBkZXRlcm1pbmUgaWYgYSBtb25hdXJhbCBvciBGTSBzdGVyZW8KK3Byb2dyYW0gaXMgcmVjZWl2ZWQvZW1pdHRlZC4gRHJpdmVycyBzd2l0Y2ggYXV0b21hdGljYWxseSBiZXR3ZWVuIEFNIGFuZCBGTQorZGVwZW5kaW5nIG9uIHRoZSBzZWxlY3RlZCBmcmVxdWVuY3kuIFRoZSAmVklESU9DLUctVFVORVI7IG9yCismVklESU9DLUctTU9EVUxBVE9SOyBpb2N0bAorcmVwb3J0cyB0aGUgc3VwcG9ydGVkIGZyZXF1ZW5jeSByYW5nZS48L3BhcmE+CisgIDwvc2VjdGlvbj4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZGV2LXJhdy12YmkueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9kZXYtcmF3LXZiaS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRiNjFiNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZGV2LXJhdy12YmkueG1sCkBAIC0wLDAgKzEsMzQ1IEBACisgIDx0aXRsZT5SYXcgVkJJIERhdGEgSW50ZXJmYWNlPC90aXRsZT4KKworICA8cGFyYT5WQkkgaXMgYW4gYWJicmV2aWF0aW9uIG9mIFZlcnRpY2FsIEJsYW5raW5nIEludGVydmFsLCBhIGdhcAoraW4gdGhlIHNlcXVlbmNlIG9mIGxpbmVzIG9mIGFuIGFuYWxvZyB2aWRlbyBzaWduYWwuIER1cmluZyBWQkkKK25vIHBpY3R1cmUgaW5mb3JtYXRpb24gaXMgdHJhbnNtaXR0ZWQsIGFsbG93aW5nIHNvbWUgdGltZSB3aGlsZSB0aGUKK2VsZWN0cm9uIGJlYW0gb2YgYSBjYXRob2RlIHJheSB0dWJlIFRWIHJldHVybnMgdG8gdGhlIHRvcCBvZiB0aGUKK3NjcmVlbi4gVXNpbmcgYW4gb3NjaWxsb3Njb3BlIHlvdSB3aWxsIGZpbmQgaGVyZSB0aGUgdmVydGljYWwKK3N5bmNocm9uaXphdGlvbiBwdWxzZXMgYW5kIHNob3J0IGRhdGEgcGFja2FnZXMgQVNLCittb2R1bGF0ZWQ8Zm9vdG5vdGU+PHBhcmE+QVNLOiBBbXBsaXR1ZGUtU2hpZnQgS2V5aW5nLiBBIGhpZ2ggc2lnbmFsCitsZXZlbCByZXByZXNlbnRzIGEgJzEnIGJpdCwgYSBsb3cgbGV2ZWwgYSAnMCcgYml0LjwvcGFyYT48L2Zvb3Rub3RlPgorb250byB0aGUgdmlkZW8gc2lnbmFsLiBUaGVzZSBhcmUgdHJhbnNtaXNzaW9ucyBvZiBzZXJ2aWNlcyBzdWNoIGFzCitUZWxldGV4dCBvciBDbG9zZWQgQ2FwdGlvbi48L3BhcmE+CisKKyAgPHBhcmE+U3ViamVjdCBvZiB0aGlzIGludGVyZmFjZSB0eXBlIGlzIHJhdyBWQkkgZGF0YSwgYXMgc2FtcGxlZCBvZmYKK2EgdmlkZW8gc2lnbmFsLCBvciB0byBiZSBhZGRlZCB0byBhIHNpZ25hbCBmb3Igb3V0cHV0LgorVGhlIGRhdGEgZm9ybWF0IGlzIHNpbWlsYXIgdG8gdW5jb21wcmVzc2VkIHZpZGVvIGltYWdlcywgYSBudW1iZXIgb2YKK2xpbmVzIHRpbWVzIGEgbnVtYmVyIG9mIHNhbXBsZXMgcGVyIGxpbmUsIHdlIGNhbGwgdGhpcyBhIFZCSSBpbWFnZS48L3BhcmE+CisKKyAgPHBhcmE+Q29udmVudGlvbmFsbHkgVjRMMiBWQkkgZGV2aWNlcyBhcmUgYWNjZXNzZWQgdGhyb3VnaCBjaGFyYWN0ZXIKK2RldmljZSBzcGVjaWFsIGZpbGVzIG5hbWVkIDxmaWxlbmFtZT4vZGV2L3ZiaTwvZmlsZW5hbWU+IGFuZAorPGZpbGVuYW1lPi9kZXYvdmJpMDwvZmlsZW5hbWU+IHRvIDxmaWxlbmFtZT4vZGV2L3ZiaTMxPC9maWxlbmFtZT4gd2l0aAorbWFqb3IgbnVtYmVyIDgxIGFuZCBtaW5vciBudW1iZXJzIDIyNCB0byAyNTUuCis8ZmlsZW5hbWU+L2Rldi92Ymk8L2ZpbGVuYW1lPiBpcyB0eXBpY2FsbHkgYSBzeW1ib2xpYyBsaW5rIHRvIHRoZQorcHJlZmVycmVkIFZCSSBkZXZpY2UuIFRoaXMgY29udmVudGlvbiBhcHBsaWVzIHRvIGJvdGggaW5wdXQgYW5kIG91dHB1dAorZGV2aWNlcy48L3BhcmE+CisKKyAgPHBhcmE+VG8gYWRkcmVzcyB0aGUgcHJvYmxlbXMgb2YgZmluZGluZyByZWxhdGVkIHZpZGVvIGFuZCBWQkkKK2RldmljZXMgVkJJIGNhcHR1cmluZyBhbmQgb3V0cHV0IGlzIGFsc28gYXZhaWxhYmxlIGFzIGRldmljZSBmdW5jdGlvbgordW5kZXIgPGZpbGVuYW1lPi9kZXYvdmlkZW88L2ZpbGVuYW1lPi4gVG8gY2FwdHVyZSBvciBvdXRwdXQgcmF3IFZCSQorZGF0YSB3aXRoIHRoZXNlIGRldmljZXMgYXBwbGljYXRpb25zIG11c3QgY2FsbCB0aGUgJlZJRElPQy1TLUZNVDsKK2lvY3RsLiBBY2Nlc3NlZCBhcyA8ZmlsZW5hbWU+L2Rldi92Ymk8L2ZpbGVuYW1lPiwgcmF3IFZCSSBjYXB0dXJpbmcKK29yIG91dHB1dCBpcyB0aGUgZGVmYXVsdCBkZXZpY2UgZnVuY3Rpb24uPC9wYXJhPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+UXVlcnlpbmcgQ2FwYWJpbGl0aWVzPC90aXRsZT4KKworICAgICAgPHBhcmE+RGV2aWNlcyBzdXBwb3J0aW5nIHRoZSByYXcgVkJJIGNhcHR1cmluZyBvciBvdXRwdXQgQVBJIHNldAordGhlIDxjb25zdGFudD5WNEwyX0NBUF9WQklfQ0FQVFVSRTwvY29uc3RhbnQ+IG9yCis8Y29uc3RhbnQ+VjRMMl9DQVBfVkJJX09VVFBVVDwvY29uc3RhbnQ+IGZsYWdzLCByZXNwZWN0aXZlbHksIGluIHRoZQorPHN0cnVjdGZpZWxkPmNhcGFiaWxpdGllczwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mICZ2NGwyLWNhcGFiaWxpdHk7CityZXR1cm5lZCBieSB0aGUgJlZJRElPQy1RVUVSWUNBUDsgaW9jdGwuIEF0IGxlYXN0IG9uZSBvZiB0aGUKK3JlYWQvd3JpdGUsIHN0cmVhbWluZyBvciBhc3luY2hyb25vdXMgSS9PIG1ldGhvZHMgbXVzdCBiZQorc3VwcG9ydGVkLiBWQkkgZGV2aWNlcyBtYXkgb3IgbWF5IG5vdCBoYXZlIGEgdHVuZXIgb3IgbW9kdWxhdG9yLjwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5TdXBwbGVtZW50YWwgRnVuY3Rpb25zPC90aXRsZT4KKworICAgICAgPHBhcmE+VkJJIGRldmljZXMgc2hhbGwgc3VwcG9ydCA8bGluayBsaW5rZW5kPSJ2aWRlbyI+dmlkZW8KK2lucHV0IG9yIG91dHB1dDwvbGluaz4sIDxsaW5rIGxpbmtlbmQ9InR1bmVyIj50dW5lciBvcgorbW9kdWxhdG9yPC9saW5rPiwgYW5kIDxsaW5rIGxpbmtlbmQ9ImNvbnRyb2wiPmNvbnRyb2xzPC9saW5rPiBpb2N0bHMKK2FzIG5lZWRlZC4gVGhlIDxsaW5rIGxpbmtlbmQ9InN0YW5kYXJkIj52aWRlbyBzdGFuZGFyZDwvbGluaz4gaW9jdGxzIHByb3ZpZGUKK2luZm9ybWF0aW9uIHZpdGFsIHRvIHByb2dyYW0gYSBWQkkgZGV2aWNlLCB0aGVyZWZvcmUgbXVzdCBiZQorc3VwcG9ydGVkLjwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5SYXcgVkJJIEZvcm1hdCBOZWdvdGlhdGlvbjwvdGl0bGU+CisKKyAgICAgIDxwYXJhPlJhdyBWQkkgc2FtcGxpbmcgYWJpbGl0aWVzIGNhbiB2YXJ5LCBpbiBwYXJ0aWN1bGFyIHRoZQorc2FtcGxpbmcgZnJlcXVlbmN5LiBUbyBwcm9wZXJseSBpbnRlcnByZXQgdGhlIGRhdGEgVjRMMiBzcGVjaWZpZXMgYW4KK2lvY3RsIHRvIHF1ZXJ5IHRoZSBzYW1wbGluZyBwYXJhbWV0ZXJzLiBNb3Jlb3ZlciwgdG8gYWxsb3cgZm9yIHNvbWUKK2ZsZXhpYmlsaXR5IGFwcGxpY2F0aW9ucyBjYW4gYWxzbyBzdWdnZXN0IGRpZmZlcmVudCBwYXJhbWV0ZXJzLjwvcGFyYT4KKworICAgICAgPHBhcmE+QXMgdXN1YWwgdGhlc2UgcGFyYW1ldGVycyBhcmUgPGVtcGhhc2lzPm5vdDwvZW1waGFzaXM+CityZXNldCBhdCAmZnVuYy1vcGVuOyB0aW1lIHRvIHBlcm1pdCBVbml4IHRvb2wgY2hhaW5zLCBwcm9ncmFtbWluZyBhCitkZXZpY2UgYW5kIHRoZW4gcmVhZGluZyBmcm9tIGl0IGFzIGlmIGl0IHdhcyBhIHBsYWluIGZpbGUuIFdlbGwKK3dyaXR0ZW4gVjRMMiBhcHBsaWNhdGlvbnMgc2hvdWxkIGFsd2F5cyBlbnN1cmUgdGhleSByZWFsbHkgZ2V0IHdoYXQKK3RoZXkgd2FudCwgcmVxdWVzdGluZyByZWFzb25hYmxlIHBhcmFtZXRlcnMgYW5kIHRoZW4gY2hlY2tpbmcgaWYgdGhlCithY3R1YWwgcGFyYW1ldGVycyBhcmUgc3VpdGFibGUuPC9wYXJhPgorCisgICAgICA8cGFyYT5UbyBxdWVyeSB0aGUgY3VycmVudCByYXcgVkJJIGNhcHR1cmUgcGFyYW1ldGVycworYXBwbGljYXRpb25zIHNldCB0aGUgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiBhCismdjRsMi1mb3JtYXQ7IHRvIDxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZCSV9DQVBUVVJFPC9jb25zdGFudD4gb3IKKzxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZCSV9PVVRQVVQ8L2NvbnN0YW50PiwgYW5kIGNhbGwgdGhlCismVklESU9DLUctRk1UOyBpb2N0bCB3aXRoIGEgcG9pbnRlciB0byB0aGlzIHN0cnVjdHVyZS4gRHJpdmVycyBmaWxsCit0aGUgJnY0bDItdmJpLWZvcm1hdDsgPHN0cnVjdGZpZWxkPnZiaTwvc3RydWN0ZmllbGQ+IG1lbWJlciBvZiB0aGUKKzxzdHJ1Y3RmaWVsZD5mbXQ8L3N0cnVjdGZpZWxkPiB1bmlvbi48L3BhcmE+CisKKyAgICAgIDxwYXJhPlRvIHJlcXVlc3QgZGlmZmVyZW50IHBhcmFtZXRlcnMgYXBwbGljYXRpb25zIHNldCB0aGUKKzxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gZmllbGQgb2YgYSAmdjRsMi1mb3JtYXQ7IGFzIGFib3ZlIGFuZAoraW5pdGlhbGl6ZSBhbGwgZmllbGRzIG9mIHRoZSAmdjRsMi12YmktZm9ybWF0OworPHN0cnVjdGZpZWxkPnZiaTwvc3RydWN0ZmllbGQ+IG1lbWJlciBvZiB0aGUKKzxzdHJ1Y3RmaWVsZD5mbXQ8L3N0cnVjdGZpZWxkPiB1bmlvbiwgb3IgYmV0dGVyIGp1c3QgbW9kaWZ5IHRoZQorcmVzdWx0cyBvZiA8Y29uc3RhbnQ+VklESU9DX0dfRk1UPC9jb25zdGFudD4sIGFuZCBjYWxsIHRoZQorJlZJRElPQy1TLUZNVDsgaW9jdGwgd2l0aCBhIHBvaW50ZXIgdG8gdGhpcyBzdHJ1Y3R1cmUuIERyaXZlcnMgcmV0dXJuCithbiAmRUlOVkFMOyBvbmx5IHdoZW4gdGhlIGdpdmVuIHBhcmFtZXRlcnMgYXJlIGFtYmlndW91cywgb3RoZXJ3aXNlCit0aGV5IG1vZGlmeSB0aGUgcGFyYW1ldGVycyBhY2NvcmRpbmcgdG8gdGhlIGhhcmR3YXJlIGNhcGFiaWxpdGVzIGFuZAorcmV0dXJuIHRoZSBhY3R1YWwgcGFyYW1ldGVycy4gV2hlbiB0aGUgZHJpdmVyIGFsbG9jYXRlcyByZXNvdXJjZXMgYXQKK3RoaXMgcG9pbnQsIGl0IG1heSByZXR1cm4gYW4gJkVCVVNZOyB0byBpbmRpY2F0ZSB0aGUgcmV0dXJuZWQKK3BhcmFtZXRlcnMgYXJlIHZhbGlkIGJ1dCB0aGUgcmVxdWlyZWQgcmVzb3VyY2VzIGFyZSBjdXJyZW50bHkgbm90CithdmFpbGFibGUuIFRoYXQgbWF5IGhhcHBlbiBmb3IgaW5zdGFuY2Ugd2hlbiB0aGUgdmlkZW8gYW5kIFZCSSBhcmVhcwordG8gY2FwdHVyZSB3b3VsZCBvdmVybGFwLCBvciB3aGVuIHRoZSBkcml2ZXIgc3VwcG9ydHMgbXVsdGlwbGUgb3BlbnMKK2FuZCBhbm90aGVyIHByb2Nlc3MgYWxyZWFkeSByZXF1ZXN0ZWQgVkJJIGNhcHR1cmluZyBvciBvdXRwdXQuIEFueXdheSwKK2FwcGxpY2F0aW9ucyBtdXN0IGV4cGVjdCBvdGhlciByZXNvdXJjZSBhbGxvY2F0aW9uIHBvaW50cyB3aGljaCBtYXkKK3JldHVybiA8ZXJyb3Jjb2RlPkVCVVNZPC9lcnJvcmNvZGU+LCBhdCB0aGUgJlZJRElPQy1TVFJFQU1PTjsgaW9jdGwKK2FuZCB0aGUgZmlyc3QgcmVhZCgpLCB3cml0ZSgpIGFuZCBzZWxlY3QoKSBjYWxsLjwvcGFyYT4KKworICAgICAgPHBhcmE+VkJJIGRldmljZXMgbXVzdCBpbXBsZW1lbnQgYm90aCB0aGUKKzxjb25zdGFudD5WSURJT0NfR19GTVQ8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WSURJT0NfU19GTVQ8L2NvbnN0YW50PiBpb2N0bCwgZXZlbiBpZgorPGNvbnN0YW50PlZJRElPQ19TX0ZNVDwvY29uc3RhbnQ+IGlnbm9yZXMgYWxsIHJlcXVlc3RzIGFuZCBhbHdheXMKK3JldHVybnMgZGVmYXVsdCBwYXJhbWV0ZXJzIGFzIDxjb25zdGFudD5WSURJT0NfR19GTVQ8L2NvbnN0YW50PiBkb2VzLgorPGNvbnN0YW50PlZJRElPQ19UUllfRk1UPC9jb25zdGFudD4gaXMgb3B0aW9uYWwuPC9wYXJhPgorCisgICAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItdmJpLWZvcm1hdCI+CisJPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX3ZiaV9mb3JtYXQ8L3N0cnVjdG5hbWU+PC90aXRsZT4KKwk8dGdyb3VwIGNvbHM9IjMiPgorCSAgJmNzLXN0cjsKKwkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnNhbXBsaW5nX3JhdGU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgICAgPGVudHJ5PlNhbXBsZXMgcGVyIHNlY29uZCwgaS4mbmJzcDtlLiB1bml0IDEgSHouPC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm9mZnNldDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PHBhcmE+SG9yaXpvbnRhbCBvZmZzZXQgb2YgdGhlIFZCSSBpbWFnZSwKK3JlbGF0aXZlIHRvIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIGxpbmUgc3luY2hyb25pemF0aW9uIHB1bHNlIGFuZAorY291bnRlZCBpbiBzYW1wbGVzOiBUaGUgZmlyc3Qgc2FtcGxlIGluIHRoZSBWQkkgaW1hZ2Ugd2lsbCBiZSBsb2NhdGVkCis8c3RydWN0ZmllbGQ+b2Zmc2V0PC9zdHJ1Y3RmaWVsZD4gLworPHN0cnVjdGZpZWxkPnNhbXBsaW5nX3JhdGU8L3N0cnVjdGZpZWxkPiBzZWNvbmRzIGZvbGxvd2luZyB0aGUgbGVhZGluZworZWRnZS4gU2VlIGFsc28gPHhyZWYgbGlua2VuZD0idmJpLWhzeW5jIiAvPi48L3BhcmE+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnNhbXBsZXNfcGVyX2xpbmU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5zYW1wbGVfZm9ybWF0PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48cGFyYT5EZWZpbmVzIHRoZSBzYW1wbGUgZm9ybWF0IGFzIGluIDx4cmVmCitsaW5rZW5kPSJwaXhmbXQiIC8+LCBhIGZvdXItY2hhcmFjdGVyLWNvZGUuPGZvb3Rub3RlPgorCQkgICAgPHBhcmE+QSBmZXcgZGV2aWNlcyBtYXkgYmUgdW5hYmxlIHRvCitzYW1wbGUgVkJJIGRhdGEgYXQgYWxsIGJ1dCBjYW4gZXh0ZW5kIHRoZSB2aWRlbyBjYXB0dXJlIHdpbmRvdyB0byB0aGUKK1ZCSSByZWdpb24uPC9wYXJhPgorCQkgIDwvZm9vdG5vdGU+IFVzdWFsbHkgdGhpcyBpcworPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9HUkVZPC9jb25zdGFudD4sIGkuJm5ic3A7ZS4gZWFjaCBzYW1wbGUKK2NvbnNpc3RzIG9mIDggYml0cyB3aXRoIGxvd2VyIHZhbHVlcyBvcmllbnRlZCB0b3dhcmRzIHRoZSBibGFjayBsZXZlbC4KK0RvIG5vdCBhc3N1bWUgYW55IG90aGVyIGNvcnJlbGF0aW9uIG9mIHZhbHVlcyB3aXRoIHRoZSBzaWduYWwgbGV2ZWwuCitGb3IgZXhhbXBsZSwgdGhlIE1TQiBkb2VzIG5vdCBuZWNlc3NhcmlseSBpbmRpY2F0ZSBpZiB0aGUgc2lnbmFsIGlzCisnaGlnaCcgb3IgJ2xvdycgYmVjYXVzZSAxMjggbWF5IG5vdCBiZSB0aGUgbWVhbiB2YWx1ZSBvZiB0aGUKK3NpZ25hbC4gRHJpdmVycyBzaGFsbCBub3QgY29udmVydCB0aGUgc2FtcGxlIGZvcm1hdCBieSBzb2Z0d2FyZS48L3BhcmE+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnN0YXJ0PC9zdHJ1Y3RmaWVsZD5bMl08L2VudHJ5PgorCSAgICAgIDxlbnRyeT5UaGlzIGlzIHRoZSBzY2FubmluZyBzeXN0ZW0gbGluZSBudW1iZXIKK2Fzc29jaWF0ZWQgd2l0aCB0aGUgZmlyc3QgbGluZSBvZiB0aGUgVkJJIGltYWdlLCBvZiB0aGUgZmlyc3QgYW5kIHRoZQorc2Vjb25kIGZpZWxkIHJlc3BlY3RpdmVseS4gU2VlIDx4cmVmIGxpbmtlbmQ9InZiaS01MjUiIC8+IGFuZAorPHhyZWYgbGlua2VuZD0idmJpLTYyNSIgLz4gZm9yIHZhbGlkIHZhbHVlcy4KK1RoZSA8Y29uc3RhbnQ+VjRMMl9WQklfSVRVXzUyNV9GMV9TVEFSVDwvY29uc3RhbnQ+LAorPGNvbnN0YW50PlY0TDJfVkJJX0lUVV81MjVfRjJfU1RBUlQ8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WNEwyX1ZCSV9JVFVfNjI1X0YxX1NUQVJUPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VjRMMl9WQklfSVRVXzYyNV9GMl9TVEFSVDwvY29uc3RhbnQ+IGRlZmluZXMgZ2l2ZSB0aGUgc3RhcnQgbGluZQorbnVtYmVycyBmb3IgZWFjaCBmaWVsZCBmb3IgZWFjaCA1MjUgb3IgNjI1IGxpbmUgZm9ybWF0IGFzIGEgY29udmVuaWVuY2UuCitEb24ndCBmb3JnZXQgdGhhdCBJVFUgbGluZSBudW1iZXJpbmcgc3RhcnRzIGF0IDEsIG5vdCAwLgorVkJJIGlucHV0IGRyaXZlcnMgY2FuIHJldHVybiBzdGFydCB2YWx1ZXMgMCBpZiB0aGUgaGFyZHdhcmUgY2Fubm90CityZWxpYWJsZSBpZGVudGlmeSBzY2FubmluZyBsaW5lcywgVkJJIGFjcXVpc2l0aW9uIG1heSBub3QgcmVxdWlyZSB0aGlzCitpbmZvcm1hdGlvbi48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+Y291bnQ8L3N0cnVjdGZpZWxkPlsyXTwvZW50cnk+CisJICAgICAgPGVudHJ5PlRoZSBudW1iZXIgb2YgbGluZXMgaW4gdGhlIGZpcnN0IGFuZCBzZWNvbmQKK2ZpZWxkIGltYWdlLCByZXNwZWN0aXZlbHkuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJoc3BhbiI+PHBhcmE+RHJpdmVycyBzaG91bGQgYmUgYXMKK2ZsZXhpYmlsaXR5IGFzIHBvc3NpYmxlLiBGb3IgZXhhbXBsZSwgaXQgbWF5IGJlIHBvc3NpYmxlIHRvIGV4dGVuZCBvcgorbW92ZSB0aGUgVkJJIGNhcHR1cmUgd2luZG93IGRvd24gdG8gdGhlIHBpY3R1cmUgYXJlYSwgaW1wbGVtZW50aW5nIGEKKydmdWxsIGZpZWxkIG1vZGUnIHRvIGNhcHR1cmUgZGF0YSBzZXJ2aWNlIHRyYW5zbWlzc2lvbnMgZW1iZWRkZWQgaW4KK3RoZSBwaWN0dXJlLjwvcGFyYT48cGFyYT5BbiBhcHBsaWNhdGlvbiBjYW4gc2V0IHRoZSBmaXJzdCBvciBzZWNvbmQKKzxzdHJ1Y3RmaWVsZD5jb3VudDwvc3RydWN0ZmllbGQ+IHZhbHVlIHRvIHplcm8gaWYgbm8gZGF0YSBpcyByZXF1aXJlZAorZnJvbSB0aGUgcmVzcGVjdGl2ZSBmaWVsZDsgPHN0cnVjdGZpZWxkPmNvdW50PC9zdHJ1Y3RmaWVsZD5bMV0gaWYgdGhlCitzY2FubmluZyBzeXN0ZW0gaXMgcHJvZ3Jlc3NpdmUsICZpZTsgbm90IGludGVybGFjZWQuIFRoZQorY29ycmVzcG9uZGluZyBzdGFydCB2YWx1ZSBzaGFsbCBiZSBpZ25vcmVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBhbmQKK2RyaXZlci4gQW55d2F5LCBkcml2ZXJzIG1heSBub3Qgc3VwcG9ydCBzaW5nbGUgZmllbGQgY2FwdHVyaW5nIGFuZAorcmV0dXJuIGJvdGggY291bnQgdmFsdWVzIG5vbi16ZXJvLjwvcGFyYT48cGFyYT5Cb3RoCis8c3RydWN0ZmllbGQ+Y291bnQ8L3N0cnVjdGZpZWxkPiB2YWx1ZXMgc2V0IHRvIHplcm8sIG9yIGxpbmUgbnVtYmVycworb3V0c2lkZSB0aGUgYm91bmRzIGRlcGljdGVkIGluIDx4cmVmIGxpbmtlbmQ9InZiaS01MjUiIC8+IGFuZCA8eHJlZgorCQkgICAgbGlua2VuZD0idmJpLTYyNSIgLz4sIG9yIGEgZmllbGQgaW1hZ2UgY292ZXJpbmcKK2xpbmVzIG9mIHR3byBmaWVsZHMsIGFyZSBpbnZhbGlkIGFuZCBzaGFsbCBub3QgYmUgcmV0dXJuZWQgYnkgdGhlCitkcml2ZXIuPC9wYXJhPjxwYXJhPlRvIGluaXRpYWxpemUgdGhlIDxzdHJ1Y3RmaWVsZD5zdGFydDwvc3RydWN0ZmllbGQ+CithbmQgPHN0cnVjdGZpZWxkPmNvdW50PC9zdHJ1Y3RmaWVsZD4gZmllbGRzLCBhcHBsaWNhdGlvbnMgbXVzdCBmaXJzdAorZGV0ZXJtaW5lIHRoZSBjdXJyZW50IHZpZGVvIHN0YW5kYXJkIHNlbGVjdGlvbi4gVGhlICZ2NGwyLXN0ZC1pZDsgb3IKK3RoZSA8c3RydWN0ZmllbGQ+ZnJhbWVsaW5lczwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mICZ2NGwyLXN0YW5kYXJkOyBjYW4KK2JlIGV2YWx1YXRlZCBmb3IgdGhpcyBwdXJwb3NlLjwvcGFyYT48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZmxhZ3M8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgICAgPGVudHJ5PlNlZSA8eHJlZiBsaW5rZW5kPSJ2YmlmbXQtZmxhZ3MiIC8+IGJlbG93LiBDdXJyZW50bHkKK29ubHkgZHJpdmVycyBzZXQgZmxhZ3MsIGFwcGxpY2F0aW9ucyBtdXN0IHNldCB0aGlzIGZpZWxkIHRvCit6ZXJvLjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+WzJdPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+VGhpcyBhcnJheSBpcyByZXNlcnZlZCBmb3IgZnV0dXJlIGV4dGVuc2lvbnMuCitEcml2ZXJzIGFuZCBhcHBsaWNhdGlvbnMgbXVzdCBzZXQgaXQgdG8gemVyby48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgIDwvdGJvZHk+CisJPC90Z3JvdXA+CisgICAgICA8L3RhYmxlPgorCisgICAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InZiaWZtdC1mbGFncyI+CisJPHRpdGxlPlJhdyBWQkkgRm9ybWF0IEZsYWdzPC90aXRsZT4KKwk8dGdyb3VwIGNvbHM9IjMiPgorCSAgJmNzLWRlZjsKKwkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1ZCSV9VTlNZTkM8L2NvbnN0YW50PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MDAwMTwvZW50cnk+CisJICAgICAgPGVudHJ5PjxwYXJhPlRoaXMgZmxhZyBpbmRpY2F0ZXMgaGFyZHdhcmUgd2hpY2ggZG9lcyBub3QKK3Byb3Blcmx5IGRpc3Rpbmd1aXNoIGJldHdlZW4gZmllbGRzLiBOb3JtYWxseSB0aGUgVkJJIGltYWdlIHN0b3JlcyB0aGUKK2ZpcnN0IGZpZWxkIChsb3dlciBzY2FubmluZyBsaW5lIG51bWJlcnMpIGZpcnN0IGluIG1lbW9yeS4gVGhpcyBtYXkgYmUKK2EgdG9wIG9yIGJvdHRvbSBmaWVsZCBkZXBlbmRpbmcgb24gdGhlIHZpZGVvIHN0YW5kYXJkLiBXaGVuIHRoaXMgZmxhZworaXMgc2V0IHRoZSBmaXJzdCBvciBzZWNvbmQgZmllbGQgbWF5IGJlIHN0b3JlZCBmaXJzdCwgaG93ZXZlciB0aGUKK2ZpZWxkcyBhcmUgc3RpbGwgaW4gY29ycmVjdCB0ZW1wb3JhbCBvcmRlciB3aXRoIHRoZSBvbGRlciBmaWVsZCBmaXJzdAoraW4gbWVtb3J5Ljxmb290bm90ZT4KKwkJICA8cGFyYT5Nb3N0IFZCSSBzZXJ2aWNlcyB0cmFuc21pdCBvbiBib3RoIGZpZWxkcywgYnV0Citzb21lIGhhdmUgZGlmZmVyZW50IHNlbWFudGljcyBkZXBlbmRpbmcgb24gdGhlIGZpZWxkIG51bWJlci4gVGhlc2UKK2Nhbm5vdCBiZSByZWxpYWJsZSBkZWNvZGVkIG9yIGVuY29kZWQgd2hlbgorPGNvbnN0YW50PlY0TDJfVkJJX1VOU1lOQzwvY29uc3RhbnQ+IGlzIHNldC48L3BhcmE+CisJCTwvZm9vdG5vdGU+PC9wYXJhPjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9WQklfSU5URVJMQUNFRDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgwMDAyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+QnkgZGVmYXVsdCB0aGUgdHdvIGZpZWxkIGltYWdlcyB3aWxsIGJlIHBhc3NlZAorc2VxdWVudGlhbGx5OyBhbGwgbGluZXMgb2YgdGhlIGZpcnN0IGZpZWxkIGZvbGxvd2VkIGJ5IGFsbCBsaW5lcyBvZgordGhlIHNlY29uZCBmaWVsZCAoY29tcGFyZSA8eHJlZiBsaW5rZW5kPSJmaWVsZC1vcmRlciIgLz4KKzxjb25zdGFudD5WNEwyX0ZJRUxEX1NFUV9UQjwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlY0TDJfRklFTERfU0VRX0JUPC9jb25zdGFudD4sIHdoZXRoZXIgdGhlIHRvcCBvciBib3R0b20KK2ZpZWxkIGlzIGZpcnN0IGluIG1lbW9yeSBkZXBlbmRzIG9uIHRoZSB2aWRlbyBzdGFuZGFyZCkuIFdoZW4gdGhpcworZmxhZyBpcyBzZXQsIHRoZSB0d28gZmllbGRzIGFyZSBpbnRlcmxhY2VkIChjZi4KKzxjb25zdGFudD5WNEwyX0ZJRUxEX0lOVEVSTEFDRUQ8L2NvbnN0YW50PikuIFRoZSBmaXJzdCBsaW5lIG9mIHRoZQorZmlyc3QgZmllbGQgZm9sbG93ZWQgYnkgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHNlY29uZCBmaWVsZCwgdGhlbiB0aGUKK3R3byBzZWNvbmQgbGluZXMsIGFuZCBzbyBvbi4gU3VjaCBhIGxheW91dCBtYXkgYmUgbmVjZXNzYXJ5IHdoZW4gdGhlCitoYXJkd2FyZSBoYXMgYmVlbiBwcm9ncmFtbWVkIHRvIGNhcHR1cmUgb3Igb3V0cHV0IGludGVybGFjZWQgdmlkZW8KK2ltYWdlcyBhbmQgaXMgdW5hYmxlIHRvIHNlcGFyYXRlIHRoZSBmaWVsZHMgZm9yIFZCSSBjYXB0dXJpbmcgYXQKK3RoZSBzYW1lIHRpbWUuIEZvciBzaW1wbGljaXR5IHNldHRpbmcgdGhpcyBmbGFnIGltcGxpZXMgdGhhdCBib3RoCis8c3RydWN0ZmllbGQ+Y291bnQ8L3N0cnVjdGZpZWxkPiB2YWx1ZXMgYXJlIGVxdWFsIGFuZCBub24temVyby48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgIDwvdGJvZHk+CisJPC90Z3JvdXA+CisgICAgICA8L3RhYmxlPgorCisgICAgICA8ZmlndXJlIGlkPSJ2YmktaHN5bmMiPgorCTx0aXRsZT5MaW5lIHN5bmNocm9uaXphdGlvbjwvdGl0bGU+CisJPG1lZGlhb2JqZWN0PgorCSAgPGltYWdlb2JqZWN0PgorCSAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9InZiaV9oc3luYy5wZGYiIGZvcm1hdD0iUFMiIC8+CisJICA8L2ltYWdlb2JqZWN0PgorCSAgPGltYWdlb2JqZWN0PgorCSAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9InZiaV9oc3luYy5naWYiIGZvcm1hdD0iR0lGIiAvPgorCSAgPC9pbWFnZW9iamVjdD4KKwkgIDx0ZXh0b2JqZWN0PgorCSAgICA8cGhyYXNlPkxpbmUgc3luY2hyb25pemF0aW9uIGRpYWdyYW08L3BocmFzZT4KKwkgIDwvdGV4dG9iamVjdD4KKwk8L21lZGlhb2JqZWN0PgorICAgICAgPC9maWd1cmU+CisKKyAgICAgIDxmaWd1cmUgaWQ9InZiaS01MjUiPgorCTx0aXRsZT5JVFUtUiA1MjUgbGluZSBudW1iZXJpbmcgKE0vTlRTQyBhbmQgTS9QQUwpPC90aXRsZT4KKwk8bWVkaWFvYmplY3Q+CisJICA8aW1hZ2VvYmplY3Q+CisJICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0idmJpXzUyNS5wZGYiIGZvcm1hdD0iUFMiIC8+CisJICA8L2ltYWdlb2JqZWN0PgorCSAgPGltYWdlb2JqZWN0PgorCSAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9InZiaV81MjUuZ2lmIiBmb3JtYXQ9IkdJRiIgLz4KKwkgIDwvaW1hZ2VvYmplY3Q+CisJICA8dGV4dG9iamVjdD4KKwkgICAgPHBocmFzZT5OVFNDIGZpZWxkIHN5bmNocm9uaXphdGlvbiBkaWFncmFtPC9waHJhc2U+CisJICA8L3RleHRvYmplY3Q+CisJICA8Y2FwdGlvbj4KKwkgICAgPHBhcmE+KDEpIEZvciB0aGUgcHVycG9zZSBvZiB0aGlzIHNwZWNpZmljYXRpb24gZmllbGQgMgorc3RhcnRzIGluIGxpbmUgMjY0IGFuZCBub3QgMjYzLjUgYmVjYXVzZSBoYWxmIGxpbmUgY2FwdHVyaW5nIGlzIG5vdAorc3VwcG9ydGVkLjwvcGFyYT4KKwkgIDwvY2FwdGlvbj4KKwk8L21lZGlhb2JqZWN0PgorICAgICAgPC9maWd1cmU+CisKKyAgICAgIDxmaWd1cmUgaWQ9InZiaS02MjUiPgorCTx0aXRsZT5JVFUtUiA2MjUgbGluZSBudW1iZXJpbmc8L3RpdGxlPgorCTxtZWRpYW9iamVjdD4KKwkgIDxpbWFnZW9iamVjdD4KKwkgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJ2YmlfNjI1LnBkZiIgZm9ybWF0PSJQUyIgLz4KKwkgIDwvaW1hZ2VvYmplY3Q+CisJICA8aW1hZ2VvYmplY3Q+CisJICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0idmJpXzYyNS5naWYiIGZvcm1hdD0iR0lGIiAvPgorCSAgPC9pbWFnZW9iamVjdD4KKwkgIDx0ZXh0b2JqZWN0PgorCSAgICA8cGhyYXNlPlBBTC9TRUNBTSBmaWVsZCBzeW5jaHJvbml6YXRpb24gZGlhZ3JhbTwvcGhyYXNlPgorCSAgPC90ZXh0b2JqZWN0PgorCSAgPGNhcHRpb24+CisJICAgIDxwYXJhPigxKSBGb3IgdGhlIHB1cnBvc2Ugb2YgdGhpcyBzcGVjaWZpY2F0aW9uIGZpZWxkIDIKK3N0YXJ0cyBpbiBsaW5lIDMxNCBhbmQgbm90IDMxMy41IGJlY2F1c2UgaGFsZiBsaW5lIGNhcHR1cmluZyBpcyBub3QKK3N1cHBvcnRlZC48L3BhcmE+CisJICA8L2NhcHRpb24+CisJPC9tZWRpYW9iamVjdD4KKyAgICAgIDwvZmlndXJlPgorCisgICAgICA8cGFyYT5SZW1lbWJlciB0aGUgVkJJIGltYWdlIGZvcm1hdCBkZXBlbmRzIG9uIHRoZSBzZWxlY3RlZAordmlkZW8gc3RhbmRhcmQsIHRoZXJlZm9yZSB0aGUgYXBwbGljYXRpb24gbXVzdCBjaG9vc2UgYSBuZXcgc3RhbmRhcmQgb3IKK3F1ZXJ5IHRoZSBjdXJyZW50IHN0YW5kYXJkIGZpcnN0LiBBdHRlbXB0cyB0byByZWFkIG9yIHdyaXRlIGRhdGEgYWhlYWQKK29mIGZvcm1hdCBuZWdvdGlhdGlvbiwgb3IgYWZ0ZXIgc3dpdGNoaW5nIHRoZSB2aWRlbyBzdGFuZGFyZCB3aGljaCBtYXkKK2ludmFsaWRhdGUgdGhlIG5lZ290aWF0ZWQgVkJJIHBhcmFtZXRlcnMsIHNob3VsZCBiZSByZWZ1c2VkIGJ5IHRoZQorZHJpdmVyLiBBIGZvcm1hdCBjaGFuZ2UgZHVyaW5nIGFjdGl2ZSBJL08gaXMgbm90IHBlcm1pdHRlZC48L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+UmVhZGluZyBhbmQgd3JpdGluZyBWQkkgaW1hZ2VzPC90aXRsZT4KKworICAgICAgPHBhcmE+VG8gYXNzdXJlIHN5bmNocm9uaXphdGlvbiB3aXRoIHRoZSBmaWVsZCBudW1iZXIgYW5kIGVhc2llcgoraW1wbGVtZW50YXRpb24sIHRoZSBzbWFsbGVzdCB1bml0IG9mIGRhdGEgcGFzc2VkIGF0IGEgdGltZSBpcyBvbmUKK2ZyYW1lLCBjb25zaXN0aW5nIG9mIHR3byBmaWVsZHMgb2YgVkJJIGltYWdlcyBpbW1lZGlhdGVseSBmb2xsb3dpbmcgaW4KK21lbW9yeS48L3BhcmE+CisKKyAgICAgIDxwYXJhPlRoZSB0b3RhbCBzaXplIG9mIGEgZnJhbWUgY29tcHV0ZXMgYXMgZm9sbG93czo8L3BhcmE+CisKKyAgICAgIDxwcm9ncmFtbGlzdGluZz4KKyg8c3RydWN0ZmllbGQ+Y291bnQ8L3N0cnVjdGZpZWxkPlswXSArIDxzdHJ1Y3RmaWVsZD5jb3VudDwvc3RydWN0ZmllbGQ+WzFdKSAqCis8c3RydWN0ZmllbGQ+c2FtcGxlc19wZXJfbGluZTwvc3RydWN0ZmllbGQ+ICogc2FtcGxlIHNpemUgaW4gYnl0ZXM8L3Byb2dyYW1saXN0aW5nPgorCisgICAgICA8cGFyYT5UaGUgc2FtcGxlIHNpemUgaXMgbW9zdCBsaWtlbHkgYWx3YXlzIG9uZSBieXRlLAorYXBwbGljYXRpb25zIG11c3QgY2hlY2sgdGhlIDxzdHJ1Y3RmaWVsZD5zYW1wbGVfZm9ybWF0PC9zdHJ1Y3RmaWVsZD4KK2ZpZWxkIHRob3VnaCwgdG8gZnVuY3Rpb24gcHJvcGVybHkgd2l0aCBvdGhlciBkcml2ZXJzLjwvcGFyYT4KKworICAgICAgPHBhcmE+QSBWQkkgZGV2aWNlIG1heSBzdXBwb3J0IDxsaW5rCisgICAgICBsaW5rZW5kPSJydyI+cmVhZC93cml0ZTwvbGluaz4gYW5kL29yIHN0cmVhbWluZyAoPGxpbmsKKyAgICAgIGxpbmtlbmQ9Im1tYXAiPm1lbW9yeSBtYXBwaW5nPC9saW5rPiBvciA8bGluaworICAgICAgbGlua2VuZD0idXNlcnAiPnVzZXIgcG9pbnRlcjwvbGluaz4pIEkvTy4gVGhlIGxhdHRlciBiZWFycyB0aGUKK3Bvc3NpYmlsaXR5IG9mIHN5bmNocm9uaXppbmcgdmlkZW8gYW5kCitWQkkgZGF0YSBieSB1c2luZyBidWZmZXIgdGltZXN0YW1wcy48L3BhcmE+CisKKyAgICAgIDxwYXJhPlJlbWVtYmVyIHRoZSAmVklESU9DLVNUUkVBTU9OOyBpb2N0bCBhbmQgdGhlIGZpcnN0IHJlYWQoKSwKK3dyaXRlKCkgYW5kIHNlbGVjdCgpIGNhbGwgY2FuIGJlIHJlc291cmNlIGFsbG9jYXRpb24gcG9pbnRzIHJldHVybmluZworYW4gJkVCVVNZOyBpZiB0aGUgcmVxdWlyZWQgaGFyZHdhcmUgcmVzb3VyY2VzIGFyZSB0ZW1wb3JhcmlseQordW5hdmFpbGFibGUsIGZvciBleGFtcGxlIHRoZSBkZXZpY2UgaXMgYWxyZWFkeSBpbiB1c2UgYnkgYW5vdGhlcgorcHJvY2Vzcy48L3BhcmE+CisgIDwvc2VjdGlvbj4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZGV2LXJkcy54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2Rldi1yZHMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMmYzMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2Rldi1yZHMueG1sCkBAIC0wLDAgKzEsMTk2IEBACisgICAgIDx0aXRsZT5SRFMgSW50ZXJmYWNlPC90aXRsZT4KKworICAgICAgPHBhcmE+VGhlIFJhZGlvIERhdGEgU3lzdGVtIHRyYW5zbWl0cyBzdXBwbGVtZW50YXJ5CitpbmZvcm1hdGlvbiBpbiBiaW5hcnkgZm9ybWF0LCBmb3IgZXhhbXBsZSB0aGUgc3RhdGlvbiBuYW1lIG9yIHRyYXZlbAoraW5mb3JtYXRpb24sIG9uIGFuIGluYXVkaWJsZSBhdWRpbyBzdWJjYXJyaWVyIG9mIGEgcmFkaW8gcHJvZ3JhbS4gVGhpcworaW50ZXJmYWNlIGlzIGFpbWVkIGF0IGRldmljZXMgY2FwYWJsZSBvZiByZWNlaXZpbmcgYW5kL29yIHRyYW5zbWl0dGluZyBSRFMKK2luZm9ybWF0aW9uLjwvcGFyYT4KKworICAgICAgPHBhcmE+Rm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZSBjb3JlIFJEUyBzdGFuZGFyZCA8eHJlZiBsaW5rZW5kPSJpZWM2MjEwNiIgLz4KK2FuZCB0aGUgUkJEUyBzdGFuZGFyZCA8eHJlZiBsaW5rZW5kPSJucnNjNCIgLz4uPC9wYXJhPgorCisgICAgICA8cGFyYT5Ob3RlIHRoYXQgdGhlIFJCRFMgc3RhbmRhcmQgYXMgaXMgdXNlZCBpbiB0aGUgVVNBIGlzIGFsbW9zdCBpZGVudGljYWwKK3RvIHRoZSBSRFMgc3RhbmRhcmQuIEFueSBSRFMgZGVjb2Rlci9lbmNvZGVyIGNhbiBhbHNvIGhhbmRsZSBSQkRTLiBPbmx5IHNvbWUgb2YgdGhlCitmaWVsZHMgaGF2ZSBzbGlnaHRseSBkaWZmZXJlbnQgbWVhbmluZ3MuIFNlZSB0aGUgUkJEUyBzdGFuZGFyZCBmb3IgbW9yZQoraW5mb3JtYXRpb24uPC9wYXJhPgorCisgICAgICA8cGFyYT5UaGUgUkJEUyBzdGFuZGFyZCBhbHNvIHNwZWNpZmllcyBzdXBwb3J0IGZvciBNTUJTIChNb2RpZmllZCBNb2JpbGUgU2VhcmNoKS4KK1RoaXMgaXMgYSBwcm9wcmlldGFyeSBmb3JtYXQgd2hpY2ggc2VlbXMgdG8gYmUgZGlzY29udGludWVkLiBUaGUgUkRTIGludGVyZmFjZSBkb2VzIG5vdAorc3VwcG9ydCB0aGlzIGZvcm1hdC4gU2hvdWxkIHN1cHBvcnQgZm9yIE1NQlMgKG9yIHRoZSBzby1jYWxsZWQgJ0UgYmxvY2tzJyBpbiBnZW5lcmFsKQorYmUgbmVlZGVkLCB0aGVuIHBsZWFzZSBjb250YWN0IHRoZSBsaW51eC1tZWRpYSBtYWlsaW5nIGxpc3Q6ICZ2NGwtbWw7LjwvcGFyYT4KKworICA8c2VjdGlvbj4KKyAgICA8dGl0bGU+UXVlcnlpbmcgQ2FwYWJpbGl0aWVzPC90aXRsZT4KKworICAgIDxwYXJhPkRldmljZXMgc3VwcG9ydGluZyB0aGUgUkRTIGNhcHR1cmluZyBBUEkgc2V0Cit0aGUgPGNvbnN0YW50PlY0TDJfQ0FQX1JEU19DQVBUVVJFPC9jb25zdGFudD4gZmxhZyBpbgordGhlIDxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXRpZXM8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiAmdjRsMi1jYXBhYmlsaXR5OworcmV0dXJuZWQgYnkgdGhlICZWSURJT0MtUVVFUllDQVA7IGlvY3RsLiAgQW55IHR1bmVyIHRoYXQgc3VwcG9ydHMgUkRTCit3aWxsIHNldCB0aGUgPGNvbnN0YW50PlY0TDJfVFVORVJfQ0FQX1JEUzwvY29uc3RhbnQ+IGZsYWcgaW4KK3RoZSA8c3RydWN0ZmllbGQ+Y2FwYWJpbGl0eTwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mICZ2NGwyLXR1bmVyOy4gIElmCit0aGUgZHJpdmVyIG9ubHkgcGFzc2VzIFJEUyBibG9ja3Mgd2l0aG91dCBpbnRlcnByZXRpbmcgdGhlIGRhdGEKK3RoZSA8Y29uc3RhbnQ+VjRMMl9UVU5FUl9DQVBfUkRTX0JMT0NLX0lPPC9jb25zdGFudD4gZmxhZyBoYXMgdG8gYmUKK3NldCwgc2VlIDxsaW5rIGxpbmtlbmQ9InJlYWRpbmctcmRzLWRhdGEiPlJlYWRpbmcgUkRTIGRhdGE8L2xpbms+LgorRm9yIGZ1dHVyZSB1c2UgdGhlCitmbGFnIDxjb25zdGFudD5WNEwyX1RVTkVSX0NBUF9SRFNfQ09OVFJPTFM8L2NvbnN0YW50PiBoYXMgYWxzbyBiZWVuCitkZWZpbmVkLiBIb3dldmVyLCBhIGRyaXZlciBmb3IgYSByYWRpbyB0dW5lciB3aXRoIHRoaXMgY2FwYWJpbGl0eSBkb2VzCitub3QgeWV0IGV4aXN0LCBzbyBpZiB5b3UgYXJlIHBsYW5uaW5nIHRvIHdyaXRlIHN1Y2ggYSBkcml2ZXIgeW91CitzaG91bGQgZGlzY3VzcyB0aGlzIG9uIHRoZSBsaW51eC1tZWRpYSBtYWlsaW5nIGxpc3Q6ICZ2NGwtbWw7LjwvcGFyYT4KKworICAgIDxwYXJhPiBXaGV0aGVyIGFuIFJEUyBzaWduYWwgaXMgcHJlc2VudCBjYW4gYmUgZGV0ZWN0ZWQgYnkgbG9va2luZworYXQgdGhlIDxzdHJ1Y3RmaWVsZD5yeHN1YmNoYW5zPC9zdHJ1Y3RmaWVsZD4gZmllbGQgb2YgJnY0bDItdHVuZXI7OgordGhlIDxjb25zdGFudD5WNEwyX1RVTkVSX1NVQl9SRFM8L2NvbnN0YW50PiB3aWxsIGJlIHNldCBpZiBSRFMgZGF0YQord2FzIGRldGVjdGVkLjwvcGFyYT4KKworICAgIDxwYXJhPkRldmljZXMgc3VwcG9ydGluZyB0aGUgUkRTIG91dHB1dCBBUEkKK3NldCB0aGUgPGNvbnN0YW50PlY0TDJfQ0FQX1JEU19PVVRQVVQ8L2NvbnN0YW50PiBmbGFnIGluCit0aGUgPHN0cnVjdGZpZWxkPmNhcGFiaWxpdGllczwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mICZ2NGwyLWNhcGFiaWxpdHk7CityZXR1cm5lZCBieSB0aGUgJlZJRElPQy1RVUVSWUNBUDsgaW9jdGwuCitBbnkgbW9kdWxhdG9yIHRoYXQgc3VwcG9ydHMgUkRTIHdpbGwgc2V0IHRoZQorPGNvbnN0YW50PlY0TDJfVFVORVJfQ0FQX1JEUzwvY29uc3RhbnQ+IGZsYWcgaW4gdGhlIDxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXR5PC9zdHJ1Y3RmaWVsZD4KK2ZpZWxkIG9mICZ2NGwyLW1vZHVsYXRvcjsuCitJbiBvcmRlciB0byBlbmFibGUgdGhlIFJEUyB0cmFuc21pc3Npb24gb25lIG11c3Qgc2V0IHRoZSA8Y29uc3RhbnQ+VjRMMl9UVU5FUl9TVUJfUkRTPC9jb25zdGFudD4KK2JpdCBpbiB0aGUgPHN0cnVjdGZpZWxkPnR4c3ViY2hhbnM8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiAmdjRsMi1tb2R1bGF0b3I7LgorSWYgdGhlIGRyaXZlciBvbmx5IHBhc3NlcyBSRFMgYmxvY2tzIHdpdGhvdXQgaW50ZXJwcmV0aW5nIHRoZSBkYXRhCit0aGUgPGNvbnN0YW50PlY0TDJfVFVORVJfQ0FQX1JEU19CTE9DS19JTzwvY29uc3RhbnQ+IGZsYWcgaGFzIHRvIGJlIHNldC4gSWYgdGhlCit0dW5lciBpcyBjYXBhYmxlIG9mIGhhbmRsaW5nIFJEUyBlbnRpdGllcyBsaWtlIHByb2dyYW0gaWRlbnRpZmljYXRpb24gY29kZXMgYW5kIHJhZGlvCit0ZXh0LCB0aGUgZmxhZyA8Y29uc3RhbnQ+VjRMMl9UVU5FUl9DQVBfUkRTX0NPTlRST0xTPC9jb25zdGFudD4gc2hvdWxkIGJlIHNldCwKK3NlZSA8bGluayBsaW5rZW5kPSJ3cml0aW5nLXJkcy1kYXRhIj5Xcml0aW5nIFJEUyBkYXRhPC9saW5rPiBhbmQKKzxsaW5rIGxpbmtlbmQ9ImZtLXR4LWNvbnRyb2xzIj5GTSBUcmFuc21pdHRlciBDb250cm9sIFJlZmVyZW5jZTwvbGluaz4uPC9wYXJhPgorICA8L3NlY3Rpb24+CisKKyAgPHNlY3Rpb24gIGlkPSJyZWFkaW5nLXJkcy1kYXRhIj4KKyAgICA8dGl0bGU+UmVhZGluZyBSRFMgZGF0YTwvdGl0bGU+CisKKyAgICAgIDxwYXJhPlJEUyBkYXRhIGNhbiBiZSByZWFkIGZyb20gdGhlIHJhZGlvIGRldmljZQord2l0aCB0aGUgJmZ1bmMtcmVhZDsgZnVuY3Rpb24uIFRoZSBkYXRhIGlzIHBhY2tlZCBpbiBncm91cHMgb2YgdGhyZWUgYnl0ZXMuPC9wYXJhPgorICA8L3NlY3Rpb24+CisKKyAgPHNlY3Rpb24gIGlkPSJ3cml0aW5nLXJkcy1kYXRhIj4KKyAgICA8dGl0bGU+V3JpdGluZyBSRFMgZGF0YTwvdGl0bGU+CisKKyAgICAgIDxwYXJhPlJEUyBkYXRhIGNhbiBiZSB3cml0dGVuIHRvIHRoZSByYWRpbyBkZXZpY2UKK3dpdGggdGhlICZmdW5jLXdyaXRlOyBmdW5jdGlvbi4gVGhlIGRhdGEgaXMgcGFja2VkIGluIGdyb3VwcyBvZiB0aHJlZSBieXRlcywKK2FzIGZvbGxvd3M6PC9wYXJhPgorICA8L3NlY3Rpb24+CisKKyAgPHNlY3Rpb24+CisgICAgPHRpdGxlPlJEUyBkYXRhc3RydWN0dXJlczwvdGl0bGU+CisgICAgPHRhYmxlIGZyYW1lPSJub25lIiBwZ3dpZGU9IjEiIGlkPSJ2NGwyLXJkcy1kYXRhIj4KKyAgICAgIDx0aXRsZT5zdHJ1Y3QKKzxzdHJ1Y3RuYW1lPnY0bDJfcmRzX2RhdGE8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJPGNvbHNwZWMgY29sbmFtZT0iYzEiIGNvbHdpZHRoPSIxKiIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMiIgY29sd2lkdGg9IjEqIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMzIiBjb2x3aWR0aD0iNSoiIC8+CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3U4PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5sc2I8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5MZWFzdCBTaWduaWZpY2FudCBCeXRlIG9mIFJEUyBCbG9jazwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3U4PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5tc2I8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5Nb3N0IFNpZ25pZmljYW50IEJ5dGUgb2YgUkRTIEJsb2NrPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTg8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmJsb2NrPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+QmxvY2sgZGVzY3JpcHRpb248L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisgICAgPHRhYmxlIGZyYW1lPSJub25lIiBwZ3dpZGU9IjEiIGlkPSJ2NGwyLXJkcy1ibG9jayI+CisgICAgICA8dGl0bGU+QmxvY2sgZGVzY3JpcHRpb248L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIyIj4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMSIgY29sd2lkdGg9IjEqIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMyIiBjb2x3aWR0aD0iNSoiIC8+CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5CaXRzIDAtMjwvZW50cnk+CisJICAgIDxlbnRyeT5CbG9jayAoYWthIG9mZnNldCkgb2YgdGhlIHJlY2VpdmVkIGRhdGEuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PkJpdHMgMy01PC9lbnRyeT4KKwkgICAgPGVudHJ5PkRlcHJlY2F0ZWQuIEN1cnJlbnRseSBpZGVudGljYWwgdG8gYml0cyAwLTIuIERvIG5vdCB1c2UgdGhlc2UgYml0cy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+Qml0IDY8L2VudHJ5PgorCSAgICA8ZW50cnk+Q29ycmVjdGVkIGJpdC4gSW5kaWNhdGVzIHRoYXQgYW4gZXJyb3Igd2FzIGNvcnJlY3RlZCBmb3IgdGhpcyBkYXRhIGJsb2NrLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5CaXQgNzwvZW50cnk+CisJICAgIDxlbnRyeT5FcnJvciBiaXQuIEluZGljYXRlcyB0aGF0IGFuIHVuY29ycmVjdGFibGUgZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHJlY2VwdGlvbiBvZiB0aGlzIGJsb2NrLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBmcmFtZT0ibm9uZSIgcGd3aWRlPSIxIiBpZD0idjRsMi1yZHMtYmxvY2stY29kZXMiPgorICAgICAgPHRpdGxlPkJsb2NrIGRlZmluZXM8L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSI0Ij4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMSIgY29sd2lkdGg9IjEqIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMyIiBjb2x3aWR0aD0iMSoiIC8+CisJPGNvbHNwZWMgY29sbmFtZT0iYzMiIGNvbHdpZHRoPSIxKiIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjNCIgY29sd2lkdGg9IjUqIiAvPgorCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+VjRMMl9SRFNfQkxPQ0tfTVNLPC9lbnRyeT4KKwkgICAgPGVudHJ5PiA8L2VudHJ5PgorCSAgICA8ZW50cnk+NzwvZW50cnk+CisJICAgIDxlbnRyeT5NYXNrIGZvciBiaXRzIDAtMiB0byBnZXQgdGhlIGJsb2NrIElELjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5WNEwyX1JEU19CTE9DS19BPC9lbnRyeT4KKwkgICAgPGVudHJ5PiA8L2VudHJ5PgorCSAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgIDxlbnRyeT5CbG9jayBBLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5WNEwyX1JEU19CTE9DS19CPC9lbnRyeT4KKwkgICAgPGVudHJ5PiA8L2VudHJ5PgorCSAgICA8ZW50cnk+MTwvZW50cnk+CisJICAgIDxlbnRyeT5CbG9jayBCLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5WNEwyX1JEU19CTE9DS19DPC9lbnRyeT4KKwkgICAgPGVudHJ5PiA8L2VudHJ5PgorCSAgICA8ZW50cnk+MjwvZW50cnk+CisJICAgIDxlbnRyeT5CbG9jayBDLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5WNEwyX1JEU19CTE9DS19EPC9lbnRyeT4KKwkgICAgPGVudHJ5PiA8L2VudHJ5PgorCSAgICA8ZW50cnk+MzwvZW50cnk+CisJICAgIDxlbnRyeT5CbG9jayBELjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5WNEwyX1JEU19CTE9DS19DX0FMVDwvZW50cnk+CisJICAgIDxlbnRyeT4gPC9lbnRyeT4KKwkgICAgPGVudHJ5PjQ8L2VudHJ5PgorCSAgICA8ZW50cnk+QmxvY2sgQycuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PlY0TDJfUkRTX0JMT0NLX0lOVkFMSUQ8L2VudHJ5PgorCSAgICA8ZW50cnk+cmVhZC1vbmx5PC9lbnRyeT4KKwkgICAgPGVudHJ5Pjc8L2VudHJ5PgorCSAgICA8ZW50cnk+QW4gaW52YWxpZCBibG9jay48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+VjRMMl9SRFNfQkxPQ0tfQ09SUkVDVEVEPC9lbnRyeT4KKwkgICAgPGVudHJ5PnJlYWQtb25seTwvZW50cnk+CisJICAgIDxlbnRyeT4weDQwPC9lbnRyeT4KKwkgICAgPGVudHJ5PkEgYml0IGVycm9yIHdhcyBkZXRlY3RlZCBidXQgY29ycmVjdGVkLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5WNEwyX1JEU19CTE9DS19FUlJPUjwvZW50cnk+CisJICAgIDxlbnRyeT5yZWFkLW9ubHk8L2VudHJ5PgorCSAgICA8ZW50cnk+MHg4MDwvZW50cnk+CisJICAgIDxlbnRyeT5BbiB1bmNvcnJlY3RhYmxlIGVycm9yIG9jY3VycmVkLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9zZWN0aW9uPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9kZXYtc2RyLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZGV2LXNkci54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY1OTc3MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZGV2LXNkci54bWwKQEAgLTAsMCArMSwxMzIgQEAKKyAgPHRpdGxlPlNvZnR3YXJlIERlZmluZWQgUmFkaW8gSW50ZXJmYWNlIChTRFIpPC90aXRsZT4KKworICA8bm90ZT4KKyAgICA8dGl0bGU+RXhwZXJpbWVudGFsPC90aXRsZT4KKyAgICA8cGFyYT5UaGlzIGlzIGFuIDxsaW5rIGxpbmtlbmQ9ImV4cGVyaW1lbnRhbCI+IGV4cGVyaW1lbnRhbCA8L2xpbms+CisgICAgaW50ZXJmYWNlIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuPC9wYXJhPgorICA8L25vdGU+CisKKyAgPHBhcmE+CitTRFIgaXMgYW4gYWJicmV2aWF0aW9uIG9mIFNvZnR3YXJlIERlZmluZWQgUmFkaW8sIHRoZSByYWRpbyBkZXZpY2UKK3doaWNoIHVzZXMgYXBwbGljYXRpb24gc29mdHdhcmUgZm9yIG1vZHVsYXRpb24gb3IgZGVtb2R1bGF0aW9uLiBUaGlzIGludGVyZmFjZQoraXMgaW50ZW5kZWQgZm9yIGNvbnRyb2xsaW5nIGFuZCBkYXRhIHN0cmVhbWluZyBvZiBzdWNoIGRldmljZXMuCisgIDwvcGFyYT4KKworICA8cGFyYT4KK1NEUiBkZXZpY2VzIGFyZSBhY2Nlc3NlZCB0aHJvdWdoIGNoYXJhY3RlciBkZXZpY2Ugc3BlY2lhbCBmaWxlcyBuYW1lZAorPGZpbGVuYW1lPi9kZXYvc3dyYWRpbzA8L2ZpbGVuYW1lPiB0byA8ZmlsZW5hbWU+L2Rldi9zd3JhZGlvMjU1PC9maWxlbmFtZT4KK3dpdGggbWFqb3IgbnVtYmVyIDgxIGFuZCBkeW5hbWljYWxseSBhbGxvY2F0ZWQgbWlub3IgbnVtYmVycyAwIHRvIDI1NS4KKyAgPC9wYXJhPgorCisgIDxzZWN0aW9uPgorICAgIDx0aXRsZT5RdWVyeWluZyBDYXBhYmlsaXRpZXM8L3RpdGxlPgorCisgICAgPHBhcmE+CitEZXZpY2VzIHN1cHBvcnRpbmcgdGhlIFNEUiByZWNlaXZlciBpbnRlcmZhY2Ugc2V0IHRoZQorPGNvbnN0YW50PlY0TDJfQ0FQX1NEUl9DQVBUVVJFPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VjRMMl9DQVBfVFVORVI8L2NvbnN0YW50PiBmbGFnIGluIHRoZQorPHN0cnVjdGZpZWxkPmNhcGFiaWxpdGllczwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mICZ2NGwyLWNhcGFiaWxpdHk7CityZXR1cm5lZCBieSB0aGUgJlZJRElPQy1RVUVSWUNBUDsgaW9jdGwuIFRoYXQgZmxhZyBtZWFucyB0aGUgZGV2aWNlIGhhcyBhbgorQW5hbG9nIHRvIERpZ2l0YWwgQ29udmVydGVyIChBREMpLCB3aGljaCBpcyBhIG1hbmRhdG9yeSBlbGVtZW50IGZvciB0aGUgU0RSIHJlY2VpdmVyLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KK0RldmljZXMgc3VwcG9ydGluZyB0aGUgU0RSIHRyYW5zbWl0dGVyIGludGVyZmFjZSBzZXQgdGhlCis8Y29uc3RhbnQ+VjRMMl9DQVBfU0RSX09VVFBVVDwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlY0TDJfQ0FQX01PRFVMQVRPUjwvY29uc3RhbnQ+IGZsYWcgaW4gdGhlCis8c3RydWN0ZmllbGQ+Y2FwYWJpbGl0aWVzPC9zdHJ1Y3RmaWVsZD4gZmllbGQgb2YgJnY0bDItY2FwYWJpbGl0eTsKK3JldHVybmVkIGJ5IHRoZSAmVklESU9DLVFVRVJZQ0FQOyBpb2N0bC4gVGhhdCBmbGFnIG1lYW5zIHRoZSBkZXZpY2UgaGFzIGFuCitEaWdpdGFsIHRvIEFuYWxvZyBDb252ZXJ0ZXIgKERBQyksIHdoaWNoIGlzIGEgbWFuZGF0b3J5IGVsZW1lbnQgZm9yIHRoZSBTRFIgdHJhbnNtaXR0ZXIuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorQXQgbGVhc3Qgb25lIG9mIHRoZSByZWFkL3dyaXRlLCBzdHJlYW1pbmcgb3IgYXN5bmNocm9ub3VzIEkvTyBtZXRob2RzIG11c3QKK2JlIHN1cHBvcnRlZC4KKyAgICA8L3BhcmE+CisgIDwvc2VjdGlvbj4KKworICA8c2VjdGlvbj4KKyAgICA8dGl0bGU+U3VwcGxlbWVudGFsIEZ1bmN0aW9uczwvdGl0bGU+CisKKyAgICA8cGFyYT4KK1NEUiBkZXZpY2VzIGNhbiBzdXBwb3J0IDxsaW5rIGxpbmtlbmQ9ImNvbnRyb2wiPmNvbnRyb2xzPC9saW5rPiwgYW5kIG11c3QKK3N1cHBvcnQgdGhlIDxsaW5rIGxpbmtlbmQ9InR1bmVyIj50dW5lcjwvbGluaz4gaW9jdGxzLiBUdW5lciBpb2N0bHMgYXJlIHVzZWQKK2ZvciBzZXR0aW5nIHRoZSBBREMvREFDIHNhbXBsaW5nIHJhdGUgKHNhbXBsaW5nIGZyZXF1ZW5jeSkgYW5kIHRoZSBwb3NzaWJsZQorcmFkaW8gZnJlcXVlbmN5IChSRikuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CitUaGUgPGNvbnN0YW50PlY0TDJfVFVORVJfU0RSPC9jb25zdGFudD4gdHVuZXIgdHlwZSBpcyB1c2VkIGZvciBzZXR0aW5nIFNEUgorZGV2aWNlIEFEQy9EQUMgZnJlcXVlbmN5LCBhbmQgdGhlIDxjb25zdGFudD5WNEwyX1RVTkVSX1JGPC9jb25zdGFudD4KK3R1bmVyIHR5cGUgaXMgdXNlZCBmb3Igc2V0dGluZyByYWRpbyBmcmVxdWVuY3kuCitUaGUgdHVuZXIgaW5kZXggb2YgdGhlIFJGIHR1bmVyIChpZiBhbnkpIG11c3QgYWx3YXlzIGZvbGxvdyB0aGUgU0RSIHR1bmVyIGluZGV4LgorTm9ybWFsbHkgdGhlIFNEUiB0dW5lciBpcyAjMCBhbmQgdGhlIFJGIHR1bmVyIGlzICMxLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorVGhlICZWSURJT0MtUy1IVy1GUkVRLVNFRUs7IGlvY3RsIGlzIG5vdCBzdXBwb3J0ZWQuCisgICAgPC9wYXJhPgorICA8L3NlY3Rpb24+CisKKyAgPHNlY3Rpb24+CisgICAgPHRpdGxlPkRhdGEgRm9ybWF0IE5lZ290aWF0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPgorVGhlIFNEUiBkZXZpY2UgdXNlcyB0aGUgPGxpbmsgbGlua2VuZD0iZm9ybWF0Ij5mb3JtYXQ8L2xpbms+IGlvY3RscyB0bworc2VsZWN0IHRoZSBjYXB0dXJlIGFuZCBvdXRwdXQgZm9ybWF0LiBCb3RoIHRoZSBzYW1wbGluZyByZXNvbHV0aW9uIGFuZCB0aGUgZGF0YQorc3RyZWFtaW5nIGZvcm1hdCBhcmUgYm91bmQgdG8gdGhhdCBzZWxlY3RhYmxlIGZvcm1hdC4gSW4gYWRkaXRpb24gdG8gdGhlIGJhc2ljCis8bGluayBsaW5rZW5kPSJmb3JtYXQiPmZvcm1hdDwvbGluaz4gaW9jdGxzLCB0aGUgJlZJRElPQy1FTlVNLUZNVDsgaW9jdGwKK211c3QgYmUgc3VwcG9ydGVkIGFzIHdlbGwuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CitUbyB1c2UgdGhlIDxsaW5rIGxpbmtlbmQ9ImZvcm1hdCI+Zm9ybWF0PC9saW5rPiBpb2N0bHMgYXBwbGljYXRpb25zIHNldCB0aGUKKzxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gZmllbGQgb2YgYSAmdjRsMi1mb3JtYXQ7IHRvCis8Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9TRFJfQ0FQVFVSRTwvY29uc3RhbnQ+IG9yCis8Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9TRFJfT1VUUFVUPC9jb25zdGFudD4gYW5kIHVzZSB0aGUgJnY0bDItc2RyLWZvcm1hdDsKKzxzdHJ1Y3RmaWVsZD5zZHI8L3N0cnVjdGZpZWxkPiBtZW1iZXIgb2YgdGhlIDxzdHJ1Y3RmaWVsZD5mbXQ8L3N0cnVjdGZpZWxkPgordW5pb24gYXMgbmVlZGVkIHBlciB0aGUgZGVzaXJlZCBvcGVyYXRpb24uCitDdXJyZW50bHkgdGhlcmUgaXMgdHdvIGZpZWxkcywgPHN0cnVjdGZpZWxkPnBpeGVsZm9ybWF0PC9zdHJ1Y3RmaWVsZD4gYW5kCis8c3RydWN0ZmllbGQ+YnVmZmVyc2l6ZTwvc3RydWN0ZmllbGQ+LCBvZiBzdHJ1Y3QgJnY0bDItc2RyLWZvcm1hdDsgd2hpY2ggYXJlCit1c2VkLiBDb250ZW50IG9mIHRoZSA8c3RydWN0ZmllbGQ+cGl4ZWxmb3JtYXQ8L3N0cnVjdGZpZWxkPiBpcyBWNEwyIEZvdXJDQworY29kZSBvZiB0aGUgZGF0YSBmb3JtYXQuIFRoZSA8c3RydWN0ZmllbGQ+YnVmZmVyc2l6ZTwvc3RydWN0ZmllbGQ+IGZpZWxkIGlzCittYXhpbXVtIGJ1ZmZlciBzaXplIGluIGJ5dGVzIHJlcXVpcmVkIGZvciBkYXRhIHRyYW5zZmVyLCBzZXQgYnkgdGhlIGRyaXZlciBpbgorb3JkZXIgdG8gaW5mb3JtIGFwcGxpY2F0aW9uLgorICAgIDwvcGFyYT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1zZHItZm9ybWF0Ij4KKyAgICAgIDx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9zZHJfZm9ybWF0PC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorICAgICAgICAmY3Mtc3RyOworICAgICAgICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorICAgICAgICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5waXhlbGZvcm1hdDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgICAgICAgIDxlbnRyeT4KK1RoZSBkYXRhIGZvcm1hdCBvciB0eXBlIG9mIGNvbXByZXNzaW9uLCBzZXQgYnkgdGhlIGFwcGxpY2F0aW9uLiBUaGlzIGlzIGEKK2xpdHRsZSBlbmRpYW4gPGxpbmsgbGlua2VuZD0idjRsMi1mb3VyY2MiPmZvdXIgY2hhcmFjdGVyIGNvZGU8L2xpbms+LgorVjRMMiBkZWZpbmVzIFNEUiBmb3JtYXRzIGluIDx4cmVmIGxpbmtlbmQ9InNkci1mb3JtYXRzIiAvPi4KKyAgICAgICAgICAgPC9lbnRyeT4KKyAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICA8cm93PgorICAgICAgICAgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKyAgICAgICAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+YnVmZmVyc2l6ZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgICAgICAgIDxlbnRyeT4KK01heGltdW0gc2l6ZSBpbiBieXRlcyByZXF1aXJlZCBmb3IgZGF0YS4gVmFsdWUgaXMgc2V0IGJ5IHRoZSBkcml2ZXIuCisgICAgICAgICAgIDwvZW50cnk+CisgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgIDxlbnRyeT5fX3U4PC9lbnRyeT4KKyAgICAgICAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cmVzZXJ2ZWRbMjRdPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgICAgICAgPGVudHJ5PlRoaXMgYXJyYXkgaXMgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSBleHRlbnNpb25zLgorRHJpdmVycyBhbmQgYXBwbGljYXRpb25zIG11c3Qgc2V0IGl0IHRvIHplcm8uPC9lbnRyeT4KKyAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8cGFyYT4KK0FuIFNEUiBkZXZpY2UgbWF5IHN1cHBvcnQgPGxpbmsgbGlua2VuZD0icnciPnJlYWQvd3JpdGU8L2xpbms+CithbmQvb3Igc3RyZWFtaW5nICg8bGluayBsaW5rZW5kPSJtbWFwIj5tZW1vcnkgbWFwcGluZzwvbGluaz4KK29yIDxsaW5rIGxpbmtlbmQ9InVzZXJwIj51c2VyIHBvaW50ZXI8L2xpbms+KSBJL08uCisgICAgPC9wYXJhPgorCisgIDwvc2VjdGlvbj4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZGV2LXNsaWNlZC12YmkueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9kZXYtc2xpY2VkLXZiaS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFlYzYyZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZGV2LXNsaWNlZC12YmkueG1sCkBAIC0wLDAgKzEsNzA2IEBACisgIDx0aXRsZT5TbGljZWQgVkJJIERhdGEgSW50ZXJmYWNlPC90aXRsZT4KKworICA8cGFyYT5WQkkgc3RhbmRzIGZvciBWZXJ0aWNhbCBCbGFua2luZyBJbnRlcnZhbCwgYSBnYXAgaW4gdGhlCitzZXF1ZW5jZSBvZiBsaW5lcyBvZiBhbiBhbmFsb2cgdmlkZW8gc2lnbmFsLiBEdXJpbmcgVkJJIG5vIHBpY3R1cmUKK2luZm9ybWF0aW9uIGlzIHRyYW5zbWl0dGVkLCBhbGxvd2luZyBzb21lIHRpbWUgd2hpbGUgdGhlIGVsZWN0cm9uIGJlYW0KK29mIGEgY2F0aG9kZSByYXkgdHViZSBUViByZXR1cm5zIHRvIHRoZSB0b3Agb2YgdGhlIHNjcmVlbi48L3BhcmE+CisKKyAgPHBhcmE+U2xpY2VkIFZCSSBkZXZpY2VzIHVzZSBoYXJkd2FyZSB0byBkZW1vZHVsYXRlIGRhdGEgdHJhbnNtaXR0ZWQKK2luIHRoZSBWQkkuIFY0TDIgZHJpdmVycyBzaGFsbCA8ZW1waGFzaXM+bm90PC9lbXBoYXNpcz4gZG8gdGhpcyBieQorc29mdHdhcmUsIHNlZSBhbHNvIHRoZSA8bGluayBsaW5rZW5kPSJyYXctdmJpIj5yYXcgVkJJCitpbnRlcmZhY2U8L2xpbms+LiBUaGUgZGF0YSBpcyBwYXNzZWQgYXMgc2hvcnQgcGFja2V0cyBvZiBmaXhlZCBzaXplLAorY292ZXJpbmcgb25lIHNjYW4gbGluZSBlYWNoLiBUaGUgbnVtYmVyIG9mIHBhY2tldHMgcGVyIHZpZGVvIGZyYW1lIGlzCit2YXJpYWJsZS48L3BhcmE+CisKKyAgPHBhcmE+U2xpY2VkIFZCSSBjYXB0dXJlIGFuZCBvdXRwdXQgZGV2aWNlcyBhcmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUKK3NhbWUgY2hhcmFjdGVyIHNwZWNpYWwgZmlsZXMgYXMgcmF3IFZCSSBkZXZpY2VzLiBXaGVuIGEgZHJpdmVyCitzdXBwb3J0cyBib3RoIGludGVyZmFjZXMsIHRoZSBkZWZhdWx0IGZ1bmN0aW9uIG9mIGEKKzxmaWxlbmFtZT4vZGV2L3ZiaTwvZmlsZW5hbWU+IGRldmljZSBpcyA8ZW1waGFzaXM+cmF3PC9lbXBoYXNpcz4gVkJJCitjYXB0dXJpbmcgb3Igb3V0cHV0LCBhbmQgdGhlIHNsaWNlZCBWQkkgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUKK2FmdGVyIGNhbGxpbmcgdGhlICZWSURJT0MtUy1GTVQ7IGlvY3RsIGFzIGRlZmluZWQgYmVsb3cuIExpa2V3aXNlIGEKKzxmaWxlbmFtZT4vZGV2L3ZpZGVvPC9maWxlbmFtZT4gZGV2aWNlIG1heSBzdXBwb3J0IHRoZSBzbGljZWQgVkJJIEFQSSwKK2hvd2V2ZXIgdGhlIGRlZmF1bHQgZnVuY3Rpb24gaGVyZSBpcyB2aWRlbyBjYXB0dXJpbmcgb3Igb3V0cHV0LgorRGlmZmVyZW50IGZpbGUgZGVzY3JpcHRvcnMgbXVzdCBiZSB1c2VkIHRvIHBhc3MgcmF3IGFuZCBzbGljZWQgVkJJCitkYXRhIHNpbXVsdGFuZW91c2x5LCBpZiB0aGlzIGlzIHN1cHBvcnRlZCBieSB0aGUgZHJpdmVyLjwvcGFyYT4KKworICA8c2VjdGlvbj4KKyAgICA8dGl0bGU+UXVlcnlpbmcgQ2FwYWJpbGl0aWVzPC90aXRsZT4KKworICAgIDxwYXJhPkRldmljZXMgc3VwcG9ydGluZyB0aGUgc2xpY2VkIFZCSSBjYXB0dXJpbmcgb3Igb3V0cHV0IEFQSQorc2V0IHRoZSA8Y29uc3RhbnQ+VjRMMl9DQVBfU0xJQ0VEX1ZCSV9DQVBUVVJFPC9jb25zdGFudD4gb3IKKzxjb25zdGFudD5WNEwyX0NBUF9TTElDRURfVkJJX09VVFBVVDwvY29uc3RhbnQ+IGZsYWcgcmVzcGVjdGl2ZWx5LCBpbgordGhlIDxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXRpZXM8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiAmdjRsMi1jYXBhYmlsaXR5OworcmV0dXJuZWQgYnkgdGhlICZWSURJT0MtUVVFUllDQVA7IGlvY3RsLiBBdCBsZWFzdCBvbmUgb2YgdGhlCityZWFkL3dyaXRlLCBzdHJlYW1pbmcgb3IgYXN5bmNocm9ub3VzIDxsaW5rIGxpbmtlbmQ9ImlvIj5JL08KK21ldGhvZHM8L2xpbms+IG11c3QgYmUgc3VwcG9ydGVkLiBTbGljZWQgVkJJIGRldmljZXMgbWF5IGhhdmUgYSB0dW5lcgorb3IgbW9kdWxhdG9yLjwvcGFyYT4KKyAgPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uPgorICAgIDx0aXRsZT5TdXBwbGVtZW50YWwgRnVuY3Rpb25zPC90aXRsZT4KKworICAgIDxwYXJhPlNsaWNlZCBWQkkgZGV2aWNlcyBzaGFsbCBzdXBwb3J0IDxsaW5rIGxpbmtlbmQ9InZpZGVvIj52aWRlbworaW5wdXQgb3Igb3V0cHV0PC9saW5rPiBhbmQgPGxpbmsgbGlua2VuZD0idHVuZXIiPnR1bmVyIG9yCittb2R1bGF0b3I8L2xpbms+IGlvY3RscyBpZiB0aGV5IGhhdmUgdGhlc2UgY2FwYWJpbGl0aWVzLCBhbmQgdGhleSBtYXkKK3N1cHBvcnQgPGxpbmsgbGlua2VuZD0iY29udHJvbCI+Y29udHJvbDwvbGluaz4gaW9jdGxzLiBUaGUgPGxpbmsKK2xpbmtlbmQ9InN0YW5kYXJkIj52aWRlbyBzdGFuZGFyZDwvbGluaz4gaW9jdGxzIHByb3ZpZGUgaW5mb3JtYXRpb24KK3ZpdGFsIHRvIHByb2dyYW0gYSBzbGljZWQgVkJJIGRldmljZSwgdGhlcmVmb3JlIG11c3QgYmUKK3N1cHBvcnRlZC48L3BhcmE+CisgIDwvc2VjdGlvbj4KKworICA8c2VjdGlvbiBpZD0ic2xpY2VkLXZiaS1mb3JtYXQtbmVnb3RpdGF0aW9uIj4KKyAgICA8dGl0bGU+U2xpY2VkIFZCSSBGb3JtYXQgTmVnb3RpYXRpb248L3RpdGxlPgorCisgICAgPHBhcmE+VG8gZmluZCBvdXQgd2hpY2ggZGF0YSBzZXJ2aWNlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZQoraGFyZHdhcmUgYXBwbGljYXRpb25zIGNhbiBjYWxsIHRoZSAmVklESU9DLUctU0xJQ0VELVZCSS1DQVA7IGlvY3RsLgorQWxsIGRyaXZlcnMgaW1wbGVtZW50aW5nIHRoZSBzbGljZWQgVkJJIGludGVyZmFjZSBtdXN0IHN1cHBvcnQgdGhpcworaW9jdGwuIFRoZSByZXN1bHRzIG1heSBkaWZmZXIgZnJvbSB0aG9zZSBvZiB0aGUgJlZJRElPQy1TLUZNVDsgaW9jdGwKK3doZW4gdGhlIG51bWJlciBvZiBWQkkgbGluZXMgdGhlIGhhcmR3YXJlIGNhbiBjYXB0dXJlIG9yIG91dHB1dCBwZXIKK2ZyYW1lLCBvciB0aGUgbnVtYmVyIG9mIHNlcnZpY2VzIGl0IGNhbiBpZGVudGlmeSBvbiBhIGdpdmVuIGxpbmUgYXJlCitsaW1pdGVkLiBGb3IgZXhhbXBsZSBvbiBQQUwgbGluZSAxNiB0aGUgaGFyZHdhcmUgbWF5IGJlIGFibGUgdG8gbG9vaworZm9yIGEgVlBTIG9yIFRlbGV0ZXh0IHNpZ25hbCwgYnV0IG5vdCBib3RoIGF0IHRoZSBzYW1lIHRpbWUuPC9wYXJhPgorCisgICAgPHBhcmE+VG8gZGV0ZXJtaW5lIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgc2VydmljZXMgYXBwbGljYXRpb25zCitzZXQgdGhlIDxzdHJ1Y3RmaWVsZD50eXBlIDwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mICZ2NGwyLWZvcm1hdDsgdG8KKzxjb25zdGFudD4gVjRMMl9CVUZfVFlQRV9TTElDRURfVkJJX0NBUFRVUkU8L2NvbnN0YW50PiBvciA8Y29uc3RhbnQ+CitWNEwyX0JVRl9UWVBFX1NMSUNFRF9WQklfT1VUUFVUPC9jb25zdGFudD4sIGFuZCB0aGUgJlZJRElPQy1HLUZNVDsKK2lvY3RsIGZpbGxzIHRoZSA8c3RydWN0ZmllbGQ+Zm10LnNsaWNlZDwvc3RydWN0ZmllbGQ+IG1lbWJlciwgYQorJnY0bDItc2xpY2VkLXZiaS1mb3JtYXQ7LjwvcGFyYT4KKworICAgIDxwYXJhPkFwcGxpY2F0aW9ucyBjYW4gcmVxdWVzdCBkaWZmZXJlbnQgcGFyYW1ldGVycyBieQoraW5pdGlhbGl6aW5nIG9yIG1vZGlmeWluZyB0aGUgPHN0cnVjdGZpZWxkPmZtdC5zbGljZWQ8L3N0cnVjdGZpZWxkPgorbWVtYmVyIGFuZCBjYWxsaW5nIHRoZSAmVklESU9DLVMtRk1UOyBpb2N0bCB3aXRoIGEgcG9pbnRlciB0byB0aGUKKzxzdHJ1Y3RuYW1lPnY0bDJfZm9ybWF0PC9zdHJ1Y3RuYW1lPiBzdHJ1Y3R1cmUuPC9wYXJhPgorCisgICAgPHBhcmE+VGhlIHNsaWNlZCBWQkkgQVBJIGlzIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiB0aGUgcmF3IFZCSSBBUEkKK2JlY2F1c2UgdGhlIGhhcmR3YXJlIG11c3QgYmUgdG9sZCB3aGljaCBWQkkgc2VydmljZSB0byBleHBlY3Qgb24gZWFjaAorc2NhbiBsaW5lLiBOb3QgYWxsIHNlcnZpY2VzIG1heSBiZSBzdXBwb3J0ZWQgYnkgdGhlIGhhcmR3YXJlIG9uIGFsbAorbGluZXMgKHRoaXMgaXMgZXNwZWNpYWxseSB0cnVlIGZvciBWQkkgb3V0cHV0IHdoZXJlIFRlbGV0ZXh0IGlzIG9mdGVuCit1bnN1cHBvcnRlZCBhbmQgb3RoZXIgc2VydmljZXMgY2FuIG9ubHkgYmUgaW5zZXJ0ZWQgaW4gb25lIHNwZWNpZmljCitsaW5lKS4gSW4gbWFueSBjYXNlcywgaG93ZXZlciwgaXQgaXMgc3VmZmljaWVudCB0byBqdXN0IHNldCB0aGUKKzxzdHJ1Y3RmaWVsZD5zZXJ2aWNlX3NldDwvc3RydWN0ZmllbGQ+IGZpZWxkIHRvIHRoZSByZXF1aXJlZCBzZXJ2aWNlcworYW5kIGxldCB0aGUgZHJpdmVyIGZpbGwgdGhlIDxzdHJ1Y3RmaWVsZD5zZXJ2aWNlX2xpbmVzPC9zdHJ1Y3RmaWVsZD4KK2FycmF5IGFjY29yZGluZyB0byBoYXJkd2FyZSBjYXBhYmlsaXRpZXMuIE9ubHkgaWYgbW9yZSBwcmVjaXNlIGNvbnRyb2wKK2lzIG5lZWRlZCBzaG91bGQgdGhlIHByb2dyYW1tZXIgc2V0IHRoZQorPHN0cnVjdGZpZWxkPnNlcnZpY2VfbGluZXM8L3N0cnVjdGZpZWxkPiBhcnJheSBleHBsaWNpdGx5LjwvcGFyYT4KKworICAgIDxwYXJhPlRoZSAmVklESU9DLVMtRk1UOyBpb2N0bCBtb2RpZmllcyB0aGUgcGFyYW1ldGVycworYWNjb3JkaW5nIHRvIGhhcmR3YXJlIGNhcGFiaWxpdGllcy4gV2hlbiB0aGUgZHJpdmVyIGFsbG9jYXRlcworcmVzb3VyY2VzIGF0IHRoaXMgcG9pbnQsIGl0IG1heSByZXR1cm4gYW4gJkVCVVNZOyBpZiB0aGUgcmVxdWlyZWQKK3Jlc291cmNlcyBhcmUgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUuIE90aGVyIHJlc291cmNlIGFsbG9jYXRpb24KK3BvaW50cyB3aGljaCBtYXkgcmV0dXJuIDxlcnJvcmNvZGU+RUJVU1k8L2Vycm9yY29kZT4gY2FuIGJlIHRoZQorJlZJRElPQy1TVFJFQU1PTjsgaW9jdGwgYW5kIHRoZSBmaXJzdCAmZnVuYy1yZWFkOywgJmZ1bmMtd3JpdGU7IGFuZAorJmZ1bmMtc2VsZWN0OyBjYWxsLjwvcGFyYT4KKworICAgIDx0YWJsZSBmcmFtZT0ibm9uZSIgcGd3aWRlPSIxIiBpZD0idjRsMi1zbGljZWQtdmJpLWZvcm1hdCI+CisgICAgICA8dGl0bGU+c3RydWN0Cis8c3RydWN0bmFtZT52NGwyX3NsaWNlZF92YmlfZm9ybWF0PC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjUiPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMxIiBjb2x3aWR0aD0iMyoiIC8+CisJPGNvbHNwZWMgY29sbmFtZT0iYzIiIGNvbHdpZHRoPSIzKiIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMyIgY29sd2lkdGg9IjIqIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImM0IiBjb2x3aWR0aD0iMioiIC8+CisJPGNvbHNwZWMgY29sbmFtZT0iYzUiIGNvbHdpZHRoPSIyKiIgLz4KKwk8c3BhbnNwZWMgbmFtZXN0PSJjMyIgbmFtZWVuZD0iYzUiIHNwYW5uYW1lPSJoc3BhbiIgLz4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5zZXJ2aWNlX3NldDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJoc3BhbiI+PHBhcmE+SWYKKzxzdHJ1Y3RmaWVsZD5zZXJ2aWNlX3NldDwvc3RydWN0ZmllbGQ+IGlzIG5vbi16ZXJvIHdoZW4gcGFzc2VkIHdpdGgKKyZWSURJT0MtUy1GTVQ7IG9yICZWSURJT0MtVFJZLUZNVDssIHRoZQorPHN0cnVjdGZpZWxkPnNlcnZpY2VfbGluZXM8L3N0cnVjdGZpZWxkPiBhcnJheSB3aWxsIGJlIGZpbGxlZCBieSB0aGUKK2RyaXZlciBhY2NvcmRpbmcgdG8gdGhlIHNlcnZpY2VzIHNwZWNpZmllZCBpbiB0aGlzIGZpZWxkLiBGb3IgZXhhbXBsZSwKK2lmIDxzdHJ1Y3RmaWVsZD5zZXJ2aWNlX3NldDwvc3RydWN0ZmllbGQ+IGlzIGluaXRpYWxpemVkIHdpdGgKKzxjb25zdGFudD5WNEwyX1NMSUNFRF9URUxFVEVYVF9CIHwgVjRMMl9TTElDRURfV1NTXzYyNTwvY29uc3RhbnQ+LCBhCitkcml2ZXIgZm9yIHRoZSBjeDI1ODQwIHZpZGVvIGRlY29kZXIgc2V0cyBsaW5lcyA3LTIyIG9mIGJvdGgKK2ZpZWxkczxmb290bm90ZT48cGFyYT5BY2NvcmRpbmcgdG8gPGxpbmsKK2xpbmtlbmQ9ImV0czMwMDcwNiI+RVRTJm5ic3A7MzAwJm5ic3A7NzA2PC9saW5rPiBsaW5lcyA2LTIyIG9mIHRoZQorZmlyc3QgZmllbGQgYW5kIGxpbmVzIDUtMjIgb2YgdGhlIHNlY29uZCBmaWVsZCBtYXkgY2FycnkgVGVsZXRleHQKK2RhdGEuPC9wYXJhPjwvZm9vdG5vdGU+IHRvIDxjb25zdGFudD5WNEwyX1NMSUNFRF9URUxFVEVYVF9CPC9jb25zdGFudD4KK2FuZCBsaW5lIDIzIG9mIHRoZSBmaXJzdCBmaWVsZCB0bworPGNvbnN0YW50PlY0TDJfU0xJQ0VEX1dTU182MjU8L2NvbnN0YW50Pi4gSWYKKzxzdHJ1Y3RmaWVsZD5zZXJ2aWNlX3NldDwvc3RydWN0ZmllbGQ+IGlzIHNldCB0byB6ZXJvLCB0aGVuIHRoZSB2YWx1ZXMKK29mIDxzdHJ1Y3RmaWVsZD5zZXJ2aWNlX2xpbmVzPC9zdHJ1Y3RmaWVsZD4gd2lsbCBiZSB1c2VkIGluc3RlYWQuCis8L3BhcmE+PHBhcmE+T24gcmV0dXJuIHRoZSBkcml2ZXIgc2V0cyB0aGlzIGZpZWxkIHRvIHRoZSB1bmlvbiBvZiBhbGwKK2VsZW1lbnRzIG9mIHRoZSByZXR1cm5lZCA8c3RydWN0ZmllbGQ+c2VydmljZV9saW5lczwvc3RydWN0ZmllbGQ+CithcnJheS4gSXQgbWF5IGNvbnRhaW4gbGVzcyBzZXJ2aWNlcyB0aGFuIHJlcXVlc3RlZCwgcGVyaGFwcyBqdXN0IG9uZSwKK2lmIHRoZSBoYXJkd2FyZSBjYW5ub3QgaGFuZGxlIG1vcmUgc2VydmljZXMgc2ltdWx0YW5lb3VzbHkuIEl0IG1heSBiZQorZW1wdHkgKHplcm8pIGlmIG5vbmUgb2YgdGhlIHJlcXVlc3RlZCBzZXJ2aWNlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZQoraGFyZHdhcmUuPC9wYXJhPjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UxNjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+c2VydmljZV9saW5lczwvc3RydWN0ZmllbGQ+WzJdWzI0XTwvZW50cnk+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaHNwYW4iPjxwYXJhPkFwcGxpY2F0aW9ucyBpbml0aWFsaXplIHRoaXMKK2FycmF5IHdpdGggc2V0cyBvZiBkYXRhIHNlcnZpY2VzIHRoZSBkcml2ZXIgc2hhbGwgbG9vayBmb3Igb3IgaW5zZXJ0CitvbiB0aGUgcmVzcGVjdGl2ZSBzY2FuIGxpbmUuIFN1YmplY3QgdG8gaGFyZHdhcmUgY2FwYWJpbGl0aWVzIGRyaXZlcnMKK3JldHVybiB0aGUgcmVxdWVzdGVkIHNldCwgYSBzdWJzZXQsIHdoaWNoIG1heSBiZSBqdXN0IGEgc2luZ2xlCitzZXJ2aWNlLCBvciBhbiBlbXB0eSBzZXQuIFdoZW4gdGhlIGhhcmR3YXJlIGNhbm5vdCBoYW5kbGUgbXVsdGlwbGUKK3NlcnZpY2VzIG9uIHRoZSBzYW1lIGxpbmUgdGhlIGRyaXZlciBzaGFsbCBjaG9vc2Ugb25lLiBObyBhc3N1bXB0aW9ucworY2FuIGJlIG1hZGUgb24gd2hpY2ggc2VydmljZSB0aGUgZHJpdmVyIGNob29zZXMuPC9wYXJhPjxwYXJhPkRhdGEKK3NlcnZpY2VzIGFyZSBkZWZpbmVkIGluIDx4cmVmIGxpbmtlbmQ9InZiaS1zZXJ2aWNlczIiIC8+LiBBcnJheSBpbmRpY2VzCittYXAgdG8gSVRVLVIgbGluZSBudW1iZXJzIChzZWUgYWxzbyA8eHJlZiBsaW5rZW5kPSJ2YmktNTI1IiAvPiBhbmQgPHhyZWYKKwkJICBsaW5rZW5kPSJ2YmktNjI1IiAvPikgYXMgZm9sbG93czogPCEtLSBObyBuZXN0ZWQKK3RhYmxlcywgc2lnaC4gLS0+PC9wYXJhPjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkVsZW1lbnQ8L2VudHJ5PgorCSAgICA8ZW50cnk+NTI1IGxpbmUgc3lzdGVtczwvZW50cnk+CisJICAgIDxlbnRyeT42MjUgbGluZSBzeXN0ZW1zPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnNlcnZpY2VfbGluZXM8L3N0cnVjdGZpZWxkPlswXVsxXTwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj4xPC9lbnRyeT4KKwkgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjE8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+c2VydmljZV9saW5lczwvc3RydWN0ZmllbGQ+WzBdWzIzXTwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj4yMzwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj4yMzwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5zZXJ2aWNlX2xpbmVzPC9zdHJ1Y3RmaWVsZD5bMV1bMV08L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+MjY0PC9lbnRyeT4KKwkgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjMxNDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5zZXJ2aWNlX2xpbmVzPC9zdHJ1Y3RmaWVsZD5bMV1bMjNdPC9lbnRyeT4KKwkgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjI4NjwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj4zMzY8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8IS0tIEVuZCBvZiBsaW5lIG51bWJlcnMgdGFibGUuIC0tPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImhzcGFuIj5Ecml2ZXJzIG11c3Qgc2V0Cis8c3RydWN0ZmllbGQ+c2VydmljZV9saW5lczwvc3RydWN0ZmllbGQ+WzBdWzBdIGFuZAorPHN0cnVjdGZpZWxkPnNlcnZpY2VfbGluZXM8L3N0cnVjdGZpZWxkPlsxXVswXSB0byB6ZXJvLgorVGhlIDxjb25zdGFudD5WNEwyX1ZCSV9JVFVfNTI1X0YxX1NUQVJUPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9WQklfSVRVXzUyNV9GMl9TVEFSVDwvY29uc3RhbnQ+LAorPGNvbnN0YW50PlY0TDJfVkJJX0lUVV82MjVfRjFfU1RBUlQ8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX1ZCSV9JVFVfNjI1X0YyX1NUQVJUPC9jb25zdGFudD4gZGVmaW5lcyBnaXZlIHRoZSBzdGFydAorbGluZSBudW1iZXJzIGZvciBlYWNoIGZpZWxkIGZvciBlYWNoIDUyNSBvciA2MjUgbGluZSBmb3JtYXQgYXMgYQorY29udmVuaWVuY2UuICBEb24ndCBmb3JnZXQgdGhhdCBJVFUgbGluZSBudW1iZXJpbmcgc3RhcnRzIGF0IDEsIG5vdCAwLgorPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5pb19zaXplPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImhzcGFuIj5NYXhpbXVtIG51bWJlciBvZiBieXRlcyBwYXNzZWQgYnkKK29uZSAmZnVuYy1yZWFkOyBvciAmZnVuYy13cml0ZTsgY2FsbCwgYW5kIHRoZSBidWZmZXIgc2l6ZSBpbiBieXRlcyBmb3IKK3RoZSAmVklESU9DLVFCVUY7IGFuZCAmVklESU9DLURRQlVGOyBpb2N0bC4gRHJpdmVycyBzZXQgdGhpcyBmaWVsZCB0bwordGhlIHNpemUgb2YgJnY0bDItc2xpY2VkLXZiaS1kYXRhOyB0aW1lcyB0aGUgbnVtYmVyIG9mIG5vbi16ZXJvCitlbGVtZW50cyBpbiB0aGUgcmV0dXJuZWQgPHN0cnVjdGZpZWxkPnNlcnZpY2VfbGluZXM8L3N0cnVjdGZpZWxkPgorYXJyYXkgKHRoYXQgaXMgdGhlIG51bWJlciBvZiBsaW5lcyBwb3RlbnRpYWxseSBjYXJyeWluZyBkYXRhKS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD5bMl08L2VudHJ5PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImhzcGFuIj5UaGlzIGFycmF5IGlzIHJlc2VydmVkIGZvciBmdXR1cmUKK2V4dGVuc2lvbnMuIEFwcGxpY2F0aW9ucyBhbmQgZHJpdmVycyBtdXN0IHNldCBpdCB0byB6ZXJvLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDwhLS0gU2VlIGFsc28gdmlkaW9jLWctc2xpY2VkLXZiaS1jYXAuc2dtbCAtLT4KKyAgICA8dGFibGUgZnJhbWU9Im5vbmUiIHBnd2lkZT0iMSIgaWQ9InZiaS1zZXJ2aWNlczIiPgorICAgICAgPHRpdGxlPlNsaWNlZCBWQkkgc2VydmljZXM8L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSI1Ij4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMSIgY29sd2lkdGg9IjIqIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMyIiBjb2x3aWR0aD0iMSoiIC8+CisJPGNvbHNwZWMgY29sbmFtZT0iYzMiIGNvbHdpZHRoPSIxKiIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjNCIgY29sd2lkdGg9IjIqIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImM1IiBjb2x3aWR0aD0iMioiIC8+CisJPHNwYW5zcGVjIG5hbWVzdD0iYzMiIG5hbWVlbmQ9ImM1IiBzcGFubmFtZT0icmxwIiAvPgorCTx0aGVhZD4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5TeW1ib2w8L2VudHJ5PgorCSAgICA8ZW50cnk+VmFsdWU8L2VudHJ5PgorCSAgICA8ZW50cnk+UmVmZXJlbmNlPC9lbnRyeT4KKwkgICAgPGVudHJ5PkxpbmVzLCB1c3VhbGx5PC9lbnRyeT4KKwkgICAgPGVudHJ5PlBheWxvYWQ8L2VudHJ5PgorCSAgPC9yb3c+CisJPC90aGVhZD4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1NMSUNFRF9URUxFVEVYVF9CPC9jb25zdGFudD4KKyhUZWxldGV4dCBTeXN0ZW0gQik8L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAxPC9lbnRyeT4KKwkgICAgPGVudHJ5Pjx4cmVmIGxpbmtlbmQ9ImV0czMwMDcwNiIgLz4sIDx4cmVmIGxpbmtlbmQ9Iml0dTY1MyIgLz48L2VudHJ5PgorCSAgICA8ZW50cnk+UEFML1NFQ0FNIGxpbmUgNy0yMiwgMzIwLTMzNSAoc2Vjb25kIGZpZWxkIDctMjIpPC9lbnRyeT4KKwkgICAgPGVudHJ5Pkxhc3QgNDIgb2YgdGhlIDQ1IGJ5dGUgVGVsZXRleHQgcGFja2V0LCB0aGF0IGlzCit3aXRob3V0IGNsb2NrIHJ1bi1pbiBhbmQgZnJhbWluZyBjb2RlLCBsc2IgZmlyc3QgdHJhbnNtaXR0ZWQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1NMSUNFRF9WUFM8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDA0MDA8L2VudHJ5PgorCSAgICA8ZW50cnk+PHhyZWYgbGlua2VuZD0iZXRzMzAwMjMxIiAvPjwvZW50cnk+CisJICAgIDxlbnRyeT5QQUwgbGluZSAxNjwvZW50cnk+CisJICAgIDxlbnRyeT5CeXRlIG51bWJlciAzIHRvIDE1IGFjY29yZGluZyB0byBGaWd1cmUgOSBvZgorRVRTJm5ic3A7MzAwJm5ic3A7MjMxLCBsc2IgZmlyc3QgdHJhbnNtaXR0ZWQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1NMSUNFRF9DQVBUSU9OXzUyNTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MTAwMDwvZW50cnk+CisJICAgIDxlbnRyeT48eHJlZiBsaW5rZW5kPSJjZWE2MDgiIC8+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk5UU0MgbGluZSAyMSwgMjg0IChzZWNvbmQgZmllbGQgMjEpPC9lbnRyeT4KKwkgICAgPGVudHJ5PlR3byBieXRlcyBpbiB0cmFuc21pc3Npb24gb3JkZXIsIGluY2x1ZGluZyBwYXJpdHkKK2JpdCwgbHNiIGZpcnN0IHRyYW5zbWl0dGVkLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9TTElDRURfV1NTXzYyNTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4NDAwMDwvZW50cnk+CisJICAgIDxlbnRyeT48eHJlZiBsaW5rZW5kPSJpdHUxMTE5IiAvPiwgPHhyZWYgbGlua2VuZD0iZW4zMDAyOTQiIC8+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlBBTC9TRUNBTSBsaW5lIDIzPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzY3JlZW4+CitCeXRlICAgICAgICAgMCAgICAgICAgICAgICAgICAgMQorICAgICAgbXNiICAgICAgICAgbHNiICBtc2IgICAgICAgICAgIGxzYgorIEJpdCAgNyA2IDUgNCAzIDIgMSAwICB4IHggMTMgMTIgMTEgMTAgOQorPC9zY3JlZW4+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1NMSUNFRF9WQklfNTI1PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgxMDAwPC9lbnRyeT4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJybHAiPlNldCBvZiBzZXJ2aWNlcyBhcHBsaWNhYmxlIHRvIDUyNQorbGluZSBzeXN0ZW1zLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9TTElDRURfVkJJXzYyNTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4NDQwMTwvZW50cnk+CisJICAgIDxlbnRyeSBzcGFubmFtZT0icmxwIj5TZXQgb2Ygc2VydmljZXMgYXBwbGljYWJsZSB0byA2MjUKK2xpbmUgc3lzdGVtcy48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8cGFyYT5Ecml2ZXJzIG1heSByZXR1cm4gYW4gJkVJTlZBTDsgd2hlbiBhcHBsaWNhdGlvbnMgYXR0ZW1wdCB0bworcmVhZCBvciB3cml0ZSBkYXRhIHdpdGhvdXQgcHJpb3IgZm9ybWF0IG5lZ290aWF0aW9uLCBhZnRlciBzd2l0Y2hpbmcKK3RoZSB2aWRlbyBzdGFuZGFyZCAod2hpY2ggbWF5IGludmFsaWRhdGUgdGhlIG5lZ290aWF0ZWQgVkJJCitwYXJhbWV0ZXJzKSBhbmQgYWZ0ZXIgc3dpdGNoaW5nIHRoZSB2aWRlbyBpbnB1dCAod2hpY2ggbWF5IGNoYW5nZSB0aGUKK3ZpZGVvIHN0YW5kYXJkIGFzIGEgc2lkZSBlZmZlY3QpLiBUaGUgJlZJRElPQy1TLUZNVDsgaW9jdGwgbWF5IHJldHVybgorYW4gJkVCVVNZOyB3aGVuIGFwcGxpY2F0aW9ucyBhdHRlbXB0IHRvIGNoYW5nZSB0aGUgZm9ybWF0IHdoaWxlIGkvbyBpcworaW4gcHJvZ3Jlc3MgKGJldHdlZW4gYSAmVklESU9DLVNUUkVBTU9OOyBhbmQgJlZJRElPQy1TVFJFQU1PRkY7IGNhbGwsCithbmQgYWZ0ZXIgdGhlIGZpcnN0ICZmdW5jLXJlYWQ7IG9yICZmdW5jLXdyaXRlOyBjYWxsKS48L3BhcmE+CisgIDwvc2VjdGlvbj4KKworICA8c2VjdGlvbj4KKyAgICA8dGl0bGU+UmVhZGluZyBhbmQgd3JpdGluZyBzbGljZWQgVkJJIGRhdGE8L3RpdGxlPgorCisgICAgPHBhcmE+QSBzaW5nbGUgJmZ1bmMtcmVhZDsgb3IgJmZ1bmMtd3JpdGU7IGNhbGwgbXVzdCBwYXNzIGFsbCBkYXRhCitiZWxvbmdpbmcgdG8gb25lIHZpZGVvIGZyYW1lLiBUaGF0IGlzIGFuIGFycmF5IG9mCis8c3RydWN0bmFtZT52NGwyX3NsaWNlZF92YmlfZGF0YTwvc3RydWN0bmFtZT4gc3RydWN0dXJlcyB3aXRoIG9uZSBvcgorbW9yZSBlbGVtZW50cyBhbmQgYSB0b3RhbCBzaXplIG5vdCBleGNlZWRpbmcKKzxzdHJ1Y3RmaWVsZD5pb19zaXplPC9zdHJ1Y3RmaWVsZD4gYnl0ZXMuIExpa2V3aXNlIGluIHN0cmVhbWluZyBJL08KK21vZGUgb25lIGJ1ZmZlciBvZiA8c3RydWN0ZmllbGQ+aW9fc2l6ZTwvc3RydWN0ZmllbGQ+IGJ5dGVzIG11c3QKK2NvbnRhaW4gZGF0YSBvZiBvbmUgdmlkZW8gZnJhbWUuIFRoZSA8c3RydWN0ZmllbGQ+aWQ8L3N0cnVjdGZpZWxkPiBvZgordW51c2VkIDxzdHJ1Y3RuYW1lPnY0bDJfc2xpY2VkX3ZiaV9kYXRhPC9zdHJ1Y3RuYW1lPiBlbGVtZW50cyBtdXN0IGJlCit6ZXJvLjwvcGFyYT4KKworICAgIDx0YWJsZSBmcmFtZT0ibm9uZSIgcGd3aWRlPSIxIiBpZD0idjRsMi1zbGljZWQtdmJpLWRhdGEiPgorICAgICAgPHRpdGxlPnN0cnVjdAorPHN0cnVjdG5hbWU+djRsMl9zbGljZWRfdmJpX2RhdGE8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5pZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkEgZmxhZyBmcm9tIDx4cmVmIGxpbmtlbmQ9InZiaS1zZXJ2aWNlcyIgLz4KK2lkZW50aWZ5aW5nIHRoZSB0eXBlIG9mIGRhdGEgaW4gdGhpcyBwYWNrZXQuIE9ubHkgYSBzaW5nbGUgYml0IG11c3QgYmUKK3NldC4gV2hlbiB0aGUgPHN0cnVjdGZpZWxkPmlkPC9zdHJ1Y3RmaWVsZD4gb2YgYSBjYXB0dXJlZCBwYWNrZXQgaXMKK3plcm8sIHRoZSBwYWNrZXQgaXMgZW1wdHkgYW5kIHRoZSBjb250ZW50cyBvZiBvdGhlciBmaWVsZHMgYXJlCit1bmRlZmluZWQuIEFwcGxpY2F0aW9ucyBzaGFsbCBpZ25vcmUgZW1wdHkgcGFja2V0cy4gV2hlbiB0aGUKKzxzdHJ1Y3RmaWVsZD5pZDwvc3RydWN0ZmllbGQ+IG9mIGEgcGFja2V0IGZvciBvdXRwdXQgaXMgemVybyB0aGUKK2NvbnRlbnRzIG9mIHRoZSA8c3RydWN0ZmllbGQ+ZGF0YTwvc3RydWN0ZmllbGQ+IGZpZWxkIGFyZSB1bmRlZmluZWQKK2FuZCB0aGUgZHJpdmVyIG11c3Qgbm8gbG9uZ2VyIGluc2VydCBkYXRhIG9uIHRoZSByZXF1ZXN0ZWQKKzxzdHJ1Y3RmaWVsZD5maWVsZDwvc3RydWN0ZmllbGQ+IGFuZAorPHN0cnVjdGZpZWxkPmxpbmU8L3N0cnVjdGZpZWxkPi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmZpZWxkPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIHZpZGVvIGZpZWxkIG51bWJlciB0aGlzIGRhdGEgaGFzIGJlZW4gY2FwdHVyZWQKK2Zyb20sIG9yIHNoYWxsIGJlIGluc2VydGVkIGF0LiA8Y29uc3RhbnQ+MDwvY29uc3RhbnQ+IGZvciB0aGUgZmlyc3QKK2ZpZWxkLCA8Y29uc3RhbnQ+MTwvY29uc3RhbnQ+IGZvciB0aGUgc2Vjb25kIGZpZWxkLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+bGluZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBmaWVsZCAoYXMgb3Bwb3NlZCB0byBmcmFtZSkgbGluZSBudW1iZXIgdGhpcworZGF0YSBoYXMgYmVlbiBjYXB0dXJlZCBmcm9tLCBvciBzaGFsbCBiZSBpbnNlcnRlZCBhdC4gU2VlIDx4cmVmCisJICAgIGxpbmtlbmQ9InZiaS01MjUiIC8+IGFuZCA8eHJlZiBsaW5rZW5kPSJ2YmktNjI1IiAvPiBmb3IgdmFsaWQKK3ZhbHVlcy4gU2xpY2VkIFZCSSBjYXB0dXJlIGRldmljZXMgY2FuIHNldCB0aGUgbGluZSBudW1iZXIgb2YgYWxsCitwYWNrZXRzIHRvIDxjb25zdGFudD4wPC9jb25zdGFudD4gaWYgdGhlIGhhcmR3YXJlIGNhbm5vdCByZWxpYWJseQoraWRlbnRpZnkgc2NhbiBsaW5lcy4gVGhlIGZpZWxkIG51bWJlciBtdXN0IGFsd2F5cyBiZSB2YWxpZC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBmaWVsZCBpcyByZXNlcnZlZCBmb3IgZnV0dXJlIGV4dGVuc2lvbnMuCitBcHBsaWNhdGlvbnMgYW5kIGRyaXZlcnMgbXVzdCBzZXQgaXQgdG8gemVyby48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191ODwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZGF0YTwvc3RydWN0ZmllbGQ+WzQ4XTwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgcGFja2V0IHBheWxvYWQuIFNlZSA8eHJlZgorCSAgICBsaW5rZW5kPSJ2Ymktc2VydmljZXMiIC8+IGZvciB0aGUgY29udGVudHMgYW5kIG51bWJlciBvZgorYnl0ZXMgcGFzc2VkIGZvciBlYWNoIGRhdGEgdHlwZS4gVGhlIGNvbnRlbnRzIG9mIHBhZGRpbmcgYnl0ZXMgYXQgdGhlCitlbmQgb2YgdGhpcyBhcnJheSBhcmUgdW5kZWZpbmVkLCBkcml2ZXJzIGFuZCBhcHBsaWNhdGlvbnMgc2hhbGwgaWdub3JlCit0aGVtLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDxwYXJhPlBhY2tldHMgYXJlIGFsd2F5cyBwYXNzZWQgaW4gYXNjZW5kaW5nIGxpbmUgbnVtYmVyIG9yZGVyLAord2l0aG91dCBkdXBsaWNhdGUgbGluZSBudW1iZXJzLiBUaGUgJmZ1bmMtd3JpdGU7IGZ1bmN0aW9uIGFuZCB0aGUKKyZWSURJT0MtUUJVRjsgaW9jdGwgbXVzdCByZXR1cm4gYW4gJkVJTlZBTDsgd2hlbiBhcHBsaWNhdGlvbnMgdmlvbGF0ZQordGhpcyBydWxlLiBUaGV5IG11c3QgYWxzbyByZXR1cm4gYW4gJkVJTlZBTDsgd2hlbiBhcHBsaWNhdGlvbnMgcGFzcyBhbgoraW5jb3JyZWN0IGZpZWxkIG9yIGxpbmUgbnVtYmVyLCBvciBhIGNvbWJpbmF0aW9uIG9mCis8c3RydWN0ZmllbGQ+ZmllbGQ8L3N0cnVjdGZpZWxkPiwgPHN0cnVjdGZpZWxkPmxpbmU8L3N0cnVjdGZpZWxkPiBhbmQKKzxzdHJ1Y3RmaWVsZD5pZDwvc3RydWN0ZmllbGQ+IHdoaWNoIGhhcyBub3QgYmVlbiBuZWdvdGlhdGVkIHdpdGggdGhlCismVklESU9DLUctRk1UOyBvciAmVklESU9DLVMtRk1UOyBpb2N0bC4gV2hlbiB0aGUgbGluZSBudW1iZXJzIGFyZQordW5rbm93biB0aGUgZHJpdmVyIG11c3QgcGFzcyB0aGUgcGFja2V0cyBpbiB0cmFuc21pdHRlZCBvcmRlci4gVGhlCitkcml2ZXIgY2FuIGluc2VydCBlbXB0eSBwYWNrZXRzIHdpdGggPHN0cnVjdGZpZWxkPmlkPC9zdHJ1Y3RmaWVsZD4gc2V0Cit0byB6ZXJvIGFueXdoZXJlIGluIHRoZSBwYWNrZXQgYXJyYXkuPC9wYXJhPgorCisgICAgPHBhcmE+VG8gYXNzdXJlIHN5bmNocm9uaXphdGlvbiBhbmQgdG8gZGlzdGluZ3Vpc2ggZnJvbSBmcmFtZQorZHJvcHBpbmcsIHdoZW4gYSBjYXB0dXJlZCBmcmFtZSBkb2VzIG5vdCBjYXJyeSBhbnkgb2YgdGhlIHJlcXVlc3RlZAorZGF0YSBzZXJ2aWNlcyBkcml2ZXJzIG11c3QgcGFzcyBvbmUgb3IgbW9yZSBlbXB0eSBwYWNrZXRzLiBXaGVuIGFuCithcHBsaWNhdGlvbiBmYWlscyB0byBwYXNzIFZCSSBkYXRhIGluIHRpbWUgZm9yIG91dHB1dCwgdGhlIGRyaXZlcgorbXVzdCBvdXRwdXQgdGhlIGxhc3QgVlBTIGFuZCBXU1MgcGFja2V0IGFnYWluLCBhbmQgZGlzYWJsZSB0aGUgb3V0cHV0CitvZiBDbG9zZWQgQ2FwdGlvbiBhbmQgVGVsZXRleHQgZGF0YSwgb3Igb3V0cHV0IGRhdGEgd2hpY2ggaXMgaWdub3JlZAorYnkgQ2xvc2VkIENhcHRpb24gYW5kIFRlbGV0ZXh0IGRlY29kZXJzLjwvcGFyYT4KKworICAgIDxwYXJhPkEgc2xpY2VkIFZCSSBkZXZpY2UgbWF5IHN1cHBvcnQgPGxpbmsKK2xpbmtlbmQ9InJ3Ij5yZWFkL3dyaXRlPC9saW5rPiBhbmQvb3Igc3RyZWFtaW5nICg8bGluaworbGlua2VuZD0ibW1hcCI+bWVtb3J5IG1hcHBpbmc8L2xpbms+IGFuZC9vciA8bGluayBsaW5rZW5kPSJ1c2VycCI+dXNlcgorcG9pbnRlcjwvbGluaz4pIEkvTy4gVGhlIGxhdHRlciBiZWFycyB0aGUgcG9zc2liaWxpdHkgb2Ygc3luY2hyb25pemluZwordmlkZW8gYW5kIFZCSSBkYXRhIGJ5IHVzaW5nIGJ1ZmZlciB0aW1lc3RhbXBzLjwvcGFyYT4KKworICA8L3NlY3Rpb24+CisKKyAgPHNlY3Rpb24+CisgICAgPHRpdGxlPlNsaWNlZCBWQkkgRGF0YSBpbiBNUEVHIFN0cmVhbXM8L3RpdGxlPgorCisgICAgPHBhcmE+SWYgYSBkZXZpY2UgY2FuIHByb2R1Y2UgYW4gTVBFRyBvdXRwdXQgc3RyZWFtLCBpdCBtYXkgYmUKK2NhcGFibGUgb2YgcHJvdmlkaW5nIDxsaW5rCitsaW5rZW5kPSJzbGljZWQtdmJpLWZvcm1hdC1uZWdvdGl0YXRpb24iPm5lZ290aWF0ZWQgc2xpY2VkIFZCSQorc2VydmljZXM8L2xpbms+IGFzIGRhdGEgZW1iZWRkZWQgaW4gdGhlIE1QRUcgc3RyZWFtLiAgVXNlcnMgb3IKK2FwcGxpY2F0aW9ucyBjb250cm9sIHRoaXMgc2xpY2VkIFZCSSBkYXRhIGluc2VydGlvbiB3aXRoIHRoZSA8bGluaworbGlua2VuZD0idjRsMi1tcGVnLXN0cmVhbS12YmktZm10Ij5WNEwyX0NJRF9NUEVHX1NUUkVBTV9WQklfRk1UPC9saW5rPgorY29udHJvbC48L3BhcmE+CisKKyAgICA8cGFyYT5JZiB0aGUgZHJpdmVyIGRvZXMgbm90IHByb3ZpZGUgdGhlIDxsaW5rCitsaW5rZW5kPSJ2NGwyLW1wZWctc3RyZWFtLXZiaS1mbXQiPlY0TDJfQ0lEX01QRUdfU1RSRUFNX1ZCSV9GTVQ8L2xpbms+Citjb250cm9sLCBvciBvbmx5IGFsbG93cyB0aGF0IGNvbnRyb2wgdG8gYmUgc2V0IHRvIDxsaW5rCitsaW5rZW5kPSJ2NGwyLW1wZWctc3RyZWFtLXZiaS1mbXQiPjxjb25zdGFudD4KK1Y0TDJfTVBFR19TVFJFQU1fVkJJX0ZNVF9OT05FPC9jb25zdGFudD48L2xpbms+LCB0aGVuIHRoZSBkZXZpY2UKK2Nhbm5vdCBlbWJlZCBzbGljZWQgVkJJIGRhdGEgaW4gdGhlIE1QRUcgc3RyZWFtLjwvcGFyYT4KKworICAgIDxwYXJhPlRoZSA8bGluayBsaW5rZW5kPSJ2NGwyLW1wZWctc3RyZWFtLXZiaS1mbXQiPgorVjRMMl9DSURfTVBFR19TVFJFQU1fVkJJX0ZNVDwvbGluaz4gY29udHJvbCBkb2VzIG5vdCBpbXBsaWNpdGx5IHNldAordGhlIGRldmljZSBkcml2ZXIgdG8gY2FwdHVyZSBub3IgY2Vhc2UgY2FwdHVyaW5nIHNsaWNlZCBWQkkgZGF0YS4gIFRoZQorY29udHJvbCBvbmx5IGluZGljYXRlcyB0byBlbWJlZCBzbGljZWQgVkJJIGRhdGEgaW4gdGhlIE1QRUcgc3RyZWFtLCBpZgorYW4gYXBwbGljYXRpb24gaGFzIG5lZ290aWF0ZWQgc2xpY2VkIFZCSSBzZXJ2aWNlIGJlIGNhcHR1cmVkLjwvcGFyYT4KKworICAgIDxwYXJhPkl0IG1heSBhbHNvIGJlIHRoZSBjYXNlIHRoYXQgYSBkZXZpY2UgY2FuIGVtYmVkIHNsaWNlZCBWQkkKK2RhdGEgaW4gb25seSBjZXJ0YWluIHR5cGVzIG9mIE1QRUcgc3RyZWFtczogZm9yIGV4YW1wbGUgaW4gYW4gTVBFRy0yCitQUyBidXQgbm90IGFuIE1QRUctMiBUUy4gIEluIHRoaXMgc2l0dWF0aW9uLCBpZiBzbGljZWQgVkJJIGRhdGEKK2luc2VydGlvbiBpcyByZXF1ZXN0ZWQsIHRoZSBzbGljZWQgVkJJIGRhdGEgd2lsbCBiZSBlbWJlZGRlZCBpbiBNUEVHCitzdHJlYW0gdHlwZXMgd2hlbiBzdXBwb3J0ZWQsIGFuZCBzaWxlbnRseSBvbWl0dGVkIGZyb20gTVBFRyBzdHJlYW0KK3R5cGVzIHdoZXJlIHNsaWNlZCBWQkkgZGF0YSBpbnNlcnRpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgZGV2aWNlLgorPC9wYXJhPgorCisgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBzdWJzZWN0aW9ucyBzcGVjaWZ5IHRoZSBmb3JtYXQgb2YgdGhlCitlbWJlZGRlZCBzbGljZWQgVkJJIGRhdGEuPC9wYXJhPgorCisgIDxzZWN0aW9uPgorICAgIDx0aXRsZT5NUEVHIFN0cmVhbSBFbWJlZGRlZCwgU2xpY2VkIFZCSSBEYXRhIEZvcm1hdDogTk9ORTwvdGl0bGU+CisgICAgPHBhcmE+VGhlIDxsaW5rIGxpbmtlbmQ9InY0bDItbXBlZy1zdHJlYW0tdmJpLWZtdCI+PGNvbnN0YW50PgorVjRMMl9NUEVHX1NUUkVBTV9WQklfRk1UX05PTkU8L2NvbnN0YW50PjwvbGluaz4gZW1iZWRkZWQgc2xpY2VkIFZCSQorZm9ybWF0IHNoYWxsIGJlIGludGVycHJldGVkIGJ5IGRyaXZlcnMgYXMgYSBjb250cm9sIHRvIGNlYXNlCitlbWJlZGRpbmcgc2xpY2VkIFZCSSBkYXRhIGluIE1QRUcgc3RyZWFtcy4gIE5laXRoZXIgdGhlIGRldmljZSBub3IKK2RyaXZlciBzaGFsbCBpbnNlcnQgImVtcHR5IiBlbWJlZGRlZCBzbGljZWQgVkJJIGRhdGEgcGFja2V0cyBpbiB0aGUKK01QRUcgc3RyZWFtIHdoZW4gdGhpcyBmb3JtYXQgaXMgc2V0LiAgTm8gTVBFRyBzdHJlYW0gZGF0YSBzdHJ1Y3R1cmVzCithcmUgc3BlY2lmaWVkIGZvciB0aGlzIGZvcm1hdC48L3BhcmE+CisgIDwvc2VjdGlvbj4KKworICA8c2VjdGlvbj4KKyAgICA8dGl0bGU+TVBFRyBTdHJlYW0gRW1iZWRkZWQsIFNsaWNlZCBWQkkgRGF0YSBGb3JtYXQ6IElWVFY8L3RpdGxlPgorICAgIDxwYXJhPlRoZSA8bGluayBsaW5rZW5kPSJ2NGwyLW1wZWctc3RyZWFtLXZiaS1mbXQiPjxjb25zdGFudD4KK1Y0TDJfTVBFR19TVFJFQU1fVkJJX0ZNVF9JVlRWPC9jb25zdGFudD48L2xpbms+IGVtYmVkZGVkIHNsaWNlZCBWQkkKK2Zvcm1hdCwgd2hlbiBzdXBwb3J0ZWQsIGluZGljYXRlcyB0byB0aGUgZHJpdmVyIHRvIGVtYmVkIHVwIHRvIDM2CitsaW5lcyBvZiBzbGljZWQgVkJJIGRhdGEgcGVyIGZyYW1lIGluIGFuIE1QRUctMiA8ZW1waGFzaXM+UHJpdmF0ZQorU3RyZWFtIDEgUEVTPC9lbXBoYXNpcz4gcGFja2V0IGVuY2Fwc3VsYXRlZCBpbiBhbiBNUEVHLTIgPGVtcGhhc2lzPgorUHJvZ3JhbSBQYWNrPC9lbXBoYXNpcz4gaW4gdGhlIE1QRUcgc3RyZWFtLjwvcGFyYT4KKworICAgIDxwYXJhPjxlbXBoYXNpcz5IaXN0b3JpY2FsIGNvbnRleHQ8L2VtcGhhc2lzPjogVGhpcyBmb3JtYXQKK3NwZWNpZmljYXRpb24gb3JpZ2luYXRlcyBmcm9tIGEgY3VzdG9tLCBlbWJlZGRlZCwgc2xpY2VkIFZCSSBkYXRhCitmb3JtYXQgdXNlZCBieSB0aGUgPGZpbGVuYW1lPml2dHY8L2ZpbGVuYW1lPiBkcml2ZXIuICBUaGlzIGZvcm1hdAoraGFzIGFscmVhZHkgYmVlbiBpbmZvcm1hbGx5IHNwZWNpZmllZCBpbiB0aGUga2VybmVsIHNvdXJjZXMgaW4gdGhlCitmaWxlIDxmaWxlbmFtZT5Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2N4MjM0MXgvUkVBRE1FLnZiaTwvZmlsZW5hbWU+CisuICBUaGUgbWF4aW11bSBzaXplIG9mIHRoZSBwYXlsb2FkIGFuZCBvdGhlciBhc3BlY3RzIG9mIHRoaXMgZm9ybWF0CithcmUgZHJpdmVuIGJ5IHRoZSBDWDIzNDE1IE1QRUcgZGVjb2RlcidzIGNhcGFiaWxpdGllcyBhbmQgbGltaXRhdGlvbnMKK3dpdGggcmVzcGVjdCB0byBleHRyYWN0aW5nLCBkZWNvZGluZywgYW5kIGRpc3BsYXlpbmcgc2xpY2VkIFZCSSBkYXRhCitlbWJlZGRlZCB3aXRoaW4gYW4gTVBFRyBzdHJlYW0uPC9wYXJhPgorCisgICAgPHBhcmE+VGhpcyBmb3JtYXQncyB1c2UgaXMgPGVtcGhhc2lzPm5vdDwvZW1waGFzaXM+IGV4Y2x1c2l2ZSB0bwordGhlIDxmaWxlbmFtZT5pdnR2PC9maWxlbmFtZT4gZHJpdmVyIDxlbXBoYXNpcz5ub3I8L2VtcGhhc2lzPgorZXhjbHVzaXZlIHRvIENYMjM0MXggZGV2aWNlcywgYXMgdGhlIHNsaWNlZCBWQkkgZGF0YSBwYWNrZXQgaW5zZXJ0aW9uCitpbnRvIHRoZSBNUEVHIHN0cmVhbSBpcyBpbXBsZW1lbnRlZCBpbiBkcml2ZXIgc29mdHdhcmUuICBBdCBsZWFzdCB0aGUKKzxmaWxlbmFtZT5jeDE4PC9maWxlbmFtZT4gZHJpdmVyIHByb3ZpZGVzIHNsaWNlZCBWQkkgZGF0YSBpbnNlcnRpb24KK2ludG8gYW4gTVBFRy0yIFBTIGluIHRoaXMgZm9ybWF0IGFzIHdlbGwuPC9wYXJhPgorCisgICAgPHBhcmE+VGhlIGZvbGxvd2luZyBkZWZpbml0aW9ucyBzcGVjaWZ5IHRoZSBwYXlsb2FkIG9mIHRoZQorTVBFRy0yIDxlbXBoYXNpcz5Qcml2YXRlIFN0cmVhbSAxIFBFUzwvZW1waGFzaXM+IHBhY2tldHMgdGhhdCBjb250YWluCitzbGljZWQgVkJJIGRhdGEgd2hlbiA8bGluayBsaW5rZW5kPSJ2NGwyLW1wZWctc3RyZWFtLXZiaS1mbXQiPgorPGNvbnN0YW50PlY0TDJfTVBFR19TVFJFQU1fVkJJX0ZNVF9JVlRWPC9jb25zdGFudD48L2xpbms+IGlzIHNldC4KKyhUaGUgTVBFRy0yIDxlbXBoYXNpcz5Qcml2YXRlIFN0cmVhbSAxIFBFUzwvZW1waGFzaXM+IHBhY2tldCBoZWFkZXIKK2FuZCBlbmNhcHN1bGF0aW5nIE1QRUctMiA8ZW1waGFzaXM+UHJvZ3JhbSBQYWNrPC9lbXBoYXNpcz4gaGVhZGVyIGFyZQorbm90IGRldGFpbGVkIGhlcmUuICBQbGVhc2UgcmVmZXIgdG8gdGhlIE1QRUctMiBzcGVjaWZpY2F0aW9ucyBmb3IKK2RldGFpbHMgb24gdGhvc2UgcGFja2V0IGhlYWRlcnMuKTwvcGFyYT4KKworICAgIDxwYXJhPlRoZSBwYXlsb2FkIG9mIHRoZSBNUEVHLTIgPGVtcGhhc2lzPlByaXZhdGUgU3RyZWFtIDEgUEVTCis8L2VtcGhhc2lzPiBwYWNrZXRzIHRoYXQgY29udGFpbiBzbGljZWQgVkJJIGRhdGEgaXMgc3BlY2lmaWVkIGJ5CismdjRsMi1tcGVnLXZiaS1mbXQtaXZ0djsuICBUaGUgcGF5bG9hZCBpcyB2YXJpYWJsZQorbGVuZ3RoLCBkZXBlbmRpbmcgb24gdGhlIGFjdHVhbCBudW1iZXIgb2YgbGluZXMgb2Ygc2xpY2VkIFZCSSBkYXRhCitwcmVzZW50IGluIGEgdmlkZW8gZnJhbWUuICBUaGUgcGF5bG9hZCBtYXkgYmUgcGFkZGVkIGF0IHRoZSBlbmQgd2l0aAordW5zcGVjaWZpZWQgZmlsbCBieXRlcyB0byBhbGlnbiB0aGUgZW5kIG9mIHRoZSBwYXlsb2FkIHRvIGEgNC1ieXRlCitib3VuZGFyeS4gIFRoZSBwYXlsb2FkIHNoYWxsIG5ldmVyIGV4Y2VlZCAxNTUyIGJ5dGVzICgyIGZpZWxkcyB3aXRoCisxOCBsaW5lcy9maWVsZCB3aXRoIDQzIGJ5dGVzIG9mIGRhdGEvbGluZSBhbmQgYSA0IGJ5dGUgbWFnaWMgbnVtYmVyKS4KKzwvcGFyYT4KKworICAgIDx0YWJsZSBmcmFtZT0ibm9uZSIgcGd3aWRlPSIxIiBpZD0idjRsMi1tcGVnLXZiaS1mbXQtaXZ0diI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfbXBlZ192YmlfZm10X2l2dHY8L3N0cnVjdG5hbWU+CisgICAgICA8L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSI0Ij4KKwkmY3MtdXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTg8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm1hZ2ljPC9zdHJ1Y3RmaWVsZD5bNF08L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkEgIm1hZ2ljIiBjb25zdGFudCBmcm9tIDx4cmVmCisJICAgIGxpbmtlbmQ9InY0bDItbXBlZy12YmktZm10LWl2dHYtbWFnaWMiIC8+IHRoYXQgaW5kaWNhdGVzCit0aGlzIGlzIGEgdmFsaWQgc2xpY2VkIFZCSSBkYXRhIHBheWxvYWQgYW5kIGFsc28gaW5kaWNhdGVzIHdoaWNoCittZW1iZXIgb2YgdGhlIGFub255bW91cyB1bmlvbiwgPHN0cnVjdGZpZWxkPml0djA8L3N0cnVjdGZpZWxkPiBvcgorPHN0cnVjdGZpZWxkPklUVjA8L3N0cnVjdGZpZWxkPiwgdG8gdXNlIGZvciB0aGUgcGF5bG9hZCBkYXRhLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT51bmlvbjwvZW50cnk+CisJICAgIDxlbnRyeT4oYW5vbnltb3VzKTwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+c3RydWN0IDxsaW5rIGxpbmtlbmQ9InY0bDItbXBlZy12YmktaXR2MCI+CisJICAgICAgPHN0cnVjdG5hbWU+djRsMl9tcGVnX3ZiaV9pdHYwPC9zdHJ1Y3RuYW1lPjwvbGluaz4KKwkgICAgPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5pdHYwPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIHByaW1hcnkgZm9ybSBvZiB0aGUgc2xpY2VkIFZCSSBkYXRhIHBheWxvYWQKK3RoYXQgY29udGFpbnMgYW55d2hlcmUgZnJvbSAxIHRvIDM1IGxpbmVzIG9mIHNsaWNlZCBWQkkgZGF0YS4KK0xpbmUgbWFza3MgYXJlIHByb3ZpZGVkIGluIHRoaXMgZm9ybSBvZiB0aGUgcGF5bG9hZCBpbmRpY2F0aW5nCit3aGljaCBWQkkgbGluZXMgYXJlIHByb3ZpZGVkLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+c3RydWN0IDxsaW5rIGxpbmtlbmQ9InY0bDItbXBlZy12YmktaXR2MC0xIj4KKwkgICAgICA8c3RydWN0bmFtZT52NGwyX21wZWdfdmJpX0lUVjA8L3N0cnVjdG5hbWU+PC9saW5rPgorCSAgICA8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPklUVjA8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5BbiBhbHRlcm5hdGUgZm9ybSBvZiB0aGUgc2xpY2VkIFZCSSBkYXRhIHBheWxvYWQKK3VzZWQgd2hlbiAzNiBsaW5lcyBvZiBzbGljZWQgVkJJIGRhdGEgYXJlIHByZXNlbnQuICBObyBsaW5lIG1hc2tzIGFyZQorcHJvdmlkZWQgaW4gdGhpcyBmb3JtIG9mIHRoZSBwYXlsb2FkOyBhbGwgdmFsaWQgbGluZSBtYXNrIGJpdHMgYXJlCitpbXBsY2l0bHkgc2V0LjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBmcmFtZT0ibm9uZSIgcGd3aWRlPSIxIiBpZD0idjRsMi1tcGVnLXZiaS1mbXQtaXZ0di1tYWdpYyI+CisgICAgICA8dGl0bGU+TWFnaWMgQ29uc3RhbnRzIGZvciAmdjRsMi1tcGVnLXZiaS1mbXQtaXZ0djsKKwk8c3RydWN0ZmllbGQ+bWFnaWM8L3N0cnVjdGZpZWxkPiBmaWVsZDwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1kZWY7CisJPHRoZWFkPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5EZWZpbmVkIFN5bWJvbDwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+VmFsdWU8L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGhlYWQ+CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZCSV9JVlRWX01BR0lDMDwvY29uc3RhbnQ+CisJICAgIDwvZW50cnk+CisJICAgIDxlbnRyeT4iaXR2MCI8L2VudHJ5PgorCSAgICA8ZW50cnk+SW5kaWNhdGVzIHRoZSA8c3RydWN0ZmllbGQ+aXR2MDwvc3RydWN0ZmllbGQ+CittZW1iZXIgb2YgdGhlIHVuaW9uIGluICZ2NGwyLW1wZWctdmJpLWZtdC1pdnR2OyBpcyB2YWxpZC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WQklfSVZUVl9NQUdJQzE8L2NvbnN0YW50PgorCSAgICA8L2VudHJ5PgorCSAgICA8ZW50cnk+IklUVjAiPC9lbnRyeT4KKwkgICAgPGVudHJ5PkluZGljYXRlcyB0aGUgPHN0cnVjdGZpZWxkPklUVjA8L3N0cnVjdGZpZWxkPgorbWVtYmVyIG9mIHRoZSB1bmlvbiBpbiAmdjRsMi1tcGVnLXZiaS1mbXQtaXZ0djsgaXMgdmFsaWQgYW5kCit0aGF0IDM2IGxpbmVzIG9mIHNsaWNlZCBWQkkgZGF0YSBhcmUgcHJlc2VudC48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgZnJhbWU9Im5vbmUiIHBnd2lkZT0iMSIgaWQ9InY0bDItbXBlZy12YmktaXR2MCI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfbXBlZ192YmlfaXR2MDwvc3RydWN0bmFtZT4KKyAgICAgIDwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX2xlMzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmxpbmVtYXNrPC9zdHJ1Y3RmaWVsZD5bMl08L2VudHJ5PgorCSAgICA8ZW50cnk+PHBhcmE+Qml0bWFza3MgaW5kaWNhdGluZyB0aGUgVkJJIHNlcnZpY2UgbGluZXMKK3ByZXNlbnQuICBUaGVzZSA8c3RydWN0ZmllbGQ+bGluZW1hc2s8L3N0cnVjdGZpZWxkPiB2YWx1ZXMgYXJlIHN0b3JlZAoraW4gbGl0dGxlIGVuZGlhbiBieXRlIG9yZGVyIGluIHRoZSBNUEVHIHN0cmVhbS4gIFNvbWUgcmVmZXJlbmNlCis8c3RydWN0ZmllbGQ+bGluZW1hc2s8L3N0cnVjdGZpZWxkPiBiaXQgcG9zaXRpb25zIHdpdGggdGhlaXIKK2NvcnJlc3BvbmRpbmcgVkJJIGxpbmUgbnVtYmVyIGFuZCB2aWRlbyBmaWVsZCBhcmUgZ2l2ZW4gYmVsb3cuCitiPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+IGluZGljYXRlcyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IG9mIGEKKzxzdHJ1Y3RmaWVsZD5saW5lbWFzazwvc3RydWN0ZmllbGQ+IHZhbHVlOjxzY3JlZW4+Cis8c3RydWN0ZmllbGQ+bGluZW1hc2s8L3N0cnVjdGZpZWxkPlswXSBiPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+OgkJbGluZSAgNgkJZmlyc3QgZmllbGQKKzxzdHJ1Y3RmaWVsZD5saW5lbWFzazwvc3RydWN0ZmllbGQ+WzBdIGI8c3Vic2NyaXB0PjE3PC9zdWJzY3JpcHQ+OgkJbGluZSAyMwkJZmlyc3QgZmllbGQKKzxzdHJ1Y3RmaWVsZD5saW5lbWFzazwvc3RydWN0ZmllbGQ+WzBdIGI8c3Vic2NyaXB0PjE4PC9zdWJzY3JpcHQ+OgkJbGluZSAgNgkJc2Vjb25kIGZpZWxkCis8c3RydWN0ZmllbGQ+bGluZW1hc2s8L3N0cnVjdGZpZWxkPlswXSBiPHN1YnNjcmlwdD4zMTwvc3Vic2NyaXB0PjoJCWxpbmUgMTkJCXNlY29uZCBmaWVsZAorPHN0cnVjdGZpZWxkPmxpbmVtYXNrPC9zdHJ1Y3RmaWVsZD5bMV0gYjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjoJCWxpbmUgMjAJCXNlY29uZCBmaWVsZAorPHN0cnVjdGZpZWxkPmxpbmVtYXNrPC9zdHJ1Y3RmaWVsZD5bMV0gYjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjoJCWxpbmUgMjMJCXNlY29uZCBmaWVsZAorPHN0cnVjdGZpZWxkPmxpbmVtYXNrPC9zdHJ1Y3RmaWVsZD5bMV0gYjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0Pi1iPHN1YnNjcmlwdD4zMTwvc3Vic2NyaXB0PjoJdW51c2VkIGFuZCBzZXQgdG8gMDwvc2NyZWVuPjwvcGFyYT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+c3RydWN0IDxsaW5rIGxpbmtlbmQ9InY0bDItbXBlZy12YmktaXR2MC1saW5lIj4KKwkgICAgICA8c3RydWN0bmFtZT52NGwyX21wZWdfdmJpX2l0djBfbGluZTwvc3RydWN0bmFtZT48L2xpbms+CisJICAgIDwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+bGluZTwvc3RydWN0ZmllbGQ+WzM1XTwvZW50cnk+CisJICAgIDxlbnRyeT5UaGlzIGlzIGEgdmFyaWFibGUgbGVuZ3RoIGFycmF5IHRoYXQgaG9sZHMgZnJvbSAxCit0byAzNSBsaW5lcyBvZiBzbGljZWQgVkJJIGRhdGEuICBUaGUgc2xpY2VkIFZCSSBkYXRhIGxpbmVzIHByZXNlbnQKK2NvcnJlc3BvbmQgdG8gdGhlIGJpdHMgc2V0IGluIHRoZSA8c3RydWN0ZmllbGQ+bGluZW1hc2s8L3N0cnVjdGZpZWxkPgorYXJyYXksIHN0YXJ0aW5nIGZyb20gYjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PiBvZiA8c3RydWN0ZmllbGQ+CitsaW5lbWFzazwvc3RydWN0ZmllbGQ+WzBdIHVwIHRocm91Z2ggYjxzdWJzY3JpcHQ+MzE8L3N1YnNjcmlwdD4gb2YKKzxzdHJ1Y3RmaWVsZD5saW5lbWFzazwvc3RydWN0ZmllbGQ+WzBdLCBhbmQgZnJvbSBiPHN1YnNjcmlwdD4wCis8L3N1YnNjcmlwdD4gb2YgPHN0cnVjdGZpZWxkPmxpbmVtYXNrPC9zdHJ1Y3RmaWVsZD5bMV0gdXAgdGhyb3VnaCBiCis8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD4gb2YgPHN0cnVjdGZpZWxkPmxpbmVtYXNrPC9zdHJ1Y3RmaWVsZD5bMV0uCis8c3RydWN0ZmllbGQ+bGluZTwvc3RydWN0ZmllbGQ+WzBdIGNvcnJlc3BvbmRzIHRvIHRoZSBmaXJzdCBiaXQKK2ZvdW5kIHNldCBpbiB0aGUgPHN0cnVjdGZpZWxkPmxpbmVtYXNrPC9zdHJ1Y3RmaWVsZD4gYXJyYXksCis8c3RydWN0ZmllbGQ+bGluZTwvc3RydWN0ZmllbGQ+WzFdIGNvcnJlc3BvbmRzIHRvIHRoZSBzZWNvbmQgYml0Citmb3VuZCBzZXQgaW4gdGhlIDxzdHJ1Y3RmaWVsZD5saW5lbWFzazwvc3RydWN0ZmllbGQ+IGFycmF5LCBldGMuCitJZiBubyA8c3RydWN0ZmllbGQ+bGluZW1hc2s8L3N0cnVjdGZpZWxkPiBhcnJheSBiaXRzIGFyZSBzZXQsIHRoZW4KKzxzdHJ1Y3RmaWVsZD5saW5lPC9zdHJ1Y3RmaWVsZD5bMF0gbWF5IGNvbnRhaW4gb25lIGxpbmUgb2YKK3Vuc3BlY2lmaWVkIGRhdGEgdGhhdCBzaG91bGQgYmUgaWdub3JlZCBieSBhcHBsaWNhdGlvbnMuPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIGZyYW1lPSJub25lIiBwZ3dpZGU9IjEiIGlkPSJ2NGwyLW1wZWctdmJpLWl0djAtMSI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfbXBlZ192YmlfSVRWMDwvc3RydWN0bmFtZT4KKyAgICAgIDwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5zdHJ1Y3QgPGxpbmsgbGlua2VuZD0idjRsMi1tcGVnLXZiaS1pdHYwLWxpbmUiPgorCSAgICAgIDxzdHJ1Y3RuYW1lPnY0bDJfbXBlZ192YmlfaXR2MF9saW5lPC9zdHJ1Y3RuYW1lPjwvbGluaz4KKwkgICAgPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5saW5lPC9zdHJ1Y3RmaWVsZD5bMzZdPC9lbnRyeT4KKwkgICAgPGVudHJ5PkEgZml4ZWQgbGVuZ3RoIGFycmF5IG9mIDM2IGxpbmVzIG9mIHNsaWNlZCBWQkkKK2RhdGEuICA8c3RydWN0ZmllbGQ+bGluZTwvc3RydWN0ZmllbGQ+WzBdIHRocm91Z2ggPHN0cnVjdGZpZWxkPmxpbmUKKzwvc3RydWN0ZmllbGQ+WzE3XSBjb3JyZXNwb25kIHRvIGxpbmVzIDYgdGhyb3VnaCAyMyBvZiB0aGUKK2ZpcnN0IGZpZWxkLiAgPHN0cnVjdGZpZWxkPmxpbmU8L3N0cnVjdGZpZWxkPlsxOF0gdGhyb3VnaAorPHN0cnVjdGZpZWxkPmxpbmU8L3N0cnVjdGZpZWxkPlszNV0gY29ycmVzcG9uZHMgdG8gbGluZXMgNgordGhyb3VnaCAyMyBvZiB0aGUgc2Vjb25kIGZpZWxkLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBmcmFtZT0ibm9uZSIgcGd3aWRlPSIxIiBpZD0idjRsMi1tcGVnLXZiaS1pdHYwLWxpbmUiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX21wZWdfdmJpX2l0djBfbGluZTwvc3RydWN0bmFtZT4KKyAgICAgIDwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3U4PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5pZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkEgbGluZSBpZGVudGlmaWVyIHZhbHVlIGZyb20KKzx4cmVmIGxpbmtlbmQ9IklUVjAtTGluZS1JZGVudGlmaWVyLUNvbnN0YW50cyIgLz4gdGhhdCBpbmRpY2F0ZXMKK3RoZSB0eXBlIG9mIHNsaWNlZCBWQkkgZGF0YSBzdG9yZWQgb24gdGhpcyBsaW5lLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3U4PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5kYXRhPC9zdHJ1Y3RmaWVsZD5bNDJdPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBzbGljZWQgVkJJIGRhdGEgZm9yIHRoZSBsaW5lLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBmcmFtZT0ibm9uZSIgcGd3aWRlPSIxIiBpZD0iSVRWMC1MaW5lLUlkZW50aWZpZXItQ29uc3RhbnRzIj4KKyAgICAgIDx0aXRsZT5MaW5lIElkZW50aWZpZXJzIGZvciBzdHJ1Y3QgPGxpbmsKKyAgICAgIGxpbmtlbmQ9InY0bDItbXBlZy12YmktaXR2MC1saW5lIj48c3RydWN0bmFtZT4KK3Y0bDJfbXBlZ192YmlfaXR2MF9saW5lPC9zdHJ1Y3RuYW1lPjwvbGluaz4gPHN0cnVjdGZpZWxkPmlkCis8L3N0cnVjdGZpZWxkPiBmaWVsZDwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1kZWY7CisJPHRoZWFkPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5EZWZpbmVkIFN5bWJvbDwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+VmFsdWU8L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGhlYWQ+CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9NUEVHX1ZCSV9JVlRWX1RFTEVURVhUX0I8L2NvbnN0YW50PgorCSAgICA8L2VudHJ5PgorCSAgICA8ZW50cnk+MTwvZW50cnk+CisJICAgIDxlbnRyeT5SZWZlciB0byA8bGluayBsaW5rZW5kPSJ2Ymktc2VydmljZXMyIj4KK1NsaWNlZCBWQkkgc2VydmljZXM8L2xpbms+IGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBsaW5lIHBheWxvYWQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVkJJX0lWVFZfQ0FQVElPTl81MjU8L2NvbnN0YW50PgorCSAgICA8L2VudHJ5PgorCSAgICA8ZW50cnk+NDwvZW50cnk+CisJICAgIDxlbnRyeT5SZWZlciB0byA8bGluayBsaW5rZW5kPSJ2Ymktc2VydmljZXMyIj4KK1NsaWNlZCBWQkkgc2VydmljZXM8L2xpbms+IGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBsaW5lIHBheWxvYWQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01QRUdfVkJJX0lWVFZfV1NTXzYyNTwvY29uc3RhbnQ+CisJICAgIDwvZW50cnk+CisJICAgIDxlbnRyeT41PC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlZmVyIHRvIDxsaW5rIGxpbmtlbmQ9InZiaS1zZXJ2aWNlczIiPgorU2xpY2VkIFZCSSBzZXJ2aWNlczwvbGluaz4gZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGxpbmUgcGF5bG9hZC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTVBFR19WQklfSVZUVl9WUFM8L2NvbnN0YW50PgorCSAgICA8L2VudHJ5PgorCSAgICA8ZW50cnk+NzwvZW50cnk+CisJICAgIDxlbnRyeT5SZWZlciB0byA8bGluayBsaW5rZW5kPSJ2Ymktc2VydmljZXMyIj4KK1NsaWNlZCBWQkkgc2VydmljZXM8L2xpbms+IGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBsaW5lIHBheWxvYWQuPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgIDwvc2VjdGlvbj4KKyAgPC9zZWN0aW9uPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9kZXYtc3ViZGV2LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZGV2LXN1YmRldi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGYwYmE1OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZGV2LXN1YmRldi54bWwKQEAgLTAsMCArMSw0ODQgQEAKKyAgPHRpdGxlPlN1Yi1kZXZpY2UgSW50ZXJmYWNlPC90aXRsZT4KKworICA8bm90ZT4KKyAgICA8dGl0bGU+RXhwZXJpbWVudGFsPC90aXRsZT4KKyAgICA8cGFyYT5UaGlzIGlzIGFuIDxsaW5rIGxpbmtlbmQ9ImV4cGVyaW1lbnRhbCI+ZXhwZXJpbWVudGFsPC9saW5rPgorICAgIGludGVyZmFjZSBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLjwvcGFyYT4KKyAgPC9ub3RlPgorCisgIDxwYXJhPlRoZSBjb21wbGV4IG5hdHVyZSBvZiBWNEwyIGRldmljZXMsIHdoZXJlIGhhcmR3YXJlIGlzIG9mdGVuIG1hZGUgb2YKKyAgc2V2ZXJhbCBpbnRlZ3JhdGVkIGNpcmN1aXRzIHRoYXQgbmVlZCB0byBpbnRlcmFjdCB3aXRoIGVhY2ggb3RoZXIgaW4gYQorICBjb250cm9sbGVkIHdheSwgbGVhZHMgdG8gY29tcGxleCBWNEwyIGRyaXZlcnMuIFRoZSBkcml2ZXJzIHVzdWFsbHkgcmVmbGVjdAorICB0aGUgaGFyZHdhcmUgbW9kZWwgaW4gc29mdHdhcmUsIGFuZCBtb2RlbCB0aGUgZGlmZmVyZW50IGhhcmR3YXJlIGNvbXBvbmVudHMKKyAgYXMgc29mdHdhcmUgYmxvY2tzIGNhbGxlZCBzdWItZGV2aWNlcy48L3BhcmE+CisKKyAgPHBhcmE+VjRMMiBzdWItZGV2aWNlcyBhcmUgdXN1YWxseSBrZXJuZWwtb25seSBvYmplY3RzLiBJZiB0aGUgVjRMMiBkcml2ZXIKKyAgaW1wbGVtZW50cyB0aGUgbWVkaWEgZGV2aWNlIEFQSSwgdGhleSB3aWxsIGF1dG9tYXRpY2FsbHkgaW5oZXJpdCBmcm9tIG1lZGlhCisgIGVudGl0aWVzLiBBcHBsaWNhdGlvbnMgd2lsbCBiZSBhYmxlIHRvIGVudW1lcmF0ZSB0aGUgc3ViLWRldmljZXMgYW5kIGRpc2NvdmVyCisgIHRoZSBoYXJkd2FyZSB0b3BvbG9neSB1c2luZyB0aGUgbWVkaWEgZW50aXRpZXMsIHBhZHMgYW5kIGxpbmtzIGVudW1lcmF0aW9uCisgIEFQSS48L3BhcmE+CisKKyAgPHBhcmE+SW4gYWRkaXRpb24gdG8gbWFrZSBzdWItZGV2aWNlcyBkaXNjb3ZlcmFibGUsIGRyaXZlcnMgY2FuIGFsc28gY2hvb3NlCisgIHRvIG1ha2UgdGhlbSBkaXJlY3RseSBjb25maWd1cmFibGUgYnkgYXBwbGljYXRpb25zLiBXaGVuIGJvdGggdGhlIHN1Yi1kZXZpY2UKKyAgZHJpdmVyIGFuZCB0aGUgVjRMMiBkZXZpY2UgZHJpdmVyIHN1cHBvcnQgdGhpcywgc3ViLWRldmljZXMgd2lsbCBmZWF0dXJlIGEKKyAgY2hhcmFjdGVyIGRldmljZSBub2RlIG9uIHdoaWNoIGlvY3RscyBjYW4gYmUgY2FsbGVkIHRvCisgIDxpdGVtaXplZGxpc3Q+CisgICAgPGxpc3RpdGVtPjxwYXJhPnF1ZXJ5LCByZWFkIGFuZCB3cml0ZSBzdWItZGV2aWNlcyBjb250cm9sczwvcGFyYT48L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT48cGFyYT5zdWJzY3JpYmUgYW5kIHVuc3Vic2NyaWJlIHRvIGV2ZW50cyBhbmQgcmV0cmlldmUgdGhlbTwvcGFyYT48L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT48cGFyYT5uZWdvdGlhdGUgaW1hZ2UgZm9ybWF0cyBvbiBpbmRpdmlkdWFsIHBhZHM8L3BhcmE+PC9saXN0aXRlbT4KKyAgPC9pdGVtaXplZGxpc3Q+CisgIDwvcGFyYT4KKworICA8cGFyYT5TdWItZGV2aWNlIGNoYXJhY3RlciBkZXZpY2Ugbm9kZXMsIGNvbnZlbnRpb25hbGx5IG5hbWVkCisgIDxmaWxlbmFtZT4vZGV2L3Y0bC1zdWJkZXYqPC9maWxlbmFtZT4sIHVzZSBtYWpvciBudW1iZXIgODEuPC9wYXJhPgorCisgIDxzZWN0aW9uPgorICAgIDx0aXRsZT5Db250cm9sczwvdGl0bGU+CisgICAgPHBhcmE+TW9zdCBWNEwyIGNvbnRyb2xzIGFyZSBpbXBsZW1lbnRlZCBieSBzdWItZGV2aWNlIGhhcmR3YXJlLiBEcml2ZXJzCisgICAgdXN1YWxseSBtZXJnZSBhbGwgY29udHJvbHMgYW5kIGV4cG9zZSB0aGVtIHRocm91Z2ggdmlkZW8gZGV2aWNlIG5vZGVzLgorICAgIEFwcGxpY2F0aW9ucyBjYW4gY29udHJvbCBhbGwgc3ViLWRldmljZXMgdGhyb3VnaCBhIHNpbmdsZSBpbnRlcmZhY2UuPC9wYXJhPgorCisgICAgPHBhcmE+Q29tcGxleCBkZXZpY2VzIHNvbWV0aW1lcyBpbXBsZW1lbnQgdGhlIHNhbWUgY29udHJvbCBpbiBkaWZmZXJlbnQKKyAgICBwaWVjZXMgb2YgaGFyZHdhcmUuIFRoaXMgc2l0dWF0aW9uIGlzIGNvbW1vbiBpbiBlbWJlZGRlZCBwbGF0Zm9ybXMsIHdoZXJlCisgICAgYm90aCBzZW5zb3JzIGFuZCBpbWFnZSBwcm9jZXNzaW5nIGhhcmR3YXJlIGltcGxlbWVudCBpZGVudGljYWwgZnVuY3Rpb25zLAorICAgIHN1Y2ggYXMgY29udHJhc3QgYWRqdXN0bWVudCwgd2hpdGUgYmFsYW5jZSBvciBmYXVsdHkgcGl4ZWxzIGNvcnJlY3Rpb24uIEFzCisgICAgdGhlIFY0TDIgY29udHJvbHMgQVBJIGRvZXNuJ3Qgc3VwcG9ydCBzZXZlcmFsIGlkZW50aWNhbCBjb250cm9scyBpbiBhIHNpbmdsZQorICAgIGRldmljZSwgYWxsIGJ1dCBvbmUgb2YgdGhlIGlkZW50aWNhbCBjb250cm9scyBhcmUgaGlkZGVuLjwvcGFyYT4KKworICAgIDxwYXJhPkFwcGxpY2F0aW9ucyBjYW4gYWNjZXNzIHRob3NlIGhpZGRlbiBjb250cm9scyB0aHJvdWdoIHRoZSBzdWItZGV2aWNlCisgICAgbm9kZSB3aXRoIHRoZSBWNEwyIGNvbnRyb2wgQVBJIGRlc2NyaWJlZCBpbiA8eHJlZiBsaW5rZW5kPSJjb250cm9sIiAvPi4gVGhlCisgICAgaW9jdGxzIGJlaGF2ZSBpZGVudGljYWxseSBhcyB3aGVuIGlzc3VlZCBvbiBWNEwyIGRldmljZSBub2Rlcywgd2l0aCB0aGUKKyAgICBleGNlcHRpb24gdGhhdCB0aGV5IGRlYWwgb25seSB3aXRoIGNvbnRyb2xzIGltcGxlbWVudGVkIGluIHRoZSBzdWItZGV2aWNlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPkRlcGVuZGluZyBvbiB0aGUgZHJpdmVyLCB0aG9zZSBjb250cm9scyBtaWdodCBhbHNvIGJlIGV4cG9zZWQgdGhyb3VnaAorICAgIG9uZSAob3Igc2V2ZXJhbCkgVjRMMiBkZXZpY2Ugbm9kZXMuPC9wYXJhPgorICA8L3NlY3Rpb24+CisKKyAgPHNlY3Rpb24+CisgICAgPHRpdGxlPkV2ZW50czwvdGl0bGU+CisgICAgPHBhcmE+VjRMMiBzdWItZGV2aWNlcyBjYW4gbm90aWZ5IGFwcGxpY2F0aW9ucyBvZiBldmVudHMgYXMgZGVzY3JpYmVkIGluCisgICAgPHhyZWYgbGlua2VuZD0iZXZlbnQiIC8+LiBUaGUgQVBJIGJlaGF2ZXMgaWRlbnRpY2FsbHkgYXMgd2hlbiB1c2VkIG9uIFY0TDIKKyAgICBkZXZpY2Ugbm9kZXMsIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IGl0IG9ubHkgZGVhbHMgd2l0aCBldmVudHMgZ2VuZXJhdGVkIGJ5CisgICAgdGhlIHN1Yi1kZXZpY2UuIERlcGVuZGluZyBvbiB0aGUgZHJpdmVyLCB0aG9zZSBldmVudHMgbWlnaHQgYWxzbyBiZSByZXBvcnRlZAorICAgIG9uIG9uZSAob3Igc2V2ZXJhbCkgVjRMMiBkZXZpY2Ugbm9kZXMuPC9wYXJhPgorICA8L3NlY3Rpb24+CisKKyAgPHNlY3Rpb24gaWQ9InBhZC1sZXZlbC1mb3JtYXRzIj4KKyAgICA8dGl0bGU+UGFkLWxldmVsIEZvcm1hdHM8L3RpdGxlPgorCisgICAgPHdhcm5pbmc+PHBhcmE+UGFkLWxldmVsIGZvcm1hdHMgYXJlIG9ubHkgYXBwbGljYWJsZSB0byB2ZXJ5IGNvbXBsZXggZGV2aWNlIHRoYXQKKyAgICBuZWVkIHRvIGV4cG9zZSBsb3ctbGV2ZWwgZm9ybWF0IGNvbmZpZ3VyYXRpb24gdG8gdXNlciBzcGFjZS4gR2VuZXJpYyBWNEwyCisgICAgYXBwbGljYXRpb25zIGRvIDxlbXBoYXNpcz5ub3Q8L2VtcGhhc2lzPiBuZWVkIHRvIHVzZSB0aGUgQVBJIGRlc2NyaWJlZCBpbgorICAgIHRoaXMgc2VjdGlvbi48L3BhcmE+PC93YXJuaW5nPgorCisgICAgPG5vdGU+PHBhcmE+Rm9yIHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiwgdGhlIHRlcm0KKyAgICA8d29yZGFzd29yZD5mb3JtYXQ8L3dvcmRhc3dvcmQ+IG1lYW5zIHRoZSBjb21iaW5hdGlvbiBvZiBtZWRpYSBidXMgZGF0YQorICAgIGZvcm1hdCwgZnJhbWUgd2lkdGggYW5kIGZyYW1lIGhlaWdodC48L3BhcmE+PC9ub3RlPgorCisgICAgPHBhcmE+SW1hZ2UgZm9ybWF0cyBhcmUgdHlwaWNhbGx5IG5lZ290aWF0ZWQgb24gdmlkZW8gY2FwdHVyZSBhbmQKKyAgICBvdXRwdXQgZGV2aWNlcyB1c2luZyB0aGUgZm9ybWF0IGFuZCA8bGluaworICAgIGxpbmtlbmQ9InZpZGlvYy1zdWJkZXYtZy1zZWxlY3Rpb24iPnNlbGVjdGlvbjwvbGluaz4gaW9jdGxzLiBUaGUKKyAgICBkcml2ZXIgaXMgcmVzcG9uc2libGUgZm9yIGNvbmZpZ3VyaW5nIGV2ZXJ5IGJsb2NrIGluIHRoZSB2aWRlbworICAgIHBpcGVsaW5lIGFjY29yZGluZyB0byB0aGUgcmVxdWVzdGVkIGZvcm1hdCBhdCB0aGUgcGlwZWxpbmUgaW5wdXQKKyAgICBhbmQvb3Igb3V0cHV0LjwvcGFyYT4KKworICAgIDxwYXJhPkZvciBjb21wbGV4IGRldmljZXMsIHN1Y2ggYXMgb2Z0ZW4gZm91bmQgaW4gZW1iZWRkZWQgc3lzdGVtcywKKyAgICBpZGVudGljYWwgaW1hZ2Ugc2l6ZXMgYXQgdGhlIG91dHB1dCBvZiBhIHBpcGVsaW5lIGNhbiBiZSBhY2hpZXZlZCB1c2luZworICAgIGRpZmZlcmVudCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucy4gT25lIHN1Y2ggZXhhbXBsZSBpcyBzaG93biBvbgorICAgIDx4cmVmIGxpbmtlbmQ9InBpcGVsaW5lLXNjYWxpbmciIC8+LCB3aGVyZQorICAgIGltYWdlIHNjYWxpbmcgY2FuIGJlIHBlcmZvcm1lZCBvbiBib3RoIHRoZSB2aWRlbyBzZW5zb3IgYW5kIHRoZSBob3N0IGltYWdlCisgICAgcHJvY2Vzc2luZyBoYXJkd2FyZS48L3BhcmE+CisKKyAgICA8ZmlndXJlIGlkPSJwaXBlbGluZS1zY2FsaW5nIj4KKyAgICAgIDx0aXRsZT5JbWFnZSBGb3JtYXQgTmVnb3RpYXRpb24gb24gUGlwZWxpbmVzPC90aXRsZT4KKyAgICAgIDxtZWRpYW9iamVjdD4KKwk8aW1hZ2VvYmplY3Q+CisJICA8aW1hZ2VkYXRhIGZpbGVyZWY9InBpcGVsaW5lLnBkZiIgZm9ybWF0PSJQUyIgLz4KKwk8L2ltYWdlb2JqZWN0PgorCTxpbWFnZW9iamVjdD4KKwkgIDxpbWFnZWRhdGEgZmlsZXJlZj0icGlwZWxpbmUucG5nIiBmb3JtYXQ9IlBORyIgLz4KKwk8L2ltYWdlb2JqZWN0PgorCTx0ZXh0b2JqZWN0PgorCSAgPHBocmFzZT5IaWdoIHF1YWxpdHkgYW5kIGhpZ2ggc3BlZWQgcGlwZWxpbmUgY29uZmlndXJhdGlvbjwvcGhyYXNlPgorCTwvdGV4dG9iamVjdD4KKyAgICAgIDwvbWVkaWFvYmplY3Q+CisgICAgPC9maWd1cmU+CisKKyAgICA8cGFyYT5UaGUgc2Vuc29yIHNjYWxlciBpcyB1c3VhbGx5IG9mIGxlc3MgcXVhbGl0eSB0aGFuIHRoZSBob3N0IHNjYWxlciwgYnV0CisgICAgc2NhbGluZyBvbiB0aGUgc2Vuc29yIGlzIHJlcXVpcmVkIHRvIGFjaGlldmUgaGlnaGVyIGZyYW1lIHJhdGVzLiBEZXBlbmRpbmcKKyAgICBvbiB0aGUgdXNlIGNhc2UgKHF1YWxpdHkgdnMuIHNwZWVkKSwgdGhlIHBpcGVsaW5lIG11c3QgYmUgY29uZmlndXJlZAorICAgIGRpZmZlcmVudGx5LiBBcHBsaWNhdGlvbnMgbmVlZCB0byBjb25maWd1cmUgdGhlIGZvcm1hdHMgYXQgZXZlcnkgcG9pbnQgaW4KKyAgICB0aGUgcGlwZWxpbmUgZXhwbGljaXRseS48L3BhcmE+CisKKyAgICA8cGFyYT5Ecml2ZXJzIHRoYXQgaW1wbGVtZW50IHRoZSA8bGluayBsaW5rZW5kPSJtZWRpYS1jb250cm9sbGVyLWludHJvIj5tZWRpYQorICAgIEFQSTwvbGluaz4gY2FuIGV4cG9zZSBwYWQtbGV2ZWwgaW1hZ2UgZm9ybWF0IGNvbmZpZ3VyYXRpb24gdG8gYXBwbGljYXRpb25zLgorICAgIFdoZW4gdGhleSBkbywgYXBwbGljYXRpb25zIGNhbiB1c2UgdGhlICZWSURJT0MtU1VCREVWLUctRk1UOyBhbmQKKyAgICAmVklESU9DLVNVQkRFVi1TLUZNVDsgaW9jdGxzLiB0byBuZWdvdGlhdGUgZm9ybWF0cyBvbiBhIHBlci1wYWQgYmFzaXMuPC9wYXJhPgorCisgICAgPHBhcmE+QXBwbGljYXRpb25zIGFyZSByZXNwb25zaWJsZSBmb3IgY29uZmlndXJpbmcgY29oZXJlbnQgcGFyYW1ldGVycyBvbgorICAgIHRoZSB3aG9sZSBwaXBlbGluZSBhbmQgbWFraW5nIHN1cmUgdGhhdCBjb25uZWN0ZWQgcGFkcyBoYXZlIGNvbXBhdGlibGUKKyAgICBmb3JtYXRzLiBUaGUgcGlwZWxpbmUgaXMgY2hlY2tlZCBmb3IgZm9ybWF0cyBtaXNtYXRjaCBhdCAmVklESU9DLVNUUkVBTU9OOworICAgIHRpbWUsIGFuZCBhbiAmRVBJUEU7IGlzIHRoZW4gcmV0dXJuZWQgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMKKyAgICBpbnZhbGlkLjwvcGFyYT4KKworICAgIDxwYXJhPlBhZC1sZXZlbCBpbWFnZSBmb3JtYXQgY29uZmlndXJhdGlvbiBzdXBwb3J0IGNhbiBiZSB0ZXN0ZWQgYnkgY2FsbGluZworICAgIHRoZSAmVklESU9DLVNVQkRFVi1HLUZNVDsgaW9jdGwgb24gcGFkIDAuIElmIHRoZSBkcml2ZXIgcmV0dXJucyBhbiAmRUlOVkFMOworICAgIHBhZC1sZXZlbCBmb3JtYXQgY29uZmlndXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzdWItZGV2aWNlLjwvcGFyYT4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPkZvcm1hdCBOZWdvdGlhdGlvbjwvdGl0bGU+CisKKyAgICAgIDxwYXJhPkFjY2VwdGFibGUgZm9ybWF0cyBvbiBwYWRzIGNhbiAoYW5kIHVzdWFsbHkgZG8pIGRlcGVuZCBvbiBhIG51bWJlcgorICAgICAgb2YgZXh0ZXJuYWwgcGFyYW1ldGVycywgc3VjaCBhcyBmb3JtYXRzIG9uIG90aGVyIHBhZHMsIGFjdGl2ZSBsaW5rcywgb3IKKyAgICAgIGV2ZW4gY29udHJvbHMuIEZpbmRpbmcgYSBjb21iaW5hdGlvbiBvZiBmb3JtYXRzIG9uIGFsbCBwYWRzIGluIGEgdmlkZW8KKyAgICAgIHBpcGVsaW5lLCBhY2NlcHRhYmxlIHRvIGJvdGggYXBwbGljYXRpb24gYW5kIGRyaXZlciwgY2FuJ3QgcmVseSBvbiBmb3JtYXRzCisgICAgICBlbnVtZXJhdGlvbiBvbmx5LiBBIGZvcm1hdCBuZWdvdGlhdGlvbiBtZWNoYW5pc20gaXMgcmVxdWlyZWQuPC9wYXJhPgorCisgICAgICA8cGFyYT5DZW50cmFsIHRvIHRoZSBmb3JtYXQgbmVnb3RpYXRpb24gbWVjaGFuaXNtIGFyZSB0aGUgZ2V0L3NldCBmb3JtYXQKKyAgICAgIG9wZXJhdGlvbnMuIFdoZW4gY2FsbGVkIHdpdGggdGhlIDxzdHJ1Y3RmaWVsZD53aGljaDwvc3RydWN0ZmllbGQ+IGFyZ3VtZW50CisgICAgICBzZXQgdG8gPGNvbnN0YW50PlY0TDJfU1VCREVWX0ZPUk1BVF9UUlk8L2NvbnN0YW50PiwgdGhlCisgICAgICAmVklESU9DLVNVQkRFVi1HLUZNVDsgYW5kICZWSURJT0MtU1VCREVWLVMtRk1UOyBpb2N0bHMgb3BlcmF0ZSBvbiBhIHNldCBvZgorICAgICAgZm9ybWF0cyBwYXJhbWV0ZXJzIHRoYXQgYXJlIG5vdCBjb25uZWN0ZWQgdG8gdGhlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uCisgICAgICBNb2RpZnlpbmcgdGhvc2UgJ3RyeScgZm9ybWF0cyBsZWF2ZXMgdGhlIGRldmljZSBzdGF0ZSB1bnRvdWNoZWQgKHRoaXMKKyAgICAgIGFwcGxpZXMgdG8gYm90aCB0aGUgc29mdHdhcmUgc3RhdGUgc3RvcmVkIGluIHRoZSBkcml2ZXIgYW5kIHRoZSBoYXJkd2FyZQorICAgICAgc3RhdGUgc3RvcmVkIGluIHRoZSBkZXZpY2UgaXRzZWxmKS48L3BhcmE+CisKKyAgICAgIDxwYXJhPldoaWxlIG5vdCBrZXB0IGFzIHBhcnQgb2YgdGhlIGRldmljZSBzdGF0ZSwgdHJ5IGZvcm1hdHMgYXJlIHN0b3JlZAorICAgICAgaW4gdGhlIHN1Yi1kZXZpY2UgZmlsZSBoYW5kbGVzLiBBICZWSURJT0MtU1VCREVWLUctRk1UOyBjYWxsIHdpbGwgcmV0dXJuCisgICAgICB0aGUgbGFzdCB0cnkgZm9ybWF0IHNldCA8ZW1waGFzaXM+b24gdGhlIHNhbWUgc3ViLWRldmljZSBmaWxlCisgICAgICBoYW5kbGU8L2VtcGhhc2lzPi4gU2V2ZXJhbCBhcHBsaWNhdGlvbnMgcXVlcnlpbmcgdGhlIHNhbWUgc3ViLWRldmljZSBhdAorICAgICAgdGhlIHNhbWUgdGltZSB3aWxsIHRodXMgbm90IGludGVyYWN0IHdpdGggZWFjaCBvdGhlci48L3BhcmE+CisKKyAgICAgIDxwYXJhPlRvIGZpbmQgb3V0IHdoZXRoZXIgYSBwYXJ0aWN1bGFyIGZvcm1hdCBpcyBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZSwKKyAgICAgIGFwcGxpY2F0aW9ucyB1c2UgdGhlICZWSURJT0MtU1VCREVWLVMtRk1UOyBpb2N0bC4gRHJpdmVycyB2ZXJpZnkgYW5kLCBpZgorICAgICAgbmVlZGVkLCBjaGFuZ2UgdGhlIHJlcXVlc3RlZCA8c3RydWN0ZmllbGQ+Zm9ybWF0PC9zdHJ1Y3RmaWVsZD4gYmFzZWQgb24KKyAgICAgIGRldmljZSByZXF1aXJlbWVudHMgYW5kIHJldHVybiB0aGUgcG9zc2libHkgbW9kaWZpZWQgdmFsdWUuIEFwcGxpY2F0aW9ucworICAgICAgY2FuIHRoZW4gY2hvb3NlIHRvIHRyeSBhIGRpZmZlcmVudCBmb3JtYXQgb3IgYWNjZXB0IHRoZSByZXR1cm5lZCB2YWx1ZSBhbmQKKyAgICAgIGNvbnRpbnVlLjwvcGFyYT4KKworICAgICAgPHBhcmE+Rm9ybWF0cyByZXR1cm5lZCBieSB0aGUgZHJpdmVyIGR1cmluZyBhIG5lZ290aWF0aW9uIGl0ZXJhdGlvbiBhcmUKKyAgICAgIGd1YXJhbnRlZWQgdG8gYmUgc3VwcG9ydGVkIGJ5IHRoZSBkZXZpY2UuIEluIHBhcnRpY3VsYXIsIGRyaXZlcnMgZ3VhcmFudGVlCisgICAgICB0aGF0IGEgcmV0dXJuZWQgZm9ybWF0IHdpbGwgbm90IGJlIGZ1cnRoZXIgY2hhbmdlZCBpZiBwYXNzZWQgdG8gYW4KKyAgICAgICZWSURJT0MtU1VCREVWLVMtRk1UOyBjYWxsIGFzLWlzIChhcyBsb25nIGFzIGV4dGVybmFsIHBhcmFtZXRlcnMsIHN1Y2ggYXMKKyAgICAgIGZvcm1hdHMgb24gb3RoZXIgcGFkcyBvciBsaW5rcycgY29uZmlndXJhdGlvbiBhcmUgbm90IGNoYW5nZWQpLjwvcGFyYT4KKworICAgICAgPHBhcmE+RHJpdmVycyBhdXRvbWF0aWNhbGx5IHByb3BhZ2F0ZSBmb3JtYXRzIGluc2lkZSBzdWItZGV2aWNlcy4gV2hlbiBhCisgICAgICB0cnkgb3IgYWN0aXZlIGZvcm1hdCBpcyBzZXQgb24gYSBwYWQsIGNvcnJlc3BvbmRpbmcgZm9ybWF0cyBvbiBvdGhlciBwYWRzCisgICAgICBvZiB0aGUgc2FtZSBzdWItZGV2aWNlIGNhbiBiZSBtb2RpZmllZCBieSB0aGUgZHJpdmVyLiBEcml2ZXJzIGFyZSBmcmVlIHRvCisgICAgICBtb2RpZnkgZm9ybWF0cyBhcyByZXF1aXJlZCBieSB0aGUgZGV2aWNlLiBIb3dldmVyLCB0aGV5IHNob3VsZCBjb21wbHkgd2l0aAorICAgICAgdGhlIGZvbGxvd2luZyBydWxlcyB3aGVuIHBvc3NpYmxlOgorICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZvcm1hdHMgc2hvdWxkIGJlIHByb3BhZ2F0ZWQgZnJvbSBzaW5rIHBhZHMgdG8gc291cmNlIHBhZHMuCisJTW9kaWZ5aW5nIGEgZm9ybWF0IG9uIGEgc291cmNlIHBhZCBzaG91bGQgbm90IG1vZGlmeSB0aGUgZm9ybWF0IG9uIGFueQorCXNpbmsgcGFkLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+U3ViLWRldmljZXMgdGhhdCBzY2FsZSBmcmFtZXMgdXNpbmcgdmFyaWFibGUgc2NhbGluZyBmYWN0b3JzCisJc2hvdWxkIHJlc2V0IHRoZSBzY2FsZSBmYWN0b3JzIHRvIGRlZmF1bHQgdmFsdWVzIHdoZW4gc2luayBwYWRzIGZvcm1hdHMKKwlhcmUgbW9kaWZpZWQuIElmIHRoZSAxOjEgc2NhbGluZyByYXRpbyBpcyBzdXBwb3J0ZWQsIHRoaXMgbWVhbnMgdGhhdAorCXNvdXJjZSBwYWRzIGZvcm1hdHMgc2hvdWxkIGJlIHJlc2V0IHRvIHRoZSBzaW5rIHBhZHMgZm9ybWF0cy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT5Gb3JtYXRzIGFyZSBub3QgcHJvcGFnYXRlZCBhY3Jvc3MgbGlua3MsIGFzIHRoYXQgd291bGQgaW52b2x2ZQorICAgICAgcHJvcGFnYXRpbmcgdGhlbSBmcm9tIG9uZSBzdWItZGV2aWNlIGZpbGUgaGFuZGxlIHRvIGFub3RoZXIuIEFwcGxpY2F0aW9ucworICAgICAgbXVzdCB0aGVuIHRha2UgY2FyZSB0byBjb25maWd1cmUgYm90aCBlbmRzIG9mIGV2ZXJ5IGxpbmsgZXhwbGljaXRseSB3aXRoCisgICAgICBjb21wYXRpYmxlIGZvcm1hdHMuIElkZW50aWNhbCBmb3JtYXRzIG9uIHRoZSB0d28gZW5kcyBvZiBhIGxpbmsgYXJlCisgICAgICBndWFyYW50ZWVkIHRvIGJlIGNvbXBhdGlibGUuIERyaXZlcnMgYXJlIGZyZWUgdG8gYWNjZXB0IGRpZmZlcmVudCBmb3JtYXRzCisgICAgICBtYXRjaGluZyBkZXZpY2UgcmVxdWlyZW1lbnRzIGFzIGJlaW5nIGNvbXBhdGlibGUuPC9wYXJhPgorCisgICAgICA8cGFyYT48eHJlZiBsaW5rZW5kPSJzYW1wbGUtcGlwZWxpbmUtY29uZmlnIiAvPgorICAgICAgc2hvd3MgYSBzYW1wbGUgY29uZmlndXJhdGlvbiBzZXF1ZW5jZSBmb3IgdGhlIHBpcGVsaW5lIGRlc2NyaWJlZCBpbgorICAgICAgPHhyZWYgbGlua2VuZD0icGlwZWxpbmUtc2NhbGluZyIgLz4gKHRhYmxlCisgICAgICBjb2x1bW5zIGxpc3QgZW50aXR5IG5hbWVzIGFuZCBwYWQgbnVtYmVycykuPC9wYXJhPgorCisgICAgICA8dGFibGUgcGd3aWRlPSIwIiBmcmFtZT0ibm9uZSIgaWQ9InNhbXBsZS1waXBlbGluZS1jb25maWciPgorCTx0aXRsZT5TYW1wbGUgUGlwZWxpbmUgQ29uZmlndXJhdGlvbjwvdGl0bGU+CisJPHRncm91cCBjb2xzPSIzIj4KKwkgIDxjb2xzcGVjIGNvbG5hbWU9IndoYXQiLz4KKwkgIDxjb2xzcGVjIGNvbG5hbWU9InNlbnNvci0wIGZvcm1hdCIgLz4KKwkgIDxjb2xzcGVjIGNvbG5hbWU9ImZyb250ZW5kLTAgZm9ybWF0IiAvPgorCSAgPGNvbHNwZWMgY29sbmFtZT0iZnJvbnRlbmQtMSBmb3JtYXQiIC8+CisJICA8Y29sc3BlYyBjb2xuYW1lPSJzY2FsZXItMCBmb3JtYXQiIC8+CisJICA8Y29sc3BlYyBjb2xuYW1lPSJzY2FsZXItMCBjb21wb3NlIiAvPgorCSAgPGNvbHNwZWMgY29sbmFtZT0ic2NhbGVyLTEgZm9ybWF0IiAvPgorCSAgPHRoZWFkPgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5TZW5zb3IvMCBmb3JtYXQ8L2VudHJ5PgorCSAgICAgIDxlbnRyeT5Gcm9udGVuZC8wIGZvcm1hdDwvZW50cnk+CisJICAgICAgPGVudHJ5PkZyb250ZW5kLzEgZm9ybWF0PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+U2NhbGVyLzAgZm9ybWF0PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+U2NhbGVyLzAgY29tcG9zZSBzZWxlY3Rpb24gcmVjdGFuZ2xlPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+U2NhbGVyLzEgZm9ybWF0PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICA8L3RoZWFkPgorCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+SW5pdGlhbCBzdGF0ZTwvZW50cnk+CisJICAgICAgPGVudHJ5PjIwNDh4MTUzNi9TR1JCRzhfMVg4PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+KGRlZmF1bHQpPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+KGRlZmF1bHQpPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+KGRlZmF1bHQpPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+KGRlZmF1bHQpPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+KGRlZmF1bHQpPC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PkNvbmZpZ3VyZSBmcm9udGVuZCBzaW5rIGZvcm1hdDwvZW50cnk+CisJICAgICAgPGVudHJ5PjIwNDh4MTUzNi9TR1JCRzhfMVg4PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PGVtcGhhc2lzPjIwNDh4MTUzNi9TR1JCRzhfMVg4PC9lbXBoYXNpcz48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48ZW1waGFzaXM+MjA0NngxNTM0L1NHUkJHOF8xWDg8L2VtcGhhc2lzPjwvZW50cnk+CisJICAgICAgPGVudHJ5PihkZWZhdWx0KTwvZW50cnk+CisJICAgICAgPGVudHJ5PihkZWZhdWx0KTwvZW50cnk+CisJICAgICAgPGVudHJ5PihkZWZhdWx0KTwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT5Db25maWd1cmUgc2NhbGVyIHNpbmsgZm9ybWF0PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MjA0OHgxNTM2L1NHUkJHOF8xWDg8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4yMDQ4eDE1MzYvU0dSQkc4XzFYODwvZW50cnk+CisJICAgICAgPGVudHJ5PjIwNDZ4MTUzNC9TR1JCRzhfMVg4PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PGVtcGhhc2lzPjIwNDZ4MTUzNC9TR1JCRzhfMVg4PC9lbXBoYXNpcz48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48ZW1waGFzaXM+MCwwLzIwNDZ4MTUzNDwvZW1waGFzaXM+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PGVtcGhhc2lzPjIwNDZ4MTUzNC9TR1JCRzhfMVg4PC9lbXBoYXNpcz48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+Q29uZmlndXJlIHNjYWxlciBzaW5rIGNvbXBvc2Ugc2VsZWN0aW9uPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MjA0OHgxNTM2L1NHUkJHOF8xWDg8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4yMDQ4eDE1MzYvU0dSQkc4XzFYODwvZW50cnk+CisJICAgICAgPGVudHJ5PjIwNDZ4MTUzNC9TR1JCRzhfMVg4PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MjA0NngxNTM0L1NHUkJHOF8xWDg8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48ZW1waGFzaXM+MCwwLzEyODB4OTYwPC9lbXBoYXNpcz48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48ZW1waGFzaXM+MTI4MHg5NjAvU0dSQkc4XzFYODwvZW1waGFzaXM+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICA8L3Rib2R5PgorCTwvdGdyb3VwPgorICAgICAgPC90YWJsZT4KKworICAgICAgPHBhcmE+CisgICAgICA8b3JkZXJlZGxpc3Q+CisJPGxpc3RpdGVtPjxwYXJhPkluaXRpYWwgc3RhdGUuIFRoZSBzZW5zb3Igc291cmNlIHBhZCBmb3JtYXQgaXMKKwlzZXQgdG8gaXRzIG5hdGl2ZSAzTVAgc2l6ZSBhbmQgVjRMMl9NQlVTX0ZNVF9TR1JCRzhfMVg4CisJbWVkaWEgYnVzIGNvZGUuIEZvcm1hdHMgb24gdGhlIGhvc3QgZnJvbnRlbmQgYW5kIHNjYWxlciBzaW5rCisJYW5kIHNvdXJjZSBwYWRzIGhhdmUgdGhlIGRlZmF1bHQgdmFsdWVzLCBhcyB3ZWxsIGFzIHRoZQorCWNvbXBvc2UgcmVjdGFuZ2xlIG9uIHRoZSBzY2FsZXIncyBzaW5rIHBhZC48L3BhcmE+PC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT48cGFyYT5UaGUgYXBwbGljYXRpb24gY29uZmlndXJlcyB0aGUgZnJvbnRlbmQgc2luaworCXBhZCBmb3JtYXQncyBzaXplIHRvIDIwNDh4MTUzNiBhbmQgaXRzIG1lZGlhIGJ1cyBjb2RlIHRvCisJVjRMMl9NQlVTX0ZNVF9TR1JCR18xWDguIFRoZSBkcml2ZXIgcHJvcGFnYXRlcyB0aGUgZm9ybWF0IHRvCisJdGhlIGZyb250ZW5kIHNvdXJjZSBwYWQuPC9wYXJhPjwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+PHBhcmE+VGhlIGFwcGxpY2F0aW9uIGNvbmZpZ3VyZXMgdGhlIHNjYWxlciBzaW5rIHBhZAorCWZvcm1hdCdzIHNpemUgdG8gMjA0NngxNTM0IGFuZCB0aGUgbWVkaWEgYnVzIGNvZGUgdG8KKwlWNEwyX01CVVNfRk1UX1NHUkJHXzFYOCB0byBtYXRjaCB0aGUgZnJvbnRlbmQgc291cmNlIHNpemUgYW5kCisJbWVkaWEgYnVzIGNvZGUuIFRoZSBtZWRpYSBidXMgY29kZSBvbiB0aGUgc2luayBwYWQgaXMgc2V0IHRvCisJVjRMMl9NQlVTX0ZNVF9TR1JCR18xWDguIFRoZSBkcml2ZXIgcHJvcGFnYXRlcyB0aGUgc2l6ZSB0byB0aGUKKwljb21wb3NlIHNlbGVjdGlvbiByZWN0YW5nbGUgb24gdGhlIHNjYWxlcidzIHNpbmsgcGFkLCBhbmQgdGhlCisJZm9ybWF0IHRvIHRoZSBzY2FsZXIgc291cmNlIHBhZC48L3BhcmE+PC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT48cGFyYT5UaGUgYXBwbGljYXRpb24gY29uZmlndXJlcyB0aGUgc2l6ZSBvZiB0aGUgY29tcG9zZQorCXNlbGVjdGlvbiByZWN0YW5nbGUgb2YgdGhlIHNjYWxlcidzIHNpbmsgcGFkIDEyODB4OTYwLiBUaGUgZHJpdmVyCisJcHJvcGFnYXRlcyB0aGUgc2l6ZSB0byB0aGUgc2NhbGVyJ3Mgc291cmNlIHBhZAorCWZvcm1hdC48L3BhcmE+PC9saXN0aXRlbT4KKworICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+V2hlbiBzYXRpc2ZpZWQgd2l0aCB0aGUgdHJ5IHJlc3VsdHMsIGFwcGxpY2F0aW9ucyBjYW4gc2V0IHRoZSBhY3RpdmUKKyAgICAgIGZvcm1hdHMgYnkgc2V0dGluZyB0aGUgPHN0cnVjdGZpZWxkPndoaWNoPC9zdHJ1Y3RmaWVsZD4gYXJndW1lbnQgdG8KKyAgICAgIDxjb25zdGFudD5WNEwyX1NVQkRFVl9GT1JNQVRfQUNUSVZFPC9jb25zdGFudD4uIEFjdGl2ZSBmb3JtYXRzIGFyZSBjaGFuZ2VkCisgICAgICBleGFjdGx5IGFzIHRyeSBmb3JtYXRzIGJ5IGRyaXZlcnMuIFRvIGF2b2lkIG1vZGlmeWluZyB0aGUgaGFyZHdhcmUgc3RhdGUKKyAgICAgIGR1cmluZyBmb3JtYXQgbmVnb3RpYXRpb24sIGFwcGxpY2F0aW9ucyBzaG91bGQgbmVnb3RpYXRlIHRyeSBmb3JtYXRzIGZpcnN0CisgICAgICBhbmQgdGhlbiBtb2RpZnkgdGhlIGFjdGl2ZSBzZXR0aW5ncyB1c2luZyB0aGUgdHJ5IGZvcm1hdHMgcmV0dXJuZWQgZHVyaW5nCisgICAgICB0aGUgbGFzdCBuZWdvdGlhdGlvbiBpdGVyYXRpb24uIFRoaXMgZ3VhcmFudGVlcyB0aGF0IHRoZSBhY3RpdmUgZm9ybWF0CisgICAgICB3aWxsIGJlIGFwcGxpZWQgYXMtaXMgYnkgdGhlIGRyaXZlciB3aXRob3V0IGJlaW5nIG1vZGlmaWVkLgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJ2NGwyLXN1YmRldi1zZWxlY3Rpb25zIj4KKyAgICAgIDx0aXRsZT5TZWxlY3Rpb25zOiBjcm9wcGluZywgc2NhbGluZyBhbmQgY29tcG9zaXRpb248L3RpdGxlPgorCisgICAgICA8cGFyYT5NYW55IHN1Yi1kZXZpY2VzIHN1cHBvcnQgY3JvcHBpbmcgZnJhbWVzIG9uIHRoZWlyIGlucHV0IG9yIG91dHB1dAorICAgICAgcGFkcyAob3IgcG9zc2libGUgZXZlbiBvbiBib3RoKS4gQ3JvcHBpbmcgaXMgdXNlZCB0byBzZWxlY3QgdGhlIGFyZWEgb2YKKyAgICAgIGludGVyZXN0IGluIGFuIGltYWdlLCB0eXBpY2FsbHkgb24gYW4gaW1hZ2Ugc2Vuc29yIG9yIGEgdmlkZW8gZGVjb2Rlci4gSXQgY2FuCisgICAgICBhbHNvIGJlIHVzZWQgYXMgcGFydCBvZiBkaWdpdGFsIHpvb20gaW1wbGVtZW50YXRpb25zIHRvIHNlbGVjdCB0aGUgYXJlYSBvZgorICAgICAgdGhlIGltYWdlIHRoYXQgd2lsbCBiZSBzY2FsZWQgdXAuPC9wYXJhPgorCisgICAgICA8cGFyYT5Dcm9wIHNldHRpbmdzIGFyZSBkZWZpbmVkIGJ5IGEgY3JvcCByZWN0YW5nbGUgYW5kIHJlcHJlc2VudGVkIGluIGEKKyAgICAgICZ2NGwyLXJlY3Q7IGJ5IHRoZSBjb29yZGluYXRlcyBvZiB0aGUgdG9wIGxlZnQgY29ybmVyIGFuZCB0aGUgcmVjdGFuZ2xlCisgICAgICBzaXplLiBCb3RoIHRoZSBjb29yZGluYXRlcyBhbmQgc2l6ZXMgYXJlIGV4cHJlc3NlZCBpbiBwaXhlbHMuPC9wYXJhPgorCisgICAgICA8cGFyYT5BcyBmb3IgcGFkIGZvcm1hdHMsIGRyaXZlcnMgc3RvcmUgdHJ5IGFuZCBhY3RpdmUKKyAgICAgIHJlY3RhbmdsZXMgZm9yIHRoZSBzZWxlY3Rpb24gdGFyZ2V0cyA8eHJlZgorICAgICAgbGlua2VuZD0idjRsMi1zZWxlY3Rpb25zLWNvbW1vbiIgLz4uPC9wYXJhPgorCisgICAgICA8cGFyYT5PbiBzaW5rIHBhZHMsIGNyb3BwaW5nIGlzIGFwcGxpZWQgcmVsYXRpdmUgdG8gdGhlCisgICAgICBjdXJyZW50IHBhZCBmb3JtYXQuIFRoZSBwYWQgZm9ybWF0IHJlcHJlc2VudHMgdGhlIGltYWdlIHNpemUgYXMKKyAgICAgIHJlY2VpdmVkIGJ5IHRoZSBzdWItZGV2aWNlIGZyb20gdGhlIHByZXZpb3VzIGJsb2NrIGluIHRoZQorICAgICAgcGlwZWxpbmUsIGFuZCB0aGUgY3JvcCByZWN0YW5nbGUgcmVwcmVzZW50cyB0aGUgc3ViLWltYWdlIHRoYXQKKyAgICAgIHdpbGwgYmUgdHJhbnNtaXR0ZWQgZnVydGhlciBpbnNpZGUgdGhlIHN1Yi1kZXZpY2UgZm9yCisgICAgICBwcm9jZXNzaW5nLjwvcGFyYT4KKworICAgICAgPHBhcmE+VGhlIHNjYWxpbmcgb3BlcmF0aW9uIGNoYW5nZXMgdGhlIHNpemUgb2YgdGhlIGltYWdlIGJ5CisgICAgICBzY2FsaW5nIGl0IHRvIG5ldyBkaW1lbnNpb25zLiBUaGUgc2NhbGluZyByYXRpbyBpc24ndCBzcGVjaWZpZWQKKyAgICAgIGV4cGxpY2l0bHksIGJ1dCBpcyBpbXBsaWVkIGZyb20gdGhlIG9yaWdpbmFsIGFuZCBzY2FsZWQgaW1hZ2UKKyAgICAgIHNpemVzLiBCb3RoIHNpemVzIGFyZSByZXByZXNlbnRlZCBieSAmdjRsMi1yZWN0Oy48L3BhcmE+CisKKyAgICAgIDxwYXJhPlNjYWxpbmcgc3VwcG9ydCBpcyBvcHRpb25hbC4gV2hlbiBzdXBwb3J0ZWQgYnkgYSBzdWJkZXYsCisgICAgICB0aGUgY3JvcCByZWN0YW5nbGUgb24gdGhlIHN1YmRldidzIHNpbmsgcGFkIGlzIHNjYWxlZCB0byB0aGUKKyAgICAgIHNpemUgY29uZmlndXJlZCB1c2luZyB0aGUgJlZJRElPQy1TVUJERVYtUy1TRUxFQ1RJT047IElPQ1RMCisgICAgICB1c2luZyA8Y29uc3RhbnQ+VjRMMl9TRUxfVEdUX0NPTVBPU0U8L2NvbnN0YW50PgorICAgICAgc2VsZWN0aW9uIHRhcmdldCBvbiB0aGUgc2FtZSBwYWQuIElmIHRoZSBzdWJkZXYgc3VwcG9ydHMgc2NhbGluZworICAgICAgYnV0IG5vdCBjb21wb3NpbmcsIHRoZSB0b3AgYW5kIGxlZnQgdmFsdWVzIGFyZSBub3QgdXNlZCBhbmQgbXVzdAorICAgICAgYWx3YXlzIGJlIHNldCB0byB6ZXJvLjwvcGFyYT4KKworICAgICAgPHBhcmE+T24gc291cmNlIHBhZHMsIGNyb3BwaW5nIGlzIHNpbWlsYXIgdG8gc2luayBwYWRzLCB3aXRoIHRoZQorICAgICAgZXhjZXB0aW9uIHRoYXQgdGhlIHNvdXJjZSBzaXplIGZyb20gd2hpY2ggdGhlIGNyb3BwaW5nIGlzCisgICAgICBwZXJmb3JtZWQsIGlzIHRoZSBDT01QT1NFIHJlY3RhbmdsZSBvbiB0aGUgc2luayBwYWQuIEluIGJvdGgKKyAgICAgIHNpbmsgYW5kIHNvdXJjZSBwYWRzLCB0aGUgY3JvcCByZWN0YW5nbGUgbXVzdCBiZSBlbnRpcmVseQorICAgICAgY29udGFpbmVkIGluc2lkZSB0aGUgc291cmNlIGltYWdlIHNpemUgZm9yIHRoZSBjcm9wCisgICAgICBvcGVyYXRpb24uPC9wYXJhPgorCisgICAgICA8cGFyYT5UaGUgZHJpdmVycyBzaG91bGQgYWx3YXlzIHVzZSB0aGUgY2xvc2VzdCBwb3NzaWJsZQorICAgICAgcmVjdGFuZ2xlIHRoZSB1c2VyIHJlcXVlc3RzIG9uIGFsbCBzZWxlY3Rpb24gdGFyZ2V0cywgdW5sZXNzCisgICAgICBzcGVjaWZpY2FsbHkgdG9sZCBvdGhlcndpc2UuCisgICAgICA8Y29uc3RhbnQ+VjRMMl9TRUxfRkxBR19HRTwvY29uc3RhbnQ+IGFuZAorICAgICAgPGNvbnN0YW50PlY0TDJfU0VMX0ZMQUdfTEU8L2NvbnN0YW50PiBmbGFncyBtYXkgYmUKKyAgICAgIHVzZWQgdG8gcm91bmQgdGhlIGltYWdlIHNpemUgZWl0aGVyIHVwIG9yIGRvd24uIDx4cmVmCisgICAgICBsaW5rZW5kPSJ2NGwyLXNlbGVjdGlvbi1mbGFncyIgLz48L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+VHlwZXMgb2Ygc2VsZWN0aW9uIHRhcmdldHM8L3RpdGxlPgorCisgICAgICA8c2VjdGlvbj4KKwk8dGl0bGU+QWN0dWFsIHRhcmdldHM8L3RpdGxlPgorCisJPHBhcmE+QWN0dWFsIHRhcmdldHMgKHdpdGhvdXQgYSBwb3N0Zml4KSByZWZsZWN0IHRoZSBhY3R1YWwKKwloYXJkd2FyZSBjb25maWd1cmF0aW9uIGF0IGFueSBwb2ludCBvZiB0aW1lLiBUaGVyZSBpcyBhIEJPVU5EUworCXRhcmdldCBjb3JyZXNwb25kaW5nIHRvIGV2ZXJ5IGFjdHVhbCB0YXJnZXQuPC9wYXJhPgorICAgICAgPC9zZWN0aW9uPgorCisgICAgICA8c2VjdGlvbj4KKwk8dGl0bGU+Qk9VTkRTIHRhcmdldHM8L3RpdGxlPgorCisJPHBhcmE+Qk9VTkRTIHRhcmdldHMgaXMgdGhlIHNtYWxsZXN0IHJlY3RhbmdsZSB0aGF0IGNvbnRhaW5zIGFsbAorCXZhbGlkIGFjdHVhbCByZWN0YW5nbGVzLiBJdCBtYXkgbm90IGJlIHBvc3NpYmxlIHRvIHNldCB0aGUgYWN0dWFsCisJcmVjdGFuZ2xlIGFzIGxhcmdlIGFzIHRoZSBCT1VORFMgcmVjdGFuZ2xlLCBob3dldmVyLiBUaGlzIG1heSBiZQorCWJlY2F1c2UgZS5nLiBhIHNlbnNvcidzIHBpeGVsIGFycmF5IGlzIG5vdCByZWN0YW5ndWxhciBidXQKKwljcm9zcy1zaGFwZWQgb3Igcm91bmQuIFRoZSBtYXhpbXVtIHNpemUgbWF5IGFsc28gYmUgc21hbGxlciB0aGFuIHRoZQorCUJPVU5EUyByZWN0YW5nbGUuPC9wYXJhPgorICAgICAgPC9zZWN0aW9uPgorCisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+T3JkZXIgb2YgY29uZmlndXJhdGlvbiBhbmQgZm9ybWF0IHByb3BhZ2F0aW9uPC90aXRsZT4KKworICAgICAgPHBhcmE+SW5zaWRlIHN1YmRldnMsIHRoZSBvcmRlciBvZiBpbWFnZSBwcm9jZXNzaW5nIHN0ZXBzIHdpbGwKKyAgICAgIGFsd2F5cyBiZSBmcm9tIHRoZSBzaW5rIHBhZCB0b3dhcmRzIHRoZSBzb3VyY2UgcGFkLiBUaGlzIGlzIGFsc28KKyAgICAgIHJlZmxlY3RlZCBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gbXVzdCBiZQorICAgICAgcGVyZm9ybWVkIGJ5IHRoZSB1c2VyOiB0aGUgY2hhbmdlcyBtYWRlIHdpbGwgYmUgcHJvcGFnYXRlZCB0bworICAgICAgYW55IHN1YnNlcXVlbnQgc3RhZ2VzLiBJZiB0aGlzIGJlaGF2aW91ciBpcyBub3QgZGVzaXJlZCwgdGhlCisgICAgICB1c2VyIG11c3Qgc2V0CisgICAgICA8Y29uc3RhbnQ+VjRMMl9TRUxfRkxBR19LRUVQX0NPTkZJRzwvY29uc3RhbnQ+IGZsYWcuIFRoaXMKKyAgICAgIGZsYWcgY2F1c2VzIG5vIHByb3BhZ2F0aW9uIG9mIHRoZSBjaGFuZ2VzIGFyZSBhbGxvd2VkIGluIGFueQorICAgICAgY2lyY3Vtc3RhbmNlcy4gVGhpcyBtYXkgYWxzbyBjYXVzZSB0aGUgYWNjZXNzZWQgcmVjdGFuZ2xlIHRvIGJlCisgICAgICBhZGp1c3RlZCBieSB0aGUgZHJpdmVyLCBkZXBlbmRpbmcgb24gdGhlIHByb3BlcnRpZXMgb2YgdGhlCisgICAgICB1bmRlcmx5aW5nIGhhcmR3YXJlLjwvcGFyYT4KKworICAgICAgPHBhcmE+VGhlIGNvb3JkaW5hdGVzIHRvIGEgc3RlcCBhbHdheXMgcmVmZXIgdG8gdGhlIGFjdHVhbCBzaXplCisgICAgICBvZiB0aGUgcHJldmlvdXMgc3RlcC4gVGhlIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGUgaXMgdGhlIHNvdXJjZQorICAgICAgY29tcG9zZSByZWN0YW5nbGUsIHdoaWNoIHJlZmVycyB0byB0aGUgc2luayBjb21wb3NlIGJvdW5kcworICAgICAgcmVjdGFuZ2xlIC0tLSBpZiBpdCBpcyBzdXBwb3J0ZWQgYnkgdGhlIGhhcmR3YXJlLjwvcGFyYT4KKworICAgICAgPG9yZGVyZWRsaXN0PgorCTxsaXN0aXRlbT48cGFyYT5TaW5rIHBhZCBmb3JtYXQuIFRoZSB1c2VyIGNvbmZpZ3VyZXMgdGhlIHNpbmsgcGFkCisJZm9ybWF0LiBUaGlzIGZvcm1hdCBkZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBpbWFnZSB0aGUKKwllbnRpdHkgcmVjZWl2ZXMgdGhyb3VnaCB0aGUgcGFkIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmcuPC9wYXJhPjwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+PHBhcmE+U2luayBwYWQgYWN0dWFsIGNyb3Agc2VsZWN0aW9uLiBUaGUgc2luayBwYWQgY3JvcAorCWRlZmluZXMgdGhlIGNyb3AgcGVyZm9ybWVkIHRvIHRoZSBzaW5rIHBhZCBmb3JtYXQuPC9wYXJhPjwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+PHBhcmE+U2luayBwYWQgYWN0dWFsIGNvbXBvc2Ugc2VsZWN0aW9uLiBUaGUgc2l6ZSBvZiB0aGUKKwlzaW5rIHBhZCBjb21wb3NlIHJlY3RhbmdsZSBkZWZpbmVzIHRoZSBzY2FsaW5nIHJhdGlvIGNvbXBhcmVkCisJdG8gdGhlIHNpemUgb2YgdGhlIHNpbmsgcGFkIGNyb3AgcmVjdGFuZ2xlLiBUaGUgbG9jYXRpb24gb2YKKwl0aGUgY29tcG9zZSByZWN0YW5nbGUgc3BlY2lmaWVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgYWN0dWFsCisJc2luayBjb21wb3NlIHJlY3RhbmdsZSBpbiB0aGUgc2luayBjb21wb3NlIGJvdW5kcworCXJlY3RhbmdsZS48L3BhcmE+PC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT48cGFyYT5Tb3VyY2UgcGFkIGFjdHVhbCBjcm9wIHNlbGVjdGlvbi4gQ3JvcCBvbiB0aGUgc291cmNlCisJcGFkIGRlZmluZXMgY3JvcCBwZXJmb3JtZWQgdG8gdGhlIGltYWdlIGluIHRoZSBzaW5rIGNvbXBvc2UKKwlib3VuZHMgcmVjdGFuZ2xlLjwvcGFyYT48L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPjxwYXJhPlNvdXJjZSBwYWQgZm9ybWF0LiBUaGUgc291cmNlIHBhZCBmb3JtYXQgZGVmaW5lcyB0aGUKKwlvdXRwdXQgcGl4ZWwgZm9ybWF0IG9mIHRoZSBzdWJkZXYsIGFzIHdlbGwgYXMgdGhlIG90aGVyCisJcGFyYW1ldGVycyB3aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIGltYWdlIHdpZHRoIGFuZCBoZWlnaHQuCisJV2lkdGggYW5kIGhlaWdodCBhcmUgZGVmaW5lZCBieSB0aGUgc2l6ZSBvZiB0aGUgc291cmNlIHBhZAorCWFjdHVhbCBjcm9wIHNlbGVjdGlvbi48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgIDwvb3JkZXJlZGxpc3Q+CisKKyAgICAgIDxwYXJhPkFjY2Vzc2luZyBhbnkgb2YgdGhlIGFib3ZlIHJlY3RhbmdsZXMgbm90IHN1cHBvcnRlZCBieSB0aGUKKyAgICAgIHN1YmRldiB3aWxsIHJldHVybiA8Y29uc3RhbnQ+RUlOVkFMPC9jb25zdGFudD4uIEFueSByZWN0YW5nbGUKKyAgICAgIHJlZmVycmluZyB0byBhIHByZXZpb3VzIHVuc3VwcG9ydGVkIHJlY3RhbmdsZSBjb29yZGluYXRlcyB3aWxsCisgICAgICBpbnN0ZWFkIHJlZmVyIHRvIHRoZSBwcmV2aW91cyBzdXBwb3J0ZWQgcmVjdGFuZ2xlLiBGb3IgZXhhbXBsZSwKKyAgICAgIGlmIHNpbmsgY3JvcCBpcyBub3Qgc3VwcG9ydGVkLCB0aGUgY29tcG9zZSBzZWxlY3Rpb24gd2lsbCByZWZlcgorICAgICAgdG8gdGhlIHNpbmsgcGFkIGZvcm1hdCBkaW1lbnNpb25zIGluc3RlYWQuPC9wYXJhPgorCisgICAgICA8ZmlndXJlIGlkPSJzdWJkZXYtaW1hZ2UtcHJvY2Vzc2luZy1jcm9wIj4KKwk8dGl0bGU+SW1hZ2UgcHJvY2Vzc2luZyBpbiBzdWJkZXZzOiBzaW1wbGUgY3JvcCBleGFtcGxlPC90aXRsZT4KKwk8bWVkaWFvYmplY3Q+CisJICA8aW1hZ2VvYmplY3Q+CisJICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0ic3ViZGV2LWltYWdlLXByb2Nlc3NpbmctY3JvcC5zdmciCisJICAgIGZvcm1hdD0iU1ZHIiBzY2FsZT0iMjAwIiAvPgorCSAgPC9pbWFnZW9iamVjdD4KKwk8L21lZGlhb2JqZWN0PgorICAgICAgPC9maWd1cmU+CisKKyAgICAgIDxwYXJhPkluIHRoZSBhYm92ZSBleGFtcGxlLCB0aGUgc3ViZGV2IHN1cHBvcnRzIGNyb3BwaW5nIG9uIGl0cworICAgICAgc2luayBwYWQuIFRvIGNvbmZpZ3VyZSBpdCwgdGhlIHVzZXIgc2V0cyB0aGUgbWVkaWEgYnVzIGZvcm1hdCBvbgorICAgICAgdGhlIHN1YmRldidzIHNpbmsgcGFkLiBOb3cgdGhlIGFjdHVhbCBjcm9wIHJlY3RhbmdsZSBjYW4gYmUgc2V0CisgICAgICBvbiB0aGUgc2luayBwYWQgLS0tIHRoZSBsb2NhdGlvbiBhbmQgc2l6ZSBvZiB0aGlzIHJlY3RhbmdsZQorICAgICAgcmVmbGVjdCB0aGUgbG9jYXRpb24gYW5kIHNpemUgb2YgYSByZWN0YW5nbGUgdG8gYmUgY3JvcHBlZCBmcm9tCisgICAgICB0aGUgc2luayBmb3JtYXQuIFRoZSBzaXplIG9mIHRoZSBzaW5rIGNyb3AgcmVjdGFuZ2xlIHdpbGwgYWxzbworICAgICAgYmUgdGhlIHNpemUgb2YgdGhlIGZvcm1hdCBvZiB0aGUgc3ViZGV2J3Mgc291cmNlIHBhZC48L3BhcmE+CisKKyAgICAgIDxmaWd1cmUgaWQ9InN1YmRldi1pbWFnZS1wcm9jZXNzaW5nLXNjYWxpbmctbXVsdGktc291cmNlIj4KKwk8dGl0bGU+SW1hZ2UgcHJvY2Vzc2luZyBpbiBzdWJkZXZzOiBzY2FsaW5nIHdpdGggbXVsdGlwbGUgc291cmNlczwvdGl0bGU+CisJPG1lZGlhb2JqZWN0PgorCSAgPGltYWdlb2JqZWN0PgorCSAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9InN1YmRldi1pbWFnZS1wcm9jZXNzaW5nLXNjYWxpbmctbXVsdGktc291cmNlLnN2ZyIKKwkgICAgZm9ybWF0PSJTVkciIHNjYWxlPSIyMDAiIC8+CisJICA8L2ltYWdlb2JqZWN0PgorCTwvbWVkaWFvYmplY3Q+CisgICAgICA8L2ZpZ3VyZT4KKworICAgICAgPHBhcmE+SW4gdGhpcyBleGFtcGxlLCB0aGUgc3ViZGV2IGlzIGNhcGFibGUgb2YgZmlyc3QgY3JvcHBpbmcsCisgICAgICB0aGVuIHNjYWxpbmcgYW5kIGZpbmFsbHkgY3JvcHBpbmcgZm9yIHR3byBzb3VyY2UgcGFkcworICAgICAgaW5kaXZpZHVhbGx5IGZyb20gdGhlIHJlc3VsdGluZyBzY2FsZWQgaW1hZ2UuIFRoZSBsb2NhdGlvbiBvZgorICAgICAgdGhlIHNjYWxlZCBpbWFnZSBpbiB0aGUgY3JvcHBlZCBpbWFnZSBpcyBpZ25vcmVkIGluIHNpbmsgY29tcG9zZQorICAgICAgdGFyZ2V0LiBCb3RoIG9mIHRoZSBsb2NhdGlvbnMgb2YgdGhlIHNvdXJjZSBjcm9wIHJlY3RhbmdsZXMKKyAgICAgIHJlZmVyIHRvIHRoZSBzaW5rIHNjYWxpbmcgcmVjdGFuZ2xlLCBpbmRlcGVuZGVudGx5IGNyb3BwaW5nIGFuCisgICAgICBhcmVhIGF0IGxvY2F0aW9uIHNwZWNpZmllZCBieSB0aGUgc291cmNlIGNyb3AgcmVjdGFuZ2xlIGZyb20KKyAgICAgIGl0LjwvcGFyYT4KKworICAgICAgPGZpZ3VyZSBpZD0ic3ViZGV2LWltYWdlLXByb2Nlc3NpbmctZnVsbCI+CisJPHRpdGxlPkltYWdlIHByb2Nlc3NpbmcgaW4gc3ViZGV2czogc2NhbGluZyBhbmQgY29tcG9zaXRpb24KKwl3aXRoIG11bHRpcGxlIHNpbmtzIGFuZCBzb3VyY2VzPC90aXRsZT4KKwk8bWVkaWFvYmplY3Q+CisJICA8aW1hZ2VvYmplY3Q+CisJICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0ic3ViZGV2LWltYWdlLXByb2Nlc3NpbmctZnVsbC5zdmciCisJICAgIGZvcm1hdD0iU1ZHIiBzY2FsZT0iMjAwIiAvPgorCSAgPC9pbWFnZW9iamVjdD4KKwk8L21lZGlhb2JqZWN0PgorICAgICAgPC9maWd1cmU+CisKKyAgICAgIDxwYXJhPlRoZSBzdWJkZXYgZHJpdmVyIHN1cHBvcnRzIHR3byBzaW5rIHBhZHMgYW5kIHR3byBzb3VyY2UKKyAgICAgIHBhZHMuIFRoZSBpbWFnZXMgZnJvbSBib3RoIG9mIHRoZSBzaW5rIHBhZHMgYXJlIGluZGl2aWR1YWxseQorICAgICAgY3JvcHBlZCwgdGhlbiBzY2FsZWQgYW5kIGZ1cnRoZXIgY29tcG9zZWQgb24gdGhlIGNvbXBvc2l0aW9uCisgICAgICBib3VuZHMgcmVjdGFuZ2xlLiBGcm9tIHRoYXQsIHR3byBpbmRlcGVuZGVudCBzdHJlYW1zIGFyZSBjcm9wcGVkCisgICAgICBhbmQgc2VudCBvdXQgb2YgdGhlIHN1YmRldiBmcm9tIHRoZSBzb3VyY2UgcGFkcy48L3BhcmE+CisKKyAgICA8L3NlY3Rpb24+CisKKyAgPC9zZWN0aW9uPgorCisgICZzdWItc3ViZGV2LWZvcm1hdHM7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2Rldi10ZWxldGV4dC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2Rldi10ZWxldGV4dC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQyMWM2NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZGV2LXRlbGV0ZXh0LnhtbApAQCAtMCwwICsxLDI5IEBACisgIDx0aXRsZT5UZWxldGV4dCBJbnRlcmZhY2U8L3RpdGxlPgorCisgIDxwYXJhPlRoaXMgaW50ZXJmYWNlIHdhcyBhaW1lZCBhdCBkZXZpY2VzIHJlY2VpdmluZyBhbmQgZGVtb2R1bGF0aW5nCitUZWxldGV4dCBkYXRhIFs8eHJlZiBsaW5rZW5kPSJldHMzMDA3MDYiIC8+LCA8eHJlZiBsaW5rZW5kPSJpdHU2NTMiIC8+XSwgZXZhbHVhdGluZyB0aGUKK1RlbGV0ZXh0IHBhY2thZ2VzIGFuZCBzdG9yaW5nIGZvcm1hdHRlZCBwYWdlcyBpbiBjYWNoZSBtZW1vcnkuIFN1Y2gKK2RldmljZXMgYXJlIHVzdWFsbHkgaW1wbGVtZW50ZWQgYXMgbWljcm9jb250cm9sbGVycyB3aXRoIHNlcmlhbAoraW50ZXJmYWNlIChJPHN1cGVyc2NyaXB0PjI8L3N1cGVyc2NyaXB0PkMpIGFuZCBjb3VsZCBiZSBmb3VuZCBvbiBvbGQKK1RWIGNhcmRzLCBkZWRpY2F0ZWQgVGVsZXRleHQgZGVjb2RpbmcgY2FyZHMgYW5kIGhvbWUtYnJldyBkZXZpY2VzCitjb25uZWN0ZWQgdG8gdGhlIFBDIHBhcmFsbGVsIHBvcnQuPC9wYXJhPgorCisgIDxwYXJhPlRoZSBUZWxldGV4dCBBUEkgd2FzIGRlc2lnbmVkIGJ5IE1hcnRpbiBCdWNrLiBJdCB3YXMgZGVmaW5lZCBpbgordGhlIGtlcm5lbCBoZWFkZXIgZmlsZSA8ZmlsZW5hbWU+bGludXgvdmlkZW90ZXh0Lmg8L2ZpbGVuYW1lPiwgdGhlCitzcGVjaWZpY2F0aW9uIGlzIGF2YWlsYWJsZSBmcm9tIDx1bGluayB1cmw9ImZ0cDovL2Z0cC5nd2RnLmRlL3B1Yi9saW51eC9taXNjL3ZpZGVvdGV4dC8iPgorZnRwOi8vZnRwLmd3ZGcuZGUvcHViL2xpbnV4L21pc2MvdmlkZW90ZXh0LzwvdWxpbms+LiAoVmlkZW90ZXh0IGlzIHRoZSBuYW1lIG9mCit0aGUgR2VybWFuIHB1YmxpYyB0ZWxldmlzaW9uIFRlbGV0ZXh0IHNlcnZpY2UuKTwvcGFyYT4KKworICA8cGFyYT5FdmVudHVhbGx5IHRoZSBUZWxldGV4dCBBUEkgd2FzIGludGVncmF0ZWQgaW50byB0aGUgVjRMIEFQSQord2l0aCBjaGFyYWN0ZXIgZGV2aWNlIGZpbGUgbmFtZXMgPGZpbGVuYW1lPi9kZXYvdnR4MDwvZmlsZW5hbWU+IHRvCis8ZmlsZW5hbWU+L2Rldi92dHgzMTwvZmlsZW5hbWU+LCBkZXZpY2UgbWFqb3IgbnVtYmVyIDgxLCBtaW5vciBudW1iZXJzCisxOTIgdG8gMjIzLjwvcGFyYT4KKworICA8cGFyYT5Ib3dldmVyLCB0ZWxldGV4dCBkZWNvZGVycyB3ZXJlIHF1aWNrbHkgcmVwbGFjZWQgYnkgbW9yZQorZ2VuZXJpYyBWQkkgZGVtb2R1bGF0b3JzIGFuZCB0aG9zZSBkZWRpY2F0ZWQgdGVsZXRleHQgZGVjb2RlcnMgbm8gbG9uZ2VyIGV4aXN0LgorRm9yIG1hbnkgeWVhcnMgdGhlIHZ0eCBkZXZpY2VzIHdlcmUgc3RpbGwgYXJvdW5kLCBldmVuIHRob3VnaCBub2JvZHkgdXNlZAordGhlbS4gU28gdGhlIGRlY2lzaW9uIHdhcyBtYWRlIHRvIGZpbmFsbHkgcmVtb3ZlIHN1cHBvcnQgZm9yIHRoZSBUZWxldGV4dCBBUEkgaW4KK2tlcm5lbCAyLjYuMzcuPC9wYXJhPgorCisgIDxwYXJhPk1vZGVybiBkZXZpY2VzIGFsbCB1c2UgdGhlIDxsaW5rIGxpbmtlbmQ9InJhdy12YmkiPnJhdzwvbGluaz4gb3IKKzxsaW5rIGxpbmtlbmQ9InNsaWNlZCI+c2xpY2VkPC9saW5rPiBWQkkgQVBJLjwvcGFyYT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZHJpdmVyLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZHJpdmVyLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzY2MzhiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9kcml2ZXIueG1sCkBAIC0wLDAgKzEsMjAwIEBACisgIDx0aXRsZT5WNEwyIERyaXZlciBQcm9ncmFtbWluZzwvdGl0bGU+CisKKyAgPCEtLSBUaGlzIHBhcnQgZGVmaW5lcyB0aGUgaW50ZXJmYWNlIGJldHdlZW4gdGhlICJ2aWRlb2RldiIKKyAgICBtb2R1bGUgYW5kIGluZGl2aWR1YWwgZHJpdmVycy4gLS0+CisKKyAgPHBhcmE+dG8gZG88L3BhcmE+Cis8IS0tCisgIDxwYXJhPlY0TDIgaXMgYSB0d28tbGF5ZXIgZHJpdmVyIHN5c3RlbS4gVGhlIHRvcCBsYXllciBpcyB0aGUgInZpZGVvZGV2Igora2VybmVsIG1vZHVsZS4gV2hlbiB2aWRlb2RldiBpbml0aWFsaXplcyBpdCByZWdpc3RlcnMgYXMgY2hhcmFjdGVyIGRldmljZQord2l0aCBtYWpvciBudW1iZXIgODEsIGFuZCBpdCByZWdpc3RlcnMgYSBzZXQgb2YgZmlsZSBvcGVyYXRpb25zLiBBbGwgVjRMMgorZHJpdmVycyBhcmUgcmVhbGx5IGNsaWVudHMgb2YgdmlkZW9kZXYsIHdoaWNoIGNhbGxzIFY0TDIgZHJpdmVycyB0aHJvdWdoCitkcml2ZXIgbWV0aG9kIGZ1bmN0aW9ucy4gVjRMMiBkcml2ZXJzIGFyZSBhbHNvIHdyaXR0ZW4gYXMga2VybmVsIG1vZHVsZXMuCitBZnRlciBwcm9iaW5nIHRoZSBoYXJkd2FyZSB0aGV5IHJlZ2lzdGVyIG9uZSBvciBtb3JlIGRldmljZXMgd2l0aAordmlkZW9kZXYuPC9wYXJhPgorCisgIDxzZWN0aW9uIGlkPSJkcml2ZXItbW9kdWxlcyI+CisgICAgPHRpdGxlPkRyaXZlciBNb2R1bGVzPC90aXRsZT4KKworICAgIDxwYXJhPlY0TDIgZHJpdmVyIG1vZHVsZXMgbXVzdCBoYXZlIGFuIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHdoaWNoIGlzCitjYWxsZWQgYWZ0ZXIgdGhlIG1vZHVsZSB3YXMgbG9hZGVkIGludG8ga2VybmVsLCBhbiBleGl0IGZ1bmN0aW9uIHdoaXMgaXMKK2NhbGxlZCBiZWZvcmUgdGhlIG1vZHVsZSBpcyByZW1vdmVkLiAgV2hlbiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIGludG8gdGhlCitrZXJuZWwgdGhlc2UgZnVuY3Rpb25zIGNhbGxlZCBhdCBzeXN0ZW0gYm9vdCBhbmQgc2h1dGRvd24gdGltZS48L3BhcmE+CisKKyAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgPHByb2dyYW1saXN0aW5nPgorI2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OworCisvKiBFeHBvcnQgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBtb2R1bGUuIEZvciBkZXRhaWxzIGFuZCBvdGhlciB1c2VmdWwKKyAgIG1hY3JvcyBzZWUgPGZpbGVuYW1lPmxpbnV4L21vZHVsZS5oPC9maWxlbmFtZT4uICovCitNT0RVTEVfREVTQ1JJUFRJT04oIm15IC0gZHJpdmVyIGZvciBteSBoYXJkd2FyZSIpOworTU9EVUxFX0FVVEhPUigiWW91ciBuYW1lIGhlcmUiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKKworc3RhdGljIHZvaWQKK215X21vZHVsZV9leGl0ICh2b2lkKQoreworCS8qIEZyZWUgYWxsIHJlc291cmNlcyBhbGxvY2F0ZWQgYnkgbXlfbW9kdWxlX2luaXQoKS4gKi8KK30KKworc3RhdGljIGludAorbXlfbW9kdWxlX2luaXQgKHZvaWQpCit7CisJLyogQmluZCB0aGUgZHJpdmVyIHRvIHRoZSBzdXBwb3J0ZWQgaGFyZHdhcmUsIHNlZQorCSAgIDxsaW5rIGxpbmtlbmQ9ImRyaXZlci1wY2kiPiBhbmQKKwkgICA8bGluayBsaW5rZW5kPSJkcml2ZXItdXNiIj4gZm9yIGV4YW1wbGVzLiAqLworCisJcmV0dXJuIDA7IC8qIGEgbmVnYXRpdmUgdmFsdWUgb24gZXJyb3IsIDAgb24gc3VjY2Vzcy4gKi8KK30KKworLyogRXhwb3J0IG1vZHVsZSBmdW5jdGlvbnMuICovCittb2R1bGVfaW5pdCAobXlfbW9kdWxlX2luaXQpOworbW9kdWxlX2V4aXQgKG15X21vZHVsZV9leGl0KTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisKKyAgICA8cGFyYT5Vc2VycyBjYW4gYWRkIHBhcmFtZXRlcnMgd2hlbiBrZXJuZWwgbW9kdWxlcyBhcmUgaW5zZXJ0ZWQ6PC9wYXJhPgorCisgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgIDxwcm9ncmFtbGlzdGluZz4KK2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZXBhcmFtLmgmZ3Q7CisKK3N0YXRpYyBpbnQgbXlfb3B0aW9uID0gMTIzOworc3RhdGljIGludCBteV9vcHRpb25fYXJyYXlbNDddOworCisvKiBFeHBvcnQgdGhlIHN5bWJvbCwgYW4gaW50LCB3aXRoIGFjY2VzcyBwZXJtaXNzaW9ucyAwNjY0LgorICAgU2VlIDxmaWxlbmFtZT5saW51eC9tb2R1bGVwYXJhbS5oPC9maWxlbmFtZT4gZm9yIG90aGVyIHR5cGVzLiAqLworbW9kdWxlX3BhcmFtIChteV9vcHRpb24sIGludCwgMDY0NCk7Cittb2R1bGVfcGFyYW1fYXJyYXkgKG15X29wdGlvbl9hcnJheSwgaW50LCBOVUxMLCAwNjQ0KTsKKworTU9EVUxFX1BBUk1fREVTQyAobXlfb3B0aW9uLCAiRG9lcyBtYWdpYyB0aGluZ3MsIGRlZmF1bHQgMTIzIik7Cis8L3Byb2dyYW1saXN0aW5nPgorICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCisgICAgPHBhcmE+T25lIHBhcmFtZXRlciBzaG91bGQgYmUgc3VwcG9ydGVkIGJ5IGFsbCBWNEwyIGRyaXZlcnMsIHRoZSBtaW5vcgorbnVtYmVyIG9mIHRoZSBkZXZpY2UgaXQgd2lsbCByZWdpc3Rlci4gUHVycG9zZSBpcyB0byBwcmVkaWN0YWJseSBsaW5rIFY0TDIKK2RyaXZlcnMgdG8gZGV2aWNlIG5vZGVzIGlmIG1vcmUgdGhhbiBvbmUgdmlkZW8gZGV2aWNlIGlzIGluc3RhbGxlZC4gVXNlIHRoZQorbmFtZSBvZiB0aGUgZGV2aWNlIG5vZGUgZm9sbG93ZWQgYnkgYSAiX25yIiBzdWZmaXgsIGZvciBleGFtcGxlICJ2aWRlb19uciIKK2ZvciA8ZmlsZW5hbWU+L2Rldi92aWRlbzwvZmlsZW5hbWU+LjwvcGFyYT4KKworICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CisvKiBNaW5vciBudW1iZXIgb2YgdGhlIGRldmljZSwgLTEgdG8gYWxsb2NhdGUgdGhlIGZpcnN0IHVudXNlZC4gKi8KK3N0YXRpYyBpbnQgdmlkZW9fbnIgPSAtMTsKKworbW9kdWxlX3BhcmFtICh2aWRlb19uciwgaW50LCAwNDQ0KTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisgIDwvc2VjdGlvbj4KKworICA8c2VjdGlvbiBpZD0iZHJpdmVyLXBjaSI+CisgICAgPHRpdGxlPlBDSSBEZXZpY2VzPC90aXRsZT4KKworICAgIDxwYXJhPlBDSSBkZXZpY2VzIGFyZSBpbml0aWFsaXplZCBsaWtlIHRoaXM6PC9wYXJhPgorCisgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgIDxwcm9ncmFtbGlzdGluZz4KK3R5cGVkZWYgc3RydWN0IHsKKwkvKiBTdGF0ZSBvZiBvbmUgcGh5c2ljYWwgZGV2aWNlLiAqLworfSBteV9kZXZpY2U7CisKK3N0YXRpYyBpbnQKK215X3Jlc3VtZSAgICAgICAgICAgICAgIChzdHJ1Y3QgcGNpX2RldiAqICAgICAgICAgICAgICAgcGNpX2RldikKK3sKKwkvKiBSZXN0b3JlIHRoZSBzdXNwZW5kZWQgZGV2aWNlIHRvIHdvcmtpbmcgc3RhdGUuICovCit9CisKK3N0YXRpYyBpbnQKK215X3N1c3BlbmQgICAgICAgICAgICAgIChzdHJ1Y3QgcGNpX2RldiAqICAgICAgICAgICAgICAgcGNpX2RldiwKKwkJCSBwbV9tZXNzYWdlX3QgICAgICAgICAgICAgICAgICAgc3RhdGUpCit7CisJLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb3JlIHRoZSBzeXN0ZW0gZ29lcyB0byBzbGVlcC4KKwkgICBTdG9wIGFsbCBETUFzIGFuZCBkaXNhYmxlIGludGVycnVwdHMsIHRoZW4gcHV0IHRoZSBkZXZpY2UKKwkgICBpbnRvIGEgbG93IHBvd2VyIHN0YXRlLiBGb3IgZGV0YWlscyBzZWUgdGhlIGtlcm5lbAorCSAgIHNvdXJjZXMgdW5kZXIgPGZpbGVuYW1lPkRvY3VtZW50YXRpb24vcG93ZXI8L2ZpbGVuYW1lPi4gKi8KKworCXJldHVybiAwOyAvKiBhIG5lZ2F0aXZlIHZhbHVlIG9uIGVycm9yLCAwIG9uIHN1Y2Nlc3MuICovCit9CisKK3N0YXRpYyB2b2lkCitteV9yZW1vdmUgICAgICAgICAgICAgICAoc3RydWN0IHBjaV9kZXYgKiAgICAgICAgICAgICAgIHBjaV9kZXYpCit7CisJbXlfZGV2aWNlICpteSA9IHBjaV9nZXRfZHJ2ZGF0YSAocGNpX2Rldik7CisKKwkvKiBEZXNjcmliZSBtZS4gKi8KK30KKworc3RhdGljIGludAorbXlfcHJvYmUgICAgICAgICAgICAgICAgKHN0cnVjdCBwY2lfZGV2ICogICAgICAgICAgICAgICBwY2lfZGV2LAorCQkJIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICogICBwY2lfaWQpCit7CisJbXlfZGV2aWNlICpteTsKKworCS8qIERlc2NyaWJlIG1lLiAqLworCisJLyogWW91IGNhbiBhbGxvY2F0ZSBwZXItZGV2aWNlIGRhdGEgaGVyZSBhbmQgc3RvcmUgYSBwb2ludGVyCisJICAgdG8gaXQgaW4gdGhlIHBjaV9kZXYgc3RydWN0dXJlLiAqLworCW15ID0gLi4uOworCXBjaV9zZXRfZHJ2ZGF0YSAocGNpX2RldiwgbXkpOworCisJcmV0dXJuIDA7IC8qIGEgbmVnYXRpdmUgdmFsdWUgb24gZXJyb3IsIDAgb24gc3VjY2Vzcy4gKi8KK30KKworLyogQSBsaXN0IG9mIHN1cHBvcnRlZCBQQ0kgZGV2aWNlcy4gKi8KK3N0YXRpYyBzdHJ1Y3QgcGNpX2RldmljZV9pZAorbXlfcGNpX2RldmljZV9pZHMgW10gPSB7CisJeyBQQ0lfVkVORE9SX0lEX0ZPTywgUENJX0RFVklDRV9JRF9CQVIsCisJICBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCAwIH0sCisJeyAwIH0gLyogZW5kIG9mIGxpc3QgKi8KK307CisKKy8qIExvYWQgb3VyIG1vZHVsZSBpZiBzdXBwb3J0ZWQgUENJIGRldmljZXMgYXJlIGluc3RhbGxlZC4gKi8KK01PRFVMRV9ERVZJQ0VfVEFCTEUgKHBjaSwgbXlfcGNpX2RldmljZV9pZHMpOworCitzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIKK215X3BjaV9kcml2ZXIgPSB7CisJLm5hbWUgICAgID0gIm15IiwKKwkuaWRfdGFibGUgPSBteV9wY2lfZGV2aWNlX2lkcywKKworCS5wcm9iZSAgICA9IG15X3Byb2JlLAorCS5yZW1vdmUgICA9IG15X3JlbW92ZSwKKworCS8qIFBvd2VyIG1hbmFnZW1lbnQgZnVuY3Rpb25zLiAqLworCS5zdXNwZW5kICA9IG15X3N1c3BlbmQsCisJLnJlc3VtZSAgID0gbXlfcmVzdW1lLAorfTsKKworc3RhdGljIHZvaWQKK215X21vZHVsZV9leGl0ICAgICAgICAgICh2b2lkKQoreworCXBjaV91bnJlZ2lzdGVyX2RyaXZlciAoJm15X3BjaV9kcml2ZXIpOworfQorCitzdGF0aWMgaW50CitteV9tb2R1bGVfaW5pdCAgICAgICAgICAodm9pZCkKK3sKKwlyZXR1cm4gcGNpX3JlZ2lzdGVyX2RyaXZlciAoJm15X3BjaV9kcml2ZXIpOworfQorPC9wcm9ncmFtbGlzdGluZz4KKyAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uIGlkPSJkcml2ZXItdXNiIj4KKyAgICA8dGl0bGU+VVNCIERldmljZXM8L3RpdGxlPgorICAgIDxwYXJhPnRvIGRvPC9wYXJhPgorICA8L3NlY3Rpb24+CisgIDxzZWN0aW9uIGlkPSJkcml2ZXItcmVnaXN0ZXJpbmciPgorICAgIDx0aXRsZT5SZWdpc3RlcmluZyBWNEwyIERyaXZlcnM8L3RpdGxlPgorCisgICAgPHBhcmE+QWZ0ZXIgYSBWNEwyIGRyaXZlciBwcm9iZWQgdGhlIGhhcmR3YXJlIGl0IHJlZ2lzdGVycyBvbmUgb3IgbW9yZQorZGV2aWNlcyB3aXRoIHRoZSB2aWRlb2RldiBtb2R1bGUuPC9wYXJhPgorICA8L3NlY3Rpb24+CisgIDxzZWN0aW9uIGlkPSJkcml2ZXItZmlsZS1vcHMiPgorICAgIDx0aXRsZT5GaWxlIE9wZXJhdGlvbnM8L3RpdGxlPgorICAgIDxwYXJhPnRvIGRvPC9wYXJhPgorICA8L3NlY3Rpb24+CisgIDxzZWN0aW9uIGlkPSJkcml2ZXItaW50ZXJuYWwtYXBpIj4KKyAgICA8dGl0bGU+SW50ZXJuYWwgQVBJPC90aXRsZT4KKyAgICA8cGFyYT50byBkbzwvcGFyYT4KKyAgPC9zZWN0aW9uPgorLS0+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2ZkbC1hcHBlbmRpeC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2ZkbC1hcHBlbmRpeC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWUyMjM5NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZmRsLWFwcGVuZGl4LnhtbApAQCAtMCwwICsxLDY3MSBAQAorPCEtLQorICAgICBUaGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlIDEuMSBpbiBEb2NCb29rCisgICAgIE1hcmt1cCBieSBFcmljIEJhdWRhaXMgPGJhdWRhaXNAb2tzdGF0ZS5lZHU+CisgICAgIE1haW50YWluZWQgYnkgdGhlIEdOT01FIERvY3VtZW50YXRpb24gUHJvamVjdAorICAgICBodHRwOi8vbGl2ZS5nbm9tZS5vcmcvRG9jdW1lbnRhdGlvblByb2plY3QKKyAgICAgVmVyc2lvbjogMS4wLjEKKyAgICAgTGFzdCBNb2RpZmllZDogTm92IDE2LCAyMDAwCistLT4KKworPGFwcGVuZGl4IGlkPSJmZGwiPgorICA8YXBwZW5kaXhpbmZvPgorICAgIDxyZWxlYXNlaW5mbz4KKyAgICAgIFZlcnNpb24gMS4xLCBNYXJjaCAyMDAwCisgICAgPC9yZWxlYXNlaW5mbz4KKyAgICA8Y29weXJpZ2h0PgorICAgICAgPHllYXI+MjAwMDwveWVhcj48aG9sZGVyPkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLjwvaG9sZGVyPgorICAgIDwvY29weXJpZ2h0PgorICAgIDxsZWdhbG5vdGljZSBpZD0iZmRsLWxlZ2Fsbm90aWNlIj4KKyAgICAgIDxwYXJhPgorCTxhZGRyZXNzPkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiA8c3RyZWV0PjU5IFRlbXBsZSBQbGFjZSwKKwlTdWl0ZSAzMzA8L3N0cmVldD4sIDxjaXR5PkJvc3RvbjwvY2l0eT4sIDxzdGF0ZT5NQTwvc3RhdGU+CisJPHBvc3Rjb2RlPjAyMTExLTEzMDc8L3Bvc3Rjb2RlPiAgPGNvdW50cnk+VVNBPC9jb3VudHJ5PjwvYWRkcmVzcz4KKwlFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhpcworCWxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KKyAgICAgIDwvcGFyYT4KKyAgICA8L2xlZ2Fsbm90aWNlPgorICA8L2FwcGVuZGl4aW5mbz4KKyAgPHRpdGxlPkdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZTwvdGl0bGU+CisKKyAgPHNlY3QxIGlkPSJmZGwtcHJlYW1ibGUiPgorICAgIDx0aXRsZT4wLiBQUkVBTUJMRTwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICBUaGUgcHVycG9zZSBvZiB0aGlzIExpY2Vuc2UgaXMgdG8gbWFrZSBhIG1hbnVhbCwgdGV4dGJvb2ssIG9yCisgICAgICBvdGhlciB3cml0dGVuIGRvY3VtZW50IDxxdW90ZT5mcmVlPC9xdW90ZT4gaW4gdGhlIHNlbnNlIG9mCisgICAgICBmcmVlZG9tOiB0byBhc3N1cmUgZXZlcnlvbmUgdGhlIGVmZmVjdGl2ZSBmcmVlZG9tIHRvIGNvcHkgYW5kCisgICAgICByZWRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dCBtb2RpZnlpbmcgaXQsIGVpdGhlcgorICAgICAgY29tbWVyY2lhbGx5IG9yIG5vbmNvbW1lcmNpYWxseS4gU2Vjb25kYXJpbHksIHRoaXMgTGljZW5zZQorICAgICAgcHJlc2VydmVzIGZvciB0aGUgYXV0aG9yIGFuZCBwdWJsaXNoZXIgYSB3YXkgdG8gZ2V0IGNyZWRpdCBmb3IKKyAgICAgIHRoZWlyIHdvcmssIHdoaWxlIG5vdCBiZWluZyBjb25zaWRlcmVkIHJlc3BvbnNpYmxlIGZvcgorICAgICAgbW9kaWZpY2F0aW9ucyBtYWRlIGJ5IG90aGVycy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgIFRoaXMgTGljZW5zZSBpcyBhIGtpbmQgb2YgPHF1b3RlPmNvcHlsZWZ0PC9xdW90ZT4sIHdoaWNoIG1lYW5zCisgICAgICB0aGF0IGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIGRvY3VtZW50IG11c3QgdGhlbXNlbHZlcyBiZSBmcmVlIGluCisgICAgICB0aGUgc2FtZSBzZW5zZS4gSXQgY29tcGxlbWVudHMgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorICAgICAgd2hpY2ggaXMgYSBjb3B5bGVmdCBsaWNlbnNlIGRlc2lnbmVkIGZvciBmcmVlIHNvZnR3YXJlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgV2UgaGF2ZSBkZXNpZ25lZCB0aGlzIExpY2Vuc2UgaW4gb3JkZXIgdG8gdXNlIGl0IGZvciBtYW51YWxzIGZvcgorICAgICAgZnJlZSBzb2Z0d2FyZSwgYmVjYXVzZSBmcmVlIHNvZnR3YXJlIG5lZWRzIGZyZWUgZG9jdW1lbnRhdGlvbjogYQorICAgICAgZnJlZSBwcm9ncmFtIHNob3VsZCBjb21lIHdpdGggbWFudWFscyBwcm92aWRpbmcgdGhlIHNhbWUKKyAgICAgIGZyZWVkb21zIHRoYXQgdGhlIHNvZnR3YXJlIGRvZXMuIEJ1dCB0aGlzIExpY2Vuc2UgaXMgbm90IGxpbWl0ZWQKKyAgICAgIHRvIHNvZnR3YXJlIG1hbnVhbHM7IGl0IGNhbiBiZSB1c2VkIGZvciBhbnkgdGV4dHVhbCB3b3JrLAorICAgICAgcmVnYXJkbGVzcyBvZiBzdWJqZWN0IG1hdHRlciBvciB3aGV0aGVyIGl0IGlzIHB1Ymxpc2hlZCBhcyBhCisgICAgICBwcmludGVkIGJvb2suIFdlIHJlY29tbWVuZCB0aGlzIExpY2Vuc2UgcHJpbmNpcGFsbHkgZm9yIHdvcmtzCisgICAgICB3aG9zZSBwdXJwb3NlIGlzIGluc3RydWN0aW9uIG9yIHJlZmVyZW5jZS4KKyAgICA8L3BhcmE+CisgIDwvc2VjdDE+CisgIDxzZWN0MSBpZD0iZmRsLXNlY3Rpb24xIj4KKyAgICA8dGl0bGU+MS4gQVBQTElDQUJJTElUWSBBTkQgREVGSU5JVElPTlM8L3RpdGxlPgorICAgIDxwYXJhIGlkPSJmZGwtZG9jdW1lbnQiPgorICAgICAgVGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8gYW55IG1hbnVhbCBvciBvdGhlciB3b3JrIHRoYXQgY29udGFpbnMgYQorICAgICAgbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBzYXlpbmcgaXQgY2FuIGJlCisgICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLiBUaGUKKyAgICAgIDxxdW90ZT5Eb2N1bWVudDwvcXVvdGU+LCBiZWxvdywgcmVmZXJzIHRvIGFueSBzdWNoIG1hbnVhbCBvcgorICAgICAgd29yay4gQW55IG1lbWJlciBvZiB0aGUgcHVibGljIGlzIGEgbGljZW5zZWUsIGFuZCBpcyBhZGRyZXNzZWQKKyAgICAgIGFzIDxxdW90ZT55b3U8L3F1b3RlPi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYSBpZD0iZmRsLW1vZGlmaWVkIj4KKyAgICAgIEEgPHF1b3RlPk1vZGlmaWVkIFZlcnNpb248L3F1b3RlPiBvZiB0aGUgRG9jdW1lbnQgbWVhbnMgYW55IHdvcmsKKyAgICAgIGNvbnRhaW5pbmcgdGhlIERvY3VtZW50IG9yIGEgcG9ydGlvbiBvZiBpdCwgZWl0aGVyIGNvcGllZAorICAgICAgdmVyYmF0aW0sIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZCBpbnRvIGFub3RoZXIKKyAgICAgIGxhbmd1YWdlLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhIGlkPSJmZGwtc2Vjb25kYXJ5Ij4KKyAgICAgIEEgPHF1b3RlPlNlY29uZGFyeSBTZWN0aW9uPC9xdW90ZT4gaXMgYSBuYW1lZCBhcHBlbmRpeCBvciBhCisgICAgICBmcm9udC1tYXR0ZXIgc2VjdGlvbiBvZiB0aGUgPGxpbmsKKyAgICAgIGxpbmtlbmQ9ImZkbC1kb2N1bWVudCI+RG9jdW1lbnQ8L2xpbms+IHRoYXQgZGVhbHMgZXhjbHVzaXZlbHkKKyAgICAgIHdpdGggdGhlIHJlbGF0aW9uc2hpcCBvZiB0aGUgcHVibGlzaGVycyBvciBhdXRob3JzIG9mIHRoZQorICAgICAgRG9jdW1lbnQgdG8gdGhlIERvY3VtZW50J3Mgb3ZlcmFsbCBzdWJqZWN0IChvciB0byByZWxhdGVkCisgICAgICBtYXR0ZXJzKSBhbmQgY29udGFpbnMgbm90aGluZyB0aGF0IGNvdWxkIGZhbGwgZGlyZWN0bHkgd2l0aGluCisgICAgICB0aGF0IG92ZXJhbGwgc3ViamVjdC4gKEZvciBleGFtcGxlLCBpZiB0aGUgRG9jdW1lbnQgaXMgaW4gcGFydCBhCisgICAgICB0ZXh0Ym9vayBvZiBtYXRoZW1hdGljcywgYSBTZWNvbmRhcnkgU2VjdGlvbiBtYXkgbm90IGV4cGxhaW4gYW55CisgICAgICBtYXRoZW1hdGljcy4pICBUaGUgcmVsYXRpb25zaGlwIGNvdWxkIGJlIGEgbWF0dGVyIG9mIGhpc3RvcmljYWwKKyAgICAgIGNvbm5lY3Rpb24gd2l0aCB0aGUgc3ViamVjdCBvciB3aXRoIHJlbGF0ZWQgbWF0dGVycywgb3Igb2YKKyAgICAgIGxlZ2FsLCBjb21tZXJjaWFsLCBwaGlsb3NvcGhpY2FsLCBldGhpY2FsIG9yIHBvbGl0aWNhbCBwb3NpdGlvbgorICAgICAgcmVnYXJkaW5nIHRoZW0uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmEgaWQ9ImZkbC1pbnZhcmlhbnQiPgorICAgICAgVGhlIDxxdW90ZT5JbnZhcmlhbnQgU2VjdGlvbnM8L3F1b3RlPiBhcmUgY2VydGFpbiA8bGluaworICAgICAgbGlua2VuZD0iZmRsLXNlY29uZGFyeSI+IFNlY29uZGFyeSBTZWN0aW9uczwvbGluaz4gd2hvc2UgdGl0bGVzCisgICAgICBhcmUgZGVzaWduYXRlZCwgYXMgYmVpbmcgdGhvc2Ugb2YgSW52YXJpYW50IFNlY3Rpb25zLCBpbiB0aGUKKyAgICAgIG5vdGljZSB0aGF0IHNheXMgdGhhdCB0aGUgPGxpbmsKKyAgICAgIGxpbmtlbmQ9ImZkbC1kb2N1bWVudCI+RG9jdW1lbnQ8L2xpbms+IGlzIHJlbGVhc2VkIHVuZGVyIHRoaXMKKyAgICAgIExpY2Vuc2UuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmEgaWQ9ImZkbC1jb3Zlci10ZXh0cyI+CisgICAgICBUaGUgPHF1b3RlPkNvdmVyIFRleHRzPC9xdW90ZT4gYXJlIGNlcnRhaW4gc2hvcnQgcGFzc2FnZXMgb2YKKyAgICAgIHRleHQgdGhhdCBhcmUgbGlzdGVkLCBhcyBGcm9udC1Db3ZlciBUZXh0cyBvciBCYWNrLUNvdmVyIFRleHRzLAorICAgICAgaW4gdGhlIG5vdGljZSB0aGF0IHNheXMgdGhhdCB0aGUgPGxpbmsKKyAgICAgIGxpbmtlbmQ9ImZkbC1kb2N1bWVudCI+RG9jdW1lbnQ8L2xpbms+IGlzIHJlbGVhc2VkIHVuZGVyIHRoaXMKKyAgICAgIExpY2Vuc2UuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmEgaWQ9ImZkbC10cmFuc3BhcmVudCI+CisgICAgICBBIDxxdW90ZT5UcmFuc3BhcmVudDwvcXVvdGU+IGNvcHkgb2YgdGhlIDxsaW5rCisgICAgICBsaW5rZW5kPSJmZGwtZG9jdW1lbnQiPiBEb2N1bWVudDwvbGluaz4gbWVhbnMgYSBtYWNoaW5lLXJlYWRhYmxlCisgICAgICBjb3B5LCByZXByZXNlbnRlZCBpbiBhIGZvcm1hdCB3aG9zZSBzcGVjaWZpY2F0aW9uIGlzIGF2YWlsYWJsZQorICAgICAgdG8gdGhlIGdlbmVyYWwgcHVibGljLCB3aG9zZSBjb250ZW50cyBjYW4gYmUgdmlld2VkIGFuZCBlZGl0ZWQKKyAgICAgIGRpcmVjdGx5IGFuZCBzdHJhaWdodGZvcndhcmRseSB3aXRoIGdlbmVyaWMgdGV4dCBlZGl0b3JzIG9yIChmb3IKKyAgICAgIGltYWdlcyBjb21wb3NlZCBvZiBwaXhlbHMpIGdlbmVyaWMgcGFpbnQgcHJvZ3JhbXMgb3IgKGZvcgorICAgICAgZHJhd2luZ3MpIHNvbWUgd2lkZWx5IGF2YWlsYWJsZSBkcmF3aW5nIGVkaXRvciwgYW5kIHRoYXQgaXMKKyAgICAgIHN1aXRhYmxlIGZvciBpbnB1dCB0byB0ZXh0IGZvcm1hdHRlcnMgb3IgZm9yIGF1dG9tYXRpYworICAgICAgdHJhbnNsYXRpb24gdG8gYSB2YXJpZXR5IG9mIGZvcm1hdHMgc3VpdGFibGUgZm9yIGlucHV0IHRvIHRleHQKKyAgICAgIGZvcm1hdHRlcnMuIEEgY29weSBtYWRlIGluIGFuIG90aGVyd2lzZSBUcmFuc3BhcmVudCBmaWxlIGZvcm1hdAorICAgICAgd2hvc2UgbWFya3VwIGhhcyBiZWVuIGRlc2lnbmVkIHRvIHRod2FydCBvciBkaXNjb3VyYWdlCisgICAgICBzdWJzZXF1ZW50IG1vZGlmaWNhdGlvbiBieSByZWFkZXJzIGlzIG5vdCBUcmFuc3BhcmVudC4gIEEgY29weQorICAgICAgdGhhdCBpcyBub3QgPHF1b3RlPlRyYW5zcGFyZW50PC9xdW90ZT4gaXMgY2FsbGVkCisgICAgICA8cXVvdGU+T3BhcXVlPC9xdW90ZT4uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBFeGFtcGxlcyBvZiBzdWl0YWJsZSBmb3JtYXRzIGZvciBUcmFuc3BhcmVudCBjb3BpZXMgaW5jbHVkZQorICAgICAgcGxhaW4gQVNDSUkgd2l0aG91dCBtYXJrdXAsIFRleGluZm8gaW5wdXQgZm9ybWF0LCBMYVRlWCBpbnB1dAorICAgICAgZm9ybWF0LCBTR01MIG9yIFhNTCB1c2luZyBhIHB1YmxpY2x5IGF2YWlsYWJsZSBEVEQsIGFuZAorICAgICAgc3RhbmRhcmQtY29uZm9ybWluZyBzaW1wbGUgSFRNTCBkZXNpZ25lZCBmb3IgaHVtYW4KKyAgICAgIG1vZGlmaWNhdGlvbi4gT3BhcXVlIGZvcm1hdHMgaW5jbHVkZSBQb3N0U2NyaXB0LCBQREYsCisgICAgICBwcm9wcmlldGFyeSBmb3JtYXRzIHRoYXQgY2FuIGJlIHJlYWQgYW5kIGVkaXRlZCBvbmx5IGJ5CisgICAgICBwcm9wcmlldGFyeSB3b3JkIHByb2Nlc3NvcnMsIFNHTUwgb3IgWE1MIGZvciB3aGljaCB0aGUgRFRECisgICAgICBhbmQvb3IgcHJvY2Vzc2luZyB0b29scyBhcmUgbm90IGdlbmVyYWxseSBhdmFpbGFibGUsIGFuZCB0aGUKKyAgICAgIG1hY2hpbmUtZ2VuZXJhdGVkIEhUTUwgcHJvZHVjZWQgYnkgc29tZSB3b3JkIHByb2Nlc3NvcnMgZm9yCisgICAgICBvdXRwdXQgcHVycG9zZXMgb25seS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYSBpZD0iZmRsLXRpdGxlLXBhZ2UiPgorICAgICAgVGhlIDxxdW90ZT5UaXRsZSBQYWdlPC9xdW90ZT4gbWVhbnMsIGZvciBhIHByaW50ZWQgYm9vaywgdGhlCisgICAgICB0aXRsZSBwYWdlIGl0c2VsZiwgcGx1cyBzdWNoIGZvbGxvd2luZyBwYWdlcyBhcyBhcmUgbmVlZGVkIHRvCisgICAgICBob2xkLCBsZWdpYmx5LCB0aGUgbWF0ZXJpYWwgdGhpcyBMaWNlbnNlIHJlcXVpcmVzIHRvIGFwcGVhciBpbgorICAgICAgdGhlIHRpdGxlIHBhZ2UuIEZvciB3b3JrcyBpbiBmb3JtYXRzIHdoaWNoIGRvIG5vdCBoYXZlIGFueSB0aXRsZQorICAgICAgcGFnZSBhcyBzdWNoLCA8cXVvdGU+VGl0bGUgUGFnZTwvcXVvdGU+IG1lYW5zIHRoZSB0ZXh0IG5lYXIgdGhlCisgICAgICBtb3N0IHByb21pbmVudCBhcHBlYXJhbmNlIG9mIHRoZSB3b3JrJ3MgdGl0bGUsIHByZWNlZGluZyB0aGUKKyAgICAgIGJlZ2lubmluZyBvZiB0aGUgYm9keSBvZiB0aGUgdGV4dC4KKyAgICA8L3BhcmE+CisgIDwvc2VjdDE+CisKKyAgPHNlY3QxIGlkPSJmZGwtc2VjdGlvbjIiPgorICAgIDx0aXRsZT4yLiBWRVJCQVRJTSBDT1BZSU5HPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgPGxpbmsKKyAgICAgIGxpbmtlbmQ9ImZkbC1kb2N1bWVudCI+RG9jdW1lbnQ8L2xpbms+IGluIGFueSBtZWRpdW0sIGVpdGhlcgorICAgICAgY29tbWVyY2lhbGx5IG9yIG5vbmNvbW1lcmNpYWxseSwgcHJvdmlkZWQgdGhhdCB0aGlzIExpY2Vuc2UsIHRoZQorICAgICAgY29weXJpZ2h0IG5vdGljZXMsIGFuZCB0aGUgbGljZW5zZSBub3RpY2Ugc2F5aW5nIHRoaXMgTGljZW5zZQorICAgICAgYXBwbGllcyB0byB0aGUgRG9jdW1lbnQgYXJlIHJlcHJvZHVjZWQgaW4gYWxsIGNvcGllcywgYW5kIHRoYXQKKyAgICAgIHlvdSBhZGQgbm8gb3RoZXIgY29uZGl0aW9ucyB3aGF0c29ldmVyIHRvIHRob3NlIG9mIHRoaXMKKyAgICAgIExpY2Vuc2UuIFlvdSBtYXkgbm90IHVzZSB0ZWNobmljYWwgbWVhc3VyZXMgdG8gb2JzdHJ1Y3Qgb3IKKyAgICAgIGNvbnRyb2wgdGhlIHJlYWRpbmcgb3IgZnVydGhlciBjb3B5aW5nIG9mIHRoZSBjb3BpZXMgeW91IG1ha2Ugb3IKKyAgICAgIGRpc3RyaWJ1dGUuIEhvd2V2ZXIsIHlvdSBtYXkgYWNjZXB0IGNvbXBlbnNhdGlvbiBpbiBleGNoYW5nZSBmb3IKKyAgICAgIGNvcGllcy4gSWYgeW91IGRpc3RyaWJ1dGUgYSBsYXJnZSBlbm91Z2ggbnVtYmVyIG9mIGNvcGllcyB5b3UKKyAgICAgIG11c3QgYWxzbyBmb2xsb3cgdGhlIGNvbmRpdGlvbnMgaW4gPGxpbmsKKyAgICAgIGxpbmtlbmQ9ImZkbC1zZWN0aW9uMyI+c2VjdGlvbiAzPC9saW5rPi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgIFlvdSBtYXkgYWxzbyBsZW5kIGNvcGllcywgdW5kZXIgdGhlIHNhbWUgY29uZGl0aW9ucyBzdGF0ZWQKKyAgICAgIGFib3ZlLCBhbmQgeW91IG1heSBwdWJsaWNseSBkaXNwbGF5IGNvcGllcy4KKyAgICA8L3BhcmE+CisgICAgPC9zZWN0MT4KKworICA8c2VjdDEgaWQ9ImZkbC1zZWN0aW9uMyI+CisgICAgPHRpdGxlPjMuIENPUFlJTkcgSU4gUVVBTlRJVFk8L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgSWYgeW91IHB1Ymxpc2ggcHJpbnRlZCBjb3BpZXMgb2YgdGhlIDxsaW5rCisgICAgICBsaW5rZW5kPSJmZGwtZG9jdW1lbnQiPkRvY3VtZW50PC9saW5rPiBudW1iZXJpbmcgbW9yZSB0aGFuIDEwMCwKKyAgICAgIGFuZCB0aGUgRG9jdW1lbnQncyBsaWNlbnNlIG5vdGljZSByZXF1aXJlcyA8bGluaworICAgICAgbGlua2VuZD0iZmRsLWNvdmVyLXRleHRzIj5Db3ZlciBUZXh0czwvbGluaz4sIHlvdSBtdXN0IGVuY2xvc2UKKyAgICAgIHRoZSBjb3BpZXMgaW4gY292ZXJzIHRoYXQgY2FycnksIGNsZWFybHkgYW5kIGxlZ2libHksIGFsbCB0aGVzZQorICAgICAgQ292ZXIgVGV4dHM6IEZyb250LUNvdmVyIFRleHRzIG9uIHRoZSBmcm9udCBjb3ZlciwgYW5kCisgICAgICBCYWNrLUNvdmVyIFRleHRzIG9uIHRoZSBiYWNrIGNvdmVyLiBCb3RoIGNvdmVycyBtdXN0IGFsc28KKyAgICAgIGNsZWFybHkgYW5kIGxlZ2libHkgaWRlbnRpZnkgeW91IGFzIHRoZSBwdWJsaXNoZXIgb2YgdGhlc2UKKyAgICAgIGNvcGllcy4gVGhlIGZyb250IGNvdmVyIG11c3QgcHJlc2VudCB0aGUgZnVsbCB0aXRsZSB3aXRoIGFsbAorICAgICAgd29yZHMgb2YgdGhlIHRpdGxlIGVxdWFsbHkgcHJvbWluZW50IGFuZCB2aXNpYmxlLiBZb3UgbWF5IGFkZAorICAgICAgb3RoZXIgbWF0ZXJpYWwgb24gdGhlIGNvdmVycyBpbiBhZGRpdGlvbi4gQ29weWluZyB3aXRoIGNoYW5nZXMKKyAgICAgIGxpbWl0ZWQgdG8gdGhlIGNvdmVycywgYXMgbG9uZyBhcyB0aGV5IHByZXNlcnZlIHRoZSB0aXRsZSBvZiB0aGUKKyAgICAgIDxsaW5rIGxpbmtlbmQ9ImZkbC1kb2N1bWVudCI+RG9jdW1lbnQ8L2xpbms+IGFuZCBzYXRpc2Z5IHRoZXNlCisgICAgICBjb25kaXRpb25zLCBjYW4gYmUgdHJlYXRlZCBhcyB2ZXJiYXRpbSBjb3B5aW5nIGluIG90aGVyCisgICAgICByZXNwZWN0cy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgIElmIHRoZSByZXF1aXJlZCB0ZXh0cyBmb3IgZWl0aGVyIGNvdmVyIGFyZSB0b28gdm9sdW1pbm91cyB0byBmaXQKKyAgICAgIGxlZ2libHksIHlvdSBzaG91bGQgcHV0IHRoZSBmaXJzdCBvbmVzIGxpc3RlZCAoYXMgbWFueSBhcyBmaXQKKyAgICAgIHJlYXNvbmFibHkpIG9uIHRoZSBhY3R1YWwgY292ZXIsIGFuZCBjb250aW51ZSB0aGUgcmVzdCBvbnRvCisgICAgICBhZGphY2VudCBwYWdlcy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgIElmIHlvdSBwdWJsaXNoIG9yIGRpc3RyaWJ1dGUgPGxpbmsKKyAgICAgIGxpbmtlbmQ9ImZkbC10cmFuc3BhcmVudCI+T3BhcXVlPC9saW5rPiBjb3BpZXMgb2YgdGhlIDxsaW5rCisgICAgICBsaW5rZW5kPSJmZGwtZG9jdW1lbnQiPkRvY3VtZW50PC9saW5rPiBudW1iZXJpbmcgbW9yZSB0aGFuIDEwMCwKKyAgICAgIHlvdSBtdXN0IGVpdGhlciBpbmNsdWRlIGEgbWFjaGluZS1yZWFkYWJsZSA8bGluaworICAgICAgbGlua2VuZD0iZmRsLXRyYW5zcGFyZW50Ij5UcmFuc3BhcmVudDwvbGluaz4gY29weSBhbG9uZyB3aXRoCisgICAgICBlYWNoIE9wYXF1ZSBjb3B5LCBvciBzdGF0ZSBpbiBvciB3aXRoIGVhY2ggT3BhcXVlIGNvcHkgYQorICAgICAgcHVibGljbHktYWNjZXNzaWJsZSBjb21wdXRlci1uZXR3b3JrIGxvY2F0aW9uIGNvbnRhaW5pbmcgYQorICAgICAgY29tcGxldGUgVHJhbnNwYXJlbnQgY29weSBvZiB0aGUgRG9jdW1lbnQsIGZyZWUgb2YgYWRkZWQKKyAgICAgIG1hdGVyaWFsLCB3aGljaCB0aGUgZ2VuZXJhbCBuZXR3b3JrLXVzaW5nIHB1YmxpYyBoYXMgYWNjZXNzIHRvCisgICAgICBkb3dubG9hZCBhbm9ueW1vdXNseSBhdCBubyBjaGFyZ2UgdXNpbmcgcHVibGljLXN0YW5kYXJkIG5ldHdvcmsKKyAgICAgIHByb3RvY29scy4gSWYgeW91IHVzZSB0aGUgbGF0dGVyIG9wdGlvbiwgeW91IG11c3QgdGFrZQorICAgICAgcmVhc29uYWJseSBwcnVkZW50IHN0ZXBzLCB3aGVuIHlvdSBiZWdpbiBkaXN0cmlidXRpb24gb2YgT3BhcXVlCisgICAgICBjb3BpZXMgaW4gcXVhbnRpdHksIHRvIGVuc3VyZSB0aGF0IHRoaXMgVHJhbnNwYXJlbnQgY29weSB3aWxsCisgICAgICByZW1haW4gdGh1cyBhY2Nlc3NpYmxlIGF0IHRoZSBzdGF0ZWQgbG9jYXRpb24gdW50aWwgYXQgbGVhc3Qgb25lCisgICAgICB5ZWFyIGFmdGVyIHRoZSBsYXN0IHRpbWUgeW91IGRpc3RyaWJ1dGUgYW4gT3BhcXVlIGNvcHkgKGRpcmVjdGx5CisgICAgICBvciB0aHJvdWdoIHlvdXIgYWdlbnRzIG9yIHJldGFpbGVycykgb2YgdGhhdCBlZGl0aW9uIHRvIHRoZQorICAgICAgcHVibGljLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgSXQgaXMgcmVxdWVzdGVkLCBidXQgbm90IHJlcXVpcmVkLCB0aGF0IHlvdSBjb250YWN0IHRoZSBhdXRob3JzCisgICAgICBvZiB0aGUgPGxpbmsgbGlua2VuZD0iZmRsLWRvY3VtZW50Ij5Eb2N1bWVudDwvbGluaz4gd2VsbCBiZWZvcmUKKyAgICAgIHJlZGlzdHJpYnV0aW5nIGFueSBsYXJnZSBudW1iZXIgb2YgY29waWVzLCB0byBnaXZlIHRoZW0gYSBjaGFuY2UKKyAgICAgIHRvIHByb3ZpZGUgeW91IHdpdGggYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBEb2N1bWVudC4KKyAgICA8L3BhcmE+CisgICAgPC9zZWN0MT4KKworICA8c2VjdDEgaWQ9ImZkbC1zZWN0aW9uNCI+CisgICAgPHRpdGxlPjQuIE1PRElGSUNBVElPTlM8L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIGEgPGxpbmsKKyAgICAgIGxpbmtlbmQ9ImZkbC1tb2RpZmllZCI+TW9kaWZpZWQgVmVyc2lvbjwvbGluaz4gb2YgdGhlIDxsaW5rCisgICAgICBsaW5rZW5kPSJmZGwtZG9jdW1lbnQiPkRvY3VtZW50PC9saW5rPiB1bmRlciB0aGUgY29uZGl0aW9ucyBvZgorICAgICAgc2VjdGlvbnMgPGxpbmsgbGlua2VuZD0iZmRsLXNlY3Rpb24yIj4yPC9saW5rPiBhbmQgPGxpbmsKKyAgICAgIGxpbmtlbmQ9ImZkbC1zZWN0aW9uMyI+MzwvbGluaz4gYWJvdmUsIHByb3ZpZGVkIHRoYXQgeW91IHJlbGVhc2UKKyAgICAgIHRoZSBNb2RpZmllZCBWZXJzaW9uIHVuZGVyIHByZWNpc2VseSB0aGlzIExpY2Vuc2UsIHdpdGggdGhlCisgICAgICBNb2RpZmllZCBWZXJzaW9uIGZpbGxpbmcgdGhlIHJvbGUgb2YgdGhlIERvY3VtZW50LCB0aHVzCisgICAgICBsaWNlbnNpbmcgZGlzdHJpYnV0aW9uIGFuZCBtb2RpZmljYXRpb24gb2YgdGhlIE1vZGlmaWVkIFZlcnNpb24KKyAgICAgIHRvIHdob2V2ZXIgcG9zc2Vzc2VzIGEgY29weSBvZiBpdC4gSW4gYWRkaXRpb24sIHlvdSBtdXN0IGRvCisgICAgICB0aGVzZSB0aGluZ3MgaW4gdGhlIE1vZGlmaWVkIFZlcnNpb246CisgICAgPC9wYXJhPgorCisgICAgPGl0ZW1pemVkbGlzdCBtYXJrPSJvcGVuY2lyY2xlIj4KKyAgICAgIDxsaXN0aXRlbT4KKwk8Zm9ybWFscGFyYT4KKwkgIDx0aXRsZT5BPC90aXRsZT4KKwkgIDxwYXJhPgorCSAgICBVc2UgaW4gdGhlIDxsaW5rIGxpbmtlbmQ9ImZkbC10aXRsZS1wYWdlIj5UaXRsZQorCSAgICBQYWdlPC9saW5rPiAoYW5kIG9uIHRoZSBjb3ZlcnMsIGlmIGFueSkgYSB0aXRsZSBkaXN0aW5jdAorCSAgICBmcm9tIHRoYXQgb2YgdGhlIDxsaW5rCisJICAgIGxpbmtlbmQ9ImZkbC1kb2N1bWVudCI+RG9jdW1lbnQ8L2xpbms+LCBhbmQgZnJvbSB0aG9zZSBvZgorCSAgICBwcmV2aW91cyB2ZXJzaW9ucyAod2hpY2ggc2hvdWxkLCBpZiB0aGVyZSB3ZXJlIGFueSwgYmUKKwkgICAgbGlzdGVkIGluIHRoZSBIaXN0b3J5IHNlY3Rpb24gb2YgdGhlIERvY3VtZW50KS4gWW91IG1heQorCSAgICB1c2UgdGhlIHNhbWUgdGl0bGUgYXMgYSBwcmV2aW91cyB2ZXJzaW9uIGlmIHRoZSBvcmlnaW5hbAorCSAgICBwdWJsaXNoZXIgb2YgdGhhdCB2ZXJzaW9uIGdpdmVzIHBlcm1pc3Npb24uCisJICA8L3BhcmE+CisJPC9mb3JtYWxwYXJhPgorICAgICAgPC9saXN0aXRlbT4KKworICAgICAgPGxpc3RpdGVtPgorCTxmb3JtYWxwYXJhPgorCSAgPHRpdGxlPkI8L3RpdGxlPgorCSAgPHBhcmE+CisJICAgIExpc3Qgb24gdGhlIDxsaW5rIGxpbmtlbmQ9ImZkbC10aXRsZS1wYWdlIj5UaXRsZQorCSAgICBQYWdlPC9saW5rPiwgYXMgYXV0aG9ycywgb25lIG9yIG1vcmUgcGVyc29ucyBvciBlbnRpdGllcworCSAgICByZXNwb25zaWJsZSBmb3IgYXV0aG9yc2hpcCBvZiB0aGUgbW9kaWZpY2F0aW9ucyBpbiB0aGUKKwkgICAgPGxpbmsgbGlua2VuZD0iZmRsLW1vZGlmaWVkIj5Nb2RpZmllZCBWZXJzaW9uPC9saW5rPiwKKwkgICAgdG9nZXRoZXIgd2l0aCBhdCBsZWFzdCBmaXZlIG9mIHRoZSBwcmluY2lwYWwgYXV0aG9ycyBvZgorCSAgICB0aGUgPGxpbmsgbGlua2VuZD0iZmRsLWRvY3VtZW50Ij5Eb2N1bWVudDwvbGluaz4gKGFsbCBvZgorCSAgICBpdHMgcHJpbmNpcGFsIGF1dGhvcnMsIGlmIGl0IGhhcyBsZXNzIHRoYW4gZml2ZSkuCisJICA8L3BhcmE+CisJPC9mb3JtYWxwYXJhPgorICAgICAgPC9saXN0aXRlbT4KKworICAgICAgPGxpc3RpdGVtPgorCTxmb3JtYWxwYXJhPgorCSAgPHRpdGxlPkM8L3RpdGxlPgorCSAgPHBhcmE+CisJICAgIFN0YXRlIG9uIHRoZSA8bGluayBsaW5rZW5kPSJmZGwtdGl0bGUtcGFnZSI+VGl0bGUKKwkgICAgUGFnZTwvbGluaz4gdGhlIG5hbWUgb2YgdGhlIHB1Ymxpc2hlciBvZiB0aGUgPGxpbmsKKwkgICAgbGlua2VuZD0iZmRsLW1vZGlmaWVkIj5Nb2RpZmllZCBWZXJzaW9uPC9saW5rPiwgYXMgdGhlCisJICAgIHB1Ymxpc2hlci4KKwkgIDwvcGFyYT4KKwk8L2Zvcm1hbHBhcmE+CisgICAgICA8L2xpc3RpdGVtPgorCisgICAgICA8bGlzdGl0ZW0+CisJPGZvcm1hbHBhcmE+CisJICA8dGl0bGU+RDwvdGl0bGU+CisJICA8cGFyYT4KKwkgICAgUHJlc2VydmUgYWxsIHRoZSBjb3B5cmlnaHQgbm90aWNlcyBvZiB0aGUgPGxpbmsKKwkgICAgbGlua2VuZD0iZmRsLWRvY3VtZW50Ij5Eb2N1bWVudDwvbGluaz4uCisJICA8L3BhcmE+CisJPC9mb3JtYWxwYXJhPgorICAgICAgPC9saXN0aXRlbT4KKworICAgICAgPGxpc3RpdGVtPgorCTxmb3JtYWxwYXJhPgorCSAgPHRpdGxlPkU8L3RpdGxlPgorCSAgPHBhcmE+CisJICAgIEFkZCBhbiBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlIGZvciB5b3VyIG1vZGlmaWNhdGlvbnMKKwkgICAgYWRqYWNlbnQgdG8gdGhlIG90aGVyIGNvcHlyaWdodCBub3RpY2VzLgorCSAgPC9wYXJhPgorCTwvZm9ybWFscGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgIDxsaXN0aXRlbT4KKwk8Zm9ybWFscGFyYT4KKwkgIDx0aXRsZT5GPC90aXRsZT4KKwkgIDxwYXJhPgorCSAgICBJbmNsdWRlLCBpbW1lZGlhdGVseSBhZnRlciB0aGUgY29weXJpZ2h0IG5vdGljZXMsIGEKKwkgICAgbGljZW5zZSBub3RpY2UgZ2l2aW5nIHRoZSBwdWJsaWMgcGVybWlzc2lvbiB0byB1c2UgdGhlCisJICAgIDxsaW5rIGxpbmtlbmQ9ImZkbC1tb2RpZmllZCI+TW9kaWZpZWQgVmVyc2lvbjwvbGluaz4gdW5kZXIKKwkgICAgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwgaW4gdGhlIGZvcm0gc2hvd24gaW4gdGhlCisJICAgIEFkZGVuZHVtIGJlbG93LgorCSAgPC9wYXJhPgorCTwvZm9ybWFscGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgIDxsaXN0aXRlbT4KKwk8Zm9ybWFscGFyYT4KKwkgIDx0aXRsZT5HPC90aXRsZT4KKwkgIDxwYXJhPgorCSAgICBQcmVzZXJ2ZSBpbiB0aGF0IGxpY2Vuc2Ugbm90aWNlIHRoZSBmdWxsIGxpc3RzIG9mIDxsaW5rCisJICAgIGxpbmtlbmQ9ImZkbC1pbnZhcmlhbnQiPiBJbnZhcmlhbnQgU2VjdGlvbnM8L2xpbms+IGFuZAorCSAgICByZXF1aXJlZCA8bGluayBsaW5rZW5kPSJmZGwtY292ZXItdGV4dHMiPkNvdmVyCisJICAgIFRleHRzPC9saW5rPiBnaXZlbiBpbiB0aGUgPGxpbmsKKwkgICAgbGlua2VuZD0iZmRsLWRvY3VtZW50Ij5Eb2N1bWVudCdzPC9saW5rPiBsaWNlbnNlIG5vdGljZS4KKwkgIDwvcGFyYT4KKwk8L2Zvcm1hbHBhcmE+CisgICAgICA8L2xpc3RpdGVtPgorCisgICAgICA8bGlzdGl0ZW0+CisJPGZvcm1hbHBhcmE+CisJICA8dGl0bGU+SDwvdGl0bGU+CisJICA8cGFyYT4KKwkgICAgSW5jbHVkZSBhbiB1bmFsdGVyZWQgY29weSBvZiB0aGlzIExpY2Vuc2UuCisJICA8L3BhcmE+CisJPC9mb3JtYWxwYXJhPgorICAgICAgPC9saXN0aXRlbT4KKworICAgICAgPGxpc3RpdGVtPgorCTxmb3JtYWxwYXJhPgorCSAgPHRpdGxlPkk8L3RpdGxlPgorCSAgPHBhcmE+CisJICAgIFByZXNlcnZlIHRoZSBzZWN0aW9uIGVudGl0bGVkIDxxdW90ZT5IaXN0b3J5PC9xdW90ZT4sIGFuZAorCSAgICBpdHMgdGl0bGUsIGFuZCBhZGQgdG8gaXQgYW4gaXRlbSBzdGF0aW5nIGF0IGxlYXN0IHRoZQorCSAgICB0aXRsZSwgeWVhciwgbmV3IGF1dGhvcnMsIGFuZCBwdWJsaXNoZXIgb2YgdGhlIDxsaW5rCisJICAgIGxpbmtlbmQ9ImZkbC1tb2RpZmllZCI+TW9kaWZpZWQgVmVyc2lvbiA8L2xpbms+YXMgZ2l2ZW4gb24KKwkgICAgdGhlIDxsaW5rIGxpbmtlbmQ9ImZkbC10aXRsZS1wYWdlIj5UaXRsZSBQYWdlPC9saW5rPi4gIElmCisJICAgIHRoZXJlIGlzIG5vIHNlY3Rpb24gZW50aXRsZWQgPHF1b3RlPkhpc3Rvcnk8L3F1b3RlPiBpbiB0aGUKKwkgICAgPGxpbmsgbGlua2VuZD0iZmRsLWRvY3VtZW50Ij5Eb2N1bWVudDwvbGluaz4sIGNyZWF0ZSBvbmUKKwkgICAgc3RhdGluZyB0aGUgdGl0bGUsIHllYXIsIGF1dGhvcnMsIGFuZCBwdWJsaXNoZXIgb2YgdGhlCisJICAgIERvY3VtZW50IGFzIGdpdmVuIG9uIGl0cyBUaXRsZSBQYWdlLCB0aGVuIGFkZCBhbiBpdGVtCisJICAgIGRlc2NyaWJpbmcgdGhlIE1vZGlmaWVkIFZlcnNpb24gYXMgc3RhdGVkIGluIHRoZSBwcmV2aW91cworCSAgICBzZW50ZW5jZS4KKwkgIDwvcGFyYT4KKwk8L2Zvcm1hbHBhcmE+CisgICAgICA8L2xpc3RpdGVtPgorCisgICAgICA8bGlzdGl0ZW0+CisJPGZvcm1hbHBhcmE+CisJICA8dGl0bGU+SjwvdGl0bGU+CisJICA8cGFyYT4KKwkgICAgUHJlc2VydmUgdGhlIG5ldHdvcmsgbG9jYXRpb24sIGlmIGFueSwgZ2l2ZW4gaW4gdGhlIDxsaW5rCisJICAgIGxpbmtlbmQ9ImZkbC1kb2N1bWVudCI+RG9jdW1lbnQ8L2xpbms+IGZvciBwdWJsaWMgYWNjZXNzCisJICAgIHRvIGEgPGxpbmsgbGlua2VuZD0iZmRsLXRyYW5zcGFyZW50Ij5UcmFuc3BhcmVudDwvbGluaz4KKwkgICAgY29weSBvZiB0aGUgRG9jdW1lbnQsIGFuZCBsaWtld2lzZSB0aGUgbmV0d29yayBsb2NhdGlvbnMKKwkgICAgZ2l2ZW4gaW4gdGhlIERvY3VtZW50IGZvciBwcmV2aW91cyB2ZXJzaW9ucyBpdCB3YXMgYmFzZWQKKwkgICAgb24uIFRoZXNlIG1heSBiZSBwbGFjZWQgaW4gdGhlIDxxdW90ZT5IaXN0b3J5PC9xdW90ZT4KKwkgICAgc2VjdGlvbi4gIFlvdSBtYXkgb21pdCBhIG5ldHdvcmsgbG9jYXRpb24gZm9yIGEgd29yayB0aGF0CisJICAgIHdhcyBwdWJsaXNoZWQgYXQgbGVhc3QgZm91ciB5ZWFycyBiZWZvcmUgdGhlIERvY3VtZW50CisJICAgIGl0c2VsZiwgb3IgaWYgdGhlIG9yaWdpbmFsIHB1Ymxpc2hlciBvZiB0aGUgdmVyc2lvbiBpdAorCSAgICByZWZlcnMgdG8gZ2l2ZXMgcGVybWlzc2lvbi4KKwkgIDwvcGFyYT4KKwk8L2Zvcm1hbHBhcmE+CisgICAgICA8L2xpc3RpdGVtPgorCisgICAgICA8bGlzdGl0ZW0+CisJPGZvcm1hbHBhcmE+CisJICA8dGl0bGU+SzwvdGl0bGU+CisJICA8cGFyYT4KKwkgICAgSW4gYW55IHNlY3Rpb24gZW50aXRsZWQgPHF1b3RlPkFja25vd2xlZGdlbWVudHM8L3F1b3RlPiBvcgorCSAgICA8cXVvdGU+RGVkaWNhdGlvbnM8L3F1b3RlPiwgcHJlc2VydmUgdGhlIHNlY3Rpb24ncyB0aXRsZSwKKwkgICAgYW5kIHByZXNlcnZlIGluIHRoZSBzZWN0aW9uIGFsbCB0aGUgc3Vic3RhbmNlIGFuZCB0b25lIG9mCisJICAgIGVhY2ggb2YgdGhlIGNvbnRyaWJ1dG9yIGFja25vd2xlZGdlbWVudHMgYW5kL29yCisJICAgIGRlZGljYXRpb25zIGdpdmVuIHRoZXJlaW4uCisJICA8L3BhcmE+CisJPC9mb3JtYWxwYXJhPgorICAgICAgPC9saXN0aXRlbT4KKworICAgICAgPGxpc3RpdGVtPgorCTxmb3JtYWxwYXJhPgorCSAgPHRpdGxlPkw8L3RpdGxlPgorCSAgPHBhcmE+CisJICAgIFByZXNlcnZlIGFsbCB0aGUgPGxpbmsgbGlua2VuZD0iZmRsLWludmFyaWFudCI+SW52YXJpYW50CisJICAgIFNlY3Rpb25zPC9saW5rPiBvZiB0aGUgPGxpbmsKKwkgICAgbGlua2VuZD0iZmRsLWRvY3VtZW50Ij5Eb2N1bWVudDwvbGluaz4sIHVuYWx0ZXJlZCBpbiB0aGVpcgorCSAgICB0ZXh0IGFuZCBpbiB0aGVpciB0aXRsZXMuICBTZWN0aW9uIG51bWJlcnMgb3IgdGhlCisJICAgIGVxdWl2YWxlbnQgYXJlIG5vdCBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIHNlY3Rpb24gdGl0bGVzLgorCSAgPC9wYXJhPgorCTwvZm9ybWFscGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgIDxsaXN0aXRlbT4KKwk8Zm9ybWFscGFyYT4KKwkgIDx0aXRsZT5NPC90aXRsZT4KKwkgIDxwYXJhPgorCSAgICBEZWxldGUgYW55IHNlY3Rpb24gZW50aXRsZWQKKwkgICAgPHF1b3RlPkVuZG9yc2VtZW50czwvcXVvdGU+LiBTdWNoIGEgc2VjdGlvbiBtYXkgbm90IGJlCisJICAgIGluY2x1ZGVkIGluIHRoZSA8bGluayBsaW5rZW5kPSJmZGwtbW9kaWZpZWQiPk1vZGlmaWVkCisJICAgIFZlcnNpb248L2xpbms+LgorCSAgPC9wYXJhPgorCTwvZm9ybWFscGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisKKyAgICAgIDxsaXN0aXRlbT4KKwk8Zm9ybWFscGFyYT4KKwkgIDx0aXRsZT5OPC90aXRsZT4KKwkgIDxwYXJhPgorCSAgICBEbyBub3QgcmV0aXRsZSBhbnkgZXhpc3Rpbmcgc2VjdGlvbiBhcworCSAgICA8cXVvdGU+RW5kb3JzZW1lbnRzPC9xdW90ZT4gb3IgdG8gY29uZmxpY3QgaW4gdGl0bGUgd2l0aAorCSAgICBhbnkgPGxpbmsgbGlua2VuZD0iZmRsLWludmFyaWFudCI+SW52YXJpYW50CisJICAgIFNlY3Rpb248L2xpbms+LgorCSAgPC9wYXJhPgorCTwvZm9ybWFscGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgPC9pdGVtaXplZGxpc3Q+CisKKyAgICA8cGFyYT4KKyAgICAgIElmIHRoZSA8bGluayBsaW5rZW5kPSJmZGwtbW9kaWZpZWQiPk1vZGlmaWVkIFZlcnNpb248L2xpbms+CisgICAgICBpbmNsdWRlcyBuZXcgZnJvbnQtbWF0dGVyIHNlY3Rpb25zIG9yIGFwcGVuZGljZXMgdGhhdCBxdWFsaWZ5IGFzCisgICAgICA8bGluayBsaW5rZW5kPSJmZGwtc2Vjb25kYXJ5Ij5TZWNvbmRhcnkgU2VjdGlvbnM8L2xpbms+IGFuZAorICAgICAgY29udGFpbiBubyBtYXRlcmlhbCBjb3BpZWQgZnJvbSB0aGUgRG9jdW1lbnQsIHlvdSBtYXkgYXQgeW91cgorICAgICAgb3B0aW9uIGRlc2lnbmF0ZSBzb21lIG9yIGFsbCBvZiB0aGVzZSBzZWN0aW9ucyBhcyBpbnZhcmlhbnQuIFRvCisgICAgICBkbyB0aGlzLCBhZGQgdGhlaXIgdGl0bGVzIHRvIHRoZSBsaXN0IG9mIDxsaW5rCisgICAgICBsaW5rZW5kPSJmZGwtaW52YXJpYW50Ij5JbnZhcmlhbnQgU2VjdGlvbnM8L2xpbms+IGluIHRoZQorICAgICAgTW9kaWZpZWQgVmVyc2lvbidzIGxpY2Vuc2Ugbm90aWNlLiAgVGhlc2UgdGl0bGVzIG11c3QgYmUKKyAgICAgIGRpc3RpbmN0IGZyb20gYW55IG90aGVyIHNlY3Rpb24gdGl0bGVzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgWW91IG1heSBhZGQgYSBzZWN0aW9uIGVudGl0bGVkIDxxdW90ZT5FbmRvcnNlbWVudHM8L3F1b3RlPiwKKyAgICAgIHByb3ZpZGVkIGl0IGNvbnRhaW5zIG5vdGhpbmcgYnV0IGVuZG9yc2VtZW50cyBvZiB5b3VyIDxsaW5rCisgICAgICBsaW5rZW5kPSJmZGwtbW9kaWZpZWQiPk1vZGlmaWVkIFZlcnNpb248L2xpbms+IGJ5IHZhcmlvdXMKKyAgICAgIHBhcnRpZXMtLWZvciBleGFtcGxlLCBzdGF0ZW1lbnRzIG9mIHBlZXIgcmV2aWV3IG9yIHRoYXQgdGhlIHRleHQKKyAgICAgIGhhcyBiZWVuIGFwcHJvdmVkIGJ5IGFuIG9yZ2FuaXphdGlvbiBhcyB0aGUgYXV0aG9yaXRhdGl2ZQorICAgICAgZGVmaW5pdGlvbiBvZiBhIHN0YW5kYXJkLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgWW91IG1heSBhZGQgYSBwYXNzYWdlIG9mIHVwIHRvIGZpdmUgd29yZHMgYXMgYSA8bGluaworICAgICAgbGlua2VuZD0iZmRsLWNvdmVyLXRleHRzIj5Gcm9udC1Db3ZlciBUZXh0PC9saW5rPiwgYW5kIGEgcGFzc2FnZQorICAgICAgb2YgdXAgdG8gMjUgd29yZHMgYXMgYSA8bGluaworICAgICAgbGlua2VuZD0iZmRsLWNvdmVyLXRleHRzIj5CYWNrLUNvdmVyIFRleHQ8L2xpbms+LCB0byB0aGUgZW5kIG9mCisgICAgICB0aGUgbGlzdCBvZiA8bGluayBsaW5rZW5kPSJmZGwtY292ZXItdGV4dHMiPkNvdmVyIFRleHRzPC9saW5rPgorICAgICAgaW4gdGhlIDxsaW5rIGxpbmtlbmQ9ImZkbC1tb2RpZmllZCI+TW9kaWZpZWQgVmVyc2lvbjwvbGluaz4uCisgICAgICBPbmx5IG9uZSBwYXNzYWdlIG9mIEZyb250LUNvdmVyIFRleHQgYW5kIG9uZSBvZiBCYWNrLUNvdmVyIFRleHQKKyAgICAgIG1heSBiZSBhZGRlZCBieSAob3IgdGhyb3VnaCBhcnJhbmdlbWVudHMgbWFkZSBieSkgYW55IG9uZQorICAgICAgZW50aXR5LiBJZiB0aGUgPGxpbmsgbGlua2VuZD0iZmRsLWRvY3VtZW50Ij5Eb2N1bWVudDwvbGluaz4KKyAgICAgIGFscmVhZHkgaW5jbHVkZXMgYSBjb3ZlciB0ZXh0IGZvciB0aGUgc2FtZSBjb3ZlciwgcHJldmlvdXNseQorICAgICAgYWRkZWQgYnkgeW91IG9yIGJ5IGFycmFuZ2VtZW50IG1hZGUgYnkgdGhlIHNhbWUgZW50aXR5IHlvdSBhcmUKKyAgICAgIGFjdGluZyBvbiBiZWhhbGYgb2YsIHlvdSBtYXkgbm90IGFkZCBhbm90aGVyOyBidXQgeW91IG1heQorICAgICAgcmVwbGFjZSB0aGUgb2xkIG9uZSwgb24gZXhwbGljaXQgcGVybWlzc2lvbiBmcm9tIHRoZSBwcmV2aW91cworICAgICAgcHVibGlzaGVyIHRoYXQgYWRkZWQgdGhlIG9sZCBvbmUuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBUaGUgYXV0aG9yKHMpIGFuZCBwdWJsaXNoZXIocykgb2YgdGhlIDxsaW5rCisgICAgICBsaW5rZW5kPSJmZGwtZG9jdW1lbnQiPkRvY3VtZW50PC9saW5rPiBkbyBub3QgYnkgdGhpcyBMaWNlbnNlCisgICAgICBnaXZlIHBlcm1pc3Npb24gdG8gdXNlIHRoZWlyIG5hbWVzIGZvciBwdWJsaWNpdHkgZm9yIG9yIHRvCisgICAgICBhc3NlcnQgb3IgaW1wbHkgZW5kb3JzZW1lbnQgb2YgYW55IDxsaW5rCisgICAgICBsaW5rZW5kPSJmZGwtbW9kaWZpZWQiPk1vZGlmaWVkIFZlcnNpb24gPC9saW5rPi4KKyAgICA8L3BhcmE+CisgIDwvc2VjdDE+CisKKyAgPHNlY3QxIGlkPSJmZGwtc2VjdGlvbjUiPgorICAgIDx0aXRsZT41LiBDT01CSU5JTkcgRE9DVU1FTlRTPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIFlvdSBtYXkgY29tYmluZSB0aGUgPGxpbmsgbGlua2VuZD0iZmRsLWRvY3VtZW50Ij5Eb2N1bWVudDwvbGluaz4KKyAgICAgIHdpdGggb3RoZXIgZG9jdW1lbnRzIHJlbGVhc2VkIHVuZGVyIHRoaXMgTGljZW5zZSwgdW5kZXIgdGhlCisgICAgICB0ZXJtcyBkZWZpbmVkIGluIDxsaW5rIGxpbmtlbmQ9ImZkbC1zZWN0aW9uNCI+c2VjdGlvbiA0PC9saW5rPgorICAgICAgYWJvdmUgZm9yIG1vZGlmaWVkIHZlcnNpb25zLCBwcm92aWRlZCB0aGF0IHlvdSBpbmNsdWRlIGluIHRoZQorICAgICAgY29tYmluYXRpb24gYWxsIG9mIHRoZSA8bGluayBsaW5rZW5kPSJmZGwtaW52YXJpYW50Ij5JbnZhcmlhbnQKKyAgICAgIFNlY3Rpb25zPC9saW5rPiBvZiBhbGwgb2YgdGhlIG9yaWdpbmFsIGRvY3VtZW50cywgdW5tb2RpZmllZCwKKyAgICAgIGFuZCBsaXN0IHRoZW0gYWxsIGFzIEludmFyaWFudCBTZWN0aW9ucyBvZiB5b3VyIGNvbWJpbmVkIHdvcmsgaW4KKyAgICAgIGl0cyBsaWNlbnNlIG5vdGljZS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgIFRoZSBjb21iaW5lZCB3b3JrIG5lZWQgb25seSBjb250YWluIG9uZSBjb3B5IG9mIHRoaXMgTGljZW5zZSwKKyAgICAgIGFuZCBtdWx0aXBsZSBpZGVudGljYWwgPGxpbmsgbGlua2VuZD0iZmRsLWludmFyaWFudCI+SW52YXJpYW50CisgICAgICBTZWN0aW9uczwvbGluaz4gbWF5IGJlIHJlcGxhY2VkIHdpdGggYSBzaW5nbGUgY29weS4gSWYgdGhlcmUgYXJlCisgICAgICBtdWx0aXBsZSBJbnZhcmlhbnQgU2VjdGlvbnMgd2l0aCB0aGUgc2FtZSBuYW1lIGJ1dCBkaWZmZXJlbnQKKyAgICAgIGNvbnRlbnRzLCBtYWtlIHRoZSB0aXRsZSBvZiBlYWNoIHN1Y2ggc2VjdGlvbiB1bmlxdWUgYnkgYWRkaW5nCisgICAgICBhdCB0aGUgZW5kIG9mIGl0LCBpbiBwYXJlbnRoZXNlcywgdGhlIG5hbWUgb2YgdGhlIG9yaWdpbmFsCisgICAgICBhdXRob3Igb3IgcHVibGlzaGVyIG9mIHRoYXQgc2VjdGlvbiBpZiBrbm93biwgb3IgZWxzZSBhIHVuaXF1ZQorICAgICAgbnVtYmVyLiBNYWtlIHRoZSBzYW1lIGFkanVzdG1lbnQgdG8gdGhlIHNlY3Rpb24gdGl0bGVzIGluIHRoZQorICAgICAgbGlzdCBvZiBJbnZhcmlhbnQgU2VjdGlvbnMgaW4gdGhlIGxpY2Vuc2Ugbm90aWNlIG9mIHRoZSBjb21iaW5lZAorICAgICAgd29yay4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgIEluIHRoZSBjb21iaW5hdGlvbiwgeW91IG11c3QgY29tYmluZSBhbnkgc2VjdGlvbnMgZW50aXRsZWQKKyAgICAgIDxxdW90ZT5IaXN0b3J5PC9xdW90ZT4gaW4gdGhlIHZhcmlvdXMgb3JpZ2luYWwgZG9jdW1lbnRzLAorICAgICAgZm9ybWluZyBvbmUgc2VjdGlvbiBlbnRpdGxlZCA8cXVvdGU+SGlzdG9yeTwvcXVvdGU+OyBsaWtld2lzZQorICAgICAgY29tYmluZSBhbnkgc2VjdGlvbnMgZW50aXRsZWQgPHF1b3RlPkFja25vd2xlZGdlbWVudHM8L3F1b3RlPiwKKyAgICAgIGFuZCBhbnkgc2VjdGlvbnMgZW50aXRsZWQgPHF1b3RlPkRlZGljYXRpb25zPC9xdW90ZT4uICBZb3UgbXVzdAorICAgICAgZGVsZXRlIGFsbCBzZWN0aW9ucyBlbnRpdGxlZCA8cXVvdGU+RW5kb3JzZW1lbnRzLjwvcXVvdGU+CisgICAgPC9wYXJhPgorICAgIDwvc2VjdDE+CisKKyAgPHNlY3QxIGlkPSJmZGwtc2VjdGlvbjYiPgorICAgIDx0aXRsZT42LiBDT0xMRUNUSU9OUyBPRiBET0NVTUVOVFM8L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgWW91IG1heSBtYWtlIGEgY29sbGVjdGlvbiBjb25zaXN0aW5nIG9mIHRoZSA8bGluaworICAgICAgbGlua2VuZD0iZmRsLWRvY3VtZW50Ij5Eb2N1bWVudDwvbGluaz4gYW5kIG90aGVyIGRvY3VtZW50cworICAgICAgcmVsZWFzZWQgdW5kZXIgdGhpcyBMaWNlbnNlLCBhbmQgcmVwbGFjZSB0aGUgaW5kaXZpZHVhbCBjb3BpZXMKKyAgICAgIG9mIHRoaXMgTGljZW5zZSBpbiB0aGUgdmFyaW91cyBkb2N1bWVudHMgd2l0aCBhIHNpbmdsZSBjb3B5IHRoYXQKKyAgICAgIGlzIGluY2x1ZGVkIGluIHRoZSBjb2xsZWN0aW9uLCBwcm92aWRlZCB0aGF0IHlvdSBmb2xsb3cgdGhlCisgICAgICBydWxlcyBvZiB0aGlzIExpY2Vuc2UgZm9yIHZlcmJhdGltIGNvcHlpbmcgb2YgZWFjaCBvZiB0aGUKKyAgICAgIGRvY3VtZW50cyBpbiBhbGwgb3RoZXIgcmVzcGVjdHMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBZb3UgbWF5IGV4dHJhY3QgYSBzaW5nbGUgZG9jdW1lbnQgZnJvbSBzdWNoIGEgY29sbGVjdGlvbiwgYW5kCisgICAgICBkaXNwYmlidXRlIGl0IGluZGl2aWR1YWxseSB1bmRlciB0aGlzIExpY2Vuc2UsIHByb3ZpZGVkIHlvdQorICAgICAgaW5zZXJ0IGEgY29weSBvZiB0aGlzIExpY2Vuc2UgaW50byB0aGUgZXh0cmFjdGVkIGRvY3VtZW50LCBhbmQKKyAgICAgIGZvbGxvdyB0aGlzIExpY2Vuc2UgaW4gYWxsIG90aGVyIHJlc3BlY3RzIHJlZ2FyZGluZyB2ZXJiYXRpbQorICAgICAgY29weWluZyBvZiB0aGF0IGRvY3VtZW50LgorICAgIDwvcGFyYT4KKyAgICA8L3NlY3QxPgorCisgIDxzZWN0MSBpZD0iZmRsLXNlY3Rpb243Ij4KKyAgICA8dGl0bGU+Ny4gQUdHUkVHQVRJT04gV0lUSCBJTkRFUEVOREVOVCBXT1JLUzwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICBBIGNvbXBpbGF0aW9uIG9mIHRoZSA8bGluaworICAgICAgbGlua2VuZD0iZmRsLWRvY3VtZW50Ij5Eb2N1bWVudDwvbGluaz4gb3IgaXRzIGRlcml2YXRpdmVzIHdpdGgKKyAgICAgIG90aGVyIHNlcGFyYXRlIGFuZCBpbmRlcGVuZGVudCBkb2N1bWVudHMgb3Igd29ya3MsIGluIG9yIG9uIGEKKyAgICAgIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgZG9lcyBub3QgYXMgYSB3aG9sZQorICAgICAgY291bnQgYXMgYSA8bGluayBsaW5rZW5kPSJmZGwtbW9kaWZpZWQiPk1vZGlmaWVkIFZlcnNpb248L2xpbms+CisgICAgICBvZiB0aGUgRG9jdW1lbnQsIHByb3ZpZGVkIG5vIGNvbXBpbGF0aW9uIGNvcHlyaWdodCBpcyBjbGFpbWVkCisgICAgICBmb3IgdGhlIGNvbXBpbGF0aW9uLiAgU3VjaCBhIGNvbXBpbGF0aW9uIGlzIGNhbGxlZCBhbgorICAgICAgPHF1b3RlPmFnZ3JlZ2F0ZTwvcXVvdGU+LCBhbmQgdGhpcyBMaWNlbnNlIGRvZXMgbm90IGFwcGx5IHRvIHRoZQorICAgICAgb3RoZXIgc2VsZi1jb250YWluZWQgd29ya3MgdGh1cyBjb21waWxlZCB3aXRoIHRoZSBEb2N1bWVudCAsIG9uCisgICAgICBhY2NvdW50IG9mIHRoZWlyIGJlaW5nIHRodXMgY29tcGlsZWQsIGlmIHRoZXkgYXJlIG5vdCB0aGVtc2VsdmVzCisgICAgICBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBEb2N1bWVudC4gIElmIHRoZSA8bGluaworICAgICAgbGlua2VuZD0iZmRsLWNvdmVyLXRleHRzIj5Db3ZlciBUZXh0PC9saW5rPiByZXF1aXJlbWVudCBvZiA8bGluaworICAgICAgbGlua2VuZD0iZmRsLXNlY3Rpb24zIj5zZWN0aW9uIDM8L2xpbms+IGlzIGFwcGxpY2FibGUgdG8gdGhlc2UKKyAgICAgIGNvcGllcyBvZiB0aGUgRG9jdW1lbnQsIHRoZW4gaWYgdGhlIERvY3VtZW50IGlzIGxlc3MgdGhhbiBvbmUKKyAgICAgIHF1YXJ0ZXIgb2YgdGhlIGVudGlyZSBhZ2dyZWdhdGUsIHRoZSBEb2N1bWVudCdzIENvdmVyIFRleHRzIG1heQorICAgICAgYmUgcGxhY2VkIG9uIGNvdmVycyB0aGF0IHN1cnJvdW5kIG9ubHkgdGhlIERvY3VtZW50IHdpdGhpbiB0aGUKKyAgICAgIGFnZ3JlZ2F0ZS4gT3RoZXJ3aXNlIHRoZXkgbXVzdCBhcHBlYXIgb24gY292ZXJzIGFyb3VuZCB0aGUgd2hvbGUKKyAgICAgIGFnZ3JlZ2F0ZS4KKyAgICA8L3BhcmE+CisgICAgPC9zZWN0MT4KKworICA8c2VjdDEgaWQ9ImZkbC1zZWN0aW9uOCI+CisgICAgPHRpdGxlPjguIFRSQU5TTEFUSU9OPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIFRyYW5zbGF0aW9uIGlzIGNvbnNpZGVyZWQgYSBraW5kIG9mIG1vZGlmaWNhdGlvbiwgc28geW91IG1heQorICAgICAgZGlzdHJpYnV0ZSB0cmFuc2xhdGlvbnMgb2YgdGhlIDxsaW5rCisgICAgICBsaW5rZW5kPSJmZGwtZG9jdW1lbnQiPkRvY3VtZW50PC9saW5rPiB1bmRlciB0aGUgdGVybXMgb2YgPGxpbmsKKyAgICAgIGxpbmtlbmQ9ImZkbC1zZWN0aW9uNCI+c2VjdGlvbiA0PC9saW5rPi4gUmVwbGFjaW5nIDxsaW5rCisgICAgICBsaW5rZW5kPSJmZGwtaW52YXJpYW50Ij4gSW52YXJpYW50IFNlY3Rpb25zPC9saW5rPiB3aXRoCisgICAgICB0cmFuc2xhdGlvbnMgcmVxdWlyZXMgc3BlY2lhbCBwZXJtaXNzaW9uIGZyb20gdGhlaXIgY29weXJpZ2h0CisgICAgICBob2xkZXJzLCBidXQgeW91IG1heSBpbmNsdWRlIHRyYW5zbGF0aW9ucyBvZiBzb21lIG9yIGFsbAorICAgICAgSW52YXJpYW50IFNlY3Rpb25zIGluIGFkZGl0aW9uIHRvIHRoZSBvcmlnaW5hbCB2ZXJzaW9ucyBvZiB0aGVzZQorICAgICAgSW52YXJpYW50IFNlY3Rpb25zLiBZb3UgbWF5IGluY2x1ZGUgYSB0cmFuc2xhdGlvbiBvZiB0aGlzCisgICAgICBMaWNlbnNlIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gaW5jbHVkZSB0aGUgb3JpZ2luYWwgRW5nbGlzaAorICAgICAgdmVyc2lvbiBvZiB0aGlzIExpY2Vuc2UuIEluIGNhc2Ugb2YgYSBkaXNhZ3JlZW1lbnQgYmV0d2VlbiB0aGUKKyAgICAgIHRyYW5zbGF0aW9uIGFuZCB0aGUgb3JpZ2luYWwgRW5nbGlzaCB2ZXJzaW9uIG9mIHRoaXMgTGljZW5zZSwKKyAgICAgIHRoZSBvcmlnaW5hbCBFbmdsaXNoIHZlcnNpb24gd2lsbCBwcmV2YWlsLgorICAgIDwvcGFyYT4KKyAgICA8L3NlY3QxPgorCisgIDxzZWN0MSBpZD0iZmRsLXNlY3Rpb245Ij4KKyAgICA8dGl0bGU+OS4gVEVSTUlOQVRJT048L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBvciBkaXN0cmlidXRlIHRoZSA8bGluaworICAgICAgbGlua2VuZD0iZmRsLWRvY3VtZW50Ij5Eb2N1bWVudDwvbGluaz4gZXhjZXB0IGFzIGV4cHJlc3NseQorICAgICAgcHJvdmlkZWQgZm9yIHVuZGVyIHRoaXMgTGljZW5zZS4gQW55IG90aGVyIGF0dGVtcHQgdG8gY29weSwKKyAgICAgIG1vZGlmeSwgc3VibGljZW5zZSBvciBkaXN0cmlidXRlIHRoZSBEb2N1bWVudCBpcyB2b2lkLCBhbmQgd2lsbAorICAgICAgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlLiBIb3dldmVyLAorICAgICAgcGFydGllcyB3aG8gaGF2ZSByZWNlaXZlZCBjb3BpZXMsIG9yIHJpZ2h0cywgZnJvbSB5b3UgdW5kZXIgdGhpcworICAgICAgTGljZW5zZSB3aWxsIG5vdCBoYXZlIHRoZWlyIGxpY2Vuc2VzIHRlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoCisgICAgICBwYXJ0aWVzIHJlbWFpbiBpbiBmdWxsIGNvbXBsaWFuY2UuCisgICAgPC9wYXJhPgorICAgIDwvc2VjdDE+CisKKyAgPHNlY3QxIGlkPSJmZGwtc2VjdGlvbjEwIj4KKyAgICA8dGl0bGU+MTAuIEZVVFVSRSBSRVZJU0lPTlMgT0YgVEhJUyBMSUNFTlNFPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIFRoZSA8dWxpbmsgdHlwZT0iaHR0cCIKKyAgICAgIHVybD0iaHR0cDovL3d3dy5nbnUub3JnL2ZzZi9mc2YuaHRtbCI+RnJlZSBTb2Z0d2FyZQorICAgICAgRm91bmRhdGlvbjwvdWxpbms+IG1heSBwdWJsaXNoIG5ldywgcmV2aXNlZCB2ZXJzaW9ucyBvZiB0aGUgR05VCisgICAgICBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSBmcm9tIHRpbWUgdG8gdGltZS4gU3VjaCBuZXcgdmVyc2lvbnMKKyAgICAgIHdpbGwgYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heSBkaWZmZXIKKyAgICAgIGluIGRldGFpbCB0byBhZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4gU2VlIDx1bGluaworICAgICAgdHlwZT0iaHR0cCIKKyAgICAgIHVybD0iaHR0cDovL3d3dy5nbnUub3JnL2NvcHlsZWZ0Ij5odHRwOi8vd3d3LmdudS5vcmcvY29weWxlZnQvPC91bGluaz4uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBFYWNoIHZlcnNpb24gb2YgdGhlIExpY2Vuc2UgaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uCisgICAgICBudW1iZXIuIElmIHRoZSA8bGluayBsaW5rZW5kPSJmZGwtZG9jdW1lbnQiPkRvY3VtZW50PC9saW5rPgorICAgICAgc3BlY2lmaWVzIHRoYXQgYSBwYXJ0aWN1bGFyIG51bWJlcmVkIHZlcnNpb24gb2YgdGhpcyBMaWNlbnNlCisgICAgICA8cXVvdGU+b3IgYW55IGxhdGVyIHZlcnNpb248L3F1b3RlPiBhcHBsaWVzIHRvIGl0LCB5b3UgaGF2ZSB0aGUKKyAgICAgIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGVpdGhlciBvZiB0aGF0CisgICAgICBzcGVjaWZpZWQgdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiB0aGF0IGhhcyBiZWVuCisgICAgICBwdWJsaXNoZWQgKG5vdCBhcyBhIGRyYWZ0KSBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBJZgorICAgICAgdGhlIERvY3VtZW50IGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2UsCisgICAgICB5b3UgbWF5IGNob29zZSBhbnkgdmVyc2lvbiBldmVyIHB1Ymxpc2hlZCAobm90IGFzIGEgZHJhZnQpIGJ5CisgICAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICAgIDwvcGFyYT4KKyAgPC9zZWN0MT4KKworICA8c2VjdDEgaWQ9ImZkbC11c2luZyI+CisgICAgPHRpdGxlPkFkZGVuZHVtPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIFRvIHVzZSB0aGlzIExpY2Vuc2UgaW4gYSBkb2N1bWVudCB5b3UgaGF2ZSB3cml0dGVuLCBpbmNsdWRlIGEgY29weSBvZgorICAgICAgdGhlIExpY2Vuc2UgaW4gdGhlIGRvY3VtZW50IGFuZCBwdXQgdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQgYW5kCisgICAgICBsaWNlbnNlIG5vdGljZXMganVzdCBhZnRlciB0aGUgdGl0bGUgcGFnZToKKyAgICA8L3BhcmE+CisKKyAgICA8YmxvY2txdW90ZT4KKyAgICAgIDxwYXJhPgorCUNvcHlyaWdodCAmY29weTsgWUVBUiBZT1VSIE5BTUUuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKwlQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoaXMKKwlkb2N1bWVudCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBGcmVlIERvY3VtZW50YXRpb24KKwlMaWNlbnNlLCBWZXJzaW9uIDEuMSBvciBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlCisJRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3aXRoIHRoZSA8bGluaworCWxpbmtlbmQ9ImZkbC1pbnZhcmlhbnQiPkludmFyaWFudCBTZWN0aW9uczwvbGluaz4gYmVpbmcgTElTVAorCVRIRUlSIFRJVExFUywgd2l0aCB0aGUgPGxpbmsKKwlsaW5rZW5kPSJmZGwtY292ZXItdGV4dHMiPkZyb250LUNvdmVyIFRleHRzPC9saW5rPiBiZWluZyBMSVNULAorCWFuZCB3aXRoIHRoZSA8bGluayBsaW5rZW5kPSJmZGwtY292ZXItdGV4dHMiPkJhY2stQ292ZXIKKwlUZXh0czwvbGluaz4gYmVpbmcgTElTVC4gIEEgY29weSBvZiB0aGUgbGljZW5zZSBpcyBpbmNsdWRlZCBpbgorCXRoZSBzZWN0aW9uIGVudGl0bGVkIDxxdW90ZT5HTlUgRnJlZSBEb2N1bWVudGF0aW9uCisJTGljZW5zZTwvcXVvdGU+LgorICAgICAgPC9wYXJhPgorICAgIDwvYmxvY2txdW90ZT4KKworICAgIDxwYXJhPgorICAgICAgSWYgeW91IGhhdmUgbm8gPGxpbmsgbGlua2VuZD0iZmRsLWludmFyaWFudCI+SW52YXJpYW50CisgICAgICBTZWN0aW9uczwvbGluaz4sIHdyaXRlIDxxdW90ZT53aXRoIG5vIEludmFyaWFudCBTZWN0aW9uczwvcXVvdGU+CisgICAgICBpbnN0ZWFkIG9mIHNheWluZyB3aGljaCBvbmVzIGFyZSBpbnZhcmlhbnQuICBJZiB5b3UgaGF2ZSBubworICAgICAgPGxpbmsgbGlua2VuZD0iZmRsLWNvdmVyLXRleHRzIj5Gcm9udC1Db3ZlciBUZXh0czwvbGluaz4sIHdyaXRlCisgICAgICA8cXVvdGU+bm8gRnJvbnQtQ292ZXIgVGV4dHM8L3F1b3RlPiBpbnN0ZWFkIG9mCisgICAgICA8cXVvdGU+RnJvbnQtQ292ZXIgVGV4dHMgYmVpbmcgTElTVDwvcXVvdGU+OyBsaWtld2lzZSBmb3IgPGxpbmsKKyAgICAgIGxpbmtlbmQ9ImZkbC1jb3Zlci10ZXh0cyI+QmFjay1Db3ZlciBUZXh0czwvbGluaz4uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBJZiB5b3VyIGRvY3VtZW50IGNvbnRhaW5zIG5vbnRyaXZpYWwgZXhhbXBsZXMgb2YgcHJvZ3JhbSBjb2RlLAorICAgICAgd2UgcmVjb21tZW5kIHJlbGVhc2luZyB0aGVzZSBleGFtcGxlcyBpbiBwYXJhbGxlbCB1bmRlciB5b3VyCisgICAgICBjaG9pY2Ugb2YgZnJlZSBzb2Z0d2FyZSBsaWNlbnNlLCBzdWNoIGFzIHRoZSA8dWxpbmsgdHlwZT0iaHR0cCIKKyAgICAgIHVybD0iaHR0cDovL3d3dy5nbnUub3JnL2NvcHlsZWZ0L2dwbC5odG1sIj4gR05VIEdlbmVyYWwgUHVibGljCisgICAgICBMaWNlbnNlPC91bGluaz4sIHRvIHBlcm1pdCB0aGVpciB1c2UgaW4gZnJlZSBzb2Z0d2FyZS4KKyAgICA8L3BhcmE+CisgIDwvc2VjdDE+Cis8L2FwcGVuZGl4PgorCisKKworCisKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9mdW5jLWNsb3NlLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZnVuYy1jbG9zZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjMyOTIwZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZnVuYy1jbG9zZS54bWwKQEAgLTAsMCArMSw2MiBAQAorPHJlZmVudHJ5IGlkPSJmdW5jLWNsb3NlIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+VjRMMiBjbG9zZSgpPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT52NGwyLWNsb3NlPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPkNsb3NlIGEgVjRMMiBkZXZpY2U8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jc3lub3BzaXNpbmZvPiNpbmNsdWRlICZsdDt1bmlzdGQuaCZndDs8L2Z1bmNzeW5vcHNpc2luZm8+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmNsb3NlPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPiZmZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgPHBhcmE+Q2xvc2VzIHRoZSBkZXZpY2UuIEFueSBJL08gaW4gcHJvZ3Jlc3MgaXMgdGVybWluYXRlZCBhbmQKK3Jlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUgZGVzY3JpcHRvciBhcmUgZnJlZWQuIEhvd2V2ZXIgZGF0YQorZm9ybWF0IHBhcmFtZXRlcnMsIGN1cnJlbnQgaW5wdXQgb3Igb3V0cHV0LCBjb250cm9sIHZhbHVlcyBvciBvdGhlcgorcHJvcGVydGllcyByZW1haW4gdW5jaGFuZ2VkLjwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPlJldHVybiBWYWx1ZTwvdGl0bGU+CisKKyAgICA8cGFyYT5UaGUgZnVuY3Rpb24gcmV0dXJucyA8cmV0dXJudmFsdWU+MDwvcmV0dXJudmFsdWU+IG9uCitzdWNjZXNzLCA8cmV0dXJudmFsdWU+LTE8L3JldHVybnZhbHVlPiBvbiBmYWlsdXJlIGFuZCB0aGUKKzx2YXJuYW1lPmVycm5vPC92YXJuYW1lPiBpcyBzZXQgYXBwcm9wcmlhdGVseS4gUG9zc2libGUgZXJyb3IKK2NvZGVzOjwvcGFyYT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUJBREY8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPiBpcyBub3QgYSB2YWxpZCBvcGVuIGZpbGUKK2Rlc2NyaXB0b3IuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2Z1bmMtaW9jdGwueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9mdW5jLWlvY3RsLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Mzk0MTg0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9mdW5jLWlvY3RsLnhtbApAQCAtMCwwICsxLDcxIEBACis8cmVmZW50cnkgaWQ9ImZ1bmMtaW9jdGwiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5WNEwyIGlvY3RsKCk8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPnY0bDItaW9jdGw8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+UHJvZ3JhbSBhIFY0TDIgZGV2aWNlPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3N5bm9wc2lzaW5mbz4jaW5jbHVkZSAmbHQ7c3lzL2lvY3RsLmgmZ3Q7PC9mdW5jc3lub3BzaXNpbmZvPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj52b2lkICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WNEwyIGlvY3RsIHJlcXVlc3QgY29kZSBhcyBkZWZpbmVkIGluIHRoZSA8ZmlsZW5hbWU+dmlkZW9kZXYyLmg8L2ZpbGVuYW1lPiBoZWFkZXIgZmlsZSwgZm9yIGV4YW1wbGUKK1ZJRElPQ19RVUVSWUNBUC48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+UG9pbnRlciB0byBhIGZ1bmN0aW9uIHBhcmFtZXRlciwgdXN1YWxseSBhIHN0cnVjdHVyZS48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgPHBhcmE+VGhlIDxmdW5jdGlvbj5pb2N0bCgpPC9mdW5jdGlvbj4gZnVuY3Rpb24gaXMgdXNlZCB0byBwcm9ncmFtCitWNEwyIGRldmljZXMuIFRoZSBhcmd1bWVudCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+IG11c3QgYmUgYW4gb3BlbgorZmlsZSBkZXNjcmlwdG9yLiBBbiBpb2N0bCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj4gaGFzIGVuY29kZWQKK2luIGl0IHdoZXRoZXIgdGhlIGFyZ3VtZW50IGlzIGFuIGlucHV0LCBvdXRwdXQgb3IgcmVhZC93cml0ZQorcGFyYW1ldGVyLCBhbmQgdGhlIHNpemUgb2YgdGhlIGFyZ3VtZW50IDxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPiBpbgorYnl0ZXMuIE1hY3JvcyBhbmQgZGVmaW5lcyBzcGVjaWZ5aW5nIFY0TDIgaW9jdGwgcmVxdWVzdHMgYXJlIGxvY2F0ZWQKK2luIHRoZSA8ZmlsZW5hbWU+dmlkZW9kZXYyLmg8L2ZpbGVuYW1lPiBoZWFkZXIgZmlsZS4KK0FwcGxpY2F0aW9ucyBzaG91bGQgdXNlIHRoZWlyIG93biBjb3B5LCBub3QgaW5jbHVkZSB0aGUgdmVyc2lvbiBpbiB0aGUKK2tlcm5lbCBzb3VyY2VzIG9uIHRoZSBzeXN0ZW0gdGhleSBjb21waWxlIG9uLiBBbGwgVjRMMiBpb2N0bCByZXF1ZXN0cywKK3RoZWlyIHJlc3BlY3RpdmUgZnVuY3Rpb24gYW5kIHBhcmFtZXRlcnMgYXJlIHNwZWNpZmllZCBpbiA8eHJlZgorCWxpbmtlbmQ9InVzZXItZnVuYyIgLz4uPC9wYXJhPgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICAmcmV0dXJuLXZhbHVlOworICAgIDxwYXJhPldoZW4gYW4gaW9jdGwgdGhhdCB0YWtlcyBhbiBvdXRwdXQgb3IgcmVhZC93cml0ZSBwYXJhbWV0ZXIgZmFpbHMsCisgICAgdGhlIHBhcmFtZXRlciByZW1haW5zIHVubW9kaWZpZWQuPC9wYXJhPgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZnVuYy1tbWFwLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZnVuYy1tbWFwLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzFhZDcxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9mdW5jLW1tYXAueG1sCkBAIC0wLDAgKzEsMTgzIEBACis8cmVmZW50cnkgaWQ9ImZ1bmMtbW1hcCI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPlY0TDIgbW1hcCgpPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT52NGwyLW1tYXA8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+TWFwIGRldmljZSBtZW1vcnkgaW50byBhcHBsaWNhdGlvbiBhZGRyZXNzIHNwYWNlPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3N5bm9wc2lzaW5mbz4KKyNpbmNsdWRlICZsdDt1bmlzdGQuaCZndDsKKyNpbmNsdWRlICZsdDtzeXMvbW1hbi5oJmd0OzwvZnVuY3N5bm9wc2lzaW5mbz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPnZvaWQgKjxmdW5jdGlvbj5tbWFwPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPnZvaWQgKjxwYXJhbWV0ZXI+c3RhcnQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zaXplX3QgPHBhcmFtZXRlcj5sZW5ndGg8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5wcm90PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmxhZ3M8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPm9mZl90IDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5zdGFydDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5NYXAgdGhlIGJ1ZmZlciB0byB0aGlzIGFkZHJlc3MgaW4gdGhlCithcHBsaWNhdGlvbidzIGFkZHJlc3Mgc3BhY2UuIFdoZW4gdGhlIDxjb25zdGFudD5NQVBfRklYRUQ8L2NvbnN0YW50PgorZmxhZyBpcyBzcGVjaWZpZWQsIDxwYXJhbWV0ZXI+c3RhcnQ8L3BhcmFtZXRlcj4gbXVzdCBiZSBhIG11bHRpcGxlIG9mIHRoZQorcGFnZXNpemUgYW5kIG1tYXAgd2lsbCBmYWlsIHdoZW4gdGhlIHNwZWNpZmllZCBhZGRyZXNzCitjYW5ub3QgYmUgdXNlZC4gVXNlIG9mIHRoaXMgb3B0aW9uIGlzIGRpc2NvdXJhZ2VkOyBhcHBsaWNhdGlvbnMgc2hvdWxkCitqdXN0IHNwZWNpZnkgYSA8Y29uc3RhbnQ+TlVMTDwvY29uc3RhbnQ+IHBvaW50ZXIgaGVyZS48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmxlbmd0aDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5MZW5ndGggb2YgdGhlIG1lbW9yeSBhcmVhIHRvIG1hcC4gVGhpcyBtdXN0IGJlIHRoZQorc2FtZSB2YWx1ZSBhcyByZXR1cm5lZCBieSB0aGUgZHJpdmVyIGluIHRoZSAmdjRsMi1idWZmZXI7Cis8c3RydWN0ZmllbGQ+bGVuZ3RoPC9zdHJ1Y3RmaWVsZD4gZmllbGQgZm9yIHRoZQorc2luZ2xlLXBsYW5hciBBUEksIGFuZCB0aGUgc2FtZSB2YWx1ZSBhcyByZXR1cm5lZCBieSB0aGUgZHJpdmVyCitpbiB0aGUgJnY0bDItcGxhbmU7IDxzdHJ1Y3RmaWVsZD5sZW5ndGg8L3N0cnVjdGZpZWxkPiBmaWVsZCBmb3IgdGhlCittdWx0aS1wbGFuYXIgQVBJLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cHJvdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgPHBhcmFtZXRlcj5wcm90PC9wYXJhbWV0ZXI+IGFyZ3VtZW50IGRlc2NyaWJlcyB0aGUKK2Rlc2lyZWQgbWVtb3J5IHByb3RlY3Rpb24uIFJlZ2FyZGxlc3Mgb2YgdGhlIGRldmljZSB0eXBlIGFuZCB0aGUKK2RpcmVjdGlvbiBvZiBkYXRhIGV4Y2hhbmdlIGl0IHNob3VsZCBiZSBzZXQgdG8KKzxjb25zdGFudD5QUk9UX1JFQUQ8L2NvbnN0YW50PiB8IDxjb25zdGFudD5QUk9UX1dSSVRFPC9jb25zdGFudD4sCitwZXJtaXR0aW5nIHJlYWQgYW5kIHdyaXRlIGFjY2VzcyB0byBpbWFnZSBidWZmZXJzLiBEcml2ZXJzIHNob3VsZAorc3VwcG9ydCBhdCBsZWFzdCB0aGlzIGNvbWJpbmF0aW9uIG9mIGZsYWdzLiBOb3RlIHRoZSBMaW51eAorPGZpbGVuYW1lPnZpZGVvLWJ1ZjwvZmlsZW5hbWU+IGtlcm5lbCBtb2R1bGUsIHdoaWNoIGlzIHVzZWQgYnkgdGhlCitidHR2LCBzYWE3MTM0LCBzYWE3MTQ2LCBjeDg4IGFuZCB2aXZpIGRyaXZlciBzdXBwb3J0cyBvbmx5Cis8Y29uc3RhbnQ+UFJPVF9SRUFEPC9jb25zdGFudD4gfCA8Y29uc3RhbnQ+UFJPVF9XUklURTwvY29uc3RhbnQ+LiBXaGVuCit0aGUgZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQgdGhlIGRlc2lyZWQgcHJvdGVjdGlvbiB0aGUKKzxmdW5jdGlvbj5tbWFwKCk8L2Z1bmN0aW9uPiBmdW5jdGlvbiBmYWlscy48L3BhcmE+CisJICA8cGFyYT5Ob3RlIGRldmljZSBtZW1vcnkgYWNjZXNzZXMgKCZlZzsgdGhlIG1lbW9yeSBvbiBhCitncmFwaGljcyBjYXJkIHdpdGggdmlkZW8gY2FwdHVyaW5nIGhhcmR3YXJlKSBtYXkgaW5jdXIgYSBwZXJmb3JtYW5jZQorcGVuYWx0eSBjb21wYXJlZCB0byBtYWluIG1lbW9yeSBhY2Nlc3Nlcywgb3IgcmVhZHMgbWF5IGJlCitzaWduaWZpY2FudGx5IHNsb3dlciB0aGFuIHdyaXRlcyBvciB2aWNlIHZlcnNhLiBPdGhlciBJL08gbWV0aG9kcyBtYXkKK2JlIG1vcmUgZWZmaWNpZW50IGluIHRoaXMgY2FzZS48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZsYWdzPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSA8cGFyYW1ldGVyPmZsYWdzPC9wYXJhbWV0ZXI+IHBhcmFtZXRlcgorc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRoZSBtYXBwZWQgb2JqZWN0LCBtYXBwaW5nIG9wdGlvbnMgYW5kIHdoZXRoZXIKK21vZGlmaWNhdGlvbnMgbWFkZSB0byB0aGUgbWFwcGVkIGNvcHkgb2YgdGhlIHBhZ2UgYXJlIHByaXZhdGUgdG8gdGhlCitwcm9jZXNzIG9yIGFyZSB0byBiZSBzaGFyZWQgd2l0aCBvdGhlciByZWZlcmVuY2VzLjwvcGFyYT4KKwkgIDxwYXJhPjxjb25zdGFudD5NQVBfRklYRUQ8L2NvbnN0YW50PiByZXF1ZXN0cyB0aGF0IHRoZQorZHJpdmVyIHNlbGVjdHMgbm8gb3RoZXIgYWRkcmVzcyB0aGFuIHRoZSBvbmUgc3BlY2lmaWVkLiBJZiB0aGUKK3NwZWNpZmllZCBhZGRyZXNzIGNhbm5vdCBiZSB1c2VkLCA8ZnVuY3Rpb24+bW1hcCgpPC9mdW5jdGlvbj4gd2lsbCBmYWlsLiBJZgorPGNvbnN0YW50Pk1BUF9GSVhFRDwvY29uc3RhbnQ+IGlzIHNwZWNpZmllZCwKKzxwYXJhbWV0ZXI+c3RhcnQ8L3BhcmFtZXRlcj4gbXVzdCBiZSBhIG11bHRpcGxlIG9mIHRoZSBwYWdlc2l6ZS4gVXNlCitvZiB0aGlzIG9wdGlvbiBpcyBkaXNjb3VyYWdlZC48L3BhcmE+CisJICA8cGFyYT5PbmUgb2YgdGhlIDxjb25zdGFudD5NQVBfU0hBUkVEPC9jb25zdGFudD4gb3IKKzxjb25zdGFudD5NQVBfUFJJVkFURTwvY29uc3RhbnQ+IGZsYWdzIG11c3QgYmUgc2V0LgorPGNvbnN0YW50Pk1BUF9TSEFSRUQ8L2NvbnN0YW50PiBhbGxvd3MgYXBwbGljYXRpb25zIHRvIHNoYXJlIHRoZQorbWFwcGVkIG1lbW9yeSB3aXRoIG90aGVyICgmZWc7IGNoaWxkLSkgcHJvY2Vzc2VzLiBOb3RlIHRoZSBMaW51eAorPGZpbGVuYW1lPnZpZGVvLWJ1ZjwvZmlsZW5hbWU+IG1vZHVsZSB3aGljaCBpcyB1c2VkIGJ5IHRoZSBidHR2LAorc2FhNzEzNCwgc2FhNzE0NiwgY3g4OCBhbmQgdml2aSBkcml2ZXIgc3VwcG9ydHMgb25seQorPGNvbnN0YW50Pk1BUF9TSEFSRUQ8L2NvbnN0YW50Pi4gPGNvbnN0YW50Pk1BUF9QUklWQVRFPC9jb25zdGFudD4KK3JlcXVlc3RzIGNvcHktb24td3JpdGUgc2VtYW50aWNzLiBWNEwyIGFwcGxpY2F0aW9ucyBzaG91bGQgbm90IHNldCB0aGUKKzxjb25zdGFudD5NQVBfUFJJVkFURTwvY29uc3RhbnQ+LCA8Y29uc3RhbnQ+TUFQX0RFTllXUklURTwvY29uc3RhbnQ+LAorPGNvbnN0YW50Pk1BUF9FWEVDVVRBQkxFPC9jb25zdGFudD4gb3IgPGNvbnN0YW50Pk1BUF9BTk9OPC9jb25zdGFudD4KK2ZsYWcuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5vZmZzZXQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+T2Zmc2V0IG9mIHRoZSBidWZmZXIgaW4gZGV2aWNlIG1lbW9yeS4gVGhpcyBtdXN0IGJlIHRoZQorc2FtZSB2YWx1ZSBhcyByZXR1cm5lZCBieSB0aGUgZHJpdmVyIGluIHRoZSAmdjRsMi1idWZmZXI7Cis8c3RydWN0ZmllbGQ+bTwvc3RydWN0ZmllbGQ+IHVuaW9uIDxzdHJ1Y3RmaWVsZD5vZmZzZXQ8L3N0cnVjdGZpZWxkPiBmaWVsZCBmb3IKK3RoZSBzaW5nbGUtcGxhbmFyIEFQSSwgYW5kIHRoZSBzYW1lIHZhbHVlIGFzIHJldHVybmVkIGJ5IHRoZSBkcml2ZXIKK2luIHRoZSAmdjRsMi1wbGFuZTsgPHN0cnVjdGZpZWxkPm08L3N0cnVjdGZpZWxkPiB1bmlvbgorPHN0cnVjdGZpZWxkPm1lbV9vZmZzZXQ8L3N0cnVjdGZpZWxkPiBmaWVsZCBmb3IgdGhlIG11bHRpLXBsYW5hciBBUEkuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPlRoZSA8ZnVuY3Rpb24+bW1hcCgpPC9mdW5jdGlvbj4gZnVuY3Rpb24gYXNrcyB0byBtYXAKKzxwYXJhbWV0ZXI+bGVuZ3RoPC9wYXJhbWV0ZXI+IGJ5dGVzIHN0YXJ0aW5nIGF0Cis8cGFyYW1ldGVyPm9mZnNldDwvcGFyYW1ldGVyPiBpbiB0aGUgbWVtb3J5IG9mIHRoZSBkZXZpY2Ugc3BlY2lmaWVkIGJ5Cis8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+IGludG8gdGhlIGFwcGxpY2F0aW9uIGFkZHJlc3Mgc3BhY2UsCitwcmVmZXJhYmx5IGF0IGFkZHJlc3MgPHBhcmFtZXRlcj5zdGFydDwvcGFyYW1ldGVyPi4gVGhpcyBsYXR0ZXIKK2FkZHJlc3MgaXMgYSBoaW50IG9ubHksIGFuZCBpcyB1c3VhbGx5IHNwZWNpZmllZCBhcyAwLjwvcGFyYT4KKworICAgIDxwYXJhPlN1aXRhYmxlIGxlbmd0aCBhbmQgb2Zmc2V0IHBhcmFtZXRlcnMgYXJlIHF1ZXJpZWQgd2l0aCB0aGUKKyZWSURJT0MtUVVFUllCVUY7IGlvY3RsLiBCdWZmZXJzIG11c3QgYmUgYWxsb2NhdGVkIHdpdGggdGhlCismVklESU9DLVJFUUJVRlM7IGlvY3RsIGJlZm9yZSB0aGV5IGNhbiBiZSBxdWVyaWVkLjwvcGFyYT4KKworICAgIDxwYXJhPlRvIHVubWFwIGJ1ZmZlcnMgdGhlICZmdW5jLW11bm1hcDsgZnVuY3Rpb24gaXMgdXNlZC48L3BhcmE+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5SZXR1cm4gVmFsdWU8L3RpdGxlPgorCisgICAgPHBhcmE+T24gc3VjY2VzcyA8ZnVuY3Rpb24+bW1hcCgpPC9mdW5jdGlvbj4gcmV0dXJucyBhIHBvaW50ZXIgdG8KK3RoZSBtYXBwZWQgYnVmZmVyLiBPbiBlcnJvciA8Y29uc3RhbnQ+TUFQX0ZBSUxFRDwvY29uc3RhbnQ+ICgtMSkgaXMKK3JldHVybmVkLCBhbmQgdGhlIDx2YXJuYW1lPmVycm5vPC92YXJuYW1lPiB2YXJpYWJsZSBpcyBzZXQKK2FwcHJvcHJpYXRlbHkuIFBvc3NpYmxlIGVycm9yIGNvZGVzIGFyZTo8L3BhcmE+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVCQURGPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj4gaXMgbm90IGEgdmFsaWQgZmlsZQorZGVzY3JpcHRvci48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVBQ0NFUzwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+IGlzCitub3Qgb3BlbiBmb3IgcmVhZGluZyBhbmQgd3JpdGluZy48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgPHBhcmFtZXRlcj5zdGFydDwvcGFyYW1ldGVyPiBvcgorPHBhcmFtZXRlcj5sZW5ndGg8L3BhcmFtZXRlcj4gb3IgPHBhcmFtZXRlcj5vZmZzZXQ8L3BhcmFtZXRlcj4gYXJlIG5vdAorc3VpdGFibGUuIChFLiZuYnNwO2cuIHRoZXkgYXJlIHRvbyBsYXJnZSwgb3Igbm90IGFsaWduZWQgb24gYQorPGNvbnN0YW50PlBBR0VTSVpFPC9jb25zdGFudD4gYm91bmRhcnkuKTwvcGFyYT4KKwkgIDxwYXJhPlRoZSA8cGFyYW1ldGVyPmZsYWdzPC9wYXJhbWV0ZXI+IG9yCis8cGFyYW1ldGVyPnByb3Q8L3BhcmFtZXRlcj4gdmFsdWUgaXMgbm90IHN1cHBvcnRlZC48L3BhcmE+CisJICA8cGFyYT5ObyBidWZmZXJzIGhhdmUgYmVlbiBhbGxvY2F0ZWQgd2l0aCB0aGUKKyZWSURJT0MtUkVRQlVGUzsgaW9jdGwuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FTk9NRU08L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+Tm90IGVub3VnaCBwaHlzaWNhbCBvciB2aXJ0dWFsIG1lbW9yeSB3YXMgYXZhaWxhYmxlIHRvCitjb21wbGV0ZSB0aGUgcmVxdWVzdC48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZnVuYy1tdW5tYXAueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9mdW5jLW11bm1hcC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYwZDQ5YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZnVuYy1tdW5tYXAueG1sCkBAIC0wLDAgKzEsNzYgQEAKKzxyZWZlbnRyeSBpZD0iZnVuYy1tdW5tYXAiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5WNEwyIG11bm1hcCgpPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT52NGwyLW11bm1hcDwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5Vbm1hcCBkZXZpY2UgbWVtb3J5PC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3N5bm9wc2lzaW5mbz4KKyNpbmNsdWRlICZsdDt1bmlzdGQuaCZndDsKKyNpbmNsdWRlICZsdDtzeXMvbW1hbi5oJmd0OzwvZnVuY3N5bm9wc2lzaW5mbz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+bXVubWFwPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPnZvaWQgKjxwYXJhbWV0ZXI+c3RhcnQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zaXplX3QgPHBhcmFtZXRlcj5sZW5ndGg8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5zdGFydDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5BZGRyZXNzIG9mIHRoZSBtYXBwZWQgYnVmZmVyIGFzIHJldHVybmVkIGJ5IHRoZQorJmZ1bmMtbW1hcDsgZnVuY3Rpb24uPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5sZW5ndGg8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+TGVuZ3RoIG9mIHRoZSBtYXBwZWQgYnVmZmVyLiBUaGlzIG11c3QgYmUgdGhlIHNhbWUKK3ZhbHVlIGFzIGdpdmVuIHRvIDxmdW5jdGlvbj5tbWFwKCk8L2Z1bmN0aW9uPiBhbmQgcmV0dXJuZWQgYnkgdGhlCitkcml2ZXIgaW4gdGhlICZ2NGwyLWJ1ZmZlcjsgPHN0cnVjdGZpZWxkPmxlbmd0aDwvc3RydWN0ZmllbGQ+CitmaWVsZCBmb3IgdGhlIHNpbmdsZS1wbGFuYXIgQVBJIGFuZCBpbiB0aGUgJnY0bDItcGxhbmU7Cis8c3RydWN0ZmllbGQ+bGVuZ3RoPC9zdHJ1Y3RmaWVsZD4gZmllbGQgZm9yIHRoZSBtdWx0aS1wbGFuYXIgQVBJLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5Vbm1hcHMgYSBwcmV2aW91c2x5IHdpdGggdGhlICZmdW5jLW1tYXA7IGZ1bmN0aW9uIG1hcHBlZAorYnVmZmVyIGFuZCBmcmVlcyBpdCwgaWYgcG9zc2libGUuIDwhLS0gPyBUaGlzIGZ1bmN0aW9uIChub3QgZnJlZWluZykKK2hhcyBubyBpbXBhY3Qgb24gSS9PIGluIHByb2dyZXNzLCBzcGVjaWZpY2FsbHkgaXQgZG9lcyBub3QgaW1wbHkKKyZWSURJT0MtU1RSRUFNT0ZGOyB0byB0ZXJtaW5hdGUgSS9PLiBVbm1hcHBlZCBidWZmZXJzIGNhbiBzdGlsbCBiZQorZW5xdWV1ZWQsIGRlcXVldWVkIG9yIHF1ZXJpZWQsIHRoZXkgYXJlIGp1c3Qgbm90IGFjY2Vzc2libGUgYnkgdGhlCithcHBsaWNhdGlvbi4tLT48L3BhcmE+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5SZXR1cm4gVmFsdWU8L3RpdGxlPgorCisgICAgPHBhcmE+T24gc3VjY2VzcyA8ZnVuY3Rpb24+bXVubWFwKCk8L2Z1bmN0aW9uPiByZXR1cm5zIDAsIG9uCitmYWlsdXJlIC0xIGFuZCB0aGUgPHZhcm5hbWU+ZXJybm88L3Zhcm5hbWU+IHZhcmlhYmxlIGlzIHNldAorYXBwcm9wcmlhdGVseTo8L3BhcmE+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgPHBhcmFtZXRlcj5zdGFydDwvcGFyYW1ldGVyPiBvcgorPHBhcmFtZXRlcj5sZW5ndGg8L3BhcmFtZXRlcj4gaXMgaW5jb3JyZWN0LCBvciBubyBidWZmZXJzIGhhdmUgYmVlbgorbWFwcGVkIHlldC48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZnVuYy1vcGVuLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZnVuYy1vcGVuLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjY0ZTIwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9mdW5jLW9wZW4ueG1sCkBAIC0wLDAgKzEsMTEzIEBACis8cmVmZW50cnkgaWQ9ImZ1bmMtb3BlbiI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPlY0TDIgb3BlbigpPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT52NGwyLW9wZW48L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+T3BlbiBhIFY0TDIgZGV2aWNlPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3N5bm9wc2lzaW5mbz4jaW5jbHVkZSAmbHQ7ZmNudGwuaCZndDs8L2Z1bmNzeW5vcHNpc2luZm8+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPm9wZW48L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+Y29uc3QgY2hhciAqPHBhcmFtZXRlcj5kZXZpY2VfbmFtZTwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZsYWdzPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmRldmljZV9uYW1lPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkRldmljZSB0byBiZSBvcGVuZWQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mbGFnczwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5PcGVuIGZsYWdzLiBBY2Nlc3MgbW9kZSBtdXN0IGJlCis8Y29uc3RhbnQ+T19SRFdSPC9jb25zdGFudD4uIFRoaXMgaXMganVzdCBhIHRlY2huaWNhbGl0eSwgaW5wdXQgZGV2aWNlcworc3RpbGwgc3VwcG9ydCBvbmx5IHJlYWRpbmcgYW5kIG91dHB1dCBkZXZpY2VzIG9ubHkgd3JpdGluZy48L3BhcmE+CisJICA8cGFyYT5XaGVuIHRoZSA8Y29uc3RhbnQ+T19OT05CTE9DSzwvY29uc3RhbnQ+IGZsYWcgaXMKK2dpdmVuLCB0aGUgcmVhZCgpIGZ1bmN0aW9uIGFuZCB0aGUgJlZJRElPQy1EUUJVRjsgaW9jdGwgd2lsbCByZXR1cm4KK3RoZSAmRUFHQUlOOyB3aGVuIG5vIGRhdGEgaXMgYXZhaWxhYmxlIG9yIG5vIGJ1ZmZlciBpcyBpbiB0aGUgZHJpdmVyCitvdXRnb2luZyBxdWV1ZSwgb3RoZXJ3aXNlIHRoZXNlIGZ1bmN0aW9ucyBibG9jayB1bnRpbCBkYXRhIGJlY29tZXMKK2F2YWlsYWJsZS4gQWxsIFY0TDIgZHJpdmVycyBleGNoYW5naW5nIGRhdGEgd2l0aCBhcHBsaWNhdGlvbnMgbXVzdAorc3VwcG9ydCB0aGUgPGNvbnN0YW50Pk9fTk9OQkxPQ0s8L2NvbnN0YW50PiBmbGFnLjwvcGFyYT4KKwkgIDxwYXJhPk90aGVyIGZsYWdzIGhhdmUgbm8gZWZmZWN0LjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgPHBhcmE+VG8gb3BlbiBhIFY0TDIgZGV2aWNlIGFwcGxpY2F0aW9ucyBjYWxsCis8ZnVuY3Rpb24+b3BlbigpPC9mdW5jdGlvbj4gd2l0aCB0aGUgZGVzaXJlZCBkZXZpY2UgbmFtZS4gVGhpcworZnVuY3Rpb24gaGFzIG5vIHNpZGUgZWZmZWN0czsgYWxsIGRhdGEgZm9ybWF0IHBhcmFtZXRlcnMsIGN1cnJlbnQKK2lucHV0IG9yIG91dHB1dCwgY29udHJvbCB2YWx1ZXMgb3Igb3RoZXIgcHJvcGVydGllcyByZW1haW4gdW5jaGFuZ2VkLgorQXQgdGhlIGZpcnN0IDxmdW5jdGlvbj5vcGVuKCk8L2Z1bmN0aW9uPiBjYWxsIGFmdGVyIGxvYWRpbmcgdGhlIGRyaXZlcgordGhleSB3aWxsIGJlIHJlc2V0IHRvIGRlZmF1bHQgdmFsdWVzLCBkcml2ZXJzIGFyZSBuZXZlciBpbiBhbgordW5kZWZpbmVkIHN0YXRlLjwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5SZXR1cm4gVmFsdWU8L3RpdGxlPgorCisgICAgPHBhcmE+T24gc3VjY2VzcyA8ZnVuY3Rpb24+b3BlbjwvZnVuY3Rpb24+IHJldHVybnMgdGhlIG5ldyBmaWxlCitkZXNjcmlwdG9yLiBPbiBlcnJvciAtMSBpcyByZXR1cm5lZCwgYW5kIHRoZSA8dmFybmFtZT5lcnJubzwvdmFybmFtZT4KK3ZhcmlhYmxlIGlzIHNldCBhcHByb3ByaWF0ZWx5LiBQb3NzaWJsZSBlcnJvciBjb2RlcyBhcmU6PC9wYXJhPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FQUNDRVM8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIGNhbGxlciBoYXMgbm8gcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhlCitkZXZpY2UuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FQlVTWTwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgb3BlbnMgYW5kIHRoZQorZGV2aWNlIGlzIGFscmVhZHkgaW4gdXNlLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RU5YSU88L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+Tm8gZGV2aWNlIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBkZXZpY2Ugc3BlY2lhbCBmaWxlCitleGlzdHMuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FTk9NRU08L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+Tm90IGVub3VnaCBrZXJuZWwgbWVtb3J5IHdhcyBhdmFpbGFibGUgdG8gY29tcGxldGUgdGhlCityZXF1ZXN0LjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RU1GSUxFPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSAgcHJvY2VzcyAgYWxyZWFkeSAgaGFzICB0aGUgIG1heGltdW0gbnVtYmVyIG9mCitmaWxlcyBvcGVuLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RU5GSUxFPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSBsaW1pdCBvbiB0aGUgdG90YWwgbnVtYmVyIG9mIGZpbGVzIG9wZW4gb24gdGhlCitzeXN0ZW0gaGFzIGJlZW4gcmVhY2hlZC48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZnVuYy1wb2xsLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZnVuYy1wb2xsLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzczZjExCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9mdW5jLXBvbGwueG1sCkBAIC0wLDAgKzEsMTQyIEBACis8cmVmZW50cnkgaWQ9ImZ1bmMtcG9sbCI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPlY0TDIgcG9sbCgpPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT52NGwyLXBvbGw8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+V2FpdCBmb3Igc29tZSBldmVudCBvbiBhIGZpbGUgZGVzY3JpcHRvcjwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNzeW5vcHNpc2luZm8+I2luY2x1ZGUgJmx0O3N5cy9wb2xsLmgmZ3Q7PC9mdW5jc3lub3BzaXNpbmZvPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5wb2xsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPnN0cnVjdCBwb2xsZmQgKjxwYXJhbWV0ZXI+dWZkczwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnVuc2lnbmVkIGludCA8cGFyYW1ldGVyPm5mZHM8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj50aW1lb3V0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPldpdGggdGhlIDxmdW5jdGlvbj5wb2xsKCk8L2Z1bmN0aW9uPiBmdW5jdGlvbiBhcHBsaWNhdGlvbnMKK2NhbiBzdXNwZW5kIGV4ZWN1dGlvbiB1bnRpbCB0aGUgZHJpdmVyIGhhcyBjYXB0dXJlZCBkYXRhIG9yIGlzIHJlYWR5Cit0byBhY2NlcHQgZGF0YSBmb3Igb3V0cHV0LjwvcGFyYT4KKworICAgIDxwYXJhPldoZW4gc3RyZWFtaW5nIEkvTyBoYXMgYmVlbiBuZWdvdGlhdGVkIHRoaXMgZnVuY3Rpb24gd2FpdHMKK3VudGlsIGEgYnVmZmVyIGhhcyBiZWVuIGZpbGxlZCBieSB0aGUgY2FwdHVyZSBkZXZpY2UgYW5kIGNhbiBiZSBkZXF1ZXVlZAord2l0aCB0aGUgJlZJRElPQy1EUUJVRjsgaW9jdGwuIEZvciBvdXRwdXQgZGV2aWNlcyB0aGlzIGZ1bmN0aW9uIHdhaXRzCit1bnRpbCB0aGUgZGV2aWNlIGlzIHJlYWR5IHRvIGFjY2VwdCBhIG5ldyBidWZmZXIgdG8gYmUgcXVldWVkIHVwIHdpdGgKK3RoZSAmVklESU9DLVFCVUY7IGlvY3RsIGZvciBkaXNwbGF5LiBXaGVuIGJ1ZmZlcnMgYXJlIGFscmVhZHkgaW4gdGhlIG91dGdvaW5nCitxdWV1ZSBvZiB0aGUgZHJpdmVyIChjYXB0dXJlKSBvciB0aGUgaW5jb21pbmcgcXVldWUgaXNuJ3QgZnVsbCAoZGlzcGxheSkKK3RoZSBmdW5jdGlvbiByZXR1cm5zIGltbWVkaWF0ZWx5LjwvcGFyYT4KKworICAgIDxwYXJhPk9uIHN1Y2Nlc3MgPGZ1bmN0aW9uPnBvbGwoKTwvZnVuY3Rpb24+IHJldHVybnMgdGhlIG51bWJlciBvZgorZmlsZSBkZXNjcmlwdG9ycyB0aGF0IGhhdmUgYmVlbiBzZWxlY3RlZCAodGhhdCBpcywgZmlsZSBkZXNjcmlwdG9ycworZm9yIHdoaWNoIHRoZSA8c3RydWN0ZmllbGQ+cmV2ZW50czwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mIHRoZQorcmVzcGVjdGl2ZSA8c3RydWN0bmFtZT5wb2xsZmQ8L3N0cnVjdG5hbWU+IHN0cnVjdHVyZSBpcyBub24temVybykuCitDYXB0dXJlIGRldmljZXMgc2V0IHRoZSA8Y29uc3RhbnQ+UE9MTElOPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+UE9MTFJETk9STTwvY29uc3RhbnQ+IGZsYWdzIGluIHRoZQorPHN0cnVjdGZpZWxkPnJldmVudHM8L3N0cnVjdGZpZWxkPiBmaWVsZCwgb3V0cHV0IGRldmljZXMgdGhlCis8Y29uc3RhbnQ+UE9MTE9VVDwvY29uc3RhbnQ+IGFuZCA8Y29uc3RhbnQ+UE9MTFdSTk9STTwvY29uc3RhbnQ+CitmbGFncy4gV2hlbiB0aGUgZnVuY3Rpb24gdGltZWQgb3V0IGl0IHJldHVybnMgYSB2YWx1ZSBvZiB6ZXJvLCBvbgorZmFpbHVyZSBpdCByZXR1cm5zIDxyZXR1cm52YWx1ZT4tMTwvcmV0dXJudmFsdWU+IGFuZCB0aGUKKzx2YXJuYW1lPmVycm5vPC92YXJuYW1lPiB2YXJpYWJsZSBpcyBzZXQgYXBwcm9wcmlhdGVseS4gV2hlbiB0aGUKK2FwcGxpY2F0aW9uIGRpZCBub3QgY2FsbCAmVklESU9DLVNUUkVBTU9OOyB0aGUKKzxmdW5jdGlvbj5wb2xsKCk8L2Z1bmN0aW9uPiBmdW5jdGlvbiBzdWNjZWVkcywgYnV0IHNldHMgdGhlCis8Y29uc3RhbnQ+UE9MTEVSUjwvY29uc3RhbnQ+IGZsYWcgaW4gdGhlCis8c3RydWN0ZmllbGQ+cmV2ZW50czwvc3RydWN0ZmllbGQ+IGZpZWxkLiBXaGVuIHRoZQorYXBwbGljYXRpb24gaGFzIGNhbGxlZCAmVklESU9DLVNUUkVBTU9OOyBmb3IgYSBjYXB0dXJlIGRldmljZSBidXQgaGFzbid0Cit5ZXQgY2FsbGVkICZWSURJT0MtUUJVRjssIHRoZSA8ZnVuY3Rpb24+cG9sbCgpPC9mdW5jdGlvbj4gZnVuY3Rpb24KK3N1Y2NlZWRzIGFuZCBzZXRzIHRoZSA8Y29uc3RhbnQ+UE9MTEVSUjwvY29uc3RhbnQ+IGZsYWcgaW4gdGhlCis8c3RydWN0ZmllbGQ+cmV2ZW50czwvc3RydWN0ZmllbGQ+IGZpZWxkLiBGb3Igb3V0cHV0IGRldmljZXMgdGhpcworc2FtZSBzaXR1YXRpb24gd2lsbCBjYXVzZSA8ZnVuY3Rpb24+cG9sbCgpPC9mdW5jdGlvbj4gdG8gc3VjY2VlZAorYXMgd2VsbCwgYnV0IGl0IHNldHMgdGhlIDxjb25zdGFudD5QT0xMT1VUPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+UE9MTFdSTk9STTwvY29uc3RhbnQ+IGZsYWdzIGluIHRoZSA8c3RydWN0ZmllbGQ+cmV2ZW50czwvc3RydWN0ZmllbGQ+CitmaWVsZC48L3BhcmE+CisKKyAgICA8cGFyYT5JZiBhbiBldmVudCBvY2N1cnJlZCAoc2VlICZWSURJT0MtRFFFVkVOVDspIHRoZW4KKzxjb25zdGFudD5QT0xMUFJJPC9jb25zdGFudD4gd2lsbCBiZSBzZXQgaW4gdGhlIDxzdHJ1Y3RmaWVsZD5yZXZlbnRzPC9zdHJ1Y3RmaWVsZD4KK2ZpZWxkIGFuZCA8ZnVuY3Rpb24+cG9sbCgpPC9mdW5jdGlvbj4gd2lsbCByZXR1cm4uPC9wYXJhPgorCisgICAgPHBhcmE+V2hlbiB1c2Ugb2YgdGhlIDxmdW5jdGlvbj5yZWFkKCk8L2Z1bmN0aW9uPiBmdW5jdGlvbiBoYXMKK2JlZW4gbmVnb3RpYXRlZCBhbmQgdGhlIGRyaXZlciBkb2VzIG5vdCBjYXB0dXJlIHlldCwgdGhlCis8ZnVuY3Rpb24+cG9sbDwvZnVuY3Rpb24+IGZ1bmN0aW9uIHN0YXJ0cyBjYXB0dXJpbmcuIFdoZW4gdGhhdCBmYWlscworaXQgcmV0dXJucyBhIDxjb25zdGFudD5QT0xMRVJSPC9jb25zdGFudD4gYXMgYWJvdmUuIE90aGVyd2lzZSBpdCB3YWl0cwordW50aWwgZGF0YSBoYXMgYmVlbiBjYXB0dXJlZCBhbmQgY2FuIGJlIHJlYWQuIFdoZW4gdGhlIGRyaXZlciBjYXB0dXJlcworY29udGludW91c2x5IChhcyBvcHBvc2VkIHRvLCBmb3IgZXhhbXBsZSwgc3RpbGwgaW1hZ2VzKSB0aGUgZnVuY3Rpb24KK21heSByZXR1cm4gaW1tZWRpYXRlbHkuPC9wYXJhPgorCisgICAgPHBhcmE+V2hlbiB1c2Ugb2YgdGhlIDxmdW5jdGlvbj53cml0ZSgpPC9mdW5jdGlvbj4gZnVuY3Rpb24gaGFzCitiZWVuIG5lZ290aWF0ZWQgYW5kIHRoZSBkcml2ZXIgZG9lcyBub3Qgc3RyZWFtIHlldCwgdGhlCis8ZnVuY3Rpb24+cG9sbDwvZnVuY3Rpb24+IGZ1bmN0aW9uIHN0YXJ0cyBzdHJlYW1pbmcuIFdoZW4gdGhhdCBmYWlscworaXQgcmV0dXJucyBhIDxjb25zdGFudD5QT0xMRVJSPC9jb25zdGFudD4gYXMgYWJvdmUuIE90aGVyd2lzZSBpdCB3YWl0cwordW50aWwgdGhlIGRyaXZlciBpcyByZWFkeSBmb3IgYSBub24tYmxvY2tpbmcKKzxmdW5jdGlvbj53cml0ZSgpPC9mdW5jdGlvbj4gY2FsbC48L3BhcmE+CisKKyAgICA8cGFyYT5JZiB0aGUgY2FsbGVyIGlzIG9ubHkgaW50ZXJlc3RlZCBpbiBldmVudHMgKGp1c3QKKzxjb25zdGFudD5QT0xMUFJJPC9jb25zdGFudD4gaXMgc2V0IGluIHRoZSA8c3RydWN0ZmllbGQ+ZXZlbnRzPC9zdHJ1Y3RmaWVsZD4KK2ZpZWxkKSwgdGhlbiA8ZnVuY3Rpb24+cG9sbCgpPC9mdW5jdGlvbj4gd2lsbCA8ZW1waGFzaXM+bm90PC9lbXBoYXNpcz4KK3N0YXJ0IHN0cmVhbWluZyBpZiB0aGUgZHJpdmVyIGRvZXMgbm90IHN0cmVhbSB5ZXQuIFRoaXMgbWFrZXMgaXQKK3Bvc3NpYmxlIHRvIGp1c3QgcG9sbCBmb3IgZXZlbnRzIGFuZCBub3QgZm9yIGJ1ZmZlcnMuPC9wYXJhPgorCisgICAgPHBhcmE+QWxsIGRyaXZlcnMgaW1wbGVtZW50aW5nIHRoZSA8ZnVuY3Rpb24+cmVhZCgpPC9mdW5jdGlvbj4gb3IKKzxmdW5jdGlvbj53cml0ZSgpPC9mdW5jdGlvbj4gZnVuY3Rpb24gb3Igc3RyZWFtaW5nIEkvTyBtdXN0IGFsc28KK3N1cHBvcnQgdGhlIDxmdW5jdGlvbj5wb2xsKCk8L2Z1bmN0aW9uPiBmdW5jdGlvbi48L3BhcmE+CisKKyAgICA8cGFyYT5Gb3IgbW9yZSBkZXRhaWxzIHNlZSB0aGUKKzxmdW5jdGlvbj5wb2xsKCk8L2Z1bmN0aW9uPiBtYW51YWwgcGFnZS48L3BhcmE+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5SZXR1cm4gVmFsdWU8L3RpdGxlPgorCisgICAgPHBhcmE+T24gc3VjY2VzcywgPGZ1bmN0aW9uPnBvbGwoKTwvZnVuY3Rpb24+IHJldHVybnMgdGhlIG51bWJlcgorc3RydWN0dXJlcyB3aGljaCBoYXZlIG5vbi16ZXJvIDxzdHJ1Y3RmaWVsZD5yZXZlbnRzPC9zdHJ1Y3RmaWVsZD4KK2ZpZWxkcywgb3IgemVybyBpZiB0aGUgY2FsbCB0aW1lZCBvdXQuIE9uIGVycm9yCis8cmV0dXJudmFsdWU+LTE8L3JldHVybnZhbHVlPiBpcyByZXR1cm5lZCwgYW5kIHRoZQorPHZhcm5hbWU+ZXJybm88L3Zhcm5hbWU+IHZhcmlhYmxlIGlzIHNldCBhcHByb3ByaWF0ZWx5OjwvcGFyYT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUJBREY8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+T25lIG9yIG1vcmUgb2YgdGhlIDxwYXJhbWV0ZXI+dWZkczwvcGFyYW1ldGVyPiBtZW1iZXJzCitzcGVjaWZ5IGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUJVU1k8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIGRyaXZlciBkb2VzIG5vdCBzdXBwb3J0IG11bHRpcGxlIHJlYWQgb3Igd3JpdGUKK3N0cmVhbXMgYW5kIHRoZSBkZXZpY2UgaXMgYWxyZWFkeSBpbiB1c2UuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FRkFVTFQ8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PHBhcmFtZXRlcj51ZmRzPC9wYXJhbWV0ZXI+IHJlZmVyZW5jZXMgYW4gaW5hY2Nlc3NpYmxlCittZW1vcnkgYXJlYS48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlRSPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSBjYWxsIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgPHBhcmFtZXRlcj5uZmRzPC9wYXJhbWV0ZXI+IGFyZ3VtZW50IGlzIGdyZWF0ZXIKK3RoYW4gPGNvbnN0YW50Pk9QRU5fTUFYPC9jb25zdGFudD4uPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2Z1bmMtcmVhZC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2Z1bmMtcmVhZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIxOGJiZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZnVuYy1yZWFkLnhtbApAQCAtMCwwICsxLDE4MSBAQAorPHJlZmVudHJ5IGlkPSJmdW5jLXJlYWQiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5WNEwyIHJlYWQoKTwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+djRsMi1yZWFkPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPlJlYWQgZnJvbSBhIFY0TDIgZGV2aWNlPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3N5bm9wc2lzaW5mbz4jaW5jbHVkZSAmbHQ7dW5pc3RkLmgmZ3Q7PC9mdW5jc3lub3BzaXNpbmZvPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+c3NpemVfdCA8ZnVuY3Rpb24+cmVhZDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnZvaWQgKjxwYXJhbWV0ZXI+YnVmPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c2l6ZV90IDxwYXJhbWV0ZXI+Y291bnQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+YnVmPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+Y291bnQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPjxmdW5jdGlvbj5yZWFkKCk8L2Z1bmN0aW9uPiBhdHRlbXB0cyB0byByZWFkIHVwIHRvCis8cGFyYW1ldGVyPmNvdW50PC9wYXJhbWV0ZXI+IGJ5dGVzIGZyb20gZmlsZSBkZXNjcmlwdG9yCis8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+IGludG8gdGhlIGJ1ZmZlciBzdGFydGluZyBhdAorPHBhcmFtZXRlcj5idWY8L3BhcmFtZXRlcj4uIFRoZSBsYXlvdXQgb2YgdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlciBpcworZGlzY3Vzc2VkIGluIHRoZSByZXNwZWN0aXZlIGRldmljZSBpbnRlcmZhY2Ugc2VjdGlvbiwgc2VlICMjLiBJZiA8cGFyYW1ldGVyPmNvdW50PC9wYXJhbWV0ZXI+IGlzIHplcm8sCis8ZnVuY3Rpb24+cmVhZCgpPC9mdW5jdGlvbj4gcmV0dXJucyB6ZXJvIGFuZCBoYXMgbm8gb3RoZXIgcmVzdWx0cy4gSWYKKzxwYXJhbWV0ZXI+Y291bnQ8L3BhcmFtZXRlcj4gaXMgZ3JlYXRlciB0aGFuCis8Y29uc3RhbnQ+U1NJWkVfTUFYPC9jb25zdGFudD4sIHRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQuIFJlZ2FyZGxlc3MKK29mIHRoZSA8cGFyYW1ldGVyPmNvdW50PC9wYXJhbWV0ZXI+IHZhbHVlIGVhY2gKKzxmdW5jdGlvbj5yZWFkKCk8L2Z1bmN0aW9uPiBjYWxsIHdpbGwgcHJvdmlkZSBhdCBtb3N0IG9uZSBmcmFtZSAodHdvCitmaWVsZHMpIHdvcnRoIG9mIGRhdGEuPC9wYXJhPgorCisgICAgPHBhcmE+QnkgZGVmYXVsdCA8ZnVuY3Rpb24+cmVhZCgpPC9mdW5jdGlvbj4gYmxvY2tzIHVudGlsIGRhdGEKK2JlY29tZXMgYXZhaWxhYmxlLiBXaGVuIHRoZSA8Y29uc3RhbnQ+T19OT05CTE9DSzwvY29uc3RhbnQ+IGZsYWcgd2FzCitnaXZlbiB0byB0aGUgJmZ1bmMtb3BlbjsgZnVuY3Rpb24gaXQKK3JldHVybnMgaW1tZWRpYXRlbHkgd2l0aCBhbiAmRUFHQUlOOyB3aGVuIG5vIGRhdGEgaXMgYXZhaWxhYmxlLiBUaGUKKyZmdW5jLXNlbGVjdDsgb3IgJmZ1bmMtcG9sbDsgZnVuY3Rpb25zCitjYW4gYWx3YXlzIGJlIHVzZWQgdG8gc3VzcGVuZCBleGVjdXRpb24gdW50aWwgZGF0YSBiZWNvbWVzIGF2YWlsYWJsZS4gQWxsCitkcml2ZXJzIHN1cHBvcnRpbmcgdGhlIDxmdW5jdGlvbj5yZWFkKCk8L2Z1bmN0aW9uPiBmdW5jdGlvbiBtdXN0IGFsc28KK3N1cHBvcnQgPGZ1bmN0aW9uPnNlbGVjdCgpPC9mdW5jdGlvbj4gYW5kCis8ZnVuY3Rpb24+cG9sbCgpPC9mdW5jdGlvbj4uPC9wYXJhPgorCisgICAgPHBhcmE+RHJpdmVycyBjYW4gaW1wbGVtZW50IHJlYWQgZnVuY3Rpb25hbGl0eSBpbiBkaWZmZXJlbnQKK3dheXMsIHVzaW5nIGEgc2luZ2xlIG9yIG11bHRpcGxlIGJ1ZmZlcnMgYW5kIGRpc2NhcmRpbmcgdGhlIG9sZGVzdCBvcgorbmV3ZXN0IGZyYW1lcyBvbmNlIHRoZSBpbnRlcm5hbCBidWZmZXJzIGFyZSBmaWxsZWQuPC9wYXJhPgorCisgICAgPHBhcmE+PGZ1bmN0aW9uPnJlYWQoKTwvZnVuY3Rpb24+IG5ldmVyIHJldHVybnMgYSAic25hcHNob3QiIG9mIGEKK2J1ZmZlciBiZWluZyBmaWxsZWQuIFVzaW5nIGEgc2luZ2xlIGJ1ZmZlciB0aGUgZHJpdmVyIHdpbGwgc3RvcAorY2FwdHVyaW5nIHdoZW4gdGhlIGFwcGxpY2F0aW9uIHN0YXJ0cyByZWFkaW5nIHRoZSBidWZmZXIgdW50aWwgdGhlCityZWFkIGlzIGZpbmlzaGVkLiBUaHVzIG9ubHkgdGhlIHBlcmlvZCBvZiB0aGUgdmVydGljYWwgYmxhbmtpbmcKK2ludGVydmFsIGlzIGF2YWlsYWJsZSBmb3IgcmVhZGluZywgb3IgdGhlIGNhcHR1cmUgcmF0ZSBtdXN0IGZhbGwgYmVsb3cKK3RoZSBub21pbmFsIGZyYW1lIHJhdGUgb2YgdGhlIHZpZGVvIHN0YW5kYXJkLjwvcGFyYT4KKworPHBhcmE+VGhlIGJlaGF2aW9yIG9mCis8ZnVuY3Rpb24+cmVhZCgpPC9mdW5jdGlvbj4gd2hlbiBjYWxsZWQgZHVyaW5nIHRoZSBhY3RpdmUgcGljdHVyZQorcGVyaW9kIG9yIHRoZSB2ZXJ0aWNhbCBibGFua2luZyBzZXBhcmF0aW5nIHRoZSB0b3AgYW5kIGJvdHRvbSBmaWVsZAorZGVwZW5kcyBvbiB0aGUgZGlzY2FyZGluZyBwb2xpY3kuIEEgZHJpdmVyIGRpc2NhcmRpbmcgdGhlIG9sZGVzdAorZnJhbWVzIGtlZXBzIGNhcHR1cmluZyBpbnRvIGFuIGludGVybmFsIGJ1ZmZlciwgY29udGludW91c2x5CitvdmVyd3JpdGluZyB0aGUgcHJldmlvdXNseSwgbm90IHJlYWQgZnJhbWUsIGFuZCByZXR1cm5zIHRoZSBmcmFtZQorYmVpbmcgcmVjZWl2ZWQgYXQgdGhlIHRpbWUgb2YgdGhlIDxmdW5jdGlvbj5yZWFkKCk8L2Z1bmN0aW9uPiBjYWxsIGFzCitzb29uIGFzIGl0IGlzIGNvbXBsZXRlLjwvcGFyYT4KKworICAgIDxwYXJhPkEgZHJpdmVyIGRpc2NhcmRpbmcgdGhlIG5ld2VzdCBmcmFtZXMgc3RvcHMgY2FwdHVyaW5nIHVudGlsCit0aGUgbmV4dCA8ZnVuY3Rpb24+cmVhZCgpPC9mdW5jdGlvbj4gY2FsbC4gVGhlIGZyYW1lIGJlaW5nIHJlY2VpdmVkIGF0Cis8ZnVuY3Rpb24+cmVhZCgpPC9mdW5jdGlvbj4gdGltZSBpcyBkaXNjYXJkZWQsIHJldHVybmluZyB0aGUgZm9sbG93aW5nCitmcmFtZSBpbnN0ZWFkLiBBZ2FpbiB0aGlzIGltcGxpZXMgYSByZWR1Y3Rpb24gb2YgdGhlIGNhcHR1cmUgcmF0ZSB0bworb25lIGhhbGYgb3IgbGVzcyBvZiB0aGUgbm9taW5hbCBmcmFtZSByYXRlLiBBbiBleGFtcGxlIG9mIHRoaXMgbW9kZWwKK2lzIHRoZSB2aWRlbyByZWFkIG1vZGUgb2YgdGhlIGJ0dHYgZHJpdmVyLCBpbml0aWF0aW5nIGEgRE1BIHRvIHVzZXIKK21lbW9yeSB3aGVuIDxmdW5jdGlvbj5yZWFkKCk8L2Z1bmN0aW9uPiBpcyBjYWxsZWQgYW5kIHJldHVybmluZyB3aGVuCit0aGUgRE1BIGZpbmlzaGVkLjwvcGFyYT4KKworICAgIDxwYXJhPkluIHRoZSBtdWx0aXBsZSBidWZmZXIgbW9kZWwgZHJpdmVycyBtYWludGFpbiBhIHJpbmcgb2YKK2ludGVybmFsIGJ1ZmZlcnMsIGF1dG9tYXRpY2FsbHkgYWR2YW5jaW5nIHRvIHRoZSBuZXh0IGZyZWUgYnVmZmVyLgorVGhpcyBhbGxvd3MgY29udGludW91cyBjYXB0dXJpbmcgd2hlbiB0aGUgYXBwbGljYXRpb24gY2FuIGVtcHR5IHRoZQorYnVmZmVycyBmYXN0IGVub3VnaC4gQWdhaW4sIHRoZSBiZWhhdmlvciB3aGVuIHRoZSBkcml2ZXIgcnVucyBvdXQgb2YKK2ZyZWUgYnVmZmVycyBkZXBlbmRzIG9uIHRoZSBkaXNjYXJkaW5nIHBvbGljeS48L3BhcmE+CisKKyAgICA8cGFyYT5BcHBsaWNhdGlvbnMgY2FuIGdldCBhbmQgc2V0IHRoZSBudW1iZXIgb2YgYnVmZmVycyB1c2VkCitpbnRlcm5hbGx5IGJ5IHRoZSBkcml2ZXIgd2l0aCB0aGUgJlZJRElPQy1HLVBBUk07IGFuZCAmVklESU9DLVMtUEFSTTsKK2lvY3Rscy4gVGhleSBhcmUgb3B0aW9uYWwsIGhvd2V2ZXIuIFRoZSBkaXNjYXJkaW5nIHBvbGljeSBpcyBub3QKK3JlcG9ydGVkIGFuZCBjYW5ub3QgYmUgY2hhbmdlZC4gRm9yIG1pbmltdW0gcmVxdWlyZW1lbnRzIHNlZSA8eHJlZgorCWxpbmtlbmQ9ImRldmljZXMiIC8+LjwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPlJldHVybiBWYWx1ZTwvdGl0bGU+CisKKyAgICA8cGFyYT5PbiBzdWNjZXNzLCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgaXMgcmV0dXJuZWQuIEl0IGlzIG5vdAorYW4gZXJyb3IgaWYgdGhpcyBudW1iZXIgaXMgc21hbGxlciB0aGFuIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVxdWVzdGVkLAorb3IgdGhlIGFtb3VudCBvZiBkYXRhIHJlcXVpcmVkIGZvciBvbmUgZnJhbWUuIFRoaXMgbWF5IGhhcHBlbiBmb3IKK2V4YW1wbGUgYmVjYXVzZSA8ZnVuY3Rpb24+cmVhZCgpPC9mdW5jdGlvbj4gd2FzIGludGVycnVwdGVkIGJ5IGEKK3NpZ25hbC4gT24gZXJyb3IsIC0xIGlzIHJldHVybmVkLCBhbmQgdGhlIDx2YXJuYW1lPmVycm5vPC92YXJuYW1lPgordmFyaWFibGUgaXMgc2V0IGFwcHJvcHJpYXRlbHkuIEluIHRoaXMgY2FzZSB0aGUgbmV4dCByZWFkIHdpbGwgc3RhcnQKK2F0IHRoZSBiZWdpbm5pbmcgb2YgYSBuZXcgZnJhbWUuIFBvc3NpYmxlIGVycm9yIGNvZGVzIGFyZTo8L3BhcmE+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVBR0FJTjwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5Ob24tYmxvY2tpbmcgSS9PIGhhcyBiZWVuIHNlbGVjdGVkIHVzaW5nCitPX05PTkJMT0NLIGFuZCBubyBkYXRhIHdhcyBpbW1lZGlhdGVseSBhdmFpbGFibGUgZm9yIHJlYWRpbmcuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FQkFERjwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+IGlzIG5vdCBhIHZhbGlkIGZpbGUKK2Rlc2NyaXB0b3Igb3IgaXMgbm90IG9wZW4gZm9yIHJlYWRpbmcsIG9yIHRoZSBwcm9jZXNzIGFscmVhZHkgaGFzIHRoZQorbWF4aW11bSBudW1iZXIgb2YgZmlsZXMgb3Blbi48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVCVVNZPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSBkcml2ZXIgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aXBsZSByZWFkIHN0cmVhbXMgYW5kIHRoZQorZGV2aWNlIGlzIGFscmVhZHkgaW4gdXNlLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUZBVUxUPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjxwYXJhbWV0ZXI+YnVmPC9wYXJhbWV0ZXI+IHJlZmVyZW5jZXMgYW4gaW5hY2Nlc3NpYmxlCittZW1vcnkgYXJlYS48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlRSPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSBjYWxsIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCBiZWZvcmUgYW55CitkYXRhIHdhcyByZWFkLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUlPPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkkvTyBlcnJvci4gVGhpcyBpbmRpY2F0ZXMgc29tZSBoYXJkd2FyZSBwcm9ibGVtIG9yIGEKK2ZhaWx1cmUgdG8gY29tbXVuaWNhdGUgd2l0aCBhIHJlbW90ZSBkZXZpY2UgKFVTQiBjYW1lcmEgZXRjLikuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FSU5WQUw8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIDxmdW5jdGlvbj5yZWFkKCk8L2Z1bmN0aW9uPiBmdW5jdGlvbiBpcyBub3QKK3N1cHBvcnRlZCBieSB0aGlzIGRyaXZlciwgbm90IG9uIHRoaXMgZGV2aWNlLCBvciBnZW5lcmFsbHkgbm90IG9uIHRoaXMKK3R5cGUgb2YgZGV2aWNlLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9mdW5jLXNlbGVjdC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2Z1bmMtc2VsZWN0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTJhNjBkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9mdW5jLXNlbGVjdC54bWwKQEAgLTAsMCArMSwxMzAgQEAKKzxyZWZlbnRyeSBpZD0iZnVuYy1zZWxlY3QiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5WNEwyIHNlbGVjdCgpPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT52NGwyLXNlbGVjdDwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5TeW5jaHJvbm91cyBJL08gbXVsdGlwbGV4aW5nPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3N5bm9wc2lzaW5mbz4KKyNpbmNsdWRlICZsdDtzeXMvdGltZS5oJmd0OworI2luY2x1ZGUgJmx0O3N5cy90eXBlcy5oJmd0OworI2luY2x1ZGUgJmx0O3VuaXN0ZC5oJmd0OzwvZnVuY3N5bm9wc2lzaW5mbz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+c2VsZWN0PC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPm5mZHM8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5mZF9zZXQgKjxwYXJhbWV0ZXI+cmVhZGZkczwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmZkX3NldCAqPHBhcmFtZXRlcj53cml0ZWZkczwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmZkX3NldCAqPHBhcmFtZXRlcj5leGNlcHRmZHM8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zdHJ1Y3QgdGltZXZhbCAqPHBhcmFtZXRlcj50aW1lb3V0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPldpdGggdGhlIDxmdW5jdGlvbj5zZWxlY3QoKTwvZnVuY3Rpb24+IGZ1bmN0aW9uIGFwcGxpY2F0aW9ucworY2FuIHN1c3BlbmQgZXhlY3V0aW9uIHVudGlsIHRoZSBkcml2ZXIgaGFzIGNhcHR1cmVkIGRhdGEgb3IgaXMgcmVhZHkKK3RvIGFjY2VwdCBkYXRhIGZvciBvdXRwdXQuPC9wYXJhPgorCisgICAgPHBhcmE+V2hlbiBzdHJlYW1pbmcgSS9PIGhhcyBiZWVuIG5lZ290aWF0ZWQgdGhpcyBmdW5jdGlvbiB3YWl0cwordW50aWwgYSBidWZmZXIgaGFzIGJlZW4gZmlsbGVkIG9yIGRpc3BsYXllZCBhbmQgY2FuIGJlIGRlcXVldWVkIHdpdGgKK3RoZSAmVklESU9DLURRQlVGOyBpb2N0bC4gV2hlbiBidWZmZXJzIGFyZSBhbHJlYWR5IGluIHRoZSBvdXRnb2luZworcXVldWUgb2YgdGhlIGRyaXZlciB0aGUgZnVuY3Rpb24gcmV0dXJucyBpbW1lZGlhdGVseS48L3BhcmE+CisKKyAgICA8cGFyYT5PbiBzdWNjZXNzIDxmdW5jdGlvbj5zZWxlY3QoKTwvZnVuY3Rpb24+IHJldHVybnMgdGhlIHRvdGFsCitudW1iZXIgb2YgYml0cyBzZXQgaW4gdGhlIDxzdHJ1Y3RuYW1lPmZkX3NldDwvc3RydWN0bmFtZT5zLiBXaGVuIHRoZQorZnVuY3Rpb24gdGltZWQgb3V0IGl0IHJldHVybnMgYSB2YWx1ZSBvZiB6ZXJvLiBPbiBmYWlsdXJlIGl0IHJldHVybnMKKzxyZXR1cm52YWx1ZT4tMTwvcmV0dXJudmFsdWU+IGFuZCB0aGUgPHZhcm5hbWU+ZXJybm88L3Zhcm5hbWU+Cit2YXJpYWJsZSBpcyBzZXQgYXBwcm9wcmlhdGVseS4gV2hlbiB0aGUgYXBwbGljYXRpb24gZGlkIG5vdCBjYWxsCismVklESU9DLVFCVUY7IG9yICZWSURJT0MtU1RSRUFNT047IHlldCB0aGUKKzxmdW5jdGlvbj5zZWxlY3QoKTwvZnVuY3Rpb24+IGZ1bmN0aW9uIHN1Y2NlZWRzLCBzZXR0aW5nIHRoZSBiaXQgb2YKK3RoZSBmaWxlIGRlc2NyaXB0b3IgaW4gPHBhcmFtZXRlcj5yZWFkZmRzPC9wYXJhbWV0ZXI+IG9yCis8cGFyYW1ldGVyPndyaXRlZmRzPC9wYXJhbWV0ZXI+LCBidXQgc3Vic2VxdWVudCAmVklESU9DLURRQlVGOyBjYWxscword2lsbCBmYWlsLjxmb290bm90ZT48cGFyYT5UaGUgTGludXgga2VybmVsIGltcGxlbWVudHMKKzxmdW5jdGlvbj5zZWxlY3QoKTwvZnVuY3Rpb24+IGxpa2UgdGhlICZmdW5jLXBvbGw7IGZ1bmN0aW9uLCBidXQKKzxmdW5jdGlvbj5zZWxlY3QoKTwvZnVuY3Rpb24+IGNhbm5vdCByZXR1cm4gYQorPGNvbnN0YW50PlBPTExFUlI8L2NvbnN0YW50Pi48L3BhcmE+CisgICAgICA8L2Zvb3Rub3RlPjwvcGFyYT4KKworICAgIDxwYXJhPldoZW4gdXNlIG9mIHRoZSA8ZnVuY3Rpb24+cmVhZCgpPC9mdW5jdGlvbj4gZnVuY3Rpb24gaGFzCitiZWVuIG5lZ290aWF0ZWQgYW5kIHRoZSBkcml2ZXIgZG9lcyBub3QgY2FwdHVyZSB5ZXQsIHRoZQorPGZ1bmN0aW9uPnNlbGVjdCgpPC9mdW5jdGlvbj4gZnVuY3Rpb24gc3RhcnRzIGNhcHR1cmluZy4gV2hlbiB0aGF0CitmYWlscywgPGZ1bmN0aW9uPnNlbGVjdCgpPC9mdW5jdGlvbj4gcmV0dXJucyBzdWNjZXNzZnVsIGFuZCBhCitzdWJzZXF1ZW50IDxmdW5jdGlvbj5yZWFkKCk8L2Z1bmN0aW9uPiBjYWxsLCB3aGljaCBhbHNvIGF0dGVtcHRzIHRvCitzdGFydCBjYXB0dXJpbmcsIHdpbGwgcmV0dXJuIGFuIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuIFdoZW4gdGhlCitkcml2ZXIgY2FwdHVyZXMgY29udGludW91c2x5IChhcyBvcHBvc2VkIHRvLCBmb3IgZXhhbXBsZSwgc3RpbGwKK2ltYWdlcykgYW5kIGRhdGEgaXMgYWxyZWFkeSBhdmFpbGFibGUgdGhlCis8ZnVuY3Rpb24+c2VsZWN0KCk8L2Z1bmN0aW9uPiBmdW5jdGlvbiByZXR1cm5zIGltbWVkaWF0ZWx5LjwvcGFyYT4KKworICAgIDxwYXJhPldoZW4gdXNlIG9mIHRoZSA8ZnVuY3Rpb24+d3JpdGUoKTwvZnVuY3Rpb24+IGZ1bmN0aW9uIGhhcworYmVlbiBuZWdvdGlhdGVkIHRoZSA8ZnVuY3Rpb24+c2VsZWN0KCk8L2Z1bmN0aW9uPiBmdW5jdGlvbiBqdXN0IHdhaXRzCit1bnRpbCB0aGUgZHJpdmVyIGlzIHJlYWR5IGZvciBhIG5vbi1ibG9ja2luZworPGZ1bmN0aW9uPndyaXRlKCk8L2Z1bmN0aW9uPiBjYWxsLjwvcGFyYT4KKworICAgIDxwYXJhPkFsbCBkcml2ZXJzIGltcGxlbWVudGluZyB0aGUgPGZ1bmN0aW9uPnJlYWQoKTwvZnVuY3Rpb24+IG9yCis8ZnVuY3Rpb24+d3JpdGUoKTwvZnVuY3Rpb24+IGZ1bmN0aW9uIG9yIHN0cmVhbWluZyBJL08gbXVzdCBhbHNvCitzdXBwb3J0IHRoZSA8ZnVuY3Rpb24+c2VsZWN0KCk8L2Z1bmN0aW9uPiBmdW5jdGlvbi48L3BhcmE+CisKKyAgICA8cGFyYT5Gb3IgbW9yZSBkZXRhaWxzIHNlZSB0aGUgPGZ1bmN0aW9uPnNlbGVjdCgpPC9mdW5jdGlvbj4KK21hbnVhbCBwYWdlLjwvcGFyYT4KKworICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+UmV0dXJuIFZhbHVlPC90aXRsZT4KKworICAgIDxwYXJhPk9uIHN1Y2Nlc3MsIDxmdW5jdGlvbj5zZWxlY3QoKTwvZnVuY3Rpb24+IHJldHVybnMgdGhlIG51bWJlcgorb2YgZGVzY3JpcHRvcnMgY29udGFpbmVkIGluIHRoZSB0aHJlZSByZXR1cm5lZCBkZXNjcmlwdG9yIHNldHMsIHdoaWNoCit3aWxsIGJlIHplcm8gaWYgdGhlIHRpbWVvdXQgZXhwaXJlZC4gT24gZXJyb3IKKzxyZXR1cm52YWx1ZT4tMTwvcmV0dXJudmFsdWU+IGlzIHJldHVybmVkLCBhbmQgdGhlCis8dmFybmFtZT5lcnJubzwvdmFybmFtZT4gdmFyaWFibGUgaXMgc2V0IGFwcHJvcHJpYXRlbHk7IHRoZSBzZXRzIGFuZAorPHBhcmFtZXRlcj50aW1lb3V0PC9wYXJhbWV0ZXI+IGFyZSB1bmRlZmluZWQuIFBvc3NpYmxlIGVycm9yIGNvZGVzCithcmU6PC9wYXJhPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FQkFERjwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5PbmUgb3IgbW9yZSBvZiB0aGUgZmlsZSBkZXNjcmlwdG9yIHNldHMgc3BlY2lmaWVkIGEKK2ZpbGUgZGVzY3JpcHRvciB0aGF0IGlzIG5vdCBvcGVuLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUJVU1k8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIGRyaXZlciBkb2VzIG5vdCBzdXBwb3J0IG11bHRpcGxlIHJlYWQgb3Igd3JpdGUKK3N0cmVhbXMgYW5kIHRoZSBkZXZpY2UgaXMgYWxyZWFkeSBpbiB1c2UuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FRkFVTFQ8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIDxwYXJhbWV0ZXI+cmVhZGZkczwvcGFyYW1ldGVyPiwKKzxwYXJhbWV0ZXI+d3JpdGVmZHM8L3BhcmFtZXRlcj4sIDxwYXJhbWV0ZXI+ZXhjZXB0ZmRzPC9wYXJhbWV0ZXI+IG9yCis8cGFyYW1ldGVyPnRpbWVvdXQ8L3BhcmFtZXRlcj4gcG9pbnRlciByZWZlcmVuY2VzIGFuIGluYWNjZXNzaWJsZSBtZW1vcnkKK2FyZWEuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FSU5UUjwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgY2FsbCB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FSU5WQUw8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIDxwYXJhbWV0ZXI+bmZkczwvcGFyYW1ldGVyPiBhcmd1bWVudCBpcyBsZXNzIHRoYW4KK3plcm8gb3IgZ3JlYXRlciB0aGFuIDxjb25zdGFudD5GRF9TRVRTSVpFPC9jb25zdGFudD4uPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2Z1bmMtd3JpdGUueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9mdW5jLXdyaXRlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzUyMDc4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9mdW5jLXdyaXRlLnhtbApAQCAtMCwwICsxLDEyOCBAQAorPHJlZmVudHJ5IGlkPSJmdW5jLXdyaXRlIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+VjRMMiB3cml0ZSgpPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT52NGwyLXdyaXRlPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPldyaXRlIHRvIGEgVjRMMiBkZXZpY2U8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jc3lub3BzaXNpbmZvPiNpbmNsdWRlICZsdDt1bmlzdGQuaCZndDs8L2Z1bmNzeW5vcHNpc2luZm8+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5zc2l6ZV90IDxmdW5jdGlvbj53cml0ZTwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnZvaWQgKjxwYXJhbWV0ZXI+YnVmPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c2l6ZV90IDxwYXJhbWV0ZXI+Y291bnQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+YnVmPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+Y291bnQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPjxmdW5jdGlvbj53cml0ZSgpPC9mdW5jdGlvbj4gd3JpdGVzIHVwIHRvCis8cGFyYW1ldGVyPmNvdW50PC9wYXJhbWV0ZXI+IGJ5dGVzIHRvIHRoZSBkZXZpY2UgcmVmZXJlbmNlZCBieSB0aGUKK2ZpbGUgZGVzY3JpcHRvciA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+IGZyb20gdGhlIGJ1ZmZlciBzdGFydGluZyBhdAorPHBhcmFtZXRlcj5idWY8L3BhcmFtZXRlcj4uIFdoZW4gdGhlIGhhcmR3YXJlIG91dHB1dHMgYXJlIG5vdCBhY3RpdmUKK3lldCwgdGhpcyBmdW5jdGlvbiBlbmFibGVzIHRoZW0uIFdoZW4gPHBhcmFtZXRlcj5jb3VudDwvcGFyYW1ldGVyPiBpcworemVybywgPGZ1bmN0aW9uPndyaXRlKCk8L2Z1bmN0aW9uPiByZXR1cm5zCis8cmV0dXJudmFsdWU+MDwvcmV0dXJudmFsdWU+IHdpdGhvdXQgYW55IG90aGVyIGVmZmVjdC48L3BhcmE+CisKKyAgICA8cGFyYT5XaGVuIHRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBwcm92aWRlIG1vcmUgZGF0YSBpbiB0aW1lLCB0aGUKK3ByZXZpb3VzIHZpZGVvIGZyYW1lLCByYXcgVkJJIGltYWdlLCBzbGljZWQgVlBTIG9yIFdTUyBkYXRhIGlzCitkaXNwbGF5ZWQgYWdhaW4uIFNsaWNlZCBUZWxldGV4dCBvciBDbG9zZWQgQ2FwdGlvbiBkYXRhIGlzIG5vdAorcmVwZWF0ZWQsIHRoZSBkcml2ZXIgaW5zZXJ0cyBhIGJsYW5rIGxpbmUgaW5zdGVhZC48L3BhcmE+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5SZXR1cm4gVmFsdWU8L3RpdGxlPgorCisgICAgPHBhcmE+T24gc3VjY2VzcywgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIGFyZSByZXR1cm5lZC4gWmVybworaW5kaWNhdGVzIG5vdGhpbmcgd2FzIHdyaXR0ZW4uIE9uIGVycm9yLCA8cmV0dXJudmFsdWU+LTE8L3JldHVybnZhbHVlPgoraXMgcmV0dXJuZWQsIGFuZCB0aGUgPHZhcm5hbWU+ZXJybm88L3Zhcm5hbWU+IHZhcmlhYmxlIGlzIHNldAorYXBwcm9wcmlhdGVseS4gSW4gdGhpcyBjYXNlIHRoZSBuZXh0IHdyaXRlIHdpbGwgc3RhcnQgYXQgdGhlIGJlZ2lubmluZworb2YgYSBuZXcgZnJhbWUuIFBvc3NpYmxlIGVycm9yIGNvZGVzIGFyZTo8L3BhcmE+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVBR0FJTjwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5Ob24tYmxvY2tpbmcgSS9PIGhhcyBiZWVuIHNlbGVjdGVkIHVzaW5nIHRoZSA8bGluaworbGlua2VuZD0iZnVuYy1vcGVuIj48Y29uc3RhbnQ+T19OT05CTE9DSzwvY29uc3RhbnQ+PC9saW5rPiBmbGFnIGFuZCBubworYnVmZmVyIHNwYWNlIHdhcyBhdmFpbGFibGUgdG8gd3JpdGUgdGhlIGRhdGEgaW1tZWRpYXRlbHkuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FQkFERjwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+IGlzIG5vdCBhIHZhbGlkIGZpbGUKK2Rlc2NyaXB0b3Igb3IgaXMgbm90IG9wZW4gZm9yIHdyaXRpbmcuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FQlVTWTwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgd3JpdGUgc3RyZWFtcyBhbmQgdGhlCitkZXZpY2UgaXMgYWxyZWFkeSBpbiB1c2UuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FRkFVTFQ8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PHBhcmFtZXRlcj5idWY8L3BhcmFtZXRlcj4gcmVmZXJlbmNlcyBhbiBpbmFjY2Vzc2libGUKK21lbW9yeSBhcmVhLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUlOVFI8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIGNhbGwgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIGJlZm9yZSBhbnkKK2RhdGEgd2FzIHdyaXR0ZW4uPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FSU88L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+SS9PIGVycm9yLiBUaGlzIGluZGljYXRlcyBzb21lIGhhcmR3YXJlIHByb2JsZW0uPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FSU5WQUw8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIDxmdW5jdGlvbj53cml0ZSgpPC9mdW5jdGlvbj4gZnVuY3Rpb24gaXMgbm90CitzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIsIG5vdCBvbiB0aGlzIGRldmljZSwgb3IgZ2VuZXJhbGx5IG5vdCBvbiB0aGlzCit0eXBlIG9mIGRldmljZS48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvZ2VuLWVycm9ycy54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2dlbi1lcnJvcnMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMjlhNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2dlbi1lcnJvcnMueG1sCkBAIC0wLDAgKzEsNzcgQEAKKzx0aXRsZT5HZW5lcmljIEVycm9yIENvZGVzPC90aXRsZT4KKworPHRhYmxlIGZyYW1lPSJub25lIiBwZ3dpZGU9IjEiIGlkPSJnZW4tZXJyb3JzIj4KKyAgPHRpdGxlPkdlbmVyaWMgZXJyb3IgY29kZXM8L3RpdGxlPgorICA8dGdyb3VwIGNvbHM9IjIiPgorICAgICZjcy1zdHI7CisgICAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwk8IS0tIEtlZXAgaXQgb3JkZXJlZCBhbHBoYWJldGljYWxseSAtLT4KKyAgICAgIDxyb3c+CisJPGVudHJ5PkVBR0FJTiAoYWthIEVXT1VMREJMT0NLKTwvZW50cnk+CisJPGVudHJ5PlRoZSBpb2N0bCBjYW4ndCBiZSBoYW5kbGVkIGJlY2F1c2UgdGhlIGRldmljZSBpcyBpbiBzdGF0ZSB3aGVyZQorCSAgICAgICBpdCBjYW4ndCBwZXJmb3JtIGl0LiBUaGlzIGNvdWxkIGhhcHBlbiBmb3IgZXhhbXBsZSBpbiBjYXNlIHdoZXJlCisJICAgICAgIGRldmljZSBpcyBzbGVlcGluZyBhbmQgaW9jdGwgaXMgcGVyZm9ybWVkIHRvIHF1ZXJ5IHN0YXRpc3RpY3MuCisJICAgICAgIEl0IGlzIGFsc28gcmV0dXJuZWQgd2hlbiB0aGUgaW9jdGwgd291bGQgbmVlZCB0byB3YWl0CisJICAgICAgIGZvciBhbiBldmVudCwgYnV0IHRoZSBkZXZpY2Ugd2FzIG9wZW5lZCBpbiBub24tYmxvY2tpbmcgbW9kZS4KKwk8L2VudHJ5PgorICAgICAgPC9yb3c+CisgICAgICA8cm93PgorCTxlbnRyeT5FQkFERjwvZW50cnk+CisJPGVudHJ5PlRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgbm90IGEgdmFsaWQuPC9lbnRyeT4KKyAgICAgIDwvcm93PgorICAgICAgPHJvdz4KKwk8ZW50cnk+RUJVU1k8L2VudHJ5PgorCTxlbnRyeT5UaGUgaW9jdGwgY2FuJ3QgYmUgaGFuZGxlZCBiZWNhdXNlIHRoZSBkZXZpY2UgaXMgYnVzeS4gVGhpcyBpcworCSAgICAgICB0eXBpY2FsbHkgcmV0dXJuIHdoaWxlIGRldmljZSBpcyBzdHJlYW1pbmcsIGFuZCBhbiBpb2N0bCB0cmllZCB0bworCSAgICAgICBjaGFuZ2Ugc29tZXRoaW5nIHRoYXQgd291bGQgYWZmZWN0IHRoZSBzdHJlYW0sIG9yIHdvdWxkIHJlcXVpcmUgdGhlCisJICAgICAgIHVzYWdlIG9mIGEgaGFyZHdhcmUgcmVzb3VyY2UgdGhhdCB3YXMgYWxyZWFkeSBhbGxvY2F0ZWQuIFRoZSBpb2N0bAorCSAgICAgICBtdXN0IG5vdCBiZSByZXRyaWVkIHdpdGhvdXQgcGVyZm9ybWluZyBhbm90aGVyIGFjdGlvbiB0byBmaXggdGhlCisJICAgICAgIHByb2JsZW0gZmlyc3QgKHR5cGljYWxseTogc3RvcCB0aGUgc3RyZWFtIGJlZm9yZSByZXRyeWluZykuPC9lbnRyeT4KKyAgICAgIDwvcm93PgorICAgICAgPHJvdz4KKwk8ZW50cnk+RUZBVUxUPC9lbnRyeT4KKwk8ZW50cnk+VGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBjb3B5aW5nIGRhdGEgZnJvbS90byB1c2Vyc3BhY2UsCisJICAgICAgIHByb2JhYmx5IGNhdXNlZCBieSBhbiBpbnZhbGlkIHBvaW50ZXIgcmVmZXJlbmNlLjwvZW50cnk+CisgICAgICA8L3Jvdz4KKyAgICAgIDxyb3c+CisJPGVudHJ5PkVJTlZBTDwvZW50cnk+CisJPGVudHJ5Pk9uZSBvciBtb3JlIG9mIHRoZSBpb2N0bCBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkIG9yIG91dCBvZiB0aGUKKwkgICAgICAgYWxsb3dlZCByYW5nZS4gVGhpcyBpcyBhIHdpZGVseSB1c2VkIGVycm9yIGNvZGUuIFNlZSB0aGUgaW5kaXZpZHVhbAorCSAgICAgICBpb2N0bCByZXF1ZXN0cyBmb3Igc3BlY2lmaWMgY2F1c2VzLjwvZW50cnk+CisgICAgICA8L3Jvdz4KKyAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeT5FTk9ERVY8L2VudHJ5PgorCTxlbnRyeT5EZXZpY2Ugbm90IGZvdW5kIG9yIHdhcyByZW1vdmVkLjwvZW50cnk+CisgICAgICA8L3Jvdz4KKyAgICAgIDxyb3c+CisJPGVudHJ5PkVOT01FTTwvZW50cnk+CisJPGVudHJ5PlRoZXJlJ3Mgbm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIHRoZSBkZXNpcmVkIG9wZXJhdGlvbi48L2VudHJ5PgorICAgICAgPC9yb3c+CisgICAgICA8cm93PgorCTxlbnRyeT5FTk9UVFk8L2VudHJ5PgorCTxlbnRyeT5UaGUgaW9jdGwgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgZHJpdmVyLCBhY3R1YWxseSBtZWFuaW5nIHRoYXQKKwkgICAgICAgdGhlIHJlcXVpcmVkIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGF2YWlsYWJsZSwgb3IgdGhlIGZpbGUKKwkgICAgICAgZGVzY3JpcHRvciBpcyBub3QgZm9yIGEgbWVkaWEgZGV2aWNlLjwvZW50cnk+CisgICAgICA8L3Jvdz4KKyAgICAgIDxyb3c+CisJPGVudHJ5PkVOT1NQQzwvZW50cnk+CisJPGVudHJ5Pk9uIFVTQiBkZXZpY2VzLCB0aGUgc3RyZWFtIGlvY3RsJ3MgY2FuIHJldHVybiB0aGlzIGVycm9yLCBtZWFuaW5nCisJICAgICAgIHRoYXQgdGhpcyByZXF1ZXN0IHdvdWxkIG92ZXJjb21taXQgdGhlIHVzYiBiYW5kd2lkdGggcmVzZXJ2ZWQKKwkgICAgICAgZm9yIHBlcmlvZGljIHRyYW5zZmVycyAodXAgdG8gODAlIG9mIHRoZSBVU0IgYmFuZHdpZHRoKS48L2VudHJ5PgorICAgICAgPC9yb3c+CisgICAgICA8cm93PgorCTxlbnRyeT5FUEVSTTwvZW50cnk+CisJPGVudHJ5PlBlcm1pc3Npb24gZGVuaWVkLiBDYW4gYmUgcmV0dXJuZWQgaWYgdGhlIGRldmljZSBuZWVkcyB3cml0ZQorCQlwZXJtaXNzaW9uLCBvciBzb21lIHNwZWNpYWwgY2FwYWJpbGl0aWVzIGlzIG5lZWRlZAorCQkoZS4gZy4gcm9vdCk8L2VudHJ5PgorICAgICAgPC9yb3c+CisgICAgPC90Ym9keT4KKyAgPC90Z3JvdXA+Cis8L3RhYmxlPgorCis8cGFyYT5Ob3RlIDE6IGlvY3RscyBtYXkgcmV0dXJuIG90aGVyIGVycm9yIGNvZGVzLiBTaW5jZSBlcnJvcnMgbWF5IGhhdmUgc2lkZQorZWZmZWN0cyBzdWNoIGFzIGEgZHJpdmVyIHJlc2V0LCBhcHBsaWNhdGlvbnMgc2hvdWxkIGFib3J0IG9uIHVuZXhwZWN0ZWQgZXJyb3JzLgorPC9wYXJhPgorCis8cGFyYT5Ob3RlIDI6IFJlcXVlc3Qtc3BlY2lmaWMgZXJyb3IgY29kZXMgYXJlIGxpc3RlZCBpbiB0aGUgaW5kaXZpZHVhbAorcmVxdWVzdHMgZGVzY3JpcHRpb25zLjwvcGFyYT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvaW8ueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9pby54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE2NTQwMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvaW8ueG1sCkBAIC0wLDAgKzEsMTU1MSBAQAorICA8dGl0bGU+SW5wdXQvT3V0cHV0PC90aXRsZT4KKworICA8cGFyYT5UaGUgVjRMMiBBUEkgZGVmaW5lcyBzZXZlcmFsIGRpZmZlcmVudCBtZXRob2RzIHRvIHJlYWQgZnJvbSBvcgord3JpdGUgdG8gYSBkZXZpY2UuIEFsbCBkcml2ZXJzIGV4Y2hhbmdpbmcgZGF0YSB3aXRoIGFwcGxpY2F0aW9ucyBtdXN0CitzdXBwb3J0IGF0IGxlYXN0IG9uZSBvZiB0aGVtLjwvcGFyYT4KKworICA8cGFyYT5UaGUgY2xhc3NpYyBJL08gbWV0aG9kIHVzaW5nIHRoZSA8ZnVuY3Rpb24+cmVhZCgpPC9mdW5jdGlvbj4KK2FuZCA8ZnVuY3Rpb24+d3JpdGUoKTwvZnVuY3Rpb24+IGZ1bmN0aW9uIGlzIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQKK2FmdGVyIG9wZW5pbmcgYSBWNEwyIGRldmljZS4gV2hlbiB0aGUgZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQgdGhpcworbWV0aG9kIGF0dGVtcHRzIHRvIHJlYWQgb3Igd3JpdGUgd2lsbCBmYWlsIGF0IGFueSB0aW1lLjwvcGFyYT4KKworICA8cGFyYT5PdGhlciBtZXRob2RzIG11c3QgYmUgbmVnb3RpYXRlZC4gVG8gc2VsZWN0IHRoZSBzdHJlYW1pbmcgSS9PCittZXRob2Qgd2l0aCBtZW1vcnkgbWFwcGVkIG9yIHVzZXIgYnVmZmVycyBhcHBsaWNhdGlvbnMgY2FsbCB0aGUKKyZWSURJT0MtUkVRQlVGUzsgaW9jdGwuIFRoZSBhc3luY2hyb25vdXMgSS9PIG1ldGhvZCBpcyBub3QgZGVmaW5lZAoreWV0LjwvcGFyYT4KKworICA8cGFyYT5WaWRlbyBvdmVybGF5IGNhbiBiZSBjb25zaWRlcmVkIGFub3RoZXIgSS9PIG1ldGhvZCwgYWx0aG91Z2gKK3RoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBkaXJlY3RseSByZWNlaXZlIHRoZSBpbWFnZSBkYXRhLiBJdCBpcworc2VsZWN0ZWQgYnkgaW5pdGlhdGluZyB2aWRlbyBvdmVybGF5IHdpdGggdGhlICZWSURJT0MtUy1GTVQ7IGlvY3RsLgorRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIDx4cmVmIGxpbmtlbmQ9Im92ZXJsYXkiIC8+LjwvcGFyYT4KKworICA8cGFyYT5HZW5lcmFsbHkgZXhhY3RseSBvbmUgSS9PIG1ldGhvZCwgaW5jbHVkaW5nIG92ZXJsYXksIGlzCithc3NvY2lhdGVkIHdpdGggZWFjaCBmaWxlIGRlc2NyaXB0b3IuIFRoZSBvbmx5IGV4Y2VwdGlvbnMgYXJlCithcHBsaWNhdGlvbnMgbm90IGV4Y2hhbmdpbmcgZGF0YSB3aXRoIGEgZHJpdmVyICgicGFuZWwgYXBwbGljYXRpb25zIiwKK3NlZSA8eHJlZiBsaW5rZW5kPSJvcGVuIiAvPikgYW5kIGRyaXZlcnMgcGVybWl0dGluZyBzaW11bHRhbmVvdXMgdmlkZW8gY2FwdHVyaW5nCithbmQgb3ZlcmxheSB1c2luZyB0aGUgc2FtZSBmaWxlIGRlc2NyaXB0b3IsIGZvciBjb21wYXRpYmlsaXR5IHdpdGggVjRMCithbmQgZWFybGllciB2ZXJzaW9ucyBvZiBWNEwyLjwvcGFyYT4KKworICA8cGFyYT48Y29uc3RhbnQ+VklESU9DX1NfRk1UPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VklESU9DX1JFUUJVRlM8L2NvbnN0YW50PiB3b3VsZCBwZXJtaXQgdGhpcyB0byBzb21lIGRlZ3JlZSwKK2J1dCBmb3Igc2ltcGxpY2l0eSBkcml2ZXJzIG5lZWQgbm90IHN1cHBvcnQgc3dpdGNoaW5nIHRoZSBJL08gbWV0aG9kCisoYWZ0ZXIgZmlyc3Qgc3dpdGNoaW5nIGF3YXkgZnJvbSByZWFkL3dyaXRlKSBvdGhlciB0aGFuIGJ5IGNsb3NpbmcKK2FuZCByZW9wZW5pbmcgdGhlIGRldmljZS48L3BhcmE+CisKKyAgPHBhcmE+VGhlIGZvbGxvd2luZyBzZWN0aW9ucyBkZXNjcmliZSB0aGUgdmFyaW91cyBJL08gbWV0aG9kcyBpbgorbW9yZSBkZXRhaWwuPC9wYXJhPgorCisgIDxzZWN0aW9uIGlkPSJydyI+CisgICAgPHRpdGxlPlJlYWQvV3JpdGU8L3RpdGxlPgorCisgICAgPHBhcmE+SW5wdXQgYW5kIG91dHB1dCBkZXZpY2VzIHN1cHBvcnQgdGhlCis8ZnVuY3Rpb24+cmVhZCgpPC9mdW5jdGlvbj4gYW5kIDxmdW5jdGlvbj53cml0ZSgpPC9mdW5jdGlvbj4gZnVuY3Rpb24sCityZXNwZWN0aXZlbHksIHdoZW4gdGhlIDxjb25zdGFudD5WNEwyX0NBUF9SRUFEV1JJVEU8L2NvbnN0YW50PiBmbGFnIGluCit0aGUgPHN0cnVjdGZpZWxkPmNhcGFiaWxpdGllczwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mICZ2NGwyLWNhcGFiaWxpdHk7CityZXR1cm5lZCBieSB0aGUgJlZJRElPQy1RVUVSWUNBUDsgaW9jdGwgaXMgc2V0LjwvcGFyYT4KKworICAgIDxwYXJhPkRyaXZlcnMgbWF5IG5lZWQgdGhlIENQVSB0byBjb3B5IHRoZSBkYXRhLCBidXQgdGhleSBtYXkgYWxzbworc3VwcG9ydCBETUEgdG8gb3IgZnJvbSB1c2VyIG1lbW9yeSwgc28gdGhpcyBJL08gbWV0aG9kIGlzIG5vdAorbmVjZXNzYXJpbHkgbGVzcyBlZmZpY2llbnQgdGhhbiBvdGhlciBtZXRob2RzIG1lcmVseSBleGNoYW5naW5nIGJ1ZmZlcgorcG9pbnRlcnMuIEl0IGlzIGNvbnNpZGVyZWQgaW5mZXJpb3IgdGhvdWdoIGJlY2F1c2Ugbm8gbWV0YS1pbmZvcm1hdGlvbgorbGlrZSBmcmFtZSBjb3VudGVycyBvciB0aW1lc3RhbXBzIGFyZSBwYXNzZWQuIFRoaXMgaW5mb3JtYXRpb24gaXMKK25lY2Vzc2FyeSB0byByZWNvZ25pemUgZnJhbWUgZHJvcHBpbmcgYW5kIHRvIHN5bmNocm9uaXplIHdpdGggb3RoZXIKK2RhdGEgc3RyZWFtcy4gSG93ZXZlciB0aGlzIGlzIGFsc28gdGhlIHNpbXBsZXN0IEkvTyBtZXRob2QsIHJlcXVpcmluZworbGl0dGxlIG9yIG5vIHNldHVwIHRvIGV4Y2hhbmdlIGRhdGEuIEl0IHBlcm1pdHMgY29tbWFuZCBsaW5lIHN0dW50cworbGlrZSB0aGlzICh0aGUgPGFwcGxpY2F0aW9uPnZpZGN0cmw8L2FwcGxpY2F0aW9uPiB0b29sIGlzCitmaWN0aXRpb3VzKTo8L3BhcmE+CisKKyAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgPHNjcmVlbj4KKyZndDsgdmlkY3RybCAvZGV2L3ZpZGVvIC0taW5wdXQ9MCAtLWZvcm1hdD1ZVVlWIC0tc2l6ZT0zNTJ4Mjg4CismZ3Q7IGRkIGlmPS9kZXYvdmlkZW8gb2Y9bXlpbWFnZS40MjIgYnM9MjAyNzUyIGNvdW50PTEKKzwvc2NyZWVuPgorICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCisgICAgPHBhcmE+VG8gcmVhZCBmcm9tIHRoZSBkZXZpY2UgYXBwbGljYXRpb25zIHVzZSB0aGUKKyZmdW5jLXJlYWQ7IGZ1bmN0aW9uLCB0byB3cml0ZSB0aGUgJmZ1bmMtd3JpdGU7IGZ1bmN0aW9uLgorRHJpdmVycyBtdXN0IGltcGxlbWVudCBvbmUgSS9PIG1ldGhvZCBpZiB0aGV5CitleGNoYW5nZSBkYXRhIHdpdGggYXBwbGljYXRpb25zLCBidXQgaXQgbmVlZCBub3QgYmUgdGhpcy48Zm9vdG5vdGU+CisJPHBhcmE+SXQgd291bGQgYmUgZGVzaXJhYmxlIGlmIGFwcGxpY2F0aW9ucyBjb3VsZCBkZXBlbmQgb24KK2RyaXZlcnMgc3VwcG9ydGluZyBhbGwgSS9PIGludGVyZmFjZXMsIGJ1dCBhcyBtdWNoIGFzIHRoZSBjb21wbGV4CittZW1vcnkgbWFwcGluZyBJL08gY2FuIGJlIGluYWRlcXVhdGUgZm9yIHNvbWUgZGV2aWNlcyB3ZSBoYXZlIG5vCityZWFzb24gdG8gcmVxdWlyZSB0aGlzIGludGVyZmFjZSwgd2hpY2ggaXMgbW9zdCB1c2VmdWwgZm9yIHNpbXBsZQorYXBwbGljYXRpb25zIGNhcHR1cmluZyBzdGlsbCBpbWFnZXMuPC9wYXJhPgorICAgICAgPC9mb290bm90ZT4gV2hlbiByZWFkaW5nIG9yIHdyaXRpbmcgaXMgc3VwcG9ydGVkLCB0aGUgZHJpdmVyCittdXN0IGFsc28gc3VwcG9ydCB0aGUgJmZ1bmMtc2VsZWN0OyBhbmQgJmZ1bmMtcG9sbDsKK2Z1bmN0aW9uLjxmb290bm90ZT4KKwk8cGFyYT5BdCB0aGUgZHJpdmVyIGxldmVsIDxmdW5jdGlvbj5zZWxlY3QoKTwvZnVuY3Rpb24+IGFuZAorPGZ1bmN0aW9uPnBvbGwoKTwvZnVuY3Rpb24+IGFyZSB0aGUgc2FtZSwgYW5kCis8ZnVuY3Rpb24+c2VsZWN0KCk8L2Z1bmN0aW9uPiBpcyB0b28gaW1wb3J0YW50IHRvIGJlIG9wdGlvbmFsLjwvcGFyYT4KKyAgICAgIDwvZm9vdG5vdGU+PC9wYXJhPgorICA8L3NlY3Rpb24+CisKKyAgPHNlY3Rpb24gaWQ9Im1tYXAiPgorICAgIDx0aXRsZT5TdHJlYW1pbmcgSS9PIChNZW1vcnkgTWFwcGluZyk8L3RpdGxlPgorCisgICAgPHBhcmE+SW5wdXQgYW5kIG91dHB1dCBkZXZpY2VzIHN1cHBvcnQgdGhpcyBJL08gbWV0aG9kIHdoZW4gdGhlCis8Y29uc3RhbnQ+VjRMMl9DQVBfU1RSRUFNSU5HPC9jb25zdGFudD4gZmxhZyBpbiB0aGUKKzxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXRpZXM8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiAmdjRsMi1jYXBhYmlsaXR5OworcmV0dXJuZWQgYnkgdGhlICZWSURJT0MtUVVFUllDQVA7IGlvY3RsIGlzIHNldC4gVGhlcmUgYXJlIHR3bworc3RyZWFtaW5nIG1ldGhvZHMsIHRvIGRldGVybWluZSBpZiB0aGUgbWVtb3J5IG1hcHBpbmcgZmxhdm9yIGlzCitzdXBwb3J0ZWQgYXBwbGljYXRpb25zIG11c3QgY2FsbCB0aGUgJlZJRElPQy1SRVFCVUZTOyBpb2N0bC48L3BhcmE+CisKKyAgICA8cGFyYT5TdHJlYW1pbmcgaXMgYW4gSS9PIG1ldGhvZCB3aGVyZSBvbmx5IHBvaW50ZXJzIHRvIGJ1ZmZlcnMKK2FyZSBleGNoYW5nZWQgYmV0d2VlbiBhcHBsaWNhdGlvbiBhbmQgZHJpdmVyLCB0aGUgZGF0YSBpdHNlbGYgaXMgbm90Citjb3BpZWQuIE1lbW9yeSBtYXBwaW5nIGlzIHByaW1hcmlseSBpbnRlbmRlZCB0byBtYXAgYnVmZmVycyBpbiBkZXZpY2UKK21lbW9yeSBpbnRvIHRoZSBhcHBsaWNhdGlvbidzIGFkZHJlc3Mgc3BhY2UuIERldmljZSBtZW1vcnkgY2FuIGJlIGZvcgorZXhhbXBsZSB0aGUgdmlkZW8gbWVtb3J5IG9uIGEgZ3JhcGhpY3MgY2FyZCB3aXRoIGEgdmlkZW8gY2FwdHVyZQorYWRkLW9uLiBIb3dldmVyLCBiZWluZyB0aGUgbW9zdCBlZmZpY2llbnQgSS9PIG1ldGhvZCBhdmFpbGFibGUgZm9yIGEKK2xvbmcgdGltZSwgbWFueSBvdGhlciBkcml2ZXJzIHN1cHBvcnQgc3RyZWFtaW5nIGFzIHdlbGwsIGFsbG9jYXRpbmcKK2J1ZmZlcnMgaW4gRE1BLWFibGUgbWFpbiBtZW1vcnkuPC9wYXJhPgorCisgICAgPHBhcmE+QSBkcml2ZXIgY2FuIHN1cHBvcnQgbWFueSBzZXRzIG9mIGJ1ZmZlcnMuIEVhY2ggc2V0IGlzCitpZGVudGlmaWVkIGJ5IGEgdW5pcXVlIGJ1ZmZlciB0eXBlIHZhbHVlLiBUaGUgc2V0cyBhcmUgaW5kZXBlbmRlbnQgYW5kCitlYWNoIHNldCBjYW4gaG9sZCBhIGRpZmZlcmVudCB0eXBlIG9mIGRhdGEuIFRvIGFjY2VzcyBkaWZmZXJlbnQgc2V0cworYXQgdGhlIHNhbWUgdGltZSBkaWZmZXJlbnQgZmlsZSBkZXNjcmlwdG9ycyBtdXN0IGJlIHVzZWQuPGZvb3Rub3RlPgorCTxwYXJhPk9uZSBjb3VsZCB1c2Ugb25lIGZpbGUgZGVzY3JpcHRvciBhbmQgc2V0IHRoZSBidWZmZXIKK3R5cGUgZmllbGQgYWNjb3JkaW5nbHkgd2hlbiBjYWxsaW5nICZWSURJT0MtUUJVRjsgZXRjLiwgYnV0IGl0IG1ha2VzCit0aGUgPGZ1bmN0aW9uPnNlbGVjdCgpPC9mdW5jdGlvbj4gZnVuY3Rpb24gYW1iaWd1b3VzLiBXZSBhbHNvIGxpa2UgdGhlCitjbGVhbiBhcHByb2FjaCBvZiBvbmUgZmlsZSBkZXNjcmlwdG9yIHBlciBsb2dpY2FsIHN0cmVhbS4gVmlkZW8KK292ZXJsYXkgZm9yIGV4YW1wbGUgaXMgYWxzbyBhIGxvZ2ljYWwgc3RyZWFtLCBhbHRob3VnaCB0aGUgQ1BVIGlzIG5vdAorbmVlZGVkIGZvciBjb250aW51b3VzIG9wZXJhdGlvbi48L3BhcmE+CisgICAgICA8L2Zvb3Rub3RlPjwvcGFyYT4KKworICAgIDxwYXJhPlRvIGFsbG9jYXRlIGRldmljZSBidWZmZXJzIGFwcGxpY2F0aW9ucyBjYWxsIHRoZQorJlZJRElPQy1SRVFCVUZTOyBpb2N0bCB3aXRoIHRoZSBkZXNpcmVkIG51bWJlciBvZiBidWZmZXJzIGFuZCBidWZmZXIKK3R5cGUsIGZvciBleGFtcGxlIDxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkU8L2NvbnN0YW50Pi4KK1RoaXMgaW9jdGwgY2FuIGFsc28gYmUgdXNlZCB0byBjaGFuZ2UgdGhlIG51bWJlciBvZiBidWZmZXJzIG9yIHRvIGZyZWUKK3RoZSBhbGxvY2F0ZWQgbWVtb3J5LCBwcm92aWRlZCBub25lIG9mIHRoZSBidWZmZXJzIGFyZSBzdGlsbAorbWFwcGVkLjwvcGFyYT4KKworICAgIDxwYXJhPkJlZm9yZSBhcHBsaWNhdGlvbnMgY2FuIGFjY2VzcyB0aGUgYnVmZmVycyB0aGV5IG11c3QgbWFwCit0aGVtIGludG8gdGhlaXIgYWRkcmVzcyBzcGFjZSB3aXRoIHRoZSAmZnVuYy1tbWFwOyBmdW5jdGlvbi4gVGhlCitsb2NhdGlvbiBvZiB0aGUgYnVmZmVycyBpbiBkZXZpY2UgbWVtb3J5IGNhbiBiZSBkZXRlcm1pbmVkIHdpdGggdGhlCismVklESU9DLVFVRVJZQlVGOyBpb2N0bC4gSW4gdGhlIHNpbmdsZS1wbGFuYXIgQVBJIGNhc2UsIHRoZQorPHN0cnVjdGZpZWxkPm0ub2Zmc2V0PC9zdHJ1Y3RmaWVsZD4gYW5kIDxzdHJ1Y3RmaWVsZD5sZW5ndGg8L3N0cnVjdGZpZWxkPgorcmV0dXJuZWQgaW4gYSAmdjRsMi1idWZmZXI7IGFyZSBwYXNzZWQgYXMgc2l4dGggYW5kIHNlY29uZCBwYXJhbWV0ZXIgdG8gdGhlCis8ZnVuY3Rpb24+bW1hcCgpPC9mdW5jdGlvbj4gZnVuY3Rpb24uIFdoZW4gdXNpbmcgdGhlIG11bHRpLXBsYW5hciBBUEksCismdjRsMi1idWZmZXI7IGNvbnRhaW5zIGFuIGFycmF5IG9mICZ2NGwyLXBsYW5lOyBzdHJ1Y3R1cmVzLCBlYWNoCitjb250YWluaW5nIGl0cyBvd24gPHN0cnVjdGZpZWxkPm0ub2Zmc2V0PC9zdHJ1Y3RmaWVsZD4gYW5kCis8c3RydWN0ZmllbGQ+bGVuZ3RoPC9zdHJ1Y3RmaWVsZD4uIFdoZW4gdXNpbmcgdGhlIG11bHRpLXBsYW5hciBBUEksIGV2ZXJ5CitwbGFuZSBvZiBldmVyeSBidWZmZXIgaGFzIHRvIGJlIG1hcHBlZCBzZXBhcmF0ZWx5LCBzbyB0aGUgbnVtYmVyIG9mCitjYWxscyB0byAmZnVuYy1tbWFwOyBzaG91bGQgYmUgZXF1YWwgdG8gbnVtYmVyIG9mIGJ1ZmZlcnMgdGltZXMgbnVtYmVyIG9mCitwbGFuZXMgaW4gZWFjaCBidWZmZXIuIFRoZSBvZmZzZXQgYW5kIGxlbmd0aCB2YWx1ZXMgbXVzdCBub3QgYmUgbW9kaWZpZWQuCitSZW1lbWJlciwgdGhlIGJ1ZmZlcnMgYXJlIGFsbG9jYXRlZCBpbiBwaHlzaWNhbCBtZW1vcnksIGFzIG9wcG9zZWQgdG8gdmlydHVhbAorbWVtb3J5LCB3aGljaCBjYW4gYmUgc3dhcHBlZCBvdXQgdG8gZGlzay4gQXBwbGljYXRpb25zIHNob3VsZCBmcmVlIHRoZSBidWZmZXJzCithcyBzb29uIGFzIHBvc3NpYmxlIHdpdGggdGhlICZmdW5jLW11bm1hcDsgZnVuY3Rpb24uPC9wYXJhPgorCisgICAgPGV4YW1wbGU+CisgICAgICA8dGl0bGU+TWFwcGluZyBidWZmZXJzIGluIHRoZSBzaW5nbGUtcGxhbmFyIEFQSTwvdGl0bGU+CisgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CismdjRsMi1yZXF1ZXN0YnVmZmVyczsgcmVxYnVmOworc3RydWN0IHsKKwl2b2lkICpzdGFydDsKKwlzaXplX3QgbGVuZ3RoOworfSAqYnVmZmVyczsKK3Vuc2lnbmVkIGludCBpOworCittZW1zZXQoJmFtcDtyZXFidWYsIDAsIHNpemVvZihyZXFidWYpKTsKK3JlcWJ1Zi50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFOworcmVxYnVmLm1lbW9yeSA9IFY0TDJfTUVNT1JZX01NQVA7CityZXFidWYuY291bnQgPSAyMDsKKworaWYgKC0xID09IGlvY3RsIChmZCwgJlZJRElPQy1SRVFCVUZTOywgJmFtcDtyZXFidWYpKSB7CisJaWYgKGVycm5vID09IEVJTlZBTCkKKwkJcHJpbnRmKCJWaWRlbyBjYXB0dXJpbmcgb3IgbW1hcC1zdHJlYW1pbmcgaXMgbm90IHN1cHBvcnRlZFxuIik7CisJZWxzZQorCQlwZXJyb3IoIlZJRElPQ19SRVFCVUZTIik7CisKKwlleGl0KEVYSVRfRkFJTFVSRSk7Cit9CisKKy8qIFdlIHdhbnQgYXQgbGVhc3QgZml2ZSBidWZmZXJzLiAqLworCitpZiAocmVxYnVmLmNvdW50ICZsdDsgNSkgeworCS8qIFlvdSBtYXkgbmVlZCB0byBmcmVlIHRoZSBidWZmZXJzIGhlcmUuICovCisJcHJpbnRmKCJOb3QgZW5vdWdoIGJ1ZmZlciBtZW1vcnlcbiIpOworCWV4aXQoRVhJVF9GQUlMVVJFKTsKK30KKworYnVmZmVycyA9IGNhbGxvYyhyZXFidWYuY291bnQsIHNpemVvZigqYnVmZmVycykpOworYXNzZXJ0KGJ1ZmZlcnMgIT0gTlVMTCk7CisKK2ZvciAoaSA9IDA7IGkgJmx0OyByZXFidWYuY291bnQ7IGkrKykgeworCSZ2NGwyLWJ1ZmZlcjsgYnVmZmVyOworCisJbWVtc2V0KCZhbXA7YnVmZmVyLCAwLCBzaXplb2YoYnVmZmVyKSk7CisJYnVmZmVyLnR5cGUgPSByZXFidWYudHlwZTsKKwlidWZmZXIubWVtb3J5ID0gVjRMMl9NRU1PUllfTU1BUDsKKwlidWZmZXIuaW5kZXggPSBpOworCisJaWYgKC0xID09IGlvY3RsIChmZCwgJlZJRElPQy1RVUVSWUJVRjssICZhbXA7YnVmZmVyKSkgeworCQlwZXJyb3IoIlZJRElPQ19RVUVSWUJVRiIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorCisJYnVmZmVyc1tpXS5sZW5ndGggPSBidWZmZXIubGVuZ3RoOyAvKiByZW1lbWJlciBmb3IgbXVubWFwKCkgKi8KKworCWJ1ZmZlcnNbaV0uc3RhcnQgPSBtbWFwKE5VTEwsIGJ1ZmZlci5sZW5ndGgsCisJCQkJUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgLyogcmVjb21tZW5kZWQgKi8KKwkJCQlNQVBfU0hBUkVELCAgICAgICAgICAgICAvKiByZWNvbW1lbmRlZCAqLworCQkJCWZkLCBidWZmZXIubS5vZmZzZXQpOworCisJaWYgKE1BUF9GQUlMRUQgPT0gYnVmZmVyc1tpXS5zdGFydCkgeworCQkvKiBJZiB5b3UgZG8gbm90IGV4aXQgaGVyZSB5b3Ugc2hvdWxkIHVubWFwKCkgYW5kIGZyZWUoKQorCQkgICB0aGUgYnVmZmVycyBtYXBwZWQgc28gZmFyLiAqLworCQlwZXJyb3IoIm1tYXAiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KK30KKworLyogQ2xlYW51cC4gKi8KKworZm9yIChpID0gMDsgaSAmbHQ7IHJlcWJ1Zi5jb3VudDsgaSsrKQorCW11bm1hcChidWZmZXJzW2ldLnN0YXJ0LCBidWZmZXJzW2ldLmxlbmd0aCk7CisgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgIDwvZXhhbXBsZT4KKworICAgIDxleGFtcGxlPgorICAgICAgPHRpdGxlPk1hcHBpbmcgYnVmZmVycyBpbiB0aGUgbXVsdGktcGxhbmFyIEFQSTwvdGl0bGU+CisgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CismdjRsMi1yZXF1ZXN0YnVmZmVyczsgcmVxYnVmOworLyogT3VyIGN1cnJlbnQgZm9ybWF0IHVzZXMgMyBwbGFuZXMgcGVyIGJ1ZmZlciAqLworI2RlZmluZSBGTVRfTlVNX1BMQU5FUyA9IDMKKworc3RydWN0IHsKKwl2b2lkICpzdGFydFtGTVRfTlVNX1BMQU5FU107CisJc2l6ZV90IGxlbmd0aFtGTVRfTlVNX1BMQU5FU107Cit9ICpidWZmZXJzOwordW5zaWduZWQgaW50IGksIGo7CisKK21lbXNldCgmYW1wO3JlcWJ1ZiwgMCwgc2l6ZW9mKHJlcWJ1ZikpOworcmVxYnVmLnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkVfTVBMQU5FOworcmVxYnVmLm1lbW9yeSA9IFY0TDJfTUVNT1JZX01NQVA7CityZXFidWYuY291bnQgPSAyMDsKKworaWYgKGlvY3RsKGZkLCAmVklESU9DLVJFUUJVRlM7LCAmYW1wO3JlcWJ1ZikgJmx0OyAwKSB7CisJaWYgKGVycm5vID09IEVJTlZBTCkKKwkJcHJpbnRmKCJWaWRlbyBjYXB0dXJpbmcgb3IgbW1hcC1zdHJlYW1pbmcgaXMgbm90IHN1cHBvcnRlZFxuIik7CisJZWxzZQorCQlwZXJyb3IoIlZJRElPQ19SRVFCVUZTIik7CisKKwlleGl0KEVYSVRfRkFJTFVSRSk7Cit9CisKKy8qIFdlIHdhbnQgYXQgbGVhc3QgZml2ZSBidWZmZXJzLiAqLworCitpZiAocmVxYnVmLmNvdW50ICZsdDsgNSkgeworCS8qIFlvdSBtYXkgbmVlZCB0byBmcmVlIHRoZSBidWZmZXJzIGhlcmUuICovCisJcHJpbnRmKCJOb3QgZW5vdWdoIGJ1ZmZlciBtZW1vcnlcbiIpOworCWV4aXQoRVhJVF9GQUlMVVJFKTsKK30KKworYnVmZmVycyA9IGNhbGxvYyhyZXFidWYuY291bnQsIHNpemVvZigqYnVmZmVycykpOworYXNzZXJ0KGJ1ZmZlcnMgIT0gTlVMTCk7CisKK2ZvciAoaSA9IDA7IGkgJmx0OyByZXFidWYuY291bnQ7IGkrKykgeworCSZ2NGwyLWJ1ZmZlcjsgYnVmZmVyOworCSZ2NGwyLXBsYW5lOyBwbGFuZXNbRk1UX05VTV9QTEFORVNdOworCisJbWVtc2V0KCZhbXA7YnVmZmVyLCAwLCBzaXplb2YoYnVmZmVyKSk7CisJYnVmZmVyLnR5cGUgPSByZXFidWYudHlwZTsKKwlidWZmZXIubWVtb3J5ID0gVjRMMl9NRU1PUllfTU1BUDsKKwlidWZmZXIuaW5kZXggPSBpOworCS8qIGxlbmd0aCBpbiBzdHJ1Y3QgdjRsMl9idWZmZXIgaW4gbXVsdGktcGxhbmFyIEFQSSBzdG9yZXMgdGhlIHNpemUKKwkgKiBvZiBwbGFuZXMgYXJyYXkuICovCisJYnVmZmVyLmxlbmd0aCA9IEZNVF9OVU1fUExBTkVTOworCWJ1ZmZlci5tLnBsYW5lcyA9IHBsYW5lczsKKworCWlmIChpb2N0bChmZCwgJlZJRElPQy1RVUVSWUJVRjssICZhbXA7YnVmZmVyKSAmbHQ7IDApIHsKKwkJcGVycm9yKCJWSURJT0NfUVVFUllCVUYiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKworCS8qIEV2ZXJ5IHBsYW5lIGhhcyB0byBiZSBtYXBwZWQgc2VwYXJhdGVseSAqLworCWZvciAoaiA9IDA7IGogJmx0OyBGTVRfTlVNX1BMQU5FUzsgaisrKSB7CisJCWJ1ZmZlcnNbaV0ubGVuZ3RoW2pdID0gYnVmZmVyLm0ucGxhbmVzW2pdLmxlbmd0aDsgLyogcmVtZW1iZXIgZm9yIG11bm1hcCgpICovCisKKwkJYnVmZmVyc1tpXS5zdGFydFtqXSA9IG1tYXAoTlVMTCwgYnVmZmVyLm0ucGxhbmVzW2pdLmxlbmd0aCwKKwkJCQkgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgLyogcmVjb21tZW5kZWQgKi8KKwkJCQkgTUFQX1NIQVJFRCwgICAgICAgICAgICAgLyogcmVjb21tZW5kZWQgKi8KKwkJCQkgZmQsIGJ1ZmZlci5tLnBsYW5lc1tqXS5tLm9mZnNldCk7CisKKwkJaWYgKE1BUF9GQUlMRUQgPT0gYnVmZmVyc1tpXS5zdGFydFtqXSkgeworCQkJLyogSWYgeW91IGRvIG5vdCBleGl0IGhlcmUgeW91IHNob3VsZCB1bm1hcCgpIGFuZCBmcmVlKCkKKwkJCSAgIHRoZSBidWZmZXJzIGFuZCBwbGFuZXMgbWFwcGVkIHNvIGZhci4gKi8KKwkJCXBlcnJvcigibW1hcCIpOworCQkJZXhpdChFWElUX0ZBSUxVUkUpOworCQl9CisJfQorfQorCisvKiBDbGVhbnVwLiAqLworCitmb3IgKGkgPSAwOyBpICZsdDsgcmVxYnVmLmNvdW50OyBpKyspCisJZm9yIChqID0gMDsgaiAmbHQ7IEZNVF9OVU1fUExBTkVTOyBqKyspCisJCW11bm1hcChidWZmZXJzW2ldLnN0YXJ0W2pdLCBidWZmZXJzW2ldLmxlbmd0aFtqXSk7CisgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgIDwvZXhhbXBsZT4KKworICAgIDxwYXJhPkNvbmNlcHR1YWxseSBzdHJlYW1pbmcgZHJpdmVycyBtYWludGFpbiB0d28gYnVmZmVyIHF1ZXVlcywgYW4gaW5jb21pbmcKK2FuZCBhbiBvdXRnb2luZyBxdWV1ZS4gVGhleSBzZXBhcmF0ZSB0aGUgc3luY2hyb25vdXMgY2FwdHVyZSBvciBvdXRwdXQKK29wZXJhdGlvbiBsb2NrZWQgdG8gYSB2aWRlbyBjbG9jayBmcm9tIHRoZSBhcHBsaWNhdGlvbiB3aGljaCBpcworc3ViamVjdCB0byByYW5kb20gZGlzayBvciBuZXR3b3JrIGRlbGF5cyBhbmQgcHJlZW1wdGlvbiBieQorb3RoZXIgcHJvY2Vzc2VzLCB0aGVyZWJ5IHJlZHVjaW5nIHRoZSBwcm9iYWJpbGl0eSBvZiBkYXRhIGxvc3MuCitUaGUgcXVldWVzIGFyZSBvcmdhbml6ZWQgYXMgRklGT3MsIGJ1ZmZlcnMgd2lsbCBiZQorb3V0cHV0IGluIHRoZSBvcmRlciBlbnF1ZXVlZCBpbiB0aGUgaW5jb21pbmcgRklGTywgYW5kIHdlcmUKK2NhcHR1cmVkIGluIHRoZSBvcmRlciBkZXF1ZXVlZCBmcm9tIHRoZSBvdXRnb2luZyBGSUZPLjwvcGFyYT4KKworICAgIDxwYXJhPlRoZSBkcml2ZXIgbWF5IHJlcXVpcmUgYSBtaW5pbXVtIG51bWJlciBvZiBidWZmZXJzIGVucXVldWVkCithdCBhbGwgdGltZXMgdG8gZnVuY3Rpb24sIGFwYXJ0IG9mIHRoaXMgbm8gbGltaXQgZXhpc3RzIG9uIHRoZSBudW1iZXIKK29mIGJ1ZmZlcnMgYXBwbGljYXRpb25zIGNhbiBlbnF1ZXVlIGluIGFkdmFuY2UsIG9yIGRlcXVldWUgYW5kCitwcm9jZXNzLiBUaGV5IGNhbiBhbHNvIGVucXVldWUgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiBidWZmZXJzIGhhdmUKK2JlZW4gZGVxdWV1ZWQsIGFuZCB0aGUgZHJpdmVyIGNhbiA8ZW1waGFzaXM+ZmlsbDwvZW1waGFzaXM+IGVucXVldWVkCis8ZW1waGFzaXM+ZW1wdHk8L2VtcGhhc2lzPiBidWZmZXJzIGluIGFueSBvcmRlci4gPGZvb3Rub3RlPgorCTxwYXJhPlJhbmRvbSBlbnF1ZXVlIG9yZGVyIHBlcm1pdHMgYXBwbGljYXRpb25zIHByb2Nlc3NpbmcKK2ltYWdlcyBvdXQgb2Ygb3JkZXIgKHN1Y2ggYXMgdmlkZW8gY29kZWNzKSB0byByZXR1cm4gYnVmZmVycyBlYXJsaWVyLAorcmVkdWNpbmcgdGhlIHByb2JhYmlsaXR5IG9mIGRhdGEgbG9zcy4gUmFuZG9tIGZpbGwgb3JkZXIgYWxsb3dzCitkcml2ZXJzIHRvIHJldXNlIGJ1ZmZlcnMgb24gYSBMSUZPLWJhc2lzLCB0YWtpbmcgYWR2YW50YWdlIG9mIGNhY2hlcworaG9sZGluZyBzY2F0dGVyLWdhdGhlciBsaXN0cyBhbmQgdGhlIGxpa2UuPC9wYXJhPgorICAgICAgPC9mb290bm90ZT4gVGhlIGluZGV4IG51bWJlciBvZiBhIGJ1ZmZlciAoJnY0bDItYnVmZmVyOworPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4pIHBsYXlzIG5vIHJvbGUgaGVyZSwgaXQgb25seQoraWRlbnRpZmllcyB0aGUgYnVmZmVyLjwvcGFyYT4KKworICAgIDxwYXJhPkluaXRpYWxseSBhbGwgbWFwcGVkIGJ1ZmZlcnMgYXJlIGluIGRlcXVldWVkIHN0YXRlLAoraW5hY2Nlc3NpYmxlIGJ5IHRoZSBkcml2ZXIuIEZvciBjYXB0dXJpbmcgYXBwbGljYXRpb25zIGl0IGlzIGN1c3RvbWFyeQordG8gZmlyc3QgZW5xdWV1ZSBhbGwgbWFwcGVkIGJ1ZmZlcnMsIHRoZW4gdG8gc3RhcnQgY2FwdHVyaW5nIGFuZCBlbnRlcgordGhlIHJlYWQgbG9vcC4gSGVyZSB0aGUgYXBwbGljYXRpb24gd2FpdHMgdW50aWwgYSBmaWxsZWQgYnVmZmVyIGNhbiBiZQorZGVxdWV1ZWQsIGFuZCByZS1lbnF1ZXVlcyB0aGUgYnVmZmVyIHdoZW4gdGhlIGRhdGEgaXMgbm8gbG9uZ2VyCituZWVkZWQuIE91dHB1dCBhcHBsaWNhdGlvbnMgZmlsbCBhbmQgZW5xdWV1ZSBidWZmZXJzLCB3aGVuIGVub3VnaAorYnVmZmVycyBhcmUgc3RhY2tlZCB1cCB0aGUgb3V0cHV0IGlzIHN0YXJ0ZWQgd2l0aAorPGNvbnN0YW50PlZJRElPQ19TVFJFQU1PTjwvY29uc3RhbnQ+LiBJbiB0aGUgd3JpdGUgbG9vcCwgd2hlbgordGhlIGFwcGxpY2F0aW9uIHJ1bnMgb3V0IG9mIGZyZWUgYnVmZmVycywgaXQgbXVzdCB3YWl0IHVudGlsIGFuIGVtcHR5CitidWZmZXIgY2FuIGJlIGRlcXVldWVkIGFuZCByZXVzZWQuPC9wYXJhPgorCisgICAgPHBhcmE+VG8gZW5xdWV1ZSBhbmQgZGVxdWV1ZSBhIGJ1ZmZlciBhcHBsaWNhdGlvbnMgdXNlIHRoZQorJlZJRElPQy1RQlVGOyBhbmQgJlZJRElPQy1EUUJVRjsgaW9jdGwuIFRoZSBzdGF0dXMgb2YgYSBidWZmZXIgYmVpbmcKK21hcHBlZCwgZW5xdWV1ZWQsIGZ1bGwgb3IgZW1wdHkgY2FuIGJlIGRldGVybWluZWQgYXQgYW55IHRpbWUgdXNpbmcgdGhlCismVklESU9DLVFVRVJZQlVGOyBpb2N0bC4gVHdvIG1ldGhvZHMgZXhpc3QgdG8gc3VzcGVuZCBleGVjdXRpb24gb2YgdGhlCithcHBsaWNhdGlvbiB1bnRpbCBvbmUgb3IgbW9yZSBidWZmZXJzIGNhbiBiZSBkZXF1ZXVlZC4gQnkgZGVmYXVsdAorPGNvbnN0YW50PlZJRElPQ19EUUJVRjwvY29uc3RhbnQ+IGJsb2NrcyB3aGVuIG5vIGJ1ZmZlciBpcyBpbiB0aGUKK291dGdvaW5nIHF1ZXVlLiBXaGVuIHRoZSA8Y29uc3RhbnQ+T19OT05CTE9DSzwvY29uc3RhbnQ+IGZsYWcgd2FzCitnaXZlbiB0byB0aGUgJmZ1bmMtb3BlbjsgZnVuY3Rpb24sIDxjb25zdGFudD5WSURJT0NfRFFCVUY8L2NvbnN0YW50PgorcmV0dXJucyBpbW1lZGlhdGVseSB3aXRoIGFuICZFQUdBSU47IHdoZW4gbm8gYnVmZmVyIGlzIGF2YWlsYWJsZS4gVGhlCismZnVuYy1zZWxlY3Q7IG9yICZmdW5jLXBvbGw7IGZ1bmN0aW9ucyBhcmUgYWx3YXlzIGF2YWlsYWJsZS48L3BhcmE+CisKKyAgICA8cGFyYT5UbyBzdGFydCBhbmQgc3RvcCBjYXB0dXJpbmcgb3Igb3V0cHV0IGFwcGxpY2F0aW9ucyBjYWxsIHRoZQorJlZJRElPQy1TVFJFQU1PTjsgYW5kICZWSURJT0MtU1RSRUFNT0ZGOyBpb2N0bC4gTm90ZQorPGNvbnN0YW50PlZJRElPQ19TVFJFQU1PRkY8L2NvbnN0YW50PiByZW1vdmVzIGFsbCBidWZmZXJzIGZyb20gYm90aAorcXVldWVzIGFzIGEgc2lkZSBlZmZlY3QuIFNpbmNlIHRoZXJlIGlzIG5vIG5vdGlvbiBvZiBkb2luZyBhbnl0aGluZworIm5vdyIgb24gYSBtdWx0aXRhc2tpbmcgc3lzdGVtLCBpZiBhbiBhcHBsaWNhdGlvbiBuZWVkcyB0byBzeW5jaHJvbml6ZQord2l0aCBhbm90aGVyIGV2ZW50IGl0IHNob3VsZCBleGFtaW5lIHRoZSAmdjRsMi1idWZmZXI7Cis8c3RydWN0ZmllbGQ+dGltZXN0YW1wPC9zdHJ1Y3RmaWVsZD4gb2YgY2FwdHVyZWQgb3Igb3V0cHV0dGVkIGJ1ZmZlcnMuCis8L3BhcmE+CisKKyAgICA8cGFyYT5Ecml2ZXJzIGltcGxlbWVudGluZyBtZW1vcnkgbWFwcGluZyBJL08gbXVzdAorc3VwcG9ydCB0aGUgPGNvbnN0YW50PlZJRElPQ19SRVFCVUZTPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VklESU9DX1FVRVJZQlVGPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VklESU9DX1FCVUY8L2NvbnN0YW50PiwgPGNvbnN0YW50PlZJRElPQ19EUUJVRjwvY29uc3RhbnQ+LAorPGNvbnN0YW50PlZJRElPQ19TVFJFQU1PTjwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlZJRElPQ19TVFJFQU1PRkY8L2NvbnN0YW50PiBpb2N0bCwgdGhlCis8ZnVuY3Rpb24+bW1hcCgpPC9mdW5jdGlvbj4sIDxmdW5jdGlvbj5tdW5tYXAoKTwvZnVuY3Rpb24+LAorPGZ1bmN0aW9uPnNlbGVjdCgpPC9mdW5jdGlvbj4gYW5kIDxmdW5jdGlvbj5wb2xsKCk8L2Z1bmN0aW9uPgorZnVuY3Rpb24uPGZvb3Rub3RlPgorCTxwYXJhPkF0IHRoZSBkcml2ZXIgbGV2ZWwgPGZ1bmN0aW9uPnNlbGVjdCgpPC9mdW5jdGlvbj4gYW5kCis8ZnVuY3Rpb24+cG9sbCgpPC9mdW5jdGlvbj4gYXJlIHRoZSBzYW1lLCBhbmQKKzxmdW5jdGlvbj5zZWxlY3QoKTwvZnVuY3Rpb24+IGlzIHRvbyBpbXBvcnRhbnQgdG8gYmUgb3B0aW9uYWwuIFRoZQorcmVzdCBzaG91bGQgYmUgZXZpZGVudC48L3BhcmE+CisgICAgICA8L2Zvb3Rub3RlPjwvcGFyYT4KKworICAgIDxwYXJhPltjYXB0dXJlIGV4YW1wbGVdPC9wYXJhPgorCisgIDwvc2VjdGlvbj4KKworICA8c2VjdGlvbiBpZD0idXNlcnAiPgorICAgIDx0aXRsZT5TdHJlYW1pbmcgSS9PIChVc2VyIFBvaW50ZXJzKTwvdGl0bGU+CisKKyAgICA8cGFyYT5JbnB1dCBhbmQgb3V0cHV0IGRldmljZXMgc3VwcG9ydCB0aGlzIEkvTyBtZXRob2Qgd2hlbiB0aGUKKzxjb25zdGFudD5WNEwyX0NBUF9TVFJFQU1JTkc8L2NvbnN0YW50PiBmbGFnIGluIHRoZQorPHN0cnVjdGZpZWxkPmNhcGFiaWxpdGllczwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mICZ2NGwyLWNhcGFiaWxpdHk7CityZXR1cm5lZCBieSB0aGUgJlZJRElPQy1RVUVSWUNBUDsgaW9jdGwgaXMgc2V0LiBJZiB0aGUgcGFydGljdWxhciB1c2VyCitwb2ludGVyIG1ldGhvZCAobm90IG9ubHkgbWVtb3J5IG1hcHBpbmcpIGlzIHN1cHBvcnRlZCBtdXN0IGJlCitkZXRlcm1pbmVkIGJ5IGNhbGxpbmcgdGhlICZWSURJT0MtUkVRQlVGUzsgaW9jdGwuPC9wYXJhPgorCisgICAgPHBhcmE+VGhpcyBJL08gbWV0aG9kIGNvbWJpbmVzIGFkdmFudGFnZXMgb2YgdGhlIHJlYWQvd3JpdGUgYW5kCittZW1vcnkgbWFwcGluZyBtZXRob2RzLiBCdWZmZXJzIChwbGFuZXMpIGFyZSBhbGxvY2F0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uCitpdHNlbGYsIGFuZCBjYW4gcmVzaWRlIGZvciBleGFtcGxlIGluIHZpcnR1YWwgb3Igc2hhcmVkIG1lbW9yeS4gT25seQorcG9pbnRlcnMgdG8gZGF0YSBhcmUgZXhjaGFuZ2VkLCB0aGVzZSBwb2ludGVycyBhbmQgbWV0YS1pbmZvcm1hdGlvbgorYXJlIHBhc3NlZCBpbiAmdjRsMi1idWZmZXI7IChvciBpbiAmdjRsMi1wbGFuZTsgaW4gdGhlIG11bHRpLXBsYW5hciBBUEkgY2FzZSkuCitUaGUgZHJpdmVyIG11c3QgYmUgc3dpdGNoZWQgaW50byB1c2VyIHBvaW50ZXIgSS9PIG1vZGUgYnkgY2FsbGluZyB0aGUKKyZWSURJT0MtUkVRQlVGUzsgd2l0aCB0aGUgZGVzaXJlZCBidWZmZXIgdHlwZS4gTm8gYnVmZmVycyAocGxhbmVzKSBhcmUgYWxsb2NhdGVkCitiZWZvcmVoYW5kLCBjb25zZXF1ZW50bHkgdGhleSBhcmUgbm90IGluZGV4ZWQgYW5kIGNhbm5vdCBiZSBxdWVyaWVkIGxpa2UgbWFwcGVkCitidWZmZXJzIHdpdGggdGhlIDxjb25zdGFudD5WSURJT0NfUVVFUllCVUY8L2NvbnN0YW50PiBpb2N0bC48L3BhcmE+CisKKyAgICA8ZXhhbXBsZT4KKyAgICAgIDx0aXRsZT5Jbml0aWF0aW5nIHN0cmVhbWluZyBJL08gd2l0aCB1c2VyIHBvaW50ZXJzPC90aXRsZT4KKworICAgICAgPHByb2dyYW1saXN0aW5nPgorJnY0bDItcmVxdWVzdGJ1ZmZlcnM7IHJlcWJ1ZjsKKworbWVtc2V0ICgmYW1wO3JlcWJ1ZiwgMCwgc2l6ZW9mIChyZXFidWYpKTsKK3JlcWJ1Zi50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFOworcmVxYnVmLm1lbW9yeSA9IFY0TDJfTUVNT1JZX1VTRVJQVFI7CisKK2lmIChpb2N0bCAoZmQsICZWSURJT0MtUkVRQlVGUzssICZhbXA7cmVxYnVmKSA9PSAtMSkgeworCWlmIChlcnJubyA9PSBFSU5WQUwpCisJCXByaW50ZiAoIlZpZGVvIGNhcHR1cmluZyBvciB1c2VyIHBvaW50ZXIgc3RyZWFtaW5nIGlzIG5vdCBzdXBwb3J0ZWRcbiIpOworCWVsc2UKKwkJcGVycm9yICgiVklESU9DX1JFUUJVRlMiKTsKKworCWV4aXQgKEVYSVRfRkFJTFVSRSk7Cit9CisgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgIDwvZXhhbXBsZT4KKworICAgIDxwYXJhPkJ1ZmZlciAocGxhbmUpIGFkZHJlc3NlcyBhbmQgc2l6ZXMgYXJlIHBhc3NlZCBvbiB0aGUgZmx5IHdpdGggdGhlCismVklESU9DLVFCVUY7IGlvY3RsLiBBbHRob3VnaCBidWZmZXJzIGFyZSBjb21tb25seSBjeWNsZWQsCithcHBsaWNhdGlvbnMgY2FuIHBhc3MgZGlmZmVyZW50IGFkZHJlc3NlcyBhbmQgc2l6ZXMgYXQgZWFjaAorPGNvbnN0YW50PlZJRElPQ19RQlVGPC9jb25zdGFudD4gY2FsbC4gSWYgcmVxdWlyZWQgYnkgdGhlIGhhcmR3YXJlIHRoZQorZHJpdmVyIHN3YXBzIG1lbW9yeSBwYWdlcyB3aXRoaW4gcGh5c2ljYWwgbWVtb3J5IHRvIGNyZWF0ZSBhCitjb250aW51b3VzIGFyZWEgb2YgbWVtb3J5LiBUaGlzIGhhcHBlbnMgdHJhbnNwYXJlbnRseSB0byB0aGUKK2FwcGxpY2F0aW9uIGluIHRoZSB2aXJ0dWFsIG1lbW9yeSBzdWJzeXN0ZW0gb2YgdGhlIGtlcm5lbC4gV2hlbiBidWZmZXIKK3BhZ2VzIGhhdmUgYmVlbiBzd2FwcGVkIG91dCB0byBkaXNrIHRoZXkgYXJlIGJyb3VnaHQgYmFjayBhbmQgZmluYWxseQorbG9ja2VkIGluIHBoeXNpY2FsIG1lbW9yeSBmb3IgRE1BLjxmb290bm90ZT4KKwk8cGFyYT5XZSBleHBlY3QgdGhhdCBmcmVxdWVudGx5IHVzZWQgYnVmZmVycyBhcmUgdHlwaWNhbGx5IG5vdAorc3dhcHBlZCBvdXQuIEFueXdheSwgdGhlIHByb2Nlc3Mgb2Ygc3dhcHBpbmcsIGxvY2tpbmcgb3IgZ2VuZXJhdGluZworc2NhdHRlci1nYXRoZXIgbGlzdHMgbWF5IGJlIHRpbWUgY29uc3VtaW5nLiBUaGUgZGVsYXkgY2FuIGJlIG1hc2tlZCBieQordGhlIGRlcHRoIG9mIHRoZSBpbmNvbWluZyBidWZmZXIgcXVldWUsIGFuZCBwZXJoYXBzIGJ5IG1haW50YWluaW5nCitjYWNoZXMgYXNzdW1pbmcgYSBidWZmZXIgd2lsbCBiZSBzb29uIGVucXVldWVkIGFnYWluLiBPbiB0aGUgb3RoZXIKK2hhbmQsIHRvIG9wdGltaXplIG1lbW9yeSB1c2FnZSBkcml2ZXJzIGNhbiBsaW1pdCB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMKK2xvY2tlZCBpbiBhZHZhbmNlIGFuZCByZWN5Y2xlIHRoZSBtb3N0IHJlY2VudGx5IHVzZWQgYnVmZmVycyBmaXJzdC4gT2YKK2NvdXJzZSwgdGhlIHBhZ2VzIG9mIGVtcHR5IGJ1ZmZlcnMgaW4gdGhlIGluY29taW5nIHF1ZXVlIG5lZWQgbm90IGJlCitzYXZlZCB0byBkaXNrLiBPdXRwdXQgYnVmZmVycyBtdXN0IGJlIHNhdmVkIG9uIHRoZSBpbmNvbWluZyBhbmQKK291dGdvaW5nIHF1ZXVlIGJlY2F1c2UgYW4gYXBwbGljYXRpb24gbWF5IHNoYXJlIHRoZW0gd2l0aCBvdGhlcgorcHJvY2Vzc2VzLjwvcGFyYT4KKyAgICAgIDwvZm9vdG5vdGU+PC9wYXJhPgorCisgICAgPHBhcmE+RmlsbGVkIG9yIGRpc3BsYXllZCBidWZmZXJzIGFyZSBkZXF1ZXVlZCB3aXRoIHRoZQorJlZJRElPQy1EUUJVRjsgaW9jdGwuIFRoZSBkcml2ZXIgY2FuIHVubG9jayB0aGUgbWVtb3J5IHBhZ2VzIGF0IGFueQordGltZSBiZXR3ZWVuIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBETUEgYW5kIHRoaXMgaW9jdGwuIFRoZSBtZW1vcnkgaXMKK2Fsc28gdW5sb2NrZWQgd2hlbiAmVklESU9DLVNUUkVBTU9GRjsgaXMgY2FsbGVkLCAmVklESU9DLVJFUUJVRlM7LCBvcgord2hlbiB0aGUgZGV2aWNlIGlzIGNsb3NlZC4gQXBwbGljYXRpb25zIG11c3QgdGFrZSBjYXJlIG5vdCB0byBmcmVlCitidWZmZXJzIHdpdGhvdXQgZGVxdWV1aW5nLiBGb3Igb25jZSwgdGhlIGJ1ZmZlcnMgcmVtYWluIGxvY2tlZCB1bnRpbAorZnVydGhlciwgd2FzdGluZyBwaHlzaWNhbCBtZW1vcnkuIFNlY29uZCB0aGUgZHJpdmVyIHdpbGwgbm90IGJlCitub3RpZmllZCB3aGVuIHRoZSBtZW1vcnkgaXMgcmV0dXJuZWQgdG8gdGhlIGFwcGxpY2F0aW9uJ3MgZnJlZSBsaXN0CithbmQgc3Vic2VxdWVudGx5IHJldXNlZCBmb3Igb3RoZXIgcHVycG9zZXMsIHBvc3NpYmx5IGNvbXBsZXRpbmcgdGhlCityZXF1ZXN0ZWQgRE1BIGFuZCBvdmVyd3JpdGluZyB2YWx1YWJsZSBkYXRhLjwvcGFyYT4KKworICAgIDxwYXJhPkZvciBjYXB0dXJpbmcgYXBwbGljYXRpb25zIGl0IGlzIGN1c3RvbWFyeSB0byBlbnF1ZXVlIGEKK251bWJlciBvZiBlbXB0eSBidWZmZXJzLCB0byBzdGFydCBjYXB0dXJpbmcgYW5kIGVudGVyIHRoZSByZWFkIGxvb3AuCitIZXJlIHRoZSBhcHBsaWNhdGlvbiB3YWl0cyB1bnRpbCBhIGZpbGxlZCBidWZmZXIgY2FuIGJlIGRlcXVldWVkLCBhbmQKK3JlLWVucXVldWVzIHRoZSBidWZmZXIgd2hlbiB0aGUgZGF0YSBpcyBubyBsb25nZXIgbmVlZGVkLiBPdXRwdXQKK2FwcGxpY2F0aW9ucyBmaWxsIGFuZCBlbnF1ZXVlIGJ1ZmZlcnMsIHdoZW4gZW5vdWdoIGJ1ZmZlcnMgYXJlIHN0YWNrZWQKK3VwIG91dHB1dCBpcyBzdGFydGVkLiBJbiB0aGUgd3JpdGUgbG9vcCwgd2hlbiB0aGUgYXBwbGljYXRpb24KK3J1bnMgb3V0IG9mIGZyZWUgYnVmZmVycyBpdCBtdXN0IHdhaXQgdW50aWwgYW4gZW1wdHkgYnVmZmVyIGNhbiBiZQorZGVxdWV1ZWQgYW5kIHJldXNlZC4gVHdvIG1ldGhvZHMgZXhpc3QgdG8gc3VzcGVuZCBleGVjdXRpb24gb2YgdGhlCithcHBsaWNhdGlvbiB1bnRpbCBvbmUgb3IgbW9yZSBidWZmZXJzIGNhbiBiZSBkZXF1ZXVlZC4gQnkgZGVmYXVsdAorPGNvbnN0YW50PlZJRElPQ19EUUJVRjwvY29uc3RhbnQ+IGJsb2NrcyB3aGVuIG5vIGJ1ZmZlciBpcyBpbiB0aGUKK291dGdvaW5nIHF1ZXVlLiBXaGVuIHRoZSA8Y29uc3RhbnQ+T19OT05CTE9DSzwvY29uc3RhbnQ+IGZsYWcgd2FzCitnaXZlbiB0byB0aGUgJmZ1bmMtb3BlbjsgZnVuY3Rpb24sIDxjb25zdGFudD5WSURJT0NfRFFCVUY8L2NvbnN0YW50PgorcmV0dXJucyBpbW1lZGlhdGVseSB3aXRoIGFuICZFQUdBSU47IHdoZW4gbm8gYnVmZmVyIGlzIGF2YWlsYWJsZS4gVGhlCismZnVuYy1zZWxlY3Q7IG9yICZmdW5jLXBvbGw7IGZ1bmN0aW9uIGFyZSBhbHdheXMgYXZhaWxhYmxlLjwvcGFyYT4KKworICAgIDxwYXJhPlRvIHN0YXJ0IGFuZCBzdG9wIGNhcHR1cmluZyBvciBvdXRwdXQgYXBwbGljYXRpb25zIGNhbGwgdGhlCismVklESU9DLVNUUkVBTU9OOyBhbmQgJlZJRElPQy1TVFJFQU1PRkY7IGlvY3RsLiBOb3RlCis8Y29uc3RhbnQ+VklESU9DX1NUUkVBTU9GRjwvY29uc3RhbnQ+IHJlbW92ZXMgYWxsIGJ1ZmZlcnMgZnJvbSBib3RoCitxdWV1ZXMgYW5kIHVubG9ja3MgYWxsIGJ1ZmZlcnMgYXMgYSBzaWRlIGVmZmVjdC4gU2luY2UgdGhlcmUgaXMgbm8KK25vdGlvbiBvZiBkb2luZyBhbnl0aGluZyAibm93IiBvbiBhIG11bHRpdGFza2luZyBzeXN0ZW0sIGlmIGFuCithcHBsaWNhdGlvbiBuZWVkcyB0byBzeW5jaHJvbml6ZSB3aXRoIGFub3RoZXIgZXZlbnQgaXQgc2hvdWxkIGV4YW1pbmUKK3RoZSAmdjRsMi1idWZmZXI7IDxzdHJ1Y3RmaWVsZD50aW1lc3RhbXA8L3N0cnVjdGZpZWxkPiBvZiBjYXB0dXJlZAorb3Igb3V0cHV0dGVkIGJ1ZmZlcnMuPC9wYXJhPgorCisgICAgPHBhcmE+RHJpdmVycyBpbXBsZW1lbnRpbmcgdXNlciBwb2ludGVyIEkvTyBtdXN0CitzdXBwb3J0IHRoZSA8Y29uc3RhbnQ+VklESU9DX1JFUUJVRlM8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WSURJT0NfUUJVRjwvY29uc3RhbnQ+LCA8Y29uc3RhbnQ+VklESU9DX0RRQlVGPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VklESU9DX1NUUkVBTU9OPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VklESU9DX1NUUkVBTU9GRjwvY29uc3RhbnQ+IGlvY3RsLCB0aGUKKzxmdW5jdGlvbj5zZWxlY3QoKTwvZnVuY3Rpb24+IGFuZCA8ZnVuY3Rpb24+cG9sbCgpPC9mdW5jdGlvbj4gZnVuY3Rpb24uPGZvb3Rub3RlPgorCTxwYXJhPkF0IHRoZSBkcml2ZXIgbGV2ZWwgPGZ1bmN0aW9uPnNlbGVjdCgpPC9mdW5jdGlvbj4gYW5kCis8ZnVuY3Rpb24+cG9sbCgpPC9mdW5jdGlvbj4gYXJlIHRoZSBzYW1lLCBhbmQKKzxmdW5jdGlvbj5zZWxlY3QoKTwvZnVuY3Rpb24+IGlzIHRvbyBpbXBvcnRhbnQgdG8gYmUgb3B0aW9uYWwuIFRoZQorcmVzdCBzaG91bGQgYmUgZXZpZGVudC48L3BhcmE+CisgICAgICA8L2Zvb3Rub3RlPjwvcGFyYT4KKyAgPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uIGlkPSJkbWFidWYiPgorICAgIDx0aXRsZT5TdHJlYW1pbmcgSS9PIChETUEgYnVmZmVyIGltcG9ydGluZyk8L3RpdGxlPgorCisgICAgPG5vdGU+CisgICAgICA8dGl0bGU+RXhwZXJpbWVudGFsPC90aXRsZT4KKyAgICAgIDxwYXJhPlRoaXMgaXMgYW4gPGxpbmsgbGlua2VuZD0iZXhwZXJpbWVudGFsIj5leHBlcmltZW50YWw8L2xpbms+CisgICAgICBpbnRlcmZhY2UgYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS48L3BhcmE+CisgICAgPC9ub3RlPgorCis8cGFyYT5UaGUgRE1BQlVGIGZyYW1ld29yayBwcm92aWRlcyBhIGdlbmVyaWMgbWV0aG9kIGZvciBzaGFyaW5nIGJ1ZmZlcnMKK2JldHdlZW4gbXVsdGlwbGUgZGV2aWNlcy4gRGV2aWNlIGRyaXZlcnMgdGhhdCBzdXBwb3J0IERNQUJVRiBjYW4gZXhwb3J0IGEgRE1BCitidWZmZXIgdG8gdXNlcnNwYWNlIGFzIGEgZmlsZSBkZXNjcmlwdG9yIChrbm93biBhcyB0aGUgZXhwb3J0ZXIgcm9sZSksIGltcG9ydCBhCitETUEgYnVmZmVyIGZyb20gdXNlcnNwYWNlIHVzaW5nIGEgZmlsZSBkZXNjcmlwdG9yIHByZXZpb3VzbHkgZXhwb3J0ZWQgZm9yIGEKK2RpZmZlcmVudCBvciB0aGUgc2FtZSBkZXZpY2UgKGtub3duIGFzIHRoZSBpbXBvcnRlciByb2xlKSwgb3IgYm90aC4gVGhpcworc2VjdGlvbiBkZXNjcmliZXMgdGhlIERNQUJVRiBpbXBvcnRlciByb2xlIEFQSSBpbiBWNEwyLjwvcGFyYT4KKworICAgIDxwYXJhPlJlZmVyIHRvIDxsaW5rIGxpbmtlbmQ9InZpZGlvYy1leHBidWYiPkRNQUJVRiBleHBvcnRpbmc8L2xpbms+IGZvcgorZGV0YWlscyBhYm91dCBleHBvcnRpbmcgVjRMMiBidWZmZXJzIGFzIERNQUJVRiBmaWxlIGRlc2NyaXB0b3JzLjwvcGFyYT4KKworPHBhcmE+SW5wdXQgYW5kIG91dHB1dCBkZXZpY2VzIHN1cHBvcnQgdGhlIHN0cmVhbWluZyBJL08gbWV0aG9kIHdoZW4gdGhlCis8Y29uc3RhbnQ+VjRMMl9DQVBfU1RSRUFNSU5HPC9jb25zdGFudD4gZmxhZyBpbiB0aGUKKzxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXRpZXM8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiAmdjRsMi1jYXBhYmlsaXR5OyByZXR1cm5lZCBieQordGhlICZWSURJT0MtUVVFUllDQVA7IGlvY3RsIGlzIHNldC4gV2hldGhlciBpbXBvcnRpbmcgRE1BIGJ1ZmZlcnMgdGhyb3VnaAorRE1BQlVGIGZpbGUgZGVzY3JpcHRvcnMgaXMgc3VwcG9ydGVkIGlzIGRldGVybWluZWQgYnkgY2FsbGluZyB0aGUKKyZWSURJT0MtUkVRQlVGUzsgaW9jdGwgd2l0aCB0aGUgbWVtb3J5IHR5cGUgc2V0IHRvCis8Y29uc3RhbnQ+VjRMMl9NRU1PUllfRE1BQlVGPC9jb25zdGFudD4uPC9wYXJhPgorCisgICAgPHBhcmE+VGhpcyBJL08gbWV0aG9kIGlzIGRlZGljYXRlZCB0byBzaGFyaW5nIERNQSBidWZmZXJzIGJldHdlZW4gZGlmZmVyZW50CitkZXZpY2VzLCB3aGljaCBtYXkgYmUgVjRMIGRldmljZXMgb3Igb3RoZXIgdmlkZW8tcmVsYXRlZCBkZXZpY2VzIChlLmcuIERSTSkuCitCdWZmZXJzIChwbGFuZXMpIGFyZSBhbGxvY2F0ZWQgYnkgYSBkcml2ZXIgb24gYmVoYWxmIG9mIGFuIGFwcGxpY2F0aW9uLiBOZXh0LAordGhlc2UgYnVmZmVycyBhcmUgZXhwb3J0ZWQgdG8gdGhlIGFwcGxpY2F0aW9uIGFzIGZpbGUgZGVzY3JpcHRvcnMgdXNpbmcgYW4gQVBJCit3aGljaCBpcyBzcGVjaWZpYyBmb3IgYW4gYWxsb2NhdG9yIGRyaXZlci4gIE9ubHkgc3VjaCBmaWxlIGRlc2NyaXB0b3IgYXJlCitleGNoYW5nZWQuIFRoZSBkZXNjcmlwdG9ycyBhbmQgbWV0YS1pbmZvcm1hdGlvbiBhcmUgcGFzc2VkIGluICZ2NGwyLWJ1ZmZlcjsgKG9yCitpbiAmdjRsMi1wbGFuZTsgaW4gdGhlIG11bHRpLXBsYW5hciBBUEkgY2FzZSkuICBUaGUgZHJpdmVyIG11c3QgYmUgc3dpdGNoZWQKK2ludG8gRE1BQlVGIEkvTyBtb2RlIGJ5IGNhbGxpbmcgdGhlICZWSURJT0MtUkVRQlVGUzsgd2l0aCB0aGUgZGVzaXJlZCBidWZmZXIKK3R5cGUuPC9wYXJhPgorCisgICAgPGV4YW1wbGU+CisgICAgICA8dGl0bGU+SW5pdGlhdGluZyBzdHJlYW1pbmcgSS9PIHdpdGggRE1BQlVGIGZpbGUgZGVzY3JpcHRvcnM8L3RpdGxlPgorCisgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CismdjRsMi1yZXF1ZXN0YnVmZmVyczsgcmVxYnVmOworCittZW1zZXQoJmFtcDtyZXFidWYsIDAsIHNpemVvZiAocmVxYnVmKSk7CityZXFidWYudHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTsKK3JlcWJ1Zi5tZW1vcnkgPSBWNEwyX01FTU9SWV9ETUFCVUY7CityZXFidWYuY291bnQgPSAxOworCitpZiAoaW9jdGwoZmQsICZWSURJT0MtUkVRQlVGUzssICZhbXA7cmVxYnVmKSA9PSAtMSkgeworCWlmIChlcnJubyA9PSBFSU5WQUwpCisJCXByaW50ZigiVmlkZW8gY2FwdHVyaW5nIG9yIERNQUJVRiBzdHJlYW1pbmcgaXMgbm90IHN1cHBvcnRlZFxuIik7CisJZWxzZQorCQlwZXJyb3IoIlZJRElPQ19SRVFCVUZTIik7CisKKwlleGl0KEVYSVRfRkFJTFVSRSk7Cit9CisgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgIDwvZXhhbXBsZT4KKworICAgIDxwYXJhPlRoZSBidWZmZXIgKHBsYW5lKSBmaWxlIGRlc2NyaXB0b3IgaXMgcGFzc2VkIG9uIHRoZSBmbHkgd2l0aCB0aGUKKyZWSURJT0MtUUJVRjsgaW9jdGwuIEluIGNhc2Ugb2YgbXVsdGlwbGFuYXIgYnVmZmVycywgZXZlcnkgcGxhbmUgY2FuIGJlCithc3NvY2lhdGVkIHdpdGggYSBkaWZmZXJlbnQgRE1BQlVGIGRlc2NyaXB0b3IuIEFsdGhvdWdoIGJ1ZmZlcnMgYXJlIGNvbW1vbmx5CitjeWNsZWQsIGFwcGxpY2F0aW9ucyBjYW4gcGFzcyBhIGRpZmZlcmVudCBETUFCVUYgZGVzY3JpcHRvciBhdCBlYWNoCis8Y29uc3RhbnQ+VklESU9DX1FCVUY8L2NvbnN0YW50PiBjYWxsLjwvcGFyYT4KKworICAgIDxleGFtcGxlPgorICAgICAgPHRpdGxlPlF1ZXVlaW5nIERNQUJVRiB1c2luZyBzaW5nbGUgcGxhbmUgQVBJPC90aXRsZT4KKworICAgICAgPHByb2dyYW1saXN0aW5nPgoraW50IGJ1ZmZlcl9xdWV1ZShpbnQgdjRsZmQsIGludCBpbmRleCwgaW50IGRtYWZkKQoreworCSZ2NGwyLWJ1ZmZlcjsgYnVmOworCisJbWVtc2V0KCZhbXA7YnVmLCAwLCBzaXplb2YgYnVmKTsKKwlidWYudHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTsKKwlidWYubWVtb3J5ID0gVjRMMl9NRU1PUllfRE1BQlVGOworCWJ1Zi5pbmRleCA9IGluZGV4OworCWJ1Zi5tLmZkID0gZG1hZmQ7CisKKwlpZiAoaW9jdGwodjRsZmQsICZWSURJT0MtUUJVRjssICZhbXA7YnVmKSA9PSAtMSkgeworCQlwZXJyb3IoIlZJRElPQ19RQlVGIik7CisJCXJldHVybiAtMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKyAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPC9leGFtcGxlPgorCisgICAgPGV4YW1wbGU+CisgICAgICA8dGl0bGU+UXVldWVpbmcgRE1BQlVGIHVzaW5nIG11bHRpIHBsYW5lIEFQSTwvdGl0bGU+CisKKyAgICAgIDxwcm9ncmFtbGlzdGluZz4KK2ludCBidWZmZXJfcXVldWVfbXAoaW50IHY0bGZkLCBpbnQgaW5kZXgsIGludCBkbWFmZFtdLCBpbnQgbl9wbGFuZXMpCit7CisJJnY0bDItYnVmZmVyOyBidWY7CisJJnY0bDItcGxhbmU7IHBsYW5lc1tWSURFT19NQVhfUExBTkVTXTsKKwlpbnQgaTsKKworCW1lbXNldCgmYW1wO2J1ZiwgMCwgc2l6ZW9mIGJ1Zik7CisJYnVmLnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkVfTVBMQU5FOworCWJ1Zi5tZW1vcnkgPSBWNEwyX01FTU9SWV9ETUFCVUY7CisJYnVmLmluZGV4ID0gaW5kZXg7CisJYnVmLm0ucGxhbmVzID0gcGxhbmVzOworCWJ1Zi5sZW5ndGggPSBuX3BsYW5lczsKKworCW1lbXNldCgmYW1wO3BsYW5lcywgMCwgc2l6ZW9mIHBsYW5lcyk7CisKKwlmb3IgKGkgPSAwOyBpICZsdDsgbl9wbGFuZXM7ICsraSkKKwkJYnVmLm0ucGxhbmVzW2ldLm0uZmQgPSBkbWFmZFtpXTsKKworCWlmIChpb2N0bCh2NGxmZCwgJlZJRElPQy1RQlVGOywgJmFtcDtidWYpID09IC0xKSB7CisJCXBlcnJvcigiVklESU9DX1FCVUYiKTsKKwkJcmV0dXJuIC0xOworCX0KKworCXJldHVybiAwOworfQorICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICA8L2V4YW1wbGU+CisKKyAgICA8cGFyYT5DYXB0dXJlZCBvciBkaXNwbGF5ZWQgYnVmZmVycyBhcmUgZGVxdWV1ZWQgd2l0aCB0aGUKKyZWSURJT0MtRFFCVUY7IGlvY3RsLiBUaGUgZHJpdmVyIGNhbiB1bmxvY2sgdGhlIGJ1ZmZlciBhdCBhbnkKK3RpbWUgYmV0d2VlbiB0aGUgY29tcGxldGlvbiBvZiB0aGUgRE1BIGFuZCB0aGlzIGlvY3RsLiBUaGUgbWVtb3J5IGlzCithbHNvIHVubG9ja2VkIHdoZW4gJlZJRElPQy1TVFJFQU1PRkY7IGlzIGNhbGxlZCwgJlZJRElPQy1SRVFCVUZTOywgb3IKK3doZW4gdGhlIGRldmljZSBpcyBjbG9zZWQuPC9wYXJhPgorCisgICAgPHBhcmE+Rm9yIGNhcHR1cmluZyBhcHBsaWNhdGlvbnMgaXQgaXMgY3VzdG9tYXJ5IHRvIGVucXVldWUgYQorbnVtYmVyIG9mIGVtcHR5IGJ1ZmZlcnMsIHRvIHN0YXJ0IGNhcHR1cmluZyBhbmQgZW50ZXIgdGhlIHJlYWQgbG9vcC4KK0hlcmUgdGhlIGFwcGxpY2F0aW9uIHdhaXRzIHVudGlsIGEgZmlsbGVkIGJ1ZmZlciBjYW4gYmUgZGVxdWV1ZWQsIGFuZAorcmUtZW5xdWV1ZXMgdGhlIGJ1ZmZlciB3aGVuIHRoZSBkYXRhIGlzIG5vIGxvbmdlciBuZWVkZWQuIE91dHB1dAorYXBwbGljYXRpb25zIGZpbGwgYW5kIGVucXVldWUgYnVmZmVycywgd2hlbiBlbm91Z2ggYnVmZmVycyBhcmUgc3RhY2tlZAordXAgb3V0cHV0IGlzIHN0YXJ0ZWQuIEluIHRoZSB3cml0ZSBsb29wLCB3aGVuIHRoZSBhcHBsaWNhdGlvbgorcnVucyBvdXQgb2YgZnJlZSBidWZmZXJzIGl0IG11c3Qgd2FpdCB1bnRpbCBhbiBlbXB0eSBidWZmZXIgY2FuIGJlCitkZXF1ZXVlZCBhbmQgcmV1c2VkLiBUd28gbWV0aG9kcyBleGlzdCB0byBzdXNwZW5kIGV4ZWN1dGlvbiBvZiB0aGUKK2FwcGxpY2F0aW9uIHVudGlsIG9uZSBvciBtb3JlIGJ1ZmZlcnMgY2FuIGJlIGRlcXVldWVkLiBCeSBkZWZhdWx0Cis8Y29uc3RhbnQ+VklESU9DX0RRQlVGPC9jb25zdGFudD4gYmxvY2tzIHdoZW4gbm8gYnVmZmVyIGlzIGluIHRoZQorb3V0Z29pbmcgcXVldWUuIFdoZW4gdGhlIDxjb25zdGFudD5PX05PTkJMT0NLPC9jb25zdGFudD4gZmxhZyB3YXMKK2dpdmVuIHRvIHRoZSAmZnVuYy1vcGVuOyBmdW5jdGlvbiwgPGNvbnN0YW50PlZJRElPQ19EUUJVRjwvY29uc3RhbnQ+CityZXR1cm5zIGltbWVkaWF0ZWx5IHdpdGggYW4gJkVBR0FJTjsgd2hlbiBubyBidWZmZXIgaXMgYXZhaWxhYmxlLiBUaGUKKyZmdW5jLXNlbGVjdDsgYW5kICZmdW5jLXBvbGw7IGZ1bmN0aW9ucyBhcmUgYWx3YXlzIGF2YWlsYWJsZS48L3BhcmE+CisKKyAgICA8cGFyYT5UbyBzdGFydCBhbmQgc3RvcCBjYXB0dXJpbmcgb3IgZGlzcGxheWluZyBhcHBsaWNhdGlvbnMgY2FsbCB0aGUKKyZWSURJT0MtU1RSRUFNT047IGFuZCAmVklESU9DLVNUUkVBTU9GRjsgaW9jdGxzLiBOb3RlIHRoYXQKKzxjb25zdGFudD5WSURJT0NfU1RSRUFNT0ZGPC9jb25zdGFudD4gcmVtb3ZlcyBhbGwgYnVmZmVycyBmcm9tIGJvdGggcXVldWVzIGFuZAordW5sb2NrcyBhbGwgYnVmZmVycyBhcyBhIHNpZGUgZWZmZWN0LiBTaW5jZSB0aGVyZSBpcyBubyBub3Rpb24gb2YgZG9pbmcKK2FueXRoaW5nICJub3ciIG9uIGEgbXVsdGl0YXNraW5nIHN5c3RlbSwgaWYgYW4gYXBwbGljYXRpb24gbmVlZHMgdG8gc3luY2hyb25pemUKK3dpdGggYW5vdGhlciBldmVudCBpdCBzaG91bGQgZXhhbWluZSB0aGUgJnY0bDItYnVmZmVyOworPHN0cnVjdGZpZWxkPnRpbWVzdGFtcDwvc3RydWN0ZmllbGQ+IG9mIGNhcHR1cmVkIG9yIG91dHB1dHRlZCBidWZmZXJzLjwvcGFyYT4KKworICAgIDxwYXJhPkRyaXZlcnMgaW1wbGVtZW50aW5nIERNQUJVRiBpbXBvcnRpbmcgSS9PIG11c3Qgc3VwcG9ydCB0aGUKKzxjb25zdGFudD5WSURJT0NfUkVRQlVGUzwvY29uc3RhbnQ+LCA8Y29uc3RhbnQ+VklESU9DX1FCVUY8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WSURJT0NfRFFCVUY8L2NvbnN0YW50PiwgPGNvbnN0YW50PlZJRElPQ19TVFJFQU1PTjwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlZJRElPQ19TVFJFQU1PRkY8L2NvbnN0YW50PiBpb2N0bHMsIGFuZCB0aGUKKzxmdW5jdGlvbj5zZWxlY3QoKTwvZnVuY3Rpb24+IGFuZCA8ZnVuY3Rpb24+cG9sbCgpPC9mdW5jdGlvbj4gZnVuY3Rpb25zLjwvcGFyYT4KKworICA8L3NlY3Rpb24+CisKKyAgPHNlY3Rpb24gaWQ9ImFzeW5jIj4KKyAgICA8dGl0bGU+QXN5bmNocm9ub3VzIEkvTzwvdGl0bGU+CisKKyAgICA8cGFyYT5UaGlzIG1ldGhvZCBpcyBub3QgZGVmaW5lZCB5ZXQuPC9wYXJhPgorICA8L3NlY3Rpb24+CisKKyAgPHNlY3Rpb24gaWQ9ImJ1ZmZlciI+CisgICAgPHRpdGxlPkJ1ZmZlcnM8L3RpdGxlPgorCisgICAgPHBhcmE+QSBidWZmZXIgY29udGFpbnMgZGF0YSBleGNoYW5nZWQgYnkgYXBwbGljYXRpb24gYW5kCitkcml2ZXIgdXNpbmcgb25lIG9mIHRoZSBTdHJlYW1pbmcgSS9PIG1ldGhvZHMuIEluIHRoZSBtdWx0aS1wbGFuYXIgQVBJLCB0aGUKK2RhdGEgaXMgaGVsZCBpbiBwbGFuZXMsIHdoaWxlIHRoZSBidWZmZXIgc3RydWN0dXJlIGFjdHMgYXMgYSBjb250YWluZXIKK2ZvciB0aGUgcGxhbmVzLiBPbmx5IHBvaW50ZXJzIHRvIGJ1ZmZlcnMgKHBsYW5lcykgYXJlIGV4Y2hhbmdlZCwgdGhlIGRhdGEKK2l0c2VsZiBpcyBub3QgY29waWVkLiBUaGVzZSBwb2ludGVycywgdG9nZXRoZXIgd2l0aCBtZXRhLWluZm9ybWF0aW9uIGxpa2UKK3RpbWVzdGFtcHMgb3IgZmllbGQgcGFyaXR5LCBhcmUgc3RvcmVkIGluIGEgc3RydWN0Cis8c3RydWN0bmFtZT52NGwyX2J1ZmZlcjwvc3RydWN0bmFtZT4sIGFyZ3VtZW50IHRvCit0aGUgJlZJRElPQy1RVUVSWUJVRjssICZWSURJT0MtUUJVRjsgYW5kICZWSURJT0MtRFFCVUY7IGlvY3RsLgorSW4gdGhlIG11bHRpLXBsYW5hciBBUEksIHNvbWUgcGxhbmUtc3BlY2lmaWMgbWVtYmVycyBvZiBzdHJ1Y3QKKzxzdHJ1Y3RuYW1lPnY0bDJfYnVmZmVyPC9zdHJ1Y3RuYW1lPiwgc3VjaCBhcyBwb2ludGVycyBhbmQgc2l6ZXMgZm9yIGVhY2gKK3BsYW5lLCBhcmUgc3RvcmVkIGluIHN0cnVjdCA8c3RydWN0bmFtZT52NGwyX3BsYW5lPC9zdHJ1Y3RuYW1lPiBpbnN0ZWFkLgorSW4gdGhhdCBjYXNlLCBzdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9idWZmZXI8L3N0cnVjdG5hbWU+IGNvbnRhaW5zIGFuIGFycmF5IG9mCitwbGFuZSBzdHJ1Y3R1cmVzLjwvcGFyYT4KKworICAgIDxwYXJhPkRlcXVldWVkIHZpZGVvIGJ1ZmZlcnMgY29tZSB3aXRoIHRpbWVzdGFtcHMuIFRoZSBkcml2ZXIKKyAgICBkZWNpZGVzIGF0IHdoaWNoIHBhcnQgb2YgdGhlIGZyYW1lIGFuZCB3aXRoIHdoaWNoIGNsb2NrIHRoZQorICAgIHRpbWVzdGFtcCBpcyB0YWtlbi4gUGxlYXNlIHNlZSBmbGFncyBpbiB0aGUgbWFza3MKKyAgICA8Y29uc3RhbnQ+VjRMMl9CVUZfRkxBR19USU1FU1RBTVBfTUFTSzwvY29uc3RhbnQ+IGFuZAorICAgIDxjb25zdGFudD5WNEwyX0JVRl9GTEFHX1RTVEFNUF9TUkNfTUFTSzwvY29uc3RhbnQ+IGluIDx4cmVmCisgICAgbGlua2VuZD0iYnVmZmVyLWZsYWdzIiAvPi4gVGhlc2UgZmxhZ3MgYXJlIGFsd2F5cyB2YWxpZCBhbmQgY29uc3RhbnQKKyAgICBhY3Jvc3MgYWxsIGJ1ZmZlcnMgZHVyaW5nIHRoZSB3aG9sZSB2aWRlbyBzdHJlYW0uIENoYW5nZXMgaW4gdGhlc2UKKyAgICBmbGFncyBtYXkgdGFrZSBwbGFjZSBhcyBhIHNpZGUgZWZmZWN0IG9mICZWSURJT0MtUy1JTlBVVDsgb3IKKyAgICAmVklESU9DLVMtT1VUUFVUOyBob3dldmVyLiBUaGUKKyAgICA8Y29uc3RhbnQ+VjRMMl9CVUZfRkxBR19USU1FU1RBTVBfQ09QWTwvY29uc3RhbnQ+IHRpbWVzdGFtcCB0eXBlCisgICAgd2hpY2ggaXMgdXNlZCBieSBlLmcuIG9uIG1lbS10by1tZW0gZGV2aWNlcyBpcyBhbiBleGNlcHRpb24gdG8gdGhlCisgICAgcnVsZTogdGhlIHRpbWVzdGFtcCBzb3VyY2UgZmxhZ3MgYXJlIGNvcGllZCBmcm9tIHRoZSBPVVRQVVQgdmlkZW8KKyAgICBidWZmZXIgdG8gdGhlIENBUFRVUkUgdmlkZW8gYnVmZmVyLjwvcGFyYT4KKworICAgIDx0YWJsZSBmcmFtZT0ibm9uZSIgcGd3aWRlPSIxIiBpZD0idjRsMi1idWZmZXIiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2J1ZmZlcjwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSI0Ij4KKwkmY3MtdXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5pbmRleDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5OdW1iZXIgb2YgdGhlIGJ1ZmZlciwgc2V0IGJ5IHRoZSBhcHBsaWNhdGlvbiBleGNlcHQKK3doZW4gY2FsbGluZyAmVklESU9DLURRQlVGOywgdGhlbiBpdCBpcyBzZXQgYnkgdGhlIGRyaXZlci4KK1RoaXMgZmllbGQgY2FuIHJhbmdlIGZyb20gemVybyB0byB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgYWxsb2NhdGVkCit3aXRoIHRoZSAmVklESU9DLVJFUUJVRlM7IGlvY3RsICgmdjRsMi1yZXF1ZXN0YnVmZmVyczsgPHN0cnVjdGZpZWxkPmNvdW50PC9zdHJ1Y3RmaWVsZD4pLAorcGx1cyBhbnkgYnVmZmVycyBhbGxvY2F0ZWQgd2l0aCAmVklESU9DLUNSRUFURS1CVUZTOyBtaW51cyBvbmUuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlR5cGUgb2YgdGhlIGJ1ZmZlciwgc2FtZSBhcyAmdjRsMi1mb3JtYXQ7Cis8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IG9yICZ2NGwyLXJlcXVlc3RidWZmZXJzOworPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiwgc2V0IGJ5IHRoZSBhcHBsaWNhdGlvbi4gU2VlIDx4cmVmCitsaW5rZW5kPSJ2NGwyLWJ1Zi10eXBlIiAvPjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+Ynl0ZXN1c2VkPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBudW1iZXIgb2YgYnl0ZXMgb2NjdXBpZWQgYnkgdGhlIGRhdGEgaW4gdGhlCitidWZmZXIuIEl0IGRlcGVuZHMgb24gdGhlIG5lZ290aWF0ZWQgZGF0YSBmb3JtYXQgYW5kIG1heSBjaGFuZ2Ugd2l0aAorZWFjaCBidWZmZXIgZm9yIGNvbXByZXNzZWQgdmFyaWFibGUgc2l6ZSBkYXRhIGxpa2UgSlBFRyBpbWFnZXMuCitEcml2ZXJzIG11c3Qgc2V0IHRoaXMgZmllbGQgd2hlbiA8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+CityZWZlcnMgdG8gYW4gaW5wdXQgc3RyZWFtLCBhcHBsaWNhdGlvbnMgd2hlbiBpdCByZWZlcnMgdG8gYW4gb3V0cHV0IHN0cmVhbS4KK0lmIHRoZSBhcHBsaWNhdGlvbiBzZXRzIHRoaXMgdG8gMCBmb3IgYW4gb3V0cHV0IHN0cmVhbSwgdGhlbgorPHN0cnVjdGZpZWxkPmJ5dGVzdXNlZDwvc3RydWN0ZmllbGQ+IHdpbGwgYmUgc2V0IHRvIHRoZSBzaXplIG9mIHRoZQorYnVmZmVyIChzZWUgdGhlIDxzdHJ1Y3RmaWVsZD5sZW5ndGg8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiB0aGlzIHN0cnVjdCkgYnkKK3RoZSBkcml2ZXIuIEZvciBtdWx0aXBsYW5hciBmb3JtYXRzIHRoaXMgZmllbGQgaXMgaWdub3JlZCBhbmQgdGhlCis8c3RydWN0ZmllbGQ+cGxhbmVzPC9zdHJ1Y3RmaWVsZD4gcG9pbnRlciBpcyB1c2VkIGluc3RlYWQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5mbGFnczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5GbGFncyBzZXQgYnkgdGhlIGFwcGxpY2F0aW9uIG9yIGRyaXZlciwgc2VlIDx4cmVmCitsaW5rZW5kPSJidWZmZXItZmxhZ3MiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZmllbGQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+SW5kaWNhdGVzIHRoZSBmaWVsZCBvcmRlciBvZiB0aGUgaW1hZ2UgaW4gdGhlCitidWZmZXIsIHNlZSA8eHJlZiBsaW5rZW5kPSJ2NGwyLWZpZWxkIiAvPi4gVGhpcyBmaWVsZCBpcyBub3QgdXNlZCB3aGVuCit0aGUgYnVmZmVyIGNvbnRhaW5zIFZCSSBkYXRhLiBEcml2ZXJzIG11c3Qgc2V0IGl0IHdoZW4KKzxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gcmVmZXJzIHRvIGFuIGlucHV0IHN0cmVhbSwKK2FwcGxpY2F0aW9ucyB3aGVuIGl0IHJlZmVycyB0byBhbiBvdXRwdXQgc3RyZWFtLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5zdHJ1Y3QgdGltZXZhbDwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dGltZXN0YW1wPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxwYXJhPkZvciBpbnB1dCBzdHJlYW1zIHRoaXMgaXMgdGltZSB3aGVuIHRoZSBmaXJzdCBkYXRhCisJICAgIGJ5dGUgd2FzIGNhcHR1cmVkLCBhcyByZXR1cm5lZCBieSB0aGUKKwkgICAgPGZ1bmN0aW9uPmNsb2NrX2dldHRpbWUoKTwvZnVuY3Rpb24+IGZ1bmN0aW9uIGZvciB0aGUgcmVsZXZhbnQKKwkgICAgY2xvY2sgaWQ7IHNlZSA8Y29uc3RhbnQ+VjRMMl9CVUZfRkxBR19USU1FU1RBTVBfKjwvY29uc3RhbnQ+IGluCisJICAgIDx4cmVmIGxpbmtlbmQ9ImJ1ZmZlci1mbGFncyIgLz4uIEZvciBvdXRwdXQgc3RyZWFtcyB0aGUgZHJpdmVyCisJICAgIHN0b3JlcyB0aGUgdGltZSBhdCB3aGljaCB0aGUgbGFzdCBkYXRhIGJ5dGUgd2FzIGFjdHVhbGx5IHNlbnQgb3V0CisJICAgIGluIHRoZSAgPHN0cnVjdGZpZWxkPnRpbWVzdGFtcDwvc3RydWN0ZmllbGQ+IGZpZWxkLiBUaGlzIHBlcm1pdHMKKwkgICAgYXBwbGljYXRpb25zIHRvIG1vbml0b3IgdGhlIGRyaWZ0IGJldHdlZW4gdGhlIHZpZGVvIGFuZCBzeXN0ZW0KKwkgICAgY2xvY2suIEZvciBvdXRwdXQgc3RyZWFtcyB0aGF0IHVzZSA8Y29uc3RhbnQ+VjRMMl9CVUZfRkxBR19USU1FU1RBTVBfQ09QWTwvY29uc3RhbnQ+CisJICAgIHRoZSBhcHBsaWNhdGlvbiBoYXMgdG8gZmlsbCBpbiB0aGUgdGltZXN0YW1wIHdoaWNoIHdpbGwgYmUgY29waWVkCisJICAgIGJ5IHRoZSBkcml2ZXIgdG8gdGhlIGNhcHR1cmUgc3RyZWFtLjwvcGFyYT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+JnY0bDItdGltZWNvZGU7PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD50aW1lY29kZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5XaGVuIDxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gaXMKKzxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkU8L2NvbnN0YW50PiBhbmQgdGhlCis8Y29uc3RhbnQ+VjRMMl9CVUZfRkxBR19USU1FQ09ERTwvY29uc3RhbnQ+IGZsYWcgaXMgc2V0IGluCis8c3RydWN0ZmllbGQ+ZmxhZ3M8L3N0cnVjdGZpZWxkPiwgdGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgYSBmcmFtZQordGltZWNvZGUuIEluIDxsaW5rIGxpbmtlbmQ9InY0bDItZmllbGQiPlY0TDJfRklFTERfQUxURVJOQVRFPC9saW5rPgorbW9kZSB0aGUgdG9wIGFuZCBib3R0b20gZmllbGQgY29udGFpbiB0aGUgc2FtZSB0aW1lY29kZS4KK1RpbWVjb2RlcyBhcmUgaW50ZW5kZWQgdG8gaGVscCB2aWRlbyBlZGl0aW5nIGFuZCBhcmUgdHlwaWNhbGx5IHJlY29yZGVkIG9uCit2aWRlbyB0YXBlcywgYnV0IGFsc28gZW1iZWRkZWQgaW4gY29tcHJlc3NlZCBmb3JtYXRzIGxpa2UgTVBFRy4gVGhpcworZmllbGQgaXMgaW5kZXBlbmRlbnQgb2YgdGhlIDxzdHJ1Y3RmaWVsZD50aW1lc3RhbXA8L3N0cnVjdGZpZWxkPiBhbmQKKzxzdHJ1Y3RmaWVsZD5zZXF1ZW5jZTwvc3RydWN0ZmllbGQ+IGZpZWxkcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnNlcXVlbmNlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlNldCBieSB0aGUgZHJpdmVyLCBjb3VudGluZyB0aGUgZnJhbWVzIChub3QgZmllbGRzISkgaW4KK3NlcXVlbmNlLiBUaGlzIGZpZWxkIGlzIHNldCBmb3IgYm90aCBpbnB1dCBhbmQgb3V0cHV0IGRldmljZXMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJoc3BhbiI+PHBhcmE+SW4gPGxpbmsKK2xpbmtlbmQ9InY0bDItZmllbGQiPlY0TDJfRklFTERfQUxURVJOQVRFPC9saW5rPiBtb2RlIHRoZSB0b3AgYW5kCitib3R0b20gZmllbGQgaGF2ZSB0aGUgc2FtZSBzZXF1ZW5jZSBudW1iZXIuIFRoZSBjb3VudCBzdGFydHMgYXQgemVybworYW5kIGluY2x1ZGVzIGRyb3BwZWQgb3IgcmVwZWF0ZWQgZnJhbWVzLiBBIGRyb3BwZWQgZnJhbWUgd2FzIHJlY2VpdmVkCitieSBhbiBpbnB1dCBkZXZpY2UgYnV0IGNvdWxkIG5vdCBiZSBzdG9yZWQgZHVlIHRvIGxhY2sgb2YgZnJlZSBidWZmZXIKK3NwYWNlLiBBIHJlcGVhdGVkIGZyYW1lIHdhcyBkaXNwbGF5ZWQgYWdhaW4gYnkgYW4gb3V0cHV0IGRldmljZQorYmVjYXVzZSB0aGUgYXBwbGljYXRpb24gZGlkIG5vdCBwYXNzIG5ldyBkYXRhIGluCit0aW1lLjwvcGFyYT48cGFyYT5Ob3RlIHRoaXMgbWF5IGNvdW50IHRoZSBmcmFtZXMgcmVjZWl2ZWQKK2UuZy4gb3ZlciBVU0IsIHdpdGhvdXQgdGFraW5nIGludG8gYWNjb3VudCB0aGUgZnJhbWVzIGRyb3BwZWQgYnkgdGhlCityZW1vdGUgaGFyZHdhcmUgZHVlIHRvIGxpbWl0ZWQgY29tcHJlc3Npb24gdGhyb3VnaHB1dCBvciBidXMKK2JhbmR3aWR0aC4gVGhlc2UgZGV2aWNlcyBpZGVudGlmeSBieSBub3QgZW51bWVyYXRpbmcgYW55IHZpZGVvCitzdGFuZGFyZHMsIHNlZSA8eHJlZiBsaW5rZW5kPSJzdGFuZGFyZCIgLz4uPC9wYXJhPjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+bWVtb3J5PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoaXMgZmllbGQgbXVzdCBiZSBzZXQgYnkgYXBwbGljYXRpb25zIGFuZC9vciBkcml2ZXJzCitpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHNlbGVjdGVkIEkvTyBtZXRob2QuIFNlZSA8eHJlZiBsaW5rZW5kPSJ2NGwyLW1lbW9yeSIKKwkgICAgLz48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+dW5pb248L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm08L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm9mZnNldDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkZvciB0aGUgc2luZ2xlLXBsYW5hciBBUEkgYW5kIHdoZW4KKzxzdHJ1Y3RmaWVsZD5tZW1vcnk8L3N0cnVjdGZpZWxkPiBpcyA8Y29uc3RhbnQ+VjRMMl9NRU1PUllfTU1BUDwvY29uc3RhbnQ+IHRoaXMKK2lzIHRoZSBvZmZzZXQgb2YgdGhlIGJ1ZmZlciBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZGV2aWNlIG1lbW9yeS4gVGhlIHZhbHVlIGlzCityZXR1cm5lZCBieSB0aGUgZHJpdmVyIGFuZCBhcGFydCBvZiBzZXJ2aW5nIGFzIHBhcmFtZXRlciB0byB0aGUgJmZ1bmMtbW1hcDsKK2Z1bmN0aW9uIG5vdCB1c2VmdWwgZm9yIGFwcGxpY2F0aW9ucy4gU2VlIDx4cmVmIGxpbmtlbmQ9Im1tYXAiIC8+IGZvciBkZXRhaWxzCisJICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnVuc2lnbmVkIGxvbmc8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnVzZXJwdHI8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5Gb3IgdGhlIHNpbmdsZS1wbGFuYXIgQVBJIGFuZCB3aGVuCis8c3RydWN0ZmllbGQ+bWVtb3J5PC9zdHJ1Y3RmaWVsZD4gaXMgPGNvbnN0YW50PlY0TDJfTUVNT1JZX1VTRVJQVFI8L2NvbnN0YW50PgordGhpcyBpcyBhIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciAoY2FzdGVkIHRvIHVuc2lnbmVkIGxvbmcgdHlwZSkgaW4gdmlydHVhbAorbWVtb3J5LCBzZXQgYnkgdGhlIGFwcGxpY2F0aW9uLiBTZWUgPHhyZWYgbGlua2VuZD0idXNlcnAiIC8+IGZvciBkZXRhaWxzLgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnN0cnVjdCB2NGwyX3BsYW5lPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD4qcGxhbmVzPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+V2hlbiB1c2luZyB0aGUgbXVsdGktcGxhbmFyIEFQSSwgY29udGFpbnMgYSB1c2Vyc3BhY2UgcG9pbnRlcgorCSAgICB0byBhbiBhcnJheSBvZiAmdjRsMi1wbGFuZTsuIFRoZSBzaXplIG9mIHRoZSBhcnJheSBzaG91bGQgYmUgcHV0CisJICAgIGluIHRoZSA8c3RydWN0ZmllbGQ+bGVuZ3RoPC9zdHJ1Y3RmaWVsZD4gZmllbGQgb2YgdGhpcworCSAgICA8c3RydWN0bmFtZT52NGwyX2J1ZmZlcjwvc3RydWN0bmFtZT4gc3RydWN0dXJlLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+aW50PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5mZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkZvciB0aGUgc2luZ2xlLXBsYW5lIEFQSSBhbmQgd2hlbgorPHN0cnVjdGZpZWxkPm1lbW9yeTwvc3RydWN0ZmllbGQ+IGlzIDxjb25zdGFudD5WNEwyX01FTU9SWV9ETUFCVUY8L2NvbnN0YW50PiB0aGlzCitpcyB0aGUgZmlsZSBkZXNjcmlwdG9yIGFzc29jaWF0ZWQgd2l0aCBhIERNQUJVRiBidWZmZXIuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5sZW5ndGg8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+U2l6ZSBvZiB0aGUgYnVmZmVyIChub3QgdGhlIHBheWxvYWQpIGluIGJ5dGVzIGZvciB0aGUKKwkgICAgc2luZ2xlLXBsYW5hciBBUEkuIFRoaXMgaXMgc2V0IGJ5IHRoZSBkcml2ZXIgYmFzZWQgb24gdGhlIGNhbGxzIHRvCisJICAgICZWSURJT0MtUkVRQlVGUzsgYW5kL29yICZWSURJT0MtQ1JFQVRFLUJVRlM7LiBGb3IgdGhlIG11bHRpLXBsYW5hciBBUEkgdGhlIGFwcGxpY2F0aW9uIHNldHMKKwkgICAgdGhpcyB0byB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSA8c3RydWN0ZmllbGQ+cGxhbmVzPC9zdHJ1Y3RmaWVsZD4KKwkgICAgYXJyYXkuIFRoZSBkcml2ZXIgd2lsbCBmaWxsIGluIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHZhbGlkIGVsZW1lbnRzIGluCisJICAgIHRoYXQgYXJyYXkuCisJICAgIDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cmVzZXJ2ZWQyPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkEgcGxhY2UgaG9sZGVyIGZvciBmdXR1cmUgZXh0ZW5zaW9ucy4gRHJpdmVycyBhbmQgYXBwbGljYXRpb25zCittdXN0IHNldCB0aGlzIHRvIDAuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5BIHBsYWNlIGhvbGRlciBmb3IgZnV0dXJlIGV4dGVuc2lvbnMuIERyaXZlcnMgYW5kIGFwcGxpY2F0aW9ucworbXVzdCBzZXQgdGhpcyB0byAwLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBmcmFtZT0ibm9uZSIgcGd3aWRlPSIxIiBpZD0idjRsMi1wbGFuZSI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfcGxhbmU8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iNCI+CisgICAgICAgICZjcy11c3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmJ5dGVzdXNlZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgbnVtYmVyIG9mIGJ5dGVzIG9jY3VwaWVkIGJ5IGRhdGEgaW4gdGhlIHBsYW5lCisJICAgICAgKGl0cyBwYXlsb2FkKS4gRHJpdmVycyBtdXN0IHNldCB0aGlzIGZpZWxkIHdoZW4gPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPgorCSAgICAgIHJlZmVycyB0byBhbiBpbnB1dCBzdHJlYW0sIGFwcGxpY2F0aW9ucyB3aGVuIGl0IHJlZmVycyB0byBhbiBvdXRwdXQgc3RyZWFtLgorCSAgICAgIElmIHRoZSBhcHBsaWNhdGlvbiBzZXRzIHRoaXMgdG8gMCBmb3IgYW4gb3V0cHV0IHN0cmVhbSwgdGhlbgorCSAgICAgIDxzdHJ1Y3RmaWVsZD5ieXRlc3VzZWQ8L3N0cnVjdGZpZWxkPiB3aWxsIGJlIHNldCB0byB0aGUgc2l6ZSBvZiB0aGUKKwkgICAgICBwbGFuZSAoc2VlIHRoZSA8c3RydWN0ZmllbGQ+bGVuZ3RoPC9zdHJ1Y3RmaWVsZD4gZmllbGQgb2YgdGhpcyBzdHJ1Y3QpCisJICAgICAgYnkgdGhlIGRyaXZlci4gTm90ZSB0aGF0IHRoZSBhY3R1YWwgaW1hZ2UgZGF0YSBzdGFydHMgYXQKKwkgICAgICA8c3RydWN0ZmllbGQ+ZGF0YV9vZmZzZXQ8L3N0cnVjdGZpZWxkPiB3aGljaCBtYXkgbm90IGJlIDAuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5sZW5ndGg8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+U2l6ZSBpbiBieXRlcyBvZiB0aGUgcGxhbmUgKG5vdCBpdHMgcGF5bG9hZCkuIFRoaXMgaXMgc2V0IGJ5IHRoZSBkcml2ZXIKKwkgICAgYmFzZWQgb24gdGhlIGNhbGxzIHRvICZWSURJT0MtUkVRQlVGUzsgYW5kL29yICZWSURJT0MtQ1JFQVRFLUJVRlM7LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT51bmlvbjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+bTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5tZW1fb2Zmc2V0PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+V2hlbiB0aGUgbWVtb3J5IHR5cGUgaW4gdGhlIGNvbnRhaW5pbmcgJnY0bDItYnVmZmVyOyBpcworCSAgICAgIDxjb25zdGFudD5WNEwyX01FTU9SWV9NTUFQPC9jb25zdGFudD4sIHRoaXMgaXMgdGhlIHZhbHVlIHRoYXQKKwkgICAgICBzaG91bGQgYmUgcGFzc2VkIHRvICZmdW5jLW1tYXA7LCBzaW1pbGFyIHRvIHRoZQorCSAgICAgIDxzdHJ1Y3RmaWVsZD5vZmZzZXQ8L3N0cnVjdGZpZWxkPiBmaWVsZCBpbiAmdjRsMi1idWZmZXI7LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+dW5zaWduZWQgbG9uZzwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dXNlcnB0cjwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PldoZW4gdGhlIG1lbW9yeSB0eXBlIGluIHRoZSBjb250YWluaW5nICZ2NGwyLWJ1ZmZlcjsgaXMKKwkgICAgICA8Y29uc3RhbnQ+VjRMMl9NRU1PUllfVVNFUlBUUjwvY29uc3RhbnQ+LCB0aGlzIGlzIGEgdXNlcnNwYWNlCisJICAgICAgcG9pbnRlciB0byB0aGUgbWVtb3J5IGFsbG9jYXRlZCBmb3IgdGhpcyBwbGFuZSBieSBhbiBhcHBsaWNhdGlvbi4KKwkgICAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmludDwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZmQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5XaGVuIHRoZSBtZW1vcnkgdHlwZSBpbiB0aGUgY29udGFpbmluZyAmdjRsMi1idWZmZXI7IGlzCisJCTxjb25zdGFudD5WNEwyX01FTU9SWV9ETUFCVUY8L2NvbnN0YW50PiwgdGhpcyBpcyBhIGZpbGUKKwkJZGVzY3JpcHRvciBhc3NvY2lhdGVkIHdpdGggYSBETUFCVUYgYnVmZmVyLCBzaW1pbGFyIHRvIHRoZQorCQk8c3RydWN0ZmllbGQ+ZmQ8L3N0cnVjdGZpZWxkPiBmaWVsZCBpbiAmdjRsMi1idWZmZXI7LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZGF0YV9vZmZzZXQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+T2Zmc2V0IGluIGJ5dGVzIHRvIHZpZGVvIGRhdGEgaW4gdGhlIHBsYW5lLgorCSAgICAgIERyaXZlcnMgbXVzdCBzZXQgdGhpcyBmaWVsZCB3aGVuIDxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4KKwkgICAgICByZWZlcnMgdG8gYW4gaW5wdXQgc3RyZWFtLCBhcHBsaWNhdGlvbnMgd2hlbiBpdCByZWZlcnMgdG8gYW4gb3V0cHV0IHN0cmVhbS4KKwkgICAgICBOb3RlIHRoYXQgZGF0YV9vZmZzZXQgaXMgaW5jbHVkZWQgaW4gPHN0cnVjdGZpZWxkPmJ5dGVzdXNlZDwvc3RydWN0ZmllbGQ+LgorCSAgICAgIFNvIHRoZSBzaXplIG9mIHRoZSBpbWFnZSBpbiB0aGUgcGxhbmUgaXMKKwkgICAgICA8c3RydWN0ZmllbGQ+Ynl0ZXN1c2VkPC9zdHJ1Y3RmaWVsZD4tPHN0cnVjdGZpZWxkPmRhdGFfb2Zmc2V0PC9zdHJ1Y3RmaWVsZD4gYXQKKwkgICAgICBvZmZzZXQgPHN0cnVjdGZpZWxkPmRhdGFfb2Zmc2V0PC9zdHJ1Y3RmaWVsZD4gZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHBsYW5lLgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJlc2VydmVkWzExXTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5SZXNlcnZlZCBmb3IgZnV0dXJlIHVzZS4gU2hvdWxkIGJlIHplcm9lZCBieSBkcml2ZXJzIGFuZAorCSAgICBhcHBsaWNhdGlvbnMuPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIGZyYW1lPSJub25lIiBwZ3dpZGU9IjEiIGlkPSJ2NGwyLWJ1Zi10eXBlIj4KKyAgICAgIDx0aXRsZT5lbnVtIHY0bDJfYnVmX3R5cGU8L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3MtZGVmOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjE8L2VudHJ5PgorCSAgICA8ZW50cnk+QnVmZmVyIG9mIGEgc2luZ2xlLXBsYW5hciB2aWRlbyBjYXB0dXJlIHN0cmVhbSwgc2VlIDx4cmVmCisJCWxpbmtlbmQ9ImNhcHR1cmUiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFX01QTEFORTwvY29uc3RhbnQ+CisJICAgIDwvZW50cnk+CisJICAgIDxlbnRyeT45PC9lbnRyeT4KKwkgICAgPGVudHJ5PkJ1ZmZlciBvZiBhIG11bHRpLXBsYW5hciB2aWRlbyBjYXB0dXJlIHN0cmVhbSwgc2VlIDx4cmVmCisJCWxpbmtlbmQ9ImNhcHR1cmUiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4yPC9lbnRyeT4KKwkgICAgPGVudHJ5PkJ1ZmZlciBvZiBhIHNpbmdsZS1wbGFuYXIgdmlkZW8gb3V0cHV0IHN0cmVhbSwgc2VlIDx4cmVmCisJCWxpbmtlbmQ9Im91dHB1dCIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVF9NUExBTkU8L2NvbnN0YW50PgorCSAgICA8L2VudHJ5PgorCSAgICA8ZW50cnk+MTA8L2VudHJ5PgorCSAgICA8ZW50cnk+QnVmZmVyIG9mIGEgbXVsdGktcGxhbmFyIHZpZGVvIG91dHB1dCBzdHJlYW0sIHNlZSA8eHJlZgorCQlsaW5rZW5kPSJvdXRwdXQiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9WSURFT19PVkVSTEFZPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MzwvZW50cnk+CisJICAgIDxlbnRyeT5CdWZmZXIgZm9yIHZpZGVvIG92ZXJsYXksIHNlZSA8eHJlZiBsaW5rZW5kPSJvdmVybGF5IiAvPi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVkJJX0NBUFRVUkU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT40PC9lbnRyeT4KKwkgICAgPGVudHJ5PkJ1ZmZlciBvZiBhIHJhdyBWQkkgY2FwdHVyZSBzdHJlYW0sIHNlZSA8eHJlZgorCQlsaW5rZW5kPSJyYXctdmJpIiAvPi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVkJJX09VVFBVVDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjU8L2VudHJ5PgorCSAgICA8ZW50cnk+QnVmZmVyIG9mIGEgcmF3IFZCSSBvdXRwdXQgc3RyZWFtLCBzZWUgPHhyZWYKKwkJbGlua2VuZD0icmF3LXZiaSIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1NMSUNFRF9WQklfQ0FQVFVSRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjY8L2VudHJ5PgorCSAgICA8ZW50cnk+QnVmZmVyIG9mIGEgc2xpY2VkIFZCSSBjYXB0dXJlIHN0cmVhbSwgc2VlIDx4cmVmCisJCWxpbmtlbmQ9InNsaWNlZCIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1NMSUNFRF9WQklfT1VUUFVUPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+NzwvZW50cnk+CisJICAgIDxlbnRyeT5CdWZmZXIgb2YgYSBzbGljZWQgVkJJIG91dHB1dCBzdHJlYW0sIHNlZSA8eHJlZgorCQlsaW5rZW5kPSJzbGljZWQiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVRfT1ZFUkxBWTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pjg8L2VudHJ5PgorCSAgICA8ZW50cnk+QnVmZmVyIGZvciB2aWRlbyBvdXRwdXQgb3ZlcmxheSAoT1NEKSwgc2VlIDx4cmVmCisJCWxpbmtlbmQ9Im9zZCIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1NEUl9DQVBUVVJFPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MTE8L2VudHJ5PgorCSAgICA8ZW50cnk+QnVmZmVyIGZvciBTb2Z0d2FyZSBEZWZpbmVkIFJhZGlvIChTRFIpIGNhcHR1cmUgc3RyZWFtLCBzZWUKKwkJPHhyZWYgbGlua2VuZD0ic2RyIiAvPi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfU0RSX09VVFBVVDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjEyPC9lbnRyeT4KKwkgICAgPGVudHJ5PkJ1ZmZlciBmb3IgU29mdHdhcmUgRGVmaW5lZCBSYWRpbyAoU0RSKSBvdXRwdXQgc3RyZWFtLCBzZWUKKwkJPHhyZWYgbGlua2VuZD0ic2RyIiAvPi48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgZnJhbWU9Im5vbmUiIHBnd2lkZT0iMSIgaWQ9ImJ1ZmZlci1mbGFncyI+CisgICAgICA8dGl0bGU+QnVmZmVyIEZsYWdzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0JVRl9GTEFHX01BUFBFRDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMDAwMDE8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGJ1ZmZlciByZXNpZGVzIGluIGRldmljZSBtZW1vcnkgYW5kIGhhcyBiZWVuIG1hcHBlZAoraW50byB0aGUgYXBwbGljYXRpb24ncyBhZGRyZXNzIHNwYWNlLCBzZWUgPHhyZWYgbGlua2VuZD0ibW1hcCIgLz4gZm9yIGRldGFpbHMuCitEcml2ZXJzIHNldCBvciBjbGVhciB0aGlzIGZsYWcgd2hlbiB0aGUKKzxsaW5rIGxpbmtlbmQ9InZpZGlvYy1xdWVyeWJ1ZiI+VklESU9DX1FVRVJZQlVGPC9saW5rPiwgPGxpbmsKKwkgIGxpbmtlbmQ9InZpZGlvYy1xYnVmIj5WSURJT0NfUUJVRjwvbGluaz4gb3IgPGxpbmsKKwkgIGxpbmtlbmQ9InZpZGlvYy1xYnVmIj5WSURJT0NfRFFCVUY8L2xpbms+IGlvY3RsIGlzIGNhbGxlZC4gU2V0IGJ5IHRoZSBkcml2ZXIuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0JVRl9GTEFHX1FVRVVFRDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMDAwMDI8L2VudHJ5PgorCSAgPGVudHJ5PkludGVybmFsbHkgZHJpdmVycyBtYWludGFpbiB0d28gYnVmZmVyIHF1ZXVlcywgYW4KK2luY29taW5nIGFuZCBvdXRnb2luZyBxdWV1ZS4gV2hlbiB0aGlzIGZsYWcgaXMgc2V0LCB0aGUgYnVmZmVyIGlzCitjdXJyZW50bHkgb24gdGhlIGluY29taW5nIHF1ZXVlLiBJdCBhdXRvbWF0aWNhbGx5IG1vdmVzIHRvIHRoZQorb3V0Z29pbmcgcXVldWUgYWZ0ZXIgdGhlIGJ1ZmZlciBoYXMgYmVlbiBmaWxsZWQgKGNhcHR1cmUgZGV2aWNlcykgb3IKK2Rpc3BsYXllZCAob3V0cHV0IGRldmljZXMpLiBEcml2ZXJzIHNldCBvciBjbGVhciB0aGlzIGZsYWcgd2hlbiB0aGUKKzxjb25zdGFudD5WSURJT0NfUVVFUllCVUY8L2NvbnN0YW50PiBpb2N0bCBpcyBjYWxsZWQuIEFmdGVyCisoc3VjY2Vzc2Z1bCkgY2FsbGluZyB0aGUgPGNvbnN0YW50PlZJRElPQ19RQlVGIDwvY29uc3RhbnQ+aW9jdGwgaXQgaXMKK2Fsd2F5cyBzZXQgYW5kIGFmdGVyIDxjb25zdGFudD5WSURJT0NfRFFCVUY8L2NvbnN0YW50PiBhbHdheXMKK2NsZWFyZWQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0JVRl9GTEFHX0RPTkU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDAwMDA0PC9lbnRyeT4KKwkgICAgPGVudHJ5PldoZW4gdGhpcyBmbGFnIGlzIHNldCwgdGhlIGJ1ZmZlciBpcyBjdXJyZW50bHkgb24KK3RoZSBvdXRnb2luZyBxdWV1ZSwgcmVhZHkgdG8gYmUgZGVxdWV1ZWQgZnJvbSB0aGUgZHJpdmVyLiBEcml2ZXJzIHNldAorb3IgY2xlYXIgdGhpcyBmbGFnIHdoZW4gdGhlIDxjb25zdGFudD5WSURJT0NfUVVFUllCVUY8L2NvbnN0YW50PiBpb2N0bAoraXMgY2FsbGVkLiBBZnRlciBjYWxsaW5nIHRoZSA8Y29uc3RhbnQ+VklESU9DX1FCVUY8L2NvbnN0YW50PiBvcgorPGNvbnN0YW50PlZJRElPQ19EUUJVRjwvY29uc3RhbnQ+IGl0IGlzIGFsd2F5cyBjbGVhcmVkLiBPZiBjb3Vyc2UgYQorYnVmZmVyIGNhbm5vdCBiZSBvbiBib3RoIHF1ZXVlcyBhdCB0aGUgc2FtZSB0aW1lLCB0aGUKKzxjb25zdGFudD5WNEwyX0JVRl9GTEFHX1FVRVVFRDwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlY0TDJfQlVGX0ZMQUdfRE9ORTwvY29uc3RhbnQ+IGZsYWcgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4KK1RoZXkgY2FuIGJlIGJvdGggY2xlYXJlZCBob3dldmVyLCB0aGVuIHRoZSBidWZmZXIgaXMgaW4gImRlcXVldWVkIgorc3RhdGUsIGluIHRoZSBhcHBsaWNhdGlvbiBkb21haW4gc28gdG8gc2F5LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9CVUZfRkxBR19FUlJPUjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMDAwNDA8L2VudHJ5PgorCSAgICA8ZW50cnk+V2hlbiB0aGlzIGZsYWcgaXMgc2V0LCB0aGUgYnVmZmVyIGhhcyBiZWVuIGRlcXVldWVkCisJICAgIHN1Y2Nlc3NmdWxseSwgYWx0aG91Z2ggdGhlIGRhdGEgbWlnaHQgaGF2ZSBiZWVuIGNvcnJ1cHRlZC4KKwkgICAgVGhpcyBpcyByZWNvdmVyYWJsZSwgc3RyZWFtaW5nIG1heSBjb250aW51ZSBhcyBub3JtYWwgYW5kCisJICAgIHRoZSBidWZmZXIgbWF5IGJlIHJldXNlZCBub3JtYWxseS4KKwkgICAgRHJpdmVycyBzZXQgdGhpcyBmbGFnIHdoZW4gdGhlIDxjb25zdGFudD5WSURJT0NfRFFCVUY8L2NvbnN0YW50PgorCSAgICBpb2N0bCBpcyBjYWxsZWQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0JVRl9GTEFHX0tFWUZSQU1FPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAwMDAwODwvZW50cnk+CisJICA8ZW50cnk+RHJpdmVycyBzZXQgb3IgY2xlYXIgdGhpcyBmbGFnIHdoZW4gY2FsbGluZyB0aGUKKzxjb25zdGFudD5WSURJT0NfRFFCVUY8L2NvbnN0YW50PiBpb2N0bC4gSXQgbWF5IGJlIHNldCBieSB2aWRlbworY2FwdHVyZSBkZXZpY2VzIHdoZW4gdGhlIGJ1ZmZlciBjb250YWlucyBhIGNvbXByZXNzZWQgaW1hZ2Ugd2hpY2ggaXMgYQora2V5IGZyYW1lIChvciBmaWVsZCksICZpZTsgY2FuIGJlIGRlY29tcHJlc3NlZCBvbiBpdHMgb3duLiBBbHNvIGtub3duIGFzCithbiBJLWZyYW1lLiAgQXBwbGljYXRpb25zIGNhbiBzZXQgdGhpcyBiaXQgd2hlbiA8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+CityZWZlcnMgdG8gYW4gb3V0cHV0IHN0cmVhbS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQlVGX0ZMQUdfUEZSQU1FPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAwMDAxMDwvZW50cnk+CisJICAgIDxlbnRyeT5TaW1pbGFyIHRvIDxjb25zdGFudD5WNEwyX0JVRl9GTEFHX0tFWUZSQU1FPC9jb25zdGFudD4KK3RoaXMgZmxhZ3MgcHJlZGljdGVkIGZyYW1lcyBvciBmaWVsZHMgd2hpY2ggY29udGFpbiBvbmx5IGRpZmZlcmVuY2VzIHRvIGEKK3ByZXZpb3VzIGtleSBmcmFtZS4gQXBwbGljYXRpb25zIGNhbiBzZXQgdGhpcyBiaXQgd2hlbiA8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+CityZWZlcnMgdG8gYW4gb3V0cHV0IHN0cmVhbS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQlVGX0ZMQUdfQkZSQU1FPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAwMDAyMDwvZW50cnk+CisJICAgIDxlbnRyeT5TaW1pbGFyIHRvIDxjb25zdGFudD5WNEwyX0JVRl9GTEFHX0tFWUZSQU1FPC9jb25zdGFudD4KK3RoaXMgZmxhZ3MgYSBiaS1kaXJlY3Rpb25hbCBwcmVkaWN0ZWQgZnJhbWUgb3IgZmllbGQgd2hpY2ggY29udGFpbnMgb25seQordGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGN1cnJlbnQgZnJhbWUgYW5kIGJvdGggdGhlIHByZWNlZGluZyBhbmQgZm9sbG93aW5nCitrZXkgZnJhbWVzIHRvIHNwZWNpZnkgaXRzIGNvbnRlbnQuIEFwcGxpY2F0aW9ucyBjYW4gc2V0IHRoaXMgYml0IHdoZW4KKzxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gcmVmZXJzIHRvIGFuIG91dHB1dCBzdHJlYW0uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0JVRl9GTEFHX1RJTUVDT0RFPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAwMDEwMDwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgPHN0cnVjdGZpZWxkPnRpbWVjb2RlPC9zdHJ1Y3RmaWVsZD4gZmllbGQgaXMgdmFsaWQuCitEcml2ZXJzIHNldCBvciBjbGVhciB0aGlzIGZsYWcgd2hlbiB0aGUgPGNvbnN0YW50PlZJRElPQ19EUUJVRjwvY29uc3RhbnQ+Citpb2N0bCBpcyBjYWxsZWQuICBBcHBsaWNhdGlvbnMgY2FuIHNldCB0aGlzIGJpdCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcKKzxzdHJ1Y3RmaWVsZD50aW1lY29kZTwvc3RydWN0ZmllbGQ+IHN0cnVjdHVyZSB3aGVuIDxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4KK3JlZmVycyB0byBhbiBvdXRwdXQgc3RyZWFtLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9CVUZfRkxBR19QUkVQQVJFRDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMDA0MDA8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGJ1ZmZlciBoYXMgYmVlbiBwcmVwYXJlZCBmb3IgSS9PIGFuZCBjYW4gYmUgcXVldWVkIGJ5IHRoZQorYXBwbGljYXRpb24uIERyaXZlcnMgc2V0IG9yIGNsZWFyIHRoaXMgZmxhZyB3aGVuIHRoZQorPGxpbmsgbGlua2VuZD0idmlkaW9jLXF1ZXJ5YnVmIj5WSURJT0NfUVVFUllCVUY8L2xpbms+LCA8bGluaworCSAgbGlua2VuZD0idmlkaW9jLXFidWYiPlZJRElPQ19QUkVQQVJFX0JVRjwvbGluaz4sIDxsaW5rCisJICBsaW5rZW5kPSJ2aWRpb2MtcWJ1ZiI+VklESU9DX1FCVUY8L2xpbms+IG9yIDxsaW5rCisJICBsaW5rZW5kPSJ2aWRpb2MtcWJ1ZiI+VklESU9DX0RRQlVGPC9saW5rPiBpb2N0bCBpcyBjYWxsZWQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0JVRl9GTEFHX05PX0NBQ0hFX0lOVkFMSURBVEU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDAwODAwPC9lbnRyeT4KKwkgICAgPGVudHJ5PkNhY2hlcyBkbyBub3QgaGF2ZSB0byBiZSBpbnZhbGlkYXRlZCBmb3IgdGhpcyBidWZmZXIuCitUeXBpY2FsbHkgYXBwbGljYXRpb25zIHNoYWxsIHVzZSB0aGlzIGZsYWcgaWYgdGhlIGRhdGEgY2FwdHVyZWQgaW4gdGhlIGJ1ZmZlcgoraXMgbm90IGdvaW5nIHRvIGJlIHRvdWNoZWQgYnkgdGhlIENQVSwgaW5zdGVhZCB0aGUgYnVmZmVyIHdpbGwsIHByb2JhYmx5LCBiZQorcGFzc2VkIG9uIHRvIGEgRE1BLWNhcGFibGUgaGFyZHdhcmUgdW5pdCBmb3IgZnVydGhlciBwcm9jZXNzaW5nIG9yIG91dHB1dC4KKzwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9CVUZfRkxBR19OT19DQUNIRV9DTEVBTjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMDEwMDA8L2VudHJ5PgorCSAgICA8ZW50cnk+Q2FjaGVzIGRvIG5vdCBoYXZlIHRvIGJlIGNsZWFuZWQgZm9yIHRoaXMgYnVmZmVyLgorVHlwaWNhbGx5IGFwcGxpY2F0aW9ucyBzaGFsbCB1c2UgdGhpcyBmbGFnIGZvciBvdXRwdXQgYnVmZmVycyBpZiB0aGUgZGF0YQoraW4gdGhpcyBidWZmZXIgaGFzIG5vdCBiZWVuIGNyZWF0ZWQgYnkgdGhlIENQVSBidXQgYnkgc29tZSBETUEtY2FwYWJsZSB1bml0LAoraW4gd2hpY2ggY2FzZSBjYWNoZXMgaGF2ZSBub3QgYmVlbiB1c2VkLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9CVUZfRkxBR19MQVNUPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDEwMDAwMDwvZW50cnk+CisJICAgIDxlbnRyeT5MYXN0IGJ1ZmZlciBwcm9kdWNlZCBieSB0aGUgaGFyZHdhcmUuIG1lbTJtZW0gY29kZWMgZHJpdmVycworc2V0IHRoaXMgZmxhZyBvbiB0aGUgY2FwdHVyZSBxdWV1ZSBmb3IgdGhlIGxhc3QgYnVmZmVyIHdoZW4gdGhlCis8bGluayBsaW5rZW5kPSJ2aWRpb2MtcXVlcnlidWYiPlZJRElPQ19RVUVSWUJVRjwvbGluaz4gb3IKKzxsaW5rIGxpbmtlbmQ9InZpZGlvYy1xYnVmIj5WSURJT0NfRFFCVUY8L2xpbms+IGlvY3RsIGlzIGNhbGxlZC4gRHVlIHRvIGhhcmR3YXJlCitsaW1pdGF0aW9ucywgdGhlIGxhc3QgYnVmZmVyIG1heSBiZSBlbXB0eS4gSW4gdGhpcyBjYXNlIHRoZSBkcml2ZXIgd2lsbCBzZXQgdGhlCis8c3RydWN0ZmllbGQ+Ynl0ZXN1c2VkPC9zdHJ1Y3RmaWVsZD4gZmllbGQgdG8gMCwgcmVnYXJkbGVzcyBvZiB0aGUgZm9ybWF0LiBBbnkKK0FueSBzdWJzZXF1ZW50IGNhbGwgdG8gdGhlIDxsaW5rIGxpbmtlbmQ9InZpZGlvYy1xYnVmIj5WSURJT0NfRFFCVUY8L2xpbms+IGlvY3RsCit3aWxsIG5vdCBibG9jayBhbnltb3JlLCBidXQgcmV0dXJuIGFuICZFUElQRTsuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0JVRl9GTEFHX1RJTUVTVEFNUF9NQVNLPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAwZTAwMDwvZW50cnk+CisJICAgIDxlbnRyeT5NYXNrIGZvciB0aW1lc3RhbXAgdHlwZXMgYmVsb3cuIFRvIHRlc3QgdGhlCisJICAgIHRpbWVzdGFtcCB0eXBlLCBtYXNrIG91dCBiaXRzIG5vdCBiZWxvbmdpbmcgdG8gdGltZXN0YW1wCisJICAgIHR5cGUgYnkgcGVyZm9ybWluZyBhIGxvZ2ljYWwgYW5kIG9wZXJhdGlvbiB3aXRoIGJ1ZmZlcgorCSAgICBmbGFncyBhbmQgdGltZXN0YW1wIG1hc2suPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0JVRl9GTEFHX1RJTUVTVEFNUF9VTktOT1dOPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAwMDAwMDwvZW50cnk+CisJICAgIDxlbnRyeT5Vbmtub3duIHRpbWVzdGFtcCB0eXBlLiBUaGlzIHR5cGUgaXMgdXNlZCBieQorCSAgICBkcml2ZXJzIGJlZm9yZSBMaW51eCAzLjkgYW5kIG1heSBiZSBlaXRoZXIgbW9ub3RvbmljIChzZWUKKwkgICAgYmVsb3cpIG9yIHJlYWx0aW1lICh3YWxsIGNsb2NrKS4gTW9ub3RvbmljIGNsb2NrIGhhcyBiZWVuCisJICAgIGZhdm91cmVkIGluIGVtYmVkZGVkIHN5c3RlbXMgd2hlcmVhcyBtb3N0IG9mIHRoZSBkcml2ZXJzCisJICAgIHVzZSB0aGUgcmVhbHRpbWUgY2xvY2suIEVpdGhlciBraW5kcyBvZiB0aW1lc3RhbXBzIGFyZQorCSAgICBhdmFpbGFibGUgaW4gdXNlciBzcGFjZSB2aWEKKwkgICAgPGZ1bmN0aW9uPmNsb2NrX2dldHRpbWUoMik8L2Z1bmN0aW9uPiB1c2luZyBjbG9jayBJRHMKKwkgICAgPGNvbnN0YW50PkNMT0NLX01PTk9UT05JQzwvY29uc3RhbnQ+IGFuZAorCSAgICA8Y29uc3RhbnQ+Q0xPQ0tfUkVBTFRJTUU8L2NvbnN0YW50PiwgcmVzcGVjdGl2ZWx5LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9CVUZfRkxBR19USU1FU1RBTVBfTU9OT1RPTklDPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAwMjAwMDwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgYnVmZmVyIHRpbWVzdGFtcCBoYXMgYmVlbiB0YWtlbiBmcm9tIHRoZQorCSAgICA8Y29uc3RhbnQ+Q0xPQ0tfTU9OT1RPTklDPC9jb25zdGFudD4gY2xvY2suIFRvIGFjY2VzcyB0aGUKKwkgICAgc2FtZSBjbG9jayBvdXRzaWRlIFY0TDIsIHVzZQorCSAgICA8ZnVuY3Rpb24+Y2xvY2tfZ2V0dGltZSgyKTwvZnVuY3Rpb24+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9CVUZfRkxBR19USU1FU1RBTVBfQ09QWTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMDQwMDA8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIENBUFRVUkUgYnVmZmVyIHRpbWVzdGFtcCBoYXMgYmVlbiB0YWtlbiBmcm9tIHRoZQorCSAgICBjb3JyZXNwb25kaW5nIE9VVFBVVCBidWZmZXIuIFRoaXMgZmxhZyBhcHBsaWVzIG9ubHkgdG8gbWVtMm1lbSBkZXZpY2VzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9CVUZfRkxBR19UU1RBTVBfU1JDX01BU0s8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDcwMDAwPC9lbnRyeT4KKwkgICAgPGVudHJ5Pk1hc2sgZm9yIHRpbWVzdGFtcCBzb3VyY2VzIGJlbG93LiBUaGUgdGltZXN0YW1wIHNvdXJjZQorCSAgICBkZWZpbmVzIHRoZSBwb2ludCBvZiB0aW1lIHRoZSB0aW1lc3RhbXAgaXMgdGFrZW4gaW4gcmVsYXRpb24gdG8KKwkgICAgdGhlIGZyYW1lLiBMb2dpY2FsICdhbmQnIG9wZXJhdGlvbiBiZXR3ZWVuIHRoZQorCSAgICA8c3RydWN0ZmllbGQ+ZmxhZ3M8L3N0cnVjdGZpZWxkPiBmaWVsZCBhbmQKKwkgICAgPGNvbnN0YW50PlY0TDJfQlVGX0ZMQUdfVFNUQU1QX1NSQ19NQVNLPC9jb25zdGFudD4gcHJvZHVjZXMgdGhlCisJICAgIHZhbHVlIG9mIHRoZSB0aW1lc3RhbXAgc291cmNlLiBBcHBsaWNhdGlvbnMgbXVzdCBzZXQgdGhlIHRpbWVzdGFtcAorCSAgICBzb3VyY2Ugd2hlbiA8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IHJlZmVycyB0byBhbiBvdXRwdXQgc3RyZWFtCisJICAgIGFuZCA8Y29uc3RhbnQ+VjRMMl9CVUZfRkxBR19USU1FU1RBTVBfQ09QWTwvY29uc3RhbnQ+IGlzIHNldC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQlVGX0ZMQUdfVFNUQU1QX1NSQ19FT0Y8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDAwMDAwPC9lbnRyeT4KKwkgICAgPGVudHJ5PkVuZCBPZiBGcmFtZS4gVGhlIGJ1ZmZlciB0aW1lc3RhbXAgaGFzIGJlZW4gdGFrZW4KKwkgICAgd2hlbiB0aGUgbGFzdCBwaXhlbCBvZiB0aGUgZnJhbWUgaGFzIGJlZW4gcmVjZWl2ZWQgb3IgdGhlCisJICAgIGxhc3QgcGl4ZWwgb2YgdGhlIGZyYW1lIGhhcyBiZWVuIHRyYW5zbWl0dGVkLiBJbiBwcmFjdGljZSwKKwkgICAgc29mdHdhcmUgZ2VuZXJhdGVkIHRpbWVzdGFtcHMgd2lsbCB0eXBpY2FsbHkgYmUgcmVhZCBmcm9tCisJICAgIHRoZSBjbG9jayBhIHNtYWxsIGFtb3VudCBvZiB0aW1lIGFmdGVyIHRoZSBsYXN0IHBpeGVsIGhhcworCSAgICBiZWVuIHJlY2VpdmVkIG9yIHRyYW5zbWl0dGVuLCBkZXBlbmRpbmcgb24gdGhlIHN5c3RlbSBhbmQKKwkgICAgb3RoZXIgYWN0aXZpdHkgaW4gaXQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0JVRl9GTEFHX1RTVEFNUF9TUkNfU09FPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAxMDAwMDwvZW50cnk+CisJICAgIDxlbnRyeT5TdGFydCBPZiBFeHBvc3VyZS4gVGhlIGJ1ZmZlciB0aW1lc3RhbXAgaGFzIGJlZW4KKwkgICAgdGFrZW4gd2hlbiB0aGUgZXhwb3N1cmUgb2YgdGhlIGZyYW1lIGhhcyBiZWd1bi4gVGhpcyBpcworCSAgICBvbmx5IHZhbGlkIGZvciB0aGUKKwkgICAgPGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTwvY29uc3RhbnQ+IGJ1ZmZlcgorCSAgICB0eXBlLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1tZW1vcnkiPgorICAgICAgPHRpdGxlPmVudW0gdjRsMl9tZW1vcnk8L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3MtZGVmOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfTUVNT1JZX01NQVA8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4xPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBidWZmZXIgaXMgdXNlZCBmb3IgPGxpbmsgbGlua2VuZD0ibW1hcCI+bWVtb3J5CittYXBwaW5nPC9saW5rPiBJL08uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01FTU9SWV9VU0VSUFRSPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgYnVmZmVyIGlzIHVzZWQgZm9yIDxsaW5rIGxpbmtlbmQ9InVzZXJwIj51c2VyCitwb2ludGVyPC9saW5rPiBJL08uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01FTU9SWV9PVkVSTEFZPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MzwvZW50cnk+CisJICAgIDxlbnRyeT5bdG8gZG9dPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01FTU9SWV9ETUFCVUY8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT40PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBidWZmZXIgaXMgdXNlZCBmb3IgPGxpbmsgbGlua2VuZD0iZG1hYnVmIj5ETUEgc2hhcmVkCitidWZmZXI8L2xpbms+IEkvTy48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5UaW1lY29kZXM8L3RpdGxlPgorCisgICAgICA8cGFyYT5UaGUgPHN0cnVjdG5hbWU+djRsMl90aW1lY29kZTwvc3RydWN0bmFtZT4gc3RydWN0dXJlIGlzCitkZXNpZ25lZCB0byBob2xkIGEgPHhyZWYgbGlua2VuZD0ic21wdGUxMm0iIC8+IG9yIHNpbWlsYXIgdGltZWNvZGUuCisoc3RydWN0IDxzdHJ1Y3RuYW1lPnRpbWV2YWw8L3N0cnVjdG5hbWU+IHRpbWVzdGFtcHMgYXJlIHN0b3JlZCBpbgorJnY0bDItYnVmZmVyOyBmaWVsZCA8c3RydWN0ZmllbGQ+dGltZXN0YW1wPC9zdHJ1Y3RmaWVsZD4uKTwvcGFyYT4KKworICAgICAgPHRhYmxlIGZyYW1lPSJub25lIiBwZ3dpZGU9IjEiIGlkPSJ2NGwyLXRpbWVjb2RlIj4KKwk8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfdGltZWNvZGU8L3N0cnVjdG5hbWU+PC90aXRsZT4KKwk8dGdyb3VwIGNvbHM9IjMiPgorCSAgJmNzLXN0cjsKKwkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgICAgPGVudHJ5PkZyYW1lIHJhdGUgdGhlIHRpbWVjb2RlcyBhcmUgYmFzZWQgb24sIHNlZSA8eHJlZgorCQkgIGxpbmtlbmQ9InRpbWVjb2RlLXR5cGUiIC8+LjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5mbGFnczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+VGltZWNvZGUgZmxhZ3MsIHNlZSA8eHJlZiBsaW5rZW5kPSJ0aW1lY29kZS1mbGFncyIgLz4uPC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5Pl9fdTg8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZnJhbWVzPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5GcmFtZSBjb3VudCwgMCAuLi4gMjMvMjQvMjkvNDkvNTksIGRlcGVuZGluZyBvbiB0aGUKKwkgICAgdHlwZSBvZiB0aW1lY29kZS48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+X191ODwvZW50cnk+CisJICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5zZWNvbmRzPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5TZWNvbmRzIGNvdW50LCAwIC4uLiA1OS4gVGhpcyBpcyBhIGJpbmFyeSwgbm90IEJDRCBudW1iZXIuPC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5Pl9fdTg8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+bWludXRlczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+TWludXRlcyBjb3VudCwgMCAuLi4gNTkuIFRoaXMgaXMgYSBiaW5hcnksIG5vdCBCQ0QgbnVtYmVyLjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT5fX3U4PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmhvdXJzPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5Ib3VycyBjb3VudCwgMCAuLi4gMjkuIFRoaXMgaXMgYSBiaW5hcnksIG5vdCBCQ0QgbnVtYmVyLjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT5fX3U4PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnVzZXJiaXRzPC9zdHJ1Y3RmaWVsZD5bNF08L2VudHJ5PgorCSAgICAgIDxlbnRyeT5UaGUgInVzZXIgZ3JvdXAiIGJpdHMgZnJvbSB0aGUgdGltZWNvZGUuPC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICA8L3Rib2R5PgorCTwvdGdyb3VwPgorICAgICAgPC90YWJsZT4KKworICAgICAgPHRhYmxlIGZyYW1lPSJub25lIiBwZ3dpZGU9IjEiIGlkPSJ0aW1lY29kZS10eXBlIj4KKwk8dGl0bGU+VGltZWNvZGUgVHlwZXM8L3RpdGxlPgorCTx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1RDX1RZUEVfMjRGUFM8L2NvbnN0YW50PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjE8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4yNCBmcmFtZXMgcGVyIHNlY29uZCwgaS4mbmJzcDtlLiBmaWxtLjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9UQ19UWVBFXzI1RlBTPC9jb25zdGFudD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT4yPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MjUgZnJhbWVzIHBlciBzZWNvbmQsICZpZTsgUEFMIG9yIFNFQ0FNIHZpZGVvLjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9UQ19UWVBFXzMwRlBTPC9jb25zdGFudD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT4zPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MzAgZnJhbWVzIHBlciBzZWNvbmQsICZpZTsgTlRTQyB2aWRlby48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfVENfVFlQRV81MEZQUzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+NDwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9UQ19UWVBFXzYwRlBTPC9jb25zdGFudD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT41PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICA8L3Rib2R5PgorCTwvdGdyb3VwPgorICAgICAgPC90YWJsZT4KKworICAgICAgPHRhYmxlIGZyYW1lPSJub25lIiBwZ3dpZGU9IjEiIGlkPSJ0aW1lY29kZS1mbGFncyI+CisJPHRpdGxlPlRpbWVjb2RlIEZsYWdzPC90aXRsZT4KKwk8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1kZWY7CisJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9UQ19GTEFHX0RST1BGUkFNRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgwMDAxPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+SW5kaWNhdGVzICJkcm9wIGZyYW1lIiBzZW1hbnRpY3MgZm9yIGNvdW50aW5nIGZyYW1lcworaW4gMjkuOTcgZnBzIG1hdGVyaWFsLiBXaGVuIHNldCwgZnJhbWUgbnVtYmVycyAwIGFuZCAxIGF0IHRoZSBzdGFydCBvZgorZWFjaCBtaW51dGUsIGV4Y2VwdCBtaW51dGVzIDAsIDEwLCAyMCwgMzAsIDQwLCA1MCBhcmUgb21pdHRlZCBmcm9tIHRoZQorY291bnQuPC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1RDX0ZMQUdfQ09MT1JGUkFNRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgwMDAyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+VGhlICJjb2xvciBmcmFtZSIgZmxhZy48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfVENfVVNFUkJJVFNfZmllbGQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MDAwQzwvZW50cnk+CisJICAgICAgPGVudHJ5PkZpZWxkIG1hc2sgZm9yIHRoZSAiYmluYXJ5IGdyb3VwIGZsYWdzIi48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfVENfVVNFUkJJVFNfVVNFUkRFRklORUQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MDAwMDwvZW50cnk+CisJICAgICAgPGVudHJ5PlVuc3BlY2lmaWVkIGZvcm1hdC48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfVENfVVNFUkJJVFNfOEJJVENIQVJTPC9jb25zdGFudD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT4weDAwMDg8L2VudHJ5PgorCSAgICAgIDxlbnRyeT44LWJpdCBJU08gY2hhcmFjdGVycy48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgIDwvdGJvZHk+CisJPC90Z3JvdXA+CisgICAgICA8L3RhYmxlPgorICAgIDwvc2VjdGlvbj4KKyAgPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uIGlkPSJmaWVsZC1vcmRlciI+CisgICAgPHRpdGxlPkZpZWxkIE9yZGVyPC90aXRsZT4KKworICAgIDxwYXJhPldlIGhhdmUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBwcm9ncmVzc2l2ZSBhbmQgaW50ZXJsYWNlZAordmlkZW8uIFByb2dyZXNzaXZlIHZpZGVvIHRyYW5zbWl0cyBhbGwgbGluZXMgb2YgYSB2aWRlbyBpbWFnZQorc2VxdWVudGlhbGx5LiBJbnRlcmxhY2VkIHZpZGVvIGRpdmlkZXMgYW4gaW1hZ2UgaW50byB0d28gZmllbGRzLAorY29udGFpbmluZyBvbmx5IHRoZSBvZGQgYW5kIGV2ZW4gbGluZXMgb2YgdGhlIGltYWdlLCByZXNwZWN0aXZlbHkuCitBbHRlcm5hdGluZyB0aGUgc28gY2FsbGVkIG9kZCBhbmQgZXZlbiBmaWVsZCBhcmUgdHJhbnNtaXR0ZWQsIGFuZCBkdWUKK3RvIGEgc21hbGwgZGVsYXkgYmV0d2VlbiBmaWVsZHMgYSBjYXRob2RlIHJheSBUViBkaXNwbGF5cyB0aGUgbGluZXMKK2ludGVybGVhdmVkLCB5aWVsZGluZyB0aGUgb3JpZ2luYWwgZnJhbWUuIFRoaXMgY3VyaW91cyB0ZWNobmlxdWUgd2FzCitpbnZlbnRlZCBiZWNhdXNlIGF0IHJlZnJlc2ggcmF0ZXMgc2ltaWxhciB0byBmaWxtIHRoZSBpbWFnZSB3b3VsZAorZmFkZSBvdXQgdG9vIHF1aWNrbHkuIFRyYW5zbWl0dGluZyBmaWVsZHMgcmVkdWNlcyB0aGUgZmxpY2tlciB3aXRob3V0Cit0aGUgbmVjZXNzaXR5IG9mIGRvdWJsaW5nIHRoZSBmcmFtZSByYXRlIGFuZCB3aXRoIGl0IHRoZSBiYW5kd2lkdGgKK3JlcXVpcmVkIGZvciBlYWNoIGNoYW5uZWwuPC9wYXJhPgorCisgICAgPHBhcmE+SXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgYSB2aWRlbyBjYW1lcmEgZG9lcyBub3QgZXhwb3NlCitvbmUgZnJhbWUgYXQgYSB0aW1lLCBtZXJlbHkgdHJhbnNtaXR0aW5nIHRoZSBmcmFtZXMgc2VwYXJhdGVkIGludG8KK2ZpZWxkcy4gVGhlIGZpZWxkcyBhcmUgaW4gZmFjdCBjYXB0dXJlZCBhdCB0d28gZGlmZmVyZW50IGluc3RhbmNlcyBpbgordGltZS4gQW4gb2JqZWN0IG9uIHNjcmVlbiBtYXkgd2VsbCBtb3ZlIGJldHdlZW4gb25lIGZpZWxkIGFuZCB0aGUKK25leHQuIEZvciBhcHBsaWNhdGlvbnMgYW5hbHlzaW5nIG1vdGlvbiBpdCBpcyBvZiBwYXJhbW91bnQgaW1wb3J0YW5jZQordG8gcmVjb2duaXplIHdoaWNoIGZpZWxkIG9mIGEgZnJhbWUgaXMgb2xkZXIsIHRoZSA8ZW1waGFzaXM+dGVtcG9yYWwKK29yZGVyPC9lbXBoYXNpcz4uPC9wYXJhPgorCisgICAgPHBhcmE+V2hlbiB0aGUgZHJpdmVyIHByb3ZpZGVzIG9yIGFjY2VwdHMgaW1hZ2VzIGZpZWxkIGJ5IGZpZWxkCityYXRoZXIgdGhhbiBpbnRlcmxlYXZlZCwgaXQgaXMgYWxzbyBpbXBvcnRhbnQgYXBwbGljYXRpb25zIHVuZGVyc3RhbmQKK2hvdyB0aGUgZmllbGRzIGNvbWJpbmUgdG8gZnJhbWVzLiBXZSBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRvcCAoYWthIG9kZCkgYW5kCitib3R0b20gKGFrYSBldmVuKSBmaWVsZHMsIHRoZSA8ZW1waGFzaXM+c3BhdGlhbCBvcmRlcjwvZW1waGFzaXM+OiBUaGUgZmlyc3QgbGluZQorb2YgdGhlIHRvcCBmaWVsZCBpcyB0aGUgZmlyc3QgbGluZSBvZiBhbiBpbnRlcmxhY2VkIGZyYW1lLCB0aGUgZmlyc3QKK2xpbmUgb2YgdGhlIGJvdHRvbSBmaWVsZCBpcyB0aGUgc2Vjb25kIGxpbmUgb2YgdGhhdCBmcmFtZS48L3BhcmE+CisKKyAgICA8cGFyYT5Ib3dldmVyIGJlY2F1c2UgZmllbGRzIHdlcmUgY2FwdHVyZWQgb25lIGFmdGVyIHRoZSBvdGhlciwKK2FyZ3Vpbmcgd2hldGhlciBhIGZyYW1lIGNvbW1lbmNlcyB3aXRoIHRoZSB0b3Agb3IgYm90dG9tIGZpZWxkIGlzCitwb2ludGxlc3MuIEFueSB0d28gc3VjY2Vzc2l2ZSB0b3AgYW5kIGJvdHRvbSwgb3IgYm90dG9tIGFuZCB0b3AgZmllbGRzCit5aWVsZCBhIHZhbGlkIGZyYW1lLiBPbmx5IHdoZW4gdGhlIHNvdXJjZSB3YXMgcHJvZ3Jlc3NpdmUgdG8gYmVnaW4KK3dpdGgsICZlZzsgd2hlbiB0cmFuc2ZlcnJpbmcgZmlsbSB0byB2aWRlbywgdHdvIGZpZWxkcyBtYXkgY29tZSBmcm9tCit0aGUgc2FtZSBmcmFtZSwgY3JlYXRpbmcgYSBuYXR1cmFsIG9yZGVyLjwvcGFyYT4KKworICAgIDxwYXJhPkNvdW50ZXIgdG8gaW50dWl0aW9uIHRoZSB0b3AgZmllbGQgaXMgbm90IG5lY2Vzc2FyaWx5IHRoZQorb2xkZXIgZmllbGQuIFdoZXRoZXIgdGhlIG9sZGVyIGZpZWxkIGNvbnRhaW5zIHRoZSB0b3Agb3IgYm90dG9tIGxpbmVzCitpcyBhIGNvbnZlbnRpb24gZGV0ZXJtaW5lZCBieSB0aGUgdmlkZW8gc3RhbmRhcmQuIEhlbmNlIHRoZQorZGlzdGluY3Rpb24gYmV0d2VlbiB0ZW1wb3JhbCBhbmQgc3BhdGlhbCBvcmRlciBvZiBmaWVsZHMuIFRoZSBkaWFncmFtcworYmVsb3cgc2hvdWxkIG1ha2UgdGhpcyBjbGVhcmVyLjwvcGFyYT4KKworICAgIDxwYXJhPkFsbCB2aWRlbyBjYXB0dXJlIGFuZCBvdXRwdXQgZGV2aWNlcyBtdXN0IHJlcG9ydCB0aGUgY3VycmVudAorZmllbGQgb3JkZXIuIFNvbWUgZHJpdmVycyBtYXkgcGVybWl0IHRoZSBzZWxlY3Rpb24gb2YgYSBkaWZmZXJlbnQKK29yZGVyLCB0byB0aGlzIGVuZCBhcHBsaWNhdGlvbnMgaW5pdGlhbGl6ZSB0aGUKKzxzdHJ1Y3RmaWVsZD5maWVsZDwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mICZ2NGwyLXBpeC1mb3JtYXQ7IGJlZm9yZQorY2FsbGluZyB0aGUgJlZJRElPQy1TLUZNVDsgaW9jdGwuIElmIHRoaXMgaXMgbm90IGRlc2lyZWQgaXQgc2hvdWxkCitoYXZlIHRoZSB2YWx1ZSA8Y29uc3RhbnQ+VjRMMl9GSUVMRF9BTlk8L2NvbnN0YW50PiAoMCkuPC9wYXJhPgorCisgICAgPHRhYmxlIGZyYW1lPSJub25lIiBwZ3dpZGU9IjEiIGlkPSJ2NGwyLWZpZWxkIj4KKyAgICAgIDx0aXRsZT5lbnVtIHY0bDJfZmllbGQ8L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3MtZGVmOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRklFTERfQU5ZPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgIDxlbnRyeT5BcHBsaWNhdGlvbnMgcmVxdWVzdCB0aGlzIGZpZWxkIG9yZGVyIHdoZW4gYW55CitvbmUgb2YgdGhlIDxjb25zdGFudD5WNEwyX0ZJRUxEX05PTkU8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WNEwyX0ZJRUxEX1RPUDwvY29uc3RhbnQ+LAorPGNvbnN0YW50PlY0TDJfRklFTERfQk9UVE9NPC9jb25zdGFudD4sIG9yCis8Y29uc3RhbnQ+VjRMMl9GSUVMRF9JTlRFUkxBQ0VEPC9jb25zdGFudD4gZm9ybWF0cyBpcyBhY2NlcHRhYmxlLgorRHJpdmVycyBjaG9vc2UgZGVwZW5kaW5nIG9uIGhhcmR3YXJlIGNhcGFiaWxpdGllcyBvciBlLiZuYnNwO2cuIHRoZQorcmVxdWVzdGVkIGltYWdlIHNpemUsIGFuZCByZXR1cm4gdGhlIGFjdHVhbCBmaWVsZCBvcmRlci4gRHJpdmVycyBtdXN0CituZXZlciByZXR1cm4gPGNvbnN0YW50PlY0TDJfRklFTERfQU5ZPC9jb25zdGFudD4uIElmIG11bHRpcGxlCitmaWVsZCBvcmRlcnMgYXJlIHBvc3NpYmxlIHRoZSBkcml2ZXIgbXVzdCBjaG9vc2Ugb25lIG9mIHRoZSBwb3NzaWJsZQorZmllbGQgb3JkZXJzIGR1cmluZyAmVklESU9DLVMtRk1UOyBvciAmVklESU9DLVRSWS1GTVQ7LiAmdjRsMi1idWZmZXI7Cis8c3RydWN0ZmllbGQ+ZmllbGQ8L3N0cnVjdGZpZWxkPiBjYW4gbmV2ZXIgYmUKKzxjb25zdGFudD5WNEwyX0ZJRUxEX0FOWTwvY29uc3RhbnQ+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9GSUVMRF9OT05FPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MTwvZW50cnk+CisJICAgIDxlbnRyeT5JbWFnZXMgYXJlIGluIHByb2dyZXNzaXZlIGZvcm1hdCwgbm90IGludGVybGFjZWQuCitUaGUgZHJpdmVyIG1heSBhbHNvIGluZGljYXRlIHRoaXMgb3JkZXIgd2hlbiBpdCBjYW5ub3QgZGlzdGluZ3Vpc2gKK2JldHdlZW4gPGNvbnN0YW50PlY0TDJfRklFTERfVE9QPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VjRMMl9GSUVMRF9CT1RUT008L2NvbnN0YW50Pi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRklFTERfVE9QPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MjwvZW50cnk+CisJICAgIDxlbnRyeT5JbWFnZXMgY29uc2lzdCBvZiB0aGUgdG9wIChha2Egb2RkKSBmaWVsZCBvbmx5LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9GSUVMRF9CT1RUT008L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4zPC9lbnRyeT4KKwkgICAgPGVudHJ5PkltYWdlcyBjb25zaXN0IG9mIHRoZSBib3R0b20gKGFrYSBldmVuKSBmaWVsZCBvbmx5LgorQXBwbGljYXRpb25zIG1heSB3aXNoIHRvIHByZXZlbnQgYSBkZXZpY2UgZnJvbSBjYXB0dXJpbmcgaW50ZXJsYWNlZAoraW1hZ2VzIGJlY2F1c2UgdGhleSB3aWxsIGhhdmUgImNvbWIiIG9yICJmZWF0aGVyaW5nIiBhcnRlZmFjdHMgYXJvdW5kCittb3Zpbmcgb2JqZWN0cy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRklFTERfSU5URVJMQUNFRDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjQ8L2VudHJ5PgorCSAgICA8ZW50cnk+SW1hZ2VzIGNvbnRhaW4gYm90aCBmaWVsZHMsIGludGVybGVhdmVkIGxpbmUgYnkKK2xpbmUuIFRoZSB0ZW1wb3JhbCBvcmRlciBvZiB0aGUgZmllbGRzICh3aGV0aGVyIHRoZSB0b3Agb3IgYm90dG9tCitmaWVsZCBpcyBmaXJzdCB0cmFuc21pdHRlZCkgZGVwZW5kcyBvbiB0aGUgY3VycmVudCB2aWRlbyBzdGFuZGFyZC4KK00vTlRTQyB0cmFuc21pdHMgdGhlIGJvdHRvbSBmaWVsZCBmaXJzdCwgYWxsIG90aGVyIHN0YW5kYXJkcyB0aGUgdG9wCitmaWVsZCBmaXJzdC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRklFTERfU0VRX1RCPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+NTwvZW50cnk+CisJICAgIDxlbnRyeT5JbWFnZXMgY29udGFpbiBib3RoIGZpZWxkcywgdGhlIHRvcCBmaWVsZCBsaW5lcworYXJlIHN0b3JlZCBmaXJzdCBpbiBtZW1vcnksIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IHRoZSBib3R0b20gZmllbGQKK2xpbmVzLiBGaWVsZHMgYXJlIGFsd2F5cyBzdG9yZWQgaW4gdGVtcG9yYWwgb3JkZXIsIHRoZSBvbGRlciBvbmUgZmlyc3QKK2luIG1lbW9yeS4gSW1hZ2Ugc2l6ZXMgcmVmZXIgdG8gdGhlIGZyYW1lLCBub3QgZmllbGRzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9GSUVMRF9TRVFfQlQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT42PC9lbnRyeT4KKwkgICAgPGVudHJ5PkltYWdlcyBjb250YWluIGJvdGggZmllbGRzLCB0aGUgYm90dG9tIGZpZWxkCitsaW5lcyBhcmUgc3RvcmVkIGZpcnN0IGluIG1lbW9yeSwgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgdGhlIHRvcAorZmllbGQgbGluZXMuIEZpZWxkcyBhcmUgYWx3YXlzIHN0b3JlZCBpbiB0ZW1wb3JhbCBvcmRlciwgdGhlIG9sZGVyIG9uZQorZmlyc3QgaW4gbWVtb3J5LiBJbWFnZSBzaXplcyByZWZlciB0byB0aGUgZnJhbWUsIG5vdCBmaWVsZHMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0ZJRUxEX0FMVEVSTkFURTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pjc8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIHR3byBmaWVsZHMgb2YgYSBmcmFtZSBhcmUgcGFzc2VkIGluIHNlcGFyYXRlCitidWZmZXJzLCBpbiB0ZW1wb3JhbCBvcmRlciwgJmllOyB0aGUgb2xkZXIgb25lIGZpcnN0LiBUbyBpbmRpY2F0ZSB0aGUgZmllbGQKK3Bhcml0eSAod2hldGhlciB0aGUgY3VycmVudCBmaWVsZCBpcyBhIHRvcCBvciBib3R0b20gZmllbGQpIHRoZSBkcml2ZXIKK29yIGFwcGxpY2F0aW9uLCBkZXBlbmRpbmcgb24gZGF0YSBkaXJlY3Rpb24sIG11c3Qgc2V0ICZ2NGwyLWJ1ZmZlcjsKKzxzdHJ1Y3RmaWVsZD5maWVsZDwvc3RydWN0ZmllbGQ+IHRvCis8Y29uc3RhbnQ+VjRMMl9GSUVMRF9UT1A8L2NvbnN0YW50PiBvcgorPGNvbnN0YW50PlY0TDJfRklFTERfQk9UVE9NPC9jb25zdGFudD4uIEFueSB0d28gc3VjY2Vzc2l2ZSBmaWVsZHMgcGFpcgordG8gYnVpbGQgYSBmcmFtZS4gSWYgZmllbGRzIGFyZSBzdWNjZXNzaXZlLCB3aXRob3V0IGFueSBkcm9wcGVkIGZpZWxkcworYmV0d2VlbiB0aGVtIChmaWVsZHMgY2FuIGRyb3AgaW5kaXZpZHVhbGx5KSwgY2FuIGJlIGRldGVybWluZWQgZnJvbQordGhlICZ2NGwyLWJ1ZmZlcjsgPHN0cnVjdGZpZWxkPnNlcXVlbmNlPC9zdHJ1Y3RmaWVsZD4gZmllbGQuIFRoaXMgZm9ybWF0CitjYW5ub3QgYmUgc2VsZWN0ZWQgd2hlbiB1c2luZyB0aGUgcmVhZC93cml0ZSBJL08gbWV0aG9kIHNpbmNlIHRoZXJlCitpcyBubyB3YXkgdG8gY29tbXVuaWNhdGUgaWYgYSBmaWVsZCB3YXMgYSB0b3Agb3IgYm90dG9tIGZpZWxkLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9GSUVMRF9JTlRFUkxBQ0VEX1RCPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+ODwvZW50cnk+CisJICAgIDxlbnRyeT5JbWFnZXMgY29udGFpbiBib3RoIGZpZWxkcywgaW50ZXJsZWF2ZWQgbGluZSBieQorbGluZSwgdG9wIGZpZWxkIGZpcnN0LiBUaGUgdG9wIGZpZWxkIGlzIHRyYW5zbWl0dGVkIGZpcnN0LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9GSUVMRF9JTlRFUkxBQ0VEX0JUPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+OTwvZW50cnk+CisJICAgIDxlbnRyeT5JbWFnZXMgY29udGFpbiBib3RoIGZpZWxkcywgaW50ZXJsZWF2ZWQgbGluZSBieQorbGluZSwgdG9wIGZpZWxkIGZpcnN0LiBUaGUgYm90dG9tIGZpZWxkIGlzIHRyYW5zbWl0dGVkIGZpcnN0LjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDxmaWd1cmUgaWQ9ImZpZWxkc2VxLXRiIj4KKwk8dGl0bGU+RmllbGQgT3JkZXIsIFRvcCBGaWVsZCBGaXJzdCBUcmFuc21pdHRlZDwvdGl0bGU+CisJPG1lZGlhb2JqZWN0PgorCSAgPGltYWdlb2JqZWN0PgorCSAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZWxkc2VxX3RiLnBkZiIgZm9ybWF0PSJQUyIgLz4KKwkgIDwvaW1hZ2VvYmplY3Q+CisJICA8aW1hZ2VvYmplY3Q+CisJICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmllbGRzZXFfdGIuZ2lmIiBmb3JtYXQ9IkdJRiIgLz4KKwkgIDwvaW1hZ2VvYmplY3Q+CisJPC9tZWRpYW9iamVjdD4KKyAgICA8L2ZpZ3VyZT4KKworICAgIDxmaWd1cmUgaWQ9ImZpZWxkc2VxLWJ0Ij4KKwk8dGl0bGU+RmllbGQgT3JkZXIsIEJvdHRvbSBGaWVsZCBGaXJzdCBUcmFuc21pdHRlZDwvdGl0bGU+CisJPG1lZGlhb2JqZWN0PgorCSAgPGltYWdlb2JqZWN0PgorCSAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZWxkc2VxX2J0LnBkZiIgZm9ybWF0PSJQUyIgLz4KKwkgIDwvaW1hZ2VvYmplY3Q+CisJICA8aW1hZ2VvYmplY3Q+CisJICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iZmllbGRzZXFfYnQuZ2lmIiBmb3JtYXQ9IkdJRiIgLz4KKwkgIDwvaW1hZ2VvYmplY3Q+CisJPC9tZWRpYW9iamVjdD4KKyAgICA8L2ZpZ3VyZT4KKyAgPC9zZWN0aW9uPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9rZXl0YWJsZS5jLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwva2V5dGFibGUuYy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDUzMjU0YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwva2V5dGFibGUuYy54bWwKQEAgLTAsMCArMSwxNzIgQEAKKzxwcm9ncmFtbGlzdGluZz4KKy8qIGtleXRhYmxlLmMgLSBUaGlzIHByb2dyYW0gYWxsb3dzIGNoZWNraW5nL3JlcGxhY2luZyBrZXlzIGF0IElSCisKKyAgIENvcHlyaWdodCAoQykgMjAwNi0yMDA5IE1hdXJvIENhcnZhbGhvIENoZWhhYiAmbHQ7bWNoZWhhYkBpbmZyYWRlYWQub3JnJmd0OworCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqLworCisjaW5jbHVkZSAmbHQ7Y3R5cGUuaCZndDsKKyNpbmNsdWRlICZsdDtlcnJuby5oJmd0OworI2luY2x1ZGUgJmx0O2ZjbnRsLmgmZ3Q7CisjaW5jbHVkZSAmbHQ7c3RkaW8uaCZndDsKKyNpbmNsdWRlICZsdDtzdGRsaWIuaCZndDsKKyNpbmNsdWRlICZsdDtzdHJpbmcuaCZndDsKKyNpbmNsdWRlICZsdDtsaW51eC9pbnB1dC5oJmd0OworI2luY2x1ZGUgJmx0O3N5cy9pb2N0bC5oJmd0OworCisjaW5jbHVkZSAicGFyc2UuaCIKKwordm9pZCBwcnRjb2RlIChpbnQgKmNvZGVzKQoreworICAgICAgICBzdHJ1Y3QgcGFyc2Vfa2V5ICpwOworCisgICAgICAgIGZvciAocD1rZXluYW1lcztwLSZndDtuYW1lIT1OVUxMO3ArKykgeworICAgICAgICAgICAgICAgIGlmIChwLSZndDt2YWx1ZSA9PSAodW5zaWduZWQpY29kZXNbMV0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50Zigic2NhbmNvZGUgMHglMDR4ID0gJXMgKDB4JTAyeClcbiIsIGNvZGVzWzBdLCBwLSZndDtuYW1lLCBjb2Rlc1sxXSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzcHJpbnQgKGNvZGVzWzFdKSkKKyAgICAgICAgICAgICAgICBwcmludGYoInNjYW5jb2RlICVkID0gJyVjJyAoMHglMDJ4KVxuIiwgY29kZXNbMF0sIGNvZGVzWzFdLCBjb2Rlc1sxXSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcmludGYoInNjYW5jb2RlICVkID0gMHglMDJ4XG4iLCBjb2Rlc1swXSwgY29kZXNbMV0pOworfQorCitpbnQgcGFyc2VfY29kZShjaGFyICpzdHJpbmcpCit7CisgICAgICAgIHN0cnVjdCBwYXJzZV9rZXkgKnA7CisKKyAgICAgICAgZm9yIChwPWtleW5hbWVzO3AtJmd0O25hbWUhPU5VTEw7cCsrKSB7CisgICAgICAgICAgICAgICAgaWYgKCFzdHJjYXNlY21wKHAtJmd0O25hbWUsIHN0cmluZykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwLSZndDt2YWx1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworfQorCitpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgICAgICAgaW50IGZkOworICAgICAgICB1bnNpZ25lZCBpbnQgaSwgajsKKyAgICAgICAgaW50IGNvZGVzWzJdOworCisgICAgICAgIGlmIChhcmdjJmx0OzIgfHwgYXJnYyZndDs0KSB7CisgICAgICAgICAgICAgICAgcHJpbnRmICgidXNhZ2U6ICVzICZsdDtkZXZpY2UmZ3Q7IHRvIGdldCB0YWJsZTsgb3JcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgJXMgJmx0O2RldmljZSZndDsgJmx0O3NjYW5jb2RlJmd0OyAmbHQ7a2V5Y29kZSZndDtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgJXMgJmx0O2RldmljZSZndDsgJmx0O2tleWNvZGVfZmlsZSZndDtcbiIsKmFyZ3YsKmFyZ3YsKmFyZ3YpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgoZmQgPSBvcGVuKGFyZ3ZbMV0sIE9fUkRPTkxZKSkgJmx0OyAwKSB7CisgICAgICAgICAgICAgICAgcGVycm9yKCJDb3VsZG4ndCBvcGVuIGlucHV0IGRldmljZSIpOworICAgICAgICAgICAgICAgIHJldHVybigtMSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYXJnYz09NCkgeworICAgICAgICAgICAgICAgIGludCB2YWx1ZTsKKworICAgICAgICAgICAgICAgIHZhbHVlPXBhcnNlX2NvZGUoYXJndlszXSk7CisKKyAgICAgICAgICAgICAgICBpZiAodmFsdWU9PS0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHN0cnRvbChhcmd2WzNdLCBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJubykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVycm9yKCJ2YWx1ZSIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNvZGVzIFswXSA9ICh1bnNpZ25lZCkgc3RydG9sKGFyZ3ZbMl0sIE5VTEwsIDApOworICAgICAgICAgICAgICAgIGNvZGVzIFsxXSA9ICh1bnNpZ25lZCkgdmFsdWU7CisKKyAgICAgICAgICAgICAgICBpZihpb2N0bChmZCwgRVZJT0NTS0VZQ09ERSwgY29kZXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgcGVycm9yICgiRVZJT0NTS0VZQ09ERSIpOworCisgICAgICAgICAgICAgICAgaWYoaW9jdGwoZmQsIEVWSU9DR0tFWUNPREUsIGNvZGVzKT09MCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBydGNvZGUoY29kZXMpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFyZ2M9PTMpIHsKKyAgICAgICAgICAgICAgICBGSUxFICpmaW47CisgICAgICAgICAgICAgICAgaW50IHZhbHVlOworICAgICAgICAgICAgICAgIGNoYXIgKnNjYW5jb2RlLCAqa2V5Y29kZSwgc1syMDQ4XTsKKworICAgICAgICAgICAgICAgIGZpbj1mb3Blbihhcmd2WzJdLCJyIik7CisgICAgICAgICAgICAgICAgaWYgKGZpbj09TlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcGVycm9yICgib3BlbmluZyBrZXljb2RlIGZpbGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiBDbGVhcnMgb2xkIHRhYmxlICovCisgICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiAmbHQ7IDI1NjsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpICZsdDsgMjU2OyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZXNbMF0gPSAoaiAmbHQ7Jmx0OyA4KSB8IGk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVzWzFdID0gS0VZX1JFU0VSVkVEOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb2N0bChmZCwgRVZJT0NTS0VZQ09ERSwgY29kZXMpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHdoaWxlIChmZ2V0cyhzLHNpemVvZihzKSxmaW4pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzY2FuY29kZT1zdHJ0b2socywiXG5cdCA9OiIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzY2FuY29kZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJyb3IgKCJwYXJzaW5nIGlucHV0IGZpbGUgc2NhbmNvZGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJjYXNlY21wKHNjYW5jb2RlLCAic2NhbmNvZGUiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FuY29kZSA9IHN0cnRvayhOVUxMLCJcblx0ID06Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2NhbmNvZGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJyb3IgKCJwYXJzaW5nIGlucHV0IGZpbGUgc2NhbmNvZGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAga2V5Y29kZT1zdHJ0b2soTlVMTCwiXG5cdCA9OigiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgha2V5Y29kZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJyb3IgKCJwYXJzaW5nIGlucHV0IGZpbGUga2V5Y29kZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByaW50ZiAoInBhcnNpbmcgJXM9JXM6Iiwgc2NhbmNvZGUsIGtleWNvZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9cGFyc2VfY29kZShrZXljb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByaW50ZiAoIlx0dmFsdWU9JWRcbiIsdmFsdWUpOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWU9PS0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc3RydG9sKGtleWNvZGUsIE5VTEwsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJybm8pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVycm9yKCJ2YWx1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBjb2RlcyBbMF0gPSAodW5zaWduZWQpIHN0cnRvbChzY2FuY29kZSwgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb2RlcyBbMV0gPSAodW5zaWduZWQpIHZhbHVlOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcmludGYoIlx0JTA0eD0lMDR4XG4iLGNvZGVzWzBdLCBjb2Rlc1sxXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZihpb2N0bChmZCwgRVZJT0NTS0VZQ09ERSwgY29kZXMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiU2V0dGluZyBzY2FuY29kZSAweCUwNHggd2l0aCAweCUwNHggdmlhICIsY29kZXNbMF0sIGNvZGVzWzFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVycm9yICgiRVZJT0NTS0VZQ09ERSIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZihpb2N0bChmZCwgRVZJT0NHS0VZQ09ERSwgY29kZXMpPT0wKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcnRjb2RlKGNvZGVzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICAvKiBHZXQgc2NhbmNvZGUgdGFibGUgKi8KKyAgICAgICAgZm9yIChqID0gMDsgaiAmbHQ7IDI1NjsgaisrKSB7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSAmbHQ7IDI1NjsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb2Rlc1swXSA9IChqICZsdDsmbHQ7IDgpIHwgaTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW9jdGwoZmQsIEVWSU9DR0tFWUNPREUsIGNvZGVzKSAmYW1wOyZhbXA7IGNvZGVzWzFdICE9IEtFWV9SRVNFUlZFRCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJ0Y29kZShjb2Rlcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworfQorCis8L3Byb2dyYW1saXN0aW5nPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9saWJ2NGwueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9saWJ2NGwueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzYjcxZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL2xpYnY0bC54bWwKQEAgLTAsMCArMSwxNjAgQEAKKzx0aXRsZT5MaWJ2NGwgVXNlcnNwYWNlIExpYnJhcnk8L3RpdGxlPgorPHNlY3Rpb24gaWQ9ImxpYnY0bC1pbnRyb2R1Y3Rpb24iPgorCTx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorCisJPHBhcmE+bGlidjRsIGlzIGEgY29sbGVjdGlvbiBvZiBsaWJyYXJpZXMgd2hpY2ggYWRkcyBhIHRoaW4gYWJzdHJhY3Rpb24KK2xheWVyIG9uIHRvcCBvZiB2aWRlbzRsaW51eDIgZGV2aWNlcy4gVGhlIHB1cnBvc2Ugb2YgdGhpcyAodGhpbikgbGF5ZXIKK2lzIHRvIG1ha2UgaXQgZWFzeSBmb3IgYXBwbGljYXRpb24gd3JpdGVycyB0byBzdXBwb3J0IGEgd2lkZSB2YXJpZXR5IG9mCitkZXZpY2VzIHdpdGhvdXQgaGF2aW5nIHRvIHdyaXRlIHNlcGFyYXRlIGNvZGUgZm9yIGRpZmZlcmVudCBkZXZpY2VzIGluIHRoZQorc2FtZSBjbGFzcy48L3BhcmE+Cis8cGFyYT5BbiBleGFtcGxlIG9mIHVzaW5nIGxpYnY0bCBpcyBwcm92aWRlZCBieQorPGxpbmsgbGlua2VuZD0ndjRsMmdyYWItZXhhbXBsZSc+djRsMmdyYWI8L2xpbms+LgorPC9wYXJhPgorCisJPHBhcmE+bGlidjRsIGNvbnNpc3RzIG9mIDMgZGlmZmVyZW50IGxpYnJhcmllczo8L3BhcmE+CisJPHNlY3Rpb24+CisJCTx0aXRsZT5saWJ2NGxjb252ZXJ0PC90aXRsZT4KKworCQk8cGFyYT5saWJ2NGxjb252ZXJ0IGlzIGEgbGlicmFyeSB0aGF0IGNvbnZlcnRzIHNldmVyYWwKK2RpZmZlcmVudCBwaXhlbGZvcm1hdHMgZm91bmQgaW4gVjRMMiBkcml2ZXJzIGludG8gYSBmZXcgY29tbW9uIFJHQiBhbmQKK1lVWSBmb3JtYXRzLjwvcGFyYT4KKwkJPHBhcmE+SXQgY3VycmVudGx5IGFjY2VwdHMgdGhlIGZvbGxvd2luZyBWNEwyIGRyaXZlciBmb3JtYXRzOgorPGxpbmsgbGlua2VuZD0iVjRMMi1QSVgtRk1ULUJHUjI0Ij48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0JHUjI0PC9jb25zdGFudD48L2xpbms+LAorPGxpbmsgbGlua2VuZD0iVjRMMi1QSVgtRk1ULUhNMTIiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfSE0xMjwvY29uc3RhbnQ+PC9saW5rPiwKKzxsaW5rIGxpbmtlbmQ9IlY0TDItUElYLUZNVC1KUEVHIj48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0pQRUc8L2NvbnN0YW50PjwvbGluaz4sCis8bGluayBsaW5rZW5kPSJWNEwyLVBJWC1GTVQtTUpQRUciPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfTUpQRUc8L2NvbnN0YW50PjwvbGluaz4sCis8bGluayBsaW5rZW5kPSJWNEwyLVBJWC1GTVQtTVI5NzMxMEEiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfTVI5NzMxMEE8L2NvbnN0YW50PjwvbGluaz4sCis8bGluayBsaW5rZW5kPSJWNEwyLVBJWC1GTVQtT1Y1MTEiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfT1Y1MTE8L2NvbnN0YW50PjwvbGluaz4sCis8bGluayBsaW5rZW5kPSJWNEwyLVBJWC1GTVQtT1Y1MTgiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfT1Y1MTg8L2NvbnN0YW50PjwvbGluaz4sCis8bGluayBsaW5rZW5kPSJWNEwyLVBJWC1GTVQtUEFDMjA3Ij48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1BBQzIwNzwvY29uc3RhbnQ+PC9saW5rPiwKKzxsaW5rIGxpbmtlbmQ9IlY0TDItUElYLUZNVC1QSlBHIj48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1BKUEc8L2NvbnN0YW50PjwvbGluaz4sCis8bGluayBsaW5rZW5kPSJWNEwyLVBJWC1GTVQtUkdCMjQiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfUkdCMjQ8L2NvbnN0YW50PjwvbGluaz4sCis8bGluayBsaW5rZW5kPSJWNEwyLVBJWC1GTVQtU0JHR1I4Ij48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1NCR0dSODwvY29uc3RhbnQ+PC9saW5rPiwKKzxsaW5rIGxpbmtlbmQ9IlY0TDItUElYLUZNVC1TR0JSRzgiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfU0dCUkc4PC9jb25zdGFudD48L2xpbms+LAorPGxpbmsgbGlua2VuZD0iVjRMMi1QSVgtRk1ULVNHUkJHOCI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TR1JCRzg8L2NvbnN0YW50PjwvbGluaz4sCis8bGluayBsaW5rZW5kPSJWNEwyLVBJWC1GTVQtU045QzEwWCI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TTjlDMTBYPC9jb25zdGFudD48L2xpbms+LAorPGxpbmsgbGlua2VuZD0iVjRMMi1QSVgtRk1ULVNOOUMyMFgtSTQyMCI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TTjlDMjBYX0k0MjA8L2NvbnN0YW50PjwvbGluaz4sCis8bGluayBsaW5rZW5kPSJWNEwyLVBJWC1GTVQtU1BDQTUwMSI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TUENBNTAxPC9jb25zdGFudD48L2xpbms+LAorPGxpbmsgbGlua2VuZD0iVjRMMi1QSVgtRk1ULVNQQ0E1MDUiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfU1BDQTUwNTwvY29uc3RhbnQ+PC9saW5rPiwKKzxsaW5rIGxpbmtlbmQ9IlY0TDItUElYLUZNVC1TUENBNTA4Ij48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1NQQ0E1MDg8L2NvbnN0YW50PjwvbGluaz4sCis8bGluayBsaW5rZW5kPSJWNEwyLVBJWC1GTVQtU1BDQTU2MSI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TUENBNTYxPC9jb25zdGFudD48L2xpbms+LAorPGxpbmsgbGlua2VuZD0iVjRMMi1QSVgtRk1ULVNROTA1QyI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TUTkwNUM8L2NvbnN0YW50PjwvbGluaz4sCis8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1NSR0dCODwvY29uc3RhbnQ+LAorPGxpbmsgbGlua2VuZD0iVjRMMi1QSVgtRk1ULVVZVlkiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfVVlWWTwvY29uc3RhbnQ+PC9saW5rPiwKKzxsaW5rIGxpbmtlbmQ9IlY0TDItUElYLUZNVC1ZVVY0MjAiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWVVWNDIwPC9jb25zdGFudD48L2xpbms+LAorPGxpbmsgbGlua2VuZD0iVjRMMi1QSVgtRk1ULVlVWVYiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWVVZVjwvY29uc3RhbnQ+PC9saW5rPiwKKzxsaW5rIGxpbmtlbmQ9IlY0TDItUElYLUZNVC1ZVlU0MjAiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWVZVNDIwPC9jb25zdGFudD48L2xpbms+LAorYW5kIDxsaW5rIGxpbmtlbmQ9IlY0TDItUElYLUZNVC1ZVllVIj48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1lWWVU8L2NvbnN0YW50PjwvbGluaz4uCis8L3BhcmE+CisJCTxwYXJhPkxhdGVyIG9uIGxpYnY0bGNvbnZlcnQgd2FzIGV4cGFuZGVkIHRvIGFsc28gYmUgYWJsZSB0byBkbwordmFyaW91cwl2aWRlbyBwcm9jZXNzaW5nIGZ1bmN0aW9ucyB0byBpbXByb3ZlIHdlYmNhbSB2aWRlbyBxdWFsaXR5LgorVGhlIHZpZGVvIHByb2Nlc3NpbmcgaXMgc3BsaXQgaW4gdG8gMiBwYXJ0czogbGlidjRsY29udmVydC9jb250cm9sIGFuZAorbGlidjRsY29udmVydC9wcm9jZXNzaW5nLjwvcGFyYT4KKworCQk8cGFyYT5UaGUgY29udHJvbCBwYXJ0IGlzIHVzZWQgdG8gb2ZmZXIgdmlkZW8gY29udHJvbHMgd2hpY2ggY2FuCitiZSB1c2VkCXRvIGNvbnRyb2wgdGhlIHZpZGVvIHByb2Nlc3NpbmcgZnVuY3Rpb25zIG1hZGUgYXZhaWxhYmxlIGJ5CisJbGlidjRsY29udmVydC9wcm9jZXNzaW5nLiBUaGVzZSBjb250cm9scyBhcmUgc3RvcmVkIGFwcGxpY2F0aW9uIHdpZGUKKyh1bnRpbCByZWJvb3QpIGJ5IHVzaW5nIGEgcGVyc2lzdGVudCBzaGFyZWQgbWVtb3J5IG9iamVjdC48L3BhcmE+CisKKwkJPHBhcmE+bGlidjRsY29udmVydC9wcm9jZXNzaW5nIG9mZmVycyB0aGUgYWN0dWFsIHZpZGVvCitwcm9jZXNzaW5nIGZ1bmN0aW9uYWxpdHkuPC9wYXJhPgorCTwvc2VjdGlvbj4KKwk8c2VjdGlvbj4KKwkJPHRpdGxlPmxpYnY0bDE8L3RpdGxlPgorCQk8cGFyYT5UaGlzIGxpYnJhcnkgb2ZmZXJzIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHRvIHF1aWNrbHkKK21ha2UgdjRsMSBhcHBsaWNhdGlvbnMgd29yayB3aXRoIHY0bDIgZGV2aWNlcy4gVGhlc2UgZnVuY3Rpb25zIHdvcmsgZXhhY3RseQorbGlrZSB0aGUgbm9ybWFsIG9wZW4vY2xvc2UvZXRjLCBleGNlcHQgdGhhdCBsaWJ2NGwxIGRvZXMgZnVsbCBlbXVsYXRpb24gb2YKK3RoZSB2NGwxIGFwaSBvbiB0b3Agb2YgdjRsMiBkcml2ZXJzLCBpbiBjYXNlIG9mIHY0bDEgZHJpdmVycyBpdAord2lsbCBqdXN0IHBhc3MgY2FsbHMgdGhyb3VnaC48L3BhcmE+CisJCTxwYXJhPlNpbmNlIHRob3NlIGZ1bmN0aW9ucyBhcmUgZW11bGF0aW9ucyBvZiB0aGUgb2xkIFY0TDEgQVBJLAoraXQgc2hvdWxkbid0IGJlIHVzZWQgZm9yIG5ldyBhcHBsaWNhdGlvbnMuPC9wYXJhPgorCTwvc2VjdGlvbj4KKwk8c2VjdGlvbj4KKwkJPHRpdGxlPmxpYnY0bDI8L3RpdGxlPgorCQk8cGFyYT5UaGlzIGxpYnJhcnkgc2hvdWxkIGJlIHVzZWQgZm9yIGFsbCBtb2Rlcm4gVjRMMgorYXBwbGljYXRpb25zLjwvcGFyYT4KKwkJPHBhcmE+SXQgcHJvdmlkZXMgaGFuZGxlcyB0byBjYWxsIFY0TDIgb3Blbi9pb2N0bC9jbG9zZS9wb2xsCittZXRob2RzLiBJbnN0ZWFkIG9mIGp1c3QgcHJvdmlkaW5nIHRoZSByYXcgb3V0cHV0IG9mIHRoZSBkZXZpY2UsIGl0IGVuaGFuY2VzCit0aGUgY2FsbHMgaW4gdGhlIHNlbnNlIHRoYXQgaXQgd2lsbCB1c2UgbGlidjRsY29udmVydCB0byBwcm92aWRlIG1vcmUgdmlkZW8KK2Zvcm1hdHMgYW5kIHRvIGVuaGFuY2UgdGhlIGltYWdlIHF1YWxpdHkuPC9wYXJhPgorCQk8cGFyYT5JbiBtb3N0IGNhc2VzLCBsaWJ2NGwyIGp1c3QgcGFzc2VzIHRoZSBjYWxscyBkaXJlY3RseQordGhyb3VnaCB0byB0aGUgdjRsMiBkcml2ZXIsIGludGVyY2VwdGluZyB0aGUgY2FsbHMgdG8KKzxsaW5rIGxpbmtlbmQ9J3ZpZGlvYy1nLWZtdCc+PGNvbnN0YW50PlZJRElPQ19UUllfRk1UPC9jb25zdGFudD48L2xpbms+LAorPGxpbmsgbGlua2VuZD0ndmlkaW9jLWctZm10Jz48Y29uc3RhbnQ+VklESU9DX0dfRk1UPC9jb25zdGFudD48L2xpbms+Cis8bGluayBsaW5rZW5kPSd2aWRpb2MtZy1mbXQnPjxjb25zdGFudD5WSURJT0NfU19GTVQ8L2NvbnN0YW50PjwvbGluaz4KKzxsaW5rIGxpbmtlbmQ9J3ZpZGlvYy1lbnVtLWZyYW1lc2l6ZXMnPjxjb25zdGFudD5WSURJT0NfRU5VTV9GUkFNRVNJWkVTPC9jb25zdGFudD48L2xpbms+CithbmQgPGxpbmsgbGlua2VuZD0ndmlkaW9jLWVudW0tZnJhbWVpbnRlcnZhbHMnPjxjb25zdGFudD5WSURJT0NfRU5VTV9GUkFNRUlOVEVSVkFMUzwvY29uc3RhbnQ+PC9saW5rPgoraW4gb3JkZXIgdG8gZW11bGF0ZSB0aGUgZm9ybWF0cworPGxpbmsgbGlua2VuZD0iVjRMMi1QSVgtRk1ULUJHUjI0Ij48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0JHUjI0PC9jb25zdGFudD48L2xpbms+LAorPGxpbmsgbGlua2VuZD0iVjRMMi1QSVgtRk1ULVJHQjI0Ij48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1JHQjI0PC9jb25zdGFudD48L2xpbms+LAorPGxpbmsgbGlua2VuZD0iVjRMMi1QSVgtRk1ULVlVVjQyMCI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZVVY0MjA8L2NvbnN0YW50PjwvbGluaz4sCithbmQgPGxpbmsgbGlua2VuZD0iVjRMMi1QSVgtRk1ULVlWVTQyMCI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZVlU0MjA8L2NvbnN0YW50PjwvbGluaz4sCitpZiB0aGV5IGFyZW4ndCBhdmFpbGFibGUgaW4gdGhlIGRyaXZlci4KKzxsaW5rIGxpbmtlbmQ9J3ZpZGlvYy1lbnVtLWZtdCc+PGNvbnN0YW50PlZJRElPQ19FTlVNX0ZNVDwvY29uc3RhbnQ+PC9saW5rPgora2VlcHMgZW51bWVyYXRpbmcgdGhlIGhhcmR3YXJlIHN1cHBvcnRlZCBmb3JtYXRzLCBwbHVzIHRoZSBlbXVsYXRlZCBmb3JtYXRzCitvZmZlcmVkIGJ5IGxpYnY0bCBhdCB0aGUgZW5kLgorPC9wYXJhPgorCQk8c2VjdGlvbiBpZD0ibGlidjRsLW9wcyI+CisJCQk8dGl0bGU+TGlidjRsIGRldmljZSBjb250cm9sIGZ1bmN0aW9uczwvdGl0bGU+CisJCQk8cGFyYT5UaGUgY29tbW9uIGZpbGUgb3BlcmF0aW9uIG1ldGhvZHMgYXJlIHByb3ZpZGVkIGJ5CitsaWJ2NGwuPC9wYXJhPgorCQkJPHBhcmE+VGhvc2UgZnVuY3Rpb25zIG9wZXJhdGUganVzdCBsaWtlIGdsaWJjCitvcGVuL2Nsb3NlL2R1cC9pb2N0bC9yZWFkL21tYXAvbXVubWFwOjwvcGFyYT4KKzxpdGVtaXplZGxpc3Q+PGxpc3RpdGVtPgorCQkJPHBhcmE+aW50IHY0bDJfb3Blbihjb25zdCBjaGFyICpmaWxlLCBpbnQgb2ZsYWcsCisuLi4pIC0KK29wZXJhdGVzIGxpa2UgdGhlIHN0YW5kYXJkIDxsaW5rIGxpbmtlbmQ9J2Z1bmMtb3Blbic+b3BlbigpPC9saW5rPiBmdW5jdGlvbi4KKzwvcGFyYT48L2xpc3RpdGVtPjxsaXN0aXRlbT4KKwkJCTxwYXJhPmludCB2NGwyX2Nsb3NlKGludCBmZCkgLQorb3BlcmF0ZXMgbGlrZSB0aGUgc3RhbmRhcmQgPGxpbmsgbGlua2VuZD0nZnVuYy1jbG9zZSc+Y2xvc2UoKTwvbGluaz4gZnVuY3Rpb24uCis8L3BhcmE+PC9saXN0aXRlbT48bGlzdGl0ZW0+CisJCQk8cGFyYT5pbnQgdjRsMl9kdXAoaW50IGZkKSAtCitvcGVyYXRlcyBsaWtlIHRoZSBzdGFuZGFyZCBkdXAoKSBmdW5jdGlvbiwgZHVwbGljYXRpbmcgYSBmaWxlIGhhbmRsZXIuCis8L3BhcmE+PC9saXN0aXRlbT48bGlzdGl0ZW0+CisJCQk8cGFyYT5pbnQgdjRsMl9pb2N0bCAoaW50IGZkLCB1bnNpZ25lZCBsb25nIGludCByZXF1ZXN0LCAuLi4pIC0KK29wZXJhdGVzIGxpa2UgdGhlIHN0YW5kYXJkIDxsaW5rIGxpbmtlbmQ9J2Z1bmMtaW9jdGwnPmlvY3RsKCk8L2xpbms+IGZ1bmN0aW9uLgorPC9wYXJhPjwvbGlzdGl0ZW0+PGxpc3RpdGVtPgorCQkJPHBhcmE+aW50IHY0bDJfcmVhZCAoaW50IGZkLCB2b2lkKiBidWZmZXIsIHNpemVfdCBuKSAtCitvcGVyYXRlcyBsaWtlIHRoZSBzdGFuZGFyZCA8bGluayBsaW5rZW5kPSdmdW5jLXJlYWQnPnJlYWQoKTwvbGluaz4gZnVuY3Rpb24uCis8L3BhcmE+PC9saXN0aXRlbT48bGlzdGl0ZW0+CisJCQk8cGFyYT52b2lkIHY0bDJfbW1hcCh2b2lkICpzdGFydCwgc2l6ZV90IGxlbmd0aCwgaW50IHByb3QsIGludCBmbGFncywgaW50IGZkLCBpbnQ2NF90IG9mZnNldCk7IC0KK29wZXJhdGVzIGxpa2UgdGhlIHN0YW5kYXJkIDxsaW5rIGxpbmtlbmQ9J2Z1bmMtbW1hcCc+bW1hcCgpPC9saW5rPiBmdW5jdGlvbi4KKzwvcGFyYT48L2xpc3RpdGVtPjxsaXN0aXRlbT4KKwkJCTxwYXJhPmludCB2NGwyX211bm1hcCh2b2lkICpfc3RhcnQsIHNpemVfdCBsZW5ndGgpOyAtCitvcGVyYXRlcyBsaWtlIHRoZSBzdGFuZGFyZCA8bGluayBsaW5rZW5kPSdmdW5jLW11bm1hcCc+bXVubWFwKCk8L2xpbms+IGZ1bmN0aW9uLgorPC9wYXJhPjwvbGlzdGl0ZW0+Cis8L2l0ZW1pemVkbGlzdD4KKwkJCTxwYXJhPlRob3NlIGZ1bmN0aW9ucyBwcm92aWRlIGFkZGl0aW9uYWwgY29udHJvbDo8L3BhcmE+Cis8aXRlbWl6ZWRsaXN0PjxsaXN0aXRlbT4KKwkJCTxwYXJhPmludCB2NGwyX2ZkX29wZW4oaW50IGZkLCBpbnQgdjRsMl9mbGFncykgLQorb3BlbnMgYW4gYWxyZWFkeSBvcGVuZWQgZmQgZm9yIGZ1cnRoZXIgdXNlIHRocm91Z2ggdjRsMmxpYiBhbmQgcG9zc2libHkKK21vZGlmeSBsaWJ2NGwyJ3MgZGVmYXVsdCBiZWhhdmlvciB0aHJvdWdoIHRoZSB2NGwyX2ZsYWdzIGFyZ3VtZW50LgorQ3VycmVudGx5LCB2NGwyX2ZsYWdzIGNhbiBiZSA8Y29uc3RhbnQ+VjRMMl9ESVNBQkxFX0NPTlZFUlNJT048L2NvbnN0YW50PiwKK3RvIGRpc2FibGUgZm9ybWF0IGNvbnZlcnNpb24uCis8L3BhcmE+PC9saXN0aXRlbT48bGlzdGl0ZW0+CisJCQk8cGFyYT5pbnQgdjRsMl9zZXRfY29udHJvbChpbnQgZmQsIGludCBjaWQsIGludCB2YWx1ZSkgLQorVGhpcyBmdW5jdGlvbiB0YWtlcyBhIHZhbHVlIG9mIDAgLSA2NTUzNSwgYW5kIHRoZW4gc2NhbGVzIHRoYXQgcmFuZ2UgdG8KK3RoZSBhY3R1YWwgcmFuZ2Ugb2YgdGhlIGdpdmVuIHY0bCBjb250cm9sIGlkLCBhbmQgdGhlbiBpZiB0aGUgY2lkIGV4aXN0cworYW5kIGlzIG5vdCBsb2NrZWQgc2V0cyB0aGUgY2lkIHRvIHRoZSBzY2FsZWQgdmFsdWUuCis8L3BhcmE+PC9saXN0aXRlbT48bGlzdGl0ZW0+CisJCQk8cGFyYT5pbnQgdjRsMl9nZXRfY29udHJvbChpbnQgZmQsIGludCBjaWQpIC0KK1RoaXMgZnVuY3Rpb24gcmV0dXJucyBhIHZhbHVlIG9mIDAgLSA2NTUzNSwgc2NhbGVkIHRvIGZyb20gdGhlIGFjdHVhbCByYW5nZQorb2YgdGhlIGdpdmVuIHY0bCBjb250cm9sIGlkLiB3aGVuIHRoZSBjaWQgZG9lcyBub3QgZXhpc3QsIGNvdWxkIG5vdCBiZQorYWNjZXNzZWQgZm9yIHNvbWUgcmVhc29uLCBvciBzb21lIGVycm9yIG9jY3VycmVkIDAgaXMgcmV0dXJuZWQuCis8L3BhcmE+PC9saXN0aXRlbT4KKzwvaXRlbWl6ZWRsaXN0PgorCQk8L3NlY3Rpb24+CisJPC9zZWN0aW9uPgorCTxzZWN0aW9uPgorCisJCTx0aXRsZT52NGwxY29tcGF0LnNvIHdyYXBwZXIgbGlicmFyeTwvdGl0bGU+CisKKwkJPHBhcmE+VGhpcyBsaWJyYXJ5IGludGVyY2VwdHMgY2FsbHMgdG8KK29wZW4vY2xvc2UvaW9jdGwvbW1hcC9tbXVubWFwIG9wZXJhdGlvbnMgYW5kIHJlZGlyZWN0cyB0aGVtIHRvIHRoZSBsaWJ2NGwKK2NvdW50ZXJwYXJ0cywgYnkgdXNpbmcgTERfUFJFTE9BRD0vdXNyL2xpYi92NGwxY29tcGF0LnNvLiBJdCBhbHNvCitlbXVsYXRlcyBWNEwxIGNhbGxzIHZpYSBWNEwyIEFQSS48L3BhcmE+CisJCTxwYXJhPkl0IGFsbG93cyB1c2FnZSBvZiBiaW5hcnkgbGVnYWN5IGFwcGxpY2F0aW9ucyB0aGF0CitzdGlsbCBkb24ndCB1c2UgbGlidjRsLjwvcGFyYT4KKwk8L3NlY3Rpb24+CisKKzwvc2VjdGlvbj4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvbGlyY19kZXZpY2VfaW50ZXJmYWNlLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvbGlyY19kZXZpY2VfaW50ZXJmYWNlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGNhZGEyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9saXJjX2RldmljZV9pbnRlcmZhY2UueG1sCkBAIC0wLDAgKzEsMjU1IEBACis8c2VjdGlvbiBpZD0ibGlyY19kZXYiPgorPHRpdGxlPkxJUkMgRGV2aWNlIEludGVyZmFjZTwvdGl0bGU+CisKKworPHNlY3Rpb24gaWQ9ImxpcmNfZGV2X2ludHJvIj4KKzx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorCis8cGFyYT5UaGUgTElSQyBkZXZpY2UgaW50ZXJmYWNlIGlzIGEgYmktZGlyZWN0aW9uYWwgaW50ZXJmYWNlIGZvcgordHJhbnNwb3J0aW5nIHJhdyBJUiBkYXRhIGJldHdlZW4gdXNlcnNwYWNlIGFuZCBrZXJuZWxzcGFjZS4gRnVuZGFtZW50YWxseSwKK2l0IGlzIGp1c3QgYSBjaGFyZGV2ICgvZGV2L2xpcmNYLCBmb3IgWCA9IDAsIDEsIDIsIC4uLiksIHdpdGggYSBudW1iZXIKK29mIHN0YW5kYXJkIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZGVmaW5lZCBvbiBpdC4gV2l0aCByZXNwZWN0IHRvCit0cmFuc3BvcnRpbmcgcmF3IElSIGRhdGEgdG8gYW5kIGZybywgdGhlIGVzc2VudGlhbCBmb3BzIGFyZSByZWFkLCB3cml0ZQorYW5kIGlvY3RsLjwvcGFyYT4KKworPHBhcmE+RXhhbXBsZSBkbWVzZyBvdXRwdXQgdXBvbiBhIGRyaXZlciByZWdpc3RlcmluZyB3L0xJUkM6PC9wYXJhPgorICA8YmxvY2txdW90ZT4KKyAgICA8cGFyYT4kIGRtZXNnIHxncmVwIGxpcmNfZGV2PC9wYXJhPgorICAgIDxwYXJhPmxpcmNfZGV2OiBJUiBSZW1vdGUgQ29udHJvbCBkcml2ZXIgcmVnaXN0ZXJlZCwgbWFqb3IgMjQ4PC9wYXJhPgorICAgIDxwYXJhPnJjIHJjMDogbGlyY19kZXY6IGRyaXZlciBpci1saXJjLWNvZGVjIChtY2V1c2IpIHJlZ2lzdGVyZWQgYXQgbWlub3IgPSAwPC9wYXJhPgorICA8L2Jsb2NrcXVvdGU+CisKKzxwYXJhPldoYXQgeW91IHNob3VsZCBzZWUgZm9yIGEgY2hhcmRldjo8L3BhcmE+CisgIDxibG9ja3F1b3RlPgorICAgIDxwYXJhPiQgbHMgLWwgL2Rldi9saXJjKjwvcGFyYT4KKyAgICA8cGFyYT5jcnctcnctLS0tIDEgcm9vdCByb290IDI0OCwgMCBKdWwgIDIgMjI6MjAgL2Rldi9saXJjMDwvcGFyYT4KKyAgPC9ibG9ja3F1b3RlPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ibGlyY19yZWFkIj4KKzx0aXRsZT5MSVJDIHJlYWQgZm9wPC90aXRsZT4KKworPHBhcmE+VGhlIGxpcmNkIHVzZXJzcGFjZSBkYWVtb24gcmVhZHMgcmF3IElSIGRhdGEgZnJvbSB0aGUgTElSQyBjaGFyZGV2LiBUaGUKK2V4YWN0IGZvcm1hdCBvZiB0aGUgZGF0YSBkZXBlbmRzIG9uIHdoYXQgbW9kZXMgYSBkcml2ZXIgc3VwcG9ydHMsIGFuZCB3aGF0Cittb2RlIGhhcyBiZWVuIHNlbGVjdGVkLiBsaXJjZCBvYnRhaW5zIHN1cHBvcnRlZCBtb2RlcyBhbmQgc2V0cyB0aGUgYWN0aXZlIG1vZGUKK3ZpYSB0aGUgaW9jdGwgaW50ZXJmYWNlLCBkZXRhaWxlZCBhdCA8eHJlZiBsaW5rZW5kPSJsaXJjX2lvY3RsIi8+LiBUaGUgZ2VuZXJhbGx5CitwcmVmZXJyZWQgbW9kZSBpcyBMSVJDX01PREVfTU9ERTIsIGluIHdoaWNoIHBhY2tldHMgY29udGFpbmluZyBhbiBpbnQgdmFsdWUKK2Rlc2NyaWJpbmcgYW4gSVIgc2lnbmFsIGFyZSByZWFkIGZyb20gdGhlIGNoYXJkZXYuPC9wYXJhPgorCis8cGFyYT5TZWUgYWxzbyA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmxpcmMub3JnL2h0bWwvdGVjaG5pY2FsLmh0bWwiPmh0dHA6Ly93d3cubGlyYy5vcmcvaHRtbC90ZWNobmljYWwuaHRtbDwvdWxpbms+IGZvciBtb3JlIGluZm8uPC9wYXJhPgorPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ibGlyY193cml0ZSI+Cis8dGl0bGU+TElSQyB3cml0ZSBmb3A8L3RpdGxlPgorCis8cGFyYT5UaGUgZGF0YSB3cml0dGVuIHRvIHRoZSBjaGFyZGV2IGlzIGEgcHVsc2Uvc3BhY2Ugc2VxdWVuY2Ugb2YgaW50ZWdlcgordmFsdWVzLiBQdWxzZXMgYW5kIHNwYWNlcyBhcmUgb25seSBtYXJrZWQgaW1wbGljaXRseSBieSB0aGVpciBwb3NpdGlvbi4gVGhlCitkYXRhIG11c3Qgc3RhcnQgYW5kIGVuZCB3aXRoIGEgcHVsc2UsIHRoZXJlZm9yZSwgdGhlIGRhdGEgbXVzdCBhbHdheXMgaW5jbHVkZQorYW4gdW5ldmVuIG51bWJlciBvZiBzYW1wbGVzLiBUaGUgd3JpdGUgZnVuY3Rpb24gbXVzdCBibG9jayB1bnRpbCB0aGUgZGF0YSBoYXMKK2JlZW4gdHJhbnNtaXR0ZWQgYnkgdGhlIGhhcmR3YXJlLiBJZiBtb3JlIGRhdGEgaXMgcHJvdmlkZWQgdGhhbiB0aGUgaGFyZHdhcmUKK2NhbiBzZW5kLCB0aGUgZHJpdmVyIHJldHVybnMgRUlOVkFMLjwvcGFyYT4KKworPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0ibGlyY19pb2N0bCI+Cis8dGl0bGU+TElSQyBpb2N0bCBmb3A8L3RpdGxlPgorCis8cGFyYT5UaGUgTElSQyBkZXZpY2UncyBpb2N0bCBkZWZpbml0aW9uIGlzIGJvdW5kIGJ5IHRoZSBpb2N0bCBmdW5jdGlvbgorZGVmaW5pdGlvbiBvZiBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zLCBsZWF2aW5nIHVzIHdpdGggYW4gdW5zaWduZWQgaW50Citmb3IgdGhlIGlvY3RsIGNvbW1hbmQgYW5kIGFuIHVuc2lnbmVkIGxvbmcgZm9yIHRoZSBhcmcuIEZvciB0aGUgcHVycG9zZXMKK29mIGlvY3RsIHBvcnRhYmlsaXR5IGFjcm9zcyAzMi1iaXQgYW5kIDY0LWJpdCwgdGhlc2UgdmFsdWVzIGFyZSBjYXBwZWQKK3RvIHRoZWlyIDMyLWJpdCBzaXplcy48L3BhcmE+CisKKzxwYXJhPlRoZSBmb2xsb3dpbmcgaW9jdGxzIGNhbiBiZSB1c2VkIHRvIGNoYW5nZSBzcGVjaWZpYyBoYXJkd2FyZSBzZXR0aW5ncy4KK0luIGdlbmVyYWwgZWFjaCBkcml2ZXIgc2hvdWxkIGhhdmUgYSBkZWZhdWx0IHNldCBvZiBzZXR0aW5ncy4gVGhlIGRyaXZlcgoraW1wbGVtZW50YXRpb24gaXMgZXhwZWN0ZWQgdG8gcmUtYXBwbHkgdGhlIGRlZmF1bHQgc2V0dGluZ3Mgd2hlbiB0aGUgZGV2aWNlCitpcyBjbG9zZWQgYnkgdXNlci1zcGFjZSwgc28gdGhhdCBldmVyeSBhcHBsaWNhdGlvbiBvcGVuaW5nIHRoZSBkZXZpY2UgY2FuIHJlbHkKK29uIHdvcmtpbmcgd2l0aCB0aGUgZGVmYXVsdCBzZXR0aW5ncyBpbml0aWFsbHkuPC9wYXJhPgorCis8dmFyaWFibGVsaXN0PgorICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPkxJUkNfR0VUX0ZFQVRVUkVTPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPk9idmlvdXNseSwgZ2V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGRldmljZSdzIGZlYXR1cmVzLiBJZiBhIGRyaXZlcgorICAgICAgZG9lcyBub3QgYW5ub3VuY2Ugc3VwcG9ydCBvZiBjZXJ0YWluIGZlYXR1cmVzLCBjYWxsaW5nIG9mIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICBpb2N0bHMgaXMgdW5kZWZpbmVkLjwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICA8L3Zhcmxpc3RlbnRyeT4KKyAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT5MSVJDX0dFVF9TRU5EX01PREU8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+R2V0IHN1cHBvcnRlZCB0cmFuc21pdCBtb2RlLiBPbmx5IExJUkNfTU9ERV9QVUxTRSBpcyBzdXBwb3J0ZWQgYnkgbGlyY2QuPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgIDwvdmFybGlzdGVudHJ5PgorICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPkxJUkNfR0VUX1JFQ19NT0RFPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPkdldCBzdXBwb3J0ZWQgcmVjZWl2ZSBtb2Rlcy4gT25seSBMSVJDX01PREVfTU9ERTIgYW5kIExJUkNfTU9ERV9MSVJDQ09ERQorICAgICAgYXJlIHN1cHBvcnRlZCBieSBsaXJjZC48L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgPC92YXJsaXN0ZW50cnk+CisgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+TElSQ19HRVRfU0VORF9DQVJSSUVSPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPkdldCBjYXJyaWVyIGZyZXF1ZW5jeSAoaW4gSHopIGN1cnJlbnRseSB1c2VkIGZvciB0cmFuc21pdC48L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgPC92YXJsaXN0ZW50cnk+CisgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+TElSQ19HRVRfUkVDX0NBUlJJRVI8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+R2V0IGNhcnJpZXIgZnJlcXVlbmN5IChpbiBIeikgY3VycmVudGx5IHVzZWQgZm9yIElSIHJlY2VwdGlvbi48L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgPC92YXJsaXN0ZW50cnk+CisgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+TElSQ197RyxTfUVUX3tTRU5ELFJFQ31fRFVUWV9DWUNMRTwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT5HZXQvc2V0IHRoZSBkdXR5IGN5Y2xlIChmcm9tIDAgdG8gMTAwKSBvZiB0aGUgY2FycmllciBzaWduYWwuIEN1cnJlbnRseSwKKyAgICAgIG5vIHNwZWNpYWwgbWVhbmluZyBpcyBkZWZpbmVkIGZvciAwIG9yIDEwMCwgYnV0IHRoaXMgY291bGQgYmUgdXNlZCB0byBzd2l0Y2gKKyAgICAgIG9mZiBjYXJyaWVyIGdlbmVyYXRpb24gaW4gdGhlIGZ1dHVyZSwgc28gdGhlc2UgdmFsdWVzIHNob3VsZCBiZSByZXNlcnZlZC48L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgPC92YXJsaXN0ZW50cnk+CisgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+TElSQ19HRVRfUkVDX1JFU09MVVRJT048L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+U29tZSByZWNlaXZlciBoYXZlIG1heGltdW0gcmVzb2x1dGlvbiB3aGljaCBpcyBkZWZpbmVkIGJ5IGludGVybmFsCisgICAgICBzYW1wbGUgcmF0ZSBvciBkYXRhIGZvcm1hdCBsaW1pdGF0aW9ucy4gRS5nLiBpdCdzIGNvbW1vbiB0aGF0IHNpZ25hbHMgY2FuCisgICAgICBvbmx5IGJlIHJlcG9ydGVkIGluIDUwIG1pY3Jvc2Vjb25kIHN0ZXBzLiBUaGlzIGludGVnZXIgdmFsdWUgaXMgdXNlZCBieQorICAgICAgbGlyY2QgdG8gYXV0b21hdGljYWxseSBhZGp1c3QgdGhlIGFlcHMgdG9sZXJhbmNlIHZhbHVlIGluIHRoZSBsaXJjZAorICAgICAgY29uZmlnIGZpbGUuPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgIDwvdmFybGlzdGVudHJ5PgorICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPkxJUkNfR0VUX017SU4sQVh9X1RJTUVPVVQ8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+U29tZSBkZXZpY2VzIGhhdmUgaW50ZXJuYWwgdGltZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGV0ZWN0IHdoZW4KKyAgICAgIHRoZXJlJ3Mgbm8gSVIgYWN0aXZpdHkgZm9yIGEgbG9uZyB0aW1lLiBUaGlzIGNhbiBoZWxwIGxpcmNkIGluIGRldGVjdGluZworICAgICAgdGhhdCBhIElSIHNpZ25hbCBpcyBmaW5pc2hlZCBhbmQgY2FuIHNwZWVkIHVwIHRoZSBkZWNvZGluZyBwcm9jZXNzLgorICAgICAgUmV0dXJucyBhbiBpbnRlZ2VyIHZhbHVlIHdpdGggdGhlIG1pbmltdW0vbWF4aW11bSB0aW1lb3V0IHRoYXQgY2FuIGJlCisgICAgICBzZXQuIFNvbWUgZGV2aWNlcyBoYXZlIGEgZml4ZWQgdGltZW91dCwgaW4gdGhhdCBjYXNlIGJvdGggaW9jdGxzIHdpbGwKKyAgICAgIHJldHVybiB0aGUgc2FtZSB2YWx1ZSBldmVuIHRob3VnaCB0aGUgdGltZW91dCBjYW5ub3QgYmUgY2hhbmdlZC48L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgPC92YXJsaXN0ZW50cnk+CisgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+TElSQ19HRVRfTXtJTixBWH1fRklMVEVSX3tQVUxTRSxTUEFDRX08L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+U29tZSBkZXZpY2VzIGFyZSBhYmxlIHRvIGZpbHRlciBvdXQgc3Bpa2VzIGluIHRoZSBpbmNvbWluZyBzaWduYWwKKyAgICAgIHVzaW5nIGdpdmVuIGZpbHRlciBydWxlcy4gVGhlc2UgaW9jdGxzIHJldHVybiB0aGUgaGFyZHdhcmUgY2FwYWJpbGl0aWVzCisgICAgICB0aGF0IGRlc2NyaWJlIHRoZSBib3VuZHMgb2YgdGhlIHBvc3NpYmxlIGZpbHRlcnMuIEZpbHRlciBzZXR0aW5ncyBkZXBlbmQKKyAgICAgIG9uIHRoZSBJUiBwcm90b2NvbHMgdGhhdCBhcmUgZXhwZWN0ZWQuIGxpcmNkIGRlcml2ZXMgdGhlIHNldHRpbmdzIGZyb20KKyAgICAgIGFsbCBwcm90b2NvbHMgZGVmaW5pdGlvbnMgZm91bmQgaW4gaXRzIGNvbmZpZyBmaWxlLjwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICA8L3Zhcmxpc3RlbnRyeT4KKyAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT5MSVJDX0dFVF9MRU5HVEg8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+UmV0cmlldmVzIHRoZSBjb2RlIGxlbmd0aCBpbiBiaXRzIChvbmx5IGZvciBMSVJDX01PREVfTElSQ0NPREUpLgorICAgICAgUmVhZHMgb24gdGhlIGRldmljZSBtdXN0IGJlIGRvbmUgaW4gYmxvY2tzIG1hdGNoaW5nIHRoZSBiaXQgY291bnQuCisgICAgICBUaGUgYml0IGNvdWxkIHNob3VsZCBiZSByb3VuZGVkIHVwIHNvIHRoYXQgaXQgbWF0Y2hlcyBmdWxsIGJ5dGVzLjwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICA8L3Zhcmxpc3RlbnRyeT4KKyAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT5MSVJDX1NFVF97U0VORCxSRUN9X01PREU8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+U2V0IHNlbmQvcmVjZWl2ZSBtb2RlLiBMYXJnZWx5IG9ic29sZXRlIGZvciBzZW5kLCBhcyBvbmx5CisgICAgICBMSVJDX01PREVfUFVMU0UgaXMgc3VwcG9ydGVkLjwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICA8L3Zhcmxpc3RlbnRyeT4KKyAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT5MSVJDX1NFVF97U0VORCxSRUN9X0NBUlJJRVI8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+U2V0IHNlbmQvcmVjZWl2ZSBjYXJyaWVyIChpbiBIeikuPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgIDwvdmFybGlzdGVudHJ5PgorICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPkxJUkNfU0VUX1RSQU5TTUlUVEVSX01BU0s8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+VGhpcyBlbmFibGVzIHRoZSBnaXZlbiBzZXQgb2YgdHJhbnNtaXR0ZXJzLiBUaGUgZmlyc3QgdHJhbnNtaXR0ZXIKKyAgICAgIGlzIGVuY29kZWQgYnkgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCwgZXRjLiBXaGVuIGFuIGludmFsaWQgYml0IG1hc2sKKyAgICAgIGlzIGdpdmVuLCBpLmUuIGEgYml0IGlzIHNldCwgZXZlbiB0aG91Z2ggdGhlIGRldmljZSBkb2VzIG5vdCBoYXZlIHNvIG1hbnkKKyAgICAgIHRyYW5zaXR0ZXJzLCB0aGVuIHRoaXMgaW9jdGwgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSB0cmFuc2l0dGVycworICAgICAgYW5kIGRvZXMgbm90aGluZyBvdGhlcndpc2UuPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgIDwvdmFybGlzdGVudHJ5PgorICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPkxJUkNfU0VUX1JFQ19USU1FT1VUPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPlNldHMgdGhlIGludGVnZXIgdmFsdWUgZm9yIElSIGluYWN0aXZpdHkgdGltZW91dCAoY2YuCisgICAgICBMSVJDX0dFVF9NSU5fVElNRU9VVCBhbmQgTElSQ19HRVRfTUFYX1RJTUVPVVQpLiBBIHZhbHVlIG9mIDAgKGlmCisgICAgICBzdXBwb3J0ZWQgYnkgdGhlIGhhcmR3YXJlKSBkaXNhYmxlcyBhbGwgaGFyZHdhcmUgdGltZW91dHMgYW5kIGRhdGEgc2hvdWxkCisgICAgICBiZSByZXBvcnRlZCBhcyBzb29uIGFzIHBvc3NpYmxlLiBJZiB0aGUgZXhhY3QgdmFsdWUgY2Fubm90IGJlIHNldCwgdGhlbgorICAgICAgdGhlIG5leHQgcG9zc2libGUgdmFsdWUgX2dyZWF0ZXJfIHRoYW4gdGhlIGdpdmVuIHZhbHVlIHNob3VsZCBiZSBzZXQuPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgIDwvdmFybGlzdGVudHJ5PgorICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPkxJUkNfU0VUX1JFQ19USU1FT1VUX1JFUE9SVFM8L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+RW5hYmxlICgxKSBvciBkaXNhYmxlICgwKSB0aW1lb3V0IHJlcG9ydHMgaW4gTElSQ19NT0RFX01PREUyLiBCeQorICAgICAgZGVmYXVsdCwgdGltZW91dCByZXBvcnRzIHNob3VsZCBiZSB0dXJuZWQgb2ZmLjwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICA8L3Zhcmxpc3RlbnRyeT4KKyAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT5MSVJDX1NFVF9SRUNfRklMVEVSX3ssUFVMU0UsU1BBQ0V9PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPlB1bHNlcy9zcGFjZXMgc2hvcnRlciB0aGFuIHRoaXMgYXJlIGZpbHRlcmVkIG91dCBieSBoYXJkd2FyZS4gSWYKKyAgICAgIGZpbHRlcnMgY2Fubm90IGJlIHNldCBpbmRlcGVuZGVudGx5IGZvciBwdWxzZS9zcGFjZSwgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgIGlvY3RscyBtdXN0IHJldHVybiBhbiBlcnJvciBhbmQgTElSQ19TRVRfUkVDX0ZJTFRFUiBzaGFsbCBiZSB1c2VkIGluc3RlYWQuPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgIDwvdmFybGlzdGVudHJ5PgorICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPkxJUkNfU0VUX01FQVNVUkVfQ0FSUklFUl9NT0RFPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPkVuYWJsZSAoMSkvZGlzYWJsZSAoMCkgbWVhc3VyZSBtb2RlLiBJZiBlbmFibGVkLCBmcm9tIHRoZSBuZXh0IGtleQorICAgICAgcHJlc3Mgb24sIHRoZSBkcml2ZXIgd2lsbCBzZW5kIExJUkNfTU9ERTJfRlJFUVVFTkNZIHBhY2tldHMuIEJ5IGRlZmF1bHQKKyAgICAgIHRoaXMgc2hvdWxkIGJlIHR1cm5lZCBvZmYuPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgIDwvdmFybGlzdGVudHJ5PgorICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPkxJUkNfU0VUX1JFQ197RFVUWV9DWUNMRSxDQVJSSUVSfV9SQU5HRTwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT5UbyBzZXQgYSByYW5nZSB1c2UgTElSQ19TRVRfUkVDX0RVVFlfQ1lDTEVfUkFOR0UvTElSQ19TRVRfUkVDX0NBUlJJRVJfUkFOR0UKKyAgICAgIHdpdGggdGhlIGxvd2VyIGJvdW5kIGZpcnN0IGFuZCBsYXRlciBMSVJDX1NFVF9SRUNfRFVUWV9DWUNMRS9MSVJDX1NFVF9SRUNfQ0FSUklFUgorICAgICAgd2l0aCB0aGUgdXBwZXIgYm91bmQuPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgIDwvdmFybGlzdGVudHJ5PgorICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPkxJUkNfTk9USUZZX0RFQ09ERTwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT5UaGlzIGlvY3RsIGlzIGNhbGxlZCBieSBsaXJjZCB3aGVuZXZlciBhIHN1Y2Nlc3NmdWwgZGVjb2Rpbmcgb2YgYW4KKyAgICAgIGluY29taW5nIElSIHNpZ25hbCBjb3VsZCBiZSBkb25lLiBUaGlzIGNhbiBiZSB1c2VkIGJ5IHN1cHBvcnRpbmcgaGFyZHdhcmUKKyAgICAgIHRvIGdpdmUgdmlzdWFsIGZlZWRiYWNrIHRvIHRoZSB1c2VyIGUuZy4gYnkgZmxhc2hpbmcgYSBMRUQuPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgIDwvdmFybGlzdGVudHJ5PgorICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPkxJUkNfU0VUVVBfe1NUQVJULEVORH08L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+U2V0dGluZyBvZiBzZXZlcmFsIGRyaXZlciBwYXJhbWV0ZXJzIGNhbiBiZSBvcHRpbWl6ZWQgYnkgZW5jYXBzdWxhdGluZworICAgICAgdGhlIGFjY29yZGluZyBpb2N0bCBjYWxscyB3aXRoIExJUkNfU0VUVVBfU1RBUlQvTElSQ19TRVRVUF9FTkQuIFdoZW4gYQorICAgICAgZHJpdmVyIHJlY2VpdmVzIGEgTElSQ19TRVRVUF9TVEFSVCBpb2N0bCBpdCBjYW4gY2hvb3NlIHRvIG5vdCBjb21taXQKKyAgICAgIGZ1cnRoZXIgc2V0dGluZyBjaGFuZ2VzIHRvIHRoZSBoYXJkd2FyZSB1bnRpbCBhIExJUkNfU0VUVVBfRU5EIGlzIHJlY2VpdmVkLgorICAgICAgQnV0IHRoaXMgaXMgb3BlbiB0byB0aGUgZHJpdmVyIGltcGxlbWVudGF0aW9uIGFuZCBldmVyeSBkcml2ZXIgbXVzdCBhbHNvCisgICAgICBoYW5kbGUgcGFyYW1ldGVyIGNoYW5nZXMgd2hpY2ggYXJlIG5vdCBlbmNhcHN1bGF0ZWQgYnkgTElSQ19TRVRVUF9TVEFSVAorICAgICAgYW5kIExJUkNfU0VUVVBfRU5ELiBEcml2ZXJzIGNhbiBhbHNvIGNob29zZSB0byBpZ25vcmUgdGhlc2UgaW9jdGxzLjwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICA8L3Zhcmxpc3RlbnRyeT4KKyAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT5MSVJDX1NFVF9XSURFQkFORF9SRUNFSVZFUjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT5Tb21lIHJlY2VpdmVycyBhcmUgZXF1aXBwZWQgd2l0aCBzcGVjaWFsIHdpZGUgYmFuZCByZWNlaXZlciB3aGljaCBpcyBpbnRlbmRlZAorICAgICAgdG8gYmUgdXNlZCB0byBsZWFybiBvdXRwdXQgb2YgZXhpc3RpbmcgcmVtb3RlLgorICAgICAgQ2FsbGluZyB0aGF0IGlvY3RsIHdpdGggKDEpIHdpbGwgZW5hYmxlIGl0LCBhbmQgd2l0aCAoMCkgZGlzYWJsZSBpdC4KKyAgICAgIFRoaXMgbWlnaHQgYmUgdXNlZnVsIG9mIHJlY2VpdmVycyB0aGF0IGhhdmUgb3RoZXJ3aXNlIG5hcnJvdyBiYW5kIHJlY2VpdmVyCisgICAgICB0aGF0IHByZXZlbnRzIHRoZW0gdG8gYmUgdXNlZCB3aXRoIHNvbWUgcmVtb3Rlcy4KKyAgICAgIFdpZGUgYmFuZCByZWNlaXZlciBtaWdodCBhbHNvIGJlIG1vcmUgcHJlY2lzZQorICAgICAgT24gdGhlIG90aGVyIGhhbmQgaXRzIGRpc2FkdmFudGFnZSBpdCB1c3VhbGx5IHJlZHVjZWQgcmFuZ2Ugb2YgcmVjZXB0aW9uLgorICAgICAgTm90ZTogd2lkZSBiYW5kIHJlY2VpdmVyIG1pZ2h0IGJlIGltcGxpY3RseSBlbmFibGVkIGlmIHlvdSBlbmFibGUKKyAgICAgIGNhcnJpZXIgcmVwb3J0cy4gSW4gdGhhdCBjYXNlIGl0IHdpbGwgYmUgZGlzYWJsZWQgYXMgc29vbiBhcyB5b3UgZGlzYWJsZQorICAgICAgY2FycmllciByZXBvcnRzLiBUcnlpbmcgdG8gZGlzYWJsZSB3aWRlIGJhbmQgcmVjZWl2ZXIgd2hpbGUgY2FycmllcgorICAgICAgcmVwb3J0cyBhcmUgYWN0aXZlIHdpbGwgZG8gbm90aGluZy48L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgPC92YXJsaXN0ZW50cnk+Cis8L3ZhcmlhYmxlbGlzdD4KKzxzZWN0aW9uIGlkPSJsaXJjX2Rldl9lcnJvcnMiPgorICAmcmV0dXJuLXZhbHVlOworPC9zZWN0aW9uPgorPC9zZWN0aW9uPgorPC9zZWN0aW9uPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9tZWRpYS1jb250cm9sbGVyLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvbWVkaWEtY29udHJvbGxlci54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODczYWMzYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvbWVkaWEtY29udHJvbGxlci54bWwKQEAgLTAsMCArMSw4OSBAQAorPHBhcnRpbmZvPgorICA8YXV0aG9yZ3JvdXA+CisgICAgPGF1dGhvcj4KKyAgICAgIDxmaXJzdG5hbWU+TGF1cmVudDwvZmlyc3RuYW1lPgorICAgICAgPHN1cm5hbWU+UGluY2hhcnQ8L3N1cm5hbWU+CisgICAgICA8YWZmaWxpYXRpb24+PGFkZHJlc3M+PGVtYWlsPmxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbTwvZW1haWw+PC9hZGRyZXNzPjwvYWZmaWxpYXRpb24+CisgICAgICA8Y29udHJpYj5Jbml0aWFsIHZlcnNpb24uPC9jb250cmliPgorICAgIDwvYXV0aG9yPgorICA8L2F1dGhvcmdyb3VwPgorICA8Y29weXJpZ2h0PgorICAgIDx5ZWFyPjIwMTA8L3llYXI+CisgICAgPGhvbGRlcj5MYXVyZW50IFBpbmNoYXJ0PC9ob2xkZXI+CisgIDwvY29weXJpZ2h0PgorCisgIDxyZXZoaXN0b3J5PgorICAgIDwhLS0gUHV0IGRvY3VtZW50IHJldmlzaW9ucyBoZXJlLCBuZXdlc3QgZmlyc3QuIC0tPgorICAgIDxyZXZpc2lvbj4KKyAgICAgIDxyZXZudW1iZXI+MS4wLjA8L3Jldm51bWJlcj4KKyAgICAgIDxkYXRlPjIwMTAtMTEtMTA8L2RhdGU+CisgICAgICA8YXV0aG9yaW5pdGlhbHM+bHA8L2F1dGhvcmluaXRpYWxzPgorICAgICAgPHJldnJlbWFyaz5Jbml0aWFsIHJldmlzaW9uPC9yZXZyZW1hcms+CisgICAgPC9yZXZpc2lvbj4KKyAgPC9yZXZoaXN0b3J5PgorPC9wYXJ0aW5mbz4KKworPHRpdGxlPk1lZGlhIENvbnRyb2xsZXIgQVBJPC90aXRsZT4KKworPGNoYXB0ZXIgaWQ9Im1lZGlhX2NvbnRyb2xsZXIiPgorICA8dGl0bGU+TWVkaWEgQ29udHJvbGxlcjwvdGl0bGU+CisKKyAgPHNlY3Rpb24gaWQ9Im1lZGlhLWNvbnRyb2xsZXItaW50cm8iPgorICAgIDx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorICAgIDxwYXJhPk1lZGlhIGRldmljZXMgaW5jcmVhc2luZ2x5IGhhbmRsZSBtdWx0aXBsZSByZWxhdGVkIGZ1bmN0aW9ucy4gTWFueSBVU0IKKyAgICBjYW1lcmFzIGluY2x1ZGUgbWljcm9waG9uZXMsIHZpZGVvIGNhcHR1cmUgaGFyZHdhcmUgY2FuIGFsc28gb3V0cHV0IHZpZGVvLAorICAgIG9yIFNvQyBjYW1lcmEgaW50ZXJmYWNlcyBhbHNvIHBlcmZvcm0gbWVtb3J5LXRvLW1lbW9yeSBvcGVyYXRpb25zIHNpbWlsYXIgdG8KKyAgICB2aWRlbyBjb2RlY3MuPC9wYXJhPgorICAgIDxwYXJhPkluZGVwZW5kZW50IGZ1bmN0aW9ucywgZXZlbiB3aGVuIGltcGxlbWVudGVkIGluIHRoZSBzYW1lIGhhcmR3YXJlLCBjYW4KKyAgICBiZSBtb2RlbGxlZCBhcyBzZXBhcmF0ZSBkZXZpY2VzLiBBIFVTQiBjYW1lcmEgd2l0aCBhIG1pY3JvcGhvbmUgd2lsbCBiZQorICAgIHByZXNlbnRlZCB0byB1c2Vyc3BhY2UgYXBwbGljYXRpb25zIGFzIFY0TDIgYW5kIEFMU0EgY2FwdHVyZSBkZXZpY2VzLiBUaGUKKyAgICBkZXZpY2VzJyByZWxhdGlvbnNoaXBzICh3aGVuIHVzaW5nIGEgd2ViY2FtLCBlbmQtdXNlcnMgc2hvdWxkbid0IGhhdmUgdG8KKyAgICBtYW51YWxseSBzZWxlY3QgdGhlIGFzc29jaWF0ZWQgVVNCIG1pY3JvcGhvbmUpLCB3aGlsZSBub3QgbWFkZSBhdmFpbGFibGUKKyAgICBkaXJlY3RseSB0byBhcHBsaWNhdGlvbnMgYnkgdGhlIGRyaXZlcnMsIGNhbiB1c3VhbGx5IGJlIHJldHJpZXZlZCBmcm9tCisgICAgc3lzZnMuPC9wYXJhPgorICAgIDxwYXJhPldpdGggbW9yZSBhbmQgbW9yZSBhZHZhbmNlZCBTb0MgZGV2aWNlcyBiZWluZyBpbnRyb2R1Y2VkLCB0aGUgY3VycmVudAorICAgIGFwcHJvYWNoIHdpbGwgbm90IHNjYWxlLiBEZXZpY2UgdG9wb2xvZ2llcyBhcmUgZ2V0dGluZyBpbmNyZWFzaW5nbHkgY29tcGxleAorICAgIGFuZCBjYW4ndCBhbHdheXMgYmUgcmVwcmVzZW50ZWQgYnkgYSB0cmVlIHN0cnVjdHVyZS4gSGFyZHdhcmUgYmxvY2tzIGFyZQorICAgIHNoYXJlZCBiZXR3ZWVuIGRpZmZlcmVudCBmdW5jdGlvbnMsIGNyZWF0aW5nIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHNlZW1pbmdseQorICAgIHVucmVsYXRlZCBkZXZpY2VzLjwvcGFyYT4KKyAgICA8cGFyYT5LZXJuZWwgYWJzdHJhY3Rpb24gQVBJcyBzdWNoIGFzIFY0TDIgYW5kIEFMU0EgcHJvdmlkZSBtZWFucyBmb3IKKyAgICBhcHBsaWNhdGlvbnMgdG8gYWNjZXNzIGhhcmR3YXJlIHBhcmFtZXRlcnMuIEFzIG5ld2VyIGhhcmR3YXJlIGV4cG9zZSBhbgorICAgIGluY3JlYXNpbmdseSBoaWdoIG51bWJlciBvZiB0aG9zZSBwYXJhbWV0ZXJzLCBkcml2ZXJzIG5lZWQgdG8gZ3Vlc3Mgd2hhdAorICAgIGFwcGxpY2F0aW9ucyByZWFsbHkgcmVxdWlyZSBiYXNlZCBvbiBsaW1pdGVkIGluZm9ybWF0aW9uLCB0aGVyZWJ5CisgICAgaW1wbGVtZW50aW5nIHBvbGljaWVzIHRoYXQgYmVsb25nIHRvIHVzZXJzcGFjZS48L3BhcmE+CisgICAgPHBhcmE+VGhlIG1lZGlhIGNvbnRyb2xsZXIgQVBJIGFpbXMgYXQgc29sdmluZyB0aG9zZSBwcm9ibGVtcy48L3BhcmE+CisgIDwvc2VjdGlvbj4KKworICA8c2VjdGlvbiBpZD0ibWVkaWEtY29udHJvbGxlci1tb2RlbCI+CisgICAgPHRpdGxlPk1lZGlhIGRldmljZSBtb2RlbDwvdGl0bGU+CisgICAgPHBhcmE+RGlzY292ZXJpbmcgYSBkZXZpY2UgaW50ZXJuYWwgdG9wb2xvZ3ksIGFuZCBjb25maWd1cmluZyBpdCBhdCBydW50aW1lLAorICAgIGlzIG9uZSBvZiB0aGUgZ29hbHMgb2YgdGhlIG1lZGlhIGNvbnRyb2xsZXIgQVBJLiBUbyBhY2hpZXZlIHRoaXMsIGhhcmR3YXJlCisgICAgZGV2aWNlcyBhcmUgbW9kZWxsZWQgYXMgYW4gb3JpZW50ZWQgZ3JhcGggb2YgYnVpbGRpbmcgYmxvY2tzIGNhbGxlZCBlbnRpdGllcworICAgIGNvbm5lY3RlZCB0aHJvdWdoIHBhZHMuPC9wYXJhPgorICAgIDxwYXJhPkFuIGVudGl0eSBpcyBhIGJhc2ljIG1lZGlhIGhhcmR3YXJlIG9yIHNvZnR3YXJlIGJ1aWxkaW5nIGJsb2NrLiBJdCBjYW4KKyAgICBjb3JyZXNwb25kIHRvIGEgbGFyZ2UgdmFyaWV0eSBvZiBsb2dpY2FsIGJsb2NrcyBzdWNoIGFzIHBoeXNpY2FsIGhhcmR3YXJlCisgICAgZGV2aWNlcyAoQ01PUyBzZW5zb3IgZm9yIGluc3RhbmNlKSwgbG9naWNhbCBoYXJkd2FyZSBkZXZpY2VzIChhIGJ1aWxkaW5nCisgICAgYmxvY2sgaW4gYSBTeXN0ZW0tb24tQ2hpcCBpbWFnZSBwcm9jZXNzaW5nIHBpcGVsaW5lKSwgRE1BIGNoYW5uZWxzIG9yCisgICAgcGh5c2ljYWwgY29ubmVjdG9ycy48L3BhcmE+CisgICAgPHBhcmE+QSBwYWQgaXMgYSBjb25uZWN0aW9uIGVuZHBvaW50IHRocm91Z2ggd2hpY2ggYW4gZW50aXR5IGNhbiBpbnRlcmFjdAorICAgIHdpdGggb3RoZXIgZW50aXRpZXMuIERhdGEgKG5vdCByZXN0cmljdGVkIHRvIHZpZGVvKSBwcm9kdWNlZCBieSBhbiBlbnRpdHkKKyAgICBmbG93cyBmcm9tIHRoZSBlbnRpdHkncyBvdXRwdXQgdG8gb25lIG9yIG1vcmUgZW50aXR5IGlucHV0cy4gUGFkcyBzaG91bGQgbm90CisgICAgYmUgY29uZnVzZWQgd2l0aCBwaHlzaWNhbCBwaW5zIGF0IGNoaXAgYm91bmRhcmllcy48L3BhcmE+CisgICAgPHBhcmE+QSBsaW5rIGlzIGEgcG9pbnQtdG8tcG9pbnQgb3JpZW50ZWQgY29ubmVjdGlvbiBiZXR3ZWVuIHR3byBwYWRzLAorICAgIGVpdGhlciBvbiB0aGUgc2FtZSBlbnRpdHkgb3Igb24gZGlmZmVyZW50IGVudGl0aWVzLiBEYXRhIGZsb3dzIGZyb20gYSBzb3VyY2UKKyAgICBwYWQgdG8gYSBzaW5rIHBhZC48L3BhcmE+CisgIDwvc2VjdGlvbj4KKzwvY2hhcHRlcj4KKworPGFwcGVuZGl4IGlkPSJtZWRpYS11c2VyLWZ1bmMiPgorICA8dGl0bGU+RnVuY3Rpb24gUmVmZXJlbmNlPC90aXRsZT4KKyAgPCEtLSBLZWVwIHRoaXMgYWxwaGFiZXRpY2FsbHkgc29ydGVkLiAtLT4KKyAgJnN1Yi1tZWRpYS1mdW5jLW9wZW47CisgICZzdWItbWVkaWEtZnVuYy1jbG9zZTsKKyAgJnN1Yi1tZWRpYS1mdW5jLWlvY3RsOworICA8IS0tIEFsbCBpb2N0bHMgZ28gaGVyZS4gLS0+CisgICZzdWItbWVkaWEtaW9jLWRldmljZS1pbmZvOworICAmc3ViLW1lZGlhLWlvYy1lbnVtLWVudGl0aWVzOworICAmc3ViLW1lZGlhLWlvYy1lbnVtLWxpbmtzOworICAmc3ViLW1lZGlhLWlvYy1zZXR1cC1saW5rOworPC9hcHBlbmRpeD4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvbWVkaWEtZnVuYy1jbG9zZS54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL21lZGlhLWZ1bmMtY2xvc2UueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMTQ5YzgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL21lZGlhLWZ1bmMtY2xvc2UueG1sCkBAIC0wLDAgKzEsNTkgQEAKKzxyZWZlbnRyeSBpZD0ibWVkaWEtZnVuYy1jbG9zZSI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPm1lZGlhIGNsb3NlKCk8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPm1lZGlhLWNsb3NlPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPkNsb3NlIGEgbWVkaWEgZGV2aWNlPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3N5bm9wc2lzaW5mbz4jaW5jbHVkZSAmbHQ7dW5pc3RkLmgmZ3Q7PC9mdW5jc3lub3BzaXNpbmZvPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5jbG9zZTwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPkNsb3NlcyB0aGUgbWVkaWEgZGV2aWNlLiBSZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWxlIGRlc2NyaXB0b3IKKyAgICBhcmUgZnJlZWQuIFRoZSBkZXZpY2UgY29uZmlndXJhdGlvbiByZW1haW4gdW5jaGFuZ2VkLjwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPlJldHVybiBWYWx1ZTwvdGl0bGU+CisKKyAgICA8cGFyYT48ZnVuY3Rpb24+Y2xvc2U8L2Z1bmN0aW9uPiByZXR1cm5zIDAgb24gc3VjY2Vzcy4gT24gZXJyb3IsIC0xIGlzCisgICAgcmV0dXJuZWQsIGFuZCA8dmFybmFtZT5lcnJubzwvdmFybmFtZT4gaXMgc2V0IGFwcHJvcHJpYXRlbHkuIFBvc3NpYmxlIGVycm9yCisgICAgY29kZXMgYXJlOjwvcGFyYT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUJBREY8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPiBpcyBub3QgYSB2YWxpZCBvcGVuIGZpbGUgZGVzY3JpcHRvci4KKwkgIDwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9tZWRpYS1mdW5jLWlvY3RsLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvbWVkaWEtZnVuYy1pb2N0bC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk0NzhkMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvbWVkaWEtZnVuYy1pb2N0bC54bWwKQEAgLTAsMCArMSw3MyBAQAorPHJlZmVudHJ5IGlkPSJtZWRpYS1mdW5jLWlvY3RsIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+bWVkaWEgaW9jdGwoKTwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+bWVkaWEtaW9jdGw8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+Q29udHJvbCBhIG1lZGlhIGRldmljZTwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNzeW5vcHNpc2luZm8+I2luY2x1ZGUgJmx0O3N5cy9pb2N0bC5oJmd0OzwvZnVuY3N5bm9wc2lzaW5mbz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+dm9pZCAqPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPiZmZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+TWVkaWEgaW9jdGwgcmVxdWVzdCBjb2RlIGFzIGRlZmluZWQgaW4gdGhlIG1lZGlhLmggaGVhZGVyIGZpbGUsCisJICBmb3IgZXhhbXBsZSBNRURJQV9JT0NfU0VUVVBfTElOSy48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+UG9pbnRlciB0byBhIHJlcXVlc3Qtc3BlY2lmaWMgc3RydWN0dXJlLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisgICAgPHBhcmE+VGhlIDxmdW5jdGlvbj5pb2N0bCgpPC9mdW5jdGlvbj4gZnVuY3Rpb24gbWFuaXB1bGF0ZXMgbWVkaWEgZGV2aWNlCisgICAgcGFyYW1ldGVycy4gVGhlIGFyZ3VtZW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj4gbXVzdCBiZSBhbiBvcGVuIGZpbGUKKyAgICBkZXNjcmlwdG9yLjwvcGFyYT4KKyAgICA8cGFyYT5UaGUgaW9jdGwgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+IGNvZGUgc3BlY2lmaWVzIHRoZSBtZWRpYQorICAgIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZC4gSXQgaGFzIGVuY29kZWQgaW4gaXQgd2hldGhlciB0aGUgYXJndW1lbnQgaXMgYW4KKyAgICBpbnB1dCwgb3V0cHV0IG9yIHJlYWQvd3JpdGUgcGFyYW1ldGVyLCBhbmQgdGhlIHNpemUgb2YgdGhlIGFyZ3VtZW50CisgICAgPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+IGluIGJ5dGVzLjwvcGFyYT4KKyAgICA8cGFyYT5NYWNyb3MgYW5kIHN0cnVjdHVyZXMgZGVmaW5pdGlvbnMgc3BlY2lmeWluZyBtZWRpYSBpb2N0bCByZXF1ZXN0cyBhbmQKKyAgICB0aGVpciBwYXJhbWV0ZXJzIGFyZSBsb2NhdGVkIGluIHRoZSBtZWRpYS5oIGhlYWRlciBmaWxlLiBBbGwgbWVkaWEgaW9jdGwKKyAgICByZXF1ZXN0cywgdGhlaXIgcmVzcGVjdGl2ZSBmdW5jdGlvbiBhbmQgcGFyYW1ldGVycyBhcmUgc3BlY2lmaWVkIGluCisgICAgPHhyZWYgbGlua2VuZD0ibWVkaWEtdXNlci1mdW5jIiAvPi48L3BhcmE+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisKKyAgICA8cGFyYT5SZXF1ZXN0LXNwZWNpZmljIGVycm9yIGNvZGVzIGFyZSBsaXN0ZWQgaW4gdGhlCisgICAgaW5kaXZpZHVhbCByZXF1ZXN0cyBkZXNjcmlwdGlvbnMuPC9wYXJhPgorICAgIDxwYXJhPldoZW4gYW4gaW9jdGwgdGhhdCB0YWtlcyBhbiBvdXRwdXQgb3IgcmVhZC93cml0ZSBwYXJhbWV0ZXIgZmFpbHMsCisgICAgdGhlIHBhcmFtZXRlciByZW1haW5zIHVubW9kaWZpZWQuPC9wYXJhPgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvbWVkaWEtZnVuYy1vcGVuLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvbWVkaWEtZnVuYy1vcGVuLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjIzNzRhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9tZWRpYS1mdW5jLW9wZW4ueG1sCkBAIC0wLDAgKzEsOTQgQEAKKzxyZWZlbnRyeSBpZD0ibWVkaWEtZnVuYy1vcGVuIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+bWVkaWEgb3BlbigpPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5tZWRpYS1vcGVuPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPk9wZW4gYSBtZWRpYSBkZXZpY2U8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jc3lub3BzaXNpbmZvPiNpbmNsdWRlICZsdDtmY250bC5oJmd0OzwvZnVuY3N5bm9wc2lzaW5mbz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+b3BlbjwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5jb25zdCBjaGFyICo8cGFyYW1ldGVyPmRldmljZV9uYW1lPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmxhZ3M8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZGV2aWNlX25hbWU8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+RGV2aWNlIHRvIGJlIG9wZW5lZC48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZsYWdzPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPk9wZW4gZmxhZ3MuIEFjY2VzcyBtb2RlIG11c3QgYmUgZWl0aGVyIDxjb25zdGFudD5PX1JET05MWTwvY29uc3RhbnQ+CisJICBvciA8Y29uc3RhbnQ+T19SRFdSPC9jb25zdGFudD4uIE90aGVyIGZsYWdzIGhhdmUgbm8gZWZmZWN0LjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorICAgIDxwYXJhPlRvIG9wZW4gYSBtZWRpYSBkZXZpY2UgYXBwbGljYXRpb25zIGNhbGwgPGZ1bmN0aW9uPm9wZW4oKTwvZnVuY3Rpb24+CisgICAgd2l0aCB0aGUgZGVzaXJlZCBkZXZpY2UgbmFtZS4gVGhlIGZ1bmN0aW9uIGhhcyBubyBzaWRlIGVmZmVjdHM7IHRoZSBkZXZpY2UKKyAgICBjb25maWd1cmF0aW9uIHJlbWFpbiB1bmNoYW5nZWQuPC9wYXJhPgorICAgIDxwYXJhPldoZW4gdGhlIGRldmljZSBpcyBvcGVuZWQgaW4gcmVhZC1vbmx5IG1vZGUsIGF0dGVtcHRzIHRvIG1vZGlmeSBpdHMKKyAgICBjb25maWd1cmF0aW9uIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yLCBhbmQgPHZhcm5hbWU+ZXJybm88L3Zhcm5hbWU+IHdpbGwgYmUKKyAgICBzZXQgdG8gPGVycm9yY29kZT5FQkFERjwvZXJyb3Jjb2RlPi48L3BhcmE+CisgIDwvcmVmc2VjdDE+CisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+UmV0dXJuIFZhbHVlPC90aXRsZT4KKworICAgIDxwYXJhPjxmdW5jdGlvbj5vcGVuPC9mdW5jdGlvbj4gcmV0dXJucyB0aGUgbmV3IGZpbGUgZGVzY3JpcHRvciBvbiBzdWNjZXNzLgorICAgIE9uIGVycm9yLCAtMSBpcyByZXR1cm5lZCwgYW5kIDx2YXJuYW1lPmVycm5vPC92YXJuYW1lPiBpcyBzZXQgYXBwcm9wcmlhdGVseS4KKyAgICBQb3NzaWJsZSBlcnJvciBjb2RlcyBhcmU6PC9wYXJhPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FQUNDRVM8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIHJlcXVlc3RlZCBhY2Nlc3MgdG8gdGhlIGZpbGUgaXMgbm90IGFsbG93ZWQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FTUZJTEU8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlICBwcm9jZXNzICBhbHJlYWR5ICBoYXMgIHRoZSAgbWF4aW11bSBudW1iZXIgb2YgZmlsZXMgb3Blbi4KKwkgIDwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RU5GSUxFPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSBzeXN0ZW0gbGltaXQgb24gdGhlIHRvdGFsIG51bWJlciBvZiBvcGVuIGZpbGVzIGhhcyBiZWVuCisJICByZWFjaGVkLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RU5PTUVNPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkluc3VmZmljaWVudCBrZXJuZWwgbWVtb3J5IHdhcyBhdmFpbGFibGUuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FTlhJTzwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5ObyBkZXZpY2UgY29ycmVzcG9uZGluZyB0byB0aGlzIGRldmljZSBzcGVjaWFsIGZpbGUgZXhpc3RzLgorCSAgPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL21lZGlhLWlvYy1kZXZpY2UtaW5mby54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL21lZGlhLWlvYy1kZXZpY2UtaW5mby54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBhMjFhYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvbWVkaWEtaW9jLWRldmljZS1pbmZvLnhtbApAQCAtMCwwICsxLDEzMiBAQAorPHJlZmVudHJ5IGlkPSJtZWRpYS1pb2MtZGV2aWNlLWluZm8iPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBNRURJQV9JT0NfREVWSUNFX0lORk88L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPk1FRElBX0lPQ19ERVZJQ0VfSU5GTzwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5RdWVyeSBkZXZpY2UgaW5mb3JtYXRpb248L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c3RydWN0IG1lZGlhX2RldmljZV9pbmZvICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5CisJICA8bGluayBsaW5rZW5kPSdtZWRpYS1mdW5jLW9wZW4nPjxmdW5jdGlvbj5vcGVuKCk8L2Z1bmN0aW9uPjwvbGluaz4uPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPk1FRElBX0lPQ19ERVZJQ0VfSU5GTzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgPHBhcmE+QWxsIG1lZGlhIGRldmljZXMgbXVzdCBzdXBwb3J0IHRoZSA8Y29uc3RhbnQ+TUVESUFfSU9DX0RFVklDRV9JTkZPPC9jb25zdGFudD4KKyAgICBpb2N0bC4gVG8gcXVlcnkgZGV2aWNlIGluZm9ybWF0aW9uLCBhcHBsaWNhdGlvbnMgY2FsbCB0aGUgaW9jdGwgd2l0aCBhCisgICAgcG9pbnRlciB0byBhICZtZWRpYS1kZXZpY2UtaW5mbzsuIFRoZSBkcml2ZXIgZmlsbHMgdGhlIHN0cnVjdHVyZSBhbmQgcmV0dXJucworICAgIHRoZSBpbmZvcm1hdGlvbiB0byB0aGUgYXBwbGljYXRpb24uCisgICAgVGhlIGlvY3RsIG5ldmVyIGZhaWxzLjwvcGFyYT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0ibWVkaWEtZGV2aWNlLWluZm8iPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT5tZWRpYV9kZXZpY2VfaW5mbzwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3Mtc3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+Y2hhcjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZHJpdmVyPC9zdHJ1Y3RmaWVsZD5bMTZdPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxwYXJhPk5hbWUgb2YgdGhlIGRyaXZlciBpbXBsZW1lbnRpbmcgdGhlIG1lZGlhIEFQSSBhcyBhCisJICAgIE5VTC10ZXJtaW5hdGVkIEFTQ0lJIHN0cmluZy4gVGhlIGRyaXZlciB2ZXJzaW9uIGlzIHN0b3JlZCBpbiB0aGUKKwkgICAgPHN0cnVjdGZpZWxkPmRyaXZlcl92ZXJzaW9uPC9zdHJ1Y3RmaWVsZD4gZmllbGQuPC9wYXJhPgorCSAgICA8cGFyYT5Ecml2ZXIgc3BlY2lmaWMgYXBwbGljYXRpb25zIGNhbiB1c2UgdGhpcyBpbmZvcm1hdGlvbiB0bworCSAgICB2ZXJpZnkgdGhlIGRyaXZlciBpZGVudGl0eS4gSXQgaXMgYWxzbyB1c2VmdWwgdG8gd29yayBhcm91bmQKKwkgICAga25vd24gYnVncywgb3IgdG8gaWRlbnRpZnkgZHJpdmVycyBpbiBlcnJvciByZXBvcnRzLjwvcGFyYT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+Y2hhcjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+bW9kZWw8L3N0cnVjdGZpZWxkPlszMl08L2VudHJ5PgorCSAgICA8ZW50cnk+RGV2aWNlIG1vZGVsIG5hbWUgYXMgYSBOVUwtdGVybWluYXRlZCBVVEYtOCBzdHJpbmcuIFRoZQorCSAgICBkZXZpY2UgdmVyc2lvbiBpcyBzdG9yZWQgaW4gdGhlIDxzdHJ1Y3RmaWVsZD5kZXZpY2VfdmVyc2lvbjwvc3RydWN0ZmllbGQ+CisJICAgIGZpZWxkIGFuZCBpcyBub3QgYmUgYXBwZW5kZWQgdG8gdGhlIG1vZGVsIG5hbWUuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PmNoYXI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnNlcmlhbDwvc3RydWN0ZmllbGQ+WzQwXTwvZW50cnk+CisJICAgIDxlbnRyeT5TZXJpYWwgbnVtYmVyIGFzIGEgTlVMLXRlcm1pbmF0ZWQgQVNDSUkgc3RyaW5nLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5jaGFyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5idXNfaW5mbzwvc3RydWN0ZmllbGQ+WzMyXTwvZW50cnk+CisJICAgIDxlbnRyeT5Mb2NhdGlvbiBvZiB0aGUgZGV2aWNlIGluIHRoZSBzeXN0ZW0gYXMgYSBOVUwtdGVybWluYXRlZAorCSAgICBBU0NJSSBzdHJpbmcuIFRoaXMgaW5jbHVkZXMgdGhlIGJ1cyB0eXBlIG5hbWUgKFBDSSwgVVNCLCAuLi4pIGFuZCBhCisJICAgIGJ1cy1zcGVjaWZpYyBpZGVudGlmaWVyLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+bWVkaWFfdmVyc2lvbjwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk1lZGlhIEFQSSB2ZXJzaW9uLCBmb3JtYXR0ZWQgd2l0aCB0aGUKKwkgICAgPGNvbnN0YW50PktFUk5FTF9WRVJTSU9OKCk8L2NvbnN0YW50PiBtYWNyby48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmh3X3JldmlzaW9uPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+SGFyZHdhcmUgZGV2aWNlIHJldmlzaW9uIGluIGEgZHJpdmVyLXNwZWNpZmljIGZvcm1hdC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmRyaXZlcl92ZXJzaW9uPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+TWVkaWEgZGV2aWNlIGRyaXZlciB2ZXJzaW9uLCBmb3JtYXR0ZWQgd2l0aCB0aGUKKwkgICAgPGNvbnN0YW50PktFUk5FTF9WRVJTSU9OKCk8L2NvbnN0YW50PiBtYWNyby4gVG9nZXRoZXIgd2l0aCB0aGUKKwkgICAgPHN0cnVjdGZpZWxkPmRyaXZlcjwvc3RydWN0ZmllbGQ+IGZpZWxkIHRoaXMgaWRlbnRpZmllcyBhIHBhcnRpY3VsYXIKKwkgICAgZHJpdmVyLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cmVzZXJ2ZWQ8L3N0cnVjdGZpZWxkPlszMV08L2VudHJ5PgorCSAgICA8ZW50cnk+UmVzZXJ2ZWQgZm9yIGZ1dHVyZSBleHRlbnNpb25zLiBEcml2ZXJzIGFuZCBhcHBsaWNhdGlvbnMgbXVzdAorCSAgICBzZXQgdGhpcyBhcnJheSB0byB6ZXJvLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgICA8cGFyYT5UaGUgPHN0cnVjdGZpZWxkPnNlcmlhbDwvc3RydWN0ZmllbGQ+IGFuZCA8c3RydWN0ZmllbGQ+YnVzX2luZm88L3N0cnVjdGZpZWxkPgorICAgIGZpZWxkcyBjYW4gYmUgdXNlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIG11bHRpcGxlIGluc3RhbmNlcyBvZiBvdGhlcndpc2UKKyAgICBpZGVudGljYWwgaGFyZHdhcmUuIFRoZSBzZXJpYWwgbnVtYmVyIHRha2VzIHByZWNlZGVuY2Ugd2hlbiBwcm92aWRlZCBhbmQgY2FuCisgICAgYmUgYXNzdW1lZCB0byBiZSB1bmlxdWUuIElmIHRoZSBzZXJpYWwgbnVtYmVyIGlzIGFuIGVtcHR5IHN0cmluZywgdGhlCisgICAgPHN0cnVjdGZpZWxkPmJ1c19pbmZvPC9zdHJ1Y3RmaWVsZD4gZmllbGQgY2FuIGJlIHVzZWQgaW5zdGVhZC4gVGhlCisgICAgPHN0cnVjdGZpZWxkPmJ1c19pbmZvPC9zdHJ1Y3RmaWVsZD4gZmllbGQgaXMgZ3VhcmFudGVlZCB0byBiZSB1bmlxdWUsIGJ1dAorICAgIGNhbiB2YXJ5IGFjcm9zcyByZWJvb3RzIG9yIGRldmljZSB1bnBsdWcvcmVwbHVnLjwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL21lZGlhLWlvYy1lbnVtLWVudGl0aWVzLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvbWVkaWEtaW9jLWVudW0tZW50aXRpZXMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4NzJmOGIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL21lZGlhLWlvYy1lbnVtLWVudGl0aWVzLnhtbApAQCAtMCwwICsxLDI4MCBAQAorPHJlZmVudHJ5IGlkPSJtZWRpYS1pb2MtZW51bS1lbnRpdGllcyI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIE1FRElBX0lPQ19FTlVNX0VOVElUSUVTPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5NRURJQV9JT0NfRU5VTV9FTlRJVElFUzwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5FbnVtZXJhdGUgZW50aXRpZXMgYW5kIHRoZWlyIHByb3BlcnRpZXM8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c3RydWN0IG1lZGlhX2VudGl0eV9kZXNjICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+RmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5CisJICA8bGluayBsaW5rZW5kPSdtZWRpYS1mdW5jLW9wZW4nPjxmdW5jdGlvbj5vcGVuKCk8L2Z1bmN0aW9uPjwvbGluaz4uPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPk1FRElBX0lPQ19FTlVNX0VOVElUSUVTPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisgICAgPHBhcmE+VG8gcXVlcnkgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gZW50aXR5LCBhcHBsaWNhdGlvbnMgc2V0IHRoZSBpZCBmaWVsZAorICAgIG9mIGEgJm1lZGlhLWVudGl0eS1kZXNjOyBzdHJ1Y3R1cmUgYW5kIGNhbGwgdGhlIE1FRElBX0lPQ19FTlVNX0VOVElUSUVTCisgICAgaW9jdGwgd2l0aCBhIHBvaW50ZXIgdG8gdGhpcyBzdHJ1Y3R1cmUuIFRoZSBkcml2ZXIgZmlsbHMgdGhlIHJlc3Qgb2YgdGhlCisgICAgc3RydWN0dXJlIG9yIHJldHVybnMgYW4gJkVJTlZBTDsgd2hlbiB0aGUgaWQgaXMgaW52YWxpZC48L3BhcmE+CisgICAgPHBhcmE+RW50aXRpZXMgY2FuIGJlIGVudW1lcmF0ZWQgYnkgb3InaW5nIHRoZSBpZCB3aXRoIHRoZQorICAgIDxjb25zdGFudD5NRURJQV9FTlRfSURfRkxBR19ORVhUPC9jb25zdGFudD4gZmxhZy4gVGhlIGRyaXZlciB3aWxsIHJldHVybgorICAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBlbnRpdHkgd2l0aCB0aGUgc21hbGxlc3QgaWQgc3RyaWN0bHkgbGFyZ2VyIHRoYW4gdGhlCisgICAgcmVxdWVzdGVkIG9uZSAoJ25leHQgZW50aXR5JyksIG9yIHRoZSAmRUlOVkFMOyBpZiB0aGVyZSBpcyBub25lLjwvcGFyYT4KKyAgICA8cGFyYT5FbnRpdHkgSURzIGNhbiBiZSBub24tY29udGlndW91cy4gQXBwbGljYXRpb25zIG11c3QKKyAgICA8ZW1waGFzaXM+bm90PC9lbXBoYXNpcz4gdHJ5IHRvIGVudW1lcmF0ZSBlbnRpdGllcyBieSBjYWxsaW5nCisgICAgTUVESUFfSU9DX0VOVU1fRU5USVRJRVMgd2l0aCBpbmNyZWFzaW5nIGlkJ3MgdW50aWwgdGhleSBnZXQgYW4gZXJyb3IuPC9wYXJhPgorICAgIDxwYXJhPlR3byBvciBtb3JlIGVudGl0aWVzIHRoYXQgc2hhcmUgYSBjb21tb24gbm9uLXplcm8KKyAgICA8c3RydWN0ZmllbGQ+Z3JvdXBfaWQ8L3N0cnVjdGZpZWxkPiB2YWx1ZSBhcmUgY29uc2lkZXJlZCBhcyBsb2dpY2FsbHkKKyAgICBncm91cGVkLiBHcm91cHMgYXJlIHVzZWQgdG8gcmVwb3J0CisgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgIDxsaXN0aXRlbT48cGFyYT5BTFNBLCBWQkkgYW5kIHZpZGVvIG5vZGVzIHRoYXQgY2FycnkgdGhlIHNhbWUgbWVkaWEKKyAgICAgIHN0cmVhbTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgPGxpc3RpdGVtPjxwYXJhPmxlbnMgYW5kIGZsYXNoIGNvbnRyb2xsZXJzIGFzc29jaWF0ZWQgd2l0aCBhIHNlbnNvcjwvcGFyYT48L2xpc3RpdGVtPgorICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDwvcGFyYT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0ibWVkaWEtZW50aXR5LWRlc2MiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT5tZWRpYV9lbnRpdHlfZGVzYzwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSI1Ij4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMSIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMiIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMyIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjNCIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjNSIgLz4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5pZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+RW50aXR5IGlkLCBzZXQgYnkgdGhlIGFwcGxpY2F0aW9uLiBXaGVuIHRoZSBpZCBpcyBvcidlZCB3aXRoCisJICAgIDxjb25zdGFudD5NRURJQV9FTlRfSURfRkxBR19ORVhUPC9jb25zdGFudD4sIHRoZSBkcml2ZXIgY2xlYXJzIHRoZQorCSAgICBmbGFnIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBlbnRpdHkgd2l0aCBhIGxhcmdlciBpZC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+Y2hhcjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+bmFtZTwvc3RydWN0ZmllbGQ+WzMyXTwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkVudGl0eSBuYW1lIGFzIGFuIFVURi04IE5VTEwtdGVybWluYXRlZCBzdHJpbmcuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5FbnRpdHkgdHlwZSwgc2VlIDx4cmVmIGxpbmtlbmQ9Im1lZGlhLWVudGl0eS10eXBlIiAvPiBmb3IgZGV0YWlscy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJldmlzaW9uPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5FbnRpdHkgcmV2aXNpb24gaW4gYSBkcml2ZXIvaGFyZHdhcmUgc3BlY2lmaWMgZm9ybWF0LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZmxhZ3M8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkVudGl0eSBmbGFncywgc2VlIDx4cmVmIGxpbmtlbmQ9Im1lZGlhLWVudGl0eS1mbGFnIiAvPiBmb3IgZGV0YWlscy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmdyb3VwX2lkPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5FbnRpdHkgZ3JvdXAgSUQ8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MTY8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnBhZHM8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk51bWJlciBvZiBwYWRzPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTE2PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5saW5rczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+VG90YWwgbnVtYmVyIG9mIG91dGJvdW5kIGxpbmtzLiBJbmJvdW5kIGxpbmtzIGFyZSBub3QgY291bnRlZAorCSAgICBpbiB0aGlzIGZpZWxkLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT51bmlvbjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+c3RydWN0PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5kZXY8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+VmFsaWQgZm9yIChzdWItKWRldmljZXMgdGhhdCBjcmVhdGUgYSBzaW5nbGUgZGV2aWNlIG5vZGUuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm1ham9yPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+RGV2aWNlIG5vZGUgbWFqb3IgbnVtYmVyLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5taW5vcjwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkRldmljZSBub2RlIG1pbm9yIG51bWJlci48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pl9fdTg8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJhdzwvc3RydWN0ZmllbGQ+WzE4NF08L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBmcmFtZT0ibm9uZSIgcGd3aWRlPSIxIiBpZD0ibWVkaWEtZW50aXR5LXR5cGUiPgorICAgICAgPHRpdGxlPk1lZGlhIGVudGl0eSB0eXBlczwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjIiPgorICAgICAgICA8Y29sc3BlYyBjb2xuYW1lPSJjMSIvPgorICAgICAgICA8Y29sc3BlYyBjb2xuYW1lPSJjMiIvPgorCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50Pk1FRElBX0VOVF9UX0RFVk5PREU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5Vbmtub3duIGRldmljZSBub2RlPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5NRURJQV9FTlRfVF9ERVZOT0RFX1Y0TDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlY0TCB2aWRlbywgcmFkaW8gb3IgdmJpIGRldmljZSBub2RlPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5NRURJQV9FTlRfVF9ERVZOT0RFX0ZCPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+RnJhbWUgYnVmZmVyIGRldmljZSBub2RlPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5NRURJQV9FTlRfVF9ERVZOT0RFX0FMU0E8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5BTFNBIGNhcmQ8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50Pk1FRElBX0VOVF9UX0RFVk5PREVfRFZCX0ZFPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+RFZCIGZyb250ZW5kIGRldm5vZGU8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50Pk1FRElBX0VOVF9UX0RFVk5PREVfRFZCX0RFTVVYPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+RFZCIGRlbXV4IGRldm5vZGU8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50Pk1FRElBX0VOVF9UX0RFVk5PREVfRFZCX0RWUjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkRWQiBEVlIgZGV2bm9kZTwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+TUVESUFfRU5UX1RfREVWTk9ERV9EVkJfQ0E8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5EVkIgQ0FNIGRldm5vZGU8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50Pk1FRElBX0VOVF9UX0RFVk5PREVfRFZCX05FVDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkRWQiBuZXR3b3JrIGRldm5vZGU8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50Pk1FRElBX0VOVF9UX1Y0TDJfU1VCREVWPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+VW5rbm93biBWNEwgc3ViLWRldmljZTwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+TUVESUFfRU5UX1RfVjRMMl9TVUJERVZfU0VOU09SPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+VmlkZW8gc2Vuc29yPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5NRURJQV9FTlRfVF9WNEwyX1NVQkRFVl9GTEFTSDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkZsYXNoIGNvbnRyb2xsZXI8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50Pk1FRElBX0VOVF9UX1Y0TDJfU1VCREVWX0xFTlM8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5MZW5zIGNvbnRyb2xsZXI8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50Pk1FRElBX0VOVF9UX1Y0TDJfU1VCREVWX0RFQ09ERVI8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5WaWRlbyBkZWNvZGVyLCB0aGUgYmFzaWMgZnVuY3Rpb24gb2YgdGhlIHZpZGVvIGRlY29kZXIgaXMgdG8KKwkgICAgYWNjZXB0IGFuYWxvZ3VlIHZpZGVvIGZyb20gYSB3aWRlIHZhcmlldHkgb2Ygc291cmNlcyBzdWNoIGFzCisJICAgIGJyb2FkY2FzdCwgRFZEIHBsYXllcnMsIGNhbWVyYXMgYW5kIHZpZGVvIGNhc3NldHRlIHJlY29yZGVycywgaW4KKwkgICAgZWl0aGVyIE5UU0MsIFBBTCBvciBIRCBmb3JtYXQgYW5kIHN0aWxsIG9jY2FzaW9uYWxseSBTRUNBTSwgc2VwYXJhdGUKKwkgICAgaXQgaW50byBpdHMgY29tcG9uZW50IHBhcnRzLCBsdW1pbmFuY2UgYW5kIGNocm9taW5hbmNlLCBhbmQgb3V0cHV0CisJICAgIGl0IGluIHNvbWUgZGlnaXRhbCB2aWRlbyBzdGFuZGFyZCwgd2l0aCBhcHByb3ByaWF0ZSBlbWJlZGRlZCB0aW1pbmcKKwkgICAgc2lnbmFscy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50Pk1FRElBX0VOVF9UX1Y0TDJfU1VCREVWX1RVTkVSPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+VFYgYW5kL29yIHJhZGlvIHR1bmVyPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIGZyYW1lPSJub25lIiBwZ3dpZGU9IjEiIGlkPSJtZWRpYS1lbnRpdHktZmxhZyI+CisgICAgICA8dGl0bGU+TWVkaWEgZW50aXR5IGZsYWdzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMiI+CisgICAgICAgIDxjb2xzcGVjIGNvbG5hbWU9ImMxIi8+CisgICAgICAgIDxjb2xzcGVjIGNvbG5hbWU9ImMyIi8+CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+TUVESUFfRU5UX0ZMX0RFRkFVTFQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5EZWZhdWx0IGVudGl0eSBmb3IgaXRzIHR5cGUuIFVzZWQgdG8gZGlzY292ZXIgdGhlIGRlZmF1bHQKKwkgICAgYXVkaW8sIFZCSSBhbmQgdmlkZW8gZGV2aWNlcywgdGhlIGRlZmF1bHQgY2FtZXJhIHNlbnNvciwgLi4uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICAmcmV0dXJuLXZhbHVlOworCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FSU5WQUw8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlICZtZWRpYS1lbnRpdHktZGVzYzsgPHN0cnVjdGZpZWxkPmlkPC9zdHJ1Y3RmaWVsZD4gcmVmZXJlbmNlcworCSAgYSBub24tZXhpc3RpbmcgZW50aXR5LjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9tZWRpYS1pb2MtZW51bS1saW5rcy54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL21lZGlhLWlvYy1lbnVtLWxpbmtzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGZiMzk0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9tZWRpYS1pb2MtZW51bS1saW5rcy54bWwKQEAgLTAsMCArMSwyMTYgQEAKKzxyZWZlbnRyeSBpZD0ibWVkaWEtaW9jLWVudW0tbGlua3MiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBNRURJQV9JT0NfRU5VTV9MSU5LUzwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+TUVESUFfSU9DX0VOVU1fTElOS1M8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+RW51bWVyYXRlIGFsbCBwYWRzIGFuZCBsaW5rcyBmb3IgYSBnaXZlbiBlbnRpdHk8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c3RydWN0IG1lZGlhX2xpbmtzX2VudW0gKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkKKwkgIDxsaW5rIGxpbmtlbmQ9J21lZGlhLWZ1bmMtb3Blbic+PGZ1bmN0aW9uPm9wZW4oKTwvZnVuY3Rpb24+PC9saW5rPi48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+TUVESUFfSU9DX0VOVU1fTElOS1M8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPlRvIGVudW1lcmF0ZSBwYWRzIGFuZC9vciBsaW5rcyBmb3IgYSBnaXZlbiBlbnRpdHksIGFwcGxpY2F0aW9ucyBzZXQKKyAgICB0aGUgZW50aXR5IGZpZWxkIG9mIGEgJm1lZGlhLWxpbmtzLWVudW07IHN0cnVjdHVyZSBhbmQgaW5pdGlhbGl6ZSB0aGUKKyAgICAmbWVkaWEtcGFkLWRlc2M7IGFuZCAmbWVkaWEtbGluay1kZXNjOyBzdHJ1Y3R1cmUgYXJyYXlzIHBvaW50ZWQgYnkgdGhlCisgICAgPHN0cnVjdGZpZWxkPnBhZHM8L3N0cnVjdGZpZWxkPiBhbmQgPHN0cnVjdGZpZWxkPmxpbmtzPC9zdHJ1Y3RmaWVsZD4gZmllbGRzLgorICAgIFRoZXkgdGhlbiBjYWxsIHRoZSBNRURJQV9JT0NfRU5VTV9MSU5LUyBpb2N0bCB3aXRoIGEgcG9pbnRlciB0byB0aGlzCisgICAgc3RydWN0dXJlLjwvcGFyYT4KKyAgICA8cGFyYT5JZiB0aGUgPHN0cnVjdGZpZWxkPnBhZHM8L3N0cnVjdGZpZWxkPiBmaWVsZCBpcyBub3QgTlVMTCwgdGhlIGRyaXZlcgorICAgIGZpbGxzIHRoZSA8c3RydWN0ZmllbGQ+cGFkczwvc3RydWN0ZmllbGQ+IGFycmF5IHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlCisgICAgZW50aXR5J3MgcGFkcy4gVGhlIGFycmF5IG11c3QgaGF2ZSBlbm91Z2ggcm9vbSB0byBzdG9yZSBhbGwgdGhlIGVudGl0eSdzCisgICAgcGFkcy4gVGhlIG51bWJlciBvZiBwYWRzIGNhbiBiZSByZXRyaWV2ZWQgd2l0aCB0aGUgJk1FRElBLUlPQy1FTlVNLUVOVElUSUVTOworICAgIGlvY3RsLjwvcGFyYT4KKyAgICA8cGFyYT5JZiB0aGUgPHN0cnVjdGZpZWxkPmxpbmtzPC9zdHJ1Y3RmaWVsZD4gZmllbGQgaXMgbm90IE5VTEwsIHRoZSBkcml2ZXIKKyAgICBmaWxscyB0aGUgPHN0cnVjdGZpZWxkPmxpbmtzPC9zdHJ1Y3RmaWVsZD4gYXJyYXkgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAgICBlbnRpdHkncyBvdXRib3VuZCBsaW5rcy4gVGhlIGFycmF5IG11c3QgaGF2ZSBlbm91Z2ggcm9vbSB0byBzdG9yZSBhbGwgdGhlCisgICAgZW50aXR5J3Mgb3V0Ym91bmQgbGlua3MuIFRoZSBudW1iZXIgb2Ygb3V0Ym91bmQgbGlua3MgY2FuIGJlIHJldHJpZXZlZCB3aXRoCisgICAgdGhlICZNRURJQS1JT0MtRU5VTS1FTlRJVElFUzsgaW9jdGwuPC9wYXJhPgorICAgIDxwYXJhPk9ubHkgZm9yd2FyZCBsaW5rcyB0aGF0IG9yaWdpbmF0ZSBhdCBvbmUgb2YgdGhlIGVudGl0eSdzIHNvdXJjZSBwYWRzCisgICAgYXJlIHJldHVybmVkIGR1cmluZyB0aGUgZW51bWVyYXRpb24gcHJvY2Vzcy48L3BhcmE+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9Im1lZGlhLWxpbmtzLWVudW0iPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT5tZWRpYV9saW5rc19lbnVtPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorICAgICAgICAmY3Mtc3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmVudGl0eTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkVudGl0eSBpZCwgc2V0IGJ5IHRoZSBhcHBsaWNhdGlvbi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+Jm1lZGlhLXBhZC1kZXNjOzwvZW50cnk+CisJICAgIDxlbnRyeT4qPHN0cnVjdGZpZWxkPnBhZHM8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5Qb2ludGVyIHRvIGEgcGFkcyBhcnJheSBhbGxvY2F0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBJZ25vcmVkCisJICAgIGlmIE5VTEwuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PiZtZWRpYS1saW5rLWRlc2M7PC9lbnRyeT4KKwkgICAgPGVudHJ5Pio8c3RydWN0ZmllbGQ+bGlua3M8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5Qb2ludGVyIHRvIGEgbGlua3MgYXJyYXkgYWxsb2NhdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4gSWdub3JlZAorCSAgICBpZiBOVUxMLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0ibWVkaWEtcGFkLWRlc2MiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT5tZWRpYV9wYWRfZGVzYzwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKyAgICAgICAgJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5lbnRpdHk8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5JRCBvZiB0aGUgZW50aXR5IHRoaXMgcGFkIGJlbG9uZ3MgdG8uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTE2PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5pbmRleDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjAtYmFzZWQgcGFkIGluZGV4LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZmxhZ3M8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5QYWQgZmxhZ3MsIHNlZSA8eHJlZiBsaW5rZW5kPSJtZWRpYS1wYWQtZmxhZyIgLz4gZm9yIG1vcmUgZGV0YWlscy48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgZnJhbWU9Im5vbmUiIHBnd2lkZT0iMSIgaWQ9Im1lZGlhLXBhZC1mbGFnIj4KKyAgICAgIDx0aXRsZT5NZWRpYSBwYWQgZmxhZ3M8L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIyIj4KKyAgICAgICAgPGNvbHNwZWMgY29sbmFtZT0iYzEiLz4KKyAgICAgICAgPGNvbHNwZWMgY29sbmFtZT0iYzIiLz4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5NRURJQV9QQURfRkxfU0lOSzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PklucHV0IHBhZCwgcmVsYXRpdmUgdG8gdGhlIGVudGl0eS4gSW5wdXQgcGFkcyBzaW5rIGRhdGEgYW5kCisJICAgIGFyZSB0YXJnZXRzIG9mIGxpbmtzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+TUVESUFfUEFEX0ZMX1NPVVJDRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk91dHB1dCBwYWQsIHJlbGF0aXZlIHRvIHRoZSBlbnRpdHkuIE91dHB1dCBwYWRzIHNvdXJjZSBkYXRhCisJICAgIGFuZCBhcmUgb3JpZ2lucyBvZiBsaW5rcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50Pk1FRElBX1BBRF9GTF9NVVNUX0NPTk5FQ1Q8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5JZiB0aGlzIGZsYWcgaXMgc2V0IGFuZCB0aGUgcGFkIGlzIGxpbmtlZCB0byBhbnkgb3RoZXIKKwkgICAgcGFkLCB0aGVuIGF0IGxlYXN0IG9uZSBvZiB0aG9zZSBsaW5rcyBtdXN0IGJlIGVuYWJsZWQgZm9yIHRoZQorCSAgICBlbnRpdHkgdG8gYmUgYWJsZSB0byBzdHJlYW0uIFRoZXJlIGNvdWxkIGJlIHRlbXBvcmFyeSByZWFzb25zCisJICAgIChlLmcuIGRldmljZSBjb25maWd1cmF0aW9uIGRlcGVuZGVudCkgZm9yIHRoZSBwYWQgdG8gbmVlZAorCSAgICBlbmFibGVkIGxpbmtzIGV2ZW4gd2hlbiB0aGlzIGZsYWcgaXNuJ3Qgc2V0OyB0aGUgYWJzZW5jZSBvZiB0aGUKKwkgICAgZmxhZyBkb2Vzbid0IGltcGx5IHRoZXJlIGlzIG5vbmUuPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJtZWRpYS1saW5rLWRlc2MiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT5tZWRpYV9saW5rX2Rlc2M8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisgICAgICAgICZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT4mbWVkaWEtcGFkLWRlc2M7PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5zb3VyY2U8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5QYWQgYXQgdGhlIG9yaWdpbiBvZiB0aGlzIGxpbmsuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PiZtZWRpYS1wYWQtZGVzYzs8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnNpbms8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5QYWQgYXQgdGhlIHRhcmdldCBvZiB0aGlzIGxpbmsuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5mbGFnczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkxpbmsgZmxhZ3MsIHNlZSA8eHJlZiBsaW5rZW5kPSJtZWRpYS1saW5rLWZsYWciIC8+IGZvciBtb3JlIGRldGFpbHMuPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIGZyYW1lPSJub25lIiBwZ3dpZGU9IjEiIGlkPSJtZWRpYS1saW5rLWZsYWciPgorICAgICAgPHRpdGxlPk1lZGlhIGxpbmsgZmxhZ3M8L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIyIj4KKyAgICAgICAgPGNvbHNwZWMgY29sbmFtZT0iYzEiLz4KKyAgICAgICAgPGNvbHNwZWMgY29sbmFtZT0iYzIiLz4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5NRURJQV9MTktfRkxfRU5BQkxFRDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBsaW5rIGlzIGVuYWJsZWQgYW5kIGNhbiBiZSB1c2VkIHRvIHRyYW5zZmVyIG1lZGlhIGRhdGEuCisJICAgIFdoZW4gdHdvIG9yIG1vcmUgbGlua3MgdGFyZ2V0IGEgc2luayBwYWQsIG9ubHkgb25lIG9mIHRoZW0gY2FuIGJlCisJICAgIGVuYWJsZWQgYXQgYSB0aW1lLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+TUVESUFfTE5LX0ZMX0lNTVVUQUJMRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBsaW5rIGVuYWJsZWQgc3RhdGUgY2FuJ3QgYmUgbW9kaWZpZWQgYXQgcnVudGltZS4gQW4KKwkgICAgaW1tdXRhYmxlIGxpbmsgaXMgYWx3YXlzIGVuYWJsZWQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5NRURJQV9MTktfRkxfRFlOQU1JQzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBsaW5rIGVuYWJsZWQgc3RhdGUgY2FuIGJlIG1vZGlmaWVkIGR1cmluZyBzdHJlYW1pbmcuIFRoaXMKKwkgICAgZmxhZyBpcyBzZXQgYnkgZHJpdmVycyBhbmQgaXMgcmVhZC1vbmx5IGZvciBhcHBsaWNhdGlvbnMuPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorICAgIDxwYXJhPk9uZSBhbmQgb25seSBvbmUgb2YgPGNvbnN0YW50Pk1FRElBX1BBRF9GTF9TSU5LPC9jb25zdGFudD4gYW5kCisgICAgPGNvbnN0YW50Pk1FRElBX1BBRF9GTF9TT1VSQ0U8L2NvbnN0YW50PiBtdXN0IGJlIHNldCBmb3IgZXZlcnkgcGFkLjwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSAmbWVkaWEtbGlua3MtZW51bTsgPHN0cnVjdGZpZWxkPmlkPC9zdHJ1Y3RmaWVsZD4gcmVmZXJlbmNlcworCSAgYSBub24tZXhpc3RpbmcgZW50aXR5LjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9tZWRpYS1pb2Mtc2V0dXAtbGluay54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL21lZGlhLWlvYy1zZXR1cC1saW5rLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzJlNTIyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9tZWRpYS1pb2Mtc2V0dXAtbGluay54bWwKQEAgLTAsMCArMSw4NCBAQAorPHJlZmVudHJ5IGlkPSJtZWRpYS1pb2Mtc2V0dXAtbGluayI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIE1FRElBX0lPQ19TRVRVUF9MSU5LPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5NRURJQV9JT0NfU0VUVVBfTElOSzwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5Nb2RpZnkgdGhlIHByb3BlcnRpZXMgb2YgYSBsaW5rPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCBtZWRpYV9saW5rX2Rlc2MgKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5GaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgYnkKKwkgIDxsaW5rIGxpbmtlbmQ9J21lZGlhLWZ1bmMtb3Blbic+PGZ1bmN0aW9uPm9wZW4oKTwvZnVuY3Rpb24+PC9saW5rPi48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+TUVESUFfSU9DX1NFVFVQX0xJTks8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPlRvIGNoYW5nZSBsaW5rIHByb3BlcnRpZXMgYXBwbGljYXRpb25zIGZpbGwgYSAmbWVkaWEtbGluay1kZXNjOyB3aXRoCisgICAgbGluayBpZGVudGlmaWNhdGlvbiBpbmZvcm1hdGlvbiAoc291cmNlIGFuZCBzaW5rIHBhZCkgYW5kIHRoZSBuZXcgcmVxdWVzdGVkCisgICAgbGluayBmbGFncy4gVGhleSB0aGVuIGNhbGwgdGhlIE1FRElBX0lPQ19TRVRVUF9MSU5LIGlvY3RsIHdpdGggYSBwb2ludGVyIHRvCisgICAgdGhhdCBzdHJ1Y3R1cmUuPC9wYXJhPgorICAgIDxwYXJhPlRoZSBvbmx5IGNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSBpcyB0aGUgPGNvbnN0YW50PkVOQUJMRUQ8L2NvbnN0YW50PgorICAgIGxpbmsgZmxhZyB0byBlbmFibGUvZGlzYWJsZSBhIGxpbmsuIExpbmtzIG1hcmtlZCB3aXRoIHRoZQorICAgIDxjb25zdGFudD5JTU1VVEFCTEU8L2NvbnN0YW50PiBsaW5rIGZsYWcgY2FuIG5vdCBiZSBlbmFibGVkIG9yIGRpc2FibGVkLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT5MaW5rIGNvbmZpZ3VyYXRpb24gaGFzIG5vIHNpZGUgZWZmZWN0IG9uIG90aGVyIGxpbmtzLiBJZiBhbiBlbmFibGVkCisgICAgbGluayBhdCB0aGUgc2luayBwYWQgcHJldmVudHMgdGhlIGxpbmsgZnJvbSBiZWluZyBlbmFibGVkLCB0aGUgZHJpdmVyCisgICAgcmV0dXJucyB3aXRoIGFuICZFQlVTWTsuPC9wYXJhPgorICAgIDxwYXJhPk9ubHkgbGlua3MgbWFya2VkIHdpdGggdGhlIDxjb25zdGFudD5EWU5BTUlDPC9jb25zdGFudD4gbGluayBmbGFnIGNhbgorICAgIGJlIGVuYWJsZWQvZGlzYWJsZWQgd2hpbGUgc3RyZWFtaW5nIG1lZGlhIGRhdGEuIEF0dGVtcHRpbmcgdG8gZW5hYmxlIG9yCisgICAgZGlzYWJsZSBhIHN0cmVhbWluZyBub24tZHluYW1pYyBsaW5rIHdpbGwgcmV0dXJuIGFuICZFQlVTWTsuPC9wYXJhPgorICAgIDxwYXJhPklmIHRoZSBzcGVjaWZpZWQgbGluayBjYW4ndCBiZSBmb3VuZCB0aGUgZHJpdmVyIHJldHVybnMgd2l0aCBhbgorICAgICZFSU5WQUw7LjwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSAmbWVkaWEtbGluay1kZXNjOyByZWZlcmVuY2VzIGEgbm9uLWV4aXN0aW5nIGxpbmssIG9yIHRoZQorCSAgbGluayBpcyBpbW11dGFibGUgYW5kIGFuIGF0dGVtcHQgdG8gbW9kaWZ5IGl0cyBjb25maWd1cmF0aW9uIHdhcyBtYWRlLgorCSAgPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1ncmV5LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LWdyZXkueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlZTk3MGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1ncmV5LnhtbApAQCAtMCwwICsxLDYyIEBACisgICAgPHJlZmVudHJ5IGlkPSJWNEwyLVBJWC1GTVQtR1JFWSI+CisgICAgICA8cmVmbWV0YT4KKwk8cmVmZW50cnl0aXRsZT5WNEwyX1BJWF9GTVRfR1JFWSAoJ0dSRVknKTwvcmVmZW50cnl0aXRsZT4KKwkmbWFudm9sOworICAgICAgPC9yZWZtZXRhPgorICAgICAgPHJlZm5hbWVkaXY+CisJPHJlZm5hbWU+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9HUkVZPC9jb25zdGFudD48L3JlZm5hbWU+CisJPHJlZnB1cnBvc2U+R3JleS1zY2FsZSBpbWFnZTwvcmVmcHVycG9zZT4KKyAgICAgIDwvcmVmbmFtZWRpdj4KKyAgICAgIDxyZWZzZWN0MT4KKwk8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisJPHBhcmE+VGhpcyBpcyBhIGdyZXktc2NhbGUgaW1hZ2UuIEl0IGlzIHJlYWxseSBhIGRlZ2VuZXJhdGUKK1knQ2JDciBmb3JtYXQgd2hpY2ggc2ltcGx5IGNvbnRhaW5zIG5vIENiIG9yIENyIGRhdGEuPC9wYXJhPgorCisJPGV4YW1wbGU+CisJICA8dGl0bGU+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9HUkVZPC9jb25zdGFudD4gNCAmdGltZXM7IDQKK3BpeGVsIGltYWdlPC90aXRsZT4KKworCSAgPGZvcm1hbHBhcmE+CisJICAgIDx0aXRsZT5CeXRlIE9yZGVyLjwvdGl0bGU+CisJICAgIDxwYXJhPkVhY2ggY2VsbCBpcyBvbmUgYnl0ZS4KKwkJPGluZm9ybWFsdGFibGUgZnJhbWU9Im5vbmUiPgorCQk8dGdyb3VwIGNvbHM9IjUiIGFsaWduPSJjZW50ZXIiPgorCQkgIDxjb2xzcGVjIGFsaWduPSJsZWZ0IiBjb2x3aWR0aD0iMioiIC8+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDswOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7NDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzg6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsxMjo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvdGdyb3VwPgorCQk8L2luZm9ybWFsdGFibGU+CisJICAgICAgPC9wYXJhPgorCSAgPC9mb3JtYWxwYXJhPgorCTwvZXhhbXBsZT4KKyAgICAgIDwvcmVmc2VjdDE+CisgICAgPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LW00MjAueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtbTQyMC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFkYWU5MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LW00MjAueG1sCkBAIC0wLDAgKzEsMTM5IEBACisgICAgPHJlZmVudHJ5IGlkPSJWNEwyLVBJWC1GTVQtTTQyMCI+CisgICAgICA8cmVmbWV0YT4KKwk8cmVmZW50cnl0aXRsZT5WNEwyX1BJWF9GTVRfTTQyMCAoJ000MjAnKTwvcmVmZW50cnl0aXRsZT4KKwkmbWFudm9sOworICAgICAgPC9yZWZtZXRhPgorICAgICAgPHJlZm5hbWVkaXY+CisJPHJlZm5hbWU+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9NNDIwPC9jb25zdGFudD48L3JlZm5hbWU+CisJPHJlZnB1cnBvc2U+Rm9ybWF0IHdpdGggJmZyYWMxMjsgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgY2hyb21hCisJcmVzb2x1dGlvbiwgYWxzbyBrbm93biBhcyBZVVYgNDoyOjAuIEh5YnJpZCBwbGFuZSBsaW5lLWludGVybGVhdmVkCisJbGF5b3V0LjwvcmVmcHVycG9zZT4KKyAgICAgIDwvcmVmbmFtZWRpdj4KKyAgICAgIDxyZWZzZWN0MT4KKwk8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisJPHBhcmE+TTQyMCBpcyBhIFlVViBmb3JtYXQgd2l0aCAmZnJhYzEyOyBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBjaHJvbWEKKwlzdWJzYW1wbGluZyAoWVVWIDQ6MjowKS4gUGl4ZWxzIGFyZSBvcmdhbml6ZWQgYXMgaW50ZXJsZWF2ZWQgbHVtYSBhbmQKKwljaHJvbWEgcGxhbmVzLiBUd28gbGluZXMgb2YgbHVtYSBkYXRhIGFyZSBmb2xsb3dlZCBieSBvbmUgbGluZSBvZiBjaHJvbWEKKwlkYXRhLjwvcGFyYT4KKwk8cGFyYT5UaGUgbHVtYSBwbGFuZSBoYXMgb25lIGJ5dGUgcGVyIHBpeGVsLiBUaGUgY2hyb21hIHBsYW5lIGNvbnRhaW5zCisJaW50ZXJsZWF2ZWQgQ2JDciBwaXhlbHMgc3Vic2FtcGxlZCBieSAmZnJhYzEyOyBpbiB0aGUgaG9yaXpvbnRhbCBhbmQKKwl2ZXJ0aWNhbCBkaXJlY3Rpb25zLiBFYWNoIENiQ3IgcGFpciBiZWxvbmdzIHRvIGZvdXIgcGl4ZWxzLiBGb3IgZXhhbXBsZSwKK0NiPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+L0NyPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+IGJlbG9uZ3MgdG8KK1knPHN1YnNjcmlwdD4wMDwvc3Vic2NyaXB0PiwgWSc8c3Vic2NyaXB0PjAxPC9zdWJzY3JpcHQ+LAorWSc8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+LCBZJzxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD4uPC9wYXJhPgorCisJPHBhcmE+QWxsIGxpbmUgbGVuZ3RocyBhcmUgaWRlbnRpY2FsOiBpZiB0aGUgWSBsaW5lcyBpbmNsdWRlIHBhZCBieXRlcworCXNvIGRvIHRoZSBDYkNyIGxpbmVzLjwvcGFyYT4KKworCTxleGFtcGxlPgorCSAgPHRpdGxlPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfTTQyMDwvY29uc3RhbnQ+IDQgJnRpbWVzOyA0CitwaXhlbCBpbWFnZTwvdGl0bGU+CisKKwkgIDxmb3JtYWxwYXJhPgorCSAgICA8dGl0bGU+Qnl0ZSBPcmRlci48L3RpdGxlPgorCSAgICA8cGFyYT5FYWNoIGNlbGwgaXMgb25lIGJ5dGUuCisJCTxpbmZvcm1hbHRhYmxlIGZyYW1lPSJub25lIj4KKwkJPHRncm91cCBjb2xzPSI1IiBhbGlnbj0iY2VudGVyIj4KKwkJICA8Y29sc3BlYyBhbGlnbj0ibGVmdCIgY29sd2lkdGg9IjIqIiAvPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzQ6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDs4OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MTY6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsyMDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzI0OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC90Z3JvdXA+CisJCTwvaW5mb3JtYWx0YWJsZT4KKwkgICAgICA8L3BhcmE+CisJICA8L2Zvcm1hbHBhcmE+CisKKwkgIDxmb3JtYWxwYXJhPgorCSAgICA8dGl0bGU+Q29sb3IgU2FtcGxlIExvY2F0aW9uLjwvdGl0bGU+CisJICAgIDxwYXJhPgorCQk8aW5mb3JtYWx0YWJsZSBmcmFtZT0ibm9uZSI+CisJCTx0Z3JvdXAgY29scz0iNyIgYWxpZ249ImNlbnRlciI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MDwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjE8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MjwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjM8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjE8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjI8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT4zPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvdGdyb3VwPgorCQk8L2luZm9ybWFsdGFibGU+CisJICAgICAgPC9wYXJhPgorCSAgPC9mb3JtYWxwYXJhPgorCTwvZXhhbXBsZT4KKyAgICAgIDwvcmVmc2VjdDE+CisgICAgPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LW52MTIueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtbnYxMi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRkZDRmZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LW52MTIueG1sCkBAIC0wLDAgKzEsMTQzIEBACisgICAgPHJlZmVudHJ5PgorICAgICAgPHJlZm1ldGE+CisJPHJlZmVudHJ5dGl0bGU+VjRMMl9QSVhfRk1UX05WMTIgKCdOVjEyJyksIFY0TDJfUElYX0ZNVF9OVjIxICgnTlYyMScpPC9yZWZlbnRyeXRpdGxlPgorCSZtYW52b2w7CisgICAgICA8L3JlZm1ldGE+CisgICAgICA8cmVmbmFtZWRpdj4KKwk8cmVmbmFtZSBpZD0iVjRMMi1QSVgtRk1ULU5WMTIiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfTlYxMjwvY29uc3RhbnQ+PC9yZWZuYW1lPgorCTxyZWZuYW1lIGlkPSJWNEwyLVBJWC1GTVQtTlYyMSI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9OVjIxPC9jb25zdGFudD48L3JlZm5hbWU+CisJPHJlZnB1cnBvc2U+Rm9ybWF0cyB3aXRoICZmcmFjMTI7IGhvcml6b250YWwgYW5kIHZlcnRpY2FsCitjaHJvbWEgcmVzb2x1dGlvbiwgYWxzbyBrbm93biBhcyBZVVYgNDoyOjAuIE9uZSBsdW1pbmFuY2UgYW5kIG9uZQorY2hyb21pbmFuY2UgcGxhbmUgd2l0aCBhbHRlcm5hdGluZyBjaHJvbWEgc2FtcGxlcyBhcyBvcHBvc2VkIHRvCis8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1lWVTQyMDwvY29uc3RhbnQ+PC9yZWZwdXJwb3NlPgorICAgICAgPC9yZWZuYW1lZGl2PgorICAgICAgPHJlZnNlY3QxPgorCTx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKwk8cGFyYT5UaGVzZSBhcmUgdHdvLXBsYW5lIHZlcnNpb25zIG9mIHRoZSBZVVYgNDoyOjAgZm9ybWF0LgorVGhlIHRocmVlIGNvbXBvbmVudHMgYXJlIHNlcGFyYXRlZCBpbnRvIHR3byBzdWItaW1hZ2VzIG9yIHBsYW5lcy4gVGhlCitZIHBsYW5lIGlzIGZpcnN0LiBUaGUgWSBwbGFuZSBoYXMgb25lIGJ5dGUgcGVyIHBpeGVsLiBGb3IKKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfTlYxMjwvY29uc3RhbnQ+LCBhIGNvbWJpbmVkIENiQ3IgcGxhbmUKK2ltbWVkaWF0ZWx5IGZvbGxvd3MgdGhlIFkgcGxhbmUgaW4gbWVtb3J5LiAgVGhlIENiQ3IgcGxhbmUgaXMgdGhlIHNhbWUKK3dpZHRoLCBpbiBieXRlcywgYXMgdGhlIFkgcGxhbmUgKGFuZCBvZiB0aGUgaW1hZ2UpLCBidXQgaXMgaGFsZiBhcwordGFsbCBpbiBwaXhlbHMuIEVhY2ggQ2JDciBwYWlyIGJlbG9uZ3MgdG8gZm91ciBwaXhlbHMuIEZvciBleGFtcGxlLAorQ2I8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD4vQ3I8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD4gYmVsb25ncyB0bworWSc8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+LCBZJzxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD4sCitZJzxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD4sIFknPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0Pi4KKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfTlYyMTwvY29uc3RhbnQ+IGlzIHRoZSBzYW1lIGV4Y2VwdCB0aGUgQ2IgYW5kCitDciBieXRlcyBhcmUgc3dhcHBlZCwgdGhlIENyQ2IgcGxhbmUgc3RhcnRzIHdpdGggYSBDciBieXRlLjwvcGFyYT4KKworCTxwYXJhPklmIHRoZSBZIHBsYW5lIGhhcyBwYWQgYnl0ZXMgYWZ0ZXIgZWFjaCByb3csIHRoZW4gdGhlCitDYkNyIHBsYW5lIGhhcyBhcyBtYW55IHBhZCBieXRlcyBhZnRlciBpdHMgcm93cy48L3BhcmE+CisKKwk8ZXhhbXBsZT4KKwkgIDx0aXRsZT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX05WMTI8L2NvbnN0YW50PiA0ICZ0aW1lczsgNAorcGl4ZWwgaW1hZ2U8L3RpdGxlPgorCisJICA8Zm9ybWFscGFyYT4KKwkgICAgPHRpdGxlPkJ5dGUgT3JkZXIuPC90aXRsZT4KKwkgICAgPHBhcmE+RWFjaCBjZWxsIGlzIG9uZSBieXRlLgorCQk8aW5mb3JtYWx0YWJsZSBmcmFtZT0ibm9uZSI+CisJCTx0Z3JvdXAgY29scz0iNSIgYWxpZ249ImNlbnRlciI+CisJCSAgPGNvbHNwZWMgYWxpZ249ImxlZnQiIGNvbHdpZHRoPSIyKiIgLz4KKwkJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzA6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDs0OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7ODo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzEyOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MTY6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4wMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjAxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsyMDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvdGdyb3VwPgorCQk8L2luZm9ybWFsdGFibGU+CisJICAgICAgPC9wYXJhPgorCSAgPC9mb3JtYWxwYXJhPgorCisJICA8Zm9ybWFscGFyYT4KKwkgICAgPHRpdGxlPkNvbG9yIFNhbXBsZSBMb2NhdGlvbi48L3RpdGxlPgorCSAgICA8cGFyYT4KKwkJPGluZm9ybWFsdGFibGUgZnJhbWU9Im5vbmUiPgorCQk8dGdyb3VwIGNvbHM9IjciIGFsaWduPSJjZW50ZXIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjA8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT4xPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjI8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT4zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT4xPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT4yPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L3Rncm91cD4KKwkJPC9pbmZvcm1hbHRhYmxlPgorCSAgICAgIDwvcGFyYT4KKwkgIDwvZm9ybWFscGFyYT4KKwk8L2V4YW1wbGU+CisgICAgICA8L3JlZnNlY3QxPgorICAgIDwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1udjEybS54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1udjEybS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjNhM2Q0NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LW52MTJtLnhtbApAQCAtMCwwICsxLDE1MyBAQAorICAgIDxyZWZlbnRyeT4KKyAgICAgIDxyZWZtZXRhPgorCTxyZWZlbnRyeXRpdGxlPlY0TDJfUElYX0ZNVF9OVjEyTSAoJ05NMTInKSwgVjRMMl9QSVhfRk1UX05WMjFNICgnTk0yMScpLCBWNEwyX1BJWF9GTVRfTlYxMk1UXzE2WDE2PC9yZWZlbnRyeXRpdGxlPgorCSZtYW52b2w7CisgICAgICA8L3JlZm1ldGE+CisgICAgICA8cmVmbmFtZWRpdj4KKwk8cmVmbmFtZSBpZD0iVjRMMi1QSVgtRk1ULU5WMTJNIj48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX05WMTJNPC9jb25zdGFudD48L3JlZm5hbWU+CisJPHJlZm5hbWUgaWQ9IlY0TDItUElYLUZNVC1OVjIxTSI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9OVjIxTTwvY29uc3RhbnQ+PC9yZWZuYW1lPgorCTxyZWZuYW1lIGlkPSJWNEwyLVBJWC1GTVQtTlYxMk1ULTE2WDE2Ij48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX05WMTJNVF8xNlgxNjwvY29uc3RhbnQ+PC9yZWZuYW1lPgorCTxyZWZwdXJwb3NlPlZhcmlhdGlvbiBvZiA8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX05WMTI8L2NvbnN0YW50PiBhbmQgPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9OVjIxPC9jb25zdGFudD4gd2l0aCBwbGFuZXMKKwkgIG5vbiBjb250aWd1b3VzIGluIG1lbW9yeS4gPC9yZWZwdXJwb3NlPgorICAgICAgPC9yZWZuYW1lZGl2PgorICAgICAgPHJlZnNlY3QxPgorCTx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKwk8cGFyYT5UaGlzIGlzIGEgbXVsdGktcGxhbmFyLCB0d28tcGxhbmUgdmVyc2lvbiBvZiB0aGUgWVVWIDQ6MjowIGZvcm1hdC4KK1RoZSB0aHJlZSBjb21wb25lbnRzIGFyZSBzZXBhcmF0ZWQgaW50byB0d28gc3ViLWltYWdlcyBvciBwbGFuZXMuCis8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX05WMTJNPC9jb25zdGFudD4gZGlmZmVycyBmcm9tIDxjb25zdGFudD5WNEwyX1BJWF9GTVRfTlYxMgorPC9jb25zdGFudD4gaW4gdGhhdCB0aGUgdHdvIHBsYW5lcyBhcmUgbm9uLWNvbnRpZ3VvdXMgaW4gbWVtb3J5LCBpLmUuIHRoZSBjaHJvbWEKK3BsYW5lIGRvIG5vdCBuZWNlc3NhcmlseSBpbW1lZGlhdGVseSBmb2xsb3dzIHRoZSBsdW1hIHBsYW5lLgorVGhlIGx1bWluYW5jZSBkYXRhIG9jY3VwaWVzIHRoZSBmaXJzdCBwbGFuZS4gVGhlIFkgcGxhbmUgaGFzIG9uZSBieXRlIHBlciBwaXhlbC4KK0luIHRoZSBzZWNvbmQgcGxhbmUgdGhlcmUgaXMgYSBjaHJvbWluYW5jZSBkYXRhIHdpdGggYWx0ZXJuYXRpbmcgY2hyb21hIHNhbXBsZXMuCitUaGUgQ2JDciBwbGFuZSBpcyB0aGUgc2FtZSB3aWR0aCwgaW4gYnl0ZXMsIGFzIHRoZSBZIHBsYW5lIChhbmQgb2YgdGhlIGltYWdlKSwKK2J1dCBpcyBoYWxmIGFzIHRhbGwgaW4gcGl4ZWxzLiBFYWNoIENiQ3IgcGFpciBiZWxvbmdzIHRvIGZvdXIgcGl4ZWxzLiBGb3IgZXhhbXBsZSwKK0NiPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+L0NyPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+IGJlbG9uZ3MgdG8KK1knPHN1YnNjcmlwdD4wMDwvc3Vic2NyaXB0PiwgWSc8c3Vic2NyaXB0PjAxPC9zdWJzY3JpcHQ+LAorWSc8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+LCBZJzxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD4uCis8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX05WMTJNVF8xNlgxNjwvY29uc3RhbnQ+IGlzIHRoZSB0aWxlZCB2ZXJzaW9uIG9mCis8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX05WMTJNPC9jb25zdGFudD4gd2l0aCAxNngxNiBtYWNyb2Jsb2NrIHRpbGVzLiBIZXJlIHBpeGVscworYXJlIGFycmFuZ2VkIGluIDE2eDE2IDJEIHRpbGVzIGFuZCB0aWxlcyBhcmUgYXJyYW5nZWQgaW4gbGluZWFyIG9yZGVyIGluIG1lbW9yeS4KKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfTlYyMU08L2NvbnN0YW50PiBpcyB0aGUgc2FtZSBhcyA8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX05WMTJNPC9jb25zdGFudD4KK2V4Y2VwdCB0aGUgQ2IgYW5kIENyIGJ5dGVzIGFyZSBzd2FwcGVkLCB0aGUgQ3JDYiBwbGFuZSBzdGFydHMgd2l0aCBhIENyIGJ5dGUuPC9wYXJhPgorCisJPHBhcmE+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9OVjEyTTwvY29uc3RhbnQ+IGlzIGludGVuZGVkIHRvIGJlCit1c2VkIG9ubHkgaW4gZHJpdmVycyBhbmQgYXBwbGljYXRpb25zIHRoYXQgc3VwcG9ydCB0aGUgbXVsdGktcGxhbmFyIEFQSSwKK2Rlc2NyaWJlZCBpbiA8eHJlZiBsaW5rZW5kPSJwbGFuYXItYXBpcyIvPi4gPC9wYXJhPgorCisJPHBhcmE+SWYgdGhlIFkgcGxhbmUgaGFzIHBhZCBieXRlcyBhZnRlciBlYWNoIHJvdywgdGhlbiB0aGUKK0NiQ3IgcGxhbmUgaGFzIGFzIG1hbnkgcGFkIGJ5dGVzIGFmdGVyIGl0cyByb3dzLjwvcGFyYT4KKworCTxleGFtcGxlPgorCSAgPHRpdGxlPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfTlYxMk08L2NvbnN0YW50PiA0ICZ0aW1lczsgNCBwaXhlbCBpbWFnZTwvdGl0bGU+CisKKwkgIDxmb3JtYWxwYXJhPgorCSAgICA8dGl0bGU+Qnl0ZSBPcmRlci48L3RpdGxlPgorCSAgICA8cGFyYT5FYWNoIGNlbGwgaXMgb25lIGJ5dGUuCisJCTxpbmZvcm1hbHRhYmxlIGZyYW1lPSJub25lIj4KKwkJPHRncm91cCBjb2xzPSI1IiBhbGlnbj0iY2VudGVyIj4KKwkJICA8Y29sc3BlYyBhbGlnbj0ibGVmdCIgY29sd2lkdGg9IjIqIiAvPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQwJm5ic3A7KyZuYnNwOzA6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydDAmbmJzcDsrJm5ic3A7NDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0MCZuYnNwOysmbmJzcDs4OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQwJm5ic3A7KyZuYnNwOzEyOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0MSZuYnNwOysmbmJzcDswOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQxJm5ic3A7KyZuYnNwOzQ6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L3Rncm91cD4KKwkJPC9pbmZvcm1hbHRhYmxlPgorCSAgICAgIDwvcGFyYT4KKwkgIDwvZm9ybWFscGFyYT4KKworCSAgPGZvcm1hbHBhcmE+CisJICAgIDx0aXRsZT5Db2xvciBTYW1wbGUgTG9jYXRpb24uPC90aXRsZT4KKwkgICAgPHBhcmE+CisJCTxpbmZvcm1hbHRhYmxlIGZyYW1lPSJub25lIj4KKwkJPHRncm91cCBjb2xzPSI3IiBhbGlnbj0iY2VudGVyIj4KKwkJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT4wPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+MTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT4yPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+MzwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MTwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjM8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC90Z3JvdXA+CisJCTwvaW5mb3JtYWx0YWJsZT4KKwkgICAgICA8L3BhcmE+CisJICA8L2Zvcm1hbHBhcmE+CisJPC9leGFtcGxlPgorICAgICAgPC9yZWZzZWN0MT4KKyAgICA8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtbnYxMm10LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LW52MTJtdC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE3MGExNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LW52MTJtdC54bWwKQEAgLTAsMCArMSw2NiBAQAorICAgIDxyZWZlbnRyeT4KKyAgICAgIDxyZWZtZXRhPgorCTxyZWZlbnRyeXRpdGxlPlY0TDJfUElYX0ZNVF9OVjEyTVQgKCdUTTEyJyk8L3JlZmVudHJ5dGl0bGU+CisJJm1hbnZvbDsKKyAgICAgIDwvcmVmbWV0YT4KKyAgICAgIDxyZWZuYW1lZGl2PgorCTxyZWZuYW1lIGlkPSJWNEwyLVBJWC1GTVQtTlYxMk1UIj48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX05WMTJNVAorPC9jb25zdGFudD48L3JlZm5hbWU+CisJPHJlZnB1cnBvc2U+Rm9ybWF0cyB3aXRoICZmcmFjMTI7IGhvcml6b250YWwgYW5kIHZlcnRpY2FsCitjaHJvbWEgcmVzb2x1dGlvbi4gVGhpcyBmb3JtYXQgaGFzIHR3byBwbGFuZXMgLSBvbmUgZm9yIGx1bWluYW5jZSBhbmQgb25lIGZvcgorY2hyb21pbmFuY2UuIENocm9tYSBzYW1wbGVzIGFyZSBpbnRlcmxlYXZlZC4gVGhlIGRpZmZlcmVuY2UgdG8KKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfTlYxMjwvY29uc3RhbnQ+IGlzIHRoZSBtZW1vcnkgbGF5b3V0LiBQaXhlbHMgYXJlCitncm91cGVkIGluIG1hY3JvYmxvY2tzIG9mIDY0eDMyIHNpemUuIFRoZSBvcmRlciBvZiBtYWNyb2Jsb2NrcyBpbiBtZW1vcnkgaXMKK2Fsc28gbm90IHN0YW5kYXJkLgorCTwvcmVmcHVycG9zZT4KKyAgICAgIDwvcmVmbmFtZWRpdj4KKyAgICAgIDxyZWZzZWN0MT4KKwk8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisJPHBhcmE+VGhpcyBpcyB0aGUgdHdvLXBsYW5lIHZlcnNpb25zIG9mIHRoZSBZVVYgNDoyOjAgZm9ybWF0IHdoZXJlIGRhdGEKK2lzIGdyb3VwZWQgaW50byA2NHgzMiBtYWNyb2Jsb2Nrcy4gVGhlIHRocmVlIGNvbXBvbmVudHMgYXJlIHNlcGFyYXRlZCBpbnRvIHR3bworc3ViLWltYWdlcyBvciBwbGFuZXMuIFRoZSBZIHBsYW5lIGhhcyBvbmUgYnl0ZSBwZXIgcGl4ZWwgYW5kIHBpeGVscyBhcmUgZ3JvdXBlZAoraW50byA2NHgzMiBtYWNyb2Jsb2Nrcy4gVGhlIENiQ3IgcGxhbmUgaGFzIHRoZSBzYW1lIHdpZHRoLCBpbiBieXRlcywgYXMgdGhlIFkKK3BsYW5lIChhbmQgdGhlIGltYWdlKSwgYnV0IGlzIGhhbGYgYXMgdGFsbCBpbiBwaXhlbHMuIFRoZSBjaHJvbWEgcGxhbmUgaXMgYWxzbworZ3JvdXBlZCBpbnRvIDY0eDMyIG1hY3JvYmxvY2tzLjwvcGFyYT4KKwk8cGFyYT5XaWR0aCBvZiB0aGUgYnVmZmVyIGhhcyB0byBiZSBhbGlnbmVkIHRvIHRoZSBtdWx0aXBsZSBvZiAxMjgsIGFuZAoraGVpZ2h0IGFsaWdubWVudCBpcyAzMi4gRXZlcnkgZm91ciBhZGphY2VudCBidWZmZXJzIC0gdHdvIGhvcml6b250YWxseSBhbmQgdHdvCit2ZXJ0aWNhbGx5IGFyZSBncm91cGVkIHRvZ2V0aGVyIGFuZCBhcmUgbG9jYXRlZCBpbiBtZW1vcnkgaW4gWiBvciBmbGlwcGVkIFoKK29yZGVyLiA8L3BhcmE+CisJPHBhcmE+TGF5b3V0IG9mIG1hY3JvYmxvY2tzIGluIG1lbW9yeSBpcyBwcmVzZW50ZWQgaW4gdGhlIGZvbGxvd2luZworZmlndXJlLjwvcGFyYT4KKwk8cGFyYT48ZmlndXJlIGlkPSJudjEybXQiPgorCSAgICA8dGl0bGU+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9OVjEyTVQ8L2NvbnN0YW50PiBtYWNyb2Jsb2NrIFogc2hhcGUKK21lbW9yeSBsYXlvdXQ8L3RpdGxlPgorCSAgICA8bWVkaWFvYmplY3Q+CisJICAgICAgPGltYWdlb2JqZWN0PgorCQk8aW1hZ2VkYXRhIGZpbGVyZWY9Im52MTJtdC5naWYiIGZvcm1hdD0iR0lGIiAvPgorCSAgICAgIDwvaW1hZ2VvYmplY3Q+CisJICAgIDwvbWVkaWFvYmplY3Q+CisJPC9maWd1cmU+CisJVGhlIHJlcXVpcmVtZW50IHRoYXQgd2lkdGggaXMgbXVsdGlwbGUgb2YgMTI4IGlzIGltcGxlbWVudGVkIGJlY2F1c2UsCit0aGUgWiBzaGFwZSBjYW5ub3QgYmUgY3V0IGluIGhhbGYgaG9yaXpvbnRhbGx5LiBJbiBjYXNlIHRoZSB2ZXJ0aWNhbCByZXNvbHV0aW9uCitvZiBtYWNyb2Jsb2NrcyBpcyBvZGQgdGhlbiB0aGUgbGFzdCByb3cgb2YgbWFjcm9ibG9ja3MgaXMgYXJyYW5nZWQgaW4gYSBsaW5lYXIKK29yZGVyLiAgPC9wYXJhPgorCTxwYXJhPkluIGNhc2Ugb2YgY2hyb21hIHRoZSBsYXlvdXQgaXMgaWRlbnRpY2FsLiBDYiBhbmQgQ3Igc2FtcGxlcyBhcmUKK2ludGVybGVhdmVkLiBIZWlnaHQgb2YgdGhlIGJ1ZmZlciBpcyBhbGlnbmVkIHRvIDMyLgorCTwvcGFyYT4KKwk8ZXhhbXBsZT4KKwkgIDx0aXRsZT5NZW1vcnkgbGF5b3V0IG9mIG1hY3JvYmxvY2tzIGluIDxjb25zdGFudD5WNEwyX1BJWF9GTVRfTlYxMgorPC9jb25zdGFudD4gZm9ybWF0IHBpeGVsIGltYWdlIC0gZXh0cmVtZSBjYXNlPC90aXRsZT4KKwk8cGFyYT4KKwk8ZmlndXJlIGlkPSJudjEybXRfZXgiPgorCSAgICA8dGl0bGU+RXhhbXBsZSA8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX05WMTJNVDwvY29uc3RhbnQ+IG1lbW9yeQorbGF5b3V0IG9mIG1hY3JvYmxvY2tzPC90aXRsZT4KKwkgICAgPG1lZGlhb2JqZWN0PgorCSAgICAgIDxpbWFnZW9iamVjdD4KKwkJPGltYWdlZGF0YSBmaWxlcmVmPSJudjEybXRfZXhhbXBsZS5naWYiIGZvcm1hdD0iR0lGIiAvPgorCSAgICAgIDwvaW1hZ2VvYmplY3Q+CisJICAgIDwvbWVkaWFvYmplY3Q+CisJPC9maWd1cmU+CisJTWVtb3J5IGxheW91dCBvZiBtYWNyb2Jsb2NrcyBvZiA8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX05WMTJNVAorPC9jb25zdGFudD4gZm9ybWF0IGluIG1vc3QgZXh0cmVtZSBjYXNlLgorCTwvcGFyYT4KKwk8L2V4YW1wbGU+CisgICAgICA8L3JlZnNlY3QxPgorICAgIDwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1udjE2LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LW52MTYueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhZTFmOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1udjE2LnhtbApAQCAtMCwwICsxLDE2NiBAQAorICAgIDxyZWZlbnRyeT4KKyAgICAgIDxyZWZtZXRhPgorCTxyZWZlbnRyeXRpdGxlPlY0TDJfUElYX0ZNVF9OVjE2ICgnTlYxNicpLCBWNEwyX1BJWF9GTVRfTlY2MSAoJ05WNjEnKTwvcmVmZW50cnl0aXRsZT4KKwkmbWFudm9sOworICAgICAgPC9yZWZtZXRhPgorICAgICAgPHJlZm5hbWVkaXY+CisJPHJlZm5hbWUgaWQ9IlY0TDItUElYLUZNVC1OVjE2Ij48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX05WMTY8L2NvbnN0YW50PjwvcmVmbmFtZT4KKwk8cmVmbmFtZSBpZD0iVjRMMi1QSVgtRk1ULU5WNjEiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfTlY2MTwvY29uc3RhbnQ+PC9yZWZuYW1lPgorCTxyZWZwdXJwb3NlPkZvcm1hdHMgd2l0aCAmZnJhYzEyOyBob3Jpem9udGFsCitjaHJvbWEgcmVzb2x1dGlvbiwgYWxzbyBrbm93biBhcyBZVVYgNDoyOjIuIE9uZSBsdW1pbmFuY2UgYW5kIG9uZQorY2hyb21pbmFuY2UgcGxhbmUgd2l0aCBhbHRlcm5hdGluZyBjaHJvbWEgc2FtcGxlcyBhcyBvcHBvc2VkIHRvCis8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1lWVTQyMDwvY29uc3RhbnQ+PC9yZWZwdXJwb3NlPgorICAgICAgPC9yZWZuYW1lZGl2PgorICAgICAgPHJlZnNlY3QxPgorCTx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKwk8cGFyYT5UaGVzZSBhcmUgdHdvLXBsYW5lIHZlcnNpb25zIG9mIHRoZSBZVVYgNDoyOjIgZm9ybWF0LgorVGhlIHRocmVlIGNvbXBvbmVudHMgYXJlIHNlcGFyYXRlZCBpbnRvIHR3byBzdWItaW1hZ2VzIG9yIHBsYW5lcy4gVGhlCitZIHBsYW5lIGlzIGZpcnN0LiBUaGUgWSBwbGFuZSBoYXMgb25lIGJ5dGUgcGVyIHBpeGVsLiBGb3IKKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfTlYxNjwvY29uc3RhbnQ+LCBhIGNvbWJpbmVkIENiQ3IgcGxhbmUKK2ltbWVkaWF0ZWx5IGZvbGxvd3MgdGhlIFkgcGxhbmUgaW4gbWVtb3J5LiAgVGhlIENiQ3IgcGxhbmUgaXMgdGhlIHNhbWUKK3dpZHRoIGFuZCBoZWlnaHQsIGluIGJ5dGVzLCBhcyB0aGUgWSBwbGFuZSAoYW5kIG9mIHRoZSBpbWFnZSkuCitFYWNoIENiQ3IgcGFpciBiZWxvbmdzIHRvIHR3byBwaXhlbHMuIEZvciBleGFtcGxlLAorQ2I8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD4vQ3I8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD4gYmVsb25ncyB0bworWSc8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+LCBZJzxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD4uCis8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX05WNjE8L2NvbnN0YW50PiBpcyB0aGUgc2FtZSBleGNlcHQgdGhlIENiIGFuZAorQ3IgYnl0ZXMgYXJlIHN3YXBwZWQsIHRoZSBDckNiIHBsYW5lIHN0YXJ0cyB3aXRoIGEgQ3IgYnl0ZS48L3BhcmE+CisKKwk8cGFyYT5JZiB0aGUgWSBwbGFuZSBoYXMgcGFkIGJ5dGVzIGFmdGVyIGVhY2ggcm93LCB0aGVuIHRoZQorQ2JDciBwbGFuZSBoYXMgYXMgbWFueSBwYWQgYnl0ZXMgYWZ0ZXIgaXRzIHJvd3MuPC9wYXJhPgorCisJPGV4YW1wbGU+CisJICA8dGl0bGU+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9OVjE2PC9jb25zdGFudD4gNCAmdGltZXM7IDQKK3BpeGVsIGltYWdlPC90aXRsZT4KKworCSAgPGZvcm1hbHBhcmE+CisJICAgIDx0aXRsZT5CeXRlIE9yZGVyLjwvdGl0bGU+CisJICAgIDxwYXJhPkVhY2ggY2VsbCBpcyBvbmUgYnl0ZS4KKwkJPGluZm9ybWFsdGFibGUgZnJhbWU9Im5vbmUiPgorCQk8dGdyb3VwIGNvbHM9IjUiIGFsaWduPSJjZW50ZXIiPgorCQkgIDxjb2xzcGVjIGFsaWduPSJsZWZ0IiBjb2x3aWR0aD0iMioiIC8+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDswOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7NDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzg6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsxMjo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzE2OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MjA6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsyNDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjIwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4yMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjIxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzI4OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MzA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjMwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4zMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MzE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC90Z3JvdXA+CisJCTwvaW5mb3JtYWx0YWJsZT4KKwkgICAgICA8L3BhcmE+CisJICA8L2Zvcm1hbHBhcmE+CisKKwkgIDxmb3JtYWxwYXJhPgorCSAgICA8dGl0bGU+Q29sb3IgU2FtcGxlIExvY2F0aW9uLjwvdGl0bGU+CisJICAgIDxwYXJhPgorCQk8aW5mb3JtYWx0YWJsZSBmcmFtZT0ibm9uZSI+CisJCTx0Z3JvdXAgY29scz0iNyIgYWxpZ249ImNlbnRlciI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MDwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjE8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MjwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjM8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjE8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjM8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L3Rncm91cD4KKwkJPC9pbmZvcm1hbHRhYmxlPgorCSAgICAgIDwvcGFyYT4KKwkgIDwvZm9ybWFscGFyYT4KKwk8L2V4YW1wbGU+CisgICAgICA8L3JlZnNlY3QxPgorICAgIDwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1udjE2bS54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1udjE2bS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIyYjVlMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LW52MTZtLnhtbApAQCAtMCwwICsxLDE3MCBAQAorICAgIDxyZWZlbnRyeT4KKyAgICAgIDxyZWZtZXRhPgorCTxyZWZlbnRyeXRpdGxlPlY0TDJfUElYX0ZNVF9OVjE2TSAoJ05NMTYnKSwgVjRMMl9QSVhfRk1UX05WNjFNICgnTk02MScpPC9yZWZlbnRyeXRpdGxlPgorCSZtYW52b2w7CisgICAgICA8L3JlZm1ldGE+CisgICAgICA8cmVmbmFtZWRpdj4KKwk8cmVmbmFtZSBpZD0iVjRMMi1QSVgtRk1ULU5WMTZNIj48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX05WMTZNPC9jb25zdGFudD48L3JlZm5hbWU+CisJPHJlZm5hbWUgaWQ9IlY0TDItUElYLUZNVC1OVjYxTSI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9OVjYxTTwvY29uc3RhbnQ+PC9yZWZuYW1lPgorCTxyZWZwdXJwb3NlPlZhcmlhdGlvbiBvZiA8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX05WMTY8L2NvbnN0YW50PiBhbmQgPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9OVjYxPC9jb25zdGFudD4gd2l0aCBwbGFuZXMKKwkgIG5vbiBjb250aWd1b3VzIGluIG1lbW9yeS4gPC9yZWZwdXJwb3NlPgorICAgICAgPC9yZWZuYW1lZGl2PgorICAgICAgPHJlZnNlY3QxPgorCTx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKwk8cGFyYT5UaGlzIGlzIGEgbXVsdGktcGxhbmFyLCB0d28tcGxhbmUgdmVyc2lvbiBvZiB0aGUgWVVWIDQ6MjoyIGZvcm1hdC4KK1RoZSB0aHJlZSBjb21wb25lbnRzIGFyZSBzZXBhcmF0ZWQgaW50byB0d28gc3ViLWltYWdlcyBvciBwbGFuZXMuCis8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX05WMTZNPC9jb25zdGFudD4gZGlmZmVycyBmcm9tIDxjb25zdGFudD5WNEwyX1BJWF9GTVRfTlYxNgorPC9jb25zdGFudD4gaW4gdGhhdCB0aGUgdHdvIHBsYW5lcyBhcmUgbm9uLWNvbnRpZ3VvdXMgaW4gbWVtb3J5LCBpLmUuIHRoZSBjaHJvbWEKK3BsYW5lIGRvZXMgbm90IG5lY2Vzc2FyaWx5IGltbWVkaWF0ZWx5IGZvbGxvdyB0aGUgbHVtYSBwbGFuZS4KK1RoZSBsdW1pbmFuY2UgZGF0YSBvY2N1cGllcyB0aGUgZmlyc3QgcGxhbmUuIFRoZSBZIHBsYW5lIGhhcyBvbmUgYnl0ZSBwZXIgcGl4ZWwuCitJbiB0aGUgc2Vjb25kIHBsYW5lIHRoZXJlIGlzIGNocm9taW5hbmNlIGRhdGEgd2l0aCBhbHRlcm5hdGluZyBjaHJvbWEgc2FtcGxlcy4KK1RoZSBDYkNyIHBsYW5lIGlzIHRoZSBzYW1lIHdpZHRoIGFuZCBoZWlnaHQsIGluIGJ5dGVzLCBhcyB0aGUgWSBwbGFuZS4KK0VhY2ggQ2JDciBwYWlyIGJlbG9uZ3MgdG8gdHdvIHBpeGVscy4gRm9yIGV4YW1wbGUsCitDYjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0Pi9DcjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PiBiZWxvbmdzIHRvCitZJzxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD4sIFknPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0Pi4KKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfTlY2MU08L2NvbnN0YW50PiBpcyB0aGUgc2FtZSBhcyA8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX05WMTZNPC9jb25zdGFudD4KK2V4Y2VwdCB0aGUgQ2IgYW5kIENyIGJ5dGVzIGFyZSBzd2FwcGVkLCB0aGUgQ3JDYiBwbGFuZSBzdGFydHMgd2l0aCBhIENyIGJ5dGUuPC9wYXJhPgorCisJPHBhcmE+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9OVjE2TTwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9OVjYxTTwvY29uc3RhbnQ+IGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIG9ubHkgaW4gZHJpdmVycworYW5kIGFwcGxpY2F0aW9ucyB0aGF0IHN1cHBvcnQgdGhlIG11bHRpLXBsYW5hciBBUEksIGRlc2NyaWJlZCBpbgorPHhyZWYgbGlua2VuZD0icGxhbmFyLWFwaXMiLz4uIDwvcGFyYT4KKworCTxleGFtcGxlPgorCSAgPHRpdGxlPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfTlYxNk08L2NvbnN0YW50PiA0ICZ0aW1lczsgNCBwaXhlbCBpbWFnZTwvdGl0bGU+CisKKwkgIDxmb3JtYWxwYXJhPgorCSAgICA8dGl0bGU+Qnl0ZSBPcmRlci48L3RpdGxlPgorCSAgICA8cGFyYT5FYWNoIGNlbGwgaXMgb25lIGJ5dGUuCisJCTxpbmZvcm1hbHRhYmxlIGZyYW1lPSJub25lIj4KKwkJPHRncm91cCBjb2xzPSI1IiBhbGlnbj0iY2VudGVyIj4KKwkJICA8Y29sc3BlYyBhbGlnbj0ibGVmdCIgY29sd2lkdGg9IjIqIiAvPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQwJm5ic3A7KyZuYnNwOzA6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydDAmbmJzcDsrJm5ic3A7NDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0MCZuYnNwOysmbmJzcDs4OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQwJm5ic3A7KyZuYnNwOzEyOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0MSZuYnNwOysmbmJzcDswOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4wMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MDI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQxJm5ic3A7KyZuYnNwOzQ6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjEyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4xMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydDEmbmJzcDsrJm5ic3A7ODo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjIwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4yMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjIyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0MSZuYnNwOysmbmJzcDsxMjo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjMwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4zMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MzI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjMyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvdGdyb3VwPgorCQk8L2luZm9ybWFsdGFibGU+CisJICAgICAgPC9wYXJhPgorCSAgPC9mb3JtYWxwYXJhPgorCisJICA8Zm9ybWFscGFyYT4KKwkgICAgPHRpdGxlPkNvbG9yIFNhbXBsZSBMb2NhdGlvbi48L3RpdGxlPgorCSAgICA8cGFyYT4KKwkJPGluZm9ybWFsdGFibGUgZnJhbWU9Im5vbmUiPgorCQk8dGdyb3VwIGNvbHM9IjciIGFsaWduPSJjZW50ZXIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjA8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT4xPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjI8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT4zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT4xPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjI8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT4zPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC90Z3JvdXA+CisJCTwvaW5mb3JtYWx0YWJsZT4KKwkgICAgICA8L3BhcmE+CisJICA8L2Zvcm1hbHBhcmE+CisJPC9leGFtcGxlPgorICAgICAgPC9yZWZzZWN0MT4KKyAgICA8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtbnYyNC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1udjI0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjI1NWYyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtbnYyNC54bWwKQEAgLTAsMCArMSwxMjEgQEAKKyAgICA8cmVmZW50cnk+CisgICAgICA8cmVmbWV0YT4KKwk8cmVmZW50cnl0aXRsZT5WNEwyX1BJWF9GTVRfTlYyNCAoJ05WMjQnKSwgVjRMMl9QSVhfRk1UX05WNDIgKCdOVjQyJyk8L3JlZmVudHJ5dGl0bGU+CisJJm1hbnZvbDsKKyAgICAgIDwvcmVmbWV0YT4KKyAgICAgIDxyZWZuYW1lZGl2PgorCTxyZWZuYW1lIGlkPSJWNEwyLVBJWC1GTVQtTlYyNCI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9OVjI0PC9jb25zdGFudD48L3JlZm5hbWU+CisJPHJlZm5hbWUgaWQ9IlY0TDItUElYLUZNVC1OVjQyIj48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX05WNDI8L2NvbnN0YW50PjwvcmVmbmFtZT4KKwk8cmVmcHVycG9zZT5Gb3JtYXRzIHdpdGggZnVsbCBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbAorY2hyb21hIHJlc29sdXRpb25zLCBhbHNvIGtub3duIGFzIFlVViA0OjQ6NC4gT25lIGx1bWluYW5jZSBhbmQgb25lCitjaHJvbWluYW5jZSBwbGFuZSB3aXRoIGFsdGVybmF0aW5nIGNocm9tYSBzYW1wbGVzIGFzIG9wcG9zZWQgdG8KKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfWVZVNDIwPC9jb25zdGFudD48L3JlZnB1cnBvc2U+CisgICAgICA8L3JlZm5hbWVkaXY+CisgICAgICA8cmVmc2VjdDE+CisJPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworCTxwYXJhPlRoZXNlIGFyZSB0d28tcGxhbmUgdmVyc2lvbnMgb2YgdGhlIFlVViA0OjQ6NCBmb3JtYXQuIFRoZSB0aHJlZQorCWNvbXBvbmVudHMgYXJlIHNlcGFyYXRlZCBpbnRvIHR3byBzdWItaW1hZ2VzIG9yIHBsYW5lcy4gVGhlIFkgcGxhbmUgaXMKKwlmaXJzdCwgd2l0aCBlYWNoIFkgc2FtcGxlIHN0b3JlZCBpbiBvbmUgYnl0ZSBwZXIgcGl4ZWwuIEZvcgorCTxjb25zdGFudD5WNEwyX1BJWF9GTVRfTlYyNDwvY29uc3RhbnQ+LCBhIGNvbWJpbmVkIENiQ3IgcGxhbmUKKwlpbW1lZGlhdGVseSBmb2xsb3dzIHRoZSBZIHBsYW5lIGluIG1lbW9yeS4gVGhlIENiQ3IgcGxhbmUgaGFzIHRoZSBzYW1lCisJd2lkdGggYW5kIGhlaWdodCwgaW4gcGl4ZWxzLCBhcyB0aGUgWSBwbGFuZSAoYW5kIHRoZSBpbWFnZSkuIEVhY2ggbGluZQorCWNvbnRhaW5zIG9uZSBDYkNyIHBhaXIgcGVyIHBpeGVsLCB3aXRoIGVhY2ggQ2IgYW5kIENyIHNhbXBsZSBzdG9yZWQgaW4KKwlvbmUgYnl0ZS4gPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9OVjQyPC9jb25zdGFudD4gaXMgdGhlIHNhbWUgZXhjZXB0IHRoYXQKKwl0aGUgQ2IgYW5kIENyIHNhbXBsZXMgYXJlIHN3YXBwZWQsIHRoZSBDckNiIHBsYW5lIHN0YXJ0cyB3aXRoIGEgQ3IKKwlzYW1wbGUuPC9wYXJhPgorCisJPHBhcmE+SWYgdGhlIFkgcGxhbmUgaGFzIHBhZCBieXRlcyBhZnRlciBlYWNoIHJvdywgdGhlbiB0aGUgQ2JDciBwbGFuZQorCWhhcyB0d2ljZSBhcyBtYW55IHBhZCBieXRlcyBhZnRlciBpdHMgcm93cy48L3BhcmE+CisKKwk8ZXhhbXBsZT4KKwkgIDx0aXRsZT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX05WMjQ8L2NvbnN0YW50PiA0ICZ0aW1lczsgNAorcGl4ZWwgaW1hZ2U8L3RpdGxlPgorCisJICA8Zm9ybWFscGFyYT4KKwkgICAgPHRpdGxlPkJ5dGUgT3JkZXIuPC90aXRsZT4KKwkgICAgPHBhcmE+RWFjaCBjZWxsIGlzIG9uZSBieXRlLgorCQk8aW5mb3JtYWx0YWJsZSBmcmFtZT0ibm9uZSI+CisJCTx0Z3JvdXAgY29scz0iOSIgYWxpZ249ImNlbnRlciI+CisJCSAgPGNvbHNwZWMgYWxpZ249ImxlZnQiIGNvbHdpZHRoPSIyKiIgLz4KKwkJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzA6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDs0OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7ODo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzEyOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MTY6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4wMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjAxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MDI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjAyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4wMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MDM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MjQ6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MTI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjEyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4xMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MTM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MzI6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4yMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjIxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4yMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjIyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4yMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7NDA6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4zMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MzA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjMxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4zMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MzI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjMyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4zMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MzM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC90Z3JvdXA+CisJCTwvaW5mb3JtYWx0YWJsZT4KKwkgICAgICA8L3BhcmE+CisJICA8L2Zvcm1hbHBhcmE+CisJPC9leGFtcGxlPgorICAgICAgPC9yZWZzZWN0MT4KKyAgICA8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtcGFja2VkLXJnYi54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1wYWNrZWQtcmdiLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjBmYjkzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtcGFja2VkLXJnYi54bWwKQEAgLTAsMCArMSw5MzcgQEAKKzxyZWZlbnRyeSBpZD0icGFja2VkLXJnYiI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPlBhY2tlZCBSR0IgZm9ybWF0czwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPlBhY2tlZCBSR0IgZm9ybWF0czwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5QYWNrZWQgUkdCIGZvcm1hdHM8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5UaGVzZSBmb3JtYXRzIGFyZSBkZXNpZ25lZCB0byBtYXRjaCB0aGUgcGl4ZWwgZm9ybWF0cyBvZgordHlwaWNhbCBQQyBncmFwaGljcyBmcmFtZSBidWZmZXJzLiBUaGV5IG9jY3VweSA4LCAxNiwgMjQgb3IgMzIgYml0cworcGVyIHBpeGVsLiBUaGVzZSBhcmUgYWxsIHBhY2tlZC1waXhlbCBmb3JtYXRzLCBtZWFuaW5nIGFsbCB0aGUgZGF0YQorZm9yIGEgcGl4ZWwgbGllIG5leHQgdG8gZWFjaCBvdGhlciBpbiBtZW1vcnkuPC9wYXJhPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJyZ2ItZm9ybWF0cyI+CisgICAgICA8dGl0bGU+UGFja2VkIFJHQiBJbWFnZSBGb3JtYXRzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMzciIGFsaWduPSJjZW50ZXIiPgorCTxjb2xzcGVjIGNvbG5hbWU9ImlkIiBhbGlnbj0ibGVmdCIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJmb3VyY2MiIC8+CisJPGNvbHNwZWMgY29sbmFtZT0iYml0IiAvPgorCisJPGNvbHNwZWMgY29sbnVtPSI0IiBjb2xuYW1lPSJiMDciIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSI1IiBjb2xuYW1lPSJiMDYiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSI2IiBjb2xuYW1lPSJiMDUiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSI3IiBjb2xuYW1lPSJiMDQiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSI4IiBjb2xuYW1lPSJiMDMiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSI5IiBjb2xuYW1lPSJiMDIiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIxMCIgY29sbmFtZT0iYjAxIiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMTEiIGNvbG5hbWU9ImIwMCIgYWxpZ249ImNlbnRlciIgLz4KKworCTxjb2xzcGVjIGNvbG51bT0iMTMiIGNvbG5hbWU9ImIxNyIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjE0IiBjb2xuYW1lPSJiMTYiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIxNSIgY29sbmFtZT0iYjE1IiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMTYiIGNvbG5hbWU9ImIxNCIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjE3IiBjb2xuYW1lPSJiMTMiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIxOCIgY29sbmFtZT0iYjEyIiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMTkiIGNvbG5hbWU9ImIxMSIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjIwIiBjb2xuYW1lPSJiMTAiIGFsaWduPSJjZW50ZXIiIC8+CisKKwk8Y29sc3BlYyBjb2xudW09IjIyIiBjb2xuYW1lPSJiMjciIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIyMyIgY29sbmFtZT0iYjI2IiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMjQiIGNvbG5hbWU9ImIyNSIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjI1IiBjb2xuYW1lPSJiMjQiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIyNiIgY29sbmFtZT0iYjIzIiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMjciIGNvbG5hbWU9ImIyMiIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjI4IiBjb2xuYW1lPSJiMjEiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIyOSIgY29sbmFtZT0iYjIwIiBhbGlnbj0iY2VudGVyIiAvPgorCisJPGNvbHNwZWMgY29sbnVtPSIzMSIgY29sbmFtZT0iYjM3IiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMzIiIGNvbG5hbWU9ImIzNiIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjMzIiBjb2xuYW1lPSJiMzUiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIzNCIgY29sbmFtZT0iYjM0IiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMzUiIGNvbG5hbWU9ImIzMyIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjM2IiBjb2xuYW1lPSJiMzIiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIzNyIgY29sbmFtZT0iYjMxIiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMzgiIGNvbG5hbWU9ImIzMCIgYWxpZ249ImNlbnRlciIgLz4KKworCTxzcGFuc3BlYyBuYW1lc3Q9ImIwNyIgbmFtZWVuZD0iYjAwIiBzcGFubmFtZT0iYjAiIC8+CisJPHNwYW5zcGVjIG5hbWVzdD0iYjE3IiBuYW1lZW5kPSJiMTAiIHNwYW5uYW1lPSJiMSIgLz4KKwk8c3BhbnNwZWMgbmFtZXN0PSJiMjciIG5hbWVlbmQ9ImIyMCIgc3Bhbm5hbWU9ImIyIiAvPgorCTxzcGFuc3BlYyBuYW1lc3Q9ImIzNyIgbmFtZWVuZD0iYjMwIiBzcGFubmFtZT0iYjMiIC8+CisJPHRoZWFkPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PklkZW50aWZpZXI8L2VudHJ5PgorCSAgICA8ZW50cnk+Q29kZTwvZW50cnk+CisJICAgIDxlbnRyeT4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImIwIj5CeXRlJm5ic3A7MCBpbiBtZW1vcnk8L2VudHJ5PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImIxIj5CeXRlJm5ic3A7MTwvZW50cnk+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iYjIiPkJ5dGUmbmJzcDsyPC9lbnRyeT4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJiMyI+Qnl0ZSZuYnNwOzM8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5CaXQ8L2VudHJ5PgorCSAgICA8ZW50cnk+NzwvZW50cnk+CisJICAgIDxlbnRyeT42PC9lbnRyeT4KKwkgICAgPGVudHJ5PjU8L2VudHJ5PgorCSAgICA8ZW50cnk+NDwvZW50cnk+CisJICAgIDxlbnRyeT4zPC9lbnRyeT4KKwkgICAgPGVudHJ5PjI8L2VudHJ5PgorCSAgICA8ZW50cnk+MTwvZW50cnk+CisJICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgPGVudHJ5PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT43PC9lbnRyeT4KKwkgICAgPGVudHJ5PjY8L2VudHJ5PgorCSAgICA8ZW50cnk+NTwvZW50cnk+CisJICAgIDxlbnRyeT40PC9lbnRyeT4KKwkgICAgPGVudHJ5PjM8L2VudHJ5PgorCSAgICA8ZW50cnk+MjwvZW50cnk+CisJICAgIDxlbnRyeT4xPC9lbnRyeT4KKwkgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICA8ZW50cnk+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5Pjc8L2VudHJ5PgorCSAgICA8ZW50cnk+NjwvZW50cnk+CisJICAgIDxlbnRyeT41PC9lbnRyeT4KKwkgICAgPGVudHJ5PjQ8L2VudHJ5PgorCSAgICA8ZW50cnk+MzwvZW50cnk+CisJICAgIDxlbnRyeT4yPC9lbnRyeT4KKwkgICAgPGVudHJ5PjE8L2VudHJ5PgorCSAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgIDxlbnRyeT4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+NzwvZW50cnk+CisJICAgIDxlbnRyeT42PC9lbnRyeT4KKwkgICAgPGVudHJ5PjU8L2VudHJ5PgorCSAgICA8ZW50cnk+NDwvZW50cnk+CisJICAgIDxlbnRyeT4zPC9lbnRyeT4KKwkgICAgPGVudHJ5PjI8L2VudHJ5PgorCSAgICA8ZW50cnk+MTwvZW50cnk+CisJICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGhlYWQ+CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1SR0IzMzIiPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9SR0IzMzI8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4nUkdCMSc8L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1BUkdCNDQ0Ij4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfQVJHQjQ0NDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidBUjEyJzwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5hPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5hPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJWNEwyLVBJWC1GTVQtWFJHQjQ0NCI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1hSR0I0NDQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4nWFIxMic8L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULUFSR0I1NTUiPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9BUkdCNTU1PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+J0FSMTUnPC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmE8L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1YUkdCNTU1Ij4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWFJHQjU1NTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidYUjE1JzwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJWNEwyLVBJWC1GTVQtUkdCNTY1Ij4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfUkdCNTY1PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+J1JHQlAnPC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1BUkdCNTU1WCI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0FSR0I1NTVYPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+J0FSMTUnIHwgKDEgJmx0OyZsdDsgMzEpPC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5hPC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1YUkdCNTU1WCI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1hSR0I1NTVYPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+J1hSMTUnIHwgKDEgJmx0OyZsdDsgMzEpPC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1SR0I1NjVYIj4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfUkdCNTY1WDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidSR0JSJzwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJWNEwyLVBJWC1GTVQtQkdSMjQiPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9CR1IyNDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidCR1IzJzwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1SR0IyNCI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1JHQjI0PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+J1JHQjMnPC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULUJHUjY2NiI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0JHUjY2NjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidCR1JIJzwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULUFCR1IzMiI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0FCR1IzMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidBUjI0JzwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5hPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5hPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5hPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULVhCR1IzMiI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1hCR1IzMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidYUjI0JzwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULUFSR0IzMiI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0FSR0IzMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidCQTI0JzwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5hPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5hPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5hPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULVhSR0IzMiI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1hSR0IzMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidCWDI0JzwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHBhcmE+Qml0IDcgaXMgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0LjwvcGFyYT4KKworICAgIDxwYXJhPlRoZSB1c2FnZSBhbmQgdmFsdWUgb2YgdGhlIGFscGhhIGJpdHMgKGEpIGluIHRoZSBBUkdCIGFuZCBBQkdSIGZvcm1hdHMKKyAgICAoY29sbGVjdGl2ZWx5IHJlZmVycmVkIHRvIGFzIGFscGhhIGZvcm1hdHMpIGRlcGVuZCBvbiB0aGUgZGV2aWNlIHR5cGUgYW5kCisgICAgaGFyZHdhcmUgb3BlcmF0aW9uLiA8bGluayBsaW5rZW5kPSJjYXB0dXJlIj5DYXB0dXJlPC9saW5rPiBkZXZpY2VzCisgICAgKGluY2x1ZGluZyBjYXB0dXJlIHF1ZXVlcyBvZiBtZW0tdG8tbWVtIGRldmljZXMpIGZpbGwgdGhlIGFscGhhIGNvbXBvbmVudCBpbgorICAgIG1lbW9yeS4gV2hlbiB0aGUgZGV2aWNlIG91dHB1dHMgYW4gYWxwaGEgY2hhbm5lbCB0aGUgYWxwaGEgY29tcG9uZW50IHdpbGwKKyAgICBoYXZlIGEgbWVhbmluZ2Z1bCB2YWx1ZS4gT3RoZXJ3aXNlLCB3aGVuIHRoZSBkZXZpY2UgZG9lc24ndCBvdXRwdXQgYW4gYWxwaGEKKyAgICBjaGFubmVsIGJ1dCBjYW4gc2V0IHRoZSBhbHBoYSBiaXQgdG8gYSB1c2VyLWNvbmZpZ3VyYWJsZSB2YWx1ZSwgdGhlIDxsaW5rCisgICAgbGlua2VuZD0idjRsMi1hbHBoYS1jb21wb25lbnQiPjxjb25zdGFudD5WNEwyX0NJRF9BTFBIQV9DT01QT05FTlQ8L2NvbnN0YW50PgorICAgIDwvbGluaz4gY29udHJvbCBpcyB1c2VkIHRvIHNwZWNpZnkgdGhhdCBhbHBoYSB2YWx1ZSwgYW5kIHRoZSBhbHBoYSBjb21wb25lbnQKKyAgICBvZiBhbGwgcGl4ZWxzIHdpbGwgYmUgc2V0IHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWQgYnkgdGhhdCBjb250cm9sLiBPdGhlcndpc2UKKyAgICBhIGNvcnJlc3BvbmRpbmcgZm9ybWF0IHdpdGhvdXQgYW4gYWxwaGEgY29tcG9uZW50IChYUkdCIG9yIFhCR1IpIG11c3QgYmUKKyAgICB1c2VkIGluc3RlYWQgb2YgYW4gYWxwaGEgZm9ybWF0LjwvcGFyYT4KKworICAgIDxwYXJhPjxsaW5rIGxpbmtlbmQ9Im91dHB1dCI+T3V0cHV0PC9saW5rPiBkZXZpY2VzIChpbmNsdWRpbmcgb3V0cHV0IHF1ZXVlcworICAgIG9mIG1lbS10by1tZW0gZGV2aWNlcyBhbmQgPGxpbmsgbGlua2VuZD0ib3NkIj52aWRlbyBvdXRwdXQgb3ZlcmxheTwvbGluaz4KKyAgICBkZXZpY2VzKSByZWFkIHRoZSBhbHBoYSBjb21wb25lbnQgZnJvbSBtZW1vcnkuIFdoZW4gdGhlIGRldmljZSBwcm9jZXNzZXMgdGhlCisgICAgYWxwaGEgY2hhbm5lbCB0aGUgYWxwaGEgY29tcG9uZW50IG11c3QgYmUgZmlsbGVkIHdpdGggbWVhbmluZ2Z1bCB2YWx1ZXMgYnkKKyAgICBhcHBsaWNhdGlvbnMuIE90aGVyd2lzZSBhIGNvcnJlc3BvbmRpbmcgZm9ybWF0IHdpdGhvdXQgYW4gYWxwaGEgY29tcG9uZW50CisgICAgKFhSR0Igb3IgWEJHUikgbXVzdCBiZSB1c2VkIGluc3RlYWQgb2YgYW4gYWxwaGEgZm9ybWF0LjwvcGFyYT4KKworICAgIDxwYXJhPlRoZSBYUkdCIGFuZCBYQkdSIGZvcm1hdHMgY29udGFpbiB1bmRlZmluZWQgYml0cyAoLSkuIEFwcGxpY2F0aW9ucywKKyAgICBkZXZpY2VzIGFuZCBkcml2ZXJzIG11c3QgaWdub3JlIHRob3NlIGJpdHMsIGZvciBib3RoIDxsaW5rCisgICAgbGlua2VuZD0iY2FwdHVyZSI+Y2FwdHVyZTwvbGluaz4gYW5kIDxsaW5rIGxpbmtlbmQ9Im91dHB1dCI+b3V0cHV0PC9saW5rPgorICAgIGRldmljZXMuPC9wYXJhPgorCisgICAgPGV4YW1wbGU+CisgICAgICA8dGl0bGU+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9CR1IyNDwvY29uc3RhbnQ+IDQgJnRpbWVzOyA0IHBpeGVsCitpbWFnZTwvdGl0bGU+CisKKyAgICAgIDxmb3JtYWxwYXJhPgorCTx0aXRsZT5CeXRlIE9yZGVyLjwvdGl0bGU+CisJPHBhcmE+RWFjaCBjZWxsIGlzIG9uZSBieXRlLgorCSAgICAgIDxpbmZvcm1hbHRhYmxlIGZyYW1lPSJub25lIj4KKwkgICAgPHRncm91cCBjb2xzPSIxMyIgYWxpZ249ImNlbnRlciI+CisJICAgICAgPGNvbHNwZWMgYWxpZ249ImxlZnQiIGNvbHdpZHRoPSIyKiIgLz4KKwkgICAgICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQk8cm93PgorCQkgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDswOjwvZW50cnk+CisJCSAgPGVudHJ5PkI8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5SPHN1YnNjcmlwdD4wMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PkI8c3Vic2NyaXB0PjAxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5SPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PkI8c3Vic2NyaXB0PjAyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MDI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5SPHN1YnNjcmlwdD4wMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PkI8c3Vic2NyaXB0PjAzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MDM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5SPHN1YnNjcmlwdD4wMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsxMjo8L2VudHJ5PgorCQkgIDxlbnRyeT5CPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+UjxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5CPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+UjxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5CPHN1YnNjcmlwdD4xMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjEyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+UjxzdWJzY3JpcHQ+MTI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5CPHN1YnNjcmlwdD4xMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjEzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+UjxzdWJzY3JpcHQ+MTM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MjQ6PC9lbnRyeT4KKwkJICA8ZW50cnk+QjxzdWJzY3JpcHQ+MjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4yMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlI8c3Vic2NyaXB0PjIwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+QjxzdWJzY3JpcHQ+MjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4yMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlI8c3Vic2NyaXB0PjIxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+QjxzdWJzY3JpcHQ+MjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4yMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlI8c3Vic2NyaXB0PjIyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+QjxzdWJzY3JpcHQ+MjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4yMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlI8c3Vic2NyaXB0PjIzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzM2OjwvZW50cnk+CisJCSAgPGVudHJ5PkI8c3Vic2NyaXB0PjMwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MzA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5SPHN1YnNjcmlwdD4zMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PkI8c3Vic2NyaXB0PjMxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MzE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5SPHN1YnNjcmlwdD4zMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PkI8c3Vic2NyaXB0PjMyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MzI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5SPHN1YnNjcmlwdD4zMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PkI8c3Vic2NyaXB0PjMzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MzM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5SPHN1YnNjcmlwdD4zMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCTwvcm93PgorCSAgICAgIDwvdGJvZHk+CisJICAgIDwvdGdyb3VwPgorCSAgICAgIDwvaW5mb3JtYWx0YWJsZT4KKwkgICAgPC9wYXJhPgorICAgICAgPC9mb3JtYWxwYXJhPgorICAgIDwvZXhhbXBsZT4KKworICAgIDxwYXJhPkZvcm1hdHMgZGVmaW5lZCBpbiA8eHJlZiBsaW5rZW5kPSJyZ2ItZm9ybWF0cy1kZXByZWNhdGVkIi8+IGFyZQorICAgIGRlcHJlY2F0ZWQgYW5kIG11c3Qgbm90IGJlIHVzZWQgYnkgbmV3IGRyaXZlcnMuIFRoZXkgYXJlIGRvY3VtZW50ZWQgaGVyZSBmb3IKKyAgICByZWZlcmVuY2UuIFRoZSBtZWFuaW5nIG9mIHRoZWlyIGFscGhhIGJpdHMgKGEpIGlzIGlsbC1kZWZpbmVkIGFuZAorICAgIGludGVycHJldGVkIGFzIGluIGVpdGhlciB0aGUgY29ycmVzcG9uZGluZyBBUkdCIG9yIFhSR0IgZm9ybWF0LCBkZXBlbmRpbmcgb24KKyAgICB0aGUgZHJpdmVyLjwvcGFyYT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0icmdiLWZvcm1hdHMtZGVwcmVjYXRlZCI+CisgICAgICA8dGl0bGU+RGVwcmVjYXRlZCBQYWNrZWQgUkdCIEltYWdlIEZvcm1hdHM8L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzNyIgYWxpZ249ImNlbnRlciI+CisJPGNvbHNwZWMgY29sbmFtZT0iaWQiIGFsaWduPSJsZWZ0IiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImZvdXJjYyIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJiaXQiIC8+CisKKwk8Y29sc3BlYyBjb2xudW09IjQiIGNvbG5hbWU9ImIwNyIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjUiIGNvbG5hbWU9ImIwNiIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjYiIGNvbG5hbWU9ImIwNSIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjciIGNvbG5hbWU9ImIwNCIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjgiIGNvbG5hbWU9ImIwMyIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjkiIGNvbG5hbWU9ImIwMiIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjEwIiBjb2xuYW1lPSJiMDEiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIxMSIgY29sbmFtZT0iYjAwIiBhbGlnbj0iY2VudGVyIiAvPgorCisJPGNvbHNwZWMgY29sbnVtPSIxMyIgY29sbmFtZT0iYjE3IiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMTQiIGNvbG5hbWU9ImIxNiIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjE1IiBjb2xuYW1lPSJiMTUiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIxNiIgY29sbmFtZT0iYjE0IiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMTciIGNvbG5hbWU9ImIxMyIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjE4IiBjb2xuYW1lPSJiMTIiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIxOSIgY29sbmFtZT0iYjExIiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMjAiIGNvbG5hbWU9ImIxMCIgYWxpZ249ImNlbnRlciIgLz4KKworCTxjb2xzcGVjIGNvbG51bT0iMjIiIGNvbG5hbWU9ImIyNyIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjIzIiBjb2xuYW1lPSJiMjYiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIyNCIgY29sbmFtZT0iYjI1IiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMjUiIGNvbG5hbWU9ImIyNCIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjI2IiBjb2xuYW1lPSJiMjMiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIyNyIgY29sbmFtZT0iYjIyIiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMjgiIGNvbG5hbWU9ImIyMSIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjI5IiBjb2xuYW1lPSJiMjAiIGFsaWduPSJjZW50ZXIiIC8+CisKKwk8Y29sc3BlYyBjb2xudW09IjMxIiBjb2xuYW1lPSJiMzciIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIzMiIgY29sbmFtZT0iYjM2IiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMzMiIGNvbG5hbWU9ImIzNSIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjM0IiBjb2xuYW1lPSJiMzQiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIzNSIgY29sbmFtZT0iYjMzIiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMzYiIGNvbG5hbWU9ImIzMiIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjM3IiBjb2xuYW1lPSJiMzEiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIzOCIgY29sbmFtZT0iYjMwIiBhbGlnbj0iY2VudGVyIiAvPgorCisJPHNwYW5zcGVjIG5hbWVzdD0iYjA3IiBuYW1lZW5kPSJiMDAiIHNwYW5uYW1lPSJiMCIgLz4KKwk8c3BhbnNwZWMgbmFtZXN0PSJiMTciIG5hbWVlbmQ9ImIxMCIgc3Bhbm5hbWU9ImIxIiAvPgorCTxzcGFuc3BlYyBuYW1lc3Q9ImIyNyIgbmFtZWVuZD0iYjIwIiBzcGFubmFtZT0iYjIiIC8+CisJPHNwYW5zcGVjIG5hbWVzdD0iYjM3IiBuYW1lZW5kPSJiMzAiIHNwYW5uYW1lPSJiMyIgLz4KKwk8dGhlYWQ+CisJICA8cm93PgorCSAgICA8ZW50cnk+SWRlbnRpZmllcjwvZW50cnk+CisJICAgIDxlbnRyeT5Db2RlPC9lbnRyeT4KKwkgICAgPGVudHJ5PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iYjAiPkJ5dGUmbmJzcDswIGluIG1lbW9yeTwvZW50cnk+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iYjEiPkJ5dGUmbmJzcDsxPC9lbnRyeT4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJiMiI+Qnl0ZSZuYnNwOzI8L2VudHJ5PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImIzIj5CeXRlJm5ic3A7MzwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5PkJpdDwvZW50cnk+CisJICAgIDxlbnRyeT43PC9lbnRyeT4KKwkgICAgPGVudHJ5PjY8L2VudHJ5PgorCSAgICA8ZW50cnk+NTwvZW50cnk+CisJICAgIDxlbnRyeT40PC9lbnRyeT4KKwkgICAgPGVudHJ5PjM8L2VudHJ5PgorCSAgICA8ZW50cnk+MjwvZW50cnk+CisJICAgIDxlbnRyeT4xPC9lbnRyeT4KKwkgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICA8ZW50cnk+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5Pjc8L2VudHJ5PgorCSAgICA8ZW50cnk+NjwvZW50cnk+CisJICAgIDxlbnRyeT41PC9lbnRyeT4KKwkgICAgPGVudHJ5PjQ8L2VudHJ5PgorCSAgICA8ZW50cnk+MzwvZW50cnk+CisJICAgIDxlbnRyeT4yPC9lbnRyeT4KKwkgICAgPGVudHJ5PjE8L2VudHJ5PgorCSAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgIDxlbnRyeT4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+NzwvZW50cnk+CisJICAgIDxlbnRyeT42PC9lbnRyeT4KKwkgICAgPGVudHJ5PjU8L2VudHJ5PgorCSAgICA8ZW50cnk+NDwvZW50cnk+CisJICAgIDxlbnRyeT4zPC9lbnRyeT4KKwkgICAgPGVudHJ5PjI8L2VudHJ5PgorCSAgICA8ZW50cnk+MTwvZW50cnk+CisJICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgPGVudHJ5PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT43PC9lbnRyeT4KKwkgICAgPGVudHJ5PjY8L2VudHJ5PgorCSAgICA8ZW50cnk+NTwvZW50cnk+CisJICAgIDxlbnRyeT40PC9lbnRyeT4KKwkgICAgPGVudHJ5PjM8L2VudHJ5PgorCSAgICA8ZW50cnk+MjwvZW50cnk+CisJICAgIDxlbnRyeT4xPC9lbnRyeT4KKwkgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgPC9yb3c+CisJPC90aGVhZD4KKwk8dGJvZHk+CisJICA8cm93IGlkPSJWNEwyLVBJWC1GTVQtUkdCNDQ0Ij4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfUkdCNDQ0PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+J1I0NDQnPC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5hPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1SR0I1NTUiPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9SR0I1NTU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4nUkdCTyc8L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+YTwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULVJHQjU1NVgiPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9SR0I1NTVYPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+J1JHQlEnPC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5hPC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1CR1IzMiI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0JHUjMyPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+J0JHUjQnPC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5hPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5hPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5hPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJWNEwyLVBJWC1GTVQtUkdCMzIiPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9SR0IzMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidSR0I0JzwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5hPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5hPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5hPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHBhcmE+QSB0ZXN0IHV0aWxpdHkgdG8gZGV0ZXJtaW5lIHdoaWNoIFJHQiBmb3JtYXRzIGEgZHJpdmVyCithY3R1YWxseSBzdXBwb3J0cyBpcyBhdmFpbGFibGUgZnJvbSB0aGUgTGludXhUViB2NGwtZHZiIHJlcG9zaXRvcnkuCitTZWUgJnY0bC1kdmI7IGZvciBhY2Nlc3MgaW5zdHJ1Y3Rpb25zLjwvcGFyYT4KKworICA8L3JlZnNlY3QxPgorICAgIDwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1wYWNrZWQteXV2LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXBhY2tlZC15dXYueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzZmE1YTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1wYWNrZWQteXV2LnhtbApAQCAtMCwwICsxLDIzNiBAQAorPHJlZmVudHJ5IGlkPSJwYWNrZWQteXV2Ij4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+UGFja2VkIFlVViBmb3JtYXRzPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+UGFja2VkIFlVViBmb3JtYXRzPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPlBhY2tlZCBZVVYgZm9ybWF0czwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPlNpbWlsYXIgdG8gdGhlIHBhY2tlZCBSR0IgZm9ybWF0cyB0aGVzZSBmb3JtYXRzIHN0b3JlCit0aGUgWSwgQ2IgYW5kIENyIGNvbXBvbmVudCBvZiBlYWNoIHBpeGVsIGluIG9uZSAxNiBvciAzMiBiaXQKK3dvcmQuPC9wYXJhPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiPgorICAgICAgPHRpdGxlPlBhY2tlZCBZVVYgSW1hZ2UgRm9ybWF0czwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjM3IiBhbGlnbj0iY2VudGVyIj4KKwk8Y29sc3BlYyBjb2xuYW1lPSJpZCIgYWxpZ249ImxlZnQiIC8+CisJPGNvbHNwZWMgY29sbmFtZT0iZm91cmNjIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImJpdCIgLz4KKworCTxjb2xzcGVjIGNvbG51bT0iNCIgY29sbmFtZT0iYjA3IiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iNSIgY29sbmFtZT0iYjA2IiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iNiIgY29sbmFtZT0iYjA1IiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iNyIgY29sbmFtZT0iYjA0IiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iOCIgY29sbmFtZT0iYjAzIiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iOSIgY29sbmFtZT0iYjAyIiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMTAiIGNvbG5hbWU9ImIwMSIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjExIiBjb2xuYW1lPSJiMDAiIGFsaWduPSJjZW50ZXIiIC8+CisKKwk8Y29sc3BlYyBjb2xudW09IjEzIiBjb2xuYW1lPSJiMTciIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIxNCIgY29sbmFtZT0iYjE2IiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMTUiIGNvbG5hbWU9ImIxNSIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjE2IiBjb2xuYW1lPSJiMTQiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIxNyIgY29sbmFtZT0iYjEzIiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMTgiIGNvbG5hbWU9ImIxMiIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjE5IiBjb2xuYW1lPSJiMTEiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIyMCIgY29sbmFtZT0iYjEwIiBhbGlnbj0iY2VudGVyIiAvPgorCisJPGNvbHNwZWMgY29sbnVtPSIyMiIgY29sbmFtZT0iYjI3IiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMjMiIGNvbG5hbWU9ImIyNiIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjI0IiBjb2xuYW1lPSJiMjUiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIyNSIgY29sbmFtZT0iYjI0IiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMjYiIGNvbG5hbWU9ImIyMyIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjI3IiBjb2xuYW1lPSJiMjIiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIyOCIgY29sbmFtZT0iYjIxIiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMjkiIGNvbG5hbWU9ImIyMCIgYWxpZ249ImNlbnRlciIgLz4KKworCTxjb2xzcGVjIGNvbG51bT0iMzEiIGNvbG5hbWU9ImIzNyIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjMyIiBjb2xuYW1lPSJiMzYiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIzMyIgY29sbmFtZT0iYjM1IiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMzQiIGNvbG5hbWU9ImIzNCIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjM1IiBjb2xuYW1lPSJiMzMiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIzNiIgY29sbmFtZT0iYjMyIiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMzciIGNvbG5hbWU9ImIzMSIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjM4IiBjb2xuYW1lPSJiMzAiIGFsaWduPSJjZW50ZXIiIC8+CisKKwk8c3BhbnNwZWMgbmFtZXN0PSJiMDciIG5hbWVlbmQ9ImIwMCIgc3Bhbm5hbWU9ImIwIiAvPgorCTxzcGFuc3BlYyBuYW1lc3Q9ImIxNyIgbmFtZWVuZD0iYjEwIiBzcGFubmFtZT0iYjEiIC8+CisJPHNwYW5zcGVjIG5hbWVzdD0iYjI3IiBuYW1lZW5kPSJiMjAiIHNwYW5uYW1lPSJiMiIgLz4KKwk8c3BhbnNwZWMgbmFtZXN0PSJiMzciIG5hbWVlbmQ9ImIzMCIgc3Bhbm5hbWU9ImIzIiAvPgorCTx0aGVhZD4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5JZGVudGlmaWVyPC9lbnRyeT4KKwkgICAgPGVudHJ5PkNvZGU8L2VudHJ5PgorCSAgICA8ZW50cnk+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJiMCI+Qnl0ZSZuYnNwOzAgaW4gbWVtb3J5PC9lbnRyeT4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJiMSI+Qnl0ZSZuYnNwOzE8L2VudHJ5PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImIyIj5CeXRlJm5ic3A7MjwvZW50cnk+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iYjMiPkJ5dGUmbmJzcDszPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+Qml0PC9lbnRyeT4KKwkgICAgPGVudHJ5Pjc8L2VudHJ5PgorCSAgICA8ZW50cnk+NjwvZW50cnk+CisJICAgIDxlbnRyeT41PC9lbnRyeT4KKwkgICAgPGVudHJ5PjQ8L2VudHJ5PgorCSAgICA8ZW50cnk+MzwvZW50cnk+CisJICAgIDxlbnRyeT4yPC9lbnRyeT4KKwkgICAgPGVudHJ5PjE8L2VudHJ5PgorCSAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgIDxlbnRyeT4mbmJzcDs8L2VudHJ5PgorCSAgICA8ZW50cnk+NzwvZW50cnk+CisJICAgIDxlbnRyeT42PC9lbnRyeT4KKwkgICAgPGVudHJ5PjU8L2VudHJ5PgorCSAgICA8ZW50cnk+NDwvZW50cnk+CisJICAgIDxlbnRyeT4zPC9lbnRyeT4KKwkgICAgPGVudHJ5PjI8L2VudHJ5PgorCSAgICA8ZW50cnk+MTwvZW50cnk+CisJICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgPGVudHJ5PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT43PC9lbnRyeT4KKwkgICAgPGVudHJ5PjY8L2VudHJ5PgorCSAgICA8ZW50cnk+NTwvZW50cnk+CisJICAgIDxlbnRyeT40PC9lbnRyeT4KKwkgICAgPGVudHJ5PjM8L2VudHJ5PgorCSAgICA8ZW50cnk+MjwvZW50cnk+CisJICAgIDxlbnRyeT4xPC9lbnRyeT4KKwkgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICA8ZW50cnk+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5Pjc8L2VudHJ5PgorCSAgICA8ZW50cnk+NjwvZW50cnk+CisJICAgIDxlbnRyeT41PC9lbnRyeT4KKwkgICAgPGVudHJ5PjQ8L2VudHJ5PgorCSAgICA8ZW50cnk+MzwvZW50cnk+CisJICAgIDxlbnRyeT4yPC9lbnRyeT4KKwkgICAgPGVudHJ5PjE8L2VudHJ5PgorCSAgICA8ZW50cnk+MDwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3RoZWFkPgorCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93IGlkPSJWNEwyLVBJWC1GTVQtWVVWNDQ0Ij4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWVVWNDQ0PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+J1k0NDQnPC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5hPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICA8L3Jvdz4KKworCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULVlVVjU1NSI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1lVVjU1NTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidZVVZPJzwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmE8L2VudHJ5PgorCSAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgPC9yb3c+CisKKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1ZVVY1NjUiPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZVVY1NjU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4nWVVWUCc8L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICA8L3Jvdz4KKworCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULVlVVjMyIj4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWVVWMzI8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4nWVVWNCc8L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmE8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5hPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5hPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+WSc8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDxwYXJhPkJpdCA3IGlzIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdC4gVGhlIHZhbHVlIG9mIGEgPSBhbHBoYQorYml0cyBpcyB1bmRlZmluZWQgd2hlbiByZWFkaW5nIGZyb20gdGhlIGRyaXZlciwgaWdub3JlZCB3aGVuIHdyaXRpbmcKK3RvIHRoZSBkcml2ZXIsIGV4Y2VwdCB3aGVuIGFscGhhIGJsZW5kaW5nIGhhcyBiZWVuIG5lZ290aWF0ZWQgZm9yIGEKKzxsaW5rIGxpbmtlbmQ9Im92ZXJsYXkiPlZpZGVvIE92ZXJsYXk8L2xpbms+IG9yIDxsaW5rCitsaW5rZW5kPSJvc2QiPlZpZGVvIE91dHB1dCBPdmVybGF5PC9saW5rPi48L3BhcmE+CisKKyAgPC9yZWZzZWN0MT4KKyAgICA8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtc2JnZ3IxNi54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1zYmdncjE2LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDk0YjA1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtc2JnZ3IxNi54bWwKQEAgLTAsMCArMSw4MyBAQAorPHJlZmVudHJ5IGlkPSJWNEwyLVBJWC1GTVQtU0JHR1IxNiI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPlY0TDJfUElYX0ZNVF9TQkdHUjE2ICgnQllSMicpPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TQkdHUjE2PC9jb25zdGFudD48L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+QmF5ZXIgUkdCIGZvcm1hdDwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPlRoaXMgZm9ybWF0IGlzIHNpbWlsYXIgdG8gPGxpbmsKK2xpbmtlbmQ9IlY0TDItUElYLUZNVC1TQkdHUjgiPgorPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TQkdHUjg8L2NvbnN0YW50PjwvbGluaz4sIGV4Y2VwdCBlYWNoIHBpeGVsIGhhcworYSBkZXB0aCBvZiAxNiBiaXRzLiBUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSBpcyBzdG9yZWQgYXQgbG93ZXIKK21lbW9yeSBhZGRyZXNzZXMgKGxpdHRsZS1lbmRpYW4pLiBOb3RlIHRoZSBhY3R1YWwgc2FtcGxpbmcgcHJlY2lzaW9uCittYXkgYmUgbG93ZXIgdGhhbiAxNiBiaXRzLCBmb3IgZXhhbXBsZSAxMCBiaXRzIHBlciBwaXhlbCB3aXRoIHZhbHVlcworaW4gcmFuZ2UgMCB0byAxMDIzLjwvcGFyYT4KKworICAgIDxleGFtcGxlPgorICAgICAgPHRpdGxlPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfU0JHR1IxNjwvY29uc3RhbnQ+IDQgJnRpbWVzOyA0CitwaXhlbCBpbWFnZTwvdGl0bGU+CisKKyAgICAgIDxmb3JtYWxwYXJhPgorCTx0aXRsZT5CeXRlIE9yZGVyLjwvdGl0bGU+CisJPHBhcmE+RWFjaCBjZWxsIGlzIG9uZSBieXRlLgorCSAgPGluZm9ybWFsdGFibGUgZnJhbWU9Im5vbmUiPgorCSAgICA8dGdyb3VwIGNvbHM9IjUiIGFsaWduPSJjZW50ZXIiPgorCSAgICAgIDxjb2xzcGVjIGFsaWduPSJsZWZ0IiBjb2x3aWR0aD0iMioiIC8+CisJICAgICAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJPHJvdz4KKwkJICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MDo8L2VudHJ5PgorCQkgIDxlbnRyeT5CPHN1YnNjcmlwdD4wMGxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PkI8c3Vic2NyaXB0PjAwaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjAxbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MDFoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+QjxzdWJzY3JpcHQ+MDJsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5CPHN1YnNjcmlwdD4wMmhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4wM2xvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjAzaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDs4OjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjEwbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MTBoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+UjxzdWJzY3JpcHQ+MTFsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5SPHN1YnNjcmlwdD4xMWhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4xMmxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjEyaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlI8c3Vic2NyaXB0PjEzbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+UjxzdWJzY3JpcHQ+MTNoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzE2OjwvZW50cnk+CisJCSAgPGVudHJ5PkI8c3Vic2NyaXB0PjIwbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+QjxzdWJzY3JpcHQ+MjBoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MjFsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4yMWhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5CPHN1YnNjcmlwdD4yMmxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PkI8c3Vic2NyaXB0PjIyaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjIzbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MjNoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzI0OjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjMwbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MzBoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+UjxzdWJzY3JpcHQ+MzFsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5SPHN1YnNjcmlwdD4zMWhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4zMmxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjMyaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlI8c3Vic2NyaXB0PjMzbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+UjxzdWJzY3JpcHQ+MzNoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJPC9yb3c+CisJICAgICAgPC90Ym9keT4KKwkgICAgPC90Z3JvdXA+CisJICA8L2luZm9ybWFsdGFibGU+CisJPC9wYXJhPgorICAgICAgPC9mb3JtYWxwYXJhPgorICAgIDwvZXhhbXBsZT4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1zYmdncjgueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtc2JnZ3I4LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWFmMmI0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtc2JnZ3I4LnhtbApAQCAtMCwwICsxLDY3IEBACisgICAgPHJlZmVudHJ5IGlkPSJWNEwyLVBJWC1GTVQtU0JHR1I4Ij4KKyAgICAgIDxyZWZtZXRhPgorCTxyZWZlbnRyeXRpdGxlPlY0TDJfUElYX0ZNVF9TQkdHUjggKCdCQTgxJyk8L3JlZmVudHJ5dGl0bGU+CisJJm1hbnZvbDsKKyAgICAgIDwvcmVmbWV0YT4KKyAgICAgIDxyZWZuYW1lZGl2PgorCTxyZWZuYW1lPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfU0JHR1I4PC9jb25zdGFudD48L3JlZm5hbWU+CisJPHJlZnB1cnBvc2U+QmF5ZXIgUkdCIGZvcm1hdDwvcmVmcHVycG9zZT4KKyAgICAgIDwvcmVmbmFtZWRpdj4KKyAgICAgIDxyZWZzZWN0MT4KKwk8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisJPHBhcmE+VGhpcyBpcyBjb21tb25seSB0aGUgbmF0aXZlIGZvcm1hdCBvZiBkaWdpdGFsIGNhbWVyYXMsCityZWZsZWN0aW5nIHRoZSBhcnJhbmdlbWVudCBvZiBzZW5zb3JzIG9uIHRoZSBDQ0QgZGV2aWNlLiBPbmx5IG9uZSByZWQsCitncmVlbiBvciBibHVlIHZhbHVlIGlzIGdpdmVuIGZvciBlYWNoIHBpeGVsLiBNaXNzaW5nIGNvbXBvbmVudHMgbXVzdAorYmUgaW50ZXJwb2xhdGVkIGZyb20gbmVpZ2hib3VyaW5nIHBpeGVscy4gRnJvbSBsZWZ0IHRvIHJpZ2h0IHRoZSBmaXJzdAorcm93IGNvbnNpc3RzIG9mIGEgYmx1ZSBhbmQgZ3JlZW4gdmFsdWUsIHRoZSBzZWNvbmQgcm93IG9mIGEgZ3JlZW4gYW5kCityZWQgdmFsdWUuIFRoaXMgc2NoZW1lIHJlcGVhdHMgdG8gdGhlIHJpZ2h0IGFuZCBkb3duIGZvciBldmVyeSB0d28KK2NvbHVtbnMgYW5kIHJvd3MuPC9wYXJhPgorCisJPGV4YW1wbGU+CisJICA8dGl0bGU+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TQkdHUjg8L2NvbnN0YW50PiA0ICZ0aW1lczsgNAorcGl4ZWwgaW1hZ2U8L3RpdGxlPgorCisJICA8Zm9ybWFscGFyYT4KKwkgICAgPHRpdGxlPkJ5dGUgT3JkZXIuPC90aXRsZT4KKwkgICAgPHBhcmE+RWFjaCBjZWxsIGlzIG9uZSBieXRlLgorCSAgICAgIDxpbmZvcm1hbHRhYmxlIGZyYW1lPSJub25lIj4KKwkJPHRncm91cCBjb2xzPSI1IiBhbGlnbj0iY2VudGVyIj4KKwkJICA8Y29sc3BlYyBhbGlnbj0ibGVmdCIgY29sd2lkdGg9IjIqIiAvPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+QjxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+RzxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+QjxzdWJzY3JpcHQ+MDI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+RzxzdWJzY3JpcHQ+MDM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7NDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+RzxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+UjxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+RzxzdWJzY3JpcHQ+MTI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+UjxzdWJzY3JpcHQ+MTM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7ODo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+QjxzdWJzY3JpcHQ+MjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+RzxzdWJzY3JpcHQ+MjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+QjxzdWJzY3JpcHQ+MjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+RzxzdWJzY3JpcHQ+MjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MTI6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Pkc8c3Vic2NyaXB0PjMwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlI8c3Vic2NyaXB0PjMxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Pkc8c3Vic2NyaXB0PjMyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlI8c3Vic2NyaXB0PjMzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvdGdyb3VwPgorCSAgICAgIDwvaW5mb3JtYWx0YWJsZT4KKwkgICAgPC9wYXJhPgorCSAgPC9mb3JtYWxwYXJhPgorCTwvZXhhbXBsZT4KKyAgICAgIDwvcmVmc2VjdDE+CisgICAgPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXNkci1jczA4LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXNkci1jczA4LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTE4ZDhmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtc2RyLWNzMDgueG1sCkBAIC0wLDAgKzEsNDQgQEAKKzxyZWZlbnRyeSBpZD0iVjRMMi1TRFItRk1ULUNTMDgiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5WNEwyX1NEUl9GTVRfQ1M4ICgnQ1MwOCcpPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKyAgICA8cmVmbmFtZWRpdj4KKyAgICAgIDxyZWZuYW1lPgorICAgICAgICA8Y29uc3RhbnQ+VjRMMl9TRFJfRk1UX0NTODwvY29uc3RhbnQ+CisgICAgICA8L3JlZm5hbWU+CisgICAgICA8cmVmcHVycG9zZT5Db21wbGV4IHNpZ25lZCA4LWJpdCBJUSBzYW1wbGU8L3JlZnB1cnBvc2U+CisgICAgPC9yZWZuYW1lZGl2PgorICAgIDxyZWZzZWN0MT4KKyAgICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisgICAgICA8cGFyYT4KK1RoaXMgZm9ybWF0IGNvbnRhaW5zIHNlcXVlbmNlIG9mIGNvbXBsZXggbnVtYmVyIHNhbXBsZXMuIEVhY2ggY29tcGxleCBudW1iZXIKK2NvbnNpc3QgdHdvIHBhcnRzLCBjYWxsZWQgSW4tcGhhc2UgYW5kIFF1YWRyYXR1cmUgKElRKS4gQm90aCBJIGFuZCBRIGFyZQorcmVwcmVzZW50ZWQgYXMgYSA4IGJpdCBzaWduZWQgbnVtYmVyLiBJIHZhbHVlIGNvbWVzIGZpcnN0IGFuZCBRIHZhbHVlIGFmdGVyCit0aGF0LgorICAgICAgPC9wYXJhPgorICAgIDxleGFtcGxlPgorICAgICAgPHRpdGxlPjxjb25zdGFudD5WNEwyX1NEUl9GTVRfQ1M4PC9jb25zdGFudD4gMSBzYW1wbGU8L3RpdGxlPgorICAgICAgPGZvcm1hbHBhcmE+CisgICAgICAgIDx0aXRsZT5CeXRlIE9yZGVyLjwvdGl0bGU+CisgICAgICAgIDxwYXJhPkVhY2ggY2VsbCBpcyBvbmUgYnl0ZS4KKyAgICAgICAgICA8aW5mb3JtYWx0YWJsZSBmcmFtZT0ibm9uZSI+CisgICAgICAgICAgICA8dGdyb3VwIGNvbHM9IjIiIGFsaWduPSJjZW50ZXIiPgorICAgICAgICAgICAgICA8Y29sc3BlYyBhbGlnbj0ibGVmdCIgY29sd2lkdGg9IjIqIiAvPgorICAgICAgICAgICAgICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MDo8L2VudHJ5PgorICAgICAgICAgICAgICAgICAgPGVudHJ5PkknPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKyAgICAgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzE6PC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgIDxlbnRyeT5RJzxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisgICAgICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgICA8L3Rncm91cD4KKyAgICAgICAgICA8L2luZm9ybWFsdGFibGU+CisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvZm9ybWFscGFyYT4KKyAgICA8L2V4YW1wbGU+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtc2RyLWNzMTRsZS54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1zZHItY3MxNGxlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGI0OTRjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtc2RyLWNzMTRsZS54bWwKQEAgLTAsMCArMSw0NyBAQAorPHJlZmVudHJ5IGlkPSJWNEwyLVNEUi1GTVQtQ1MxNExFIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+VjRMMl9TRFJfRk1UX0NTMTRMRSAoJ0NTMTQnKTwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisgICAgPHJlZm5hbWVkaXY+CisgICAgICA8cmVmbmFtZT4KKyAgICAgICAgPGNvbnN0YW50PlY0TDJfU0RSX0ZNVF9DUzE0TEU8L2NvbnN0YW50PgorICAgICAgPC9yZWZuYW1lPgorICAgICAgPHJlZnB1cnBvc2U+Q29tcGxleCBzaWduZWQgMTQtYml0IGxpdHRsZSBlbmRpYW4gSVEgc2FtcGxlPC9yZWZwdXJwb3NlPgorICAgIDwvcmVmbmFtZWRpdj4KKyAgICA8cmVmc2VjdDE+CisgICAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorICAgICAgPHBhcmE+CitUaGlzIGZvcm1hdCBjb250YWlucyBzZXF1ZW5jZSBvZiBjb21wbGV4IG51bWJlciBzYW1wbGVzLiBFYWNoIGNvbXBsZXggbnVtYmVyCitjb25zaXN0IHR3byBwYXJ0cywgY2FsbGVkIEluLXBoYXNlIGFuZCBRdWFkcmF0dXJlIChJUSkuIEJvdGggSSBhbmQgUSBhcmUKK3JlcHJlc2VudGVkIGFzIGEgMTQgYml0IHNpZ25lZCBsaXR0bGUgZW5kaWFuIG51bWJlci4gSSB2YWx1ZSBjb21lcyBmaXJzdAorYW5kIFEgdmFsdWUgYWZ0ZXIgdGhhdC4gMTQgYml0IHZhbHVlIGlzIHN0b3JlZCBpbiAxNiBiaXQgc3BhY2Ugd2l0aCB1bnVzZWQKK2hpZ2ggYml0cyBwYWRkZWQgd2l0aCAwLgorICAgICAgPC9wYXJhPgorICAgIDxleGFtcGxlPgorICAgICAgPHRpdGxlPjxjb25zdGFudD5WNEwyX1NEUl9GTVRfQ1MxNExFPC9jb25zdGFudD4gMSBzYW1wbGU8L3RpdGxlPgorICAgICAgPGZvcm1hbHBhcmE+CisgICAgICAgIDx0aXRsZT5CeXRlIE9yZGVyLjwvdGl0bGU+CisgICAgICAgIDxwYXJhPkVhY2ggY2VsbCBpcyBvbmUgYnl0ZS4KKyAgICAgICAgICA8aW5mb3JtYWx0YWJsZSBmcmFtZT0ibm9uZSI+CisgICAgICAgICAgICA8dGdyb3VwIGNvbHM9IjMiIGFsaWduPSJjZW50ZXIiPgorICAgICAgICAgICAgICA8Y29sc3BlYyBhbGlnbj0ibGVmdCIgY29sd2lkdGg9IjIqIiAvPgorICAgICAgICAgICAgICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MDo8L2VudHJ5PgorICAgICAgICAgICAgICAgICAgPGVudHJ5PkknPHN1YnNjcmlwdD4wWzc6MF08L3N1YnNjcmlwdD48L2VudHJ5PgorICAgICAgICAgICAgICAgICAgPGVudHJ5PkknPHN1YnNjcmlwdD4wWzEzOjhdPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKyAgICAgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzI6PC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgIDxlbnRyeT5RJzxzdWJzY3JpcHQ+MFs3OjBdPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgIDxlbnRyeT5RJzxzdWJzY3JpcHQ+MFsxMzo4XTwvc3Vic2NyaXB0PjwvZW50cnk+CisgICAgICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgICA8L3Rncm91cD4KKyAgICAgICAgICA8L2luZm9ybWFsdGFibGU+CisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvZm9ybWFscGFyYT4KKyAgICA8L2V4YW1wbGU+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtc2RyLWN1MDgueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtc2RyLWN1MDgueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkODAxMDQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1zZHItY3UwOC54bWwKQEAgLTAsMCArMSw0NCBAQAorPHJlZmVudHJ5IGlkPSJWNEwyLVNEUi1GTVQtQ1UwOCI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPlY0TDJfU0RSX0ZNVF9DVTggKCdDVTA4Jyk8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorICAgIDxyZWZuYW1lZGl2PgorICAgICAgPHJlZm5hbWU+CisgICAgICAgIDxjb25zdGFudD5WNEwyX1NEUl9GTVRfQ1U4PC9jb25zdGFudD4KKyAgICAgIDwvcmVmbmFtZT4KKyAgICAgIDxyZWZwdXJwb3NlPkNvbXBsZXggdW5zaWduZWQgOC1iaXQgSVEgc2FtcGxlPC9yZWZwdXJwb3NlPgorICAgIDwvcmVmbmFtZWRpdj4KKyAgICA8cmVmc2VjdDE+CisgICAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorICAgICAgPHBhcmE+CitUaGlzIGZvcm1hdCBjb250YWlucyBzZXF1ZW5jZSBvZiBjb21wbGV4IG51bWJlciBzYW1wbGVzLiBFYWNoIGNvbXBsZXggbnVtYmVyCitjb25zaXN0IHR3byBwYXJ0cywgY2FsbGVkIEluLXBoYXNlIGFuZCBRdWFkcmF0dXJlIChJUSkuIEJvdGggSSBhbmQgUSBhcmUKK3JlcHJlc2VudGVkIGFzIGEgOCBiaXQgdW5zaWduZWQgbnVtYmVyLiBJIHZhbHVlIGNvbWVzIGZpcnN0IGFuZCBRIHZhbHVlIGFmdGVyCit0aGF0LgorICAgICAgPC9wYXJhPgorICAgIDxleGFtcGxlPgorICAgICAgPHRpdGxlPjxjb25zdGFudD5WNEwyX1NEUl9GTVRfQ1U4PC9jb25zdGFudD4gMSBzYW1wbGU8L3RpdGxlPgorICAgICAgPGZvcm1hbHBhcmE+CisgICAgICAgIDx0aXRsZT5CeXRlIE9yZGVyLjwvdGl0bGU+CisgICAgICAgIDxwYXJhPkVhY2ggY2VsbCBpcyBvbmUgYnl0ZS4KKyAgICAgICAgICA8aW5mb3JtYWx0YWJsZSBmcmFtZT0ibm9uZSI+CisgICAgICAgICAgICA8dGdyb3VwIGNvbHM9IjIiIGFsaWduPSJjZW50ZXIiPgorICAgICAgICAgICAgICA8Y29sc3BlYyBhbGlnbj0ibGVmdCIgY29sd2lkdGg9IjIqIiAvPgorICAgICAgICAgICAgICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MDo8L2VudHJ5PgorICAgICAgICAgICAgICAgICAgPGVudHJ5PkknPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKyAgICAgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzE6PC9lbnRyeT4KKyAgICAgICAgICAgICAgICAgIDxlbnRyeT5RJzxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisgICAgICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgICA8L3Rncm91cD4KKyAgICAgICAgICA8L2luZm9ybWFsdGFibGU+CisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvZm9ybWFscGFyYT4KKyAgICA8L2V4YW1wbGU+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtc2RyLWN1MTZsZS54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1zZHItY3UxNmxlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjI4OGZmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtc2RyLWN1MTZsZS54bWwKQEAgLTAsMCArMSw0NiBAQAorPHJlZmVudHJ5IGlkPSJWNEwyLVNEUi1GTVQtQ1UxNkxFIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+VjRMMl9TRFJfRk1UX0NVMTZMRSAoJ0NVMTYnKTwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisgICAgPHJlZm5hbWVkaXY+CisgICAgICA8cmVmbmFtZT4KKyAgICAgICAgPGNvbnN0YW50PlY0TDJfU0RSX0ZNVF9DVTE2TEU8L2NvbnN0YW50PgorICAgICAgPC9yZWZuYW1lPgorICAgICAgPHJlZnB1cnBvc2U+Q29tcGxleCB1bnNpZ25lZCAxNi1iaXQgbGl0dGxlIGVuZGlhbiBJUSBzYW1wbGU8L3JlZnB1cnBvc2U+CisgICAgPC9yZWZuYW1lZGl2PgorICAgIDxyZWZzZWN0MT4KKyAgICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisgICAgICA8cGFyYT4KK1RoaXMgZm9ybWF0IGNvbnRhaW5zIHNlcXVlbmNlIG9mIGNvbXBsZXggbnVtYmVyIHNhbXBsZXMuIEVhY2ggY29tcGxleCBudW1iZXIKK2NvbnNpc3QgdHdvIHBhcnRzLCBjYWxsZWQgSW4tcGhhc2UgYW5kIFF1YWRyYXR1cmUgKElRKS4gQm90aCBJIGFuZCBRIGFyZQorcmVwcmVzZW50ZWQgYXMgYSAxNiBiaXQgdW5zaWduZWQgbGl0dGxlIGVuZGlhbiBudW1iZXIuIEkgdmFsdWUgY29tZXMgZmlyc3QKK2FuZCBRIHZhbHVlIGFmdGVyIHRoYXQuCisgICAgICA8L3BhcmE+CisgICAgPGV4YW1wbGU+CisgICAgICA8dGl0bGU+PGNvbnN0YW50PlY0TDJfU0RSX0ZNVF9DVTE2TEU8L2NvbnN0YW50PiAxIHNhbXBsZTwvdGl0bGU+CisgICAgICA8Zm9ybWFscGFyYT4KKyAgICAgICAgPHRpdGxlPkJ5dGUgT3JkZXIuPC90aXRsZT4KKyAgICAgICAgPHBhcmE+RWFjaCBjZWxsIGlzIG9uZSBieXRlLgorICAgICAgICAgIDxpbmZvcm1hbHRhYmxlIGZyYW1lPSJub25lIj4KKyAgICAgICAgICAgIDx0Z3JvdXAgY29scz0iMyIgYWxpZ249ImNlbnRlciI+CisgICAgICAgICAgICAgIDxjb2xzcGVjIGFsaWduPSJsZWZ0IiBjb2x3aWR0aD0iMioiIC8+CisgICAgICAgICAgICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDswOjwvZW50cnk+CisgICAgICAgICAgICAgICAgICA8ZW50cnk+SSc8c3Vic2NyaXB0PjBbNzowXTwvc3Vic2NyaXB0PjwvZW50cnk+CisgICAgICAgICAgICAgICAgICA8ZW50cnk+SSc8c3Vic2NyaXB0PjBbMTU6OF08L3N1YnNjcmlwdD48L2VudHJ5PgorICAgICAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7Mjo8L2VudHJ5PgorICAgICAgICAgICAgICAgICAgPGVudHJ5PlEnPHN1YnNjcmlwdD4wWzc6MF08L3N1YnNjcmlwdD48L2VudHJ5PgorICAgICAgICAgICAgICAgICAgPGVudHJ5PlEnPHN1YnNjcmlwdD4wWzE1OjhdPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKyAgICAgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgICAgIDwvdGdyb3VwPgorICAgICAgICAgIDwvaW5mb3JtYWx0YWJsZT4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9mb3JtYWxwYXJhPgorICAgIDwvZXhhbXBsZT4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1zZHItcnUxMmxlLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXNkci1ydTEybGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkZjA3NmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1zZHItcnUxMmxlLnhtbApAQCAtMCwwICsxLDQwIEBACis8cmVmZW50cnkgaWQ9IlY0TDItU0RSLUZNVC1SVTEyTEUiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5WNEwyX1NEUl9GTVRfUlUxMkxFICgnUlUxMicpPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKyAgICA8cmVmbmFtZWRpdj4KKyAgICAgIDxyZWZuYW1lPgorICAgICAgICA8Y29uc3RhbnQ+VjRMMl9TRFJfRk1UX1JVMTJMRTwvY29uc3RhbnQ+CisgICAgICA8L3JlZm5hbWU+CisgICAgICA8cmVmcHVycG9zZT5SZWFsIHVuc2lnbmVkIDEyLWJpdCBsaXR0bGUgZW5kaWFuIHNhbXBsZTwvcmVmcHVycG9zZT4KKyAgICA8L3JlZm5hbWVkaXY+CisgICAgPHJlZnNlY3QxPgorICAgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKyAgICAgIDxwYXJhPgorVGhpcyBmb3JtYXQgY29udGFpbnMgc2VxdWVuY2Ugb2YgcmVhbCBudW1iZXIgc2FtcGxlcy4gRWFjaCBzYW1wbGUgaXMKK3JlcHJlc2VudGVkIGFzIGEgMTIgYml0IHVuc2lnbmVkIGxpdHRsZSBlbmRpYW4gbnVtYmVyLiBTYW1wbGUgaXMgc3RvcmVkCitpbiAxNiBiaXQgc3BhY2Ugd2l0aCB1bnVzZWQgaGlnaCBiaXRzIHBhZGRlZCB3aXRoIDAuCisgICAgICA8L3BhcmE+CisgICAgPGV4YW1wbGU+CisgICAgICA8dGl0bGU+PGNvbnN0YW50PlY0TDJfU0RSX0ZNVF9SVTEyTEU8L2NvbnN0YW50PiAxIHNhbXBsZTwvdGl0bGU+CisgICAgICA8Zm9ybWFscGFyYT4KKyAgICAgICAgPHRpdGxlPkJ5dGUgT3JkZXIuPC90aXRsZT4KKyAgICAgICAgPHBhcmE+RWFjaCBjZWxsIGlzIG9uZSBieXRlLgorICAgICAgICAgIDxpbmZvcm1hbHRhYmxlIGZyYW1lPSJub25lIj4KKyAgICAgICAgICAgIDx0Z3JvdXAgY29scz0iMyIgYWxpZ249ImNlbnRlciI+CisgICAgICAgICAgICAgIDxjb2xzcGVjIGFsaWduPSJsZWZ0IiBjb2x3aWR0aD0iMioiIC8+CisgICAgICAgICAgICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDswOjwvZW50cnk+CisgICAgICAgICAgICAgICAgICA8ZW50cnk+SSc8c3Vic2NyaXB0PjBbNzowXTwvc3Vic2NyaXB0PjwvZW50cnk+CisgICAgICAgICAgICAgICAgICA8ZW50cnk+SSc8c3Vic2NyaXB0PjBbMTE6OF08L3N1YnNjcmlwdD48L2VudHJ5PgorICAgICAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgICA8L3Rib2R5PgorICAgICAgICAgICAgPC90Z3JvdXA+CisgICAgICAgICAgPC9pbmZvcm1hbHRhYmxlPgorICAgICAgICA8L3BhcmE+CisgICAgICA8L2Zvcm1hbHBhcmE+CisgICAgPC9leGFtcGxlPgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXNnYnJnOC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1zZ2JyZzgueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlZTY1ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1zZ2JyZzgueG1sCkBAIC0wLDAgKzEsNjcgQEAKKyAgICA8cmVmZW50cnkgaWQ9IlY0TDItUElYLUZNVC1TR0JSRzgiPgorICAgICAgPHJlZm1ldGE+CisJPHJlZmVudHJ5dGl0bGU+VjRMMl9QSVhfRk1UX1NHQlJHOCAoJ0dCUkcnKTwvcmVmZW50cnl0aXRsZT4KKwkmbWFudm9sOworICAgICAgPC9yZWZtZXRhPgorICAgICAgPHJlZm5hbWVkaXY+CisJPHJlZm5hbWU+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TR0JSRzg8L2NvbnN0YW50PjwvcmVmbmFtZT4KKwk8cmVmcHVycG9zZT5CYXllciBSR0IgZm9ybWF0PC9yZWZwdXJwb3NlPgorICAgICAgPC9yZWZuYW1lZGl2PgorICAgICAgPHJlZnNlY3QxPgorCTx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKwk8cGFyYT5UaGlzIGlzIGNvbW1vbmx5IHRoZSBuYXRpdmUgZm9ybWF0IG9mIGRpZ2l0YWwgY2FtZXJhcywKK3JlZmxlY3RpbmcgdGhlIGFycmFuZ2VtZW50IG9mIHNlbnNvcnMgb24gdGhlIENDRCBkZXZpY2UuIE9ubHkgb25lIHJlZCwKK2dyZWVuIG9yIGJsdWUgdmFsdWUgaXMgZ2l2ZW4gZm9yIGVhY2ggcGl4ZWwuIE1pc3NpbmcgY29tcG9uZW50cyBtdXN0CitiZSBpbnRlcnBvbGF0ZWQgZnJvbSBuZWlnaGJvdXJpbmcgcGl4ZWxzLiBGcm9tIGxlZnQgdG8gcmlnaHQgdGhlIGZpcnN0Cityb3cgY29uc2lzdHMgb2YgYSBncmVlbiBhbmQgYmx1ZSB2YWx1ZSwgdGhlIHNlY29uZCByb3cgb2YgYSByZWQgYW5kCitncmVlbiB2YWx1ZS4gVGhpcyBzY2hlbWUgcmVwZWF0cyB0byB0aGUgcmlnaHQgYW5kIGRvd24gZm9yIGV2ZXJ5IHR3bworY29sdW1ucyBhbmQgcm93cy48L3BhcmE+CisKKwk8ZXhhbXBsZT4KKwkgIDx0aXRsZT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1NHQlJHODwvY29uc3RhbnQ+IDQgJnRpbWVzOyA0CitwaXhlbCBpbWFnZTwvdGl0bGU+CisKKwkgIDxmb3JtYWxwYXJhPgorCSAgICA8dGl0bGU+Qnl0ZSBPcmRlci48L3RpdGxlPgorCSAgICA8cGFyYT5FYWNoIGNlbGwgaXMgb25lIGJ5dGUuCisJICAgICAgPGluZm9ybWFsdGFibGUgZnJhbWU9Im5vbmUiPgorCQk8dGdyb3VwIGNvbHM9IjUiIGFsaWduPSJjZW50ZXIiPgorCQkgIDxjb2xzcGVjIGFsaWduPSJsZWZ0IiBjb2x3aWR0aD0iMioiIC8+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDswOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5HPHN1YnNjcmlwdD4wMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5CPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5HPHN1YnNjcmlwdD4wMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5CPHN1YnNjcmlwdD4wMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDs0OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5SPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5HPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5SPHN1YnNjcmlwdD4xMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5HPHN1YnNjcmlwdD4xMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDs4OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5HPHN1YnNjcmlwdD4yMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5CPHN1YnNjcmlwdD4yMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5HPHN1YnNjcmlwdD4yMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5CPHN1YnNjcmlwdD4yMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsxMjo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+UjxzdWJzY3JpcHQ+MzA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+RzxzdWJzY3JpcHQ+MzE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+UjxzdWJzY3JpcHQ+MzI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+RzxzdWJzY3JpcHQ+MzM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC90Z3JvdXA+CisJICAgICAgPC9pbmZvcm1hbHRhYmxlPgorCSAgICA8L3BhcmE+CisJICA8L2Zvcm1hbHBhcmE+CisJPC9leGFtcGxlPgorICAgICAgPC9yZWZzZWN0MT4KKyAgICA8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtc2dyYmc4LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXNncmJnOC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgwM2I4YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXNncmJnOC54bWwKQEAgLTAsMCArMSw2NyBAQAorICAgIDxyZWZlbnRyeSBpZD0iVjRMMi1QSVgtRk1ULVNHUkJHOCI+CisgICAgICA8cmVmbWV0YT4KKwk8cmVmZW50cnl0aXRsZT5WNEwyX1BJWF9GTVRfU0dSQkc4ICgnR1JCRycpPC9yZWZlbnRyeXRpdGxlPgorCSZtYW52b2w7CisgICAgICA8L3JlZm1ldGE+CisgICAgICA8cmVmbmFtZWRpdj4KKwk8cmVmbmFtZT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1NHUkJHODwvY29uc3RhbnQ+PC9yZWZuYW1lPgorCTxyZWZwdXJwb3NlPkJheWVyIFJHQiBmb3JtYXQ8L3JlZnB1cnBvc2U+CisgICAgICA8L3JlZm5hbWVkaXY+CisgICAgICA8cmVmc2VjdDE+CisJPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworCTxwYXJhPlRoaXMgaXMgY29tbW9ubHkgdGhlIG5hdGl2ZSBmb3JtYXQgb2YgZGlnaXRhbCBjYW1lcmFzLAorcmVmbGVjdGluZyB0aGUgYXJyYW5nZW1lbnQgb2Ygc2Vuc29ycyBvbiB0aGUgQ0NEIGRldmljZS4gT25seSBvbmUgcmVkLAorZ3JlZW4gb3IgYmx1ZSB2YWx1ZSBpcyBnaXZlbiBmb3IgZWFjaCBwaXhlbC4gTWlzc2luZyBjb21wb25lbnRzIG11c3QKK2JlIGludGVycG9sYXRlZCBmcm9tIG5laWdoYm91cmluZyBwaXhlbHMuIEZyb20gbGVmdCB0byByaWdodCB0aGUgZmlyc3QKK3JvdyBjb25zaXN0cyBvZiBhIGdyZWVuIGFuZCBibHVlIHZhbHVlLCB0aGUgc2Vjb25kIHJvdyBvZiBhIHJlZCBhbmQKK2dyZWVuIHZhbHVlLiBUaGlzIHNjaGVtZSByZXBlYXRzIHRvIHRoZSByaWdodCBhbmQgZG93biBmb3IgZXZlcnkgdHdvCitjb2x1bW5zIGFuZCByb3dzLjwvcGFyYT4KKworCTxleGFtcGxlPgorCSAgPHRpdGxlPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfU0dSQkc4PC9jb25zdGFudD4gNCAmdGltZXM7Cis0IHBpeGVsIGltYWdlPC90aXRsZT4KKworCSAgPGZvcm1hbHBhcmE+CisJICAgIDx0aXRsZT5CeXRlIE9yZGVyLjwvdGl0bGU+CisJICAgIDxwYXJhPkVhY2ggY2VsbCBpcyBvbmUgYnl0ZS4KKwkgICAgICA8aW5mb3JtYWx0YWJsZSBmcmFtZT0ibm9uZSI+CisJCTx0Z3JvdXAgY29scz0iNSIgYWxpZ249ImNlbnRlciI+CisJCSAgPGNvbHNwZWMgYWxpZ249ImxlZnQiIGNvbHdpZHRoPSIyKiIgLz4KKwkJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzA6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Pkc8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlI8c3Vic2NyaXB0PjAxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Pkc8c3Vic2NyaXB0PjAyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlI8c3Vic2NyaXB0PjAzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzQ6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkI8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Pkc8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkI8c3Vic2NyaXB0PjEyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Pkc8c3Vic2NyaXB0PjEzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzg6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Pkc8c3Vic2NyaXB0PjIwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlI8c3Vic2NyaXB0PjIxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Pkc8c3Vic2NyaXB0PjIyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlI8c3Vic2NyaXB0PjIzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzEyOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5CPHN1YnNjcmlwdD4zMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5HPHN1YnNjcmlwdD4zMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5CPHN1YnNjcmlwdD4zMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5HPHN1YnNjcmlwdD4zMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L3Rncm91cD4KKwkgICAgICA8L2luZm9ybWFsdGFibGU+CisJICAgIDwvcGFyYT4KKwkgIDwvZm9ybWFscGFyYT4KKwk8L2V4YW1wbGU+CisgICAgICA8L3JlZnNlY3QxPgorICAgIDwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1zcmdnYjEwLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXNyZ2diMTAueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNGQwM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1zcmdnYjEwLnhtbApAQCAtMCwwICsxLDkwIEBACisgICAgPHJlZmVudHJ5IGlkPSJwaXhmbXQtc3JnZ2IxMCI+CisgICAgICA8cmVmbWV0YT4KKwk8cmVmZW50cnl0aXRsZT5WNEwyX1BJWF9GTVRfU1JHR0IxMCAoJ1JHMTAnKSwKKwkgVjRMMl9QSVhfRk1UX1NHUkJHMTAgKCdCQTEwJyksCisJIFY0TDJfUElYX0ZNVF9TR0JSRzEwICgnR0IxMCcpLAorCSBWNEwyX1BJWF9GTVRfU0JHR1IxMCAoJ0JHMTAnKSwKKwkgPC9yZWZlbnRyeXRpdGxlPgorCSZtYW52b2w7CisgICAgICA8L3JlZm1ldGE+CisgICAgICA8cmVmbmFtZWRpdj4KKwk8cmVmbmFtZSBpZD0iVjRMMi1QSVgtRk1ULVNSR0dCMTAiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfU1JHR0IxMDwvY29uc3RhbnQ+PC9yZWZuYW1lPgorCTxyZWZuYW1lIGlkPSJWNEwyLVBJWC1GTVQtU0dSQkcxMCI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TR1JCRzEwPC9jb25zdGFudD48L3JlZm5hbWU+CisJPHJlZm5hbWUgaWQ9IlY0TDItUElYLUZNVC1TR0JSRzEwIj48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1NHQlJHMTA8L2NvbnN0YW50PjwvcmVmbmFtZT4KKwk8cmVmbmFtZSBpZD0iVjRMMi1QSVgtRk1ULVNCR0dSMTAiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfU0JHR1IxMDwvY29uc3RhbnQ+PC9yZWZuYW1lPgorCTxyZWZwdXJwb3NlPjEwLWJpdCBCYXllciBmb3JtYXRzIGV4cGFuZGVkIHRvIDE2IGJpdHM8L3JlZnB1cnBvc2U+CisgICAgICA8L3JlZm5hbWVkaXY+CisgICAgICA8cmVmc2VjdDE+CisJPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworCTxwYXJhPlRoZXNlIGZvdXIgcGl4ZWwgZm9ybWF0cyBhcmUgcmF3IHNSR0IgLyBCYXllciBmb3JtYXRzIHdpdGgKKzEwIGJpdHMgcGVyIGNvbG91ci4gRWFjaCBjb2xvdXIgY29tcG9uZW50IGlzIHN0b3JlZCBpbiBhIDE2LWJpdCB3b3JkLCB3aXRoIDYKK3VudXNlZCBoaWdoIGJpdHMgZmlsbGVkIHdpdGggemVyb3MuIEVhY2ggbi1waXhlbCByb3cgY29udGFpbnMgbi8yIGdyZWVuIHNhbXBsZXMKK2FuZCBuLzIgYmx1ZSBvciByZWQgc2FtcGxlcywgd2l0aCBhbHRlcm5hdGluZyByZWQgYW5kIGJsdWUgcm93cy4gQnl0ZXMgYXJlCitzdG9yZWQgaW4gbWVtb3J5IGluIGxpdHRsZSBlbmRpYW4gb3JkZXIuIFRoZXkgYXJlIGNvbnZlbnRpb25hbGx5IGRlc2NyaWJlZAorYXMgR1JHUi4uLiBCR0JHLi4uLCBSR1JHLi4uIEdCR0IuLi4sIGV0Yy4gQmVsb3cgaXMgYW4gZXhhbXBsZSBvZiBvbmUgb2YgdGhlc2UKK2Zvcm1hdHM8L3BhcmE+CisKKyAgICA8ZXhhbXBsZT4KKyAgICAgIDx0aXRsZT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1NCR0dSMTA8L2NvbnN0YW50PiA0ICZ0aW1lczsgNAorcGl4ZWwgaW1hZ2U8L3RpdGxlPgorCisgICAgICA8Zm9ybWFscGFyYT4KKwk8dGl0bGU+Qnl0ZSBPcmRlci48L3RpdGxlPgorCTxwYXJhPkVhY2ggY2VsbCBpcyBvbmUgYnl0ZSwgaGlnaCA2IGJpdHMgaW4gaGlnaCBieXRlcyBhcmUgMC4KKwkgIDxpbmZvcm1hbHRhYmxlIGZyYW1lPSJub25lIj4KKwkgICAgPHRncm91cCBjb2xzPSI1IiBhbGlnbj0iY2VudGVyIj4KKwkgICAgICA8Y29sc3BlYyBhbGlnbj0ibGVmdCIgY29sd2lkdGg9IjIqIiAvPgorCSAgICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCTxyb3c+CisJCSAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzA6PC9lbnRyeT4KKwkJICA8ZW50cnk+QjxzdWJzY3JpcHQ+MDBsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5CPHN1YnNjcmlwdD4wMGhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4wMWxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjAxaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PkI8c3Vic2NyaXB0PjAybG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+QjxzdWJzY3JpcHQ+MDJoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MDNsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4wM2hpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7ODo8L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4xMGxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjEwaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlI8c3Vic2NyaXB0PjExbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+UjxzdWJzY3JpcHQ+MTFoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MTJsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4xMmhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5SPHN1YnNjcmlwdD4xM2xvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlI8c3Vic2NyaXB0PjEzaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsxNjo8L2VudHJ5PgorCQkgIDxlbnRyeT5CPHN1YnNjcmlwdD4yMGxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PkI8c3Vic2NyaXB0PjIwaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjIxbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MjFoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+QjxzdWJzY3JpcHQ+MjJsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5CPHN1YnNjcmlwdD4yMmhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4yM2xvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjIzaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsyNDo8L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4zMGxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjMwaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlI8c3Vic2NyaXB0PjMxbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+UjxzdWJzY3JpcHQ+MzFoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MzJsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4zMmhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5SPHN1YnNjcmlwdD4zM2xvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlI8c3Vic2NyaXB0PjMzaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCTwvcm93PgorCSAgICAgIDwvdGJvZHk+CisJICAgIDwvdGdyb3VwPgorCSAgPC9pbmZvcm1hbHRhYmxlPgorCTwvcGFyYT4KKyAgICAgIDwvZm9ybWFscGFyYT4KKyAgICA8L2V4YW1wbGU+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtc3JnZ2IxMGFsYXc4LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXNyZ2diMTBhbGF3OC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJlNTg0NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXNyZ2diMTBhbGF3OC54bWwKQEAgLTAsMCArMSwzNCBAQAorCTxyZWZlbnRyeT4KKwkgIDxyZWZtZXRhPgorCSAgICA8cmVmZW50cnl0aXRsZT4KKwkgICAgICBWNEwyX1BJWF9GTVRfU0JHR1IxMEFMQVc4ICgnYUJBOCcpLAorCSAgICAgIFY0TDJfUElYX0ZNVF9TR0JSRzEwQUxBVzggKCdhR0E4JyksCisJICAgICAgVjRMMl9QSVhfRk1UX1NHUkJHMTBBTEFXOCAoJ2FnQTgnKSwKKwkgICAgICBWNEwyX1BJWF9GTVRfU1JHR0IxMEFMQVc4ICgnYVJBOCcpLAorCSAgICA8L3JlZmVudHJ5dGl0bGU+CisJICAgICZtYW52b2w7CisJICA8L3JlZm1ldGE+CisJICA8cmVmbmFtZWRpdj4KKwkgICAgPHJlZm5hbWUgaWQ9IlY0TDItUElYLUZNVC1TQkdHUjEwQUxBVzgiPgorCSAgICAgIDxjb25zdGFudD5WNEwyX1BJWF9GTVRfU0JHR1IxMEFMQVc4PC9jb25zdGFudD4KKwkgICAgPC9yZWZuYW1lPgorCSAgICA8cmVmbmFtZSBpZD0iVjRMMi1QSVgtRk1ULVNHQlJHMTBBTEFXOCI+CisJICAgICAgPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TR0JSRzEwQUxBVzg8L2NvbnN0YW50PgorCSAgICA8L3JlZm5hbWU+CisJICAgIDxyZWZuYW1lIGlkPSJWNEwyLVBJWC1GTVQtU0dSQkcxMEFMQVc4Ij4KKwkgICAgICA8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1NHUkJHMTBBTEFXODwvY29uc3RhbnQ+CisJICAgIDwvcmVmbmFtZT4KKwkgICAgPHJlZm5hbWUgaWQ9IlY0TDItUElYLUZNVC1TUkdHQjEwQUxBVzgiPgorCSAgICAgIDxjb25zdGFudD5WNEwyX1BJWF9GTVRfU1JHR0IxMEFMQVc4PC9jb25zdGFudD4KKwkgICAgPC9yZWZuYW1lPgorCSAgICA8cmVmcHVycG9zZT4xMC1iaXQgQmF5ZXIgZm9ybWF0cyBjb21wcmVzc2VkIHRvIDggYml0czwvcmVmcHVycG9zZT4KKwkgIDwvcmVmbmFtZWRpdj4KKwkgIDxyZWZzZWN0MT4KKwkgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKwkgICAgPHBhcmE+VGhlc2UgZm91ciBwaXhlbCBmb3JtYXRzIGFyZSByYXcgc1JHQiAvIEJheWVyCisJICAgIGZvcm1hdHMgd2l0aCAxMCBiaXRzIHBlciBjb2xvciBjb21wcmVzc2VkIHRvIDggYml0cyBlYWNoLAorCSAgICB1c2luZyB0aGUgQS1MQVcgYWxnb3JpdGhtLiBFYWNoIGNvbG9yIGNvbXBvbmVudCBjb25zdW1lcyA4CisJICAgIGJpdHMgb2YgbWVtb3J5LiBJbiBvdGhlciByZXNwZWN0cyB0aGlzIGZvcm1hdCBpcyBzaW1pbGFyIHRvCisJICAgIDx4cmVmIGxpbmtlbmQ9IlY0TDItUElYLUZNVC1TUkdHQjgiPjwveHJlZj4uPC9wYXJhPgorCSAgPC9yZWZzZWN0MT4KKwk8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtc3JnZ2IxMGRwY204LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXNyZ2diMTBkcGNtOC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRlODk4NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXNyZ2diMTBkcGNtOC54bWwKQEAgLTAsMCArMSwyOCBAQAorICAgIDxyZWZlbnRyeSBpZD0icGl4Zm10LXNyZ2diMTBkcGNtOCI+CisgICAgICA8cmVmbWV0YT4KKwk8cmVmZW50cnl0aXRsZT4KKwkgVjRMMl9QSVhfRk1UX1NCR0dSMTBEUENNOCAoJ2JCQTgnKSwKKwkgVjRMMl9QSVhfRk1UX1NHQlJHMTBEUENNOCAoJ2JHQTgnKSwKKwkgVjRMMl9QSVhfRk1UX1NHUkJHMTBEUENNOCAoJ0JEMTAnKSwKKwkgVjRMMl9QSVhfRk1UX1NSR0dCMTBEUENNOCAoJ2JSQTgnKSwKKwkgPC9yZWZlbnRyeXRpdGxlPgorCSZtYW52b2w7CisgICAgICA8L3JlZm1ldGE+CisgICAgICA8cmVmbmFtZWRpdj4KKwk8cmVmbmFtZSBpZD0iVjRMMi1QSVgtRk1ULVNCR0dSMTBEUENNOCI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TQkdHUjEwRFBDTTg8L2NvbnN0YW50PjwvcmVmbmFtZT4KKwk8cmVmbmFtZSBpZD0iVjRMMi1QSVgtRk1ULVNHQlJHMTBEUENNOCI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TR0JSRzEwRFBDTTg8L2NvbnN0YW50PjwvcmVmbmFtZT4KKwk8cmVmbmFtZSBpZD0iVjRMMi1QSVgtRk1ULVNHUkJHMTBEUENNOCI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TR1JCRzEwRFBDTTg8L2NvbnN0YW50PjwvcmVmbmFtZT4KKwk8cmVmbmFtZSBpZD0iVjRMMi1QSVgtRk1ULVNSR0dCMTBEUENNOCI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TUkdHQjEwRFBDTTg8L2NvbnN0YW50PjwvcmVmbmFtZT4KKwk8cmVmcHVycG9zZT4xMC1iaXQgQmF5ZXIgZm9ybWF0cyBjb21wcmVzc2VkIHRvIDggYml0czwvcmVmcHVycG9zZT4KKyAgICAgIDwvcmVmbmFtZWRpdj4KKyAgICAgIDxyZWZzZWN0MT4KKwk8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisJPHBhcmE+VGhlc2UgZm91ciBwaXhlbCBmb3JtYXRzIGFyZSByYXcgc1JHQiAvIEJheWVyIGZvcm1hdHMKKwl3aXRoIDEwIGJpdHMgcGVyIGNvbG91ciBjb21wcmVzc2VkIHRvIDggYml0cyBlYWNoLCB1c2luZyBEUENNCisJY29tcHJlc3Npb24uIERQQ00sIGRpZmZlcmVudGlhbCBwdWxzZS1jb2RlIG1vZHVsYXRpb24sIGlzIGxvc3N5LgorCUVhY2ggY29sb3VyIGNvbXBvbmVudCBjb25zdW1lcyA4IGJpdHMgb2YgbWVtb3J5LiBJbiBvdGhlciByZXNwZWN0cworCXRoaXMgZm9ybWF0IGlzIHNpbWlsYXIgdG8gPHhyZWYgbGlua2VuZD0icGl4Zm10LXNyZ2diMTAiIC8+LjwvcGFyYT4KKworICAgICAgPC9yZWZzZWN0MT4KKyAgICA8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtc3JnZ2IxMHAueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtc3JnZ2IxMHAueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4Y2MxMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1zcmdnYjEwcC54bWwKQEAgLTAsMCArMSw5OSBAQAorICAgIDxyZWZlbnRyeSBpZD0icGl4Zm10LXNyZ2diMTBwIj4KKyAgICAgIDxyZWZtZXRhPgorCTxyZWZlbnRyeXRpdGxlPlY0TDJfUElYX0ZNVF9TUkdHQjEwUCAoJ3BSQUEnKSwKKwkgVjRMMl9QSVhfRk1UX1NHUkJHMTBQICgncGdBQScpLAorCSBWNEwyX1BJWF9GTVRfU0dCUkcxMFAgKCdwR0FBJyksCisJIFY0TDJfUElYX0ZNVF9TQkdHUjEwUCAoJ3BCQUEnKSwKKwkgPC9yZWZlbnRyeXRpdGxlPgorCSZtYW52b2w7CisgICAgICA8L3JlZm1ldGE+CisgICAgICA8cmVmbmFtZWRpdj4KKwk8cmVmbmFtZSBpZD0iVjRMMi1QSVgtRk1ULVNSR0dCMTBQIj48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1NSR0dCMTBQPC9jb25zdGFudD48L3JlZm5hbWU+CisJPHJlZm5hbWUgaWQ9IlY0TDItUElYLUZNVC1TR1JCRzEwUCI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TR1JCRzEwUDwvY29uc3RhbnQ+PC9yZWZuYW1lPgorCTxyZWZuYW1lIGlkPSJWNEwyLVBJWC1GTVQtU0dCUkcxMFAiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfU0dCUkcxMFA8L2NvbnN0YW50PjwvcmVmbmFtZT4KKwk8cmVmbmFtZSBpZD0iVjRMMi1QSVgtRk1ULVNCR0dSMTBQIj48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1NCR0dSMTBQPC9jb25zdGFudD48L3JlZm5hbWU+CisJPHJlZnB1cnBvc2U+MTAtYml0IHBhY2tlZCBCYXllciBmb3JtYXRzPC9yZWZwdXJwb3NlPgorICAgICAgPC9yZWZuYW1lZGl2PgorICAgICAgPHJlZnNlY3QxPgorCTx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKwk8cGFyYT5UaGVzZSBmb3VyIHBpeGVsIGZvcm1hdHMgYXJlIHBhY2tlZCByYXcgc1JHQiAvCisJQmF5ZXIgZm9ybWF0cyB3aXRoIDEwIGJpdHMgcGVyIGNvbG91ci4gRXZlcnkgZm91ciBjb25zZWN1dGl2ZQorCWNvbG91ciBjb21wb25lbnRzIGFyZSBwYWNrZWQgaW50byA1IGJ5dGVzLiBFYWNoIG9mIHRoZSBmaXJzdCA0CisJYnl0ZXMgY29udGFpbiB0aGUgOCBoaWdoIG9yZGVyIGJpdHMgb2YgdGhlIHBpeGVscywgYW5kIHRoZQorCWZpZnRoIGJ5dGUgY29udGFpbnMgdGhlIHR3byBsZWFzdCBzaWduaWZpY2FudHMgYml0cyBvZiBlYWNoCisJcGl4ZWwsIGluIHRoZSBzYW1lIG9yZGVyLjwvcGFyYT4KKworCTxwYXJhPkVhY2ggbi1waXhlbCByb3cgY29udGFpbnMgbi8yIGdyZWVuIHNhbXBsZXMgYW5kIG4vMiBibHVlCisJb3IgcmVkIHNhbXBsZXMsIHdpdGggYWx0ZXJuYXRpbmcgZ3JlZW4tcmVkIGFuZCBncmVlbi1ibHVlCisJcm93cy4gVGhleSBhcmUgY29udmVudGlvbmFsbHkgZGVzY3JpYmVkIGFzIEdSR1IuLi4gQkdCRy4uLiwKKwlSR1JHLi4uIEdCR0IuLi4sIGV0Yy4gQmVsb3cgaXMgYW4gZXhhbXBsZSBvZiBvbmUgb2YgdGhlc2UKKwlmb3JtYXRzOjwvcGFyYT4KKworICAgIDxleGFtcGxlPgorICAgICAgPHRpdGxlPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfU0JHR1IxMFA8L2NvbnN0YW50PiA0ICZ0aW1lczsgNAorICAgICAgcGl4ZWwgaW1hZ2U8L3RpdGxlPgorCisgICAgICA8Zm9ybWFscGFyYT4KKwk8dGl0bGU+Qnl0ZSBPcmRlci48L3RpdGxlPgorCTxwYXJhPkVhY2ggY2VsbCBpcyBvbmUgYnl0ZS4KKwkgIDxpbmZvcm1hbHRhYmxlIGZyYW1lPSJ0b3Bib3QiIGNvbHNlcD0iMSIgcm93c2VwPSIxIj4KKwkgICAgPHRncm91cCBjb2xzPSI1IiBhbGlnbj0iY2VudGVyIj4KKwkgICAgICA8Y29sc3BlYyBhbGlnbj0ibGVmdCIgY29sd2lkdGg9IjIqIiAvPgorCSAgICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCTxyb3c+CisJCSAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzA6PC9lbnRyeT4KKwkJICA8ZW50cnk+QjxzdWJzY3JpcHQ+MDBoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MDFoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+QjxzdWJzY3JpcHQ+MDJoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MDNoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+QjxzdWJzY3JpcHQ+MDBsb3c8L3N1YnNjcmlwdD4oYml0cyA3LS02KQorCQkJIEc8c3Vic2NyaXB0PjAxbG93PC9zdWJzY3JpcHQ+KGJpdHMgNS0tNCkKKwkJCSBCPHN1YnNjcmlwdD4wMmxvdzwvc3Vic2NyaXB0PihiaXRzIDMtLTIpCisJCQkgRzxzdWJzY3JpcHQ+MDNsb3c8L3N1YnNjcmlwdD4oYml0cyAxLS0wKQorCQkgIDwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDs1OjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjEwaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlI8c3Vic2NyaXB0PjExaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjEyaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlI8c3Vic2NyaXB0PjEzaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjEwbG93PC9zdWJzY3JpcHQ+KGJpdHMgNy0tNikKKwkJCSBSPHN1YnNjcmlwdD4xMWxvdzwvc3Vic2NyaXB0PihiaXRzIDUtLTQpCisJCQkgRzxzdWJzY3JpcHQ+MTJsb3c8L3N1YnNjcmlwdD4oYml0cyAzLS0yKQorCQkJIFI8c3Vic2NyaXB0PjEzbG93PC9zdWJzY3JpcHQ+KGJpdHMgMS0tMCkKKwkJICA8L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MTA6PC9lbnRyeT4KKwkJICA8ZW50cnk+QjxzdWJzY3JpcHQ+MjBoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MjFoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+QjxzdWJzY3JpcHQ+MjJoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MjNoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+QjxzdWJzY3JpcHQ+MjBsb3c8L3N1YnNjcmlwdD4oYml0cyA3LS02KQorCQkJIEc8c3Vic2NyaXB0PjIxbG93PC9zdWJzY3JpcHQ+KGJpdHMgNS0tNCkKKwkJCSBCPHN1YnNjcmlwdD4yMmxvdzwvc3Vic2NyaXB0PihiaXRzIDMtLTIpCisJCQkgRzxzdWJzY3JpcHQ+MjNsb3c8L3N1YnNjcmlwdD4oYml0cyAxLS0wKQorCQkgIDwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsxNTo8L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4zMGhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5SPHN1YnNjcmlwdD4zMWhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4zMmhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5SPHN1YnNjcmlwdD4zM2hpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4zMGxvdzwvc3Vic2NyaXB0PihiaXRzIDctLTYpCisJCQkgUjxzdWJzY3JpcHQ+MzFsb3c8L3N1YnNjcmlwdD4oYml0cyA1LS00KQorCQkJIEc8c3Vic2NyaXB0PjMybG93PC9zdWJzY3JpcHQ+KGJpdHMgMy0tMikKKwkJCSBSPHN1YnNjcmlwdD4zM2xvdzwvc3Vic2NyaXB0PihiaXRzIDEtLTApCisJCSAgPC9lbnRyeT4KKwkJPC9yb3c+CisJICAgICAgPC90Ym9keT4KKwkgICAgPC90Z3JvdXA+CisJICA8L2luZm9ybWFsdGFibGU+CisJPC9wYXJhPgorICAgICAgPC9mb3JtYWxwYXJhPgorICAgIDwvZXhhbXBsZT4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1zcmdnYjEyLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXNyZ2diMTIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjOGU0YWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1zcmdnYjEyLnhtbApAQCAtMCwwICsxLDkwIEBACisgICAgPHJlZmVudHJ5PgorICAgICAgPHJlZm1ldGE+CisJPHJlZmVudHJ5dGl0bGU+VjRMMl9QSVhfRk1UX1NSR0dCMTIgKCdSRzEyJyksCisJIFY0TDJfUElYX0ZNVF9TR1JCRzEyICgnQkExMicpLAorCSBWNEwyX1BJWF9GTVRfU0dCUkcxMiAoJ0dCMTInKSwKKwkgVjRMMl9QSVhfRk1UX1NCR0dSMTIgKCdCRzEyJyksCisJIDwvcmVmZW50cnl0aXRsZT4KKwkmbWFudm9sOworICAgICAgPC9yZWZtZXRhPgorICAgICAgPHJlZm5hbWVkaXY+CisJPHJlZm5hbWUgaWQ9IlY0TDItUElYLUZNVC1TUkdHQjEyIj48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1NSR0dCMTI8L2NvbnN0YW50PjwvcmVmbmFtZT4KKwk8cmVmbmFtZSBpZD0iVjRMMi1QSVgtRk1ULVNHUkJHMTIiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfU0dSQkcxMjwvY29uc3RhbnQ+PC9yZWZuYW1lPgorCTxyZWZuYW1lIGlkPSJWNEwyLVBJWC1GTVQtU0dCUkcxMiI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TR0JSRzEyPC9jb25zdGFudD48L3JlZm5hbWU+CisJPHJlZm5hbWUgaWQ9IlY0TDItUElYLUZNVC1TQkdHUjEyIj48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1NCR0dSMTI8L2NvbnN0YW50PjwvcmVmbmFtZT4KKwk8cmVmcHVycG9zZT4xMi1iaXQgQmF5ZXIgZm9ybWF0cyBleHBhbmRlZCB0byAxNiBiaXRzPC9yZWZwdXJwb3NlPgorICAgICAgPC9yZWZuYW1lZGl2PgorICAgICAgPHJlZnNlY3QxPgorCTx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKwk8cGFyYT5UaGVzZSBmb3VyIHBpeGVsIGZvcm1hdHMgYXJlIHJhdyBzUkdCIC8gQmF5ZXIgZm9ybWF0cyB3aXRoCisxMiBiaXRzIHBlciBjb2xvdXIuIEVhY2ggY29sb3VyIGNvbXBvbmVudCBpcyBzdG9yZWQgaW4gYSAxNi1iaXQgd29yZCwgd2l0aCA0Cit1bnVzZWQgaGlnaCBiaXRzIGZpbGxlZCB3aXRoIHplcm9zLiBFYWNoIG4tcGl4ZWwgcm93IGNvbnRhaW5zIG4vMiBncmVlbiBzYW1wbGVzCithbmQgbi8yIGJsdWUgb3IgcmVkIHNhbXBsZXMsIHdpdGggYWx0ZXJuYXRpbmcgcmVkIGFuZCBibHVlIHJvd3MuIEJ5dGVzIGFyZQorc3RvcmVkIGluIG1lbW9yeSBpbiBsaXR0bGUgZW5kaWFuIG9yZGVyLiBUaGV5IGFyZSBjb252ZW50aW9uYWxseSBkZXNjcmliZWQKK2FzIEdSR1IuLi4gQkdCRy4uLiwgUkdSRy4uLiBHQkdCLi4uLCBldGMuIEJlbG93IGlzIGFuIGV4YW1wbGUgb2Ygb25lIG9mIHRoZXNlCitmb3JtYXRzPC9wYXJhPgorCisgICAgPGV4YW1wbGU+CisgICAgICA8dGl0bGU+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TQkdHUjEyPC9jb25zdGFudD4gNCAmdGltZXM7IDQKK3BpeGVsIGltYWdlPC90aXRsZT4KKworICAgICAgPGZvcm1hbHBhcmE+CisJPHRpdGxlPkJ5dGUgT3JkZXIuPC90aXRsZT4KKwk8cGFyYT5FYWNoIGNlbGwgaXMgb25lIGJ5dGUsIGhpZ2ggNiBiaXRzIGluIGhpZ2ggYnl0ZXMgYXJlIDAuCisJICA8aW5mb3JtYWx0YWJsZSBmcmFtZT0ibm9uZSI+CisJICAgIDx0Z3JvdXAgY29scz0iNSIgYWxpZ249ImNlbnRlciI+CisJICAgICAgPGNvbHNwZWMgYWxpZ249ImxlZnQiIGNvbHdpZHRoPSIyKiIgLz4KKwkgICAgICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQk8cm93PgorCQkgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDswOjwvZW50cnk+CisJCSAgPGVudHJ5PkI8c3Vic2NyaXB0PjAwbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+QjxzdWJzY3JpcHQ+MDBoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MDFsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4wMWhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5CPHN1YnNjcmlwdD4wMmxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PkI8c3Vic2NyaXB0PjAyaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjAzbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MDNoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzg6PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MTBsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4xMGhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5SPHN1YnNjcmlwdD4xMWxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlI8c3Vic2NyaXB0PjExaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjEybG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MTJoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+UjxzdWJzY3JpcHQ+MTNsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5SPHN1YnNjcmlwdD4xM2hpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MTY6PC9lbnRyeT4KKwkJICA8ZW50cnk+QjxzdWJzY3JpcHQ+MjBsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5CPHN1YnNjcmlwdD4yMGhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4yMWxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjIxaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PkI8c3Vic2NyaXB0PjIybG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+QjxzdWJzY3JpcHQ+MjJoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MjNsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4yM2hpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MjQ6PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MzBsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5HPHN1YnNjcmlwdD4zMGhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5SPHN1YnNjcmlwdD4zMWxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlI8c3Vic2NyaXB0PjMxaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5Pkc8c3Vic2NyaXB0PjMybG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+RzxzdWJzY3JpcHQ+MzJoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+UjxzdWJzY3JpcHQ+MzNsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5SPHN1YnNjcmlwdD4zM2hpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQk8L3Jvdz4KKwkgICAgICA8L3Rib2R5PgorCSAgICA8L3Rncm91cD4KKwkgIDwvaW5mb3JtYWx0YWJsZT4KKwk8L3BhcmE+CisgICAgICA8L2Zvcm1hbHBhcmE+CisgICAgPC9leGFtcGxlPgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXNyZ2diOC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1zcmdnYjgueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NzBlM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC1zcmdnYjgueG1sCkBAIC0wLDAgKzEsNjcgQEAKKyAgICA8cmVmZW50cnkgaWQ9IlY0TDItUElYLUZNVC1TUkdHQjgiPgorICAgICAgPHJlZm1ldGE+CisJPHJlZmVudHJ5dGl0bGU+VjRMMl9QSVhfRk1UX1NSR0dCOCAoJ1JHR0InKTwvcmVmZW50cnl0aXRsZT4KKwkmbWFudm9sOworICAgICAgPC9yZWZtZXRhPgorICAgICAgPHJlZm5hbWVkaXY+CisJPHJlZm5hbWU+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TUkdHQjg8L2NvbnN0YW50PjwvcmVmbmFtZT4KKwk8cmVmcHVycG9zZT5CYXllciBSR0IgZm9ybWF0PC9yZWZwdXJwb3NlPgorICAgICAgPC9yZWZuYW1lZGl2PgorICAgICAgPHJlZnNlY3QxPgorCTx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKwk8cGFyYT5UaGlzIGlzIGNvbW1vbmx5IHRoZSBuYXRpdmUgZm9ybWF0IG9mIGRpZ2l0YWwgY2FtZXJhcywKK3JlZmxlY3RpbmcgdGhlIGFycmFuZ2VtZW50IG9mIHNlbnNvcnMgb24gdGhlIENDRCBkZXZpY2UuIE9ubHkgb25lIHJlZCwKK2dyZWVuIG9yIGJsdWUgdmFsdWUgaXMgZ2l2ZW4gZm9yIGVhY2ggcGl4ZWwuIE1pc3NpbmcgY29tcG9uZW50cyBtdXN0CitiZSBpbnRlcnBvbGF0ZWQgZnJvbSBuZWlnaGJvdXJpbmcgcGl4ZWxzLiBGcm9tIGxlZnQgdG8gcmlnaHQgdGhlIGZpcnN0Cityb3cgY29uc2lzdHMgb2YgYSByZWQgYW5kIGdyZWVuIHZhbHVlLCB0aGUgc2Vjb25kIHJvdyBvZiBhIGdyZWVuIGFuZAorYmx1ZSB2YWx1ZS4gVGhpcyBzY2hlbWUgcmVwZWF0cyB0byB0aGUgcmlnaHQgYW5kIGRvd24gZm9yIGV2ZXJ5IHR3bworY29sdW1ucyBhbmQgcm93cy48L3BhcmE+CisKKwk8ZXhhbXBsZT4KKwkgIDx0aXRsZT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1NSR0dCODwvY29uc3RhbnQ+IDQgJnRpbWVzOyA0CitwaXhlbCBpbWFnZTwvdGl0bGU+CisKKwkgIDxmb3JtYWxwYXJhPgorCSAgICA8dGl0bGU+Qnl0ZSBPcmRlci48L3RpdGxlPgorCSAgICA8cGFyYT5FYWNoIGNlbGwgaXMgb25lIGJ5dGUuCisJICAgICAgPGluZm9ybWFsdGFibGUgZnJhbWU9Im5vbmUiPgorCQk8dGdyb3VwIGNvbHM9IjUiIGFsaWduPSJjZW50ZXIiPgorCQkgIDxjb2xzcGVjIGFsaWduPSJsZWZ0IiBjb2x3aWR0aD0iMioiIC8+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDswOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5SPHN1YnNjcmlwdD4wMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5HPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5SPHN1YnNjcmlwdD4wMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5HPHN1YnNjcmlwdD4wMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDs0OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5HPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5CPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5HPHN1YnNjcmlwdD4xMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5CPHN1YnNjcmlwdD4xMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDs4OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5SPHN1YnNjcmlwdD4yMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5HPHN1YnNjcmlwdD4yMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5SPHN1YnNjcmlwdD4yMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5HPHN1YnNjcmlwdD4yMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsxMjo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+RzxzdWJzY3JpcHQ+MzA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+QjxzdWJzY3JpcHQ+MzE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+RzxzdWJzY3JpcHQ+MzI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+QjxzdWJzY3JpcHQ+MzM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC90Z3JvdXA+CisJICAgICAgPC9pbmZvcm1hbHRhYmxlPgorCSAgICA8L3BhcmE+CisJICA8L2Zvcm1hbHBhcmE+CisJPC9leGFtcGxlPgorICAgICAgPC9yZWZzZWN0MT4KKyAgICA8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtdXY4LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXV2OC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzUwN2MxZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXV2OC54bWwKQEAgLTAsMCArMSw2MiBAQAorCTxyZWZlbnRyeSBpZD0iVjRMMi1QSVgtRk1ULVVWOCI+CisJICA8cmVmbWV0YT4KKwkgICAgPHJlZmVudHJ5dGl0bGU+VjRMMl9QSVhfRk1UX1VWOCAgKCdVVjgnKTwvcmVmZW50cnl0aXRsZT4KKwkgICAgJm1hbnZvbDsKKwkgIDwvcmVmbWV0YT4KKwkgIDxyZWZuYW1lZGl2PgorCSAgICA8cmVmbmFtZT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1VWODwvY29uc3RhbnQ+PC9yZWZuYW1lPgorCSAgICA8cmVmcHVycG9zZT5VViBwbGFuZSBpbnRlcmxlYXZlZDwvcmVmcHVycG9zZT4KKwkgIDwvcmVmbmFtZWRpdj4KKwkgIDxyZWZzZWN0MT4KKwkgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKwkgICAgPHBhcmE+SW4gdGhpcyBmb3JtYXQgdGhlcmUgaXMgbm8gWSBwbGFuZSwgT25seSBDYkNyIHBsYW5lLiBpZQorCSAgICAoVVYgaW50ZXJsZWF2ZWQpPC9wYXJhPgorCSAgICA8ZXhhbXBsZT4KKwkgICAgPHRpdGxlPgorCSAgICAgIDxjb25zdGFudD5WNEwyX1BJWF9GTVRfVVY4PC9jb25zdGFudD4KKwkgICAgICAgcGl4ZWwgaW1hZ2UKKwkgICAgPC90aXRsZT4KKworCSAgICA8Zm9ybWFscGFyYT4KKwkgICAgICA8dGl0bGU+Qnl0ZSBPcmRlci48L3RpdGxlPgorCSAgICAgIDxwYXJhPkVhY2ggY2VsbCBpcyBvbmUgYnl0ZS4KKwkgICAgICAgIDxpbmZvcm1hbHRhYmxlIGZyYW1lPSJub25lIj4KKwkgICAgICAgIDx0Z3JvdXAgY29scz0iNSIgYWxpZ249ImNlbnRlciI+CisJCSAgPGNvbHNwZWMgYWxpZ249ImxlZnQiIGNvbHdpZHRoPSIyKiIgLz4KKwkJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzA6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4wMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjAxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDs0OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7ODo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjIwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4yMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjIxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzEyOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MzA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjMwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4zMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MzE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC90Z3JvdXA+CisJCTwvaW5mb3JtYWx0YWJsZT4KKwkgICAgICA8L3BhcmE+CisJICAgICAgPC9mb3JtYWxwYXJhPgorCSAgICA8L2V4YW1wbGU+CisJICA8L3JlZnNlY3QxPgorCTwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC11eXZ5LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXV5dnkueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxZjY4MDEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC11eXZ5LnhtbApAQCAtMCwwICsxLDEyMCBAQAorICAgIDxyZWZlbnRyeSBpZD0iVjRMMi1QSVgtRk1ULVVZVlkiPgorICAgICAgPHJlZm1ldGE+CisJPHJlZmVudHJ5dGl0bGU+VjRMMl9QSVhfRk1UX1VZVlkgKCdVWVZZJyk8L3JlZmVudHJ5dGl0bGU+CisJJm1hbnZvbDsKKyAgICAgIDwvcmVmbWV0YT4KKyAgICAgIDxyZWZuYW1lZGl2PgorCTxyZWZuYW1lPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfVVlWWTwvY29uc3RhbnQ+PC9yZWZuYW1lPgorCTxyZWZwdXJwb3NlPlZhcmlhdGlvbiBvZgorPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZVVlWPC9jb25zdGFudD4gd2l0aCBkaWZmZXJlbnQgb3JkZXIgb2Ygc2FtcGxlcworaW4gbWVtb3J5PC9yZWZwdXJwb3NlPgorICAgICAgPC9yZWZuYW1lZGl2PgorICAgICAgPHJlZnNlY3QxPgorCTx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKwk8cGFyYT5JbiB0aGlzIGZvcm1hdCBlYWNoIGZvdXIgYnl0ZXMgaXMgdHdvIHBpeGVscy4gRWFjaCBmb3VyCitieXRlcyBpcyB0d28gWSdzLCBhIENiIGFuZCBhIENyLiBFYWNoIFkgZ29lcyB0byBvbmUgb2YgdGhlIHBpeGVscywgYW5kCit0aGUgQ2IgYW5kIENyIGJlbG9uZyB0byBib3RoIHBpeGVscy4gQXMgeW91IGNhbiBzZWUsIHRoZSBDciBhbmQgQ2IKK2NvbXBvbmVudHMgaGF2ZSBoYWxmIHRoZSBob3Jpem9udGFsIHJlc29sdXRpb24gb2YgdGhlIFkKK2NvbXBvbmVudC48L3BhcmE+CisKKwk8ZXhhbXBsZT4KKwkgIDx0aXRsZT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1VZVlk8L2NvbnN0YW50PiA0ICZ0aW1lczsgNAorcGl4ZWwgaW1hZ2U8L3RpdGxlPgorCisJICA8Zm9ybWFscGFyYT4KKwkgICAgPHRpdGxlPkJ5dGUgT3JkZXIuPC90aXRsZT4KKwkgICAgPHBhcmE+RWFjaCBjZWxsIGlzIG9uZSBieXRlLgorCQk8aW5mb3JtYWx0YWJsZSBmcmFtZT0ibm9uZSI+CisJCTx0Z3JvdXAgY29scz0iOSIgYWxpZ249ImNlbnRlciI+CisJCSAgPGNvbHNwZWMgYWxpZ249ImxlZnQiIGNvbHdpZHRoPSIyKiIgLz4KKwkJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzA6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4wMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7ODo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsxNjo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjIwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4yMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjIxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsyNDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjMwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MzA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4zMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjMxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L3Rncm91cD4KKwkJPC9pbmZvcm1hbHRhYmxlPgorCSAgICAgIDwvcGFyYT4KKwkgIDwvZm9ybWFscGFyYT4KKworCSAgPGZvcm1hbHBhcmE+CisJICAgIDx0aXRsZT5Db2xvciBTYW1wbGUgTG9jYXRpb24uPC90aXRsZT4KKwkgICAgPHBhcmE+CisJCTxpbmZvcm1hbHRhYmxlIGZyYW1lPSJub25lIj4KKwkJPHRncm91cCBjb2xzPSI3IiBhbGlnbj0iY2VudGVyIj4KKwkJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT4wPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+MTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT4yPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+MzwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MTwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjI8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+WTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT4zPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC90Z3JvdXA+CisJCTwvaW5mb3JtYWx0YWJsZT4KKwkgICAgICA8L3BhcmE+CisJICA8L2Zvcm1hbHBhcmE+CisJPC9leGFtcGxlPgorICAgICAgPC9yZWZzZWN0MT4KKyAgICA8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtdnl1eS54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC12eXV5LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjgwMzQwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQtdnl1eS54bWwKQEAgLTAsMCArMSwxMjAgQEAKKyAgICA8cmVmZW50cnkgaWQ9IlY0TDItUElYLUZNVC1WWVVZIj4KKyAgICAgIDxyZWZtZXRhPgorCTxyZWZlbnRyeXRpdGxlPlY0TDJfUElYX0ZNVF9WWVVZICgnVllVWScpPC9yZWZlbnRyeXRpdGxlPgorCSZtYW52b2w7CisgICAgICA8L3JlZm1ldGE+CisgICAgICA8cmVmbmFtZWRpdj4KKwk8cmVmbmFtZT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1ZZVVk8L2NvbnN0YW50PjwvcmVmbmFtZT4KKwk8cmVmcHVycG9zZT5WYXJpYXRpb24gb2YKKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfWVVZVjwvY29uc3RhbnQ+IHdpdGggZGlmZmVyZW50IG9yZGVyIG9mIHNhbXBsZXMKK2luIG1lbW9yeTwvcmVmcHVycG9zZT4KKyAgICAgIDwvcmVmbmFtZWRpdj4KKyAgICAgIDxyZWZzZWN0MT4KKwk8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisJPHBhcmE+SW4gdGhpcyBmb3JtYXQgZWFjaCBmb3VyIGJ5dGVzIGlzIHR3byBwaXhlbHMuIEVhY2ggZm91cgorYnl0ZXMgaXMgdHdvIFkncywgYSBDYiBhbmQgYSBDci4gRWFjaCBZIGdvZXMgdG8gb25lIG9mIHRoZSBwaXhlbHMsIGFuZAordGhlIENiIGFuZCBDciBiZWxvbmcgdG8gYm90aCBwaXhlbHMuIEFzIHlvdSBjYW4gc2VlLCB0aGUgQ3IgYW5kIENiCitjb21wb25lbnRzIGhhdmUgaGFsZiB0aGUgaG9yaXpvbnRhbCByZXNvbHV0aW9uIG9mIHRoZSBZCitjb21wb25lbnQuPC9wYXJhPgorCisJPGV4YW1wbGU+CisJICA8dGl0bGU+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9WWVVZPC9jb25zdGFudD4gNCAmdGltZXM7IDQKK3BpeGVsIGltYWdlPC90aXRsZT4KKworCSAgPGZvcm1hbHBhcmE+CisJICAgIDx0aXRsZT5CeXRlIE9yZGVyLjwvdGl0bGU+CisJICAgIDxwYXJhPkVhY2ggY2VsbCBpcyBvbmUgYnl0ZS4KKwkJPGluZm9ybWFsdGFibGUgZnJhbWU9Im5vbmUiPgorCQk8dGdyb3VwIGNvbHM9IjkiIGFsaWduPSJjZW50ZXIiPgorCQkgIDxjb2xzcGVjIGFsaWduPSJsZWZ0IiBjb2x3aWR0aD0iMioiIC8+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDswOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4wMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjAxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzg6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MTY6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4yMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjIwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4yMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MjQ6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4zMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjMwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MzE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4zMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC90Z3JvdXA+CisJCTwvaW5mb3JtYWx0YWJsZT4KKwkgICAgICA8L3BhcmE+CisJICA8L2Zvcm1hbHBhcmE+CisKKwkgIDxmb3JtYWxwYXJhPgorCSAgICA8dGl0bGU+Q29sb3IgU2FtcGxlIExvY2F0aW9uLjwvdGl0bGU+CisJICAgIDxwYXJhPgorCQk8aW5mb3JtYWx0YWJsZSBmcmFtZT0ibm9uZSI+CisJCTx0Z3JvdXAgY29scz0iNyIgYWxpZ249ImNlbnRlciI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MDwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjE8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MjwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjM8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjE8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+WTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT4yPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvdGdyb3VwPgorCQk8L2luZm9ybWFsdGFibGU+CisJICAgICAgPC9wYXJhPgorCSAgPC9mb3JtYWxwYXJhPgorCTwvZXhhbXBsZT4KKyAgICAgIDwvcmVmc2VjdDE+CisgICAgPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXkxMC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC15MTAueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwNjUwNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC15MTAueG1sCkBAIC0wLDAgKzEsNzkgQEAKKzxyZWZlbnRyeSBpZD0iVjRMMi1QSVgtRk1ULVkxMCI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPlY0TDJfUElYX0ZNVF9ZMTAgKCdZMTAgJyk8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1kxMDwvY29uc3RhbnQ+PC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPkdyZXktc2NhbGUgaW1hZ2U8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5UaGlzIGlzIGEgZ3JleS1zY2FsZSBpbWFnZSB3aXRoIGEgZGVwdGggb2YgMTAgYml0cyBwZXIgcGl4ZWwuIFBpeGVscworYXJlIHN0b3JlZCBpbiAxNi1iaXQgd29yZHMgd2l0aCB1bnVzZWQgaGlnaCBiaXRzIHBhZGRlZCB3aXRoIDAuIFRoZSBsZWFzdAorc2lnbmlmaWNhbnQgYnl0ZSBpcyBzdG9yZWQgYXQgbG93ZXIgbWVtb3J5IGFkZHJlc3NlcyAobGl0dGxlLWVuZGlhbikuPC9wYXJhPgorCisgICAgPGV4YW1wbGU+CisgICAgICA8dGl0bGU+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZMTA8L2NvbnN0YW50PiA0ICZ0aW1lczsgNAorcGl4ZWwgaW1hZ2U8L3RpdGxlPgorCisgICAgICA8Zm9ybWFscGFyYT4KKwk8dGl0bGU+Qnl0ZSBPcmRlci48L3RpdGxlPgorCTxwYXJhPkVhY2ggY2VsbCBpcyBvbmUgYnl0ZS4KKwkgIDxpbmZvcm1hbHRhYmxlIGZyYW1lPSJub25lIj4KKwkgICAgPHRncm91cCBjb2xzPSI5IiBhbGlnbj0iY2VudGVyIj4KKwkgICAgICA8Y29sc3BlYyBhbGlnbj0ibGVmdCIgY29sd2lkdGg9IjIqIiAvPgorCSAgICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCTxyb3c+CisJCSAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzA6PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAwbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAwaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMWxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMWhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDJsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDJoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAzbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAzaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDs4OjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMGxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMGhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTFsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTFoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEybG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEyaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4xM2xvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4xM2hpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MTY6PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIwbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIwaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMWxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMWhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjJsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjJoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIzbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIzaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsyNDo8L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzBsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzBoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMxbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMxaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMmxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMmhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzNsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzNoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJPC9yb3c+CisJICAgICAgPC90Ym9keT4KKwkgICAgPC90Z3JvdXA+CisJICA8L2luZm9ybWFsdGFibGU+CisJPC9wYXJhPgorICAgICAgPC9mb3JtYWxwYXJhPgorICAgIDwvZXhhbXBsZT4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC15MTBiLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXkxMGIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkYjBhZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC15MTBiLnhtbApAQCAtMCwwICsxLDQzIEBACis8cmVmZW50cnkgaWQ9IlY0TDItUElYLUZNVC1ZMTBCUEFDSyI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPlY0TDJfUElYX0ZNVF9ZMTBCUEFDSyAoJ1kxMEInKTwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWTEwQlBBQ0s8L2NvbnN0YW50PjwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5HcmV5LXNjYWxlIGltYWdlIGFzIGEgYml0LXBhY2tlZCBhcnJheTwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPlRoaXMgaXMgYSBwYWNrZWQgZ3JleS1zY2FsZSBpbWFnZSBmb3JtYXQgd2l0aCBhIGRlcHRoIG9mIDEwIGJpdHMgcGVyCisgICAgICBwaXhlbC4gUGl4ZWxzIGFyZSBzdG9yZWQgaW4gYSBiaXQtcGFja2VkIGFycmF5IG9mIDEwYml0IGJpdHMgcGVyIHBpeGVsLAorICAgICAgd2l0aCBubyBwYWRkaW5nIGJldHdlZW4gdGhlbSBhbmQgd2l0aCB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXRzIGNvbWluZworICAgICAgZmlyc3QgZnJvbSB0aGUgbGVmdC48L3BhcmE+CisKKyAgICA8ZXhhbXBsZT4KKyAgICAgIDx0aXRsZT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1kxMEJQQUNLPC9jb25zdGFudD4gNCBwaXhlbCBkYXRhIHN0cmVhbSB0YWtpbmcgNSBieXRlczwvdGl0bGU+CisKKyAgICAgIDxmb3JtYWxwYXJhPgorCTx0aXRsZT5CaXQtcGFja2VkIHJlcHJlc2VudGF0aW9uPC90aXRsZT4KKwk8cGFyYT5waXhlbHMgY3Jvc3MgdGhlIGJ5dGUgYm91bmRhcnkgYW5kIGhhdmUgYSByYXRpbyBvZiA1IGJ5dGVzIGZvciBlYWNoIDQKKyAgICAgICAgICBwaXhlbHMuCisJICA8aW5mb3JtYWx0YWJsZSBmcmFtZT0iYWxsIj4KKwkgICAgPHRncm91cCBjb2xzPSI1IiBhbGlnbj0iY2VudGVyIj4KKwkgICAgICA8Y29sc3BlYyBhbGlnbj0ibGVmdCIgY29sd2lkdGg9IjIqIiAvPgorCSAgICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCTxyb3c+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMFs5OjJdPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAwWzE6MF08L3N1YnNjcmlwdD5ZJzxzdWJzY3JpcHQ+MDFbOTo0XTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMVszOjBdPC9zdWJzY3JpcHQ+WSc8c3Vic2NyaXB0PjAyWzk6Nl08L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDJbNTowXTwvc3Vic2NyaXB0PlknPHN1YnNjcmlwdD4wM1s5OjhdPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAzWzc6MF08L3N1YnNjcmlwdD48L2VudHJ5PgorCQk8L3Jvdz4KKwkgICAgICA8L3Rib2R5PgorCSAgICA8L3Rncm91cD4KKwkgIDwvaW5mb3JtYWx0YWJsZT4KKwk8L3BhcmE+CisgICAgICA8L2Zvcm1hbHBhcmE+CisgICAgPC9leGFtcGxlPgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXkxMi54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC15MTIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNDE3YjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC15MTIueG1sCkBAIC0wLDAgKzEsNzkgQEAKKzxyZWZlbnRyeSBpZD0iVjRMMi1QSVgtRk1ULVkxMiI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPlY0TDJfUElYX0ZNVF9ZMTIgKCdZMTIgJyk8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1kxMjwvY29uc3RhbnQ+PC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPkdyZXktc2NhbGUgaW1hZ2U8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5UaGlzIGlzIGEgZ3JleS1zY2FsZSBpbWFnZSB3aXRoIGEgZGVwdGggb2YgMTIgYml0cyBwZXIgcGl4ZWwuIFBpeGVscworYXJlIHN0b3JlZCBpbiAxNi1iaXQgd29yZHMgd2l0aCB1bnVzZWQgaGlnaCBiaXRzIHBhZGRlZCB3aXRoIDAuIFRoZSBsZWFzdAorc2lnbmlmaWNhbnQgYnl0ZSBpcyBzdG9yZWQgYXQgbG93ZXIgbWVtb3J5IGFkZHJlc3NlcyAobGl0dGxlLWVuZGlhbikuPC9wYXJhPgorCisgICAgPGV4YW1wbGU+CisgICAgICA8dGl0bGU+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZMTI8L2NvbnN0YW50PiA0ICZ0aW1lczsgNAorcGl4ZWwgaW1hZ2U8L3RpdGxlPgorCisgICAgICA8Zm9ybWFscGFyYT4KKwk8dGl0bGU+Qnl0ZSBPcmRlci48L3RpdGxlPgorCTxwYXJhPkVhY2ggY2VsbCBpcyBvbmUgYnl0ZS4KKwkgIDxpbmZvcm1hbHRhYmxlIGZyYW1lPSJub25lIj4KKwkgICAgPHRncm91cCBjb2xzPSI5IiBhbGlnbj0iY2VudGVyIj4KKwkgICAgICA8Y29sc3BlYyBhbGlnbj0ibGVmdCIgY29sd2lkdGg9IjIqIiAvPgorCSAgICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCTxyb3c+CisJCSAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzA6PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAwbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAwaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMWxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMWhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDJsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDJoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAzbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAzaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDs4OjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMGxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMGhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTFsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTFoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEybG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEyaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4xM2xvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4xM2hpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MTY6PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIwbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIwaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMWxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMWhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjJsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjJoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIzbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIzaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsyNDo8L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzBsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzBoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMxbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMxaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMmxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMmhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzNsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzNoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJPC9yb3c+CisJICAgICAgPC90Ym9keT4KKwkgICAgPC90Z3JvdXA+CisJICA8L2luZm9ybWFsdGFibGU+CisJPC9wYXJhPgorICAgICAgPC9mb3JtYWxwYXJhPgorICAgIDwvZXhhbXBsZT4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC15MTYtYmUueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQteTE2LWJlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWE1M2UxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQteTE2LWJlLnhtbApAQCAtMCwwICsxLDgxIEBACis8cmVmZW50cnkgaWQ9IlY0TDItUElYLUZNVC1ZMTYtQkUiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5WNEwyX1BJWF9GTVRfWTE2X0JFICgnWTE2ICcgfCAoMSAmbHQ7Jmx0OyAzMSkpPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZMTZfQkU8L2NvbnN0YW50PjwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5HcmV5LXNjYWxlIGltYWdlPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgPHBhcmE+VGhpcyBpcyBhIGdyZXktc2NhbGUgaW1hZ2Ugd2l0aCBhIGRlcHRoIG9mIDE2IGJpdHMgcGVyCitwaXhlbC4gVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYnl0ZSBpcyBzdG9yZWQgYXQgbG93ZXIgbWVtb3J5IGFkZHJlc3NlcworKGJpZy1lbmRpYW4pLiBOb3RlIHRoZSBhY3R1YWwgc2FtcGxpbmcgcHJlY2lzaW9uIG1heSBiZSBsb3dlciB0aGFuCisxNiBiaXRzLCBmb3IgZXhhbXBsZSAxMCBiaXRzIHBlciBwaXhlbCB3aXRoIHZhbHVlcyBpbiByYW5nZSAwIHRvCisxMDIzLjwvcGFyYT4KKworICAgIDxleGFtcGxlPgorICAgICAgPHRpdGxlPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWTE2X0JFPC9jb25zdGFudD4gNCAmdGltZXM7IDQKK3BpeGVsIGltYWdlPC90aXRsZT4KKworICAgICAgPGZvcm1hbHBhcmE+CisJPHRpdGxlPkJ5dGUgT3JkZXIuPC90aXRsZT4KKwk8cGFyYT5FYWNoIGNlbGwgaXMgb25lIGJ5dGUuCisJICA8aW5mb3JtYWx0YWJsZSBmcmFtZT0ibm9uZSI+CisJICAgIDx0Z3JvdXAgY29scz0iOSIgYWxpZ249ImNlbnRlciI+CisJICAgICAgPGNvbHNwZWMgYWxpZ249ImxlZnQiIGNvbHdpZHRoPSIyKiIgLz4KKwkgICAgICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQk8cm93PgorCQkgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDswOjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMGhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDBsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDFoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAxbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAyaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMmxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4wM2hpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDNsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7ODo8L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTBoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEwbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjExaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMWxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMmhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTJsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTNoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEzbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJPC9yb3c+CisJCTxyb3c+CisJCSAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzE2OjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMGhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjBsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjFoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIxbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIyaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMmxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4yM2hpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjNsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MjQ6PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMwaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMGxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMWhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzFsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzJoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMybG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMzaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4zM2xvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCTwvcm93PgorCSAgICAgIDwvdGJvZHk+CisJICAgIDwvdGdyb3VwPgorCSAgPC9pbmZvcm1hbHRhYmxlPgorCTwvcGFyYT4KKyAgICAgIDwvZm9ybWFscGFyYT4KKyAgICA8L2V4YW1wbGU+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQteTE2LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXkxNi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY0ZjcyNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXkxNi54bWwKQEAgLTAsMCArMSw4MSBAQAorPHJlZmVudHJ5IGlkPSJWNEwyLVBJWC1GTVQtWTE2Ij4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+VjRMMl9QSVhfRk1UX1kxNiAoJ1kxNiAnKTwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWTE2PC9jb25zdGFudD48L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+R3JleS1zY2FsZSBpbWFnZTwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPlRoaXMgaXMgYSBncmV5LXNjYWxlIGltYWdlIHdpdGggYSBkZXB0aCBvZiAxNiBiaXRzIHBlcgorcGl4ZWwuIFRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlIGlzIHN0b3JlZCBhdCBsb3dlciBtZW1vcnkgYWRkcmVzc2VzCisobGl0dGxlLWVuZGlhbikuIE5vdGUgdGhlIGFjdHVhbCBzYW1wbGluZyBwcmVjaXNpb24gbWF5IGJlIGxvd2VyIHRoYW4KKzE2IGJpdHMsIGZvciBleGFtcGxlIDEwIGJpdHMgcGVyIHBpeGVsIHdpdGggdmFsdWVzIGluIHJhbmdlIDAgdG8KKzEwMjMuPC9wYXJhPgorCisgICAgPGV4YW1wbGU+CisgICAgICA8dGl0bGU+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZMTY8L2NvbnN0YW50PiA0ICZ0aW1lczsgNAorcGl4ZWwgaW1hZ2U8L3RpdGxlPgorCisgICAgICA8Zm9ybWFscGFyYT4KKwk8dGl0bGU+Qnl0ZSBPcmRlci48L3RpdGxlPgorCTxwYXJhPkVhY2ggY2VsbCBpcyBvbmUgYnl0ZS4KKwkgIDxpbmZvcm1hbHRhYmxlIGZyYW1lPSJub25lIj4KKwkgICAgPHRncm91cCBjb2xzPSI5IiBhbGlnbj0iY2VudGVyIj4KKwkgICAgICA8Y29sc3BlYyBhbGlnbj0ibGVmdCIgY29sd2lkdGg9IjIqIiAvPgorCSAgICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCTxyb3c+CisJCSAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzA6PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAwbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAwaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMWxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMWhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDJsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDJoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAzbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAzaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDs4OjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMGxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMGhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTFsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTFoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEybG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEyaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4xM2xvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4xM2hpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQk8L3Jvdz4KKwkJPHJvdz4KKwkJICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MTY6PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIwbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIwaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMWxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMWhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjJsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjJoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIzbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIzaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCTwvcm93PgorCQk8cm93PgorCQkgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsyNDo8L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzBsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzBoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMxbG93PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMxaGlnaDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMmxvdzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMmhpZ2g8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzNsb3c8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzNoaWdoPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJPC9yb3c+CisJICAgICAgPC90Ym9keT4KKwkgICAgPC90Z3JvdXA+CisJICA8L2luZm9ybWFsdGFibGU+CisJPC9wYXJhPgorICAgICAgPC9mb3JtYWxwYXJhPgorICAgIDwvZXhhbXBsZT4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC15NDFwLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXk0MXAueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ZGNiOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC15NDFwLnhtbApAQCAtMCwwICsxLDE0OSBAQAorICAgIDxyZWZlbnRyeSBpZD0iVjRMMi1QSVgtRk1ULVk0MVAiPgorICAgICAgPHJlZm1ldGE+CisJPHJlZmVudHJ5dGl0bGU+VjRMMl9QSVhfRk1UX1k0MVAgKCdZNDFQJyk8L3JlZmVudHJ5dGl0bGU+CisJJm1hbnZvbDsKKyAgICAgIDwvcmVmbWV0YT4KKyAgICAgIDxyZWZuYW1lZGl2PgorCTxyZWZuYW1lPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWTQxUDwvY29uc3RhbnQ+PC9yZWZuYW1lPgorCTxyZWZwdXJwb3NlPkZvcm1hdCB3aXRoICZmcmFjMTQ7IGhvcml6b250YWwgY2hyb21hCityZXNvbHV0aW9uLCBhbHNvIGtub3duIGFzIFlVViA0OjE6MTwvcmVmcHVycG9zZT4KKyAgICAgIDwvcmVmbmFtZWRpdj4KKyAgICAgIDxyZWZzZWN0MT4KKwk8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisJPHBhcmE+SW4gdGhpcyBmb3JtYXQgZWFjaCAxMiBieXRlcyBpcyBlaWdodCBwaXhlbHMuIEluIHRoZQordHdlbHZlIGJ5dGVzIGFyZSB0d28gQ2JDciBwYWlycyBhbmQgZWlnaHQgWSdzLiBUaGUgZmlyc3QgQ2JDciBwYWlyCitnb2VzIHdpdGggdGhlIGZpcnN0IGZvdXIgWSdzLCBhbmQgdGhlIHNlY29uZCBDYkNyIHBhaXIgZ29lcyB3aXRoIHRoZQorb3RoZXIgZm91ciBZJ3MuIFRoZSBDYiBhbmQgQ3IgY29tcG9uZW50cyBoYXZlIG9uZSBmb3VydGggdGhlCitob3Jpem9udGFsIHJlc29sdXRpb24gb2YgdGhlIFkgY29tcG9uZW50LjwvcGFyYT4KKworCTxwYXJhPkRvIG5vdCBjb25mdXNlIHRoaXMgZm9ybWF0IHdpdGggPGxpbmsKK2xpbmtlbmQ9IlY0TDItUElYLUZNVC1ZVVY0MTFQIj48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1lVVjQxMVA8L2NvbnN0YW50PjwvbGluaz4uCitZNDFQIGlzIGRlcml2ZWQgZnJvbSAiWVVWIDQ6MToxIDxlbXBoYXNpcz5wYWNrZWQ8L2VtcGhhc2lzPiIsIHdoaWxlCitZVVY0MTFQIHN0YW5kcyBmb3IgIllVViA0OjE6MSA8ZW1waGFzaXM+cGxhbmFyPC9lbXBoYXNpcz4iLjwvcGFyYT4KKworCTxleGFtcGxlPgorCSAgPHRpdGxlPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWTQxUDwvY29uc3RhbnQ+IDggJnRpbWVzOyA0CitwaXhlbCBpbWFnZTwvdGl0bGU+CisKKwkgIDxmb3JtYWxwYXJhPgorCSAgICA8dGl0bGU+Qnl0ZSBPcmRlcjwvdGl0bGU+CisJICAgIDxwYXJhPkVhY2ggY2VsbCBpcyBvbmUgYnl0ZS4KKwkJPGluZm9ybWFsdGFibGUgZnJhbWU9Im5vbmUiPgorCQk8dGdyb3VwIGNvbHM9IjEzIiBhbGlnbj0iY2VudGVyIj4KKwkJICA8Y29sc3BlYyBhbGlnbj0ibGVmdCIgY29sd2lkdGg9IjIqIiAvPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjAxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjA1PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wNjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDc8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MTI6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjE0PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xNTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTY8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjE3PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzI0OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4yMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjIxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yNDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjI2PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yNzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDszNjo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjMwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MzA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4zMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjMxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjM1PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zNjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+Mzc8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC90Z3JvdXA+CisJICAgICAgPC9pbmZvcm1hbHRhYmxlPjwvcGFyYT4KKwkgIDwvZm9ybWFscGFyYT4KKworCSAgPGZvcm1hbHBhcmE+CisJICAgIDx0aXRsZT5Db2xvciBTYW1wbGUgTG9jYXRpb24uPC90aXRsZT4KKwkgICAgPHBhcmE+CisJCTxpbmZvcm1hbHRhYmxlIGZyYW1lPSJub25lIj4KKwkJPHRncm91cCBjb2xzPSIxNSIgYWxpZ249ImNlbnRlciI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MDwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjE8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MjwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjM8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+NDwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjU8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+NjwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Pjc8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjE8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+QzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT4yPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+QzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvdGdyb3VwPgorCQk8L2luZm9ybWFsdGFibGU+CisJICAgICAgPC9wYXJhPgorCSAgPC9mb3JtYWxwYXJhPgorCTwvZXhhbXBsZT4KKyAgICAgIDwvcmVmc2VjdDE+CisgICAgPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXl1djQxMC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC15dXY0MTAueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4NjlkY2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC15dXY0MTAueG1sCkBAIC0wLDAgKzEsMTMzIEBACisgICAgPHJlZmVudHJ5PgorICAgICAgPHJlZm1ldGE+CisJPHJlZmVudHJ5dGl0bGU+VjRMMl9QSVhfRk1UX1lWVTQxMCAoJ1lWVTknKSwgVjRMMl9QSVhfRk1UX1lVVjQxMCAoJ1lVVjknKTwvcmVmZW50cnl0aXRsZT4KKwkmbWFudm9sOworICAgICAgPC9yZWZtZXRhPgorICAgICAgPHJlZm5hbWVkaXY+CisJPHJlZm5hbWUgaWQ9IlY0TDItUElYLUZNVC1ZVlU0MTAiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWVZVNDEwPC9jb25zdGFudD48L3JlZm5hbWU+CisJPHJlZm5hbWUgaWQ9IlY0TDItUElYLUZNVC1ZVVY0MTAiPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWVVWNDEwPC9jb25zdGFudD48L3JlZm5hbWU+CisJPHJlZnB1cnBvc2U+UGxhbmFyIGZvcm1hdHMgd2l0aCAmZnJhYzE0OyBob3Jpem9udGFsIGFuZAordmVydGljYWwgY2hyb21hIHJlc29sdXRpb24sIGFsc28ga25vd24gYXMgWVVWIDQ6MTowPC9yZWZwdXJwb3NlPgorICAgICAgPC9yZWZuYW1lZGl2PgorICAgICAgPHJlZnNlY3QxPgorCTx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKwk8cGFyYT5UaGVzZSBhcmUgcGxhbmFyIGZvcm1hdHMsIGFzIG9wcG9zZWQgdG8gYSBwYWNrZWQgZm9ybWF0LgorVGhlIHRocmVlIGNvbXBvbmVudHMgYXJlIHNlcGFyYXRlZCBpbnRvIHRocmVlIHN1Yi1pbWFnZXMgb3IgcGxhbmVzLgorVGhlIFkgcGxhbmUgaXMgZmlyc3QuIFRoZSBZIHBsYW5lIGhhcyBvbmUgYnl0ZSBwZXIgcGl4ZWwuIEZvcgorPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZVlU0MTA8L2NvbnN0YW50PiwgdGhlIENyIHBsYW5lIGltbWVkaWF0ZWx5Citmb2xsb3dzIHRoZSBZIHBsYW5lIGluIG1lbW9yeS4gVGhlIENyIHBsYW5lIGlzICZmcmFjMTQ7IHRoZSB3aWR0aCBhbmQKKyZmcmFjMTQ7IHRoZSBoZWlnaHQgb2YgdGhlIFkgcGxhbmUgKGFuZCBvZiB0aGUgaW1hZ2UpLiBFYWNoIENyIGJlbG9uZ3MKK3RvIDE2IHBpeGVscywgYSBmb3VyLWJ5LWZvdXIgc3F1YXJlIG9mIHRoZSBpbWFnZS4gRm9sbG93aW5nIHRoZSBDcgorcGxhbmUgaXMgdGhlIENiIHBsYW5lLCBqdXN0IGxpa2UgdGhlIENyIHBsYW5lLgorPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZVVY0MTA8L2NvbnN0YW50PiBpcyB0aGUgc2FtZSwgZXhjZXB0IHRoZSBDYgorcGxhbmUgY29tZXMgZmlyc3QsIHRoZW4gdGhlIENyIHBsYW5lLjwvcGFyYT4KKworCTxwYXJhPklmIHRoZSBZIHBsYW5lIGhhcyBwYWQgYnl0ZXMgYWZ0ZXIgZWFjaCByb3csIHRoZW4gdGhlIENyCithbmQgQ2IgcGxhbmVzIGhhdmUgJmZyYWMxNDsgYXMgbWFueSBwYWQgYnl0ZXMgYWZ0ZXIgdGhlaXIgcm93cy4gSW4KK290aGVyIHdvcmRzLCBmb3VyIEN4IHJvd3MgKGluY2x1ZGluZyBwYWRkaW5nKSBhcmUgZXhhY3RseSBhcyBsb25nIGFzCitvbmUgWSByb3cgKGluY2x1ZGluZyBwYWRkaW5nKS48L3BhcmE+CisKKwk8ZXhhbXBsZT4KKwkgIDx0aXRsZT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1lWVTQxMDwvY29uc3RhbnQ+IDQgJnRpbWVzOyA0CitwaXhlbCBpbWFnZTwvdGl0bGU+CisKKwkgIDxmb3JtYWxwYXJhPgorCSAgICA8dGl0bGU+Qnl0ZSBPcmRlci48L3RpdGxlPgorCSAgICA8cGFyYT5FYWNoIGNlbGwgaXMgb25lIGJ5dGUuCisJCTxpbmZvcm1hbHRhYmxlIGZyYW1lPSJub25lIj4KKwkJPHRncm91cCBjb2xzPSI1IiBhbGlnbj0iY2VudGVyIj4KKwkJICA8Y29sc3BlYyBhbGlnbj0ibGVmdCIgY29sd2lkdGg9IjIqIiAvPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzQ6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDs4OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MTI6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsxNjo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzE3OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC90Z3JvdXA+CisJCTwvaW5mb3JtYWx0YWJsZT4KKwkgICAgICA8L3BhcmE+CisJICA8L2Zvcm1hbHBhcmE+CisKKwkgIDxmb3JtYWxwYXJhPgorCSAgICA8dGl0bGU+Q29sb3IgU2FtcGxlIExvY2F0aW9uLjwvdGl0bGU+CisJICAgIDxwYXJhPgorCQk8aW5mb3JtYWx0YWJsZSBmcmFtZT0ibm9uZSI+CisJCTx0Z3JvdXAgY29scz0iNyIgYWxpZ249ImNlbnRlciI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MDwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjE8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MjwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjM8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MTwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+QzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L3Rncm91cD4KKwkJPC9pbmZvcm1hbHRhYmxlPgorCSAgICAgIDwvcGFyYT4KKwkgIDwvZm9ybWFscGFyYT4KKwk8L2V4YW1wbGU+CisgICAgICA8L3JlZnNlY3QxPgorICAgIDwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC15dXY0MTFwLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXl1djQxMXAueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4NmRjNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC15dXY0MTFwLnhtbApAQCAtMCwwICsxLDE0NyBAQAorICAgIDxyZWZlbnRyeSBpZD0iVjRMMi1QSVgtRk1ULVlVVjQxMVAiPgorICAgICAgPHJlZm1ldGE+CisJPHJlZmVudHJ5dGl0bGU+VjRMMl9QSVhfRk1UX1lVVjQxMVAgKCc0MTFQJyk8L3JlZmVudHJ5dGl0bGU+CisJJm1hbnZvbDsKKyAgICAgIDwvcmVmbWV0YT4KKyAgICAgIDxyZWZuYW1lZGl2PgorCTxyZWZuYW1lPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWVVWNDExUDwvY29uc3RhbnQ+PC9yZWZuYW1lPgorCTxyZWZwdXJwb3NlPkZvcm1hdCB3aXRoICZmcmFjMTQ7IGhvcml6b250YWwgY2hyb21hIHJlc29sdXRpb24sCithbHNvIGtub3duIGFzIFlVViA0OjE6MS4gUGxhbmFyIGxheW91dCBhcyBvcHBvc2VkIHRvCis8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1k0MVA8L2NvbnN0YW50PjwvcmVmcHVycG9zZT4KKyAgICAgIDwvcmVmbmFtZWRpdj4KKyAgICAgIDxyZWZzZWN0MT4KKwk8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisJPHBhcmE+VGhpcyBmb3JtYXQgaXMgbm90IGNvbW1vbmx5IHVzZWQuIFRoaXMgaXMgYSBwbGFuYXIKK2Zvcm1hdCBzaW1pbGFyIHRvIHRoZSA0OjI6MiBwbGFuYXIgZm9ybWF0IGV4Y2VwdCB3aXRoIGhhbGYgYXMgbWFueQorY2hyb21hLiBUaGUgdGhyZWUgY29tcG9uZW50cyBhcmUgc2VwYXJhdGVkIGludG8gdGhyZWUgc3ViLWltYWdlcyBvcgorcGxhbmVzLiBUaGUgWSBwbGFuZSBpcyBmaXJzdC4gVGhlIFkgcGxhbmUgaGFzIG9uZSBieXRlIHBlciBwaXhlbC4gVGhlCitDYiBwbGFuZSBpbW1lZGlhdGVseSBmb2xsb3dzIHRoZSBZIHBsYW5lIGluIG1lbW9yeS4gVGhlIENiIHBsYW5lIGlzCismZnJhYzE0OyB0aGUgd2lkdGggb2YgdGhlIFkgcGxhbmUgKGFuZCBvZiB0aGUgaW1hZ2UpLiBFYWNoIENiIGJlbG9uZ3MKK3RvIDQgcGl4ZWxzIGFsbCBvbiB0aGUgc2FtZSByb3cuIEZvciBleGFtcGxlLAorQ2I8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD4gYmVsb25ncyB0byBZJzxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD4sCitZJzxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD4sIFknPHN1YnNjcmlwdD4wMjwvc3Vic2NyaXB0PiBhbmQKK1knPHN1YnNjcmlwdD4wMzwvc3Vic2NyaXB0Pi4gRm9sbG93aW5nIHRoZSBDYiBwbGFuZSBpcyB0aGUgQ3IgcGxhbmUsCitqdXN0IGxpa2UgdGhlIENiIHBsYW5lLjwvcGFyYT4KKworCTxwYXJhPklmIHRoZSBZIHBsYW5lIGhhcyBwYWQgYnl0ZXMgYWZ0ZXIgZWFjaCByb3csIHRoZW4gdGhlIENyCithbmQgQ2IgcGxhbmVzIGhhdmUgJmZyYWMxNDsgYXMgbWFueSBwYWQgYnl0ZXMgYWZ0ZXIgdGhlaXIgcm93cy4gSW4KK290aGVyIHdvcmRzLCBmb3VyIEMgeCByb3dzIChpbmNsdWRpbmcgcGFkZGluZykgaXMgZXhhY3RseSBhcyBsb25nIGFzCitvbmUgWSByb3cgKGluY2x1ZGluZyBwYWRkaW5nKS48L3BhcmE+CisKKwk8ZXhhbXBsZT4KKwkgIDx0aXRsZT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1lVVjQxMVA8L2NvbnN0YW50PiA0ICZ0aW1lczsgNAorcGl4ZWwgaW1hZ2U8L3RpdGxlPgorCisJICA8Zm9ybWFscGFyYT4KKwkgICAgPHRpdGxlPkJ5dGUgT3JkZXIuPC90aXRsZT4KKwkgICAgPHBhcmE+RWFjaCBjZWxsIGlzIG9uZSBieXRlLgorCQk8aW5mb3JtYWx0YWJsZSBmcmFtZT0ibm9uZSI+CisJCTx0Z3JvdXAgY29scz0iNSIgYWxpZ249ImNlbnRlciI+CisJCSAgPGNvbHNwZWMgYWxpZ249ImxlZnQiIGNvbHdpZHRoPSIyKiIgLz4KKwkJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzA6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDs0OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7ODo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzEyOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MTY6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4wMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsxNzo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzE4OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MTk6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4zMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsyMDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzIxOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MjI6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4yMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsyMzo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjMwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvdGdyb3VwPgorCQk8L2luZm9ybWFsdGFibGU+CisJICAgICAgPC9wYXJhPgorCSAgPC9mb3JtYWxwYXJhPgorCisJICA8Zm9ybWFscGFyYT4KKwkgICAgPHRpdGxlPkNvbG9yIFNhbXBsZSBMb2NhdGlvbi48L3RpdGxlPgorCSAgICA8cGFyYT4KKwkJPGluZm9ybWFsdGFibGUgZnJhbWU9Im5vbmUiPgorCQk8dGdyb3VwIGNvbHM9IjciIGFsaWduPSJjZW50ZXIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjA8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT4xPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjI8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT4zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjE8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjI8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjM8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvdGdyb3VwPgorCQk8L2luZm9ybWFsdGFibGU+CisJICAgICAgPC9wYXJhPgorCSAgPC9mb3JtYWxwYXJhPgorCTwvZXhhbXBsZT4KKyAgICAgIDwvcmVmc2VjdDE+CisgICAgPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXl1djQyMC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC15dXY0MjAueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4NjQ5ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC15dXY0MjAueG1sCkBAIC0wLDAgKzEsMTQ5IEBACisgICAgPHJlZmVudHJ5PgorICAgICAgPHJlZm1ldGE+CisJPHJlZmVudHJ5dGl0bGU+VjRMMl9QSVhfRk1UX1lWVTQyMCAoJ1lWMTInKSwgVjRMMl9QSVhfRk1UX1lVVjQyMCAoJ1lVMTInKTwvcmVmZW50cnl0aXRsZT4KKwkmbWFudm9sOworICAgICA8L3JlZm1ldGE+CisgICAgICA8cmVmbmFtZWRpdj4KKwk8cmVmbmFtZSBpZD0iVjRMMi1QSVgtRk1ULVlWVTQyMCI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZVlU0MjA8L2NvbnN0YW50PjwvcmVmbmFtZT4KKwk8cmVmbmFtZSBpZD0iVjRMMi1QSVgtRk1ULVlVVjQyMCI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZVVY0MjA8L2NvbnN0YW50PjwvcmVmbmFtZT4KKwk8cmVmcHVycG9zZT5QbGFuYXIgZm9ybWF0cyB3aXRoICZmcmFjMTI7IGhvcml6b250YWwgYW5kCit2ZXJ0aWNhbCBjaHJvbWEgcmVzb2x1dGlvbiwgYWxzbyBrbm93biBhcyBZVVYgNDoyOjA8L3JlZnB1cnBvc2U+CisgICAgICA8L3JlZm5hbWVkaXY+CisgICAgICA8cmVmc2VjdDE+CisJPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworCTxwYXJhPlRoZXNlIGFyZSBwbGFuYXIgZm9ybWF0cywgYXMgb3Bwb3NlZCB0byBhIHBhY2tlZCBmb3JtYXQuCitUaGUgdGhyZWUgY29tcG9uZW50cyBhcmUgc2VwYXJhdGVkIGludG8gdGhyZWUgc3ViLSBpbWFnZXMgb3IgcGxhbmVzLgorVGhlIFkgcGxhbmUgaXMgZmlyc3QuIFRoZSBZIHBsYW5lIGhhcyBvbmUgYnl0ZSBwZXIgcGl4ZWwuIEZvcgorPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZVlU0MjA8L2NvbnN0YW50PiwgdGhlIENyIHBsYW5lIGltbWVkaWF0ZWx5Citmb2xsb3dzIHRoZSBZIHBsYW5lIGluIG1lbW9yeS4gVGhlIENyIHBsYW5lIGlzIGhhbGYgdGhlIHdpZHRoIGFuZCBoYWxmCit0aGUgaGVpZ2h0IG9mIHRoZSBZIHBsYW5lIChhbmQgb2YgdGhlIGltYWdlKS4gRWFjaCBDciBiZWxvbmdzIHRvIGZvdXIKK3BpeGVscywgYSB0d28tYnktdHdvIHNxdWFyZSBvZiB0aGUgaW1hZ2UuIEZvciBleGFtcGxlLAorQ3I8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD4gYmVsb25ncyB0byBZJzxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD4sCitZJzxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD4sIFknPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PiwgYW5kCitZJzxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD4uIEZvbGxvd2luZyB0aGUgQ3IgcGxhbmUgaXMgdGhlIENiIHBsYW5lLAoranVzdCBsaWtlIHRoZSBDciBwbGFuZS4gPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZVVY0MjA8L2NvbnN0YW50PiBpcwordGhlIHNhbWUgZXhjZXB0IHRoZSBDYiBwbGFuZSBjb21lcyBmaXJzdCwgdGhlbiB0aGUgQ3IgcGxhbmUuPC9wYXJhPgorCisJPHBhcmE+SWYgdGhlIFkgcGxhbmUgaGFzIHBhZCBieXRlcyBhZnRlciBlYWNoIHJvdywgdGhlbiB0aGUgQ3IKK2FuZCBDYiBwbGFuZXMgaGF2ZSBoYWxmIGFzIG1hbnkgcGFkIGJ5dGVzIGFmdGVyIHRoZWlyIHJvd3MuIEluIG90aGVyCit3b3JkcywgdHdvIEN4IHJvd3MgKGluY2x1ZGluZyBwYWRkaW5nKSBpcyBleGFjdGx5IGFzIGxvbmcgYXMgb25lIFkgcm93CisoaW5jbHVkaW5nIHBhZGRpbmcpLjwvcGFyYT4KKworCTxleGFtcGxlPgorCSAgPHRpdGxlPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWVZVNDIwPC9jb25zdGFudD4gNCAmdGltZXM7IDQKK3BpeGVsIGltYWdlPC90aXRsZT4KKworCSAgPGZvcm1hbHBhcmE+CisJICAgIDx0aXRsZT5CeXRlIE9yZGVyLjwvdGl0bGU+CisJICAgIDxwYXJhPkVhY2ggY2VsbCBpcyBvbmUgYnl0ZS4KKwkJPGluZm9ybWFsdGFibGUgZnJhbWU9Im5vbmUiPgorCQk8dGdyb3VwIGNvbHM9IjUiIGFsaWduPSJjZW50ZXIiPgorCQkgIDxjb2xzcGVjIGFsaWduPSJsZWZ0IiBjb2x3aWR0aD0iMioiIC8+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDswOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7NDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzg6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsxMjo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzE2OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjAxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzE4OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzIwOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjAxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzIyOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvdGdyb3VwPgorCQk8L2luZm9ybWFsdGFibGU+CisJICAgICAgPC9wYXJhPgorCSAgPC9mb3JtYWxwYXJhPgorCisJICA8Zm9ybWFscGFyYT4KKwkgICAgPHRpdGxlPkNvbG9yIFNhbXBsZSBMb2NhdGlvbi48L3RpdGxlPgorCSAgICA8cGFyYT4KKwkJPGluZm9ybWFsdGFibGUgZnJhbWU9Im5vbmUiPgorCQk8dGdyb3VwIGNvbHM9IjciIGFsaWduPSJjZW50ZXIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjA8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT4xPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjI8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT4zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT4xPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT4yPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L3Rncm91cD4KKwkJPC9pbmZvcm1hbHRhYmxlPgorCSAgICAgIDwvcGFyYT4KKwkgIDwvZm9ybWFscGFyYT4KKwk8L2V4YW1wbGU+CisgICAgICA8L3JlZnNlY3QxPgorICAgIDwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC15dXY0MjBtLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXl1djQyMG0ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3ODFjYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC15dXY0MjBtLnhtbApAQCAtMCwwICsxLDE1NCBAQAorICAgIDxyZWZlbnRyeSBpZD0iVjRMMi1QSVgtRk1ULVlVVjQyME0iPgorICAgICAgPHJlZm1ldGE+CisJPHJlZmVudHJ5dGl0bGU+VjRMMl9QSVhfRk1UX1lVVjQyME0gKCdZTTEyJyk8L3JlZmVudHJ5dGl0bGU+CisJJm1hbnZvbDsKKyAgICAgIDwvcmVmbWV0YT4KKyAgICAgIDxyZWZuYW1lZGl2PgorCTxyZWZuYW1lPiA8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1lVVjQyME08L2NvbnN0YW50PjwvcmVmbmFtZT4KKwk8cmVmcHVycG9zZT5WYXJpYXRpb24gb2YgPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZVVY0MjA8L2NvbnN0YW50PgorCSAgd2l0aCBwbGFuZXMgbm9uIGNvbnRpZ3VvdXMgaW4gbWVtb3J5LiA8L3JlZnB1cnBvc2U+CisgICAgICA8L3JlZm5hbWVkaXY+CisKKyAgICAgIDxyZWZzZWN0MT4KKwk8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisJPHBhcmE+VGhpcyBpcyBhIG11bHRpLXBsYW5hciBmb3JtYXQsIGFzIG9wcG9zZWQgdG8gYSBwYWNrZWQgZm9ybWF0LgorVGhlIHRocmVlIGNvbXBvbmVudHMgYXJlIHNlcGFyYXRlZCBpbnRvIHRocmVlIHN1Yi0gaW1hZ2VzIG9yIHBsYW5lcy4KKworVGhlIFkgcGxhbmUgaXMgZmlyc3QuIFRoZSBZIHBsYW5lIGhhcyBvbmUgYnl0ZSBwZXIgcGl4ZWwuIFRoZSBDYiBkYXRhCitjb25zdGl0dXRlcyB0aGUgc2Vjb25kIHBsYW5lIHdoaWNoIGlzIGhhbGYgdGhlIHdpZHRoIGFuZCBoYWxmCit0aGUgaGVpZ2h0IG9mIHRoZSBZIHBsYW5lIChhbmQgb2YgdGhlIGltYWdlKS4gRWFjaCBDYiBiZWxvbmdzIHRvIGZvdXIKK3BpeGVscywgYSB0d28tYnktdHdvIHNxdWFyZSBvZiB0aGUgaW1hZ2UuIEZvciBleGFtcGxlLAorQ2I8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD4gYmVsb25ncyB0byBZJzxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD4sCitZJzxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD4sIFknPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PiwgYW5kCitZJzxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD4uIFRoZSBDciBkYXRhLCBqdXN0IGxpa2UgdGhlIENiIHBsYW5lLCBpcworaW4gdGhlIHRoaXJkIHBsYW5lLiA8L3BhcmE+CisKKwk8cGFyYT5JZiB0aGUgWSBwbGFuZSBoYXMgcGFkIGJ5dGVzIGFmdGVyIGVhY2ggcm93LCB0aGVuIHRoZSBDYgorYW5kIENyIHBsYW5lcyBoYXZlIGhhbGYgYXMgbWFueSBwYWQgYnl0ZXMgYWZ0ZXIgdGhlaXIgcm93cy4gSW4gb3RoZXIKK3dvcmRzLCB0d28gQ3ggcm93cyAoaW5jbHVkaW5nIHBhZGRpbmcpIGlzIGV4YWN0bHkgYXMgbG9uZyBhcyBvbmUgWSByb3cKKyhpbmNsdWRpbmcgcGFkZGluZykuPC9wYXJhPgorCisJPHBhcmE+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZVVY0MjBNPC9jb25zdGFudD4gaXMgaW50ZW5kZWQgdG8gYmUKK3VzZWQgb25seSBpbiBkcml2ZXJzIGFuZCBhcHBsaWNhdGlvbnMgdGhhdCBzdXBwb3J0IHRoZSBtdWx0aS1wbGFuYXIgQVBJLAorZGVzY3JpYmVkIGluIDx4cmVmIGxpbmtlbmQ9InBsYW5hci1hcGlzIi8+LiA8L3BhcmE+CisKKwk8ZXhhbXBsZT4KKwkgIDx0aXRsZT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1lVVjQyME08L2NvbnN0YW50PiA0ICZ0aW1lczsgNAorcGl4ZWwgaW1hZ2U8L3RpdGxlPgorCisJICA8Zm9ybWFscGFyYT4KKwkgICAgPHRpdGxlPkJ5dGUgT3JkZXIuPC90aXRsZT4KKwkgICAgPHBhcmE+RWFjaCBjZWxsIGlzIG9uZSBieXRlLgorCQk8aW5mb3JtYWx0YWJsZSBmcmFtZT0ibm9uZSI+CisJCTx0Z3JvdXAgY29scz0iNSIgYWxpZ249ImNlbnRlciI+CisJCSAgPGNvbHNwZWMgYWxpZ249ImxlZnQiIGNvbHdpZHRoPSIyKiIgLz4KKwkJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0MCZuYnNwOysmbmJzcDswOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQwJm5ic3A7KyZuYnNwOzQ6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydDAmbmJzcDsrJm5ic3A7ODo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0MCZuYnNwOysmbmJzcDsxMjo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydDEmbmJzcDsrJm5ic3A7MDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydDEmbmJzcDsrJm5ic3A7Mjo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+PGVudHJ5PjwvZW50cnk+PC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQyJm5ic3A7KyZuYnNwOzA6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4wMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQyJm5ic3A7KyZuYnNwOzI6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC90Z3JvdXA+CisJCTwvaW5mb3JtYWx0YWJsZT4KKwkgICAgICA8L3BhcmE+CisJICA8L2Zvcm1hbHBhcmE+CisKKwkgIDxmb3JtYWxwYXJhPgorCSAgICA8dGl0bGU+Q29sb3IgU2FtcGxlIExvY2F0aW9uLjwvdGl0bGU+CisJICAgIDxwYXJhPgorCQk8aW5mb3JtYWx0YWJsZSBmcmFtZT0ibm9uZSI+CisJCTx0Z3JvdXAgY29scz0iNyIgYWxpZ249ImNlbnRlciI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MDwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjE8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MjwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjM8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjE8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjI8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT4zPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvdGdyb3VwPgorCQk8L2luZm9ybWFsdGFibGU+CisJICAgICAgPC9wYXJhPgorCSAgPC9mb3JtYWxwYXJhPgorCTwvZXhhbXBsZT4KKyAgICAgIDwvcmVmc2VjdDE+CisgICAgPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXl1djQyMnAueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQteXV2NDIycC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNlNjQ2MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXl1djQyMnAueG1sCkBAIC0wLDAgKzEsMTUzIEBACisgICAgPHJlZmVudHJ5IGlkPSJWNEwyLVBJWC1GTVQtWVVWNDIyUCI+CisgICAgICA8cmVmbWV0YT4KKwk8cmVmZW50cnl0aXRsZT5WNEwyX1BJWF9GTVRfWVVWNDIyUCAoJzQyMlAnKTwvcmVmZW50cnl0aXRsZT4KKwkmbWFudm9sOworICAgICAgPC9yZWZtZXRhPgorICAgICAgPHJlZm5hbWVkaXY+CisJPHJlZm5hbWU+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZVVY0MjJQPC9jb25zdGFudD48L3JlZm5hbWU+CisJPHJlZnB1cnBvc2U+Rm9ybWF0IHdpdGggJmZyYWMxMjsgaG9yaXpvbnRhbCBjaHJvbWEgcmVzb2x1dGlvbiwKK2Fsc28ga25vd24gYXMgWVVWIDQ6MjoyLiBQbGFuYXIgbGF5b3V0IGFzIG9wcG9zZWQgdG8KKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfWVVZVjwvY29uc3RhbnQ+PC9yZWZwdXJwb3NlPgorICAgICAgPC9yZWZuYW1lZGl2PgorICAgICAgPHJlZnNlY3QxPgorCTx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKwk8cGFyYT5UaGlzIGZvcm1hdCBpcyBub3QgY29tbW9ubHkgdXNlZC4gVGhpcyBpcyBhIHBsYW5hcgordmVyc2lvbiBvZiB0aGUgWVVZViBmb3JtYXQuIFRoZSB0aHJlZSBjb21wb25lbnRzIGFyZSBzZXBhcmF0ZWQgaW50bwordGhyZWUgc3ViLWltYWdlcyBvciBwbGFuZXMuIFRoZSBZIHBsYW5lIGlzIGZpcnN0LiBUaGUgWSBwbGFuZSBoYXMgb25lCitieXRlIHBlciBwaXhlbC4gVGhlIENiIHBsYW5lIGltbWVkaWF0ZWx5IGZvbGxvd3MgdGhlIFkgcGxhbmUgaW4KK21lbW9yeS4gVGhlIENiIHBsYW5lIGlzIGhhbGYgdGhlIHdpZHRoIG9mIHRoZSBZIHBsYW5lIChhbmQgb2YgdGhlCitpbWFnZSkuIEVhY2ggQ2IgYmVsb25ncyB0byB0d28gcGl4ZWxzLiBGb3IgZXhhbXBsZSwKK0NiPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+IGJlbG9uZ3MgdG8gWSc8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+LAorWSc8c3Vic2NyaXB0PjAxPC9zdWJzY3JpcHQ+LiBGb2xsb3dpbmcgdGhlIENiIHBsYW5lIGlzIHRoZSBDciBwbGFuZSwKK2p1c3QgbGlrZSB0aGUgQ2IgcGxhbmUuPC9wYXJhPgorCisJPHBhcmE+SWYgdGhlIFkgcGxhbmUgaGFzIHBhZCBieXRlcyBhZnRlciBlYWNoIHJvdywgdGhlbiB0aGUgQ3IKK2FuZCBDYiBwbGFuZXMgaGF2ZSBoYWxmIGFzIG1hbnkgcGFkIGJ5dGVzIGFmdGVyIHRoZWlyIHJvd3MuIEluIG90aGVyCit3b3JkcywgdHdvIEN4IHJvd3MgKGluY2x1ZGluZyBwYWRkaW5nKSBpcyBleGFjdGx5IGFzIGxvbmcgYXMgb25lIFkgcm93CisoaW5jbHVkaW5nIHBhZGRpbmcpLjwvcGFyYT4KKworCTxleGFtcGxlPgorCSAgPHRpdGxlPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWVVWNDIyUDwvY29uc3RhbnQ+IDQgJnRpbWVzOyA0CitwaXhlbCBpbWFnZTwvdGl0bGU+CisKKwkgIDxmb3JtYWxwYXJhPgorCSAgICA8dGl0bGU+Qnl0ZSBPcmRlci48L3RpdGxlPgorCSAgICA8cGFyYT5FYWNoIGNlbGwgaXMgb25lIGJ5dGUuCisJCTxpbmZvcm1hbHRhYmxlIGZyYW1lPSJub25lIj4KKwkJPHRncm91cCBjb2xzPSI1IiBhbGlnbj0iY2VudGVyIj4KKwkJICA8Y29sc3BlYyBhbGlnbj0ibGVmdCIgY29sd2lkdGg9IjIqIiAvPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzQ6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDs4OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MTI6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsxNjo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsxODo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsyMDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjIwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4yMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsyMjo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjMwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4zMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsyNDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsyNjo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDsyODo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjIwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4yMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDszMDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjMwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4zMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L3Rncm91cD4KKwkJPC9pbmZvcm1hbHRhYmxlPgorCSAgICAgIDwvcGFyYT4KKwkgIDwvZm9ybWFscGFyYT4KKworCSAgPGZvcm1hbHBhcmE+CisJICAgIDx0aXRsZT5Db2xvciBTYW1wbGUgTG9jYXRpb24uPC90aXRsZT4KKwkgICAgPHBhcmE+CisJCTxpbmZvcm1hbHRhYmxlIGZyYW1lPSJub25lIj4KKwkJPHRncm91cCBjb2xzPSI3IiBhbGlnbj0iY2VudGVyIj4KKwkJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT4wPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+MTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT4yPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+MzwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MTwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjI8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+WTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT4zPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC90Z3JvdXA+CisJCTwvaW5mb3JtYWx0YWJsZT4KKwkgICAgICA8L3BhcmE+CisJICA8L2Zvcm1hbHBhcmE+CisJPC9leGFtcGxlPgorICAgICAgPC9yZWZzZWN0MT4KKyAgICA8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQteXV5di54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC15dXl2LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODM4NDA5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQteXV5di54bWwKQEAgLTAsMCArMSwxMjAgQEAKKyAgICA8cmVmZW50cnkgaWQ9IlY0TDItUElYLUZNVC1ZVVlWIj4KKyAgICAgIDxyZWZtZXRhPgorCTxyZWZlbnRyeXRpdGxlPlY0TDJfUElYX0ZNVF9ZVVlWICgnWVVZVicpPC9yZWZlbnRyeXRpdGxlPgorCSZtYW52b2w7CisgICAgICA8L3JlZm1ldGE+CisgICAgICA8cmVmbmFtZWRpdj4KKwk8cmVmbmFtZT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1lVWVY8L2NvbnN0YW50PjwvcmVmbmFtZT4KKwk8cmVmcHVycG9zZT5QYWNrZWQgZm9ybWF0IHdpdGggJmZyYWMxMjsgaG9yaXpvbnRhbCBjaHJvbWEKK3Jlc29sdXRpb24sIGFsc28ga25vd24gYXMgWVVWIDQ6MjoyPC9yZWZwdXJwb3NlPgorICAgICAgPC9yZWZuYW1lZGl2PgorICAgICAgPHJlZnNlY3QxPgorCTx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKwk8cGFyYT5JbiB0aGlzIGZvcm1hdCBlYWNoIGZvdXIgYnl0ZXMgaXMgdHdvIHBpeGVscy4gRWFjaCBmb3VyCitieXRlcyBpcyB0d28gWSdzLCBhIENiIGFuZCBhIENyLiBFYWNoIFkgZ29lcyB0byBvbmUgb2YgdGhlIHBpeGVscywgYW5kCit0aGUgQ2IgYW5kIENyIGJlbG9uZyB0byBib3RoIHBpeGVscy4gQXMgeW91IGNhbiBzZWUsIHRoZSBDciBhbmQgQ2IKK2NvbXBvbmVudHMgaGF2ZSBoYWxmIHRoZSBob3Jpem9udGFsIHJlc29sdXRpb24gb2YgdGhlIFkgY29tcG9uZW50LgorPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZVVlWIDwvY29uc3RhbnQ+IGlzIGtub3duIGluIHRoZSBXaW5kb3dzCitlbnZpcm9ubWVudCBhcyBZVVkyLjwvcGFyYT4KKworCTxleGFtcGxlPgorCSAgPHRpdGxlPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWVVZVjwvY29uc3RhbnQ+IDQgJnRpbWVzOyA0CitwaXhlbCBpbWFnZTwvdGl0bGU+CisKKwkgIDxmb3JtYWxwYXJhPgorCSAgICA8dGl0bGU+Qnl0ZSBPcmRlci48L3RpdGxlPgorCSAgICA8cGFyYT5FYWNoIGNlbGwgaXMgb25lIGJ5dGUuCisJCTxpbmZvcm1hbHRhYmxlIGZyYW1lPSJub25lIj4KKwkJPHRncm91cCBjb2xzPSI5IiBhbGlnbj0iY2VudGVyIj4KKwkJICA8Y29sc3BlYyBhbGlnbj0ibGVmdCIgY29sd2lkdGg9IjIqIiAvPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4wMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDs4OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzE2OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjIwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4yMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjIxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzI0OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjMwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MzA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4zMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjMxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvdGdyb3VwPgorCQk8L2luZm9ybWFsdGFibGU+CisJICAgICAgPC9wYXJhPgorCSAgPC9mb3JtYWxwYXJhPgorCisJICA8Zm9ybWFscGFyYT4KKwkgICAgPHRpdGxlPkNvbG9yIFNhbXBsZSBMb2NhdGlvbi48L3RpdGxlPgorCSAgICA8cGFyYT4KKwkJPGluZm9ybWFsdGFibGUgZnJhbWU9Im5vbmUiPgorCQk8dGdyb3VwIGNvbHM9IjciIGFsaWduPSJjZW50ZXIiPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjA8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT4xPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjI8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT4zPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+WTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT4xPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjM8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+WTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L3Rncm91cD4KKwkJPC9pbmZvcm1hbHRhYmxlPgorCSAgICAgIDwvcGFyYT4KKwkgIDwvZm9ybWFscGFyYT4KKwk8L2V4YW1wbGU+CisgICAgICA8L3JlZnNlY3QxPgorICAgIDwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC15dnU0MjBtLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LXl2dTQyMG0ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMzA2NjcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC15dnU0MjBtLnhtbApAQCAtMCwwICsxLDE1NCBAQAorICAgIDxyZWZlbnRyeSBpZD0iVjRMMi1QSVgtRk1ULVlWVTQyME0iPgorICAgICAgPHJlZm1ldGE+CisJPHJlZmVudHJ5dGl0bGU+VjRMMl9QSVhfRk1UX1lWVTQyME0gKCdZTTIxJyk8L3JlZmVudHJ5dGl0bGU+CisJJm1hbnZvbDsKKyAgICAgIDwvcmVmbWV0YT4KKyAgICAgIDxyZWZuYW1lZGl2PgorCTxyZWZuYW1lPiA8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1lWVTQyME08L2NvbnN0YW50PjwvcmVmbmFtZT4KKwk8cmVmcHVycG9zZT5WYXJpYXRpb24gb2YgPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZVlU0MjA8L2NvbnN0YW50PgorCSAgd2l0aCBwbGFuZXMgbm9uIGNvbnRpZ3VvdXMgaW4gbWVtb3J5LiA8L3JlZnB1cnBvc2U+CisgICAgICA8L3JlZm5hbWVkaXY+CisKKyAgICAgIDxyZWZzZWN0MT4KKwk8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisJPHBhcmE+VGhpcyBpcyBhIG11bHRpLXBsYW5hciBmb3JtYXQsIGFzIG9wcG9zZWQgdG8gYSBwYWNrZWQgZm9ybWF0LgorVGhlIHRocmVlIGNvbXBvbmVudHMgYXJlIHNlcGFyYXRlZCBpbnRvIHRocmVlIHN1Yi1pbWFnZXMgb3IgcGxhbmVzLgorCitUaGUgWSBwbGFuZSBpcyBmaXJzdC4gVGhlIFkgcGxhbmUgaGFzIG9uZSBieXRlIHBlciBwaXhlbC4gVGhlIENyIGRhdGEKK2NvbnN0aXR1dGVzIHRoZSBzZWNvbmQgcGxhbmUgd2hpY2ggaXMgaGFsZiB0aGUgd2lkdGggYW5kIGhhbGYKK3RoZSBoZWlnaHQgb2YgdGhlIFkgcGxhbmUgKGFuZCBvZiB0aGUgaW1hZ2UpLiBFYWNoIENyIGJlbG9uZ3MgdG8gZm91cgorcGl4ZWxzLCBhIHR3by1ieS10d28gc3F1YXJlIG9mIHRoZSBpbWFnZS4gRm9yIGV4YW1wbGUsCitDcjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PiBiZWxvbmdzIHRvIFknPHN1YnNjcmlwdD4wMDwvc3Vic2NyaXB0PiwKK1knPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PiwgWSc8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+LCBhbmQKK1knPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0Pi4gVGhlIENiIGRhdGEsIGp1c3QgbGlrZSB0aGUgQ3IgcGxhbmUsIGNvbnN0aXR1dGVzCit0aGUgdGhpcmQgcGxhbmUuIDwvcGFyYT4KKworCTxwYXJhPklmIHRoZSBZIHBsYW5lIGhhcyBwYWQgYnl0ZXMgYWZ0ZXIgZWFjaCByb3csIHRoZW4gdGhlIENyCithbmQgQ2IgcGxhbmVzIGhhdmUgaGFsZiBhcyBtYW55IHBhZCBieXRlcyBhZnRlciB0aGVpciByb3dzLiBJbiBvdGhlcgord29yZHMsIHR3byBDeCByb3dzIChpbmNsdWRpbmcgcGFkZGluZykgaXMgZXhhY3RseSBhcyBsb25nIGFzIG9uZSBZIHJvdworKGluY2x1ZGluZyBwYWRkaW5nKS48L3BhcmE+CisKKwk8cGFyYT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1lWVTQyME08L2NvbnN0YW50PiBpcyBpbnRlbmRlZCB0byBiZQordXNlZCBvbmx5IGluIGRyaXZlcnMgYW5kIGFwcGxpY2F0aW9ucyB0aGF0IHN1cHBvcnQgdGhlIG11bHRpLXBsYW5hciBBUEksCitkZXNjcmliZWQgaW4gPHhyZWYgbGlua2VuZD0icGxhbmFyLWFwaXMiLz4uIDwvcGFyYT4KKworCTxleGFtcGxlPgorCSAgPHRpdGxlPjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWVZVNDIwTTwvY29uc3RhbnQ+IDQgJnRpbWVzOyA0CitwaXhlbCBpbWFnZTwvdGl0bGU+CisKKwkgIDxmb3JtYWxwYXJhPgorCSAgICA8dGl0bGU+Qnl0ZSBPcmRlci48L3RpdGxlPgorCSAgICA8cGFyYT5FYWNoIGNlbGwgaXMgb25lIGJ5dGUuCisJCTxpbmZvcm1hbHRhYmxlIGZyYW1lPSJub25lIj4KKwkJPHRncm91cCBjb2xzPSI1IiBhbGlnbj0iY2VudGVyIj4KKwkJICA8Y29sc3BlYyBhbGlnbj0ibGVmdCIgY29sd2lkdGg9IjIqIiAvPgorCQkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQwJm5ic3A7KyZuYnNwOzA6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydDAmbmJzcDsrJm5ic3A7NDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjEzPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0MCZuYnNwOysmbmJzcDs4OjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQwJm5ic3A7KyZuYnNwOzEyOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMjwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PjxlbnRyeT48L2VudHJ5Pjwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0MSZuYnNwOysmbmJzcDswOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjAxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0MSZuYnNwOysmbmJzcDsyOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz48ZW50cnk+PC9lbnRyeT48L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydDImbmJzcDsrJm5ic3A7MDo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydDImbmJzcDsrJm5ic3A7Mjo8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICA8L3Rib2R5PgorCQk8L3Rncm91cD4KKwkJPC9pbmZvcm1hbHRhYmxlPgorCSAgICAgIDwvcGFyYT4KKwkgIDwvZm9ybWFscGFyYT4KKworCSAgPGZvcm1hbHBhcmE+CisJICAgIDx0aXRsZT5Db2xvciBTYW1wbGUgTG9jYXRpb24uPC90aXRsZT4KKwkgICAgPHBhcmE+CisJCTxpbmZvcm1hbHRhYmxlIGZyYW1lPSJub25lIj4KKwkJPHRncm91cCBjb2xzPSI3IiBhbGlnbj0iY2VudGVyIj4KKwkJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT4wPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+MTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT4yPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+MzwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PjwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MTwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT48ZW50cnk+WTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+PC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjM8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC90Z3JvdXA+CisJCTwvaW5mb3JtYWx0YWJsZT4KKwkgICAgICA8L3BhcmE+CisJICA8L2Zvcm1hbHBhcmE+CisJPC9leGFtcGxlPgorICAgICAgPC9yZWZzZWN0MT4KKyAgICA8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQteXZ5dS54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BpeGZtdC15dnl1LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZmZmZGM3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQteXZ5dS54bWwKQEAgLTAsMCArMSwxMjAgQEAKKyAgICA8cmVmZW50cnkgaWQ9IlY0TDItUElYLUZNVC1ZVllVIj4KKyAgICAgIDxyZWZtZXRhPgorCTxyZWZlbnRyeXRpdGxlPlY0TDJfUElYX0ZNVF9ZVllVICgnWVZZVScpPC9yZWZlbnRyeXRpdGxlPgorCSZtYW52b2w7CisgICAgICA8L3JlZm1ldGE+CisgICAgICA8cmVmbmFtZWRpdj4KKwk8cmVmbmFtZT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1lWWVU8L2NvbnN0YW50PjwvcmVmbmFtZT4KKwk8cmVmcHVycG9zZT5WYXJpYXRpb24gb2YKKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfWVVZVjwvY29uc3RhbnQ+IHdpdGggZGlmZmVyZW50IG9yZGVyIG9mIHNhbXBsZXMKK2luIG1lbW9yeTwvcmVmcHVycG9zZT4KKyAgICAgIDwvcmVmbmFtZWRpdj4KKyAgICAgIDxyZWZzZWN0MT4KKwk8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisJPHBhcmE+SW4gdGhpcyBmb3JtYXQgZWFjaCBmb3VyIGJ5dGVzIGlzIHR3byBwaXhlbHMuIEVhY2ggZm91cgorYnl0ZXMgaXMgdHdvIFkncywgYSBDYiBhbmQgYSBDci4gRWFjaCBZIGdvZXMgdG8gb25lIG9mIHRoZSBwaXhlbHMsIGFuZAordGhlIENiIGFuZCBDciBiZWxvbmcgdG8gYm90aCBwaXhlbHMuIEFzIHlvdSBjYW4gc2VlLCB0aGUgQ3IgYW5kIENiCitjb21wb25lbnRzIGhhdmUgaGFsZiB0aGUgaG9yaXpvbnRhbCByZXNvbHV0aW9uIG9mIHRoZSBZCitjb21wb25lbnQuPC9wYXJhPgorCisJPGV4YW1wbGU+CisJICA8dGl0bGU+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9ZVllVPC9jb25zdGFudD4gNCAmdGltZXM7IDQKK3BpeGVsIGltYWdlPC90aXRsZT4KKworCSAgPGZvcm1hbHBhcmE+CisJICAgIDx0aXRsZT5CeXRlIE9yZGVyLjwvdGl0bGU+CisJICAgIDxwYXJhPkVhY2ggY2VsbCBpcyBvbmUgYnl0ZS4KKwkJPGluZm9ybWFsdGFibGUgZnJhbWU9Im5vbmUiPgorCQk8dGdyb3VwIGNvbHM9IjkiIGFsaWduPSJjZW50ZXIiPgorCQkgIDxjb2xzcGVjIGFsaWduPSJsZWZ0IiBjb2x3aWR0aD0iMioiIC8+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT5zdGFydCZuYnNwOysmbmJzcDswOjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjAwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MDA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjAyPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNyPHN1YnNjcmlwdD4wMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MDM8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q2I8c3Vic2NyaXB0PjAxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PnN0YXJ0Jm5ic3A7KyZuYnNwOzg6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MTI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4xMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MTY6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjIxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4yMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjIxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4yMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+c3RhcnQmbmJzcDsrJm5ic3A7MjQ6PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DcjxzdWJzY3JpcHQ+MzA8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WSc8c3Vic2NyaXB0PjMxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PkNiPHN1YnNjcmlwdD4zMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZJzxzdWJzY3JpcHQ+MzI8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+Q3I8c3Vic2NyaXB0PjMxPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5PlknPHN1YnNjcmlwdD4zMzwvc3Vic2NyaXB0PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5DYjxzdWJzY3JpcHQ+MzE8L3N1YnNjcmlwdD48L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgPC90Ym9keT4KKwkJPC90Z3JvdXA+CisJCTwvaW5mb3JtYWx0YWJsZT4KKwkgICAgICA8L3BhcmE+CisJICA8L2Zvcm1hbHBhcmE+CisKKwkgIDxmb3JtYWxwYXJhPgorCSAgICA8dGl0bGU+Q29sb3IgU2FtcGxlIExvY2F0aW9uLjwvdGl0bGU+CisJICAgIDxwYXJhPgorCQk8aW5mb3JtYWx0YWJsZSBmcmFtZT0ibm9uZSI+CisJCTx0Z3JvdXAgY29scz0iNyIgYWxpZ249ImNlbnRlciI+CisJCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MDwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjE8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+MjwvZW50cnk+PGVudHJ5PjwvZW50cnk+PGVudHJ5PjM8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgICAgPHJvdz4KKwkJICAgICAgPGVudHJ5PjE8L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+PC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+WTwvZW50cnk+CisJCSAgICA8L3Jvdz4KKwkJICAgIDxyb3c+CisJCSAgICAgIDxlbnRyeT4yPC9lbnRyeT4KKwkJICAgICAgPGVudHJ5Plk8L2VudHJ5PjxlbnRyeT5DPC9lbnRyeT48ZW50cnk+WTwvZW50cnk+PGVudHJ5PjwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PgorCQkgICAgPC9yb3c+CisJCSAgICA8cm93PgorCQkgICAgICA8ZW50cnk+MzwvZW50cnk+CisJCSAgICAgIDxlbnRyeT5ZPC9lbnRyeT48ZW50cnk+QzwvZW50cnk+PGVudHJ5Plk8L2VudHJ5PjxlbnRyeT48L2VudHJ5PgorCQkgICAgICA8ZW50cnk+WTwvZW50cnk+PGVudHJ5PkM8L2VudHJ5PjxlbnRyeT5ZPC9lbnRyeT4KKwkJICAgIDwvcm93PgorCQkgIDwvdGJvZHk+CisJCTwvdGdyb3VwPgorCQk8L2luZm9ybWFsdGFibGU+CisJICAgICAgPC9wYXJhPgorCSAgPC9mb3JtYWxwYXJhPgorCTwvZXhhbXBsZT4KKyAgICAgIDwvcmVmc2VjdDE+CisgICAgPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcGl4Zm10LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODcxMjQ1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9waXhmbXQueG1sCkBAIC0wLDAgKzEsMTk5MiBAQAorICA8dGl0bGU+SW1hZ2UgRm9ybWF0czwvdGl0bGU+CisKKyAgPHBhcmE+VGhlIFY0TDIgQVBJIHdhcyBwcmltYXJpbHkgZGVzaWduZWQgZm9yIGRldmljZXMgZXhjaGFuZ2luZworaW1hZ2UgZGF0YSB3aXRoIGFwcGxpY2F0aW9ucy4gVGhlCis8c3RydWN0bmFtZT52NGwyX3BpeF9mb3JtYXQ8L3N0cnVjdG5hbWU+IGFuZCA8c3RydWN0bmFtZT52NGwyX3BpeF9mb3JtYXRfbXBsYW5lCis8L3N0cnVjdG5hbWU+IHN0cnVjdHVyZXMgZGVmaW5lIHRoZSBmb3JtYXQgYW5kIGxheW91dCBvZiBhbiBpbWFnZSBpbiBtZW1vcnkuCitUaGUgZm9ybWVyIGlzIHVzZWQgd2l0aCB0aGUgc2luZ2xlLXBsYW5hciBBUEksIHdoaWxlIHRoZSBsYXR0ZXIgaXMgdXNlZCB3aXRoIHRoZQorbXVsdGktcGxhbmFyIHZlcnNpb24gKHNlZSA8eHJlZiBsaW5rZW5kPSJwbGFuYXItYXBpcyIvPikuIEltYWdlIGZvcm1hdHMgYXJlCituZWdvdGlhdGVkIHdpdGggdGhlICZWSURJT0MtUy1GTVQ7IGlvY3RsLiAoVGhlIGV4cGxhbmF0aW9ucyBoZXJlIGZvY3VzIG9uIHZpZGVvCitjYXB0dXJpbmcgYW5kIG91dHB1dCwgZm9yIG92ZXJsYXkgZnJhbWUgYnVmZmVyIGZvcm1hdHMgc2VlIGFsc28KKyZWSURJT0MtRy1GQlVGOy4pPC9wYXJhPgorCis8c2VjdGlvbj4KKyAgPHRpdGxlPlNpbmdsZS1wbGFuYXIgZm9ybWF0IHN0cnVjdHVyZTwvdGl0bGU+CisgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1waXgtZm9ybWF0Ij4KKyAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfcGl4X2Zvcm1hdDwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgIDx0Z3JvdXAgY29scz0iMyI+CisgICAgICAmY3Mtc3RyOworICAgICAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwk8cm93PgorCSAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgIDxlbnRyeT48c3RydWN0ZmllbGQ+d2lkdGg8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICA8ZW50cnk+SW1hZ2Ugd2lkdGggaW4gcGl4ZWxzLjwvZW50cnk+CisJPC9yb3c+CisJPHJvdz4KKwkgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICA8ZW50cnk+PHN0cnVjdGZpZWxkPmhlaWdodDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgIDxlbnRyeT5JbWFnZSBoZWlnaHQgaW4gcGl4ZWxzLiBJZiA8c3RydWN0ZmllbGQ+ZmllbGQ8L3N0cnVjdGZpZWxkPiBpcworCSAgb25lIG9mIDxjb25zdGFudD5WNEwyX0ZJRUxEX1RPUDwvY29uc3RhbnQ+LCA8Y29uc3RhbnQ+VjRMMl9GSUVMRF9CT1RUT008L2NvbnN0YW50PgorCSAgb3IgPGNvbnN0YW50PlY0TDJfRklFTERfQUxURVJOQVRFPC9jb25zdGFudD4gdGhlbiBoZWlnaHQgcmVmZXJzIHRvIHRoZQorCSAgbnVtYmVyIG9mIGxpbmVzIGluIHRoZSBmaWVsZCwgb3RoZXJ3aXNlIGl0IHJlZmVycyB0byB0aGUgbnVtYmVyIG9mCisJICBsaW5lcyBpbiB0aGUgZnJhbWUgKHdoaWNoIGlzIHR3aWNlIHRoZSBmaWVsZCBoZWlnaHQgZm9yIGludGVybGFjZWQKKwkgIGZvcm1hdHMpLjwvZW50cnk+CisJPC9yb3c+CisJPHJvdz4KKwkgIDxlbnRyeSBzcGFubmFtZT0iaHNwYW4iPkFwcGxpY2F0aW9ucyBzZXQgdGhlc2UgZmllbGRzIHRvCityZXF1ZXN0IGFuIGltYWdlIHNpemUsIGRyaXZlcnMgcmV0dXJuIHRoZSBjbG9zZXN0IHBvc3NpYmxlIHZhbHVlcy4gSW4KK2Nhc2Ugb2YgcGxhbmFyIGZvcm1hdHMgdGhlIDxzdHJ1Y3RmaWVsZD53aWR0aDwvc3RydWN0ZmllbGQ+IGFuZAorPHN0cnVjdGZpZWxkPmhlaWdodDwvc3RydWN0ZmllbGQ+IGFwcGxpZXMgdG8gdGhlIGxhcmdlc3QgcGxhbmUuIFRvCithdm9pZCBhbWJpZ3VpdGllcyBkcml2ZXJzIG11c3QgcmV0dXJuIHZhbHVlcyByb3VuZGVkIHVwIHRvIGEgbXVsdGlwbGUKK29mIHRoZSBzY2FsZSBmYWN0b3Igb2YgYW55IHNtYWxsZXIgcGxhbmVzLiBGb3IgZXhhbXBsZSB3aGVuIHRoZSBpbWFnZQorZm9ybWF0IGlzIFlVViA0OjI6MCwgPHN0cnVjdGZpZWxkPndpZHRoPC9zdHJ1Y3RmaWVsZD4gYW5kCis8c3RydWN0ZmllbGQ+aGVpZ2h0PC9zdHJ1Y3RmaWVsZD4gbXVzdCBiZSBtdWx0aXBsZXMgb2YgdHdvLjwvZW50cnk+CisJPC9yb3c+CisJPHJvdz4KKwkgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICA8ZW50cnk+PHN0cnVjdGZpZWxkPnBpeGVsZm9ybWF0PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgPGVudHJ5PlRoZSBwaXhlbCBmb3JtYXQgb3IgdHlwZSBvZiBjb21wcmVzc2lvbiwgc2V0IGJ5IHRoZQorYXBwbGljYXRpb24uIFRoaXMgaXMgYSBsaXR0bGUgZW5kaWFuIDxsaW5rCitsaW5rZW5kPSJ2NGwyLWZvdXJjYyI+Zm91ciBjaGFyYWN0ZXIgY29kZTwvbGluaz4uIFY0TDIgZGVmaW5lcworc3RhbmRhcmQgUkdCIGZvcm1hdHMgaW4gPHhyZWYgbGlua2VuZD0icmdiLWZvcm1hdHMiIC8+LCBZVVYgZm9ybWF0cyBpbiA8eHJlZgorbGlua2VuZD0ieXV2LWZvcm1hdHMiIC8+LCBhbmQgcmVzZXJ2ZWQgY29kZXMgaW4gPHhyZWYKK2xpbmtlbmQ9InJlc2VydmVkLWZvcm1hdHMiIC8+PC9lbnRyeT4KKwk8L3Jvdz4KKwk8cm93PgorCSAgPGVudHJ5PiZ2NGwyLWZpZWxkOzwvZW50cnk+CisJICA8ZW50cnk+PHN0cnVjdGZpZWxkPmZpZWxkPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgPGVudHJ5PlZpZGVvIGltYWdlcyBhcmUgdHlwaWNhbGx5IGludGVybGFjZWQuIEFwcGxpY2F0aW9ucworY2FuIHJlcXVlc3QgdG8gY2FwdHVyZSBvciBvdXRwdXQgb25seSB0aGUgdG9wIG9yIGJvdHRvbSBmaWVsZCwgb3IgYm90aAorZmllbGRzIGludGVybGFjZWQgb3Igc2VxdWVudGlhbGx5IHN0b3JlZCBpbiBvbmUgYnVmZmVyIG9yIGFsdGVybmF0aW5nCitpbiBzZXBhcmF0ZSBidWZmZXJzLiBEcml2ZXJzIHJldHVybiB0aGUgYWN0dWFsIGZpZWxkIG9yZGVyIHNlbGVjdGVkLgorRm9yIG1vcmUgZGV0YWlscyBvbiBmaWVsZHMgc2VlIDx4cmVmIGxpbmtlbmQ9ImZpZWxkLW9yZGVyIiAvPi48L2VudHJ5PgorCTwvcm93PgorCTxyb3c+CisJICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5ieXRlc3BlcmxpbmU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICA8ZW50cnk+RGlzdGFuY2UgaW4gYnl0ZXMgYmV0d2VlbiB0aGUgbGVmdG1vc3QgcGl4ZWxzIGluIHR3bworYWRqYWNlbnQgbGluZXMuPC9lbnRyeT4KKwk8L3Jvdz4KKwk8cm93PgorCSAgPGVudHJ5IHNwYW5uYW1lPSJoc3BhbiI+PHBhcmE+Qm90aCBhcHBsaWNhdGlvbnMgYW5kIGRyaXZlcnMKK2NhbiBzZXQgdGhpcyBmaWVsZCB0byByZXF1ZXN0IHBhZGRpbmcgYnl0ZXMgYXQgdGhlIGVuZCBvZiBlYWNoIGxpbmUuCitEcml2ZXJzIGhvd2V2ZXIgbWF5IGlnbm9yZSB0aGUgdmFsdWUgcmVxdWVzdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiwKK3JldHVybmluZyA8c3RydWN0ZmllbGQ+d2lkdGg8L3N0cnVjdGZpZWxkPiB0aW1lcyBieXRlcyBwZXIgcGl4ZWwgb3IgYQorbGFyZ2VyIHZhbHVlIHJlcXVpcmVkIGJ5IHRoZSBoYXJkd2FyZS4gVGhhdCBpbXBsaWVzIGFwcGxpY2F0aW9ucyBjYW4KK2p1c3Qgc2V0IHRoaXMgZmllbGQgdG8gemVybyB0byBnZXQgYSByZWFzb25hYmxlCitkZWZhdWx0LjwvcGFyYT48cGFyYT5WaWRlbyBoYXJkd2FyZSBtYXkgYWNjZXNzIHBhZGRpbmcgYnl0ZXMsCit0aGVyZWZvcmUgdGhleSBtdXN0IHJlc2lkZSBpbiBhY2Nlc3NpYmxlIG1lbW9yeS4gQ29uc2lkZXIgY2FzZXMgd2hlcmUKK3BhZGRpbmcgYnl0ZXMgYWZ0ZXIgdGhlIGxhc3QgbGluZSBvZiBhbiBpbWFnZSBjcm9zcyBhIHN5c3RlbSBwYWdlCitib3VuZGFyeS4gSW5wdXQgZGV2aWNlcyBtYXkgd3JpdGUgcGFkZGluZyBieXRlcywgdGhlIHZhbHVlIGlzCit1bmRlZmluZWQuIE91dHB1dCBkZXZpY2VzIGlnbm9yZSB0aGUgY29udGVudHMgb2YgcGFkZGluZworYnl0ZXMuPC9wYXJhPjxwYXJhPldoZW4gdGhlIGltYWdlIGZvcm1hdCBpcyBwbGFuYXIgdGhlCis8c3RydWN0ZmllbGQ+Ynl0ZXNwZXJsaW5lPC9zdHJ1Y3RmaWVsZD4gdmFsdWUgYXBwbGllcyB0byB0aGUgZmlyc3QKK3BsYW5lIGFuZCBpcyBkaXZpZGVkIGJ5IHRoZSBzYW1lIGZhY3RvciBhcyB0aGUKKzxzdHJ1Y3RmaWVsZD53aWR0aDwvc3RydWN0ZmllbGQ+IGZpZWxkIGZvciB0aGUgb3RoZXIgcGxhbmVzLiBGb3IKK2V4YW1wbGUgdGhlIENiIGFuZCBDciBwbGFuZXMgb2YgYSBZVVYgNDoyOjAgaW1hZ2UgaGF2ZSBoYWxmIGFzIG1hbnkKK3BhZGRpbmcgYnl0ZXMgZm9sbG93aW5nIGVhY2ggbGluZSBhcyB0aGUgWSBwbGFuZS4gVG8gYXZvaWQgYW1iaWd1aXRpZXMKK2RyaXZlcnMgbXVzdCByZXR1cm4gYSA8c3RydWN0ZmllbGQ+Ynl0ZXNwZXJsaW5lPC9zdHJ1Y3RmaWVsZD4gdmFsdWUKK3JvdW5kZWQgdXAgdG8gYSBtdWx0aXBsZSBvZiB0aGUgc2NhbGUgZmFjdG9yLjwvcGFyYT4KKzxwYXJhPkZvciBjb21wcmVzc2VkIGZvcm1hdHMgdGhlIDxzdHJ1Y3RmaWVsZD5ieXRlc3BlcmxpbmU8L3N0cnVjdGZpZWxkPgordmFsdWUgbWFrZXMgbm8gc2Vuc2UuIEFwcGxpY2F0aW9ucyBhbmQgZHJpdmVycyBtdXN0IHNldCB0aGlzIHRvIDAgaW4KK3RoYXQgY2FzZS48L3BhcmE+PC9lbnRyeT4KKwk8L3Jvdz4KKwk8cm93PgorCSAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgIDxlbnRyeT48c3RydWN0ZmllbGQ+c2l6ZWltYWdlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgPGVudHJ5PlNpemUgaW4gYnl0ZXMgb2YgdGhlIGJ1ZmZlciB0byBob2xkIGEgY29tcGxldGUgaW1hZ2UsCitzZXQgYnkgdGhlIGRyaXZlci4gVXN1YWxseSB0aGlzIGlzCis8c3RydWN0ZmllbGQ+Ynl0ZXNwZXJsaW5lPC9zdHJ1Y3RmaWVsZD4gdGltZXMKKzxzdHJ1Y3RmaWVsZD5oZWlnaHQ8L3N0cnVjdGZpZWxkPi4gV2hlbiB0aGUgaW1hZ2UgY29uc2lzdHMgb2YgdmFyaWFibGUKK2xlbmd0aCBjb21wcmVzc2VkIGRhdGEgdGhpcyBpcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgcmVxdWlyZWQgdG8KK2hvbGQgYW4gaW1hZ2UuPC9lbnRyeT4KKwk8L3Jvdz4KKwk8cm93PgorCSAgPGVudHJ5PiZ2NGwyLWNvbG9yc3BhY2U7PC9lbnRyeT4KKwkgIDxlbnRyeT48c3RydWN0ZmllbGQ+Y29sb3JzcGFjZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgIDxlbnRyeT5UaGlzIGluZm9ybWF0aW9uIHN1cHBsZW1lbnRzIHRoZQorPHN0cnVjdGZpZWxkPnBpeGVsZm9ybWF0PC9zdHJ1Y3RmaWVsZD4gYW5kIG11c3QgYmUgc2V0IGJ5IHRoZSBkcml2ZXIgZm9yCitjYXB0dXJlIHN0cmVhbXMgYW5kIGJ5IHRoZSBhcHBsaWNhdGlvbiBmb3Igb3V0cHV0IHN0cmVhbXMsCitzZWUgPHhyZWYgbGlua2VuZD0iY29sb3JzcGFjZXMiIC8+LjwvZW50cnk+CisJPC9yb3c+CisJPHJvdz4KKwkgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICA8ZW50cnk+PHN0cnVjdGZpZWxkPnByaXY8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICA8ZW50cnk+PHBhcmE+VGhpcyBmaWVsZCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgcmVtYWluaW5nIGZpZWxkcyBvZiB0aGUKKzxzdHJ1Y3RuYW1lPnY0bDJfcGl4X2Zvcm1hdDwvc3RydWN0bmFtZT4gc3RydWN0dXJlLCBhbHNvIGNhbGxlZCB0aGUgZXh0ZW5kZWQKK2ZpZWxkcywgYXJlIHZhbGlkLiBXaGVuIHNldCB0byA8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1BSSVZfTUFHSUM8L2NvbnN0YW50PiwgaXQKK2luZGljYXRlcyB0aGF0IHRoZSBleHRlbmRlZCBmaWVsZHMgaGF2ZSBiZWVuIGNvcnJlY3RseSBpbml0aWFsaXplZC4gV2hlbiBzZXQgdG8KK2FueSBvdGhlciB2YWx1ZSBpdCBpbmRpY2F0ZXMgdGhhdCB0aGUgZXh0ZW5kZWQgZmllbGRzIGNvbnRhaW4gdW5kZWZpbmVkIHZhbHVlcy4KKzwvcGFyYT4KKzxwYXJhPkFwcGxpY2F0aW9ucyB0aGF0IHdpc2ggdG8gdXNlIHRoZSBwaXhlbCBmb3JtYXQgZXh0ZW5kZWQgZmllbGRzIG11c3QgZmlyc3QKK2Vuc3VyZSB0aGF0IHRoZSBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSBxdWVyeWluZyB0aGUgZGV2aWNlIGZvciB0aGUKKzxsaW5rIGxpbmtlbmQ9InF1ZXJ5Y2FwIj48Y29uc3RhbnQ+VjRMMl9DQVBfRVhUX1BJWF9GT1JNQVQ8L2NvbnN0YW50PjwvbGluaz4KK2NhcGFiaWxpdHkuIElmIHRoZSBjYXBhYmlsaXR5IGlzbid0IHNldCB0aGUgcGl4ZWwgZm9ybWF0IGV4dGVuZGVkIGZpZWxkcyBhcmUgbm90CitzdXBwb3J0ZWQgYW5kIHVzaW5nIHRoZSBleHRlbmRlZCBmaWVsZHMgd2lsbCBsZWFkIHRvIHVuZGVmaW5lZCByZXN1bHRzLjwvcGFyYT4KKzxwYXJhPlRvIHVzZSB0aGUgZXh0ZW5kZWQgZmllbGRzLCBhcHBsaWNhdGlvbnMgbXVzdCBzZXQgdGhlCis8c3RydWN0ZmllbGQ+cHJpdjwvc3RydWN0ZmllbGQ+IGZpZWxkIHRvCis8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1BSSVZfTUFHSUM8L2NvbnN0YW50PiwgaW5pdGlhbGl6ZSBhbGwgdGhlIGV4dGVuZGVkIGZpZWxkcworYW5kIHplcm8gdGhlIHVudXNlZCBieXRlcyBvZiB0aGUgPHN0cnVjdG5hbWU+djRsMl9mb3JtYXQ8L3N0cnVjdG5hbWU+Cis8c3RydWN0ZmllbGQ+cmF3X2RhdGE8L3N0cnVjdGZpZWxkPiBmaWVsZC48L3BhcmE+Cis8cGFyYT5XaGVuIHRoZSA8c3RydWN0ZmllbGQ+cHJpdjwvc3RydWN0ZmllbGQ+IGZpZWxkIGlzbid0IHNldCB0bworPGNvbnN0YW50PlY0TDJfUElYX0ZNVF9QUklWX01BR0lDPC9jb25zdGFudD4gZHJpdmVycyBtdXN0IGFjdCBhcyBpZiBhbGwgdGhlCitleHRlbmRlZCBmaWVsZHMgd2VyZSBzZXQgdG8gemVyby4gT24gcmV0dXJuIGRyaXZlcnMgbXVzdCBzZXQgdGhlCis8c3RydWN0ZmllbGQ+cHJpdjwvc3RydWN0ZmllbGQ+IGZpZWxkIHRvCis8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1BSSVZfTUFHSUM8L2NvbnN0YW50PiBhbmQgYWxsIHRoZSBleHRlbmRlZCBmaWVsZHMgdG8KK2FwcGxpY2FibGUgdmFsdWVzLjwvcGFyYT48L2VudHJ5PgorCTwvcm93PgorCTxyb3c+CisJICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5mbGFnczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgIDxlbnRyeT5GbGFncyBzZXQgYnkgdGhlIGFwcGxpY2F0aW9uIG9yIGRyaXZlciwgc2VlIDx4cmVmCitsaW5rZW5kPSJmb3JtYXQtZmxhZ3MiIC8+LjwvZW50cnk+CisJPC9yb3c+CisJPHJvdz4KKwkgIDxlbnRyeT4mdjRsMi15Y2Jjci1lbmNvZGluZzs8L2VudHJ5PgorCSAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD55Y2Jjcl9lbmM8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICA8ZW50cnk+VGhpcyBpbmZvcm1hdGlvbiBzdXBwbGVtZW50cyB0aGUKKzxzdHJ1Y3RmaWVsZD5jb2xvcnNwYWNlPC9zdHJ1Y3RmaWVsZD4gYW5kIG11c3QgYmUgc2V0IGJ5IHRoZSBkcml2ZXIgZm9yCitjYXB0dXJlIHN0cmVhbXMgYW5kIGJ5IHRoZSBhcHBsaWNhdGlvbiBmb3Igb3V0cHV0IHN0cmVhbXMsCitzZWUgPHhyZWYgbGlua2VuZD0iY29sb3JzcGFjZXMiIC8+LjwvZW50cnk+CisJPC9yb3c+CisJPHJvdz4KKwkgIDxlbnRyeT4mdjRsMi1xdWFudGl6YXRpb247PC9lbnRyeT4KKwkgIDxlbnRyeT48c3RydWN0ZmllbGQ+cXVhbnRpemF0aW9uPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgPGVudHJ5PlRoaXMgaW5mb3JtYXRpb24gc3VwcGxlbWVudHMgdGhlCis8c3RydWN0ZmllbGQ+Y29sb3JzcGFjZTwvc3RydWN0ZmllbGQ+IGFuZCBtdXN0IGJlIHNldCBieSB0aGUgZHJpdmVyIGZvcgorY2FwdHVyZSBzdHJlYW1zIGFuZCBieSB0aGUgYXBwbGljYXRpb24gZm9yIG91dHB1dCBzdHJlYW1zLAorc2VlIDx4cmVmIGxpbmtlbmQ9ImNvbG9yc3BhY2VzIiAvPi48L2VudHJ5PgorCTwvcm93PgorCTxyb3c+CisJICA8ZW50cnk+JnY0bDIteGZlci1mdW5jOzwvZW50cnk+CisJICA8ZW50cnk+PHN0cnVjdGZpZWxkPnhmZXJfZnVuYzwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgIDxlbnRyeT5UaGlzIGluZm9ybWF0aW9uIHN1cHBsZW1lbnRzIHRoZQorPHN0cnVjdGZpZWxkPmNvbG9yc3BhY2U8L3N0cnVjdGZpZWxkPiBhbmQgbXVzdCBiZSBzZXQgYnkgdGhlIGRyaXZlciBmb3IKK2NhcHR1cmUgc3RyZWFtcyBhbmQgYnkgdGhlIGFwcGxpY2F0aW9uIGZvciBvdXRwdXQgc3RyZWFtcywKK3NlZSA8eHJlZiBsaW5rZW5kPSJjb2xvcnNwYWNlcyIgLz4uPC9lbnRyeT4KKwk8L3Jvdz4KKyAgICAgIDwvdGJvZHk+CisgICAgPC90Z3JvdXA+CisgIDwvdGFibGU+Cis8L3NlY3Rpb24+CisKKzxzZWN0aW9uPgorICA8dGl0bGU+TXVsdGktcGxhbmFyIGZvcm1hdCBzdHJ1Y3R1cmVzPC90aXRsZT4KKyAgPHBhcmE+VGhlIDxzdHJ1Y3RuYW1lPnY0bDJfcGxhbmVfcGl4X2Zvcm1hdDwvc3RydWN0bmFtZT4gc3RydWN0dXJlcyBkZWZpbmUKKyAgICBzaXplIGFuZCBsYXlvdXQgZm9yIGVhY2ggb2YgdGhlIHBsYW5lcyBpbiBhIG11bHRpLXBsYW5hciBmb3JtYXQuCisgICAgVGhlIDxzdHJ1Y3RuYW1lPnY0bDJfcGl4X2Zvcm1hdF9tcGxhbmU8L3N0cnVjdG5hbWU+IHN0cnVjdHVyZSBjb250YWlucworICAgIGluZm9ybWF0aW9uIGNvbW1vbiB0byBhbGwgcGxhbmVzIChzdWNoIGFzIGltYWdlIHdpZHRoIGFuZCBoZWlnaHQpIGFuZAorICAgIGFuIGFycmF5IG9mIDxzdHJ1Y3RuYW1lPnY0bDJfcGxhbmVfcGl4X2Zvcm1hdDwvc3RydWN0bmFtZT4gc3RydWN0dXJlcywKKyAgICBkZXNjcmliaW5nIGFsbCBwbGFuZXMgb2YgdGhhdCBmb3JtYXQuPC9wYXJhPgorICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItcGxhbmUtcGl4LWZvcm1hdCI+CisgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX3BsYW5lX3BpeF9mb3JtYXQ8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICA8dGdyb3VwIGNvbHM9IjMiPgorICAgICAgJmNzLXN0cjsKKyAgICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisgICAgICAgIDxyb3c+CisgICAgICAgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKyAgICAgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnNpemVpbWFnZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgICAgICA8ZW50cnk+TWF4aW11bSBzaXplIGluIGJ5dGVzIHJlcXVpcmVkIGZvciBpbWFnZSBkYXRhIGluIHRoaXMgcGxhbmUuCisgICAgICAgICAgPC9lbnRyeT4KKyAgICAgICAgPC9yb3c+CisgICAgICAgIDxyb3c+CisgICAgICAgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKyAgICAgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmJ5dGVzcGVybGluZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgICAgICA8ZW50cnk+RGlzdGFuY2UgaW4gYnl0ZXMgYmV0d2VlbiB0aGUgbGVmdG1vc3QgcGl4ZWxzIGluIHR3byBhZGphY2VudAorICAgICAgICAgICAgbGluZXMuIFNlZSAmdjRsMi1waXgtZm9ybWF0Oy48L2VudHJ5PgorICAgICAgICA8L3Jvdz4KKyAgICAgICAgPHJvdz4KKyAgICAgICAgICA8ZW50cnk+X191MTY8L2VudHJ5PgorICAgICAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cmVzZXJ2ZWRbNl08L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAgICAgICAgPGVudHJ5PlJlc2VydmVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucy4gU2hvdWxkIGJlIHplcm9lZCBieSBkcml2ZXJzIGFuZAorICAgICAgICAgICBhcHBsaWNhdGlvbnMuPC9lbnRyeT4KKyAgICAgICAgPC9yb3c+CisgICAgICA8L3Rib2R5PgorICAgIDwvdGdyb3VwPgorICA8L3RhYmxlPgorICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItcGl4LWZvcm1hdC1tcGxhbmUiPgorICAgIDx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9waXhfZm9ybWF0X21wbGFuZTwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgIDx0Z3JvdXAgY29scz0iMyI+CisgICAgICAmY3Mtc3RyOworICAgICAgPHRib2R5IHZhbGlnbj0idG9wIj4KKyAgICAgICAgPHJvdz4KKyAgICAgICAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorICAgICAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+d2lkdGg8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAgICAgICAgPGVudHJ5PkltYWdlIHdpZHRoIGluIHBpeGVscy4gU2VlICZ2NGwyLXBpeC1mb3JtYXQ7LjwvZW50cnk+CisgICAgICAgIDwvcm93PgorICAgICAgICA8cm93PgorICAgICAgICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisgICAgICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5oZWlnaHQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAgICAgICAgPGVudHJ5PkltYWdlIGhlaWdodCBpbiBwaXhlbHMuIFNlZSAmdjRsMi1waXgtZm9ybWF0Oy48L2VudHJ5PgorICAgICAgICA8L3Jvdz4KKyAgICAgICAgPHJvdz4KKyAgICAgICAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorICAgICAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cGl4ZWxmb3JtYXQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAgICAgICAgPGVudHJ5PlRoZSBwaXhlbCBmb3JtYXQuIEJvdGggc2luZ2xlLSBhbmQgbXVsdGktcGxhbmFyIGZvdXIgY2hhcmFjdGVyCitjb2RlcyBjYW4gYmUgdXNlZC48L2VudHJ5PgorICAgICAgICA8L3Jvdz4KKyAgICAgICAgPHJvdz4KKyAgICAgICAgICA8ZW50cnk+JnY0bDItZmllbGQ7PC9lbnRyeT4KKyAgICAgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmZpZWxkPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgICAgIDxlbnRyeT5TZWUgJnY0bDItcGl4LWZvcm1hdDsuPC9lbnRyeT4KKyAgICAgICAgPC9yb3c+CisgICAgICAgIDxyb3c+CisgICAgICAgICAgPGVudHJ5PiZ2NGwyLWNvbG9yc3BhY2U7PC9lbnRyeT4KKyAgICAgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmNvbG9yc3BhY2U8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAgICAgICAgPGVudHJ5PlNlZSAmdjRsMi1waXgtZm9ybWF0Oy48L2VudHJ5PgorICAgICAgICA8L3Jvdz4KKyAgICAgICAgPHJvdz4KKyAgICAgICAgICA8ZW50cnk+JnY0bDItcGxhbmUtcGl4LWZvcm1hdDs8L2VudHJ5PgorICAgICAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cGxhbmVfZm10W1ZJREVPX01BWF9QTEFORVNdPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgICAgIDxlbnRyeT5BbiBhcnJheSBvZiBzdHJ1Y3R1cmVzIGRlc2NyaWJpbmcgZm9ybWF0IG9mIGVhY2ggcGxhbmUgdGhpcworICAgICAgICAgIHBpeGVsIGZvcm1hdCBjb25zaXN0cyBvZi4gVGhlIG51bWJlciBvZiB2YWxpZCBlbnRyaWVzIGluIHRoaXMgYXJyYXkKKyAgICAgICAgICBoYXMgdG8gYmUgcHV0IGluIHRoZSA8c3RydWN0ZmllbGQ+bnVtX3BsYW5lczwvc3RydWN0ZmllbGQ+CisgICAgICAgICAgZmllbGQuPC9lbnRyeT4KKyAgICAgICAgPC9yb3c+CisgICAgICAgIDxyb3c+CisgICAgICAgICAgPGVudHJ5Pl9fdTg8L2VudHJ5PgorICAgICAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+bnVtX3BsYW5lczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgICAgICA8ZW50cnk+TnVtYmVyIG9mIHBsYW5lcyAoaS5lLiBzZXBhcmF0ZSBtZW1vcnkgYnVmZmVycykgZm9yIHRoaXMgZm9ybWF0CisgICAgICAgICAgYW5kIHRoZSBudW1iZXIgb2YgdmFsaWQgZW50cmllcyBpbiB0aGUKKyAgICAgICAgICA8c3RydWN0ZmllbGQ+cGxhbmVfZm10PC9zdHJ1Y3RmaWVsZD4gYXJyYXkuPC9lbnRyeT4KKyAgICAgICAgPC9yb3c+CisJPHJvdz4KKwkgIDxlbnRyeT5fX3U4PC9lbnRyeT4KKwkgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZmxhZ3M8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICA8ZW50cnk+RmxhZ3Mgc2V0IGJ5IHRoZSBhcHBsaWNhdGlvbiBvciBkcml2ZXIsIHNlZSA8eHJlZgorbGlua2VuZD0iZm9ybWF0LWZsYWdzIiAvPi48L2VudHJ5PgorCTwvcm93PgorCTxyb3c+CisJICA8ZW50cnk+JnY0bDIteWNiY3ItZW5jb2Rpbmc7PC9lbnRyeT4KKwkgIDxlbnRyeT48c3RydWN0ZmllbGQ+eWNiY3JfZW5jPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgPGVudHJ5PlRoaXMgaW5mb3JtYXRpb24gc3VwcGxlbWVudHMgdGhlCis8c3RydWN0ZmllbGQ+Y29sb3JzcGFjZTwvc3RydWN0ZmllbGQ+IGFuZCBtdXN0IGJlIHNldCBieSB0aGUgZHJpdmVyIGZvcgorY2FwdHVyZSBzdHJlYW1zIGFuZCBieSB0aGUgYXBwbGljYXRpb24gZm9yIG91dHB1dCBzdHJlYW1zLAorc2VlIDx4cmVmIGxpbmtlbmQ9ImNvbG9yc3BhY2VzIiAvPi48L2VudHJ5PgorCTwvcm93PgorCTxyb3c+CisJICA8ZW50cnk+JnY0bDItcXVhbnRpemF0aW9uOzwvZW50cnk+CisJICA8ZW50cnk+PHN0cnVjdGZpZWxkPnF1YW50aXphdGlvbjwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgIDxlbnRyeT5UaGlzIGluZm9ybWF0aW9uIHN1cHBsZW1lbnRzIHRoZQorPHN0cnVjdGZpZWxkPmNvbG9yc3BhY2U8L3N0cnVjdGZpZWxkPiBhbmQgbXVzdCBiZSBzZXQgYnkgdGhlIGRyaXZlciBmb3IKK2NhcHR1cmUgc3RyZWFtcyBhbmQgYnkgdGhlIGFwcGxpY2F0aW9uIGZvciBvdXRwdXQgc3RyZWFtcywKK3NlZSA8eHJlZiBsaW5rZW5kPSJjb2xvcnNwYWNlcyIgLz4uPC9lbnRyeT4KKwk8L3Jvdz4KKwk8cm93PgorCSAgPGVudHJ5PiZ2NGwyLXhmZXItZnVuYzs8L2VudHJ5PgorCSAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD54ZmVyX2Z1bmM8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICA8ZW50cnk+VGhpcyBpbmZvcm1hdGlvbiBzdXBwbGVtZW50cyB0aGUKKzxzdHJ1Y3RmaWVsZD5jb2xvcnNwYWNlPC9zdHJ1Y3RmaWVsZD4gYW5kIG11c3QgYmUgc2V0IGJ5IHRoZSBkcml2ZXIgZm9yCitjYXB0dXJlIHN0cmVhbXMgYW5kIGJ5IHRoZSBhcHBsaWNhdGlvbiBmb3Igb3V0cHV0IHN0cmVhbXMsCitzZWUgPHhyZWYgbGlua2VuZD0iY29sb3JzcGFjZXMiIC8+LjwvZW50cnk+CisJPC9yb3c+CisgICAgICAgIDxyb3c+CisgICAgICAgICAgPGVudHJ5Pl9fdTg8L2VudHJ5PgorICAgICAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cmVzZXJ2ZWRbN108L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAgICAgICAgPGVudHJ5PlJlc2VydmVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucy4gU2hvdWxkIGJlIHplcm9lZCBieSBkcml2ZXJzCisgICAgICAgICAgIGFuZCBhcHBsaWNhdGlvbnMuPC9lbnRyeT4KKyAgICAgICAgPC9yb3c+CisgICAgICA8L3Rib2R5PgorICAgIDwvdGdyb3VwPgorICA8L3RhYmxlPgorPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uPgorICAgIDx0aXRsZT5TdGFuZGFyZCBJbWFnZSBGb3JtYXRzPC90aXRsZT4KKworICAgIDxwYXJhPkluIG9yZGVyIHRvIGV4Y2hhbmdlIGltYWdlcyBiZXR3ZWVuIGRyaXZlcnMgYW5kCithcHBsaWNhdGlvbnMsIGl0IGlzIG5lY2Vzc2FyeSB0byBoYXZlIHN0YW5kYXJkIGltYWdlIGRhdGEgZm9ybWF0cword2hpY2ggYm90aCBzaWRlcyB3aWxsIGludGVycHJldCB0aGUgc2FtZSB3YXkuIFY0TDIgaW5jbHVkZXMgc2V2ZXJhbAorc3VjaCBmb3JtYXRzLCBhbmQgdGhpcyBzZWN0aW9uIGlzIGludGVuZGVkIHRvIGJlIGFuIHVuYW1iaWd1b3VzCitzcGVjaWZpY2F0aW9uIG9mIHRoZSBzdGFuZGFyZCBpbWFnZSBkYXRhIGZvcm1hdHMgaW4gVjRMMi48L3BhcmE+CisKKyAgICA8cGFyYT5WNEwyIGRyaXZlcnMgYXJlIG5vdCBsaW1pdGVkIHRvIHRoZXNlIGZvcm1hdHMsIGhvd2V2ZXIuCitEcml2ZXItc3BlY2lmaWMgZm9ybWF0cyBhcmUgcG9zc2libGUuIEluIHRoYXQgY2FzZSB0aGUgYXBwbGljYXRpb24gbWF5CitkZXBlbmQgb24gYSBjb2RlYyB0byBjb252ZXJ0IGltYWdlcyB0byBvbmUgb2YgdGhlIHN0YW5kYXJkIGZvcm1hdHMKK3doZW4gbmVlZGVkLiBCdXQgdGhlIGRhdGEgY2FuIHN0aWxsIGJlIHN0b3JlZCBhbmQgcmV0cmlldmVkIGluIHRoZQorcHJvcHJpZXRhcnkgZm9ybWF0LiBGb3IgZXhhbXBsZSwgYSBkZXZpY2UgbWF5IHN1cHBvcnQgYSBwcm9wcmlldGFyeQorY29tcHJlc3NlZCBmb3JtYXQuIEFwcGxpY2F0aW9ucyBjYW4gc3RpbGwgY2FwdHVyZSBhbmQgc2F2ZSB0aGUgZGF0YSBpbgordGhlIGNvbXByZXNzZWQgZm9ybWF0LCBzYXZpbmcgbXVjaCBkaXNrIHNwYWNlLCBhbmQgbGF0ZXIgdXNlIGEgY29kZWMKK3RvIGNvbnZlcnQgdGhlIGltYWdlcyB0byB0aGUgWCBXaW5kb3dzIHNjcmVlbiBmb3JtYXQgd2hlbiB0aGUgdmlkZW8gaXMKK3RvIGJlIGRpc3BsYXllZC48L3BhcmE+CisKKyAgICA8cGFyYT5FdmVuIHNvLCB1bHRpbWF0ZWx5LCBzb21lIHN0YW5kYXJkIGZvcm1hdHMgYXJlIG5lZWRlZCwgc28KK3RoZSBWNEwyIHNwZWNpZmljYXRpb24gd291bGQgbm90IGJlIGNvbXBsZXRlIHdpdGhvdXQgd2VsbC1kZWZpbmVkCitzdGFuZGFyZCBmb3JtYXRzLjwvcGFyYT4KKworICAgIDxwYXJhPlRoZSBWNEwyIHN0YW5kYXJkIGZvcm1hdHMgYXJlIG1haW5seSB1bmNvbXByZXNzZWQgZm9ybWF0cy4gVGhlCitwaXhlbHMgYXJlIGFsd2F5cyBhcnJhbmdlZCBpbiBtZW1vcnkgZnJvbSBsZWZ0IHRvIHJpZ2h0LCBhbmQgZnJvbSB0b3AKK3RvIGJvdHRvbS4gVGhlIGZpcnN0IGJ5dGUgb2YgZGF0YSBpbiB0aGUgaW1hZ2UgYnVmZmVyIGlzIGFsd2F5cyBmb3IKK3RoZSBsZWZ0bW9zdCBwaXhlbCBvZiB0aGUgdG9wbW9zdCByb3cuIEZvbGxvd2luZyB0aGF0IGlzIHRoZSBwaXhlbAoraW1tZWRpYXRlbHkgdG8gaXRzIHJpZ2h0LCBhbmQgc28gb24gdW50aWwgdGhlIGVuZCBvZiB0aGUgdG9wIHJvdyBvZgorcGl4ZWxzLiBGb2xsb3dpbmcgdGhlIHJpZ2h0bW9zdCBwaXhlbCBvZiB0aGUgcm93IHRoZXJlIG1heSBiZSB6ZXJvIG9yCittb3JlIGJ5dGVzIG9mIHBhZGRpbmcgdG8gZ3VhcmFudGVlIHRoYXQgZWFjaCByb3cgb2YgcGl4ZWwgZGF0YSBoYXMgYQorY2VydGFpbiBhbGlnbm1lbnQuIEZvbGxvd2luZyB0aGUgcGFkIGJ5dGVzLCBpZiBhbnksIGlzIGRhdGEgZm9yIHRoZQorbGVmdG1vc3QgcGl4ZWwgb2YgdGhlIHNlY29uZCByb3cgZnJvbSB0aGUgdG9wLCBhbmQgc28gb24uIFRoZSBsYXN0IHJvdworaGFzIGp1c3QgYXMgbWFueSBwYWQgYnl0ZXMgYWZ0ZXIgaXQgYXMgdGhlIG90aGVyIHJvd3MuPC9wYXJhPgorCisgICAgPHBhcmE+SW4gVjRMMiBlYWNoIGZvcm1hdCBoYXMgYW4gaWRlbnRpZmllciB3aGljaCBsb29rcyBsaWtlCis8Y29uc3RhbnQ+UElYX0ZNVF9YWFg8L2NvbnN0YW50PiwgZGVmaW5lZCBpbiB0aGUgPGxpbmsKK2xpbmtlbmQ9InZpZGVvZGV2Ij52aWRlb2RldjIuaDwvbGluaz4gaGVhZGVyIGZpbGUuIFRoZXNlIGlkZW50aWZpZXJzCityZXByZXNlbnQgPGxpbmsgbGlua2VuZD0idjRsMi1mb3VyY2MiPmZvdXIgY2hhcmFjdGVyIChGb3VyQ0MpIGNvZGVzPC9saW5rPgord2hpY2ggYXJlIGFsc28gbGlzdGVkIGJlbG93LCBob3dldmVyIHRoZXkgYXJlIG5vdCB0aGUgc2FtZSBhcyB0aG9zZQordXNlZCBpbiB0aGUgV2luZG93cyB3b3JsZC48L3BhcmE+CisKKyAgICA8cGFyYT5Gb3Igc29tZSBmb3JtYXRzLCBkYXRhIGlzIHN0b3JlZCBpbiBzZXBhcmF0ZSwgZGlzY29udGlndW91cworbWVtb3J5IGJ1ZmZlcnMuIFRob3NlIGZvcm1hdHMgYXJlIGlkZW50aWZpZWQgYnkgYSBzZXBhcmF0ZSBzZXQgb2YgRm91ckNDIGNvZGVzCithbmQgYXJlIHJlZmVycmVkIHRvIGFzICJtdWx0aS1wbGFuYXIgZm9ybWF0cyIuIEZvciBleGFtcGxlLCBhIFlVVjQyMiBmcmFtZSBpcworbm9ybWFsbHkgc3RvcmVkIGluIG9uZSBtZW1vcnkgYnVmZmVyLCBidXQgaXQgY2FuIGFsc28gYmUgcGxhY2VkIGluIHR3byBvciB0aHJlZQorc2VwYXJhdGUgYnVmZmVycywgd2l0aCBZIGNvbXBvbmVudCBpbiBvbmUgYnVmZmVyIGFuZCBDYkNyIGNvbXBvbmVudHMgaW4gYW5vdGhlcgoraW4gdGhlIDItcGxhbmFyIHZlcnNpb24gb3Igd2l0aCBlYWNoIGNvbXBvbmVudCBpbiBpdHMgb3duIGJ1ZmZlciBpbiB0aGUKKzMtcGxhbmFyIGNhc2UuIFRob3NlIHN1Yi1idWZmZXJzIGFyZSByZWZlcnJlZCB0byBhcyAicGxhbmVzIi48L3BhcmE+CisgIDwvc2VjdGlvbj4KKworICA8c2VjdGlvbiBpZD0iY29sb3JzcGFjZXMiPgorICAgIDx0aXRsZT5Db2xvcnNwYWNlczwvdGl0bGU+CisKKyAgICA8cGFyYT4nQ29sb3InIGlzIGEgdmVyeSBjb21wbGV4IGNvbmNlcHQgYW5kIGRlcGVuZHMgb24gcGh5c2ljcywgY2hlbWlzdHJ5IGFuZAorYmlvbG9neS4gSnVzdCBiZWNhdXNlIHlvdSBoYXZlIHRocmVlIG51bWJlcnMgdGhhdCBkZXNjcmliZSB0aGUgJ3JlZCcsICdncmVlbicKK2FuZCAnYmx1ZScgY29tcG9uZW50cyBvZiB0aGUgY29sb3Igb2YgYSBwaXhlbCBkb2VzIG5vdCBtZWFuIHRoYXQgeW91IGNhbiBhY2N1cmF0ZWx5CitkaXNwbGF5IHRoYXQgY29sb3IuIEEgY29sb3JzcGFjZSBkZWZpbmVzIHdoYXQgaXQgYWN0dWFsbHkgPGVtcGhhc2lzPm1lYW5zPC9lbXBoYXNpcz4KK3RvIGhhdmUgYW4gUkdCIHZhbHVlIG9mIGUuZy4gKDI1NSwmbmJzcDswLCZuYnNwOzApLiBUaGF0IGlzLCB3aGljaCBjb2xvciBzaG91bGQgYmUKK3JlcHJvZHVjZWQgb24gdGhlIHNjcmVlbiBpbiBhIHBlcmZlY3RseSBjYWxpYnJhdGVkIGVudmlyb25tZW50LjwvcGFyYT4KKworICAgIDxwYXJhPkluIG9yZGVyIHRvIGRvIHRoYXQgd2UgZmlyc3QgbmVlZCB0byBoYXZlIGEgZ29vZCBkZWZpbml0aW9uIG9mCitjb2xvciwgaS5lLiBzb21lIHdheSB0byB1bmlxdWVseSBhbmQgdW5hbWJpZ3VvdXNseSBkZWZpbmUgYSBjb2xvciBzbyB0aGF0IHNvbWVvbmUKK2Vsc2UgY2FuIHJlcHJvZHVjZSBpdC4gSHVtYW4gY29sb3IgdmlzaW9uIGlzIHRyaWNocm9tYXRpYyBzaW5jZSB0aGUgaHVtYW4gZXllIGhhcworY29sb3IgcmVjZXB0b3JzIHRoYXQgYXJlIHNlbnNpdGl2ZSB0byB0aHJlZSBkaWZmZXJlbnQgd2F2ZWxlbmd0aHMgb2YgbGlnaHQuIEhlbmNlCit0aGUgbmVlZCB0byB1c2UgdGhyZWUgbnVtYmVycyB0byBkZXNjcmliZSBjb2xvci4gQmUgZ2xhZCB5b3UgYXJlIG5vdCBhIG1hbnRpcyBzaHJpbXAKK2FzIHRob3NlIGFyZSBzZW5zaXRpdmUgdG8gMTIgZGlmZmVyZW50IHdhdmVsZW5ndGhzLCBzbyBpbnN0ZWFkIG9mIFJHQiB3ZSB3b3VsZCBiZQordXNpbmcgdGhlIEFCQ0RFRkdISUpLTCBjb2xvcnNwYWNlLi4uPC9wYXJhPgorCisgICAgPHBhcmE+Q29sb3IgZXhpc3RzIG9ubHkgaW4gdGhlIGV5ZSBhbmQgYnJhaW4gYW5kIGlzIHRoZSByZXN1bHQgb2YgaG93IHN0cm9uZ2x5Citjb2xvciByZWNlcHRvcnMgYXJlIHN0aW11bGF0ZWQuIFRoaXMgaXMgYmFzZWQgb24gdGhlIFNwZWN0cmFsCitQb3dlciBEaXN0cmlidXRpb24gKFNQRCkgd2hpY2ggaXMgYSBncmFwaCBzaG93aW5nIHRoZSBpbnRlbnNpdHkgKHJhZGlhbnQgcG93ZXIpCitvZiB0aGUgbGlnaHQgYXQgd2F2ZWxlbmd0aHMgY292ZXJpbmcgdGhlIHZpc2libGUgc3BlY3RydW0gYXMgaXQgZW50ZXJzIHRoZSBleWUuCitUaGUgc2NpZW5jZSBvZiBjb2xvcmltZXRyeSBpcyBhYm91dCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIFNQRCBhbmQgY29sb3IgYXMKK3BlcmNlaXZlZCBieSB0aGUgaHVtYW4gYnJhaW4uPC9wYXJhPgorCisgICAgPHBhcmE+U2luY2UgdGhlIGh1bWFuIGV5ZSBoYXMgb25seSB0aHJlZSBjb2xvciByZWNlcHRvcnMgaXQgaXMgcGVyZmVjdGx5Citwb3NzaWJsZSB0aGF0IGRpZmZlcmVudCBTUERzIHdpbGwgcmVzdWx0IGluIHRoZSBzYW1lIHN0aW11bGF0aW9uIG9mIHRob3NlIHJlY2VwdG9ycworYW5kIGFyZSBwZXJjZWl2ZWQgYXMgdGhlIHNhbWUgY29sb3IsIGV2ZW4gdGhvdWdoIHRoZSBTUEQgb2YgdGhlIGxpZ2h0IGlzCitkaWZmZXJlbnQuPC9wYXJhPgorCisgICA8cGFyYT5JbiB0aGUgMTkyMHMgZXhwZXJpbWVudHMgd2VyZSBkZXZpc2VkIHRvIGRldGVybWluZSB0aGUgcmVsYXRpb25zaGlwCitiZXR3ZWVuIFNQRHMgYW5kIHRoZSBwZXJjZWl2ZWQgY29sb3IgYW5kIHRoYXQgcmVzdWx0ZWQgaW4gdGhlIENJRSAxOTMxIHN0YW5kYXJkCit0aGF0IGRlZmluZXMgc3BlY3RyYWwgd2VpZ2h0aW5nIGZ1bmN0aW9ucyB0aGF0IG1vZGVsIHRoZSBwZXJjZXB0aW9uIG9mIGNvbG9yLgorU3BlY2lmaWNhbGx5IHRoYXQgc3RhbmRhcmQgZGVmaW5lcyBmdW5jdGlvbnMgdGhhdCBjYW4gdGFrZSBhbiBTUEQgYW5kIGNhbGN1bGF0ZQordGhlIHN0aW11bHVzIGZvciBlYWNoIGNvbG9yIHJlY2VwdG9yLiBBZnRlciBzb21lIGZ1cnRoZXIgbWF0aGVtYXRpY2FsIHRyYW5zZm9ybXMKK3RoZXNlIHN0aW11bGkgYXJlIGtub3duIGFzIHRoZSA8ZW1waGFzaXM+Q0lFIFhZWiB0cmlzdGltdWx1czwvZW1waGFzaXM+IHZhbHVlcworYW5kIHRoZXNlIFgsIFkgYW5kIFogdmFsdWVzIGRlc2NyaWJlIGEgY29sb3IgYXMgcGVyY2VpdmVkIGJ5IGEgaHVtYW4gdW5hbWJpZ3VvdXNseS4KK1RoZXNlIFgsIFkgYW5kIFogdmFsdWVzIGFyZSBhbGwgaW4gdGhlIHJhbmdlIFswJmhlbGxpcDsxXS48L3BhcmE+CisKKyAgIDxwYXJhPlRoZSBZIHZhbHVlIGluIHRoZSBDSUUgWFlaIGNvbG9yc3BhY2UgY29ycmVzcG9uZHMgdG8gbHVtaW5hbmNlLiBPZnRlbgordGhlIENJRSBYWVogY29sb3JzcGFjZSBpcyB0cmFuc2Zvcm1lZCB0byB0aGUgbm9ybWFsaXplZCBDSUUgeHlZIGNvbG9yc3BhY2U6PC9wYXJhPgorCisgICA8cGFyYT54ID0gWCAvIChYICsgWSArIFopPC9wYXJhPgorICAgPHBhcmE+eSA9IFkgLyAoWCArIFkgKyBaKTwvcGFyYT4KKworICAgPHBhcmE+VGhlIHggYW5kIHkgdmFsdWVzIGFyZSB0aGUgY2hyb21hdGljaXR5IGNvb3JkaW5hdGVzIGFuZCBjYW4gYmUgdXNlZCB0bworZGVmaW5lIGEgY29sb3Igd2l0aG91dCB0aGUgbHVtaW5hbmNlIGNvbXBvbmVudCBZLiBJdCBpcyB2ZXJ5IGNvbmZ1c2luZyB0bworaGF2ZSBzdWNoIHNpbWlsYXIgbmFtZXMgZm9yIHRoZXNlIGNvbG9yc3BhY2VzLiBKdXN0IGJlIGF3YXJlIHRoYXQgaWYgY29sb3JzCithcmUgc3BlY2lmaWVkIHdpdGggbG93ZXIgY2FzZSAneCcgYW5kICd5JywgdGhlbiB0aGUgQ0lFIHh5WSBjb2xvcnNwYWNlIGlzCit1c2VkLiBVcHBlciBjYXNlICdYJyBhbmQgJ1knIHJlZmVyIHRvIHRoZSBDSUUgWFlaIGNvbG9yc3BhY2UuIEFsc28sIHkgaGFzIG5vdGhpbmcKK3RvIGRvIHdpdGggbHVtaW5hbmNlLiBUb2dldGhlciB4IGFuZCB5IHNwZWNpZnkgYSBjb2xvciwgYW5kIFkgdGhlIGx1bWluYW5jZS4KK1RoYXQgaXMgcmVhbGx5IGFsbCB5b3UgbmVlZCB0byByZW1lbWJlciBmcm9tIGEgcHJhY3RpY2FsIHBvaW50IG9mIHZpZXcuIEF0Cit0aGUgZW5kIG9mIHRoaXMgc2VjdGlvbiB5b3Ugd2lsbCBmaW5kIHJlYWRpbmcgcmVzb3VyY2VzIHRoYXQgZ28gaW50byBtdWNoIG1vcmUKK2RldGFpbCBpZiB5b3UgYXJlIGludGVyZXN0ZWQuCis8L3BhcmE+CisKKyAgIDxwYXJhPkEgbW9uaXRvciBvciBUViB3aWxsIHJlcHJvZHVjZSBjb2xvcnMgYnkgZW1pdHRpbmcgbGlnaHQgYXQgdGhyZWUKK2RpZmZlcmVudCB3YXZlbGVuZ3RocywgdGhlIGNvbWJpbmF0aW9uIG9mIHdoaWNoIHdpbGwgc3RpbXVsYXRlIHRoZSBjb2xvciByZWNlcHRvcnMKK2luIHRoZSBleWUgYW5kIHRodXMgY2F1c2UgdGhlIHBlcmNlcHRpb24gb2YgY29sb3IuIEhpc3RvcmljYWxseSB0aGVzZSB3YXZlbGVuZ3Rocword2VyZSBkZWZpbmVkIGJ5IHRoZSByZWQsIGdyZWVuIGFuZCBibHVlIHBob3NwaG9ycyB1c2VkIGluIHRoZSBkaXNwbGF5cy4gVGhlc2UKKzxlbXBoYXNpcz5jb2xvciBwcmltYXJpZXM8L2VtcGhhc2lzPiBhcmUgcGFydCBvZiB3aGF0IGRlZmluZXMgYSBjb2xvcnNwYWNlLjwvcGFyYT4KKworICAgIDxwYXJhPkRpZmZlcmVudCBkaXNwbGF5IGRldmljZXMgd2lsbCBoYXZlIGRpZmZlcmVudCBwcmltYXJpZXMgYW5kIHNvbWUKK3ByaW1hcmllcyBhcmUgbW9yZSBzdWl0YWJsZSBmb3Igc29tZSBkaXNwbGF5IHRlY2hub2xvZ2llcyB0aGFuIG90aGVycy4gVGhpcyBoYXMKK3Jlc3VsdGVkIGluIGEgdmFyaWV0eSBvZiBjb2xvcnNwYWNlcyB0aGF0IGFyZSB1c2VkIGZvciBkaWZmZXJlbnQgZGlzcGxheQordGVjaG5vbG9naWVzIG9yIHVzZXMuIFRvIGRlZmluZSBhIGNvbG9yc3BhY2UgeW91IG5lZWQgdG8gZGVmaW5lIHRoZSB0aHJlZQorY29sb3IgcHJpbWFyaWVzICh0aGVzZSBhcmUgdHlwaWNhbGx5IGRlZmluZWQgYXMgeCwmbmJzcDt5IGNocm9tYXRpY2l0eSBjb29yZGluYXRlcworZnJvbSB0aGUgQ0lFIHh5WSBjb2xvcnNwYWNlKSBidXQgYWxzbyB0aGUgd2hpdGUgcmVmZXJlbmNlOiB0aGF0IGlzIHRoZSBjb2xvciBvYnRhaW5lZAord2hlbiBhbGwgdGhyZWUgcHJpbWFyaWVzIGFyZSBhdCBtYXhpbXVtIHBvd2VyLiBUaGlzIGRldGVybWluZXMgdGhlIHJlbGF0aXZlIHBvd2VyCitvciBlbmVyZ3kgb2YgdGhlIHByaW1hcmllcy4gVGhpcyBpcyB1c3VhbGx5IGNob3NlbiB0byBiZSBjbG9zZSB0byBkYXlsaWdodCB3aGljaCBoYXMKK2JlZW4gZGVmaW5lZCBhcyB0aGUgQ0lFIEQ2NSBJbGx1bWluYW50LjwvcGFyYT4KKworICAgIDxwYXJhPlRvIHJlY2FwaXR1bGF0ZTogdGhlIENJRSBYWVogY29sb3JzcGFjZSB1bmlxdWVseSBpZGVudGlmaWVzIGNvbG9ycy4KK090aGVyIGNvbG9yc3BhY2VzIGFyZSBkZWZpbmVkIGJ5IHRocmVlIGNocm9tYXRpY2l0eSBjb29yZGluYXRlcyBkZWZpbmVkIGluIHRoZQorQ0lFIHh5WSBjb2xvcnNwYWNlLiBCYXNlZCBvbiB0aG9zZSBhIDN4MyBtYXRyaXggY2FuIGJlIGNvbnN0cnVjdGVkIHRoYXQKK3RyYW5zZm9ybXMgQ0lFIFhZWiBjb2xvcnMgdG8gY29sb3JzIGluIHRoZSBuZXcgY29sb3JzcGFjZS4KKzwvcGFyYT4KKworICAgIDxwYXJhPkJvdGggdGhlIENJRSBYWVogYW5kIHRoZSBSR0IgY29sb3JzcGFjZSB0aGF0IGFyZSBkZXJpdmVkIGZyb20gdGhlCitzcGVjaWZpYyBjaHJvbWF0aWNpdHkgcHJpbWFyaWVzIGFyZSBsaW5lYXIgY29sb3JzcGFjZXMuIEJ1dCBuZWl0aGVyIHRoZSBleWUsCitub3IgZGlzcGxheSB0ZWNobm9sb2d5IGlzIGxpbmVhci4gRG91YmxpbmcgdGhlIHZhbHVlcyBvZiBhbGwgY29tcG9uZW50cyBpbgordGhlIGxpbmVhciBjb2xvcnNwYWNlIHdpbGwgbm90IGJlIHBlcmNlaXZlZCBhcyB0d2ljZSB0aGUgaW50ZW5zaXR5IG9mIHRoZSBjb2xvci4KK1NvIGVhY2ggY29sb3JzcGFjZSBhbHNvIGRlZmluZXMgYSB0cmFuc2ZlciBmdW5jdGlvbiB0aGF0IHRha2VzIGEgbGluZWFyIGNvbG9yCitjb21wb25lbnQgdmFsdWUgYW5kIHRyYW5zZm9ybXMgaXQgdG8gdGhlIG5vbi1saW5lYXIgY29tcG9uZW50IHZhbHVlLCB3aGljaCBpcyBhCitjbG9zZXIgbWF0Y2ggdG8gdGhlIG5vbi1saW5lYXIgcGVyZm9ybWFuY2Ugb2YgYm90aCB0aGUgZXllIGFuZCBkaXNwbGF5cy4gTGluZWFyCitjb21wb25lbnQgdmFsdWVzIGFyZSBkZW5vdGVkIFJHQiwgbm9uLWxpbmVhciBhcmUgZGVub3RlZCBhcyBSJ0cnQicuIEluIGdlbmVyYWwKK2NvbG9ycyB1c2VkIGluIGdyYXBoaWNzIGFyZSBhbGwgUidHJ0InLCBleGNlcHQgaW4gb3BlbkdMIHdoaWNoIHVzZXMgbGluZWFyIFJHQi4KK1NwZWNpYWwgY2FyZSBzaG91bGQgYmUgdGFrZW4gd2hlbiBkZWFsaW5nIHdpdGggb3BlbkdMIHRvIHByb3ZpZGUgbGluZWFyIFJHQiBjb2xvcnMKK29yIHRvIHVzZSB0aGUgYnVpbHQtaW4gb3BlbkdMIHN1cHBvcnQgdG8gYXBwbHkgdGhlIGludmVyc2UgdHJhbnNmZXIgZnVuY3Rpb24uPC9wYXJhPgorCisgICAgPHBhcmE+VGhlIGZpbmFsIHBpZWNlIHRoYXQgZGVmaW5lcyBhIGNvbG9yc3BhY2UgaXMgYSBmdW5jdGlvbiB0aGF0Cit0cmFuc2Zvcm1zIG5vbi1saW5lYXIgUidHJ0InIHRvIG5vbi1saW5lYXIgWSdDYkNyLiBUaGlzIGZ1bmN0aW9uIGlzIGRldGVybWluZWQKK2J5IHRoZSBzby1jYWxsZWQgbHVtYSBjb2VmZmljaWVudHMuIFRoZXJlIG1heSBiZSBtdWx0aXBsZSBwb3NzaWJsZSBZJ0NiQ3IKK2VuY29kaW5ncyBhbGxvd2VkIGZvciB0aGUgc2FtZSBjb2xvcnNwYWNlLiBNYW55IGVuY29kaW5ncyBvZiBjb2xvcgorcHJlZmVyIHRvIHVzZSBsdW1hIChZJykgYW5kIGNocm9tYSAoQ2JDcikgaW5zdGVhZCBvZiBSJ0cnQicuIFNpbmNlIHRoZSBodW1hbgorZXllIGlzIG1vcmUgc2Vuc2l0aXZlIHRvIGRpZmZlcmVuY2VzIGluIGx1bWluYW5jZSB0aGFuIGluIGNvbG9yIHRoaXMgZW5jb2RpbmcKK2FsbG93cyBvbmUgdG8gcmVkdWNlIHRoZSBhbW91bnQgb2YgY29sb3IgaW5mb3JtYXRpb24gY29tcGFyZWQgdG8gdGhlIGx1bWEKK2RhdGEuIE5vdGUgdGhhdCB0aGUgbHVtYSAoWScpIGlzIHVucmVsYXRlZCB0byB0aGUgWSBpbiB0aGUgQ0lFIFhZWiBjb2xvcnNwYWNlLgorQWxzbyBub3RlIHRoYXQgWSdDYkNyIGlzIG9mdGVuIGNhbGxlZCBZQ2JDciBvciBZVVYgZXZlbiB0aG91Z2ggdGhlc2UgYXJlCitzdHJpY3RseSBzcGVha2luZyB3cm9uZy48L3BhcmE+CisKKyAgICA8cGFyYT5Tb21ldGltZXMgcGVvcGxlIGNvbmZ1c2UgWSdDYkNyIGFzIGJlaW5nIGEgY29sb3JzcGFjZS4gVGhpcyBpcyBub3QKK2NvcnJlY3QsIGl0IGlzIGp1c3QgYW4gZW5jb2Rpbmcgb2YgYW4gUidHJ0InIGNvbG9yIGludG8gbHVtYSBhbmQgY2hyb21hCit2YWx1ZXMuIFRoZSB1bmRlcmx5aW5nIGNvbG9yc3BhY2UgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIFInRydCJyBjb2xvcgoraXMgYWxzbyBhc3NvY2lhdGVkIHdpdGggdGhlIFknQ2JDciBjb2xvci48L3BhcmE+CisKKyAgICA8cGFyYT5UaGUgZmluYWwgc3RlcCBpcyBob3cgdGhlIFJHQiwgUidHJ0InIG9yIFknQ2JDciB2YWx1ZXMgYXJlCitxdWFudGl6ZWQuIFRoZSBDSUUgWFlaIGNvbG9yc3BhY2Ugd2hlcmUgWCwgWSBhbmQgWiBhcmUgaW4gdGhlIHJhbmdlCitbMCZoZWxsaXA7MV0gZGVzY3JpYmVzIGFsbCBjb2xvcnMgdGhhdCBodW1hbnMgY2FuIHBlcmNlaXZlLCBidXQgdGhlIHRyYW5zZm9ybSB0bworYW5vdGhlciBjb2xvcnNwYWNlIHdpbGwgcHJvZHVjZSBjb2xvcnMgdGhhdCBhcmUgb3V0c2lkZSB0aGUgWzAmaGVsbGlwOzFdIHJhbmdlLgorT25jZSBjbGFtcGVkIHRvIHRoZSBbMCZoZWxsaXA7MV0gcmFuZ2UgdGhvc2UgY29sb3JzIGNhbiBubyBsb25nZXIgYmUgcmVwcm9kdWNlZAoraW4gdGhhdCBjb2xvcnNwYWNlLiBUaGlzIGNsYW1waW5nIGlzIHdoYXQgcmVkdWNlcyB0aGUgZXh0ZW50IG9yIGdhbXV0IG9mIHRoZQorY29sb3JzcGFjZS4gSG93IHRoZSByYW5nZSBvZiBbMCZoZWxsaXA7MV0gaXMgdHJhbnNsYXRlZCB0byBpbnRlZ2VyIHZhbHVlcyBpbiB0aGUKK3JhbmdlIG9mIFswJmhlbGxpcDsyNTVdIChvciBoaWdoZXIsIGRlcGVuZGluZyBvbiB0aGUgY29sb3IgZGVwdGgpIGlzIGNhbGxlZCB0aGUKK3F1YW50aXphdGlvbi4gVGhpcyBpcyA8ZW1waGFzaXM+bm90PC9lbXBoYXNpcz4gcGFydCBvZiB0aGUgY29sb3JzcGFjZQorZGVmaW5pdGlvbi4gSW4gcHJhY3RpY2UgUkdCIG9yIFInRydCJyB2YWx1ZXMgYXJlIGZ1bGwgcmFuZ2UsIGkuZS4gdGhleQordXNlIHRoZSBmdWxsIFswJmhlbGxpcDsyNTVdIHJhbmdlLiBZJ0NiQ3IgdmFsdWVzIG9uIHRoZSBvdGhlciBoYW5kIGFyZSBsaW1pdGVkCityYW5nZSB3aXRoIFknIHVzaW5nIFsxNiZoZWxsaXA7MjM1XSBhbmQgQ2IgYW5kIENyIHVzaW5nIFsxNiZoZWxsaXA7MjQwXS48L3BhcmE+CisKKyAgICA8cGFyYT5VbmZvcnR1bmF0ZWx5LCBpbiBzb21lIGNhc2VzIGxpbWl0ZWQgcmFuZ2UgUkdCIGlzIGFsc28gdXNlZAord2hlcmUgdGhlIGNvbXBvbmVudHMgdXNlIHRoZSByYW5nZSBbMTYmaGVsbGlwOzIzNV0uIEFuZCBmdWxsIHJhbmdlIFknQ2JDciBhbHNvIGV4aXN0cwordXNpbmcgdGhlIFswJmhlbGxpcDsyNTVdIHJhbmdlLjwvcGFyYT4KKworICAgIDxwYXJhPkluIG9yZGVyIHRvIGNvcnJlY3RseSBpbnRlcnByZXQgYSBjb2xvciB5b3UgbmVlZCB0byBrbm93IHRoZQorcXVhbnRpemF0aW9uIHJhbmdlLCB3aGV0aGVyIGl0IGlzIFInRydCJyBvciBZJ0NiQ3IsIHRoZSB1c2VkIFknQ2JDciBlbmNvZGluZworYW5kIHRoZSBjb2xvcnNwYWNlLgorRnJvbSB0aGF0IGluZm9ybWF0aW9uIHlvdSBjYW4gY2FsY3VsYXRlIHRoZSBjb3JyZXNwb25kaW5nIENJRSBYWVogY29sb3IKK2FuZCBtYXAgdGhhdCBhZ2FpbiB0byB3aGF0ZXZlciBjb2xvcnNwYWNlIHlvdXIgZGlzcGxheSBkZXZpY2UgdXNlcy48L3BhcmE+CisKKyAgICA8cGFyYT5UaGUgY29sb3JzcGFjZSBkZWZpbml0aW9uIGl0c2VsZiBjb25zaXN0cyBvZiB0aGUgdGhyZWUKK2Nocm9tYXRpY2l0eSBwcmltYXJpZXMsIHRoZSB3aGl0ZSByZWZlcmVuY2UgY2hyb21hdGljaXR5LCBhIHRyYW5zZmVyCitmdW5jdGlvbiBhbmQgdGhlIGx1bWEgY29lZmZpY2llbnRzIG5lZWRlZCB0byB0cmFuc2Zvcm0gUidHJ0InIHRvIFknQ2JDci4gV2hpbGUKK3NvbWUgY29sb3JzcGFjZSBzdGFuZGFyZHMgY29ycmVjdGx5IGRlZmluZSBhbGwgZm91ciwgcXVpdGUgb2Z0ZW4gdGhlIGNvbG9yc3BhY2UKK3N0YW5kYXJkIG9ubHkgZGVmaW5lcyBzb21lLCBhbmQgeW91IGhhdmUgdG8gcmVseSBvbiBvdGhlciBzdGFuZGFyZHMgZm9yCit0aGUgbWlzc2luZyBwaWVjZXMuIFRoZSBmYWN0IHRoYXQgY29sb3JzcGFjZXMgYXJlIG9mdGVuIGEgbWl4IG9mIGRpZmZlcmVudAorc3RhbmRhcmRzIGFsc28gbGVkIHRvIHZlcnkgY29uZnVzaW5nIG5hbWluZyBjb252ZW50aW9ucyB3aGVyZSB0aGUgbmFtZSBvZgorYSBzdGFuZGFyZCB3YXMgdXNlZCB0byBuYW1lIGEgY29sb3JzcGFjZSB3aGVuIGluIGZhY3QgdGhhdCBzdGFuZGFyZCB3YXMKK3BhcnQgb2YgdmFyaW91cyBvdGhlciBjb2xvcnNwYWNlcyBhcyB3ZWxsLjwvcGFyYT4KKworICAgIDxwYXJhPklmIHlvdSB3YW50IHRvIHJlYWQgbW9yZSBhYm91dCBjb2xvcnMgYW5kIGNvbG9yc3BhY2VzLCB0aGVuIHRoZQorZm9sbG93aW5nIHJlc291cmNlcyBhcmUgdXNlZnVsOiA8eHJlZiBsaW5rZW5kPSJwb3ludG9uIiAvPiBpcyBhIGdvb2QgcHJhY3RpY2FsCitib29rIGZvciB2aWRlbyBlbmdpbmVlcnMsIDx4cmVmIGxpbmtlbmQ9ImNvbGltZyIgLz4gaGFzIGEgbXVjaCBicm9hZGVyIHNjb3BlIGFuZAorZGVzY3JpYmVzIG1hbnkgbW9yZSBhc3BlY3RzIG9mIGNvbG9yIChwaHlzaWNzLCBjaGVtaXN0cnksIGJpb2xvZ3ksIGV0Yy4pLgorVGhlIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuYnJ1Y2VsaW5kYmxvb20uY29tIj5odHRwOi8vd3d3LmJydWNlbGluZGJsb29tLmNvbTwvdWxpbms+Cit3ZWJzaXRlIGlzIGFuIGV4Y2VsbGVudCByZXNvdXJjZSwgZXNwZWNpYWxseSB3aXRoIHJlc3BlY3QgdG8gdGhlIG1hdGhlbWF0aWNzIGJlaGluZAorY29sb3JzcGFjZSBjb252ZXJzaW9ucy4gVGhlIHdpa2lwZWRpYSA8dWxpbmsgdXJsPSJodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NJRV8xOTMxX2NvbG9yX3NwYWNlI0NJRV94eV9jaHJvbWF0aWNpdHlfZGlhZ3JhbV9hbmRfdGhlX0NJRV94eVlfY29sb3Jfc3BhY2UiPkNJRSAxOTMxIGNvbG9yc3BhY2U8L3VsaW5rPiBhcnRpY2xlCitpcyBhbHNvIHZlcnkgdXNlZnVsLjwvcGFyYT4KKyAgPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uPgorICAgIDx0aXRsZT5EZWZpbmluZyBDb2xvcnNwYWNlcyBpbiBWNEwyPC90aXRsZT4KKyAgICA8cGFyYT5JbiBWNEwyIGNvbG9yc3BhY2VzIGFyZSBkZWZpbmVkIGJ5IGZvdXIgdmFsdWVzLiBUaGUgZmlyc3QgaXMgdGhlIGNvbG9yc3BhY2UKK2lkZW50aWZpZXIgKCZ2NGwyLWNvbG9yc3BhY2U7KSB3aGljaCBkZWZpbmVzIHRoZSBjaHJvbWF0aWNpdGllcywgdGhlIGRlZmF1bHQgdHJhbnNmZXIKK2Z1bmN0aW9uLCB0aGUgZGVmYXVsdCBZJ0NiQ3IgZW5jb2RpbmcgYW5kIHRoZSBkZWZhdWx0IHF1YW50aXphdGlvbiBtZXRob2QuIFRoZSBzZWNvbmQKK2lzIHRoZSB0cmFuc2ZlciBmdW5jdGlvbiBpZGVudGlmaWVyICgmdjRsMi14ZmVyLWZ1bmM7KSB0byBzcGVjaWZ5IG5vbi1zdGFuZGFyZAordHJhbnNmZXIgZnVuY3Rpb25zLiBUaGUgdGhpcmQgaXMgdGhlIFknQ2JDciBlbmNvZGluZyBpZGVudGlmaWVyICgmdjRsMi15Y2Jjci1lbmNvZGluZzspCit0byBzcGVjaWZ5IG5vbi1zdGFuZGFyZCBZJ0NiQ3IgZW5jb2RpbmdzIGFuZCB0aGUgZm91cnRoIGlzIHRoZSBxdWFudGl6YXRpb24gaWRlbnRpZmllcgorKCZ2NGwyLXF1YW50aXphdGlvbjspIHRvIHNwZWNpZnkgbm9uLXN0YW5kYXJkIHF1YW50aXphdGlvbiBtZXRob2RzLiBNb3N0IG9mIHRoZSB0aW1lCitvbmx5IHRoZSBjb2xvcnNwYWNlIGZpZWxkIG9mICZ2NGwyLXBpeC1mb3JtYXQ7IG9yICZ2NGwyLXBpeC1mb3JtYXQtbXBsYW5lOyBuZWVkcyB0bworYmUgZmlsbGVkIGluLiBOb3RlIHRoYXQgdGhlIGRlZmF1bHQgUidHJ0InIHF1YW50aXphdGlvbiBpcyBmdWxsIHJhbmdlIGZvciBhbGwKK2NvbG9yc3BhY2VzIGV4Y2VwdCBmb3IgQlQuMjAyMCB3aGljaCB1c2VzIGxpbWl0ZWQgcmFuZ2UgUidHJ0InIHF1YW50aXphdGlvbi48L3BhcmE+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItY29sb3JzcGFjZSI+CisgICAgICA8dGl0bGU+VjRMMiBDb2xvcnNwYWNlczwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjIiIGFsaWduPSJsZWZ0Ij4KKwkmY3MtZGVmOworCTx0aGVhZD4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5JZGVudGlmaWVyPC9lbnRyeT4KKwkgICAgPGVudHJ5PkRldGFpbHM8L2VudHJ5PgorCSAgPC9yb3c+CisJPC90aGVhZD4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NPTE9SU1BBQ0VfREVGQVVMVDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBkZWZhdWx0IGNvbG9yc3BhY2UuIFRoaXMgY2FuIGJlIHVzZWQgYnkgYXBwbGljYXRpb25zIHRvIGxldCB0aGUKKwkgICAgZHJpdmVyIGZpbGwgaW4gdGhlIGNvbG9yc3BhY2UuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NPTE9SU1BBQ0VfU01QVEUxNzBNPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+U2VlIDx4cmVmIGxpbmtlbmQ9ImNvbC1zbXB0ZS0xNzBtIiAvPi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ09MT1JTUEFDRV9SRUM3MDk8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5TZWUgPHhyZWYgbGlua2VuZD0iY29sLXJlYzcwOSIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NPTE9SU1BBQ0VfU1JHQjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlNlZSA8eHJlZiBsaW5rZW5kPSJjb2wtc3JnYiIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NPTE9SU1BBQ0VfQURPQkVSR0I8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5TZWUgPHhyZWYgbGlua2VuZD0iY29sLWFkb2JlcmdiIiAvPi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ09MT1JTUEFDRV9CVDIwMjA8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5TZWUgPHhyZWYgbGlua2VuZD0iY29sLWJ0MjAyMCIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NPTE9SU1BBQ0VfRENJX1AzPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+U2VlIDx4cmVmIGxpbmtlbmQ9ImNvbC1kY2lwMyIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NPTE9SU1BBQ0VfU01QVEUyNDBNPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+U2VlIDx4cmVmIGxpbmtlbmQ9ImNvbC1zbXB0ZS0yNDBtIiAvPi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ09MT1JTUEFDRV80NzBfU1lTVEVNX008L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5TZWUgPHhyZWYgbGlua2VuZD0iY29sLXN5c20iIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DT0xPUlNQQUNFXzQ3MF9TWVNURU1fQkc8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5TZWUgPHhyZWYgbGlua2VuZD0iY29sLXN5c2JnIiAvPi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ09MT1JTUEFDRV9KUEVHPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+U2VlIDx4cmVmIGxpbmtlbmQ9ImNvbC1qcGVnIiAvPi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ09MT1JTUEFDRV9SQVc8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgcmF3IGNvbG9yc3BhY2UuIFRoaXMgaXMgdXNlZCBmb3IgcmF3IGltYWdlIGNhcHR1cmUgd2hlcmUKKwkgICAgdGhlIGltYWdlIGlzIG1pbmltYWxseSBwcm9jZXNzZWQgYW5kIGlzIHVzaW5nIHRoZSBpbnRlcm5hbCBjb2xvcnNwYWNlCisJICAgIG9mIHRoZSBkZXZpY2UuIFRoZSBzb2Z0d2FyZSB0aGF0IHByb2Nlc3NlcyBhbiBpbWFnZSB1c2luZyB0aGlzCisJICAgICdjb2xvcnNwYWNlJyB3aWxsIGhhdmUgdG8ga25vdyB0aGUgaW50ZXJuYWxzIG9mIHRoZSBjYXB0dXJlIGRldmljZS48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDIteGZlci1mdW5jIj4KKyAgICAgIDx0aXRsZT5WNEwyIFRyYW5zZmVyIEZ1bmN0aW9uPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMiIgYWxpZ249ImxlZnQiPgorCSZjcy1kZWY7CisJPHRoZWFkPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PklkZW50aWZpZXI8L2VudHJ5PgorCSAgICA8ZW50cnk+RGV0YWlsczwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3RoZWFkPgorCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfWEZFUl9GVU5DX0RFRkFVTFQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5Vc2UgdGhlIGRlZmF1bHQgdHJhbnNmZXIgZnVuY3Rpb24gYXMgZGVmaW5lZCBieSB0aGUgY29sb3JzcGFjZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfWEZFUl9GVU5DXzcwOTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlVzZSB0aGUgUmVjLiA3MDkgdHJhbnNmZXIgZnVuY3Rpb24uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1hGRVJfRlVOQ19TUkdCPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+VXNlIHRoZSBzUkdCIHRyYW5zZmVyIGZ1bmN0aW9uLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9YRkVSX0ZVTkNfQURPQkVSR0I8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5Vc2UgdGhlIEFkb2JlUkdCIHRyYW5zZmVyIGZ1bmN0aW9uLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9YRkVSX0ZVTkNfU01QVEUyNDBNPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+VXNlIHRoZSBTTVBURSAyNDBNIHRyYW5zZmVyIGZ1bmN0aW9uLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9YRkVSX0ZVTkNfTk9ORTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkRvIG5vdCB1c2UgYSB0cmFuc2ZlciBmdW5jdGlvbiAoaS5lLiB1c2UgbGluZWFyIFJHQiB2YWx1ZXMpLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9YRkVSX0ZVTkNfRENJX1AzPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+VXNlIHRoZSBEQ0ktUDMgdHJhbnNmZXIgZnVuY3Rpb24uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1hGRVJfRlVOQ19TTVBURTIwODQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5Vc2UgdGhlIFNNUFRFIDIwODQgdHJhbnNmZXIgZnVuY3Rpb24uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLXljYmNyLWVuY29kaW5nIj4KKyAgICAgIDx0aXRsZT5WNEwyIFknQ2JDciBFbmNvZGluZ3M8L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIyIiBhbGlnbj0ibGVmdCI+CisJJmNzLWRlZjsKKwk8dGhlYWQ+CisJICA8cm93PgorCSAgICA8ZW50cnk+SWRlbnRpZmllcjwvZW50cnk+CisJICAgIDxlbnRyeT5EZXRhaWxzPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGhlYWQ+CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9ZQ0JDUl9FTkNfREVGQVVMVDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlVzZSB0aGUgZGVmYXVsdCBZJ0NiQ3IgZW5jb2RpbmcgYXMgZGVmaW5lZCBieSB0aGUgY29sb3JzcGFjZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfWUNCQ1JfRU5DXzYwMTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlVzZSB0aGUgQlQuNjAxIFknQ2JDciBlbmNvZGluZy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfWUNCQ1JfRU5DXzcwOTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlVzZSB0aGUgUmVjLiA3MDkgWSdDYkNyIGVuY29kaW5nLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9ZQ0JDUl9FTkNfWFY2MDE8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5Vc2UgdGhlIGV4dGVuZGVkIGdhbXV0IHh2WUNDIEJULjYwMSBlbmNvZGluZy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfWUNCQ1JfRU5DX1hWNzA5PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+VXNlIHRoZSBleHRlbmRlZCBnYW11dCB4dllDQyBSZWMuIDcwOSBlbmNvZGluZy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfWUNCQ1JfRU5DX1NZQ0M8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5Vc2UgdGhlIGV4dGVuZGVkIGdhbXV0IHNZQ0MgZW5jb2RpbmcuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1lDQkNSX0VOQ19CVDIwMjA8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5Vc2UgdGhlIGRlZmF1bHQgbm9uLWNvbnN0YW50IGx1bWluYW5jZSBCVC4yMDIwIFknQ2JDciBlbmNvZGluZy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfWUNCQ1JfRU5DX0JUMjAyMF9DT05TVF9MVU08L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5Vc2UgdGhlIGNvbnN0YW50IGx1bWluYW5jZSBCVC4yMDIwIFljJ0NiY0NyYyBlbmNvZGluZy48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItcXVhbnRpemF0aW9uIj4KKyAgICAgIDx0aXRsZT5WNEwyIFF1YW50aXphdGlvbiBNZXRob2RzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMiIgYWxpZ249ImxlZnQiPgorCSZjcy1kZWY7CisJPHRoZWFkPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PklkZW50aWZpZXI8L2VudHJ5PgorCSAgICA8ZW50cnk+RGV0YWlsczwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3RoZWFkPgorCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUVVBTlRJWkFUSU9OX0RFRkFVTFQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5Vc2UgdGhlIGRlZmF1bHQgcXVhbnRpemF0aW9uIGVuY29kaW5nIGFzIGRlZmluZWQgYnkgdGhlIGNvbG9yc3BhY2UuCitUaGlzIGlzIGFsd2F5cyBmdWxsIHJhbmdlIGZvciBSJ0cnQicgKGV4Y2VwdCBmb3IgdGhlIEJULjIwMjAgY29sb3JzcGFjZSkgYW5kIHVzdWFsbHkKK2xpbWl0ZWQgcmFuZ2UgZm9yIFknQ2JDci48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUVVBTlRJWkFUSU9OX0ZVTExfUkFOR0U8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5Vc2UgdGhlIGZ1bGwgcmFuZ2UgcXVhbnRpemF0aW9uIGVuY29kaW5nLiBJLmUuIHRoZSByYW5nZSBbMCZoZWxsaXA7MV0KK2lzIG1hcHBlZCB0byBbMCZoZWxsaXA7MjU1XSAod2l0aCBwb3NzaWJsZSBjbGlwcGluZyB0byBbMSZoZWxsaXA7MjU0XSB0byBhdm9pZCB0aGUKKzB4MDAgYW5kIDB4ZmYgdmFsdWVzKS4gQ2IgYW5kIENyIGFyZSBtYXBwZWQgZnJvbSBbLTAuNSZoZWxsaXA7MC41XSB0byBbMCZoZWxsaXA7MjU1XQorKHdpdGggcG9zc2libGUgY2xpcHBpbmcgdG8gWzEmaGVsbGlwOzI1NF0gdG8gYXZvaWQgdGhlIDB4MDAgYW5kIDB4ZmYgdmFsdWVzKS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUVVBTlRJWkFUSU9OX0xJTV9SQU5HRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlVzZSB0aGUgbGltaXRlZCByYW5nZSBxdWFudGl6YXRpb24gZW5jb2RpbmcuIEkuZS4gdGhlIHJhbmdlIFswJmhlbGxpcDsxXQoraXMgbWFwcGVkIHRvIFsxNiZoZWxsaXA7MjM1XS4gQ2IgYW5kIENyIGFyZSBtYXBwZWQgZnJvbSBbLTAuNSZoZWxsaXA7MC41XSB0byBbMTYmaGVsbGlwOzI0MF0uCis8L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisgIDwvc2VjdGlvbj4KKworICA8c2VjdGlvbj4KKyAgICA8dGl0bGU+RGV0YWlsZWQgQ29sb3JzcGFjZSBEZXNjcmlwdGlvbnM8L3RpdGxlPgorICAgIDxzZWN0aW9uIGlkPSJjb2wtc21wdGUtMTcwbSI+CisgICAgICA8dGl0bGU+Q29sb3JzcGFjZSBTTVBURSAxNzBNICg8Y29uc3RhbnQ+VjRMMl9DT0xPUlNQQUNFX1NNUFRFMTcwTTwvY29uc3RhbnQ+KTwvdGl0bGU+CisgICAgICA8cGFyYT5UaGUgPHhyZWYgbGlua2VuZD0ic21wdGUxNzBtIiAvPiBzdGFuZGFyZCBkZWZpbmVzIHRoZSBjb2xvcnNwYWNlIHVzZWQgYnkgTlRTQyBhbmQgUEFMIGFuZCBieSBTRFRWCitpbiBnZW5lcmFsLiBUaGUgZGVmYXVsdCB0cmFuc2ZlciBmdW5jdGlvbiBpcyA8Y29uc3RhbnQ+VjRMMl9YRkVSX0ZVTkNfNzA5PC9jb25zdGFudD4uCitUaGUgZGVmYXVsdCBZJ0NiQ3IgZW5jb2RpbmcgaXMgPGNvbnN0YW50PlY0TDJfWUNCQ1JfRU5DXzYwMTwvY29uc3RhbnQ+LgorVGhlIGRlZmF1bHQgWSdDYkNyIHF1YW50aXphdGlvbiBpcyBsaW1pdGVkIHJhbmdlLiBUaGUgY2hyb21hdGljaXRpZXMgb2YgdGhlIHByaW1hcnkgY29sb3JzIGFuZAordGhlIHdoaXRlIHJlZmVyZW5jZSBhcmU6PC9wYXJhPgorICAgICAgPHRhYmxlIGZyYW1lPSJub25lIj4KKyAgICAgICAgPHRpdGxlPlNNUFRFIDE3ME0gQ2hyb21hdGljaXRpZXM8L3RpdGxlPgorICAgICAgICA8dGdyb3VwIGNvbHM9IjMiIGFsaWduPSJsZWZ0Ij4KKyAgICAgICAgICAmY3Mtc3RyOworICAgIAk8dGhlYWQ+CisgICAgCSAgPHJvdz4KKyAgICAJICAgIDxlbnRyeT5Db2xvcjwvZW50cnk+CisgICAgCSAgICA8ZW50cnk+eDwvZW50cnk+CisgICAgCSAgICA8ZW50cnk+eTwvZW50cnk+CisgICAgCSAgPC9yb3c+CisgICAgCTwvdGhlYWQ+CisgICAgICAgICAgPHRib2R5IHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgIDxlbnRyeT5SZWQ8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC42MzA8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC4zNDA8L2VudHJ5PgorICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICA8ZW50cnk+R3JlZW48L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC4zMTA8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC41OTU8L2VudHJ5PgorICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICA8ZW50cnk+Qmx1ZTwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjE1NTwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjA3MDwvZW50cnk+CisgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgIDxlbnRyeT5XaGl0ZSBSZWZlcmVuY2UgKEQ2NSk8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC4zMTI3PC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuMzI5MDwvZW50cnk+CisgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICA8L3Rib2R5PgorICAgICAgICA8L3Rncm91cD4KKyAgICAgIDwvdGFibGU+CisgICAgICA8cGFyYT5UaGUgcmVkLCBncmVlbiBhbmQgYmx1ZSBjaHJvbWF0aWNpdGllcyBhcmUgYWxzbyBvZnRlbiByZWZlcnJlZCB0bworYXMgdGhlIFNNUFRFIEMgc2V0LCBzbyB0aGlzIGNvbG9yc3BhY2UgaXMgc29tZXRpbWVzIGNhbGxlZCBTTVBURSBDIGFzIHdlbGwuPC9wYXJhPgorICAgICAgPHZhcmlhYmxlbGlzdD4KKwk8dmFybGlzdGVudHJ5PgorICAgICAgICAgIDx0ZXJtPlRoZSB0cmFuc2ZlciBmdW5jdGlvbiBkZWZpbmVkIGZvciBTTVBURSAxNzBNIGlzIHRoZSBzYW1lIGFzIHRoZQorb25lIGRlZmluZWQgaW4gUmVjLiA3MDkuPC90ZXJtPgorCSAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+TCcgPSAtMS4wOTkoLUwpPHN1cGVyc2NyaXB0PjAuNDU8L3N1cGVyc2NyaXB0PiZuYnNwOysmbmJzcDswLjA5OSZuYnNwO2ZvciZuYnNwO0wmbmJzcDsmbGU7Jm5ic3A7LTAuMDE4PC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+TCcgPSA0LjVMJm5ic3A7Zm9yJm5ic3A7LTAuMDE4Jm5ic3A7Jmx0OyZuYnNwO0wmbmJzcDsmbHQ7Jm5ic3A7MC4wMTg8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT5MJyA9IDEuMDk5TDxzdXBlcnNjcmlwdD4wLjQ1PC9zdXBlcnNjcmlwdD4mbmJzcDstJm5ic3A7MC4wOTkmbmJzcDtmb3ImbmJzcDtMJm5ic3A7JmdlOyZuYnNwOzAuMDE4PC9wYXJhPgorCSAgPC9saXN0aXRlbT4KKwk8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDwvdmFyaWFibGVsaXN0PgorICAgICAgPHZhcmlhYmxlbGlzdD4KKwk8dmFybGlzdGVudHJ5PgorICAgICAgICAgIDx0ZXJtPkludmVyc2UgVHJhbnNmZXIgZnVuY3Rpb246PC90ZXJtPgorCSAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+TCA9IC0oKEwnJm5ic3A7LSZuYnNwOzAuMDk5KSZuYnNwOy8mbmJzcDstMS4wOTkpPHN1cGVyc2NyaXB0PjEvMC40NTwvc3VwZXJzY3JpcHQ+Jm5ic3A7Zm9yJm5ic3A7TCcmbmJzcDsmbGU7Jm5ic3A7LTAuMDgxPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+TCA9IEwnJm5ic3A7LyZuYnNwOzQuNSZuYnNwO2ZvciZuYnNwOy0wLjA4MSZuYnNwOyZsdDsmbmJzcDtMJyZuYnNwOyZsdDsmbmJzcDswLjA4MTwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPkwgPSAoKEwnJm5ic3A7KyZuYnNwOzAuMDk5KSZuYnNwOy8mbmJzcDsxLjA5OSk8c3VwZXJzY3JpcHQ+MS8wLjQ1PC9zdXBlcnNjcmlwdD4mbmJzcDtmb3ImbmJzcDtMJyZuYnNwOyZnZTsmbmJzcDswLjA4MTwvcGFyYT4KKwkgIDwvbGlzdGl0ZW0+CisJPC92YXJsaXN0ZW50cnk+CisgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJpYWJsZWxpc3Q+CisJPHZhcmxpc3RlbnRyeT4KKyAgICAgIAkgIDx0ZXJtPlRoZSBsdW1pbmFuY2UgKFknKSBhbmQgY29sb3IgZGlmZmVyZW5jZSAoQ2IgYW5kIENyKSBhcmUgb2J0YWluZWQgd2l0aAordGhlIGZvbGxvd2luZyA8Y29uc3RhbnQ+VjRMMl9ZQ0JDUl9FTkNfNjAxPC9jb25zdGFudD4gZW5jb2Rpbmc6PC90ZXJtPgorCSAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+WScmbmJzcDs9Jm5ic3A7MC4yOTlSJyZuYnNwOysmbmJzcDswLjU4N0cnJm5ic3A7KyZuYnNwOzAuMTE0Qic8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT5DYiZuYnNwOz0mbmJzcDstMC4xNjlSJyZuYnNwOy0mbmJzcDswLjMzMUcnJm5ic3A7KyZuYnNwOzAuNUInPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+Q3ImbmJzcDs9Jm5ic3A7MC41UicmbmJzcDstJm5ic3A7MC40MTlHJyZuYnNwOy0mbmJzcDswLjA4MUInPC9wYXJhPgorCSAgPC9saXN0aXRlbT4KKwk8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDwvdmFyaWFibGVsaXN0PgorICAgICAgPHBhcmE+WScgaXMgY2xhbXBlZCB0byB0aGUgcmFuZ2UgWzAmaGVsbGlwOzFdIGFuZCBDYiBhbmQgQ3IgYXJlCitjbGFtcGVkIHRvIHRoZSByYW5nZSBbLTAuNSZoZWxsaXA7MC41XS4gVGhpcyBjb252ZXJzaW9uIHRvIFknQ2JDciBpcyBpZGVudGljYWwgdG8gdGhlIG9uZQorZGVmaW5lZCBpbiB0aGUgPHhyZWYgbGlua2VuZD0iaXR1NjAxIiAvPiBzdGFuZGFyZCBhbmQgdGhpcyBjb2xvcnNwYWNlIGlzIHNvbWV0aW1lcyBjYWxsZWQgQlQuNjAxIGFzIHdlbGwsIGV2ZW4KK3Rob3VnaCBCVC42MDEgZG9lcyBub3QgbWVudGlvbiBhbnkgY29sb3IgcHJpbWFyaWVzLjwvcGFyYT4KKyAgICAgIDxwYXJhPlRoZSBkZWZhdWx0IHF1YW50aXphdGlvbiBpcyBsaW1pdGVkIHJhbmdlLCBidXQgZnVsbCByYW5nZSBpcyBwb3NzaWJsZSBhbHRob3VnaAorcmFyZWx5IHNlZW4uPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJjb2wtcmVjNzA5Ij4KKyAgICAgIDx0aXRsZT5Db2xvcnNwYWNlIFJlYy4gNzA5ICg8Y29uc3RhbnQ+VjRMMl9DT0xPUlNQQUNFX1JFQzcwOTwvY29uc3RhbnQ+KTwvdGl0bGU+CisgICAgICA8cGFyYT5UaGUgPHhyZWYgbGlua2VuZD0iaXR1NzA5IiAvPiBzdGFuZGFyZCBkZWZpbmVzIHRoZSBjb2xvcnNwYWNlIHVzZWQgYnkgSERUViBpbiBnZW5lcmFsLgorVGhlIGRlZmF1bHQgdHJhbnNmZXIgZnVuY3Rpb24gaXMgPGNvbnN0YW50PlY0TDJfWEZFUl9GVU5DXzcwOTwvY29uc3RhbnQ+LiBUaGUgZGVmYXVsdAorWSdDYkNyIGVuY29kaW5nIGlzIDxjb25zdGFudD5WNEwyX1lDQkNSX0VOQ183MDk8L2NvbnN0YW50Pi4gVGhlIGRlZmF1bHQgWSdDYkNyIHF1YW50aXphdGlvbiBpcworbGltaXRlZCByYW5nZS4gVGhlIGNocm9tYXRpY2l0aWVzIG9mIHRoZSBwcmltYXJ5IGNvbG9ycyBhbmQgdGhlIHdoaXRlIHJlZmVyZW5jZSBhcmU6PC9wYXJhPgorICAgICAgPHRhYmxlIGZyYW1lPSJub25lIj4KKyAgICAgICAgPHRpdGxlPlJlYy4gNzA5IENocm9tYXRpY2l0aWVzPC90aXRsZT4KKyAgICAgICAgPHRncm91cCBjb2xzPSIzIiBhbGlnbj0ibGVmdCI+CisgICAgICAgICAgJmNzLXN0cjsKKyAgICAJPHRoZWFkPgorICAgIAkgIDxyb3c+CisgICAgCSAgICA8ZW50cnk+Q29sb3I8L2VudHJ5PgorICAgIAkgICAgPGVudHJ5Png8L2VudHJ5PgorICAgIAkgICAgPGVudHJ5Pnk8L2VudHJ5PgorICAgIAkgIDwvcm93PgorICAgIAk8L3RoZWFkPgorICAgICAgICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICA8ZW50cnk+UmVkPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuNjQwPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuMzMwPC9lbnRyeT4KKyAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgPGVudHJ5PkdyZWVuPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuMzAwPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuNjAwPC9lbnRyeT4KKyAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgPGVudHJ5PkJsdWU8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC4xNTA8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC4wNjA8L2VudHJ5PgorICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICA8ZW50cnk+V2hpdGUgUmVmZXJlbmNlIChENjUpPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuMzEyNzwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjMyOTA8L2VudHJ5PgorICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgPC90Z3JvdXA+CisgICAgICA8L3RhYmxlPgorICAgICAgPHBhcmE+VGhlIGZ1bGwgbmFtZSBvZiB0aGlzIHN0YW5kYXJkIGlzIFJlYy4gSVRVLVIgQlQuNzA5LTUuPC9wYXJhPgorICAgICAgPHZhcmlhYmxlbGlzdD4KKwk8dmFybGlzdGVudHJ5PgorICAgICAgICAgIDx0ZXJtPlRyYW5zZmVyIGZ1bmN0aW9uLiBOb3JtYWxseSBMIGlzIGluIHRoZSByYW5nZSBbMCZoZWxsaXA7MV0sIGJ1dCBmb3IgdGhlIGV4dGVuZGVkCitnYW11dCB4dllDQyBlbmNvZGluZyB2YWx1ZXMgb3V0c2lkZSB0aGF0IHJhbmdlIGFyZSBhbGxvd2VkLjwvdGVybT4KKwkgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPkwnID0gLTEuMDk5KC1MKTxzdXBlcnNjcmlwdD4wLjQ1PC9zdXBlcnNjcmlwdD4mbmJzcDsrJm5ic3A7MC4wOTkmbmJzcDtmb3ImbmJzcDtMJm5ic3A7JmxlOyZuYnNwOy0wLjAxODwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPkwnID0gNC41TCZuYnNwO2ZvciZuYnNwOy0wLjAxOCZuYnNwOyZsdDsmbmJzcDtMJm5ic3A7Jmx0OyZuYnNwOzAuMDE4PC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+TCcgPSAxLjA5OUw8c3VwZXJzY3JpcHQ+MC40NTwvc3VwZXJzY3JpcHQ+Jm5ic3A7LSZuYnNwOzAuMDk5Jm5ic3A7Zm9yJm5ic3A7TCZuYnNwOyZnZTsmbmJzcDswLjAxODwvcGFyYT4KKwkgIDwvbGlzdGl0ZW0+CisJPC92YXJsaXN0ZW50cnk+CisgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJpYWJsZWxpc3Q+CisJPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dGVybT5JbnZlcnNlIFRyYW5zZmVyIGZ1bmN0aW9uOjwvdGVybT4KKwkgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPkwgPSAtKChMJyZuYnNwOy0mbmJzcDswLjA5OSkmbmJzcDsvJm5ic3A7LTEuMDk5KTxzdXBlcnNjcmlwdD4xLzAuNDU8L3N1cGVyc2NyaXB0PiZuYnNwO2ZvciZuYnNwO0wnJm5ic3A7JmxlOyZuYnNwOy0wLjA4MTwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPkwgPSBMJyZuYnNwOy8mbmJzcDs0LjUmbmJzcDtmb3ImbmJzcDstMC4wODEmbmJzcDsmbHQ7Jm5ic3A7TCcmbmJzcDsmbHQ7Jm5ic3A7MC4wODE8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT5MID0gKChMJyZuYnNwOysmbmJzcDswLjA5OSkmbmJzcDsvJm5ic3A7MS4wOTkpPHN1cGVyc2NyaXB0PjEvMC40NTwvc3VwZXJzY3JpcHQ+Jm5ic3A7Zm9yJm5ic3A7TCcmbmJzcDsmZ2U7Jm5ic3A7MC4wODE8L3BhcmE+CisJICA8L2xpc3RpdGVtPgorCTwvdmFybGlzdGVudHJ5PgorICAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgICA8dmFyaWFibGVsaXN0PgorCTx2YXJsaXN0ZW50cnk+CisgICAgICAJICA8dGVybT5UaGUgbHVtaW5hbmNlIChZJykgYW5kIGNvbG9yIGRpZmZlcmVuY2UgKENiIGFuZCBDcikgYXJlIG9idGFpbmVkIHdpdGggdGhlIGZvbGxvd2luZworPGNvbnN0YW50PlY0TDJfWUNCQ1JfRU5DXzcwOTwvY29uc3RhbnQ+IGVuY29kaW5nOjwvdGVybT4KKwkgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPlknJm5ic3A7PSZuYnNwOzAuMjEyNlInJm5ic3A7KyZuYnNwOzAuNzE1MkcnJm5ic3A7KyZuYnNwOzAuMDcyMkInPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+Q2ImbmJzcDs9Jm5ic3A7LTAuMTE0NlInJm5ic3A7LSZuYnNwOzAuMzg1NEcnJm5ic3A7KyZuYnNwOzAuNUInPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+Q3ImbmJzcDs9Jm5ic3A7MC41UicmbmJzcDstJm5ic3A7MC40NTQyRycmbmJzcDstJm5ic3A7MC4wNDU4Qic8L3BhcmE+CisJICA8L2xpc3RpdGVtPgorCTwvdmFybGlzdGVudHJ5PgorICAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgICA8cGFyYT5ZJyBpcyBjbGFtcGVkIHRvIHRoZSByYW5nZSBbMCZoZWxsaXA7MV0gYW5kIENiIGFuZCBDciBhcmUKK2NsYW1wZWQgdG8gdGhlIHJhbmdlIFstMC41JmhlbGxpcDswLjVdLjwvcGFyYT4KKyAgICAgIDxwYXJhPlRoZSBkZWZhdWx0IHF1YW50aXphdGlvbiBpcyBsaW1pdGVkIHJhbmdlLCBidXQgZnVsbCByYW5nZSBpcyBwb3NzaWJsZSBhbHRob3VnaAorcmFyZWx5IHNlZW4uPC9wYXJhPgorICAgICAgPHBhcmE+VGhlIDxjb25zdGFudD5WNEwyX1lDQkNSX0VOQ183MDk8L2NvbnN0YW50PiBlbmNvZGluZyBkZXNjcmliZWQgYWJvdmUgaXMgdGhlIGRlZmF1bHQKK2ZvciB0aGlzIGNvbG9yc3BhY2UsIGJ1dCBpdCBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIDxjb25zdGFudD5WNEwyX1lDQkNSX0VOQ182MDE8L2NvbnN0YW50PiwgaW4gd2hpY2gKK2Nhc2UgdGhlIEJULjYwMSBZJ0NiQ3IgZW5jb2RpbmcgaXMgdXNlZC48L3BhcmE+CisgICAgICA8cGFyYT5Ud28gYWRkaXRpb25hbCBleHRlbmRlZCBnYW11dCBZJ0NiQ3IgZW5jb2RpbmdzIGFyZSBhbHNvIHBvc3NpYmxlIHdpdGggdGhpcyBjb2xvcnNwYWNlOjwvcGFyYT4KKyAgICAgIDx2YXJpYWJsZWxpc3Q+CisJPHZhcmxpc3RlbnRyeT4KKyAgICAgIAkgIDx0ZXJtPlRoZSB4dllDQyA3MDkgZW5jb2RpbmcgKDxjb25zdGFudD5WNEwyX1lDQkNSX0VOQ19YVjcwOTwvY29uc3RhbnQ+LCA8eHJlZiBsaW5rZW5kPSJ4dnljYyIgLz4pCitpcyBzaW1pbGFyIHRvIHRoZSBSZWMuIDcwOSBlbmNvZGluZywgYnV0IGl0IGFsbG93cyBmb3IgUicsIEcnIGFuZCBCJyB2YWx1ZXMgdGhhdCBhcmUgb3V0c2lkZSB0aGUgcmFuZ2UKK1swJmhlbGxpcDsxXS4gVGhlIHJlc3VsdGluZyBZJywgQ2IgYW5kIENyIHZhbHVlcyBhcmUgc2NhbGVkIGFuZCBvZmZzZXQ6PC90ZXJtPgorCSAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+WScmbmJzcDs9Jm5ic3A7KDIxOSZuYnNwOy8mbmJzcDsyNTYpJm5ic3A7KiZuYnNwOygwLjIxMjZSJyZuYnNwOysmbmJzcDswLjcxNTJHJyZuYnNwOysmbmJzcDswLjA3MjJCJykmbmJzcDsrJm5ic3A7KDE2Jm5ic3A7LyZuYnNwOzI1Nik8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT5DYiZuYnNwOz0mbmJzcDsoMjI0Jm5ic3A7LyZuYnNwOzI1NikmbmJzcDsqJm5ic3A7KC0wLjExNDZSJyZuYnNwOy0mbmJzcDswLjM4NTRHJyZuYnNwOysmbmJzcDswLjVCJyk8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT5DciZuYnNwOz0mbmJzcDsoMjI0Jm5ic3A7LyZuYnNwOzI1NikmbmJzcDsqJm5ic3A7KDAuNVInJm5ic3A7LSZuYnNwOzAuNDU0MkcnJm5ic3A7LSZuYnNwOzAuMDQ1OEInKTwvcGFyYT4KKwkgIDwvbGlzdGl0ZW0+CisJPC92YXJsaXN0ZW50cnk+CisgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJpYWJsZWxpc3Q+CisJPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgIDx0ZXJtPlRoZSB4dllDQyA2MDEgZW5jb2RpbmcgKDxjb25zdGFudD5WNEwyX1lDQkNSX0VOQ19YVjYwMTwvY29uc3RhbnQ+LCA8eHJlZiBsaW5rZW5kPSJ4dnljYyIgLz4pIGlzIHNpbWlsYXIKK3RvIHRoZSBCVC42MDEgZW5jb2RpbmcsIGJ1dCBpdCBhbGxvd3MgZm9yIFInLCBHJyBhbmQgQicgdmFsdWVzIHRoYXQgYXJlIG91dHNpZGUgdGhlIHJhbmdlCitbMCZoZWxsaXA7MV0uIFRoZSByZXN1bHRpbmcgWScsIENiIGFuZCBDciB2YWx1ZXMgYXJlIHNjYWxlZCBhbmQgb2Zmc2V0OjwvdGVybT4KKwkgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPlknJm5ic3A7PSZuYnNwOygyMTkmbmJzcDsvJm5ic3A7MjU2KSZuYnNwOyombmJzcDsoMC4yOTlSJyZuYnNwOysmbmJzcDswLjU4N0cnJm5ic3A7KyZuYnNwOzAuMTE0QicpJm5ic3A7KyZuYnNwOygxNiZuYnNwOy8mbmJzcDsyNTYpPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+Q2ImbmJzcDs9Jm5ic3A7KDIyNCZuYnNwOy8mbmJzcDsyNTYpJm5ic3A7KiZuYnNwOygtMC4xNjlSJyZuYnNwOy0mbmJzcDswLjMzMUcnJm5ic3A7KyZuYnNwOzAuNUInKTwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPkNyJm5ic3A7PSZuYnNwOygyMjQmbmJzcDsvJm5ic3A7MjU2KSZuYnNwOyombmJzcDsoMC41UicmbmJzcDstJm5ic3A7MC40MTlHJyZuYnNwOy0mbmJzcDswLjA4MUInKTwvcGFyYT4KKwkgIDwvbGlzdGl0ZW0+CisJPC92YXJsaXN0ZW50cnk+CisgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICAgIDxwYXJhPlknIGlzIGNsYW1wZWQgdG8gdGhlIHJhbmdlIFswJmhlbGxpcDsxXSBhbmQgQ2IgYW5kIENyIGFyZSBjbGFtcGVkCit0byB0aGUgcmFuZ2UgWy0wLjUmaGVsbGlwOzAuNV0uIFRoZSBub24tc3RhbmRhcmQgeHZZQ0MgNzA5IG9yIHh2WUNDIDYwMSBlbmNvZGluZ3MgY2FuIGJlIHVzZWQgYnkKK3NlbGVjdGluZyA8Y29uc3RhbnQ+VjRMMl9ZQ0JDUl9FTkNfWFY3MDk8L2NvbnN0YW50PiBvciA8Y29uc3RhbnQ+VjRMMl9ZQ0JDUl9FTkNfWFY2MDE8L2NvbnN0YW50Pi4KK1RoZSB4dllDQyBlbmNvZGluZ3MgYWx3YXlzIHVzZSBmdWxsIHJhbmdlIHF1YW50aXphdGlvbi48L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImNvbC1zcmdiIj4KKyAgICAgIDx0aXRsZT5Db2xvcnNwYWNlIHNSR0IgKDxjb25zdGFudD5WNEwyX0NPTE9SU1BBQ0VfU1JHQjwvY29uc3RhbnQ+KTwvdGl0bGU+CisgICAgICA8cGFyYT5UaGUgPHhyZWYgbGlua2VuZD0ic3JnYiIgLz4gc3RhbmRhcmQgZGVmaW5lcyB0aGUgY29sb3JzcGFjZSB1c2VkIGJ5IG1vc3Qgd2ViY2FtcworYW5kIGNvbXB1dGVyIGdyYXBoaWNzLiBUaGUgZGVmYXVsdCB0cmFuc2ZlciBmdW5jdGlvbiBpcyA8Y29uc3RhbnQ+VjRMMl9YRkVSX0ZVTkNfU1JHQjwvY29uc3RhbnQ+LgorVGhlIGRlZmF1bHQgWSdDYkNyIGVuY29kaW5nIGlzIDxjb25zdGFudD5WNEwyX1lDQkNSX0VOQ19TWUNDPC9jb25zdGFudD4uIFRoZSBkZWZhdWx0IFknQ2JDcgorcXVhbnRpemF0aW9uIGlzIGZ1bGwgcmFuZ2UuIFRoZSBjaHJvbWF0aWNpdGllcyBvZiB0aGUgcHJpbWFyeSBjb2xvcnMgYW5kIHRoZSB3aGl0ZQorcmVmZXJlbmNlIGFyZTo8L3BhcmE+CisgICAgICA8dGFibGUgZnJhbWU9Im5vbmUiPgorICAgICAgICA8dGl0bGU+c1JHQiBDaHJvbWF0aWNpdGllczwvdGl0bGU+CisgICAgICAgIDx0Z3JvdXAgY29scz0iMyIgYWxpZ249ImxlZnQiPgorICAgICAgICAgICZjcy1zdHI7CisgICAgCTx0aGVhZD4KKyAgICAJICA8cm93PgorICAgIAkgICAgPGVudHJ5PkNvbG9yPC9lbnRyeT4KKyAgICAJICAgIDxlbnRyeT54PC9lbnRyeT4KKyAgICAJICAgIDxlbnRyeT55PC9lbnRyeT4KKyAgICAJICA8L3Jvdz4KKyAgICAJPC90aGVhZD4KKyAgICAgICAgICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgPGVudHJ5PlJlZDwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjY0MDwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjMzMDwvZW50cnk+CisgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgIDxlbnRyeT5HcmVlbjwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjMwMDwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjYwMDwvZW50cnk+CisgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgIDxlbnRyeT5CbHVlPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuMTUwPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuMDYwPC9lbnRyeT4KKyAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgPGVudHJ5PldoaXRlIFJlZmVyZW5jZSAoRDY1KTwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjMxMjc8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC4zMjkwPC9lbnRyeT4KKyAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgIDwvdGdyb3VwPgorICAgICAgPC90YWJsZT4KKyAgICAgIDxwYXJhPlRoZXNlIGNocm9tYXRpY2l0aWVzIGFyZSBpZGVudGljYWwgdG8gdGhlIFJlYy4gNzA5IGNvbG9yc3BhY2UuPC9wYXJhPgorICAgICAgPHZhcmlhYmxlbGlzdD4KKwk8dmFybGlzdGVudHJ5PgorICAgICAgICAgIDx0ZXJtPlRyYW5zZmVyIGZ1bmN0aW9uLiBOb3RlIHRoYXQgbmVnYXRpdmUgdmFsdWVzIGZvciBMIGFyZSBvbmx5IHVzZWQgYnkgdGhlIFknQ2JDciBjb252ZXJzaW9uLjwvdGVybT4KKwkgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPkwnID0gLTEuMDU1KC1MKTxzdXBlcnNjcmlwdD4xLzIuNDwvc3VwZXJzY3JpcHQ+Jm5ic3A7KyZuYnNwOzAuMDU1Jm5ic3A7Zm9yJm5ic3A7TCZuYnNwOyZsdDsmbmJzcDstMC4wMDMxMzA4PC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+TCcgPSAxMi45MkwmbmJzcDtmb3ImbmJzcDstMC4wMDMxMzA4Jm5ic3A7JmxlOyZuYnNwO0wmbmJzcDsmbGU7Jm5ic3A7MC4wMDMxMzA4PC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+TCcgPSAxLjA1NUw8c3VwZXJzY3JpcHQ+MS8yLjQ8L3N1cGVyc2NyaXB0PiZuYnNwOy0mbmJzcDswLjA1NSZuYnNwO2ZvciZuYnNwOzAuMDAzMTMwOCZuYnNwOyZsdDsmbmJzcDtMJm5ic3A7JmxlOyZuYnNwOzE8L3BhcmE+CisJICA8L2xpc3RpdGVtPgorCTwvdmFybGlzdGVudHJ5PgorCTx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHRlcm0+SW52ZXJzZSBUcmFuc2ZlciBmdW5jdGlvbjo8L3Rlcm0+CisJICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT5MID0gLSgoLUwnJm5ic3A7KyZuYnNwOzAuMDU1KSZuYnNwOy8mbmJzcDsxLjA1NSk8c3VwZXJzY3JpcHQ+Mi40PC9zdXBlcnNjcmlwdD4mbmJzcDtmb3ImbmJzcDtMJyZuYnNwOyZsdDsmbmJzcDstMC4wNDA0NTwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPkwgPSBMJyZuYnNwOy8mbmJzcDsxMi45MiZuYnNwO2ZvciZuYnNwOy0wLjA0MDQ1Jm5ic3A7JmxlOyZuYnNwO0wnJm5ic3A7JmxlOyZuYnNwOzAuMDQwNDU8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT5MID0gKChMJyZuYnNwOysmbmJzcDswLjA1NSkmbmJzcDsvJm5ic3A7MS4wNTUpPHN1cGVyc2NyaXB0PjIuNDwvc3VwZXJzY3JpcHQ+Jm5ic3A7Zm9yJm5ic3A7TCcmbmJzcDsmZ3Q7Jm5ic3A7MC4wNDA0NTwvcGFyYT4KKwkgIDwvbGlzdGl0ZW0+CisJPC92YXJsaXN0ZW50cnk+CisgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJpYWJsZWxpc3Q+CisJPHZhcmxpc3RlbnRyeT4KKyAgICAgIAkgIDx0ZXJtPlRoZSBsdW1pbmFuY2UgKFknKSBhbmQgY29sb3IgZGlmZmVyZW5jZSAoQ2IgYW5kIENyKSBhcmUgb2J0YWluZWQgd2l0aCB0aGUgZm9sbG93aW5nCis8Y29uc3RhbnQ+VjRMMl9ZQ0JDUl9FTkNfU1lDQzwvY29uc3RhbnQ+IGVuY29kaW5nIGFzIGRlZmluZWQgYnkgPHhyZWYgbGlua2VuZD0ic3ljYyIgLz46PC90ZXJtPgorCSAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+WScmbmJzcDs9Jm5ic3A7MC4yOTkwUicmbmJzcDsrJm5ic3A7MC41ODcwRycmbmJzcDsrJm5ic3A7MC4xMTQwQic8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT5DYiZuYnNwOz0mbmJzcDstMC4xNjg3UicmbmJzcDstJm5ic3A7MC4zMzEzRycmbmJzcDsrJm5ic3A7MC41Qic8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT5DciZuYnNwOz0mbmJzcDswLjVSJyZuYnNwOy0mbmJzcDswLjQxODdHJyZuYnNwOy0mbmJzcDswLjA4MTNCJzwvcGFyYT4KKwkgIDwvbGlzdGl0ZW0+CisJPC92YXJsaXN0ZW50cnk+CisgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICAgIDxwYXJhPlknIGlzIGNsYW1wZWQgdG8gdGhlIHJhbmdlIFswJmhlbGxpcDsxXSBhbmQgQ2IgYW5kIENyIGFyZSBjbGFtcGVkCit0byB0aGUgcmFuZ2UgWy0wLjUmaGVsbGlwOzAuNV0uIFRoZSA8Y29uc3RhbnQ+VjRMMl9ZQ0JDUl9FTkNfU1lDQzwvY29uc3RhbnQ+IHF1YW50aXphdGlvbiBpcyBhbHdheXMKK2Z1bGwgcmFuZ2UuIEFsdGhvdWdoIHRoaXMgWSdDYkNyIGVuY29kaW5nIGxvb2tzIHZlcnkgc2ltaWxhciB0byB0aGUgPGNvbnN0YW50PlY0TDJfWUNCQ1JfRU5DX1hWNjAxPC9jb25zdGFudD4KK2VuY29kaW5nLCBpdCBpcyBub3QuIFRoZSA8Y29uc3RhbnQ+VjRMMl9ZQ0JDUl9FTkNfWFY2MDE8L2NvbnN0YW50PiBzY2FsZXMgYW5kIG9mZnNldHMgdGhlIFknQ2JDcgordmFsdWVzIGJlZm9yZSBxdWFudGl6YXRpb24sIGJ1dCB0aGlzIGVuY29kaW5nIGRvZXMgbm90IGRvIHRoYXQuPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJjb2wtYWRvYmVyZ2IiPgorICAgICAgPHRpdGxlPkNvbG9yc3BhY2UgQWRvYmUgUkdCICg8Y29uc3RhbnQ+VjRMMl9DT0xPUlNQQUNFX0FET0JFUkdCPC9jb25zdGFudD4pPC90aXRsZT4KKyAgICAgIDxwYXJhPlRoZSA8eHJlZiBsaW5rZW5kPSJhZG9iZXJnYiIgLz4gc3RhbmRhcmQgZGVmaW5lcyB0aGUgY29sb3JzcGFjZSB1c2VkIGJ5IGNvbXB1dGVyIGdyYXBoaWNzCit0aGF0IHVzZSB0aGUgQWRvYmVSR0IgY29sb3JzcGFjZS4gVGhpcyBpcyBhbHNvIGtub3duIGFzIHRoZSA8eHJlZiBsaW5rZW5kPSJvcHJnYiIgLz4gc3RhbmRhcmQuCitUaGUgZGVmYXVsdCB0cmFuc2ZlciBmdW5jdGlvbiBpcyA8Y29uc3RhbnQ+VjRMMl9YRkVSX0ZVTkNfQURPQkVSR0I8L2NvbnN0YW50Pi4KK1RoZSBkZWZhdWx0IFknQ2JDciBlbmNvZGluZyBpcyA8Y29uc3RhbnQ+VjRMMl9ZQ0JDUl9FTkNfNjAxPC9jb25zdGFudD4uIFRoZSBkZWZhdWx0IFknQ2JDcgorcXVhbnRpemF0aW9uIGlzIGxpbWl0ZWQgcmFuZ2UuIFRoZSBjaHJvbWF0aWNpdGllcyBvZiB0aGUgcHJpbWFyeSBjb2xvcnMgYW5kIHRoZSB3aGl0ZSByZWZlcmVuY2UKK2FyZTo8L3BhcmE+CisgICAgICA8dGFibGUgZnJhbWU9Im5vbmUiPgorICAgICAgICA8dGl0bGU+QWRvYmUgUkdCIENocm9tYXRpY2l0aWVzPC90aXRsZT4KKyAgICAgICAgPHRncm91cCBjb2xzPSIzIiBhbGlnbj0ibGVmdCI+CisgICAgICAgICAgJmNzLXN0cjsKKyAgICAJPHRoZWFkPgorICAgIAkgIDxyb3c+CisgICAgCSAgICA8ZW50cnk+Q29sb3I8L2VudHJ5PgorICAgIAkgICAgPGVudHJ5Png8L2VudHJ5PgorICAgIAkgICAgPGVudHJ5Pnk8L2VudHJ5PgorICAgIAkgIDwvcm93PgorICAgIAk8L3RoZWFkPgorICAgICAgICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICA8ZW50cnk+UmVkPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuNjQwMDwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjMzMDA8L2VudHJ5PgorICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICA8ZW50cnk+R3JlZW48L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC4yMTAwPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuNzEwMDwvZW50cnk+CisgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgIDxlbnRyeT5CbHVlPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuMTUwMDwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjA2MDA8L2VudHJ5PgorICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICA8ZW50cnk+V2hpdGUgUmVmZXJlbmNlIChENjUpPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuMzEyNzwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjMyOTA8L2VudHJ5PgorICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgPC90Z3JvdXA+CisgICAgICA8L3RhYmxlPgorICAgICAgPHZhcmlhYmxlbGlzdD4KKwk8dmFybGlzdGVudHJ5PgorICAgICAgICAgIDx0ZXJtPlRyYW5zZmVyIGZ1bmN0aW9uOjwvdGVybT4KKwkgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPkwnID0gTDxzdXBlcnNjcmlwdD4xLzIuMTk5MjE4NzU8L3N1cGVyc2NyaXB0PjwvcGFyYT4KKwkgIDwvbGlzdGl0ZW0+CisJPC92YXJsaXN0ZW50cnk+CisJPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dGVybT5JbnZlcnNlIFRyYW5zZmVyIGZ1bmN0aW9uOjwvdGVybT4KKwkgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPkwgPSBMJzxzdXBlcnNjcmlwdD4yLjE5OTIxODc1PC9zdXBlcnNjcmlwdD48L3BhcmE+CisJICA8L2xpc3RpdGVtPgorCTwvdmFybGlzdGVudHJ5PgorICAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgICA8dmFyaWFibGVsaXN0PgorCTx2YXJsaXN0ZW50cnk+CisgICAgICAJICA8dGVybT5UaGUgbHVtaW5hbmNlIChZJykgYW5kIGNvbG9yIGRpZmZlcmVuY2UgKENiIGFuZCBDcikgYXJlIG9idGFpbmVkIHdpdGggdGhlCitmb2xsb3dpbmcgPGNvbnN0YW50PlY0TDJfWUNCQ1JfRU5DXzYwMTwvY29uc3RhbnQ+IGVuY29kaW5nOjwvdGVybT4KKwkgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPlknJm5ic3A7PSZuYnNwOzAuMjk5UicmbmJzcDsrJm5ic3A7MC41ODdHJyZuYnNwOysmbmJzcDswLjExNEInPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+Q2ImbmJzcDs9Jm5ic3A7LTAuMTY5UicmbmJzcDstJm5ic3A7MC4zMzFHJyZuYnNwOysmbmJzcDswLjVCJzwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPkNyJm5ic3A7PSZuYnNwOzAuNVInJm5ic3A7LSZuYnNwOzAuNDE5RycmbmJzcDstJm5ic3A7MC4wODFCJzwvcGFyYT4KKwkgIDwvbGlzdGl0ZW0+CisJPC92YXJsaXN0ZW50cnk+CisgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICAgIDxwYXJhPlknIGlzIGNsYW1wZWQgdG8gdGhlIHJhbmdlIFswJmhlbGxpcDsxXSBhbmQgQ2IgYW5kIENyIGFyZQorY2xhbXBlZCB0byB0aGUgcmFuZ2UgWy0wLjUmaGVsbGlwOzAuNV0uIFRoaXMgdHJhbnNmb3JtIGlzIGlkZW50aWNhbCB0byBvbmUgZGVmaW5lZCBpbgorU01QVEUgMTcwTS9CVC42MDEuIFRoZSBZJ0NiQ3IgcXVhbnRpemF0aW9uIGlzIGxpbWl0ZWQgcmFuZ2UuPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJjb2wtYnQyMDIwIj4KKyAgICAgIDx0aXRsZT5Db2xvcnNwYWNlIEJULjIwMjAgKDxjb25zdGFudD5WNEwyX0NPTE9SU1BBQ0VfQlQyMDIwPC9jb25zdGFudD4pPC90aXRsZT4KKyAgICAgIDxwYXJhPlRoZSA8eHJlZiBsaW5rZW5kPSJpdHUyMDIwIiAvPiBzdGFuZGFyZCBkZWZpbmVzIHRoZSBjb2xvcnNwYWNlIHVzZWQgYnkgVWx0cmEtaGlnaCBkZWZpbml0aW9uCit0ZWxldmlzaW9uIChVSERUVikuIFRoZSBkZWZhdWx0IHRyYW5zZmVyIGZ1bmN0aW9uIGlzIDxjb25zdGFudD5WNEwyX1hGRVJfRlVOQ183MDk8L2NvbnN0YW50Pi4KK1RoZSBkZWZhdWx0IFknQ2JDciBlbmNvZGluZyBpcyA8Y29uc3RhbnQ+VjRMMl9ZQ0JDUl9FTkNfQlQyMDIwPC9jb25zdGFudD4uCitUaGUgZGVmYXVsdCBSJ0cnQicgcXVhbnRpemF0aW9uIGlzIGxpbWl0ZWQgcmFuZ2UgKCEpLCBhbmQgc28gaXMgdGhlIGRlZmF1bHQgWSdDYkNyIHF1YW50aXphdGlvbi4KK1RoZSBjaHJvbWF0aWNpdGllcyBvZiB0aGUgcHJpbWFyeSBjb2xvcnMgYW5kIHRoZSB3aGl0ZSByZWZlcmVuY2UgYXJlOjwvcGFyYT4KKyAgICAgIDx0YWJsZSBmcmFtZT0ibm9uZSI+CisgICAgICAgIDx0aXRsZT5CVC4yMDIwIENocm9tYXRpY2l0aWVzPC90aXRsZT4KKyAgICAgICAgPHRncm91cCBjb2xzPSIzIiBhbGlnbj0ibGVmdCI+CisgICAgICAgICAgJmNzLXN0cjsKKyAgICAJPHRoZWFkPgorICAgIAkgIDxyb3c+CisgICAgCSAgICA8ZW50cnk+Q29sb3I8L2VudHJ5PgorICAgIAkgICAgPGVudHJ5Png8L2VudHJ5PgorICAgIAkgICAgPGVudHJ5Pnk8L2VudHJ5PgorICAgIAkgIDwvcm93PgorICAgIAk8L3RoZWFkPgorICAgICAgICAgIDx0Ym9keSB2YWxpZ249InRvcCI+CisgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICA8ZW50cnk+UmVkPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuNzA4PC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuMjkyPC9lbnRyeT4KKyAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgPGVudHJ5PkdyZWVuPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuMTcwPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuNzk3PC9lbnRyeT4KKyAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgPGVudHJ5PkJsdWU8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC4xMzE8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC4wNDY8L2VudHJ5PgorICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICA8ZW50cnk+V2hpdGUgUmVmZXJlbmNlIChENjUpPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuMzEyNzwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjMyOTA8L2VudHJ5PgorICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgPC90Z3JvdXA+CisgICAgICA8L3RhYmxlPgorICAgICAgPHZhcmlhYmxlbGlzdD4KKwk8dmFybGlzdGVudHJ5PgorICAgICAgICAgIDx0ZXJtPlRyYW5zZmVyIGZ1bmN0aW9uIChzYW1lIGFzIFJlYy4gNzA5KTo8L3Rlcm0+CisJICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT5MJyA9IDQuNUwmbmJzcDtmb3ImbmJzcDswJm5ic3A7JmxlOyZuYnNwO0wmbmJzcDsmbHQ7Jm5ic3A7MC4wMTg8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT5MJyA9IDEuMDk5TDxzdXBlcnNjcmlwdD4wLjQ1PC9zdXBlcnNjcmlwdD4mbmJzcDstJm5ic3A7MC4wOTkmbmJzcDtmb3ImbmJzcDswLjAxOCZuYnNwOyZsZTsmbmJzcDtMJm5ic3A7JmxlOyZuYnNwOzE8L3BhcmE+CisJICA8L2xpc3RpdGVtPgorCTwvdmFybGlzdGVudHJ5PgorCTx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHRlcm0+SW52ZXJzZSBUcmFuc2ZlciBmdW5jdGlvbjo8L3Rlcm0+CisJICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT5MID0gTCcmbmJzcDsvJm5ic3A7NC41Jm5ic3A7Zm9yJm5ic3A7TCcmbmJzcDsmbHQ7Jm5ic3A7MC4wODE8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT5MID0gKChMJyZuYnNwOysmbmJzcDswLjA5OSkmbmJzcDsvJm5ic3A7MS4wOTkpPHN1cGVyc2NyaXB0PjEvMC40NTwvc3VwZXJzY3JpcHQ+Jm5ic3A7Zm9yJm5ic3A7TCcmbmJzcDsmZ2U7Jm5ic3A7MC4wODE8L3BhcmE+CisJICA8L2xpc3RpdGVtPgorCTwvdmFybGlzdGVudHJ5PgorICAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgICA8dmFyaWFibGVsaXN0PgorCTx2YXJsaXN0ZW50cnk+CisgICAgICAJICA8dGVybT5UaGUgbHVtaW5hbmNlIChZJykgYW5kIGNvbG9yIGRpZmZlcmVuY2UgKENiIGFuZCBDcikgYXJlIG9idGFpbmVkIHdpdGggdGhlCitmb2xsb3dpbmcgPGNvbnN0YW50PlY0TDJfWUNCQ1JfRU5DX0JUMjAyMDwvY29uc3RhbnQ+IGVuY29kaW5nOjwvdGVybT4KKwkgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPlknJm5ic3A7PSZuYnNwOzAuMjYyN1InJm5ic3A7KyZuYnNwOzAuNjc4MEcnJm5ic3A7KyZuYnNwOzAuMDU5M0InPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+Q2ImbmJzcDs9Jm5ic3A7LTAuMTM5NlInJm5ic3A7LSZuYnNwOzAuMzYwNEcnJm5ic3A7KyZuYnNwOzAuNUInPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+Q3ImbmJzcDs9Jm5ic3A7MC41UicmbmJzcDstJm5ic3A7MC40NTk4RycmbmJzcDstJm5ic3A7MC4wNDAyQic8L3BhcmE+CisJICA8L2xpc3RpdGVtPgorCTwvdmFybGlzdGVudHJ5PgorICAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgICA8cGFyYT5ZJyBpcyBjbGFtcGVkIHRvIHRoZSByYW5nZSBbMCZoZWxsaXA7MV0gYW5kIENiIGFuZCBDciBhcmUKK2NsYW1wZWQgdG8gdGhlIHJhbmdlIFstMC41JmhlbGxpcDswLjVdLiBUaGUgWSdDYkNyIHF1YW50aXphdGlvbiBpcyBsaW1pdGVkIHJhbmdlLjwvcGFyYT4KKyAgICAgIDxwYXJhPlRoZXJlIGlzIGFsc28gYW4gYWx0ZXJuYXRlIGNvbnN0YW50IGx1bWluYW5jZSBSJ0cnQicgdG8gWWMnQ2JjQ3JjCisoPGNvbnN0YW50PlY0TDJfWUNCQ1JfRU5DX0JUMjAyMF9DT05TVF9MVU08L2NvbnN0YW50PikgZW5jb2Rpbmc6PC9wYXJhPgorICAgICAgPHZhcmlhYmxlbGlzdD4KKwk8dmFybGlzdGVudHJ5PgorICAgICAgCSAgPHRlcm0+THVtYTo8L3Rlcm0+CisJICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT5ZYycmbmJzcDs9Jm5ic3A7KDAuMjYyN1ImbmJzcDsrJm5ic3A7MC42NzgwRyZuYnNwOysmbmJzcDswLjA1OTNCKSc8L3BhcmE+CisJICA8L2xpc3RpdGVtPgorCTwvdmFybGlzdGVudHJ5PgorICAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgICA8dmFyaWFibGVsaXN0PgorCTx2YXJsaXN0ZW50cnk+CisgICAgICAJICA8dGVybT5CJyZuYnNwOy0mbmJzcDtZYycmbmJzcDsmbGU7Jm5ic3A7MDo8L3Rlcm0+CisJICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT5DYmMmbmJzcDs9Jm5ic3A7KEInJm5ic3A7LSZuYnNwO1ljJykmbmJzcDsvJm5ic3A7MS45NDA0PC9wYXJhPgorCSAgPC9saXN0aXRlbT4KKwk8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDwvdmFyaWFibGVsaXN0PgorICAgICAgPHZhcmlhYmxlbGlzdD4KKwk8dmFybGlzdGVudHJ5PgorICAgICAgCSAgPHRlcm0+QicmbmJzcDstJm5ic3A7WWMnJm5ic3A7Jmd0OyZuYnNwOzA6PC90ZXJtPgorCSAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+Q2JjJm5ic3A7PSZuYnNwOyhCJyZuYnNwOy0mbmJzcDtZYycpJm5ic3A7LyZuYnNwOzEuNTgxNjwvcGFyYT4KKwkgIDwvbGlzdGl0ZW0+CisJPC92YXJsaXN0ZW50cnk+CisgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJpYWJsZWxpc3Q+CisJPHZhcmxpc3RlbnRyeT4KKyAgICAgIAkgIDx0ZXJtPlInJm5ic3A7LSZuYnNwO1ljJyZuYnNwOyZsZTsmbmJzcDswOjwvdGVybT4KKwkgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPkNyYyZuYnNwOz0mbmJzcDsoUicmbmJzcDstJm5ic3A7WScpJm5ic3A7LyZuYnNwOzEuNzE4NDwvcGFyYT4KKwkgIDwvbGlzdGl0ZW0+CisJPC92YXJsaXN0ZW50cnk+CisgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJpYWJsZWxpc3Q+CisJPHZhcmxpc3RlbnRyeT4KKyAgICAgIAkgIDx0ZXJtPlInJm5ic3A7LSZuYnNwO1ljJyZuYnNwOyZndDsmbmJzcDswOjwvdGVybT4KKwkgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPkNyYyZuYnNwOz0mbmJzcDsoUicmbmJzcDstJm5ic3A7WScpJm5ic3A7LyZuYnNwOzAuOTkzNjwvcGFyYT4KKwkgIDwvbGlzdGl0ZW0+CisJPC92YXJsaXN0ZW50cnk+CisgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICAgIDxwYXJhPlljJyBpcyBjbGFtcGVkIHRvIHRoZSByYW5nZSBbMCZoZWxsaXA7MV0gYW5kIENiYyBhbmQgQ3JjIGFyZQorY2xhbXBlZCB0byB0aGUgcmFuZ2UgWy0wLjUmaGVsbGlwOzAuNV0uIFRoZSBZYydDYmNDcmMgcXVhbnRpemF0aW9uIGlzIGxpbWl0ZWQgcmFuZ2UuPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJjb2wtZGNpcDMiPgorICAgICAgPHRpdGxlPkNvbG9yc3BhY2UgRENJLVAzICg8Y29uc3RhbnQ+VjRMMl9DT0xPUlNQQUNFX0RDSV9QMzwvY29uc3RhbnQ+KTwvdGl0bGU+CisgICAgICA8cGFyYT5UaGUgPHhyZWYgbGlua2VuZD0ic21wdGU0MzEiIC8+IHN0YW5kYXJkIGRlZmluZXMgdGhlIGNvbG9yc3BhY2UgdXNlZCBieSBjaW5lbWEKK3Byb2plY3RvcnMgdGhhdCB1c2UgdGhlIERDSS1QMyBjb2xvcnNwYWNlLgorVGhlIGRlZmF1bHQgdHJhbnNmZXIgZnVuY3Rpb24gaXMgPGNvbnN0YW50PlY0TDJfWEZFUl9GVU5DX0RDSV9QMzwvY29uc3RhbnQ+LgorVGhlIGRlZmF1bHQgWSdDYkNyIGVuY29kaW5nIGlzIDxjb25zdGFudD5WNEwyX1lDQkNSX0VOQ183MDk8L2NvbnN0YW50Pi4gTm90ZSB0aGF0IHRoaXMKK2NvbG9yc3BhY2UgZG9lcyBub3Qgc3BlY2lmeSBhIFknQ2JDciBlbmNvZGluZyBzaW5jZSBpdCBpcyBub3QgbWVhbnQgdG8gYmUgZW5jb2RlZAordG8gWSdDYkNyLiBTbyB0aGlzIGRlZmF1bHQgWSdDYkNyIGVuY29kaW5nIHdhcyBwaWNrZWQgYmVjYXVzZSBpdCBpcyB0aGUgSERUVgorZW5jb2RpbmcuIFRoZSBkZWZhdWx0IFknQ2JDciBxdWFudGl6YXRpb24gaXMgbGltaXRlZCByYW5nZS4gVGhlIGNocm9tYXRpY2l0aWVzIG9mCit0aGUgcHJpbWFyeSBjb2xvcnMgYW5kIHRoZSB3aGl0ZSByZWZlcmVuY2UgYXJlOjwvcGFyYT4KKyAgICAgIDx0YWJsZSBmcmFtZT0ibm9uZSI+CisgICAgICAgIDx0aXRsZT5EQ0ktUDMgQ2hyb21hdGljaXRpZXM8L3RpdGxlPgorICAgICAgICA8dGdyb3VwIGNvbHM9IjMiIGFsaWduPSJsZWZ0Ij4KKyAgICAgICAgICAmY3Mtc3RyOworICAgIAk8dGhlYWQ+CisgICAgCSAgPHJvdz4KKyAgICAJICAgIDxlbnRyeT5Db2xvcjwvZW50cnk+CisgICAgCSAgICA8ZW50cnk+eDwvZW50cnk+CisgICAgCSAgICA8ZW50cnk+eTwvZW50cnk+CisgICAgCSAgPC9yb3c+CisgICAgCTwvdGhlYWQ+CisgICAgICAgICAgPHRib2R5IHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgIDxlbnRyeT5SZWQ8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC42ODAwPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuMzIwMDwvZW50cnk+CisgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgIDxlbnRyeT5HcmVlbjwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjI2NTA8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC42OTAwPC9lbnRyeT4KKyAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgPGVudHJ5PkJsdWU8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC4xNTAwPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuMDYwMDwvZW50cnk+CisgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgIDxlbnRyeT5XaGl0ZSBSZWZlcmVuY2U8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC4zMTQwPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuMzUxMDwvZW50cnk+CisgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICA8L3Rib2R5PgorICAgICAgICA8L3Rncm91cD4KKyAgICAgIDwvdGFibGU+CisgICAgICA8dmFyaWFibGVsaXN0PgorCTx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHRlcm0+VHJhbnNmZXIgZnVuY3Rpb246PC90ZXJtPgorCSAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+TCcgPSBMPHN1cGVyc2NyaXB0PjEvMi42PC9zdXBlcnNjcmlwdD48L3BhcmE+CisJICA8L2xpc3RpdGVtPgorCTwvdmFybGlzdGVudHJ5PgorCTx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHRlcm0+SW52ZXJzZSBUcmFuc2ZlciBmdW5jdGlvbjo8L3Rlcm0+CisJICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT5MID0gTCc8c3VwZXJzY3JpcHQ+Mi42PC9zdXBlcnNjcmlwdD48L3BhcmE+CisJICA8L2xpc3RpdGVtPgorCTwvdmFybGlzdGVudHJ5PgorICAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgICA8cGFyYT5ZJ0NiQ3IgZW5jb2RpbmcgaXMgbm90IHNwZWNpZmllZC4gVjRMMiBkZWZhdWx0cyB0byBSZWMuIDcwOS48L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImNvbC1zbXB0ZS0yNDBtIj4KKyAgICAgIDx0aXRsZT5Db2xvcnNwYWNlIFNNUFRFIDI0ME0gKDxjb25zdGFudD5WNEwyX0NPTE9SU1BBQ0VfU01QVEUyNDBNPC9jb25zdGFudD4pPC90aXRsZT4KKyAgICAgIDxwYXJhPlRoZSA8eHJlZiBsaW5rZW5kPSJzbXB0ZTI0MG0iIC8+IHN0YW5kYXJkIHdhcyBhbiBpbnRlcmltIHN0YW5kYXJkIHVzZWQgZHVyaW5nCit0aGUgZWFybHkgZGF5cyBvZiBIRFRWICgxOTg4LTE5OTgpLiAgSXQgaGFzIGJlZW4gc3VwZXJzZWRlZCBieSBSZWMuIDcwOS4KK1RoZSBkZWZhdWx0IHRyYW5zZmVyIGZ1bmN0aW9uIGlzIDxjb25zdGFudD5WNEwyX1hGRVJfRlVOQ19TTVBURTI0ME08L2NvbnN0YW50Pi4KK1RoZSBkZWZhdWx0IFknQ2JDciBlbmNvZGluZyBpcyA8Y29uc3RhbnQ+VjRMMl9ZQ0JDUl9FTkNfU01QVEUyNDBNPC9jb25zdGFudD4uCitUaGUgZGVmYXVsdCBZJ0NiQ3IgcXVhbnRpemF0aW9uIGlzIGxpbWl0ZWQgcmFuZ2UuIFRoZSBjaHJvbWF0aWNpdGllcyBvZiB0aGUgcHJpbWFyeSBjb2xvcnMgYW5kIHRoZQord2hpdGUgcmVmZXJlbmNlIGFyZTo8L3BhcmE+CisgICAgICA8dGFibGUgZnJhbWU9Im5vbmUiPgorICAgICAgICA8dGl0bGU+U01QVEUgMjQwTSBDaHJvbWF0aWNpdGllczwvdGl0bGU+CisgICAgICAgIDx0Z3JvdXAgY29scz0iMyIgYWxpZ249ImxlZnQiPgorICAgICAgICAgICZjcy1zdHI7CisgICAgCTx0aGVhZD4KKyAgICAJICA8cm93PgorICAgIAkgICAgPGVudHJ5PkNvbG9yPC9lbnRyeT4KKyAgICAJICAgIDxlbnRyeT54PC9lbnRyeT4KKyAgICAJICAgIDxlbnRyeT55PC9lbnRyeT4KKyAgICAJICA8L3Jvdz4KKyAgICAJPC90aGVhZD4KKyAgICAgICAgICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgPGVudHJ5PlJlZDwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjYzMDwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjM0MDwvZW50cnk+CisgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgIDxlbnRyeT5HcmVlbjwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjMxMDwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjU5NTwvZW50cnk+CisgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgIDxlbnRyeT5CbHVlPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuMTU1PC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuMDcwPC9lbnRyeT4KKyAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgPGVudHJ5PldoaXRlIFJlZmVyZW5jZSAoRDY1KTwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjMxMjc8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC4zMjkwPC9lbnRyeT4KKyAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgIDwvdGdyb3VwPgorICAgICAgPC90YWJsZT4KKyAgICAgIDxwYXJhPlRoZXNlIGNocm9tYXRpY2l0aWVzIGFyZSBpZGVudGljYWwgdG8gdGhlIFNNUFRFIDE3ME0gY29sb3JzcGFjZS48L3BhcmE+CisgICAgICA8dmFyaWFibGVsaXN0PgorCTx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHRlcm0+VHJhbnNmZXIgZnVuY3Rpb246PC90ZXJtPgorCSAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+TCcgPSA0TCZuYnNwO2ZvciZuYnNwOzAmbmJzcDsmbGU7Jm5ic3A7TCZuYnNwOyZsdDsmbmJzcDswLjAyMjg8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT5MJyA9IDEuMTExNUw8c3VwZXJzY3JpcHQ+MC40NTwvc3VwZXJzY3JpcHQ+Jm5ic3A7LSZuYnNwOzAuMTExNSZuYnNwO2ZvciZuYnNwOzAuMDIyOCZuYnNwOyZsZTsmbmJzcDtMJm5ic3A7JmxlOyZuYnNwOzE8L3BhcmE+CisJICA8L2xpc3RpdGVtPgorCTwvdmFybGlzdGVudHJ5PgorCTx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHRlcm0+SW52ZXJzZSBUcmFuc2ZlciBmdW5jdGlvbjo8L3Rlcm0+CisJICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT5MID0gTCcmbmJzcDsvJm5ic3A7NCZuYnNwO2ZvciZuYnNwOzAmbmJzcDsmbGU7Jm5ic3A7TCcmbmJzcDsmbHQ7Jm5ic3A7MC4wOTEzPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+TCA9ICgoTCcmbmJzcDsrJm5ic3A7MC4xMTE1KSZuYnNwOy8mbmJzcDsxLjExMTUpPHN1cGVyc2NyaXB0PjEvMC40NTwvc3VwZXJzY3JpcHQ+Jm5ic3A7Zm9yJm5ic3A7TCcmbmJzcDsmZ2U7Jm5ic3A7MC4wOTEzPC9wYXJhPgorCSAgPC9saXN0aXRlbT4KKwk8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDwvdmFyaWFibGVsaXN0PgorICAgICAgPHZhcmlhYmxlbGlzdD4KKwk8dmFybGlzdGVudHJ5PgorICAgICAgCSAgPHRlcm0+VGhlIGx1bWluYW5jZSAoWScpIGFuZCBjb2xvciBkaWZmZXJlbmNlIChDYiBhbmQgQ3IpIGFyZSBvYnRhaW5lZCB3aXRoIHRoZQorZm9sbG93aW5nIDxjb25zdGFudD5WNEwyX1lDQkNSX0VOQ19TTVBURTI0ME08L2NvbnN0YW50PiBlbmNvZGluZzo8L3Rlcm0+CisJICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT5ZJyZuYnNwOz0mbmJzcDswLjIxMjJSJyZuYnNwOysmbmJzcDswLjcwMTNHJyZuYnNwOysmbmJzcDswLjA4NjVCJzwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPkNiJm5ic3A7PSZuYnNwOy0wLjExNjFSJyZuYnNwOy0mbmJzcDswLjM4MzlHJyZuYnNwOysmbmJzcDswLjVCJzwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPkNyJm5ic3A7PSZuYnNwOzAuNVInJm5ic3A7LSZuYnNwOzAuNDQ1MUcnJm5ic3A7LSZuYnNwOzAuMDU0OUInPC9wYXJhPgorCSAgPC9saXN0aXRlbT4KKwk8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDwvdmFyaWFibGVsaXN0PgorICAgICAgPHBhcmE+WWMnIGlzIGNsYW1wZWQgdG8gdGhlIHJhbmdlIFswJmhlbGxpcDsxXSBhbmQgQ2JjIGFuZCBDcmMgYXJlCitjbGFtcGVkIHRvIHRoZSByYW5nZSBbLTAuNSZoZWxsaXA7MC41XS4gVGhlIFknQ2JDciBxdWFudGl6YXRpb24gaXMgbGltaXRlZCByYW5nZS48L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImNvbC1zeXNtIj4KKyAgICAgIDx0aXRsZT5Db2xvcnNwYWNlIE5UU0MgMTk1MyAoPGNvbnN0YW50PlY0TDJfQ09MT1JTUEFDRV80NzBfU1lTVEVNX008L2NvbnN0YW50Pik8L3RpdGxlPgorICAgICAgPHBhcmE+VGhpcyBzdGFuZGFyZCBkZWZpbmVzIHRoZSBjb2xvcnNwYWNlIHVzZWQgYnkgTlRTQyBpbiAxOTUzLiBJbiBwcmFjdGljZSB0aGlzCitjb2xvcnNwYWNlIGlzIG9ic29sZXRlIGFuZCBTTVBURSAxNzBNIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCitUaGUgZGVmYXVsdCB0cmFuc2ZlciBmdW5jdGlvbiBpcyA8Y29uc3RhbnQ+VjRMMl9YRkVSX0ZVTkNfNzA5PC9jb25zdGFudD4uCitUaGUgZGVmYXVsdCBZJ0NiQ3IgZW5jb2RpbmcgaXMgPGNvbnN0YW50PlY0TDJfWUNCQ1JfRU5DXzYwMTwvY29uc3RhbnQ+LgorVGhlIGRlZmF1bHQgWSdDYkNyIHF1YW50aXphdGlvbiBpcyBsaW1pdGVkIHJhbmdlLgorVGhlIGNocm9tYXRpY2l0aWVzIG9mIHRoZSBwcmltYXJ5IGNvbG9ycyBhbmQgdGhlIHdoaXRlIHJlZmVyZW5jZSBhcmU6PC9wYXJhPgorICAgICAgPHRhYmxlIGZyYW1lPSJub25lIj4KKyAgICAgICAgPHRpdGxlPk5UU0MgMTk1MyBDaHJvbWF0aWNpdGllczwvdGl0bGU+CisgICAgICAgIDx0Z3JvdXAgY29scz0iMyIgYWxpZ249ImxlZnQiPgorICAgICAgICAgICZjcy1zdHI7CisgICAgCTx0aGVhZD4KKyAgICAJICA8cm93PgorICAgIAkgICAgPGVudHJ5PkNvbG9yPC9lbnRyeT4KKyAgICAJICAgIDxlbnRyeT54PC9lbnRyeT4KKyAgICAJICAgIDxlbnRyeT55PC9lbnRyeT4KKyAgICAJICA8L3Jvdz4KKyAgICAJPC90aGVhZD4KKyAgICAgICAgICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgPGVudHJ5PlJlZDwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjY3PC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuMzM8L2VudHJ5PgorICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgICA8cm93PgorICAgICAgICAgICAgICA8ZW50cnk+R3JlZW48L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC4yMTwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjcxPC9lbnRyeT4KKyAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgPGVudHJ5PkJsdWU8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC4xNDwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjA4PC9lbnRyeT4KKyAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgPGVudHJ5PldoaXRlIFJlZmVyZW5jZSAoQyk8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC4zMTA8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC4zMTY8L2VudHJ5PgorICAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgPC90Ym9keT4KKyAgICAgICAgPC90Z3JvdXA+CisgICAgICA8L3RhYmxlPgorICAgICAgPHBhcmE+Tm90ZSB0aGF0IHRoaXMgY29sb3JzcGFjZSB1c2VzIElsbHVtaW5hbnQgQyBpbnN0ZWFkIG9mIEQ2NSBhcyB0aGUKK3doaXRlIHJlZmVyZW5jZS4gVG8gY29ycmVjdGx5IGNvbnZlcnQgYW4gaW1hZ2UgaW4gdGhpcyBjb2xvcnNwYWNlIHRvIGFub3RoZXIKK3RoYXQgdXNlcyBENjUgeW91IG5lZWQgdG8gYXBwbHkgYSBjaHJvbWF0aWMgYWRhcHRhdGlvbiBhbGdvcml0aG0gc3VjaCBhcyB0aGUKK0JyYWRmb3JkIG1ldGhvZC48L3BhcmE+CisgICAgICA8dmFyaWFibGVsaXN0PgorCTx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHRlcm0+VGhlIHRyYW5zZmVyIGZ1bmN0aW9uIHdhcyBuZXZlciBwcm9wZXJseSBkZWZpbmVkIGZvciBOVFNDIDE5NTMuIFRoZQorUmVjLiA3MDkgdHJhbnNmZXIgZnVuY3Rpb24gaXMgcmVjb21tZW5kZWQgaW4gdGhlIGxpdGVyYXR1cmU6PC90ZXJtPgorCSAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+TCcgPSA0LjVMJm5ic3A7Zm9yJm5ic3A7MCZuYnNwOyZsZTsmbmJzcDtMJm5ic3A7Jmx0OyZuYnNwOzAuMDE4PC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+TCcgPSAxLjA5OUw8c3VwZXJzY3JpcHQ+MC40NTwvc3VwZXJzY3JpcHQ+Jm5ic3A7LSZuYnNwOzAuMDk5Jm5ic3A7Zm9yJm5ic3A7MC4wMTgmbmJzcDsmbGU7Jm5ic3A7TCZuYnNwOyZsZTsmbmJzcDsxPC9wYXJhPgorCSAgPC9saXN0aXRlbT4KKwk8L3Zhcmxpc3RlbnRyeT4KKwk8dmFybGlzdGVudHJ5PgorICAgICAgICAgIDx0ZXJtPkludmVyc2UgVHJhbnNmZXIgZnVuY3Rpb246PC90ZXJtPgorCSAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+TCA9IEwnJm5ic3A7LyZuYnNwOzQuNSZuYnNwO2ZvciZuYnNwO0wnJm5ic3A7Jmx0OyZuYnNwOzAuMDgxPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+TCA9ICgoTCcmbmJzcDsrJm5ic3A7MC4wOTkpJm5ic3A7LyZuYnNwOzEuMDk5KTxzdXBlcnNjcmlwdD4xLzAuNDU8L3N1cGVyc2NyaXB0PiZuYnNwO2ZvciZuYnNwO0wnJm5ic3A7JmdlOyZuYnNwOzAuMDgxPC9wYXJhPgorCSAgPC9saXN0aXRlbT4KKwk8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDwvdmFyaWFibGVsaXN0PgorICAgICAgPHZhcmlhYmxlbGlzdD4KKwk8dmFybGlzdGVudHJ5PgorICAgICAgCSAgPHRlcm0+VGhlIGx1bWluYW5jZSAoWScpIGFuZCBjb2xvciBkaWZmZXJlbmNlIChDYiBhbmQgQ3IpIGFyZSBvYnRhaW5lZCB3aXRoIHRoZQorZm9sbG93aW5nIDxjb25zdGFudD5WNEwyX1lDQkNSX0VOQ182MDE8L2NvbnN0YW50PiBlbmNvZGluZzo8L3Rlcm0+CisJICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT5ZJyZuYnNwOz0mbmJzcDswLjI5OVInJm5ic3A7KyZuYnNwOzAuNTg3RycmbmJzcDsrJm5ic3A7MC4xMTRCJzwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPkNiJm5ic3A7PSZuYnNwOy0wLjE2OVInJm5ic3A7LSZuYnNwOzAuMzMxRycmbmJzcDsrJm5ic3A7MC41Qic8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT5DciZuYnNwOz0mbmJzcDswLjVSJyZuYnNwOy0mbmJzcDswLjQxOUcnJm5ic3A7LSZuYnNwOzAuMDgxQic8L3BhcmE+CisJICA8L2xpc3RpdGVtPgorCTwvdmFybGlzdGVudHJ5PgorICAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgICA8cGFyYT5ZJyBpcyBjbGFtcGVkIHRvIHRoZSByYW5nZSBbMCZoZWxsaXA7MV0gYW5kIENiIGFuZCBDciBhcmUKK2NsYW1wZWQgdG8gdGhlIHJhbmdlIFstMC41JmhlbGxpcDswLjVdLiBUaGUgWSdDYkNyIHF1YW50aXphdGlvbiBpcyBsaW1pdGVkIHJhbmdlLgorVGhpcyB0cmFuc2Zvcm0gaXMgaWRlbnRpY2FsIHRvIG9uZSBkZWZpbmVkIGluIFNNUFRFIDE3ME0vQlQuNjAxLjwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iY29sLXN5c2JnIj4KKyAgICAgIDx0aXRsZT5Db2xvcnNwYWNlIEVCVSBUZWNoLiAzMjEzICg8Y29uc3RhbnQ+VjRMMl9DT0xPUlNQQUNFXzQ3MF9TWVNURU1fQkc8L2NvbnN0YW50Pik8L3RpdGxlPgorICAgICAgPHBhcmE+VGhlIDx4cmVmIGxpbmtlbmQ9InRlY2gzMjEzIiAvPiBzdGFuZGFyZCBkZWZpbmVzIHRoZSBjb2xvcnNwYWNlIHVzZWQgYnkgUEFML1NFQ0FNIGluIDE5NzUuIEluIHByYWN0aWNlIHRoaXMKK2NvbG9yc3BhY2UgaXMgb2Jzb2xldGUgYW5kIFNNUFRFIDE3ME0gc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KK1RoZSBkZWZhdWx0IHRyYW5zZmVyIGZ1bmN0aW9uIGlzIDxjb25zdGFudD5WNEwyX1hGRVJfRlVOQ183MDk8L2NvbnN0YW50Pi4KK1RoZSBkZWZhdWx0IFknQ2JDciBlbmNvZGluZyBpcyA8Y29uc3RhbnQ+VjRMMl9ZQ0JDUl9FTkNfNjAxPC9jb25zdGFudD4uCitUaGUgZGVmYXVsdCBZJ0NiQ3IgcXVhbnRpemF0aW9uIGlzIGxpbWl0ZWQgcmFuZ2UuCitUaGUgY2hyb21hdGljaXRpZXMgb2YgdGhlIHByaW1hcnkgY29sb3JzIGFuZCB0aGUgd2hpdGUgcmVmZXJlbmNlIGFyZTo8L3BhcmE+CisgICAgICA8dGFibGUgZnJhbWU9Im5vbmUiPgorICAgICAgICA8dGl0bGU+RUJVIFRlY2guIDMyMTMgQ2hyb21hdGljaXRpZXM8L3RpdGxlPgorICAgICAgICA8dGdyb3VwIGNvbHM9IjMiIGFsaWduPSJsZWZ0Ij4KKyAgICAgICAgICAmY3Mtc3RyOworICAgIAk8dGhlYWQ+CisgICAgCSAgPHJvdz4KKyAgICAJICAgIDxlbnRyeT5Db2xvcjwvZW50cnk+CisgICAgCSAgICA8ZW50cnk+eDwvZW50cnk+CisgICAgCSAgICA8ZW50cnk+eTwvZW50cnk+CisgICAgCSAgPC9yb3c+CisgICAgCTwvdGhlYWQ+CisgICAgICAgICAgPHRib2R5IHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgIDxlbnRyeT5SZWQ8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC42NDwvZW50cnk+CisgICAgICAgICAgICAgIDxlbnRyeT4wLjMzPC9lbnRyeT4KKyAgICAgICAgICAgIDwvcm93PgorICAgICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgICAgPGVudHJ5PkdyZWVuPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuMjk8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC42MDwvZW50cnk+CisgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgIDxlbnRyeT5CbHVlPC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuMTU8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC4wNjwvZW50cnk+CisgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICAgIDxlbnRyeT5XaGl0ZSBSZWZlcmVuY2UgKEQ2NSk8L2VudHJ5PgorICAgICAgICAgICAgICA8ZW50cnk+MC4zMTI3PC9lbnRyeT4KKyAgICAgICAgICAgICAgPGVudHJ5PjAuMzI5MDwvZW50cnk+CisgICAgICAgICAgICA8L3Jvdz4KKyAgICAgICAgICA8L3Rib2R5PgorICAgICAgICA8L3Rncm91cD4KKyAgICAgIDwvdGFibGU+CisgICAgICA8dmFyaWFibGVsaXN0PgorCTx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHRlcm0+VGhlIHRyYW5zZmVyIGZ1bmN0aW9uIHdhcyBuZXZlciBwcm9wZXJseSBkZWZpbmVkIGZvciB0aGlzIGNvbG9yc3BhY2UuCitUaGUgUmVjLiA3MDkgdHJhbnNmZXIgZnVuY3Rpb24gaXMgcmVjb21tZW5kZWQgaW4gdGhlIGxpdGVyYXR1cmU6PC90ZXJtPgorCSAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+TCcgPSA0LjVMJm5ic3A7Zm9yJm5ic3A7MCZuYnNwOyZsZTsmbmJzcDtMJm5ic3A7Jmx0OyZuYnNwOzAuMDE4PC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+TCcgPSAxLjA5OUw8c3VwZXJzY3JpcHQ+MC40NTwvc3VwZXJzY3JpcHQ+Jm5ic3A7LSZuYnNwOzAuMDk5Jm5ic3A7Zm9yJm5ic3A7MC4wMTgmbmJzcDsmbGU7Jm5ic3A7TCZuYnNwOyZsZTsmbmJzcDsxPC9wYXJhPgorCSAgPC9saXN0aXRlbT4KKwk8L3Zhcmxpc3RlbnRyeT4KKwk8dmFybGlzdGVudHJ5PgorICAgICAgICAgIDx0ZXJtPkludmVyc2UgVHJhbnNmZXIgZnVuY3Rpb246PC90ZXJtPgorCSAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+TCA9IEwnJm5ic3A7LyZuYnNwOzQuNSZuYnNwO2ZvciZuYnNwO0wnJm5ic3A7Jmx0OyZuYnNwOzAuMDgxPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+TCA9ICgoTCcmbmJzcDsrJm5ic3A7MC4wOTkpJm5ic3A7LyZuYnNwOzEuMDk5KTxzdXBlcnNjcmlwdD4xLzAuNDU8L3N1cGVyc2NyaXB0PiZuYnNwO2ZvciZuYnNwO0wnJm5ic3A7JmdlOyZuYnNwOzAuMDgxPC9wYXJhPgorCSAgPC9saXN0aXRlbT4KKwk8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDwvdmFyaWFibGVsaXN0PgorICAgICAgPHZhcmlhYmxlbGlzdD4KKwk8dmFybGlzdGVudHJ5PgorICAgICAgCSAgPHRlcm0+VGhlIGx1bWluYW5jZSAoWScpIGFuZCBjb2xvciBkaWZmZXJlbmNlIChDYiBhbmQgQ3IpIGFyZSBvYnRhaW5lZCB3aXRoIHRoZQorZm9sbG93aW5nIDxjb25zdGFudD5WNEwyX1lDQkNSX0VOQ182MDE8L2NvbnN0YW50PiBlbmNvZGluZzo8L3Rlcm0+CisJICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT5ZJyZuYnNwOz0mbmJzcDswLjI5OVInJm5ic3A7KyZuYnNwOzAuNTg3RycmbmJzcDsrJm5ic3A7MC4xMTRCJzwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPkNiJm5ic3A7PSZuYnNwOy0wLjE2OVInJm5ic3A7LSZuYnNwOzAuMzMxRycmbmJzcDsrJm5ic3A7MC41Qic8L3BhcmE+CisgICAgICAgICAgICA8cGFyYT5DciZuYnNwOz0mbmJzcDswLjVSJyZuYnNwOy0mbmJzcDswLjQxOUcnJm5ic3A7LSZuYnNwOzAuMDgxQic8L3BhcmE+CisJICA8L2xpc3RpdGVtPgorCTwvdmFybGlzdGVudHJ5PgorICAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgICA8cGFyYT5ZJyBpcyBjbGFtcGVkIHRvIHRoZSByYW5nZSBbMCZoZWxsaXA7MV0gYW5kIENiIGFuZCBDciBhcmUKK2NsYW1wZWQgdG8gdGhlIHJhbmdlIFstMC41JmhlbGxpcDswLjVdLiBUaGUgWSdDYkNyIHF1YW50aXphdGlvbiBpcyBsaW1pdGVkIHJhbmdlLgorVGhpcyB0cmFuc2Zvcm0gaXMgaWRlbnRpY2FsIHRvIG9uZSBkZWZpbmVkIGluIFNNUFRFIDE3ME0vQlQuNjAxLjwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iY29sLWpwZWciPgorICAgICAgPHRpdGxlPkNvbG9yc3BhY2UgSlBFRyAoPGNvbnN0YW50PlY0TDJfQ09MT1JTUEFDRV9KUEVHPC9jb25zdGFudD4pPC90aXRsZT4KKyAgICAgIDxwYXJhPlRoaXMgY29sb3JzcGFjZSBkZWZpbmVzIHRoZSBjb2xvcnNwYWNlIHVzZWQgYnkgbW9zdCAoTW90aW9uLSlKUEVHIGZvcm1hdHMuIFRoZSBjaHJvbWF0aWNpdGllcworb2YgdGhlIHByaW1hcnkgY29sb3JzIGFuZCB0aGUgd2hpdGUgcmVmZXJlbmNlIGFyZSBpZGVudGljYWwgdG8gc1JHQi4gVGhlIHRyYW5zZmVyCitmdW5jdGlvbiB1c2UgaXMgPGNvbnN0YW50PlY0TDJfWEZFUl9GVU5DX1NSR0I8L2NvbnN0YW50Pi4gVGhlIFknQ2JDciBlbmNvZGluZyBpcworPGNvbnN0YW50PlY0TDJfWUNCQ1JfRU5DXzYwMTwvY29uc3RhbnQ+IHdpdGggZnVsbCByYW5nZSBxdWFudGl6YXRpb24gd2hlcmUKK1knIGlzIHNjYWxlZCB0byBbMCZoZWxsaXA7MjU1XSBhbmQgQ2IvQ3IgYXJlIHNjYWxlZCB0byBbLTEyOCZoZWxsaXA7MTI4XSBhbmQKK3RoZW4gY2xpcHBlZCB0byBbLTEyOCZoZWxsaXA7MTI3XS48L3BhcmE+CisgICAgICA8cGFyYT5Ob3RlIHRoYXQgdGhlIEpQRUcgc3RhbmRhcmQgZG9lcyBub3QgYWN0dWFsbHkgc3RvcmUgY29sb3JzcGFjZSBpbmZvcm1hdGlvbi4KK1NvIGlmIHNvbWV0aGluZyBvdGhlciB0aGFuIHNSR0IgaXMgdXNlZCwgdGhlbiB0aGUgZHJpdmVyIHdpbGwgaGF2ZSB0byBzZXQgdGhhdCBpbmZvcm1hdGlvbgorZXhwbGljaXRseS4gRWZmZWN0aXZlbHkgPGNvbnN0YW50PlY0TDJfQ09MT1JTUEFDRV9KUEVHPC9jb25zdGFudD4gY2FuIGJlIGNvbnNpZGVyZWQgdG8gYmUKK2FuIGFiYnJldmlhdGlvbiBmb3IgPGNvbnN0YW50PlY0TDJfQ09MT1JTUEFDRV9TUkdCPC9jb25zdGFudD4sIDxjb25zdGFudD5WNEwyX1lDQkNSX0VOQ182MDE8L2NvbnN0YW50PgorYW5kIDxjb25zdGFudD5WNEwyX1FVQU5USVpBVElPTl9GVUxMX1JBTkdFPC9jb25zdGFudD4uPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICA8L3NlY3Rpb24+CisKKyAgPHNlY3Rpb24+CisgICAgPHRpdGxlPkRldGFpbGVkIFRyYW5zZmVyIEZ1bmN0aW9uIERlc2NyaXB0aW9uczwvdGl0bGU+CisgICAgPHNlY3Rpb24gaWQ9InhmLXNtcHRlLTIwODQiPgorICAgICAgPHRpdGxlPlRyYW5zZmVyIEZ1bmN0aW9uIFNNUFRFIDIwODQgKDxjb25zdGFudD5WNEwyX1hGRVJfRlVOQ19TTVBURTIwODQ8L2NvbnN0YW50Pik8L3RpdGxlPgorICAgICAgPHBhcmE+VGhlIDx4cmVmIGxpbmtlbmQ9InNtcHRlMjA4NCIgLz4gc3RhbmRhcmQgZGVmaW5lcyB0aGUgdHJhbnNmZXIgZnVuY3Rpb24gdXNlZCBieQorSGlnaCBEeW5hbWljIFJhbmdlIGNvbnRlbnQuPC9wYXJhPgorICAgICAgPHZhcmlhYmxlbGlzdD4KKwk8dmFybGlzdGVudHJ5PgorICAgICAgICAgIDx0ZXJtPkNvbnN0YW50czo8L3Rlcm0+CisJICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT5tMSA9ICgyNjEwIC8gNDA5NikgLyA0PC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+bTIgPSAoMjUyMyAvIDQwOTYpICogMTI4PC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+YzEgPSAzNDI0IC8gNDA5NjwvcGFyYT4KKyAgICAgICAgICAgIDxwYXJhPmMyID0gKDI0MTMgLyA0MDk2KSAqIDMyPC9wYXJhPgorICAgICAgICAgICAgPHBhcmE+YzMgPSAoMjM5MiAvIDQwOTYpICogMzI8L3BhcmE+CisJICA8L2xpc3RpdGVtPgorCTwvdmFybGlzdGVudHJ5PgorCTx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHRlcm0+VHJhbnNmZXIgZnVuY3Rpb246PC90ZXJtPgorCSAgPGxpc3RpdGVtPgorICAgICAgICAgICAgPHBhcmE+TCcgPSAoKGMxICsgYzIgKiBMPHN1cGVyc2NyaXB0Pm0xPC9zdXBlcnNjcmlwdD4pIC8gKDEgKyBjMyAqIEw8c3VwZXJzY3JpcHQ+bTE8L3N1cGVyc2NyaXB0PikpPHN1cGVyc2NyaXB0Pm0yPC9zdXBlcnNjcmlwdD48L3BhcmE+CisJICA8L2xpc3RpdGVtPgorCTwvdmFybGlzdGVudHJ5PgorICAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgICA8dmFyaWFibGVsaXN0PgorCTx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHRlcm0+SW52ZXJzZSBUcmFuc2ZlciBmdW5jdGlvbjo8L3Rlcm0+CisJICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT5MID0gKG1heChMJzxzdXBlcnNjcmlwdD4xL20yPC9zdXBlcnNjcmlwdD4gLSBjMSwgMCkgLyAoYzIgLSBjMyAqIEwnPHN1cGVyc2NyaXB0PjEvbTI8L3N1cGVyc2NyaXB0PikpPHN1cGVyc2NyaXB0PjEvbTE8L3N1cGVyc2NyaXB0PjwvcGFyYT4KKwkgIDwvbGlzdGl0ZW0+CisJPC92YXJsaXN0ZW50cnk+CisgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICA8L3NlY3Rpb24+CisgIDwvc2VjdGlvbj4KKworICA8c2VjdGlvbiBpZD0icGl4Zm10LWluZGV4ZWQiPgorICAgIDx0aXRsZT5JbmRleGVkIEZvcm1hdDwvdGl0bGU+CisKKyAgICA8cGFyYT5JbiB0aGlzIGZvcm1hdCBlYWNoIHBpeGVsIGlzIHJlcHJlc2VudGVkIGJ5IGFuIDggYml0IGluZGV4CitpbnRvIGEgMjU2IGVudHJ5IEFSR0IgcGFsZXR0ZS4gSXQgaXMgaW50ZW5kZWQgZm9yIDxsaW5rCitsaW5rZW5kPSJvc2QiPlZpZGVvIE91dHB1dCBPdmVybGF5czwvbGluaz4gb25seS4gVGhlcmUgYXJlIG5vIGlvY3RscyB0bworYWNjZXNzIHRoZSBwYWxldHRlLCB0aGlzIG11c3QgYmUgZG9uZSB3aXRoIGlvY3RscyBvZiB0aGUgTGludXggZnJhbWVidWZmZXIgQVBJLjwvcGFyYT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjAiIGZyYW1lPSJub25lIj4KKyAgICAgIDx0aXRsZT5JbmRleGVkIEltYWdlIEZvcm1hdDwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjM3IiBhbGlnbj0iY2VudGVyIj4KKwk8Y29sc3BlYyBjb2xuYW1lPSJpZCIgYWxpZ249ImxlZnQiIC8+CisJPGNvbHNwZWMgY29sbmFtZT0iZm91cmNjIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImJpdCIgLz4KKworCTxjb2xzcGVjIGNvbG51bT0iNCIgY29sbmFtZT0iYjA3IiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iNSIgY29sbmFtZT0iYjA2IiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iNiIgY29sbmFtZT0iYjA1IiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iNyIgY29sbmFtZT0iYjA0IiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iOCIgY29sbmFtZT0iYjAzIiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iOSIgY29sbmFtZT0iYjAyIiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iMTAiIGNvbG5hbWU9ImIwMSIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjExIiBjb2xuYW1lPSJiMDAiIGFsaWduPSJjZW50ZXIiIC8+CisKKwk8c3BhbnNwZWMgbmFtZXN0PSJiMDciIG5hbWVlbmQ9ImIwMCIgc3Bhbm5hbWU9ImIwIiAvPgorCTxzcGFuc3BlYyBuYW1lc3Q9ImIxNyIgbmFtZWVuZD0iYjEwIiBzcGFubmFtZT0iYjEiIC8+CisJPHNwYW5zcGVjIG5hbWVzdD0iYjI3IiBuYW1lZW5kPSJiMjAiIHNwYW5uYW1lPSJiMiIgLz4KKwk8c3BhbnNwZWMgbmFtZXN0PSJiMzciIG5hbWVlbmQ9ImIzMCIgc3Bhbm5hbWU9ImIzIiAvPgorCTx0aGVhZD4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5JZGVudGlmaWVyPC9lbnRyeT4KKwkgICAgPGVudHJ5PkNvZGU8L2VudHJ5PgorCSAgICA8ZW50cnk+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJiMCI+Qnl0ZSZuYnNwOzA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+Jm5ic3A7PC9lbnRyeT4KKwkgICAgPGVudHJ5PiZuYnNwOzwvZW50cnk+CisJICAgIDxlbnRyeT5CaXQ8L2VudHJ5PgorCSAgICA8ZW50cnk+NzwvZW50cnk+CisJICAgIDxlbnRyeT42PC9lbnRyeT4KKwkgICAgPGVudHJ5PjU8L2VudHJ5PgorCSAgICA8ZW50cnk+NDwvZW50cnk+CisJICAgIDxlbnRyeT4zPC9lbnRyeT4KKwkgICAgPGVudHJ5PjI8L2VudHJ5PgorCSAgICA8ZW50cnk+MTwvZW50cnk+CisJICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGhlYWQ+CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1QQUw4Ij4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfUEFMODwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidQQUw4JzwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+aTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5pPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+aTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5pPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pmk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8ZW50cnk+aTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDxlbnRyeT5pPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorICA8L3NlY3Rpb24+CisKKyAgPHNlY3Rpb24gaWQ9InBpeGZtdC1yZ2IiPgorICAgIDx0aXRsZT5SR0IgRm9ybWF0czwvdGl0bGU+CisKKyAgICAmc3ViLXBhY2tlZC1yZ2I7CisgICAgJnN1Yi1zYmdncjg7CisgICAgJnN1Yi1zZ2JyZzg7CisgICAgJnN1Yi1zZ3JiZzg7CisgICAgJnN1Yi1zcmdnYjg7CisgICAgJnN1Yi1zYmdncjE2OworICAgICZzdWItc3JnZ2IxMDsKKyAgICAmc3ViLXNyZ2diMTBwOworICAgICZzdWItc3JnZ2IxMGFsYXc4OworICAgICZzdWItc3JnZ2IxMGRwY204OworICAgICZzdWItc3JnZ2IxMjsKKyAgPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uIGlkPSJ5dXYtZm9ybWF0cyI+CisgICAgPHRpdGxlPllVViBGb3JtYXRzPC90aXRsZT4KKworICAgIDxwYXJhPllVViBpcyB0aGUgZm9ybWF0IG5hdGl2ZSB0byBUViBicm9hZGNhc3QgYW5kIGNvbXBvc2l0ZSB2aWRlbworc2lnbmFscy4gSXQgc2VwYXJhdGVzIHRoZSBicmlnaHRuZXNzIGluZm9ybWF0aW9uIChZKSBmcm9tIHRoZSBjb2xvcgoraW5mb3JtYXRpb24gKFUgYW5kIFYgb3IgQ2IgYW5kIENyKS4gVGhlIGNvbG9yIGluZm9ybWF0aW9uIGNvbnNpc3RzIG9mCityZWQgYW5kIGJsdWUgPGVtcGhhc2lzPmNvbG9yIGRpZmZlcmVuY2U8L2VtcGhhc2lzPiBzaWduYWxzLCB0aGlzIHdheQordGhlIGdyZWVuIGNvbXBvbmVudCBjYW4gYmUgcmVjb25zdHJ1Y3RlZCBieSBzdWJ0cmFjdGluZyBmcm9tIHRoZQorYnJpZ2h0bmVzcyBjb21wb25lbnQuIFNlZSA8eHJlZiBsaW5rZW5kPSJjb2xvcnNwYWNlcyIgLz4gZm9yIGNvbnZlcnNpb24KK2V4YW1wbGVzLiBZVVYgd2FzIGNob3NlbiBiZWNhdXNlIGVhcmx5IHRlbGV2aXNpb24gd291bGQgb25seSB0cmFuc21pdAorYnJpZ2h0bmVzcyBpbmZvcm1hdGlvbi4gVG8gYWRkIGNvbG9yIGluIGEgd2F5IGNvbXBhdGlibGUgd2l0aCBleGlzdGluZworcmVjZWl2ZXJzIGEgbmV3IHNpZ25hbCBjYXJyaWVyIHdhcyBhZGRlZCB0byB0cmFuc21pdCB0aGUgY29sb3IKK2RpZmZlcmVuY2Ugc2lnbmFscy4gU2Vjb25kYXJ5IGluIHRoZSBZVVYgZm9ybWF0IHRoZSBVIGFuZCBWIGNvbXBvbmVudHMKK3VzdWFsbHkgaGF2ZSBsb3dlciByZXNvbHV0aW9uIHRoYW4gdGhlIFkgY29tcG9uZW50LiBUaGlzIGlzIGFuIGFuYWxvZwordmlkZW8gY29tcHJlc3Npb24gdGVjaG5pcXVlIHRha2luZyBhZHZhbnRhZ2Ugb2YgYSBwcm9wZXJ0eSBvZiB0aGUKK2h1bWFuIHZpc3VhbCBzeXN0ZW0sIGJlaW5nIG1vcmUgc2Vuc2l0aXZlIHRvIGJyaWdodG5lc3MKK2luZm9ybWF0aW9uLjwvcGFyYT4KKworICAgICZzdWItcGFja2VkLXl1djsKKyAgICAmc3ViLWdyZXk7CisgICAgJnN1Yi15MTA7CisgICAgJnN1Yi15MTI7CisgICAgJnN1Yi15MTBiOworICAgICZzdWIteTE2OworICAgICZzdWIteTE2LWJlOworICAgICZzdWItdXY4OworICAgICZzdWIteXV5djsKKyAgICAmc3ViLXV5dnk7CisgICAgJnN1Yi15dnl1OworICAgICZzdWItdnl1eTsKKyAgICAmc3ViLXk0MXA7CisgICAgJnN1Yi15dXY0MjA7CisgICAgJnN1Yi15dXY0MjBtOworICAgICZzdWIteXZ1NDIwbTsKKyAgICAmc3ViLXl1djQxMDsKKyAgICAmc3ViLXl1djQyMnA7CisgICAgJnN1Yi15dXY0MTFwOworICAgICZzdWItbnYxMjsKKyAgICAmc3ViLW52MTJtOworICAgICZzdWItbnYxMm10OworICAgICZzdWItbnYxNjsKKyAgICAmc3ViLW52MTZtOworICAgICZzdWItbnYyNDsKKyAgICAmc3ViLW00MjA7CisgIDwvc2VjdGlvbj4KKworICA8c2VjdGlvbj4KKyAgICA8dGl0bGU+Q29tcHJlc3NlZCBGb3JtYXRzPC90aXRsZT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iY29tcHJlc3NlZC1mb3JtYXRzIj4KKyAgICAgIDx0aXRsZT5Db21wcmVzc2VkIEltYWdlIEZvcm1hdHM8L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIiBhbGlnbj0ibGVmdCI+CisJJmNzLWRlZjsKKwk8dGhlYWQ+CisJICA8cm93PgorCSAgICA8ZW50cnk+SWRlbnRpZmllcjwvZW50cnk+CisJICAgIDxlbnRyeT5Db2RlPC9lbnRyeT4KKwkgICAgPGVudHJ5PkRldGFpbHM8L2VudHJ5PgorCSAgPC9yb3c+CisJPC90aGVhZD4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSA8cm93IGlkPSJWNEwyLVBJWC1GTVQtSlBFRyI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0pQRUc8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4nSlBFRyc8L2VudHJ5PgorCSAgICA8ZW50cnk+VEJELiBTZWUgYWxzbyAmVklESU9DLUctSlBFR0NPTVA7LAorCSAgICAmVklESU9DLVMtSlBFR0NPTVA7LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1NUEVHIj4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfTVBFRzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidNUEVHJzwvZW50cnk+CisJICAgIDxlbnRyeT5NUEVHIG11bHRpcGxleGVkIHN0cmVhbS4gVGhlIGFjdHVhbCBmb3JtYXQgaXMgZGV0ZXJtaW5lZCBieQorZXh0ZW5kZWQgY29udHJvbCA8Y29uc3RhbnQ+VjRMMl9DSURfTVBFR19TVFJFQU1fVFlQRTwvY29uc3RhbnQ+LCBzZWUKKzx4cmVmIGxpbmtlbmQ9Im1wZWctY29udHJvbC1pZCIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULUgyNjQiPgorCQk8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9IMjY0PC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+J0gyNjQnPC9lbnRyeT4KKwkJPGVudHJ5PkgyNjQgdmlkZW8gZWxlbWVudGFyeSBzdHJlYW0gd2l0aCBzdGFydCBjb2Rlcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJWNEwyLVBJWC1GTVQtSDI2NC1OTy1TQyI+CisJCTxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0gyNjRfTk9fU0M8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT4nQVZDMSc8L2VudHJ5PgorCQk8ZW50cnk+SDI2NCB2aWRlbyBlbGVtZW50YXJ5IHN0cmVhbSB3aXRob3V0IHN0YXJ0IGNvZGVzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1IMjY0LU1WQyI+CisJCTxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0gyNjRfTVZDPC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+J00yNjQnPC9lbnRyeT4KKwkJPGVudHJ5PkgyNjQgTVZDIHZpZGVvIGVsZW1lbnRhcnkgc3RyZWFtLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1IMjYzIj4KKwkJPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfSDI2MzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PidIMjYzJzwvZW50cnk+CisJCTxlbnRyeT5IMjYzIHZpZGVvIGVsZW1lbnRhcnkgc3RyZWFtLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1NUEVHMSI+CisJCTxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX01QRUcxPC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+J01QRzEnPC9lbnRyeT4KKwkJPGVudHJ5Pk1QRUcxIHZpZGVvIGVsZW1lbnRhcnkgc3RyZWFtLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1NUEVHMiI+CisJCTxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX01QRUcyPC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+J01QRzInPC9lbnRyeT4KKwkJPGVudHJ5Pk1QRUcyIHZpZGVvIGVsZW1lbnRhcnkgc3RyZWFtLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1NUEVHNCI+CisJCTxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX01QRUc0PC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+J01QRzQnPC9lbnRyeT4KKwkJPGVudHJ5Pk1QRUc0IHZpZGVvIGVsZW1lbnRhcnkgc3RyZWFtLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1YVklEIj4KKwkJPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWFZJRDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkJPGVudHJ5PidYVklEJzwvZW50cnk+CisJCTxlbnRyeT5YdmlkIHZpZGVvIGVsZW1lbnRhcnkgc3RyZWFtLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1WQzEtQU5ORVgtRyI+CisJCTxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1ZDMV9BTk5FWF9HPC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+J1ZDMUcnPC9lbnRyeT4KKwkJPGVudHJ5PlZDMSwgU01QVEUgNDIxTSBBbm5leCBHIGNvbXBsaWFudCBzdHJlYW0uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULVZDMS1BTk5FWC1MIj4KKwkJPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfVkMxX0FOTkVYX0w8L2NvbnN0YW50PjwvZW50cnk+CisJCTxlbnRyeT4nVkMxTCc8L2VudHJ5PgorCQk8ZW50cnk+VkMxLCBTTVBURSA0MjFNIEFubmV4IEwgY29tcGxpYW50IHN0cmVhbS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJWNEwyLVBJWC1GTVQtVlA4Ij4KKwkJPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfVlA4PC9jb25zdGFudD48L2VudHJ5PgorCQk8ZW50cnk+J1ZQODAnPC9lbnRyeT4KKwkJPGVudHJ5PlZQOCB2aWRlbyBlbGVtZW50YXJ5IHN0cmVhbS48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisgIDwvc2VjdGlvbj4KKworICA8c2VjdGlvbiBpZD0ic2RyLWZvcm1hdHMiPgorICAgIDx0aXRsZT5TRFIgRm9ybWF0czwvdGl0bGU+CisKKyAgICA8cGFyYT5UaGVzZSBmb3JtYXRzIGFyZSB1c2VkIGZvciA8bGluayBsaW5rZW5kPSJzZHIiPlNEUjwvbGluaz4KK2ludGVyZmFjZSBvbmx5LjwvcGFyYT4KKworICAgICZzdWItc2RyLWN1MDg7CisgICAgJnN1Yi1zZHItY3UxNmxlOworICAgICZzdWItc2RyLWNzMDg7CisgICAgJnN1Yi1zZHItY3MxNGxlOworICAgICZzdWItc2RyLXJ1MTJsZTsKKworICA8L3NlY3Rpb24+CisKKyAgPHNlY3Rpb24gaWQ9InBpeGZtdC1yZXNlcnZlZCI+CisgICAgPHRpdGxlPlJlc2VydmVkIEZvcm1hdCBJZGVudGlmaWVyczwvdGl0bGU+CisKKyAgICA8cGFyYT5UaGVzZSBmb3JtYXRzIGFyZSBub3QgZGVmaW5lZCBieSB0aGlzIHNwZWNpZmljYXRpb24sIHRoZXkKK2FyZSBqdXN0IGxpc3RlZCBmb3IgcmVmZXJlbmNlIGFuZCB0byBhdm9pZCBuYW1pbmcgY29uZmxpY3RzLiBJZiB5b3UKK3dhbnQgdG8gcmVnaXN0ZXIgeW91ciBvd24gZm9ybWF0LCBzZW5kIGFuIGUtbWFpbCB0byB0aGUgbGludXgtbWVkaWEgbWFpbGluZworbGlzdCAmdjRsLW1sOyBmb3IgaW5jbHVzaW9uIGluIHRoZSA8ZmlsZW5hbWU+dmlkZW9kZXYyLmg8L2ZpbGVuYW1lPgorZmlsZS4gSWYgeW91IHdhbnQgdG8gc2hhcmUgeW91ciBmb3JtYXQgd2l0aCBvdGhlciBkZXZlbG9wZXJzIGFkZCBhCitsaW5rIHRvIHlvdXIgZG9jdW1lbnRhdGlvbiBhbmQgc2VuZCBhIGNvcHkgdG8gdGhlIGxpbnV4LW1lZGlhIG1haWxpbmcgbGlzdAorZm9yIGluY2x1c2lvbiBpbiB0aGlzIHNlY3Rpb24uIElmIHlvdSB0aGluayB5b3VyIGZvcm1hdCBzaG91bGQgYmUgbGlzdGVkCitpbiBhIHN0YW5kYXJkIGZvcm1hdCBzZWN0aW9uIHBsZWFzZSBtYWtlIGEgcHJvcG9zYWwgb24gdGhlIGxpbnV4LW1lZGlhIG1haWxpbmcKK2xpc3QuPC9wYXJhPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJyZXNlcnZlZC1mb3JtYXRzIj4KKyAgICAgIDx0aXRsZT5SZXNlcnZlZCBJbWFnZSBGb3JtYXRzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyIgYWxpZ249ImxlZnQiPgorCSZjcy1kZWY7CisJPHRoZWFkPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PklkZW50aWZpZXI8L2VudHJ5PgorCSAgICA8ZW50cnk+Q29kZTwvZW50cnk+CisJICAgIDxlbnRyeT5EZXRhaWxzPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGhlYWQ+CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1EViI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0RWPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+J2R2c2QnPC9lbnRyeT4KKwkgICAgPGVudHJ5PnVua25vd248L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJWNEwyLVBJWC1GTVQtRVQ2MVgyNTEiPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9FVDYxWDI1MTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidFNjI1JzwvZW50cnk+CisJICAgIDxlbnRyeT5Db21wcmVzc2VkIGZvcm1hdCBvZiB0aGUgRVQ2MVgyNTEgZHJpdmVyLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1ISTI0MCI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0hJMjQwPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+J0hJMjQnPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxwYXJhPjggYml0IFJHQiBmb3JtYXQgdXNlZCBieSB0aGUgQlRUViBkcml2ZXIuPC9wYXJhPjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1ITTEyIj4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfSE0xMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidITTEyJzwvZW50cnk+CisJICAgIDxlbnRyeT48cGFyYT5ZVVYgNDoyOjAgZm9ybWF0IHVzZWQgYnkgdGhlCitJVlRWIGRyaXZlciwgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5pdnR2ZHJpdmVyLm9yZy8iPgoraHR0cDovL3d3dy5pdnR2ZHJpdmVyLm9yZy88L3VsaW5rPjwvcGFyYT48cGFyYT5UaGUgZm9ybWF0IGlzIGRvY3VtZW50ZWQgaW4gdGhlCitrZXJuZWwgc291cmNlcyBpbiB0aGUgZmlsZSA8ZmlsZW5hbWU+RG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9jeDIzNDF4L1JFQURNRS5obTEyPC9maWxlbmFtZT4KKzwvcGFyYT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJWNEwyLVBJWC1GTVQtQ1BJQTEiPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9DUElBMTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidDUElBJzwvZW50cnk+CisJICAgIDxlbnRyeT5ZVVYgZm9ybWF0IHVzZWQgYnkgdGhlIGdzcGNhIGNwaWExIGRyaXZlci48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJWNEwyLVBJWC1GTVQtSlBHTCI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0pQR0w8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4nSlBHTCc8L2VudHJ5PgorCSAgICA8ZW50cnk+SlBFRy1MaWdodCBmb3JtYXQgKFBlZ2FzdXMgTG9zc2xlc3MgSlBFRykKKwkJCXVzZWQgaW4gRGl2aW8gd2ViY2FtcyBOVyA4MHguPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULVNQQ0E1MDEiPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TUENBNTAxPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+J1M1MDEnPC9lbnRyeT4KKwkgICAgPGVudHJ5PllVWVYgcGVyIGxpbmUgdXNlZCBieSB0aGUgZ3NwY2EgZHJpdmVyLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1TUENBNTA1Ij4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfU1BDQTUwNTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidTNTA1JzwvZW50cnk+CisJICAgIDxlbnRyeT5ZWVVWIHBlciBsaW5lIHVzZWQgYnkgdGhlIGdzcGNhIGRyaXZlci48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJWNEwyLVBJWC1GTVQtU1BDQTUwOCI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1NQQ0E1MDg8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4nUzUwOCc8L2VudHJ5PgorCSAgICA8ZW50cnk+WVVWWSBwZXIgbGluZSB1c2VkIGJ5IHRoZSBnc3BjYSBkcml2ZXIuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULVNQQ0E1NjEiPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TUENBNTYxPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+J1M1NjEnPC9lbnRyeT4KKwkgICAgPGVudHJ5PkNvbXByZXNzZWQgR0JSRyBCYXllciBmb3JtYXQgdXNlZCBieSB0aGUgZ3NwY2EgZHJpdmVyLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1QQUMyMDciPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9QQUMyMDc8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4nUDIwNyc8L2VudHJ5PgorCSAgICA8ZW50cnk+Q29tcHJlc3NlZCBCR0dSIEJheWVyIGZvcm1hdCB1c2VkIGJ5IHRoZSBnc3BjYSBkcml2ZXIuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULU1SOTczMTBBIj4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfTVI5NzMxMEE8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4nTTMxMCc8L2VudHJ5PgorCSAgICA8ZW50cnk+Q29tcHJlc3NlZCBCR0dSIEJheWVyIGZvcm1hdCB1c2VkIGJ5IHRoZSBnc3BjYSBkcml2ZXIuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULUpMMjAwNUJDRCI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0pMMjAwNUJDRDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidKTDIwJzwvZW50cnk+CisJICAgIDxlbnRyeT5KUEVHIGNvbXByZXNzZWQgUkdHQiBCYXllciBmb3JtYXQgdXNlZCBieSB0aGUgZ3NwY2EgZHJpdmVyLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1PVjUxMSI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX09WNTExPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+J081MTEnPC9lbnRyeT4KKwkgICAgPGVudHJ5Pk9WNTExIEpQRUcgZm9ybWF0IHVzZWQgYnkgdGhlIGdzcGNhIGRyaXZlci48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJWNEwyLVBJWC1GTVQtT1Y1MTgiPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9PVjUxODwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidPNTE4JzwvZW50cnk+CisJICAgIDxlbnRyeT5PVjUxOCBKUEVHIGZvcm1hdCB1c2VkIGJ5IHRoZSBnc3BjYSBkcml2ZXIuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULVBKUEciPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9QSlBHPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+J1BKUEcnPC9lbnRyeT4KKwkgICAgPGVudHJ5PlBpeGFydCA3M3h4IEpQRUcgZm9ybWF0IHVzZWQgYnkgdGhlIGdzcGNhIGRyaXZlci48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJWNEwyLVBJWC1GTVQtU0U0MDEiPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TRTQwMTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidTNDAxJzwvZW50cnk+CisJICAgIDxlbnRyeT5Db21wcmVzc2VkIFJHQiBmb3JtYXQgdXNlZCBieSB0aGUgZ3NwY2Egc2U0MDEgZHJpdmVyPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULVNROTA1QyI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1NROTA1QzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pic5MDVDJzwvZW50cnk+CisJICAgIDxlbnRyeT5Db21wcmVzc2VkIFJHR0IgYmF5ZXIgZm9ybWF0IHVzZWQgYnkgdGhlIGdzcGNhIGRyaXZlci48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJWNEwyLVBJWC1GTVQtTUpQRUciPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9NSlBFRzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidNSlBHJzwvZW50cnk+CisJICAgIDxlbnRyeT5Db21wcmVzc2VkIGZvcm1hdCB1c2VkIGJ5IHRoZSBab3JhbiBkcml2ZXI8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJWNEwyLVBJWC1GTVQtUFdDMSI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1BXQzE8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4nUFdDMSc8L2VudHJ5PgorCSAgICA8ZW50cnk+Q29tcHJlc3NlZCBmb3JtYXQgb2YgdGhlIFBXQyBkcml2ZXIuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULVBXQzIiPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9QV0MyPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+J1BXQzInPC9lbnRyeT4KKwkgICAgPGVudHJ5PkNvbXByZXNzZWQgZm9ybWF0IG9mIHRoZSBQV0MgZHJpdmVyLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1TTjlDMTBYIj4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfU045QzEwWDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidTOTEwJzwvZW50cnk+CisJICAgIDxlbnRyeT5Db21wcmVzc2VkIGZvcm1hdCBvZiB0aGUgU045QzEwMiBkcml2ZXIuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULVNOOUMyMFgtSTQyMCI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1NOOUMyMFhfSTQyMDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidTOTIwJzwvZW50cnk+CisJICAgIDxlbnRyeT5ZVVYgNDoyOjAgZm9ybWF0IG9mIHRoZSBnc3BjYSBzbjljMjB4IGRyaXZlci48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJWNEwyLVBJWC1GTVQtU045QzIwMjgiPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TTjlDMjAyODwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidTT05YJzwvZW50cnk+CisJICAgIDxlbnRyeT5Db21wcmVzc2VkIEdCUkcgYmF5ZXIgZm9ybWF0IG9mIHRoZSBnc3BjYSBzbjljMjAyOCBkcml2ZXIuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULVNUVjA2ODAiPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9TVFYwNjgwPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+J1M2ODAnPC9lbnRyeT4KKwkgICAgPGVudHJ5PkJheWVyIGZvcm1hdCBvZiB0aGUgZ3NwY2Egc3R2MDY4MCBkcml2ZXIuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULVdOVkEiPgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9XTlZBPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+J1dOVkEnPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxwYXJhPlVzZWQgYnkgdGhlIFdpbm5vdiBWaWRldW0gZHJpdmVyLCA8dWxpbmsKK3VybD0iaHR0cDovL3d3dy50aGVkaXJrcy5vcmcvd2lubm92LyI+CitodHRwOi8vd3d3LnRoZWRpcmtzLm9yZy93aW5ub3YvPC91bGluaz48L3BhcmE+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULVRNNjAwMCI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1RNNjAwMDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidUTTYwJzwvZW50cnk+CisJICAgIDxlbnRyeT48cGFyYT5Vc2VkIGJ5IFRyaWRlbnQgdG02MDAwPC9wYXJhPjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1DSVQtWVlWWVVZIj4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfQ0lUX1lZVllVWTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidDSVRWJzwvZW50cnk+CisJICAgIDxlbnRyeT48cGFyYT5Vc2VkIGJ5IHhpcmxpbmsgQ0lULCBmb3VuZCBhdCBJQk0gd2ViY2Ftcy48L3BhcmE+CisJICAgICAgICAgICA8cGFyYT5Vc2VzIG9uZSBsaW5lIG9mIFkgdGhlbiAxIGxpbmUgb2YgVllVWTwvcGFyYT4KKwkgICAgPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULUtPTklDQTQyMCI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0tPTklDQTQyMDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PidLT05JJzwvZW50cnk+CisJICAgIDxlbnRyeT48cGFyYT5Vc2VkIGJ5IEtvbmljYSB3ZWJjYW1zLjwvcGFyYT4KKwkgICAgICAgICAgIDxwYXJhPllVVjQyMCBwbGFuYXIgaW4gYmxvY2tzIG9mIDI1NiBwaXhlbHMuPC9wYXJhPgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJWNEwyLVBJWC1GTVQtWVlVViI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1lZVVY8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4nWVlVVic8L2VudHJ5PgorCSAgICA8ZW50cnk+dW5rbm93bjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3cgaWQ9IlY0TDItUElYLUZNVC1ZNCI+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1k0PC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+J1kwNCAnPC9lbnRyeT4KKwkgICAgPGVudHJ5Pk9sZCA0LWJpdCBncmV5c2NhbGUgZm9ybWF0LiBPbmx5IHRoZSBtb3N0IHNpZ25pZmljYW50IDQgYml0cyBvZiBlYWNoIGJ5dGUgYXJlIHVzZWQsCit0aGUgb3RoZXIgYml0cyBhcmUgc2V0IHRvIDAuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdyBpZD0iVjRMMi1QSVgtRk1ULVk2Ij4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfWTY8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4nWTA2ICc8L2VudHJ5PgorCSAgICA8ZW50cnk+T2xkIDYtYml0IGdyZXlzY2FsZSBmb3JtYXQuIE9ubHkgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgNiBiaXRzIG9mIGVhY2ggYnl0ZSBhcmUgdXNlZCwKK3RoZSBvdGhlciBiaXRzIGFyZSBzZXQgdG8gMC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93IGlkPSJWNEwyLVBJWC1GTVQtUzVDLVVZVlktSlBHIj4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BJWF9GTVRfUzVDX1VZVllfSlBHPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+J1M1Q0knPC9lbnRyeT4KKwkgICAgPGVudHJ5PlR3by1wbGFuYXIgZm9ybWF0IHVzZWQgYnkgU2Ftc3VuZyBTNUM3M01YIGNhbWVyYXMuIFRoZQorZmlyc3QgcGxhbmUgY29udGFpbnMgaW50ZXJsZWF2ZWQgSlBFRyBhbmQgVVlWWSBpbWFnZSBkYXRhLCBmb2xsb3dlZCBieSBtZXRhIGRhdGEKK2luIGZvcm0gb2YgYW4gYXJyYXkgb2Ygb2Zmc2V0cyB0byB0aGUgVVlWWSBkYXRhIGJsb2Nrcy4gVGhlIGFjdHVhbCBwb2ludGVyIGFycmF5Citmb2xsb3dzIGltbWVkaWF0ZWx5IHRoZSBpbnRlcmxlYXZlZCBKUEVHL1VZVlkgZGF0YSwgdGhlIG51bWJlciBvZiBlbnRyaWVzIGluCit0aGlzIGFycmF5IGVxdWFscyB0aGUgaGVpZ2h0IG9mIHRoZSBVWVZZIGltYWdlLiBFYWNoIGVudHJ5IGlzIGEgNC1ieXRlIHVuc2lnbmVkCitpbnRlZ2VyIGluIGJpZyBlbmRpYW4gb3JkZXIgYW5kIGl0J3MgYW4gb2Zmc2V0IHRvIGEgc2luZ2xlIHBpeGVsIGxpbmUgb2YgdGhlCitVWVZZIGltYWdlLiBUaGUgZmlyc3QgcGxhbmUgY2FuIHN0YXJ0IGVpdGhlciB3aXRoIEpQRUcgb3IgVVlWWSBkYXRhIGNodW5rLiBUaGUKK3NpemUgb2YgYSBzaW5nbGUgVVlWWSBibG9jayBlcXVhbHMgdGhlIFVZVlkgaW1hZ2UncyB3aWR0aCBtdWx0aXBsaWVkIGJ5IDIuIFRoZQorc2l6ZSBvZiBhIEpQRUcgY2h1bmsgZGVwZW5kcyBvbiB0aGUgaW1hZ2UgYW5kIGNhbiB2YXJ5IHdpdGggZWFjaCBsaW5lLgorPHBhcmE+VGhlIHNlY29uZCBwbGFuZSwgYXQgYW4gb2Zmc2V0IG9mIDQwODQgYnl0ZXMsIGNvbnRhaW5zIGEgNC1ieXRlIG9mZnNldCB0bwordGhlIHBvaW50ZXIgYXJyYXkgaW4gdGhlIGZpcnN0IHBsYW5lLiBUaGlzIG9mZnNldCBpcyBmb2xsb3dlZCBieSBhIDQtYnl0ZSB2YWx1ZQoraW5kaWNhdGluZyBzaXplIG9mIHRoZSBwb2ludGVyIGFycmF5LiBBbGwgbnVtYmVycyBpbiB0aGUgc2Vjb25kIHBsYW5lIGFyZSBhbHNvCitpbiBiaWcgZW5kaWFuIG9yZGVyLiBSZW1haW5pbmcgZGF0YSBpbiB0aGUgc2Vjb25kIHBsYW5lIGlzIHVuZGVmaW5lZC4gVGhlCitpbmZvcm1hdGlvbiBpbiB0aGUgc2Vjb25kIHBsYW5lIGFsbG93cyB0byBlYXNpbHkgZmluZCBsb2NhdGlvbiBvZiB0aGUgcG9pbnRlcgorYXJyYXksIHdoaWNoIGNhbiBiZSBkaWZmZXJlbnQgZm9yIGVhY2ggZnJhbWUuIFRoZSBzaXplIG9mIHRoZSBwb2ludGVyIGFycmF5IGlzCitjb25zdGFudCBmb3IgZ2l2ZW4gVVlWWSBpbWFnZSBoZWlnaHQuPC9wYXJhPgorPHBhcmE+SW4gb3JkZXIgdG8gZXh0cmFjdCBVWVZZIGFuZCBKUEVHIGZyYW1lcyBhbiBhcHBsaWNhdGlvbiBjYW4gaW5pdGlhbGx5IHNldAorYSBkYXRhIHBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIGZpcnN0IHBsYW5lIGFuZCB0aGVuIGFkZCBhbiBvZmZzZXQgZnJvbSB0aGUgZmlyc3QKK2VudHJ5IG9mIHRoZSBwb2ludGVycyB0YWJsZS4gU3VjaCBhIHBvaW50ZXIgaW5kaWNhdGVzIHN0YXJ0IG9mIGFuIFVZVlkgaW1hZ2UKK3BpeGVsIGxpbmUuIFdob2xlIFVZVlkgbGluZSBjYW4gYmUgY29waWVkIHRvIGEgc2VwYXJhdGUgYnVmZmVyLiBUaGVzZSBzdGVwcworc2hvdWxkIGJlIHJlcGVhdGVkIGZvciBlYWNoIGxpbmUsIGkuZS4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBwb2ludGVyCithcnJheS4gQW55dGhpbmcgd2hhdCdzIGluIGJldHdlZW4gdGhlIFVZVlkgbGluZXMgaXMgSlBFRyBkYXRhIGFuZCBzaG91bGQgYmUKK2NvbmNhdGVuYXRlZCB0byBmb3JtIHRoZSBKUEVHIHN0cmVhbS4gPC9wYXJhPgorPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIGZyYW1lPSJub25lIiBwZ3dpZGU9IjEiIGlkPSJmb3JtYXQtZmxhZ3MiPgorICAgICAgPHRpdGxlPkZvcm1hdCBGbGFnczwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1kZWY7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX0ZMQUdfUFJFTVVMX0FMUEhBPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAwMDAwMTwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgY29sb3IgdmFsdWVzIGFyZSBwcmVtdWx0aXBsaWVkIGJ5IHRoZSBhbHBoYSBjaGFubmVsCit2YWx1ZS4gRm9yIGV4YW1wbGUsIGlmIGEgbGlnaHQgYmx1ZSBwaXhlbCB3aXRoIDUwJSB0cmFuc3BhcmVuY3kgd2FzIGRlc2NyaWJlZCBieQorUkdCQSB2YWx1ZXMgKDEyOCwgMTkyLCAyNTUsIDEyOCksIHRoZSBzYW1lIHBpeGVsIGRlc2NyaWJlZCB3aXRoIHByZW11bHRpcGxpZWQKK2NvbG9ycyB3b3VsZCBiZSBkZXNjcmliZWQgYnkgUkdCQSB2YWx1ZXMgKDY0LCA5NiwgMTI4LCAxMjgpIDwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9zZWN0aW9uPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9wbGFuYXItYXBpcy54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3BsYW5hci1hcGlzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzhjZTIwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9wbGFuYXItYXBpcy54bWwKQEAgLTAsMCArMSw2MiBAQAorPHNlY3Rpb24gaWQ9InBsYW5hci1hcGlzIj4KKyAgPHRpdGxlPlNpbmdsZS0gYW5kIG11bHRpLXBsYW5hciBBUElzPC90aXRsZT4KKworICA8cGFyYT5Tb21lIGRldmljZXMgcmVxdWlyZSBkYXRhIGZvciBlYWNoIGlucHV0IG9yIG91dHB1dCB2aWRlbyBmcmFtZQorICB0byBiZSBwbGFjZWQgaW4gZGlzY29udGlndW91cyBtZW1vcnkgYnVmZmVycy4gSW4gc3VjaCBjYXNlcywgb25lCisgIHZpZGVvIGZyYW1lIGhhcyB0byBiZSBhZGRyZXNzZWQgdXNpbmcgbW9yZSB0aGFuIG9uZSBtZW1vcnkgYWRkcmVzcywgaS5lLiBvbmUKKyAgcG9pbnRlciBwZXIgInBsYW5lIi4gQSBwbGFuZSBpcyBhIHN1Yi1idWZmZXIgb2YgdGhlIGN1cnJlbnQgZnJhbWUuIEZvcgorICBleGFtcGxlcyBvZiBzdWNoIGZvcm1hdHMgc2VlIDx4cmVmIGxpbmtlbmQ9InBpeGZtdCIgLz4uPC9wYXJhPgorCisgIDxwYXJhPkluaXRpYWxseSwgVjRMMiBBUEkgZGlkIG5vdCBzdXBwb3J0IG11bHRpLXBsYW5hciBidWZmZXJzIGFuZCBhIHNldCBvZgorICBleHRlbnNpb25zIGhhcyBiZWVuIGludHJvZHVjZWQgdG8gaGFuZGxlIHRoZW0uIFRob3NlIGV4dGVuc2lvbnMgY29uc3RpdHV0ZQorICB3aGF0IGlzIGJlaW5nIHJlZmVycmVkIHRvIGFzIHRoZSAibXVsdGktcGxhbmFyIEFQSSIuPC9wYXJhPgorCisgIDxwYXJhPlNvbWUgb2YgdGhlIFY0TDIgQVBJIGNhbGxzIGFuZCBzdHJ1Y3R1cmVzIGFyZSBpbnRlcnByZXRlZCBkaWZmZXJlbnRseSwKKyAgZGVwZW5kaW5nIG9uIHdoZXRoZXIgc2luZ2xlLSBvciBtdWx0aS1wbGFuYXIgQVBJIGlzIGJlaW5nIHVzZWQuIEFuIGFwcGxpY2F0aW9uCisgIGNhbiBjaG9vc2Ugd2hldGhlciB0byB1c2Ugb25lIG9yIHRoZSBvdGhlciBieSBwYXNzaW5nIGEgY29ycmVzcG9uZGluZyBidWZmZXIKKyAgdHlwZSB0byBpdHMgaW9jdGwgY2FsbHMuIE11bHRpLXBsYW5hciB2ZXJzaW9ucyBvZiBidWZmZXIgdHlwZXMgYXJlIHN1ZmZpeGVkCisgIHdpdGggYW4gYF9NUExBTkUnIHN0cmluZy4gRm9yIGEgbGlzdCBvZiBhdmFpbGFibGUgbXVsdGktcGxhbmFyIGJ1ZmZlciB0eXBlcworICBzZWUgJnY0bDItYnVmLXR5cGU7LgorICA8L3BhcmE+CisKKyAgPHNlY3Rpb24+CisgICAgPHRpdGxlPk11bHRpLXBsYW5hciBmb3JtYXRzPC90aXRsZT4KKyAgICA8cGFyYT5NdWx0aS1wbGFuYXIgQVBJIGludHJvZHVjZXMgbmV3IG11bHRpLXBsYW5hciBmb3JtYXRzLiBUaG9zZSBmb3JtYXRzCisgICAgdXNlIGEgc2VwYXJhdGUgc2V0IG9mIEZvdXJDQyBjb2Rlcy4gSXQgaXMgaW1wb3J0YW50IHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4KKyAgICB0aGUgbXVsdGktcGxhbmFyIEFQSSBhbmQgYSBtdWx0aS1wbGFuYXIgZm9ybWF0LiBNdWx0aS1wbGFuYXIgQVBJIGNhbGxzIGNhbgorICAgIGhhbmRsZSBhbGwgc2luZ2xlLXBsYW5hciBmb3JtYXRzIGFzIHdlbGwgKGFzIGxvbmcgYXMgdGhleSBhcmUgcGFzc2VkIGluCisgICAgbXVsdGktcGxhbmFyIEFQSSBzdHJ1Y3R1cmVzKSwgd2hpbGUgdGhlIHNpbmdsZS1wbGFuYXIgQVBJIGNhbm5vdAorICAgIGhhbmRsZSBtdWx0aS1wbGFuYXIgZm9ybWF0cy48L3BhcmE+CisgIDwvc2VjdGlvbj4KKworICA8c2VjdGlvbj4KKyAgICA8dGl0bGU+Q2FsbHMgdGhhdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIHNpbmdsZSBhbmQgbXVsdGktcGxhbmFyIEFQSXM8L3RpdGxlPgorICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT4mVklESU9DLVFVRVJZQ0FQOzwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlR3byBhZGRpdGlvbmFsIG11bHRpLXBsYW5hciBjYXBhYmlsaXRpZXMgYXJlIGFkZGVkLiBUaGV5IGNhbgorICAgICAgICBiZSBzZXQgdG9nZXRoZXIgd2l0aCBub24tbXVsdGktcGxhbmFyIG9uZXMgZm9yIGRldmljZXMgdGhhdCBoYW5kbGUKKyAgICAgICAgYm90aCBzaW5nbGUtIGFuZCBtdWx0aS1wbGFuYXIgZm9ybWF0cy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+JlZJRElPQy1HLUZNVDssICZWSURJT0MtUy1GTVQ7LCAmVklESU9DLVRSWS1GTVQ7PC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+TmV3IHN0cnVjdHVyZXMgZm9yIGRlc2NyaWJpbmcgbXVsdGktcGxhbmFyIGZvcm1hdHMgYXJlIGFkZGVkOgorICAgICAgICAmdjRsMi1waXgtZm9ybWF0LW1wbGFuZTsgYW5kICZ2NGwyLXBsYW5lLXBpeC1mb3JtYXQ7LiBEcml2ZXJzIG1heQorICAgICAgICBkZWZpbmUgbmV3IG11bHRpLXBsYW5hciBmb3JtYXRzLCB3aGljaCBoYXZlIGRpc3RpbmN0IEZvdXJDQyBjb2RlcyBmcm9tCisgICAgICAgIHRoZSBleGlzdGluZyBzaW5nbGUtcGxhbmFyIG9uZXMuPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT4mVklESU9DLVFCVUY7LCAmVklESU9DLURRQlVGOywgJlZJRElPQy1RVUVSWUJVRjs8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BIG5ldyAmdjRsMi1wbGFuZTsgc3RydWN0dXJlIGZvciBkZXNjcmliaW5nIHBsYW5lcyBpcyBhZGRlZC4KKyAgICAgICAgQXJyYXlzIG9mIHRoaXMgc3RydWN0dXJlIGFyZSBwYXNzZWQgaW4gdGhlIG5ldworICAgICAgICA8c3RydWN0ZmllbGQ+bS5wbGFuZXM8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiAmdjRsMi1idWZmZXI7LjwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+JlZJRElPQy1SRVFCVUZTOzwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPjxwYXJhPldpbGwgYWxsb2NhdGUgbXVsdGktcGxhbmFyIGJ1ZmZlcnMgYXMgcmVxdWVzdGVkLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcmVtb3RlX2NvbnRyb2xsZXJzLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvcmVtb3RlX2NvbnRyb2xsZXJzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODY4NDRlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9yZW1vdGVfY29udHJvbGxlcnMueG1sCkBAIC0wLDAgKzEsMzIwIEBACis8cGFydGluZm8+Cis8YXV0aG9yZ3JvdXA+Cis8YXV0aG9yPgorPGZpcnN0bmFtZT5NYXVybzwvZmlyc3RuYW1lPgorPHN1cm5hbWU+Q2hlaGFiPC9zdXJuYW1lPgorPG90aGVybmFtZSByb2xlPSJtaSI+Q2FydmFsaG88L290aGVybmFtZT4KKzxhZmZpbGlhdGlvbj48YWRkcmVzcz48ZW1haWw+bS5jaGVoYWJAc2Ftc3VuZy5jb208L2VtYWlsPjwvYWRkcmVzcz48L2FmZmlsaWF0aW9uPgorPGNvbnRyaWI+SW5pdGlhbCB2ZXJzaW9uLjwvY29udHJpYj4KKzwvYXV0aG9yPgorPC9hdXRob3Jncm91cD4KKzxjb3B5cmlnaHQ+CisJPHllYXI+MjAwOS0yMDE0PC95ZWFyPgorICAgICAgICA8aG9sZGVyPk1hdXJvIENhcnZhbGhvIENoZWhhYjwvaG9sZGVyPgorPC9jb3B5cmlnaHQ+CisKKzxyZXZoaXN0b3J5PgorPCEtLSBQdXQgZG9jdW1lbnQgcmV2aXNpb25zIGhlcmUsIG5ld2VzdCBmaXJzdC4gLS0+Cis8cmV2aXNpb24+Cis8cmV2bnVtYmVyPjMuMTU8L3Jldm51bWJlcj4KKzxkYXRlPjIwMTQtMDItMDY8L2RhdGU+Cis8YXV0aG9yaW5pdGlhbHM+bWNjPC9hdXRob3Jpbml0aWFscz4KKzxyZXZyZW1hcms+QWRkZWQgdGhlIGludGVyZmFjZSBkZXNjcmlwdGlvbiBhbmQgdGhlIFJDIHN5c2ZzIGNsYXNzIGRlc2NyaXB0aW9uLjwvcmV2cmVtYXJrPgorPC9yZXZpc2lvbj4KKzxyZXZpc2lvbj4KKzxyZXZudW1iZXI+MS4wPC9yZXZudW1iZXI+Cis8ZGF0ZT4yMDA5LTA5LTA2PC9kYXRlPgorPGF1dGhvcmluaXRpYWxzPm1jYzwvYXV0aG9yaW5pdGlhbHM+Cis8cmV2cmVtYXJrPkluaXRpYWwgcmV2aXNpb248L3JldnJlbWFyaz4KKzwvcmV2aXNpb24+Cis8L3Jldmhpc3Rvcnk+Cis8L3BhcnRpbmZvPgorCisgPHRpdGxlPlJlbW90ZSBDb250cm9sbGVyIEFQSTwvdGl0bGU+CisgPGNoYXB0ZXIgaWQ9InJlbW90ZV9jb250cm9sbGVycyI+CisKKzx0aXRsZT5SZW1vdGUgQ29udHJvbGxlcnM8L3RpdGxlPgorCis8c2VjdGlvbiBpZD0iUmVtb3RlX2NvbnRyb2xsZXJzX0ludHJvIj4KKzx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorCis8cGFyYT5DdXJyZW50bHksIG1vc3QgYW5hbG9nIGFuZCBkaWdpdGFsIGRldmljZXMgaGF2ZSBhIEluZnJhcmVkIGlucHV0IGZvciByZW1vdGUgY29udHJvbGxlcnMuIEVhY2gKK21hbnVmYWN0dXJlciBoYXMgdGhlaXIgb3duIHR5cGUgb2YgY29udHJvbC4gSXQgaXMgbm90IHJhcmUgZm9yIHRoZSBzYW1lIG1hbnVmYWN0dXJlciB0byBzaGlwIGRpZmZlcmVudAordHlwZXMgb2YgY29udHJvbHMsIGRlcGVuZGluZyBvbiB0aGUgZGV2aWNlLjwvcGFyYT4KKzxwYXJhPkEgUmVtb3RlIENvbnRyb2xsZXIgaW50ZXJmYWNlIGlzIG1hcHBlZCBhcyBhIG5vcm1hbCBldmRldi9pbnB1dCBpbnRlcmZhY2UsIGp1c3QgbGlrZSBhIGtleWJvYXJkIG9yIGEgbW91c2UuCitTbywgaXQgdXNlcyBhbGwgaW9jdGxzIGFscmVhZHkgZGVmaW5lZCBmb3IgYW55IG90aGVyIGlucHV0IGRldmljZXMuPC9wYXJhPgorPHBhcmE+SG93ZXZlciwgcmVtb3ZlIGNvbnRyb2xsZXJzIGFyZSBtb3JlIGZsZXhpYmxlIHRoYW4gYSBub3JtYWwgaW5wdXQgZGV2aWNlLCBhcyB0aGUgSVIKK3JlY2VpdmVyIChhbmQvb3IgdHJhbnNtaXR0ZXIpIGNhbiBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYSB3aWRlIHZhcmlldHkgb2YgZGlmZmVyZW50IElSIHJlbW90ZXMuPC9wYXJhPgorPHBhcmE+SW4gb3JkZXIgdG8gYWxsb3cgZmxleGliaWxpdHksIHRoZSBSZW1vdGUgQ29udHJvbGxlciBzdWJzeXN0ZW0gYWxsb3dzIGNvbnRyb2xsaW5nIHRoZQorUkMtc3BlY2lmaWMgYXR0cmlidXRlcyB2aWEgPGxpbmsgbGlua2VuZD0icmVtb3RlX2NvbnRyb2xsZXJzX3N5c2ZzX25vZGVzIj50aGUgc3lzZnMgY2xhc3Mgbm9kZXM8L2xpbms+LjwvcGFyYT4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9InJlbW90ZV9jb250cm9sbGVyc19zeXNmc19ub2RlcyI+Cis8dGl0bGU+UmVtb3RlIENvbnRyb2xsZXIncyBzeXNmcyBub2RlczwvdGl0bGU+Cis8cGFyYT5BcyBkZWZpbmVkIGF0IDxjb25zdGFudD5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXJjPC9jb25zdGFudD4sIHRob3NlIGFyZSB0aGUgc3lzZnMgbm9kZXMgdGhhdCBjb250cm9sIHRoZSBSZW1vdGUgQ29udHJvbGxlcnM6PC9wYXJhPgorCis8c2VjdGlvbiBpZD0ic3lzX2NsYXNzX3JjIj4KKzx0aXRsZT4vc3lzL2NsYXNzL3JjLzwvdGl0bGU+Cis8cGFyYT5UaGUgPGNvbnN0YW50Pi9zeXMvY2xhc3MvcmMvPC9jb25zdGFudD4gY2xhc3Mgc3ViLWRpcmVjdG9yeSBiZWxvbmdzIHRvIHRoZSBSZW1vdGUgQ29udHJvbGxlcgorY29yZSBhbmQgcHJvdmlkZXMgYSBzeXNmcyBpbnRlcmZhY2UgZm9yIGNvbmZpZ3VyaW5nIGluZnJhcmVkIHJlbW90ZSBjb250cm9sbGVyIHJlY2VpdmVycy4KKzwvcGFyYT4KKworPC9zZWN0aW9uPgorPHNlY3Rpb24gaWQ9InN5c19jbGFzc19yY19yY04iPgorPHRpdGxlPi9zeXMvY2xhc3MvcmMvcmNOLzwvdGl0bGU+Cis8cGFyYT5BIDxjb25zdGFudD4vc3lzL2NsYXNzL3JjL3JjTjwvY29uc3RhbnQ+IGRpcmVjdG9yeSBpcyBjcmVhdGVkIGZvciBlYWNoIHJlbW90ZQorICBjb250cm9sIHJlY2VpdmVyIGRldmljZSB3aGVyZSBOIGlzIHRoZSBudW1iZXIgb2YgdGhlIHJlY2VpdmVyLjwvcGFyYT4KKworPC9zZWN0aW9uPgorPHNlY3Rpb24gaWQ9InN5c19jbGFzc19yY19yY05fcHJvdG9jb2xzIj4KKzx0aXRsZT4vc3lzL2NsYXNzL3JjL3JjTi9wcm90b2NvbHM8L3RpdGxlPgorPHBhcmE+UmVhZGluZyB0aGlzIGZpbGUgcmV0dXJucyBhIGxpc3Qgb2YgYXZhaWxhYmxlIHByb3RvY29scywgc29tZXRoaW5nIGxpa2U6PC9wYXJhPgorPHBhcmE+PGNvbnN0YW50PnJjNSBbcmM2XSBuZWMganZjIFtzb255XTwvY29uc3RhbnQ+PC9wYXJhPgorPHBhcmE+RW5hYmxlZCBwcm90b2NvbHMgYXJlIHNob3duIGluIFtdIGJyYWNrZXRzLjwvcGFyYT4KKzxwYXJhPldyaXRpbmcgIitwcm90byIgd2lsbCBhZGQgYSBwcm90b2NvbCB0byB0aGUgbGlzdCBvZiBlbmFibGVkIHByb3RvY29scy48L3BhcmE+Cis8cGFyYT5Xcml0aW5nICItcHJvdG8iIHdpbGwgcmVtb3ZlIGEgcHJvdG9jb2wgZnJvbSB0aGUgbGlzdCBvZiBlbmFibGVkIHByb3RvY29scy48L3BhcmE+Cis8cGFyYT5Xcml0aW5nICJwcm90byIgd2lsbCBlbmFibGUgb25seSAicHJvdG8iLjwvcGFyYT4KKzxwYXJhPldyaXRpbmcgIm5vbmUiIHdpbGwgZGlzYWJsZSBhbGwgcHJvdG9jb2xzLjwvcGFyYT4KKzxwYXJhPldyaXRlIGZhaWxzIHdpdGggRUlOVkFMIGlmIGFuIGludmFsaWQgcHJvdG9jb2wgY29tYmluYXRpb24gb3IgdW5rbm93biBwcm90b2NvbCBuYW1lIGlzIHVzZWQuPC9wYXJhPgorCis8L3NlY3Rpb24+Cis8c2VjdGlvbiBpZD0ic3lzX2NsYXNzX3JjX3JjTl9maWx0ZXIiPgorPHRpdGxlPi9zeXMvY2xhc3MvcmMvcmNOL2ZpbHRlcjwvdGl0bGU+Cis8cGFyYT5TZXRzIHRoZSBzY2FuY29kZSBmaWx0ZXIgZXhwZWN0ZWQgdmFsdWUuPC9wYXJhPgorPHBhcmE+VXNlIGluIGNvbWJpbmF0aW9uIHdpdGggPGNvbnN0YW50Pi9zeXMvY2xhc3MvcmMvcmNOL2ZpbHRlcl9tYXNrPC9jb25zdGFudD4gdG8gc2V0IHRoZQorZXhwZWN0ZWQgdmFsdWUgb2YgdGhlIGJpdHMgc2V0IGluIHRoZSBmaWx0ZXIgbWFzay4KK0lmIHRoZSBoYXJkd2FyZSBzdXBwb3J0cyBpdCB0aGVuIHNjYW5jb2RlcyB3aGljaCBkbyBub3QgbWF0Y2gKK3RoZSBmaWx0ZXIgd2lsbCBiZSBpZ25vcmVkLiBPdGhlcndpc2UgdGhlIHdyaXRlIHdpbGwgZmFpbCB3aXRoCithbiBlcnJvci48L3BhcmE+Cis8cGFyYT5UaGlzIHZhbHVlIG1heSBiZSByZXNldCB0byAwIGlmIHRoZSBjdXJyZW50IHByb3RvY29sIGlzIGFsdGVyZWQuPC9wYXJhPgorCis8L3NlY3Rpb24+Cis8c2VjdGlvbiBpZD0ic3lzX2NsYXNzX3JjX3JjTl9maWx0ZXJfbWFzayI+Cis8dGl0bGU+L3N5cy9jbGFzcy9yYy9yY04vZmlsdGVyX21hc2s8L3RpdGxlPgorPHBhcmE+U2V0cyB0aGUgc2NhbmNvZGUgZmlsdGVyIG1hc2sgb2YgYml0cyB0byBjb21wYXJlLgorVXNlIGluIGNvbWJpbmF0aW9uIHdpdGggPGNvbnN0YW50Pi9zeXMvY2xhc3MvcmMvcmNOL2ZpbHRlcjwvY29uc3RhbnQ+IHRvIHNldCB0aGUgYml0cworb2YgdGhlIHNjYW5jb2RlIHdoaWNoIHNob3VsZCBiZSBjb21wYXJlZCBhZ2FpbnN0IHRoZSBleHBlY3RlZAordmFsdWUuIEEgdmFsdWUgb2YgMCBkaXNhYmxlcyB0aGUgZmlsdGVyIHRvIGFsbG93IGFsbCB2YWxpZAorc2NhbmNvZGVzIHRvIGJlIHByb2Nlc3NlZC48L3BhcmE+Cis8cGFyYT5JZiB0aGUgaGFyZHdhcmUgc3VwcG9ydHMgaXQgdGhlbiBzY2FuY29kZXMgd2hpY2ggZG8gbm90IG1hdGNoCit0aGUgZmlsdGVyIHdpbGwgYmUgaWdub3JlZC4gT3RoZXJ3aXNlIHRoZSB3cml0ZSB3aWxsIGZhaWwgd2l0aAorYW4gZXJyb3IuPC9wYXJhPgorPHBhcmE+VGhpcyB2YWx1ZSBtYXkgYmUgcmVzZXQgdG8gMCBpZiB0aGUgY3VycmVudCBwcm90b2NvbCBpcyBhbHRlcmVkLjwvcGFyYT4KKworPC9zZWN0aW9uPgorPHNlY3Rpb24gaWQ9InN5c19jbGFzc19yY19yY05fd2FrZXVwX3Byb3RvY29scyI+Cis8dGl0bGU+L3N5cy9jbGFzcy9yYy9yY04vd2FrZXVwX3Byb3RvY29sczwvdGl0bGU+Cis8cGFyYT5SZWFkaW5nIHRoaXMgZmlsZSByZXR1cm5zIGEgbGlzdCBvZiBhdmFpbGFibGUgcHJvdG9jb2xzIHRvIHVzZSBmb3IgdGhlCit3YWtldXAgZmlsdGVyLCBzb21ldGhpbmcgbGlrZTo8L3BhcmE+Cis8cGFyYT48Y29uc3RhbnQ+cmM1IHJjNiBuZWMganZjIFtzb255XTwvY29uc3RhbnQ+PC9wYXJhPgorPHBhcmE+VGhlIGVuYWJsZWQgd2FrZXVwIHByb3RvY29sIGlzIHNob3duIGluIFtdIGJyYWNrZXRzLjwvcGFyYT4KKzxwYXJhPldyaXRpbmcgIitwcm90byIgd2lsbCBhZGQgYSBwcm90b2NvbCB0byB0aGUgbGlzdCBvZiBlbmFibGVkIHdha2V1cAorcHJvdG9jb2xzLjwvcGFyYT4KKzxwYXJhPldyaXRpbmcgIi1wcm90byIgd2lsbCByZW1vdmUgYSBwcm90b2NvbCBmcm9tIHRoZSBsaXN0IG9mIGVuYWJsZWQgd2FrZXVwCitwcm90b2NvbHMuPC9wYXJhPgorPHBhcmE+V3JpdGluZyAicHJvdG8iIHdpbGwgdXNlICJwcm90byIgZm9yIHdha2V1cCBldmVudHMuPC9wYXJhPgorPHBhcmE+V3JpdGluZyAibm9uZSIgd2lsbCBkaXNhYmxlIHdha2V1cC48L3BhcmE+Cis8cGFyYT5Xcml0ZSBmYWlscyB3aXRoIEVJTlZBTCBpZiBhbiBpbnZhbGlkIHByb3RvY29sIGNvbWJpbmF0aW9uIG9yIHVua25vd24KK3Byb3RvY29sIG5hbWUgaXMgdXNlZCwgb3IgaWYgd2FrZXVwIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGhhcmR3YXJlLjwvcGFyYT4KKworPC9zZWN0aW9uPgorPHNlY3Rpb24gaWQ9InN5c19jbGFzc19yY19yY05fd2FrZXVwX2ZpbHRlciI+Cis8dGl0bGU+L3N5cy9jbGFzcy9yYy9yY04vd2FrZXVwX2ZpbHRlcjwvdGl0bGU+Cis8cGFyYT5TZXRzIHRoZSBzY2FuY29kZSB3YWtldXAgZmlsdGVyIGV4cGVjdGVkIHZhbHVlLgorVXNlIGluIGNvbWJpbmF0aW9uIHdpdGggPGNvbnN0YW50Pi9zeXMvY2xhc3MvcmMvcmNOL3dha2V1cF9maWx0ZXJfbWFzazwvY29uc3RhbnQ+IHRvCitzZXQgdGhlIGV4cGVjdGVkIHZhbHVlIG9mIHRoZSBiaXRzIHNldCBpbiB0aGUgd2FrZXVwIGZpbHRlciBtYXNrCit0byB0cmlnZ2VyIGEgc3lzdGVtIHdha2UgZXZlbnQuPC9wYXJhPgorPHBhcmE+SWYgdGhlIGhhcmR3YXJlIHN1cHBvcnRzIGl0IGFuZCB3YWtldXBfZmlsdGVyX21hc2sgaXMgbm90IDAgdGhlbgorc2NhbmNvZGVzIHdoaWNoIG1hdGNoIHRoZSBmaWx0ZXIgd2lsbCB3YWtlIHRoZSBzeXN0ZW0gZnJvbSBlLmcuCitzdXNwZW5kIHRvIFJBTSBvciBwb3dlciBvZmYuCitPdGhlcndpc2UgdGhlIHdyaXRlIHdpbGwgZmFpbCB3aXRoIGFuIGVycm9yLjwvcGFyYT4KKzxwYXJhPlRoaXMgdmFsdWUgbWF5IGJlIHJlc2V0IHRvIDAgaWYgdGhlIHdha2V1cCBwcm90b2NvbCBpcyBhbHRlcmVkLjwvcGFyYT4KKworPC9zZWN0aW9uPgorPHNlY3Rpb24gaWQ9InN5c19jbGFzc19yY19yY05fd2FrZXVwX2ZpbHRlcl9tYXNrIj4KKzx0aXRsZT4vc3lzL2NsYXNzL3JjL3JjTi93YWtldXBfZmlsdGVyX21hc2s8L3RpdGxlPgorPHBhcmE+U2V0cyB0aGUgc2NhbmNvZGUgd2FrZXVwIGZpbHRlciBtYXNrIG9mIGJpdHMgdG8gY29tcGFyZS4KK1VzZSBpbiBjb21iaW5hdGlvbiB3aXRoIDxjb25zdGFudD4vc3lzL2NsYXNzL3JjL3JjTi93YWtldXBfZmlsdGVyPC9jb25zdGFudD4gdG8gc2V0Cit0aGUgYml0cyBvZiB0aGUgc2NhbmNvZGUgd2hpY2ggc2hvdWxkIGJlIGNvbXBhcmVkIGFnYWluc3QgdGhlCitleHBlY3RlZCB2YWx1ZSB0byB0cmlnZ2VyIGEgc3lzdGVtIHdha2UgZXZlbnQuPC9wYXJhPgorPHBhcmE+SWYgdGhlIGhhcmR3YXJlIHN1cHBvcnRzIGl0IGFuZCB3YWtldXBfZmlsdGVyX21hc2sgaXMgbm90IDAgdGhlbgorc2NhbmNvZGVzIHdoaWNoIG1hdGNoIHRoZSBmaWx0ZXIgd2lsbCB3YWtlIHRoZSBzeXN0ZW0gZnJvbSBlLmcuCitzdXNwZW5kIHRvIFJBTSBvciBwb3dlciBvZmYuCitPdGhlcndpc2UgdGhlIHdyaXRlIHdpbGwgZmFpbCB3aXRoIGFuIGVycm9yLjwvcGFyYT4KKzxwYXJhPlRoaXMgdmFsdWUgbWF5IGJlIHJlc2V0IHRvIDAgaWYgdGhlIHdha2V1cCBwcm90b2NvbCBpcyBhbHRlcmVkLjwvcGFyYT4KKzwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KKworPHNlY3Rpb24gaWQ9IlJlbW90ZV9jb250cm9sbGVyc190YWJsZXMiPgorPHRpdGxlPlJlbW90ZSBjb250cm9sbGVyIHRhYmxlczwvdGl0bGU+Cis8cGFyYT5VbmZvcnR1bmF0ZWx5LCBmb3Igc2V2ZXJhbCB5ZWFycywgdGhlcmUgd2FzIG5vIGVmZm9ydCB0byBjcmVhdGUgdW5pZm9ybSBJUiBrZXljb2RlcyBmb3IKK2RpZmZlcmVudCBkZXZpY2VzLiAgVGhpcyBjYXVzZWQgdGhlIHNhbWUgSVIga2V5bmFtZSB0byBiZSBtYXBwZWQgY29tcGxldGVseSBkaWZmZXJlbnRseSBvbgorZGlmZmVyZW50IElSIGRldmljZXMuIFRoaXMgcmVzdWx0ZWQgdGhhdCB0aGUgc2FtZSBJUiBrZXluYW1lIHRvIGJlIG1hcHBlZCBjb21wbGV0ZWx5IGRpZmZlcmVudCBvbgorZGlmZmVyZW50IElSJ3MuIER1ZSB0byB0aGF0LCBWNEwyIEFQSSBub3cgc3BlY2lmaWVzIGEgc3RhbmRhcmQgZm9yIG1hcHBpbmcgTWVkaWEga2V5cyBvbiBJUi48L3BhcmE+Cis8cGFyYT5UaGlzIHN0YW5kYXJkIHNob3VsZCBiZSB1c2VkIGJ5IGJvdGggVjRML0RWQiBkcml2ZXJzIGFuZCB1c2Vyc3BhY2UgYXBwbGljYXRpb25zPC9wYXJhPgorPHBhcmE+VGhlIG1vZHVsZXMgcmVnaXN0ZXIgdGhlIHJlbW90ZSBhcyBrZXlib2FyZCB3aXRoaW4gdGhlIGxpbnV4IGlucHV0IGxheWVyLiBUaGlzIG1lYW5zIHRoYXQgdGhlIElSIGtleSBzdHJva2VzIHdpbGwgbG9vayBsaWtlIG5vcm1hbCBrZXlib2FyZCBrZXkgc3Ryb2tlcyAoaWYgQ09ORklHX0lOUFVUX0tFWUJPQVJEIGlzIGVuYWJsZWQpLiBVc2luZyB0aGUgZXZlbnQgZGV2aWNlcyAoQ09ORklHX0lOUFVUX0VWREVWKSBpdCBpcyBwb3NzaWJsZSBmb3IgYXBwbGljYXRpb25zIHRvIGFjY2VzcyB0aGUgcmVtb3RlIHZpYSAvZGV2L2lucHV0L2V2ZW50IGRldmljZXMuPC9wYXJhPgorCis8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InJjX3N0YW5kYXJkX2tleW1hcCI+Cis8dGl0bGU+SVIgZGVmYXVsdCBrZXltYXBwaW5nPC90aXRsZT4KKzx0Z3JvdXAgY29scz0iMyI+CismY3Mtc3RyOworPHRib2R5IHZhbGlnbj0idG9wIj4KKzxyb3c+Cis8ZW50cnk+S2V5IGNvZGU8L2VudHJ5PgorPGVudHJ5Pk1lYW5pbmc8L2VudHJ5PgorPGVudHJ5PktleSBleGFtcGxlcyBvbiBJUjwvZW50cnk+Cis8L3Jvdz4KKworPHJvdz48ZW50cnk+PGVtcGhhc2lzIHJvbGU9ImJvbGQiPk51bWVyaWMga2V5czwvZW1waGFzaXM+PC9lbnRyeT48L3Jvdz4KKworPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV8wPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5LZXlib2FyZCBkaWdpdCAwPC9lbnRyeT48ZW50cnk+MDwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZXzE8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PktleWJvYXJkIGRpZ2l0IDE8L2VudHJ5PjxlbnRyeT4xPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfMjwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+S2V5Ym9hcmQgZGlnaXQgMjwvZW50cnk+PGVudHJ5PjI8L2VudHJ5Pjwvcm93PgorPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV8zPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5LZXlib2FyZCBkaWdpdCAzPC9lbnRyeT48ZW50cnk+MzwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZXzQ8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PktleWJvYXJkIGRpZ2l0IDQ8L2VudHJ5PjxlbnRyeT40PC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfNTwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+S2V5Ym9hcmQgZGlnaXQgNTwvZW50cnk+PGVudHJ5PjU8L2VudHJ5Pjwvcm93PgorPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV82PC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5LZXlib2FyZCBkaWdpdCA2PC9lbnRyeT48ZW50cnk+NjwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZXzc8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PktleWJvYXJkIGRpZ2l0IDc8L2VudHJ5PjxlbnRyeT43PC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfODwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+S2V5Ym9hcmQgZGlnaXQgODwvZW50cnk+PGVudHJ5Pjg8L2VudHJ5Pjwvcm93PgorPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV85PC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5LZXlib2FyZCBkaWdpdCA5PC9lbnRyeT48ZW50cnk+OTwvZW50cnk+PC9yb3c+CisKKzxyb3c+PGVudHJ5PjxlbXBoYXNpcyByb2xlPSJib2xkIj5Nb3ZpZSBwbGF5IGNvbnRyb2w8L2VtcGhhc2lzPjwvZW50cnk+PC9yb3c+CisKKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfRk9SV0FSRDwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+SW5zdGFudGx5IGFkdmFuY2UgaW4gdGltZTwvZW50cnk+PGVudHJ5PiZndDsmZ3Q7IC8gRk9SV0FSRDwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX0JBQ0s8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5Pkluc3RhbnRseSBnbyBiYWNrIGluIHRpbWU8L2VudHJ5PjxlbnRyeT4mbHQ7Jmx0OyZsdDsgLyBCQUNLPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfRkFTVEZPUldBUkQ8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PlBsYXkgbW92aWUgZmFzdGVyPC9lbnRyeT48ZW50cnk+Jmd0OyZndDsmZ3Q7IC8gRk9SV0FSRDwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX1JFV0lORDwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+UGxheSBtb3ZpZSBiYWNrPC9lbnRyeT48ZW50cnk+UkVXSU5EIC8gQkFDS1dBUkQ8L2VudHJ5Pjwvcm93PgorPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV9ORVhUPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5TZWxlY3QgbmV4dCBjaGFwdGVyIC8gc3ViLWNoYXB0ZXIgLyBpbnRlcnZhbDwvZW50cnk+PGVudHJ5Pk5FWFQgLyBTS0lQPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfUFJFVklPVVM8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PlNlbGVjdCBwcmV2aW91cyBjaGFwdGVyIC8gc3ViLWNoYXB0ZXIgLyBpbnRlcnZhbDwvZW50cnk+PGVudHJ5PiZsdDsmbHQ7IC8gIFBSRVYgLyBQUkVWSU9VUzwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX0FHQUlOPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5SZXBlYXQgdGhlIHZpZGVvIG9yIGEgdmlkZW8gaW50ZXJ2YWw8L2VudHJ5PjxlbnRyeT5SRVBFQVQgLyBMT09QIC8gUkVDQUxMPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfUEFVU0U8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PlBhdXNlIHNyb3dlYW08L2VudHJ5PjxlbnRyeT5QQVVTRSAvIEZSRUVaRTwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX1BMQVk8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PlBsYXkgbW92aWUgYXQgdGhlIG5vcm1hbCB0aW1lc2hpZnQ8L2VudHJ5PjxlbnRyeT5OT1JNQUwgVElNRVNISUZUIC8gTElWRSAvICZndDs8L2VudHJ5Pjwvcm93PgorPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV9QTEFZUEFVU0U8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PkFsdGVybmF0ZSBiZXR3ZWVuIHBsYXkgYW5kIHBhdXNlPC9lbnRyeT48ZW50cnk+UExBWSAvIFBBVVNFPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfU1RPUDwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+U3RvcCBzcm93ZWFtPC9lbnRyeT48ZW50cnk+U1RPUDwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX1JFQ09SRDwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+U3RhcnQvc3RvcCByZWNvcmRpbmcgc3Jvd2VhbTwvZW50cnk+PGVudHJ5PkNBUFRVUkUgLyBSRUMgLyBSRUNPUkQvUEFVU0U8L2VudHJ5Pjwvcm93PgorPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV9DQU1FUkE8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PlRha2UgYSBwaWN0dXJlIG9mIHRoZSBpbWFnZTwvZW50cnk+PGVudHJ5PkNBTUVSQSBJQ09OIC8gQ0FQVFVSRSAvIFNOQVBTSE9UPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfU0hVRkZMRTwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+RW5hYmxlIHNodWZmbGUgbW9kZTwvZW50cnk+PGVudHJ5PlNIVUZGTEU8L2VudHJ5Pjwvcm93PgorPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV9USU1FPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5BY3RpdmF0ZSB0aW1lIHNoaWZ0IG1vZGU8L2VudHJ5PjxlbnRyeT5USU1FIFNISUZUPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfVElUTEU8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PkFsbG93IGNoYW5naW5nIHRoZSBjaGFwdGVyPC9lbnRyeT48ZW50cnk+Q0hBUFRFUjwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX1NVQlRJVExFPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5BbGxvdyBjaGFuZ2luZyB0aGUgc3VidGl0bGU8L2VudHJ5PjxlbnRyeT5TVUJUSVRMRTwvZW50cnk+PC9yb3c+CisKKzxyb3c+PGVudHJ5PjxlbXBoYXNpcyByb2xlPSJib2xkIj5JbWFnZSBjb250cm9sPC9lbXBoYXNpcz48L2VudHJ5Pjwvcm93PgorCis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX0JSSUdIVE5FU1NET1dOPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5EZWNyZWFzZSBCcmlnaHRuZXNzPC9lbnRyeT48ZW50cnk+QlJJR0hUTkVTUyBERUNSRUFTRTwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX0JSSUdIVE5FU1NVUDwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+SW5jcmVhc2UgQnJpZ2h0bmVzczwvZW50cnk+PGVudHJ5PkJSSUdIVE5FU1MgSU5DUkVBU0U8L2VudHJ5Pjwvcm93PgorCis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX0FOR0xFPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5Td2l0Y2ggdmlkZW8gY2FtZXJhIGFuZ2xlIChvbiB2aWRlb3Mgd2l0aCBtb3JlIHRoYW4gb25lIGFuZ2xlIHN0b3JlZCk8L2VudHJ5PjxlbnRyeT5BTkdMRSAvIFNXQVA8L2VudHJ5Pjwvcm93PgorPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV9FUEc8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5Pk9wZW4gdGhlIEVsZWNyb3dvbmljIFBsYXkgR3VpZGUgKEVQRyk8L2VudHJ5PjxlbnRyeT5FUEcgLyBHVUlERTwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX1RFWFQ8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PkFjdGl2YXRlL2NoYW5nZSBjbG9zZWQgY2FwdGlvbiBtb2RlPC9lbnRyeT48ZW50cnk+Q0xPU0VEIENBUFRJT04vVEVMRVRFWFQgLyBEVkQgVEVYVCAvIFRFTEVURVhUIC8gVFRYPC9lbnRyeT48L3Jvdz4KKworPHJvdz48ZW50cnk+PGVtcGhhc2lzIHJvbGU9ImJvbGQiPkF1ZGlvIGNvbnRyb2w8L2VtcGhhc2lzPjwvZW50cnk+PC9yb3c+CisKKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfQVVESU88L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PkNoYW5nZSBhdWRpbyBzb3VyY2U8L2VudHJ5PjxlbnRyeT5BVURJTyBTT1VSQ0UgLyBBVURJTyAvIE1VU0lDPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfTVVURTwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+TXV0ZS91bm11dGUgYXVkaW88L2VudHJ5PjxlbnRyeT5NVVRFIC8gREVNVVRFIC8gVU5NVVRFPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfVk9MVU1FRE9XTjwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+RGVjcmVhc2Ugdm9sdW1lPC9lbnRyeT48ZW50cnk+Vk9MVU1FLSAvIFZPTFVNRSBET1dOPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfVk9MVU1FVVA8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PkluY3JlYXNlIHZvbHVtZTwvZW50cnk+PGVudHJ5PlZPTFVNRSsgLyBWT0xVTUUgVVA8L2VudHJ5Pjwvcm93PgorPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV9NT0RFPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5DaGFuZ2Ugc291bmQgbW9kZTwvZW50cnk+PGVudHJ5Pk1PTk8vU1RFUkVPPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfTEFOR1VBR0U8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PlNlbGVjdCBMYW5ndWFnZTwvZW50cnk+PGVudHJ5PjFTVCAvIDJORCBMQU5HVUFHRSAvIERWRCBMQU5HIC8gTVRTL1NBUCAvIE1UUyBTRUw8L2VudHJ5Pjwvcm93PgorCis8cm93PjxlbnRyeT48ZW1waGFzaXMgcm9sZT0iYm9sZCI+Q2hhbm5lbCBjb250cm9sPC9lbXBoYXNpcz48L2VudHJ5Pjwvcm93PgorCis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX0NIQU5ORUw8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PkdvIHRvIHRoZSBuZXh0IGZhdm9yaXRlIGNoYW5uZWw8L2VudHJ5PjxlbnRyeT5BTFQgLyBDSEFOTkVMIC8gQ0ggU1VSRklORyAvIFNVUkYgLyBGQVY8L2VudHJ5Pjwvcm93PgorPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV9DSEFOTkVMRE9XTjwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+RGVjcmVhc2UgY2hhbm5lbCBzZXF1ZW5jaWFsbHk8L2VudHJ5PjxlbnRyeT5DSEFOTkVMIC0gLyBDSEFOTkVMIERPV04gLyBET1dOPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfQ0hBTk5FTFVQPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5JbmNyZWFzZSBjaGFubmVsIHNlcXVlbmNpYWxseTwvZW50cnk+PGVudHJ5PkNIQU5ORUwgKyAvIENIQU5ORUwgVVAgLyBVUDwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX0RJR0lUUzwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+VXNlIG1vcmUgdGhhbiBvbmUgZGlnaXQgZm9yIGNoYW5uZWw8L2VudHJ5PjxlbnRyeT5QTFVTIC8gMTAwLyAxeHggLyB4eHggLyAgLS8tLSAgLyBTaW5nbGUgRG91YmxlIFRyaXBsZSBEaWdpdDwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX1NFQVJDSDwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+U3RhcnQgY2hhbm5lbCBhdXRvc2NhbjwvZW50cnk+PGVudHJ5PlNDQU4gLyBBVVRPU0NBTjwvZW50cnk+PC9yb3c+CisKKzxyb3c+PGVudHJ5PjxlbXBoYXNpcyByb2xlPSJib2xkIj5Db2xvcmVkIGtleXM8L2VtcGhhc2lzPjwvZW50cnk+PC9yb3c+CisKKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfQkxVRTwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+SVIgQmx1ZSBrZXk8L2VudHJ5PjxlbnRyeT5CTFVFPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfR1JFRU48L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PklSIEdyZWVuIEtleTwvZW50cnk+PGVudHJ5PkdSRUVOPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfUkVEPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5JUiBSZWQga2V5PC9lbnRyeT48ZW50cnk+UkVEPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfWUVMTE9XPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5JUiBZZWxsb3cga2V5PC9lbnRyeT48ZW50cnk+IFlFTExPVzwvZW50cnk+PC9yb3c+CisKKzxyb3c+PGVudHJ5PjxlbXBoYXNpcyByb2xlPSJib2xkIj5NZWRpYSBzZWxlY3Rpb248L2VtcGhhc2lzPjwvZW50cnk+PC9yb3c+CisKKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfQ0Q8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PkNoYW5nZSBpbnB1dCBzb3VyY2UgdG8gQ29tcGFjdCBEaXNjPC9lbnRyeT48ZW50cnk+Q0Q8L2VudHJ5Pjwvcm93PgorPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV9EVkQ8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PkNoYW5nZSBpbnB1dCB0byBEVkQ8L2VudHJ5PjxlbnRyeT5EVkQgLyBEVkQgTUVOVTwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX0VKRUNUQ0xPU0VDRDwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+T3Blbi9jbG9zZSB0aGUgQ0QvRFZEIHBsYXllcjwvZW50cnk+PGVudHJ5Pi0mZ3Q7ICkgLyBDTE9TRSAvIE9QRU48L2VudHJ5Pjwvcm93PgorCis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX01FRElBPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5UdXJuIG9uL29mZiBNZWRpYSBhcHBsaWNhdGlvbjwvZW50cnk+PGVudHJ5PlBDL1RWIC8gIFRVUk4gT04vT0ZGIEFQUDwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX1BDPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5TZWxlY3RzIGZyb20gVFYgdG8gUEM8L2VudHJ5PjxlbnRyeT5QQzwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX1JBRElPPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5QdXQgaW50byBBTS9GTSByYWRpbyBtb2RlPC9lbnRyeT48ZW50cnk+UkFESU8gLyBUVi9GTSAvIFRWL1JBRElPIC8gRk0gLyBGTS9SQURJTzwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX1RWPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5TZWxlY3QgdHYgbW9kZTwvZW50cnk+PGVudHJ5PlRWIC8gTElWRSBUVjwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX1RWMjwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+U2VsZWN0IENhYmxlIG1vZGU8L2VudHJ5PjxlbnRyeT5BSVIvQ0JMPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfVkNSPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5TZWxlY3QgVkNSIG1vZGU8L2VudHJ5PjxlbnRyeT5WQ1IgTU9ERSAvIERUUjwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX1ZJREVPPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5BbHRlcm5hdGUgYmV0d2VlbiBpbnB1dCBtb2RlczwvZW50cnk+PGVudHJ5PlNPVVJDRSAvIFNFTEVDVCAvIERJU1BMQVkgLyBTV0lUQ0ggSU5QVVRTIC8gVklERU88L2VudHJ5Pjwvcm93PgorCis8cm93PjxlbnRyeT48ZW1waGFzaXMgcm9sZT0iYm9sZCI+UG93ZXIgY29udHJvbDwvZW1waGFzaXM+PC9lbnRyeT48L3Jvdz4KKworPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV9QT1dFUjwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+VHVybiBvbi9vZmYgY29tcHV0ZXI8L2VudHJ5PjxlbnRyeT5TWVNURU0gUE9XRVIgLyBDT01QVVRFUiBQT1dFUjwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX1BPV0VSMjwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+VHVybiBvbi9vZmYgYXBwbGljYXRpb248L2VudHJ5PjxlbnRyeT5UViBPTi9PRkYgLyBQT1dFUjwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX1NMRUVQPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5BY3RpdmF0ZSBzbGVlcCB0aW1lcjwvZW50cnk+PGVudHJ5PlNMRUVQIC8gU0xFRVAgVElNRVI8L2VudHJ5Pjwvcm93PgorPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV9TVVNQRU5EPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5QdXQgY29tcHV0ZXIgaW50byBzdXNwZW5kIG1vZGU8L2VudHJ5PjxlbnRyeT5TVEFOREJZIC8gU1VTUEVORDwvZW50cnk+PC9yb3c+CisKKzxyb3c+PGVudHJ5PjxlbXBoYXNpcyByb2xlPSJib2xkIj5XaW5kb3cgY29udHJvbDwvZW1waGFzaXM+PC9lbnRyeT48L3Jvdz4KKworPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV9DTEVBUjwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+U3RvcCBzcm93ZWFtIGFuZCByZXR1cm4gdG8gZGVmYXVsdCBpbnB1dCB2aWRlby9hdWRpbzwvZW50cnk+PGVudHJ5PkNMRUFSIC8gUkVTRVQgLyBCT1NTIEtFWTwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX0NZQ0xFV0lORE9XUzwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+TWluaW1pemUgd2luZG93cyBhbmQgbW92ZSB0byB0aGUgbmV4dCBvbmU8L2VudHJ5PjxlbnRyeT5BTFQtVEFCIC8gTUlOSU1JWkUgLyBERVNLVE9QPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfRkFWT1JJVEVTPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5PcGVuIHRoZSBmYXZvcml0ZXMgc3Jvd2VhbSB3aW5kb3c8L2VudHJ5PjxlbnRyeT5UViBXQUxMIC8gRmF2b3JpdGVzPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfTUVOVTwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+Q2FsbCBhcHBsaWNhdGlvbiBtZW51PC9lbnRyeT48ZW50cnk+Mk5EIENPTlRST0xTIChVU0E6IE1FTlUpIC8gRFZEL01FTlUgLyBTSE9XL0hJREUgQ1RSTDwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX05FVzwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+T3Blbi9DbG9zZSBQaWN0dXJlIGluIFBpY3R1cmU8L2VudHJ5PjxlbnRyeT5QSVA8L2VudHJ5Pjwvcm93PgorPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV9PSzwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+U2VuZCBhIGNvbmZpcm1hdGlvbiBjb2RlIHRvIGFwcGxpY2F0aW9uPC9lbnRyeT48ZW50cnk+T0sgLyBFTlRFUiAvIFJFVFVSTjwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX1NDUkVFTjwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+U2VsZWN0IHNjcmVlbiBhc3BlY3QgcmF0aW88L2VudHJ5PjxlbnRyeT40OjMgMTY6OSBTRUxFQ1Q8L2VudHJ5Pjwvcm93PgorPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV9aT09NPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5QdXQgZGV2aWNlIGludG8gem9vbS9mdWxsIHNjcmVlbiBtb2RlPC9lbnRyeT48ZW50cnk+Wk9PTSAvIEZVTEwgU0NSRUVOIC8gWk9PTSsgLyBISURFIFBBTk5FTCAvIFNXSVRDSDwvZW50cnk+PC9yb3c+CisKKzxyb3c+PGVudHJ5PjxlbXBoYXNpcyByb2xlPSJib2xkIj5OYXZpZ2F0aW9uIGtleXM8L2VtcGhhc2lzPjwvZW50cnk+PC9yb3c+CisKKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfRVNDPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5DYW5jZWwgY3VycmVudCBvcGVyYXRpb248L2VudHJ5PjxlbnRyeT5DQU5DRUwgLyBCQUNLPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfSEVMUDwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+T3BlbiBhIEhlbHAgd2luZG93PC9lbnRyeT48ZW50cnk+SEVMUDwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX0hPTUVQQUdFPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5OYXZpZ2F0ZSB0byBIb21lcGFnZTwvZW50cnk+PGVudHJ5PkhPTUU8L2VudHJ5Pjwvcm93PgorPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV9JTkZPPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5PcGVuIE9uIFNjcmVlbiBEaXNwbGF5PC9lbnRyeT48ZW50cnk+RElTUExBWSBJTkZPUk1BVElPTiAvIE9TRDwvZW50cnk+PC9yb3c+Cis8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX1dXVzwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+T3BlbiB0aGUgZGVmYXVsdCBicm93c2VyPC9lbnRyeT48ZW50cnk+V0VCPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfVVA8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PlVwIGtleTwvZW50cnk+PGVudHJ5PlVQPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfRE9XTjwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+RG93biBrZXk8L2VudHJ5PjxlbnRyeT5ET1dOPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfTEVGVDwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+TGVmdCBrZXk8L2VudHJ5PjxlbnRyeT5MRUZUPC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfUklHSFQ8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PlJpZ2h0IGtleTwvZW50cnk+PGVudHJ5PlJJR0hUPC9lbnRyeT48L3Jvdz4KKworPHJvdz48ZW50cnk+PGVtcGhhc2lzIHJvbGU9ImJvbGQiPk1pc2NlbGxhbmVvdXMga2V5czwvZW1waGFzaXM+PC9lbnRyeT48L3Jvdz4KKworPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV9ET1Q8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PlJldHVybiBhIGRvdDwvZW50cnk+PGVudHJ5Pi48L2VudHJ5Pjwvcm93PgorPHJvdz48ZW50cnk+PGNvbnN0YW50PktFWV9GTjwvY29uc3RhbnQ+PC9lbnRyeT48ZW50cnk+U2VsZWN0IGEgZnVuY3Rpb248L2VudHJ5PjxlbnRyeT5GVU5DVElPTjwvZW50cnk+PC9yb3c+CisKKzwvdGJvZHk+Cis8L3Rncm91cD4KKzwvdGFibGU+CisKKzxwYXJhPkl0IHNob3VsZCBiZSBub3RlZCB0aGF0LCBzb21ldGltZXMsIHRoZXJlIHNvbWUgZnVuZGFtZW50YWwgbWlzc2luZyBrZXlzIGF0IHNvbWUgY2hlYXBlciBJUidzLiBEdWUgdG8gdGhhdCwgaXQgaXMgcmVjb21tZW5kZWQgdG86PC9wYXJhPgorCis8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InJjX2tleW1hcF9ub3RlcyI+Cis8dGl0bGU+Tm90ZXM8L3RpdGxlPgorPHRncm91cCBjb2xzPSIxIj4KKyZjcy1zdHI7Cis8dGJvZHkgdmFsaWduPSJ0b3AiPgorPHJvdz4KKzxlbnRyeT5PbiBzaW1wbGVyIElSJ3MsIHdpdGhvdXQgc2VwYXJhdGUgY2hhbm5lbCBrZXlzLCB5b3UgbmVlZCB0byBtYXAgVVAgYXMgPGNvbnN0YW50PktFWV9DSEFOTkVMVVA8L2NvbnN0YW50PjwvZW50cnk+Cis8L3Jvdz48cm93PgorPGVudHJ5Pk9uIHNpbXBsZXIgSVIncywgd2l0aG91dCBzZXBhcmF0ZSBjaGFubmVsIGtleXMsIHlvdSBuZWVkIHRvIG1hcCBET1dOIGFzIDxjb25zdGFudD5LRVlfQ0hBTk5FTERPV048L2NvbnN0YW50PjwvZW50cnk+Cis8L3Jvdz48cm93PgorPGVudHJ5Pk9uIHNpbXBsZXIgSVIncywgd2l0aG91dCBzZXBhcmF0ZSB2b2x1bWUga2V5cywgeW91IG5lZWQgdG8gbWFwIExFRlQgYXMgPGNvbnN0YW50PktFWV9WT0xVTUVET1dOPC9jb25zdGFudD48L2VudHJ5PgorPC9yb3c+PHJvdz4KKzxlbnRyeT5PbiBzaW1wbGVyIElSJ3MsIHdpdGhvdXQgc2VwYXJhdGUgdm9sdW1lIGtleXMsIHlvdSBuZWVkIHRvIG1hcCBSSUdIVCBhcyA8Y29uc3RhbnQ+S0VZX1ZPTFVNRVVQPC9jb25zdGFudD48L2VudHJ5PgorPC9yb3c+Cis8L3Rib2R5PgorPC90Z3JvdXA+Cis8L3RhYmxlPgorCis8L3NlY3Rpb24+CisKKzxzZWN0aW9uIGlkPSJSZW1vdGVfY29udHJvbGxlcnNfdGFibGVfY2hhbmdlIj4KKzx0aXRsZT5DaGFuZ2luZyBkZWZhdWx0IFJlbW90ZSBDb250cm9sbGVyIG1hcHBpbmdzPC90aXRsZT4KKzxwYXJhPlRoZSBldmVudCBpbnRlcmZhY2UgcHJvdmlkZXMgdHdvIGlvY3RscyB0byBiZSB1c2VkIGFnYWluc3QKK3RoZSAvZGV2L2lucHV0L2V2ZW50IGRldmljZSwgdG8gYWxsb3cgY2hhbmdpbmcgdGhlIGRlZmF1bHQKK2tleW1hcHBpbmcuPC9wYXJhPgorCis8cGFyYT5UaGlzIHByb2dyYW0gZGVtb25zdHJhdGVzIGhvdyB0byByZXBsYWNlIHRoZSBrZXltYXAgdGFibGVzLjwvcGFyYT4KKyZzdWIta2V5dGFibGUtYzsKKzwvc2VjdGlvbj4KKworJnN1Yi1saXJjX2RldmljZV9pbnRlcmZhY2U7Cis8L2NoYXB0ZXI+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3NlbGVjdGlvbi1hcGkueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9zZWxlY3Rpb24tYXBpLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGNiZGVkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9zZWxlY3Rpb24tYXBpLnhtbApAQCAtMCwwICsxLDMyNCBAQAorPHNlY3Rpb24gaWQ9InNlbGVjdGlvbi1hcGkiPgorCisgIDx0aXRsZT5FeHBlcmltZW50YWwgQVBJIGZvciBjcm9wcGluZywgY29tcG9zaW5nIGFuZCBzY2FsaW5nPC90aXRsZT4KKworICAgICAgPG5vdGU+CisJPHRpdGxlPkV4cGVyaW1lbnRhbDwvdGl0bGU+CisKKwk8cGFyYT5UaGlzIGlzIGFuIDxsaW5rIGxpbmtlbmQ9ImV4cGVyaW1lbnRhbCI+ZXhwZXJpbWVudGFsPC9saW5rPgoraW50ZXJmYWNlIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuPC9wYXJhPgorICAgICAgPC9ub3RlPgorCisgIDxzZWN0aW9uPgorICAgIDx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorCis8cGFyYT5Tb21lIHZpZGVvIGNhcHR1cmUgZGV2aWNlcyBjYW4gc2FtcGxlIGEgc3Vic2VjdGlvbiBvZiBhIHBpY3R1cmUgYW5kCitzaHJpbmsgb3IgZW5sYXJnZSBpdCB0byBhbiBpbWFnZSBvZiBhcmJpdHJhcnkgc2l6ZS4gTmV4dCwgdGhlIGRldmljZXMgY2FuCitpbnNlcnQgdGhlIGltYWdlIGludG8gbGFyZ2VyIG9uZS4gU29tZSB2aWRlbyBvdXRwdXQgZGV2aWNlcyBjYW4gY3JvcCBwYXJ0IG9mIGFuCitpbnB1dCBpbWFnZSwgc2NhbGUgaXQgdXAgb3IgZG93biBhbmQgaW5zZXJ0IGl0IGF0IGFuIGFyYml0cmFyeSBzY2FuIGxpbmUgYW5kCitob3Jpem9udGFsIG9mZnNldCBpbnRvIGEgdmlkZW8gc2lnbmFsLiBXZSBjYWxsIHRoZXNlIGFiaWxpdGllcyBjcm9wcGluZywKK3NjYWxpbmcgYW5kIGNvbXBvc2luZy48L3BhcmE+CisKKzxwYXJhPk9uIGEgdmlkZW8gPGVtcGhhc2lzPmNhcHR1cmU8L2VtcGhhc2lzPiBkZXZpY2UgdGhlIHNvdXJjZSBpcyBhIHZpZGVvCitzaWduYWwsIGFuZCB0aGUgY3JvcHBpbmcgdGFyZ2V0IGRldGVybWluZSB0aGUgYXJlYSBhY3R1YWxseSBzYW1wbGVkLiBUaGUgc2luaworaXMgYW4gaW1hZ2Ugc3RvcmVkIGluIGEgbWVtb3J5IGJ1ZmZlci4gIFRoZSBjb21wb3NpbmcgYXJlYSBzcGVjaWZpZXMgd2hpY2ggcGFydAorb2YgdGhlIGJ1ZmZlciBpcyBhY3R1YWxseSB3cml0dGVuIHRvIGJ5IHRoZSBoYXJkd2FyZS4gPC9wYXJhPgorCis8cGFyYT5PbiBhIHZpZGVvIDxlbXBoYXNpcz5vdXRwdXQ8L2VtcGhhc2lzPiBkZXZpY2UgdGhlIHNvdXJjZSBpcyBhbiBpbWFnZSBpbiBhCittZW1vcnkgYnVmZmVyLCBhbmQgdGhlIGNyb3BwaW5nIHRhcmdldCBpcyBhIHBhcnQgb2YgYW4gaW1hZ2UgdG8gYmUgc2hvd24gb24gYQorZGlzcGxheS4gVGhlIHNpbmsgaXMgdGhlIGRpc3BsYXkgb3IgdGhlIGdyYXBoaWNzIHNjcmVlbi4gVGhlIGFwcGxpY2F0aW9uIG1heQorc2VsZWN0IHRoZSBwYXJ0IG9mIGRpc3BsYXkgd2hlcmUgdGhlIGltYWdlIHNob3VsZCBiZSBkaXNwbGF5ZWQuIFRoZSBzaXplIGFuZAorcG9zaXRpb24gb2Ygc3VjaCBhIHdpbmRvdyBpcyBjb250cm9sbGVkIGJ5IHRoZSBjb21wb3NlIHRhcmdldC48L3BhcmE+CisKKzxwYXJhPlJlY3RhbmdsZXMgZm9yIGFsbCBjcm9wcGluZyBhbmQgY29tcG9zaW5nIHRhcmdldHMgYXJlIGRlZmluZWQgZXZlbiBpZiB0aGUKK2RldmljZSBkb2VzIHN1cHBvcnRzIG5laXRoZXIgY3JvcHBpbmcgbm9yIGNvbXBvc2luZy4gVGhlaXIgc2l6ZSBhbmQgcG9zaXRpb24KK3dpbGwgYmUgZml4ZWQgaW4gc3VjaCBhIGNhc2UuIElmIHRoZSBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBzY2FsaW5nIHRoZW4gdGhlCitjcm9wcGluZyBhbmQgY29tcG9zaW5nIHJlY3RhbmdsZXMgaGF2ZSB0aGUgc2FtZSBzaXplLjwvcGFyYT4KKworICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5TZWxlY3Rpb24gdGFyZ2V0czwvdGl0bGU+CisKKyAgICAgIDxwYXJhPgorICAgICAgPGZpZ3VyZSBpZD0ic2VsLXRhcmdldHMtY2FwdHVyZSI+CisJPHRpdGxlPkNyb3BwaW5nIGFuZCBjb21wb3NpbmcgdGFyZ2V0czwvdGl0bGU+CisJPG1lZGlhb2JqZWN0PgorCSAgPGltYWdlb2JqZWN0PgorCSAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9InNlbGVjdGlvbi5wbmciIGZvcm1hdD0iUE5HIiAvPgorCSAgPC9pbWFnZW9iamVjdD4KKwkgIDx0ZXh0b2JqZWN0PgorCSAgICA8cGhyYXNlPlRhcmdldHMgdXNlZCBieSBhIGNyb3BwaW5nLCBjb21wb3NpbmcgYW5kIHNjYWxpbmcKKyAgICAgICAgICAgIHByb2Nlc3M8L3BocmFzZT4KKwkgIDwvdGV4dG9iamVjdD4KKwk8L21lZGlhb2JqZWN0PgorICAgICAgPC9maWd1cmU+CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPlNlZSA8eHJlZiBsaW5rZW5kPSJ2NGwyLXNlbGVjdGlvbi10YXJnZXRzIiAvPiBmb3IgbW9yZQorICAgIGluZm9ybWF0aW9uLjwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgPHNlY3Rpb24+CisKKyAgPHRpdGxlPkNvbmZpZ3VyYXRpb248L3RpdGxlPgorCis8cGFyYT5BcHBsaWNhdGlvbnMgY2FuIHVzZSB0aGUgPGxpbmsgbGlua2VuZD0idmlkaW9jLWctc2VsZWN0aW9uIj5zZWxlY3Rpb24KK0FQSTwvbGluaz4gdG8gc2VsZWN0IGFuIGFyZWEgaW4gYSB2aWRlbyBzaWduYWwgb3IgYSBidWZmZXIsIGFuZCB0byBxdWVyeSBmb3IKK2RlZmF1bHQgc2V0dGluZ3MgYW5kIGhhcmR3YXJlIGxpbWl0cy48L3BhcmE+CisKKzxwYXJhPlZpZGVvIGhhcmR3YXJlIGNhbiBoYXZlIHZhcmlvdXMgY3JvcHBpbmcsIGNvbXBvc2luZyBhbmQgc2NhbGluZworbGltaXRhdGlvbnMuIEl0IG1heSBvbmx5IHNjYWxlIHVwIG9yIGRvd24sIHN1cHBvcnQgb25seSBkaXNjcmV0ZSBzY2FsaW5nCitmYWN0b3JzLCBvciBoYXZlIGRpZmZlcmVudCBzY2FsaW5nIGFiaWxpdGllcyBpbiB0aGUgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwKK2RpcmVjdGlvbnMuIEFsc28gaXQgbWF5IG5vdCBzdXBwb3J0IHNjYWxpbmcgYXQgYWxsLiBBdCB0aGUgc2FtZSB0aW1lIHRoZQorY3JvcHBpbmcvY29tcG9zaW5nIHJlY3RhbmdsZXMgbWF5IGhhdmUgdG8gYmUgYWxpZ25lZCwgYW5kIGJvdGggdGhlIHNvdXJjZSBhbmQKK3RoZSBzaW5rIG1heSBoYXZlIGFyYml0cmFyeSB1cHBlciBhbmQgbG93ZXIgc2l6ZSBsaW1pdHMuIFRoZXJlZm9yZSwgYXMgdXN1YWwsCitkcml2ZXJzIGFyZSBleHBlY3RlZCB0byBhZGp1c3QgdGhlIHJlcXVlc3RlZCBwYXJhbWV0ZXJzIGFuZCByZXR1cm4gdGhlIGFjdHVhbAordmFsdWVzIHNlbGVjdGVkLiBBbiBhcHBsaWNhdGlvbiBjYW4gY29udHJvbCB0aGUgcm91bmRpbmcgYmVoYXZpb3VyIHVzaW5nIDxsaW5rCitsaW5rZW5kPSJ2NGwyLXNlbGVjdGlvbi1mbGFncyI+IGNvbnN0cmFpbnQgZmxhZ3MgPC9saW5rPi48L3BhcmE+CisKKyAgIDxzZWN0aW9uPgorCisgICA8dGl0bGU+Q29uZmlndXJhdGlvbiBvZiB2aWRlbyBjYXB0dXJlPC90aXRsZT4KKworPHBhcmE+U2VlIGZpZ3VyZSA8eHJlZiBsaW5rZW5kPSJzZWwtdGFyZ2V0cy1jYXB0dXJlIiAvPiBmb3IgZXhhbXBsZXMgb2YgdGhlCitzZWxlY3Rpb24gdGFyZ2V0cyBhdmFpbGFibGUgZm9yIGEgdmlkZW8gY2FwdHVyZSBkZXZpY2UuICBJdCBpcyByZWNvbW1lbmRlZCB0bworY29uZmlndXJlIHRoZSBjcm9wcGluZyB0YXJnZXRzIGJlZm9yZSB0byB0aGUgY29tcG9zaW5nIHRhcmdldHMuPC9wYXJhPgorCis8cGFyYT5UaGUgcmFuZ2Ugb2YgY29vcmRpbmF0ZXMgb2YgdGhlIHRvcCBsZWZ0IGNvcm5lciwgd2lkdGggYW5kIGhlaWdodCBvZgorYXJlYXMgdGhhdCBjYW4gYmUgc2FtcGxlZCBpcyBnaXZlbiBieSB0aGUgPGNvbnN0YW50PlY0TDJfU0VMX1RHVF9DUk9QX0JPVU5EUzwvY29uc3RhbnQ+Cit0YXJnZXQuIEl0IGlzIHJlY29tbWVuZGVkIGZvciB0aGUgZHJpdmVyIGRldmVsb3BlcnMgdG8gcHV0IHRoZQordG9wL2xlZnQgY29ybmVyIGF0IHBvc2l0aW9uIDxjb25zdGFudD4oMCwwKTwvY29uc3RhbnQ+LiAgVGhlIHJlY3RhbmdsZSdzCitjb29yZGluYXRlcyBhcmUgZXhwcmVzc2VkIGluIHBpeGVscy48L3BhcmE+CisKKzxwYXJhPlRoZSB0b3AgbGVmdCBjb3JuZXIsIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIHNvdXJjZSByZWN0YW5nbGUsIHRoYXQgaXMKK3RoZSBhcmVhIGFjdHVhbGx5IHNhbXBsZWQsIGlzIGdpdmVuIGJ5IHRoZSA8Y29uc3RhbnQ+VjRMMl9TRUxfVEdUX0NST1A8L2NvbnN0YW50PgordGFyZ2V0LiBJdCB1c2VzIHRoZSBzYW1lIGNvb3JkaW5hdGUgc3lzdGVtIGFzIDxjb25zdGFudD5WNEwyX1NFTF9UR1RfQ1JPUF9CT1VORFM8L2NvbnN0YW50Pi4KK1RoZSBhY3RpdmUgY3JvcHBpbmcgYXJlYSBtdXN0IGxpZSBjb21wbGV0ZWx5IGluc2lkZSB0aGUgY2FwdHVyZSBib3VuZGFyaWVzLiBUaGUKK2RyaXZlciBtYXkgZnVydGhlciBhZGp1c3QgdGhlIHJlcXVlc3RlZCBzaXplIGFuZC9vciBwb3NpdGlvbiBhY2NvcmRpbmcgdG8gaGFyZHdhcmUKK2xpbWl0YXRpb25zLjwvcGFyYT4KKworPHBhcmE+RWFjaCBjYXB0dXJlIGRldmljZSBoYXMgYSBkZWZhdWx0IHNvdXJjZSByZWN0YW5nbGUsIGdpdmVuIGJ5IHRoZQorPGNvbnN0YW50PlY0TDJfU0VMX1RHVF9DUk9QX0RFRkFVTFQ8L2NvbnN0YW50PiB0YXJnZXQuIFRoaXMgcmVjdGFuZ2xlIHNoYWxsCitvdmVyIHdoYXQgdGhlIGRyaXZlciB3cml0ZXIgY29uc2lkZXJzIHRoZSBjb21wbGV0ZSBwaWN0dXJlLiAgRHJpdmVycyBzaGFsbCBzZXQKK3RoZSBhY3RpdmUgY3JvcCByZWN0YW5nbGUgdG8gdGhlIGRlZmF1bHQgd2hlbiB0aGUgZHJpdmVyIGlzIGZpcnN0IGxvYWRlZCwgYnV0Citub3QgbGF0ZXIuPC9wYXJhPgorCis8cGFyYT5UaGUgY29tcG9zaW5nIHRhcmdldHMgcmVmZXIgdG8gYSBtZW1vcnkgYnVmZmVyLiBUaGUgbGltaXRzIG9mIGNvbXBvc2luZworY29vcmRpbmF0ZXMgYXJlIG9idGFpbmVkIHVzaW5nIDxjb25zdGFudD5WNEwyX1NFTF9UR1RfQ09NUE9TRV9CT1VORFM8L2NvbnN0YW50Pi4KK0FsbCBjb29yZGluYXRlcyBhcmUgZXhwcmVzc2VkIGluIHBpeGVscy4gVGhlIHJlY3RhbmdsZSdzIHRvcC9sZWZ0Citjb3JuZXIgbXVzdCBiZSBsb2NhdGVkIGF0IHBvc2l0aW9uIDxjb25zdGFudD4oMCwwKTwvY29uc3RhbnQ+LiBUaGUgd2lkdGggYW5kCitoZWlnaHQgYXJlIGVxdWFsIHRvIHRoZSBpbWFnZSBzaXplIHNldCBieSA8Y29uc3RhbnQ+VklESU9DX1NfRk1UPC9jb25zdGFudD4uCis8L3BhcmE+CisKKzxwYXJhPlRoZSBwYXJ0IG9mIGEgYnVmZmVyIGludG8gd2hpY2ggdGhlIGltYWdlIGlzIGluc2VydGVkIGJ5IHRoZSBoYXJkd2FyZSBpcworY29udHJvbGxlZCBieSB0aGUgPGNvbnN0YW50PlY0TDJfU0VMX1RHVF9DT01QT1NFPC9jb25zdGFudD4gdGFyZ2V0LgorVGhlIHJlY3RhbmdsZSdzIGNvb3JkaW5hdGVzIGFyZSBhbHNvIGV4cHJlc3NlZCBpbiB0aGUgc2FtZSBjb29yZGluYXRlIHN5c3RlbSBhcwordGhlIGJvdW5kcyByZWN0YW5nbGUuIFRoZSBjb21wb3NpbmcgcmVjdGFuZ2xlIG11c3QgbGllIGNvbXBsZXRlbHkgaW5zaWRlIGJvdW5kcworcmVjdGFuZ2xlLiBUaGUgZHJpdmVyIG11c3QgYWRqdXN0IHRoZSBjb21wb3NpbmcgcmVjdGFuZ2xlIHRvIGZpdCB0byB0aGUKK2JvdW5kaW5nIGxpbWl0cy4gTW9yZW92ZXIsIHRoZSBkcml2ZXIgY2FuIHBlcmZvcm0gb3RoZXIgYWRqdXN0bWVudHMgYWNjb3JkaW5nCit0byBoYXJkd2FyZSBsaW1pdGF0aW9ucy4gVGhlIGFwcGxpY2F0aW9uIGNhbiBjb250cm9sIHJvdW5kaW5nIGJlaGF2aW91ciB1c2luZworPGxpbmsgbGlua2VuZD0idjRsMi1zZWxlY3Rpb24tZmxhZ3MiPiBjb25zdHJhaW50IGZsYWdzPC9saW5rPi48L3BhcmE+CisKKzxwYXJhPkZvciBjYXB0dXJlIGRldmljZXMgdGhlIGRlZmF1bHQgY29tcG9zaW5nIHJlY3RhbmdsZSBpcyBxdWVyaWVkIHVzaW5nCis8Y29uc3RhbnQ+VjRMMl9TRUxfVEdUX0NPTVBPU0VfREVGQVVMVDwvY29uc3RhbnQ+LiBJdCBpcyB1c3VhbGx5IGVxdWFsIHRvIHRoZQorYm91bmRpbmcgcmVjdGFuZ2xlLjwvcGFyYT4KKworPHBhcmE+VGhlIHBhcnQgb2YgYSBidWZmZXIgdGhhdCBpcyBtb2RpZmllZCBieSB0aGUgaGFyZHdhcmUgaXMgZ2l2ZW4gYnkKKzxjb25zdGFudD5WNEwyX1NFTF9UR1RfQ09NUE9TRV9QQURERUQ8L2NvbnN0YW50Pi4gSXQgY29udGFpbnMgYWxsIHBpeGVscworZGVmaW5lZCB1c2luZyA8Y29uc3RhbnQ+VjRMMl9TRUxfVEdUX0NPTVBPU0U8L2NvbnN0YW50PiBwbHVzIGFsbAorcGFkZGluZyBkYXRhIG1vZGlmaWVkIGJ5IGhhcmR3YXJlIGR1cmluZyBpbnNlcnRpb24gcHJvY2Vzcy4gQWxsIHBpeGVscyBvdXRzaWRlCit0aGlzIHJlY3RhbmdsZSA8ZW1waGFzaXM+bXVzdCBub3Q8L2VtcGhhc2lzPiBiZSBjaGFuZ2VkIGJ5IHRoZSBoYXJkd2FyZS4gVGhlCitjb250ZW50IG9mIHBpeGVscyB0aGF0IGxpZSBpbnNpZGUgdGhlIHBhZGRlZCBhcmVhIGJ1dCBvdXRzaWRlIGFjdGl2ZSBhcmVhIGlzCit1bmRlZmluZWQuIFRoZSBhcHBsaWNhdGlvbiBjYW4gdXNlIHRoZSBwYWRkZWQgYW5kIGFjdGl2ZSByZWN0YW5nbGVzIHRvIGRldGVjdAord2hlcmUgdGhlIHJ1YmJpc2ggcGl4ZWxzIGFyZSBsb2NhdGVkIGFuZCByZW1vdmUgdGhlbSBpZiBuZWVkZWQuPC9wYXJhPgorCisgICA8L3NlY3Rpb24+CisKKyAgIDxzZWN0aW9uPgorCisgICA8dGl0bGU+Q29uZmlndXJhdGlvbiBvZiB2aWRlbyBvdXRwdXQ8L3RpdGxlPgorCis8cGFyYT5Gb3Igb3V0cHV0IGRldmljZXMgdGFyZ2V0cyBhbmQgaW9jdGxzIGFyZSB1c2VkIHNpbWlsYXJseSB0byB0aGUgdmlkZW8KK2NhcHR1cmUgY2FzZS4gVGhlIDxlbXBoYXNpcz5jb21wb3Npbmc8L2VtcGhhc2lzPiByZWN0YW5nbGUgcmVmZXJzIHRvIHRoZQoraW5zZXJ0aW9uIG9mIGFuIGltYWdlIGludG8gYSB2aWRlbyBzaWduYWwuIFRoZSBjcm9wcGluZyByZWN0YW5nbGVzIHJlZmVyIHRvIGEKK21lbW9yeSBidWZmZXIuIEl0IGlzIHJlY29tbWVuZGVkIHRvIGNvbmZpZ3VyZSB0aGUgY29tcG9zaW5nIHRhcmdldHMgYmVmb3JlIHRvCit0aGUgY3JvcHBpbmcgdGFyZ2V0cy48L3BhcmE+CisKKzxwYXJhPlRoZSBjcm9wcGluZyB0YXJnZXRzIHJlZmVyIHRvIHRoZSBtZW1vcnkgYnVmZmVyIHRoYXQgY29udGFpbnMgYW4gaW1hZ2UgdG8KK2JlIGluc2VydGVkIGludG8gYSB2aWRlbyBzaWduYWwgb3IgZ3JhcGhpY2FsIHNjcmVlbi4gVGhlIGxpbWl0cyBvZiBjcm9wcGluZworY29vcmRpbmF0ZXMgYXJlIG9idGFpbmVkIHVzaW5nIDxjb25zdGFudD5WNEwyX1NFTF9UR1RfQ1JPUF9CT1VORFM8L2NvbnN0YW50Pi4KK0FsbCBjb29yZGluYXRlcyBhcmUgZXhwcmVzc2VkIGluIHBpeGVscy4gVGhlIHRvcC9sZWZ0IGNvcm5lciBpcyBhbHdheXMgcG9pbnQKKzxjb25zdGFudD4oMCwwKTwvY29uc3RhbnQ+LiAgVGhlIHdpZHRoIGFuZCBoZWlnaHQgaXMgZXF1YWwgdG8gdGhlIGltYWdlIHNpemUKK3NwZWNpZmllZCB1c2luZyA8Y29uc3RhbnQ+VklESU9DX1NfRk1UPC9jb25zdGFudD4gaW9jdGwuPC9wYXJhPgorCis8cGFyYT5UaGUgdG9wIGxlZnQgY29ybmVyLCB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBzb3VyY2UgcmVjdGFuZ2xlLCB0aGF0IGlzCit0aGUgYXJlYSBmcm9tIHdoaWNoIGltYWdlIGRhdGUgYXJlIHByb2Nlc3NlZCBieSB0aGUgaGFyZHdhcmUsIGlzIGdpdmVuIGJ5IHRoZQorPGNvbnN0YW50PlY0TDJfU0VMX1RHVF9DUk9QPC9jb25zdGFudD4uIEl0cyBjb29yZGluYXRlcyBhcmUgZXhwcmVzc2VkCitpbiBpbiB0aGUgc2FtZSBjb29yZGluYXRlIHN5c3RlbSBhcyB0aGUgYm91bmRzIHJlY3RhbmdsZS4gVGhlIGFjdGl2ZSBjcm9wcGluZworYXJlYSBtdXN0IGxpZSBjb21wbGV0ZWx5IGluc2lkZSB0aGUgY3JvcCBib3VuZGFyaWVzIGFuZCB0aGUgZHJpdmVyIG1heSBmdXJ0aGVyCithZGp1c3QgdGhlIHJlcXVlc3RlZCBzaXplIGFuZC9vciBwb3NpdGlvbiBhY2NvcmRpbmcgdG8gaGFyZHdhcmUKK2xpbWl0YXRpb25zLjwvcGFyYT4KKworPHBhcmE+Rm9yIG91dHB1dCBkZXZpY2VzIHRoZSBkZWZhdWx0IGNyb3BwaW5nIHJlY3RhbmdsZSBpcyBxdWVyaWVkIHVzaW5nCis8Y29uc3RhbnQ+VjRMMl9TRUxfVEdUX0NST1BfREVGQVVMVDwvY29uc3RhbnQ+LiBJdCBpcyB1c3VhbGx5IGVxdWFsIHRvIHRoZQorYm91bmRpbmcgcmVjdGFuZ2xlLjwvcGFyYT4KKworPHBhcmE+VGhlIHBhcnQgb2YgYSB2aWRlbyBzaWduYWwgb3IgZ3JhcGhpY3MgZGlzcGxheSB3aGVyZSB0aGUgaW1hZ2UgaXMKK2luc2VydGVkIGJ5IHRoZSBoYXJkd2FyZSBpcyBjb250cm9sbGVkIGJ5IDxjb25zdGFudD5WNEwyX1NFTF9UR1RfQ09NUE9TRTwvY29uc3RhbnQ+Cit0YXJnZXQuICBUaGUgcmVjdGFuZ2xlJ3MgY29vcmRpbmF0ZXMgYXJlIGV4cHJlc3NlZCBpbiBwaXhlbHMuIFRoZSBjb21wb3NpbmcKK3JlY3RhbmdsZSBtdXN0IGxpZSBjb21wbGV0ZWx5IGluc2lkZSB0aGUgYm91bmRzIHJlY3RhbmdsZS4gIFRoZSBkcml2ZXIgbXVzdAorYWRqdXN0IHRoZSBhcmVhIHRvIGZpdCB0byB0aGUgYm91bmRpbmcgbGltaXRzLiAgTW9yZW92ZXIsIHRoZSBkcml2ZXIgY2FuCitwZXJmb3JtIG90aGVyIGFkanVzdG1lbnRzIGFjY29yZGluZyB0byBoYXJkd2FyZSBsaW1pdGF0aW9ucy48L3BhcmE+CisKKzxwYXJhPlRoZSBkZXZpY2UgaGFzIGEgZGVmYXVsdCBjb21wb3NpbmcgcmVjdGFuZ2xlLCBnaXZlbiBieSB0aGUKKzxjb25zdGFudD5WNEwyX1NFTF9UR1RfQ09NUE9TRV9ERUZBVUxUPC9jb25zdGFudD4gdGFyZ2V0LiBUaGlzIHJlY3RhbmdsZSBzaGFsbCBjb3ZlciB3aGF0Cit0aGUgZHJpdmVyIHdyaXRlciBjb25zaWRlcnMgdGhlIGNvbXBsZXRlIHBpY3R1cmUuIEl0IGlzIHJlY29tbWVuZGVkIGZvciB0aGUKK2RyaXZlciBkZXZlbG9wZXJzIHRvIHB1dCB0aGUgdG9wL2xlZnQgY29ybmVyIGF0IHBvc2l0aW9uIDxjb25zdGFudD4oMCwwKTwvY29uc3RhbnQ+LgorRHJpdmVycyBzaGFsbCBzZXQgdGhlIGFjdGl2ZSBjb21wb3NpbmcgcmVjdGFuZ2xlIHRvIHRoZSBkZWZhdWx0CitvbmUgd2hlbiB0aGUgZHJpdmVyIGlzIGZpcnN0IGxvYWRlZC48L3BhcmE+CisKKzxwYXJhPlRoZSBkZXZpY2VzIG1heSBpbnRyb2R1Y2UgYWRkaXRpb25hbCBjb250ZW50IHRvIHZpZGVvIHNpZ25hbCBvdGhlciB0aGFuCithbiBpbWFnZSBmcm9tIG1lbW9yeSBidWZmZXJzLiAgSXQgaW5jbHVkZXMgYm9yZGVycyBhcm91bmQgYW4gaW1hZ2UuIEhvd2V2ZXIsCitzdWNoIGEgcGFkZGVkIGFyZWEgaXMgZHJpdmVyLWRlcGVuZGVudCBmZWF0dXJlIG5vdCBjb3ZlcmVkIGJ5IHRoaXMgZG9jdW1lbnQuCitEcml2ZXIgZGV2ZWxvcGVycyBhcmUgZW5jb3VyYWdlZCB0byBrZWVwIHBhZGRlZCByZWN0YW5nbGUgZXF1YWwgdG8gYWN0aXZlIG9uZS4KK1RoZSBwYWRkZWQgdGFyZ2V0IGlzIGFjY2Vzc2VkIGJ5IHRoZSA8Y29uc3RhbnQ+VjRMMl9TRUxfVEdUX0NPTVBPU0VfUEFEREVEPC9jb25zdGFudD4KK2lkZW50aWZpZXIuICBJdCBtdXN0IGNvbnRhaW4gYWxsIHBpeGVscyBmcm9tIHRoZSA8Y29uc3RhbnQ+VjRMMl9TRUxfVEdUX0NPTVBPU0U8L2NvbnN0YW50PgordGFyZ2V0LjwvcGFyYT4KKworICAgPC9zZWN0aW9uPgorCisgICA8c2VjdGlvbj4KKworICAgICA8dGl0bGU+U2NhbGluZyBjb250cm9sPC90aXRsZT4KKworPHBhcmE+QW4gYXBwbGljYXRpb24gY2FuIGRldGVjdCBpZiBzY2FsaW5nIGlzIHBlcmZvcm1lZCBieSBjb21wYXJpbmcgdGhlIHdpZHRoCithbmQgdGhlIGhlaWdodCBvZiByZWN0YW5nbGVzIG9idGFpbmVkIHVzaW5nIDxjb25zdGFudD5WNEwyX1NFTF9UR1RfQ1JPUDwvY29uc3RhbnQ+CithbmQgPGNvbnN0YW50PlY0TDJfU0VMX1RHVF9DT01QT1NFPC9jb25zdGFudD4gdGFyZ2V0cy4gSWYKK3RoZXNlIGFyZSBub3QgZXF1YWwgdGhlbiB0aGUgc2NhbGluZyBpcyBhcHBsaWVkLiBUaGUgYXBwbGljYXRpb24gY2FuIGNvbXB1dGUKK3RoZSBzY2FsaW5nIHJhdGlvcyB1c2luZyB0aGVzZSB2YWx1ZXMuPC9wYXJhPgorCisgICA8L3NlY3Rpb24+CisKKyAgPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uPgorCisgICAgPHRpdGxlPkNvbXBhcmlzb24gd2l0aCBvbGQgY3JvcHBpbmcgQVBJPC90aXRsZT4KKworPHBhcmE+VGhlIHNlbGVjdGlvbiBBUEkgd2FzIGludHJvZHVjZWQgdG8gY29wZSB3aXRoIGRlZmljaWVuY2llcyBvZiBwcmV2aW91cworPGxpbmsgbGlua2VuZD0iY3JvcCI+IEFQSTwvbGluaz4sIHRoYXQgd2FzIGRlc2lnbmVkIHRvIGNvbnRyb2wgc2ltcGxlIGNhcHR1cmUKK2RldmljZXMuIExhdGVyIHRoZSBjcm9wcGluZyBBUEkgd2FzIGFkb3B0ZWQgYnkgdmlkZW8gb3V0cHV0IGRyaXZlcnMuIFRoZSBpb2N0bHMKK2FyZSB1c2VkIHRvIHNlbGVjdCBhIHBhcnQgb2YgdGhlIGRpc3BsYXkgd2VyZSB0aGUgdmlkZW8gc2lnbmFsIGlzIGluc2VydGVkLiBJdAorc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXMgYW4gQVBJIGFidXNlIGJlY2F1c2UgdGhlIGRlc2NyaWJlZCBvcGVyYXRpb24gaXMKK2FjdHVhbGx5IHRoZSBjb21wb3NpbmcuICBUaGUgc2VsZWN0aW9uIEFQSSBtYWtlcyBhIGNsZWFyIGRpc3RpbmN0aW9uIGJldHdlZW4KK2NvbXBvc2luZyBhbmQgY3JvcHBpbmcgb3BlcmF0aW9ucyBieSBzZXR0aW5nIHRoZSBhcHByb3ByaWF0ZSB0YXJnZXRzLiAgVGhlIFY0TDIKK0FQSSBsYWNrcyBhbnkgc3VwcG9ydCBmb3IgY29tcG9zaW5nIHRvIGFuZCBjcm9wcGluZyBmcm9tIGFuIGltYWdlIGluc2lkZSBhCittZW1vcnkgYnVmZmVyLiAgVGhlIGFwcGxpY2F0aW9uIGNvdWxkIGNvbmZpZ3VyZSBhIGNhcHR1cmUgZGV2aWNlIHRvIGZpbGwgb25seSBhCitwYXJ0IG9mIGFuIGltYWdlIGJ5IGFidXNpbmcgVjRMMiBBUEkuICBDcm9wcGluZyBhIHNtYWxsZXIgaW1hZ2UgZnJvbSBhIGxhcmdlcgorb25lIGlzIGFjaGlldmVkIGJ5IHNldHRpbmcgdGhlIGZpZWxkCismdjRsMi1waXgtZm9ybWF0OzxzdHJ1Y3RmaWVsZD46OmJ5dGVzcGVybGluZTwvc3RydWN0ZmllbGQ+LiAgSW50cm9kdWNpbmcgYW4gaW1hZ2Ugb2Zmc2V0cworY291bGQgYmUgZG9uZSBieSBtb2RpZnlpbmcgZmllbGQgJnY0bDItYnVmZmVyOzxzdHJ1Y3RmaWVsZD46Om1fdXNlcnB0cjwvc3RydWN0ZmllbGQ+CitiZWZvcmUgY2FsbGluZyA8Y29uc3RhbnQ+VklESU9DX1FCVUY8L2NvbnN0YW50Pi4gVGhvc2UKK29wZXJhdGlvbnMgc2hvdWxkIGJlIGF2b2lkZWQgYmVjYXVzZSB0aGV5IGFyZSBub3QgcG9ydGFibGUgKGVuZGlhbm5lc3MpLCBhbmQgZG8KK25vdCB3b3JrIGZvciBtYWNyb2Jsb2NrIGFuZCBCYXllciBmb3JtYXRzIGFuZCBtbWFwIGJ1ZmZlcnMuICBUaGUgc2VsZWN0aW9uIEFQSQorZGVhbHMgd2l0aCBjb25maWd1cmF0aW9uIG9mIGJ1ZmZlciBjcm9wcGluZy9jb21wb3NpbmcgaW4gYSBjbGVhciwgaW50dWl0aXZlIGFuZAorcG9ydGFibGUgd2F5LiAgTmV4dCwgd2l0aCB0aGUgc2VsZWN0aW9uIEFQSSB0aGUgY29uY2VwdHMgb2YgdGhlIHBhZGRlZCB0YXJnZXQKK2FuZCBjb25zdHJhaW50cyBmbGFncyBhcmUgaW50cm9kdWNlZC4gIEZpbmFsbHksICZ2NGwyLWNyb3A7IGFuZCAmdjRsMi1jcm9wY2FwOworaGF2ZSBubyByZXNlcnZlZCBmaWVsZHMuIFRoZXJlZm9yZSB0aGVyZSBpcyBubyB3YXkgdG8gZXh0ZW5kIHRoZWlyIGZ1bmN0aW9uYWxpdHkuCitUaGUgbmV3ICZ2NGwyLXNlbGVjdGlvbjsgcHJvdmlkZXMgYSBsb3Qgb2YgcGxhY2UgZm9yIGZ1dHVyZQorZXh0ZW5zaW9ucy4gIERyaXZlciBkZXZlbG9wZXJzIGFyZSBlbmNvdXJhZ2VkIHRvIGltcGxlbWVudCBvbmx5IHNlbGVjdGlvbiBBUEkuCitUaGUgZm9ybWVyIGNyb3BwaW5nIEFQSSB3b3VsZCBiZSBzaW11bGF0ZWQgdXNpbmcgdGhlIG5ldyBvbmUuPC9wYXJhPgorCisgIDwvc2VjdGlvbj4KKworICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorICAgICAgPGV4YW1wbGU+CisJPHRpdGxlPlJlc2V0dGluZyB0aGUgY3JvcHBpbmcgcGFyYW1ldGVyczwvdGl0bGU+CisKKwk8cGFyYT4oQSB2aWRlbyBjYXB0dXJlIGRldmljZSBpcyBhc3N1bWVkOyBjaGFuZ2UKKzxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkU8L2NvbnN0YW50PiBmb3Igb3RoZXIgZGV2aWNlczsgY2hhbmdlIHRhcmdldCB0bworPGNvbnN0YW50PlY0TDJfU0VMX1RHVF9DT01QT1NFXyo8L2NvbnN0YW50PiBmYW1pbHkgdG8gY29uZmlndXJlIGNvbXBvc2luZworYXJlYSk8L3BhcmE+CisKKwk8cHJvZ3JhbWxpc3Rpbmc+CisKKwkmdjRsMi1zZWxlY3Rpb247IHNlbCA9IHsKKwkJLnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkUsCisJCS50YXJnZXQgPSBWNEwyX1NFTF9UR1RfQ1JPUF9ERUZBVUxULAorCX07CisJcmV0ID0gaW9jdGwoZmQsICZWSURJT0MtRy1TRUxFQ1RJT047LCAmYW1wO3NlbCk7CisJaWYgKHJldCkKKwkJZXhpdCgtMSk7CisJc2VsLnRhcmdldCA9IFY0TDJfU0VMX1RHVF9DUk9QOworCXJldCA9IGlvY3RsKGZkLCAmVklESU9DLVMtU0VMRUNUSU9OOywgJmFtcDtzZWwpOworCWlmIChyZXQpCisJCWV4aXQoLTEpOworCisgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8L2V4YW1wbGU+CisKKyAgICAgIDxleGFtcGxlPgorCTx0aXRsZT5TaW1wbGUgZG93bnNjYWxpbmc8L3RpdGxlPgorCTxwYXJhPlNldHRpbmcgYSBjb21wb3NpbmcgYXJlYSBvbiBvdXRwdXQgb2Ygc2l6ZSBvZiA8ZW1waGFzaXM+IGF0IG1vc3QKKzwvZW1waGFzaXM+IGhhbGYgb2YgbGltaXQgcGxhY2VkIGF0IGEgY2VudGVyIG9mIGEgZGlzcGxheS48L3BhcmE+CisJPHByb2dyYW1saXN0aW5nPgorCisJJnY0bDItc2VsZWN0aW9uOyBzZWwgPSB7CisJCS50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVQsCisJCS50YXJnZXQgPSBWNEwyX1NFTF9UR1RfQ09NUE9TRV9CT1VORFMsCisJfTsKKwlzdHJ1Y3QgdjRsMl9yZWN0IHI7CisKKwlyZXQgPSBpb2N0bChmZCwgJlZJRElPQy1HLVNFTEVDVElPTjssICZhbXA7c2VsKTsKKwlpZiAocmV0KQorCQlleGl0KC0xKTsKKwkvKiBzZXR0aW5nIHNtYWxsZXIgY29tcG9zZSByZWN0YW5nbGUgKi8KKwlyLndpZHRoID0gc2VsLnIud2lkdGggLyAyOworCXIuaGVpZ2h0ID0gc2VsLnIuaGVpZ2h0IC8gMjsKKwlyLmxlZnQgPSBzZWwuci53aWR0aCAvIDQ7CisJci50b3AgPSBzZWwuci5oZWlnaHQgLyA0OworCXNlbC5yID0gcjsKKwlzZWwudGFyZ2V0ID0gVjRMMl9TRUxfVEdUX0NPTVBPU0U7CisJc2VsLmZsYWdzID0gVjRMMl9TRUxfRkxBR19MRTsKKwlyZXQgPSBpb2N0bChmZCwgJlZJRElPQy1TLVNFTEVDVElPTjssICZhbXA7c2VsKTsKKwlpZiAocmV0KQorCQlleGl0KC0xKTsKKworICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgPC9leGFtcGxlPgorCisgICAgICA8ZXhhbXBsZT4KKwk8dGl0bGU+UXVlcnlpbmcgZm9yIHNjYWxpbmcgZmFjdG9yczwvdGl0bGU+CisJPHBhcmE+QSB2aWRlbyBvdXRwdXQgZGV2aWNlIGlzIGFzc3VtZWQ7IGNoYW5nZQorPGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVklERU9fT1VUUFVUPC9jb25zdGFudD4gZm9yIG90aGVyIGRldmljZXM8L3BhcmE+CisJPHByb2dyYW1saXN0aW5nPgorCisJJnY0bDItc2VsZWN0aW9uOyBjb21wb3NlID0geworCQkudHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fT1VUUFVULAorCQkudGFyZ2V0ID0gVjRMMl9TRUxfVEdUX0NPTVBPU0UsCisJfTsKKwkmdjRsMi1zZWxlY3Rpb247IGNyb3AgPSB7CisJCS50eXBlID0gVjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVQsCisJCS50YXJnZXQgPSBWNEwyX1NFTF9UR1RfQ1JPUCwKKwl9OworCWRvdWJsZSBoc2NhbGUsIHZzY2FsZTsKKworCXJldCA9IGlvY3RsKGZkLCAmVklESU9DLUctU0VMRUNUSU9OOywgJmFtcDtjb21wb3NlKTsKKwlpZiAocmV0KQorCQlleGl0KC0xKTsKKwlyZXQgPSBpb2N0bChmZCwgJlZJRElPQy1HLVNFTEVDVElPTjssICZhbXA7Y3JvcCk7CisJaWYgKHJldCkKKwkJZXhpdCgtMSk7CisKKwkvKiBjb21wdXRpbmcgc2NhbGluZyBmYWN0b3JzICovCisJaHNjYWxlID0gKGRvdWJsZSljb21wb3NlLnIud2lkdGggLyBjcm9wLnIud2lkdGg7CisJdnNjYWxlID0gKGRvdWJsZSljb21wb3NlLnIuaGVpZ2h0IC8gY3JvcC5yLmhlaWdodDsKKworCTwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8L2V4YW1wbGU+CisKKyAgIDwvc2VjdGlvbj4KKworPC9zZWN0aW9uPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9zZWxlY3Rpb25zLWNvbW1vbi54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3NlbGVjdGlvbnMtY29tbW9uLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmQ1NmZiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9zZWxlY3Rpb25zLWNvbW1vbi54bWwKQEAgLTAsMCArMSwxODAgQEAKKzxzZWN0aW9uIGlkPSJ2NGwyLXNlbGVjdGlvbnMtY29tbW9uIj4KKworICA8dGl0bGU+Q29tbW9uIHNlbGVjdGlvbiBkZWZpbml0aW9uczwvdGl0bGU+CisKKyAgPHBhcmE+V2hpbGUgdGhlIDxsaW5rIGxpbmtlbmQ9InNlbGVjdGlvbi1hcGkiPlY0TDIgc2VsZWN0aW9uCisgIEFQSTwvbGluaz4gYW5kIDxsaW5rIGxpbmtlbmQ9InY0bDItc3ViZGV2LXNlbGVjdGlvbnMiPlY0TDIgc3ViZGV2CisgIHNlbGVjdGlvbiBBUElzPC9saW5rPiBhcmUgdmVyeSBzaW1pbGFyLCB0aGVyZSdzIG9uZSBmdW5kYW1lbnRhbAorICBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3by4gT24gc3ViLWRldmljZSBBUEksIHRoZSBzZWxlY3Rpb24KKyAgcmVjdGFuZ2xlIHJlZmVycyB0byB0aGUgbWVkaWEgYnVzIGZvcm1hdCwgYW5kIGlzIGJvdW5kIHRvIGEKKyAgc3ViLWRldmljZSdzIHBhZC4gT24gdGhlIFY0TDIgaW50ZXJmYWNlIHRoZSBzZWxlY3Rpb24gcmVjdGFuZ2xlcworICByZWZlciB0byB0aGUgaW4tbWVtb3J5IHBpeGVsIGZvcm1hdC48L3BhcmE+CisKKyAgPHBhcmE+VGhpcyBzZWN0aW9uIGRlZmluZXMgdGhlIGNvbW1vbiBkZWZpbml0aW9ucyBvZiB0aGUKKyAgc2VsZWN0aW9uIGludGVyZmFjZXMgb24gdGhlIHR3byBBUElzLjwvcGFyYT4KKworICA8c2VjdGlvbiBpZD0idjRsMi1zZWxlY3Rpb24tdGFyZ2V0cyI+CisKKyAgICA8dGl0bGU+U2VsZWN0aW9uIHRhcmdldHM8L3RpdGxlPgorCisgICAgPHBhcmE+VGhlIHByZWNpc2UgbWVhbmluZyBvZiB0aGUgc2VsZWN0aW9uIHRhcmdldHMgbWF5IGJlCisgICAgZGVwZW5kZW50IG9uIHdoaWNoIG9mIHRoZSB0d28gaW50ZXJmYWNlcyB0aGV5IGFyZSB1c2VkLjwvcGFyYT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1zZWxlY3Rpb24tdGFyZ2V0cy10YWJsZSI+CisgICAgPHRpdGxlPlNlbGVjdGlvbiB0YXJnZXQgZGVmaW5pdGlvbnM8L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSI1Ij4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMSIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMiIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMyIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjNCIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjNSIgLz4KKwkmY3MtZGVmOworCTx0aGVhZD4KKwkgIDxyb3cgcm93c2VwPSIxIj4KKwkgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5UYXJnZXQgbmFtZTwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+aWQ8L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImxlZnQiPkRlZmluaXRpb248L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImxlZnQiPlZhbGlkIGZvciBWNEwyPC9lbnRyeT4KKwkgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5WYWxpZCBmb3IgVjRMMiBzdWJkZXY8L2VudHJ5PgorCSAgPC9yb3c+CisJPC90aGVhZD4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1NFTF9UR1RfQ1JPUDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMDwvZW50cnk+CisJICAgIDxlbnRyeT5Dcm9wIHJlY3RhbmdsZS4gRGVmaW5lcyB0aGUgY3JvcHBlZCBhcmVhLjwvZW50cnk+CisJICAgIDxlbnRyeT5ZZXM8L2VudHJ5PgorCSAgICA8ZW50cnk+WWVzPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1NFTF9UR1RfQ1JPUF9ERUZBVUxUPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAxPC9lbnRyeT4KKwkgICAgPGVudHJ5PlN1Z2dlc3RlZCBjcm9wcGluZyByZWN0YW5nbGUgdGhhdCBjb3ZlcnMgdGhlICJ3aG9sZSBwaWN0dXJlIi48L2VudHJ5PgorCSAgICA8ZW50cnk+WWVzPC9lbnRyeT4KKwkgICAgPGVudHJ5Pk5vPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1NFTF9UR1RfQ1JPUF9CT1VORFM8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDI8L2VudHJ5PgorCSAgICA8ZW50cnk+Qm91bmRzIG9mIHRoZSBjcm9wIHJlY3RhbmdsZS4gQWxsIHZhbGlkIGNyb3AKKwkgICAgcmVjdGFuZ2xlcyBmaXQgaW5zaWRlIHRoZSBjcm9wIGJvdW5kcyByZWN0YW5nbGUuCisJICAgIDwvZW50cnk+CisJICAgIDxlbnRyeT5ZZXM8L2VudHJ5PgorCSAgICA8ZW50cnk+WWVzPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1NFTF9UR1RfTkFUSVZFX1NJWkU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDM8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIG5hdGl2ZSBzaXplIG9mIHRoZSBkZXZpY2UsIGUuZy4gYSBzZW5zb3IncworCSAgICBwaXhlbCBhcnJheS4gPHN0cnVjdGZpZWxkPmxlZnQ8L3N0cnVjdGZpZWxkPiBhbmQKKwkgICAgPHN0cnVjdGZpZWxkPnRvcDwvc3RydWN0ZmllbGQ+IGZpZWxkcyBhcmUgemVybyBmb3IgdGhpcworCSAgICB0YXJnZXQuIFNldHRpbmcgdGhlIG5hdGl2ZSBzaXplIHdpbGwgZ2VuZXJhbGx5IG9ubHkgbWFrZQorCSAgICBzZW5zZSBmb3IgbWVtb3J5IHRvIG1lbW9yeSBkZXZpY2VzIHdoZXJlIHRoZSBzb2Z0d2FyZSBjYW4KKwkgICAgY3JlYXRlIGEgY2FudmFzIG9mIGEgZ2l2ZW4gc2l6ZSBpbiB3aGljaCBmb3IgZXhhbXBsZSBhCisJICAgIHZpZGVvIGZyYW1lIGNhbiBiZSBjb21wb3NlZC4gSW4gdGhhdCBjYXNlCisJICAgIFY0TDJfU0VMX1RHVF9OQVRJVkVfU0laRSBjYW4gYmUgdXNlZCB0byBjb25maWd1cmUgdGhlIHNpemUKKwkgICAgb2YgdGhhdCBjYW52YXMuCisJICAgIDwvZW50cnk+CisJICAgIDxlbnRyeT5ZZXM8L2VudHJ5PgorCSAgICA8ZW50cnk+WWVzPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1NFTF9UR1RfQ09NUE9TRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDEwMDwvZW50cnk+CisJICAgIDxlbnRyeT5Db21wb3NlIHJlY3RhbmdsZS4gVXNlZCB0byBjb25maWd1cmUgc2NhbGluZworCSAgICBhbmQgY29tcG9zaXRpb24uPC9lbnRyeT4KKwkgICAgPGVudHJ5PlllczwvZW50cnk+CisJICAgIDxlbnRyeT5ZZXM8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfU0VMX1RHVF9DT01QT1NFX0RFRkFVTFQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAxMDE8L2VudHJ5PgorCSAgICA8ZW50cnk+U3VnZ2VzdGVkIGNvbXBvc2l0aW9uIHJlY3RhbmdsZSB0aGF0IGNvdmVycyB0aGUgIndob2xlIHBpY3R1cmUiLjwvZW50cnk+CisJICAgIDxlbnRyeT5ZZXM8L2VudHJ5PgorCSAgICA8ZW50cnk+Tm88L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfU0VMX1RHVF9DT01QT1NFX0JPVU5EUzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDEwMjwvZW50cnk+CisJICAgIDxlbnRyeT5Cb3VuZHMgb2YgdGhlIGNvbXBvc2UgcmVjdGFuZ2xlLiBBbGwgdmFsaWQgY29tcG9zZQorCSAgICByZWN0YW5nbGVzIGZpdCBpbnNpZGUgdGhlIGNvbXBvc2UgYm91bmRzIHJlY3RhbmdsZS48L2VudHJ5PgorCSAgICA8ZW50cnk+WWVzPC9lbnRyeT4KKwkgICAgPGVudHJ5PlllczwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9TRUxfVEdUX0NPTVBPU0VfUEFEREVEPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMTAzPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBhY3RpdmUgYXJlYSBhbmQgYWxsIHBhZGRpbmcgcGl4ZWxzIHRoYXQgYXJlIGluc2VydGVkIG9yCisJICAgIG1vZGlmaWVkIGJ5IGhhcmR3YXJlLjwvZW50cnk+CisJICAgIDxlbnRyeT5ZZXM8L2VudHJ5PgorCSAgICA8ZW50cnk+Tm88L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgPC9zZWN0aW9uPgorCisgIDxzZWN0aW9uIGlkPSJ2NGwyLXNlbGVjdGlvbi1mbGFncyI+CisKKyAgICA8dGl0bGU+U2VsZWN0aW9uIGZsYWdzPC90aXRsZT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1zZWxlY3Rpb24tZmxhZ3MtdGFibGUiPgorICAgIDx0aXRsZT5TZWxlY3Rpb24gZmxhZyBkZWZpbml0aW9uczwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjUiPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMxIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMyIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMzIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImM0IiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImM1IiAvPgorCSZjcy1kZWY7CisJPHRoZWFkPgorCTxyb3cgcm93c2VwPSIxIj4KKwkgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5GbGFnIG5hbWU8L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImxlZnQiPmlkPC9lbnRyeT4KKwkgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5EZWZpbml0aW9uPC9lbnRyeT4KKwkgICAgPGVudHJ5IGFsaWduPSJsZWZ0Ij5WYWxpZCBmb3IgVjRMMjwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0ibGVmdCI+VmFsaWQgZm9yIFY0TDIgc3ViZGV2PC9lbnRyeT4KKwk8L3Jvdz4KKwk8L3RoZWFkPgorCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfU0VMX0ZMQUdfR0U8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4oMSAmbHQ7Jmx0OyAwKTwvZW50cnk+CisJICAgIDxlbnRyeT5TdWdnZXN0IHRoZSBkcml2ZXIgaXQgc2hvdWxkIGNob29zZSBncmVhdGVyIG9yCisJICAgIGVxdWFsIHJlY3RhbmdsZSAoaW4gc2l6ZSkgdGhhbiB3YXMgcmVxdWVzdGVkLiBBbGJlaXQgdGhlCisJICAgIGRyaXZlciBtYXkgY2hvb3NlIGEgbGVzc2VyIHNpemUsIGl0IHdpbGwgb25seSBkbyBzbyBkdWUgdG8KKwkgICAgaGFyZHdhcmUgbGltaXRhdGlvbnMuIFdpdGhvdXQgdGhpcyBmbGFnIChhbmQKKwkgICAgPGNvbnN0YW50PlY0TDJfU0VMX0ZMQUdfTEU8L2NvbnN0YW50PikgdGhlCisJICAgIGJlaGF2aW91ciBpcyB0byBjaG9vc2UgdGhlIGNsb3Nlc3QgcG9zc2libGUKKwkgICAgcmVjdGFuZ2xlLjwvZW50cnk+CisJICAgIDxlbnRyeT5ZZXM8L2VudHJ5PgorCSAgICA8ZW50cnk+WWVzPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1NFTF9GTEFHX0xFPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+KDEgJmx0OyZsdDsgMSk8L2VudHJ5PgorCSAgICA8ZW50cnk+U3VnZ2VzdCB0aGUgZHJpdmVyIGl0CisJICAgIHNob3VsZCBjaG9vc2UgbGVzc2VyIG9yIGVxdWFsIHJlY3RhbmdsZSAoaW4gc2l6ZSkgdGhhbiB3YXMKKwkgICAgcmVxdWVzdGVkLiBBbGJlaXQgdGhlIGRyaXZlciBtYXkgY2hvb3NlIGEgZ3JlYXRlciBzaXplLCBpdAorCSAgICB3aWxsIG9ubHkgZG8gc28gZHVlIHRvIGhhcmR3YXJlIGxpbWl0YXRpb25zLjwvZW50cnk+CisJICAgIDxlbnRyeT5ZZXM8L2VudHJ5PgorCSAgICA8ZW50cnk+WWVzPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1NFTF9GTEFHX0tFRVBfQ09ORklHPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+KDEgJmx0OyZsdDsgMik8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGNvbmZpZ3VyYXRpb24gbXVzdCBub3QgYmUgcHJvcGFnYXRlZCB0byBhbnkKKwkgICAgZnVydGhlciBwcm9jZXNzaW5nIHN0ZXBzLiBJZiB0aGlzIGZsYWcgaXMgbm90IGdpdmVuLCB0aGUKKwkgICAgY29uZmlndXJhdGlvbiBpcyBwcm9wYWdhdGVkIGluc2lkZSB0aGUgc3ViZGV2aWNlIHRvIGFsbAorCSAgICBmdXJ0aGVyIHByb2Nlc3Npbmcgc3RlcHMuPC9lbnRyeT4KKwkgICAgPGVudHJ5Pk5vPC9lbnRyeT4KKwkgICAgPGVudHJ5PlllczwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICA8L3NlY3Rpb24+CisKKzwvc2VjdGlvbj4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvc3ViZGV2LWZvcm1hdHMueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9zdWJkZXYtZm9ybWF0cy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU3MzM0NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvc3ViZGV2LWZvcm1hdHMueG1sCkBAIC0wLDAgKzEsNDA0NiBAQAorPHNlY3Rpb24gaWQ9InY0bDItbWJ1cy1mb3JtYXQiPgorICA8dGl0bGU+TWVkaWEgQnVzIEZvcm1hdHM8L3RpdGxlPgorCisgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1tYnVzLWZyYW1lZm10Ij4KKyAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfbWJ1c19mcmFtZWZtdDwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgIDx0Z3JvdXAgY29scz0iMyI+CisgICAgICAmY3Mtc3RyOworICAgICAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwk8cm93PgorCSAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgIDxlbnRyeT48c3RydWN0ZmllbGQ+d2lkdGg8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICA8ZW50cnk+SW1hZ2Ugd2lkdGgsIGluIHBpeGVscy48L2VudHJ5PgorCTwvcm93PgorCTxyb3c+CisJICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5oZWlnaHQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICA8ZW50cnk+SW1hZ2UgaGVpZ2h0LCBpbiBwaXhlbHMuPC9lbnRyeT4KKwk8L3Jvdz4KKwk8cm93PgorCSAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgIDxlbnRyeT48c3RydWN0ZmllbGQ+Y29kZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgIDxlbnRyeT5Gb3JtYXQgY29kZSwgZnJvbSAmdjRsMi1tYnVzLXBpeGVsY29kZTsuPC9lbnRyeT4KKwk8L3Jvdz4KKwk8cm93PgorCSAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZmllbGQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICA8ZW50cnk+RmllbGQgb3JkZXIsIGZyb20gJnY0bDItZmllbGQ7LiBTZWUKKwkgIDx4cmVmIGxpbmtlbmQ9ImZpZWxkLW9yZGVyIiAvPiBmb3IgZGV0YWlscy48L2VudHJ5PgorCTwvcm93PgorCTxyb3c+CisJICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5jb2xvcnNwYWNlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgPGVudHJ5PkltYWdlIGNvbG9yc3BhY2UsIGZyb20gJnY0bDItY29sb3JzcGFjZTsuIFNlZQorCSAgPHhyZWYgbGlua2VuZD0iY29sb3JzcGFjZXMiIC8+IGZvciBkZXRhaWxzLjwvZW50cnk+CisJPC9yb3c+CisJPHJvdz4KKwkgIDxlbnRyeT4mdjRsMi15Y2Jjci1lbmNvZGluZzs8L2VudHJ5PgorCSAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD55Y2Jjcl9lbmM8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICA8ZW50cnk+VGhpcyBpbmZvcm1hdGlvbiBzdXBwbGVtZW50cyB0aGUKKzxzdHJ1Y3RmaWVsZD5jb2xvcnNwYWNlPC9zdHJ1Y3RmaWVsZD4gYW5kIG11c3QgYmUgc2V0IGJ5IHRoZSBkcml2ZXIgZm9yCitjYXB0dXJlIHN0cmVhbXMgYW5kIGJ5IHRoZSBhcHBsaWNhdGlvbiBmb3Igb3V0cHV0IHN0cmVhbXMsCitzZWUgPHhyZWYgbGlua2VuZD0iY29sb3JzcGFjZXMiIC8+LjwvZW50cnk+CisJPC9yb3c+CisJPHJvdz4KKwkgIDxlbnRyeT4mdjRsMi1xdWFudGl6YXRpb247PC9lbnRyeT4KKwkgIDxlbnRyeT48c3RydWN0ZmllbGQ+cXVhbnRpemF0aW9uPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgPGVudHJ5PlRoaXMgaW5mb3JtYXRpb24gc3VwcGxlbWVudHMgdGhlCis8c3RydWN0ZmllbGQ+Y29sb3JzcGFjZTwvc3RydWN0ZmllbGQ+IGFuZCBtdXN0IGJlIHNldCBieSB0aGUgZHJpdmVyIGZvcgorY2FwdHVyZSBzdHJlYW1zIGFuZCBieSB0aGUgYXBwbGljYXRpb24gZm9yIG91dHB1dCBzdHJlYW1zLAorc2VlIDx4cmVmIGxpbmtlbmQ9ImNvbG9yc3BhY2VzIiAvPi48L2VudHJ5PgorCTwvcm93PgorCTxyb3c+CisJICA8ZW50cnk+JnY0bDIteGZlci1mdW5jOzwvZW50cnk+CisJICA8ZW50cnk+PHN0cnVjdGZpZWxkPnhmZXJfZnVuYzwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgIDxlbnRyeT5UaGlzIGluZm9ybWF0aW9uIHN1cHBsZW1lbnRzIHRoZQorPHN0cnVjdGZpZWxkPmNvbG9yc3BhY2U8L3N0cnVjdGZpZWxkPiBhbmQgbXVzdCBiZSBzZXQgYnkgdGhlIGRyaXZlciBmb3IKK2NhcHR1cmUgc3RyZWFtcyBhbmQgYnkgdGhlIGFwcGxpY2F0aW9uIGZvciBvdXRwdXQgc3RyZWFtcywKK3NlZSA8eHJlZiBsaW5rZW5kPSJjb2xvcnNwYWNlcyIgLz4uPC9lbnRyeT4KKwk8L3Jvdz4KKwk8cm93PgorCSAgPGVudHJ5Pl9fdTE2PC9lbnRyeT4KKwkgIDxlbnRyeT48c3RydWN0ZmllbGQ+cmVzZXJ2ZWQ8L3N0cnVjdGZpZWxkPlsxMV08L2VudHJ5PgorCSAgPGVudHJ5PlJlc2VydmVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucy4gQXBwbGljYXRpb25zIGFuZCBkcml2ZXJzIG11c3QKKwkgIHNldCB0aGUgYXJyYXkgdG8gemVyby48L2VudHJ5PgorCTwvcm93PgorICAgICAgPC90Ym9keT4KKyAgICA8L3Rncm91cD4KKyAgPC90YWJsZT4KKworICA8c2VjdGlvbiBpZD0idjRsMi1tYnVzLXBpeGVsY29kZSI+CisgICAgPHRpdGxlPk1lZGlhIEJ1cyBQaXhlbCBDb2RlczwvdGl0bGU+CisKKyAgICA8cGFyYT5UaGUgbWVkaWEgYnVzIHBpeGVsIGNvZGVzIGRlc2NyaWJlIGltYWdlIGZvcm1hdHMgYXMgZmxvd2luZyBvdmVyCisgICAgcGh5c2ljYWwgYnVzc2VzIChib3RoIGJldHdlZW4gc2VwYXJhdGUgcGh5c2ljYWwgY29tcG9uZW50cyBhbmQgaW5zaWRlIFNvQworICAgIGRldmljZXMpLiBUaGlzIHNob3VsZCBub3QgYmUgY29uZnVzZWQgd2l0aCB0aGUgVjRMMiBwaXhlbCBmb3JtYXRzIHRoYXQKKyAgICBkZXNjcmliZSwgdXNpbmcgZm91ciBjaGFyYWN0ZXIgY29kZXMsIGltYWdlIGZvcm1hdHMgYXMgc3RvcmVkIGluIG1lbW9yeS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT5XaGlsZSB0aGVyZSBpcyBhIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGltYWdlIGZvcm1hdHMgb24gYnVzc2VzIGFuZAorICAgIGltYWdlIGZvcm1hdHMgaW4gbWVtb3J5IChhIHJhdyBCYXllciBpbWFnZSB3b24ndCBiZSBtYWdpY2FsbHkgY29udmVydGVkIHRvCisgICAgSlBFRyBqdXN0IGJ5IHN0b3JpbmcgaXQgdG8gbWVtb3J5KSwgdGhlcmUgaXMgbm8gb25lLXRvLW9uZSBjb3JyZXNwb25kYW5jZQorICAgIGJldHdlZW4gdGhlbS48L3BhcmE+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5QYWNrZWQgUkdCIEZvcm1hdHM8L3RpdGxlPgorCisgICAgICA8cGFyYT5UaG9zZSBmb3JtYXRzIHRyYW5zZmVyIHBpeGVsIGRhdGEgYXMgcmVkLCBncmVlbiBhbmQgYmx1ZSBjb21wb25lbnRzLgorICAgICAgVGhlIGZvcm1hdCBjb2RlIGlzIG1hZGUgb2YgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbi4KKyAgICAgIDxpdGVtaXplZGxpc3Q+CisJPGxpc3RpdGVtPjxwYXJhPlRoZSByZWQsIGdyZWVuIGFuZCBibHVlIGNvbXBvbmVudHMgb3JkZXIgY29kZSwgYXMgZW5jb2RlZCBpbiBhCisJcGl4ZWwgc2FtcGxlLiBQb3NzaWJsZSB2YWx1ZXMgYXJlIFJHQiBhbmQgQkdSLjwvcGFyYT48L2xpc3RpdGVtPgorCTxsaXN0aXRlbT48cGFyYT5UaGUgbnVtYmVyIG9mIGJpdHMgcGVyIGNvbXBvbmVudCwgZm9yIGVhY2ggY29tcG9uZW50LiBUaGUgdmFsdWVzCisJY2FuIGJlIGRpZmZlcmVudCBmb3IgYWxsIGNvbXBvbmVudHMuIENvbW1vbiB2YWx1ZXMgYXJlIDU1NSBhbmQgNTY1LjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCTxsaXN0aXRlbT48cGFyYT5UaGUgbnVtYmVyIG9mIGJ1cyBzYW1wbGVzIHBlciBwaXhlbC4gUGl4ZWxzIHRoYXQgYXJlIHdpZGVyIHRoYW4KKwl0aGUgYnVzIHdpZHRoIG11c3QgYmUgdHJhbnNmZXJyZWQgaW4gbXVsdGlwbGUgc2FtcGxlcy4gQ29tbW9uIHZhbHVlcyBhcmUKKwkxIGFuZCAyLjwvcGFyYT48L2xpc3RpdGVtPgorCTxsaXN0aXRlbT48cGFyYT5UaGUgYnVzIHdpZHRoLjwvcGFyYT48L2xpc3RpdGVtPgorCTxsaXN0aXRlbT48cGFyYT5Gb3IgZm9ybWF0cyB3aGVyZSB0aGUgdG90YWwgbnVtYmVyIG9mIGJpdHMgcGVyIHBpeGVsIGlzIHNtYWxsZXIKKwl0aGFuIHRoZSBudW1iZXIgb2YgYnVzIHNhbXBsZXMgcGVyIHBpeGVsIHRpbWVzIHRoZSBidXMgd2lkdGgsIGEgcGFkZGluZworCXZhbHVlIHN0YXRpbmcgaWYgdGhlIGJ5dGVzIGFyZSBwYWRkZWQgaW4gdGhlaXIgbW9zdCBoaWdoIG9yZGVyIGJpdHMKKwkoUEFESEkpIG9yIGxvdyBvcmRlciBiaXRzIChQQURMTykuIEEgIkMiIHByZWZpeCBpcyB1c2VkIGZvciBjb21wb25lbnQtd2lzZQorCXBhZGRpbmcgaW4gdGhlIG1vc3QgaGlnaCBvcmRlciBiaXRzIChDUEFESEkpIG9yIGxvdyBvcmRlciBiaXRzIChDUEFETE8pCisJb2YgZWFjaCBzZXBhcmF0ZSBjb21wb25lbnQuPC9wYXJhPjwvbGlzdGl0ZW0+CisJPGxpc3RpdGVtPjxwYXJhPkZvciBmb3JtYXRzIHdoZXJlIHRoZSBudW1iZXIgb2YgYnVzIHNhbXBsZXMgcGVyIHBpeGVsIGlzIGxhcmdlcgorCXRoYW4gMSwgYW4gZW5kaWFubmVzcyB2YWx1ZSBzdGF0aW5nIGlmIHRoZSBwaXhlbCBpcyB0cmFuc2ZlcnJlZCBNU0IgZmlyc3QKKwkoQkUpIG9yIExTQiBmaXJzdCAoTEUpLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPkZvciBpbnN0YW5jZSwgYSBmb3JtYXQgd2hlcmUgcGl4ZWxzIGFyZSBlbmNvZGVkIGFzIDUtYml0cyByZWQsIDUtYml0cworICAgICAgZ3JlZW4gYW5kIDUtYml0IGJsdWUgdmFsdWVzIHBhZGRlZCBvbiB0aGUgaGlnaCBiaXQsIHRyYW5zZmVycmVkIGFzIDIgOC1iaXQKKyAgICAgIHNhbXBsZXMgcGVyIHBpeGVsIHdpdGggdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0cyAocGFkZGluZywgcmVkIGFuZCBoYWxmIG9mCisgICAgICB0aGUgZ3JlZW4gdmFsdWUpIHRyYW5zZmVycmVkIGZpcnN0IHdpbGwgYmUgbmFtZWQKKyAgICAgIDxjb25zdGFudD5NRURJQV9CVVNfRk1UX1JHQjU1NV8yWDhfUEFESElfQkU8L2NvbnN0YW50Pi4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyB0YWJsZXMgbGlzdCBleGlzdGluZyBwYWNrZWQgUkdCIGZvcm1hdHMuPC9wYXJhPgorCisgICAgICA8dGFibGUgcGd3aWRlPSIwIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItbWJ1cy1waXhlbGNvZGUtcmdiIj4KKwk8dGl0bGU+UkdCIGZvcm1hdHM8L3RpdGxlPgorCTx0Z3JvdXAgY29scz0iMjciPgorCSAgPGNvbHNwZWMgY29sbmFtZT0iaWQiIGFsaWduPSJsZWZ0IiAvPgorCSAgPGNvbHNwZWMgY29sbmFtZT0iY29kZSIgYWxpZ249ImNlbnRlciIvPgorCSAgPGNvbHNwZWMgY29sbmFtZT0iYml0IiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSI0IiBjb2xuYW1lPSJiMzEiIGFsaWduPSJjZW50ZXIiIC8+CisJICA8Y29sc3BlYyBjb2xudW09IjUiIGNvbG5hbWU9ImIyMCIgYWxpZ249ImNlbnRlciIgLz4KKwkgIDxjb2xzcGVjIGNvbG51bT0iNiIgY29sbmFtZT0iYjI5IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSI3IiBjb2xuYW1lPSJiMjgiIGFsaWduPSJjZW50ZXIiIC8+CisJICA8Y29sc3BlYyBjb2xudW09IjgiIGNvbG5hbWU9ImIyNyIgYWxpZ249ImNlbnRlciIgLz4KKwkgIDxjb2xzcGVjIGNvbG51bT0iOSIgY29sbmFtZT0iYjI2IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxMCIgY29sbmFtZT0iYjI1IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxMSIgY29sbmFtZT0iYjI0IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxMiIgY29sbmFtZT0iYjIzIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxMyIgY29sbmFtZT0iYjIyIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxNCIgY29sbmFtZT0iYjIxIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxNSIgY29sbmFtZT0iYjIwIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxNiIgY29sbmFtZT0iYjE5IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxNyIgY29sbmFtZT0iYjE4IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxOCIgY29sbmFtZT0iYjE3IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxOSIgY29sbmFtZT0iYjE2IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyMCIgY29sbmFtZT0iYjE1IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyMSIgY29sbmFtZT0iYjE0IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyMiIgY29sbmFtZT0iYjEzIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyMyIgY29sbmFtZT0iYjEyIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyNCIgY29sbmFtZT0iYjExIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyNSIgY29sbmFtZT0iYjEwIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyNiIgY29sbmFtZT0iYjA5IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyNyIgY29sbmFtZT0iYjA4IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyOCIgY29sbmFtZT0iYjA3IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyOSIgY29sbmFtZT0iYjA2IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIzMCIgY29sbmFtZT0iYjA1IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIzMSIgY29sbmFtZT0iYjA0IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIzMiIgY29sbmFtZT0iYjAzIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIzMyIgY29sbmFtZT0iYjAyIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIzNCIgY29sbmFtZT0iYjAxIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIzNSIgY29sbmFtZT0iYjAwIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPHNwYW5zcGVjIG5hbWVzdD0iYjMxIiBuYW1lZW5kPSJiMDAiIHNwYW5uYW1lPSJiMCIgLz4KKwkgIDx0aGVhZD4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+SWRlbnRpZmllcjwvZW50cnk+CisJICAgICAgPGVudHJ5PkNvZGU8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeSBzcGFubmFtZT0iYjAiPkRhdGEgb3JnYW5pemF0aW9uPC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PkJpdDwvZW50cnk+CisJICAgICAgPGVudHJ5PjMxPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MzA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4yOTwvZW50cnk+CisJICAgICAgPGVudHJ5PjI4PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+Mjc8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4yNjwvZW50cnk+CisJICAgICAgPGVudHJ5PjI1PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MjQ8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4yMzwvZW50cnk+CisJICAgICAgPGVudHJ5PjIyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MjE8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4yMDwvZW50cnk+CisJICAgICAgPGVudHJ5PjE5PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MTg8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4xNzwvZW50cnk+CisJICAgICAgPGVudHJ5PjE2PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MTU8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4xNDwvZW50cnk+CisJICAgICAgPGVudHJ5PjEzPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MTI8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4xMTwvZW50cnk+CisJICAgICAgPGVudHJ5PjEwPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+OTwvZW50cnk+CisJICAgICAgPGVudHJ5Pjg8L2VudHJ5PgorCSAgICAgIDxlbnRyeT43PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+NjwvZW50cnk+CisJICAgICAgPGVudHJ5PjU8L2VudHJ5PgorCSAgICAgIDxlbnRyeT40PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MzwvZW50cnk+CisJICAgICAgPGVudHJ5PjI8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4xPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgIDwvcm93PgorCSAgPC90aGVhZD4KKwkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtUkdCNDQ0LTFYMTIiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1JHQjQ0NF8xWDEyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgxMDE2PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjA7CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVJHQjQ0NC0yWDgtUEFESEktQkUiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1JHQjQ0NF8yWDhfUEFESElfQkU8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4weDEwMDE8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yNDsKKwkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjQ7CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtUkdCNDQ0LTJYOC1QQURISS1MRSI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfUkdCNDQ0XzJYOF9QQURISV9MRTwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MTAwMjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTI0OworCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yNDsKKwkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdyBpZD0iTUVESUEtQlVTLUZNVC1SR0I1NTUtMlg4LVBBREhJLUJFIj4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9SR0I1NTVfMlg4X1BBREhJX0JFPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgxMDAzPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjQ7CisJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTI0OworCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVJHQjU1NS0yWDgtUEFESEktTEUiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1JHQjU1NV8yWDhfUEFESElfTEU8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4weDEwMDQ8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yNDsKKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjQ7CisJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtUkdCNTY1LTFYMTYiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1JHQjU2NV8xWDE2PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgxMDE3PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMTY7CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdyBpZD0iTUVESUEtQlVTLUZNVC1CR1I1NjUtMlg4LUJFIj4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9CR1I1NjVfMlg4X0JFPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgxMDA1PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjQ7CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTI0OworCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULUJHUjU2NS0yWDgtTEUiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX0JHUjU2NV8yWDhfTEU8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4weDEwMDY8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yNDsKKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjQ7CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtUkdCNTY1LTJYOC1CRSI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfUkdCNTY1XzJYOF9CRTwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MTAwNzwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTI0OworCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yNDsKKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdyBpZD0iTUVESUEtQlVTLUZNVC1SR0I1NjUtMlg4LUxFIj4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9SR0I1NjVfMlg4X0xFPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgxMDA4PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjQ7CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTI0OworCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVJHQjY2Ni0xWDE4Ij4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9SR0I2NjZfMVgxODwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MTAwOTwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTE0OworCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdyBpZD0iTUVESUEtQlVTLUZNVC1SQkc4ODgtMVgyNCI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfUkJHODg4XzFYMjQ8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4weDEwMGU8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC04OworCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdyBpZD0iTUVESUEtQlVTLUZNVC1SR0I2NjYtMVgyNF9DUEFESEkiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1JHQjY2Nl8xWDI0X0NQQURISTwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MTAxNTwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTg7CisJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULUJHUjg4OC0xWDI0Ij4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9CR1I4ODhfMVgyNDwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MTAxMzwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTg7CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULUdCUjg4OC0xWDI0Ij4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9HQlI4ODhfMVgyNDwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MTAxNDwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTg7CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVJHQjg4OC0xWDI0Ij4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9SR0I4ODhfMVgyNDwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MTAwYTwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTg7CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVJHQjg4OC0yWDEyLUJFIj4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9SR0I4ODhfMlgxMl9CRTwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MTAwYjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTIwOworCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjA7CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVJHQjg4OC0yWDEyLUxFIj4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9SR0I4ODhfMlgxMl9MRTwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MTAwYzwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTIwOworCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjA7CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULUFSR0I4ODgtMVgzMiI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfQVJHQjg4OF8xWDMyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgxMDBkPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5hPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5hPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdyBpZD0iTUVESUEtQlVTLUZNVC1SR0I4ODgtMVgzMi1QQURISSI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfUkdCODg4XzFYMzJfUEFESEk8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4weDEwMGY8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgPC90Ym9keT4KKwk8L3Rncm91cD4KKyAgICAgIDwvdGFibGU+CisKKyAgICAgIDxwYXJhPk9uIExWRFMgYnVzZXMsIHVzdWFsbHkgZWFjaCBzYW1wbGUgaXMgdHJhbnNmZXJyZWQgc2VyaWFsaXplZCBpbgorICAgICAgc2V2ZW4gdGltZSBzbG90cyBwZXIgcGl4ZWwgY2xvY2ssIG9uIHRocmVlICgxOC1iaXQpIG9yIGZvdXIgKDI0LWJpdCkKKyAgICAgIGRpZmZlcmVudGlhbCBkYXRhIHBhaXJzIGF0IHRoZSBzYW1lIHRpbWUuIFRoZSByZW1haW5pbmcgYml0cyBhcmUgdXNlZCBmb3IKKyAgICAgIGNvbnRyb2wgc2lnbmFscyBhcyBkZWZpbmVkIGJ5IFNQV0cvUFNXRy9WRVNBIG9yIEpFSURBIHN0YW5kYXJkcy4KKyAgICAgIFRoZSAyNC1iaXQgUkdCIGZvcm1hdCBzZXJpYWxpemVkIGluIHNldmVuIHRpbWUgc2xvdHMgb24gZm91ciBsYW5lcyB1c2luZworICAgICAgSkVJREEgZGVmaW5lZCBiaXQgbWFwcGluZyB3aWxsIGJlIG5hbWVkCisgICAgICA8Y29uc3RhbnQ+TUVESUFfQlVTX0ZNVF9SR0I4ODhfMVg3WDRfSkVJREE8L2NvbnN0YW50PiwgZm9yIGV4YW1wbGUuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDx0YWJsZSBwZ3dpZGU9IjAiIGZyYW1lPSJub25lIiBpZD0idjRsMi1tYnVzLXBpeGVsY29kZS1yZ2ItbHZkcyI+CisJPHRpdGxlPkxWRFMgUkdCIGZvcm1hdHM8L3RpdGxlPgorCTx0Z3JvdXAgY29scz0iOCI+CisJICA8Y29sc3BlYyBjb2xuYW1lPSJpZCIgYWxpZ249ImxlZnQiIC8+CisJICA8Y29sc3BlYyBjb2xuYW1lPSJjb2RlIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbmFtZT0ic2xvdCIgYWxpZ249ImNlbnRlciIgLz4KKwkgIDxjb2xzcGVjIGNvbG5hbWU9ImxhbmUiIC8+CisJICA8Y29sc3BlYyBjb2xudW09IjUiIGNvbG5hbWU9ImwwMyIgYWxpZ249ImNlbnRlciIgLz4KKwkgIDxjb2xzcGVjIGNvbG51bT0iNiIgY29sbmFtZT0ibDAyIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSI3IiBjb2xuYW1lPSJsMDEiIGFsaWduPSJjZW50ZXIiIC8+CisJICA8Y29sc3BlYyBjb2xudW09IjgiIGNvbG5hbWU9ImwwMCIgYWxpZ249ImNlbnRlciIgLz4KKwkgIDxzcGFuc3BlYyBuYW1lc3Q9ImwwMyIgbmFtZWVuZD0ibDAwIiBzcGFubmFtZT0ibDAiIC8+CisJICA8dGhlYWQ+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PklkZW50aWZpZXI8L2VudHJ5PgorCSAgICAgIDxlbnRyeT5Db2RlPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnkgc3Bhbm5hbWU9ImwwIj5EYXRhIG9yZ2FuaXphdGlvbjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5UaW1lc2xvdDwvZW50cnk+CisJICAgICAgPGVudHJ5PkxhbmU8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4zPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MjwvZW50cnk+CisJICAgICAgPGVudHJ5PjE8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICA8L3RoZWFkPgorCSAgPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgICAgPHJvdyBpZD0iTUVESUEtQlVTLUZNVC1SR0I2NjYtMVg3WDMtU1BXRyI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfUkdCNjY2XzFYN1gzX1NQV0c8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4weDEwMTA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5PmQ8L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT4xPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5PmQ8L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT4yPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5PmQ8L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT4zPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT40PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT41PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT42PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVJHQjg4OC0xWDdYNC1TUFdHIj4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9SR0I4ODhfMVg3WDRfU1BXRzwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MTAxMTwvZW50cnk+CisJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5kPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZDwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjE8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZDwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjI8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZDwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjM8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjQ8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjU8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjY8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtUkdCODg4LTFYN1g0LUpFSURBIj4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9SR0I4ODhfMVg3WDRfSkVJREE8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4weDEwMTI8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZDwvZW50cnk+CisJICAgICAgPGVudHJ5PmQ8L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT4xPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmQ8L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT4yPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmQ8L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT4zPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT40PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT41PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT42PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgPC90Ym9keT4KKwk8L3Rncm91cD4KKyAgICAgIDwvdGFibGU+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+QmF5ZXIgRm9ybWF0czwvdGl0bGU+CisKKyAgICAgIDxwYXJhPlRob3NlIGZvcm1hdHMgdHJhbnNmZXIgcGl4ZWwgZGF0YSBhcyByZWQsIGdyZWVuIGFuZCBibHVlIGNvbXBvbmVudHMuCisgICAgICBUaGUgZm9ybWF0IGNvZGUgaXMgbWFkZSBvZiB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uLgorICAgICAgPGl0ZW1pemVkbGlzdD4KKwk8bGlzdGl0ZW0+PHBhcmE+VGhlIHJlZCwgZ3JlZW4gYW5kIGJsdWUgY29tcG9uZW50cyBvcmRlciBjb2RlLCBhcyBlbmNvZGVkIGluIGEKKwlwaXhlbCBzYW1wbGUuIFRoZSBwb3NzaWJsZSB2YWx1ZXMgYXJlIHNob3duIGluIDx4cmVmCisJbGlua2VuZD0iYmF5ZXItcGF0dGVybnMiIC8+LjwvcGFyYT48L2xpc3RpdGVtPgorCTxsaXN0aXRlbT48cGFyYT5UaGUgbnVtYmVyIG9mIGJpdHMgcGVyIHBpeGVsIGNvbXBvbmVudC4gQWxsIGNvbXBvbmVudHMgYXJlCisJdHJhbnNmZXJyZWQgb24gdGhlIHNhbWUgbnVtYmVyIG9mIGJpdHMuIENvbW1vbiB2YWx1ZXMgYXJlIDgsIDEwIGFuZCAxMi48L3BhcmE+CisJPC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+PHBhcmE+VGhlIGNvbXByZXNzaW9uIChvcHRpb25hbCkuIElmIHRoZSBwaXhlbCBjb21wb25lbnRzIGFyZQorCUFMQVctIG9yIERQQ00tY29tcHJlc3NlZCwgYSBtZW50aW9uIG9mIHRoZSBjb21wcmVzc2lvbiBzY2hlbWUgYW5kIHRoZQorCW51bWJlciBvZiBiaXRzIHBlciBjb21wcmVzc2VkIHBpeGVsIGNvbXBvbmVudC48L3BhcmE+PC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+PHBhcmE+VGhlIG51bWJlciBvZiBidXMgc2FtcGxlcyBwZXIgcGl4ZWwuIFBpeGVscyB0aGF0IGFyZSB3aWRlciB0aGFuCisJdGhlIGJ1cyB3aWR0aCBtdXN0IGJlIHRyYW5zZmVycmVkIGluIG11bHRpcGxlIHNhbXBsZXMuIENvbW1vbiB2YWx1ZXMgYXJlCisJMSBhbmQgMi48L3BhcmE+PC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+PHBhcmE+VGhlIGJ1cyB3aWR0aC48L3BhcmE+PC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+PHBhcmE+Rm9yIGZvcm1hdHMgd2hlcmUgdGhlIHRvdGFsIG51bWJlciBvZiBiaXRzIHBlciBwaXhlbCBpcyBzbWFsbGVyCisJdGhhbiB0aGUgbnVtYmVyIG9mIGJ1cyBzYW1wbGVzIHBlciBwaXhlbCB0aW1lcyB0aGUgYnVzIHdpZHRoLCBhIHBhZGRpbmcKKwl2YWx1ZSBzdGF0aW5nIGlmIHRoZSBieXRlcyBhcmUgcGFkZGVkIGluIHRoZWlyIG1vc3QgaGlnaCBvcmRlciBiaXRzCisJKFBBREhJKSBvciBsb3cgb3JkZXIgYml0cyAoUEFETE8pLjwvcGFyYT48L2xpc3RpdGVtPgorCTxsaXN0aXRlbT48cGFyYT5Gb3IgZm9ybWF0cyB3aGVyZSB0aGUgbnVtYmVyIG9mIGJ1cyBzYW1wbGVzIHBlciBwaXhlbCBpcyBsYXJnZXIKKwl0aGFuIDEsIGFuIGVuZGlhbm5lc3MgdmFsdWUgc3RhdGluZyBpZiB0aGUgcGl4ZWwgaXMgdHJhbnNmZXJyZWQgTVNCIGZpcnN0CisJKEJFKSBvciBMU0IgZmlyc3QgKExFKS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT5Gb3IgaW5zdGFuY2UsIGEgZm9ybWF0IHdpdGggdW5jb21wcmVzc2VkIDEwLWJpdCBCYXllciBjb21wb25lbnRzCisgICAgICBhcnJhbmdlZCBpbiBhIHJlZCwgZ3JlZW4sIGdyZWVuLCBibHVlIHBhdHRlcm4gdHJhbnNmZXJyZWQgYXMgMiA4LWJpdAorICAgICAgc2FtcGxlcyBwZXIgcGl4ZWwgd2l0aCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyB0cmFuc2ZlcnJlZCBmaXJzdCB3aWxsCisgICAgICBiZSBuYW1lZCA8Y29uc3RhbnQ+TUVESUFfQlVTX0ZNVF9TUkdHQjEwXzJYOF9QQURISV9MRTwvY29uc3RhbnQ+LgorICAgICAgPC9wYXJhPgorCisgICAgICA8ZmlndXJlIGlkPSJiYXllci1wYXR0ZXJucyI+CisJPHRpdGxlPkJheWVyIFBhdHRlcm5zPC90aXRsZT4KKwk8bWVkaWFvYmplY3Q+CisJICA8aW1hZ2VvYmplY3Q+CisJICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0iYmF5ZXIucG5nIiBmb3JtYXQ9IlBORyIgLz4KKwkgIDwvaW1hZ2VvYmplY3Q+CisJICA8dGV4dG9iamVjdD4KKwkgICAgPHBocmFzZT5CYXllciBmaWx0ZXIgY29sb3IgcGF0dGVybnM8L3BocmFzZT4KKwkgIDwvdGV4dG9iamVjdD4KKwk8L21lZGlhb2JqZWN0PgorICAgICAgPC9maWd1cmU+CisKKyAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgdGFibGUgbGlzdHMgZXhpc3RpbmcgcGFja2VkIEJheWVyIGZvcm1hdHMuIFRoZSBkYXRhCisgICAgICBvcmdhbml6YXRpb24gaXMgZ2l2ZW4gYXMgYW4gZXhhbXBsZSBmb3IgdGhlIGZpcnN0IHBpeGVsIG9ubHkuPC9wYXJhPgorCisgICAgICA8dGFibGUgcGd3aWRlPSIwIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItbWJ1cy1waXhlbGNvZGUtYmF5ZXIiPgorCTx0aXRsZT5CYXllciBGb3JtYXRzPC90aXRsZT4KKwk8dGdyb3VwIGNvbHM9IjE1Ij4KKwkgIDxjb2xzcGVjIGNvbG5hbWU9ImlkIiBhbGlnbj0ibGVmdCIgLz4KKwkgIDxjb2xzcGVjIGNvbG5hbWU9ImNvZGUiIGFsaWduPSJjZW50ZXIiLz4KKwkgIDxjb2xzcGVjIGNvbG5hbWU9ImJpdCIgLz4KKwkgIDxjb2xzcGVjIGNvbG51bT0iNCIgY29sbmFtZT0iYjExIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSI1IiBjb2xuYW1lPSJiMTAiIGFsaWduPSJjZW50ZXIiIC8+CisJICA8Y29sc3BlYyBjb2xudW09IjYiIGNvbG5hbWU9ImIwOSIgYWxpZ249ImNlbnRlciIgLz4KKwkgIDxjb2xzcGVjIGNvbG51bT0iNyIgY29sbmFtZT0iYjA4IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSI4IiBjb2xuYW1lPSJiMDciIGFsaWduPSJjZW50ZXIiIC8+CisJICA8Y29sc3BlYyBjb2xudW09IjkiIGNvbG5hbWU9ImIwNiIgYWxpZ249ImNlbnRlciIgLz4KKwkgIDxjb2xzcGVjIGNvbG51bT0iMTAiIGNvbG5hbWU9ImIwNSIgYWxpZ249ImNlbnRlciIgLz4KKwkgIDxjb2xzcGVjIGNvbG51bT0iMTEiIGNvbG5hbWU9ImIwNCIgYWxpZ249ImNlbnRlciIgLz4KKwkgIDxjb2xzcGVjIGNvbG51bT0iMTIiIGNvbG5hbWU9ImIwMyIgYWxpZ249ImNlbnRlciIgLz4KKwkgIDxjb2xzcGVjIGNvbG51bT0iMTMiIGNvbG5hbWU9ImIwMiIgYWxpZ249ImNlbnRlciIgLz4KKwkgIDxjb2xzcGVjIGNvbG51bT0iMTQiIGNvbG5hbWU9ImIwMSIgYWxpZ249ImNlbnRlciIgLz4KKwkgIDxjb2xzcGVjIGNvbG51bT0iMTUiIGNvbG5hbWU9ImIwMCIgYWxpZ249ImNlbnRlciIgLz4KKwkgIDxzcGFuc3BlYyBuYW1lc3Q9ImIxMSIgbmFtZWVuZD0iYjAwIiBzcGFubmFtZT0iYjAiIC8+CisJICA8dGhlYWQ+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PklkZW50aWZpZXI8L2VudHJ5PgorCSAgICAgIDxlbnRyeT5Db2RlPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnkgc3Bhbm5hbWU9ImIwIj5EYXRhIG9yZ2FuaXphdGlvbjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5CaXQ8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4xMTwvZW50cnk+CisJICAgICAgPGVudHJ5PjEwPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+OTwvZW50cnk+CisJICAgICAgPGVudHJ5Pjg8L2VudHJ5PgorCSAgICAgIDxlbnRyeT43PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+NjwvZW50cnk+CisJICAgICAgPGVudHJ5PjU8L2VudHJ5PgorCSAgICAgIDxlbnRyeT40PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MzwvZW50cnk+CisJICAgICAgPGVudHJ5PjI8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4xPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgIDwvcm93PgorCSAgPC90aGVhZD4KKwkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtU0JHR1I4LTFYOCI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfU0JHR1I4XzFYODwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MzAwMTwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVNHQlJHOC0xWDgiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1NHQlJHOF8xWDg8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4weDMwMTM8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdyBpZD0iTUVESUEtQlVTLUZNVC1TR1JCRzgtMVg4Ij4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9TR1JCRzhfMVg4PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgzMDAyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtU1JHR0I4LTFYOCI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfU1JHR0I4XzFYODwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MzAxNDwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVNCR0dSMTAtQUxBVzgtMVg4Ij4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9TQkdHUjEwX0FMQVc4XzFYODwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MzAxNTwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVNHQlJHMTAtQUxBVzgtMVg4Ij4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9TR0JSRzEwX0FMQVc4XzFYODwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MzAxNjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVNHUkJHMTAtQUxBVzgtMVg4Ij4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9TR1JCRzEwX0FMQVc4XzFYODwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MzAxNzwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVNSR0dCMTAtQUxBVzgtMVg4Ij4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9TUkdHQjEwX0FMQVc4XzFYODwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MzAxODwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVNCR0dSMTAtRFBDTTgtMVg4Ij4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9TQkdHUjEwX0RQQ004XzFYODwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MzAwYjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVNHQlJHMTAtRFBDTTgtMVg4Ij4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9TR0JSRzEwX0RQQ004XzFYODwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MzAwYzwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVNHUkJHMTAtRFBDTTgtMVg4Ij4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9TR1JCRzEwX0RQQ004XzFYODwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MzAwOTwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVNSR0dCMTAtRFBDTTgtMVg4Ij4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9TUkdHQjEwX0RQQ004XzFYODwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MzAwZDwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVNCR0dSMTAtMlg4LVBBREhJLUJFIj4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9TQkdHUjEwXzJYOF9QQURISV9CRTwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MzAwMzwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdyBpZD0iTUVESUEtQlVTLUZNVC1TQkdHUjEwLTJYOC1QQURISS1MRSI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfU0JHR1IxMF8yWDhfUEFESElfTEU8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4weDMwMDQ8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtU0JHR1IxMC0yWDgtUEFETE8tQkUiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1NCR0dSMTBfMlg4X1BBRExPX0JFPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgzMDA1PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVNCR0dSMTAtMlg4LVBBRExPLUxFIj4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9TQkdHUjEwXzJYOF9QQURMT19MRTwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MzAwNjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdyBpZD0iTUVESUEtQlVTLUZNVC1TQkdHUjEwLTFYMTAiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1NCR0dSMTBfMVgxMDwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MzAwNzwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVNHQlJHMTAtMVgxMCI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfU0dCUkcxMF8xWDEwPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgzMDBlPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtU0dSQkcxMC0xWDEwIj4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9TR1JCRzEwXzFYMTA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4weDMwMGE8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdyBpZD0iTUVESUEtQlVTLUZNVC1TUkdHQjEwLTFYMTAiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1NSR0dCMTBfMVgxMDwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MzAwZjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVNCR0dSMTItMVgxMiI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfU0JHR1IxMl8xWDEyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgzMDA4PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5iPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdyBpZD0iTUVESUEtQlVTLUZNVC1TR0JSRzEyLTFYMTIiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1NHQlJHMTJfMVgxMjwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MzAxMDwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtU0dSQkcxMi0xWDEyIj4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9TR1JCRzEyXzFYMTI8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4weDMwMTE8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmc8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5nPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZzxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVNSR0dCMTItMVgxMiI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfU1JHR0IxMl8xWDEyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgzMDEyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5yPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+cjxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnI8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgIDwvdGJvZHk+CisJPC90Z3JvdXA+CisgICAgICA8L3RhYmxlPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uPgorICAgICAgPHRpdGxlPlBhY2tlZCBZVVYgRm9ybWF0czwvdGl0bGU+CisKKyAgICAgIDxwYXJhPlRob3NlIGRhdGEgZm9ybWF0cyB0cmFuc2ZlciBwaXhlbCBkYXRhIGFzIChwb3NzaWJseSBkb3duc2FtcGxlZCkgWSwgVQorICAgICAgYW5kIFYgY29tcG9uZW50cy4gU29tZSBmb3JtYXRzIGluY2x1ZGUgZHVtbXkgYml0cyBpbiBzb21lIG9mIHRoZWlyIHNhbXBsZXMKKyAgICAgIGFuZCBhcmUgY29sbGVjdGl2ZWx5IHJlZmVycmVkIHRvIGFzICJZRFlDIiAoWS1EdW1teS1ZLUNocm9tYSkgZm9ybWF0cy4KKyAgICAgIE9uZSBjYW5ub3QgcmVseSBvbiB0aGUgdmFsdWVzIG9mIHRoZXNlIGR1bW15IGJpdHMgYXMgdGhvc2UgYXJlIHVuZGVmaW5lZC4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPlRoZSBmb3JtYXQgY29kZSBpcyBtYWRlIG9mIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24uCisgICAgICA8aXRlbWl6ZWRsaXN0PgorCTxsaXN0aXRlbT48cGFyYT5UaGUgWSwgVSBhbmQgViBjb21wb25lbnRzIG9yZGVyIGNvZGUsIGFzIHRyYW5zZmVycmVkIG9uIHRoZQorCWJ1cy4gUG9zc2libGUgdmFsdWVzIGFyZSBZVVlWLCBVWVZZLCBZVllVIGFuZCBWWVVZIGZvciBmb3JtYXRzIHdpdGggbm8KKwlkdW1teSBiaXQsIGFuZCBZRFlVWURZViwgWURZVllEWVUsIFlVWURZVllEIGFuZCBZVllEWVVZRCBmb3IgWURZQyBmb3JtYXRzLgorCTwvcGFyYT48L2xpc3RpdGVtPgorCTxsaXN0aXRlbT48cGFyYT5UaGUgbnVtYmVyIG9mIGJpdHMgcGVyIHBpeGVsIGNvbXBvbmVudC4gQWxsIGNvbXBvbmVudHMgYXJlCisJdHJhbnNmZXJyZWQgb24gdGhlIHNhbWUgbnVtYmVyIG9mIGJpdHMuIENvbW1vbiB2YWx1ZXMgYXJlIDgsIDEwIGFuZCAxMi48L3BhcmE+CisJPC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+PHBhcmE+VGhlIG51bWJlciBvZiBidXMgc2FtcGxlcyBwZXIgcGl4ZWwuIFBpeGVscyB0aGF0IGFyZSB3aWRlciB0aGFuCisJdGhlIGJ1cyB3aWR0aCBtdXN0IGJlIHRyYW5zZmVycmVkIGluIG11bHRpcGxlIHNhbXBsZXMuIENvbW1vbiB2YWx1ZXMgYXJlCisJMSwgMS41IChlbmNvZGVkIGFzIDFfNSkgYW5kIDIuPC9wYXJhPjwvbGlzdGl0ZW0+CisJPGxpc3RpdGVtPjxwYXJhPlRoZSBidXMgd2lkdGguIFdoZW4gdGhlIGJ1cyB3aWR0aCBpcyBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyIG9mCisJYml0cyBwZXIgcGl4ZWwgY29tcG9uZW50LCBzZXZlcmFsIGNvbXBvbmVudHMgYXJlIHBhY2tlZCBpbiBhIHNpbmdsZSBidXMKKwlzYW1wbGUuIFRoZSBjb21wb25lbnRzIGFyZSBvcmRlcmVkIGFzIHNwZWNpZmllZCBieSB0aGUgb3JkZXIgY29kZSwgd2l0aAorCWNvbXBvbmVudHMgb24gdGhlIGxlZnQgb2YgdGhlIGNvZGUgdHJhbnNmZXJyZWQgaW4gdGhlIGhpZ2ggb3JkZXIgYml0cy4KKwlDb21tb24gdmFsdWVzIGFyZSA4IGFuZCAxNi48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT5Gb3IgaW5zdGFuY2UsIGEgZm9ybWF0IHdoZXJlIHBpeGVscyBhcmUgZW5jb2RlZCBhcyA4LWJpdCBZVVYgdmFsdWVzCisgICAgICBkb3duc2FtcGxlZCB0byA0OjI6MiBhbmQgdHJhbnNmZXJyZWQgYXMgMiA4LWJpdCBidXMgc2FtcGxlcyBwZXIgcGl4ZWwgaW4gdGhlCisgICAgICBVLCBZLCBWLCBZIG9yZGVyIHdpbGwgYmUgbmFtZWQgPGNvbnN0YW50Pk1FRElBX0JVU19GTVRfVVlWWThfMlg4PC9jb25zdGFudD4uCisgICAgICA8L3BhcmE+CisKKwk8cGFyYT48eHJlZiBsaW5rZW5kPSJ2NGwyLW1idXMtcGl4ZWxjb2RlLXl1djgiLz4gbGlzdHMgZXhpc3RpbmcgcGFja2VkIFlVVgorCWZvcm1hdHMgYW5kIGRlc2NyaWJlcyB0aGUgb3JnYW5pemF0aW9uIG9mIGVhY2ggcGl4ZWwgZGF0YSBpbiBlYWNoIHNhbXBsZS4KKwlXaGVuIGEgZm9ybWF0IHBhdHRlcm4gaXMgc3BsaXQgYWNyb3NzIG11bHRpcGxlIHNhbXBsZXMgZWFjaCBvZiB0aGUgc2FtcGxlcworCWluIHRoZSBwYXR0ZXJuIGlzIGRlc2NyaWJlZC48L3BhcmE+CisKKwk8cGFyYT5UaGUgcm9sZSBvZiBlYWNoIGJpdCB0cmFuc2ZlcnJlZCBvdmVyIHRoZSBidXMgaXMgaWRlbnRpZmllZCBieSBvbmUKKwlvZiB0aGUgZm9sbG93aW5nIGNvZGVzLjwvcGFyYT4KKworCTxpdGVtaXplZGxpc3Q+CisJICAgPGxpc3RpdGVtPjxwYXJhPnk8c3Vic2NyaXB0Png8L3N1YnNjcmlwdD4gZm9yIGx1bWEgY29tcG9uZW50IGJpdCBudW1iZXIgeDwvcGFyYT48L2xpc3RpdGVtPgorCSAgIDxsaXN0aXRlbT48cGFyYT51PHN1YnNjcmlwdD54PC9zdWJzY3JpcHQ+IGZvciBibHVlIGNocm9tYSBjb21wb25lbnQgYml0IG51bWJlciB4PC9wYXJhPjwvbGlzdGl0ZW0+CisJICAgPGxpc3RpdGVtPjxwYXJhPnY8c3Vic2NyaXB0Png8L3N1YnNjcmlwdD4gZm9yIHJlZCBjaHJvbWEgY29tcG9uZW50IGJpdCBudW1iZXIgeDwvcGFyYT48L2xpc3RpdGVtPgorCSAgIDxsaXN0aXRlbT48cGFyYT5hPHN1YnNjcmlwdD54PC9zdWJzY3JpcHQ+IGZvciBhbHBoYSBjb21wb25lbnQgYml0IG51bWJlciB4PC9wYXJhPjwvbGlzdGl0ZW0+CisJICAgPGxpc3RpdGVtPjxwYXJhPi0gZm9yIG5vbi1hdmFpbGFibGUgYml0cyAoZm9yIHBvc2l0aW9ucyBoaWdoZXIgdGhhbiB0aGUgYnVzIHdpZHRoKTwvcGFyYT48L2xpc3RpdGVtPgorCSAgIDxsaXN0aXRlbT48cGFyYT5kIGZvciBkdW1teSBiaXRzPC9wYXJhPjwvbGlzdGl0ZW0+CisJPC9pdGVtaXplZGxpc3Q+CisKKyAgICAgIDx0YWJsZSBwZ3dpZGU9IjAiIGZyYW1lPSJub25lIiBpZD0idjRsMi1tYnVzLXBpeGVsY29kZS15dXY4Ij4KKwk8dGl0bGU+WVVWIEZvcm1hdHM8L3RpdGxlPgorCTx0Z3JvdXAgY29scz0iMjMiPgorCSAgPGNvbHNwZWMgY29sbmFtZT0iaWQiIGFsaWduPSJsZWZ0IiAvPgorCSAgPGNvbHNwZWMgY29sbmFtZT0iY29kZSIgYWxpZ249ImNlbnRlciIvPgorCSAgPGNvbHNwZWMgY29sbmFtZT0iYml0IiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSI0IiBjb2xuYW1lPSJiMzEiIGFsaWduPSJjZW50ZXIiIC8+CisJICA8Y29sc3BlYyBjb2xudW09IjUiIGNvbG5hbWU9ImIyMCIgYWxpZ249ImNlbnRlciIgLz4KKwkgIDxjb2xzcGVjIGNvbG51bT0iNiIgY29sbmFtZT0iYjI5IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSI3IiBjb2xuYW1lPSJiMjgiIGFsaWduPSJjZW50ZXIiIC8+CisJICA8Y29sc3BlYyBjb2xudW09IjgiIGNvbG5hbWU9ImIyNyIgYWxpZ249ImNlbnRlciIgLz4KKwkgIDxjb2xzcGVjIGNvbG51bT0iOSIgY29sbmFtZT0iYjI2IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxMCIgY29sbmFtZT0iYjI1IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxMSIgY29sbmFtZT0iYjI0IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxMiIgY29sbmFtZT0iYjIzIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxMyIgY29sbmFtZT0iYjIyIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxNCIgY29sbmFtZT0iYjIxIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxNSIgY29sbmFtZT0iYjIwIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxNiIgY29sbmFtZT0iYjE5IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxNyIgY29sbmFtZT0iYjE4IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxOCIgY29sbmFtZT0iYjE3IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxOSIgY29sbmFtZT0iYjE2IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyMCIgY29sbmFtZT0iYjE1IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyMSIgY29sbmFtZT0iYjE0IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyMiIgY29sbmFtZT0iYjEzIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyMyIgY29sbmFtZT0iYjEyIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyNCIgY29sbmFtZT0iYjExIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyNSIgY29sbmFtZT0iYjEwIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyNiIgY29sbmFtZT0iYjA5IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyNyIgY29sbmFtZT0iYjA4IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyOCIgY29sbmFtZT0iYjA3IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyOSIgY29sbmFtZT0iYjA2IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIzMCIgY29sbmFtZT0iYjA1IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIzMSIgY29sbmFtZT0iYjA0IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIzMiIgY29sbmFtZT0iYjAzIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIzMyIgY29sbmFtZT0iYjAyIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIzNCIgY29sbmFtZT0iYjAxIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIzNSIgY29sbmFtZT0iYjAwIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPHNwYW5zcGVjIG5hbWVzdD0iYjMxIiBuYW1lZW5kPSJiMDAiIHNwYW5uYW1lPSJiMCIgLz4KKwkgIDx0aGVhZD4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+SWRlbnRpZmllcjwvZW50cnk+CisJICAgICAgPGVudHJ5PkNvZGU8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeSBzcGFubmFtZT0iYjAiPkRhdGEgb3JnYW5pemF0aW9uPC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PkJpdDwvZW50cnk+CisJICAgICAgPGVudHJ5PjMxPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MzA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4yOTwvZW50cnk+CisJICAgICAgPGVudHJ5PjI4PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+Mjc8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4yNjwvZW50cnk+CisJICAgICAgPGVudHJ5PjI1PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MjQ8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4yMzwvZW50cnk+CisJICAgICAgPGVudHJ5PjIyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MjE8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4xMDwvZW50cnk+CisJICAgICAgPGVudHJ5PjE5PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MTg8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4xNzwvZW50cnk+CisJICAgICAgPGVudHJ5PjE2PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MTU8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4xNDwvZW50cnk+CisJICAgICAgPGVudHJ5PjEzPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MTI8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4xMTwvZW50cnk+CisJICAgICAgPGVudHJ5PjEwPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+OTwvZW50cnk+CisJICAgICAgPGVudHJ5Pjg8L2VudHJ5PgorCSAgICAgIDxlbnRyeT43PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+NjwvZW50cnk+CisJICAgICAgPGVudHJ5PjU8L2VudHJ5PgorCSAgICAgIDxlbnRyeT40PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MzwvZW50cnk+CisJICAgICAgPGVudHJ5PjI8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4xPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgIDwvcm93PgorCSAgPC90aGVhZD4KKwkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtWTgtMVg4Ij4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9ZOF8xWDg8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4weDIwMDE8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yNDsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdyBpZD0iTUVESUEtQlVTLUZNVC1VVjgtMVg4Ij4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9VVjhfMVg4PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgyMDE1PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjQ7CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTI0OworCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVVZVlk4LTFfNVg4Ij4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9VWVZZOF8xXzVYODwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MjAwMjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTI0OworCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yNDsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjQ7CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTI0OworCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yNDsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjQ7CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtVllVWTgtMV81WDgiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1ZZVVk4XzFfNVg4PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgyMDAzPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjQ7CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTI0OworCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yNDsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjQ7CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTI0OworCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yNDsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdyBpZD0iTUVESUEtQlVTLUZNVC1ZVVlWOC0xXzVYOCI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfWVVZVjhfMV81WDg8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4weDIwMDQ8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yNDsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjQ7CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTI0OworCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yNDsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjQ7CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTI0OworCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVlWWVU4LTFfNVg4Ij4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9ZVllVOF8xXzVYODwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MjAwNTwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTI0OworCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yNDsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjQ7CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTI0OworCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yNDsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjQ7CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtVVlWWTgtMlg4Ij4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9VWVZZOF8yWDg8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4weDIwMDY8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yNDsKKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjQ7CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTI0OworCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yNDsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdyBpZD0iTUVESUEtQlVTLUZNVC1WWVVZOC0yWDgiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1ZZVVk4XzJYODwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MjAwNzwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTI0OworCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yNDsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjQ7CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTI0OworCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVlVWVY4LTJYOCI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfWVVZVjhfMlg4PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgyMDA4PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjQ7CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTI0OworCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yNDsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjQ7CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtWVZZVTgtMlg4Ij4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9ZVllVOF8yWDg8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4weDIwMDk8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yNDsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjQ7CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTI0OworCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yNDsKKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdyBpZD0iTUVESUEtQlVTLUZNVC1ZMTAtMVgxMCI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfWTEwXzFYMTA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4weDIwMGE8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yMjsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVVZVlkxMC0yWDEwIj4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9VWVZZMTBfMlgxMDwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MjAxODwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTIyOworCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTIyOworCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTIyOworCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTIyOworCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtVllVWTEwLTJYMTAiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1ZZVVkxMF8yWDEwPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgyMDE5PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjI7CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjI7CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjI7CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjI7CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdyBpZD0iTUVESUEtQlVTLUZNVC1ZVVlWMTAtMlgxMCI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfWVVZVjEwXzJYMTA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4weDIwMGI8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yMjsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yMjsKKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yMjsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yMjsKKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVlWWVUxMC0yWDEwIj4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9ZVllVMTBfMlgxMDwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MjAwYzwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTIyOworCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTIyOworCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTIyOworCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTIyOworCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtWTEyLTFYMTIiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1kxMl8xWDEyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgyMDEzPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjA7CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtVVlWWTEyLTJYMTIiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1VZVlkxMl8yWDEyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgyMDFjPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjA7CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTIwOworCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yMDsKKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjA7CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtVllVWTEyLTJYMTIiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1ZZVVkxMl8yWDEyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgyMDFkPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjA7CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTIwOworCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yMDsKKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjA7CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtWVVZVjEyLTJYMTIiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1lVWVYxMl8yWDEyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgyMDFlPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjA7CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTIwOworCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yMDsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjA7CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtWVZZVTEyLTJYMTIiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1lWWVUxMl8yWDEyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgyMDFmPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjA7CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTIwOworCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0yMDsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMjA7CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtVVlWWTgtMVgxNiI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfVVlWWThfMVgxNjwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MjAwZjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTE2OworCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTE2OworCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtVllVWTgtMVgxNiI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfVllVWThfMVgxNjwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MjAxMDwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTE2OworCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTE2OworCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtWVVZVjgtMVgxNiI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfWVVZVjhfMVgxNjwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MjAxMTwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTE2OworCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTE2OworCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtWVZZVTgtMVgxNiI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfWVZZVThfMVgxNjwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MjAxMjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTE2OworCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTE2OworCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtWURZVVlEWVY4LTFYMTYiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1lEWVVZRFlWOF8xWDE2PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgyMDE0PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMTY7CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZDwvZW50cnk+CisJICAgICAgPGVudHJ5PmQ8L2VudHJ5PgorCSAgICAgIDxlbnRyeT5kPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZDwvZW50cnk+CisJICAgICAgPGVudHJ5PmQ8L2VudHJ5PgorCSAgICAgIDxlbnRyeT5kPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZDwvZW50cnk+CisJICAgICAgPGVudHJ5PmQ8L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMTY7CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMTY7CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZDwvZW50cnk+CisJICAgICAgPGVudHJ5PmQ8L2VudHJ5PgorCSAgICAgIDxlbnRyeT5kPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZDwvZW50cnk+CisJICAgICAgPGVudHJ5PmQ8L2VudHJ5PgorCSAgICAgIDxlbnRyeT5kPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+ZDwvZW50cnk+CisJICAgICAgPGVudHJ5PmQ8L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMTY7CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdyBpZD0iTUVESUEtQlVTLUZNVC1VWVZZMTAtMVgyMCI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfVVlWWTEwXzFYMjA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4weDIwMWE8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0xMjsKKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMTI7CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtVllVWTEwLTFYMjAiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1ZZVVkxMF8xWDIwPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgyMDFiPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMTI7CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTEyOworCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVlVWVYxMC0xWDIwIj4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9ZVVlWMTBfMVgyMDwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MjAwZDwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgJmRhc2gtZW50LTEyOworCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0xMjsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdyBpZD0iTUVESUEtQlVTLUZNVC1ZVllVMTAtMVgyMCI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfWVZZVTEwXzFYMjA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4weDIwMGU8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC0xMjsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtMTI7CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtVlVZOC0xWDI0Ij4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9WVVk4XzFYMjQ8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4weDIwMWE8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC04OworCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgICAgPHJvdyBpZD0iTUVESUEtQlVTLUZNVC1ZVVY4LTFYMjQiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1lVVjhfMVgyNDwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MjAyNTwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+LTwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtVVlWWTEyLTFYMjQiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1VZVlkxMl8xWDI0PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgyMDIwPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtODsKKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC04OworCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtVllVWTEyLTFYMjQiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1ZZVVkxMl8xWDI0PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgyMDIxPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtODsKKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC04OworCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtWVVZVjEyLTFYMjQiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1lVWVYxMl8xWDI0PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgyMDIyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtODsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC04OworCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtWVZZVTEyLTFYMjQiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX1lWWVUxMl8xWDI0PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHgyMDIzPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgICAmZGFzaC1lbnQtODsKKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xMDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgIDwvcm93PgorCSAgICA8cm93PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgICZkYXNoLWVudC04OworCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xMTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjEwPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjExPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MTA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtWVVWMTAtMVgzMCI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfWVVWMTBfMVgzMDwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MjAxNjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pi08L2VudHJ5PgorCSAgICAgIDxlbnRyeT4tPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+OTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0Pjg8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0Pjk8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD44PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD45PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+ODwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtQVlVVjgtMVgzMiI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfQVlVVjhfMVgzMjwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4MjAxNzwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmE8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5hPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5hPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5hPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT55PHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+eTxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pnk8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnU8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT51PHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+dTxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICA8L3Rib2R5PgorCTwvdGdyb3VwPgorICAgICAgPC90YWJsZT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5IU1YvSFNMIEZvcm1hdHM8L3RpdGxlPgorCisgICAgICA8cGFyYT5UaG9zZSBmb3JtYXRzIHRyYW5zZmVyIHBpeGVsIGRhdGEgYXMgUkdCIHZhbHVlcyBpbiBhIGN5bGluZHJpY2FsLWNvb3JkaW5hdGUKKyAgICAgIHN5c3RlbSB1c2luZyBIdWUtU2F0dXJhdGlvbi1WYWx1ZSBvciBIdWUtU2F0dXJhdGlvbi1MaWdodG5lc3MgY29tcG9uZW50cy4gVGhlCisgICAgICBmb3JtYXQgY29kZSBpcyBtYWRlIG9mIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24uCisgICAgICA8aXRlbWl6ZWRsaXN0PgorCTxsaXN0aXRlbT48cGFyYT5UaGUgaHVlLCBzYXR1cmF0aW9uLCB2YWx1ZSBvciBsaWdodG5lc3MgYW5kIG9wdGlvbmFsIGFscGhhCisJY29tcG9uZW50cyBvcmRlciBjb2RlLCBhcyBlbmNvZGVkIGluIGEgcGl4ZWwgc2FtcGxlLiBUaGUgb25seSBjdXJyZW50bHkKKwlzdXBwb3J0ZWQgdmFsdWUgaXMgQUhTVi4KKwk8L3BhcmE+PC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+PHBhcmE+VGhlIG51bWJlciBvZiBiaXRzIHBlciBjb21wb25lbnQsIGZvciBlYWNoIGNvbXBvbmVudC4gVGhlIHZhbHVlcworCWNhbiBiZSBkaWZmZXJlbnQgZm9yIGFsbCBjb21wb25lbnRzLiBUaGUgb25seSBjdXJyZW50bHkgc3VwcG9ydGVkIHZhbHVlIGlzIDg4ODguCisJPC9wYXJhPjwvbGlzdGl0ZW0+CisJPGxpc3RpdGVtPjxwYXJhPlRoZSBudW1iZXIgb2YgYnVzIHNhbXBsZXMgcGVyIHBpeGVsLiBQaXhlbHMgdGhhdCBhcmUgd2lkZXIgdGhhbgorCXRoZSBidXMgd2lkdGggbXVzdCBiZSB0cmFuc2ZlcnJlZCBpbiBtdWx0aXBsZSBzYW1wbGVzLiBUaGUgb25seSBjdXJyZW50bHkKKwlzdXBwb3J0ZWQgdmFsdWUgaXMgMS48L3BhcmE+PC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+PHBhcmE+VGhlIGJ1cyB3aWR0aC48L3BhcmE+PC9saXN0aXRlbT4KKwk8bGlzdGl0ZW0+PHBhcmE+Rm9yIGZvcm1hdHMgd2hlcmUgdGhlIHRvdGFsIG51bWJlciBvZiBiaXRzIHBlciBwaXhlbCBpcyBzbWFsbGVyCisJdGhhbiB0aGUgbnVtYmVyIG9mIGJ1cyBzYW1wbGVzIHBlciBwaXhlbCB0aW1lcyB0aGUgYnVzIHdpZHRoLCBhIHBhZGRpbmcKKwl2YWx1ZSBzdGF0aW5nIGlmIHRoZSBieXRlcyBhcmUgcGFkZGVkIGluIHRoZWlyIG1vc3QgaGlnaCBvcmRlciBiaXRzCisJKFBBREhJKSBvciBsb3cgb3JkZXIgYml0cyAoUEFETE8pLjwvcGFyYT48L2xpc3RpdGVtPgorCTxsaXN0aXRlbT48cGFyYT5Gb3IgZm9ybWF0cyB3aGVyZSB0aGUgbnVtYmVyIG9mIGJ1cyBzYW1wbGVzIHBlciBwaXhlbCBpcyBsYXJnZXIKKwl0aGFuIDEsIGFuIGVuZGlhbm5lc3MgdmFsdWUgc3RhdGluZyBpZiB0aGUgcGl4ZWwgaXMgdHJhbnNmZXJyZWQgTVNCIGZpcnN0CisJKEJFKSBvciBMU0IgZmlyc3QgKExFKS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT5UaGUgZm9sbG93aW5nIHRhYmxlIGxpc3RzIGV4aXN0aW5nIEhTVi9IU0wgZm9ybWF0cy48L3BhcmE+CisKKyAgICAgIDx0YWJsZSBwZ3dpZGU9IjAiIGZyYW1lPSJub25lIiBpZD0idjRsMi1tYnVzLXBpeGVsY29kZS1oc3YiPgorCTx0aXRsZT5IU1YvSFNMIGZvcm1hdHM8L3RpdGxlPgorCTx0Z3JvdXAgY29scz0iMjciPgorCSAgPGNvbHNwZWMgY29sbmFtZT0iaWQiIGFsaWduPSJsZWZ0IiAvPgorCSAgPGNvbHNwZWMgY29sbmFtZT0iY29kZSIgYWxpZ249ImNlbnRlciIvPgorCSAgPGNvbHNwZWMgY29sbmFtZT0iYml0IiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSI0IiBjb2xuYW1lPSJiMzEiIGFsaWduPSJjZW50ZXIiIC8+CisJICA8Y29sc3BlYyBjb2xudW09IjUiIGNvbG5hbWU9ImIyMCIgYWxpZ249ImNlbnRlciIgLz4KKwkgIDxjb2xzcGVjIGNvbG51bT0iNiIgY29sbmFtZT0iYjI5IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSI3IiBjb2xuYW1lPSJiMjgiIGFsaWduPSJjZW50ZXIiIC8+CisJICA8Y29sc3BlYyBjb2xudW09IjgiIGNvbG5hbWU9ImIyNyIgYWxpZ249ImNlbnRlciIgLz4KKwkgIDxjb2xzcGVjIGNvbG51bT0iOSIgY29sbmFtZT0iYjI2IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxMCIgY29sbmFtZT0iYjI1IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxMSIgY29sbmFtZT0iYjI0IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxMiIgY29sbmFtZT0iYjIzIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxMyIgY29sbmFtZT0iYjIyIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxNCIgY29sbmFtZT0iYjIxIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxNSIgY29sbmFtZT0iYjIwIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxNiIgY29sbmFtZT0iYjE5IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxNyIgY29sbmFtZT0iYjE4IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxOCIgY29sbmFtZT0iYjE3IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIxOSIgY29sbmFtZT0iYjE2IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyMCIgY29sbmFtZT0iYjE1IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyMSIgY29sbmFtZT0iYjE0IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyMiIgY29sbmFtZT0iYjEzIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyMyIgY29sbmFtZT0iYjEyIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyNCIgY29sbmFtZT0iYjExIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyNSIgY29sbmFtZT0iYjEwIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyNiIgY29sbmFtZT0iYjA5IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyNyIgY29sbmFtZT0iYjA4IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyOCIgY29sbmFtZT0iYjA3IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIyOSIgY29sbmFtZT0iYjA2IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIzMCIgY29sbmFtZT0iYjA1IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIzMSIgY29sbmFtZT0iYjA0IiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIzMiIgY29sbmFtZT0iYjAzIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIzMyIgY29sbmFtZT0iYjAyIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIzNCIgY29sbmFtZT0iYjAxIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPGNvbHNwZWMgY29sbnVtPSIzNSIgY29sbmFtZT0iYjAwIiBhbGlnbj0iY2VudGVyIiAvPgorCSAgPHNwYW5zcGVjIG5hbWVzdD0iYjMxIiBuYW1lZW5kPSJiMDAiIHNwYW5uYW1lPSJiMCIgLz4KKwkgIDx0aGVhZD4KKwkgICAgPHJvdz4KKwkgICAgICA8ZW50cnk+SWRlbnRpZmllcjwvZW50cnk+CisJICAgICAgPGVudHJ5PkNvZGU8L2VudHJ5PgorCSAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICAgIDxlbnRyeSBzcGFubmFtZT0iYjAiPkRhdGEgb3JnYW5pemF0aW9uPC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PkJpdDwvZW50cnk+CisJICAgICAgPGVudHJ5PjMxPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MzA8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4yOTwvZW50cnk+CisJICAgICAgPGVudHJ5PjI4PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+Mjc8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4yNjwvZW50cnk+CisJICAgICAgPGVudHJ5PjI1PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MjQ8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4yMzwvZW50cnk+CisJICAgICAgPGVudHJ5PjIyPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MjE8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4yMDwvZW50cnk+CisJICAgICAgPGVudHJ5PjE5PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MTg8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4xNzwvZW50cnk+CisJICAgICAgPGVudHJ5PjE2PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MTU8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4xNDwvZW50cnk+CisJICAgICAgPGVudHJ5PjEzPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MTI8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4xMTwvZW50cnk+CisJICAgICAgPGVudHJ5PjEwPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+OTwvZW50cnk+CisJICAgICAgPGVudHJ5Pjg8L2VudHJ5PgorCSAgICAgIDxlbnRyeT43PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+NjwvZW50cnk+CisJICAgICAgPGVudHJ5PjU8L2VudHJ5PgorCSAgICAgIDxlbnRyeT40PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MzwvZW50cnk+CisJICAgICAgPGVudHJ5PjI8L2VudHJ5PgorCSAgICAgIDxlbnRyeT4xPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgIDwvcm93PgorCSAgPC90aGVhZD4KKwkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtQUhTVjg4ODgtMVgzMiI+CisJICAgICAgPGVudHJ5Pk1FRElBX0JVU19GTVRfQUhTVjg4ODhfMVgzMjwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4NjAwMTwvZW50cnk+CisJICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmE8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5hPHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5hPHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+YTxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PmE8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5hPHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+aDxzdWJzY3JpcHQ+Nzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmg8c3Vic2NyaXB0PjY8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5oPHN1YnNjcmlwdD41PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+aDxzdWJzY3JpcHQ+NDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmg8c3Vic2NyaXB0PjM8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5oPHN1YnNjcmlwdD4yPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+aDxzdWJzY3JpcHQ+MTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5Pmg8c3Vic2NyaXB0PjA8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5zPHN1YnNjcmlwdD43PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+czxzdWJzY3JpcHQ+Njwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnM8c3Vic2NyaXB0PjU8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5zPHN1YnNjcmlwdD40PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+czxzdWJzY3JpcHQ+Mzwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnM8c3Vic2NyaXB0PjI8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT5zPHN1YnNjcmlwdD4xPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+czxzdWJzY3JpcHQ+MDwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0Pjc8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD42PC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+NTwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjQ8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4zPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+djxzdWJzY3JpcHQ+Mjwvc3Vic2NyaXB0PjwvZW50cnk+CisJICAgICAgPGVudHJ5PnY8c3Vic2NyaXB0PjE8L3N1YnNjcmlwdD48L2VudHJ5PgorCSAgICAgIDxlbnRyeT52PHN1YnNjcmlwdD4wPC9zdWJzY3JpcHQ+PC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICA8L3Rib2R5PgorCTwvdGdyb3VwPgorICAgICAgPC90YWJsZT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbj4KKyAgICAgIDx0aXRsZT5KUEVHIENvbXByZXNzZWQgRm9ybWF0czwvdGl0bGU+CisKKyAgICAgIDxwYXJhPlRob3NlIGRhdGEgZm9ybWF0cyBjb25zaXN0IG9mIGFuIG9yZGVyZWQgc2VxdWVuY2Ugb2YgOC1iaXQgYnl0ZXMKKwlvYnRhaW5lZCBmcm9tIEpQRUcgY29tcHJlc3Npb24gcHJvY2Vzcy4gQWRkaXRpb25hbGx5IHRvIHRoZQorCTxjb25zdGFudD5fSlBFRzwvY29uc3RhbnQ+IHBvc3RmaXggdGhlIGZvcm1hdCBjb2RlIGlzIG1hZGUgb2YKKwl0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uLgorCTxpdGVtaXplZGxpc3Q+CisJICA8bGlzdGl0ZW0+PHBhcmE+VGhlIG51bWJlciBvZiBidXMgc2FtcGxlcyBwZXIgZW50cm9weSBlbmNvZGVkIGJ5dGUuPC9wYXJhPjwvbGlzdGl0ZW0+CisJICA8bGlzdGl0ZW0+PHBhcmE+VGhlIGJ1cyB3aWR0aC48L3BhcmE+PC9saXN0aXRlbT4KKwk8L2l0ZW1pemVkbGlzdD4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+Rm9yIGluc3RhbmNlLCBmb3IgYSBKUEVHIGJhc2VsaW5lIHByb2Nlc3MgYW5kIGFuIDgtYml0IGJ1cyB3aWR0aAorICAgICAgICB0aGUgZm9ybWF0IHdpbGwgYmUgbmFtZWQgPGNvbnN0YW50Pk1FRElBX0JVU19GTVRfSlBFR18xWDg8L2NvbnN0YW50Pi4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+VGhlIGZvbGxvd2luZyB0YWJsZSBsaXN0cyBleGlzdGluZyBKUEVHIGNvbXByZXNzZWQgZm9ybWF0cy48L3BhcmE+CisKKyAgICAgIDx0YWJsZSBwZ3dpZGU9IjAiIGZyYW1lPSJub25lIiBpZD0idjRsMi1tYnVzLXBpeGVsY29kZS1qcGVnIj4KKwk8dGl0bGU+SlBFRyBGb3JtYXRzPC90aXRsZT4KKwk8dGdyb3VwIGNvbHM9IjMiPgorCSAgPGNvbHNwZWMgY29sbmFtZT0iaWQiIGFsaWduPSJsZWZ0IiAvPgorCSAgPGNvbHNwZWMgY29sbmFtZT0iY29kZSIgYWxpZ249ImxlZnQiLz4KKwkgIDxjb2xzcGVjIGNvbG5hbWU9InJlbWFya3MiIGFsaWduPSJsZWZ0Ii8+CisJICA8dGhlYWQ+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PklkZW50aWZpZXI8L2VudHJ5PgorCSAgICAgIDxlbnRyeT5Db2RlPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+UmVtYXJrczwvZW50cnk+CisJICAgIDwvcm93PgorCSAgPC90aGVhZD4KKwkgIDx0Ym9keSB2YWxpZ249InRvcCI+CisJICAgIDxyb3cgaWQ9Ik1FRElBLUJVUy1GTVQtSlBFRy0xWDgiPgorCSAgICAgIDxlbnRyeT5NRURJQV9CVVNfRk1UX0pQRUdfMVg4PC9lbnRyeT4KKwkgICAgICA8ZW50cnk+MHg0MDAxPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+QmVzaWRlcyBvZiBpdHMgdXNhZ2UgZm9yIHRoZSBwYXJhbGxlbCBidXMgdGhpcyBmb3JtYXQgaXMKKwkJcmVjb21tZW5kZWQgZm9yIHRyYW5zbWlzc2lvbiBvZiBKUEVHIGRhdGEgb3ZlciBNSVBJIENTSSBidXMKKwkJdXNpbmcgdGhlIFVzZXIgRGVmaW5lZCA4LWJpdCBEYXRhIHR5cGVzLgorCSAgICAgIDwvZW50cnk+CisJICAgIDwvcm93PgorCSAgPC90Ym9keT4KKwk8L3Rncm91cD4KKyAgICAgIDwvdGFibGU+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9InY0bDItbWJ1cy12ZW5kb3Itc3BlYy1mbXRzIj4KKyAgICAgIDx0aXRsZT5WZW5kb3IgYW5kIERldmljZSBTcGVjaWZpYyBGb3JtYXRzPC90aXRsZT4KKworICAgICAgPG5vdGU+CisJPHRpdGxlPkV4cGVyaW1lbnRhbDwvdGl0bGU+CisJPHBhcmE+VGhpcyBpcyBhbiA8bGluayBsaW5rZW5kPSJleHBlcmltZW50YWwiPmV4cGVyaW1lbnRhbDwvbGluaz4KK2ludGVyZmFjZSBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLjwvcGFyYT4KKyAgICAgIDwvbm90ZT4KKworICAgICAgPHBhcmE+VGhpcyBzZWN0aW9uIGxpc3RzIGNvbXBsZXggZGF0YSBmb3JtYXRzIHRoYXQgYXJlIGVpdGhlciB2ZW5kb3Igb3IKKwlkZXZpY2Ugc3BlY2lmaWMuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgdGFibGUgbGlzdHMgdGhlIGV4aXN0aW5nIHZlbmRvciBhbmQgZGV2aWNlIHNwZWNpZmljCisJZm9ybWF0cy48L3BhcmE+CisKKyAgICAgIDx0YWJsZSBwZ3dpZGU9IjAiIGZyYW1lPSJub25lIiBpZD0idjRsMi1tYnVzLXBpeGVsY29kZS12ZW5kb3Itc3BlY2lmaWMiPgorCTx0aXRsZT5WZW5kb3IgYW5kIGRldmljZSBzcGVjaWZpYyBmb3JtYXRzPC90aXRsZT4KKwk8dGdyb3VwIGNvbHM9IjMiPgorCSAgPGNvbHNwZWMgY29sbmFtZT0iaWQiIGFsaWduPSJsZWZ0IiAvPgorCSAgPGNvbHNwZWMgY29sbmFtZT0iY29kZSIgYWxpZ249ImxlZnQiLz4KKwkgIDxjb2xzcGVjIGNvbG5hbWU9InJlbWFya3MiIGFsaWduPSJsZWZ0Ii8+CisJICA8dGhlYWQ+CisJICAgIDxyb3c+CisJICAgICAgPGVudHJ5PklkZW50aWZpZXI8L2VudHJ5PgorCSAgICAgIDxlbnRyeT5Db2RlPC9lbnRyeT4KKwkgICAgICA8ZW50cnk+Q29tbWVudHM8L2VudHJ5PgorCSAgICA8L3Jvdz4KKwkgIDwvdGhlYWQ+CisJICA8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgICA8cm93IGlkPSJNRURJQS1CVVMtRk1ULVM1Qy1VWVZZLUpQRUctMVg4Ij4KKwkgICAgICA8ZW50cnk+TUVESUFfQlVTX0ZNVF9TNUNfVVlWWV9KUEVHXzFYODwvZW50cnk+CisJICAgICAgPGVudHJ5PjB4NTAwMTwvZW50cnk+CisJICAgICAgPGVudHJ5PgorCQlJbnRlcmxlYXZlZCByYXcgVVlWWSBhbmQgSlBFRyBpbWFnZSBmb3JtYXQgd2l0aCBlbWJlZGRlZAorCQltZXRhLWRhdGEgdXNlZCBieSBTYW1zdW5nIFMzQzczTVggY2FtZXJhIHNlbnNvcnMuCisJICAgICAgPC9lbnRyeT4KKwkgICAgPC9yb3c+CisJICA8L3Rib2R5PgorCTwvdGdyb3VwPgorICAgICAgPC90YWJsZT4KKyAgICA8L3NlY3Rpb24+CisKKyAgPC9zZWN0aW9uPgorPC9zZWN0aW9uPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9zdWJkZXYtaW1hZ2UtcHJvY2Vzc2luZy1jcm9wLmRpYSBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvc3ViZGV2LWltYWdlLXByb2Nlc3NpbmctY3JvcC5kaWEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMyYmE1MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvc3ViZGV2LWltYWdlLXByb2Nlc3NpbmctY3JvcC5kaWEKQEAgLTAsMCArMSw2MTQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8ZGlhOmRpYWdyYW0geG1sbnM6ZGlhPSJodHRwOi8vd3d3Lmx5c2F0b3IubGl1LnNlL35hbGxhL2RpYS8iPgorICA8ZGlhOmRpYWdyYW1kYXRhPgorICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImJhY2tncm91bmQiPgorICAgICAgPGRpYTpjb2xvciB2YWw9IiNmZmZmZmYiLz4KKyAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0icGFnZWJyZWFrIj4KKyAgICAgIDxkaWE6Y29sb3IgdmFsPSIjMDAwMDk5Ii8+CisgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InBhcGVyIj4KKyAgICAgIDxkaWE6Y29tcG9zaXRlIHR5cGU9InBhcGVyIj4KKyAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibmFtZSI+CisgICAgICAgICAgPGRpYTpzdHJpbmc+I0E0IzwvZGlhOnN0cmluZz4KKyAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ0bWFyZ2luIj4KKyAgICAgICAgICA8ZGlhOnJlYWwgdmFsPSIyLjgyMjIwMDA1OTg5MDc0NzEiLz4KKyAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJibWFyZ2luIj4KKyAgICAgICAgICA8ZGlhOnJlYWwgdmFsPSIyLjgyMjIwMDA1OTg5MDc0NzEiLz4KKyAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsbWFyZ2luIj4KKyAgICAgICAgICA8ZGlhOnJlYWwgdmFsPSIyLjgyMjIwMDA1OTg5MDc0NzEiLz4KKyAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJybWFyZ2luIj4KKyAgICAgICAgICA8ZGlhOnJlYWwgdmFsPSIyLjgyMjIwMDA1OTg5MDc0NzEiLz4KKyAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJpc19wb3J0cmFpdCI+CisgICAgICAgICAgPGRpYTpib29sZWFuIHZhbD0iZmFsc2UiLz4KKyAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJzY2FsaW5nIj4KKyAgICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjQ5MDAwMDAwOTUzNjc0MzE2Ii8+CisgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZml0dG8iPgorICAgICAgICAgIDxkaWE6Ym9vbGVhbiB2YWw9ImZhbHNlIi8+CisgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDwvZGlhOmNvbXBvc2l0ZT4KKyAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZ3JpZCI+CisgICAgICA8ZGlhOmNvbXBvc2l0ZSB0eXBlPSJncmlkIj4KKyAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0id2lkdGhfeCI+CisgICAgICAgICAgPGRpYTpyZWFsIHZhbD0iMSIvPgorICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9IndpZHRoX3kiPgorICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjEiLz4KKyAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ2aXNpYmxlX3giPgorICAgICAgICAgIDxkaWE6aW50IHZhbD0iMSIvPgorICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InZpc2libGVfeSI+CisgICAgICAgICAgPGRpYTppbnQgdmFsPSIxIi8+CisgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgPGRpYTpjb21wb3NpdGUgdHlwZT0iY29sb3IiLz4KKyAgICAgIDwvZGlhOmNvbXBvc2l0ZT4KKyAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29sb3IiPgorICAgICAgPGRpYTpjb2xvciB2YWw9IiNkOGU1ZTUiLz4KKyAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZ3VpZGVzIj4KKyAgICAgIDxkaWE6Y29tcG9zaXRlIHR5cGU9Imd1aWRlcyI+CisgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImhndWlkZXMiLz4KKyAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0idmd1aWRlcyIvPgorICAgICAgPC9kaWE6Y29tcG9zaXRlPgorICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgPC9kaWE6ZGlhZ3JhbWRhdGE+CisgIDxkaWE6bGF5ZXIgbmFtZT0iQmFja2dyb3VuZCIgdmlzaWJsZT0idHJ1ZSIgYWN0aXZlPSJ0cnVlIj4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIEJveCIgdmVyc2lvbj0iMCIgaWQ9Ik8wIj4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iLTAuNCw2LjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iLTAuNDUsNi40NTsyMy4xMzg3LDE2LjIiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1fY29ybmVyIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9Ii0wLjQsNi41Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMjMuNDg4NzE1Nzk5MDQ3NzUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1faGVpZ2h0Ij4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iOS42NTAwMDAwMDAwMDAwMDA0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJfd2lkdGgiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjEwMDAwMDAwMTQ5MDExNjEyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJzaG93X2JhY2tncm91bmQiPgorICAgICAgICA8ZGlhOmJvb2xlYW4gdmFsPSJmYWxzZSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIEJveCIgdmVyc2lvbj0iMCIgaWQ9Ik8xIj4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMC4yMjUsOS40NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIwLjE3NSw5LjQ7OC4yMjUsMTQuNyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9jb3JuZXIiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMC4yMjUsOS40NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjcuOTQ5OTk5OTk5OTk5OTk3NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9oZWlnaHQiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSI1LjE5OTk5OTk5OTk5OTk5NzUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImJvcmRlcl93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuMTAwMDAwMDAxNDkwMTE2MTIiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImJvcmRlcl9jb2xvciI+CisgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjYTUyYTJhIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJzaG93X2JhY2tncm91bmQiPgorICAgICAgICA8ZGlhOmJvb2xlYW4gdmFsPSJ0cnVlIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gQm94IiB2ZXJzaW9uPSIwIiBpZD0iTzIiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzLjE3NSwxMC41NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIzLjEyNSwxMC41OzcuOTI1LDE0LjQ1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX2Nvcm5lciI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzLjE3NSwxMC41NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjQuNjk5OTk5OTk5OTk5OTk3NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9oZWlnaHQiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIzLjg0OTk5OTk5OTk5OTk5NzkiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImJvcmRlcl93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuMTAwMDAwMDAxNDkwMTE2MTIiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImJvcmRlcl9jb2xvciI+CisgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjMDAwMGZmIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJzaG93X2JhY2tncm91bmQiPgorICAgICAgICA8ZGlhOmJvb2xlYW4gdmFsPSJ0cnVlIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gVGV4dCIgdmVyc2lvbj0iMSIgaWQ9Ik8zIj4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMy43MjUsMTEuMzg3NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIzLjcyNSwxMC43OTI1OzYuNjAyNSwxMy4xNCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0idGV4dCI+CisgICAgICAgIDxkaWE6Y29tcG9zaXRlIHR5cGU9InRleHQiPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InN0cmluZyI+CisgICAgICAgICAgICA8ZGlhOnN0cmluZz4jc2luaworY3JvcAorc2VsZWN0aW9uIzwvZGlhOnN0cmluZz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZm9udCI+CisgICAgICAgICAgICA8ZGlhOmZvbnQgZmFtaWx5PSJzYW5zIiBzdHlsZT0iMCIgbmFtZT0iSGVsdmV0aWNhIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImhlaWdodCI+CisgICAgICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjgwMDAwMDAwMDAwMDAwMDA0Ii8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InBvcyI+CisgICAgICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMy43MjUsMTEuMzg3NSIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb2xvciI+CisgICAgICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iIzAwMDBmZiIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbm1lbnQiPgorICAgICAgICAgICAgPGRpYTplbnVtIHZhbD0iMCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgPC9kaWE6Y29tcG9zaXRlPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KKyAgICAgICAgPGRpYTplbnVtIHZhbD0iMyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIFRleHQiIHZlcnNpb249IjEiIGlkPSJPNCI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjEuNDc1LDcuOSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIxLjQ3NSw3LjMwNTsxLjQ3NSw4LjA1MjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InRleHQiPgorICAgICAgICA8ZGlhOmNvbXBvc2l0ZSB0eXBlPSJ0ZXh0Ij4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJzdHJpbmciPgorICAgICAgICAgICAgPGRpYTpzdHJpbmc+IyM8L2RpYTpzdHJpbmc+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZvbnQiPgorICAgICAgICAgICAgPGRpYTpmb250IGZhbWlseT0ic2FucyIgc3R5bGU9IjAiIG5hbWU9IkhlbHZldGljYSIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJoZWlnaHQiPgorICAgICAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC44MDAwMDAwMDAwMDAwMDAwNCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJwb3MiPgorICAgICAgICAgICAgPGRpYTpwb2ludCB2YWw9IjEuNDc1LDcuOSIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb2xvciI+CisgICAgICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iIzAwMDAwMCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbm1lbnQiPgorICAgICAgICAgICAgPGRpYTplbnVtIHZhbD0iMCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgPC9kaWE6Y29tcG9zaXRlPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KKyAgICAgICAgPGRpYTplbnVtIHZhbD0iMyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIFRleHQiIHZlcnNpb249IjEiIGlkPSJPNSI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjAuNDI2OTE4LDcuODk1NjkiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iMC40MjY5MTgsNy4zMDA2OTszLjkwOTQyLDguODQ4MTkiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InRleHQiPgorICAgICAgICA8ZGlhOmNvbXBvc2l0ZSB0eXBlPSJ0ZXh0Ij4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJzdHJpbmciPgorICAgICAgICAgICAgPGRpYTpzdHJpbmc+I3NpbmsgbWVkaWEKK2J1cyBmb3JtYXQjPC9kaWE6c3RyaW5nPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJmb250Ij4KKyAgICAgICAgICAgIDxkaWE6Zm9udCBmYW1pbHk9InNhbnMiIHN0eWxlPSIwIiBuYW1lPSJIZWx2ZXRpY2EiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0Ij4KKyAgICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuODAwMDAwMDAwMDAwMDAwMDQiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0icG9zIj4KKyAgICAgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIwLjQyNjkxOCw3Ljg5NTY5Ii8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbG9yIj4KKyAgICAgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjYTUyYTJhIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImFsaWdubWVudCI+CisgICAgICAgICAgICA8ZGlhOmVudW0gdmFsPSIwIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8L2RpYTpjb21wb3NpdGU+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gVGV4dCIgdmVyc2lvbj0iMSIgaWQ9Ik82Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMTcuNDg4Nyw3Ljc1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjE3LjQ4ODcsNy4xNTU7MjEuODExMiw4LjcwMjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InRleHQiPgorICAgICAgICA8ZGlhOmNvbXBvc2l0ZSB0eXBlPSJ0ZXh0Ij4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJzdHJpbmciPgorICAgICAgICAgICAgPGRpYTpzdHJpbmc+I3NvdXJjZSBtZWRpYQorYnVzIGZvcm1hdCM8L2RpYTpzdHJpbmc+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZvbnQiPgorICAgICAgICAgICAgPGRpYTpmb250IGZhbWlseT0ic2FucyIgc3R5bGU9IjAiIG5hbWU9IkhlbHZldGljYSIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJoZWlnaHQiPgorICAgICAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC44MDAwMDAwMDAwMDAwMDAwNCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJwb3MiPgorICAgICAgICAgICAgPGRpYTpwb2ludCB2YWw9IjE3LjQ4ODcsNy43NSIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb2xvciI+CisgICAgICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iIzhiNjkxNCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbm1lbnQiPgorICAgICAgICAgICAgPGRpYTplbnVtIHZhbD0iMCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgPC9kaWE6Y29tcG9zaXRlPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KKyAgICAgICAgPGRpYTplbnVtIHZhbD0iMyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIEJveCIgdmVyc2lvbj0iMCIgaWQ9Ik83Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMTcuNTI0NCw5LjU0MTciLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iMTcuNDc0NCw5LjQ5MTc7MjIuMjM4NywxMy4zNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9jb3JuZXIiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMTcuNTI0NCw5LjU0MTciLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1fd2lkdGgiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSI0LjY2NDMxNTc5OTA0Nzc1MDgiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1faGVpZ2h0Ij4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMy43NTgzMDAwMDAwMDAwMDIiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImJvcmRlcl93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuMTAwMDAwMDAxNDkwMTE2MTIiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImJvcmRlcl9jb2xvciI+CisgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjOGI2OTE0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJzaG93X2JhY2tncm91bmQiPgorICAgICAgICA8ZGlhOmJvb2xlYW4gdmFsPSJ0cnVlIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gTGluZSIgdmVyc2lvbj0iMCIgaWQ9Ik84Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMTcuNTI0NCwxMy4zIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjMuMTIxMzIsMTMuMjQ2MzsxNy41NzgxLDE0LjQ1MzciLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbm5fZW5kcG9pbnRzIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjE3LjUyNDQsMTMuMyIvPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMy4xNzUsMTQuNCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibnVtY3AiPgorICAgICAgICA8ZGlhOmludCB2YWw9IjEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfY29sb3IiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2U2MDUwNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9zdHlsZSI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6Y29ubmVjdGlvbnM+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjAiIHRvPSJPNyIgY29ubmVjdGlvbj0iNSIvPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzIiIGNvbm5lY3Rpb249IjUiLz4KKyAgICAgIDwvZGlhOmNvbm5lY3Rpb25zPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIExpbmUiIHZlcnNpb249IjAiIGlkPSJPOSI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjE3LjUyNDQsOS41NDE3Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjMuMTIxNjIsOS40ODgzMjsxNy41Nzc4LDEwLjYwMzQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbm5fZW5kcG9pbnRzIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjE3LjUyNDQsOS41NDE3Ii8+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzLjE3NSwxMC41NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibnVtY3AiPgorICAgICAgICA8ZGlhOmludCB2YWw9IjEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfY29sb3IiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2U2MDUwNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9zdHlsZSI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6Y29ubmVjdGlvbnM+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjAiIHRvPSJPNyIgY29ubmVjdGlvbj0iMCIvPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzIiIGNvbm5lY3Rpb249IjAiLz4KKyAgICAgIDwvZGlhOmNvbm5lY3Rpb25zPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIExpbmUiIHZlcnNpb249IjAiIGlkPSJPMTAiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIyMi4xODg3LDEzLjMiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iNy44MjEzMiwxMy4yNDYzOzIyLjI0MjQsMTQuNDUzNyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29ubl9lbmRwb2ludHMiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjIuMTg4NywxMy4zIi8+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSI3Ljg3NSwxNC40Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJudW1jcCI+CisgICAgICAgIDxkaWE6aW50IHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9jb2xvciI+CisgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjZTYwNTA1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX3N0eWxlIj4KKyAgICAgICAgPGRpYTplbnVtIHZhbD0iNCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTpjb25uZWN0aW9ucz4KKyAgICAgICAgPGRpYTpjb25uZWN0aW9uIGhhbmRsZT0iMCIgdG89Ik83IiBjb25uZWN0aW9uPSI3Ii8+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjEiIHRvPSJPMiIgY29ubmVjdGlvbj0iNyIvPgorICAgICAgPC9kaWE6Y29ubmVjdGlvbnM+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gTGluZSIgdmVyc2lvbj0iMCIgaWQ9Ik8xMSI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjIyLjE4ODcsOS41NDE3Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjcuODIxNjEsOS40ODgzMTsyMi4yNDIxLDEwLjYwMzQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbm5fZW5kcG9pbnRzIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjIyLjE4ODcsOS41NDE3Ii8+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSI3Ljg3NSwxMC41NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibnVtY3AiPgorICAgICAgICA8ZGlhOmludCB2YWw9IjEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfY29sb3IiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2U2MDUwNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9zdHlsZSI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6Y29ubmVjdGlvbnM+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjAiIHRvPSJPNyIgY29ubmVjdGlvbj0iMiIvPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzIiIGNvbm5lY3Rpb249IjIiLz4KKyAgICAgIDwvZGlhOmNvbm5lY3Rpb25zPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJHZW9tZXRyaWMgLSBQZXJmZWN0IENpcmNsZSIgdmVyc2lvbj0iMSIgaWQ9Ik8xMiI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjIzLjIzLDEwLjU3NDIiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iMjMuMTgsMTAuNTI0MjsyNC4xMywxMS40NzQyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJtZXRhIj4KKyAgICAgICAgPGRpYTpjb21wb3NpdGUgdHlwZT0iZGljdCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9jb3JuZXIiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjMuMjMsMTAuNTc0MiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuODQ5OTk5OTk5OTk5OTk3ODciLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1faGVpZ2h0Ij4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC44NDk5OTk5OTk5OTk5OTc4NyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuMTAwMDAwMDAwMDAwMDAwMDEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfY29sb3VyIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiMwMDAwMDAiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZpbGxfY29sb3VyIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiNmZmZmZmYiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InNob3dfYmFja2dyb3VuZCI+CisgICAgICAgIDxkaWE6Ym9vbGVhbiB2YWw9InRydWUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfc3R5bGUiPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIwIi8+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZsaXBfaG9yaXpvbnRhbCI+CisgICAgICAgIDxkaWE6Ym9vbGVhbiB2YWw9ImZhbHNlIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJmbGlwX3ZlcnRpY2FsIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0iZmFsc2UiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InN1YnNjYWxlIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIExpbmUiIHZlcnNpb249IjAiIGlkPSJPMTMiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIyNC4wOCwxMC45OTkyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjI0LjAzLDEwLjYzODg7MzIuNDk1MywxMS4zNjI0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb25uX2VuZHBvaW50cyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIyNC4wOCwxMC45OTkyIi8+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzMi4zODM1LDExLjAwMDciLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im51bWNwIj4KKyAgICAgICAgPGRpYTppbnQgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbmRfYXJyb3ciPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIyMiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZW5kX2Fycm93X2xlbmd0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZW5kX2Fycm93X3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC41Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmNvbm5lY3Rpb25zPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIwIiB0bz0iTzEyIiBjb25uZWN0aW9uPSIzIi8+CisgICAgICA8L2RpYTpjb25uZWN0aW9ucz4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBUZXh0IiB2ZXJzaW9uPSIxIiBpZD0iTzE0Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjUuMzQ1NCwxMC40OSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIyNS4zNDU0LDkuODk1OzI5Ljk5MDQsMTAuNjQyNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0idGV4dCI+CisgICAgICAgIDxkaWE6Y29tcG9zaXRlIHR5cGU9InRleHQiPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InN0cmluZyI+CisgICAgICAgICAgICA8ZGlhOnN0cmluZz4jcGFkIDEgKHNvdXJjZSkjPC9kaWE6c3RyaW5nPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJmb250Ij4KKyAgICAgICAgICAgIDxkaWE6Zm9udCBmYW1pbHk9InNhbnMiIHN0eWxlPSIwIiBuYW1lPSJIZWx2ZXRpY2EiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0Ij4KKyAgICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuODAwMDAwMDAwMDAwMDAwMDQiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0icG9zIj4KKyAgICAgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIyNS4zNDU0LDEwLjQ5Ii8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbG9yIj4KKyAgICAgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjMDAwMDAwIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImFsaWdubWVudCI+CisgICAgICAgICAgICA8ZGlhOmVudW0gdmFsPSIwIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8L2RpYTpjb21wb3NpdGU+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9Ikdlb21ldHJpYyAtIFBlcmZlY3QgQ2lyY2xlIiB2ZXJzaW9uPSIxIiBpZD0iTzE1Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iLTEuNDQ0OTEsMTEuNjUwNiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSItMS40OTQ5MSwxMS42MDA2Oy0wLjU0NDkxLDEyLjU1MDYiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im1ldGEiPgorICAgICAgICA8ZGlhOmNvbXBvc2l0ZSB0eXBlPSJkaWN0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX2Nvcm5lciI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSItMS40NDQ5MSwxMS42NTA2Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC44NDk5OTk5OTk5OTk5OTc4NyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9oZWlnaHQiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjg0OTk5OTk5OTk5OTk5Nzg3Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC4xMDAwMDAwMDAwMDAwMDAwMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9jb2xvdXIiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iIzAwMDAwMCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZmlsbF9jb2xvdXIiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2ZmZmZmZiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic2hvd19iYWNrZ3JvdW5kIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0idHJ1ZSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9zdHlsZSI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjAiLz4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZmxpcF9ob3Jpem9udGFsIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0iZmFsc2UiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZsaXBfdmVydGljYWwiPgorICAgICAgICA8ZGlhOmJvb2xlYW4gdmFsPSJmYWxzZSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic3Vic2NhbGUiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gTGluZSIgdmVyc2lvbj0iMCIgaWQ9Ik8xNiI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9Ii05LjYxOTkxLDEyLjA5Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9Ii05LjY3LDExLjcxNDk7LTEuMzMzMTEsMTIuNDM4NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29ubl9lbmRwb2ludHMiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iLTkuNjE5OTEsMTIuMDkiLz4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9Ii0xLjQ0NDkxLDEyLjA3NTYiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im51bWNwIj4KKyAgICAgICAgPGRpYTppbnQgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbmRfYXJyb3ciPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIyMiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZW5kX2Fycm93X2xlbmd0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZW5kX2Fycm93X3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC41Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmNvbm5lY3Rpb25zPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzE1IiBjb25uZWN0aW9uPSIyIi8+CisgICAgICA8L2RpYTpjb25uZWN0aW9ucz4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBUZXh0IiB2ZXJzaW9uPSIxIiBpZD0iTzE3Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iLTcuMzkyOTEsMTEuNDkiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iLTcuMzkyOTEsMTAuODk1Oy0zLjU4NzkxLDExLjY0MjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InRleHQiPgorICAgICAgICA8ZGlhOmNvbXBvc2l0ZSB0eXBlPSJ0ZXh0Ij4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJzdHJpbmciPgorICAgICAgICAgICAgPGRpYTpzdHJpbmc+I3BhZCAwIChzaW5rKSM8L2RpYTpzdHJpbmc+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZvbnQiPgorICAgICAgICAgICAgPGRpYTpmb250IGZhbWlseT0ic2FucyIgc3R5bGU9IjAiIG5hbWU9IkhlbHZldGljYSIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJoZWlnaHQiPgorICAgICAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC44MDAwMDAwMDAwMDAwMDAwNCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJwb3MiPgorICAgICAgICAgICAgPGRpYTpwb2ludCB2YWw9Ii03LjM5MjkxLDExLjQ5Ii8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbG9yIj4KKyAgICAgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjMDAwMDAwIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImFsaWdubWVudCI+CisgICAgICAgICAgICA8ZGlhOmVudW0gdmFsPSIwIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8L2RpYTpjb21wb3NpdGU+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICA8L2RpYTpsYXllcj4KKzwvZGlhOmRpYWdyYW0+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3N1YmRldi1pbWFnZS1wcm9jZXNzaW5nLWNyb3Auc3ZnIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9zdWJkZXYtaW1hZ2UtcHJvY2Vzc2luZy1jcm9wLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGIwZjVkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9zdWJkZXYtaW1hZ2UtcHJvY2Vzc2luZy1jcm9wLnN2ZwpAQCAtMCwwICsxLDYzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz4KKzwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4wLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUFItU1ZHLTIwMDEwNzE5L0RURC9zdmcxMC5kdGQiPgorPHN2ZyB3aWR0aD0iNDNjbSIgaGVpZ2h0PSIxMGNtIiB2aWV3Qm94PSItMTk0IDEyOCA4NDQgMTk2IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KKyAgPHJlY3Qgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogIzAwMDAwMCIgeD0iLTgiIHk9IjEzMCIgd2lkdGg9IjQ2OS43NzQiIGhlaWdodD0iMTkzIi8+CisgIDxnPgorICAgIDxyZWN0IHN0eWxlPSJmaWxsOiAjZmZmZmZmIiB4PSI0LjUiIHk9IjE4OSIgd2lkdGg9IjE1OSIgaGVpZ2h0PSIxMDQiLz4KKyAgICA8cmVjdCBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjYTUyYTJhIiB4PSI0LjUiIHk9IjE4OSIgd2lkdGg9IjE1OSIgaGVpZ2h0PSIxMDQiLz4KKyAgPC9nPgorICA8Zz4KKyAgICA8cmVjdCBzdHlsZT0iZmlsbDogI2ZmZmZmZiIgeD0iNjMuNSIgeT0iMjExIiB3aWR0aD0iOTQiIGhlaWdodD0iNzciLz4KKyAgICA8cmVjdCBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjMDAwMGZmIiB4PSI2My41IiB5PSIyMTEiIHdpZHRoPSI5NCIgaGVpZ2h0PSI3NyIvPgorICA8L2c+CisgIDx0ZXh0IHN0eWxlPSJmaWxsOiAjMDAwMGZmO3RleHQtYW5jaG9yOnN0YXJ0O2ZvbnQtc2l6ZToxMi44O2ZvbnQtZmFtaWx5OnNhbnNlcmlmO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbCIgeD0iNzQuNSIgeT0iMjI3Ljc1Ij4KKyAgICA8dHNwYW4geD0iNzQuNSIgeT0iMjI3Ljc1Ij5zaW5rPC90c3Bhbj4KKyAgICA8dHNwYW4geD0iNzQuNSIgeT0iMjQzLjc1Ij5jcm9wPC90c3Bhbj4KKyAgICA8dHNwYW4geD0iNzQuNSIgeT0iMjU5Ljc1Ij5zZWxlY3Rpb248L3RzcGFuPgorICA8L3RleHQ+CisgIDx0ZXh0IHN0eWxlPSJmaWxsOiAjMDAwMDAwO3RleHQtYW5jaG9yOnN0YXJ0O2ZvbnQtc2l6ZToxMi44O2ZvbnQtZmFtaWx5OnNhbnNlcmlmO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbCIgeD0iMjkuNSIgeT0iMTU4Ij4KKyAgICA8dHNwYW4geD0iMjkuNSIgeT0iMTU4Ij48L3RzcGFuPgorICA8L3RleHQ+CisgIDx0ZXh0IHN0eWxlPSJmaWxsOiAjYTUyYTJhO3RleHQtYW5jaG9yOnN0YXJ0O2ZvbnQtc2l6ZToxMi44O2ZvbnQtZmFtaWx5OnNhbnNlcmlmO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbCIgeD0iOC41MzgzNiIgeT0iMTU3LjkxNCI+CisgICAgPHRzcGFuIHg9IjguNTM4MzYiIHk9IjE1Ny45MTQiPnNpbmsgbWVkaWE8L3RzcGFuPgorICAgIDx0c3BhbiB4PSI4LjUzODM2IiB5PSIxNzMuOTE0Ij5idXMgZm9ybWF0PC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dCBzdHlsZT0iZmlsbDogIzhiNjkxNDt0ZXh0LWFuY2hvcjpzdGFydDtmb250LXNpemU6MTIuODtmb250LWZhbWlseTpzYW5zZXJpZjtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWwiIHg9IjM0OS43NzQiIHk9IjE1NSI+CisgICAgPHRzcGFuIHg9IjM0OS43NzQiIHk9IjE1NSI+c291cmNlIG1lZGlhPC90c3Bhbj4KKyAgICA8dHNwYW4geD0iMzQ5Ljc3NCIgeT0iMTcxIj5idXMgZm9ybWF0PC90c3Bhbj4KKyAgPC90ZXh0PgorICA8Zz4KKyAgICA8cmVjdCBzdHlsZT0iZmlsbDogI2ZmZmZmZiIgeD0iMzUwLjQ4OCIgeT0iMTkwLjgzNCIgd2lkdGg9IjkzLjI4NjMiIGhlaWdodD0iNzUuMTY2Ii8+CisgICAgPHJlY3Qgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogIzhiNjkxNCIgeD0iMzUwLjQ4OCIgeT0iMTkwLjgzNCIgd2lkdGg9IjkzLjI4NjMiIGhlaWdodD0iNzUuMTY2Ii8+CisgIDwvZz4KKyAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZS1kYXNoYXJyYXk6IDQ7IHN0cm9rZTogI2U2MDUwNSIgeDE9IjM1MC40ODgiIHkxPSIyNjYiIHgyPSI2My41IiB5Mj0iMjg4Ii8+CisgIDxsaW5lIHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2UtZGFzaGFycmF5OiA0OyBzdHJva2U6ICNlNjA1MDUiIHgxPSIzNTAuNDg4IiB5MT0iMTkwLjgzNCIgeDI9IjYzLjUiIHkyPSIyMTEiLz4KKyAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZS1kYXNoYXJyYXk6IDQ7IHN0cm9rZTogI2U2MDUwNSIgeDE9IjQ0My43NzQiIHkxPSIyNjYiIHgyPSIxNTcuNSIgeTI9IjI4OCIvPgorICA8bGluZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlLWRhc2hhcnJheTogNDsgc3Ryb2tlOiAjZTYwNTA1IiB4MT0iNDQzLjc3NCIgeTE9IjE5MC44MzQiIHgyPSIxNTcuNSIgeTI9IjIxMSIvPgorICA8Zz4KKyAgICA8ZWxsaXBzZSBzdHlsZT0iZmlsbDogI2ZmZmZmZiIgY3g9IjQ3My4xIiBjeT0iMjE5Ljk4NCIgcng9IjguNSIgcnk9IjguNSIvPgorICAgIDxlbGxpcHNlIHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICMwMDAwMDAiIGN4PSI0NzMuMSIgY3k9IjIxOS45ODQiIHJ4PSI4LjUiIHJ5PSI4LjUiLz4KKyAgICA8ZWxsaXBzZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjMDAwMDAwIiBjeD0iNDczLjEiIGN5PSIyMTkuOTg0IiByeD0iOC41IiByeT0iOC41Ii8+CisgIDwvZz4KKyAgPGc+CisgICAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogIzAwMDAwMCIgeDE9IjQ4MS42IiB5MT0iMjE5Ljk4NCIgeDI9IjYzNy45MzQiIHkyPSIyMjAuMDEyIi8+CisgICAgPHBvbHlnb24gc3R5bGU9ImZpbGw6ICMwMDAwMDAiIHBvaW50cz0iNjQ1LjQzNCwyMjAuMDE0IDYzNS40MzMsMjI1LjAxMiA2MzcuOTM0LDIyMC4wMTIgNjM1LjQzNSwyMTUuMDEyICIvPgorICAgIDxwb2x5Z29uIHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICMwMDAwMDAiIHBvaW50cz0iNjQ1LjQzNCwyMjAuMDE0IDYzNS40MzMsMjI1LjAxMiA2MzcuOTM0LDIyMC4wMTIgNjM1LjQzNSwyMTUuMDEyICIvPgorICA8L2c+CisgIDx0ZXh0IHN0eWxlPSJmaWxsOiAjMDAwMDAwO3RleHQtYW5jaG9yOnN0YXJ0O2ZvbnQtc2l6ZToxMi44O2ZvbnQtZmFtaWx5OnNhbnNlcmlmO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbCIgeD0iNTA2LjkwOCIgeT0iMjA5LjgiPgorICAgIDx0c3BhbiB4PSI1MDYuOTA4IiB5PSIyMDkuOCI+cGFkIDEgKHNvdXJjZSk8L3RzcGFuPgorICA8L3RleHQ+CisgIDxnPgorICAgIDxlbGxpcHNlIHN0eWxlPSJmaWxsOiAjZmZmZmZmIiBjeD0iLTIwLjM5ODIiIGN5PSIyNDEuNTEyIiByeD0iOC41IiByeT0iOC41Ii8+CisgICAgPGVsbGlwc2Ugc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogIzAwMDAwMCIgY3g9Ii0yMC4zOTgyIiBjeT0iMjQxLjUxMiIgcng9IjguNSIgcnk9IjguNSIvPgorICAgIDxlbGxpcHNlIHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICMwMDAwMDAiIGN4PSItMjAuMzk4MiIgY3k9IjI0MS41MTIiIHJ4PSI4LjUiIHJ5PSI4LjUiLz4KKyAgPC9nPgorICA8Zz4KKyAgICA8bGluZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjMDAwMDAwIiB4MT0iLTE5Mi4zOTgiIHkxPSIyNDEuOCIgeDI9Ii0zOC42MzQzIiB5Mj0iMjQxLjUyOSIvPgorICAgIDxwb2x5Z29uIHN0eWxlPSJmaWxsOiAjMDAwMDAwIiBwb2ludHM9Ii0zMS4xMzQzLDI0MS41MTYgLTQxLjEyNTQsMjQ2LjUzNCAtMzguNjM0MywyNDEuNTI5IC00MS4xNDMxLDIzNi41MzQgIi8+CisgICAgPHBvbHlnb24gc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogIzAwMDAwMCIgcG9pbnRzPSItMzEuMTM0MywyNDEuNTE2IC00MS4xMjU0LDI0Ni41MzQgLTM4LjYzNDMsMjQxLjUyOSAtNDEuMTQzMSwyMzYuNTM0ICIvPgorICA8L2c+CisgIDx0ZXh0IHN0eWxlPSJmaWxsOiAjMDAwMDAwO3RleHQtYW5jaG9yOnN0YXJ0O2ZvbnQtc2l6ZToxMi44O2ZvbnQtZmFtaWx5OnNhbnNlcmlmO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbCIgeD0iLTE0Ny44NTgiIHk9IjIyOS44Ij4KKyAgICA8dHNwYW4geD0iLTE0Ny44NTgiIHk9IjIyOS44Ij5wYWQgMCAoc2luayk8L3RzcGFuPgorICA8L3RleHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvc3ViZGV2LWltYWdlLXByb2Nlc3NpbmctZnVsbC5kaWEgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3N1YmRldi1pbWFnZS1wcm9jZXNzaW5nLWZ1bGwuZGlhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwZDc4MjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3N1YmRldi1pbWFnZS1wcm9jZXNzaW5nLWZ1bGwuZGlhCkBAIC0wLDAgKzEsMTU4OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxkaWE6ZGlhZ3JhbSB4bWxuczpkaWE9Imh0dHA6Ly93d3cubHlzYXRvci5saXUuc2UvfmFsbGEvZGlhLyI+CisgIDxkaWE6ZGlhZ3JhbWRhdGE+CisgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYmFja2dyb3VuZCI+CisgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2ZmZmZmZiIvPgorICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJwYWdlYnJlYWsiPgorICAgICAgPGRpYTpjb2xvciB2YWw9IiMwMDAwOTkiLz4KKyAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0icGFwZXIiPgorICAgICAgPGRpYTpjb21wb3NpdGUgdHlwZT0icGFwZXIiPgorICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIj4KKyAgICAgICAgICA8ZGlhOnN0cmluZz4jQTQjPC9kaWE6c3RyaW5nPgorICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InRtYXJnaW4iPgorICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjIuODIyMjAwMDU5ODkwNzQ3MSIvPgorICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImJtYXJnaW4iPgorICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjIuODIyMjAwMDU5ODkwNzQ3MSIvPgorICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxtYXJnaW4iPgorICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjIuODIyMjAwMDU5ODkwNzQ3MSIvPgorICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InJtYXJnaW4iPgorICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjIuODIyMjAwMDU5ODkwNzQ3MSIvPgorICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImlzX3BvcnRyYWl0Ij4KKyAgICAgICAgICA8ZGlhOmJvb2xlYW4gdmFsPSJmYWxzZSIvPgorICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InNjYWxpbmciPgorICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuNDkwMDAwMDA5NTM2NzQzMTYiLz4KKyAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJmaXR0byI+CisgICAgICAgICAgPGRpYTpib29sZWFuIHZhbD0iZmFsc2UiLz4KKyAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPC9kaWE6Y29tcG9zaXRlPgorICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJncmlkIj4KKyAgICAgIDxkaWE6Y29tcG9zaXRlIHR5cGU9ImdyaWQiPgorICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aF94Ij4KKyAgICAgICAgICA8ZGlhOnJlYWwgdmFsPSIxIi8+CisgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0id2lkdGhfeSI+CisgICAgICAgICAgPGRpYTpyZWFsIHZhbD0iMSIvPgorICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InZpc2libGVfeCI+CisgICAgICAgICAgPGRpYTppbnQgdmFsPSIxIi8+CisgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0idmlzaWJsZV95Ij4KKyAgICAgICAgICA8ZGlhOmludCB2YWw9IjEiLz4KKyAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8ZGlhOmNvbXBvc2l0ZSB0eXBlPSJjb2xvciIvPgorICAgICAgPC9kaWE6Y29tcG9zaXRlPgorICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb2xvciI+CisgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2Q4ZTVlNSIvPgorICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJndWlkZXMiPgorICAgICAgPGRpYTpjb21wb3NpdGUgdHlwZT0iZ3VpZGVzIj4KKyAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iaGd1aWRlcyIvPgorICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ2Z3VpZGVzIi8+CisgICAgICA8L2RpYTpjb21wb3NpdGU+CisgICAgPC9kaWE6YXR0cmlidXRlPgorICA8L2RpYTpkaWFncmFtZGF0YT4KKyAgPGRpYTpsYXllciBuYW1lPSJCYWNrZ3JvdW5kIiB2aXNpYmxlPSJ0cnVlIiBhY3RpdmU9InRydWUiPgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gQm94IiB2ZXJzaW9uPSIwIiBpZD0iTzAiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIxNS45NDUsNi40NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIxNS44OTUsNi40OzI2LjQsMTguOTUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1fY29ybmVyIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjE1Ljk0NSw2LjQ1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMTAuNDA0OTk5OTk5MjU0OTQyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX2hlaWdodCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjEyLjQ0OTk5OTk5OTk5OTk5MiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC4xMDAwMDAwMDE0OTAxMTYxMiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyX2NvbG9yIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiNmZjc2NWEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InNob3dfYmFja2dyb3VuZCI+CisgICAgICAgIDxkaWE6Ym9vbGVhbiB2YWw9InRydWUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBCb3giIHZlcnNpb249IjAiIGlkPSJPMSI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9Ii0wLjEsMy42NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSItMC4xNSwzLjY7NDAuMjUsMjAuODUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1fY29ybmVyIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9Ii0wLjEsMy42NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjQwLjMwMDAwMDAwMDAwMDAwNCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9oZWlnaHQiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIxNy4xNDk5OTk5OTk5OTk5OTkiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImJvcmRlcl93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuMTAwMDAwMDAxNDkwMTE2MTIiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InNob3dfYmFja2dyb3VuZCI+CisgICAgICAgIDxkaWE6Ym9vbGVhbiB2YWw9ImZhbHNlIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9Ikdlb21ldHJpYyAtIFBlcmZlY3QgQ2lyY2xlIiB2ZXJzaW9uPSIxIiBpZD0iTzIiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSItMS4wNSw3LjkxMDYiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iLTEuMSw3Ljg2MDY7LTAuMTUsOC44MTA2Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJtZXRhIj4KKyAgICAgICAgPGRpYTpjb21wb3NpdGUgdHlwZT0iZGljdCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9jb3JuZXIiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iLTEuMDUsNy45MTA2Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC44NDk5OTk5OTk5OTk5OTc4NyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9oZWlnaHQiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjg0OTk5OTk5OTk5OTk5Nzg3Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC4xMDAwMDAwMDAwMDAwMDAwMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9jb2xvdXIiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iIzAwMDAwMCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZmlsbF9jb2xvdXIiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2ZmZmZmZiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic2hvd19iYWNrZ3JvdW5kIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0idHJ1ZSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9zdHlsZSI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjAiLz4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZmxpcF9ob3Jpem9udGFsIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0iZmFsc2UiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZsaXBfdmVydGljYWwiPgorICAgICAgICA8ZGlhOmJvb2xlYW4gdmFsPSJmYWxzZSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic3Vic2NhbGUiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9Ikdlb21ldHJpYyAtIFBlcmZlY3QgQ2lyY2xlIiB2ZXJzaW9uPSIxIiBpZD0iTzMiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSI0MC4zMzY2LDkuODM0MiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSI0MC4yODY2LDkuNzg0Mjs0MS4yMzY2LDEwLjczNDIiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im1ldGEiPgorICAgICAgICA8ZGlhOmNvbXBvc2l0ZSB0eXBlPSJkaWN0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX2Nvcm5lciI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSI0MC4zMzY2LDkuODM0MiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuODQ5OTk5OTk5OTk5OTk3ODciLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1faGVpZ2h0Ij4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC44NDk5OTk5OTk5OTk5OTc4NyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuMTAwMDAwMDAwMDAwMDAwMDEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfY29sb3VyIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiMwMDAwMDAiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZpbGxfY29sb3VyIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiNmZmZmZmYiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InNob3dfYmFja2dyb3VuZCI+CisgICAgICAgIDxkaWE6Ym9vbGVhbiB2YWw9InRydWUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfc3R5bGUiPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIwIi8+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZsaXBfaG9yaXpvbnRhbCI+CisgICAgICAgIDxkaWE6Ym9vbGVhbiB2YWw9ImZhbHNlIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJmbGlwX3ZlcnRpY2FsIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0iZmFsc2UiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InN1YnNjYWxlIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIExpbmUiIHZlcnNpb249IjAiIGlkPSJPNCI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9Ii05LjIyNSw4LjM1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9Ii05LjI3NTA5LDcuOTc0ODc7LTAuOTM4MTk3LDguNjk4NDgiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbm5fZW5kcG9pbnRzIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9Ii05LjIyNSw4LjM1Ii8+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSItMS4wNSw4LjMzNTYiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im51bWNwIj4KKyAgICAgICAgPGRpYTppbnQgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbmRfYXJyb3ciPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIyMiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZW5kX2Fycm93X2xlbmd0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZW5kX2Fycm93X3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC41Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmNvbm5lY3Rpb25zPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzIiIGNvbm5lY3Rpb249IjIiLz4KKyAgICAgIDwvZGlhOmNvbm5lY3Rpb25zPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIExpbmUiIHZlcnNpb249IjAiIGlkPSJPNSI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjQxLjE4NjYsMTAuMjU5MiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSI0MS4xMzY2LDkuODk4Nzk7NDkuNjAxOSwxMC42MjI0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb25uX2VuZHBvaW50cyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSI0MS4xODY2LDEwLjI1OTIiLz4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjQ5LjQ5MDEsMTAuMjYwNyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibnVtY3AiPgorICAgICAgICA8ZGlhOmludCB2YWw9IjEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVuZF9hcnJvdyI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjIyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbmRfYXJyb3dfbGVuZ3RoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC41Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbmRfYXJyb3dfd2lkdGgiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6Y29ubmVjdGlvbnM+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjAiIHRvPSJPMyIgY29ubmVjdGlvbj0iMyIvPgorICAgICAgPC9kaWE6Y29ubmVjdGlvbnM+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gVGV4dCIgdmVyc2lvbj0iMSIgaWQ9Ik82Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iLTYuOTk4LDcuNzUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iLTYuOTk4LDcuMTU1Oy0zLjE5Myw3LjkwMjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InRleHQiPgorICAgICAgICA8ZGlhOmNvbXBvc2l0ZSB0eXBlPSJ0ZXh0Ij4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJzdHJpbmciPgorICAgICAgICAgICAgPGRpYTpzdHJpbmc+I3BhZCAwIChzaW5rKSM8L2RpYTpzdHJpbmc+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZvbnQiPgorICAgICAgICAgICAgPGRpYTpmb250IGZhbWlseT0ic2FucyIgc3R5bGU9IjAiIG5hbWU9IkhlbHZldGljYSIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJoZWlnaHQiPgorICAgICAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC44MDAwMDAwMDAwMDAwMDAwNCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJwb3MiPgorICAgICAgICAgICAgPGRpYTpwb2ludCB2YWw9Ii02Ljk5OCw3Ljc1Ii8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbG9yIj4KKyAgICAgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjMDAwMDAwIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImFsaWdubWVudCI+CisgICAgICAgICAgICA8ZGlhOmVudW0gdmFsPSIwIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8L2RpYTpjb21wb3NpdGU+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gVGV4dCIgdmVyc2lvbj0iMSIgaWQ9Ik83Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iNDIuNDUyLDkuNzUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iNDIuNDUyLDkuMTU1OzQ3LjA5Nyw5LjkwMjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InRleHQiPgorICAgICAgICA8ZGlhOmNvbXBvc2l0ZSB0eXBlPSJ0ZXh0Ij4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJzdHJpbmciPgorICAgICAgICAgICAgPGRpYTpzdHJpbmc+I3BhZCAyIChzb3VyY2UpIzwvZGlhOnN0cmluZz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZm9udCI+CisgICAgICAgICAgICA8ZGlhOmZvbnQgZmFtaWx5PSJzYW5zIiBzdHlsZT0iMCIgbmFtZT0iSGVsdmV0aWNhIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImhlaWdodCI+CisgICAgICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjgwMDAwMDAwMDAwMDAwMDA0Ii8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InBvcyI+CisgICAgICAgICAgICA8ZGlhOnBvaW50IHZhbD0iNDIuNDUyLDkuNzUiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29sb3IiPgorICAgICAgICAgICAgPGRpYTpjb2xvciB2YWw9IiMwMDAwMDAiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYWxpZ25tZW50Ij4KKyAgICAgICAgICAgIDxkaWE6ZW51bSB2YWw9IjAiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDwvZGlhOmNvbXBvc2l0ZT4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjMiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBCb3giIHZlcnNpb249IjAiIGlkPSJPOCI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjAuMjc1LDYiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iMC4yMjUsNS45NTs4LjI3NSwxMS4yNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9jb3JuZXIiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMC4yNzUsNiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjcuOTQ5OTk5OTk5OTk5OTk3NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9oZWlnaHQiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSI1LjE5OTk5OTk5OTk5OTk5NzUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImJvcmRlcl93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuMTAwMDAwMDAxNDkwMTE2MTIiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImJvcmRlcl9jb2xvciI+CisgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjYTUyYTJhIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJzaG93X2JhY2tncm91bmQiPgorICAgICAgICA8ZGlhOmJvb2xlYW4gdmFsPSJ0cnVlIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gQm94IiB2ZXJzaW9uPSIwIiBpZD0iTzkiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzLjEyNSw2LjgiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iMy4wNzUsNi43NTs3Ljg3NSwxMC43Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX2Nvcm5lciI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzLjEyNSw2LjgiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1fd2lkdGgiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSI0LjY5OTk5OTk5OTk5OTk5NzUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1faGVpZ2h0Ij4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMy44NDk5OTk5OTk5OTk5OTc5Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJfd2lkdGgiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjEwMDAwMDAwMTQ5MDExNjEyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJfY29sb3IiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iIzAwMDBmZiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic2hvd19iYWNrZ3JvdW5kIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0idHJ1ZSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIFRleHQiIHZlcnNpb249IjEiIGlkPSJPMTAiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIxLjUyNSw0LjQ1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjEuNTI1LDMuODU1OzEuNTI1LDQuNjAyNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0idGV4dCI+CisgICAgICAgIDxkaWE6Y29tcG9zaXRlIHR5cGU9InRleHQiPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InN0cmluZyI+CisgICAgICAgICAgICA8ZGlhOnN0cmluZz4jIzwvZGlhOnN0cmluZz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZm9udCI+CisgICAgICAgICAgICA8ZGlhOmZvbnQgZmFtaWx5PSJzYW5zIiBzdHlsZT0iMCIgbmFtZT0iSGVsdmV0aWNhIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImhlaWdodCI+CisgICAgICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjgwMDAwMDAwMDAwMDAwMDA0Ii8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InBvcyI+CisgICAgICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMS41MjUsNC40NSIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb2xvciI+CisgICAgICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iIzAwMDAwMCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbm1lbnQiPgorICAgICAgICAgICAgPGRpYTplbnVtIHZhbD0iMCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgPC9kaWE6Y29tcG9zaXRlPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KKyAgICAgICAgPGRpYTplbnVtIHZhbD0iMyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIFRleHQiIHZlcnNpb249IjEiIGlkPSJPMTEiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIwLjQ3NjkxOCw0LjQ0NTY5Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjAuNDc2OTE4LDMuODUwNjk7My45NTk0Miw1LjM5ODE5Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0Ij4KKyAgICAgICAgPGRpYTpjb21wb3NpdGUgdHlwZT0idGV4dCI+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic3RyaW5nIj4KKyAgICAgICAgICAgIDxkaWE6c3RyaW5nPiNzaW5rIG1lZGlhCitidXMgZm9ybWF0IzwvZGlhOnN0cmluZz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZm9udCI+CisgICAgICAgICAgICA8ZGlhOmZvbnQgZmFtaWx5PSJzYW5zIiBzdHlsZT0iMCIgbmFtZT0iSGVsdmV0aWNhIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImhlaWdodCI+CisgICAgICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjgwMDAwMDAwMDAwMDAwMDA0Ii8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InBvcyI+CisgICAgICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMC40NzY5MTgsNC40NDU2OSIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb2xvciI+CisgICAgICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2E1MmEyYSIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbm1lbnQiPgorICAgICAgICAgICAgPGRpYTplbnVtIHZhbD0iMCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgPC9kaWE6Y29tcG9zaXRlPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KKyAgICAgICAgPGRpYTplbnVtIHZhbD0iMyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIEJveCIgdmVyc2lvbj0iMCIgaWQ9Ik8xMiI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjE2LjY4MjIsOS4yODI1MSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIxNi42MzIyLDkuMjMyNTE7MjQuOTkyMiwxNy45NTY0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX2Nvcm5lciI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIxNi42ODIyLDkuMjgyNTEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1fd2lkdGgiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSI4LjI2MDAyMjgzOTg4NjEyOTciLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1faGVpZ2h0Ij4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iOC42MjM4OTAwNjE3OTU3MTY0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJfd2lkdGgiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjEwMDAwMDAwMTQ5MDExNjEyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJfY29sb3IiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iIzAwZmYwMCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic2hvd19iYWNrZ3JvdW5kIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0idHJ1ZSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIExpbmUiIHZlcnNpb249IjAiIGlkPSJPMTMiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIxNi42ODIyLDE3LjkwNjQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iMy4wNTczMiwxMC41ODIzOzE2Ljc0OTksMTcuOTc0MSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29ubl9lbmRwb2ludHMiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMTYuNjgyMiwxNy45MDY0Ii8+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzLjEyNSwxMC42NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibnVtY3AiPgorICAgICAgICA8ZGlhOmludCB2YWw9IjEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfY29sb3IiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2U2MDUwNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9zdHlsZSI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6Y29ubmVjdGlvbnM+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjAiIHRvPSJPMTIiIGNvbm5lY3Rpb249IjUiLz4KKyAgICAgICAgPGRpYTpjb25uZWN0aW9uIGhhbmRsZT0iMSIgdG89Ik85IiBjb25uZWN0aW9uPSI1Ii8+CisgICAgICA8L2RpYTpjb25uZWN0aW9ucz4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBMaW5lIiB2ZXJzaW9uPSIwIiBpZD0iTzE0Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMTYuNjgyMiw5LjI4MjUxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjMuMDY2ODEsNi43NDE4MTsxNi43NDA0LDkuMzQwNyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29ubl9lbmRwb2ludHMiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMTYuNjgyMiw5LjI4MjUxIi8+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzLjEyNSw2LjgiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im51bWNwIj4KKyAgICAgICAgPGRpYTppbnQgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX2NvbG9yIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiNlNjA1MDUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfc3R5bGUiPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSI0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmNvbm5lY3Rpb25zPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIwIiB0bz0iTzEyIiBjb25uZWN0aW9uPSIwIi8+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjEiIHRvPSJPOSIgY29ubmVjdGlvbj0iMCIvPgorICAgICAgPC9kaWE6Y29ubmVjdGlvbnM+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gTGluZSIgdmVyc2lvbj0iMCIgaWQ9Ik8xNSI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjI0Ljk0MjIsMTcuOTA2NCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSI3Ljc1OTQ1LDEwLjU4NDU7MjUuMDA3NywxNy45NzE5Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb25uX2VuZHBvaW50cyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIyNC45NDIyLDE3LjkwNjQiLz4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjcuODI1LDEwLjY1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJudW1jcCI+CisgICAgICAgIDxkaWE6aW50IHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9jb2xvciI+CisgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjZTYwNTA1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX3N0eWxlIj4KKyAgICAgICAgPGRpYTplbnVtIHZhbD0iNCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTpjb25uZWN0aW9ucz4KKyAgICAgICAgPGRpYTpjb25uZWN0aW9uIGhhbmRsZT0iMCIgdG89Ik8xMiIgY29ubmVjdGlvbj0iNyIvPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzkiIGNvbm5lY3Rpb249IjciLz4KKyAgICAgIDwvZGlhOmNvbm5lY3Rpb25zPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIExpbmUiIHZlcnNpb249IjAiIGlkPSJPMTYiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIyNC45NDIyLDkuMjgyNTEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iNy43NjgzNCw2Ljc0MzM0OzI0Ljk5ODksOS4zMzkxNyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29ubl9lbmRwb2ludHMiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjQuOTQyMiw5LjI4MjUxIi8+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSI3LjgyNSw2LjgiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im51bWNwIj4KKyAgICAgICAgPGRpYTppbnQgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX2NvbG9yIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiNlNjA1MDUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfc3R5bGUiPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSI0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmNvbm5lY3Rpb25zPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIwIiB0bz0iTzEyIiBjb25uZWN0aW9uPSIyIi8+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjEiIHRvPSJPOSIgY29ubmVjdGlvbj0iMiIvPgorICAgICAgPC9kaWE6Y29ubmVjdGlvbnM+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gVGV4dCIgdmVyc2lvbj0iMSIgaWQ9Ik8xNyI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjE2LjczNTIsNy40NzIwOSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIxNi43MzUyLDYuODc3MDk7MjIuNTYwMiw4LjQyNDU5Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0Ij4KKyAgICAgICAgPGRpYTpjb21wb3NpdGUgdHlwZT0idGV4dCI+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic3RyaW5nIj4KKyAgICAgICAgICAgIDxkaWE6c3RyaW5nPiNzaW5rIGNvbXBvc2UKK3NlbGVjdGlvbiAoc2NhbGluZykjPC9kaWE6c3RyaW5nPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJmb250Ij4KKyAgICAgICAgICAgIDxkaWE6Zm9udCBmYW1pbHk9InNhbnMiIHN0eWxlPSIwIiBuYW1lPSJIZWx2ZXRpY2EiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0Ij4KKyAgICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuODAwMDAwMDAwMDAwMDAwMDQiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0icG9zIj4KKyAgICAgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIxNi43MzUyLDcuNDcyMDkiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29sb3IiPgorICAgICAgICAgICAgPGRpYTpjb2xvciB2YWw9IiMwMGZmMDAiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYWxpZ25tZW50Ij4KKyAgICAgICAgICAgIDxkaWE6ZW51bSB2YWw9IjAiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDwvZGlhOmNvbXBvc2l0ZT4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjMiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBCb3giIHZlcnNpb249IjAiIGlkPSJPMTgiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIyMC40NjYxLDkuNzI4MjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iMjAuNDE2MSw5LjY3ODI1OzI1LjUyNTQsMTMuMzUwOSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9jb3JuZXIiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjAuNDY2MSw5LjcyODI1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iNS4wMDkzMDg0NjI1NTQzNzYiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1faGVpZ2h0Ij4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMy41NzI2MTU1OTcwNTk4MDc3Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJfd2lkdGgiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjEwMDAwMDAwMTQ5MDExNjEyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJfY29sb3IiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2EwMjBmMCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic2hvd19iYWNrZ3JvdW5kIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0idHJ1ZSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIFRleHQiIHZlcnNpb249IjEiIGlkPSJPMTkiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzNC40NzUsNS4yNTY0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjM0LjQ3NSw0LjY2MTQ7MzguNzk3NSw2LjIwODkiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InRleHQiPgorICAgICAgICA8ZGlhOmNvbXBvc2l0ZSB0eXBlPSJ0ZXh0Ij4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJzdHJpbmciPgorICAgICAgICAgICAgPGRpYTpzdHJpbmc+I3NvdXJjZSBtZWRpYQorYnVzIGZvcm1hdCM8L2RpYTpzdHJpbmc+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZvbnQiPgorICAgICAgICAgICAgPGRpYTpmb250IGZhbWlseT0ic2FucyIgc3R5bGU9IjAiIG5hbWU9IkhlbHZldGljYSIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJoZWlnaHQiPgorICAgICAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC44MDAwMDAwMDAwMDAwMDAwNCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJwb3MiPgorICAgICAgICAgICAgPGRpYTpwb2ludCB2YWw9IjM0LjQ3NSw1LjI1NjQiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29sb3IiPgorICAgICAgICAgICAgPGRpYTpjb2xvciB2YWw9IiM4YjY5MTQiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYWxpZ25tZW50Ij4KKyAgICAgICAgICAgIDxkaWE6ZW51bSB2YWw9IjAiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDwvZGlhOmNvbXBvc2l0ZT4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjMiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBCb3giIHZlcnNpb249IjAiIGlkPSJPMjAiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzNC40MjQ0LDguNjkxNyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIzNC4zNzQ0LDguNjQxNzszOS40ODM3LDEyLjMxNDMiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1fY29ybmVyIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjM0LjQyNDQsOC42OTE3Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iNS4wMDkzMDg0NjI1NTQzNzYiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1faGVpZ2h0Ij4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMy41NzI2MTU1OTcwNTk4MDc3Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJfd2lkdGgiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjEwMDAwMDAwMTQ5MDExNjEyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJfY29sb3IiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iIzhiNjkxNCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic2hvd19iYWNrZ3JvdW5kIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0idHJ1ZSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIExpbmUiIHZlcnNpb249IjAiIGlkPSJPMjEiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzNC40MjQ0LDEyLjI2NDMiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iMjAuNDEyNSwxMi4yMTA3OzM0LjQ3OCwxMy4zNTQ1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb25uX2VuZHBvaW50cyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzNC40MjQ0LDEyLjI2NDMiLz4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjIwLjQ2NjEsMTMuMzAwOSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibnVtY3AiPgorICAgICAgICA8ZGlhOmludCB2YWw9IjEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfY29sb3IiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2U2MDUwNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9zdHlsZSI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6Y29ubmVjdGlvbnM+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjAiIHRvPSJPMjAiIGNvbm5lY3Rpb249IjUiLz4KKyAgICAgICAgPGRpYTpjb25uZWN0aW9uIGhhbmRsZT0iMSIgdG89Ik8xOCIgY29ubmVjdGlvbj0iNSIvPgorICAgICAgPC9kaWE6Y29ubmVjdGlvbnM+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gTGluZSIgdmVyc2lvbj0iMCIgaWQ9Ik8yMiI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjM0LjQyNDQsOC42OTE3Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjIwLjQxMjUsOC42MzgxMzszNC40NzgsOS43ODE4MiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29ubl9lbmRwb2ludHMiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMzQuNDI0NCw4LjY5MTciLz4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjIwLjQ2NjEsOS43MjgyNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibnVtY3AiPgorICAgICAgICA8ZGlhOmludCB2YWw9IjEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfY29sb3IiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2U2MDUwNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9zdHlsZSI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6Y29ubmVjdGlvbnM+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjAiIHRvPSJPMjAiIGNvbm5lY3Rpb249IjAiLz4KKyAgICAgICAgPGRpYTpjb25uZWN0aW9uIGhhbmRsZT0iMSIgdG89Ik8xOCIgY29ubmVjdGlvbj0iMCIvPgorICAgICAgPC9kaWE6Y29ubmVjdGlvbnM+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gTGluZSIgdmVyc2lvbj0iMCIgaWQ9Ik8yMyI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjM5LjQzMzcsMTIuMjY0MyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIyNS40MjE4LDEyLjIxMDc7MzkuNDg3MywxMy4zNTQ1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb25uX2VuZHBvaW50cyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzOS40MzM3LDEyLjI2NDMiLz4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjI1LjQ3NTQsMTMuMzAwOSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibnVtY3AiPgorICAgICAgICA8ZGlhOmludCB2YWw9IjEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfY29sb3IiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2U2MDUwNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9zdHlsZSI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6Y29ubmVjdGlvbnM+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjAiIHRvPSJPMjAiIGNvbm5lY3Rpb249IjciLz4KKyAgICAgICAgPGRpYTpjb25uZWN0aW9uIGhhbmRsZT0iMSIgdG89Ik8xOCIgY29ubmVjdGlvbj0iNyIvPgorICAgICAgPC9kaWE6Y29ubmVjdGlvbnM+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gTGluZSIgdmVyc2lvbj0iMCIgaWQ9Ik8yNCI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjM5LjQzMzcsOC42OTE3Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjI1LjQyMTgsOC42MzgxMzszOS40ODczLDkuNzgxODIiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbm5fZW5kcG9pbnRzIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjM5LjQzMzcsOC42OTE3Ii8+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIyNS40NzU0LDkuNzI4MjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im51bWNwIj4KKyAgICAgICAgPGRpYTppbnQgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX2NvbG9yIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiNlNjA1MDUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfc3R5bGUiPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSI0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmNvbm5lY3Rpb25zPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIwIiB0bz0iTzIwIiBjb25uZWN0aW9uPSIyIi8+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjEiIHRvPSJPMTgiIGNvbm5lY3Rpb249IjIiLz4KKyAgICAgIDwvZGlhOmNvbm5lY3Rpb25zPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIFRleHQiIHZlcnNpb249IjEiIGlkPSJPMjUiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIxNi4yNSw1LjE1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjE2LjI1LDQuNTU1OzIxLjY4LDYuMTAyNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0idGV4dCI+CisgICAgICAgIDxkaWE6Y29tcG9zaXRlIHR5cGU9InRleHQiPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InN0cmluZyI+CisgICAgICAgICAgICA8ZGlhOnN0cmluZz4jc2luayBjb21wb3NlCitib3VuZHMgc2VsZWN0aW9uIzwvZGlhOnN0cmluZz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZm9udCI+CisgICAgICAgICAgICA8ZGlhOmZvbnQgZmFtaWx5PSJzYW5zIiBzdHlsZT0iMCIgbmFtZT0iSGVsdmV0aWNhIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImhlaWdodCI+CisgICAgICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjgwMDAwMDAwMDAwMDAwMDA0Ii8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InBvcyI+CisgICAgICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMTYuMjUsNS4xNSIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb2xvciI+CisgICAgICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2ZmNzY1YSIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbm1lbnQiPgorICAgICAgICAgICAgPGRpYTplbnVtIHZhbD0iMCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgPC9kaWE6Y29tcG9zaXRlPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KKyAgICAgICAgPGRpYTplbnVtIHZhbD0iMyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJHZW9tZXRyaWMgLSBQZXJmZWN0IENpcmNsZSIgdmVyc2lvbj0iMSIgaWQ9Ik8yNiI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9Ii0xLjAyOTkxLDE2LjY1MDYiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iLTEuMDc5OTEsMTYuNjAwNjstMC4xMjk5MSwxNy41NTA2Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJtZXRhIj4KKyAgICAgICAgPGRpYTpjb21wb3NpdGUgdHlwZT0iZGljdCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9jb3JuZXIiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iLTEuMDI5OTEsMTYuNjUwNiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuODQ5OTk5OTk5OTk5OTk3ODciLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1faGVpZ2h0Ij4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC44NDk5OTk5OTk5OTk5OTc4NyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuMTAwMDAwMDAwMDAwMDAwMDEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfY29sb3VyIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiMwMDAwMDAiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZpbGxfY29sb3VyIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiNmZmZmZmYiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InNob3dfYmFja2dyb3VuZCI+CisgICAgICAgIDxkaWE6Ym9vbGVhbiB2YWw9InRydWUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfc3R5bGUiPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIwIi8+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZsaXBfaG9yaXpvbnRhbCI+CisgICAgICAgIDxkaWE6Ym9vbGVhbiB2YWw9ImZhbHNlIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJmbGlwX3ZlcnRpY2FsIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0iZmFsc2UiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InN1YnNjYWxlIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIExpbmUiIHZlcnNpb249IjAiIGlkPSJPMjciPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSItOS4yMDQ5MSwxNy4wOSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSItOS4yNTUsMTYuNzE0OTstMC45MTgxMDcsMTcuNDM4NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29ubl9lbmRwb2ludHMiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iLTkuMjA0OTEsMTcuMDkiLz4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9Ii0xLjAyOTkxLDE3LjA3NTYiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im51bWNwIj4KKyAgICAgICAgPGRpYTppbnQgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbmRfYXJyb3ciPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIyMiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZW5kX2Fycm93X2xlbmd0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZW5kX2Fycm93X3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC41Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmNvbm5lY3Rpb25zPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzI2IiBjb25uZWN0aW9uPSIyIi8+CisgICAgICA8L2RpYTpjb25uZWN0aW9ucz4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBUZXh0IiB2ZXJzaW9uPSIxIiBpZD0iTzI4Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iLTYuOTUsMTYuNDUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iLTYuOTUsMTUuODU1Oy0zLjE0NSwxNi42MDI1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0Ij4KKyAgICAgICAgPGRpYTpjb21wb3NpdGUgdHlwZT0idGV4dCI+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic3RyaW5nIj4KKyAgICAgICAgICAgIDxkaWE6c3RyaW5nPiNwYWQgMSAoc2luaykjPC9kaWE6c3RyaW5nPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJmb250Ij4KKyAgICAgICAgICAgIDxkaWE6Zm9udCBmYW1pbHk9InNhbnMiIHN0eWxlPSIwIiBuYW1lPSJIZWx2ZXRpY2EiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0Ij4KKyAgICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuODAwMDAwMDAwMDAwMDAwMDQiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0icG9zIj4KKyAgICAgICAgICAgIDxkaWE6cG9pbnQgdmFsPSItNi45NSwxNi40NSIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb2xvciI+CisgICAgICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iIzAwMDAwMCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbm1lbnQiPgorICAgICAgICAgICAgPGRpYTplbnVtIHZhbD0iMCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgPC9kaWE6Y29tcG9zaXRlPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KKyAgICAgICAgPGRpYTplbnVtIHZhbD0iMyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIEJveCIgdmVyc2lvbj0iMCIgaWQ9Ik8yOSI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjAuMzkwNDEyLDE0LjY0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjAuMzQwNDEyLDE0LjU5OzYuMDQ1LDE4LjgiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1fY29ybmVyIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjAuMzkwNDEyLDE0LjY0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iNS42MDQ1ODc1MTI3ODUyMzYiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1faGVpZ2h0Ij4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iNC4xMDk5OTk5OTk5OTk5OTk0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJfd2lkdGgiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjEwMDAwMDAwMTQ5MDExNjEyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJfY29sb3IiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2E1MmEyYSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic2hvd19iYWNrZ3JvdW5kIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0idHJ1ZSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIEJveCIgdmVyc2lvbj0iMCIgaWQ9Ik8zMCI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjIuNjQ1LDE1Ljc0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjIuNTk1LDE1LjY5OzUuNiwxOC4zIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX2Nvcm5lciI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIyLjY0NSwxNS43NCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjIuOTA0OTk5OTk5MjU0OTQyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX2hlaWdodCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjIuNTEwMDAwMDAwMDAwMDAxNiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC4xMDAwMDAwMDE0OTAxMTYxMiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyX2NvbG9yIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiMwMDAwZmYiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InNob3dfYmFja2dyb3VuZCI+CisgICAgICAgIDxkaWE6Ym9vbGVhbiB2YWw9InRydWUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBUZXh0IiB2ZXJzaW9uPSIxIiBpZD0iTzMxIj4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMS41OTUsMTIuOTkiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iMS41OTUsMTIuMzk1OzEuNTk1LDEzLjE0MjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InRleHQiPgorICAgICAgICA8ZGlhOmNvbXBvc2l0ZSB0eXBlPSJ0ZXh0Ij4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJzdHJpbmciPgorICAgICAgICAgICAgPGRpYTpzdHJpbmc+IyM8L2RpYTpzdHJpbmc+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZvbnQiPgorICAgICAgICAgICAgPGRpYTpmb250IGZhbWlseT0ic2FucyIgc3R5bGU9IjAiIG5hbWU9IkhlbHZldGljYSIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJoZWlnaHQiPgorICAgICAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC44MDAwMDAwMDAwMDAwMDAwNCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJwb3MiPgorICAgICAgICAgICAgPGRpYTpwb2ludCB2YWw9IjEuNTk1LDEyLjk5Ii8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbG9yIj4KKyAgICAgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjMDAwMDAwIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImFsaWdubWVudCI+CisgICAgICAgICAgICA8ZGlhOmVudW0gdmFsPSIwIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8L2RpYTpjb21wb3NpdGU+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gTGluZSIgdmVyc2lvbj0iMCIgaWQ9Ik8zMiI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjE3Ljk0NSwxMi41OTUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iMi41ODU5NiwxMi41MzY7MTguMDA0LDE1Ljc5OSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29ubl9lbmRwb2ludHMiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMTcuOTQ1LDEyLjU5NSIvPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMi42NDUsMTUuNzQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im51bWNwIj4KKyAgICAgICAgPGRpYTppbnQgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX2NvbG9yIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiNlNjA1MDUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfc3R5bGUiPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSI0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmNvbm5lY3Rpb25zPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIwIiB0bz0iTzM2IiBjb25uZWN0aW9uPSIwIi8+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjEiIHRvPSJPMzAiIGNvbm5lY3Rpb249IjAiLz4KKyAgICAgIDwvZGlhOmNvbm5lY3Rpb25zPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIExpbmUiIHZlcnNpb249IjAiIGlkPSJPMzMiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIxNy45NDUsMTUuOCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIyLjU4NzcyLDE1Ljc0Mjc7MTguMDAyMywxOC4zMDczIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb25uX2VuZHBvaW50cyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIxNy45NDUsMTUuOCIvPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMi42NDUsMTguMjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im51bWNwIj4KKyAgICAgICAgPGRpYTppbnQgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX2NvbG9yIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiNlNjA1MDUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfc3R5bGUiPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSI0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmNvbm5lY3Rpb25zPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIwIiB0bz0iTzM2IiBjb25uZWN0aW9uPSI1Ii8+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjEiIHRvPSJPMzAiIGNvbm5lY3Rpb249IjUiLz4KKyAgICAgIDwvZGlhOmNvbm5lY3Rpb25zPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIExpbmUiIHZlcnNpb249IjAiIGlkPSJPMzQiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIyMS43LDE1LjgiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iNS40OTMwNywxNS43NDMxOzIxLjc1NjksMTguMzA2OSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29ubl9lbmRwb2ludHMiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjEuNywxNS44Ii8+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSI1LjU1LDE4LjI1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJudW1jcCI+CisgICAgICAgIDxkaWE6aW50IHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9jb2xvciI+CisgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjZTYwNTA1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX3N0eWxlIj4KKyAgICAgICAgPGRpYTplbnVtIHZhbD0iNCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTpjb25uZWN0aW9ucz4KKyAgICAgICAgPGRpYTpjb25uZWN0aW9uIGhhbmRsZT0iMCIgdG89Ik8zNiIgY29ubmVjdGlvbj0iNyIvPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzMwIiBjb25uZWN0aW9uPSI3Ii8+CisgICAgICA8L2RpYTpjb25uZWN0aW9ucz4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBMaW5lIiB2ZXJzaW9uPSIwIiBpZD0iTzM1Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjEuNywxMi41OTUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iNS40OTEzNiwxMi41MzY0OzIxLjc1ODYsMTUuNzk4NiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29ubl9lbmRwb2ludHMiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjEuNywxMi41OTUiLz4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjUuNTUsMTUuNzQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im51bWNwIj4KKyAgICAgICAgPGRpYTppbnQgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX2NvbG9yIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiNlNjA1MDUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfc3R5bGUiPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSI0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmNvbm5lY3Rpb25zPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIwIiB0bz0iTzM2IiBjb25uZWN0aW9uPSIyIi8+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjEiIHRvPSJPMzAiIGNvbm5lY3Rpb249IjIiLz4KKyAgICAgIDwvZGlhOmNvbm5lY3Rpb25zPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIEJveCIgdmVyc2lvbj0iMCIgaWQ9Ik8zNiI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjE3Ljk0NSwxMi41OTUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iMTcuODk1LDEyLjU0NTsyMS43NSwxNS44NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9jb3JuZXIiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMTcuOTQ1LDEyLjU5NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjMuNzU0OTk5OTk5MjU0OTQ1MiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9oZWlnaHQiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIzLjIwNDk5OTk5OTI1NDk0MjciLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImJvcmRlcl93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuMTAwMDAwMDAxNDkwMTE2MTIiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImJvcmRlcl9jb2xvciI+CisgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjMDBmZjAwIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJzaG93X2JhY2tncm91bmQiPgorICAgICAgICA8ZGlhOmJvb2xlYW4gdmFsPSJmYWxzZSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIEJveCIgdmVyc2lvbj0iMCIgaWQ9Ik8zNyI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjIyLjE2MzEsMTQuMjIzMyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIyMi4xMTMxLDE0LjE3MzM7MjUuNDUsMTYuNyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9jb3JuZXIiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjIuMTYzMSwxNC4yMjMzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMy4yMzY5MDAwMDAwMDAwMDIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX2hlaWdodCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjIuNDI2NzAwMDAwMDAwMDAwMyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC4xMDAwMDAwMDE0OTAxMTYxMiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyX2NvbG9yIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiNhMDIwZjAiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InNob3dfYmFja2dyb3VuZCI+CisgICAgICAgIDxkaWE6Ym9vbGVhbiB2YWw9ImZhbHNlIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gQm94IiB2ZXJzaW9uPSIwIiBpZD0iTzM4Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMzQuNjcxNCwxNi4yMzY3Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjM0LjYyMTQsMTYuMTg2NzszNy45LDE4Ljc1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX2Nvcm5lciI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzNC42NzE0LDE2LjIzNjciLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1fd2lkdGgiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIzLjE3ODYwMDAwMDAwMDAwMyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9oZWlnaHQiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIyLjQ2MzI5OTk5OTk5OTk5NjciLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImJvcmRlcl93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuMTAwMDAwMDAxNDkwMTE2MTIiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImJvcmRlcl9jb2xvciI+CisgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjOGI2OTE0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJzaG93X2JhY2tncm91bmQiPgorICAgICAgICA8ZGlhOmJvb2xlYW4gdmFsPSJ0cnVlIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gTGluZSIgdmVyc2lvbj0iMCIgaWQ9Ik8zOSI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjM0LjY3MTQsMTguNyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIyMi4xMDU3LDE2LjU5MjY7MzQuNzI4OCwxOC43NTc0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb25uX2VuZHBvaW50cyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzNC42NzE0LDE4LjciLz4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjIyLjE2MzEsMTYuNjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im51bWNwIj4KKyAgICAgICAgPGRpYTppbnQgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX2NvbG9yIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiNlNjA1MDUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfc3R5bGUiPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSI0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmNvbm5lY3Rpb25zPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIwIiB0bz0iTzM4IiBjb25uZWN0aW9uPSI1Ii8+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjEiIHRvPSJPMzciIGNvbm5lY3Rpb249IjUiLz4KKyAgICAgIDwvZGlhOmNvbm5lY3Rpb25zPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIExpbmUiIHZlcnNpb249IjAiIGlkPSJPNDAiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzNC42NzE0LDE2LjIzNjciLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iMjIuMTA1OCwxNC4xNjY7MzQuNzI4NywxNi4yOTQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbm5fZW5kcG9pbnRzIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjM0LjY3MTQsMTYuMjM2NyIvPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjIuMTYzMSwxNC4yMjMzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJudW1jcCI+CisgICAgICAgIDxkaWE6aW50IHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9jb2xvciI+CisgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjZTYwNTA1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX3N0eWxlIj4KKyAgICAgICAgPGRpYTplbnVtIHZhbD0iNCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTpjb25uZWN0aW9ucz4KKyAgICAgICAgPGRpYTpjb25uZWN0aW9uIGhhbmRsZT0iMCIgdG89Ik8zOCIgY29ubmVjdGlvbj0iMCIvPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzM3IiBjb25uZWN0aW9uPSIwIi8+CisgICAgICA8L2RpYTpjb25uZWN0aW9ucz4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBMaW5lIiB2ZXJzaW9uPSIwIiBpZD0iTzQxIj4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMzcuODUsMTguNyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIyNS4zNDI1LDE2LjU5MjU7MzcuOTA3NSwxOC43NTc1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb25uX2VuZHBvaW50cyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzNy44NSwxOC43Ii8+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIyNS40LDE2LjY1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJudW1jcCI+CisgICAgICAgIDxkaWE6aW50IHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9jb2xvciI+CisgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjZTYwNTA1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX3N0eWxlIj4KKyAgICAgICAgPGRpYTplbnVtIHZhbD0iNCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTpjb25uZWN0aW9ucz4KKyAgICAgICAgPGRpYTpjb25uZWN0aW9uIGhhbmRsZT0iMCIgdG89Ik8zOCIgY29ubmVjdGlvbj0iNyIvPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzM3IiBjb25uZWN0aW9uPSI3Ii8+CisgICAgICA8L2RpYTpjb25uZWN0aW9ucz4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBMaW5lIiB2ZXJzaW9uPSIwIiBpZD0iTzQyIj4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMzcuODUsMTYuMjM2NyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIyNS4zNDI3LDE0LjE2NjszNy45MDczLDE2LjI5NCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29ubl9lbmRwb2ludHMiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMzcuODUsMTYuMjM2NyIvPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjUuNCwxNC4yMjMzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJudW1jcCI+CisgICAgICAgIDxkaWE6aW50IHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9jb2xvciI+CisgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjZTYwNTA1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX3N0eWxlIj4KKyAgICAgICAgPGRpYTplbnVtIHZhbD0iNCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTpjb25uZWN0aW9ucz4KKyAgICAgICAgPGRpYTpjb25uZWN0aW9uIGhhbmRsZT0iMCIgdG89Ik8zOCIgY29ubmVjdGlvbj0iMiIvPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzM3IiBjb25uZWN0aW9uPSIyIi8+CisgICAgICA8L2RpYTpjb25uZWN0aW9ucz4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iR2VvbWV0cmljIC0gUGVyZmVjdCBDaXJjbGUiIHZlcnNpb249IjEiIGlkPSJPNDMiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSI0MC4zNDcsMTYuNzc0MiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSI0MC4yOTcsMTYuNzI0Mjs0MS4yNDcsMTcuNjc0MiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibWV0YSI+CisgICAgICAgIDxkaWE6Y29tcG9zaXRlIHR5cGU9ImRpY3QiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1fY29ybmVyIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjQwLjM0NywxNi43NzQyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC44NDk5OTk5OTk5OTk5OTc4NyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9oZWlnaHQiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjg0OTk5OTk5OTk5OTk5Nzg3Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC4xMDAwMDAwMDAwMDAwMDAwMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9jb2xvdXIiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iIzAwMDAwMCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZmlsbF9jb2xvdXIiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2ZmZmZmZiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic2hvd19iYWNrZ3JvdW5kIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0idHJ1ZSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9zdHlsZSI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjAiLz4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZmxpcF9ob3Jpem9udGFsIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0iZmFsc2UiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZsaXBfdmVydGljYWwiPgorICAgICAgICA8ZGlhOmJvb2xlYW4gdmFsPSJmYWxzZSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic3Vic2NhbGUiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gTGluZSIgdmVyc2lvbj0iMCIgaWQ9Ik80NCI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjQxLjE5NywxNy4xOTkyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjQxLjE0NywxNi44Mzg4OzQ5LjYxMjMsMTcuNTYyNCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29ubl9lbmRwb2ludHMiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iNDEuMTk3LDE3LjE5OTIiLz4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjQ5LjUwMDUsMTcuMjAwNyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibnVtY3AiPgorICAgICAgICA8ZGlhOmludCB2YWw9IjEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVuZF9hcnJvdyI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjIyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbmRfYXJyb3dfbGVuZ3RoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC41Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbmRfYXJyb3dfd2lkdGgiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6Y29ubmVjdGlvbnM+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjAiIHRvPSJPNDMiIGNvbm5lY3Rpb249IjMiLz4KKyAgICAgIDwvZGlhOmNvbm5lY3Rpb25zPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIFRleHQiIHZlcnNpb249IjEiIGlkPSJPNDUiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSI0Mi40NjI0LDE2LjY5Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjQyLjQ2MjQsMTYuMDk1OzQ3LjEwNzQsMTYuODQyNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0idGV4dCI+CisgICAgICAgIDxkaWE6Y29tcG9zaXRlIHR5cGU9InRleHQiPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InN0cmluZyI+CisgICAgICAgICAgICA8ZGlhOnN0cmluZz4jcGFkIDMgKHNvdXJjZSkjPC9kaWE6c3RyaW5nPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJmb250Ij4KKyAgICAgICAgICAgIDxkaWE6Zm9udCBmYW1pbHk9InNhbnMiIHN0eWxlPSIwIiBuYW1lPSJIZWx2ZXRpY2EiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0Ij4KKyAgICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuODAwMDAwMDAwMDAwMDAwMDQiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0icG9zIj4KKyAgICAgICAgICAgIDxkaWE6cG9pbnQgdmFsPSI0Mi40NjI0LDE2LjY5Ii8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbG9yIj4KKyAgICAgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjMDAwMDAwIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImFsaWdubWVudCI+CisgICAgICAgICAgICA8ZGlhOmVudW0gdmFsPSIwIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8L2RpYTpjb21wb3NpdGU+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gVGV4dCIgdmVyc2lvbj0iMSIgaWQ9Ik80NiI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjkuODUsNC41NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSI5Ljg1LDMuOTU1OzEyLjcyNzUsNi4zMDI1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0Ij4KKyAgICAgICAgPGRpYTpjb21wb3NpdGUgdHlwZT0idGV4dCI+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic3RyaW5nIj4KKyAgICAgICAgICAgIDxkaWE6c3RyaW5nPiNzaW5rCitjcm9wCitzZWxlY3Rpb24jPC9kaWE6c3RyaW5nPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJmb250Ij4KKyAgICAgICAgICAgIDxkaWE6Zm9udCBmYW1pbHk9InNhbnMiIHN0eWxlPSIwIiBuYW1lPSJIZWx2ZXRpY2EiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0Ij4KKyAgICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuODAwMDAwMDAwMDAwMDAwMDQiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0icG9zIj4KKyAgICAgICAgICAgIDxkaWE6cG9pbnQgdmFsPSI5Ljg1LDQuNTUiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29sb3IiPgorICAgICAgICAgICAgPGRpYTpjb2xvciB2YWw9IiMwMDAwZmYiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYWxpZ25tZW50Ij4KKyAgICAgICAgICAgIDxkaWE6ZW51bSB2YWw9IjAiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDwvZGlhOmNvbXBvc2l0ZT4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjMiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBUZXh0IiB2ZXJzaW9uPSIxIiBpZD0iTzQ3Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjcuNjUsNC43NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIyNy42NSw0LjE1NTszMC41Mjc1LDYuNTAyNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0idGV4dCI+CisgICAgICAgIDxkaWE6Y29tcG9zaXRlIHR5cGU9InRleHQiPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InN0cmluZyI+CisgICAgICAgICAgICA8ZGlhOnN0cmluZz4jc291cmNlCitjcm9wCitzZWxlY3Rpb24jPC9kaWE6c3RyaW5nPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJmb250Ij4KKyAgICAgICAgICAgIDxkaWE6Zm9udCBmYW1pbHk9InNhbnMiIHN0eWxlPSIwIiBuYW1lPSJIZWx2ZXRpY2EiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0Ij4KKyAgICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuODAwMDAwMDAwMDAwMDAwMDQiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0icG9zIj4KKyAgICAgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIyNy42NSw0Ljc1Ii8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbG9yIj4KKyAgICAgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjYTAyMGYwIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImFsaWdubWVudCI+CisgICAgICAgICAgICA8ZGlhOmVudW0gdmFsPSIwIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8L2RpYTpjb21wb3NpdGU+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gTGluZSIgdmVyc2lvbj0iMCIgaWQ9Ik80OCI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjEwLjU1LDYuNiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSI3LjcxMzUsNi4zOTQzODsxMC42MDM1LDcuMTE2MDUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbm5fZW5kcG9pbnRzIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjEwLjU1LDYuNiIvPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iNy44MjUsNi44Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJudW1jcCI+CisgICAgICAgIDxkaWE6aW50IHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9jb2xvciI+CisgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjMDAwMGZmIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbmRfYXJyb3ciPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIyMiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZW5kX2Fycm93X2xlbmd0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZW5kX2Fycm93X3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC41Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmNvbm5lY3Rpb25zPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzkiIGNvbm5lY3Rpb249IjIiLz4KKyAgICAgIDwvZGlhOmNvbm5lY3Rpb25zPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIExpbmUiIHZlcnNpb249IjAiIGlkPSJPNDkiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIxMC40NSw2LjU1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjUuNDgwMjksNi40ODIzNjsxMC41MTc2LDE1LjgzODciLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbm5fZW5kcG9pbnRzIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjEwLjQ1LDYuNTUiLz4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjUuNTUsMTUuNzQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im51bWNwIj4KKyAgICAgICAgPGRpYTppbnQgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX2NvbG9yIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiMwMDAwZmYiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVuZF9hcnJvdyI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjIyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbmRfYXJyb3dfbGVuZ3RoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC41Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbmRfYXJyb3dfd2lkdGgiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6Y29ubmVjdGlvbnM+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjEiIHRvPSJPMzAiIGNvbm5lY3Rpb249IjIiLz4KKyAgICAgIDwvZGlhOmNvbm5lY3Rpb25zPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIExpbmUiIHZlcnNpb249IjAiIGlkPSJPNTAiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIyNy41MjQ2LDYuNjYwNzEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iMjUuNDA2LDYuNTkxMzY7MjcuNTk0LDkuODIxMjIiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbm5fZW5kcG9pbnRzIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjI3LjUyNDYsNi42NjA3MSIvPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjUuNDc1NCw5LjcyODI1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJudW1jcCI+CisgICAgICAgIDxkaWE6aW50IHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9jb2xvciI+CisgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjYTAyMGYwIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbmRfYXJyb3ciPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIyMiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZW5kX2Fycm93X2xlbmd0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZW5kX2Fycm93X3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC41Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmNvbm5lY3Rpb25zPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzE4IiBjb25uZWN0aW9uPSIyIi8+CisgICAgICA8L2RpYTpjb25uZWN0aW9ucz4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBMaW5lIiB2ZXJzaW9uPSIwIiBpZD0iTzUxIj4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjcuNTAzNiw2LjY4OTM1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjI1LjIxNjEsNi42Mjc3NTsyNy41NjUyLDE0LjMzMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29ubl9lbmRwb2ludHMiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjcuNTAzNiw2LjY4OTM1Ii8+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIyNS40LDE0LjIyMzMiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im51bWNwIj4KKyAgICAgICAgPGRpYTppbnQgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX2NvbG9yIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiNhMDIwZjAiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVuZF9hcnJvdyI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjIyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbmRfYXJyb3dfbGVuZ3RoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC41Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbmRfYXJyb3dfd2lkdGgiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6Y29ubmVjdGlvbnM+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjEiIHRvPSJPMzciIGNvbm5lY3Rpb249IjIiLz4KKyAgICAgIDwvZGlhOmNvbm5lY3Rpb25zPgorICAgIDwvZGlhOm9iamVjdD4KKyAgPC9kaWE6bGF5ZXI+Cis8L2RpYTpkaWFncmFtPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9zdWJkZXYtaW1hZ2UtcHJvY2Vzc2luZy1mdWxsLnN2ZyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvc3ViZGV2LWltYWdlLXByb2Nlc3NpbmctZnVsbC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzMyMmNmNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvc3ViZGV2LWltYWdlLXByb2Nlc3NpbmctZnVsbC5zdmcKQEAgLTAsMCArMSwxNjMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI/PgorPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjAvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9QUi1TVkctMjAwMTA3MTkvRFREL3N2ZzEwLmR0ZCI+Cis8c3ZnIHdpZHRoPSI1OWNtIiBoZWlnaHQ9IjE4Y20iIHZpZXdCb3g9Ii0xODYgNzEgMTE3OCAzNDYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICA8Zz4KKyAgICA8cmVjdCBzdHlsZT0iZmlsbDogI2ZmZmZmZiIgeD0iMzE4LjkiIHk9IjEyOSIgd2lkdGg9IjIwOC4xIiBoZWlnaHQ9IjI0OSIvPgorICAgIDxyZWN0IHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICNmZjc2NWEiIHg9IjMxOC45IiB5PSIxMjkiIHdpZHRoPSIyMDguMSIgaGVpZ2h0PSIyNDkiLz4KKyAgPC9nPgorICA8cmVjdCBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjMDAwMDAwIiB4PSItMiIgeT0iNzMiIHdpZHRoPSI4MDYiIGhlaWdodD0iMzQzIi8+CisgIDxnPgorICAgIDxlbGxpcHNlIHN0eWxlPSJmaWxsOiAjZmZmZmZmIiBjeD0iLTEyLjUiIGN5PSIxNjYuNzEyIiByeD0iOC41IiByeT0iOC41Ii8+CisgICAgPGVsbGlwc2Ugc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogIzAwMDAwMCIgY3g9Ii0xMi41IiBjeT0iMTY2LjcxMiIgcng9IjguNSIgcnk9IjguNSIvPgorICAgIDxlbGxpcHNlIHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICMwMDAwMDAiIGN4PSItMTIuNSIgY3k9IjE2Ni43MTIiIHJ4PSI4LjUiIHJ5PSI4LjUiLz4KKyAgPC9nPgorICA8Zz4KKyAgICA8ZWxsaXBzZSBzdHlsZT0iZmlsbDogI2ZmZmZmZiIgY3g9IjgxNS4yMzIiIGN5PSIyMDUuMTg0IiByeD0iOC41IiByeT0iOC41Ii8+CisgICAgPGVsbGlwc2Ugc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogIzAwMDAwMCIgY3g9IjgxNS4yMzIiIGN5PSIyMDUuMTg0IiByeD0iOC41IiByeT0iOC41Ii8+CisgICAgPGVsbGlwc2Ugc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogIzAwMDAwMCIgY3g9IjgxNS4yMzIiIGN5PSIyMDUuMTg0IiByeD0iOC41IiByeT0iOC41Ii8+CisgIDwvZz4KKyAgPGc+CisgICAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogIzAwMDAwMCIgeDE9Ii0xODQuNSIgeTE9IjE2NyIgeDI9Ii0zMC43MzYxIiB5Mj0iMTY2LjcyOSIvPgorICAgIDxwb2x5Z29uIHN0eWxlPSJmaWxsOiAjMDAwMDAwIiBwb2ludHM9Ii0yMy4yMzYxLDE2Ni43MTYgLTMzLjIyNzIsMTcxLjczNCAtMzAuNzM2MSwxNjYuNzI5IC0zMy4yNDQ5LDE2MS43MzQgIi8+CisgICAgPHBvbHlnb24gc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogIzAwMDAwMCIgcG9pbnRzPSItMjMuMjM2MSwxNjYuNzE2IC0zMy4yMjcyLDE3MS43MzQgLTMwLjczNjEsMTY2LjcyOSAtMzMuMjQ0OSwxNjEuNzM0ICIvPgorICA8L2c+CisgIDxnPgorICAgIDxsaW5lIHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICMwMDAwMDAiIHgxPSI4MjMuNzMyIiB5MT0iMjA1LjE4NCIgeDI9Ijk4MC4wNjYiIHkyPSIyMDUuMjEyIi8+CisgICAgPHBvbHlnb24gc3R5bGU9ImZpbGw6ICMwMDAwMDAiIHBvaW50cz0iOTg3LjU2NiwyMDUuMjE0IDk3Ny41NjUsMjEwLjIxMiA5ODAuMDY2LDIwNS4yMTIgOTc3LjU2NywyMDAuMjEyICIvPgorICAgIDxwb2x5Z29uIHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICMwMDAwMDAiIHBvaW50cz0iOTg3LjU2NiwyMDUuMjE0IDk3Ny41NjUsMjEwLjIxMiA5ODAuMDY2LDIwNS4yMTIgOTc3LjU2NywyMDAuMjEyICIvPgorICA8L2c+CisgIDx0ZXh0IHN0eWxlPSJmaWxsOiAjMDAwMDAwO3RleHQtYW5jaG9yOnN0YXJ0O2ZvbnQtc2l6ZToxMi44O2ZvbnQtZmFtaWx5OnNhbnNlcmlmO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbCIgeD0iLTEzOS45NiIgeT0iMTU1Ij4KKyAgICA8dHNwYW4geD0iLTEzOS45NiIgeT0iMTU1Ij5wYWQgMCAoc2luayk8L3RzcGFuPgorICA8L3RleHQ+CisgIDx0ZXh0IHN0eWxlPSJmaWxsOiAjMDAwMDAwO3RleHQtYW5jaG9yOnN0YXJ0O2ZvbnQtc2l6ZToxMi44O2ZvbnQtZmFtaWx5OnNhbnNlcmlmO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbCIgeD0iODQ5LjA0IiB5PSIxOTUiPgorICAgIDx0c3BhbiB4PSI4NDkuMDQiIHk9IjE5NSI+cGFkIDIgKHNvdXJjZSk8L3RzcGFuPgorICA8L3RleHQ+CisgIDxnPgorICAgIDxyZWN0IHN0eWxlPSJmaWxsOiAjZmZmZmZmIiB4PSI1LjUiIHk9IjEyMCIgd2lkdGg9IjE1OSIgaGVpZ2h0PSIxMDQiLz4KKyAgICA8cmVjdCBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjYTUyYTJhIiB4PSI1LjUiIHk9IjEyMCIgd2lkdGg9IjE1OSIgaGVpZ2h0PSIxMDQiLz4KKyAgPC9nPgorICA8Zz4KKyAgICA8cmVjdCBzdHlsZT0iZmlsbDogI2ZmZmZmZiIgeD0iNjIuNSIgeT0iMTM2IiB3aWR0aD0iOTQiIGhlaWdodD0iNzciLz4KKyAgICA8cmVjdCBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjMDAwMGZmIiB4PSI2Mi41IiB5PSIxMzYiIHdpZHRoPSI5NCIgaGVpZ2h0PSI3NyIvPgorICA8L2c+CisgIDx0ZXh0IHN0eWxlPSJmaWxsOiAjMDAwMDAwO3RleHQtYW5jaG9yOnN0YXJ0O2ZvbnQtc2l6ZToxMi44O2ZvbnQtZmFtaWx5OnNhbnNlcmlmO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbCIgeD0iMzAuNSIgeT0iODkiPgorICAgIDx0c3BhbiB4PSIzMC41IiB5PSI4OSI+PC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dCBzdHlsZT0iZmlsbDogI2E1MmEyYTt0ZXh0LWFuY2hvcjpzdGFydDtmb250LXNpemU6MTIuODtmb250LWZhbWlseTpzYW5zZXJpZjtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWwiIHg9IjkuNTM4MzYiIHk9Ijg4LjkxMzgiPgorICAgIDx0c3BhbiB4PSI5LjUzODM2IiB5PSI4OC45MTM4Ij5zaW5rIG1lZGlhPC90c3Bhbj4KKyAgICA8dHNwYW4geD0iOS41MzgzNiIgeT0iMTA0LjkxNCI+YnVzIGZvcm1hdDwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPGc+CisgICAgPHJlY3Qgc3R5bGU9ImZpbGw6ICNmZmZmZmYiIHg9IjMzMy42NDQiIHk9IjE4NS42NSIgd2lkdGg9IjE2NS4yIiBoZWlnaHQ9IjE3Mi40NzgiLz4KKyAgICA8cmVjdCBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjMDBmZjAwIiB4PSIzMzMuNjQ0IiB5PSIxODUuNjUiIHdpZHRoPSIxNjUuMiIgaGVpZ2h0PSIxNzIuNDc4Ii8+CisgIDwvZz4KKyAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZS1kYXNoYXJyYXk6IDQ7IHN0cm9rZTogI2U2MDUwNSIgeDE9IjMzMy42NDQiIHkxPSIzNTguMTI4IiB4Mj0iNjIuNSIgeTI9IjIxMyIvPgorICA8bGluZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlLWRhc2hhcnJheTogNDsgc3Ryb2tlOiAjZTYwNTA1IiB4MT0iMzMzLjY0NCIgeTE9IjE4NS42NSIgeDI9IjYyLjUiIHkyPSIxMzYiLz4KKyAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZS1kYXNoYXJyYXk6IDQ7IHN0cm9rZTogI2U2MDUwNSIgeDE9IjQ5OC44NDQiIHkxPSIzNTguMTI4IiB4Mj0iMTU2LjUiIHkyPSIyMTMiLz4KKyAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZS1kYXNoYXJyYXk6IDQ7IHN0cm9rZTogI2U2MDUwNSIgeDE9IjQ5OC44NDQiIHkxPSIxODUuNjUiIHgyPSIxNTYuNSIgeTI9IjEzNiIvPgorICA8dGV4dCBzdHlsZT0iZmlsbDogIzAwZmYwMDt0ZXh0LWFuY2hvcjpzdGFydDtmb250LXNpemU6MTIuODtmb250LWZhbWlseTpzYW5zZXJpZjtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWwiIHg9IjMzNC43MDQiIHk9IjE0OS40NDIiPgorICAgIDx0c3BhbiB4PSIzMzQuNzA0IiB5PSIxNDkuNDQyIj5zaW5rIGNvbXBvc2U8L3RzcGFuPgorICAgIDx0c3BhbiB4PSIzMzQuNzA0IiB5PSIxNjUuNDQyIj5zZWxlY3Rpb24gKHNjYWxpbmcpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8Zz4KKyAgICA8cmVjdCBzdHlsZT0iZmlsbDogI2ZmZmZmZiIgeD0iNDA5LjMyMiIgeT0iMTk0LjU2NSIgd2lkdGg9IjEwMC4xODYiIGhlaWdodD0iNzEuNDUyMyIvPgorICAgIDxyZWN0IHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICNhMDIwZjAiIHg9IjQwOS4zMjIiIHk9IjE5NC41NjUiIHdpZHRoPSIxMDAuMTg2IiBoZWlnaHQ9IjcxLjQ1MjMiLz4KKyAgPC9nPgorICA8dGV4dCBzdHlsZT0iZmlsbDogIzhiNjkxNDt0ZXh0LWFuY2hvcjpzdGFydDtmb250LXNpemU6MTIuODtmb250LWZhbWlseTpzYW5zZXJpZjtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWwiIHg9IjY4OS41IiB5PSIxMDUuMTI4Ij4KKyAgICA8dHNwYW4geD0iNjg5LjUiIHk9IjEwNS4xMjgiPnNvdXJjZSBtZWRpYTwvdHNwYW4+CisgICAgPHRzcGFuIHg9IjY4OS41IiB5PSIxMjEuMTI4Ij5idXMgZm9ybWF0PC90c3Bhbj4KKyAgPC90ZXh0PgorICA8Zz4KKyAgICA8cmVjdCBzdHlsZT0iZmlsbDogI2ZmZmZmZiIgeD0iNjg4LjQ4OCIgeT0iMTczLjgzNCIgd2lkdGg9IjEwMC4xODYiIGhlaWdodD0iNzEuNDUyMyIvPgorICAgIDxyZWN0IHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICM4YjY5MTQiIHg9IjY4OC40ODgiIHk9IjE3My44MzQiIHdpZHRoPSIxMDAuMTg2IiBoZWlnaHQ9IjcxLjQ1MjMiLz4KKyAgPC9nPgorICA8bGluZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlLWRhc2hhcnJheTogNDsgc3Ryb2tlOiAjZTYwNTA1IiB4MT0iNjg4LjQ4OCIgeTE9IjI0NS4yODYiIHgyPSI0MDkuMzIyIiB5Mj0iMjY2LjAxOCIvPgorICA8bGluZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlLWRhc2hhcnJheTogNDsgc3Ryb2tlOiAjZTYwNTA1IiB4MT0iNjg4LjQ4OCIgeTE9IjE3My44MzQiIHgyPSI0MDkuMzIyIiB5Mj0iMTk0LjU2NSIvPgorICA8bGluZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlLWRhc2hhcnJheTogNDsgc3Ryb2tlOiAjZTYwNTA1IiB4MT0iNzg4LjY3NCIgeTE9IjI0NS4yODYiIHgyPSI1MDkuNTA4IiB5Mj0iMjY2LjAxOCIvPgorICA8bGluZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlLWRhc2hhcnJheTogNDsgc3Ryb2tlOiAjZTYwNTA1IiB4MT0iNzg4LjY3NCIgeTE9IjE3My44MzQiIHgyPSI1MDkuNTA4IiB5Mj0iMTk0LjU2NSIvPgorICA8dGV4dCBzdHlsZT0iZmlsbDogI2ZmNzY1YTt0ZXh0LWFuY2hvcjpzdGFydDtmb250LXNpemU6MTIuODtmb250LWZhbWlseTpzYW5zZXJpZjtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWwiIHg9IjMyNSIgeT0iMTAzIj4KKyAgICA8dHNwYW4geD0iMzI1IiB5PSIxMDMiPnNpbmsgY29tcG9zZTwvdHNwYW4+CisgICAgPHRzcGFuIHg9IjMyNSIgeT0iMTE5Ij5ib3VuZHMgc2VsZWN0aW9uPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8Zz4KKyAgICA8ZWxsaXBzZSBzdHlsZT0iZmlsbDogI2ZmZmZmZiIgY3g9Ii0xMi4wOTgyIiBjeT0iMzQxLjUxMiIgcng9IjguNSIgcnk9IjguNSIvPgorICAgIDxlbGxpcHNlIHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICMwMDAwMDAiIGN4PSItMTIuMDk4MiIgY3k9IjM0MS41MTIiIHJ4PSI4LjUiIHJ5PSI4LjUiLz4KKyAgICA8ZWxsaXBzZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjMDAwMDAwIiBjeD0iLTEyLjA5ODIiIGN5PSIzNDEuNTEyIiByeD0iOC41IiByeT0iOC41Ii8+CisgIDwvZz4KKyAgPGc+CisgICAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogIzAwMDAwMCIgeDE9Ii0xODQuMDk4IiB5MT0iMzQxLjgiIHgyPSItMzAuMzM0MyIgeTI9IjM0MS41MjkiLz4KKyAgICA8cG9seWdvbiBzdHlsZT0iZmlsbDogIzAwMDAwMCIgcG9pbnRzPSItMjIuODM0MywzNDEuNTE2IC0zMi44MjU0LDM0Ni41MzQgLTMwLjMzNDMsMzQxLjUyOSAtMzIuODQzMSwzMzYuNTM0ICIvPgorICAgIDxwb2x5Z29uIHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICMwMDAwMDAiIHBvaW50cz0iLTIyLjgzNDMsMzQxLjUxNiAtMzIuODI1NCwzNDYuNTM0IC0zMC4zMzQzLDM0MS41MjkgLTMyLjg0MzEsMzM2LjUzNCAiLz4KKyAgPC9nPgorICA8dGV4dCBzdHlsZT0iZmlsbDogIzAwMDAwMDt0ZXh0LWFuY2hvcjpzdGFydDtmb250LXNpemU6MTIuODtmb250LWZhbWlseTpzYW5zZXJpZjtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWwiIHg9Ii0xMzkiIHk9IjMyOSI+CisgICAgPHRzcGFuIHg9Ii0xMzkiIHk9IjMyOSI+cGFkIDEgKHNpbmspPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8Zz4KKyAgICA8cmVjdCBzdHlsZT0iZmlsbDogI2ZmZmZmZiIgeD0iNy44MDgyNCIgeT0iMjkyLjgiIHdpZHRoPSIxMTIuMDkyIiBoZWlnaHQ9IjgyLjIiLz4KKyAgICA8cmVjdCBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjYTUyYTJhIiB4PSI3LjgwODI0IiB5PSIyOTIuOCIgd2lkdGg9IjExMi4wOTIiIGhlaWdodD0iODIuMiIvPgorICA8L2c+CisgIDxnPgorICAgIDxyZWN0IHN0eWxlPSJmaWxsOiAjZmZmZmZmIiB4PSI1Mi45IiB5PSIzMTQuOCIgd2lkdGg9IjU4LjEiIGhlaWdodD0iNTAuMiIvPgorICAgIDxyZWN0IHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICMwMDAwZmYiIHg9IjUyLjkiIHk9IjMxNC44IiB3aWR0aD0iNTguMSIgaGVpZ2h0PSI1MC4yIi8+CisgIDwvZz4KKyAgPHRleHQgc3R5bGU9ImZpbGw6ICMwMDAwMDA7dGV4dC1hbmNob3I6c3RhcnQ7Zm9udC1zaXplOjEyLjg7Zm9udC1mYW1pbHk6c2Fuc2VyaWY7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsIiB4PSIzMS45IiB5PSIyNTkuOCI+CisgICAgPHRzcGFuIHg9IjMxLjkiIHk9IjI1OS44Ij48L3RzcGFuPgorICA8L3RleHQ+CisgIDxsaW5lIHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2UtZGFzaGFycmF5OiA0OyBzdHJva2U6ICNlNjA1MDUiIHgxPSIzNTguOSIgeTE9IjI1MS45IiB4Mj0iNTIuOSIgeTI9IjMxNC44Ii8+CisgIDxsaW5lIHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2UtZGFzaGFycmF5OiA0OyBzdHJva2U6ICNlNjA1MDUiIHgxPSIzNTguOSIgeTE9IjMxNiIgeDI9IjUyLjkiIHkyPSIzNjUiLz4KKyAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZS1kYXNoYXJyYXk6IDQ7IHN0cm9rZTogI2U2MDUwNSIgeDE9IjQzNCIgeTE9IjMxNiIgeDI9IjExMSIgeTI9IjM2NSIvPgorICA8bGluZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlLWRhc2hhcnJheTogNDsgc3Ryb2tlOiAjZTYwNTA1IiB4MT0iNDM0IiB5MT0iMjUxLjkiIHgyPSIxMTEiIHkyPSIzMTQuOCIvPgorICA8cmVjdCBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjMDBmZjAwIiB4PSIzNTguOSIgeT0iMjUxLjkiIHdpZHRoPSI3NS4xIiBoZWlnaHQ9IjY0LjEiLz4KKyAgPHJlY3Qgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogI2EwMjBmMCIgeD0iNDQzLjI2MiIgeT0iMjg0LjQ2NiIgd2lkdGg9IjY0LjczOCIgaGVpZ2h0PSI0OC41MzQiLz4KKyAgPGc+CisgICAgPHJlY3Qgc3R5bGU9ImZpbGw6ICNmZmZmZmYiIHg9IjY5My40MjgiIHk9IjMyNC43MzQiIHdpZHRoPSI2My41NzIiIGhlaWdodD0iNDkuMjY2Ii8+CisgICAgPHJlY3Qgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogIzhiNjkxNCIgeD0iNjkzLjQyOCIgeT0iMzI0LjczNCIgd2lkdGg9IjYzLjU3MiIgaGVpZ2h0PSI0OS4yNjYiLz4KKyAgPC9nPgorICA8bGluZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlLWRhc2hhcnJheTogNDsgc3Ryb2tlOiAjZTYwNTA1IiB4MT0iNjkzLjQyOCIgeTE9IjM3NCIgeDI9IjQ0My4yNjIiIHkyPSIzMzMiLz4KKyAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZS1kYXNoYXJyYXk6IDQ7IHN0cm9rZTogI2U2MDUwNSIgeDE9IjY5My40MjgiIHkxPSIzMjQuNzM0IiB4Mj0iNDQzLjI2MiIgeTI9IjI4NC40NjYiLz4KKyAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZS1kYXNoYXJyYXk6IDQ7IHN0cm9rZTogI2U2MDUwNSIgeDE9Ijc1NyIgeTE9IjM3NCIgeDI9IjUwOCIgeTI9IjMzMyIvPgorICA8bGluZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlLWRhc2hhcnJheTogNDsgc3Ryb2tlOiAjZTYwNTA1IiB4MT0iNzU3IiB5MT0iMzI0LjczNCIgeDI9IjUwOCIgeTI9IjI4NC40NjYiLz4KKyAgPGc+CisgICAgPGVsbGlwc2Ugc3R5bGU9ImZpbGw6ICNmZmZmZmYiIGN4PSI4MTUuNDQiIGN5PSIzNDMuOTg0IiByeD0iOC41IiByeT0iOC41Ii8+CisgICAgPGVsbGlwc2Ugc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogIzAwMDAwMCIgY3g9IjgxNS40NCIgY3k9IjM0My45ODQiIHJ4PSI4LjUiIHJ5PSI4LjUiLz4KKyAgICA8ZWxsaXBzZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjMDAwMDAwIiBjeD0iODE1LjQ0IiBjeT0iMzQzLjk4NCIgcng9IjguNSIgcnk9IjguNSIvPgorICA8L2c+CisgIDxnPgorICAgIDxsaW5lIHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICMwMDAwMDAiIHgxPSI4MjMuOTQiIHkxPSIzNDMuOTg0IiB4Mj0iOTgwLjI3NCIgeTI9IjM0NC4wMTIiLz4KKyAgICA8cG9seWdvbiBzdHlsZT0iZmlsbDogIzAwMDAwMCIgcG9pbnRzPSI5ODcuNzc0LDM0NC4wMTQgOTc3Ljc3MywzNDkuMDEyIDk4MC4yNzQsMzQ0LjAxMiA5NzcuNzc1LDMzOS4wMTIgIi8+CisgICAgPHBvbHlnb24gc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogIzAwMDAwMCIgcG9pbnRzPSI5ODcuNzc0LDM0NC4wMTQgOTc3Ljc3MywzNDkuMDEyIDk4MC4yNzQsMzQ0LjAxMiA5NzcuNzc1LDMzOS4wMTIgIi8+CisgIDwvZz4KKyAgPHRleHQgc3R5bGU9ImZpbGw6ICMwMDAwMDA7dGV4dC1hbmNob3I6c3RhcnQ7Zm9udC1zaXplOjEyLjg7Zm9udC1mYW1pbHk6c2Fuc2VyaWY7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsIiB4PSI4NDkuMjQ4IiB5PSIzMzMuOCI+CisgICAgPHRzcGFuIHg9Ijg0OS4yNDgiIHk9IjMzMy44Ij5wYWQgMyAoc291cmNlKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQgc3R5bGU9ImZpbGw6ICMwMDAwZmY7dGV4dC1hbmNob3I6c3RhcnQ7Zm9udC1zaXplOjEyLjg7Zm9udC1mYW1pbHk6c2Fuc2VyaWY7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsIiB4PSIxOTciIHk9IjkxIj4KKyAgICA8dHNwYW4geD0iMTk3IiB5PSI5MSI+c2luazwvdHNwYW4+CisgICAgPHRzcGFuIHg9IjE5NyIgeT0iMTA3Ij5jcm9wPC90c3Bhbj4KKyAgICA8dHNwYW4geD0iMTk3IiB5PSIxMjMiPnNlbGVjdGlvbjwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQgc3R5bGU9ImZpbGw6ICNhMDIwZjA7dGV4dC1hbmNob3I6c3RhcnQ7Zm9udC1zaXplOjEyLjg7Zm9udC1mYW1pbHk6c2Fuc2VyaWY7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsIiB4PSI1NTMiIHk9Ijk1Ij4KKyAgICA8dHNwYW4geD0iNTUzIiB5PSI5NSI+c291cmNlPC90c3Bhbj4KKyAgICA8dHNwYW4geD0iNTUzIiB5PSIxMTEiPmNyb3A8L3RzcGFuPgorICAgIDx0c3BhbiB4PSI1NTMiIHk9IjEyNyI+c2VsZWN0aW9uPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8Zz4KKyAgICA8bGluZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjMDAwMGZmIiB4MT0iMjExIiB5MT0iMTMyIiB4Mj0iMTY2LjIxIiB5Mj0iMTM1LjI4NyIvPgorICAgIDxwb2x5Z29uIHN0eWxlPSJmaWxsOiAjMDAwMGZmIiBwb2ludHM9IjE1OC43MywxMzUuODM2IDE2OC4zMzcsMTMwLjExOCAxNjYuMjEsMTM1LjI4NyAxNjkuMDY5LDE0MC4wOTEgIi8+CisgICAgPHBvbHlnb24gc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogIzAwMDBmZiIgcG9pbnRzPSIxNTguNzMsMTM1LjgzNiAxNjguMzM3LDEzMC4xMTggMTY2LjIxLDEzNS4yODcgMTY5LjA2OSwxNDAuMDkxICIvPgorICA8L2c+CisgIDxnPgorICAgIDxsaW5lIHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICMwMDAwZmYiIHgxPSIyMDkiIHkxPSIxMzEiIHgyPSIxMTUuNTgxIiB5Mj0iMzA2LjIwOSIvPgorICAgIDxwb2x5Z29uIHN0eWxlPSJmaWxsOiAjMDAwMGZmIiBwb2ludHM9IjExMi4wNTIsMzEyLjgyNyAxMTIuMzQ1LDMwMS42NSAxMTUuNTgxLDMwNi4yMDkgMTIxLjE2OSwzMDYuMzU1ICIvPgorICAgIDxwb2x5Z29uIHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICMwMDAwZmYiIHBvaW50cz0iMTEyLjA1MiwzMTIuODI3IDExMi4zNDUsMzAxLjY1IDExNS41ODEsMzA2LjIwOSAxMjEuMTY5LDMwNi4zNTUgIi8+CisgIDwvZz4KKyAgPGc+CisgICAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogI2EwMjBmMCIgeDE9IjU1MC40OTIiIHkxPSIxMzMuMjE0IiB4Mj0iNTE0LjkxNiIgeTI9IjE4Ni40NjkiLz4KKyAgICA8cG9seWdvbiBzdHlsZT0iZmlsbDogI2EwMjBmMCIgcG9pbnRzPSI1MTAuNzUsMTkyLjcwNiA1MTIuMTQ3LDE4MS42MTMgNTE0LjkxNiwxODYuNDY5IDUyMC40NjMsMTg3LjE2OCAiLz4KKyAgICA8cG9seWdvbiBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjYTAyMGYwIiBwb2ludHM9IjUxMC43NSwxOTIuNzA2IDUxMi4xNDcsMTgxLjYxMyA1MTQuOTE2LDE4Ni40NjkgNTIwLjQ2MywxODcuMTY4ICIvPgorICA8L2c+CisgIDxnPgorICAgIDxsaW5lIHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICNhMDIwZjAiIHgxPSI1NTAuMDcyIiB5MT0iMTMzLjc4NyIgeDI9IjUxMC42MTgiIHkyPSIyNzUuMDg5Ii8+CisgICAgPHBvbHlnb24gc3R5bGU9ImZpbGw6ICNhMDIwZjAiIHBvaW50cz0iNTA4LjYwMSwyODIuMzEyIDUwNi40NzUsMjcxLjMzNiA1MTAuNjE4LDI3NS4wODkgNTE2LjEwNiwyNzQuMDI1ICIvPgorICAgIDxwb2x5Z29uIHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICNhMDIwZjAiIHBvaW50cz0iNTA4LjYwMSwyODIuMzEyIDUwNi40NzUsMjcxLjMzNiA1MTAuNjE4LDI3NS4wODkgNTE2LjEwNiwyNzQuMDI1ICIvPgorICA8L2c+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvc3ViZGV2LWltYWdlLXByb2Nlc3Npbmctc2NhbGluZy1tdWx0aS1zb3VyY2UuZGlhIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9zdWJkZXYtaW1hZ2UtcHJvY2Vzc2luZy1zY2FsaW5nLW11bHRpLXNvdXJjZS5kaWEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNkNTBhNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvc3ViZGV2LWltYWdlLXByb2Nlc3Npbmctc2NhbGluZy1tdWx0aS1zb3VyY2UuZGlhCkBAIC0wLDAgKzEsMTE1MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxkaWE6ZGlhZ3JhbSB4bWxuczpkaWE9Imh0dHA6Ly93d3cubHlzYXRvci5saXUuc2UvfmFsbGEvZGlhLyI+CisgIDxkaWE6ZGlhZ3JhbWRhdGE+CisgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYmFja2dyb3VuZCI+CisgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2ZmZmZmZiIvPgorICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJwYWdlYnJlYWsiPgorICAgICAgPGRpYTpjb2xvciB2YWw9IiMwMDAwOTkiLz4KKyAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0icGFwZXIiPgorICAgICAgPGRpYTpjb21wb3NpdGUgdHlwZT0icGFwZXIiPgorICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIj4KKyAgICAgICAgICA8ZGlhOnN0cmluZz4jQTQjPC9kaWE6c3RyaW5nPgorICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InRtYXJnaW4iPgorICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjIuODIyMjAwMDU5ODkwNzQ3MSIvPgorICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImJtYXJnaW4iPgorICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjIuODIyMjAwMDU5ODkwNzQ3MSIvPgorICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxtYXJnaW4iPgorICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjIuODIyMjAwMDU5ODkwNzQ3MSIvPgorICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InJtYXJnaW4iPgorICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjIuODIyMjAwMDU5ODkwNzQ3MSIvPgorICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImlzX3BvcnRyYWl0Ij4KKyAgICAgICAgICA8ZGlhOmJvb2xlYW4gdmFsPSJmYWxzZSIvPgorICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InNjYWxpbmciPgorICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuNDkwMDAwMDA5NTM2NzQzMTYiLz4KKyAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJmaXR0byI+CisgICAgICAgICAgPGRpYTpib29sZWFuIHZhbD0iZmFsc2UiLz4KKyAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPC9kaWE6Y29tcG9zaXRlPgorICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJncmlkIj4KKyAgICAgIDxkaWE6Y29tcG9zaXRlIHR5cGU9ImdyaWQiPgorICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aF94Ij4KKyAgICAgICAgICA8ZGlhOnJlYWwgdmFsPSIxIi8+CisgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0id2lkdGhfeSI+CisgICAgICAgICAgPGRpYTpyZWFsIHZhbD0iMSIvPgorICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InZpc2libGVfeCI+CisgICAgICAgICAgPGRpYTppbnQgdmFsPSIxIi8+CisgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0idmlzaWJsZV95Ij4KKyAgICAgICAgICA8ZGlhOmludCB2YWw9IjEiLz4KKyAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8ZGlhOmNvbXBvc2l0ZSB0eXBlPSJjb2xvciIvPgorICAgICAgPC9kaWE6Y29tcG9zaXRlPgorICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb2xvciI+CisgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2Q4ZTVlNSIvPgorICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJndWlkZXMiPgorICAgICAgPGRpYTpjb21wb3NpdGUgdHlwZT0iZ3VpZGVzIj4KKyAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iaGd1aWRlcyIvPgorICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ2Z3VpZGVzIi8+CisgICAgICA8L2RpYTpjb21wb3NpdGU+CisgICAgPC9kaWE6YXR0cmlidXRlPgorICA8L2RpYTpkaWFncmFtZGF0YT4KKyAgPGRpYTpsYXllciBuYW1lPSJCYWNrZ3JvdW5kIiB2aXNpYmxlPSJ0cnVlIiBhY3RpdmU9InRydWUiPgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gQm94IiB2ZXJzaW9uPSIwIiBpZD0iTzAiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSItMC40LDYuNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSItMC40NSw2LjQ1OzM5Ljk1LDIyLjkiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1fY29ybmVyIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9Ii0wLjQsNi41Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iNDAuMjk5OTk5OTk5OTk5OTk3Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX2hlaWdodCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjE2LjM0OTk5OTk5OTk5OTk5OCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC4xMDAwMDAwMDE0OTAxMTYxMiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic2hvd19iYWNrZ3JvdW5kIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0iZmFsc2UiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBCb3giIHZlcnNpb249IjAiIGlkPSJPMSI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjAuMjI1LDkuNDUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iMC4xNzUsOS40OzguMjI1LDE0LjciLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1fY29ybmVyIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjAuMjI1LDkuNDUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1fd2lkdGgiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSI3Ljk0OTk5OTk5OTk5OTk5NzUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1faGVpZ2h0Ij4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iNS4xOTk5OTk5OTk5OTk5OTc1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJfd2lkdGgiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjEwMDAwMDAwMTQ5MDExNjEyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJfY29sb3IiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2E1MmEyYSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic2hvd19iYWNrZ3JvdW5kIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0idHJ1ZSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIEJveCIgdmVyc2lvbj0iMCIgaWQ9Ik8yIj4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMi40NzUsMTAuMiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIyLjQyNSwxMC4xNTs3LjIyNSwxNC4xIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX2Nvcm5lciI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIyLjQ3NSwxMC4yIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iNC42OTk5OTk5OTk5OTk5OTc1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX2hlaWdodCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjMuODQ5OTk5OTk5OTk5OTk3OSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC4xMDAwMDAwMDE0OTAxMTYxMiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyX2NvbG9yIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiMwMDAwZmYiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InNob3dfYmFja2dyb3VuZCI+CisgICAgICAgIDxkaWE6Ym9vbGVhbiB2YWw9InRydWUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBUZXh0IiB2ZXJzaW9uPSIxIiBpZD0iTzMiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzLDExLjIiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iMywxMC42MDU7NS44Nzc1LDEyLjk1MjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InRleHQiPgorICAgICAgICA8ZGlhOmNvbXBvc2l0ZSB0eXBlPSJ0ZXh0Ij4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJzdHJpbmciPgorICAgICAgICAgICAgPGRpYTpzdHJpbmc+I3NpbmsKK2Nyb3AKK3NlbGVjdGlvbiM8L2RpYTpzdHJpbmc+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZvbnQiPgorICAgICAgICAgICAgPGRpYTpmb250IGZhbWlseT0ic2FucyIgc3R5bGU9IjAiIG5hbWU9IkhlbHZldGljYSIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJoZWlnaHQiPgorICAgICAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC44MDAwMDAwMDAwMDAwMDAwNCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJwb3MiPgorICAgICAgICAgICAgPGRpYTpwb2ludCB2YWw9IjMsMTEuMiIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb2xvciI+CisgICAgICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iIzAwMDBmZiIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbm1lbnQiPgorICAgICAgICAgICAgPGRpYTplbnVtIHZhbD0iMCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgPC9kaWE6Y29tcG9zaXRlPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KKyAgICAgICAgPGRpYTplbnVtIHZhbD0iMyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIFRleHQiIHZlcnNpb249IjEiIGlkPSJPNCI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjEuNDc1LDcuOSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIxLjQ3NSw3LjMwNTsxLjQ3NSw4LjA1MjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InRleHQiPgorICAgICAgICA8ZGlhOmNvbXBvc2l0ZSB0eXBlPSJ0ZXh0Ij4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJzdHJpbmciPgorICAgICAgICAgICAgPGRpYTpzdHJpbmc+IyM8L2RpYTpzdHJpbmc+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZvbnQiPgorICAgICAgICAgICAgPGRpYTpmb250IGZhbWlseT0ic2FucyIgc3R5bGU9IjAiIG5hbWU9IkhlbHZldGljYSIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJoZWlnaHQiPgorICAgICAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC44MDAwMDAwMDAwMDAwMDAwNCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJwb3MiPgorICAgICAgICAgICAgPGRpYTpwb2ludCB2YWw9IjEuNDc1LDcuOSIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb2xvciI+CisgICAgICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iIzAwMDAwMCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJhbGlnbm1lbnQiPgorICAgICAgICAgICAgPGRpYTplbnVtIHZhbD0iMCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgPC9kaWE6Y29tcG9zaXRlPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0idmFsaWduIj4KKyAgICAgICAgPGRpYTplbnVtIHZhbD0iMyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIFRleHQiIHZlcnNpb249IjEiIGlkPSJPNSI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjAuNDI2OTE4LDcuODk1NjkiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iMC40MjY5MTgsNy4zMDA2OTszLjkwOTQyLDguODQ4MTkiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InRleHQiPgorICAgICAgICA8ZGlhOmNvbXBvc2l0ZSB0eXBlPSJ0ZXh0Ij4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJzdHJpbmciPgorICAgICAgICAgICAgPGRpYTpzdHJpbmc+I3NpbmsgbWVkaWEKK2J1cyBmb3JtYXQjPC9kaWE6c3RyaW5nPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJmb250Ij4KKyAgICAgICAgICAgIDxkaWE6Zm9udCBmYW1pbHk9InNhbnMiIHN0eWxlPSIwIiBuYW1lPSJIZWx2ZXRpY2EiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0Ij4KKyAgICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuODAwMDAwMDAwMDAwMDAwMDQiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0icG9zIj4KKyAgICAgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIwLjQyNjkxOCw3Ljg5NTY5Ii8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbG9yIj4KKyAgICAgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjYTUyYTJhIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImFsaWdubWVudCI+CisgICAgICAgICAgICA8ZGlhOmVudW0gdmFsPSIwIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8L2RpYTpjb21wb3NpdGU+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gQm94IiB2ZXJzaW9uPSIwIiBpZD0iTzYiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIxNi42ODIyLDkuMjgyNTEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iMTYuNjMyMiw5LjIzMjUxOzI0Ljk5MjIsMTcuOTU2NCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9jb3JuZXIiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMTYuNjgyMiw5LjI4MjUxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iOC4yNjAwMjI4Mzk4ODYxMjk3Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX2hlaWdodCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjguNjIzODkwMDYxNzk1NzE2NCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC4xMDAwMDAwMDE0OTAxMTYxMiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyX2NvbG9yIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiMwMGZmMDAiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InNob3dfYmFja2dyb3VuZCI+CisgICAgICAgIDxkaWE6Ym9vbGVhbiB2YWw9InRydWUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBMaW5lIiB2ZXJzaW9uPSIwIiBpZD0iTzciPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIxNi42ODIyLDE3LjkwNjQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iMi40MTM2NSwxMy45ODg2OzE2Ljc0MzYsMTcuOTY3OCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29ubl9lbmRwb2ludHMiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMTYuNjgyMiwxNy45MDY0Ii8+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIyLjQ3NSwxNC4wNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibnVtY3AiPgorICAgICAgICA8ZGlhOmludCB2YWw9IjEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfY29sb3IiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2U2MDUwNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9zdHlsZSI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6Y29ubmVjdGlvbnM+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjAiIHRvPSJPNiIgY29ubmVjdGlvbj0iNSIvPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzIiIGNvbm5lY3Rpb249IjUiLz4KKyAgICAgIDwvZGlhOmNvbm5lY3Rpb25zPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIExpbmUiIHZlcnNpb249IjAiIGlkPSJPOCI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjE2LjY4MjIsOS4yODI1MSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIyLjQyMTg4LDkuMjI5Mzk7MTYuNzM1MywxMC4yNTMxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb25uX2VuZHBvaW50cyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIxNi42ODIyLDkuMjgyNTEiLz4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjIuNDc1LDEwLjIiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im51bWNwIj4KKyAgICAgICAgPGRpYTppbnQgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX2NvbG9yIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiNlNjA1MDUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfc3R5bGUiPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSI0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmNvbm5lY3Rpb25zPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIwIiB0bz0iTzYiIGNvbm5lY3Rpb249IjAiLz4KKyAgICAgICAgPGRpYTpjb25uZWN0aW9uIGhhbmRsZT0iMSIgdG89Ik8yIiBjb25uZWN0aW9uPSIwIi8+CisgICAgICA8L2RpYTpjb25uZWN0aW9ucz4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBMaW5lIiB2ZXJzaW9uPSIwIiBpZD0iTzkiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIyNC45NDIyLDE3LjkwNjQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iNy4xMTU1MywxMy45OTA1OzI1LjAwMTcsMTcuOTY1OSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29ubl9lbmRwb2ludHMiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjQuOTQyMiwxNy45MDY0Ii8+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSI3LjE3NSwxNC4wNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibnVtY3AiPgorICAgICAgICA8ZGlhOmludCB2YWw9IjEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfY29sb3IiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2U2MDUwNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9zdHlsZSI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6Y29ubmVjdGlvbnM+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjAiIHRvPSJPNiIgY29ubmVjdGlvbj0iNyIvPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzIiIGNvbm5lY3Rpb249IjciLz4KKyAgICAgIDwvZGlhOmNvbm5lY3Rpb25zPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIExpbmUiIHZlcnNpb249IjAiIGlkPSJPMTAiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIyNC45NDIyLDkuMjgyNTEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iNy4xMjI0OSw5LjIzOzI0Ljk5NDcsMTAuMjUyNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29ubl9lbmRwb2ludHMiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjQuOTQyMiw5LjI4MjUxIi8+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSI3LjE3NSwxMC4yIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJudW1jcCI+CisgICAgICAgIDxkaWE6aW50IHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9jb2xvciI+CisgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjZTYwNTA1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX3N0eWxlIj4KKyAgICAgICAgPGRpYTplbnVtIHZhbD0iNCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTpjb25uZWN0aW9ucz4KKyAgICAgICAgPGRpYTpjb25uZWN0aW9uIGhhbmRsZT0iMCIgdG89Ik82IiBjb25uZWN0aW9uPSIyIi8+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjEiIHRvPSJPMiIgY29ubmVjdGlvbj0iMiIvPgorICAgICAgPC9kaWE6Y29ubmVjdGlvbnM+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gVGV4dCIgdmVyc2lvbj0iMSIgaWQ9Ik8xMSI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjE2LjczNTIsNy40NzIwOSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIxNi43MzUyLDYuODc3MDk7MjIuNTYwMiw4LjQyNDU5Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0Ij4KKyAgICAgICAgPGRpYTpjb21wb3NpdGUgdHlwZT0idGV4dCI+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic3RyaW5nIj4KKyAgICAgICAgICAgIDxkaWE6c3RyaW5nPiNzaW5rIGNvbXBvc2UKK3NlbGVjdGlvbiAoc2NhbGluZykjPC9kaWE6c3RyaW5nPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJmb250Ij4KKyAgICAgICAgICAgIDxkaWE6Zm9udCBmYW1pbHk9InNhbnMiIHN0eWxlPSIwIiBuYW1lPSJIZWx2ZXRpY2EiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0Ij4KKyAgICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuODAwMDAwMDAwMDAwMDAwMDQiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0icG9zIj4KKyAgICAgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIxNi43MzUyLDcuNDcyMDkiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29sb3IiPgorICAgICAgICAgICAgPGRpYTpjb2xvciB2YWw9IiMwMGZmMDAiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYWxpZ25tZW50Ij4KKyAgICAgICAgICAgIDxkaWE6ZW51bSB2YWw9IjAiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDwvZGlhOmNvbXBvc2l0ZT4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjMiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBCb3giIHZlcnNpb249IjAiIGlkPSJPMTIiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIxOS4xMTYxLDkuOTc4MjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iMTkuMDY2MSw5LjkyODI1OzI0LjE3NTQsMTMuNjAwOSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9jb3JuZXIiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMTkuMTE2MSw5Ljk3ODI1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iNS4wMDkzMDg0NjI1NTQzNzYiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1faGVpZ2h0Ij4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMy41NzI2MTU1OTcwNTk4MDc3Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJfd2lkdGgiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjEwMDAwMDAwMTQ5MDExNjEyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJfY29sb3IiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2EwMjBmMCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic2hvd19iYWNrZ3JvdW5kIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0idHJ1ZSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIFRleHQiIHZlcnNpb249IjEiIGlkPSJPMTMiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIyNy4xNjYxLDcuNDcyMDkiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iMjcuMTY2MSw2Ljg3NzA5OzMwLjA0MzYsOS4yMjQ1OSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0idGV4dCI+CisgICAgICAgIDxkaWE6Y29tcG9zaXRlIHR5cGU9InRleHQiPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InN0cmluZyI+CisgICAgICAgICAgICA8ZGlhOnN0cmluZz4jc291cmNlCitjcm9wCitzZWxlY3Rpb24jPC9kaWE6c3RyaW5nPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJmb250Ij4KKyAgICAgICAgICAgIDxkaWE6Zm9udCBmYW1pbHk9InNhbnMiIHN0eWxlPSIwIiBuYW1lPSJIZWx2ZXRpY2EiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0Ij4KKyAgICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuODAwMDAwMDAwMDAwMDAwMDQiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0icG9zIj4KKyAgICAgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIyNy4xNjYxLDcuNDcyMDkiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29sb3IiPgorICAgICAgICAgICAgPGRpYTpjb2xvciB2YWw9IiNhMDIwZjAiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYWxpZ25tZW50Ij4KKyAgICAgICAgICAgIDxkaWE6ZW51bSB2YWw9IjAiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgIDwvZGlhOmNvbXBvc2l0ZT4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InZhbGlnbiI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjMiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBUZXh0IiB2ZXJzaW9uPSIxIiBpZD0iTzE0Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMzQuNTc1LDcuODU2NCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIzNC41NzUsNy4yNjE0OzM4Ljg5NzUsOC44MDg5Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0Ij4KKyAgICAgICAgPGRpYTpjb21wb3NpdGUgdHlwZT0idGV4dCI+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic3RyaW5nIj4KKyAgICAgICAgICAgIDxkaWE6c3RyaW5nPiNzb3VyY2UgbWVkaWEKK2J1cyBmb3JtYXQjPC9kaWE6c3RyaW5nPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJmb250Ij4KKyAgICAgICAgICAgIDxkaWE6Zm9udCBmYW1pbHk9InNhbnMiIHN0eWxlPSIwIiBuYW1lPSJIZWx2ZXRpY2EiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0Ij4KKyAgICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuODAwMDAwMDAwMDAwMDAwMDQiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0icG9zIj4KKyAgICAgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzNC41NzUsNy44NTY0Ii8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbG9yIj4KKyAgICAgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjOGI2OTE0Ii8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImFsaWdubWVudCI+CisgICAgICAgICAgICA8ZGlhOmVudW0gdmFsPSIwIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8L2RpYTpjb21wb3NpdGU+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gQm94IiB2ZXJzaW9uPSIwIiBpZD0iTzE1Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMzQuNTI0NCwxMS4yOTE3Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjM0LjQ3NDQsMTEuMjQxNzszOS41ODM3LDE0LjkxNDMiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1fY29ybmVyIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjM0LjUyNDQsMTEuMjkxNyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjUuMDA5MzA4NDYyNTU0Mzc2Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX2hlaWdodCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjMuNTcyNjE1NTk3MDU5ODA3NyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC4xMDAwMDAwMDE0OTAxMTYxMiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyX2NvbG9yIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiM4YjY5MTQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InNob3dfYmFja2dyb3VuZCI+CisgICAgICAgIDxkaWE6Ym9vbGVhbiB2YWw9InRydWUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBMaW5lIiB2ZXJzaW9uPSIwIiBpZD0iTzE2Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMzQuNTI0NCwxNC44NjQzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjE5LjA2MiwxMy40OTY4OzM0LjU3ODUsMTQuOTE4NCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29ubl9lbmRwb2ludHMiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMzQuNTI0NCwxNC44NjQzIi8+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIxOS4xMTYxLDEzLjU1MDkiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im51bWNwIj4KKyAgICAgICAgPGRpYTppbnQgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX2NvbG9yIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiNlNjA1MDUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfc3R5bGUiPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSI0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmNvbm5lY3Rpb25zPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIwIiB0bz0iTzE1IiBjb25uZWN0aW9uPSI1Ii8+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjEiIHRvPSJPMTIiIGNvbm5lY3Rpb249IjUiLz4KKyAgICAgIDwvZGlhOmNvbm5lY3Rpb25zPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIExpbmUiIHZlcnNpb249IjAiIGlkPSJPMTciPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzNC41MjQ0LDExLjI5MTciLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iMTkuMDYyLDkuOTI0MTg7MzQuNTc4NSwxMS4zNDU4Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb25uX2VuZHBvaW50cyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzNC41MjQ0LDExLjI5MTciLz4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjE5LjExNjEsOS45NzgyNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibnVtY3AiPgorICAgICAgICA8ZGlhOmludCB2YWw9IjEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfY29sb3IiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2U2MDUwNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9zdHlsZSI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6Y29ubmVjdGlvbnM+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjAiIHRvPSJPMTUiIGNvbm5lY3Rpb249IjAiLz4KKyAgICAgICAgPGRpYTpjb25uZWN0aW9uIGhhbmRsZT0iMSIgdG89Ik8xMiIgY29ubmVjdGlvbj0iMCIvPgorICAgICAgPC9kaWE6Y29ubmVjdGlvbnM+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gTGluZSIgdmVyc2lvbj0iMCIgaWQ9Ik8xOCI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjM5LjUzMzcsMTQuODY0MyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIyNC4wNzEzLDEzLjQ5Njg7MzkuNTg3OCwxNC45MTg0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb25uX2VuZHBvaW50cyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzOS41MzM3LDE0Ljg2NDMiLz4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjI0LjEyNTQsMTMuNTUwOSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibnVtY3AiPgorICAgICAgICA8ZGlhOmludCB2YWw9IjEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfY29sb3IiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2U2MDUwNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9zdHlsZSI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6Y29ubmVjdGlvbnM+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjAiIHRvPSJPMTUiIGNvbm5lY3Rpb249IjciLz4KKyAgICAgICAgPGRpYTpjb25uZWN0aW9uIGhhbmRsZT0iMSIgdG89Ik8xMiIgY29ubmVjdGlvbj0iNyIvPgorICAgICAgPC9kaWE6Y29ubmVjdGlvbnM+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gTGluZSIgdmVyc2lvbj0iMCIgaWQ9Ik8xOSI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjM5LjUzMzcsMTEuMjkxNyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIyNC4wNzEzLDkuOTI0MTg7MzkuNTg3OCwxMS4zNDU4Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJjb25uX2VuZHBvaW50cyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzOS41MzM3LDExLjI5MTciLz4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjI0LjEyNTQsOS45NzgyNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibnVtY3AiPgorICAgICAgICA8ZGlhOmludCB2YWw9IjEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImxpbmVfY29sb3IiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2U2MDUwNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9zdHlsZSI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6Y29ubmVjdGlvbnM+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjAiIHRvPSJPMTUiIGNvbm5lY3Rpb249IjIiLz4KKyAgICAgICAgPGRpYTpjb25uZWN0aW9uIGhhbmRsZT0iMSIgdG89Ik8xMiIgY29ubmVjdGlvbj0iMiIvPgorICAgICAgPC9kaWE6Y29ubmVjdGlvbnM+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9Ikdlb21ldHJpYyAtIFBlcmZlY3QgQ2lyY2xlIiB2ZXJzaW9uPSIxIiBpZD0iTzIwIj4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMzkuOTgsMTIuMDc0MiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIzOS45MywxMi4wMjQyOzQwLjg4LDEyLjk3NDIiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im1ldGEiPgorICAgICAgICA8ZGlhOmNvbXBvc2l0ZSB0eXBlPSJkaWN0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX2Nvcm5lciI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzOS45OCwxMi4wNzQyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC44NDk5OTk5OTk5OTk5OTc4NyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9oZWlnaHQiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjg0OTk5OTk5OTk5OTk5Nzg3Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC4xMDAwMDAwMDAwMDAwMDAwMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9jb2xvdXIiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iIzAwMDAwMCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZmlsbF9jb2xvdXIiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2ZmZmZmZiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic2hvd19iYWNrZ3JvdW5kIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0idHJ1ZSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9zdHlsZSI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjAiLz4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZmxpcF9ob3Jpem9udGFsIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0iZmFsc2UiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZsaXBfdmVydGljYWwiPgorICAgICAgICA8ZGlhOmJvb2xlYW4gdmFsPSJmYWxzZSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic3Vic2NhbGUiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gTGluZSIgdmVyc2lvbj0iMCIgaWQ9Ik8yMSI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjQwLjgzLDEyLjQ5OTIiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iNDAuNzgsMTIuMTM4ODs0OS4yNDUzLDEyLjg2MjQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbm5fZW5kcG9pbnRzIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjQwLjgzLDEyLjQ5OTIiLz4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjQ5LjEzMzUsMTIuNTAwNyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibnVtY3AiPgorICAgICAgICA8ZGlhOmludCB2YWw9IjEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVuZF9hcnJvdyI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjIyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbmRfYXJyb3dfbGVuZ3RoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC41Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbmRfYXJyb3dfd2lkdGgiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6Y29ubmVjdGlvbnM+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjAiIHRvPSJPMjAiIGNvbm5lY3Rpb249IjMiLz4KKyAgICAgIDwvZGlhOmNvbm5lY3Rpb25zPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIFRleHQiIHZlcnNpb249IjEiIGlkPSJPMjIiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSI0Mi4wOTU0LDExLjk5Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjQyLjA5NTQsMTEuMzk1OzQ2Ljc0MDQsMTIuMTQyNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0idGV4dCI+CisgICAgICAgIDxkaWE6Y29tcG9zaXRlIHR5cGU9InRleHQiPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InN0cmluZyI+CisgICAgICAgICAgICA8ZGlhOnN0cmluZz4jcGFkIDEgKHNvdXJjZSkjPC9kaWE6c3RyaW5nPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJmb250Ij4KKyAgICAgICAgICAgIDxkaWE6Zm9udCBmYW1pbHk9InNhbnMiIHN0eWxlPSIwIiBuYW1lPSJIZWx2ZXRpY2EiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0Ij4KKyAgICAgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuODAwMDAwMDAwMDAwMDAwMDQiLz4KKyAgICAgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0icG9zIj4KKyAgICAgICAgICAgIDxkaWE6cG9pbnQgdmFsPSI0Mi4wOTU0LDExLjk5Ii8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbG9yIj4KKyAgICAgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjMDAwMDAwIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImFsaWdubWVudCI+CisgICAgICAgICAgICA8ZGlhOmVudW0gdmFsPSIwIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8L2RpYTpjb21wb3NpdGU+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9Ikdlb21ldHJpYyAtIFBlcmZlY3QgQ2lyY2xlIiB2ZXJzaW9uPSIxIiBpZD0iTzIzIj4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iLTEuNDQ0OTEsMTEuNjUwNiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSItMS40OTQ5MSwxMS42MDA2Oy0wLjU0NDkxLDEyLjU1MDYiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im1ldGEiPgorICAgICAgICA8ZGlhOmNvbXBvc2l0ZSB0eXBlPSJkaWN0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX2Nvcm5lciI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSItMS40NDQ5MSwxMS42NTA2Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC44NDk5OTk5OTk5OTk5OTc4NyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9oZWlnaHQiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjg0OTk5OTk5OTk5OTk5Nzg3Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC4xMDAwMDAwMDAwMDAwMDAwMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9jb2xvdXIiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iIzAwMDAwMCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZmlsbF9jb2xvdXIiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2ZmZmZmZiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic2hvd19iYWNrZ3JvdW5kIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0idHJ1ZSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9zdHlsZSI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjAiLz4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZmxpcF9ob3Jpem9udGFsIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0iZmFsc2UiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZsaXBfdmVydGljYWwiPgorICAgICAgICA8ZGlhOmJvb2xlYW4gdmFsPSJmYWxzZSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic3Vic2NhbGUiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gTGluZSIgdmVyc2lvbj0iMCIgaWQ9Ik8yNCI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9Ii05LjYxOTkxLDEyLjA5Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9Ii05LjY3LDExLjcxNDk7LTEuMzMzMTEsMTIuNDM4NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29ubl9lbmRwb2ludHMiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iLTkuNjE5OTEsMTIuMDkiLz4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9Ii0xLjQ0NDkxLDEyLjA3NTYiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im51bWNwIj4KKyAgICAgICAgPGRpYTppbnQgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbmRfYXJyb3ciPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIyMiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZW5kX2Fycm93X2xlbmd0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZW5kX2Fycm93X3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC41Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmNvbm5lY3Rpb25zPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzIzIiBjb25uZWN0aW9uPSIyIi8+CisgICAgICA8L2RpYTpjb25uZWN0aW9ucz4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBUZXh0IiB2ZXJzaW9uPSIxIiBpZD0iTzI1Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iLTcuMzkyOTEsMTEuNDkiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9iYiI+CisgICAgICAgIDxkaWE6cmVjdGFuZ2xlIHZhbD0iLTcuMzkyOTEsMTAuODk1Oy0zLjU4NzkxLDExLjY0MjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InRleHQiPgorICAgICAgICA8ZGlhOmNvbXBvc2l0ZSB0eXBlPSJ0ZXh0Ij4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJzdHJpbmciPgorICAgICAgICAgICAgPGRpYTpzdHJpbmc+I3BhZCAwIChzaW5rKSM8L2RpYTpzdHJpbmc+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZvbnQiPgorICAgICAgICAgICAgPGRpYTpmb250IGZhbWlseT0ic2FucyIgc3R5bGU9IjAiIG5hbWU9IkhlbHZldGljYSIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJoZWlnaHQiPgorICAgICAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC44MDAwMDAwMDAwMDAwMDAwNCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJwb3MiPgorICAgICAgICAgICAgPGRpYTpwb2ludCB2YWw9Ii03LjM5MjkxLDExLjQ5Ii8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbG9yIj4KKyAgICAgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjMDAwMDAwIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImFsaWdubWVudCI+CisgICAgICAgICAgICA8ZGlhOmVudW0gdmFsPSIwIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8L2RpYTpjb21wb3NpdGU+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gQm94IiB2ZXJzaW9uPSIwIiBpZD0iTzI2Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMTkuNDkxMSwxMy44MzMzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjE5LjQ0MTEsMTMuNzgzMzsyNC41NTA0LDE3LjQ1NTkiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1fY29ybmVyIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjE5LjQ5MTEsMTMuODMzMyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjUuMDA5MzA4NDYyNTU0Mzc2Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX2hlaWdodCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjMuNTcyNjE1NTk3MDU5ODA3NyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC4xMDAwMDAwMDE0OTAxMTYxMiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyX2NvbG9yIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiNhMDIwZjAiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InNob3dfYmFja2dyb3VuZCI+CisgICAgICAgIDxkaWE6Ym9vbGVhbiB2YWw9ImZhbHNlIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gQm94IiB2ZXJzaW9uPSIwIiBpZD0iTzI3Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMzQuNDk5NCwxNy4yOTY3Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjM0LjQ0OTQsMTcuMjQ2NzszOS41NTg3LDIwLjkxOTMiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1fY29ybmVyIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjM0LjQ5OTQsMTcuMjk2NyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV93aWR0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjUuMDA5MzA4NDYyNTU0Mzc2Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX2hlaWdodCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjMuNTcyNjE1NTk3MDU5ODA3NyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC4xMDAwMDAwMDE0OTAxMTYxMiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyX2NvbG9yIj4KKyAgICAgICAgPGRpYTpjb2xvciB2YWw9IiM4YjY5MTQiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9InNob3dfYmFja2dyb3VuZCI+CisgICAgICAgIDxkaWE6Ym9vbGVhbiB2YWw9InRydWUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBMaW5lIiB2ZXJzaW9uPSIwIiBpZD0iTzI4Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMzQuNDk5NCwyMC44NjkzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjE5LjQzMTEsMTcuMzQ1OTszNC41NTk0LDIwLjkyOTMiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbm5fZW5kcG9pbnRzIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjM0LjQ5OTQsMjAuODY5MyIvPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMTkuNDkxMSwxNy40MDU5Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJudW1jcCI+CisgICAgICAgIDxkaWE6aW50IHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9jb2xvciI+CisgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjZTYwNTA1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX3N0eWxlIj4KKyAgICAgICAgPGRpYTplbnVtIHZhbD0iNCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTpjb25uZWN0aW9ucz4KKyAgICAgICAgPGRpYTpjb25uZWN0aW9uIGhhbmRsZT0iMCIgdG89Ik8yNyIgY29ubmVjdGlvbj0iNSIvPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzI2IiBjb25uZWN0aW9uPSI1Ii8+CisgICAgICA8L2RpYTpjb25uZWN0aW9ucz4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBMaW5lIiB2ZXJzaW9uPSIwIiBpZD0iTzI5Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMzQuNDk5NCwxNy4yOTY3Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjE5LjQzMTEsMTMuNzczMzszNC41NTk0LDE3LjM1NjciLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbm5fZW5kcG9pbnRzIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjM0LjQ5OTQsMTcuMjk2NyIvPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMTkuNDkxMSwxMy44MzMzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJudW1jcCI+CisgICAgICAgIDxkaWE6aW50IHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9jb2xvciI+CisgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjZTYwNTA1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX3N0eWxlIj4KKyAgICAgICAgPGRpYTplbnVtIHZhbD0iNCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTpjb25uZWN0aW9ucz4KKyAgICAgICAgPGRpYTpjb25uZWN0aW9uIGhhbmRsZT0iMCIgdG89Ik8yNyIgY29ubmVjdGlvbj0iMCIvPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzI2IiBjb25uZWN0aW9uPSIwIi8+CisgICAgICA8L2RpYTpjb25uZWN0aW9ucz4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBMaW5lIiB2ZXJzaW9uPSIwIiBpZD0iTzMwIj4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMzkuNTA4NywyMC44NjkzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjI0LjQ0MDQsMTcuMzQ1OTszOS41Njg3LDIwLjkyOTMiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbm5fZW5kcG9pbnRzIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjM5LjUwODcsMjAuODY5MyIvPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjQuNTAwNCwxNy40MDU5Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJudW1jcCI+CisgICAgICAgIDxkaWE6aW50IHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9jb2xvciI+CisgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjZTYwNTA1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX3N0eWxlIj4KKyAgICAgICAgPGRpYTplbnVtIHZhbD0iNCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTpjb25uZWN0aW9ucz4KKyAgICAgICAgPGRpYTpjb25uZWN0aW9uIGhhbmRsZT0iMCIgdG89Ik8yNyIgY29ubmVjdGlvbj0iNyIvPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzI2IiBjb25uZWN0aW9uPSI3Ii8+CisgICAgICA8L2RpYTpjb25uZWN0aW9ucz4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBMaW5lIiB2ZXJzaW9uPSIwIiBpZD0iTzMxIj4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMzkuNTA4NywxNy4yOTY3Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjI0LjQ0MDQsMTMuNzczMzszOS41Njg3LDE3LjM1NjciLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbm5fZW5kcG9pbnRzIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjM5LjUwODcsMTcuMjk2NyIvPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjQuNTAwNCwxMy44MzMzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJudW1jcCI+CisgICAgICAgIDxkaWE6aW50IHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9jb2xvciI+CisgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjZTYwNTA1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX3N0eWxlIj4KKyAgICAgICAgPGRpYTplbnVtIHZhbD0iNCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTpjb25uZWN0aW9ucz4KKyAgICAgICAgPGRpYTpjb25uZWN0aW9uIGhhbmRsZT0iMCIgdG89Ik8yNyIgY29ubmVjdGlvbj0iMiIvPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzI2IiBjb25uZWN0aW9uPSIyIi8+CisgICAgICA8L2RpYTpjb25uZWN0aW9ucz4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iR2VvbWV0cmljIC0gUGVyZmVjdCBDaXJjbGUiIHZlcnNpb249IjEiIGlkPSJPMzIiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSIzOS44NTUsMTguNzc5MiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIzOS44MDUsMTguNzI5Mjs0MC43NTUsMTkuNjc5MiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibWV0YSI+CisgICAgICAgIDxkaWE6Y29tcG9zaXRlIHR5cGU9ImRpY3QiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVsZW1fY29ybmVyIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjM5Ljg1NSwxOC43NzkyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbGVtX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC44NDk5OTk5OTk5OTk5OTc4NyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZWxlbV9oZWlnaHQiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjg0OTk5OTk5OTk5OTk5Nzg3Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJsaW5lX3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC4xMDAwMDAwMDAwMDAwMDAwMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9jb2xvdXIiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iIzAwMDAwMCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZmlsbF9jb2xvdXIiPgorICAgICAgICA8ZGlhOmNvbG9yIHZhbD0iI2ZmZmZmZiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic2hvd19iYWNrZ3JvdW5kIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0idHJ1ZSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9zdHlsZSI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjAiLz4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZmxpcF9ob3Jpem9udGFsIj4KKyAgICAgICAgPGRpYTpib29sZWFuIHZhbD0iZmFsc2UiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZsaXBfdmVydGljYWwiPgorICAgICAgICA8ZGlhOmJvb2xlYW4gdmFsPSJmYWxzZSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic3Vic2NhbGUiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIxIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gTGluZSIgdmVyc2lvbj0iMCIgaWQ9Ik8zMyI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjQwLjcwNSwxOS4yMDQyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjQwLjY1NSwxOC44NDM4OzQ5LjEyMDMsMTkuNTY3NCIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iY29ubl9lbmRwb2ludHMiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iNDAuNzA1LDE5LjIwNDIiLz4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjQ5LjAwODUsMTkuMjA1NyIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibnVtY3AiPgorICAgICAgICA8ZGlhOmludCB2YWw9IjEiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImVuZF9hcnJvdyI+CisgICAgICAgIDxkaWE6ZW51bSB2YWw9IjIyIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbmRfYXJyb3dfbGVuZ3RoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC41Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbmRfYXJyb3dfd2lkdGgiPgorICAgICAgICA8ZGlhOnJlYWwgdmFsPSIwLjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6Y29ubmVjdGlvbnM+CisgICAgICAgIDxkaWE6Y29ubmVjdGlvbiBoYW5kbGU9IjAiIHRvPSJPMzIiIGNvbm5lY3Rpb249IjMiLz4KKyAgICAgIDwvZGlhOmNvbm5lY3Rpb25zPgorICAgIDwvZGlhOm9iamVjdD4KKyAgICA8ZGlhOm9iamVjdCB0eXBlPSJTdGFuZGFyZCAtIFRleHQiIHZlcnNpb249IjEiIGlkPSJPMzQiPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX3BvcyI+CisgICAgICAgIDxkaWE6cG9pbnQgdmFsPSI0MS45NzA0LDE4LjY5NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSI0MS45NzA0LDE4LjE7NDYuNjE1NCwxOC44NDc1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0Ij4KKyAgICAgICAgPGRpYTpjb21wb3NpdGUgdHlwZT0idGV4dCI+CisgICAgICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ic3RyaW5nIj4KKyAgICAgICAgICAgIDxkaWE6c3RyaW5nPiNwYWQgMiAoc291cmNlKSM8L2RpYTpzdHJpbmc+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImZvbnQiPgorICAgICAgICAgICAgPGRpYTpmb250IGZhbWlseT0ic2FucyIgc3R5bGU9IjAiIG5hbWU9IkhlbHZldGljYSIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJoZWlnaHQiPgorICAgICAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC44MDAwMDAwMDAwMDAwMDAwNCIvPgorICAgICAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJwb3MiPgorICAgICAgICAgICAgPGRpYTpwb2ludCB2YWw9IjQxLjk3MDQsMTguNjk1Ii8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbG9yIj4KKyAgICAgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjMDAwMDAwIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImFsaWdubWVudCI+CisgICAgICAgICAgICA8ZGlhOmVudW0gdmFsPSIwIi8+CisgICAgICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgICA8L2RpYTpjb21wb3NpdGU+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgPC9kaWE6b2JqZWN0PgorICAgIDxkaWE6b2JqZWN0IHR5cGU9IlN0YW5kYXJkIC0gTGluZSIgdmVyc2lvbj0iMCIgaWQ9Ik8zNSI+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfcG9zIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjI3LjMsOS41NSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ib2JqX2JiIj4KKyAgICAgICAgPGRpYTpyZWN0YW5nbGUgdmFsPSIyNC4wMTQ2LDkuNDkzNzY7MjcuMzU2MiwxMC4yNTUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbm5fZW5kcG9pbnRzIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjI3LjMsOS41NSIvPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjQuMTI1NCw5Ljk3ODI1Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJudW1jcCI+CisgICAgICAgIDxkaWE6aW50IHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9jb2xvciI+CisgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjYTAyMGYwIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbmRfYXJyb3ciPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIyMiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZW5kX2Fycm93X2xlbmd0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZW5kX2Fycm93X3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC41Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmNvbm5lY3Rpb25zPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzEyIiBjb25uZWN0aW9uPSIyIi8+CisgICAgICA8L2RpYTpjb25uZWN0aW9ucz4KKyAgICA8L2RpYTpvYmplY3Q+CisgICAgPGRpYTpvYmplY3QgdHlwZT0iU3RhbmRhcmQgLSBMaW5lIiB2ZXJzaW9uPSIwIiBpZD0iTzM2Ij4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9Im9ial9wb3MiPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjcuMzQ1NCw5LjUzNjI0Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJvYmpfYmIiPgorICAgICAgICA8ZGlhOnJlY3RhbmdsZSB2YWw9IjI0LjQzMTEsOS40NjY5NTsyNy40MTQ3LDEzLjkyNjUiLz4KKyAgICAgIDwvZGlhOmF0dHJpYnV0ZT4KKyAgICAgIDxkaWE6YXR0cmlidXRlIG5hbWU9ImNvbm5fZW5kcG9pbnRzIj4KKyAgICAgICAgPGRpYTpwb2ludCB2YWw9IjI3LjM0NTQsOS41MzYyNCIvPgorICAgICAgICA8ZGlhOnBvaW50IHZhbD0iMjQuNTAwNCwxMy44MzMzIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJudW1jcCI+CisgICAgICAgIDxkaWE6aW50IHZhbD0iMSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0ibGluZV9jb2xvciI+CisgICAgICAgIDxkaWE6Y29sb3IgdmFsPSIjYTAyMGYwIi8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmF0dHJpYnV0ZSBuYW1lPSJlbmRfYXJyb3ciPgorICAgICAgICA8ZGlhOmVudW0gdmFsPSIyMiIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZW5kX2Fycm93X2xlbmd0aCI+CisgICAgICAgIDxkaWE6cmVhbCB2YWw9IjAuNSIvPgorICAgICAgPC9kaWE6YXR0cmlidXRlPgorICAgICAgPGRpYTphdHRyaWJ1dGUgbmFtZT0iZW5kX2Fycm93X3dpZHRoIj4KKyAgICAgICAgPGRpYTpyZWFsIHZhbD0iMC41Ii8+CisgICAgICA8L2RpYTphdHRyaWJ1dGU+CisgICAgICA8ZGlhOmNvbm5lY3Rpb25zPgorICAgICAgICA8ZGlhOmNvbm5lY3Rpb24gaGFuZGxlPSIxIiB0bz0iTzI2IiBjb25uZWN0aW9uPSIyIi8+CisgICAgICA8L2RpYTpjb25uZWN0aW9ucz4KKyAgICA8L2RpYTpvYmplY3Q+CisgIDwvZGlhOmxheWVyPgorPC9kaWE6ZGlhZ3JhbT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvc3ViZGV2LWltYWdlLXByb2Nlc3Npbmctc2NhbGluZy1tdWx0aS1zb3VyY2Uuc3ZnIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9zdWJkZXYtaW1hZ2UtcHJvY2Vzc2luZy1zY2FsaW5nLW11bHRpLXNvdXJjZS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM0MGMwZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvc3ViZGV2LWltYWdlLXByb2Nlc3Npbmctc2NhbGluZy1tdWx0aS1zb3VyY2Uuc3ZnCkBAIC0wLDAgKzEsMTE2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz4KKzwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4wLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUFItU1ZHLTIwMDEwNzE5L0RURC9zdmcxMC5kdGQiPgorPHN2ZyB3aWR0aD0iNTljbSIgaGVpZ2h0PSIxN2NtIiB2aWV3Qm94PSItMTk0IDEyOCAxMTc5IDMzMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CisgIDxyZWN0IHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICMwMDAwMDAiIHg9Ii04IiB5PSIxMzAiIHdpZHRoPSI4MDYiIGhlaWdodD0iMzI3Ii8+CisgIDxnPgorICAgIDxyZWN0IHN0eWxlPSJmaWxsOiAjZmZmZmZmIiB4PSI0LjUiIHk9IjE4OSIgd2lkdGg9IjE1OSIgaGVpZ2h0PSIxMDQiLz4KKyAgICA8cmVjdCBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjYTUyYTJhIiB4PSI0LjUiIHk9IjE4OSIgd2lkdGg9IjE1OSIgaGVpZ2h0PSIxMDQiLz4KKyAgPC9nPgorICA8Zz4KKyAgICA8cmVjdCBzdHlsZT0iZmlsbDogI2ZmZmZmZiIgeD0iNDkuNSIgeT0iMjA0IiB3aWR0aD0iOTQiIGhlaWdodD0iNzciLz4KKyAgICA8cmVjdCBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjMDAwMGZmIiB4PSI0OS41IiB5PSIyMDQiIHdpZHRoPSI5NCIgaGVpZ2h0PSI3NyIvPgorICA8L2c+CisgIDx0ZXh0IHN0eWxlPSJmaWxsOiAjMDAwMGZmO3RleHQtYW5jaG9yOnN0YXJ0O2ZvbnQtc2l6ZToxMi44O2ZvbnQtZmFtaWx5OnNhbnNlcmlmO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbCIgeD0iNjAiIHk9IjIyNCI+CisgICAgPHRzcGFuIHg9IjYwIiB5PSIyMjQiPnNpbms8L3RzcGFuPgorICAgIDx0c3BhbiB4PSI2MCIgeT0iMjQwIj5jcm9wPC90c3Bhbj4KKyAgICA8dHNwYW4geD0iNjAiIHk9IjI1NiI+c2VsZWN0aW9uPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dCBzdHlsZT0iZmlsbDogIzAwMDAwMDt0ZXh0LWFuY2hvcjpzdGFydDtmb250LXNpemU6MTIuODtmb250LWZhbWlseTpzYW5zZXJpZjtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWwiIHg9IjI5LjUiIHk9IjE1OCI+CisgICAgPHRzcGFuIHg9IjI5LjUiIHk9IjE1OCI+PC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dCBzdHlsZT0iZmlsbDogI2E1MmEyYTt0ZXh0LWFuY2hvcjpzdGFydDtmb250LXNpemU6MTIuODtmb250LWZhbWlseTpzYW5zZXJpZjtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWwiIHg9IjguNTM4MzYiIHk9IjE1Ny45MTQiPgorICAgIDx0c3BhbiB4PSI4LjUzODM2IiB5PSIxNTcuOTE0Ij5zaW5rIG1lZGlhPC90c3Bhbj4KKyAgICA8dHNwYW4geD0iOC41MzgzNiIgeT0iMTczLjkxNCI+YnVzIGZvcm1hdDwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPGc+CisgICAgPHJlY3Qgc3R5bGU9ImZpbGw6ICNmZmZmZmYiIHg9IjMzMy42NDQiIHk9IjE4NS42NSIgd2lkdGg9IjE2NS4yIiBoZWlnaHQ9IjE3Mi40NzgiLz4KKyAgICA8cmVjdCBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjMDBmZjAwIiB4PSIzMzMuNjQ0IiB5PSIxODUuNjUiIHdpZHRoPSIxNjUuMiIgaGVpZ2h0PSIxNzIuNDc4Ii8+CisgIDwvZz4KKyAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZS1kYXNoYXJyYXk6IDQ7IHN0cm9rZTogI2U2MDUwNSIgeDE9IjMzMy42NDQiIHkxPSIzNTguMTI4IiB4Mj0iNDkuNSIgeTI9IjI4MSIvPgorICA8bGluZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlLWRhc2hhcnJheTogNDsgc3Ryb2tlOiAjZTYwNTA1IiB4MT0iMzMzLjY0NCIgeTE9IjE4NS42NSIgeDI9IjQ5LjUiIHkyPSIyMDQiLz4KKyAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZS1kYXNoYXJyYXk6IDQ7IHN0cm9rZTogI2U2MDUwNSIgeDE9IjQ5OC44NDQiIHkxPSIzNTguMTI4IiB4Mj0iMTQzLjUiIHkyPSIyODEiLz4KKyAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZS1kYXNoYXJyYXk6IDQ7IHN0cm9rZTogI2U2MDUwNSIgeDE9IjQ5OC44NDQiIHkxPSIxODUuNjUiIHgyPSIxNDMuNSIgeTI9IjIwNCIvPgorICA8dGV4dCBzdHlsZT0iZmlsbDogIzAwZmYwMDt0ZXh0LWFuY2hvcjpzdGFydDtmb250LXNpemU6MTIuODtmb250LWZhbWlseTpzYW5zZXJpZjtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWwiIHg9IjMzNC43MDQiIHk9IjE0OS40NDIiPgorICAgIDx0c3BhbiB4PSIzMzQuNzA0IiB5PSIxNDkuNDQyIj5zaW5rIGNvbXBvc2U8L3RzcGFuPgorICAgIDx0c3BhbiB4PSIzMzQuNzA0IiB5PSIxNjUuNDQyIj5zZWxlY3Rpb24gKHNjYWxpbmcpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8Zz4KKyAgICA8cmVjdCBzdHlsZT0iZmlsbDogI2ZmZmZmZiIgeD0iMzgyLjMyMiIgeT0iMTk5LjU2NSIgd2lkdGg9IjEwMC4xODYiIGhlaWdodD0iNzEuNDUyMyIvPgorICAgIDxyZWN0IHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICNhMDIwZjAiIHg9IjM4Mi4zMjIiIHk9IjE5OS41NjUiIHdpZHRoPSIxMDAuMTg2IiBoZWlnaHQ9IjcxLjQ1MjMiLz4KKyAgPC9nPgorICA8dGV4dCBzdHlsZT0iZmlsbDogI2EwMjBmMDt0ZXh0LWFuY2hvcjpzdGFydDtmb250LXNpemU6MTIuODtmb250LWZhbWlseTpzYW5zZXJpZjtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWwiIHg9IjU0My4zMjIiIHk9IjE0OS40NDIiPgorICAgIDx0c3BhbiB4PSI1NDMuMzIyIiB5PSIxNDkuNDQyIj5zb3VyY2U8L3RzcGFuPgorICAgIDx0c3BhbiB4PSI1NDMuMzIyIiB5PSIxNjUuNDQyIj5jcm9wPC90c3Bhbj4KKyAgICA8dHNwYW4geD0iNTQzLjMyMiIgeT0iMTgxLjQ0MiI+c2VsZWN0aW9uPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dCBzdHlsZT0iZmlsbDogIzhiNjkxNDt0ZXh0LWFuY2hvcjpzdGFydDtmb250LXNpemU6MTIuODtmb250LWZhbWlseTpzYW5zZXJpZjtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWwiIHg9IjY5MS41IiB5PSIxNTcuMTI4Ij4KKyAgICA8dHNwYW4geD0iNjkxLjUiIHk9IjE1Ny4xMjgiPnNvdXJjZSBtZWRpYTwvdHNwYW4+CisgICAgPHRzcGFuIHg9IjY5MS41IiB5PSIxNzMuMTI4Ij5idXMgZm9ybWF0PC90c3Bhbj4KKyAgPC90ZXh0PgorICA8Zz4KKyAgICA8cmVjdCBzdHlsZT0iZmlsbDogI2ZmZmZmZiIgeD0iNjkwLjQ4OCIgeT0iMjI1LjgzNCIgd2lkdGg9IjEwMC4xODYiIGhlaWdodD0iNzEuNDUyMyIvPgorICAgIDxyZWN0IHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICM4YjY5MTQiIHg9IjY5MC40ODgiIHk9IjIyNS44MzQiIHdpZHRoPSIxMDAuMTg2IiBoZWlnaHQ9IjcxLjQ1MjMiLz4KKyAgPC9nPgorICA8bGluZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlLWRhc2hhcnJheTogNDsgc3Ryb2tlOiAjZTYwNTA1IiB4MT0iNjkwLjQ4OCIgeTE9IjI5Ny4yODYiIHgyPSIzODIuMzIyIiB5Mj0iMjcxLjAxOCIvPgorICA8bGluZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlLWRhc2hhcnJheTogNDsgc3Ryb2tlOiAjZTYwNTA1IiB4MT0iNjkwLjQ4OCIgeTE9IjIyNS44MzQiIHgyPSIzODIuMzIyIiB5Mj0iMTk5LjU2NSIvPgorICA8bGluZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlLWRhc2hhcnJheTogNDsgc3Ryb2tlOiAjZTYwNTA1IiB4MT0iNzkwLjY3NCIgeTE9IjI5Ny4yODYiIHgyPSI0ODIuNTA4IiB5Mj0iMjcxLjAxOCIvPgorICA8bGluZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlLWRhc2hhcnJheTogNDsgc3Ryb2tlOiAjZTYwNTA1IiB4MT0iNzkwLjY3NCIgeTE9IjIyNS44MzQiIHgyPSI0ODIuNTA4IiB5Mj0iMTk5LjU2NSIvPgorICA8Zz4KKyAgICA8ZWxsaXBzZSBzdHlsZT0iZmlsbDogI2ZmZmZmZiIgY3g9IjgwOC4xIiBjeT0iMjQ5Ljk4NCIgcng9IjguNSIgcnk9IjguNSIvPgorICAgIDxlbGxpcHNlIHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICMwMDAwMDAiIGN4PSI4MDguMSIgY3k9IjI0OS45ODQiIHJ4PSI4LjUiIHJ5PSI4LjUiLz4KKyAgICA8ZWxsaXBzZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjMDAwMDAwIiBjeD0iODA4LjEiIGN5PSIyNDkuOTg0IiByeD0iOC41IiByeT0iOC41Ii8+CisgIDwvZz4KKyAgPGc+CisgICAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogIzAwMDAwMCIgeDE9IjgxNi42IiB5MT0iMjQ5Ljk4NCIgeDI9Ijk3Mi45MzQiIHkyPSIyNTAuMDEyIi8+CisgICAgPHBvbHlnb24gc3R5bGU9ImZpbGw6ICMwMDAwMDAiIHBvaW50cz0iOTgwLjQzNCwyNTAuMDE0IDk3MC40MzMsMjU1LjAxMiA5NzIuOTM0LDI1MC4wMTIgOTcwLjQzNSwyNDUuMDEyICIvPgorICAgIDxwb2x5Z29uIHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICMwMDAwMDAiIHBvaW50cz0iOTgwLjQzNCwyNTAuMDE0IDk3MC40MzMsMjU1LjAxMiA5NzIuOTM0LDI1MC4wMTIgOTcwLjQzNSwyNDUuMDEyICIvPgorICA8L2c+CisgIDx0ZXh0IHN0eWxlPSJmaWxsOiAjMDAwMDAwO3RleHQtYW5jaG9yOnN0YXJ0O2ZvbnQtc2l6ZToxMi44O2ZvbnQtZmFtaWx5OnNhbnNlcmlmO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbCIgeD0iODQxLjkwOCIgeT0iMjM5LjgiPgorICAgIDx0c3BhbiB4PSI4NDEuOTA4IiB5PSIyMzkuOCI+cGFkIDEgKHNvdXJjZSk8L3RzcGFuPgorICA8L3RleHQ+CisgIDxnPgorICAgIDxlbGxpcHNlIHN0eWxlPSJmaWxsOiAjZmZmZmZmIiBjeD0iLTIwLjM5ODIiIGN5PSIyNDEuNTEyIiByeD0iOC41IiByeT0iOC41Ii8+CisgICAgPGVsbGlwc2Ugc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogIzAwMDAwMCIgY3g9Ii0yMC4zOTgyIiBjeT0iMjQxLjUxMiIgcng9IjguNSIgcnk9IjguNSIvPgorICAgIDxlbGxpcHNlIHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICMwMDAwMDAiIGN4PSItMjAuMzk4MiIgY3k9IjI0MS41MTIiIHJ4PSI4LjUiIHJ5PSI4LjUiLz4KKyAgPC9nPgorICA8Zz4KKyAgICA8bGluZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjMDAwMDAwIiB4MT0iLTE5Mi4zOTgiIHkxPSIyNDEuOCIgeDI9Ii0zOC42MzQzIiB5Mj0iMjQxLjUyOSIvPgorICAgIDxwb2x5Z29uIHN0eWxlPSJmaWxsOiAjMDAwMDAwIiBwb2ludHM9Ii0zMS4xMzQzLDI0MS41MTYgLTQxLjEyNTQsMjQ2LjUzNCAtMzguNjM0MywyNDEuNTI5IC00MS4xNDMxLDIzNi41MzQgIi8+CisgICAgPHBvbHlnb24gc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogIzAwMDAwMCIgcG9pbnRzPSItMzEuMTM0MywyNDEuNTE2IC00MS4xMjU0LDI0Ni41MzQgLTM4LjYzNDMsMjQxLjUyOSAtNDEuMTQzMSwyMzYuNTM0ICIvPgorICA8L2c+CisgIDx0ZXh0IHN0eWxlPSJmaWxsOiAjMDAwMDAwO3RleHQtYW5jaG9yOnN0YXJ0O2ZvbnQtc2l6ZToxMi44O2ZvbnQtZmFtaWx5OnNhbnNlcmlmO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbCIgeD0iLTE0Ny44NTgiIHk9IjIyOS44Ij4KKyAgICA8dHNwYW4geD0iLTE0Ny44NTgiIHk9IjIyOS44Ij5wYWQgMCAoc2luayk8L3RzcGFuPgorICA8L3RleHQ+CisgIDxyZWN0IHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICNhMDIwZjAiIHg9IjM4OS44MjIiIHk9IjI3Ni42NjYiIHdpZHRoPSIxMDAuMTg2IiBoZWlnaHQ9IjcxLjQ1MjMiLz4KKyAgPGc+CisgICAgPHJlY3Qgc3R5bGU9ImZpbGw6ICNmZmZmZmYiIHg9IjY4OS45ODgiIHk9IjM0NS45MzQiIHdpZHRoPSIxMDAuMTg2IiBoZWlnaHQ9IjcxLjQ1MjMiLz4KKyAgICA8cmVjdCBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjOGI2OTE0IiB4PSI2ODkuOTg4IiB5PSIzNDUuOTM0IiB3aWR0aD0iMTAwLjE4NiIgaGVpZ2h0PSI3MS40NTIzIi8+CisgIDwvZz4KKyAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZS1kYXNoYXJyYXk6IDQ7IHN0cm9rZTogI2U2MDUwNSIgeDE9IjY4OS45ODgiIHkxPSI0MTcuMzg2IiB4Mj0iMzg5LjgyMiIgeTI9IjM0OC4xMTgiLz4KKyAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZS1kYXNoYXJyYXk6IDQ7IHN0cm9rZTogI2U2MDUwNSIgeDE9IjY4OS45ODgiIHkxPSIzNDUuOTM0IiB4Mj0iMzg5LjgyMiIgeTI9IjI3Ni42NjYiLz4KKyAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZS1kYXNoYXJyYXk6IDQ7IHN0cm9rZTogI2U2MDUwNSIgeDE9Ijc5MC4xNzQiIHkxPSI0MTcuMzg2IiB4Mj0iNDkwLjAwOCIgeTI9IjM0OC4xMTgiLz4KKyAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZS1kYXNoYXJyYXk6IDQ7IHN0cm9rZTogI2U2MDUwNSIgeDE9Ijc5MC4xNzQiIHkxPSIzNDUuOTM0IiB4Mj0iNDkwLjAwOCIgeTI9IjI3Ni42NjYiLz4KKyAgPGc+CisgICAgPGVsbGlwc2Ugc3R5bGU9ImZpbGw6ICNmZmZmZmYiIGN4PSI4MDUuNiIgY3k9IjM4NC4wODQiIHJ4PSI4LjUiIHJ5PSI4LjUiLz4KKyAgICA8ZWxsaXBzZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjMDAwMDAwIiBjeD0iODA1LjYiIGN5PSIzODQuMDg0IiByeD0iOC41IiByeT0iOC41Ii8+CisgICAgPGVsbGlwc2Ugc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogIzAwMDAwMCIgY3g9IjgwNS42IiBjeT0iMzg0LjA4NCIgcng9IjguNSIgcnk9IjguNSIvPgorICA8L2c+CisgIDxnPgorICAgIDxsaW5lIHN0eWxlPSJmaWxsOiBub25lOyBmaWxsLW9wYWNpdHk6MDsgc3Ryb2tlLXdpZHRoOiAyOyBzdHJva2U6ICMwMDAwMDAiIHgxPSI4MTQuMSIgeTE9IjM4NC4wODQiIHgyPSI5NzAuNDM0IiB5Mj0iMzg0LjExMiIvPgorICAgIDxwb2x5Z29uIHN0eWxlPSJmaWxsOiAjMDAwMDAwIiBwb2ludHM9Ijk3Ny45MzQsMzg0LjExNCA5NjcuOTMzLDM4OS4xMTIgOTcwLjQzNCwzODQuMTEyIDk2Ny45MzUsMzc5LjExMiAiLz4KKyAgICA8cG9seWdvbiBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjMDAwMDAwIiBwb2ludHM9Ijk3Ny45MzQsMzg0LjExNCA5NjcuOTMzLDM4OS4xMTIgOTcwLjQzNCwzODQuMTEyIDk2Ny45MzUsMzc5LjExMiAiLz4KKyAgPC9nPgorICA8dGV4dCBzdHlsZT0iZmlsbDogIzAwMDAwMDt0ZXh0LWFuY2hvcjpzdGFydDtmb250LXNpemU6MTIuODtmb250LWZhbWlseTpzYW5zZXJpZjtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWwiIHg9IjgzOS40MDgiIHk9IjM3My45Ij4KKyAgICA8dHNwYW4geD0iODM5LjQwOCIgeT0iMzczLjkiPnBhZCAyIChzb3VyY2UpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8Zz4KKyAgICA8bGluZSBzdHlsZT0iZmlsbDogbm9uZTsgZmlsbC1vcGFjaXR5OjA7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlOiAjYTAyMGYwIiB4MT0iNTQ2IiB5MT0iMTkxIiB4Mj0iNDkyLjE1NyIgeTI9IjE5OC4yNjMiLz4KKyAgICA8cG9seWdvbiBzdHlsZT0iZmlsbDogI2EwMjBmMCIgcG9pbnRzPSI0ODQuNzI0LDE5OS4yNjYgNDkzLjk2NiwxOTIuOTc0IDQ5Mi4xNTcsMTk4LjI2MyA0OTUuMzAzLDIwMi44ODQgIi8+CisgICAgPHBvbHlnb24gc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogI2EwMjBmMCIgcG9pbnRzPSI0ODQuNzI0LDE5OS4yNjYgNDkzLjk2NiwxOTIuOTc0IDQ5Mi4xNTcsMTk4LjI2MyA0OTUuMzAzLDIwMi44ODQgIi8+CisgIDwvZz4KKyAgPGc+CisgICAgPGxpbmUgc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogI2EwMjBmMCIgeDE9IjU0Ni45MDgiIHkxPSIxOTAuNzI1IiB4Mj0iNDk1LjM4MyIgeTI9IjI2OC41NDgiLz4KKyAgICA8cG9seWdvbiBzdHlsZT0iZmlsbDogI2EwMjBmMCIgcG9pbnRzPSI0OTEuMjQyLDI3NC44MDIgNDkyLjU5NCwyNjMuNzAzIDQ5NS4zODMsMjY4LjU0OCA1MDAuOTMyLDI2OS4yMjQgIi8+CisgICAgPHBvbHlnb24gc3R5bGU9ImZpbGw6IG5vbmU7IGZpbGwtb3BhY2l0eTowOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZTogI2EwMjBmMCIgcG9pbnRzPSI0OTEuMjQyLDI3NC44MDIgNDkyLjU5NCwyNjMuNzAzIDQ5NS4zODMsMjY4LjU0OCA1MDAuOTMyLDI2OS4yMjQgIi8+CisgIDwvZz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92NGwyLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdjRsMi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U2MTY0MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdjRsMi54bWwKQEAgLTAsMCArMSw3MTggQEAKKyA8cGFydGluZm8+CisgICAgPGF1dGhvcmdyb3VwPgorICAgICAgPGF1dGhvcj4KKwk8Zmlyc3RuYW1lPk1pY2hhZWw8L2ZpcnN0bmFtZT4KKwk8c3VybmFtZT5TY2hpbWVrPC9zdXJuYW1lPgorCTxvdGhlcm5hbWUgcm9sZT0ibWkiPkg8L290aGVybmFtZT4KKwk8YWZmaWxpYXRpb24+CisJICA8YWRkcmVzcz4KKwkgICAgPGVtYWlsPm1zY2hpbWVrQGdteC5hdDwvZW1haWw+CisJICA8L2FkZHJlc3M+CisJPC9hZmZpbGlhdGlvbj4KKyAgICAgIDwvYXV0aG9yPgorCisgICAgICA8YXV0aG9yPgorCTxmaXJzdG5hbWU+QmlsbDwvZmlyc3RuYW1lPgorCTxzdXJuYW1lPkRpcmtzPC9zdXJuYW1lPgorCTwhLS0gQ29tbWVudGVkIHVudGlsIEJpbGwgb3B0cyBpbiB0byBiZSBzcGFtbWVkLgorCTxhZmZpbGlhdGlvbj4KKwkgIDxhZGRyZXNzPgorCSAgICA8ZW1haWw+YmlsbEB0aGVkaXJrcy5vcmc8L2VtYWlsPgorCSAgPC9hZGRyZXNzPgorCTwvYWZmaWxpYXRpb24+IC0tPgorCTxjb250cmliPk9yaWdpbmFsIGF1dGhvciBvZiB0aGUgVjRMMiBBUEkgYW5kCitkb2N1bWVudGF0aW9uLjwvY29udHJpYj4KKyAgICAgIDwvYXV0aG9yPgorCisgICAgICA8YXV0aG9yPgorCTxmaXJzdG5hbWU+SGFuczwvZmlyc3RuYW1lPgorCTxzdXJuYW1lPlZlcmt1aWw8L3N1cm5hbWU+CisJPGNvbnRyaWI+RGVzaWduZWQgYW5kIGRvY3VtZW50ZWQgdGhlIFZJRElPQ19MT0dfU1RBVFVTIGlvY3RsLAordGhlIGV4dGVuZGVkIGNvbnRyb2wgaW9jdGxzLCBtYWpvciBwYXJ0cyBvZiB0aGUgc2xpY2VkIFZCSSBBUEksIHRoZQorTVBFRyBlbmNvZGVyIGFuZCBkZWNvZGVyIEFQSXMgYW5kIHRoZSBEViBUaW1pbmdzIEFQSS48L2NvbnRyaWI+CisJPGFmZmlsaWF0aW9uPgorCSAgPGFkZHJlc3M+CisJICAgIDxlbWFpbD5odmVya3VpbEB4czRhbGwubmw8L2VtYWlsPgorCSAgPC9hZGRyZXNzPgorCTwvYWZmaWxpYXRpb24+CisgICAgICA8L2F1dGhvcj4KKworICAgICAgPGF1dGhvcj4KKwk8Zmlyc3RuYW1lPk1hcnRpbjwvZmlyc3RuYW1lPgorCTxzdXJuYW1lPlJ1YmxpPC9zdXJuYW1lPgorCTwhLS0KKwk8YWZmaWxpYXRpb24+CisJICA8YWRkcmVzcz4KKwkgICAgPGVtYWlsPm1hcnRpbl9ydWJsaUBsb2dpdGVjaC5jb208L2VtYWlsPgorCSAgPC9hZGRyZXNzPgorCTwvYWZmaWxpYXRpb24+IC0tPgorCTxjb250cmliPkRlc2lnbmVkIGFuZCBkb2N1bWVudGVkIHRoZSBWSURJT0NfRU5VTV9GUkFNRVNJWkVTCithbmQgVklESU9DX0VOVU1fRlJBTUVJTlRFUlZBTFMgaW9jdGxzLjwvY29udHJpYj4KKyAgICAgIDwvYXV0aG9yPgorCisgICAgICA8YXV0aG9yPgorCTxmaXJzdG5hbWU+QW5keTwvZmlyc3RuYW1lPgorCTxzdXJuYW1lPldhbGxzPC9zdXJuYW1lPgorCTxjb250cmliPkRvY3VtZW50ZWQgdGhlIGZpZWxkZWQgVjRMMl9NUEVHX1NUUkVBTV9WQklfRk1UX0lWVFYKK01QRUcgc3RyZWFtIGVtYmVkZGVkLCBzbGljZWQgVkJJIGRhdGEgZm9ybWF0IGluIHRoaXMgc3BlY2lmaWNhdGlvbi4KKzwvY29udHJpYj4KKwk8YWZmaWxpYXRpb24+CisJICA8YWRkcmVzcz4KKwkgICAgPGVtYWlsPmF3YWxsc0BtZC5tZXRyb2Nhc3QubmV0PC9lbWFpbD4KKwkgIDwvYWRkcmVzcz4KKwk8L2FmZmlsaWF0aW9uPgorICAgICAgPC9hdXRob3I+CisKKyAgICAgIDxhdXRob3I+CisJPGZpcnN0bmFtZT5NYXVybzwvZmlyc3RuYW1lPgorCTxzdXJuYW1lPkNhcnZhbGhvIENoZWhhYjwvc3VybmFtZT4KKwk8Y29udHJpYj5Eb2N1bWVudGVkIGxpYnY0bCwgZGVzaWduZWQgYW5kIGFkZGVkIHY0bDJncmFiIGV4YW1wbGUsCitSZW1vdGUgQ29udHJvbGxlciBjaGFwdGVyLjwvY29udHJpYj4KKwk8YWZmaWxpYXRpb24+CisJICA8YWRkcmVzcz4KKwkgICAgPGVtYWlsPm0uY2hlaGFiQHNhbXN1bmcuY29tPC9lbWFpbD4KKwkgIDwvYWRkcmVzcz4KKwk8L2FmZmlsaWF0aW9uPgorICAgICAgPC9hdXRob3I+CisKKyAgICAgIDxhdXRob3I+CisJPGZpcnN0bmFtZT5NdXJhbGlkaGFyYW48L2ZpcnN0bmFtZT4KKwk8c3VybmFtZT5LYXJpY2hlcmk8L3N1cm5hbWU+CisJPGNvbnRyaWI+RG9jdW1lbnRlZCB0aGUgRGlnaXRhbCBWaWRlbyB0aW1pbmdzIEFQSS48L2NvbnRyaWI+CisJPGFmZmlsaWF0aW9uPgorCSAgPGFkZHJlc3M+CisJICAgIDxlbWFpbD5tLWthcmljaGVyaTJAdGkuY29tPC9lbWFpbD4KKwkgIDwvYWRkcmVzcz4KKwk8L2FmZmlsaWF0aW9uPgorICAgICAgPC9hdXRob3I+CisKKyAgICAgIDxhdXRob3I+CisJPGZpcnN0bmFtZT5QYXdlbDwvZmlyc3RuYW1lPgorCTxzdXJuYW1lPk9zY2lhazwvc3VybmFtZT4KKwk8Y29udHJpYj5EZXNpZ25lZCBhbmQgZG9jdW1lbnRlZCB0aGUgbXVsdGktcGxhbmFyIEFQSS48L2NvbnRyaWI+CisJPGFmZmlsaWF0aW9uPgorCSAgPGFkZHJlc3M+CisJICAgIDxlbWFpbD5wYXdlbCBBVCBvc2NpYWsuY29tPC9lbWFpbD4KKwkgIDwvYWRkcmVzcz4KKwk8L2FmZmlsaWF0aW9uPgorICAgICAgPC9hdXRob3I+CisKKyAgICAgIDxhdXRob3I+CisJPGZpcnN0bmFtZT5TYWthcmk8L2ZpcnN0bmFtZT4KKwk8c3VybmFtZT5BaWx1czwvc3VybmFtZT4KKwk8Y29udHJpYj5TdWJkZXYgc2VsZWN0aW9ucyBBUEkuPC9jb250cmliPgorCTxhZmZpbGlhdGlvbj4KKwkgIDxhZGRyZXNzPgorCSAgICA8ZW1haWw+c2FrYXJpLmFpbHVzQGlraS5maTwvZW1haWw+CisJICA8L2FkZHJlc3M+CisJPC9hZmZpbGlhdGlvbj4KKyAgICAgIDwvYXV0aG9yPgorICAgICAgPGF1dGhvcj4KKwk8Zmlyc3RuYW1lPkFudHRpPC9maXJzdG5hbWU+CisJPHN1cm5hbWU+UGFsb3NhYXJpPC9zdXJuYW1lPgorCTxjb250cmliPlNEUiBBUEkuPC9jb250cmliPgorCTxhZmZpbGlhdGlvbj4KKwkgIDxhZGRyZXNzPgorCSAgICA8ZW1haWw+Y3JvcGVAaWtpLmZpPC9lbWFpbD4KKwkgIDwvYWRkcmVzcz4KKwk8L2FmZmlsaWF0aW9uPgorICAgICAgPC9hdXRob3I+CisgICAgPC9hdXRob3Jncm91cD4KKworICAgIDxjb3B5cmlnaHQ+CisgICAgICA8eWVhcj4xOTk5PC95ZWFyPgorICAgICAgPHllYXI+MjAwMDwveWVhcj4KKyAgICAgIDx5ZWFyPjIwMDE8L3llYXI+CisgICAgICA8eWVhcj4yMDAyPC95ZWFyPgorICAgICAgPHllYXI+MjAwMzwveWVhcj4KKyAgICAgIDx5ZWFyPjIwMDQ8L3llYXI+CisgICAgICA8eWVhcj4yMDA1PC95ZWFyPgorICAgICAgPHllYXI+MjAwNjwveWVhcj4KKyAgICAgIDx5ZWFyPjIwMDc8L3llYXI+CisgICAgICA8eWVhcj4yMDA4PC95ZWFyPgorICAgICAgPHllYXI+MjAwOTwveWVhcj4KKyAgICAgIDx5ZWFyPjIwMTA8L3llYXI+CisgICAgICA8eWVhcj4yMDExPC95ZWFyPgorICAgICAgPHllYXI+MjAxMjwveWVhcj4KKyAgICAgIDx5ZWFyPjIwMTM8L3llYXI+CisgICAgICA8eWVhcj4yMDE0PC95ZWFyPgorICAgICAgPHllYXI+MjAxNTwveWVhcj4KKyAgICAgIDxob2xkZXI+QmlsbCBEaXJrcywgTWljaGFlbCBILiBTY2hpbWVrLCBIYW5zIFZlcmt1aWwsIE1hcnRpbgorUnVibGksIEFuZHkgV2FsbHMsIE11cmFsaWRoYXJhbiBLYXJpY2hlcmksIE1hdXJvIENhcnZhbGhvIENoZWhhYiwKKwlQYXdlbCBPc2NpYWs8L2hvbGRlcj4KKyAgICA8L2NvcHlyaWdodD4KKyAgICA8bGVnYWxub3RpY2U+CisgICAgPHBhcmE+RXhjZXB0IHdoZW4gZXhwbGljaXRseSBzdGF0ZWQgYXMgR1BMLCBwcm9ncmFtbWluZyBleGFtcGxlcyB3aXRoaW4KKwkgICAgdGhpcyBwYXJ0IGNhbiBiZSB1c2VkIGFuZCBkaXN0cmlidXRlZCB3aXRob3V0IHJlc3RyaWN0aW9ucy48L3BhcmE+CisgICAgPC9sZWdhbG5vdGljZT4KKyAgICA8cmV2aGlzdG9yeT4KKyAgICAgIDwhLS0gUHV0IGRvY3VtZW50IHJldmlzaW9ucyBoZXJlLCBuZXdlc3QgZmlyc3QuIC0tPgorICAgICAgPCEtLSBBUEkgcmV2aXNpb25zIChjaGFuZ2VzIGFuZCBhZGRpdGlvbnMgb2YgZGVmaW5lcywgZW51bXMsCitzdHJ1Y3RzLCBpb2N0bHMpIG11c3QgYmUgbm90ZWQgaW4gbW9yZSBkZXRhaWwgaW4gdGhlIGhpc3RvcnkgY2hhcHRlcgorKGNvbXBhdC54bWwpLCBhbG9uZyB3aXRoIHRoZSBwb3NzaWJsZSBpbXBhY3Qgb24gZXhpc3RpbmcgZHJpdmVycyBhbmQKK2FwcGxpY2F0aW9ucy4gLS0+CisgICAgICA8cmV2aXNpb24+CisJPHJldm51bWJlcj40LjQ8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDE1LTA1LTI2PC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5hcDwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz5SZW5hbWVkIFY0TDJfVFVORVJfQURDIHRvIFY0TDJfVFVORVJfU0RSLgorQWRkZWQgVjRMMl9DSURfUkZfVFVORVJfUkZfR0FJTiBjb250cm9sLgorQWRkZWQgdHJhbnNtaXR0ZXIgc3VwcG9ydCBmb3IgU29mdHdhcmUgRGVmaW5lZCBSYWRpbyAoU0RSKSBJbnRlcmZhY2UuCisJPC9yZXZyZW1hcms+CisgICAgICA8L3JldmlzaW9uPgorCisgICAgICA8cmV2aXNpb24+CisJPHJldm51bWJlcj40LjE8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDE1LTAyLTEzPC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5tY2M8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+Rml4IGRvY3VtZW50YXRpb24gZm9yIG1lZGlhIGNvbnRyb2xsZXIgZGV2aWNlIG5vZGVzIGFuZCBhZGQgc3VwcG9ydCBmb3IgRFZCIGRldmljZSBub2Rlcy4KK0FkZCBzdXBwb3J0IGZvciBUdW5lciBzdWItZGV2aWNlLgorCTwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKyAgICAgIDxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjMuMTk8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDE0LTEyLTA1PC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5odjwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz5SZXdyb3RlIENvbG9yc3BhY2UgY2hhcHRlciwgYWRkZWQgbmV3ICZ2NGwyLXljYmNyLWVuY29kaW5nOyBhbmQgJnY0bDItcXVhbnRpemF0aW9uOyBmaWVsZHMKK3RvICZ2NGwyLXBpeC1mb3JtYXQ7LCAmdjRsMi1waXgtZm9ybWF0LW1wbGFuZTsgYW5kICZ2NGwyLW1idXMtZnJhbWVmbXQ7LgorCTwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKworICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+My4xNzwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMTQtMDgtMDQ8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPmxwLCBodjwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz5FeHRlbmRlZCAmdjRsMi1waXgtZm9ybWF0Oy4gQWRkZWQgZm9ybWF0IGZsYWdzLiBBZGRlZCBjb21wb3VuZCBjb250cm9sIHR5cGVzCithbmQgVklESU9DX1FVRVJZX0VYVF9DVFJMLgorCTwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKworICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+My4xNTwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMTQtMDItMDM8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPmh2LCBhcDwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz5VcGRhdGUgc2V2ZXJhbCBzZWN0aW9ucyBvZiAiQ29tbW9uIEFQSSBFbGVtZW50cyI6ICJPcGVuaW5nIGFuZCBDbG9zaW5nIERldmljZXMiCisiUXVlcnlpbmcgQ2FwYWJpbGl0aWVzIiwgIkFwcGxpY2F0aW9uIFByaW9yaXR5IiwgIlZpZGVvIElucHV0cyBhbmQgT3V0cHV0cyIsICJBdWRpbyBJbnB1dHMgYW5kIE91dHB1dHMiCisiVHVuZXJzIGFuZCBNb2R1bGF0b3JzIiwgIlZpZGVvIFN0YW5kYXJkcyIgYW5kICJEaWdpdGFsIFZpZGVvIChEVikgVGltaW5ncyIuIEFkZGVkIFNEUiBBUEkuCisJPC9yZXZyZW1hcms+CisgICAgICA8L3JldmlzaW9uPgorCisgICAgICA8cmV2aXNpb24+CisJPHJldm51bWJlcj4zLjE0PC9yZXZudW1iZXI+CisJPGRhdGU+MjAxMy0xMS0yNTwvZGF0ZT4KKwk8YXV0aG9yaW5pdGlhbHM+cnI8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+U2V0IHdpZHRoIGFuZCBoZWlnaHQgYXMgdW5zaWduZWQgb24gdjRsMl9yZWN0LgorCTwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKworICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+My4xMTwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMTMtMDUtMjY8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPmh2PC9hdXRob3Jpbml0aWFscz4KKwk8cmV2cmVtYXJrPlJlbW92ZSBvYnNvbGV0ZSBWSURJT0NfREJHX0dfQ0hJUF9JREVOVCBpb2N0bC4KKwk8L3JldnJlbWFyaz4KKyAgICAgIDwvcmV2aXNpb24+CisKKyAgICAgIDxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjMuMTA8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDEzLTAzLTI1PC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5odjwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz5SZW1vdmUgb2Jzb2xldGUgYW5kIHVudXNlZCBEVl9QUkVTRVQgaW9jdGxzOgorCVZJRElPQ19HX0RWX1BSRVNFVCwgVklESU9DX1NfRFZfUFJFU0VULCBWSURJT0NfUVVFUllfRFZfUFJFU0VUIGFuZAorCVZJRElPQ19FTlVNX0RWX1BSRVNFVC4gUmVtb3ZlIHRoZSByZWxhdGVkIHY0bDJfaW5wdXQvb3V0cHV0IGNhcGFiaWxpdHkKKwlmbGFncyBWNEwyX0lOX0NBUF9QUkVTRVRTIGFuZCBWNEwyX09VVF9DQVBfUFJFU0VUUy4gQWRkZWQgVklESU9DX0RCR19HX0NISVBfSU5GTy4KKwk8L3JldnJlbWFyaz4KKyAgICAgIDwvcmV2aXNpb24+CisKKyAgICAgIDxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjMuOTwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMTItMTItMDM8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPnNhLCBzbjwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz5BZGRlZCB0aW1lc3RhbXAgdHlwZXMgdG8gdjRsMl9idWZmZXIuCisJQWRkZWQgVjRMMl9FVkVOVF9DVFJMX0NIX1JBTkdFIGNvbnRyb2wgZXZlbnQgY2hhbmdlcyBmbGFnLgorCTwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKworICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+My42PC9yZXZudW1iZXI+CisJPGRhdGU+MjAxMi0wNy0wMjwvZGF0ZT4KKwk8YXV0aG9yaW5pdGlhbHM+aHY8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+QWRkZWQgVklESU9DX0VOVU1fRlJFUV9CQU5EUy4KKwk8L3JldnJlbWFyaz4KKyAgICAgIDwvcmV2aXNpb24+CisKKyAgICAgIDxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjMuNTwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMTItMDUtMDc8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPnNhLCBzbiwgaHY8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+QWRkZWQgVjRMMl9DVFJMX1RZUEVfSU5URUdFUl9NRU5VIGFuZCBWNEwyIHN1YmRldgorCSAgICBzZWxlY3Rpb25zIEFQSS4gSW1wcm92ZWQgdGhlIGRlc2NyaXB0aW9uIG9mIFY0TDJfQ0lEX0NPTE9SRlgKKwkgICAgY29udHJvbCwgYWRkZWQgVjRMMl9DSURfQ09MT1JGWF9DQkNSIGNvbnRyb2wuCisJICAgIEFkZGVkIGNhbWVyYSBjb250cm9scyBWNEwyX0NJRF9BVVRPX0VYUE9TVVJFX0JJQVMsCisJICAgIFY0TDJfQ0lEX0FVVE9fTl9QUkVTRVRfV0hJVEVfQkFMQU5DRSwgVjRMMl9DSURfSU1BR0VfU1RBQklMSVpBVElPTiwKKwkgICAgVjRMMl9DSURfSVNPX1NFTlNJVElWSVRZLCBWNEwyX0NJRF9JU09fU0VOU0lUSVZJVFlfQVVUTywKKwkgICAgVjRMMl9DSURfRVhQT1NVUkVfTUVURVJJTkcsIFY0TDJfQ0lEX1NDRU5FX01PREUsCisJICAgIFY0TDJfQ0lEXzNBX0xPQ0ssIFY0TDJfQ0lEX0FVVE9fRk9DVVNfU1RBUlQsCisJICAgIFY0TDJfQ0lEX0FVVE9fRk9DVVNfU1RPUCwgVjRMMl9DSURfQVVUT19GT0NVU19TVEFUVVMKKwkgICAgYW5kIFY0TDJfQ0lEX0FVVE9fRk9DVVNfUkFOR0UuCisJICAgIEFkZGVkIFZJRElPQ19FTlVNX0RWX1RJTUlOR1MsIFZJRElPQ19RVUVSWV9EVl9USU1JTkdTIGFuZAorCSAgICBWSURJT0NfRFZfVElNSU5HU19DQVAuCisJPC9yZXZyZW1hcms+CisgICAgICA8L3JldmlzaW9uPgorCisgICAgICA8cmV2aXNpb24+CisJPHJldm51bWJlcj4zLjQ8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDEyLTAxLTI1PC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5zbjwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz5BZGRlZCA8bGluayBsaW5rZW5kPSJqcGVnLWNvbnRyb2xzIj5KUEVHIGNvbXByZXNzaW9uCisJICAgIGNvbnRyb2wgY2xhc3MuPC9saW5rPgorCTwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKworICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+My4zPC9yZXZudW1iZXI+CisJPGRhdGU+MjAxMi0wMS0xMTwvZGF0ZT4KKwk8YXV0aG9yaW5pdGlhbHM+aHY8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+QWRkZWQgZGV2aWNlX2NhcHMgZmllbGQgdG8gc3RydWN0IHY0bDJfY2FwYWJpbGl0aWVzLjwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKworICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+My4yPC9yZXZudW1iZXI+CisJPGRhdGU+MjAxMS0wOC0yNjwvZGF0ZT4KKwk8YXV0aG9yaW5pdGlhbHM+aHY8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+QWRkZWQgVjRMMl9DVFJMX0ZMQUdfVk9MQVRJTEUuPC9yZXZyZW1hcms+CisgICAgICA8L3JldmlzaW9uPgorCisgICAgICA8cmV2aXNpb24+CisJPHJldm51bWJlcj4zLjE8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDExLTA2LTI3PC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5tY2MsIHBvLCBodjwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz5Eb2N1bWVudGVkIHRoYXQgVklESU9DX1FVRVJZQ0FQIG5vdyByZXR1cm5zIGEgcGVyLXN1YnN5c3RlbSB2ZXJzaW9uIGluc3RlYWQgb2YgYSBwZXItZHJpdmVyIG9uZS4KKwkJICAgU3RhbmRhcmRpemUgYW4gZXJyb3IgY29kZSBmb3IgaW52YWxpZCBpb2N0bC4KKwkJICAgQWRkZWQgVjRMMl9DVFJMX1RZUEVfQklUTUFTSy48L3JldnJlbWFyaz4KKyAgICAgIDwvcmV2aXNpb24+CisKKyAgICAgIDxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjIuNi4zOTwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMTEtMDMtMDE8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPm1jYywgcG88L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+UmVtb3ZlZCBWSURJT0NfKl9PTEQgZnJvbSB2aWRlb2RldjIuaCBoZWFkZXIgYW5kIHVwZGF0ZSBpdCB0byByZWZsZWN0IGxhdGVzdCBjaGFuZ2VzLiBBZGRlZCB0aGUgPGxpbmsgbGlua2VuZD0icGxhbmFyLWFwaXMiPm11bHRpLXBsYW5hciBBUEk8L2xpbms+LjwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKworICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+Mi42LjM3PC9yZXZudW1iZXI+CisJPGRhdGU+MjAxMC0wOC0wNjwvZGF0ZT4KKwk8YXV0aG9yaW5pdGlhbHM+aHY8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+UmVtb3ZlZCBvYnNvbGV0ZSB2dHggKHZpZGVvdGV4dCkgQVBJLjwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKworICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+Mi42LjMzPC9yZXZudW1iZXI+CisJPGRhdGU+MjAwOS0xMi0wMzwvZGF0ZT4KKwk8YXV0aG9yaW5pdGlhbHM+bWs8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+QWRkZWQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIERpZ2l0YWwgVmlkZW8gdGltaW5ncyBBUEkuPC9yZXZyZW1hcms+CisgICAgICA8L3JldmlzaW9uPgorCisgICAgICA8cmV2aXNpb24+CisJPHJldm51bWJlcj4yLjYuMzI8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDA5LTA4LTMxPC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5tY2M8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+Tm93LCByZXZpc2lvbnMgd2lsbCBtYXRjaCB0aGUga2VybmVsIHZlcnNpb24gd2hlcmUKK3RoZSBWNEwyIEFQSSBjaGFuZ2VzIHdpbGwgYmUgdXNlZCBieSB0aGUgTGludXggS2VybmVsLgorQWxzbyBhZGRlZCBSZW1vdGUgQ29udHJvbGxlciBjaGFwdGVyLjwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKworICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+MC4yOTwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMDktMDgtMjY8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPmV2PC9hdXRob3Jpbml0aWFscz4KKwk8cmV2cmVtYXJrPkFkZGVkIGRvY3VtZW50YXRpb24gZm9yIHN0cmluZyBjb250cm9scyBhbmQgZm9yIEZNIFRyYW5zbWl0dGVyIGNvbnRyb2xzLjwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKworICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+MC4yODwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMDktMDgtMjY8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPmdsPC9hdXRob3Jpbml0aWFscz4KKwk8cmV2cmVtYXJrPkFkZGVkIFY0TDJfQ0lEX0JBTkRfU1RPUF9GSUxURVIgZG9jdW1lbnRhdGlvbi48L3JldnJlbWFyaz4KKyAgICAgIDwvcmV2aXNpb24+CisKKyAgICAgIDxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjAuMjc8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDA5LTA4LTE1PC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5tY2M8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+QWRkZWQgbGlidjRsIGFuZCBSZW1vdGUgQ29udHJvbGxlciBkb2N1bWVudGF0aW9uOworYWRkZWQgdjRsMmdyYWIgYW5kIGtleXRhYmxlIGFwcGxpY2F0aW9uIGV4YW1wbGVzLjwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKworICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+MC4yNjwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMDktMDctMjM8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPmh2PC9hdXRob3Jpbml0aWFscz4KKwk8cmV2cmVtYXJrPkZpbmFsaXplZCB0aGUgUkRTIGNhcHR1cmUgQVBJLiBBZGRlZCBtb2R1bGF0b3IgYW5kIFJEUyBlbmNvZGVyCitjYXBhYmlsaXRpZXMuIEFkZGVkIHN1cHBvcnQgZm9yIHN0cmluZyBjb250cm9scy48L3JldnJlbWFyaz4KKyAgICAgIDwvcmV2aXNpb24+CisKKyAgICAgIDxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjAuMjU8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDA5LTAxLTE4PC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5odjwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz5BZGRlZCBwaXhlbCBmb3JtYXRzIFZZVVksIE5WMTYgYW5kIE5WNjEsIGFuZCBjaGFuZ2VkCit0aGUgZGVidWcgaW9jdGxzIFZJRElPQ19EQkdfRy9TX1JFR0lTVEVSIGFuZCBWSURJT0NfREJHX0dfQ0hJUF9JREVOVC4KK0FkZGVkIGNhbWVyYSBjb250cm9scyBWNEwyX0NJRF9aT09NX0FCU09MVVRFLCBWNEwyX0NJRF9aT09NX1JFTEFUSVZFLAorVjRMMl9DSURfWk9PTV9DT05USU5VT1VTIGFuZCBWNEwyX0NJRF9QUklWQUNZLjwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKworICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+MC4yNDwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMDgtMDMtMDQ8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPm1oczwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz5BZGRlZCBwaXhlbCBmb3JtYXRzIFkxNiBhbmQgU0JHR1IxNiwgbmV3IGNvbnRyb2xzCithbmQgYSBjYW1lcmEgY29udHJvbHMgY2xhc3MuIFJlbW92ZWQgVklESU9DX0cvU19NUEVHQ09NUC48L3JldnJlbWFyaz4KKyAgICAgIDwvcmV2aXNpb24+CisKKyAgICAgIDxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjAuMjM8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDA3LTA4LTMwPC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5taHM8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+Rml4ZWQgYSB0eXBvIGluIFZJRElPQ19EQkdfRy9TX1JFR0lTVEVSLgorQ2xhcmlmaWVkIHRoZSBieXRlIG9yZGVyIG9mIHBhY2tlZCBwaXhlbCBmb3JtYXRzLjwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKworICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+MC4yMjwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMDctMDgtMjk8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPm1oczwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz5BZGRlZCB0aGUgVmlkZW8gT3V0cHV0IE92ZXJsYXkgaW50ZXJmYWNlLCBuZXcgTVBFRworY29udHJvbHMsIFY0TDJfRklFTERfSU5URVJMQUNFRF9UQiBhbmQgVjRMMl9GSUVMRF9JTlRFUkxBQ0VEX0JULAorVklESU9DX0RCR19HL1NfUkVHSVNURVIsIFZJRElPQ18oVFJZXylFTkNPREVSX0NNRCwKK1ZJRElPQ19HX0NISVBfSURFTlQsIFZJRElPQ19HX0VOQ19JTkRFWCwgbmV3IHBpeGVsIGZvcm1hdHMuCitDbGFyaWZpY2F0aW9ucyBpbiB0aGUgY3JvcHBpbmcgY2hhcHRlciwgYWJvdXQgUkdCIHBpeGVsIGZvcm1hdHMsIHRoZQorbW1hcCgpLCBwb2xsKCksIHNlbGVjdCgpLCByZWFkKCkgYW5kIHdyaXRlKCkgZnVuY3Rpb25zLiBUeXBvZ3JhcGhpY2FsCitmaXhlcy48L3JldnJlbWFyaz4KKyAgICAgIDwvcmV2aXNpb24+CisKKyAgICAgIDxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjAuMjE8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDA2LTEyLTE5PC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5taHM8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+Rml4ZWQgYSBsaW5rIGluIHRoZSBWSURJT0NfR19FWFRfQ1RSTFMgc2VjdGlvbi48L3JldnJlbWFyaz4KKyAgICAgIDwvcmV2aXNpb24+CisKKyAgICAgIDxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjAuMjA8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDA2LTExLTI0PC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5taHM8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+Q2xhcmlmaWVkIHRoZSBwdXJwb3NlIG9mIHRoZSBhdWRpb3NldCBmaWVsZCBpbgorc3RydWN0IHY0bDJfaW5wdXQgYW5kIHY0bDJfb3V0cHV0LjwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKworICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+MC4xOTwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMDYtMTAtMTk8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPm1oczwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz5Eb2N1bWVudGVkIFY0TDJfUElYX0ZNVF9SR0I0NDQuPC9yZXZyZW1hcms+CisgICAgICA8L3JldmlzaW9uPgorCisgICAgICA8cmV2aXNpb24+CisJPHJldm51bWJlcj4wLjE4PC9yZXZudW1iZXI+CisJPGRhdGU+MjAwNi0xMC0xODwvZGF0ZT4KKwk8YXV0aG9yaW5pdGlhbHM+bWhzPC9hdXRob3Jpbml0aWFscz4KKwk8cmV2cmVtYXJrPkFkZGVkIHRoZSBkZXNjcmlwdGlvbiBvZiBleHRlbmRlZCBjb250cm9scyBieSBIYW5zCitWZXJrdWlsLiBMaW5rZWQgVjRMMl9QSVhfRk1UX01QRUcgdG8gVjRMMl9DSURfTVBFR19TVFJFQU1fVFlQRS48L3JldnJlbWFyaz4KKyAgICAgIDwvcmV2aXNpb24+CisKKyAgICAgIDxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjAuMTc8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDA2LTEwLTEyPC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5taHM8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+Q29ycmVjdGVkIFY0TDJfUElYX0ZNVF9ITTEyIGRlc2NyaXB0aW9uLjwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKworICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+MC4xNjwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMDYtMTAtMDg8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPm1oczwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz5WSURJT0NfRU5VTV9GUkFNRVNJWkVTIGFuZAorVklESU9DX0VOVU1fRlJBTUVJTlRFUlZBTFMgYXJlIG5vdyBwYXJ0IG9mIHRoZSBBUEkuPC9yZXZyZW1hcms+CisgICAgICA8L3JldmlzaW9uPgorCisgICAgICA8cmV2aXNpb24+CisJPHJldm51bWJlcj4wLjE1PC9yZXZudW1iZXI+CisJPGRhdGU+MjAwNi0wOS0yMzwvZGF0ZT4KKwk8YXV0aG9yaW5pdGlhbHM+bWhzPC9hdXRob3Jpbml0aWFscz4KKwk8cmV2cmVtYXJrPkNsZWFuZWQgdXAgdGhlIGJpYmxpb2dyYXBoeSwgYWRkZWQgQlQuNjUzIGFuZAorQlQuMTExOS4gY2FwdHVyZS5jL3N0YXJ0X2NhcHR1cmluZygpIGZvciB1c2VyIHBvaW50ZXIgSS9PIGRpZCBub3QKK2luaXRpYWxpemUgdGhlIGJ1ZmZlciBpbmRleC4gRG9jdW1lbnRlZCB0aGUgVjRMIE1QRUcgYW5kIE1KUEVHCitWSURfVFlQRXMgYW5kIFY0TDJfUElYX0ZNVF9TQkdHUjguIFVwZGF0ZWQgdGhlIGxpc3Qgb2YgcmVzZXJ2ZWQgcGl4ZWwKK2Zvcm1hdHMuIFNlZSB0aGUgaGlzdG9yeSBjaGFwdGVyIGZvciBBUEkgY2hhbmdlcy48L3JldnJlbWFyaz4KKyAgICAgIDwvcmV2aXNpb24+CisKKyAgICAgIDxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjAuMTQ8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDA2LTA5LTE0PC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5tcjwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz5BZGRlZCBWSURJT0NfRU5VTV9GUkFNRVNJWkVTIGFuZAorVklESU9DX0VOVU1fRlJBTUVJTlRFUlZBTFMgcHJvcG9zYWwgZm9yIGZyYW1lIGZvcm1hdCBlbnVtZXJhdGlvbiBvZgorZGlnaXRhbCBkZXZpY2VzLjwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKworICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+MC4xMzwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMDYtMDQtMDc8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPm1oczwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz5Db3JyZWN0ZWQgdGhlIGRlc2NyaXB0aW9uIG9mIHN0cnVjdCB2NGwyX3dpbmRvdworY2xpcHMuIE5ldyBWNEwyX1NURF8gYW5kIFY0TDJfVFVORVJfTU9ERV9MQU5HMV9MQU5HMgorZGVmaW5lcy48L3JldnJlbWFyaz4KKyAgICAgIDwvcmV2aXNpb24+CisKKyAgICAgIDxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjAuMTI8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDA2LTAyLTAzPC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5taHM8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+Q29ycmVjdGVkIHRoZSBkZXNjcmlwdGlvbiBvZiBzdHJ1Y3QKK3Y0bDJfY2FwdHVyZXBhcm0gYW5kIHY0bDJfb3V0cHV0cGFybS48L3JldnJlbWFyaz4KKyAgICAgIDwvcmV2aXNpb24+CisKKyAgICAgIDxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjAuMTE8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDA2LTAxLTI3PC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5taHM8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+SW1wcm92ZWQgdGhlIGRlc2NyaXB0aW9uIG9mIHN0cnVjdAordjRsMl90dW5lci48L3JldnJlbWFyaz4KKyAgICAgIDwvcmV2aXNpb24+CisKKyAgICAgIDxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjAuMTA8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDA2LTAxLTEwPC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5taHM8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+VklESU9DX0dfSU5QVVQgYW5kIFZJRElPQ19TX1BBUk0KK2NsYXJpZmljYXRpb25zLjwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKworICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+MC45PC9yZXZudW1iZXI+CisJPGRhdGU+MjAwNS0xMS0yNzwvZGF0ZT4KKwk8YXV0aG9yaW5pdGlhbHM+bWhzPC9hdXRob3Jpbml0aWFscz4KKwk8cmV2cmVtYXJrPkltcHJvdmVkIHRoZSA1MjUgbGluZSBudW1iZXJpbmcgZGlhZ3JhbS4gSGFucworVmVya3VpbCBhbmQgSSByZXdyb3RlIHRoZSBzbGljZWQgVkJJIHNlY3Rpb24uIEhlIGFsc28gY29udHJpYnV0ZWQgYQorVklESU9DX0xPR19TVEFUVVMgcGFnZS4gRml4ZWQgVklESU9DX1NfU1REIGNhbGwgaW4gdGhlIHZpZGVvIHN0YW5kYXJkCitzZWxlY3Rpb24gZXhhbXBsZS4gVmFyaW91cyB1cGRhdGVzLjwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKworICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+MC44PC9yZXZudW1iZXI+CisJPGRhdGU+MjAwNC0xMC0wNDwvZGF0ZT4KKwk8YXV0aG9yaW5pdGlhbHM+bWhzPC9hdXRob3Jpbml0aWFscz4KKwk8cmV2cmVtYXJrPlNvbWVob3cgYSBwaWVjZSBvZiBqdW5rIHNsaXBwZWQgaW50byB0aGUgY2FwdHVyZQorZXhhbXBsZSwgcmVtb3ZlZC48L3JldnJlbWFyaz4KKyAgICAgIDwvcmV2aXNpb24+CisKKyAgICAgIDxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjAuNzwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMDQtMDktMTk8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPm1oczwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz5GaXhlZCB2aWRlbyBzdGFuZGFyZCBzZWxlY3Rpb24sIGNvbnRyb2wKK2VudW1lcmF0aW9uLCBkb3duc2NhbGluZyBhbmQgYXNwZWN0IGV4YW1wbGUuIEFkZGVkIHJlYWQgYW5kIHVzZXIKK3BvaW50ZXIgaS9vIHRvIHZpZGVvIGNhcHR1cmUgZXhhbXBsZS48L3JldnJlbWFyaz4KKyAgICAgIDwvcmV2aXNpb24+CisKKyAgICAgIDxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjAuNjwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMDQtMDgtMDE8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPm1oczwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz52NGwyX2J1ZmZlciBjaGFuZ2VzLCBhZGRlZCB2aWRlbyBjYXB0dXJlIGV4YW1wbGUsCit2YXJpb3VzIGNvcnJlY3Rpb25zLjwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKworICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+MC41PC9yZXZudW1iZXI+CisJPGRhdGU+MjAwMy0xMS0wNTwvZGF0ZT4KKwk8YXV0aG9yaW5pdGlhbHM+bWhzPC9hdXRob3Jpbml0aWFscz4KKwk8cmV2cmVtYXJrPlBpeGVsIGZvcm1hdCBlcnJhdHVtLjwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKworICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+MC40PC9yZXZudW1iZXI+CisJPGRhdGU+MjAwMy0wOS0xNzwvZGF0ZT4KKwk8YXV0aG9yaW5pdGlhbHM+bWhzPC9hdXRob3Jpbml0aWFscz4KKwk8cmV2cmVtYXJrPkNvcnJlY3RlZCBzb3VyY2UgYW5kIE1ha2VmaWxlIHRvIGdlbmVyYXRlIGEgUERGLgorU0dNTCBmaXhlcy4gQWRkZWQgbGF0ZXN0IEFQSSBjaGFuZ2VzLiBDbG9zZWQgZ2FwcyBpbiB0aGUgaGlzdG9yeQorY2hhcHRlci48L3JldnJlbWFyaz4KKyAgICAgIDwvcmV2aXNpb24+CisKKyAgICAgIDxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjAuMzwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMDMtMDItMDU8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPm1oczwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz5Bbm90aGVyIGRyYWZ0LCBtb3JlIGNvcnJlY3Rpb25zLjwvcmV2cmVtYXJrPgorICAgICAgPC9yZXZpc2lvbj4KKworICAgICAgPHJldmlzaW9uPgorCTxyZXZudW1iZXI+MC4yPC9yZXZudW1iZXI+CisJPGRhdGU+MjAwMy0wMS0xNTwvZGF0ZT4KKwk8YXV0aG9yaW5pdGlhbHM+bWhzPC9hdXRob3Jpbml0aWFscz4KKwk8cmV2cmVtYXJrPlNlY29uZCBkcmFmdCwgd2l0aCBjb3JyZWN0aW9ucyBwb2ludGVkIG91dCBieSBHZXJkCitLbm9yci48L3JldnJlbWFyaz4KKyAgICAgIDwvcmV2aXNpb24+CisKKyAgICAgIDxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjAuMTwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMDItMTItMDE8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPm1oczwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz5GaXJzdCBkcmFmdCwgYmFzZWQgb24gZG9jdW1lbnRhdGlvbiBieSBCaWxsIERpcmtzCithbmQgZGlzY3Vzc2lvbnMgb24gdGhlIFY0TCBtYWlsaW5nIGxpc3QuPC9yZXZyZW1hcms+CisgICAgICA8L3JldmlzaW9uPgorICAgIDwvcmV2aGlzdG9yeT4KKzwvcGFydGluZm8+CisKKzx0aXRsZT5WaWRlbyBmb3IgTGludXggVHdvIEFQSSBTcGVjaWZpY2F0aW9uPC90aXRsZT4KKyA8c3VidGl0bGU+UmV2aXNpb24gNC40PC9zdWJ0aXRsZT4KKworICA8Y2hhcHRlciBpZD0iY29tbW9uIj4KKyAgICAmc3ViLWNvbW1vbjsKKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJwaXhmbXQiPgorICAgICZzdWItcGl4Zm10OworICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImlvIj4KKyAgICAmc3ViLWlvOworICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImRldmljZXMiPgorICAgIDx0aXRsZT5JbnRlcmZhY2VzPC90aXRsZT4KKworICAgIDxzZWN0aW9uIGlkPSJjYXB0dXJlIj4gJnN1Yi1kZXYtY2FwdHVyZTsgPC9zZWN0aW9uPgorICAgIDxzZWN0aW9uIGlkPSJvdmVybGF5Ij4gJnN1Yi1kZXYtb3ZlcmxheTsgPC9zZWN0aW9uPgorICAgIDxzZWN0aW9uIGlkPSJvdXRwdXQiPiAmc3ViLWRldi1vdXRwdXQ7IDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbiBpZD0ib3NkIj4gJnN1Yi1kZXYtb3NkOyA8L3NlY3Rpb24+CisgICAgPHNlY3Rpb24gaWQ9ImNvZGVjIj4gJnN1Yi1kZXYtY29kZWM7IDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbiBpZD0iZWZmZWN0Ij4gJnN1Yi1kZXYtZWZmZWN0OyA8L3NlY3Rpb24+CisgICAgPHNlY3Rpb24gaWQ9InJhdy12YmkiPiAmc3ViLWRldi1yYXctdmJpOyA8L3NlY3Rpb24+CisgICAgPHNlY3Rpb24gaWQ9InNsaWNlZCI+ICZzdWItZGV2LXNsaWNlZC12Ymk7IDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbiBpZD0idHR4Ij4gJnN1Yi1kZXYtdGVsZXRleHQ7IDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbiBpZD0icmFkaW8iPiAmc3ViLWRldi1yYWRpbzsgPC9zZWN0aW9uPgorICAgIDxzZWN0aW9uIGlkPSJyZHMiPiAmc3ViLWRldi1yZHM7IDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbiBpZD0ic2RyIj4gJnN1Yi1kZXYtc2RyOyA8L3NlY3Rpb24+CisgICAgPHNlY3Rpb24gaWQ9ImV2ZW50Ij4gJnN1Yi1kZXYtZXZlbnQ7IDwvc2VjdGlvbj4KKyAgICA8c2VjdGlvbiBpZD0ic3ViZGV2Ij4gJnN1Yi1kZXYtc3ViZGV2OyA8L3NlY3Rpb24+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iZHJpdmVyIj4KKwkgICZzdWItZHJpdmVyOworICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImxpYnY0bCI+CisJICAmc3ViLWxpYnY0bDsKKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJjb21wYXQiPgorCSAgJnN1Yi1jb21wYXQ7CisgIDwvY2hhcHRlcj4KKworICA8YXBwZW5kaXggaWQ9InVzZXItZnVuYyI+CisgIDx0aXRsZT5GdW5jdGlvbiBSZWZlcmVuY2U8L3RpdGxlPgorCisgICAgPCEtLSBLZWVwIHRoaXMgYWxwaGFiZXRpY2FsbHkgc29ydGVkLiAtLT4KKworICAgICZzdWItY2xvc2U7CisgICAgJnN1Yi1pb2N0bDsKKyAgICA8IS0tIEFsbCBpb2N0bHMgZ28gaGVyZS4gLS0+CisgICAgJnN1Yi1jcmVhdGUtYnVmczsKKyAgICAmc3ViLWNyb3BjYXA7CisgICAgJnN1Yi1kYmctZy1jaGlwLWluZm87CisgICAgJnN1Yi1kYmctZy1yZWdpc3RlcjsKKyAgICAmc3ViLWRlY29kZXItY21kOworICAgICZzdWItZHFldmVudDsKKyAgICAmc3ViLWR2LXRpbWluZ3MtY2FwOworICAgICZzdWItZW5jb2Rlci1jbWQ7CisgICAgJnN1Yi1lbnVtYXVkaW87CisgICAgJnN1Yi1lbnVtYXVkaW9vdXQ7CisgICAgJnN1Yi1lbnVtLWR2LXRpbWluZ3M7CisgICAgJnN1Yi1lbnVtLWZtdDsKKyAgICAmc3ViLWVudW0tZnJhbWVzaXplczsKKyAgICAmc3ViLWVudW0tZnJhbWVpbnRlcnZhbHM7CisgICAgJnN1Yi1lbnVtLWZyZXEtYmFuZHM7CisgICAgJnN1Yi1lbnVtaW5wdXQ7CisgICAgJnN1Yi1lbnVtb3V0cHV0OworICAgICZzdWItZW51bXN0ZDsKKyAgICAmc3ViLWV4cGJ1ZjsKKyAgICAmc3ViLWctYXVkaW87CisgICAgJnN1Yi1nLWF1ZGlvb3V0OworICAgICZzdWItZy1jcm9wOworICAgICZzdWItZy1jdHJsOworICAgICZzdWItZy1kdi10aW1pbmdzOworICAgICZzdWItZy1lZGlkOworICAgICZzdWItZy1lbmMtaW5kZXg7CisgICAgJnN1Yi1nLWV4dC1jdHJsczsKKyAgICAmc3ViLWctZmJ1ZjsKKyAgICAmc3ViLWctZm10OworICAgICZzdWItZy1mcmVxdWVuY3k7CisgICAgJnN1Yi1nLWlucHV0OworICAgICZzdWItZy1qcGVnY29tcDsKKyAgICAmc3ViLWctbW9kdWxhdG9yOworICAgICZzdWItZy1vdXRwdXQ7CisgICAgJnN1Yi1nLXBhcm07CisgICAgJnN1Yi1nLXByaW9yaXR5OworICAgICZzdWItZy1zZWxlY3Rpb247CisgICAgJnN1Yi1nLXNsaWNlZC12YmktY2FwOworICAgICZzdWItZy1zdGQ7CisgICAgJnN1Yi1nLXR1bmVyOworICAgICZzdWItbG9nLXN0YXR1czsKKyAgICAmc3ViLW92ZXJsYXk7CisgICAgJnN1Yi1wcmVwYXJlLWJ1ZjsKKyAgICAmc3ViLXFidWY7CisgICAgJnN1Yi1xdWVyeWJ1ZjsKKyAgICAmc3ViLXF1ZXJ5Y2FwOworICAgICZzdWItcXVlcnljdHJsOworICAgICZzdWItcXVlcnktZHYtdGltaW5nczsKKyAgICAmc3ViLXF1ZXJ5c3RkOworICAgICZzdWItcmVxYnVmczsKKyAgICAmc3ViLXMtaHctZnJlcS1zZWVrOworICAgICZzdWItc3RyZWFtb247CisgICAgJnN1Yi1zdWJkZXYtZW51bS1mcmFtZS1pbnRlcnZhbDsKKyAgICAmc3ViLXN1YmRldi1lbnVtLWZyYW1lLXNpemU7CisgICAgJnN1Yi1zdWJkZXYtZW51bS1tYnVzLWNvZGU7CisgICAgJnN1Yi1zdWJkZXYtZy1jcm9wOworICAgICZzdWItc3ViZGV2LWctZm10OworICAgICZzdWItc3ViZGV2LWctZnJhbWUtaW50ZXJ2YWw7CisgICAgJnN1Yi1zdWJkZXYtZy1zZWxlY3Rpb247CisgICAgJnN1Yi1zdWJzY3JpYmUtZXZlbnQ7CisgICAgPCEtLSBFbmQgb2YgaW9jdGxzLiAtLT4KKyAgICAmc3ViLW1tYXA7CisgICAgJnN1Yi1tdW5tYXA7CisgICAgJnN1Yi1vcGVuOworICAgICZzdWItcG9sbDsKKyAgICAmc3ViLXJlYWQ7CisgICAgJnN1Yi1zZWxlY3Q7CisgICAgJnN1Yi13cml0ZTsKKyAgPC9hcHBlbmRpeD4KKworICA8YXBwZW5kaXg+CisgICAgPHRpdGxlPkNvbW1vbiBkZWZpbml0aW9ucyBmb3IgVjRMMiBhbmQgVjRMMiBzdWJkZXYgaW50ZXJmYWNlczwvdGl0bGU+CisgICAgICAmc3ViLXNlbGVjdGlvbnMtY29tbW9uOworICA8L2FwcGVuZGl4PgorCisgIDxhcHBlbmRpeCBpZD0idmlkZW9kZXYiPgorICAgIDx0aXRsZT5WaWRlbyBGb3IgTGludXggVHdvIEhlYWRlciBGaWxlPC90aXRsZT4KKyAgICAmc3ViLXZpZGVvZGV2Mi1oOworICA8L2FwcGVuZGl4PgorCisgIDxhcHBlbmRpeCBpZD0iY2FwdHVyZS1leGFtcGxlIj4KKyAgICA8dGl0bGU+VmlkZW8gQ2FwdHVyZSBFeGFtcGxlPC90aXRsZT4KKyAgICAmc3ViLWNhcHR1cmUtYzsKKyAgPC9hcHBlbmRpeD4KKworICA8YXBwZW5kaXggaWQ9InY0bDJncmFiLWV4YW1wbGUiPgorICAgIDx0aXRsZT5WaWRlbyBHcmFiYmVyIGV4YW1wbGUgdXNpbmcgbGlidjRsPC90aXRsZT4KKyAgICA8cGFyYT5UaGlzIHByb2dyYW0gZGVtb25zdHJhdGVzIGhvdyB0byBncmFiIFY0TDIgaW1hZ2VzIGluIHBwbSBmb3JtYXQgYnkKK3VzaW5nIGxpYnY0bCBoYW5kbGVycy4gVGhlIGFkdmFudGFnZSBpcyB0aGF0IHRoaXMgZ3JhYmJlciBjYW4gcG90ZW50aWFsbHkgd29yaword2l0aCBhbnkgVjRMMiBkcml2ZXIuPC9wYXJhPgorICAgICZzdWItdjRsMmdyYWItYzsKKyAgPC9hcHBlbmRpeD4KKworICAmc3ViLW1lZGlhLWluZGljZXM7CisKKyAgJnN1Yi1iaWJsaW87CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdjRsMmdyYWIuYy54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3Y0bDJncmFiLmMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlZDEyZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3Y0bDJncmFiLmMueG1sCkBAIC0wLDAgKzEsMTY0IEBACis8cHJvZ3JhbWxpc3Rpbmc+CisvKiBWNEwyIHZpZGVvIHBpY3R1cmUgZ3JhYmJlcgorICAgQ29weXJpZ2h0IChDKSAyMDA5IE1hdXJvIENhcnZhbGhvIENoZWhhYiAmbHQ7bWNoZWhhYkBpbmZyYWRlYWQub3JnJmd0OworCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICovCisKKyNpbmNsdWRlICZsdDtzdGRpby5oJmd0OworI2luY2x1ZGUgJmx0O3N0ZGxpYi5oJmd0OworI2luY2x1ZGUgJmx0O3N0cmluZy5oJmd0OworI2luY2x1ZGUgJmx0O2ZjbnRsLmgmZ3Q7CisjaW5jbHVkZSAmbHQ7ZXJybm8uaCZndDsKKyNpbmNsdWRlICZsdDtzeXMvaW9jdGwuaCZndDsKKyNpbmNsdWRlICZsdDtzeXMvdHlwZXMuaCZndDsKKyNpbmNsdWRlICZsdDtzeXMvdGltZS5oJmd0OworI2luY2x1ZGUgJmx0O3N5cy9tbWFuLmgmZ3Q7CisjaW5jbHVkZSAmbHQ7bGludXgvdmlkZW9kZXYyLmgmZ3Q7CisjaW5jbHVkZSAiLi4vbGlidjRsL2luY2x1ZGUvbGlidjRsMi5oIgorCisjZGVmaW5lIENMRUFSKHgpIG1lbXNldCgmYW1wOyh4KSwgMCwgc2l6ZW9mKHgpKQorCitzdHJ1Y3QgYnVmZmVyIHsKKyAgICAgICAgdm9pZCAgICpzdGFydDsKKyAgICAgICAgc2l6ZV90IGxlbmd0aDsKK307CisKK3N0YXRpYyB2b2lkIHhpb2N0bChpbnQgZmgsIGludCByZXF1ZXN0LCB2b2lkICphcmcpCit7CisgICAgICAgIGludCByOworCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICByID0gdjRsMl9pb2N0bChmaCwgcmVxdWVzdCwgYXJnKTsKKyAgICAgICAgfSB3aGlsZSAociA9PSAtMSAmYW1wOyZhbXA7ICgoZXJybm8gPT0gRUlOVFIpIHx8IChlcnJubyA9PSBFQUdBSU4pKSk7CisKKyAgICAgICAgaWYgKHIgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImVycm9yICVkLCAlc1xuIiwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOworICAgICAgICB9Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICAgICAgc3RydWN0IDxsaW5rIGxpbmtlbmQ9InY0bDItZm9ybWF0Ij52NGwyX2Zvcm1hdDwvbGluaz4gICAgICAgICAgICAgIGZtdDsKKyAgICAgICAgc3RydWN0IDxsaW5rIGxpbmtlbmQ9InY0bDItYnVmZmVyIj52NGwyX2J1ZmZlcjwvbGluaz4gICAgICAgICAgICAgIGJ1ZjsKKyAgICAgICAgc3RydWN0IDxsaW5rIGxpbmtlbmQ9InY0bDItcmVxdWVzdGJ1ZmZlcnMiPnY0bDJfcmVxdWVzdGJ1ZmZlcnM8L2xpbms+ICAgICAgcmVxOworICAgICAgICBlbnVtIDxsaW5rIGxpbmtlbmQ9InY0bDItYnVmLXR5cGUiPnY0bDJfYnVmX3R5cGU8L2xpbms+ICAgICAgICAgICAgICB0eXBlOworICAgICAgICBmZF9zZXQgICAgICAgICAgICAgICAgICAgICAgICAgIGZkczsKKyAgICAgICAgc3RydWN0IHRpbWV2YWwgICAgICAgICAgICAgICAgICB0djsKKyAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLCBmZCA9IC0xOworICAgICAgICB1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICAgICAgIGksIG5fYnVmZmVyczsKKyAgICAgICAgY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGV2X25hbWUgPSAiL2Rldi92aWRlbzAiOworICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9uYW1lWzI1Nl07CisgICAgICAgIEZJTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmZvdXQ7CisgICAgICAgIHN0cnVjdCBidWZmZXIgICAgICAgICAgICAgICAgICAgKmJ1ZmZlcnM7CisKKyAgICAgICAgZmQgPSB2NGwyX29wZW4oZGV2X25hbWUsIE9fUkRXUiB8IE9fTk9OQkxPQ0ssIDApOworICAgICAgICBpZiAoZmQgJmx0OyAwKSB7CisgICAgICAgICAgICAgICAgcGVycm9yKCJDYW5ub3Qgb3BlbiBkZXZpY2UiKTsKKyAgICAgICAgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgICAgIH0KKworICAgICAgICBDTEVBUihmbXQpOworICAgICAgICBmbXQudHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTsKKyAgICAgICAgZm10LmZtdC5waXgud2lkdGggICAgICAgPSA2NDA7CisgICAgICAgIGZtdC5mbXQucGl4LmhlaWdodCAgICAgID0gNDgwOworICAgICAgICBmbXQuZm10LnBpeC5waXhlbGZvcm1hdCA9IFY0TDJfUElYX0ZNVF9SR0IyNDsKKyAgICAgICAgZm10LmZtdC5waXguZmllbGQgICAgICAgPSBWNEwyX0ZJRUxEX0lOVEVSTEFDRUQ7CisgICAgICAgIHhpb2N0bChmZCwgVklESU9DX1NfRk1ULCAmYW1wO2ZtdCk7CisgICAgICAgIGlmIChmbXQuZm10LnBpeC5waXhlbGZvcm1hdCAhPSBWNEwyX1BJWF9GTVRfUkdCMjQpIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIkxpYnY0bCBkaWRuJ3QgYWNjZXB0IFJHQjI0IGZvcm1hdC4gQ2FuJ3QgcHJvY2VlZC5cbiIpOworICAgICAgICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKGZtdC5mbXQucGl4LndpZHRoICE9IDY0MCkgfHwgKGZtdC5mbXQucGl4LmhlaWdodCAhPSA0ODApKQorICAgICAgICAgICAgICAgIHByaW50ZigiV2FybmluZzogZHJpdmVyIGlzIHNlbmRpbmcgaW1hZ2UgYXQgJWR4JWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBmbXQuZm10LnBpeC53aWR0aCwgZm10LmZtdC5waXguaGVpZ2h0KTsKKworICAgICAgICBDTEVBUihyZXEpOworICAgICAgICByZXEuY291bnQgPSAyOworICAgICAgICByZXEudHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTsKKyAgICAgICAgcmVxLm1lbW9yeSA9IFY0TDJfTUVNT1JZX01NQVA7CisgICAgICAgIHhpb2N0bChmZCwgVklESU9DX1JFUUJVRlMsICZhbXA7cmVxKTsKKworICAgICAgICBidWZmZXJzID0gY2FsbG9jKHJlcS5jb3VudCwgc2l6ZW9mKCpidWZmZXJzKSk7CisgICAgICAgIGZvciAobl9idWZmZXJzID0gMDsgbl9idWZmZXJzICZsdDsgcmVxLmNvdW50OyArK25fYnVmZmVycykgeworICAgICAgICAgICAgICAgIENMRUFSKGJ1Zik7CisKKyAgICAgICAgICAgICAgICBidWYudHlwZSAgICAgICAgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkU7CisgICAgICAgICAgICAgICAgYnVmLm1lbW9yeSAgICAgID0gVjRMMl9NRU1PUllfTU1BUDsKKyAgICAgICAgICAgICAgICBidWYuaW5kZXggICAgICAgPSBuX2J1ZmZlcnM7CisKKyAgICAgICAgICAgICAgICB4aW9jdGwoZmQsIFZJRElPQ19RVUVSWUJVRiwgJmFtcDtidWYpOworCisgICAgICAgICAgICAgICAgYnVmZmVyc1tuX2J1ZmZlcnNdLmxlbmd0aCA9IGJ1Zi5sZW5ndGg7CisgICAgICAgICAgICAgICAgYnVmZmVyc1tuX2J1ZmZlcnNdLnN0YXJ0ID0gdjRsMl9tbWFwKE5VTEwsIGJ1Zi5sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQsIGJ1Zi5tLm9mZnNldCk7CisKKyAgICAgICAgICAgICAgICBpZiAoTUFQX0ZBSUxFRCA9PSBidWZmZXJzW25fYnVmZmVyc10uc3RhcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcnJvcigibW1hcCIpOworICAgICAgICAgICAgICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaSA9IDA7IGkgJmx0OyBuX2J1ZmZlcnM7ICsraSkgeworICAgICAgICAgICAgICAgIENMRUFSKGJ1Zik7CisgICAgICAgICAgICAgICAgYnVmLnR5cGUgPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkU7CisgICAgICAgICAgICAgICAgYnVmLm1lbW9yeSA9IFY0TDJfTUVNT1JZX01NQVA7CisgICAgICAgICAgICAgICAgYnVmLmluZGV4ID0gaTsKKyAgICAgICAgICAgICAgICB4aW9jdGwoZmQsIFZJRElPQ19RQlVGLCAmYW1wO2J1Zik7CisgICAgICAgIH0KKyAgICAgICAgdHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTsKKworICAgICAgICB4aW9jdGwoZmQsIFZJRElPQ19TVFJFQU1PTiwgJmFtcDt0eXBlKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSAmbHQ7IDIwOyBpKyspIHsKKyAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICBGRF9aRVJPKCZhbXA7ZmRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEZEX1NFVChmZCwgJmFtcDtmZHMpOworCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBUaW1lb3V0LiAqLworICAgICAgICAgICAgICAgICAgICAgICAgdHYudHZfc2VjID0gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHR2LnR2X3VzZWMgPSAwOworCisgICAgICAgICAgICAgICAgICAgICAgICByID0gc2VsZWN0KGZkICsgMSwgJmFtcDtmZHMsIE5VTEwsIE5VTEwsICZhbXA7dHYpOworICAgICAgICAgICAgICAgIH0gd2hpbGUgKChyID09IC0xICZhbXA7JmFtcDsgKGVycm5vID0gRUlOVFIpKSk7CisgICAgICAgICAgICAgICAgaWYgKHIgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcnJvcigic2VsZWN0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJybm87CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgQ0xFQVIoYnVmKTsKKyAgICAgICAgICAgICAgICBidWYudHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTsKKyAgICAgICAgICAgICAgICBidWYubWVtb3J5ID0gVjRMMl9NRU1PUllfTU1BUDsKKyAgICAgICAgICAgICAgICB4aW9jdGwoZmQsIFZJRElPQ19EUUJVRiwgJmFtcDtidWYpOworCisgICAgICAgICAgICAgICAgc3ByaW50ZihvdXRfbmFtZSwgIm91dCUwM2QucHBtIiwgaSk7CisgICAgICAgICAgICAgICAgZm91dCA9IGZvcGVuKG91dF9uYW1lLCAidyIpOworICAgICAgICAgICAgICAgIGlmICghZm91dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcGVycm9yKCJDYW5ub3Qgb3BlbiBpbWFnZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmcHJpbnRmKGZvdXQsICJQNlxuJWQgJWQgMjU1XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgZm10LmZtdC5waXgud2lkdGgsIGZtdC5mbXQucGl4LmhlaWdodCk7CisgICAgICAgICAgICAgICAgZndyaXRlKGJ1ZmZlcnNbYnVmLmluZGV4XS5zdGFydCwgYnVmLmJ5dGVzdXNlZCwgMSwgZm91dCk7CisgICAgICAgICAgICAgICAgZmNsb3NlKGZvdXQpOworCisgICAgICAgICAgICAgICAgeGlvY3RsKGZkLCBWSURJT0NfUUJVRiwgJmFtcDtidWYpOworICAgICAgICB9CisKKyAgICAgICAgdHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTsKKyAgICAgICAgeGlvY3RsKGZkLCBWSURJT0NfU1RSRUFNT0ZGLCAmYW1wO3R5cGUpOworICAgICAgICBmb3IgKGkgPSAwOyBpICZsdDsgbl9idWZmZXJzOyArK2kpCisgICAgICAgICAgICAgICAgdjRsMl9tdW5tYXAoYnVmZmVyc1tpXS5zdGFydCwgYnVmZmVyc1tpXS5sZW5ndGgpOworICAgICAgICB2NGwyX2Nsb3NlKGZkKTsKKworICAgICAgICByZXR1cm4gMDsKK30KKzwvcHJvZ3JhbWxpc3Rpbmc+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1jcmVhdGUtYnVmcy54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1jcmVhdGUtYnVmcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGZmZTc0ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWNyZWF0ZS1idWZzLnhtbApAQCAtMCwwICsxLDE2NiBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2MtY3JlYXRlLWJ1ZnMiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBWSURJT0NfQ1JFQVRFX0JVRlM8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPlZJRElPQ19DUkVBVEVfQlVGUzwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5DcmVhdGUgYnVmZmVycyBmb3IgTWVtb3J5IE1hcHBlZCBvciBVc2VyIFBvaW50ZXIgb3IgRE1BIEJ1ZmZlcgorICAgIEkvTzwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zdHJ1Y3QgdjRsMl9jcmVhdGVfYnVmZmVycyAqPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPiZmZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VklESU9DX0NSRUFURV9CVUZTPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8bm90ZT4KKyAgICAgIDx0aXRsZT5FeHBlcmltZW50YWw8L3RpdGxlPgorICAgICAgPHBhcmE+VGhpcyBpcyBhbiA8bGluayBsaW5rZW5kPSJleHBlcmltZW50YWwiPiBleHBlcmltZW50YWwgPC9saW5rPgorICAgICAgaW50ZXJmYWNlIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuPC9wYXJhPgorICAgIDwvbm90ZT4KKworICAgIDxwYXJhPlRoaXMgaW9jdGwgaXMgdXNlZCB0byBjcmVhdGUgYnVmZmVycyBmb3IgPGxpbmsgbGlua2VuZD0ibW1hcCI+bWVtb3J5CittYXBwZWQ8L2xpbms+IG9yIDxsaW5rIGxpbmtlbmQ9InVzZXJwIj51c2VyIHBvaW50ZXI8L2xpbms+IG9yIDxsaW5rCitsaW5rZW5kPSJkbWFidWYiPkRNQSBidWZmZXI8L2xpbms+IEkvTy4gSXQgY2FuIGJlIHVzZWQgYXMgYW4gYWx0ZXJuYXRpdmUgb3IgaW4KK2FkZGl0aW9uIHRvIHRoZSA8Y29uc3RhbnQ+VklESU9DX1JFUUJVRlM8L2NvbnN0YW50PiBpb2N0bCwgd2hlbiBhIHRpZ2h0ZXIKK2NvbnRyb2wgb3ZlciBidWZmZXJzIGlzIHJlcXVpcmVkLiBUaGlzIGlvY3RsIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8KK2NyZWF0ZSBidWZmZXJzIG9mIGRpZmZlcmVudCBzaXplcy48L3BhcmE+CisKKyAgICA8cGFyYT5UbyBhbGxvY2F0ZSB0aGUgZGV2aWNlIGJ1ZmZlcnMgYXBwbGljYXRpb25zIG11c3QgaW5pdGlhbGl6ZSB0aGUKK3JlbGV2YW50IGZpZWxkcyBvZiB0aGUgPHN0cnVjdG5hbWU+djRsMl9jcmVhdGVfYnVmZmVyczwvc3RydWN0bmFtZT4gc3RydWN0dXJlLgorVGhlIDxzdHJ1Y3RmaWVsZD5jb3VudDwvc3RydWN0ZmllbGQ+IGZpZWxkIG11c3QgYmUgc2V0IHRvIHRoZSBudW1iZXIgb2YKK3JlcXVlc3RlZCBidWZmZXJzLCB0aGUgPHN0cnVjdGZpZWxkPm1lbW9yeTwvc3RydWN0ZmllbGQ+IGZpZWxkIHNwZWNpZmllcyB0aGUKK3JlcXVlc3RlZCBJL08gbWV0aG9kIGFuZCB0aGUgPHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD4gYXJyYXkgbXVzdCBiZQoremVyb2VkLjwvcGFyYT4KKworICAgIDxwYXJhPlRoZSA8c3RydWN0ZmllbGQ+Zm9ybWF0PC9zdHJ1Y3RmaWVsZD4gZmllbGQgc3BlY2lmaWVzIHRoZSBpbWFnZSBmb3JtYXQKK3RoYXQgdGhlIGJ1ZmZlcnMgbXVzdCBiZSBhYmxlIHRvIGhhbmRsZS4gVGhlIGFwcGxpY2F0aW9uIGhhcyB0byBmaWxsIGluIHRoaXMKKyZ2NGwyLWZvcm1hdDsuIFVzdWFsbHkgdGhpcyB3aWxsIGJlIGRvbmUgdXNpbmcgdGhlCis8Y29uc3RhbnQ+VklESU9DX1RSWV9GTVQ8L2NvbnN0YW50PiBvciA8Y29uc3RhbnQ+VklESU9DX0dfRk1UPC9jb25zdGFudD4gaW9jdGwoKQordG8gZW5zdXJlIHRoYXQgdGhlIHJlcXVlc3RlZCBmb3JtYXQgaXMgc3VwcG9ydGVkIGJ5IHRoZSBkcml2ZXIuIFVuc3VwcG9ydGVkCitmb3JtYXRzIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yLjwvcGFyYT4KKworICAgIDxwYXJhPlRoZSBidWZmZXJzIGNyZWF0ZWQgYnkgdGhpcyBpb2N0bCB3aWxsIGhhdmUgYXMgbWluaW11bSBzaXplIHRoZSBzaXplCitkZWZpbmVkIGJ5IHRoZSA8c3RydWN0ZmllbGQ+Zm9ybWF0LnBpeC5zaXplaW1hZ2U8L3N0cnVjdGZpZWxkPiBmaWVsZC4gSWYgdGhlCis8c3RydWN0ZmllbGQ+Zm9ybWF0LnBpeC5zaXplaW1hZ2U8L3N0cnVjdGZpZWxkPiBmaWVsZCBpcyBsZXNzIHRoYW4gdGhlIG1pbmltdW0KK3JlcXVpcmVkIGZvciB0aGUgZ2l2ZW4gZm9ybWF0LCB0aGVuIDxzdHJ1Y3RmaWVsZD5zaXplaW1hZ2U8L3N0cnVjdGZpZWxkPiB3aWxsIGJlCitpbmNyZWFzZWQgYnkgdGhlIGRyaXZlciB0byB0aGF0IG1pbmltdW0gdG8gYWxsb2NhdGUgdGhlIGJ1ZmZlcnMuIElmIGl0IGlzCitsYXJnZXIsIHRoZW4gdGhlIHZhbHVlIHdpbGwgYmUgdXNlZCBhcy1pcy4gVGhlIHNhbWUgYXBwbGllcyB0byB0aGUKKzxzdHJ1Y3RmaWVsZD5zaXplaW1hZ2U8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiB0aGUKKzxzdHJ1Y3RuYW1lPnY0bDJfcGxhbmVfcGl4X2Zvcm1hdDwvc3RydWN0bmFtZT4gc3RydWN0dXJlIGluIHRoZSBjYXNlIG9mCittdWx0aXBsYW5hciBmb3JtYXRzLjwvcGFyYT4KKworICAgIDxwYXJhPldoZW4gdGhlIGlvY3RsIGlzIGNhbGxlZCB3aXRoIGEgcG9pbnRlciB0byB0aGlzIHN0cnVjdHVyZSB0aGUgZHJpdmVyCit3aWxsIGF0dGVtcHQgdG8gYWxsb2NhdGUgdXAgdG8gdGhlIHJlcXVlc3RlZCBudW1iZXIgb2YgYnVmZmVycyBhbmQgc3RvcmUgdGhlCithY3R1YWwgbnVtYmVyIGFsbG9jYXRlZCBhbmQgdGhlIHN0YXJ0aW5nIGluZGV4IGluIHRoZQorPHN0cnVjdGZpZWxkPmNvdW50PC9zdHJ1Y3RmaWVsZD4gYW5kIHRoZSA8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPiBmaWVsZHMKK3Jlc3BlY3RpdmVseS4gT24gcmV0dXJuIDxzdHJ1Y3RmaWVsZD5jb3VudDwvc3RydWN0ZmllbGQ+IGNhbiBiZSBzbWFsbGVyIHRoYW4KK3RoZSBudW1iZXIgcmVxdWVzdGVkLiBUaGUgZHJpdmVyIG1heSBhbHNvIGluY3JlYXNlIGJ1ZmZlciBzaXplcyBpZiByZXF1aXJlZCwKK2hvd2V2ZXIsIGl0IHdpbGwgbm90IHVwZGF0ZSA8c3RydWN0ZmllbGQ+c2l6ZWltYWdlPC9zdHJ1Y3RmaWVsZD4gZmllbGQgdmFsdWVzLgorVGhlIHVzZXIgaGFzIHRvIHVzZSA8Y29uc3RhbnQ+VklESU9DX1FVRVJZQlVGPC9jb25zdGFudD4gdG8gcmV0cmlldmUgdGhhdAoraW5mb3JtYXRpb24uPC9wYXJhPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLWNyZWF0ZS1idWZmZXJzIj4KKyAgICAgIDx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9jcmVhdGVfYnVmZmVyczwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3Mtc3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIHN0YXJ0aW5nIGJ1ZmZlciBpbmRleCwgcmV0dXJuZWQgYnkgdGhlIGRyaXZlci48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmNvdW50PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIG51bWJlciBvZiBidWZmZXJzIHJlcXVlc3RlZCBvciBncmFudGVkLiBJZiBjb3VudCA9PSAwLCB0aGVuCisJICAgIDxjb25zdGFudD5WSURJT0NfQ1JFQVRFX0JVRlM8L2NvbnN0YW50PiB3aWxsIHNldCA8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPgorCSAgICB0byB0aGUgY3VycmVudCBudW1iZXIgb2YgY3JlYXRlZCBidWZmZXJzLCBhbmQgaXQgd2lsbCBjaGVjayB0aGUgdmFsaWRpdHkgb2YKKwkgICAgPHN0cnVjdGZpZWxkPm1lbW9yeTwvc3RydWN0ZmllbGQ+IGFuZCA8c3RydWN0ZmllbGQ+Zm9ybWF0LnR5cGU8L3N0cnVjdGZpZWxkPi4KKwkgICAgSWYgdGhvc2UgYXJlIGludmFsaWQgLTEgaXMgcmV0dXJuZWQgYW5kIGVycm5vIGlzIHNldCB0byAmRUlOVkFMOywKKwkgICAgb3RoZXJ3aXNlIDxjb25zdGFudD5WSURJT0NfQ1JFQVRFX0JVRlM8L2NvbnN0YW50PiByZXR1cm5zIDAuIEl0IHdpbGwKKwkgICAgbmV2ZXIgc2V0IGVycm5vIHRvICZFQlVTWTsgaW4gdGhpcyBwYXJ0aWN1bGFyIGNhc2UuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5tZW1vcnk8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5BcHBsaWNhdGlvbnMgc2V0IHRoaXMgZmllbGQgdG8KKzxjb25zdGFudD5WNEwyX01FTU9SWV9NTUFQPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9NRU1PUllfRE1BQlVGPC9jb25zdGFudD4gb3IKKzxjb25zdGFudD5WNEwyX01FTU9SWV9VU0VSUFRSPC9jb25zdGFudD4uIFNlZSA8eHJlZiBsaW5rZW5kPSJ2NGwyLW1lbW9yeSIKKy8+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PiZ2NGwyLWZvcm1hdDs8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmZvcm1hdDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkZpbGxlZCBpbiBieSB0aGUgYXBwbGljYXRpb24sIHByZXNlcnZlZCBieSB0aGUgZHJpdmVyLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cmVzZXJ2ZWQ8L3N0cnVjdGZpZWxkPls4XTwvZW50cnk+CisJICAgIDxlbnRyeT5BIHBsYWNlIGhvbGRlciBmb3IgZnV0dXJlIGV4dGVuc2lvbnMuIERyaXZlcnMgYW5kIGFwcGxpY2F0aW9ucworbXVzdCBzZXQgdGhlIGFycmF5IHRvIHplcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICAmcmV0dXJuLXZhbHVlOworCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FTk9NRU08L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+Tm8gbWVtb3J5IHRvIGFsbG9jYXRlIGJ1ZmZlcnMgZm9yIDxsaW5rIGxpbmtlbmQ9Im1tYXAiPm1lbW9yeQorbWFwcGVkPC9saW5rPiBJL08uPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FSU5WQUw8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIGJ1ZmZlciB0eXBlICg8c3RydWN0ZmllbGQ+Zm9ybWF0LnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZCksCityZXF1ZXN0ZWQgSS9PIG1ldGhvZCAoPHN0cnVjdGZpZWxkPm1lbW9yeTwvc3RydWN0ZmllbGQ+KSBvciBmb3JtYXQKKyg8c3RydWN0ZmllbGQ+Zm9ybWF0PC9zdHJ1Y3RmaWVsZD4gZmllbGQpIGlzIG5vdCB2YWxpZC48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWNyb3BjYXAueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtY3JvcGNhcC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBjYjk0MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWNyb3BjYXAueG1sCkBAIC0wLDAgKzEsMTY2IEBACis8cmVmZW50cnkgaWQ9InZpZGlvYy1jcm9wY2FwIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgVklESU9DX0NST1BDQVA8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPlZJRElPQ19DUk9QQ0FQPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPkluZm9ybWF0aW9uIGFib3V0IHRoZSB2aWRlbyBjcm9wcGluZyBhbmQgc2NhbGluZyBhYmlsaXRpZXM8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c3RydWN0IHY0bDJfY3JvcGNhcAorKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19DUk9QQ0FQPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5BcHBsaWNhdGlvbnMgdXNlIHRoaXMgZnVuY3Rpb24gdG8gcXVlcnkgdGhlIGNyb3BwaW5nCitsaW1pdHMsIHRoZSBwaXhlbCBhc3BlY3Qgb2YgaW1hZ2VzIGFuZCB0byBjYWxjdWxhdGUgc2NhbGUgZmFjdG9ycy4KK1RoZXkgc2V0IHRoZSA8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mIGEgdjRsMl9jcm9wY2FwCitzdHJ1Y3R1cmUgdG8gdGhlIHJlc3BlY3RpdmUgYnVmZmVyIChzdHJlYW0pIHR5cGUgYW5kIGNhbGwgdGhlCis8Y29uc3RhbnQ+VklESU9DX0NST1BDQVA8L2NvbnN0YW50PiBpb2N0bCB3aXRoIGEgcG9pbnRlciB0byB0aGlzCitzdHJ1Y3R1cmUuIERyaXZlcnMgZmlsbCB0aGUgcmVzdCBvZiB0aGUgc3RydWN0dXJlLiBUaGUgcmVzdWx0cyBhcmUKK2NvbnN0YW50IGV4Y2VwdCB3aGVuIHN3aXRjaGluZyB0aGUgdmlkZW8gc3RhbmRhcmQuIFJlbWVtYmVyIHRoaXMKK3N3aXRjaCBjYW4gb2NjdXIgaW1wbGljaXQgd2hlbiBzd2l0Y2hpbmcgdGhlIHZpZGVvIGlucHV0IG9yCitvdXRwdXQuPC9wYXJhPgorCis8cGFyYT5EbyBub3QgdXNlIHRoZSBtdWx0aXBsYW5hciBidWZmZXIgdHlwZXMuICBVc2UgPGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTwvY29uc3RhbnQ+CitpbnN0ZWFkIG9mIDxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkVfTVBMQU5FPC9jb25zdGFudD4KK2FuZCB1c2UgPGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVklERU9fT1VUUFVUPC9jb25zdGFudD4gaW5zdGVhZCBvZgorPGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVklERU9fT1VUUFVUX01QTEFORTwvY29uc3RhbnQ+LjwvcGFyYT4KKworICAgIDxwYXJhPlRoaXMgaW9jdGwgbXVzdCBiZSBpbXBsZW1lbnRlZCBmb3IgdmlkZW8gY2FwdHVyZSBvciBvdXRwdXQgZGV2aWNlcyB0aGF0CitzdXBwb3J0IGNyb3BwaW5nIGFuZC9vciBzY2FsaW5nIGFuZC9vciBoYXZlIG5vbi1zcXVhcmUgcGl4ZWxzLCBhbmQgZm9yIG92ZXJsYXkgZGV2aWNlcy48L3BhcmE+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItY3JvcGNhcCI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfY3JvcGNhcDwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3Mtc3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UeXBlIG9mIHRoZSBkYXRhIHN0cmVhbSwgc2V0IGJ5IHRoZSBhcHBsaWNhdGlvbi4KK09ubHkgdGhlc2UgdHlwZXMgYXJlIHZhbGlkIGhlcmU6Cis8Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVQ8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZJREVPX09WRVJMQVk8L2NvbnN0YW50Pi4gU2VlIDx4cmVmIGxpbmtlbmQ9InY0bDItYnVmLXR5cGUiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5zdHJ1Y3QgPGxpbmsgbGlua2VuZD0idjRsMi1yZWN0LWNyb3AiPnY0bDJfcmVjdDwvbGluaz48L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmJvdW5kczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkRlZmluZXMgdGhlIHdpbmRvdyB3aXRoaW4gY2FwdHVyaW5nIG9yIG91dHB1dCBpcworcG9zc2libGUsIHRoaXMgbWF5IGV4Y2x1ZGUgZm9yIGV4YW1wbGUgdGhlIGhvcml6b250YWwgYW5kIHZlcnRpY2FsCitibGFua2luZyBhcmVhcy4gVGhlIGNyb3BwaW5nIHJlY3RhbmdsZSBjYW5ub3QgZXhjZWVkIHRoZXNlIGxpbWl0cy4KK1dpZHRoIGFuZCBoZWlnaHQgYXJlIGRlZmluZWQgaW4gcGl4ZWxzLCB0aGUgZHJpdmVyIHdyaXRlciBpcyBmcmVlIHRvCitjaG9vc2Ugb3JpZ2luIGFuZCB1bml0cyBvZiB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0gaW4gdGhlIGFuYWxvZworZG9tYWluLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5zdHJ1Y3QgPGxpbmsgbGlua2VuZD0idjRsMi1yZWN0LWNyb3AiPnY0bDJfcmVjdDwvbGluaz48L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmRlZnJlY3Q8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5EZWZhdWx0IGNyb3BwaW5nIHJlY3RhbmdsZSwgaXQgc2hhbGwgY292ZXIgdGhlCisid2hvbGUgcGljdHVyZSIuIEFzc3VtaW5nIHBpeGVsIGFzcGVjdCAxLzEgdGhpcyBjb3VsZCBiZSBmb3IgZXhhbXBsZSBhCis2NDAmbmJzcDsmdGltZXM7Jm5ic3A7NDgwIHJlY3RhbmdsZSBmb3IgTlRTQywgYQorNzY4Jm5ic3A7JnRpbWVzOyZuYnNwOzU3NiByZWN0YW5nbGUgZm9yIFBBTCBhbmQgU0VDQU0gY2VudGVyZWQgb3ZlcgordGhlIGFjdGl2ZSBwaWN0dXJlIGFyZWEuIFRoZSBzYW1lIGNvLW9yZGluYXRlIHN5c3RlbSBhcyBmb3IKKwkgICAgPHN0cnVjdGZpZWxkPmJvdW5kczwvc3RydWN0ZmllbGQ+IGlzIHVzZWQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PiZ2NGwyLWZyYWN0OzwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cGl4ZWxhc3BlY3Q8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48cGFyYT5UaGlzIGlzIHRoZSBwaXhlbCBhc3BlY3QgKHkgLyB4KSB3aGVuIG5vCitzY2FsaW5nIGlzIGFwcGxpZWQsIHRoZSByYXRpbyBvZiB0aGUgYWN0dWFsIHNhbXBsaW5nCitmcmVxdWVuY3kgYW5kIHRoZSBmcmVxdWVuY3kgcmVxdWlyZWQgdG8gZ2V0IHNxdWFyZQorcGl4ZWxzLjwvcGFyYT48cGFyYT5XaGVuIGNyb3BwaW5nIGNvb3JkaW5hdGVzIHJlZmVyIHRvIHNxdWFyZSBwaXhlbHMsCit0aGUgZHJpdmVyIHNldHMgPHN0cnVjdGZpZWxkPnBpeGVsYXNwZWN0PC9zdHJ1Y3RmaWVsZD4gdG8gMS8xLiBPdGhlcgorY29tbW9uIHZhbHVlcyBhcmUgNTQvNTkgZm9yIFBBTCBhbmQgU0VDQU0sIDExLzEwIGZvciBOVFNDIHNhbXBsZWQKK2FjY29yZGluZyB0byBbPHhyZWYgbGlua2VuZD0iaXR1NjAxIiAvPl0uPC9wYXJhPjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDwhLS0gTkIgdGhpcyB0YWJsZSBpcyBkdXBsaWNhdGVkIGluIHRoZSBvdmVybGF5IGNoYXB0ZXIuIC0tPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLXJlY3QtY3JvcCI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfcmVjdDwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3Mtc3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X19zMzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmxlZnQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5Ib3Jpem9udGFsIG9mZnNldCBvZiB0aGUgdG9wLCBsZWZ0IGNvcm5lciBvZiB0aGUKK3JlY3RhbmdsZSwgaW4gcGl4ZWxzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3MzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dG9wPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VmVydGljYWwgb2Zmc2V0IG9mIHRoZSB0b3AsIGxlZnQgY29ybmVyIG9mIHRoZQorcmVjdGFuZ2xlLCBpbiBwaXhlbHMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD53aWR0aDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PldpZHRoIG9mIHRoZSByZWN0YW5nbGUsIGluIHBpeGVscy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmhlaWdodDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkhlaWdodCBvZiB0aGUgcmVjdGFuZ2xlLCBpbiBwaXhlbHMuPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICAmcmV0dXJuLXZhbHVlOworCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FSU5WQUw8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlICZ2NGwyLWNyb3BjYXA7IDxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gaXMKK2ludmFsaWQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1kYmctZy1jaGlwLWluZm8ueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZGJnLWctY2hpcC1pbmZvLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzQ2MDNjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZGJnLWctY2hpcC1pbmZvLnhtbApAQCAtMCwwICsxLDIwNyBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2MtZGJnLWctY2hpcC1pbmZvIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgVklESU9DX0RCR19HX0NISVBfSU5GTzwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX0RCR19HX0NISVBfSU5GTzwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5JZGVudGlmeSB0aGUgY2hpcHMgb24gYSBUViBjYXJkPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCB2NGwyX2RiZ19jaGlwX2luZm8KKyo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfREJHX0dfQ0hJUF9JTkZPPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8bm90ZT4KKyAgICAgIDx0aXRsZT5FeHBlcmltZW50YWw8L3RpdGxlPgorCisgICAgICA8cGFyYT5UaGlzIGlzIGFuIDxsaW5rCitsaW5rZW5kPSJleHBlcmltZW50YWwiPmV4cGVyaW1lbnRhbDwvbGluaz4gaW50ZXJmYWNlIGFuZCBtYXkgY2hhbmdlIGluCit0aGUgZnV0dXJlLjwvcGFyYT4KKyAgICA8L25vdGU+CisKKyAgICA8cGFyYT5Gb3IgZHJpdmVyIGRlYnVnZ2luZyBwdXJwb3NlcyB0aGlzIGlvY3RsIGFsbG93cyB0ZXN0CithcHBsaWNhdGlvbnMgdG8gcXVlcnkgdGhlIGRyaXZlciBhYm91dCB0aGUgY2hpcHMgcHJlc2VudCBvbiB0aGUgVFYKK2NhcmQuIFJlZ3VsYXIgYXBwbGljYXRpb25zIG11c3Qgbm90IHVzZSBpdC4gV2hlbiB5b3UgZm91bmQgYSBjaGlwCitzcGVjaWZpYyBidWcsIHBsZWFzZSBjb250YWN0IHRoZSBsaW51eC1tZWRpYSBtYWlsaW5nIGxpc3QgKCZ2NGwtbWw7KQorc28gaXQgY2FuIGJlIGZpeGVkLjwvcGFyYT4KKworICAgIDxwYXJhPkFkZGl0aW9uYWxseSB0aGUgTGludXgga2VybmVsIG11c3QgYmUgY29tcGlsZWQgd2l0aCB0aGUKKzxjb25zdGFudD5DT05GSUdfVklERU9fQURWX0RFQlVHPC9jb25zdGFudD4gb3B0aW9uIHRvIGVuYWJsZSB0aGlzIGlvY3RsLjwvcGFyYT4KKworICAgIDxwYXJhPlRvIHF1ZXJ5IHRoZSBkcml2ZXIgYXBwbGljYXRpb25zIG11c3QgaW5pdGlhbGl6ZSB0aGUKKzxzdHJ1Y3RmaWVsZD5tYXRjaC50eXBlPC9zdHJ1Y3RmaWVsZD4gYW5kCis8c3RydWN0ZmllbGQ+bWF0Y2guYWRkcjwvc3RydWN0ZmllbGQ+IG9yIDxzdHJ1Y3RmaWVsZD5tYXRjaC5uYW1lPC9zdHJ1Y3RmaWVsZD4KK2ZpZWxkcyBvZiBhICZ2NGwyLWRiZy1jaGlwLWluZm87CithbmQgY2FsbCA8Y29uc3RhbnQ+VklESU9DX0RCR19HX0NISVBfSU5GTzwvY29uc3RhbnQ+IHdpdGggYSBwb2ludGVyIHRvCit0aGlzIHN0cnVjdHVyZS4gT24gc3VjY2VzcyB0aGUgZHJpdmVyIHN0b3JlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUKK3NlbGVjdGVkIGNoaXAgaW4gdGhlIDxzdHJ1Y3RmaWVsZD5uYW1lPC9zdHJ1Y3RmaWVsZD4gYW5kCis8c3RydWN0ZmllbGQ+ZmxhZ3M8L3N0cnVjdGZpZWxkPiBmaWVsZHMuPC9wYXJhPgorCisgICAgPHBhcmE+V2hlbiA8c3RydWN0ZmllbGQ+bWF0Y2gudHlwZTwvc3RydWN0ZmllbGQ+IGlzCis8Y29uc3RhbnQ+VjRMMl9DSElQX01BVENIX0JSSURHRTwvY29uc3RhbnQ+LAorPHN0cnVjdGZpZWxkPm1hdGNoLmFkZHI8L3N0cnVjdGZpZWxkPiBzZWxlY3RzIHRoZSBudGggYnJpZGdlICdjaGlwJworb24gdGhlIFRWIGNhcmQuIFlvdSBjYW4gZW51bWVyYXRlIGFsbCBjaGlwcyBieSBzdGFydGluZyBhdCB6ZXJvIGFuZAoraW5jcmVtZW50aW5nIDxzdHJ1Y3RmaWVsZD5tYXRjaC5hZGRyPC9zdHJ1Y3RmaWVsZD4gYnkgb25lIHVudGlsCis8Y29uc3RhbnQ+VklESU9DX0RCR19HX0NISVBfSU5GTzwvY29uc3RhbnQ+IGZhaWxzIHdpdGggYW4gJkVJTlZBTDsuCitUaGUgbnVtYmVyIHplcm8gYWx3YXlzIHNlbGVjdHMgdGhlIGJyaWRnZSBjaGlwIGl0c2VsZiwgJmVnOyB0aGUgY2hpcAorY29ubmVjdGVkIHRvIHRoZSBQQ0kgb3IgVVNCIGJ1cy4gTm9uLXplcm8gbnVtYmVycyBpZGVudGlmeSBzcGVjaWZpYworcGFydHMgb2YgdGhlIGJyaWRnZSBjaGlwIHN1Y2ggYXMgYW4gQUM5NyByZWdpc3RlciBibG9jay48L3BhcmE+CisKKyAgICA8cGFyYT5XaGVuIDxzdHJ1Y3RmaWVsZD5tYXRjaC50eXBlPC9zdHJ1Y3RmaWVsZD4gaXMKKzxjb25zdGFudD5WNEwyX0NISVBfTUFUQ0hfU1VCREVWPC9jb25zdGFudD4sCis8c3RydWN0ZmllbGQ+bWF0Y2guYWRkcjwvc3RydWN0ZmllbGQ+IHNlbGVjdHMgdGhlIG50aCBzdWItZGV2aWNlLiBUaGlzCithbGxvd3MgeW91IHRvIGVudW1lcmF0ZSBvdmVyIGFsbCBzdWItZGV2aWNlcy48L3BhcmE+CisKKyAgICA8cGFyYT5PbiBzdWNjZXNzLCB0aGUgPHN0cnVjdGZpZWxkPm5hbWU8L3N0cnVjdGZpZWxkPiBmaWVsZCB3aWxsCitjb250YWluIGEgY2hpcCBuYW1lIGFuZCB0aGUgPHN0cnVjdGZpZWxkPmZsYWdzPC9zdHJ1Y3RmaWVsZD4gZmllbGQgd2lsbAorY29udGFpbiA8Y29uc3RhbnQ+VjRMMl9DSElQX0ZMX1JFQURBQkxFPC9jb25zdGFudD4gaWYgdGhlIGRyaXZlciBzdXBwb3J0cworcmVhZGluZyByZWdpc3RlcnMgZnJvbSB0aGUgZGV2aWNlIG9yIDxjb25zdGFudD5WNEwyX0NISVBfRkxfV1JJVEFCTEU8L2NvbnN0YW50PgoraWYgdGhlIGRyaXZlciBzdXBwb3J0cyB3cml0aW5nIHJlZ2lzdGVycyB0byB0aGUgZGV2aWNlLjwvcGFyYT4KKworICAgIDxwYXJhPldlIHJlY29tbWVuZGVkIHRoZSA8YXBwbGljYXRpb24+djRsMi1kYmc8L2FwcGxpY2F0aW9uPgordXRpbGl0eSBvdmVyIGNhbGxpbmcgdGhpcyBpb2N0bCBkaXJlY3RseS4gSXQgaXMgYXZhaWxhYmxlIGZyb20gdGhlCitMaW51eFRWIHY0bC1kdmIgcmVwb3NpdG9yeTsgc2VlIDx1bGluawordXJsPSJodHRwOi8vbGludXh0di5vcmcvcmVwby8iPmh0dHA6Ly9saW51eHR2Lm9yZy9yZXBvLzwvdWxpbms+IGZvcgorYWNjZXNzIGluc3RydWN0aW9ucy48L3BhcmE+CisKKyAgICA8IS0tIE5vdGUgZm9yIGNvbnZlbmllbmNlIHZpZGlvYy1kYmctZy1yZWdpc3Rlci5zZ21sCisJIGNvbnRhaW5zIGEgZHVwbGljYXRlIG9mIHRoaXMgdGFibGUuIC0tPgorICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0ibmFtZS12NGwyLWRiZy1tYXRjaCI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfZGJnX21hdGNoPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjQiPgorCSZjcy11c3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5TZWUgPHhyZWYgbGlua2VuZD0ibmFtZS1jaGlwLW1hdGNoLXR5cGVzIiAvPiBmb3IgYSBsaXN0IG9mCitwb3NzaWJsZSB0eXBlcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+dW5pb248L2VudHJ5PgorCSAgICA8ZW50cnk+KGFub255bW91cyk8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5hZGRyPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+TWF0Y2ggYSBjaGlwIGJ5IHRoaXMgbnVtYmVyLCBpbnRlcnByZXRlZCBhY2NvcmRpbmcKK3RvIHRoZSA8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IGZpZWxkLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+Y2hhcjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+bmFtZVszMl08L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5NYXRjaCBhIGNoaXAgYnkgdGhpcyBuYW1lLCBpbnRlcnByZXRlZCBhY2NvcmRpbmcKK3RvIHRoZSA8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IGZpZWxkLiBDdXJyZW50bHkgdW51c2VkLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1kYmctY2hpcC1pbmZvIj4KKyAgICAgIDx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9kYmdfY2hpcF9pbmZvPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5zdHJ1Y3QgdjRsMl9kYmdfbWF0Y2g8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm1hdGNoPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+SG93IHRvIG1hdGNoIHRoZSBjaGlwLCBzZWUgPHhyZWYgbGlua2VuZD0ibmFtZS12NGwyLWRiZy1tYXRjaCIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PmNoYXI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm5hbWVbMzJdPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIG5hbWUgb2YgdGhlIGNoaXAuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5mbGFnczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlNldCBieSB0aGUgZHJpdmVyLiBJZiA8Y29uc3RhbnQ+VjRMMl9DSElQX0ZMX1JFQURBQkxFPC9jb25zdGFudD4KK2lzIHNldCwgdGhlbiB0aGUgZHJpdmVyIHN1cHBvcnRzIHJlYWRpbmcgcmVnaXN0ZXJzIGZyb20gdGhlIGRldmljZS4gSWYKKzxjb25zdGFudD5WNEwyX0NISVBfRkxfV1JJVEFCTEU8L2NvbnN0YW50PiBpcyBzZXQsIHRoZW4gaXQgc3VwcG9ydHMgd3JpdGluZyByZWdpc3RlcnMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZFs4XTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlc2VydmVkIGZpZWxkcywgYm90aCBhcHBsaWNhdGlvbiBhbmQgZHJpdmVyIG11c3Qgc2V0IHRoZXNlIHRvIDAuPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPCEtLSBOb3RlIGZvciBjb252ZW5pZW5jZSB2aWRpb2MtZGJnLWctcmVnaXN0ZXIuc2dtbAorCSBjb250YWlucyBhIGR1cGxpY2F0ZSBvZiB0aGlzIHRhYmxlLiAtLT4KKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9Im5hbWUtY2hpcC1tYXRjaC10eXBlcyI+CisgICAgICA8dGl0bGU+Q2hpcCBNYXRjaCBUeXBlczwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1kZWY7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSElQX01BVENIX0JSSURHRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICA8ZW50cnk+TWF0Y2ggdGhlIG50aCBjaGlwIG9uIHRoZSBjYXJkLCB6ZXJvIGZvciB0aGUKKwkgICAgYnJpZGdlIGNoaXAuIERvZXMgbm90IG1hdGNoIHN1Yi1kZXZpY2VzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSElQX01BVENIX1NVQkRFVjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjQ8L2VudHJ5PgorCSAgICA8ZW50cnk+TWF0Y2ggdGhlIG50aCBzdWItZGV2aWNlLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSA8c3RydWN0ZmllbGQ+bWF0Y2hfdHlwZTwvc3RydWN0ZmllbGQ+IGlzIGludmFsaWQgb3IKK25vIGRldmljZSBjb3VsZCBiZSBtYXRjaGVkLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWRiZy1nLXJlZ2lzdGVyLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWRiZy1nLXJlZ2lzdGVyLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDAzOGU3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZGJnLWctcmVnaXN0ZXIueG1sCkBAIC0wLDAgKzEsMjI3IEBACis8cmVmZW50cnkgaWQ9InZpZGlvYy1kYmctZy1yZWdpc3RlciI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19EQkdfR19SRUdJU1RFUiwgVklESU9DX0RCR19TX1JFR0lTVEVSPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5WSURJT0NfREJHX0dfUkVHSVNURVI8L3JlZm5hbWU+CisgICAgPHJlZm5hbWU+VklESU9DX0RCR19TX1JFR0lTVEVSPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPlJlYWQgb3Igd3JpdGUgaGFyZHdhcmUgcmVnaXN0ZXJzPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCB2NGwyX2RiZ19yZWdpc3RlciAqPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5jb25zdCBzdHJ1Y3QgdjRsMl9kYmdfcmVnaXN0ZXIKKyo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfREJHX0dfUkVHSVNURVIsIFZJRElPQ19EQkdfU19SRUdJU1RFUjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgPG5vdGU+CisgICAgICA8dGl0bGU+RXhwZXJpbWVudGFsPC90aXRsZT4KKworICAgICAgPHBhcmE+VGhpcyBpcyBhbiA8bGluayBsaW5rZW5kPSJleHBlcmltZW50YWwiPmV4cGVyaW1lbnRhbDwvbGluaz4KK2ludGVyZmFjZSBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLjwvcGFyYT4KKyAgICA8L25vdGU+CisKKyAgICA8cGFyYT5Gb3IgZHJpdmVyIGRlYnVnZ2luZyBwdXJwb3NlcyB0aGVzZSBpb2N0bHMgYWxsb3cgdGVzdAorYXBwbGljYXRpb25zIHRvIGFjY2VzcyBoYXJkd2FyZSByZWdpc3RlcnMgZGlyZWN0bHkuIFJlZ3VsYXIKK2FwcGxpY2F0aW9ucyBtdXN0IG5vdCB1c2UgdGhlbS48L3BhcmE+CisKKyAgICA8cGFyYT5TaW5jZSB3cml0aW5nIG9yIGV2ZW4gcmVhZGluZyByZWdpc3RlcnMgY2FuIGplb3BhcmRpemUgdGhlCitzeXN0ZW0gc2VjdXJpdHksIGl0cyBzdGFiaWxpdHkgYW5kIGRhbWFnZSB0aGUgaGFyZHdhcmUsIGJvdGggaW9jdGxzCityZXF1aXJlIHN1cGVydXNlciBwcml2aWxlZ2VzLiBBZGRpdGlvbmFsbHkgdGhlIExpbnV4IGtlcm5lbCBtdXN0IGJlCitjb21waWxlZCB3aXRoIHRoZSA8Y29uc3RhbnQ+Q09ORklHX1ZJREVPX0FEVl9ERUJVRzwvY29uc3RhbnQ+IG9wdGlvbgordG8gZW5hYmxlIHRoZXNlIGlvY3Rscy48L3BhcmE+CisKKyAgICA8cGFyYT5UbyB3cml0ZSBhIHJlZ2lzdGVyIGFwcGxpY2F0aW9ucyBtdXN0IGluaXRpYWxpemUgYWxsIGZpZWxkcworb2YgYSAmdjRsMi1kYmctcmVnaXN0ZXI7IGV4Y2VwdCBmb3IgPHN0cnVjdGZpZWxkPnNpemU8L3N0cnVjdGZpZWxkPiBhbmQgY2FsbAorPGNvbnN0YW50PlZJRElPQ19EQkdfU19SRUdJU1RFUjwvY29uc3RhbnQ+IHdpdGggYSBwb2ludGVyIHRvIHRoaXMKK3N0cnVjdHVyZS4gVGhlIDxzdHJ1Y3RmaWVsZD5tYXRjaC50eXBlPC9zdHJ1Y3RmaWVsZD4gYW5kCis8c3RydWN0ZmllbGQ+bWF0Y2guYWRkcjwvc3RydWN0ZmllbGQ+IG9yIDxzdHJ1Y3RmaWVsZD5tYXRjaC5uYW1lPC9zdHJ1Y3RmaWVsZD4KK2ZpZWxkcyBzZWxlY3QgYSBjaGlwIG9uIHRoZSBUVgorY2FyZCwgdGhlIDxzdHJ1Y3RmaWVsZD5yZWc8L3N0cnVjdGZpZWxkPiBmaWVsZCBzcGVjaWZpZXMgYSByZWdpc3RlcgorbnVtYmVyIGFuZCB0aGUgPHN0cnVjdGZpZWxkPnZhbDwvc3RydWN0ZmllbGQ+IGZpZWxkIHRoZSB2YWx1ZSB0byBiZQord3JpdHRlbiBpbnRvIHRoZSByZWdpc3Rlci48L3BhcmE+CisKKyAgICA8cGFyYT5UbyByZWFkIGEgcmVnaXN0ZXIgYXBwbGljYXRpb25zIG11c3QgaW5pdGlhbGl6ZSB0aGUKKzxzdHJ1Y3RmaWVsZD5tYXRjaC50eXBlPC9zdHJ1Y3RmaWVsZD4sCis8c3RydWN0ZmllbGQ+bWF0Y2guYWRkcjwvc3RydWN0ZmllbGQ+IG9yIDxzdHJ1Y3RmaWVsZD5tYXRjaC5uYW1lPC9zdHJ1Y3RmaWVsZD4gYW5kCis8c3RydWN0ZmllbGQ+cmVnPC9zdHJ1Y3RmaWVsZD4gZmllbGRzLCBhbmQgY2FsbAorPGNvbnN0YW50PlZJRElPQ19EQkdfR19SRUdJU1RFUjwvY29uc3RhbnQ+IHdpdGggYSBwb2ludGVyIHRvIHRoaXMKK3N0cnVjdHVyZS4gT24gc3VjY2VzcyB0aGUgZHJpdmVyIHN0b3JlcyB0aGUgcmVnaXN0ZXIgdmFsdWUgaW4gdGhlCis8c3RydWN0ZmllbGQ+dmFsPC9zdHJ1Y3RmaWVsZD4gZmllbGQgYW5kIHRoZSBzaXplIChpbiBieXRlcykgb2YgdGhlCit2YWx1ZSBpbiA8c3RydWN0ZmllbGQ+c2l6ZTwvc3RydWN0ZmllbGQ+LjwvcGFyYT4KKworICAgIDxwYXJhPldoZW4gPHN0cnVjdGZpZWxkPm1hdGNoLnR5cGU8L3N0cnVjdGZpZWxkPiBpcworPGNvbnN0YW50PlY0TDJfQ0hJUF9NQVRDSF9CUklER0U8L2NvbnN0YW50PiwKKzxzdHJ1Y3RmaWVsZD5tYXRjaC5hZGRyPC9zdHJ1Y3RmaWVsZD4gc2VsZWN0cyB0aGUgbnRoIG5vbi1zdWItZGV2aWNlIGNoaXAKK29uIHRoZSBUViBjYXJkLiAgVGhlIG51bWJlciB6ZXJvIGFsd2F5cyBzZWxlY3RzIHRoZSBob3N0IGNoaXAsICZlZzsgdGhlCitjaGlwIGNvbm5lY3RlZCB0byB0aGUgUENJIG9yIFVTQiBidXMuIFlvdSBjYW4gZmluZCBvdXQgd2hpY2ggY2hpcHMgYXJlCitwcmVzZW50IHdpdGggdGhlICZWSURJT0MtREJHLUctQ0hJUC1JTkZPOyBpb2N0bC48L3BhcmE+CisKKyAgICA8cGFyYT5XaGVuIDxzdHJ1Y3RmaWVsZD5tYXRjaC50eXBlPC9zdHJ1Y3RmaWVsZD4gaXMKKzxjb25zdGFudD5WNEwyX0NISVBfTUFUQ0hfU1VCREVWPC9jb25zdGFudD4sCis8c3RydWN0ZmllbGQ+bWF0Y2guYWRkcjwvc3RydWN0ZmllbGQ+IHNlbGVjdHMgdGhlIG50aCBzdWItZGV2aWNlLjwvcGFyYT4KKworICAgIDxwYXJhPlRoZXNlIGlvY3RscyBhcmUgb3B0aW9uYWwsIG5vdCBhbGwgZHJpdmVycyBtYXkgc3VwcG9ydCB0aGVtLgorSG93ZXZlciB3aGVuIGEgZHJpdmVyIHN1cHBvcnRzIHRoZXNlIGlvY3RscyBpdCBtdXN0IGFsc28gc3VwcG9ydAorJlZJRElPQy1EQkctRy1DSElQLUlORk87LiBDb252ZXJzZWx5IGl0IG1heSBzdXBwb3J0Cis8Y29uc3RhbnQ+VklESU9DX0RCR19HX0NISVBfSU5GTzwvY29uc3RhbnQ+IGJ1dCBub3QgdGhlc2UgaW9jdGxzLjwvcGFyYT4KKworICAgIDxwYXJhPjxjb25zdGFudD5WSURJT0NfREJHX0dfUkVHSVNURVI8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WSURJT0NfREJHX1NfUkVHSVNURVI8L2NvbnN0YW50PiB3ZXJlIGludHJvZHVjZWQgaW4gTGludXgKKzIuNi4yMSwgYnV0IHRoZWlyIEFQSSB3YXMgY2hhbmdlZCB0byB0aGUgb25lIGRlc2NyaWJlZCBoZXJlIGluIGtlcm5lbCAyLjYuMjkuPC9wYXJhPgorCisgICAgPHBhcmE+V2UgcmVjb21tZW5kZWQgdGhlIDxhcHBsaWNhdGlvbj52NGwyLWRiZzwvYXBwbGljYXRpb24+Cit1dGlsaXR5IG92ZXIgY2FsbGluZyB0aGVzZSBpb2N0bHMgZGlyZWN0bHkuIEl0IGlzIGF2YWlsYWJsZSBmcm9tIHRoZQorTGludXhUViB2NGwtZHZiIHJlcG9zaXRvcnk7IHNlZSA8dWxpbmsKK3VybD0iaHR0cDovL2xpbnV4dHYub3JnL3JlcG8vIj5odHRwOi8vbGludXh0di5vcmcvcmVwby88L3VsaW5rPiBmb3IKK2FjY2VzcyBpbnN0cnVjdGlvbnMuPC9wYXJhPgorCisgICAgPCEtLSBOb3RlIGZvciBjb252ZW5pZW5jZSB2aWRpb2MtZGJnLWctY2hpcC1pbmZvLnNnbWwKKwkgY29udGFpbnMgYSBkdXBsaWNhdGUgb2YgdGhpcyB0YWJsZS4gLS0+CisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLWRiZy1tYXRjaCI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfZGJnX21hdGNoPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjQiPgorCSZjcy11c3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5TZWUgPHhyZWYgbGlua2VuZD0iY2hpcC1tYXRjaC10eXBlcyIgLz4gZm9yIGEgbGlzdCBvZgorcG9zc2libGUgdHlwZXMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PnVuaW9uPC9lbnRyeT4KKwkgICAgPGVudHJ5Pihhbm9ueW1vdXMpPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+YWRkcjwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk1hdGNoIGEgY2hpcCBieSB0aGlzIG51bWJlciwgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nCit0byB0aGUgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmNoYXI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm5hbWVbMzJdPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+TWF0Y2ggYSBjaGlwIGJ5IHRoaXMgbmFtZSwgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nCit0byB0aGUgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZC4gQ3VycmVudGx5IHVudXNlZC48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1kYmctcmVnaXN0ZXIiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2RiZ19yZWdpc3Rlcjwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSI0Ij4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMSIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMiIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjNCIgLz4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PnN0cnVjdCB2NGwyX2RiZ19tYXRjaDwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+bWF0Y2g8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5Ib3cgdG8gbWF0Y2ggdGhlIGNoaXAsIHNlZSA8eHJlZiBsaW5rZW5kPSJ2NGwyLWRiZy1tYXRjaCIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5zaXplPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIHJlZ2lzdGVyIHNpemUgaW4gYnl0ZXMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTY0PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZWc8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5BIHJlZ2lzdGVyIG51bWJlci48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191NjQ8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnZhbDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSB2YWx1ZSByZWFkIGZyb20sIG9yIHRvIGJlIHdyaXR0ZW4gaW50byB0aGUKK3JlZ2lzdGVyLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDwhLS0gTm90ZSBmb3IgY29udmVuaWVuY2UgdmlkaW9jLWRiZy1nLWNoaXAtaW5mby5zZ21sCisJIGNvbnRhaW5zIGEgZHVwbGljYXRlIG9mIHRoaXMgdGFibGUuIC0tPgorICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iY2hpcC1tYXRjaC10eXBlcyI+CisgICAgICA8dGl0bGU+Q2hpcCBNYXRjaCBUeXBlczwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1kZWY7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSElQX01BVENIX0JSSURHRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICA8ZW50cnk+TWF0Y2ggdGhlIG50aCBjaGlwIG9uIHRoZSBjYXJkLCB6ZXJvIGZvciB0aGUKKwkgICAgYnJpZGdlIGNoaXAuIERvZXMgbm90IG1hdGNoIHN1Yi1kZXZpY2VzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DSElQX01BVENIX1NVQkRFVjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjQ8L2VudHJ5PgorCSAgICA8ZW50cnk+TWF0Y2ggdGhlIG50aCBzdWItZGV2aWNlLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RVBFUk08L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+SW5zdWZmaWNpZW50IHBlcm1pc3Npb25zLiBSb290IHByaXZpbGVnZXMgYXJlIHJlcXVpcmVkCit0byBleGVjdXRlIHRoZXNlIGlvY3Rscy48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWRlY29kZXItY21kLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWRlY29kZXItY21kLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2ViNWNmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZGVjb2Rlci1jbWQueG1sCkBAIC0wLDAgKzEsMjU5IEBACis8cmVmZW50cnkgaWQ9InZpZGlvYy1kZWNvZGVyLWNtZCI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19ERUNPREVSX0NNRCwgVklESU9DX1RSWV9ERUNPREVSX0NNRDwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX0RFQ09ERVJfQ01EPC9yZWZuYW1lPgorICAgIDxyZWZuYW1lPlZJRElPQ19UUllfREVDT0RFUl9DTUQ8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+RXhlY3V0ZSBhbiBkZWNvZGVyIGNvbW1hbmQ8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c3RydWN0IHY0bDJfZGVjb2Rlcl9jbWQgKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19ERUNPREVSX0NNRCwgVklESU9DX1RSWV9ERUNPREVSX0NNRDwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgPHBhcmE+VGhlc2UgaW9jdGxzIGNvbnRyb2wgYW4gYXVkaW8vdmlkZW8gKHVzdWFsbHkgTVBFRy0pIGRlY29kZXIuCis8Y29uc3RhbnQ+VklESU9DX0RFQ09ERVJfQ01EPC9jb25zdGFudD4gc2VuZHMgYSBjb21tYW5kIHRvIHRoZQorZGVjb2RlciwgPGNvbnN0YW50PlZJRElPQ19UUllfREVDT0RFUl9DTUQ8L2NvbnN0YW50PiBjYW4gYmUgdXNlZCB0bwordHJ5IGEgY29tbWFuZCB3aXRob3V0IGFjdHVhbGx5IGV4ZWN1dGluZyBpdC4gVG8gc2VuZCBhIGNvbW1hbmQgYXBwbGljYXRpb25zCittdXN0IGluaXRpYWxpemUgYWxsIGZpZWxkcyBvZiBhICZ2NGwyLWRlY29kZXItY21kOyBhbmQgY2FsbAorPGNvbnN0YW50PlZJRElPQ19ERUNPREVSX0NNRDwvY29uc3RhbnQ+IG9yIDxjb25zdGFudD5WSURJT0NfVFJZX0RFQ09ERVJfQ01EPC9jb25zdGFudD4KK3dpdGggYSBwb2ludGVyIHRvIHRoaXMgc3RydWN0dXJlLjwvcGFyYT4KKworICAgIDxwYXJhPlRoZSA8c3RydWN0ZmllbGQ+Y21kPC9zdHJ1Y3RmaWVsZD4gZmllbGQgbXVzdCBjb250YWluIHRoZQorY29tbWFuZCBjb2RlLiBTb21lIGNvbW1hbmRzIHVzZSB0aGUgPHN0cnVjdGZpZWxkPmZsYWdzPC9zdHJ1Y3RmaWVsZD4gZmllbGQgZm9yCithZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorPC9wYXJhPgorCisgICAgPHBhcmE+QSA8ZnVuY3Rpb24+d3JpdGU8L2Z1bmN0aW9uPigpIG9yICZWSURJT0MtU1RSRUFNT047IGNhbGwgc2VuZHMgYW4gaW1wbGljaXQKK1NUQVJUIGNvbW1hbmQgdG8gdGhlIGRlY29kZXIgaWYgaXQgaGFzIG5vdCBiZWVuIHN0YXJ0ZWQgeWV0LgorPC9wYXJhPgorCisgICAgPHBhcmE+QSA8ZnVuY3Rpb24+Y2xvc2U8L2Z1bmN0aW9uPigpIG9yICZWSURJT0MtU1RSRUFNT0ZGOyBjYWxsIG9mIGEgc3RyZWFtaW5nCitmaWxlIGRlc2NyaXB0b3Igc2VuZHMgYW4gaW1wbGljaXQgaW1tZWRpYXRlIFNUT1AgY29tbWFuZCB0byB0aGUgZGVjb2RlciwgYW5kIGFsbAorYnVmZmVyZWQgZGF0YSBpcyBkaXNjYXJkZWQuPC9wYXJhPgorCisgICAgPHBhcmE+VGhlc2UgaW9jdGxzIGFyZSBvcHRpb25hbCwgbm90IGFsbCBkcml2ZXJzIG1heSBzdXBwb3J0Cit0aGVtLiBUaGV5IHdlcmUgaW50cm9kdWNlZCBpbiBMaW51eCAzLjMuPC9wYXJhPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLWRlY29kZXItY21kIj4KKyAgICAgIDx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9kZWNvZGVyX2NtZDwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSI1Ij4KKwkmY3Mtc3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmNtZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgICAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgZGVjb2RlciBjb21tYW5kLCBzZWUgPHhyZWYgbGlua2VuZD0iZGVjb2Rlci1jbWRzIiAvPi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmZsYWdzPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgICAgICAgPGVudHJ5PjwvZW50cnk+CisgICAgICAgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkZsYWdzIHRvIGdvIHdpdGggdGhlIGNvbW1hbmQuIElmIG5vIGZsYWdzIGFyZSBkZWZpbmVkIGZvcgordGhpcyBjb21tYW5kLCBkcml2ZXJzIGFuZCBhcHBsaWNhdGlvbnMgbXVzdCBzZXQgdGhpcyBmaWVsZCB0byB6ZXJvLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT51bmlvbjwvZW50cnk+CisJICAgIDxlbnRyeT4oYW5vbnltb3VzKTwvZW50cnk+CisgICAgICAgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisgICAgICAgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5zdHJ1Y3Q8L2VudHJ5PgorICAgICAgICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5zdGFydDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgICAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgICAgICAgPGVudHJ5PlN0cnVjdHVyZSBjb250YWluaW5nIGFkZGl0aW9uYWwgZGF0YSBmb3IgdGhlCis8Y29uc3RhbnQ+VjRMMl9ERUNfQ01EX1NUQVJUPC9jb25zdGFudD4gY29tbWFuZC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorICAgICAgICAgICAgPGVudHJ5PjwvZW50cnk+CisgICAgICAgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pl9fczMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5zcGVlZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgICAgICAgIDxlbnRyeT5QbGF5YmFjayBzcGVlZCBhbmQgZGlyZWN0aW9uLiBUaGUgcGxheWJhY2sgc3BlZWQgaXMgZGVmaW5lZCBhcworPHN0cnVjdGZpZWxkPnNwZWVkPC9zdHJ1Y3RmaWVsZD4vMTAwMCBvZiB0aGUgbm9ybWFsIHNwZWVkLiBTbyAxMDAwIGlzIG5vcm1hbCBwbGF5YmFjay4KK05lZ2F0aXZlIG51bWJlcnMgZGVub3RlIHJldmVyc2UgcGxheWJhY2ssIHNvIC0xMDAwIGRvZXMgcmV2ZXJzZSBwbGF5YmFjayBhdCBub3JtYWwKK3NwZWVkLiBTcGVlZHMgLTEsIDAgYW5kIDEgaGF2ZSBzcGVjaWFsIG1lYW5pbmdzOiBzcGVlZCAwIGlzIHNob3J0aGFuZCBmb3IgMTAwMAorKG5vcm1hbCBwbGF5YmFjaykuIEEgc3BlZWQgb2YgMSBzdGVwcyBqdXN0IG9uZSBmcmFtZSBmb3J3YXJkLCBhIHNwZWVkIG9mIC0xIHN0ZXBzCitqdXN0IG9uZSBmcmFtZSBiYWNrLgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorICAgICAgICAgICAgPGVudHJ5PjwvZW50cnk+CisgICAgICAgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5mb3JtYXQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAgICAgICAgICA8ZW50cnk+Rm9ybWF0IHJlc3RyaWN0aW9ucy4gVGhpcyBmaWVsZCBpcyBzZXQgYnkgdGhlIGRyaXZlciwgbm90IHRoZQorYXBwbGljYXRpb24uIFBvc3NpYmxlIHZhbHVlcyBhcmUgPGNvbnN0YW50PlY0TDJfREVDX1NUQVJUX0ZNVF9OT05FPC9jb25zdGFudD4gaWYKK3RoZXJlIGFyZSBubyBmb3JtYXQgcmVzdHJpY3Rpb25zIG9yIDxjb25zdGFudD5WNEwyX0RFQ19TVEFSVF9GTVRfR09QPC9jb25zdGFudD4KK2lmIHRoZSBkZWNvZGVyIG9wZXJhdGVzIG9uIGZ1bGwgR09QcyAoPHdvcmRhc3dvcmQ+R3JvdXAgT2YgUGljdHVyZXM8L3dvcmRhc3dvcmQ+KS4KK1RoaXMgaXMgdXN1YWxseSB0aGUgY2FzZSBmb3IgcmV2ZXJzZSBwbGF5YmFjazogdGhlIGRlY29kZXIgbmVlZHMgZnVsbCBHT1BzLCB3aGljaAoraXQgY2FuIHRoZW4gcGxheSBpbiByZXZlcnNlIG9yZGVyLiBTbyB0byBpbXBsZW1lbnQgcmV2ZXJzZSBwbGF5YmFjayB0aGUgYXBwbGljYXRpb24KK211c3QgZmVlZCB0aGUgZGVjb2RlciB0aGUgbGFzdCBHT1AgaW4gdGhlIHZpZGVvIGZpbGUsIHRoZW4gdGhlIEdPUCBiZWZvcmUgdGhhdCwgZXRjLiBldGMuCisJICAgIDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+c3RydWN0PC9lbnRyeT4KKyAgICAgICAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+c3RvcDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgICAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgICAgICAgPGVudHJ5PlN0cnVjdHVyZSBjb250YWluaW5nIGFkZGl0aW9uYWwgZGF0YSBmb3IgdGhlCis8Y29uc3RhbnQ+VjRMMl9ERUNfQ01EX1NUT1A8L2NvbnN0YW50PiBjb21tYW5kLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisgICAgICAgICAgICA8ZW50cnk+PC9lbnRyeT4KKyAgICAgICAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+X191NjQ8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnB0czwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgICAgICAgIDxlbnRyeT5TdG9wIHBsYXliYWNrIGF0IHRoaXMgPHN0cnVjdGZpZWxkPnB0czwvc3RydWN0ZmllbGQ+IG9yIGltbWVkaWF0ZWx5CitpZiB0aGUgcGxheWJhY2sgaXMgYWxyZWFkeSBwYXN0IHRoYXQgdGltZXN0YW1wLiBMZWF2ZSB0byAwIGlmIHlvdSB3YW50IHRvIHN0b3AgYWZ0ZXIgdGhlCitsYXN0IGZyYW1lIHdhcyBkZWNvZGVkLgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnN0cnVjdDwvZW50cnk+CisgICAgICAgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJhdzwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgICAgICAgIDxlbnRyeT48L2VudHJ5PgorICAgICAgICAgICAgPGVudHJ5PjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisgICAgICAgICAgICA8ZW50cnk+PC9lbnRyeT4KKyAgICAgICAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmRhdGE8L3N0cnVjdGZpZWxkPlsxNl08L2VudHJ5PgorCSAgICA8ZW50cnk+UmVzZXJ2ZWQgZm9yIGZ1dHVyZSBleHRlbnNpb25zLiBEcml2ZXJzIGFuZAorYXBwbGljYXRpb25zIG11c3Qgc2V0IHRoZSBhcnJheSB0byB6ZXJvLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iZGVjb2Rlci1jbWRzIj4KKyAgICAgIDx0aXRsZT5EZWNvZGVyIENvbW1hbmRzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0RFQ19DTURfU1RBUlQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgPGVudHJ5PlN0YXJ0IHRoZSBkZWNvZGVyLiBXaGVuIHRoZSBkZWNvZGVyIGlzIGFscmVhZHkKK3J1bm5pbmcgb3IgcGF1c2VkLCB0aGlzIGNvbW1hbmQgd2lsbCBqdXN0IGNoYW5nZSB0aGUgcGxheWJhY2sgc3BlZWQuCitUaGF0IG1lYW5zIHRoYXQgY2FsbGluZyA8Y29uc3RhbnQ+VjRMMl9ERUNfQ01EX1NUQVJUPC9jb25zdGFudD4gd2hlbgordGhlIGRlY29kZXIgd2FzIHBhdXNlZCB3aWxsIDxlbXBoYXNpcz5ub3Q8L2VtcGhhc2lzPiByZXN1bWUgdGhlIGRlY29kZXIuCitZb3UgaGF2ZSB0byBleHBsaWNpdGx5IGNhbGwgPGNvbnN0YW50PlY0TDJfREVDX0NNRF9SRVNVTUU8L2NvbnN0YW50PiBmb3IgdGhhdC4KK1RoaXMgY29tbWFuZCBoYXMgb25lIGZsYWc6Cis8Y29uc3RhbnQ+VjRMMl9ERUNfQ01EX1NUQVJUX01VVEVfQVVESU88L2NvbnN0YW50Pi4gSWYgc2V0LCB0aGVuIGF1ZGlvIHdpbGwKK2JlIG11dGVkIHdoZW4gcGxheWluZyBiYWNrIGF0IGEgbm9uLXN0YW5kYXJkIHNwZWVkLgorICAgICAgICAgICAgPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0RFQ19DTURfU1RPUDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjE8L2VudHJ5PgorCSAgICA8ZW50cnk+U3RvcCB0aGUgZGVjb2Rlci4gV2hlbiB0aGUgZGVjb2RlciBpcyBhbHJlYWR5IHN0b3BwZWQsCit0aGlzIGNvbW1hbmQgZG9lcyBub3RoaW5nLiBUaGlzIGNvbW1hbmQgaGFzIHR3byBmbGFnczoKK2lmIDxjb25zdGFudD5WNEwyX0RFQ19DTURfU1RPUF9UT19CTEFDSzwvY29uc3RhbnQ+IGlzIHNldCwgdGhlbiB0aGUgZGVjb2RlciB3aWxsCitzZXQgdGhlIHBpY3R1cmUgdG8gYmxhY2sgYWZ0ZXIgaXQgc3RvcHBlZCBkZWNvZGluZy4gT3RoZXJ3aXNlIHRoZSBsYXN0IGltYWdlIHdpbGwKK3JlcGVhdC4gbWVtMm1lbSBkZWNvZGVycyB3aWxsIHN0b3AgcHJvZHVjaW5nIG5ldyBmcmFtZXMgYWx0b2dldGhlci4gVGhleSB3aWxsIHNlbmQKK2EgPGNvbnN0YW50PlY0TDJfRVZFTlRfRU9TPC9jb25zdGFudD4gZXZlbnQgd2hlbiB0aGUgbGFzdCBmcmFtZSBoYXMgYmVlbiBkZWNvZGVkCithbmQgYWxsIGZyYW1lcyBhcmUgcmVhZHkgdG8gYmUgZGVxdWV1ZWQgYW5kIHdpbGwgc2V0IHRoZQorPGNvbnN0YW50PlY0TDJfQlVGX0ZMQUdfTEFTVDwvY29uc3RhbnQ+IGJ1ZmZlciBmbGFnIG9uIHRoZSBsYXN0IGJ1ZmZlciBvZiB0aGUKK2NhcHR1cmUgcXVldWUgdG8gaW5kaWNhdGUgdGhlcmUgd2lsbCBiZSBubyBuZXcgYnVmZmVycyBwcm9kdWNlZCB0byBkZXF1ZXVlLiBUaGlzCitidWZmZXIgbWF5IGJlIGVtcHR5LCBpbmRpY2F0ZWQgYnkgdGhlIGRyaXZlciBzZXR0aW5nIHRoZQorPHN0cnVjdGZpZWxkPmJ5dGVzdXNlZDwvc3RydWN0ZmllbGQ+IGZpZWxkIHRvIDAuIE9uY2UgdGhlCis8Y29uc3RhbnQ+VjRMMl9CVUZfRkxBR19MQVNUPC9jb25zdGFudD4gZmxhZyB3YXMgc2V0LCB0aGUKKzxsaW5rIGxpbmtlbmQ9InZpZGlvYy1xYnVmIj5WSURJT0NfRFFCVUY8L2xpbms+IGlvY3RsIHdpbGwgbm90IGJsb2NrIGFueW1vcmUsCitidXQgcmV0dXJuIGFuICZFUElQRTsuCitJZiA8Y29uc3RhbnQ+VjRMMl9ERUNfQ01EX1NUT1BfSU1NRURJQVRFTFk8L2NvbnN0YW50PiBpcyBzZXQsIHRoZW4gdGhlIGRlY29kZXIKK3N0b3BzIGltbWVkaWF0ZWx5IChpZ25vcmluZyB0aGUgPHN0cnVjdGZpZWxkPnB0czwvc3RydWN0ZmllbGQ+IHZhbHVlKSwgb3RoZXJ3aXNlIGl0Cit3aWxsIGtlZXAgZGVjb2RpbmcgdW50aWwgdGltZXN0YW1wID49IHB0cyBvciB1bnRpbCB0aGUgbGFzdCBvZiB0aGUgcGVuZGluZyBkYXRhIGZyb20KK2l0cyBpbnRlcm5hbCBidWZmZXJzIHdhcyBkZWNvZGVkLgorPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0RFQ19DTURfUEFVU0U8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4yPC9lbnRyeT4KKwkgICAgPGVudHJ5PlBhdXNlIHRoZSBkZWNvZGVyLiBXaGVuIHRoZSBkZWNvZGVyIGhhcyBub3QgYmVlbgorc3RhcnRlZCB5ZXQsIHRoZSBkcml2ZXIgd2lsbCByZXR1cm4gYW4gJkVQRVJNOy4gV2hlbiB0aGUgZGVjb2RlciBpcworYWxyZWFkeSBwYXVzZWQsIHRoaXMgY29tbWFuZCBkb2VzIG5vdGhpbmcuIFRoaXMgY29tbWFuZCBoYXMgb25lIGZsYWc6CitpZiA8Y29uc3RhbnQ+VjRMMl9ERUNfQ01EX1BBVVNFX1RPX0JMQUNLPC9jb25zdGFudD4gaXMgc2V0LCB0aGVuIHNldCB0aGUKK2RlY29kZXIgb3V0cHV0IHRvIGJsYWNrIHdoZW4gcGF1c2VkLgorPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0RFQ19DTURfUkVTVU1FPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MzwvZW50cnk+CisJICAgIDxlbnRyeT5SZXN1bWUgZGVjb2RpbmcgYWZ0ZXIgYSBQQVVTRSBjb21tYW5kLiBXaGVuIHRoZQorZGVjb2RlciBoYXMgbm90IGJlZW4gc3RhcnRlZCB5ZXQsIHRoZSBkcml2ZXIgd2lsbCByZXR1cm4gYW4gJkVQRVJNOy4KK1doZW4gdGhlIGRlY29kZXIgaXMgYWxyZWFkeSBydW5uaW5nLCB0aGlzIGNvbW1hbmQgZG9lcyBub3RoaW5nLiBObworZmxhZ3MgYXJlIGRlZmluZWQgZm9yIHRoaXMgY29tbWFuZC48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSA8c3RydWN0ZmllbGQ+Y21kPC9zdHJ1Y3RmaWVsZD4gZmllbGQgaXMgaW52YWxpZC48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVQRVJNPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSBhcHBsaWNhdGlvbiBzZW50IGEgUEFVU0Ugb3IgUkVTVU1FIGNvbW1hbmQgd2hlbgordGhlIGRlY29kZXIgd2FzIG5vdCBydW5uaW5nLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZHFldmVudC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1kcWV2ZW50LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWMzYzc3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZHFldmVudC54bWwKQEAgLTAsMCArMSw0NzEgQEAKKzxyZWZlbnRyeSBpZD0idmlkaW9jLWRxZXZlbnQiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBWSURJT0NfRFFFVkVOVDwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX0RRRVZFTlQ8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+RGVxdWV1ZSBldmVudDwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zdHJ1Y3QgdjRsMl9ldmVudAorKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19EUUVWRU5UPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5EZXF1ZXVlIGFuIGV2ZW50IGZyb20gYSB2aWRlbyBkZXZpY2UuIE5vIGlucHV0IGlzIHJlcXVpcmVkCisgICAgZm9yIHRoaXMgaW9jdGwuIEFsbCB0aGUgZmllbGRzIG9mIHRoZSAmdjRsMi1ldmVudDsgc3RydWN0dXJlIGFyZQorICAgIGZpbGxlZCBieSB0aGUgZHJpdmVyLiBUaGUgZmlsZSBoYW5kbGUgd2lsbCBhbHNvIHJlY2VpdmUgZXhjZXB0aW9ucworICAgIHdoaWNoIHRoZSBhcHBsaWNhdGlvbiBtYXkgZ2V0IGJ5IGUuZy4gdXNpbmcgdGhlIHNlbGVjdCBzeXN0ZW0KKyAgICBjYWxsLjwvcGFyYT4KKworICAgIDx0YWJsZSBmcmFtZT0ibm9uZSIgcGd3aWRlPSIxIiBpZD0idjRsMi1ldmVudCI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfZXZlbnQ8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iNCI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5UeXBlIG9mIHRoZSBldmVudCwgc2VlIDx4cmVmIGxpbmtlbmQ9ImV2ZW50LXR5cGUiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT51bmlvbjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgICAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT4mdjRsMi1ldmVudC12c3luYzs8L2VudHJ5PgorICAgICAgICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD52c3luYzwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkV2ZW50IGRhdGEgZm9yIGV2ZW50IDxjb25zdGFudD5WNEwyX0VWRU5UX1ZTWU5DPC9jb25zdGFudD4uCisgICAgICAgICAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PiZ2NGwyLWV2ZW50LWN0cmw7PC9lbnRyeT4KKyAgICAgICAgICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+Y3RybDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkV2ZW50IGRhdGEgZm9yIGV2ZW50IDxjb25zdGFudD5WNEwyX0VWRU5UX0NUUkw8L2NvbnN0YW50Pi4KKyAgICAgICAgICAgIDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+JnY0bDItZXZlbnQtZnJhbWUtc3luYzs8L2VudHJ5PgorICAgICAgICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5mcmFtZV9zeW5jPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+RXZlbnQgZGF0YSBmb3IgZXZlbnQKKwkgICAgPGNvbnN0YW50PlY0TDJfRVZFTlRfRlJBTUVfU1lOQzwvY29uc3RhbnQ+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+JnY0bDItZXZlbnQtbW90aW9uLWRldDs8L2VudHJ5PgorICAgICAgICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5tb3Rpb25fZGV0PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+RXZlbnQgZGF0YSBmb3IgZXZlbnQgVjRMMl9FVkVOVF9NT1RJT05fREVULjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+JnY0bDItZXZlbnQtc3JjLWNoYW5nZTs8L2VudHJ5PgorICAgICAgICAgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5zcmNfY2hhbmdlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+RXZlbnQgZGF0YSBmb3IgZXZlbnQgVjRMMl9FVkVOVF9TT1VSQ0VfQ0hBTkdFLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+X191ODwvZW50cnk+CisgICAgICAgICAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmRhdGE8L3N0cnVjdGZpZWxkPls2NF08L2VudHJ5PgorCSAgICA8ZW50cnk+RXZlbnQgZGF0YS4gRGVmaW5lZCBieSB0aGUgZXZlbnQgdHlwZS4gVGhlIHVuaW9uCisgICAgICAgICAgICBzaG91bGQgYmUgdXNlZCB0byBkZWZpbmUgZWFzaWx5IGFjY2Vzc2libGUgdHlwZSBmb3IKKyAgICAgICAgICAgIGV2ZW50cy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnBlbmRpbmc8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAgICAgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk51bWJlciBvZiBwZW5kaW5nIGV2ZW50cyBleGNsdWRpbmcgdGhpcyBvbmUuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5zZXF1ZW5jZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgICAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+RXZlbnQgc2VxdWVuY2UgbnVtYmVyLiBUaGUgc2VxdWVuY2UgbnVtYmVyIGlzCisJICAgIGluY3JlbWVudGVkIGZvciBldmVyeSBzdWJzY3JpYmVkIGV2ZW50IHRoYXQgdGFrZXMgcGxhY2UuCisJICAgIElmIHNlcXVlbmNlIG51bWJlcnMgYXJlIG5vdCBjb250aWd1b3VzIGl0IG1lYW5zIHRoYXQKKwkgICAgZXZlbnRzIGhhdmUgYmVlbiBsb3N0LgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+c3RydWN0IHRpbWVzcGVjPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD50aW1lc3RhbXA8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisgICAgICAgICAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkV2ZW50IHRpbWVzdGFtcC4gVGhlIHRpbWVzdGFtcCBoYXMgYmVlbiB0YWtlbiBmcm9tIHRoZQorCSAgICA8Y29uc3RhbnQ+Q0xPQ0tfTU9OT1RPTklDPC9jb25zdGFudD4gY2xvY2suIFRvIGFjY2VzcyB0aGUKKwkgICAgc2FtZSBjbG9jayBvdXRzaWRlIFY0TDIsIHVzZSA8ZnVuY3Rpb24+Y2xvY2tfZ2V0dGltZSgyKTwvZnVuY3Rpb24+LgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+dTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5pZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgICAgICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnQgc291cmNlLiBJZiB0aGUgZXZlbnQgZG9lcyBub3QKKwkJaGF2ZSBhbiBhc3NvY2lhdGVkIElEICh0aGlzIGRlcGVuZHMgb24gdGhlIGV2ZW50IHR5cGUpLCB0aGVuIHRoaXMKKwkJaXMgMC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD5bOF08L2VudHJ5PgorICAgICAgICAgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5SZXNlcnZlZCBmb3IgZnV0dXJlIGV4dGVuc2lvbnMuIERyaXZlcnMgbXVzdCBzZXQKKwkgICAgdGhlIGFycmF5IHRvIHplcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIGZyYW1lPSJub25lIiBwZ3dpZGU9IjEiIGlkPSJldmVudC10eXBlIj4KKyAgICAgIDx0aXRsZT5FdmVudCBUeXBlczwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1kZWY7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9FVkVOVF9BTEw8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgPGVudHJ5PkFsbCBldmVudHMuIFY0TDJfRVZFTlRfQUxMIGlzIHZhbGlkIG9ubHkgZm9yCisJICAgIFZJRElPQ19VTlNVQlNDUklCRV9FVkVOVCBmb3IgdW5zdWJzY3JpYmluZyBhbGwgZXZlbnRzIGF0IG9uY2UuCisJICAgIDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9FVkVOVF9WU1lOQzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjE8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBldmVudCBpcyB0cmlnZ2VyZWQgb24gdGhlIHZlcnRpY2FsIHN5bmMuCisJICAgIFRoaXMgZXZlbnQgaGFzIGEgJnY0bDItZXZlbnQtdnN5bmM7IGFzc29jaWF0ZWQgd2l0aCBpdC4KKwkgICAgPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0VWRU5UX0VPUzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjI8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBldmVudCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgZW5kIG9mIGEgc3RyZWFtIGlzIHJlYWNoZWQuCisJICAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgd2l0aCBNUEVHIGRlY29kZXJzIHRvIHJlcG9ydCB0byB0aGUgYXBwbGljYXRpb24KKwkgICAgd2hlbiB0aGUgbGFzdCBvZiB0aGUgTVBFRyBzdHJlYW0gaGFzIGJlZW4gZGVjb2RlZC4KKwkgICAgPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0VWRU5UX0NUUkw8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4zPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxwYXJhPlRoaXMgZXZlbnQgcmVxdWlyZXMgdGhhdCB0aGUgPHN0cnVjdGZpZWxkPmlkPC9zdHJ1Y3RmaWVsZD4KKwkJbWF0Y2hlcyB0aGUgY29udHJvbCBJRCBmcm9tIHdoaWNoIHlvdSB3YW50IHRvIHJlY2VpdmUgZXZlbnRzLgorCQlUaGlzIGV2ZW50IGlzIHRyaWdnZXJlZCBpZiB0aGUgY29udHJvbCdzIHZhbHVlIGNoYW5nZXMsIGlmIGEKKwkJYnV0dG9uIGNvbnRyb2wgaXMgcHJlc3NlZCBvciBpZiB0aGUgY29udHJvbCdzIGZsYWdzIGNoYW5nZS4KKwkgICAgCVRoaXMgZXZlbnQgaGFzIGEgJnY0bDItZXZlbnQtY3RybDsgYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGlzIHN0cnVjdAorCQljb250YWlucyBtdWNoIG9mIHRoZSBzYW1lIGluZm9ybWF0aW9uIGFzICZ2NGwyLXF1ZXJ5Y3RybDsgYW5kCisJCSZ2NGwyLWNvbnRyb2w7LjwvcGFyYT4KKworCQk8cGFyYT5JZiB0aGUgZXZlbnQgaXMgZ2VuZXJhdGVkIGR1ZSB0byBhIGNhbGwgdG8gJlZJRElPQy1TLUNUUkw7IG9yCisJCSZWSURJT0MtUy1FWFQtQ1RSTFM7LCB0aGVuIHRoZSBldmVudCB3aWxsIDxlbXBoYXNpcz5ub3Q8L2VtcGhhc2lzPiBiZSBzZW50IHRvCisJCXRoZSBmaWxlIGhhbmRsZSB0aGF0IGNhbGxlZCB0aGUgaW9jdGwgZnVuY3Rpb24uIFRoaXMgcHJldmVudHMKKwkJbmFzdHkgZmVlZGJhY2sgbG9vcHMuIElmIHlvdSA8ZW1waGFzaXM+ZG88L2VtcGhhc2lzPiB3YW50IHRvIGdldCB0aGUKKwkJZXZlbnQsIHRoZW4gc2V0IHRoZSA8Y29uc3RhbnQ+VjRMMl9FVkVOVF9TVUJfRkxfQUxMT1dfRkVFREJBQ0s8L2NvbnN0YW50PgorCQlmbGFnLgorCQk8L3BhcmE+CisKKwkJPHBhcmE+VGhpcyBldmVudCB0eXBlIHdpbGwgZW5zdXJlIHRoYXQgbm8gaW5mb3JtYXRpb24gaXMgbG9zdCB3aGVuCisJCW1vcmUgZXZlbnRzIGFyZSByYWlzZWQgdGhhbiB0aGVyZSBpcyByb29tIGludGVybmFsbHkuIEluIHRoYXQKKwkJY2FzZSB0aGUgJnY0bDItZXZlbnQtY3RybDsgb2YgdGhlIHNlY29uZC1vbGRlc3QgZXZlbnQgaXMga2VwdCwKKwkJYnV0IHRoZSA8c3RydWN0ZmllbGQ+Y2hhbmdlczwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mIHRoZQorCQlzZWNvbmQtb2xkZXN0IGV2ZW50IGlzIE9SZWQgd2l0aCB0aGUgPHN0cnVjdGZpZWxkPmNoYW5nZXM8L3N0cnVjdGZpZWxkPgorCQlmaWVsZCBvZiB0aGUgb2xkZXN0IGV2ZW50LjwvcGFyYT4KKwkgICAgPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0VWRU5UX0ZSQU1FX1NZTkM8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT40PC9lbnRyeT4KKwkgICAgPGVudHJ5PgorCSAgICAgIDxwYXJhPlRyaWdnZXJlZCBpbW1lZGlhdGVseSB3aGVuIHRoZSByZWNlcHRpb24gb2YgYQorCSAgICAgIGZyYW1lIGhhcyBiZWd1bi4gVGhpcyBldmVudCBoYXMgYQorCSAgICAgICZ2NGwyLWV2ZW50LWZyYW1lLXN5bmM7IGFzc29jaWF0ZWQgd2l0aCBpdC48L3BhcmE+CisKKwkgICAgICA8cGFyYT5JZiB0aGUgaGFyZHdhcmUgbmVlZHMgdG8gYmUgc3RvcHBlZCBpbiB0aGUgY2FzZSBvZiBhCisJICAgICAgYnVmZmVyIHVuZGVycnVuIGl0IG1pZ2h0IG5vdCBiZSBhYmxlIHRvIGdlbmVyYXRlIHRoaXMgZXZlbnQuCisJICAgICAgSW4gc3VjaCBjYXNlcyB0aGUgPHN0cnVjdGZpZWxkPmZyYW1lX3NlcXVlbmNlPC9zdHJ1Y3RmaWVsZD4KKwkgICAgICBmaWVsZCBpbiAmdjRsMi1ldmVudC1mcmFtZS1zeW5jOyB3aWxsIG5vdCBiZSBpbmNyZW1lbnRlZC4gVGhpcworCSAgICAgIGNhdXNlcyB0d28gY29uc2VjdXRpdmUgZnJhbWUgc2VxdWVuY2UgbnVtYmVycyB0byBoYXZlIG4gdGltZXMKKwkgICAgICBmcmFtZSBpbnRlcnZhbCBpbiBiZXR3ZWVuIHRoZW0uPC9wYXJhPgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRVZFTlRfU09VUkNFX0NIQU5HRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjU8L2VudHJ5PgorCSAgICA8ZW50cnk+CisJICAgICAgPHBhcmE+VGhpcyBldmVudCBpcyB0cmlnZ2VyZWQgd2hlbiBhIHNvdXJjZSBwYXJhbWV0ZXIgY2hhbmdlIGlzCisJICAgICAgIGRldGVjdGVkIGR1cmluZyBydW50aW1lIGJ5IHRoZSB2aWRlbyBkZXZpY2UuIEl0IGNhbiBiZSBhCisJICAgICAgIHJ1bnRpbWUgcmVzb2x1dGlvbiBjaGFuZ2UgdHJpZ2dlcmVkIGJ5IGEgdmlkZW8gZGVjb2RlciBvciB0aGUKKwkgICAgICAgZm9ybWF0IGNoYW5nZSBoYXBwZW5pbmcgb24gYW4gaW5wdXQgY29ubmVjdG9yLgorCSAgICAgICBUaGlzIGV2ZW50IHJlcXVpcmVzIHRoYXQgdGhlIDxzdHJ1Y3RmaWVsZD5pZDwvc3RydWN0ZmllbGQ+CisJICAgICAgIG1hdGNoZXMgdGhlIGlucHV0IGluZGV4ICh3aGVuIHVzZWQgd2l0aCBhIHZpZGVvIGRldmljZSBub2RlKQorCSAgICAgICBvciB0aGUgcGFkIGluZGV4ICh3aGVuIHVzZWQgd2l0aCBhIHN1YmRldmljZSBub2RlKSBmcm9tIHdoaWNoCisJICAgICAgIHlvdSB3YW50IHRvIHJlY2VpdmUgZXZlbnRzLjwvcGFyYT4KKworICAgICAgICAgICAgICA8cGFyYT5UaGlzIGV2ZW50IGhhcyBhICZ2NGwyLWV2ZW50LXNyYy1jaGFuZ2U7IGFzc29jaWF0ZWQKKwkgICAgICB3aXRoIGl0LiBUaGUgPHN0cnVjdGZpZWxkPmNoYW5nZXM8L3N0cnVjdGZpZWxkPiBiaXRmaWVsZCBkZW5vdGVzCisJICAgICAgd2hhdCBoYXMgY2hhbmdlZCBmb3IgdGhlIHN1YnNjcmliZWQgcGFkLiBJZiBtdWx0aXBsZSBldmVudHMKKwkgICAgICBvY2N1cnJlZCBiZWZvcmUgYXBwbGljYXRpb24gY291bGQgZGVxdWV1ZSB0aGVtLCB0aGVuIHRoZSBjaGFuZ2VzCisJICAgICAgd2lsbCBoYXZlIHRoZSBPUmVkIHZhbHVlIG9mIGFsbCB0aGUgZXZlbnRzIGdlbmVyYXRlZC48L3BhcmE+CisJICAgIDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9FVkVOVF9NT1RJT05fREVUPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+NjwvZW50cnk+CisJICAgIDxlbnRyeT4KKwkgICAgICA8cGFyYT5UcmlnZ2VyZWQgd2hlbmV2ZXIgdGhlIG1vdGlvbiBkZXRlY3Rpb24gc3RhdGUgZm9yIG9uZSBvciBtb3JlIG9mIHRoZSByZWdpb25zCisJICAgICAgY2hhbmdlcy4gVGhpcyBldmVudCBoYXMgYSAmdjRsMi1ldmVudC1tb3Rpb24tZGV0OyBhc3NvY2lhdGVkIHdpdGggaXQuPC9wYXJhPgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRVZFTlRfUFJJVkFURV9TVEFSVDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDgwMDAwMDA8L2VudHJ5PgorCSAgICA8ZW50cnk+QmFzZSBldmVudCBudW1iZXIgZm9yIGRyaXZlci1wcml2YXRlIGV2ZW50cy48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgZnJhbWU9Im5vbmUiIHBnd2lkZT0iMSIgaWQ9InY0bDItZXZlbnQtdnN5bmMiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2V2ZW50X3ZzeW5jPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3U4PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5maWVsZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSB1cGNvbWluZyBmaWVsZC4gU2VlICZ2NGwyLWZpZWxkOy48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgZnJhbWU9Im5vbmUiIHBnd2lkZT0iMSIgaWQ9InY0bDItZXZlbnQtY3RybCI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfZXZlbnRfY3RybDwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSI0Ij4KKwkmY3Mtc3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmNoYW5nZXM8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+QSBiaXRtYXNrIHRoYXQgdGVsbHMgd2hhdCBoYXMgY2hhbmdlZC4gU2VlIDx4cmVmIGxpbmtlbmQ9ImN0cmwtY2hhbmdlcy1mbGFncyIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSB0eXBlIG9mIHRoZSBjb250cm9sLiBTZWUgJnY0bDItY3RybC10eXBlOy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+dW5pb24gKGFub255bW91cyk8L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pl9fczMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD52YWx1ZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSAzMi1iaXQgdmFsdWUgb2YgdGhlIGNvbnRyb2wgZm9yIDMyLWJpdCBjb250cm9sIHR5cGVzLgorCQlUaGlzIGlzIDAgZm9yIHN0cmluZyBjb250cm9scyBzaW5jZSB0aGUgdmFsdWUgb2YgYSBzdHJpbmcKKwkJY2Fubm90IGJlIHBhc3NlZCB1c2luZyAmVklESU9DLURRRVZFTlQ7LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+X19zNjQ8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnZhbHVlNjQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgNjQtYml0IHZhbHVlIG9mIHRoZSBjb250cm9sIGZvciA2NC1iaXQgY29udHJvbCB0eXBlcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmZsYWdzPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBjb250cm9sIGZsYWdzLiBTZWUgPHhyZWYgbGlua2VuZD0iY29udHJvbC1mbGFncyIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fczMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5taW5pbXVtPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSBjb250cm9sLiBTZWUgJnY0bDItcXVlcnljdHJsOy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X19zMzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm1heGltdW08L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbnRyb2wuIFNlZSAmdjRsMi1xdWVyeWN0cmw7LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3MzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+c3RlcDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgc3RlcCB2YWx1ZSBvZiB0aGUgY29udHJvbC4gU2VlICZ2NGwyLXF1ZXJ5Y3RybDsuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fczMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5kZWZhdWx0X3ZhbHVlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBkZWZhdWx0IHZhbHVlIHZhbHVlIG9mIHRoZSBjb250cm9sLiBTZWUgJnY0bDItcXVlcnljdHJsOy48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgZnJhbWU9Im5vbmUiIHBnd2lkZT0iMSIgaWQ9InY0bDItZXZlbnQtZnJhbWUtc3luYyI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfZXZlbnRfZnJhbWVfc3luYzwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3Mtc3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmZyYW1lX3NlcXVlbmNlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+CisJICAgICAgVGhlIHNlcXVlbmNlIG51bWJlciBvZiB0aGUgZnJhbWUgYmVpbmcgcmVjZWl2ZWQuCisJICAgIDwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBmcmFtZT0ibm9uZSIgcGd3aWRlPSIxIiBpZD0idjRsMi1ldmVudC1zcmMtY2hhbmdlIj4KKyAgICAgIDx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9ldmVudF9zcmNfY2hhbmdlPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+Y2hhbmdlczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PgorCSAgICAgIEEgYml0bWFzayB0aGF0IHRlbGxzIHdoYXQgaGFzIGNoYW5nZWQuIFNlZSA8eHJlZiBsaW5rZW5kPSJzcmMtY2hhbmdlcy1mbGFncyIgLz4uCisJICAgIDwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBmcmFtZT0ibm9uZSIgcGd3aWRlPSIxIiBpZD0idjRsMi1ldmVudC1tb3Rpb24tZGV0Ij4KKyAgICAgIDx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9ldmVudF9tb3Rpb25fZGV0PC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZmxhZ3M8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT4KKwkgICAgICBDdXJyZW50bHkgb25seSBvbmUgZmxhZyBpcyBhdmFpbGFibGU6IGlmIDxjb25zdGFudD5WNEwyX0VWRU5UX01EX0ZMX0hBVkVfRlJBTUVfU0VRPC9jb25zdGFudD4KKwkgICAgICBpcyBzZXQsIHRoZW4gdGhlIDxzdHJ1Y3RmaWVsZD5mcmFtZV9zZXF1ZW5jZTwvc3RydWN0ZmllbGQ+IGZpZWxkIGlzIHZhbGlkLAorCSAgICAgIG90aGVyd2lzZSB0aGF0IGZpZWxkIHNob3VsZCBiZSBpZ25vcmVkLgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmZyYW1lX3NlcXVlbmNlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+CisJICAgICAgVGhlIHNlcXVlbmNlIG51bWJlciBvZiB0aGUgZnJhbWUgYmVpbmcgcmVjZWl2ZWQuIE9ubHkgdmFsaWQgaWYgdGhlCisJICAgICAgPGNvbnN0YW50PlY0TDJfRVZFTlRfTURfRkxfSEFWRV9GUkFNRV9TRVE8L2NvbnN0YW50PiBmbGFnIHdhcyBzZXQuCisJICAgIDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cmVnaW9uX21hc2s8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT4KKwkgICAgICBUaGUgYml0bWFzayBvZiB0aGUgcmVnaW9ucyB0aGF0IHJlcG9ydGVkIG1vdGlvbi4gVGhlcmUgaXMgYXQgbGVhc3Qgb25lCisJICAgICAgcmVnaW9uLiBJZiB0aGlzIGZpZWxkIGlzIDAsIHRoZW4gbm8gbW90aW9uIHdhcyBkZXRlY3RlZCBhdCBhbGwuCisJICAgICAgSWYgdGhlcmUgaXMgbm8gPGNvbnN0YW50PlY0TDJfQ0lEX0RFVEVDVF9NRF9SRUdJT05fR1JJRDwvY29uc3RhbnQ+IGNvbnRyb2wKKwkgICAgICAoc2VlIDx4cmVmIGxpbmtlbmQ9ImRldGVjdC1jb250cm9scyIgLz4pIHRvIGFzc2lnbiBhIGRpZmZlcmVudCByZWdpb24KKwkgICAgICB0byBlYWNoIGNlbGwgaW4gdGhlIG1vdGlvbiBkZXRlY3Rpb24gZ3JpZCwgdGhlbiB0aGF0IGFsbCBjZWxscworCSAgICAgIGFyZSBhdXRvbWF0aWNhbGx5IGFzc2lnbmVkIHRvIHRoZSBkZWZhdWx0IHJlZ2lvbiAwLgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9ImN0cmwtY2hhbmdlcy1mbGFncyI+CisgICAgICA8dGl0bGU+Q29udHJvbCBDaGFuZ2VzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0VWRU5UX0NUUkxfQ0hfVkFMVUU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDE8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBjb250cm9sIGV2ZW50IHdhcyB0cmlnZ2VyZWQgYmVjYXVzZSB0aGUgdmFsdWUgb2YgdGhlIGNvbnRyb2wKKwkJY2hhbmdlZC4gU3BlY2lhbCBjYXNlczogVm9sYXRpbGUgY29udHJvbHMgZG8gbm8gZ2VuZXJhdGUgdGhpcyBldmVudDsKKwkJSWYgYSBjb250cm9sIGhhcyB0aGUgPGNvbnN0YW50PlY0TDJfQ1RSTF9GTEFHX0VYRUNVVEVfT05fV1JJVEU8L2NvbnN0YW50PgorCQlmbGFnIHNldCwgdGhlbiB0aGlzIGV2ZW50IGlzIHNlbnQgYXMgd2VsbCwgcmVnYXJkbGVzcyBpdHMgdmFsdWUuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0VWRU5UX0NUUkxfQ0hfRkxBR1M8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDI8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBjb250cm9sIGV2ZW50IHdhcyB0cmlnZ2VyZWQgYmVjYXVzZSB0aGUgY29udHJvbCBmbGFncworCQljaGFuZ2VkLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9FVkVOVF9DVFJMX0NIX1JBTkdFPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDA0PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoaXMgY29udHJvbCBldmVudCB3YXMgdHJpZ2dlcmVkIGJlY2F1c2UgdGhlIG1pbmltdW0sCisJICAgIG1heGltdW0sIHN0ZXAgb3IgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGNvbnRyb2wgY2hhbmdlZC48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InNyYy1jaGFuZ2VzLWZsYWdzIj4KKyAgICAgIDx0aXRsZT5Tb3VyY2UgQ2hhbmdlczwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1kZWY7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9FVkVOVF9TUkNfQ0hfUkVTT0xVVElPTjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMTwvZW50cnk+CisJICAgIDxlbnRyeT5UaGlzIGV2ZW50IGdldHMgdHJpZ2dlcmVkIHdoZW4gYSByZXNvbHV0aW9uIGNoYW5nZSBpcworCSAgICBkZXRlY3RlZCBhdCBhbiBpbnB1dC4gVGhpcyBjYW4gY29tZSBmcm9tIGFuIGlucHV0IGNvbm5lY3RvciBvcgorCSAgICBmcm9tIGEgdmlkZW8gZGVjb2Rlci4KKwkgICAgPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorICA8L3JlZnNlY3QxPgorICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1kdi10aW1pbmdzLWNhcC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1kdi10aW1pbmdzLWNhcC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIwMTdiZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWR2LXRpbWluZ3MtY2FwLnhtbApAQCAtMCwwICsxLDIxNCBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2MtZHYtdGltaW5ncy1jYXAiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBWSURJT0NfRFZfVElNSU5HU19DQVAsIFZJRElPQ19TVUJERVZfRFZfVElNSU5HU19DQVA8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPlZJRElPQ19EVl9USU1JTkdTX0NBUDwvcmVmbmFtZT4KKyAgICA8cmVmbmFtZT5WSURJT0NfU1VCREVWX0RWX1RJTUlOR1NfQ0FQPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPlRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIERpZ2l0YWwgVmlkZW8gcmVjZWl2ZXIvdHJhbnNtaXR0ZXI8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c3RydWN0IHY0bDJfZHZfdGltaW5nc19jYXAgKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19EVl9USU1JTkdTX0NBUCwgVklESU9DX1NVQkRFVl9EVl9USU1JTkdTX0NBUDwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgPG5vdGU+CisgICAgICA8dGl0bGU+RXhwZXJpbWVudGFsPC90aXRsZT4KKyAgICAgIDxwYXJhPlRoaXMgaXMgYW4gPGxpbmsgbGlua2VuZD0iZXhwZXJpbWVudGFsIj4gZXhwZXJpbWVudGFsIDwvbGluaz4KKyAgICAgIGludGVyZmFjZSBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLjwvcGFyYT4KKyAgICA8L25vdGU+CisKKyAgICA8cGFyYT5UbyBxdWVyeSB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBEViByZWNlaXZlci90cmFuc21pdHRlciBhcHBsaWNhdGlvbnMKK2NhbiBjYWxsIHRoZSA8Y29uc3RhbnQ+VklESU9DX0RWX1RJTUlOR1NfQ0FQPC9jb25zdGFudD4gaW9jdGwgb24gYSB2aWRlbyBub2RlCithbmQgdGhlIGRyaXZlciB3aWxsIGZpbGwgaW4gdGhlIHN0cnVjdHVyZS4gTm90ZSB0aGF0IGRyaXZlcnMgbWF5IHJldHVybgorZGlmZmVyZW50IHZhbHVlcyBhZnRlciBzd2l0Y2hpbmcgdGhlIHZpZGVvIGlucHV0IG9yIG91dHB1dC48L3BhcmE+CisKKyAgICA8cGFyYT5XaGVuIGltcGxlbWVudGVkIGJ5IHRoZSBkcml2ZXIgRFYgY2FwYWJpbGl0aWVzIG9mIHN1YmRldmljZXMgY2FuIGJlCitxdWVyaWVkIGJ5IGNhbGxpbmcgdGhlIDxjb25zdGFudD5WSURJT0NfU1VCREVWX0RWX1RJTUlOR1NfQ0FQPC9jb25zdGFudD4gaW9jdGwKK2RpcmVjdGx5IG9uIGEgc3ViZGV2aWNlIG5vZGUuIFRoZSBjYXBhYmlsaXRpZXMgYXJlIHNwZWNpZmljIHRvIGlucHV0cyAoZm9yIERWCityZWNlaXZlcnMpIG9yIG91dHB1dHMgKGZvciBEViB0cmFuc21pdHRlcnMpLCBhcHBsaWNhdGlvbnMgbXVzdCBzcGVjaWZ5IHRoZQorZGVzaXJlZCBwYWQgbnVtYmVyIGluIHRoZSAmdjRsMi1kdi10aW1pbmdzLWNhcDsgPHN0cnVjdGZpZWxkPnBhZDwvc3RydWN0ZmllbGQ+CitmaWVsZC4gQXR0ZW1wdHMgdG8gcXVlcnkgY2FwYWJpbGl0aWVzIG9uIGEgcGFkIHRoYXQgZG9lc24ndCBzdXBwb3J0IHRoZW0gd2lsbAorcmV0dXJuIGFuICZFSU5WQUw7LjwvcGFyYT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1idC10aW1pbmdzLWNhcCI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfYnRfdGltaW5nc19jYXA8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5taW5fd2lkdGg8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5NaW5pbXVtIHdpZHRoIG9mIHRoZSBhY3RpdmUgdmlkZW8gaW4gcGl4ZWxzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+bWF4X3dpZHRoPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+TWF4aW11bSB3aWR0aCBvZiB0aGUgYWN0aXZlIHZpZGVvIGluIHBpeGVscy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm1pbl9oZWlnaHQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5NaW5pbXVtIGhlaWdodCBvZiB0aGUgYWN0aXZlIHZpZGVvIGluIGxpbmVzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+bWF4X2hlaWdodDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk1heGltdW0gaGVpZ2h0IG9mIHRoZSBhY3RpdmUgdmlkZW8gaW4gbGluZXMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTY0PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5taW5fcGl4ZWxjbG9jazwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk1pbmltdW0gcGl4ZWxjbG9jayBmcmVxdWVuY3kgaW4gSHouPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTY0PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5tYXhfcGl4ZWxjbG9jazwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk1heGltdW0gcGl4ZWxjbG9jayBmcmVxdWVuY3kgaW4gSHouPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5zdGFuZGFyZHM8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgdmlkZW8gc3RhbmRhcmQocykgc3VwcG9ydGVkIGJ5IHRoZSBoYXJkd2FyZS4KKwkgICAgU2VlIDx4cmVmIGxpbmtlbmQ9ImR2LWJ0LXN0YW5kYXJkcyIvPiBmb3IgYSBsaXN0IG9mIHN0YW5kYXJkcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmNhcGFiaWxpdGllczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlNldmVyYWwgZmxhZ3MgZ2l2aW5nIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNhcGFiaWxpdGllcy4KKwkgICAgU2VlIDx4cmVmIGxpbmtlbmQ9ImR2LWJ0LWNhcC1jYXBhYmlsaXRpZXMiLz4gZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZsYWdzLgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD5bMTZdPC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlc2VydmVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucy4gRHJpdmVycyBtdXN0IHNldCB0aGUgYXJyYXkgdG8gemVyby48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItZHYtdGltaW5ncy1jYXAiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2R2X3RpbWluZ3NfY2FwPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjQiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlR5cGUgb2YgRFYgdGltaW5ncyBhcyBsaXN0ZWQgaW4gPHhyZWYgbGlua2VuZD0iZHYtdGltaW5nLXR5cGVzIi8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cGFkPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+UGFkIG51bWJlciBhcyByZXBvcnRlZCBieSB0aGUgbWVkaWEgY29udHJvbGxlciBBUEkuIFRoaXMgZmllbGQKKwkgICAgaXMgb25seSB1c2VkIHdoZW4gb3BlcmF0aW5nIG9uIGEgc3ViZGV2aWNlIG5vZGUuIFdoZW4gb3BlcmF0aW5nIG9uIGEKKwkgICAgdmlkZW8gbm9kZSBhcHBsaWNhdGlvbnMgbXVzdCBzZXQgdGhpcyBmaWVsZCB0byB6ZXJvLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cmVzZXJ2ZWQ8L3N0cnVjdGZpZWxkPlsyXTwvZW50cnk+CisJICAgIDxlbnRyeT5SZXNlcnZlZCBmb3IgZnV0dXJlIGV4dGVuc2lvbnMuIERyaXZlcnMgbXVzdCBzZXQgdGhlIGFycmF5IHRvIHplcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PnVuaW9uPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD48L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PiZ2NGwyLWJ0LXRpbWluZ3MtY2FwOzwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+YnQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5CVC42NTYvMTEyMCB0aW1pbmdzIGNhcGFiaWxpdGllcyBvZiB0aGUgaGFyZHdhcmUuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cmF3X2RhdGE8L3N0cnVjdGZpZWxkPlszMl08L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJkdi1idC1jYXAtY2FwYWJpbGl0aWVzIj4KKyAgICAgIDx0aXRsZT5EViBCVCBUaW1pbmcgY2FwYWJpbGl0aWVzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMiI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PkZsYWc8L2VudHJ5PgorCSAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5WNEwyX0RWX0JUX0NBUF9JTlRFUkxBQ0VEPC9lbnRyeT4KKwkgICAgPGVudHJ5PkludGVybGFjZWQgZm9ybWF0cyBhcmUgc3VwcG9ydGVkLgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+VjRMMl9EVl9CVF9DQVBfUFJPR1JFU1NJVkU8L2VudHJ5PgorCSAgICA8ZW50cnk+UHJvZ3Jlc3NpdmUgZm9ybWF0cyBhcmUgc3VwcG9ydGVkLgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+VjRMMl9EVl9CVF9DQVBfUkVEVUNFRF9CTEFOS0lORzwvZW50cnk+CisJICAgIDxlbnRyeT5DVlQvR1RGIHNwZWNpZmljOiB0aGUgdGltaW5ncyBjYW4gbWFrZSB1c2Ugb2YgcmVkdWNlZCBibGFua2luZyAoQ1ZUKQorb3IgdGhlICdTZWNvbmRhcnkgR1RGJyBjdXJ2ZSAoR1RGKS4KKwkgICAgPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PlY0TDJfRFZfQlRfQ0FQX0NVU1RPTTwvZW50cnk+CisJICAgIDxlbnRyeT5DYW4gc3VwcG9ydCBub24tc3RhbmRhcmQgdGltaW5ncywgaS5lLiB0aW1pbmdzIG5vdCBiZWxvbmdpbmcgdG8gdGhlCitzdGFuZGFyZHMgc2V0IGluIHRoZSA8c3RydWN0ZmllbGQ+c3RhbmRhcmRzPC9zdHJ1Y3RmaWVsZD4gZmllbGQuCisJICAgIDwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1lbmNvZGVyLWNtZC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1lbmNvZGVyLWNtZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBhNGEwOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWVuY29kZXItY21kLnhtbApAQCAtMCwwICsxLDE5NyBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2MtZW5jb2Rlci1jbWQiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBWSURJT0NfRU5DT0RFUl9DTUQsIFZJRElPQ19UUllfRU5DT0RFUl9DTUQ8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPlZJRElPQ19FTkNPREVSX0NNRDwvcmVmbmFtZT4KKyAgICA8cmVmbmFtZT5WSURJT0NfVFJZX0VOQ09ERVJfQ01EPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPkV4ZWN1dGUgYW4gZW5jb2RlciBjb21tYW5kPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCB2NGwyX2VuY29kZXJfY21kICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfRU5DT0RFUl9DTUQsIFZJRElPQ19UUllfRU5DT0RFUl9DTUQ8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPlRoZXNlIGlvY3RscyBjb250cm9sIGFuIGF1ZGlvL3ZpZGVvICh1c3VhbGx5IE1QRUctKSBlbmNvZGVyLgorPGNvbnN0YW50PlZJRElPQ19FTkNPREVSX0NNRDwvY29uc3RhbnQ+IHNlbmRzIGEgY29tbWFuZCB0byB0aGUKK2VuY29kZXIsIDxjb25zdGFudD5WSURJT0NfVFJZX0VOQ09ERVJfQ01EPC9jb25zdGFudD4gY2FuIGJlIHVzZWQgdG8KK3RyeSBhIGNvbW1hbmQgd2l0aG91dCBhY3R1YWxseSBleGVjdXRpbmcgaXQuPC9wYXJhPgorCisgICAgPHBhcmE+VG8gc2VuZCBhIGNvbW1hbmQgYXBwbGljYXRpb25zIG11c3QgaW5pdGlhbGl6ZSBhbGwgZmllbGRzIG9mIGEKKyAgICAmdjRsMi1lbmNvZGVyLWNtZDsgYW5kIGNhbGwKKyAgICA8Y29uc3RhbnQ+VklESU9DX0VOQ09ERVJfQ01EPC9jb25zdGFudD4gb3IKKyAgICA8Y29uc3RhbnQ+VklESU9DX1RSWV9FTkNPREVSX0NNRDwvY29uc3RhbnQ+IHdpdGggYSBwb2ludGVyIHRvIHRoaXMKKyAgICBzdHJ1Y3R1cmUuPC9wYXJhPgorCisgICAgPHBhcmE+VGhlIDxzdHJ1Y3RmaWVsZD5jbWQ8L3N0cnVjdGZpZWxkPiBmaWVsZCBtdXN0IGNvbnRhaW4gdGhlCitjb21tYW5kIGNvZGUuIFRoZSA8c3RydWN0ZmllbGQ+ZmxhZ3M8L3N0cnVjdGZpZWxkPiBmaWVsZCBpcyBjdXJyZW50bHkKK29ubHkgdXNlZCBieSB0aGUgU1RPUCBjb21tYW5kIGFuZCBjb250YWlucyBvbmUgYml0OiBJZiB0aGUKKzxjb25zdGFudD5WNEwyX0VOQ19DTURfU1RPUF9BVF9HT1BfRU5EPC9jb25zdGFudD4gZmxhZyBpcyBzZXQsCitlbmNvZGluZyB3aWxsIGNvbnRpbnVlIHVudGlsIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgPHdvcmRhc3dvcmQ+R3JvdXAKK09mIFBpY3R1cmVzPC93b3JkYXN3b3JkPiwgb3RoZXJ3aXNlIGl0IHdpbGwgc3RvcCBpbW1lZGlhdGVseS48L3BhcmE+CisKKyAgICA8cGFyYT5BIDxmdW5jdGlvbj5yZWFkPC9mdW5jdGlvbj4oKSBvciAmVklESU9DLVNUUkVBTU9OOyBjYWxsIHNlbmRzIGFuIGltcGxpY2l0CitTVEFSVCBjb21tYW5kIHRvIHRoZSBlbmNvZGVyIGlmIGl0IGhhcyBub3QgYmVlbiBzdGFydGVkIHlldC4gQWZ0ZXIgYSBTVE9QIGNvbW1hbmQsCis8ZnVuY3Rpb24+cmVhZDwvZnVuY3Rpb24+KCkgY2FsbHMgd2lsbCByZWFkIHRoZSByZW1haW5pbmcgZGF0YQorYnVmZmVyZWQgYnkgdGhlIGRyaXZlci4gV2hlbiB0aGUgYnVmZmVyIGlzIGVtcHR5LAorPGZ1bmN0aW9uPnJlYWQ8L2Z1bmN0aW9uPigpIHdpbGwgcmV0dXJuIHplcm8gYW5kIHRoZSBuZXh0Cis8ZnVuY3Rpb24+cmVhZDwvZnVuY3Rpb24+KCkgY2FsbCB3aWxsIHJlc3RhcnQgdGhlIGVuY29kZXIuPC9wYXJhPgorCisgICAgPHBhcmE+QSA8ZnVuY3Rpb24+Y2xvc2U8L2Z1bmN0aW9uPigpIG9yICZWSURJT0MtU1RSRUFNT0ZGOyBjYWxsIG9mIGEgc3RyZWFtaW5nCitmaWxlIGRlc2NyaXB0b3Igc2VuZHMgYW4gaW1wbGljaXQgaW1tZWRpYXRlIFNUT1AgdG8gdGhlIGVuY29kZXIsIGFuZCBhbGwgYnVmZmVyZWQKK2RhdGEgaXMgZGlzY2FyZGVkLjwvcGFyYT4KKworICAgIDxwYXJhPlRoZXNlIGlvY3RscyBhcmUgb3B0aW9uYWwsIG5vdCBhbGwgZHJpdmVycyBtYXkgc3VwcG9ydAordGhlbS4gVGhleSB3ZXJlIGludHJvZHVjZWQgaW4gTGludXggMi42LjIxLjwvcGFyYT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1lbmNvZGVyLWNtZCI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfZW5jb2Rlcl9jbWQ8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5jbWQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgZW5jb2RlciBjb21tYW5kLCBzZWUgPHhyZWYgbGlua2VuZD0iZW5jb2Rlci1jbWRzIiAvPi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmZsYWdzPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+RmxhZ3MgdG8gZ28gd2l0aCB0aGUgY29tbWFuZCwgc2VlIDx4cmVmCisJCWxpbmtlbmQ9ImVuY29kZXItZmxhZ3MiIC8+LiBJZiBubyBmbGFncyBhcmUgZGVmaW5lZCBmb3IKK3RoaXMgY29tbWFuZCwgZHJpdmVycyBhbmQgYXBwbGljYXRpb25zIG11c3Qgc2V0IHRoaXMgZmllbGQgdG8KK3plcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5kYXRhPC9zdHJ1Y3RmaWVsZD5bOF08L2VudHJ5PgorCSAgICA8ZW50cnk+UmVzZXJ2ZWQgZm9yIGZ1dHVyZSBleHRlbnNpb25zLiBEcml2ZXJzIGFuZAorYXBwbGljYXRpb25zIG11c3Qgc2V0IHRoZSBhcnJheSB0byB6ZXJvLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iZW5jb2Rlci1jbWRzIj4KKyAgICAgIDx0aXRsZT5FbmNvZGVyIENvbW1hbmRzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0VOQ19DTURfU1RBUlQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgPGVudHJ5PlN0YXJ0IHRoZSBlbmNvZGVyLiBXaGVuIHRoZSBlbmNvZGVyIGlzIGFscmVhZHkKK3J1bm5pbmcgb3IgcGF1c2VkLCB0aGlzIGNvbW1hbmQgZG9lcyBub3RoaW5nLiBObyBmbGFncyBhcmUgZGVmaW5lZCBmb3IKK3RoaXMgY29tbWFuZC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRU5DX0NNRF9TVE9QPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MTwvZW50cnk+CisJICAgIDxlbnRyeT5TdG9wIHRoZSBlbmNvZGVyLiBXaGVuIHRoZQorPGNvbnN0YW50PlY0TDJfRU5DX0NNRF9TVE9QX0FUX0dPUF9FTkQ8L2NvbnN0YW50PiBmbGFnIGlzIHNldCwKK2VuY29kaW5nIHdpbGwgY29udGludWUgdW50aWwgdGhlIGVuZCBvZiB0aGUgY3VycmVudCA8d29yZGFzd29yZD5Hcm91cAorT2YgUGljdHVyZXM8L3dvcmRhc3dvcmQ+LCBvdGhlcndpc2UgZW5jb2Rpbmcgd2lsbCBzdG9wIGltbWVkaWF0ZWx5LgorV2hlbiB0aGUgZW5jb2RlciBpcyBhbHJlYWR5IHN0b3BwZWQsIHRoaXMgY29tbWFuZCBkb2VzCitub3RoaW5nLiBtZW0ybWVtIGVuY29kZXJzIHdpbGwgc2VuZCBhIDxjb25zdGFudD5WNEwyX0VWRU5UX0VPUzwvY29uc3RhbnQ+IGV2ZW50Cit3aGVuIHRoZSBsYXN0IGZyYW1lIGhhcyBiZWVuIGVuY29kZWQgYW5kIGFsbCBmcmFtZXMgYXJlIHJlYWR5IHRvIGJlIGRlcXVldWVkIGFuZAord2lsbCBzZXQgdGhlIDxjb25zdGFudD5WNEwyX0JVRl9GTEFHX0xBU1Q8L2NvbnN0YW50PiBidWZmZXIgZmxhZyBvbiB0aGUgbGFzdAorYnVmZmVyIG9mIHRoZSBjYXB0dXJlIHF1ZXVlIHRvIGluZGljYXRlIHRoZXJlIHdpbGwgYmUgbm8gbmV3IGJ1ZmZlcnMgcHJvZHVjZWQgdG8KK2RlcXVldWUuIFRoaXMgYnVmZmVyIG1heSBiZSBlbXB0eSwgaW5kaWNhdGVkIGJ5IHRoZSBkcml2ZXIgc2V0dGluZyB0aGUKKzxzdHJ1Y3RmaWVsZD5ieXRlc3VzZWQ8L3N0cnVjdGZpZWxkPiBmaWVsZCB0byAwLiBPbmNlIHRoZQorPGNvbnN0YW50PlY0TDJfQlVGX0ZMQUdfTEFTVDwvY29uc3RhbnQ+IGZsYWcgd2FzIHNldCwgdGhlCis8bGluayBsaW5rZW5kPSJ2aWRpb2MtcWJ1ZiI+VklESU9DX0RRQlVGPC9saW5rPiBpb2N0bCB3aWxsIG5vdCBibG9jayBhbnltb3JlLAorYnV0IHJldHVybiBhbiAmRVBJUEU7LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9FTkNfQ01EX1BBVVNFPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MjwvZW50cnk+CisJICAgIDxlbnRyeT5QYXVzZSB0aGUgZW5jb2Rlci4gV2hlbiB0aGUgZW5jb2RlciBoYXMgbm90IGJlZW4KK3N0YXJ0ZWQgeWV0LCB0aGUgZHJpdmVyIHdpbGwgcmV0dXJuIGFuICZFUEVSTTsuIFdoZW4gdGhlIGVuY29kZXIgaXMKK2FscmVhZHkgcGF1c2VkLCB0aGlzIGNvbW1hbmQgZG9lcyBub3RoaW5nLiBObyBmbGFncyBhcmUgZGVmaW5lZCBmb3IKK3RoaXMgY29tbWFuZC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRU5DX0NNRF9SRVNVTUU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4zPC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlc3VtZSBlbmNvZGluZyBhZnRlciBhIFBBVVNFIGNvbW1hbmQuIFdoZW4gdGhlCitlbmNvZGVyIGhhcyBub3QgYmVlbiBzdGFydGVkIHlldCwgdGhlIGRyaXZlciB3aWxsIHJldHVybiBhbiAmRVBFUk07LgorV2hlbiB0aGUgZW5jb2RlciBpcyBhbHJlYWR5IHJ1bm5pbmcsIHRoaXMgY29tbWFuZCBkb2VzIG5vdGhpbmcuIE5vCitmbGFncyBhcmUgZGVmaW5lZCBmb3IgdGhpcyBjb21tYW5kLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iZW5jb2Rlci1mbGFncyI+CisgICAgICA8dGl0bGU+RW5jb2RlciBDb21tYW5kIEZsYWdzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0VOQ19DTURfU1RPUF9BVF9HT1BfRU5EPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAxPC9lbnRyeT4KKwkgICAgPGVudHJ5PlN0b3AgZW5jb2RpbmcgYXQgdGhlIGVuZCBvZiB0aGUgY3VycmVudCA8d29yZGFzd29yZD5Hcm91cCBPZgorUGljdHVyZXM8L3dvcmRhc3dvcmQ+LCByYXRoZXIgdGhhbiBpbW1lZGlhdGVseS48L2VudHJ5PgorCSAgPC9yb3c+CisgICAgICAgPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgPHN0cnVjdGZpZWxkPmNtZDwvc3RydWN0ZmllbGQ+IGZpZWxkIGlzIGludmFsaWQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FUEVSTTwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgYXBwbGljYXRpb24gc2VudCBhIFBBVVNFIG9yIFJFU1VNRSBjb21tYW5kIHdoZW4KK3RoZSBlbmNvZGVyIHdhcyBub3QgcnVubmluZy48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWVudW0tZHYtdGltaW5ncy54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1lbnVtLWR2LXRpbWluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlM2NhZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1lbnVtLWR2LXRpbWluZ3MueG1sCkBAIC0wLDAgKzEsMTMzIEBACis8cmVmZW50cnkgaWQ9InZpZGlvYy1lbnVtLWR2LXRpbWluZ3MiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBWSURJT0NfRU5VTV9EVl9USU1JTkdTLCBWSURJT0NfU1VCREVWX0VOVU1fRFZfVElNSU5HUzwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX0VOVU1fRFZfVElNSU5HUzwvcmVmbmFtZT4KKyAgICA8cmVmbmFtZT5WSURJT0NfU1VCREVWX0VOVU1fRFZfVElNSU5HUzwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5FbnVtZXJhdGUgc3VwcG9ydGVkIERpZ2l0YWwgVmlkZW8gdGltaW5nczwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zdHJ1Y3QgdjRsMl9lbnVtX2R2X3RpbWluZ3MgKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19FTlVNX0RWX1RJTUlOR1MsIFZJRElPQ19TVUJERVZfRU5VTV9EVl9USU1JTkdTPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8bm90ZT4KKyAgICAgIDx0aXRsZT5FeHBlcmltZW50YWw8L3RpdGxlPgorICAgICAgPHBhcmE+VGhpcyBpcyBhbiA8bGluayBsaW5rZW5kPSJleHBlcmltZW50YWwiPiBleHBlcmltZW50YWwgPC9saW5rPgorICAgICAgaW50ZXJmYWNlIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuPC9wYXJhPgorICAgIDwvbm90ZT4KKworICAgIDxwYXJhPldoaWxlIHNvbWUgRFYgcmVjZWl2ZXJzIG9yIHRyYW5zbWl0dGVycyBzdXBwb3J0IGEgd2lkZSByYW5nZSBvZiB0aW1pbmdzLCBvdGhlcnMKK3N1cHBvcnQgb25seSBhIGxpbWl0ZWQgbnVtYmVyIG9mIHRpbWluZ3MuIFdpdGggdGhpcyBpb2N0bCBhcHBsaWNhdGlvbnMgY2FuIGVudW1lcmF0ZSBhIGxpc3QKK29mIGtub3duIHN1cHBvcnRlZCB0aW1pbmdzLiBDYWxsICZWSURJT0MtRFYtVElNSU5HUy1DQVA7IHRvIGNoZWNrIGlmIGl0IGFsc28gc3VwcG9ydHMgb3RoZXIKK3N0YW5kYXJkcyBvciBldmVuIGN1c3RvbSB0aW1pbmdzIHRoYXQgYXJlIG5vdCBpbiB0aGlzIGxpc3QuPC9wYXJhPgorCisgICAgPHBhcmE+VG8gcXVlcnkgdGhlIGF2YWlsYWJsZSB0aW1pbmdzLCBhcHBsaWNhdGlvbnMgaW5pdGlhbGl6ZSB0aGUKKzxzdHJ1Y3RmaWVsZD5pbmRleDwvc3RydWN0ZmllbGQ+IGZpZWxkIGFuZCB6ZXJvIHRoZSByZXNlcnZlZCBhcnJheSBvZiAmdjRsMi1lbnVtLWR2LXRpbWluZ3M7CithbmQgY2FsbCB0aGUgPGNvbnN0YW50PlZJRElPQ19FTlVNX0RWX1RJTUlOR1M8L2NvbnN0YW50PiBpb2N0bCBvbiBhIHZpZGVvIG5vZGUgd2l0aCBhCitwb2ludGVyIHRvIHRoaXMgc3RydWN0dXJlLiBEcml2ZXJzIGZpbGwgdGhlIHJlc3Qgb2YgdGhlIHN0cnVjdHVyZSBvciByZXR1cm4gYW4KKyZFSU5WQUw7IHdoZW4gdGhlIGluZGV4IGlzIG91dCBvZiBib3VuZHMuIFRvIGVudW1lcmF0ZSBhbGwgc3VwcG9ydGVkIERWIHRpbWluZ3MsCithcHBsaWNhdGlvbnMgc2hhbGwgYmVnaW4gYXQgaW5kZXggemVybywgaW5jcmVtZW50aW5nIGJ5IG9uZSB1bnRpbCB0aGUKK2RyaXZlciByZXR1cm5zIDxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+LiBOb3RlIHRoYXQgZHJpdmVycyBtYXkgZW51bWVyYXRlIGEKK2RpZmZlcmVudCBzZXQgb2YgRFYgdGltaW5ncyBhZnRlciBzd2l0Y2hpbmcgdGhlIHZpZGVvIGlucHV0IG9yCitvdXRwdXQuPC9wYXJhPgorCisgICAgPHBhcmE+V2hlbiBpbXBsZW1lbnRlZCBieSB0aGUgZHJpdmVyIERWIHRpbWluZ3Mgb2Ygc3ViZGV2aWNlcyBjYW4gYmUgcXVlcmllZAorYnkgY2FsbGluZyB0aGUgPGNvbnN0YW50PlZJRElPQ19TVUJERVZfRU5VTV9EVl9USU1JTkdTPC9jb25zdGFudD4gaW9jdGwgZGlyZWN0bHkKK29uIGEgc3ViZGV2aWNlIG5vZGUuIFRoZSBEViB0aW1pbmdzIGFyZSBzcGVjaWZpYyB0byBpbnB1dHMgKGZvciBEViByZWNlaXZlcnMpIG9yCitvdXRwdXRzIChmb3IgRFYgdHJhbnNtaXR0ZXJzKSwgYXBwbGljYXRpb25zIG11c3Qgc3BlY2lmeSB0aGUgZGVzaXJlZCBwYWQgbnVtYmVyCitpbiB0aGUgJnY0bDItZW51bS1kdi10aW1pbmdzOyA8c3RydWN0ZmllbGQ+cGFkPC9zdHJ1Y3RmaWVsZD4gZmllbGQuIEF0dGVtcHRzIHRvCitlbnVtZXJhdGUgdGltaW5ncyBvbiBhIHBhZCB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCB0aGVtIHdpbGwgcmV0dXJuIGFuICZFSU5WQUw7LjwvcGFyYT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1lbnVtLWR2LXRpbWluZ3MiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2VudW1fZHZfdGltaW5nczwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3Mtc3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+TnVtYmVyIG9mIHRoZSBEViB0aW1pbmdzLCBzZXQgYnkgdGhlCithcHBsaWNhdGlvbi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnBhZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlBhZCBudW1iZXIgYXMgcmVwb3J0ZWQgYnkgdGhlIG1lZGlhIGNvbnRyb2xsZXIgQVBJLiBUaGlzIGZpZWxkCisJICAgIGlzIG9ubHkgdXNlZCB3aGVuIG9wZXJhdGluZyBvbiBhIHN1YmRldmljZSBub2RlLiBXaGVuIG9wZXJhdGluZyBvbiBhCisJICAgIHZpZGVvIG5vZGUgYXBwbGljYXRpb25zIG11c3Qgc2V0IHRoaXMgZmllbGQgdG8gemVyby48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD5bMl08L2VudHJ5PgorCSAgICA8ZW50cnk+UmVzZXJ2ZWQgZm9yIGZ1dHVyZSBleHRlbnNpb25zLiBEcml2ZXJzIGFuZCBhcHBsaWNhdGlvbnMgbXVzdAorCSAgICBzZXQgdGhlIGFycmF5IHRvIHplcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PiZ2NGwyLWR2LXRpbWluZ3M7PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD50aW1pbmdzPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIHRpbWluZ3MuPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICAmcmV0dXJuLXZhbHVlOworCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FSU5WQUw8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlICZ2NGwyLWVudW0tZHYtdGltaW5nczsgPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4KK2lzIG91dCBvZiBib3VuZHMgb3IgdGhlIDxzdHJ1Y3RmaWVsZD5wYWQ8L3N0cnVjdGZpZWxkPiBudW1iZXIgaXMgaW52YWxpZC48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVOT0RBVEE8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+RGlnaXRhbCB2aWRlbyBwcmVzZXRzIGFyZSBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIGlucHV0IG9yIG91dHB1dC48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWVudW0tZm10LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWVudW0tZm10LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGRmZWVkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZW51bS1mbXQueG1sCkBAIC0wLDAgKzEsMTU5IEBACis8cmVmZW50cnkgaWQ9InZpZGlvYy1lbnVtLWZtdCI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19FTlVNX0ZNVDwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX0VOVU1fRk1UPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPkVudW1lcmF0ZSBpbWFnZSBmb3JtYXRzPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCB2NGwyX2ZtdGRlc2MKKyo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfRU5VTV9GTVQ8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPlRvIGVudW1lcmF0ZSBpbWFnZSBmb3JtYXRzIGFwcGxpY2F0aW9ucyBpbml0aWFsaXplIHRoZQorPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBhbmQgPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4KK2ZpZWxkIG9mICZ2NGwyLWZtdGRlc2M7IGFuZCBjYWxsIHRoZQorPGNvbnN0YW50PlZJRElPQ19FTlVNX0ZNVDwvY29uc3RhbnQ+IGlvY3RsIHdpdGggYSBwb2ludGVyIHRvIHRoaXMKK3N0cnVjdHVyZS4gRHJpdmVycyBmaWxsIHRoZSByZXN0IG9mIHRoZSBzdHJ1Y3R1cmUgb3IgcmV0dXJuIGFuCismRUlOVkFMOy4gQWxsIGZvcm1hdHMgYXJlIGVudW1lcmFibGUgYnkgYmVnaW5uaW5nIGF0IGluZGV4IHplcm8gYW5kCitpbmNyZW1lbnRpbmcgYnkgb25lIHVudGlsIDxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+IGlzCityZXR1cm5lZC48L3BhcmE+CisKKyAgICA8cGFyYT5Ob3RlIHRoYXQgYWZ0ZXIgc3dpdGNoaW5nIGlucHV0IG9yIG91dHB1dCB0aGUgbGlzdCBvZiBlbnVtZXJhdGVkIGltYWdlCitmb3JtYXRzIG1heSBiZSBkaWZmZXJlbnQuPC9wYXJhPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLWZtdGRlc2MiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2ZtdGRlc2M8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5pbmRleDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk51bWJlciBvZiB0aGUgZm9ybWF0IGluIHRoZSBlbnVtZXJhdGlvbiwgc2V0IGJ5Cit0aGUgYXBwbGljYXRpb24uIFRoaXMgaXMgaW4gbm8gd2F5IHJlbGF0ZWQgdG8gdGhlIDxzdHJ1Y3RmaWVsZD4KK3BpeGVsZm9ybWF0PC9zdHJ1Y3RmaWVsZD4gZmllbGQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VHlwZSBvZiB0aGUgZGF0YSBzdHJlYW0sIHNldCBieSB0aGUgYXBwbGljYXRpb24uCitPbmx5IHRoZXNlIHR5cGVzIGFyZSB2YWxpZCBoZXJlOgorPGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTwvY29uc3RhbnQ+LAorPGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRV9NUExBTkU8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVDwvY29uc3RhbnQ+LAorPGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVklERU9fT1VUUFVUX01QTEFORTwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVklERU9fT1ZFUkxBWTwvY29uc3RhbnQ+LiBTZWUgPHhyZWYgbGlua2VuZD0idjRsMi1idWYtdHlwZSIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5mbGFnczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlNlZSA8eHJlZiBsaW5rZW5kPSJmbXRkZXNjLWZsYWdzIiAvPjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3U4PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5kZXNjcmlwdGlvbjwvc3RydWN0ZmllbGQ+WzMyXTwvZW50cnk+CisJICAgIDxlbnRyeT5EZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0LCBhIE5VTC10ZXJtaW5hdGVkIEFTQ0lJCitzdHJpbmcuIFRoaXMgaW5mb3JtYXRpb24gaXMgaW50ZW5kZWQgZm9yIHRoZSB1c2VyLCBmb3IgZXhhbXBsZTogIllVVgorNDoyOjIiLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cGl4ZWxmb3JtYXQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgaW1hZ2UgZm9ybWF0IGlkZW50aWZpZXIuIFRoaXMgaXMgYQorZm91ciBjaGFyYWN0ZXIgY29kZSBhcyBjb21wdXRlZCBieSB0aGUgdjRsMl9mb3VyY2MoKQorbWFjcm86PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJoc3BhbiI+PHBhcmE+PHByb2dyYW1saXN0aW5nIGlkPSJ2NGwyLWZvdXJjYyI+CisjZGVmaW5lIHY0bDJfZm91cmNjKGEsYixjLGQpICgoKF9fdTMyKShhKSZsdDsmbHQ7MCl8KChfX3UzMikoYikmbHQ7Jmx0OzgpfCgoX191MzIpKGMpJmx0OyZsdDsxNil8KChfX3UzMikoZCkmbHQ7Jmx0OzI0KSkKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPjxwYXJhPlNldmVyYWwgaW1hZ2UgZm9ybWF0cyBhcmUgYWxyZWFkeQorZGVmaW5lZCBieSB0aGlzIHNwZWNpZmljYXRpb24gaW4gPHhyZWYgbGlua2VuZD0icGl4Zm10IiAvPi4gTm90ZSB0aGVzZQorY29kZXMgYXJlIG5vdCB0aGUgc2FtZSBhcyB0aG9zZSB1c2VkIGluIHRoZSBXaW5kb3dzIHdvcmxkLjwvcGFyYT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD5bNF08L2VudHJ5PgorCSAgICA8ZW50cnk+UmVzZXJ2ZWQgZm9yIGZ1dHVyZSBleHRlbnNpb25zLiBEcml2ZXJzIG11c3Qgc2V0Cit0aGUgYXJyYXkgdG8gemVyby48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9ImZtdGRlc2MtZmxhZ3MiPgorICAgICAgPHRpdGxlPkltYWdlIEZvcm1hdCBEZXNjcmlwdGlvbiBGbGFnczwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1kZWY7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9GTVRfRkxBR19DT01QUkVTU0VEPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAxPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoaXMgaXMgYSBjb21wcmVzc2VkIGZvcm1hdC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRk1UX0ZMQUdfRU1VTEFURUQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDI8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBmb3JtYXQgaXMgbm90IG5hdGl2ZSB0byB0aGUgZGV2aWNlIGJ1dCBlbXVsYXRlZAordGhyb3VnaCBzb2Z0d2FyZSAodXN1YWxseSBsaWJ2NGwyKSwgd2hlcmUgcG9zc2libGUgdHJ5IHRvIHVzZSBhIG5hdGl2ZSBmb3JtYXQKK2luc3RlYWQgZm9yIGJldHRlciBwZXJmb3JtYW5jZS48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgJnY0bDItZm10ZGVzYzsgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPgoraXMgbm90IHN1cHBvcnRlZCBvciB0aGUgPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4gaXMgb3V0IG9mCitib3VuZHMuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1lbnVtLWZyYW1laW50ZXJ2YWxzLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWVudW0tZnJhbWVpbnRlcnZhbHMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjODM5YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1lbnVtLWZyYW1laW50ZXJ2YWxzLnhtbApAQCAtMCwwICsxLDI2MCBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2MtZW51bS1mcmFtZWludGVydmFscyI+CisKKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgVklESU9DX0VOVU1fRlJBTUVJTlRFUlZBTFM8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPlZJRElPQ19FTlVNX0ZSQU1FSU5URVJWQUxTPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPkVudW1lcmF0ZSBmcmFtZSBpbnRlcnZhbHM8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c3RydWN0IHY0bDJfZnJtaXZhbGVudW0gKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19FTlVNX0ZSQU1FSU5URVJWQUxTPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlBvaW50ZXIgdG8gYSAmdjRsMi1mcm1pdmFsZW51bTsgc3RydWN0dXJlIHRoYXQKK2NvbnRhaW5zIGEgcGl4ZWwgZm9ybWF0IGFuZCBzaXplIGFuZCByZWNlaXZlcyBhIGZyYW1lIGludGVydmFsLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5UaGlzIGlvY3RsIGFsbG93cyBhcHBsaWNhdGlvbnMgdG8gZW51bWVyYXRlIGFsbCBmcmFtZQoraW50ZXJ2YWxzIHRoYXQgdGhlIGRldmljZSBzdXBwb3J0cyBmb3IgdGhlIGdpdmVuIHBpeGVsIGZvcm1hdCBhbmQKK2ZyYW1lIHNpemUuPC9wYXJhPgorICAgIDxwYXJhPlRoZSBzdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0cyBhbmQgZnJhbWUgc2l6ZXMgY2FuIGJlIG9idGFpbmVkCitieSB1c2luZyB0aGUgJlZJRElPQy1FTlVNLUZNVDsgYW5kICZWSURJT0MtRU5VTS1GUkFNRVNJWkVTOworZnVuY3Rpb25zLjwvcGFyYT4KKyAgICA8cGFyYT5UaGUgcmV0dXJuIHZhbHVlIGFuZCB0aGUgY29udGVudCBvZiB0aGUKKzxzdHJ1Y3RmaWVsZD52NGwyX2ZybWl2YWxlbnVtLnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZCBkZXBlbmQgb24gdGhlCit0eXBlIG9mIGZyYW1lIGludGVydmFscyB0aGUgZGV2aWNlIHN1cHBvcnRzLiBIZXJlIGFyZSB0aGUgc2VtYW50aWNzIG9mCit0aGUgZnVuY3Rpb24gZm9yIHRoZSBkaWZmZXJlbnQgY2FzZXM6PC9wYXJhPgorICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICA8bGlzdGl0ZW0+CisJPHBhcmE+PGVtcGhhc2lzIHJvbGU9ImJvbGQiPkRpc2NyZXRlOjwvZW1waGFzaXM+IFRoZSBmdW5jdGlvbgorcmV0dXJucyBzdWNjZXNzIGlmIHRoZSBnaXZlbiBpbmRleCB2YWx1ZSAoemVyby1iYXNlZCkgaXMgdmFsaWQuIFRoZQorYXBwbGljYXRpb24gc2hvdWxkIGluY3JlYXNlIHRoZSBpbmRleCBieSBvbmUgZm9yIGVhY2ggY2FsbCB1bnRpbAorPGNvbnN0YW50PkVJTlZBTDwvY29uc3RhbnQ+IGlzIHJldHVybmVkLiBUaGUgYHY0bDJfZnJtaXZhbGVudW0udHlwZWAKK2ZpZWxkIGlzIHNldCB0byBgVjRMMl9GUk1JVkFMX1RZUEVfRElTQ1JFVEVgIGJ5IHRoZSBkcml2ZXIuIE9mIHRoZQordW5pb24gb25seSB0aGUgYGRpc2NyZXRlYCBtZW1iZXIgaXMgdmFsaWQuPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT4KKwk8cGFyYT48ZW1waGFzaXMgcm9sZT0iYm9sZCI+U3RlcC13aXNlOjwvZW1waGFzaXM+IFRoZSBmdW5jdGlvbgorcmV0dXJucyBzdWNjZXNzIGlmIHRoZSBnaXZlbiBpbmRleCB2YWx1ZSBpcyB6ZXJvIGFuZAorPGNvbnN0YW50PkVJTlZBTDwvY29uc3RhbnQ+IGZvciBhbnkgb3RoZXIgaW5kZXggdmFsdWUuIFRoZQorPHN0cnVjdGZpZWxkPnY0bDJfZnJtaXZhbGVudW0udHlwZTwvc3RydWN0ZmllbGQ+IGZpZWxkIGlzIHNldCB0bworPGNvbnN0YW50PlY0TDJfRlJNSVZBTF9UWVBFX1NURVBXSVNFPC9jb25zdGFudD4gYnkgdGhlIGRyaXZlci4gT2YgdGhlCit1bmlvbiBvbmx5IHRoZSA8c3RydWN0ZmllbGQ+c3RlcHdpc2U8L3N0cnVjdGZpZWxkPiBtZW1iZXIgaXMKK3ZhbGlkLjwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+CisJPHBhcmE+PGVtcGhhc2lzIHJvbGU9ImJvbGQiPkNvbnRpbnVvdXM6PC9lbXBoYXNpcz4gVGhpcyBpcyBhCitzcGVjaWFsIGNhc2Ugb2YgdGhlIHN0ZXAtd2lzZSB0eXBlIGFib3ZlLiBUaGUgZnVuY3Rpb24gcmV0dXJucyBzdWNjZXNzCitpZiB0aGUgZ2l2ZW4gaW5kZXggdmFsdWUgaXMgemVybyBhbmQgPGNvbnN0YW50PkVJTlZBTDwvY29uc3RhbnQ+IGZvcgorYW55IG90aGVyIGluZGV4IHZhbHVlLiBUaGUKKzxzdHJ1Y3RmaWVsZD52NGwyX2ZybWl2YWxlbnVtLnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZCBpcyBzZXQgdG8KKzxjb25zdGFudD5WNEwyX0ZSTUlWQUxfVFlQRV9DT05USU5VT1VTPC9jb25zdGFudD4gYnkgdGhlIGRyaXZlci4gT2YKK3RoZSB1bmlvbiBvbmx5IHRoZSA8c3RydWN0ZmllbGQ+c3RlcHdpc2U8L3N0cnVjdGZpZWxkPiBtZW1iZXIgaXMgdmFsaWQKK2FuZCB0aGUgPHN0cnVjdGZpZWxkPnN0ZXA8L3N0cnVjdGZpZWxkPiB2YWx1ZSBpcyBzZXQgdG8gMS48L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgIDwvaXRlbWl6ZWRsaXN0PgorCisgICAgPHBhcmE+V2hlbiB0aGUgYXBwbGljYXRpb24gY2FsbHMgdGhlIGZ1bmN0aW9uIHdpdGggaW5kZXggemVybywgaXQKK211c3QgY2hlY2sgdGhlIDxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gZmllbGQgdG8gZGV0ZXJtaW5lIHRoZQordHlwZSBvZiBmcmFtZSBpbnRlcnZhbCBlbnVtZXJhdGlvbiB0aGUgZGV2aWNlIHN1cHBvcnRzLiBPbmx5IGZvciB0aGUKKzxjb25zdGFudD5WNEwyX0ZSTUlWQUxfVFlQRV9ESVNDUkVURTwvY29uc3RhbnQ+IHR5cGUgZG9lcyBpdCBtYWtlCitzZW5zZSB0byBpbmNyZWFzZSB0aGUgaW5kZXggdmFsdWUgdG8gcmVjZWl2ZSBtb3JlIGZyYW1lCitpbnRlcnZhbHMuPC9wYXJhPgorICAgIDxwYXJhPk5vdGUgdGhhdCB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIGZyYW1lIGludGVydmFscyBhcmUKK3JldHVybmVkIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcuIEluIHBhcnRpY3VsYXIgZG9lcyBpdCBub3Qgc2F5Cithbnl0aGluZyBhYm91dCBwb3RlbnRpYWwgZGVmYXVsdCBmcmFtZSBpbnRlcnZhbHMuPC9wYXJhPgorICAgIDxwYXJhPkFwcGxpY2F0aW9ucyBjYW4gYXNzdW1lIHRoYXQgdGhlIGVudW1lcmF0aW9uIGRhdGEgZG9lcyBub3QKK2NoYW5nZSB3aXRob3V0IGFueSBpbnRlcmFjdGlvbiBmcm9tIHRoZSBhcHBsaWNhdGlvbiBpdHNlbGYuIFRoaXMgbWVhbnMKK3RoYXQgdGhlIGVudW1lcmF0aW9uIGRhdGEgaXMgY29uc2lzdGVudCBpZiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3QKK3BlcmZvcm0gYW55IG90aGVyIGlvY3RsIGNhbGxzIHdoaWxlIGl0IHJ1bnMgdGhlIGZyYW1lIGludGVydmFsCitlbnVtZXJhdGlvbi48L3BhcmE+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Ob3RlczwvdGl0bGU+CisKKyAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgPGxpc3RpdGVtPgorCTxwYXJhPjxlbXBoYXNpcyByb2xlPSJib2xkIj5GcmFtZSBpbnRlcnZhbHMgYW5kIGZyYW1lCityYXRlczo8L2VtcGhhc2lzPiBUaGUgVjRMMiBBUEkgdXNlcyBmcmFtZSBpbnRlcnZhbHMgaW5zdGVhZCBvZiBmcmFtZQorcmF0ZXMuIEdpdmVuIHRoZSBmcmFtZSBpbnRlcnZhbCB0aGUgZnJhbWUgcmF0ZSBjYW4gYmUgY29tcHV0ZWQgYXMKK2ZvbGxvd3M6PHNjcmVlbj5mcmFtZV9yYXRlID0gMSAvIGZyYW1lX2ludGVydmFsPC9zY3JlZW4+PC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICA8L2l0ZW1pemVkbGlzdD4KKworICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+U3RydWN0czwvdGl0bGU+CisKKyAgICA8cGFyYT5JbiB0aGUgc3RydWN0cyBiZWxvdywgPGVtcGhhc2lzPklOPC9lbXBoYXNpcz4gZGVub3RlcyBhCit2YWx1ZSB0aGF0IGhhcyB0byBiZSBmaWxsZWQgaW4gYnkgdGhlIGFwcGxpY2F0aW9uLAorPGVtcGhhc2lzPk9VVDwvZW1waGFzaXM+IGRlbm90ZXMgdmFsdWVzIHRoYXQgdGhlIGRyaXZlciBmaWxscyBpbi4gVGhlCithcHBsaWNhdGlvbiBzaG91bGQgemVybyBvdXQgYWxsIG1lbWJlcnMgZXhjZXB0IGZvciB0aGUKKzxlbXBoYXNpcz5JTjwvZW1waGFzaXM+IGZpZWxkcy48L3BhcmE+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItZnJtaXZhbC1zdGVwd2lzZSI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfZnJtaXZhbF9zdGVwd2lzZTwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3Mtc3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+JnY0bDItZnJhY3Q7PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5taW48L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5NaW5pbXVtIGZyYW1lIGludGVydmFsIFtzXS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+JnY0bDItZnJhY3Q7PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5tYXg8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5NYXhpbXVtIGZyYW1lIGludGVydmFsIFtzXS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+JnY0bDItZnJhY3Q7PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5zdGVwPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+RnJhbWUgaW50ZXJ2YWwgc3RlcCBzaXplIFtzXS48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItZnJtaXZhbGVudW0iPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2ZybWl2YWxlbnVtPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjQiPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMxIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMyIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMzIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImM0IiAvPgorCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PklOOiBJbmRleCBvZiB0aGUgZ2l2ZW4gZnJhbWUgaW50ZXJ2YWwgaW4gdGhlCitlbnVtZXJhdGlvbi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnBpeGVsX2Zvcm1hdDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5JTjogUGl4ZWwgZm9ybWF0IGZvciB3aGljaCB0aGUgZnJhbWUgaW50ZXJ2YWxzIGFyZQorZW51bWVyYXRlZC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPndpZHRoPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PklOOiBGcmFtZSB3aWR0aCBmb3Igd2hpY2ggdGhlIGZyYW1lIGludGVydmFscyBhcmUKK2VudW1lcmF0ZWQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5oZWlnaHQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+SU46IEZyYW1lIGhlaWdodCBmb3Igd2hpY2ggdGhlIGZyYW1lIGludGVydmFscyBhcmUKK2VudW1lcmF0ZWQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk9VVDogRnJhbWUgaW50ZXJ2YWwgdHlwZSB0aGUgZGV2aWNlIHN1cHBvcnRzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT51bmlvbjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk9VVDogRnJhbWUgaW50ZXJ2YWwgd2l0aCB0aGUgZ2l2ZW4gaW5kZXguPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT4mdjRsMi1mcmFjdDs8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmRpc2NyZXRlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+RnJhbWUgaW50ZXJ2YWwgW3NdLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+JnY0bDItZnJtaXZhbC1zdGVwd2lzZTs8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnN0ZXB3aXNlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZFsyXTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5SZXNlcnZlZCBzcGFjZSBmb3IgZnV0dXJlIHVzZS4gTXVzdCBiZSB6ZXJvZWQgYnkgZHJpdmVycyBhbmQKKwkgICAgYXBwbGljYXRpb25zLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkVudW1zPC90aXRsZT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1mcm1pdmFsdHlwZXMiPgorICAgICAgPHRpdGxlPmVudW0gPHN0cnVjdG5hbWU+djRsMl9mcm1pdmFsdHlwZXM8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0ZSTUlWQUxfVFlQRV9ESVNDUkVURTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjE8L2VudHJ5PgorCSAgICA8ZW50cnk+RGlzY3JldGUgZnJhbWUgaW50ZXJ2YWwuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0ZSTUlWQUxfVFlQRV9DT05USU5VT1VTPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MjwvZW50cnk+CisJICAgIDxlbnRyeT5Db250aW51b3VzIGZyYW1lIGludGVydmFsLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9GUk1JVkFMX1RZUEVfU1RFUFdJU0U8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4zPC9lbnRyeT4KKwkgICAgPGVudHJ5PlN0ZXAtd2lzZSBkZWZpbmVkIGZyYW1lIGludGVydmFsLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKyAgPC9yZWZzZWN0MT4KKworPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWVudW0tZnJhbWVzaXplcy54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1lbnVtLWZyYW1lc2l6ZXMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllZDY4YWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1lbnVtLWZyYW1lc2l6ZXMueG1sCkBAIC0wLDAgKzEsMjY1IEBACis8cmVmZW50cnkgaWQ9InZpZGlvYy1lbnVtLWZyYW1lc2l6ZXMiPgorCisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19FTlVNX0ZSQU1FU0laRVM8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPlZJRElPQ19FTlVNX0ZSQU1FU0laRVM8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+RW51bWVyYXRlIGZyYW1lIHNpemVzPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCB2NGwyX2ZybXNpemVlbnVtICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfRU5VTV9GUkFNRVNJWkVTPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlBvaW50ZXIgdG8gYSAmdjRsMi1mcm1zaXplZW51bTsgdGhhdCBjb250YWlucyBhbiBpbmRleAorYW5kIHBpeGVsIGZvcm1hdCBhbmQgcmVjZWl2ZXMgYSBmcmFtZSB3aWR0aCBhbmQgaGVpZ2h0LjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5UaGlzIGlvY3RsIGFsbG93cyBhcHBsaWNhdGlvbnMgdG8gZW51bWVyYXRlIGFsbCBmcmFtZSBzaXplcworKCZpZTsgd2lkdGggYW5kIGhlaWdodCBpbiBwaXhlbHMpIHRoYXQgdGhlIGRldmljZSBzdXBwb3J0cyBmb3IgdGhlCitnaXZlbiBwaXhlbCBmb3JtYXQuPC9wYXJhPgorICAgIDxwYXJhPlRoZSBzdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0cyBjYW4gYmUgb2J0YWluZWQgYnkgdXNpbmcgdGhlCismVklESU9DLUVOVU0tRk1UOyBmdW5jdGlvbi48L3BhcmE+CisgICAgPHBhcmE+VGhlIHJldHVybiB2YWx1ZSBhbmQgdGhlIGNvbnRlbnQgb2YgdGhlCis8c3RydWN0ZmllbGQ+djRsMl9mcm1zaXplZW51bS50eXBlPC9zdHJ1Y3RmaWVsZD4gZmllbGQgZGVwZW5kIG9uIHRoZQordHlwZSBvZiBmcmFtZSBzaXplcyB0aGUgZGV2aWNlIHN1cHBvcnRzLiBIZXJlIGFyZSB0aGUgc2VtYW50aWNzIG9mIHRoZQorZnVuY3Rpb24gZm9yIHRoZSBkaWZmZXJlbnQgY2FzZXM6PC9wYXJhPgorCisgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgIDxsaXN0aXRlbT4KKwk8cGFyYT48ZW1waGFzaXMgcm9sZT0iYm9sZCI+RGlzY3JldGU6PC9lbXBoYXNpcz4gVGhlIGZ1bmN0aW9uCityZXR1cm5zIHN1Y2Nlc3MgaWYgdGhlIGdpdmVuIGluZGV4IHZhbHVlICh6ZXJvLWJhc2VkKSBpcyB2YWxpZC4gVGhlCithcHBsaWNhdGlvbiBzaG91bGQgaW5jcmVhc2UgdGhlIGluZGV4IGJ5IG9uZSBmb3IgZWFjaCBjYWxsIHVudGlsCis8Y29uc3RhbnQ+RUlOVkFMPC9jb25zdGFudD4gaXMgcmV0dXJuZWQuIFRoZQorPHN0cnVjdGZpZWxkPnY0bDJfZnJtc2l6ZWVudW0udHlwZTwvc3RydWN0ZmllbGQ+IGZpZWxkIGlzIHNldCB0bworPGNvbnN0YW50PlY0TDJfRlJNU0laRV9UWVBFX0RJU0NSRVRFPC9jb25zdGFudD4gYnkgdGhlIGRyaXZlci4gT2YgdGhlCit1bmlvbiBvbmx5IHRoZSA8c3RydWN0ZmllbGQ+ZGlzY3JldGU8L3N0cnVjdGZpZWxkPiBtZW1iZXIgaXMKK3ZhbGlkLjwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+CisJPHBhcmE+PGVtcGhhc2lzIHJvbGU9ImJvbGQiPlN0ZXAtd2lzZTo8L2VtcGhhc2lzPiBUaGUgZnVuY3Rpb24KK3JldHVybnMgc3VjY2VzcyBpZiB0aGUgZ2l2ZW4gaW5kZXggdmFsdWUgaXMgemVybyBhbmQKKzxjb25zdGFudD5FSU5WQUw8L2NvbnN0YW50PiBmb3IgYW55IG90aGVyIGluZGV4IHZhbHVlLiBUaGUKKzxzdHJ1Y3RmaWVsZD52NGwyX2ZybXNpemVlbnVtLnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZCBpcyBzZXQgdG8KKzxjb25zdGFudD5WNEwyX0ZSTVNJWkVfVFlQRV9TVEVQV0lTRTwvY29uc3RhbnQ+IGJ5IHRoZSBkcml2ZXIuIE9mIHRoZQordW5pb24gb25seSB0aGUgPHN0cnVjdGZpZWxkPnN0ZXB3aXNlPC9zdHJ1Y3RmaWVsZD4gbWVtYmVyIGlzCit2YWxpZC48L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICAgPGxpc3RpdGVtPgorCTxwYXJhPjxlbXBoYXNpcyByb2xlPSJib2xkIj5Db250aW51b3VzOjwvZW1waGFzaXM+IFRoaXMgaXMgYQorc3BlY2lhbCBjYXNlIG9mIHRoZSBzdGVwLXdpc2UgdHlwZSBhYm92ZS4gVGhlIGZ1bmN0aW9uIHJldHVybnMgc3VjY2VzcworaWYgdGhlIGdpdmVuIGluZGV4IHZhbHVlIGlzIHplcm8gYW5kIDxjb25zdGFudD5FSU5WQUw8L2NvbnN0YW50PiBmb3IKK2FueSBvdGhlciBpbmRleCB2YWx1ZS4gVGhlCis8c3RydWN0ZmllbGQ+djRsMl9mcm1zaXplZW51bS50eXBlPC9zdHJ1Y3RmaWVsZD4gZmllbGQgaXMgc2V0IHRvCis8Y29uc3RhbnQ+VjRMMl9GUk1TSVpFX1RZUEVfQ09OVElOVU9VUzwvY29uc3RhbnQ+IGJ5IHRoZSBkcml2ZXIuIE9mCit0aGUgdW5pb24gb25seSB0aGUgPHN0cnVjdGZpZWxkPnN0ZXB3aXNlPC9zdHJ1Y3RmaWVsZD4gbWVtYmVyIGlzIHZhbGlkCithbmQgdGhlIDxzdHJ1Y3RmaWVsZD5zdGVwX3dpZHRoPC9zdHJ1Y3RmaWVsZD4gYW5kCis8c3RydWN0ZmllbGQ+c3RlcF9oZWlnaHQ8L3N0cnVjdGZpZWxkPiB2YWx1ZXMgYXJlIHNldCB0byAxLjwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgPC9pdGVtaXplZGxpc3Q+CisKKyAgICA8cGFyYT5XaGVuIHRoZSBhcHBsaWNhdGlvbiBjYWxscyB0aGUgZnVuY3Rpb24gd2l0aCBpbmRleCB6ZXJvLCBpdAorbXVzdCBjaGVjayB0aGUgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZCB0byBkZXRlcm1pbmUgdGhlCit0eXBlIG9mIGZyYW1lIHNpemUgZW51bWVyYXRpb24gdGhlIGRldmljZSBzdXBwb3J0cy4gT25seSBmb3IgdGhlCis8Y29uc3RhbnQ+VjRMMl9GUk1TSVpFX1RZUEVfRElTQ1JFVEU8L2NvbnN0YW50PiB0eXBlIGRvZXMgaXQgbWFrZQorc2Vuc2UgdG8gaW5jcmVhc2UgdGhlIGluZGV4IHZhbHVlIHRvIHJlY2VpdmUgbW9yZSBmcmFtZSBzaXplcy48L3BhcmE+CisgICAgPHBhcmE+Tm90ZSB0aGF0IHRoZSBvcmRlciBpbiB3aGljaCB0aGUgZnJhbWUgc2l6ZXMgYXJlIHJldHVybmVkCitoYXMgbm8gc3BlY2lhbCBtZWFuaW5nLiBJbiBwYXJ0aWN1bGFyIGRvZXMgaXQgbm90IHNheSBhbnl0aGluZyBhYm91dAorcG90ZW50aWFsIGRlZmF1bHQgZm9ybWF0IHNpemVzLjwvcGFyYT4KKyAgICA8cGFyYT5BcHBsaWNhdGlvbnMgY2FuIGFzc3VtZSB0aGF0IHRoZSBlbnVtZXJhdGlvbiBkYXRhIGRvZXMgbm90CitjaGFuZ2Ugd2l0aG91dCBhbnkgaW50ZXJhY3Rpb24gZnJvbSB0aGUgYXBwbGljYXRpb24gaXRzZWxmLiBUaGlzIG1lYW5zCit0aGF0IHRoZSBlbnVtZXJhdGlvbiBkYXRhIGlzIGNvbnNpc3RlbnQgaWYgdGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90CitwZXJmb3JtIGFueSBvdGhlciBpb2N0bCBjYWxscyB3aGlsZSBpdCBydW5zIHRoZSBmcmFtZSBzaXplCitlbnVtZXJhdGlvbi48L3BhcmE+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5TdHJ1Y3RzPC90aXRsZT4KKworICAgIDxwYXJhPkluIHRoZSBzdHJ1Y3RzIGJlbG93LCA8ZW1waGFzaXM+SU48L2VtcGhhc2lzPiBkZW5vdGVzIGEKK3ZhbHVlIHRoYXQgaGFzIHRvIGJlIGZpbGxlZCBpbiBieSB0aGUgYXBwbGljYXRpb24sCis8ZW1waGFzaXM+T1VUPC9lbXBoYXNpcz4gZGVub3RlcyB2YWx1ZXMgdGhhdCB0aGUgZHJpdmVyIGZpbGxzIGluLiBUaGUKK2FwcGxpY2F0aW9uIHNob3VsZCB6ZXJvIG91dCBhbGwgbWVtYmVycyBleGNlcHQgZm9yIHRoZQorPGVtcGhhc2lzPklOPC9lbXBoYXNpcz4gZmllbGRzLjwvcGFyYT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1mcm1zaXplLWRpc2NyZXRlIj4KKyAgICAgIDx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9mcm1zaXplX2Rpc2NyZXRlPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+d2lkdGg8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5XaWR0aCBvZiB0aGUgZnJhbWUgW3BpeGVsXS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmhlaWdodDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkhlaWdodCBvZiB0aGUgZnJhbWUgW3BpeGVsXS48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItZnJtc2l6ZS1zdGVwd2lzZSI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfZnJtc2l6ZV9zdGVwd2lzZTwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3Mtc3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm1pbl93aWR0aDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk1pbmltdW0gZnJhbWUgd2lkdGggW3BpeGVsXS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm1heF93aWR0aDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk1heGltdW0gZnJhbWUgd2lkdGggW3BpeGVsXS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnN0ZXBfd2lkdGg8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5GcmFtZSB3aWR0aCBzdGVwIHNpemUgW3BpeGVsXS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm1pbl9oZWlnaHQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5NaW5pbXVtIGZyYW1lIGhlaWdodCBbcGl4ZWxdLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+bWF4X2hlaWdodDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk1heGltdW0gZnJhbWUgaGVpZ2h0IFtwaXhlbF0uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5zdGVwX2hlaWdodDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkZyYW1lIGhlaWdodCBzdGVwIHNpemUgW3BpeGVsXS48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItZnJtc2l6ZWVudW0iPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2ZybXNpemVlbnVtPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjQiPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMxIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMyIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMzIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImM0IiAvPgorCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PklOOiBJbmRleCBvZiB0aGUgZ2l2ZW4gZnJhbWUgc2l6ZSBpbiB0aGUgZW51bWVyYXRpb24uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5waXhlbF9mb3JtYXQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+SU46IFBpeGVsIGZvcm1hdCBmb3Igd2hpY2ggdGhlIGZyYW1lIHNpemVzIGFyZSBlbnVtZXJhdGVkLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5PVVQ6IEZyYW1lIHNpemUgdHlwZSB0aGUgZGV2aWNlIHN1cHBvcnRzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT51bmlvbjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk9VVDogRnJhbWUgc2l6ZSB3aXRoIHRoZSBnaXZlbiBpbmRleC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PiZ2NGwyLWZybXNpemUtZGlzY3JldGU7PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5kaXNjcmV0ZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+JnY0bDItZnJtc2l6ZS1zdGVwd2lzZTs8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnN0ZXB3aXNlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZFsyXTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5SZXNlcnZlZCBzcGFjZSBmb3IgZnV0dXJlIHVzZS4gTXVzdCBiZSB6ZXJvZWQgYnkgZHJpdmVycyBhbmQKKwkgICAgYXBwbGljYXRpb25zLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkVudW1zPC90aXRsZT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1mcm1zaXpldHlwZXMiPgorICAgICAgPHRpdGxlPmVudW0gPHN0cnVjdG5hbWU+djRsMl9mcm1zaXpldHlwZXM8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0ZSTVNJWkVfVFlQRV9ESVNDUkVURTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjE8L2VudHJ5PgorCSAgICA8ZW50cnk+RGlzY3JldGUgZnJhbWUgc2l6ZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRlJNU0laRV9UWVBFX0NPTlRJTlVPVVM8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4yPC9lbnRyeT4KKwkgICAgPGVudHJ5PkNvbnRpbnVvdXMgZnJhbWUgc2l6ZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRlJNU0laRV9UWVBFX1NURVBXSVNFPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MzwvZW50cnk+CisJICAgIDxlbnRyeT5TdGVwLXdpc2UgZGVmaW5lZCBmcmFtZSBzaXplLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1lbnVtLWZyZXEtYmFuZHMueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZW51bS1mcmVxLWJhbmRzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZThlYTY1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZW51bS1mcmVxLWJhbmRzLnhtbApAQCAtMCwwICsxLDE4MSBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2MtZW51bS1mcmVxLWJhbmRzIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgVklESU9DX0VOVU1fRlJFUV9CQU5EUzwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX0VOVU1fRlJFUV9CQU5EUzwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5FbnVtZXJhdGUgc3VwcG9ydGVkIGZyZXF1ZW5jeSBiYW5kczwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zdHJ1Y3QgdjRsMl9mcmVxdWVuY3lfYmFuZAorKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19FTlVNX0ZSRVFfQkFORFM8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxub3RlPgorICAgICAgPHRpdGxlPkV4cGVyaW1lbnRhbDwvdGl0bGU+CisgICAgICA8cGFyYT5UaGlzIGlzIGFuIDxsaW5rIGxpbmtlbmQ9ImV4cGVyaW1lbnRhbCI+IGV4cGVyaW1lbnRhbCA8L2xpbms+CisgICAgICBpbnRlcmZhY2UgYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS48L3BhcmE+CisgICAgPC9ub3RlPgorCisgICAgPHBhcmE+RW51bWVyYXRlcyB0aGUgZnJlcXVlbmN5IGJhbmRzIHRoYXQgYSB0dW5lciBvciBtb2R1bGF0b3Igc3VwcG9ydHMuCitUbyBkbyB0aGlzIGFwcGxpY2F0aW9ucyBpbml0aWFsaXplIHRoZSA8c3RydWN0ZmllbGQ+dHVuZXI8L3N0cnVjdGZpZWxkPiwKKzxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gYW5kIDxzdHJ1Y3RmaWVsZD5pbmRleDwvc3RydWN0ZmllbGQ+IGZpZWxkcywKK2FuZCB6ZXJvIG91dCB0aGUgPHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD4gYXJyYXkgb2YgYSAmdjRsMi1mcmVxdWVuY3ktYmFuZDsgYW5kCitjYWxsIHRoZSA8Y29uc3RhbnQ+VklESU9DX0VOVU1fRlJFUV9CQU5EUzwvY29uc3RhbnQ+IGlvY3RsIHdpdGggYSBwb2ludGVyCit0byB0aGlzIHN0cnVjdHVyZS48L3BhcmE+CisKKyAgICA8cGFyYT5UaGlzIGlvY3RsIGlzIHN1cHBvcnRlZCBpZiB0aGUgPGNvbnN0YW50PlY0TDJfVFVORVJfQ0FQX0ZSRVFfQkFORFM8L2NvbnN0YW50PiBjYXBhYmlsaXR5CisgICAgb2YgdGhlIGNvcnJlc3BvbmRpbmcgdHVuZXIvbW9kdWxhdG9yIGlzIHNldC48L3BhcmE+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItZnJlcXVlbmN5LWJhbmQiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2ZyZXF1ZW5jeV9iYW5kPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dHVuZXI8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgdHVuZXIgb3IgbW9kdWxhdG9yIGluZGV4IG51bWJlci4gVGhpcyBpcyB0aGUKK3NhbWUgdmFsdWUgYXMgaW4gdGhlICZ2NGwyLWlucHV0OyA8c3RydWN0ZmllbGQ+dHVuZXI8L3N0cnVjdGZpZWxkPgorZmllbGQgYW5kIHRoZSAmdjRsMi10dW5lcjsgPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4gZmllbGQsIG9yCit0aGUgJnY0bDItb3V0cHV0OyA8c3RydWN0ZmllbGQ+bW9kdWxhdG9yPC9zdHJ1Y3RmaWVsZD4gZmllbGQgYW5kIHRoZQorJnY0bDItbW9kdWxhdG9yOyA8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPiBmaWVsZC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgdHVuZXIgdHlwZS4gVGhpcyBpcyB0aGUgc2FtZSB2YWx1ZSBhcyBpbiB0aGUKKyZ2NGwyLXR1bmVyOyA8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IGZpZWxkLiBUaGUgdHlwZSBtdXN0IGJlIHNldAordG8gPGNvbnN0YW50PlY0TDJfVFVORVJfUkFESU88L2NvbnN0YW50PiBmb3IgPGZpbGVuYW1lPi9kZXYvcmFkaW9YPC9maWxlbmFtZT4KK2RldmljZSBub2RlcywgYW5kIHRvIDxjb25zdGFudD5WNEwyX1RVTkVSX0FOQUxPR19UVjwvY29uc3RhbnQ+Citmb3IgYWxsIG90aGVycy4gU2V0IHRoaXMgZmllbGQgdG8gPGNvbnN0YW50PlY0TDJfVFVORVJfUkFESU88L2NvbnN0YW50PiBmb3IKK21vZHVsYXRvcnMgKGN1cnJlbnRseSBvbmx5IHJhZGlvIG1vZHVsYXRvcnMgYXJlIHN1cHBvcnRlZCkuCitTZWUgPHhyZWYgbGlua2VuZD0idjRsMi10dW5lci10eXBlIiAvPjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5JZGVudGlmaWVzIHRoZSBmcmVxdWVuY3kgYmFuZCwgc2V0IGJ5IHRoZSBhcHBsaWNhdGlvbi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmNhcGFiaWxpdHk8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaHNwYW4iPlRoZSB0dW5lci9tb2R1bGF0b3IgY2FwYWJpbGl0eSBmbGFncyBmb3IKK3RoaXMgZnJlcXVlbmN5IGJhbmQsIHNlZSA8eHJlZiBsaW5rZW5kPSJ0dW5lci1jYXBhYmlsaXR5IiAvPi4gVGhlIDxjb25zdGFudD5WNEwyX1RVTkVSX0NBUF9MT1c8L2NvbnN0YW50Pgorb3IgPGNvbnN0YW50PlY0TDJfVFVORVJfQ0FQXzFIWjwvY29uc3RhbnQ+IGNhcGFiaWxpdHkgbXVzdCBiZSB0aGUgc2FtZSBmb3IgYWxsIGZyZXF1ZW5jeSBiYW5kcyBvZiB0aGUgc2VsZWN0ZWQgdHVuZXIvbW9kdWxhdG9yLgorU28gZWl0aGVyIGFsbCBiYW5kcyBoYXZlIHRoYXQgY2FwYWJpbGl0eSBzZXQsIG9yIG5vbmUgb2YgdGhlbSBoYXZlIHRoYXQgY2FwYWJpbGl0eS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJhbmdlbG93PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImhzcGFuIj5UaGUgbG93ZXN0IHR1bmFibGUgZnJlcXVlbmN5IGluCit1bml0cyBvZiA2Mi41IGtIeiwgb3IgaWYgdGhlIDxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXR5PC9zdHJ1Y3RmaWVsZD4KK2ZsYWcgPGNvbnN0YW50PlY0TDJfVFVORVJfQ0FQX0xPVzwvY29uc3RhbnQ+IGlzIHNldCwgaW4gdW5pdHMgb2YgNjIuNQorSHosIGZvciB0aGlzIGZyZXF1ZW5jeSBiYW5kLiBBIDEgSHogdW5pdCBpcyB1c2VkIHdoZW4gdGhlIDxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXR5PC9zdHJ1Y3RmaWVsZD4gZmxhZworPGNvbnN0YW50PlY0TDJfVFVORVJfQ0FQXzFIWjwvY29uc3RhbnQ+IGlzIHNldC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJhbmdlaGlnaDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJoc3BhbiI+VGhlIGhpZ2hlc3QgdHVuYWJsZSBmcmVxdWVuY3kgaW4KK3VuaXRzIG9mIDYyLjUga0h6LCBvciBpZiB0aGUgPHN0cnVjdGZpZWxkPmNhcGFiaWxpdHk8L3N0cnVjdGZpZWxkPgorZmxhZyA8Y29uc3RhbnQ+VjRMMl9UVU5FUl9DQVBfTE9XPC9jb25zdGFudD4gaXMgc2V0LCBpbiB1bml0cyBvZiA2Mi41CitIeiwgZm9yIHRoaXMgZnJlcXVlbmN5IGJhbmQuIEEgMSBIeiB1bml0IGlzIHVzZWQgd2hlbiB0aGUgPHN0cnVjdGZpZWxkPmNhcGFiaWxpdHk8L3N0cnVjdGZpZWxkPiBmbGFnCis8Y29uc3RhbnQ+VjRMMl9UVU5FUl9DQVBfMUhaPC9jb25zdGFudD4gaXMgc2V0LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+bW9kdWxhdGlvbjwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJoc3BhbiI+VGhlIHN1cHBvcnRlZCBtb2R1bGF0aW9uIHN5c3RlbXMgb2YgdGhpcyBmcmVxdWVuY3kgYmFuZC4KKwkgICAgU2VlIDx4cmVmIGxpbmtlbmQ9ImJhbmQtbW9kdWxhdGlvbiIgLz4uIE5vdGUgdGhhdCBjdXJyZW50bHkgb25seSBvbmUKKwkgICAgbW9kdWxhdGlvbiBzeXN0ZW0gcGVyIGZyZXF1ZW5jeSBiYW5kIGlzIHN1cHBvcnRlZC4gTW9yZSB3b3JrIHdpbGwgbmVlZCB0bworCSAgICBiZSBkb25lIGlmIG11bHRpcGxlIG1vZHVsYXRpb24gc3lzdGVtcyBhcmUgcG9zc2libGUuIENvbnRhY3QgdGhlCisJICAgIGxpbnV4LW1lZGlhIG1haWxpbmcgbGlzdCAoJnY0bC1tbDspIGlmIHlvdSBuZWVkIHRoYXQgZnVuY3Rpb25hbGl0eS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD5bOV08L2VudHJ5PgorCSAgICA8ZW50cnk+UmVzZXJ2ZWQgZm9yIGZ1dHVyZSBleHRlbnNpb25zLiBBcHBsaWNhdGlvbnMgYW5kIGRyaXZlcnMKKwkgICAgbXVzdCBzZXQgdGhlIGFycmF5IHRvIHplcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJiYW5kLW1vZHVsYXRpb24iPgorICAgICAgPHRpdGxlPkJhbmQgTW9kdWxhdGlvbiBTeXN0ZW1zPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0JBTkRfTU9EVUxBVElPTl9WU0I8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAyPC9lbnRyeT4KKwkgICAgPGVudHJ5PlZlc3RpZ2lhbCBTaWRlYmFuZCBtb2R1bGF0aW9uLCB1c2VkIGZvciBhbmFsb2cgVFYuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0JBTkRfTU9EVUxBVElPTl9GTTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDQ8L2VudHJ5PgorCSAgICA8ZW50cnk+RnJlcXVlbmN5IE1vZHVsYXRpb24sIGNvbW1vbmx5IHVzZWQgZm9yIGFuYWxvZyByYWRpby48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQkFORF9NT0RVTEFUSU9OX0FNPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwODwvZW50cnk+CisJICAgIDxlbnRyeT5BbXBsaXR1ZGUgTW9kdWxhdGlvbiwgY29tbW9ubHkgdXNlZCBmb3IgYW5hbG9nIHJhZGlvLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSA8c3RydWN0ZmllbGQ+dHVuZXI8L3N0cnVjdGZpZWxkPiBvciA8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPgoraXMgb3V0IG9mIGJvdW5kcyBvciB0aGUgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZCBpcyB3cm9uZy48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWVudW1hdWRpby54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1lbnVtYXVkaW8ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhODE2YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1lbnVtYXVkaW8ueG1sCkBAIC0wLDAgKzEsNzYgQEAKKzxyZWZlbnRyeSBpZD0idmlkaW9jLWVudW1hdWRpbyI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19FTlVNQVVESU88L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPlZJRElPQ19FTlVNQVVESU88L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+RW51bWVyYXRlIGF1ZGlvIGlucHV0czwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zdHJ1Y3QgdjRsMl9hdWRpbyAqPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPiZmZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VklESU9DX0VOVU1BVURJTzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgPHBhcmE+VG8gcXVlcnkgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gYXVkaW8gaW5wdXQgYXBwbGljYXRpb25zCitpbml0aWFsaXplIHRoZSA8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPiBmaWVsZCBhbmQgemVybyBvdXQgdGhlCis8c3RydWN0ZmllbGQ+cmVzZXJ2ZWQ8L3N0cnVjdGZpZWxkPiBhcnJheSBvZiBhICZ2NGwyLWF1ZGlvOworYW5kIGNhbGwgdGhlIDxjb25zdGFudD5WSURJT0NfRU5VTUFVRElPPC9jb25zdGFudD4gaW9jdGwgd2l0aCBhIHBvaW50ZXIKK3RvIHRoaXMgc3RydWN0dXJlLiBEcml2ZXJzIGZpbGwgdGhlIHJlc3Qgb2YgdGhlIHN0cnVjdHVyZSBvciByZXR1cm4gYW4KKyZFSU5WQUw7IHdoZW4gdGhlIGluZGV4IGlzIG91dCBvZiBib3VuZHMuIFRvIGVudW1lcmF0ZSBhbGwgYXVkaW8KK2lucHV0cyBhcHBsaWNhdGlvbnMgc2hhbGwgYmVnaW4gYXQgaW5kZXggemVybywgaW5jcmVtZW50aW5nIGJ5IG9uZQordW50aWwgdGhlIGRyaXZlciByZXR1cm5zIDxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+LjwvcGFyYT4KKworICAgIDxwYXJhPlNlZSA8eHJlZiBsaW5rZW5kPSJ2aWRpb2MtZy1hdWRpbyIgLz4gZm9yIGEgZGVzY3JpcHRpb24gb2YKKyZ2NGwyLWF1ZGlvOy48L3BhcmE+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgbnVtYmVyIG9mIHRoZSBhdWRpbyBpbnB1dCBpcyBvdXQgb2YgYm91bmRzLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZW51bWF1ZGlvb3V0LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWVudW1hdWRpb291dC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU4N2NlZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWVudW1hdWRpb291dC54bWwKQEAgLTAsMCArMSw3OSBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2MtZW51bWF1ZGlvb3V0Ij4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgVklESU9DX0VOVU1BVURPVVQ8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPlZJRElPQ19FTlVNQVVET1VUPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPkVudW1lcmF0ZSBhdWRpbyBvdXRwdXRzPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCB2NGwyX2F1ZGlvb3V0ICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfRU5VTUFVRE9VVDwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgPHBhcmE+VG8gcXVlcnkgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gYXVkaW8gb3V0cHV0IGFwcGxpY2F0aW9ucworaW5pdGlhbGl6ZSB0aGUgPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4gZmllbGQgYW5kIHplcm8gb3V0IHRoZQorPHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD4gYXJyYXkgb2YgYSAmdjRsMi1hdWRpb291dDsgYW5kCitjYWxsIHRoZSA8Y29uc3RhbnQ+VklESU9DX0dfQVVET1VUPC9jb25zdGFudD4gaW9jdGwgd2l0aCBhIHBvaW50ZXIKK3RvIHRoaXMgc3RydWN0dXJlLiBEcml2ZXJzIGZpbGwgdGhlIHJlc3Qgb2YgdGhlIHN0cnVjdHVyZSBvciByZXR1cm4gYW4KKyZFSU5WQUw7IHdoZW4gdGhlIGluZGV4IGlzIG91dCBvZiBib3VuZHMuIFRvIGVudW1lcmF0ZSBhbGwgYXVkaW8KK291dHB1dHMgYXBwbGljYXRpb25zIHNoYWxsIGJlZ2luIGF0IGluZGV4IHplcm8sIGluY3JlbWVudGluZyBieSBvbmUKK3VudGlsIHRoZSBkcml2ZXIgcmV0dXJucyA8ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPi48L3BhcmE+CisKKyAgICA8cGFyYT5Ob3RlIGNvbm5lY3RvcnMgb24gYSBUViBjYXJkIHRvIGxvb3AgYmFjayB0aGUgcmVjZWl2ZWQgYXVkaW8KK3NpZ25hbCB0byBhIHNvdW5kIGNhcmQgYXJlIG5vdCBhdWRpbyBvdXRwdXRzIGluIHRoaXMgc2Vuc2UuPC9wYXJhPgorCisgICAgPHBhcmE+U2VlIDx4cmVmIGxpbmtlbmQ9InZpZGlvYy1nLWF1ZGlvb3V0IiAvPiBmb3IgYSBkZXNjcmlwdGlvbiBvZgorJnY0bDItYXVkaW9vdXQ7LjwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSBudW1iZXIgb2YgdGhlIGF1ZGlvIG91dHB1dCBpcyBvdXQgb2YgYm91bmRzLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZW51bWlucHV0LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWVudW1pbnB1dC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjAzZmVjZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWVudW1pbnB1dC54bWwKQEAgLTAsMCArMSwzMTYgQEAKKzxyZWZlbnRyeSBpZD0idmlkaW9jLWVudW1pbnB1dCI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19FTlVNSU5QVVQ8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPlZJRElPQ19FTlVNSU5QVVQ8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+RW51bWVyYXRlIHZpZGVvIGlucHV0czwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zdHJ1Y3QgdjRsMl9pbnB1dAorKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19FTlVNSU5QVVQ8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPlRvIHF1ZXJ5IHRoZSBhdHRyaWJ1dGVzIG9mIGEgdmlkZW8gaW5wdXQgYXBwbGljYXRpb25zCitpbml0aWFsaXplIHRoZSA8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiAmdjRsMi1pbnB1dDsKK2FuZCBjYWxsIHRoZSA8Y29uc3RhbnQ+VklESU9DX0VOVU1JTlBVVDwvY29uc3RhbnQ+IGlvY3RsIHdpdGggYQorcG9pbnRlciB0byB0aGlzIHN0cnVjdHVyZS4gRHJpdmVycyBmaWxsIHRoZSByZXN0IG9mIHRoZSBzdHJ1Y3R1cmUgb3IKK3JldHVybiBhbiAmRUlOVkFMOyB3aGVuIHRoZSBpbmRleCBpcyBvdXQgb2YgYm91bmRzLiBUbyBlbnVtZXJhdGUgYWxsCitpbnB1dHMgYXBwbGljYXRpb25zIHNoYWxsIGJlZ2luIGF0IGluZGV4IHplcm8sIGluY3JlbWVudGluZyBieSBvbmUKK3VudGlsIHRoZSBkcml2ZXIgcmV0dXJucyA8ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPi48L3BhcmE+CisKKyAgICA8dGFibGUgZnJhbWU9Im5vbmUiIHBnd2lkZT0iMSIgaWQ9InY0bDItaW5wdXQiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2lucHV0PC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5JZGVudGlmaWVzIHRoZSBpbnB1dCwgc2V0IGJ5IHRoZQorYXBwbGljYXRpb24uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTg8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm5hbWU8L3N0cnVjdGZpZWxkPlszMl08L2VudHJ5PgorCSAgICA8ZW50cnk+TmFtZSBvZiB0aGUgdmlkZW8gaW5wdXQsIGEgTlVMLXRlcm1pbmF0ZWQgQVNDSUkKK3N0cmluZywgZm9yIGV4YW1wbGU6ICJWaW4gKENvbXBvc2l0ZSAyKSIuIFRoaXMgaW5mb3JtYXRpb24gaXMgaW50ZW5kZWQKK2ZvciB0aGUgdXNlciwgcHJlZmVyYWJseSB0aGUgY29ubmVjdG9yIGxhYmVsIG9uIHRoZSBkZXZpY2UgaXRzZWxmLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlR5cGUgb2YgdGhlIGlucHV0LCBzZWUgPHhyZWYKKwkJbGlua2VuZD0iaW5wdXQtdHlwZSIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5hdWRpb3NldDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxwYXJhPkRyaXZlcnMgY2FuIGVudW1lcmF0ZSB1cCB0byAzMiB2aWRlbyBhbmQKK2F1ZGlvIGlucHV0cy4gVGhpcyBmaWVsZCBzaG93cyB3aGljaCBhdWRpbyBpbnB1dHMgd2VyZSBzZWxlY3RhYmxlIGFzCithdWRpbyBzb3VyY2UgaWYgdGhpcyB3YXMgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB2aWRlbyBpbnB1dC4gSXQgaXMgYQorYml0IG1hc2suIFRoZSBMU0IgY29ycmVzcG9uZHMgdG8gYXVkaW8gaW5wdXQgMCwgdGhlIE1TQiB0byBpbnB1dCAzMS4KK0FueSBudW1iZXIgb2YgYml0cyBjYW4gYmUgc2V0LCBvciBub25lLjwvcGFyYT48cGFyYT5XaGVuIHRoZSBkcml2ZXIKK2RvZXMgbm90IGVudW1lcmF0ZSBhdWRpbyBpbnB1dHMgbm8gYml0cyBtdXN0IGJlIHNldC4gQXBwbGljYXRpb25zCitzaGFsbCBub3QgaW50ZXJwcmV0IHRoaXMgYXMgbGFjayBvZiBhdWRpbyBzdXBwb3J0LiBTb21lIGRyaXZlcnMKK2F1dG9tYXRpY2FsbHkgc2VsZWN0IGF1ZGlvIHNvdXJjZXMgYW5kIGRvIG5vdCBlbnVtZXJhdGUgdGhlbSBzaW5jZQordGhlcmUgaXMgbm8gY2hvaWNlIGFueXdheS48L3BhcmE+PHBhcmE+Rm9yIGRldGFpbHMgb24gYXVkaW8gaW5wdXRzIGFuZAoraG93IHRvIHNlbGVjdCB0aGUgY3VycmVudCBpbnB1dCBzZWUgPHhyZWYKKwkJICBsaW5rZW5kPSJhdWRpbyIgLz4uPC9wYXJhPjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dHVuZXI8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5DYXB0dXJlIGRldmljZXMgY2FuIGhhdmUgemVybyBvciBtb3JlIHR1bmVycyAoUkYKK2RlbW9kdWxhdG9ycykuIFdoZW4gdGhlIDxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gaXMgc2V0IHRvCis8Y29uc3RhbnQ+VjRMMl9JTlBVVF9UWVBFX1RVTkVSPC9jb25zdGFudD4gdGhpcyBpcyBhbiBSRiBjb25uZWN0b3IgYW5kCit0aGlzIGZpZWxkIGlkZW50aWZpZXMgdGhlIHR1bmVyLiBJdCBjb3JyZXNwb25kcyB0bworJnY0bDItdHVuZXI7IGZpZWxkIDxzdHJ1Y3RmaWVsZD5pbmRleDwvc3RydWN0ZmllbGQ+LiBGb3IgZGV0YWlscyBvbgordHVuZXJzIHNlZSA8eHJlZiBsaW5rZW5kPSJ0dW5lciIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PiZ2NGwyLXN0ZC1pZDs8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnN0ZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkV2ZXJ5IHZpZGVvIGlucHV0IHN1cHBvcnRzIG9uZSBvciBtb3JlIGRpZmZlcmVudAordmlkZW8gc3RhbmRhcmRzLiBUaGlzIGZpZWxkIGlzIGEgc2V0IG9mIGFsbCBzdXBwb3J0ZWQgc3RhbmRhcmRzLiBGb3IKK2RldGFpbHMgb24gdmlkZW8gc3RhbmRhcmRzIGFuZCBob3cgdG8gc3dpdGNoIHNlZSA8eHJlZgorbGlua2VuZD0ic3RhbmRhcmQiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+c3RhdHVzPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBmaWVsZCBwcm92aWRlcyBzdGF0dXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlCitpbnB1dC4gU2VlIDx4cmVmIGxpbmtlbmQ9ImlucHV0LXN0YXR1cyIgLz4gZm9yIGZsYWdzLgorV2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBzZW5zb3Igb3JpZW50YXRpb24gYml0cyA8c3RydWN0ZmllbGQ+c3RhdHVzPC9zdHJ1Y3RmaWVsZD4gaXMgb25seSB2YWxpZCB3aGVuIHRoaXMgaXMgdGhlCitjdXJyZW50IGlucHV0LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+Y2FwYWJpbGl0aWVzPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBmaWVsZCBwcm92aWRlcyBjYXBhYmlsaXRpZXMgZm9yIHRoZQoraW5wdXQuIFNlZSA8eHJlZiBsaW5rZW5kPSJpbnB1dC1jYXBhYmlsaXRpZXMiIC8+IGZvciBmbGFncy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD5bM108L2VudHJ5PgorCSAgICA8ZW50cnk+UmVzZXJ2ZWQgZm9yIGZ1dHVyZSBleHRlbnNpb25zLiBEcml2ZXJzIG11c3Qgc2V0Cit0aGUgYXJyYXkgdG8gemVyby48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgZnJhbWU9Im5vbmUiIHBnd2lkZT0iMSIgaWQ9ImlucHV0LXR5cGUiPgorICAgICAgPHRpdGxlPklucHV0IFR5cGVzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0lOUFVUX1RZUEVfVFVORVI8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4xPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoaXMgaW5wdXQgdXNlcyBhIHR1bmVyIChSRiBkZW1vZHVsYXRvcikuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0lOUFVUX1RZUEVfQ0FNRVJBPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MjwvZW50cnk+CisJICAgIDxlbnRyeT5BbmFsb2cgYmFzZWJhbmQgaW5wdXQsIGZvciBleGFtcGxlIENWQlMgLworQ29tcG9zaXRlIFZpZGVvLCBTLVZpZGVvLCBSR0IuPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPCEtLSBTdGF0dXMgZmxhZ3MgYmFzZWQgb24gcHJvcG9zYWwgYnkgTWFyayBNY0NsZWxsYW5kLAordmlkZW80bGludXgtbGlzdEByZWRoYXQuY29tIG9uIDE4IE9jdCAyMDAyLCBzdWJqZWN0ICJSZTogW1Y0TF0gUmU6Cit2NGwyIGFwaSIuICJXaHkgYXJlIHNvbWUgb2YgdGhlbSBpbnZlcnRlZD8gU28gdGhhdCB0aGUgZHJpdmVyIGRvZXNuJ3QKK2hhdmUgdG8gbGllIGFib3V0IHRoZSBzdGF0dXMgaW4gY2FzZXMgd2hlcmUgaXQgY2FuJ3QgdGVsbCBvbmUgd2F5IG9yCit0aGUgb3RoZXIuIFBsdXMsIGEgc3RhdHVzIG9mIHplcm8gd291bGQgZ2VuZXJhbGx5IG1lYW4gdGhhdCBldmVyeXRoaW5nCitpcyBPSy4iIC0tPgorCisgICAgPHRhYmxlIGZyYW1lPSJub25lIiBwZ3dpZGU9IjEiIGlkPSJpbnB1dC1zdGF0dXMiPgorICAgICAgPHRpdGxlPklucHV0IFN0YXR1cyBGbGFnczwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMxIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMyIiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMzIiAvPgorCTxzcGFuc3BlYyBuYW1lc3Q9ImMxIiBuYW1lZW5kPSJjMyIgc3Bhbm5hbWU9ImhzcGFuIgorCSAgYWxpZ249ImxlZnQiIC8+CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaHNwYW4iPkdlbmVyYWw8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfSU5fU1RfTk9fUE9XRVI8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDAwMDAxPC9lbnRyeT4KKwkgICAgPGVudHJ5PkF0dGFjaGVkIGRldmljZSBpcyBvZmYuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0lOX1NUX05PX1NJR05BTDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMDAwMDI8L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0lOX1NUX05PX0NPTE9SPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAwMDAwNDwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgaGFyZHdhcmUgc3VwcG9ydHMgY29sb3IgZGVjb2RpbmcsIGJ1dCBkb2VzIG5vdAorZGV0ZWN0IGNvbG9yIG1vZHVsYXRpb24gaW4gdGhlIHNpZ25hbC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImhzcGFuIj5TZW5zb3IgT3JpZW50YXRpb248L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfSU5fU1RfSEZMSVA8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDAwMDEwPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBpbnB1dCBpcyBjb25uZWN0ZWQgdG8gYSBkZXZpY2UgdGhhdCBwcm9kdWNlcyBhIHNpZ25hbAordGhhdCBpcyBmbGlwcGVkIGhvcml6b250YWxseSBhbmQgZG9lcyBub3QgY29ycmVjdCB0aGlzIGJlZm9yZSBwYXNzaW5nIHRoZQorc2lnbmFsIHRvIHVzZXJzcGFjZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfSU5fU1RfVkZMSVA8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDAwMDIwPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBpbnB1dCBpcyBjb25uZWN0ZWQgdG8gYSBkZXZpY2UgdGhhdCBwcm9kdWNlcyBhIHNpZ25hbAordGhhdCBpcyBmbGlwcGVkIHZlcnRpY2FsbHkgYW5kIGRvZXMgbm90IGNvcnJlY3QgdGhpcyBiZWZvcmUgcGFzc2luZyB0aGUKK3NpZ25hbCB0byB1c2Vyc3BhY2UuIE5vdGUgdGhhdCBhIDE4MCBkZWdyZWUgcm90YXRpb24gaXMgdGhlIHNhbWUgYXMgSEZMSVAgfCBWRkxJUDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaHNwYW4iPkFuYWxvZyBWaWRlbzwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9JTl9TVF9OT19IX0xPQ0s8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDAwMTAwPC9lbnRyeT4KKwkgICAgPGVudHJ5Pk5vIGhvcml6b250YWwgc3luYyBsb2NrLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9JTl9TVF9DT0xPUl9LSUxMPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAwMDIwMDwvZW50cnk+CisJICAgIDxlbnRyeT5BIGNvbG9yIGtpbGxlciBjaXJjdWl0IGF1dG9tYXRpY2FsbHkgZGlzYWJsZXMgY29sb3IKK2RlY29kaW5nIHdoZW4gaXQgZGV0ZWN0cyBubyBjb2xvciBtb2R1bGF0aW9uLiBXaGVuIHRoaXMgZmxhZyBpcyBzZXQKK3RoZSBjb2xvciBraWxsZXIgaXMgZW5hYmxlZCA8ZW1waGFzaXM+YW5kPC9lbXBoYXNpcz4gaGFzIHNodXQgb2ZmCitjb2xvciBkZWNvZGluZy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImhzcGFuIj5EaWdpdGFsIFZpZGVvPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0lOX1NUX05PX1NZTkM8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDEwMDAwPC9lbnRyeT4KKwkgICAgPGVudHJ5Pk5vIHN5bmNocm9uaXphdGlvbiBsb2NrLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9JTl9TVF9OT19FUVU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDIwMDAwPC9lbnRyeT4KKwkgICAgPGVudHJ5Pk5vIGVxdWFsaXplciBsb2NrLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9JTl9TVF9OT19DQVJSSUVSPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDA0MDAwMDwvZW50cnk+CisJICAgIDxlbnRyeT5DYXJyaWVyIHJlY292ZXJ5IGZhaWxlZC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImhzcGFuIj5WQ1IgYW5kIFNldC1Ub3AgQm94PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0lOX1NUX01BQ1JPVklTSU9OPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMTAwMDAwMDwvZW50cnk+CisJICAgIDxlbnRyeT5NYWNyb3Zpc2lvbiBpcyBhbiBhbmFsb2cgY29weSBwcmV2ZW50aW9uIHN5c3RlbQorbWFuZ2xpbmcgdGhlIHZpZGVvIHNpZ25hbCB0byBjb25mdXNlIHZpZGVvIHJlY29yZGVycy4gV2hlbiB0aGlzCitmbGFnIGlzIHNldCBNYWNyb3Zpc2lvbiBoYXMgYmVlbiBkZXRlY3RlZC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfSU5fU1RfTk9fQUNDRVNTPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMjAwMDAwMDwvZW50cnk+CisJICAgIDxlbnRyeT5Db25kaXRpb25hbCBhY2Nlc3MgZGVuaWVkLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9JTl9TVF9WVFI8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDA0MDAwMDAwPC9lbnRyeT4KKwkgICAgPGVudHJ5PlZUUiB0aW1lIGNvbnN0YW50LiBbP108L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8IS0tIENhcGFiaWxpdHkgZmxhZ3MgYmFzZWQgb24gdmlkZW8gdGltaW5ncyBSRkMgYnkgTXVyYWxpZGhhcmFuCitLYXJpY2hlcmksIHRpdGxlZCBSRkMgKHYxLjIpOiBWNEwgLSBTdXBwb3J0IGZvciB2aWRlbyB0aW1pbmdzIGF0IHRoZQoraW5wdXQvb3V0cHV0IGludGVyZmFjZSB0byBsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcgb24gMTkgT2N0IDIwMDkuCisJLS0+CisgICAgPHRhYmxlIGZyYW1lPSJub25lIiBwZ3dpZGU9IjEiIGlkPSJpbnB1dC1jYXBhYmlsaXRpZXMiPgorICAgICAgPHRpdGxlPklucHV0IGNhcGFiaWxpdGllczwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1kZWY7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9JTl9DQVBfRFZfVElNSU5HUzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMDAwMDI8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBpbnB1dCBzdXBwb3J0cyBzZXR0aW5nIHZpZGVvIHRpbWluZ3MgYnkgdXNpbmcgVklESU9DX1NfRFZfVElNSU5HUy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfSU5fQ0FQX1NURDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMDAwMDQ8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBpbnB1dCBzdXBwb3J0cyBzZXR0aW5nIHRoZSBUViBzdGFuZGFyZCBieSB1c2luZyBWSURJT0NfU19TVEQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0lOX0NBUF9OQVRJVkVfU0laRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMDAwMDg8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBpbnB1dCBzdXBwb3J0cyBzZXR0aW5nIHRoZSBuYXRpdmUgc2l6ZSB1c2luZworCSAgICB0aGUgPGNvbnN0YW50PlY0TDJfU0VMX1RHVF9OQVRJVkVfU0laRTwvY29uc3RhbnQ+CisJICAgIHNlbGVjdGlvbiB0YXJnZXQsIHNlZSA8eHJlZgorCSAgICBsaW5rZW5kPSJ2NGwyLXNlbGVjdGlvbnMtY29tbW9uIi8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSAmdjRsMi1pbnB1dDsgPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4gaXMKK291dCBvZiBib3VuZHMuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1lbnVtb3V0cHV0LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWVudW1vdXRwdXQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3M2ZiMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1lbnVtb3V0cHV0LnhtbApAQCAtMCwwICsxLDIwMSBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2MtZW51bW91dHB1dCI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19FTlVNT1VUUFVUPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5WSURJT0NfRU5VTU9VVFBVVDwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5FbnVtZXJhdGUgdmlkZW8gb3V0cHV0czwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zdHJ1Y3QgdjRsMl9vdXRwdXQgKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19FTlVNT1VUUFVUPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5UbyBxdWVyeSB0aGUgYXR0cmlidXRlcyBvZiBhIHZpZGVvIG91dHB1dHMgYXBwbGljYXRpb25zCitpbml0aWFsaXplIHRoZSA8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiAmdjRsMi1vdXRwdXQ7CithbmQgY2FsbCB0aGUgPGNvbnN0YW50PlZJRElPQ19FTlVNT1VUUFVUPC9jb25zdGFudD4gaW9jdGwgd2l0aCBhCitwb2ludGVyIHRvIHRoaXMgc3RydWN0dXJlLiBEcml2ZXJzIGZpbGwgdGhlIHJlc3Qgb2YgdGhlIHN0cnVjdHVyZSBvcgorcmV0dXJuIGFuICZFSU5WQUw7IHdoZW4gdGhlIGluZGV4IGlzIG91dCBvZiBib3VuZHMuIFRvIGVudW1lcmF0ZSBhbGwKK291dHB1dHMgYXBwbGljYXRpb25zIHNoYWxsIGJlZ2luIGF0IGluZGV4IHplcm8sIGluY3JlbWVudGluZyBieSBvbmUKK3VudGlsIHRoZSBkcml2ZXIgcmV0dXJucyA8ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPi48L3BhcmE+CisKKyAgICA8dGFibGUgZnJhbWU9Im5vbmUiIHBnd2lkZT0iMSIgaWQ9InY0bDItb3V0cHV0Ij4KKyAgICAgIDx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9vdXRwdXQ8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5pbmRleDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PklkZW50aWZpZXMgdGhlIG91dHB1dCwgc2V0IGJ5IHRoZQorYXBwbGljYXRpb24uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTg8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm5hbWU8L3N0cnVjdGZpZWxkPlszMl08L2VudHJ5PgorCSAgICA8ZW50cnk+TmFtZSBvZiB0aGUgdmlkZW8gb3V0cHV0LCBhIE5VTC10ZXJtaW5hdGVkIEFTQ0lJCitzdHJpbmcsIGZvciBleGFtcGxlOiAiVm91dCIuIFRoaXMgaW5mb3JtYXRpb24gaXMgaW50ZW5kZWQgZm9yIHRoZQordXNlciwgcHJlZmVyYWJseSB0aGUgY29ubmVjdG9yIGxhYmVsIG9uIHRoZSBkZXZpY2UgaXRzZWxmLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlR5cGUgb2YgdGhlIG91dHB1dCwgc2VlIDx4cmVmCisJCWxpbmtlbmQ9Im91dHB1dC10eXBlIiAvPi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmF1ZGlvc2V0PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PHBhcmE+RHJpdmVycyBjYW4gZW51bWVyYXRlIHVwIHRvIDMyIHZpZGVvIGFuZAorYXVkaW8gb3V0cHV0cy4gVGhpcyBmaWVsZCBzaG93cyB3aGljaCBhdWRpbyBvdXRwdXRzIHdlcmUKK3NlbGVjdGFibGUgYXMgdGhlIGN1cnJlbnQgb3V0cHV0IGlmIHRoaXMgd2FzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQKK3ZpZGVvIG91dHB1dC4gSXQgaXMgYSBiaXQgbWFzay4gVGhlIExTQiBjb3JyZXNwb25kcyB0byBhdWRpbyBvdXRwdXQgMCwKK3RoZSBNU0IgdG8gb3V0cHV0IDMxLiBBbnkgbnVtYmVyIG9mIGJpdHMgY2FuIGJlIHNldCwgb3IKK25vbmUuPC9wYXJhPjxwYXJhPldoZW4gdGhlIGRyaXZlciBkb2VzIG5vdCBlbnVtZXJhdGUgYXVkaW8gb3V0cHV0cyBubworYml0cyBtdXN0IGJlIHNldC4gQXBwbGljYXRpb25zIHNoYWxsIG5vdCBpbnRlcnByZXQgdGhpcyBhcyBsYWNrIG9mCithdWRpbyBzdXBwb3J0LiBEcml2ZXJzIG1heSBhdXRvbWF0aWNhbGx5IHNlbGVjdCBhdWRpbyBvdXRwdXRzIHdpdGhvdXQKK2VudW1lcmF0aW5nIHRoZW0uPC9wYXJhPjxwYXJhPkZvciBkZXRhaWxzIG9uIGF1ZGlvIG91dHB1dHMgYW5kIGhvdyB0bworc2VsZWN0IHRoZSBjdXJyZW50IG91dHB1dCBzZWUgPHhyZWYgbGlua2VuZD0iYXVkaW8iIC8+LjwvcGFyYT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm1vZHVsYXRvcjwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk91dHB1dCBkZXZpY2VzIGNhbiBoYXZlIHplcm8gb3IgbW9yZSBSRiBtb2R1bGF0b3JzLgorV2hlbiB0aGUgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBpcworPGNvbnN0YW50PlY0TDJfT1VUUFVUX1RZUEVfTU9EVUxBVE9SPC9jb25zdGFudD4gdGhpcyBpcyBhbiBSRgorY29ubmVjdG9yIGFuZCB0aGlzIGZpZWxkIGlkZW50aWZpZXMgdGhlIG1vZHVsYXRvci4gSXQgY29ycmVzcG9uZHMgdG8KKyZ2NGwyLW1vZHVsYXRvcjsgZmllbGQgPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4uIEZvciBkZXRhaWxzCitvbiBtb2R1bGF0b3JzIHNlZSA8eHJlZiBsaW5rZW5kPSJ0dW5lciIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PiZ2NGwyLXN0ZC1pZDs8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnN0ZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkV2ZXJ5IHZpZGVvIG91dHB1dCBzdXBwb3J0cyBvbmUgb3IgbW9yZSBkaWZmZXJlbnQKK3ZpZGVvIHN0YW5kYXJkcy4gVGhpcyBmaWVsZCBpcyBhIHNldCBvZiBhbGwgc3VwcG9ydGVkIHN0YW5kYXJkcy4gRm9yCitkZXRhaWxzIG9uIHZpZGVvIHN0YW5kYXJkcyBhbmQgaG93IHRvIHN3aXRjaCBzZWUgPHhyZWYKKwkJbGlua2VuZD0ic3RhbmRhcmQiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+Y2FwYWJpbGl0aWVzPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBmaWVsZCBwcm92aWRlcyBjYXBhYmlsaXRpZXMgZm9yIHRoZQorb3V0cHV0LiBTZWUgPHhyZWYgbGlua2VuZD0ib3V0cHV0LWNhcGFiaWxpdGllcyIgLz4gZm9yIGZsYWdzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cmVzZXJ2ZWQ8L3N0cnVjdGZpZWxkPlszXTwvZW50cnk+CisJICAgIDxlbnRyeT5SZXNlcnZlZCBmb3IgZnV0dXJlIGV4dGVuc2lvbnMuIERyaXZlcnMgbXVzdCBzZXQKK3RoZSBhcnJheSB0byB6ZXJvLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBmcmFtZT0ibm9uZSIgcGd3aWRlPSIxIiBpZD0ib3V0cHV0LXR5cGUiPgorICAgICAgPHRpdGxlPk91dHB1dCBUeXBlPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX09VVFBVVF9UWVBFX01PRFVMQVRPUjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjE8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBvdXRwdXQgaXMgYW4gYW5hbG9nIFRWIG1vZHVsYXRvci48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfT1VUUFVUX1RZUEVfQU5BTE9HPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MjwvZW50cnk+CisJICAgIDxlbnRyeT5BbmFsb2cgYmFzZWJhbmQgb3V0cHV0LCBmb3IgZXhhbXBsZSBDb21wb3NpdGUgLworQ1ZCUywgUy1WaWRlbywgUkdCLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9PVVRQVVRfVFlQRV9BTkFMT0dWR0FPVkVSTEFZPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MzwvZW50cnk+CisJICAgIDxlbnRyeT5bP108L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8IS0tIENhcGFiaWxpdGllcyBmbGFncyBiYXNlZCBvbiB2aWRlbyB0aW1pbmdzIFJGQyBieSBNdXJhbGlkaGFyYW4KK0thcmljaGVyaSwgdGl0bGVkIFJGQyAodjEuMik6IFY0TCAtIFN1cHBvcnQgZm9yIHZpZGVvIHRpbWluZ3MgYXQgdGhlCitpbnB1dC9vdXRwdXQgaW50ZXJmYWNlIHRvIGxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZyBvbiAxOSBPY3QgMjAwOS4KKwktLT4KKyAgICA8dGFibGUgZnJhbWU9Im5vbmUiIHBnd2lkZT0iMSIgaWQ9Im91dHB1dC1jYXBhYmlsaXRpZXMiPgorICAgICAgPHRpdGxlPk91dHB1dCBjYXBhYmlsaXRpZXM8L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3MtZGVmOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfT1VUX0NBUF9EVl9USU1JTkdTPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAwMDAwMjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGlzIG91dHB1dCBzdXBwb3J0cyBzZXR0aW5nIHZpZGVvIHRpbWluZ3MgYnkgdXNpbmcgVklESU9DX1NfRFZfVElNSU5HUy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfT1VUX0NBUF9TVEQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDAwMDA0PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoaXMgb3V0cHV0IHN1cHBvcnRzIHNldHRpbmcgdGhlIFRWIHN0YW5kYXJkIGJ5IHVzaW5nIFZJRElPQ19TX1NURC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfT1VUX0NBUF9OQVRJVkVfU0laRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMDAwMDg8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBvdXRwdXQgc3VwcG9ydHMgc2V0dGluZyB0aGUgbmF0aXZlIHNpemUgdXNpbmcKKwkgICAgdGhlIDxjb25zdGFudD5WNEwyX1NFTF9UR1RfTkFUSVZFX1NJWkU8L2NvbnN0YW50PgorCSAgICBzZWxlY3Rpb24gdGFyZ2V0LCBzZWUgPHhyZWYKKwkgICAgbGlua2VuZD0idjRsMi1zZWxlY3Rpb25zLWNvbW1vbiIvPi48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgPC9yZWZzZWN0MT4KKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgJnY0bDItb3V0cHV0OyA8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPgoraXMgb3V0IG9mIGJvdW5kcy48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWVudW1zdGQueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZW51bXN0ZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA2NTA5OQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWVudW1zdGQueG1sCkBAIC0wLDAgKzEsMzg5IEBACis8cmVmZW50cnkgaWQ9InZpZGlvYy1lbnVtc3RkIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgVklESU9DX0VOVU1TVEQ8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPlZJRElPQ19FTlVNU1REPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPkVudW1lcmF0ZSBzdXBwb3J0ZWQgdmlkZW8gc3RhbmRhcmRzPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCB2NGwyX3N0YW5kYXJkICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfRU5VTVNURDwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgPHBhcmE+VG8gcXVlcnkgdGhlIGF0dHJpYnV0ZXMgb2YgYSB2aWRlbyBzdGFuZGFyZCwKK2VzcGVjaWFsbHkgYSBjdXN0b20gKGRyaXZlciBkZWZpbmVkKSBvbmUsIGFwcGxpY2F0aW9ucyBpbml0aWFsaXplIHRoZQorPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4gZmllbGQgb2YgJnY0bDItc3RhbmRhcmQ7IGFuZCBjYWxsIHRoZQorPGNvbnN0YW50PlZJRElPQ19FTlVNU1REPC9jb25zdGFudD4gaW9jdGwgd2l0aCBhIHBvaW50ZXIgdG8gdGhpcworc3RydWN0dXJlLiBEcml2ZXJzIGZpbGwgdGhlIHJlc3Qgb2YgdGhlIHN0cnVjdHVyZSBvciByZXR1cm4gYW4KKyZFSU5WQUw7IHdoZW4gdGhlIGluZGV4IGlzIG91dCBvZiBib3VuZHMuIFRvIGVudW1lcmF0ZSBhbGwgc3RhbmRhcmRzCithcHBsaWNhdGlvbnMgc2hhbGwgYmVnaW4gIGF0IGluZGV4IHplcm8sIGluY3JlbWVudGluZyBieSBvbmUgdW50aWwgdGhlCitkcml2ZXIgcmV0dXJucyA8ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPi4gRHJpdmVycyBtYXkgZW51bWVyYXRlIGEKK2RpZmZlcmVudCBzZXQgb2Ygc3RhbmRhcmRzIGFmdGVyIHN3aXRjaGluZyB0aGUgdmlkZW8gaW5wdXQgb3IKK291dHB1dC48Zm9vdG5vdGU+CisJPHBhcmE+VGhlIHN1cHBvcnRlZCBzdGFuZGFyZHMgbWF5IG92ZXJsYXAgYW5kIHdlIG5lZWQgYW4KK3VuYW1iaWd1b3VzIHNldCB0byBmaW5kIHRoZSBjdXJyZW50IHN0YW5kYXJkIHJldHVybmVkIGJ5Cis8Y29uc3RhbnQ+VklESU9DX0dfU1REPC9jb25zdGFudD4uPC9wYXJhPgorICAgICAgPC9mb290bm90ZT48L3BhcmE+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItc3RhbmRhcmQiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX3N0YW5kYXJkPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5OdW1iZXIgb2YgdGhlIHZpZGVvIHN0YW5kYXJkLCBzZXQgYnkgdGhlCithcHBsaWNhdGlvbi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+JnY0bDItc3RkLWlkOzwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+aWQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgYml0cyBpbiB0aGlzIGZpZWxkIGlkZW50aWZ5IHRoZSBzdGFuZGFyZCBhcworb25lIG9mIHRoZSBjb21tb24gc3RhbmRhcmRzIGxpc3RlZCBpbiA8eHJlZiBsaW5rZW5kPSJ2NGwyLXN0ZC1pZCIgLz4sCitvciBpZiBiaXRzIDMyIHRvIDYzIGFyZSBzZXQgYXMgY3VzdG9tIHN0YW5kYXJkcy4gTXVsdGlwbGUgYml0cyBjYW4gYmUKK3NldCBpZiB0aGUgaGFyZHdhcmUgZG9lcyBub3QgZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGVzZSBzdGFuZGFyZHMsCitob3dldmVyIHNlcGFyYXRlIGluZGljZXMgZG8gbm90IGluZGljYXRlIHRoZSBvcHBvc2l0ZS4gVGhlCis8c3RydWN0ZmllbGQ+aWQ8L3N0cnVjdGZpZWxkPiBtdXN0IGJlIHVuaXF1ZS4gTm8gb3RoZXIgZW51bWVyYXRlZAorPHN0cnVjdG5hbWU+djRsMl9zdGFuZGFyZDwvc3RydWN0bmFtZT4gc3RydWN0dXJlLCBmb3IgdGhpcyBpbnB1dCBvcgorb3V0cHV0IGFueXdheSwgY2FuIGNvbnRhaW4gdGhlIHNhbWUgc2V0IG9mIGJpdHMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTg8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm5hbWU8L3N0cnVjdGZpZWxkPlsyNF08L2VudHJ5PgorCSAgICA8ZW50cnk+TmFtZSBvZiB0aGUgc3RhbmRhcmQsIGEgTlVMLXRlcm1pbmF0ZWQgQVNDSUkKK3N0cmluZywgZm9yIGV4YW1wbGU6ICJQQUwtQi9HIiwgIk5UU0MgSmFwYW4iLiBUaGlzIGluZm9ybWF0aW9uIGlzCitpbnRlbmRlZCBmb3IgdGhlIHVzZXIuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PiZ2NGwyLWZyYWN0OzwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZnJhbWVwZXJpb2Q8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgZnJhbWUgcGVyaW9kIChub3QgZmllbGQgcGVyaW9kKSBpcyBudW1lcmF0b3IKKy8gZGVub21pbmF0b3IuIEZvciBleGFtcGxlIE0vTlRTQyBoYXMgYSBmcmFtZSBwZXJpb2Qgb2YgMTAwMSAvCiszMDAwMCBzZWNvbmRzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZnJhbWVsaW5lczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRvdGFsIGxpbmVzIHBlciBmcmFtZSBpbmNsdWRpbmcgYmxhbmtpbmcsCitlLiZuYnNwO2cuIDYyNSBmb3IgQi9QQUwuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+WzRdPC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlc2VydmVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucy4gRHJpdmVycyBtdXN0IHNldAordGhlIGFycmF5IHRvIHplcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLWZyYWN0Ij4KKyAgICAgIDx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9mcmFjdDwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3Mtc3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm51bWVyYXRvcjwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZGVub21pbmF0b3I8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItc3RkLWlkIj4KKyAgICAgIDx0aXRsZT50eXBlZGVmIDxzdHJ1Y3RuYW1lPnY0bDJfc3RkX2lkPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3U2NDwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+djRsMl9zdGRfaWQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGlzIHR5cGUgaXMgYSBzZXQsIGVhY2ggYml0IHJlcHJlc2VudGluZyBhbm90aGVyCit2aWRlbyBzdGFuZGFyZCBhcyBsaXN0ZWQgYmVsb3cgYW5kIGluIDx4cmVmCitsaW5rZW5kPSJ2aWRlby1zdGFuZGFyZHMiIC8+LiBUaGUgMzIgbW9zdCBzaWduaWZpY2FudCBiaXRzIGFyZSByZXNlcnZlZAorZm9yIGN1c3RvbSAoZHJpdmVyIGRlZmluZWQpIHZpZGVvIHN0YW5kYXJkcy48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8cGFyYT48cHJvZ3JhbWxpc3Rpbmc+CisjZGVmaW5lIFY0TDJfU1REX1BBTF9CICAgICAgICAgICgodjRsMl9zdGRfaWQpMHgwMDAwMDAwMSkKKyNkZWZpbmUgVjRMMl9TVERfUEFMX0IxICAgICAgICAgKCh2NGwyX3N0ZF9pZCkweDAwMDAwMDAyKQorI2RlZmluZSBWNEwyX1NURF9QQUxfRyAgICAgICAgICAoKHY0bDJfc3RkX2lkKTB4MDAwMDAwMDQpCisjZGVmaW5lIFY0TDJfU1REX1BBTF9IICAgICAgICAgICgodjRsMl9zdGRfaWQpMHgwMDAwMDAwOCkKKyNkZWZpbmUgVjRMMl9TVERfUEFMX0kgICAgICAgICAgKCh2NGwyX3N0ZF9pZCkweDAwMDAwMDEwKQorI2RlZmluZSBWNEwyX1NURF9QQUxfRCAgICAgICAgICAoKHY0bDJfc3RkX2lkKTB4MDAwMDAwMjApCisjZGVmaW5lIFY0TDJfU1REX1BBTF9EMSAgICAgICAgICgodjRsMl9zdGRfaWQpMHgwMDAwMDA0MCkKKyNkZWZpbmUgVjRMMl9TVERfUEFMX0sgICAgICAgICAgKCh2NGwyX3N0ZF9pZCkweDAwMDAwMDgwKQorCisjZGVmaW5lIFY0TDJfU1REX1BBTF9NICAgICAgICAgICgodjRsMl9zdGRfaWQpMHgwMDAwMDEwMCkKKyNkZWZpbmUgVjRMMl9TVERfUEFMX04gICAgICAgICAgKCh2NGwyX3N0ZF9pZCkweDAwMDAwMjAwKQorI2RlZmluZSBWNEwyX1NURF9QQUxfTmMgICAgICAgICAoKHY0bDJfc3RkX2lkKTB4MDAwMDA0MDApCisjZGVmaW5lIFY0TDJfU1REX1BBTF82MCAgICAgICAgICgodjRsMl9zdGRfaWQpMHgwMDAwMDgwMCkKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPjxwYXJhPjxjb25zdGFudD5WNEwyX1NURF9QQUxfNjA8L2NvbnN0YW50PiBpcworYSBoeWJyaWQgc3RhbmRhcmQgd2l0aCA1MjUgbGluZXMsIDYwIEh6IHJlZnJlc2ggcmF0ZSwgYW5kIFBBTCBjb2xvcgorbW9kdWxhdGlvbiB3aXRoIGEgNC40MyBNSHogY29sb3Igc3ViY2Fycmllci4gU29tZSBQQUwgdmlkZW8gcmVjb3JkZXJzCitjYW4gcGxheSBiYWNrIE5UU0MgdGFwZXMgaW4gdGhpcyBtb2RlIGZvciBkaXNwbGF5IG9uIGEgNTAvNjAgSHogYWdub3N0aWMKK1BBTCBUVi48L3BhcmE+PHBhcmE+PHByb2dyYW1saXN0aW5nPgorI2RlZmluZSBWNEwyX1NURF9OVFNDX00gICAgICAgICAoKHY0bDJfc3RkX2lkKTB4MDAwMDEwMDApCisjZGVmaW5lIFY0TDJfU1REX05UU0NfTV9KUCAgICAgICgodjRsMl9zdGRfaWQpMHgwMDAwMjAwMCkKKyNkZWZpbmUgVjRMMl9TVERfTlRTQ180NDMgICAgICAgKCh2NGwyX3N0ZF9pZCkweDAwMDA0MDAwKQorPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+PHBhcmE+PGNvbnN0YW50PlY0TDJfU1REX05UU0NfNDQzPC9jb25zdGFudD4KK2lzIGEgaHlicmlkIHN0YW5kYXJkIHdpdGggNTI1IGxpbmVzLCA2MCBIeiByZWZyZXNoIHJhdGUsIGFuZCBOVFNDCitjb2xvciBtb2R1bGF0aW9uIHdpdGggYSA0LjQzIE1IeiBjb2xvcgorc3ViY2Fycmllci48L3BhcmE+PHBhcmE+PHByb2dyYW1saXN0aW5nPgorI2RlZmluZSBWNEwyX1NURF9OVFNDX01fS1IgICAgICAoKHY0bDJfc3RkX2lkKTB4MDAwMDgwMDApCisKKyNkZWZpbmUgVjRMMl9TVERfU0VDQU1fQiAgICAgICAgKCh2NGwyX3N0ZF9pZCkweDAwMDEwMDAwKQorI2RlZmluZSBWNEwyX1NURF9TRUNBTV9EICAgICAgICAoKHY0bDJfc3RkX2lkKTB4MDAwMjAwMDApCisjZGVmaW5lIFY0TDJfU1REX1NFQ0FNX0cgICAgICAgICgodjRsMl9zdGRfaWQpMHgwMDA0MDAwMCkKKyNkZWZpbmUgVjRMMl9TVERfU0VDQU1fSCAgICAgICAgKCh2NGwyX3N0ZF9pZCkweDAwMDgwMDAwKQorI2RlZmluZSBWNEwyX1NURF9TRUNBTV9LICAgICAgICAoKHY0bDJfc3RkX2lkKTB4MDAxMDAwMDApCisjZGVmaW5lIFY0TDJfU1REX1NFQ0FNX0sxICAgICAgICgodjRsMl9zdGRfaWQpMHgwMDIwMDAwMCkKKyNkZWZpbmUgVjRMMl9TVERfU0VDQU1fTCAgICAgICAgKCh2NGwyX3N0ZF9pZCkweDAwNDAwMDAwKQorI2RlZmluZSBWNEwyX1NURF9TRUNBTV9MQyAgICAgICAoKHY0bDJfc3RkX2lkKTB4MDA4MDAwMDApCisKKy8qIEFUU0MvSERUViAqLworI2RlZmluZSBWNEwyX1NURF9BVFNDXzhfVlNCICAgICAoKHY0bDJfc3RkX2lkKTB4MDEwMDAwMDApCisjZGVmaW5lIFY0TDJfU1REX0FUU0NfMTZfVlNCICAgICgodjRsMl9zdGRfaWQpMHgwMjAwMDAwMCkKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPjxwYXJhPjwhLS0gQVRTQyBwcm9wb3NhbCBieSBNYXJrIE1jQ2xlbGxhbmQsCit2aWRlbzRsaW51eC1saXN0QHJlZGhhdC5jb20gb24gMTcgT2N0IDIwMDIKKy0tPjxjb25zdGFudD5WNEwyX1NURF9BVFNDXzhfVlNCPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VjRMMl9TVERfQVRTQ18xNl9WU0I8L2NvbnN0YW50PiBhcmUgVS5TLiB0ZXJyZXN0cmlhbCBkaWdpdGFsCitUViBzdGFuZGFyZHMuIFByZXNlbnRseSB0aGUgVjRMMiBBUEkgZG9lcyBub3Qgc3VwcG9ydCBkaWdpdGFsIFRWLiBTZWUKK2Fsc28gdGhlIExpbnV4IERWQiBBUEkgYXQgPHVsaW5rCit1cmw9Imh0dHA6Ly9saW51eHR2Lm9yZyI+aHR0cDovL2xpbnV4dHYub3JnPC91bGluaz4uPC9wYXJhPgorPHBhcmE+PHByb2dyYW1saXN0aW5nPgorI2RlZmluZSBWNEwyX1NURF9QQUxfQkcgICAgICAgICAoVjRMMl9TVERfUEFMX0IgICAgICAgICB8XAorCQkJCSBWNEwyX1NURF9QQUxfQjEgICAgICAgIHxcCisJCQkJIFY0TDJfU1REX1BBTF9HKQorI2RlZmluZSBWNEwyX1NURF9CICAgICAgICAgICAgICAoVjRMMl9TVERfUEFMX0IgICAgICAgICB8XAorCQkJCSBWNEwyX1NURF9QQUxfQjEgICAgICAgIHxcCisJCQkJIFY0TDJfU1REX1NFQ0FNX0IpCisjZGVmaW5lIFY0TDJfU1REX0dIICAgICAgICAgICAgIChWNEwyX1NURF9QQUxfRyAgICAgICAgIHxcCisJCQkJIFY0TDJfU1REX1BBTF9IICAgICAgICAgfFwKKwkJCQkgVjRMMl9TVERfU0VDQU1fRyAgICAgICB8XAorCQkJCSBWNEwyX1NURF9TRUNBTV9IKQorI2RlZmluZSBWNEwyX1NURF9QQUxfREsgICAgICAgICAoVjRMMl9TVERfUEFMX0QgICAgICAgICB8XAorCQkJCSBWNEwyX1NURF9QQUxfRDEgICAgICAgIHxcCisJCQkJIFY0TDJfU1REX1BBTF9LKQorI2RlZmluZSBWNEwyX1NURF9QQUwgICAgICAgICAgICAoVjRMMl9TVERfUEFMX0JHICAgICAgICB8XAorCQkJCSBWNEwyX1NURF9QQUxfREsgICAgICAgIHxcCisJCQkJIFY0TDJfU1REX1BBTF9IICAgICAgICAgfFwKKwkJCQkgVjRMMl9TVERfUEFMX0kpCisjZGVmaW5lIFY0TDJfU1REX05UU0MgICAgICAgICAgIChWNEwyX1NURF9OVFNDX00gICAgICAgIHxcCisJCQkJIFY0TDJfU1REX05UU0NfTV9KUCAgICAgfFwKKwkJCQkgVjRMMl9TVERfTlRTQ19NX0tSKQorI2RlZmluZSBWNEwyX1NURF9NTiAgICAgICAgICAgICAoVjRMMl9TVERfUEFMX00gICAgICAgICB8XAorCQkJCSBWNEwyX1NURF9QQUxfTiAgICAgICAgIHxcCisJCQkJIFY0TDJfU1REX1BBTF9OYyAgICAgICAgfFwKKwkJCQkgVjRMMl9TVERfTlRTQykKKyNkZWZpbmUgVjRMMl9TVERfU0VDQU1fREsgICAgICAgKFY0TDJfU1REX1NFQ0FNX0QgICAgICAgfFwKKwkJCQkgVjRMMl9TVERfU0VDQU1fSyAgICAgICB8XAorCQkJCSBWNEwyX1NURF9TRUNBTV9LMSkKKyNkZWZpbmUgVjRMMl9TVERfREsgICAgICAgICAgICAgKFY0TDJfU1REX1BBTF9ESyAgICAgICAgfFwKKwkJCQkgVjRMMl9TVERfU0VDQU1fREspCisKKyNkZWZpbmUgVjRMMl9TVERfU0VDQU0gICAgICAgICAgKFY0TDJfU1REX1NFQ0FNX0IgICAgICAgfFwKKwkJCQkgVjRMMl9TVERfU0VDQU1fRyAgICAgICB8XAorCQkJCSBWNEwyX1NURF9TRUNBTV9IICAgICAgIHxcCisJCQkJIFY0TDJfU1REX1NFQ0FNX0RLICAgICAgfFwKKwkJCQkgVjRMMl9TVERfU0VDQU1fTCAgICAgICB8XAorCQkJCSBWNEwyX1NURF9TRUNBTV9MQykKKworI2RlZmluZSBWNEwyX1NURF81MjVfNjAgICAgICAgICAoVjRMMl9TVERfUEFMX00gICAgICAgICB8XAorCQkJCSBWNEwyX1NURF9QQUxfNjAgICAgICAgIHxcCisJCQkJIFY0TDJfU1REX05UU0MgICAgICAgICAgfFwKKwkJCQkgVjRMMl9TVERfTlRTQ180NDMpCisjZGVmaW5lIFY0TDJfU1REXzYyNV81MCAgICAgICAgIChWNEwyX1NURF9QQUwgICAgICAgICAgIHxcCisJCQkJIFY0TDJfU1REX1BBTF9OICAgICAgICAgfFwKKwkJCQkgVjRMMl9TVERfUEFMX05jICAgICAgICB8XAorCQkJCSBWNEwyX1NURF9TRUNBTSkKKworI2RlZmluZSBWNEwyX1NURF9VTktOT1dOICAgICAgICAwCisjZGVmaW5lIFY0TDJfU1REX0FMTCAgICAgICAgICAgIChWNEwyX1NURF81MjVfNjAgICAgICAgIHxcCisJCQkJIFY0TDJfU1REXzYyNV81MCkKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgaWQ9InZpZGVvLXN0YW5kYXJkcyIgb3JpZW50PSJsYW5kIj4KKyAgICAgIDx0aXRsZT5WaWRlbyBTdGFuZGFyZHMgKGJhc2VkIG9uIFs8eHJlZiBsaW5rZW5kPSJpdHU0NzAiIC8+XSk8L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIxMiIgY29sc2VwPSIxIiByb3dzZXA9IjEiIGFsaWduPSJjZW50ZXIiPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMxIiBhbGlnbj0ibGVmdCIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMiIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMyIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjNCIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjNSIgLz4KKwk8Y29sc3BlYyBjb2xudW09IjciIGNvbG5hbWU9ImM3IiAvPgorCTxjb2xzcGVjIGNvbG51bT0iOSIgY29sbmFtZT0iYzkiIC8+CisJPGNvbHNwZWMgY29sbnVtPSIxMiIgY29sbmFtZT0iYzEyIiAvPgorCTxzcGFuc3BlYyBuYW1lc3Q9ImMyIiBuYW1lZW5kPSJjMyIgc3Bhbm5hbWU9Im0iIGFsaWduPSJjZW50ZXIiIC8+CisJPHNwYW5zcGVjIG5hbWVzdD0iYzQiIG5hbWVlbmQ9ImMxMiIgc3Bhbm5hbWU9IngiIGFsaWduPSJjZW50ZXIiIC8+CisJPHNwYW5zcGVjIG5hbWVzdD0iYzUiIG5hbWVlbmQ9ImM3IiBzcGFubmFtZT0iYiIgYWxpZ249ImNlbnRlciIgLz4KKwk8c3BhbnNwZWMgbmFtZXN0PSJjOSIgbmFtZWVuZD0iYzEyIiBzcGFubmFtZT0icyIgYWxpZ249ImNlbnRlciIgLz4KKwk8dGhlYWQ+CisJICA8cm93PgorCSAgICA8ZW50cnk+Q2hhcmFjdGVyaXN0aWNzPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxwYXJhPk0vTlRTQzxmb290bm90ZT48cGFyYT5KYXBhbiB1c2VzIGEgc3RhbmRhcmQKK3NpbWlsYXIgdG8gTS9OVFNDCisoVjRMMl9TVERfTlRTQ19NX0pQKS48L3BhcmE+PC9mb290bm90ZT48L3BhcmE+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk0vUEFMPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxwYXJhPk4vUEFMPGZvb3Rub3RlPjxwYXJhPiBUaGUgdmFsdWVzIGluCiticmFja2V0cyBhcHBseSB0byB0aGUgY29tYmluYXRpb24gTi9QQUwgYS5rLmEuCitOPHN1YnNjcmlwdD5DPC9zdWJzY3JpcHQ+IHVzZWQgaW4gQXJnZW50aW5hCisoVjRMMl9TVERfUEFMX05jKS48L3BhcmE+PC9mb290bm90ZT48L3BhcmE+PC9lbnRyeT4KKwkgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPkIsIEIxLCBHL1BBTDwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj5ELCBEMSwgSy9QQUw8L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+SC9QQUw8L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+SS9QQUw8L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+QiwgRy9TRUNBTTwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj5ELCBLL1NFQ0FNPC9lbnRyeT4KKwkgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPksxL1NFQ0FNPC9lbnRyeT4KKwkgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPkwvU0VDQU08L2VudHJ5PgorCSAgPC9yb3c+CisJPC90aGVhZD4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PkZyYW1lIGxpbmVzPC9lbnRyeT4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJtIj41MjU8L2VudHJ5PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9IngiPjYyNTwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5GcmFtZSBwZXJpb2QgKHMpPC9lbnRyeT4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJtIj4xMDAxLzMwMDAwPC9lbnRyeT4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJ4Ij4xLzI1PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PkNocm9taW5hbmNlIHN1Yi1jYXJyaWVyIGZyZXF1ZW5jeSAoSHopPC9lbnRyeT4KKwkgICAgPGVudHJ5PjM1Nzk1NDUgJnBsdXNtbjsmbmJzcDsxMDwvZW50cnk+CisJICAgIDxlbnRyeT4zNTc5NjExLjQ5ICZwbHVzbW47Jm5ic3A7MTA8L2VudHJ5PgorCSAgICA8ZW50cnk+NDQzMzYxOC43NSAmcGx1c21uOyZuYnNwOzUgKDM1ODIwNTYuMjUKKyZwbHVzbW47Jm5ic3A7NSk8L2VudHJ5PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImIiPjQ0MzM2MTguNzUgJnBsdXNtbjsmbmJzcDs1PC9lbnRyeT4KKwkgICAgPGVudHJ5PjQ0MzM2MTguNzUgJnBsdXNtbjsmbmJzcDsxPC9lbnRyeT4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJzIj5mPHN1YnNjcmlwdD5PUjwvc3Vic2NyaXB0PiZuYnNwOz0KKzQ0MDYyNTAgJnBsdXNtbjsmbmJzcDsyMDAwLCBmPHN1YnNjcmlwdD5PQjwvc3Vic2NyaXB0PiZuYnNwOz0gNDI1MDAwMAorJnBsdXNtbjsmbmJzcDsyMDAwPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pk5vbWluYWwgcmFkaW8tZnJlcXVlbmN5IGNoYW5uZWwgYmFuZHdpZHRoCisoTUh6KTwvZW50cnk+CisJICAgIDxlbnRyeT42PC9lbnRyeT4KKwkgICAgPGVudHJ5PjY8L2VudHJ5PgorCSAgICA8ZW50cnk+NjwvZW50cnk+CisJICAgIDxlbnRyeT5COiA3OyBCMSwgRzogODwvZW50cnk+CisJICAgIDxlbnRyeT44PC9lbnRyeT4KKwkgICAgPGVudHJ5Pjg8L2VudHJ5PgorCSAgICA8ZW50cnk+ODwvZW50cnk+CisJICAgIDxlbnRyeT44PC9lbnRyeT4KKwkgICAgPGVudHJ5Pjg8L2VudHJ5PgorCSAgICA8ZW50cnk+ODwvZW50cnk+CisJICAgIDxlbnRyeT44PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PlNvdW5kIGNhcnJpZXIgcmVsYXRpdmUgdG8gdmlzaW9uIGNhcnJpZXIKKyhNSHopPC9lbnRyeT4KKwkgICAgPGVudHJ5PismbmJzcDs0LjU8L2VudHJ5PgorCSAgICA8ZW50cnk+KyZuYnNwOzQuNTwvZW50cnk+CisJICAgIDxlbnRyeT4rJm5ic3A7NC41PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxwYXJhPismbmJzcDs1LjUgJnBsdXNtbjsmbmJzcDswLjAwMQorPGZvb3Rub3RlPjxwYXJhPkluIHRoZSBGZWRlcmFsIFJlcHVibGljIG9mIEdlcm1hbnksIEF1c3RyaWEsIEl0YWx5LAordGhlIE5ldGhlcmxhbmRzLCBTbG92YWtpYSBhbmQgU3dpdHplcmxhbmQgYSBzeXN0ZW0gb2YgdHdvIHNvdW5kCitjYXJyaWVycyBpcyB1c2VkLCB0aGUgZnJlcXVlbmN5IG9mIHRoZSBzZWNvbmQgY2FycmllciBiZWluZworMjQyLjE4NzUmbmJzcDtrSHogYWJvdmUgdGhlIGZyZXF1ZW5jeSBvZiB0aGUgZmlyc3Qgc291bmQgY2Fycmllci4gRm9yCitzdGVyZW9waG9uaWMgc291bmQgdHJhbnNtaXNzaW9ucyBhIHNpbWlsYXIgc3lzdGVtIGlzIHVzZWQgaW4KK0F1c3RyYWxpYS48L3BhcmE+PC9mb290bm90ZT4gPGZvb3Rub3RlPjxwYXJhPk5ldyBaZWFsYW5kIHVzZXMgYSBzb3VuZAorY2FycmllciBkaXNwbGFjZWQgNS40OTk2ICZwbHVzbW47Jm5ic3A7MC4wMDA1IE1IeiBmcm9tIHRoZSB2aXNpb24KK2NhcnJpZXIuPC9wYXJhPjwvZm9vdG5vdGU+IDxmb290bm90ZT48cGFyYT5JbiBEZW5tYXJrLCBGaW5sYW5kLCBOZXcKK1plYWxhbmQsIFN3ZWRlbiBhbmQgU3BhaW4gYSBzeXN0ZW0gb2YgdHdvIHNvdW5kIGNhcnJpZXJzIGlzIHVzZWQuIEluCitJY2VsYW5kLCBOb3J3YXkgYW5kIFBvbGFuZCB0aGUgc2FtZSBzeXN0ZW0gaXMgYmVpbmcgaW50cm9kdWNlZC4gVGhlCitzZWNvbmQgY2FycmllciBpcyA1Ljg1Jm5ic3A7TUh6IGFib3ZlIHRoZSB2aXNpb24gY2FycmllciBhbmQgaXMgRFFQU0sKK21vZHVsYXRlZCB3aXRoIDcyOCZuYnNwO2tiaXQvcyBzb3VuZCBhbmQgZGF0YSBtdWx0aXBsZXguIChOSUNBTQorc3lzdGVtKTwvcGFyYT48L2Zvb3Rub3RlPiA8Zm9vdG5vdGU+PHBhcmE+SW4gdGhlIFVuaXRlZCBLaW5nZG9tLCBhCitzeXN0ZW0gb2YgdHdvIHNvdW5kIGNhcnJpZXJzIGlzIHVzZWQuIFRoZSBzZWNvbmQgc291bmQgY2FycmllciBpcworNi41NTImbmJzcDtNSHogYWJvdmUgdGhlIHZpc2lvbiBjYXJyaWVyIGFuZCBpcyBEUVBTSyBtb2R1bGF0ZWQgd2l0aCBhCis3MjgmbmJzcDtrYml0L3Mgc291bmQgYW5kIGRhdGEgbXVsdGlwbGV4IGFibGUgdG8gY2FycnkgdHdvIHNvdW5kCitjaGFubmVscy4gKE5JQ0FNIHN5c3RlbSk8L3BhcmE+PC9mb290bm90ZT48L3BhcmE+PC9lbnRyeT4KKwkgICAgPGVudHJ5PismbmJzcDs2LjUgJnBsdXNtbjsmbmJzcDswLjAwMTwvZW50cnk+CisJICAgIDxlbnRyeT4rJm5ic3A7NS41PC9lbnRyeT4KKwkgICAgPGVudHJ5PismbmJzcDs1Ljk5OTYgJnBsdXNtbjsmbmJzcDswLjAwMDU8L2VudHJ5PgorCSAgICA8ZW50cnk+KyZuYnNwOzUuNSAmcGx1c21uOyZuYnNwOzAuMDAxPC9lbnRyeT4KKwkgICAgPGVudHJ5PismbmJzcDs2LjUgJnBsdXNtbjsmbmJzcDswLjAwMTwvZW50cnk+CisJICAgIDxlbnRyeT4rJm5ic3A7Ni41PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxwYXJhPismbmJzcDs2LjUgPGZvb3Rub3RlPjxwYXJhPkluIEZyYW5jZSwgYQorZGlnaXRhbCBjYXJyaWVyIDUuODUgTUh6IGF3YXkgZnJvbSB0aGUgdmlzaW9uIGNhcnJpZXIgbWF5IGJlIHVzZWQgaW4KK2FkZGl0aW9uIHRvIHRoZSBtYWluIHNvdW5kIGNhcnJpZXIuIEl0IGlzIG1vZHVsYXRlZCBpbiBkaWZmZXJlbnRpYWxseQorZW5jb2RlZCBRUFNLIHdpdGggYSA3Mjgga2JpdC9zIHNvdW5kIGFuZCBkYXRhIG11bHRpcGxleGVyIGNhcGFibGUgb2YKK2NhcnJ5aW5nIHR3byBzb3VuZCBjaGFubmVscy4gKE5JQ0FNCitzeXN0ZW0pPC9wYXJhPjwvZm9vdG5vdGU+PC9wYXJhPjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSAmdjRsMi1zdGFuZGFyZDsgPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4KK2lzIG91dCBvZiBib3VuZHMuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FTk9EQVRBPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlN0YW5kYXJkIHZpZGVvIHRpbWluZ3MgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgaW5wdXQgb3Igb3V0cHV0LjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZXhwYnVmLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWV4cGJ1Zi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFlMGI2YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWV4cGJ1Zi54bWwKQEAgLTAsMCArMSwyMTEgQEAKKzxyZWZlbnRyeSBpZD0idmlkaW9jLWV4cGJ1ZiI+CisKKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgVklESU9DX0VYUEJVRjwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX0VYUEJVRjwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5FeHBvcnQgYSBidWZmZXIgYXMgYSBETUFCVUYgZmlsZSBkZXNjcmlwdG9yLjwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zdHJ1Y3QgdjRsMl9leHBvcnRidWZmZXIgKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19FWFBCVUY8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxub3RlPgorICAgICAgPHRpdGxlPkV4cGVyaW1lbnRhbDwvdGl0bGU+CisgICAgICA8cGFyYT5UaGlzIGlzIGFuIDxsaW5rIGxpbmtlbmQ9ImV4cGVyaW1lbnRhbCI+IGV4cGVyaW1lbnRhbCA8L2xpbms+CisgICAgICBpbnRlcmZhY2UgYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS48L3BhcmE+CisgICAgPC9ub3RlPgorCis8cGFyYT5UaGlzIGlvY3RsIGlzIGFuIGV4dGVuc2lvbiB0byB0aGUgPGxpbmsgbGlua2VuZD0ibW1hcCI+bWVtb3J5CittYXBwaW5nPC9saW5rPiBJL08gbWV0aG9kLCB0aGVyZWZvcmUgaXQgaXMgYXZhaWxhYmxlIG9ubHkgZm9yCis8Y29uc3RhbnQ+VjRMMl9NRU1PUllfTU1BUDwvY29uc3RhbnQ+IGJ1ZmZlcnMuICBJdCBjYW4gYmUgdXNlZCB0byBleHBvcnQgYQorYnVmZmVyIGFzIGEgRE1BQlVGIGZpbGUgYXQgYW55IHRpbWUgYWZ0ZXIgYnVmZmVycyBoYXZlIGJlZW4gYWxsb2NhdGVkIHdpdGggdGhlCismVklESU9DLVJFUUJVRlM7IGlvY3RsLjwvcGFyYT4KKworPHBhcmE+IFRvIGV4cG9ydCBhIGJ1ZmZlciwgYXBwbGljYXRpb25zIGZpbGwgJnY0bDItZXhwb3J0YnVmZmVyOy4gIFRoZQorPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZCBpcyBzZXQgdG8gdGhlIHNhbWUgYnVmZmVyIHR5cGUgYXMgd2FzCitwcmV2aW91c2x5IHVzZWQgd2l0aCAmdjRsMi1yZXF1ZXN0YnVmZmVyczsgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPi4KK0FwcGxpY2F0aW9ucyBtdXN0IGFsc28gc2V0IHRoZSA8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPiBmaWVsZC4gVmFsaWQKK2luZGV4IG51bWJlcnMgcmFuZ2UgZnJvbSB6ZXJvIHRvIHRoZSBudW1iZXIgb2YgYnVmZmVycyBhbGxvY2F0ZWQgd2l0aAorJlZJRElPQy1SRVFCVUZTOyAoJnY0bDItcmVxdWVzdGJ1ZmZlcnM7IDxzdHJ1Y3RmaWVsZD5jb3VudDwvc3RydWN0ZmllbGQ+KQorbWludXMgb25lLiAgRm9yIHRoZSBtdWx0aS1wbGFuYXIgQVBJLCBhcHBsaWNhdGlvbnMgc2V0IHRoZSA8c3RydWN0ZmllbGQ+cGxhbmU8L3N0cnVjdGZpZWxkPgorZmllbGQgdG8gdGhlIGluZGV4IG9mIHRoZSBwbGFuZSB0byBiZSBleHBvcnRlZC4gVmFsaWQgcGxhbmVzCityYW5nZSBmcm9tIHplcm8gdG8gdGhlIG1heGltYWwgbnVtYmVyIG9mIHZhbGlkIHBsYW5lcyBmb3IgdGhlIGN1cnJlbnRseSBhY3RpdmUKK2Zvcm1hdC4gRm9yIHRoZSBzaW5nbGUtcGxhbmFyIEFQSSwgYXBwbGljYXRpb25zIG11c3Qgc2V0IDxzdHJ1Y3RmaWVsZD5wbGFuZTwvc3RydWN0ZmllbGQ+Cit0byB6ZXJvLiAgQWRkaXRpb25hbCBmbGFncyBtYXkgYmUgcG9zdGVkIGluIHRoZSA8c3RydWN0ZmllbGQ+ZmxhZ3M8L3N0cnVjdGZpZWxkPgorZmllbGQuICBSZWZlciB0byBhIG1hbnVhbCBmb3Igb3BlbigpIGZvciBkZXRhaWxzLgorQ3VycmVudGx5IG9ubHkgT19DTE9FWEVDLCBPX1JET05MWSwgT19XUk9OTFksIGFuZCBPX1JEV1IgYXJlIHN1cHBvcnRlZC4gIEFsbAorb3RoZXIgZmllbGRzIG11c3QgYmUgc2V0IHRvIHplcm8uCitJbiB0aGUgY2FzZSBvZiBtdWx0aS1wbGFuYXIgQVBJLCBldmVyeSBwbGFuZSBpcyBleHBvcnRlZCBzZXBhcmF0ZWx5IHVzaW5nCittdWx0aXBsZSA8Y29uc3RhbnQ+VklESU9DX0VYUEJVRjwvY29uc3RhbnQ+IGNhbGxzLjwvcGFyYT4KKworPHBhcmE+QWZ0ZXIgY2FsbGluZyA8Y29uc3RhbnQ+VklESU9DX0VYUEJVRjwvY29uc3RhbnQ+IHRoZSA8c3RydWN0ZmllbGQ+ZmQ8L3N0cnVjdGZpZWxkPgorZmllbGQgd2lsbCBiZSBzZXQgYnkgYSBkcml2ZXIuICBUaGlzIGlzIGEgRE1BQlVGIGZpbGUKK2Rlc2NyaXB0b3IuIFRoZSBhcHBsaWNhdGlvbiBtYXkgcGFzcyBpdCB0byBvdGhlciBETUFCVUYtYXdhcmUgZGV2aWNlcy4gUmVmZXIgdG8KKzxsaW5rIGxpbmtlbmQ9ImRtYWJ1ZiI+RE1BQlVGIGltcG9ydGluZzwvbGluaz4gZm9yIGRldGFpbHMgYWJvdXQgaW1wb3J0aW5nCitETUFCVUYgZmlsZXMgaW50byBWNEwyIG5vZGVzLiBJdCBpcyByZWNvbW1lbmRlZCB0byBjbG9zZSBhIERNQUJVRiBmaWxlIHdoZW4gaXQKK2lzIG5vIGxvbmdlciB1c2VkIHRvIGFsbG93IHRoZSBhc3NvY2lhdGVkIG1lbW9yeSB0byBiZSByZWNsYWltZWQuPC9wYXJhPgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgorCisgICAgPGV4YW1wbGU+CisgICAgICA8dGl0bGU+RXhwb3J0aW5nIGEgYnVmZmVyLjwvdGl0bGU+CisgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CitpbnQgYnVmZmVyX2V4cG9ydChpbnQgdjRsZmQsICZ2NGwyLWJ1Zi10eXBlOyBidCwgaW50IGluZGV4LCBpbnQgKmRtYWZkKQoreworCSZ2NGwyLWV4cG9ydGJ1ZmZlcjsgZXhwYnVmOworCisJbWVtc2V0KCZhbXA7ZXhwYnVmLCAwLCBzaXplb2YoZXhwYnVmKSk7CisJZXhwYnVmLnR5cGUgPSBidDsKKwlleHBidWYuaW5kZXggPSBpbmRleDsKKwlpZiAoaW9jdGwodjRsZmQsICZWSURJT0MtRVhQQlVGOywgJmFtcDtleHBidWYpID09IC0xKSB7CisJCXBlcnJvcigiVklESU9DX0VYUEJVRiIpOworCQlyZXR1cm4gLTE7CisJfQorCisJKmRtYWZkID0gZXhwYnVmLmZkOworCisJcmV0dXJuIDA7Cit9CisgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgIDwvZXhhbXBsZT4KKworICAgIDxleGFtcGxlPgorICAgICAgPHRpdGxlPkV4cG9ydGluZyBhIGJ1ZmZlciB1c2luZyB0aGUgbXVsdGktcGxhbmFyIEFQSS48L3RpdGxlPgorICAgICAgPHByb2dyYW1saXN0aW5nPgoraW50IGJ1ZmZlcl9leHBvcnRfbXAoaW50IHY0bGZkLCAmdjRsMi1idWYtdHlwZTsgYnQsIGludCBpbmRleCwKKwlpbnQgZG1hZmRbXSwgaW50IG5fcGxhbmVzKQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSAmbHQ7IG5fcGxhbmVzOyArK2kpIHsKKwkJJnY0bDItZXhwb3J0YnVmZmVyOyBleHBidWY7CisKKwkJbWVtc2V0KCZhbXA7ZXhwYnVmLCAwLCBzaXplb2YoZXhwYnVmKSk7CisJCWV4cGJ1Zi50eXBlID0gYnQ7CisJCWV4cGJ1Zi5pbmRleCA9IGluZGV4OworCQlleHBidWYucGxhbmUgPSBpOworCQlpZiAoaW9jdGwodjRsZmQsICZWSURJT0MtRVhQQlVGOywgJmFtcDtleHBidWYpID09IC0xKSB7CisJCQlwZXJyb3IoIlZJRElPQ19FWFBCVUYiKTsKKwkJCXdoaWxlIChpKQorCQkJCWNsb3NlKGRtYWZkWy0taV0pOworCQkJcmV0dXJuIC0xOworCQl9CisJCWRtYWZkW2ldID0gZXhwYnVmLmZkOworCX0KKworCXJldHVybiAwOworfQorICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICA8L2V4YW1wbGU+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItZXhwb3J0YnVmZmVyIj4KKyAgICAgIDx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9leHBvcnRidWZmZXI8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VHlwZSBvZiB0aGUgYnVmZmVyLCBzYW1lIGFzICZ2NGwyLWZvcm1hdDsKKzxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gb3IgJnY0bDItcmVxdWVzdGJ1ZmZlcnM7Cis8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+LCBzZXQgYnkgdGhlIGFwcGxpY2F0aW9uLiBTZWUgPHhyZWYKK2xpbmtlbmQ9InY0bDItYnVmLXR5cGUiIC8+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5pbmRleDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk51bWJlciBvZiB0aGUgYnVmZmVyLCBzZXQgYnkgdGhlIGFwcGxpY2F0aW9uLiBUaGlzIGZpZWxkIGlzCitvbmx5IHVzZWQgZm9yIDxsaW5rIGxpbmtlbmQ9Im1tYXAiPm1lbW9yeSBtYXBwaW5nPC9saW5rPiBJL08gYW5kIGNhbiByYW5nZSBmcm9tCit6ZXJvIHRvIHRoZSBudW1iZXIgb2YgYnVmZmVycyBhbGxvY2F0ZWQgd2l0aCB0aGUgJlZJRElPQy1SRVFCVUZTOyBhbmQvb3IKKyZWSURJT0MtQ1JFQVRFLUJVRlM7IGlvY3Rscy4gPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5wbGFuZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkluZGV4IG9mIHRoZSBwbGFuZSB0byBiZSBleHBvcnRlZCB3aGVuIHVzaW5nIHRoZQorbXVsdGktcGxhbmFyIEFQSS4gT3RoZXJ3aXNlIHRoaXMgdmFsdWUgbXVzdCBiZSBzZXQgdG8gemVyby4gPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5mbGFnczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkZsYWdzIGZvciB0aGUgbmV3bHkgY3JlYXRlZCBmaWxlLCBjdXJyZW50bHkgb25seQorPGNvbnN0YW50Pk9fQ0xPRVhFQzwvY29uc3RhbnQ+LCA8Y29uc3RhbnQ+T19SRE9OTFk8L2NvbnN0YW50PiwgPGNvbnN0YW50Pk9fV1JPTkxZPC9jb25zdGFudD4sCithbmQgPGNvbnN0YW50Pk9fUkRXUjwvY29uc3RhbnQ+IGFyZSBzdXBwb3J0ZWQsIHJlZmVyIHRvIHRoZSBtYW51YWwKK29mIG9wZW4oKSBmb3IgbW9yZSBkZXRhaWxzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3MzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZmQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgRE1BQlVGIGZpbGUgZGVzY3JpcHRvciBhc3NvY2lhdGVkIHdpdGggYSBidWZmZXIuIFNldCBieQorCQl0aGUgZHJpdmVyLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cmVzZXJ2ZWRbMTFdPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+UmVzZXJ2ZWQgZmllbGQgZm9yIGZ1dHVyZSB1c2UuIERyaXZlcnMgYW5kIGFwcGxpY2F0aW9ucyBtdXN0CitzZXQgdGhlIGFycmF5IHRvIHplcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FSU5WQUw8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+QSBxdWV1ZSBpcyBub3QgaW4gTU1BUCBtb2RlIG9yIERNQUJVRiBleHBvcnRpbmcgaXMgbm90CitzdXBwb3J0ZWQgb3IgPHN0cnVjdGZpZWxkPmZsYWdzPC9zdHJ1Y3RmaWVsZD4gb3IgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPgorb3IgPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4gb3IgPHN0cnVjdGZpZWxkPnBsYW5lPC9zdHJ1Y3RmaWVsZD4gZmllbGRzCithcmUgaW52YWxpZC48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1hdWRpby54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLWF1ZGlvLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2JiOWIzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1hdWRpby54bWwKQEAgLTAsMCArMSwxNzIgQEAKKzxyZWZlbnRyeSBpZD0idmlkaW9jLWctYXVkaW8iPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBWSURJT0NfR19BVURJTywgVklESU9DX1NfQVVESU88L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPlZJRElPQ19HX0FVRElPPC9yZWZuYW1lPgorICAgIDxyZWZuYW1lPlZJRElPQ19TX0FVRElPPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPlF1ZXJ5IG9yIHNlbGVjdCB0aGUgY3VycmVudCBhdWRpbyBpbnB1dCBhbmQgaXRzCithdHRyaWJ1dGVzPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCB2NGwyX2F1ZGlvICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmNvbnN0IHN0cnVjdCB2NGwyX2F1ZGlvICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfR19BVURJTywgVklESU9DX1NfQVVESU88L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPlRvIHF1ZXJ5IHRoZSBjdXJyZW50IGF1ZGlvIGlucHV0IGFwcGxpY2F0aW9ucyB6ZXJvIG91dCB0aGUKKzxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+IGFycmF5IG9mIGEgJnY0bDItYXVkaW87CithbmQgY2FsbCB0aGUgPGNvbnN0YW50PlZJRElPQ19HX0FVRElPPC9jb25zdGFudD4gaW9jdGwgd2l0aCBhIHBvaW50ZXIKK3RvIHRoaXMgc3RydWN0dXJlLiBEcml2ZXJzIGZpbGwgdGhlIHJlc3Qgb2YgdGhlIHN0cnVjdHVyZSBvciByZXR1cm4gYW4KKyZFSU5WQUw7IHdoZW4gdGhlIGRldmljZSBoYXMgbm8gYXVkaW8gaW5wdXRzLCBvciBub25lIHdoaWNoIGNvbWJpbmUKK3dpdGggdGhlIGN1cnJlbnQgdmlkZW8gaW5wdXQuPC9wYXJhPgorCisgICAgPHBhcmE+QXVkaW8gaW5wdXRzIGhhdmUgb25lIHdyaXRhYmxlIHByb3BlcnR5LCB0aGUgYXVkaW8gbW9kZS4gVG8KK3NlbGVjdCB0aGUgY3VycmVudCBhdWRpbyBpbnB1dCA8ZW1waGFzaXM+YW5kPC9lbXBoYXNpcz4gY2hhbmdlIHRoZQorYXVkaW8gbW9kZSwgYXBwbGljYXRpb25zIGluaXRpYWxpemUgdGhlCis8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPiBhbmQgPHN0cnVjdGZpZWxkPm1vZGU8L3N0cnVjdGZpZWxkPgorZmllbGRzLCBhbmQgdGhlCis8c3RydWN0ZmllbGQ+cmVzZXJ2ZWQ8L3N0cnVjdGZpZWxkPiBhcnJheSBvZiBhCis8c3RydWN0bmFtZT52NGwyX2F1ZGlvPC9zdHJ1Y3RuYW1lPiBzdHJ1Y3R1cmUgYW5kIGNhbGwgdGhlCis8Y29uc3RhbnQ+VklESU9DX1NfQVVESU88L2NvbnN0YW50PiBpb2N0bC4gRHJpdmVycyBtYXkgc3dpdGNoIHRvIGEKK2RpZmZlcmVudCBhdWRpbyBtb2RlIGlmIHRoZSByZXF1ZXN0IGNhbm5vdCBiZSBzYXRpc2ZpZWQuIEhvd2V2ZXIsIHRoaXMKK2lzIGEgd3JpdGUtb25seSBpb2N0bCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSBhY3R1YWwgbmV3IGF1ZGlvCittb2RlLjwvcGFyYT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1hdWRpbyI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfYXVkaW88L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5pbmRleDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PklkZW50aWZpZXMgdGhlIGF1ZGlvIGlucHV0LCBzZXQgYnkgdGhlCitkcml2ZXIgb3IgYXBwbGljYXRpb24uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTg8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm5hbWU8L3N0cnVjdGZpZWxkPlszMl08L2VudHJ5PgorCSAgICA8ZW50cnk+TmFtZSBvZiB0aGUgYXVkaW8gaW5wdXQsIGEgTlVMLXRlcm1pbmF0ZWQgQVNDSUkKK3N0cmluZywgZm9yIGV4YW1wbGU6ICJMaW5lIEluIi4gVGhpcyBpbmZvcm1hdGlvbiBpcyBpbnRlbmRlZCBmb3IgdGhlCit1c2VyLCBwcmVmZXJhYmx5IHRoZSBjb25uZWN0b3IgbGFiZWwgb24gdGhlIGRldmljZSBpdHNlbGYuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXR5PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+QXVkaW8gY2FwYWJpbGl0eSBmbGFncywgc2VlIDx4cmVmCisJCWxpbmtlbmQ9ImF1ZGlvLWNhcGFiaWxpdHkiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+bW9kZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkF1ZGlvIG1vZGUgZmxhZ3Mgc2V0IGJ5IGRyaXZlcnMgYW5kIGFwcGxpY2F0aW9ucyAob24KKwkgICAgPGNvbnN0YW50PlZJRElPQ19TX0FVRElPPC9jb25zdGFudD4gaW9jdGwpLCBzZWUgPHhyZWYgbGlua2VuZD0iYXVkaW8tbW9kZSIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+WzJdPC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlc2VydmVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucy4gRHJpdmVycyBhbmQKK2FwcGxpY2F0aW9ucyBtdXN0IHNldCB0aGUgYXJyYXkgdG8gemVyby48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9ImF1ZGlvLWNhcGFiaWxpdHkiPgorICAgICAgPHRpdGxlPkF1ZGlvIENhcGFiaWxpdHkgRmxhZ3M8L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3MtZGVmOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQVVEQ0FQX1NURVJFTzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMDE8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBpcyBhIHN0ZXJlbyBpbnB1dC4gVGhlIGZsYWcgaXMgaW50ZW5kZWQgdG8KK2F1dG9tYXRpY2FsbHkgZGlzYWJsZSBzdGVyZW8gcmVjb3JkaW5nIGV0Yy4gd2hlbiB0aGUgc2lnbmFsIGlzIGFsd2F5cworbW9uYXVyYWwuIFRoZSBBUEkgcHJvdmlkZXMgbm8gbWVhbnMgdG8gZGV0ZWN0IGlmIHN0ZXJlbyBpcworPGVtcGhhc2lzPnJlY2VpdmVkPC9lbXBoYXNpcz4sIHVubGVzcyB0aGUgYXVkaW8gaW5wdXQgYmVsb25ncyB0byBhCit0dW5lci48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQVVEQ0FQX0FWTDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMDI8L2VudHJ5PgorCSAgICA8ZW50cnk+QXV0b21hdGljIFZvbHVtZSBMZXZlbCBtb2RlIGlzIHN1cHBvcnRlZC48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9ImF1ZGlvLW1vZGUiPgorICAgICAgPHRpdGxlPkF1ZGlvIE1vZGUgRmxhZ3M8L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3MtZGVmOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQVVETU9ERV9BVkw8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDAxPC9lbnRyeT4KKwkgICAgPGVudHJ5PkFWTCBtb2RlIGlzIG9uLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPk5vIGF1ZGlvIGlucHV0cyBjb21iaW5lIHdpdGggdGhlIGN1cnJlbnQgdmlkZW8gaW5wdXQsCitvciB0aGUgbnVtYmVyIG9mIHRoZSBzZWxlY3RlZCBhdWRpbyBpbnB1dCBpcyBvdXQgb2YgYm91bmRzIG9yIGl0IGRvZXMKK25vdCBjb21iaW5lLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1hdWRpb291dC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLWF1ZGlvb3V0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDBhMjcwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1hdWRpb291dC54bWwKQEAgLTAsMCArMSwxMzggQEAKKzxyZWZlbnRyeSBpZD0idmlkaW9jLWctYXVkaW9vdXQiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBWSURJT0NfR19BVURPVVQsIFZJRElPQ19TX0FVRE9VVDwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX0dfQVVET1VUPC9yZWZuYW1lPgorICAgIDxyZWZuYW1lPlZJRElPQ19TX0FVRE9VVDwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5RdWVyeSBvciBzZWxlY3QgdGhlIGN1cnJlbnQgYXVkaW8gb3V0cHV0PC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCB2NGwyX2F1ZGlvb3V0ICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmNvbnN0IHN0cnVjdCB2NGwyX2F1ZGlvb3V0ICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfR19BVURPVVQsIFZJRElPQ19TX0FVRE9VVDwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgPHBhcmE+VG8gcXVlcnkgdGhlIGN1cnJlbnQgYXVkaW8gb3V0cHV0IGFwcGxpY2F0aW9ucyB6ZXJvIG91dCB0aGUKKzxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+IGFycmF5IG9mIGEgJnY0bDItYXVkaW9vdXQ7IGFuZAorY2FsbCB0aGUgPGNvbnN0YW50PlZJRElPQ19HX0FVRE9VVDwvY29uc3RhbnQ+IGlvY3RsIHdpdGggYSBwb2ludGVyCit0byB0aGlzIHN0cnVjdHVyZS4gRHJpdmVycyBmaWxsIHRoZSByZXN0IG9mIHRoZSBzdHJ1Y3R1cmUgb3IgcmV0dXJuIGFuCismRUlOVkFMOyB3aGVuIHRoZSBkZXZpY2UgaGFzIG5vIGF1ZGlvIGlucHV0cywgb3Igbm9uZSB3aGljaCBjb21iaW5lCit3aXRoIHRoZSBjdXJyZW50IHZpZGVvIG91dHB1dC48L3BhcmE+CisKKyAgICA8cGFyYT5BdWRpbyBvdXRwdXRzIGhhdmUgbm8gd3JpdGFibGUgcHJvcGVydGllcy4gTmV2ZXJ0aGVsZXNzLCB0bworc2VsZWN0IHRoZSBjdXJyZW50IGF1ZGlvIG91dHB1dCBhcHBsaWNhdGlvbnMgY2FuIGluaXRpYWxpemUgdGhlCis8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPiBmaWVsZCBhbmQKKzxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+IGFycmF5ICh3aGljaCBpbiB0aGUgZnV0dXJlIG1heQorY29udGFpbiB3cml0YWJsZSBwcm9wZXJ0aWVzKSBvZiBhCis8c3RydWN0bmFtZT52NGwyX2F1ZGlvb3V0PC9zdHJ1Y3RuYW1lPiBzdHJ1Y3R1cmUgYW5kIGNhbGwgdGhlCis8Y29uc3RhbnQ+VklESU9DX1NfQVVET1VUPC9jb25zdGFudD4gaW9jdGwuIERyaXZlcnMgc3dpdGNoIHRvIHRoZQorcmVxdWVzdGVkIG91dHB1dCBvciByZXR1cm4gdGhlICZFSU5WQUw7IHdoZW4gdGhlIGluZGV4IGlzIG91dCBvZgorYm91bmRzLiBUaGlzIGlzIGEgd3JpdGUtb25seSBpb2N0bCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSBjdXJyZW50CithdWRpbyBvdXRwdXQgYXR0cmlidXRlcyBhcyA8Y29uc3RhbnQ+VklESU9DX0dfQVVET1VUPC9jb25zdGFudD4KK2RvZXMuPC9wYXJhPgorCisgICAgPHBhcmE+Tm90ZSBjb25uZWN0b3JzIG9uIGEgVFYgY2FyZCB0byBsb29wIGJhY2sgdGhlIHJlY2VpdmVkIGF1ZGlvCitzaWduYWwgdG8gYSBzb3VuZCBjYXJkIGFyZSBub3QgYXVkaW8gb3V0cHV0cyBpbiB0aGlzIHNlbnNlLjwvcGFyYT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1hdWRpb291dCI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfYXVkaW9vdXQ8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5pbmRleDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PklkZW50aWZpZXMgdGhlIGF1ZGlvIG91dHB1dCwgc2V0IGJ5IHRoZQorZHJpdmVyIG9yIGFwcGxpY2F0aW9uLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3U4PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5uYW1lPC9zdHJ1Y3RmaWVsZD5bMzJdPC9lbnRyeT4KKwkgICAgPGVudHJ5Pk5hbWUgb2YgdGhlIGF1ZGlvIG91dHB1dCwgYSBOVUwtdGVybWluYXRlZCBBU0NJSQorc3RyaW5nLCBmb3IgZXhhbXBsZTogIkxpbmUgT3V0Ii4gVGhpcyBpbmZvcm1hdGlvbiBpcyBpbnRlbmRlZCBmb3IgdGhlCit1c2VyLCBwcmVmZXJhYmx5IHRoZSBjb25uZWN0b3IgbGFiZWwgb24gdGhlIGRldmljZSBpdHNlbGYuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXR5PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+QXVkaW8gY2FwYWJpbGl0eSBmbGFncywgbm9uZSBkZWZpbmVkIHlldC4gRHJpdmVycworbXVzdCBzZXQgdGhpcyBmaWVsZCB0byB6ZXJvLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+bW9kZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkF1ZGlvIG1vZGUsIG5vbmUgZGVmaW5lZCB5ZXQuIERyaXZlcnMgYW5kCithcHBsaWNhdGlvbnMgKG9uIDxjb25zdGFudD5WSURJT0NfU19BVURPVVQ8L2NvbnN0YW50PikgbXVzdCBzZXQgdGhpcworZmllbGQgdG8gemVyby48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD5bMl08L2VudHJ5PgorCSAgICA8ZW50cnk+UmVzZXJ2ZWQgZm9yIGZ1dHVyZSBleHRlbnNpb25zLiBEcml2ZXJzIGFuZAorYXBwbGljYXRpb25zIG11c3Qgc2V0IHRoZSBhcnJheSB0byB6ZXJvLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPk5vIGF1ZGlvIG91dHB1dHMgY29tYmluZSB3aXRoIHRoZSBjdXJyZW50IHZpZGVvCitvdXRwdXQsIG9yIHRoZSBudW1iZXIgb2YgdGhlIHNlbGVjdGVkIGF1ZGlvIG91dHB1dCBpcyBvdXQgb2YgYm91bmRzIG9yCitpdCBkb2VzIG5vdCBjb21iaW5lLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1jcm9wLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWctY3JvcC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZjNGVmYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWctY3JvcC54bWwKQEAgLTAsMCArMSwxMjkgQEAKKzxyZWZlbnRyeSBpZD0idmlkaW9jLWctY3JvcCI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19HX0NST1AsIFZJRElPQ19TX0NST1A8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPlZJRElPQ19HX0NST1A8L3JlZm5hbWU+CisgICAgPHJlZm5hbWU+VklESU9DX1NfQ1JPUDwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5HZXQgb3Igc2V0IHRoZSBjdXJyZW50IGNyb3BwaW5nIHJlY3RhbmdsZTwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zdHJ1Y3QgdjRsMl9jcm9wICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmNvbnN0IHN0cnVjdCB2NGwyX2Nyb3AgKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19HX0NST1AsIFZJRElPQ19TX0NST1A8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPlRvIHF1ZXJ5IHRoZSBjcm9wcGluZyByZWN0YW5nbGUgc2l6ZSBhbmQgcG9zaXRpb24KK2FwcGxpY2F0aW9ucyBzZXQgdGhlIDxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gZmllbGQgb2YgYQorPHN0cnVjdG5hbWU+djRsMl9jcm9wPC9zdHJ1Y3RuYW1lPiBzdHJ1Y3R1cmUgdG8gdGhlIHJlc3BlY3RpdmUgYnVmZmVyCisoc3RyZWFtKSB0eXBlIGFuZCBjYWxsIHRoZSA8Y29uc3RhbnQ+VklESU9DX0dfQ1JPUDwvY29uc3RhbnQ+IGlvY3RsCit3aXRoIGEgcG9pbnRlciB0byB0aGlzIHN0cnVjdHVyZS4gVGhlIGRyaXZlciBmaWxscyB0aGUgcmVzdCBvZiB0aGUKK3N0cnVjdHVyZSBvciByZXR1cm5zIHRoZSAmRUlOVkFMOyBpZiBjcm9wcGluZyBpcyBub3Qgc3VwcG9ydGVkLjwvcGFyYT4KKworICAgIDxwYXJhPlRvIGNoYW5nZSB0aGUgY3JvcHBpbmcgcmVjdGFuZ2xlIGFwcGxpY2F0aW9ucyBpbml0aWFsaXplIHRoZQorPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBhbmQgJnY0bDItcmVjdDsgc3Vic3RydWN0dXJlIG5hbWVkCis8c3RydWN0ZmllbGQ+Yzwvc3RydWN0ZmllbGQ+IG9mIGEgdjRsMl9jcm9wIHN0cnVjdHVyZSBhbmQgY2FsbCB0aGUKKzxjb25zdGFudD5WSURJT0NfU19DUk9QPC9jb25zdGFudD4gaW9jdGwgd2l0aCBhIHBvaW50ZXIgdG8gdGhpcworc3RydWN0dXJlLjwvcGFyYT4KKworPHBhcmE+RG8gbm90IHVzZSB0aGUgbXVsdGlwbGFuYXIgYnVmZmVyIHR5cGVzLiAgVXNlIDxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkU8L2NvbnN0YW50PgoraW5zdGVhZCBvZiA8Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFX01QTEFORTwvY29uc3RhbnQ+CithbmQgdXNlIDxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVDwvY29uc3RhbnQ+IGluc3RlYWQgb2YKKzxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVF9NUExBTkU8L2NvbnN0YW50Pi48L3BhcmE+CisKKyAgICA8cGFyYT5UaGUgZHJpdmVyIGZpcnN0IGFkanVzdHMgdGhlIHJlcXVlc3RlZCBkaW1lbnNpb25zIGFnYWluc3QKK2hhcmR3YXJlIGxpbWl0cywgJmllOyB0aGUgYm91bmRzIGdpdmVuIGJ5IHRoZSBjYXB0dXJlL291dHB1dCB3aW5kb3csCithbmQgaXQgcm91bmRzIHRvIHRoZSBjbG9zZXN0IHBvc3NpYmxlIHZhbHVlcyBvZiBob3Jpem9udGFsIGFuZAordmVydGljYWwgb2Zmc2V0LCB3aWR0aCBhbmQgaGVpZ2h0LiBJbiBwYXJ0aWN1bGFyIHRoZSBkcml2ZXIgbXVzdCByb3VuZAordGhlIHZlcnRpY2FsIG9mZnNldCBvZiB0aGUgY3JvcHBpbmcgcmVjdGFuZ2xlIHRvIGZyYW1lIGxpbmVzIG1vZHVsbwordHdvLCBzdWNoIHRoYXQgdGhlIGZpZWxkIG9yZGVyIGNhbm5vdCBiZSBjb25mdXNlZC48L3BhcmE+CisKKyAgICA8cGFyYT5TZWNvbmQgdGhlIGRyaXZlciBhZGp1c3RzIHRoZSBpbWFnZSBzaXplICh0aGUgb3Bwb3NpdGUKK3JlY3RhbmdsZSBvZiB0aGUgc2NhbGluZyBwcm9jZXNzLCBzb3VyY2Ugb3IgdGFyZ2V0IGRlcGVuZGluZyBvbiB0aGUKK2RhdGEgZGlyZWN0aW9uKSB0byB0aGUgY2xvc2VzdCBzaXplIHBvc3NpYmxlIHdoaWxlIG1haW50YWluaW5nIHRoZQorY3VycmVudCBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBzY2FsaW5nIGZhY3Rvci48L3BhcmE+CisKKyAgICA8cGFyYT5GaW5hbGx5IHRoZSBkcml2ZXIgcHJvZ3JhbXMgdGhlIGhhcmR3YXJlIHdpdGggdGhlIGFjdHVhbAorY3JvcHBpbmcgYW5kIGltYWdlIHBhcmFtZXRlcnMuIDxjb25zdGFudD5WSURJT0NfU19DUk9QPC9jb25zdGFudD4gaXMgYQord3JpdGUtb25seSBpb2N0bCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSBhY3R1YWwgcGFyYW1ldGVycy4gVG8gcXVlcnkKK3RoZW0gYXBwbGljYXRpb25zIG11c3QgY2FsbCA8Y29uc3RhbnQ+VklESU9DX0dfQ1JPUDwvY29uc3RhbnQ+IGFuZAorJlZJRElPQy1HLUZNVDsuIFdoZW4gdGhlIHBhcmFtZXRlcnMgYXJlIHVuc3VpdGFibGUgdGhlIGFwcGxpY2F0aW9uIG1heQorbW9kaWZ5IHRoZSBjcm9wcGluZyBvciBpbWFnZSBwYXJhbWV0ZXJzIGFuZCByZXBlYXQgdGhlIGN5Y2xlIHVudGlsCitzYXRpc2ZhY3RvcnkgcGFyYW1ldGVycyBoYXZlIGJlZW4gbmVnb3RpYXRlZC48L3BhcmE+CisKKyAgICA8cGFyYT5XaGVuIGNyb3BwaW5nIGlzIG5vdCBzdXBwb3J0ZWQgdGhlbiBubyBwYXJhbWV0ZXJzIGFyZQorY2hhbmdlZCBhbmQgPGNvbnN0YW50PlZJRElPQ19TX0NST1A8L2NvbnN0YW50PiByZXR1cm5zIHRoZQorJkVJTlZBTDsuPC9wYXJhPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLWNyb3AiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2Nyb3A8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VHlwZSBvZiB0aGUgZGF0YSBzdHJlYW0sIHNldCBieSB0aGUgYXBwbGljYXRpb24uCitPbmx5IHRoZXNlIHR5cGVzIGFyZSB2YWxpZCBoZXJlOiA8Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVQ8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZJREVPX09WRVJMQVk8L2NvbnN0YW50Pi4gU2VlIDx4cmVmIGxpbmtlbmQ9InY0bDItYnVmLXR5cGUiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT4mdjRsMi1yZWN0OzwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+Yzwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkNyb3BwaW5nIHJlY3RhbmdsZS4gVGhlIHNhbWUgY28tb3JkaW5hdGUgc3lzdGVtIGFzCitmb3IgJnY0bDItY3JvcGNhcDsgPHN0cnVjdGZpZWxkPmJvdW5kczwvc3RydWN0ZmllbGQ+IGlzIHVzZWQuPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICAmcmV0dXJuLXZhbHVlOworICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWctY3RybC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLWN0cmwueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlMjgyMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLWN0cmwueG1sCkBAIC0wLDAgKzEsMTMzIEBACis8cmVmZW50cnkgaWQ9InZpZGlvYy1nLWN0cmwiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBWSURJT0NfR19DVFJMLCBWSURJT0NfU19DVFJMPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5WSURJT0NfR19DVFJMPC9yZWZuYW1lPgorICAgIDxyZWZuYW1lPlZJRElPQ19TX0NUUkw8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+R2V0IG9yIHNldCB0aGUgdmFsdWUgb2YgYSBjb250cm9sPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCB2NGwyX2NvbnRyb2wKKyo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfR19DVFJMLCBWSURJT0NfU19DVFJMPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5UbyBnZXQgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSBjb250cm9sIGFwcGxpY2F0aW9ucworaW5pdGlhbGl6ZSB0aGUgPHN0cnVjdGZpZWxkPmlkPC9zdHJ1Y3RmaWVsZD4gZmllbGQgb2YgYSBzdHJ1Y3QKKzxzdHJ1Y3RuYW1lPnY0bDJfY29udHJvbDwvc3RydWN0bmFtZT4gYW5kIGNhbGwgdGhlCis8Y29uc3RhbnQ+VklESU9DX0dfQ1RSTDwvY29uc3RhbnQ+IGlvY3RsIHdpdGggYSBwb2ludGVyIHRvIHRoaXMKK3N0cnVjdHVyZS4gVG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiBhIGNvbnRyb2wgYXBwbGljYXRpb25zIGluaXRpYWxpemUKK3RoZSA8c3RydWN0ZmllbGQ+aWQ8L3N0cnVjdGZpZWxkPiBhbmQgPHN0cnVjdGZpZWxkPnZhbHVlPC9zdHJ1Y3RmaWVsZD4KK2ZpZWxkcyBvZiBhIHN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2NvbnRyb2w8L3N0cnVjdG5hbWU+IGFuZCBjYWxsIHRoZQorPGNvbnN0YW50PlZJRElPQ19TX0NUUkw8L2NvbnN0YW50PiBpb2N0bC48L3BhcmE+CisKKyAgICA8cGFyYT5XaGVuIHRoZSA8c3RydWN0ZmllbGQ+aWQ8L3N0cnVjdGZpZWxkPiBpcyBpbnZhbGlkIGRyaXZlcnMKK3JldHVybiBhbiAmRUlOVkFMOy4gV2hlbiB0aGUgPHN0cnVjdGZpZWxkPnZhbHVlPC9zdHJ1Y3RmaWVsZD4gaXMgb3V0CitvZiBib3VuZHMgZHJpdmVycyBjYW4gY2hvb3NlIHRvIHRha2UgdGhlIGNsb3Nlc3QgdmFsaWQgdmFsdWUgb3IgcmV0dXJuCithbiAmRVJBTkdFOywgd2hhdGV2ZXIgc2VlbXMgbW9yZSBhcHByb3ByaWF0ZS4gSG93ZXZlciwKKzxjb25zdGFudD5WSURJT0NfU19DVFJMPC9jb25zdGFudD4gaXMgYSB3cml0ZS1vbmx5IGlvY3RsLCBpdCBkb2VzIG5vdAorcmV0dXJuIHRoZSBhY3R1YWwgbmV3IHZhbHVlLiBJZiB0aGUgPHN0cnVjdGZpZWxkPnZhbHVlPC9zdHJ1Y3RmaWVsZD4KK2lzIGluYXBwcm9wcmlhdGUgZm9yIHRoZSBjb250cm9sIChlLmcuIGlmIGl0IHJlZmVycyB0byBhbiB1bnN1cHBvcnRlZAorbWVudSBpbmRleCBvZiBhIG1lbnUgY29udHJvbCksIHRoZW4gJkVJTlZBTDsgaXMgcmV0dXJuZWQgYXMgd2VsbC48L3BhcmE+CisKKyAgICA8cGFyYT5UaGVzZSBpb2N0bHMgd29yayBvbmx5IHdpdGggdXNlciBjb250cm9scy4gRm9yIG90aGVyCitjb250cm9sIGNsYXNzZXMgdGhlICZWSURJT0MtRy1FWFQtQ1RSTFM7LCAmVklESU9DLVMtRVhULUNUUkxTOyBvcgorJlZJRElPQy1UUlktRVhULUNUUkxTOyBtdXN0IGJlIHVzZWQuPC9wYXJhPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLWNvbnRyb2wiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2NvbnRyb2w8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5pZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PklkZW50aWZpZXMgdGhlIGNvbnRyb2wsIHNldCBieSB0aGUKK2FwcGxpY2F0aW9uLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3MzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dmFsdWU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5OZXcgdmFsdWUgb3IgY3VycmVudCB2YWx1ZS48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgJnY0bDItY29udHJvbDsgPHN0cnVjdGZpZWxkPmlkPC9zdHJ1Y3RmaWVsZD4gaXMKK2ludmFsaWQgb3IgdGhlIDxzdHJ1Y3RmaWVsZD52YWx1ZTwvc3RydWN0ZmllbGQ+IGlzIGluYXBwcm9wcmlhdGUgZm9yCit0aGUgZ2l2ZW4gY29udHJvbCAoaS5lLiBpZiBhIG1lbnUgaXRlbSBpcyBzZWxlY3RlZCB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQKK2J5IHRoZSBkcml2ZXIgYWNjb3JkaW5nIHRvICZWSURJT0MtUVVFUllNRU5VOykuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FUkFOR0U8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlICZ2NGwyLWNvbnRyb2w7IDxzdHJ1Y3RmaWVsZD52YWx1ZTwvc3RydWN0ZmllbGQ+CitpcyBvdXQgb2YgYm91bmRzLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUJVU1k8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIGNvbnRyb2wgaXMgdGVtcG9yYXJpbHkgbm90IGNoYW5nZWFibGUsIHBvc3NpYmx5CitiZWNhdXNlIGFub3RoZXIgYXBwbGljYXRpb25zIHRvb2sgb3ZlciBjb250cm9sIG9mIHRoZSBkZXZpY2UgZnVuY3Rpb24KK3RoaXMgY29udHJvbCBiZWxvbmdzIHRvLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUFDQ0VTPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkF0dGVtcHQgdG8gc2V0IGEgcmVhZC1vbmx5IGNvbnRyb2wgb3IgdG8gZ2V0IGEKKwkgIHdyaXRlLW9ubHkgY29udHJvbC48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWctZHYtdGltaW5ncy54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLWR2LXRpbWluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2OTUyZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLWR2LXRpbWluZ3MueG1sCkBAIC0wLDAgKzEsMzQzIEBACis8cmVmZW50cnkgaWQ9InZpZGlvYy1nLWR2LXRpbWluZ3MiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBWSURJT0NfR19EVl9USU1JTkdTLCBWSURJT0NfU19EVl9USU1JTkdTPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5WSURJT0NfR19EVl9USU1JTkdTPC9yZWZuYW1lPgorICAgIDxyZWZuYW1lPlZJRElPQ19TX0RWX1RJTUlOR1M8L3JlZm5hbWU+CisgICAgPHJlZm5hbWU+VklESU9DX1NVQkRFVl9HX0RWX1RJTUlOR1M8L3JlZm5hbWU+CisgICAgPHJlZm5hbWU+VklESU9DX1NVQkRFVl9TX0RWX1RJTUlOR1M8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+R2V0IG9yIHNldCBEViB0aW1pbmdzIGZvciBpbnB1dCBvciBvdXRwdXQ8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c3RydWN0IHY0bDJfZHZfdGltaW5ncyAqPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPiZmZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VklESU9DX0dfRFZfVElNSU5HUywgVklESU9DX1NfRFZfVElNSU5HUywgVklESU9DX1NVQkRFVl9HX0RWX1RJTUlOR1MsIFZJRElPQ19TVUJERVZfU19EVl9USU1JTkdTPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisgICAgPHBhcmE+VG8gc2V0IERWIHRpbWluZ3MgZm9yIHRoZSBpbnB1dCBvciBvdXRwdXQsIGFwcGxpY2F0aW9ucyB1c2UgdGhlCis8Y29uc3RhbnQ+VklESU9DX1NfRFZfVElNSU5HUzwvY29uc3RhbnQ+IGlvY3RsIGFuZCB0byBnZXQgdGhlIGN1cnJlbnQgdGltaW5ncywKK2FwcGxpY2F0aW9ucyB1c2UgdGhlIDxjb25zdGFudD5WSURJT0NfR19EVl9USU1JTkdTPC9jb25zdGFudD4gaW9jdGwuIFRoZSBkZXRhaWxlZCB0aW1pbmcKK2luZm9ybWF0aW9uIGlzIGZpbGxlZCBpbiB1c2luZyB0aGUgc3RydWN0dXJlICZ2NGwyLWR2LXRpbWluZ3M7LiBUaGVzZSBpb2N0bHMgdGFrZQorYSBwb2ludGVyIHRvIHRoZSAmdjRsMi1kdi10aW1pbmdzOyBzdHJ1Y3R1cmUgYXMgYXJndW1lbnQuIElmIHRoZSBpb2N0bCBpcyBub3Qgc3VwcG9ydGVkCitvciB0aGUgdGltaW5nIHZhbHVlcyBhcmUgbm90IGNvcnJlY3QsIHRoZSBkcml2ZXIgcmV0dXJucyAmRUlOVkFMOy48L3BhcmE+Cis8cGFyYT5UaGUgPGZpbGVuYW1lPmxpbnV4L3Y0bDItZHYtdGltaW5ncy5oPC9maWxlbmFtZT4gaGVhZGVyIGNhbiBiZSB1c2VkIHRvIGdldCB0aGUKK3RpbWluZ3Mgb2YgdGhlIGZvcm1hdHMgaW4gdGhlIDx4cmVmIGxpbmtlbmQ9ImNlYTg2MSIgLz4gYW5kIDx4cmVmIGxpbmtlbmQ9InZlc2FkbXQiIC8+CitzdGFuZGFyZHMuIElmIHRoZSBjdXJyZW50IGlucHV0IG9yIG91dHB1dCBkb2VzIG5vdCBzdXBwb3J0IERWIHRpbWluZ3MgKGUuZy4gaWYKKyZWSURJT0MtRU5VTUlOUFVUOyBkb2VzIG5vdCBzZXQgdGhlIDxjb25zdGFudD5WNEwyX0lOX0NBUF9EVl9USU1JTkdTPC9jb25zdGFudD4gZmxhZyksIHRoZW4KKyZFTk9EQVRBOyBpcyByZXR1cm5lZC48L3BhcmE+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGlzIGlvY3RsIGlzIG5vdCBzdXBwb3J0ZWQsIG9yIHRoZQorPGNvbnN0YW50PlZJRElPQ19TX0RWX1RJTUlOR1M8L2NvbnN0YW50PiBwYXJhbWV0ZXIgd2FzIHVuc3VpdGFibGUuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FTk9EQVRBPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkRpZ2l0YWwgdmlkZW8gdGltaW5ncyBhcmUgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBpbnB1dCBvciBvdXRwdXQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FQlVTWTwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgZGV2aWNlIGlzIGJ1c3kgYW5kIHRoZXJlZm9yZSBjYW4gbm90IGNoYW5nZSB0aGUgdGltaW5ncy48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLWJ0LXRpbWluZ3MiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2J0X3RpbWluZ3M8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD53aWR0aDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PldpZHRoIG9mIHRoZSBhY3RpdmUgdmlkZW8gaW4gcGl4ZWxzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+aGVpZ2h0PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+SGVpZ2h0IG9mIHRoZSBhY3RpdmUgdmlkZW8gZnJhbWUgaW4gbGluZXMuIFNvIGZvciBpbnRlcmxhY2VkIGZvcm1hdHMgdGhlCisJICAgIGhlaWdodCBvZiB0aGUgYWN0aXZlIHZpZGVvIGluIGVhY2ggZmllbGQgaXMgPHN0cnVjdGZpZWxkPmhlaWdodDwvc3RydWN0ZmllbGQ+LzIuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5pbnRlcmxhY2VkPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+UHJvZ3Jlc3NpdmUgKDApIG9yIGludGVybGFjZWQgKDEpPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5wb2xhcml0aWVzPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBpcyBhIGJpdCBtYXNrIHRoYXQgZGVmaW5lcyBwb2xhcml0aWVzIG9mIHN5bmMgc2lnbmFscy4KK2JpdCAwIChWNEwyX0RWX1ZTWU5DX1BPU19QT0wpIGlzIGZvciB2ZXJ0aWNhbCBzeW5jIHBvbGFyaXR5IGFuZCBiaXQgMSAoVjRMMl9EVl9IU1lOQ19QT1NfUE9MKSBpcyBmb3IgaG9yaXpvbnRhbCBzeW5jIHBvbGFyaXR5LiBJZiB0aGUgYml0IGlzIHNldAorKDEpIGl0IGlzIHBvc2l0aXZlIHBvbGFyaXR5IGFuZCBpZiBpcyBjbGVhcmVkICgwKSwgaXQgaXMgbmVnYXRpdmUgcG9sYXJpdHkuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTY0PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5waXhlbGNsb2NrPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+UGl4ZWwgY2xvY2sgaW4gSHouIEV4LiA3NC4yNU1Iei0+NzQyNTAwMDA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmhmcm9udHBvcmNoPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+SG9yaXpvbnRhbCBmcm9udCBwb3JjaCBpbiBwaXhlbHM8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmhzeW5jPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+SG9yaXpvbnRhbCBzeW5jIGxlbmd0aCBpbiBwaXhlbHM8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmhiYWNrcG9yY2g8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5Ib3Jpem9udGFsIGJhY2sgcG9yY2ggaW4gcGl4ZWxzPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD52ZnJvbnRwb3JjaDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlZlcnRpY2FsIGZyb250IHBvcmNoIGluIGxpbmVzLiBGb3IgaW50ZXJsYWNlZCBmb3JtYXRzIHRoaXMgcmVmZXJzIHRvIHRoZQorCSAgICBvZGQgZmllbGQgKGFrYSBmaWVsZCAxKS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnZzeW5jPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VmVydGljYWwgc3luYyBsZW5ndGggaW4gbGluZXMuIEZvciBpbnRlcmxhY2VkIGZvcm1hdHMgdGhpcyByZWZlcnMgdG8gdGhlCisJICAgIG9kZCBmaWVsZCAoYWthIGZpZWxkIDEpLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dmJhY2twb3JjaDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlZlcnRpY2FsIGJhY2sgcG9yY2ggaW4gbGluZXMuIEZvciBpbnRlcmxhY2VkIGZvcm1hdHMgdGhpcyByZWZlcnMgdG8gdGhlCisJICAgIG9kZCBmaWVsZCAoYWthIGZpZWxkIDEpLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+aWxfdmZyb250cG9yY2g8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5WZXJ0aWNhbCBmcm9udCBwb3JjaCBpbiBsaW5lcyBmb3IgdGhlIGV2ZW4gZmllbGQgKGFrYSBmaWVsZCAyKSBvZgorCSAgICBpbnRlcmxhY2VkIGZpZWxkIGZvcm1hdHMuIE11c3QgYmUgMCBmb3IgcHJvZ3Jlc3NpdmUgZm9ybWF0cy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmlsX3ZzeW5jPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VmVydGljYWwgc3luYyBsZW5ndGggaW4gbGluZXMgZm9yIHRoZSBldmVuIGZpZWxkIChha2EgZmllbGQgMikgb2YKKwkgICAgaW50ZXJsYWNlZCBmaWVsZCBmb3JtYXRzLiBNdXN0IGJlIDAgZm9yIHByb2dyZXNzaXZlIGZvcm1hdHMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5pbF92YmFja3BvcmNoPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VmVydGljYWwgYmFjayBwb3JjaCBpbiBsaW5lcyBmb3IgdGhlIGV2ZW4gZmllbGQgKGFrYSBmaWVsZCAyKSBvZgorCSAgICBpbnRlcmxhY2VkIGZpZWxkIGZvcm1hdHMuIE11c3QgYmUgMCBmb3IgcHJvZ3Jlc3NpdmUgZm9ybWF0cy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnN0YW5kYXJkczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSB2aWRlbyBzdGFuZGFyZChzKSB0aGlzIGZvcm1hdCBiZWxvbmdzIHRvLiBUaGlzIHdpbGwgYmUgZmlsbGVkIGluIGJ5CisJICAgIHRoZSBkcml2ZXIuIEFwcGxpY2F0aW9ucyBtdXN0IHNldCB0aGlzIHRvIDAuIFNlZSA8eHJlZiBsaW5rZW5kPSJkdi1idC1zdGFuZGFyZHMiLz4KKwkgICAgZm9yIGEgbGlzdCBvZiBzdGFuZGFyZHMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5mbGFnczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlNldmVyYWwgZmxhZ3MgZ2l2aW5nIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZvcm1hdC4KKwkgICAgU2VlIDx4cmVmIGxpbmtlbmQ9ImR2LWJ0LWZsYWdzIi8+IGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmbGFncy4KKwkgICAgPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLWR2LXRpbWluZ3MiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2R2X3RpbWluZ3M8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iNCI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlR5cGUgb2YgRFYgdGltaW5ncyBhcyBsaXN0ZWQgaW4gPHhyZWYgbGlua2VuZD0iZHYtdGltaW5nLXR5cGVzIi8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT51bmlvbjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT4mdjRsMi1idC10aW1pbmdzOzwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+YnQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UaW1pbmdzIGRlZmluZWQgYnkgQlQuNjU2LzExMjAgc3BlY2lmaWNhdGlvbnM8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+WzMyXTwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9ImR2LXRpbWluZy10eXBlcyI+CisgICAgICA8dGl0bGU+RFYgVGltaW5nIHR5cGVzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PlRpbWluZyB0eXBlPC9lbnRyeT4KKwkgICAgPGVudHJ5PnZhbHVlPC9lbnRyeT4KKwkgICAgPGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PlY0TDJfRFZfQlRfNjU2XzExMjA8L2VudHJ5PgorCSAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgIDxlbnRyeT5CVC42NTYvMTEyMCB0aW1pbmdzPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iZHYtYnQtc3RhbmRhcmRzIj4KKyAgICAgIDx0aXRsZT5EViBCVCBUaW1pbmcgc3RhbmRhcmRzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMiI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PlRpbWluZyBzdGFuZGFyZDwvZW50cnk+CisJICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PlY0TDJfRFZfQlRfU1REX0NFQTg2MTwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgdGltaW5ncyBmb2xsb3cgdGhlIENFQS04NjEgRGlnaXRhbCBUViBQcm9maWxlIHN0YW5kYXJkPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PlY0TDJfRFZfQlRfU1REX0RNVDwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgdGltaW5ncyBmb2xsb3cgdGhlIFZFU0EgRGlzY3JldGUgTW9uaXRvciBUaW1pbmdzIHN0YW5kYXJkPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PlY0TDJfRFZfQlRfU1REX0NWVDwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgdGltaW5ncyBmb2xsb3cgdGhlIFZFU0EgQ29vcmRpbmF0ZWQgVmlkZW8gVGltaW5ncyBzdGFuZGFyZDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5WNEwyX0RWX0JUX1NURF9HVEY8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIHRpbWluZ3MgZm9sbG93IHRoZSBWRVNBIEdlbmVyYWxpemVkIFRpbWluZ3MgRm9ybXVsYSBzdGFuZGFyZDwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9ImR2LWJ0LWZsYWdzIj4KKyAgICAgIDx0aXRsZT5EViBCVCBUaW1pbmcgZmxhZ3M8L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIyIj4KKwkmY3Mtc3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+RmxhZzwvZW50cnk+CisJICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PlY0TDJfRFZfRkxfUkVEVUNFRF9CTEFOS0lORzwvZW50cnk+CisJICAgIDxlbnRyeT5DVlQvR1RGIHNwZWNpZmljOiB0aGUgdGltaW5ncyB1c2UgcmVkdWNlZCBibGFua2luZyAoQ1ZUKSBvciB0aGUgJ1NlY29uZGFyeQorR1RGJyBjdXJ2ZSAoR1RGKS4gSW4gYm90aCBjYXNlcyB0aGUgaG9yaXpvbnRhbCBhbmQvb3IgdmVydGljYWwgYmxhbmtpbmcKK2ludGVydmFscyBhcmUgcmVkdWNlZCwgYWxsb3dpbmcgYSBoaWdoZXIgcmVzb2x1dGlvbiBvdmVyIHRoZSBzYW1lCitiYW5kd2lkdGguIFRoaXMgaXMgYSByZWFkLW9ubHkgZmxhZywgYXBwbGljYXRpb25zIG11c3Qgbm90IHNldCB0aGlzLgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+VjRMMl9EVl9GTF9DQU5fUkVEVUNFX0ZQUzwvZW50cnk+CisJICAgIDxlbnRyeT5DRUEtODYxIHNwZWNpZmljOiBzZXQgZm9yIENFQS04NjEgZm9ybWF0cyB3aXRoIGEgZnJhbWVyYXRlIHRoYXQgaXMgYSBtdWx0aXBsZQorb2Ygc2l4LiBUaGVzZSBmb3JtYXRzIGNhbiBiZSBvcHRpb25hbGx5IHBsYXllZCBhdCAxIC8gMS4wMDEgc3BlZWQgdG8KK2JlIGNvbXBhdGlibGUgd2l0aCA2MCBIeiBiYXNlZCBzdGFuZGFyZHMgc3VjaCBhcyBOVFNDIGFuZCBQQUwtTSB0aGF0IHVzZSBhIGZyYW1lcmF0ZSBvZgorMjkuOTcgZnJhbWVzIHBlciBzZWNvbmQuIElmIHRoZSB0cmFuc21pdHRlciBjYW4ndCBnZW5lcmF0ZSBzdWNoIGZyZXF1ZW5jaWVzLCB0aGVuIHRoZQorZmxhZyB3aWxsIGFsc28gYmUgY2xlYXJlZC4gVGhpcyBpcyBhIHJlYWQtb25seSBmbGFnLCBhcHBsaWNhdGlvbnMgbXVzdCBub3Qgc2V0IHRoaXMuCisJICAgIDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5WNEwyX0RWX0ZMX1JFRFVDRURfRlBTPC9lbnRyeT4KKwkgICAgPGVudHJ5PkNFQS04NjEgc3BlY2lmaWM6IG9ubHkgdmFsaWQgZm9yIHZpZGVvIHRyYW5zbWl0dGVycywgdGhlIGZsYWcgaXMgY2xlYXJlZAorYnkgcmVjZWl2ZXJzLiBJdCBpcyBhbHNvIG9ubHkgdmFsaWQgZm9yIGZvcm1hdHMgd2l0aCB0aGUgVjRMMl9EVl9GTF9DQU5fUkVEVUNFX0ZQUyBmbGFnCitzZXQsIGZvciBvdGhlciBmb3JtYXRzIHRoZSBmbGFnIHdpbGwgYmUgY2xlYXJlZCBieSB0aGUgZHJpdmVyLgorCitJZiB0aGUgYXBwbGljYXRpb24gc2V0cyB0aGlzIGZsYWcsIHRoZW4gdGhlIHBpeGVsY2xvY2sgdXNlZCB0byBzZXQgdXAgdGhlIHRyYW5zbWl0dGVyIGlzCitkaXZpZGVkIGJ5IDEuMDAxIHRvIG1ha2UgaXQgY29tcGF0aWJsZSB3aXRoIE5UU0MgZnJhbWVyYXRlcy4gSWYgdGhlIHRyYW5zbWl0dGVyCitjYW4ndCBnZW5lcmF0ZSBzdWNoIGZyZXF1ZW5jaWVzLCB0aGVuIHRoZSBmbGFnIHdpbGwgYWxzbyBiZSBjbGVhcmVkLgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+VjRMMl9EVl9GTF9IQUxGX0xJTkU8L2VudHJ5PgorCSAgICA8ZW50cnk+U3BlY2lmaWMgdG8gaW50ZXJsYWNlZCBmb3JtYXRzOiBpZiBzZXQsIHRoZW4gdGhlIHZlcnRpY2FsIGZyb250cG9yY2gKK29mIGZpZWxkIDEgKGFrYSB0aGUgb2RkIGZpZWxkKSBpcyByZWFsbHkgb25lIGhhbGYtbGluZSBsb25nZXIgYW5kIHRoZSB2ZXJ0aWNhbCBiYWNrcG9yY2gKK29mIGZpZWxkIDIgKGFrYSB0aGUgZXZlbiBmaWVsZCkgaXMgcmVhbGx5IG9uZSBoYWxmLWxpbmUgc2hvcnRlciwgc28gZWFjaCBmaWVsZCBoYXMgZXhhY3RseQordGhlIHNhbWUgbnVtYmVyIG9mIGhhbGYtbGluZXMuIFdoZXRoZXIgaGFsZi1saW5lcyBjYW4gYmUgZGV0ZWN0ZWQgb3IgdXNlZCBkZXBlbmRzIG9uCit0aGUgaGFyZHdhcmUuCisJICAgIDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5WNEwyX0RWX0ZMX0lTX0NFX1ZJREVPPC9lbnRyeT4KKwkgICAgPGVudHJ5PklmIHNldCwgdGhlbiB0aGlzIGlzIGEgQ29uc3VtZXIgRWxlY3Ryb25pY3MgKENFKSB2aWRlbyBmb3JtYXQuCitTdWNoIGZvcm1hdHMgZGlmZmVyIGZyb20gb3RoZXIgZm9ybWF0cyAoY29tbW9ubHkgY2FsbGVkIElUIGZvcm1hdHMpIGluIHRoYXQgaWYKK1InRydCJyBlbmNvZGluZyBpcyB1c2VkIHRoZW4gYnkgZGVmYXVsdCB0aGUgUidHJ0InIHZhbHVlcyB1c2UgbGltaXRlZCByYW5nZQorKGkuZS4gMTYtMjM1KSBhcyBvcHBvc2VkIHRvIGZ1bGwgcmFuZ2UgKGkuZS4gMC0yNTUpLiBBbGwgZm9ybWF0cyBkZWZpbmVkIGluIENFQS04NjEKK2V4Y2VwdCBmb3IgdGhlIDY0MHg0ODBwNTkuOTQgZm9ybWF0IGFyZSBDRSBmb3JtYXRzLgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1lZGlkLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWctZWRpZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjcwMjUzNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWctZWRpZC54bWwKQEAgLTAsMCArMSwxNzEgQEAKKzxyZWZlbnRyeSBpZD0idmlkaW9jLWctZWRpZCI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19HX0VESUQsIFZJRElPQ19TX0VESUQ8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPlZJRElPQ19HX0VESUQ8L3JlZm5hbWU+CisgICAgPHJlZm5hbWU+VklESU9DX1NfRURJRDwvcmVmbmFtZT4KKyAgICA8cmVmbmFtZT5WSURJT0NfU1VCREVWX0dfRURJRDwvcmVmbmFtZT4KKyAgICA8cmVmbmFtZT5WSURJT0NfU1VCREVWX1NfRURJRDwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5HZXQgb3Igc2V0IHRoZSBFRElEIG9mIGEgdmlkZW8gcmVjZWl2ZXIvdHJhbnNtaXR0ZXI8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c3RydWN0IHY0bDJfZWRpZCAqPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zdHJ1Y3QgdjRsMl9lZGlkICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfR19FRElELCBWSURJT0NfU19FRElELCBWSURJT0NfU1VCREVWX0dfRURJRCwgVklESU9DX1NVQkRFVl9TX0VESUQ8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKyAgICA8cGFyYT5UaGVzZSBpb2N0bHMgY2FuIGJlIHVzZWQgdG8gZ2V0IG9yIHNldCBhbiBFRElEIGFzc29jaWF0ZWQgd2l0aCBhbiBpbnB1dAorICAgIGZyb20gYSByZWNlaXZlciBvciBhbiBvdXRwdXQgb2YgYSB0cmFuc21pdHRlciBkZXZpY2UuIFRoZXkgY2FuIGJlCisgICAgdXNlZCB3aXRoIHN1YmRldmljZSBub2RlcyAoL2Rldi92NGwtc3ViZGV2WCkgb3Igd2l0aCB2aWRlbyBub2RlcyAoL2Rldi92aWRlb1gpLjwvcGFyYT4KKworICAgIDxwYXJhPldoZW4gdXNlZCB3aXRoIHZpZGVvIG5vZGVzIHRoZSA8c3RydWN0ZmllbGQ+cGFkPC9zdHJ1Y3RmaWVsZD4gZmllbGQgcmVwcmVzZW50cyB0aGUKKyAgICBpbnB1dCAoZm9yIHZpZGVvIGNhcHR1cmUgZGV2aWNlcykgb3Igb3V0cHV0IChmb3IgdmlkZW8gb3V0cHV0IGRldmljZXMpIGluZGV4IGFzCisgICAgaXMgcmV0dXJuZWQgYnkgJlZJRElPQy1FTlVNSU5QVVQ7IGFuZCAmVklESU9DLUVOVU1PVVRQVVQ7IHJlc3BlY3RpdmVseS4gV2hlbiB1c2VkCisgICAgd2l0aCBzdWJkZXZpY2Ugbm9kZXMgdGhlIDxzdHJ1Y3RmaWVsZD5wYWQ8L3N0cnVjdGZpZWxkPiBmaWVsZCByZXByZXNlbnRzIHRoZQorICAgIGlucHV0IG9yIG91dHB1dCBwYWQgb2YgdGhlIHN1YmRldmljZS4gSWYgdGhlcmUgaXMgbm8gRURJRCBzdXBwb3J0IGZvciB0aGUgZ2l2ZW4KKyAgICA8c3RydWN0ZmllbGQ+cGFkPC9zdHJ1Y3RmaWVsZD4gdmFsdWUsIHRoZW4gdGhlICZFSU5WQUw7IHdpbGwgYmUgcmV0dXJuZWQuPC9wYXJhPgorCisgICAgPHBhcmE+VG8gZ2V0IHRoZSBFRElEIGRhdGEgdGhlIGFwcGxpY2F0aW9uIGhhcyB0byBmaWxsIGluIHRoZSA8c3RydWN0ZmllbGQ+cGFkPC9zdHJ1Y3RmaWVsZD4sCisgICAgPHN0cnVjdGZpZWxkPnN0YXJ0X2Jsb2NrPC9zdHJ1Y3RmaWVsZD4sIDxzdHJ1Y3RmaWVsZD5ibG9ja3M8L3N0cnVjdGZpZWxkPiBhbmQgPHN0cnVjdGZpZWxkPmVkaWQ8L3N0cnVjdGZpZWxkPgorICAgIGZpZWxkcyBhbmQgY2FsbCA8Y29uc3RhbnQ+VklESU9DX0dfRURJRDwvY29uc3RhbnQ+LiBUaGUgY3VycmVudCBFRElEIGZyb20gYmxvY2sKKyAgICA8c3RydWN0ZmllbGQ+c3RhcnRfYmxvY2s8L3N0cnVjdGZpZWxkPiBhbmQgb2Ygc2l6ZSA8c3RydWN0ZmllbGQ+YmxvY2tzPC9zdHJ1Y3RmaWVsZD4KKyAgICB3aWxsIGJlIHBsYWNlZCBpbiB0aGUgbWVtb3J5IDxzdHJ1Y3RmaWVsZD5lZGlkPC9zdHJ1Y3RmaWVsZD4gcG9pbnRzIHRvLiBUaGUgPHN0cnVjdGZpZWxkPmVkaWQ8L3N0cnVjdGZpZWxkPgorICAgIHBvaW50ZXIgbXVzdCBwb2ludCB0byBtZW1vcnkgYXQgbGVhc3QgPHN0cnVjdGZpZWxkPmJsb2Nrczwvc3RydWN0ZmllbGQ+Jm5ic3A7KiZuYnNwOzEyOCBieXRlcworICAgIGxhcmdlICh0aGUgc2l6ZSBvZiBvbmUgYmxvY2sgaXMgMTI4IGJ5dGVzKS48L3BhcmE+CisKKyAgICA8cGFyYT5JZiB0aGVyZSBhcmUgZmV3ZXIgYmxvY2tzIHRoYW4gc3BlY2lmaWVkLCB0aGVuIHRoZSBkcml2ZXIgd2lsbCBzZXQgPHN0cnVjdGZpZWxkPmJsb2Nrczwvc3RydWN0ZmllbGQ+CisgICAgdG8gdGhlIGFjdHVhbCBudW1iZXIgb2YgYmxvY2tzLiBJZiB0aGVyZSBhcmUgbm8gRURJRCBibG9ja3MgYXZhaWxhYmxlIGF0IGFsbCwgdGhlbiB0aGUgZXJyb3IgY29kZQorICAgIEVOT0RBVEEgaXMgc2V0LjwvcGFyYT4KKworICAgIDxwYXJhPklmIGJsb2NrcyBoYXZlIHRvIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBzaW5rLCB0aGVuIHRoaXMgY2FsbCB3aWxsIGJsb2NrIHVudGlsIHRoZXkKKyAgICBoYXZlIGJlZW4gcmVhZC48L3BhcmE+CisKKyAgICA8cGFyYT5JZiA8c3RydWN0ZmllbGQ+c3RhcnRfYmxvY2s8L3N0cnVjdGZpZWxkPiBhbmQgPHN0cnVjdGZpZWxkPmJsb2Nrczwvc3RydWN0ZmllbGQ+IGFyZQorICAgIGJvdGggc2V0IHRvIDAgd2hlbiA8Y29uc3RhbnQ+VklESU9DX0dfRURJRDwvY29uc3RhbnQ+IGlzIGNhbGxlZCwgdGhlbiB0aGUgZHJpdmVyIHdpbGwKKyAgICBzZXQgPHN0cnVjdGZpZWxkPmJsb2Nrczwvc3RydWN0ZmllbGQ+IHRvIHRoZSB0b3RhbCBudW1iZXIgb2YgYXZhaWxhYmxlIEVESUQgYmxvY2tzCisgICAgYW5kIGl0IHdpbGwgcmV0dXJuIDAgd2l0aG91dCBjb3B5aW5nIGFueSBkYXRhLiBUaGlzIGlzIGFuIGVhc3kgd2F5IHRvIGRpc2NvdmVyIGhvdyBtYW55CisgICAgRURJRCBibG9ja3MgdGhlcmUgYXJlLiBOb3RlIHRoYXQgaWYgdGhlcmUgYXJlIG5vIEVESUQgYmxvY2tzIGF2YWlsYWJsZSBhdCBhbGwsIHRoZW4KKyAgICB0aGUgZHJpdmVyIHdpbGwgc2V0IDxzdHJ1Y3RmaWVsZD5ibG9ja3M8L3N0cnVjdGZpZWxkPiB0byAwIGFuZCBpdCByZXR1cm5zIDAuPC9wYXJhPgorCisgICAgPHBhcmE+VG8gc2V0IHRoZSBFRElEIGJsb2NrcyBvZiBhIHJlY2VpdmVyIHRoZSBhcHBsaWNhdGlvbiBoYXMgdG8gZmlsbCBpbiB0aGUgPHN0cnVjdGZpZWxkPnBhZDwvc3RydWN0ZmllbGQ+LAorICAgIDxzdHJ1Y3RmaWVsZD5ibG9ja3M8L3N0cnVjdGZpZWxkPiBhbmQgPHN0cnVjdGZpZWxkPmVkaWQ8L3N0cnVjdGZpZWxkPiBmaWVsZHMgYW5kIHNldAorICAgIDxzdHJ1Y3RmaWVsZD5zdGFydF9ibG9jazwvc3RydWN0ZmllbGQ+IHRvIDAuIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBzZXQgcGFydCBvZiBhbiBFRElELAorICAgIGl0IGlzIGFsd2F5cyBhbGwgb3Igbm90aGluZy4gU2V0dGluZyB0aGUgRURJRCBkYXRhIGlzIG9ubHkgdmFsaWQgZm9yIHJlY2VpdmVycyBhcyBpdCBtYWtlcworICAgIG5vIHNlbnNlIGZvciBhIHRyYW5zbWl0dGVyLjwvcGFyYT4KKworICAgIDxwYXJhPlRoZSBkcml2ZXIgYXNzdW1lcyB0aGF0IHRoZSBmdWxsIEVESUQgaXMgcGFzc2VkIGluLiBJZiB0aGVyZSBhcmUgbW9yZSBFRElEIGJsb2NrcyB0aGFuCisgICAgdGhlIGhhcmR3YXJlIGNhbiBoYW5kbGUgdGhlbiB0aGUgRURJRCBpcyBub3Qgd3JpdHRlbiwgYnV0IGluc3RlYWQgdGhlIGVycm9yIGNvZGUgRTJCSUcgaXMgc2V0CisgICAgYW5kIDxzdHJ1Y3RmaWVsZD5ibG9ja3M8L3N0cnVjdGZpZWxkPiBpcyBzZXQgdG8gdGhlIG1heGltdW0gdGhhdCB0aGUgaGFyZHdhcmUgc3VwcG9ydHMuCisgICAgSWYgPHN0cnVjdGZpZWxkPnN0YXJ0X2Jsb2NrPC9zdHJ1Y3RmaWVsZD4gaXMgYW55CisgICAgdmFsdWUgb3RoZXIgdGhhbiAwIHRoZW4gdGhlIGVycm9yIGNvZGUgRUlOVkFMIGlzIHNldC48L3BhcmE+CisKKyAgICA8cGFyYT5UbyBkaXNhYmxlIGFuIEVESUQgeW91IHNldCA8c3RydWN0ZmllbGQ+YmxvY2tzPC9zdHJ1Y3RmaWVsZD4gdG8gMC4gRGVwZW5kaW5nIG9uIHRoZQorICAgIGhhcmR3YXJlIHRoaXMgd2lsbCBkcml2ZSB0aGUgaG90cGx1ZyBwaW4gbG93IGFuZC9vciBibG9jayB0aGUgc291cmNlIGZyb20gcmVhZGluZyB0aGUgRURJRAorICAgIGRhdGEgaW4gc29tZSB3YXkuIEluIGFueSBjYXNlLCB0aGUgZW5kIHJlc3VsdCBpcyB0aGUgc2FtZTogdGhlIEVESUQgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS4KKyAgICA8L3BhcmE+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItZWRpZCI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfZWRpZDwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKyAgICAgICAgJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5wYWQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5QYWQgZm9yIHdoaWNoIHRvIGdldC9zZXQgdGhlIEVESUQgYmxvY2tzLiBXaGVuIHVzZWQgd2l0aCBhIHZpZGVvIGRldmljZQorCSAgICBub2RlIHRoZSBwYWQgcmVwcmVzZW50cyB0aGUgaW5wdXQgb3Igb3V0cHV0IGluZGV4IGFzIHJldHVybmVkIGJ5CisJICAgICZWSURJT0MtRU5VTUlOUFVUOyBhbmQgJlZJRElPQy1FTlVNT1VUUFVUOyByZXNwZWN0aXZlbHkuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5zdGFydF9ibG9jazwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlYWQgdGhlIEVESUQgZnJvbSBzdGFydGluZyB3aXRoIHRoaXMgYmxvY2suIE11c3QgYmUgMCB3aGVuIHNldHRpbmcKKwkgICAgdGhlIEVESUQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5ibG9ja3M8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgbnVtYmVyIG9mIGJsb2NrcyB0byBnZXQgb3Igc2V0LiBNdXN0IGJlIGxlc3Mgb3IgZXF1YWwgdG8gMjU2ICh0aGUKKwkgICAgbWF4aW11bSBudW1iZXIgb2YgYmxvY2tzIGFzIGRlZmluZWQgYnkgdGhlIHN0YW5kYXJkKS4gV2hlbiB5b3Ugc2V0IHRoZSBFRElEIGFuZAorCSAgICA8c3RydWN0ZmllbGQ+YmxvY2tzPC9zdHJ1Y3RmaWVsZD4gaXMgMCwgdGhlbiB0aGUgRURJRCBpcyBkaXNhYmxlZCBvciBlcmFzZWQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+WzVdPC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlc2VydmVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucy4gQXBwbGljYXRpb25zIGFuZCBkcml2ZXJzIG11c3QKKwkgICAgc2V0IHRoZSBhcnJheSB0byB6ZXJvLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3U4Jm5ic3A7KjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZWRpZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlBvaW50ZXIgdG8gbWVtb3J5IHRoYXQgY29udGFpbnMgdGhlIEVESUQuIFRoZSBtaW5pbXVtIHNpemUgaXMKKwkgICAgPHN0cnVjdGZpZWxkPmJsb2Nrczwvc3RydWN0ZmllbGQ+Jm5ic3A7KiZuYnNwOzEyOC48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVOT0RBVEE8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIEVESUQgZGF0YSBpcyBub3QgYXZhaWxhYmxlLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RTJCSUc8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIEVESUQgZGF0YSB5b3UgcHJvdmlkZWQgaXMgbW9yZSB0aGFuIHRoZSBoYXJkd2FyZSBjYW4gaGFuZGxlLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1lbmMtaW5kZXgueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1lbmMtaW5kZXgueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMjUwMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLWVuYy1pbmRleC54bWwKQEAgLTAsMCArMSwxODkgQEAKKzxyZWZlbnRyeSBpZD0idmlkaW9jLWctZW5jLWluZGV4Ij4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgVklESU9DX0dfRU5DX0lOREVYPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5WSURJT0NfR19FTkNfSU5ERVg8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+R2V0IG1ldGEgZGF0YSBhYm91dCBhIGNvbXByZXNzZWQgdmlkZW8gc3RyZWFtPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCB2NGwyX2VuY19pZHggKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19HX0VOQ19JTkRFWDwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgPHBhcmE+VGhlIDxjb25zdGFudD5WSURJT0NfR19FTkNfSU5ERVg8L2NvbnN0YW50PiBpb2N0bCBwcm92aWRlcworbWV0YSBkYXRhIGFib3V0IGEgY29tcHJlc3NlZCB2aWRlbyBzdHJlYW0gdGhlIHNhbWUgb3IgYW5vdGhlcgorYXBwbGljYXRpb24gY3VycmVudGx5IHJlYWRzIGZyb20gdGhlIGRyaXZlciwgd2hpY2ggaXMgdXNlZnVsIGZvcgorcmFuZG9tIGFjY2VzcyBpbnRvIHRoZSBzdHJlYW0gd2l0aG91dCBkZWNvZGluZyBpdC48L3BhcmE+CisKKyAgICA8cGFyYT5UbyByZWFkIHRoZSBkYXRhIGFwcGxpY2F0aW9ucyBtdXN0IGNhbGwKKzxjb25zdGFudD5WSURJT0NfR19FTkNfSU5ERVg8L2NvbnN0YW50PiB3aXRoIGEgcG9pbnRlciB0byBhCismdjRsMi1lbmMtaWR4Oy4gT24gc3VjY2VzcyB0aGUgZHJpdmVyIGZpbGxzIHRoZQorPHN0cnVjdGZpZWxkPmVudHJ5PC9zdHJ1Y3RmaWVsZD4gYXJyYXksIHN0b3JlcyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzCit3cml0dGVuIGluIHRoZSA8c3RydWN0ZmllbGQ+ZW50cmllczwvc3RydWN0ZmllbGQ+IGZpZWxkLCBhbmQKK2luaXRpYWxpemVzIHRoZSA8c3RydWN0ZmllbGQ+ZW50cmllc19jYXA8L3N0cnVjdGZpZWxkPiBmaWVsZC48L3BhcmE+CisKKyAgICA8cGFyYT5FYWNoIGVsZW1lbnQgb2YgdGhlIDxzdHJ1Y3RmaWVsZD5lbnRyeTwvc3RydWN0ZmllbGQ+IGFycmF5Citjb250YWlucyBtZXRhIGRhdGEgYWJvdXQgb25lIHBpY3R1cmUuIEEKKzxjb25zdGFudD5WSURJT0NfR19FTkNfSU5ERVg8L2NvbnN0YW50PiBjYWxsIHJlYWRzIHVwIHRvCis8Y29uc3RhbnQ+VjRMMl9FTkNfSURYX0VOVFJJRVM8L2NvbnN0YW50PiBlbnRyaWVzIGZyb20gYSBkcml2ZXIKK2J1ZmZlciwgd2hpY2ggY2FuIGhvbGQgdXAgdG8gPHN0cnVjdGZpZWxkPmVudHJpZXNfY2FwPC9zdHJ1Y3RmaWVsZD4KK2VudHJpZXMuIFRoaXMgbnVtYmVyIGNhbiBiZSBsb3dlciBvciBoaWdoZXIgdGhhbgorPGNvbnN0YW50PlY0TDJfRU5DX0lEWF9FTlRSSUVTPC9jb25zdGFudD4sIGJ1dCBub3QgemVyby4gV2hlbiB0aGUKK2FwcGxpY2F0aW9uIGZhaWxzIHRvIHJlYWQgdGhlIG1ldGEgZGF0YSBpbiB0aW1lIHRoZSBvbGRlc3QgZW50cmllcword2lsbCBiZSBsb3N0LiBXaGVuIHRoZSBidWZmZXIgaXMgZW1wdHkgb3Igbm8gY2FwdHVyaW5nL2VuY29kaW5nIGlzIGluCitwcm9ncmVzcywgPHN0cnVjdGZpZWxkPmVudHJpZXM8L3N0cnVjdGZpZWxkPiB3aWxsIGJlIHplcm8uPC9wYXJhPgorCisgICAgPHBhcmE+Q3VycmVudGx5IHRoaXMgaW9jdGwgaXMgb25seSBkZWZpbmVkIGZvciBNUEVHLTIgcHJvZ3JhbQorc3RyZWFtcyBhbmQgdmlkZW8gZWxlbWVudGFyeSBzdHJlYW1zLjwvcGFyYT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1lbmMtaWR4Ij4KKyAgICAgIDx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9lbmNfaWR4PC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZW50cmllczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBudW1iZXIgb2YgZW50cmllcyB0aGUgZHJpdmVyIHN0b3JlZCBpbiB0aGUKKzxzdHJ1Y3RmaWVsZD5lbnRyeTwvc3RydWN0ZmllbGQ+IGFycmF5LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZW50cmllc19jYXA8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgbnVtYmVyIG9mIGVudHJpZXMgdGhlIGRyaXZlciBjYW4KK2J1ZmZlci4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD5bNF08L2VudHJ5PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImhzcGFuIj5SZXNlcnZlZCBmb3IgZnV0dXJlIGV4dGVuc2lvbnMuCitEcml2ZXJzIG11c3Qgc2V0IHRoZSBhcnJheSB0byB6ZXJvLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT4mdjRsMi1lbmMtaWR4LWVudHJ5OzwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZW50cnk8L3N0cnVjdGZpZWxkPls8Y29uc3RhbnQ+VjRMMl9FTkNfSURYX0VOVFJJRVM8L2NvbnN0YW50Pl08L2VudHJ5PgorCSAgICA8ZW50cnk+TWV0YSBkYXRhIGFib3V0IGEgY29tcHJlc3NlZCB2aWRlbyBzdHJlYW0uIEVhY2gKK2VsZW1lbnQgb2YgdGhlIGFycmF5IGNvcnJlc3BvbmRzIHRvIG9uZSBwaWN0dXJlLCBzb3J0ZWQgaW4gYXNjZW5kaW5nCitvcmRlciBieSB0aGVpciA8c3RydWN0ZmllbGQ+b2Zmc2V0PC9zdHJ1Y3RmaWVsZD4uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLWVuYy1pZHgtZW50cnkiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2VuY19pZHhfZW50cnk8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTY0PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5vZmZzZXQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgb2Zmc2V0IGluIGJ5dGVzIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUKK2NvbXByZXNzZWQgdmlkZW8gc3RyZWFtIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBwaWN0dXJlLCB0aGF0IGlzIGEKKzx3b3JkYXN3b3JkPlBFUyBwYWNrZXQgaGVhZGVyPC93b3JkYXN3b3JkPiBhcyBkZWZpbmVkIGluIDx4cmVmCisJICAgIGxpbmtlbmQ9Im1wZWcycGFydDEiIC8+IG9yIGEgPHdvcmRhc3dvcmQ+cGljdHVyZQoraGVhZGVyPC93b3JkYXN3b3JkPiBhcyBkZWZpbmVkIGluIDx4cmVmIGxpbmtlbmQ9Im1wZWcycGFydDIiIC8+LiBXaGVuCit0aGUgZW5jb2RlciBpcyBzdG9wcGVkLCB0aGUgZHJpdmVyIHJlc2V0cyB0aGUgb2Zmc2V0IHRvIHplcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTY0PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5wdHM8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgMzMgYml0IDx3b3JkYXN3b3JkPlByZXNlbnRhdGlvbiBUaW1lCitTdGFtcDwvd29yZGFzd29yZD4gb2YgdGhpcyBwaWN0dXJlIGFzIGRlZmluZWQgaW4gPHhyZWYKKwkJbGlua2VuZD0ibXBlZzJwYXJ0MSIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5sZW5ndGg8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgbGVuZ3RoIG9mIHRoaXMgcGljdHVyZSBpbiBieXRlcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmZsYWdzPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+RmxhZ3MgY29udGFpbmluZyB0aGUgY29kaW5nIHR5cGUgb2YgdGhpcyBwaWN0dXJlLCBzZWUgPHhyZWYKKwkJbGlua2VuZD0iZW5jLWlkeC1mbGFncyIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+WzJdPC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlc2VydmVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucy4KK0RyaXZlcnMgbXVzdCBzZXQgdGhlIGFycmF5IHRvIHplcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJlbmMtaWR4LWZsYWdzIj4KKyAgICAgIDx0aXRsZT5JbmRleCBFbnRyeSBGbGFnczwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1kZWY7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9FTkNfSURYX0ZSQU1FX0k8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoaXMgaXMgYW4gSW50cmEtY29kZWQgcGljdHVyZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRU5DX0lEWF9GUkFNRV9QPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMTwvZW50cnk+CisJICAgIDxlbnRyeT5UaGlzIGlzIGEgUHJlZGljdGl2ZS1jb2RlZCBwaWN0dXJlLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9FTkNfSURYX0ZSQU1FX0I8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAyPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoaXMgaXMgYSBCaWRpcmVjdGlvbmFsbHkgcHJlZGljdGl2ZS1jb2RlZAorcGljdHVyZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRU5DX0lEWF9GUkFNRV9NQVNLPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwRjwvZW50cnk+CisJICAgIDxlbnRyeT48d29yZGFzd29yZD5BTkQ8L3dvcmRhc3dvcmQ+IHRoZSBmbGFncyBmaWVsZCB3aXRoCit0aGlzIG1hc2sgdG8gb2J0YWluIHRoZSBwaWN0dXJlIGNvZGluZyB0eXBlLjwvZW50cnk+CisJICA8L3Jvdz4KKyAgICAgICA8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLWV4dC1jdHJscy54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLWV4dC1jdHJscy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQyNTM2YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWctZXh0LWN0cmxzLnhtbApAQCAtMCwwICsxLDQzNCBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2MtZy1leHQtY3RybHMiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBWSURJT0NfR19FWFRfQ1RSTFMsIFZJRElPQ19TX0VYVF9DVFJMUywKK1ZJRElPQ19UUllfRVhUX0NUUkxTPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5WSURJT0NfR19FWFRfQ1RSTFM8L3JlZm5hbWU+CisgICAgPHJlZm5hbWU+VklESU9DX1NfRVhUX0NUUkxTPC9yZWZuYW1lPgorICAgIDxyZWZuYW1lPlZJRElPQ19UUllfRVhUX0NUUkxTPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPkdldCBvciBzZXQgdGhlIHZhbHVlIG9mIHNldmVyYWwgY29udHJvbHMsIHRyeSBjb250cm9sCit2YWx1ZXM8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c3RydWN0IHY0bDJfZXh0X2NvbnRyb2xzCisqPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPiZmZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VklESU9DX0dfRVhUX0NUUkxTLCBWSURJT0NfU19FWFRfQ1RSTFMsCitWSURJT0NfVFJZX0VYVF9DVFJMUzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgPHBhcmE+VGhlc2UgaW9jdGxzIGFsbG93IHRoZSBjYWxsZXIgdG8gZ2V0IG9yIHNldCBtdWx0aXBsZQorY29udHJvbHMgYXRvbWljYWxseS4gQ29udHJvbCBJRHMgYXJlIGdyb3VwZWQgaW50byBjb250cm9sIGNsYXNzZXMgKHNlZQorPHhyZWYgbGlua2VuZD0iY3RybC1jbGFzcyIgLz4pIGFuZCBhbGwgY29udHJvbHMgaW4gdGhlIGNvbnRyb2wgYXJyYXkKK211c3QgYmVsb25nIHRvIHRoZSBzYW1lIGNvbnRyb2wgY2xhc3MuPC9wYXJhPgorCisgICAgPHBhcmE+QXBwbGljYXRpb25zIG11c3QgYWx3YXlzIGZpbGwgaW4gdGhlCis8c3RydWN0ZmllbGQ+Y291bnQ8L3N0cnVjdGZpZWxkPiwKKzxzdHJ1Y3RmaWVsZD5jdHJsX2NsYXNzPC9zdHJ1Y3RmaWVsZD4sCis8c3RydWN0ZmllbGQ+Y29udHJvbHM8L3N0cnVjdGZpZWxkPiBhbmQKKzxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+IGZpZWxkcyBvZiAmdjRsMi1leHQtY29udHJvbHM7LCBhbmQKK2luaXRpYWxpemUgdGhlICZ2NGwyLWV4dC1jb250cm9sOyBhcnJheSBwb2ludGVkIHRvIGJ5IHRoZQorPHN0cnVjdGZpZWxkPmNvbnRyb2xzPC9zdHJ1Y3RmaWVsZD4gZmllbGRzLjwvcGFyYT4KKworICAgIDxwYXJhPlRvIGdldCB0aGUgY3VycmVudCB2YWx1ZSBvZiBhIHNldCBvZiBjb250cm9scyBhcHBsaWNhdGlvbnMKK2luaXRpYWxpemUgdGhlIDxzdHJ1Y3RmaWVsZD5pZDwvc3RydWN0ZmllbGQ+LAorPHN0cnVjdGZpZWxkPnNpemU8L3N0cnVjdGZpZWxkPiBhbmQgPHN0cnVjdGZpZWxkPnJlc2VydmVkMjwvc3RydWN0ZmllbGQ+IGZpZWxkcworb2YgZWFjaCAmdjRsMi1leHQtY29udHJvbDsgYW5kIGNhbGwgdGhlCis8Y29uc3RhbnQ+VklESU9DX0dfRVhUX0NUUkxTPC9jb25zdGFudD4gaW9jdGwuIFN0cmluZyBjb250cm9scyBjb250cm9scworbXVzdCBhbHNvIHNldCB0aGUgPHN0cnVjdGZpZWxkPnN0cmluZzwvc3RydWN0ZmllbGQ+IGZpZWxkLiBDb250cm9scworb2YgY29tcG91bmQgdHlwZXMgKDxjb25zdGFudD5WNEwyX0NUUkxfRkxBR19IQVNfUEFZTE9BRDwvY29uc3RhbnQ+IGlzIHNldCkKK211c3Qgc2V0IHRoZSA8c3RydWN0ZmllbGQ+cHRyPC9zdHJ1Y3RmaWVsZD4gZmllbGQuPC9wYXJhPgorCisgICAgPHBhcmE+SWYgdGhlIDxzdHJ1Y3RmaWVsZD5zaXplPC9zdHJ1Y3RmaWVsZD4gaXMgdG9vIHNtYWxsIHRvCityZWNlaXZlIHRoZSBjb250cm9sIHJlc3VsdCAob25seSByZWxldmFudCBmb3IgcG9pbnRlci10eXBlIGNvbnRyb2xzCitsaWtlIHN0cmluZ3MpLCB0aGVuIHRoZSBkcml2ZXIgd2lsbCBzZXQgPHN0cnVjdGZpZWxkPnNpemU8L3N0cnVjdGZpZWxkPgordG8gYSB2YWxpZCB2YWx1ZSBhbmQgcmV0dXJuIGFuICZFTk9TUEM7LiBZb3Ugc2hvdWxkIHJlLWFsbG9jYXRlIHRoZQorbWVtb3J5IHRvIHRoaXMgbmV3IHNpemUgYW5kIHRyeSBhZ2Fpbi4gRm9yIHRoZSBzdHJpbmcgdHlwZSBpdCBpcyBwb3NzaWJsZSB0aGF0Cit0aGUgc2FtZSBpc3N1ZSBvY2N1cnMgYWdhaW4gaWYgdGhlIHN0cmluZyBoYXMgZ3Jvd24gaW4gdGhlIG1lYW50aW1lLiBJdCBpcworcmVjb21tZW5kZWQgdG8gY2FsbCAmVklESU9DLVFVRVJZQ1RSTDsgZmlyc3QgYW5kIHVzZQorPHN0cnVjdGZpZWxkPm1heGltdW08L3N0cnVjdGZpZWxkPisxIGFzIHRoZSBuZXcgPHN0cnVjdGZpZWxkPnNpemU8L3N0cnVjdGZpZWxkPgordmFsdWUuIEl0IGlzIGd1YXJhbnRlZWQgdGhhdCB0aGF0IGlzIHN1ZmZpY2llbnQgbWVtb3J5LgorPC9wYXJhPgorCisgICAgPHBhcmE+Ti1kaW1lbnNpb25hbCBhcnJheXMgYXJlIHNldCBhbmQgcmV0cmlldmVkIHJvdy1ieS1yb3cuIFlvdSBjYW5ub3Qgc2V0IGEgcGFydGlhbAorYXJyYXksIGFsbCBlbGVtZW50cyBoYXZlIHRvIGJlIHNldCBvciByZXRyaWV2ZWQuIFRoZSB0b3RhbCBzaXplIGlzIGNhbGN1bGF0ZWQKK2FzIDxzdHJ1Y3RmaWVsZD5lbGVtczwvc3RydWN0ZmllbGQ+ICogPHN0cnVjdGZpZWxkPmVsZW1fc2l6ZTwvc3RydWN0ZmllbGQ+LgorVGhlc2UgdmFsdWVzIGNhbiBiZSBvYnRhaW5lZCBieSBjYWxsaW5nICZWSURJT0MtUVVFUlktRVhULUNUUkw7LjwvcGFyYT4KKworICAgIDxwYXJhPlRvIGNoYW5nZSB0aGUgdmFsdWUgb2YgYSBzZXQgb2YgY29udHJvbHMgYXBwbGljYXRpb25zCitpbml0aWFsaXplIHRoZSA8c3RydWN0ZmllbGQ+aWQ8L3N0cnVjdGZpZWxkPiwgPHN0cnVjdGZpZWxkPnNpemU8L3N0cnVjdGZpZWxkPiwKKzxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDI8L3N0cnVjdGZpZWxkPiBhbmQKKzxzdHJ1Y3RmaWVsZD52YWx1ZS92YWx1ZTY0L3N0cmluZy9wdHI8L3N0cnVjdGZpZWxkPiBmaWVsZHMgb2YgZWFjaCAmdjRsMi1leHQtY29udHJvbDsgYW5kCitjYWxsIHRoZSA8Y29uc3RhbnQ+VklESU9DX1NfRVhUX0NUUkxTPC9jb25zdGFudD4gaW9jdGwuIFRoZSBjb250cm9scword2lsbCBvbmx5IGJlIHNldCBpZiA8ZW1waGFzaXM+YWxsPC9lbXBoYXNpcz4gY29udHJvbCB2YWx1ZXMgYXJlCit2YWxpZC48L3BhcmE+CisKKyAgICA8cGFyYT5UbyBjaGVjayBpZiBhIHNldCBvZiBjb250cm9scyBoYXZlIGNvcnJlY3QgdmFsdWVzIGFwcGxpY2F0aW9ucworaW5pdGlhbGl6ZSB0aGUgPHN0cnVjdGZpZWxkPmlkPC9zdHJ1Y3RmaWVsZD4sIDxzdHJ1Y3RmaWVsZD5zaXplPC9zdHJ1Y3RmaWVsZD4sCis8c3RydWN0ZmllbGQ+cmVzZXJ2ZWQyPC9zdHJ1Y3RmaWVsZD4gYW5kCis8c3RydWN0ZmllbGQ+dmFsdWUvdmFsdWU2NC9zdHJpbmcvcHRyPC9zdHJ1Y3RmaWVsZD4gZmllbGRzIG9mIGVhY2ggJnY0bDItZXh0LWNvbnRyb2w7IGFuZAorY2FsbCB0aGUgPGNvbnN0YW50PlZJRElPQ19UUllfRVhUX0NUUkxTPC9jb25zdGFudD4gaW9jdGwuIEl0IGlzIHVwIHRvCit0aGUgZHJpdmVyIHdoZXRoZXIgd3JvbmcgdmFsdWVzIGFyZSBhdXRvbWF0aWNhbGx5IGFkanVzdGVkIHRvIGEgdmFsaWQKK3ZhbHVlIG9yIGlmIGFuIGVycm9yIGlzIHJldHVybmVkLjwvcGFyYT4KKworICAgIDxwYXJhPldoZW4gdGhlIDxzdHJ1Y3RmaWVsZD5pZDwvc3RydWN0ZmllbGQ+IG9yCis8c3RydWN0ZmllbGQ+Y3RybF9jbGFzczwvc3RydWN0ZmllbGQ+IGlzIGludmFsaWQgZHJpdmVycyByZXR1cm4gYW4KKyZFSU5WQUw7LiBXaGVuIHRoZSB2YWx1ZSBpcyBvdXQgb2YgYm91bmRzIGRyaXZlcnMgY2FuIGNob29zZSB0byB0YWtlCit0aGUgY2xvc2VzdCB2YWxpZCB2YWx1ZSBvciByZXR1cm4gYW4gJkVSQU5HRTssIHdoYXRldmVyIHNlZW1zIG1vcmUKK2FwcHJvcHJpYXRlLiBJbiB0aGUgZmlyc3QgY2FzZSB0aGUgbmV3IHZhbHVlIGlzIHNldCBpbgorJnY0bDItZXh0LWNvbnRyb2w7LiBJZiB0aGUgbmV3IGNvbnRyb2wgdmFsdWUgaXMgaW5hcHByb3ByaWF0ZSAoZS5nLiB0aGUKK2dpdmVuIG1lbnUgaW5kZXggaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgbWVudSBjb250cm9sKSwgdGhlbiB0aGlzIHdpbGwKK2Fsc28gcmVzdWx0IGluIGFuICZFSU5WQUw7IGVycm9yLjwvcGFyYT4KKworICAgIDxwYXJhPlRoZSBkcml2ZXIgd2lsbCBvbmx5IHNldC9nZXQgdGhlc2UgY29udHJvbHMgaWYgYWxsIGNvbnRyb2wKK3ZhbHVlcyBhcmUgY29ycmVjdC4gVGhpcyBwcmV2ZW50cyB0aGUgc2l0dWF0aW9uIHdoZXJlIG9ubHkgc29tZSBvZiB0aGUKK2NvbnRyb2xzIHdlcmUgc2V0L2dldC4gT25seSBsb3ctbGV2ZWwgZXJyb3JzICgmZWc7IGEgZmFpbGVkIGkyYworY29tbWFuZCkgY2FuIHN0aWxsIGNhdXNlIHRoaXMgc2l0dWF0aW9uLjwvcGFyYT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1leHQtY29udHJvbCI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfZXh0X2NvbnRyb2w8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iNCI+CisJJmNzLXVzdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+aWQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+SWRlbnRpZmllcyB0aGUgY29udHJvbCwgc2V0IGJ5IHRoZQorYXBwbGljYXRpb24uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5zaXplPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSB0b3RhbCBzaXplIGluIGJ5dGVzIG9mIHRoZSBwYXlsb2FkIG9mIHRoaXMKK2NvbnRyb2wuIFRoaXMgaXMgbm9ybWFsbHkgMCwgYnV0IGZvciBwb2ludGVyIGNvbnRyb2xzIHRoaXMgc2hvdWxkIGJlCitzZXQgdG8gdGhlIHNpemUgb2YgdGhlIG1lbW9yeSBjb250YWluaW5nIHRoZSBwYXlsb2FkLCBvciB0aGF0IHdpbGwKK3JlY2VpdmUgdGhlIHBheWxvYWQuIElmIDxjb25zdGFudD5WSURJT0NfR19FWFRfQ1RSTFM8L2NvbnN0YW50PiBmaW5kcwordGhhdCB0aGlzIHZhbHVlIGlzIGxlc3MgdGhhbiBpcyByZXF1aXJlZCB0byBzdG9yZQordGhlIHBheWxvYWQgcmVzdWx0LCB0aGVuIGl0IGlzIHNldCB0byBhIHZhbHVlIGxhcmdlIGVub3VnaCB0byBzdG9yZSB0aGUKK3BheWxvYWQgcmVzdWx0IGFuZCBFTk9TUEMgaXMgcmV0dXJuZWQuIE5vdGUgdGhhdCBmb3Igc3RyaW5nIGNvbnRyb2xzCit0aGlzIDxzdHJ1Y3RmaWVsZD5zaXplPC9zdHJ1Y3RmaWVsZD4gZmllbGQgc2hvdWxkIG5vdCBiZSBjb25mdXNlZCB3aXRoIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZy4KK1RoaXMgZmllbGQgcmVmZXJzIHRvIHRoZSBzaXplIG9mIHRoZSBtZW1vcnkgdGhhdCBjb250YWlucyB0aGUgc3RyaW5nLgorVGhlIGFjdHVhbCA8ZW1waGFzaXM+bGVuZ3RoPC9lbXBoYXNpcz4gb2YgdGhlIHN0cmluZyBtYXkgd2VsbCBiZSBtdWNoIHNtYWxsZXIuCis8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJlc2VydmVkMjwvc3RydWN0ZmllbGQ+WzFdPC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5SZXNlcnZlZCBmb3IgZnV0dXJlIGV4dGVuc2lvbnMuIERyaXZlcnMgYW5kCithcHBsaWNhdGlvbnMgbXVzdCBzZXQgdGhlIGFycmF5IHRvIHplcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PnVuaW9uPC9lbnRyeT4KKwkgICAgPGVudHJ5Pihhbm9ueW1vdXMpPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5fX3MzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dmFsdWU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5OZXcgdmFsdWUgb3IgY3VycmVudCB2YWx1ZS4gVmFsaWQgaWYgdGhpcyBjb250cm9sIGlzIG5vdCBvZgordHlwZSA8Y29uc3RhbnQ+VjRMMl9DVFJMX1RZUEVfSU5URUdFUjY0PC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VjRMMl9DVFJMX0ZMQUdfSEFTX1BBWUxPQUQ8L2NvbnN0YW50PiBpcyBub3Qgc2V0LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+X19zNjQ8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnZhbHVlNjQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5OZXcgdmFsdWUgb3IgY3VycmVudCB2YWx1ZS4gVmFsaWQgaWYgdGhpcyBjb250cm9sIGlzIG9mCit0eXBlIDxjb25zdGFudD5WNEwyX0NUUkxfVFlQRV9JTlRFR0VSNjQ8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX0NUUkxfRkxBR19IQVNfUEFZTE9BRDwvY29uc3RhbnQ+IGlzIG5vdCBzZXQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5jaGFyICo8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnN0cmluZzwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkEgcG9pbnRlciB0byBhIHN0cmluZy4gVmFsaWQgaWYgdGhpcyBjb250cm9sIGlzIG9mCit0eXBlIDxjb25zdGFudD5WNEwyX0NUUkxfVFlQRV9TVFJJTkc8L2NvbnN0YW50Pi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pl9fdTggKjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cF91ODwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkEgcG9pbnRlciB0byBhIG1hdHJpeCBjb250cm9sIG9mIHVuc2lnbmVkIDgtYml0IHZhbHVlcy4KK1ZhbGlkIGlmIHRoaXMgY29udHJvbCBpcyBvZiB0eXBlIDxjb25zdGFudD5WNEwyX0NUUkxfVFlQRV9VODwvY29uc3RhbnQ+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+X191MTYgKjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cF91MTY8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5BIHBvaW50ZXIgdG8gYSBtYXRyaXggY29udHJvbCBvZiB1bnNpZ25lZCAxNi1iaXQgdmFsdWVzLgorVmFsaWQgaWYgdGhpcyBjb250cm9sIGlzIG9mIHR5cGUgPGNvbnN0YW50PlY0TDJfQ1RSTF9UWVBFX1UxNjwvY29uc3RhbnQ+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+X191MzIgKjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cF91MzI8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5BIHBvaW50ZXIgdG8gYSBtYXRyaXggY29udHJvbCBvZiB1bnNpZ25lZCAzMi1iaXQgdmFsdWVzLgorVmFsaWQgaWYgdGhpcyBjb250cm9sIGlzIG9mIHR5cGUgPGNvbnN0YW50PlY0TDJfQ1RSTF9UWVBFX1UzMjwvY29uc3RhbnQ+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+dm9pZCAqPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5wdHI8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5BIHBvaW50ZXIgdG8gYSBjb21wb3VuZCB0eXBlIHdoaWNoIGNhbiBiZSBhbiBOLWRpbWVuc2lvbmFsIGFycmF5IGFuZC9vciBhCitjb21wb3VuZCB0eXBlICh0aGUgY29udHJvbCdzIHR5cGUgaXMgPj0gPGNvbnN0YW50PlY0TDJfQ1RSTF9DT01QT1VORF9UWVBFUzwvY29uc3RhbnQ+KS4KK1ZhbGlkIGlmIDxjb25zdGFudD5WNEwyX0NUUkxfRkxBR19IQVNfUEFZTE9BRDwvY29uc3RhbnQ+IGlzIHNldCBmb3IgdGhpcyBjb250cm9sLgorPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLWV4dC1jb250cm9scyI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfZXh0X2NvbnRyb2xzPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+Y3RybF9jbGFzczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBjb250cm9sIGNsYXNzIHRvIHdoaWNoIGFsbCBjb250cm9scyBiZWxvbmcsIHNlZQorPHhyZWYgbGlua2VuZD0iY3RybC1jbGFzcyIgLz4uIERyaXZlcnMgdGhhdCB1c2UgYSBrZXJuZWwgZnJhbWV3b3JrIGZvciBoYW5kbGluZworY29udHJvbHMgd2lsbCBhbHNvIGFjY2VwdCBhIHZhbHVlIG9mIDAgaGVyZSwgbWVhbmluZyB0aGF0IHRoZSBjb250cm9scyBjYW4KK2JlbG9uZyB0byBhbnkgY29udHJvbCBjbGFzcy4gV2hldGhlciBkcml2ZXJzIHN1cHBvcnQgdGhpcyBjYW4gYmUgdGVzdGVkIGJ5IHNldHRpbmcKKzxzdHJ1Y3RmaWVsZD5jdHJsX2NsYXNzPC9zdHJ1Y3RmaWVsZD4gdG8gMCBhbmQgY2FsbGluZyA8Y29uc3RhbnQ+VklESU9DX1RSWV9FWFRfQ1RSTFM8L2NvbnN0YW50Pgord2l0aCBhIDxzdHJ1Y3RmaWVsZD5jb3VudDwvc3RydWN0ZmllbGQ+IG9mIDAuIElmIHRoYXQgc3VjY2VlZHMsIHRoZW4gdGhlIGRyaXZlcgorc3VwcG9ydHMgdGhpcyBmZWF0dXJlLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+Y291bnQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgbnVtYmVyIG9mIGNvbnRyb2xzIGluIHRoZSBjb250cm9scyBhcnJheS4gTWF5CithbHNvIGJlIHplcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5lcnJvcl9pZHg8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48cGFyYT5TZXQgYnkgdGhlIGRyaXZlciBpbiBjYXNlIG9mIGFuIGVycm9yLiBJZiB0aGUgZXJyb3IgaXMKK2Fzc29jaWF0ZWQgd2l0aCBhIHBhcnRpY3VsYXIgY29udHJvbCwgdGhlbiA8c3RydWN0ZmllbGQ+ZXJyb3JfaWR4PC9zdHJ1Y3RmaWVsZD4KK2lzIHNldCB0byB0aGUgaW5kZXggb2YgdGhhdCBjb250cm9sLiBJZiB0aGUgZXJyb3IgaXMgbm90IHJlbGF0ZWQgdG8gYSBzcGVjaWZpYworY29udHJvbCwgb3IgdGhlIHZhbGlkYXRpb24gc3RlcCBmYWlsZWQgKHNlZSBiZWxvdyksIHRoZW4KKzxzdHJ1Y3RmaWVsZD5lcnJvcl9pZHg8L3N0cnVjdGZpZWxkPiBpcyBzZXQgdG8gPHN0cnVjdGZpZWxkPmNvdW50PC9zdHJ1Y3RmaWVsZD4uCitUaGUgdmFsdWUgaXMgdW5kZWZpbmVkIGlmIHRoZSBpb2N0bCByZXR1cm5lZCAwIChzdWNjZXNzKS48L3BhcmE+CisKKzxwYXJhPkJlZm9yZSBjb250cm9scyBhcmUgcmVhZCBmcm9tL3dyaXR0ZW4gdG8gaGFyZHdhcmUgYSB2YWxpZGF0aW9uIHN0ZXAKK3Rha2VzIHBsYWNlOiB0aGlzIGNoZWNrcyBpZiBhbGwgY29udHJvbHMgaW4gdGhlIGxpc3QgYXJlIHZhbGlkIGNvbnRyb2xzLAoraWYgbm8gYXR0ZW1wdCBpcyBtYWRlIHRvIHdyaXRlIHRvIGEgcmVhZC1vbmx5IGNvbnRyb2wgb3IgcmVhZCBmcm9tIGEgd3JpdGUtb25seQorY29udHJvbCwgYW5kIGFueSBvdGhlciB1cC1mcm9udCBjaGVja3MgdGhhdCBjYW4gYmUgZG9uZSB3aXRob3V0IGFjY2Vzc2luZyB0aGUKK2hhcmR3YXJlLiBUaGUgZXhhY3QgdmFsaWRhdGlvbnMgZG9uZSBkdXJpbmcgdGhpcyBzdGVwIGFyZSBkcml2ZXIgZGVwZW5kZW50CitzaW5jZSBzb21lIGNoZWNrcyBtaWdodCByZXF1aXJlIGhhcmR3YXJlIGFjY2VzcyBmb3Igc29tZSBkZXZpY2VzLCB0aHVzIG1ha2luZworaXQgaW1wb3NzaWJsZSB0byBkbyB0aG9zZSBjaGVja3MgdXAtZnJvbnQuIEhvd2V2ZXIsIGRyaXZlcnMgc2hvdWxkIG1ha2UgYQorYmVzdC1lZmZvcnQgdG8gZG8gYXMgbWFueSB1cC1mcm9udCBjaGVja3MgYXMgcG9zc2libGUuPC9wYXJhPgorCis8cGFyYT5UaGlzIGNoZWNrIGlzIGRvbmUgdG8gYXZvaWQgbGVhdmluZyB0aGUgaGFyZHdhcmUgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlIGR1ZQordG8gZWFzeS10by1hdm9pZCBwcm9ibGVtcy4gQnV0IGl0IGxlYWRzIHRvIGFub3RoZXIgcHJvYmxlbTogdGhlIGFwcGxpY2F0aW9uIG5lZWRzIHRvCitrbm93IHdoZXRoZXIgYW4gZXJyb3IgY2FtZSBmcm9tIHRoZSB2YWxpZGF0aW9uIHN0ZXAgKG1lYW5pbmcgdGhhdCB0aGUgaGFyZHdhcmUKK3dhcyBub3QgdG91Y2hlZCkgb3IgZnJvbSBhbiBlcnJvciBkdXJpbmcgdGhlIGFjdHVhbCByZWFkaW5nIGZyb20vd3JpdGluZyB0byBoYXJkd2FyZS48L3BhcmE+CisKKzxwYXJhPlRoZSwgaW4gaGluZHNpZ2h0IHF1aXRlIHBvb3IsIHNvbHV0aW9uIGZvciB0aGF0IGlzIHRvIHNldCA8c3RydWN0ZmllbGQ+ZXJyb3JfaWR4PC9zdHJ1Y3RmaWVsZD4KK3RvIDxzdHJ1Y3RmaWVsZD5jb3VudDwvc3RydWN0ZmllbGQ+IGlmIHRoZSB2YWxpZGF0aW9uIGZhaWxlZC4gVGhpcyBoYXMgdGhlCit1bmZvcnR1bmF0ZSBzaWRlLWVmZmVjdCB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBzZWUgd2hpY2ggY29udHJvbCBmYWlsZWQgdGhlCit2YWxpZGF0aW9uLiBJZiB0aGUgdmFsaWRhdGlvbiB3YXMgc3VjY2Vzc2Z1bCBhbmQgdGhlIGVycm9yIGhhcHBlbmVkIHdoaWxlCithY2Nlc3NpbmcgdGhlIGhhcmR3YXJlLCB0aGVuIDxzdHJ1Y3RmaWVsZD5lcnJvcl9pZHg8L3N0cnVjdGZpZWxkPiBpcyBsZXNzIHRoYW4KKzxzdHJ1Y3RmaWVsZD5jb3VudDwvc3RydWN0ZmllbGQ+IGFuZCBvbmx5IHRoZSBjb250cm9scyB1cCB0bworPHN0cnVjdGZpZWxkPmVycm9yX2lkeC0xPC9zdHJ1Y3RmaWVsZD4gd2VyZSByZWFkIG9yIHdyaXR0ZW4gY29ycmVjdGx5LCBhbmQgdGhlCitzdGF0ZSBvZiB0aGUgcmVtYWluaW5nIGNvbnRyb2xzIGlzIHVuZGVmaW5lZC48L3BhcmE+CisKKzxwYXJhPlNpbmNlIDxjb25zdGFudD5WSURJT0NfVFJZX0VYVF9DVFJMUzwvY29uc3RhbnQ+IGRvZXMgbm90IGFjY2VzcyBoYXJkd2FyZQordGhlcmUgaXMgYWxzbyBubyBuZWVkIHRvIGhhbmRsZSB0aGUgdmFsaWRhdGlvbiBzdGVwIGluIHRoaXMgc3BlY2lhbCB3YXksCitzbyA8c3RydWN0ZmllbGQ+ZXJyb3JfaWR4PC9zdHJ1Y3RmaWVsZD4gd2lsbCBqdXN0IGJlIHNldCB0byB0aGUgY29udHJvbCB0aGF0CitmYWlsZWQgdGhlIHZhbGlkYXRpb24gc3RlcCBpbnN0ZWFkIG9mIHRvIDxzdHJ1Y3RmaWVsZD5jb3VudDwvc3RydWN0ZmllbGQ+LgorVGhpcyBtZWFucyB0aGF0IGlmIDxjb25zdGFudD5WSURJT0NfU19FWFRfQ1RSTFM8L2NvbnN0YW50PiBmYWlscyB3aXRoCis8c3RydWN0ZmllbGQ+ZXJyb3JfaWR4PC9zdHJ1Y3RmaWVsZD4gc2V0IHRvIDxzdHJ1Y3RmaWVsZD5jb3VudDwvc3RydWN0ZmllbGQ+LAordGhlbiB5b3UgY2FuIGNhbGwgPGNvbnN0YW50PlZJRElPQ19UUllfRVhUX0NUUkxTPC9jb25zdGFudD4gdG8gdHJ5IHRvIGRpc2NvdmVyCit0aGUgYWN0dWFsIGNvbnRyb2wgdGhhdCBmYWlsZWQgdGhlIHZhbGlkYXRpb24gc3RlcC4gVW5mb3J0dW5hdGVseSwgdGhlcmUKK2lzIG5vIDxjb25zdGFudD5UUlk8L2NvbnN0YW50PiBlcXVpdmFsZW50IGZvciA8Y29uc3RhbnQ+VklESU9DX0dfRVhUX0NUUkxTPC9jb25zdGFudD4uCis8L3BhcmE+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+WzJdPC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlc2VydmVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucy4gRHJpdmVycyBhbmQKK2FwcGxpY2F0aW9ucyBtdXN0IHNldCB0aGUgYXJyYXkgdG8gemVyby48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+JnY0bDItZXh0LWNvbnRyb2w7ICo8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmNvbnRyb2xzPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+UG9pbnRlciB0byBhbiBhcnJheSBvZgorPHN0cnVjdGZpZWxkPmNvdW50PC9zdHJ1Y3RmaWVsZD4gdjRsMl9leHRfY29udHJvbCBzdHJ1Y3R1cmVzLiBJZ25vcmVkCitpZiA8c3RydWN0ZmllbGQ+Y291bnQ8L3N0cnVjdGZpZWxkPiBlcXVhbHMgemVyby48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9ImN0cmwtY2xhc3MiPgorICAgICAgPHRpdGxlPkNvbnRyb2wgY2xhc3NlczwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1kZWY7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DVFJMX0NMQVNTX1VTRVI8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDk4MDAwMDwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgY2xhc3MgY29udGFpbmluZyB1c2VyIGNvbnRyb2xzLiBUaGVzZSBjb250cm9scworYXJlIGRlc2NyaWJlZCBpbiA8eHJlZiBsaW5rZW5kPSJjb250cm9sIiAvPi4gQWxsIGNvbnRyb2xzIHRoYXQgY2FuIGJlIHNldAordXNpbmcgdGhlICZWSURJT0MtUy1DVFJMOyBhbmQgJlZJRElPQy1HLUNUUkw7IGlvY3RsIGJlbG9uZyB0byB0aGlzCitjbGFzcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ1RSTF9DTEFTU19NUEVHPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHg5OTAwMDA8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGNsYXNzIGNvbnRhaW5pbmcgTVBFRyBjb21wcmVzc2lvbiBjb250cm9scy4KK1RoZXNlIGNvbnRyb2xzIGFyZSBkZXNjcmliZWQgaW4gPHhyZWYKKwkJbGlua2VuZD0ibXBlZy1jb250cm9scyIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NUUkxfQ0xBU1NfQ0FNRVJBPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHg5YTAwMDA8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGNsYXNzIGNvbnRhaW5pbmcgY2FtZXJhIGNvbnRyb2xzLgorVGhlc2UgY29udHJvbHMgYXJlIGRlc2NyaWJlZCBpbiA8eHJlZgorCQlsaW5rZW5kPSJjYW1lcmEtY29udHJvbHMiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DVFJMX0NMQVNTX0ZNX1RYPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHg5YjAwMDA8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGNsYXNzIGNvbnRhaW5pbmcgRk0gVHJhbnNtaXR0ZXIgKEZNIFRYKSBjb250cm9scy4KK1RoZXNlIGNvbnRyb2xzIGFyZSBkZXNjcmliZWQgaW4gPHhyZWYKKwkJbGlua2VuZD0iZm0tdHgtY29udHJvbHMiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DVFJMX0NMQVNTX0ZMQVNIPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHg5YzAwMDA8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGNsYXNzIGNvbnRhaW5pbmcgZmxhc2ggZGV2aWNlIGNvbnRyb2xzLgorVGhlc2UgY29udHJvbHMgYXJlIGRlc2NyaWJlZCBpbiA8eHJlZgorCQlsaW5rZW5kPSJmbGFzaC1jb250cm9scyIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NUUkxfQ0xBU1NfSlBFRzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4OWQwMDAwPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBjbGFzcyBjb250YWluaW5nIEpQRUcgY29tcHJlc3Npb24gY29udHJvbHMuCitUaGVzZSBjb250cm9scyBhcmUgZGVzY3JpYmVkIGluIDx4cmVmCisJCWxpbmtlbmQ9ImpwZWctY29udHJvbHMiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DVFJMX0NMQVNTX0lNQUdFX1NPVVJDRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4OWUwMDAwPC9lbnRyeT4gPGVudHJ5PlRoZSBjbGFzcyBjb250YWluaW5nIGltYWdlCisJICAgIHNvdXJjZSBjb250cm9scy4gVGhlc2UgY29udHJvbHMgYXJlIGRlc2NyaWJlZCBpbiA8eHJlZgorCSAgICBsaW5rZW5kPSJpbWFnZS1zb3VyY2UtY29udHJvbHMiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DVFJMX0NMQVNTX0lNQUdFX1BST0M8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDlmMDAwMDwvZW50cnk+IDxlbnRyeT5UaGUgY2xhc3MgY29udGFpbmluZyBpbWFnZQorCSAgICBwcm9jZXNzaW5nIGNvbnRyb2xzLiBUaGVzZSBjb250cm9scyBhcmUgZGVzY3JpYmVkIGluIDx4cmVmCisJICAgIGxpbmtlbmQ9ImltYWdlLXByb2Nlc3MtY29udHJvbHMiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKworCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NUUkxfQ0xBU1NfRk1fUlg8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weGExMDAwMDwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgY2xhc3MgY29udGFpbmluZyBGTSBSZWNlaXZlciAoRk0gUlgpIGNvbnRyb2xzLgorVGhlc2UgY29udHJvbHMgYXJlIGRlc2NyaWJlZCBpbiA8eHJlZgorCQlsaW5rZW5kPSJmbS1yeC1jb250cm9scyIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NUUkxfQ0xBU1NfUkZfVFVORVI8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weGEyMDAwMDwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgY2xhc3MgY29udGFpbmluZyBSRiB0dW5lciBjb250cm9scy4KK1RoZXNlIGNvbnRyb2xzIGFyZSBkZXNjcmliZWQgaW4gPHhyZWYgbGlua2VuZD0icmYtdHVuZXItY29udHJvbHMiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICAmcmV0dXJuLXZhbHVlOworCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FSU5WQUw8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlICZ2NGwyLWV4dC1jb250cm9sOyA8c3RydWN0ZmllbGQ+aWQ8L3N0cnVjdGZpZWxkPgoraXMgaW52YWxpZCwgdGhlICZ2NGwyLWV4dC1jb250cm9sczsKKzxzdHJ1Y3RmaWVsZD5jdHJsX2NsYXNzPC9zdHJ1Y3RmaWVsZD4gaXMgaW52YWxpZCwgb3IgdGhlICZ2NGwyLWV4dC1jb250cm9sOworPHN0cnVjdGZpZWxkPnZhbHVlPC9zdHJ1Y3RmaWVsZD4gd2FzIGluYXBwcm9wcmlhdGUgKGUuZy4gdGhlIGdpdmVuIG1lbnUKK2luZGV4IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlcikuIFRoaXMgZXJyb3IgY29kZSBpcworYWxzbyByZXR1cm5lZCBieSB0aGUgPGNvbnN0YW50PlZJRElPQ19TX0VYVF9DVFJMUzwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlZJRElPQ19UUllfRVhUX0NUUkxTPC9jb25zdGFudD4gaW9jdGxzIGlmIHR3byBvciBtb3JlCitjb250cm9sIHZhbHVlcyBhcmUgaW4gY29uZmxpY3QuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FUkFOR0U8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlICZ2NGwyLWV4dC1jb250cm9sOyA8c3RydWN0ZmllbGQ+dmFsdWU8L3N0cnVjdGZpZWxkPgoraXMgb3V0IG9mIGJvdW5kcy48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVCVVNZPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSBjb250cm9sIGlzIHRlbXBvcmFyaWx5IG5vdCBjaGFuZ2VhYmxlLCBwb3NzaWJseQorYmVjYXVzZSBhbm90aGVyIGFwcGxpY2F0aW9ucyB0b29rIG92ZXIgY29udHJvbCBvZiB0aGUgZGV2aWNlIGZ1bmN0aW9uCit0aGlzIGNvbnRyb2wgYmVsb25ncyB0by48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVOT1NQQzwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgc3BhY2UgcmVzZXJ2ZWQgZm9yIHRoZSBjb250cm9sJ3MgcGF5bG9hZCBpcyBpbnN1ZmZpY2llbnQuCitUaGUgZmllbGQgPHN0cnVjdGZpZWxkPnNpemU8L3N0cnVjdGZpZWxkPiBpcyBzZXQgdG8gYSB2YWx1ZSB0aGF0IGlzIGVub3VnaAordG8gc3RvcmUgdGhlIHBheWxvYWQgYW5kIHRoaXMgZXJyb3IgY29kZSBpcyByZXR1cm5lZC48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVBQ0NFUzwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5BdHRlbXB0IHRvIHRyeSBvciBzZXQgYSByZWFkLW9ubHkgY29udHJvbCBvciB0byBnZXQgYQorCSAgd3JpdGUtb25seSBjb250cm9sLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLWZidWYueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1mYnVmLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzYwN2NjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1mYnVmLnhtbApAQCAtMCwwICsxLDQ1OSBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2MtZy1mYnVmIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgVklESU9DX0dfRkJVRiwgVklESU9DX1NfRkJVRjwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX0dfRkJVRjwvcmVmbmFtZT4KKyAgICA8cmVmbmFtZT5WSURJT0NfU19GQlVGPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPkdldCBvciBzZXQgZnJhbWUgYnVmZmVyIG92ZXJsYXkgcGFyYW1ldGVyczwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zdHJ1Y3QgdjRsMl9mcmFtZWJ1ZmZlciAqPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5jb25zdCBzdHJ1Y3QgdjRsMl9mcmFtZWJ1ZmZlciAqPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPiZmZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VklESU9DX0dfRkJVRiwgVklESU9DX1NfRkJVRjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgPHBhcmE+QXBwbGljYXRpb25zIGNhbiB1c2UgdGhlIDxjb25zdGFudD5WSURJT0NfR19GQlVGPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VklESU9DX1NfRkJVRjwvY29uc3RhbnQ+IGlvY3RsIHRvIGdldCBhbmQgc2V0IHRoZQorZnJhbWVidWZmZXIgcGFyYW1ldGVycyBmb3IgYSA8bGluayBsaW5rZW5kPSJvdmVybGF5Ij5WaWRlbworT3ZlcmxheTwvbGluaz4gb3IgPGxpbmsgbGlua2VuZD0ib3NkIj5WaWRlbyBPdXRwdXQgT3ZlcmxheTwvbGluaz4KKyhPU0QpLiBUaGUgdHlwZSBvZiBvdmVybGF5IGlzIGltcGxpZWQgYnkgdGhlIGRldmljZSB0eXBlIChjYXB0dXJlIG9yCitvdXRwdXQgZGV2aWNlKSBhbmQgY2FuIGJlIGRldGVybWluZWQgd2l0aCB0aGUgJlZJRElPQy1RVUVSWUNBUDsgaW9jdGwuCitPbmUgPGZpbGVuYW1lPi9kZXYvdmlkZW9OPC9maWxlbmFtZT4gZGV2aWNlIG11c3Qgbm90IHN1cHBvcnQgYm90aAora2luZHMgb2Ygb3ZlcmxheS48L3BhcmE+CisKKyAgICA8cGFyYT5UaGUgVjRMMiBBUEkgZGlzdGluZ3Vpc2hlcyBkZXN0cnVjdGl2ZSBhbmQgbm9uLWRlc3RydWN0aXZlCitvdmVybGF5cy4gQSBkZXN0cnVjdGl2ZSBvdmVybGF5IGNvcGllcyBjYXB0dXJlZCB2aWRlbyBpbWFnZXMgaW50byB0aGUKK3ZpZGVvIG1lbW9yeSBvZiBhIGdyYXBoaWNzIGNhcmQuIEEgbm9uLWRlc3RydWN0aXZlIG92ZXJsYXkgYmxlbmRzCit2aWRlbyBpbWFnZXMgaW50byBhIFZHQSBzaWduYWwgb3IgZ3JhcGhpY3MgaW50byBhIHZpZGVvIHNpZ25hbC4KKzx3b3JkYXN3b3JkPlZpZGVvIE91dHB1dCBPdmVybGF5czwvd29yZGFzd29yZD4gYXJlIGFsd2F5cworbm9uLWRlc3RydWN0aXZlLjwvcGFyYT4KKworICAgIDxwYXJhPlRvIGdldCB0aGUgY3VycmVudCBwYXJhbWV0ZXJzIGFwcGxpY2F0aW9ucyBjYWxsIHRoZQorPGNvbnN0YW50PlZJRElPQ19HX0ZCVUY8L2NvbnN0YW50PiBpb2N0bCB3aXRoIGEgcG9pbnRlciB0byBhCis8c3RydWN0bmFtZT52NGwyX2ZyYW1lYnVmZmVyPC9zdHJ1Y3RuYW1lPiBzdHJ1Y3R1cmUuIFRoZSBkcml2ZXIgZmlsbHMKK2FsbCBmaWVsZHMgb2YgdGhlIHN0cnVjdHVyZSBvciByZXR1cm5zIGFuICZFSU5WQUw7IHdoZW4gb3ZlcmxheXMgYXJlCitub3Qgc3VwcG9ydGVkLjwvcGFyYT4KKworICAgIDxwYXJhPlRvIHNldCB0aGUgcGFyYW1ldGVycyBmb3IgYSA8d29yZGFzd29yZD5WaWRlbyBPdXRwdXQKK092ZXJsYXk8L3dvcmRhc3dvcmQ+LCBhcHBsaWNhdGlvbnMgbXVzdCBpbml0aWFsaXplIHRoZQorPHN0cnVjdGZpZWxkPmZsYWdzPC9zdHJ1Y3RmaWVsZD4gZmllbGQgb2YgYSBzdHJ1Y3QKKzxzdHJ1Y3RuYW1lPnY0bDJfZnJhbWVidWZmZXI8L3N0cnVjdG5hbWU+LiBTaW5jZSB0aGUgZnJhbWVidWZmZXIgaXMKK2ltcGxlbWVudGVkIG9uIHRoZSBUViBjYXJkIGFsbCBvdGhlciBwYXJhbWV0ZXJzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZQorZHJpdmVyLiBXaGVuIGFuIGFwcGxpY2F0aW9uIGNhbGxzIDxjb25zdGFudD5WSURJT0NfU19GQlVGPC9jb25zdGFudD4KK3dpdGggYSBwb2ludGVyIHRvIHRoaXMgc3RydWN0dXJlLCB0aGUgZHJpdmVyIHByZXBhcmVzIGZvciB0aGUgb3ZlcmxheQorYW5kIHJldHVybnMgdGhlIGZyYW1lYnVmZmVyIHBhcmFtZXRlcnMgYXMKKzxjb25zdGFudD5WSURJT0NfR19GQlVGPC9jb25zdGFudD4gZG9lcywgb3IgaXQgcmV0dXJucyBhbiBlcnJvcgorY29kZS48L3BhcmE+CisKKyAgICA8cGFyYT5UbyBzZXQgdGhlIHBhcmFtZXRlcnMgZm9yIGEgPHdvcmRhc3dvcmQ+bm9uLWRlc3RydWN0aXZlCitWaWRlbyBPdmVybGF5PC93b3JkYXN3b3JkPiwgYXBwbGljYXRpb25zIG11c3QgaW5pdGlhbGl6ZSB0aGUKKzxzdHJ1Y3RmaWVsZD5mbGFnczwvc3RydWN0ZmllbGQ+IGZpZWxkLCB0aGUKKzxzdHJ1Y3RmaWVsZD5mbXQ8L3N0cnVjdGZpZWxkPiBzdWJzdHJ1Y3R1cmUsIGFuZCBjYWxsCis8Y29uc3RhbnQ+VklESU9DX1NfRkJVRjwvY29uc3RhbnQ+LiBBZ2FpbiB0aGUgZHJpdmVyIHByZXBhcmVzIGZvciB0aGUKK292ZXJsYXkgYW5kIHJldHVybnMgdGhlIGZyYW1lYnVmZmVyIHBhcmFtZXRlcnMgYXMKKzxjb25zdGFudD5WSURJT0NfR19GQlVGPC9jb25zdGFudD4gZG9lcywgb3IgaXQgcmV0dXJucyBhbiBlcnJvcgorY29kZS48L3BhcmE+CisKKyAgICA8cGFyYT5Gb3IgYSA8d29yZGFzd29yZD5kZXN0cnVjdGl2ZSBWaWRlbyBPdmVybGF5PC93b3JkYXN3b3JkPgorYXBwbGljYXRpb25zIG11c3QgYWRkaXRpb25hbGx5IHByb3ZpZGUgYQorPHN0cnVjdGZpZWxkPmJhc2U8L3N0cnVjdGZpZWxkPiBhZGRyZXNzLiBTZXR0aW5nIHVwIGEgRE1BIHRvIGEKK3JhbmRvbSBtZW1vcnkgbG9jYXRpb24gY2FuIGplb3BhcmRpemUgdGhlIHN5c3RlbSBzZWN1cml0eSwgaXRzCitzdGFiaWxpdHkgb3IgZXZlbiBkYW1hZ2UgdGhlIGhhcmR3YXJlLCB0aGVyZWZvcmUgb25seSB0aGUgc3VwZXJ1c2VyCitjYW4gc2V0IHRoZSBwYXJhbWV0ZXJzIGZvciBhIGRlc3RydWN0aXZlIHZpZGVvIG92ZXJsYXkuPC9wYXJhPgorCisgICAgPCEtLSBOQiB2NGwyX3BpeF9mb3JtYXQgaXMgYWxzbyBzcGVjaWZpZWQgaW4gcGl4Zm10LnNnbWwuLS0+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItZnJhbWVidWZmZXIiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2ZyYW1lYnVmZmVyPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjQiPgorCSZjcy11c3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmNhcGFiaWxpdHk8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+T3ZlcmxheSBjYXBhYmlsaXR5IGZsYWdzIHNldCBieSB0aGUgZHJpdmVyLCBzZWUKKzx4cmVmIGxpbmtlbmQ9ImZyYW1lYnVmZmVyLWNhcCIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5mbGFnczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5PdmVybGF5IGNvbnRyb2wgZmxhZ3Mgc2V0IGJ5IGFwcGxpY2F0aW9uIGFuZAorZHJpdmVyLCBzZWUgPHhyZWYgbGlua2VuZD0iZnJhbWVidWZmZXItZmxhZ3MiIC8+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PnZvaWQgKjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+YmFzZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5QaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGZyYW1lYnVmZmVyLAordGhhdCBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgcGl4ZWwgaW4gdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUKK2ZyYW1lYnVmZmVyLjxmb290bm90ZT48cGFyYT5BIHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBtYXkgbm90IHN1aXQgYWxsCitwbGF0Zm9ybXMuIEdLIG5vdGVzIGluIHRoZW9yeSB3ZSBzaG91bGQgcGFzcyBzb21ldGhpbmcgbGlrZSBQQ0kgZGV2aWNlCisrIG1lbW9yeSByZWdpb24gKyBvZmZzZXQgaW5zdGVhZC4gSWYgeW91IGVuY291bnRlciBwcm9ibGVtcyBwbGVhc2UKK2Rpc2N1c3Mgb24gdGhlIGxpbnV4LW1lZGlhIG1haWxpbmcgbGlzdDogJnY0bC1tbDsuPC9wYXJhPjwvZm9vdG5vdGU+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoaXMgZmllbGQgaXMgaXJyZWxldmFudCB0bworPHdvcmRhc3dvcmQ+bm9uLWRlc3RydWN0aXZlIFZpZGVvIE92ZXJsYXlzPC93b3JkYXN3b3JkPi4gRm9yCis8d29yZGFzd29yZD5kZXN0cnVjdGl2ZSBWaWRlbyBPdmVybGF5czwvd29yZGFzd29yZD4gYXBwbGljYXRpb25zIG11c3QKK3Byb3ZpZGUgYSBiYXNlIGFkZHJlc3MuIFRoZSBkcml2ZXIgbWF5IGFjY2VwdCBvbmx5IGJhc2UgYWRkcmVzc2VzCit3aGljaCBhcmUgYSBtdWx0aXBsZSBvZiB0d28sIGZvdXIgb3IgZWlnaHQgYnl0ZXMuIEZvcgorPHdvcmRhc3dvcmQ+VmlkZW8gT3V0cHV0IE92ZXJsYXlzPC93b3JkYXN3b3JkPiB0aGUgZHJpdmVyIG11c3QgcmV0dXJuCithIHZhbGlkIGJhc2UgYWRkcmVzcywgc28gYXBwbGljYXRpb25zIGNhbiBmaW5kIHRoZSBjb3JyZXNwb25kaW5nIExpbnV4CitmcmFtZWJ1ZmZlciBkZXZpY2UgKHNlZSA8eHJlZiBsaW5rZW5kPSJvc2QiIC8+KS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+c3RydWN0PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5mbXQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+TGF5b3V0IG9mIHRoZSBmcmFtZSBidWZmZXIuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+d2lkdGg8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5XaWR0aCBvZiB0aGUgZnJhbWUgYnVmZmVyIGluIHBpeGVscy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5oZWlnaHQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5IZWlnaHQgb2YgdGhlIGZyYW1lIGJ1ZmZlciBpbiBwaXhlbHMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cGl4ZWxmb3JtYXQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgcGl4ZWwgZm9ybWF0IG9mIHRoZQorZnJhbWVidWZmZXIuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkZvciA8d29yZGFzd29yZD5ub24tZGVzdHJ1Y3RpdmUgVmlkZW8KK092ZXJsYXlzPC93b3JkYXN3b3JkPiB0aGlzIGZpZWxkIG9ubHkgZGVmaW5lcyBhIGZvcm1hdCBmb3IgdGhlCismdjRsMi13aW5kb3c7IDxzdHJ1Y3RmaWVsZD5jaHJvbWFrZXk8L3N0cnVjdGZpZWxkPiBmaWVsZC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+Rm9yIDx3b3JkYXN3b3JkPmRlc3RydWN0aXZlIFZpZGVvCitPdmVybGF5czwvd29yZGFzd29yZD4gYXBwbGljYXRpb25zIG11c3QgaW5pdGlhbGl6ZSB0aGlzIGZpZWxkLiBGb3IKKzx3b3JkYXN3b3JkPlZpZGVvIE91dHB1dCBPdmVybGF5czwvd29yZGFzd29yZD4gdGhlIGRyaXZlciBtdXN0IHJldHVybgorYSB2YWxpZCBmb3JtYXQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlVzdWFsbHkgdGhpcyBpcyBhbiBSR0IgZm9ybWF0IChmb3IgZXhhbXBsZQorPGxpbmsgbGlua2VuZD0iVjRMMi1QSVgtRk1ULVJHQjU2NSI+PGNvbnN0YW50PlY0TDJfUElYX0ZNVF9SR0I1NjU8L2NvbnN0YW50PjwvbGluaz4pCitidXQgWVVWIGZvcm1hdHMgKG9ubHkgcGFja2VkIFlVViBmb3JtYXRzIHdoZW4gY2hyb21hIGtleWluZyBpcyB1c2VkLAorbm90IGluY2x1ZGluZyA8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1lVWVY8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX1BJWF9GTVRfVVlWWTwvY29uc3RhbnQ+KSBhbmQgdGhlCis8Y29uc3RhbnQ+VjRMMl9QSVhfRk1UX1BBTDg8L2NvbnN0YW50PiBmb3JtYXQgYXJlIGFsc28gcGVybWl0dGVkLiBUaGUKK2JlaGF2aW9yIG9mIHRoZSBkcml2ZXIgd2hlbiBhbiBhcHBsaWNhdGlvbiByZXF1ZXN0cyBhIGNvbXByZXNzZWQKK2Zvcm1hdCBpcyB1bmRlZmluZWQuIFNlZSA8eHJlZiBsaW5rZW5kPSJwaXhmbXQiIC8+IGZvciBpbmZvcm1hdGlvbiBvbgorcGl4ZWwgZm9ybWF0cy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PiZ2NGwyLWZpZWxkOzwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZmllbGQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5Ecml2ZXJzIGFuZCBhcHBsaWNhdGlvbnMgc2hhbGwgaWdub3JlIHRoaXMgZmllbGQuCitJZiBhcHBsaWNhYmxlLCB0aGUgZmllbGQgb3JkZXIgaXMgc2VsZWN0ZWQgd2l0aCB0aGUgJlZJRElPQy1TLUZNVDsKK2lvY3RsLCB1c2luZyB0aGUgPHN0cnVjdGZpZWxkPmZpZWxkPC9zdHJ1Y3RmaWVsZD4gZmllbGQgb2YKKyZ2NGwyLXdpbmRvdzsuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+Ynl0ZXNwZXJsaW5lPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+RGlzdGFuY2UgaW4gYnl0ZXMgYmV0d2VlbiB0aGUgbGVmdG1vc3QgcGl4ZWxzIGluCit0d28gYWRqYWNlbnQgbGluZXMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJoc3BhbiI+PHBhcmE+VGhpcyBmaWVsZCBpcyBpcnJlbGV2YW50IHRvCis8d29yZGFzd29yZD5ub24tZGVzdHJ1Y3RpdmUgVmlkZW8KK092ZXJsYXlzPC93b3JkYXN3b3JkPi48L3BhcmE+PHBhcmE+Rm9yIDx3b3JkYXN3b3JkPmRlc3RydWN0aXZlIFZpZGVvCitPdmVybGF5czwvd29yZGFzd29yZD4gYm90aCBhcHBsaWNhdGlvbnMgYW5kIGRyaXZlcnMgY2FuIHNldCB0aGlzIGZpZWxkCit0byByZXF1ZXN0IHBhZGRpbmcgYnl0ZXMgYXQgdGhlIGVuZCBvZiBlYWNoIGxpbmUuIERyaXZlcnMgaG93ZXZlciBtYXkKK2lnbm9yZSB0aGUgcmVxdWVzdGVkIHZhbHVlLCByZXR1cm5pbmcgPHN0cnVjdGZpZWxkPndpZHRoPC9zdHJ1Y3RmaWVsZD4KK3RpbWVzIGJ5dGVzLXBlci1waXhlbCBvciBhIGxhcmdlciB2YWx1ZSByZXF1aXJlZCBieSB0aGUgaGFyZHdhcmUuIFRoYXQKK2ltcGxpZXMgYXBwbGljYXRpb25zIGNhbiBqdXN0IHNldCB0aGlzIGZpZWxkIHRvIHplcm8gdG8gZ2V0IGEKK3JlYXNvbmFibGUgZGVmYXVsdC48L3BhcmE+PHBhcmE+Rm9yIDx3b3JkYXN3b3JkPlZpZGVvIE91dHB1dAorT3ZlcmxheXM8L3dvcmRhc3dvcmQ+IHRoZSBkcml2ZXIgbXVzdCByZXR1cm4gYSB2YWxpZAordmFsdWUuPC9wYXJhPjxwYXJhPlZpZGVvIGhhcmR3YXJlIG1heSBhY2Nlc3MgcGFkZGluZyBieXRlcywgdGhlcmVmb3JlCit0aGV5IG11c3QgcmVzaWRlIGluIGFjY2Vzc2libGUgbWVtb3J5LiBDb25zaWRlciBmb3IgZXhhbXBsZSB0aGUgY2FzZQord2hlcmUgcGFkZGluZyBieXRlcyBhZnRlciB0aGUgbGFzdCBsaW5lIG9mIGFuIGltYWdlIGNyb3NzIGEgc3lzdGVtCitwYWdlIGJvdW5kYXJ5LiBDYXB0dXJlIGRldmljZXMgbWF5IHdyaXRlIHBhZGRpbmcgYnl0ZXMsIHRoZSB2YWx1ZSBpcwordW5kZWZpbmVkLiBPdXRwdXQgZGV2aWNlcyBpZ25vcmUgdGhlIGNvbnRlbnRzIG9mIHBhZGRpbmcKK2J5dGVzLjwvcGFyYT48cGFyYT5XaGVuIHRoZSBpbWFnZSBmb3JtYXQgaXMgcGxhbmFyIHRoZQorPHN0cnVjdGZpZWxkPmJ5dGVzcGVybGluZTwvc3RydWN0ZmllbGQ+IHZhbHVlIGFwcGxpZXMgdG8gdGhlIGZpcnN0CitwbGFuZSBhbmQgaXMgZGl2aWRlZCBieSB0aGUgc2FtZSBmYWN0b3IgYXMgdGhlCis8c3RydWN0ZmllbGQ+d2lkdGg8L3N0cnVjdGZpZWxkPiBmaWVsZCBmb3IgdGhlIG90aGVyIHBsYW5lcy4gRm9yCitleGFtcGxlIHRoZSBDYiBhbmQgQ3IgcGxhbmVzIG9mIGEgWVVWIDQ6MjowIGltYWdlIGhhdmUgaGFsZiBhcyBtYW55CitwYWRkaW5nIGJ5dGVzIGZvbGxvd2luZyBlYWNoIGxpbmUgYXMgdGhlIFkgcGxhbmUuIFRvIGF2b2lkIGFtYmlndWl0aWVzCitkcml2ZXJzIG11c3QgcmV0dXJuIGEgPHN0cnVjdGZpZWxkPmJ5dGVzcGVybGluZTwvc3RydWN0ZmllbGQ+IHZhbHVlCityb3VuZGVkIHVwIHRvIGEgbXVsdGlwbGUgb2YgdGhlIHNjYWxlIGZhY3Rvci48L3BhcmE+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+c2l6ZWltYWdlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PHBhcmE+VGhpcyBmaWVsZCBpcyBpcnJlbGV2YW50IHRvCis8d29yZGFzd29yZD5ub24tZGVzdHJ1Y3RpdmUgVmlkZW8gT3ZlcmxheXM8L3dvcmRhc3dvcmQ+LiBGb3IKKzx3b3JkYXN3b3JkPmRlc3RydWN0aXZlIFZpZGVvIE92ZXJsYXlzPC93b3JkYXN3b3JkPiBhcHBsaWNhdGlvbnMgbXVzdAoraW5pdGlhbGl6ZSB0aGlzIGZpZWxkLiBGb3IgPHdvcmRhc3dvcmQ+VmlkZW8gT3V0cHV0CitPdmVybGF5czwvd29yZGFzd29yZD4gdGhlIGRyaXZlciBtdXN0IHJldHVybiBhIHZhbGlkCitmb3JtYXQuPC9wYXJhPjxwYXJhPlRvZ2V0aGVyIHdpdGggPHN0cnVjdGZpZWxkPmJhc2U8L3N0cnVjdGZpZWxkPiBpdAorZGVmaW5lcyB0aGUgZnJhbWVidWZmZXIgbWVtb3J5IGFjY2Vzc2libGUgYnkgdGhlCitkcml2ZXIuPC9wYXJhPjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+JnY0bDItY29sb3JzcGFjZTs8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmNvbG9yc3BhY2U8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGlzIGluZm9ybWF0aW9uIHN1cHBsZW1lbnRzIHRoZQorPHN0cnVjdGZpZWxkPnBpeGVsZm9ybWF0PC9zdHJ1Y3RmaWVsZD4gYW5kIG11c3QgYmUgc2V0IGJ5IHRoZSBkcml2ZXIsCitzZWUgPHhyZWYgbGlua2VuZD0iY29sb3JzcGFjZXMiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnByaXY8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5SZXNlcnZlZC4gRHJpdmVycyBhbmQgYXBwbGljYXRpb25zIG11c3Qgc2V0IHRoaXMgZmllbGQgdG8KK3plcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJmcmFtZWJ1ZmZlci1jYXAiPgorICAgICAgPHRpdGxlPkZyYW1lIEJ1ZmZlciBDYXBhYmlsaXR5IEZsYWdzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0ZCVUZfQ0FQX0VYVEVSTk9WRVJMQVk8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDE8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGRldmljZSBpcyBjYXBhYmxlIG9mIG5vbi1kZXN0cnVjdGl2ZSBvdmVybGF5cy4KK1doZW4gdGhlIGRyaXZlciBjbGVhcnMgdGhpcyBmbGFnLCBvbmx5IGRlc3RydWN0aXZlIG92ZXJsYXlzIGFyZQorc3VwcG9ydGVkLiBUaGVyZSBhcmUgbm8gZHJpdmVycyB5ZXQgd2hpY2ggc3VwcG9ydCBib3RoIGRlc3RydWN0aXZlIGFuZAorbm9uLWRlc3RydWN0aXZlIG92ZXJsYXlzLiBWaWRlbyBPdXRwdXQgT3ZlcmxheXMgYXJlIGluIHByYWN0aWNlIGFsd2F5cworbm9uLWRlc3RydWN0aXZlLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9GQlVGX0NBUF9DSFJPTUFLRVk8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDI8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGRldmljZSBzdXBwb3J0cyBjbGlwcGluZyBieSBjaHJvbWEta2V5aW5nIHRoZQoraW1hZ2VzLiBUaGF0IGlzLCBpbWFnZSBwaXhlbHMgcmVwbGFjZSBwaXhlbHMgaW4gdGhlIFZHQSBvciB2aWRlbworc2lnbmFsIG9ubHkgd2hlcmUgdGhlIGxhdHRlciBhc3N1bWUgYSBjZXJ0YWluIGNvbG9yLiBDaHJvbWEta2V5aW5nCittYWtlcyBubyBzZW5zZSBmb3IgZGVzdHJ1Y3RpdmUgb3ZlcmxheXMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0ZCVUZfQ0FQX0xJU1RfQ0xJUFBJTkc8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDQ8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGRldmljZSBzdXBwb3J0cyBjbGlwcGluZyB1c2luZyBhIGxpc3Qgb2YgY2xpcAorcmVjdGFuZ2xlcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRkJVRl9DQVBfQklUTUFQX0NMSVBQSU5HPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDA4PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBkZXZpY2Ugc3VwcG9ydHMgY2xpcHBpbmcgdXNpbmcgYSBiaXQgbWFzay48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfRkJVRl9DQVBfTE9DQUxfQUxQSEE8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMTA8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGRldmljZSBzdXBwb3J0cyBjbGlwcGluZy9ibGVuZGluZyB1c2luZyB0aGUKK2FscGhhIGNoYW5uZWwgb2YgdGhlIGZyYW1lYnVmZmVyIG9yIFZHQSBzaWduYWwuIEFscGhhIGJsZW5kaW5nIG1ha2VzCitubyBzZW5zZSBmb3IgZGVzdHJ1Y3RpdmUgb3ZlcmxheXMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0ZCVUZfQ0FQX0dMT0JBTF9BTFBIQTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAyMDwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgZGV2aWNlIHN1cHBvcnRzIGFscGhhIGJsZW5kaW5nIHVzaW5nIGEgZ2xvYmFsCithbHBoYSB2YWx1ZS4gQWxwaGEgYmxlbmRpbmcgbWFrZXMgbm8gc2Vuc2UgZm9yIGRlc3RydWN0aXZlIG92ZXJsYXlzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9GQlVGX0NBUF9MT0NBTF9JTlZfQUxQSEE8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwNDA8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGRldmljZSBzdXBwb3J0cyBjbGlwcGluZy9ibGVuZGluZyB1c2luZyB0aGUKK2ludmVydGVkIGFscGhhIGNoYW5uZWwgb2YgdGhlIGZyYW1lYnVmZmVyIG9yIFZHQSBzaWduYWwuIEFscGhhCitibGVuZGluZyBtYWtlcyBubyBzZW5zZSBmb3IgZGVzdHJ1Y3RpdmUgb3ZlcmxheXMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0ZCVUZfQ0FQX1NSQ19DSFJPTUFLRVk8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwODA8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGRldmljZSBzdXBwb3J0cyBTb3VyY2UgQ2hyb21hLWtleWluZy4gVmlkZW8gcGl4ZWxzCit3aXRoIHRoZSBjaHJvbWEta2V5IGNvbG9ycyBhcmUgcmVwbGFjZWQgYnkgZnJhbWVidWZmZXIgcGl4ZWxzLCB3aGljaCBpcyBleGFjdGx5IG9wcG9zaXRlIG9mCis8Y29uc3RhbnQ+VjRMMl9GQlVGX0NBUF9DSFJPTUFLRVk8L2NvbnN0YW50PjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iZnJhbWVidWZmZXItZmxhZ3MiPgorICAgICAgPHRpdGxlPkZyYW1lIEJ1ZmZlciBGbGFnczwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1kZWY7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9GQlVGX0ZMQUdfUFJJTUFSWTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMTwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgZnJhbWVidWZmZXIgaXMgdGhlIHByaW1hcnkgZ3JhcGhpY3Mgc3VyZmFjZS4KK0luIG90aGVyIHdvcmRzLCB0aGUgb3ZlcmxheSBpcyBkZXN0cnVjdGl2ZS4gVGhpcyBmbGFnIGlzIHR5cGljYWxseSBzZXQgYnkgYW55Citkcml2ZXIgdGhhdCBkb2Vzbid0IGhhdmUgdGhlIDxjb25zdGFudD5WNEwyX0ZCVUZfQ0FQX0VYVEVSTk9WRVJMQVk8L2NvbnN0YW50PgorY2FwYWJpbGl0eSBhbmQgaXQgaXMgY2xlYXJlZCBvdGhlcndpc2UuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0ZCVUZfRkxBR19PVkVSTEFZPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAyPC9lbnRyeT4KKwkgICAgPGVudHJ5PklmIHRoaXMgZmxhZyBpcyBzZXQgZm9yIGEgdmlkZW8gY2FwdHVyZSBkZXZpY2UsIHRoZW4gdGhlCitkcml2ZXIgd2lsbCBzZXQgdGhlIGluaXRpYWwgb3ZlcmxheSBzaXplIHRvIGNvdmVyIHRoZSBmdWxsIGZyYW1lYnVmZmVyIHNpemUsCitvdGhlcndpc2UgdGhlIGV4aXN0aW5nIG92ZXJsYXkgc2l6ZSAoYXMgc2V0IGJ5ICZWSURJT0MtUy1GTVQ7KSB3aWxsIGJlIHVzZWQuCisKK09ubHkgb25lIHZpZGVvIGNhcHR1cmUgZHJpdmVyIChidHR2KSBzdXBwb3J0cyB0aGlzIGZsYWcuIFRoZSB1c2Ugb2YgdGhpcyBmbGFnCitmb3IgY2FwdHVyZSBkZXZpY2VzIGlzIGRlcHJlY2F0ZWQuIFRoZXJlIGlzIG5vIHdheSB0byBkZXRlY3Qgd2hpY2ggZHJpdmVycworc3VwcG9ydCB0aGlzIGZsYWcsIHNvIHRoZSBvbmx5IHJlbGlhYmxlIG1ldGhvZCBvZiBzZXR0aW5nIHRoZSBvdmVybGF5IHNpemUgaXMKK3Rocm91Z2ggJlZJRElPQy1TLUZNVDsuCisKK0lmIHRoaXMgZmxhZyBpcyBzZXQgZm9yIGEgdmlkZW8gb3V0cHV0IGRldmljZSwgdGhlbiB0aGUgdmlkZW8gb3V0cHV0IG92ZXJsYXkKK3dpbmRvdyBpcyByZWxhdGl2ZSB0byB0aGUgdG9wLWxlZnQgY29ybmVyIG9mIHRoZSBmcmFtZWJ1ZmZlciBhbmQgcmVzdHJpY3RlZAordG8gdGhlIHNpemUgb2YgdGhlIGZyYW1lYnVmZmVyLiBJZiBpdCBpcyBjbGVhcmVkLCB0aGVuIHRoZSB2aWRlbyBvdXRwdXQKK292ZXJsYXkgd2luZG93IGlzIHJlbGF0aXZlIHRvIHRoZSB2aWRlbyBvdXRwdXQgZGlzcGxheS4KKyAgICAgICAgICAgIDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9GQlVGX0ZMQUdfQ0hST01BS0VZPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDA0PC9lbnRyeT4KKwkgICAgPGVudHJ5PlVzZSBjaHJvbWEta2V5aW5nLiBUaGUgY2hyb21hLWtleSBjb2xvciBpcworZGV0ZXJtaW5lZCBieSB0aGUgPHN0cnVjdGZpZWxkPmNocm9tYWtleTwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mCismdjRsMi13aW5kb3c7IGFuZCBuZWdvdGlhdGVkIHdpdGggdGhlICZWSURJT0MtUy1GTVQ7IGlvY3RsLCBzZWUgPHhyZWYKKwkJbGlua2VuZD0ib3ZlcmxheSIgLz4KK2FuZAorCSAgICA8eHJlZiBsaW5rZW5kPSJvc2QiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaHNwYW4iPlRoZXJlIGFyZSBubyBmbGFncyB0byBlbmFibGUKK2NsaXBwaW5nIHVzaW5nIGEgbGlzdCBvZiBjbGlwIHJlY3RhbmdsZXMgb3IgYSBiaXRtYXAuIFRoZXNlIG1ldGhvZHMKK2FyZSBuZWdvdGlhdGVkIHdpdGggdGhlICZWSURJT0MtUy1GTVQ7IGlvY3RsLCBzZWUgPHhyZWYKKwkJbGlua2VuZD0ib3ZlcmxheSIgLz4gYW5kIDx4cmVmIGxpbmtlbmQ9Im9zZCIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0ZCVUZfRkxBR19MT0NBTF9BTFBIQTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwODwvZW50cnk+CisJICAgIDxlbnRyeT5Vc2UgdGhlIGFscGhhIGNoYW5uZWwgb2YgdGhlIGZyYW1lYnVmZmVyIHRvIGNsaXAgb3IKK2JsZW5kIGZyYW1lYnVmZmVyIHBpeGVscyB3aXRoIHZpZGVvIGltYWdlcy4gVGhlIGJsZW5kCitmdW5jdGlvbiBpczogb3V0cHV0ID0gZnJhbWVidWZmZXIgcGl4ZWwgKiBhbHBoYSArIHZpZGVvIHBpeGVsICogKDEgLQorYWxwaGEpLiBUaGUgYWN0dWFsIGFscGhhIGRlcHRoIGRlcGVuZHMgb24gdGhlIGZyYW1lYnVmZmVyIHBpeGVsCitmb3JtYXQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0ZCVUZfRkxBR19HTE9CQUxfQUxQSEE8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMTA8L2VudHJ5PgorCSAgICA8ZW50cnk+VXNlIGEgZ2xvYmFsIGFscGhhIHZhbHVlIHRvIGJsZW5kIHRoZSBmcmFtZWJ1ZmZlcgord2l0aCB2aWRlbyBpbWFnZXMuIFRoZSBibGVuZCBmdW5jdGlvbiBpczogb3V0cHV0ID0gKGZyYW1lYnVmZmVyIHBpeGVsCisqIGFscGhhICsgdmlkZW8gcGl4ZWwgKiAoMjU1IC0gYWxwaGEpKSAvIDI1NS4gVGhlIGFscGhhIHZhbHVlIGlzCitkZXRlcm1pbmVkIGJ5IHRoZSA8c3RydWN0ZmllbGQ+Z2xvYmFsX2FscGhhPC9zdHJ1Y3RmaWVsZD4gZmllbGQgb2YKKyZ2NGwyLXdpbmRvdzsgYW5kIG5lZ290aWF0ZWQgd2l0aCB0aGUgJlZJRElPQy1TLUZNVDsgaW9jdGwsIHNlZSA8eHJlZgorCQlsaW5rZW5kPSJvdmVybGF5IiAvPgorYW5kIDx4cmVmIGxpbmtlbmQ9Im9zZCIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0ZCVUZfRkxBR19MT0NBTF9JTlZfQUxQSEE8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMjA8L2VudHJ5PgorCSAgICA8ZW50cnk+TGlrZQorPGNvbnN0YW50PlY0TDJfRkJVRl9GTEFHX0xPQ0FMX0FMUEhBPC9jb25zdGFudD4sIHVzZSB0aGUgYWxwaGEgY2hhbm5lbAorb2YgdGhlIGZyYW1lYnVmZmVyIHRvIGNsaXAgb3IgYmxlbmQgZnJhbWVidWZmZXIgcGl4ZWxzIHdpdGggdmlkZW8KK2ltYWdlcywgYnV0IHdpdGggYW4gaW52ZXJ0ZWQgYWxwaGEgdmFsdWUuIFRoZSBibGVuZCBmdW5jdGlvbiBpczoKK291dHB1dCA9IGZyYW1lYnVmZmVyIHBpeGVsICogKDEgLSBhbHBoYSkgKyB2aWRlbyBwaXhlbCAqIGFscGhhLiBUaGUKK2FjdHVhbCBhbHBoYSBkZXB0aCBkZXBlbmRzIG9uIHRoZSBmcmFtZWJ1ZmZlciBwaXhlbCBmb3JtYXQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0ZCVUZfRkxBR19TUkNfQ0hST01BS0VZPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDQwPC9lbnRyeT4KKwkgICAgPGVudHJ5PlVzZSBzb3VyY2UgY2hyb21hLWtleWluZy4gVGhlIHNvdXJjZSBjaHJvbWEta2V5IGNvbG9yIGlzCitkZXRlcm1pbmVkIGJ5IHRoZSA8c3RydWN0ZmllbGQ+Y2hyb21ha2V5PC9zdHJ1Y3RmaWVsZD4gZmllbGQgb2YKKyZ2NGwyLXdpbmRvdzsgYW5kIG5lZ290aWF0ZWQgd2l0aCB0aGUgJlZJRElPQy1TLUZNVDsgaW9jdGwsIHNlZSA8eHJlZgorbGlua2VuZD0ib3ZlcmxheSIgLz4gYW5kIDx4cmVmIGxpbmtlbmQ9Im9zZCIgLz4uCitCb3RoIGNocm9tYS1rZXlpbmcgYXJlIG11dHVhbCBleGNsdXNpdmUgdG8gZWFjaCBvdGhlciwgc28gc2FtZQorPHN0cnVjdGZpZWxkPmNocm9tYWtleTwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mICZ2NGwyLXdpbmRvdzsgaXMgYmVpbmcgdXNlZC48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVQRVJNPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjxjb25zdGFudD5WSURJT0NfU19GQlVGPC9jb25zdGFudD4gY2FuIG9ubHkgYmUgY2FsbGVkCitieSBhIHByaXZpbGVnZWQgdXNlciB0byBuZWdvdGlhdGUgdGhlIHBhcmFtZXRlcnMgZm9yIGEgZGVzdHJ1Y3RpdmUKK292ZXJsYXkuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FSU5WQUw8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIDxjb25zdGFudD5WSURJT0NfU19GQlVGPC9jb25zdGFudD4gcGFyYW1ldGVycyBhcmUgdW5zdWl0YWJsZS48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWctZm10LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWctZm10LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmNiNDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1mbXQueG1sCkBAIC0wLDAgKzEsMjA0IEBACis8cmVmZW50cnkgaWQ9InZpZGlvYy1nLWZtdCI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19HX0ZNVCwgVklESU9DX1NfRk1ULAorVklESU9DX1RSWV9GTVQ8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPlZJRElPQ19HX0ZNVDwvcmVmbmFtZT4KKyAgICA8cmVmbmFtZT5WSURJT0NfU19GTVQ8L3JlZm5hbWU+CisgICAgPHJlZm5hbWU+VklESU9DX1RSWV9GTVQ8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+R2V0IG9yIHNldCB0aGUgZGF0YSBmb3JtYXQsIHRyeSBhIGZvcm1hdDwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zdHJ1Y3QgdjRsMl9mb3JtYXQKKyo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfR19GTVQsIFZJRElPQ19TX0ZNVCwgVklESU9DX1RSWV9GTVQ8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPlRoZXNlIGlvY3RscyBhcmUgdXNlZCB0byBuZWdvdGlhdGUgdGhlIGZvcm1hdCBvZiBkYXRhCisodHlwaWNhbGx5IGltYWdlIGZvcm1hdCkgZXhjaGFuZ2VkIGJldHdlZW4gZHJpdmVyIGFuZAorYXBwbGljYXRpb24uPC9wYXJhPgorCisgICAgPHBhcmE+VG8gcXVlcnkgdGhlIGN1cnJlbnQgcGFyYW1ldGVycyBhcHBsaWNhdGlvbnMgc2V0IHRoZQorPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiBhIHN0cnVjdAorPHN0cnVjdG5hbWU+djRsMl9mb3JtYXQ8L3N0cnVjdG5hbWU+IHRvIHRoZSByZXNwZWN0aXZlIGJ1ZmZlciAoc3RyZWFtKQordHlwZS4gRm9yIGV4YW1wbGUgdmlkZW8gY2FwdHVyZSBkZXZpY2VzIHVzZQorPGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTwvY29uc3RhbnQ+IG9yCis8Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFX01QTEFORTwvY29uc3RhbnQ+LiBXaGVuIHRoZSBhcHBsaWNhdGlvbgorY2FsbHMgdGhlIDxjb25zdGFudD5WSURJT0NfR19GTVQ8L2NvbnN0YW50PiBpb2N0bCB3aXRoIGEgcG9pbnRlciB0bwordGhpcyBzdHJ1Y3R1cmUgdGhlIGRyaXZlciBmaWxscyB0aGUgcmVzcGVjdGl2ZSBtZW1iZXIgb2YgdGhlCis8c3RydWN0ZmllbGQ+Zm10PC9zdHJ1Y3RmaWVsZD4gdW5pb24uIEluIGNhc2Ugb2YgdmlkZW8gY2FwdHVyZSBkZXZpY2VzCit0aGF0IGlzIGVpdGhlciB0aGUgJnY0bDItcGl4LWZvcm1hdDsgPHN0cnVjdGZpZWxkPnBpeDwvc3RydWN0ZmllbGQ+IG9yCit0aGUgJnY0bDItcGl4LWZvcm1hdC1tcGxhbmU7IDxzdHJ1Y3RmaWVsZD5waXhfbXA8L3N0cnVjdGZpZWxkPiBtZW1iZXIuCitXaGVuIHRoZSByZXF1ZXN0ZWQgYnVmZmVyIHR5cGUgaXMgbm90IHN1cHBvcnRlZCBkcml2ZXJzIHJldHVybiBhbgorJkVJTlZBTDsuPC9wYXJhPgorCisgICAgPHBhcmE+VG8gY2hhbmdlIHRoZSBjdXJyZW50IGZvcm1hdCBwYXJhbWV0ZXJzIGFwcGxpY2F0aW9ucworaW5pdGlhbGl6ZSB0aGUgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZCBhbmQgYWxsCitmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgPHN0cnVjdGZpZWxkPmZtdDwvc3RydWN0ZmllbGQ+Cit1bmlvbiBtZW1iZXIuIEZvciBkZXRhaWxzIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgdmFyaW91cyBkZXZpY2VzCit0eXBlcyBpbiA8eHJlZiBsaW5rZW5kPSJkZXZpY2VzIiAvPi4gR29vZCBwcmFjdGljZSBpcyB0byBxdWVyeSB0aGUKK2N1cnJlbnQgcGFyYW1ldGVycyBmaXJzdCwgYW5kIHRvCittb2RpZnkgb25seSB0aG9zZSBwYXJhbWV0ZXJzIG5vdCBzdWl0YWJsZSBmb3IgdGhlIGFwcGxpY2F0aW9uLiBXaGVuCit0aGUgYXBwbGljYXRpb24gY2FsbHMgdGhlIDxjb25zdGFudD5WSURJT0NfU19GTVQ8L2NvbnN0YW50PiBpb2N0bAord2l0aCBhIHBvaW50ZXIgdG8gYSA8c3RydWN0bmFtZT52NGwyX2Zvcm1hdDwvc3RydWN0bmFtZT4gc3RydWN0dXJlCit0aGUgZHJpdmVyIGNoZWNrcworYW5kIGFkanVzdHMgdGhlIHBhcmFtZXRlcnMgYWdhaW5zdCBoYXJkd2FyZSBhYmlsaXRpZXMuIERyaXZlcnMKK3Nob3VsZCBub3QgcmV0dXJuIGFuIGVycm9yIGNvZGUgdW5sZXNzIHRoZSA8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IGZpZWxkIGlzIGludmFsaWQsIHRoaXMgaXMKK2EgbWVjaGFuaXNtIHRvIGZhdGhvbSBkZXZpY2UgY2FwYWJpbGl0aWVzIGFuZCB0byBhcHByb2FjaCBwYXJhbWV0ZXJzCithY2NlcHRhYmxlIGZvciBib3RoIHRoZSBhcHBsaWNhdGlvbiBhbmQgZHJpdmVyLiBPbiBzdWNjZXNzIHRoZSBkcml2ZXIKK21heSBwcm9ncmFtIHRoZSBoYXJkd2FyZSwgYWxsb2NhdGUgcmVzb3VyY2VzIGFuZCBnZW5lcmFsbHkgcHJlcGFyZSBmb3IKK2RhdGEgZXhjaGFuZ2UuCitGaW5hbGx5IHRoZSA8Y29uc3RhbnQ+VklESU9DX1NfRk1UPC9jb25zdGFudD4gaW9jdGwgcmV0dXJucyB0aGUKK2N1cnJlbnQgZm9ybWF0IHBhcmFtZXRlcnMgYXMgPGNvbnN0YW50PlZJRElPQ19HX0ZNVDwvY29uc3RhbnQ+IGRvZXMuCitWZXJ5IHNpbXBsZSwgaW5mbGV4aWJsZSBkZXZpY2VzIG1heSBldmVuIGlnbm9yZSBhbGwgaW5wdXQgYW5kIGFsd2F5cworcmV0dXJuIHRoZSBkZWZhdWx0IHBhcmFtZXRlcnMuIEhvd2V2ZXIgYWxsIFY0TDIgZGV2aWNlcyBleGNoYW5naW5nCitkYXRhIHdpdGggdGhlIGFwcGxpY2F0aW9uIG11c3QgaW1wbGVtZW50IHRoZQorPGNvbnN0YW50PlZJRElPQ19HX0ZNVDwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlZJRElPQ19TX0ZNVDwvY29uc3RhbnQ+IGlvY3RsLiBXaGVuIHRoZSByZXF1ZXN0ZWQgYnVmZmVyCit0eXBlIGlzIG5vdCBzdXBwb3J0ZWQgZHJpdmVycyByZXR1cm4gYW4gJkVJTlZBTDsgb24gYQorPGNvbnN0YW50PlZJRElPQ19TX0ZNVDwvY29uc3RhbnQ+IGF0dGVtcHQuIFdoZW4gSS9PIGlzIGFscmVhZHkgaW4KK3Byb2dyZXNzIG9yIHRoZSByZXNvdXJjZSBpcyBub3QgYXZhaWxhYmxlIGZvciBvdGhlciByZWFzb25zIGRyaXZlcnMKK3JldHVybiB0aGUgJkVCVVNZOy48L3BhcmE+CisKKyAgICA8cGFyYT5UaGUgPGNvbnN0YW50PlZJRElPQ19UUllfRk1UPC9jb25zdGFudD4gaW9jdGwgaXMgZXF1aXZhbGVudAordG8gPGNvbnN0YW50PlZJRElPQ19TX0ZNVDwvY29uc3RhbnQ+IHdpdGggb25lIGV4Y2VwdGlvbjogaXQgZG9lcyBub3QKK2NoYW5nZSBkcml2ZXIgc3RhdGUuIEl0IGNhbiBhbHNvIGJlIGNhbGxlZCBhdCBhbnkgdGltZSwgbmV2ZXIKK3JldHVybmluZyA8ZXJyb3Jjb2RlPkVCVVNZPC9lcnJvcmNvZGU+LiBUaGlzIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIHRvCituZWdvdGlhdGUgcGFyYW1ldGVycywgdG8gbGVhcm4gYWJvdXQgaGFyZHdhcmUgbGltaXRhdGlvbnMsIHdpdGhvdXQKK2Rpc2FibGluZyBJL08gb3IgcG9zc2libHkgdGltZSBjb25zdW1pbmcgaGFyZHdhcmUgcHJlcGFyYXRpb25zLgorQWx0aG91Z2ggc3Ryb25nbHkgcmVjb21tZW5kZWQgZHJpdmVycyBhcmUgbm90IHJlcXVpcmVkIHRvIGltcGxlbWVudAordGhpcyBpb2N0bC48L3BhcmE+CisKKyAgICA8cGFyYT5UaGUgZm9ybWF0IGFzIHJldHVybmVkIGJ5IDxjb25zdGFudD5WSURJT0NfVFJZX0ZNVDwvY29uc3RhbnQ+CittdXN0IGJlIGlkZW50aWNhbCB0byB3aGF0IDxjb25zdGFudD5WSURJT0NfU19GTVQ8L2NvbnN0YW50PiByZXR1cm5zIGZvcgordGhlIHNhbWUgaW5wdXQgb3Igb3V0cHV0LjwvcGFyYT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1mb3JtYXQiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2Zvcm1hdDwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSI0Ij4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMSIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMiIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMyIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjNCIgLz4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlR5cGUgb2YgdGhlIGRhdGEgc3RyZWFtLCBzZWUgPHhyZWYKKwkJbGlua2VuZD0idjRsMi1idWYtdHlwZSIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PnVuaW9uPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5mbXQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+JnY0bDItcGl4LWZvcm1hdDs8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnBpeDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkRlZmluaXRpb24gb2YgYW4gaW1hZ2UgZm9ybWF0LCBzZWUgPHhyZWYKKwkJbGlua2VuZD0icGl4Zm10IiAvPiwgdXNlZCBieSB2aWRlbyBjYXB0dXJlIGFuZCBvdXRwdXQKK2RldmljZXMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT4mdjRsMi1waXgtZm9ybWF0LW1wbGFuZTs8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnBpeF9tcDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkRlZmluaXRpb24gb2YgYW4gaW1hZ2UgZm9ybWF0LCBzZWUgPHhyZWYKKwkJbGlua2VuZD0icGl4Zm10IiAvPiwgdXNlZCBieSB2aWRlbyBjYXB0dXJlIGFuZCBvdXRwdXQKK2RldmljZXMgdGhhdCBzdXBwb3J0IHRoZSA8bGluayBsaW5rZW5kPSJwbGFuYXItYXBpcyI+bXVsdGktcGxhbmFyCit2ZXJzaW9uIG9mIHRoZSBBUEk8L2xpbms+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+JnY0bDItd2luZG93OzwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+d2luPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+RGVmaW5pdGlvbiBvZiBhbiBvdmVybGFpZCBpbWFnZSwgc2VlIDx4cmVmCisJICAgIGxpbmtlbmQ9Im92ZXJsYXkiIC8+LCB1c2VkIGJ5IHZpZGVvIG92ZXJsYXkgZGV2aWNlcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PiZ2NGwyLXZiaS1mb3JtYXQ7PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD52Ymk8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5SYXcgVkJJIGNhcHR1cmUgb3Igb3V0cHV0IHBhcmFtZXRlcnMuIFRoaXMgaXMKK2Rpc2N1c3NlZCBpbiBtb3JlIGRldGFpbCBpbiA8eHJlZiBsaW5rZW5kPSJyYXctdmJpIiAvPi4gVXNlZCBieSByYXcgVkJJCitjYXB0dXJlIGFuZCBvdXRwdXQgZGV2aWNlcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PiZ2NGwyLXNsaWNlZC12YmktZm9ybWF0OzwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+c2xpY2VkPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+U2xpY2VkIFZCSSBjYXB0dXJlIG9yIG91dHB1dCBwYXJhbWV0ZXJzLiBTZWUKKzx4cmVmIGxpbmtlbmQ9InNsaWNlZCIgLz4gZm9yIGRldGFpbHMuIFVzZWQgYnkgc2xpY2VkIFZCSQorY2FwdHVyZSBhbmQgb3V0cHV0IGRldmljZXMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT4mdjRsMi1zZHItZm9ybWF0OzwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+c2RyPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+RGVmaW5pdGlvbiBvZiBhIGRhdGEgZm9ybWF0LCBzZWUKKzx4cmVmIGxpbmtlbmQ9InBpeGZtdCIgLz4sIHVzZWQgYnkgU0RSIGNhcHR1cmUgYW5kIG91dHB1dCBkZXZpY2VzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+X191ODwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cmF3X2RhdGE8L3N0cnVjdGZpZWxkPlsyMDBdPC9lbnRyeT4KKwkgICAgPGVudHJ5PlBsYWNlIGhvbGRlciBmb3IgZnV0dXJlIGV4dGVuc2lvbnMuPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICAmcmV0dXJuLXZhbHVlOworCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FSU5WQUw8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlICZ2NGwyLWZvcm1hdDsgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPgorZmllbGQgaXMgaW52YWxpZCBvciB0aGUgcmVxdWVzdGVkIGJ1ZmZlciB0eXBlIG5vdCBzdXBwb3J0ZWQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLWZyZXF1ZW5jeS54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLWZyZXF1ZW5jeS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDEwMzRmYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWctZnJlcXVlbmN5LnhtbApAQCAtMCwwICsxLDE0OCBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2MtZy1mcmVxdWVuY3kiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBWSURJT0NfR19GUkVRVUVOQ1ksIFZJRElPQ19TX0ZSRVFVRU5DWTwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX0dfRlJFUVVFTkNZPC9yZWZuYW1lPgorICAgIDxyZWZuYW1lPlZJRElPQ19TX0ZSRVFVRU5DWTwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5HZXQgb3Igc2V0IHR1bmVyIG9yIG1vZHVsYXRvciByYWRpbworZnJlcXVlbmN5PC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCB2NGwyX2ZyZXF1ZW5jeQorKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+Y29uc3Qgc3RydWN0IHY0bDJfZnJlcXVlbmN5CisqPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPiZmZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VklESU9DX0dfRlJFUVVFTkNZLCBWSURJT0NfU19GUkVRVUVOQ1k8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPlRvIGdldCB0aGUgY3VycmVudCB0dW5lciBvciBtb2R1bGF0b3IgcmFkaW8gZnJlcXVlbmN5CithcHBsaWNhdGlvbnMgc2V0IHRoZSA8c3RydWN0ZmllbGQ+dHVuZXI8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiBhCismdjRsMi1mcmVxdWVuY3k7IHRvIHRoZSByZXNwZWN0aXZlIHR1bmVyIG9yIG1vZHVsYXRvciBudW1iZXIgKG9ubHkKK2lucHV0IGRldmljZXMgaGF2ZSB0dW5lcnMsIG9ubHkgb3V0cHV0IGRldmljZXMgaGF2ZSBtb2R1bGF0b3JzKSwgemVybworb3V0IHRoZSA8c3RydWN0ZmllbGQ+cmVzZXJ2ZWQ8L3N0cnVjdGZpZWxkPiBhcnJheSBhbmQKK2NhbGwgdGhlIDxjb25zdGFudD5WSURJT0NfR19GUkVRVUVOQ1k8L2NvbnN0YW50PiBpb2N0bCB3aXRoIGEgcG9pbnRlcgordG8gdGhpcyBzdHJ1Y3R1cmUuIFRoZSBkcml2ZXIgc3RvcmVzIHRoZSBjdXJyZW50IGZyZXF1ZW5jeSBpbiB0aGUKKzxzdHJ1Y3RmaWVsZD5mcmVxdWVuY3k8L3N0cnVjdGZpZWxkPiBmaWVsZC48L3BhcmE+CisKKyAgICA8cGFyYT5UbyBjaGFuZ2UgdGhlIGN1cnJlbnQgdHVuZXIgb3IgbW9kdWxhdG9yIHJhZGlvIGZyZXF1ZW5jeQorYXBwbGljYXRpb25zIGluaXRpYWxpemUgdGhlIDxzdHJ1Y3RmaWVsZD50dW5lcjwvc3RydWN0ZmllbGQ+LAorPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBhbmQKKzxzdHJ1Y3RmaWVsZD5mcmVxdWVuY3k8L3N0cnVjdGZpZWxkPiBmaWVsZHMsIGFuZCB0aGUKKzxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+IGFycmF5IG9mIGEgJnY0bDItZnJlcXVlbmN5OyBhbmQKK2NhbGwgdGhlIDxjb25zdGFudD5WSURJT0NfU19GUkVRVUVOQ1k8L2NvbnN0YW50PiBpb2N0bCB3aXRoIGEgcG9pbnRlcgordG8gdGhpcyBzdHJ1Y3R1cmUuIFdoZW4gdGhlIHJlcXVlc3RlZCBmcmVxdWVuY3kgaXMgbm90IHBvc3NpYmxlIHRoZQorZHJpdmVyIGFzc3VtZXMgdGhlIGNsb3Nlc3QgcG9zc2libGUgdmFsdWUuIEhvd2V2ZXIKKzxjb25zdGFudD5WSURJT0NfU19GUkVRVUVOQ1k8L2NvbnN0YW50PiBpcyBhIHdyaXRlLW9ubHkgaW9jdGwsIGl0IGRvZXMKK25vdCByZXR1cm4gdGhlIGFjdHVhbCBuZXcgZnJlcXVlbmN5LjwvcGFyYT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1mcmVxdWVuY3kiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2ZyZXF1ZW5jeTwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3Mtc3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnR1bmVyPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIHR1bmVyIG9yIG1vZHVsYXRvciBpbmRleCBudW1iZXIuIFRoaXMgaXMgdGhlCitzYW1lIHZhbHVlIGFzIGluIHRoZSAmdjRsMi1pbnB1dDsgPHN0cnVjdGZpZWxkPnR1bmVyPC9zdHJ1Y3RmaWVsZD4KK2ZpZWxkIGFuZCB0aGUgJnY0bDItdHVuZXI7IDxzdHJ1Y3RmaWVsZD5pbmRleDwvc3RydWN0ZmllbGQ+IGZpZWxkLCBvcgordGhlICZ2NGwyLW91dHB1dDsgPHN0cnVjdGZpZWxkPm1vZHVsYXRvcjwvc3RydWN0ZmllbGQ+IGZpZWxkIGFuZCB0aGUKKyZ2NGwyLW1vZHVsYXRvcjsgPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4gZmllbGQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIHR1bmVyIHR5cGUuIFRoaXMgaXMgdGhlIHNhbWUgdmFsdWUgYXMgaW4gdGhlCismdjRsMi10dW5lcjsgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZC4gVGhlIHR5cGUgbXVzdCBiZSBzZXQKK3RvIDxjb25zdGFudD5WNEwyX1RVTkVSX1JBRElPPC9jb25zdGFudD4gZm9yIDxmaWxlbmFtZT4vZGV2L3JhZGlvWDwvZmlsZW5hbWU+CitkZXZpY2Ugbm9kZXMsIGFuZCB0byA8Y29uc3RhbnQ+VjRMMl9UVU5FUl9BTkFMT0dfVFY8L2NvbnN0YW50PgorZm9yIGFsbCBvdGhlcnMuIFNldCB0aGlzIGZpZWxkIHRvIDxjb25zdGFudD5WNEwyX1RVTkVSX1JBRElPPC9jb25zdGFudD4gZm9yCittb2R1bGF0b3JzIChjdXJyZW50bHkgb25seSByYWRpbyBtb2R1bGF0b3JzIGFyZSBzdXBwb3J0ZWQpLgorU2VlIDx4cmVmIGxpbmtlbmQ9InY0bDItdHVuZXItdHlwZSIgLz48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmZyZXF1ZW5jeTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlR1bmluZyBmcmVxdWVuY3kgaW4gdW5pdHMgb2YgNjIuNSBrSHosIG9yIGlmIHRoZQorJnY0bDItdHVuZXI7IG9yICZ2NGwyLW1vZHVsYXRvcjsgPHN0cnVjdGZpZWxkPmNhcGFiaWxpdHk8L3N0cnVjdGZpZWxkPiBmbGFnCis8Y29uc3RhbnQ+VjRMMl9UVU5FUl9DQVBfTE9XPC9jb25zdGFudD4gaXMgc2V0LCBpbiB1bml0cyBvZiA2Mi41CitIei4gQSAxIEh6IHVuaXQgaXMgdXNlZCB3aGVuIHRoZSA8c3RydWN0ZmllbGQ+Y2FwYWJpbGl0eTwvc3RydWN0ZmllbGQ+IGZsYWcKKzxjb25zdGFudD5WNEwyX1RVTkVSX0NBUF8xSFo8L2NvbnN0YW50PiBpcyBzZXQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+WzhdPC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlc2VydmVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucy4gRHJpdmVycyBhbmQKKwkgICAgYXBwbGljYXRpb25zIG11c3Qgc2V0IHRoZSBhcnJheSB0byB6ZXJvLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSA8c3RydWN0ZmllbGQ+dHVuZXI8L3N0cnVjdGZpZWxkPiBpbmRleCBpcyBvdXQgb2YKK2JvdW5kcyBvciB0aGUgdmFsdWUgaW4gdGhlIDxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gZmllbGQgaXMKK3dyb25nLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUJVU1k8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+QSBoYXJkd2FyZSBzZWVrIGlzIGluIHByb2dyZXNzLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1pbnB1dC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLWlucHV0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDQzMDY1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1pbnB1dC54bWwKQEAgLTAsMCArMSw4MyBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2MtZy1pbnB1dCI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19HX0lOUFVULCBWSURJT0NfU19JTlBVVDwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX0dfSU5QVVQ8L3JlZm5hbWU+CisgICAgPHJlZm5hbWU+VklESU9DX1NfSU5QVVQ8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+UXVlcnkgb3Igc2VsZWN0IHRoZSBjdXJyZW50IHZpZGVvIGlucHV0PC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCAqPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPiZmZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VklESU9DX0dfSU5QVVQsIFZJRElPQ19TX0lOUFVUPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5UbyBxdWVyeSB0aGUgY3VycmVudCB2aWRlbyBpbnB1dCBhcHBsaWNhdGlvbnMgY2FsbCB0aGUKKzxjb25zdGFudD5WSURJT0NfR19JTlBVVDwvY29uc3RhbnQ+IGlvY3RsIHdpdGggYSBwb2ludGVyIHRvIGFuIGludGVnZXIKK3doZXJlIHRoZSBkcml2ZXIgc3RvcmVzIHRoZSBudW1iZXIgb2YgdGhlIGlucHV0LCBhcyBpbiB0aGUKKyZ2NGwyLWlucHV0OyA8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPiBmaWVsZC4gVGhpcyBpb2N0bCB3aWxsCitmYWlsIG9ubHkgd2hlbiB0aGVyZSBhcmUgbm8gdmlkZW8gaW5wdXRzLCByZXR1cm5pbmcKKzxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+LjwvcGFyYT4KKworICAgIDxwYXJhPlRvIHNlbGVjdCBhIHZpZGVvIGlucHV0IGFwcGxpY2F0aW9ucyBzdG9yZSB0aGUgbnVtYmVyIG9mIHRoZQorZGVzaXJlZCBpbnB1dCBpbiBhbiBpbnRlZ2VyIGFuZCBjYWxsIHRoZQorPGNvbnN0YW50PlZJRElPQ19TX0lOUFVUPC9jb25zdGFudD4gaW9jdGwgd2l0aCBhIHBvaW50ZXIgdG8gdGhpcworaW50ZWdlci4gU2lkZSBlZmZlY3RzIGFyZSBwb3NzaWJsZS4gRm9yIGV4YW1wbGUgaW5wdXRzIG1heSBzdXBwb3J0CitkaWZmZXJlbnQgdmlkZW8gc3RhbmRhcmRzLCBzbyB0aGUgZHJpdmVyIG1heSBpbXBsaWNpdGx5IHN3aXRjaCB0aGUKK2N1cnJlbnQgc3RhbmRhcmQuIEJlY2F1c2Ugb2YgdGhlc2UgcG9zc2libGUgc2lkZSBlZmZlY3RzIGFwcGxpY2F0aW9ucworbXVzdCBzZWxlY3QgYW4gaW5wdXQgYmVmb3JlIHF1ZXJ5aW5nIG9yIG5lZ290aWF0aW5nIGFueSBvdGhlciBwYXJhbWV0ZXJzLjwvcGFyYT4KKworICAgIDxwYXJhPkluZm9ybWF0aW9uIGFib3V0IHZpZGVvIGlucHV0cyBpcyBhdmFpbGFibGUgdXNpbmcgdGhlCismVklESU9DLUVOVU1JTlBVVDsgaW9jdGwuPC9wYXJhPgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICAmcmV0dXJuLXZhbHVlOworCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FSU5WQUw8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIG51bWJlciBvZiB0aGUgdmlkZW8gaW5wdXQgaXMgb3V0IG9mIGJvdW5kcy48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWctanBlZ2NvbXAueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1qcGVnY29tcC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk4ZmY0OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWctanBlZ2NvbXAueG1sCkBAIC0wLDAgKzEsMTc1IEBACis8cmVmZW50cnkgaWQ9InZpZGlvYy1nLWpwZWdjb21wIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgVklESU9DX0dfSlBFR0NPTVAsIFZJRElPQ19TX0pQRUdDT01QPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5WSURJT0NfR19KUEVHQ09NUDwvcmVmbmFtZT4KKyAgICA8cmVmbmFtZT5WSURJT0NfU19KUEVHQ09NUDwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT48L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+djRsMl9qcGVnY29tcHJlc3Npb24gKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+Y29uc3QgdjRsMl9qcGVnY29tcHJlc3Npb24gKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19HX0pQRUdDT01QLCBWSURJT0NfU19KUEVHQ09NUDwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgPHBhcmE+VGhlc2UgaW9jdGxzIGFyZSA8ZW1waGFzaXMgcm9sZT0iYm9sZCI+ZGVwcmVjYXRlZDwvZW1waGFzaXM+LgorICAgIE5ldyBkcml2ZXJzIGFuZCBhcHBsaWNhdGlvbnMgc2hvdWxkIHVzZSA8bGluayBsaW5rZW5kPSJqcGVnLWNvbnRyb2xzIj4KKyAgICBKUEVHIGNsYXNzIGNvbnRyb2xzPC9saW5rPiBmb3IgaW1hZ2UgcXVhbGl0eSBhbmQgSlBFRyBtYXJrZXJzIGNvbnRyb2wuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+W3RvIGRvXTwvcGFyYT4KKworICAgIDxwYXJhPlJvbmFsZCBCdWx0amUgZWxhYm9yYXRlczo8L3BhcmE+CisKKyAgICA8IS0tIFNlZSB2aWRlbzRsaW51eC1saXN0QHJlZGhhdC5jb20gb24gMTYgT2N0IDIwMDIsIHN1YmplY3QKKyJSZTogW1Y0TF0gUmU6IHY0bDIgYXBpIC8gWm9yYW4gdjRsMl9qcGVnY29tcHJlc3Npb24iIC0tPgorCisgICAgPHBhcmE+QVBQIGlzIHNvbWUgYXBwbGljYXRpb24tc3BlY2lmaWMgaW5mb3JtYXRpb24uIFRoZQorYXBwbGljYXRpb24gY2FuIHNldCBpdCBpdHNlbGYsIGFuZCBpdCdsbCBiZSBzdG9yZWQgaW4gdGhlIEpQRUctZW5jb2RlZAorZmllbGRzIChlZzsgaW50ZXJsYWNpbmcgaW5mb3JtYXRpb24gZm9yIGluIGFuIEFWSSBvciBzbykuIENPTSBpcyB0aGUKK3NhbWUsIGJ1dCBpdCdzIGNvbW1lbnRzLCBsaWtlICdlbmNvZGVkIGJ5IG1lJyBvciBzby48L3BhcmE+CisKKyAgICA8cGFyYT5qcGVnX21hcmtlcnMgZGVzY3JpYmVzIHdoZXRoZXIgdGhlIGh1ZmZtYW4gdGFibGVzLAorcXVhbnRpemF0aW9uIHRhYmxlcyBhbmQgdGhlIHJlc3RhcnQgaW50ZXJ2YWwgaW5mb3JtYXRpb24gKGFsbAorSlBFRy1zcGVjaWZpYyBzdHVmZikgc2hvdWxkIGJlIHN0b3JlZCBpbiB0aGUgSlBFRy1lbmNvZGVkIGZpZWxkcy4KK1RoZXNlIGRlZmluZSBob3cgdGhlIEpQRUcgZmllbGQgaXMgZW5jb2RlZC4gSWYgeW91IG9taXQgdGhlbSwKK2FwcGxpY2F0aW9ucyBhc3N1bWUgeW91J3ZlIHVzZWQgc3RhbmRhcmQgZW5jb2RpbmcuIFlvdSB1c3VhbGx5IGRvIHdhbnQKK3RvIGFkZCB0aGVtLjwvcGFyYT4KKworICAgIDwhLS0gTkIgVklESU9DX1NfSlBFR0NPTVAgaXMgdy9vLiAtLT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1qcGVnY29tcHJlc3Npb24iPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2pwZWdjb21wcmVzc2lvbjwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3Mtc3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+aW50PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5xdWFsaXR5PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+RGVwcmVjYXRlZC4gSWYgPGxpbmsgbGlua2VuZD0ianBlZy1xdWFsaXR5LWNvbnRyb2wiPjxjb25zdGFudD4KKwkgICAgVjRMMl9DSURfSlBFR19DT01QUkVTU0lPTl9RVUFMSVRZPC9jb25zdGFudD48L2xpbms+IGNvbnRyb2wgaXMgZXhwb3NlZAorCSAgICBieSBhIGRyaXZlciBhcHBsaWNhdGlvbnMgc2hvdWxkIHVzZSBpdCBpbnN0ZWFkIGFuZCBpZ25vcmUgdGhpcyBmaWVsZC4KKwkgICAgPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PmludDwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+QVBQbjwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5pbnQ8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPkFQUF9sZW48L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+Y2hhcjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+QVBQX2RhdGE8L3N0cnVjdGZpZWxkPls2MF08L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PmludDwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+Q09NX2xlbjwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5jaGFyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5DT01fZGF0YTwvc3RydWN0ZmllbGQ+WzYwXTwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmpwZWdfbWFya2Vyczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlNlZSA8eHJlZiBsaW5rZW5kPSJqcGVnLW1hcmtlcnMiLz4uIERlcHJlY2F0ZWQuCisJICAgIElmIDxsaW5rIGxpbmtlbmQ9ImpwZWctYWN0aXZlLW1hcmtlci1jb250cm9sIj48Y29uc3RhbnQ+CisJICAgIFY0TDJfQ0lEX0pQRUdfQUNUSVZFX01BUktFUjwvY29uc3RhbnQ+PC9saW5rPiBjb250cm9sCisJICAgIGlzIGV4cG9zZWQgYnkgYSBkcml2ZXIgYXBwbGljYXRpb25zIHNob3VsZCB1c2UgaXQgaW5zdGVhZAorCSAgICBhbmQgaWdub3JlIHRoaXMgZmllbGQuPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJqcGVnLW1hcmtlcnMiPgorICAgICAgPHRpdGxlPkpQRUcgTWFya2VycyBGbGFnczwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1kZWY7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9KUEVHX01BUktFUl9ESFQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4oMSZsdDsmbHQ7Myk8L2VudHJ5PgorCSAgICA8ZW50cnk+RGVmaW5lIEh1ZmZtYW4gVGFibGVzPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0pQRUdfTUFSS0VSX0RRVDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PigxJmx0OyZsdDs0KTwvZW50cnk+CisJICAgIDxlbnRyeT5EZWZpbmUgUXVhbnRpemF0aW9uIFRhYmxlczwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9KUEVHX01BUktFUl9EUkk8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4oMSZsdDsmbHQ7NSk8L2VudHJ5PgorCSAgICA8ZW50cnk+RGVmaW5lIFJlc3RhcnQgSW50ZXJ2YWw8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfSlBFR19NQVJLRVJfQ09NPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+KDEmbHQ7Jmx0OzYpPC9lbnRyeT4KKwkgICAgPGVudHJ5PkNvbW1lbnQgc2VnbWVudDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9KUEVHX01BUktFUl9BUFA8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4oMSZsdDsmbHQ7Nyk8L2VudHJ5PgorCSAgICA8ZW50cnk+QXBwIHNlZ21lbnQsIGRyaXZlciB3aWxsIGFsd2F5cyB1c2UgQVBQMDwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLW1vZHVsYXRvci54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLW1vZHVsYXRvci54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZlMTdiMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWctbW9kdWxhdG9yLnhtbApAQCAtMCwwICsxLDI1MiBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2MtZy1tb2R1bGF0b3IiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBWSURJT0NfR19NT0RVTEFUT1IsIFZJRElPQ19TX01PRFVMQVRPUjwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX0dfTU9EVUxBVE9SPC9yZWZuYW1lPgorICAgIDxyZWZuYW1lPlZJRElPQ19TX01PRFVMQVRPUjwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5HZXQgb3Igc2V0IG1vZHVsYXRvciBhdHRyaWJ1dGVzPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCB2NGwyX21vZHVsYXRvcgorKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+Y29uc3Qgc3RydWN0IHY0bDJfbW9kdWxhdG9yCisqPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPiZmZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VklESU9DX0dfTU9EVUxBVE9SLCBWSURJT0NfU19NT0RVTEFUT1I8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPlRvIHF1ZXJ5IHRoZSBhdHRyaWJ1dGVzIG9mIGEgbW9kdWxhdG9yIGFwcGxpY2F0aW9ucyBpbml0aWFsaXplCit0aGUgPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4gZmllbGQgYW5kIHplcm8gb3V0IHRoZQorPHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD4gYXJyYXkgb2YgYSAmdjRsMi1tb2R1bGF0b3I7IGFuZAorY2FsbCB0aGUgPGNvbnN0YW50PlZJRElPQ19HX01PRFVMQVRPUjwvY29uc3RhbnQ+IGlvY3RsIHdpdGggYSBwb2ludGVyCit0byB0aGlzIHN0cnVjdHVyZS4gRHJpdmVycyBmaWxsIHRoZSByZXN0IG9mIHRoZSBzdHJ1Y3R1cmUgb3IgcmV0dXJuIGFuCismRUlOVkFMOyB3aGVuIHRoZSBpbmRleCBpcyBvdXQgb2YgYm91bmRzLiBUbyBlbnVtZXJhdGUgYWxsIG1vZHVsYXRvcnMKK2FwcGxpY2F0aW9ucyBzaGFsbCBiZWdpbiBhdCBpbmRleCB6ZXJvLCBpbmNyZW1lbnRpbmcgYnkgb25lIHVudGlsIHRoZQorZHJpdmVyIHJldHVybnMgPGVycm9yY29kZT5FSU5WQUw8L2Vycm9yY29kZT4uPC9wYXJhPgorCisgICAgPHBhcmE+TW9kdWxhdG9ycyBoYXZlIHR3byB3cml0YWJsZSBwcm9wZXJ0aWVzLCBhbiBhdWRpbworbW9kdWxhdGlvbiBzZXQgYW5kIHRoZSByYWRpbyBmcmVxdWVuY3kuIFRvIGNoYW5nZSB0aGUgbW9kdWxhdGVkIGF1ZGlvCitzdWJwcm9ncmFtcywgYXBwbGljYXRpb25zIGluaXRpYWxpemUgdGhlIDxzdHJ1Y3RmaWVsZD5pbmRleAorPC9zdHJ1Y3RmaWVsZD4gYW5kIDxzdHJ1Y3RmaWVsZD50eHN1YmNoYW5zPC9zdHJ1Y3RmaWVsZD4gZmllbGRzIGFuZCB0aGUKKzxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+IGFycmF5IGFuZCBjYWxsIHRoZQorPGNvbnN0YW50PlZJRElPQ19TX01PRFVMQVRPUjwvY29uc3RhbnQ+IGlvY3RsLiBEcml2ZXJzIG1heSBjaG9vc2UgYQorZGlmZmVyZW50IGF1ZGlvIG1vZHVsYXRpb24gaWYgdGhlIHJlcXVlc3QgY2Fubm90IGJlIHNhdGlzZmllZC4gSG93ZXZlcgordGhpcyBpcyBhIHdyaXRlLW9ubHkgaW9jdGwsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgYWN0dWFsIGF1ZGlvCittb2R1bGF0aW9uIHNlbGVjdGVkLjwvcGFyYT4KKworICAgIDxwYXJhPjxsaW5rIGxpbmtlbmQ9InNkciI+U0RSPC9saW5rPiBzcGVjaWZpYyBtb2R1bGF0b3IgdHlwZXMgYXJlCis8Y29uc3RhbnQ+VjRMMl9UVU5FUl9TRFI8L2NvbnN0YW50PiBhbmQgPGNvbnN0YW50PlY0TDJfVFVORVJfUkY8L2NvbnN0YW50Pi4KK0ZvciBTRFIgZGV2aWNlcyA8c3RydWN0ZmllbGQ+dHhzdWJjaGFuczwvc3RydWN0ZmllbGQ+IGZpZWxkIG11c3QgYmUKK2luaXRpYWxpemVkIHRvIHplcm8uCitUaGUgdGVybSAnbW9kdWxhdG9yJyBtZWFucyBTRFIgdHJhbnNtaXR0ZXIgaW4gdGhpcyBjb250ZXh0LjwvcGFyYT4KKworICAgIDxwYXJhPlRvIGNoYW5nZSB0aGUgcmFkaW8gZnJlcXVlbmN5IHRoZSAmVklESU9DLVMtRlJFUVVFTkNZOyBpb2N0bAoraXMgYXZhaWxhYmxlLjwvcGFyYT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1tb2R1bGF0b3IiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX21vZHVsYXRvcjwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3Mtc3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+SWRlbnRpZmllcyB0aGUgbW9kdWxhdG9yLCBzZXQgYnkgdGhlCithcHBsaWNhdGlvbi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191ODwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+bmFtZTwvc3RydWN0ZmllbGQ+WzMyXTwvZW50cnk+CisJICAgIDxlbnRyeT5OYW1lIG9mIHRoZSBtb2R1bGF0b3IsIGEgTlVMLXRlcm1pbmF0ZWQgQVNDSUkKK3N0cmluZy4gVGhpcyBpbmZvcm1hdGlvbiBpcyBpbnRlbmRlZCBmb3IgdGhlIHVzZXIuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXR5PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+TW9kdWxhdG9yIGNhcGFiaWxpdHkgZmxhZ3MuIE5vIGZsYWdzIGFyZSBkZWZpbmVkCitmb3IgdGhpcyBmaWVsZCwgdGhlIHR1bmVyIGZsYWdzIGluICZ2NGwyLXR1bmVyOworYXJlIHVzZWQgYWNjb3JkaW5nbHkuIFRoZSBhdWRpbyBmbGFncyBpbmRpY2F0ZSB0aGUgYWJpbGl0eQordG8gZW5jb2RlIGF1ZGlvIHN1YnByb2dyYW1zLiBUaGV5IHdpbGwgPGVtcGhhc2lzPm5vdDwvZW1waGFzaXM+CitjaGFuZ2UgZm9yIGV4YW1wbGUgd2l0aCB0aGUgY3VycmVudCB2aWRlbyBzdGFuZGFyZC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJhbmdlbG93PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGxvd2VzdCB0dW5hYmxlIGZyZXF1ZW5jeSBpbiB1bml0cyBvZiA2Mi41CitLSHosIG9yIGlmIHRoZSA8c3RydWN0ZmllbGQ+Y2FwYWJpbGl0eTwvc3RydWN0ZmllbGQ+IGZsYWcKKzxjb25zdGFudD5WNEwyX1RVTkVSX0NBUF9MT1c8L2NvbnN0YW50PiBpcyBzZXQsIGluIHVuaXRzIG9mIDYyLjUKK0h6LCBvciBpZiB0aGUgPHN0cnVjdGZpZWxkPmNhcGFiaWxpdHk8L3N0cnVjdGZpZWxkPiBmbGFnCis8Y29uc3RhbnQ+VjRMMl9UVU5FUl9DQVBfMUhaPC9jb25zdGFudD4gaXMgc2V0LCBpbiB1bml0cyBvZiAxIEh6LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cmFuZ2VoaWdoPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGhpZ2hlc3QgdHVuYWJsZSBmcmVxdWVuY3kgaW4gdW5pdHMgb2YgNjIuNQorS0h6LCBvciBpZiB0aGUgPHN0cnVjdGZpZWxkPmNhcGFiaWxpdHk8L3N0cnVjdGZpZWxkPiBmbGFnCis8Y29uc3RhbnQ+VjRMMl9UVU5FUl9DQVBfTE9XPC9jb25zdGFudD4gaXMgc2V0LCBpbiB1bml0cyBvZiA2Mi41CitIeiwgb3IgaWYgdGhlIDxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXR5PC9zdHJ1Y3RmaWVsZD4gZmxhZworPGNvbnN0YW50PlY0TDJfVFVORVJfQ0FQXzFIWjwvY29uc3RhbnQ+IGlzIHNldCwgaW4gdW5pdHMgb2YgMSBIei48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnR4c3ViY2hhbnM8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5XaXRoIHRoaXMgZmllbGQgYXBwbGljYXRpb25zIGNhbiBkZXRlcm1pbmUgaG93CithdWRpbyBzdWItY2FycmllcnMgc2hhbGwgYmUgbW9kdWxhdGVkLiBJdCBjb250YWlucyBhIHNldCBvZiBmbGFncyBhcworZGVmaW5lZCBpbiA8eHJlZiBsaW5rZW5kPSJtb2R1bGF0b3ItdHhzdWJjaGFucyIgLz4uIE5vdGUgdGhlIHR1bmVyCis8c3RydWN0ZmllbGQ+cnhzdWJjaGFuczwvc3RydWN0ZmllbGQ+IGZsYWdzIGFyZSByZXVzZWQsIGJ1dCB0aGUKK3NlbWFudGljcyBhcmUgZGlmZmVyZW50LiBWaWRlbyBvdXRwdXQgZGV2aWNlcyBhcmUgYXNzdW1lZCB0byBoYXZlIGFuCithbmFsb2cgb3IgUENNIGF1ZGlvIGlucHV0IHdpdGggMS0zIGNoYW5uZWxzLiBUaGUKKzxzdHJ1Y3RmaWVsZD50eHN1YmNoYW5zPC9zdHJ1Y3RmaWVsZD4gZmxhZ3Mgc2VsZWN0IG9uZSBvciBtb3JlCitjaGFubmVscyBmb3IgbW9kdWxhdGlvbiwgdG9nZXRoZXIgd2l0aCBzb21lIGF1ZGlvIHN1YnByb2dyYW0KK2luZGljYXRvciwgZm9yIGV4YW1wbGUgYSBzdGVyZW8gcGlsb3QgdG9uZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaHNwYW4iPlR5cGUgb2YgdGhlIG1vZHVsYXRvciwgc2VlIDx4cmVmCisJCWxpbmtlbmQ9InY0bDItdHVuZXItdHlwZSIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+WzNdPC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlc2VydmVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucy4gRHJpdmVycyBhbmQKK2FwcGxpY2F0aW9ucyBtdXN0IHNldCB0aGUgYXJyYXkgdG8gemVyby48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9Im1vZHVsYXRvci10eHN1YmNoYW5zIj4KKyAgICAgIDx0aXRsZT5Nb2R1bGF0b3IgQXVkaW8gVHJhbnNtaXNzaW9uIEZsYWdzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1RVTkVSX1NVQl9NT05PPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAxPC9lbnRyeT4KKwkgICAgPGVudHJ5Pk1vZHVsYXRlIGNoYW5uZWwgMSBhcyBtb25vIGF1ZGlvLCB3aGVuIHRoZSBpbnB1dAoraGFzIG1vcmUgY2hhbm5lbHMsIGEgZG93bi1taXggb2YgY2hhbm5lbCAxIGFuZCAyLiBUaGlzIGZsYWcgZG9lcyBub3QKK2NvbWJpbmUgd2l0aCA8Y29uc3RhbnQ+VjRMMl9UVU5FUl9TVUJfU1RFUkVPPC9jb25zdGFudD4gb3IKKzxjb25zdGFudD5WNEwyX1RVTkVSX1NVQl9MQU5HMTwvY29uc3RhbnQ+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9UVU5FUl9TVUJfU1RFUkVPPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAyPC9lbnRyeT4KKwkgICAgPGVudHJ5Pk1vZHVsYXRlIGNoYW5uZWwgMSBhbmQgMiBhcyBsZWZ0IGFuZCByaWdodAorY2hhbm5lbCBvZiBhIHN0ZXJlbyBhdWRpbyBzaWduYWwuIFdoZW4gdGhlIGlucHV0IGhhcyBvbmx5IG9uZSBjaGFubmVsCitvciB0d28gY2hhbm5lbHMgYW5kIDxjb25zdGFudD5WNEwyX1RVTkVSX1NVQl9TQVA8L2NvbnN0YW50PiBpcyBhbHNvCitzZXQsIGNoYW5uZWwgMSBpcyBlbmNvZGVkIGFzIGxlZnQgYW5kIHJpZ2h0IGNoYW5uZWwuIFRoaXMgZmxhZyBkb2VzCitub3QgY29tYmluZSB3aXRoIDxjb25zdGFudD5WNEwyX1RVTkVSX1NVQl9NT05PPC9jb25zdGFudD4gb3IKKzxjb25zdGFudD5WNEwyX1RVTkVSX1NVQl9MQU5HMTwvY29uc3RhbnQ+LiBXaGVuIHRoZSBkcml2ZXIgZG9lcyBub3QKK3N1cHBvcnQgc3RlcmVvIGF1ZGlvIGl0IHNoYWxsIGZhbGwgYmFjayB0byBtb25vLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9UVU5FUl9TVUJfTEFORzE8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDg8L2VudHJ5PgorCSAgICA8ZW50cnk+TW9kdWxhdGUgY2hhbm5lbCAxIGFuZCAyIGFzIHByaW1hcnkgYW5kIHNlY29uZGFyeQorbGFuZ3VhZ2Ugb2YgYSBiaWxpbmd1YWwgYXVkaW8gc2lnbmFsLiBXaGVuIHRoZSBpbnB1dCBoYXMgb25seSBvbmUKK2NoYW5uZWwgaXQgaXMgdXNlZCBmb3IgYm90aCBsYW5ndWFnZXMuIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBlbmNvZGUKK3RoZSBwcmltYXJ5IG9yIHNlY29uZGFyeSBsYW5ndWFnZSBvbmx5LiBUaGlzIGZsYWcgZG9lcyBub3QgY29tYmluZQord2l0aCA8Y29uc3RhbnQ+VjRMMl9UVU5FUl9TVUJfTU9OTzwvY29uc3RhbnQ+LAorPGNvbnN0YW50PlY0TDJfVFVORVJfU1VCX1NURVJFTzwvY29uc3RhbnQ+IG9yCis8Y29uc3RhbnQ+VjRMMl9UVU5FUl9TVUJfU0FQPC9jb25zdGFudD4uIElmIHRoZSBoYXJkd2FyZSBkb2VzIG5vdAorc3VwcG9ydCB0aGUgcmVzcGVjdGl2ZSBhdWRpbyBtYXRyaXgsIG9yIHRoZSBjdXJyZW50IHZpZGVvIHN0YW5kYXJkCitkb2VzIG5vdCBwZXJtaXQgYmlsaW5ndWFsIGF1ZGlvIHRoZQorPGNvbnN0YW50PlZJRElPQ19TX01PRFVMQVRPUjwvY29uc3RhbnQ+IGlvY3RsIHNoYWxsIHJldHVybiBhbiAmRUlOVkFMOworYW5kIHRoZSBkcml2ZXIgc2hhbGwgZmFsbCBiYWNrIHRvIG1vbm8gb3Igc3RlcmVvIG1vZGUuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1RVTkVSX1NVQl9MQU5HMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwNDwvZW50cnk+CisJICAgIDxlbnRyeT5TYW1lIGVmZmVjdCBhcworPGNvbnN0YW50PlY0TDJfVFVORVJfU1VCX1NBUDwvY29uc3RhbnQ+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9UVU5FUl9TVUJfU0FQPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDA0PC9lbnRyeT4KKwkgICAgPGVudHJ5PldoZW4gY29tYmluZWQgd2l0aCA8Y29uc3RhbnQ+VjRMMl9UVU5FUl9TVUJfTU9OTworPC9jb25zdGFudD4gdGhlIGZpcnN0IGNoYW5uZWwgaXMgZW5jb2RlZCBhcyBtb25vIGF1ZGlvLCB0aGUgbGFzdAorY2hhbm5lbCBhcyBTZWNvbmQgQXVkaW8gUHJvZ3JhbS4gV2hlbiB0aGUgaW5wdXQgaGFzIG9ubHkgb25lIGNoYW5uZWwKK2l0IGlzIHVzZWQgZm9yIGJvdGggYXVkaW8gdHJhY2tzLiBXaGVuIHRoZSBpbnB1dCBoYXMgdGhyZWUgY2hhbm5lbHMKK3RoZSBtb25vIHRyYWNrIGlzIGEgZG93bi1taXggb2YgY2hhbm5lbCAxIGFuZCAyLiBXaGVuIGNvbWJpbmVkIHdpdGgKKzxjb25zdGFudD5WNEwyX1RVTkVSX1NVQl9TVEVSRU88L2NvbnN0YW50PiBjaGFubmVsIDEgYW5kIDIgYXJlCitlbmNvZGVkIGFzIGxlZnQgYW5kIHJpZ2h0IHN0ZXJlbyBhdWRpbywgY2hhbm5lbCAzIGFzIFNlY29uZCBBdWRpbworUHJvZ3JhbS4gV2hlbiB0aGUgaW5wdXQgaGFzIG9ubHkgdHdvIGNoYW5uZWxzLCB0aGUgZmlyc3QgaXMgZW5jb2RlZCBhcworbGVmdCBhbmQgcmlnaHQgY2hhbm5lbCBhbmQgdGhlIHNlY29uZCBhcyBTQVAuIFdoZW4gdGhlIGlucHV0IGhhcyBvbmx5CitvbmUgY2hhbm5lbCBpdCBpcyB1c2VkIGZvciBhbGwgYXVkaW8gdHJhY2tzLiBJdCBpcyBub3QgcG9zc2libGUgdG8KK2VuY29kZSBhIFNlY29uZCBBdWRpbyBQcm9ncmFtIG9ubHkuIFRoaXMgZmxhZyBtdXN0IGNvbWJpbmUgd2l0aAorPGNvbnN0YW50PlY0TDJfVFVORVJfU1VCX01PTk88L2NvbnN0YW50PiBvcgorPGNvbnN0YW50PlY0TDJfVFVORVJfU1VCX1NURVJFTzwvY29uc3RhbnQ+LiBJZiB0aGUgaGFyZHdhcmUgZG9lcyBub3QKK3N1cHBvcnQgdGhlIHJlc3BlY3RpdmUgYXVkaW8gbWF0cml4LCBvciB0aGUgY3VycmVudCB2aWRlbyBzdGFuZGFyZAorZG9lcyBub3QgcGVybWl0IFNBUCB0aGUgPGNvbnN0YW50PlZJRElPQ19TX01PRFVMQVRPUjwvY29uc3RhbnQ+IGlvY3RsCitzaGFsbCByZXR1cm4gYW4gJkVJTlZBTDsgYW5kIGRyaXZlciBzaGFsbCBmYWxsIGJhY2sgdG8gbW9ubyBvciBzdGVyZW8KK21vZGUuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1RVTkVSX1NVQl9SRFM8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMTA8L2VudHJ5PgorCSAgICA8ZW50cnk+RW5hYmxlIHRoZSBSRFMgZW5jb2RlciBmb3IgYSByYWRpbyBGTSB0cmFuc21pdHRlci48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgJnY0bDItbW9kdWxhdG9yOworPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4gaXMgb3V0IG9mIGJvdW5kcy48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWctb3V0cHV0LnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWctb3V0cHV0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTMzMDY4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1vdXRwdXQueG1sCkBAIC0wLDAgKzEsODUgQEAKKzxyZWZlbnRyeSBpZD0idmlkaW9jLWctb3V0cHV0Ij4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgVklESU9DX0dfT1VUUFVULCBWSURJT0NfU19PVVRQVVQ8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPlZJRElPQ19HX09VVFBVVDwvcmVmbmFtZT4KKyAgICA8cmVmbmFtZT5WSURJT0NfU19PVVRQVVQ8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+UXVlcnkgb3Igc2VsZWN0IHRoZSBjdXJyZW50IHZpZGVvIG91dHB1dDwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19HX09VVFBVVCwgVklESU9DX1NfT1VUUFVUPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5UbyBxdWVyeSB0aGUgY3VycmVudCB2aWRlbyBvdXRwdXQgYXBwbGljYXRpb25zIGNhbGwgdGhlCis8Y29uc3RhbnQ+VklESU9DX0dfT1VUUFVUPC9jb25zdGFudD4gaW9jdGwgd2l0aCBhIHBvaW50ZXIgdG8gYW4gaW50ZWdlcgord2hlcmUgdGhlIGRyaXZlciBzdG9yZXMgdGhlIG51bWJlciBvZiB0aGUgb3V0cHV0LCBhcyBpbiB0aGUKKyZ2NGwyLW91dHB1dDsgPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4gZmllbGQuIFRoaXMgaW9jdGwKK3dpbGwgZmFpbCBvbmx5IHdoZW4gdGhlcmUgYXJlIG5vIHZpZGVvIG91dHB1dHMsIHJldHVybmluZyB0aGUKKyZFSU5WQUw7LjwvcGFyYT4KKworICAgIDxwYXJhPlRvIHNlbGVjdCBhIHZpZGVvIG91dHB1dCBhcHBsaWNhdGlvbnMgc3RvcmUgdGhlIG51bWJlciBvZiB0aGUKK2Rlc2lyZWQgb3V0cHV0IGluIGFuIGludGVnZXIgYW5kIGNhbGwgdGhlCis8Y29uc3RhbnQ+VklESU9DX1NfT1VUUFVUPC9jb25zdGFudD4gaW9jdGwgd2l0aCBhIHBvaW50ZXIgdG8gdGhpcyBpbnRlZ2VyLgorU2lkZSBlZmZlY3RzIGFyZSBwb3NzaWJsZS4gRm9yIGV4YW1wbGUgb3V0cHV0cyBtYXkgc3VwcG9ydCBkaWZmZXJlbnQKK3ZpZGVvIHN0YW5kYXJkcywgc28gdGhlIGRyaXZlciBtYXkgaW1wbGljaXRseSBzd2l0Y2ggdGhlIGN1cnJlbnQKK3N0YW5kYXJkLgorc3RhbmRhcmQuIEJlY2F1c2Ugb2YgdGhlc2UgcG9zc2libGUgc2lkZSBlZmZlY3RzIGFwcGxpY2F0aW9ucworbXVzdCBzZWxlY3QgYW4gb3V0cHV0IGJlZm9yZSBxdWVyeWluZyBvciBuZWdvdGlhdGluZyBhbnkgb3RoZXIgcGFyYW1ldGVycy48L3BhcmE+CisKKyAgICA8cGFyYT5JbmZvcm1hdGlvbiBhYm91dCB2aWRlbyBvdXRwdXRzIGlzIGF2YWlsYWJsZSB1c2luZyB0aGUKKyZWSURJT0MtRU5VTU9VVFBVVDsgaW9jdGwuPC9wYXJhPgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICAmcmV0dXJuLXZhbHVlOworCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FSU5WQUw8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIG51bWJlciBvZiB0aGUgdmlkZW8gb3V0cHV0IGlzIG91dCBvZiBib3VuZHMsIG9yCit0aGVyZSBhcmUgbm8gdmlkZW8gb3V0cHV0cyBhdCBhbGwuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLXBhcm0ueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1wYXJtLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjE3Mjg3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1wYXJtLnhtbApAQCAtMCwwICsxLDMxNCBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2MtZy1wYXJtIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgVklESU9DX0dfUEFSTSwgVklESU9DX1NfUEFSTTwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX0dfUEFSTTwvcmVmbmFtZT4KKyAgICA8cmVmbmFtZT5WSURJT0NfU19QQVJNPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPkdldCBvciBzZXQgc3RyZWFtaW5nIHBhcmFtZXRlcnM8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+djRsMl9zdHJlYW1wYXJtICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfR19QQVJNLCBWSURJT0NfU19QQVJNPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5UaGUgY3VycmVudCB2aWRlbyBzdGFuZGFyZCBkZXRlcm1pbmVzIGEgbm9taW5hbCBudW1iZXIgb2YKK2ZyYW1lcyBwZXIgc2Vjb25kLiBJZiBsZXNzIHRoYW4gdGhpcyBudW1iZXIgb2YgZnJhbWVzIGlzIHRvIGJlCitjYXB0dXJlZCBvciBvdXRwdXQsIGFwcGxpY2F0aW9ucyBjYW4gcmVxdWVzdCBmcmFtZSBza2lwcGluZyBvcgorZHVwbGljYXRpbmcgb24gdGhlIGRyaXZlciBzaWRlLiBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIHdoZW4gdXNpbmcKK3RoZSA8ZnVuY3Rpb24+cmVhZCgpPC9mdW5jdGlvbj4gb3IgPGZ1bmN0aW9uPndyaXRlKCk8L2Z1bmN0aW9uPiwgd2hpY2gKK2FyZSBub3QgYXVnbWVudGVkIGJ5IHRpbWVzdGFtcHMgb3Igc2VxdWVuY2UgY291bnRlcnMsIGFuZCB0byBhdm9pZAordW5uZWNlc3NhcnkgZGF0YSBjb3B5aW5nLjwvcGFyYT4KKworICAgIDxwYXJhPkZ1cnRoZXIgdGhlc2UgaW9jdGxzIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mCitidWZmZXJzIHVzZWQgaW50ZXJuYWxseSBieSBhIGRyaXZlciBpbiByZWFkL3dyaXRlIG1vZGUuIEZvcgoraW1wbGljYXRpb25zIHNlZSB0aGUgc2VjdGlvbiBkaXNjdXNzaW5nIHRoZSAmZnVuYy1yZWFkOworZnVuY3Rpb24uPC9wYXJhPgorCisgICAgPHBhcmE+VG8gZ2V0IGFuZCBzZXQgdGhlIHN0cmVhbWluZyBwYXJhbWV0ZXJzIGFwcGxpY2F0aW9ucyBjYWxsCit0aGUgPGNvbnN0YW50PlZJRElPQ19HX1BBUk08L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WSURJT0NfU19QQVJNPC9jb25zdGFudD4gaW9jdGwsIHJlc3BlY3RpdmVseS4gVGhleSB0YWtlIGEKK3BvaW50ZXIgdG8gYSBzdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9zdHJlYW1wYXJtPC9zdHJ1Y3RuYW1lPiB3aGljaAorY29udGFpbnMgYSB1bmlvbiBob2xkaW5nIHNlcGFyYXRlIHBhcmFtZXRlcnMgZm9yIGlucHV0IGFuZCBvdXRwdXQKK2RldmljZXMuPC9wYXJhPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLXN0cmVhbXBhcm0iPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX3N0cmVhbXBhcm08L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iNCI+CisJJmNzLXVzdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgYnVmZmVyIChzdHJlYW0pIHR5cGUsIHNhbWUgYXMgJnY0bDItZm9ybWF0OworPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiwgc2V0IGJ5IHRoZSBhcHBsaWNhdGlvbi4gU2VlIDx4cmVmCisJICAgIGxpbmtlbmQ9InY0bDItYnVmLXR5cGUiIC8+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PnVuaW9uPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5wYXJtPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+JnY0bDItY2FwdHVyZXBhcm07PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5jYXB0dXJlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+UGFyYW1ldGVycyBmb3IgY2FwdHVyZSBkZXZpY2VzLCB1c2VkIHdoZW4KKzxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gaXMKKzxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkU8L2NvbnN0YW50Pi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PiZ2NGwyLW91dHB1dHBhcm07PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5vdXRwdXQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5QYXJhbWV0ZXJzIGZvciBvdXRwdXQgZGV2aWNlcywgdXNlZCB3aGVuCis8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IGlzCis8Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVQ8L2NvbnN0YW50Pi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pl9fdTg8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJhd19kYXRhPC9zdHJ1Y3RmaWVsZD5bMjAwXTwvZW50cnk+CisJICAgIDxlbnRyeT5BIHBsYWNlIGhvbGRlciBmb3IgZnV0dXJlIGV4dGVuc2lvbnMuPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLWNhcHR1cmVwYXJtIj4KKyAgICAgIDx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9jYXB0dXJlcGFybTwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3Mtc3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmNhcGFiaWxpdHk8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5TZWUgPHhyZWYgbGlua2VuZD0icGFybS1jYXBzIiAvPi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmNhcHR1cmVtb2RlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+U2V0IGJ5IGRyaXZlcnMgYW5kIGFwcGxpY2F0aW9ucywgc2VlIDx4cmVmIGxpbmtlbmQ9InBhcm0tZmxhZ3MiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT4mdjRsMi1mcmFjdDs8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnRpbWVwZXJmcmFtZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxwYXJhPlRoaXMgaXMgdGhlIGRlc2lyZWQgcGVyaW9kIGJldHdlZW4KK3N1Y2Nlc3NpdmUgZnJhbWVzIGNhcHR1cmVkIGJ5IHRoZSBkcml2ZXIsIGluIHNlY29uZHMuIFRoZQorZmllbGQgaXMgaW50ZW5kZWQgdG8gc2tpcCBmcmFtZXMgb24gdGhlIGRyaXZlciBzaWRlLCBzYXZpbmcgSS9PCitiYW5kd2lkdGguPC9wYXJhPjxwYXJhPkFwcGxpY2F0aW9ucyBzdG9yZSBoZXJlIHRoZSBkZXNpcmVkIGZyYW1lCitwZXJpb2QsIGRyaXZlcnMgcmV0dXJuIHRoZSBhY3R1YWwgZnJhbWUgcGVyaW9kLCB3aGljaCBtdXN0IGJlIGdyZWF0ZXIKK29yIGVxdWFsIHRvIHRoZSBub21pbmFsIGZyYW1lIHBlcmlvZCBkZXRlcm1pbmVkIGJ5IHRoZSBjdXJyZW50IHZpZGVvCitzdGFuZGFyZCAoJnY0bDItc3RhbmRhcmQ7IDxzdHJ1Y3RmaWVsZD5mcmFtZXBlcmlvZDwvc3RydWN0ZmllbGQ+CitmaWVsZCkuIENoYW5naW5nIHRoZSB2aWRlbyBzdGFuZGFyZCAoYWxzbyBpbXBsaWNpdGx5IGJ5IHN3aXRjaGluZyB0aGUKK3ZpZGVvIGlucHV0KSBtYXkgcmVzZXQgdGhpcyBwYXJhbWV0ZXIgdG8gdGhlIG5vbWluYWwgZnJhbWUgcGVyaW9kLiBUbworcmVzZXQgbWFudWFsbHkgYXBwbGljYXRpb25zIGNhbiBqdXN0IHNldCB0aGlzIGZpZWxkIHRvCit6ZXJvLjwvcGFyYT48cGFyYT5Ecml2ZXJzIHN1cHBvcnQgdGhpcyBmdW5jdGlvbiBvbmx5IHdoZW4gdGhleSBzZXQgdGhlCis8Y29uc3RhbnQ+VjRMMl9DQVBfVElNRVBFUkZSQU1FPC9jb25zdGFudD4gZmxhZyBpbiB0aGUKKzxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXR5PC9zdHJ1Y3RmaWVsZD4gZmllbGQuPC9wYXJhPjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZXh0ZW5kZWRtb2RlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+Q3VzdG9tIChkcml2ZXIgc3BlY2lmaWMpIHN0cmVhbWluZyBwYXJhbWV0ZXJzLiBXaGVuCit1bnVzZWQsIGFwcGxpY2F0aW9ucyBhbmQgZHJpdmVycyBtdXN0IHNldCB0aGlzIGZpZWxkIHRvIHplcm8uCitBcHBsaWNhdGlvbnMgdXNpbmcgdGhpcyBmaWVsZCBzaG91bGQgY2hlY2sgdGhlIGRyaXZlciBuYW1lIGFuZAordmVyc2lvbiwgc2VlIDx4cmVmIGxpbmtlbmQ9InF1ZXJ5Y2FwIiAvPi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJlYWRidWZmZXJzPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+QXBwbGljYXRpb25zIHNldCB0aGlzIGZpZWxkIHRvIHRoZSBkZXNpcmVkIG51bWJlcgorb2YgYnVmZmVycyB1c2VkIGludGVybmFsbHkgYnkgdGhlIGRyaXZlciBpbiAmZnVuYy1yZWFkOyBtb2RlLiBEcml2ZXJzCityZXR1cm4gdGhlIGFjdHVhbCBudW1iZXIgb2YgYnVmZmVycy4gV2hlbiBhbiBhcHBsaWNhdGlvbiByZXF1ZXN0cyB6ZXJvCitidWZmZXJzLCBkcml2ZXJzIHNob3VsZCBqdXN0IHJldHVybiB0aGUgY3VycmVudCBzZXR0aW5nIHJhdGhlciB0aGFuCit0aGUgbWluaW11bSBvciBhbiBlcnJvciBjb2RlLiBGb3IgZGV0YWlscyBzZWUgPHhyZWYKKwkJbGlua2VuZD0icnciIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cmVzZXJ2ZWQ8L3N0cnVjdGZpZWxkPls0XTwvZW50cnk+CisJICAgIDxlbnRyeT5SZXNlcnZlZCBmb3IgZnV0dXJlIGV4dGVuc2lvbnMuIERyaXZlcnMgYW5kCithcHBsaWNhdGlvbnMgbXVzdCBzZXQgdGhlIGFycmF5IHRvIHplcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLW91dHB1dHBhcm0iPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX291dHB1dHBhcm08L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXR5PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+U2VlIDx4cmVmIGxpbmtlbmQ9InBhcm0tY2FwcyIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5vdXRwdXRtb2RlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+U2V0IGJ5IGRyaXZlcnMgYW5kIGFwcGxpY2F0aW9ucywgc2VlIDx4cmVmCisJICAgIGxpbmtlbmQ9InBhcm0tZmxhZ3MiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT4mdjRsMi1mcmFjdDs8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnRpbWVwZXJmcmFtZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoaXMgaXMgdGhlIGRlc2lyZWQgcGVyaW9kIGJldHdlZW4KK3N1Y2Nlc3NpdmUgZnJhbWVzIG91dHB1dCBieSB0aGUgZHJpdmVyLCBpbiBzZWNvbmRzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaHNwYW4iPjxwYXJhPlRoZSBmaWVsZCBpcyBpbnRlbmRlZCB0bworcmVwZWF0IGZyYW1lcyBvbiB0aGUgZHJpdmVyIHNpZGUgaW4gJmZ1bmMtd3JpdGU7IG1vZGUgKGluIHN0cmVhbWluZworbW9kZSB0aW1lc3RhbXBzIGNhbiBiZSB1c2VkIHRvIHRocm90dGxlIHRoZSBvdXRwdXQpLCBzYXZpbmcgSS9PCitiYW5kd2lkdGguPC9wYXJhPjxwYXJhPkFwcGxpY2F0aW9ucyBzdG9yZSBoZXJlIHRoZSBkZXNpcmVkIGZyYW1lCitwZXJpb2QsIGRyaXZlcnMgcmV0dXJuIHRoZSBhY3R1YWwgZnJhbWUgcGVyaW9kLCB3aGljaCBtdXN0IGJlIGdyZWF0ZXIKK29yIGVxdWFsIHRvIHRoZSBub21pbmFsIGZyYW1lIHBlcmlvZCBkZXRlcm1pbmVkIGJ5IHRoZSBjdXJyZW50IHZpZGVvCitzdGFuZGFyZCAoJnY0bDItc3RhbmRhcmQ7IDxzdHJ1Y3RmaWVsZD5mcmFtZXBlcmlvZDwvc3RydWN0ZmllbGQ+CitmaWVsZCkuIENoYW5naW5nIHRoZSB2aWRlbyBzdGFuZGFyZCAoYWxzbyBpbXBsaWNpdGx5IGJ5IHN3aXRjaGluZyB0aGUKK3ZpZGVvIG91dHB1dCkgbWF5IHJlc2V0IHRoaXMgcGFyYW1ldGVyIHRvIHRoZSBub21pbmFsIGZyYW1lIHBlcmlvZC4gVG8KK3Jlc2V0IG1hbnVhbGx5IGFwcGxpY2F0aW9ucyBjYW4ganVzdCBzZXQgdGhpcyBmaWVsZCB0bworemVyby48L3BhcmE+PHBhcmE+RHJpdmVycyBzdXBwb3J0IHRoaXMgZnVuY3Rpb24gb25seSB3aGVuIHRoZXkgc2V0IHRoZQorPGNvbnN0YW50PlY0TDJfQ0FQX1RJTUVQRVJGUkFNRTwvY29uc3RhbnQ+IGZsYWcgaW4gdGhlCis8c3RydWN0ZmllbGQ+Y2FwYWJpbGl0eTwvc3RydWN0ZmllbGQ+IGZpZWxkLjwvcGFyYT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmV4dGVuZGVkbW9kZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkN1c3RvbSAoZHJpdmVyIHNwZWNpZmljKSBzdHJlYW1pbmcgcGFyYW1ldGVycy4gV2hlbgordW51c2VkLCBhcHBsaWNhdGlvbnMgYW5kIGRyaXZlcnMgbXVzdCBzZXQgdGhpcyBmaWVsZCB0byB6ZXJvLgorQXBwbGljYXRpb25zIHVzaW5nIHRoaXMgZmllbGQgc2hvdWxkIGNoZWNrIHRoZSBkcml2ZXIgbmFtZSBhbmQKK3ZlcnNpb24sIHNlZSA8eHJlZiBsaW5rZW5kPSJxdWVyeWNhcCIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD53cml0ZWJ1ZmZlcnM8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5BcHBsaWNhdGlvbnMgc2V0IHRoaXMgZmllbGQgdG8gdGhlIGRlc2lyZWQgbnVtYmVyCitvZiBidWZmZXJzIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgZHJpdmVyIGluCis8ZnVuY3Rpb24+d3JpdGUoKTwvZnVuY3Rpb24+IG1vZGUuIERyaXZlcnMgcmV0dXJuIHRoZSBhY3R1YWwgbnVtYmVyIG9mCitidWZmZXJzLiBXaGVuIGFuIGFwcGxpY2F0aW9uIHJlcXVlc3RzIHplcm8gYnVmZmVycywgZHJpdmVycyBzaG91bGQKK2p1c3QgcmV0dXJuIHRoZSBjdXJyZW50IHNldHRpbmcgcmF0aGVyIHRoYW4gdGhlIG1pbmltdW0gb3IgYW4gZXJyb3IKK2NvZGUuIEZvciBkZXRhaWxzIHNlZSA8eHJlZiBsaW5rZW5kPSJydyIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+WzRdPC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlc2VydmVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucy4gRHJpdmVycyBhbmQKK2FwcGxpY2F0aW9ucyBtdXN0IHNldCB0aGUgYXJyYXkgdG8gemVyby48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InBhcm0tY2FwcyI+CisgICAgICA8dGl0bGU+U3RyZWFtaW5nIFBhcmFtZXRlcnMgQ2FwYWJpbGl0ZXM8L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3MtZGVmOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0FQX1RJTUVQRVJGUkFNRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MTAwMDwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgZnJhbWUgc2tpcHBpbmcvcmVwZWF0aW5nIGNvbnRyb2xsZWQgYnkgdGhlCis8c3RydWN0ZmllbGQ+dGltZXBlcmZyYW1lPC9zdHJ1Y3RmaWVsZD4gZmllbGQgaXMgc3VwcG9ydGVkLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0icGFybS1mbGFncyI+CisgICAgICA8dGl0bGU+Q2FwdHVyZSBQYXJhbWV0ZXJzIEZsYWdzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX01PREVfSElHSFFVQUxJVFk8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDE8L2VudHJ5PgorCSAgICA8ZW50cnk+PHBhcmE+SGlnaCBxdWFsaXR5IGltYWdpbmcgbW9kZS4gSGlnaCBxdWFsaXR5IG1vZGUKK2lzIGludGVuZGVkIGZvciBzdGlsbCBpbWFnaW5nIGFwcGxpY2F0aW9ucy4gVGhlIGlkZWEgaXMgdG8gZ2V0IHRoZQorYmVzdCBwb3NzaWJsZSBpbWFnZSBxdWFsaXR5IHRoYXQgdGhlIGhhcmR3YXJlIGNhbiBkZWxpdmVyLiBJdCBpcyBub3QKK2RlZmluZWQgaG93IHRoZSBkcml2ZXIgd3JpdGVyIG1heSBhY2hpZXZlIHRoYXQ7IGl0IHdpbGwgZGVwZW5kIG9uIHRoZQoraGFyZHdhcmUgYW5kIHRoZSBpbmdlbnVpdHkgb2YgdGhlIGRyaXZlciB3cml0ZXIuIEhpZ2ggcXVhbGl0eSBtb2RlIGlzCithIGRpZmZlcmVudCBtb2RlIGZyb20gdGhlIHJlZ3VsYXIgbW90aW9uIHZpZGVvIGNhcHR1cmUgbW9kZXMuIEluCitoaWdoIHF1YWxpdHkgbW9kZTo8aXRlbWl6ZWRsaXN0PgorCQkgIDxsaXN0aXRlbT4KKwkJICAgIDxwYXJhPlRoZSBkcml2ZXIgbWF5IGJlIGFibGUgdG8gY2FwdHVyZSBoaWdoZXIKK3Jlc29sdXRpb25zIHRoYW4gZm9yIG1vdGlvbiBjYXB0dXJlLjwvcGFyYT4KKwkJICA8L2xpc3RpdGVtPgorCQkgIDxsaXN0aXRlbT4KKwkJICAgIDxwYXJhPlRoZSBkcml2ZXIgbWF5IHN1cHBvcnQgZmV3ZXIgcGl4ZWwgZm9ybWF0cwordGhhbiBtb3Rpb24gY2FwdHVyZSAoZWc7IHRydWUgY29sb3IpLjwvcGFyYT4KKwkJICA8L2xpc3RpdGVtPgorCQkgIDxsaXN0aXRlbT4KKwkJICAgIDxwYXJhPlRoZSBkcml2ZXIgbWF5IGNhcHR1cmUgYW5kIGFyaXRobWV0aWNhbGx5Citjb21iaW5lIG11bHRpcGxlIHN1Y2Nlc3NpdmUgZmllbGRzIG9yIGZyYW1lcyB0byByZW1vdmUgY29sb3IgZWRnZQorYXJ0aWZhY3RzIGFuZCByZWR1Y2UgdGhlIG5vaXNlIGluIHRoZSB2aWRlbyBkYXRhLgorPC9wYXJhPgorCQkgIDwvbGlzdGl0ZW0+CisJCSAgPGxpc3RpdGVtPgorCQkgICAgPHBhcmE+VGhlIGRyaXZlciBtYXkgY2FwdHVyZSBpbWFnZXMgaW4gc2xpY2VzIGxpa2UKK2Egc2Nhbm5lciBpbiBvcmRlciB0byBoYW5kbGUgbGFyZ2VyIGZvcm1hdCBpbWFnZXMgdGhhbiB3b3VsZCBvdGhlcndpc2UKK2JlIHBvc3NpYmxlLiA8L3BhcmE+CisJCSAgPC9saXN0aXRlbT4KKwkJICA8bGlzdGl0ZW0+CisJCSAgICA8cGFyYT5BbiBpbWFnZSBjYXB0dXJlIG9wZXJhdGlvbiBtYXkgYmUKK3NpZ25pZmljYW50bHkgc2xvd2VyIHRoYW4gbW90aW9uIGNhcHR1cmUuIDwvcGFyYT4KKwkJICA8L2xpc3RpdGVtPgorCQkgIDxsaXN0aXRlbT4KKwkJICAgIDxwYXJhPk1vdmluZyBvYmplY3RzIGluIHRoZSBpbWFnZSBtaWdodCBoYXZlCitleGNlc3NpdmUgbW90aW9uIGJsdXIuIDwvcGFyYT4KKwkJICA8L2xpc3RpdGVtPgorCQkgIDxsaXN0aXRlbT4KKwkJICAgIDxwYXJhPkNhcHR1cmUgbWlnaHQgb25seSB3b3JrIHRocm91Z2ggdGhlCis8ZnVuY3Rpb24+cmVhZCgpPC9mdW5jdGlvbj4gY2FsbC48L3BhcmE+CisJCSAgPC9saXN0aXRlbT4KKwkJPC9pdGVtaXplZGxpc3Q+PC9wYXJhPjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICAmcmV0dXJuLXZhbHVlOworICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWctcHJpb3JpdHkueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1wcmlvcml0eS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE4MWI0ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWctcHJpb3JpdHkueG1sCkBAIC0wLDAgKzEsMTM1IEBACis8cmVmZW50cnkgaWQ9InZpZGlvYy1nLXByaW9yaXR5Ij4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgVklESU9DX0dfUFJJT1JJVFksIFZJRElPQ19TX1BSSU9SSVRZPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5WSURJT0NfR19QUklPUklUWTwvcmVmbmFtZT4KKyAgICA8cmVmbmFtZT5WSURJT0NfU19QUklPUklUWTwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5RdWVyeSBvciByZXF1ZXN0IHRoZSBhY2Nlc3MgcHJpb3JpdHkgYXNzb2NpYXRlZCB3aXRoIGEKK2ZpbGUgZGVzY3JpcHRvcjwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5lbnVtIHY0bDJfcHJpb3JpdHkgKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+Y29uc3QgZW51bSB2NGwyX3ByaW9yaXR5ICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfR19QUklPUklUWSwgVklESU9DX1NfUFJJT1JJVFk8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+UG9pbnRlciB0byBhbiBlbnVtIHY0bDJfcHJpb3JpdHkgdHlwZS48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgPHBhcmE+VG8gcXVlcnkgdGhlIGN1cnJlbnQgYWNjZXNzIHByaW9yaXR5CithcHBsaWNhdGlvbnMgY2FsbCB0aGUgPGNvbnN0YW50PlZJRElPQ19HX1BSSU9SSVRZPC9jb25zdGFudD4gaW9jdGwKK3dpdGggYSBwb2ludGVyIHRvIGFuIGVudW0gdjRsMl9wcmlvcml0eSB2YXJpYWJsZSB3aGVyZSB0aGUgZHJpdmVyIHN0b3JlcwordGhlIGN1cnJlbnQgcHJpb3JpdHkuPC9wYXJhPgorCisgICAgPHBhcmE+VG8gcmVxdWVzdCBhbiBhY2Nlc3MgcHJpb3JpdHkgYXBwbGljYXRpb25zIHN0b3JlIHRoZQorZGVzaXJlZCBwcmlvcml0eSBpbiBhbiBlbnVtIHY0bDJfcHJpb3JpdHkgdmFyaWFibGUgYW5kIGNhbGwKKzxjb25zdGFudD5WSURJT0NfU19QUklPUklUWTwvY29uc3RhbnQ+IGlvY3RsIHdpdGggYSBwb2ludGVyIHRvIHRoaXMKK3ZhcmlhYmxlLjwvcGFyYT4KKworICAgIDx0YWJsZSBmcmFtZT0ibm9uZSIgcGd3aWRlPSIxIiBpZD0idjRsMi1wcmlvcml0eSI+CisgICAgICA8dGl0bGU+ZW51bSB2NGwyX3ByaW9yaXR5PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BSSU9SSVRZX1VOU0VUPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfUFJJT1JJVFlfQkFDS0dST1VORDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjE8L2VudHJ5PgorCSAgICA8ZW50cnk+TG93ZXN0IHByaW9yaXR5LCB1c3VhbGx5IGFwcGxpY2F0aW9ucyBydW5uaW5nIGluCitiYWNrZ3JvdW5kLCBmb3IgZXhhbXBsZSBtb25pdG9yaW5nIFZCSSB0cmFuc21pc3Npb25zLiBBIHByb3h5CithcHBsaWNhdGlvbiBydW5uaW5nIGluIHVzZXIgc3BhY2Ugd2lsbCBiZSBuZWNlc3NhcnkgaWYgbXVsdGlwbGUKK2FwcGxpY2F0aW9ucyB3YW50IHRvIHJlYWQgZnJvbSBhIGRldmljZSBhdCB0aGlzIHByaW9yaXR5LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QUklPUklUWV9JTlRFUkFDVElWRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjI8L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1BSSU9SSVRZX0RFRkFVTFQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4yPC9lbnRyeT4KKwkgICAgPGVudHJ5Pk1lZGl1bSBwcmlvcml0eSwgdXN1YWxseSBhcHBsaWNhdGlvbnMgc3RhcnRlZCBhbmQKK2ludGVyYWN0aXZlbHkgY29udHJvbGxlZCBieSB0aGUgdXNlci4gRm9yIGV4YW1wbGUgVFYgdmlld2VycywgVGVsZXRleHQKK2Jyb3dzZXJzLCBvciBqdXN0ICJwYW5lbCIgYXBwbGljYXRpb25zIHRvIGNoYW5nZSB0aGUgY2hhbm5lbCBvciB2aWRlbworY29udHJvbHMuIFRoaXMgaXMgdGhlIGRlZmF1bHQgcHJpb3JpdHkgdW5sZXNzIGFuIGFwcGxpY2F0aW9uIHJlcXVlc3RzCithbm90aGVyLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9QUklPUklUWV9SRUNPUkQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4zPC9lbnRyeT4KKwkgICAgPGVudHJ5PkhpZ2hlc3QgcHJpb3JpdHkuIE9ubHkgb25lIGZpbGUgZGVzY3JpcHRvciBjYW4gaGF2ZQordGhpcyBwcmlvcml0eSwgaXQgYmxvY2tzIGFueSBvdGhlciBmZCBmcm9tIGNoYW5naW5nIGRldmljZSBwcm9wZXJ0aWVzLgorVXN1YWxseSBhcHBsaWNhdGlvbnMgd2hpY2ggbXVzdCBub3QgYmUgaW50ZXJydXB0ZWQsIGxpa2UgdmlkZW8KK3JlY29yZGluZy48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgcmVxdWVzdGVkIHByaW9yaXR5IHZhbHVlIGlzIGludmFsaWQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FQlVTWTwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5Bbm90aGVyIGFwcGxpY2F0aW9uIGFscmVhZHkgcmVxdWVzdGVkIGhpZ2hlcgorcHJpb3JpdHkuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLXNlbGVjdGlvbi54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLXNlbGVjdGlvbi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg2NTM1MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWctc2VsZWN0aW9uLnhtbApAQCAtMCwwICsxLDIzOSBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2MtZy1zZWxlY3Rpb24iPgorCisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19HX1NFTEVDVElPTiwgVklESU9DX1NfU0VMRUNUSU9OPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5WSURJT0NfR19TRUxFQ1RJT048L3JlZm5hbWU+CisgICAgPHJlZm5hbWU+VklESU9DX1NfU0VMRUNUSU9OPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPkdldCBvciBzZXQgb25lIG9mIHRoZSBzZWxlY3Rpb24gcmVjdGFuZ2xlczwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zdHJ1Y3QgdjRsMl9zZWxlY3Rpb24gKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19HX1NFTEVDVElPTiwgVklESU9DX1NfU0VMRUNUSU9OPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8bm90ZT4KKyAgICAgIDx0aXRsZT5FeHBlcmltZW50YWw8L3RpdGxlPgorICAgICAgPHBhcmE+VGhpcyBpcyBhbiA8bGluayBsaW5rZW5kPSJleHBlcmltZW50YWwiPiBleHBlcmltZW50YWwgPC9saW5rPgorICAgICAgaW50ZXJmYWNlIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuPC9wYXJhPgorICAgIDwvbm90ZT4KKworICAgIDxwYXJhPlRoZSBpb2N0bHMgYXJlIHVzZWQgdG8gcXVlcnkgYW5kIGNvbmZpZ3VyZSBzZWxlY3Rpb24gcmVjdGFuZ2xlcy48L3BhcmE+CisKKzxwYXJhPlRvIHF1ZXJ5IHRoZSBjcm9wcGluZyAoY29tcG9zaW5nKSByZWN0YW5nbGUgc2V0ICZ2NGwyLXNlbGVjdGlvbjsKKzxzdHJ1Y3RmaWVsZD4gdHlwZSA8L3N0cnVjdGZpZWxkPiBmaWVsZCB0byB0aGUgcmVzcGVjdGl2ZSBidWZmZXIgdHlwZS4KK0RvIG5vdCB1c2UgdGhlIG11bHRpcGxhbmFyIGJ1ZmZlciB0eXBlcy4gIFVzZSA8Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFPC9jb25zdGFudD4KK2luc3RlYWQgb2YgPGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRV9NUExBTkU8L2NvbnN0YW50PiBhbmQgdXNlCis8Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVQ8L2NvbnN0YW50PiBpbnN0ZWFkIG9mCis8Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVRfTVBMQU5FPC9jb25zdGFudD4uICBUaGUgbmV4dCBzdGVwIGlzCitzZXR0aW5nIHRoZSB2YWx1ZSBvZiAmdjRsMi1zZWxlY3Rpb247IDxzdHJ1Y3RmaWVsZD50YXJnZXQ8L3N0cnVjdGZpZWxkPiBmaWVsZAordG8gPGNvbnN0YW50PlY0TDJfU0VMX1RHVF9DUk9QPC9jb25zdGFudD4gKDxjb25zdGFudD5WNEwyX1NFTF9UR1RfQ09NUE9TRTwvY29uc3RhbnQ+KS4KK1BsZWFzZSByZWZlciB0byB0YWJsZSA8eHJlZiBsaW5rZW5kPSJ2NGwyLXNlbGVjdGlvbnMtY29tbW9uIiAvPiBvciA8eHJlZiBsaW5rZW5kPSJzZWxlY3Rpb24tYXBpIiAvPgorZm9yIGFkZGl0aW9uYWwgdGFyZ2V0cy4gIFRoZSA8c3RydWN0ZmllbGQ+ZmxhZ3M8L3N0cnVjdGZpZWxkPiBhbmQgPHN0cnVjdGZpZWxkPnJlc2VydmVkCis8L3N0cnVjdGZpZWxkPiBmaWVsZHMgb2YgJnY0bDItc2VsZWN0aW9uOyBhcmUgaWdub3JlZCBhbmQgdGhleSBtdXN0IGJlIGZpbGxlZAord2l0aCB6ZXJvcy4gIFRoZSBkcml2ZXIgZmlsbHMgdGhlIHJlc3Qgb2YgdGhlIHN0cnVjdHVyZSBvcgorcmV0dXJucyAmRUlOVkFMOyBpZiBpbmNvcnJlY3QgYnVmZmVyIHR5cGUgb3IgdGFyZ2V0IHdhcyB1c2VkLiBJZiBjcm9wcGluZworKGNvbXBvc2luZykgaXMgbm90IHN1cHBvcnRlZCB0aGVuIHRoZSBhY3RpdmUgcmVjdGFuZ2xlIGlzIG5vdCBtdXRhYmxlIGFuZCBpdCBpcworYWx3YXlzIGVxdWFsIHRvIHRoZSBib3VuZHMgcmVjdGFuZ2xlLiAgRmluYWxseSwgdGhlICZ2NGwyLXJlY3Q7Cis8c3RydWN0ZmllbGQ+cjwvc3RydWN0ZmllbGQ+IHJlY3RhbmdsZSBpcyBmaWxsZWQgd2l0aCB0aGUgY3VycmVudCBjcm9wcGluZworKGNvbXBvc2luZykgY29vcmRpbmF0ZXMuIFRoZSBjb29yZGluYXRlcyBhcmUgZXhwcmVzc2VkIGluIGRyaXZlci1kZXBlbmRlbnQKK3VuaXRzLiBUaGUgb25seSBleGNlcHRpb24gYXJlIHJlY3RhbmdsZXMgZm9yIGltYWdlcyBpbiByYXcgZm9ybWF0cywgd2hvc2UKK2Nvb3JkaW5hdGVzIGFyZSBhbHdheXMgZXhwcmVzc2VkIGluIHBpeGVscy48L3BhcmE+CisKKzxwYXJhPlRvIGNoYW5nZSB0aGUgY3JvcHBpbmcgKGNvbXBvc2luZykgcmVjdGFuZ2xlIHNldCB0aGUgJnY0bDItc2VsZWN0aW9uOworPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZCB0byB0aGUgcmVzcGVjdGl2ZSBidWZmZXIgdHlwZS4gIERvIG5vdAordXNlIG11bHRpcGxhbmFyIGJ1ZmZlcnMuICBVc2UgPGNvbnN0YW50PlY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTwvY29uc3RhbnQ+CitpbnN0ZWFkIG9mIDxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkVfTVBMQU5FPC9jb25zdGFudD4uICBVc2UKKzxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVDwvY29uc3RhbnQ+IGluc3RlYWQgb2YKKzxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVF9NUExBTkU8L2NvbnN0YW50Pi4gIFRoZSBuZXh0IHN0ZXAgaXMKK3NldHRpbmcgdGhlIHZhbHVlIG9mICZ2NGwyLXNlbGVjdGlvbjsgPHN0cnVjdGZpZWxkPnRhcmdldDwvc3RydWN0ZmllbGQ+IHRvCis8Y29uc3RhbnQ+VjRMMl9TRUxfVEdUX0NST1A8L2NvbnN0YW50PiAoPGNvbnN0YW50PlY0TDJfU0VMX1RHVF9DT01QT1NFPC9jb25zdGFudD4pLgorUGxlYXNlIHJlZmVyIHRvIHRhYmxlIDx4cmVmIGxpbmtlbmQ9InY0bDItc2VsZWN0aW9ucy1jb21tb24iIC8+IG9yIDx4cmVmIGxpbmtlbmQ9InNlbGVjdGlvbi1hcGkiIC8+Citmb3IgYWRkaXRpb25hbCB0YXJnZXRzLiAgVGhlICZ2NGwyLXJlY3Q7IDxzdHJ1Y3RmaWVsZD5yPC9zdHJ1Y3RmaWVsZD4gcmVjdGFuZ2xlIG5lZWQgdG8gYmUKK3NldCB0byB0aGUgZGVzaXJlZCBhY3RpdmUgYXJlYS4gRmllbGQgJnY0bDItc2VsZWN0aW9uOyA8c3RydWN0ZmllbGQ+IHJlc2VydmVkCis8L3N0cnVjdGZpZWxkPiBpcyBpZ25vcmVkIGFuZCBtdXN0IGJlIGZpbGxlZCB3aXRoIHplcm9zLiAgVGhlIGRyaXZlciBtYXkgYWRqdXN0Citjb29yZGluYXRlcyBvZiB0aGUgcmVxdWVzdGVkIHJlY3RhbmdsZS4gQW4gYXBwbGljYXRpb24gbWF5CitpbnRyb2R1Y2UgY29uc3RyYWludHMgdG8gY29udHJvbCByb3VuZGluZyBiZWhhdmlvdXIuIFRoZSAmdjRsMi1zZWxlY3Rpb247Cis8c3RydWN0ZmllbGQ+ZmxhZ3M8L3N0cnVjdGZpZWxkPiBmaWVsZCBtdXN0IGJlIHNldCB0byBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKworPGl0ZW1pemVkbGlzdD4KKyAgPGxpc3RpdGVtPgorPHBhcmE+PGNvbnN0YW50PjA8L2NvbnN0YW50PiAtIFRoZSBkcml2ZXIgY2FuIGFkanVzdCB0aGUgcmVjdGFuZ2xlIHNpemUgZnJlZWx5CithbmQgc2hhbGwgY2hvb3NlIGEgY3JvcC9jb21wb3NlIHJlY3RhbmdsZSBhcyBjbG9zZSBhcyBwb3NzaWJsZSB0byB0aGUgcmVxdWVzdGVkCitvbmUuPC9wYXJhPgorICA8L2xpc3RpdGVtPgorICA8bGlzdGl0ZW0+Cis8cGFyYT48Y29uc3RhbnQ+VjRMMl9TRUxfRkxBR19HRTwvY29uc3RhbnQ+IC0gVGhlIGRyaXZlciBpcyBub3QgYWxsb3dlZCB0bworc2hyaW5rIHRoZSByZWN0YW5nbGUuICBUaGUgb3JpZ2luYWwgcmVjdGFuZ2xlIG11c3QgbGF5IGluc2lkZSB0aGUgYWRqdXN0ZWQKK29uZS48L3BhcmE+CisgIDwvbGlzdGl0ZW0+CisgIDxsaXN0aXRlbT4KKzxwYXJhPjxjb25zdGFudD5WNEwyX1NFTF9GTEFHX0xFPC9jb25zdGFudD4gLSBUaGUgZHJpdmVyIGlzIG5vdCBhbGxvd2VkIHRvCitlbmxhcmdlIHRoZSByZWN0YW5nbGUuICBUaGUgYWRqdXN0ZWQgcmVjdGFuZ2xlIG11c3QgbGF5IGluc2lkZSB0aGUgb3JpZ2luYWwKK29uZS48L3BhcmE+CisgIDwvbGlzdGl0ZW0+CisgIDxsaXN0aXRlbT4KKzxwYXJhPjxjb25zdGFudD5WNEwyX1NFTF9GTEFHX0dFIHwgVjRMMl9TRUxfRkxBR19MRTwvY29uc3RhbnQ+IC0gVGhlIGRyaXZlcgorbXVzdCBjaG9vc2UgdGhlIHNpemUgZXhhY3RseSB0aGUgc2FtZSBhcyBpbiB0aGUgcmVxdWVzdGVkIHJlY3RhbmdsZS48L3BhcmE+CisgIDwvbGlzdGl0ZW0+Cis8L2l0ZW1pemVkbGlzdD4KKworUGxlYXNlIHJlZmVyIHRvIDx4cmVmIGxpbmtlbmQ9InNlbC1jb25zdC1hZGp1c3QiIC8+LgorCis8L3BhcmE+CisKKzxwYXJhPiBUaGUgZHJpdmVyIG1heSBoYXZlIHRvIGFkanVzdHMgdGhlIHJlcXVlc3RlZCBkaW1lbnNpb25zIGFnYWluc3QgaGFyZHdhcmUKK2xpbWl0cyBhbmQgb3RoZXIgcGFydHMgYXMgdGhlIHBpcGVsaW5lLCBpLmUuIHRoZSBib3VuZHMgZ2l2ZW4gYnkgdGhlCitjYXB0dXJlL291dHB1dCB3aW5kb3cgb3IgVFYgZGlzcGxheS4gVGhlIGNsb3Nlc3QgcG9zc2libGUgdmFsdWVzIG9mIGhvcml6b250YWwKK2FuZCB2ZXJ0aWNhbCBvZmZzZXQgYW5kIHNpemVzIGFyZSBjaG9zZW4gYWNjb3JkaW5nIHRvIGZvbGxvd2luZyBwcmlvcml0eToKKworPG9yZGVyZWRsaXN0PgorICA8bGlzdGl0ZW0+CisgICAgPHBhcmE+U2F0aXNmeSBjb25zdHJhaW50cyBmcm9tICZ2NGwyLXNlbGVjdGlvbjsgPHN0cnVjdGZpZWxkPmZsYWdzPC9zdHJ1Y3RmaWVsZD4uPC9wYXJhPgorICA8L2xpc3RpdGVtPgorICA8bGlzdGl0ZW0+CisgICAgPHBhcmE+QWRqdXN0IHdpZHRoLCBoZWlnaHQsIGxlZnQsIGFuZCB0b3AgdG8gaGFyZHdhcmUgbGltaXRzIGFuZCBhbGlnbm1lbnRzLjwvcGFyYT4KKyAgPC9saXN0aXRlbT4KKyAgPGxpc3RpdGVtPgorICAgIDxwYXJhPktlZXAgY2VudGVyIG9mIGFkanVzdGVkIHJlY3RhbmdsZSBhcyBjbG9zZSBhcyBwb3NzaWJsZSB0byB0aGUgb3JpZ2luYWwgb25lLjwvcGFyYT4KKyAgPC9saXN0aXRlbT4KKyAgPGxpc3RpdGVtPgorICAgIDxwYXJhPktlZXAgd2lkdGggYW5kIGhlaWdodCBhcyBjbG9zZSBhcyBwb3NzaWJsZSB0byBvcmlnaW5hbCBvbmVzLjwvcGFyYT4KKyAgPC9saXN0aXRlbT4KKyAgPGxpc3RpdGVtPgorICAgIDxwYXJhPktlZXAgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgb2Zmc2V0IGFzIGNsb3NlIGFzIHBvc3NpYmxlIHRvIG9yaWdpbmFsIG9uZXMuPC9wYXJhPgorICA8L2xpc3RpdGVtPgorPC9vcmRlcmVkbGlzdD4KKworT24gc3VjY2VzcyB0aGUgJnY0bDItcmVjdDsgPHN0cnVjdGZpZWxkPnI8L3N0cnVjdGZpZWxkPiBmaWVsZCBjb250YWlucwordGhlIGFkanVzdGVkIHJlY3RhbmdsZS4gV2hlbiB0aGUgcGFyYW1ldGVycyBhcmUgdW5zdWl0YWJsZSB0aGUgYXBwbGljYXRpb24gbWF5Cittb2RpZnkgdGhlIGNyb3BwaW5nIChjb21wb3NpbmcpIG9yIGltYWdlIHBhcmFtZXRlcnMgYW5kIHJlcGVhdCB0aGUgY3ljbGUgdW50aWwKK3NhdGlzZmFjdG9yeSBwYXJhbWV0ZXJzIGhhdmUgYmVlbiBuZWdvdGlhdGVkLiBJZiBjb25zdHJhaW50cyBmbGFncyBoYXZlIHRvIGJlCit2aW9sYXRlZCBhdCB0aGVuIEVSQU5HRSBpcyByZXR1cm5lZC4gVGhlIGVycm9yIGluZGljYXRlcyB0aGF0IDxlbXBoYXNpcz50aGVyZQorZXhpc3Qgbm8gcmVjdGFuZ2xlPC9lbXBoYXNpcz4gdGhhdCBzYXRpc2ZpZXMgdGhlIGNvbnN0cmFpbnRzLjwvcGFyYT4KKworICA8cGFyYT5TZWxlY3Rpb24gdGFyZ2V0cyBhbmQgZmxhZ3MgYXJlIGRvY3VtZW50ZWQgaW4gPHhyZWYKKyAgbGlua2VuZD0idjRsMi1zZWxlY3Rpb25zLWNvbW1vbiIvPi48L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgIDxmaWd1cmUgaWQ9InNlbC1jb25zdC1hZGp1c3QiPgorCTx0aXRsZT5TaXplIGFkanVzdG1lbnRzIHdpdGggY29uc3RyYWludCBmbGFncy48L3RpdGxlPgorCTxtZWRpYW9iamVjdD4KKwkgIDxpbWFnZW9iamVjdD4KKwkgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJjb25zdHJhaW50cy5wbmciIGZvcm1hdD0iUE5HIiAvPgorCSAgPC9pbWFnZW9iamVjdD4KKwkgIDx0ZXh0b2JqZWN0PgorCSAgICA8cGhyYXNlPkJlaGF2aW91ciBvZiByZWN0YW5nbGUgYWRqdXN0bWVudCBmb3IgZGlmZmVyZW50IGNvbnN0cmFpbnQKKyAgICAgICAgICAgIGZsYWdzLjwvcGhyYXNlPgorCSAgPC90ZXh0b2JqZWN0PgorCTwvbWVkaWFvYmplY3Q+CisgICAgICA8L2ZpZ3VyZT4KKyAgICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLXNlbGVjdGlvbiI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfc2VsZWN0aW9uPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlR5cGUgb2YgdGhlIGJ1ZmZlciAoZnJvbSAmdjRsMi1idWYtdHlwZTspLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dGFyZ2V0PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorICAgICAgICAgICAgPGVudHJ5PlVzZWQgdG8gc2VsZWN0IGJldHdlZW4gPGxpbmsgbGlua2VuZD0idjRsMi1zZWxlY3Rpb25zLWNvbW1vbiI+IGNyb3BwaW5nCisJICAgIGFuZCBjb21wb3NpbmcgcmVjdGFuZ2xlczwvbGluaz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5mbGFnczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKyAgICAgICAgICAgIDxlbnRyeT5GbGFncyBjb250cm9sbGluZyB0aGUgc2VsZWN0aW9uIHJlY3RhbmdsZSBhZGp1c3RtZW50cywgcmVmZXIgdG8KKwkgICAgPGxpbmsgbGlua2VuZD0idjRsMi1zZWxlY3Rpb24tZmxhZ3MiPnNlbGVjdGlvbiBmbGFnczwvbGluaz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PiZ2NGwyLXJlY3Q7PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIHNlbGVjdGlvbiByZWN0YW5nbGUuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZFs5XTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlc2VydmVkIGZpZWxkcyBmb3IgZnV0dXJlIHVzZS4gRHJpdmVycyBhbmQgYXBwbGljYXRpb25zIG11c3QgemVybyB0aGlzIGFycmF5LjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9wYXJhPgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICAmcmV0dXJuLXZhbHVlOworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkdpdmVuIGJ1ZmZlciB0eXBlIDxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gb3IKK3RoZSBzZWxlY3Rpb24gdGFyZ2V0IDxzdHJ1Y3RmaWVsZD50YXJnZXQ8L3N0cnVjdGZpZWxkPiBpcyBub3Qgc3VwcG9ydGVkLAorb3IgdGhlIDxzdHJ1Y3RmaWVsZD5mbGFnczwvc3RydWN0ZmllbGQ+IGFyZ3VtZW50IGlzIG5vdCB2YWxpZC48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVSQU5HRTwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5JdCBpcyBub3QgcG9zc2libGUgdG8gYWRqdXN0ICZ2NGwyLXJlY3Q7IDxzdHJ1Y3RmaWVsZD4KK3I8L3N0cnVjdGZpZWxkPiByZWN0YW5nbGUgdG8gc2F0aXNmeSBhbGwgY29udHJhaW50cyBnaXZlbiBpbiB0aGUKKzxzdHJ1Y3RmaWVsZD5mbGFnczwvc3RydWN0ZmllbGQ+IGFyZ3VtZW50LjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUJVU1k8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+SXQgaXMgbm90IHBvc3NpYmxlIHRvIGFwcGx5IGNoYW5nZSBvZiB0aGUgc2VsZWN0aW9uIHJlY3RhbmdsZQorYXQgdGhlIG1vbWVudC4gVXN1YWxseSBiZWNhdXNlIHN0cmVhbWluZyBpcyBpbiBwcm9ncmVzcy48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1zbGljZWQtdmJpLWNhcC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLXNsaWNlZC12YmktY2FwLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDU2MjNjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1zbGljZWQtdmJpLWNhcC54bWwKQEAgLTAsMCArMSwyNTUgQEAKKzxyZWZlbnRyeSBpZD0idmlkaW9jLWctc2xpY2VkLXZiaS1jYXAiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBWSURJT0NfR19TTElDRURfVkJJX0NBUDwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX0dfU0xJQ0VEX1ZCSV9DQVA8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+UXVlcnkgc2xpY2VkIFZCSSBjYXBhYmlsaXRpZXM8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c3RydWN0IHY0bDJfc2xpY2VkX3ZiaV9jYXAgKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19HX1NMSUNFRF9WQklfQ0FQPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5UbyBmaW5kIG91dCB3aGljaCBkYXRhIHNlcnZpY2VzIGFyZSBzdXBwb3J0ZWQgYnkgYSBzbGljZWQKK1ZCSSBjYXB0dXJlIG9yIG91dHB1dCBkZXZpY2UsIGFwcGxpY2F0aW9ucyBpbml0aWFsaXplIHRoZQorPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiBhICZ2NGwyLXNsaWNlZC12YmktY2FwOywKK2NsZWFyIHRoZSA8c3RydWN0ZmllbGQ+cmVzZXJ2ZWQ8L3N0cnVjdGZpZWxkPiBhcnJheSBhbmQKK2NhbGwgdGhlIDxjb25zdGFudD5WSURJT0NfR19TTElDRURfVkJJX0NBUDwvY29uc3RhbnQ+IGlvY3RsLiBUaGUKK2RyaXZlciBmaWxscyBpbiB0aGUgcmVtYWluaW5nIGZpZWxkcyBvciByZXR1cm5zIGFuICZFSU5WQUw7IGlmIHRoZQorc2xpY2VkIFZCSSBBUEkgaXMgdW5zdXBwb3J0ZWQgb3IgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPgoraXMgaW52YWxpZC48L3BhcmE+CisKKyAgICA8cGFyYT5Ob3RlIHRoZSA8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IGZpZWxkIHdhcyBhZGRlZCwKK2FuZCB0aGUgaW9jdGwgY2hhbmdlZCBmcm9tIHJlYWQtb25seSB0byB3cml0ZS1yZWFkLCBpbiBMaW51eCAyLjYuMTkuPC9wYXJhPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLXNsaWNlZC12YmktY2FwIj4KKyAgICAgIDx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9zbGljZWRfdmJpX2NhcDwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSI1Ij4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMSIgY29sd2lkdGg9IjMqIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMyIiBjb2x3aWR0aD0iMyoiIC8+CisJPGNvbHNwZWMgY29sbmFtZT0iYzMiIGNvbHdpZHRoPSIyKiIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjNCIgY29sd2lkdGg9IjIqIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImM1IiBjb2x3aWR0aD0iMioiIC8+CisJPHNwYW5zcGVjIHNwYW5uYW1lPSJoc3BhbiIgbmFtZXN0PSJjMyIgbmFtZWVuZD0iYzUiIC8+CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UxNjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+c2VydmljZV9zZXQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaHNwYW4iPkEgc2V0IG9mIGFsbCBkYXRhIHNlcnZpY2VzCitzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlci4gRXF1YWwgdG8gdGhlIHVuaW9uIG9mIGFsbCBlbGVtZW50cyBvZiB0aGUKKzxzdHJ1Y3RmaWVsZD5zZXJ2aWNlX2xpbmVzIDwvc3RydWN0ZmllbGQ+IGFycmF5LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UxNjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+c2VydmljZV9saW5lczwvc3RydWN0ZmllbGQ+WzJdWzI0XTwvZW50cnk+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaHNwYW4iPkVhY2ggZWxlbWVudCBvZiB0aGlzIGFycmF5Citjb250YWlucyBhIHNldCBvZiBkYXRhIHNlcnZpY2VzIHRoZSBoYXJkd2FyZSBjYW4gbG9vayBmb3Igb3IgaW5zZXJ0CitpbnRvIGEgcGFydGljdWxhciBzY2FuIGxpbmUuIERhdGEgc2VydmljZXMgYXJlIGRlZmluZWQgaW4gPHhyZWYKKwkJbGlua2VuZD0idmJpLXNlcnZpY2VzIiAvPi4gQXJyYXkgaW5kaWNlcyBtYXAgdG8gSVRVLVIKK2xpbmUgbnVtYmVycyAoc2VlIGFsc28gPHhyZWYKKwkJbGlua2VuZD0idmJpLTUyNSIgLz4gYW5kIDx4cmVmCitsaW5rZW5kPSJ2YmktNjI1IiAvPikgYXMgZm9sbG93czo8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT5FbGVtZW50PC9lbnRyeT4KKwkgICAgPGVudHJ5PjUyNSBsaW5lIHN5c3RlbXM8L2VudHJ5PgorCSAgICA8ZW50cnk+NjI1IGxpbmUgc3lzdGVtczwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5zZXJ2aWNlX2xpbmVzPC9zdHJ1Y3RmaWVsZD5bMF1bMV08L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+MTwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj4xPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnNlcnZpY2VfbGluZXM8L3N0cnVjdGZpZWxkPlswXVsyM108L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+MjM8L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+MjM8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+c2VydmljZV9saW5lczwvc3RydWN0ZmllbGQ+WzFdWzFdPC9lbnRyeT4KKwkgICAgPGVudHJ5IGFsaWduPSJjZW50ZXIiPjI2NDwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj4zMTQ8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+c2VydmljZV9saW5lczwvc3RydWN0ZmllbGQ+WzFdWzIzXTwvZW50cnk+CisJICAgIDxlbnRyeSBhbGlnbj0iY2VudGVyIj4yODY8L2VudHJ5PgorCSAgICA8ZW50cnkgYWxpZ249ImNlbnRlciI+MzM2PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJoc3BhbiI+VGhlIG51bWJlciBvZiBWQkkgbGluZXMgdGhlCitoYXJkd2FyZSBjYW4gY2FwdHVyZSBvciBvdXRwdXQgcGVyIGZyYW1lLCBvciB0aGUgbnVtYmVyIG9mIHNlcnZpY2VzIGl0CitjYW4gaWRlbnRpZnkgb24gYSBnaXZlbiBsaW5lIG1heSBiZSBsaW1pdGVkLiBGb3IgZXhhbXBsZSBvbiBQQUwgbGluZQorMTYgdGhlIGhhcmR3YXJlIG1heSBiZSBhYmxlIHRvIGxvb2sgZm9yIGEgVlBTIG9yIFRlbGV0ZXh0IHNpZ25hbCwgYnV0Citub3QgYm90aCBhdCB0aGUgc2FtZSB0aW1lLiBBcHBsaWNhdGlvbnMgY2FuIGxlYXJuIGFib3V0IHRoZXNlIGxpbWl0cwordXNpbmcgdGhlICZWSURJT0MtUy1GTVQ7IGlvY3RsIGFzIGRlc2NyaWJlZCBpbiA8eHJlZgorCQlsaW5rZW5kPSJzbGljZWQiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaHNwYW4iPkRyaXZlcnMgbXVzdCBzZXQKKzxzdHJ1Y3RmaWVsZD5zZXJ2aWNlX2xpbmVzPC9zdHJ1Y3RmaWVsZD5bMF1bMF0gYW5kCis8c3RydWN0ZmllbGQ+c2VydmljZV9saW5lczwvc3RydWN0ZmllbGQ+WzFdWzBdIHRvIHplcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VHlwZSBvZiB0aGUgZGF0YSBzdHJlYW0sIHNlZSA8eHJlZgorCQkgIGxpbmtlbmQ9InY0bDItYnVmLXR5cGUiIC8+LiBTaG91bGQgYmUKKzxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1NMSUNFRF9WQklfQ0FQVFVSRTwvY29uc3RhbnQ+IG9yCis8Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9TTElDRURfVkJJX09VVFBVVDwvY29uc3RhbnQ+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cmVzZXJ2ZWQ8L3N0cnVjdGZpZWxkPlszXTwvZW50cnk+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaHNwYW4iPlRoaXMgYXJyYXkgaXMgcmVzZXJ2ZWQgZm9yIGZ1dHVyZQorZXh0ZW5zaW9ucy4gQXBwbGljYXRpb25zIGFuZCBkcml2ZXJzIG11c3Qgc2V0IGl0IHRvIHplcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPCEtLSBTZWUgYWxzbyBkZXYtc2xpY2VkLXZiaS5zZ21sIC0tPgorICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idmJpLXNlcnZpY2VzIj4KKyAgICAgIDx0aXRsZT5TbGljZWQgVkJJIHNlcnZpY2VzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iNSI+CisJPGNvbHNwZWMgY29sbmFtZT0iYzEiIGNvbHdpZHRoPSIyKiIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMiIgY29sd2lkdGg9IjEqIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMzIiBjb2x3aWR0aD0iMSoiIC8+CisJPGNvbHNwZWMgY29sbmFtZT0iYzQiIGNvbHdpZHRoPSIyKiIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjNSIgY29sd2lkdGg9IjIqIiAvPgorCTxzcGFuc3BlYyBzcGFubmFtZT0ncmxwJyBuYW1lc3Q9J2MzJyBuYW1lZW5kPSdjNScgLz4KKwk8dGhlYWQ+CisJICA8cm93PgorCSAgICA8ZW50cnk+U3ltYm9sPC9lbnRyeT4KKwkgICAgPGVudHJ5PlZhbHVlPC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlZmVyZW5jZTwvZW50cnk+CisJICAgIDxlbnRyeT5MaW5lcywgdXN1YWxseTwvZW50cnk+CisJICAgIDxlbnRyeT5QYXlsb2FkPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGhlYWQ+CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9TTElDRURfVEVMRVRFWFRfQjwvY29uc3RhbnQ+IChUZWxldGV4dAorU3lzdGVtIEIpPC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMTwvZW50cnk+CisJICAgIDxlbnRyeT48eHJlZiBsaW5rZW5kPSJldHMzMDA3MDYiIC8+LCA8eHJlZiBsaW5rZW5kPSJpdHU2NTMiIC8+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlBBTC9TRUNBTSBsaW5lIDctMjIsIDMyMC0zMzUgKHNlY29uZCBmaWVsZCA3LTIyKTwvZW50cnk+CisJICAgIDxlbnRyeT5MYXN0IDQyIG9mIHRoZSA0NSBieXRlIFRlbGV0ZXh0IHBhY2tldCwgdGhhdCBpcword2l0aG91dCBjbG9jayBydW4taW4gYW5kIGZyYW1pbmcgY29kZSwgbHNiIGZpcnN0IHRyYW5zbWl0dGVkLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9TTElDRURfVlBTPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwNDAwPC9lbnRyeT4KKwkgICAgPGVudHJ5Pjx4cmVmIGxpbmtlbmQ9ImV0czMwMDIzMSIgLz48L2VudHJ5PgorCSAgICA8ZW50cnk+UEFMIGxpbmUgMTY8L2VudHJ5PgorCSAgICA8ZW50cnk+Qnl0ZSBudW1iZXIgMyB0byAxNSBhY2NvcmRpbmcgdG8gRmlndXJlIDkgb2YKK0VUUyZuYnNwOzMwMCZuYnNwOzIzMSwgbHNiIGZpcnN0IHRyYW5zbWl0dGVkLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9TTElDRURfQ0FQVElPTl81MjU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDEwMDA8L2VudHJ5PgorCSAgICA8ZW50cnk+PHhyZWYgbGlua2VuZD0iY2VhNjA4IiAvPjwvZW50cnk+CisJICAgIDxlbnRyeT5OVFNDIGxpbmUgMjEsIDI4NCAoc2Vjb25kIGZpZWxkIDIxKTwvZW50cnk+CisJICAgIDxlbnRyeT5Ud28gYnl0ZXMgaW4gdHJhbnNtaXNzaW9uIG9yZGVyLCBpbmNsdWRpbmcgcGFyaXR5CitiaXQsIGxzYiBmaXJzdCB0cmFuc21pdHRlZC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfU0xJQ0VEX1dTU182MjU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDQwMDA8L2VudHJ5PgorCSAgICA8ZW50cnk+PHhyZWYgbGlua2VuZD0iZW4zMDAyOTQiIC8+LCA8eHJlZiBsaW5rZW5kPSJpdHUxMTE5IiAvPjwvZW50cnk+CisJICAgIDxlbnRyeT5QQUwvU0VDQU0gbGluZSAyMzwvZW50cnk+CisJICAgIDxlbnRyeT48c2NyZWVuPgorQnl0ZSAgICAgICAgMCAgICAgICAgICAgICAgICAgMQorICAgICBtc2IgICAgICAgICBsc2IgIG1zYiAgICAgICAgICAgbHNiCitCaXQgIDcgNiA1IDQgMyAyIDEgMCAgeCB4IDEzIDEyIDExIDEwIDkKKzwvc2NyZWVuPjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9TTElDRURfVkJJXzUyNTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MTAwMDwvZW50cnk+CisJICAgIDxlbnRyeSBzcGFubmFtZT0icmxwIj5TZXQgb2Ygc2VydmljZXMgYXBwbGljYWJsZSB0byA1MjUKK2xpbmUgc3lzdGVtcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfU0xJQ0VEX1ZCSV82MjU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDQ0MDE8L2VudHJ5PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9InJscCI+U2V0IG9mIHNlcnZpY2VzIGFwcGxpY2FibGUgdG8gNjI1CitsaW5lIHN5c3RlbXMuPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgdmFsdWUgaW4gdGhlIDxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gZmllbGQgaXMKK3dyb25nLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1zdGQueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtZy1zdGQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhODk4NDEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLXN0ZC54bWwKQEAgLTAsMCArMSw5OCBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2MtZy1zdGQiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBWSURJT0NfR19TVEQsIFZJRElPQ19TX1NURDwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX0dfU1REPC9yZWZuYW1lPgorICAgIDxyZWZuYW1lPlZJRElPQ19TX1NURDwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5RdWVyeSBvciBzZWxlY3QgdGhlIHZpZGVvIHN0YW5kYXJkIG9mIHRoZSBjdXJyZW50IGlucHV0PC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnY0bDJfc3RkX2lkCisqPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5jb25zdCB2NGwyX3N0ZF9pZAorKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19HX1NURCwgVklESU9DX1NfU1REPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5UbyBxdWVyeSBhbmQgc2VsZWN0IHRoZSBjdXJyZW50IHZpZGVvIHN0YW5kYXJkIGFwcGxpY2F0aW9ucwordXNlIHRoZSA8Y29uc3RhbnQ+VklESU9DX0dfU1REPC9jb25zdGFudD4gYW5kIDxjb25zdGFudD5WSURJT0NfU19TVEQ8L2NvbnN0YW50PiBpb2N0bHMgd2hpY2ggdGFrZSBhIHBvaW50ZXIgdG8gYQorJnY0bDItc3RkLWlkOyB0eXBlIGFzIGFyZ3VtZW50LiA8Y29uc3RhbnQ+VklESU9DX0dfU1REPC9jb25zdGFudD4gY2FuCityZXR1cm4gYSBzaW5nbGUgZmxhZyBvciBhIHNldCBvZiBmbGFncyBhcyBpbiAmdjRsMi1zdGFuZGFyZDsgZmllbGQKKzxzdHJ1Y3RmaWVsZD5pZDwvc3RydWN0ZmllbGQ+LiBUaGUgZmxhZ3MgbXVzdCBiZSB1bmFtYmlndW91cyBzdWNoCit0aGF0IHRoZXkgYXBwZWFyIGluIG9ubHkgb25lIGVudW1lcmF0ZWQgPHN0cnVjdG5hbWU+djRsMl9zdGFuZGFyZDwvc3RydWN0bmFtZT4gc3RydWN0dXJlLjwvcGFyYT4KKworICAgIDxwYXJhPjxjb25zdGFudD5WSURJT0NfU19TVEQ8L2NvbnN0YW50PiBhY2NlcHRzIG9uZSBvciBtb3JlCitmbGFncywgYmVpbmcgYSB3cml0ZS1vbmx5IGlvY3RsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgYWN0dWFsIG5ldyBzdGFuZGFyZCBhcworPGNvbnN0YW50PlZJRElPQ19HX1NURDwvY29uc3RhbnQ+IGRvZXMuIFdoZW4gbm8gZmxhZ3MgYXJlIGdpdmVuIG9yCit0aGUgY3VycmVudCBpbnB1dCBkb2VzIG5vdCBzdXBwb3J0IHRoZSByZXF1ZXN0ZWQgc3RhbmRhcmQgdGhlIGRyaXZlcgorcmV0dXJucyBhbiAmRUlOVkFMOy4gV2hlbiB0aGUgc3RhbmRhcmQgc2V0IGlzIGFtYmlndW91cyBkcml2ZXJzIG1heQorcmV0dXJuIDxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+IG9yIGNob29zZSBhbnkgb2YgdGhlIHJlcXVlc3RlZAorc3RhbmRhcmRzLiBJZiB0aGUgY3VycmVudCBpbnB1dCBvciBvdXRwdXQgZG9lcyBub3Qgc3VwcG9ydCBzdGFuZGFyZCB2aWRlbyB0aW1pbmdzIChlLmcuIGlmCismVklESU9DLUVOVU1JTlBVVDsgZG9lcyBub3Qgc2V0IHRoZSA8Y29uc3RhbnQ+VjRMMl9JTl9DQVBfU1REPC9jb25zdGFudD4gZmxhZyksIHRoZW4KKyZFTk9EQVRBOyBpcyByZXR1cm5lZC48L3BhcmE+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgPGNvbnN0YW50PlZJRElPQ19TX1NURDwvY29uc3RhbnQ+IHBhcmFtZXRlciB3YXMgdW5zdWl0YWJsZS48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVOT0RBVEE8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+U3RhbmRhcmQgdmlkZW8gdGltaW5ncyBhcmUgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBpbnB1dCBvciBvdXRwdXQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLXR1bmVyLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWctdHVuZXIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1OWI3ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1nLXR1bmVyLnhtbApAQCAtMCwwICsxLDU5NCBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2MtZy10dW5lciI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19HX1RVTkVSLCBWSURJT0NfU19UVU5FUjwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX0dfVFVORVI8L3JlZm5hbWU+CisgICAgPHJlZm5hbWU+VklESU9DX1NfVFVORVI8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+R2V0IG9yIHNldCB0dW5lciBhdHRyaWJ1dGVzPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCB2NGwyX3R1bmVyCisqPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5jb25zdCBzdHJ1Y3QgdjRsMl90dW5lcgorKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19HX1RVTkVSLCBWSURJT0NfU19UVU5FUjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgPHBhcmE+VG8gcXVlcnkgdGhlIGF0dHJpYnV0ZXMgb2YgYSB0dW5lciBhcHBsaWNhdGlvbnMgaW5pdGlhbGl6ZSB0aGUKKzxzdHJ1Y3RmaWVsZD5pbmRleDwvc3RydWN0ZmllbGQ+IGZpZWxkIGFuZCB6ZXJvIG91dCB0aGUKKzxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+IGFycmF5IG9mIGEgJnY0bDItdHVuZXI7IGFuZCBjYWxsIHRoZQorPGNvbnN0YW50PlZJRElPQ19HX1RVTkVSPC9jb25zdGFudD4gaW9jdGwgd2l0aCBhIHBvaW50ZXIgdG8gdGhpcworc3RydWN0dXJlLiBEcml2ZXJzIGZpbGwgdGhlIHJlc3Qgb2YgdGhlIHN0cnVjdHVyZSBvciByZXR1cm4gYW4KKyZFSU5WQUw7IHdoZW4gdGhlIGluZGV4IGlzIG91dCBvZiBib3VuZHMuIFRvIGVudW1lcmF0ZSBhbGwgdHVuZXJzCithcHBsaWNhdGlvbnMgc2hhbGwgYmVnaW4gYXQgaW5kZXggemVybywgaW5jcmVtZW50aW5nIGJ5IG9uZSB1bnRpbCB0aGUKK2RyaXZlciByZXR1cm5zIDxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+LjwvcGFyYT4KKworICAgIDxwYXJhPlR1bmVycyBoYXZlIHR3byB3cml0YWJsZSBwcm9wZXJ0aWVzLCB0aGUgYXVkaW8gbW9kZSBhbmQKK3RoZSByYWRpbyBmcmVxdWVuY3kuIFRvIGNoYW5nZSB0aGUgYXVkaW8gbW9kZSwgYXBwbGljYXRpb25zIGluaXRpYWxpemUKK3RoZSA8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPiwKKzxzdHJ1Y3RmaWVsZD5hdWRtb2RlPC9zdHJ1Y3RmaWVsZD4gYW5kCis8c3RydWN0ZmllbGQ+cmVzZXJ2ZWQ8L3N0cnVjdGZpZWxkPiBmaWVsZHMgYW5kIGNhbGwgdGhlCis8Y29uc3RhbnQ+VklESU9DX1NfVFVORVI8L2NvbnN0YW50PiBpb2N0bC4gVGhpcyB3aWxsCis8ZW1waGFzaXM+bm90PC9lbXBoYXNpcz4gY2hhbmdlIHRoZSBjdXJyZW50IHR1bmVyLCB3aGljaCBpcyBkZXRlcm1pbmVkCitieSB0aGUgY3VycmVudCB2aWRlbyBpbnB1dC4gRHJpdmVycyBtYXkgY2hvb3NlIGEgZGlmZmVyZW50IGF1ZGlvIG1vZGUKK2lmIHRoZSByZXF1ZXN0ZWQgbW9kZSBpcyBpbnZhbGlkIG9yIHVuc3VwcG9ydGVkLiBTaW5jZSB0aGlzIGlzIGEKKzwhLS0gRklYTUUgLS0+d3JpdGUtb25seSBpb2N0bCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSBhY3R1YWxseQorc2VsZWN0ZWQgYXVkaW8gbW9kZS48L3BhcmE+CisKKyAgICA8cGFyYT48bGluayBsaW5rZW5kPSJzZHIiPlNEUjwvbGluaz4gc3BlY2lmaWMgdHVuZXIgdHlwZXMgYXJlCis8Y29uc3RhbnQ+VjRMMl9UVU5FUl9TRFI8L2NvbnN0YW50PiBhbmQgPGNvbnN0YW50PlY0TDJfVFVORVJfUkY8L2NvbnN0YW50Pi4KK0ZvciBTRFIgZGV2aWNlcyA8c3RydWN0ZmllbGQ+YXVkbW9kZTwvc3RydWN0ZmllbGQ+IGZpZWxkIG11c3QgYmUKK2luaXRpYWxpemVkIHRvIHplcm8uCitUaGUgdGVybSAndHVuZXInIG1lYW5zIFNEUiByZWNlaXZlciBpbiB0aGlzIGNvbnRleHQuPC9wYXJhPgorCisgICAgPHBhcmE+VG8gY2hhbmdlIHRoZSByYWRpbyBmcmVxdWVuY3kgdGhlICZWSURJT0MtUy1GUkVRVUVOQ1k7IGlvY3RsCitpcyBhdmFpbGFibGUuPC9wYXJhPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLXR1bmVyIj4KKyAgICAgIDx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl90dW5lcjwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjMSIgY29sd2lkdGg9IjEqIiAvPgorCTxjb2xzcGVjIGNvbG5hbWU9ImMyIiBjb2x3aWR0aD0iMSoiIC8+CisJPGNvbHNwZWMgY29sbmFtZT0iYzMiIGNvbHdpZHRoPSIxKiIgLz4KKwk8Y29sc3BlYyBjb2xuYW1lPSJjNCIgY29sd2lkdGg9IjEqIiAvPgorCTxzcGFuc3BlYyBzcGFubmFtZT0iaHNwYW4iIG5hbWVzdD0iYzMiIG5hbWVlbmQ9ImM0IiAvPgorCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImhzcGFuIj5JZGVudGlmaWVzIHRoZSB0dW5lciwgc2V0IGJ5IHRoZQorYXBwbGljYXRpb24uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTg8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm5hbWU8L3N0cnVjdGZpZWxkPlszMl08L2VudHJ5PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImhzcGFuIj48cGFyYT5OYW1lIG9mIHRoZSB0dW5lciwgYQorTlVMLXRlcm1pbmF0ZWQgQVNDSUkgc3RyaW5nLiBUaGlzIGluZm9ybWF0aW9uIGlzIGludGVuZGVkIGZvciB0aGUKK3VzZXIuPCEtLSBGSVhNRSBWaWRlbyBpbnB1dHMgYWxyZWFkeSBoYXZlIGEgbmFtZSwgdGhlIHB1cnBvc2Ugb2YgdGhpcworZmllbGQgaXMgbm90IHF1aXRlIGNsZWFyLi0tPjwvcGFyYT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaHNwYW4iPlR5cGUgb2YgdGhlIHR1bmVyLCBzZWUgPHhyZWYKKwkJbGlua2VuZD0idjRsMi10dW5lci10eXBlIiAvPi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmNhcGFiaWxpdHk8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaHNwYW4iPjxwYXJhPlR1bmVyIGNhcGFiaWxpdHkgZmxhZ3MsIHNlZQorPHhyZWYgbGlua2VuZD0idHVuZXItY2FwYWJpbGl0eSIgLz4uIEF1ZGlvIGZsYWdzIGluZGljYXRlIHRoZSBhYmlsaXR5Cit0byBkZWNvZGUgYXVkaW8gc3VicHJvZ3JhbXMuIFRoZXkgd2lsbCA8ZW1waGFzaXM+bm90PC9lbXBoYXNpcz4KK2NoYW5nZSwgZm9yIGV4YW1wbGUgd2l0aCB0aGUgY3VycmVudCB2aWRlbyBzdGFuZGFyZC48L3BhcmE+PHBhcmE+V2hlbgordGhlIHN0cnVjdHVyZSByZWZlcnMgdG8gYSByYWRpbyB0dW5lciB0aGUKKzxjb25zdGFudD5WNEwyX1RVTkVSX0NBUF9MQU5HMTwvY29uc3RhbnQ+LAorPGNvbnN0YW50PlY0TDJfVFVORVJfQ0FQX0xBTkcyPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VjRMMl9UVU5FUl9DQVBfTk9STTwvY29uc3RhbnQ+IGZsYWdzIGNhbid0IGJlIHVzZWQuPC9wYXJhPgorPHBhcmE+SWYgbXVsdGlwbGUgZnJlcXVlbmN5IGJhbmRzIGFyZSBzdXBwb3J0ZWQsIHRoZW4KKzxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXR5PC9zdHJ1Y3RmaWVsZD4gaXMgdGhlIHVuaW9uIG9mIGFsbAorPHN0cnVjdGZpZWxkPmNhcGFiaWxpdHk8L3N0cnVjdGZpZWxkPiBmaWVsZHMgb2YgZWFjaCAmdjRsMi1mcmVxdWVuY3ktYmFuZDsuCis8L3BhcmE+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yYW5nZWxvdzwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJoc3BhbiI+VGhlIGxvd2VzdCB0dW5hYmxlIGZyZXF1ZW5jeSBpbgordW5pdHMgb2YgNjIuNSBrSHosIG9yIGlmIHRoZSA8c3RydWN0ZmllbGQ+Y2FwYWJpbGl0eTwvc3RydWN0ZmllbGQ+CitmbGFnIDxjb25zdGFudD5WNEwyX1RVTkVSX0NBUF9MT1c8L2NvbnN0YW50PiBpcyBzZXQsIGluIHVuaXRzIG9mIDYyLjUKK0h6LCBvciBpZiB0aGUgPHN0cnVjdGZpZWxkPmNhcGFiaWxpdHk8L3N0cnVjdGZpZWxkPiBmbGFnCis8Y29uc3RhbnQ+VjRMMl9UVU5FUl9DQVBfMUhaPC9jb25zdGFudD4gaXMgc2V0LCBpbiB1bml0cyBvZiAxIEh6LgorSWYgbXVsdGlwbGUgZnJlcXVlbmN5IGJhbmRzIGFyZSBzdXBwb3J0ZWQsIHRoZW4KKzxzdHJ1Y3RmaWVsZD5yYW5nZWxvdzwvc3RydWN0ZmllbGQ+IGlzIHRoZSBsb3dlc3QgZnJlcXVlbmN5CitvZiBhbGwgdGhlIGZyZXF1ZW5jeSBiYW5kcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJhbmdlaGlnaDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJoc3BhbiI+VGhlIGhpZ2hlc3QgdHVuYWJsZSBmcmVxdWVuY3kgaW4KK3VuaXRzIG9mIDYyLjUga0h6LCBvciBpZiB0aGUgPHN0cnVjdGZpZWxkPmNhcGFiaWxpdHk8L3N0cnVjdGZpZWxkPgorZmxhZyA8Y29uc3RhbnQ+VjRMMl9UVU5FUl9DQVBfTE9XPC9jb25zdGFudD4gaXMgc2V0LCBpbiB1bml0cyBvZiA2Mi41CitIeiwgb3IgaWYgdGhlIDxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXR5PC9zdHJ1Y3RmaWVsZD4gZmxhZworPGNvbnN0YW50PlY0TDJfVFVORVJfQ0FQXzFIWjwvY29uc3RhbnQ+IGlzIHNldCwgaW4gdW5pdHMgb2YgMSBIei4KK0lmIG11bHRpcGxlIGZyZXF1ZW5jeSBiYW5kcyBhcmUgc3VwcG9ydGVkLCB0aGVuCis8c3RydWN0ZmllbGQ+cmFuZ2VoaWdoPC9zdHJ1Y3RmaWVsZD4gaXMgdGhlIGhpZ2hlc3QgZnJlcXVlbmN5CitvZiBhbGwgdGhlIGZyZXF1ZW5jeSBiYW5kcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJ4c3ViY2hhbnM8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaHNwYW4iPjxwYXJhPlNvbWUgdHVuZXJzIG9yIGF1ZGlvCitkZWNvZGVycyBjYW4gZGV0ZXJtaW5lIHRoZSByZWNlaXZlZCBhdWRpbyBzdWJwcm9ncmFtcyBieSBhbmFseXppbmcKK2F1ZGlvIGNhcnJpZXJzLCBwaWxvdCB0b25lcyBvciBvdGhlciBpbmRpY2F0b3JzLiBUbyBwYXNzIHRoaXMKK2luZm9ybWF0aW9uIGRyaXZlcnMgc2V0IGZsYWdzIGRlZmluZWQgaW4gPHhyZWYKKwkJICBsaW5rZW5kPSJ0dW5lci1yeHN1YmNoYW5zIiAvPiBpbiB0aGlzIGZpZWxkLiBGb3IKK2V4YW1wbGU6PC9wYXJhPjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1RVTkVSX1NVQl9NT05PPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+cmVjZWl2aW5nIG1vbm8gYXVkaW88L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+U1RFUkVPIHwgU0FQPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+cmVjZWl2aW5nIHN0ZXJlbyBhdWRpbyBhbmQgYSBzZWNvbmRhcnkgYXVkaW8KK3Byb2dyYW08L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+TU9OTyB8IFNURVJFTzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnJlY2VpdmluZyBtb25vIG9yIHN0ZXJlbyBhdWRpbywgdGhlIGhhcmR3YXJlIGNhbm5vdAorZGlzdGluZ3Vpc2g8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+TEFORzEgfCBMQU5HMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PnJlY2VpdmluZyBiaWxpbmd1YWwgYXVkaW88L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+TU9OTyB8IFNURVJFTyB8IExBTkcxIHwgTEFORzI8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5yZWNlaXZpbmcgbW9ubywgc3RlcmVvIG9yIGJpbGluZ3VhbAorYXVkaW88L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaHNwYW4iPjxwYXJhPldoZW4gdGhlCis8Y29uc3RhbnQ+VjRMMl9UVU5FUl9DQVBfU1RFUkVPPC9jb25zdGFudD4sCis8Y29uc3RhbnQ+X0xBTkcxPC9jb25zdGFudD4sIDxjb25zdGFudD5fTEFORzI8L2NvbnN0YW50PiBvcgorPGNvbnN0YW50Pl9TQVA8L2NvbnN0YW50PiBmbGFnIGlzIGNsZWFyZWQgaW4gdGhlCis8c3RydWN0ZmllbGQ+Y2FwYWJpbGl0eTwvc3RydWN0ZmllbGQ+IGZpZWxkLCB0aGUgY29ycmVzcG9uZGluZworPGNvbnN0YW50PlY0TDJfVFVORVJfU1VCXzwvY29uc3RhbnQ+IGZsYWcgbXVzdCBub3QgYmUgc2V0CitoZXJlLjwvcGFyYT48cGFyYT5UaGlzIGZpZWxkIGlzIHZhbGlkIG9ubHkgaWYgdGhpcyBpcyB0aGUgdHVuZXIgb2YgdGhlCitjdXJyZW50IHZpZGVvIGlucHV0LCBvciB3aGVuIHRoZSBzdHJ1Y3R1cmUgcmVmZXJzIHRvIGEgcmFkaW8KK3R1bmVyLjwvcGFyYT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmF1ZG1vZGU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaHNwYW4iPjxwYXJhPlRoZSBzZWxlY3RlZCBhdWRpbyBtb2RlLCBzZWUKKzx4cmVmIGxpbmtlbmQ9InR1bmVyLWF1ZG1vZGUiIC8+IGZvciB2YWxpZCB2YWx1ZXMuIFRoZSBhdWRpbyBtb2RlIGRvZXMKK25vdCBhZmZlY3QgYXVkaW8gc3VicHJvZ3JhbSBkZXRlY3Rpb24sIGFuZCBsaWtlIGEgPGxpbmsKK2xpbmtlbmQ9ImNvbnRyb2wiPmNvbnRyb2w8L2xpbms+IGl0IGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgY2hhbmdlCit1bmxlc3MgdGhlIHJlcXVlc3RlZCBtb2RlIGlzIGludmFsaWQgb3IgdW5zdXBwb3J0ZWQuIFNlZSA8eHJlZgorCQkgIGxpbmtlbmQ9InR1bmVyLW1hdHJpeCIgLz4gZm9yIHBvc3NpYmxlIHJlc3VsdHMgd2hlbgordGhlIHNlbGVjdGVkIGFuZCByZWNlaXZlZCBhdWRpbyBwcm9ncmFtcyBkbyBub3QKK21hdGNoLjwvcGFyYT48cGFyYT5DdXJyZW50bHkgdGhpcyBpcyB0aGUgb25seSBmaWVsZCBvZiBzdHJ1Y3QKKzxzdHJ1Y3RuYW1lPnY0bDJfdHVuZXI8L3N0cnVjdG5hbWU+IGFwcGxpY2F0aW9ucyBjYW4KK2NoYW5nZS48L3BhcmE+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5zaWduYWw8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaHNwYW4iPlRoZSBzaWduYWwgc3RyZW5ndGggaWYga25vd24sIHJhbmdpbmcKK2Zyb20gMCB0byA2NTUzNS4gSGlnaGVyIHZhbHVlcyBpbmRpY2F0ZSBhIGJldHRlciBzaWduYWwuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fczMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5hZmM8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeSBzcGFubmFtZT0iaHNwYW4iPkF1dG9tYXRpYyBmcmVxdWVuY3kgY29udHJvbDogV2hlbiB0aGUKKzxzdHJ1Y3RmaWVsZD5hZmM8L3N0cnVjdGZpZWxkPiB2YWx1ZSBpcyBuZWdhdGl2ZSwgdGhlIGZyZXF1ZW5jeSBpcyB0b28KK2xvdywgd2hlbiBwb3NpdGl2ZSB0b28gaGlnaC48IS0tIEZJWE1FIG5lZWQgZXhhbXBsZSB3aGF0IHRvIGRvIHdoZW4gaXQgbmV2ZXIKK3NldHRsZXMgYXQgemVybywgJmllOyByYW5nZSBpcyB3aGF0PyAtLT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD5bNF08L2VudHJ5PgorCSAgICA8ZW50cnkgc3Bhbm5hbWU9ImhzcGFuIj5SZXNlcnZlZCBmb3IgZnV0dXJlIGV4dGVuc2lvbnMuIERyaXZlcnMgYW5kCithcHBsaWNhdGlvbnMgbXVzdCBzZXQgdGhlIGFycmF5IHRvIHplcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLXR1bmVyLXR5cGUiPgorICAgICAgPHRpdGxlPmVudW0gdjRsMl90dW5lcl90eXBlPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1RVTkVSX1JBRElPPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MTwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfVFVORVJfQU5BTE9HX1RWPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfVFVORVJfU0RSPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+NDwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfVFVORVJfUkY8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT41PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idHVuZXItY2FwYWJpbGl0eSI+CisgICAgICA8dGl0bGU+VHVuZXIgYW5kIE1vZHVsYXRvciBDYXBhYmlsaXR5IEZsYWdzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1RVTkVSX0NBUF9MT1c8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDE8L2VudHJ5PgorCSAgICA8ZW50cnk+V2hlbiBzZXQsIHR1bmluZyBmcmVxdWVuY2llcyBhcmUgZXhwcmVzc2VkIGluIHVuaXRzIG9mCis2Mi41IEh6IGluc3RlYWQgb2YgNjIuNSBrSHouPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1RVTkVSX0NBUF9OT1JNPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAyPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoaXMgaXMgYSBtdWx0aS1zdGFuZGFyZCB0dW5lcjsgdGhlIHZpZGVvIHN0YW5kYXJkCitjYW4gb3IgbXVzdCBiZSBzd2l0Y2hlZC4gKEIvRyBQQUwgdHVuZXJzIGZvciBleGFtcGxlIGFyZSB0eXBpY2FsbHkgbm90CisgICAgICBjb25zaWRlcmVkIG11bHRpLXN0YW5kYXJkIGJlY2F1c2UgdGhlIHZpZGVvIHN0YW5kYXJkIGlzIGF1dG9tYXRpY2FsbHkKKyAgICAgIGRldGVybWluZWQgZnJvbSB0aGUgZnJlcXVlbmN5IGJhbmQuKSBUaGUgc2V0IG9mIHN1cHBvcnRlZCB2aWRlbworICAgICAgc3RhbmRhcmRzIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSAmdjRsMi1pbnB1dDsgcG9pbnRpbmcgdG8gdGhpcyB0dW5lciwKKyAgICAgIHNlZSB0aGUgZGVzY3JpcHRpb24gb2YgaW9jdGwgJlZJRElPQy1FTlVNSU5QVVQ7IGZvciBkZXRhaWxzLiBPbmx5CisgICAgICA8Y29uc3RhbnQ+VjRMMl9UVU5FUl9BTkFMT0dfVFY8L2NvbnN0YW50PiB0dW5lcnMgY2FuIGhhdmUgdGhpcyBjYXBhYmlsaXR5LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9UVU5FUl9DQVBfSFdTRUVLX0JPVU5ERUQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDQ8L2VudHJ5PgorCSAgICA8ZW50cnk+SWYgc2V0LCB0aGVuIHRoaXMgdHVuZXIgc3VwcG9ydHMgdGhlIGhhcmR3YXJlIHNlZWsgZnVuY3Rpb25hbGl0eQorCSAgICB3aGVyZSB0aGUgc2VlayBzdG9wcyB3aGVuIGl0IHJlYWNoZXMgdGhlIGVuZCBvZiB0aGUgZnJlcXVlbmN5IHJhbmdlLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9UVU5FUl9DQVBfSFdTRUVLX1dSQVA8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDg8L2VudHJ5PgorCSAgICA8ZW50cnk+SWYgc2V0LCB0aGVuIHRoaXMgdHVuZXIgc3VwcG9ydHMgdGhlIGhhcmR3YXJlIHNlZWsgZnVuY3Rpb25hbGl0eQorCSAgICB3aGVyZSB0aGUgc2VlayB3cmFwcyBhcm91bmQgd2hlbiBpdCByZWFjaGVzIHRoZSBlbmQgb2YgdGhlIGZyZXF1ZW5jeSByYW5nZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCTxlbnRyeT48Y29uc3RhbnQ+VjRMMl9UVU5FUl9DQVBfU1RFUkVPPC9jb25zdGFudD48L2VudHJ5PgorCTxlbnRyeT4weDAwMTA8L2VudHJ5PgorCTxlbnRyeT5TdGVyZW8gYXVkaW8gcmVjZXB0aW9uIGlzIHN1cHBvcnRlZC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfVFVORVJfQ0FQX0xBTkcxPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDQwPC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlY2VwdGlvbiBvZiB0aGUgcHJpbWFyeSBsYW5ndWFnZSBvZiBhIGJpbGluZ3VhbAorYXVkaW8gcHJvZ3JhbSBpcyBzdXBwb3J0ZWQuIEJpbGluZ3VhbCBhdWRpbyBpcyBhIGZlYXR1cmUgb2YKK3R3by1jaGFubmVsIHN5c3RlbXMsIHRyYW5zbWl0dGluZyB0aGUgcHJpbWFyeSBsYW5ndWFnZSBtb25hdXJhbCBvbiB0aGUKK21haW4gYXVkaW8gY2FycmllciBhbmQgYSBzZWNvbmRhcnkgbGFuZ3VhZ2UgbW9uYXVyYWwgb24gYSBzZWNvbmQKK2NhcnJpZXIuIE9ubHkKKyAgICAgIDxjb25zdGFudD5WNEwyX1RVTkVSX0FOQUxPR19UVjwvY29uc3RhbnQ+IHR1bmVycyBjYW4gaGF2ZSB0aGlzIGNhcGFiaWxpdHkuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1RVTkVSX0NBUF9MQU5HMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAyMDwvZW50cnk+CisJICAgIDxlbnRyeT5SZWNlcHRpb24gb2YgdGhlIHNlY29uZGFyeSBsYW5ndWFnZSBvZiBhIGJpbGluZ3VhbAorYXVkaW8gcHJvZ3JhbSBpcyBzdXBwb3J0ZWQuIE9ubHkKKyAgICAgIDxjb25zdGFudD5WNEwyX1RVTkVSX0FOQUxPR19UVjwvY29uc3RhbnQ+IHR1bmVycyBjYW4gaGF2ZSB0aGlzIGNhcGFiaWxpdHkuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1RVTkVSX0NBUF9TQVA8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMjA8L2VudHJ5PgorCSAgICA8ZW50cnk+PHBhcmE+UmVjZXB0aW9uIG9mIGEgc2Vjb25kYXJ5IGF1ZGlvIHByb2dyYW0gaXMKK3N1cHBvcnRlZC4gVGhpcyBpcyBhIGZlYXR1cmUgb2YgdGhlIEJUU0Mgc3lzdGVtIHdoaWNoIGFjY29tcGFuaWVzIHRoZQorTlRTQyB2aWRlbyBzdGFuZGFyZC4gVHdvIGF1ZGlvIGNhcnJpZXJzIGFyZSBhdmFpbGFibGUgZm9yIG1vbm8gb3IKK3N0ZXJlbyB0cmFuc21pc3Npb25zIG9mIGEgcHJpbWFyeSBsYW5ndWFnZSwgYW5kIGFuIGluZGVwZW5kZW50IHRoaXJkCitjYXJyaWVyIGZvciBhIG1vbmF1cmFsIHNlY29uZGFyeSBsYW5ndWFnZS4gT25seQorICAgICAgPGNvbnN0YW50PlY0TDJfVFVORVJfQU5BTE9HX1RWPC9jb25zdGFudD4gdHVuZXJzIGNhbiBoYXZlIHRoaXMgY2FwYWJpbGl0eS48L3BhcmE+PHBhcmE+Tm90ZSB0aGUKKzxjb25zdGFudD5WNEwyX1RVTkVSX0NBUF9MQU5HMjwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlY0TDJfVFVORVJfQ0FQX1NBUDwvY29uc3RhbnQ+IGZsYWdzIGFyZSBzeW5vbnltcy4KKzxjb25zdGFudD5WNEwyX1RVTkVSX0NBUF9TQVA8L2NvbnN0YW50PiBhcHBsaWVzIHdoZW4gdGhlIHR1bmVyCitzdXBwb3J0cyB0aGUgPGNvbnN0YW50PlY0TDJfU1REX05UU0NfTTwvY29uc3RhbnQ+IHZpZGVvCitzdGFuZGFyZC48L3BhcmE+PCEtLSBGSVhNRSB3aGF0IGlmIFBBTCtOVFNDIGFuZCBCaSBidXQgbm90IFNBUD8gLS0+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwk8ZW50cnk+PGNvbnN0YW50PlY0TDJfVFVORVJfQ0FQX1JEUzwvY29uc3RhbnQ+PC9lbnRyeT4KKwk8ZW50cnk+MHgwMDgwPC9lbnRyeT4KKwk8ZW50cnk+UkRTIGNhcHR1cmUgaXMgc3VwcG9ydGVkLiBUaGlzIGNhcGFiaWxpdHkgaXMgb25seSB2YWxpZCBmb3IKK3JhZGlvIHR1bmVycy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCTxlbnRyeT48Y29uc3RhbnQ+VjRMMl9UVU5FUl9DQVBfUkRTX0JMT0NLX0lPPC9jb25zdGFudD48L2VudHJ5PgorCTxlbnRyeT4weDAxMDA8L2VudHJ5PgorCTxlbnRyeT5UaGUgUkRTIGRhdGEgaXMgcGFzc2VkIGFzIHVucGFyc2VkIFJEUyBibG9ja3MuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwk8ZW50cnk+PGNvbnN0YW50PlY0TDJfVFVORVJfQ0FQX1JEU19DT05UUk9MUzwvY29uc3RhbnQ+PC9lbnRyeT4KKwk8ZW50cnk+MHgwMjAwPC9lbnRyeT4KKwk8ZW50cnk+VGhlIFJEUyBkYXRhIGlzIHBhcnNlZCBieSB0aGUgaGFyZHdhcmUgYW5kIHNldCB2aWEgY29udHJvbHMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwk8ZW50cnk+PGNvbnN0YW50PlY0TDJfVFVORVJfQ0FQX0ZSRVFfQkFORFM8L2NvbnN0YW50PjwvZW50cnk+CisJPGVudHJ5PjB4MDQwMDwvZW50cnk+CisJPGVudHJ5PlRoZSAmVklESU9DLUVOVU0tRlJFUS1CQU5EUzsgaW9jdGwgY2FuIGJlIHVzZWQgdG8gZW51bWVyYXRlCisJdGhlIGF2YWlsYWJsZSBmcmVxdWVuY3kgYmFuZHMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwk8ZW50cnk+PGNvbnN0YW50PlY0TDJfVFVORVJfQ0FQX0hXU0VFS19QUk9HX0xJTTwvY29uc3RhbnQ+PC9lbnRyeT4KKwk8ZW50cnk+MHgwODAwPC9lbnRyeT4KKwk8ZW50cnk+VGhlIHJhbmdlIHRvIHNlYXJjaCB3aGVuIHVzaW5nIHRoZSBoYXJkd2FyZSBzZWVrIGZ1bmN0aW9uYWxpdHkKKwlpcyBwcm9ncmFtbWFibGUsIHNlZSAmVklESU9DLVMtSFctRlJFUS1TRUVLOyBmb3IgZGV0YWlscy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCTxlbnRyeT48Y29uc3RhbnQ+VjRMMl9UVU5FUl9DQVBfMUhaPC9jb25zdGFudD48L2VudHJ5PgorCTxlbnRyeT4weDEwMDA8L2VudHJ5PgorCTxlbnRyeT5XaGVuIHNldCwgdHVuaW5nIGZyZXF1ZW5jaWVzIGFyZSBleHByZXNzZWQgaW4gdW5pdHMgb2YgMSBIeiBpbnN0ZWFkIG9mIDYyLjUga0h6LjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idHVuZXItcnhzdWJjaGFucyI+CisgICAgICA8dGl0bGU+VHVuZXIgQXVkaW8gUmVjZXB0aW9uIEZsYWdzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1RVTkVSX1NVQl9NT05PPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAxPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSB0dW5lciByZWNlaXZlcyBhIG1vbm8gYXVkaW8gc2lnbmFsLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9UVU5FUl9TVUJfU1RFUkVPPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAyPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSB0dW5lciByZWNlaXZlcyBhIHN0ZXJlbyBhdWRpbyBzaWduYWwuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1RVTkVSX1NVQl9MQU5HMTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwODwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgdHVuZXIgcmVjZWl2ZXMgdGhlIHByaW1hcnkgbGFuZ3VhZ2Ugb2YgYQorYmlsaW5ndWFsIGF1ZGlvIHNpZ25hbC4gRHJpdmVycyBtdXN0IGNsZWFyIHRoaXMgZmxhZyB3aGVuIHRoZSBjdXJyZW50Cit2aWRlbyBzdGFuZGFyZCBpcyA8Y29uc3RhbnQ+VjRMMl9TVERfTlRTQ19NPC9jb25zdGFudD4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1RVTkVSX1NVQl9MQU5HMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwNDwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgdHVuZXIgcmVjZWl2ZXMgdGhlIHNlY29uZGFyeSBsYW5ndWFnZSBvZiBhCitiaWxpbmd1YWwgYXVkaW8gc2lnbmFsIChvciBhIHNlY29uZCBhdWRpbyBwcm9ncmFtKS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfVFVORVJfU1VCX1NBUDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwNDwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgdHVuZXIgcmVjZWl2ZXMgYSBTZWNvbmQgQXVkaW8gUHJvZ3JhbS4gTm90ZSB0aGUKKzxjb25zdGFudD5WNEwyX1RVTkVSX1NVQl9MQU5HMjwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlY0TDJfVFVORVJfU1VCX1NBUDwvY29uc3RhbnQ+IGZsYWdzIGFyZSBzeW5vbnltcy4gVGhlCis8Y29uc3RhbnQ+VjRMMl9UVU5FUl9TVUJfU0FQPC9jb25zdGFudD4gZmxhZyBhcHBsaWVzIHdoZW4gdGhlCitjdXJyZW50IHZpZGVvIHN0YW5kYXJkIGlzIDxjb25zdGFudD5WNEwyX1NURF9OVFNDX008L2NvbnN0YW50Pi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfVFVORVJfU1VCX1JEUzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAxMDwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgdHVuZXIgcmVjZWl2ZXMgYW4gUkRTIGNoYW5uZWwuPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ0dW5lci1hdWRtb2RlIj4KKyAgICAgIDx0aXRsZT5UdW5lciBBdWRpbyBNb2RlczwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1kZWY7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9UVU5FUl9NT0RFX01PTk88L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgPGVudHJ5PlBsYXkgbW9ubyBhdWRpby4gV2hlbiB0aGUgdHVuZXIgcmVjZWl2ZXMgYSBzdGVyZW8KK3NpZ25hbCB0aGlzIGEgZG93bi1taXggb2YgdGhlIGxlZnQgYW5kIHJpZ2h0IGNoYW5uZWwuIFdoZW4gdGhlIHR1bmVyCityZWNlaXZlcyBhIGJpbGluZ3VhbCBvciBTQVAgc2lnbmFsIHRoaXMgbW9kZSBzZWxlY3RzIHRoZSBwcmltYXJ5CitsYW5ndWFnZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfVFVORVJfTU9ERV9TVEVSRU88L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4xPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxwYXJhPlBsYXkgc3RlcmVvIGF1ZGlvLiBXaGVuIHRoZSB0dW5lciByZWNlaXZlcworYmlsaW5ndWFsIGF1ZGlvIGl0IG1heSBwbGF5IGRpZmZlcmVudCBsYW5ndWFnZXMgb24gdGhlIGxlZnQgYW5kIHJpZ2h0CitjaGFubmVsIG9yIHRoZSBwcmltYXJ5IGxhbmd1YWdlIGlzIHBsYXllZCBvbiBib3RoIGNoYW5uZWxzLjwvcGFyYT48cGFyYT5QbGF5aW5nCitkaWZmZXJlbnQgbGFuZ3VhZ2VzIGluIHRoaXMgbW9kZSBpcworZGVwcmVjYXRlZC4gTmV3IGRyaXZlcnMgc2hvdWxkIGRvIHRoaXMgb25seSBpbgorPGNvbnN0YW50Pk1PREVfTEFORzFfTEFORzI8L2NvbnN0YW50Pi48L3BhcmE+PHBhcmE+V2hlbiB0aGUgdHVuZXIKK3JlY2VpdmVzIG5vIHN0ZXJlbyBzaWduYWwgb3IgZG9lcyBub3Qgc3VwcG9ydCBzdGVyZW8gcmVjZXB0aW9uIHRoZQorZHJpdmVyIHNoYWxsIGZhbGwgYmFjayB0byA8Y29uc3RhbnQ+TU9ERV9NT05PPC9jb25zdGFudD4uPC9wYXJhPjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9UVU5FUl9NT0RFX0xBTkcxPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MzwvZW50cnk+CisJICAgIDxlbnRyeT5QbGF5IHRoZSBwcmltYXJ5IGxhbmd1YWdlLCBtb25vIG9yIHN0ZXJlby4gT25seQorPGNvbnN0YW50PlY0TDJfVFVORVJfQU5BTE9HX1RWPC9jb25zdGFudD4gdHVuZXJzIHN1cHBvcnQgdGhpcworbW9kZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfVFVORVJfTU9ERV9MQU5HMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjI8L2VudHJ5PgorCSAgICA8ZW50cnk+UGxheSB0aGUgc2Vjb25kYXJ5IGxhbmd1YWdlLCBtb25vLiBXaGVuIHRoZSB0dW5lcgorcmVjZWl2ZXMgbm8gYmlsaW5ndWFsIGF1ZGlvIG9yIFNBUCwgb3IgdGhlaXIgcmVjZXB0aW9uIGlzIG5vdAorc3VwcG9ydGVkIHRoZSBkcml2ZXIgc2hhbGwgZmFsbCBiYWNrIHRvIG1vbm8gb3Igc3RlcmVvIG1vZGUuIE9ubHkKKzxjb25zdGFudD5WNEwyX1RVTkVSX0FOQUxPR19UVjwvY29uc3RhbnQ+IHR1bmVycyBzdXBwb3J0IHRoaXMKK21vZGUuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX1RVTkVSX01PREVfU0FQPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MjwvZW50cnk+CisJICAgIDxlbnRyeT5QbGF5IHRoZSBTZWNvbmQgQXVkaW8gUHJvZ3JhbS4gV2hlbiB0aGUgdHVuZXIKK3JlY2VpdmVzIG5vIGJpbGluZ3VhbCBhdWRpbyBvciBTQVAsIG9yIHRoZWlyIHJlY2VwdGlvbiBpcyBub3QKK3N1cHBvcnRlZCB0aGUgZHJpdmVyIHNoYWxsIGZhbGwgYmFjayB0byBtb25vIG9yIHN0ZXJlbyBtb2RlLiBPbmx5Cis8Y29uc3RhbnQ+VjRMMl9UVU5FUl9BTkFMT0dfVFY8L2NvbnN0YW50PiB0dW5lcnMgc3VwcG9ydCB0aGlzIG1vZGUuCitOb3RlIHRoZSA8Y29uc3RhbnQ+VjRMMl9UVU5FUl9NT0RFX0xBTkcyPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VjRMMl9UVU5FUl9NT0RFX1NBUDwvY29uc3RhbnQ+IGFyZSBzeW5vbnltcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfVFVORVJfTU9ERV9MQU5HMV9MQU5HMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjQ8L2VudHJ5PgorCSAgICA8ZW50cnk+UGxheSB0aGUgcHJpbWFyeSBsYW5ndWFnZSBvbiB0aGUgbGVmdCBjaGFubmVsLCB0aGUKK3NlY29uZGFyeSBsYW5ndWFnZSBvbiB0aGUgcmlnaHQgY2hhbm5lbC4gV2hlbiB0aGUgdHVuZXIgcmVjZWl2ZXMgbm8KK2JpbGluZ3VhbCBhdWRpbyBvciBTQVAsIGl0IHNoYWxsIGZhbGwgYmFjayB0bworPGNvbnN0YW50Pk1PREVfTEFORzE8L2NvbnN0YW50PiBvciA8Y29uc3RhbnQ+TU9ERV9NT05PPC9jb25zdGFudD4uCitPbmx5IDxjb25zdGFudD5WNEwyX1RVTkVSX0FOQUxPR19UVjwvY29uc3RhbnQ+IHR1bmVycyBzdXBwb3J0IHRoaXMKK21vZGUuPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9ImFsbCIgaWQ9InR1bmVyLW1hdHJpeCI+CisgICAgICA8dGl0bGU+VHVuZXIgQXVkaW8gTWF0cml4PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iNiIgYWxpZ249ImNlbnRlciI+CisJPGNvbHNwZWMgYWxpZ249ImxlZnQiIC8+CisJPGNvbHNwZWMgY29sbmFtZT0iYzIiIGNvbHdpZHRoPSIxKiIgLz4KKwk8Y29sc3BlYyBjb2x3aWR0aD0iMSoiIC8+CisJPGNvbHNwZWMgY29sd2lkdGg9IjEqIiAvPgorCTxjb2xzcGVjIGNvbG51bT0iNiIgY29sbmFtZT0iYzYiIGNvbHdpZHRoPSIxKiIgLz4KKwk8c3BhbnNwZWMgbmFtZXN0PSJjMiIgbmFtZWVuZD0iYzYiIHNwYW5uYW1lPSJoc3BhbiIgYWxpZ249ImNlbnRlciIgLz4KKwk8dGhlYWQ+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJoc3BhbiI+U2VsZWN0ZWQKKzxjb25zdGFudD5WNEwyX1RVTkVSX01PREVfPC9jb25zdGFudD48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+UmVjZWl2ZWQgPGNvbnN0YW50PlY0TDJfVFVORVJfU1VCXzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5NT05PPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlNURVJFTzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5MQU5HMTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5MQU5HMiA9IFNBUDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5MQU5HMV9MQU5HMjwvY29uc3RhbnQ+PGZvb3Rub3RlPjxwYXJhPlRoaXMKK21vZGUgaGFzIGJlZW4gYWRkZWQgaW4gTGludXggMi42LjE3IGFuZCBtYXkgbm90IGJlIHN1cHBvcnRlZCBieSBvbGRlcgorZHJpdmVycy48L3BhcmE+PC9mb290bm90ZT48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90aGVhZD4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5NT05PPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+TW9ubzwvZW50cnk+CisJICAgIDxlbnRyeT5Nb25vL01vbm88L2VudHJ5PgorCSAgICA8ZW50cnk+TW9ubzwvZW50cnk+CisJICAgIDxlbnRyeT5Nb25vPC9lbnRyeT4KKwkgICAgPGVudHJ5Pk1vbm8vTW9ubzwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+TU9OTyB8IFNBUDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk1vbm88L2VudHJ5PgorCSAgICA8ZW50cnk+TW9uby9Nb25vPC9lbnRyeT4KKwkgICAgPGVudHJ5Pk1vbm88L2VudHJ5PgorCSAgICA8ZW50cnk+U0FQPC9lbnRyeT4KKwkgICAgPGVudHJ5Pk1vbm8vU0FQIChwcmVmZXJyZWQpIG9yIE1vbm8vTW9ubzwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+U1RFUkVPPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+TCtSPC9lbnRyeT4KKwkgICAgPGVudHJ5PkwvUjwvZW50cnk+CisJICAgIDxlbnRyeT5TdGVyZW8gTC9SIChwcmVmZXJyZWQpIG9yIE1vbm8gTCtSPC9lbnRyeT4KKwkgICAgPGVudHJ5PlN0ZXJlbyBML1IgKHByZWZlcnJlZCkgb3IgTW9ubyBMK1I8L2VudHJ5PgorCSAgICA8ZW50cnk+TC9SIChwcmVmZXJyZWQpIG9yIEwrUi9MK1I8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlNURVJFTyB8IFNBUDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkwrUjwvZW50cnk+CisJICAgIDxlbnRyeT5ML1I8L2VudHJ5PgorCSAgICA8ZW50cnk+U3RlcmVvIEwvUiAocHJlZmVycmVkKSBvciBNb25vIEwrUjwvZW50cnk+CisJICAgIDxlbnRyeT5TQVA8L2VudHJ5PgorCSAgICA8ZW50cnk+TCtSL1NBUCAocHJlZmVycmVkKSBvciBML1Igb3IgTCtSL0wrUjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+TEFORzEgfCBMQU5HMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pkxhbmd1YWdlJm5ic3A7MTwvZW50cnk+CisJICAgIDxlbnRyeT5MYW5nMS9MYW5nMiAoZGVwcmVjYXRlZDxmb290bm90ZT48cGFyYT5QbGF5YmFjayBvZgorYm90aCBsYW5ndWFnZXMgaW4gPGNvbnN0YW50Pk1PREVfU1RFUkVPPC9jb25zdGFudD4gaXMgZGVwcmVjYXRlZC4gSW4KK3RoZSBmdXR1cmUgZHJpdmVycyBzaG91bGQgcHJvZHVjZSBvbmx5IHRoZSBwcmltYXJ5IGxhbmd1YWdlIGluIHRoaXMKK21vZGUuIEFwcGxpY2F0aW9ucyBzaG91bGQgcmVxdWVzdAorPGNvbnN0YW50Pk1PREVfTEFORzFfTEFORzI8L2NvbnN0YW50PiB0byByZWNvcmQgYm90aCBsYW5ndWFnZXMgb3IgYQorc3RlcmVvIHNpZ25hbC48L3BhcmE+PC9mb290bm90ZT4pIG9yCitMYW5nMS9MYW5nMTwvZW50cnk+CisJICAgIDxlbnRyeT5MYW5ndWFnZSZuYnNwOzE8L2VudHJ5PgorCSAgICA8ZW50cnk+TGFuZ3VhZ2UmbmJzcDsyPC9lbnRyeT4KKwkgICAgPGVudHJ5PkxhbmcxL0xhbmcyIChwcmVmZXJyZWQpIG9yIExhbmcxL0xhbmcxPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICAmcmV0dXJuLXZhbHVlOworCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FSU5WQUw8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlICZ2NGwyLXR1bmVyOyA8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPiBpcworb3V0IG9mIGJvdW5kcy48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWxvZy1zdGF0dXMueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtbG9nLXN0YXR1cy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRlZDdkMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLWxvZy1zdGF0dXMueG1sCkBAIC0wLDAgKzEsNDEgQEAKKzxyZWZlbnRyeSBpZD0idmlkaW9jLWxvZy1zdGF0dXMiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBWSURJT0NfTE9HX1NUQVRVUzwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX0xPR19TVEFUVVM8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+TG9nIGRyaXZlciBzdGF0dXMgaW5mb3JtYXRpb248L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPkFzIHRoZSB2aWRlby9hdWRpbyBkZXZpY2VzIGJlY29tZSBtb3JlIGNvbXBsaWNhdGVkIGl0CitiZWNvbWVzIGhhcmRlciB0byBkZWJ1ZyBwcm9ibGVtcy4gV2hlbiB0aGlzIGlvY3RsIGlzIGNhbGxlZCB0aGUgZHJpdmVyCit3aWxsIG91dHB1dCB0aGUgY3VycmVudCBkZXZpY2Ugc3RhdHVzIHRvIHRoZSBrZXJuZWwgbG9nLiBUaGlzIGlzCitwYXJ0aWN1bGFyIHVzZWZ1bCB3aGVuIGRlYWxpbmcgd2l0aCBwcm9ibGVtcyBsaWtlIG5vIHNvdW5kLCBubyB2aWRlbworYW5kIGluY29ycmVjdGx5IHR1bmVkIGNoYW5uZWxzLiBBbHNvIG1hbnkgbW9kZXJuIGRldmljZXMgYXV0b2RldGVjdAordmlkZW8gYW5kIGF1ZGlvIHN0YW5kYXJkcyBhbmQgdGhpcyBpb2N0bCB3aWxsIHJlcG9ydCB3aGF0IHRoZSBkZXZpY2UKK3RoaW5rcyB3aGF0IHRoZSBzdGFuZGFyZCBpcy4gTWlzbWF0Y2hlcyBtYXkgZ2l2ZSBhbiBpbmRpY2F0aW9uIHdoZXJlCit0aGUgcHJvYmxlbSBpcy48L3BhcmE+CisKKyAgICA8cGFyYT5UaGlzIGlvY3RsIGlzIG9wdGlvbmFsIGFuZCBub3QgYWxsIGRyaXZlcnMgc3VwcG9ydCBpdC4gSXQKK3dhcyBpbnRyb2R1Y2VkIGluIExpbnV4IDIuNi4xNS48L3BhcmE+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2Mtb3ZlcmxheS54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1vdmVybGF5LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTBhN2RlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2Mtb3ZlcmxheS54bWwKQEAgLTAsMCArMSw3NCBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2Mtb3ZlcmxheSI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19PVkVSTEFZPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5WSURJT0NfT1ZFUkxBWTwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5TdGFydCBvciBzdG9wIHZpZGVvIG92ZXJsYXk8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+Y29uc3QgaW50ICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfT1ZFUkxBWTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgPHBhcmE+VGhpcyBpb2N0bCBpcyBwYXJ0IG9mIHRoZSA8bGluayBsaW5rZW5kPSJvdmVybGF5Ij52aWRlbworICAgIG92ZXJsYXk8L2xpbms+IEkvTyBtZXRob2QuIEFwcGxpY2F0aW9ucyBjYWxsCisgICAgPGNvbnN0YW50PlZJRElPQ19PVkVSTEFZPC9jb25zdGFudD4gdG8gc3RhcnQgb3Igc3RvcCB0aGUKKyAgICBvdmVybGF5LiBJdCB0YWtlcyBhIHBvaW50ZXIgdG8gYW4gaW50ZWdlciB3aGljaCBtdXN0IGJlIHNldCB0bworICAgIHplcm8gYnkgdGhlIGFwcGxpY2F0aW9uIHRvIHN0b3Agb3ZlcmxheSwgdG8gb25lIHRvIHN0YXJ0LjwvcGFyYT4KKworICAgIDxwYXJhPkRyaXZlcnMgZG8gbm90IHN1cHBvcnQgJlZJRElPQy1TVFJFQU1PTjsgb3IKKyZWSURJT0MtU1RSRUFNT0ZGOyB3aXRoIDxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZJREVPX09WRVJMQVk8L2NvbnN0YW50Pi48L3BhcmE+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgb3ZlcmxheSBwYXJhbWV0ZXJzIGhhdmUgbm90IGJlZW4gc2V0IHVwLiBTZWUgPHhyZWYKK2xpbmtlbmQ9Im92ZXJsYXkiIC8+IGZvciB0aGUgbmVjZXNzYXJ5IHN0ZXBzLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtcHJlcGFyZS1idWYueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtcHJlcGFyZS1idWYueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhN2FkN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1wcmVwYXJlLWJ1Zi54bWwKQEAgLTAsMCArMSw5NCBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2MtcHJlcGFyZS1idWYiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBWSURJT0NfUFJFUEFSRV9CVUY8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPlZJRElPQ19QUkVQQVJFX0JVRjwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5QcmVwYXJlIGEgYnVmZmVyIGZvciBJL088L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c3RydWN0IHY0bDJfYnVmZmVyICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfUFJFUEFSRV9CVUY8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxub3RlPgorICAgICAgPHRpdGxlPkV4cGVyaW1lbnRhbDwvdGl0bGU+CisgICAgICA8cGFyYT5UaGlzIGlzIGFuIDxsaW5rIGxpbmtlbmQ9ImV4cGVyaW1lbnRhbCI+IGV4cGVyaW1lbnRhbCA8L2xpbms+CisgICAgICBpbnRlcmZhY2UgYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS48L3BhcmE+CisgICAgPC9ub3RlPgorCisgICAgPHBhcmE+QXBwbGljYXRpb25zIGNhbiBvcHRpb25hbGx5IGNhbGwgdGhlCis8Y29uc3RhbnQ+VklESU9DX1BSRVBBUkVfQlVGPC9jb25zdGFudD4gaW9jdGwgdG8gcGFzcyBvd25lcnNoaXAgb2YgdGhlIGJ1ZmZlcgordG8gdGhlIGRyaXZlciBiZWZvcmUgYWN0dWFsbHkgZW5xdWV1aW5nIGl0LCB1c2luZyB0aGUKKzxjb25zdGFudD5WSURJT0NfUUJVRjwvY29uc3RhbnQ+IGlvY3RsLCBhbmQgdG8gcHJlcGFyZSBpdCBmb3IgZnV0dXJlIEkvTy4KK1N1Y2ggcHJlcGFyYXRpb25zIG1heSBpbmNsdWRlIGNhY2hlIGludmFsaWRhdGlvbiBvciBjbGVhbmluZy4gUGVyZm9ybWluZyB0aGVtCitpbiBhZHZhbmNlIHNhdmVzIHRpbWUgZHVyaW5nIHRoZSBhY3R1YWwgSS9PLiBJbiBjYXNlIHN1Y2ggY2FjaGUgb3BlcmF0aW9ucyBhcmUKK25vdCByZXF1aXJlZCwgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2Ugb25lIG9mCis8Y29uc3RhbnQ+VjRMMl9CVUZfRkxBR19OT19DQUNIRV9JTlZBTElEQVRFPC9jb25zdGFudD4gYW5kCis8Y29uc3RhbnQ+VjRMMl9CVUZfRkxBR19OT19DQUNIRV9DTEVBTjwvY29uc3RhbnQ+IGZsYWdzIHRvIHNraXAgdGhlIHJlc3BlY3RpdmUKK3N0ZXAuPC9wYXJhPgorCisgICAgPHBhcmE+VGhlIDxzdHJ1Y3RuYW1lPnY0bDJfYnVmZmVyPC9zdHJ1Y3RuYW1lPiBzdHJ1Y3R1cmUgaXMKK3NwZWNpZmllZCBpbiA8eHJlZiBsaW5rZW5kPSJidWZmZXIiIC8+LjwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUJVU1k8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+RmlsZSBJL08gaXMgaW4gcHJvZ3Jlc3MuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FSU5WQUw8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIGJ1ZmZlciA8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IGlzIG5vdAorc3VwcG9ydGVkLCBvciB0aGUgPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4gaXMgb3V0IG9mIGJvdW5kcywKK29yIG5vIGJ1ZmZlcnMgaGF2ZSBiZWVuIGFsbG9jYXRlZCB5ZXQsIG9yIHRoZQorPHN0cnVjdGZpZWxkPnVzZXJwdHI8L3N0cnVjdGZpZWxkPiBvcgorPHN0cnVjdGZpZWxkPmxlbmd0aDwvc3RydWN0ZmllbGQ+IGFyZSBpbnZhbGlkLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtcWJ1Zi54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1xYnVmLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Yjk4YTBlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtcWJ1Zi54bWwKQEAgLTAsMCArMSwyMDIgQEAKKzxyZWZlbnRyeSBpZD0idmlkaW9jLXFidWYiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBWSURJT0NfUUJVRiwgVklESU9DX0RRQlVGPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5WSURJT0NfUUJVRjwvcmVmbmFtZT4KKyAgICA8cmVmbmFtZT5WSURJT0NfRFFCVUY8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+RXhjaGFuZ2UgYSBidWZmZXIgd2l0aCB0aGUgZHJpdmVyPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCB2NGwyX2J1ZmZlciAqPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPiZmZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VklESU9DX1FCVUYsIFZJRElPQ19EUUJVRjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCisgICAgPHBhcmE+QXBwbGljYXRpb25zIGNhbGwgdGhlIDxjb25zdGFudD5WSURJT0NfUUJVRjwvY29uc3RhbnQ+IGlvY3RsCit0byBlbnF1ZXVlIGFuIGVtcHR5IChjYXB0dXJpbmcpIG9yIGZpbGxlZCAob3V0cHV0KSBidWZmZXIgaW4gdGhlCitkcml2ZXIncyBpbmNvbWluZyBxdWV1ZS4gVGhlIHNlbWFudGljcyBkZXBlbmQgb24gdGhlIHNlbGVjdGVkIEkvTworbWV0aG9kLjwvcGFyYT4KKworICAgIDxwYXJhPlRvIGVucXVldWUgYSBidWZmZXIgYXBwbGljYXRpb25zIHNldCB0aGUgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPgorZmllbGQgb2YgYSAmdjRsMi1idWZmZXI7IHRvIHRoZSBzYW1lIGJ1ZmZlciB0eXBlIGFzIHdhcyBwcmV2aW91c2x5IHVzZWQKK3dpdGggJnY0bDItZm9ybWF0OyA8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IGFuZCAmdjRsMi1yZXF1ZXN0YnVmZmVyczsKKzxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4uIEFwcGxpY2F0aW9ucyBtdXN0IGFsc28gc2V0IHRoZQorPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4gZmllbGQuIFZhbGlkIGluZGV4IG51bWJlcnMgcmFuZ2UgZnJvbQoremVybyB0byB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgYWxsb2NhdGVkIHdpdGggJlZJRElPQy1SRVFCVUZTOworKCZ2NGwyLXJlcXVlc3RidWZmZXJzOyA8c3RydWN0ZmllbGQ+Y291bnQ8L3N0cnVjdGZpZWxkPikgbWludXMgb25lLiBUaGUKK2NvbnRlbnRzIG9mIHRoZSBzdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9idWZmZXI8L3N0cnVjdG5hbWU+IHJldHVybmVkCitieSBhICZWSURJT0MtUVVFUllCVUY7IGlvY3RsIHdpbGwgZG8gYXMgd2VsbC4gV2hlbiB0aGUgYnVmZmVyIGlzCitpbnRlbmRlZCBmb3Igb3V0cHV0ICg8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IGlzCis8Y29uc3RhbnQ+VjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVQ8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVF9NUExBTkU8L2NvbnN0YW50Piwgb3IKKzxjb25zdGFudD5WNEwyX0JVRl9UWVBFX1ZCSV9PVVRQVVQ8L2NvbnN0YW50PikgYXBwbGljYXRpb25zIG11c3QgYWxzbworaW5pdGlhbGl6ZSB0aGUgPHN0cnVjdGZpZWxkPmJ5dGVzdXNlZDwvc3RydWN0ZmllbGQ+LAorPHN0cnVjdGZpZWxkPmZpZWxkPC9zdHJ1Y3RmaWVsZD4gYW5kCis8c3RydWN0ZmllbGQ+dGltZXN0YW1wPC9zdHJ1Y3RmaWVsZD4gZmllbGRzLCBzZWUgPHhyZWYKK2xpbmtlbmQ9ImJ1ZmZlciIgLz4gZm9yIGRldGFpbHMuCitBcHBsaWNhdGlvbnMgbXVzdCBhbHNvIHNldCA8c3RydWN0ZmllbGQ+ZmxhZ3M8L3N0cnVjdGZpZWxkPiB0byAwLgorVGhlIDxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDI8L3N0cnVjdGZpZWxkPiBhbmQKKzxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+IGZpZWxkcyBtdXN0IGJlIHNldCB0byAwLiBXaGVuIHVzaW5nCit0aGUgPGxpbmsgbGlua2VuZD0icGxhbmFyLWFwaXMiPm11bHRpLXBsYW5hciBBUEk8L2xpbms+LCB0aGUKKzxzdHJ1Y3RmaWVsZD5tLnBsYW5lczwvc3RydWN0ZmllbGQ+IGZpZWxkIG11c3QgY29udGFpbiBhIHVzZXJzcGFjZSBwb2ludGVyCit0byBhIGZpbGxlZC1pbiBhcnJheSBvZiAmdjRsMi1wbGFuZTsgYW5kIHRoZSA8c3RydWN0ZmllbGQ+bGVuZ3RoPC9zdHJ1Y3RmaWVsZD4KK2ZpZWxkIG11c3QgYmUgc2V0IHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhhdCBhcnJheS4KKzwvcGFyYT4KKworICAgIDxwYXJhPlRvIGVucXVldWUgYSA8bGluayBsaW5rZW5kPSJtbWFwIj5tZW1vcnkgbWFwcGVkPC9saW5rPgorYnVmZmVyIGFwcGxpY2F0aW9ucyBzZXQgdGhlIDxzdHJ1Y3RmaWVsZD5tZW1vcnk8L3N0cnVjdGZpZWxkPgorZmllbGQgdG8gPGNvbnN0YW50PlY0TDJfTUVNT1JZX01NQVA8L2NvbnN0YW50Pi4gV2hlbgorPGNvbnN0YW50PlZJRElPQ19RQlVGPC9jb25zdGFudD4gaXMgY2FsbGVkIHdpdGggYSBwb2ludGVyIHRvIHRoaXMKK3N0cnVjdHVyZSB0aGUgZHJpdmVyIHNldHMgdGhlCis8Y29uc3RhbnQ+VjRMMl9CVUZfRkxBR19NQVBQRUQ8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX0JVRl9GTEFHX1FVRVVFRDwvY29uc3RhbnQ+IGZsYWdzIGFuZCBjbGVhcnMgdGhlCis8Y29uc3RhbnQ+VjRMMl9CVUZfRkxBR19ET05FPC9jb25zdGFudD4gZmxhZyBpbiB0aGUKKzxzdHJ1Y3RmaWVsZD5mbGFnczwvc3RydWN0ZmllbGQ+IGZpZWxkLCBvciBpdCByZXR1cm5zIGFuCismRUlOVkFMOy48L3BhcmE+CisKKyAgICA8cGFyYT5UbyBlbnF1ZXVlIGEgPGxpbmsgbGlua2VuZD0idXNlcnAiPnVzZXIgcG9pbnRlcjwvbGluaz4KK2J1ZmZlciBhcHBsaWNhdGlvbnMgc2V0IHRoZSA8c3RydWN0ZmllbGQ+bWVtb3J5PC9zdHJ1Y3RmaWVsZD4KK2ZpZWxkIHRvIDxjb25zdGFudD5WNEwyX01FTU9SWV9VU0VSUFRSPC9jb25zdGFudD4sIHRoZQorPHN0cnVjdGZpZWxkPm0udXNlcnB0cjwvc3RydWN0ZmllbGQ+IGZpZWxkIHRvIHRoZSBhZGRyZXNzIG9mIHRoZQorYnVmZmVyIGFuZCA8c3RydWN0ZmllbGQ+bGVuZ3RoPC9zdHJ1Y3RmaWVsZD4gdG8gaXRzIHNpemUuIFdoZW4gdGhlIG11bHRpLXBsYW5hcgorQVBJIGlzIHVzZWQsIDxzdHJ1Y3RmaWVsZD5tLnVzZXJwdHI8L3N0cnVjdGZpZWxkPiBhbmQKKzxzdHJ1Y3RmaWVsZD5sZW5ndGg8L3N0cnVjdGZpZWxkPiBtZW1iZXJzIG9mIHRoZSBwYXNzZWQgYXJyYXkgb2YgJnY0bDItcGxhbmU7CitoYXZlIHRvIGJlIHVzZWQgaW5zdGVhZC4gV2hlbiA8Y29uc3RhbnQ+VklESU9DX1FCVUY8L2NvbnN0YW50PiBpcyBjYWxsZWQgd2l0aAorYSBwb2ludGVyIHRvIHRoaXMgc3RydWN0dXJlIHRoZSBkcml2ZXIgc2V0cyB0aGUKKzxjb25zdGFudD5WNEwyX0JVRl9GTEFHX1FVRVVFRDwvY29uc3RhbnQ+IGZsYWcgYW5kIGNsZWFycyB0aGUKKzxjb25zdGFudD5WNEwyX0JVRl9GTEFHX01BUFBFRDwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlY0TDJfQlVGX0ZMQUdfRE9ORTwvY29uc3RhbnQ+IGZsYWdzIGluIHRoZQorPHN0cnVjdGZpZWxkPmZsYWdzPC9zdHJ1Y3RmaWVsZD4gZmllbGQsIG9yIGl0IHJldHVybnMgYW4gZXJyb3IgY29kZS4KK1RoaXMgaW9jdGwgbG9ja3MgdGhlIG1lbW9yeSBwYWdlcyBvZiB0aGUgYnVmZmVyIGluIHBoeXNpY2FsIG1lbW9yeSwKK3RoZXkgY2Fubm90IGJlIHN3YXBwZWQgb3V0IHRvIGRpc2suIEJ1ZmZlcnMgcmVtYWluIGxvY2tlZCB1bnRpbAorZGVxdWV1ZWQsIHVudGlsIHRoZSAmVklESU9DLVNUUkVBTU9GRjsgb3IgJlZJRElPQy1SRVFCVUZTOyBpb2N0bCBpcworY2FsbGVkLCBvciB1bnRpbCB0aGUgZGV2aWNlIGlzIGNsb3NlZC48L3BhcmE+CisKKyAgICA8cGFyYT5UbyBlbnF1ZXVlIGEgPGxpbmsgbGlua2VuZD0iZG1hYnVmIj5ETUFCVUY8L2xpbms+IGJ1ZmZlciBhcHBsaWNhdGlvbnMKK3NldCB0aGUgPHN0cnVjdGZpZWxkPm1lbW9yeTwvc3RydWN0ZmllbGQ+IGZpZWxkIHRvCis8Y29uc3RhbnQ+VjRMMl9NRU1PUllfRE1BQlVGPC9jb25zdGFudD4gYW5kIHRoZSA8c3RydWN0ZmllbGQ+bS5mZDwvc3RydWN0ZmllbGQ+CitmaWVsZCB0byBhIGZpbGUgZGVzY3JpcHRvciBhc3NvY2lhdGVkIHdpdGggYSBETUFCVUYgYnVmZmVyLiBXaGVuIHRoZQorbXVsdGktcGxhbmFyIEFQSSBpcyB1c2VkIHRoZSA8c3RydWN0ZmllbGQ+bS5mZDwvc3RydWN0ZmllbGQ+IGZpZWxkcyBvZiB0aGUKK3Bhc3NlZCBhcnJheSBvZiAmdjRsMi1wbGFuZTsgaGF2ZSB0byBiZSB1c2VkIGluc3RlYWQuIFdoZW4KKzxjb25zdGFudD5WSURJT0NfUUJVRjwvY29uc3RhbnQ+IGlzIGNhbGxlZCB3aXRoIGEgcG9pbnRlciB0byB0aGlzIHN0cnVjdHVyZSB0aGUKK2RyaXZlciBzZXRzIHRoZSA8Y29uc3RhbnQ+VjRMMl9CVUZfRkxBR19RVUVVRUQ8L2NvbnN0YW50PiBmbGFnIGFuZCBjbGVhcnMgdGhlCis8Y29uc3RhbnQ+VjRMMl9CVUZfRkxBR19NQVBQRUQ8L2NvbnN0YW50PiBhbmQKKzxjb25zdGFudD5WNEwyX0JVRl9GTEFHX0RPTkU8L2NvbnN0YW50PiBmbGFncyBpbiB0aGUKKzxzdHJ1Y3RmaWVsZD5mbGFnczwvc3RydWN0ZmllbGQ+IGZpZWxkLCBvciBpdCByZXR1cm5zIGFuIGVycm9yIGNvZGUuICBUaGlzCitpb2N0bCBsb2NrcyB0aGUgYnVmZmVyLiBMb2NraW5nIGEgYnVmZmVyIG1lYW5zIHBhc3NpbmcgaXQgdG8gYSBkcml2ZXIgZm9yIGEKK2hhcmR3YXJlIGFjY2VzcyAodXN1YWxseSBETUEpLiAgSWYgYW4gYXBwbGljYXRpb24gYWNjZXNzZXMgKHJlYWRzL3dyaXRlcykgYQorbG9ja2VkIGJ1ZmZlciB0aGVuIHRoZSByZXN1bHQgaXMgdW5kZWZpbmVkLiAgQnVmZmVycyByZW1haW4gbG9ja2VkIHVudGlsCitkZXF1ZXVlZCwgdW50aWwgdGhlICZWSURJT0MtU1RSRUFNT0ZGOyBvciAmVklESU9DLVJFUUJVRlM7IGlvY3RsIGlzIGNhbGxlZCwgb3IKK3VudGlsIHRoZSBkZXZpY2UgaXMgY2xvc2VkLjwvcGFyYT4KKworICAgIDxwYXJhPkFwcGxpY2F0aW9ucyBjYWxsIHRoZSA8Y29uc3RhbnQ+VklESU9DX0RRQlVGPC9jb25zdGFudD4KK2lvY3RsIHRvIGRlcXVldWUgYSBmaWxsZWQgKGNhcHR1cmluZykgb3IgZGlzcGxheWVkIChvdXRwdXQpIGJ1ZmZlcgorZnJvbSB0aGUgZHJpdmVyJ3Mgb3V0Z29pbmcgcXVldWUuIFRoZXkganVzdCBzZXQgdGhlCis8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+LCA8c3RydWN0ZmllbGQ+bWVtb3J5PC9zdHJ1Y3RmaWVsZD4KK2FuZCA8c3RydWN0ZmllbGQ+cmVzZXJ2ZWQ8L3N0cnVjdGZpZWxkPgorZmllbGRzIG9mIGEgJnY0bDItYnVmZmVyOyBhcyBhYm92ZSwgd2hlbiA8Y29uc3RhbnQ+VklESU9DX0RRQlVGPC9jb25zdGFudD4KK2lzIGNhbGxlZCB3aXRoIGEgcG9pbnRlciB0byB0aGlzIHN0cnVjdHVyZSB0aGUgZHJpdmVyIGZpbGxzIHRoZQorcmVtYWluaW5nIGZpZWxkcyBvciByZXR1cm5zIGFuIGVycm9yIGNvZGUuIFRoZSBkcml2ZXIgbWF5IGFsc28gc2V0Cis8Y29uc3RhbnQ+VjRMMl9CVUZfRkxBR19FUlJPUjwvY29uc3RhbnQ+IGluIHRoZSA8c3RydWN0ZmllbGQ+ZmxhZ3M8L3N0cnVjdGZpZWxkPgorZmllbGQuIEl0IGluZGljYXRlcyBhIG5vbi1jcml0aWNhbCAocmVjb3ZlcmFibGUpIHN0cmVhbWluZyBlcnJvci4gSW4gc3VjaCBjYXNlCit0aGUgYXBwbGljYXRpb24gbWF5IGNvbnRpbnVlIGFzIG5vcm1hbCwgYnV0IHNob3VsZCBiZSBhd2FyZSB0aGF0IGRhdGEgaW4gdGhlCitkZXF1ZXVlZCBidWZmZXIgbWlnaHQgYmUgY29ycnVwdGVkLiBXaGVuIHVzaW5nIHRoZSBtdWx0aS1wbGFuYXIgQVBJLCB0aGUKK3BsYW5lcyBhcnJheSBtdXN0IGJlIHBhc3NlZCBpbiBhcyB3ZWxsLjwvcGFyYT4KKworICAgIDxwYXJhPkJ5IGRlZmF1bHQgPGNvbnN0YW50PlZJRElPQ19EUUJVRjwvY29uc3RhbnQ+IGJsb2NrcyB3aGVuIG5vCitidWZmZXIgaXMgaW4gdGhlIG91dGdvaW5nIHF1ZXVlLiBXaGVuIHRoZQorPGNvbnN0YW50Pk9fTk9OQkxPQ0s8L2NvbnN0YW50PiBmbGFnIHdhcyBnaXZlbiB0byB0aGUgJmZ1bmMtb3BlbjsKK2Z1bmN0aW9uLCA8Y29uc3RhbnQ+VklESU9DX0RRQlVGPC9jb25zdGFudD4gcmV0dXJucyBpbW1lZGlhdGVseQord2l0aCBhbiAmRUFHQUlOOyB3aGVuIG5vIGJ1ZmZlciBpcyBhdmFpbGFibGUuPC9wYXJhPgorCisgICAgPHBhcmE+VGhlIDxzdHJ1Y3RuYW1lPnY0bDJfYnVmZmVyPC9zdHJ1Y3RuYW1lPiBzdHJ1Y3R1cmUgaXMKK3NwZWNpZmllZCBpbiA8eHJlZiBsaW5rZW5kPSJidWZmZXIiIC8+LjwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUFHQUlOPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPk5vbi1ibG9ja2luZyBJL08gaGFzIGJlZW4gc2VsZWN0ZWQgdXNpbmcKKzxjb25zdGFudD5PX05PTkJMT0NLPC9jb25zdGFudD4gYW5kIG5vIGJ1ZmZlciB3YXMgaW4gdGhlIG91dGdvaW5nCitxdWV1ZS48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgYnVmZmVyIDxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gaXMgbm90CitzdXBwb3J0ZWQsIG9yIHRoZSA8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPiBpcyBvdXQgb2YgYm91bmRzLAorb3Igbm8gYnVmZmVycyBoYXZlIGJlZW4gYWxsb2NhdGVkIHlldCwgb3IgdGhlCis8c3RydWN0ZmllbGQ+dXNlcnB0cjwvc3RydWN0ZmllbGQ+IG9yCis8c3RydWN0ZmllbGQ+bGVuZ3RoPC9zdHJ1Y3RmaWVsZD4gYXJlIGludmFsaWQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FSU88L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PGNvbnN0YW50PlZJRElPQ19EUUJVRjwvY29uc3RhbnQ+IGZhaWxlZCBkdWUgdG8gYW4KK2ludGVybmFsIGVycm9yLiBDYW4gYWxzbyBpbmRpY2F0ZSB0ZW1wb3JhcnkgcHJvYmxlbXMgbGlrZSBzaWduYWwKK2xvc3MuIE5vdGUgdGhlIGRyaXZlciBtaWdodCBkZXF1ZXVlIGFuIChlbXB0eSkgYnVmZmVyIGRlc3BpdGUKK3JldHVybmluZyBhbiBlcnJvciwgb3IgZXZlbiBzdG9wIGNhcHR1cmluZy4gUmV1c2luZyBzdWNoIGJ1ZmZlciBtYXkgYmUgdW5zYWZlCit0aG91Z2ggYW5kIGl0cyBkZXRhaWxzIChlLmcuIDxzdHJ1Y3RmaWVsZD5pbmRleDwvc3RydWN0ZmllbGQ+KSBtYXkgbm90IGJlCityZXR1cm5lZCBlaXRoZXIuIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgZHJpdmVycyBpbmRpY2F0ZSByZWNvdmVyYWJsZSBlcnJvcnMKK2J5IHNldHRpbmcgdGhlIDxjb25zdGFudD5WNEwyX0JVRl9GTEFHX0VSUk9SPC9jb25zdGFudD4gYW5kIHJldHVybmluZyAwIGluc3RlYWQuCitJbiB0aGF0IGNhc2UgdGhlIGFwcGxpY2F0aW9uIHNob3VsZCBiZSBhYmxlIHRvIHNhZmVseSByZXVzZSB0aGUgYnVmZmVyIGFuZAorY29udGludWUgc3RyZWFtaW5nLgorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RVBJUEU8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PGNvbnN0YW50PlZJRElPQ19EUUJVRjwvY29uc3RhbnQ+IHJldHVybnMgdGhpcyBvbiBhbiBlbXB0eQorY2FwdHVyZSBxdWV1ZSBmb3IgbWVtMm1lbSBjb2RlY3MgaWYgYSBidWZmZXIgd2l0aCB0aGUKKzxjb25zdGFudD5WNEwyX0JVRl9GTEFHX0xBU1Q8L2NvbnN0YW50PiB3YXMgYWxyZWFkeSBkZXF1ZXVlZCBhbmQgbm8gbmV3IGJ1ZmZlcnMKK2FyZSBleHBlY3RlZCB0byBiZWNvbWUgYXZhaWxhYmxlLgorCSAgPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1xdWVyeS1kdi10aW1pbmdzLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLXF1ZXJ5LWR2LXRpbWluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5YzcwYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1xdWVyeS1kdi10aW1pbmdzLnhtbApAQCAtMCwwICsxLDExMSBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2MtcXVlcnktZHYtdGltaW5ncyI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19RVUVSWV9EVl9USU1JTkdTPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5WSURJT0NfUVVFUllfRFZfVElNSU5HUzwvcmVmbmFtZT4KKyAgICA8cmVmbmFtZT5WSURJT0NfU1VCREVWX1FVRVJZX0RWX1RJTUlOR1M8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+U2Vuc2UgdGhlIERWIHByZXNldCByZWNlaXZlZCBieSB0aGUgY3VycmVudAoraW5wdXQ8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c3RydWN0IHY0bDJfZHZfdGltaW5ncyAqPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisKKyAgICA8dmFyaWFibGVsaXN0PgorCTx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19RVUVSWV9EVl9USU1JTkdTLCBWSURJT0NfU1VCREVWX1FVRVJZX0RWX1RJTUlOR1M8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxub3RlPgorICAgICAgPHRpdGxlPkV4cGVyaW1lbnRhbDwvdGl0bGU+CisgICAgICA8cGFyYT5UaGlzIGlzIGFuIDxsaW5rIGxpbmtlbmQ9ImV4cGVyaW1lbnRhbCI+IGV4cGVyaW1lbnRhbCA8L2xpbms+CisgICAgICBpbnRlcmZhY2UgYW5kIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS48L3BhcmE+CisgICAgPC9ub3RlPgorCisgICAgPHBhcmE+VGhlIGhhcmR3YXJlIG1heSBiZSBhYmxlIHRvIGRldGVjdCB0aGUgY3VycmVudCBEViB0aW1pbmdzCithdXRvbWF0aWNhbGx5LCBzaW1pbGFyIHRvIHNlbnNpbmcgdGhlIHZpZGVvIHN0YW5kYXJkLiBUbyBkbyBzbywgYXBwbGljYXRpb25zCitjYWxsIDxjb25zdGFudD5WSURJT0NfUVVFUllfRFZfVElNSU5HUzwvY29uc3RhbnQ+IHdpdGggYSBwb2ludGVyIHRvIGEKKyZ2NGwyLWR2LXRpbWluZ3M7LiBPbmNlIHRoZSBoYXJkd2FyZSBkZXRlY3RzIHRoZSB0aW1pbmdzLCBpdCB3aWxsIGZpbGwgaW4gdGhlCit0aW1pbmdzIHN0cnVjdHVyZS4KKworSWYgdGhlIHRpbWluZ3MgY291bGQgbm90IGJlIGRldGVjdGVkIGJlY2F1c2UgdGhlcmUgd2FzIG5vIHNpZ25hbCwgdGhlbgorPGVycm9yY29kZT5FTk9MSU5LPC9lcnJvcmNvZGU+IGlzIHJldHVybmVkLiBJZiBhIHNpZ25hbCB3YXMgZGV0ZWN0ZWQsIGJ1dAoraXQgd2FzIHVuc3RhYmxlIGFuZCB0aGUgcmVjZWl2ZXIgY291bGQgbm90IGxvY2sgdG8gdGhlIHNpZ25hbCwgdGhlbgorPGVycm9yY29kZT5FTk9MQ0s8L2Vycm9yY29kZT4gaXMgcmV0dXJuZWQuIElmIHRoZSByZWNlaXZlciBjb3VsZCBsb2NrIHRvIHRoZSBzaWduYWwsCitidXQgdGhlIGZvcm1hdCBpcyB1bnN1cHBvcnRlZCAoZS5nLiBiZWNhdXNlIHRoZSBwaXhlbGNsb2NrIGlzIG91dCBvZiByYW5nZQorb2YgdGhlIGhhcmR3YXJlIGNhcGFiaWxpdGllcyksIHRoZW4gdGhlIGRyaXZlciBmaWxscyBpbiB3aGF0ZXZlciB0aW1pbmdzIGl0Citjb3VsZCBmaW5kIGFuZCByZXR1cm5zIDxlcnJvcmNvZGU+RVJBTkdFPC9lcnJvcmNvZGU+LiBJbiB0aGF0IGNhc2UgdGhlIGFwcGxpY2F0aW9uCitjYW4gY2FsbCAmVklESU9DLURWLVRJTUlOR1MtQ0FQOyB0byBjb21wYXJlIHRoZSBmb3VuZCB0aW1pbmdzIHdpdGggdGhlIGhhcmR3YXJlJ3MKK2NhcGFiaWxpdGllcyBpbiBvcmRlciB0byBnaXZlIG1vcmUgcHJlY2lzZSBmZWVkYmFjayB0byB0aGUgdXNlci4KKzwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RU5PREFUQTwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5EaWdpdGFsIHZpZGVvIHRpbWluZ3MgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgaW5wdXQgb3Igb3V0cHV0LjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RU5PTElOSzwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5ObyB0aW1pbmdzIGNvdWxkIGJlIGRldGVjdGVkIGJlY2F1c2Ugbm8gc2lnbmFsIHdhcyBmb3VuZC4KKzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RU5PTENLPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSBzaWduYWwgd2FzIHVuc3RhYmxlIGFuZCB0aGUgaGFyZHdhcmUgY291bGQgbm90IGxvY2sgb24gdG8gaXQuCis8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVSQU5HRTwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaW1pbmdzIHdlcmUgZm91bmQsIGJ1dCB0aGV5IGFyZSBvdXQgb2YgcmFuZ2Ugb2YgdGhlIGhhcmR3YXJlCitjYXBhYmlsaXRpZXMuCis8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLXF1ZXJ5YnVmLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLXF1ZXJ5YnVmLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGJmY2I1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtcXVlcnlidWYueG1sCkBAIC0wLDAgKzEsMTA2IEBACis8cmVmZW50cnkgaWQ9InZpZGlvYy1xdWVyeWJ1ZiI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19RVUVSWUJVRjwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX1FVRVJZQlVGPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPlF1ZXJ5IHRoZSBzdGF0dXMgb2YgYSBidWZmZXI8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c3RydWN0IHY0bDJfYnVmZmVyICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfUVVFUllCVUY8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPlRoaXMgaW9jdGwgaXMgcGFydCBvZiB0aGUgPGxpbmsgbGlua2VuZD0ibW1hcCI+c3RyZWFtaW5nCis8L2xpbms+IEkvTyBtZXRob2QuIEl0IGNhbiBiZSB1c2VkIHRvIHF1ZXJ5IHRoZSBzdGF0dXMgb2YgYQorYnVmZmVyIGF0IGFueSB0aW1lIGFmdGVyIGJ1ZmZlcnMgaGF2ZSBiZWVuIGFsbG9jYXRlZCB3aXRoIHRoZQorJlZJRElPQy1SRVFCVUZTOyBpb2N0bC48L3BhcmE+CisKKyAgICA8cGFyYT5BcHBsaWNhdGlvbnMgc2V0IHRoZSA8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IGZpZWxkCisgICAgb2YgYSAmdjRsMi1idWZmZXI7IHRvIHRoZSBzYW1lIGJ1ZmZlciB0eXBlIGFzIHdhcyBwcmV2aW91c2x5IHVzZWQgd2l0aAorJnY0bDItZm9ybWF0OyA8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IGFuZCAmdjRsMi1yZXF1ZXN0YnVmZmVyczsKKzxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4sIGFuZCB0aGUgPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4KKyAgICBmaWVsZC4gVmFsaWQgaW5kZXggbnVtYmVycyByYW5nZSBmcm9tIHplcm8KK3RvIHRoZSBudW1iZXIgb2YgYnVmZmVycyBhbGxvY2F0ZWQgd2l0aCAmVklESU9DLVJFUUJVRlM7CisgICAgKCZ2NGwyLXJlcXVlc3RidWZmZXJzOyA8c3RydWN0ZmllbGQ+Y291bnQ8L3N0cnVjdGZpZWxkPikgbWludXMgb25lLgorVGhlIDxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+IGFuZCA8c3RydWN0ZmllbGQ+cmVzZXJ2ZWQyIDwvc3RydWN0ZmllbGQ+CitmaWVsZHMgbXVzdCBiZSBzZXQgdG8gMC4KK1doZW4gdXNpbmcgdGhlIDxsaW5rIGxpbmtlbmQ9InBsYW5hci1hcGlzIj5tdWx0aS1wbGFuYXIgQVBJPC9saW5rPiwgdGhlCis8c3RydWN0ZmllbGQ+bS5wbGFuZXM8L3N0cnVjdGZpZWxkPiBmaWVsZCBtdXN0IGNvbnRhaW4gYSB1c2Vyc3BhY2UgcG9pbnRlciB0byBhbgorYXJyYXkgb2YgJnY0bDItcGxhbmU7IGFuZCB0aGUgPHN0cnVjdGZpZWxkPmxlbmd0aDwvc3RydWN0ZmllbGQ+IGZpZWxkIGhhcwordG8gYmUgc2V0IHRvIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhhdCBhcnJheS4KK0FmdGVyIGNhbGxpbmcgPGNvbnN0YW50PlZJRElPQ19RVUVSWUJVRjwvY29uc3RhbnQ+IHdpdGggYSBwb2ludGVyIHRvCisgICAgdGhpcyBzdHJ1Y3R1cmUgZHJpdmVycyByZXR1cm4gYW4gZXJyb3IgY29kZSBvciBmaWxsIHRoZSByZXN0IG9mCit0aGUgc3RydWN0dXJlLjwvcGFyYT4KKworICAgIDxwYXJhPkluIHRoZSA8c3RydWN0ZmllbGQ+ZmxhZ3M8L3N0cnVjdGZpZWxkPiBmaWVsZCB0aGUKKzxjb25zdGFudD5WNEwyX0JVRl9GTEFHX01BUFBFRDwvY29uc3RhbnQ+LAorPGNvbnN0YW50PlY0TDJfQlVGX0ZMQUdfUFJFUEFSRUQ8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WNEwyX0JVRl9GTEFHX1FVRVVFRDwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlY0TDJfQlVGX0ZMQUdfRE9ORTwvY29uc3RhbnQ+IGZsYWdzIHdpbGwgYmUgdmFsaWQuIFRoZQorPHN0cnVjdGZpZWxkPm1lbW9yeTwvc3RydWN0ZmllbGQ+IGZpZWxkIHdpbGwgYmUgc2V0IHRvIHRoZSBjdXJyZW50CitJL08gbWV0aG9kLiBGb3IgdGhlIHNpbmdsZS1wbGFuYXIgQVBJLCB0aGUgPHN0cnVjdGZpZWxkPm0ub2Zmc2V0PC9zdHJ1Y3RmaWVsZD4KK2NvbnRhaW5zIHRoZSBvZmZzZXQgb2YgdGhlIGJ1ZmZlciBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZGV2aWNlIG1lbW9yeSwKK3RoZSA8c3RydWN0ZmllbGQ+bGVuZ3RoPC9zdHJ1Y3RmaWVsZD4gZmllbGQgaXRzIHNpemUuIEZvciB0aGUgbXVsdGktcGxhbmFyIEFQSSwKK2ZpZWxkcyA8c3RydWN0ZmllbGQ+bS5tZW1fb2Zmc2V0PC9zdHJ1Y3RmaWVsZD4gYW5kCis8c3RydWN0ZmllbGQ+bGVuZ3RoPC9zdHJ1Y3RmaWVsZD4gaW4gdGhlIDxzdHJ1Y3RmaWVsZD5tLnBsYW5lczwvc3RydWN0ZmllbGQ+CithcnJheSBlbGVtZW50cyB3aWxsIGJlIHVzZWQgaW5zdGVhZCBhbmQgdGhlIDxzdHJ1Y3RmaWVsZD5sZW5ndGg8L3N0cnVjdGZpZWxkPgorZmllbGQgb2YgJnY0bDItYnVmZmVyOyBpcyBzZXQgdG8gdGhlIG51bWJlciBvZiBmaWxsZWQtaW4gYXJyYXkgZWxlbWVudHMuCitUaGUgZHJpdmVyIG1heSBvciBtYXkgbm90IHNldCB0aGUgcmVtYWluaW5nIGZpZWxkcyBhbmQgZmxhZ3MsIHRoZXkgYXJlCittZWFuaW5nbGVzcyBpbiB0aGlzIGNvbnRleHQuPC9wYXJhPgorCisgICAgPHBhcmE+VGhlIDxzdHJ1Y3RuYW1lPnY0bDJfYnVmZmVyPC9zdHJ1Y3RuYW1lPiBzdHJ1Y3R1cmUgaXMKKyAgICBzcGVjaWZpZWQgaW4gPHhyZWYgbGlua2VuZD0iYnVmZmVyIiAvPi48L3BhcmE+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgYnVmZmVyIDxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gaXMgbm90CitzdXBwb3J0ZWQsIG9yIHRoZSA8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPiBpcyBvdXQgb2YgYm91bmRzLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtcXVlcnljYXAueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtcXVlcnljYXAueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkODIxNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1xdWVyeWNhcC54bWwKQEAgLTAsMCArMSwzNTAgQEAKKzxyZWZlbnRyeSBpZD0idmlkaW9jLXF1ZXJ5Y2FwIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgVklESU9DX1FVRVJZQ0FQPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5WSURJT0NfUVVFUllDQVA8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+UXVlcnkgZGV2aWNlIGNhcGFiaWxpdGllczwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zdHJ1Y3QgdjRsMl9jYXBhYmlsaXR5ICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfUVVFUllDQVA8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPkFsbCBWNEwyIGRldmljZXMgc3VwcG9ydCB0aGUKKzxjb25zdGFudD5WSURJT0NfUVVFUllDQVA8L2NvbnN0YW50PiBpb2N0bC4gSXQgaXMgdXNlZCB0byBpZGVudGlmeQora2VybmVsIGRldmljZXMgY29tcGF0aWJsZSB3aXRoIHRoaXMgc3BlY2lmaWNhdGlvbiBhbmQgdG8gb2J0YWluCitpbmZvcm1hdGlvbiBhYm91dCBkcml2ZXIgYW5kIGhhcmR3YXJlIGNhcGFiaWxpdGllcy4gVGhlIGlvY3RsIHRha2VzIGEKK3BvaW50ZXIgdG8gYSAmdjRsMi1jYXBhYmlsaXR5OyB3aGljaCBpcyBmaWxsZWQgYnkgdGhlIGRyaXZlci4gV2hlbiB0aGUKK2RyaXZlciBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoaXMgc3BlY2lmaWNhdGlvbiB0aGUgaW9jdGwgcmV0dXJucyBhbgorJkVJTlZBTDsuPC9wYXJhPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLWNhcGFiaWxpdHkiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2NhcGFiaWxpdHk8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTg8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmRyaXZlcjwvc3RydWN0ZmllbGQ+WzE2XTwvZW50cnk+CisJICAgIDxlbnRyeT48cGFyYT5OYW1lIG9mIHRoZSBkcml2ZXIsIGEgdW5pcXVlIE5VTC10ZXJtaW5hdGVkCitBU0NJSSBzdHJpbmcuIEZvciBleGFtcGxlOiAiYnR0diIuIERyaXZlciBzcGVjaWZpYyBhcHBsaWNhdGlvbnMgY2FuCit1c2UgdGhpcyBpbmZvcm1hdGlvbiB0byB2ZXJpZnkgdGhlIGRyaXZlciBpZGVudGl0eS4gSXQgaXMgYWxzbyB1c2VmdWwKK3RvIHdvcmsgYXJvdW5kIGtub3duIGJ1Z3MsIG9yIHRvIGlkZW50aWZ5IGRyaXZlcnMgaW4gZXJyb3IgcmVwb3J0cy48L3BhcmE+Cis8cGFyYT5TdG9yaW5nIHN0cmluZ3MgaW4gZml4ZWQgc2l6ZWQgYXJyYXlzIGlzIGJhZAorcHJhY3RpY2UgYnV0IHVuYXZvaWRhYmxlIGhlcmUuIERyaXZlcnMgYW5kIGFwcGxpY2F0aW9ucyBzaG91bGQgdGFrZQorcHJlY2F1dGlvbnMgdG8gbmV2ZXIgcmVhZCBvciB3cml0ZSBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgYXJyYXkgYW5kIHRvCittYWtlIHN1cmUgdGhlIHN0cmluZ3MgYXJlIHByb3Blcmx5IE5VTC10ZXJtaW5hdGVkLjwvcGFyYT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191ODwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+Y2FyZDwvc3RydWN0ZmllbGQ+WzMyXTwvZW50cnk+CisJICAgIDxlbnRyeT5OYW1lIG9mIHRoZSBkZXZpY2UsIGEgTlVMLXRlcm1pbmF0ZWQgVVRGLTggc3RyaW5nLgorRm9yIGV4YW1wbGU6ICJZb3lvZHluZSBUVi9GTSIuIE9uZSBkcml2ZXIgbWF5IHN1cHBvcnQgZGlmZmVyZW50IGJyYW5kcworb3IgbW9kZWxzIG9mIHZpZGVvIGhhcmR3YXJlLiBUaGlzIGluZm9ybWF0aW9uIGlzIGludGVuZGVkIGZvciB1c2VycywKK2ZvciBleGFtcGxlIGluIGEgbWVudSBvZiBhdmFpbGFibGUgZGV2aWNlcy4gU2luY2UgbXVsdGlwbGUgVFYgY2FyZHMgb2YKK3RoZSBzYW1lIGJyYW5kIG1heSBiZSBpbnN0YWxsZWQgd2hpY2ggYXJlIHN1cHBvcnRlZCBieSB0aGUgc2FtZQorZHJpdmVyLCB0aGlzIG5hbWUgc2hvdWxkIGJlIGNvbWJpbmVkIHdpdGggdGhlIGNoYXJhY3RlciBkZXZpY2UgZmlsZQorbmFtZSAoJmVnOyA8ZmlsZW5hbWU+L2Rldi92aWRlbzI8L2ZpbGVuYW1lPikgb3IgdGhlCis8c3RydWN0ZmllbGQ+YnVzX2luZm88L3N0cnVjdGZpZWxkPiBzdHJpbmcgdG8gYXZvaWQKK2FtYmlndWl0aWVzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3U4PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5idXNfaW5mbzwvc3RydWN0ZmllbGQ+WzMyXTwvZW50cnk+CisJICAgIDxlbnRyeT5Mb2NhdGlvbiBvZiB0aGUgZGV2aWNlIGluIHRoZSBzeXN0ZW0sIGEKK05VTC10ZXJtaW5hdGVkIEFTQ0lJIHN0cmluZy4gRm9yIGV4YW1wbGU6ICJQQ0k6MDAwMDowNTowNi4wIi4gVGhpcworaW5mb3JtYXRpb24gaXMgaW50ZW5kZWQgZm9yIHVzZXJzLCB0byBkaXN0aW5ndWlzaCBtdWx0aXBsZQoraWRlbnRpY2FsIGRldmljZXMuIElmIG5vIHN1Y2ggaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIHRoZSBmaWVsZCBtdXN0CitzaW1wbHkgY291bnQgdGhlIGRldmljZXMgY29udHJvbGxlZCBieSB0aGUgZHJpdmVyICgicGxhdGZvcm06dml2aS0wMDAiKS4KK1RoZSBidXNfaW5mbyBtdXN0IHN0YXJ0IHdpdGggIlBDSToiIGZvciBQQ0kgYm9hcmRzLCAiUENJZToiIGZvciBQQ0kgRXhwcmVzcyBib2FyZHMsCisidXNiLSIgZm9yIFVTQiBkZXZpY2VzLCAiSTJDOiIgZm9yIGkyYyBkZXZpY2VzLCAiSVNBOiIgZm9yIElTQSBkZXZpY2VzLAorInBhcnBvcnQiIGZvciBwYXJhbGxlbCBwb3J0IGRldmljZXMgYW5kICJwbGF0Zm9ybToiIGZvciBwbGF0Zm9ybSBkZXZpY2VzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dmVyc2lvbjwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxwYXJhPlZlcnNpb24gbnVtYmVyIG9mIHRoZSBkcml2ZXIuPC9wYXJhPgorPHBhcmE+U3RhcnRpbmcgd2l0aCBrZXJuZWwgMy4xLCB0aGUgdmVyc2lvbiByZXBvcnRlZCBpcyBwcm92aWRlZCBieSB0aGUKK1Y0TDIgc3Vic3lzdGVtIGZvbGxvd2luZyB0aGUga2VybmVsIG51bWJlcmluZyBzY2hlbWUuIEhvd2V2ZXIsIGl0CittYXkgbm90IGFsd2F5cyByZXR1cm4gdGhlIHNhbWUgdmVyc2lvbiBhcyB0aGUga2VybmVsIGlmLCBmb3IgZXhhbXBsZSwKK2Egc3RhYmxlIG9yIGRpc3RyaWJ1dGlvbi1tb2RpZmllZCBrZXJuZWwgdXNlcyB0aGUgVjRMMiBzdGFjayBmcm9tIGEKK25ld2VyIGtlcm5lbC48L3BhcmE+Cis8cGFyYT5UaGUgdmVyc2lvbiBudW1iZXIgaXMgZm9ybWF0dGVkIHVzaW5nIHRoZQorPGNvbnN0YW50PktFUk5FTF9WRVJTSU9OKCk8L2NvbnN0YW50PiBtYWNybzo8L3BhcmE+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5IHNwYW5uYW1lPSJoc3BhbiI+PHBhcmE+Cis8cHJvZ3JhbWxpc3Rpbmc+CisjZGVmaW5lIEtFUk5FTF9WRVJTSU9OKGEsYixjKSAoKChhKSAmbHQ7Jmx0OyAxNikgKyAoKGIpICZsdDsmbHQ7IDgpICsgKGMpKQorCitfX3UzMiB2ZXJzaW9uID0gS0VSTkVMX1ZFUlNJT04oMCwgOCwgMSk7CisKK3ByaW50ZiAoIlZlcnNpb246ICV1LiV1LiV1XG4iLAorCSh2ZXJzaW9uICZndDsmZ3Q7IDE2KSAmYW1wOyAweEZGLAorCSh2ZXJzaW9uICZndDsmZ3Q7IDgpICZhbXA7IDB4RkYsCisJIHZlcnNpb24gJmFtcDsgMHhGRik7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmNhcGFiaWxpdGllczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkF2YWlsYWJsZSBjYXBhYmlsaXRpZXMgb2YgdGhlIHBoeXNpY2FsIGRldmljZSBhcyBhIHdob2xlLCBzZWUgPHhyZWYKKwkJbGlua2VuZD0iZGV2aWNlLWNhcGFiaWxpdGllcyIgLz4uIFRoZSBzYW1lIHBoeXNpY2FsIGRldmljZSBjYW4gZXhwb3J0CisJCW11bHRpcGxlIGRldmljZXMgaW4gL2RldiAoZS5nLiAvZGV2L3ZpZGVvWCwgL2Rldi92YmlZIGFuZCAvZGV2L3JhZGlvWikuCisJCVRoZSA8c3RydWN0ZmllbGQ+Y2FwYWJpbGl0aWVzPC9zdHJ1Y3RmaWVsZD4gZmllbGQgc2hvdWxkIGNvbnRhaW4gYSB1bmlvbgorCQlvZiBhbGwgY2FwYWJpbGl0aWVzIGF2YWlsYWJsZSBhcm91bmQgdGhlIHNldmVyYWwgVjRMMiBkZXZpY2VzIGV4cG9ydGVkCisJCXRvIHVzZXJzcGFjZS4KKwkJRm9yIGFsbCB0aG9zZSBkZXZpY2VzIHRoZSA8c3RydWN0ZmllbGQ+Y2FwYWJpbGl0aWVzPC9zdHJ1Y3RmaWVsZD4gZmllbGQKKwkJcmV0dXJucyB0aGUgc2FtZSBzZXQgb2YJY2FwYWJpbGl0aWVzLiBUaGlzIGFsbG93cyBhcHBsaWNhdGlvbnMgdG8gb3BlbgorCQlqdXN0IG9uZSBvZiB0aGUgZGV2aWNlcyAodHlwaWNhbGx5IHRoZSB2aWRlbyBkZXZpY2UpIGFuZCBkaXNjb3ZlciB3aGV0aGVyCisJCXZpZGVvLCB2YmkgYW5kL29yIHJhZGlvIGFyZSBhbHNvIHN1cHBvcnRlZC4KKwkgICAgPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5kZXZpY2VfY2Fwczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkRldmljZSBjYXBhYmlsaXRpZXMgb2YgdGhlIG9wZW5lZCBkZXZpY2UsIHNlZSA8eHJlZgorCQlsaW5rZW5kPSJkZXZpY2UtY2FwYWJpbGl0aWVzIiAvPi4gU2hvdWxkIGNvbnRhaW4gdGhlIGF2YWlsYWJsZSBjYXBhYmlsaXRpZXMKKwkJb2YgdGhhdCBzcGVjaWZpYyBkZXZpY2Ugbm9kZS4gU28sIGZvciBleGFtcGxlLCA8c3RydWN0ZmllbGQ+ZGV2aWNlX2NhcHM8L3N0cnVjdGZpZWxkPgorCQlvZiBhIHJhZGlvIGRldmljZSB3aWxsIG9ubHkgY29udGFpbiByYWRpbyByZWxhdGVkIGNhcGFiaWxpdGllcyBhbmQKKwkJbm8gdmlkZW8gb3IgdmJpIGNhcGFiaWxpdGllcy4gVGhpcyBmaWVsZCBpcyBvbmx5IHNldCBpZiB0aGUgPHN0cnVjdGZpZWxkPmNhcGFiaWxpdGllczwvc3RydWN0ZmllbGQ+CisJCWZpZWxkIGNvbnRhaW5zIHRoZSA8Y29uc3RhbnQ+VjRMMl9DQVBfREVWSUNFX0NBUFM8L2NvbnN0YW50PiBjYXBhYmlsaXR5LgorCQlPbmx5IHRoZSA8c3RydWN0ZmllbGQ+Y2FwYWJpbGl0aWVzPC9zdHJ1Y3RmaWVsZD4gZmllbGQgY2FuIGhhdmUgdGhlCisJCTxjb25zdGFudD5WNEwyX0NBUF9ERVZJQ0VfQ0FQUzwvY29uc3RhbnQ+IGNhcGFiaWxpdHksIDxzdHJ1Y3RmaWVsZD5kZXZpY2VfY2Fwczwvc3RydWN0ZmllbGQ+CisJCXdpbGwgbmV2ZXIgc2V0IDxjb25zdGFudD5WNEwyX0NBUF9ERVZJQ0VfQ0FQUzwvY29uc3RhbnQ+LgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD5bM108L2VudHJ5PgorCSAgICA8ZW50cnk+UmVzZXJ2ZWQgZm9yIGZ1dHVyZSBleHRlbnNpb25zLiBEcml2ZXJzIG11c3Qgc2V0Cit0aGlzIGFycmF5IHRvIHplcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJkZXZpY2UtY2FwYWJpbGl0aWVzIj4KKyAgICAgIDx0aXRsZT5EZXZpY2UgQ2FwYWJpbGl0aWVzIEZsYWdzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NBUF9WSURFT19DQVBUVVJFPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAwMDAwMTwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgZGV2aWNlIHN1cHBvcnRzIHRoZSBzaW5nbGUtcGxhbmFyIEFQSSB0aHJvdWdoIHRoZSA8bGluaworbGlua2VuZD0iY2FwdHVyZSI+VmlkZW8gQ2FwdHVyZTwvbGluaz4gaW50ZXJmYWNlLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DQVBfVklERU9fQ0FQVFVSRV9NUExBTkU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDAxMDAwPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBkZXZpY2Ugc3VwcG9ydHMgdGhlCisJICAgIDxsaW5rIGxpbmtlbmQ9InBsYW5hci1hcGlzIj5tdWx0aS1wbGFuYXIgQVBJPC9saW5rPiB0aHJvdWdoIHRoZQorCSAgICA8bGluayBsaW5rZW5kPSJjYXB0dXJlIj5WaWRlbyBDYXB0dXJlPC9saW5rPiBpbnRlcmZhY2UuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NBUF9WSURFT19PVVRQVVQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDAwMDAyPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBkZXZpY2Ugc3VwcG9ydHMgdGhlIHNpbmdsZS1wbGFuYXIgQVBJIHRocm91Z2ggdGhlIDxsaW5rCitsaW5rZW5kPSJvdXRwdXQiPlZpZGVvIE91dHB1dDwvbGluaz4gaW50ZXJmYWNlLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DQVBfVklERU9fT1VUUFVUX01QTEFORTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMDIwMDA8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGRldmljZSBzdXBwb3J0cyB0aGUKKwkgICAgPGxpbmsgbGlua2VuZD0icGxhbmFyLWFwaXMiPm11bHRpLXBsYW5hciBBUEk8L2xpbms+IHRocm91Z2ggdGhlCisJICAgIDxsaW5rIGxpbmtlbmQ9Im91dHB1dCI+VmlkZW8gT3V0cHV0PC9saW5rPiBpbnRlcmZhY2UuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NBUF9WSURFT19NMk08L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDA0MDAwPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBkZXZpY2Ugc3VwcG9ydHMgdGhlIHNpbmdsZS1wbGFuYXIgQVBJIHRocm91Z2ggdGhlCisJICAgIFZpZGVvIE1lbW9yeS1Uby1NZW1vcnkgaW50ZXJmYWNlLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DQVBfVklERU9fTTJNX01QTEFORTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMDgwMDA8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGRldmljZSBzdXBwb3J0cyB0aGUKKwkgICAgPGxpbmsgbGlua2VuZD0icGxhbmFyLWFwaXMiPm11bHRpLXBsYW5hciBBUEk8L2xpbms+IHRocm91Z2ggdGhlCisJICAgIFZpZGVvIE1lbW9yeS1Uby1NZW1vcnkgIGludGVyZmFjZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0FQX1ZJREVPX09WRVJMQVk8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDAwMDA0PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBkZXZpY2Ugc3VwcG9ydHMgdGhlIDxsaW5rCitsaW5rZW5kPSJvdmVybGF5Ij5WaWRlbyBPdmVybGF5PC9saW5rPiBpbnRlcmZhY2UuIEEgdmlkZW8gb3ZlcmxheSBkZXZpY2UKK3R5cGljYWxseSBzdG9yZXMgY2FwdHVyZWQgaW1hZ2VzIGRpcmVjdGx5IGluIHRoZSB2aWRlbyBtZW1vcnkgb2YgYQorZ3JhcGhpY3MgY2FyZCwgd2l0aCBoYXJkd2FyZSBjbGlwcGluZyBhbmQgc2NhbGluZy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0FQX1ZCSV9DQVBUVVJFPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAwMDAxMDwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgZGV2aWNlIHN1cHBvcnRzIHRoZSA8bGluayBsaW5rZW5kPSJyYXctdmJpIj5SYXcKK1ZCSSBDYXB0dXJlPC9saW5rPiBpbnRlcmZhY2UsIHByb3ZpZGluZyBUZWxldGV4dCBhbmQgQ2xvc2VkIENhcHRpb24KK2RhdGEuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NBUF9WQklfT1VUUFVUPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAwMDAyMDwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgZGV2aWNlIHN1cHBvcnRzIHRoZSA8bGluayBsaW5rZW5kPSJyYXctdmJpIj5SYXcgVkJJIE91dHB1dDwvbGluaz4gaW50ZXJmYWNlLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DQVBfU0xJQ0VEX1ZCSV9DQVBUVVJFPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAwMDA0MDwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgZGV2aWNlIHN1cHBvcnRzIHRoZSA8bGluayBsaW5rZW5kPSJzbGljZWQiPlNsaWNlZCBWQkkgQ2FwdHVyZTwvbGluaz4gaW50ZXJmYWNlLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DQVBfU0xJQ0VEX1ZCSV9PVVRQVVQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDAwMDgwPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBkZXZpY2Ugc3VwcG9ydHMgdGhlIDxsaW5rIGxpbmtlbmQ9InNsaWNlZCI+U2xpY2VkIFZCSSBPdXRwdXQ8L2xpbms+IGludGVyZmFjZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0FQX1JEU19DQVBUVVJFPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAwMDEwMDwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgZGV2aWNlIHN1cHBvcnRzIHRoZSA8bGluayBsaW5rZW5kPSJyZHMiPlJEUzwvbGluaz4gY2FwdHVyZSBpbnRlcmZhY2UuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NBUF9WSURFT19PVVRQVVRfT1ZFUkxBWTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMDAyMDA8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGRldmljZSBzdXBwb3J0cyB0aGUgPGxpbmsgbGlua2VuZD0ib3NkIj5WaWRlbworT3V0cHV0IE92ZXJsYXk8L2xpbms+IChPU0QpIGludGVyZmFjZS4gVW5saWtlIHRoZSA8d29yZGFzd29yZD5WaWRlbworT3ZlcmxheTwvd29yZGFzd29yZD4gaW50ZXJmYWNlLCB0aGlzIGlzIGEgc2Vjb25kYXJ5IGZ1bmN0aW9uIG9mIHZpZGVvCitvdXRwdXQgZGV2aWNlcyBhbmQgb3ZlcmxheXMgYW4gaW1hZ2Ugb250byBhbiBvdXRnb2luZyB2aWRlbyBzaWduYWwuCitXaGVuIHRoZSBkcml2ZXIgc2V0cyB0aGlzIGZsYWcsIGl0IG11c3QgY2xlYXIgdGhlCis8Y29uc3RhbnQ+VjRMMl9DQVBfVklERU9fT1ZFUkxBWTwvY29uc3RhbnQ+IGZsYWcgYW5kIHZpY2UKK3ZlcnNhLjxmb290bm90ZT48cGFyYT5UaGUgJnY0bDItZnJhbWVidWZmZXI7IGxhY2tzIGFuCismdjRsMi1idWYtdHlwZTsgZmllbGQsIHRoZXJlZm9yZSB0aGUgdHlwZSBvZiBvdmVybGF5IGlzIGltcGxpZWQgYnkgdGhlCitkcml2ZXIgY2FwYWJpbGl0aWVzLjwvcGFyYT48L2Zvb3Rub3RlPjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DQVBfSFdfRlJFUV9TRUVLPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDAwMDQwMDwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgZGV2aWNlIHN1cHBvcnRzIHRoZSAmVklESU9DLVMtSFctRlJFUS1TRUVLOyBpb2N0bCBmb3IKK2hhcmR3YXJlIGZyZXF1ZW5jeSBzZWVraW5nLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DQVBfUkRTX09VVFBVVDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMDA4MDA8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGRldmljZSBzdXBwb3J0cyB0aGUgPGxpbmsgbGlua2VuZD0icmRzIj5SRFM8L2xpbms+IG91dHB1dCBpbnRlcmZhY2UuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NBUF9UVU5FUjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMTAwMDA8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGRldmljZSBoYXMgc29tZSBzb3J0IG9mIHR1bmVyIHRvCityZWNlaXZlIFJGLW1vZHVsYXRlZCB2aWRlbyBzaWduYWxzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dAordHVuZXIgcHJvZ3JhbW1pbmcgc2VlCis8eHJlZiBsaW5rZW5kPSJ0dW5lciIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NBUF9BVURJTzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMjAwMDA8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGRldmljZSBoYXMgYXVkaW8gaW5wdXRzIG9yIG91dHB1dHMuIEl0IG1heSBvcgorbWF5IG5vdCBzdXBwb3J0IGF1ZGlvIHJlY29yZGluZyBvciBwbGF5YmFjaywgaW4gUENNIG9yIGNvbXByZXNzZWQKK2Zvcm1hdHMuIFBDTSBhdWRpbyBzdXBwb3J0IG11c3QgYmUgaW1wbGVtZW50ZWQgYXMgQUxTQSBvciBPU1MKK2ludGVyZmFjZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gYXVkaW8gaW5wdXRzIGFuZCBvdXRwdXRzIHNlZSA8eHJlZgorCQlsaW5rZW5kPSJhdWRpbyIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NBUF9SQURJTzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwNDAwMDA8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBpcyBhIHJhZGlvIHJlY2VpdmVyLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DQVBfTU9EVUxBVE9SPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDA4MDAwMDwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgZGV2aWNlIGhhcyBzb21lIHNvcnQgb2YgbW9kdWxhdG9yIHRvCitlbWl0IFJGLW1vZHVsYXRlZCB2aWRlby9hdWRpbyBzaWduYWxzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dAorbW9kdWxhdG9yIHByb2dyYW1taW5nIHNlZQorPHhyZWYgbGlua2VuZD0idHVuZXIiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DQVBfU0RSX0NBUFRVUkU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMTAwMDAwPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBkZXZpY2Ugc3VwcG9ydHMgdGhlCis8bGluayBsaW5rZW5kPSJzZHIiPlNEUiBDYXB0dXJlPC9saW5rPiBpbnRlcmZhY2UuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NBUF9FWFRfUElYX0ZPUk1BVDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAyMDAwMDA8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGRldmljZSBzdXBwb3J0cyB0aGUgJnY0bDItcGl4LWZvcm1hdDsgZXh0ZW5kZWQKK2ZpZWxkcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0FQX1NEUl9PVVRQVVQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwNDAwMDAwPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBkZXZpY2Ugc3VwcG9ydHMgdGhlCis8bGluayBsaW5rZW5kPSJzZHIiPlNEUiBPdXRwdXQ8L2xpbms+IGludGVyZmFjZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ0FQX1JFQURXUklURTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDEwMDAwMDA8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGRldmljZSBzdXBwb3J0cyB0aGUgPGxpbmsKK2xpbmtlbmQ9InJ3Ij5yZWFkKCk8L2xpbms+IGFuZC9vciA8bGluayBsaW5rZW5kPSJydyI+d3JpdGUoKTwvbGluaz4KK0kvTyBtZXRob2RzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DQVBfQVNZTkNJTzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDIwMDAwMDA8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGRldmljZSBzdXBwb3J0cyB0aGUgPGxpbmsKK2xpbmtlbmQ9ImFzeW5jIj5hc3luY2hyb25vdXM8L2xpbms+IEkvTyBtZXRob2RzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DQVBfU1RSRUFNSU5HPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwNDAwMDAwMDwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgZGV2aWNlIHN1cHBvcnRzIHRoZSA8bGluaworbGlua2VuZD0ibW1hcCI+c3RyZWFtaW5nPC9saW5rPiBJL08gbWV0aG9kLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DQVBfREVWSUNFX0NBUFM8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDgwMDAwMDAwPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBkcml2ZXIgZmlsbHMgdGhlIDxzdHJ1Y3RmaWVsZD5kZXZpY2VfY2Fwczwvc3RydWN0ZmllbGQ+CisJICAgIGZpZWxkLiBUaGlzIGNhcGFiaWxpdHkgY2FuIG9ubHkgYXBwZWFyIGluIHRoZSA8c3RydWN0ZmllbGQ+Y2FwYWJpbGl0aWVzPC9zdHJ1Y3RmaWVsZD4KKwkgICAgZmllbGQgYW5kIG5ldmVyIGluIHRoZSA8c3RydWN0ZmllbGQ+ZGV2aWNlX2NhcHM8L3N0cnVjdGZpZWxkPiBmaWVsZC48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2MtcXVlcnljdHJsLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLXF1ZXJ5Y3RybC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTViNzU4MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLXF1ZXJ5Y3RybC54bWwKQEAgLTAsMCArMSw2NjEgQEAKKzxyZWZlbnRyeSBpZD0idmlkaW9jLXF1ZXJ5Y3RybCI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19RVUVSWUNUUkwsIFZJRElPQ19RVUVSWV9FWFRfQ1RSTCwgVklESU9DX1FVRVJZTUVOVTwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX1FVRVJZQ1RSTDwvcmVmbmFtZT4KKyAgICA8cmVmbmFtZT5WSURJT0NfUVVFUllfRVhUX0NUUkw8L3JlZm5hbWU+CisgICAgPHJlZm5hbWU+VklESU9DX1FVRVJZTUVOVTwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5FbnVtZXJhdGUgY29udHJvbHMgYW5kIG1lbnUgY29udHJvbCBpdGVtczwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zdHJ1Y3QgdjRsMl9xdWVyeWN0cmwgKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c3RydWN0IHY0bDJfcXVlcnlfZXh0X2N0cmwgKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c3RydWN0IHY0bDJfcXVlcnltZW51ICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfUVVFUllDVFJMLCBWSURJT0NfUVVFUllfRVhUX0NUUkwsIFZJRElPQ19RVUVSWU1FTlU8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPlRvIHF1ZXJ5IHRoZSBhdHRyaWJ1dGVzIG9mIGEgY29udHJvbCBhcHBsaWNhdGlvbnMgc2V0IHRoZQorPHN0cnVjdGZpZWxkPmlkPC9zdHJ1Y3RmaWVsZD4gZmllbGQgb2YgYSAmdjRsMi1xdWVyeWN0cmw7IGFuZCBjYWxsIHRoZQorPGNvbnN0YW50PlZJRElPQ19RVUVSWUNUUkw8L2NvbnN0YW50PiBpb2N0bCB3aXRoIGEgcG9pbnRlciB0byB0aGlzCitzdHJ1Y3R1cmUuIFRoZSBkcml2ZXIgZmlsbHMgdGhlIHJlc3Qgb2YgdGhlIHN0cnVjdHVyZSBvciByZXR1cm5zIGFuCismRUlOVkFMOyB3aGVuIHRoZSA8c3RydWN0ZmllbGQ+aWQ8L3N0cnVjdGZpZWxkPiBpcyBpbnZhbGlkLjwvcGFyYT4KKworICAgIDxwYXJhPkl0IGlzIHBvc3NpYmxlIHRvIGVudW1lcmF0ZSBjb250cm9scyBieSBjYWxsaW5nCis8Y29uc3RhbnQ+VklESU9DX1FVRVJZQ1RSTDwvY29uc3RhbnQ+IHdpdGggc3VjY2Vzc2l2ZQorPHN0cnVjdGZpZWxkPmlkPC9zdHJ1Y3RmaWVsZD4gdmFsdWVzIHN0YXJ0aW5nIGZyb20KKzxjb25zdGFudD5WNEwyX0NJRF9CQVNFPC9jb25zdGFudD4gdXAgdG8gYW5kIGV4Y2x1c2l2ZQorPGNvbnN0YW50PlY0TDJfQ0lEX0xBU1RQMTwvY29uc3RhbnQ+LiBEcml2ZXJzIG1heSByZXR1cm4KKzxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+IGlmIGEgY29udHJvbCBpbiB0aGlzIHJhbmdlIGlzIG5vdAorc3VwcG9ydGVkLiBGdXJ0aGVyIGFwcGxpY2F0aW9ucyBjYW4gZW51bWVyYXRlIHByaXZhdGUgY29udHJvbHMsIHdoaWNoCithcmUgbm90IGRlZmluZWQgaW4gdGhpcyBzcGVjaWZpY2F0aW9uLCBieSBzdGFydGluZyBhdAorPGNvbnN0YW50PlY0TDJfQ0lEX1BSSVZBVEVfQkFTRTwvY29uc3RhbnQ+IGFuZCBpbmNyZW1lbnRpbmcKKzxzdHJ1Y3RmaWVsZD5pZDwvc3RydWN0ZmllbGQ+IHVudGlsIHRoZSBkcml2ZXIgcmV0dXJucworPGVycm9yY29kZT5FSU5WQUw8L2Vycm9yY29kZT4uPC9wYXJhPgorCisgICAgPHBhcmE+SW4gYm90aCBjYXNlcywgd2hlbiB0aGUgZHJpdmVyIHNldHMgdGhlCis8Y29uc3RhbnQ+VjRMMl9DVFJMX0ZMQUdfRElTQUJMRUQ8L2NvbnN0YW50PiBmbGFnIGluIHRoZQorPHN0cnVjdGZpZWxkPmZsYWdzPC9zdHJ1Y3RmaWVsZD4gZmllbGQgdGhpcyBjb250cm9sIGlzIHBlcm1hbmVudGx5CitkaXNhYmxlZCBhbmQgc2hvdWxkIGJlIGlnbm9yZWQgYnkgdGhlIGFwcGxpY2F0aW9uLjxmb290bm90ZT4KKwk8cGFyYT48Y29uc3RhbnQ+VjRMMl9DVFJMX0ZMQUdfRElTQUJMRUQ8L2NvbnN0YW50PiB3YXMKK2ludGVuZGVkIGZvciB0d28gcHVycG9zZXM6IERyaXZlcnMgY2FuIHNraXAgcHJlZGVmaW5lZCBjb250cm9scyBub3QKK3N1cHBvcnRlZCBieSB0aGUgaGFyZHdhcmUgKGFsdGhvdWdoIHJldHVybmluZyBFSU5WQUwgd291bGQgZG8gYXMKK3dlbGwpLCBvciBkaXNhYmxlIHByZWRlZmluZWQgYW5kIHByaXZhdGUgY29udHJvbHMgYWZ0ZXIgaGFyZHdhcmUKK2RldGVjdGlvbiB3aXRob3V0IHRoZSB0cm91YmxlIG9mIHJlb3JkZXJpbmcgY29udHJvbCBhcnJheXMgYW5kIGluZGljZXMKKyhFSU5WQUwgY2Fubm90IGJlIHVzZWQgdG8gc2tpcCBwcml2YXRlIGNvbnRyb2xzIGJlY2F1c2UgaXQgd291bGQKK3ByZW1hdHVyZWx5IGVuZCB0aGUgZW51bWVyYXRpb24pLjwvcGFyYT48L2Zvb3Rub3RlPjwvcGFyYT4KKworICAgIDxwYXJhPldoZW4gdGhlIGFwcGxpY2F0aW9uIE9ScyA8c3RydWN0ZmllbGQ+aWQ8L3N0cnVjdGZpZWxkPiB3aXRoCis8Y29uc3RhbnQ+VjRMMl9DVFJMX0ZMQUdfTkVYVF9DVFJMPC9jb25zdGFudD4gdGhlIGRyaXZlciByZXR1cm5zIHRoZQorbmV4dCBzdXBwb3J0ZWQgbm9uLWNvbXBvdW5kIGNvbnRyb2wsIG9yIDxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+CitpZiB0aGVyZSBpcyBub25lLiBJbiBhZGRpdGlvbiwgdGhlIDxjb25zdGFudD5WNEwyX0NUUkxfRkxBR19ORVhUX0NPTVBPVU5EPC9jb25zdGFudD4KK2ZsYWcgY2FuIGJlIHNwZWNpZmllZCB0byBlbnVtZXJhdGUgYWxsIGNvbXBvdW5kIGNvbnRyb2xzIChpLmUuIGNvbnRyb2xzCit3aXRoIHR5cGUgJmdlOyA8Y29uc3RhbnQ+VjRMMl9DVFJMX0NPTVBPVU5EX1RZUEVTPC9jb25zdGFudD4gYW5kL29yIGFycmF5Citjb250cm9sLCBpbiBvdGhlciB3b3JkcyBjb250cm9scyB0aGF0IGNvbnRhaW4gbW9yZSB0aGFuIG9uZSB2YWx1ZSkuCitTcGVjaWZ5IGJvdGggPGNvbnN0YW50PlY0TDJfQ1RSTF9GTEFHX05FWFRfQ1RSTDwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlY0TDJfQ1RSTF9GTEFHX05FWFRfQ09NUE9VTkQ8L2NvbnN0YW50PiBpbiBvcmRlciB0byBlbnVtZXJhdGUKK2FsbCBjb250cm9scywgY29tcG91bmQgb3Igbm90LiBEcml2ZXJzIHdoaWNoIGRvIG5vdCBzdXBwb3J0IHRoZXNlIGZsYWdzIHlldAorYWx3YXlzIHJldHVybiA8ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPi48L3BhcmE+CisKKyAgICA8cGFyYT5UaGUgPGNvbnN0YW50PlZJRElPQ19RVUVSWV9FWFRfQ1RSTDwvY29uc3RhbnQ+IGlvY3RsIHdhcworaW50cm9kdWNlZCBpbiBvcmRlciB0byBiZXR0ZXIgc3VwcG9ydCBjb250cm9scyB0aGF0IGNhbiB1c2UgY29tcG91bmQKK3R5cGVzLCBhbmQgdG8gZXhwb3NlIGFkZGl0aW9uYWwgY29udHJvbCBpbmZvcm1hdGlvbiB0aGF0IGNhbm5vdCBiZQorcmV0dXJuZWQgaW4gJnY0bDItcXVlcnljdHJsOyBzaW5jZSB0aGF0IHN0cnVjdHVyZSBpcyBmdWxsLjwvcGFyYT4KKworICAgIDxwYXJhPjxjb25zdGFudD5WSURJT0NfUVVFUllfRVhUX0NUUkw8L2NvbnN0YW50PiBpcyB1c2VkIGluIHRoZQorc2FtZSB3YXkgYXMgPGNvbnN0YW50PlZJRElPQ19RVUVSWUNUUkw8L2NvbnN0YW50PiwgZXhjZXB0IHRoYXQgdGhlCis8c3RydWN0ZmllbGQ+cmVzZXJ2ZWQ8L3N0cnVjdGZpZWxkPiBhcnJheSBtdXN0IGJlIHplcm9lZCBhcyB3ZWxsLjwvcGFyYT4KKworICAgIDxwYXJhPkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaXMgcmVxdWlyZWQgZm9yIG1lbnUgY29udHJvbHM6IHRoZQorbmFtZXMgb2YgdGhlIG1lbnUgaXRlbXMuIFRvIHF1ZXJ5IHRoZW0gYXBwbGljYXRpb25zIHNldCB0aGUKKzxzdHJ1Y3RmaWVsZD5pZDwvc3RydWN0ZmllbGQ+IGFuZCA8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPgorZmllbGRzIG9mICZ2NGwyLXF1ZXJ5bWVudTsgYW5kIGNhbGwgdGhlCis8Y29uc3RhbnQ+VklESU9DX1FVRVJZTUVOVTwvY29uc3RhbnQ+IGlvY3RsIHdpdGggYSBwb2ludGVyIHRvIHRoaXMKK3N0cnVjdHVyZS4gVGhlIGRyaXZlciBmaWxscyB0aGUgcmVzdCBvZiB0aGUgc3RydWN0dXJlIG9yIHJldHVybnMgYW4KKyZFSU5WQUw7IHdoZW4gdGhlIDxzdHJ1Y3RmaWVsZD5pZDwvc3RydWN0ZmllbGQ+IG9yCis8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPiBpcyBpbnZhbGlkLiBNZW51IGl0ZW1zIGFyZSBlbnVtZXJhdGVkCitieSBjYWxsaW5nIDxjb25zdGFudD5WSURJT0NfUVVFUllNRU5VPC9jb25zdGFudD4gd2l0aCBzdWNjZXNzaXZlCis8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPiB2YWx1ZXMgZnJvbSAmdjRsMi1xdWVyeWN0cmw7Cis8c3RydWN0ZmllbGQ+bWluaW11bTwvc3RydWN0ZmllbGQ+IHRvCis8c3RydWN0ZmllbGQ+bWF4aW11bTwvc3RydWN0ZmllbGQ+LCBpbmNsdXNpdmUuIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZQorZm9yIDxjb25zdGFudD5WSURJT0NfUVVFUllNRU5VPC9jb25zdGFudD4gdG8gcmV0dXJuIGFuICZFSU5WQUw7IGZvciBzb21lCitpbmRpY2VzIGJldHdlZW4gPHN0cnVjdGZpZWxkPm1pbmltdW08L3N0cnVjdGZpZWxkPiBhbmQgPHN0cnVjdGZpZWxkPm1heGltdW08L3N0cnVjdGZpZWxkPi4KK0luIHRoYXQgY2FzZSB0aGF0IHBhcnRpY3VsYXIgbWVudSBpdGVtIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIuIEFsc28gbm90ZSB0aGF0Cit0aGUgPHN0cnVjdGZpZWxkPm1pbmltdW08L3N0cnVjdGZpZWxkPiB2YWx1ZSBpcyBub3QgbmVjZXNzYXJpbHkgMC48L3BhcmE+CisKKyAgICA8cGFyYT5TZWUgYWxzbyB0aGUgZXhhbXBsZXMgaW4gPHhyZWYgbGlua2VuZD0iY29udHJvbCIgLz4uPC9wYXJhPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLXF1ZXJ5Y3RybCI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfcXVlcnljdHJsPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+aWQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5JZGVudGlmaWVzIHRoZSBjb250cm9sLCBzZXQgYnkgdGhlIGFwcGxpY2F0aW9uLiBTZWUKKzx4cmVmIGxpbmtlbmQ9ImNvbnRyb2wtaWQiIC8+IGZvciBwcmVkZWZpbmVkIElEcy4gV2hlbiB0aGUgSUQgaXMgT1JlZAord2l0aCBWNEwyX0NUUkxfRkxBR19ORVhUX0NUUkwgdGhlIGRyaXZlciBjbGVhcnMgdGhlIGZsYWcgYW5kIHJldHVybnMKK3RoZSBmaXJzdCBjb250cm9sIHdpdGggYSBoaWdoZXIgSUQuIERyaXZlcnMgd2hpY2ggZG8gbm90IHN1cHBvcnQgdGhpcworZmxhZyB5ZXQgYWx3YXlzIHJldHVybiBhbiAmRUlOVkFMOy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UeXBlIG9mIGNvbnRyb2wsIHNlZSA8eHJlZgorCQlsaW5rZW5kPSJ2NGwyLWN0cmwtdHlwZSIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTg8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm5hbWU8L3N0cnVjdGZpZWxkPlszMl08L2VudHJ5PgorCSAgICA8ZW50cnk+TmFtZSBvZiB0aGUgY29udHJvbCwgYSBOVUwtdGVybWluYXRlZCBBU0NJSQorc3RyaW5nLiBUaGlzIGluZm9ybWF0aW9uIGlzIGludGVuZGVkIGZvciB0aGUgdXNlci48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X19zMzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm1pbmltdW08L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5NaW5pbXVtIHZhbHVlLCBpbmNsdXNpdmUuIFRoaXMgZmllbGQgZ2l2ZXMgYSBsb3dlcgorYm91bmQgZm9yIHRoZSBjb250cm9sLiBTZWUgJnY0bDItY3RybC10eXBlOyBob3cgdGhlIG1pbmltdW0gdmFsdWUgaXMgdG8KK2JlIHVzZWQgZm9yIGVhY2ggcG9zc2libGUgY29udHJvbCB0eXBlLiBOb3RlIHRoYXQgdGhpcyBhIHNpZ25lZCAzMi1iaXQgdmFsdWUuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fczMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5tYXhpbXVtPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+TWF4aW11bSB2YWx1ZSwgaW5jbHVzaXZlLiBUaGlzIGZpZWxkIGdpdmVzIGFuIHVwcGVyCitib3VuZCBmb3IgdGhlIGNvbnRyb2wuIFNlZSAmdjRsMi1jdHJsLXR5cGU7IGhvdyB0aGUgbWF4aW11bSB2YWx1ZSBpcyB0bworYmUgdXNlZCBmb3IgZWFjaCBwb3NzaWJsZSBjb250cm9sIHR5cGUuIE5vdGUgdGhhdCB0aGlzIGEgc2lnbmVkIDMyLWJpdCB2YWx1ZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X19zMzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnN0ZXA8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48cGFyYT5UaGlzIGZpZWxkIGdpdmVzIGEgc3RlcCBzaXplIGZvciB0aGUgY29udHJvbC4KK1NlZSAmdjRsMi1jdHJsLXR5cGU7IGhvdyB0aGUgc3RlcCB2YWx1ZSBpcyB0byBiZSB1c2VkIGZvciBlYWNoIHBvc3NpYmxlCitjb250cm9sIHR5cGUuIE5vdGUgdGhhdCB0aGlzIGFuIHVuc2lnbmVkIDMyLWJpdCB2YWx1ZS4KKzwvcGFyYT48cGFyYT5HZW5lcmFsbHkgZHJpdmVycyBzaG91bGQgbm90IHNjYWxlIGhhcmR3YXJlCitjb250cm9sIHZhbHVlcy4gSXQgbWF5IGJlIG5lY2Vzc2FyeSBmb3IgZXhhbXBsZSB3aGVuIHRoZQorPHN0cnVjdGZpZWxkPm5hbWU8L3N0cnVjdGZpZWxkPiBvciA8c3RydWN0ZmllbGQ+aWQ8L3N0cnVjdGZpZWxkPiBpbXBseQorYSBwYXJ0aWN1bGFyIHVuaXQgYW5kIHRoZSBoYXJkd2FyZSBhY3R1YWxseSBhY2NlcHRzIG9ubHkgbXVsdGlwbGVzIG9mCitzYWlkIHVuaXQuIElmIHNvLCBkcml2ZXJzIG11c3QgdGFrZSBjYXJlIHZhbHVlcyBhcmUgcHJvcGVybHkgcm91bmRlZAord2hlbiBzY2FsaW5nLCBzdWNoIHRoYXQgZXJyb3JzIHdpbGwgbm90IGFjY3VtdWxhdGUgb24gcmVwZWF0ZWQKK3JlYWQtd3JpdGUgY3ljbGVzLjwvcGFyYT48cGFyYT5UaGlzIGZpZWxkIGdpdmVzIHRoZSBzbWFsbGVzdCBjaGFuZ2Ugb2YKK2FuIGludGVnZXIgY29udHJvbCBhY3R1YWxseSBhZmZlY3RpbmcgaGFyZHdhcmUuIE9mdGVuIHRoZSBpbmZvcm1hdGlvbgoraXMgbmVlZGVkIHdoZW4gdGhlIHVzZXIgY2FuIGNoYW5nZSBjb250cm9scyBieSBrZXlib2FyZCBvciBHVUkKK2J1dHRvbnMsIHJhdGhlciB0aGFuIGEgc2xpZGVyLiBXaGVuIGZvciBleGFtcGxlIGEgaGFyZHdhcmUgcmVnaXN0ZXIKK2FjY2VwdHMgdmFsdWVzIDAtNTExIGFuZCB0aGUgZHJpdmVyIHJlcG9ydHMgMC02NTUzNSwgc3RlcCBzaG91bGQgYmUKKzEyOC48L3BhcmE+PHBhcmE+Tm90ZSB0aGF0IGFsdGhvdWdoIHNpZ25lZCwgdGhlIHN0ZXAgdmFsdWUgaXMgc3VwcG9zZWQgdG8KK2JlIGFsd2F5cyBwb3NpdGl2ZS48L3BhcmE+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fczMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5kZWZhdWx0X3ZhbHVlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGRlZmF1bHQgdmFsdWUgb2YgYQorPGNvbnN0YW50PlY0TDJfQ1RSTF9UWVBFX0lOVEVHRVI8L2NvbnN0YW50PiwKKzxjb25zdGFudD5fQk9PTEVBTjwvY29uc3RhbnQ+LCA8Y29uc3RhbnQ+X0JJVE1BU0s8L2NvbnN0YW50PiwKKzxjb25zdGFudD5fTUVOVTwvY29uc3RhbnQ+IG9yIDxjb25zdGFudD5fSU5URUdFUl9NRU5VPC9jb25zdGFudD4gY29udHJvbC4KK05vdCB2YWxpZCBmb3Igb3RoZXIgdHlwZXMgb2YgY29udHJvbHMuCitOb3RlIHRoYXQgZHJpdmVycyByZXNldCBjb250cm9scyB0byB0aGVpciBkZWZhdWx0IHZhbHVlIG9ubHkgd2hlbiB0aGUKK2RyaXZlciBpcyBmaXJzdCBsb2FkZWQsIG5ldmVyIGFmdGVyd2FyZHMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5mbGFnczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkNvbnRyb2wgZmxhZ3MsIHNlZSA8eHJlZgorCQlsaW5rZW5kPSJjb250cm9sLWZsYWdzIiAvPi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD5bMl08L2VudHJ5PgorCSAgICA8ZW50cnk+UmVzZXJ2ZWQgZm9yIGZ1dHVyZSBleHRlbnNpb25zLiBEcml2ZXJzIG11c3Qgc2V0Cit0aGUgYXJyYXkgdG8gemVyby48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItcXVlcnktZXh0LWN0cmwiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX3F1ZXJ5X2V4dF9jdHJsPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+aWQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5JZGVudGlmaWVzIHRoZSBjb250cm9sLCBzZXQgYnkgdGhlIGFwcGxpY2F0aW9uLiBTZWUKKzx4cmVmIGxpbmtlbmQ9ImNvbnRyb2wtaWQiIC8+IGZvciBwcmVkZWZpbmVkIElEcy4gV2hlbiB0aGUgSUQgaXMgT1JlZAord2l0aCA8Y29uc3RhbnQ+VjRMMl9DVFJMX0ZMQUdfTkVYVF9DVFJMPC9jb25zdGFudD4gdGhlIGRyaXZlciBjbGVhcnMgdGhlCitmbGFnIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBub24tY29tcG91bmQgY29udHJvbCB3aXRoIGEgaGlnaGVyIElELiBXaGVuIHRoZQorSUQgaXMgT1JlZCB3aXRoIDxjb25zdGFudD5WNEwyX0NUUkxfRkxBR19ORVhUX0NPTVBPVU5EPC9jb25zdGFudD4gdGhlIGRyaXZlcgorY2xlYXJzIHRoZSBmbGFnIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBjb21wb3VuZCBjb250cm9sIHdpdGggYSBoaWdoZXIgSUQuCitTZXQgYm90aCB0byBnZXQgdGhlIGZpcnN0IGNvbnRyb2wgKGNvbXBvdW5kIG9yIG5vdCkgd2l0aCBhIGhpZ2hlciBJRC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UeXBlIG9mIGNvbnRyb2wsIHNlZSA8eHJlZgorCQlsaW5rZW5kPSJ2NGwyLWN0cmwtdHlwZSIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PmNoYXI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm5hbWU8L3N0cnVjdGZpZWxkPlszMl08L2VudHJ5PgorCSAgICA8ZW50cnk+TmFtZSBvZiB0aGUgY29udHJvbCwgYSBOVUwtdGVybWluYXRlZCBBU0NJSQorc3RyaW5nLiBUaGlzIGluZm9ybWF0aW9uIGlzIGludGVuZGVkIGZvciB0aGUgdXNlci48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X19zNjQ8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm1pbmltdW08L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5NaW5pbXVtIHZhbHVlLCBpbmNsdXNpdmUuIFRoaXMgZmllbGQgZ2l2ZXMgYSBsb3dlcgorYm91bmQgZm9yIHRoZSBjb250cm9sLiBTZWUgJnY0bDItY3RybC10eXBlOyBob3cgdGhlIG1pbmltdW0gdmFsdWUgaXMgdG8KK2JlIHVzZWQgZm9yIGVhY2ggcG9zc2libGUgY29udHJvbCB0eXBlLiBOb3RlIHRoYXQgdGhpcyBhIHNpZ25lZCA2NC1iaXQgdmFsdWUuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fczY0PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5tYXhpbXVtPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+TWF4aW11bSB2YWx1ZSwgaW5jbHVzaXZlLiBUaGlzIGZpZWxkIGdpdmVzIGFuIHVwcGVyCitib3VuZCBmb3IgdGhlIGNvbnRyb2wuIFNlZSAmdjRsMi1jdHJsLXR5cGU7IGhvdyB0aGUgbWF4aW11bSB2YWx1ZSBpcyB0bworYmUgdXNlZCBmb3IgZWFjaCBwb3NzaWJsZSBjb250cm9sIHR5cGUuIE5vdGUgdGhhdCB0aGlzIGEgc2lnbmVkIDY0LWJpdCB2YWx1ZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191NjQ8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnN0ZXA8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48cGFyYT5UaGlzIGZpZWxkIGdpdmVzIGEgc3RlcCBzaXplIGZvciB0aGUgY29udHJvbC4KK1NlZSAmdjRsMi1jdHJsLXR5cGU7IGhvdyB0aGUgc3RlcCB2YWx1ZSBpcyB0byBiZSB1c2VkIGZvciBlYWNoIHBvc3NpYmxlCitjb250cm9sIHR5cGUuIE5vdGUgdGhhdCB0aGlzIGFuIHVuc2lnbmVkIDY0LWJpdCB2YWx1ZS4KKzwvcGFyYT48cGFyYT5HZW5lcmFsbHkgZHJpdmVycyBzaG91bGQgbm90IHNjYWxlIGhhcmR3YXJlCitjb250cm9sIHZhbHVlcy4gSXQgbWF5IGJlIG5lY2Vzc2FyeSBmb3IgZXhhbXBsZSB3aGVuIHRoZQorPHN0cnVjdGZpZWxkPm5hbWU8L3N0cnVjdGZpZWxkPiBvciA8c3RydWN0ZmllbGQ+aWQ8L3N0cnVjdGZpZWxkPiBpbXBseQorYSBwYXJ0aWN1bGFyIHVuaXQgYW5kIHRoZSBoYXJkd2FyZSBhY3R1YWxseSBhY2NlcHRzIG9ubHkgbXVsdGlwbGVzIG9mCitzYWlkIHVuaXQuIElmIHNvLCBkcml2ZXJzIG11c3QgdGFrZSBjYXJlIHZhbHVlcyBhcmUgcHJvcGVybHkgcm91bmRlZAord2hlbiBzY2FsaW5nLCBzdWNoIHRoYXQgZXJyb3JzIHdpbGwgbm90IGFjY3VtdWxhdGUgb24gcmVwZWF0ZWQKK3JlYWQtd3JpdGUgY3ljbGVzLjwvcGFyYT48cGFyYT5UaGlzIGZpZWxkIGdpdmVzIHRoZSBzbWFsbGVzdCBjaGFuZ2Ugb2YKK2FuIGludGVnZXIgY29udHJvbCBhY3R1YWxseSBhZmZlY3RpbmcgaGFyZHdhcmUuIE9mdGVuIHRoZSBpbmZvcm1hdGlvbgoraXMgbmVlZGVkIHdoZW4gdGhlIHVzZXIgY2FuIGNoYW5nZSBjb250cm9scyBieSBrZXlib2FyZCBvciBHVUkKK2J1dHRvbnMsIHJhdGhlciB0aGFuIGEgc2xpZGVyLiBXaGVuIGZvciBleGFtcGxlIGEgaGFyZHdhcmUgcmVnaXN0ZXIKK2FjY2VwdHMgdmFsdWVzIDAtNTExIGFuZCB0aGUgZHJpdmVyIHJlcG9ydHMgMC02NTUzNSwgc3RlcCBzaG91bGQgYmUKKzEyOC48L3BhcmE+PC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fczY0PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5kZWZhdWx0X3ZhbHVlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIGRlZmF1bHQgdmFsdWUgb2YgYQorPGNvbnN0YW50PlY0TDJfQ1RSTF9UWVBFX0lOVEVHRVI8L2NvbnN0YW50PiwgPGNvbnN0YW50Pl9JTlRFR0VSNjQ8L2NvbnN0YW50PiwKKzxjb25zdGFudD5fQk9PTEVBTjwvY29uc3RhbnQ+LCA8Y29uc3RhbnQ+X0JJVE1BU0s8L2NvbnN0YW50PiwKKzxjb25zdGFudD5fTUVOVTwvY29uc3RhbnQ+LCA8Y29uc3RhbnQ+X0lOVEVHRVJfTUVOVTwvY29uc3RhbnQ+LAorPGNvbnN0YW50Pl9VODwvY29uc3RhbnQ+IG9yIDxjb25zdGFudD5fVTE2PC9jb25zdGFudD4gY29udHJvbC4KK05vdCB2YWxpZCBmb3Igb3RoZXIgdHlwZXMgb2YgY29udHJvbHMuCitOb3RlIHRoYXQgZHJpdmVycyByZXNldCBjb250cm9scyB0byB0aGVpciBkZWZhdWx0IHZhbHVlIG9ubHkgd2hlbiB0aGUKK2RyaXZlciBpcyBmaXJzdCBsb2FkZWQsIG5ldmVyIGFmdGVyd2FyZHMuCis8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmZsYWdzPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+Q29udHJvbCBmbGFncywgc2VlIDx4cmVmCisJCWxpbmtlbmQ9ImNvbnRyb2wtZmxhZ3MiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+ZWxlbV9zaXplPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIHNpemUgaW4gYnl0ZXMgb2YgYSBzaW5nbGUgZWxlbWVudCBvZiB0aGUgYXJyYXkuCitHaXZlbiBhIGNoYXIgcG9pbnRlciA8Y29uc3RhbnQ+cDwvY29uc3RhbnQ+IHRvIGEgMy1kaW1lbnNpb25hbCBhcnJheSB5b3UgY2FuIGZpbmQgdGhlCitwb3NpdGlvbiBvZiBjZWxsIDxjb25zdGFudD4oeiwgeSwgeCk8L2NvbnN0YW50PiBhcyBmb2xsb3dzOgorPGNvbnN0YW50PnAgKyAoKHogKiBkaW1zWzFdICsgeSkgKiBkaW1zWzBdICsgeCkgKiBlbGVtX3NpemU8L2NvbnN0YW50Pi4gPHN0cnVjdGZpZWxkPmVsZW1fc2l6ZTwvc3RydWN0ZmllbGQ+CitpcyBhbHdheXMgdmFsaWQsIGFsc28gd2hlbiB0aGUgY29udHJvbCBpc24ndCBhbiBhcnJheS4gRm9yIHN0cmluZyBjb250cm9scworPHN0cnVjdGZpZWxkPmVsZW1fc2l6ZTwvc3RydWN0ZmllbGQ+IGlzIGVxdWFsIHRvIDxzdHJ1Y3RmaWVsZD5tYXhpbXVtICsgMTwvc3RydWN0ZmllbGQ+LgorPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5lbGVtczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIE4tZGltZW5zaW9uYWwgYXJyYXkuIElmIHRoaXMgY29udHJvbAoraXMgbm90IGFuIGFycmF5LCB0aGVuIDxzdHJ1Y3RmaWVsZD5lbGVtczwvc3RydWN0ZmllbGQ+IGlzIDEuIFRoZSA8c3RydWN0ZmllbGQ+ZWxlbXM8L3N0cnVjdGZpZWxkPgorZmllbGQgY2FuIG5ldmVyIGJlIDAuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5ucl9vZl9kaW1zPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIG51bWJlciBvZiBkaW1lbnNpb24gaW4gdGhlIE4tZGltZW5zaW9uYWwgYXJyYXkuIElmIHRoaXMgY29udHJvbAoraXMgbm90IGFuIGFycmF5LCB0aGVuIHRoaXMgZmllbGQgaXMgMC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmRpbXNbVjRMMl9DVFJMX01BWF9ESU1TXTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBzaXplIG9mIGVhY2ggZGltZW5zaW9uLiBUaGUgZmlyc3QgPHN0cnVjdGZpZWxkPm5yX29mX2RpbXM8L3N0cnVjdGZpZWxkPgorZWxlbWVudHMgb2YgdGhpcyBhcnJheSBtdXN0IGJlIG5vbi16ZXJvLCBhbGwgcmVtYWluaW5nIGVsZW1lbnRzIG11c3QgYmUgemVyby48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD5bMzJdPC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlc2VydmVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucy4gQXBwbGljYXRpb25zIGFuZCBkcml2ZXJzCittdXN0IHNldCB0aGUgYXJyYXkgdG8gemVyby48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItcXVlcnltZW51Ij4KKyAgICAgIDx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9xdWVyeW1lbnU8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iNCI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+aWQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5JZGVudGlmaWVzIHRoZSBjb250cm9sLCBzZXQgYnkgdGhlIGFwcGxpY2F0aW9uCitmcm9tIHRoZSByZXNwZWN0aXZlICZ2NGwyLXF1ZXJ5Y3RybDsKKzxzdHJ1Y3RmaWVsZD5pZDwvc3RydWN0ZmllbGQ+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+SW5kZXggb2YgdGhlIG1lbnUgaXRlbSwgc3RhcnRpbmcgYXQgemVybywgc2V0IGJ5CisJICAgIHRoZSBhcHBsaWNhdGlvbi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+dW5pb248L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjwvZW50cnk+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pl9fdTg8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm5hbWU8L3N0cnVjdGZpZWxkPlszMl08L2VudHJ5PgorCSAgICA8ZW50cnk+TmFtZSBvZiB0aGUgbWVudSBpdGVtLCBhIE5VTC10ZXJtaW5hdGVkIEFTQ0lJCitzdHJpbmcuIFRoaXMgaW5mb3JtYXRpb24gaXMgaW50ZW5kZWQgZm9yIHRoZSB1c2VyLiBUaGlzIGZpZWxkIGlzIHZhbGlkCitmb3IgPGNvbnN0YW50PlY0TDJfQ1RSTF9GTEFHX01FTlU8L2NvbnN0YW50PiB0eXBlIGNvbnRyb2xzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48L2VudHJ5PgorCSAgICA8ZW50cnk+X19zNjQ8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnZhbHVlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+CisgICAgICAgICAgICAgIFZhbHVlIG9mIHRoZSBpbnRlZ2VyIG1lbnUgaXRlbS4gVGhpcyBmaWVsZCBpcyB2YWxpZCBmb3IKKyAgICAgICAgICAgICAgPGNvbnN0YW50PlY0TDJfQ1RSTF9GTEFHX0lOVEVHRVJfTUVOVTwvY29uc3RhbnQ+IHR5cGUKKyAgICAgICAgICAgICAgY29udHJvbHMuCisgICAgICAgICAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlc2VydmVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucy4gRHJpdmVycyBtdXN0IHNldAordGhlIGFycmF5IHRvIHplcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLWN0cmwtdHlwZSI+CisgICAgICA8dGl0bGU+ZW51bSB2NGwyX2N0cmxfdHlwZTwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjUiIGFsaWduPSJsZWZ0Ij4KKwk8Y29sc3BlYyBjb2x3aWR0aD0iMzAqIiAvPgorCTxjb2xzcGVjIGNvbHdpZHRoPSI1KiIgYWxpZ249ImNlbnRlciIgLz4KKwk8Y29sc3BlYyBjb2x3aWR0aD0iNSoiIGFsaWduPSJjZW50ZXIiIC8+CisJPGNvbHNwZWMgY29sd2lkdGg9IjUqIiBhbGlnbj0iY2VudGVyIiAvPgorCTxjb2xzcGVjIGNvbHdpZHRoPSI1NSoiIC8+CisJPHRoZWFkPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PlR5cGU8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm1pbmltdW08L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+c3RlcDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5tYXhpbXVtPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorCSAgPC9yb3c+CisJPC90aGVhZD4KKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NUUkxfVFlQRV9JTlRFR0VSPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+YW55PC9lbnRyeT4KKwkgICAgPGVudHJ5PmFueTwvZW50cnk+CisJICAgIDxlbnRyeT5hbnk8L2VudHJ5PgorCSAgICA8ZW50cnk+QW4gaW50ZWdlci12YWx1ZWQgY29udHJvbCByYW5naW5nIGZyb20gbWluaW11bSB0bworbWF4aW11bSBpbmNsdXNpdmUuIFRoZSBzdGVwIHZhbHVlIGluZGljYXRlcyB0aGUgaW5jcmVtZW50IGJldHdlZW4KK3ZhbHVlcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ1RSTF9UWVBFX0JPT0xFQU48L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgPGVudHJ5PjE8L2VudHJ5PgorCSAgICA8ZW50cnk+MTwvZW50cnk+CisJICAgIDxlbnRyeT5BIGJvb2xlYW4tdmFsdWVkIGNvbnRyb2wuIFplcm8gY29ycmVzcG9uZHMgdG8KKyJkaXNhYmxlZCIsIGFuZCBvbmUgbWVhbnMgImVuYWJsZWQiLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DVFJMX1RZUEVfTUVOVTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PiZnZTsgMDwvZW50cnk+CisJICAgIDxlbnRyeT4xPC9lbnRyeT4KKwkgICAgPGVudHJ5Pk4tMTwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgY29udHJvbCBoYXMgYSBtZW51IG9mIE4gY2hvaWNlcy4gVGhlIG5hbWVzIG9mCit0aGUgbWVudSBpdGVtcyBjYW4gYmUgZW51bWVyYXRlZCB3aXRoIHRoZQorPGNvbnN0YW50PlZJRElPQ19RVUVSWU1FTlU8L2NvbnN0YW50PiBpb2N0bC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ1RSTF9UWVBFX0lOVEVHRVJfTUVOVTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PiZnZTsgMDwvZW50cnk+CisJICAgIDxlbnRyeT4xPC9lbnRyeT4KKwkgICAgPGVudHJ5Pk4tMTwvZW50cnk+CisJICAgIDxlbnRyeT4KKyAgICAgICAgICAgICAgVGhlIGNvbnRyb2wgaGFzIGEgbWVudSBvZiBOIGNob2ljZXMuIFRoZSB2YWx1ZXMgb2YgdGhlCisgICAgICAgICAgICAgIG1lbnUgaXRlbXMgY2FuIGJlIGVudW1lcmF0ZWQgd2l0aCB0aGUKKyAgICAgICAgICAgICAgPGNvbnN0YW50PlZJRElPQ19RVUVSWU1FTlU8L2NvbnN0YW50PiBpb2N0bC4gVGhpcyBpcworICAgICAgICAgICAgICBzaW1pbGFyIHRvIDxjb25zdGFudD5WNEwyX0NUUkxfVFlQRV9NRU5VPC9jb25zdGFudD4KKyAgICAgICAgICAgICAgZXhjZXB0IHRoYXQgaW5zdGVhZCBvZiBzdHJpbmdzLCB0aGUgbWVudSBpdGVtcyBhcmUKKyAgICAgICAgICAgICAgc2lnbmVkIDY0LWJpdCBpbnRlZ2Vycy4KKyAgICAgICAgICAgIDwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DVFJMX1RZUEVfQklUTUFTSzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICA8ZW50cnk+bi9hPC9lbnRyeT4KKwkgICAgPGVudHJ5PmFueTwvZW50cnk+CisJICAgIDxlbnRyeT5BIGJpdG1hc2sgZmllbGQuIFRoZSBtYXhpbXVtIHZhbHVlIGlzIHRoZSBzZXQgb2YgYml0cyB0aGF0IGNhbgorYmUgdXNlZCwgYWxsIG90aGVyIGJpdHMgYXJlIHRvIGJlIDAuIFRoZSBtYXhpbXVtIHZhbHVlIGlzIGludGVycHJldGVkIGFzIGEgX191MzIsCithbGxvd2luZyB0aGUgdXNlIG9mIGJpdCAzMSBpbiB0aGUgYml0bWFzay48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ1RSTF9UWVBFX0JVVFRPTjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjA8L2VudHJ5PgorCSAgICA8ZW50cnk+MDwvZW50cnk+CisJICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgPGVudHJ5PkEgY29udHJvbCB3aGljaCBwZXJmb3JtcyBhbiBhY3Rpb24gd2hlbiBzZXQuCitEcml2ZXJzIG11c3QgaWdub3JlIHRoZSB2YWx1ZSBwYXNzZWQgd2l0aAorPGNvbnN0YW50PlZJRElPQ19TX0NUUkw8L2NvbnN0YW50PiBhbmQgcmV0dXJuIGFuICZFSU5WQUw7IG9uIGEKKzxjb25zdGFudD5WSURJT0NfR19DVFJMPC9jb25zdGFudD4gYXR0ZW1wdC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ1RSTF9UWVBFX0lOVEVHRVI2NDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmFueTwvZW50cnk+CisJICAgIDxlbnRyeT5hbnk8L2VudHJ5PgorCSAgICA8ZW50cnk+YW55PC9lbnRyeT4KKwkgICAgPGVudHJ5PkEgNjQtYml0IGludGVnZXIgdmFsdWVkIGNvbnRyb2wuIE1pbmltdW0sIG1heGltdW0KK2FuZCBzdGVwIHNpemUgY2Fubm90IGJlIHF1ZXJpZWQgdXNpbmcgPGNvbnN0YW50PlZJRElPQ19RVUVSWUNUUkw8L2NvbnN0YW50Pi4KK09ubHkgPGNvbnN0YW50PlZJRElPQ19RVUVSWV9FWFRfQ1RSTDwvY29uc3RhbnQ+IGNhbiByZXRyaWV2ZSB0aGUgNjQtYml0CittaW4vbWF4L3N0ZXAgdmFsdWVzLCB0aGV5IHNob3VsZCBiZSBpbnRlcnByZXRlZCBhcyBuL2Egd2hlbiB1c2luZworPGNvbnN0YW50PlZJRElPQ19RVUVSWUNUUkw8L2NvbnN0YW50Pi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ1RSTF9UWVBFX1NUUklORzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PiZnZTsgMDwvZW50cnk+CisJICAgIDxlbnRyeT4mZ2U7IDE8L2VudHJ5PgorCSAgICA8ZW50cnk+JmdlOyAwPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHN0cmluZyBsZW5ndGhzLiBUaGUgc3RlcCBzaXplCittZWFucyB0aGF0IHRoZSBzdHJpbmcgbXVzdCBiZSAobWluaW11bSArIE4gKiBzdGVwKSBjaGFyYWN0ZXJzIGxvbmcgZm9yCitOICZnZTsgMC4gVGhlc2UgbGVuZ3RocyBkbyBub3QgaW5jbHVkZSB0aGUgdGVybWluYXRpbmcgemVybywgc28gaW4gb3JkZXIgdG8KK3Bhc3MgYSBzdHJpbmcgb2YgbGVuZ3RoIDggdG8gJlZJRElPQy1TLUVYVC1DVFJMUzsgeW91IG5lZWQgdG8gc2V0IHRoZQorPHN0cnVjdGZpZWxkPnNpemU8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiAmdjRsMi1leHQtY29udHJvbDsgdG8gOS4gRm9yICZWSURJT0MtRy1FWFQtQ1RSTFM7IHlvdSBjYW4KK3NldCB0aGUgPHN0cnVjdGZpZWxkPnNpemU8L3N0cnVjdGZpZWxkPiBmaWVsZCB0byA8c3RydWN0ZmllbGQ+bWF4aW11bTwvc3RydWN0ZmllbGQ+ICsgMS4KK1doaWNoIGNoYXJhY3RlciBlbmNvZGluZyBpcyB1c2VkIHdpbGwgZGVwZW5kIG9uIHRoZSBzdHJpbmcgY29udHJvbCBpdHNlbGYgYW5kCitzaG91bGQgYmUgcGFydCBvZiB0aGUgY29udHJvbCBkb2N1bWVudGF0aW9uLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DVFJMX1RZUEVfQ1RSTF9DTEFTUzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pm4vYTwvZW50cnk+CisJICAgIDxlbnRyeT5uL2E8L2VudHJ5PgorCSAgICA8ZW50cnk+bi9hPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoaXMgaXMgbm90IGEgY29udHJvbC4gV2hlbgorPGNvbnN0YW50PlZJRElPQ19RVUVSWUNUUkw8L2NvbnN0YW50PiBpcyBjYWxsZWQgd2l0aCBhIGNvbnRyb2wgSUQKK2VxdWFsIHRvIGEgY29udHJvbCBjbGFzcyBjb2RlIChzZWUgPHhyZWYgbGlua2VuZD0iY3RybC1jbGFzcyIgLz4pICsgMSwgdGhlCitpb2N0bCByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBjb250cm9sIGNsYXNzIGFuZCB0aGlzIGNvbnRyb2wgdHlwZS4KK09sZGVyIGRyaXZlcnMgd2hpY2ggZG8gbm90IHN1cHBvcnQgdGhpcyBmZWF0dXJlIHJldHVybiBhbgorJkVJTlZBTDsuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NUUkxfVFlQRV9VODwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmFueTwvZW50cnk+CisJICAgIDxlbnRyeT5hbnk8L2VudHJ5PgorCSAgICA8ZW50cnk+YW55PC9lbnRyeT4KKwkgICAgPGVudHJ5PkFuIHVuc2lnbmVkIDgtYml0IHZhbHVlZCBjb250cm9sIHJhbmdpbmcgZnJvbSBtaW5pbXVtIHRvCittYXhpbXVtIGluY2x1c2l2ZS4gVGhlIHN0ZXAgdmFsdWUgaW5kaWNhdGVzIHRoZSBpbmNyZW1lbnQgYmV0d2VlbgordmFsdWVzLgorPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NUUkxfVFlQRV9VMTY8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT5hbnk8L2VudHJ5PgorCSAgICA8ZW50cnk+YW55PC9lbnRyeT4KKwkgICAgPGVudHJ5PmFueTwvZW50cnk+CisJICAgIDxlbnRyeT5BbiB1bnNpZ25lZCAxNi1iaXQgdmFsdWVkIGNvbnRyb2wgcmFuZ2luZyBmcm9tIG1pbmltdW0gdG8KK21heGltdW0gaW5jbHVzaXZlLiBUaGUgc3RlcCB2YWx1ZSBpbmRpY2F0ZXMgdGhlIGluY3JlbWVudCBiZXR3ZWVuCit2YWx1ZXMuCis8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ1RSTF9UWVBFX1UzMjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PmFueTwvZW50cnk+CisJICAgIDxlbnRyeT5hbnk8L2VudHJ5PgorCSAgICA8ZW50cnk+YW55PC9lbnRyeT4KKwkgICAgPGVudHJ5PkFuIHVuc2lnbmVkIDMyLWJpdCB2YWx1ZWQgY29udHJvbCByYW5naW5nIGZyb20gbWluaW11bSB0bworbWF4aW11bSBpbmNsdXNpdmUuIFRoZSBzdGVwIHZhbHVlIGluZGljYXRlcyB0aGUgaW5jcmVtZW50IGJldHdlZW4KK3ZhbHVlcy4KKzwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iY29udHJvbC1mbGFncyI+CisgICAgICA8dGl0bGU+Q29udHJvbCBGbGFnczwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1kZWY7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DVFJMX0ZMQUdfRElTQUJMRUQ8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDE8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBjb250cm9sIGlzIHBlcm1hbmVudGx5IGRpc2FibGVkIGFuZCBzaG91bGQgYmUKK2lnbm9yZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBBbnkgYXR0ZW1wdCB0byBjaGFuZ2UgdGhlIGNvbnRyb2wgd2lsbAorcmVzdWx0IGluIGFuICZFSU5WQUw7LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DVFJMX0ZMQUdfR1JBQkJFRDwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGlzIGNvbnRyb2wgaXMgdGVtcG9yYXJpbHkgdW5jaGFuZ2VhYmxlLCBmb3IKK2V4YW1wbGUgYmVjYXVzZSBhbm90aGVyIGFwcGxpY2F0aW9uIHRvb2sgb3ZlciBjb250cm9sIG9mIHRoZQorcmVzcGVjdGl2ZSByZXNvdXJjZS4gU3VjaCBjb250cm9scyBtYXkgYmUgZGlzcGxheWVkIHNwZWNpYWxseSBpbiBhCit1c2VyIGludGVyZmFjZS4gQXR0ZW1wdHMgdG8gY2hhbmdlIHRoZSBjb250cm9sIG1heSByZXN1bHQgaW4gYW4KKyZFQlVTWTsuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NUUkxfRkxBR19SRUFEX09OTFk8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDQ8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBjb250cm9sIGlzIHBlcm1hbmVudGx5IHJlYWRhYmxlIG9ubHkuIEFueQorYXR0ZW1wdCB0byBjaGFuZ2UgdGhlIGNvbnRyb2wgd2lsbCByZXN1bHQgaW4gYW4gJkVJTlZBTDsuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NUUkxfRkxBR19VUERBVEU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDg8L2VudHJ5PgorCSAgICA8ZW50cnk+QSBoaW50IHRoYXQgY2hhbmdpbmcgdGhpcyBjb250cm9sIG1heSBhZmZlY3QgdGhlCit2YWx1ZSBvZiBvdGhlciBjb250cm9scyB3aXRoaW4gdGhlIHNhbWUgY29udHJvbCBjbGFzcy4gQXBwbGljYXRpb25zCitzaG91bGQgdXBkYXRlIHRoZWlyIHVzZXIgaW50ZXJmYWNlIGFjY29yZGluZ2x5LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT48Y29uc3RhbnQ+VjRMMl9DVFJMX0ZMQUdfSU5BQ1RJVkU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMTA8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhpcyBjb250cm9sIGlzIG5vdCBhcHBsaWNhYmxlIHRvIHRoZSBjdXJyZW50Citjb25maWd1cmF0aW9uIGFuZCBzaG91bGQgYmUgZGlzcGxheWVkIGFjY29yZGluZ2x5IGluIGEgdXNlciBpbnRlcmZhY2UuCitGb3IgZXhhbXBsZSB0aGUgZmxhZyBtYXkgYmUgc2V0IG9uIGEgTVBFRyBhdWRpbyBsZXZlbCAyIGJpdHJhdGUKK2NvbnRyb2wgd2hlbiBNUEVHIGF1ZGlvIGVuY29kaW5nIGxldmVsIDEgd2FzIHNlbGVjdGVkIHdpdGggYW5vdGhlcgorY29udHJvbC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ1RSTF9GTEFHX1NMSURFUjwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAyMDwvZW50cnk+CisJICAgIDxlbnRyeT5BIGhpbnQgdGhhdCB0aGlzIGNvbnRyb2wgaXMgYmVzdCByZXByZXNlbnRlZCBhcyBhCitzbGlkZXItbGlrZSBlbGVtZW50IGluIGEgdXNlciBpbnRlcmZhY2UuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NUUkxfRkxBR19XUklURV9PTkxZPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMDQwPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoaXMgY29udHJvbCBpcyBwZXJtYW5lbnRseSB3cml0YWJsZSBvbmx5LiBBbnkKK2F0dGVtcHQgdG8gcmVhZCB0aGUgY29udHJvbCB3aWxsIHJlc3VsdCBpbiBhbiAmRUFDQ0VTOyBlcnJvciBjb2RlLiBUaGlzCitmbGFnIGlzIHR5cGljYWxseSBwcmVzZW50IGZvciByZWxhdGl2ZSBjb250cm9scyBvciBhY3Rpb24gY29udHJvbHMgd2hlcmUKK3dyaXRpbmcgYSB2YWx1ZSB3aWxsIGNhdXNlIHRoZSBkZXZpY2UgdG8gY2Fycnkgb3V0IGEgZ2l2ZW4gYWN0aW9uCisoJmVnOyBtb3RvciBjb250cm9sKSBidXQgbm8gbWVhbmluZ2Z1bCB2YWx1ZSBjYW4gYmUgcmV0dXJuZWQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0NUUkxfRkxBR19WT0xBVElMRTwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDA4MDwvZW50cnk+CisJICAgIDxlbnRyeT5UaGlzIGNvbnRyb2wgaXMgdm9sYXRpbGUsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIHZhbHVlIG9mIHRoZSBjb250cm9sCitjaGFuZ2VzIGNvbnRpbnVvdXNseS4gQSB0eXBpY2FsIGV4YW1wbGUgd291bGQgYmUgdGhlIGN1cnJlbnQgZ2FpbiB2YWx1ZSBpZiB0aGUgZGV2aWNlCitpcyBpbiBhdXRvLWdhaW4gbW9kZS4gSW4gc3VjaCBhIGNhc2UgdGhlIGhhcmR3YXJlIGNhbGN1bGF0ZXMgdGhlIGdhaW4gdmFsdWUgYmFzZWQgb24KK3RoZSBsaWdodGluZyBjb25kaXRpb25zIHdoaWNoIGNhbiBjaGFuZ2Ugb3ZlciB0aW1lLiBOb3RlIHRoYXQgc2V0dGluZyBhIG5ldyB2YWx1ZSBmb3IKK2Egdm9sYXRpbGUgY29udHJvbCB3aWxsIGhhdmUgbm8gZWZmZWN0IGFuZCBubyA8Y29uc3RhbnQ+VjRMMl9FVkVOVF9DVFJMX0NIX1ZBTFVFPC9jb25zdGFudD4KK3dpbGwgYmUgc2VudCwgdW5sZXNzIHRoZSA8Y29uc3RhbnQ+VjRMMl9DVFJMX0ZMQUdfRVhFQ1VURV9PTl9XUklURTwvY29uc3RhbnQ+IGZsYWcKKyhzZWUgYmVsb3cpIGlzIGFsc28gc2V0LiBPdGhlcndpc2UgdGhlIG5ldyB2YWx1ZSB3aWxsIGp1c3QgYmUgaWdub3JlZC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ1RSTF9GTEFHX0hBU19QQVlMT0FEPC9jb25zdGFudD48L2VudHJ5PgorCSAgICA8ZW50cnk+MHgwMTAwPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoaXMgY29udHJvbCBoYXMgYSBwb2ludGVyIHR5cGUsIHNvIGl0cyB2YWx1ZSBoYXMgdG8gYmUgYWNjZXNzZWQKK3VzaW5nIG9uZSBvZiB0aGUgcG9pbnRlciBmaWVsZHMgb2YgJnY0bDItZXh0LWNvbnRyb2w7LiBUaGlzIGZsYWcgaXMgc2V0IGZvciBjb250cm9scwordGhhdCBhcmUgYW4gYXJyYXksIHN0cmluZywgb3IgaGF2ZSBhIGNvbXBvdW5kIHR5cGUuIEluIGFsbCBjYXNlcyB5b3UgaGF2ZSB0byBzZXQgYQorcG9pbnRlciB0byBtZW1vcnkgY29udGFpbmluZyB0aGUgcGF5bG9hZCBvZiB0aGUgY29udHJvbC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+PGNvbnN0YW50PlY0TDJfQ1RSTF9GTEFHX0VYRUNVVEVfT05fV1JJVEU8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAyMDA8L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIHZhbHVlIHByb3ZpZGVkIHRvIHRoZSBjb250cm9sIHdpbGwgYmUgcHJvcGFnYXRlZCB0byB0aGUgZHJpdmVyCitldmVuIGlmIGl0IHJlbWFpbnMgY29uc3RhbnQuIFRoaXMgaXMgcmVxdWlyZWQgd2hlbiB0aGUgY29udHJvbCByZXByZXNlbnRzIGFuIGFjdGlvbgorb24gdGhlIGhhcmR3YXJlLiBGb3IgZXhhbXBsZTogY2xlYXJpbmcgYW4gZXJyb3IgZmxhZyBvciB0cmlnZ2VyaW5nIHRoZSBmbGFzaC4gQWxsIHRoZQorY29udHJvbHMgb2YgdGhlIHR5cGUgPGNvbnN0YW50PlY0TDJfQ1RSTF9UWVBFX0JVVFRPTjwvY29uc3RhbnQ+IGhhdmUgdGhpcyBmbGFnIHNldC48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgJnY0bDItcXVlcnljdHJsOyA8c3RydWN0ZmllbGQ+aWQ8L3N0cnVjdGZpZWxkPgoraXMgaW52YWxpZC4gVGhlICZ2NGwyLXF1ZXJ5bWVudTsgPHN0cnVjdGZpZWxkPmlkPC9zdHJ1Y3RmaWVsZD4gaXMKK2ludmFsaWQgb3IgPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4gaXMgb3V0IG9mIHJhbmdlIChsZXNzIHRoYW4KKzxzdHJ1Y3RmaWVsZD5taW5pbXVtPC9zdHJ1Y3RmaWVsZD4gb3IgZ3JlYXRlciB0aGFuIDxzdHJ1Y3RmaWVsZD5tYXhpbXVtPC9zdHJ1Y3RmaWVsZD4pCitvciB0aGlzIHBhcnRpY3VsYXIgbWVudSBpdGVtIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlci48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVBQ0NFUzwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5BbiBhdHRlbXB0IHdhcyBtYWRlIHRvIHJlYWQgYSB3cml0ZS1vbmx5IGNvbnRyb2wuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1xdWVyeXN0ZC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1xdWVyeXN0ZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjIyMzQ4NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLXF1ZXJ5c3RkLnhtbApAQCAtMCwwICsxLDc1IEBACis8cmVmZW50cnkgaWQ9InZpZGlvYy1xdWVyeXN0ZCI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19RVUVSWVNURDwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX1FVRVJZU1REPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPlNlbnNlIHRoZSB2aWRlbyBzdGFuZGFyZCByZWNlaXZlZCBieSB0aGUgY3VycmVudAoraW5wdXQ8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+djRsMl9zdGRfaWQgKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKwk8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfUVVFUllTVEQ8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPlRoZSBoYXJkd2FyZSBtYXkgYmUgYWJsZSB0byBkZXRlY3QgdGhlIGN1cnJlbnQgdmlkZW8KK3N0YW5kYXJkIGF1dG9tYXRpY2FsbHkuIFRvIGRvIHNvLCBhcHBsaWNhdGlvbnMgY2FsbCA8Y29uc3RhbnQ+CitWSURJT0NfUVVFUllTVEQ8L2NvbnN0YW50PiB3aXRoIGEgcG9pbnRlciB0byBhICZ2NGwyLXN0ZC1pZDsgdHlwZS4gVGhlCitkcml2ZXIgc3RvcmVzIGhlcmUgYSBzZXQgb2YgY2FuZGlkYXRlcywgdGhpcyBjYW4gYmUgYSBzaW5nbGUgZmxhZyBvciBhCitzZXQgb2Ygc3VwcG9ydGVkIHN0YW5kYXJkcyBpZiBmb3IgZXhhbXBsZSB0aGUgaGFyZHdhcmUgY2FuIG9ubHkKK2Rpc3Rpbmd1aXNoIGJldHdlZW4gNTAgYW5kIDYwIEh6IHN5c3RlbXMuIElmIG5vIHNpZ25hbCB3YXMgZGV0ZWN0ZWQsCit0aGVuIHRoZSBkcml2ZXIgd2lsbCByZXR1cm4gVjRMMl9TVERfVU5LTk9XTi4gV2hlbiBkZXRlY3Rpb24gaXMgbm90Citwb3NzaWJsZSBvciBmYWlscywgdGhlIHNldCBtdXN0IGNvbnRhaW4gYWxsIHN0YW5kYXJkcyBzdXBwb3J0ZWQgYnkgdGhlCitjdXJyZW50IHZpZGVvIGlucHV0IG9yIG91dHB1dC48L3BhcmE+CisKKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVOT0RBVEE8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+U3RhbmRhcmQgdmlkZW8gdGltaW5ncyBhcmUgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBpbnB1dCBvciBvdXRwdXQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1yZXFidWZzLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLXJlcWJ1ZnMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmMTkzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1yZXFidWZzLnhtbApAQCAtMCwwICsxLDEzNyBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2MtcmVxYnVmcyI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19SRVFCVUZTPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5WSURJT0NfUkVRQlVGUzwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5Jbml0aWF0ZSBNZW1vcnkgTWFwcGluZyBvciBVc2VyIFBvaW50ZXIgSS9PPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCB2NGwyX3JlcXVlc3RidWZmZXJzICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfUkVRQlVGUzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RGVzY3JpcHRpb248L3RpdGxlPgorCis8cGFyYT5UaGlzIGlvY3RsIGlzIHVzZWQgdG8gaW5pdGlhdGUgPGxpbmsgbGlua2VuZD0ibW1hcCI+bWVtb3J5IG1hcHBlZDwvbGluaz4sCis8bGluayBsaW5rZW5kPSJ1c2VycCI+dXNlciBwb2ludGVyPC9saW5rPiBvciA8bGluaworbGlua2VuZD0iZG1hYnVmIj5ETUFCVUY8L2xpbms+IGJhc2VkIEkvTy4gIE1lbW9yeSBtYXBwZWQgYnVmZmVycyBhcmUgbG9jYXRlZCBpbgorZGV2aWNlIG1lbW9yeSBhbmQgbXVzdCBiZSBhbGxvY2F0ZWQgd2l0aCB0aGlzIGlvY3RsIGJlZm9yZSB0aGV5IGNhbiBiZSBtYXBwZWQKK2ludG8gdGhlIGFwcGxpY2F0aW9uJ3MgYWRkcmVzcyBzcGFjZS4gVXNlciBidWZmZXJzIGFyZSBhbGxvY2F0ZWQgYnkKK2FwcGxpY2F0aW9ucyB0aGVtc2VsdmVzLCBhbmQgdGhpcyBpb2N0bCBpcyBtZXJlbHkgdXNlZCB0byBzd2l0Y2ggdGhlIGRyaXZlcgoraW50byB1c2VyIHBvaW50ZXIgSS9PIG1vZGUgYW5kIHRvIHNldHVwIHNvbWUgaW50ZXJuYWwgc3RydWN0dXJlcy4KK1NpbWlsYXJseSwgRE1BQlVGIGJ1ZmZlcnMgYXJlIGFsbG9jYXRlZCBieSBhcHBsaWNhdGlvbnMgdGhyb3VnaCBhIGRldmljZQorZHJpdmVyLCBhbmQgdGhpcyBpb2N0bCBvbmx5IGNvbmZpZ3VyZXMgdGhlIGRyaXZlciBpbnRvIERNQUJVRiBJL08gbW9kZSB3aXRob3V0CitwZXJmb3JtaW5nIGFueSBkaXJlY3QgYWxsb2NhdGlvbi48L3BhcmE+CisKKyAgICA8cGFyYT5UbyBhbGxvY2F0ZSBkZXZpY2UgYnVmZmVycyBhcHBsaWNhdGlvbnMgaW5pdGlhbGl6ZSBhbGwgZmllbGRzIG9mIHRoZQorPHN0cnVjdG5hbWU+djRsMl9yZXF1ZXN0YnVmZmVyczwvc3RydWN0bmFtZT4gc3RydWN0dXJlLiAgVGhleSBzZXQgdGhlCis8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IGZpZWxkIHRvIHRoZSByZXNwZWN0aXZlIHN0cmVhbSBvciBidWZmZXIgdHlwZSwKK3RoZSA8c3RydWN0ZmllbGQ+Y291bnQ8L3N0cnVjdGZpZWxkPiBmaWVsZCB0byB0aGUgZGVzaXJlZCBudW1iZXIgb2YgYnVmZmVycywKKzxzdHJ1Y3RmaWVsZD5tZW1vcnk8L3N0cnVjdGZpZWxkPiBtdXN0IGJlIHNldCB0byB0aGUgcmVxdWVzdGVkIEkvTyBtZXRob2QgYW5kCit0aGUgPHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD4gYXJyYXkgbXVzdCBiZSB6ZXJvZWQuIFdoZW4gdGhlIGlvY3RsIGlzCitjYWxsZWQgd2l0aCBhIHBvaW50ZXIgdG8gdGhpcyBzdHJ1Y3R1cmUgdGhlIGRyaXZlciB3aWxsIGF0dGVtcHQgdG8gYWxsb2NhdGUgdGhlCityZXF1ZXN0ZWQgbnVtYmVyIG9mIGJ1ZmZlcnMgYW5kIGl0IHN0b3JlcyB0aGUgYWN0dWFsIG51bWJlciBhbGxvY2F0ZWQgaW4gdGhlCis8c3RydWN0ZmllbGQ+Y291bnQ8L3N0cnVjdGZpZWxkPiBmaWVsZC4gSXQgY2FuIGJlIHNtYWxsZXIgdGhhbiB0aGUgbnVtYmVyCityZXF1ZXN0ZWQsIGV2ZW4gemVybywgd2hlbiB0aGUgZHJpdmVyIHJ1bnMgb3V0IG9mIGZyZWUgbWVtb3J5LiBBIGxhcmdlciBudW1iZXIKK2lzIGFsc28gcG9zc2libGUgd2hlbiB0aGUgZHJpdmVyIHJlcXVpcmVzIG1vcmUgYnVmZmVycyB0byBmdW5jdGlvbiBjb3JyZWN0bHkuCitGb3IgZXhhbXBsZSB2aWRlbyBvdXRwdXQgcmVxdWlyZXMgYXQgbGVhc3QgdHdvIGJ1ZmZlcnMsIG9uZSBkaXNwbGF5ZWQgYW5kIG9uZQorZmlsbGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi48L3BhcmE+CisgICAgPHBhcmE+V2hlbiB0aGUgSS9PIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIHRoZSBpb2N0bAorcmV0dXJucyBhbiAmRUlOVkFMOy48L3BhcmE+CisKKyAgICA8cGFyYT5BcHBsaWNhdGlvbnMgY2FuIGNhbGwgPGNvbnN0YW50PlZJRElPQ19SRVFCVUZTPC9jb25zdGFudD4KK2FnYWluIHRvIGNoYW5nZSB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMsIGhvd2V2ZXIgdGhpcyBjYW5ub3Qgc3VjY2VlZAord2hlbiBhbnkgYnVmZmVycyBhcmUgc3RpbGwgbWFwcGVkLiBBIDxzdHJ1Y3RmaWVsZD5jb3VudDwvc3RydWN0ZmllbGQ+Cit2YWx1ZSBvZiB6ZXJvIGZyZWVzIGFsbCBidWZmZXJzLCBhZnRlciBhYm9ydGluZyBvciBmaW5pc2hpbmcgYW55IERNQQoraW4gcHJvZ3Jlc3MsIGFuIGltcGxpY2l0ICZWSURJT0MtU1RSRUFNT0ZGOy4gPCEtLSBtaHM6IEkgc2VlIG5vCityZWFzb24gd2h5IG11bm1hcCgpcGluZyBvbmUgb3IgZXZlbiBhbGwgYnVmZmVycyBtdXN0IGltcGx5CitzdHJlYW1vZmYuLS0+PC9wYXJhPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLXJlcXVlc3RidWZmZXJzIj4KKyAgICAgIDx0aXRsZT5zdHJ1Y3QgPHN0cnVjdG5hbWU+djRsMl9yZXF1ZXN0YnVmZmVyczwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3Mtc3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmNvdW50PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIG51bWJlciBvZiBidWZmZXJzIHJlcXVlc3RlZCBvciBncmFudGVkLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlR5cGUgb2YgdGhlIHN0cmVhbSBvciBidWZmZXJzLCB0aGlzIGlzIHRoZSBzYW1lCithcyB0aGUgJnY0bDItZm9ybWF0OyA8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+IGZpZWxkLiBTZWUgPHhyZWYKKwkJbGlua2VuZD0idjRsMi1idWYtdHlwZSIgLz4gZm9yIHZhbGlkIHZhbHVlcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm1lbW9yeTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkFwcGxpY2F0aW9ucyBzZXQgdGhpcyBmaWVsZCB0bworPGNvbnN0YW50PlY0TDJfTUVNT1JZX01NQVA8L2NvbnN0YW50PiwKKzxjb25zdGFudD5WNEwyX01FTU9SWV9ETUFCVUY8L2NvbnN0YW50PiBvcgorPGNvbnN0YW50PlY0TDJfTUVNT1JZX1VTRVJQVFI8L2NvbnN0YW50Pi4gU2VlIDx4cmVmIGxpbmtlbmQ9InY0bDItbWVtb3J5IgorLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+WzJdPC9lbnRyeT4KKwkgICAgPGVudHJ5PkEgcGxhY2UgaG9sZGVyIGZvciBmdXR1cmUgZXh0ZW5zaW9ucy4gRHJpdmVycyBhbmQgYXBwbGljYXRpb25zCittdXN0IHNldCB0aGUgYXJyYXkgdG8gemVyby48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgYnVmZmVyIHR5cGUgKDxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gZmllbGQpIG9yIHRoZQorcmVxdWVzdGVkIEkvTyBtZXRob2QgKDxzdHJ1Y3RmaWVsZD5tZW1vcnk8L3N0cnVjdGZpZWxkPikgaXMgbm90CitzdXBwb3J0ZWQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1zLWh3LWZyZXEtc2Vlay54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1zLWh3LWZyZXEtc2Vlay54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVmYzRjNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLXMtaHctZnJlcS1zZWVrLnhtbApAQCAtMCwwICsxLDE4OCBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2Mtcy1ody1mcmVxLXNlZWsiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBWSURJT0NfU19IV19GUkVRX1NFRUs8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPlZJRElPQ19TX0hXX0ZSRVFfU0VFSzwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5QZXJmb3JtIGEgaGFyZHdhcmUgZnJlcXVlbmN5IHNlZWs8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c3RydWN0IHY0bDJfaHdfZnJlcV9zZWVrCisqPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPiZmZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VklESU9DX1NfSFdfRlJFUV9TRUVLPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5TdGFydCBhIGhhcmR3YXJlIGZyZXF1ZW5jeSBzZWVrIGZyb20gdGhlIGN1cnJlbnQgZnJlcXVlbmN5LgorVG8gZG8gdGhpcyBhcHBsaWNhdGlvbnMgaW5pdGlhbGl6ZSB0aGUgPHN0cnVjdGZpZWxkPnR1bmVyPC9zdHJ1Y3RmaWVsZD4sCis8c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+LCA8c3RydWN0ZmllbGQ+c2Vla191cHdhcmQ8L3N0cnVjdGZpZWxkPiwKKzxzdHJ1Y3RmaWVsZD53cmFwX2Fyb3VuZDwvc3RydWN0ZmllbGQ+LCA8c3RydWN0ZmllbGQ+c3BhY2luZzwvc3RydWN0ZmllbGQ+LAorPHN0cnVjdGZpZWxkPnJhbmdlbG93PC9zdHJ1Y3RmaWVsZD4gYW5kIDxzdHJ1Y3RmaWVsZD5yYW5nZWhpZ2g8L3N0cnVjdGZpZWxkPgorZmllbGRzLCBhbmQgemVybyBvdXQgdGhlIDxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+IGFycmF5IG9mIGEKKyZ2NGwyLWh3LWZyZXEtc2VlazsgYW5kIGNhbGwgdGhlIDxjb25zdGFudD5WSURJT0NfU19IV19GUkVRX1NFRUs8L2NvbnN0YW50PgoraW9jdGwgd2l0aCBhIHBvaW50ZXIgdG8gdGhpcyBzdHJ1Y3R1cmUuPC9wYXJhPgorCisgICAgPHBhcmE+VGhlIDxzdHJ1Y3RmaWVsZD5yYW5nZWxvdzwvc3RydWN0ZmllbGQ+IGFuZAorPHN0cnVjdGZpZWxkPnJhbmdlaGlnaDwvc3RydWN0ZmllbGQ+IGZpZWxkcyBjYW4gYmUgc2V0IHRvIGEgbm9uLXplcm8gdmFsdWUgdG8KK3RlbGwgdGhlIGRyaXZlciB0byBzZWFyY2ggYSBzcGVjaWZpYyBiYW5kLiBJZiB0aGUgJnY0bDItdHVuZXI7Cis8c3RydWN0ZmllbGQ+Y2FwYWJpbGl0eTwvc3RydWN0ZmllbGQ+IGZpZWxkIGhhcyB0aGUKKzxjb25zdGFudD5WNEwyX1RVTkVSX0NBUF9IV1NFRUtfUFJPR19MSU08L2NvbnN0YW50PiBmbGFnIHNldCwgdGhlc2UgdmFsdWVzCittdXN0IGZhbGwgd2l0aGluIG9uZSBvZiB0aGUgYmFuZHMgcmV0dXJuZWQgYnkgJlZJRElPQy1FTlVNLUZSRVEtQkFORFM7LiBJZgordGhlIDxjb25zdGFudD5WNEwyX1RVTkVSX0NBUF9IV1NFRUtfUFJPR19MSU08L2NvbnN0YW50PiBmbGFnIGlzIG5vdCBzZXQsCit0aGVuIHRoZXNlIHZhbHVlcyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhvc2Ugb2Ygb25lIG9mIHRoZSBiYW5kcyByZXR1cm5lZCBieQorJlZJRElPQy1FTlVNLUZSRVEtQkFORFM7LiBJZiB0aGUgY3VycmVudCBmcmVxdWVuY3kgb2YgdGhlIHR1bmVyIGRvZXMgbm90IGZhbGwKK3dpdGhpbiB0aGUgc2VsZWN0ZWQgYmFuZCBpdCB3aWxsIGJlIGNsYW1wZWQgdG8gZml0IGluIHRoZSBiYW5kIGJlZm9yZSB0aGUKK3NlZWsgaXMgc3RhcnRlZC48L3BhcmE+CisKKyAgICA8cGFyYT5JZiBhbiBlcnJvciBpcyByZXR1cm5lZCwgdGhlbiB0aGUgb3JpZ2luYWwgZnJlcXVlbmN5IHdpbGwKKyAgICBiZSByZXN0b3JlZC48L3BhcmE+CisKKyAgICA8cGFyYT5UaGlzIGlvY3RsIGlzIHN1cHBvcnRlZCBpZiB0aGUgPGNvbnN0YW50PlY0TDJfQ0FQX0hXX0ZSRVFfU0VFSzwvY29uc3RhbnQ+IGNhcGFiaWxpdHkgaXMgc2V0LjwvcGFyYT4KKworICAgIDxwYXJhPklmIHRoaXMgaW9jdGwgaXMgY2FsbGVkIGZyb20gYSBub24tYmxvY2tpbmcgZmlsZWhhbmRsZSwgdGhlbiAmRUFHQUlOOyBpcworICAgIHJldHVybmVkIGFuZCBubyBzZWVrIHRha2VzIHBsYWNlLjwvcGFyYT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1ody1mcmVxLXNlZWsiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX2h3X2ZyZXFfc2Vlazwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKwkmY3Mtc3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnR1bmVyPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIHR1bmVyIGluZGV4IG51bWJlci4gVGhpcyBpcyB0aGUKK3NhbWUgdmFsdWUgYXMgaW4gdGhlICZ2NGwyLWlucHV0OyA8c3RydWN0ZmllbGQ+dHVuZXI8L3N0cnVjdGZpZWxkPgorZmllbGQgYW5kIHRoZSAmdjRsMi10dW5lcjsgPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4gZmllbGQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+VGhlIHR1bmVyIHR5cGUuIFRoaXMgaXMgdGhlIHNhbWUgdmFsdWUgYXMgaW4gdGhlCismdjRsMi10dW5lcjsgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiBmaWVsZC4gU2VlIDx4cmVmCisJICAgIGxpbmtlbmQ9InY0bDItdHVuZXItdHlwZSIgLz48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnNlZWtfdXB3YXJkPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+SWYgbm9uLXplcm8sIHNlZWsgdXB3YXJkIGZyb20gdGhlIGN1cnJlbnQgZnJlcXVlbmN5LCBlbHNlIHNlZWsgZG93bndhcmQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD53cmFwX2Fyb3VuZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PklmIG5vbi16ZXJvLCB3cmFwIGFyb3VuZCB3aGVuIGF0IHRoZSBlbmQgb2YgdGhlIGZyZXF1ZW5jeSByYW5nZSwgZWxzZSBzdG9wIHNlZWtpbmcuCisJICAgIFRoZSAmdjRsMi10dW5lcjsgPHN0cnVjdGZpZWxkPmNhcGFiaWxpdHk8L3N0cnVjdGZpZWxkPiBmaWVsZCB3aWxsIHRlbGwgeW91IHdoYXQgdGhlCisJICAgIGhhcmR3YXJlIHN1cHBvcnRzLgorCSAgICA8L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnNwYWNpbmc8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5JZiBub24temVybywgZGVmaW5lcyB0aGUgaGFyZHdhcmUgc2VlayByZXNvbHV0aW9uIGluIEh6LiBUaGUgZHJpdmVyIHNlbGVjdHMgdGhlIG5lYXJlc3QgdmFsdWUgdGhhdCBpcyBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZS4gSWYgc3BhY2luZyBpcyB6ZXJvIGEgcmVhc29uYWJsZSBkZWZhdWx0IHZhbHVlIGlzIHVzZWQuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yYW5nZWxvdzwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PklmIG5vbi16ZXJvLCB0aGUgbG93ZXN0IHR1bmFibGUgZnJlcXVlbmN5IG9mIHRoZSBiYW5kIHRvCitzZWFyY2ggaW4gdW5pdHMgb2YgNjIuNSBrSHosIG9yIGlmIHRoZSAmdjRsMi10dW5lcjsKKzxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXR5PC9zdHJ1Y3RmaWVsZD4gZmllbGQgaGFzIHRoZQorPGNvbnN0YW50PlY0TDJfVFVORVJfQ0FQX0xPVzwvY29uc3RhbnQ+IGZsYWcgc2V0LCBpbiB1bml0cyBvZiA2Mi41IEh6IG9yIGlmIHRoZSAmdjRsMi10dW5lcjsKKzxzdHJ1Y3RmaWVsZD5jYXBhYmlsaXR5PC9zdHJ1Y3RmaWVsZD4gZmllbGQgaGFzIHRoZQorPGNvbnN0YW50PlY0TDJfVFVORVJfQ0FQXzFIWjwvY29uc3RhbnQ+IGZsYWcgc2V0LCBpbiB1bml0cyBvZiAxIEh6LgorSWYgPHN0cnVjdGZpZWxkPnJhbmdlbG93PC9zdHJ1Y3RmaWVsZD4gaXMgemVybyBhIHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZQoraXMgdXNlZC48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJhbmdlaGlnaDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PklmIG5vbi16ZXJvLCB0aGUgaGlnaGVzdCB0dW5hYmxlIGZyZXF1ZW5jeSBvZiB0aGUgYmFuZCB0bworc2VhcmNoIGluIHVuaXRzIG9mIDYyLjUga0h6LCBvciBpZiB0aGUgJnY0bDItdHVuZXI7Cis8c3RydWN0ZmllbGQ+Y2FwYWJpbGl0eTwvc3RydWN0ZmllbGQ+IGZpZWxkIGhhcyB0aGUKKzxjb25zdGFudD5WNEwyX1RVTkVSX0NBUF9MT1c8L2NvbnN0YW50PiBmbGFnIHNldCwgaW4gdW5pdHMgb2YgNjIuNSBIeiBvciBpZiB0aGUgJnY0bDItdHVuZXI7Cis8c3RydWN0ZmllbGQ+Y2FwYWJpbGl0eTwvc3RydWN0ZmllbGQ+IGZpZWxkIGhhcyB0aGUKKzxjb25zdGFudD5WNEwyX1RVTkVSX0NBUF8xSFo8L2NvbnN0YW50PiBmbGFnIHNldCwgaW4gdW5pdHMgb2YgMSBIei4KK0lmIDxzdHJ1Y3RmaWVsZD5yYW5nZWhpZ2g8L3N0cnVjdGZpZWxkPiBpcyB6ZXJvIGEgcmVhc29uYWJsZSBkZWZhdWx0IHZhbHVlCitpcyB1c2VkLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cmVzZXJ2ZWQ8L3N0cnVjdGZpZWxkPls1XTwvZW50cnk+CisJICAgIDxlbnRyeT5SZXNlcnZlZCBmb3IgZnV0dXJlIGV4dGVuc2lvbnMuIEFwcGxpY2F0aW9ucworCSAgICBtdXN0IHNldCB0aGUgYXJyYXkgdG8gemVyby48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgPHN0cnVjdGZpZWxkPnR1bmVyPC9zdHJ1Y3RmaWVsZD4gaW5kZXggaXMgb3V0IG9mCitib3VuZHMsIHRoZSA8c3RydWN0ZmllbGQ+d3JhcF9hcm91bmQ8L3N0cnVjdGZpZWxkPiB2YWx1ZSBpcyBub3Qgc3VwcG9ydGVkIG9yCitvbmUgb2YgdGhlIHZhbHVlcyBpbiB0aGUgPHN0cnVjdGZpZWxkPnR5cGU8L3N0cnVjdGZpZWxkPiwKKzxzdHJ1Y3RmaWVsZD5yYW5nZWxvdzwvc3RydWN0ZmllbGQ+IG9yIDxzdHJ1Y3RmaWVsZD5yYW5nZWhpZ2g8L3N0cnVjdGZpZWxkPgorZmllbGRzIGlzIHdyb25nLjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUFHQUlOPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPkF0dGVtcHRlZCB0byBjYWxsIDxjb25zdGFudD5WSURJT0NfU19IV19GUkVRX1NFRUs8L2NvbnN0YW50PgorCSAgd2l0aCB0aGUgZmlsZWhhbmRsZSBpbiBub24tYmxvY2tpbmcgbW9kZS48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVOT0RBVEE8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIGhhcmR3YXJlIHNlZWsgZm91bmQgbm8gY2hhbm5lbHMuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FQlVTWTwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5Bbm90aGVyIGhhcmR3YXJlIHNlZWsgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcy48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLXN0cmVhbW9uLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLXN0cmVhbW9uLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjJjNjNkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2Mtc3RyZWFtb24ueG1sCkBAIC0wLDAgKzEsMTI4IEBACis8cmVmZW50cnkgaWQ9InZpZGlvYy1zdHJlYW1vbiI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19TVFJFQU1PTiwgVklESU9DX1NUUkVBTU9GRjwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX1NUUkVBTU9OPC9yZWZuYW1lPgorICAgIDxyZWZuYW1lPlZJRElPQ19TVFJFQU1PRkY8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+U3RhcnQgb3Igc3RvcCBzdHJlYW1pbmcgSS9PPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmNvbnN0IGludCAqPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPiZmZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VklESU9DX1NUUkVBTU9OLCBWSURJT0NfU1RSRUFNT0ZGPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5UaGUgPGNvbnN0YW50PlZJRElPQ19TVFJFQU1PTjwvY29uc3RhbnQ+IGFuZAorPGNvbnN0YW50PlZJRElPQ19TVFJFQU1PRkY8L2NvbnN0YW50PiBpb2N0bCBzdGFydCBhbmQgc3RvcCB0aGUgY2FwdHVyZQorb3Igb3V0cHV0IHByb2Nlc3MgZHVyaW5nIHN0cmVhbWluZyAoPGxpbmsgbGlua2VuZD0ibW1hcCI+bWVtb3J5CittYXBwaW5nPC9saW5rPiwgPGxpbmsgbGlua2VuZD0idXNlcnAiPnVzZXIgcG9pbnRlcjwvbGluaz4gb3IKKzxsaW5rIGxpbmtlbmQ9ImRtYWJ1ZiI+RE1BQlVGPC9saW5rPikgSS9PLjwvcGFyYT4KKworICAgIDxwYXJhPkNhcHR1cmUgaGFyZHdhcmUgaXMgZGlzYWJsZWQgYW5kIG5vIGlucHV0CitidWZmZXJzIGFyZSBmaWxsZWQgKGlmIHRoZXJlIGFyZSBhbnkgZW1wdHkgYnVmZmVycyBpbiB0aGUgaW5jb21pbmcKK3F1ZXVlKSB1bnRpbCA8Y29uc3RhbnQ+VklESU9DX1NUUkVBTU9OPC9jb25zdGFudD4gaGFzIGJlZW4gY2FsbGVkLgorT3V0cHV0IGhhcmR3YXJlIGlzIGRpc2FibGVkIGFuZCBubyB2aWRlbyBzaWduYWwgaXMKK3Byb2R1Y2VkIHVudGlsIDxjb25zdGFudD5WSURJT0NfU1RSRUFNT048L2NvbnN0YW50PiBoYXMgYmVlbiBjYWxsZWQuCitUaGUgaW9jdGwgd2lsbCBzdWNjZWVkIHdoZW4gYXQgbGVhc3Qgb25lIG91dHB1dCBidWZmZXIgaXMgaW4gdGhlCitpbmNvbWluZyBxdWV1ZS48L3BhcmE+CisKKyAgICA8cGFyYT5NZW1vcnktdG8tbWVtb3J5IGRldmljZXMgd2lsbCBub3Qgc3RhcnQgdW50aWwKKzxjb25zdGFudD5WSURJT0NfU1RSRUFNT048L2NvbnN0YW50PiBoYXMgYmVlbiBjYWxsZWQgZm9yIGJvdGggdGhlIGNhcHR1cmUKK2FuZCBvdXRwdXQgc3RyZWFtIHR5cGVzLjwvcGFyYT4KKworICAgIDxwYXJhPklmIDxjb25zdGFudD5WSURJT0NfU1RSRUFNT048L2NvbnN0YW50PiBmYWlscyB0aGVuIGFueSBhbHJlYWR5CitxdWV1ZWQgYnVmZmVycyB3aWxsIHJlbWFpbiBxdWV1ZWQuPC9wYXJhPgorCisgICAgPHBhcmE+VGhlIDxjb25zdGFudD5WSURJT0NfU1RSRUFNT0ZGPC9jb25zdGFudD4gaW9jdGwsIGFwYXJ0IG9mCithYm9ydGluZyBvciBmaW5pc2hpbmcgYW55IERNQSBpbiBwcm9ncmVzcywgdW5sb2NrcyBhbnkgdXNlciBwb2ludGVyCitidWZmZXJzIGxvY2tlZCBpbiBwaHlzaWNhbCBtZW1vcnksIGFuZCBpdCByZW1vdmVzIGFsbCBidWZmZXJzIGZyb20gdGhlCitpbmNvbWluZyBhbmQgb3V0Z29pbmcgcXVldWVzLiBUaGF0IG1lYW5zIGFsbCBpbWFnZXMgY2FwdHVyZWQgYnV0IG5vdAorZGVxdWV1ZWQgeWV0IHdpbGwgYmUgbG9zdCwgbGlrZXdpc2UgYWxsIGltYWdlcyBlbnF1ZXVlZCBmb3Igb3V0cHV0IGJ1dAorbm90IHRyYW5zbWl0dGVkIHlldC4gSS9PIHJldHVybnMgdG8gdGhlIHNhbWUgc3RhdGUgYXMgYWZ0ZXIgY2FsbGluZworJlZJRElPQy1SRVFCVUZTOyBhbmQgY2FuIGJlIHJlc3RhcnRlZCBhY2NvcmRpbmdseS48L3BhcmE+CisKKyAgICA8cGFyYT5JZiBidWZmZXJzIGhhdmUgYmVlbiBxdWV1ZWQgd2l0aCAmVklESU9DLVFCVUY7IGFuZAorPGNvbnN0YW50PlZJRElPQ19TVFJFQU1PRkY8L2NvbnN0YW50PiBpcyBjYWxsZWQgd2l0aG91dCBldmVyIGhhdmluZworY2FsbGVkIDxjb25zdGFudD5WSURJT0NfU1RSRUFNT048L2NvbnN0YW50PiwgdGhlbiB0aG9zZSBxdWV1ZWQgYnVmZmVycword2lsbCBhbHNvIGJlIHJlbW92ZWQgZnJvbSB0aGUgaW5jb21pbmcgcXVldWUgYW5kIGFsbCBhcmUgcmV0dXJuZWQgdG8gdGhlCitzYW1lIHN0YXRlIGFzIGFmdGVyIGNhbGxpbmcgJlZJRElPQy1SRVFCVUZTOyBhbmQgY2FuIGJlIHJlc3RhcnRlZAorYWNjb3JkaW5nbHkuPC9wYXJhPgorCisgICAgPHBhcmE+Qm90aCBpb2N0bHMgdGFrZSBhIHBvaW50ZXIgdG8gYW4gaW50ZWdlciwgdGhlIGRlc2lyZWQgYnVmZmVyIG9yCitzdHJlYW0gdHlwZS4gVGhpcyBpcyB0aGUgc2FtZSBhcyAmdjRsMi1yZXF1ZXN0YnVmZmVyczsKKzxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4uPC9wYXJhPgorCisgICAgPHBhcmE+SWYgPGNvbnN0YW50PlZJRElPQ19TVFJFQU1PTjwvY29uc3RhbnQ+IGlzIGNhbGxlZCB3aGVuIHN0cmVhbWluZworaXMgYWxyZWFkeSBpbiBwcm9ncmVzcywgb3IgaWYgPGNvbnN0YW50PlZJRElPQ19TVFJFQU1PRkY8L2NvbnN0YW50PiBpcyBjYWxsZWQKK3doZW4gc3RyZWFtaW5nIGlzIGFscmVhZHkgc3RvcHBlZCwgdGhlbiAwIGlzIHJldHVybmVkLiBOb3RoaW5nIGhhcHBlbnMgaW4gdGhlCitjYXNlIG9mIDxjb25zdGFudD5WSURJT0NfU1RSRUFNT048L2NvbnN0YW50PiwgYnV0IDxjb25zdGFudD5WSURJT0NfU1RSRUFNT0ZGPC9jb25zdGFudD4KK3dpbGwgcmV0dXJuIHF1ZXVlZCBidWZmZXJzIHRvIHRoZWlyIHN0YXJ0aW5nIHN0YXRlIGFzIG1lbnRpb25lZCBhYm92ZS48L3BhcmE+CisKKyAgICA8cGFyYT5Ob3RlIHRoYXQgYXBwbGljYXRpb25zIGNhbiBiZSBwcmVlbXB0ZWQgZm9yIHVua25vd24gcGVyaW9kcyByaWdodAorYmVmb3JlIG9yIGFmdGVyIHRoZSA8Y29uc3RhbnQ+VklESU9DX1NUUkVBTU9OPC9jb25zdGFudD4gb3IKKzxjb25zdGFudD5WSURJT0NfU1RSRUFNT0ZGPC9jb25zdGFudD4gY2FsbHMsIHRoZXJlIGlzIG5vIG5vdGlvbiBvZgorc3RhcnRpbmcgb3Igc3RvcHBpbmcgIm5vdyIuIEJ1ZmZlciB0aW1lc3RhbXBzIGNhbiBiZSB1c2VkIHRvCitzeW5jaHJvbml6ZSB3aXRoIG90aGVyIGV2ZW50cy48L3BhcmE+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgYnVmZmVyIDxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gaXMgbm90IHN1cHBvcnRlZCwKKwkgIG9yIG5vIGJ1ZmZlcnMgaGF2ZSBiZWVuIGFsbG9jYXRlZCAobWVtb3J5IG1hcHBpbmcpIG9yIGVucXVldWVkCisJICAob3V0cHV0KSB5ZXQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FUElQRTwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgZHJpdmVyIGltcGxlbWVudHMgPGxpbmsKKwkgIGxpbmtlbmQ9InBhZC1sZXZlbC1mb3JtYXRzIj5wYWQtbGV2ZWwgZm9ybWF0IGNvbmZpZ3VyYXRpb248L2xpbms+IGFuZAorCSAgdGhlIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24gaXMgaW52YWxpZC4KKwkgIDwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2Mtc3ViZGV2LWVudW0tZnJhbWUtaW50ZXJ2YWwueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2Mtc3ViZGV2LWVudW0tZnJhbWUtaW50ZXJ2YWwueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmZjU5ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1zdWJkZXYtZW51bS1mcmFtZS1pbnRlcnZhbC54bWwKQEAgLTAsMCArMSwxNTcgQEAKKzxyZWZlbnRyeSBpZD0idmlkaW9jLXN1YmRldi1lbnVtLWZyYW1lLWludGVydmFsIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgVklESU9DX1NVQkRFVl9FTlVNX0ZSQU1FX0lOVEVSVkFMPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5WSURJT0NfU1VCREVWX0VOVU1fRlJBTUVfSU5URVJWQUw8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+RW51bWVyYXRlIGZyYW1lIGludGVydmFsczwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zdHJ1Y3QgdjRsMl9zdWJkZXZfZnJhbWVfaW50ZXJ2YWxfZW51bSAqCisJPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPiZmZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VklESU9DX1NVQkRFVl9FTlVNX0ZSQU1FX0lOVEVSVkFMPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8bm90ZT4KKyAgICAgIDx0aXRsZT5FeHBlcmltZW50YWw8L3RpdGxlPgorICAgICAgPHBhcmE+VGhpcyBpcyBhbiA8bGluayBsaW5rZW5kPSJleHBlcmltZW50YWwiPmV4cGVyaW1lbnRhbDwvbGluaz4KKyAgICAgIGludGVyZmFjZSBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLjwvcGFyYT4KKyAgICA8L25vdGU+CisKKyAgICA8cGFyYT5UaGlzIGlvY3RsIGxldHMgYXBwbGljYXRpb25zIGVudW1lcmF0ZSBhdmFpbGFibGUgZnJhbWUgaW50ZXJ2YWxzIG9uIGEKKyAgICBnaXZlbiBzdWItZGV2aWNlIHBhZC4gRnJhbWUgaW50ZXJ2YWxzIG9ubHkgbWFrZXMgc2Vuc2UgZm9yIHN1Yi1kZXZpY2VzIHRoYXQKKyAgICBjYW4gY29udHJvbCB0aGUgZnJhbWUgcGVyaW9kIG9uIHRoZWlyIG93bi4gVGhpcyBpbmNsdWRlcywgZm9yIGluc3RhbmNlLAorICAgIGltYWdlIHNlbnNvcnMgYW5kIFRWIHR1bmVycy48L3BhcmE+CisKKyAgICA8cGFyYT5Gb3IgdGhlIGNvbW1vbiB1c2UgY2FzZSBvZiBpbWFnZSBzZW5zb3JzLCB0aGUgZnJhbWUgaW50ZXJ2YWxzCisgICAgYXZhaWxhYmxlIG9uIHRoZSBzdWItZGV2aWNlIG91dHB1dCBwYWQgZGVwZW5kIG9uIHRoZSBmcmFtZSBmb3JtYXQgYW5kIHNpemUKKyAgICBvbiB0aGUgc2FtZSBwYWQuIEFwcGxpY2F0aW9ucyBtdXN0IHRodXMgc3BlY2lmeSB0aGUgZGVzaXJlZCBmb3JtYXQgYW5kIHNpemUKKyAgICB3aGVuIGVudW1lcmF0aW5nIGZyYW1lIGludGVydmFscy48L3BhcmE+CisKKyAgICA8cGFyYT5UbyBlbnVtZXJhdGUgZnJhbWUgaW50ZXJ2YWxzIGFwcGxpY2F0aW9ucyBpbml0aWFsaXplIHRoZQorICAgIDxzdHJ1Y3RmaWVsZD5pbmRleDwvc3RydWN0ZmllbGQ+LCA8c3RydWN0ZmllbGQ+cGFkPC9zdHJ1Y3RmaWVsZD4sCisgICAgPHN0cnVjdGZpZWxkPndoaWNoPC9zdHJ1Y3RmaWVsZD4sIDxzdHJ1Y3RmaWVsZD5jb2RlPC9zdHJ1Y3RmaWVsZD4sCisgICAgPHN0cnVjdGZpZWxkPndpZHRoPC9zdHJ1Y3RmaWVsZD4gYW5kIDxzdHJ1Y3RmaWVsZD5oZWlnaHQ8L3N0cnVjdGZpZWxkPgorICAgIGZpZWxkcyBvZiAmdjRsMi1zdWJkZXYtZnJhbWUtaW50ZXJ2YWwtZW51bTsgYW5kIGNhbGwgdGhlCisgICAgPGNvbnN0YW50PlZJRElPQ19TVUJERVZfRU5VTV9GUkFNRV9JTlRFUlZBTDwvY29uc3RhbnQ+IGlvY3RsIHdpdGggYSBwb2ludGVyCisgICAgdG8gdGhpcyBzdHJ1Y3R1cmUuIERyaXZlcnMgZmlsbCB0aGUgcmVzdCBvZiB0aGUgc3RydWN0dXJlIG9yIHJldHVybgorICAgIGFuICZFSU5WQUw7IGlmIG9uZSBvZiB0aGUgaW5wdXQgZmllbGRzIGlzIGludmFsaWQuIEFsbCBmcmFtZSBpbnRlcnZhbHMgYXJlCisgICAgZW51bWVyYWJsZSBieSBiZWdpbm5pbmcgYXQgaW5kZXggemVybyBhbmQgaW5jcmVtZW50aW5nIGJ5IG9uZSB1bnRpbAorICAgIDxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+IGlzIHJldHVybmVkLjwvcGFyYT4KKworICAgIDxwYXJhPkF2YWlsYWJsZSBmcmFtZSBpbnRlcnZhbHMgbWF5IGRlcGVuZCBvbiB0aGUgY3VycmVudCAndHJ5JyBmb3JtYXRzCisgICAgYXQgb3RoZXIgcGFkcyBvZiB0aGUgc3ViLWRldmljZSwgYXMgd2VsbCBhcyBvbiB0aGUgY3VycmVudCBhY3RpdmUgbGlua3MuIFNlZQorICAgICZWSURJT0MtU1VCREVWLUctRk1UOyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdHJ5IGZvcm1hdHMuPC9wYXJhPgorCisgICAgPHBhcmE+U3ViLWRldmljZXMgdGhhdCBzdXBwb3J0IHRoZSBmcmFtZSBpbnRlcnZhbCBlbnVtZXJhdGlvbiBpb2N0bCBzaG91bGQKKyAgICBpbXBsZW1lbnRlZCBpdCBvbiBhIHNpbmdsZSBwYWQgb25seS4gSXRzIGJlaGF2aW91ciB3aGVuIHN1cHBvcnRlZCBvbgorICAgIG11bHRpcGxlIHBhZHMgb2YgdGhlIHNhbWUgc3ViLWRldmljZSBpcyBub3QgZGVmaW5lZC48L3BhcmE+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItc3ViZGV2LWZyYW1lLWludGVydmFsLWVudW0iPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX3N1YmRldl9mcmFtZV9pbnRlcnZhbF9lbnVtPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5OdW1iZXIgb2YgdGhlIGZvcm1hdCBpbiB0aGUgZW51bWVyYXRpb24sIHNldCBieSB0aGUKKwkgICAgYXBwbGljYXRpb24uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5wYWQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5QYWQgbnVtYmVyIGFzIHJlcG9ydGVkIGJ5IHRoZSBtZWRpYSBjb250cm9sbGVyIEFQSS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmNvZGU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgbWVkaWEgYnVzIGZvcm1hdCBjb2RlLCBhcyBkZWZpbmVkIGluCisJICAgIDx4cmVmIGxpbmtlbmQ9InY0bDItbWJ1cy1mb3JtYXQiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+d2lkdGg8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5GcmFtZSB3aWR0aCwgaW4gcGl4ZWxzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+aGVpZ2h0PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+RnJhbWUgaGVpZ2h0LCBpbiBwaXhlbHMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PiZ2NGwyLWZyYWN0OzwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+aW50ZXJ2YWw8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5QZXJpb2QsIGluIHNlY29uZHMsIGJldHdlZW4gY29uc2VjdXRpdmUgdmlkZW8gZnJhbWVzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+d2hpY2g8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5GcmFtZSBpbnRlcnZhbHMgdG8gYmUgZW51bWVyYXRlZCwgZnJvbSAmdjRsMi1zdWJkZXYtZm9ybWF0LXdoZW5jZTsuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+WzhdPC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlc2VydmVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucy4gQXBwbGljYXRpb25zIGFuZCBkcml2ZXJzIG11c3QKKwkgICAgc2V0IHRoZSBhcnJheSB0byB6ZXJvLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSAmdjRsMi1zdWJkZXYtZnJhbWUtaW50ZXJ2YWwtZW51bTsKKwkgIDxzdHJ1Y3RmaWVsZD5wYWQ8L3N0cnVjdGZpZWxkPiByZWZlcmVuY2VzIGEgbm9uLWV4aXN0aW5nIHBhZCwgb25lIG9mCisJICB0aGUgPHN0cnVjdGZpZWxkPmNvZGU8L3N0cnVjdGZpZWxkPiwgPHN0cnVjdGZpZWxkPndpZHRoPC9zdHJ1Y3RmaWVsZD4KKwkgIG9yIDxzdHJ1Y3RmaWVsZD5oZWlnaHQ8L3N0cnVjdGZpZWxkPiBmaWVsZHMgYXJlIGludmFsaWQgZm9yIHRoZSBnaXZlbgorCSAgcGFkIG9yIHRoZSA8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPiBmaWVsZCBpcyBvdXQgb2YgYm91bmRzLgorCSAgPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1zdWJkZXYtZW51bS1mcmFtZS1zaXplLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLXN1YmRldi1lbnVtLWZyYW1lLXNpemUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiZDU0NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1zdWJkZXYtZW51bS1mcmFtZS1zaXplLnhtbApAQCAtMCwwICsxLDE1OSBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2Mtc3ViZGV2LWVudW0tZnJhbWUtc2l6ZSI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19TVUJERVZfRU5VTV9GUkFNRV9TSVpFPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5WSURJT0NfU1VCREVWX0VOVU1fRlJBTUVfU0laRTwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5FbnVtZXJhdGUgbWVkaWEgYnVzIGZyYW1lIHNpemVzPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCB2NGwyX3N1YmRldl9mcmFtZV9zaXplX2VudW0gKgorCTxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19TVUJERVZfRU5VTV9GUkFNRV9TSVpFPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8bm90ZT4KKyAgICAgIDx0aXRsZT5FeHBlcmltZW50YWw8L3RpdGxlPgorICAgICAgPHBhcmE+VGhpcyBpcyBhbiA8bGluayBsaW5rZW5kPSJleHBlcmltZW50YWwiPmV4cGVyaW1lbnRhbDwvbGluaz4KKyAgICAgIGludGVyZmFjZSBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLjwvcGFyYT4KKyAgICA8L25vdGU+CisKKyAgICA8cGFyYT5UaGlzIGlvY3RsIGFsbG93cyBhcHBsaWNhdGlvbnMgdG8gZW51bWVyYXRlIGFsbCBmcmFtZSBzaXplcworICAgIHN1cHBvcnRlZCBieSBhIHN1Yi1kZXZpY2Ugb24gdGhlIGdpdmVuIHBhZCBmb3IgdGhlIGdpdmVuIG1lZGlhIGJ1cyBmb3JtYXQuCisgICAgU3VwcG9ydGVkIGZvcm1hdHMgY2FuIGJlIHJldHJpZXZlZCB3aXRoIHRoZSAmVklESU9DLVNVQkRFVi1FTlVNLU1CVVMtQ09ERTsKKyAgICBpb2N0bC48L3BhcmE+CisKKyAgICA8cGFyYT5UbyBlbnVtZXJhdGUgZnJhbWUgc2l6ZXMgYXBwbGljYXRpb25zIGluaXRpYWxpemUgdGhlCisgICAgPHN0cnVjdGZpZWxkPnBhZDwvc3RydWN0ZmllbGQ+LCA8c3RydWN0ZmllbGQ+d2hpY2g8L3N0cnVjdGZpZWxkPiAsCisgICAgPHN0cnVjdGZpZWxkPmNvZGU8L3N0cnVjdGZpZWxkPiBhbmQgPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4KKyAgICBmaWVsZHMgb2YgdGhlICZ2NGwyLXN1YmRldi1tYnVzLWNvZGUtZW51bTsgYW5kIGNhbGwgdGhlCisgICAgPGNvbnN0YW50PlZJRElPQ19TVUJERVZfRU5VTV9GUkFNRV9TSVpFPC9jb25zdGFudD4gaW9jdGwgd2l0aCBhIHBvaW50ZXIgdG8KKyAgICB0aGUgc3RydWN0dXJlLiBEcml2ZXJzIGZpbGwgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gZnJhbWUgc2l6ZXMgb3IgcmV0dXJuCisgICAgYW4gJkVJTlZBTDsgaWYgb25lIG9mIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIGlzIGludmFsaWQuPC9wYXJhPgorCisgICAgPHBhcmE+U3ViLWRldmljZXMgdGhhdCBvbmx5IHN1cHBvcnQgZGlzY3JldGUgZnJhbWUgc2l6ZXMgKHN1Y2ggYXMgbW9zdAorICAgIHNlbnNvcnMpIHdpbGwgcmV0dXJuIG9uZSBvciBtb3JlIGZyYW1lIHNpemVzIHdpdGggaWRlbnRpY2FsIG1pbmltdW0gYW5kCisgICAgbWF4aW11bSB2YWx1ZXMuPC9wYXJhPgorCisgICAgPHBhcmE+Tm90IGFsbCBwb3NzaWJsZSBzaXplcyBpbiBnaXZlbiBbbWluaW11bSwgbWF4aW11bV0gcmFuZ2VzIG5lZWQgdG8gYmUKKyAgICBzdXBwb3J0ZWQuIEZvciBpbnN0YW5jZSwgYSBzY2FsZXIgdGhhdCB1c2VzIGEgZml4ZWQtcG9pbnQgc2NhbGluZyByYXRpbworICAgIG1pZ2h0IG5vdCBiZSBhYmxlIHRvIHByb2R1Y2UgZXZlcnkgZnJhbWUgc2l6ZSBiZXR3ZWVuIHRoZSBtaW5pbXVtIGFuZAorICAgIG1heGltdW0gdmFsdWVzLiBBcHBsaWNhdGlvbnMgbXVzdCB1c2UgdGhlICZWSURJT0MtU1VCREVWLVMtRk1UOyBpb2N0bCB0bworICAgIHRyeSB0aGUgc3ViLWRldmljZSBmb3IgYW4gZXhhY3Qgc3VwcG9ydGVkIGZyYW1lIHNpemUuPC9wYXJhPgorCisgICAgPHBhcmE+QXZhaWxhYmxlIGZyYW1lIHNpemVzIG1heSBkZXBlbmQgb24gdGhlIGN1cnJlbnQgJ3RyeScgZm9ybWF0cyBhdCBvdGhlcgorICAgIHBhZHMgb2YgdGhlIHN1Yi1kZXZpY2UsIGFzIHdlbGwgYXMgb24gdGhlIGN1cnJlbnQgYWN0aXZlIGxpbmtzIGFuZCB0aGUKKyAgICBjdXJyZW50IHZhbHVlcyBvZiBWNEwyIGNvbnRyb2xzLiBTZWUgJlZJRElPQy1TVUJERVYtRy1GTVQ7IGZvciBtb3JlCisgICAgaW5mb3JtYXRpb24gYWJvdXQgdHJ5IGZvcm1hdHMuPC9wYXJhPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLXN1YmRldi1mcmFtZS1zaXplLWVudW0iPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX3N1YmRldl9mcmFtZV9zaXplX2VudW08L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5pbmRleDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk51bWJlciBvZiB0aGUgZm9ybWF0IGluIHRoZSBlbnVtZXJhdGlvbiwgc2V0IGJ5IHRoZQorCSAgICBhcHBsaWNhdGlvbi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnBhZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlBhZCBudW1iZXIgYXMgcmVwb3J0ZWQgYnkgdGhlIG1lZGlhIGNvbnRyb2xsZXIgQVBJLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+Y29kZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRoZSBtZWRpYSBidXMgZm9ybWF0IGNvZGUsIGFzIGRlZmluZWQgaW4KKwkgICAgPHhyZWYgbGlua2VuZD0idjRsMi1tYnVzLWZvcm1hdCIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5taW5fd2lkdGg8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5NaW5pbXVtIGZyYW1lIHdpZHRoLCBpbiBwaXhlbHMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5tYXhfd2lkdGg8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5NYXhpbXVtIGZyYW1lIHdpZHRoLCBpbiBwaXhlbHMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5taW5faGVpZ2h0PC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+TWluaW11bSBmcmFtZSBoZWlnaHQsIGluIHBpeGVscy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPm1heF9oZWlnaHQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5NYXhpbXVtIGZyYW1lIGhlaWdodCwgaW4gcGl4ZWxzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+d2hpY2g8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5GcmFtZSBzaXplcyB0byBiZSBlbnVtZXJhdGVkLCBmcm9tICZ2NGwyLXN1YmRldi1mb3JtYXQtd2hlbmNlOy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD5bOF08L2VudHJ5PgorCSAgICA8ZW50cnk+UmVzZXJ2ZWQgZm9yIGZ1dHVyZSBleHRlbnNpb25zLiBBcHBsaWNhdGlvbnMgYW5kIGRyaXZlcnMgbXVzdAorCSAgICBzZXQgdGhlIGFycmF5IHRvIHplcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICAmcmV0dXJuLXZhbHVlOworCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FSU5WQUw8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlICZ2NGwyLXN1YmRldi1mcmFtZS1zaXplLWVudW07IDxzdHJ1Y3RmaWVsZD5wYWQ8L3N0cnVjdGZpZWxkPgorCSAgcmVmZXJlbmNlcyBhIG5vbi1leGlzdGluZyBwYWQsIHRoZSA8c3RydWN0ZmllbGQ+Y29kZTwvc3RydWN0ZmllbGQ+IGlzCisJICBpbnZhbGlkIGZvciB0aGUgZ2l2ZW4gcGFkIG9yIHRoZSA8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPgorCSAgZmllbGQgaXMgb3V0IG9mIGJvdW5kcy48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLXN1YmRldi1lbnVtLW1idXMtY29kZS54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1zdWJkZXYtZW51bS1tYnVzLWNvZGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiY2IyNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1zdWJkZXYtZW51bS1tYnVzLWNvZGUueG1sCkBAIC0wLDAgKzEsMTI0IEBACis8cmVmZW50cnkgaWQ9InZpZGlvYy1zdWJkZXYtZW51bS1tYnVzLWNvZGUiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBWSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5WSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPkVudW1lcmF0ZSBtZWRpYSBidXMgZm9ybWF0czwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zdHJ1Y3QgdjRsMl9zdWJkZXZfbWJ1c19jb2RlX2VudW0gKgorCTxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19TVUJERVZfRU5VTV9NQlVTX0NPREU8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxub3RlPgorICAgICAgPHRpdGxlPkV4cGVyaW1lbnRhbDwvdGl0bGU+CisgICAgICA8cGFyYT5UaGlzIGlzIGFuIDxsaW5rIGxpbmtlbmQ9ImV4cGVyaW1lbnRhbCI+ZXhwZXJpbWVudGFsPC9saW5rPgorICAgICAgaW50ZXJmYWNlIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuPC9wYXJhPgorICAgIDwvbm90ZT4KKworICAgIDxwYXJhPlRvIGVudW1lcmF0ZSBtZWRpYSBidXMgZm9ybWF0cyBhdmFpbGFibGUgYXQgYSBnaXZlbiBzdWItZGV2aWNlIHBhZAorICAgIGFwcGxpY2F0aW9ucyBpbml0aWFsaXplIHRoZSA8c3RydWN0ZmllbGQ+cGFkPC9zdHJ1Y3RmaWVsZD4sIDxzdHJ1Y3RmaWVsZD53aGljaDwvc3RydWN0ZmllbGQ+CisgICAgYW5kIDxzdHJ1Y3RmaWVsZD5pbmRleDwvc3RydWN0ZmllbGQ+IGZpZWxkcyBvZiAmdjRsMi1zdWJkZXYtbWJ1cy1jb2RlLWVudW07IGFuZAorICAgIGNhbGwgdGhlIDxjb25zdGFudD5WSURJT0NfU1VCREVWX0VOVU1fTUJVU19DT0RFPC9jb25zdGFudD4gaW9jdGwgd2l0aCBhCisgICAgcG9pbnRlciB0byB0aGlzIHN0cnVjdHVyZS4gRHJpdmVycyBmaWxsIHRoZSByZXN0IG9mIHRoZSBzdHJ1Y3R1cmUgb3IgcmV0dXJuCisgICAgYW4gJkVJTlZBTDsgaWYgZWl0aGVyIHRoZSA8c3RydWN0ZmllbGQ+cGFkPC9zdHJ1Y3RmaWVsZD4gb3IKKyAgICA8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPiBhcmUgaW52YWxpZC4gQWxsIG1lZGlhIGJ1cyBmb3JtYXRzIGFyZQorICAgIGVudW1lcmFibGUgYnkgYmVnaW5uaW5nIGF0IGluZGV4IHplcm8gYW5kIGluY3JlbWVudGluZyBieSBvbmUgdW50aWwKKyAgICA8ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPiBpcyByZXR1cm5lZC48L3BhcmE+CisKKyAgICA8cGFyYT5BdmFpbGFibGUgbWVkaWEgYnVzIGZvcm1hdHMgbWF5IGRlcGVuZCBvbiB0aGUgY3VycmVudCAndHJ5JyBmb3JtYXRzCisgICAgYXQgb3RoZXIgcGFkcyBvZiB0aGUgc3ViLWRldmljZSwgYXMgd2VsbCBhcyBvbiB0aGUgY3VycmVudCBhY3RpdmUgbGlua3MuIFNlZQorICAgICZWSURJT0MtU1VCREVWLUctRk1UOyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdHJ5IGZvcm1hdHMuPC9wYXJhPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLXN1YmRldi1tYnVzLWNvZGUtZW51bSI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfc3ViZGV2X21idXNfY29kZV9lbnVtPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cGFkPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+UGFkIG51bWJlciBhcyByZXBvcnRlZCBieSB0aGUgbWVkaWEgY29udHJvbGxlciBBUEkuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5pbmRleDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5Pk51bWJlciBvZiB0aGUgZm9ybWF0IGluIHRoZSBlbnVtZXJhdGlvbiwgc2V0IGJ5IHRoZQorCSAgICBhcHBsaWNhdGlvbi48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmNvZGU8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5UaGUgbWVkaWEgYnVzIGZvcm1hdCBjb2RlLCBhcyBkZWZpbmVkIGluCisJICAgIDx4cmVmIGxpbmtlbmQ9InY0bDItbWJ1cy1mb3JtYXQiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+d2hpY2g8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5NZWRpYSBidXMgZm9ybWF0IGNvZGVzIHRvIGJlIGVudW1lcmF0ZWQsIGZyb20gJnY0bDItc3ViZGV2LWZvcm1hdC13aGVuY2U7LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cmVzZXJ2ZWQ8L3N0cnVjdGZpZWxkPls4XTwvZW50cnk+CisJICAgIDxlbnRyeT5SZXNlcnZlZCBmb3IgZnV0dXJlIGV4dGVuc2lvbnMuIEFwcGxpY2F0aW9ucyBhbmQgZHJpdmVycyBtdXN0CisJICAgIHNldCB0aGUgYXJyYXkgdG8gemVyby48L2VudHJ5PgorCSAgPC9yb3c+CisJPC90Ym9keT4KKyAgICAgIDwvdGdyb3VwPgorICAgIDwvdGFibGU+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgICZyZXR1cm4tdmFsdWU7CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48ZXJyb3Jjb2RlPkVJTlZBTDwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgJnY0bDItc3ViZGV2LW1idXMtY29kZS1lbnVtOyA8c3RydWN0ZmllbGQ+cGFkPC9zdHJ1Y3RmaWVsZD4KKwkgIHJlZmVyZW5jZXMgYSBub24tZXhpc3RpbmcgcGFkLCBvciB0aGUgPHN0cnVjdGZpZWxkPmluZGV4PC9zdHJ1Y3RmaWVsZD4KKwkgIGZpZWxkIGlzIG91dCBvZiBib3VuZHMuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1zdWJkZXYtZy1jcm9wLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLXN1YmRldi1nLWNyb3AueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZGRkNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1zdWJkZXYtZy1jcm9wLnhtbApAQCAtMCwwICsxLDE1OCBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2Mtc3ViZGV2LWctY3JvcCI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19TVUJERVZfR19DUk9QLCBWSURJT0NfU1VCREVWX1NfQ1JPUDwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX1NVQkRFVl9HX0NST1A8L3JlZm5hbWU+CisgICAgPHJlZm5hbWU+VklESU9DX1NVQkRFVl9TX0NST1A8L3JlZm5hbWU+CisgICAgPHJlZnB1cnBvc2U+R2V0IG9yIHNldCB0aGUgY3JvcCByZWN0YW5nbGUgb24gYSBzdWJkZXYgcGFkPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCB2NGwyX3N1YmRldl9jcm9wICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmNvbnN0IHN0cnVjdCB2NGwyX3N1YmRldl9jcm9wICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfU1VCREVWX0dfQ1JPUCwgVklESU9DX1NVQkRFVl9TX0NST1A8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxub3RlPgorICAgICAgPHRpdGxlPk9ic29sZXRlPC90aXRsZT4KKworICAgICAgPHBhcmE+VGhpcyBpcyBhbiA8bGluayBsaW5rZW5kPSJvYnNvbGV0ZSI+b2Jzb2xldGU8L2xpbms+CisgICAgICBpbnRlcmZhY2UgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuIEl0IGlzIHN1cGVyc2VkZWQgYnkKKyAgICAgIDxsaW5rIGxpbmtlbmQ9InZpZGlvYy1zdWJkZXYtZy1zZWxlY3Rpb24iPnRoZSBzZWxlY3Rpb24KKyAgICAgIEFQSTwvbGluaz4uPC9wYXJhPgorICAgIDwvbm90ZT4KKworICAgIDxwYXJhPlRvIHJldHJpZXZlIHRoZSBjdXJyZW50IGNyb3AgcmVjdGFuZ2xlIGFwcGxpY2F0aW9ucyBzZXQgdGhlCisgICAgPHN0cnVjdGZpZWxkPnBhZDwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mIGEgJnY0bDItc3ViZGV2LWNyb3A7IHRvIHRoZQorICAgIGRlc2lyZWQgcGFkIG51bWJlciBhcyByZXBvcnRlZCBieSB0aGUgbWVkaWEgQVBJIGFuZCB0aGUKKyAgICA8c3RydWN0ZmllbGQ+d2hpY2g8L3N0cnVjdGZpZWxkPiBmaWVsZCB0bworICAgIDxjb25zdGFudD5WNEwyX1NVQkRFVl9GT1JNQVRfQUNUSVZFPC9jb25zdGFudD4uIFRoZXkgdGhlbiBjYWxsIHRoZQorICAgIDxjb25zdGFudD5WSURJT0NfU1VCREVWX0dfQ1JPUDwvY29uc3RhbnQ+IGlvY3RsIHdpdGggYSBwb2ludGVyIHRvIHRoaXMKKyAgICBzdHJ1Y3R1cmUuIFRoZSBkcml2ZXIgZmlsbHMgdGhlIG1lbWJlcnMgb2YgdGhlIDxzdHJ1Y3RmaWVsZD5yZWN0PC9zdHJ1Y3RmaWVsZD4KKyAgICBmaWVsZCBvciByZXR1cm5zICZFSU5WQUw7IGlmIHRoZSBpbnB1dCBhcmd1bWVudHMgYXJlIGludmFsaWQsIG9yIGlmIGNyb3BwaW5nCisgICAgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGUgZ2l2ZW4gcGFkLjwvcGFyYT4KKworICAgIDxwYXJhPlRvIGNoYW5nZSB0aGUgY3VycmVudCBjcm9wIHJlY3RhbmdsZSBhcHBsaWNhdGlvbnMgc2V0IGJvdGggdGhlCisgICAgPHN0cnVjdGZpZWxkPnBhZDwvc3RydWN0ZmllbGQ+IGFuZCA8c3RydWN0ZmllbGQ+d2hpY2g8L3N0cnVjdGZpZWxkPiBmaWVsZHMKKyAgICBhbmQgYWxsIG1lbWJlcnMgb2YgdGhlIDxzdHJ1Y3RmaWVsZD5yZWN0PC9zdHJ1Y3RmaWVsZD4gZmllbGQuIFRoZXkgdGhlbiBjYWxsCisgICAgdGhlIDxjb25zdGFudD5WSURJT0NfU1VCREVWX1NfQ1JPUDwvY29uc3RhbnQ+IGlvY3RsIHdpdGggYSBwb2ludGVyIHRvIHRoaXMKKyAgICBzdHJ1Y3R1cmUuIFRoZSBkcml2ZXIgdmVyaWZpZXMgdGhlIHJlcXVlc3RlZCBjcm9wIHJlY3RhbmdsZSwgYWRqdXN0cyBpdAorICAgIGJhc2VkIG9uIHRoZSBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgYW5kIGNvbmZpZ3VyZXMgdGhlIGRldmljZS4gVXBvbiByZXR1cm4KKyAgICB0aGUgJnY0bDItc3ViZGV2LWNyb3A7IGNvbnRhaW5zIHRoZSBjdXJyZW50IGZvcm1hdCBhcyB3b3VsZCBiZSByZXR1cm5lZAorICAgIGJ5IGEgPGNvbnN0YW50PlZJRElPQ19TVUJERVZfR19DUk9QPC9jb25zdGFudD4gY2FsbC48L3BhcmE+CisKKyAgICA8cGFyYT5BcHBsaWNhdGlvbnMgY2FuIHF1ZXJ5IHRoZSBkZXZpY2UgY2FwYWJpbGl0aWVzIGJ5IHNldHRpbmcgdGhlCisgICAgPHN0cnVjdGZpZWxkPndoaWNoPC9zdHJ1Y3RmaWVsZD4gdG8KKyAgICA8Y29uc3RhbnQ+VjRMMl9TVUJERVZfRk9STUFUX1RSWTwvY29uc3RhbnQ+LiBXaGVuIHNldCwgJ3RyeScgY3JvcAorICAgIHJlY3RhbmdsZXMgYXJlIG5vdCBhcHBsaWVkIHRvIHRoZSBkZXZpY2UgYnkgdGhlIGRyaXZlciwgYnV0IGFyZSBtYW5nbGVkCisgICAgZXhhY3RseSBhcyBhY3RpdmUgY3JvcCByZWN0YW5nbGVzIGFuZCBzdG9yZWQgaW4gdGhlIHN1Yi1kZXZpY2UgZmlsZSBoYW5kbGUuCisgICAgVHdvIGFwcGxpY2F0aW9ucyBxdWVyeWluZyB0aGUgc2FtZSBzdWItZGV2aWNlIHdvdWxkIHRodXMgbm90IGludGVyYWN0IHdpdGgKKyAgICBlYWNoIG90aGVyLjwvcGFyYT4KKworICAgIDxwYXJhPkRyaXZlcnMgbXVzdCBub3QgcmV0dXJuIGFuIGVycm9yIHNvbGVseSBiZWNhdXNlIHRoZSByZXF1ZXN0ZWQgY3JvcAorICAgIHJlY3RhbmdsZSBkb2Vzbid0IG1hdGNoIHRoZSBkZXZpY2UgY2FwYWJpbGl0aWVzLiBUaGV5IG11c3QgaW5zdGVhZCBtb2RpZnkKKyAgICB0aGUgcmVjdGFuZ2xlIHRvIG1hdGNoIHdoYXQgdGhlIGhhcmR3YXJlIGNhbiBwcm92aWRlLiBUaGUgbW9kaWZpZWQgZm9ybWF0CisgICAgc2hvdWxkIGJlIGFzIGNsb3NlIGFzIHBvc3NpYmxlIHRvIHRoZSBvcmlnaW5hbCByZXF1ZXN0LjwvcGFyYT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1zdWJkZXYtY3JvcCI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfc3ViZGV2X2Nyb3A8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisgICAgICAgICZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cGFkPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+UGFkIG51bWJlciBhcyByZXBvcnRlZCBieSB0aGUgbWVkaWEgZnJhbWV3b3JrLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+d2hpY2g8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5Dcm9wIHJlY3RhbmdsZSB0byBnZXQgb3Igc2V0LCBmcm9tCisJICAgICZ2NGwyLXN1YmRldi1mb3JtYXQtd2hlbmNlOy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+JnY0bDItcmVjdDs8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJlY3Q8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5Dcm9wIHJlY3RhbmdsZSBib3VuZGFyaWVzLCBpbiBwaXhlbHMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+WzhdPC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlc2VydmVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucy4gQXBwbGljYXRpb25zIGFuZCBkcml2ZXJzIG11c3QKKwkgICAgc2V0IHRoZSBhcnJheSB0byB6ZXJvLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUJVU1k8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIGNyb3AgcmVjdGFuZ2xlIGNhbid0IGJlIGNoYW5nZWQgYmVjYXVzZSB0aGUgcGFkIGlzIGN1cnJlbnRseQorCSAgYnVzeS4gVGhpcyBjYW4gYmUgY2F1c2VkLCBmb3IgaW5zdGFuY2UsIGJ5IGFuIGFjdGl2ZSB2aWRlbyBzdHJlYW0gb24KKwkgIHRoZSBwYWQuIFRoZSBpb2N0bCBtdXN0IG5vdCBiZSByZXRyaWVkIHdpdGhvdXQgcGVyZm9ybWluZyBhbm90aGVyCisJICBhY3Rpb24gdG8gZml4IHRoZSBwcm9ibGVtIGZpcnN0LiBPbmx5IHJldHVybmVkIGJ5CisJICA8Y29uc3RhbnQ+VklESU9DX1NVQkRFVl9TX0NST1A8L2NvbnN0YW50PjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSAmdjRsMi1zdWJkZXYtY3JvcDsgPHN0cnVjdGZpZWxkPnBhZDwvc3RydWN0ZmllbGQ+CisJICByZWZlcmVuY2VzIGEgbm9uLWV4aXN0aW5nIHBhZCwgdGhlIDxzdHJ1Y3RmaWVsZD53aGljaDwvc3RydWN0ZmllbGQ+CisJICBmaWVsZCByZWZlcmVuY2VzIGEgbm9uLWV4aXN0aW5nIGZvcm1hdCwgb3IgY3JvcHBpbmcgaXMgbm90IHN1cHBvcnRlZAorCSAgb24gdGhlIGdpdmVuIHN1YmRldiBwYWQuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1zdWJkZXYtZy1mbXQueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2Mtc3ViZGV2LWctZm10LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjdjZGU2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2Mtc3ViZGV2LWctZm10LnhtbApAQCAtMCwwICsxLDE4MyBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2Mtc3ViZGV2LWctZm10Ij4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgVklESU9DX1NVQkRFVl9HX0ZNVCwgVklESU9DX1NVQkRFVl9TX0ZNVDwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX1NVQkRFVl9HX0ZNVDwvcmVmbmFtZT4KKyAgICA8cmVmbmFtZT5WSURJT0NfU1VCREVWX1NfRk1UPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPkdldCBvciBzZXQgdGhlIGRhdGEgZm9ybWF0IG9uIGEgc3ViZGV2IHBhZDwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zdHJ1Y3QgdjRsMl9zdWJkZXZfZm9ybWF0ICo8cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj4KKwk8L3BhcmFtZGVmPgorICAgICAgPC9mdW5jcHJvdG90eXBlPgorICAgIDwvZnVuY3N5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorCisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+QXJndW1lbnRzPC90aXRsZT4KKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+JmZkOzwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5WSURJT0NfU1VCREVWX0dfRk1ULCBWSURJT0NfU1VCREVWX1NfRk1UPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8bm90ZT4KKyAgICAgIDx0aXRsZT5FeHBlcmltZW50YWw8L3RpdGxlPgorICAgICAgPHBhcmE+VGhpcyBpcyBhbiA8bGluayBsaW5rZW5kPSJleHBlcmltZW50YWwiPmV4cGVyaW1lbnRhbDwvbGluaz4KKyAgICAgIGludGVyZmFjZSBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLjwvcGFyYT4KKyAgICA8L25vdGU+CisKKyAgICA8cGFyYT5UaGVzZSBpb2N0bHMgYXJlIHVzZWQgdG8gbmVnb3RpYXRlIHRoZSBmcmFtZSBmb3JtYXQgYXQgc3BlY2lmaWMKKyAgICBzdWJkZXYgcGFkcyBpbiB0aGUgaW1hZ2UgcGlwZWxpbmUuPC9wYXJhPgorCisgICAgPHBhcmE+VG8gcmV0cmlldmUgdGhlIGN1cnJlbnQgZm9ybWF0IGFwcGxpY2F0aW9ucyBzZXQgdGhlCisgICAgPHN0cnVjdGZpZWxkPnBhZDwvc3RydWN0ZmllbGQ+IGZpZWxkIG9mIGEgJnY0bDItc3ViZGV2LWZvcm1hdDsgdG8gdGhlCisgICAgZGVzaXJlZCBwYWQgbnVtYmVyIGFzIHJlcG9ydGVkIGJ5IHRoZSBtZWRpYSBBUEkgYW5kIHRoZQorICAgIDxzdHJ1Y3RmaWVsZD53aGljaDwvc3RydWN0ZmllbGQ+IGZpZWxkIHRvCisgICAgPGNvbnN0YW50PlY0TDJfU1VCREVWX0ZPUk1BVF9BQ1RJVkU8L2NvbnN0YW50Pi4gV2hlbiB0aGV5IGNhbGwgdGhlCisgICAgPGNvbnN0YW50PlZJRElPQ19TVUJERVZfR19GTVQ8L2NvbnN0YW50PiBpb2N0bCB3aXRoIGEgcG9pbnRlciB0byB0aGlzCisgICAgc3RydWN0dXJlIHRoZSBkcml2ZXIgZmlsbHMgdGhlIG1lbWJlcnMgb2YgdGhlIDxzdHJ1Y3RmaWVsZD5mb3JtYXQ8L3N0cnVjdGZpZWxkPgorICAgIGZpZWxkLjwvcGFyYT4KKworICAgIDxwYXJhPlRvIGNoYW5nZSB0aGUgY3VycmVudCBmb3JtYXQgYXBwbGljYXRpb25zIHNldCBib3RoIHRoZQorICAgIDxzdHJ1Y3RmaWVsZD5wYWQ8L3N0cnVjdGZpZWxkPiBhbmQgPHN0cnVjdGZpZWxkPndoaWNoPC9zdHJ1Y3RmaWVsZD4gZmllbGRzCisgICAgYW5kIGFsbCBtZW1iZXJzIG9mIHRoZSA8c3RydWN0ZmllbGQ+Zm9ybWF0PC9zdHJ1Y3RmaWVsZD4gZmllbGQuIFdoZW4gdGhleQorICAgIGNhbGwgdGhlIDxjb25zdGFudD5WSURJT0NfU1VCREVWX1NfRk1UPC9jb25zdGFudD4gaW9jdGwgd2l0aCBhIHBvaW50ZXIgdG8gdGhpcworICAgIHN0cnVjdHVyZSB0aGUgZHJpdmVyIHZlcmlmaWVzIHRoZSByZXF1ZXN0ZWQgZm9ybWF0LCBhZGp1c3RzIGl0IGJhc2VkIG9uIHRoZQorICAgIGhhcmR3YXJlIGNhcGFiaWxpdGllcyBhbmQgY29uZmlndXJlcyB0aGUgZGV2aWNlLiBVcG9uIHJldHVybiB0aGUKKyAgICAmdjRsMi1zdWJkZXYtZm9ybWF0OyBjb250YWlucyB0aGUgY3VycmVudCBmb3JtYXQgYXMgd291bGQgYmUgcmV0dXJuZWQgYnkgYQorICAgIDxjb25zdGFudD5WSURJT0NfU1VCREVWX0dfRk1UPC9jb25zdGFudD4gY2FsbC48L3BhcmE+CisKKyAgICA8cGFyYT5BcHBsaWNhdGlvbnMgY2FuIHF1ZXJ5IHRoZSBkZXZpY2UgY2FwYWJpbGl0aWVzIGJ5IHNldHRpbmcgdGhlCisgICAgPHN0cnVjdGZpZWxkPndoaWNoPC9zdHJ1Y3RmaWVsZD4gdG8KKyAgICA8Y29uc3RhbnQ+VjRMMl9TVUJERVZfRk9STUFUX1RSWTwvY29uc3RhbnQ+LiBXaGVuIHNldCwgJ3RyeScgZm9ybWF0cyBhcmUgbm90CisgICAgYXBwbGllZCB0byB0aGUgZGV2aWNlIGJ5IHRoZSBkcml2ZXIsIGJ1dCBhcmUgY2hhbmdlZCBleGFjdGx5IGFzIGFjdGl2ZQorICAgIGZvcm1hdHMgYW5kIHN0b3JlZCBpbiB0aGUgc3ViLWRldmljZSBmaWxlIGhhbmRsZS4gVHdvIGFwcGxpY2F0aW9ucyBxdWVyeWluZworICAgIHRoZSBzYW1lIHN1Yi1kZXZpY2Ugd291bGQgdGh1cyBub3QgaW50ZXJhY3Qgd2l0aCBlYWNoIG90aGVyLjwvcGFyYT4KKworICAgIDxwYXJhPkZvciBpbnN0YW5jZSwgdG8gdHJ5IGEgZm9ybWF0IGF0IHRoZSBvdXRwdXQgcGFkIG9mIGEgc3ViLWRldmljZSwKKyAgICBhcHBsaWNhdGlvbnMgd291bGQgZmlyc3Qgc2V0IHRoZSB0cnkgZm9ybWF0IGF0IHRoZSBzdWItZGV2aWNlIGlucHV0IHdpdGggdGhlCisgICAgPGNvbnN0YW50PlZJRElPQ19TVUJERVZfU19GTVQ8L2NvbnN0YW50PiBpb2N0bC4gVGhleSB3b3VsZCB0aGVuIGVpdGhlcgorICAgIHJldHJpZXZlIHRoZSBkZWZhdWx0IGZvcm1hdCBhdCB0aGUgb3V0cHV0IHBhZCB3aXRoIHRoZQorICAgIDxjb25zdGFudD5WSURJT0NfU1VCREVWX0dfRk1UPC9jb25zdGFudD4gaW9jdGwsIG9yIHNldCB0aGUgZGVzaXJlZCBvdXRwdXQKKyAgICBwYWQgZm9ybWF0IHdpdGggdGhlIDxjb25zdGFudD5WSURJT0NfU1VCREVWX1NfRk1UPC9jb25zdGFudD4gaW9jdGwgYW5kIGNoZWNrCisgICAgdGhlIHJldHVybmVkIHZhbHVlLjwvcGFyYT4KKworICAgIDxwYXJhPlRyeSBmb3JtYXRzIGRvIG5vdCBkZXBlbmQgb24gYWN0aXZlIGZvcm1hdHMsIGJ1dCBjYW4gZGVwZW5kIG9uIHRoZQorICAgIGN1cnJlbnQgbGlua3MgY29uZmlndXJhdGlvbiBvciBzdWItZGV2aWNlIGNvbnRyb2xzIHZhbHVlLiBGb3IgaW5zdGFuY2UsIGEKKyAgICBsb3ctcGFzcyBub2lzZSBmaWx0ZXIgbWlnaHQgY3JvcCBwaXhlbHMgYXQgdGhlIGZyYW1lIGJvdW5kYXJpZXMsIG1vZGlmeWluZworICAgIGl0cyBvdXRwdXQgZnJhbWUgc2l6ZS48L3BhcmE+CisKKyAgICA8cGFyYT5Ecml2ZXJzIG11c3Qgbm90IHJldHVybiBhbiBlcnJvciBzb2xlbHkgYmVjYXVzZSB0aGUgcmVxdWVzdGVkIGZvcm1hdAorICAgIGRvZXNuJ3QgbWF0Y2ggdGhlIGRldmljZSBjYXBhYmlsaXRpZXMuIFRoZXkgbXVzdCBpbnN0ZWFkIG1vZGlmeSB0aGUgZm9ybWF0CisgICAgdG8gbWF0Y2ggd2hhdCB0aGUgaGFyZHdhcmUgY2FuIHByb3ZpZGUuIFRoZSBtb2RpZmllZCBmb3JtYXQgc2hvdWxkIGJlIGFzCisgICAgY2xvc2UgYXMgcG9zc2libGUgdG8gdGhlIG9yaWdpbmFsIHJlcXVlc3QuPC9wYXJhPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLXN1YmRldi1mb3JtYXQiPgorICAgICAgPHRpdGxlPnN0cnVjdCA8c3RydWN0bmFtZT52NGwyX3N1YmRldl9mb3JtYXQ8L3N0cnVjdG5hbWU+PC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisgICAgICAgICZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cGFkPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+UGFkIG51bWJlciBhcyByZXBvcnRlZCBieSB0aGUgbWVkaWEgY29udHJvbGxlciBBUEkuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD53aGljaDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkZvcm1hdCB0byBtb2RpZmllZCwgZnJvbSAmdjRsMi1zdWJkZXYtZm9ybWF0LXdoZW5jZTsuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5PiZ2NGwyLW1idXMtZnJhbWVmbXQ7PC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5mb3JtYXQ8L3N0cnVjdGZpZWxkPjwvZW50cnk+CisJICAgIDxlbnRyeT5EZWZpbml0aW9uIG9mIGFuIGltYWdlIGZvcm1hdCwgc2VlIDx4cmVmCisJICAgIGxpbmtlbmQ9InY0bDItbWJ1cy1mcmFtZWZtdCIgLz4gZm9yIGRldGFpbHMuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+WzhdPC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlc2VydmVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucy4gQXBwbGljYXRpb25zIGFuZCBkcml2ZXJzIG11c3QKKwkgICAgc2V0IHRoZSBhcnJheSB0byB6ZXJvLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0idjRsMi1zdWJkZXYtZm9ybWF0LXdoZW5jZSI+CisgICAgICA8dGl0bGU+ZW51bSA8c3RydWN0bmFtZT52NGwyX3N1YmRldl9mb3JtYXRfd2hlbmNlPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorICAgICAgICAmY3MtZGVmOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+VjRMMl9TVUJERVZfRk9STUFUX1RSWTwvZW50cnk+CisJICAgIDxlbnRyeT4wPC9lbnRyeT4KKwkgICAgPGVudHJ5PlRyeSBmb3JtYXRzLCB1c2VkIGZvciBxdWVyeWluZyBkZXZpY2UgY2FwYWJpbGl0aWVzLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5WNEwyX1NVQkRFVl9GT1JNQVRfQUNUSVZFPC9lbnRyeT4KKwkgICAgPGVudHJ5PjE8L2VudHJ5PgorCSAgICA8ZW50cnk+QWN0aXZlIGZvcm1hdHMsIGFwcGxpZWQgdG8gdGhlIGhhcmR3YXJlLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUJVU1k8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIGZvcm1hdCBjYW4ndCBiZSBjaGFuZ2VkIGJlY2F1c2UgdGhlIHBhZCBpcyBjdXJyZW50bHkgYnVzeS4KKwkgIFRoaXMgY2FuIGJlIGNhdXNlZCwgZm9yIGluc3RhbmNlLCBieSBhbiBhY3RpdmUgdmlkZW8gc3RyZWFtIG9uIHRoZQorCSAgcGFkLiBUaGUgaW9jdGwgbXVzdCBub3QgYmUgcmV0cmllZCB3aXRob3V0IHBlcmZvcm1pbmcgYW5vdGhlciBhY3Rpb24KKwkgIHRvIGZpeCB0aGUgcHJvYmxlbSBmaXJzdC4gT25seSByZXR1cm5lZCBieQorCSAgPGNvbnN0YW50PlZJRElPQ19TVUJERVZfU19GTVQ8L2NvbnN0YW50PjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSAmdjRsMi1zdWJkZXYtZm9ybWF0OyA8c3RydWN0ZmllbGQ+cGFkPC9zdHJ1Y3RmaWVsZD4KKwkgIHJlZmVyZW5jZXMgYSBub24tZXhpc3RpbmcgcGFkLCBvciB0aGUgPHN0cnVjdGZpZWxkPndoaWNoPC9zdHJ1Y3RmaWVsZD4KKwkgIGZpZWxkIHJlZmVyZW5jZXMgYSBub24tZXhpc3RpbmcgZm9ybWF0LjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisgIDxyZWZzZWN0MT4KKyAgICAmcmV0dXJuLXZhbHVlOworICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLXN1YmRldi1nLWZyYW1lLWludGVydmFsLnhtbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLXN1YmRldi1nLWZyYW1lLWludGVydmFsLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmMzZWEyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2Mtc3ViZGV2LWctZnJhbWUtaW50ZXJ2YWwueG1sCkBAIC0wLDAgKzEsMTQxIEBACis8cmVmZW50cnkgaWQ9InZpZGlvYy1zdWJkZXYtZy1mcmFtZS1pbnRlcnZhbCI+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmlvY3RsIFZJRElPQ19TVUJERVZfR19GUkFNRV9JTlRFUlZBTCwgVklESU9DX1NVQkRFVl9TX0ZSQU1FX0lOVEVSVkFMPC9yZWZlbnRyeXRpdGxlPgorICAgICZtYW52b2w7CisgIDwvcmVmbWV0YT4KKworICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5WSURJT0NfU1VCREVWX0dfRlJBTUVfSU5URVJWQUw8L3JlZm5hbWU+CisgICAgPHJlZm5hbWU+VklESU9DX1NVQkRFVl9TX0ZSQU1FX0lOVEVSVkFMPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPkdldCBvciBzZXQgdGhlIGZyYW1lIGludGVydmFsIG9uIGEgc3ViZGV2IHBhZDwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorCisgIDxyZWZzeW5vcHNpc2Rpdj4KKyAgICA8ZnVuY3N5bm9wc2lzPgorICAgICAgPGZ1bmNwcm90b3R5cGU+CisJPGZ1bmNkZWY+aW50IDxmdW5jdGlvbj5pb2N0bDwvZnVuY3Rpb24+PC9mdW5jZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5zdHJ1Y3QgdjRsMl9zdWJkZXZfZnJhbWVfaW50ZXJ2YWwgKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPgorCTwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19TVUJERVZfR19GUkFNRV9JTlRFUlZBTCwgVklESU9DX1NVQkRFVl9TX0ZSQU1FX0lOVEVSVkFMPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8bm90ZT4KKyAgICAgIDx0aXRsZT5FeHBlcmltZW50YWw8L3RpdGxlPgorICAgICAgPHBhcmE+VGhpcyBpcyBhbiA8bGluayBsaW5rZW5kPSJleHBlcmltZW50YWwiPmV4cGVyaW1lbnRhbDwvbGluaz4KKyAgICAgIGludGVyZmFjZSBhbmQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLjwvcGFyYT4KKyAgICA8L25vdGU+CisKKyAgICA8cGFyYT5UaGVzZSBpb2N0bHMgYXJlIHVzZWQgdG8gZ2V0IGFuZCBzZXQgdGhlIGZyYW1lIGludGVydmFsIGF0IHNwZWNpZmljCisgICAgc3ViZGV2IHBhZHMgaW4gdGhlIGltYWdlIHBpcGVsaW5lLiBUaGUgZnJhbWUgaW50ZXJ2YWwgb25seSBtYWtlcyBzZW5zZSBmb3IKKyAgICBzdWItZGV2aWNlcyB0aGF0IGNhbiBjb250cm9sIHRoZSBmcmFtZSBwZXJpb2Qgb24gdGhlaXIgb3duLiBUaGlzIGluY2x1ZGVzLAorICAgIGZvciBpbnN0YW5jZSwgaW1hZ2Ugc2Vuc29ycyBhbmQgVFYgdHVuZXJzLiBTdWItZGV2aWNlcyB0aGF0IGRvbid0IHN1cHBvcnQKKyAgICBmcmFtZSBpbnRlcnZhbHMgbXVzdCBub3QgaW1wbGVtZW50IHRoZXNlIGlvY3Rscy48L3BhcmE+CisKKyAgICA8cGFyYT5UbyByZXRyaWV2ZSB0aGUgY3VycmVudCBmcmFtZSBpbnRlcnZhbCBhcHBsaWNhdGlvbnMgc2V0IHRoZQorICAgIDxzdHJ1Y3RmaWVsZD5wYWQ8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZiBhICZ2NGwyLXN1YmRldi1mcmFtZS1pbnRlcnZhbDsgdG8KKyAgICB0aGUgZGVzaXJlZCBwYWQgbnVtYmVyIGFzIHJlcG9ydGVkIGJ5IHRoZSBtZWRpYSBjb250cm9sbGVyIEFQSS4gV2hlbiB0aGV5CisgICAgY2FsbCB0aGUgPGNvbnN0YW50PlZJRElPQ19TVUJERVZfR19GUkFNRV9JTlRFUlZBTDwvY29uc3RhbnQ+IGlvY3RsIHdpdGggYQorICAgIHBvaW50ZXIgdG8gdGhpcyBzdHJ1Y3R1cmUgdGhlIGRyaXZlciBmaWxscyB0aGUgbWVtYmVycyBvZiB0aGUKKyAgICA8c3RydWN0ZmllbGQ+aW50ZXJ2YWw8L3N0cnVjdGZpZWxkPiBmaWVsZC48L3BhcmE+CisKKyAgICA8cGFyYT5UbyBjaGFuZ2UgdGhlIGN1cnJlbnQgZnJhbWUgaW50ZXJ2YWwgYXBwbGljYXRpb25zIHNldCBib3RoIHRoZQorICAgIDxzdHJ1Y3RmaWVsZD5wYWQ8L3N0cnVjdGZpZWxkPiBmaWVsZCBhbmQgYWxsIG1lbWJlcnMgb2YgdGhlCisgICAgPHN0cnVjdGZpZWxkPmludGVydmFsPC9zdHJ1Y3RmaWVsZD4gZmllbGQuIFdoZW4gdGhleSBjYWxsIHRoZQorICAgIDxjb25zdGFudD5WSURJT0NfU1VCREVWX1NfRlJBTUVfSU5URVJWQUw8L2NvbnN0YW50PiBpb2N0bCB3aXRoIGEgcG9pbnRlciB0bworICAgIHRoaXMgc3RydWN0dXJlIHRoZSBkcml2ZXIgdmVyaWZpZXMgdGhlIHJlcXVlc3RlZCBpbnRlcnZhbCwgYWRqdXN0cyBpdCBiYXNlZAorICAgIG9uIHRoZSBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgYW5kIGNvbmZpZ3VyZXMgdGhlIGRldmljZS4gVXBvbiByZXR1cm4gdGhlCisgICAgJnY0bDItc3ViZGV2LWZyYW1lLWludGVydmFsOyBjb250YWlucyB0aGUgY3VycmVudCBmcmFtZSBpbnRlcnZhbCBhcyB3b3VsZCBiZQorICAgIHJldHVybmVkIGJ5IGEgPGNvbnN0YW50PlZJRElPQ19TVUJERVZfR19GUkFNRV9JTlRFUlZBTDwvY29uc3RhbnQ+IGNhbGwuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+RHJpdmVycyBtdXN0IG5vdCByZXR1cm4gYW4gZXJyb3Igc29sZWx5IGJlY2F1c2UgdGhlIHJlcXVlc3RlZCBpbnRlcnZhbAorICAgIGRvZXNuJ3QgbWF0Y2ggdGhlIGRldmljZSBjYXBhYmlsaXRpZXMuIFRoZXkgbXVzdCBpbnN0ZWFkIG1vZGlmeSB0aGUgaW50ZXJ2YWwKKyAgICB0byBtYXRjaCB3aGF0IHRoZSBoYXJkd2FyZSBjYW4gcHJvdmlkZS4gVGhlIG1vZGlmaWVkIGludGVydmFsIHNob3VsZCBiZSBhcworICAgIGNsb3NlIGFzIHBvc3NpYmxlIHRvIHRoZSBvcmlnaW5hbCByZXF1ZXN0LjwvcGFyYT4KKworICAgIDxwYXJhPlN1Yi1kZXZpY2VzIHRoYXQgc3VwcG9ydCB0aGUgZnJhbWUgaW50ZXJ2YWwgaW9jdGxzIHNob3VsZCBpbXBsZW1lbnQKKyAgICB0aGVtIG9uIGEgc2luZ2xlIHBhZCBvbmx5LiBUaGVpciBiZWhhdmlvdXIgd2hlbiBzdXBwb3J0ZWQgb24gbXVsdGlwbGUgcGFkcworICAgIG9mIHRoZSBzYW1lIHN1Yi1kZXZpY2UgaXMgbm90IGRlZmluZWQuPC9wYXJhPgorCisgICAgPHRhYmxlIHBnd2lkZT0iMSIgZnJhbWU9Im5vbmUiIGlkPSJ2NGwyLXN1YmRldi1mcmFtZS1pbnRlcnZhbCI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfc3ViZGV2X2ZyYW1lX2ludGVydmFsPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorICAgICAgICAmY3Mtc3RyOworCTx0Ym9keSB2YWxpZ249InRvcCI+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnBhZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlBhZCBudW1iZXIgYXMgcmVwb3J0ZWQgYnkgdGhlIG1lZGlhIGNvbnRyb2xsZXIgQVBJLjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT4mdjRsMi1mcmFjdDs8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmludGVydmFsPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+UGVyaW9kLCBpbiBzZWNvbmRzLCBiZXR3ZWVuIGNvbnNlY3V0aXZlIHZpZGVvIGZyYW1lcy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD5bOV08L2VudHJ5PgorCSAgICA8ZW50cnk+UmVzZXJ2ZWQgZm9yIGZ1dHVyZSBleHRlbnNpb25zLiBBcHBsaWNhdGlvbnMgYW5kIGRyaXZlcnMgbXVzdAorCSAgICBzZXQgdGhlIGFycmF5IHRvIHplcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorICA8L3JlZnNlY3QxPgorCisgIDxyZWZzZWN0MT4KKyAgICAmcmV0dXJuLXZhbHVlOworCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FQlVTWTwvZXJyb3Jjb2RlPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT5UaGUgZnJhbWUgaW50ZXJ2YWwgY2FuJ3QgYmUgY2hhbmdlZCBiZWNhdXNlIHRoZSBwYWQgaXMgY3VycmVudGx5CisJICBidXN5LiBUaGlzIGNhbiBiZSBjYXVzZWQsIGZvciBpbnN0YW5jZSwgYnkgYW4gYWN0aXZlIHZpZGVvIHN0cmVhbSBvbgorCSAgdGhlIHBhZC4gVGhlIGlvY3RsIG11c3Qgbm90IGJlIHJldHJpZWQgd2l0aG91dCBwZXJmb3JtaW5nIGFub3RoZXIKKwkgIGFjdGlvbiB0byBmaXggdGhlIHByb2JsZW0gZmlyc3QuIE9ubHkgcmV0dXJuZWQgYnkKKwkgIDxjb25zdGFudD5WSURJT0NfU1VCREVWX1NfRlJBTUVfSU5URVJWQUw8L2NvbnN0YW50PjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUlOVkFMPC9lcnJvcmNvZGU+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlRoZSAmdjRsMi1zdWJkZXYtZnJhbWUtaW50ZXJ2YWw7IDxzdHJ1Y3RmaWVsZD5wYWQ8L3N0cnVjdGZpZWxkPgorCSAgcmVmZXJlbmNlcyBhIG5vbi1leGlzdGluZyBwYWQsIG9yIHRoZSBwYWQgZG9lc24ndCBzdXBwb3J0IGZyYW1lCisJICBpbnRlcnZhbHMuPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1zdWJkZXYtZy1zZWxlY3Rpb24ueG1sIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2Mtc3ViZGV2LWctc2VsZWN0aW9uLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjJhNzM2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC92aWRpb2Mtc3ViZGV2LWctc2VsZWN0aW9uLnhtbApAQCAtMCwwICsxLDE2NSBAQAorPHJlZmVudHJ5IGlkPSJ2aWRpb2Mtc3ViZGV2LWctc2VsZWN0aW9uIj4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+aW9jdGwgVklESU9DX1NVQkRFVl9HX1NFTEVDVElPTiwgVklESU9DX1NVQkRFVl9TX1NFTEVDVElPTjwvcmVmZW50cnl0aXRsZT4KKyAgICAmbWFudm9sOworICA8L3JlZm1ldGE+CisKKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+VklESU9DX1NVQkRFVl9HX1NFTEVDVElPTjwvcmVmbmFtZT4KKyAgICA8cmVmbmFtZT5WSURJT0NfU1VCREVWX1NfU0VMRUNUSU9OPC9yZWZuYW1lPgorICAgIDxyZWZwdXJwb3NlPkdldCBvciBzZXQgc2VsZWN0aW9uIHJlY3RhbmdsZXMgb24gYSBzdWJkZXYgcGFkPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisKKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxmdW5jc3lub3BzaXM+CisgICAgICA8ZnVuY3Byb3RvdHlwZT4KKwk8ZnVuY2RlZj5pbnQgPGZ1bmN0aW9uPmlvY3RsPC9mdW5jdGlvbj48L2Z1bmNkZWY+CisJPHBhcmFtZGVmPmludCA8cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+cmVxdWVzdDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisJPHBhcmFtZGVmPnN0cnVjdCB2NGwyX3N1YmRldl9zZWxlY3Rpb24gKjxwYXJhbWV0ZXI+YXJncDwvcGFyYW1ldGVyPjwvcGFyYW1kZWY+CisgICAgICA8L2Z1bmNwcm90b3R5cGU+CisgICAgPC9mdW5jc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5Bcmd1bWVudHM8L3RpdGxlPgorCisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5mZDwvcGFyYW1ldGVyPjwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4mZmQ7PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPlZJRElPQ19TVUJERVZfR19TRUxFQ1RJT04sIFZJRElPQ19TVUJERVZfU19TRUxFQ1RJT048L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmFyZ3A8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxub3RlPgorICAgICAgPHRpdGxlPkV4cGVyaW1lbnRhbDwvdGl0bGU+CisgICAgICA8cGFyYT5UaGlzIGlzIGFuIDxsaW5rIGxpbmtlbmQ9ImV4cGVyaW1lbnRhbCI+ZXhwZXJpbWVudGFsPC9saW5rPgorICAgICAgaW50ZXJmYWNlIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuPC9wYXJhPgorICAgIDwvbm90ZT4KKworICAgIDxwYXJhPlRoZSBzZWxlY3Rpb25zIGFyZSB1c2VkIHRvIGNvbmZpZ3VyZSB2YXJpb3VzIGltYWdlCisgICAgcHJvY2Vzc2luZyBmdW5jdGlvbmFsaXR5IHBlcmZvcm1lZCBieSB0aGUgc3ViZGV2cyB3aGljaCBhZmZlY3QgdGhlCisgICAgaW1hZ2Ugc2l6ZS4gVGhpcyBjdXJyZW50bHkgaW5jbHVkZXMgY3JvcHBpbmcsIHNjYWxpbmcgYW5kCisgICAgY29tcG9zaXRpb24uPC9wYXJhPgorCisgICAgPHBhcmE+VGhlIHNlbGVjdGlvbiBBUEkgcmVwbGFjZXMgPGxpbmsKKyAgICBsaW5rZW5kPSJ2aWRpb2Mtc3ViZGV2LWctY3JvcCI+dGhlIG9sZCBzdWJkZXYgY3JvcCBBUEk8L2xpbms+LiBBbGwKKyAgICB0aGUgZnVuY3Rpb24gb2YgdGhlIGNyb3AgQVBJLCBhbmQgbW9yZSwgYXJlIHN1cHBvcnRlZCBieSB0aGUKKyAgICBzZWxlY3Rpb25zIEFQSS48L3BhcmE+CisKKyAgICA8cGFyYT5TZWUgPHhyZWYgbGlua2VuZD0ic3ViZGV2Ij48L3hyZWY+IGZvcgorICAgIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IGVhY2ggc2VsZWN0aW9uIHRhcmdldCBhZmZlY3RzIHRoZSBpbWFnZQorICAgIHByb2Nlc3NpbmcgcGlwZWxpbmUgaW5zaWRlIHRoZSBzdWJkZXZpY2UuPC9wYXJhPgorCisgICAgPHJlZnNlY3QyPgorICAgICAgPHRpdGxlPlR5cGVzIG9mIHNlbGVjdGlvbiB0YXJnZXRzPC90aXRsZT4KKworICAgICAgPHBhcmE+VGhlcmUgYXJlIHR3byB0eXBlcyBvZiBzZWxlY3Rpb24gdGFyZ2V0czogYWN0dWFsIGFuZCBib3VuZHMuIFRoZQorICAgICAgYWN0dWFsIHRhcmdldHMgYXJlIHRoZSB0YXJnZXRzIHdoaWNoIGNvbmZpZ3VyZSB0aGUgaGFyZHdhcmUuIFRoZSBCT1VORFMKKyAgICAgIHRhcmdldCB3aWxsIHJldHVybiBhIHJlY3RhbmdsZSB0aGF0IGNvbnRhaW4gYWxsIHBvc3NpYmxlIGFjdHVhbAorICAgICAgcmVjdGFuZ2xlcy48L3BhcmE+CisgICAgPC9yZWZzZWN0Mj4KKworICAgIDxyZWZzZWN0Mj4KKyAgICAgIDx0aXRsZT5EaXNjb3ZlcmluZyBzdXBwb3J0ZWQgZmVhdHVyZXM8L3RpdGxlPgorCisgICAgICA8cGFyYT5UbyBkaXNjb3ZlciB3aGljaCB0YXJnZXRzIGFyZSBzdXBwb3J0ZWQsIHRoZSB1c2VyIGNhbgorICAgICAgcGVyZm9ybSA8Y29uc3RhbnQ+VklESU9DX1NVQkRFVl9HX1NFTEVDVElPTjwvY29uc3RhbnQ+IG9uIHRoZW0uCisgICAgICBBbnkgdW5zdXBwb3J0ZWQgdGFyZ2V0IHdpbGwgcmV0dXJuCisgICAgICA8Y29uc3RhbnQ+RUlOVkFMPC9jb25zdGFudD4uPC9wYXJhPgorCisgICAgPHBhcmE+U2VsZWN0aW9uIHRhcmdldHMgYW5kIGZsYWdzIGFyZSBkb2N1bWVudGVkIGluIDx4cmVmCisgICAgbGlua2VuZD0idjRsMi1zZWxlY3Rpb25zLWNvbW1vbiIvPi48L3BhcmE+CisKKyAgICA8dGFibGUgcGd3aWRlPSIxIiBmcmFtZT0ibm9uZSIgaWQ9InY0bDItc3ViZGV2LXNlbGVjdGlvbiI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfc3ViZGV2X3NlbGVjdGlvbjwvc3RydWN0bmFtZT48L3RpdGxlPgorICAgICAgPHRncm91cCBjb2xzPSIzIj4KKyAgICAgICAgJmNzLXN0cjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD53aGljaDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkFjdGl2ZSBvciB0cnkgc2VsZWN0aW9uLCBmcm9tCisJICAgICZ2NGwyLXN1YmRldi1mb3JtYXQtd2hlbmNlOy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnBhZDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlBhZCBudW1iZXIgYXMgcmVwb3J0ZWQgYnkgdGhlIG1lZGlhIGZyYW1ld29yay48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnRhcmdldDwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlRhcmdldCBzZWxlY3Rpb24gcmVjdGFuZ2xlLiBTZWUKKwkgICAgPHhyZWYgbGlua2VuZD0idjRsMi1zZWxlY3Rpb25zLWNvbW1vbiIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5mbGFnczwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PkZsYWdzLiBTZWUKKwkgICAgPHhyZWYgbGlua2VuZD0idjRsMi1zZWxlY3Rpb24tZmxhZ3MiIC8+LjwvZW50cnk+CisJICA8L3Jvdz4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT4mdjRsMi1yZWN0OzwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+cjwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlNlbGVjdGlvbiByZWN0YW5nbGUsIGluIHBpeGVscy48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPnJlc2VydmVkPC9zdHJ1Y3RmaWVsZD5bOF08L2VudHJ5PgorCSAgICA8ZW50cnk+UmVzZXJ2ZWQgZm9yIGZ1dHVyZSBleHRlbnNpb25zLiBBcHBsaWNhdGlvbnMgYW5kIGRyaXZlcnMgbXVzdAorCSAgICBzZXQgdGhlIGFycmF5IHRvIHplcm8uPC9lbnRyeT4KKwkgIDwvcm93PgorCTwvdGJvZHk+CisgICAgICA8L3Rncm91cD4KKyAgICA8L3RhYmxlPgorICAgIDwvcmVmc2VjdDI+CisKKyAgPC9yZWZzZWN0MT4KKworICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKworICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorCTx0ZXJtPjxlcnJvcmNvZGU+RUJVU1k8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlIHNlbGVjdGlvbiByZWN0YW5nbGUgY2FuJ3QgYmUgY2hhbmdlZCBiZWNhdXNlIHRoZQorCSAgcGFkIGlzIGN1cnJlbnRseSBidXN5LiBUaGlzIGNhbiBiZSBjYXVzZWQsIGZvciBpbnN0YW5jZSwgYnkKKwkgIGFuIGFjdGl2ZSB2aWRlbyBzdHJlYW0gb24gdGhlIHBhZC4gVGhlIGlvY3RsIG11c3Qgbm90IGJlCisJICByZXRyaWVkIHdpdGhvdXQgcGVyZm9ybWluZyBhbm90aGVyIGFjdGlvbiB0byBmaXggdGhlIHByb2JsZW0KKwkgIGZpcnN0LiBPbmx5IHJldHVybmVkIGJ5CisJICA8Y29uc3RhbnQ+VklESU9DX1NVQkRFVl9TX1NFTEVDVElPTjwvY29uc3RhbnQ+PC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PGVycm9yY29kZT5FSU5WQUw8L2Vycm9yY29kZT48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VGhlICZ2NGwyLXN1YmRldi1zZWxlY3Rpb247CisJICA8c3RydWN0ZmllbGQ+cGFkPC9zdHJ1Y3RmaWVsZD4gcmVmZXJlbmNlcyBhIG5vbi1leGlzdGluZworCSAgcGFkLCB0aGUgPHN0cnVjdGZpZWxkPndoaWNoPC9zdHJ1Y3RmaWVsZD4gZmllbGQgcmVmZXJlbmNlcyBhCisJICBub24tZXhpc3RpbmcgZm9ybWF0LCBvciB0aGUgc2VsZWN0aW9uIHRhcmdldCBpcyBub3QKKwkgIHN1cHBvcnRlZCBvbiB0aGUgZ2l2ZW4gc3ViZGV2IHBhZC48L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDwvdmFyaWFibGVsaXN0PgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYS92NGwvdmlkaW9jLXN1YnNjcmliZS1ldmVudC54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1zdWJzY3JpYmUtZXZlbnQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmZDBlZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdjRsL3ZpZGlvYy1zdWJzY3JpYmUtZXZlbnQueG1sCkBAIC0wLDAgKzEsMTMwIEBACis8cmVmZW50cnkgaWQ9InZpZGlvYy1zdWJzY3JpYmUtZXZlbnQiPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5pb2N0bCBWSURJT0NfU1VCU0NSSUJFX0VWRU5ULCBWSURJT0NfVU5TVUJTQ1JJQkVfRVZFTlQ8L3JlZmVudHJ5dGl0bGU+CisgICAgJm1hbnZvbDsKKyAgPC9yZWZtZXRhPgorCisgIDxyZWZuYW1lZGl2PgorICAgICAgPHJlZm5hbWU+VklESU9DX1NVQlNDUklCRV9FVkVOVDwvcmVmbmFtZT4KKyAgICAgIDxyZWZuYW1lPlZJRElPQ19VTlNVQlNDUklCRV9FVkVOVDwvcmVmbmFtZT4KKyAgICA8cmVmcHVycG9zZT5TdWJzY3JpYmUgb3IgdW5zdWJzY3JpYmUgZXZlbnQ8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKworICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGZ1bmNzeW5vcHNpcz4KKyAgICAgIDxmdW5jcHJvdG90eXBlPgorCTxmdW5jZGVmPmludCA8ZnVuY3Rpb24+aW9jdGw8L2Z1bmN0aW9uPjwvZnVuY2RlZj4KKwk8cGFyYW1kZWY+aW50IDxwYXJhbWV0ZXI+ZmQ8L3BhcmFtZXRlcj48L3BhcmFtZGVmPgorCTxwYXJhbWRlZj5pbnQgPHBhcmFtZXRlcj5yZXF1ZXN0PC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKwk8cGFyYW1kZWY+c3RydWN0IHY0bDJfZXZlbnRfc3Vic2NyaXB0aW9uCisqPHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC9wYXJhbWRlZj4KKyAgICAgIDwvZnVuY3Byb3RvdHlwZT4KKyAgICA8L2Z1bmNzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKworICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkFyZ3VtZW50czwvdGl0bGU+CisKKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPmZkPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPiZmZDs8L3BhcmE+CisJPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwk8dGVybT48cGFyYW1ldGVyPnJlcXVlc3Q8L3BhcmFtZXRlcj48L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+VklESU9DX1NVQlNDUklCRV9FVkVOVCwgVklESU9DX1VOU1VCU0NSSUJFX0VWRU5UPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisJPHRlcm0+PHBhcmFtZXRlcj5hcmdwPC9wYXJhbWV0ZXI+PC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPjwvcGFyYT4KKwk8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisKKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5EZXNjcmlwdGlvbjwvdGl0bGU+CisKKyAgICA8cGFyYT5TdWJzY3JpYmUgb3IgdW5zdWJzY3JpYmUgVjRMMiBldmVudC4gU3Vic2NyaWJlZCBldmVudHMgYXJlCisgICAgZGVxdWV1ZWQgYnkgdXNpbmcgdGhlICZWSURJT0MtRFFFVkVOVDsgaW9jdGwuPC9wYXJhPgorCisgICAgPHRhYmxlIGZyYW1lPSJub25lIiBwZ3dpZGU9IjEiIGlkPSJ2NGwyLWV2ZW50LXN1YnNjcmlwdGlvbiI+CisgICAgICA8dGl0bGU+c3RydWN0IDxzdHJ1Y3RuYW1lPnY0bDJfZXZlbnRfc3Vic2NyaXB0aW9uPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisgICAgICA8dGdyb3VwIGNvbHM9IjMiPgorCSZjcy1zdHI7CisJPHRib2R5IHZhbGlnbj0idG9wIj4KKwkgIDxyb3c+CisJICAgIDxlbnRyeT5fX3UzMjwvZW50cnk+CisJICAgIDxlbnRyeT48c3RydWN0ZmllbGQ+dHlwZTwvc3RydWN0ZmllbGQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PlR5cGUgb2YgdGhlIGV2ZW50LCBzZWUgPHhyZWYgbGlua2VuZD0iZXZlbnQtdHlwZSIgLz4uIE5vdGUgdGhhdAorPGNvbnN0YW50PlY0TDJfRVZFTlRfQUxMPC9jb25zdGFudD4gY2FuIGJlIHVzZWQgd2l0aCBWSURJT0NfVU5TVUJTQ1JJQkVfRVZFTlQKK2ZvciB1bnN1YnNjcmliaW5nIGFsbCBldmVudHMgYXQgb25jZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmlkPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+SUQgb2YgdGhlIGV2ZW50IHNvdXJjZS4gSWYgdGhlcmUgaXMgbm8gSUQgYXNzb2NpYXRlZCB3aXRoCisJCXRoZSBldmVudCBzb3VyY2UsIHRoZW4gc2V0IHRoaXMgdG8gMC4gV2hldGhlciBvciBub3QgYW4gZXZlbnQKKwkJbmVlZHMgYW4gSUQgZGVwZW5kcyBvbiB0aGUgZXZlbnQgdHlwZS48L2VudHJ5PgorCSAgPC9yb3c+CisJICA8cm93PgorCSAgICA8ZW50cnk+X191MzI8L2VudHJ5PgorCSAgICA8ZW50cnk+PHN0cnVjdGZpZWxkPmZsYWdzPC9zdHJ1Y3RmaWVsZD48L2VudHJ5PgorCSAgICA8ZW50cnk+RXZlbnQgZmxhZ3MsIHNlZSA8eHJlZiBsaW5rZW5kPSJldmVudC1mbGFncyIgLz4uPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pl9fdTMyPC9lbnRyeT4KKwkgICAgPGVudHJ5PjxzdHJ1Y3RmaWVsZD5yZXNlcnZlZDwvc3RydWN0ZmllbGQ+WzVdPC9lbnRyeT4KKwkgICAgPGVudHJ5PlJlc2VydmVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucy4gRHJpdmVycyBhbmQgYXBwbGljYXRpb25zCisJICAgIG11c3Qgc2V0IHRoZSBhcnJheSB0byB6ZXJvLjwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICAgIDx0YWJsZSBwZ3dpZGU9IjEiIGZyYW1lPSJub25lIiBpZD0iZXZlbnQtZmxhZ3MiPgorICAgICAgPHRpdGxlPkV2ZW50IEZsYWdzPC90aXRsZT4KKyAgICAgIDx0Z3JvdXAgY29scz0iMyI+CisJJmNzLWRlZjsKKwk8dGJvZHkgdmFsaWduPSJ0b3AiPgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0VWRU5UX1NVQl9GTF9TRU5EX0lOSVRJQUw8L2NvbnN0YW50PjwvZW50cnk+CisJICAgIDxlbnRyeT4weDAwMDE8L2VudHJ5PgorCSAgICA8ZW50cnk+V2hlbiB0aGlzIGV2ZW50IGlzIHN1YnNjcmliZWQgYW4gaW5pdGlhbCBldmVudCB3aWxsIGJlIHNlbnQKKwkJY29udGFpbmluZyB0aGUgY3VycmVudCBzdGF0dXMuIFRoaXMgb25seSBtYWtlcyBzZW5zZSBmb3IgZXZlbnRzCisJCXRoYXQgYXJlIHRyaWdnZXJlZCBieSBhIHN0YXR1cyBjaGFuZ2Ugc3VjaCBhcyA8Y29uc3RhbnQ+VjRMMl9FVkVOVF9DVFJMPC9jb25zdGFudD4uCisJCU90aGVyIGV2ZW50cyB3aWxsIGlnbm9yZSB0aGlzIGZsYWcuPC9lbnRyeT4KKwkgIDwvcm93PgorCSAgPHJvdz4KKwkgICAgPGVudHJ5Pjxjb25zdGFudD5WNEwyX0VWRU5UX1NVQl9GTF9BTExPV19GRUVEQkFDSzwvY29uc3RhbnQ+PC9lbnRyeT4KKwkgICAgPGVudHJ5PjB4MDAwMjwvZW50cnk+CisJICAgIDxlbnRyeT48cGFyYT5JZiBzZXQsIHRoZW4gZXZlbnRzIGRpcmVjdGx5IGNhdXNlZCBieSBhbiBpb2N0bCB3aWxsIGFsc28gYmUgc2VudCB0bworCQl0aGUgZmlsZWhhbmRsZSB0aGF0IGNhbGxlZCB0aGF0IGlvY3RsLiBGb3IgZXhhbXBsZSwgY2hhbmdpbmcgYSBjb250cm9sIHVzaW5nCisJCSZWSURJT0MtUy1DVFJMOyB3aWxsIGNhdXNlIGEgVjRMMl9FVkVOVF9DVFJMIHRvIGJlIHNlbnQgYmFjayB0byB0aGF0IHNhbWUKKwkJZmlsZWhhbmRsZS4gTm9ybWFsbHkgc3VjaCBldmVudHMgYXJlIHN1cHByZXNzZWQgdG8gcHJldmVudCBmZWVkYmFjayBsb29wcworCQl3aGVyZSBhbiBhcHBsaWNhdGlvbiBjaGFuZ2VzIGEgY29udHJvbCB0byBhIG9uZSB2YWx1ZSBhbmQgdGhlbiBhbm90aGVyLCBhbmQKKwkJdGhlbiByZWNlaXZlcyBhbiBldmVudCB0ZWxsaW5nIGl0IHRoYXQgdGhhdCBjb250cm9sIGhhcyBjaGFuZ2VkIHRvIHRoZSBmaXJzdAorCQl2YWx1ZS48L3BhcmE+CisKKwkJPHBhcmE+U2luY2UgaXQgY2FuJ3QgdGVsbCB3aGV0aGVyIHRoYXQgZXZlbnQgd2FzIGNhdXNlZCBieSBhbm90aGVyIGFwcGxpY2F0aW9uCisJCW9yIGJ5IHRoZSAmVklESU9DLVMtQ1RSTDsgY2FsbCBpdCBpcyBoYXJkIHRvIGRlY2lkZSB3aGV0aGVyIHRvIHNldCB0aGUKKwkJY29udHJvbCB0byB0aGUgdmFsdWUgaW4gdGhlIGV2ZW50LCBvciBpZ25vcmUgaXQuPC9wYXJhPgorCisJCTxwYXJhPlRoaW5rIGNhcmVmdWxseSB3aGVuIHlvdSBzZXQgdGhpcyBmbGFnIHNvIHlvdSB3b24ndCBnZXQgaW50byBzaXR1YXRpb25zCisJCWxpa2UgdGhhdC48L3BhcmE+CisJICAgIDwvZW50cnk+CisJICA8L3Jvdz4KKwk8L3Rib2R5PgorICAgICAgPC90Z3JvdXA+CisgICAgPC90YWJsZT4KKworICA8L3JlZnNlY3QxPgorICA8cmVmc2VjdDE+CisgICAgJnJldHVybi12YWx1ZTsKKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdmJpXzUyNS5naWYuYjY0IGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3ZiaV81MjUuZ2lmLmI2NApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWRjZjA2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3ZiaV81MjUuZ2lmLmI2NApAQCAtMCwwICsxLDg0IEBACitSMGxHT0RsaEtnUElBSUFBQUFBQUFQLy8veUg1QkFFQUFBRUFMQUFBQUFBcUE4Z0FBQUwrakkrcHkrMFBvNXkwMm91ejNyejdENGJpCitTSmJtaWFicVdnSnM0NzVMTEN0MGZkeTRvZU45L1FQdUVFRlprWFZjSlpYRFhOUDVwQzBUZ0dyTVNyUk1pZGhBMS91TmJCOWoyQ1o4CitLYytxSERYRFRUMmpLM0J1UGF1MTN2RnBkbWMvcDZVaDVTZVlvWE1IeUZOb21FZVlpTkVWS0NGRng4V3oyRWg1NllXcDJiZm5HWGsxCitPRWhhS25lbTJyWWE2dnAzS0lxYUJoVUxtc2s0VWZjMUtUYnE0cmZiaHhrY09ReDIybGltWjRQOFNUWUgzUHNHdThwcWU0MzlhdzM2Citlamk5cVQxckdDcHJhZjVNa1F5bnlKZXVHMGM3M2ltdkxZenVVQXdGL1A2V1RLOHZIRGRqMlFpYThoWUw0YkYyby9DcG15ZE9YYTZJCit1cVFOUEZlcG55LytkK2NNMHFzSDhxTkdDSThNM2d2RzdLRzhpU0pKVm9OSXAxdzVoL0MrZ1NQamdXRTloUjBMcW16cDBSRlBqTFYrCitob1JraTJYTlBKeUNWbXkyVTZLbkhtNlduYm9SY09QRmtTNTl4cVFwRUtaUnBrREhmaTFyZHFsWGdUTVZLVlZMN2gvY25taTFydHhxCit0MjdZbjFuNXhyeVNVaTgxaVlBbHZSMk1OMjNGbS9ua3lIenA5RzlpU29mM1BzMXBFM1BteVYyZGhhU0wxSmllZTMvWmpJNU1raGxqCit4RFBYR25rQ2xnbnMxcHhWMEs2ZDRyYllGN3BSdjQ0Q1c3RHRvanQ2Zi9ZeE83aHhycm1WSjMvZVpEbmQ0dENqVncrT1BidjI3ZHk3CitlLzhPUHJ6NDhlVExteitQUHIzNjllemJ1MzhQUDc3OCtmVHIyNytQUDcvKy9meisrL3YvRDJDQUFnNUlZSUVHSG9oZ2dnb3VTTkZ2CisxbDJISElSQ0FDZWhndzllT0lSMDAwMUk0WVZxOE1KSVZaSXRVcEppRzU2NEdHNzVWSmFYYjVhVnRodGxqd25WMW1hdXlYaWpWcXRCCitGVlJvSzdGb3hpMGtOcGhhWWRoWU5SVXhRTVpEV1pLZDlJWFRRVG1tRmx1VURRbG41VGNxQnJubFlFT2hhR0pYTlpyVXBSMjRzTFBOCitrQzZ1YUJHV015d0VScFdJU2VVWmFjSUU1aVpIOE9BcEozRnJ0dmhuWTVBZFIxaVpWT3c0cDFCVFpobGpsR05HMWFpamZnSUtsNCtmCitrTlpqb0lMMnlTT2FjWDRrWWx5eWZEZ29vV0JTV21pa09IMTVtVTVrc2ZxaXFVVnFOc3lTWE43RnFaNWpXZG9UcjdzU3FhT3RUSDZZCitFYWpNTlpYK2tiQzUzcW9wRERNdXltaHByZ0xiR2FUVWJncnRtOHNtQ3FPcVFSWWJaclY1OHZpanR6WmdOVzJUVEhaRWFnN3JIRnVVCitQcDRhU3E2c2M5RUphN2ppbnBWdXEvUnV5K3hTajlLaWJMMFl5UlhyWHI3V2xDKzI0MnFyRE1Kc0VZWVNWdkFpVXpHSndnN2M3QnFJCitHanlpdVE1ZjdQRy83ajU3VnFrcHFyeXl5SjBXRERCeEMyOXltcjMrWUZFenlScExFNXFHOTFxWVlZVkFSNGhoMEIwV1RiVFJSMU1uCitOQktURHMwaDBsRXJUVFhUU3lkZE5kWmFidzMxMUVUN25MRFRUY3QydGRkbW44MmJjMlYzemJiWWF6TUlkOXh5ejAxMzNYYmZqWGZlCitldS9OZDk5Ky93MTQ0SUlQVG5qaGhoK09lT0tLY3pjUjJDWXZEbm5ra2dmK1hvVEYyZVVDczl1VGI4NTU1NE1yVlVqbUpHRHV1TXVlCituNDU2NmdLeXhNK1QyTDM3Y05xcXowNTc3UUcyL2lrcFZ4RWllN0xmbFc1NzhNSVBMMXZyb1ZkaWZPeTNvdXRrc2NEL1RIejAwayt2CituZTQ2QXBRVDcwbzJaV3oxUlQ1UGZmamkydzRZV2NxTGtyenZNaE5UL1dqdXZ5LzYrUExQTC93Lzg1NHZyK3Q1OGdQK3Z1ZnlTYjhBCitDbkI4cGhFQm1vN25oREh3ejN2UUdLQURIMGpBVDRVZ1ZHWlFJTGplQnNFTWFuQjZHcUtnUCtoMHZ0RnRjSVFrNUtBSnBxQWEvem5MCitYYzRDWHY5S0NNUDJmTXlBOGZ2RERDZFl3emJnN0lRYndaMElxZUhDR0FyUmJqNFV3Z3Z4Z0RKU0hYRWZJVVFWRXB1SXFpTHljSWhVCitqSnYrRk5PMlJDZUpRNGtQdXVJSFVNaStLYjRwaUZVc280Szh5SVFzWW04Y0lsS2o5VnJRUXlpcVVIOW1yT1BtMERnY044WXNYb0xRCitJeDFIQU1ZL0FyS0NkaXlrNVBEWUhEKzZxbzFkbE9QSXRJWElHMFhTa0pUMDJ5UjVxRWcyRXF5UkhZeWp6eXJueUVxSzhveWhURWdqCis3YkZKbzEzU0kyRXd6Q2REaERQNHlYS1d0S3hZTFdXSnNWdStMNWU2ckZrdjRiZXpYOXBTbURkMFh6ZGdaa3dhN1NKbkZETU5NWDM1CitURmRHTTVqRTVHVTFvNGtuMVdEem1YYmcyVGFGYVNacmd2TmtzK3ltT0w5SnkzRGVzR1VpU2Q1d21FaEd0NVNpSFVpcHArbmFDWkw3Cis2Wk9WK1d5aXhNSmhUMU1LbEorQ0ZDUDJubWV4ZjlwbENaWmJKV1QrM0NtN01KSXhTZkdjcDBXVGdsR0M5Q3RMKzlSRVJ6M2FUM3BtCitGRmVpdVNoQkhjcU5ONzVUb3Fqa2FCaFhxcjhYSm5TUElDMG9IUDJKVTVGcWRLUTJnNWp5TE5lcmZnbzFxRG9sS1RsTW1zcVRsckphCitLbTFPQW1PR0NLYSsxS2tzdFJCRVVkRFFwVXBxb0VrMUtsRjJlaTJmZnRRb1l5VnJTRkVSVUs5YVFwNHRSYWttYlhyVHF0YlVwWEQ5CitvVncxZDlVVFpMV2lYTzBqV25uNjFZN3hjYTVtSld4aGlmcFhzS3IxSVd4VjZrUVBpdGMxR25aT1RjVnFGaFJxMEx4bWRxcDZwYWxiCitMNXZZeFFMMG5rQTlyR25WZ3FsOUZ2V29pdTJxWDl1cVZXeFZ0ck5QL2VtNmxzZFoydDZWYkU5YXAxQjl5OXFTOWpXd3dTMnV6dkQrCitPZG1GRGpXb0lGMHRjWis3VnFUV0ZMak1wUzVSaTZrcnNhb0pwdDZNMmhGTEs3Ykd1aGE2REFQc3FTaTdYTlNtVjczTkRhMXhWU0xlCisxeExVcWxhTGJWaVdDRjd2SnUyN25zMnBlOGs3MnJDU3E2ejNYVytCMjJ2ZThyWld2dU05TFcveG0xM0xQbzJxOW1VdWZTY1UzK2dtCitPTUNpRFJ0dWt5dFZFSWNZc1J1TzQ0STFMTno1UnJUQ3l0WHZmby9HM3duVE5zT00vUzk4Uyt6RUQxdll3UzBXc1d4eEdrTE1ialhGCitEV2J2aFYxODVDUy9HTW05a3k2S095d21ITS94eHo3V01ZOTdiRmJuM3ZqRU5SN3VsU1ZNMDVRdW1jbGpYbkdNYWJ3bkd5c1l5bE8yCitzcEcvVE9VcW8xZkxhMzV2bDRrc1o3dXllTVJtcnE4YWthdis1T0k1K2M1c0ZsUmFlenBnQS9QNXpYREdMWjA1Yk9jMGU1blJEL1p6CittZnNjSFdZaVFkTktBSzZuNHdmQXhTVGkwOXdrNXppcHFjdHVudnFjdDFUMUw4UDVpMUdMTHRUc2RNUkJyQnZySE5vRTE4ZkVMNmRICitDZXhnQzN2WXhDNjJzWStON0dRcmU5bk1icmF6bnczdGFFdDcydFN1dHJXdmplMXNhM3ZiM082MnQ3OE43bkNMZTl6a0xyZTV6NDN1CitkS3Q3M2V4dXQ3dmZEZTk0eTN2ZTlLNjN2ZTl0N1NCa05kSDQ3cmUvOVFxNkNBUDYzd1F2dUdaMm1ZbmVGb1BXQm0rNHc4VlVXaU1CCis1SUlQcjdqRlgyYS9ZQ1o4enhmdnVMbmYxVkI1UWNuakpEZDRZVEt1Y04zeHV1UXNiN25MWHc3em1NdDg1alN2dWMxdmp2UCtuT3Q4Cis1enp2dWM5L0R2U2dDMzNvUkMrNjBZK085S1FyZmVsTWI3clRudzcxcUV0OTZsU3Z1dFd2anZXc2EzM3JYTys2MTc4TzlyQ0xmZXhrCitMN3ZaejQ3MnNjRzB2bGxEMjRyWnpyVzI4YmJ0Y2w4NzNOMnVPYlVmcWtRekpGYUpQQU85Rm01M1czNC9tY2JPKzcvdDlqMWtzZnpZCitNaVVPK0RhWERQQ0xUOVZwS3I4eVpucFFETTUwSmNta3lUT2ROVDVFbng4bXhoQVBheEFwcS9DVUx4akZWOVM4a1Q5eWhXdHMwekw0CitKVm5YNDR1aWdsMTQ4MUNmOEtzSTNLZitFcjZiaU1YUzE4LytneTJKSmZCekZ3L01jMzVVME5jWEp4QWgrNEExRU5DNjl4ZG9FUjM4CiszNE1mK3NadkYvNU9QM3lRK1FLQXQ4KzE0WjkvMmRIK0gzZG5oNGQvQWxzNWYxTXpNY2RzQ29qNVNmd3dxWFZiL01jYTZxZDlXQmFBCitSL0orMXFkZERIZUFVWlp5ODVjK21PY3AvbmRjNVFNcUd5TWF3cmQ1QUNWeC84ZFlLcmNzRlFnN0RBaEV1Nk5BRzdnOXEzY1UzUk40Cit6QkpWOWpkd3NYTS9HUWlDUnVaV05XaDdNc2gzUW1hQWhvWVNJeWhqYTFBTGJRSi9vYk0rTDBpRXh2SnJ5OGQ4THBpQXVQZFNON2g5CiszVk9EM2tkSFcxQVZzT09BeEVjbFR5U0VJSVFPSFZpRjdYU0ZaUWdVVkZpR2o4Q0NZcGlHUitnOEF4Z3QyNGM4UTlncHZUSmJIalpnCitJamd1RkpRVlpDaGJIMmgvMnJPREpqZ3F4aWVER1RpRmV2Z3lGS1dHQVlPQmo4Z3RWUEY1NjRJcExSS0pnemlBZ0FqK2llRm5pTnhYCitmVW80TFBjWGhuMllFcU1uaWYrVE1ZTkhnS29XZVRUWVRHb2lmWnpYZUFzb2l2cFhKMmY0UGFISGlrN29NWjFuaTR5SWk4ZkRpYitJCitnZW4zZzZwb2hFMzRnTWE0Y2JPNGl4SmtoOG00ZDBIWWk1TG5pcTFYak1xb2pjcWdkMkFtTlhWbmQzZzNqdVJJWVhUM2RuR1hqdVo0CitqbC96amJvVmp1dklqdkI0ZC9Ob1VPaVlkK3FZai9aNGorNklRWE5Yai9Jb2p1QVlrQUs1ai95b1p3VjVrQWE1a0EyWmRnOEprUkVwCitrUk5Ka1JWcGtUNzNaeHduakFTcGp3Q0prSVAwanYzWWtlMzRrU0Faand3NWtQUTRraVNaa2lwWmtoT2tOaWZwa09XSWtqUTVrelpKCitOcXlYaTl1WWVJclhobzhUWnRUbENqbkVNZm4rWjA3ak4zbjNoSXVDMVpOS2VZMkppRDZaczBnQzVpV3psaWF2K0ludjUxdkt4M3dvCitXSXJUVjN1aDJJcUM5empaTjVaTDJEQmdTWlcraUkyR0JwVFQySXdtdHBhanFKU0dJWTIzMkpSYnVRMW15WlpvS1paWm1UdDh5U1YzCitnZ2FwV0VIUkFKalUySmFMNllWTUtZZXBNcGUvR0psSDZaVEkySmR1NlpSY3VaR1FCSmVQcVRDVG1ZUkcyWHlPNlE1MlVpNVF1Sm43CitzQTRhbUMyWE9ZZUpDV3VrV1Z1Z2VYMnkrWmVpR1pTTzBacm5jcGRHV1lLd09acTJtVjk0U1h3ekV5eW1DVUxJbzR1MGg1cnQ5NVpECit1WnV1eVMyeFNKdU5lWlozV0psaEJtUlFCQWhDR1ZyTG1SZkdDWEYxeVR5ZzJUaGtRbFo1ZUozbFdZaXBPWjMrVUttZC91U0Ryd21mCitjaVNZNzZrdWFjbVkrSGs5bFdtRXd1bUo4Qm1EU0JsOS96S2dwRW1JNkNrakdjT00vTW1OM1FpY25SbVgwT0JwdXZtVzNHbEQ0amtyCitRRW1VRnVxZkhYb2tVamtQR3RvWURTcWQrbWVpRStxTWVobWYwWm1RQ29tVEh0bVNjU1dUTVdxakhQbVNNUG1QTWhwUkdlbWpNWW1QCitONG1qTTBxak1IcWpMa21rTDVxaklQQ2pMWHFoTHFxa1NXcVNRWHFrU0ZxVExIbWxWcHFsSXJta0YrbWxYd3FtWVNxbVk3cHVpRWltCitaem9najRHRWFNcW1BSUlRbXRtbWNUb2ZieXFoY3FwMEdTbEQxZ0NuZHZwdnVxWWxkU1UzZE9xa2ZKcHVuL1ZGdDFtZDVzRlFqT0tuCitoRnB1K2RPYktWTVhVblNNeDVBZkRCWCthZ2ZxcUgwcVFRdGtDck1aZjgxZ3FCdm5tZW1CVFp0YWN1Q3lwOTh5RmJ5QUQvTkpTTGlECitwNGRLb1N1SHF1NjJxSkhxbHBUWUo1QWdjdktCcWJmcWNscm9VT1VaQnlub0ZQL3BIck1xckk4S0wyQ0VyQjFZUVBIQnJNMDZiandKCitseHNESkNra3FnRDNXTlo2Um8xNmxUNWdxMEpDbkJQR3JmczVTZXJKY2FPS20rQmFIKzRLQzVra1pvUjJuVFRCcml4VG9LQ0VTVHdLCityMm1xa2F0eVNpMWxyL3VKcjduRnBKNmtvb01XcGY4S3NIcEVyd1FyYWVkNnNJQUtMZXo2U1FIcnNIQWpyNndRc1NwR016eklxcDBVCitaZndLUjlXNnNmelJzYXJ3c1huV3JZREpyeXVyb2hqYldTaWJzdm9oczVNbWFCSTdzZTQ1cVFoTHE1TCtZcklpWkxNM2l4ODVpMmUvCitvUk1ISkxKZXNtZm9BclZQeVdxbGRuaXZOclcxaEdxdmhrNVhpN1ZjVzA1ZWkwdTlKcmJLTkxiUzhuaW95RTFiQzdiQXRMWUl0N1hvCitCTGZtQkxkV1c3VnoyMHZxOUUybUZyWjF1MnFpaHJjZFJIcTE5Vmo1Q29hRlZxSU1DMmtBZHEvVTU3S1dxR2gwaFdCSnUyV0c2N1E2Cit5MTFBTzZXRXE2TzcxV2pJaGJSU0JhdWJHMU9WWnJIN1I3bEFoTGh5R1dtTE80TUh0bU9VaG9EcWhXYUpPN21ydTM0WW9ybEJDMW1WCitGcnI4Um1XZjYxSzlxN3VhUmFPNUsxbTI2eEt6cTdxS2E3Q00rN3F1MjduYWRWYVdDNEduQ3hYS1MySEcrMUNZbTduSEc3MTdGVm5DCitTeXVqZTdtbHEwWElLN0RVTzJUKzZMdXd2aHU5N2d1N2l5YTdxVnU5N0Z1NWtodFo1anUrMnJ1OTR1dTh2NnV4MU9lL0JVRzhlbWE4CitBK3k5VDhaZzlzdVpDR3FaanR1NHBmbTR3VXUvNjh1OEZxekFGd2E4SDdiQmpnWlZ5QWkrdkR1bzh4dkFJVnkvRjV5KytFdTdkWmFJCit3eW0vc1F2REw2eGMySXZCTEZ5N0M2ekJKZnhFQ1BWOUJJWmUrcnUvQ1p5OTZEZkVXSG0vRER4R0ZZeVoxbHVxY2ZhK0VQeThNUXk2CitTc3lxWExiQ1BldGk1ZnE3NGdxNjJKV3RTTVRGd2F2RlVneVBGU2hsS1Z4a1Y3eThpZW5Da1B2RUVoekJFa3pEUzR6RUJhcStaWHhwCisrUnRvcEVzMU1RWXdDSXpBUUp6RVoxekZCUHEvOGV2R2lPekVXVWJGUjR6Q2haekc1YnZIa296K2FXUm15WlJzdzVtTXhSbDh3NTFNCitzWWNNdllyc1pxRk13aXE4eHBwOHlwdGN5YXZNeW53OHlYcmN5cWtzeTdkN3g1RDh5QTQ2eW1TY3l6S2N5S1VjeVNmc3lXcE15NVoyCit5WmpzeXJHTXpPQm94bFljc3JYc3lNSE11bTI4eUtTc3l6OGN1YjljdzhLY3pjMU16SytzekhsOHpNWDh6WFZjdU5oOHVJVDh6Si9jCit1dFVzdlZITXl4VHN6QTNNeE9XTXc4bU14K0JjeE9JY3pzWTh5OXM4ek9ac3k5RGN2T3Y4enJ2Y3kremNnSTBzeitSc3VnQmR2UGljCit6L1o4enhtU29xTlQwYXE0YTFKaUk5MlEwYm0yYXFlcXQzY2IwcWsyMHExVzBpWXR0YlI0YXgzTjBSc05CQmROUTExNFFqQ05RekxkCitBalJ0dERtdDB6dk4wejF1N2RNL0RkUkJMZFJEVGRSRmJkUkhqZFJKcmRSTHpkUk43ZFJQRGRWUkxkVlRUZFZWYmRWWGpkVmZWQmt4CisrQVBTbk5VNWJaYWFDc1ZmUGRRblI4VGtKd2xuVGRaQW5Td1hKSWlkdXRaQkhiaHJxcHFudUtweC9hOWMzUmR2bmRaNDNkTytwQ1NZCitFOWdxRjhiTldnQUFPdz09CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdmJpXzYyNS5naWYuYjY0IGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3ZiaV82MjUuZ2lmLmI2NApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzFmNDlhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3ZiaV82MjUuZ2lmLmI2NApAQCAtMCwwICsxLDkwIEBACitSMGxHT0RsaEtnUElBSUFBQUFBQUFQLy8veUg1QkFFQUFBRUFMQUFBQUFBcUE4Z0FBQUwrakkrcHkrMFBvNXkwMm91ejNyejdENGJpCitTSmJtaWFicVdnSnM0NzVMTEN0MGZkeTRvZU45L1FQdUVFRlprWFZjSlpYRFhOUDVwQzBUZ0dyT0NxVk1pZGhBVmRxVmJMbXg3M1djCitGWGZOYWJHRnpmYkczUnowYkRPLzJHMWh6SjdvOGNlVDU2ZEIrR2I0SmNpRDE2Zm5oM1ZJOTdibU9DRTR0eWhWVVNiSEtPbGcxeG5wCis2YVdGS0RmYWVjcnFRbHJLMnZxSzJiakltUEZhaUx1S3V4dlkrMkhMcTF0bmlIY0x6Rm1XeTZtbml0eE1lV3M1aWFabzB4WmhUYWhqCityZHpYSGEzbTZFb2QraDErTFc3TVhweDgzUDc5NjJ5K2p1NE8vLzVvR3I4UEhVdnMzNlZqb0NCc3VqVHN4cDV0ME1JQjFNWkxZYjA3CitDQnQrUWxXUkh6LytadG82Mk5MWUQrT3VqN1ErWmxNajBKODBrQ3IxaWFTSFQ2V21lQVhQQVhPVnpOczBodzhmSEF3emtlTEFUejlFCit4Vm8ycUNhMm83QUE5V3o1Y21YSWdGQWhLdTJZYjJxMXJGU3JEbVVaRmVVZ3JRYUxkaFdyaUZaS0dLdDZMTlRTbG9wWHRoZXZySVVCCitkOXJTcDZGR2Nibkx3Q1JZZTJFTG8rVksrQ3hFd0Y5WGtveXBlQ3RabjA1ZFRpcWxOdXBNeG55V3hYa0wxN09WdEh6N2xvTVRkTys0CitwR3NNc3owZEtiVmN5SzdMWHNXYnlLU3dlVEE5NXFhdERIaG80VDdUcXFzZFdOMXRvYUZiRXhOTUhNa1R6aW1nUjJjU1pmcGdJOXF0CitUOGFlUGJ6NElRZWJlTGNzWkR6NTZlY2p2MmcvOXozNytmVE5kNit2UGIvKy9meisrL3YvRDJDQUFnNUlZSUVHSG9oZ2dnb3V5R0NECitEajRJWVlRU1RraGhoUlplaUdHR0dtN0lZWWNlZmdoaWlDS09TR0tKSnA2SVlvb3Fyc2ppZHlyQWg5eUwrSzJubmcvMzFXZ2pqdHpOCittS09POGxGSHhobEp4Umpra0VZMnRsb1d5NTFrMm14QVZvYVFRa0ltUmlSdUl5RW1ENVpJb21lVllNTElaaE1rUzZyV200dkplY1psCitjV0JzUm9tVXorVmx5bWc0YldmbFluR1dvNUZPR1owMkZwaFBZbWJrbUhRbVJ4UlNnekpYcG50bC9VbG1jSWNhNUl0dmlsSkp4Mk9TCitUa3JabzVrNkNnZW1mQkRGS0pQRjdaUlRJWnNNZ3hVaXA0cUtLRk41VXJvcFNLRDU0eGFzVzlwNmE2NVZCaVltYi9kYzJxWnV3TWFICitsYVh2WkViK0ZiS1BDS3BrbTY4S3V0Qm9Uc2haV3BONk1ScXRtNkgrOFptVHVsYWJxcGxoWGlrdU50QmhncXFuTTZTTGE3akUyblpkCityR3pLNUNlVXFNeEpxNmwyWWF2dlRuNnlHVkc3ekduNzdhWmd2T3Z1cnV2R2V4bkNuZFhMcTVZQ0MyVnNtZzJMVXpHY1RTbThyN2ZnCiswcFVLeE1nd2RPZFkvTzRKYU1rRmYvcHF5aXYvSmF1OUNZL2FzcWF0T2x3bnp1TTZKdkhNT3NQc1phUVovM3p6VjBOZmRuUzRITDNjCitLc0JacG5JazAxTkNIYlhQMW80TXNTamd5QXpwMHhzZGR6SFJIcU96MjI4OWQ4M3dtYjQ2ZS9haWJhdVpOaFhHTVd1ejNLak5HNlZ6CisrZm9vSFkvcDhRMGVqWURMNlBlTzloWCs0K0RWc1JyNERqQnlQTUxqRTV2K0lMblVKMVFlOXQrQ2I4NTVqNGQvanJuVmZTdU9RdWlpCitOKzU1NTVxcmJqanJyVHQrWTR1eXowNTc3YmJmam52dXV1L09lKysrL3c1ODhNSVBUM3p4eGgrUGZQTEtMOCs4N3JXR1lMcUkwVGRQCitmZld3TTI0OW9YS0RnQy95MDJjUGZ2Z2trUEo5N3QxMzcwNzVIS292ZnZ2dVExS1hoOXpLSjZWMzdBN1AvdnY2NzM5T2EwQkZub1JLCitRRzkrMlBsSk1MRG51L3p4YjRFTXhKUEovRExBL3NYdkYwRW9nc2dHNWhRRGt1cGVDT3lkQWhrSXd2Y2RBWUplcVlkZnltT01DdkxLCitTd2U3eUtxZ2tMVTRkWkIzQWFSYkNHOFl3aHJPRUdhelVhSEpOdUtib3FqUWFSQk1TRHJxQmtPdTRXOXVUQVFiRHA4SVJTVjJqRnRtCisyWTcrdGh3SUR5emk2NFZJQktJTXZRaXArL0d3aXQ1VGt3MmppTWJzR2NWUlBmeWhCVGRHcTdnWTZvdm9HMVVMNnhpbUpTd3RWTGpUCitZUnIvbU1aWkZjdEpSWlNnTHN3aVI3M2dNV2NzcXcwSngwYThEd0p5a3NBajRDQ2pScjdUMmFTQ2lRVGlJaU1Hc3ZnOFVvckJreVFsCitUN2s3UzNhTlhRSkVtMmxXeGNsOWJSR0ZuV0ZNMlRBSXl1T1pFcFVwT3FOSExoZ01YOWFoWHFxMDJ4WlRRckNkUlF5V2Rwb2xxK1lrCit1VGRxTW9HOEJPRW5aU1NzSFlMUlJtdWtGQW5GR0tPQTJheVZzQmpoTmtVZ1RWY2FiNWZWTk5FMUY1Zk5rMzN3blkyeTJpT0JXYlEyCis4ckZqOWF4TE5CbVp5M1cyYzRIMHZGd1hjVG1VZVhheG1CbVVsZjMrTGttU2RKcHJuNWtiNTBBdldydUNVdTZnM2dLTlFydFptbnMrCitkSlVVL1dFLzZialJnQUlVb3l4MUowZTU5OUkwZU5RK0lOWFZQYUVIMFpUZUFaekUyUUk3V3dyVTdIdzBLek5kVDAwck9rcWNralNtCis5anluVXZNSnlhQktWWDVNRFNKTjlqSFVqK1V6cVRDZEd0V2NPRUNKeUFtZjhDcVNiV0RUeExTaVZhMU1aQTFiNStiV3Q1SW1aSEkxCitEajJZWmRkZ2lTeXZlbDFyWGMzdzE3YlNOYkNpSVd4aERVc0d3eW9XYk5kWXJHSVRPMWpDSmphdFJYSXNZcy9nVjdiZXRiSmtoWnRNCituZHFDaGthUEo2ZllUZGsyZzlweVFVbVZySlZKUURTNlFuYWs5cEJYMVJ4WHh5ZmEybzRMbW9HN0xXNm5WZEpqZ2ZhM2ltemMvRXorCitLOXViS05kaXVXeXRTSno3WEtiQ2xpS3p4YXB1RStmSjNrNXdIVk9vWDNBQjR0dklBWUtueEVVcDRZcDdYajVPZDZMTHRTNXRtWXRRCis4TG8ydXE1RmJuczUrTjdYZWk2OFQ4MnVmbDNKMi9UeXQ3OEJ4bTZCUzVmYjlISjB2WEk1N1gyamNVdjUwcGU3ODQydWZmT0xYL2YrCit0M1VEUG1BUzU5WGQ4WDYzTVIzMnNEOXRPMXp4ZnRpNHkwcGhjakVNWWRWK2RzSVNwbkI5WGZ6Z1Z1UzR4Z2Jlcms3OVMrUGRwaGlkCitDUmJ3a0VNTDNLcEttTUg2T0M2T1lheGpLR3RWTmREbE1ZbjFlMkVOWjNqTFFkYnVGeGUzNGdyTDY4aGRSYStSeWF2aVFvMDJnNTFGCitrcE43NFdBcFYwckdGdW15MHNRczN5eHpPY3BhdGpPWS9lWCtaYm9sczA2d0NYU2Jyd3pXUHl0NXc5aGRzSFFmSFZNMEw1UE9NZlB6CittQzA5WmozSFdNNlhaUFRvRm8zblQ3TnYwRjdlM0toSitXTkhhNXJQZTA0b3BVa040RkRmK2Nad2ZuR2ZXWTNwSDU5YW0yVUdkYTUxCitQWjVkajdnbGIrNFhwNWQ2NnlsM1ZOYXgvblZ6SHgzblpNOVp1Q2l1dHJWN3ZOOWdaM3QxeFc3eGpxY3Q3WW9LMmRsVVpuYXNWKzNxCitZMmNxd3NMMnRZMnZMZXJyRGZ1NjhlYTJ0NDBkYm1TMzJuSXpmcmVWa1libEorZDczZDhHT0x4THplRnRIenpoQzFlMHFnVys3MDVICitmSnJsSnZleUxiNXNkSU43NGdTbk5zTS9Edko2TjF6azJINWR0MVZsYTQ1djh0V29mamJHKzAxaGpVdDgwd08vZE1nUlh2TCtuT3NjCitDSE0xUXMvZnc5ZmhrRXRNbXJCaG92TVcyTW4rVmVsMVpicGNuZjUwcjdLTjZDTXBPajZEam9TZlovM28xZEc2RXJ6K2RhNVBkZXhrCitMN3ZaejQ3MnRLdDk3V3h2dTl2ZkR2ZTR5MzN1ZEsrNzNlK085N3pyZmU5ODc3dmYvdzc0d0F0KzhJUXZ2T0VQai9qRUszN3hqRys4Cis0eDhQK2NoTGZ2S1VyN3psTDQvNXpHdCs4NXp2dk9meDdzTnJYZnp6cEM4OWd5UUI2enFiZnZXc0w5Qmg3eGd5TmJkKzlyVDN6eHdyCiszYWx5MW43M3ZBY2RNdzdyeHQ0TGYvaUU0K0xYMnJKSDRpdC8rYkxOdlNJN0pYYm1TMy82MUsrKzlhK1AvZXhyZi92Yzc3NzN2dy8rCis4SXQvL09RdnYvblBqLzcwcTMvOTdHKy8rOThQLy9qK3kzLys5SysvL2UrUC8venJmLy84NzcvLy93K0FBU2lBQTBpQUJXaUFCNGlBCitDYWlBQzhpQURlaUFEd2lCdG9jNG4rWTZGQ2h2RllnNnFhT0JHL2c2SE5pQnEzT0JFN2d1YTFJMUZDZDFKS2hzWGtWYTRqYUNQUlJECitYb09DS1VnMU1NZUN0VlFaMFJkVlpRVkQvK0kxZHpJbVdzTVQwQUtEVW1lQ1IzSTNISE9FTFhkU2FoTW9QL2cwbi9HQ1VkS0VUdmduCis1TU1uSjNNWVg0VkZSUWdvVUNoSWJvTW15YmRTSUhPRllxaFNmUUZvSmxXRFFHT0VZak1MczJBNWI3aUM2a1F6YUNKNmF5aExYNlZOCitKT05BZ0hWVWRTaUh1MktGUG9hSEQ1UXlrclpEc1lFcTNWUVNVelE1cXpVeU1uaURPVGlHTm9lRkdQRTgvRFpqUWpqK1h6aElpWGZtCitpYnltZWdlRkxCcWtpWkZZTTRYb01YcWppcU5IaXNrU2lrcUlLSVgyaURBM0s5bVNKOVFpaVptQWlxM1locklJakNvWWpPckZpbFFvCitkR2FtaWJ6b01seG9WaW96QnJoSWc4eW9qRE9Zak02aGk5WG9YWmNvaGYvd2hWYUJXWWk0TFpYUWg3V1loTnNpaWw5R2k2ZUllNGxZCitLc1A0VW02eVYrMDRqS1ZJVjdVNGlsVklWS2tZS3pYR1VBWkhTM1FvR2JFbmlSdjBqL3RZV3Btb2pxVDFoKzV5VEFOWmFZNVdoYzhnCitROFFFSi9BSWpsclRpK2FJTWtuME03bGdLQXVwUFFUVGpXaUlleGZwREJaaGhwKzRQUS9aajJUWVVOcFloODFDa1JzSmV6S1lTVXQ0CitoaTZwaURCSmt1T1lramk1a3M1blNVQTRKWnordUkxS01wUEh5QklqZVRWcUJwS3ZjWU5SbUNUUkNKQk5tWXRQYVpWMjJJcDVjSHY4Cit4cFZFV0pWUWlaUk1LWmFrWVpSUytITmt5WVJhcUpZdGFJUlM2WTB6R0kvelJtbEVKb0lLRm9JZWFJRjZtWUVnNkpjZitKZU5scGQvCitZMHFGR1RzWTJKZUNHWmlLQ1ppTnVaZU8rWmlNQ1publpaaWtnMkNXYVZDWWlXU2FXVjZJNlhCOG1aaVJLWm1pR1lHbGFacW5pWnFwCitxWnFyeVpxdDJXdURPWmw0dVppa0tadXgrWm16R1pxNVdadTJtWm1jMlp1ZWVabSthWmZDMlYrd3ladXBacHkwZVp1NHVaekh1WmxFCitPWVVLODVVbGFKQTZ1SlRTdVRYVTZJdlRlSmJ3cFV3OUNEbHVLVFpBV1ozTjhUWmlXWmR1bFo3VWFZOXM2WjMrTnFpZERqbU5tRmlSCitudEF0S1JpSTlxa25oK0dGZ29oODQyaVRxdkNSN1FtV0RtbUk3OW1UNmhKS0NncFZCa3BtNVJtZXdRV09EUnFTUDVtVE1XbWhGTG93CitYeU9QemRCQ0MvVmZCVm1KQnFPUzVCbGZJUG9tSmVxT0d2cWQ0MG1YNzFnTDUza204UlFzY2RPaTZzaVJDSHFpT01xTkRHb3V3Q1NpCitUVUtDU1htVVlMU2ZSem1IWVltZUQzbUs5OG1lSStxTEtncWhVYnFXQkVxSURwcWhVT3FTNjNtT1hmcWtQSnA2U2dwZ0YrUmdUbk52Cis2VWlsOE1pT0tjcHI5QWhIek5nc1VqcGlTWk1SWEdxaWR6cUNWN2MyRVJxa1ZMcWljcm9YZEVvemI1cVFaTlNlaWtpbWlTaVJPRUdrCitZTWhtK0ZpZlBUbzV2N2RQR05reVdUcitweko2b1E2YWh5NzZwMTZLcVN5Nm9ZTHFwNkRxcFRCNnFxVTRvZWVJa0JqemhEdjVpTk1aCituMU5hcFVsS3EvRHBsT1Q0UDErNnFUd3FYYkVvcXA3bHFha2FvNXFLcXo2Nmtsd3FURlFrV0pBelYwWjNWMzFLb3NUNW1zbXBtN3VwCituTUg1T2NDcHJkYUtyZG42bTl5cVU1VzVyZUs2bWVVS21zMDVtdGVxcnV3YXJ0N2FydTQ2cm5jWnI5OXFyL2ZhcmVsYXIvbXFyKy9LCituUHZxci8vcW1nTkxzQVZyc0FlTHNBbDdPOGFuc05QM1U5WmpLYUhhc0lEMHNOeFRzYzNEYmk4NnNmeHphUHpSc1pPVXNlNjJzUjl5CitIbzhCSStSVXAxS2hobE1Wc2hjN3NnTVNHOE4wcFVHWmk4SEVUMktSWVV4R1NTMzdzaDYwak11Q1pnRCtTcWduNlUreHRMTFRKcUlTCis1YkluRWtENytMRTlxeUFTUVNoQkNCWDNnMGo2NktIRlpiUkRTM0NraGtmUXRMUXU5VXFHS3JKUW15RCtzMU8xTXBjaVJyWW45b3BtCit4a3JQTWtPMFZFVnFlN1FOZEZsbTJ5SUZwb3h1c2FwMWV6TzhsVFdkRkpWdTI1VTNxaktwZURCaFd5STFCS3g2Q3lKSkpXbHR5YWhXCitkQ3JSZ293ZjlrS0gyNnMzcVhyU0FrVitCTG0wODZFdkthWU5pcklacHlxbEsyTHN4Ym1paWo1eEc3cWpLendoOW94QThrOGVDbXRmCittMTArcFRGWHlyZ2tFcnkwR3lEZDVRMnlrYnRtdEUxRHRGTjJZVUdZMnJhbnlqekRxM2VQaTA1UE8zVStJRXpGNnJzVjhieWcyNW1UCitCcEpTKzBhcnlxblRlMzNtQzFQK1dVVnYraVlFNm90VU16c3M0dXROcHV1NnlHbE42YXV4V1d0VU1iRkdXWlc4UzZHemExaGlYSEpnCit3NGxEMUp0MzhFdEJOT1cvTk1kTit5c3FCWXd3RkR3WEIxeWN4Q3NnREd4Vi9kdSs3c3NkSEF5aEZ0d3VKRnkvSW95NEd1eXhFandRCis3T3RwTXhmQ0xFd25Kdnd5Tkd4VEQ2cWpLa3dqTHZ5KytRakJQVnkyVW1URDB6VEVUWVhDV3FyRDlNSERNZXh4dU1iRUFkeEdBWndKCitzTm9DUU9HSDJNdFpqaFZaU1dkWnI3ZDBXOXgwMGNxc2VBVjJaN1ZYejJwWllOeDBYUnhYU2FmR1hSekdVd2pIYndWWmN4ekhzY2ZHCiszOWhFV1d6SGFsWEgyL3NhWXNXcnhZcVNNbnh4QTZ4eWhvUnZpVHhweU1xa1YvWnk5K2lQRU1mK3YrcTJjcWFHdzhCU3hFc0dhWnlSCitqV3NXWm1kbXlNOTJ4TE9HeUQ5Y3lmZFdjN2lCTjVEc2I2NzhiNlpNeWFXVmNxamNZNlhjYktmTXlTQUdpcU84aVVGTWFKbmNheGg4CitycHVjYm91Y3lveE1YVGtzeWJQMnlnWm5ZeklYUnJYc3hMZnN5M1dteTVBOHdHSDZXYmg4YWRtTWFOZXN1c0NNUytBTXc3UmNhd1VICit3Z201b3R6c2NzOHN5K21Nek5XOGNTam16ZU5tenJrY2FVcjR5WUZHemhoMHo3Mzh6NGM4MFBhTGN2Szh5bzA4bnU2OG84NGN5L3FNCiswQWR0eWF5OHJjUmNYc1k4eVc1NmJ1S3NwdFBUendrWDBDNlh6eDAzenkxTXpjY2NuZ3hkY2ZEY2JORTh5eWF0emlTZGJTRmR6Z1g5Cit5eHFkYVJ4ZFpJcG0wYi8raWFZK1BjZ2VKczJVRVczS2pLZVFHTW1QRE0yY0hOSEpiTXYxRE5LQWJNcFlMTktKMmtIMUk5VzVUTldrCituTld3VEhKOU05U0tuTkRMN01ncTdZcGV2ZFRhL05KdVVOUlBqWE52YldRS3QzTndQZGM4blNOaGpSZHRUYzl3cXRRT2pkWitQY2xOCitqYzRUcmRCeS9kVjBiZGNqcDYyU1pOWUVkdGRyM1JGNmpkS0gyczZWTFlxTi9jdUNEZE9FVGRZWDJHNmY3ZG1HZmRnM0Y5YzdndGV4CitGZE9Ydk5DV3JWNnNEWkYzS05HcWJOVDZGTnFLRFd5aVhkcWtYZGVML2RpYXpkWW5EZFhzZk5tdVhXVnE3ZHVSRGR6blBOcUpyZHZNCit2ZHU4WGRHNERXYW4zYnlwVGRGbFRkem1ObTR1ZmR6VGJOMkZiZHZGTE4zT3ZkemtIZDdSRjkzYkpmM2IzOTNaS1ozZFNZM1oyQXpaCiszczNaQWh6ZDU1MW1OdjNPenczVTVsSEdwZlBmbDNOR0EzNTFSbWZnajZYSGQ3eFlVS2RaQ1I1MXJHRTJ2VkoxRTA0ZUFVNDVGbDdGCisxaHRNR3Y1TEhON2hYWjNFSVM3aUkwN2lKVzdpSjQ3aUthN2lLODdpTGU3aUx3N2pNUzdqTTA3ak5XN2pONDdqT2E3ak84N2pQZTdqCitQdzdrUVY2OEUrRVFocXJBUXM2YVptaXJ6WXprUUM0YUFtbUl5Z0hsVFM3a1AwRzNnUko4VkI3a0FHQ1JiUUI4dXFmbFR1NkNpNGpsCitlaGptUHM3bGFmNThYQjdGYXU2RFI1NmFCUUFBT3c9PQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3ZiaV9oc3luYy5naWYuYjY0IGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3ZiaV9oc3luYy5naWYuYjY0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkYWZhYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbWVkaWEvdmJpX2hzeW5jLmdpZi5iNjQKQEAgLTAsMCArMSw0MyBAQAorUjBsR09EbGhCd0hKQU9jQUFBQUFBQUVCQVFJQ0FnTURBd1FFQkFVRkJRWUdCZ2NIQndnSUNBa0pDUW9LQ2dzTEN3d01EQTBORFE0TworRGc4UER4QVFFQkVSRVJJU0VoTVRFeFFVRkJVVkZSWVdGaGNYRnhnWUdCa1pHUm9hR2hzYkd4d2NIQjBkSFI0ZUhoOGZIeUFnSUNFaAorSVNJaUlpTWpJeVFrSkNVbEpTWW1KaWNuSnlnb0tDa3BLU29xS2lzckt5d3NMQzB0TFM0dUxpOHZMekF3TURFeE1USXlNak16TXpRMAorTkRVMU5UWTJOamMzTnpnNE9EazVPVG82T2pzN096dzhQRDA5UFQ0K1BqOC9QMEJBUUVGQlFVSkNRa05EUTBSRVJFVkZSVVpHUmtkSAorUjBoSVNFbEpTVXBLU2t0TFMweE1URTFOVFU1T1RrOVBUMUJRVUZGUlVWSlNVbE5UVTFSVVZGVlZWVlpXVmxkWFYxaFlXRmxaV1ZwYQorV2x0YlcxeGNYRjFkWFY1ZVhsOWZYMkJnWUdGaFlXSmlZbU5qWTJSa1pHVmxaV1ptWm1kbloyaG9hR2xwYVdwcWFtdHJhMnhzYkcxdAorYlc1dWJtOXZiM0J3Y0hGeGNYSnljbk56YzNSMGRIVjFkWFoyZG5kM2QzaDRlSGw1ZVhwNmVudDdlM3g4ZkgxOWZYNStmbjkvZjRDQQorZ0lHQmdZS0Nnb09EZzRTRWhJV0ZoWWFHaG9lSGg0aUlpSW1KaVlxS2lvdUxpNHlNakkyTmpZNk9qbytQajVDUWtKR1JrWktTa3BPVAorazVTVWxKV1ZsWmFXbHBlWGw1aVltSm1abVpxYW1wdWJtNXljbkoyZG5aNmVucCtmbjZDZ29LR2hvYUtpb3FPam82U2twS1dscGFhbQorcHFlbnA2aW9xS21wcWFxcXFxdXJxNnlzcksydHJhNnVycSt2cjdDd3NMR3hzYkt5c3JPenM3UzB0TFcxdGJhMnRyZTN0N2k0dUxtNQordWJxNnVydTd1N3k4dkwyOXZiNit2cisvdjhEQXdNSEJ3Y0xDd3NQRHc4VEV4TVhGeGNiR3hzZkh4OGpJeU1uSnljckt5c3ZMeTh6TQorek0zTnpjN096cy9QejlEUTBOSFIwZExTMHRQVDA5VFUxTlhWMWRiVzF0ZlgxOWpZMk5uWjJkcmEydHZiMjl6YzNOM2QzZDdlM3QvZgorMytEZzRPSGg0ZUxpNHVQajQrVGs1T1hsNWVibTV1Zm41K2pvNk9ucDZlcnE2dXZyNit6czdPM3Q3ZTd1N3UvdjcvRHc4UEh4OGZMeQorOHZQejgvVDA5UFgxOWZiMjl2ZjM5L2o0K1BuNStmcjYrdnY3Ky96OC9QMzkvZjcrL3YvLy95d0FBQUFBQndISkFBQUkvZ0QvQ1J4SQorc0tEQmd3Z1RLbHpJc0tIRGh4QWpTcHhJc2FMRml4Z3phdHpJc2FQSGp5QkRpaHhKc3FUSmt5aFRxbHpKc3FYTGx6Qmp5cHhKczZiTgorbXpoejZ0ekpzNmZQbjBDRENoMUt0S2pSbzBpVEtsM0t0S25UcDFDalNwMUt0YXJWcXlRQllOMWFWU3ZYcjFDOWdoMnJWT3hDc1Y0QgorbUUyYjBHeER0MlRqdG5XbzlsOWR1MnJyYXIyYmwrQmF2UUwzQXBaTGVDNWR1M2o3N2cyTUYvRkF0SXYxQW9aYitHZmV5NWd6YTk3TQordWEvQnlKNFhJOGI4K1BIbDBaa3JFNlhzdUNEcjF4RDVpcDdkMm05cHY2SVpxeFlLK3pQQzNnL1QwbWFiR0xkazRZRUg3d1lLM1BaQgoreXF5WFN3LysrM2wxMzlPelM0UitIYnRyN2VDcC9udi9icDE4K1BNS3VaY2ZqNzc5MmZYbTQ3dWZ6LzUyZmQzMDh6dS9YM3UvZnYzTgorK1NmZ2YvTUZhSjk4QkxwbklINElKb2plZ3YwZDZHQjdFRUk0b1hZVmRuZmhneG9PeU9DRzRXWElINGpUaWRnZ2lTVjJLT0dIS0dhMworb0lVdHF2YWlpakV1TnlOOE5VcDM0NGc1RXFZZWY5SDFLTmVQSndZcEpGbEVlaGpoa1Q3aXVDS0xUTVpsNG9sUmdqV2xrbFYrZGVXVAorV1dwSjQ1Smdkcm5WbGxDS09lYVhNSnJaRlpwZnFta1ZtV0c2U1JXY1Jzb1pGWmwxMmhrV216eGVtQ2RYZUFyNTU1bE9nam5vZjRkZQordFNPVkcwS1dhRmwzR1Zwb25INTJadW1sbUdhcTZhYVkwcGptaEpwcG1ScVFiVGFLbTZnZXdnbmlvMnVTT3VtcS9qcE8rcW1EckU1RgorcDZBdFNaWmVTcmYyV090RW9aRW1tMkMvQXN0bm42Q2FwS3RqYkNsV1praTk1bGhzYkxjUnR4bWxIa1ZiNDdUQldjdVljR3Z4ZWl5agorZnA3a0diT0pFWnNjU3RyR3lLMVQ3YmI0YmxQeG9qZ3ZVNEhpdWx1K3Z0bzRMcGNrM3J2VW9sakN1cStucFpwNmNLR3owdW92d3dtWAordTNDUkVTYzdzWklOSnlod1diSlc3UERGWEdaTTRNWkkxV3N2eUNGN3JESEtaWXFNS011U3ZtcXdTNXlPeXBISkFjUDBLOGs0ejV4cgorUlR6L0M3RFBMTzJjcmREUEVyMlMwUjMxckRETlFCL2RNYklTUTAxUjBGT1QrL1RQVjB2dHF0WlZjMjFzMHdqTExPTkZKRzhYTmRrUQoreTV6MlVOeStUVzNYYk44SG85eEJ4YTN6L3RvM2x6MGkzbmxqQlBoYmZHK1VaTW9xRzVkYjIrS0o5TzdnRERIZDk5ZFVzdHBzY3NnUgoreDZDenFDME8wdU43MHowNXhWbEhkTnB3Z3ZVSEdXckZlZjVScHBHSFBqYXdOZGR1ZTNuQjVuWXVmc0ttdS92cmhMLzNrdVJxcTFUcgorNnBkL0crNkh5bUdMZHZDN0RsKzQ2Y1lEN2F5d29TbGVYR090ajVSbm5aQUxQM3Z4N0JiMkovaXlrNisrc3ViVFphbnoyWkoydGUyUgorc3Q4KzlOYUZIeC94MUpmZjVHRnowWjkvK0RjM2M5RW5TSzRyeWZMRzF6ODlHYVk2QWp3UUFSdm5RTGZCcjI0WHBGcml6R1NrK3RsdgorYU9KYlh3VUx4ajMvZ1RCNkRCd2hDRDJvUUxCdGtJUjY2bUFFVlRlOUFxcVFoQ3pNaWd2TmhzSWJybkNHL202WklBQjkrTVBxd2ZDQgorSXJ5aERJMTRRaVEya0lpVXlxSDNkcWhCSHRvSmZTWnM0Z3UxNkNZc0dwQ0tZRHlpbkx6NFFTNVc4WXdjakYwV2t4YkNKeEtSakMwTQorb3hubG1DVTQ2dEExOUJQaUNPMDR4WmpNOElCcS9HTDYzaGpJTWxvTml0aVM0dXYrYU1VeFJrNS9paFFYSWhNSlNVYWlVVXpncTZSTQorTEVtaFI1cUxrMkxzb2llVkJjbzVZbktVQ2l3bEcyT0l5cXlvTW9OcFBJc20vVGpKUk1LeWE2OThKWVppQjdrRUxxMlc2T3ZsTFQ4SAorVEY2Mk1KZk0rUjMrbG5uSUFCNXprOHpCSE9aa3M3L0JxRXVYd1h3bUxTMUR6ZXN0RG5tTnVkNU1zcWxEWlBLR1dNa3pUKzlDQmMzMworNVBHZDhJeW5QT2ZKd2tpbExwMzcvZ25pTjhkWnlEZ09jaWVuQ2FkdWRuYzZhbmF2blQzMHAvU0tva3ZIOWZPTy8rUm1xeElLMFlVaQorRW9zQk5WejJ0bm5SUjlLelV4eUZZakF6cXBIZWhaU1FiZHhZRUJFcVVoY1ZNMFdUYkdoTlpCb3IrN3hOajhTTWFUN1RKYzFUZ2N1ZworQmYyTE5abmxLT0RwMUtZQ2JSNjR1amNaME9CeGU1RlIzakFmcXNTZE5pdWp1Y01uUG5sM3VheGlyYU5JM2VwM2hybzgxNjF1TkxiQgorRzAwZk5rM2FiRythQWlYcWNLcWxHRzhPeTZoZ0xhbmcrSG5VakVSeWlCRlY0VnBaaXRLYTVyV0VnS0pqbGRncEtzNWQ5S09RamV5bQorWGtyU01kbnpwWWF0cFdZM3kxbDZOWEdCM1Jsc1o5ZUR6cDd5ZEttblcxZEFsVG5hUTk0enJ1RWtTMnRVbmZyYTFpSVVkUnZsSHVldQoraVM3TjJkYWljMVZuY0VFejNOLzZNYlZ5TlUxVFYwdFVkTDNWdUY2YUtuUWhKZHJwV3ZlNjJNMnVkcmZMM2U1Njk3dmdEYTk0eDB2ZQorOGxJa0lBQTcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYV9hcGkudG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tZWRpYV9hcGkudG1wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjAzNzAzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhX2FwaS50bXBsCkBAIC0wLDAgKzEsMTE3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIGJvb2sgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjUvL0VOIgorCSJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuNS9kb2Nib29reC5kdGQiIFsKKzwhRU5USVRZICUgbWVkaWEtZW50aXRpZXMgU1lTVEVNICIuL21lZGlhLWVudGl0aWVzLnRtcGwiPiAlbWVkaWEtZW50aXRpZXM7Cis8IUVOVElUWSBtZWRpYS1pbmRpY2VzIFNZU1RFTSAiLi9tZWRpYS1pbmRpY2VzLnRtcGwiPgorCis8IUVOVElUWSBlZyAgICAgICAgICAgICAgICAgICAgICJlLiZuYnNwO2cuIj4KKzwhRU5USVRZIGllICAgICAgICAgICAgICAgICAgICAgImkuJm5ic3A7ZS4iPgorPCFFTlRJVFkgZmQgICAgICAgICAgICAgICAgICAgICAiRmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IDxsaW5rIGxpbmtlbmQ9J2Z1bmMtb3Blbic+PGZ1bmN0aW9uPm9wZW4oKTwvZnVuY3Rpb24+PC9saW5rPi4iPgorPCFFTlRJVFkgZmVfZmQgICAgICAgICAgICAgICAgICAiRmlsZSBkZXNjcmlwdG9yIHJldHVybmVkIGJ5IDxsaW5rIGxpbmtlbmQ9J2Zyb250ZW5kX2Zfb3Blbic+PGZ1bmN0aW9uPm9wZW4oKTwvZnVuY3Rpb24+PC9saW5rPi4iPgorPCFFTlRJVFkgaTJjICAgICAgICAgICAgICAgICAgICAiSTxzdXBlcnNjcmlwdD4yPC9zdXBlcnNjcmlwdD5DIj4KKzwhRU5USVRZIHJldHVybi12YWx1ZQkJIjx0aXRsZT5SZXR1cm4gVmFsdWU8L3RpdGxlPjxwYXJhPk9uIHN1Y2Nlc3MgPHJldHVybnZhbHVlPjA8L3JldHVybnZhbHVlPiBpcyByZXR1cm5lZCwgb24gZXJyb3IgPHJldHVybnZhbHVlPi0xPC9yZXR1cm52YWx1ZT4gYW5kIHRoZSA8dmFybmFtZT5lcnJubzwvdmFybmFtZT4gdmFyaWFibGUgaXMgc2V0IGFwcHJvcHJpYXRlbHkuIFRoZSBnZW5lcmljIGVycm9yIGNvZGVzIGFyZSBkZXNjcmliZWQgYXQgdGhlIDxsaW5rIGxpbmtlbmQ9J2dlbi1lcnJvcnMnPkdlbmVyaWMgRXJyb3IgQ29kZXM8L2xpbms+IGNoYXB0ZXIuPC9wYXJhPiI+Cis8IUVOVElUWSByZXR1cm4tdmFsdWUtZHZiCSI8cGFyYT5SRVRVUk4gVkFMVUU8L3BhcmE+PHBhcmE+T24gc3VjY2VzcyA8cmV0dXJudmFsdWU+MDwvcmV0dXJudmFsdWU+IGlzIHJldHVybmVkLCBvbiBlcnJvciA8cmV0dXJudmFsdWU+LTE8L3JldHVybnZhbHVlPiBhbmQgdGhlIDx2YXJuYW1lPmVycm5vPC92YXJuYW1lPiB2YXJpYWJsZSBpcyBzZXQgYXBwcm9wcmlhdGVseS4gVGhlIGdlbmVyaWMgZXJyb3IgY29kZXMgYXJlIGRlc2NyaWJlZCBhdCB0aGUgPGxpbmsgbGlua2VuZD0nZ2VuLWVycm9ycyc+R2VuZXJpYyBFcnJvciBDb2RlczwvbGluaz4gY2hhcHRlci48L3BhcmE+Ij4KKzwhRU5USVRZIG1hbnZvbCAgICAgICAgICAgICAgICAgIjxtYW52b2xudW0+MjwvbWFudm9sbnVtPiI+CisKKzwhLS0gVGFibGUgdGVtcGxhdGVzOiBzdHJ1Y3RzLCBzdHJ1Y3RzIHcvdW5pb24sIGRlZmluZXMuIC0tPgorPCFFTlRJVFkgY3Mtc3RyICAgICAgICAgICAgICAgICAiPGNvbHNwZWMgY29sbmFtZT0nYzEnIGNvbHdpZHRoPScxKicgLz48Y29sc3BlYyBjb2xuYW1lPSdjMicgY29sd2lkdGg9JzEqJyAvPjxjb2xzcGVjIGNvbG5hbWU9J2MzJyBjb2x3aWR0aD0nMionIC8+PHNwYW5zcGVjIHNwYW5uYW1lPSdoc3BhbicgbmFtZXN0PSdjMScgbmFtZWVuZD0nYzMnIC8+Ij4KKzwhRU5USVRZIGNzLXVzdHIgICAgICAgICAgICAgICAgIjxjb2xzcGVjIGNvbG5hbWU9J2MxJyBjb2x3aWR0aD0nMSonIC8+PGNvbHNwZWMgY29sbmFtZT0nYzInIGNvbHdpZHRoPScxKicgLz48Y29sc3BlYyBjb2xuYW1lPSdjMycgY29sd2lkdGg9JzEqJyAvPjxjb2xzcGVjIGNvbG5hbWU9J2M0JyBjb2x3aWR0aD0nMionIC8+PHNwYW5zcGVjIHNwYW5uYW1lPSdoc3BhbicgbmFtZXN0PSdjMScgbmFtZWVuZD0nYzQnIC8+Ij4KKzwhRU5USVRZIGNzLWRlZiAgICAgICAgICAgICAgICAgIjxjb2xzcGVjIGNvbG5hbWU9J2MxJyBjb2x3aWR0aD0nMyonIC8+PGNvbHNwZWMgY29sbmFtZT0nYzInIGNvbHdpZHRoPScxKicgLz48Y29sc3BlYyBjb2xuYW1lPSdjMycgY29sd2lkdGg9JzQqJyAvPjxzcGFuc3BlYyBzcGFubmFtZT0naHNwYW4nIG5hbWVzdD0nYzEnIG5hbWVlbmQ9J2MzJyAvPiI+CisKKzwhLS0gVmlkZW8gZm9yIExpbnV4IG1haWxpbmcgbGlzdCBhZGRyZXNzLiAtLT4KKzwhRU5USVRZIHY0bC1tbCAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9J2h0dHA6Ly93d3cubGludXh0di5vcmcvbGlzdHMucGhwJz5odHRwOi8vd3d3LmxpbnV4dHYub3JnL2xpc3RzLnBocDwvdWxpbms+Ij4KKworPCEtLSBMaW51eFRWIHY0bC1kdmIgcmVwb3NpdG9yeS4gLS0+Cis8IUVOVElUWSB2NGwtZHZiCQkiPHVsaW5rIHVybD0naHR0cDovL2xpbnV4dHYub3JnL3JlcG8vJz5odHRwOi8vbGludXh0di5vcmcvcmVwby88L3VsaW5rPiI+Cis8IUVOVElUWSBkYXNoLWVudC04ICAgICAgICAgICAgICI8ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PiI+Cis8IUVOVElUWSBkYXNoLWVudC0xMCAgICAgICAgICAgICI8ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+Ij4KKzwhRU5USVRZIGRhc2gtZW50LTEyICAgICAgICAgICAgIjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PiI+Cis8IUVOVElUWSBkYXNoLWVudC0xNCAgICAgICAgICAgICI8ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PiI+Cis8IUVOVElUWSBkYXNoLWVudC0xNiAgICAgICAgICAgICI8ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+Ij4KKzwhRU5USVRZIGRhc2gtZW50LTIwICAgICAgICAgICAgIjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+Ij4KKzwhRU5USVRZIGRhc2gtZW50LTIyICAgICAgICAgICAgIjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT4iPgorPCFFTlRJVFkgZGFzaC1lbnQtMjQgICAgICAgICAgICAiPGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+PGVudHJ5Pi08L2VudHJ5PjxlbnRyeT4tPC9lbnRyeT48ZW50cnk+LTwvZW50cnk+Ij4KK10+CisKKzxib29rIGlkPSJtZWRpYV9hcGkiIGxhbmc9ImVuIj4KKzxib29raW5mbz4KKwk8dGl0bGU+TElOVVggTUVESUEgSU5GUkFTVFJVQ1RVUkUgQVBJPC90aXRsZT4KKworCTxjb3B5cmlnaHQ+CisJCTx5ZWFyPjIwMDktMjAxNTwveWVhcj4KKwkJPGhvbGRlcj5MaW51eFRWIERldmVsb3BlcnM8L2hvbGRlcj4KKwk8L2NvcHlyaWdodD4KKworCTxsZWdhbG5vdGljZT4KKwkJPHBhcmE+UGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeQorCQl0aGlzIGRvY3VtZW50IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLAorCQlWZXJzaW9uIDEuMSBvciBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKwkJRm91bmRhdGlvbi4gQSBjb3B5IG9mIHRoZSBsaWNlbnNlIGlzIGluY2x1ZGVkIGluIHRoZSBjaGFwdGVyIGVudGl0bGVkCisJCSJHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UiPC9wYXJhPgorCTwvbGVnYWxub3RpY2U+Cis8L2Jvb2tpbmZvPgorCis8dG9jPjwvdG9jPiA8IS0tIGF1dG9nZW5lcmF0ZWQgLS0+CisKKzxwcmVmYWNlPgorCTx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorCisJPHBhcmE+VGhpcyBkb2N1bWVudCBjb3ZlcnMgdGhlIExpbnV4IEtlcm5lbCB0byBVc2Vyc3BhY2UgQVBJJ3MgdXNlZCBieQorCQl2aWRlbyBhbmQgcmFkaW8gc3RyZWFtaW5nIGRldmljZXMsIGluY2x1ZGluZyB2aWRlbyBjYW1lcmFzLAorCQlhbmFsb2cgYW5kIGRpZ2l0YWwgVFYgcmVjZWl2ZXIgY2FyZHMsIEFNL0ZNIHJlY2VpdmVyIGNhcmRzLAorCQlzdHJlYW1pbmcgY2FwdHVyZSBhbmQgb3V0cHV0IGRldmljZXMsIGNvZGVjIGRldmljZXMgYW5kIHJlbW90ZQorCQljb250cm9sbGVycy48L3BhcmE+CisJPHBhcmE+QSB0eXBpY2FsIG1lZGlhIGRldmljZSBoYXJkd2FyZSBpcyBzaG93biBhdAorCTx4cmVmIGxpbmtlbmQ9InR5cGljYWxfbWVkaWFfZGV2aWNlIiAvPi48L3BhcmE+CisJPGZpZ3VyZSBpZD0idHlwaWNhbF9tZWRpYV9kZXZpY2UiPgorCSAgICA8dGl0bGU+VHlwaWNhbCBNZWRpYSBEZXZpY2U8L3RpdGxlPgorCSAgICA8bWVkaWFvYmplY3Q+CisJCTxpbWFnZW9iamVjdD4KKwkJICAgIDxpbWFnZWRhdGEgZmlsZXJlZj0idHlwaWNhbF9tZWRpYV9kZXZpY2Uuc3ZnIiBmb3JtYXQ9IlNWRyIgLz4KKwkJPC9pbWFnZW9iamVjdD4KKwkJPHRleHRvYmplY3Q+CisJCSAgICA8cGhyYXNlPlR5cGljYWwgTWVkaWEgRGV2aWNlIEJsb2NrIERpYWdyYW08L3BocmFzZT4KKwkJPC90ZXh0b2JqZWN0PgorCSAgICA8L21lZGlhb2JqZWN0PgorCTwvZmlndXJlPgorCTxwYXJhPlRoZSBtZWRpYSBpbmZyYXN0cnVjdHVyZSBBUEkgd2FzIGRlc2lnbmVkIHRvIGNvbnRyb2wgc3VjaAorCSAgICBkZXZpY2VzLiBJdCBpcyBkaXZpZGVkIGludG8gZm91ciBwYXJ0cy48L3BhcmE+CisJPHBhcmE+VGhlIGZpcnN0IHBhcnQgY292ZXJzIHJhZGlvLCB2aWRlbyBjYXB0dXJlIGFuZCBvdXRwdXQsCisJCWNhbWVyYXMsIGFuYWxvZyBUViBkZXZpY2VzIGFuZCBjb2RlY3MuPC9wYXJhPgorCTxwYXJhPlRoZSBzZWNvbmQgcGFydCBjb3ZlcnMgdGhlCisJCUFQSSB1c2VkIGZvciBkaWdpdGFsIFRWIGFuZCBJbnRlcm5ldCByZWNlcHRpb24gdmlhIG9uZSBvZiB0aGUKKwkJc2V2ZXJhbCBkaWdpdGFsIHR2IHN0YW5kYXJkcy4gV2hpbGUgaXQgaXMgY2FsbGVkIGFzIERWQiBBUEksCisJCWluIGZhY3QgaXQgY292ZXJzIHNldmVyYWwgZGlmZmVyZW50IHZpZGVvIHN0YW5kYXJkcyBpbmNsdWRpbmcKKwkJRFZCLVQvVDIsIERWQi1TL1MyLCBEVkItQywgQVRTQywgSVNEQi1ULCBJU0RCLVMsZXRjLiBUaGUgY29tcGxldGUKKwkJbGlzdCBvZiBzdXBwb3J0ZWQgc3RhbmRhcmRzIGNhbiBiZSBmb3VuZCBhdAorCQk8eHJlZiBsaW5rZW5kPSJmZS1kZWxpdmVyeS1zeXN0ZW0tdCIgLz4uPC9wYXJhPgorCTxwYXJhPlRoZSB0aGlyZCBwYXJ0IGNvdmVycyB0aGUgUmVtb3RlIENvbnRyb2xsZXIgQVBJLjwvcGFyYT4KKwk8cGFyYT5UaGUgZm91cnRoIHBhcnQgY292ZXJzIHRoZSBNZWRpYSBDb250cm9sbGVyIEFQSS48L3BhcmE+CisJPHBhcmE+SXQgc2hvdWxkIGFsc28gYmUgbm90ZWQgdGhhdCBhIG1lZGlhIGRldmljZSBtYXkgYWxzbyBoYXZlIGF1ZGlvCisJICAgICAgY29tcG9uZW50cywgbGlrZSBtaXhlcnMsIFBDTSBjYXB0dXJlLCBQQ00gcGxheWJhY2ssIGV0Yywgd2hpY2gKKwkgICAgICBhcmUgY29udHJvbGxlZCB2aWEgQUxTQSBBUEkuPC9wYXJhPgorCTxwYXJhPkZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFuZCBmb3IgdGhlIGxhdGVzdCBkZXZlbG9wbWVudCBjb2RlLAorCQlzZWU6IDx1bGluayB1cmw9Imh0dHA6Ly9saW51eHR2Lm9yZyI+aHR0cDovL2xpbnV4dHYub3JnPC91bGluaz4uPC9wYXJhPgorCTxwYXJhPkZvciBkaXNjdXNzaW5nIGltcHJvdmVtZW50cywgcmVwb3J0aW5nIHRyb3VibGVzLCBzZW5kaW5nIG5ldyBkcml2ZXJzLCBldGMsIHBsZWFzZSBtYWlsIHRvOiA8dWxpbmsgdXJsPSJodHRwOi8vdmdlci5rZXJuZWwub3JnL3ZnZXItbGlzdHMuaHRtbCNsaW51eC1tZWRpYSI+TGludXggTWVkaWEgTWFpbGluZyBMaXN0IChMTU1MKS48L3VsaW5rPi48L3BhcmE+Cis8L3ByZWZhY2U+CisKKzxwYXJ0IGlkPSJ2NGwyc3BlYyI+Cismc3ViLXY0bDI7Cis8L3BhcnQ+Cis8cGFydCBpZD0iZHZiYXBpIj4KKyZzdWItZHZiYXBpOworPC9wYXJ0PgorPHBhcnQgaWQ9InJlbW90ZXMiPgorJnN1Yi1yZW1vdGVfY29udHJvbGxlcnM7Cis8L3BhcnQ+Cis8cGFydCBpZD0ibWVkaWFfY29tbW9uIj4KKyZzdWItbWVkaWEtY29udHJvbGxlcjsKKzwvcGFydD4KKworPGNoYXB0ZXIgaWQ9Imdlbl9lcnJvcnMiPgorJnN1Yi1nZW4tZXJyb3JzOworPC9jaGFwdGVyPgorCismc3ViLWZkbC1hcHBlbmRpeDsKKworPC9ib29rPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL210ZG5hbmQudG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tdGRuYW5kLnRtcGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RhOGYwNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9tdGRuYW5kLnRtcGwKQEAgLTAsMCArMSwxMjkyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIGJvb2sgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjEuMi8vRU4iCisJImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4xLjIvZG9jYm9va3guZHRkIiBbXT4KKworPGJvb2sgaWQ9Ik1URC1OQU5ELUd1aWRlIj4KKyA8Ym9va2luZm8+CisgIDx0aXRsZT5NVEQgTkFORCBEcml2ZXIgUHJvZ3JhbW1pbmcgSW50ZXJmYWNlPC90aXRsZT4KKyAgCisgIDxhdXRob3Jncm91cD4KKyAgIDxhdXRob3I+CisgICAgPGZpcnN0bmFtZT5UaG9tYXM8L2ZpcnN0bmFtZT4KKyAgICA8c3VybmFtZT5HbGVpeG5lcjwvc3VybmFtZT4KKyAgICA8YWZmaWxpYXRpb24+CisgICAgIDxhZGRyZXNzPgorICAgICAgPGVtYWlsPnRnbHhAbGludXRyb25peC5kZTwvZW1haWw+CisgICAgIDwvYWRkcmVzcz4KKyAgICA8L2FmZmlsaWF0aW9uPgorICAgPC9hdXRob3I+CisgIDwvYXV0aG9yZ3JvdXA+CisKKyAgPGNvcHlyaWdodD4KKyAgIDx5ZWFyPjIwMDQ8L3llYXI+CisgICA8aG9sZGVyPlRob21hcyBHbGVpeG5lcjwvaG9sZGVyPgorICA8L2NvcHlyaWdodD4KKworICA8bGVnYWxub3RpY2U+CisgICA8cGFyYT4KKyAgICAgVGhpcyBkb2N1bWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlCisgICAgIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgTGljZW5zZSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgICA8L3BhcmE+CisgICAgICAKKyAgIDxwYXJhPgorICAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCisgICAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQKKyAgICAgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorICAgICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgICA8L3BhcmE+CisgICAgICAKKyAgIDxwYXJhPgorICAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorICAgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICAgICBNQSAwMjExMS0xMzA3IFVTQQorICAgPC9wYXJhPgorICAgICAgCisgICA8cGFyYT4KKyAgICAgRm9yIG1vcmUgZGV0YWlscyBzZWUgdGhlIGZpbGUgQ09QWUlORyBpbiB0aGUgc291cmNlCisgICAgIGRpc3RyaWJ1dGlvbiBvZiBMaW51eC4KKyAgIDwvcGFyYT4KKyAgPC9sZWdhbG5vdGljZT4KKyA8L2Jvb2tpbmZvPgorCis8dG9jPjwvdG9jPgorCisgIDxjaGFwdGVyIGlkPSJpbnRybyI+CisgICAgICA8dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KKyAgPHBhcmE+CisgIAlUaGUgZ2VuZXJpYyBOQU5EIGRyaXZlciBzdXBwb3J0cyBhbG1vc3QgYWxsIE5BTkQgYW5kIEFHLUFORCBiYXNlZAorCWNoaXBzIGFuZCBjb25uZWN0cyB0aGVtIHRvIHRoZSBNZW1vcnkgVGVjaG5vbG9neSBEZXZpY2VzIChNVEQpCisJc3Vic3lzdGVtIG9mIHRoZSBMaW51eCBLZXJuZWwuCisgIDwvcGFyYT4KKyAgPHBhcmE+CisgIAlUaGlzIGRvY3VtZW50YXRpb24gaXMgcHJvdmlkZWQgZm9yIGRldmVsb3BlcnMgd2hvIHdhbnQgdG8gaW1wbGVtZW50CisJYm9hcmQgZHJpdmVycyBvciBmaWxlc3lzdGVtIGRyaXZlcnMgc3VpdGFibGUgZm9yIE5BTkQgZGV2aWNlcy4KKyAgPC9wYXJhPgorICA8L2NoYXB0ZXI+CisgIAorICA8Y2hhcHRlciBpZD0iYnVncyI+CisgICAgIDx0aXRsZT5Lbm93biBCdWdzIEFuZCBBc3N1bXB0aW9uczwvdGl0bGU+CisgIDxwYXJhPgorCU5vbmUuCQorICA8L3BhcmE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iZG9jaGludHMiPgorICAgICA8dGl0bGU+RG9jdW1lbnRhdGlvbiBoaW50czwvdGl0bGU+CisgICAgIDxwYXJhPgorICAgICBUaGUgZnVuY3Rpb24gYW5kIHN0cnVjdHVyZSBkb2NzIGFyZSBhdXRvZ2VuZXJhdGVkLiBFYWNoIGZ1bmN0aW9uIGFuZCAKKyAgICAgc3RydWN0IG1lbWJlciBoYXMgYSBzaG9ydCBkZXNjcmlwdGlvbiB3aGljaCBpcyBtYXJrZWQgd2l0aCBhbiBbWFhYXSBpZGVudGlmaWVyLgorICAgICBUaGUgZm9sbG93aW5nIGNoYXB0ZXJzIGV4cGxhaW4gdGhlIG1lYW5pbmcgb2YgdGhvc2UgaWRlbnRpZmllcnMuCisgICAgIDwvcGFyYT4KKyAgICAgPHNlY3QxIGlkPSJGdW5jdGlvbl9pZGVudGlmaWVyc19YWFgiPgorCTx0aXRsZT5GdW5jdGlvbiBpZGVudGlmaWVycyBbWFhYXTwvdGl0bGU+CisgICAgIAk8cGFyYT4KKwlUaGUgZnVuY3Rpb25zIGFyZSBtYXJrZWQgd2l0aCBbWFhYXSBpZGVudGlmaWVycyBpbiB0aGUgc2hvcnQKKwljb21tZW50LiBUaGUgaWRlbnRpZmllcnMgZXhwbGFpbiB0aGUgdXNhZ2UgYW5kIHNjb3BlIG9mIHRoZQorCWZ1bmN0aW9ucy4gRm9sbG93aW5nIGlkZW50aWZpZXJzIGFyZSB1c2VkOgorICAgICAJPC9wYXJhPgorCTxpdGVtaXplZGxpc3Q+CisJCTxsaXN0aXRlbT48cGFyYT4KKwkgIAlbTVREIEludGVyZmFjZV08L3BhcmE+PHBhcmE+CisJCVRoZXNlIGZ1bmN0aW9ucyBwcm92aWRlIHRoZSBpbnRlcmZhY2UgdG8gdGhlIE1URCBrZXJuZWwgQVBJLiAKKwkJVGhleSBhcmUgbm90IHJlcGxhY2VhYmxlIGFuZCBwcm92aWRlIGZ1bmN0aW9uYWxpdHkKKwkJd2hpY2ggaXMgY29tcGxldGUgaGFyZHdhcmUgaW5kZXBlbmRlbnQuCisJCTwvcGFyYT48L2xpc3RpdGVtPgorCQk8bGlzdGl0ZW0+PHBhcmE+CisJICAJW05BTkQgSW50ZXJmYWNlXTwvcGFyYT48cGFyYT4KKwkJVGhlc2UgZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBhbmQgcHJvdmlkZSB0aGUgaW50ZXJmYWNlIHRvIHRoZSBOQU5EIGtlcm5lbCBBUEkuIAorCQk8L3BhcmE+PC9saXN0aXRlbT4KKwkJPGxpc3RpdGVtPjxwYXJhPgorCSAgCVtHRU5FUklDXTwvcGFyYT48cGFyYT4KKwkJR2VuZXJpYyBmdW5jdGlvbnMgYXJlIG5vdCByZXBsYWNlYWJsZSBhbmQgcHJvdmlkZSBmdW5jdGlvbmFsaXR5CisJCXdoaWNoIGlzIGNvbXBsZXRlIGhhcmR3YXJlIGluZGVwZW5kZW50LgorCQk8L3BhcmE+PC9saXN0aXRlbT4KKwkJPGxpc3RpdGVtPjxwYXJhPgorCSAgCVtERUZBVUxUXTwvcGFyYT48cGFyYT4KKwkJRGVmYXVsdCBmdW5jdGlvbnMgcHJvdmlkZSBoYXJkd2FyZSByZWxhdGVkIGZ1bmN0aW9uYWxpdHkgd2hpY2ggaXMgc3VpdGFibGUKKwkJZm9yIG1vc3Qgb2YgdGhlIGltcGxlbWVudGF0aW9ucy4gVGhlc2UgZnVuY3Rpb25zIGNhbiBiZSByZXBsYWNlZCBieSB0aGUKKwkJYm9hcmQgZHJpdmVyIGlmIG5lY2Vzc2FyeS4gVGhvc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgdmlhIHBvaW50ZXJzIGluIHRoZQorCQlOQU5EIGNoaXAgZGVzY3JpcHRpb24gc3RydWN0dXJlLiBUaGUgYm9hcmQgZHJpdmVyIGNhbiBzZXQgdGhlIGZ1bmN0aW9ucyB3aGljaAorCQlzaG91bGQgYmUgcmVwbGFjZWQgYnkgYm9hcmQgZGVwZW5kZW50IGZ1bmN0aW9ucyBiZWZvcmUgY2FsbGluZyBuYW5kX3NjYW4oKS4KKwkJSWYgdGhlIGZ1bmN0aW9uIHBvaW50ZXIgaXMgTlVMTCBvbiBlbnRyeSB0byBuYW5kX3NjYW4oKSB0aGVuIHRoZSBwb2ludGVyCisJCWlzIHNldCB0byB0aGUgZGVmYXVsdCBmdW5jdGlvbiB3aGljaCBpcyBzdWl0YWJsZSBmb3IgdGhlIGRldGVjdGVkIGNoaXAgdHlwZS4KKwkJPC9wYXJhPjwvbGlzdGl0ZW0+CisJPC9pdGVtaXplZGxpc3Q+CisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MSBpZD0iU3RydWN0X21lbWJlcl9pZGVudGlmaWVyc19YWFgiPgorCTx0aXRsZT5TdHJ1Y3QgbWVtYmVyIGlkZW50aWZpZXJzIFtYWFhdPC90aXRsZT4KKyAgICAgCTxwYXJhPgorCVRoZSBzdHJ1Y3QgbWVtYmVycyBhcmUgbWFya2VkIHdpdGggW1hYWF0gaWRlbnRpZmllcnMgaW4gdGhlIAorCWNvbW1lbnQuIFRoZSBpZGVudGlmaWVycyBleHBsYWluIHRoZSB1c2FnZSBhbmQgc2NvcGUgb2YgdGhlCisJbWVtYmVycy4gRm9sbG93aW5nIGlkZW50aWZpZXJzIGFyZSB1c2VkOgorICAgICAJPC9wYXJhPgorCTxpdGVtaXplZGxpc3Q+CisJCTxsaXN0aXRlbT48cGFyYT4KKwkgIAlbSU5URVJOXTwvcGFyYT48cGFyYT4KKwkJVGhlc2UgbWVtYmVycyBhcmUgZm9yIE5BTkQgZHJpdmVyIGludGVybmFsIHVzZSBvbmx5IGFuZCBtdXN0IG5vdCBiZQorCQltb2RpZmllZC4gTW9zdCBvZiB0aGVzZSB2YWx1ZXMgYXJlIGNhbGN1bGF0ZWQgZnJvbSB0aGUgY2hpcCBnZW9tZXRyeQorCQlpbmZvcm1hdGlvbiB3aGljaCBpcyBldmFsdWF0ZWQgZHVyaW5nIG5hbmRfc2NhbigpLgorCQk8L3BhcmE+PC9saXN0aXRlbT4KKwkJPGxpc3RpdGVtPjxwYXJhPgorCSAgCVtSRVBMQUNFQUJMRV08L3BhcmE+PHBhcmE+CisJCVJlcGxhY2VhYmxlIG1lbWJlcnMgaG9sZCBoYXJkd2FyZSByZWxhdGVkIGZ1bmN0aW9ucyB3aGljaCBjYW4gYmUgCisJCXByb3ZpZGVkIGJ5IHRoZSBib2FyZCBkcml2ZXIuIFRoZSBib2FyZCBkcml2ZXIgY2FuIHNldCB0aGUgZnVuY3Rpb25zIHdoaWNoCisJCXNob3VsZCBiZSByZXBsYWNlZCBieSBib2FyZCBkZXBlbmRlbnQgZnVuY3Rpb25zIGJlZm9yZSBjYWxsaW5nIG5hbmRfc2NhbigpLgorCQlJZiB0aGUgZnVuY3Rpb24gcG9pbnRlciBpcyBOVUxMIG9uIGVudHJ5IHRvIG5hbmRfc2NhbigpIHRoZW4gdGhlIHBvaW50ZXIKKwkJaXMgc2V0IHRvIHRoZSBkZWZhdWx0IGZ1bmN0aW9uIHdoaWNoIGlzIHN1aXRhYmxlIGZvciB0aGUgZGV0ZWN0ZWQgY2hpcCB0eXBlLgorCQk8L3BhcmE+PC9saXN0aXRlbT4KKwkJPGxpc3RpdGVtPjxwYXJhPgorCSAgCVtCT0FSRFNQRUNJRklDXTwvcGFyYT48cGFyYT4KKwkJQm9hcmQgc3BlY2lmaWMgbWVtYmVycyBob2xkIGhhcmR3YXJlIHJlbGF0ZWQgaW5mb3JtYXRpb24gd2hpY2ggbXVzdAorCQliZSBwcm92aWRlZCBieSB0aGUgYm9hcmQgZHJpdmVyLiBUaGUgYm9hcmQgZHJpdmVyIG11c3Qgc2V0IHRoZSBmdW5jdGlvbgorCQlwb2ludGVycyBhbmQgZGF0YWZpZWxkcyBiZWZvcmUgY2FsbGluZyBuYW5kX3NjYW4oKS4KKwkJPC9wYXJhPjwvbGlzdGl0ZW0+CisJCTxsaXN0aXRlbT48cGFyYT4KKwkgIAlbT1BUSU9OQUxdPC9wYXJhPjxwYXJhPgorCQlPcHRpb25hbCBtZW1iZXJzIGNhbiBob2xkIGluZm9ybWF0aW9uIHJlbGV2YW50IGZvciB0aGUgYm9hcmQgZHJpdmVyLiBUaGUKKwkJZ2VuZXJpYyBOQU5EIGRyaXZlciBjb2RlIGRvZXMgbm90IHVzZSB0aGlzIGluZm9ybWF0aW9uLgorCQk8L3BhcmE+PC9saXN0aXRlbT4KKwk8L2l0ZW1pemVkbGlzdD4KKyAgICAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPiAgIAorCisgIDxjaGFwdGVyIGlkPSJiYXNpY2JvYXJkZHJpdmVyIj4KKyAgICAgCTx0aXRsZT5CYXNpYyBib2FyZCBkcml2ZXI8L3RpdGxlPgorCTxwYXJhPgorCQlGb3IgbW9zdCBib2FyZHMgaXQgd2lsbCBiZSBzdWZmaWNpZW50IHRvIHByb3ZpZGUganVzdCB0aGUKKwkJYmFzaWMgZnVuY3Rpb25zIGFuZCBmaWxsIG91dCBzb21lIHJlYWxseSBib2FyZCBkZXBlbmRlbnQKKwkJbWVtYmVycyBpbiB0aGUgbmFuZCBjaGlwIGRlc2NyaXB0aW9uIHN0cnVjdHVyZS4KKwk8L3BhcmE+CisJPHNlY3QxIGlkPSJCYXNpY19kZWZpbmVzIj4KKwkJPHRpdGxlPkJhc2ljIGRlZmluZXM8L3RpdGxlPgorCQk8cGFyYT4KKwkJCUF0IGxlYXN0IHlvdSBoYXZlIHRvIHByb3ZpZGUgYSBtdGQgc3RydWN0dXJlIGFuZAorCQkJYSBzdG9yYWdlIGZvciB0aGUgaW9yZW1hcCdlZCBjaGlwIGFkZHJlc3MuCisJCQlZb3UgY2FuIGFsbG9jYXRlIHRoZSBtdGQgc3RydWN0dXJlIHVzaW5nIGttYWxsb2MKKwkJCW9yIHlvdSBjYW4gYWxsb2NhdGUgaXQgc3RhdGljYWxseS4KKwkJCUluIGNhc2Ugb2Ygc3RhdGljIGFsbG9jYXRpb24geW91IGhhdmUgdG8gYWxsb2NhdGUKKwkJCWEgbmFuZF9jaGlwIHN0cnVjdHVyZSB0b28uCisJCTwvcGFyYT4KKwkJPHBhcmE+CisJCQlLbWFsbG9jIGJhc2VkIGV4YW1wbGUKKwkJPC9wYXJhPgorCQk8cHJvZ3JhbWxpc3Rpbmc+CitzdGF0aWMgc3RydWN0IG10ZF9pbmZvICpib2FyZF9tdGQ7CitzdGF0aWMgdm9pZCBfX2lvbWVtICpiYXNlYWRkcjsKKwkJPC9wcm9ncmFtbGlzdGluZz4KKwkJPHBhcmE+CisJCQlTdGF0aWMgZXhhbXBsZQorCQk8L3BhcmE+CisJCTxwcm9ncmFtbGlzdGluZz4KK3N0YXRpYyBzdHJ1Y3QgbXRkX2luZm8gYm9hcmRfbXRkOworc3RhdGljIHN0cnVjdCBuYW5kX2NoaXAgYm9hcmRfY2hpcDsKK3N0YXRpYyB2b2lkIF9faW9tZW0gKmJhc2VhZGRyOworCQk8L3Byb2dyYW1saXN0aW5nPgorCTwvc2VjdDE+CisJPHNlY3QxIGlkPSJQYXJ0aXRpb25fZGVmaW5lcyI+CisJCTx0aXRsZT5QYXJ0aXRpb24gZGVmaW5lczwvdGl0bGU+CisJCTxwYXJhPgorCQkJSWYgeW91IHdhbnQgdG8gZGl2aWRlIHlvdXIgZGV2aWNlIGludG8gcGFydGl0aW9ucywgdGhlbgorCQkJZGVmaW5lIGEgcGFydGl0aW9uaW5nIHNjaGVtZSBzdWl0YWJsZSB0byB5b3VyIGJvYXJkLgorCQk8L3BhcmE+CisJCTxwcm9ncmFtbGlzdGluZz4KKyNkZWZpbmUgTlVNX1BBUlRJVElPTlMgMgorc3RhdGljIHN0cnVjdCBtdGRfcGFydGl0aW9uIHBhcnRpdGlvbl9pbmZvW10gPSB7CisJeyAubmFtZSA9ICJGbGFzaCBwYXJ0aXRpb24gMSIsCisJICAub2Zmc2V0ID0gIDAsCisJICAuc2l6ZSA9ICAgIDggKiAxMDI0ICogMTAyNCB9LAorCXsgLm5hbWUgPSAiRmxhc2ggcGFydGl0aW9uIDIiLAorCSAgLm9mZnNldCA9ICBNVERQQVJUX09GU19ORVhULAorCSAgLnNpemUgPSAgICBNVERQQVJUX1NJWl9GVUxMIH0sCit9OworCQk8L3Byb2dyYW1saXN0aW5nPgorCTwvc2VjdDE+CisJPHNlY3QxIGlkPSJIYXJkd2FyZV9jb250cm9sX2Z1bmN0aW9ucyI+CisJCTx0aXRsZT5IYXJkd2FyZSBjb250cm9sIGZ1bmN0aW9uPC90aXRsZT4KKwkJPHBhcmE+CisJCQlUaGUgaGFyZHdhcmUgY29udHJvbCBmdW5jdGlvbiBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIAorCQkJY29udHJvbCBwaW5zIG9mIHRoZSBOQU5EIGNoaXAocykuIAorCQkJVGhlIGFjY2VzcyBjYW4gYmUgZG9uZSBieSBHUElPIHBpbnMgb3IgYnkgYWRkcmVzcyBsaW5lcy4KKwkJCUlmIHlvdSB1c2UgYWRkcmVzcyBsaW5lcywgbWFrZSBzdXJlIHRoYXQgdGhlIHRpbWluZworCQkJcmVxdWlyZW1lbnRzIGFyZSBtZXQuCisJCTwvcGFyYT4KKwkJPHBhcmE+CisJCQk8ZW1waGFzaXM+R1BJTyBiYXNlZCBleGFtcGxlPC9lbXBoYXNpcz4KKwkJPC9wYXJhPgorCQk8cHJvZ3JhbWxpc3Rpbmc+CitzdGF0aWMgdm9pZCBib2FyZF9od2NvbnRyb2woc3RydWN0IG10ZF9pbmZvICptdGQsIGludCBjbWQpCit7CisJc3dpdGNoKGNtZCl7CisJCWNhc2UgTkFORF9DVExfU0VUQ0xFOiAvKiBTZXQgQ0xFIHBpbiBoaWdoICovIGJyZWFrOworCQljYXNlIE5BTkRfQ1RMX0NMUkNMRTogLyogU2V0IENMRSBwaW4gbG93ICovIGJyZWFrOworCQljYXNlIE5BTkRfQ1RMX1NFVEFMRTogLyogU2V0IEFMRSBwaW4gaGlnaCAqLyBicmVhazsKKwkJY2FzZSBOQU5EX0NUTF9DTFJBTEU6IC8qIFNldCBBTEUgcGluIGxvdyAqLyBicmVhazsKKwkJY2FzZSBOQU5EX0NUTF9TRVROQ0U6IC8qIFNldCBuQ0UgcGluIGxvdyAqLyBicmVhazsKKwkJY2FzZSBOQU5EX0NUTF9DTFJOQ0U6IC8qIFNldCBuQ0UgcGluIGhpZ2ggKi8gYnJlYWs7CisJfQorfQorCQk8L3Byb2dyYW1saXN0aW5nPgorCQk8cGFyYT4KKwkJCTxlbXBoYXNpcz5BZGRyZXNzIGxpbmVzIGJhc2VkIGV4YW1wbGUuPC9lbXBoYXNpcz4gSXQncyBhc3N1bWVkIHRoYXQgdGhlCisJCQluQ0UgcGluIGlzIGRyaXZlbiBieSBhIGNoaXAgc2VsZWN0IGRlY29kZXIuCisJCTwvcGFyYT4KKwkJPHByb2dyYW1saXN0aW5nPgorc3RhdGljIHZvaWQgYm9hcmRfaHdjb250cm9sKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgY21kKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSAoc3RydWN0IG5hbmRfY2hpcCAqKSBtdGQtPnByaXY7CisJc3dpdGNoKGNtZCl7CisJCWNhc2UgTkFORF9DVExfU0VUQ0xFOiB0aGlzLT5JT19BRERSX1cgfD0gQ0xFX0FEUlJfQklUOyAgYnJlYWs7CisJCWNhc2UgTkFORF9DVExfQ0xSQ0xFOiB0aGlzLT5JT19BRERSX1cgJmFtcDs9IH5DTEVfQURSUl9CSVQ7IGJyZWFrOworCQljYXNlIE5BTkRfQ1RMX1NFVEFMRTogdGhpcy0+SU9fQUREUl9XIHw9IEFMRV9BRFJSX0JJVDsgIGJyZWFrOworCQljYXNlIE5BTkRfQ1RMX0NMUkFMRTogdGhpcy0+SU9fQUREUl9XICZhbXA7PSB+QUxFX0FEUlJfQklUOyBicmVhazsKKwl9Cit9CisJCTwvcHJvZ3JhbWxpc3Rpbmc+CisJPC9zZWN0MT4KKwk8c2VjdDEgaWQ9IkRldmljZV9yZWFkeV9mdW5jdGlvbiI+CisJCTx0aXRsZT5EZXZpY2UgcmVhZHkgZnVuY3Rpb248L3RpdGxlPgorCQk8cGFyYT4KKwkJCUlmIHRoZSBoYXJkd2FyZSBpbnRlcmZhY2UgaGFzIHRoZSByZWFkeSBidXN5IHBpbiBvZiB0aGUgTkFORCBjaGlwIGNvbm5lY3RlZCB0byBhCisJCQlHUElPIG9yIG90aGVyIGFjY2Vzc2libGUgSS9PIHBpbiwgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJlYWQgYmFjayB0aGUgc3RhdGUgb2YgdGhlCisJCQlwaW4uIFRoZSBmdW5jdGlvbiBoYXMgbm8gYXJndW1lbnRzIGFuZCBzaG91bGQgcmV0dXJuIDAsIGlmIHRoZSBkZXZpY2UgaXMgYnVzeSAoUi9CIHBpbiAKKwkJCWlzIGxvdykgYW5kIDEsIGlmIHRoZSBkZXZpY2UgaXMgcmVhZHkgKFIvQiBwaW4gaXMgaGlnaCkuCisJCQlJZiB0aGUgaGFyZHdhcmUgaW50ZXJmYWNlIGRvZXMgbm90IGdpdmUgYWNjZXNzIHRvIHRoZSByZWFkeSBidXN5IHBpbiwgdGhlbgorCQkJdGhlIGZ1bmN0aW9uIG11c3Qgbm90IGJlIGRlZmluZWQgYW5kIHRoZSBmdW5jdGlvbiBwb2ludGVyIHRoaXMtPmRldl9yZWFkeSBpcyBzZXQgdG8gTlVMTC4JCQorCQk8L3BhcmE+CisJPC9zZWN0MT4KKwk8c2VjdDEgaWQ9IkluaXRfZnVuY3Rpb24iPgorCQk8dGl0bGU+SW5pdCBmdW5jdGlvbjwvdGl0bGU+CisJCTxwYXJhPgorCQkJVGhlIGluaXQgZnVuY3Rpb24gYWxsb2NhdGVzIG1lbW9yeSBhbmQgc2V0cyB1cCBhbGwgdGhlIGJvYXJkCisJCQlzcGVjaWZpYyBwYXJhbWV0ZXJzIGFuZCBmdW5jdGlvbiBwb2ludGVycy4gV2hlbiBldmVyeXRoaW5nCisJCQlpcyBzZXQgdXAgbmFuZF9zY2FuKCkgaXMgY2FsbGVkLiBUaGlzIGZ1bmN0aW9uIHRyaWVzIHRvCisJCQlkZXRlY3QgYW5kIGlkZW50aWZ5IHRoZW4gY2hpcC4gSWYgYSBjaGlwIGlzIGZvdW5kIGFsbCB0aGUKKwkJCWludGVybmFsIGRhdGEgZmllbGRzIGFyZSBpbml0aWFsaXplZCBhY2NvcmRpbmdseS4KKwkJCVRoZSBzdHJ1Y3R1cmUocykgaGF2ZSB0byBiZSB6ZXJvZWQgb3V0IGZpcnN0IGFuZCB0aGVuIGZpbGxlZCB3aXRoIHRoZSBuZWNlc3NhcnkKKwkJCWluZm9ybWF0aW9uIGFib3V0IHRoZSBkZXZpY2UuCisJCTwvcGFyYT4KKwkJPHByb2dyYW1saXN0aW5nPgorc3RhdGljIGludCBfX2luaXQgYm9hcmRfaW5pdCAodm9pZCkKK3sKKwlzdHJ1Y3QgbmFuZF9jaGlwICp0aGlzOworCWludCBlcnIgPSAwOworCisJLyogQWxsb2NhdGUgbWVtb3J5IGZvciBNVEQgZGV2aWNlIHN0cnVjdHVyZSBhbmQgcHJpdmF0ZSBkYXRhICovCisJYm9hcmRfbXRkID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IG10ZF9pbmZvKSArIHNpemVvZihzdHJ1Y3QgbmFuZF9jaGlwKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFib2FyZF9tdGQpIHsKKwkJcHJpbnRrICgiVW5hYmxlIHRvIGFsbG9jYXRlIE5BTkQgTVREIGRldmljZSBzdHJ1Y3R1cmUuXG4iKTsKKwkJZXJyID0gLUVOT01FTTsKKwkJZ290byBvdXQ7CisJfQorCisJLyogbWFwIHBoeXNpY2FsIGFkZHJlc3MgKi8KKwliYXNlYWRkciA9IGlvcmVtYXAoQ0hJUF9QSFlTSUNBTF9BRERSRVNTLCAxMDI0KTsKKwlpZiAoIWJhc2VhZGRyKSB7CisJCXByaW50aygiSW9yZW1hcCB0byBhY2Nlc3MgTkFORCBjaGlwIGZhaWxlZFxuIik7CisJCWVyciA9IC1FSU87CisJCWdvdG8gb3V0X210ZDsKKwl9CisKKwkvKiBHZXQgcG9pbnRlciB0byBwcml2YXRlIGRhdGEgKi8KKwl0aGlzID0gKHN0cnVjdCBuYW5kX2NoaXAgKikgKCk7CisJLyogTGluayB0aGUgcHJpdmF0ZSBkYXRhIHdpdGggdGhlIE1URCBzdHJ1Y3R1cmUgKi8KKwlib2FyZF9tdGQtPnByaXYgPSB0aGlzOworCisJLyogU2V0IGFkZHJlc3Mgb2YgTkFORCBJTyBsaW5lcyAqLworCXRoaXMtPklPX0FERFJfUiA9IGJhc2VhZGRyOworCXRoaXMtPklPX0FERFJfVyA9IGJhc2VhZGRyOworCS8qIFJlZmVyZW5jZSBoYXJkd2FyZSBjb250cm9sIGZ1bmN0aW9uICovCisJdGhpcy0+aHdjb250cm9sID0gYm9hcmRfaHdjb250cm9sOworCS8qIFNldCBjb21tYW5kIGRlbGF5IHRpbWUsIHNlZSBkYXRhc2hlZXQgZm9yIGNvcnJlY3QgdmFsdWUgKi8KKwl0aGlzLT5jaGlwX2RlbGF5ID0gQ0hJUF9ERVBFTkRFTkRfQ09NTUFORF9ERUxBWTsKKwkvKiBBc3NpZ24gdGhlIGRldmljZSByZWFkeSBmdW5jdGlvbiwgaWYgYXZhaWxhYmxlICovCisJdGhpcy0+ZGV2X3JlYWR5ID0gYm9hcmRfZGV2X3JlYWR5OworCXRoaXMtPmVjY21vZGUgPSBOQU5EX0VDQ19TT0ZUOworCisJLyogU2NhbiB0byBmaW5kIGV4aXN0ZW5jZSBvZiB0aGUgZGV2aWNlICovCisJaWYgKG5hbmRfc2NhbiAoYm9hcmRfbXRkLCAxKSkgeworCQllcnIgPSAtRU5YSU87CisJCWdvdG8gb3V0X2lvcjsKKwl9CisJCisJYWRkX210ZF9wYXJ0aXRpb25zKGJvYXJkX210ZCwgcGFydGl0aW9uX2luZm8sIE5VTV9QQVJUSVRJT05TKTsKKwlnb3RvIG91dDsKKworb3V0X2lvcjoKKwlpb3VubWFwKGJhc2VhZGRyKTsKK291dF9tdGQ6CisJa2ZyZWUgKGJvYXJkX210ZCk7CitvdXQ6CisJcmV0dXJuIGVycjsKK30KK21vZHVsZV9pbml0KGJvYXJkX2luaXQpOworCQk8L3Byb2dyYW1saXN0aW5nPgorCTwvc2VjdDE+CisJPHNlY3QxIGlkPSJFeGl0X2Z1bmN0aW9uIj4KKwkJPHRpdGxlPkV4aXQgZnVuY3Rpb248L3RpdGxlPgorCQk8cGFyYT4KKwkJCVRoZSBleGl0IGZ1bmN0aW9uIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIHRoZSBkcml2ZXIgaXMKKwkJCWNvbXBpbGVkIGFzIGEgbW9kdWxlLiBJdCByZWxlYXNlcyBhbGwgcmVzb3VyY2VzIHdoaWNoCisJCQlhcmUgaGVsZCBieSB0aGUgY2hpcCBkcml2ZXIgYW5kIHVucmVnaXN0ZXJzIHRoZSBwYXJ0aXRpb25zCisJCQlpbiB0aGUgTVREIGxheWVyLgorCQk8L3BhcmE+CisJCTxwcm9ncmFtbGlzdGluZz4KKyNpZmRlZiBNT0RVTEUKK3N0YXRpYyB2b2lkIF9fZXhpdCBib2FyZF9jbGVhbnVwICh2b2lkKQoreworCS8qIFJlbGVhc2UgcmVzb3VyY2VzLCB1bnJlZ2lzdGVyIGRldmljZSAqLworCW5hbmRfcmVsZWFzZSAoYm9hcmRfbXRkKTsKKworCS8qIHVubWFwIHBoeXNpY2FsIGFkZHJlc3MgKi8KKwlpb3VubWFwKGJhc2VhZGRyKTsKKwkKKwkvKiBGcmVlIHRoZSBNVEQgZGV2aWNlIHN0cnVjdHVyZSAqLworCWtmcmVlIChib2FyZF9tdGQpOworfQorbW9kdWxlX2V4aXQoYm9hcmRfY2xlYW51cCk7CisjZW5kaWYKKwkJPC9wcm9ncmFtbGlzdGluZz4KKwk8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImJvYXJkZHJpdmVyc2FkdmFuY2VkIj4KKyAgICAgCTx0aXRsZT5BZHZhbmNlZCBib2FyZCBkcml2ZXIgZnVuY3Rpb25zPC90aXRsZT4KKwk8cGFyYT4KKwkJVGhpcyBjaGFwdGVyIGRlc2NyaWJlcyB0aGUgYWR2YW5jZWQgZnVuY3Rpb25hbGl0eSBvZiB0aGUgTkFORAorCQlkcml2ZXIuIEZvciBhIGxpc3Qgb2YgZnVuY3Rpb25zIHdoaWNoIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBib2FyZAorCQlkcml2ZXIgc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBuYW5kX2NoaXAgc3RydWN0dXJlLgorCTwvcGFyYT4KKwk8c2VjdDEgaWQ9Ik11bHRpcGxlX2NoaXBfY29udHJvbCI+CisJCTx0aXRsZT5NdWx0aXBsZSBjaGlwIGNvbnRyb2w8L3RpdGxlPgorCQk8cGFyYT4KKwkJCVRoZSBuYW5kIGRyaXZlciBjYW4gY29udHJvbCBjaGlwIGFycmF5cy4gVGhlcmVmb3JlIHRoZQorCQkJYm9hcmQgZHJpdmVyIG11c3QgcHJvdmlkZSBhbiBvd24gc2VsZWN0X2NoaXAgZnVuY3Rpb24uIFRoaXMKKwkJCWZ1bmN0aW9uIG11c3QgKGRlKXNlbGVjdCB0aGUgcmVxdWVzdGVkIGNoaXAuCisJCQlUaGUgZnVuY3Rpb24gcG9pbnRlciBpbiB0aGUgbmFuZF9jaGlwIHN0cnVjdHVyZSBtdXN0CisJCQliZSBzZXQgYmVmb3JlIGNhbGxpbmcgbmFuZF9zY2FuKCkuIFRoZSBtYXhjaGlwIHBhcmFtZXRlcgorCQkJb2YgbmFuZF9zY2FuKCkgZGVmaW5lcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hpcHMgdG8KKwkJCXNjYW4gZm9yLiBNYWtlIHN1cmUgdGhhdCB0aGUgc2VsZWN0X2NoaXAgZnVuY3Rpb24gY2FuCisJCQloYW5kbGUgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2YgY2hpcHMuCisJCTwvcGFyYT4KKwkJPHBhcmE+CisJCQlUaGUgbmFuZCBkcml2ZXIgY29uY2F0ZW5hdGVzIHRoZSBjaGlwcyB0byBvbmUgdmlydHVhbAorCQkJY2hpcCBhbmQgcHJvdmlkZXMgdGhpcyB2aXJ0dWFsIGNoaXAgdG8gdGhlIE1URCBsYXllci4KKwkJPC9wYXJhPgorCQk8cGFyYT4KKwkJCTxlbXBoYXNpcz5Ob3RlOiBUaGUgZHJpdmVyIGNhbiBvbmx5IGhhbmRsZSBsaW5lYXIgY2hpcCBhcnJheXMKKwkJCW9mIGVxdWFsbHkgc2l6ZWQgY2hpcHMuIFRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yCisJCQlwYXJhbGxlbCBhcnJheXMgd2hpY2ggZXh0ZW5kIHRoZSBidXN3aWR0aC48L2VtcGhhc2lzPgorCQk8L3BhcmE+CisJCTxwYXJhPgorCQkJPGVtcGhhc2lzPkdQSU8gYmFzZWQgZXhhbXBsZTwvZW1waGFzaXM+CisJCTwvcGFyYT4KKwkJPHByb2dyYW1saXN0aW5nPgorc3RhdGljIHZvaWQgYm9hcmRfc2VsZWN0X2NoaXAgKHN0cnVjdCBtdGRfaW5mbyAqbXRkLCBpbnQgY2hpcCkKK3sKKwkvKiBEZXNlbGVjdCBhbGwgY2hpcHMsIHNldCBhbGwgbkNFIHBpbnMgaGlnaCAqLworCUdQSU8oQk9BUkRfTkFORF9OQ0UpIHw9IDB4ZmY7CQorCWlmIChjaGlwID49IDApCisJCUdQSU8oQk9BUkRfTkFORF9OQ0UpICZhbXA7PSB+ICgxICZsdDsmbHQ7IGNoaXApOworfQorCQk8L3Byb2dyYW1saXN0aW5nPgorCQk8cGFyYT4KKwkJCTxlbXBoYXNpcz5BZGRyZXNzIGxpbmVzIGJhc2VkIGV4YW1wbGUuPC9lbXBoYXNpcz4KKwkJCUl0cyBhc3N1bWVkIHRoYXQgdGhlIG5DRSBwaW5zIGFyZSBjb25uZWN0ZWQgdG8gYW4KKwkJCWFkZHJlc3MgZGVjb2Rlci4KKwkJPC9wYXJhPgorCQk8cHJvZ3JhbWxpc3Rpbmc+CitzdGF0aWMgdm9pZCBib2FyZF9zZWxlY3RfY2hpcCAoc3RydWN0IG10ZF9pbmZvICptdGQsIGludCBjaGlwKQoreworCXN0cnVjdCBuYW5kX2NoaXAgKnRoaXMgPSAoc3RydWN0IG5hbmRfY2hpcCAqKSBtdGQtPnByaXY7CisJCisJLyogRGVzZWxlY3QgYWxsIGNoaXBzICovCisJdGhpcy0+SU9fQUREUl9SICZhbXA7PSB+Qk9BUkRfTkFORF9BRERSX01BU0s7CisJdGhpcy0+SU9fQUREUl9XICZhbXA7PSB+Qk9BUkRfTkFORF9BRERSX01BU0s7CisJc3dpdGNoIChjaGlwKSB7CisJY2FzZSAwOgorCQl0aGlzLT5JT19BRERSX1IgfD0gQk9BUkRfTkFORF9BRERSX0NISVAwOworCQl0aGlzLT5JT19BRERSX1cgfD0gQk9BUkRfTkFORF9BRERSX0NISVAwOworCQlicmVhazsKKwkuLi4uCQorCWNhc2UgbjoKKwkJdGhpcy0+SU9fQUREUl9SIHw9IEJPQVJEX05BTkRfQUREUl9DSElQbjsKKwkJdGhpcy0+SU9fQUREUl9XIHw9IEJPQVJEX05BTkRfQUREUl9DSElQbjsKKwkJYnJlYWs7CisJfQkKK30KKwkJPC9wcm9ncmFtbGlzdGluZz4KKwk8L3NlY3QxPgorCTxzZWN0MSBpZD0iSGFyZHdhcmVfRUNDX3N1cHBvcnQiPgorCQk8dGl0bGU+SGFyZHdhcmUgRUNDIHN1cHBvcnQ8L3RpdGxlPgorCQk8c2VjdDIgaWQ9IkZ1bmN0aW9uc19hbmRfY29uc3RhbnRzIj4KKwkJCTx0aXRsZT5GdW5jdGlvbnMgYW5kIGNvbnN0YW50czwvdGl0bGU+CisJCQk8cGFyYT4KKwkJCQlUaGUgbmFuZCBkcml2ZXIgc3VwcG9ydHMgdGhyZWUgZGlmZmVyZW50IHR5cGVzIG9mCisJCQkJaGFyZHdhcmUgRUNDLgorCQkJCTxpdGVtaXplZGxpc3Q+CisJCQkJPGxpc3RpdGVtPjxwYXJhPk5BTkRfRUNDX0hXM18yNTY8L3BhcmE+PHBhcmE+CisJCQkJSGFyZHdhcmUgRUNDIGdlbmVyYXRvciBwcm92aWRpbmcgMyBieXRlcyBFQ0MgcGVyCisJCQkJMjU2IGJ5dGUuCisJCQkJPC9wYXJhPgk8L2xpc3RpdGVtPgorCQkJCTxsaXN0aXRlbT48cGFyYT5OQU5EX0VDQ19IVzNfNTEyPC9wYXJhPjxwYXJhPgorCQkJCUhhcmR3YXJlIEVDQyBnZW5lcmF0b3IgcHJvdmlkaW5nIDMgYnl0ZXMgRUNDIHBlcgorCQkJCTUxMiBieXRlLgorCQkJCTwvcGFyYT4JPC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+TkFORF9FQ0NfSFc2XzUxMjwvcGFyYT48cGFyYT4KKwkJCQlIYXJkd2FyZSBFQ0MgZ2VuZXJhdG9yIHByb3ZpZGluZyA2IGJ5dGVzIEVDQyBwZXIKKwkJCQk1MTIgYnl0ZS4KKwkJCQk8L3BhcmE+CTwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPk5BTkRfRUNDX0hXOF81MTI8L3BhcmE+PHBhcmE+CisJCQkJSGFyZHdhcmUgRUNDIGdlbmVyYXRvciBwcm92aWRpbmcgNiBieXRlcyBFQ0MgcGVyCisJCQkJNTEyIGJ5dGUuCisJCQkJPC9wYXJhPgk8L2xpc3RpdGVtPgorCQkJCTwvaXRlbWl6ZWRsaXN0PgorCQkJCUlmIHlvdXIgaGFyZHdhcmUgZ2VuZXJhdG9yIGhhcyBhIGRpZmZlcmVudCBmdW5jdGlvbmFsaXR5CisJCQkJYWRkIGl0IGF0IHRoZSBhcHByb3ByaWF0ZSBwbGFjZSBpbiBuYW5kX2Jhc2UuYworCQkJPC9wYXJhPgorCQkJPHBhcmE+CisJCQkJVGhlIGJvYXJkIGRyaXZlciBtdXN0IHByb3ZpZGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKKwkJCQk8aXRlbWl6ZWRsaXN0PgorCQkJCTxsaXN0aXRlbT48cGFyYT5lbmFibGVfaHdlY2M8L3BhcmE+PHBhcmE+CisJCQkJVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb3JlIHJlYWRpbmcgLyB3cml0aW5nIHRvCisJCQkJdGhlIGNoaXAuIFJlc2V0IG9yIGluaXRpYWxpemUgdGhlIGhhcmR3YXJlIGdlbmVyYXRvcgorCQkJCWluIHRoaXMgZnVuY3Rpb24uIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBhbgorCQkJCWFyZ3VtZW50IHdoaWNoIGxldCB5b3UgZGlzdGluZ3Vpc2ggYmV0d2VlbiByZWFkIAorCQkJCWFuZCB3cml0ZSBvcGVyYXRpb25zLgorCQkJCTwvcGFyYT4JPC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+Y2FsY3VsYXRlX2VjYzwvcGFyYT48cGFyYT4KKwkJCQlUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhZnRlciByZWFkIC8gd3JpdGUgZnJvbSAvIHRvCisJCQkJdGhlIGNoaXAuIFRyYW5zZmVyIHRoZSBFQ0MgZnJvbSB0aGUgaGFyZHdhcmUgdG8KKwkJCQl0aGUgYnVmZmVyLiBJZiB0aGUgb3B0aW9uIE5BTkRfSFdFQ0NfU1lORFJPTUUgaXMgc2V0CisJCQkJdGhlbiB0aGUgZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgb24gd3JpdGUuIFNlZSBiZWxvdy4KKwkJCQk8L3BhcmE+CTwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPmNvcnJlY3RfZGF0YTwvcGFyYT48cGFyYT4KKwkJCQlJbiBjYXNlIG9mIGFuIEVDQyBlcnJvciB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmb3IKKwkJCQllcnJvciBkZXRlY3Rpb24gYW5kIGNvcnJlY3Rpb24uIFJldHVybiAxIHJlc3BlY3RpdmVseSAyCisJCQkJaW4gY2FzZSB0aGUgZXJyb3IgY2FuIGJlIGNvcnJlY3RlZC4gSWYgdGhlIGVycm9yIGlzCisJCQkJbm90IGNvcnJlY3RhYmxlIHJldHVybiAtMS4gSWYgeW91ciBoYXJkd2FyZSBnZW5lcmF0b3IKKwkJCQltYXRjaGVzIHRoZSBkZWZhdWx0IGFsZ29yaXRobSBvZiB0aGUgbmFuZF9lY2Mgc29mdHdhcmUKKwkJCQlnZW5lcmF0b3IgdGhlbiB1c2UgdGhlIGNvcnJlY3Rpb24gZnVuY3Rpb24gcHJvdmlkZWQKKwkJCQlieSBuYW5kX2VjYyBpbnN0ZWFkIG9mIGltcGxlbWVudGluZyBkdXBsaWNhdGVkIGNvZGUuCisJCQkJPC9wYXJhPgk8L2xpc3RpdGVtPgorCQkJCTwvaXRlbWl6ZWRsaXN0PgorCQkJPC9wYXJhPgorCQk8L3NlY3QyPgorCQk8c2VjdDIgaWQ9IkhhcmR3YXJlX0VDQ193aXRoX3N5bmRyb21lX2NhbGN1bGF0aW9uIj4KKwkJPHRpdGxlPkhhcmR3YXJlIEVDQyB3aXRoIHN5bmRyb21lIGNhbGN1bGF0aW9uPC90aXRsZT4KKwkJCTxwYXJhPgorCQkJCU1hbnkgaGFyZHdhcmUgRUNDIGltcGxlbWVudGF0aW9ucyBwcm92aWRlIFJlZWQtU29sb21vbgorCQkJCWNvZGVzIGFuZCBjYWxjdWxhdGUgYW4gZXJyb3Igc3luZHJvbWUgb24gcmVhZC4gVGhlIHN5bmRyb21lCisJCQkJbXVzdCBiZSBjb252ZXJ0ZWQgdG8gYSBzdGFuZGFyZCBSZWVkLVNvbG9tb24gc3luZHJvbWUKKwkJCQliZWZvcmUgY2FsbGluZyB0aGUgZXJyb3IgY29ycmVjdGlvbiBjb2RlIGluIHRoZSBnZW5lcmljCisJCQkJUmVlZC1Tb2xvbW9uIGxpYnJhcnkuCisJCQk8L3BhcmE+CisJCQk8cGFyYT4KKwkJCQlUaGUgRUNDIGJ5dGVzIG11c3QgYmUgcGxhY2VkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBkYXRhCisJCQkJYnl0ZXMgaW4gb3JkZXIgdG8gbWFrZSB0aGUgc3luZHJvbWUgZ2VuZXJhdG9yIHdvcmsuIFRoaXMKKwkJCQlpcyBjb250cmFyeSB0byB0aGUgdXN1YWwgbGF5b3V0IHVzZWQgYnkgc29mdHdhcmUgRUNDLiBUaGUKKwkJCQlzZXBhcmF0aW9uIG9mIGRhdGEgYW5kIG91dCBvZiBiYW5kIGFyZWEgaXMgbm90IGxvbmdlcgorCQkJCXBvc3NpYmxlLiBUaGUgbmFuZCBkcml2ZXIgY29kZSBoYW5kbGVzIHRoaXMgbGF5b3V0IGFuZAorCQkJCXRoZSByZW1haW5pbmcgZnJlZSBieXRlcyBpbiB0aGUgb29iIGFyZWEgYXJlIG1hbmFnZWQgYnkgCisJCQkJdGhlIGF1dG9wbGFjZW1lbnQgY29kZS4gUHJvdmlkZSBhIG1hdGNoaW5nIG9vYi1sYXlvdXQKKwkJCQlpbiB0aGlzIGNhc2UuIFNlZSBydHNfZnJvbTQuYyBhbmQgZGlza29uY2hpcC5jIGZvciAKKwkJCQlpbXBsZW1lbnRhdGlvbiByZWZlcmVuY2UuIEluIHRob3NlIGNhc2VzIHdlIG11c3QgYWxzbworCQkJCXVzZSBiYWQgYmxvY2sgdGFibGVzIG9uIEZMQVNILCBiZWNhdXNlIHRoZSBFQ0MgbGF5b3V0IGlzCisJCQkJaW50ZXJmZXJpbmcgd2l0aCB0aGUgYmFkIGJsb2NrIG1hcmtlciBwb3NpdGlvbnMuCisJCQkJU2VlIGJhZCBibG9jayB0YWJsZSBzdXBwb3J0IGZvciBkZXRhaWxzLgorCQkJPC9wYXJhPgorCQk8L3NlY3QyPgorCTwvc2VjdDE+CisJPHNlY3QxIGlkPSJCYWRfQmxvY2tfdGFibGVfc3VwcG9ydCI+CisJCTx0aXRsZT5CYWQgYmxvY2sgdGFibGUgc3VwcG9ydDwvdGl0bGU+CisJCTxwYXJhPgorCQkJTW9zdCBOQU5EIGNoaXBzIG1hcmsgdGhlIGJhZCBibG9ja3MgYXQgYSBkZWZpbmVkCisJCQlwb3NpdGlvbiBpbiB0aGUgc3BhcmUgYXJlYS4gVGhvc2UgYmxvY2tzIG11c3QgCisJCQlub3QgYmUgZXJhc2VkIHVuZGVyIGFueSBjaXJjdW1zdGFuY2VzIGFzIHRoZSBiYWQgCisJCQlibG9jayBpbmZvcm1hdGlvbiB3b3VsZCBiZSBsb3N0LgorCQkJSXQgaXMgcG9zc2libGUgdG8gY2hlY2sgdGhlIGJhZCBibG9jayBtYXJrIGVhY2gKKwkJCXRpbWUgd2hlbiB0aGUgYmxvY2tzIGFyZSBhY2Nlc3NlZCBieSByZWFkaW5nIHRoZQorCQkJc3BhcmUgYXJlYSBvZiB0aGUgZmlyc3QgcGFnZSBpbiB0aGUgYmxvY2suIFRoaXMKKwkJCWlzIHRpbWUgY29uc3VtaW5nIHNvIGEgYmFkIGJsb2NrIHRhYmxlIGlzIHVzZWQuCisJCTwvcGFyYT4KKwkJPHBhcmE+CisJCQlUaGUgbmFuZCBkcml2ZXIgc3VwcG9ydHMgdmFyaW91cyB0eXBlcyBvZiBiYWQgYmxvY2sKKwkJCXRhYmxlcy4KKwkJCTxpdGVtaXplZGxpc3Q+CisJCQk8bGlzdGl0ZW0+PHBhcmE+UGVyIGRldmljZTwvcGFyYT48cGFyYT4KKwkJCVRoZSBiYWQgYmxvY2sgdGFibGUgY29udGFpbnMgYWxsIGJhZCBibG9jayBpbmZvcm1hdGlvbgorCQkJb2YgdGhlIGRldmljZSB3aGljaCBjYW4gY29uc2lzdCBvZiBtdWx0aXBsZSBjaGlwcy4KKwkJCTwvcGFyYT4JPC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT5QZXIgY2hpcDwvcGFyYT48cGFyYT4KKwkJCUEgYmFkIGJsb2NrIHRhYmxlIGlzIHVzZWQgcGVyIGNoaXAgYW5kIGNvbnRhaW5zIHRoZQorCQkJYmFkIGJsb2NrIGluZm9ybWF0aW9uIGZvciB0aGlzIHBhcnRpY3VsYXIgY2hpcC4KKwkJCTwvcGFyYT4JPC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT5GaXhlZCBvZmZzZXQ8L3BhcmE+PHBhcmE+CisJCQlUaGUgYmFkIGJsb2NrIHRhYmxlIGlzIGxvY2F0ZWQgYXQgYSBmaXhlZCBvZmZzZXQKKwkJCWluIHRoZSBjaGlwIChkZXZpY2UpLiBUaGlzIGFwcGxpZXMgdG8gdmFyaW91cworCQkJRGlza09uQ2hpcCBkZXZpY2VzLgorCQkJPC9wYXJhPgk8L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPkF1dG9tYXRpYyBwbGFjZWQ8L3BhcmE+PHBhcmE+CisJCQlUaGUgYmFkIGJsb2NrIHRhYmxlIGlzIGF1dG9tYXRpY2FsbHkgcGxhY2VkIGFuZAorCQkJZGV0ZWN0ZWQgZWl0aGVyIGF0IHRoZSBlbmQgb3IgYXQgdGhlIGJlZ2lubmluZworCQkJb2YgYSBjaGlwIChkZXZpY2UpCisJCQk8L3BhcmE+CTwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+TWlycm9yZWQgdGFibGVzPC9wYXJhPjxwYXJhPgorCQkJVGhlIGJhZCBibG9jayB0YWJsZSBpcyBtaXJyb3JlZCBvbiB0aGUgY2hpcCAoZGV2aWNlKSB0bworCQkJYWxsb3cgdXBkYXRlcyBvZiB0aGUgYmFkIGJsb2NrIHRhYmxlIHdpdGhvdXQgZGF0YSBsb3NzLgorCQkJPC9wYXJhPgk8L2xpc3RpdGVtPgorCQkJPC9pdGVtaXplZGxpc3Q+CisJCTwvcGFyYT4KKwkJPHBhcmE+CQorCQkJbmFuZF9zY2FuKCkgY2FsbHMgdGhlIGZ1bmN0aW9uIG5hbmRfZGVmYXVsdF9iYnQoKS4gCisJCQluYW5kX2RlZmF1bHRfYmJ0KCkgc2VsZWN0cyBhcHByb3ByaWF0ZSBkZWZhdWx0CisJCQliYWQgYmxvY2sgdGFibGUgZGVzY3JpcHRvcnMgZGVwZW5kaW5nIG9uIHRoZSBjaGlwIGluZm9ybWF0aW9uCisJCQl3aGljaCB3YXMgcmV0cmlldmVkIGJ5IG5hbmRfc2NhbigpLgorCQk8L3BhcmE+CisJCTxwYXJhPgorCQkJVGhlIHN0YW5kYXJkIHBvbGljeSBpcyBzY2FubmluZyB0aGUgZGV2aWNlIGZvciBiYWQgCisJCQlibG9ja3MgYW5kIGJ1aWxkIGEgcmFtIGJhc2VkIGJhZCBibG9jayB0YWJsZSB3aGljaAorCQkJYWxsb3dzIGZhc3RlciBhY2Nlc3MgdGhhbiBhbHdheXMgY2hlY2tpbmcgdGhlCisJCQliYWQgYmxvY2sgaW5mb3JtYXRpb24gb24gdGhlIGZsYXNoIGNoaXAgaXRzZWxmLgorCQk8L3BhcmE+CisJCTxzZWN0MiBpZD0iRmxhc2hfYmFzZWRfdGFibGVzIj4KKwkJCTx0aXRsZT5GbGFzaCBiYXNlZCB0YWJsZXM8L3RpdGxlPgorCQkJPHBhcmE+CisJCQkJSXQgbWF5IGJlIGRlc2lyZWQgb3IgbmVjZXNzYXJ5IHRvIGtlZXAgYSBiYWQgYmxvY2sgdGFibGUgaW4gRkxBU0guCisJCQkJRm9yIEFHLUFORCBjaGlwcyB0aGlzIGlzIG1hbmRhdG9yeSwgYXMgdGhleSBoYXZlIG5vIGZhY3RvcnkgbWFya2VkCisJCQkJYmFkIGJsb2Nrcy4gVGhleSBoYXZlIGZhY3RvcnkgbWFya2VkIGdvb2QgYmxvY2tzLiBUaGUgbWFya2VyIHBhdHRlcm4KKwkJCQlpcyBlcmFzZWQgd2hlbiB0aGUgYmxvY2sgaXMgZXJhc2VkIHRvIGJlIHJldXNlZC4gU28gaW4gY2FzZSBvZgorCQkJCXBvd2VybG9zcyBiZWZvcmUgd3JpdGluZyB0aGUgcGF0dGVybiBiYWNrIHRvIHRoZSBjaGlwIHRoaXMgYmxvY2sgCisJCQkJd291bGQgYmUgbG9zdCBhbmQgYWRkZWQgdG8gdGhlIGJhZCBibG9ja3MuIFRoZXJlZm9yZSB3ZSBzY2FuIHRoZSAKKwkJCQljaGlwKHMpIHdoZW4gd2UgZGV0ZWN0IHRoZW0gdGhlIGZpcnN0IHRpbWUgZm9yIGdvb2QgYmxvY2tzIGFuZCAKKwkJCQlzdG9yZSB0aGlzIGluZm9ybWF0aW9uIGluIGEgYmFkIGJsb2NrIHRhYmxlIGJlZm9yZSBlcmFzaW5nIGFueSAKKwkJCQlvZiB0aGUgYmxvY2tzLgorCQkJPC9wYXJhPgorCQkJPHBhcmE+CisJCQkJVGhlIGJsb2NrcyBpbiB3aGljaCB0aGUgdGFibGVzIGFyZSBzdG9yZWQgYXJlIHByb3RlY3RlZCBhZ2FpbnN0CisJCQkJYWNjaWRlbnRhbCBhY2Nlc3MgYnkgbWFya2luZyB0aGVtIGJhZCBpbiB0aGUgbWVtb3J5IGJhZCBibG9jaworCQkJCXRhYmxlLiBUaGUgYmFkIGJsb2NrIHRhYmxlIG1hbmFnZW1lbnQgZnVuY3Rpb25zIGFyZSBhbGxvd2VkCisJCQkJdG8gY2lyY3VtdmVudCB0aGlzIHByb3RlY3Rpb24uCisJCQk8L3BhcmE+CisJCQk8cGFyYT4KKwkJCQlUaGUgc2ltcGxlc3Qgd2F5IHRvIGFjdGl2YXRlIHRoZSBGTEFTSCBiYXNlZCBiYWQgYmxvY2sgdGFibGUgc3VwcG9ydCAKKwkJCQlpcyB0byBzZXQgdGhlIG9wdGlvbiBOQU5EX0JCVF9VU0VfRkxBU0ggaW4gdGhlIGJidF9vcHRpb24gZmllbGQgb2YKKwkJCQl0aGUgbmFuZCBjaGlwIHN0cnVjdHVyZSBiZWZvcmUgY2FsbGluZyBuYW5kX3NjYW4oKS4gRm9yIEFHLUFORAorCQkJCWNoaXBzIGlzIHRoaXMgZG9uZSBieSBkZWZhdWx0LgorCQkJCVRoaXMgYWN0aXZhdGVzIHRoZSBkZWZhdWx0IEZMQVNIIGJhc2VkIGJhZCBibG9jayB0YWJsZSBmdW5jdGlvbmFsaXR5IAorCQkJCW9mIHRoZSBOQU5EIGRyaXZlci4gVGhlIGRlZmF1bHQgYmFkIGJsb2NrIHRhYmxlIG9wdGlvbnMgYXJlCisJCQkJPGl0ZW1pemVkbGlzdD4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+U3RvcmUgYmFkIGJsb2NrIHRhYmxlIHBlciBjaGlwPC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPlVzZSAyIGJpdHMgcGVyIGJsb2NrPC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPkF1dG9tYXRpYyBwbGFjZW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgY2hpcDwvcGFyYT48L2xpc3RpdGVtPgorCQkJCTxsaXN0aXRlbT48cGFyYT5Vc2UgbWlycm9yZWQgdGFibGVzIHdpdGggdmVyc2lvbiBudW1iZXJzPC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPlJlc2VydmUgNCBibG9ja3MgYXQgdGhlIGVuZCBvZiB0aGUgY2hpcDwvcGFyYT48L2xpc3RpdGVtPgorCQkJCTwvaXRlbWl6ZWRsaXN0PgorCQkJPC9wYXJhPgorCQk8L3NlY3QyPgorCQk8c2VjdDIgaWQ9IlVzZXJfZGVmaW5lZF90YWJsZXMiPgorCQkJPHRpdGxlPlVzZXIgZGVmaW5lZCB0YWJsZXM8L3RpdGxlPgorCQkJPHBhcmE+CisJCQkJVXNlciBkZWZpbmVkIHRhYmxlcyBhcmUgY3JlYXRlZCBieSBmaWxsaW5nIG91dCBhIAorCQkJCW5hbmRfYmJ0X2Rlc2NyIHN0cnVjdHVyZSBhbmQgc3RvcmluZyB0aGUgcG9pbnRlciBpbiB0aGUKKwkJCQluYW5kX2NoaXAgc3RydWN0dXJlIG1lbWJlciBiYnRfdGQgYmVmb3JlIGNhbGxpbmcgbmFuZF9zY2FuKCkuIAorCQkJCUlmIGEgbWlycm9yIHRhYmxlIGlzIG5lY2Vzc2FyeSBhIHNlY29uZCBzdHJ1Y3R1cmUgbXVzdCBiZQorCQkJCWNyZWF0ZWQgYW5kIGEgcG9pbnRlciB0byB0aGlzIHN0cnVjdHVyZSBtdXN0IGJlIHN0b3JlZAorCQkJCWluIGJidF9tZCBpbnNpZGUgdGhlIG5hbmRfY2hpcCBzdHJ1Y3R1cmUuIElmIHRoZSBiYnRfbWQgCisJCQkJbWVtYmVyIGlzIHNldCB0byBOVUxMIHRoZW4gb25seSB0aGUgbWFpbiB0YWJsZSBpcyB1c2VkCisJCQkJYW5kIG5vIHNjYW4gZm9yIHRoZSBtaXJyb3JlZCB0YWJsZSBpcyBwZXJmb3JtZWQuCisJCQk8L3BhcmE+CisJCQk8cGFyYT4KKwkJCQlUaGUgbW9zdCBpbXBvcnRhbnQgZmllbGQgaW4gdGhlIG5hbmRfYmJ0X2Rlc2NyIHN0cnVjdHVyZQorCQkJCWlzIHRoZSBvcHRpb25zIGZpZWxkLiBUaGUgb3B0aW9ucyBkZWZpbmUgbW9zdCBvZiB0aGUgCisJCQkJdGFibGUgcHJvcGVydGllcy4gVXNlIHRoZSBwcmVkZWZpbmVkIGNvbnN0YW50cyBmcm9tCisJCQkJbmFuZC5oIHRvIGRlZmluZSB0aGUgb3B0aW9ucy4KKwkJCQk8aXRlbWl6ZWRsaXN0PgorCQkJCTxsaXN0aXRlbT48cGFyYT5OdW1iZXIgb2YgYml0cyBwZXIgYmxvY2s8L3BhcmE+CisJCQkJPHBhcmE+VGhlIHN1cHBvcnRlZCBudW1iZXIgb2YgYml0cyBpcyAxLCAyLCA0LCA4LjwvcGFyYT48L2xpc3RpdGVtPgorCQkJCTxsaXN0aXRlbT48cGFyYT5UYWJsZSBwZXIgY2hpcDwvcGFyYT4KKwkJCQk8cGFyYT5TZXR0aW5nIHRoZSBjb25zdGFudCBOQU5EX0JCVF9QRVJDSElQIHNlbGVjdHMgdGhhdAorCQkJCWEgYmFkIGJsb2NrIHRhYmxlIGlzIG1hbmFnZWQgZm9yIGVhY2ggY2hpcCBpbiBhIGNoaXAgYXJyYXkuCisJCQkJSWYgdGhpcyBvcHRpb24gaXMgbm90IHNldCB0aGVuIGEgcGVyIGRldmljZSBiYWQgYmxvY2sgdGFibGUKKwkJCQlpcyB1c2VkLjwvcGFyYT48L2xpc3RpdGVtPgorCQkJCTxsaXN0aXRlbT48cGFyYT5UYWJsZSBsb2NhdGlvbiBpcyBhYnNvbHV0ZTwvcGFyYT4KKwkJCQk8cGFyYT5Vc2UgdGhlIG9wdGlvbiBjb25zdGFudCBOQU5EX0JCVF9BQlNQQUdFIGFuZAorCQkJCWRlZmluZSB0aGUgYWJzb2x1dGUgcGFnZSBudW1iZXIgd2hlcmUgdGhlIGJhZCBibG9jaworCQkJCXRhYmxlIHN0YXJ0cyBpbiB0aGUgZmllbGQgcGFnZXMuIElmIHlvdSBoYXZlIHNlbGVjdGVkIGJhZCBibG9jaworCQkJCXRhYmxlcyBwZXIgY2hpcCBhbmQgeW91IGhhdmUgYSBtdWx0aSBjaGlwIGFycmF5IHRoZW4gdGhlIHN0YXJ0IHBhZ2UKKwkJCQltdXN0IGJlIGdpdmVuIGZvciBlYWNoIGNoaXAgaW4gdGhlIGNoaXAgYXJyYXkuIE5vdGU6IHRoZXJlIGlzIG5vIHNjYW4KKwkJCQlmb3IgYSB0YWJsZSBpZGVudCBwYXR0ZXJuIHBlcmZvcm1lZCwgc28gdGhlIGZpZWxkcyAKKwkJCQlwYXR0ZXJuLCB2ZXJvZmZzLCBvZmZzLCBsZW4gY2FuIGJlIGxlZnQgdW5pbml0aWFsaXplZDwvcGFyYT48L2xpc3RpdGVtPgorCQkJCTxsaXN0aXRlbT48cGFyYT5UYWJsZSBsb2NhdGlvbiBpcyBhdXRvbWF0aWNhbGx5IGRldGVjdGVkPC9wYXJhPgorCQkJCTxwYXJhPlRoZSB0YWJsZSBjYW4gZWl0aGVyIGJlIGxvY2F0ZWQgaW4gdGhlIGZpcnN0IG9yIHRoZSBsYXN0IGdvb2QKKwkJCQlibG9ja3Mgb2YgdGhlIGNoaXAgKGRldmljZSkuIFNldCBOQU5EX0JCVF9MQVNUQkxPQ0sgdG8gcGxhY2UKKwkJCQl0aGUgYmFkIGJsb2NrIHRhYmxlIGF0IHRoZSBlbmQgb2YgdGhlIGNoaXAgKGRldmljZSkuIFRoZQorCQkJCWJhZCBibG9jayB0YWJsZXMgYXJlIG1hcmtlZCBhbmQgaWRlbnRpZmllZCBieSBhIHBhdHRlcm4gd2hpY2gKKwkJCQlpcyBzdG9yZWQgaW4gdGhlIHNwYXJlIGFyZWEgb2YgdGhlIGZpcnN0IHBhZ2UgaW4gdGhlIGJsb2NrIHdoaWNoCisJCQkJaG9sZHMgdGhlIGJhZCBibG9jayB0YWJsZS4gU3RvcmUgYSBwb2ludGVyIHRvIHRoZSBwYXR0ZXJuICAKKwkJCQlpbiB0aGUgcGF0dGVybiBmaWVsZC4gRnVydGhlciB0aGUgbGVuZ3RoIG9mIHRoZSBwYXR0ZXJuIGhhcyB0byBiZSAKKwkJCQlzdG9yZWQgaW4gbGVuIGFuZCB0aGUgb2Zmc2V0IGluIHRoZSBzcGFyZSBhcmVhIG11c3QgYmUgZ2l2ZW4KKwkJCQlpbiB0aGUgb2ZmcyBtZW1iZXIgb2YgdGhlIG5hbmRfYmJ0X2Rlc2NyIHN0cnVjdHVyZS4gRm9yIG1pcnJvcmVkCisJCQkJYmFkIGJsb2NrIHRhYmxlcyBkaWZmZXJlbnQgcGF0dGVybnMgYXJlIG1hbmRhdG9yeS48L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+VGFibGUgY3JlYXRpb248L3BhcmE+CisJCQkJPHBhcmE+U2V0IHRoZSBvcHRpb24gTkFORF9CQlRfQ1JFQVRFIHRvIGVuYWJsZSB0aGUgdGFibGUgY3JlYXRpb24KKwkJCQlpZiBubyB0YWJsZSBjYW4gYmUgZm91bmQgZHVyaW5nIHRoZSBzY2FuLiBVc3VhbGx5IHRoaXMgaXMgZG9uZSBvbmx5IAorCQkJCW9uY2UgaWYgYSBuZXcgY2hpcCBpcyBmb3VuZC4gPC9wYXJhPjwvbGlzdGl0ZW0+CisJCQkJPGxpc3RpdGVtPjxwYXJhPlRhYmxlIHdyaXRlIHN1cHBvcnQ8L3BhcmE+CisJCQkJPHBhcmE+U2V0IHRoZSBvcHRpb24gTkFORF9CQlRfV1JJVEUgdG8gZW5hYmxlIHRoZSB0YWJsZSB3cml0ZSBzdXBwb3J0LgorCQkJCVRoaXMgYWxsb3dzIHRoZSB1cGRhdGUgb2YgdGhlIGJhZCBibG9jayB0YWJsZShzKSBpbiBjYXNlIGEgYmxvY2sgaGFzCisJCQkJdG8gYmUgbWFya2VkIGJhZCBkdWUgdG8gd2Vhci4gVGhlIE1URCBpbnRlcmZhY2UgZnVuY3Rpb24gYmxvY2tfbWFya2JhZAorCQkJCWlzIGNhbGxpbmcgdGhlIHVwZGF0ZSBmdW5jdGlvbiBvZiB0aGUgYmFkIGJsb2NrIHRhYmxlLiBJZiB0aGUgd3JpdGUKKwkJCQlzdXBwb3J0IGlzIGVuYWJsZWQgdGhlbiB0aGUgdGFibGUgaXMgdXBkYXRlZCBvbiBGTEFTSC48L3BhcmE+CisJCQkJPHBhcmE+CisJCQkJTm90ZTogV3JpdGUgc3VwcG9ydCBzaG91bGQgb25seSBiZSBlbmFibGVkIGZvciBtaXJyb3JlZCB0YWJsZXMgd2l0aAorCQkJCXZlcnNpb24gY29udHJvbC4KKwkJCQk8L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+VGFibGUgdmVyc2lvbiBjb250cm9sPC9wYXJhPgorCQkJCTxwYXJhPlNldCB0aGUgb3B0aW9uIE5BTkRfQkJUX1ZFUlNJT04gdG8gZW5hYmxlIHRoZSB0YWJsZSB2ZXJzaW9uIGNvbnRyb2wuCisJCQkJSXQncyBoaWdobHkgcmVjb21tZW5kZWQgdG8gZW5hYmxlIHRoaXMgZm9yIG1pcnJvcmVkIHRhYmxlcyB3aXRoIHdyaXRlCisJCQkJc3VwcG9ydC4gSXQgbWFrZXMgc3VyZSB0aGF0IHRoZSByaXNrIG9mIGxvc2luZyB0aGUgYmFkIGJsb2NrCisJCQkJdGFibGUgaW5mb3JtYXRpb24gaXMgcmVkdWNlZCB0byB0aGUgbG9zcyBvZiB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlCisJCQkJb25lIHdvcm4gb3V0IGJsb2NrIHdoaWNoIHNob3VsZCBiZSBtYXJrZWQgYmFkLiBUaGUgdmVyc2lvbiBpcyBzdG9yZWQgaW4KKwkJCQk0IGNvbnNlY3V0aXZlIGJ5dGVzIGluIHRoZSBzcGFyZSBhcmVhIG9mIHRoZSBkZXZpY2UuIFRoZSBwb3NpdGlvbiBvZgorCQkJCXRoZSB2ZXJzaW9uIG51bWJlciBpcyBkZWZpbmVkIGJ5IHRoZSBtZW1iZXIgdmVyb2ZmcyBpbiB0aGUgYmFkIGJsb2NrIHRhYmxlCisJCQkJZGVzY3JpcHRvci48L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+U2F2ZSBibG9jayBjb250ZW50cyBvbiB3cml0ZTwvcGFyYT4KKwkJCQk8cGFyYT4KKwkJCQlJbiBjYXNlIHRoYXQgdGhlIGJsb2NrIHdoaWNoIGhvbGRzIHRoZSBiYWQgYmxvY2sgdGFibGUgZG9lcyBjb250YWluCisJCQkJb3RoZXIgdXNlZnVsIGluZm9ybWF0aW9uLCBzZXQgdGhlIG9wdGlvbiBOQU5EX0JCVF9TQVZFQ09OVEVOVC4gV2hlbgorCQkJCXRoZSBiYWQgYmxvY2sgdGFibGUgaXMgd3JpdHRlbiB0aGVuIHRoZSB3aG9sZSBibG9jayBpcyByZWFkIHRoZSBiYWQKKwkJCQlibG9jayB0YWJsZSBpcyB1cGRhdGVkIGFuZCB0aGUgYmxvY2sgaXMgZXJhc2VkIGFuZCBldmVyeXRoaW5nIGlzIAorCQkJCXdyaXR0ZW4gYmFjay4gSWYgdGhpcyBvcHRpb24gaXMgbm90IHNldCBvbmx5IHRoZSBiYWQgYmxvY2sgdGFibGUKKwkJCQlpcyB3cml0dGVuIGFuZCBldmVyeXRoaW5nIGVsc2UgaW4gdGhlIGJsb2NrIGlzIGlnbm9yZWQgYW5kIGVyYXNlZC4KKwkJCQk8L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8bGlzdGl0ZW0+PHBhcmE+TnVtYmVyIG9mIHJlc2VydmVkIGJsb2NrczwvcGFyYT4KKwkJCQk8cGFyYT4KKwkJCQlGb3IgYXV0b21hdGljIHBsYWNlbWVudCBzb21lIGJsb2NrcyBtdXN0IGJlIHJlc2VydmVkIGZvcgorCQkJCWJhZCBibG9jayB0YWJsZSBzdG9yYWdlLiBUaGUgbnVtYmVyIG9mIHJlc2VydmVkIGJsb2NrcyBpcyBkZWZpbmVkIAorCQkJCWluIHRoZSBtYXhibG9ja3MgbWVtYmVyIG9mIHRoZSBiYWQgYmxvY2sgdGFibGUgZGVzY3JpcHRpb24gc3RydWN0dXJlLgorCQkJCVJlc2VydmluZyA0IGJsb2NrcyBmb3IgbWlycm9yZWQgdGFibGVzIHNob3VsZCBiZSBhIHJlYXNvbmFibGUgbnVtYmVyLiAKKwkJCQlUaGlzIGFsc28gbGltaXRzIHRoZSBudW1iZXIgb2YgYmxvY2tzIHdoaWNoIGFyZSBzY2FubmVkIGZvciB0aGUgYmFkCisJCQkJYmxvY2sgdGFibGUgaWRlbnQgcGF0dGVybi4KKwkJCQk8L3BhcmE+PC9saXN0aXRlbT4KKwkJCQk8L2l0ZW1pemVkbGlzdD4KKwkJCTwvcGFyYT4KKwkJPC9zZWN0Mj4KKwk8L3NlY3QxPgorCTxzZWN0MSBpZD0iU3BhcmVfYXJlYV9wbGFjZW1lbnQiPgorCQk8dGl0bGU+U3BhcmUgYXJlYSAoYXV0bylwbGFjZW1lbnQ8L3RpdGxlPgorCQk8cGFyYT4KKwkJCVRoZSBuYW5kIGRyaXZlciBpbXBsZW1lbnRzIGRpZmZlcmVudCBwb3NzaWJpbGl0aWVzIGZvcgorCQkJcGxhY2VtZW50IG9mIGZpbGVzeXN0ZW0gZGF0YSBpbiB0aGUgc3BhcmUgYXJlYSwgCisJCQk8aXRlbWl6ZWRsaXN0PgorCQkJPGxpc3RpdGVtPjxwYXJhPlBsYWNlbWVudCBkZWZpbmVkIGJ5IGZzIGRyaXZlcjwvcGFyYT48L2xpc3RpdGVtPgorCQkJPGxpc3RpdGVtPjxwYXJhPkF1dG9tYXRpYyBwbGFjZW1lbnQ8L3BhcmE+PC9saXN0aXRlbT4KKwkJCTwvaXRlbWl6ZWRsaXN0PgorCQkJVGhlIGRlZmF1bHQgcGxhY2VtZW50IGZ1bmN0aW9uIGlzIGF1dG9tYXRpYyBwbGFjZW1lbnQuIFRoZQorCQkJbmFuZCBkcml2ZXIgaGFzIGJ1aWx0IGluIGRlZmF1bHQgcGxhY2VtZW50IHNjaGVtZXMgZm9yIHRoZQorCQkJdmFyaW91cyBjaGlwdHlwZXMuIElmIGR1ZSB0byBoYXJkd2FyZSBFQ0MgZnVuY3Rpb25hbGl0eSB0aGUKKwkJCWRlZmF1bHQgcGxhY2VtZW50IGRvZXMgbm90IGZpdCB0aGVuIHRoZSBib2FyZCBkcml2ZXIgY2FuCisJCQlwcm92aWRlIGEgb3duIHBsYWNlbWVudCBzY2hlbWUuCisJCTwvcGFyYT4KKwkJPHBhcmE+CisJCQlGaWxlIHN5c3RlbSBkcml2ZXJzIGNhbiBwcm92aWRlIGEgb3duIHBsYWNlbWVudCBzY2hlbWUgd2hpY2gKKwkJCWlzIHVzZWQgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBwbGFjZW1lbnQgc2NoZW1lLgorCQk8L3BhcmE+CisJCTxwYXJhPgorCQkJUGxhY2VtZW50IHNjaGVtZXMgYXJlIGRlZmluZWQgYnkgYSBuYW5kX29vYmluZm8gc3RydWN0dXJlCisJICAgICAJCTxwcm9ncmFtbGlzdGluZz4KK3N0cnVjdCBuYW5kX29vYmluZm8geworCWludAl1c2VlY2M7CisJaW50CWVjY2J5dGVzOworCWludAllY2Nwb3NbMjRdOworCWludAlvb2JmcmVlWzhdWzJdOworfTsKKwkgICAgIAkJPC9wcm9ncmFtbGlzdGluZz4KKwkJCTxpdGVtaXplZGxpc3Q+CisJCQk8bGlzdGl0ZW0+PHBhcmE+dXNlZWNjPC9wYXJhPjxwYXJhPgorCQkJCVRoZSB1c2VlY2MgbWVtYmVyIGNvbnRyb2xzIHRoZSBlY2MgYW5kIHBsYWNlbWVudCBmdW5jdGlvbi4gVGhlIGhlYWRlcgorCQkJCWZpbGUgaW5jbHVkZS9tdGQvbXRkLWFiaS5oIGNvbnRhaW5zIGNvbnN0YW50cyB0byBzZWxlY3QgZWNjIGFuZAorCQkJCXBsYWNlbWVudC4gTVREX05BTkRFQ0NfT0ZGIHN3aXRjaGVzIG9mZiB0aGUgZWNjIGNvbXBsZXRlLiBUaGlzIGlzCisJCQkJbm90IHJlY29tbWVuZGVkIGFuZCBhdmFpbGFibGUgZm9yIHRlc3RpbmcgYW5kIGRpYWdub3NpcyBvbmx5LgorCQkJCU1URF9OQU5ERUNDX1BMQUNFIHNlbGVjdHMgY2FsbGVyIGRlZmluZWQgcGxhY2VtZW50LCBNVERfTkFOREVDQ19BVVRPUExBQ0UKKwkJCQlzZWxlY3RzIGF1dG9tYXRpYyBwbGFjZW1lbnQuCisJCQk8L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT5lY2NieXRlczwvcGFyYT48cGFyYT4KKwkJCQlUaGUgZWNjYnl0ZXMgbWVtYmVyIGRlZmluZXMgdGhlIG51bWJlciBvZiBlY2MgYnl0ZXMgcGVyIHBhZ2UuCisJCQk8L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT5lY2Nwb3M8L3BhcmE+PHBhcmE+CisJCQkJVGhlIGVjY3BvcyBhcnJheSBob2xkcyB0aGUgYnl0ZSBvZmZzZXRzIGluIHRoZSBzcGFyZSBhcmVhIHdoZXJlCisJCQkJdGhlIGVjYyBjb2RlcyBhcmUgcGxhY2VkLgorCQkJPC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+b29iZnJlZTwvcGFyYT48cGFyYT4KKwkJCQlUaGUgb29iZnJlZSBhcnJheSBkZWZpbmVzIHRoZSBhcmVhcyBpbiB0aGUgc3BhcmUgYXJlYSB3aGljaCBjYW4gYmUKKwkJCQl1c2VkIGZvciBhdXRvbWF0aWMgcGxhY2VtZW50LiBUaGUgaW5mb3JtYXRpb24gaXMgZ2l2ZW4gaW4gdGhlIGZvcm1hdAorCQkJCXtvZmZzZXQsIHNpemV9LiBvZmZzZXQgZGVmaW5lcyB0aGUgc3RhcnQgb2YgdGhlIHVzYWJsZSBhcmVhLCBzaXplIHRoZQorCQkJCWxlbmd0aCBpbiBieXRlcy4gTW9yZSB0aGFuIG9uZSBhcmVhIGNhbiBiZSBkZWZpbmVkLiBUaGUgbGlzdCBpcyB0ZXJtaW5hdGVkCisJCQkJYnkgYW4gezAsIDB9IGVudHJ5LgorCQkJPC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8L2l0ZW1pemVkbGlzdD4KKwkJPC9wYXJhPgorCQk8c2VjdDIgaWQ9IlBsYWNlbWVudF9kZWZpbmVkX2J5X2ZzX2RyaXZlciI+CisJCQk8dGl0bGU+UGxhY2VtZW50IGRlZmluZWQgYnkgZnMgZHJpdmVyPC90aXRsZT4KKwkJCTxwYXJhPgorCQkJCVRoZSBjYWxsaW5nIGZ1bmN0aW9uIHByb3ZpZGVzIGEgcG9pbnRlciB0byBhIG5hbmRfb29iaW5mbworCQkJCXN0cnVjdHVyZSB3aGljaCBkZWZpbmVzIHRoZSBlY2MgcGxhY2VtZW50LiBGb3Igd3JpdGVzIHRoZQorCQkJCWNhbGxlciBtdXN0IHByb3ZpZGUgYSBzcGFyZSBhcmVhIGJ1ZmZlciBhbG9uZyB3aXRoIHRoZQorCQkJCWRhdGEgYnVmZmVyLiBUaGUgc3BhcmUgYXJlYSBidWZmZXIgc2l6ZSBpcyAobnVtYmVyIG9mIHBhZ2VzKSAqCisJCQkJKHNpemUgb2Ygc3BhcmUgYXJlYSkuIEZvciByZWFkcyB0aGUgYnVmZmVyIHNpemUgaXMKKwkJCQkobnVtYmVyIG9mIHBhZ2VzKSAqICgoc2l6ZSBvZiBzcGFyZSBhcmVhKSArIChudW1iZXIgb2YgZWNjCisJCQkJc3RlcHMgcGVyIHBhZ2UpICogc2l6ZW9mIChpbnQpKS4gVGhlIGRyaXZlciBzdG9yZXMgdGhlCisJCQkJcmVzdWx0IG9mIHRoZSBlY2MgY2hlY2sgZm9yIGVhY2ggdHVwbGUgaW4gdGhlIHNwYXJlIGJ1ZmZlci4KKwkJCQlUaGUgc3RvcmFnZSBzZXF1ZW5jZSBpcyAKKwkJCTwvcGFyYT4KKwkJCTxwYXJhPgorCQkJCSZsdDtzcGFyZSBkYXRhIHBhZ2UgMCZndDsmbHQ7ZWNjIHJlc3VsdCAwJmd0Oy4uLiZsdDtlY2MgcmVzdWx0IG4mZ3Q7CisJCQk8L3BhcmE+CisJCQk8cGFyYT4KKwkJCQkuLi4KKwkJCTwvcGFyYT4KKwkJCTxwYXJhPgorCQkJCSZsdDtzcGFyZSBkYXRhIHBhZ2UgbiZndDsmbHQ7ZWNjIHJlc3VsdCAwJmd0Oy4uLiZsdDtlY2MgcmVzdWx0IG4mZ3Q7CisJCQk8L3BhcmE+CisJCQk8cGFyYT4KKwkJCQlUaGlzIGlzIGEgbGVnYWN5IG1vZGUgdXNlZCBieSBZQUZGUzEuCisJCQk8L3BhcmE+CisJCQk8cGFyYT4KKwkJCQlJZiB0aGUgc3BhcmUgYXJlYSBidWZmZXIgaXMgTlVMTCB0aGVuIG9ubHkgdGhlIEVDQyBwbGFjZW1lbnQgaXMKKwkJCQlkb25lIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gc2NoZW1lIGluIHRoZSBuYW5kX29vYmluZm8gc3RydWN0dXJlLgorCQkJPC9wYXJhPgorCQk8L3NlY3QyPgorCQk8c2VjdDIgaWQ9IkF1dG9tYXRpY19wbGFjZW1lbnQiPgorCQkJPHRpdGxlPkF1dG9tYXRpYyBwbGFjZW1lbnQ8L3RpdGxlPgorCQkJPHBhcmE+CisJCQkJQXV0b21hdGljIHBsYWNlbWVudCB1c2VzIHRoZSBidWlsdCBpbiBkZWZhdWx0cyB0byBwbGFjZSB0aGUKKwkJCQllY2MgYnl0ZXMgaW4gdGhlIHNwYXJlIGFyZWEuIElmIGZpbGVzeXN0ZW0gZGF0YSBoYXZlIHRvIGJlIHN0b3JlZCAvCisJCQkJcmVhZCBpbnRvIHRoZSBzcGFyZSBhcmVhIHRoZW4gdGhlIGNhbGxpbmcgZnVuY3Rpb24gbXVzdCBwcm92aWRlIGEKKwkJCQlidWZmZXIuIFRoZSBidWZmZXIgc2l6ZSBwZXIgcGFnZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvb2JmcmVlIGFycmF5IGluCisJCQkJdGhlIG5hbmRfb29iaW5mbyBzdHJ1Y3R1cmUuCisJCQk8L3BhcmE+CisJCQk8cGFyYT4KKwkJCQlJZiB0aGUgc3BhcmUgYXJlYSBidWZmZXIgaXMgTlVMTCB0aGVuIG9ubHkgdGhlIEVDQyBwbGFjZW1lbnQgaXMKKwkJCQlkb25lIGFjY29yZGluZyB0byB0aGUgZGVmYXVsdCBidWlsdGluIHNjaGVtZS4KKwkJCTwvcGFyYT4KKwkJPC9zZWN0Mj4KKwk8L3NlY3QxPgkKKwk8c2VjdDEgaWQ9IlNwYXJlX2FyZWFfYXV0b3BsYWNlbWVudF9kZWZhdWx0Ij4KKwkJPHRpdGxlPlNwYXJlIGFyZWEgYXV0b3BsYWNlbWVudCBkZWZhdWx0IHNjaGVtZXM8L3RpdGxlPgorCQk8c2VjdDIgaWQ9InBhZ2VzaXplXzI1NiI+CisJCQk8dGl0bGU+MjU2IGJ5dGUgcGFnZXNpemU8L3RpdGxlPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIzIj48dGJvZHk+Cis8cm93PgorPGVudHJ5Pk9mZnNldDwvZW50cnk+Cis8ZW50cnk+Q29udGVudDwvZW50cnk+Cis8ZW50cnk+Q29tbWVudDwvZW50cnk+Cis8L3Jvdz4KKzxyb3c+Cis8ZW50cnk+MHgwMDwvZW50cnk+Cis8ZW50cnk+RUNDIGJ5dGUgMDwvZW50cnk+Cis8ZW50cnk+RXJyb3IgY29ycmVjdGlvbiBjb2RlIGJ5dGUgMDwvZW50cnk+Cis8L3Jvdz4KKzxyb3c+Cis8ZW50cnk+MHgwMTwvZW50cnk+Cis8ZW50cnk+RUNDIGJ5dGUgMTwvZW50cnk+Cis8ZW50cnk+RXJyb3IgY29ycmVjdGlvbiBjb2RlIGJ5dGUgMTwvZW50cnk+Cis8L3Jvdz4KKzxyb3c+Cis8ZW50cnk+MHgwMjwvZW50cnk+Cis8ZW50cnk+RUNDIGJ5dGUgMjwvZW50cnk+Cis8ZW50cnk+RXJyb3IgY29ycmVjdGlvbiBjb2RlIGJ5dGUgMjwvZW50cnk+Cis8L3Jvdz4KKzxyb3c+Cis8ZW50cnk+MHgwMzwvZW50cnk+Cis8ZW50cnk+QXV0b3BsYWNlIDA8L2VudHJ5PgorPGVudHJ5PjwvZW50cnk+Cis8L3Jvdz4KKzxyb3c+Cis8ZW50cnk+MHgwNDwvZW50cnk+Cis8ZW50cnk+QXV0b3BsYWNlIDE8L2VudHJ5PgorPGVudHJ5PjwvZW50cnk+Cis8L3Jvdz4KKzxyb3c+Cis8ZW50cnk+MHgwNTwvZW50cnk+Cis8ZW50cnk+QmFkIGJsb2NrIG1hcmtlcjwvZW50cnk+Cis8ZW50cnk+SWYgYW55IGJpdCBpbiB0aGlzIGJ5dGUgaXMgemVybywgdGhlbiB0aGlzIGJsb2NrIGlzIGJhZC4KK1RoaXMgYXBwbGllcyBvbmx5IHRvIHRoZSBmaXJzdCBwYWdlIGluIGEgYmxvY2suIEluIHRoZSByZW1haW5pbmcKK3BhZ2VzIHRoaXMgYnl0ZSBpcyByZXNlcnZlZDwvZW50cnk+Cis8L3Jvdz4KKzxyb3c+Cis8ZW50cnk+MHgwNjwvZW50cnk+Cis8ZW50cnk+QXV0b3BsYWNlIDI8L2VudHJ5PgorPGVudHJ5PjwvZW50cnk+Cis8L3Jvdz4KKzxyb3c+Cis8ZW50cnk+MHgwNzwvZW50cnk+Cis8ZW50cnk+QXV0b3BsYWNlIDM8L2VudHJ5PgorPGVudHJ5PjwvZW50cnk+Cis8L3Jvdz4KKzwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorCQk8L3NlY3QyPgorCQk8c2VjdDIgaWQ9InBhZ2VzaXplXzUxMiI+CisJCQk8dGl0bGU+NTEyIGJ5dGUgcGFnZXNpemU8L3RpdGxlPgorPGluZm9ybWFsdGFibGU+PHRncm91cCBjb2xzPSIzIj48dGJvZHk+Cis8cm93PgorPGVudHJ5Pk9mZnNldDwvZW50cnk+Cis8ZW50cnk+Q29udGVudDwvZW50cnk+Cis8ZW50cnk+Q29tbWVudDwvZW50cnk+Cis8L3Jvdz4KKzxyb3c+Cis8ZW50cnk+MHgwMDwvZW50cnk+Cis8ZW50cnk+RUNDIGJ5dGUgMDwvZW50cnk+Cis8ZW50cnk+RXJyb3IgY29ycmVjdGlvbiBjb2RlIGJ5dGUgMCBvZiB0aGUgbG93ZXIgMjU2IEJ5dGUgZGF0YSBpbgordGhpcyBwYWdlPC9lbnRyeT4KKzwvcm93PgorPHJvdz4KKzxlbnRyeT4weDAxPC9lbnRyeT4KKzxlbnRyeT5FQ0MgYnl0ZSAxPC9lbnRyeT4KKzxlbnRyeT5FcnJvciBjb3JyZWN0aW9uIGNvZGUgYnl0ZSAxIG9mIHRoZSBsb3dlciAyNTYgQnl0ZXMgb2YgZGF0YQoraW4gdGhpcyBwYWdlPC9lbnRyeT4KKzwvcm93PgorPHJvdz4KKzxlbnRyeT4weDAyPC9lbnRyeT4KKzxlbnRyeT5FQ0MgYnl0ZSAyPC9lbnRyeT4KKzxlbnRyeT5FcnJvciBjb3JyZWN0aW9uIGNvZGUgYnl0ZSAyIG9mIHRoZSBsb3dlciAyNTYgQnl0ZXMgb2YgZGF0YQoraW4gdGhpcyBwYWdlPC9lbnRyeT4KKzwvcm93PgorPHJvdz4KKzxlbnRyeT4weDAzPC9lbnRyeT4KKzxlbnRyeT5FQ0MgYnl0ZSAzPC9lbnRyeT4KKzxlbnRyeT5FcnJvciBjb3JyZWN0aW9uIGNvZGUgYnl0ZSAwIG9mIHRoZSB1cHBlciAyNTYgQnl0ZXMgb2YgZGF0YQoraW4gdGhpcyBwYWdlPC9lbnRyeT4KKzwvcm93PgorPHJvdz4KKzxlbnRyeT4weDA0PC9lbnRyeT4KKzxlbnRyeT5yZXNlcnZlZDwvZW50cnk+Cis8ZW50cnk+cmVzZXJ2ZWQ8L2VudHJ5PgorPC9yb3c+Cis8cm93PgorPGVudHJ5PjB4MDU8L2VudHJ5PgorPGVudHJ5PkJhZCBibG9jayBtYXJrZXI8L2VudHJ5PgorPGVudHJ5PklmIGFueSBiaXQgaW4gdGhpcyBieXRlIGlzIHplcm8sIHRoZW4gdGhpcyBibG9jayBpcyBiYWQuCitUaGlzIGFwcGxpZXMgb25seSB0byB0aGUgZmlyc3QgcGFnZSBpbiBhIGJsb2NrLiBJbiB0aGUgcmVtYWluaW5nCitwYWdlcyB0aGlzIGJ5dGUgaXMgcmVzZXJ2ZWQ8L2VudHJ5PgorPC9yb3c+Cis8cm93PgorPGVudHJ5PjB4MDY8L2VudHJ5PgorPGVudHJ5PkVDQyBieXRlIDQ8L2VudHJ5PgorPGVudHJ5PkVycm9yIGNvcnJlY3Rpb24gY29kZSBieXRlIDEgb2YgdGhlIHVwcGVyIDI1NiBCeXRlcyBvZiBkYXRhCitpbiB0aGlzIHBhZ2U8L2VudHJ5PgorPC9yb3c+Cis8cm93PgorPGVudHJ5PjB4MDc8L2VudHJ5PgorPGVudHJ5PkVDQyBieXRlIDU8L2VudHJ5PgorPGVudHJ5PkVycm9yIGNvcnJlY3Rpb24gY29kZSBieXRlIDIgb2YgdGhlIHVwcGVyIDI1NiBCeXRlcyBvZiBkYXRhCitpbiB0aGlzIHBhZ2U8L2VudHJ5PgorPC9yb3c+Cis8cm93PgorPGVudHJ5PjB4MDggLSAweDBGPC9lbnRyeT4KKzxlbnRyeT5BdXRvcGxhY2UgMCAtIDc8L2VudHJ5PgorPGVudHJ5PjwvZW50cnk+Cis8L3Jvdz4KKzwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorCQk8L3NlY3QyPgorCQk8c2VjdDIgaWQ9InBhZ2VzaXplXzIwNDgiPgorCQkJPHRpdGxlPjIwNDggYnl0ZSBwYWdlc2l6ZTwvdGl0bGU+Cis8aW5mb3JtYWx0YWJsZT48dGdyb3VwIGNvbHM9IjMiPjx0Ym9keT4KKzxyb3c+Cis8ZW50cnk+T2Zmc2V0PC9lbnRyeT4KKzxlbnRyeT5Db250ZW50PC9lbnRyeT4KKzxlbnRyeT5Db21tZW50PC9lbnRyeT4KKzwvcm93PgorPHJvdz4KKzxlbnRyeT4weDAwPC9lbnRyeT4KKzxlbnRyeT5CYWQgYmxvY2sgbWFya2VyPC9lbnRyeT4KKzxlbnRyeT5JZiBhbnkgYml0IGluIHRoaXMgYnl0ZSBpcyB6ZXJvLCB0aGVuIHRoaXMgYmxvY2sgaXMgYmFkLgorVGhpcyBhcHBsaWVzIG9ubHkgdG8gdGhlIGZpcnN0IHBhZ2UgaW4gYSBibG9jay4gSW4gdGhlIHJlbWFpbmluZworcGFnZXMgdGhpcyBieXRlIGlzIHJlc2VydmVkPC9lbnRyeT4KKzwvcm93PgorPHJvdz4KKzxlbnRyeT4weDAxPC9lbnRyeT4KKzxlbnRyeT5SZXNlcnZlZDwvZW50cnk+Cis8ZW50cnk+UmVzZXJ2ZWQ8L2VudHJ5PgorPC9yb3c+Cis8cm93PgorPGVudHJ5PjB4MDItMHgyNzwvZW50cnk+Cis8ZW50cnk+QXV0b3BsYWNlIDAgLSAzNzwvZW50cnk+Cis8ZW50cnk+PC9lbnRyeT4KKzwvcm93PgorPHJvdz4KKzxlbnRyeT4weDI4PC9lbnRyeT4KKzxlbnRyeT5FQ0MgYnl0ZSAwPC9lbnRyeT4KKzxlbnRyeT5FcnJvciBjb3JyZWN0aW9uIGNvZGUgYnl0ZSAwIG9mIHRoZSBmaXJzdCAyNTYgQnl0ZSBkYXRhIGluCit0aGlzIHBhZ2U8L2VudHJ5PgorPC9yb3c+Cis8cm93PgorPGVudHJ5PjB4Mjk8L2VudHJ5PgorPGVudHJ5PkVDQyBieXRlIDE8L2VudHJ5PgorPGVudHJ5PkVycm9yIGNvcnJlY3Rpb24gY29kZSBieXRlIDEgb2YgdGhlIGZpcnN0IDI1NiBCeXRlcyBvZiBkYXRhCitpbiB0aGlzIHBhZ2U8L2VudHJ5PgorPC9yb3c+Cis8cm93PgorPGVudHJ5PjB4MkE8L2VudHJ5PgorPGVudHJ5PkVDQyBieXRlIDI8L2VudHJ5PgorPGVudHJ5PkVycm9yIGNvcnJlY3Rpb24gY29kZSBieXRlIDIgb2YgdGhlIGZpcnN0IDI1NiBCeXRlcyBkYXRhIGluCit0aGlzIHBhZ2U8L2VudHJ5PgorPC9yb3c+Cis8cm93PgorPGVudHJ5PjB4MkI8L2VudHJ5PgorPGVudHJ5PkVDQyBieXRlIDM8L2VudHJ5PgorPGVudHJ5PkVycm9yIGNvcnJlY3Rpb24gY29kZSBieXRlIDAgb2YgdGhlIHNlY29uZCAyNTYgQnl0ZXMgb2YgZGF0YQoraW4gdGhpcyBwYWdlPC9lbnRyeT4KKzwvcm93PgorPHJvdz4KKzxlbnRyeT4weDJDPC9lbnRyeT4KKzxlbnRyeT5FQ0MgYnl0ZSA0PC9lbnRyeT4KKzxlbnRyeT5FcnJvciBjb3JyZWN0aW9uIGNvZGUgYnl0ZSAxIG9mIHRoZSBzZWNvbmQgMjU2IEJ5dGVzIG9mIGRhdGEKK2luIHRoaXMgcGFnZTwvZW50cnk+Cis8L3Jvdz4KKzxyb3c+Cis8ZW50cnk+MHgyRDwvZW50cnk+Cis8ZW50cnk+RUNDIGJ5dGUgNTwvZW50cnk+Cis8ZW50cnk+RXJyb3IgY29ycmVjdGlvbiBjb2RlIGJ5dGUgMiBvZiB0aGUgc2Vjb25kIDI1NiBCeXRlcyBvZiBkYXRhCitpbiB0aGlzIHBhZ2U8L2VudHJ5PgorPC9yb3c+Cis8cm93PgorPGVudHJ5PjB4MkU8L2VudHJ5PgorPGVudHJ5PkVDQyBieXRlIDY8L2VudHJ5PgorPGVudHJ5PkVycm9yIGNvcnJlY3Rpb24gY29kZSBieXRlIDAgb2YgdGhlIHRoaXJkIDI1NiBCeXRlcyBvZiBkYXRhCitpbiB0aGlzIHBhZ2U8L2VudHJ5PgorPC9yb3c+Cis8cm93PgorPGVudHJ5PjB4MkY8L2VudHJ5PgorPGVudHJ5PkVDQyBieXRlIDc8L2VudHJ5PgorPGVudHJ5PkVycm9yIGNvcnJlY3Rpb24gY29kZSBieXRlIDEgb2YgdGhlIHRoaXJkIDI1NiBCeXRlcyBvZiBkYXRhCitpbiB0aGlzIHBhZ2U8L2VudHJ5PgorPC9yb3c+Cis8cm93PgorPGVudHJ5PjB4MzA8L2VudHJ5PgorPGVudHJ5PkVDQyBieXRlIDg8L2VudHJ5PgorPGVudHJ5PkVycm9yIGNvcnJlY3Rpb24gY29kZSBieXRlIDIgb2YgdGhlIHRoaXJkIDI1NiBCeXRlcyBvZiBkYXRhCitpbiB0aGlzIHBhZ2U8L2VudHJ5PgorPC9yb3c+Cis8cm93PgorPGVudHJ5PjB4MzE8L2VudHJ5PgorPGVudHJ5PkVDQyBieXRlIDk8L2VudHJ5PgorPGVudHJ5PkVycm9yIGNvcnJlY3Rpb24gY29kZSBieXRlIDAgb2YgdGhlIGZvdXJ0aCAyNTYgQnl0ZXMgb2YgZGF0YQoraW4gdGhpcyBwYWdlPC9lbnRyeT4KKzwvcm93PgorPHJvdz4KKzxlbnRyeT4weDMyPC9lbnRyeT4KKzxlbnRyeT5FQ0MgYnl0ZSAxMDwvZW50cnk+Cis8ZW50cnk+RXJyb3IgY29ycmVjdGlvbiBjb2RlIGJ5dGUgMSBvZiB0aGUgZm91cnRoIDI1NiBCeXRlcyBvZiBkYXRhCitpbiB0aGlzIHBhZ2U8L2VudHJ5PgorPC9yb3c+Cis8cm93PgorPGVudHJ5PjB4MzM8L2VudHJ5PgorPGVudHJ5PkVDQyBieXRlIDExPC9lbnRyeT4KKzxlbnRyeT5FcnJvciBjb3JyZWN0aW9uIGNvZGUgYnl0ZSAyIG9mIHRoZSBmb3VydGggMjU2IEJ5dGVzIG9mIGRhdGEKK2luIHRoaXMgcGFnZTwvZW50cnk+Cis8L3Jvdz4KKzxyb3c+Cis8ZW50cnk+MHgzNDwvZW50cnk+Cis8ZW50cnk+RUNDIGJ5dGUgMTI8L2VudHJ5PgorPGVudHJ5PkVycm9yIGNvcnJlY3Rpb24gY29kZSBieXRlIDAgb2YgdGhlIGZpZnRoIDI1NiBCeXRlcyBvZiBkYXRhCitpbiB0aGlzIHBhZ2U8L2VudHJ5PgorPC9yb3c+Cis8cm93PgorPGVudHJ5PjB4MzU8L2VudHJ5PgorPGVudHJ5PkVDQyBieXRlIDEzPC9lbnRyeT4KKzxlbnRyeT5FcnJvciBjb3JyZWN0aW9uIGNvZGUgYnl0ZSAxIG9mIHRoZSBmaWZ0aCAyNTYgQnl0ZXMgb2YgZGF0YQoraW4gdGhpcyBwYWdlPC9lbnRyeT4KKzwvcm93PgorPHJvdz4KKzxlbnRyeT4weDM2PC9lbnRyeT4KKzxlbnRyeT5FQ0MgYnl0ZSAxNDwvZW50cnk+Cis8ZW50cnk+RXJyb3IgY29ycmVjdGlvbiBjb2RlIGJ5dGUgMiBvZiB0aGUgZmlmdGggMjU2IEJ5dGVzIG9mIGRhdGEKK2luIHRoaXMgcGFnZTwvZW50cnk+Cis8L3Jvdz4KKzxyb3c+Cis8ZW50cnk+MHgzNzwvZW50cnk+Cis8ZW50cnk+RUNDIGJ5dGUgMTU8L2VudHJ5PgorPGVudHJ5PkVycm9yIGNvcnJlY3Rpb24gY29kZSBieXRlIDAgb2YgdGhlIHNpeHQgMjU2IEJ5dGVzIG9mIGRhdGEKK2luIHRoaXMgcGFnZTwvZW50cnk+Cis8L3Jvdz4KKzxyb3c+Cis8ZW50cnk+MHgzODwvZW50cnk+Cis8ZW50cnk+RUNDIGJ5dGUgMTY8L2VudHJ5PgorPGVudHJ5PkVycm9yIGNvcnJlY3Rpb24gY29kZSBieXRlIDEgb2YgdGhlIHNpeHQgMjU2IEJ5dGVzIG9mIGRhdGEKK2luIHRoaXMgcGFnZTwvZW50cnk+Cis8L3Jvdz4KKzxyb3c+Cis8ZW50cnk+MHgzOTwvZW50cnk+Cis8ZW50cnk+RUNDIGJ5dGUgMTc8L2VudHJ5PgorPGVudHJ5PkVycm9yIGNvcnJlY3Rpb24gY29kZSBieXRlIDIgb2YgdGhlIHNpeHQgMjU2IEJ5dGVzIG9mIGRhdGEKK2luIHRoaXMgcGFnZTwvZW50cnk+Cis8L3Jvdz4KKzxyb3c+Cis8ZW50cnk+MHgzQTwvZW50cnk+Cis8ZW50cnk+RUNDIGJ5dGUgMTg8L2VudHJ5PgorPGVudHJ5PkVycm9yIGNvcnJlY3Rpb24gY29kZSBieXRlIDAgb2YgdGhlIHNldmVudGggMjU2IEJ5dGVzIG9mCitkYXRhIGluIHRoaXMgcGFnZTwvZW50cnk+Cis8L3Jvdz4KKzxyb3c+Cis8ZW50cnk+MHgzQjwvZW50cnk+Cis8ZW50cnk+RUNDIGJ5dGUgMTk8L2VudHJ5PgorPGVudHJ5PkVycm9yIGNvcnJlY3Rpb24gY29kZSBieXRlIDEgb2YgdGhlIHNldmVudGggMjU2IEJ5dGVzIG9mCitkYXRhIGluIHRoaXMgcGFnZTwvZW50cnk+Cis8L3Jvdz4KKzxyb3c+Cis8ZW50cnk+MHgzQzwvZW50cnk+Cis8ZW50cnk+RUNDIGJ5dGUgMjA8L2VudHJ5PgorPGVudHJ5PkVycm9yIGNvcnJlY3Rpb24gY29kZSBieXRlIDIgb2YgdGhlIHNldmVudGggMjU2IEJ5dGVzIG9mCitkYXRhIGluIHRoaXMgcGFnZTwvZW50cnk+Cis8L3Jvdz4KKzxyb3c+Cis8ZW50cnk+MHgzRDwvZW50cnk+Cis8ZW50cnk+RUNDIGJ5dGUgMjE8L2VudHJ5PgorPGVudHJ5PkVycm9yIGNvcnJlY3Rpb24gY29kZSBieXRlIDAgb2YgdGhlIGVpZ2h0aCAyNTYgQnl0ZXMgb2YgZGF0YQoraW4gdGhpcyBwYWdlPC9lbnRyeT4KKzwvcm93PgorPHJvdz4KKzxlbnRyeT4weDNFPC9lbnRyeT4KKzxlbnRyeT5FQ0MgYnl0ZSAyMjwvZW50cnk+Cis8ZW50cnk+RXJyb3IgY29ycmVjdGlvbiBjb2RlIGJ5dGUgMSBvZiB0aGUgZWlnaHRoIDI1NiBCeXRlcyBvZiBkYXRhCitpbiB0aGlzIHBhZ2U8L2VudHJ5PgorPC9yb3c+Cis8cm93PgorPGVudHJ5PjB4M0Y8L2VudHJ5PgorPGVudHJ5PkVDQyBieXRlIDIzPC9lbnRyeT4KKzxlbnRyeT5FcnJvciBjb3JyZWN0aW9uIGNvZGUgYnl0ZSAyIG9mIHRoZSBlaWdodGggMjU2IEJ5dGVzIG9mIGRhdGEKK2luIHRoaXMgcGFnZTwvZW50cnk+Cis8L3Jvdz4KKzwvdGJvZHk+PC90Z3JvdXA+PC9pbmZvcm1hbHRhYmxlPgorCQk8L3NlY3QyPgorICAgICAJPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJmaWxlc3lzdGVtcyI+CisgICAgIAk8dGl0bGU+RmlsZXN5c3RlbSBzdXBwb3J0PC90aXRsZT4KKwk8cGFyYT4KKwkJVGhlIE5BTkQgZHJpdmVyIHByb3ZpZGVzIGFsbCBuZWNlc3NhcnkgZnVuY3Rpb25zIGZvciBhCisJCWZpbGVzeXN0ZW0gdmlhIHRoZSBNVEQgaW50ZXJmYWNlLgorCTwvcGFyYT4KKwk8cGFyYT4KKwkJRmlsZXN5c3RlbXMgbXVzdCBiZSBhd2FyZSBvZiB0aGUgTkFORCBwZWN1bGlhcml0aWVzIGFuZAorCQlyZXN0cmljdGlvbnMuIE9uZSBtYWpvciByZXN0cmljdGlvbnMgb2YgTkFORCBGbGFzaCBpcywgdGhhdCB5b3UgY2Fubm90IAorCQl3cml0ZSBhcyBvZnRlbiBhcyB5b3Ugd2FudCB0byBhIHBhZ2UuIFRoZSBjb25zZWN1dGl2ZSB3cml0ZXMgdG8gYSBwYWdlLCAKKwkJYmVmb3JlIGVyYXNpbmcgaXQgYWdhaW4sIGFyZSByZXN0cmljdGVkIHRvIDEtMyB3cml0ZXMsIGRlcGVuZGluZyBvbiB0aGUgCisJCW1hbnVmYWN0dXJlcnMgc3BlY2lmaWNhdGlvbnMuIFRoaXMgYXBwbGllcyBzaW1pbGFyIHRvIHRoZSBzcGFyZSBhcmVhLiAKKwk8L3BhcmE+CisJPHBhcmE+CisJCVRoZXJlZm9yZSBOQU5EIGF3YXJlIGZpbGVzeXN0ZW1zIG11c3QgZWl0aGVyIHdyaXRlIGluIHBhZ2Ugc2l6ZSBjaHVua3MKKwkJb3IgaG9sZCBhIHdyaXRlYnVmZmVyIHRvIGNvbGxlY3Qgc21hbGxlciB3cml0ZXMgdW50aWwgdGhleSBzdW0gdXAgdG8gCisJCXBhZ2VzaXplLiBBdmFpbGFibGUgTkFORCBhd2FyZSBmaWxlc3lzdGVtczogSkZGUzIsIFlBRkZTLiAJCQorCTwvcGFyYT4KKwk8cGFyYT4KKwkJVGhlIHNwYXJlIGFyZWEgdXNhZ2UgdG8gc3RvcmUgZmlsZXN5c3RlbSBkYXRhIGlzIGNvbnRyb2xsZWQgYnkKKwkJdGhlIHNwYXJlIGFyZWEgcGxhY2VtZW50IGZ1bmN0aW9uYWxpdHkgd2hpY2ggaXMgZGVzY3JpYmVkIGluIG9uZQorCQlvZiB0aGUgZWFybGllciBjaGFwdGVycy4KKwk8L3BhcmE+CisgIDwvY2hhcHRlcj4JCisgIDxjaGFwdGVyIGlkPSJ0b29scyI+CisgICAgIAk8dGl0bGU+VG9vbHM8L3RpdGxlPgorCTxwYXJhPgorCQlUaGUgTVREIHByb2plY3QgcHJvdmlkZXMgYSBjb3VwbGUgb2YgaGVscGZ1bCB0b29scyB0byBoYW5kbGUgTkFORCBGbGFzaC4KKwkJPGl0ZW1pemVkbGlzdD4KKwkJPGxpc3RpdGVtPjxwYXJhPmZsYXNoZXJhc2UsIGZsYXNoZXJhc2VhbGw6IEVyYXNlIGFuZCBmb3JtYXQgRkxBU0ggcGFydGl0aW9uczwvcGFyYT48L2xpc3RpdGVtPgorCQk8bGlzdGl0ZW0+PHBhcmE+bmFuZHdyaXRlOiB3cml0ZSBmaWxlc3lzdGVtIGltYWdlcyB0byBOQU5EIEZMQVNIPC9wYXJhPjwvbGlzdGl0ZW0+CisJCTxsaXN0aXRlbT48cGFyYT5uYW5kZHVtcDogZHVtcCB0aGUgY29udGVudHMgb2YgYSBOQU5EIEZMQVNIIHBhcnRpdGlvbnM8L3BhcmE+PC9saXN0aXRlbT4KKwkJPC9pdGVtaXplZGxpc3Q+CisJPC9wYXJhPgorCTxwYXJhPgorCQlUaGVzZSB0b29scyBhcmUgYXdhcmUgb2YgdGhlIE5BTkQgcmVzdHJpY3Rpb25zLiBQbGVhc2UgdXNlIHRob3NlIHRvb2xzCisJCWluc3RlYWQgb2YgY29tcGxhaW5pbmcgYWJvdXQgZXJyb3JzIHdoaWNoIGFyZSBjYXVzZWQgYnkgbm9uIE5BTkQgYXdhcmUKKwkJYWNjZXNzIG1ldGhvZHMuCisJPC9wYXJhPgorICA8L2NoYXB0ZXI+CQorCisgIDxjaGFwdGVyIGlkPSJkZWZpbmVzIj4KKyAgICAgPHRpdGxlPkNvbnN0YW50czwvdGl0bGU+CisgICAgIDxwYXJhPgorICAgICBUaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIHRoZSBjb25zdGFudHMgd2hpY2ggbWlnaHQgYmUgcmVsZXZhbnQgZm9yIGEgZHJpdmVyIGRldmVsb3Blci4KKyAgICAgPC9wYXJhPgorICAgICA8c2VjdDEgaWQ9IkNoaXBfb3B0aW9uX2NvbnN0YW50cyI+CisJPHRpdGxlPkNoaXAgb3B0aW9uIGNvbnN0YW50czwvdGl0bGU+CisgICAgIAk8c2VjdDIgaWQ9IkNvbnN0YW50c19mb3JfY2hpcF9pZF90YWJsZSI+CisJCTx0aXRsZT5Db25zdGFudHMgZm9yIGNoaXAgaWQgdGFibGU8L3RpdGxlPgorICAgICAJCTxwYXJhPgorCQlUaGVzZSBjb25zdGFudHMgYXJlIGRlZmluZWQgaW4gbmFuZC5oLiBUaGV5IGFyZSBvcmVkIHRvZ2V0aGVyIHRvIGRlc2NyaWJlCisJCXRoZSBjaGlwIGZ1bmN0aW9uYWxpdHkuCisgICAgIAkJPHByb2dyYW1saXN0aW5nPgorLyogQnVzd2l0ZGggaXMgMTYgYml0ICovCisjZGVmaW5lIE5BTkRfQlVTV0lEVEhfMTYJMHgwMDAwMDAwMgorLyogRGV2aWNlIHN1cHBvcnRzIHBhcnRpYWwgcHJvZ3JhbW1pbmcgd2l0aG91dCBwYWRkaW5nICovCisjZGVmaW5lIE5BTkRfTk9fUEFERElORwkJMHgwMDAwMDAwNAorLyogQ2hpcCBoYXMgY2FjaGUgcHJvZ3JhbSBmdW5jdGlvbiAqLworI2RlZmluZSBOQU5EX0NBQ0hFUFJHCQkweDAwMDAwMDA4CisvKiBDaGlwIGhhcyBjb3B5IGJhY2sgZnVuY3Rpb24gKi8KKyNkZWZpbmUgTkFORF9DT1BZQkFDSwkJMHgwMDAwMDAxMAorLyogQU5EIENoaXAgd2hpY2ggaGFzIDQgYmFua3MgYW5kIGEgY29uZnVzaW5nIHBhZ2UgLyBibG9jayAKKyAqIGFzc2lnbm1lbnQuIFNlZSBSZW5lc2FzIGRhdGFzaGVldCBmb3IgZnVydGhlciBpbmZvcm1hdGlvbiAqLworI2RlZmluZSBOQU5EX0lTX0FORAkJMHgwMDAwMDAyMAorLyogQ2hpcCBoYXMgYSBhcnJheSBvZiA0IHBhZ2VzIHdoaWNoIGNhbiBiZSByZWFkIHdpdGhvdXQKKyAqIGFkZGl0aW9uYWwgcmVhZHkgL2J1c3kgd2FpdHMgKi8KKyNkZWZpbmUgTkFORF80UEFHRV9BUlJBWQkweDAwMDAwMDQwIAorCQk8L3Byb2dyYW1saXN0aW5nPgorICAgICAJCTwvcGFyYT4KKyAgICAgCTwvc2VjdDI+CisgICAgIAk8c2VjdDIgaWQ9IkNvbnN0YW50c19mb3JfcnVudGltZV9vcHRpb25zIj4KKwkJPHRpdGxlPkNvbnN0YW50cyBmb3IgcnVudGltZSBvcHRpb25zPC90aXRsZT4KKyAgICAgCQk8cGFyYT4KKwkJVGhlc2UgY29uc3RhbnRzIGFyZSBkZWZpbmVkIGluIG5hbmQuaC4gVGhleSBhcmUgb3JlZCB0b2dldGhlciB0byBkZXNjcmliZQorCQl0aGUgZnVuY3Rpb25hbGl0eS4KKyAgICAgCQk8cHJvZ3JhbWxpc3Rpbmc+CisvKiBUaGUgaHcgZWNjIGdlbmVyYXRvciBwcm92aWRlcyBhIHN5bmRyb21lIGluc3RlYWQgYSBlY2MgdmFsdWUgb24gcmVhZCAKKyAqIFRoaXMgY2FuIG9ubHkgd29yayBpZiB3ZSBoYXZlIHRoZSBlY2MgYnl0ZXMgZGlyZWN0bHkgYmVoaW5kIHRoZSAKKyAqIGRhdGEgYnl0ZXMuIEFwcGxpZXMgZm9yIERPQyBhbmQgQUctQU5EIFJlbmVzYXMgSFcgUmVlZCBTb2xvbW9uIGdlbmVyYXRvcnMgKi8KKyNkZWZpbmUgTkFORF9IV0VDQ19TWU5EUk9NRQkweDAwMDIwMDAwCisJCTwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgIAkJPC9wYXJhPgorICAgICAJPC9zZWN0Mj4KKyAgICAgPC9zZWN0MT4JCisKKyAgICAgPHNlY3QxIGlkPSJFRUNfc2VsZWN0aW9uX2NvbnN0YW50cyI+CisJPHRpdGxlPkVDQyBzZWxlY3Rpb24gY29uc3RhbnRzPC90aXRsZT4KKwk8cGFyYT4KKwlVc2UgdGhlc2UgY29uc3RhbnRzIHRvIHNlbGVjdCB0aGUgRUNDIGFsZ29yaXRobS4KKyAgCTxwcm9ncmFtbGlzdGluZz4KKy8qIE5vIEVDQy4gVXNhZ2UgaXMgbm90IHJlY29tbWVuZGVkICEgKi8KKyNkZWZpbmUgTkFORF9FQ0NfTk9ORQkJMAorLyogU29mdHdhcmUgRUNDIDMgYnl0ZSBFQ0MgcGVyIDI1NiBCeXRlIGRhdGEgKi8KKyNkZWZpbmUgTkFORF9FQ0NfU09GVAkJMQorLyogSGFyZHdhcmUgRUNDIDMgYnl0ZSBFQ0MgcGVyIDI1NiBCeXRlIGRhdGEgKi8KKyNkZWZpbmUgTkFORF9FQ0NfSFczXzI1NgkyCisvKiBIYXJkd2FyZSBFQ0MgMyBieXRlIEVDQyBwZXIgNTEyIEJ5dGUgZGF0YSAqLworI2RlZmluZSBOQU5EX0VDQ19IVzNfNTEyCTMKKy8qIEhhcmR3YXJlIEVDQyA2IGJ5dGUgRUNDIHBlciA1MTIgQnl0ZSBkYXRhICovCisjZGVmaW5lIE5BTkRfRUNDX0hXNl81MTIJNAorLyogSGFyZHdhcmUgRUNDIDYgYnl0ZSBFQ0MgcGVyIDUxMiBCeXRlIGRhdGEgKi8KKyNkZWZpbmUgTkFORF9FQ0NfSFc4XzUxMgk2CisJPC9wcm9ncmFtbGlzdGluZz4KKwk8L3BhcmE+CisgICAgIDwvc2VjdDE+CQorCisgICAgIDxzZWN0MSBpZD0iSGFyZHdhcmVfY29udHJvbF9yZWxhdGVkX2NvbnN0YW50cyI+CisJPHRpdGxlPkhhcmR3YXJlIGNvbnRyb2wgcmVsYXRlZCBjb25zdGFudHM8L3RpdGxlPgorCTxwYXJhPgorCVRoZXNlIGNvbnN0YW50cyBkZXNjcmliZSB0aGUgcmVxdWVzdGVkIGhhcmR3YXJlIGFjY2VzcyBmdW5jdGlvbiB3aGVuCisJdGhlIGJvYXJkc3BlY2lmaWMgaGFyZHdhcmUgY29udHJvbCBmdW5jdGlvbiBpcyBjYWxsZWQKKyAgCTxwcm9ncmFtbGlzdGluZz4KKy8qIFNlbGVjdCB0aGUgY2hpcCBieSBzZXR0aW5nIG5DRSB0byBsb3cgKi8KKyNkZWZpbmUgTkFORF9DVExfU0VUTkNFIAkxCisvKiBEZXNlbGVjdCB0aGUgY2hpcCBieSBzZXR0aW5nIG5DRSB0byBoaWdoICovCisjZGVmaW5lIE5BTkRfQ1RMX0NMUk5DRQkJMgorLyogU2VsZWN0IHRoZSBjb21tYW5kIGxhdGNoIGJ5IHNldHRpbmcgQ0xFIHRvIGhpZ2ggKi8KKyNkZWZpbmUgTkFORF9DVExfU0VUQ0xFCQkzCisvKiBEZXNlbGVjdCB0aGUgY29tbWFuZCBsYXRjaCBieSBzZXR0aW5nIENMRSB0byBsb3cgKi8KKyNkZWZpbmUgTkFORF9DVExfQ0xSQ0xFCQk0CisvKiBTZWxlY3QgdGhlIGFkZHJlc3MgbGF0Y2ggYnkgc2V0dGluZyBBTEUgdG8gaGlnaCAqLworI2RlZmluZSBOQU5EX0NUTF9TRVRBTEUJCTUKKy8qIERlc2VsZWN0IHRoZSBhZGRyZXNzIGxhdGNoIGJ5IHNldHRpbmcgQUxFIHRvIGxvdyAqLworI2RlZmluZSBOQU5EX0NUTF9DTFJBTEUJCTYKKy8qIFNldCB3cml0ZSBwcm90ZWN0aW9uIGJ5IHNldHRpbmcgV1AgdG8gaGlnaC4gTm90IHVzZWQhICovCisjZGVmaW5lIE5BTkRfQ1RMX1NFVFdQCQk3CisvKiBDbGVhciB3cml0ZSBwcm90ZWN0aW9uIGJ5IHNldHRpbmcgV1AgdG8gbG93LiBOb3QgdXNlZCEgKi8KKyNkZWZpbmUgTkFORF9DVExfQ0xSV1AJCTgKKwk8L3Byb2dyYW1saXN0aW5nPgorCTwvcGFyYT4KKyAgICAgPC9zZWN0MT4JCisKKyAgICAgPHNlY3QxIGlkPSJCYWRfYmxvY2tfdGFibGVfY29uc3RhbnRzIj4KKwk8dGl0bGU+QmFkIGJsb2NrIHRhYmxlIHJlbGF0ZWQgY29uc3RhbnRzPC90aXRsZT4KKwk8cGFyYT4KKwlUaGVzZSBjb25zdGFudHMgZGVzY3JpYmUgdGhlIG9wdGlvbnMgdXNlZCBmb3IgYmFkIGJsb2NrCisJdGFibGUgZGVzY3JpcHRvcnMuCisgIAk8cHJvZ3JhbWxpc3Rpbmc+CisvKiBPcHRpb25zIGZvciB0aGUgYmFkIGJsb2NrIHRhYmxlIGRlc2NyaXB0b3JzICovCisKKy8qIFRoZSBudW1iZXIgb2YgYml0cyB1c2VkIHBlciBibG9jayBpbiB0aGUgYmJ0IG9uIHRoZSBkZXZpY2UgKi8KKyNkZWZpbmUgTkFORF9CQlRfTlJCSVRTX01TSwkweDAwMDAwMDBGCisjZGVmaW5lIE5BTkRfQkJUXzFCSVQJCTB4MDAwMDAwMDEKKyNkZWZpbmUgTkFORF9CQlRfMkJJVAkJMHgwMDAwMDAwMgorI2RlZmluZSBOQU5EX0JCVF80QklUCQkweDAwMDAwMDA0CisjZGVmaW5lIE5BTkRfQkJUXzhCSVQJCTB4MDAwMDAwMDgKKy8qIFRoZSBiYWQgYmxvY2sgdGFibGUgaXMgaW4gdGhlIGxhc3QgZ29vZCBibG9jayBvZiB0aGUgZGV2aWNlICovCisjZGVmaW5lCU5BTkRfQkJUX0xBU1RCTE9DSwkweDAwMDAwMDEwCisvKiBUaGUgYmJ0IGlzIGF0IHRoZSBnaXZlbiBwYWdlLCBlbHNlIHdlIG11c3Qgc2NhbiBmb3IgdGhlIGJidCAqLworI2RlZmluZSBOQU5EX0JCVF9BQlNQQUdFCTB4MDAwMDAwMjAKKy8qIGJidCBpcyBzdG9yZWQgcGVyIGNoaXAgb24gbXVsdGljaGlwIGRldmljZXMgKi8KKyNkZWZpbmUgTkFORF9CQlRfUEVSQ0hJUAkweDAwMDAwMDgwCisvKiBiYnQgaGFzIGEgdmVyc2lvbiBjb3VudGVyIGF0IG9mZnNldCB2ZXJvZmZzICovCisjZGVmaW5lIE5BTkRfQkJUX1ZFUlNJT04JMHgwMDAwMDEwMAorLyogQ3JlYXRlIGEgYmJ0IGlmIG5vbmUgYXhpc3RzICovCisjZGVmaW5lIE5BTkRfQkJUX0NSRUFURQkJMHgwMDAwMDIwMAorLyogV3JpdGUgYmJ0IGlmIG5lY2Vzc2FyeSAqLworI2RlZmluZSBOQU5EX0JCVF9XUklURQkJMHgwMDAwMTAwMAorLyogUmVhZCBhbmQgd3JpdGUgYmFjayBibG9jayBjb250ZW50cyB3aGVuIHdyaXRpbmcgYmJ0ICovCisjZGVmaW5lIE5BTkRfQkJUX1NBVkVDT05URU5UCTB4MDAwMDIwMDAKKwk8L3Byb2dyYW1saXN0aW5nPgorCTwvcGFyYT4KKyAgICAgPC9zZWN0MT4JCisKKyAgPC9jaGFwdGVyPgorICAJCisgIDxjaGFwdGVyIGlkPSJzdHJ1Y3RzIj4KKyAgICAgPHRpdGxlPlN0cnVjdHVyZXM8L3RpdGxlPgorICAgICA8cGFyYT4KKyAgICAgVGhpcyBjaGFwdGVyIGNvbnRhaW5zIHRoZSBhdXRvZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24gb2YgdGhlIHN0cnVjdHVyZXMgd2hpY2ggYXJlCisgICAgIHVzZWQgaW4gdGhlIE5BTkQgZHJpdmVyIGFuZCBtaWdodCBiZSByZWxldmFudCBmb3IgYSBkcml2ZXIgZGV2ZWxvcGVyLiBFYWNoICAKKyAgICAgc3RydWN0IG1lbWJlciBoYXMgYSBzaG9ydCBkZXNjcmlwdGlvbiB3aGljaCBpcyBtYXJrZWQgd2l0aCBhbiBbWFhYXSBpZGVudGlmaWVyLgorICAgICBTZWUgdGhlIGNoYXB0ZXIgIkRvY3VtZW50YXRpb24gaGludHMiIGZvciBhbiBleHBsYW5hdGlvbi4KKyAgICAgPC9wYXJhPgorIUlpbmNsdWRlL2xpbnV4L210ZC9uYW5kLmgKKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJwdWJmdW5jdGlvbnMiPgorICAgICA8dGl0bGU+UHVibGljIEZ1bmN0aW9ucyBQcm92aWRlZDwvdGl0bGU+CisgICAgIDxwYXJhPgorICAgICBUaGlzIGNoYXB0ZXIgY29udGFpbnMgdGhlIGF1dG9nZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiBvZiB0aGUgTkFORCBrZXJuZWwgQVBJIGZ1bmN0aW9ucworICAgICAgd2hpY2ggYXJlIGV4cG9ydGVkLiBFYWNoIGZ1bmN0aW9uIGhhcyBhIHNob3J0IGRlc2NyaXB0aW9uIHdoaWNoIGlzIG1hcmtlZCB3aXRoIGFuIFtYWFhdIGlkZW50aWZpZXIuCisgICAgIFNlZSB0aGUgY2hhcHRlciAiRG9jdW1lbnRhdGlvbiBoaW50cyIgZm9yIGFuIGV4cGxhbmF0aW9uLgorICAgICA8L3BhcmE+CishRWRyaXZlcnMvbXRkL25hbmQvbmFuZF9iYXNlLmMKKyFFZHJpdmVycy9tdGQvbmFuZC9uYW5kX2JidC5jCishRWRyaXZlcnMvbXRkL25hbmQvbmFuZF9lY2MuYworICA8L2NoYXB0ZXI+CisgIAorICA8Y2hhcHRlciBpZD0iaW50ZnVuY3Rpb25zIj4KKyAgICAgPHRpdGxlPkludGVybmFsIEZ1bmN0aW9ucyBQcm92aWRlZDwvdGl0bGU+CisgICAgIDxwYXJhPgorICAgICBUaGlzIGNoYXB0ZXIgY29udGFpbnMgdGhlIGF1dG9nZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiBvZiB0aGUgTkFORCBkcml2ZXIgaW50ZXJuYWwgZnVuY3Rpb25zLgorICAgICBFYWNoIGZ1bmN0aW9uIGhhcyBhIHNob3J0IGRlc2NyaXB0aW9uIHdoaWNoIGlzIG1hcmtlZCB3aXRoIGFuIFtYWFhdIGlkZW50aWZpZXIuCisgICAgIFNlZSB0aGUgY2hhcHRlciAiRG9jdW1lbnRhdGlvbiBoaW50cyIgZm9yIGFuIGV4cGxhbmF0aW9uLgorICAgICBUaGUgZnVuY3Rpb25zIG1hcmtlZCB3aXRoIFtERUZBVUxUXSBtaWdodCBiZSByZWxldmFudCBmb3IgYSBib2FyZCBkcml2ZXIgZGV2ZWxvcGVyLgorICAgICA8L3BhcmE+CishSWRyaXZlcnMvbXRkL25hbmQvbmFuZF9iYXNlLmMKKyFJZHJpdmVycy9tdGQvbmFuZC9uYW5kX2JidC5jCis8IS0tIE5vIGludGVybmFsIGZ1bmN0aW9ucyBmb3Iga2VybmVsLWRvYzoKK1ghSWRyaXZlcnMvbXRkL25hbmQvbmFuZF9lY2MuYworLS0+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iY3JlZGl0cyI+CisgICAgIDx0aXRsZT5DcmVkaXRzPC90aXRsZT4KKwk8cGFyYT4KKwkJVGhlIGZvbGxvd2luZyBwZW9wbGUgaGF2ZSBjb250cmlidXRlZCB0byB0aGUgTkFORCBkcml2ZXI6CisJCTxvcmRlcmVkbGlzdD4KKwkJCTxsaXN0aXRlbT48cGFyYT5TdGV2ZW4gSi4gSGlsbDxlbWFpbD5zamhpbGxAcmVhbGl0eWRpbHV0ZWQuY29tPC9lbWFpbD48L3BhcmE+PC9saXN0aXRlbT4KKwkJCTxsaXN0aXRlbT48cGFyYT5EYXZpZCBXb29kaG91c2U8ZW1haWw+ZHdtdzJAaW5mcmFkZWFkLm9yZzwvZW1haWw+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+VGhvbWFzIEdsZWl4bmVyPGVtYWlsPnRnbHhAbGludXRyb25peC5kZTwvZW1haWw+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCTwvb3JkZXJlZGxpc3Q+CisJCUEgbG90IG9mIHVzZXJzIGhhdmUgcHJvdmlkZWQgYnVnZml4ZXMsIGltcHJvdmVtZW50cyBhbmQgaGVscGluZyBoYW5kcyBmb3IgdGVzdGluZy4KKwkJVGhhbmtzIGEgbG90LgorCTwvcGFyYT4KKwk8cGFyYT4KKwkJVGhlIGZvbGxvd2luZyBwZW9wbGUgaGF2ZSBjb250cmlidXRlZCB0byB0aGlzIGRvY3VtZW50OgorCQk8b3JkZXJlZGxpc3Q+CisJCQk8bGlzdGl0ZW0+PHBhcmE+VGhvbWFzIEdsZWl4bmVyPGVtYWlsPnRnbHhAbGludXRyb25peC5kZTwvZW1haWw+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCTwvb3JkZXJlZGxpc3Q+CisJPC9wYXJhPgorICA8L2NoYXB0ZXI+Cis8L2Jvb2s+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svbmV0d29ya2luZy50bXBsIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL25ldHdvcmtpbmcudG1wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWRmMjUwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL25ldHdvcmtpbmcudG1wbApAQCAtMCwwICsxLDExMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4xLjIvL0VOIgorCSJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMS4yL2RvY2Jvb2t4LmR0ZCIgW10+CisKKzxib29rIGlkPSJMaW51eE5ldHdvcmtpbmciPgorIDxib29raW5mbz4KKyAgPHRpdGxlPkxpbnV4IE5ldHdvcmtpbmcgYW5kIE5ldHdvcmsgRGV2aWNlcyBBUElzPC90aXRsZT4KKworICA8bGVnYWxub3RpY2U+CisgICA8cGFyYT4KKyAgICAgVGhpcyBkb2N1bWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlCisgICAgIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIKKyAgICAgdmVyc2lvbi4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKyAgICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAorICAgICB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisgICAgIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICAgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgICAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgICAgIE1BIDAyMTExLTEzMDcgVVNBCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgICBGb3IgbW9yZSBkZXRhaWxzIHNlZSB0aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBzb3VyY2UKKyAgICAgZGlzdHJpYnV0aW9uIG9mIExpbnV4LgorICAgPC9wYXJhPgorICA8L2xlZ2Fsbm90aWNlPgorIDwvYm9va2luZm8+CisKKzx0b2M+PC90b2M+CisKKyAgPGNoYXB0ZXIgaWQ9Im5ldGNvcmUiPgorICAgICA8dGl0bGU+TGludXggTmV0d29ya2luZzwvdGl0bGU+CisgICAgIDxzZWN0MT48dGl0bGU+TmV0d29ya2luZyBCYXNlIFR5cGVzPC90aXRsZT4KKyFJaW5jbHVkZS9saW51eC9uZXQuaAorICAgICA8L3NlY3QxPgorICAgICA8c2VjdDE+PHRpdGxlPlNvY2tldCBCdWZmZXIgRnVuY3Rpb25zPC90aXRsZT4KKyFJaW5jbHVkZS9saW51eC9za2J1ZmYuaAorIUlpbmNsdWRlL25ldC9zb2NrLmgKKyFFbmV0L3NvY2tldC5jCishRW5ldC9jb3JlL3NrYnVmZi5jCishRW5ldC9jb3JlL3NvY2suYworIUVuZXQvY29yZS9kYXRhZ3JhbS5jCishRW5ldC9jb3JlL3N0cmVhbS5jCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MT48dGl0bGU+U29ja2V0IEZpbHRlcjwvdGl0bGU+CishRW5ldC9jb3JlL2ZpbHRlci5jCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MT48dGl0bGU+R2VuZXJpYyBOZXR3b3JrIFN0YXRpc3RpY3M8L3RpdGxlPgorIUlpbmNsdWRlL3VhcGkvbGludXgvZ2VuX3N0YXRzLmgKKyFFbmV0L2NvcmUvZ2VuX3N0YXRzLmMKKyFFbmV0L2NvcmUvZ2VuX2VzdGltYXRvci5jCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MT48dGl0bGU+U1VOIFJQQyBzdWJzeXN0ZW08L3RpdGxlPgorPCEtLSBUaGUgIUQgZnVuY3Rpb25hbGl0eSBpcyBub3QgcGVyZmVjdCwgZ2FyYmFnZSBoYXMgdG8gYmUgcHJvdGVjdGVkIGJ5IGNvbW1lbnRzCishRG5ldC9zdW5ycGMvc3VucnBjX3N5bXMuYworLS0+CishRW5ldC9zdW5ycGMveGRyLmMKKyFFbmV0L3N1bnJwYy9zdmNfeHBydC5jCishRW5ldC9zdW5ycGMveHBydC5jCishRW5ldC9zdW5ycGMvc2NoZWQuYworIUVuZXQvc3VucnBjL3NvY2tsaWIuYworIUVuZXQvc3VucnBjL3N0YXRzLmMKKyFFbmV0L3N1bnJwYy9ycGNfcGlwZS5jCishRW5ldC9zdW5ycGMvcnBjYl9jbG50LmMKKyFFbmV0L3N1bnJwYy9jbG50LmMKKyAgICAgPC9zZWN0MT4KKyAgICAgPHNlY3QxPjx0aXRsZT5XaU1BWDwvdGl0bGU+CishRW5ldC93aW1heC9vcC1tc2cuYworIUVuZXQvd2ltYXgvb3AtcmVzZXQuYworIUVuZXQvd2ltYXgvb3AtcmZraWxsLmMKKyFFbmV0L3dpbWF4L3N0YWNrLmMKKyFJaW5jbHVkZS9uZXQvd2ltYXguaAorIUlpbmNsdWRlL3VhcGkvbGludXgvd2ltYXguaAorICAgICA8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9Im5ldGRldiI+CisgICAgIDx0aXRsZT5OZXR3b3JrIGRldmljZSBzdXBwb3J0PC90aXRsZT4KKyAgICAgPHNlY3QxPjx0aXRsZT5Ecml2ZXIgU3VwcG9ydDwvdGl0bGU+CishRW5ldC9jb3JlL2Rldi5jCishRW5ldC9ldGhlcm5ldC9ldGguYworIUVuZXQvc2NoZWQvc2NoX2dlbmVyaWMuYworIUlpbmNsdWRlL2xpbnV4L2V0aGVyZGV2aWNlLmgKKyFJaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaAorICAgICA8L3NlY3QxPgorICAgICA8c2VjdDE+PHRpdGxlPlBIWSBTdXBwb3J0PC90aXRsZT4KKyFFZHJpdmVycy9uZXQvcGh5L3BoeS5jCishSWRyaXZlcnMvbmV0L3BoeS9waHkuYworIUVkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCishSWRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKKyFFZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmMKKyFJZHJpdmVycy9uZXQvcGh5L21kaW9fYnVzLmMKKyAgICAgPC9zZWN0MT4KKzwhLS0gRklYTUU6IFJlbW92ZWQgZm9yIG5vdyBzaW5jZSBubyBzdHJ1Y3R1cmVkIGNvbW1lbnRzIGluIHNvdXJjZQorICAgICA8c2VjdDE+PHRpdGxlPldpcmVsZXNzPC90aXRsZT4KK1ghRW5ldC9jb3JlL3dpcmVsZXNzLmMKKyAgICAgPC9zZWN0MT4KKy0tPgorICA8L2NoYXB0ZXI+CisKKzwvYm9vaz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9yYXBpZGlvLnRtcGwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svcmFwaWRpby50bXBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwNDc5MzYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svcmFwaWRpby50bXBsCkBAIC0wLDAgKzEsMTU4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIGJvb2sgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjEuMi8vRU4iCisgICAgICAgICJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMS4yL2RvY2Jvb2t4LmR0ZCIgWworCTwhRU5USVRZIHJhcGlkaW8gU1lTVEVNICJyYXBpZGlvLnhtbCI+CisJXT4KKworPGJvb2sgaWQ9IlJhcGlkSU8tR3VpZGUiPgorIDxib29raW5mbz4KKyAgPHRpdGxlPlJhcGlkSU8gU3Vic3lzdGVtIEd1aWRlPC90aXRsZT4KKworICA8YXV0aG9yZ3JvdXA+CisgICA8YXV0aG9yPgorICAgIDxmaXJzdG5hbWU+TWF0dDwvZmlyc3RuYW1lPgorICAgIDxzdXJuYW1lPlBvcnRlcjwvc3VybmFtZT4KKyAgICA8YWZmaWxpYXRpb24+CisgICAgIDxhZGRyZXNzPgorICAgICAgPGVtYWlsPm1wb3J0ZXJAa2VybmVsLmNyYXNoaW5nLm9yZzwvZW1haWw+CisgICAgICA8ZW1haWw+bXBvcnRlckBtdmlzdGEuY29tPC9lbWFpbD4KKyAgICAgPC9hZGRyZXNzPgorICAgIDwvYWZmaWxpYXRpb24+CisgICA8L2F1dGhvcj4KKyAgPC9hdXRob3Jncm91cD4KKworICA8Y29weXJpZ2h0PgorICAgPHllYXI+MjAwNTwveWVhcj4KKyAgIDxob2xkZXI+TW9udGFWaXN0YSBTb2Z0d2FyZSwgSW5jLjwvaG9sZGVyPgorICA8L2NvcHlyaWdodD4KKworICA8bGVnYWxub3RpY2U+CisgICA8cGFyYT4KKyAgICAgVGhpcyBkb2N1bWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlCisgICAgIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgTGljZW5zZSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCisgICAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQKKyAgICAgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorICAgICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorICAgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICAgICBNQSAwMjExMS0xMzA3IFVTQQorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICAgRm9yIG1vcmUgZGV0YWlscyBzZWUgdGhlIGZpbGUgQ09QWUlORyBpbiB0aGUgc291cmNlCisgICAgIGRpc3RyaWJ1dGlvbiBvZiBMaW51eC4KKyAgIDwvcGFyYT4KKyAgPC9sZWdhbG5vdGljZT4KKyA8L2Jvb2tpbmZvPgorCis8dG9jPjwvdG9jPgorCisgIDxjaGFwdGVyIGlkPSJpbnRybyI+CisgICAgICA8dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KKyAgPHBhcmE+CisJUmFwaWRJTyBpcyBhIGhpZ2ggc3BlZWQgc3dpdGNoZWQgZmFicmljIGludGVyY29ubmVjdCB3aXRoCisJZmVhdHVyZXMgYWltZWQgYXQgdGhlIGVtYmVkZGVkIG1hcmtldC4gIFJhcGlkSU8gcHJvdmlkZXMKKwlzdXBwb3J0IGZvciBtZW1vcnktbWFwcGVkIEkvTyBhcyB3ZWxsIGFzIG1lc3NhZ2UtYmFzZWQKKwl0cmFuc2FjdGlvbnMgb3ZlciB0aGUgc3dpdGNoZWQgZmFicmljIG5ldHdvcmsuIFJhcGlkSU8gaGFzCisJYSBzdGFuZGFyZGl6ZWQgZGlzY292ZXJ5IG1lY2hhbmlzbSBub3QgdW5saWtlIHRoZSBQQ0kgYnVzCisJc3RhbmRhcmQgdGhhdCBhbGxvd3Mgc2ltcGxlIGRldGVjdGlvbiBvZiBkZXZpY2VzIGluIGEKKwluZXR3b3JrLgorICA8L3BhcmE+CisgIDxwYXJhPgorICAJVGhpcyBkb2N1bWVudGF0aW9uIGlzIHByb3ZpZGVkIGZvciBkZXZlbG9wZXJzIGludGVuZGluZworCXRvIHN1cHBvcnQgUmFwaWRJTyBvbiBuZXcgYXJjaGl0ZWN0dXJlcywgd3JpdGUgbmV3IGRyaXZlcnMsCisJb3IgdG8gdW5kZXJzdGFuZCB0aGUgc3Vic3lzdGVtIGludGVybmFscy4KKyAgPC9wYXJhPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImJ1Z3MiPgorICAgICA8dGl0bGU+S25vd24gQnVncyBhbmQgTGltaXRhdGlvbnM8L3RpdGxlPgorCisgICAgIDxzZWN0MSBpZD0ia25vd25fYnVncyI+CisgICAgIAk8dGl0bGU+QnVnczwvdGl0bGU+CisJICA8cGFyYT5Ob25lLiA7KTwvcGFyYT4KKyAgICAgPC9zZWN0MT4KKyAgICAgPHNlY3QxIGlkPSJMaW1pdGF0aW9ucyI+CisgICAgIAk8dGl0bGU+TGltaXRhdGlvbnM8L3RpdGxlPgorCSAgPHBhcmE+CisJICAgIDxvcmRlcmVkbGlzdD4KKwkgICAgICA8bGlzdGl0ZW0+PHBhcmE+QWNjZXNzL21hbmFnZW1lbnQgb2YgUmFwaWRJTyBtZW1vcnkgcmVnaW9ucyBpcyBub3Qgc3VwcG9ydGVkPC9wYXJhPjwvbGlzdGl0ZW0+CisJICAgICAgPGxpc3RpdGVtPjxwYXJhPk11bHRpcGxlIGhvc3QgZW51bWVyYXRpb24gaXMgbm90IHN1cHBvcnRlZDwvcGFyYT48L2xpc3RpdGVtPgorCSAgICA8L29yZGVyZWRsaXN0PgorCSA8L3BhcmE+CisgICAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iZHJpdmVycyI+CisgICAgIAk8dGl0bGU+UmFwaWRJTyBkcml2ZXIgaW50ZXJmYWNlPC90aXRsZT4KKwk8cGFyYT4KKwkJRHJpdmVycyBhcmUgcHJvdmlkZWQgYSBzZXQgb2YgY2FsbHMgaW4gb3JkZXIKKwkJdG8gaW50ZXJmYWNlIHdpdGggdGhlIHN1YnN5c3RlbSB0byBnYXRoZXIgaW5mbworCQlvbiBkZXZpY2VzLCByZXF1ZXN0L21hcCBtZW1vcnkgcmVnaW9uIHJlc291cmNlcywKKwkJYW5kIG1hbmFnZSBtYWlsYm94ZXMvZG9vcmJlbGxzLgorCTwvcGFyYT4KKwk8c2VjdDEgaWQ9IkZ1bmN0aW9ucyI+CisJCTx0aXRsZT5GdW5jdGlvbnM8L3RpdGxlPgorIUlpbmNsdWRlL2xpbnV4L3Jpb19kcnYuaAorIUVkcml2ZXJzL3JhcGlkaW8vcmlvLWRyaXZlci5jCishRWRyaXZlcnMvcmFwaWRpby9yaW8uYworCTwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iaW50ZXJuYWxzIj4KKyAgICAgPHRpdGxlPkludGVybmFsczwvdGl0bGU+CisKKyAgICAgPHBhcmE+CisgICAgIFRoaXMgY2hhcHRlciBjb250YWlucyB0aGUgYXV0b2dlbmVyYXRlZCBkb2N1bWVudGF0aW9uIG9mIHRoZSBSYXBpZElPCisgICAgIHN1YnN5c3RlbS4KKyAgICAgPC9wYXJhPgorCisgICAgIDxzZWN0MSBpZD0iU3RydWN0dXJlcyI+PHRpdGxlPlN0cnVjdHVyZXM8L3RpdGxlPgorIUlpbmNsdWRlL2xpbnV4L3Jpby5oCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MSBpZD0iRW51bWVyYXRpb25fYW5kX0Rpc2NvdmVyeSI+PHRpdGxlPkVudW1lcmF0aW9uIGFuZCBEaXNjb3Zlcnk8L3RpdGxlPgorIUlkcml2ZXJzL3JhcGlkaW8vcmlvLXNjYW4uYworICAgICA8L3NlY3QxPgorICAgICA8c2VjdDEgaWQ9IkRyaXZlcl9mdW5jdGlvbmFsaXR5Ij48dGl0bGU+RHJpdmVyIGZ1bmN0aW9uYWxpdHk8L3RpdGxlPgorIUlkcml2ZXJzL3JhcGlkaW8vcmlvLmMKKyFJZHJpdmVycy9yYXBpZGlvL3Jpby1hY2Nlc3MuYworICAgICA8L3NlY3QxPgorICAgICA8c2VjdDEgaWQ9IkRldmljZV9tb2RlbF9zdXBwb3J0Ij48dGl0bGU+RGV2aWNlIG1vZGVsIHN1cHBvcnQ8L3RpdGxlPgorIUlkcml2ZXJzL3JhcGlkaW8vcmlvLWRyaXZlci5jCisgICAgIDwvc2VjdDE+CisgICAgIDxzZWN0MSBpZD0iU3lzZnNfc3VwcG9ydCI+PHRpdGxlPlN5c2ZzIHN1cHBvcnQ8L3RpdGxlPgorIUlkcml2ZXJzL3JhcGlkaW8vcmlvLXN5c2ZzLmMKKyAgICAgPC9zZWN0MT4KKyAgICAgPHNlY3QxIGlkPSJQUEMzMl9zdXBwb3J0Ij48dGl0bGU+UFBDMzIgc3VwcG9ydDwvdGl0bGU+CishSWFyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX3Jpby5jCisgICAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iY3JlZGl0cyI+CisgICAgIDx0aXRsZT5DcmVkaXRzPC90aXRsZT4KKwk8cGFyYT4KKwkJVGhlIGZvbGxvd2luZyBwZW9wbGUgaGF2ZSBjb250cmlidXRlZCB0byB0aGUgUmFwaWRJTworCQlzdWJzeXN0ZW0gZGlyZWN0bHkgb3IgaW5kaXJlY3RseToKKwkJPG9yZGVyZWRsaXN0PgorCQkJPGxpc3RpdGVtPjxwYXJhPk1hdHQgUG9ydGVyPGVtYWlsPm1wb3J0ZXJAa2VybmVsLmNyYXNoaW5nLm9yZzwvZW1haWw+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+UmFuZHkgVmluc29uPGVtYWlsPnJ2aW5zb25AbXZpc3RhLmNvbTwvZW1haWw+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCQk8bGlzdGl0ZW0+PHBhcmE+RGFuIE1hbGVrPGVtYWlsPmRhbkBlbWJlZGRlZGFsbGV5LmNvbTwvZW1haWw+PC9wYXJhPjwvbGlzdGl0ZW0+CisJCTwvb3JkZXJlZGxpc3Q+CisJPC9wYXJhPgorCTxwYXJhPgorCQlUaGUgZm9sbG93aW5nIHBlb3BsZSBoYXZlIGNvbnRyaWJ1dGVkIHRvIHRoaXMgZG9jdW1lbnQ6CisJCTxvcmRlcmVkbGlzdD4KKwkJCTxsaXN0aXRlbT48cGFyYT5NYXR0IFBvcnRlcjxlbWFpbD5tcG9ydGVyQGtlcm5lbC5jcmFzaGluZy5vcmc8L2VtYWlsPjwvcGFyYT48L2xpc3RpdGVtPgorCQk8L29yZGVyZWRsaXN0PgorCTwvcGFyYT4KKyAgPC9jaGFwdGVyPgorPC9ib29rPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3JlZ3VsYXRvci50bXBsIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3JlZ3VsYXRvci50bXBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiMDhhMDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svcmVndWxhdG9yLnRtcGwKQEAgLTAsMCArMSwzMDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMS4yLy9FTiIKKwkiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQiIFtdPgorCis8Ym9vayBpZD0icmVndWxhdG9yLWFwaSI+CisgPGJvb2tpbmZvPgorICA8dGl0bGU+Vm9sdGFnZSBhbmQgY3VycmVudCByZWd1bGF0b3IgQVBJPC90aXRsZT4KKworICA8YXV0aG9yZ3JvdXA+CisgICA8YXV0aG9yPgorICAgIDxmaXJzdG5hbWU+TGlhbTwvZmlyc3RuYW1lPgorICAgIDxzdXJuYW1lPkdpcmR3b29kPC9zdXJuYW1lPgorICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgPGFkZHJlc3M+CisgICAgICA8ZW1haWw+bHJnQHNsaW1sb2dpYy5jby51azwvZW1haWw+CisgICAgIDwvYWRkcmVzcz4KKyAgICA8L2FmZmlsaWF0aW9uPgorICAgPC9hdXRob3I+CisgICA8YXV0aG9yPgorICAgIDxmaXJzdG5hbWU+TWFyazwvZmlyc3RuYW1lPgorICAgIDxzdXJuYW1lPkJyb3duPC9zdXJuYW1lPgorICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgPG9yZ25hbWU+V29sZnNvbiBNaWNyb2VsZWN0cm9uaWNzPC9vcmduYW1lPgorICAgICA8YWRkcmVzcz4KKyAgICAgIDxlbWFpbD5icm9vbmllQG9wZW5zb3VyY2Uud29sZnNvbm1pY3JvLmNvbTwvZW1haWw+CisgICAgIDwvYWRkcmVzcz4KKyAgICA8L2FmZmlsaWF0aW9uPgorICAgPC9hdXRob3I+CisgIDwvYXV0aG9yZ3JvdXA+CisKKyAgPGNvcHlyaWdodD4KKyAgIDx5ZWFyPjIwMDctMjAwODwveWVhcj4KKyAgIDxob2xkZXI+V29sZnNvbiBNaWNyb2VsZWN0cm9uaWNzPC9ob2xkZXI+CisgIDwvY29weXJpZ2h0PgorICA8Y29weXJpZ2h0PgorICAgPHllYXI+MjAwODwveWVhcj4KKyAgIDxob2xkZXI+TGlhbSBHaXJkd29vZDwvaG9sZGVyPgorICA8L2NvcHlyaWdodD4KKworICA8bGVnYWxub3RpY2U+CisgICA8cGFyYT4KKyAgICAgVGhpcyBkb2N1bWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlCisgICAgIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgTGljZW5zZSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCisgICAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQKKyAgICAgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorICAgICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorICAgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICAgICBNQSAwMjExMS0xMzA3IFVTQQorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICAgRm9yIG1vcmUgZGV0YWlscyBzZWUgdGhlIGZpbGUgQ09QWUlORyBpbiB0aGUgc291cmNlCisgICAgIGRpc3RyaWJ1dGlvbiBvZiBMaW51eC4KKyAgIDwvcGFyYT4KKyAgPC9sZWdhbG5vdGljZT4KKyA8L2Jvb2tpbmZvPgorCis8dG9jPjwvdG9jPgorCisgIDxjaGFwdGVyIGlkPSJpbnRybyI+CisgICAgPHRpdGxlPkludHJvZHVjdGlvbjwvdGl0bGU+CisgICAgPHBhcmE+CisJVGhpcyBmcmFtZXdvcmsgaXMgZGVzaWduZWQgdG8gcHJvdmlkZSBhIHN0YW5kYXJkIGtlcm5lbAorCWludGVyZmFjZSB0byBjb250cm9sIHZvbHRhZ2UgYW5kIGN1cnJlbnQgcmVndWxhdG9ycy4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisJVGhlIGludGVudGlvbiBpcyB0byBhbGxvdyBzeXN0ZW1zIHRvIGR5bmFtaWNhbGx5IGNvbnRyb2wKKwlyZWd1bGF0b3IgcG93ZXIgb3V0cHV0IGluIG9yZGVyIHRvIHNhdmUgcG93ZXIgYW5kIHByb2xvbmcKKwliYXR0ZXJ5IGxpZmUuICBUaGlzIGFwcGxpZXMgdG8gYm90aCB2b2x0YWdlIHJlZ3VsYXRvcnMgKHdoZXJlCisJdm9sdGFnZSBvdXRwdXQgaXMgY29udHJvbGxhYmxlKSBhbmQgY3VycmVudCBzaW5rcyAod2hlcmUgY3VycmVudAorCWxpbWl0IGlzIGNvbnRyb2xsYWJsZSkuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorCU5vdGUgdGhhdCBhZGRpdGlvbmFsIChhbmQgY3VycmVudGx5IG1vcmUgY29tcGxldGUpIGRvY3VtZW50YXRpb24KKwlpcyBhdmFpbGFibGUgaW4gdGhlIExpbnV4IGtlcm5lbCBzb3VyY2UgdW5kZXIKKwk8ZmlsZW5hbWU+RG9jdW1lbnRhdGlvbi9wb3dlci9yZWd1bGF0b3I8L2ZpbGVuYW1lPi4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdDEgaWQ9Imdsb3NzYXJ5Ij4KKyAgICAgICA8dGl0bGU+R2xvc3Nhcnk8L3RpdGxlPgorICAgICAgIDxwYXJhPgorCVRoZSByZWd1bGF0b3IgQVBJIHVzZXMgYSBudW1iZXIgb2YgdGVybXMgd2hpY2ggbWF5IG5vdCBiZQorCWZhbWlsaWFyOgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8Z2xvc3Nhcnk+CisKKyAgICAgICAgIDxnbG9zc2VudHJ5PgorCSAgIDxnbG9zc3Rlcm0+UmVndWxhdG9yPC9nbG9zc3Rlcm0+CisJICAgPGdsb3NzZGVmPgorCSAgICAgPHBhcmE+CisJRWxlY3Ryb25pYyBkZXZpY2UgdGhhdCBzdXBwbGllcyBwb3dlciB0byBvdGhlciBkZXZpY2VzLiAgTW9zdAorCXJlZ3VsYXRvcnMgY2FuIGVuYWJsZSBhbmQgZGlzYWJsZSB0aGVpciBvdXRwdXQgYW5kIHNvbWUgY2FuIGFsc28KKwljb250cm9sIHRoZWlyIG91dHB1dCB2b2x0YWdlIG9yIGN1cnJlbnQuCisJICAgICA8L3BhcmE+CisJICAgPC9nbG9zc2RlZj4KKyAgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworCSA8Z2xvc3NlbnRyeT4KKwkgICA8Z2xvc3N0ZXJtPkNvbnN1bWVyPC9nbG9zc3Rlcm0+CisJICAgPGdsb3NzZGVmPgorCSAgICAgPHBhcmE+CisJRWxlY3Ryb25pYyBkZXZpY2Ugd2hpY2ggY29uc3VtZXMgcG93ZXIgcHJvdmlkZWQgYnkgYSByZWd1bGF0b3IuCisJVGhlc2UgbWF5IGVpdGhlciBiZSBzdGF0aWMsIHJlcXVpcmluZyBvbmx5IGEgZml4ZWQgc3VwcGx5LCBvcgorCWR5bmFtaWMsIHJlcXVpcmluZyBhY3RpdmUgbWFuYWdlbWVudCBvZiB0aGUgcmVndWxhdG9yIGF0CisJcnVudGltZS4KKwkgICAgIDwvcGFyYT4KKwkgICA8L2dsb3NzZGVmPgorCSA8L2dsb3NzZW50cnk+CisKKwkgPGdsb3NzZW50cnk+CisJICAgPGdsb3NzdGVybT5Qb3dlciBEb21haW48L2dsb3NzdGVybT4KKwkgICA8Z2xvc3NkZWY+CisJICAgICA8cGFyYT4KKwlUaGUgZWxlY3Ryb25pYyBjaXJjdWl0IHN1cHBsaWVkIGJ5IGEgZ2l2ZW4gcmVndWxhdG9yLCBpbmNsdWRpbmcKKwl0aGUgcmVndWxhdG9yIGFuZCBhbGwgY29uc3VtZXIgZGV2aWNlcy4gIFRoZSBjb25maWd1cmF0aW9uIG9mCisJdGhlIHJlZ3VsYXRvciBpcyBzaGFyZWQgYmV0d2VlbiBhbGwgdGhlIGNvbXBvbmVudHMgaW4gdGhlCisJY2lyY3VpdC4KKwkgICAgIDwvcGFyYT4KKwkgICA8L2dsb3NzZGVmPgorCSA8L2dsb3NzZW50cnk+CisKKwkgPGdsb3NzZW50cnk+CisJICAgPGdsb3NzdGVybT5Qb3dlciBNYW5hZ2VtZW50IEludGVncmF0ZWQgQ2lyY3VpdDwvZ2xvc3N0ZXJtPgorCSAgIDxhY3JvbnltPlBNSUM8L2Fjcm9ueW0+CisJICAgPGdsb3NzZGVmPgorCSAgICAgPHBhcmE+CisJQW4gSUMgd2hpY2ggY29udGFpbnMgbnVtZXJvdXMgcmVndWxhdG9ycyBhbmQgb2Z0ZW4gYWxzbyBvdGhlcgorCXN1YnN5c3RlbXMuICBJbiBhbiBlbWJlZGRlZCBzeXN0ZW0gdGhlIHByaW1hcnkgUE1JQyBpcyBvZnRlbgorCWVxdWl2YWxlbnQgdG8gYSBjb21iaW5hdGlvbiBvZiB0aGUgUFNVIGFuZCBzb3V0aGJyaWRnZSBpbiBhCisJZGVza3RvcCBzeXN0ZW0uCisJICAgICA8L3BhcmE+CisJICAgPC9nbG9zc2RlZj4KKwkgPC9nbG9zc2VudHJ5PgorCTwvZ2xvc3Nhcnk+CisgICAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iY29uc3VtZXIiPgorICAgICA8dGl0bGU+Q29uc3VtZXIgZHJpdmVyIGludGVyZmFjZTwvdGl0bGU+CisgICAgIDxwYXJhPgorICAgICAgIFRoaXMgb2ZmZXJzIGEgc2ltaWxhciBBUEkgdG8gdGhlIGtlcm5lbCBjbG9jayBmcmFtZXdvcmsuCisgICAgICAgQ29uc3VtZXIgZHJpdmVycyB1c2UgPGxpbmsKKyAgICAgICBsaW5rZW5kPSdBUEktcmVndWxhdG9yLWdldCc+Z2V0PC9saW5rPiBhbmQgPGxpbmsKKyAgICAgICBsaW5rZW5kPSdBUEktcmVndWxhdG9yLXB1dCc+cHV0PC9saW5rPiBvcGVyYXRpb25zIHRvIGFjcXVpcmUgYW5kCisgICAgICAgcmVsZWFzZSByZWd1bGF0b3JzLiAgRnVuY3Rpb25zIGFyZQorICAgICAgIHByb3ZpZGVkIHRvIDxsaW5rIGxpbmtlbmQ9J0FQSS1yZWd1bGF0b3ItZW5hYmxlJz5lbmFibGU8L2xpbms+CisgICAgICAgYW5kIDxsaW5rIGxpbmtlbmQ9J0FQSS1yZWd1bGF0b3ItZGlzYWJsZSc+ZGlzYWJsZTwvbGluaz4gdGhlCisgICAgICAgcmVndWxhdG9yIGFuZCB0byBnZXQgYW5kIHNldCB0aGUgcnVudGltZSBwYXJhbWV0ZXJzIG9mIHRoZQorICAgICAgIHJlZ3VsYXRvci4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgICBXaGVuIHJlcXVlc3RpbmcgcmVndWxhdG9ycyBjb25zdW1lcnMgdXNlIHN5bWJvbGljIG5hbWVzIGZvciB0aGVpcgorICAgICAgIHN1cHBsaWVzLCBzdWNoIGFzICJWY2MiLCB3aGljaCBhcmUgbWFwcGVkIGludG8gYWN0dWFsIHJlZ3VsYXRvcgorICAgICAgIGRldmljZXMgYnkgdGhlIG1hY2hpbmUgaW50ZXJmYWNlLgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorCUEgc3R1YiB2ZXJzaW9uIG9mIHRoaXMgQVBJIGlzIHByb3ZpZGVkIHdoZW4gdGhlIHJlZ3VsYXRvcgorCWZyYW1ld29yayBpcyBub3QgaW4gdXNlIGluIG9yZGVyIHRvIG1pbmltaXNlIHRoZSBuZWVkIHRvIHVzZQorCWlmZGVmcy4KKyAgICAgPC9wYXJhPgorCisgICAgIDxzZWN0MSBpZD0iY29uc3VtZXItZW5hYmxlIj4KKyAgICAgICA8dGl0bGU+RW5hYmxpbmcgYW5kIGRpc2FibGluZzwvdGl0bGU+CisgICAgICAgPHBhcmE+CisgICAgICAgICBUaGUgcmVndWxhdG9yIEFQSSBwcm92aWRlcyByZWZlcmVuY2UgY291bnRlZCBlbmFibGluZyBhbmQKKwkgZGlzYWJsaW5nIG9mIHJlZ3VsYXRvcnMuIENvbnN1bWVyIGRldmljZXMgdXNlIHRoZSA8ZnVuY3Rpb24+PGxpbmsKKwkgbGlua2VuZD0nQVBJLXJlZ3VsYXRvci1lbmFibGUnPnJlZ3VsYXRvcl9lbmFibGU8L2xpbms+PC9mdW5jdGlvbj4KKwkgYW5kIDxmdW5jdGlvbj48bGluaworCSBsaW5rZW5kPSdBUEktcmVndWxhdG9yLWRpc2FibGUnPnJlZ3VsYXRvcl9kaXNhYmxlPC9saW5rPgorCSA8L2Z1bmN0aW9uPiBmdW5jdGlvbnMgdG8gZW5hYmxlIGFuZCBkaXNhYmxlIHJlZ3VsYXRvcnMuICBDYWxscworCSB0byB0aGUgdHdvIGZ1bmN0aW9ucyBtdXN0IGJlIGJhbGFuY2VkLgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgIE5vdGUgdGhhdCBzaW5jZSBtdWx0aXBsZSBjb25zdW1lcnMgbWF5IGJlIHVzaW5nIGEgcmVndWxhdG9yIGFuZAorCSBtYWNoaW5lIGNvbnN0cmFpbnRzIG1heSBub3QgYWxsb3cgdGhlIHJlZ3VsYXRvciB0byBiZSBkaXNhYmxlZAorCSB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBjYWxsaW5nCisJIDxmdW5jdGlvbj5yZWd1bGF0b3JfZGlzYWJsZTwvZnVuY3Rpb24+IHdpbGwgYWN0dWFsbHkgY2F1c2UgdGhlCisJIHN1cHBseSBwcm92aWRlZCBieSB0aGUgcmVndWxhdG9yIHRvIGJlIGRpc2FibGVkLiBDb25zdW1lcgorCSBkcml2ZXJzIHNob3VsZCBhc3N1bWUgdGhhdCB0aGUgcmVndWxhdG9yIG1heSBiZSBlbmFibGVkIGF0IGFsbAorCSB0aW1lcy4KKyAgICAgICA8L3BhcmE+CisgICAgIDwvc2VjdDE+CisKKyAgICAgPHNlY3QxIGlkPSJjb25zdW1lci1jb25maWciPgorICAgICAgIDx0aXRsZT5Db25maWd1cmF0aW9uPC90aXRsZT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgIFNvbWUgY29uc3VtZXIgZGV2aWNlcyBtYXkgbmVlZCB0byBiZSBhYmxlIHRvIGR5bmFtaWNhbGx5CisJIGNvbmZpZ3VyZSB0aGVpciBzdXBwbGllcy4gIEZvciBleGFtcGxlLCBNTUMgZHJpdmVycyBtYXkgbmVlZCB0bworCSBzZWxlY3QgdGhlIGNvcnJlY3Qgb3BlcmF0aW5nIHZvbHRhZ2UgZm9yIHRoZWlyIGNhcmRzLiAgVGhpcyBtYXkKKwkgYmUgZG9uZSB3aGlsZSB0aGUgcmVndWxhdG9yIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorCSBUaGUgPGZ1bmN0aW9uPjxsaW5rCisJIGxpbmtlbmQ9J0FQSS1yZWd1bGF0b3Itc2V0LXZvbHRhZ2UnPnJlZ3VsYXRvcl9zZXRfdm9sdGFnZTwvbGluaz4KKwkgPC9mdW5jdGlvbj4gYW5kIDxmdW5jdGlvbj48bGluaworCSBsaW5rZW5kPSdBUEktcmVndWxhdG9yLXNldC1jdXJyZW50LWxpbWl0JworCSA+cmVndWxhdG9yX3NldF9jdXJyZW50X2xpbWl0PC9saW5rPgorCSA8L2Z1bmN0aW9uPiBmdW5jdGlvbnMgcHJvdmlkZSB0aGUgcHJpbWFyeSBpbnRlcmZhY2UgZm9yIHRoaXMuCisJIEJvdGggdGFrZSByYW5nZXMgb2Ygdm9sdGFnZXMgYW5kIGN1cnJlbnRzLCBzdXBwb3J0aW5nIGRyaXZlcnMKKwkgdGhhdCBkbyBub3QgcmVxdWlyZSBhIHNwZWNpZmljIHZhbHVlIChlZywgQ1BVIGZyZXF1ZW5jeSBzY2FsaW5nCisJIG5vcm1hbGx5IHBlcm1pdHMgdGhlIENQVSB0byB1c2UgYSB3aWRlciByYW5nZSBvZiBzdXBwbHkKKwkgdm9sdGFnZXMgYXQgbG93ZXIgZnJlcXVlbmNpZXMgYnV0IGRvZXMgbm90IHJlcXVpcmUgdGhhdCB0aGUKKwkgc3VwcGx5IHZvbHRhZ2UgYmUgbG93ZXJlZCkuICBXaGVyZSBhbiBleGFjdCB2YWx1ZSBpcyByZXF1aXJlZAorCSBib3RoIG1pbmltdW0gYW5kIG1heGltdW0gdmFsdWVzIHNob3VsZCBiZSBpZGVudGljYWwuCisgICAgICAgPC9wYXJhPgorICAgICA8L3NlY3QxPgorCisgICAgIDxzZWN0MSBpZD0iY29uc3VtZXItY2FsbGJhY2siPgorICAgICAgIDx0aXRsZT5DYWxsYmFja3M8L3RpdGxlPgorICAgICAgIDxwYXJhPgorCSAgQ2FsbGJhY2tzIG1heSBhbHNvIGJlIDxsaW5rCisJICBsaW5rZW5kPSdBUEktcmVndWxhdG9yLXJlZ2lzdGVyLW5vdGlmaWVyJz5yZWdpc3RlcmVkPC9saW5rPgorCSAgZm9yIGV2ZW50cyBzdWNoIGFzIHJlZ3VsYXRpb24gZmFpbHVyZXMuCisgICAgICAgPC9wYXJhPgorICAgICA8L3NlY3QxPgorICAgPC9jaGFwdGVyPgorCisgICA8Y2hhcHRlciBpZD0iZHJpdmVyIj4KKyAgICAgPHRpdGxlPlJlZ3VsYXRvciBkcml2ZXIgaW50ZXJmYWNlPC90aXRsZT4KKyAgICAgPHBhcmE+CisgICAgICAgRHJpdmVycyBmb3IgcmVndWxhdG9yIGNoaXBzIDxsaW5rCisgICAgICAgbGlua2VuZD0nQVBJLXJlZ3VsYXRvci1yZWdpc3Rlcic+cmVnaXN0ZXI8L2xpbms+IHRoZSByZWd1bGF0b3JzCisgICAgICAgd2l0aCB0aGUgcmVndWxhdG9yIGNvcmUsIHByb3ZpZGluZyBvcGVyYXRpb25zIHN0cnVjdHVyZXMgdG8gdGhlCisgICAgICAgY29yZS4gIEEgPGxpbmsKKyAgICAgICBsaW5rZW5kPSdBUEktcmVndWxhdG9yLW5vdGlmaWVyLWNhbGwtY2hhaW4nPm5vdGlmaWVyPC9saW5rPiBpbnRlcmZhY2UKKyAgICAgICBhbGxvd3MgZXJyb3IgY29uZGl0aW9ucyB0byBiZSByZXBvcnRlZCB0byB0aGUgY29yZS4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgICBSZWdpc3RyYXRpb24gc2hvdWxkIGJlIHRyaWdnZXJlZCBieSBleHBsaWNpdCBzZXR1cCBkb25lIGJ5IHRoZQorICAgICAgIHBsYXRmb3JtLCBzdXBwbHlpbmcgYSA8bGluaworICAgICAgIGxpbmtlbmQ9J0FQSS1zdHJ1Y3QtcmVndWxhdG9yLWluaXQtZGF0YSc+c3RydWN0CisgICAgICAgcmVndWxhdG9yX2luaXRfZGF0YTwvbGluaz4gZm9yIHRoZSByZWd1bGF0b3IgY29udGFpbmluZworICAgICAgIDxsaW5rIGxpbmtlbmQ9J21hY2hpbmUtY29uc3RyYWludCc+Y29uc3RyYWludDwvbGluaz4gYW5kCisgICAgICAgPGxpbmsgbGlua2VuZD0nbWFjaGluZS1zdXBwbHknPnN1cHBseTwvbGluaz4gaW5mb3JtYXRpb24uCisgICAgIDwvcGFyYT4KKyAgIDwvY2hhcHRlcj4KKworICAgPGNoYXB0ZXIgaWQ9Im1hY2hpbmUiPgorICAgICA8dGl0bGU+TWFjaGluZSBpbnRlcmZhY2U8L3RpdGxlPgorICAgICA8cGFyYT4KKyAgICAgICBUaGlzIGludGVyZmFjZSBwcm92aWRlcyBhIHdheSB0byBkZWZpbmUgaG93IHJlZ3VsYXRvcnMgYXJlCisgICAgICAgY29ubmVjdGVkIHRvIGNvbnN1bWVycyBvbiBhIGdpdmVuIHN5c3RlbSBhbmQgd2hhdCB0aGUgdmFsaWQKKyAgICAgICBvcGVyYXRpbmcgcGFyYW1ldGVycyBhcmUgZm9yIHRoZSBzeXN0ZW0uCisgICAgIDwvcGFyYT4KKworICAgICA8c2VjdDEgaWQ9Im1hY2hpbmUtc3VwcGx5Ij4KKyAgICAgICA8dGl0bGU+U3VwcGxpZXM8L3RpdGxlPgorICAgICAgIDxwYXJhPgorICAgICAgICAgUmVndWxhdG9yIHN1cHBsaWVzIGFyZSBzcGVjaWZpZWQgdXNpbmcgPGxpbmsKKwkgbGlua2VuZD0nQVBJLXN0cnVjdC1yZWd1bGF0b3ItY29uc3VtZXItc3VwcGx5Jz5zdHJ1Y3QKKwkgcmVndWxhdG9yX2NvbnN1bWVyX3N1cHBseTwvbGluaz4uICBUaGlzIGlzIGRvbmUgYXQKKwkgPGxpbmsgbGlua2VuZD0nZHJpdmVyJz5kcml2ZXIgcmVnaXN0cmF0aW9uCisJIHRpbWU8L2xpbms+IGFzIHBhcnQgb2YgdGhlIG1hY2hpbmUgY29uc3RyYWludHMuCisgICAgICAgPC9wYXJhPgorICAgICA8L3NlY3QxPgorCisgICAgIDxzZWN0MSBpZD0ibWFjaGluZS1jb25zdHJhaW50Ij4KKyAgICAgICA8dGl0bGU+Q29uc3RyYWludHM8L3RpdGxlPgorICAgICAgIDxwYXJhPgorCSBBcyB3ZWxsIGFzIGRlZmluaW5nIHRoZSBjb25uZWN0aW9ucyB0aGUgbWFjaGluZSBpbnRlcmZhY2UKKwkgYWxzbyBwcm92aWRlcyBjb25zdHJhaW50cyBkZWZpbmluZyB0aGUgb3BlcmF0aW9ucyB0aGF0CisJIGNsaWVudHMgYXJlIGFsbG93ZWQgdG8gcGVyZm9ybSBhbmQgdGhlIHBhcmFtZXRlcnMgdGhhdCBtYXkgYmUKKwkgc2V0LiAgVGhpcyBpcyByZXF1aXJlZCBzaW5jZSBnZW5lcmFsbHkgcmVndWxhdG9yIGRldmljZXMgd2lsbAorCSBvZmZlciBtb3JlIGZsZXhpYmlsaXR5IHRoYW4gaXQgaXMgc2FmZSB0byB1c2Ugb24gYSBnaXZlbgorCSBzeXN0ZW0sIGZvciBleGFtcGxlIHN1cHBvcnRpbmcgaGlnaGVyIHN1cHBseSB2b2x0YWdlcyB0aGFuIHRoZQorCSBjb25zdW1lcnMgYXJlIHJhdGVkIGZvci4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisJIFRoaXMgaXMgZG9uZSBhdCA8bGluayBsaW5rZW5kPSdkcml2ZXInPmRyaXZlcgorCSByZWdpc3RyYXRpb24gdGltZTwvbGluaz4gYnkgcHJvdmlkaW5nIGEgPGxpbmsKKwkgbGlua2VuZD0nQVBJLXN0cnVjdC1yZWd1bGF0aW9uLWNvbnN0cmFpbnRzJz5zdHJ1Y3QKKwkgcmVndWxhdGlvbl9jb25zdHJhaW50czwvbGluaz4uCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIGNvbnN0cmFpbnRzIG1heSBhbHNvIHNwZWNpZnkgYW4gaW5pdGlhbCBjb25maWd1cmF0aW9uIGZvciB0aGUKKyAgICAgICAgIHJlZ3VsYXRvciBpbiB0aGUgY29uc3RyYWludHMsIHdoaWNoIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yCisgICAgICAgICB1c2Ugd2l0aCBzdGF0aWMgY29uc3VtZXJzLgorICAgICAgIDwvcGFyYT4KKyAgICAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJhcGkiPgorICAgIDx0aXRsZT5BUEkgcmVmZXJlbmNlPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIER1ZSB0byBsaW1pdGF0aW9ucyBvZiB0aGUga2VybmVsIGRvY3VtZW50YXRpb24gZnJhbWV3b3JrIGFuZCB0aGUKKyAgICAgIGV4aXN0aW5nIGxheW91dCBvZiB0aGUgc291cmNlIGNvZGUgdGhlIGVudGlyZSByZWd1bGF0b3IgQVBJIGlzCisgICAgICBkb2N1bWVudGVkIGhlcmUuCisgICAgPC9wYXJhPgorIUlpbmNsdWRlL2xpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oCishSWluY2x1ZGUvbGludXgvcmVndWxhdG9yL21hY2hpbmUuaAorIUlpbmNsdWRlL2xpbnV4L3JlZ3VsYXRvci9kcml2ZXIuaAorIUVkcml2ZXJzL3JlZ3VsYXRvci9jb3JlLmMKKyAgPC9jaGFwdGVyPgorPC9ib29rPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3MzOTAtZHJpdmVycy50bXBsIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3MzOTAtZHJpdmVycy50bXBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1YmZjMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svczM5MC1kcml2ZXJzLnRtcGwKQEAgLTAsMCArMSwxNjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMS4yLy9FTiIKKwkiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQiIFtdPgorCis8Ym9vayBpZD0iczM5MGRyaXZlcnMiPgorIDxib29raW5mbz4KKyAgPHRpdGxlPldyaXRpbmcgczM5MCBjaGFubmVsIGRldmljZSBkcml2ZXJzPC90aXRsZT4KKworICA8YXV0aG9yZ3JvdXA+CisgICA8YXV0aG9yPgorICAgIDxmaXJzdG5hbWU+Q29ybmVsaWE8L2ZpcnN0bmFtZT4KKyAgICA8c3VybmFtZT5IdWNrPC9zdXJuYW1lPgorICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgPGFkZHJlc3M+CisgICAgICAgPGVtYWlsPmNvcm5lbGlhLmh1Y2tAZGUuaWJtLmNvbTwvZW1haWw+CisgICAgIDwvYWRkcmVzcz4KKyAgICA8L2FmZmlsaWF0aW9uPgorICAgPC9hdXRob3I+CisgIDwvYXV0aG9yZ3JvdXA+CisKKyAgPGNvcHlyaWdodD4KKyAgIDx5ZWFyPjIwMDc8L3llYXI+CisgICA8aG9sZGVyPklCTSBDb3JwLjwvaG9sZGVyPgorICA8L2NvcHlyaWdodD4KKworICA8bGVnYWxub3RpY2U+CisgICA8cGFyYT4KKyAgICAgVGhpcyBkb2N1bWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlCisgICAgIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIKKyAgICAgdmVyc2lvbi4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKyAgICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAorICAgICB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisgICAgIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICAgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgICAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgICAgIE1BIDAyMTExLTEzMDcgVVNBCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgICBGb3IgbW9yZSBkZXRhaWxzIHNlZSB0aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBzb3VyY2UKKyAgICAgZGlzdHJpYnV0aW9uIG9mIExpbnV4LgorICAgPC9wYXJhPgorICA8L2xlZ2Fsbm90aWNlPgorIDwvYm9va2luZm8+CisKKzx0b2M+PC90b2M+CisKKyAgPGNoYXB0ZXIgaWQ9ImludHJvIj4KKyAgIDx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorICA8cGFyYT4KKyAgICBUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgaW50ZXJmYWNlcyBhdmFpbGFibGUgZm9yIGRldmljZSBkcml2ZXJzIHRoYXQKKyAgICBkcml2ZSBzMzkwIGJhc2VkIGNoYW5uZWwgYXR0YWNoZWQgSS9PIGRldmljZXMuIFRoaXMgaW5jbHVkZXMgaW50ZXJmYWNlcyBmb3IKKyAgICBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoYXJkd2FyZSBhbmQgaW50ZXJmYWNlcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUKKyAgICBjb21tb24gZHJpdmVyIGNvcmUuIFRob3NlIGludGVyZmFjZXMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBzMzkwIGNvbW1vbiBJL08KKyAgICBsYXllci4KKyAgPC9wYXJhPgorICA8cGFyYT4KKyAgICBUaGUgZG9jdW1lbnQgYXNzdW1lcyBhIGZhbWlsYXJpdHkgd2l0aCB0aGUgdGVjaG5pY2FsIHRlcm1zIGFzc29jaWF0ZWQKKyAgICB3aXRoIHRoZSBzMzkwIGNoYW5uZWwgSS9PIGFyY2hpdGVjdHVyZS4gRm9yIGEgZGVzY3JpcHRpb24gb2YgdGhpcworICAgIGFyY2hpdGVjdHVyZSwgcGxlYXNlIHJlZmVyIHRvIHRoZSAiei9BcmNoaXRlY3R1cmU6IFByaW5jaXBsZXMgb2YKKyAgICBPcGVyYXRpb24iLCBJQk0gcHVibGljYXRpb24gbm8uIFNBMjItNzgzMi4KKyAgPC9wYXJhPgorICA8cGFyYT4KKyAgICBXaGlsZSBtb3N0IEkvTyBkZXZpY2VzIG9uIGEgczM5MCBzeXN0ZW0gYXJlIHR5cGljYWxseSBkcml2ZW4gdGhyb3VnaCB0aGUKKyAgICBjaGFubmVsIEkvTyBtZWNoYW5pc20gZGVzY3JpYmVkIGhlcmUsIHRoZXJlIGFyZSB2YXJpb3VzIG90aGVyIG1ldGhvZHMKKyAgICAobGlrZSB0aGUgZGlhZyBpbnRlcmZhY2UpLiBUaGVzZSBhcmUgb3V0IG9mIHRoZSBzY29wZSBvZiB0aGlzIGRvY3VtZW50LgorICA8L3BhcmE+CisgIDxwYXJhPgorICAgIFNvbWUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBjYW4gYWxzbyBiZSBmb3VuZCBpbiB0aGUga2VybmVsIHNvdXJjZQorICAgIHVuZGVyIERvY3VtZW50YXRpb24vczM5MC9kcml2ZXItbW9kZWwudHh0LgorICA8L3BhcmE+CisgIDwvY2hhcHRlcj4KKyAgPGNoYXB0ZXIgaWQ9ImNjdyI+CisgICA8dGl0bGU+VGhlIGNjdyBidXM8L3RpdGxlPgorICA8cGFyYT4KKwlUaGUgY2N3IGJ1cyB0eXBpY2FsbHkgY29udGFpbnMgdGhlIG1ham9yaXR5IG9mIGRldmljZXMgYXZhaWxhYmxlIHRvCisJYSBzMzkwIHN5c3RlbS4gTmFtZWQgYWZ0ZXIgdGhlIGNoYW5uZWwgY29tbWFuZCB3b3JkIChjY3cpLCB0aGUgYmFzaWMKKwljb21tYW5kIHN0cnVjdHVyZSB1c2VkIHRvIGFkZHJlc3MgaXRzIGRldmljZXMsIHRoZSBjY3cgYnVzIGNvbnRhaW5zCisJc28tY2FsbGVkIGNoYW5uZWwgYXR0YWNoZWQgZGV2aWNlcy4gVGhleSBhcmUgYWRkcmVzc2VkIHZpYSBJL08KKwlzdWJjaGFubmVscywgdmlzaWJsZSBvbiB0aGUgY3NzIGJ1cy4gQSBkZXZpY2UgZHJpdmVyIGZvcgorCWNoYW5uZWwtYXR0YWNoZWQgZGV2aWNlcywgaG93ZXZlciwgd2lsbCBuZXZlciBpbnRlcmFjdAl3aXRoIHRoZQorCXN1YmNoYW5uZWwgZGlyZWN0bHksIGJ1dCBvbmx5IHZpYSB0aGUgSS9PIGRldmljZSBvbiB0aGUgY2N3IGJ1cywKKwl0aGUgY2N3IGRldmljZS4KKyAgPC9wYXJhPgorICAgIDxzZWN0MSBpZD0iY2hhbm5lbElPIj4KKyAgICAgPHRpdGxlPkkvTyBmdW5jdGlvbnMgZm9yIGNoYW5uZWwtYXR0YWNoZWQgZGV2aWNlczwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICBTb21lIGhhcmR3YXJlIHN0cnVjdHVyZXMgaGF2ZSBiZWVuIHRyYW5zbGF0ZWQgaW50byBDIHN0cnVjdHVyZXMgZm9yIHVzZQorICAgICAgYnkgdGhlIGNvbW1vbiBJL08gbGF5ZXIgYW5kIGRldmljZSBkcml2ZXJzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbgorICAgICAgdGhlIGhhcmR3YXJlIHN0cnVjdHVyZXMgcmVwcmVzZW50ZWQgaGVyZSwgcGxlYXNlIGNvbnN1bHQgdGhlIFByaW5jaXBsZXMKKyAgICAgIG9mIE9wZXJhdGlvbi4KKyAgICA8L3BhcmE+CishSWFyY2gvczM5MC9pbmNsdWRlL2FzbS9jaW8uaAorICAgIDwvc2VjdDE+CisgICAgPHNlY3QxIGlkPSJjY3dkZXYiPgorICAgICA8dGl0bGU+Y2N3IGRldmljZXM8L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgRGV2aWNlcyB0aGF0IHdhbnQgdG8gaW5pdGlhdGUgY2hhbm5lbCBJL08gbmVlZCB0byBhdHRhY2ggdG8gdGhlIGNjdyBidXMuCisgICAgICBJbnRlcmFjdGlvbiB3aXRoIHRoZSBkcml2ZXIgY29yZSBpcyBkb25lIHZpYSB0aGUgY29tbW9uIEkvTyBsYXllciwgd2hpY2gKKyAgICAgIHByb3ZpZGVzIHRoZSBhYnN0cmFjdGlvbnMgb2YgY2N3IGRldmljZXMgYW5kIGNjdyBkZXZpY2UgZHJpdmVycy4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBUaGUgZnVuY3Rpb25zIHRoYXQgaW5pdGlhdGUgb3IgdGVybWluYXRlIGNoYW5uZWwgSS9PIGFsbCBhY3QgdXBvbiBhCisgICAgICBjY3cgZGV2aWNlIHN0cnVjdHVyZS4gRGV2aWNlIGRyaXZlcnMgbXVzdCBub3QgYnlwYXNzIHRob3NlIGZ1bmN0aW9ucworICAgICAgb3Igc3RyYW5nZSBzaWRlIGVmZmVjdHMgbWF5IGhhcHBlbi4KKyAgICA8L3BhcmE+CishSWFyY2gvczM5MC9pbmNsdWRlL2FzbS9jY3dkZXYuaAorIUVkcml2ZXJzL3MzOTAvY2lvL2RldmljZS5jCishRWRyaXZlcnMvczM5MC9jaW8vZGV2aWNlX29wcy5jCisgICAgPC9zZWN0MT4KKyAgICA8c2VjdDEgaWQ9ImNtZiI+CisgICAgIDx0aXRsZT5UaGUgY2hhbm5lbC1tZWFzdXJlbWVudCBmYWNpbGl0eTwvdGl0bGU+CisgIDxwYXJhPgorCVRoZSBjaGFubmVsLW1lYXN1cmVtZW50IGZhY2lsaXR5IHByb3ZpZGVzIGEgbWVhbnMgdG8gY29sbGVjdAorCW1lYXN1cmVtZW50IGRhdGEgd2hpY2ggaXMgbWFkZSBhdmFpbGFibGUgYnkgdGhlIGNoYW5uZWwgc3Vic3lzdGVtCisJZm9yIGVhY2ggY2hhbm5lbCBhdHRhY2hlZCBkZXZpY2UuCisgIDwvcGFyYT4KKyFJYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2NtYi5oCishRWRyaXZlcnMvczM5MC9jaW8vY21mLmMKKyAgICA8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImNjd2dyb3VwIj4KKyAgIDx0aXRsZT5UaGUgY2N3Z3JvdXAgYnVzPC90aXRsZT4KKyAgPHBhcmE+CisJVGhlIGNjd2dyb3VwIGJ1cyBvbmx5IGNvbnRhaW5zIGFydGlmaWNpYWwgZGV2aWNlcywgY3JlYXRlZCBieSB0aGUgdXNlci4KKwlNYW55IG5ldHdvcmtpbmcgZGV2aWNlcyAoZS5nLiBxZXRoKSBhcmUgaW4gZmFjdCBjb21wb3NlZCBvZiBzZXZlcmFsCisJY2N3IGRldmljZXMgKGxpa2UgcmVhZCwgd3JpdGUgYW5kIGRhdGEgY2hhbm5lbCBmb3IgcWV0aCkuIFRoZQorCWNjd2dyb3VwIGJ1cyBwcm92aWRlcyBhIG1lY2hhbmlzbSB0byBjcmVhdGUgYSBtZXRhLWRldmljZSB3aGljaAorCWNvbnRhaW5zIHRob3NlIGNjdyBkZXZpY2VzIGFzIHNsYXZlIGRldmljZXMgYW5kIGNhbiBiZSBhc3NvY2lhdGVkCisJd2l0aCB0aGUgbmV0ZGV2aWNlLgorICA8L3BhcmE+CisgICA8c2VjdDEgaWQ9ImNjd2dyb3VwZGV2aWNlcyI+CisgICAgPHRpdGxlPmNjdyBncm91cCBkZXZpY2VzPC90aXRsZT4KKyFJYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2Njd2dyb3VwLmgKKyFFZHJpdmVycy9zMzkwL2Npby9jY3dncm91cC5jCisgICA8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImdlbmVyaWNpbnRlcmZhY2VzIj4KKyAgIDx0aXRsZT5HZW5lcmljIGludGVyZmFjZXM8L3RpdGxlPgorICA8cGFyYT4KKwlTb21lIGludGVyZmFjZXMgYXJlIGF2YWlsYWJsZSB0byBvdGhlciBkcml2ZXJzIHRoYXQgZG8gbm90IG5lY2Vzc2FyaWx5CisJaGF2ZSBhbnl0aGluZyB0byBkbyB3aXRoIHRoZSBidXNzZXMgZGVzY3JpYmVkIGFib3ZlLCBidXQgc3RpbGwgYXJlCisJaW5kaXJlY3RseSB1c2luZyBiYXNpYyBpbmZyYXN0cnVjdHVyZSBpbiB0aGUgY29tbW9uIEkvTyBsYXllci4KKwlPbmUgZXhhbXBsZSBpcyB0aGUgc3VwcG9ydCBmb3IgYWRhcHRlciBpbnRlcnJ1cHRzLgorICA8L3BhcmE+CishRWRyaXZlcnMvczM5MC9jaW8vYWlycS5jCisgIDwvY2hhcHRlcj4KKworPC9ib29rPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3Njc2kudG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9zY3NpLnRtcGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGI5YjliMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9zY3NpLnRtcGwKQEAgLTAsMCArMSw0MDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMS4yLy9FTiIKKwkiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQiIFtdPgorCis8Ym9vayBpZD0ic2NzaW1pZCI+CisgIDxib29raW5mbz4KKyAgICA8dGl0bGU+U0NTSSBJbnRlcmZhY2VzIEd1aWRlPC90aXRsZT4KKworICAgIDxhdXRob3Jncm91cD4KKyAgICAgIDxhdXRob3I+CisgICAgICAgIDxmaXJzdG5hbWU+SmFtZXM8L2ZpcnN0bmFtZT4KKyAgICAgICAgPHN1cm5hbWU+Qm90dG9tbGV5PC9zdXJuYW1lPgorICAgICAgICA8YWZmaWxpYXRpb24+CisgICAgICAgICAgPGFkZHJlc3M+CisgICAgICAgICAgICA8ZW1haWw+SmFtZXMuQm90dG9tbGV5QGhhbnNlbnBhcnRuZXJzaGlwLmNvbTwvZW1haWw+CisgICAgICAgICAgPC9hZGRyZXNzPgorICAgICAgICA8L2FmZmlsaWF0aW9uPgorICAgICAgPC9hdXRob3I+CisKKyAgICAgIDxhdXRob3I+CisgICAgICAgIDxmaXJzdG5hbWU+Um9iPC9maXJzdG5hbWU+CisgICAgICAgIDxzdXJuYW1lPkxhbmRsZXk8L3N1cm5hbWU+CisgICAgICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgICAgICA8YWRkcmVzcz4KKyAgICAgICAgICAgIDxlbWFpbD5yb2JAbGFuZGxleS5uZXQ8L2VtYWlsPgorICAgICAgICAgIDwvYWRkcmVzcz4KKyAgICAgICAgPC9hZmZpbGlhdGlvbj4KKyAgICAgIDwvYXV0aG9yPgorCisgICAgPC9hdXRob3Jncm91cD4KKworICAgIDxjb3B5cmlnaHQ+CisgICAgICA8eWVhcj4yMDA3PC95ZWFyPgorICAgICAgPGhvbGRlcj5MaW51eCBGb3VuZGF0aW9uPC9ob2xkZXI+CisgICAgPC9jb3B5cmlnaHQ+CisKKyAgICA8bGVnYWxub3RpY2U+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBkb2N1bWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlCisgICAgICAgIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgICAgTGljZW5zZSB2ZXJzaW9uIDIuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCisgICAgICAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQKKyAgICAgICAgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorICAgICAgICBGb3IgbW9yZSBkZXRhaWxzIHNlZSB0aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBzb3VyY2UKKyAgICAgICAgZGlzdHJpYnV0aW9uIG9mIExpbnV4LgorICAgICAgPC9wYXJhPgorICAgIDwvbGVnYWxub3RpY2U+CisgIDwvYm9va2luZm8+CisKKyAgPHRvYz48L3RvYz4KKworICA8Y2hhcHRlciBpZD0iaW50cm8iPgorICAgIDx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorICAgIDxzZWN0MSBpZD0icHJvdG9jb2xfdnNfYnVzIj4KKyAgICAgIDx0aXRsZT5Qcm90b2NvbCB2cyBidXM8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIE9uY2UgdXBvbiBhIHRpbWUsIHRoZSBTbWFsbCBDb21wdXRlciBTeXN0ZW1zIEludGVyZmFjZSBkZWZpbmVkIGJvdGgKKyAgICAgICAgYSBwYXJhbGxlbCBJL08gYnVzIGFuZCBhIGRhdGEgcHJvdG9jb2wgdG8gY29ubmVjdCBhIHdpZGUgdmFyaWV0eSBvZgorICAgICAgICBwZXJpcGhlcmFscyAoZGlzayBkcml2ZXMsIHRhcGUgZHJpdmVzLCBtb2RlbXMsIHByaW50ZXJzLCBzY2FubmVycywKKyAgICAgICAgb3B0aWNhbCBkcml2ZXMsIHRlc3QgZXF1aXBtZW50LCBhbmQgbWVkaWNhbCBkZXZpY2VzKSB0byBhIGhvc3QKKyAgICAgICAgY29tcHV0ZXIuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgQWx0aG91Z2ggdGhlIG9sZCBwYXJhbGxlbCAoZmFzdC93aWRlL3VsdHJhKSBTQ1NJIGJ1cyBoYXMgbGFyZ2VseQorICAgICAgICBmYWxsZW4gb3V0IG9mIHVzZSwgdGhlIFNDU0kgY29tbWFuZCBzZXQgaXMgbW9yZSB3aWRlbHkgdXNlZCB0aGFuIGV2ZXIKKyAgICAgICAgdG8gY29tbXVuaWNhdGUgd2l0aCBkZXZpY2VzIG92ZXIgYSBudW1iZXIgb2YgZGlmZmVyZW50IGJ1c3Nlcy4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgPHVsaW5rIHVybD0naHR0cDovL3d3dy50MTAub3JnL3Njc2ktMy5odG0nPlNDU0kgcHJvdG9jb2w8L3VsaW5rPgorICAgICAgICBpcyBhIGJpZy1lbmRpYW4gcGVlci10by1wZWVyIHBhY2tldCBiYXNlZCBwcm90b2NvbC4gIFNDU0kgY29tbWFuZHMKKyAgICAgICAgYXJlIDYsIDEwLCAxMiwgb3IgMTYgYnl0ZXMgbG9uZywgb2Z0ZW4gZm9sbG93ZWQgYnkgYW4gYXNzb2NpYXRlZCBkYXRhCisgICAgICAgIHBheWxvYWQuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgU0NTSSBjb21tYW5kcyBjYW4gYmUgdHJhbnNwb3J0ZWQgb3ZlciBqdXN0IGFib3V0IGFueSBraW5kIG9mIGJ1cywgYW5kCisgICAgICAgIGFyZSB0aGUgZGVmYXVsdCBwcm90b2NvbCBmb3Igc3RvcmFnZSBkZXZpY2VzIGF0dGFjaGVkIHRvIFVTQiwgU0FUQSwKKyAgICAgICAgU0FTLCBGaWJyZSBDaGFubmVsLCBGaXJlV2lyZSwgYW5kIEFUQVBJIGRldmljZXMuICBTQ1NJIHBhY2tldHMgYXJlCisgICAgICAgIGFsc28gY29tbW9ubHkgZXhjaGFuZ2VkIG92ZXIgSW5maW5pYmFuZCwKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2kyby5zaGFkb3djb25uZWN0LmNvbS9mYXEucGhwJz5JMjA8L3VsaW5rPiwgVENQL0lQCisgICAgICAgICg8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU0NTSSc+aVNDU0k8L3VsaW5rPiksIGV2ZW4KKyAgICAgICAgPHVsaW5rIHVybD0naHR0cDovL2N5YmVyZWxrLm5ldC90aW0vcGFycG9ydC9wYXJzY3NpLmh0bWwnPlBhcmFsbGVsCisgICAgICAgIHBvcnRzPC91bGluaz4uCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0MT4KKyAgICA8c2VjdDEgaWQ9InN1YnN5c3RlbV9kZXNpZ24iPgorICAgICAgPHRpdGxlPkRlc2lnbiBvZiB0aGUgTGludXggU0NTSSBzdWJzeXN0ZW08L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBTQ1NJIHN1YnN5c3RlbSB1c2VzIGEgdGhyZWUgbGF5ZXIgZGVzaWduLCB3aXRoIHVwcGVyLCBtaWQsIGFuZCBsb3cKKyAgICAgICAgbGF5ZXJzLiAgRXZlcnkgb3BlcmF0aW9uIGludm9sdmluZyB0aGUgU0NTSSBzdWJzeXN0ZW0gKHN1Y2ggYXMgcmVhZGluZworICAgICAgICBhIHNlY3RvciBmcm9tIGEgZGlzaykgdXNlcyBvbmUgZHJpdmVyIGF0IGVhY2ggb2YgdGhlIDMgbGV2ZWxzOiBvbmUKKyAgICAgICAgdXBwZXIgbGF5ZXIgZHJpdmVyLCBvbmUgbG93ZXIgbGF5ZXIgZHJpdmVyLCBhbmQgdGhlIFNDU0kgbWlkbGF5ZXIuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIFNDU0kgdXBwZXIgbGF5ZXIgcHJvdmlkZXMgdGhlIGludGVyZmFjZSBiZXR3ZWVuIHVzZXJzcGFjZSBhbmQgdGhlCisgICAgICAgIGtlcm5lbCwgaW4gdGhlIGZvcm0gb2YgYmxvY2sgYW5kIGNoYXIgZGV2aWNlIG5vZGVzIGZvciBJL08gYW5kCisgICAgICAgIGlvY3RsKCkuICBUaGUgU0NTSSBsb3dlciBsYXllciBjb250YWlucyBkcml2ZXJzIGZvciBzcGVjaWZpYyBoYXJkd2FyZQorICAgICAgICBkZXZpY2VzLgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgIEluIGJldHdlZW4gaXMgdGhlIFNDU0kgbWlkLWxheWVyLCBhbmFsb2dvdXMgdG8gYSBuZXR3b3JrIHJvdXRpbmcKKyAgICAgICAgbGF5ZXIgc3VjaCBhcyB0aGUgSVB2NCBzdGFjay4gIFRoZSBTQ1NJIG1pZC1sYXllciByb3V0ZXMgYSBwYWNrZXQKKyAgICAgICAgYmFzZWQgZGF0YSBwcm90b2NvbCBiZXR3ZWVuIHRoZSB1cHBlciBsYXllcidzIC9kZXYgbm9kZXMgYW5kIHRoZQorICAgICAgICBjb3JyZXNwb25kaW5nIGRldmljZXMgaW4gdGhlIGxvd2VyIGxheWVyLiAgSXQgbWFuYWdlcyBjb21tYW5kIHF1ZXVlcywKKyAgICAgICAgcHJvdmlkZXMgZXJyb3IgaGFuZGxpbmcgYW5kIHBvd2VyIG1hbmFnZW1lbnQgZnVuY3Rpb25zLCBhbmQgcmVzcG9uZHMKKyAgICAgICAgdG8gaW9jdGwoKSByZXF1ZXN0cy4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9InVwcGVyX2xheWVyIj4KKyAgICA8dGl0bGU+U0NTSSB1cHBlciBsYXllcjwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICBUaGUgdXBwZXIgbGF5ZXIgc3VwcG9ydHMgdGhlIHVzZXIta2VybmVsIGludGVyZmFjZSBieSBwcm92aWRpbmcKKyAgICAgIGRldmljZSBub2Rlcy4KKyAgICA8L3BhcmE+CisgICAgPHNlY3QxIGlkPSJzZCI+CisgICAgICA8dGl0bGU+c2QgKFNDU0kgRGlzayk8L3RpdGxlPgorICAgICAgPHBhcmE+c2QgKHNkX21vZC5vKTwvcGFyYT4KKzwhLS0gIUlkcml2ZXJzL3Njc2kvc2QuYyAtLT4KKyAgICA8L3NlY3QxPgorICAgIDxzZWN0MSBpZD0ic3IiPgorICAgICAgPHRpdGxlPnNyIChTQ1NJIENELVJPTSk8L3RpdGxlPgorICAgICAgPHBhcmE+c3IgKHNyX21vZC5vKTwvcGFyYT4KKyAgICA8L3NlY3QxPgorICAgIDxzZWN0MSBpZD0ic3QiPgorICAgICAgPHRpdGxlPnN0IChTQ1NJIFRhcGUpPC90aXRsZT4KKyAgICAgIDxwYXJhPnN0IChzdC5vKTwvcGFyYT4KKyAgICA8L3NlY3QxPgorICAgIDxzZWN0MSBpZD0ic2ciPgorICAgICAgPHRpdGxlPnNnIChTQ1NJIEdlbmVyaWMpPC90aXRsZT4KKyAgICAgIDxwYXJhPnNnIChzZy5vKTwvcGFyYT4KKyAgICA8L3NlY3QxPgorICAgIDxzZWN0MSBpZD0iY2giPgorICAgICAgPHRpdGxlPmNoIChTQ1NJIE1lZGlhIENoYW5nZXIpPC90aXRsZT4KKyAgICAgIDxwYXJhPmNoIChjaC5jKTwvcGFyYT4KKyAgICA8L3NlY3QxPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9Im1pZF9sYXllciI+CisgICAgPHRpdGxlPlNDU0kgbWlkIGxheWVyPC90aXRsZT4KKworICAgIDxzZWN0MSBpZD0ibWlkbGF5ZXJfaW1wbGVtZW50YXRpb24iPgorICAgICAgPHRpdGxlPlNDU0kgbWlkbGF5ZXIgaW1wbGVtZW50YXRpb248L3RpdGxlPgorICAgICAgPHNlY3QyIGlkPSJzY3NpX2RldmljZS5oIj4KKyAgICAgICAgPHRpdGxlPmluY2x1ZGUvc2NzaS9zY3NpX2RldmljZS5oPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgIDwvcGFyYT4KKyFJaW5jbHVkZS9zY3NpL3Njc2lfZGV2aWNlLmgKKyAgICAgIDwvc2VjdDI+CisKKyAgICAgIDxzZWN0MiBpZD0ic2NzaS5jIj4KKyAgICAgICAgPHRpdGxlPmRyaXZlcnMvc2NzaS9zY3NpLmM8L3RpdGxlPgorICAgICAgICA8cGFyYT5NYWluIGZpbGUgZm9yIHRoZSBTQ1NJIG1pZGxheWVyLjwvcGFyYT4KKyFFZHJpdmVycy9zY3NpL3Njc2kuYworICAgICAgPC9zZWN0Mj4KKyAgICAgIDxzZWN0MiBpZD0ic2NzaWNhbS5jIj4KKyAgICAgICAgPHRpdGxlPmRyaXZlcnMvc2NzaS9zY3NpY2FtLmM8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vd3d3LnQxMC5vcmcvZnRwL3QxMC9kcmFmdHMvY2FtL2NhbS1yMTJiLnBkZic+U0NTSQorICAgICAgICAgIENvbW1vbiBBY2Nlc3MgTWV0aG9kPC91bGluaz4gc3VwcG9ydCBmdW5jdGlvbnMsIGZvciB1c2Ugd2l0aAorICAgICAgICAgIEhESU9fR0VUR0VPLCBldGMuCisgICAgICAgIDwvcGFyYT4KKyFFZHJpdmVycy9zY3NpL3Njc2ljYW0uYworICAgICAgPC9zZWN0Mj4KKyAgICAgIDxzZWN0MiBpZD0ic2NzaV9lcnJvci5jIj4KKyAgICAgICAgPHRpdGxlPmRyaXZlcnMvc2NzaS9zY3NpX2Vycm9yLmM8L3RpdGxlPgorICAgICAgICA8cGFyYT5Db21tb24gU0NTSSBlcnJvci90aW1lb3V0IGhhbmRsaW5nIHJvdXRpbmVzLjwvcGFyYT4KKyFFZHJpdmVycy9zY3NpL3Njc2lfZXJyb3IuYworICAgICAgPC9zZWN0Mj4KKyAgICAgIDxzZWN0MiBpZD0ic2NzaV9kZXZpbmZvLmMiPgorICAgICAgICA8dGl0bGU+ZHJpdmVycy9zY3NpL3Njc2lfZGV2aW5mby5jPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgTWFuYWdlIHNjc2lfZGV2X2luZm9fbGlzdCwgd2hpY2ggdHJhY2tzIGJsYWNrbGlzdGVkIGFuZCB3aGl0ZWxpc3RlZAorICAgICAgICAgIGRldmljZXMuCisgICAgICAgIDwvcGFyYT4KKyFJZHJpdmVycy9zY3NpL3Njc2lfZGV2aW5mby5jCisgICAgICA8L3NlY3QyPgorICAgICAgPHNlY3QyIGlkPSJzY3NpX2lvY3RsLmMiPgorICAgICAgICA8dGl0bGU+ZHJpdmVycy9zY3NpL3Njc2lfaW9jdGwuYzwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEhhbmRsZSBpb2N0bCgpIGNhbGxzIGZvciBTQ1NJIGRldmljZXMuCisgICAgICAgIDwvcGFyYT4KKyFFZHJpdmVycy9zY3NpL3Njc2lfaW9jdGwuYworICAgICAgPC9zZWN0Mj4KKyAgICAgIDxzZWN0MiBpZD0ic2NzaV9saWIuYyI+CisgICAgICAgIDx0aXRsZT5kcml2ZXJzL3Njc2kvc2NzaV9saWIuYzwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFNDU0kgcXVldWluZyBsaWJyYXJ5LgorICAgICAgICA8L3BhcmE+CishRWRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jCisgICAgICA8L3NlY3QyPgorICAgICAgPHNlY3QyIGlkPSJzY3NpX2xpYl9kbWEuYyI+CisgICAgICAgIDx0aXRsZT5kcml2ZXJzL3Njc2kvc2NzaV9saWJfZG1hLmM8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBTQ1NJIGxpYnJhcnkgZnVuY3Rpb25zIGRlcGVuZGluZyBvbiBETUEKKyAgICAgICAgICAobWFwIGFuZCB1bm1hcCBzY2F0dGVyLWdhdGhlciBsaXN0cykuCisgICAgICAgIDwvcGFyYT4KKyFFZHJpdmVycy9zY3NpL3Njc2lfbGliX2RtYS5jCisgICAgICA8L3NlY3QyPgorICAgICAgPHNlY3QyIGlkPSJzY3NpX21vZHVsZS5jIj4KKyAgICAgICAgPHRpdGxlPmRyaXZlcnMvc2NzaS9zY3NpX21vZHVsZS5jPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIGZpbGUgZHJpdmVycy9zY3NpL3Njc2lfbW9kdWxlLmMgY29udGFpbnMgbGVnYWN5IHN1cHBvcnQgZm9yCisgICAgICAgICAgb2xkLXN0eWxlIGhvc3QgdGVtcGxhdGVzLiAgSXQgc2hvdWxkIG5ldmVyIGJlIHVzZWQgYnkgYW55IG5ldyBkcml2ZXIuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdDI+CisgICAgICA8c2VjdDIgaWQ9InNjc2lfcHJvYy5jIj4KKyAgICAgICAgPHRpdGxlPmRyaXZlcnMvc2NzaS9zY3NpX3Byb2MuYzwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIHByb3ZpZGUgYW4gaW50ZXJmYWNlIGJldHdlZW4KKyAgICAgICAgICB0aGUgUFJPQyBmaWxlIHN5c3RlbSBhbmQgdGhlIFNDU0kgZGV2aWNlIGRyaXZlcnMKKyAgICAgICAgICBJdCBpcyBtYWlubHkgdXNlZCBmb3IgZGVidWdnaW5nLCBzdGF0aXN0aWNzIGFuZCB0byBwYXNzCisgICAgICAgICAgaW5mb3JtYXRpb24gZGlyZWN0bHkgdG8gdGhlIGxvd2xldmVsIGRyaXZlci4KKworICAgICAgICAgIEkuRS4gcGx1bWJpbmcgdG8gbWFuYWdlIC9wcm9jL3Njc2kvKgorICAgICAgICA8L3BhcmE+CishSWRyaXZlcnMvc2NzaS9zY3NpX3Byb2MuYworICAgICAgPC9zZWN0Mj4KKyAgICAgIDxzZWN0MiBpZD0ic2NzaV9uZXRsaW5rLmMiPgorICAgICAgICA8dGl0bGU+ZHJpdmVycy9zY3NpL3Njc2lfbmV0bGluay5jPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgSW5mcmFzdHJ1Y3R1cmUgdG8gcHJvdmlkZSBhc3luYyBldmVudHMgZnJvbSB0cmFuc3BvcnRzIHRvIHVzZXJzcGFjZQorICAgICAgICAgIHZpYSBuZXRsaW5rLCB1c2luZyBhIHNpbmdsZSBORVRMSU5LX1NDU0lUUkFOU1BPUlQgcHJvdG9jb2wgZm9yIGFsbAorICAgICAgICAgIHRyYW5zcG9ydHMuCisKKyAgICAgICAgICBTZWUgPHVsaW5rIHVybD0naHR0cDovL21hcmMuaW5mby8/bD1saW51eC1zY3NpJmFtcDttPTExNTUwNzM3NDgzMjUwMCZhbXA7dz0yJz50aGUKKyAgICAgICAgICBvcmlnaW5hbCBwYXRjaCBzdWJtaXNzaW9uPC91bGluaz4gZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgICAgPC9wYXJhPgorIUlkcml2ZXJzL3Njc2kvc2NzaV9uZXRsaW5rLmMKKyAgICAgIDwvc2VjdDI+CisgICAgICA8c2VjdDIgaWQ9InNjc2lfc2Nhbi5jIj4KKyAgICAgICAgPHRpdGxlPmRyaXZlcnMvc2NzaS9zY3NpX3NjYW4uYzwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFNjYW4gYSBob3N0IHRvIGRldGVybWluZSB3aGljaCAoaWYgYW55KSBkZXZpY2VzIGFyZSBhdHRhY2hlZC4KKworICAgICAgICAgIFRoZSBnZW5lcmFsIHNjYW5uaW5nL3Byb2JpbmcgYWxnb3JpdGhtIGlzIGFzIGZvbGxvd3MsIGV4Y2VwdGlvbnMgYXJlCisgICAgICAgICAgbWFkZSB0byBpdCBkZXBlbmRpbmcgb24gZGV2aWNlIHNwZWNpZmljIGZsYWdzLCBjb21waWxhdGlvbiBvcHRpb25zLAorICAgICAgICAgIGFuZCBnbG9iYWwgdmFyaWFibGUgKGJvb3Qgb3IgbW9kdWxlIGxvYWQgdGltZSkgc2V0dGluZ3MuCisKKyAgICAgICAgICBBIHNwZWNpZmljIExVTiBpcyBzY2FubmVkIHZpYSBhbiBJTlFVSVJZIGNvbW1hbmQ7IGlmIHRoZSBMVU4gaGFzIGEKKyAgICAgICAgICBkZXZpY2UgYXR0YWNoZWQsIGEgc2NzaV9kZXZpY2UgaXMgYWxsb2NhdGVkIGFuZCBzZXR1cCBmb3IgaXQuCisKKyAgICAgICAgICBGb3IgZXZlcnkgaWQgb2YgZXZlcnkgY2hhbm5lbCBvbiB0aGUgZ2l2ZW4gaG9zdCwgc3RhcnQgYnkgc2Nhbm5pbmcKKyAgICAgICAgICBMVU4gMC4gIFNraXAgaG9zdHMgdGhhdCBkb24ndCByZXNwb25kIGF0IGFsbCB0byBhIHNjYW4gb2YgTFVOIDAuCisgICAgICAgICAgT3RoZXJ3aXNlLCBpZiBMVU4gMCBoYXMgYSBkZXZpY2UgYXR0YWNoZWQsIGFsbG9jYXRlIGFuZCBzZXR1cCBhCisgICAgICAgICAgc2NzaV9kZXZpY2UgZm9yIGl0LiAgSWYgdGFyZ2V0IGlzIFNDU0ktMyBvciB1cCwgaXNzdWUgYSBSRVBPUlQgTFVOLAorICAgICAgICAgIGFuZCBzY2FuIGFsbCBvZiB0aGUgTFVOcyByZXR1cm5lZCBieSB0aGUgUkVQT1JUIExVTjsgZWxzZSwKKyAgICAgICAgICBzZXF1ZW50aWFsbHkgc2NhbiBMVU5zIHVwIHVudGlsIHNvbWUgbWF4aW11bSBpcyByZWFjaGVkLCBvciBhIExVTiBpcworICAgICAgICAgIHNlZW4gdGhhdCBjYW5ub3QgaGF2ZSBhIGRldmljZSBhdHRhY2hlZCB0byBpdC4KKyAgICAgICAgPC9wYXJhPgorIUlkcml2ZXJzL3Njc2kvc2NzaV9zY2FuLmMKKyAgICAgIDwvc2VjdDI+CisgICAgICA8c2VjdDIgaWQ9InNjc2lfc3lzY3RsLmMiPgorICAgICAgICA8dGl0bGU+ZHJpdmVycy9zY3NpL3Njc2lfc3lzY3RsLmM8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBTZXQgdXAgdGhlIHN5c2N0bCBlbnRyeTogIi9kZXYvc2NzaS9sb2dnaW5nX2xldmVsIgorICAgICAgICAgIChERVZfU0NTSV9MT0dHSU5HX0xFVkVMKSB3aGljaCBzZXRzL3JldHVybnMgc2NzaV9sb2dnaW5nX2xldmVsLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3QyPgorICAgICAgPHNlY3QyIGlkPSJzY3NpX3N5c2ZzLmMiPgorICAgICAgICA8dGl0bGU+ZHJpdmVycy9zY3NpL3Njc2lfc3lzZnMuYzwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFNDU0kgc3lzZnMgaW50ZXJmYWNlIHJvdXRpbmVzLgorICAgICAgICA8L3BhcmE+CishRWRyaXZlcnMvc2NzaS9zY3NpX3N5c2ZzLmMKKyAgICAgIDwvc2VjdDI+CisgICAgICA8c2VjdDIgaWQ9Imhvc3RzLmMiPgorICAgICAgICA8dGl0bGU+ZHJpdmVycy9zY3NpL2hvc3RzLmM8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBtaWQgdG8gbG93bGV2ZWwgU0NTSSBkcml2ZXIgaW50ZXJmYWNlCisgICAgICAgIDwvcGFyYT4KKyFFZHJpdmVycy9zY3NpL2hvc3RzLmMKKyAgICAgIDwvc2VjdDI+CisgICAgICA8c2VjdDIgaWQ9ImNvbnN0YW50cy5jIj4KKyAgICAgICAgPHRpdGxlPmRyaXZlcnMvc2NzaS9jb25zdGFudHMuYzwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIG1pZCB0byBsb3dsZXZlbCBTQ1NJIGRyaXZlciBpbnRlcmZhY2UKKyAgICAgICAgPC9wYXJhPgorIUVkcml2ZXJzL3Njc2kvY29uc3RhbnRzLmMKKyAgICAgIDwvc2VjdDI+CisgICAgPC9zZWN0MT4KKworICAgIDxzZWN0MSBpZD0iVHJhbnNwb3J0X2NsYXNzZXMiPgorICAgICAgPHRpdGxlPlRyYW5zcG9ydCBjbGFzc2VzPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUcmFuc3BvcnQgY2xhc3NlcyBhcmUgc2VydmljZSBsaWJyYXJpZXMgZm9yIGRyaXZlcnMgaW4gdGhlIFNDU0kKKyAgICAgICAgbG93ZXIgbGF5ZXIsIHdoaWNoIGV4cG9zZSB0cmFuc3BvcnQgYXR0cmlidXRlcyBpbiBzeXNmcy4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxzZWN0MiBpZD0iRmlicmVfQ2hhbm5lbF90cmFuc3BvcnQiPgorICAgICAgICA8dGl0bGU+RmlicmUgQ2hhbm5lbCB0cmFuc3BvcnQ8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgZmlsZSBkcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfZmMuYyBkZWZpbmVzIHRyYW5zcG9ydCBhdHRyaWJ1dGVzCisgICAgICAgICAgZm9yIEZpYnJlIENoYW5uZWwuCisgICAgICAgIDwvcGFyYT4KKyFFZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X2ZjLmMKKyAgICAgIDwvc2VjdDI+CisgICAgICA8c2VjdDIgaWQ9ImlTQ1NJX3RyYW5zcG9ydCI+CisgICAgICAgIDx0aXRsZT5pU0NTSSB0cmFuc3BvcnQgY2xhc3M8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgZmlsZSBkcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfaXNjc2kuYyBkZWZpbmVzIHRyYW5zcG9ydAorICAgICAgICAgIGF0dHJpYnV0ZXMgZm9yIHRoZSBpU0NTSSBjbGFzcywgd2hpY2ggc2VuZHMgU0NTSSBwYWNrZXRzIG92ZXIgVENQL0lQCisgICAgICAgICAgY29ubmVjdGlvbnMuCisgICAgICAgIDwvcGFyYT4KKyFFZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X2lzY3NpLmMKKyAgICAgIDwvc2VjdDI+CisgICAgICA8c2VjdDIgaWQ9IlNBU190cmFuc3BvcnQiPgorICAgICAgICA8dGl0bGU+U2VyaWFsIEF0dGFjaGVkIFNDU0kgKFNBUykgdHJhbnNwb3J0IGNsYXNzPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIGZpbGUgZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3Nhcy5jIGRlZmluZXMgdHJhbnNwb3J0CisgICAgICAgICAgYXR0cmlidXRlcyBmb3IgU2VyaWFsIEF0dGFjaGVkIFNDU0ksIGEgdmFyaWFudCBvZiBTQVRBIGFpbWVkIGF0CisgICAgICAgICAgbGFyZ2UgaGlnaC1lbmQgc3lzdGVtcy4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgU0FTIHRyYW5zcG9ydCBjbGFzcyBjb250YWlucyBjb21tb24gY29kZSB0byBkZWFsIHdpdGggU0FTIEhCQXMsCisgICAgICAgICAgYW4gYXByb3hpbWF0ZWQgcmVwcmVzZW50YXRpb24gb2YgU0FTIHRvcG9sb2dpZXMgaW4gdGhlIGRyaXZlciBtb2RlbCwKKyAgICAgICAgICBhbmQgdmFyaW91cyBzeXNmcyBhdHRyaWJ1dGVzIHRvIGV4cG9zZSB0aGVzZSB0b3BvbG9naWVzIGFuZCBtYW5hZ2VtZW50CisgICAgICAgICAgaW50ZXJmYWNlcyB0byB1c2Vyc3BhY2UuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhlIGJhc2ljIFNDU0kgY29yZSBvYmplY3RzIHRoaXMgdHJhbnNwb3J0IGNsYXNzCisgICAgICAgICAgaW50cm9kdWNlcyB0d28gYWRkaXRpb25hbCBpbnRlcm1lZGlhdGUgb2JqZWN0czogIFRoZSBTQVMgUEhZCisgICAgICAgICAgYXMgcmVwcmVzZW50ZWQgYnkgc3RydWN0IHNhc19waHkgZGVmaW5lcyBhbiAib3V0Z29pbmciIFBIWSBvbgorICAgICAgICAgIGEgU0FTIEhCQSBvciBFeHBhbmRlciwgYW5kIHRoZSBTQVMgcmVtb3RlIFBIWSByZXByZXNlbnRlZCBieQorICAgICAgICAgIHN0cnVjdCBzYXNfcnBoeSBkZWZpbmVzIGFuICJpbmNvbWluZyIgUEhZIG9uIGEgU0FTIEV4cGFuZGVyIG9yCisgICAgICAgICAgZW5kIGRldmljZS4gIE5vdGUgdGhhdCB0aGlzIGlzIHB1cmVseSBhIHNvZnR3YXJlIGNvbmNlcHQsIHRoZQorICAgICAgICAgIHVuZGVybHlpbmcgaGFyZHdhcmUgZm9yIGEgUEhZIGFuZCBhIHJlbW90ZSBQSFkgaXMgdGhlIGV4YWN0bHkKKyAgICAgICAgICB0aGUgc2FtZS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGVyZSBpcyBubyBjb25jZXB0IG9mIGEgU0FTIHBvcnQgaW4gdGhpcyBjb2RlLCB1c2VycyBjYW4gc2VlCisgICAgICAgICAgd2hhdCBQSFlzIGZvcm0gYSB3aWRlIHBvcnQgYmFzZWQgb24gdGhlIHBvcnRfaWRlbnRpZmllciBhdHRyaWJ1dGUsCisgICAgICAgICAgd2hpY2ggaXMgdGhlIHNhbWUgZm9yIGFsbCBQSFlzIGluIGEgcG9ydC4KKyAgICAgICAgPC9wYXJhPgorIUVkcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc2FzLmMKKyAgICAgIDwvc2VjdDI+CisgICAgICA8c2VjdDIgaWQ9IlNBVEFfdHJhbnNwb3J0Ij4KKyAgICAgICAgPHRpdGxlPlNBVEEgdHJhbnNwb3J0IGNsYXNzPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIFNBVEEgdHJhbnNwb3J0IGlzIGhhbmRsZWQgYnkgbGliYXRhLCB3aGljaCBoYXMgaXRzIG93biBib29rIG9mCisgICAgICAgICAgZG9jdW1lbnRhdGlvbiBpbiB0aGlzIGRpcmVjdG9yeS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0Mj4KKyAgICAgIDxzZWN0MiBpZD0iU1BJX3RyYW5zcG9ydCI+CisgICAgICAgIDx0aXRsZT5QYXJhbGxlbCBTQ1NJIChTUEkpIHRyYW5zcG9ydCBjbGFzczwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBmaWxlIGRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcGkuYyBkZWZpbmVzIHRyYW5zcG9ydAorICAgICAgICAgIGF0dHJpYnV0ZXMgZm9yIHRyYWRpdGlvbmFsIChmYXN0L3dpZGUvdWx0cmEpIFNDU0kgYnVzc2VzLgorICAgICAgICA8L3BhcmE+CishRWRyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9zcGkuYworICAgICAgPC9zZWN0Mj4KKyAgICAgIDxzZWN0MiBpZD0iU1JQX3RyYW5zcG9ydCI+CisgICAgICAgIDx0aXRsZT5TQ1NJIFJETUEgKFNSUCkgdHJhbnNwb3J0IGNsYXNzPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIGZpbGUgZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC5jIGRlZmluZXMgdHJhbnNwb3J0CisgICAgICAgICAgYXR0cmlidXRlcyBmb3IgU0NTSSBvdmVyIFJlbW90ZSBEaXJlY3QgTWVtb3J5IEFjY2Vzcy4KKyAgICAgICAgPC9wYXJhPgorIUVkcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwLmMKKyAgICAgIDwvc2VjdDI+CisgICAgPC9zZWN0MT4KKworICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9Imxvd2VyX2xheWVyIj4KKyAgICA8dGl0bGU+U0NTSSBsb3dlciBsYXllcjwvdGl0bGU+CisgICAgPHNlY3QxIGlkPSJoYmFfZHJpdmVycyI+CisgICAgICA8dGl0bGU+SG9zdCBCdXMgQWRhcHRlciB0cmFuc3BvcnQgdHlwZXM8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIE1hbnkgbW9kZXJuIGRldmljZSBjb250cm9sbGVycyB1c2UgdGhlIFNDU0kgY29tbWFuZCBzZXQgYXMgYSBwcm90b2NvbCB0bworICAgICAgICBjb21tdW5pY2F0ZSB3aXRoIHRoZWlyIGRldmljZXMgdGhyb3VnaCBtYW55IGRpZmZlcmVudCB0eXBlcyBvZiBwaHlzaWNhbAorICAgICAgICBjb25uZWN0aW9ucy4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgICBJbiBTQ1NJIGxhbmd1YWdlIGEgYnVzIGNhcGFibGUgb2YgY2FycnlpbmcgU0NTSSBjb21tYW5kcyBpcworICAgICAgICBjYWxsZWQgYSAidHJhbnNwb3J0IiwgYW5kIGEgY29udHJvbGxlciBjb25uZWN0aW5nIHRvIHN1Y2ggYSBidXMgaXMKKyAgICAgICAgY2FsbGVkIGEgImhvc3QgYnVzIGFkYXB0ZXIiIChIQkEpLgorICAgICAgPC9wYXJhPgorICAgICAgPHNlY3QyIGlkPSJzY3NpX2RlYnVnLmMiPgorICAgICAgICA8dGl0bGU+RGVidWcgdHJhbnNwb3J0PC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIGZpbGUgZHJpdmVycy9zY3NpL3Njc2lfZGVidWcuYyBzaW11bGF0ZXMgYSBob3N0IGFkYXB0ZXIgd2l0aCBhCisgICAgICAgICAgdmFyaWFibGUgbnVtYmVyIG9mIGRpc2tzIChvciBkaXNrIGxpa2UgZGV2aWNlcykgYXR0YWNoZWQsIHNoYXJpbmcgYQorICAgICAgICAgIGNvbW1vbiBhbW91bnQgb2YgUkFNLiAgRG9lcyBhIGxvdCBvZiBjaGVja2luZyB0byBtYWtlIHN1cmUgdGhhdCB3ZSBhcmUKKyAgICAgICAgICBub3QgZ2V0dGluZyBibG9ja3MgbWl4ZWQgdXAsIGFuZCBwYW5pY3MgdGhlIGtlcm5lbCBpZiBhbnl0aGluZyBvdXQgb2YKKyAgICAgICAgICB0aGUgb3JkaW5hcnkgaXMgc2Vlbi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUbyBiZSBtb3JlIHJlYWxpc3RpYywgdGhlIHNpbXVsYXRlZCBkZXZpY2VzIGhhdmUgdGhlIHRyYW5zcG9ydAorICAgICAgICAgIGF0dHJpYnV0ZXMgb2YgU0FTIGRpc2tzLgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEZvciBkb2N1bWVudGF0aW9uIHNlZQorICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9zZy5kYW5ueS5jei9zZy9zZGVidWcyNi5odG1sJz5odHRwOi8vc2cuZGFubnkuY3ovc2cvc2RlYnVnMjYuaHRtbDwvdWxpbms+CisgICAgICAgIDwvcGFyYT4KKzwhLS0gIUVkcml2ZXJzL3Njc2kvc2NzaV9kZWJ1Zy5jIC0tPgorICAgICAgPC9zZWN0Mj4KKyAgICAgIDxzZWN0MiBpZD0idG9kbyI+CisgICAgICAgIDx0aXRsZT50b2RvPC90aXRsZT4KKyAgICAgICAgPHBhcmE+UGFyYWxsZWwgKGZhc3Qvd2lkZS91bHRyYSkgU0NTSSwgVVNCLCBTQVRBLAorICAgICAgICBTQVMsIEZpYnJlIENoYW5uZWwsIEZpcmVXaXJlLCBBVEFQSSBkZXZpY2VzLCBJbmZpbmliYW5kLAorICAgICAgICBJMjAsIGlTQ1NJLCBQYXJhbGxlbCBwb3J0cywgbmV0bGluay4uLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3QyPgorICAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKzwvYm9vaz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9zaC50bXBsIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3NoLnRtcGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGEzOGY2MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9zaC50bXBsCkBAIC0wLDAgKzEsMTA1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIGJvb2sgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjEuMi8vRU4iCisJImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4xLjIvZG9jYm9va3guZHRkIiBbXT4KKworPGJvb2sgaWQ9InNoLWRyaXZlcnMiPgorIDxib29raW5mbz4KKyAgPHRpdGxlPlN1cGVySCBJbnRlcmZhY2VzIEd1aWRlPC90aXRsZT4KKyAgCisgIDxhdXRob3Jncm91cD4KKyAgIDxhdXRob3I+CisgICAgPGZpcnN0bmFtZT5QYXVsPC9maXJzdG5hbWU+CisgICAgPHN1cm5hbWU+TXVuZHQ8L3N1cm5hbWU+CisgICAgPGFmZmlsaWF0aW9uPgorICAgICA8YWRkcmVzcz4KKyAgICAgIDxlbWFpbD5sZXRoYWxAbGludXgtc2gub3JnPC9lbWFpbD4KKyAgICAgPC9hZGRyZXNzPgorICAgIDwvYWZmaWxpYXRpb24+CisgICA8L2F1dGhvcj4KKyAgPC9hdXRob3Jncm91cD4KKworICA8Y29weXJpZ2h0PgorICAgPHllYXI+MjAwOC0yMDEwPC95ZWFyPgorICAgPGhvbGRlcj5QYXVsIE11bmR0PC9ob2xkZXI+CisgIDwvY29weXJpZ2h0PgorICA8Y29weXJpZ2h0PgorICAgPHllYXI+MjAwOC0yMDEwPC95ZWFyPgorICAgPGhvbGRlcj5SZW5lc2FzIFRlY2hub2xvZ3kgQ29ycC48L2hvbGRlcj4KKyAgPC9jb3B5cmlnaHQ+CisgIDxjb3B5cmlnaHQ+CisgICA8eWVhcj4yMDEwPC95ZWFyPgorICAgPGhvbGRlcj5SZW5lc2FzIEVsZWN0cm9uaWNzIENvcnAuPC9ob2xkZXI+CisgIDwvY29weXJpZ2h0PgorCisgIDxsZWdhbG5vdGljZT4KKyAgIDxwYXJhPgorICAgICBUaGlzIGRvY3VtZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUKKyAgICAgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICAgICBMaWNlbnNlIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAgIDwvcGFyYT4KKyAgICAgIAorICAgPHBhcmE+CisgICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKyAgICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAorICAgICB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisgICAgIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAgIDwvcGFyYT4KKyAgICAgIAorICAgPHBhcmE+CisgICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICAgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgICAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgICAgIE1BIDAyMTExLTEzMDcgVVNBCisgICA8L3BhcmE+CisgICAgICAKKyAgIDxwYXJhPgorICAgICBGb3IgbW9yZSBkZXRhaWxzIHNlZSB0aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBzb3VyY2UKKyAgICAgZGlzdHJpYnV0aW9uIG9mIExpbnV4LgorICAgPC9wYXJhPgorICA8L2xlZ2Fsbm90aWNlPgorIDwvYm9va2luZm8+CisKKzx0b2M+PC90b2M+CisKKyAgPGNoYXB0ZXIgaWQ9Im1tIj4KKyAgICA8dGl0bGU+TWVtb3J5IE1hbmFnZW1lbnQ8L3RpdGxlPgorICAgIDxzZWN0MSBpZD0ic2g0Ij4KKyAgICA8dGl0bGU+U0gtNDwvdGl0bGU+CisgICAgICA8c2VjdDIgaWQ9InNxIj4KKyAgICAgICAgPHRpdGxlPlN0b3JlIFF1ZXVlIEFQSTwvdGl0bGU+CishRWFyY2gvc2gva2VybmVsL2NwdS9zaDQvc3EuYworICAgICAgPC9zZWN0Mj4KKyAgICA8L3NlY3QxPgorICAgIDxzZWN0MSBpZD0ic2g1Ij4KKyAgICAgIDx0aXRsZT5TSC01PC90aXRsZT4KKyAgICAgIDxzZWN0MiBpZD0idGxiIj4KKwk8dGl0bGU+VExCIEludGVyZmFjZXM8L3RpdGxlPgorIUlhcmNoL3NoL21tL3RsYi1zaDUuYworIUlhcmNoL3NoL2luY2x1ZGUvYXNtL3RsYl82NC5oCisgICAgICA8L3NlY3QyPgorICAgIDwvc2VjdDE+CisgIDwvY2hhcHRlcj4KKyAgPGNoYXB0ZXIgaWQ9Im1hY2giPgorICAgIDx0aXRsZT5NYWNoaW5lIFNwZWNpZmljIEludGVyZmFjZXM8L3RpdGxlPgorICAgIDxzZWN0MSBpZD0iZHJlYW1jYXN0Ij4KKyAgICAgIDx0aXRsZT5tYWNoLWRyZWFtY2FzdDwvdGl0bGU+CishSWFyY2gvc2gvYm9hcmRzL21hY2gtZHJlYW1jYXN0L3J0Yy5jCisgICAgPC9zZWN0MT4KKyAgICA8c2VjdDEgaWQ9IngzcHJvdG8iPgorICAgICAgPHRpdGxlPm1hY2gteDNwcm90bzwvdGl0bGU+CishRWFyY2gvc2gvYm9hcmRzL21hY2gteDNwcm90by9pbHNlbC5jCisgICAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorICA8Y2hhcHRlciBpZD0iYnVzc2VzIj4KKyAgICA8dGl0bGU+QnVzc2VzPC90aXRsZT4KKyAgICA8c2VjdDEgaWQ9InN1cGVyaHl3YXkiPgorICAgICAgPHRpdGxlPlN1cGVySHl3YXk8L3RpdGxlPgorIUVkcml2ZXJzL3NoL3N1cGVyaHl3YXkvc3VwZXJoeXdheS5jCisgICAgPC9zZWN0MT4KKworICAgIDxzZWN0MSBpZD0ibWFwbGUiPgorICAgICAgPHRpdGxlPk1hcGxlPC90aXRsZT4KKyFFZHJpdmVycy9zaC9tYXBsZS9tYXBsZS5jCisgICAgPC9zZWN0MT4KKyAgPC9jaGFwdGVyPgorPC9ib29rPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3N0eWxlc2hlZXQueHNsIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3N0eWxlc2hlZXQueHNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiZjRlY2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svc3R5bGVzaGVldC54c2wKQEAgLTAsMCArMSwxMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxzdHlsZXNoZWV0IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iIHZlcnNpb249IjEuMCI+Cis8cGFyYW0gbmFtZT0iY2h1bmsucXVpZXRseSI+MTwvcGFyYW0+Cis8cGFyYW0gbmFtZT0iZnVuY3N5bm9wc2lzLnN0eWxlIj5hbnNpPC9wYXJhbT4KKzxwYXJhbSBuYW1lPSJmdW5jc3lub3BzaXMudGFidWxhci50aHJlc2hvbGQiPjgwPC9wYXJhbT4KKzxwYXJhbSBuYW1lPSJjYWxsb3V0LmdyYXBoaWNzIj4wPC9wYXJhbT4KKzwhLS0gPHBhcmFtIG5hbWU9InBhcGVyLnR5cGUiPkE0PC9wYXJhbT4gLS0+Cis8cGFyYW0gbmFtZT0iZ2VuZXJhdGUuY29uc2lzdGVudC5pZHMiPjE8L3BhcmFtPgorPHBhcmFtIG5hbWU9ImdlbmVyYXRlLnNlY3Rpb24udG9jLmxldmVsIj4yPC9wYXJhbT4KKzxwYXJhbSBuYW1lPSJ1c2UuaWQuYXMuZmlsZW5hbWUiPjE8L3BhcmFtPgorPC9zdHlsZXNoZWV0PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3RyYWNlcG9pbnQudG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay90cmFjZXBvaW50LnRtcGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU3YTllZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay90cmFjZXBvaW50LnRtcGwKQEAgLTAsMCArMSwxMTIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMS4yLy9FTiIKKwkiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQiIFtdPgorCis8Ym9vayBpZD0iVHJhY2Vwb2ludHMiPgorIDxib29raW5mbz4KKyAgPHRpdGxlPlRoZSBMaW51eCBLZXJuZWwgVHJhY2Vwb2ludCBBUEk8L3RpdGxlPgorCisgIDxhdXRob3Jncm91cD4KKyAgIDxhdXRob3I+CisgICAgPGZpcnN0bmFtZT5KYXNvbjwvZmlyc3RuYW1lPgorICAgIDxzdXJuYW1lPkJhcm9uPC9zdXJuYW1lPgorICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgPGFkZHJlc3M+CisgICAgICA8ZW1haWw+amJhcm9uQHJlZGhhdC5jb208L2VtYWlsPgorICAgICA8L2FkZHJlc3M+CisgICAgPC9hZmZpbGlhdGlvbj4KKyAgIDwvYXV0aG9yPgorICAgPGF1dGhvcj4KKyAgICA8Zmlyc3RuYW1lPldpbGxpYW08L2ZpcnN0bmFtZT4KKyAgICA8c3VybmFtZT5Db2hlbjwvc3VybmFtZT4KKyAgICA8YWZmaWxpYXRpb24+CisgICAgIDxhZGRyZXNzPgorICAgICAgPGVtYWlsPndjb2hlbkByZWRoYXQuY29tPC9lbWFpbD4KKyAgICAgPC9hZGRyZXNzPgorICAgIDwvYWZmaWxpYXRpb24+CisgICA8L2F1dGhvcj4KKyAgPC9hdXRob3Jncm91cD4KKworICA8bGVnYWxub3RpY2U+CisgICA8cGFyYT4KKyAgICAgVGhpcyBkb2N1bWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlCisgICAgIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIKKyAgICAgdmVyc2lvbi4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKyAgICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAorICAgICB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisgICAgIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICAgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgICAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgICAgIE1BIDAyMTExLTEzMDcgVVNBCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgICBGb3IgbW9yZSBkZXRhaWxzIHNlZSB0aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBzb3VyY2UKKyAgICAgZGlzdHJpYnV0aW9uIG9mIExpbnV4LgorICAgPC9wYXJhPgorICA8L2xlZ2Fsbm90aWNlPgorIDwvYm9va2luZm8+CisKKyA8dG9jPjwvdG9jPgorICA8Y2hhcHRlciBpZD0iaW50cm8iPgorICAgPHRpdGxlPkludHJvZHVjdGlvbjwvdGl0bGU+CisgICA8cGFyYT4KKyAgICAgVHJhY2Vwb2ludHMgYXJlIHN0YXRpYyBwcm9iZSBwb2ludHMgdGhhdCBhcmUgbG9jYXRlZCBpbiBzdHJhdGVnaWMgcG9pbnRzCisgICAgIHRocm91Z2hvdXQgdGhlIGtlcm5lbC4gJ1Byb2JlcycgcmVnaXN0ZXIvdW5yZWdpc3RlciB3aXRoIHRyYWNlcG9pbnRzCisgICAgIHZpYSBhIGNhbGxiYWNrIG1lY2hhbmlzbS4gVGhlICdwcm9iZXMnIGFyZSBzdHJpY3RseSB0eXBlZCBmdW5jdGlvbnMgdGhhdAorICAgICBhcmUgcGFzc2VkIGEgdW5pcXVlIHNldCBvZiBwYXJhbWV0ZXJzIGRlZmluZWQgYnkgZWFjaCB0cmFjZXBvaW50LgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICAgRnJvbSB0aGlzIHNpbXBsZSBjYWxsYmFjayBtZWNoYW5pc20sICdwcm9iZXMnIGNhbiBiZSB1c2VkIHRvIHByb2ZpbGUsIGRlYnVnLAorICAgICBhbmQgdW5kZXJzdGFuZCBrZXJuZWwgYmVoYXZpb3IuIFRoZXJlIGFyZSBhIG51bWJlciBvZiB0b29scyB0aGF0IHByb3ZpZGUgYQorICAgICBmcmFtZXdvcmsgZm9yIHVzaW5nICdwcm9iZXMnLiBUaGVzZSB0b29scyBpbmNsdWRlIFN5c3RlbXRhcCwgZnRyYWNlLCBhbmQKKyAgICAgTFRUbmcuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgICBUcmFjZXBvaW50cyBhcmUgZGVmaW5lZCBpbiBhIG51bWJlciBvZiBoZWFkZXIgZmlsZXMgdmlhIHZhcmlvdXMgbWFjcm9zLiBUaHVzLAorICAgICB0aGUgcHVycG9zZSBvZiB0aGlzIGRvY3VtZW50IGlzIHRvIHByb3ZpZGUgYSBjbGVhciBhY2NvdW50aW5nIG9mIHRoZSBhdmFpbGFibGUKKyAgICAgdHJhY2Vwb2ludHMuIFRoZSBpbnRlbnRpb24gaXMgdG8gdW5kZXJzdGFuZCBub3Qgb25seSB3aGF0IHRyYWNlcG9pbnRzIGFyZQorICAgICBhdmFpbGFibGUgYnV0IGFsc28gdG8gdW5kZXJzdGFuZCB3aGVyZSBmdXR1cmUgdHJhY2Vwb2ludHMgbWlnaHQgYmUgYWRkZWQuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgICBUaGUgQVBJIHByZXNlbnRlZCBoYXMgZnVuY3Rpb25zIG9mIHRoZSBmb3JtOgorICAgICA8ZnVuY3Rpb24+dHJhY2VfdHJhY2Vwb2ludG5hbWUoZnVuY3Rpb24gcGFyYW1ldGVycyk8L2Z1bmN0aW9uPi4gVGhlc2UgYXJlIHRoZQorICAgICB0cmFjZXBvaW50cyBjYWxsYmFja3MgdGhhdCBhcmUgZm91bmQgdGhyb3VnaG91dCB0aGUgY29kZS4gUmVnaXN0ZXJpbmcgYW5kCisgICAgIHVucmVnaXN0ZXJpbmcgcHJvYmVzIHdpdGggdGhlc2UgY2FsbGJhY2sgc2l0ZXMgaXMgY292ZXJlZCBpbiB0aGUKKyAgICAgPGZpbGVuYW1lPkRvY3VtZW50YXRpb24vdHJhY2UvKjwvZmlsZW5hbWU+IGRpcmVjdG9yeS4KKyAgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJpcnEiPgorICAgPHRpdGxlPklSUTwvdGl0bGU+CishSWluY2x1ZGUvdHJhY2UvZXZlbnRzL2lycS5oCisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0ic2lnbmFsIj4KKyAgIDx0aXRsZT5TSUdOQUw8L3RpdGxlPgorIUlpbmNsdWRlL3RyYWNlL2V2ZW50cy9zaWduYWwuaAorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImJsb2NrIj4KKyAgIDx0aXRsZT5CbG9jayBJTzwvdGl0bGU+CishSWluY2x1ZGUvdHJhY2UvZXZlbnRzL2Jsb2NrLmgKKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJ3b3JrcXVldWUiPgorICAgPHRpdGxlPldvcmtxdWV1ZTwvdGl0bGU+CishSWluY2x1ZGUvdHJhY2UvZXZlbnRzL3dvcmtxdWV1ZS5oCisgIDwvY2hhcHRlcj4KKzwvYm9vaz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay91aW8taG93dG8udG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay91aW8taG93dG8udG1wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDBlNDUyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3Vpby1ob3d0by50bXBsCkBAIC0wLDAgKzEsMTA1MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4yLy9FTiIKKyJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMi9kb2Nib29reC5kdGQiIFtdPgorCis8Ym9vayBpZD0iaW5kZXgiPgorPGJvb2tpbmZvPgorPHRpdGxlPlRoZSBVc2Vyc3BhY2UgSS9PIEhPV1RPPC90aXRsZT4KKworPGF1dGhvcj4KKyAgICAgIDxmaXJzdG5hbWU+SGFucy1Kw7xyZ2VuPC9maXJzdG5hbWU+CisgICAgICA8c3VybmFtZT5Lb2NoPC9zdXJuYW1lPgorICAgICAgPGF1dGhvcmJsdXJiPjxwYXJhPkxpbnV4IGRldmVsb3BlciwgTGludXRyb25peDwvcGFyYT48L2F1dGhvcmJsdXJiPgorCTxhZmZpbGlhdGlvbj4KKwk8b3JnbmFtZT4KKwkJPHVsaW5rIHVybD0iaHR0cDovL3d3dy5saW51dHJvbml4LmRlIj5MaW51dHJvbml4PC91bGluaz4KKwk8L29yZ25hbWU+CisKKwk8YWRkcmVzcz4KKwkgICA8ZW1haWw+aGprQGhhbnNqa29jaC5kZTwvZW1haWw+CisJPC9hZGRyZXNzPgorICAgIDwvYWZmaWxpYXRpb24+Cis8L2F1dGhvcj4KKworPGNvcHlyaWdodD4KKwk8eWVhcj4yMDA2LTIwMDg8L3llYXI+CisJPGhvbGRlcj5IYW5zLUrDvHJnZW4gS29jaC48L2hvbGRlcj4KKzwvY29weXJpZ2h0PgorPGNvcHlyaWdodD4KKwk8eWVhcj4yMDA5PC95ZWFyPgorCTxob2xkZXI+UmVkIEhhdCBJbmMsIE1pY2hhZWwgUy4gVHNpcmtpbiAobXN0QHJlZGhhdC5jb20pPC9ob2xkZXI+Cis8L2NvcHlyaWdodD4KKworPGxlZ2Fsbm90aWNlPgorPHBhcmE+CitUaGlzIGRvY3VtZW50YXRpb24gaXMgRnJlZSBTb2Z0d2FyZSBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCitHUEwgdmVyc2lvbiAyLgorPC9wYXJhPgorPC9sZWdhbG5vdGljZT4KKworPHB1YmRhdGU+MjAwNi0xMi0xMTwvcHViZGF0ZT4KKworPGFic3RyYWN0PgorCTxwYXJhPlRoaXMgSE9XVE8gZGVzY3JpYmVzIGNvbmNlcHQgYW5kIHVzYWdlIG9mIExpbnV4IGtlcm5lbCdzCisJCVVzZXJzcGFjZSBJL08gc3lzdGVtLjwvcGFyYT4KKzwvYWJzdHJhY3Q+CisKKzxyZXZoaXN0b3J5PgorCTxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjAuOTwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMDktMDctMTY8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPm1zdDwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz5BZGRlZCBnZW5lcmljIHBjaSBkcml2ZXIKKwkJPC9yZXZyZW1hcms+CisJPC9yZXZpc2lvbj4KKwk8cmV2aXNpb24+CisJPHJldm51bWJlcj4wLjg8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDA4LTEyLTI0PC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5oams8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+QWRkZWQgbmFtZSBhdHRyaWJ1dGVzIGluIG1lbSBhbmQgcG9ydGlvIHN5c2ZzIGRpcmVjdG9yaWVzLgorCQk8L3JldnJlbWFyaz4KKwk8L3JldmlzaW9uPgorCTxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjAuNzwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMDgtMTItMjM8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPmhqazwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz5BZGRlZCBnZW5lcmljIHBsYXRmb3JtIGRyaXZlcnMgYW5kIG9mZnNldCBhdHRyaWJ1dGUuPC9yZXZyZW1hcms+CisJPC9yZXZpc2lvbj4KKwk8cmV2aXNpb24+CisJPHJldm51bWJlcj4wLjY8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDA4LTEyLTA1PC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5oams8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+QWRkZWQgZGVzY3JpcHRpb24gb2YgcG9ydGlvIHN5c2ZzIGF0dHJpYnV0ZXMuPC9yZXZyZW1hcms+CisJPC9yZXZpc2lvbj4KKwk8cmV2aXNpb24+CisJPHJldm51bWJlcj4wLjU8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDA4LTA1LTIyPC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5oams8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+QWRkZWQgZGVzY3JpcHRpb24gb2Ygd3JpdGUoKSBmdW5jdGlvbi48L3JldnJlbWFyaz4KKwk8L3JldmlzaW9uPgorCTxyZXZpc2lvbj4KKwk8cmV2bnVtYmVyPjAuNDwvcmV2bnVtYmVyPgorCTxkYXRlPjIwMDctMTEtMjY8L2RhdGU+CisJPGF1dGhvcmluaXRpYWxzPmhqazwvYXV0aG9yaW5pdGlhbHM+CisJPHJldnJlbWFyaz5SZW1vdmVkIHNlY3Rpb24gYWJvdXQgdWlvX2R1bW15LjwvcmV2cmVtYXJrPgorCTwvcmV2aXNpb24+CisJPHJldmlzaW9uPgorCTxyZXZudW1iZXI+MC4zPC9yZXZudW1iZXI+CisJPGRhdGU+MjAwNy0wNC0yOTwvZGF0ZT4KKwk8YXV0aG9yaW5pdGlhbHM+aGprPC9hdXRob3Jpbml0aWFscz4KKwk8cmV2cmVtYXJrPkFkZGVkIHNlY3Rpb24gYWJvdXQgdXNlcnNwYWNlIGRyaXZlcnMuPC9yZXZyZW1hcms+CisJPC9yZXZpc2lvbj4KKwk8cmV2aXNpb24+CisJPHJldm51bWJlcj4wLjI8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDA3LTAyLTEzPC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5oams8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+VXBkYXRlIGFmdGVyIG11bHRpcGxlIG1hcHBpbmdzIHdlcmUgYWRkZWQuPC9yZXZyZW1hcms+CisJPC9yZXZpc2lvbj4KKwk8cmV2aXNpb24+CisJPHJldm51bWJlcj4wLjE8L3Jldm51bWJlcj4KKwk8ZGF0ZT4yMDA2LTEyLTExPC9kYXRlPgorCTxhdXRob3Jpbml0aWFscz5oams8L2F1dGhvcmluaXRpYWxzPgorCTxyZXZyZW1hcms+Rmlyc3QgZHJhZnQuPC9yZXZyZW1hcms+CisJPC9yZXZpc2lvbj4KKzwvcmV2aGlzdG9yeT4KKzwvYm9va2luZm8+CisKKzxjaGFwdGVyIGlkPSJhYm91dHRoaXNkb2MiPgorPD9kYmh0bWwgZmlsZW5hbWU9ImFib3V0dGhpcy5odG1sIj8+Cis8dGl0bGU+QWJvdXQgdGhpcyBkb2N1bWVudDwvdGl0bGU+CisKKzxzZWN0MSBpZD0idHJhbnNsYXRpb25zIj4KKzw/ZGJodG1sIGZpbGVuYW1lPSJ0cmFuc2xhdGlvbnMuaHRtbCI/PgorPHRpdGxlPlRyYW5zbGF0aW9uczwvdGl0bGU+CisKKzxwYXJhPklmIHlvdSBrbm93IG9mIGFueSB0cmFuc2xhdGlvbnMgZm9yIHRoaXMgZG9jdW1lbnQsIG9yIHlvdSBhcmUKK2ludGVyZXN0ZWQgaW4gdHJhbnNsYXRpbmcgaXQsIHBsZWFzZSBlbWFpbCBtZQorPGVtYWlsPmhqa0BoYW5zamtvY2guZGU8L2VtYWlsPi4KKzwvcGFyYT4KKzwvc2VjdDE+CisKKzxzZWN0MSBpZD0icHJlZmFjZSI+Cis8dGl0bGU+UHJlZmFjZTwvdGl0bGU+CisJPHBhcmE+CisJRm9yIG1hbnkgdHlwZXMgb2YgZGV2aWNlcywgY3JlYXRpbmcgYSBMaW51eCBrZXJuZWwgZHJpdmVyIGlzCisJb3ZlcmtpbGwuICBBbGwgdGhhdCBpcyByZWFsbHkgbmVlZGVkIGlzIHNvbWUgd2F5IHRvIGhhbmRsZSBhbgorCWludGVycnVwdCBhbmQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlIG1lbW9yeSBzcGFjZSBvZiB0aGUKKwlkZXZpY2UuICBUaGUgbG9naWMgb2YgY29udHJvbGxpbmcgdGhlIGRldmljZSBkb2VzIG5vdAorCW5lY2Vzc2FyaWx5IGhhdmUgdG8gYmUgd2l0aGluIHRoZSBrZXJuZWwsIGFzIHRoZSBkZXZpY2UgZG9lcworCW5vdCBuZWVkIHRvIHRha2UgYWR2YW50YWdlIG9mIGFueSBvZiBvdGhlciByZXNvdXJjZXMgdGhhdCB0aGUKKwlrZXJuZWwgcHJvdmlkZXMuICBPbmUgc3VjaCBjb21tb24gY2xhc3Mgb2YgZGV2aWNlcyB0aGF0IGFyZQorCWxpa2UgdGhpcyBhcmUgZm9yIGluZHVzdHJpYWwgSS9PIGNhcmRzLgorCTwvcGFyYT4KKwk8cGFyYT4KKwlUbyBhZGRyZXNzIHRoaXMgc2l0dWF0aW9uLCB0aGUgdXNlcnNwYWNlIEkvTyBzeXN0ZW0gKFVJTykgd2FzCisJZGVzaWduZWQuICBGb3IgdHlwaWNhbCBpbmR1c3RyaWFsIEkvTyBjYXJkcywgb25seSBhIHZlcnkgc21hbGwKKwlrZXJuZWwgbW9kdWxlIGlzIG5lZWRlZC4gVGhlIG1haW4gcGFydCBvZiB0aGUgZHJpdmVyIHdpbGwgcnVuIGluCisJdXNlciBzcGFjZS4gVGhpcyBzaW1wbGlmaWVzIGRldmVsb3BtZW50IGFuZCByZWR1Y2VzIHRoZSByaXNrIG9mCisJc2VyaW91cyBidWdzIHdpdGhpbiBhIGtlcm5lbCBtb2R1bGUuCisJPC9wYXJhPgorCTxwYXJhPgorCVBsZWFzZSBub3RlIHRoYXQgVUlPIGlzIG5vdCBhbiB1bml2ZXJzYWwgZHJpdmVyIGludGVyZmFjZS4gRGV2aWNlcworCXRoYXQgYXJlIGFscmVhZHkgaGFuZGxlZCB3ZWxsIGJ5IG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zIChsaWtlCisJbmV0d29ya2luZyBvciBzZXJpYWwgb3IgVVNCKSBhcmUgbm8gY2FuZGlkYXRlcyBmb3IgYW4gVUlPIGRyaXZlci4KKwlIYXJkd2FyZSB0aGF0IGlzIGlkZWFsbHkgc3VpdGVkIGZvciBhbiBVSU8gZHJpdmVyIGZ1bGZpbGxzIGFsbCBvZgorCXRoZSBmb2xsb3dpbmc6CisJPC9wYXJhPgorPGl0ZW1pemVkbGlzdD4KKzxsaXN0aXRlbT4KKwk8cGFyYT5UaGUgZGV2aWNlIGhhcyBtZW1vcnkgdGhhdCBjYW4gYmUgbWFwcGVkLiBUaGUgZGV2aWNlIGNhbiBiZQorCWNvbnRyb2xsZWQgY29tcGxldGVseSBieSB3cml0aW5nIHRvIHRoaXMgbWVtb3J5LjwvcGFyYT4KKzwvbGlzdGl0ZW0+Cis8bGlzdGl0ZW0+CisJPHBhcmE+VGhlIGRldmljZSB1c3VhbGx5IGdlbmVyYXRlcyBpbnRlcnJ1cHRzLjwvcGFyYT4KKzwvbGlzdGl0ZW0+Cis8bGlzdGl0ZW0+CisJPHBhcmE+VGhlIGRldmljZSBkb2VzIG5vdCBmaXQgaW50byBvbmUgb2YgdGhlIHN0YW5kYXJkIGtlcm5lbAorCXN1YnN5c3RlbXMuPC9wYXJhPgorPC9saXN0aXRlbT4KKzwvaXRlbWl6ZWRsaXN0PgorPC9zZWN0MT4KKworPHNlY3QxIGlkPSJ0aGFua3MiPgorPHRpdGxlPkFja25vd2xlZGdtZW50czwvdGl0bGU+CisJPHBhcmE+SSdkIGxpa2UgdG8gdGhhbmsgVGhvbWFzIEdsZWl4bmVyIGFuZCBCZW5lZGlrdCBTcHJhbmdlciBvZgorCUxpbnV0cm9uaXgsIHdobyBoYXZlIG5vdCBvbmx5IHdyaXR0ZW4gbW9zdCBvZiB0aGUgVUlPIGNvZGUsIGJ1dCBhbHNvCisJaGVscGVkIGdyZWF0bHkgd3JpdGluZyB0aGlzIEhPV1RPIGJ5IGdpdmluZyBtZSBhbGwga2luZHMgb2YgYmFja2dyb3VuZAorCWluZm9ybWF0aW9uLjwvcGFyYT4KKzwvc2VjdDE+CisKKzxzZWN0MSBpZD0iZmVlZGJhY2siPgorPHRpdGxlPkZlZWRiYWNrPC90aXRsZT4KKwk8cGFyYT5GaW5kIHNvbWV0aGluZyB3cm9uZyB3aXRoIHRoaXMgZG9jdW1lbnQ/IChPciBwZXJoYXBzIHNvbWV0aGluZworCXJpZ2h0PykgSSB3b3VsZCBsb3ZlIHRvIGhlYXIgZnJvbSB5b3UuIFBsZWFzZSBlbWFpbCBtZSBhdAorCTxlbWFpbD5oamtAaGFuc2prb2NoLmRlPC9lbWFpbD4uPC9wYXJhPgorPC9zZWN0MT4KKzwvY2hhcHRlcj4KKworPGNoYXB0ZXIgaWQ9ImFib3V0Ij4KKzw/ZGJodG1sIGZpbGVuYW1lPSJhYm91dC5odG1sIj8+Cis8dGl0bGU+QWJvdXQgVUlPPC90aXRsZT4KKworPHBhcmE+SWYgeW91IHVzZSBVSU8gZm9yIHlvdXIgY2FyZCdzIGRyaXZlciwgaGVyZSdzIHdoYXQgeW91IGdldDo8L3BhcmE+CisKKzxpdGVtaXplZGxpc3Q+Cis8bGlzdGl0ZW0+CisJPHBhcmE+b25seSBvbmUgc21hbGwga2VybmVsIG1vZHVsZSB0byB3cml0ZSBhbmQgbWFpbnRhaW4uPC9wYXJhPgorPC9saXN0aXRlbT4KKzxsaXN0aXRlbT4KKwk8cGFyYT5kZXZlbG9wIHRoZSBtYWluIHBhcnQgb2YgeW91ciBkcml2ZXIgaW4gdXNlciBzcGFjZSwKKwl3aXRoIGFsbCB0aGUgdG9vbHMgYW5kIGxpYnJhcmllcyB5b3UncmUgdXNlZCB0by48L3BhcmE+Cis8L2xpc3RpdGVtPgorPGxpc3RpdGVtPgorCTxwYXJhPmJ1Z3MgaW4geW91ciBkcml2ZXIgd29uJ3QgY3Jhc2ggdGhlIGtlcm5lbC48L3BhcmE+Cis8L2xpc3RpdGVtPgorPGxpc3RpdGVtPgorCTxwYXJhPnVwZGF0ZXMgb2YgeW91ciBkcml2ZXIgY2FuIHRha2UgcGxhY2Ugd2l0aG91dCByZWNvbXBpbGluZworCXRoZSBrZXJuZWwuPC9wYXJhPgorPC9saXN0aXRlbT4KKzwvaXRlbWl6ZWRsaXN0PgorCis8c2VjdDEgaWQ9Imhvd191aW9fd29ya3MiPgorPHRpdGxlPkhvdyBVSU8gd29ya3M8L3RpdGxlPgorCTxwYXJhPgorCUVhY2ggVUlPIGRldmljZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIGEgZGV2aWNlIGZpbGUgYW5kIHNldmVyYWwKKwlzeXNmcyBhdHRyaWJ1dGUgZmlsZXMuIFRoZSBkZXZpY2UgZmlsZSB3aWxsIGJlIGNhbGxlZAorCTxmaWxlbmFtZT4vZGV2L3VpbzA8L2ZpbGVuYW1lPiBmb3IgdGhlIGZpcnN0IGRldmljZSwgYW5kCisJPGZpbGVuYW1lPi9kZXYvdWlvMTwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+L2Rldi91aW8yPC9maWxlbmFtZT4KKwlhbmQgc28gb24gZm9yIHN1YnNlcXVlbnQgZGV2aWNlcy4KKwk8L3BhcmE+CisKKwk8cGFyYT48ZmlsZW5hbWU+L2Rldi91aW9YPC9maWxlbmFtZT4gaXMgdXNlZCB0byBhY2Nlc3MgdGhlCisJYWRkcmVzcyBzcGFjZSBvZiB0aGUgY2FyZC4gSnVzdCB1c2UKKwk8ZnVuY3Rpb24+bW1hcCgpPC9mdW5jdGlvbj4gdG8gYWNjZXNzIHJlZ2lzdGVycyBvciBSQU0KKwlsb2NhdGlvbnMgb2YgeW91ciBjYXJkLgorCTwvcGFyYT4KKworCTxwYXJhPgorCUludGVycnVwdHMgYXJlIGhhbmRsZWQgYnkgcmVhZGluZyBmcm9tCisJPGZpbGVuYW1lPi9kZXYvdWlvWDwvZmlsZW5hbWU+LiBBIGJsb2NraW5nCisJPGZ1bmN0aW9uPnJlYWQoKTwvZnVuY3Rpb24+IGZyb20KKwk8ZmlsZW5hbWU+L2Rldi91aW9YPC9maWxlbmFtZT4gd2lsbCByZXR1cm4gYXMgc29vbiBhcyBhbgorCWludGVycnVwdCBvY2N1cnMuIFlvdSBjYW4gYWxzbyB1c2UKKwk8ZnVuY3Rpb24+c2VsZWN0KCk8L2Z1bmN0aW9uPiBvbgorCTxmaWxlbmFtZT4vZGV2L3Vpb1g8L2ZpbGVuYW1lPiB0byB3YWl0IGZvciBhbiBpbnRlcnJ1cHQuIFRoZQorCWludGVnZXIgdmFsdWUgcmVhZCBmcm9tIDxmaWxlbmFtZT4vZGV2L3Vpb1g8L2ZpbGVuYW1lPgorCXJlcHJlc2VudHMgdGhlIHRvdGFsIGludGVycnVwdCBjb3VudC4gWW91IGNhbiB1c2UgdGhpcyBudW1iZXIKKwl0byBmaWd1cmUgb3V0IGlmIHlvdSBtaXNzZWQgc29tZSBpbnRlcnJ1cHRzLgorCTwvcGFyYT4KKwk8cGFyYT4KKwlGb3Igc29tZSBoYXJkd2FyZSB0aGF0IGhhcyBtb3JlIHRoYW4gb25lIGludGVycnVwdCBzb3VyY2UgaW50ZXJuYWxseSwKKwlidXQgbm90IHNlcGFyYXRlIElSUSBtYXNrIGFuZCBzdGF0dXMgcmVnaXN0ZXJzLCB0aGVyZSBtaWdodCBiZQorCXNpdHVhdGlvbnMgd2hlcmUgdXNlcnNwYWNlIGNhbm5vdCBkZXRlcm1pbmUgd2hhdCB0aGUgaW50ZXJydXB0IHNvdXJjZQorCXdhcyBpZiB0aGUga2VybmVsIGhhbmRsZXIgZGlzYWJsZXMgdGhlbSBieSB3cml0aW5nIHRvIHRoZSBjaGlwJ3MgSVJRCisJcmVnaXN0ZXIuIEluIHN1Y2ggYSBjYXNlLCB0aGUga2VybmVsIGhhcyB0byBkaXNhYmxlIHRoZSBJUlEgY29tcGxldGVseQorCXRvIGxlYXZlIHRoZSBjaGlwJ3MgcmVnaXN0ZXIgdW50b3VjaGVkLiBOb3cgdGhlIHVzZXJzcGFjZSBwYXJ0IGNhbgorCWRldGVybWluZSB0aGUgY2F1c2Ugb2YgdGhlIGludGVycnVwdCwgYnV0IGl0IGNhbm5vdCByZS1lbmFibGUKKwlpbnRlcnJ1cHRzLiBBbm90aGVyIGNvcm5lcmNhc2UgaXMgY2hpcHMgd2hlcmUgcmUtZW5hYmxpbmcgaW50ZXJydXB0cworCWlzIGEgcmVhZC1tb2RpZnktd3JpdGUgb3BlcmF0aW9uIHRvIGEgY29tYmluZWQgSVJRIHN0YXR1cy9hY2tub3dsZWRnZQorCXJlZ2lzdGVyLiBUaGlzIHdvdWxkIGJlIHJhY3kgaWYgYSBuZXcgaW50ZXJydXB0IG9jY3VycmVkCisJc2ltdWx0YW5lb3VzbHkuCisJPC9wYXJhPgorCTxwYXJhPgorCVRvIGFkZHJlc3MgdGhlc2UgcHJvYmxlbXMsIFVJTyBhbHNvIGltcGxlbWVudHMgYSB3cml0ZSgpIGZ1bmN0aW9uLiBJdAorCWlzIG5vcm1hbGx5IG5vdCB1c2VkIGFuZCBjYW4gYmUgaWdub3JlZCBmb3IgaGFyZHdhcmUgdGhhdCBoYXMgb25seSBhCisJc2luZ2xlIGludGVycnVwdCBzb3VyY2Ugb3IgaGFzIHNlcGFyYXRlIElSUSBtYXNrIGFuZCBzdGF0dXMgcmVnaXN0ZXJzLgorCUlmIHlvdSBuZWVkIGl0LCBob3dldmVyLCBhIHdyaXRlIHRvIDxmaWxlbmFtZT4vZGV2L3Vpb1g8L2ZpbGVuYW1lPgorCXdpbGwgY2FsbCB0aGUgPGZ1bmN0aW9uPmlycWNvbnRyb2woKTwvZnVuY3Rpb24+IGZ1bmN0aW9uIGltcGxlbWVudGVkCisJYnkgdGhlIGRyaXZlci4gWW91IGhhdmUgdG8gd3JpdGUgYSAzMi1iaXQgdmFsdWUgdGhhdCBpcyB1c3VhbGx5IGVpdGhlcgorCTAgb3IgMSB0byBkaXNhYmxlIG9yIGVuYWJsZSBpbnRlcnJ1cHRzLiBJZiBhIGRyaXZlciBkb2VzIG5vdCBpbXBsZW1lbnQKKwk8ZnVuY3Rpb24+aXJxY29udHJvbCgpPC9mdW5jdGlvbj4sIDxmdW5jdGlvbj53cml0ZSgpPC9mdW5jdGlvbj4gd2lsbAorCXJldHVybiB3aXRoIDx2YXJuYW1lPi1FTk9TWVM8L3Zhcm5hbWU+LgorCTwvcGFyYT4KKworCTxwYXJhPgorCVRvIGhhbmRsZSBpbnRlcnJ1cHRzIHByb3Blcmx5LCB5b3VyIGN1c3RvbSBrZXJuZWwgbW9kdWxlIGNhbgorCXByb3ZpZGUgaXRzIG93biBpbnRlcnJ1cHQgaGFuZGxlci4gSXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlCisJY2FsbGVkIGJ5IHRoZSBidWlsdC1pbiBoYW5kbGVyLgorCTwvcGFyYT4KKworCTxwYXJhPgorCUZvciBjYXJkcyB0aGF0IGRvbid0IGdlbmVyYXRlIGludGVycnVwdHMgYnV0IG5lZWQgdG8gYmUKKwlwb2xsZWQsIHRoZXJlIGlzIHRoZSBwb3NzaWJpbGl0eSB0byBzZXQgdXAgYSB0aW1lciB0aGF0CisJdHJpZ2dlcnMgdGhlIGludGVycnVwdCBoYW5kbGVyIGF0IGNvbmZpZ3VyYWJsZSB0aW1lIGludGVydmFscy4KKwlUaGlzIGludGVycnVwdCBzaW11bGF0aW9uIGlzIGRvbmUgYnkgY2FsbGluZworCTxmdW5jdGlvbj51aW9fZXZlbnRfbm90aWZ5KCk8L2Z1bmN0aW9uPgorCWZyb20gdGhlIHRpbWVyJ3MgZXZlbnQgaGFuZGxlci4KKwk8L3BhcmE+CisKKwk8cGFyYT4KKwlFYWNoIGRyaXZlciBwcm92aWRlcyBhdHRyaWJ1dGVzIHRoYXQgYXJlIHVzZWQgdG8gcmVhZCBvciB3cml0ZQorCXZhcmlhYmxlcy4gVGhlc2UgYXR0cmlidXRlcyBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHN5c2ZzCisJZmlsZXMuICBBIGN1c3RvbSBrZXJuZWwgZHJpdmVyIG1vZHVsZSBjYW4gYWRkIGl0cyBvd24KKwlhdHRyaWJ1dGVzIHRvIHRoZSBkZXZpY2Ugb3duZWQgYnkgdGhlIHVpbyBkcml2ZXIsIGJ1dCBub3QgYWRkZWQKKwl0byB0aGUgVUlPIGRldmljZSBpdHNlbGYgYXQgdGhpcyB0aW1lLiAgVGhpcyBtaWdodCBjaGFuZ2UgaW4gdGhlCisJZnV0dXJlIGlmIGl0IHdvdWxkIGJlIGZvdW5kIHRvIGJlIHVzZWZ1bC4KKwk8L3BhcmE+CisKKwk8cGFyYT4KKwlUaGUgZm9sbG93aW5nIHN0YW5kYXJkIGF0dHJpYnV0ZXMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBVSU8KKwlmcmFtZXdvcms6CisJPC9wYXJhPgorPGl0ZW1pemVkbGlzdD4KKzxsaXN0aXRlbT4KKwk8cGFyYT4KKwk8ZmlsZW5hbWU+bmFtZTwvZmlsZW5hbWU+OiBUaGUgbmFtZSBvZiB5b3VyIGRldmljZS4gSXQgaXMKKwlyZWNvbW1lbmRlZCB0byB1c2UgdGhlIG5hbWUgb2YgeW91ciBrZXJuZWwgbW9kdWxlIGZvciB0aGlzLgorCTwvcGFyYT4KKzwvbGlzdGl0ZW0+Cis8bGlzdGl0ZW0+CisJPHBhcmE+CisJPGZpbGVuYW1lPnZlcnNpb248L2ZpbGVuYW1lPjogQSB2ZXJzaW9uIHN0cmluZyBkZWZpbmVkIGJ5IHlvdXIKKwlkcml2ZXIuIFRoaXMgYWxsb3dzIHRoZSB1c2VyIHNwYWNlIHBhcnQgb2YgeW91ciBkcml2ZXIgdG8gZGVhbAorCXdpdGggZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBrZXJuZWwgbW9kdWxlLgorCTwvcGFyYT4KKzwvbGlzdGl0ZW0+Cis8bGlzdGl0ZW0+CisJPHBhcmE+CisJPGZpbGVuYW1lPmV2ZW50PC9maWxlbmFtZT46IFRoZSB0b3RhbCBudW1iZXIgb2YgaW50ZXJydXB0cworCWhhbmRsZWQgYnkgdGhlIGRyaXZlciBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoZSBkZXZpY2Ugbm9kZSB3YXMKKwlyZWFkLgorCTwvcGFyYT4KKzwvbGlzdGl0ZW0+Cis8L2l0ZW1pemVkbGlzdD4KKzxwYXJhPgorCVRoZXNlIGF0dHJpYnV0ZXMgYXBwZWFyIHVuZGVyIHRoZQorCTxmaWxlbmFtZT4vc3lzL2NsYXNzL3Vpby91aW9YPC9maWxlbmFtZT4gZGlyZWN0b3J5LiAgUGxlYXNlCisJbm90ZSB0aGF0IHRoaXMgZGlyZWN0b3J5IG1pZ2h0IGJlIGEgc3ltbGluaywgYW5kIG5vdCBhIHJlYWwKKwlkaXJlY3RvcnkuICBBbnkgdXNlcnNwYWNlIGNvZGUgdGhhdCBhY2Nlc3NlcyBpdCBtdXN0IGJlIGFibGUKKwl0byBoYW5kbGUgdGhpcy4KKzwvcGFyYT4KKzxwYXJhPgorCUVhY2ggVUlPIGRldmljZSBjYW4gbWFrZSBvbmUgb3IgbW9yZSBtZW1vcnkgcmVnaW9ucyBhdmFpbGFibGUgZm9yCisJbWVtb3J5IG1hcHBpbmcuIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugc29tZSBpbmR1c3RyaWFsIEkvTyBjYXJkcworCXJlcXVpcmUgYWNjZXNzIHRvIG1vcmUgdGhhbiBvbmUgUENJIG1lbW9yeSByZWdpb24gaW4gYSBkcml2ZXIuCis8L3BhcmE+Cis8cGFyYT4KKwlFYWNoIG1hcHBpbmcgaGFzIGl0cyBvd24gZGlyZWN0b3J5IGluIHN5c2ZzLCB0aGUgZmlyc3QgbWFwcGluZworCWFwcGVhcnMgYXMgPGZpbGVuYW1lPi9zeXMvY2xhc3MvdWlvL3Vpb1gvbWFwcy9tYXAwLzwvZmlsZW5hbWU+LgorCVN1YnNlcXVlbnQgbWFwcGluZ3MgY3JlYXRlIGRpcmVjdG9yaWVzIDxmaWxlbmFtZT5tYXAxLzwvZmlsZW5hbWU+LAorCTxmaWxlbmFtZT5tYXAyLzwvZmlsZW5hbWU+LCBhbmQgc28gb24uIFRoZXNlIGRpcmVjdG9yaWVzIHdpbGwgb25seQorCWFwcGVhciBpZiB0aGUgc2l6ZSBvZiB0aGUgbWFwcGluZyBpcyBub3QgMC4KKzwvcGFyYT4KKzxwYXJhPgorCUVhY2ggPGZpbGVuYW1lPm1hcFgvPC9maWxlbmFtZT4gZGlyZWN0b3J5IGNvbnRhaW5zIGZvdXIgcmVhZC1vbmx5IGZpbGVzCisJdGhhdCBzaG93IGF0dHJpYnV0ZXMgb2YgdGhlIG1lbW9yeToKKzwvcGFyYT4KKzxpdGVtaXplZGxpc3Q+Cis8bGlzdGl0ZW0+CisJPHBhcmE+CisJPGZpbGVuYW1lPm5hbWU8L2ZpbGVuYW1lPjogQSBzdHJpbmcgaWRlbnRpZmllciBmb3IgdGhpcyBtYXBwaW5nLiBUaGlzCisJaXMgb3B0aW9uYWwsIHRoZSBzdHJpbmcgY2FuIGJlIGVtcHR5LiBEcml2ZXJzIGNhbiBzZXQgdGhpcyB0byBtYWtlIGl0CisJZWFzaWVyIGZvciB1c2Vyc3BhY2UgdG8gZmluZCB0aGUgY29ycmVjdCBtYXBwaW5nLgorCTwvcGFyYT4KKzwvbGlzdGl0ZW0+Cis8bGlzdGl0ZW0+CisJPHBhcmE+CisJPGZpbGVuYW1lPmFkZHI8L2ZpbGVuYW1lPjogVGhlIGFkZHJlc3Mgb2YgbWVtb3J5IHRoYXQgY2FuIGJlIG1hcHBlZC4KKwk8L3BhcmE+Cis8L2xpc3RpdGVtPgorPGxpc3RpdGVtPgorCTxwYXJhPgorCTxmaWxlbmFtZT5zaXplPC9maWxlbmFtZT46IFRoZSBzaXplLCBpbiBieXRlcywgb2YgdGhlIG1lbW9yeQorCXBvaW50ZWQgdG8gYnkgYWRkci4KKwk8L3BhcmE+Cis8L2xpc3RpdGVtPgorPGxpc3RpdGVtPgorCTxwYXJhPgorCTxmaWxlbmFtZT5vZmZzZXQ8L2ZpbGVuYW1lPjogVGhlIG9mZnNldCwgaW4gYnl0ZXMsIHRoYXQgaGFzIHRvIGJlCisJYWRkZWQgdG8gdGhlIHBvaW50ZXIgcmV0dXJuZWQgYnkgPGZ1bmN0aW9uPm1tYXAoKTwvZnVuY3Rpb24+IHRvIGdldAorCXRvIHRoZSBhY3R1YWwgZGV2aWNlIG1lbW9yeS4gVGhpcyBpcyBpbXBvcnRhbnQgaWYgdGhlIGRldmljZSdzIG1lbW9yeQorCWlzIG5vdCBwYWdlIGFsaWduZWQuIFJlbWVtYmVyIHRoYXQgcG9pbnRlcnMgcmV0dXJuZWQgYnkKKwk8ZnVuY3Rpb24+bW1hcCgpPC9mdW5jdGlvbj4gYXJlIGFsd2F5cyBwYWdlIGFsaWduZWQsIHNvIGl0IGlzIGdvb2QKKwlzdHlsZSB0byBhbHdheXMgYWRkIHRoaXMgb2Zmc2V0LgorCTwvcGFyYT4KKzwvbGlzdGl0ZW0+Cis8L2l0ZW1pemVkbGlzdD4KKworPHBhcmE+CisJRnJvbSB1c2Vyc3BhY2UsIHRoZSBkaWZmZXJlbnQgbWFwcGluZ3MgYXJlIGRpc3Rpbmd1aXNoZWQgYnkgYWRqdXN0aW5nCisJdGhlIDx2YXJuYW1lPm9mZnNldDwvdmFybmFtZT4gcGFyYW1ldGVyIG9mIHRoZQorCTxmdW5jdGlvbj5tbWFwKCk8L2Z1bmN0aW9uPiBjYWxsLiBUbyBtYXAgdGhlIG1lbW9yeSBvZiBtYXBwaW5nIE4sIHlvdQorCWhhdmUgdG8gdXNlIE4gdGltZXMgdGhlIHBhZ2Ugc2l6ZSBhcyB5b3VyIG9mZnNldDoKKzwvcGFyYT4KKzxwcm9ncmFtbGlzdGluZyBmb3JtYXQ9ImxpbmVzcGVjaWZpYyI+CitvZmZzZXQgPSBOICogZ2V0cGFnZXNpemUoKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisKKzxwYXJhPgorCVNvbWV0aW1lcyB0aGVyZSBpcyBoYXJkd2FyZSB3aXRoIG1lbW9yeS1saWtlIHJlZ2lvbnMgdGhhdCBjYW4gbm90IGJlCisJbWFwcGVkIHdpdGggdGhlIHRlY2huaXF1ZSBkZXNjcmliZWQgaGVyZSwgYnV0IHRoZXJlIGFyZSBzdGlsbCB3YXlzIHRvCisJYWNjZXNzIHRoZW0gZnJvbSB1c2Vyc3BhY2UuIFRoZSBtb3N0IGNvbW1vbiBleGFtcGxlIGFyZSB4ODYgaW9wb3J0cy4KKwlPbiB4ODYgc3lzdGVtcywgdXNlcnNwYWNlIGNhbiBhY2Nlc3MgdGhlc2UgaW9wb3J0cyB1c2luZworCTxmdW5jdGlvbj5pb3Blcm0oKTwvZnVuY3Rpb24+LCA8ZnVuY3Rpb24+aW9wbCgpPC9mdW5jdGlvbj4sCisJPGZ1bmN0aW9uPmluYigpPC9mdW5jdGlvbj4sIDxmdW5jdGlvbj5vdXRiKCk8L2Z1bmN0aW9uPiwgYW5kIHNpbWlsYXIKKwlmdW5jdGlvbnMuCis8L3BhcmE+Cis8cGFyYT4KKwlTaW5jZSB0aGVzZSBpb3BvcnQgcmVnaW9ucyBjYW4gbm90IGJlIG1hcHBlZCwgdGhleSB3aWxsIG5vdCBhcHBlYXIgdW5kZXIKKwk8ZmlsZW5hbWU+L3N5cy9jbGFzcy91aW8vdWlvWC9tYXBzLzwvZmlsZW5hbWU+IGxpa2UgdGhlIG5vcm1hbCBtZW1vcnkKKwlkZXNjcmliZWQgYWJvdmUuIFdpdGhvdXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBvcnQgcmVnaW9ucyBhIGhhcmR3YXJlCisJaGFzIHRvIG9mZmVyLCBpdCBiZWNvbWVzIGRpZmZpY3VsdCBmb3IgdGhlIHVzZXJzcGFjZSBwYXJ0IG9mIHRoZQorCWRyaXZlciB0byBmaW5kIG91dCB3aGljaCBwb3J0cyBiZWxvbmcgdG8gd2hpY2ggVUlPIGRldmljZS4KKzwvcGFyYT4KKzxwYXJhPgorCVRvIGFkZHJlc3MgdGhpcyBzaXR1YXRpb24sIHRoZSBuZXcgZGlyZWN0b3J5CisJPGZpbGVuYW1lPi9zeXMvY2xhc3MvdWlvL3Vpb1gvcG9ydGlvLzwvZmlsZW5hbWU+IHdhcyBhZGRlZC4gSXQgb25seQorCWV4aXN0cyBpZiB0aGUgZHJpdmVyIHdhbnRzIHRvIHBhc3MgaW5mb3JtYXRpb24gYWJvdXQgb25lIG9yIG1vcmUgcG9ydAorCXJlZ2lvbnMgdG8gdXNlcnNwYWNlLiBJZiB0aGF0IGlzIHRoZSBjYXNlLCBzdWJkaXJlY3RvcmllcyBuYW1lZAorCTxmaWxlbmFtZT5wb3J0MDwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+cG9ydDE8L2ZpbGVuYW1lPiwgYW5kIHNvIG9uLAorCXdpbGwgYXBwZWFyIHVuZGVybmVhdGgKKwk8ZmlsZW5hbWU+L3N5cy9jbGFzcy91aW8vdWlvWC9wb3J0aW8vPC9maWxlbmFtZT4uCis8L3BhcmE+Cis8cGFyYT4KKwlFYWNoIDxmaWxlbmFtZT5wb3J0WC88L2ZpbGVuYW1lPiBkaXJlY3RvcnkgY29udGFpbnMgZm91ciByZWFkLW9ubHkKKwlmaWxlcyB0aGF0IHNob3cgbmFtZSwgc3RhcnQsIHNpemUsIGFuZCB0eXBlIG9mIHRoZSBwb3J0IHJlZ2lvbjoKKzwvcGFyYT4KKzxpdGVtaXplZGxpc3Q+Cis8bGlzdGl0ZW0+CisJPHBhcmE+CisJPGZpbGVuYW1lPm5hbWU8L2ZpbGVuYW1lPjogQSBzdHJpbmcgaWRlbnRpZmllciBmb3IgdGhpcyBwb3J0IHJlZ2lvbi4KKwlUaGUgc3RyaW5nIGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgZW1wdHkuIERyaXZlcnMgY2FuIHNldCBpdCB0byBtYWtlIGl0CisJZWFzaWVyIGZvciB1c2Vyc3BhY2UgdG8gZmluZCBhIGNlcnRhaW4gcG9ydCByZWdpb24uCisJPC9wYXJhPgorPC9saXN0aXRlbT4KKzxsaXN0aXRlbT4KKwk8cGFyYT4KKwk8ZmlsZW5hbWU+c3RhcnQ8L2ZpbGVuYW1lPjogVGhlIGZpcnN0IHBvcnQgb2YgdGhpcyByZWdpb24uCisJPC9wYXJhPgorPC9saXN0aXRlbT4KKzxsaXN0aXRlbT4KKwk8cGFyYT4KKwk8ZmlsZW5hbWU+c2l6ZTwvZmlsZW5hbWU+OiBUaGUgbnVtYmVyIG9mIHBvcnRzIGluIHRoaXMgcmVnaW9uLgorCTwvcGFyYT4KKzwvbGlzdGl0ZW0+Cis8bGlzdGl0ZW0+CisJPHBhcmE+CisJPGZpbGVuYW1lPnBvcnR0eXBlPC9maWxlbmFtZT46IEEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIHR5cGUgb2YgcG9ydC4KKwk8L3BhcmE+Cis8L2xpc3RpdGVtPgorPC9pdGVtaXplZGxpc3Q+CisKKworPC9zZWN0MT4KKzwvY2hhcHRlcj4KKworPGNoYXB0ZXIgaWQ9ImN1c3RvbV9rZXJuZWxfbW9kdWxlIiB4cmVmbGFiZWw9IldyaXRpbmcgeW91ciBvd24ga2VybmVsIG1vZHVsZSI+Cis8P2RiaHRtbCBmaWxlbmFtZT0iY3VzdG9tX2tlcm5lbF9tb2R1bGUuaHRtbCI/PgorPHRpdGxlPldyaXRpbmcgeW91ciBvd24ga2VybmVsIG1vZHVsZTwvdGl0bGU+CisJPHBhcmE+CisJUGxlYXNlIGhhdmUgYSBsb29rIGF0IDxmaWxlbmFtZT51aW9fY2lmLmM8L2ZpbGVuYW1lPiBhcyBhbgorCWV4YW1wbGUuIFRoZSBmb2xsb3dpbmcgcGFyYWdyYXBocyBleHBsYWluIHRoZSBkaWZmZXJlbnQKKwlzZWN0aW9ucyBvZiB0aGlzIGZpbGUuCisJPC9wYXJhPgorCis8c2VjdDEgaWQ9InVpb19pbmZvIj4KKzx0aXRsZT5zdHJ1Y3QgdWlvX2luZm88L3RpdGxlPgorCTxwYXJhPgorCVRoaXMgc3RydWN0dXJlIHRlbGxzIHRoZSBmcmFtZXdvcmsgdGhlIGRldGFpbHMgb2YgeW91ciBkcml2ZXIsCisJU29tZSBvZiB0aGUgbWVtYmVycyBhcmUgcmVxdWlyZWQsIG90aGVycyBhcmUgb3B0aW9uYWwuCisJPC9wYXJhPgorCis8aXRlbWl6ZWRsaXN0PgorPGxpc3RpdGVtPjxwYXJhPgorPHZhcm5hbWU+Y29uc3QgY2hhciAqbmFtZTwvdmFybmFtZT46IFJlcXVpcmVkLiBUaGUgbmFtZSBvZiB5b3VyIGRyaXZlciBhcworaXQgd2lsbCBhcHBlYXIgaW4gc3lzZnMuIEkgcmVjb21tZW5kIHVzaW5nIHRoZSBuYW1lIG9mIHlvdXIgbW9kdWxlIGZvciB0aGlzLgorPC9wYXJhPjwvbGlzdGl0ZW0+CisKKzxsaXN0aXRlbT48cGFyYT4KKzx2YXJuYW1lPmNvbnN0IGNoYXIgKnZlcnNpb248L3Zhcm5hbWU+OiBSZXF1aXJlZC4gVGhpcyBzdHJpbmcgYXBwZWFycyBpbgorPGZpbGVuYW1lPi9zeXMvY2xhc3MvdWlvL3Vpb1gvdmVyc2lvbjwvZmlsZW5hbWU+LgorPC9wYXJhPjwvbGlzdGl0ZW0+CisKKzxsaXN0aXRlbT48cGFyYT4KKzx2YXJuYW1lPnN0cnVjdCB1aW9fbWVtIG1lbVsgTUFYX1VJT19NQVBTIF08L3Zhcm5hbWU+OiBSZXF1aXJlZCBpZiB5b3UKK2hhdmUgbWVtb3J5IHRoYXQgY2FuIGJlIG1hcHBlZCB3aXRoIDxmdW5jdGlvbj5tbWFwKCk8L2Z1bmN0aW9uPi4gRm9yIGVhY2gKK21hcHBpbmcgeW91IG5lZWQgdG8gZmlsbCBvbmUgb2YgdGhlIDx2YXJuYW1lPnVpb19tZW08L3Zhcm5hbWU+IHN0cnVjdHVyZXMuCitTZWUgdGhlIGRlc2NyaXB0aW9uIGJlbG93IGZvciBkZXRhaWxzLgorPC9wYXJhPjwvbGlzdGl0ZW0+CisKKzxsaXN0aXRlbT48cGFyYT4KKzx2YXJuYW1lPnN0cnVjdCB1aW9fcG9ydCBwb3J0WyBNQVhfVUlPX1BPUlRTX1JFR0lPTlMgXTwvdmFybmFtZT46IFJlcXVpcmVkCitpZiB5b3Ugd2FudCB0byBwYXNzIGluZm9ybWF0aW9uIGFib3V0IGlvcG9ydHMgdG8gdXNlcnNwYWNlLiBGb3IgZWFjaCBwb3J0CityZWdpb24geW91IG5lZWQgdG8gZmlsbCBvbmUgb2YgdGhlIDx2YXJuYW1lPnVpb19wb3J0PC92YXJuYW1lPiBzdHJ1Y3R1cmVzLgorU2VlIHRoZSBkZXNjcmlwdGlvbiBiZWxvdyBmb3IgZGV0YWlscy4KKzwvcGFyYT48L2xpc3RpdGVtPgorCis8bGlzdGl0ZW0+PHBhcmE+Cis8dmFybmFtZT5sb25nIGlycTwvdmFybmFtZT46IFJlcXVpcmVkLiBJZiB5b3VyIGhhcmR3YXJlIGdlbmVyYXRlcyBhbgoraW50ZXJydXB0LCBpdCdzIHlvdXIgbW9kdWxlcyB0YXNrIHRvIGRldGVybWluZSB0aGUgaXJxIG51bWJlciBkdXJpbmcKK2luaXRpYWxpemF0aW9uLiBJZiB5b3UgZG9uJ3QgaGF2ZSBhIGhhcmR3YXJlIGdlbmVyYXRlZCBpbnRlcnJ1cHQgYnV0Cit3YW50IHRvIHRyaWdnZXIgdGhlIGludGVycnVwdCBoYW5kbGVyIGluIHNvbWUgb3RoZXIgd2F5LCBzZXQKKzx2YXJuYW1lPmlycTwvdmFybmFtZT4gdG8gPHZhcm5hbWU+VUlPX0lSUV9DVVNUT008L3Zhcm5hbWU+LgorSWYgeW91IGhhZCBubyBpbnRlcnJ1cHQgYXQgYWxsLCB5b3UgY291bGQgc2V0Cis8dmFybmFtZT5pcnE8L3Zhcm5hbWU+IHRvIDx2YXJuYW1lPlVJT19JUlFfTk9ORTwvdmFybmFtZT4sIHRob3VnaCB0aGlzCityYXJlbHkgbWFrZXMgc2Vuc2UuCis8L3BhcmE+PC9saXN0aXRlbT4KKworPGxpc3RpdGVtPjxwYXJhPgorPHZhcm5hbWU+dW5zaWduZWQgbG9uZyBpcnFfZmxhZ3M8L3Zhcm5hbWU+OiBSZXF1aXJlZCBpZiB5b3UndmUgc2V0Cis8dmFybmFtZT5pcnE8L3Zhcm5hbWU+IHRvIGEgaGFyZHdhcmUgaW50ZXJydXB0IG51bWJlci4gVGhlIGZsYWdzIGdpdmVuCitoZXJlIHdpbGwgYmUgdXNlZCBpbiB0aGUgY2FsbCB0byA8ZnVuY3Rpb24+cmVxdWVzdF9pcnEoKTwvZnVuY3Rpb24+LgorPC9wYXJhPjwvbGlzdGl0ZW0+CisKKzxsaXN0aXRlbT48cGFyYT4KKzx2YXJuYW1lPmludCAoKm1tYXApKHN0cnVjdCB1aW9faW5mbyAqaW5mbywgc3RydWN0IHZtX2FyZWFfc3RydWN0Cisqdm1hKTwvdmFybmFtZT46IE9wdGlvbmFsLiBJZiB5b3UgbmVlZCBhIHNwZWNpYWwKKzxmdW5jdGlvbj5tbWFwKCk8L2Z1bmN0aW9uPiBmdW5jdGlvbiwgeW91IGNhbiBzZXQgaXQgaGVyZS4gSWYgdGhpcworcG9pbnRlciBpcyBub3QgTlVMTCwgeW91ciA8ZnVuY3Rpb24+bW1hcCgpPC9mdW5jdGlvbj4gd2lsbCBiZSBjYWxsZWQKK2luc3RlYWQgb2YgdGhlIGJ1aWx0LWluIG9uZS4KKzwvcGFyYT48L2xpc3RpdGVtPgorCis8bGlzdGl0ZW0+PHBhcmE+Cis8dmFybmFtZT5pbnQgKCpvcGVuKShzdHJ1Y3QgdWlvX2luZm8gKmluZm8sIHN0cnVjdCBpbm9kZSAqaW5vZGUpCis8L3Zhcm5hbWU+OiBPcHRpb25hbC4gWW91IG1pZ2h0IHdhbnQgdG8gaGF2ZSB5b3VyIG93bgorPGZ1bmN0aW9uPm9wZW4oKTwvZnVuY3Rpb24+LCBlLmcuIHRvIGVuYWJsZSBpbnRlcnJ1cHRzIG9ubHkgd2hlbiB5b3VyCitkZXZpY2UgaXMgYWN0dWFsbHkgdXNlZC4KKzwvcGFyYT48L2xpc3RpdGVtPgorCis8bGlzdGl0ZW0+PHBhcmE+Cis8dmFybmFtZT5pbnQgKCpyZWxlYXNlKShzdHJ1Y3QgdWlvX2luZm8gKmluZm8sIHN0cnVjdCBpbm9kZSAqaW5vZGUpCis8L3Zhcm5hbWU+OiBPcHRpb25hbC4gSWYgeW91IGRlZmluZSB5b3VyIG93bgorPGZ1bmN0aW9uPm9wZW4oKTwvZnVuY3Rpb24+LCB5b3Ugd2lsbCBwcm9iYWJseSBhbHNvIHdhbnQgYSBjdXN0b20KKzxmdW5jdGlvbj5yZWxlYXNlKCk8L2Z1bmN0aW9uPiBmdW5jdGlvbi4KKzwvcGFyYT48L2xpc3RpdGVtPgorCis8bGlzdGl0ZW0+PHBhcmE+Cis8dmFybmFtZT5pbnQgKCppcnFjb250cm9sKShzdHJ1Y3QgdWlvX2luZm8gKmluZm8sIHMzMiBpcnFfb24pCis8L3Zhcm5hbWU+OiBPcHRpb25hbC4gSWYgeW91IG5lZWQgdG8gYmUgYWJsZSB0byBlbmFibGUgb3IgZGlzYWJsZQoraW50ZXJydXB0cyBmcm9tIHVzZXJzcGFjZSBieSB3cml0aW5nIHRvIDxmaWxlbmFtZT4vZGV2L3Vpb1g8L2ZpbGVuYW1lPiwKK3lvdSBjYW4gaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24uIFRoZSBwYXJhbWV0ZXIgPHZhcm5hbWU+aXJxX29uPC92YXJuYW1lPgord2lsbCBiZSAwIHRvIGRpc2FibGUgaW50ZXJydXB0cyBhbmQgMSB0byBlbmFibGUgdGhlbS4KKzwvcGFyYT48L2xpc3RpdGVtPgorPC9pdGVtaXplZGxpc3Q+CisKKzxwYXJhPgorVXN1YWxseSwgeW91ciBkZXZpY2Ugd2lsbCBoYXZlIG9uZSBvciBtb3JlIG1lbW9yeSByZWdpb25zIHRoYXQgY2FuIGJlIG1hcHBlZAordG8gdXNlciBzcGFjZS4gRm9yIGVhY2ggcmVnaW9uLCB5b3UgaGF2ZSB0byBzZXQgdXAgYQorPHZhcm5hbWU+c3RydWN0IHVpb19tZW08L3Zhcm5hbWU+IGluIHRoZSA8dmFybmFtZT5tZW1bXTwvdmFybmFtZT4gYXJyYXkuCitIZXJlJ3MgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZmllbGRzIG9mIDx2YXJuYW1lPnN0cnVjdCB1aW9fbWVtPC92YXJuYW1lPjoKKzwvcGFyYT4KKworPGl0ZW1pemVkbGlzdD4KKzxsaXN0aXRlbT48cGFyYT4KKzx2YXJuYW1lPmNvbnN0IGNoYXIgKm5hbWU8L3Zhcm5hbWU+OiBPcHRpb25hbC4gU2V0IHRoaXMgdG8gaGVscCBpZGVudGlmeQordGhlIG1lbW9yeSByZWdpb24sIGl0IHdpbGwgc2hvdyB1cCBpbiB0aGUgY29ycmVzcG9uZGluZyBzeXNmcyBub2RlLgorPC9wYXJhPjwvbGlzdGl0ZW0+CisKKzxsaXN0aXRlbT48cGFyYT4KKzx2YXJuYW1lPmludCBtZW10eXBlPC92YXJuYW1lPjogUmVxdWlyZWQgaWYgdGhlIG1hcHBpbmcgaXMgdXNlZC4gU2V0IHRoaXMgdG8KKzx2YXJuYW1lPlVJT19NRU1fUEhZUzwvdmFybmFtZT4gaWYgeW91IHlvdSBoYXZlIHBoeXNpY2FsIG1lbW9yeSBvbiB5b3VyCitjYXJkIHRvIGJlIG1hcHBlZC4gVXNlIDx2YXJuYW1lPlVJT19NRU1fTE9HSUNBTDwvdmFybmFtZT4gZm9yIGxvZ2ljYWwKK21lbW9yeSAoZS5nLiBhbGxvY2F0ZWQgd2l0aCA8ZnVuY3Rpb24+a21hbGxvYygpPC9mdW5jdGlvbj4pLiBUaGVyZSdzIGFsc28KKzx2YXJuYW1lPlVJT19NRU1fVklSVFVBTDwvdmFybmFtZT4gZm9yIHZpcnR1YWwgbWVtb3J5LgorPC9wYXJhPjwvbGlzdGl0ZW0+CisKKzxsaXN0aXRlbT48cGFyYT4KKzx2YXJuYW1lPnBoeXNfYWRkcl90IGFkZHI8L3Zhcm5hbWU+OiBSZXF1aXJlZCBpZiB0aGUgbWFwcGluZyBpcyB1c2VkLgorRmlsbCBpbiB0aGUgYWRkcmVzcyBvZiB5b3VyIG1lbW9yeSBibG9jay4gVGhpcyBhZGRyZXNzIGlzIHRoZSBvbmUgdGhhdAorYXBwZWFycyBpbiBzeXNmcy4KKzwvcGFyYT48L2xpc3RpdGVtPgorCis8bGlzdGl0ZW0+PHBhcmE+Cis8dmFybmFtZT5yZXNvdXJjZV9zaXplX3Qgc2l6ZTwvdmFybmFtZT46IEZpbGwgaW4gdGhlIHNpemUgb2YgdGhlCittZW1vcnkgYmxvY2sgdGhhdCA8dmFybmFtZT5hZGRyPC92YXJuYW1lPiBwb2ludHMgdG8uIElmIDx2YXJuYW1lPnNpemU8L3Zhcm5hbWU+CitpcyB6ZXJvLCB0aGUgbWFwcGluZyBpcyBjb25zaWRlcmVkIHVudXNlZC4gTm90ZSB0aGF0IHlvdQorPGVtcGhhc2lzPm11c3Q8L2VtcGhhc2lzPiBpbml0aWFsaXplIDx2YXJuYW1lPnNpemU8L3Zhcm5hbWU+IHdpdGggemVybyBmb3IKK2FsbCB1bnVzZWQgbWFwcGluZ3MuCis8L3BhcmE+PC9saXN0aXRlbT4KKworPGxpc3RpdGVtPjxwYXJhPgorPHZhcm5hbWU+dm9pZCAqaW50ZXJuYWxfYWRkcjwvdmFybmFtZT46IElmIHlvdSBoYXZlIHRvIGFjY2VzcyB0aGlzIG1lbW9yeQorcmVnaW9uIGZyb20gd2l0aGluIHlvdXIga2VybmVsIG1vZHVsZSwgeW91IHdpbGwgd2FudCB0byBtYXAgaXQgaW50ZXJuYWxseSBieQordXNpbmcgc29tZXRoaW5nIGxpa2UgPGZ1bmN0aW9uPmlvcmVtYXAoKTwvZnVuY3Rpb24+LiBBZGRyZXNzZXMKK3JldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gY2Fubm90IGJlIG1hcHBlZCB0byB1c2VyIHNwYWNlLCBzbyB5b3UgbXVzdCBub3QKK3N0b3JlIGl0IGluIDx2YXJuYW1lPmFkZHI8L3Zhcm5hbWU+LiBVc2UgPHZhcm5hbWU+aW50ZXJuYWxfYWRkcjwvdmFybmFtZT4KK2luc3RlYWQgdG8gcmVtZW1iZXIgc3VjaCBhbiBhZGRyZXNzLgorPC9wYXJhPjwvbGlzdGl0ZW0+Cis8L2l0ZW1pemVkbGlzdD4KKworPHBhcmE+CitQbGVhc2UgZG8gbm90IHRvdWNoIHRoZSA8dmFybmFtZT5tYXA8L3Zhcm5hbWU+IGVsZW1lbnQgb2YKKzx2YXJuYW1lPnN0cnVjdCB1aW9fbWVtPC92YXJuYW1lPiEgSXQgaXMgdXNlZCBieSB0aGUgVUlPIGZyYW1ld29yawordG8gc2V0IHVwIHN5c2ZzIGZpbGVzIGZvciB0aGlzIG1hcHBpbmcuIFNpbXBseSBsZWF2ZSBpdCBhbG9uZS4KKzwvcGFyYT4KKworPHBhcmE+CitTb21ldGltZXMsIHlvdXIgZGV2aWNlIGNhbiBoYXZlIG9uZSBvciBtb3JlIHBvcnQgcmVnaW9ucyB3aGljaCBjYW4gbm90IGJlCittYXBwZWQgdG8gdXNlcnNwYWNlLiBCdXQgaWYgdGhlcmUgYXJlIG90aGVyIHBvc3NpYmlsaXRpZXMgZm9yIHVzZXJzcGFjZSB0bworYWNjZXNzIHRoZXNlIHBvcnRzLCBpdCBtYWtlcyBzZW5zZSB0byBtYWtlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwb3J0cworYXZhaWxhYmxlIGluIHN5c2ZzLiBGb3IgZWFjaCByZWdpb24sIHlvdSBoYXZlIHRvIHNldCB1cCBhCis8dmFybmFtZT5zdHJ1Y3QgdWlvX3BvcnQ8L3Zhcm5hbWU+IGluIHRoZSA8dmFybmFtZT5wb3J0W108L3Zhcm5hbWU+IGFycmF5LgorSGVyZSdzIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZpZWxkcyBvZiA8dmFybmFtZT5zdHJ1Y3QgdWlvX3BvcnQ8L3Zhcm5hbWU+OgorPC9wYXJhPgorCis8aXRlbWl6ZWRsaXN0PgorPGxpc3RpdGVtPjxwYXJhPgorPHZhcm5hbWU+Y2hhciAqcG9ydHR5cGU8L3Zhcm5hbWU+OiBSZXF1aXJlZC4gU2V0IHRoaXMgdG8gb25lIG9mIHRoZSBwcmVkZWZpbmVkCitjb25zdGFudHMuIFVzZSA8dmFybmFtZT5VSU9fUE9SVF9YODY8L3Zhcm5hbWU+IGZvciB0aGUgaW9wb3J0cyBmb3VuZCBpbiB4ODYKK2FyY2hpdGVjdHVyZXMuCis8L3BhcmE+PC9saXN0aXRlbT4KKworPGxpc3RpdGVtPjxwYXJhPgorPHZhcm5hbWU+dW5zaWduZWQgbG9uZyBzdGFydDwvdmFybmFtZT46IFJlcXVpcmVkIGlmIHRoZSBwb3J0IHJlZ2lvbiBpcyB1c2VkLgorRmlsbCBpbiB0aGUgbnVtYmVyIG9mIHRoZSBmaXJzdCBwb3J0IG9mIHRoaXMgcmVnaW9uLgorPC9wYXJhPjwvbGlzdGl0ZW0+CisKKzxsaXN0aXRlbT48cGFyYT4KKzx2YXJuYW1lPnVuc2lnbmVkIGxvbmcgc2l6ZTwvdmFybmFtZT46IEZpbGwgaW4gdGhlIG51bWJlciBvZiBwb3J0cyBpbiB0aGlzCityZWdpb24uIElmIDx2YXJuYW1lPnNpemU8L3Zhcm5hbWU+IGlzIHplcm8sIHRoZSByZWdpb24gaXMgY29uc2lkZXJlZCB1bnVzZWQuCitOb3RlIHRoYXQgeW91IDxlbXBoYXNpcz5tdXN0PC9lbXBoYXNpcz4gaW5pdGlhbGl6ZSA8dmFybmFtZT5zaXplPC92YXJuYW1lPgord2l0aCB6ZXJvIGZvciBhbGwgdW51c2VkIHJlZ2lvbnMuCis8L3BhcmE+PC9saXN0aXRlbT4KKzwvaXRlbWl6ZWRsaXN0PgorCis8cGFyYT4KK1BsZWFzZSBkbyBub3QgdG91Y2ggdGhlIDx2YXJuYW1lPnBvcnRpbzwvdmFybmFtZT4gZWxlbWVudCBvZgorPHZhcm5hbWU+c3RydWN0IHVpb19wb3J0PC92YXJuYW1lPiEgSXQgaXMgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBVSU8KK2ZyYW1ld29yayB0byBzZXQgdXAgc3lzZnMgZmlsZXMgZm9yIHRoaXMgcmVnaW9uLiBTaW1wbHkgbGVhdmUgaXQgYWxvbmUuCis8L3BhcmE+CisKKzwvc2VjdDE+CisKKzxzZWN0MSBpZD0iYWRkaW5nX2lycV9oYW5kbGVyIj4KKzx0aXRsZT5BZGRpbmcgYW4gaW50ZXJydXB0IGhhbmRsZXI8L3RpdGxlPgorCTxwYXJhPgorCVdoYXQgeW91IG5lZWQgdG8gZG8gaW4geW91ciBpbnRlcnJ1cHQgaGFuZGxlciBkZXBlbmRzIG9uIHlvdXIKKwloYXJkd2FyZSBhbmQgb24gaG93IHlvdSB3YW50IHRvCWhhbmRsZSBpdC4gWW91IHNob3VsZCB0cnkgdG8KKwlrZWVwIHRoZSBhbW91bnQgb2YgY29kZSBpbiB5b3VyIGtlcm5lbCBpbnRlcnJ1cHQgaGFuZGxlciBsb3cuCisJSWYgeW91ciBoYXJkd2FyZSByZXF1aXJlcyBubyBhY3Rpb24gdGhhdCB5b3UKKwk8ZW1waGFzaXM+aGF2ZTwvZW1waGFzaXM+IHRvIHBlcmZvcm0gYWZ0ZXIgZWFjaCBpbnRlcnJ1cHQsCisJdGhlbiB5b3VyIGhhbmRsZXIgY2FuIGJlIGVtcHR5LjwvcGFyYT4gPHBhcmE+SWYsIG9uIHRoZSBvdGhlcgorCWhhbmQsIHlvdXIgaGFyZHdhcmUgPGVtcGhhc2lzPm5lZWRzPC9lbXBoYXNpcz4gc29tZSBhY3Rpb24gdG8KKwliZSBwZXJmb3JtZWQgYWZ0ZXIgZWFjaCBpbnRlcnJ1cHQsIHRoZW4geW91CisJPGVtcGhhc2lzPm11c3Q8L2VtcGhhc2lzPiBkbyBpdCBpbiB5b3VyIGtlcm5lbCBtb2R1bGUuIE5vdGUKKwl0aGF0IHlvdSBjYW5ub3QgcmVseSBvbiB0aGUgdXNlcnNwYWNlIHBhcnQgb2YgeW91ciBkcml2ZXIuIFlvdXIKKwl1c2Vyc3BhY2UgcHJvZ3JhbSBjYW4gdGVybWluYXRlIGF0IGFueSB0aW1lLCBwb3NzaWJseSBsZWF2aW5nCisJeW91ciBoYXJkd2FyZSBpbiBhIHN0YXRlIHdoZXJlIHByb3BlciBpbnRlcnJ1cHQgaGFuZGxpbmcgaXMKKwlzdGlsbCByZXF1aXJlZC4KKwk8L3BhcmE+CisKKwk8cGFyYT4KKwlUaGVyZSBtaWdodCBhbHNvIGJlIGFwcGxpY2F0aW9ucyB3aGVyZSB5b3Ugd2FudCB0byByZWFkIGRhdGEKKwlmcm9tIHlvdXIgaGFyZHdhcmUgYXQgZWFjaCBpbnRlcnJ1cHQgYW5kIGJ1ZmZlciBpdCBpbiBhIHBpZWNlCisJb2Yga2VybmVsIG1lbW9yeSB5b3UndmUgYWxsb2NhdGVkIGZvciB0aGF0IHB1cnBvc2UuICBXaXRoIHRoaXMKKwl0ZWNobmlxdWUgeW91IGNvdWxkIGF2b2lkIGxvc3Mgb2YgZGF0YSBpZiB5b3VyIHVzZXJzcGFjZQorCXByb2dyYW0gbWlzc2VzIGFuIGludGVycnVwdC4KKwk8L3BhcmE+CisKKwk8cGFyYT4KKwlBIG5vdGUgb24gc2hhcmVkIGludGVycnVwdHM6IFlvdXIgZHJpdmVyIHNob3VsZCBzdXBwb3J0CisJaW50ZXJydXB0IHNoYXJpbmcgd2hlbmV2ZXIgdGhpcyBpcyBwb3NzaWJsZS4gSXQgaXMgcG9zc2libGUgaWYKKwlhbmQgb25seSBpZiB5b3VyIGRyaXZlciBjYW4gZGV0ZWN0IHdoZXRoZXIgeW91ciBoYXJkd2FyZSBoYXMKKwl0cmlnZ2VyZWQgdGhlIGludGVycnVwdCBvciBub3QuIFRoaXMgaXMgdXN1YWxseSBkb25lIGJ5IGxvb2tpbmcKKwlhdCBhbiBpbnRlcnJ1cHQgc3RhdHVzIHJlZ2lzdGVyLiBJZiB5b3VyIGRyaXZlciBzZWVzIHRoYXQgdGhlCisJSVJRIGJpdCBpcyBhY3R1YWxseSBzZXQsIGl0IHdpbGwgcGVyZm9ybSBpdHMgYWN0aW9ucywgYW5kIHRoZQorCWhhbmRsZXIgcmV0dXJucyBJUlFfSEFORExFRC4gSWYgdGhlIGRyaXZlciBkZXRlY3RzIHRoYXQgaXQgd2FzCisJbm90IHlvdXIgaGFyZHdhcmUgdGhhdCBjYXVzZWQgdGhlIGludGVycnVwdCwgaXQgd2lsbCBkbyBub3RoaW5nCisJYW5kIHJldHVybiBJUlFfTk9ORSwgYWxsb3dpbmcgdGhlIGtlcm5lbCB0byBjYWxsIHRoZSBuZXh0CisJcG9zc2libGUgaW50ZXJydXB0IGhhbmRsZXIuCisJPC9wYXJhPgorCisJPHBhcmE+CisJSWYgeW91IGRlY2lkZSBub3QgdG8gc3VwcG9ydCBzaGFyZWQgaW50ZXJydXB0cywgeW91ciBjYXJkCisJd29uJ3Qgd29yayBpbiBjb21wdXRlcnMgd2l0aCBubyBmcmVlIGludGVycnVwdHMuIEFzIHRoaXMKKwlmcmVxdWVudGx5IGhhcHBlbnMgb24gdGhlIFBDIHBsYXRmb3JtLCB5b3UgY2FuIHNhdmUgeW91cnNlbGYgYQorCWxvdCBvZiB0cm91YmxlIGJ5IHN1cHBvcnRpbmcgaW50ZXJydXB0IHNoYXJpbmcuCisJPC9wYXJhPgorPC9zZWN0MT4KKworPHNlY3QxIGlkPSJ1c2luZ191aW9fcGRydiI+Cis8dGl0bGU+VXNpbmcgdWlvX3BkcnYgZm9yIHBsYXRmb3JtIGRldmljZXM8L3RpdGxlPgorCTxwYXJhPgorCUluIG1hbnkgY2FzZXMsIFVJTyBkcml2ZXJzIGZvciBwbGF0Zm9ybSBkZXZpY2VzIGNhbiBiZSBoYW5kbGVkIGluIGEKKwlnZW5lcmljIHdheS4gSW4gdGhlIHNhbWUgcGxhY2Ugd2hlcmUgeW91IGRlZmluZSB5b3VyCisJPHZhcm5hbWU+c3RydWN0IHBsYXRmb3JtX2RldmljZTwvdmFybmFtZT4sIHlvdSBzaW1wbHkgYWxzbyBpbXBsZW1lbnQKKwl5b3VyIGludGVycnVwdCBoYW5kbGVyIGFuZCBmaWxsIHlvdXIKKwk8dmFybmFtZT5zdHJ1Y3QgdWlvX2luZm88L3Zhcm5hbWU+LiBBIHBvaW50ZXIgdG8gdGhpcworCTx2YXJuYW1lPnN0cnVjdCB1aW9faW5mbzwvdmFybmFtZT4gaXMgdGhlbiB1c2VkIGFzCisJPHZhcm5hbWU+cGxhdGZvcm1fZGF0YTwvdmFybmFtZT4gZm9yIHlvdXIgcGxhdGZvcm0gZGV2aWNlLgorCTwvcGFyYT4KKwk8cGFyYT4KKwlZb3UgYWxzbyBuZWVkIHRvIHNldCB1cCBhbiBhcnJheSBvZiA8dmFybmFtZT5zdHJ1Y3QgcmVzb3VyY2U8L3Zhcm5hbWU+CisJY29udGFpbmluZyBhZGRyZXNzZXMgYW5kIHNpemVzIG9mIHlvdXIgbWVtb3J5IG1hcHBpbmdzLiBUaGlzCisJaW5mb3JtYXRpb24gaXMgcGFzc2VkIHRvIHRoZSBkcml2ZXIgdXNpbmcgdGhlCisJPHZhcm5hbWU+LnJlc291cmNlPC92YXJuYW1lPiBhbmQgPHZhcm5hbWU+Lm51bV9yZXNvdXJjZXM8L3Zhcm5hbWU+CisJZWxlbWVudHMgb2YgPHZhcm5hbWU+c3RydWN0IHBsYXRmb3JtX2RldmljZTwvdmFybmFtZT4uCisJPC9wYXJhPgorCTxwYXJhPgorCVlvdSBub3cgaGF2ZSB0byBzZXQgdGhlIDx2YXJuYW1lPi5uYW1lPC92YXJuYW1lPiBlbGVtZW50IG9mCisJPHZhcm5hbWU+c3RydWN0IHBsYXRmb3JtX2RldmljZTwvdmFybmFtZT4gdG8KKwk8dmFybmFtZT4idWlvX3BkcnYiPC92YXJuYW1lPiB0byB1c2UgdGhlIGdlbmVyaWMgVUlPIHBsYXRmb3JtIGRldmljZQorCWRyaXZlci4gVGhpcyBkcml2ZXIgd2lsbCBmaWxsIHRoZSA8dmFybmFtZT5tZW1bXTwvdmFybmFtZT4gYXJyYXkKKwlhY2NvcmRpbmcgdG8gdGhlIHJlc291cmNlcyBnaXZlbiwgYW5kIHJlZ2lzdGVyIHRoZSBkZXZpY2UuCisJPC9wYXJhPgorCTxwYXJhPgorCVRoZSBhZHZhbnRhZ2Ugb2YgdGhpcyBhcHByb2FjaCBpcyB0aGF0IHlvdSBvbmx5IGhhdmUgdG8gZWRpdCBhIGZpbGUKKwl5b3UgbmVlZCB0byBlZGl0IGFueXdheS4gWW91IGRvIG5vdCBoYXZlIHRvIGNyZWF0ZSBhbiBleHRyYSBkcml2ZXIuCisJPC9wYXJhPgorPC9zZWN0MT4KKworPHNlY3QxIGlkPSJ1c2luZ191aW9fcGRydl9nZW5pcnEiPgorPHRpdGxlPlVzaW5nIHVpb19wZHJ2X2dlbmlycSBmb3IgcGxhdGZvcm0gZGV2aWNlczwvdGl0bGU+CisJPHBhcmE+CisJRXNwZWNpYWxseSBpbiBlbWJlZGRlZCBkZXZpY2VzLCB5b3UgZnJlcXVlbnRseSBmaW5kIGNoaXBzIHdoZXJlIHRoZQorCWlycSBwaW4gaXMgdGllZCB0byBpdHMgb3duIGRlZGljYXRlZCBpbnRlcnJ1cHQgbGluZS4gSW4gc3VjaCBjYXNlcywKKwl3aGVyZSB5b3UgY2FuIGJlIHJlYWxseSBzdXJlIHRoZSBpbnRlcnJ1cHQgaXMgbm90IHNoYXJlZCwgd2UgY2FuIHRha2UKKwl0aGUgY29uY2VwdCBvZiA8dmFybmFtZT51aW9fcGRydjwvdmFybmFtZT4gb25lIHN0ZXAgZnVydGhlciBhbmQgdXNlIGEKKwlnZW5lcmljIGludGVycnVwdCBoYW5kbGVyLiBUaGF0J3Mgd2hhdAorCTx2YXJuYW1lPnVpb19wZHJ2X2dlbmlycTwvdmFybmFtZT4gZG9lcy4KKwk8L3BhcmE+CisJPHBhcmE+CisJVGhlIHNldHVwIGZvciB0aGlzIGRyaXZlciBpcyB0aGUgc2FtZSBhcyBkZXNjcmliZWQgYWJvdmUgZm9yCisJPHZhcm5hbWU+dWlvX3BkcnY8L3Zhcm5hbWU+LCBleGNlcHQgdGhhdCB5b3UgZG8gbm90IGltcGxlbWVudCBhbgorCWludGVycnVwdCBoYW5kbGVyLiBUaGUgPHZhcm5hbWU+LmhhbmRsZXI8L3Zhcm5hbWU+IGVsZW1lbnQgb2YKKwk8dmFybmFtZT5zdHJ1Y3QgdWlvX2luZm88L3Zhcm5hbWU+IG11c3QgcmVtYWluCisJPHZhcm5hbWU+TlVMTDwvdmFybmFtZT4uIFRoZSAgPHZhcm5hbWU+LmlycV9mbGFnczwvdmFybmFtZT4gZWxlbWVudAorCW11c3Qgbm90IGNvbnRhaW4gPHZhcm5hbWU+SVJRRl9TSEFSRUQ8L3Zhcm5hbWU+LgorCTwvcGFyYT4KKwk8cGFyYT4KKwlZb3Ugd2lsbCBzZXQgdGhlIDx2YXJuYW1lPi5uYW1lPC92YXJuYW1lPiBlbGVtZW50IG9mCisJPHZhcm5hbWU+c3RydWN0IHBsYXRmb3JtX2RldmljZTwvdmFybmFtZT4gdG8KKwk8dmFybmFtZT4idWlvX3BkcnZfZ2VuaXJxIjwvdmFybmFtZT4gdG8gdXNlIHRoaXMgZHJpdmVyLgorCTwvcGFyYT4KKwk8cGFyYT4KKwlUaGUgZ2VuZXJpYyBpbnRlcnJ1cHQgaGFuZGxlciBvZiA8dmFybmFtZT51aW9fcGRydl9nZW5pcnE8L3Zhcm5hbWU+CisJd2lsbCBzaW1wbHkgZGlzYWJsZSB0aGUgaW50ZXJydXB0IGxpbmUgdXNpbmcKKwk8ZnVuY3Rpb24+ZGlzYWJsZV9pcnFfbm9zeW5jKCk8L2Z1bmN0aW9uPi4gQWZ0ZXIgZG9pbmcgaXRzIHdvcmssCisJdXNlcnNwYWNlIGNhbiByZWVuYWJsZSB0aGUgaW50ZXJydXB0IGJ5IHdyaXRpbmcgMHgwMDAwMDAwMSB0byB0aGUgVUlPCisJZGV2aWNlIGZpbGUuIFRoZSBkcml2ZXIgYWxyZWFkeSBpbXBsZW1lbnRzIGFuCisJPGZ1bmN0aW9uPmlycV9jb250cm9sKCk8L2Z1bmN0aW9uPiB0byBtYWtlIHRoaXMgcG9zc2libGUsIHlvdSBtdXN0IG5vdAorCWltcGxlbWVudCB5b3VyIG93bi4KKwk8L3BhcmE+CisJPHBhcmE+CisJVXNpbmcgPHZhcm5hbWU+dWlvX3BkcnZfZ2VuaXJxPC92YXJuYW1lPiBub3Qgb25seSBzYXZlcyBhIGZldyBsaW5lcyBvZgorCWludGVycnVwdCBoYW5kbGVyIGNvZGUuIFlvdSBhbHNvIGRvIG5vdCBuZWVkIHRvIGtub3cgYW55dGhpbmcgYWJvdXQKKwl0aGUgY2hpcCdzIGludGVybmFsIHJlZ2lzdGVycyB0byBjcmVhdGUgdGhlIGtlcm5lbCBwYXJ0IG9mIHRoZSBkcml2ZXIuCisJQWxsIHlvdSBuZWVkIHRvIGtub3cgaXMgdGhlIGlycSBudW1iZXIgb2YgdGhlIHBpbiB0aGUgY2hpcCBpcworCWNvbm5lY3RlZCB0by4KKwk8L3BhcmE+Cis8L3NlY3QxPgorCis8c2VjdDEgaWQ9InVzaW5nLXVpb19kbWVtX2dlbmlycSI+Cis8dGl0bGU+VXNpbmcgdWlvX2RtZW1fZ2VuaXJxIGZvciBwbGF0Zm9ybSBkZXZpY2VzPC90aXRsZT4KKwk8cGFyYT4KKwlJbiBhZGRpdGlvbiB0byBzdGF0aWNhbGx5IGFsbG9jYXRlZCBtZW1vcnkgcmFuZ2VzLCB0aGV5IG1heSBhbHNvIGJlCisJYSBkZXNpcmUgdG8gdXNlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCByZWdpb25zIGluIGEgdXNlciBzcGFjZSBkcml2ZXIuCisJSW4gcGFydGljdWxhciwgYmVpbmcgYWJsZSB0byBhY2Nlc3MgbWVtb3J5IG1hZGUgYXZhaWxhYmxlIHRocm91Z2ggdGhlCisJZG1hLW1hcHBpbmcgQVBJLCBtYXkgYmUgcGFydGljdWxhcmx5IHVzZWZ1bC4gIFRoZQorCTx2YXJuYW1lPnVpb19kbWVtX2dlbmlycTwvdmFybmFtZT4gZHJpdmVyIHByb3ZpZGVzIGEgd2F5IHRvIGFjY29tcGxpc2gKKwl0aGlzLgorCTwvcGFyYT4KKwk8cGFyYT4KKwlUaGlzIGRyaXZlciBpcyB1c2VkIGluIGEgc2ltaWxhciBtYW5uZXIgdG8gdGhlCisJPHZhcm5hbWU+InVpb19wZHJ2X2dlbmlycSI8L3Zhcm5hbWU+IGRyaXZlciB3aXRoIHJlc3BlY3QgdG8gaW50ZXJydXB0CisJY29uZmlndXJhdGlvbiBhbmQgaGFuZGxpbmcuCisJPC9wYXJhPgorCTxwYXJhPgorCVNldCB0aGUgPHZhcm5hbWU+Lm5hbWU8L3Zhcm5hbWU+IGVsZW1lbnQgb2YKKwk8dmFybmFtZT5zdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlPC92YXJuYW1lPiB0bworCTx2YXJuYW1lPiJ1aW9fZG1lbV9nZW5pcnEiPC92YXJuYW1lPiB0byB1c2UgdGhpcyBkcml2ZXIuCisJPC9wYXJhPgorCTxwYXJhPgorCVdoZW4gdXNpbmcgdGhpcyBkcml2ZXIsIGZpbGwgaW4gdGhlIDx2YXJuYW1lPi5wbGF0Zm9ybV9kYXRhPC92YXJuYW1lPgorCWVsZW1lbnQgb2YgPHZhcm5hbWU+c3RydWN0IHBsYXRmb3JtX2RldmljZTwvdmFybmFtZT4sIHdoaWNoIGlzIG9mIHR5cGUKKwk8dmFybmFtZT5zdHJ1Y3QgdWlvX2RtZW1fZ2VuaXJxX3BkYXRhPC92YXJuYW1lPiBhbmQgd2hpY2ggY29udGFpbnMgdGhlCisJZm9sbG93aW5nIGVsZW1lbnRzOgorCTwvcGFyYT4KKwk8aXRlbWl6ZWRsaXN0PgorCTxsaXN0aXRlbT48cGFyYT48dmFybmFtZT5zdHJ1Y3QgdWlvX2luZm8gdWlvaW5mbzwvdmFybmFtZT46IFRoZSBzYW1lCisJc3RydWN0dXJlIHVzZWQgYXMgdGhlICA8dmFybmFtZT51aW9fcGRydl9nZW5pcnE8L3Zhcm5hbWU+IHBsYXRmb3JtCisJZGF0YTwvcGFyYT48L2xpc3RpdGVtPgorCTxsaXN0aXRlbT48cGFyYT48dmFybmFtZT51bnNpZ25lZCBpbnQgKmR5bmFtaWNfcmVnaW9uX3NpemVzPC92YXJuYW1lPjoKKwlQb2ludGVyIHRvIGxpc3Qgb2Ygc2l6ZXMgb2YgZHluYW1pYyBtZW1vcnkgcmVnaW9ucyB0byBiZSBtYXBwZWQgaW50bworCXVzZXIgc3BhY2UuCisJPC9wYXJhPjwvbGlzdGl0ZW0+CisJPGxpc3RpdGVtPjxwYXJhPjx2YXJuYW1lPnVuc2lnbmVkIGludCBudW1fZHluYW1pY19yZWdpb25zPC92YXJuYW1lPjoKKwlOdW1iZXIgb2YgZWxlbWVudHMgaW4gPHZhcm5hbWU+ZHluYW1pY19yZWdpb25fc2l6ZXM8L3Zhcm5hbWU+IGFycmF5LgorCTwvcGFyYT48L2xpc3RpdGVtPgorCTwvaXRlbWl6ZWRsaXN0PgorCTxwYXJhPgorCVRoZSBkeW5hbWljIHJlZ2lvbnMgZGVmaW5lZCBpbiB0aGUgcGxhdGZvcm0gZGF0YSB3aWxsIGJlIGFwcGVuZGVkIHRvCisJdGhlIDx2YXJuYW1lPiBtZW1bXSA8L3Zhcm5hbWU+IGFycmF5IGFmdGVyIHRoZSBwbGF0Zm9ybSBkZXZpY2UKKwlyZXNvdXJjZXMsIHdoaWNoIGltcGxpZXMgdGhhdCB0aGUgdG90YWwgbnVtYmVyIG9mIHN0YXRpYyBhbmQgZHluYW1pYworCW1lbW9yeSByZWdpb25zIGNhbm5vdCBleGNlZWQgPHZhcm5hbWU+TUFYX1VJT19NQVBTPC92YXJuYW1lPi4KKwk8L3BhcmE+CisJPHBhcmE+CisJVGhlIGR5bmFtaWMgbWVtb3J5IHJlZ2lvbnMgd2lsbCBiZSBhbGxvY2F0ZWQgd2hlbiB0aGUgVUlPIGRldmljZSBmaWxlLAorCTx2YXJuYW1lPi9kZXYvdWlvWDwvdmFybmFtZT4gaXMgb3BlbmVkLgorCVNpbWlsYXIgdG8gc3RhdGljIG1lbW9yeSByZXNvdXJjZXMsIHRoZSBtZW1vcnkgcmVnaW9uIGluZm9ybWF0aW9uIGZvcgorCWR5bmFtaWMgcmVnaW9ucyBpcyB0aGVuIHZpc2libGUgdmlhIHN5c2ZzIGF0CisJPHZhcm5hbWU+L3N5cy9jbGFzcy91aW8vdWlvWC9tYXBzL21hcFkvKjwvdmFybmFtZT4uCisJVGhlIGR5bmFtaWMgbWVtb3J5IHJlZ2lvbnMgd2lsbCBiZSBmcmVlZCB3aGVuIHRoZSBVSU8gZGV2aWNlIGZpbGUgaXMKKwljbG9zZWQuIFdoZW4gbm8gcHJvY2Vzc2VzIGFyZSBob2xkaW5nIHRoZSBkZXZpY2UgZmlsZSBvcGVuLCB0aGUgYWRkcmVzcworCXJldHVybmVkIHRvIHVzZXJzcGFjZSBpcyB+MC4KKwk8L3BhcmE+Cis8L3NlY3QxPgorCis8L2NoYXB0ZXI+CisKKzxjaGFwdGVyIGlkPSJ1c2Vyc3BhY2VfZHJpdmVyIiB4cmVmbGFiZWw9IldyaXRpbmcgYSBkcml2ZXIgaW4gdXNlciBzcGFjZSI+Cis8P2RiaHRtbCBmaWxlbmFtZT0idXNlcnNwYWNlX2RyaXZlci5odG1sIj8+Cis8dGl0bGU+V3JpdGluZyBhIGRyaXZlciBpbiB1c2Vyc3BhY2U8L3RpdGxlPgorCTxwYXJhPgorCU9uY2UgeW91IGhhdmUgYSB3b3JraW5nIGtlcm5lbCBtb2R1bGUgZm9yIHlvdXIgaGFyZHdhcmUsIHlvdSBjYW4KKwl3cml0ZSB0aGUgdXNlcnNwYWNlIHBhcnQgb2YgeW91ciBkcml2ZXIuIFlvdSBkb24ndCBuZWVkIGFueSBzcGVjaWFsCisJbGlicmFyaWVzLCB5b3VyIGRyaXZlciBjYW4gYmUgd3JpdHRlbiBpbiBhbnkgcmVhc29uYWJsZSBsYW5ndWFnZSwKKwl5b3UgY2FuIHVzZSBmbG9hdGluZyBwb2ludCBudW1iZXJzIGFuZCBzbyBvbi4gSW4gc2hvcnQsIHlvdSBjYW4KKwl1c2UgYWxsIHRoZSB0b29scyBhbmQgbGlicmFyaWVzIHlvdSdkIG5vcm1hbGx5IHVzZSBmb3Igd3JpdGluZyBhCisJdXNlcnNwYWNlIGFwcGxpY2F0aW9uLgorCTwvcGFyYT4KKworPHNlY3QxIGlkPSJnZXR0aW5nX3Vpb19pbmZvcm1hdGlvbiI+Cis8dGl0bGU+R2V0dGluZyBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIFVJTyBkZXZpY2U8L3RpdGxlPgorCTxwYXJhPgorCUluZm9ybWF0aW9uIGFib3V0IGFsbCBVSU8gZGV2aWNlcyBpcyBhdmFpbGFibGUgaW4gc3lzZnMuIFRoZQorCWZpcnN0IHRoaW5nIHlvdSBzaG91bGQgZG8gaW4geW91ciBkcml2ZXIgaXMgY2hlY2sKKwk8dmFybmFtZT5uYW1lPC92YXJuYW1lPiBhbmQgPHZhcm5hbWU+dmVyc2lvbjwvdmFybmFtZT4gdG8KKwltYWtlIHN1cmUgeW91ciB0YWxraW5nIHRvIHRoZSByaWdodCBkZXZpY2UgYW5kIHRoYXQgaXRzIGtlcm5lbAorCWRyaXZlciBoYXMgdGhlIHZlcnNpb24geW91IGV4cGVjdC4KKwk8L3BhcmE+CisJPHBhcmE+CisJWW91IHNob3VsZCBhbHNvIG1ha2Ugc3VyZSB0aGF0IHRoZSBtZW1vcnkgbWFwcGluZyB5b3UgbmVlZAorCWV4aXN0cyBhbmQgaGFzIHRoZSBzaXplIHlvdSBleHBlY3QuCisJPC9wYXJhPgorCTxwYXJhPgorCVRoZXJlIGlzIGEgdG9vbCBjYWxsZWQgPHZhcm5hbWU+bHN1aW88L3Zhcm5hbWU+IHRoYXQgbGlzdHMKKwlVSU8gZGV2aWNlcyBhbmQgdGhlaXIgYXR0cmlidXRlcy4gSXQgaXMgYXZhaWxhYmxlIGhlcmU6CisJPC9wYXJhPgorCTxwYXJhPgorCTx1bGluayB1cmw9Imh0dHA6Ly93d3cub3NhZGwub3JnL3Byb2plY3RzL2Rvd25sb2Fkcy9VSU8vdXNlci8iPgorCQlodHRwOi8vd3d3Lm9zYWRsLm9yZy9wcm9qZWN0cy9kb3dubG9hZHMvVUlPL3VzZXIvPC91bGluaz4KKwk8L3BhcmE+CisJPHBhcmE+CisJV2l0aCA8dmFybmFtZT5sc3VpbzwvdmFybmFtZT4geW91IGNhbiBxdWlja2x5IGNoZWNrIGlmIHlvdXIKKwlrZXJuZWwgbW9kdWxlIGlzIGxvYWRlZCBhbmQgd2hpY2ggYXR0cmlidXRlcyBpdCBleHBvcnRzLgorCUhhdmUgYSBsb29rIGF0IHRoZSBtYW5wYWdlIGZvciBkZXRhaWxzLgorCTwvcGFyYT4KKwk8cGFyYT4KKwlUaGUgc291cmNlIGNvZGUgb2YgPHZhcm5hbWU+bHN1aW88L3Zhcm5hbWU+IGNhbiBzZXJ2ZSBhcyBhbgorCWV4YW1wbGUgZm9yIGdldHRpbmcgaW5mb3JtYXRpb24gYWJvdXQgYW4gVUlPIGRldmljZS4KKwlUaGUgZmlsZSA8ZmlsZW5hbWU+dWlvX2hlbHBlci5jPC9maWxlbmFtZT4gY29udGFpbnMgYSBsb3Qgb2YKKwlmdW5jdGlvbnMgeW91IGNvdWxkIHVzZSBpbiB5b3VyIHVzZXJzcGFjZSBkcml2ZXIgY29kZS4KKwk8L3BhcmE+Cis8L3NlY3QxPgorCis8c2VjdDEgaWQ9Im1tYXBfZGV2aWNlX21lbW9yeSI+Cis8dGl0bGU+bW1hcCgpIGRldmljZSBtZW1vcnk8L3RpdGxlPgorCTxwYXJhPgorCUFmdGVyIHlvdSBtYWRlIHN1cmUgeW91J3ZlIGdvdCB0aGUgcmlnaHQgZGV2aWNlIHdpdGggdGhlCisJbWVtb3J5IG1hcHBpbmdzIHlvdSBuZWVkLCBhbGwgeW91IGhhdmUgdG8gZG8gaXMgdG8gY2FsbAorCTxmdW5jdGlvbj5tbWFwKCk8L2Z1bmN0aW9uPiB0byBtYXAgdGhlIGRldmljZSdzIG1lbW9yeQorCXRvIHVzZXJzcGFjZS4KKwk8L3BhcmE+CisJPHBhcmE+CisJVGhlIHBhcmFtZXRlciA8dmFybmFtZT5vZmZzZXQ8L3Zhcm5hbWU+IG9mIHRoZQorCTxmdW5jdGlvbj5tbWFwKCk8L2Z1bmN0aW9uPiBjYWxsIGhhcyBhIHNwZWNpYWwgbWVhbmluZworCWZvciBVSU8gZGV2aWNlczogSXQgaXMgdXNlZCB0byBzZWxlY3Qgd2hpY2ggbWFwcGluZyBvZgorCXlvdXIgZGV2aWNlIHlvdSB3YW50IHRvIG1hcC4gVG8gbWFwIHRoZSBtZW1vcnkgb2YKKwltYXBwaW5nIE4sIHlvdSBoYXZlIHRvIHVzZSBOIHRpbWVzIHRoZSBwYWdlIHNpemUgYXMKKwl5b3VyIG9mZnNldDoKKwk8L3BhcmE+Cis8cHJvZ3JhbWxpc3RpbmcgZm9ybWF0PSJsaW5lc3BlY2lmaWMiPgorCW9mZnNldCA9IE4gKiBnZXRwYWdlc2l6ZSgpOworPC9wcm9ncmFtbGlzdGluZz4KKwk8cGFyYT4KKwlOIHN0YXJ0cyBmcm9tIHplcm8sIHNvIGlmIHlvdSd2ZSBnb3Qgb25seSBvbmUgbWVtb3J5CisJcmFuZ2UgdG8gbWFwLCBzZXQgPHZhcm5hbWU+b2Zmc2V0ID0gMDwvdmFybmFtZT4uCisJQSBkcmF3YmFjayBvZiB0aGlzIHRlY2huaXF1ZSBpcyB0aGF0IG1lbW9yeSBpcyBhbHdheXMKKwltYXBwZWQgYmVnaW5uaW5nIHdpdGggaXRzIHN0YXJ0IGFkZHJlc3MuCisJPC9wYXJhPgorPC9zZWN0MT4KKworPHNlY3QxIGlkPSJ3YWl0X2Zvcl9pbnRlcnJ1cHRzIj4KKzx0aXRsZT5XYWl0aW5nIGZvciBpbnRlcnJ1cHRzPC90aXRsZT4KKwk8cGFyYT4KKwlBZnRlciB5b3Ugc3VjY2Vzc2Z1bGx5IG1hcHBlZCB5b3VyIGRldmljZXMgbWVtb3J5LCB5b3UKKwljYW4gYWNjZXNzIGl0IGxpa2UgYW4gb3JkaW5hcnkgYXJyYXkuIFVzdWFsbHksIHlvdSB3aWxsCisJcGVyZm9ybSBzb21lIGluaXRpYWxpemF0aW9uLiBBZnRlciB0aGF0LCB5b3VyIGhhcmR3YXJlCisJc3RhcnRzIHdvcmtpbmcgYW5kIHdpbGwgZ2VuZXJhdGUgYW4gaW50ZXJydXB0IGFzIHNvb24KKwlhcyBpdCdzIGZpbmlzaGVkLCBoYXMgc29tZSBkYXRhIGF2YWlsYWJsZSwgb3IgbmVlZHMgeW91cgorCWF0dGVudGlvbiBiZWNhdXNlIGFuIGVycm9yIG9jY3VycmVkLgorCTwvcGFyYT4KKwk8cGFyYT4KKwk8ZmlsZW5hbWU+L2Rldi91aW9YPC9maWxlbmFtZT4gaXMgYSByZWFkLW9ubHkgZmlsZS4gQQorCTxmdW5jdGlvbj5yZWFkKCk8L2Z1bmN0aW9uPiB3aWxsIGFsd2F5cyBibG9jayB1bnRpbCBhbgorCWludGVycnVwdCBvY2N1cnMuIFRoZXJlIGlzIG9ubHkgb25lIGxlZ2FsIHZhbHVlIGZvciB0aGUKKwk8dmFybmFtZT5jb3VudDwvdmFybmFtZT4gcGFyYW1ldGVyIG9mCisJPGZ1bmN0aW9uPnJlYWQoKTwvZnVuY3Rpb24+LCBhbmQgdGhhdCBpcyB0aGUgc2l6ZSBvZiBhCisJc2lnbmVkIDMyIGJpdCBpbnRlZ2VyICg0KS4gQW55IG90aGVyIHZhbHVlIGZvcgorCTx2YXJuYW1lPmNvdW50PC92YXJuYW1lPiBjYXVzZXMgPGZ1bmN0aW9uPnJlYWQoKTwvZnVuY3Rpb24+CisJdG8gZmFpbC4gVGhlIHNpZ25lZCAzMiBiaXQgaW50ZWdlciByZWFkIGlzIHRoZSBpbnRlcnJ1cHQKKwljb3VudCBvZiB5b3VyIGRldmljZS4gSWYgdGhlIHZhbHVlIGlzIG9uZSBtb3JlIHRoYW4gdGhlIHZhbHVlCisJeW91IHJlYWQgdGhlIGxhc3QgdGltZSwgZXZlcnl0aGluZyBpcyBPSy4gSWYgdGhlIGRpZmZlcmVuY2UKKwlpcyBncmVhdGVyIHRoYW4gb25lLCB5b3UgbWlzc2VkIGludGVycnVwdHMuCisJPC9wYXJhPgorCTxwYXJhPgorCVlvdSBjYW4gYWxzbyB1c2UgPGZ1bmN0aW9uPnNlbGVjdCgpPC9mdW5jdGlvbj4gb24KKwk8ZmlsZW5hbWU+L2Rldi91aW9YPC9maWxlbmFtZT4uCisJPC9wYXJhPgorPC9zZWN0MT4KKworPC9jaGFwdGVyPgorCis8Y2hhcHRlciBpZD0idWlvX3BjaV9nZW5lcmljIiB4cmVmbGFiZWw9IlVzaW5nIEdlbmVyaWMgZHJpdmVyIGZvciBQQ0kgY2FyZHMiPgorPD9kYmh0bWwgZmlsZW5hbWU9InVpb19wY2lfZ2VuZXJpYy5odG1sIj8+Cis8dGl0bGU+R2VuZXJpYyBQQ0kgVUlPIGRyaXZlcjwvdGl0bGU+CisJPHBhcmE+CisJVGhlIGdlbmVyaWMgZHJpdmVyIGlzIGEga2VybmVsIG1vZHVsZSBuYW1lZCB1aW9fcGNpX2dlbmVyaWMuCisJSXQgY2FuIHdvcmsgd2l0aCBhbnkgZGV2aWNlIGNvbXBsaWFudCB0byBQQ0kgMi4zIChjaXJjYSAyMDAyKSBhbmQKKwlhbnkgY29tcGxpYW50IFBDSSBFeHByZXNzIGRldmljZS4gVXNpbmcgdGhpcywgeW91IG9ubHkgbmVlZCB0bworICAgICAgICB3cml0ZSB0aGUgdXNlcnNwYWNlIGRyaXZlciwgcmVtb3ZpbmcgdGhlIG5lZWQgdG8gd3JpdGUKKyAgICAgICAgYSBoYXJkd2FyZS1zcGVjaWZpYyBrZXJuZWwgbW9kdWxlLgorCTwvcGFyYT4KKworPHNlY3QxIGlkPSJ1aW9fcGNpX2dlbmVyaWNfYmluZGluZyI+Cis8dGl0bGU+TWFraW5nIHRoZSBkcml2ZXIgcmVjb2duaXplIHRoZSBkZXZpY2U8L3RpdGxlPgorCTxwYXJhPgorU2luY2UgdGhlIGRyaXZlciBkb2VzIG5vdCBkZWNsYXJlIGFueSBkZXZpY2UgaWRzLCBpdCB3aWxsIG5vdCBnZXQgbG9hZGVkCithdXRvbWF0aWNhbGx5IGFuZCB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJpbmQgdG8gYW55IGRldmljZXMsIHlvdSBtdXN0IGxvYWQgaXQKK2FuZCBhbGxvY2F0ZSBpZCB0byB0aGUgZHJpdmVyIHlvdXJzZWxmLiBGb3IgZXhhbXBsZToKKwk8cHJvZ3JhbWxpc3Rpbmc+CisgbW9kcHJvYmUgdWlvX3BjaV9nZW5lcmljCisgZWNobyAmcXVvdDs4MDg2IDEwZjUmcXVvdDsgJmd0OyAvc3lzL2J1cy9wY2kvZHJpdmVycy91aW9fcGNpX2dlbmVyaWMvbmV3X2lkCisJPC9wcm9ncmFtbGlzdGluZz4KKwk8L3BhcmE+CisJPHBhcmE+CitJZiB0aGVyZSBhbHJlYWR5IGlzIGEgaGFyZHdhcmUgc3BlY2lmaWMga2VybmVsIGRyaXZlciBmb3IgeW91ciBkZXZpY2UsIHRoZQorZ2VuZXJpYyBkcml2ZXIgc3RpbGwgd29uJ3QgYmluZCB0byBpdCwgaW4gdGhpcyBjYXNlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUKK2dlbmVyaWMgZHJpdmVyICh3aHkgd291bGQgeW91PykgeW91J2xsIGhhdmUgdG8gbWFudWFsbHkgdW5iaW5kIHRoZSBoYXJkd2FyZQorc3BlY2lmaWMgZHJpdmVyIGFuZCBiaW5kIHRoZSBnZW5lcmljIGRyaXZlciwgbGlrZSB0aGlzOgorCTxwcm9ncmFtbGlzdGluZz4KKyAgICBlY2hvIC1uIDAwMDA6MDA6MTkuMCAmZ3Q7IC9zeXMvYnVzL3BjaS9kcml2ZXJzL2UxMDAwZS91bmJpbmQKKyAgICBlY2hvIC1uIDAwMDA6MDA6MTkuMCAmZ3Q7IC9zeXMvYnVzL3BjaS9kcml2ZXJzL3Vpb19wY2lfZ2VuZXJpYy9iaW5kCisJPC9wcm9ncmFtbGlzdGluZz4KKwk8L3BhcmE+CisJPHBhcmE+CitZb3UgY2FuIHZlcmlmeSB0aGF0IHRoZSBkZXZpY2UgaGFzIGJlZW4gYm91bmQgdG8gdGhlIGRyaXZlcgorYnkgbG9va2luZyBmb3IgaXQgaW4gc3lzZnMsIGZvciBleGFtcGxlIGxpa2UgdGhlIGZvbGxvd2luZzoKKwk8cHJvZ3JhbWxpc3Rpbmc+CisgICAgbHMgLWwgL3N5cy9idXMvcGNpL2RldmljZXMvMDAwMDowMDoxOS4wL2RyaXZlcgorCTwvcHJvZ3JhbWxpc3Rpbmc+CitXaGljaCBpZiBzdWNjZXNzZnVsIHNob3VsZCBwcmludAorCTxwcm9ncmFtbGlzdGluZz4KKyAgLi4uLzAwMDA6MDA6MTkuMC9kcml2ZXIgLSZndDsgLi4vLi4vLi4vYnVzL3BjaS9kcml2ZXJzL3Vpb19wY2lfZ2VuZXJpYworCTwvcHJvZ3JhbWxpc3Rpbmc+CitOb3RlIHRoYXQgdGhlIGdlbmVyaWMgZHJpdmVyIHdpbGwgbm90IGJpbmQgdG8gb2xkIFBDSSAyLjIgZGV2aWNlcy4KK0lmIGJpbmRpbmcgdGhlIGRldmljZSBmYWlsZWQsIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CisJPHByb2dyYW1saXN0aW5nPgorICBkbWVzZworCTwvcHJvZ3JhbWxpc3Rpbmc+CithbmQgbG9vayBpbiB0aGUgb3V0cHV0IGZvciBmYWlsdXJlIHJlYXNvbnMKKwk8L3BhcmE+Cis8L3NlY3QxPgorCis8c2VjdDEgaWQ9InVpb19wY2lfZ2VuZXJpY19pbnRlcm5hbHMiPgorPHRpdGxlPlRoaW5ncyB0byBrbm93IGFib3V0IHVpb19wY2lfZ2VuZXJpYzwvdGl0bGU+CisJPHBhcmE+CitJbnRlcnJ1cHRzIGFyZSBoYW5kbGVkIHVzaW5nIHRoZSBJbnRlcnJ1cHQgRGlzYWJsZSBiaXQgaW4gdGhlIFBDSSBjb21tYW5kCityZWdpc3RlciBhbmQgSW50ZXJydXB0IFN0YXR1cyBiaXQgaW4gdGhlIFBDSSBzdGF0dXMgcmVnaXN0ZXIuICBBbGwgZGV2aWNlcworY29tcGxpYW50IHRvIFBDSSAyLjMgKGNpcmNhIDIwMDIpIGFuZCBhbGwgY29tcGxpYW50IFBDSSBFeHByZXNzIGRldmljZXMgc2hvdWxkCitzdXBwb3J0IHRoZXNlIGJpdHMuICB1aW9fcGNpX2dlbmVyaWMgZGV0ZWN0cyB0aGlzIHN1cHBvcnQsIGFuZCB3b24ndCBiaW5kIHRvCitkZXZpY2VzIHdoaWNoIGRvIG5vdCBzdXBwb3J0IHRoZSBJbnRlcnJ1cHQgRGlzYWJsZSBCaXQgaW4gdGhlIGNvbW1hbmQgcmVnaXN0ZXIuCisJPC9wYXJhPgorCTxwYXJhPgorT24gZWFjaCBpbnRlcnJ1cHQsIHVpb19wY2lfZ2VuZXJpYyBzZXRzIHRoZSBJbnRlcnJ1cHQgRGlzYWJsZSBiaXQuCitUaGlzIHByZXZlbnRzIHRoZSBkZXZpY2UgZnJvbSBnZW5lcmF0aW5nIGZ1cnRoZXIgaW50ZXJydXB0cwordW50aWwgdGhlIGJpdCBpcyBjbGVhcmVkLiBUaGUgdXNlcnNwYWNlIGRyaXZlciBzaG91bGQgY2xlYXIgdGhpcworYml0IGJlZm9yZSBibG9ja2luZyBhbmQgd2FpdGluZyBmb3IgbW9yZSBpbnRlcnJ1cHRzLgorCTwvcGFyYT4KKzwvc2VjdDE+Cis8c2VjdDEgaWQ9InVpb19wY2lfZ2VuZXJpY191c2Vyc3BhY2UiPgorPHRpdGxlPldyaXRpbmcgdXNlcnNwYWNlIGRyaXZlciB1c2luZyB1aW9fcGNpX2dlbmVyaWM8L3RpdGxlPgorCTxwYXJhPgorVXNlcnNwYWNlIGRyaXZlciBjYW4gdXNlIHBjaSBzeXNmcyBpbnRlcmZhY2UsIG9yIHRoZQorbGlicGNpIGxpYnJheSB0aGF0IHdyYXBzIGl0LCB0byB0YWxrIHRvIHRoZSBkZXZpY2UgYW5kIHRvCityZS1lbmFibGUgaW50ZXJydXB0cyBieSB3cml0aW5nIHRvIHRoZSBjb21tYW5kIHJlZ2lzdGVyLgorCTwvcGFyYT4KKzwvc2VjdDE+Cis8c2VjdDEgaWQ9InVpb19wY2lfZ2VuZXJpY19leGFtcGxlIj4KKzx0aXRsZT5FeGFtcGxlIGNvZGUgdXNpbmcgdWlvX3BjaV9nZW5lcmljPC90aXRsZT4KKwk8cGFyYT4KK0hlcmUgaXMgc29tZSBzYW1wbGUgdXNlcnNwYWNlIGRyaXZlciBjb2RlIHVzaW5nIHVpb19wY2lfZ2VuZXJpYzoKKzxwcm9ncmFtbGlzdGluZz4KKyNpbmNsdWRlICZsdDtzdGRsaWIuaCZndDsKKyNpbmNsdWRlICZsdDtzdGRpby5oJmd0OworI2luY2x1ZGUgJmx0O3VuaXN0ZC5oJmd0OworI2luY2x1ZGUgJmx0O3N5cy90eXBlcy5oJmd0OworI2luY2x1ZGUgJmx0O3N5cy9zdGF0LmgmZ3Q7CisjaW5jbHVkZSAmbHQ7ZmNudGwuaCZndDsKKyNpbmNsdWRlICZsdDtlcnJuby5oJmd0OworCitpbnQgbWFpbigpCit7CisJaW50IHVpb2ZkOworCWludCBjb25maWdmZDsKKwlpbnQgZXJyOworCWludCBpOworCXVuc2lnbmVkIGljb3VudDsKKwl1bnNpZ25lZCBjaGFyIGNvbW1hbmRfaGlnaDsKKworCXVpb2ZkID0gb3BlbigmcXVvdDsvZGV2L3VpbzAmcXVvdDssIE9fUkRPTkxZKTsKKwlpZiAodWlvZmQgJmx0OyAwKSB7CisJCXBlcnJvcigmcXVvdDt1aW8gb3BlbjomcXVvdDspOworCQlyZXR1cm4gZXJybm87CisJfQorCWNvbmZpZ2ZkID0gb3BlbigmcXVvdDsvc3lzL2NsYXNzL3Vpby91aW8wL2RldmljZS9jb25maWcmcXVvdDssIE9fUkRXUik7CisJaWYgKGNvbmZpZ2ZkICZsdDsgMCkgeworCQlwZXJyb3IoJnF1b3Q7Y29uZmlnIG9wZW46JnF1b3Q7KTsKKwkJcmV0dXJuIGVycm5vOworCX0KKworCS8qIFJlYWQgYW5kIGNhY2hlIGNvbW1hbmQgdmFsdWUgKi8KKwllcnIgPSBwcmVhZChjb25maWdmZCwgJmFtcDtjb21tYW5kX2hpZ2gsIDEsIDUpOworCWlmIChlcnIgIT0gMSkgeworCQlwZXJyb3IoJnF1b3Q7Y29tbWFuZCBjb25maWcgcmVhZDomcXVvdDspOworCQlyZXR1cm4gZXJybm87CisJfQorCWNvbW1hbmRfaGlnaCAmYW1wOz0gfjB4NDsKKworCWZvcihpID0gMDs7ICsraSkgeworCQkvKiBQcmludCBvdXQgYSBtZXNzYWdlLCBmb3IgZGVidWdnaW5nLiAqLworCQlpZiAoaSA9PSAwKQorCQkJZnByaW50ZihzdGRlcnIsICZxdW90O1N0YXJ0ZWQgdWlvIHRlc3QgZHJpdmVyLlxuJnF1b3Q7KTsKKwkJZWxzZQorCQkJZnByaW50ZihzdGRlcnIsICZxdW90O0ludGVycnVwdHM6ICVkXG4mcXVvdDssIGljb3VudCk7CisKKwkJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisJCS8qIEhlcmUgd2UgZ290IGFuIGludGVycnVwdCBmcm9tIHRoZQorCQkgICBkZXZpY2UuIERvIHNvbWV0aGluZyB0byBpdC4gKi8KKwkJLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKwkJLyogUmUtZW5hYmxlIGludGVycnVwdHMuICovCisJCWVyciA9IHB3cml0ZShjb25maWdmZCwgJmFtcDtjb21tYW5kX2hpZ2gsIDEsIDUpOworCQlpZiAoZXJyICE9IDEpIHsKKwkJCXBlcnJvcigmcXVvdDtjb25maWcgd3JpdGU6JnF1b3Q7KTsKKwkJCWJyZWFrOworCQl9CisKKwkJLyogV2FpdCBmb3IgbmV4dCBpbnRlcnJ1cHQuICovCisJCWVyciA9IHJlYWQodWlvZmQsICZhbXA7aWNvdW50LCA0KTsKKwkJaWYgKGVyciAhPSA0KSB7CisJCQlwZXJyb3IoJnF1b3Q7dWlvIHJlYWQ6JnF1b3Q7KTsKKwkJCWJyZWFrOworCQl9CisKKwl9CisJcmV0dXJuIGVycm5vOworfQorCis8L3Byb2dyYW1saXN0aW5nPgorCTwvcGFyYT4KKzwvc2VjdDE+CisKKzwvY2hhcHRlcj4KKworPGFwcGVuZGl4IGlkPSJhcHAxIj4KKzx0aXRsZT5GdXJ0aGVyIGluZm9ybWF0aW9uPC90aXRsZT4KKzxpdGVtaXplZGxpc3Q+CisJPGxpc3RpdGVtPjxwYXJhPgorCQkJPHVsaW5rIHVybD0iaHR0cDovL3d3dy5vc2FkbC5vcmciPgorCQkJCU9TQURMIGhvbWVwYWdlLjwvdWxpbms+CisJCTwvcGFyYT48L2xpc3RpdGVtPgorCTxsaXN0aXRlbT48cGFyYT4KKwkJPHVsaW5rIHVybD0iaHR0cDovL3d3dy5saW51dHJvbml4LmRlIj4KKwkJIExpbnV0cm9uaXggaG9tZXBhZ2UuPC91bGluaz4KKwkJPC9wYXJhPjwvbGlzdGl0ZW0+Cis8L2l0ZW1pemVkbGlzdD4KKzwvYXBwZW5kaXg+CisKKzwvYm9vaz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9vay91c2IudG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay91c2IudG1wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2Q1YjJjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3VzYi50bXBsCkBAIC0wLDAgKzEsOTgwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIGJvb2sgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjEuMi8vRU4iCisJImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4xLjIvZG9jYm9va3guZHRkIiBbXT4KKworPGJvb2sgaWQ9IkxpbnV4LVVTQi1BUEkiPgorIDxib29raW5mbz4KKyAgPHRpdGxlPlRoZSBMaW51eC1VU0IgSG9zdCBTaWRlIEFQSTwvdGl0bGU+CisgIAorICA8bGVnYWxub3RpY2U+CisgICA8cGFyYT4KKyAgICAgVGhpcyBkb2N1bWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlCisgICAgIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIKKyAgICAgdmVyc2lvbi4KKyAgIDwvcGFyYT4KKyAgICAgIAorICAgPHBhcmE+CisgICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKyAgICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAorICAgICB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisgICAgIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAgIDwvcGFyYT4KKyAgICAgIAorICAgPHBhcmE+CisgICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICAgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgICAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgICAgIE1BIDAyMTExLTEzMDcgVVNBCisgICA8L3BhcmE+CisgICAgICAKKyAgIDxwYXJhPgorICAgICBGb3IgbW9yZSBkZXRhaWxzIHNlZSB0aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBzb3VyY2UKKyAgICAgZGlzdHJpYnV0aW9uIG9mIExpbnV4LgorICAgPC9wYXJhPgorICA8L2xlZ2Fsbm90aWNlPgorIDwvYm9va2luZm8+CisKKzx0b2M+PC90b2M+CisKKzxjaGFwdGVyIGlkPSJpbnRybyI+CisgICAgPHRpdGxlPkludHJvZHVjdGlvbiB0byBVU0Igb24gTGludXg8L3RpdGxlPgorCisgICAgPHBhcmE+QSBVbml2ZXJzYWwgU2VyaWFsIEJ1cyAoVVNCKSBpcyB1c2VkIHRvIGNvbm5lY3QgYSBob3N0LAorICAgIHN1Y2ggYXMgYSBQQyBvciB3b3Jrc3RhdGlvbiwgdG8gYSBudW1iZXIgb2YgcGVyaXBoZXJhbAorICAgIGRldmljZXMuICBVU0IgdXNlcyBhIHRyZWUgc3RydWN0dXJlLCB3aXRoIHRoZSBob3N0IGFzIHRoZQorICAgIHJvb3QgKHRoZSBzeXN0ZW0ncyBtYXN0ZXIpLCBodWJzIGFzIGludGVyaW9yIG5vZGVzLCBhbmQKKyAgICBwZXJpcGhlcmFscyBhcyBsZWF2ZXMgKGFuZCBzbGF2ZXMpLgorICAgIE1vZGVybiBQQ3Mgc3VwcG9ydCBzZXZlcmFsIHN1Y2ggdHJlZXMgb2YgVVNCIGRldmljZXMsIHVzdWFsbHkKKyAgICBvbmUgVVNCIDIuMCB0cmVlICg0ODAgTWJpdC9zZWMgZWFjaCkgd2l0aAorICAgIGEgZmV3IFVTQiAxLjEgdHJlZXMgKDEyIE1iaXQvc2VjIGVhY2gpIHRoYXQgYXJlIHVzZWQgd2hlbiB5b3UKKyAgICBjb25uZWN0IGEgVVNCIDEuMSBkZXZpY2UgZGlyZWN0bHkgdG8gdGhlIG1hY2hpbmUncyAicm9vdCBodWIiLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPlRoYXQgbWFzdGVyL3NsYXZlIGFzeW1tZXRyeSB3YXMgZGVzaWduZWQtaW4gZm9yIGEgbnVtYmVyIG9mCisgICAgcmVhc29ucywgb25lIGJlaW5nIGVhc2Ugb2YgdXNlLiAgSXQgaXMgbm90IHBoeXNpY2FsbHkgcG9zc2libGUgdG8KKyAgICBhc3NlbWJsZSAobGVnYWwpIFVTQiBjYWJsZXMgaW5jb3JyZWN0bHk6ICBhbGwgdXBzdHJlYW0gInRvIHRoZSBob3N0IgorICAgIGNvbm5lY3RvcnMgYXJlIHRoZSByZWN0YW5ndWxhciB0eXBlIChtYXRjaGluZyB0aGUgc29ja2V0cyBvbgorICAgIHJvb3QgaHVicyksIGFuZCBhbGwgZG93bnN0cmVhbSBjb25uZWN0b3JzIGFyZSB0aGUgc3F1YXJpc2ggdHlwZQorICAgIChvciB0aGV5IGFyZSBidWlsdCBpbnRvIHRoZSBwZXJpcGhlcmFsKS4KKyAgICBBbHNvLCB0aGUgaG9zdCBzb2Z0d2FyZSBkb2Vzbid0IG5lZWQgdG8gZGVhbCB3aXRoIGRpc3RyaWJ1dGVkCisgICAgYXV0by1jb25maWd1cmF0aW9uIHNpbmNlIHRoZSBwcmUtZGVzaWduYXRlZCBtYXN0ZXIgbm9kZSBtYW5hZ2VzIGFsbCB0aGF0LgorICAgIEFuZCBmaW5hbGx5LCBhdCB0aGUgZWxlY3RyaWNhbCBsZXZlbCwgYnVzIHByb3RvY29sIG92ZXJoZWFkIGlzIHJlZHVjZWQgYnkKKyAgICBlbGltaW5hdGluZyBhcmJpdHJhdGlvbiBhbmQgbW92aW5nIHNjaGVkdWxpbmcgaW50byB0aGUgaG9zdCBzb2Z0d2FyZS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT5VU0IgMS4wIHdhcyBhbm5vdW5jZWQgaW4gSmFudWFyeSAxOTk2IGFuZCB3YXMgcmV2aXNlZAorICAgIGFzIFVTQiAxLjEgKHdpdGggaW1wcm92ZW1lbnRzIGluIGh1YiBzcGVjaWZpY2F0aW9uIGFuZAorICAgIHN1cHBvcnQgZm9yIGludGVycnVwdC1vdXQgdHJhbnNmZXJzKSBpbiBTZXB0ZW1iZXIgMTk5OC4KKyAgICBVU0IgMi4wIHdhcyByZWxlYXNlZCBpbiBBcHJpbCAyMDAwLCBhZGRpbmcgaGlnaC1zcGVlZAorICAgIHRyYW5zZmVycyBhbmQgdHJhbnNhY3Rpb24tdHJhbnNsYXRpbmcgaHVicyAodXNlZCBmb3IgVVNCIDEuMQorICAgIGFuZCAxLjAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+S2VybmVsIGRldmVsb3BlcnMgYWRkZWQgVVNCIHN1cHBvcnQgdG8gTGludXggZWFybHkgaW4gdGhlIDIuMiBrZXJuZWwKKyAgICBzZXJpZXMsIHNob3J0bHkgYmVmb3JlIDIuMyBkZXZlbG9wbWVudCBmb3JrZWQuICBVcGRhdGVzIGZyb20gMi4zIHdlcmUKKyAgICByZWd1bGFybHkgZm9sZGVkIGJhY2sgaW50byAyLjIgcmVsZWFzZXMsIHdoaWNoIGltcHJvdmVkIHJlbGlhYmlsaXR5IGFuZAorICAgIGJyb3VnaHQgPGZpbGVuYW1lPi9zYmluL2hvdHBsdWc8L2ZpbGVuYW1lPiBzdXBwb3J0IGFzIHdlbGwgbW9yZSBkcml2ZXJzLgorICAgIFN1Y2ggaW1wcm92ZW1lbnRzIHdlcmUgY29udGludWVkIGluIHRoZSAyLjUga2VybmVsIHNlcmllcywgd2hlcmUgdGhleSBhZGRlZAorICAgIFVTQiAyLjAgc3VwcG9ydCwgaW1wcm92ZWQgcGVyZm9ybWFuY2UsIGFuZCBtYWRlIHRoZSBob3N0IGNvbnRyb2xsZXIgZHJpdmVycworICAgIChIQ0RzKSBtb3JlIGNvbnNpc3RlbnQuICBUaGV5IGFsc28gc2ltcGxpZmllZCB0aGUgQVBJICh0byBtYWtlIGJ1Z3MgbGVzcworICAgIGxpa2VseSkgYW5kIGFkZGVkIGludGVybmFsICJrZXJuZWxkb2MiIGRvY3VtZW50YXRpb24uCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+TGludXggY2FuIHJ1biBpbnNpZGUgVVNCIGRldmljZXMgYXMgd2VsbCBhcyBvbgorICAgIHRoZSBob3N0cyB0aGF0IGNvbnRyb2wgdGhlIGRldmljZXMuCisgICAgQnV0IFVTQiBkZXZpY2UgZHJpdmVycyBydW5uaW5nIGluc2lkZSB0aG9zZSBwZXJpcGhlcmFscworICAgIGRvbid0IGRvIHRoZSBzYW1lIHRoaW5ncyBhcyB0aGUgb25lcyBydW5uaW5nIGluc2lkZSBob3N0cywKKyAgICBzbyB0aGV5J3ZlIGJlZW4gZ2l2ZW4gYSBkaWZmZXJlbnQgbmFtZToKKyAgICA8ZW1waGFzaXM+Z2FkZ2V0IGRyaXZlcnM8L2VtcGhhc2lzPi4KKyAgICBUaGlzIGRvY3VtZW50IGRvZXMgbm90IGNvdmVyIGdhZGdldCBkcml2ZXJzLgorICAgIDwvcGFyYT4KKworICAgIDwvY2hhcHRlcj4KKworPGNoYXB0ZXIgaWQ9Imhvc3QiPgorICAgIDx0aXRsZT5VU0IgSG9zdC1TaWRlIEFQSSBNb2RlbDwvdGl0bGU+CisKKyAgICA8cGFyYT5Ib3N0LXNpZGUgZHJpdmVycyBmb3IgVVNCIGRldmljZXMgdGFsayB0byB0aGUgInVzYmNvcmUiIEFQSXMuCisgICAgVGhlcmUgYXJlIHR3by4gIE9uZSBpcyBpbnRlbmRlZCBmb3IKKyAgICA8ZW1waGFzaXM+Z2VuZXJhbC1wdXJwb3NlPC9lbXBoYXNpcz4gZHJpdmVycyAoZXhwb3NlZCB0aHJvdWdoCisgICAgZHJpdmVyIGZyYW1ld29ya3MpLCBhbmQgdGhlIG90aGVyIGlzIGZvciBkcml2ZXJzIHRoYXQgYXJlCisgICAgPGVtcGhhc2lzPnBhcnQgb2YgdGhlIGNvcmU8L2VtcGhhc2lzPi4KKyAgICBTdWNoIGNvcmUgZHJpdmVycyBpbmNsdWRlIHRoZSA8ZW1waGFzaXM+aHViPC9lbXBoYXNpcz4gZHJpdmVyCisgICAgKHdoaWNoIG1hbmFnZXMgdHJlZXMgb2YgVVNCIGRldmljZXMpIGFuZCBzZXZlcmFsIGRpZmZlcmVudCBraW5kcworICAgIG9mIDxlbXBoYXNpcz5ob3N0IGNvbnRyb2xsZXIgZHJpdmVyczwvZW1waGFzaXM+LAorICAgIHdoaWNoIGNvbnRyb2wgaW5kaXZpZHVhbCBidXNzZXMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+VGhlIGRldmljZSBtb2RlbCBzZWVuIGJ5IFVTQiBkcml2ZXJzIGlzIHJlbGF0aXZlbHkgY29tcGxleC4KKyAgICA8L3BhcmE+CisgICAgIAorICAgIDxpdGVtaXplZGxpc3Q+CisKKwk8bGlzdGl0ZW0+PHBhcmE+VVNCIHN1cHBvcnRzIGZvdXIga2luZHMgb2YgZGF0YSB0cmFuc2ZlcnMKKwkoY29udHJvbCwgYnVsaywgaW50ZXJydXB0LCBhbmQgaXNvY2hyb25vdXMpLiAgVHdvIG9mIHRoZW0gKGNvbnRyb2wKKwlhbmQgYnVsaykgdXNlIGJhbmR3aWR0aCBhcyBpdCdzIGF2YWlsYWJsZSwKKwl3aGlsZSB0aGUgb3RoZXIgdHdvIChpbnRlcnJ1cHQgYW5kIGlzb2Nocm9ub3VzKQorCWFyZSBzY2hlZHVsZWQgdG8gcHJvdmlkZSBndWFyYW50ZWVkIGJhbmR3aWR0aC4KKwk8L3BhcmE+PC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT48cGFyYT5UaGUgZGV2aWNlIGRlc2NyaXB0aW9uIG1vZGVsIGluY2x1ZGVzIG9uZSBvciBtb3JlCisJImNvbmZpZ3VyYXRpb25zIiBwZXIgZGV2aWNlLCBvbmx5IG9uZSBvZiB3aGljaCBpcyBhY3RpdmUgYXQgYSB0aW1lLgorCURldmljZXMgdGhhdCBhcmUgY2FwYWJsZSBvZiBoaWdoLXNwZWVkIG9wZXJhdGlvbiBtdXN0IGFsc28gc3VwcG9ydAorCWZ1bGwtc3BlZWQgY29uZmlndXJhdGlvbnMsIGFsb25nIHdpdGggYSB3YXkgdG8gYXNrIGFib3V0IHRoZQorCSJvdGhlciBzcGVlZCIgY29uZmlndXJhdGlvbnMgd2hpY2ggbWlnaHQgYmUgdXNlZC4KKwk8L3BhcmE+PC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT48cGFyYT5Db25maWd1cmF0aW9ucyBoYXZlIG9uZSBvciBtb3JlICJpbnRlcmZhY2VzIiwgZWFjaAorCW9mIHdoaWNoIG1heSBoYXZlICJhbHRlcm5hdGUgc2V0dGluZ3MiLiAgSW50ZXJmYWNlcyBtYXkgYmUKKwlzdGFuZGFyZGl6ZWQgYnkgVVNCICJDbGFzcyIgc3BlY2lmaWNhdGlvbnMsIG9yIG1heSBiZSBzcGVjaWZpYyB0bworCWEgdmVuZG9yIG9yIGRldmljZS48L3BhcmE+CisKKwk8cGFyYT5VU0IgZGV2aWNlIGRyaXZlcnMgYWN0dWFsbHkgYmluZCB0byBpbnRlcmZhY2VzLCBub3QgZGV2aWNlcy4KKwlUaGluayBvZiB0aGVtIGFzICJpbnRlcmZhY2UgZHJpdmVycyIsIHRob3VnaCB5b3UKKwltYXkgbm90IHNlZSBtYW55IGRldmljZXMgd2hlcmUgdGhlIGRpc3RpbmN0aW9uIGlzIGltcG9ydGFudC4KKwk8ZW1waGFzaXM+TW9zdCBVU0IgZGV2aWNlcyBhcmUgc2ltcGxlLCB3aXRoIG9ubHkgb25lIGNvbmZpZ3VyYXRpb24sCisJb25lIGludGVyZmFjZSwgYW5kIG9uZSBhbHRlcm5hdGUgc2V0dGluZy48L2VtcGhhc2lzPgorCTwvcGFyYT48L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPjxwYXJhPkludGVyZmFjZXMgaGF2ZSBvbmUgb3IgbW9yZSAiZW5kcG9pbnRzIiwgZWFjaCBvZgorCXdoaWNoIHN1cHBvcnRzIG9uZSB0eXBlIGFuZCBkaXJlY3Rpb24gb2YgZGF0YSB0cmFuc2ZlciBzdWNoIGFzCisJImJ1bGsgb3V0IiBvciAiaW50ZXJydXB0IGluIi4gIFRoZSBlbnRpcmUgY29uZmlndXJhdGlvbiBtYXkgaGF2ZQorCXVwIHRvIHNpeHRlZW4gZW5kcG9pbnRzIGluIGVhY2ggZGlyZWN0aW9uLCBhbGxvY2F0ZWQgYXMgbmVlZGVkCisJYW1vbmcgYWxsIHRoZSBpbnRlcmZhY2VzLgorCTwvcGFyYT48L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPjxwYXJhPkRhdGEgdHJhbnNmZXIgb24gVVNCIGlzIHBhY2tldGl6ZWQ7IGVhY2ggZW5kcG9pbnQKKwloYXMgYSBtYXhpbXVtIHBhY2tldCBzaXplLgorCURyaXZlcnMgbXVzdCBvZnRlbiBiZSBhd2FyZSBvZiBjb252ZW50aW9ucyBzdWNoIGFzIGZsYWdnaW5nIHRoZSBlbmQKKwlvZiBidWxrIHRyYW5zZmVycyB1c2luZyAic2hvcnQiIChpbmNsdWRpbmcgemVybyBsZW5ndGgpIHBhY2tldHMuCisJPC9wYXJhPjwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+PHBhcmE+VGhlIExpbnV4IFVTQiBBUEkgc3VwcG9ydHMgc3luY2hyb25vdXMgY2FsbHMgZm9yCisJY29udHJvbCBhbmQgYnVsayBtZXNzYWdlcy4KKwlJdCBhbHNvIHN1cHBvcnRzIGFzeW5jaHJvbm91cyBjYWxscyBmb3IgYWxsIGtpbmRzIG9mIGRhdGEgdHJhbnNmZXIsCisJdXNpbmcgcmVxdWVzdCBzdHJ1Y3R1cmVzIGNhbGxlZCAiVVJCcyIgKFVTQiBSZXF1ZXN0IEJsb2NrcykuCisJPC9wYXJhPjwvbGlzdGl0ZW0+CisKKyAgICA8L2l0ZW1pemVkbGlzdD4KKworICAgIDxwYXJhPkFjY29yZGluZ2x5LCB0aGUgVVNCIENvcmUgQVBJIGV4cG9zZWQgdG8gZGV2aWNlIGRyaXZlcnMKKyAgICBjb3ZlcnMgcXVpdGUgYSBsb3Qgb2YgdGVycml0b3J5LiAgWW91J2xsIHByb2JhYmx5IG5lZWQgdG8gY29uc3VsdAorICAgIHRoZSBVU0IgMi4wIHNwZWNpZmljYXRpb24sIGF2YWlsYWJsZSBvbmxpbmUgZnJvbSB3d3cudXNiLm9yZyBhdAorICAgIG5vIGNvc3QsIGFzIHdlbGwgYXMgY2xhc3Mgb3IgZGV2aWNlIHNwZWNpZmljYXRpb25zLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPlRoZSBvbmx5IGhvc3Qtc2lkZSBkcml2ZXJzIHRoYXQgYWN0dWFsbHkgdG91Y2ggaGFyZHdhcmUKKyAgICAocmVhZGluZy93cml0aW5nIHJlZ2lzdGVycywgaGFuZGxpbmcgSVJRcywgYW5kIHNvIG9uKSBhcmUgdGhlIEhDRHMuCisgICAgSW4gdGhlb3J5LCBhbGwgSENEcyBwcm92aWRlIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkgdGhyb3VnaCB0aGUgc2FtZQorICAgIEFQSS4gIEluIHByYWN0aWNlLCB0aGF0J3MgYmVjb21pbmcgbW9yZSB0cnVlIG9uIHRoZSAyLjUga2VybmVscywKKyAgICBidXQgdGhlcmUgYXJlIHN0aWxsIGRpZmZlcmVuY2VzIHRoYXQgY3JvcCB1cCBlc3BlY2lhbGx5IHdpdGgKKyAgICBmYXVsdCBoYW5kbGluZy4gIERpZmZlcmVudCBjb250cm9sbGVycyBkb24ndCBuZWNlc3NhcmlseSByZXBvcnQKKyAgICB0aGUgc2FtZSBhc3BlY3RzIG9mIGZhaWx1cmVzLCBhbmQgcmVjb3ZlcnkgZnJvbSBmYXVsdHMgKGluY2x1ZGluZworICAgIHNvZnR3YXJlLWluZHVjZWQgb25lcyBsaWtlIHVubGlua2luZyBhbiBVUkIpIGlzbid0IHlldCBmdWxseQorICAgIGNvbnNpc3RlbnQuCisgICAgRGV2aWNlIGRyaXZlciBhdXRob3JzIHNob3VsZCBtYWtlIGEgcG9pbnQgb2YgZG9pbmcgZGlzY29ubmVjdAorICAgIHRlc3RpbmcgKHdoaWxlIHRoZSBkZXZpY2UgaXMgYWN0aXZlKSB3aXRoIGVhY2ggZGlmZmVyZW50IGhvc3QKKyAgICBjb250cm9sbGVyIGRyaXZlciwgdG8gbWFrZSBzdXJlIGRyaXZlcnMgZG9uJ3QgaGF2ZSBidWdzIG9mCisgICAgdGhlaXIgb3duIGFzIHdlbGwgYXMgdG8gbWFrZSBzdXJlIHRoZXkgYXJlbid0IHJlbHlpbmcgb24gc29tZQorICAgIEhDRC1zcGVjaWZpYyBiZWhhdmlvci4KKyAgICAoWW91IHdpbGwgbmVlZCBleHRlcm5hbCBVU0IgMS4xIGFuZC9vcgorICAgIFVTQiAyLjAgaHVicyB0byBwZXJmb3JtIGFsbCB0aG9zZSB0ZXN0cy4pCisgICAgPC9wYXJhPgorCisgICAgPC9jaGFwdGVyPgorCis8Y2hhcHRlciBpZD0idHlwZXMiPjx0aXRsZT5VU0ItU3RhbmRhcmQgVHlwZXM8L3RpdGxlPgorCisgICAgPHBhcmE+SW4gPGZpbGVuYW1lPiZsdDtsaW51eC91c2IvY2g5LmgmZ3Q7PC9maWxlbmFtZT4geW91IHdpbGwgZmluZAorICAgIHRoZSBVU0IgZGF0YSB0eXBlcyBkZWZpbmVkIGluIGNoYXB0ZXIgOSBvZiB0aGUgVVNCIHNwZWNpZmljYXRpb24uCisgICAgVGhlc2UgZGF0YSB0eXBlcyBhcmUgdXNlZCB0aHJvdWdob3V0IFVTQiwgYW5kIGluIEFQSXMgaW5jbHVkaW5nCisgICAgdGhpcyBob3N0IHNpZGUgQVBJLCBnYWRnZXQgQVBJcywgYW5kIHVzYmZzLgorICAgIDwvcGFyYT4KKworIUlpbmNsdWRlL2xpbnV4L3VzYi9jaDkuaAorCisgICAgPC9jaGFwdGVyPgorCis8Y2hhcHRlciBpZD0iaG9zdHNpZGUiPjx0aXRsZT5Ib3N0LVNpZGUgRGF0YSBUeXBlcyBhbmQgTWFjcm9zPC90aXRsZT4KKworICAgIDxwYXJhPlRoZSBob3N0IHNpZGUgQVBJIGV4cG9zZXMgc2V2ZXJhbCBsYXllcnMgdG8gZHJpdmVycywgc29tZSBvZgorICAgIHdoaWNoIGFyZSBtb3JlIG5lY2Vzc2FyeSB0aGFuIG90aGVycy4KKyAgICBUaGVzZSBzdXBwb3J0IGxpZmVjeWNsZSBtb2RlbHMgZm9yIGhvc3Qgc2lkZSBkcml2ZXJzCisgICAgYW5kIGRldmljZXMsIGFuZCBzdXBwb3J0IHBhc3NpbmcgYnVmZmVycyB0aHJvdWdoIHVzYmNvcmUgdG8KKyAgICBzb21lIEhDRCB0aGF0IHBlcmZvcm1zIHRoZSBJL08gZm9yIHRoZSBkZXZpY2UgZHJpdmVyLgorICAgIDwvcGFyYT4KKworCishSWluY2x1ZGUvbGludXgvdXNiLmgKKworICAgIDwvY2hhcHRlcj4KKworICAgIDxjaGFwdGVyIGlkPSJ1c2Jjb3JlIj48dGl0bGU+VVNCIENvcmUgQVBJczwvdGl0bGU+CisKKyAgICA8cGFyYT5UaGVyZSBhcmUgdHdvIGJhc2ljIEkvTyBtb2RlbHMgaW4gdGhlIFVTQiBBUEkuCisgICAgVGhlIG1vc3QgZWxlbWVudGFsIG9uZSBpcyBhc3luY2hyb25vdXM6ICBkcml2ZXJzIHN1Ym1pdCByZXF1ZXN0cworICAgIGluIHRoZSBmb3JtIG9mIGFuIFVSQiwgYW5kIHRoZSBVUkIncyBjb21wbGV0aW9uIGNhbGxiYWNrCisgICAgaGFuZGxlIHRoZSBuZXh0IHN0ZXAuCisgICAgQWxsIFVTQiB0cmFuc2ZlciB0eXBlcyBzdXBwb3J0IHRoYXQgbW9kZWwsIGFsdGhvdWdoIHRoZXJlCisgICAgYXJlIHNwZWNpYWwgY2FzZXMgZm9yIGNvbnRyb2wgVVJCcyAod2hpY2ggYWx3YXlzIGhhdmUgc2V0dXAKKyAgICBhbmQgc3RhdHVzIHN0YWdlcywgYnV0IG1heSBub3QgaGF2ZSBhIGRhdGEgc3RhZ2UpIGFuZAorICAgIGlzb2Nocm9ub3VzIFVSQnMgKHdoaWNoIGFsbG93IGxhcmdlIHBhY2tldHMgYW5kIGluY2x1ZGUKKyAgICBwZXItcGFja2V0IGZhdWx0IHJlcG9ydHMpLgorICAgIEJ1aWx0IG9uIHRvcCBvZiB0aGF0IGlzIHN5bmNocm9ub3VzIEFQSSBzdXBwb3J0LCB3aGVyZSBhCisgICAgZHJpdmVyIGNhbGxzIGEgcm91dGluZSB0aGF0IGFsbG9jYXRlcyBvbmUgb3IgbW9yZSBVUkJzLAorICAgIHN1Ym1pdHMgdGhlbSwgYW5kIHdhaXRzIHVudGlsIHRoZXkgY29tcGxldGUuCisgICAgVGhlcmUgYXJlIHN5bmNocm9ub3VzIHdyYXBwZXJzIGZvciBzaW5nbGUtYnVmZmVyIGNvbnRyb2wKKyAgICBhbmQgYnVsayB0cmFuc2ZlcnMgKHdoaWNoIGFyZSBhd2t3YXJkIHRvIHVzZSBpbiBzb21lCisgICAgZHJpdmVyIGRpc2Nvbm5lY3Qgc2NlbmFyaW9zKSwgYW5kIGZvciBzY2F0dGVybGlzdCBiYXNlZAorICAgIHN0cmVhbWluZyBpL28gKGJ1bGsgb3IgaW50ZXJydXB0KS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT5VU0IgZHJpdmVycyBuZWVkIHRvIHByb3ZpZGUgYnVmZmVycyB0aGF0IGNhbiBiZQorICAgIHVzZWQgZm9yIERNQSwgYWx0aG91Z2ggdGhleSBkb24ndCBuZWNlc3NhcmlseSBuZWVkIHRvCisgICAgcHJvdmlkZSB0aGUgRE1BIG1hcHBpbmcgdGhlbXNlbHZlcy4KKyAgICBUaGVyZSBhcmUgQVBJcyB0byB1c2UgdXNlZCB3aGVuIGFsbG9jYXRpbmcgRE1BIGJ1ZmZlcnMsCisgICAgd2hpY2ggY2FuIHByZXZlbnQgdXNlIG9mIGJvdW5jZSBidWZmZXJzIG9uIHNvbWUgc3lzdGVtcy4KKyAgICBJbiBzb21lIGNhc2VzLCBkcml2ZXJzIG1heSBiZSBhYmxlIHRvIHJlbHkgb24gNjRiaXQgRE1BCisgICAgdG8gZWxpbWluYXRlIGFub3RoZXIga2luZCBvZiBib3VuY2UgYnVmZmVyLgorICAgIDwvcGFyYT4KKworIUVkcml2ZXJzL3VzYi9jb3JlL3VyYi5jCishRWRyaXZlcnMvdXNiL2NvcmUvbWVzc2FnZS5jCishRWRyaXZlcnMvdXNiL2NvcmUvZmlsZS5jCishRWRyaXZlcnMvdXNiL2NvcmUvZHJpdmVyLmMKKyFFZHJpdmVycy91c2IvY29yZS91c2IuYworIUVkcml2ZXJzL3VzYi9jb3JlL2h1Yi5jCisgICAgPC9jaGFwdGVyPgorCisgICAgPGNoYXB0ZXIgaWQ9ImhjZCI+PHRpdGxlPkhvc3QgQ29udHJvbGxlciBBUElzPC90aXRsZT4KKworICAgIDxwYXJhPlRoZXNlIEFQSXMgYXJlIG9ubHkgZm9yIHVzZSBieSBob3N0IGNvbnRyb2xsZXIgZHJpdmVycywKKyAgICBtb3N0IG9mIHdoaWNoIGltcGxlbWVudCBzdGFuZGFyZCByZWdpc3RlciBpbnRlcmZhY2VzIHN1Y2ggYXMKKyAgICBFSENJLCBPSENJLCBvciBVSENJLgorICAgIFVIQ0kgd2FzIG9uZSBvZiB0aGUgZmlyc3QgaW50ZXJmYWNlcywgZGVzaWduZWQgYnkgSW50ZWwgYW5kCisgICAgYWxzbyB1c2VkIGJ5IFZJQTsgaXQgZG9lc24ndCBkbyBtdWNoIGluIGhhcmR3YXJlLgorICAgIE9IQ0kgd2FzIGRlc2lnbmVkIGxhdGVyLCB0byBoYXZlIHRoZSBoYXJkd2FyZSBkbyBtb3JlIHdvcmsKKyAgICAoYmlnZ2VyIHRyYW5zZmVycywgdHJhY2tpbmcgcHJvdG9jb2wgc3RhdGUsIGFuZCBzbyBvbikuCisgICAgRUhDSSB3YXMgZGVzaWduZWQgd2l0aCBVU0IgMi4wOyBpdHMgZGVzaWduIGhhcyBmZWF0dXJlcyB0aGF0CisgICAgcmVzZW1ibGUgT0hDSSAoaGFyZHdhcmUgZG9lcyBtdWNoIG1vcmUgd29yaykgYXMgd2VsbCBhcworICAgIFVIQ0kgKHNvbWUgcGFydHMgb2YgSVNPIHN1cHBvcnQsIFREIGxpc3QgcHJvY2Vzc2luZykuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+VGhlcmUgYXJlIGhvc3QgY29udHJvbGxlcnMgb3RoZXIgdGhhbiB0aGUgImJpZyB0aHJlZSIsCisgICAgYWx0aG91Z2ggbW9zdCBQQ0kgYmFzZWQgY29udHJvbGxlcnMgKGFuZCBhIGZldyBub24tUENJIGJhc2VkCisgICAgb25lcykgdXNlIG9uZSBvZiB0aG9zZSBpbnRlcmZhY2VzLgorICAgIE5vdCBhbGwgaG9zdCBjb250cm9sbGVycyB1c2UgRE1BOyBzb21lIHVzZSBQSU8sIGFuZCB0aGVyZQorICAgIGlzIGFsc28gYSBzaW11bGF0b3IuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+VGhlIHNhbWUgYmFzaWMgQVBJcyBhcmUgYXZhaWxhYmxlIHRvIGRyaXZlcnMgZm9yIGFsbAorICAgIHRob3NlIGNvbnRyb2xsZXJzLiAgCisgICAgRm9yIGhpc3RvcmljYWwgcmVhc29ucyB0aGV5IGFyZSBpbiB0d28gbGF5ZXJzOgorICAgIDxzdHJ1Y3RuYW1lPnN0cnVjdCB1c2JfYnVzPC9zdHJ1Y3RuYW1lPiBpcyBhIHJhdGhlciB0aGluCisgICAgbGF5ZXIgdGhhdCBiZWNhbWUgYXZhaWxhYmxlIGluIHRoZSAyLjIga2VybmVscywgd2hpbGUKKyAgICA8c3RydWN0bmFtZT5zdHJ1Y3QgdXNiX2hjZDwvc3RydWN0bmFtZT4gaXMgYSBtb3JlIGZlYXR1cmVmdWwKKyAgICBsYXllciAoYXZhaWxhYmxlIGluIGxhdGVyIDIuNCBrZXJuZWxzIGFuZCBpbiAyLjUpIHRoYXQKKyAgICBsZXRzIEhDRHMgc2hhcmUgY29tbW9uIGNvZGUsIHRvIHNocmluayBkcml2ZXIgc2l6ZQorICAgIGFuZCBzaWduaWZpY2FudGx5IHJlZHVjZSBoY2Qtc3BlY2lmaWMgYmVoYXZpb3JzLgorICAgIDwvcGFyYT4KKworIUVkcml2ZXJzL3VzYi9jb3JlL2hjZC5jCishRWRyaXZlcnMvdXNiL2NvcmUvaGNkLXBjaS5jCishSWRyaXZlcnMvdXNiL2NvcmUvYnVmZmVyLmMKKyAgICA8L2NoYXB0ZXI+CisKKyAgICA8Y2hhcHRlciBpZD0idXNiZnMiPgorCTx0aXRsZT5UaGUgVVNCIEZpbGVzeXN0ZW0gKHVzYmZzKTwvdGl0bGU+CisKKwk8cGFyYT5UaGlzIGNoYXB0ZXIgcHJlc2VudHMgdGhlIExpbnV4IDxlbXBoYXNpcz51c2JmczwvZW1waGFzaXM+LgorCVlvdSBtYXkgcHJlZmVyIHRvIGF2b2lkIHdyaXRpbmcgbmV3IGtlcm5lbCBjb2RlIGZvciB5b3VyCisJVVNCIGRyaXZlcjsgdGhhdCdzIHRoZSBwcm9ibGVtIHRoYXQgdXNiZnMgc2V0IG91dCB0byBzb2x2ZS4KKwlVc2VyIG1vZGUgZGV2aWNlIGRyaXZlcnMgYXJlIHVzdWFsbHkgcGFja2FnZWQgYXMgYXBwbGljYXRpb25zCisJb3IgbGlicmFyaWVzLCBhbmQgbWF5IHVzZSB1c2JmcyB0aHJvdWdoIHNvbWUgcHJvZ3JhbW1pbmcgbGlicmFyeQorCXRoYXQgd3JhcHMgaXQuICBTdWNoIGxpYnJhcmllcyBpbmNsdWRlCisJPHVsaW5rIHVybD0iaHR0cDovL2xpYnVzYi5zb3VyY2Vmb3JnZS5uZXQiPmxpYnVzYjwvdWxpbms+CisJZm9yIEMvQysrLCBhbmQKKwk8dWxpbmsgdXJsPSJodHRwOi8valVTQi5zb3VyY2Vmb3JnZS5uZXQiPmpVU0I8L3VsaW5rPiBmb3IgSmF2YS4KKwk8L3BhcmE+CisKKwk8bm90ZT48dGl0bGU+VW5maW5pc2hlZDwvdGl0bGU+CisJICAgIDxwYXJhPlRoaXMgcGFydGljdWxhciBkb2N1bWVudGF0aW9uIGlzIGluY29tcGxldGUsCisJICAgIGVzcGVjaWFsbHkgd2l0aCByZXNwZWN0IHRvIHRoZSBhc3luY2hyb25vdXMgbW9kZS4KKwkgICAgQXMgb2Yga2VybmVsIDIuNS42NiB0aGUgY29kZSBhbmQgdGhpcyAobmV3KSBkb2N1bWVudGF0aW9uCisJICAgIG5lZWQgdG8gYmUgY3Jvc3MtcmV2aWV3ZWQuCisJICAgIDwvcGFyYT4KKwkgICAgPC9ub3RlPgorCisJPHBhcmE+Q29uZmlndXJlIHVzYmZzIGludG8gTGludXgga2VybmVscyBieSBlbmFibGluZyB0aGUKKwk8ZW1waGFzaXM+VVNCIGZpbGVzeXN0ZW08L2VtcGhhc2lzPiBvcHRpb24gKENPTkZJR19VU0JfREVWSUNFRlMpLAorCWFuZCB5b3UgZ2V0IGJhc2ljIHN1cHBvcnQgZm9yIHVzZXIgbW9kZSBVU0IgZGV2aWNlIGRyaXZlcnMuCisJVW50aWwgcmVsYXRpdmVseSByZWNlbnRseSBpdCB3YXMgb2Z0ZW4gKGNvbmZ1c2luZ2x5KSBjYWxsZWQKKwk8ZW1waGFzaXM+dXNiZGV2ZnM8L2VtcGhhc2lzPiBhbHRob3VnaCBpdCB3YXNuJ3Qgc29sdmluZyB3aGF0CisJPGVtcGhhc2lzPmRldmZzPC9lbXBoYXNpcz4gd2FzLgorCUV2ZXJ5IFVTQiBkZXZpY2Ugd2lsbCBhcHBlYXIgaW4gdXNiZnMsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvcgorCW5vdCBpdCBoYXMgYSBrZXJuZWwgZHJpdmVyLgorCTwvcGFyYT4KKworCTxzZWN0MSBpZD0idXNiZnMtZmlsZXMiPgorCSAgICA8dGl0bGU+V2hhdCBmaWxlcyBhcmUgaW4gInVzYmZzIj88L3RpdGxlPgorCisJICAgIDxwYXJhPkNvbnZlbnRpb25hbGx5IG1vdW50ZWQgYXQKKwkgICAgPGZpbGVuYW1lPi9wcm9jL2J1cy91c2I8L2ZpbGVuYW1lPiwgdXNiZnMgCisJICAgIGZlYXR1cmVzIGluY2x1ZGU6CisJICAgIDxpdGVtaXplZGxpc3Q+CisJCTxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+L3Byb2MvYnVzL3VzYi9kZXZpY2VzPC9maWxlbmFtZT4KKwkJICAgIC4uLiBhIHRleHQgZmlsZQorCQkgICAgc2hvd2luZyBlYWNoIG9mIHRoZSBVU0IgZGV2aWNlcyBvbiBrbm93biB0byB0aGUga2VybmVsLAorCQkgICAgYW5kIHRoZWlyIGNvbmZpZ3VyYXRpb24gZGVzY3JpcHRvcnMuCisJCSAgICBZb3UgY2FuIGFsc28gcG9sbCgpIHRoaXMgdG8gbGVhcm4gYWJvdXQgbmV3IGRldmljZXMuCisJCSAgICA8L3BhcmE+PC9saXN0aXRlbT4KKwkJPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT4vcHJvYy9idXMvdXNiL0JCQi9EREQ8L2ZpbGVuYW1lPgorCQkgICAgLi4uIG1hZ2ljIGZpbGVzCisJCSAgICBleHBvc2luZyB0aGUgZWFjaCBkZXZpY2UncyBjb25maWd1cmF0aW9uIGRlc2NyaXB0b3JzLCBhbmQKKwkJICAgIHN1cHBvcnRpbmcgYSBzZXJpZXMgb2YgaW9jdGxzIGZvciBtYWtpbmcgZGV2aWNlIHJlcXVlc3RzLAorCQkgICAgaW5jbHVkaW5nIEkvTyB0byBkZXZpY2VzLiAgKFB1cmVseSBmb3IgYWNjZXNzIGJ5IHByb2dyYW1zLikKKwkJICAgIDwvcGFyYT48L2xpc3RpdGVtPgorCSAgICA8L2l0ZW1pemVkbGlzdD4KKwkgICAgPC9wYXJhPgorCisJICAgIDxwYXJhPiBFYWNoIGJ1cyBpcyBnaXZlbiBhIG51bWJlciAoQkJCKSBiYXNlZCBvbiB3aGVuIGl0IHdhcworCSAgICBlbnVtZXJhdGVkOyB3aXRoaW4gZWFjaCBidXMsIGVhY2ggZGV2aWNlIGlzIGdpdmVuIGEgc2ltaWxhcgorCSAgICBudW1iZXIgKERERCkuCisJICAgIFRob3NlIEJCQi9EREQgcGF0aHMgYXJlIG5vdCAic3RhYmxlIiBpZGVudGlmaWVyczsKKwkgICAgZXhwZWN0IHRoZW0gdG8gY2hhbmdlIGV2ZW4gaWYgeW91IGFsd2F5cyBsZWF2ZSB0aGUgZGV2aWNlcworCSAgICBwbHVnZ2VkIGluIHRvIHRoZSBzYW1lIGh1YiBwb3J0LgorCSAgICA8ZW1waGFzaXM+RG9uJ3QgZXZlbiB0aGluayBvZiBzYXZpbmcgdGhlc2UgaW4gYXBwbGljYXRpb24KKwkgICAgY29uZmlndXJhdGlvbiBmaWxlcy48L2VtcGhhc2lzPgorCSAgICBTdGFibGUgaWRlbnRpZmllcnMgYXJlIGF2YWlsYWJsZSwgZm9yIHVzZXIgbW9kZSBhcHBsaWNhdGlvbnMKKwkgICAgdGhhdCB3YW50IHRvIHVzZSB0aGVtLiAgSElEIGFuZCBuZXR3b3JraW5nIGRldmljZXMgZXhwb3NlCisJICAgIHRoZXNlIHN0YWJsZSBJRHMsIHNvIHRoYXQgZm9yIGV4YW1wbGUgeW91IGNhbiBiZSBzdXJlIHRoYXQKKwkgICAgeW91IHRvbGQgdGhlIHJpZ2h0IFVQUyB0byBwb3dlciBkb3duIGl0cyBzZWNvbmQgc2VydmVyLgorCSAgICAidXNiZnMiIGRvZXNuJ3QgKHlldCkgZXhwb3NlIHRob3NlIElEcy4KKwkgICAgPC9wYXJhPgorCisJPC9zZWN0MT4KKworCTxzZWN0MSBpZD0idXNiZnMtZnN0YWIiPgorCSAgICA8dGl0bGU+TW91bnRpbmcgYW5kIEFjY2VzcyBDb250cm9sPC90aXRsZT4KKworCSAgICA8cGFyYT5UaGVyZSBhcmUgYSBudW1iZXIgb2YgbW91bnQgb3B0aW9ucyBmb3IgdXNiZnMsIHdoaWNoIHdpbGwKKwkgICAgYmUgb2YgbW9zdCBpbnRlcmVzdCB0byB5b3UgaWYgeW91IG5lZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQKKwkgICAgYWNjZXNzIGNvbnRyb2wgcG9saWN5LgorCSAgICBUaGF0IHBvbGljeSBpcyB0aGF0IG9ubHkgcm9vdCBtYXkgcmVhZCBvciB3cml0ZSBkZXZpY2UgZmlsZXMKKwkgICAgKDxmaWxlbmFtZT4vcHJvYy9idXMvQkJCL0RERDwvZmlsZW5hbWU+KSBhbHRob3VnaCBhbnlvbmUgbWF5IHJlYWQKKwkgICAgdGhlIDxmaWxlbmFtZT5kZXZpY2VzPC9maWxlbmFtZT4KKwkgICAgb3IgPGZpbGVuYW1lPmRyaXZlcnM8L2ZpbGVuYW1lPiBmaWxlcy4KKwkgICAgSS9PIHJlcXVlc3RzIHRvIHRoZSBkZXZpY2UgYWxzbyBuZWVkIHRoZSBDQVBfU1lTX1JBV0lPIGNhcGFiaWxpdHksCisJICAgIDwvcGFyYT4KKworCSAgICA8cGFyYT5UaGUgc2lnbmlmaWNhbmNlIG9mIHRoYXQgaXMgdGhhdCBieSBkZWZhdWx0LCBhbGwgdXNlciBtb2RlCisJICAgIGRldmljZSBkcml2ZXJzIG5lZWQgc3VwZXItdXNlciBwcml2aWxlZ2VzLgorCSAgICBZb3UgY2FuIGNoYW5nZSBtb2RlcyBvciBvd25lcnNoaXAgaW4gYSBkcml2ZXIgc2V0dXAKKwkgICAgd2hlbiB0aGUgZGV2aWNlIGhvdHBsdWdzLCBvciBtYXllIGp1c3Qgc3RhcnQgdGhlCisJICAgIGRyaXZlciByaWdodCB0aGVuLCBhcyBhIHByaXZpbGVnZWQgc2VydmVyIChvciBzb21lIGFjdGl2aXR5CisJICAgIHdpdGhpbiBvbmUpLgorCSAgICBUaGF0J3MgdGhlIG1vc3Qgc2VjdXJlIGFwcHJvYWNoIGZvciBtdWx0aS11c2VyIHN5c3RlbXMsCisJICAgIGJ1dCBmb3Igc2luZ2xlIHVzZXIgc3lzdGVtcyAoInRydXN0ZWQiIGJ5IHRoYXQgdXNlcikKKwkgICAgaXQncyBtb3JlIGNvbnZlbmllbnQganVzdCB0byBncmFudCBldmVyeW9uZSBhbGwgYWNjZXNzCisJICAgICh1c2luZyB0aGUgPGVtcGhhc2lzPmRldm1vZGU9MDY2NjwvZW1waGFzaXM+IG9wdGlvbikKKwkgICAgc28gdGhlIGRyaXZlciBjYW4gc3RhcnQgd2hlbmV2ZXIgaXQncyBuZWVkZWQuCisJICAgIDwvcGFyYT4KKworCSAgICA8cGFyYT5UaGUgbW91bnQgb3B0aW9ucyBmb3IgdXNiZnMsIHVzYWJsZSBpbiAvZXRjL2ZzdGFiIG9yCisJICAgIGluIGNvbW1hbmQgbGluZSBpbnZvY2F0aW9ucyBvZiA8ZW1waGFzaXM+bW91bnQ8L2VtcGhhc2lzPiwgYXJlOgorCisJICAgIDx2YXJpYWJsZWxpc3Q+CisJCTx2YXJsaXN0ZW50cnk+CisJCSAgICA8dGVybT48ZW1waGFzaXM+YnVzZ2lkPC9lbXBoYXNpcz49Tk5OTk48L3Rlcm0+CisJCSAgICA8bGlzdGl0ZW0+PHBhcmE+Q29udHJvbHMgdGhlIEdJRCB1c2VkIGZvciB0aGUKKwkJICAgIC9wcm9jL2J1cy91c2IvQkJCCisJCSAgICBkaXJlY3Rvcmllcy4gIChEZWZhdWx0OiAwKTwvcGFyYT48L2xpc3RpdGVtPjwvdmFybGlzdGVudHJ5PgorCQk8dmFybGlzdGVudHJ5Pjx0ZXJtPjxlbXBoYXNpcz5idXNtb2RlPC9lbXBoYXNpcz49TU1NPC90ZXJtPgorCQkgICAgPGxpc3RpdGVtPjxwYXJhPkNvbnRyb2xzIHRoZSBmaWxlIG1vZGUgdXNlZCBmb3IgdGhlCisJCSAgICAvcHJvYy9idXMvdXNiL0JCQgorCQkgICAgZGlyZWN0b3JpZXMuICAoRGVmYXVsdDogMDU1NSkKKwkJICAgIDwvcGFyYT48L2xpc3RpdGVtPjwvdmFybGlzdGVudHJ5PgorCQk8dmFybGlzdGVudHJ5Pjx0ZXJtPjxlbXBoYXNpcz5idXN1aWQ8L2VtcGhhc2lzPj1OTk5OTjwvdGVybT4KKwkJICAgIDxsaXN0aXRlbT48cGFyYT5Db250cm9scyB0aGUgVUlEIHVzZWQgZm9yIHRoZQorCQkgICAgL3Byb2MvYnVzL3VzYi9CQkIKKwkJICAgIGRpcmVjdG9yaWVzLiAgKERlZmF1bHQ6IDApPC9wYXJhPjwvbGlzdGl0ZW0+PC92YXJsaXN0ZW50cnk+CisKKwkJPHZhcmxpc3RlbnRyeT48dGVybT48ZW1waGFzaXM+ZGV2Z2lkPC9lbXBoYXNpcz49Tk5OTk48L3Rlcm0+CisJCSAgICA8bGlzdGl0ZW0+PHBhcmE+Q29udHJvbHMgdGhlIEdJRCB1c2VkIGZvciB0aGUKKwkJICAgIC9wcm9jL2J1cy91c2IvQkJCL0RERAorCQkgICAgZmlsZXMuICAoRGVmYXVsdDogMCk8L3BhcmE+PC9saXN0aXRlbT48L3Zhcmxpc3RlbnRyeT4KKwkJPHZhcmxpc3RlbnRyeT48dGVybT48ZW1waGFzaXM+ZGV2bW9kZTwvZW1waGFzaXM+PU1NTTwvdGVybT4KKwkJICAgIDxsaXN0aXRlbT48cGFyYT5Db250cm9scyB0aGUgZmlsZSBtb2RlIHVzZWQgZm9yIHRoZQorCQkgICAgL3Byb2MvYnVzL3VzYi9CQkIvRERECisJCSAgICBmaWxlcy4gIChEZWZhdWx0OiAwNjQ0KTwvcGFyYT48L2xpc3RpdGVtPjwvdmFybGlzdGVudHJ5PgorCQk8dmFybGlzdGVudHJ5Pjx0ZXJtPjxlbXBoYXNpcz5kZXZ1aWQ8L2VtcGhhc2lzPj1OTk5OTjwvdGVybT4KKwkJICAgIDxsaXN0aXRlbT48cGFyYT5Db250cm9scyB0aGUgVUlEIHVzZWQgZm9yIHRoZQorCQkgICAgL3Byb2MvYnVzL3VzYi9CQkIvRERECisJCSAgICBmaWxlcy4gIChEZWZhdWx0OiAwKTwvcGFyYT48L2xpc3RpdGVtPjwvdmFybGlzdGVudHJ5PgorCisJCTx2YXJsaXN0ZW50cnk+PHRlcm0+PGVtcGhhc2lzPmxpc3RnaWQ8L2VtcGhhc2lzPj1OTk5OTjwvdGVybT4KKwkJICAgIDxsaXN0aXRlbT48cGFyYT5Db250cm9scyB0aGUgR0lEIHVzZWQgZm9yIHRoZQorCQkgICAgL3Byb2MvYnVzL3VzYi9kZXZpY2VzIGFuZCBkcml2ZXJzIGZpbGVzLgorCQkgICAgKERlZmF1bHQ6IDApPC9wYXJhPjwvbGlzdGl0ZW0+PC92YXJsaXN0ZW50cnk+CisJCTx2YXJsaXN0ZW50cnk+PHRlcm0+PGVtcGhhc2lzPmxpc3Rtb2RlPC9lbXBoYXNpcz49TU1NPC90ZXJtPgorCQkgICAgPGxpc3RpdGVtPjxwYXJhPkNvbnRyb2xzIHRoZSBmaWxlIG1vZGUgdXNlZCBmb3IgdGhlCisJCSAgICAvcHJvYy9idXMvdXNiL2RldmljZXMgYW5kIGRyaXZlcnMgZmlsZXMuCisJCSAgICAoRGVmYXVsdDogMDQ0NCk8L3BhcmE+PC9saXN0aXRlbT48L3Zhcmxpc3RlbnRyeT4KKwkJPHZhcmxpc3RlbnRyeT48dGVybT48ZW1waGFzaXM+bGlzdHVpZDwvZW1waGFzaXM+PU5OTk5OPC90ZXJtPgorCQkgICAgPGxpc3RpdGVtPjxwYXJhPkNvbnRyb2xzIHRoZSBVSUQgdXNlZCBmb3IgdGhlCisJCSAgICAvcHJvYy9idXMvdXNiL2RldmljZXMgYW5kIGRyaXZlcnMgZmlsZXMuCisJCSAgICAoRGVmYXVsdDogMCk8L3BhcmE+PC9saXN0aXRlbT48L3Zhcmxpc3RlbnRyeT4KKwkgICAgPC92YXJpYWJsZWxpc3Q+CisKKwkgICAgPC9wYXJhPgorCisJICAgIDxwYXJhPk5vdGUgdGhhdCBtYW55IExpbnV4IGRpc3RyaWJ1dGlvbnMgaGFyZC13aXJlIHRoZSBtb3VudCBvcHRpb25zCisJICAgIGZvciB1c2JmcyBpbiB0aGVpciBpbml0IHNjcmlwdHMsIHN1Y2ggYXMKKwkgICAgPGZpbGVuYW1lPi9ldGMvcmMuZC9yYy5zeXNpbml0PC9maWxlbmFtZT4sCisJICAgIHJhdGhlciB0aGFuIG1ha2luZyBpdCBlYXN5IHRvIHNldCB0aGlzIHBlci1zeXN0ZW0KKwkgICAgcG9saWN5IGluIDxmaWxlbmFtZT4vZXRjL2ZzdGFiPC9maWxlbmFtZT4uCisJICAgIDwvcGFyYT4KKworCTwvc2VjdDE+CisKKwk8c2VjdDEgaWQ9InVzYmZzLWRldmljZXMiPgorCSAgICA8dGl0bGU+L3Byb2MvYnVzL3VzYi9kZXZpY2VzPC90aXRsZT4KKworCSAgICA8cGFyYT5UaGlzIGZpbGUgaXMgaGFuZHkgZm9yIHN0YXR1cyB2aWV3aW5nIHRvb2xzIGluIHVzZXIKKwkgICAgbW9kZSwgd2hpY2ggY2FuIHNjYW4gdGhlIHRleHQgZm9ybWF0IGFuZCBpZ25vcmUgbW9zdCBvZiBpdC4KKwkgICAgTW9yZSBkZXRhaWxlZCBkZXZpY2Ugc3RhdHVzIChpbmNsdWRpbmcgY2xhc3MgYW5kIHZlbmRvcgorCSAgICBzdGF0dXMpIGlzIGF2YWlsYWJsZSBmcm9tIGRldmljZS1zcGVjaWZpYyBmaWxlcy4KKwkgICAgRm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IGZvcm1hdCBvZiB0aGlzIGZpbGUsCisJICAgIHNlZSB0aGUKKwkgICAgPGZpbGVuYW1lPkRvY3VtZW50YXRpb24vdXNiL3Byb2NfdXNiX2luZm8udHh0PC9maWxlbmFtZT4KKwkgICAgZmlsZSBpbiB5b3VyIExpbnV4IGtlcm5lbCBzb3VyY2VzLgorCSAgICA8L3BhcmE+CisKKwkgICAgPHBhcmE+VGhpcyBmaWxlLCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBwb2xsKCkgc3lzdGVtIGNhbGwsIGNhbgorCSAgICBhbHNvIGJlIHVzZWQgdG8gZGV0ZWN0IHdoZW4gZGV2aWNlcyBhcmUgYWRkZWQgb3IgcmVtb3ZlZDoKKzxwcm9ncmFtbGlzdGluZz5pbnQgZmQ7CitzdHJ1Y3QgcG9sbGZkIHBmZDsKKworZmQgPSBvcGVuKCIvcHJvYy9idXMvdXNiL2RldmljZXMiLCBPX1JET05MWSk7CitwZmQgPSB7IGZkLCBQT0xMSU4sIDAgfTsKK2ZvciAoOzspIHsKKwkvKiBUaGUgZmlyc3QgdGltZSB0aHJvdWdoLCB0aGlzIGNhbGwgd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkuICovCisJcG9sbCgmYW1wO3BmZCwgMSwgLTEpOworCisJLyogVG8gc2VlIHdoYXQncyBjaGFuZ2VkLCBjb21wYXJlIHRoZSBmaWxlJ3MgcHJldmlvdXMgYW5kIGN1cnJlbnQKKwkgICBjb250ZW50cyBvciBzY2FuIHRoZSBmaWxlc3lzdGVtLiAgKFNjYW5uaW5nIGlzIG1vcmUgcHJlY2lzZS4pICovCit9PC9wcm9ncmFtbGlzdGluZz4KKwkgICAgTm90ZSB0aGF0IHRoaXMgYmVoYXZpb3IgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgaW5mb3JtYXRpb25hbAorCSAgICBhbmQgZGVidWcgcHVycG9zZXMuICBJdCB3b3VsZCBiZSBtb3JlIGFwcHJvcHJpYXRlIHRvIHVzZSBwcm9ncmFtcworCSAgICBzdWNoIGFzIHVkZXYgb3IgSEFMIHRvIGluaXRpYWxpemUgYSBkZXZpY2Ugb3Igc3RhcnQgYSB1c2VyLW1vZGUKKwkgICAgaGVscGVyIHByb2dyYW0sIGZvciBpbnN0YW5jZS4KKwkgICAgPC9wYXJhPgorCTwvc2VjdDE+CisKKwk8c2VjdDEgaWQ9InVzYmZzLWJiYmRkZCI+CisJICAgIDx0aXRsZT4vcHJvYy9idXMvdXNiL0JCQi9EREQ8L3RpdGxlPgorCisJICAgIDxwYXJhPlVzZSB0aGVzZSBmaWxlcyBpbiBvbmUgb2YgdGhlc2UgYmFzaWMgd2F5czoKKwkgICAgPC9wYXJhPgorCisJICAgIDxwYXJhPjxlbXBoYXNpcz5UaGV5IGNhbiBiZSByZWFkLDwvZW1waGFzaXM+CisJICAgIHByb2R1Y2luZyBmaXJzdCB0aGUgZGV2aWNlIGRlc2NyaXB0b3IKKwkgICAgKDE4IGJ5dGVzKSBhbmQgdGhlbiB0aGUgZGVzY3JpcHRvcnMgZm9yIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCisJICAgIFNlZSB0aGUgVVNCIDIuMCBzcGVjIGZvciBkZXRhaWxzIGFib3V0IHRob3NlIGJpbmFyeSBkYXRhIGZvcm1hdHMuCisJICAgIFlvdSdsbCBuZWVkIHRvIGNvbnZlcnQgbW9zdCBtdWx0aWJ5dGUgdmFsdWVzIGZyb20gbGl0dGxlIGVuZGlhbgorCSAgICBmb3JtYXQgdG8geW91ciBuYXRpdmUgaG9zdCBieXRlIG9yZGVyLCBhbHRob3VnaCBhIGZldyBvZiB0aGUKKwkgICAgZmllbGRzIGluIHRoZSBkZXZpY2UgZGVzY3JpcHRvciAoYm90aCBvZiB0aGUgQkNELWVuY29kZWQgZmllbGRzLAorCSAgICBhbmQgdGhlIHZlbmRvciBhbmQgcHJvZHVjdCBJRHMpIHdpbGwgYmUgYnl0ZXN3YXBwZWQgZm9yIHlvdS4KKwkgICAgTm90ZSB0aGF0IGNvbmZpZ3VyYXRpb24gZGVzY3JpcHRvcnMgaW5jbHVkZSBkZXNjcmlwdG9ycyBmb3IKKwkgICAgaW50ZXJmYWNlcywgYWx0c2V0dGluZ3MsIGVuZHBvaW50cywgYW5kIG1heWJlIGFkZGl0aW9uYWwKKwkgICAgY2xhc3MgZGVzY3JpcHRvcnMuCisJICAgIDwvcGFyYT4KKworCSAgICA8cGFyYT48ZW1waGFzaXM+UGVyZm9ybSBVU0Igb3BlcmF0aW9uczwvZW1waGFzaXM+IHVzaW5nIAorCSAgICA8ZW1waGFzaXM+aW9jdGwoKTwvZW1waGFzaXM+IHJlcXVlc3RzIHRvIG1ha2UgZW5kcG9pbnQgSS9PCisJICAgIHJlcXVlc3RzIChzeW5jaHJvbm91c2x5IG9yIGFzeW5jaHJvbm91c2x5KSBvciBtYW5hZ2UKKwkgICAgdGhlIGRldmljZS4KKwkgICAgVGhlc2UgcmVxdWVzdHMgbmVlZCB0aGUgQ0FQX1NZU19SQVdJTyBjYXBhYmlsaXR5LAorCSAgICBhcyB3ZWxsIGFzIGZpbGVzeXN0ZW0gYWNjZXNzIHBlcm1pc3Npb25zLgorCSAgICBPbmx5IG9uZSBpb2N0bCByZXF1ZXN0IGNhbiBiZSBtYWRlIG9uIG9uZSBvZiB0aGVzZQorCSAgICBkZXZpY2UgZmlsZXMgYXQgYSB0aW1lLgorCSAgICBUaGlzIG1lYW5zIHRoYXQgaWYgeW91IGFyZSBzeW5jaHJvbm91c2x5IHJlYWRpbmcgYW4gZW5kcG9pbnQKKwkgICAgZnJvbSBvbmUgdGhyZWFkLCB5b3Ugd29uJ3QgYmUgYWJsZSB0byB3cml0ZSB0byBhIGRpZmZlcmVudAorCSAgICBlbmRwb2ludCBmcm9tIGFub3RoZXIgdGhyZWFkIHVudGlsIHRoZSByZWFkIGNvbXBsZXRlcy4KKwkgICAgVGhpcyB3b3JrcyBmb3IgPGVtcGhhc2lzPmhhbGYgZHVwbGV4PC9lbXBoYXNpcz4gcHJvdG9jb2xzLAorCSAgICBidXQgb3RoZXJ3aXNlIHlvdSdkIHVzZSBhc3luY2hyb25vdXMgaS9vIHJlcXVlc3RzLiAKKwkgICAgPC9wYXJhPgorCisJICAgIDwvc2VjdDE+CisKKworCTxzZWN0MSBpZD0idXNiZnMtbGlmZWN5Y2xlIj4KKwkgICAgPHRpdGxlPkxpZmUgQ3ljbGUgb2YgVXNlciBNb2RlIERyaXZlcnM8L3RpdGxlPgorCisJICAgIDxwYXJhPlN1Y2ggYSBkcml2ZXIgZmlyc3QgbmVlZHMgdG8gZmluZCBhIGRldmljZSBmaWxlCisJICAgIGZvciBhIGRldmljZSBpdCBrbm93cyBob3cgdG8gaGFuZGxlLgorCSAgICBNYXliZSBpdCB3YXMgdG9sZCBhYm91dCBpdCBiZWNhdXNlIGEKKwkgICAgPGZpbGVuYW1lPi9zYmluL2hvdHBsdWc8L2ZpbGVuYW1lPiBldmVudCBoYW5kbGluZyBhZ2VudAorCSAgICBjaG9zZSB0aGF0IGRyaXZlciB0byBoYW5kbGUgdGhlIG5ldyBkZXZpY2UuCisJICAgIE9yIG1heWJlIGl0J3MgYW4gYXBwbGljYXRpb24gdGhhdCBzY2FucyBhbGwgdGhlCisJICAgIC9wcm9jL2J1cy91c2IgZGV2aWNlIGZpbGVzLCBhbmQgaWdub3JlcyBtb3N0IGRldmljZXMuCisJICAgIEluIGVpdGhlciBjYXNlLCBpdCBzaG91bGQgPGZ1bmN0aW9uPnJlYWQoKTwvZnVuY3Rpb24+IGFsbAorCSAgICB0aGUgZGVzY3JpcHRvcnMgZnJvbSB0aGUgZGV2aWNlIGZpbGUsCisJICAgIGFuZCBjaGVjayB0aGVtIGFnYWluc3Qgd2hhdCBpdCBrbm93cyBob3cgdG8gaGFuZGxlLgorCSAgICBJdCBtaWdodCBqdXN0IHJlamVjdCBldmVyeXRoaW5nIGV4Y2VwdCBhIHBhcnRpY3VsYXIKKwkgICAgdmVuZG9yIGFuZCBwcm9kdWN0IElELCBvciBuZWVkIGEgbW9yZSBjb21wbGV4IHBvbGljeS4KKwkgICAgPC9wYXJhPgorCisJICAgIDxwYXJhPk5ldmVyIGFzc3VtZSB0aGVyZSB3aWxsIG9ubHkgYmUgb25lIHN1Y2ggZGV2aWNlCisJICAgIG9uIHRoZSBzeXN0ZW0gYXQgYSB0aW1lIQorCSAgICBJZiB5b3VyIGNvZGUgY2FuJ3QgaGFuZGxlIG1vcmUgdGhhbiBvbmUgZGV2aWNlIGF0CisJICAgIGEgdGltZSwgYXQgbGVhc3QgZGV0ZWN0IHdoZW4gdGhlcmUncyBtb3JlIHRoYW4gb25lLCBhbmQKKwkgICAgaGF2ZSB5b3VyIHVzZXJzIGNob29zZSB3aGljaCBkZXZpY2UgdG8gdXNlLgorCSAgICA8L3BhcmE+CisKKwkgICAgPHBhcmE+T25jZSB5b3VyIHVzZXIgbW9kZSBkcml2ZXIga25vd3Mgd2hhdCBkZXZpY2UgdG8gdXNlLAorCSAgICBpdCBpbnRlcmFjdHMgd2l0aCBpdCBpbiBlaXRoZXIgb2YgdHdvIHN0eWxlcy4KKwkgICAgVGhlIHNpbXBsZSBzdHlsZSBpcyB0byBtYWtlIG9ubHkgY29udHJvbCByZXF1ZXN0czsgc29tZQorCSAgICBkZXZpY2VzIGRvbid0IG5lZWQgbW9yZSBjb21wbGV4IGludGVyYWN0aW9ucyB0aGFuIHRob3NlLgorCSAgICAoQW4gZXhhbXBsZSBtaWdodCBiZSBzb2Z0d2FyZSB1c2luZyB2ZW5kb3Itc3BlY2lmaWMgY29udHJvbAorCSAgICByZXF1ZXN0cyBmb3Igc29tZSBpbml0aWFsaXphdGlvbiBvciBjb25maWd1cmF0aW9uIHRhc2tzLAorCSAgICB3aXRoIGEga2VybmVsIGRyaXZlciBmb3IgdGhlIHJlc3QuKQorCSAgICA8L3BhcmE+CisKKwkgICAgPHBhcmE+TW9yZSBsaWtlbHksIHlvdSBuZWVkIGEgbW9yZSBjb21wbGV4IHN0eWxlIGRyaXZlcjoKKwkgICAgb25lIHVzaW5nIG5vbi1jb250cm9sIGVuZHBvaW50cywgcmVhZGluZyBvciB3cml0aW5nIGRhdGEKKwkgICAgYW5kIGNsYWltaW5nIGV4Y2x1c2l2ZSB1c2Ugb2YgYW4gaW50ZXJmYWNlLgorCSAgICA8ZW1waGFzaXM+QnVsazwvZW1waGFzaXM+IHRyYW5zZmVycyBhcmUgZWFzaWVzdCB0byB1c2UsCisJICAgIGJ1dCBvbmx5IHRoZWlyIHNpYmxpbmcgPGVtcGhhc2lzPmludGVycnVwdDwvZW1waGFzaXM+IHRyYW5zZmVycyAKKwkgICAgd29yayB3aXRoIGxvdyBzcGVlZCBkZXZpY2VzLgorCSAgICBCb3RoIGludGVycnVwdCBhbmQgPGVtcGhhc2lzPmlzb2Nocm9ub3VzPC9lbXBoYXNpcz4gdHJhbnNmZXJzCisJICAgIG9mZmVyIHNlcnZpY2UgZ3VhcmFudGVlcyBiZWNhdXNlIHRoZWlyIGJhbmR3aWR0aCBpcyByZXNlcnZlZC4KKwkgICAgU3VjaCAicGVyaW9kaWMiIHRyYW5zZmVycyBhcmUgYXdrd2FyZCB0byB1c2UgdGhyb3VnaCB1c2JmcywKKwkgICAgdW5sZXNzIHlvdSdyZSB1c2luZyB0aGUgYXN5bmNocm9ub3VzIGNhbGxzLiAgSG93ZXZlciwgaW50ZXJydXB0CisJICAgIHRyYW5zZmVycyBjYW4gYWxzbyBiZSB1c2VkIGluIGEgc3luY2hyb25vdXMgIm9uZSBzaG90IiBzdHlsZS4KKwkgICAgPC9wYXJhPgorCisJICAgIDxwYXJhPllvdXIgdXNlci1tb2RlIGRyaXZlciBzaG91bGQgbmV2ZXIgbmVlZCB0byB3b3JyeQorCSAgICBhYm91dCBjbGVhbmluZyB1cCByZXF1ZXN0IHN0YXRlIHdoZW4gdGhlIGRldmljZSBpcworCSAgICBkaXNjb25uZWN0ZWQsIGFsdGhvdWdoIGl0IHNob3VsZCBjbG9zZSBpdHMgb3BlbiBmaWxlCisJICAgIGRlc2NyaXB0b3JzIGFzIHNvb24gYXMgaXQgc3RhcnRzIHNlZWluZyB0aGUgRU5PREVWCisJICAgIGVycm9ycy4KKwkgICAgPC9wYXJhPgorCisJICAgIDwvc2VjdDE+CisKKwk8c2VjdDEgaWQ9InVzYmZzLWlvY3RsIj48dGl0bGU+VGhlIGlvY3RsKCkgUmVxdWVzdHM8L3RpdGxlPgorCisJICAgIDxwYXJhPlRvIHVzZSB0aGVzZSBpb2N0bHMsIHlvdSBuZWVkIHRvIGluY2x1ZGUgdGhlIGZvbGxvd2luZworCSAgICBoZWFkZXJzIGluIHlvdXIgdXNlcnNwYWNlIHByb2dyYW06Cis8cHJvZ3JhbWxpc3Rpbmc+I2luY2x1ZGUgJmx0O2xpbnV4L3VzYi5oJmd0OworI2luY2x1ZGUgJmx0O2xpbnV4L3VzYmRldmljZV9mcy5oJmd0OworI2luY2x1ZGUgJmx0O2FzbS9ieXRlb3JkZXIuaCZndDs8L3Byb2dyYW1saXN0aW5nPgorCSAgICBUaGUgc3RhbmRhcmQgVVNCIGRldmljZSBtb2RlbCByZXF1ZXN0cywgZnJvbSAiQ2hhcHRlciA5IiBvZgorCSAgICB0aGUgVVNCIDIuMCBzcGVjaWZpY2F0aW9uLCBhcmUgYXV0b21hdGljYWxseSBpbmNsdWRlZCBmcm9tCisJICAgIHRoZSA8ZmlsZW5hbWU+Jmx0O2xpbnV4L3VzYi9jaDkuaCZndDs8L2ZpbGVuYW1lPiBoZWFkZXIuCisJICAgIDwvcGFyYT4KKworCSAgICA8cGFyYT5Vbmxlc3Mgbm90ZWQgb3RoZXJ3aXNlLCB0aGUgaW9jdGwgcmVxdWVzdHMKKwkgICAgZGVzY3JpYmVkIGhlcmUgd2lsbAorCSAgICB1cGRhdGUgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIG9uIHRoZSB1c2JmcyBmaWxlIHRvIHdoaWNoCisJICAgIHRoZXkgYXJlIGFwcGxpZWQgKHVubGVzcyB0aGV5IGZhaWwpLgorCSAgICBBIHJldHVybiBvZiB6ZXJvIGluZGljYXRlcyBzdWNjZXNzOyBvdGhlcndpc2UsIGEKKwkgICAgc3RhbmRhcmQgVVNCIGVycm9yIGNvZGUgaXMgcmV0dXJuZWQuICAoVGhlc2UgYXJlCisJICAgIGRvY3VtZW50ZWQgaW4KKwkgICAgPGZpbGVuYW1lPkRvY3VtZW50YXRpb24vdXNiL2Vycm9yLWNvZGVzLnR4dDwvZmlsZW5hbWU+CisJICAgIGluIHlvdXIga2VybmVsIHNvdXJjZXMuKQorCSAgICA8L3BhcmE+CisKKwkgICAgPHBhcmE+RWFjaCBvZiB0aGVzZSBmaWxlcyBtdWx0aXBsZXhlcyBhY2Nlc3MgdG8gc2V2ZXJhbAorCSAgICBJL08gc3RyZWFtcywgb25lIHBlciBlbmRwb2ludC4KKwkgICAgRWFjaCBkZXZpY2UgaGFzIG9uZSBjb250cm9sIGVuZHBvaW50IChlbmRwb2ludCB6ZXJvKQorCSAgICB3aGljaCBzdXBwb3J0cyBhIGxpbWl0ZWQgUlBDIHN0eWxlIFJQQyBhY2Nlc3MuCisJICAgIERldmljZXMgYXJlIGNvbmZpZ3VyZWQKKwkgICAgYnkgaHViX3dxIChpbiB0aGUga2VybmVsKSBzZXR0aW5nIGEgZGV2aWNlLXdpZGUKKwkgICAgPGVtcGhhc2lzPmNvbmZpZ3VyYXRpb248L2VtcGhhc2lzPiB0aGF0IGFmZmVjdHMgdGhpbmdzCisJICAgIGxpa2UgcG93ZXIgY29uc3VtcHRpb24gYW5kIGJhc2ljIGZ1bmN0aW9uYWxpdHkuCisJICAgIFRoZSBlbmRwb2ludHMgYXJlIHBhcnQgb2YgVVNCIDxlbXBoYXNpcz5pbnRlcmZhY2VzPC9lbXBoYXNpcz4sCisJICAgIHdoaWNoIG1heSBoYXZlIDxlbXBoYXNpcz5hbHRzZXR0aW5nczwvZW1waGFzaXM+CisJICAgIGFmZmVjdGluZyB0aGluZ3MgbGlrZSB3aGljaCBlbmRwb2ludHMgYXJlIGF2YWlsYWJsZS4KKwkgICAgTWFueSBkZXZpY2VzIG9ubHkgaGF2ZSBhIHNpbmdsZSBjb25maWd1cmF0aW9uIGFuZCBpbnRlcmZhY2UsCisJICAgIHNvIGRyaXZlcnMgZm9yIHRoZW0gd2lsbCBpZ25vcmUgY29uZmlndXJhdGlvbnMgYW5kIGFsdHNldHRpbmdzLgorCSAgICA8L3BhcmE+CisKKworCSAgICA8c2VjdDIgaWQ9InVzYmZzLW1nbXQiPgorCQk8dGl0bGU+TWFuYWdlbWVudC9TdGF0dXMgUmVxdWVzdHM8L3RpdGxlPgorCisJCTxwYXJhPkEgbnVtYmVyIG9mIHVzYmZzIHJlcXVlc3RzIGRvbid0IGRlYWwgdmVyeSBkaXJlY3RseQorCQl3aXRoIGRldmljZSBJL08uCisJCVRoZXkgbW9zdGx5IHJlbGF0ZSB0byBkZXZpY2UgbWFuYWdlbWVudCBhbmQgc3RhdHVzLgorCQlUaGVzZSBhcmUgYWxsIHN5bmNocm9ub3VzIHJlcXVlc3RzLgorCQk8L3BhcmE+CisKKwkJPHZhcmlhYmxlbGlzdD4KKworCQk8dmFybGlzdGVudHJ5Pjx0ZXJtPlVTQkRFVkZTX0NMQUlNSU5URVJGQUNFPC90ZXJtPgorCQkgICAgPGxpc3RpdGVtPjxwYXJhPlRoaXMgaXMgdXNlZCB0byBmb3JjZSB1c2JmcyB0bworCQkgICAgY2xhaW0gYSBzcGVjaWZpYyBpbnRlcmZhY2UsCisJCSAgICB3aGljaCBoYXMgbm90IHByZXZpb3VzbHkgYmVlbiBjbGFpbWVkIGJ5IHVzYmZzIG9yIGFueSBvdGhlcgorCQkgICAga2VybmVsIGRyaXZlci4KKwkJICAgIFRoZSBpb2N0bCBwYXJhbWV0ZXIgaXMgYW4gaW50ZWdlciBob2xkaW5nIHRoZSBudW1iZXIgb2YKKwkJICAgIHRoZSBpbnRlcmZhY2UgKGJJbnRlcmZhY2VOdW1iZXIgZnJvbSBkZXNjcmlwdG9yKS4KKwkJICAgIDwvcGFyYT48cGFyYT4KKwkJICAgIE5vdGUgdGhhdCBpZiB5b3VyIGRyaXZlciBkb2Vzbid0IGNsYWltIGFuIGludGVyZmFjZQorCQkgICAgYmVmb3JlIHRyeWluZyB0byB1c2Ugb25lIG9mIGl0cyBlbmRwb2ludHMsIGFuZCBubworCQkgICAgb3RoZXIgZHJpdmVyIGhhcyBib3VuZCB0byBpdCwgdGhlbiB0aGUgaW50ZXJmYWNlIGlzCisJCSAgICBhdXRvbWF0aWNhbGx5IGNsYWltZWQgYnkgdXNiZnMuCisJCSAgICA8L3BhcmE+PHBhcmE+CisJCSAgICBUaGlzIGNsYWltIHdpbGwgYmUgcmVsZWFzZWQgYnkgYSBSRUxFQVNFSU5URVJGQUNFIGlvY3RsLAorCQkgICAgb3IgYnkgY2xvc2luZyB0aGUgZmlsZSBkZXNjcmlwdG9yLgorCQkgICAgRmlsZSBtb2RpZmljYXRpb24gdGltZSBpcyBub3QgdXBkYXRlZCBieSB0aGlzIHJlcXVlc3QuCisJCSAgICA8L3BhcmE+PC9saXN0aXRlbT48L3Zhcmxpc3RlbnRyeT4KKworCQk8dmFybGlzdGVudHJ5Pjx0ZXJtPlVTQkRFVkZTX0NPTk5FQ1RJTkZPPC90ZXJtPgorCQkgICAgPGxpc3RpdGVtPjxwYXJhPlNheXMgd2hldGhlciB0aGUgZGV2aWNlIGlzIGxvd3NwZWVkLgorCQkgICAgVGhlIGlvY3RsIHBhcmFtZXRlciBwb2ludHMgdG8gYSBzdHJ1Y3R1cmUgbGlrZSB0aGlzOgorPHByb2dyYW1saXN0aW5nPnN0cnVjdCB1c2JkZXZmc19jb25uZWN0aW5mbyB7CisgICAgICAgIHVuc2lnbmVkIGludCAgIGRldm51bTsKKyAgICAgICAgdW5zaWduZWQgY2hhciAgc2xvdzsKK307IDwvcHJvZ3JhbWxpc3Rpbmc+CisJCSAgICBGaWxlIG1vZGlmaWNhdGlvbiB0aW1lIGlzIG5vdCB1cGRhdGVkIGJ5IHRoaXMgcmVxdWVzdC4KKwkJICAgIDwvcGFyYT48cGFyYT4KKwkJICAgIDxlbXBoYXNpcz5Zb3UgY2FuJ3QgdGVsbCB3aGV0aGVyIGEgIm5vdCBzbG93IgorCQkgICAgZGV2aWNlIGlzIGNvbm5lY3RlZCBhdCBoaWdoIHNwZWVkICg0ODAgTUJpdC9zZWMpCisJCSAgICBvciBqdXN0IGZ1bGwgc3BlZWQgKDEyIE1CaXQvc2VjKS48L2VtcGhhc2lzPgorCQkgICAgWW91IHNob3VsZCBrbm93IHRoZSBkZXZudW0gdmFsdWUgYWxyZWFkeSwKKwkJICAgIGl0J3MgdGhlIERERCB2YWx1ZSBvZiB0aGUgZGV2aWNlIGZpbGUgbmFtZS4KKwkJICAgIDwvcGFyYT48L2xpc3RpdGVtPjwvdmFybGlzdGVudHJ5PgorCisJCTx2YXJsaXN0ZW50cnk+PHRlcm0+VVNCREVWRlNfR0VURFJJVkVSPC90ZXJtPgorCQkgICAgPGxpc3RpdGVtPjxwYXJhPlJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGtlcm5lbCBkcml2ZXIKKwkJICAgIGJvdW5kIHRvIGEgZ2l2ZW4gaW50ZXJmYWNlIChhIHN0cmluZykuICBQYXJhbWV0ZXIKKwkJICAgIGlzIGEgcG9pbnRlciB0byB0aGlzIHN0cnVjdHVyZSwgd2hpY2ggaXMgbW9kaWZpZWQ6Cis8cHJvZ3JhbWxpc3Rpbmc+c3RydWN0IHVzYmRldmZzX2dldGRyaXZlciB7CisgICAgICAgIHVuc2lnbmVkIGludCAgaW50ZXJmYWNlOworICAgICAgICBjaGFyICAgICAgICAgIGRyaXZlcltVU0JERVZGU19NQVhEUklWRVJOQU1FICsgMV07Cit9OzwvcHJvZ3JhbWxpc3Rpbmc+CisJCSAgICBGaWxlIG1vZGlmaWNhdGlvbiB0aW1lIGlzIG5vdCB1cGRhdGVkIGJ5IHRoaXMgcmVxdWVzdC4KKwkJICAgIDwvcGFyYT48L2xpc3RpdGVtPjwvdmFybGlzdGVudHJ5PgorCisJCTx2YXJsaXN0ZW50cnk+PHRlcm0+VVNCREVWRlNfSU9DVEw8L3Rlcm0+CisJCSAgICA8bGlzdGl0ZW0+PHBhcmE+UGFzc2VzIGEgcmVxdWVzdCBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoCisJCSAgICB0byBhIGtlcm5lbCBkcml2ZXIgdGhhdCBoYXMgYW4gaW9jdGwgZW50cnkgaW4gdGhlCisJCSAgICA8ZW1waGFzaXM+c3RydWN0IHVzYl9kcml2ZXI8L2VtcGhhc2lzPiBpdCByZWdpc3RlcmVkLgorPHByb2dyYW1saXN0aW5nPnN0cnVjdCB1c2JkZXZmc19pb2N0bCB7CisgICAgICAgIGludCAgICAgaWZubzsKKyAgICAgICAgaW50ICAgICBpb2N0bF9jb2RlOworICAgICAgICB2b2lkICAgICpkYXRhOworfTsKKworLyogdXNlciBtb2RlIGNhbGwgbG9va3MgbGlrZSB0aGlzLgorICogJ3JlcXVlc3QnIGJlY29tZXMgdGhlIGRyaXZlci0+aW9jdGwoKSAnY29kZScgcGFyYW1ldGVyLgorICogdGhlIHNpemUgb2YgJ3BhcmFtJyBpcyBlbmNvZGVkIGluICdyZXF1ZXN0JywgYW5kIHRoYXQgZGF0YQorICogaXMgY29waWVkIHRvIG9yIGZyb20gdGhlIGRyaXZlci0+aW9jdGwoKSAnYnVmJyBwYXJhbWV0ZXIuCisgKi8KK3N0YXRpYyBpbnQKK3VzYmRldl9pb2N0bCAoaW50IGZkLCBpbnQgaWZubywgdW5zaWduZWQgcmVxdWVzdCwgdm9pZCAqcGFyYW0pCit7CisgICAgICAgIHN0cnVjdCB1c2JkZXZmc19pb2N0bAl3cmFwcGVyOworCisgICAgICAgIHdyYXBwZXIuaWZubyA9IGlmbm87CisgICAgICAgIHdyYXBwZXIuaW9jdGxfY29kZSA9IHJlcXVlc3Q7CisgICAgICAgIHdyYXBwZXIuZGF0YSA9IHBhcmFtOworCisgICAgICAgIHJldHVybiBpb2N0bCAoZmQsIFVTQkRFVkZTX0lPQ1RMLCAmYW1wO3dyYXBwZXIpOworfSA8L3Byb2dyYW1saXN0aW5nPgorCQkgICAgRmlsZSBtb2RpZmljYXRpb24gdGltZSBpcyBub3QgdXBkYXRlZCBieSB0aGlzIHJlcXVlc3QuCisJCSAgICA8L3BhcmE+PHBhcmE+CisJCSAgICBUaGlzIHJlcXVlc3QgbGV0cyBrZXJuZWwgZHJpdmVycyB0YWxrIHRvIHVzZXIgbW9kZSBjb2RlCisJCSAgICB0aHJvdWdoIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucyBldmVuIHdoZW4gdGhleSBkb24ndCBjcmVhdGUKKwkJICAgIGEgY2hhcmFjdGVyIG9yIGJsb2NrIHNwZWNpYWwgZGV2aWNlLgorCQkgICAgSXQncyBhbHNvIGJlZW4gdXNlZCB0byBkbyB0aGluZ3MgbGlrZSBhc2sgZGV2aWNlcyB3aGF0CisJCSAgICBkZXZpY2Ugc3BlY2lhbCBmaWxlIHNob3VsZCBiZSB1c2VkLgorCQkgICAgVHdvIHByZS1kZWZpbmVkIGlvY3RscyBhcmUgdXNlZAorCQkgICAgdG8gZGlzY29ubmVjdCBhbmQgcmVjb25uZWN0IGtlcm5lbCBkcml2ZXJzLCBzbworCQkgICAgdGhhdCB1c2VyIG1vZGUgY29kZSBjYW4gY29tcGxldGVseSBtYW5hZ2UgYmluZGluZworCQkgICAgYW5kIGNvbmZpZ3VyYXRpb24gb2YgZGV2aWNlcy4KKwkJICAgIDwvcGFyYT48L2xpc3RpdGVtPjwvdmFybGlzdGVudHJ5PgorCisJCTx2YXJsaXN0ZW50cnk+PHRlcm0+VVNCREVWRlNfUkVMRUFTRUlOVEVSRkFDRTwvdGVybT4KKwkJICAgIDxsaXN0aXRlbT48cGFyYT5UaGlzIGlzIHVzZWQgdG8gcmVsZWFzZSB0aGUgY2xhaW0gdXNiZnMKKwkJICAgIG1hZGUgb24gaW50ZXJmYWNlLCBlaXRoZXIgaW1wbGljaXRseSBvciBiZWNhdXNlIG9mIGEKKwkJICAgIFVTQkRFVkZTX0NMQUlNSU5URVJGQUNFIGNhbGwsIGJlZm9yZSB0aGUgZmlsZQorCQkgICAgZGVzY3JpcHRvciBpcyBjbG9zZWQuCisJCSAgICBUaGUgaW9jdGwgcGFyYW1ldGVyIGlzIGFuIGludGVnZXIgaG9sZGluZyB0aGUgbnVtYmVyIG9mCisJCSAgICB0aGUgaW50ZXJmYWNlIChiSW50ZXJmYWNlTnVtYmVyIGZyb20gZGVzY3JpcHRvcik7CisJCSAgICBGaWxlIG1vZGlmaWNhdGlvbiB0aW1lIGlzIG5vdCB1cGRhdGVkIGJ5IHRoaXMgcmVxdWVzdC4KKwkJICAgIDwvcGFyYT48d2FybmluZz48cGFyYT4KKwkJICAgIDxlbXBoYXNpcz5ObyBzZWN1cml0eSBjaGVjayBpcyBtYWRlIHRvIGVuc3VyZQorCQkgICAgdGhhdCB0aGUgdGFzayB3aGljaCBtYWRlIHRoZSBjbGFpbSBpcyB0aGUgb25lCisJCSAgICB3aGljaCBpcyByZWxlYXNpbmcgaXQuCisJCSAgICBUaGlzIG1lYW5zIHRoYXQgdXNlciBtb2RlIGRyaXZlciBtYXkgaW50ZXJmZXJlCisJCSAgICBvdGhlciBvbmVzLiAgPC9lbXBoYXNpcz4KKwkJICAgIDwvcGFyYT48L3dhcm5pbmc+PC9saXN0aXRlbT48L3Zhcmxpc3RlbnRyeT4KKworCQk8dmFybGlzdGVudHJ5Pjx0ZXJtPlVTQkRFVkZTX1JFU0VURVA8L3Rlcm0+CisJCSAgICA8bGlzdGl0ZW0+PHBhcmE+UmVzZXRzIHRoZSBkYXRhIHRvZ2dsZSB2YWx1ZSBmb3IgYW4gZW5kcG9pbnQKKwkJICAgIChidWxrIG9yIGludGVycnVwdCkgdG8gREFUQTAuCisJCSAgICBUaGUgaW9jdGwgcGFyYW1ldGVyIGlzIGFuIGludGVnZXIgZW5kcG9pbnQgbnVtYmVyCisJCSAgICAoMSB0byAxNSwgYXMgaWRlbnRpZmllZCBpbiB0aGUgZW5kcG9pbnQgZGVzY3JpcHRvciksCisJCSAgICB3aXRoIFVTQl9ESVJfSU4gYWRkZWQgaWYgdGhlIGRldmljZSdzIGVuZHBvaW50IHNlbmRzCisJCSAgICBkYXRhIHRvIHRoZSBob3N0LgorCQkgICAgPC9wYXJhPjx3YXJuaW5nPjxwYXJhPgorCQkgICAgPGVtcGhhc2lzPkF2b2lkIHVzaW5nIHRoaXMgcmVxdWVzdC4KKwkJICAgIEl0IHNob3VsZCBwcm9iYWJseSBiZSByZW1vdmVkLjwvZW1waGFzaXM+CisJCSAgICBVc2luZyBpdCB0eXBpY2FsbHkgbWVhbnMgdGhlIGRldmljZSBhbmQgZHJpdmVyIHdpbGwgbG9zZQorCQkgICAgdG9nZ2xlIHN5bmNocm9uaXphdGlvbi4gIElmIHlvdSByZWFsbHkgbG9zdCBzeW5jaHJvbml6YXRpb24sCisJCSAgICB5b3UgbGlrZWx5IG5lZWQgdG8gY29tcGxldGVseSBoYW5kc2hha2Ugd2l0aCB0aGUgZGV2aWNlLAorCQkgICAgdXNpbmcgYSByZXF1ZXN0IGxpa2UgQ0xFQVJfSEFMVAorCQkgICAgb3IgU0VUX0lOVEVSRkFDRS4KKwkJICAgIDwvcGFyYT48L3dhcm5pbmc+PC9saXN0aXRlbT48L3Zhcmxpc3RlbnRyeT4KKworCQk8L3ZhcmlhYmxlbGlzdD4KKworCQk8L3NlY3QyPgorCisJICAgIDxzZWN0MiBpZD0idXNiZnMtc3luYyI+CisJCTx0aXRsZT5TeW5jaHJvbm91cyBJL08gU3VwcG9ydDwvdGl0bGU+CisKKwkJPHBhcmE+U3luY2hyb25vdXMgcmVxdWVzdHMgaW52b2x2ZSB0aGUga2VybmVsIGJsb2NraW5nCisJCXVudGlsIHRoZSB1c2VyIG1vZGUgcmVxdWVzdCBjb21wbGV0ZXMsIGVpdGhlciBieQorCQlmaW5pc2hpbmcgc3VjY2Vzc2Z1bGx5IG9yIGJ5IHJlcG9ydGluZyBhbiBlcnJvci4KKwkJSW4gbW9zdCBjYXNlcyB0aGlzIGlzIHRoZSBzaW1wbGVzdCB3YXkgdG8gdXNlIHVzYmZzLAorCQlhbHRob3VnaCBhcyBub3RlZCBhYm92ZSBpdCBkb2VzIHByZXZlbnQgcGVyZm9ybWluZyBJL08KKwkJdG8gbW9yZSB0aGFuIG9uZSBlbmRwb2ludCBhdCBhIHRpbWUuCisJCTwvcGFyYT4KKworCQk8dmFyaWFibGVsaXN0PgorCisJCTx2YXJsaXN0ZW50cnk+PHRlcm0+VVNCREVWRlNfQlVMSzwvdGVybT4KKwkJICAgIDxsaXN0aXRlbT48cGFyYT5Jc3N1ZXMgYSBidWxrIHJlYWQgb3Igd3JpdGUgcmVxdWVzdCB0byB0aGUKKwkJICAgIGRldmljZS4KKwkJICAgIFRoZSBpb2N0bCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIHRoaXMgc3RydWN0dXJlOgorPHByb2dyYW1saXN0aW5nPnN0cnVjdCB1c2JkZXZmc19idWxrdHJhbnNmZXIgeworICAgICAgICB1bnNpZ25lZCBpbnQgIGVwOworICAgICAgICB1bnNpZ25lZCBpbnQgIGxlbjsKKyAgICAgICAgdW5zaWduZWQgaW50ICB0aW1lb3V0OyAvKiBpbiBtaWxsaXNlY29uZHMgKi8KKyAgICAgICAgdm9pZCAgICAgICAgICAqZGF0YTsKK307PC9wcm9ncmFtbGlzdGluZz4KKwkJICAgIDwvcGFyYT48cGFyYT5UaGUgImVwIiB2YWx1ZSBpZGVudGlmaWVzIGEKKwkJICAgIGJ1bGsgZW5kcG9pbnQgbnVtYmVyICgxIHRvIDE1LCBhcyBpZGVudGlmaWVkIGluIGFuIGVuZHBvaW50CisJCSAgICBkZXNjcmlwdG9yKSwKKwkJICAgIG1hc2tlZCB3aXRoIFVTQl9ESVJfSU4gd2hlbiByZWZlcnJpbmcgdG8gYW4gZW5kcG9pbnQgd2hpY2gKKwkJICAgIHNlbmRzIGRhdGEgdG8gdGhlIGhvc3QgZnJvbSB0aGUgZGV2aWNlLgorCQkgICAgVGhlIGxlbmd0aCBvZiB0aGUgZGF0YSBidWZmZXIgaXMgaWRlbnRpZmllZCBieSAibGVuIjsKKwkJICAgIFJlY2VudCBrZXJuZWxzIHN1cHBvcnQgcmVxdWVzdHMgdXAgdG8gYWJvdXQgMTI4S0J5dGVzLgorCQkgICAgPGVtcGhhc2lzPkZJWE1FIHNheSBob3cgcmVhZCBsZW5ndGggaXMgcmV0dXJuZWQsCisJCSAgICBhbmQgaG93IHNob3J0IHJlYWRzIGFyZSBoYW5kbGVkLjwvZW1waGFzaXM+LgorCQkgICAgPC9wYXJhPjwvbGlzdGl0ZW0+PC92YXJsaXN0ZW50cnk+CisKKwkJPHZhcmxpc3RlbnRyeT48dGVybT5VU0JERVZGU19DTEVBUl9IQUxUPC90ZXJtPgorCQkgICAgPGxpc3RpdGVtPjxwYXJhPkNsZWFycyBlbmRwb2ludCBoYWx0IChzdGFsbCkgYW5kCisJCSAgICByZXNldHMgdGhlIGVuZHBvaW50IHRvZ2dsZS4gIFRoaXMgaXMgb25seQorCQkgICAgbWVhbmluZ2Z1bCBmb3IgYnVsayBvciBpbnRlcnJ1cHQgZW5kcG9pbnRzLgorCQkgICAgVGhlIGlvY3RsIHBhcmFtZXRlciBpcyBhbiBpbnRlZ2VyIGVuZHBvaW50IG51bWJlcgorCQkgICAgKDEgdG8gMTUsIGFzIGlkZW50aWZpZWQgaW4gYW4gZW5kcG9pbnQgZGVzY3JpcHRvciksCisJCSAgICBtYXNrZWQgd2l0aCBVU0JfRElSX0lOIHdoZW4gcmVmZXJyaW5nIHRvIGFuIGVuZHBvaW50IHdoaWNoCisJCSAgICBzZW5kcyBkYXRhIHRvIHRoZSBob3N0IGZyb20gdGhlIGRldmljZS4KKwkJICAgIDwvcGFyYT48cGFyYT4KKwkJICAgIFVzZSB0aGlzIG9uIGJ1bGsgb3IgaW50ZXJydXB0IGVuZHBvaW50cyB3aGljaCBoYXZlCisJCSAgICBzdGFsbGVkLCByZXR1cm5pbmcgPGVtcGhhc2lzPi1FUElQRTwvZW1waGFzaXM+IHN0YXR1cworCQkgICAgdG8gYSBkYXRhIHRyYW5zZmVyIHJlcXVlc3QuCisJCSAgICBEbyBub3QgaXNzdWUgdGhlIGNvbnRyb2wgcmVxdWVzdCBkaXJlY3RseSwgc2luY2UKKwkJICAgIHRoYXQgY291bGQgaW52YWxpZGF0ZSB0aGUgaG9zdCdzIHJlY29yZCBvZiB0aGUKKwkJICAgIGRhdGEgdG9nZ2xlLgorCQkgICAgPC9wYXJhPjwvbGlzdGl0ZW0+PC92YXJsaXN0ZW50cnk+CisKKwkJPHZhcmxpc3RlbnRyeT48dGVybT5VU0JERVZGU19DT05UUk9MPC90ZXJtPgorCQkgICAgPGxpc3RpdGVtPjxwYXJhPklzc3VlcyBhIGNvbnRyb2wgcmVxdWVzdCB0byB0aGUgZGV2aWNlLgorCQkgICAgVGhlIGlvY3RsIHBhcmFtZXRlciBwb2ludHMgdG8gYSBzdHJ1Y3R1cmUgbGlrZSB0aGlzOgorPHByb2dyYW1saXN0aW5nPnN0cnVjdCB1c2JkZXZmc19jdHJsdHJhbnNmZXIgeworICAgICAgICBfX3U4ICAgYlJlcXVlc3RUeXBlOworICAgICAgICBfX3U4ICAgYlJlcXVlc3Q7CisgICAgICAgIF9fdTE2ICB3VmFsdWU7CisgICAgICAgIF9fdTE2ICB3SW5kZXg7CisgICAgICAgIF9fdTE2ICB3TGVuZ3RoOworICAgICAgICBfX3UzMiAgdGltZW91dDsgIC8qIGluIG1pbGxpc2Vjb25kcyAqLworICAgICAgICB2b2lkICAgKmRhdGE7Cit9OzwvcHJvZ3JhbWxpc3Rpbmc+CisJCSAgICA8L3BhcmE+PHBhcmE+CisJCSAgICBUaGUgZmlyc3QgZWlnaHQgYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgYXJlIHRoZSBjb250ZW50cworCQkgICAgb2YgdGhlIFNFVFVQIHBhY2tldCB0byBiZSBzZW50IHRvIHRoZSBkZXZpY2U7IHNlZSB0aGUKKwkJICAgIFVTQiAyLjAgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscy4KKwkJICAgIFRoZSBiUmVxdWVzdFR5cGUgdmFsdWUgaXMgY29tcG9zZWQgYnkgY29tYmluaW5nIGEKKwkJICAgIFVTQl9UWVBFXyogdmFsdWUsIGEgVVNCX0RJUl8qIHZhbHVlLCBhbmQgYQorCQkgICAgVVNCX1JFQ0lQXyogdmFsdWUgKGZyb20KKwkJICAgIDxlbXBoYXNpcz4mbHQ7bGludXgvdXNiLmgmZ3Q7PC9lbXBoYXNpcz4pLgorCQkgICAgSWYgd0xlbmd0aCBpcyBub256ZXJvLCBpdCBkZXNjcmliZXMgdGhlIGxlbmd0aCBvZiB0aGUgZGF0YQorCQkgICAgYnVmZmVyLCB3aGljaCBpcyBlaXRoZXIgd3JpdHRlbiB0byB0aGUgZGV2aWNlCisJCSAgICAoVVNCX0RJUl9PVVQpIG9yIHJlYWQgZnJvbSB0aGUgZGV2aWNlIChVU0JfRElSX0lOKS4KKwkJICAgIDwvcGFyYT48cGFyYT4KKwkJICAgIEF0IHRoaXMgd3JpdGluZywgeW91IGNhbid0IHRyYW5zZmVyIG1vcmUgdGhhbiA0IEtCeXRlcworCQkgICAgb2YgZGF0YSB0byBvciBmcm9tIGEgZGV2aWNlOyB1c2JmcyBoYXMgYSBsaW1pdCwgYW5kCisJCSAgICBzb21lIGhvc3QgY29udHJvbGxlciBkcml2ZXJzIGhhdmUgYSBsaW1pdC4KKwkJICAgIChUaGF0J3Mgbm90IHVzdWFsbHkgYSBwcm9ibGVtLikKKwkJICAgIDxlbXBoYXNpcz5BbHNvPC9lbXBoYXNpcz4gdGhlcmUncyBubyB3YXkgdG8gc2F5IGl0J3MKKwkJICAgIG5vdCBPSyB0byBnZXQgYSBzaG9ydCByZWFkIGJhY2sgZnJvbSB0aGUgZGV2aWNlLgorCQkgICAgPC9wYXJhPjwvbGlzdGl0ZW0+PC92YXJsaXN0ZW50cnk+CisKKwkJPHZhcmxpc3RlbnRyeT48dGVybT5VU0JERVZGU19SRVNFVDwvdGVybT4KKwkJICAgIDxsaXN0aXRlbT48cGFyYT5Eb2VzIGEgVVNCIGxldmVsIGRldmljZSByZXNldC4KKwkJICAgIFRoZSBpb2N0bCBwYXJhbWV0ZXIgaXMgaWdub3JlZC4KKwkJICAgIEFmdGVyIHRoZSByZXNldCwgdGhpcyByZWJpbmRzIGFsbCBkZXZpY2UgaW50ZXJmYWNlcy4KKwkJICAgIEZpbGUgbW9kaWZpY2F0aW9uIHRpbWUgaXMgbm90IHVwZGF0ZWQgYnkgdGhpcyByZXF1ZXN0LgorCQkgICAgPC9wYXJhPjx3YXJuaW5nPjxwYXJhPgorCQkgICAgPGVtcGhhc2lzPkF2b2lkIHVzaW5nIHRoaXMgY2FsbDwvZW1waGFzaXM+CisJCSAgICB1bnRpbCBzb21lIHVzYmNvcmUgYnVncyBnZXQgZml4ZWQsCisJCSAgICBzaW5jZSBpdCBkb2VzIG5vdCBmdWxseSBzeW5jaHJvbml6ZSBkZXZpY2UsIGludGVyZmFjZSwKKwkJICAgIGFuZCBkcml2ZXIgKG5vdCBqdXN0IHVzYmZzKSBzdGF0ZS4KKwkJICAgIDwvcGFyYT48L3dhcm5pbmc+PC9saXN0aXRlbT48L3Zhcmxpc3RlbnRyeT4KKwkgICAgCisJCTx2YXJsaXN0ZW50cnk+PHRlcm0+VVNCREVWRlNfU0VUSU5URVJGQUNFPC90ZXJtPgorCQkgICAgPGxpc3RpdGVtPjxwYXJhPlNldHMgdGhlIGFsdGVybmF0ZSBzZXR0aW5nIGZvciBhbgorCQkgICAgaW50ZXJmYWNlLiAgVGhlIGlvY3RsIHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYQorCQkgICAgc3RydWN0dXJlIGxpa2UgdGhpczoKKzxwcm9ncmFtbGlzdGluZz5zdHJ1Y3QgdXNiZGV2ZnNfc2V0aW50ZXJmYWNlIHsKKyAgICAgICAgdW5zaWduZWQgaW50ICBpbnRlcmZhY2U7CisgICAgICAgIHVuc2lnbmVkIGludCAgYWx0c2V0dGluZzsKK307IDwvcHJvZ3JhbWxpc3Rpbmc+CisJCSAgICBGaWxlIG1vZGlmaWNhdGlvbiB0aW1lIGlzIG5vdCB1cGRhdGVkIGJ5IHRoaXMgcmVxdWVzdC4KKwkJICAgIDwvcGFyYT48cGFyYT4KKwkJICAgIFRob3NlIHN0cnVjdCBtZW1iZXJzIGFyZSBmcm9tIHNvbWUgaW50ZXJmYWNlIGRlc2NyaXB0b3IKKwkJICAgIGFwcGx5aW5nIHRvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCisJCSAgICBUaGUgaW50ZXJmYWNlIG51bWJlciBpcyB0aGUgYkludGVyZmFjZU51bWJlciB2YWx1ZSwgYW5kCisJCSAgICB0aGUgYWx0c2V0dGluZyBudW1iZXIgaXMgdGhlIGJBbHRlcm5hdGVTZXR0aW5nIHZhbHVlLgorCQkgICAgKFRoaXMgcmVzZXRzIGVhY2ggZW5kcG9pbnQgaW4gdGhlIGludGVyZmFjZS4pCisJCSAgICA8L3BhcmE+PC9saXN0aXRlbT48L3Zhcmxpc3RlbnRyeT4KKworCQk8dmFybGlzdGVudHJ5Pjx0ZXJtPlVTQkRFVkZTX1NFVENPTkZJR1VSQVRJT048L3Rlcm0+CisJCSAgICA8bGlzdGl0ZW0+PHBhcmE+SXNzdWVzIHRoZQorCQkgICAgPGZ1bmN0aW9uPnVzYl9zZXRfY29uZmlndXJhdGlvbjwvZnVuY3Rpb24+IGNhbGwKKwkJICAgIGZvciB0aGUgZGV2aWNlLgorCQkgICAgVGhlIHBhcmFtZXRlciBpcyBhbiBpbnRlZ2VyIGhvbGRpbmcgdGhlIG51bWJlciBvZgorCQkgICAgYSBjb25maWd1cmF0aW9uIChiQ29uZmlndXJhdGlvblZhbHVlIGZyb20gZGVzY3JpcHRvcikuCisJCSAgICBGaWxlIG1vZGlmaWNhdGlvbiB0aW1lIGlzIG5vdCB1cGRhdGVkIGJ5IHRoaXMgcmVxdWVzdC4KKwkJICAgIDwvcGFyYT48d2FybmluZz48cGFyYT4KKwkJICAgIDxlbXBoYXNpcz5Bdm9pZCB1c2luZyB0aGlzIGNhbGw8L2VtcGhhc2lzPgorCQkgICAgdW50aWwgc29tZSB1c2Jjb3JlIGJ1Z3MgZ2V0IGZpeGVkLAorCQkgICAgc2luY2UgaXQgZG9lcyBub3QgZnVsbHkgc3luY2hyb25pemUgZGV2aWNlLCBpbnRlcmZhY2UsCisJCSAgICBhbmQgZHJpdmVyIChub3QganVzdCB1c2Jmcykgc3RhdGUuCisJCSAgICA8L3BhcmE+PC93YXJuaW5nPjwvbGlzdGl0ZW0+PC92YXJsaXN0ZW50cnk+CisKKwkJPC92YXJpYWJsZWxpc3Q+CisJICAgIDwvc2VjdDI+CisKKwkgICAgPHNlY3QyIGlkPSJ1c2Jmcy1hc3luYyI+CisJCTx0aXRsZT5Bc3luY2hyb25vdXMgSS9PIFN1cHBvcnQ8L3RpdGxlPgorCisJCTxwYXJhPkFzIG1lbnRpb25lZCBhYm92ZSwgdGhlcmUgYXJlIHNpdHVhdGlvbnMgd2hlcmUgaXQgbWF5IGJlCisJCWltcG9ydGFudCB0byBpbml0aWF0ZSBjb25jdXJyZW50IG9wZXJhdGlvbnMgZnJvbSB1c2VyIG1vZGUgY29kZS4KKwkJVGhpcyBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IGZvciBwZXJpb2RpYyB0cmFuc2ZlcnMKKwkJKGludGVycnVwdCBhbmQgaXNvY2hyb25vdXMpLCBidXQgaXQgY2FuIGJlIHVzZWQgZm9yIG90aGVyCisJCWtpbmRzIG9mIFVTQiByZXF1ZXN0cyB0b28uCisJCUluIHN1Y2ggY2FzZXMsIHRoZSBhc3luY2hyb25vdXMgcmVxdWVzdHMgZGVzY3JpYmVkIGhlcmUKKwkJYXJlIGVzc2VudGlhbC4gIFJhdGhlciB0aGFuIHN1Ym1pdHRpbmcgb25lIHJlcXVlc3QgYW5kIGhhdmluZworCQl0aGUga2VybmVsIGJsb2NrIHVudGlsIGl0IGNvbXBsZXRlcywgdGhlIGJsb2NraW5nIGlzIHNlcGFyYXRlLgorCQk8L3BhcmE+CisKKwkJPHBhcmE+VGhlc2UgcmVxdWVzdHMgYXJlIHBhY2thZ2VkIGludG8gYSBzdHJ1Y3R1cmUgdGhhdAorCQlyZXNlbWJsZXMgdGhlIFVSQiB1c2VkIGJ5IGtlcm5lbCBkZXZpY2UgZHJpdmVycy4KKwkJKE5vIFBPU0lYIEFzeW5jIEkvTyBzdXBwb3J0IGhlcmUsIHNvcnJ5LikKKwkJSXQgaWRlbnRpZmllcyB0aGUgZW5kcG9pbnQgdHlwZSAoVVNCREVWRlNfVVJCX1RZUEVfKiksCisJCWVuZHBvaW50IChudW1iZXIsIG1hc2tlZCB3aXRoIFVTQl9ESVJfSU4gYXMgYXBwcm9wcmlhdGUpLAorCQlidWZmZXIgYW5kIGxlbmd0aCwgYW5kIGEgdXNlciAiY29udGV4dCIgdmFsdWUgc2VydmluZyB0bworCQl1bmlxdWVseSBpZGVudGlmeSBlYWNoIHJlcXVlc3QuCisJCShJdCdzIHVzdWFsbHkgYSBwb2ludGVyIHRvIHBlci1yZXF1ZXN0IGRhdGEuKQorCQlGbGFncyBjYW4gbW9kaWZ5IHJlcXVlc3RzIChub3QgYXMgbWFueSBhcyBzdXBwb3J0ZWQgZm9yCisJCWtlcm5lbCBkcml2ZXJzKS4KKwkJPC9wYXJhPgorCisJCTxwYXJhPkVhY2ggcmVxdWVzdCBjYW4gc3BlY2lmeSBhIHJlYWx0aW1lIHNpZ25hbCBudW1iZXIKKwkJKGJldHdlZW4gU0lHUlRNSU4gYW5kIFNJR1JUTUFYLCBpbmNsdXNpdmUpIHRvIHJlcXVlc3QgYQorCQlzaWduYWwgYmUgc2VudCB3aGVuIHRoZSByZXF1ZXN0IGNvbXBsZXRlcy4KKwkJPC9wYXJhPgorCisJCTxwYXJhPldoZW4gdXNiZnMgcmV0dXJucyB0aGVzZSB1cmJzLCB0aGUgc3RhdHVzIHZhbHVlCisJCWlzIHVwZGF0ZWQsIGFuZCB0aGUgYnVmZmVyIG1heSBoYXZlIGJlZW4gbW9kaWZpZWQuCisJCUV4Y2VwdCBmb3IgaXNvY2hyb25vdXMgdHJhbnNmZXJzLCB0aGUgYWN0dWFsX2xlbmd0aCBpcworCQl1cGRhdGVkIHRvIHNheSBob3cgbWFueSBieXRlcyB3ZXJlIHRyYW5zZmVycmVkOyBpZiB0aGUKKwkJVVNCREVWRlNfVVJCX0RJU0FCTEVfU1BEIGZsYWcgaXMgc2V0CisJCSgic2hvcnQgcGFja2V0cyBhcmUgbm90IE9LIiksIGlmIGZld2VyIGJ5dGVzIHdlcmUgcmVhZAorCQl0aGFuIHdlcmUgcmVxdWVzdGVkIHRoZW4geW91IGdldCBhbiBlcnJvciByZXBvcnQuCisJCTwvcGFyYT4KKworPHByb2dyYW1saXN0aW5nPnN0cnVjdCB1c2JkZXZmc19pc29fcGFja2V0X2Rlc2MgeworICAgICAgICB1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICAgICAgICBsZW5ndGg7CisgICAgICAgIHVuc2lnbmVkIGludCAgICAgICAgICAgICAgICAgICAgIGFjdHVhbF9sZW5ndGg7CisgICAgICAgIHVuc2lnbmVkIGludCAgICAgICAgICAgICAgICAgICAgIHN0YXR1czsKK307CisKK3N0cnVjdCB1c2JkZXZmc191cmIgeworICAgICAgICB1bnNpZ25lZCBjaGFyICAgICAgICAgICAgICAgICAgICB0eXBlOworICAgICAgICB1bnNpZ25lZCBjaGFyICAgICAgICAgICAgICAgICAgICBlbmRwb2ludDsKKyAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOworICAgICAgICB1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICAgICAgICBmbGFnczsKKyAgICAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmJ1ZmZlcjsKKyAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2xlbmd0aDsKKyAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsX2xlbmd0aDsKKyAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfZnJhbWU7CisgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlcl9vZl9wYWNrZXRzOworICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb3VudDsKKyAgICAgICAgdW5zaWduZWQgaW50ICAgICAgICAgICAgICAgICAgICAgc2lnbnI7CisgICAgICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp1c2VyY29udGV4dDsKKyAgICAgICAgc3RydWN0IHVzYmRldmZzX2lzb19wYWNrZXRfZGVzYyAgaXNvX2ZyYW1lX2Rlc2NbXTsKK307PC9wcm9ncmFtbGlzdGluZz4KKworCQk8cGFyYT4gRm9yIHRoZXNlIGFzeW5jaHJvbm91cyByZXF1ZXN0cywgdGhlIGZpbGUgbW9kaWZpY2F0aW9uCisJCXRpbWUgcmVmbGVjdHMgd2hlbiB0aGUgcmVxdWVzdCB3YXMgaW5pdGlhdGVkLgorCQlUaGlzIGNvbnRyYXN0cyB3aXRoIHRoZWlyIHVzZSB3aXRoIHRoZSBzeW5jaHJvbm91cyByZXF1ZXN0cywKKwkJd2hlcmUgaXQgcmVmbGVjdHMgd2hlbiByZXF1ZXN0cyBjb21wbGV0ZS4KKwkJPC9wYXJhPgorCisJCTx2YXJpYWJsZWxpc3Q+CisKKwkJPHZhcmxpc3RlbnRyeT48dGVybT5VU0JERVZGU19ESVNDQVJEVVJCPC90ZXJtPgorCQkgICAgPGxpc3RpdGVtPjxwYXJhPgorCQkgICAgPGVtcGhhc2lzPlRCUzwvZW1waGFzaXM+CisJCSAgICBGaWxlIG1vZGlmaWNhdGlvbiB0aW1lIGlzIG5vdCB1cGRhdGVkIGJ5IHRoaXMgcmVxdWVzdC4KKwkJICAgIDwvcGFyYT48cGFyYT4KKwkJICAgIDwvcGFyYT48L2xpc3RpdGVtPjwvdmFybGlzdGVudHJ5PgorCisJCTx2YXJsaXN0ZW50cnk+PHRlcm0+VVNCREVWRlNfRElTQ1NJR05BTDwvdGVybT4KKwkJICAgIDxsaXN0aXRlbT48cGFyYT4KKwkJICAgIDxlbXBoYXNpcz5UQlM8L2VtcGhhc2lzPgorCQkgICAgRmlsZSBtb2RpZmljYXRpb24gdGltZSBpcyBub3QgdXBkYXRlZCBieSB0aGlzIHJlcXVlc3QuCisJCSAgICA8L3BhcmE+PHBhcmE+CisJCSAgICA8L3BhcmE+PC9saXN0aXRlbT48L3Zhcmxpc3RlbnRyeT4KKworCQk8dmFybGlzdGVudHJ5Pjx0ZXJtPlVTQkRFVkZTX1JFQVBVUkI8L3Rlcm0+CisJCSAgICA8bGlzdGl0ZW0+PHBhcmE+CisJCSAgICA8ZW1waGFzaXM+VEJTPC9lbXBoYXNpcz4KKwkJICAgIEZpbGUgbW9kaWZpY2F0aW9uIHRpbWUgaXMgbm90IHVwZGF0ZWQgYnkgdGhpcyByZXF1ZXN0LgorCQkgICAgPC9wYXJhPjxwYXJhPgorCQkgICAgPC9wYXJhPjwvbGlzdGl0ZW0+PC92YXJsaXN0ZW50cnk+CisKKwkJPHZhcmxpc3RlbnRyeT48dGVybT5VU0JERVZGU19SRUFQVVJCTkRFTEFZPC90ZXJtPgorCQkgICAgPGxpc3RpdGVtPjxwYXJhPgorCQkgICAgPGVtcGhhc2lzPlRCUzwvZW1waGFzaXM+CisJCSAgICBGaWxlIG1vZGlmaWNhdGlvbiB0aW1lIGlzIG5vdCB1cGRhdGVkIGJ5IHRoaXMgcmVxdWVzdC4KKwkJICAgIDwvcGFyYT48cGFyYT4KKwkJICAgIDwvcGFyYT48L2xpc3RpdGVtPjwvdmFybGlzdGVudHJ5PgorCisJCTx2YXJsaXN0ZW50cnk+PHRlcm0+VVNCREVWRlNfU1VCTUlUVVJCPC90ZXJtPgorCQkgICAgPGxpc3RpdGVtPjxwYXJhPgorCQkgICAgPGVtcGhhc2lzPlRCUzwvZW1waGFzaXM+CisJCSAgICA8L3BhcmE+PHBhcmE+CisJCSAgICA8L3BhcmE+PC9saXN0aXRlbT48L3Zhcmxpc3RlbnRyeT4KKworCQk8L3ZhcmlhYmxlbGlzdD4KKwkgICAgPC9zZWN0Mj4KKworCTwvc2VjdDE+CisKKyAgICA8L2NoYXB0ZXI+CisKKzwvYm9vaz4KKzwhLS0gdmltOnN5bnRheD1zZ21sOnN3PTQKKy0tPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3cxLnRtcGwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svdzEudG1wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDIyOGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3cxLnRtcGwKQEAgLTAsMCArMSwxMDEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMS4yLy9FTiIKKwkiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQiIFtdPgorCis8Ym9vayBpZD0idzFpZCI+CisgIDxib29raW5mbz4KKyAgICA8dGl0bGU+VzE6IERhbGxhcycgMS13aXJlIGJ1czwvdGl0bGU+CisKKyAgICA8YXV0aG9yZ3JvdXA+CisgICAgICA8YXV0aG9yPgorICAgICAgICA8Zmlyc3RuYW1lPkRhdmlkPC9maXJzdG5hbWU+CisgICAgICAgIDxzdXJuYW1lPkZyaWVzPC9zdXJuYW1lPgorICAgICAgICA8YWZmaWxpYXRpb24+CisgICAgICAgICAgPGFkZHJlc3M+CisgICAgICAgICAgICA8ZW1haWw+RGF2aWRARnJpZXMubmV0PC9lbWFpbD4KKyAgICAgICAgICA8L2FkZHJlc3M+CisgICAgICAgIDwvYWZmaWxpYXRpb24+CisgICAgICA8L2F1dGhvcj4KKworICAgIDwvYXV0aG9yZ3JvdXA+CisKKyAgICA8Y29weXJpZ2h0PgorICAgICAgPHllYXI+MjAxMzwveWVhcj4KKyAgICAgIDwhLS0KKyAgICAgIDxob2xkZXI+PC9ob2xkZXI+CisgICAgICAtLT4KKyAgICA8L2NvcHlyaWdodD4KKworICAgIDxsZWdhbG5vdGljZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUaGlzIGRvY3VtZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUKKyAgICAgICAgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICAgICAgICBMaWNlbnNlIHZlcnNpb24gMi4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKyAgICAgICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAorICAgICAgICB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisgICAgICAgIEZvciBtb3JlIGRldGFpbHMgc2VlIHRoZSBmaWxlIENPUFlJTkcgaW4gdGhlIHNvdXJjZQorICAgICAgICBkaXN0cmlidXRpb24gb2YgTGludXguCisgICAgICA8L3BhcmE+CisgICAgPC9sZWdhbG5vdGljZT4KKyAgPC9ib29raW5mbz4KKworICA8dG9jPjwvdG9jPgorCisgIDxjaGFwdGVyIGlkPSJ3MV9pbnRlcm5hbCI+CisgICAgPHRpdGxlPlcxIEFQSSBpbnRlcm5hbCB0byB0aGUga2VybmVsPC90aXRsZT4KKworICAgIDxzZWN0MSBpZD0idzFfaW50ZXJuYWxfYXBpIj4KKyAgICAgIDx0aXRsZT5XMSBBUEkgaW50ZXJuYWwgdG8gdGhlIGtlcm5lbDwvdGl0bGU+CisgICAgICA8c2VjdDIgaWQ9IncxLmgiPgorICAgICAgICA8dGl0bGU+ZHJpdmVycy93MS93MS5oPC90aXRsZT4KKyAgICAgICAgPHBhcmE+VzEgY29yZSBmdW5jdGlvbnMuPC9wYXJhPgorIUlkcml2ZXJzL3cxL3cxLmgKKyAgICAgIDwvc2VjdDI+CisKKyAgICAgIDxzZWN0MiBpZD0idzEuYyI+CisgICAgICAgIDx0aXRsZT5kcml2ZXJzL3cxL3cxLmM8L3RpdGxlPgorICAgICAgICA8cGFyYT5XMSBjb3JlIGZ1bmN0aW9ucy48L3BhcmE+CishSWRyaXZlcnMvdzEvdzEuYworICAgICAgPC9zZWN0Mj4KKworICAgICAgPHNlY3QyIGlkPSJ3MV9mYW1pbHkuaCI+CisgICAgICAgIDx0aXRsZT5kcml2ZXJzL3cxL3cxX2ZhbWlseS5oPC90aXRsZT4KKyAgICAgICAgPHBhcmE+QWxsb3dzIHJlZ2lzdGVyaW5nIGRldmljZSBmYW1pbHkgb3BlcmF0aW9ucy48L3BhcmE+CishSWRyaXZlcnMvdzEvdzFfZmFtaWx5LmgKKyAgICAgIDwvc2VjdDI+CisKKyAgICAgIDxzZWN0MiBpZD0idzFfZmFtaWx5LmMiPgorICAgICAgICA8dGl0bGU+ZHJpdmVycy93MS93MV9mYW1pbHkuYzwvdGl0bGU+CisgICAgICAgIDxwYXJhPkFsbG93cyByZWdpc3RlcmluZyBkZXZpY2UgZmFtaWx5IG9wZXJhdGlvbnMuPC9wYXJhPgorIUVkcml2ZXJzL3cxL3cxX2ZhbWlseS5jCisgICAgICA8L3NlY3QyPgorCisgICAgICA8c2VjdDIgaWQ9IncxX2ludC5jIj4KKyAgICAgICAgPHRpdGxlPmRyaXZlcnMvdzEvdzFfaW50LmM8L3RpdGxlPgorICAgICAgICA8cGFyYT5XMSBpbnRlcm5hbCBpbml0aWFsaXphdGlvbiBmb3IgbWFzdGVyIGRldmljZXMuPC9wYXJhPgorIUVkcml2ZXJzL3cxL3cxX2ludC5jCisgICAgICA8L3NlY3QyPgorCisgICAgICA8c2VjdDIgaWQ9IncxX25ldGxpbmsuaCI+CisgICAgICAgIDx0aXRsZT5kcml2ZXJzL3cxL3cxX25ldGxpbmsuaDwvdGl0bGU+CisgICAgICAgIDxwYXJhPlcxIGV4dGVybmFsIG5ldGxpbmsgQVBJIHN0cnVjdHVyZXMgYW5kIGNvbW1hbmRzLjwvcGFyYT4KKyFJZHJpdmVycy93MS93MV9uZXRsaW5rLmgKKyAgICAgIDwvc2VjdDI+CisKKyAgICAgIDxzZWN0MiBpZD0idzFfaW8uYyI+CisgICAgICAgIDx0aXRsZT5kcml2ZXJzL3cxL3cxX2lvLmM8L3RpdGxlPgorICAgICAgICA8cGFyYT5XMSBpbnB1dC9vdXRwdXQuPC9wYXJhPgorIUVkcml2ZXJzL3cxL3cxX2lvLmMKKyFJZHJpdmVycy93MS93MV9pby5jCisgICAgICA8L3NlY3QyPgorCisgICAgPC9zZWN0MT4KKworCisgIDwvY2hhcHRlcj4KKworPC9ib29rPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIudG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnRtcGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI3YWI5ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnRtcGwKQEAgLTAsMCArMSw2MjA2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIGJvb2sgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgWE1MIFY0LjEuMi8vRU4iCisJImh0dHA6Ly93d3cub2FzaXMtb3Blbi5vcmcvZG9jYm9vay94bWwvNC4xLjIvZG9jYm9va3guZHRkIiBbXT4KKworPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+Cis8IS0tIEhlYWRlciAgLS0+Cis8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT4KKzxib29rIGlkPSJXcml0aW5nLWFuLUFMU0EtRHJpdmVyIj4KKyAgPGJvb2tpbmZvPgorICAgIDx0aXRsZT5Xcml0aW5nIGFuIEFMU0EgRHJpdmVyPC90aXRsZT4KKyAgICA8YXV0aG9yPgorICAgICAgPGZpcnN0bmFtZT5UYWthc2hpPC9maXJzdG5hbWU+CisgICAgICA8c3VybmFtZT5Jd2FpPC9zdXJuYW1lPgorICAgICAgPGFmZmlsaWF0aW9uPgorICAgICAgICA8YWRkcmVzcz4KKyAgICAgICAgICA8ZW1haWw+dGl3YWlAc3VzZS5kZTwvZW1haWw+CisgICAgICAgIDwvYWRkcmVzcz4KKyAgICAgIDwvYWZmaWxpYXRpb24+CisgICAgIDwvYXV0aG9yPgorCisgICAgIDxkYXRlPk9jdCAxNSwgMjAwNzwvZGF0ZT4KKyAgICAgPGVkaXRpb24+MC4zLjc8L2VkaXRpb24+CisKKyAgICA8YWJzdHJhY3Q+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgaG93IHRvIHdyaXRlIGFuIEFMU0EgKEFkdmFuY2VkIExpbnV4CisgICAgICAgIFNvdW5kIEFyY2hpdGVjdHVyZSkgZHJpdmVyLgorICAgICAgPC9wYXJhPgorICAgIDwvYWJzdHJhY3Q+CisKKyAgICA8bGVnYWxub3RpY2U+CisgICAgPHBhcmE+CisgICAgQ29weXJpZ2h0IChjKSAyMDAyLTIwMDUgIFRha2FzaGkgSXdhaSA8ZW1haWw+dGl3YWlAc3VzZS5kZTwvZW1haWw+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgVGhpcyBkb2N1bWVudCBpcyBmcmVlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uIAorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgIFRoaXMgZG9jdW1lbnQgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgPGVtcGhhc2lzPldJVEhPVVQgQU5ZIFdBUlJBTlRZPC9lbXBoYXNpcz47IHdpdGhvdXQgZXZlbiB0aGUKKyAgICBpbXBsaWVkIHdhcnJhbnR5IG9mIDxlbXBoYXNpcz5NRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQorICAgIFBBUlRJQ1VMQVIgUFVSUE9TRTwvZW1waGFzaXM+LiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgZm9yIG1vcmUgZGV0YWlscy4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAgICBNQSAwMjExMS0xMzA3IFVTQQorICAgIDwvcGFyYT4KKyAgICA8L2xlZ2Fsbm90aWNlPgorCisgIDwvYm9va2luZm8+CisKKzwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgorPCEtLSBQcmVmYWNlICAtLT4KKzwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgorICA8cHJlZmFjZSBpZD0icHJlZmFjZSI+CisgICAgPHRpdGxlPlByZWZhY2U8L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgaG93IHRvIHdyaXRlIGFuCisgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmcvIj48Y2l0ZXRpdGxlPgorICAgICAgQUxTQSAoQWR2YW5jZWQgTGludXggU291bmQgQXJjaGl0ZWN0dXJlKTwvY2l0ZXRpdGxlPjwvdWxpbms+CisgICAgICBkcml2ZXIuIFRoZSBkb2N1bWVudCBmb2N1c2VzIG1haW5seSBvbiBQQ0kgc291bmRjYXJkcy4KKyAgICAgIEluIHRoZSBjYXNlIG9mIG90aGVyIGRldmljZSB0eXBlcywgdGhlIEFQSSBtaWdodAorICAgICAgYmUgZGlmZmVyZW50LCB0b28uIEhvd2V2ZXIsIGF0IGxlYXN0IHRoZSBBTFNBIGtlcm5lbCBBUEkgaXMKKyAgICAgIGNvbnNpc3RlbnQsIGFuZCB0aGVyZWZvcmUgaXQgd291bGQgYmUgc3RpbGwgYSBiaXQgaGVscCBmb3IKKyAgICAgIHdyaXRpbmcgdGhlbS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICBUaGlzIGRvY3VtZW50IHRhcmdldHMgcGVvcGxlIHdobyBhbHJlYWR5IGhhdmUgZW5vdWdoCisgICAgQyBsYW5ndWFnZSBza2lsbHMgYW5kIGhhdmUgYmFzaWMgbGludXgga2VybmVsIHByb2dyYW1taW5nCisgICAga25vd2xlZGdlLiAgVGhpcyBkb2N1bWVudCBkb2Vzbid0IGV4cGxhaW4gdGhlIGdlbmVyYWwKKyAgICB0b3BpYyBvZiBsaW51eCBrZXJuZWwgY29kaW5nIGFuZCBkb2Vzbid0IGNvdmVyIGxvdy1sZXZlbAorICAgIGRyaXZlciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBJdCBvbmx5IGRlc2NyaWJlcworICAgIHRoZSBzdGFuZGFyZCB3YXkgdG8gd3JpdGUgYSBQQ0kgc291bmQgZHJpdmVyIG9uIEFMU0EuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBJZiB5b3UgYXJlIGFscmVhZHkgZmFtaWxpYXIgd2l0aCB0aGUgb2xkZXIgQUxTQSB2ZXIuMC41LnggQVBJLCB5b3UKKyAgICBjYW4gY2hlY2sgdGhlIGRyaXZlcnMgc3VjaCBhcyA8ZmlsZW5hbWU+c291bmQvcGNpL2VzMTkzOC5jPC9maWxlbmFtZT4gb3IKKyAgICA8ZmlsZW5hbWU+c291bmQvcGNpL21hZXN0cm8zLmM8L2ZpbGVuYW1lPiB3aGljaCBoYXZlIGFsc28gYWxtb3N0IHRoZSBzYW1lCisgICAgY29kZS1iYXNlIGluIHRoZSBBTFNBIDAuNS54IHRyZWUsIHNvIHlvdSBjYW4gY29tcGFyZSB0aGUgZGlmZmVyZW5jZXMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBUaGlzIGRvY3VtZW50IGlzIHN0aWxsIGEgZHJhZnQgdmVyc2lvbi4gQW55IGZlZWRiYWNrIGFuZAorICAgIGNvcnJlY3Rpb25zLCBwbGVhc2UhIQorICAgIDwvcGFyYT4KKyAgPC9wcmVmYWNlPgorCisKKzwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgorPCEtLSBGaWxlIFRyZWUgU3RydWN0dXJlICAtLT4KKzwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgorICA8Y2hhcHRlciBpZD0iZmlsZS10cmVlIj4KKyAgICA8dGl0bGU+RmlsZSBUcmVlIFN0cnVjdHVyZTwvdGl0bGU+CisKKyAgICA8c2VjdGlvbiBpZD0iZmlsZS10cmVlLWdlbmVyYWwiPgorICAgICAgPHRpdGxlPkdlbmVyYWw8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBBTFNBIGRyaXZlcnMgYXJlIHByb3ZpZGVkIGluIHR3byB3YXlzLgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgT25lIGlzIHRoZSB0cmVlcyBwcm92aWRlZCBhcyBhIHRhcmJhbGwgb3IgdmlhIGN2cyBmcm9tIHRoZQorICAgICAgQUxTQSdzIGZ0cCBzaXRlLCBhbmQgYW5vdGhlciBpcyB0aGUgMi42IChvciBsYXRlcikgTGludXgga2VybmVsCisgICAgICB0cmVlLiBUbyBzeW5jaHJvbml6ZSBib3RoLCB0aGUgQUxTQSBkcml2ZXIgdHJlZSBpcyBzcGxpdCBpbnRvCisgICAgICB0d28gZGlmZmVyZW50IHRyZWVzOiBhbHNhLWtlcm5lbCBhbmQgYWxzYS1kcml2ZXIuIFRoZSBmb3JtZXIKKyAgICAgIGNvbnRhaW5zIHB1cmVseSB0aGUgc291cmNlIGNvZGUgZm9yIHRoZSBMaW51eCAyLjYgKG9yIGxhdGVyKQorICAgICAgdHJlZS4gVGhpcyB0cmVlIGlzIGRlc2lnbmVkIG9ubHkgZm9yIGNvbXBpbGF0aW9uIG9uIDIuNiBvcgorICAgICAgbGF0ZXIgZW52aXJvbm1lbnQuIFRoZSBsYXR0ZXIsIGFsc2EtZHJpdmVyLCBjb250YWlucyBtYW55IHN1YnRsZQorICAgICAgZmlsZXMgZm9yIGNvbXBpbGluZyBBTFNBIGRyaXZlcnMgb3V0c2lkZSBvZiB0aGUgTGludXgga2VybmVsIHRyZWUsCisgICAgICB3cmFwcGVyIGZ1bmN0aW9ucyBmb3Igb2xkZXIgMi4yIGFuZCAyLjQga2VybmVscywgdG8gYWRhcHQgdGhlIGxhdGVzdCBrZXJuZWwgQVBJLAorICAgICAgYW5kIGFkZGl0aW9uYWwgZHJpdmVycyB3aGljaCBhcmUgc3RpbGwgaW4gZGV2ZWxvcG1lbnQgb3IgaW4KKyAgICAgIHRlc3RzLiAgVGhlIGRyaXZlcnMgaW4gYWxzYS1kcml2ZXIgdHJlZSB3aWxsIGJlIG1vdmVkIHRvCisgICAgICBhbHNhLWtlcm5lbCAoYW5kIGV2ZW50dWFsbHkgdG8gdGhlIDIuNiBrZXJuZWwgdHJlZSkgd2hlbiB0aGV5IGFyZQorICAgICAgZmluaXNoZWQgYW5kIGNvbmZpcm1lZCB0byB3b3JrIGZpbmUuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgZmlsZSB0cmVlIHN0cnVjdHVyZSBvZiBBTFNBIGRyaXZlciBpcyBkZXBpY3RlZCBiZWxvdy4gQm90aAorICAgICAgICBhbHNhLWtlcm5lbCBhbmQgYWxzYS1kcml2ZXIgaGF2ZSBhbG1vc3QgdGhlIHNhbWUgZmlsZQorICAgICAgICBzdHJ1Y3R1cmUsIGV4Y2VwdCBmb3IgPHF1b3RlPmNvcmU8L3F1b3RlPiBkaXJlY3RvcnkuIEl0J3MKKyAgICAgICAgbmFtZWQgYXMgPHF1b3RlPmFjb3JlPC9xdW90ZT4gaW4gYWxzYS1kcml2ZXIgdHJlZS4gCisKKyAgICAgICAgPGV4YW1wbGU+CisgICAgICAgICAgPHRpdGxlPkFMU0EgRmlsZSBUcmVlIFN0cnVjdHVyZTwvdGl0bGU+CisgICAgICAgICAgPGxpdGVyYWxsYXlvdXQ+CisgICAgICAgIHNvdW5kCisgICAgICAgICAgICAgICAgL2NvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIC9vc3MKKyAgICAgICAgICAgICAgICAgICAgICAgIC9zZXEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL29zcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvaW5zdHIKKyAgICAgICAgICAgICAgICAvaW9jdGwzMgorICAgICAgICAgICAgICAgIC9pbmNsdWRlCisgICAgICAgICAgICAgICAgL2RyaXZlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIC9tcHU0MDEKKyAgICAgICAgICAgICAgICAgICAgICAgIC9vcGwzCisgICAgICAgICAgICAgICAgL2kyYworICAgICAgICAgICAgICAgICAgICAgICAgL2wzCisgICAgICAgICAgICAgICAgL3N5bnRoCisgICAgICAgICAgICAgICAgICAgICAgICAvZW11eAorICAgICAgICAgICAgICAgIC9wY2kKKyAgICAgICAgICAgICAgICAgICAgICAgIC8oY2FyZHMpCisgICAgICAgICAgICAgICAgL2lzYQorICAgICAgICAgICAgICAgICAgICAgICAgLyhjYXJkcykKKyAgICAgICAgICAgICAgICAvYXJtCisgICAgICAgICAgICAgICAgL3BwYworICAgICAgICAgICAgICAgIC9zcGFyYworICAgICAgICAgICAgICAgIC91c2IKKyAgICAgICAgICAgICAgICAvcGNtY2lhIC8oY2FyZHMpCisgICAgICAgICAgICAgICAgL29zcworICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9leGFtcGxlPgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJmaWxlLXRyZWUtY29yZS1kaXJlY3RvcnkiPgorICAgICAgPHRpdGxlPmNvcmUgZGlyZWN0b3J5PC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyB0aGUgbWlkZGxlIGxheWVyIHdoaWNoIGlzIHRoZSBoZWFydAorICAgICAgb2YgQUxTQSBkcml2ZXJzLiBJbiB0aGlzIGRpcmVjdG9yeSwgdGhlIG5hdGl2ZSBBTFNBIG1vZHVsZXMgYXJlCisgICAgICBzdG9yZWQuIFRoZSBzdWItZGlyZWN0b3JpZXMgY29udGFpbiBkaWZmZXJlbnQgbW9kdWxlcyBhbmQgYXJlCisgICAgICBkZXBlbmRlbnQgdXBvbiB0aGUga2VybmVsIGNvbmZpZy4gCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxzZWN0aW9uIGlkPSJmaWxlLXRyZWUtY29yZS1kaXJlY3Rvcnktb3NzIj4KKyAgICAgICAgPHRpdGxlPmNvcmUvb3NzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgY29kZXMgZm9yIFBDTSBhbmQgbWl4ZXIgT1NTIGVtdWxhdGlvbiBtb2R1bGVzIGFyZSBzdG9yZWQKKyAgICAgICAgaW4gdGhpcyBkaXJlY3RvcnkuIFRoZSByYXdtaWRpIE9TUyBlbXVsYXRpb24gaXMgaW5jbHVkZWQgaW4KKyAgICAgICAgdGhlIEFMU0EgcmF3bWlkaSBjb2RlIHNpbmNlIGl0J3MgcXVpdGUgc21hbGwuIFRoZSBzZXF1ZW5jZXIKKyAgICAgICAgY29kZSBpcyBzdG9yZWQgaW4gPGZpbGVuYW1lPmNvcmUvc2VxL29zczwvZmlsZW5hbWU+IGRpcmVjdG9yeSAoc2VlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9ImZpbGUtdHJlZS1jb3JlLWRpcmVjdG9yeS1zZXEtb3NzIj48Y2l0ZXRpdGxlPgorICAgICAgICBiZWxvdzwvY2l0ZXRpdGxlPjwvbGluaz4pLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3Rpb24+CisKKyAgICAgIDxzZWN0aW9uIGlkPSJmaWxlLXRyZWUtY29yZS1kaXJlY3RvcnktaW9jdGwzMiI+CisgICAgICAgIDx0aXRsZT5jb3JlL2lvY3RsMzI8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSAzMmJpdC1pb2N0bCB3cmFwcGVycyBmb3IgNjRiaXQKKyAgICAgICAgYXJjaGl0ZWN0dXJlcyBzdWNoIGxpa2UgeDg2LTY0LCBwcGM2NCBhbmQgc3BhcmM2NC4gRm9yIDMyYml0CisgICAgICAgIGFuZCBhbHBoYSBhcmNoaXRlY3R1cmVzLCB0aGVzZSBhcmUgbm90IGNvbXBpbGVkLiAKKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0aW9uPgorCisgICAgICA8c2VjdGlvbiBpZD0iZmlsZS10cmVlLWNvcmUtZGlyZWN0b3J5LXNlcSI+CisgICAgICAgIDx0aXRsZT5jb3JlL3NlcTwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGFuZCBpdHMgc3ViLWRpcmVjdG9yaWVzIGFyZSBmb3IgdGhlIEFMU0EKKyAgICAgICAgc2VxdWVuY2VyLiBUaGlzIGRpcmVjdG9yeSBjb250YWlucyB0aGUgc2VxdWVuY2VyIGNvcmUgYW5kCisgICAgICAgIHByaW1hcnkgc2VxdWVuY2VyIG1vZHVsZXMgc3VjaCBsaWtlIHNuZC1zZXEtbWlkaSwKKyAgICAgICAgc25kLXNlcS12aXJtaWRpLCBldGMuIFRoZXkgYXJlIGNvbXBpbGVkIG9ubHkgd2hlbgorICAgICAgICA8Y29uc3RhbnQ+Q09ORklHX1NORF9TRVFVRU5DRVI8L2NvbnN0YW50PiBpcyBzZXQgaW4gdGhlIGtlcm5lbAorICAgICAgICBjb25maWcuIAorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3Rpb24+CisKKyAgICAgIDxzZWN0aW9uIGlkPSJmaWxlLXRyZWUtY29yZS1kaXJlY3Rvcnktc2VxLW9zcyI+CisgICAgICAgIDx0aXRsZT5jb3JlL3NlcS9vc3M8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGlzIGNvbnRhaW5zIHRoZSBPU1Mgc2VxdWVuY2VyIGVtdWxhdGlvbiBjb2Rlcy4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0aW9uPgorCisgICAgICA8c2VjdGlvbiBpZD0iZmlsZS10cmVlLWNvcmUtZGlyZWN0b3J5LWRlcS1pbnN0ciI+CisgICAgICAgIDx0aXRsZT5jb3JlL3NlcS9pbnN0cjwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBtb2R1bGVzIGZvciB0aGUgc2VxdWVuY2VyCisgICAgICAgIGluc3RydW1lbnQgbGF5ZXIuIAorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImZpbGUtdHJlZS1pbmNsdWRlLWRpcmVjdG9yeSI+CisgICAgICA8dGl0bGU+aW5jbHVkZSBkaXJlY3Rvcnk8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgaXMgdGhlIHBsYWNlIGZvciB0aGUgcHVibGljIGhlYWRlciBmaWxlcyBvZiBBTFNBIGRyaXZlcnMsCisgICAgICB3aGljaCBhcmUgdG8gYmUgZXhwb3J0ZWQgdG8gdXNlci1zcGFjZSwgb3IgaW5jbHVkZWQgYnkKKyAgICAgIHNldmVyYWwgZmlsZXMgYXQgZGlmZmVyZW50IGRpcmVjdG9yaWVzLiBCYXNpY2FsbHksIHRoZSBwcml2YXRlCisgICAgICBoZWFkZXIgZmlsZXMgc2hvdWxkIG5vdCBiZSBwbGFjZWQgaW4gdGhpcyBkaXJlY3RvcnksIGJ1dCB5b3UgbWF5CisgICAgICBzdGlsbCBmaW5kIGZpbGVzIHRoZXJlLCBkdWUgdG8gaGlzdG9yaWNhbCByZWFzb25zIDopIAorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJmaWxlLXRyZWUtZHJpdmVycy1kaXJlY3RvcnkiPgorICAgICAgPHRpdGxlPmRyaXZlcnMgZGlyZWN0b3J5PC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBjb2RlIHNoYXJlZCBhbW9uZyBkaWZmZXJlbnQgZHJpdmVycworICAgICAgb24gZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMuICBUaGV5IGFyZSBoZW5jZSBzdXBwb3NlZCBub3QgdG8gYmUKKyAgICAgIGFyY2hpdGVjdHVyZS1zcGVjaWZpYy4KKyAgICAgIEZvciBleGFtcGxlLCB0aGUgZHVtbXkgcGNtIGRyaXZlciBhbmQgdGhlIHNlcmlhbCBNSURJCisgICAgICBkcml2ZXIgYXJlIGZvdW5kIGluIHRoaXMgZGlyZWN0b3J5LiBJbiB0aGUgc3ViLWRpcmVjdG9yaWVzLAorICAgICAgdGhlcmUgaXMgY29kZSBmb3IgY29tcG9uZW50cyB3aGljaCBhcmUgaW5kZXBlbmRlbnQgZnJvbQorICAgICAgYnVzIGFuZCBjcHUgYXJjaGl0ZWN0dXJlcy4gCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxzZWN0aW9uIGlkPSJmaWxlLXRyZWUtZHJpdmVycy1kaXJlY3RvcnktbXB1NDAxIj4KKyAgICAgICAgPHRpdGxlPmRyaXZlcnMvbXB1NDAxPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIE1QVTQwMSBhbmQgTVBVNDAxLVVBUlQgbW9kdWxlcyBhcmUgc3RvcmVkIGhlcmUuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdGlvbj4KKworICAgICAgPHNlY3Rpb24gaWQ9ImZpbGUtdHJlZS1kcml2ZXJzLWRpcmVjdG9yeS1vcGwzIj4KKyAgICAgICAgPHRpdGxlPmRyaXZlcnMvb3BsMyBhbmQgb3BsNDwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBPUEwzIGFuZCBPUEw0IEZNLXN5bnRoIHN0dWZmIGlzIGZvdW5kIGhlcmUuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iZmlsZS10cmVlLWkyYy1kaXJlY3RvcnkiPgorICAgICAgPHRpdGxlPmkyYyBkaXJlY3Rvcnk8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgY29udGFpbnMgdGhlIEFMU0EgaTJjIGNvbXBvbmVudHMuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBBbHRob3VnaCB0aGVyZSBpcyBhIHN0YW5kYXJkIGkyYyBsYXllciBvbiBMaW51eCwgQUxTQSBoYXMgaXRzCisgICAgICBvd24gaTJjIGNvZGUgZm9yIHNvbWUgY2FyZHMsIGJlY2F1c2UgdGhlIHNvdW5kY2FyZCBuZWVkcyBvbmx5IGEKKyAgICAgIHNpbXBsZSBvcGVyYXRpb24gYW5kIHRoZSBzdGFuZGFyZCBpMmMgQVBJIGlzIHRvbyBjb21wbGljYXRlZCBmb3IKKyAgICAgIHN1Y2ggYSBwdXJwb3NlLiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHNlY3Rpb24gaWQ9ImZpbGUtdHJlZS1pMmMtZGlyZWN0b3J5LWwzIj4KKyAgICAgICAgPHRpdGxlPmkyYy9sMzwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoaXMgaXMgYSBzdWItZGlyZWN0b3J5IGZvciBBUk0gTDMgaTJjLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImZpbGUtdHJlZS1zeW50aC1kaXJlY3RvcnkiPgorICAgICAgICA8dGl0bGU+c3ludGggZGlyZWN0b3J5PC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhpcyBjb250YWlucyB0aGUgc3ludGggbWlkZGxlLWxldmVsIG1vZHVsZXMuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICBTbyBmYXIsIHRoZXJlIGlzIG9ubHkgRW11ODAwMC9FbXUxMGsxIHN5bnRoIGRyaXZlciB1bmRlcgorICAgICAgICB0aGUgPGZpbGVuYW1lPnN5bnRoL2VtdXg8L2ZpbGVuYW1lPiBzdWItZGlyZWN0b3J5LiAKKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJmaWxlLXRyZWUtcGNpLWRpcmVjdG9yeSI+CisgICAgICA8dGl0bGU+cGNpIGRpcmVjdG9yeTwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBkaXJlY3RvcnkgYW5kIGl0cyBzdWItZGlyZWN0b3JpZXMgaG9sZCB0aGUgdG9wLWxldmVsIGNhcmQgbW9kdWxlcworICAgICAgZm9yIFBDSSBzb3VuZGNhcmRzIGFuZCB0aGUgY29kZSBzcGVjaWZpYyB0byB0aGUgUENJIEJVUy4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBkcml2ZXJzIGNvbXBpbGVkIGZyb20gYSBzaW5nbGUgZmlsZSBhcmUgc3RvcmVkIGRpcmVjdGx5CisgICAgICBpbiB0aGUgcGNpIGRpcmVjdG9yeSwgd2hpbGUgdGhlIGRyaXZlcnMgd2l0aCBzZXZlcmFsIHNvdXJjZSBmaWxlcyBhcmUKKyAgICAgIHN0b3JlZCBvbiB0aGVpciBvd24gc3ViLWRpcmVjdG9yeSAoZS5nLiBlbXUxMGsxLCBpY2UxNzEyKS4gCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImZpbGUtdHJlZS1pc2EtZGlyZWN0b3J5Ij4KKyAgICAgIDx0aXRsZT5pc2EgZGlyZWN0b3J5PC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUaGlzIGRpcmVjdG9yeSBhbmQgaXRzIHN1Yi1kaXJlY3RvcmllcyBob2xkIHRoZSB0b3AtbGV2ZWwgY2FyZCBtb2R1bGVzCisgICAgICBmb3IgSVNBIHNvdW5kY2FyZHMuIAorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJmaWxlLXRyZWUtYXJtLXBwYy1zcGFyYy1kaXJlY3RvcmllcyI+CisgICAgICA8dGl0bGU+YXJtLCBwcGMsIGFuZCBzcGFyYyBkaXJlY3RvcmllczwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhleSBhcmUgdXNlZCBmb3IgdG9wLWxldmVsIGNhcmQgbW9kdWxlcyB3aGljaCBhcmUKKyAgICAgIHNwZWNpZmljIHRvIG9uZSBvZiB0aGVzZSBhcmNoaXRlY3R1cmVzLiAKKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iZmlsZS10cmVlLXVzYi1kaXJlY3RvcnkiPgorICAgICAgPHRpdGxlPnVzYiBkaXJlY3Rvcnk8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBVU0ItYXVkaW8gZHJpdmVyLiBJbiB0aGUgbGF0ZXN0IHZlcnNpb24sIHRoZQorICAgICAgVVNCIE1JREkgZHJpdmVyIGlzIGludGVncmF0ZWQgaW4gdGhlIHVzYi1hdWRpbyBkcml2ZXIuIAorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJmaWxlLXRyZWUtcGNtY2lhLWRpcmVjdG9yeSI+CisgICAgICA8dGl0bGU+cGNtY2lhIGRpcmVjdG9yeTwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIFBDTUNJQSwgZXNwZWNpYWxseSBQQ0NhcmQgZHJpdmVycyB3aWxsIGdvIGhlcmUuIENhcmRCdXMKKyAgICAgIGRyaXZlcnMgd2lsbCBiZSBpbiB0aGUgcGNpIGRpcmVjdG9yeSwgYmVjYXVzZSB0aGVpciBBUEkgaXMgaWRlbnRpY2FsCisgICAgICB0byB0aGF0IG9mIHN0YW5kYXJkIFBDSSBjYXJkcy4gCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImZpbGUtdHJlZS1vc3MtZGlyZWN0b3J5Ij4KKyAgICAgIDx0aXRsZT5vc3MgZGlyZWN0b3J5PC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgT1NTL0xpdGUgc291cmNlIGZpbGVzIGFyZSBzdG9yZWQgaGVyZSBpbiBMaW51eCAyLjYgKG9yCisgICAgICBsYXRlcikgdHJlZS4gSW4gdGhlIEFMU0EgZHJpdmVyIHRhcmJhbGwsIHRoaXMgZGlyZWN0b3J5IGlzIGVtcHR5LAorICAgICAgb2YgY291cnNlIDopIAorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKyAgPC9jaGFwdGVyPgorCisKKzwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgorPCEtLSBCYXNpYyBGbG93IGZvciBQQ0kgRHJpdmVycyAgLS0+Cis8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT4KKyAgPGNoYXB0ZXIgaWQ9ImJhc2ljLWZsb3ciPgorICAgIDx0aXRsZT5CYXNpYyBGbG93IGZvciBQQ0kgRHJpdmVyczwvdGl0bGU+CisKKyAgICA8c2VjdGlvbiBpZD0iYmFzaWMtZmxvdy1vdXRsaW5lIj4KKyAgICAgIDx0aXRsZT5PdXRsaW5lPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgbWluaW11bSBmbG93IGZvciBQQ0kgc291bmRjYXJkcyBpcyBhcyBmb2xsb3dzOgorCisgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPmRlZmluZSB0aGUgUENJIElEIHRhYmxlIChzZWUgdGhlIHNlY3Rpb24KKyAgICAgICAgICA8bGluayBsaW5rZW5kPSJwY2ktcmVzb3VyY2UtZW50cmllcyI+PGNpdGV0aXRsZT5QQ0kgRW50cmllcworICAgICAgICAgIDwvY2l0ZXRpdGxlPjwvbGluaz4pLjwvcGFyYT48L2xpc3RpdGVtPiAKKyAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Y3JlYXRlIDxmdW5jdGlvbj5wcm9iZSgpPC9mdW5jdGlvbj4gY2FsbGJhY2suPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPmNyZWF0ZSA8ZnVuY3Rpb24+cmVtb3ZlKCk8L2Z1bmN0aW9uPiBjYWxsYmFjay48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Y3JlYXRlIGEgPHN0cnVjdG5hbWU+cGNpX2RyaXZlcjwvc3RydWN0bmFtZT4gc3RydWN0dXJlCisJICBjb250YWluaW5nIHRoZSB0aHJlZSBwb2ludGVycyBhYm92ZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Y3JlYXRlIGFuIDxmdW5jdGlvbj5pbml0KCk8L2Z1bmN0aW9uPiBmdW5jdGlvbiBqdXN0IGNhbGxpbmcKKwkgIHRoZSA8ZnVuY3Rpb24+cGNpX3JlZ2lzdGVyX2RyaXZlcigpPC9mdW5jdGlvbj4gdG8gcmVnaXN0ZXIgdGhlIHBjaV9kcml2ZXIgdGFibGUKKwkgIGRlZmluZWQgYWJvdmUuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPmNyZWF0ZSBhbiA8ZnVuY3Rpb24+ZXhpdCgpPC9mdW5jdGlvbj4gZnVuY3Rpb24gdG8gY2FsbAorCSAgdGhlIDxmdW5jdGlvbj5wY2lfdW5yZWdpc3Rlcl9kcml2ZXIoKTwvZnVuY3Rpb24+IGZ1bmN0aW9uLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iYmFzaWMtZmxvdy1leGFtcGxlIj4KKyAgICAgIDx0aXRsZT5GdWxsIENvZGUgRXhhbXBsZTwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGNvZGUgZXhhbXBsZSBpcyBzaG93biBiZWxvdy4gU29tZSBwYXJ0cyBhcmUga2VwdAorICAgICAgdW5pbXBsZW1lbnRlZCBhdCB0aGlzIG1vbWVudCBidXQgd2lsbCBiZSBmaWxsZWQgaW4gdGhlCisgICAgICBuZXh0IHNlY3Rpb25zLiBUaGUgbnVtYmVycyBpbiB0aGUgY29tbWVudCBsaW5lcyBvZiB0aGUKKyAgICAgIDxmdW5jdGlvbj5zbmRfbXljaGlwX3Byb2JlKCk8L2Z1bmN0aW9uPiBmdW5jdGlvbgorICAgICAgcmVmZXIgdG8gZGV0YWlscyBleHBsYWluZWQgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9uLiAKKworICAgICAgICA8ZXhhbXBsZT4KKyAgICAgICAgICA8dGl0bGU+QmFzaWMgRmxvdyBmb3IgUENJIERyaXZlcnMgLSBFeGFtcGxlPC90aXRsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyAgI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgorICAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorICAjaW5jbHVkZSA8c291bmQvY29yZS5oPgorICAjaW5jbHVkZSA8c291bmQvaW5pdHZhbC5oPgorCisgIC8qIG1vZHVsZSBwYXJhbWV0ZXJzIChzZWUgIk1vZHVsZSBQYXJhbWV0ZXJzIikgKi8KKyAgLyogU05EUlZfQ0FSRFM6IG1heGltdW0gbnVtYmVyIG9mIGNhcmRzIHN1cHBvcnRlZCBieSB0aGlzIG1vZHVsZSAqLworICBzdGF0aWMgaW50IGluZGV4W1NORFJWX0NBUkRTXSA9IFNORFJWX0RFRkFVTFRfSURYOworICBzdGF0aWMgY2hhciAqaWRbU05EUlZfQ0FSRFNdID0gU05EUlZfREVGQVVMVF9TVFI7CisgIHN0YXRpYyBib29sIGVuYWJsZVtTTkRSVl9DQVJEU10gPSBTTkRSVl9ERUZBVUxUX0VOQUJMRV9QTlA7CisKKyAgLyogZGVmaW5pdGlvbiBvZiB0aGUgY2hpcC1zcGVjaWZpYyByZWNvcmQgKi8KKyAgc3RydWN0IG15Y2hpcCB7CisgICAgICAgICAgc3RydWN0IHNuZF9jYXJkICpjYXJkOworICAgICAgICAgIC8qIHRoZSByZXN0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIGJlIGluIHNlY3Rpb24KKyAgICAgICAgICAgKiAiUENJIFJlc291cmNlIE1hbmFnZW1lbnQiCisgICAgICAgICAgICovCisgIH07CisKKyAgLyogY2hpcC1zcGVjaWZpYyBkZXN0cnVjdG9yCisgICAqIChzZWUgIlBDSSBSZXNvdXJjZSBNYW5hZ2VtZW50IikKKyAgICovCisgIHN0YXRpYyBpbnQgc25kX215Y2hpcF9mcmVlKHN0cnVjdCBteWNoaXAgKmNoaXApCisgIHsKKyAgICAgICAgICAuLi4uIC8qIHdpbGwgYmUgaW1wbGVtZW50ZWQgbGF0ZXIuLi4gKi8KKyAgfQorCisgIC8qIGNvbXBvbmVudC1kZXN0cnVjdG9yCisgICAqIChzZWUgIk1hbmFnZW1lbnQgb2YgQ2FyZHMgYW5kIENvbXBvbmVudHMiKQorICAgKi8KKyAgc3RhdGljIGludCBzbmRfbXljaGlwX2Rldl9mcmVlKHN0cnVjdCBzbmRfZGV2aWNlICpkZXZpY2UpCisgIHsKKyAgICAgICAgICByZXR1cm4gc25kX215Y2hpcF9mcmVlKGRldmljZS0+ZGV2aWNlX2RhdGEpOworICB9CisKKyAgLyogY2hpcC1zcGVjaWZpYyBjb25zdHJ1Y3RvcgorICAgKiAoc2VlICJNYW5hZ2VtZW50IG9mIENhcmRzIGFuZCBDb21wb25lbnRzIikKKyAgICovCisgIHN0YXRpYyBpbnQgc25kX215Y2hpcF9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwY2lfZGV2ICpwY2ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG15Y2hpcCAqKnJjaGlwKQorICB7CisgICAgICAgICAgc3RydWN0IG15Y2hpcCAqY2hpcDsKKyAgICAgICAgICBpbnQgZXJyOworICAgICAgICAgIHN0YXRpYyBzdHJ1Y3Qgc25kX2RldmljZV9vcHMgb3BzID0geworICAgICAgICAgICAgICAgICAuZGV2X2ZyZWUgPSBzbmRfbXljaGlwX2Rldl9mcmVlLAorICAgICAgICAgIH07CisKKyAgICAgICAgICAqcmNoaXAgPSBOVUxMOworCisgICAgICAgICAgLyogY2hlY2sgUENJIGF2YWlsYWJpbGl0eSBoZXJlCisgICAgICAgICAgICogKHNlZSAiUENJIFJlc291cmNlIE1hbmFnZW1lbnQiKQorICAgICAgICAgICAqLworICAgICAgICAgIC4uLi4KKworICAgICAgICAgIC8qIGFsbG9jYXRlIGEgY2hpcC1zcGVjaWZpYyBkYXRhIHdpdGggemVybyBmaWxsZWQgKi8KKyAgICAgICAgICBjaGlwID0ga3phbGxvYyhzaXplb2YoKmNoaXApLCBHRlBfS0VSTkVMKTsKKyAgICAgICAgICBpZiAoY2hpcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07CisKKyAgICAgICAgICBjaGlwLT5jYXJkID0gY2FyZDsKKworICAgICAgICAgIC8qIHJlc3Qgb2YgaW5pdGlhbGl6YXRpb24gaGVyZTsgd2lsbCBiZSBpbXBsZW1lbnRlZAorICAgICAgICAgICAqIGxhdGVyLCBzZWUgIlBDSSBSZXNvdXJjZSBNYW5hZ2VtZW50IgorICAgICAgICAgICAqLworICAgICAgICAgIC4uLi4KKworICAgICAgICAgIGVyciA9IHNuZF9kZXZpY2VfbmV3KGNhcmQsIFNORFJWX0RFVl9MT1dMRVZFTCwgY2hpcCwgJm9wcyk7CisgICAgICAgICAgaWYgKGVyciA8IDApIHsKKyAgICAgICAgICAgICAgICAgIHNuZF9teWNoaXBfZnJlZShjaGlwKTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBlcnI7CisgICAgICAgICAgfQorCisgICAgICAgICAgKnJjaGlwID0gY2hpcDsKKyAgICAgICAgICByZXR1cm4gMDsKKyAgfQorCisgIC8qIGNvbnN0cnVjdG9yIC0tIHNlZSAiQ29uc3RydWN0b3IiIHN1Yi1zZWN0aW9uICovCisgIHN0YXRpYyBpbnQgc25kX215Y2hpcF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9pZCkKKyAgeworICAgICAgICAgIHN0YXRpYyBpbnQgZGV2OworICAgICAgICAgIHN0cnVjdCBzbmRfY2FyZCAqY2FyZDsKKyAgICAgICAgICBzdHJ1Y3QgbXljaGlwICpjaGlwOworICAgICAgICAgIGludCBlcnI7CisKKyAgICAgICAgICAvKiAoMSkgKi8KKyAgICAgICAgICBpZiAoZGV2ID49IFNORFJWX0NBUkRTKQorICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9ERVY7CisgICAgICAgICAgaWYgKCFlbmFibGVbZGV2XSkgeworICAgICAgICAgICAgICAgICAgZGV2Kys7CisgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKKyAgICAgICAgICB9CisKKyAgICAgICAgICAvKiAoMikgKi8KKyAgICAgICAgICBlcnIgPSBzbmRfY2FyZF9uZXcoJnBjaS0+ZGV2LCBpbmRleFtkZXZdLCBpZFtkZXZdLCBUSElTX01PRFVMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgJmNhcmQpOworICAgICAgICAgIGlmIChlcnIgPCAwKQorICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKKworICAgICAgICAgIC8qICgzKSAqLworICAgICAgICAgIGVyciA9IHNuZF9teWNoaXBfY3JlYXRlKGNhcmQsIHBjaSwgJmNoaXApOworICAgICAgICAgIGlmIChlcnIgPCAwKSB7CisgICAgICAgICAgICAgICAgICBzbmRfY2FyZF9mcmVlKGNhcmQpOworICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICAgICAgICB9CisKKyAgICAgICAgICAvKiAoNCkgKi8KKyAgICAgICAgICBzdHJjcHkoY2FyZC0+ZHJpdmVyLCAiTXkgQ2hpcCIpOworICAgICAgICAgIHN0cmNweShjYXJkLT5zaG9ydG5hbWUsICJNeSBPd24gQ2hpcCAxMjMiKTsKKyAgICAgICAgICBzcHJpbnRmKGNhcmQtPmxvbmduYW1lLCAiJXMgYXQgMHglbHggaXJxICVpIiwKKyAgICAgICAgICAgICAgICAgIGNhcmQtPnNob3J0bmFtZSwgY2hpcC0+aW9wb3J0LCBjaGlwLT5pcnEpOworCisgICAgICAgICAgLyogKDUpICovCisgICAgICAgICAgLi4uLiAvKiBpbXBsZW1lbnRlZCBsYXRlciAqLworCisgICAgICAgICAgLyogKDYpICovCisgICAgICAgICAgZXJyID0gc25kX2NhcmRfcmVnaXN0ZXIoY2FyZCk7CisgICAgICAgICAgaWYgKGVyciA8IDApIHsKKyAgICAgICAgICAgICAgICAgIHNuZF9jYXJkX2ZyZWUoY2FyZCk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOworICAgICAgICAgIH0KKworICAgICAgICAgIC8qICg3KSAqLworICAgICAgICAgIHBjaV9zZXRfZHJ2ZGF0YShwY2ksIGNhcmQpOworICAgICAgICAgIGRldisrOworICAgICAgICAgIHJldHVybiAwOworICB9CisKKyAgLyogZGVzdHJ1Y3RvciAtLSBzZWUgdGhlICJEZXN0cnVjdG9yIiBzdWItc2VjdGlvbiAqLworICBzdGF0aWMgdm9pZCBzbmRfbXljaGlwX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGNpKQorICB7CisgICAgICAgICAgc25kX2NhcmRfZnJlZShwY2lfZ2V0X2RydmRhdGEocGNpKSk7CisgICAgICAgICAgcGNpX3NldF9kcnZkYXRhKHBjaSwgTlVMTCk7CisgIH0KK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iYmFzaWMtZmxvdy1jb25zdHJ1Y3RvciI+CisgICAgICA8dGl0bGU+Q29uc3RydWN0b3I8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIFRoZSByZWFsIGNvbnN0cnVjdG9yIG9mIFBDSSBkcml2ZXJzIGlzIHRoZSA8ZnVuY3Rpb24+cHJvYmU8L2Z1bmN0aW9uPiBjYWxsYmFjay4KKyAgICAgIFRoZSA8ZnVuY3Rpb24+cHJvYmU8L2Z1bmN0aW9uPiBjYWxsYmFjayBhbmQgb3RoZXIgY29tcG9uZW50LWNvbnN0cnVjdG9ycyB3aGljaCBhcmUgY2FsbGVkCisgICAgICBmcm9tIHRoZSA8ZnVuY3Rpb24+cHJvYmU8L2Z1bmN0aW9uPiBjYWxsYmFjayBjYW5ub3QgYmUgdXNlZCB3aXRoCisgICAgICB0aGUgPHBhcmFtZXRlcj5fX2luaXQ8L3BhcmFtZXRlcj4gcHJlZml4CisgICAgICBiZWNhdXNlIGFueSBQQ0kgZGV2aWNlIGNvdWxkIGJlIGEgaG90cGx1ZyBkZXZpY2UuIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgSW4gdGhlIDxmdW5jdGlvbj5wcm9iZTwvZnVuY3Rpb24+IGNhbGxiYWNrLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBpcyBvZnRlbiB1c2VkLgorICAgICAgPC9wYXJhPgorCisgICAgICA8c2VjdGlvbiBpZD0iYmFzaWMtZmxvdy1jb25zdHJ1Y3Rvci1kZXZpY2UtaW5kZXgiPgorICAgICAgICA8dGl0bGU+MSkgQ2hlY2sgYW5kIGluY3JlbWVudCB0aGUgZGV2aWNlIGluZGV4LjwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RhdGljIGludCBkZXY7CisgIC4uLi4KKyAgaWYgKGRldiA+PSBTTkRSVl9DQVJEUykKKyAgICAgICAgICByZXR1cm4gLUVOT0RFVjsKKyAgaWYgKCFlbmFibGVbZGV2XSkgeworICAgICAgICAgIGRldisrOworICAgICAgICAgIHJldHVybiAtRU5PRU5UOworICB9CitdXT4KKyAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisKKyAgICAgICAgd2hlcmUgZW5hYmxlW2Rldl0gaXMgdGhlIG1vZHVsZSBvcHRpb24uCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICBFYWNoIHRpbWUgdGhlIDxmdW5jdGlvbj5wcm9iZTwvZnVuY3Rpb24+IGNhbGxiYWNrIGlzIGNhbGxlZCwgY2hlY2sgdGhlCisgICAgICAgIGF2YWlsYWJpbGl0eSBvZiB0aGUgZGV2aWNlLiBJZiBub3QgYXZhaWxhYmxlLCBzaW1wbHkgaW5jcmVtZW50CisgICAgICAgIHRoZSBkZXZpY2UgaW5kZXggYW5kIHJldHVybnMuIGRldiB3aWxsIGJlIGluY3JlbWVudGVkIGFsc28KKyAgICAgICAgbGF0ZXIgKDxsaW5rCisgICAgICAgIGxpbmtlbmQ9ImJhc2ljLWZsb3ctY29uc3RydWN0b3Itc2V0LXBjaSI+PGNpdGV0aXRsZT5zdGVwCisgICAgICAgIDc8L2NpdGV0aXRsZT48L2xpbms+KS4gCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdGlvbj4KKworICAgICAgPHNlY3Rpb24gaWQ9ImJhc2ljLWZsb3ctY29uc3RydWN0b3ItY3JlYXRlLWNhcmQiPgorICAgICAgICA8dGl0bGU+MikgQ3JlYXRlIGEgY2FyZCBpbnN0YW5jZTwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RydWN0IHNuZF9jYXJkICpjYXJkOworICBpbnQgZXJyOworICAuLi4uCisgIGVyciA9IHNuZF9jYXJkX25ldygmcGNpLT5kZXYsIGluZGV4W2Rldl0sIGlkW2Rldl0sIFRISVNfTU9EVUxFLAorICAgICAgICAgICAgICAgICAgICAgMCwgJmNhcmQpOworXV0+CisgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIGRldGFpbHMgd2lsbCBiZSBleHBsYWluZWQgaW4gdGhlIHNlY3Rpb24KKyAgICAgICAgICA8bGluayBsaW5rZW5kPSJjYXJkLW1hbmFnZW1lbnQtY2FyZC1pbnN0YW5jZSI+PGNpdGV0aXRsZT4KKyAgICAgICAgICBNYW5hZ2VtZW50IG9mIENhcmRzIGFuZCBDb21wb25lbnRzPC9jaXRldGl0bGU+PC9saW5rPi4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0aW9uPgorCisgICAgICA8c2VjdGlvbiBpZD0iYmFzaWMtZmxvdy1jb25zdHJ1Y3Rvci1jcmVhdGUtbWFpbiI+CisgICAgICAgIDx0aXRsZT4zKSBDcmVhdGUgYSBtYWluIGNvbXBvbmVudDwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEluIHRoaXMgcGFydCwgdGhlIFBDSSByZXNvdXJjZXMgYXJlIGFsbG9jYXRlZC4KKworICAgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RydWN0IG15Y2hpcCAqY2hpcDsKKyAgLi4uLgorICBlcnIgPSBzbmRfbXljaGlwX2NyZWF0ZShjYXJkLCBwY2ksICZjaGlwKTsKKyAgaWYgKGVyciA8IDApIHsKKyAgICAgICAgICBzbmRfY2FyZF9mcmVlKGNhcmQpOworICAgICAgICAgIHJldHVybiBlcnI7CisgIH0KK11dPgorICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworICAgICAgICAgIFRoZSBkZXRhaWxzIHdpbGwgYmUgZXhwbGFpbmVkIGluIHRoZSBzZWN0aW9uIDxsaW5rCisgICAgICAgIGxpbmtlbmQ9InBjaS1yZXNvdXJjZSI+PGNpdGV0aXRsZT5QQ0kgUmVzb3VyY2UKKyAgICAgICAgTWFuYWdlbWVudDwvY2l0ZXRpdGxlPjwvbGluaz4uCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdGlvbj4KKworICAgICAgPHNlY3Rpb24gaWQ9ImJhc2ljLWZsb3ctY29uc3RydWN0b3ItbWFpbi1jb21wb25lbnQiPgorICAgICAgICA8dGl0bGU+NCkgU2V0IHRoZSBkcml2ZXIgSUQgYW5kIG5hbWUgc3RyaW5ncy48L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0cmNweShjYXJkLT5kcml2ZXIsICJNeSBDaGlwIik7CisgIHN0cmNweShjYXJkLT5zaG9ydG5hbWUsICJNeSBPd24gQ2hpcCAxMjMiKTsKKyAgc3ByaW50ZihjYXJkLT5sb25nbmFtZSwgIiVzIGF0IDB4JWx4IGlycSAlaSIsCisgICAgICAgICAgY2FyZC0+c2hvcnRuYW1lLCBjaGlwLT5pb3BvcnQsIGNoaXAtPmlycSk7CitdXT4KKyAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisKKyAgICAgICAgICBUaGUgZHJpdmVyIGZpZWxkIGhvbGRzIHRoZSBtaW5pbWFsIElEIHN0cmluZyBvZiB0aGUKKyAgICAgICAgY2hpcC4gVGhpcyBpcyB1c2VkIGJ5IGFsc2EtbGliJ3MgY29uZmlndXJhdG9yLCBzbyBrZWVwIGl0CisgICAgICAgIHNpbXBsZSBidXQgdW5pcXVlLiAKKyAgICAgICAgICBFdmVuIHRoZSBzYW1lIGRyaXZlciBjYW4gaGF2ZSBkaWZmZXJlbnQgZHJpdmVyIElEcyB0bworICAgICAgICBkaXN0aW5ndWlzaCB0aGUgZnVuY3Rpb25hbGl0eSBvZiBlYWNoIGNoaXAgdHlwZS4gCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgc2hvcnRuYW1lIGZpZWxkIGlzIGEgc3RyaW5nIHNob3duIGFzIG1vcmUgdmVyYm9zZQorICAgICAgICBuYW1lLiBUaGUgbG9uZ25hbWUgZmllbGQgY29udGFpbnMgdGhlIGluZm9ybWF0aW9uCisgICAgICAgIHNob3duIGluIDxmaWxlbmFtZT4vcHJvYy9hc291bmQvY2FyZHM8L2ZpbGVuYW1lPi4gCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdGlvbj4KKworICAgICAgPHNlY3Rpb24gaWQ9ImJhc2ljLWZsb3ctY29uc3RydWN0b3ItY3JlYXRlLW90aGVyIj4KKyAgICAgICAgPHRpdGxlPjUpIENyZWF0ZSBvdGhlciBjb21wb25lbnRzLCBzdWNoIGFzIG1peGVyLCBNSURJLCBldGMuPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgSGVyZSB5b3UgZGVmaW5lIHRoZSBiYXNpYyBjb21wb25lbnRzIHN1Y2ggYXMKKyAgICAgICAgICA8bGluayBsaW5rZW5kPSJwY20taW50ZXJmYWNlIj48Y2l0ZXRpdGxlPlBDTTwvY2l0ZXRpdGxlPjwvbGluaz4sCisgICAgICAgICAgbWl4ZXIgKGUuZy4gPGxpbmsgbGlua2VuZD0iYXBpLWFjOTciPjxjaXRldGl0bGU+QUM5NzwvY2l0ZXRpdGxlPjwvbGluaz4pLAorICAgICAgICAgIE1JREkgKGUuZy4gPGxpbmsgbGlua2VuZD0ibWlkaS1pbnRlcmZhY2UiPjxjaXRldGl0bGU+TVBVLTQwMTwvY2l0ZXRpdGxlPjwvbGluaz4pLAorICAgICAgICAgIGFuZCBvdGhlciBpbnRlcmZhY2VzLgorICAgICAgICAgIEFsc28sIGlmIHlvdSB3YW50IGEgPGxpbmsgbGlua2VuZD0icHJvYy1pbnRlcmZhY2UiPjxjaXRldGl0bGU+cHJvYworICAgICAgICBmaWxlPC9jaXRldGl0bGU+PC9saW5rPiwgZGVmaW5lIGl0IGhlcmUsIHRvby4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0aW9uPgorCisgICAgICA8c2VjdGlvbiBpZD0iYmFzaWMtZmxvdy1jb25zdHJ1Y3Rvci1yZWdpc3Rlci1jYXJkIj4KKyAgICAgICAgPHRpdGxlPjYpIFJlZ2lzdGVyIHRoZSBjYXJkIGluc3RhbmNlLjwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgZXJyID0gc25kX2NhcmRfcmVnaXN0ZXIoY2FyZCk7CisgIGlmIChlcnIgPCAwKSB7CisgICAgICAgICAgc25kX2NhcmRfZnJlZShjYXJkKTsKKyAgICAgICAgICByZXR1cm4gZXJyOworICB9CitdXT4KKyAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICBXaWxsIGJlIGV4cGxhaW5lZCBpbiB0aGUgc2VjdGlvbiA8bGluaworICAgICAgICBsaW5rZW5kPSJjYXJkLW1hbmFnZW1lbnQtcmVnaXN0cmF0aW9uIj48Y2l0ZXRpdGxlPk1hbmFnZW1lbnQKKyAgICAgICAgb2YgQ2FyZHMgYW5kIENvbXBvbmVudHM8L2NpdGV0aXRsZT48L2xpbms+LCB0b28uIAorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3Rpb24+CisKKyAgICAgIDxzZWN0aW9uIGlkPSJiYXNpYy1mbG93LWNvbnN0cnVjdG9yLXNldC1wY2kiPgorICAgICAgICA8dGl0bGU+NykgU2V0IHRoZSBQQ0kgZHJpdmVyIGRhdGEgYW5kIHJldHVybiB6ZXJvLjwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgICAgICAgcGNpX3NldF9kcnZkYXRhKHBjaSwgY2FyZCk7CisgICAgICAgIGRldisrOworICAgICAgICByZXR1cm4gMDsKK11dPgorICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworICAgICAgICAgIEluIHRoZSBhYm92ZSwgdGhlIGNhcmQgcmVjb3JkIGlzIHN0b3JlZC4gVGhpcyBwb2ludGVyIGlzCisgICAgICAgIHVzZWQgaW4gdGhlIHJlbW92ZSBjYWxsYmFjayBhbmQgcG93ZXItbWFuYWdlbWVudAorICAgICAgICBjYWxsYmFja3MsIHRvby4gCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iYmFzaWMtZmxvdy1kZXN0cnVjdG9yIj4KKyAgICAgIDx0aXRsZT5EZXN0cnVjdG9yPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgZGVzdHJ1Y3RvciwgcmVtb3ZlIGNhbGxiYWNrLCBzaW1wbHkgcmVsZWFzZXMgdGhlIGNhcmQKKyAgICAgIGluc3RhbmNlLiBUaGVuIHRoZSBBTFNBIG1pZGRsZSBsYXllciB3aWxsIHJlbGVhc2UgYWxsIHRoZQorICAgICAgYXR0YWNoZWQgY29tcG9uZW50cyBhdXRvbWF0aWNhbGx5LiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIEl0IHdvdWxkIGJlIHR5cGljYWxseSBsaWtlIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RhdGljIHZvaWQgc25kX215Y2hpcF9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBjaSkKKyAgeworICAgICAgICAgIHNuZF9jYXJkX2ZyZWUocGNpX2dldF9kcnZkYXRhKHBjaSkpOworICAgICAgICAgIHBjaV9zZXRfZHJ2ZGF0YShwY2ksIE5VTEwpOworICB9CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworICAgICAgICBUaGUgYWJvdmUgY29kZSBhc3N1bWVzIHRoYXQgdGhlIGNhcmQgcG9pbnRlciBpcyBzZXQgdG8gdGhlIFBDSQorCWRyaXZlciBkYXRhLgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJiYXNpYy1mbG93LWhlYWRlci1maWxlcyI+CisgICAgICA8dGl0bGU+SGVhZGVyIEZpbGVzPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBGb3IgdGhlIGFib3ZlIGV4YW1wbGUsIGF0IGxlYXN0IHRoZSBmb2xsb3dpbmcgaW5jbHVkZSBmaWxlcworICAgICAgYXJlIG5lY2Vzc2FyeS4gCisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyAgI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgorICAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorICAjaW5jbHVkZSA8c291bmQvY29yZS5oPgorICAjaW5jbHVkZSA8c291bmQvaW5pdHZhbC5oPgorXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisKKwl3aGVyZSB0aGUgbGFzdCBvbmUgaXMgbmVjZXNzYXJ5IG9ubHkgd2hlbiBtb2R1bGUgb3B0aW9ucyBhcmUKKyAgICAgIGRlZmluZWQgaW4gdGhlIHNvdXJjZSBmaWxlLiAgSWYgdGhlIGNvZGUgaXMgc3BsaXQgaW50byBzZXZlcmFsCisgICAgICBmaWxlcywgdGhlIGZpbGVzIHdpdGhvdXQgbW9kdWxlIG9wdGlvbnMgZG9uJ3QgbmVlZCB0aGVtLgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgSW4gYWRkaXRpb24gdG8gdGhlc2UgaGVhZGVycywgeW91J2xsIG5lZWQKKyAgICAgIDxmaWxlbmFtZT4mbHQ7bGludXgvaW50ZXJydXB0LmgmZ3Q7PC9maWxlbmFtZT4gZm9yIGludGVycnVwdAorICAgICAgaGFuZGxpbmcsIGFuZCA8ZmlsZW5hbWU+Jmx0O2FzbS9pby5oJmd0OzwvZmlsZW5hbWU+IGZvciBJL08KKyAgICAgIGFjY2Vzcy4gSWYgeW91IHVzZSB0aGUgPGZ1bmN0aW9uPm1kZWxheSgpPC9mdW5jdGlvbj4gb3IKKyAgICAgIDxmdW5jdGlvbj51ZGVsYXkoKTwvZnVuY3Rpb24+IGZ1bmN0aW9ucywgeW91J2xsIG5lZWQgdG8gaW5jbHVkZQorICAgICAgPGZpbGVuYW1lPiZsdDtsaW51eC9kZWxheS5oJmd0OzwvZmlsZW5hbWU+IHRvby4gCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgVGhlIEFMU0EgaW50ZXJmYWNlcyBsaWtlIHRoZSBQQ00gYW5kIGNvbnRyb2wgQVBJcyBhcmUgZGVmaW5lZCBpbiBvdGhlcgorICAgICAgPGZpbGVuYW1lPiZsdDtzb3VuZC94eHguaCZndDs8L2ZpbGVuYW1lPiBoZWFkZXIgZmlsZXMuCisgICAgICBUaGV5IGhhdmUgdG8gYmUgaW5jbHVkZWQgYWZ0ZXIKKyAgICAgIDxmaWxlbmFtZT4mbHQ7c291bmQvY29yZS5oJmd0OzwvZmlsZW5hbWU+LgorICAgICAgPC9wYXJhPgorCisgICAgPC9zZWN0aW9uPgorICA8L2NoYXB0ZXI+CisKKworPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+Cis8IS0tIE1hbmFnZW1lbnQgb2YgQ2FyZHMgYW5kIENvbXBvbmVudHMgIC0tPgorPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+CisgIDxjaGFwdGVyIGlkPSJjYXJkLW1hbmFnZW1lbnQiPgorICAgIDx0aXRsZT5NYW5hZ2VtZW50IG9mIENhcmRzIGFuZCBDb21wb25lbnRzPC90aXRsZT4KKworICAgIDxzZWN0aW9uIGlkPSJjYXJkLW1hbmFnZW1lbnQtY2FyZC1pbnN0YW5jZSI+CisgICAgICA8dGl0bGU+Q2FyZCBJbnN0YW5jZTwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgIEZvciBlYWNoIHNvdW5kY2FyZCwgYSA8cXVvdGU+Y2FyZDwvcXVvdGU+IHJlY29yZCBtdXN0IGJlIGFsbG9jYXRlZC4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICBBIGNhcmQgcmVjb3JkIGlzIHRoZSBoZWFkcXVhcnRlcnMgb2YgdGhlIHNvdW5kY2FyZC4gIEl0IG1hbmFnZXMKKyAgICAgIHRoZSB3aG9sZSBsaXN0IG9mIGRldmljZXMgKGNvbXBvbmVudHMpIG9uIHRoZSBzb3VuZGNhcmQsIHN1Y2ggYXMKKyAgICAgIFBDTSwgbWl4ZXJzLCBNSURJLCBzeW50aGVzaXplciwgYW5kIHNvIG9uLiAgQWxzbywgdGhlIGNhcmQKKyAgICAgIHJlY29yZCBob2xkcyB0aGUgSUQgYW5kIHRoZSBuYW1lIHN0cmluZ3Mgb2YgdGhlIGNhcmQsIG1hbmFnZXMKKyAgICAgIHRoZSByb290IG9mIHByb2MgZmlsZXMsIGFuZCBjb250cm9scyB0aGUgcG93ZXItbWFuYWdlbWVudCBzdGF0ZXMKKyAgICAgIGFuZCBob3RwbHVnIGRpc2Nvbm5lY3Rpb25zLiAgVGhlIGNvbXBvbmVudCBsaXN0IG9uIHRoZSBjYXJkCisgICAgICByZWNvcmQgaXMgdXNlZCB0byBtYW5hZ2UgdGhlIGNvcnJlY3QgcmVsZWFzZSBvZiByZXNvdXJjZXMgYXQKKyAgICAgIGRlc3RydWN0aW9uLiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIEFzIG1lbnRpb25lZCBhYm92ZSwgdG8gY3JlYXRlIGEgY2FyZCBpbnN0YW5jZSwgY2FsbAorICAgICAgPGZ1bmN0aW9uPnNuZF9jYXJkX25ldygpPC9mdW5jdGlvbj4uCisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RydWN0IHNuZF9jYXJkICpjYXJkOworICBpbnQgZXJyOworICBlcnIgPSBzbmRfY2FyZF9uZXcoJnBjaS0+ZGV2LCBpbmRleCwgaWQsIG1vZHVsZSwgZXh0cmFfc2l6ZSwgJmNhcmQpOworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgZnVuY3Rpb24gdGFrZXMgc2l4IGFyZ3VtZW50czogdGhlIHBhcmVudCBkZXZpY2UgcG9pbnRlciwKKyAgICAgICAgdGhlIGNhcmQtaW5kZXggbnVtYmVyLCB0aGUgaWQgc3RyaW5nLCB0aGUgbW9kdWxlIHBvaW50ZXIgKHVzdWFsbHkKKyAgICAgICAgPGNvbnN0YW50PlRISVNfTU9EVUxFPC9jb25zdGFudD4pLAorICAgICAgICB0aGUgc2l6ZSBvZiBleHRyYS1kYXRhIHNwYWNlLCBhbmQgdGhlIHBvaW50ZXIgdG8gcmV0dXJuIHRoZQorICAgICAgICBjYXJkIGluc3RhbmNlLiAgVGhlIGV4dHJhX3NpemUgYXJndW1lbnQgaXMgdXNlZCB0bworICAgICAgICBhbGxvY2F0ZSBjYXJkLSZndDtwcml2YXRlX2RhdGEgZm9yIHRoZQorICAgICAgICBjaGlwLXNwZWNpZmljIGRhdGEuICBOb3RlIHRoYXQgdGhlc2UgZGF0YQorICAgICAgICBhcmUgYWxsb2NhdGVkIGJ5IDxmdW5jdGlvbj5zbmRfY2FyZF9uZXcoKTwvZnVuY3Rpb24+LgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKwlUaGUgZmlyc3QgYXJndW1lbnQsIHRoZSBwb2ludGVyIG9mIHN0cnVjdAorCTxzdHJ1Y3RuYW1lPmRldmljZTwvc3RydWN0bmFtZT4sIHNwZWNpZmllcyB0aGUgcGFyZW50IGRldmljZS4KKwlGb3IgUENJIGRldmljZXMsIHR5cGljYWxseSAmYW1wO3BjaS0mZ3Q7IGlzIHBhc3NlZCB0aGVyZS4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iY2FyZC1tYW5hZ2VtZW50LWNvbXBvbmVudCI+CisgICAgICA8dGl0bGU+Q29tcG9uZW50czwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgQWZ0ZXIgdGhlIGNhcmQgaXMgY3JlYXRlZCwgeW91IGNhbiBhdHRhY2ggdGhlIGNvbXBvbmVudHMKKyAgICAgIChkZXZpY2VzKSB0byB0aGUgY2FyZCBpbnN0YW5jZS4gSW4gYW4gQUxTQSBkcml2ZXIsIGEgY29tcG9uZW50IGlzCisgICAgICByZXByZXNlbnRlZCBhcyBhIHN0cnVjdCA8c3RydWN0bmFtZT5zbmRfZGV2aWNlPC9zdHJ1Y3RuYW1lPiBvYmplY3QuCisgICAgICBBIGNvbXBvbmVudCBjYW4gYmUgYSBQQ00gaW5zdGFuY2UsIGEgY29udHJvbCBpbnRlcmZhY2UsIGEgcmF3CisgICAgICBNSURJIGludGVyZmFjZSwgZXRjLiAgRWFjaCBzdWNoIGluc3RhbmNlIGhhcyBvbmUgY29tcG9uZW50CisgICAgICBlbnRyeS4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIEEgY29tcG9uZW50IGNhbiBiZSBjcmVhdGVkIHZpYQorICAgICAgICA8ZnVuY3Rpb24+c25kX2RldmljZV9uZXcoKTwvZnVuY3Rpb24+IGZ1bmN0aW9uLiAKKworICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzbmRfZGV2aWNlX25ldyhjYXJkLCBTTkRSVl9ERVZfWFhYLCBjaGlwLCAmb3BzKTsKK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyB0YWtlcyB0aGUgY2FyZCBwb2ludGVyLCB0aGUgZGV2aWNlLWxldmVsCisgICAgICAoPGNvbnN0YW50PlNORFJWX0RFVl9YWFg8L2NvbnN0YW50PiksIHRoZSBkYXRhIHBvaW50ZXIsIGFuZCB0aGUKKyAgICAgIGNhbGxiYWNrIHBvaW50ZXJzICg8cGFyYW1ldGVyPiZhbXA7b3BzPC9wYXJhbWV0ZXI+KS4gVGhlCisgICAgICBkZXZpY2UtbGV2ZWwgZGVmaW5lcyB0aGUgdHlwZSBvZiBjb21wb25lbnRzIGFuZCB0aGUgb3JkZXIgb2YKKyAgICAgIHJlZ2lzdHJhdGlvbiBhbmQgZGUtcmVnaXN0cmF0aW9uLiAgRm9yIG1vc3QgY29tcG9uZW50cywgdGhlCisgICAgICBkZXZpY2UtbGV2ZWwgaXMgYWxyZWFkeSBkZWZpbmVkLiAgRm9yIGEgdXNlci1kZWZpbmVkIGNvbXBvbmVudCwKKyAgICAgIHlvdSBjYW4gdXNlIDxjb25zdGFudD5TTkRSVl9ERVZfTE9XTEVWRUw8L2NvbnN0YW50Pi4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICBUaGlzIGZ1bmN0aW9uIGl0c2VsZiBkb2Vzbid0IGFsbG9jYXRlIHRoZSBkYXRhIHNwYWNlLiBUaGUgZGF0YQorICAgICAgbXVzdCBiZSBhbGxvY2F0ZWQgbWFudWFsbHkgYmVmb3JlaGFuZCwgYW5kIGl0cyBwb2ludGVyIGlzIHBhc3NlZAorICAgICAgYXMgdGhlIGFyZ3VtZW50LiBUaGlzIHBvaW50ZXIgKDxwYXJhbWV0ZXI+Y2hpcDwvcGFyYW1ldGVyPiBpbiB0aGUKKyAgICAgIGFib3ZlIGV4YW1wbGUpIGlzIHVzZWQgYXMgdGhlIGlkZW50aWZpZXIgZm9yIHRoZSBpbnN0YW5jZS4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIEVhY2ggcHJlLWRlZmluZWQgQUxTQSBjb21wb25lbnQgc3VjaCBhcyBhYzk3IGFuZCBwY20gY2FsbHMKKyAgICAgIDxmdW5jdGlvbj5zbmRfZGV2aWNlX25ldygpPC9mdW5jdGlvbj4gaW5zaWRlIGl0cworICAgICAgY29uc3RydWN0b3IuIFRoZSBkZXN0cnVjdG9yIGZvciBlYWNoIGNvbXBvbmVudCBpcyBkZWZpbmVkIGluIHRoZQorICAgICAgY2FsbGJhY2sgcG9pbnRlcnMuICBIZW5jZSwgeW91IGRvbid0IG5lZWQgdG8gdGFrZSBjYXJlIG9mCisgICAgICBjYWxsaW5nIGEgZGVzdHJ1Y3RvciBmb3Igc3VjaCBhIGNvbXBvbmVudC4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIElmIHlvdSB3aXNoIHRvIGNyZWF0ZSB5b3VyIG93biBjb21wb25lbnQsIHlvdSBuZWVkIHRvCisgICAgICBzZXQgdGhlIGRlc3RydWN0b3IgZnVuY3Rpb24gdG8gdGhlIGRldl9mcmVlIGNhbGxiYWNrIGluCisgICAgICB0aGUgPHBhcmFtZXRlcj5vcHM8L3BhcmFtZXRlcj4sIHNvIHRoYXQgaXQgY2FuIGJlIHJlbGVhc2VkCisgICAgICBhdXRvbWF0aWNhbGx5IHZpYSA8ZnVuY3Rpb24+c25kX2NhcmRfZnJlZSgpPC9mdW5jdGlvbj4uCisgICAgICBUaGUgbmV4dCBleGFtcGxlIHdpbGwgc2hvdyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBjaGlwLXNwZWNpZmljCisgICAgICBkYXRhLgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJjYXJkLW1hbmFnZW1lbnQtY2hpcC1zcGVjaWZpYyI+CisgICAgICA8dGl0bGU+Q2hpcC1TcGVjaWZpYyBEYXRhPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgQ2hpcC1zcGVjaWZpYyBpbmZvcm1hdGlvbiwgZS5nLiB0aGUgSS9PIHBvcnQgYWRkcmVzcywgaXRzCisgICAgICByZXNvdXJjZSBwb2ludGVyLCBvciB0aGUgaXJxIG51bWJlciwgaXMgc3RvcmVkIGluIHRoZQorICAgICAgY2hpcC1zcGVjaWZpYyByZWNvcmQuCisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RydWN0IG15Y2hpcCB7CisgICAgICAgICAgLi4uLgorICB9OworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBJbiBnZW5lcmFsLCB0aGVyZSBhcmUgdHdvIHdheXMgb2YgYWxsb2NhdGluZyB0aGUgY2hpcCByZWNvcmQuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxzZWN0aW9uIGlkPSJjYXJkLW1hbmFnZW1lbnQtY2hpcC1zcGVjaWZpYy1zbmQtY2FyZC1uZXciPgorICAgICAgICA8dGl0bGU+MS4gQWxsb2NhdGluZyB2aWEgPGZ1bmN0aW9uPnNuZF9jYXJkX25ldygpPC9mdW5jdGlvbj4uPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgQXMgbWVudGlvbmVkIGFib3ZlLCB5b3UgY2FuIHBhc3MgdGhlIGV4dHJhLWRhdGEtbGVuZ3RoCisJICB0byB0aGUgNXRoIGFyZ3VtZW50IG9mIDxmdW5jdGlvbj5zbmRfY2FyZF9uZXcoKTwvZnVuY3Rpb24+LCBpLmUuCisKKyAgICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIGVyciA9IHNuZF9jYXJkX25ldygmcGNpLT5kZXYsIGluZGV4W2Rldl0sIGlkW2Rldl0sIFRISVNfTU9EVUxFLAorICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBteWNoaXApLCAmY2FyZCk7CitdXT4KKyAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisKKyAgICAgICAgICBzdHJ1Y3QgPHN0cnVjdG5hbWU+bXljaGlwPC9zdHJ1Y3RuYW1lPiBpcyB0aGUgdHlwZSBvZiB0aGUgY2hpcCByZWNvcmQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJbiByZXR1cm4sIHRoZSBhbGxvY2F0ZWQgcmVjb3JkIGNhbiBiZSBhY2Nlc3NlZCBhcworCisgICAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdHJ1Y3QgbXljaGlwICpjaGlwID0gY2FyZC0+cHJpdmF0ZV9kYXRhOworXV0+CisgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCisgICAgICAgICAgV2l0aCB0aGlzIG1ldGhvZCwgeW91IGRvbid0IGhhdmUgdG8gYWxsb2NhdGUgdHdpY2UuCisgICAgICAgICAgVGhlIHJlY29yZCBpcyByZWxlYXNlZCB0b2dldGhlciB3aXRoIHRoZSBjYXJkIGluc3RhbmNlLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3Rpb24+CisKKyAgICAgIDxzZWN0aW9uIGlkPSJjYXJkLW1hbmFnZW1lbnQtY2hpcC1zcGVjaWZpYy1hbGxvY2F0ZS1leHRyYSI+CisgICAgICAgIDx0aXRsZT4yLiBBbGxvY2F0aW5nIGFuIGV4dHJhIGRldmljZS48L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEFmdGVyIGFsbG9jYXRpbmcgYSBjYXJkIGluc3RhbmNlIHZpYQorICAgICAgICAgIDxmdW5jdGlvbj5zbmRfY2FyZF9uZXcoKTwvZnVuY3Rpb24+ICh3aXRoCisgICAgICAgICAgPGNvbnN0YW50PjA8L2NvbnN0YW50PiBvbiB0aGUgNHRoIGFyZyksIGNhbGwKKyAgICAgICAgICA8ZnVuY3Rpb24+a3phbGxvYygpPC9mdW5jdGlvbj4uIAorCisgICAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQ7CisgIHN0cnVjdCBteWNoaXAgKmNoaXA7CisgIGVyciA9IHNuZF9jYXJkX25ldygmcGNpLT5kZXYsIGluZGV4W2Rldl0sIGlkW2Rldl0sIFRISVNfTU9EVUxFLAorICAgICAgICAgICAgICAgICAgICAgMCwgJmNhcmQpOworICAuLi4uLgorICBjaGlwID0ga3phbGxvYyhzaXplb2YoKmNoaXApLCBHRlBfS0VSTkVMKTsKK11dPgorICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBjaGlwIHJlY29yZCBzaG91bGQgaGF2ZSB0aGUgZmllbGQgdG8gaG9sZCB0aGUgY2FyZAorICAgICAgICAgIHBvaW50ZXIgYXQgbGVhc3QsIAorCisgICAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdHJ1Y3QgbXljaGlwIHsKKyAgICAgICAgICBzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQ7CisgICAgICAgICAgLi4uLgorICB9OworXV0+CisgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlbiwgc2V0IHRoZSBjYXJkIHBvaW50ZXIgaW4gdGhlIHJldHVybmVkIGNoaXAgaW5zdGFuY2UuCisKKyAgICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIGNoaXAtPmNhcmQgPSBjYXJkOworXV0+CisgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgTmV4dCwgaW5pdGlhbGl6ZSB0aGUgZmllbGRzLCBhbmQgcmVnaXN0ZXIgdGhpcyBjaGlwCisgICAgICAgICAgcmVjb3JkIGFzIGEgbG93LWxldmVsIGRldmljZSB3aXRoIGEgc3BlY2lmaWVkCisgICAgICAgICAgPHBhcmFtZXRlcj5vcHM8L3BhcmFtZXRlcj4sIAorCisgICAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdGF0aWMgc3RydWN0IHNuZF9kZXZpY2Vfb3BzIG9wcyA9IHsKKyAgICAgICAgICAuZGV2X2ZyZWUgPSAgICAgICAgc25kX215Y2hpcF9kZXZfZnJlZSwKKyAgfTsKKyAgLi4uLgorICBzbmRfZGV2aWNlX25ldyhjYXJkLCBTTkRSVl9ERVZfTE9XTEVWRUwsIGNoaXAsICZvcHMpOworXV0+CisgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCisgICAgICAgICAgPGZ1bmN0aW9uPnNuZF9teWNoaXBfZGV2X2ZyZWUoKTwvZnVuY3Rpb24+IGlzIHRoZQorICAgICAgICBkZXZpY2UtZGVzdHJ1Y3RvciBmdW5jdGlvbiwgd2hpY2ggd2lsbCBjYWxsIHRoZSByZWFsCisgICAgICAgIGRlc3RydWN0b3IuIAorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdGF0aWMgaW50IHNuZF9teWNoaXBfZGV2X2ZyZWUoc3RydWN0IHNuZF9kZXZpY2UgKmRldmljZSkKKyAgeworICAgICAgICAgIHJldHVybiBzbmRfbXljaGlwX2ZyZWUoZGV2aWNlLT5kZXZpY2VfZGF0YSk7CisgIH0KK11dPgorICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworICAgICAgICAgIHdoZXJlIDxmdW5jdGlvbj5zbmRfbXljaGlwX2ZyZWUoKTwvZnVuY3Rpb24+IGlzIHRoZSByZWFsIGRlc3RydWN0b3IuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iY2FyZC1tYW5hZ2VtZW50LXJlZ2lzdHJhdGlvbiI+CisgICAgICA8dGl0bGU+UmVnaXN0cmF0aW9uIGFuZCBSZWxlYXNlPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBBZnRlciBhbGwgY29tcG9uZW50cyBhcmUgYXNzaWduZWQsIHJlZ2lzdGVyIHRoZSBjYXJkIGluc3RhbmNlCisgICAgICBieSBjYWxsaW5nIDxmdW5jdGlvbj5zbmRfY2FyZF9yZWdpc3RlcigpPC9mdW5jdGlvbj4uIEFjY2VzcworICAgICAgdG8gdGhlIGRldmljZSBmaWxlcyBpcyBlbmFibGVkIGF0IHRoaXMgcG9pbnQuIFRoYXQgaXMsIGJlZm9yZQorICAgICAgPGZ1bmN0aW9uPnNuZF9jYXJkX3JlZ2lzdGVyKCk8L2Z1bmN0aW9uPiBpcyBjYWxsZWQsIHRoZQorICAgICAgY29tcG9uZW50cyBhcmUgc2FmZWx5IGluYWNjZXNzaWJsZSBmcm9tIGV4dGVybmFsIHNpZGUuIElmIHRoaXMKKyAgICAgIGNhbGwgZmFpbHMsIGV4aXQgdGhlIHByb2JlIGZ1bmN0aW9uIGFmdGVyIHJlbGVhc2luZyB0aGUgY2FyZCB2aWEKKyAgICAgIDxmdW5jdGlvbj5zbmRfY2FyZF9mcmVlKCk8L2Z1bmN0aW9uPi4gCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBGb3IgcmVsZWFzaW5nIHRoZSBjYXJkIGluc3RhbmNlLCB5b3UgY2FuIGNhbGwgc2ltcGx5CisgICAgICA8ZnVuY3Rpb24+c25kX2NhcmRfZnJlZSgpPC9mdW5jdGlvbj4uIEFzIG1lbnRpb25lZCBlYXJsaWVyLCBhbGwKKyAgICAgIGNvbXBvbmVudHMgYXJlIHJlbGVhc2VkIGF1dG9tYXRpY2FsbHkgYnkgdGhpcyBjYWxsLiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICBGb3IgYSBkZXZpY2Ugd2hpY2ggYWxsb3dzIGhvdHBsdWdnaW5nLCB5b3UgY2FuIHVzZQorICAgICAgPGZ1bmN0aW9uPnNuZF9jYXJkX2ZyZWVfd2hlbl9jbG9zZWQ8L2Z1bmN0aW9uPi4gIFRoaXMgb25lIHdpbGwKKyAgICAgIHBvc3Rwb25lIHRoZSBkZXN0cnVjdGlvbiB1bnRpbCBhbGwgZGV2aWNlcyBhcmUgY2xvc2VkLgorICAgICAgPC9wYXJhPgorCisgICAgPC9zZWN0aW9uPgorCisgIDwvY2hhcHRlcj4KKworCis8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT4KKzwhLS0gUENJIFJlc291cmNlIE1hbmFnZW1lbnQgIC0tPgorPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+CisgIDxjaGFwdGVyIGlkPSJwY2ktcmVzb3VyY2UiPgorICAgIDx0aXRsZT5QQ0kgUmVzb3VyY2UgTWFuYWdlbWVudDwvdGl0bGU+CisKKyAgICA8c2VjdGlvbiBpZD0icGNpLXJlc291cmNlLWV4YW1wbGUiPgorICAgICAgPHRpdGxlPkZ1bGwgQ29kZSBFeGFtcGxlPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBJbiB0aGlzIHNlY3Rpb24sIHdlJ2xsIGNvbXBsZXRlIHRoZSBjaGlwLXNwZWNpZmljIGNvbnN0cnVjdG9yLAorICAgICAgZGVzdHJ1Y3RvciBhbmQgUENJIGVudHJpZXMuIEV4YW1wbGUgY29kZSBpcyBzaG93biBmaXJzdCwKKyAgICAgIGJlbG93LiAKKworICAgICAgICA8ZXhhbXBsZT4KKyAgICAgICAgICA8dGl0bGU+UENJIFJlc291cmNlIE1hbmFnZW1lbnQgRXhhbXBsZTwvdGl0bGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0cnVjdCBteWNoaXAgeworICAgICAgICAgIHN0cnVjdCBzbmRfY2FyZCAqY2FyZDsKKyAgICAgICAgICBzdHJ1Y3QgcGNpX2RldiAqcGNpOworCisgICAgICAgICAgdW5zaWduZWQgbG9uZyBwb3J0OworICAgICAgICAgIGludCBpcnE7CisgIH07CisKKyAgc3RhdGljIGludCBzbmRfbXljaGlwX2ZyZWUoc3RydWN0IG15Y2hpcCAqY2hpcCkKKyAgeworICAgICAgICAgIC8qIGRpc2FibGUgaGFyZHdhcmUgaGVyZSBpZiBhbnkgKi8KKyAgICAgICAgICAuLi4uIC8qIChub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBkb2N1bWVudCkgKi8KKworICAgICAgICAgIC8qIHJlbGVhc2UgdGhlIGlycSAqLworICAgICAgICAgIGlmIChjaGlwLT5pcnEgPj0gMCkKKyAgICAgICAgICAgICAgICAgIGZyZWVfaXJxKGNoaXAtPmlycSwgY2hpcCk7CisgICAgICAgICAgLyogcmVsZWFzZSB0aGUgSS9PIHBvcnRzICYgbWVtb3J5ICovCisgICAgICAgICAgcGNpX3JlbGVhc2VfcmVnaW9ucyhjaGlwLT5wY2kpOworICAgICAgICAgIC8qIGRpc2FibGUgdGhlIFBDSSBlbnRyeSAqLworICAgICAgICAgIHBjaV9kaXNhYmxlX2RldmljZShjaGlwLT5wY2kpOworICAgICAgICAgIC8qIHJlbGVhc2UgdGhlIGRhdGEgKi8KKyAgICAgICAgICBrZnJlZShjaGlwKTsKKyAgICAgICAgICByZXR1cm4gMDsKKyAgfQorCisgIC8qIGNoaXAtc3BlY2lmaWMgY29uc3RydWN0b3IgKi8KKyAgc3RhdGljIGludCBzbmRfbXljaGlwX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBjaV9kZXYgKnBjaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbXljaGlwICoqcmNoaXApCisgIHsKKyAgICAgICAgICBzdHJ1Y3QgbXljaGlwICpjaGlwOworICAgICAgICAgIGludCBlcnI7CisgICAgICAgICAgc3RhdGljIHN0cnVjdCBzbmRfZGV2aWNlX29wcyBvcHMgPSB7CisgICAgICAgICAgICAgICAgIC5kZXZfZnJlZSA9IHNuZF9teWNoaXBfZGV2X2ZyZWUsCisgICAgICAgICAgfTsKKworICAgICAgICAgICpyY2hpcCA9IE5VTEw7CisKKyAgICAgICAgICAvKiBpbml0aWFsaXplIHRoZSBQQ0kgZW50cnkgKi8KKyAgICAgICAgICBlcnIgPSBwY2lfZW5hYmxlX2RldmljZShwY2kpOworICAgICAgICAgIGlmIChlcnIgPCAwKQorICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICAgICAgICAvKiBjaGVjayBQQ0kgYXZhaWxhYmlsaXR5ICgyOGJpdCBETUEpICovCisgICAgICAgICAgaWYgKHBjaV9zZXRfZG1hX21hc2socGNpLCBETUFfQklUX01BU0soMjgpKSA8IDAgfHwKKyAgICAgICAgICAgICAgcGNpX3NldF9jb25zaXN0ZW50X2RtYV9tYXNrKHBjaSwgRE1BX0JJVF9NQVNLKDI4KSkgPCAwKSB7CisgICAgICAgICAgICAgICAgICBwcmludGsoS0VSTl9FUlIgImVycm9yIHRvIHNldCAyOGJpdCBtYXNrIERNQVxuIik7CisgICAgICAgICAgICAgICAgICBwY2lfZGlzYWJsZV9kZXZpY2UocGNpKTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5YSU87CisgICAgICAgICAgfQorCisgICAgICAgICAgY2hpcCA9IGt6YWxsb2Moc2l6ZW9mKCpjaGlwKSwgR0ZQX0tFUk5FTCk7CisgICAgICAgICAgaWYgKGNoaXAgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgcGNpX2Rpc2FibGVfZGV2aWNlKHBjaSk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICAvKiBpbml0aWFsaXplIHRoZSBzdHVmZiAqLworICAgICAgICAgIGNoaXAtPmNhcmQgPSBjYXJkOworICAgICAgICAgIGNoaXAtPnBjaSA9IHBjaTsKKyAgICAgICAgICBjaGlwLT5pcnEgPSAtMTsKKworICAgICAgICAgIC8qICgxKSBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvbiAqLworICAgICAgICAgIGVyciA9IHBjaV9yZXF1ZXN0X3JlZ2lvbnMocGNpLCAiTXkgQ2hpcCIpOworICAgICAgICAgIGlmIChlcnIgPCAwKSB7CisgICAgICAgICAgICAgICAgICBrZnJlZShjaGlwKTsKKyAgICAgICAgICAgICAgICAgIHBjaV9kaXNhYmxlX2RldmljZShwY2kpOworICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICAgICAgICB9CisgICAgICAgICAgY2hpcC0+cG9ydCA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApOworICAgICAgICAgIGlmIChyZXF1ZXN0X2lycShwY2ktPmlycSwgc25kX215Y2hpcF9pbnRlcnJ1cHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIElSUUZfU0hBUkVELCBLQlVJTERfTU9ETkFNRSwgY2hpcCkpIHsKKyAgICAgICAgICAgICAgICAgIHByaW50ayhLRVJOX0VSUiAiY2Fubm90IGdyYWIgaXJxICVkXG4iLCBwY2ktPmlycSk7CisgICAgICAgICAgICAgICAgICBzbmRfbXljaGlwX2ZyZWUoY2hpcCk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gLUVCVVNZOworICAgICAgICAgIH0KKyAgICAgICAgICBjaGlwLT5pcnEgPSBwY2ktPmlycTsKKworICAgICAgICAgIC8qICgyKSBpbml0aWFsaXphdGlvbiBvZiB0aGUgY2hpcCBoYXJkd2FyZSAqLworICAgICAgICAgIC4uLi4gLyogICAobm90IGltcGxlbWVudGVkIGluIHRoaXMgZG9jdW1lbnQpICovCisKKyAgICAgICAgICBlcnIgPSBzbmRfZGV2aWNlX25ldyhjYXJkLCBTTkRSVl9ERVZfTE9XTEVWRUwsIGNoaXAsICZvcHMpOworICAgICAgICAgIGlmIChlcnIgPCAwKSB7CisgICAgICAgICAgICAgICAgICBzbmRfbXljaGlwX2ZyZWUoY2hpcCk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOworICAgICAgICAgIH0KKworICAgICAgICAgICpyY2hpcCA9IGNoaXA7CisgICAgICAgICAgcmV0dXJuIDA7CisgIH0gICAgICAgIAorCisgIC8qIFBDSSBJRHMgKi8KKyAgc3RhdGljIHN0cnVjdCBwY2lfZGV2aWNlX2lkIHNuZF9teWNoaXBfaWRzW10gPSB7CisgICAgICAgICAgeyBQQ0lfVkVORE9SX0lEX0ZPTywgUENJX0RFVklDRV9JRF9CQVIsCisgICAgICAgICAgICBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCAwLCB9LAorICAgICAgICAgIC4uLi4KKyAgICAgICAgICB7IDAsIH0KKyAgfTsKKyAgTU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHNuZF9teWNoaXBfaWRzKTsKKworICAvKiBwY2lfZHJpdmVyIGRlZmluaXRpb24gKi8KKyAgc3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGRyaXZlciA9IHsKKyAgICAgICAgICAubmFtZSA9IEtCVUlMRF9NT0ROQU1FLAorICAgICAgICAgIC5pZF90YWJsZSA9IHNuZF9teWNoaXBfaWRzLAorICAgICAgICAgIC5wcm9iZSA9IHNuZF9teWNoaXBfcHJvYmUsCisgICAgICAgICAgLnJlbW92ZSA9IHNuZF9teWNoaXBfcmVtb3ZlLAorICB9OworCisgIC8qIG1vZHVsZSBpbml0aWFsaXphdGlvbiAqLworICBzdGF0aWMgaW50IF9faW5pdCBhbHNhX2NhcmRfbXljaGlwX2luaXQodm9pZCkKKyAgeworICAgICAgICAgIHJldHVybiBwY2lfcmVnaXN0ZXJfZHJpdmVyKCZkcml2ZXIpOworICB9CisKKyAgLyogbW9kdWxlIGNsZWFuIHVwICovCisgIHN0YXRpYyB2b2lkIF9fZXhpdCBhbHNhX2NhcmRfbXljaGlwX2V4aXQodm9pZCkKKyAgeworICAgICAgICAgIHBjaV91bnJlZ2lzdGVyX2RyaXZlcigmZHJpdmVyKTsKKyAgfQorCisgIG1vZHVsZV9pbml0KGFsc2FfY2FyZF9teWNoaXBfaW5pdCkKKyAgbW9kdWxlX2V4aXQoYWxzYV9jYXJkX215Y2hpcF9leGl0KQorCisgIEVYUE9SVF9OT19TWU1CT0xTOyAvKiBmb3Igb2xkIGtlcm5lbHMgb25seSAqLworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9leGFtcGxlPgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJwY2ktcmVzb3VyY2Utc29tZS1oYWZ0YXMiPgorICAgICAgPHRpdGxlPlNvbWUgSGFmdGEnczwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGFsbG9jYXRpb24gb2YgUENJIHJlc291cmNlcyBpcyBkb25lIGluIHRoZQorICAgICAgPGZ1bmN0aW9uPnByb2JlKCk8L2Z1bmN0aW9uPiBmdW5jdGlvbiwgYW5kIHVzdWFsbHkgYW4gZXh0cmEKKyAgICAgIDxmdW5jdGlvbj54eHhfY3JlYXRlKCk8L2Z1bmN0aW9uPiBmdW5jdGlvbiBpcyB3cml0dGVuIGZvciB0aGlzCisgICAgICBwdXJwb3NlLgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgSW4gdGhlIGNhc2Ugb2YgUENJIGRldmljZXMsIHlvdSBmaXJzdCBoYXZlIHRvIGNhbGwKKyAgICAgIHRoZSA8ZnVuY3Rpb24+cGNpX2VuYWJsZV9kZXZpY2UoKTwvZnVuY3Rpb24+IGZ1bmN0aW9uIGJlZm9yZQorICAgICAgYWxsb2NhdGluZyByZXNvdXJjZXMuIEFsc28sIHlvdSBuZWVkIHRvIHNldCB0aGUgcHJvcGVyIFBDSSBETUEKKyAgICAgIG1hc2sgdG8gbGltaXQgdGhlIGFjY2Vzc2VkIEkvTyByYW5nZS4gSW4gc29tZSBjYXNlcywgeW91IG1pZ2h0CisgICAgICBuZWVkIHRvIGNhbGwgPGZ1bmN0aW9uPnBjaV9zZXRfbWFzdGVyKCk8L2Z1bmN0aW9uPiBmdW5jdGlvbiwKKyAgICAgIHRvby4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFN1cHBvc2UgdGhlIDI4Yml0IG1hc2ssIGFuZCB0aGUgY29kZSB0byBiZSBhZGRlZCB3b3VsZCBiZSBsaWtlOgorCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIGVyciA9IHBjaV9lbmFibGVfZGV2aWNlKHBjaSk7CisgIGlmIChlcnIgPCAwKQorICAgICAgICAgIHJldHVybiBlcnI7CisgIGlmIChwY2lfc2V0X2RtYV9tYXNrKHBjaSwgRE1BX0JJVF9NQVNLKDI4KSkgPCAwIHx8CisgICAgICBwY2lfc2V0X2NvbnNpc3RlbnRfZG1hX21hc2socGNpLCBETUFfQklUX01BU0soMjgpKSA8IDApIHsKKyAgICAgICAgICBwcmludGsoS0VSTl9FUlIgImVycm9yIHRvIHNldCAyOGJpdCBtYXNrIERNQVxuIik7CisgICAgICAgICAgcGNpX2Rpc2FibGVfZGV2aWNlKHBjaSk7CisgICAgICAgICAgcmV0dXJuIC1FTlhJTzsKKyAgfQorICAKK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJwY2ktcmVzb3VyY2UtcmVzb3VyY2UtYWxsb2NhdGlvbiI+CisgICAgICA8dGl0bGU+UmVzb3VyY2UgQWxsb2NhdGlvbjwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGFsbG9jYXRpb24gb2YgSS9PIHBvcnRzIGFuZCBpcnFzIGlzIGRvbmUgdmlhIHN0YW5kYXJkIGtlcm5lbAorICAgICAgZnVuY3Rpb25zLiBVbmxpa2UgQUxTQSB2ZXIuMC41LnguLCB0aGVyZSBhcmUgbm8gaGVscGVycyBmb3IKKyAgICAgIHRoYXQuIEFuZCB0aGVzZSByZXNvdXJjZXMgbXVzdCBiZSByZWxlYXNlZCBpbiB0aGUgZGVzdHJ1Y3RvcgorICAgICAgZnVuY3Rpb24gKHNlZSBiZWxvdykuIEFsc28sIG9uIEFMU0EgMC45LngsIHlvdSBkb24ndCBuZWVkIHRvCisgICAgICBhbGxvY2F0ZSAocHNldWRvLSlETUEgZm9yIFBDSSBsaWtlIGluIEFMU0EgMC41LnguCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBOb3cgYXNzdW1lIHRoYXQgdGhlIFBDSSBkZXZpY2UgaGFzIGFuIEkvTyBwb3J0IHdpdGggOCBieXRlcworICAgICAgICBhbmQgYW4gaW50ZXJydXB0LiBUaGVuIHN0cnVjdCA8c3RydWN0bmFtZT5teWNoaXA8L3N0cnVjdG5hbWU+IHdpbGwgaGF2ZSB0aGUKKyAgICAgICAgZm9sbG93aW5nIGZpZWxkczoKKworICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdHJ1Y3QgbXljaGlwIHsKKyAgICAgICAgICBzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQ7CisKKyAgICAgICAgICB1bnNpZ25lZCBsb25nIHBvcnQ7CisgICAgICAgICAgaW50IGlycTsKKyAgfTsKK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgRm9yIGFuIEkvTyBwb3J0IChhbmQgYWxzbyBhIG1lbW9yeSByZWdpb24pLCB5b3UgbmVlZCB0byBoYXZlCisgICAgICB0aGUgcmVzb3VyY2UgcG9pbnRlciBmb3IgdGhlIHN0YW5kYXJkIHJlc291cmNlIG1hbmFnZW1lbnQuIEZvcgorICAgICAgYW4gaXJxLCB5b3UgaGF2ZSB0byBrZWVwIG9ubHkgdGhlIGlycSBudW1iZXIgKGludGVnZXIpLiBCdXQgeW91CisgICAgICBuZWVkIHRvIGluaXRpYWxpemUgdGhpcyBudW1iZXIgYXMgLTEgYmVmb3JlIGFjdHVhbCBhbGxvY2F0aW9uLAorICAgICAgc2luY2UgaXJxIDAgaXMgdmFsaWQuIFRoZSBwb3J0IGFkZHJlc3MgYW5kIGl0cyByZXNvdXJjZSBwb2ludGVyCisgICAgICBjYW4gYmUgaW5pdGlhbGl6ZWQgYXMgbnVsbCBieQorICAgICAgPGZ1bmN0aW9uPmt6YWxsb2MoKTwvZnVuY3Rpb24+IGF1dG9tYXRpY2FsbHksIHNvIHlvdQorICAgICAgZG9uJ3QgaGF2ZSB0byB0YWtlIGNhcmUgb2YgcmVzZXR0aW5nIHRoZW0uIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGFsbG9jYXRpb24gb2YgYW4gSS9PIHBvcnQgaXMgZG9uZSBsaWtlIHRoaXM6CisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgZXJyID0gcGNpX3JlcXVlc3RfcmVnaW9ucyhwY2ksICJNeSBDaGlwIik7CisgIGlmIChlcnIgPCAwKSB7IAorICAgICAgICAgIGtmcmVlKGNoaXApOworICAgICAgICAgIHBjaV9kaXNhYmxlX2RldmljZShwY2kpOworICAgICAgICAgIHJldHVybiBlcnI7CisgIH0KKyAgY2hpcC0+cG9ydCA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApOworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICA8IS0tIG9ic29sZXRlIC0tPgorICAgICAgICBJdCB3aWxsIHJlc2VydmUgdGhlIEkvTyBwb3J0IHJlZ2lvbiBvZiA4IGJ5dGVzIG9mIHRoZSBnaXZlbgorICAgICAgUENJIGRldmljZS4gVGhlIHJldHVybmVkIHZhbHVlLCBjaGlwLSZndDtyZXNfcG9ydCwgaXMgYWxsb2NhdGVkCisgICAgICB2aWEgPGZ1bmN0aW9uPmttYWxsb2MoKTwvZnVuY3Rpb24+IGJ5CisgICAgICA8ZnVuY3Rpb24+cmVxdWVzdF9yZWdpb24oKTwvZnVuY3Rpb24+LiBUaGUgcG9pbnRlciBtdXN0IGJlCisgICAgICByZWxlYXNlZCB2aWEgPGZ1bmN0aW9uPmtmcmVlKCk8L2Z1bmN0aW9uPiwgYnV0IHRoZXJlIGlzIGEKKyAgICAgIHByb2JsZW0gd2l0aCB0aGlzLiBUaGlzIGlzc3VlIHdpbGwgYmUgZXhwbGFpbmVkIGxhdGVyLgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGFsbG9jYXRpb24gb2YgYW4gaW50ZXJydXB0IHNvdXJjZSBpcyBkb25lIGxpa2UgdGhpczoKKworICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBpZiAocmVxdWVzdF9pcnEocGNpLT5pcnEsIHNuZF9teWNoaXBfaW50ZXJydXB0LAorICAgICAgICAgICAgICAgICAgSVJRRl9TSEFSRUQsIEtCVUlMRF9NT0ROQU1FLCBjaGlwKSkgeworICAgICAgICAgIHByaW50ayhLRVJOX0VSUiAiY2Fubm90IGdyYWIgaXJxICVkXG4iLCBwY2ktPmlycSk7CisgICAgICAgICAgc25kX215Y2hpcF9mcmVlKGNoaXApOworICAgICAgICAgIHJldHVybiAtRUJVU1k7CisgIH0KKyAgY2hpcC0+aXJxID0gcGNpLT5pcnE7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworICAgICAgICB3aGVyZSA8ZnVuY3Rpb24+c25kX215Y2hpcF9pbnRlcnJ1cHQoKTwvZnVuY3Rpb24+IGlzIHRoZQorICAgICAgaW50ZXJydXB0IGhhbmRsZXIgZGVmaW5lZCA8bGluaworICAgICAgbGlua2VuZD0icGNtLWludGVyZmFjZS1pbnRlcnJ1cHQtaGFuZGxlciI+PGNpdGV0aXRsZT5sYXRlcjwvY2l0ZXRpdGxlPjwvbGluaz4uCisgICAgICBOb3RlIHRoYXQgY2hpcC0mZ3Q7aXJxIHNob3VsZCBiZSBkZWZpbmVkCisgICAgICBvbmx5IHdoZW4gPGZ1bmN0aW9uPnJlcXVlc3RfaXJxKCk8L2Z1bmN0aW9uPiBzdWNjZWVkZWQuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgT24gdGhlIFBDSSBidXMsIGludGVycnVwdHMgY2FuIGJlIHNoYXJlZC4gVGh1cywKKyAgICAgIDxjb25zdGFudD5JUlFGX1NIQVJFRDwvY29uc3RhbnQ+IGlzIHVzZWQgYXMgdGhlIGludGVycnVwdCBmbGFnIG9mCisgICAgICA8ZnVuY3Rpb24+cmVxdWVzdF9pcnEoKTwvZnVuY3Rpb24+LiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBsYXN0IGFyZ3VtZW50IG9mIDxmdW5jdGlvbj5yZXF1ZXN0X2lycSgpPC9mdW5jdGlvbj4gaXMgdGhlCisgICAgICBkYXRhIHBvaW50ZXIgcGFzc2VkIHRvIHRoZSBpbnRlcnJ1cHQgaGFuZGxlci4gVXN1YWxseSwgdGhlCisgICAgICBjaGlwLXNwZWNpZmljIHJlY29yZCBpcyB1c2VkIGZvciB0aGF0LCBidXQgeW91IGNhbiB1c2Ugd2hhdCB5b3UKKyAgICAgIGxpa2UsIHRvby4gCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBJIHdvbid0IGdpdmUgZGV0YWlscyBhYm91dCB0aGUgaW50ZXJydXB0IGhhbmRsZXIgYXQgdGhpcworICAgICAgICBwb2ludCwgYnV0IGF0IGxlYXN0IGl0cyBhcHBlYXJhbmNlIGNhbiBiZSBleHBsYWluZWQgbm93LiBUaGUKKyAgICAgICAgaW50ZXJydXB0IGhhbmRsZXIgbG9va3MgdXN1YWxseSBsaWtlIHRoZSBmb2xsb3dpbmc6IAorCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0YXRpYyBpcnFyZXR1cm5fdCBzbmRfbXljaGlwX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQpCisgIHsKKyAgICAgICAgICBzdHJ1Y3QgbXljaGlwICpjaGlwID0gZGV2X2lkOworICAgICAgICAgIC4uLi4KKyAgICAgICAgICByZXR1cm4gSVJRX0hBTkRMRUQ7CisgIH0KK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgTm93IGxldCdzIHdyaXRlIHRoZSBjb3JyZXNwb25kaW5nIGRlc3RydWN0b3IgZm9yIHRoZSByZXNvdXJjZXMKKyAgICAgIGFib3ZlLiBUaGUgcm9sZSBvZiBkZXN0cnVjdG9yIGlzIHNpbXBsZTogZGlzYWJsZSB0aGUgaGFyZHdhcmUKKyAgICAgIChpZiBhbHJlYWR5IGFjdGl2YXRlZCkgYW5kIHJlbGVhc2UgdGhlIHJlc291cmNlcy4gU28gZmFyLCB3ZQorICAgICAgaGF2ZSBubyBoYXJkd2FyZSBwYXJ0LCBzbyB0aGUgZGlzYWJsaW5nIGNvZGUgaXMgbm90IHdyaXR0ZW4gaGVyZS4gCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBUbyByZWxlYXNlIHRoZSByZXNvdXJjZXMsIHRoZSA8cXVvdGU+Y2hlY2stYW5kLXJlbGVhc2U8L3F1b3RlPgorICAgICAgICBtZXRob2QgaXMgYSBzYWZlciB3YXkuIEZvciB0aGUgaW50ZXJydXB0LCBkbyBsaWtlIHRoaXM6IAorCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIGlmIChjaGlwLT5pcnEgPj0gMCkKKyAgICAgICAgICBmcmVlX2lycShjaGlwLT5pcnEsIGNoaXApOworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisKKyAgICAgICAgU2luY2UgdGhlIGlycSBudW1iZXIgY2FuIHN0YXJ0IGZyb20gMCwgeW91IHNob3VsZCBpbml0aWFsaXplCisgICAgICAgIGNoaXAtJmd0O2lycSB3aXRoIGEgbmVnYXRpdmUgdmFsdWUgKGUuZy4gLTEpLCBzbyB0aGF0IHlvdSBjYW4KKyAgICAgICAgY2hlY2sgdGhlIHZhbGlkaXR5IG9mIHRoZSBpcnEgbnVtYmVyIGFzIGFib3ZlLgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgV2hlbiB5b3UgcmVxdWVzdGVkIEkvTyBwb3J0cyBvciBtZW1vcnkgcmVnaW9ucyB2aWEKKwk8ZnVuY3Rpb24+cGNpX3JlcXVlc3RfcmVnaW9uKCk8L2Z1bmN0aW9uPiBvcgorCTxmdW5jdGlvbj5wY2lfcmVxdWVzdF9yZWdpb25zKCk8L2Z1bmN0aW9uPiBsaWtlIGluIHRoaXMgZXhhbXBsZSwKKwlyZWxlYXNlIHRoZSByZXNvdXJjZShzKSB1c2luZyB0aGUgY29ycmVzcG9uZGluZyBmdW5jdGlvbiwKKwk8ZnVuY3Rpb24+cGNpX3JlbGVhc2VfcmVnaW9uKCk8L2Z1bmN0aW9uPiBvcgorCTxmdW5jdGlvbj5wY2lfcmVsZWFzZV9yZWdpb25zKCk8L2Z1bmN0aW9uPi4KKworICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBwY2lfcmVsZWFzZV9yZWdpb25zKGNoaXAtPnBjaSk7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisJV2hlbiB5b3UgcmVxdWVzdGVkIG1hbnVhbGx5IHZpYSA8ZnVuY3Rpb24+cmVxdWVzdF9yZWdpb24oKTwvZnVuY3Rpb24+CisJb3IgPGZ1bmN0aW9uPnJlcXVlc3RfbWVtX3JlZ2lvbjwvZnVuY3Rpb24+LCB5b3UgY2FuIHJlbGVhc2UgaXQgdmlhCisJPGZ1bmN0aW9uPnJlbGVhc2VfcmVzb3VyY2UoKTwvZnVuY3Rpb24+LiAgU3VwcG9zZSB0aGF0IHlvdSBrZWVwCisJdGhlIHJlc291cmNlIHBvaW50ZXIgcmV0dXJuZWQgZnJvbSA8ZnVuY3Rpb24+cmVxdWVzdF9yZWdpb24oKTwvZnVuY3Rpb24+CisJaW4gY2hpcC0mZ3Q7cmVzX3BvcnQsIHRoZSByZWxlYXNlIHByb2NlZHVyZSBsb29rcyBsaWtlOgorCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHJlbGVhc2VfYW5kX2ZyZWVfcmVzb3VyY2UoY2hpcC0+cmVzX3BvcnQpOworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgRG9uJ3QgZm9yZ2V0IHRvIGNhbGwgPGZ1bmN0aW9uPnBjaV9kaXNhYmxlX2RldmljZSgpPC9mdW5jdGlvbj4KKyAgICAgIGJlZm9yZSB0aGUgZW5kLgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgQW5kIGZpbmFsbHksIHJlbGVhc2UgdGhlIGNoaXAtc3BlY2lmaWMgcmVjb3JkLgorCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIGtmcmVlKGNoaXApOworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgV2UgZGlkbid0IGltcGxlbWVudCB0aGUgaGFyZHdhcmUgZGlzYWJsaW5nIHBhcnQgaW4gdGhlIGFib3ZlLgorICAgICAgSWYgeW91IG5lZWQgdG8gZG8gdGhpcywgcGxlYXNlIG5vdGUgdGhhdCB0aGUgZGVzdHJ1Y3RvciBtYXkgYmUKKyAgICAgIGNhbGxlZCBldmVuIGJlZm9yZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGNoaXAgaXMgY29tcGxldGVkLgorICAgICAgSXQgd291bGQgYmUgYmV0dGVyIHRvIGhhdmUgYSBmbGFnIHRvIHNraXAgaGFyZHdhcmUgZGlzYWJsaW5nCisgICAgICBpZiB0aGUgaGFyZHdhcmUgd2FzIG5vdCBpbml0aWFsaXplZCB5ZXQuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgV2hlbiB0aGUgY2hpcC1kYXRhIGlzIGFzc2lnbmVkIHRvIHRoZSBjYXJkIHVzaW5nCisgICAgICA8ZnVuY3Rpb24+c25kX2RldmljZV9uZXcoKTwvZnVuY3Rpb24+IHdpdGgKKyAgICAgIDxjb25zdGFudD5TTkRSVl9ERVZfTE9XTEVMVkVMPC9jb25zdGFudD4gLCBpdHMgZGVzdHJ1Y3RvciBpcyAKKyAgICAgIGNhbGxlZCBhdCB0aGUgbGFzdC4gIFRoYXQgaXMsIGl0IGlzIGFzc3VyZWQgdGhhdCBhbGwgb3RoZXIKKyAgICAgIGNvbXBvbmVudHMgbGlrZSBQQ01zIGFuZCBjb250cm9scyBoYXZlIGFscmVhZHkgYmVlbiByZWxlYXNlZC4KKyAgICAgIFlvdSBkb24ndCBoYXZlIHRvIHN0b3AgUENNcywgZXRjLiBleHBsaWNpdGx5LCBidXQganVzdAorICAgICAgY2FsbCBsb3ctbGV2ZWwgaGFyZHdhcmUgc3RvcHBpbmcuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgbWFuYWdlbWVudCBvZiBhIG1lbW9yeS1tYXBwZWQgcmVnaW9uIGlzIGFsbW9zdCBhcyBzYW1lIGFzCisgICAgICAgIHRoZSBtYW5hZ2VtZW50IG9mIGFuIEkvTyBwb3J0LiBZb3UnbGwgbmVlZCB0aHJlZSBmaWVsZHMgbGlrZQorICAgICAgICB0aGUgZm9sbG93aW5nOiAKKworICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdHJ1Y3QgbXljaGlwIHsKKyAgICAgICAgICAuLi4uCisgICAgICAgICAgdW5zaWduZWQgbG9uZyBpb2Jhc2VfcGh5czsKKyAgICAgICAgICB2b2lkIF9faW9tZW0gKmlvYmFzZV92aXJ0OworICB9OworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisKKyAgICAgICAgYW5kIHRoZSBhbGxvY2F0aW9uIHdvdWxkIGJlIGxpa2UgYmVsb3c6CisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgaWYgKChlcnIgPSBwY2lfcmVxdWVzdF9yZWdpb25zKHBjaSwgIk15IENoaXAiKSkgPCAwKSB7CisgICAgICAgICAga2ZyZWUoY2hpcCk7CisgICAgICAgICAgcmV0dXJuIGVycjsKKyAgfQorICBjaGlwLT5pb2Jhc2VfcGh5cyA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApOworICBjaGlwLT5pb2Jhc2VfdmlydCA9IGlvcmVtYXBfbm9jYWNoZShjaGlwLT5pb2Jhc2VfcGh5cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNpX3Jlc291cmNlX2xlbihwY2ksIDApKTsKK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgICAKKyAgICAgICAgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGRlc3RydWN0b3Igd291bGQgYmU6CisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RhdGljIGludCBzbmRfbXljaGlwX2ZyZWUoc3RydWN0IG15Y2hpcCAqY2hpcCkKKyAgeworICAgICAgICAgIC4uLi4KKyAgICAgICAgICBpZiAoY2hpcC0+aW9iYXNlX3ZpcnQpCisgICAgICAgICAgICAgICAgICBpb3VubWFwKGNoaXAtPmlvYmFzZV92aXJ0KTsKKyAgICAgICAgICAuLi4uCisgICAgICAgICAgcGNpX3JlbGVhc2VfcmVnaW9ucyhjaGlwLT5wY2kpOworICAgICAgICAgIC4uLi4KKyAgfQorXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisgICAgICA8L3BhcmE+CisKKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0icGNpLXJlc291cmNlLWVudHJpZXMiPgorICAgICAgPHRpdGxlPlBDSSBFbnRyaWVzPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBTbyBmYXIsIHNvIGdvb2QuIExldCdzIGZpbmlzaCB0aGUgbWlzc2luZyBQQ0kKKyAgICAgIHN0dWZmLiBBdCBmaXJzdCwgd2UgbmVlZCBhCisgICAgICA8c3RydWN0bmFtZT5wY2lfZGV2aWNlX2lkPC9zdHJ1Y3RuYW1lPiB0YWJsZSBmb3IgdGhpcworICAgICAgY2hpcHNldC4gSXQncyBhIHRhYmxlIG9mIFBDSSB2ZW5kb3IvZGV2aWNlIElEIG51bWJlciwgYW5kIHNvbWUKKyAgICAgIG1hc2tzLiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIEZvciBleGFtcGxlLAorCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0YXRpYyBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzbmRfbXljaGlwX2lkc1tdID0geworICAgICAgICAgIHsgUENJX1ZFTkRPUl9JRF9GT08sIFBDSV9ERVZJQ0VfSURfQkFSLAorICAgICAgICAgICAgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgMCwgMCwgMCwgfSwKKyAgICAgICAgICAuLi4uCisgICAgICAgICAgeyAwLCB9CisgIH07CisgIE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzbmRfbXljaGlwX2lkcyk7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBmaXJzdCBhbmQgc2Vjb25kIGZpZWxkcyBvZgorICAgICAgdGhlIDxzdHJ1Y3RuYW1lPnBjaV9kZXZpY2VfaWQ8L3N0cnVjdG5hbWU+IHN0cnVjdHVyZSBhcmUgdGhlIHZlbmRvciBhbmQKKyAgICAgIGRldmljZSBJRHMuIElmIHlvdSBoYXZlIG5vIHJlYXNvbiB0byBmaWx0ZXIgdGhlIG1hdGNoaW5nCisgICAgICBkZXZpY2VzLCB5b3UgY2FuIGxlYXZlIHRoZSByZW1haW5pbmcgZmllbGRzIGFzIGFib3ZlLiBUaGUgbGFzdAorICAgICAgZmllbGQgb2YgdGhlIDxzdHJ1Y3RuYW1lPnBjaV9kZXZpY2VfaWQ8L3N0cnVjdG5hbWU+IHN0cnVjdCBjb250YWlucworICAgICAgcHJpdmF0ZSBkYXRhIGZvciB0aGlzIGVudHJ5LiBZb3UgY2FuIHNwZWNpZnkgYW55IHZhbHVlIGhlcmUsIGZvcgorICAgICAgZXhhbXBsZSwgdG8gZGVmaW5lIHNwZWNpZmljIG9wZXJhdGlvbnMgZm9yIHN1cHBvcnRlZCBkZXZpY2UgSURzLgorICAgICAgU3VjaCBhbiBleGFtcGxlIGlzIGZvdW5kIGluIHRoZSBpbnRlbDh4MCBkcml2ZXIuIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGxhc3QgZW50cnkgb2YgdGhpcyBsaXN0IGlzIHRoZSB0ZXJtaW5hdG9yLiBZb3UgbXVzdAorICAgICAgc3BlY2lmeSB0aGlzIGFsbC16ZXJvIGVudHJ5LiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZW4sIHByZXBhcmUgdGhlIDxzdHJ1Y3RuYW1lPnBjaV9kcml2ZXI8L3N0cnVjdG5hbWU+IHJlY29yZDoKKworICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgZHJpdmVyID0geworICAgICAgICAgIC5uYW1lID0gS0JVSUxEX01PRE5BTUUsCisgICAgICAgICAgLmlkX3RhYmxlID0gc25kX215Y2hpcF9pZHMsCisgICAgICAgICAgLnByb2JlID0gc25kX215Y2hpcF9wcm9iZSwKKyAgICAgICAgICAucmVtb3ZlID0gc25kX215Y2hpcF9yZW1vdmUsCisgIH07CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSA8c3RydWN0ZmllbGQ+cHJvYmU8L3N0cnVjdGZpZWxkPiBhbmQKKyAgICAgIDxzdHJ1Y3RmaWVsZD5yZW1vdmU8L3N0cnVjdGZpZWxkPiBmdW5jdGlvbnMgaGF2ZSBhbHJlYWR5CisgICAgICBiZWVuIGRlZmluZWQgaW4gdGhlIHByZXZpb3VzIHNlY3Rpb25zLgorICAgICAgVGhlIDxzdHJ1Y3RmaWVsZD5uYW1lPC9zdHJ1Y3RmaWVsZD4KKyAgICAgIGZpZWxkIGlzIHRoZSBuYW1lIHN0cmluZyBvZiB0aGlzIGRldmljZS4gTm90ZSB0aGF0IHlvdSBtdXN0IG5vdAorICAgICAgdXNlIGEgc2xhc2ggPHF1b3RlPi88L3F1b3RlPiBpbiB0aGlzIHN0cmluZy4gCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBBbmQgYXQgbGFzdCwgdGhlIG1vZHVsZSBlbnRyaWVzOgorCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0YXRpYyBpbnQgX19pbml0IGFsc2FfY2FyZF9teWNoaXBfaW5pdCh2b2lkKQorICB7CisgICAgICAgICAgcmV0dXJuIHBjaV9yZWdpc3Rlcl9kcml2ZXIoJmRyaXZlcik7CisgIH0KKworICBzdGF0aWMgdm9pZCBfX2V4aXQgYWxzYV9jYXJkX215Y2hpcF9leGl0KHZvaWQpCisgIHsKKyAgICAgICAgICBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoJmRyaXZlcik7CisgIH0KKworICBtb2R1bGVfaW5pdChhbHNhX2NhcmRfbXljaGlwX2luaXQpCisgIG1vZHVsZV9leGl0KGFsc2FfY2FyZF9teWNoaXBfZXhpdCkKK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgTm90ZSB0aGF0IHRoZXNlIG1vZHVsZSBlbnRyaWVzIGFyZSB0YWdnZWQgd2l0aAorICAgICAgPHBhcmFtZXRlcj5fX2luaXQ8L3BhcmFtZXRlcj4gYW5kIAorICAgICAgPHBhcmFtZXRlcj5fX2V4aXQ8L3BhcmFtZXRlcj4gcHJlZml4ZXMuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBPaCwgb25lIHRoaW5nIHdhcyBmb3Jnb3R0ZW4uIElmIHlvdSBoYXZlIG5vIGV4cG9ydGVkIHN5bWJvbHMsCisgICAgICAgIHlvdSBuZWVkIHRvIGRlY2xhcmUgaXQgaW4gMi4yIG9yIDIuNCBrZXJuZWxzIChpdCdzIG5vdCBuZWNlc3NhcnkgaW4gMi42IGtlcm5lbHMpLgorCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIEVYUE9SVF9OT19TWU1CT0xTOworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisKKyAgICAgICAgVGhhdCdzIGFsbCEKKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisgIDwvY2hhcHRlcj4KKworCis8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT4KKzwhLS0gUENNIEludGVyZmFjZSAgLS0+Cis8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT4KKyAgPGNoYXB0ZXIgaWQ9InBjbS1pbnRlcmZhY2UiPgorICAgIDx0aXRsZT5QQ00gSW50ZXJmYWNlPC90aXRsZT4KKworICAgIDxzZWN0aW9uIGlkPSJwY20taW50ZXJmYWNlLWdlbmVyYWwiPgorICAgICAgPHRpdGxlPkdlbmVyYWw8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBQQ00gbWlkZGxlIGxheWVyIG9mIEFMU0EgaXMgcXVpdGUgcG93ZXJmdWwgYW5kIGl0IGlzIG9ubHkKKyAgICAgIG5lY2Vzc2FyeSBmb3IgZWFjaCBkcml2ZXIgdG8gaW1wbGVtZW50IHRoZSBsb3ctbGV2ZWwgZnVuY3Rpb25zCisgICAgICB0byBhY2Nlc3MgaXRzIGhhcmR3YXJlLgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgRm9yIGFjY2Vzc2luZyB0byB0aGUgUENNIGxheWVyLCB5b3UgbmVlZCB0byBpbmNsdWRlCisgICAgICA8ZmlsZW5hbWU+Jmx0O3NvdW5kL3BjbS5oJmd0OzwvZmlsZW5hbWU+IGZpcnN0LiBJbiBhZGRpdGlvbiwKKyAgICAgIDxmaWxlbmFtZT4mbHQ7c291bmQvcGNtX3BhcmFtcy5oJmd0OzwvZmlsZW5hbWU+IG1pZ2h0IGJlIG5lZWRlZAorICAgICAgaWYgeW91IGFjY2VzcyB0byBzb21lIGZ1bmN0aW9ucyByZWxhdGVkIHdpdGggaHdfcGFyYW0uIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgRWFjaCBjYXJkIGRldmljZSBjYW4gaGF2ZSB1cCB0byBmb3VyIHBjbSBpbnN0YW5jZXMuIEEgcGNtCisgICAgICBpbnN0YW5jZSBjb3JyZXNwb25kcyB0byBhIHBjbSBkZXZpY2UgZmlsZS4gVGhlIGxpbWl0YXRpb24gb2YKKyAgICAgIG51bWJlciBvZiBpbnN0YW5jZXMgY29tZXMgb25seSBmcm9tIHRoZSBhdmFpbGFibGUgYml0IHNpemUgb2YKKyAgICAgIHRoZSBMaW51eCdzIGRldmljZSBudW1iZXJzLiBPbmNlIHdoZW4gNjRiaXQgZGV2aWNlIG51bWJlciBpcworICAgICAgdXNlZCwgd2UnbGwgaGF2ZSBtb3JlIHBjbSBpbnN0YW5jZXMgYXZhaWxhYmxlLiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIEEgcGNtIGluc3RhbmNlIGNvbnNpc3RzIG9mIHBjbSBwbGF5YmFjayBhbmQgY2FwdHVyZSBzdHJlYW1zLAorICAgICAgYW5kIGVhY2ggcGNtIHN0cmVhbSBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSBwY20gc3Vic3RyZWFtcy4gU29tZQorICAgICAgc291bmRjYXJkcyBzdXBwb3J0IG11bHRpcGxlIHBsYXliYWNrIGZ1bmN0aW9ucy4gRm9yIGV4YW1wbGUsCisgICAgICBlbXUxMGsxIGhhcyBhIFBDTSBwbGF5YmFjayBvZiAzMiBzdGVyZW8gc3Vic3RyZWFtcy4gSW4gdGhpcyBjYXNlLCBhdAorICAgICAgZWFjaCBvcGVuLCBhIGZyZWUgc3Vic3RyZWFtIGlzICh1c3VhbGx5KSBhdXRvbWF0aWNhbGx5IGNob3NlbgorICAgICAgYW5kIG9wZW5lZC4gTWVhbndoaWxlLCB3aGVuIG9ubHkgb25lIHN1YnN0cmVhbSBleGlzdHMgYW5kIGl0IHdhcworICAgICAgYWxyZWFkeSBvcGVuZWQsIHRoZSBzdWNjZXNzZnVsIG9wZW4gd2lsbCBlaXRoZXIgYmxvY2sKKyAgICAgIG9yIGVycm9yIHdpdGggPGNvbnN0YW50PkVBR0FJTjwvY29uc3RhbnQ+IGFjY29yZGluZyB0byB0aGUKKyAgICAgIGZpbGUgb3BlbiBtb2RlLiBCdXQgeW91IGRvbid0IGhhdmUgdG8gY2FyZSBhYm91dCBzdWNoIGRldGFpbHMgaW4geW91cgorICAgICAgZHJpdmVyLiBUaGUgUENNIG1pZGRsZSBsYXllciB3aWxsIHRha2UgY2FyZSBvZiBzdWNoIHdvcmsuCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9InBjbS1pbnRlcmZhY2UtZXhhbXBsZSI+CisgICAgICA8dGl0bGU+RnVsbCBDb2RlIEV4YW1wbGU8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICBUaGUgZXhhbXBsZSBjb2RlIGJlbG93IGRvZXMgbm90IGluY2x1ZGUgYW55IGhhcmR3YXJlIGFjY2VzcworICAgICAgcm91dGluZXMgYnV0IHNob3dzIG9ubHkgdGhlIHNrZWxldG9uLCBob3cgdG8gYnVpbGQgdXAgdGhlIFBDTQorICAgICAgaW50ZXJmYWNlcy4KKworICAgICAgICA8ZXhhbXBsZT4KKyAgICAgICAgICA8dGl0bGU+UENNIEV4YW1wbGUgQ29kZTwvdGl0bGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgICNpbmNsdWRlIDxzb3VuZC9wY20uaD4KKyAgLi4uLgorCisgIC8qIGhhcmR3YXJlIGRlZmluaXRpb24gKi8KKyAgc3RhdGljIHN0cnVjdCBzbmRfcGNtX2hhcmR3YXJlIHNuZF9teWNoaXBfcGxheWJhY2tfaHcgPSB7CisgICAgICAgICAgLmluZm8gPSAoU05EUlZfUENNX0lORk9fTU1BUCB8CisgICAgICAgICAgICAgICAgICAgU05EUlZfUENNX0lORk9fSU5URVJMRUFWRUQgfAorICAgICAgICAgICAgICAgICAgIFNORFJWX1BDTV9JTkZPX0JMT0NLX1RSQU5TRkVSIHwKKyAgICAgICAgICAgICAgICAgICBTTkRSVl9QQ01fSU5GT19NTUFQX1ZBTElEKSwKKyAgICAgICAgICAuZm9ybWF0cyA9ICAgICAgICAgIFNORFJWX1BDTV9GTVRCSVRfUzE2X0xFLAorICAgICAgICAgIC5yYXRlcyA9ICAgICAgICAgICAgU05EUlZfUENNX1JBVEVfODAwMF80ODAwMCwKKyAgICAgICAgICAucmF0ZV9taW4gPSAgICAgICAgIDgwMDAsCisgICAgICAgICAgLnJhdGVfbWF4ID0gICAgICAgICA0ODAwMCwKKyAgICAgICAgICAuY2hhbm5lbHNfbWluID0gICAgIDIsCisgICAgICAgICAgLmNoYW5uZWxzX21heCA9ICAgICAyLAorICAgICAgICAgIC5idWZmZXJfYnl0ZXNfbWF4ID0gMzI3NjgsCisgICAgICAgICAgLnBlcmlvZF9ieXRlc19taW4gPSA0MDk2LAorICAgICAgICAgIC5wZXJpb2RfYnl0ZXNfbWF4ID0gMzI3NjgsCisgICAgICAgICAgLnBlcmlvZHNfbWluID0gICAgICAxLAorICAgICAgICAgIC5wZXJpb2RzX21heCA9ICAgICAgMTAyNCwKKyAgfTsKKworICAvKiBoYXJkd2FyZSBkZWZpbml0aW9uICovCisgIHN0YXRpYyBzdHJ1Y3Qgc25kX3BjbV9oYXJkd2FyZSBzbmRfbXljaGlwX2NhcHR1cmVfaHcgPSB7CisgICAgICAgICAgLmluZm8gPSAoU05EUlZfUENNX0lORk9fTU1BUCB8CisgICAgICAgICAgICAgICAgICAgU05EUlZfUENNX0lORk9fSU5URVJMRUFWRUQgfAorICAgICAgICAgICAgICAgICAgIFNORFJWX1BDTV9JTkZPX0JMT0NLX1RSQU5TRkVSIHwKKyAgICAgICAgICAgICAgICAgICBTTkRSVl9QQ01fSU5GT19NTUFQX1ZBTElEKSwKKyAgICAgICAgICAuZm9ybWF0cyA9ICAgICAgICAgIFNORFJWX1BDTV9GTVRCSVRfUzE2X0xFLAorICAgICAgICAgIC5yYXRlcyA9ICAgICAgICAgICAgU05EUlZfUENNX1JBVEVfODAwMF80ODAwMCwKKyAgICAgICAgICAucmF0ZV9taW4gPSAgICAgICAgIDgwMDAsCisgICAgICAgICAgLnJhdGVfbWF4ID0gICAgICAgICA0ODAwMCwKKyAgICAgICAgICAuY2hhbm5lbHNfbWluID0gICAgIDIsCisgICAgICAgICAgLmNoYW5uZWxzX21heCA9ICAgICAyLAorICAgICAgICAgIC5idWZmZXJfYnl0ZXNfbWF4ID0gMzI3NjgsCisgICAgICAgICAgLnBlcmlvZF9ieXRlc19taW4gPSA0MDk2LAorICAgICAgICAgIC5wZXJpb2RfYnl0ZXNfbWF4ID0gMzI3NjgsCisgICAgICAgICAgLnBlcmlvZHNfbWluID0gICAgICAxLAorICAgICAgICAgIC5wZXJpb2RzX21heCA9ICAgICAgMTAyNCwKKyAgfTsKKworICAvKiBvcGVuIGNhbGxiYWNrICovCisgIHN0YXRpYyBpbnQgc25kX215Y2hpcF9wbGF5YmFja19vcGVuKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQorICB7CisgICAgICAgICAgc3RydWN0IG15Y2hpcCAqY2hpcCA9IHNuZF9wY21fc3Vic3RyZWFtX2NoaXAoc3Vic3RyZWFtKTsKKyAgICAgICAgICBzdHJ1Y3Qgc25kX3BjbV9ydW50aW1lICpydW50aW1lID0gc3Vic3RyZWFtLT5ydW50aW1lOworCisgICAgICAgICAgcnVudGltZS0+aHcgPSBzbmRfbXljaGlwX3BsYXliYWNrX2h3OworICAgICAgICAgIC8qIG1vcmUgaGFyZHdhcmUtaW5pdGlhbGl6YXRpb24gd2lsbCBiZSBkb25lIGhlcmUgKi8KKyAgICAgICAgICAuLi4uCisgICAgICAgICAgcmV0dXJuIDA7CisgIH0KKworICAvKiBjbG9zZSBjYWxsYmFjayAqLworICBzdGF0aWMgaW50IHNuZF9teWNoaXBfcGxheWJhY2tfY2xvc2Uoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCisgIHsKKyAgICAgICAgICBzdHJ1Y3QgbXljaGlwICpjaGlwID0gc25kX3BjbV9zdWJzdHJlYW1fY2hpcChzdWJzdHJlYW0pOworICAgICAgICAgIC8qIHRoZSBoYXJkd2FyZS1zcGVjaWZpYyBjb2RlcyB3aWxsIGJlIGhlcmUgKi8KKyAgICAgICAgICAuLi4uCisgICAgICAgICAgcmV0dXJuIDA7CisKKyAgfQorCisgIC8qIG9wZW4gY2FsbGJhY2sgKi8KKyAgc3RhdGljIGludCBzbmRfbXljaGlwX2NhcHR1cmVfb3BlbihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKKyAgeworICAgICAgICAgIHN0cnVjdCBteWNoaXAgKmNoaXAgPSBzbmRfcGNtX3N1YnN0cmVhbV9jaGlwKHN1YnN0cmVhbSk7CisgICAgICAgICAgc3RydWN0IHNuZF9wY21fcnVudGltZSAqcnVudGltZSA9IHN1YnN0cmVhbS0+cnVudGltZTsKKworICAgICAgICAgIHJ1bnRpbWUtPmh3ID0gc25kX215Y2hpcF9jYXB0dXJlX2h3OworICAgICAgICAgIC8qIG1vcmUgaGFyZHdhcmUtaW5pdGlhbGl6YXRpb24gd2lsbCBiZSBkb25lIGhlcmUgKi8KKyAgICAgICAgICAuLi4uCisgICAgICAgICAgcmV0dXJuIDA7CisgIH0KKworICAvKiBjbG9zZSBjYWxsYmFjayAqLworICBzdGF0aWMgaW50IHNuZF9teWNoaXBfY2FwdHVyZV9jbG9zZShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKKyAgeworICAgICAgICAgIHN0cnVjdCBteWNoaXAgKmNoaXAgPSBzbmRfcGNtX3N1YnN0cmVhbV9jaGlwKHN1YnN0cmVhbSk7CisgICAgICAgICAgLyogdGhlIGhhcmR3YXJlLXNwZWNpZmljIGNvZGVzIHdpbGwgYmUgaGVyZSAqLworICAgICAgICAgIC4uLi4KKyAgICAgICAgICByZXR1cm4gMDsKKworICB9CisKKyAgLyogaHdfcGFyYW1zIGNhbGxiYWNrICovCisgIHN0YXRpYyBpbnQgc25kX215Y2hpcF9wY21faHdfcGFyYW1zKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqaHdfcGFyYW1zKQorICB7CisgICAgICAgICAgcmV0dXJuIHNuZF9wY21fbGliX21hbGxvY19wYWdlcyhzdWJzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zX2J1ZmZlcl9ieXRlcyhod19wYXJhbXMpKTsKKyAgfQorCisgIC8qIGh3X2ZyZWUgY2FsbGJhY2sgKi8KKyAgc3RhdGljIGludCBzbmRfbXljaGlwX3BjbV9od19mcmVlKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQorICB7CisgICAgICAgICAgcmV0dXJuIHNuZF9wY21fbGliX2ZyZWVfcGFnZXMoc3Vic3RyZWFtKTsKKyAgfQorCisgIC8qIHByZXBhcmUgY2FsbGJhY2sgKi8KKyAgc3RhdGljIGludCBzbmRfbXljaGlwX3BjbV9wcmVwYXJlKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQorICB7CisgICAgICAgICAgc3RydWN0IG15Y2hpcCAqY2hpcCA9IHNuZF9wY21fc3Vic3RyZWFtX2NoaXAoc3Vic3RyZWFtKTsKKyAgICAgICAgICBzdHJ1Y3Qgc25kX3BjbV9ydW50aW1lICpydW50aW1lID0gc3Vic3RyZWFtLT5ydW50aW1lOworCisgICAgICAgICAgLyogc2V0IHVwIHRoZSBoYXJkd2FyZSB3aXRoIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgKiBmb3IgZXhhbXBsZS4uLgorICAgICAgICAgICAqLworICAgICAgICAgIG15Y2hpcF9zZXRfc2FtcGxlX2Zvcm1hdChjaGlwLCBydW50aW1lLT5mb3JtYXQpOworICAgICAgICAgIG15Y2hpcF9zZXRfc2FtcGxlX3JhdGUoY2hpcCwgcnVudGltZS0+cmF0ZSk7CisgICAgICAgICAgbXljaGlwX3NldF9jaGFubmVscyhjaGlwLCBydW50aW1lLT5jaGFubmVscyk7CisgICAgICAgICAgbXljaGlwX3NldF9kbWFfc2V0dXAoY2hpcCwgcnVudGltZS0+ZG1hX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpcC0+YnVmZmVyX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpcC0+cGVyaW9kX3NpemUpOworICAgICAgICAgIHJldHVybiAwOworICB9CisKKyAgLyogdHJpZ2dlciBjYWxsYmFjayAqLworICBzdGF0aWMgaW50IHNuZF9teWNoaXBfcGNtX3RyaWdnZXIoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY21kKQorICB7CisgICAgICAgICAgc3dpdGNoIChjbWQpIHsKKyAgICAgICAgICBjYXNlIFNORFJWX1BDTV9UUklHR0VSX1NUQVJUOgorICAgICAgICAgICAgICAgICAgLyogZG8gc29tZXRoaW5nIHRvIHN0YXJ0IHRoZSBQQ00gZW5naW5lICovCisgICAgICAgICAgICAgICAgICAuLi4uCisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIFNORFJWX1BDTV9UUklHR0VSX1NUT1A6CisgICAgICAgICAgICAgICAgICAvKiBkbyBzb21ldGhpbmcgdG8gc3RvcCB0aGUgUENNIGVuZ2luZSAqLworICAgICAgICAgICAgICAgICAgLi4uLgorICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICAgIH0KKyAgfQorCisgIC8qIHBvaW50ZXIgY2FsbGJhY2sgKi8KKyAgc3RhdGljIHNuZF9wY21fdWZyYW1lc190CisgIHNuZF9teWNoaXBfcGNtX3BvaW50ZXIoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCisgIHsKKyAgICAgICAgICBzdHJ1Y3QgbXljaGlwICpjaGlwID0gc25kX3BjbV9zdWJzdHJlYW1fY2hpcChzdWJzdHJlYW0pOworICAgICAgICAgIHVuc2lnbmVkIGludCBjdXJyZW50X3B0cjsKKworICAgICAgICAgIC8qIGdldCB0aGUgY3VycmVudCBoYXJkd2FyZSBwb2ludGVyICovCisgICAgICAgICAgY3VycmVudF9wdHIgPSBteWNoaXBfZ2V0X2h3X3BvaW50ZXIoY2hpcCk7CisgICAgICAgICAgcmV0dXJuIGN1cnJlbnRfcHRyOworICB9CisKKyAgLyogb3BlcmF0b3JzICovCisgIHN0YXRpYyBzdHJ1Y3Qgc25kX3BjbV9vcHMgc25kX215Y2hpcF9wbGF5YmFja19vcHMgPSB7CisgICAgICAgICAgLm9wZW4gPSAgICAgICAgc25kX215Y2hpcF9wbGF5YmFja19vcGVuLAorICAgICAgICAgIC5jbG9zZSA9ICAgICAgIHNuZF9teWNoaXBfcGxheWJhY2tfY2xvc2UsCisgICAgICAgICAgLmlvY3RsID0gICAgICAgc25kX3BjbV9saWJfaW9jdGwsCisgICAgICAgICAgLmh3X3BhcmFtcyA9ICAgc25kX215Y2hpcF9wY21faHdfcGFyYW1zLAorICAgICAgICAgIC5od19mcmVlID0gICAgIHNuZF9teWNoaXBfcGNtX2h3X2ZyZWUsCisgICAgICAgICAgLnByZXBhcmUgPSAgICAgc25kX215Y2hpcF9wY21fcHJlcGFyZSwKKyAgICAgICAgICAudHJpZ2dlciA9ICAgICBzbmRfbXljaGlwX3BjbV90cmlnZ2VyLAorICAgICAgICAgIC5wb2ludGVyID0gICAgIHNuZF9teWNoaXBfcGNtX3BvaW50ZXIsCisgIH07CisKKyAgLyogb3BlcmF0b3JzICovCisgIHN0YXRpYyBzdHJ1Y3Qgc25kX3BjbV9vcHMgc25kX215Y2hpcF9jYXB0dXJlX29wcyA9IHsKKyAgICAgICAgICAub3BlbiA9ICAgICAgICBzbmRfbXljaGlwX2NhcHR1cmVfb3BlbiwKKyAgICAgICAgICAuY2xvc2UgPSAgICAgICBzbmRfbXljaGlwX2NhcHR1cmVfY2xvc2UsCisgICAgICAgICAgLmlvY3RsID0gICAgICAgc25kX3BjbV9saWJfaW9jdGwsCisgICAgICAgICAgLmh3X3BhcmFtcyA9ICAgc25kX215Y2hpcF9wY21faHdfcGFyYW1zLAorICAgICAgICAgIC5od19mcmVlID0gICAgIHNuZF9teWNoaXBfcGNtX2h3X2ZyZWUsCisgICAgICAgICAgLnByZXBhcmUgPSAgICAgc25kX215Y2hpcF9wY21fcHJlcGFyZSwKKyAgICAgICAgICAudHJpZ2dlciA9ICAgICBzbmRfbXljaGlwX3BjbV90cmlnZ2VyLAorICAgICAgICAgIC5wb2ludGVyID0gICAgIHNuZF9teWNoaXBfcGNtX3BvaW50ZXIsCisgIH07CisKKyAgLyoKKyAgICogIGRlZmluaXRpb25zIG9mIGNhcHR1cmUgYXJlIG9taXR0ZWQgaGVyZS4uLgorICAgKi8KKworICAvKiBjcmVhdGUgYSBwY20gZGV2aWNlICovCisgIHN0YXRpYyBpbnQgc25kX215Y2hpcF9uZXdfcGNtKHN0cnVjdCBteWNoaXAgKmNoaXApCisgIHsKKyAgICAgICAgICBzdHJ1Y3Qgc25kX3BjbSAqcGNtOworICAgICAgICAgIGludCBlcnI7CisKKyAgICAgICAgICBlcnIgPSBzbmRfcGNtX25ldyhjaGlwLT5jYXJkLCAiTXkgQ2hpcCIsIDAsIDEsIDEsICZwY20pOworICAgICAgICAgIGlmIChlcnIgPCAwKSAKKyAgICAgICAgICAgICAgICAgIHJldHVybiBlcnI7CisgICAgICAgICAgcGNtLT5wcml2YXRlX2RhdGEgPSBjaGlwOworICAgICAgICAgIHN0cmNweShwY20tPm5hbWUsICJNeSBDaGlwIik7CisgICAgICAgICAgY2hpcC0+cGNtID0gcGNtOworICAgICAgICAgIC8qIHNldCBvcGVyYXRvcnMgKi8KKyAgICAgICAgICBzbmRfcGNtX3NldF9vcHMocGNtLCBTTkRSVl9QQ01fU1RSRUFNX1BMQVlCQUNLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmc25kX215Y2hpcF9wbGF5YmFja19vcHMpOworICAgICAgICAgIHNuZF9wY21fc2V0X29wcyhwY20sIFNORFJWX1BDTV9TVFJFQU1fQ0FQVFVSRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnNuZF9teWNoaXBfY2FwdHVyZV9vcHMpOworICAgICAgICAgIC8qIHByZS1hbGxvY2F0aW9uIG9mIGJ1ZmZlcnMgKi8KKyAgICAgICAgICAvKiBOT1RFOiB0aGlzIG1heSBmYWlsICovCisgICAgICAgICAgc25kX3BjbV9saWJfcHJlYWxsb2NhdGVfcGFnZXNfZm9yX2FsbChwY20sIFNORFJWX0RNQV9UWVBFX0RFViwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuZF9kbWFfcGNpX2RhdGEoY2hpcC0+cGNpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY0KjEwMjQsIDY0KjEwMjQpOworICAgICAgICAgIHJldHVybiAwOworICB9CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2V4YW1wbGU+CisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9InBjbS1pbnRlcmZhY2UtY29uc3RydWN0b3IiPgorICAgICAgPHRpdGxlPkNvbnN0cnVjdG9yPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBBIHBjbSBpbnN0YW5jZSBpcyBhbGxvY2F0ZWQgYnkgdGhlIDxmdW5jdGlvbj5zbmRfcGNtX25ldygpPC9mdW5jdGlvbj4KKyAgICAgIGZ1bmN0aW9uLiBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY3JlYXRlIGEgY29uc3RydWN0b3IgZm9yIHBjbSwKKyAgICAgIG5hbWVseSwgCisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RhdGljIGludCBzbmRfbXljaGlwX25ld19wY20oc3RydWN0IG15Y2hpcCAqY2hpcCkKKyAgeworICAgICAgICAgIHN0cnVjdCBzbmRfcGNtICpwY207CisgICAgICAgICAgaW50IGVycjsKKworICAgICAgICAgIGVyciA9IHNuZF9wY21fbmV3KGNoaXAtPmNhcmQsICJNeSBDaGlwIiwgMCwgMSwgMSwgJnBjbSk7CisgICAgICAgICAgaWYgKGVyciA8IDApIAorICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICAgICAgICBwY20tPnByaXZhdGVfZGF0YSA9IGNoaXA7CisgICAgICAgICAgc3RyY3B5KHBjbS0+bmFtZSwgIk15IENoaXAiKTsKKyAgICAgICAgICBjaGlwLT5wY20gPSBwY207CisJICAuLi4uCisgICAgICAgICAgcmV0dXJuIDA7CisgIH0KK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmdW5jdGlvbj5zbmRfcGNtX25ldygpPC9mdW5jdGlvbj4gZnVuY3Rpb24gdGFrZXMgZm91cgorICAgICAgYXJndW1lbnRzLiBUaGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIGNhcmQgcG9pbnRlciB0byB3aGljaCB0aGlzCisgICAgICBwY20gaXMgYXNzaWduZWQsIGFuZCB0aGUgc2Vjb25kIGlzIHRoZSBJRCBzdHJpbmcuIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHRoaXJkIGFyZ3VtZW50ICg8cGFyYW1ldGVyPmluZGV4PC9wYXJhbWV0ZXI+LCAwIGluIHRoZQorICAgICAgYWJvdmUpIGlzIHRoZSBpbmRleCBvZiB0aGlzIG5ldyBwY20uIEl0IGJlZ2lucyBmcm9tIHplcm8uIElmCisgICAgICB5b3UgY3JlYXRlIG1vcmUgdGhhbiBvbmUgcGNtIGluc3RhbmNlcywgc3BlY2lmeSB0aGUKKyAgICAgIGRpZmZlcmVudCBudW1iZXJzIGluIHRoaXMgYXJndW1lbnQuIEZvciBleGFtcGxlLAorICAgICAgPHBhcmFtZXRlcj5pbmRleDwvcGFyYW1ldGVyPiA9IDEgZm9yIHRoZSBzZWNvbmQgUENNIGRldmljZS4gIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGZvdXJ0aCBhbmQgZmlmdGggYXJndW1lbnRzIGFyZSB0aGUgbnVtYmVyIG9mIHN1YnN0cmVhbXMKKyAgICAgIGZvciBwbGF5YmFjayBhbmQgY2FwdHVyZSwgcmVzcGVjdGl2ZWx5LiBIZXJlIDEgaXMgdXNlZCBmb3IKKyAgICAgIGJvdGggYXJndW1lbnRzLiBXaGVuIG5vIHBsYXliYWNrIG9yIGNhcHR1cmUgc3Vic3RyZWFtcyBhcmUgYXZhaWxhYmxlLAorICAgICAgcGFzcyAwIHRvIHRoZSBjb3JyZXNwb25kaW5nIGFyZ3VtZW50LgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgSWYgYSBjaGlwIHN1cHBvcnRzIG11bHRpcGxlIHBsYXliYWNrcyBvciBjYXB0dXJlcywgeW91IGNhbgorICAgICAgc3BlY2lmeSBtb3JlIG51bWJlcnMsIGJ1dCB0aGV5IG11c3QgYmUgaGFuZGxlZCBwcm9wZXJseSBpbgorICAgICAgb3Blbi9jbG9zZSwgZXRjLiBjYWxsYmFja3MuICBXaGVuIHlvdSBuZWVkIHRvIGtub3cgd2hpY2gKKyAgICAgIHN1YnN0cmVhbSB5b3UgYXJlIHJlZmVycmluZyB0bywgdGhlbiBpdCBjYW4gYmUgb2J0YWluZWQgZnJvbQorICAgICAgc3RydWN0IDxzdHJ1Y3RuYW1lPnNuZF9wY21fc3Vic3RyZWFtPC9zdHJ1Y3RuYW1lPiBkYXRhIHBhc3NlZCB0byBlYWNoIGNhbGxiYWNrCisgICAgICBhcyBmb2xsb3dzOiAKKworICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbTsKKyAgaW50IGluZGV4ID0gc3Vic3RyZWFtLT5udW1iZXI7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIEFmdGVyIHRoZSBwY20gaXMgY3JlYXRlZCwgeW91IG5lZWQgdG8gc2V0IG9wZXJhdG9ycyBmb3IgZWFjaAorICAgICAgICBwY20gc3RyZWFtLiAKKworICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzbmRfcGNtX3NldF9vcHMocGNtLCBTTkRSVl9QQ01fU1RSRUFNX1BMQVlCQUNLLAorICAgICAgICAgICAgICAgICAgJnNuZF9teWNoaXBfcGxheWJhY2tfb3BzKTsKKyAgc25kX3BjbV9zZXRfb3BzKHBjbSwgU05EUlZfUENNX1NUUkVBTV9DQVBUVVJFLAorICAgICAgICAgICAgICAgICAgJnNuZF9teWNoaXBfY2FwdHVyZV9vcHMpOworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgb3BlcmF0b3JzIGFyZSBkZWZpbmVkIHR5cGljYWxseSBsaWtlIHRoaXM6CisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RhdGljIHN0cnVjdCBzbmRfcGNtX29wcyBzbmRfbXljaGlwX3BsYXliYWNrX29wcyA9IHsKKyAgICAgICAgICAub3BlbiA9ICAgICAgICBzbmRfbXljaGlwX3BjbV9vcGVuLAorICAgICAgICAgIC5jbG9zZSA9ICAgICAgIHNuZF9teWNoaXBfcGNtX2Nsb3NlLAorICAgICAgICAgIC5pb2N0bCA9ICAgICAgIHNuZF9wY21fbGliX2lvY3RsLAorICAgICAgICAgIC5od19wYXJhbXMgPSAgIHNuZF9teWNoaXBfcGNtX2h3X3BhcmFtcywKKyAgICAgICAgICAuaHdfZnJlZSA9ICAgICBzbmRfbXljaGlwX3BjbV9od19mcmVlLAorICAgICAgICAgIC5wcmVwYXJlID0gICAgIHNuZF9teWNoaXBfcGNtX3ByZXBhcmUsCisgICAgICAgICAgLnRyaWdnZXIgPSAgICAgc25kX215Y2hpcF9wY21fdHJpZ2dlciwKKyAgICAgICAgICAucG9pbnRlciA9ICAgICBzbmRfbXljaGlwX3BjbV9wb2ludGVyLAorICB9OworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisKKyAgICAgICAgQWxsIHRoZSBjYWxsYmFja3MgYXJlIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgPGxpbmsgbGlua2VuZD0icGNtLWludGVyZmFjZS1vcGVyYXRvcnMiPjxjaXRldGl0bGU+CisgICAgICAgIE9wZXJhdG9yczwvY2l0ZXRpdGxlPjwvbGluaz4gc3Vic2VjdGlvbi4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIEFmdGVyIHNldHRpbmcgdGhlIG9wZXJhdG9ycywgeW91IHByb2JhYmx5IHdpbGwgd2FudCB0bworICAgICAgICBwcmUtYWxsb2NhdGUgdGhlIGJ1ZmZlci4gRm9yIHRoZSBwcmUtYWxsb2NhdGlvbiwgc2ltcGx5IGNhbGwKKyAgICAgICAgdGhlIGZvbGxvd2luZzogCisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc25kX3BjbV9saWJfcHJlYWxsb2NhdGVfcGFnZXNfZm9yX2FsbChwY20sIFNORFJWX0RNQV9UWVBFX0RFViwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmRfZG1hX3BjaV9kYXRhKGNoaXAtPnBjaSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjQqMTAyNCwgNjQqMTAyNCk7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworICAgICAgICBJdCB3aWxsIGFsbG9jYXRlIGEgYnVmZmVyIHVwIHRvIDY0a0IgYXMgZGVmYXVsdC4KKyAgICAgIEJ1ZmZlciBtYW5hZ2VtZW50IGRldGFpbHMgd2lsbCBiZSBkZXNjcmliZWQgaW4gdGhlIGxhdGVyIHNlY3Rpb24gPGxpbmsKKyAgICAgIGxpbmtlbmQ9ImJ1ZmZlci1hbmQtbWVtb3J5Ij48Y2l0ZXRpdGxlPkJ1ZmZlciBhbmQgTWVtb3J5CisgICAgICBNYW5hZ2VtZW50PC9jaXRldGl0bGU+PC9saW5rPi4gCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBBZGRpdGlvbmFsbHksIHlvdSBjYW4gc2V0IHNvbWUgZXh0cmEgaW5mb3JtYXRpb24gZm9yIHRoaXMgcGNtCisgICAgICAgIGluIHBjbS0mZ3Q7aW5mb19mbGFncy4KKyAgICAgICAgVGhlIGF2YWlsYWJsZSB2YWx1ZXMgYXJlIGRlZmluZWQgYXMKKyAgICAgICAgPGNvbnN0YW50PlNORFJWX1BDTV9JTkZPX1hYWDwvY29uc3RhbnQ+IGluCisgICAgICAgIDxmaWxlbmFtZT4mbHQ7c291bmQvYXNvdW5kLmgmZ3Q7PC9maWxlbmFtZT4sIHdoaWNoIGlzIHVzZWQgZm9yCisgICAgICAgIHRoZSBoYXJkd2FyZSBkZWZpbml0aW9uIChkZXNjcmliZWQgbGF0ZXIpLiBXaGVuIHlvdXIgc291bmRjaGlwCisgICAgICAgIHN1cHBvcnRzIG9ubHkgaGFsZi1kdXBsZXgsIHNwZWNpZnkgbGlrZSB0aGlzOiAKKworICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBwY20tPmluZm9fZmxhZ3MgPSBTTkRSVl9QQ01fSU5GT19IQUxGX0RVUExFWDsKK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJwY20taW50ZXJmYWNlLWRlc3RydWN0b3IiPgorICAgICAgPHRpdGxlPi4uLiBBbmQgdGhlIERlc3RydWN0b3I/PC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgZGVzdHJ1Y3RvciBmb3IgYSBwY20gaW5zdGFuY2UgaXMgbm90IGFsd2F5cworICAgICAgbmVjZXNzYXJ5LiBTaW5jZSB0aGUgcGNtIGRldmljZSB3aWxsIGJlIHJlbGVhc2VkIGJ5IHRoZSBtaWRkbGUKKyAgICAgIGxheWVyIGNvZGUgYXV0b21hdGljYWxseSwgeW91IGRvbid0IGhhdmUgdG8gY2FsbCB0aGUgZGVzdHJ1Y3RvcgorICAgICAgZXhwbGljaXRseS4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBkZXN0cnVjdG9yIHdvdWxkIGJlIG5lY2Vzc2FyeSBpZiB5b3UgY3JlYXRlZAorICAgICAgICBzcGVjaWFsIHJlY29yZHMgaW50ZXJuYWxseSBhbmQgbmVlZGVkIHRvIHJlbGVhc2UgdGhlbS4gSW4gc3VjaCBhCisgICAgICAgIGNhc2UsIHNldCB0aGUgZGVzdHJ1Y3RvciBmdW5jdGlvbiB0bworICAgICAgICBwY20tJmd0O3ByaXZhdGVfZnJlZTogCisKKyAgICAgICAgPGV4YW1wbGU+CisgICAgICAgICAgPHRpdGxlPlBDTSBJbnN0YW5jZSB3aXRoIGEgRGVzdHJ1Y3RvcjwvdGl0bGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0YXRpYyB2b2lkIG15Y2hpcF9wY21fZnJlZShzdHJ1Y3Qgc25kX3BjbSAqcGNtKQorICB7CisgICAgICAgICAgc3RydWN0IG15Y2hpcCAqY2hpcCA9IHNuZF9wY21fY2hpcChwY20pOworICAgICAgICAgIC8qIGZyZWUgeW91ciBvd24gZGF0YSAqLworICAgICAgICAgIGtmcmVlKGNoaXAtPm15X3ByaXZhdGVfcGNtX2RhdGEpOworICAgICAgICAgIC8qIGRvIHdoYXQgeW91IGxpa2UgZWxzZSAqLworICAgICAgICAgIC4uLi4KKyAgfQorCisgIHN0YXRpYyBpbnQgc25kX215Y2hpcF9uZXdfcGNtKHN0cnVjdCBteWNoaXAgKmNoaXApCisgIHsKKyAgICAgICAgICBzdHJ1Y3Qgc25kX3BjbSAqcGNtOworICAgICAgICAgIC4uLi4KKyAgICAgICAgICAvKiBhbGxvY2F0ZSB5b3VyIG93biBkYXRhICovCisgICAgICAgICAgY2hpcC0+bXlfcHJpdmF0ZV9wY21fZGF0YSA9IGttYWxsb2MoLi4uKTsKKyAgICAgICAgICAvKiBzZXQgdGhlIGRlc3RydWN0b3IgKi8KKyAgICAgICAgICBwY20tPnByaXZhdGVfZGF0YSA9IGNoaXA7CisgICAgICAgICAgcGNtLT5wcml2YXRlX2ZyZWUgPSBteWNoaXBfcGNtX2ZyZWU7CisgICAgICAgICAgLi4uLgorICB9CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2V4YW1wbGU+CisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9InBjbS1pbnRlcmZhY2UtcnVudGltZSI+CisgICAgICA8dGl0bGU+UnVudGltZSBQb2ludGVyIC0gVGhlIENoZXN0IG9mIFBDTSBJbmZvcm1hdGlvbjwvdGl0bGU+CisJPHBhcmE+CisJICBXaGVuIHRoZSBQQ00gc3Vic3RyZWFtIGlzIG9wZW5lZCwgYSBQQ00gcnVudGltZSBpbnN0YW5jZSBpcworCWFsbG9jYXRlZCBhbmQgYXNzaWduZWQgdG8gdGhlIHN1YnN0cmVhbS4gVGhpcyBwb2ludGVyIGlzCisJYWNjZXNzaWJsZSB2aWEgPGNvbnN0YW50PnN1YnN0cmVhbS0mZ3Q7cnVudGltZTwvY29uc3RhbnQ+LgorCVRoaXMgcnVudGltZSBwb2ludGVyIGhvbGRzIG1vc3QgaW5mb3JtYXRpb24geW91IG5lZWQKKwl0byBjb250cm9sIHRoZSBQQ006IHRoZSBjb3B5IG9mIGh3X3BhcmFtcyBhbmQgc3dfcGFyYW1zIGNvbmZpZ3VyYXRpb25zLCB0aGUgYnVmZmVyCisJcG9pbnRlcnMsIG1tYXAgcmVjb3Jkcywgc3BpbmxvY2tzLCBldGMuCisJPC9wYXJhPgorCisJPHBhcmE+CisJVGhlIGRlZmluaXRpb24gb2YgcnVudGltZSBpbnN0YW5jZSBpcyBmb3VuZCBpbgorCTxmaWxlbmFtZT4mbHQ7c291bmQvcGNtLmgmZ3Q7PC9maWxlbmFtZT4uICBIZXJlIGFyZQorICAgICAgIHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGU6CisgICAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworc3RydWN0IF9zbmRfcGNtX3J1bnRpbWUgeworCS8qIC0tIFN0YXR1cyAtLSAqLworCXN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqdHJpZ2dlcl9tYXN0ZXI7CisJc25kX3RpbWVzdGFtcF90IHRyaWdnZXJfdHN0YW1wOwkvKiB0cmlnZ2VyIHRpbWVzdGFtcCAqLworCWludCBvdmVycmFuZ2U7CisJc25kX3BjbV91ZnJhbWVzX3QgYXZhaWxfbWF4OworCXNuZF9wY21fdWZyYW1lc190IGh3X3B0cl9iYXNlOwkvKiBQb3NpdGlvbiBhdCBidWZmZXIgcmVzdGFydCAqLworCXNuZF9wY21fdWZyYW1lc190IGh3X3B0cl9pbnRlcnJ1cHQ7IC8qIFBvc2l0aW9uIGF0IGludGVycnVwdCB0aW1lKi8KKworCS8qIC0tIEhXIHBhcmFtcyAtLSAqLworCXNuZF9wY21fYWNjZXNzX3QgYWNjZXNzOwkvKiBhY2Nlc3MgbW9kZSAqLworCXNuZF9wY21fZm9ybWF0X3QgZm9ybWF0OwkvKiBTTkRSVl9QQ01fRk9STUFUXyogKi8KKwlzbmRfcGNtX3N1YmZvcm1hdF90IHN1YmZvcm1hdDsJLyogc3ViZm9ybWF0ICovCisJdW5zaWduZWQgaW50IHJhdGU7CQkvKiByYXRlIGluIEh6ICovCisJdW5zaWduZWQgaW50IGNoYW5uZWxzOwkJLyogY2hhbm5lbHMgKi8KKwlzbmRfcGNtX3VmcmFtZXNfdCBwZXJpb2Rfc2l6ZTsJLyogcGVyaW9kIHNpemUgKi8KKwl1bnNpZ25lZCBpbnQgcGVyaW9kczsJCS8qIHBlcmlvZHMgKi8KKwlzbmRfcGNtX3VmcmFtZXNfdCBidWZmZXJfc2l6ZTsJLyogYnVmZmVyIHNpemUgKi8KKwl1bnNpZ25lZCBpbnQgdGlja190aW1lOwkJLyogdGljayB0aW1lICovCisJc25kX3BjbV91ZnJhbWVzX3QgbWluX2FsaWduOwkvKiBNaW4gYWxpZ25tZW50IGZvciB0aGUgZm9ybWF0ICovCisJc2l6ZV90IGJ5dGVfYWxpZ247CisJdW5zaWduZWQgaW50IGZyYW1lX2JpdHM7CisJdW5zaWduZWQgaW50IHNhbXBsZV9iaXRzOworCXVuc2lnbmVkIGludCBpbmZvOworCXVuc2lnbmVkIGludCByYXRlX251bTsKKwl1bnNpZ25lZCBpbnQgcmF0ZV9kZW47CisKKwkvKiAtLSBTVyBwYXJhbXMgLS0gKi8KKwlzdHJ1Y3QgdGltZXNwZWMgdHN0YW1wX21vZGU7CS8qIG1tYXAgdGltZXN0YW1wIGlzIHVwZGF0ZWQgKi8KKyAgCXVuc2lnbmVkIGludCBwZXJpb2Rfc3RlcDsKKwl1bnNpZ25lZCBpbnQgc2xlZXBfbWluOwkJLyogbWluIHRpY2tzIHRvIHNsZWVwICovCisJc25kX3BjbV91ZnJhbWVzX3Qgc3RhcnRfdGhyZXNob2xkOworCXNuZF9wY21fdWZyYW1lc190IHN0b3BfdGhyZXNob2xkOworCXNuZF9wY21fdWZyYW1lc190IHNpbGVuY2VfdGhyZXNob2xkOyAvKiBTaWxlbmNlIGZpbGxpbmcgaGFwcGVucyB3aGVuCisJCQkJCQlub2lzZSBpcyBuZWFyZXN0IHRoYW4gdGhpcyAqLworCXNuZF9wY21fdWZyYW1lc190IHNpbGVuY2Vfc2l6ZTsJLyogU2lsZW5jZSBmaWxsaW5nIHNpemUgKi8KKwlzbmRfcGNtX3VmcmFtZXNfdCBib3VuZGFyeTsJLyogcG9pbnRlcnMgd3JhcCBwb2ludCAqLworCisJc25kX3BjbV91ZnJhbWVzX3Qgc2lsZW5jZWRfc3RhcnQ7CisJc25kX3BjbV91ZnJhbWVzX3Qgc2lsZW5jZWRfc2l6ZTsKKworCXNuZF9wY21fc3luY19pZF90IHN5bmM7CQkvKiBoYXJkd2FyZSBzeW5jaHJvbml6YXRpb24gSUQgKi8KKworCS8qIC0tIG1tYXAgLS0gKi8KKwl2b2xhdGlsZSBzdHJ1Y3Qgc25kX3BjbV9tbWFwX3N0YXR1cyAqc3RhdHVzOworCXZvbGF0aWxlIHN0cnVjdCBzbmRfcGNtX21tYXBfY29udHJvbCAqY29udHJvbDsKKwlhdG9taWNfdCBtbWFwX2NvdW50OworCisJLyogLS0gbG9ja2luZyAvIHNjaGVkdWxpbmcgLS0gKi8KKwlzcGlubG9ja190IGxvY2s7CisJd2FpdF9xdWV1ZV9oZWFkX3Qgc2xlZXA7CisJc3RydWN0IHRpbWVyX2xpc3QgdGlja190aW1lcjsKKwlzdHJ1Y3QgZmFzeW5jX3N0cnVjdCAqZmFzeW5jOworCisJLyogLS0gcHJpdmF0ZSBzZWN0aW9uIC0tICovCisJdm9pZCAqcHJpdmF0ZV9kYXRhOworCXZvaWQgKCpwcml2YXRlX2ZyZWUpKHN0cnVjdCBzbmRfcGNtX3J1bnRpbWUgKnJ1bnRpbWUpOworCisJLyogLS0gaGFyZHdhcmUgZGVzY3JpcHRpb24gLS0gKi8KKwlzdHJ1Y3Qgc25kX3BjbV9oYXJkd2FyZSBodzsKKwlzdHJ1Y3Qgc25kX3BjbV9od19jb25zdHJhaW50cyBod19jb25zdHJhaW50czsKKworCS8qIC0tIHRpbWVyIC0tICovCisJdW5zaWduZWQgaW50IHRpbWVyX3Jlc29sdXRpb247CS8qIHRpbWVyIHJlc29sdXRpb24gKi8KKworCS8qIC0tIERNQSAtLSAqLyAgICAgICAgICAgCisJdW5zaWduZWQgY2hhciAqZG1hX2FyZWE7CS8qIERNQSBhcmVhICovCisJZG1hX2FkZHJfdCBkbWFfYWRkcjsJCS8qIHBoeXNpY2FsIGJ1cyBhZGRyZXNzIChub3QgYWNjZXNzaWJsZSBmcm9tIG1haW4gQ1BVKSAqLworCXNpemVfdCBkbWFfYnl0ZXM7CQkvKiBzaXplIG9mIERNQSBhcmVhICovCisKKwlzdHJ1Y3Qgc25kX2RtYV9idWZmZXIgKmRtYV9idWZmZXJfcDsJLyogYWxsb2NhdGVkIGJ1ZmZlciAqLworCisjaWYgZGVmaW5lZChDT05GSUdfU05EX1BDTV9PU1MpIHx8IGRlZmluZWQoQ09ORklHX1NORF9QQ01fT1NTX01PRFVMRSkKKwkvKiAtLSBPU1MgdGhpbmdzIC0tICovCisJc3RydWN0IHNuZF9wY21fb3NzX3J1bnRpbWUgb3NzOworI2VuZGlmCit9OworXV0+CisgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCTwvcGFyYT4KKworCTxwYXJhPgorCSAgRm9yIHRoZSBvcGVyYXRvcnMgKGNhbGxiYWNrcykgb2YgZWFjaCBzb3VuZCBkcml2ZXIsIG1vc3Qgb2YKKwl0aGVzZSByZWNvcmRzIGFyZSBzdXBwb3NlZCB0byBiZSByZWFkLW9ubHkuICBPbmx5IHRoZSBQQ00KKwltaWRkbGUtbGF5ZXIgY2hhbmdlcyAvIHVwZGF0ZXMgdGhlbS4gIFRoZSBleGNlcHRpb25zIGFyZQorCXRoZSBoYXJkd2FyZSBkZXNjcmlwdGlvbiAoaHcpIERNQSBidWZmZXIgaW5mb3JtYXRpb24gYW5kIHRoZQorCXByaXZhdGUgZGF0YS4gIEJlc2lkZXMsIGlmIHlvdSB1c2UgdGhlIHN0YW5kYXJkIGJ1ZmZlciBhbGxvY2F0aW9uCisJbWV0aG9kIHZpYSA8ZnVuY3Rpb24+c25kX3BjbV9saWJfbWFsbG9jX3BhZ2VzKCk8L2Z1bmN0aW9uPiwKKwl5b3UgZG9uJ3QgbmVlZCB0byBzZXQgdGhlIERNQSBidWZmZXIgaW5mb3JtYXRpb24gYnkgeW91cnNlbGYuCisJPC9wYXJhPgorCisJPHBhcmE+CisJSW4gdGhlIHNlY3Rpb25zIGJlbG93LCBpbXBvcnRhbnQgcmVjb3JkcyBhcmUgZXhwbGFpbmVkLgorCTwvcGFyYT4KKworCTxzZWN0aW9uIGlkPSJwY20taW50ZXJmYWNlLXJ1bnRpbWUtaHciPgorCTx0aXRsZT5IYXJkd2FyZSBEZXNjcmlwdGlvbjwvdGl0bGU+CisJPHBhcmE+CisJICBUaGUgaGFyZHdhcmUgZGVzY3JpcHRvciAoc3RydWN0IDxzdHJ1Y3RuYW1lPnNuZF9wY21faGFyZHdhcmU8L3N0cnVjdG5hbWU+KQorCWNvbnRhaW5zIHRoZSBkZWZpbml0aW9ucyBvZiB0aGUgZnVuZGFtZW50YWwgaGFyZHdhcmUKKwljb25maWd1cmF0aW9uLiAgQWJvdmUgYWxsLCB5b3UnbGwgbmVlZCB0byBkZWZpbmUgdGhpcyBpbgorCTxsaW5rIGxpbmtlbmQ9InBjbS1pbnRlcmZhY2Utb3BlcmF0b3JzLW9wZW4tY2FsbGJhY2siPjxjaXRldGl0bGU+CisJdGhlIG9wZW4gY2FsbGJhY2s8L2NpdGV0aXRsZT48L2xpbms+LgorCU5vdGUgdGhhdCB0aGUgcnVudGltZSBpbnN0YW5jZSBob2xkcyB0aGUgY29weSBvZiB0aGUKKwlkZXNjcmlwdG9yLCBub3QgdGhlIHBvaW50ZXIgdG8gdGhlIGV4aXN0aW5nIGRlc2NyaXB0b3IuICBUaGF0CisJaXMsIGluIHRoZSBvcGVuIGNhbGxiYWNrLCB5b3UgY2FuIG1vZGlmeSB0aGUgY29waWVkIGRlc2NyaXB0b3IKKwkoPGNvbnN0YW50PnJ1bnRpbWUtJmd0O2h3PC9jb25zdGFudD4pIGFzIHlvdSBuZWVkLiAgRm9yIGV4YW1wbGUsIGlmIHRoZSBtYXhpbXVtCisJbnVtYmVyIG9mIGNoYW5uZWxzIGlzIDEgb25seSBvbiBzb21lIGNoaXAgbW9kZWxzLCB5b3UgY2FuCisJc3RpbGwgdXNlIHRoZSBzYW1lIGhhcmR3YXJlIGRlc2NyaXB0b3IgYW5kIGNoYW5nZSB0aGUKKwljaGFubmVsc19tYXggbGF0ZXI6CisgICAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICAgICAgICAgIHN0cnVjdCBzbmRfcGNtX3J1bnRpbWUgKnJ1bnRpbWUgPSBzdWJzdHJlYW0tPnJ1bnRpbWU7CisgICAgICAgICAgLi4uCisgICAgICAgICAgcnVudGltZS0+aHcgPSBzbmRfbXljaGlwX3BsYXliYWNrX2h3OyAvKiBjb21tb24gZGVmaW5pdGlvbiAqLworICAgICAgICAgIGlmIChjaGlwLT5tb2RlbCA9PSBWRVJZX09MRF9PTkUpCisgICAgICAgICAgICAgICAgICBydW50aW1lLT5ody5jaGFubmVsc19tYXggPSAxOworXV0+CisgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCTwvcGFyYT4KKworCTxwYXJhPgorCSAgVHlwaWNhbGx5LCB5b3UnbGwgaGF2ZSBhIGhhcmR3YXJlIGRlc2NyaXB0b3IgYXMgYmVsb3c6CisgICAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdGF0aWMgc3RydWN0IHNuZF9wY21faGFyZHdhcmUgc25kX215Y2hpcF9wbGF5YmFja19odyA9IHsKKyAgICAgICAgICAuaW5mbyA9IChTTkRSVl9QQ01fSU5GT19NTUFQIHwKKyAgICAgICAgICAgICAgICAgICBTTkRSVl9QQ01fSU5GT19JTlRFUkxFQVZFRCB8CisgICAgICAgICAgICAgICAgICAgU05EUlZfUENNX0lORk9fQkxPQ0tfVFJBTlNGRVIgfAorICAgICAgICAgICAgICAgICAgIFNORFJWX1BDTV9JTkZPX01NQVBfVkFMSUQpLAorICAgICAgICAgIC5mb3JtYXRzID0gICAgICAgICAgU05EUlZfUENNX0ZNVEJJVF9TMTZfTEUsCisgICAgICAgICAgLnJhdGVzID0gICAgICAgICAgICBTTkRSVl9QQ01fUkFURV84MDAwXzQ4MDAwLAorICAgICAgICAgIC5yYXRlX21pbiA9ICAgICAgICAgODAwMCwKKyAgICAgICAgICAucmF0ZV9tYXggPSAgICAgICAgIDQ4MDAwLAorICAgICAgICAgIC5jaGFubmVsc19taW4gPSAgICAgMiwKKyAgICAgICAgICAuY2hhbm5lbHNfbWF4ID0gICAgIDIsCisgICAgICAgICAgLmJ1ZmZlcl9ieXRlc19tYXggPSAzMjc2OCwKKyAgICAgICAgICAucGVyaW9kX2J5dGVzX21pbiA9IDQwOTYsCisgICAgICAgICAgLnBlcmlvZF9ieXRlc19tYXggPSAzMjc2OCwKKyAgICAgICAgICAucGVyaW9kc19taW4gPSAgICAgIDEsCisgICAgICAgICAgLnBlcmlvZHNfbWF4ID0gICAgICAxMDI0LAorICB9OworXV0+CisgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisJPGl0ZW1pemVkbGlzdD4KKwk8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgVGhlIDxzdHJ1Y3RmaWVsZD5pbmZvPC9zdHJ1Y3RmaWVsZD4gZmllbGQgY29udGFpbnMgdGhlIHR5cGUgYW5kCisgICAgICAgIGNhcGFiaWxpdGllcyBvZiB0aGlzIHBjbS4gVGhlIGJpdCBmbGFncyBhcmUgZGVmaW5lZCBpbgorICAgICAgICA8ZmlsZW5hbWU+Jmx0O3NvdW5kL2Fzb3VuZC5oJmd0OzwvZmlsZW5hbWU+IGFzCisgICAgICAgIDxjb25zdGFudD5TTkRSVl9QQ01fSU5GT19YWFg8L2NvbnN0YW50Pi4gSGVyZSwgYXQgbGVhc3QsIHlvdQorICAgICAgICBoYXZlIHRvIHNwZWNpZnkgd2hldGhlciB0aGUgbW1hcCBpcyBzdXBwb3J0ZWQgYW5kIHdoaWNoCisgICAgICAgIGludGVybGVhdmVkIGZvcm1hdCBpcyBzdXBwb3J0ZWQuCisgICAgICAgIFdoZW4gdGhlIGhhcmR3YXJlIHN1cHBvcnRzIG1tYXAsIGFkZCB0aGUKKyAgICAgICAgPGNvbnN0YW50PlNORFJWX1BDTV9JTkZPX01NQVA8L2NvbnN0YW50PiBmbGFnIGhlcmUuIFdoZW4gdGhlCisgICAgICAgIGhhcmR3YXJlIHN1cHBvcnRzIHRoZSBpbnRlcmxlYXZlZCBvciB0aGUgbm9uLWludGVybGVhdmVkCisgICAgICAgIGZvcm1hdHMsIDxjb25zdGFudD5TTkRSVl9QQ01fSU5GT19JTlRFUkxFQVZFRDwvY29uc3RhbnQ+IG9yCisgICAgICAgIDxjb25zdGFudD5TTkRSVl9QQ01fSU5GT19OT05JTlRFUkxFQVZFRDwvY29uc3RhbnQ+IGZsYWcgbXVzdAorICAgICAgICBiZSBzZXQsIHJlc3BlY3RpdmVseS4gSWYgYm90aCBhcmUgc3VwcG9ydGVkLCB5b3UgY2FuIHNldCBib3RoLAorICAgICAgICB0b28uIAorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgSW4gdGhlIGFib3ZlIGV4YW1wbGUsIDxjb25zdGFudD5NTUFQX1ZBTElEPC9jb25zdGFudD4gYW5kCisgICAgICAgIDxjb25zdGFudD5CTE9DS19UUkFOU0ZFUjwvY29uc3RhbnQ+IGFyZSBzcGVjaWZpZWQgZm9yIHRoZSBPU1MgbW1hcAorICAgICAgICBtb2RlLiBVc3VhbGx5IGJvdGggYXJlIHNldC4gT2YgY291cnNlLAorICAgICAgICA8Y29uc3RhbnQ+TU1BUF9WQUxJRDwvY29uc3RhbnQ+IGlzIHNldCBvbmx5IGlmIHRoZSBtbWFwIGlzCisgICAgICAgIHJlYWxseSBzdXBwb3J0ZWQuIAorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIG90aGVyIHBvc3NpYmxlIGZsYWdzIGFyZQorICAgICAgICA8Y29uc3RhbnQ+U05EUlZfUENNX0lORk9fUEFVU0U8L2NvbnN0YW50PiBhbmQKKyAgICAgICAgPGNvbnN0YW50PlNORFJWX1BDTV9JTkZPX1JFU1VNRTwvY29uc3RhbnQ+LiBUaGUKKyAgICAgICAgPGNvbnN0YW50PlBBVVNFPC9jb25zdGFudD4gYml0IG1lYW5zIHRoYXQgdGhlIHBjbSBzdXBwb3J0cyB0aGUKKyAgICAgICAgPHF1b3RlPnBhdXNlPC9xdW90ZT4gb3BlcmF0aW9uLCB3aGlsZSB0aGUKKyAgICAgICAgPGNvbnN0YW50PlJFU1VNRTwvY29uc3RhbnQ+IGJpdCBtZWFucyB0aGF0IHRoZSBwY20gc3VwcG9ydHMKKyAgICAgICAgdGhlIGZ1bGwgPHF1b3RlPnN1c3BlbmQvcmVzdW1lPC9xdW90ZT4gb3BlcmF0aW9uLgorCUlmIHRoZSA8Y29uc3RhbnQ+UEFVU0U8L2NvbnN0YW50PiBmbGFnIGlzIHNldCwKKwl0aGUgPHN0cnVjdGZpZWxkPnRyaWdnZXI8L3N0cnVjdGZpZWxkPiBjYWxsYmFjayBiZWxvdworICAgICAgICBtdXN0IGhhbmRsZSB0aGUgY29ycmVzcG9uZGluZyAocGF1c2UgcHVzaC9yZWxlYXNlKSBjb21tYW5kcy4KKwlUaGUgc3VzcGVuZC9yZXN1bWUgdHJpZ2dlciBjb21tYW5kcyBjYW4gYmUgZGVmaW5lZCBldmVuIHdpdGhvdXQKKwl0aGUgPGNvbnN0YW50PlJFU1VNRTwvY29uc3RhbnQ+IGZsYWcuICBTZWUgPGxpbmsKKwlsaW5rZW5kPSJwb3dlci1tYW5hZ2VtZW50Ij48Y2l0ZXRpdGxlPgorCVBvd2VyIE1hbmFnZW1lbnQ8L2NpdGV0aXRsZT48L2xpbms+IHNlY3Rpb24gZm9yIGRldGFpbHMuCisgICAgICAgIDwvcGFyYT4KKworCTxwYXJhPgorCSAgV2hlbiB0aGUgUENNIHN1YnN0cmVhbXMgY2FuIGJlIHN5bmNocm9uaXplZCAodHlwaWNhbGx5LAorCXN5bmNocm9uaXplZCBzdGFydC9zdG9wIG9mIGEgcGxheWJhY2sgYW5kIGEgY2FwdHVyZSBzdHJlYW1zKSwKKwl5b3UgY2FuIGdpdmUgPGNvbnN0YW50PlNORFJWX1BDTV9JTkZPX1NZTkNfU1RBUlQ8L2NvbnN0YW50PiwKKwl0b28uICBJbiB0aGlzIGNhc2UsIHlvdSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBsaW5rZWQtbGlzdCBvZgorCVBDTSBzdWJzdHJlYW1zIGluIHRoZSB0cmlnZ2VyIGNhbGxiYWNrLiAgVGhpcyB3aWxsIGJlCisJZGVzY3JpYmVkIGluIHRoZSBsYXRlciBzZWN0aW9uLgorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICA8c3RydWN0ZmllbGQ+Zm9ybWF0czwvc3RydWN0ZmllbGQ+IGZpZWxkIGNvbnRhaW5zIHRoZSBiaXQtZmxhZ3MKKyAgICAgICAgb2Ygc3VwcG9ydGVkIGZvcm1hdHMgKDxjb25zdGFudD5TTkRSVl9QQ01fRk1UQklUX1hYWDwvY29uc3RhbnQ+KS4KKyAgICAgICAgSWYgdGhlIGhhcmR3YXJlIHN1cHBvcnRzIG1vcmUgdGhhbiBvbmUgZm9ybWF0LCBnaXZlIGFsbCBvcidlZAorICAgICAgICBiaXRzLiAgSW4gdGhlIGV4YW1wbGUgYWJvdmUsIHRoZSBzaWduZWQgMTZiaXQgbGl0dGxlLWVuZGlhbgorICAgICAgICBmb3JtYXQgaXMgc3BlY2lmaWVkLgorICAgICAgICA8L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgIDxzdHJ1Y3RmaWVsZD5yYXRlczwvc3RydWN0ZmllbGQ+IGZpZWxkIGNvbnRhaW5zIHRoZSBiaXQtZmxhZ3Mgb2YKKyAgICAgICAgc3VwcG9ydGVkIHJhdGVzICg8Y29uc3RhbnQ+U05EUlZfUENNX1JBVEVfWFhYPC9jb25zdGFudD4pLgorICAgICAgICBXaGVuIHRoZSBjaGlwIHN1cHBvcnRzIGNvbnRpbnVvdXMgcmF0ZXMsIHBhc3MKKyAgICAgICAgPGNvbnN0YW50PkNPTlRJTlVPVVM8L2NvbnN0YW50PiBiaXQgYWRkaXRpb25hbGx5LgorICAgICAgICBUaGUgcHJlLWRlZmluZWQgcmF0ZSBiaXRzIGFyZSBwcm92aWRlZCBvbmx5IGZvciB0eXBpY2FsCisJcmF0ZXMuIElmIHlvdXIgY2hpcCBzdXBwb3J0cyB1bmNvbnZlbnRpb25hbCByYXRlcywgeW91IG5lZWQgdG8gYWRkCisgICAgICAgIHRoZSA8Y29uc3RhbnQ+S05PVDwvY29uc3RhbnQ+IGJpdCBhbmQgc2V0IHVwIHRoZSBoYXJkd2FyZQorICAgICAgICBjb25zdHJhaW50IG1hbnVhbGx5IChleHBsYWluZWQgbGF0ZXIpLgorICAgICAgICA8L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwk8cGFyYT4KKwk8c3RydWN0ZmllbGQ+cmF0ZV9taW48L3N0cnVjdGZpZWxkPiBhbmQKKwk8c3RydWN0ZmllbGQ+cmF0ZV9tYXg8L3N0cnVjdGZpZWxkPiBkZWZpbmUgdGhlIG1pbmltdW0gYW5kCisJbWF4aW11bSBzYW1wbGUgcmF0ZS4gIFRoaXMgc2hvdWxkIGNvcnJlc3BvbmQgc29tZWhvdyB0bworCTxzdHJ1Y3RmaWVsZD5yYXRlczwvc3RydWN0ZmllbGQ+IGJpdHMuCisJPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJPHBhcmE+CisJPHN0cnVjdGZpZWxkPmNoYW5uZWxfbWluPC9zdHJ1Y3RmaWVsZD4gYW5kCisJPHN0cnVjdGZpZWxkPmNoYW5uZWxfbWF4PC9zdHJ1Y3RmaWVsZD4gCisJZGVmaW5lLCBhcyB5b3UgbWlnaHQgYWxyZWFkeSBleHBlY3RlZCwgdGhlIG1pbmltdW0gYW5kIG1heGltdW0KKwludW1iZXIgb2YgY2hhbm5lbHMuCisJPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJPHBhcmE+CisJPHN0cnVjdGZpZWxkPmJ1ZmZlcl9ieXRlc19tYXg8L3N0cnVjdGZpZWxkPiBkZWZpbmVzIHRoZQorCW1heGltdW0gYnVmZmVyIHNpemUgaW4gYnl0ZXMuICBUaGVyZSBpcyBubworCTxzdHJ1Y3RmaWVsZD5idWZmZXJfYnl0ZXNfbWluPC9zdHJ1Y3RmaWVsZD4gZmllbGQsIHNpbmNlCisJaXQgY2FuIGJlIGNhbGN1bGF0ZWQgZnJvbSB0aGUgbWluaW11bSBwZXJpb2Qgc2l6ZSBhbmQgdGhlCisJbWluaW11bSBudW1iZXIgb2YgcGVyaW9kcy4KKwlNZWFud2hpbGUsIDxzdHJ1Y3RmaWVsZD5wZXJpb2RfYnl0ZXNfbWluPC9zdHJ1Y3RmaWVsZD4gYW5kCisJZGVmaW5lIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHNpemUgb2YgdGhlIHBlcmlvZCBpbiBieXRlcy4KKwk8c3RydWN0ZmllbGQ+cGVyaW9kc19tYXg8L3N0cnVjdGZpZWxkPiBhbmQKKwk8c3RydWN0ZmllbGQ+cGVyaW9kc19taW48L3N0cnVjdGZpZWxkPiBkZWZpbmUgdGhlIG1heGltdW0gYW5kCisJbWluaW11bSBudW1iZXIgb2YgcGVyaW9kcyBpbiB0aGUgYnVmZmVyLgorICAgICAgICA8L3BhcmE+CisKKwk8cGFyYT4KKwlUaGUgPHF1b3RlPnBlcmlvZDwvcXVvdGU+IGlzIGEgdGVybSB0aGF0IGNvcnJlc3BvbmRzIHRvCisJYSBmcmFnbWVudCBpbiB0aGUgT1NTIHdvcmxkLiBUaGUgcGVyaW9kIGRlZmluZXMgdGhlIHNpemUgYXQKKwl3aGljaCBhIFBDTSBpbnRlcnJ1cHQgaXMgZ2VuZXJhdGVkLiBUaGlzIHNpemUgc3Ryb25nbHkKKwlkZXBlbmRzIG9uIHRoZSBoYXJkd2FyZS4gCisJR2VuZXJhbGx5LCB0aGUgc21hbGxlciBwZXJpb2Qgc2l6ZSB3aWxsIGdpdmUgeW91IG1vcmUKKwlpbnRlcnJ1cHRzLCB0aGF0IGlzLCBtb3JlIGNvbnRyb2xzLiAKKwlJbiB0aGUgY2FzZSBvZiBjYXB0dXJlLCB0aGlzIHNpemUgZGVmaW5lcyB0aGUgaW5wdXQgbGF0ZW5jeS4KKwlPbiB0aGUgb3RoZXIgaGFuZCwgdGhlIHdob2xlIGJ1ZmZlciBzaXplIGRlZmluZXMgdGhlCisJb3V0cHV0IGxhdGVuY3kgZm9yIHRoZSBwbGF5YmFjayBkaXJlY3Rpb24uCisJPC9wYXJhPgorCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJPHBhcmE+CisJVGhlcmUgaXMgYWxzbyBhIGZpZWxkIDxzdHJ1Y3RmaWVsZD5maWZvX3NpemU8L3N0cnVjdGZpZWxkPi4KKwlUaGlzIHNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgaGFyZHdhcmUgRklGTywgYnV0IGN1cnJlbnRseSBpdAorCWlzIG5laXRoZXIgdXNlZCBpbiB0aGUgZHJpdmVyIG5vciBpbiB0aGUgYWxzYS1saWIuICBTbywgeW91CisJY2FuIGlnbm9yZSB0aGlzIGZpZWxkLgorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCTwvaXRlbWl6ZWRsaXN0PgorCTwvcGFyYT4KKwk8L3NlY3Rpb24+CisKKwk8c2VjdGlvbiBpZD0icGNtLWludGVyZmFjZS1ydW50aW1lLWNvbmZpZyI+CisJPHRpdGxlPlBDTSBDb25maWd1cmF0aW9uczwvdGl0bGU+CisJPHBhcmE+CisJT2ssIGxldCdzIGdvIGJhY2sgYWdhaW4gdG8gdGhlIFBDTSBydW50aW1lIHJlY29yZHMuCisJVGhlIG1vc3QgZnJlcXVlbnRseSByZWZlcnJlZCByZWNvcmRzIGluIHRoZSBydW50aW1lIGluc3RhbmNlIGFyZQorCXRoZSBQQ00gY29uZmlndXJhdGlvbnMuCisJVGhlIFBDTSBjb25maWd1cmF0aW9ucyBhcmUgc3RvcmVkIGluIHRoZSBydW50aW1lIGluc3RhbmNlCisJYWZ0ZXIgdGhlIGFwcGxpY2F0aW9uIHNlbmRzIDx0eXBlPmh3X3BhcmFtczwvdHlwZT4gZGF0YSB2aWEKKwlhbHNhLWxpYi4gIFRoZXJlIGFyZSBtYW55IGZpZWxkcyBjb3BpZWQgZnJvbSBod19wYXJhbXMgYW5kCisJc3dfcGFyYW1zIHN0cnVjdHMuICBGb3IgZXhhbXBsZSwKKwk8c3RydWN0ZmllbGQ+Zm9ybWF0PC9zdHJ1Y3RmaWVsZD4gaG9sZHMgdGhlIGZvcm1hdCB0eXBlCisJY2hvc2VuIGJ5IHRoZSBhcHBsaWNhdGlvbi4gIFRoaXMgZmllbGQgY29udGFpbnMgdGhlIGVudW0gdmFsdWUKKwk8Y29uc3RhbnQ+U05EUlZfUENNX0ZPUk1BVF9YWFg8L2NvbnN0YW50Pi4KKwk8L3BhcmE+CisKKwk8cGFyYT4KKwlPbmUgdGhpbmcgdG8gYmUgbm90ZWQgaXMgdGhhdCB0aGUgY29uZmlndXJlZCBidWZmZXIgYW5kIHBlcmlvZAorCXNpemVzIGFyZSBzdG9yZWQgaW4gPHF1b3RlPmZyYW1lczwvcXVvdGU+IGluIHRoZSBydW50aW1lLgorICAgICAgICBJbiB0aGUgQUxTQSB3b3JsZCwgMSBmcmFtZSA9IGNoYW5uZWxzICogc2FtcGxlcy1zaXplLgorCUZvciBjb252ZXJzaW9uIGJldHdlZW4gZnJhbWVzIGFuZCBieXRlcywgeW91IGNhbiB1c2UgdGhlCisJPGZ1bmN0aW9uPmZyYW1lc190b19ieXRlcygpPC9mdW5jdGlvbj4gYW5kCisgICAgICAgICAgPGZ1bmN0aW9uPmJ5dGVzX3RvX2ZyYW1lcygpPC9mdW5jdGlvbj4gaGVscGVyIGZ1bmN0aW9ucy4gCisgICAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBwZXJpb2RfYnl0ZXMgPSBmcmFtZXNfdG9fYnl0ZXMocnVudGltZSwgcnVudGltZS0+cGVyaW9kX3NpemUpOworXV0+CisgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgICA8L3BhcmE+CisKKwk8cGFyYT4KKwlBbHNvLCBtYW55IHNvZnR3YXJlIHBhcmFtZXRlcnMgKHN3X3BhcmFtcykgYXJlCisJc3RvcmVkIGluIGZyYW1lcywgdG9vLiAgUGxlYXNlIGNoZWNrIHRoZSB0eXBlIG9mIHRoZSBmaWVsZC4KKwk8dHlwZT5zbmRfcGNtX3VmcmFtZXNfdDwvdHlwZT4gaXMgZm9yIHRoZSBmcmFtZXMgYXMgdW5zaWduZWQKKwlpbnRlZ2VyIHdoaWxlIDx0eXBlPnNuZF9wY21fc2ZyYW1lc190PC90eXBlPiBpcyBmb3IgdGhlIGZyYW1lcworCWFzIHNpZ25lZCBpbnRlZ2VyLgorCTwvcGFyYT4KKwk8L3NlY3Rpb24+CisKKwk8c2VjdGlvbiBpZD0icGNtLWludGVyZmFjZS1ydW50aW1lLWRtYSI+CisJPHRpdGxlPkRNQSBCdWZmZXIgSW5mb3JtYXRpb248L3RpdGxlPgorCTxwYXJhPgorCVRoZSBETUEgYnVmZmVyIGlzIGRlZmluZWQgYnkgdGhlIGZvbGxvd2luZyBmb3VyIGZpZWxkcywKKwk8c3RydWN0ZmllbGQ+ZG1hX2FyZWE8L3N0cnVjdGZpZWxkPiwKKwk8c3RydWN0ZmllbGQ+ZG1hX2FkZHI8L3N0cnVjdGZpZWxkPiwKKwk8c3RydWN0ZmllbGQ+ZG1hX2J5dGVzPC9zdHJ1Y3RmaWVsZD4gYW5kCisJPHN0cnVjdGZpZWxkPmRtYV9wcml2YXRlPC9zdHJ1Y3RmaWVsZD4uCisJVGhlIDxzdHJ1Y3RmaWVsZD5kbWFfYXJlYTwvc3RydWN0ZmllbGQ+IGhvbGRzIHRoZSBidWZmZXIKKwlwb2ludGVyICh0aGUgbG9naWNhbCBhZGRyZXNzKS4gIFlvdSBjYW4gY2FsbAorCTxmdW5jdGlvbj5tZW1jcHk8L2Z1bmN0aW9uPiBmcm9tL3RvIAorCXRoaXMgcG9pbnRlci4gIE1lYW53aGlsZSwgPHN0cnVjdGZpZWxkPmRtYV9hZGRyPC9zdHJ1Y3RmaWVsZD4KKwlob2xkcyB0aGUgcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgYnVmZmVyLiAgVGhpcyBmaWVsZCBpcworCXNwZWNpZmllZCBvbmx5IHdoZW4gdGhlIGJ1ZmZlciBpcyBhIGxpbmVhciBidWZmZXIuCisJPHN0cnVjdGZpZWxkPmRtYV9ieXRlczwvc3RydWN0ZmllbGQ+IGhvbGRzIHRoZSBzaXplIG9mIGJ1ZmZlcgorCWluIGJ5dGVzLiAgPHN0cnVjdGZpZWxkPmRtYV9wcml2YXRlPC9zdHJ1Y3RmaWVsZD4gaXMgdXNlZCBmb3IKKwl0aGUgQUxTQSBETUEgYWxsb2NhdG9yLgorCTwvcGFyYT4KKworCTxwYXJhPgorCUlmIHlvdSB1c2UgYSBzdGFuZGFyZCBBTFNBIGZ1bmN0aW9uLAorCTxmdW5jdGlvbj5zbmRfcGNtX2xpYl9tYWxsb2NfcGFnZXMoKTwvZnVuY3Rpb24+LCBmb3IKKwlhbGxvY2F0aW5nIHRoZSBidWZmZXIsIHRoZXNlIGZpZWxkcyBhcmUgc2V0IGJ5IHRoZSBBTFNBIG1pZGRsZQorCWxheWVyLCBhbmQgeW91IHNob3VsZCA8ZW1waGFzaXM+bm90PC9lbXBoYXNpcz4gY2hhbmdlIHRoZW0gYnkKKwl5b3Vyc2VsZi4gIFlvdSBjYW4gcmVhZCB0aGVtIGJ1dCBub3Qgd3JpdGUgdGhlbS4KKwlPbiB0aGUgb3RoZXIgaGFuZCwgaWYgeW91IHdhbnQgdG8gYWxsb2NhdGUgdGhlIGJ1ZmZlciBieQorCXlvdXJzZWxmLCB5b3UnbGwgbmVlZCB0byBtYW5hZ2UgaXQgaW4gaHdfcGFyYW1zIGNhbGxiYWNrLgorCUF0IGxlYXN0LCA8c3RydWN0ZmllbGQ+ZG1hX2J5dGVzPC9zdHJ1Y3RmaWVsZD4gaXMgbWFuZGF0b3J5LgorCTxzdHJ1Y3RmaWVsZD5kbWFfYXJlYTwvc3RydWN0ZmllbGQ+IGlzIG5lY2Vzc2FyeSB3aGVuIHRoZQorCWJ1ZmZlciBpcyBtbWFwcGVkLiAgSWYgeW91ciBkcml2ZXIgZG9lc24ndCBzdXBwb3J0IG1tYXAsIHRoaXMKKwlmaWVsZCBpcyBub3QgbmVjZXNzYXJ5LiAgPHN0cnVjdGZpZWxkPmRtYV9hZGRyPC9zdHJ1Y3RmaWVsZD4KKwlpcyBhbHNvIG9wdGlvbmFsLiAgWW91IGNhbiB1c2UKKwk8c3RydWN0ZmllbGQ+ZG1hX3ByaXZhdGU8L3N0cnVjdGZpZWxkPiBhcyB5b3UgbGlrZSwgdG9vLgorCTwvcGFyYT4KKwk8L3NlY3Rpb24+CisKKwk8c2VjdGlvbiBpZD0icGNtLWludGVyZmFjZS1ydW50aW1lLXN0YXR1cyI+CisJPHRpdGxlPlJ1bm5pbmcgU3RhdHVzPC90aXRsZT4KKwk8cGFyYT4KKwlUaGUgcnVubmluZyBzdGF0dXMgY2FuIGJlIHJlZmVycmVkIHZpYSA8Y29uc3RhbnQ+cnVudGltZS0mZ3Q7c3RhdHVzPC9jb25zdGFudD4uCisJVGhpcyBpcyB0aGUgcG9pbnRlciB0byB0aGUgc3RydWN0IDxzdHJ1Y3RuYW1lPnNuZF9wY21fbW1hcF9zdGF0dXM8L3N0cnVjdG5hbWU+CisJcmVjb3JkLiAgRm9yIGV4YW1wbGUsIHlvdSBjYW4gZ2V0IHRoZSBjdXJyZW50IERNQSBoYXJkd2FyZQorCXBvaW50ZXIgdmlhIDxjb25zdGFudD5ydW50aW1lLSZndDtzdGF0dXMtJmd0O2h3X3B0cjwvY29uc3RhbnQ+LgorCTwvcGFyYT4KKworCTxwYXJhPgorCVRoZSBETUEgYXBwbGljYXRpb24gcG9pbnRlciBjYW4gYmUgcmVmZXJyZWQgdmlhCisJPGNvbnN0YW50PnJ1bnRpbWUtJmd0O2NvbnRyb2w8L2NvbnN0YW50Piwgd2hpY2ggcG9pbnRzIHRvIHRoZQorCXN0cnVjdCA8c3RydWN0bmFtZT5zbmRfcGNtX21tYXBfY29udHJvbDwvc3RydWN0bmFtZT4gcmVjb3JkLgorCUhvd2V2ZXIsIGFjY2Vzc2luZyBkaXJlY3RseSB0byB0aGlzIHZhbHVlIGlzIG5vdCByZWNvbW1lbmRlZC4KKwk8L3BhcmE+CisJPC9zZWN0aW9uPgorCisJPHNlY3Rpb24gaWQ9InBjbS1pbnRlcmZhY2UtcnVudGltZS1wcml2YXRlIj4KKwk8dGl0bGU+UHJpdmF0ZSBEYXRhPC90aXRsZT4gCisJPHBhcmE+CisJWW91IGNhbiBhbGxvY2F0ZSBhIHJlY29yZCBmb3IgdGhlIHN1YnN0cmVhbSBhbmQgc3RvcmUgaXQgaW4KKwk8Y29uc3RhbnQ+cnVudGltZS0mZ3Q7cHJpdmF0ZV9kYXRhPC9jb25zdGFudD4uICBVc3VhbGx5LCB0aGlzCisJaXMgZG9uZSBpbgorCTxsaW5rIGxpbmtlbmQ9InBjbS1pbnRlcmZhY2Utb3BlcmF0b3JzLW9wZW4tY2FsbGJhY2siPjxjaXRldGl0bGU+CisJdGhlIG9wZW4gY2FsbGJhY2s8L2NpdGV0aXRsZT48L2xpbms+LgorCURvbid0IG1peCB0aGlzIHdpdGggPGNvbnN0YW50PnBjbS0mZ3Q7cHJpdmF0ZV9kYXRhPC9jb25zdGFudD4uCisJVGhlIDxjb25zdGFudD5wY20tJmd0O3ByaXZhdGVfZGF0YTwvY29uc3RhbnQ+IHVzdWFsbHkgcG9pbnRzIHRvIHRoZQorCWNoaXAgaW5zdGFuY2UgYXNzaWduZWQgc3RhdGljYWxseSBhdCB0aGUgY3JlYXRpb24gb2YgUENNLCB3aGlsZSB0aGUgCisJPGNvbnN0YW50PnJ1bnRpbWUtJmd0O3ByaXZhdGVfZGF0YTwvY29uc3RhbnQ+IHBvaW50cyB0byBhIGR5bmFtaWMKKwlkYXRhIHN0cnVjdHVyZSBjcmVhdGVkIGF0IHRoZSBQQ00gb3BlbiBjYWxsYmFjay4KKworICAgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RhdGljIGludCBzbmRfeHh4X29wZW4oc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCisgIHsKKyAgICAgICAgICBzdHJ1Y3QgbXlfcGNtX2RhdGEgKmRhdGE7CisgICAgICAgICAgLi4uLgorICAgICAgICAgIGRhdGEgPSBrbWFsbG9jKHNpemVvZigqZGF0YSksIEdGUF9LRVJORUwpOworICAgICAgICAgIHN1YnN0cmVhbS0+cnVudGltZS0+cHJpdmF0ZV9kYXRhID0gZGF0YTsKKyAgICAgICAgICAuLi4uCisgIH0KK11dPgorICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoZSBhbGxvY2F0ZWQgb2JqZWN0IG11c3QgYmUgcmVsZWFzZWQgaW4KKwk8bGluayBsaW5rZW5kPSJwY20taW50ZXJmYWNlLW9wZXJhdG9ycy1vcGVuLWNhbGxiYWNrIj48Y2l0ZXRpdGxlPgorCXRoZSBjbG9zZSBjYWxsYmFjazwvY2l0ZXRpdGxlPjwvbGluaz4uCisgICAgICAgIDwvcGFyYT4KKwk8L3NlY3Rpb24+CisKKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0icGNtLWludGVyZmFjZS1vcGVyYXRvcnMiPgorICAgICAgPHRpdGxlPk9wZXJhdG9yczwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgT0ssIG5vdyBsZXQgbWUgZ2l2ZSBkZXRhaWxzIGFib3V0IGVhY2ggcGNtIGNhbGxiYWNrCisgICAgICAoPHBhcmFtZXRlcj5vcHM8L3BhcmFtZXRlcj4pLiBJbiBnZW5lcmFsLCBldmVyeSBjYWxsYmFjayBtdXN0CisgICAgICByZXR1cm4gMCBpZiBzdWNjZXNzZnVsLCBvciBhIG5lZ2F0aXZlIGVycm9yIG51bWJlcgorICAgICAgc3VjaCBhcyA8Y29uc3RhbnQ+LUVJTlZBTDwvY29uc3RhbnQ+LiBUbyBjaG9vc2UgYW4gYXBwcm9wcmlhdGUKKyAgICAgIGVycm9yIG51bWJlciwgaXQgaXMgYWR2aXNlZCB0byBjaGVjayB3aGF0IHZhbHVlIG90aGVyIHBhcnRzIG9mCisgICAgICB0aGUga2VybmVsIHJldHVybiB3aGVuIHRoZSBzYW1lIGtpbmQgb2YgcmVxdWVzdCBmYWlscy4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0YWtlcyBhdCBsZWFzdCB0aGUgYXJndW1lbnQgd2l0aAorICAgICAgICA8c3RydWN0bmFtZT5zbmRfcGNtX3N1YnN0cmVhbTwvc3RydWN0bmFtZT4gcG9pbnRlci4gVG8gcmV0cmlldmUKKyAgICAgICAgdGhlIGNoaXAgcmVjb3JkIGZyb20gdGhlIGdpdmVuIHN1YnN0cmVhbSBpbnN0YW5jZSwgeW91IGNhbiB1c2UgdGhlCisgICAgICAgIGZvbGxvd2luZyBtYWNyby4gCisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgaW50IHh4eCgpIHsKKyAgICAgICAgICBzdHJ1Y3QgbXljaGlwICpjaGlwID0gc25kX3BjbV9zdWJzdHJlYW1fY2hpcChzdWJzdHJlYW0pOworICAgICAgICAgIC4uLi4KKyAgfQorXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisKKwlUaGUgbWFjcm8gcmVhZHMgPGNvbnN0YW50PnN1YnN0cmVhbS0mZ3Q7cHJpdmF0ZV9kYXRhPC9jb25zdGFudD4sCisJd2hpY2ggaXMgYSBjb3B5IG9mIDxjb25zdGFudD5wY20tJmd0O3ByaXZhdGVfZGF0YTwvY29uc3RhbnQ+LgorCVlvdSBjYW4gb3ZlcnJpZGUgdGhlIGZvcm1lciBpZiB5b3UgbmVlZCB0byBhc3NpZ24gZGlmZmVyZW50IGRhdGEKKwlyZWNvcmRzIHBlciBQQ00gc3Vic3RyZWFtLiAgRm9yIGV4YW1wbGUsIHRoZSBjbWk4MzMwIGRyaXZlciBhc3NpZ25zCisJZGlmZmVyZW50IHByaXZhdGVfZGF0YSBmb3IgcGxheWJhY2sgYW5kIGNhcHR1cmUgZGlyZWN0aW9ucywKKwliZWNhdXNlIGl0IHVzZXMgdHdvIGRpZmZlcmVudCBjb2RlY3MgKFNCLSBhbmQgQUQtY29tcGF0aWJsZSkgZm9yCisJZGlmZmVyZW50IGRpcmVjdGlvbnMuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxzZWN0aW9uIGlkPSJwY20taW50ZXJmYWNlLW9wZXJhdG9ycy1vcGVuLWNhbGxiYWNrIj4KKyAgICAgICAgPHRpdGxlPm9wZW4gY2FsbGJhY2s8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0YXRpYyBpbnQgc25kX3h4eF9vcGVuKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKTsKK11dPgorICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworICAgICAgICAgIFRoaXMgaXMgY2FsbGVkIHdoZW4gYSBwY20gc3Vic3RyZWFtIGlzIG9wZW5lZC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEF0IGxlYXN0LCBoZXJlIHlvdSBoYXZlIHRvIGluaXRpYWxpemUgdGhlIHJ1bnRpbWUtJmd0O2h3CisgICAgICAgICAgcmVjb3JkLiBUeXBpY2FsbHksIHRoaXMgaXMgZG9uZSBieSBsaWtlIHRoaXM6IAorCisgICAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdGF0aWMgaW50IHNuZF94eHhfb3BlbihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKKyAgeworICAgICAgICAgIHN0cnVjdCBteWNoaXAgKmNoaXAgPSBzbmRfcGNtX3N1YnN0cmVhbV9jaGlwKHN1YnN0cmVhbSk7CisgICAgICAgICAgc3RydWN0IHNuZF9wY21fcnVudGltZSAqcnVudGltZSA9IHN1YnN0cmVhbS0+cnVudGltZTsKKworICAgICAgICAgIHJ1bnRpbWUtPmh3ID0gc25kX215Y2hpcF9wbGF5YmFja19odzsKKyAgICAgICAgICByZXR1cm4gMDsKKyAgfQorXV0+CisgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCisgICAgICAgICAgd2hlcmUgPHBhcmFtZXRlcj5zbmRfbXljaGlwX3BsYXliYWNrX2h3PC9wYXJhbWV0ZXI+IGlzIHRoZQorICAgICAgICAgIHByZS1kZWZpbmVkIGhhcmR3YXJlIGRlc2NyaXB0aW9uLgorCTwvcGFyYT4KKworCTxwYXJhPgorCVlvdSBjYW4gYWxsb2NhdGUgYSBwcml2YXRlIGRhdGEgaW4gdGhpcyBjYWxsYmFjaywgYXMgZGVzY3JpYmVkCisJaW4gPGxpbmsgbGlua2VuZD0icGNtLWludGVyZmFjZS1ydW50aW1lLXByaXZhdGUiPjxjaXRldGl0bGU+CisJUHJpdmF0ZSBEYXRhPC9jaXRldGl0bGU+PC9saW5rPiBzZWN0aW9uLgorCTwvcGFyYT4KKworCTxwYXJhPgorCUlmIHRoZSBoYXJkd2FyZSBjb25maWd1cmF0aW9uIG5lZWRzIG1vcmUgY29uc3RyYWludHMsIHNldCB0aGUKKwloYXJkd2FyZSBjb25zdHJhaW50cyBoZXJlLCB0b28uCisJU2VlIDxsaW5rIGxpbmtlbmQ9InBjbS1pbnRlcmZhY2UtY29uc3RyYWludHMiPjxjaXRldGl0bGU+CisJQ29uc3RyYWludHM8L2NpdGV0aXRsZT48L2xpbms+IGZvciBtb3JlIGRldGFpbHMuCisJPC9wYXJhPgorICAgICAgPC9zZWN0aW9uPgorCisgICAgICA8c2VjdGlvbiBpZD0icGNtLWludGVyZmFjZS1vcGVyYXRvcnMtY2xvc2UtY2FsbGJhY2siPgorICAgICAgICA8dGl0bGU+Y2xvc2UgY2FsbGJhY2s8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0YXRpYyBpbnQgc25kX3h4eF9jbG9zZShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSk7CitdXT4KKyAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisKKyAgICAgICAgICBPYnZpb3VzbHksIHRoaXMgaXMgY2FsbGVkIHdoZW4gYSBwY20gc3Vic3RyZWFtIGlzIGNsb3NlZC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEFueSBwcml2YXRlIGluc3RhbmNlIGZvciBhIHBjbSBzdWJzdHJlYW0gYWxsb2NhdGVkIGluIHRoZQorICAgICAgICAgIG9wZW4gY2FsbGJhY2sgd2lsbCBiZSByZWxlYXNlZCBoZXJlLiAKKworICAgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RhdGljIGludCBzbmRfeHh4X2Nsb3NlKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQorICB7CisgICAgICAgICAgLi4uLgorICAgICAgICAgIGtmcmVlKHN1YnN0cmVhbS0+cnVudGltZS0+cHJpdmF0ZV9kYXRhKTsKKyAgICAgICAgICAuLi4uCisgIH0KK11dPgorICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0aW9uPgorCisgICAgICA8c2VjdGlvbiBpZD0icGNtLWludGVyZmFjZS1vcGVyYXRvcnMtaW9jdGwtY2FsbGJhY2siPgorICAgICAgICA8dGl0bGU+aW9jdGwgY2FsbGJhY2s8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGlzIGlzIHVzZWQgZm9yIGFueSBzcGVjaWFsIGNhbGwgdG8gcGNtIGlvY3Rscy4gQnV0CisgICAgICAgIHVzdWFsbHkgeW91IGNhbiBwYXNzIGEgZ2VuZXJpYyBpb2N0bCBjYWxsYmFjaywgCisgICAgICAgIDxmdW5jdGlvbj5zbmRfcGNtX2xpYl9pb2N0bDwvZnVuY3Rpb24+LgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3Rpb24+CisKKyAgICAgIDxzZWN0aW9uIGlkPSJwY20taW50ZXJmYWNlLW9wZXJhdG9ycy1ody1wYXJhbXMtY2FsbGJhY2siPgorICAgICAgICA8dGl0bGU+aHdfcGFyYW1zIGNhbGxiYWNrPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdGF0aWMgaW50IHNuZF94eHhfaHdfcGFyYW1zKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqaHdfcGFyYW1zKTsKK11dPgorICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoaXMgaXMgY2FsbGVkIHdoZW4gdGhlIGhhcmR3YXJlIHBhcmFtZXRlcgorICAgICAgICAoPHN0cnVjdGZpZWxkPmh3X3BhcmFtczwvc3RydWN0ZmllbGQ+KSBpcyBzZXQKKyAgICAgICAgdXAgYnkgdGhlIGFwcGxpY2F0aW9uLCAKKyAgICAgICAgdGhhdCBpcywgb25jZSB3aGVuIHRoZSBidWZmZXIgc2l6ZSwgdGhlIHBlcmlvZCBzaXplLCB0aGUKKyAgICAgICAgZm9ybWF0LCBldGMuIGFyZSBkZWZpbmVkIGZvciB0aGUgcGNtIHN1YnN0cmVhbS4gCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICBNYW55IGhhcmR3YXJlIHNldHVwcyBzaG91bGQgYmUgZG9uZSBpbiB0aGlzIGNhbGxiYWNrLAorICAgICAgICBpbmNsdWRpbmcgdGhlIGFsbG9jYXRpb24gb2YgYnVmZmVycy4gCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICBQYXJhbWV0ZXJzIHRvIGJlIGluaXRpYWxpemVkIGFyZSByZXRyaWV2ZWQgYnkKKyAgICAgICAgICA8ZnVuY3Rpb24+cGFyYW1zX3h4eCgpPC9mdW5jdGlvbj4gbWFjcm9zLiBUbyBhbGxvY2F0ZQorICAgICAgICAgIGJ1ZmZlciwgeW91IGNhbiBjYWxsIGEgaGVscGVyIGZ1bmN0aW9uLCAKKworICAgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc25kX3BjbV9saWJfbWFsbG9jX3BhZ2VzKHN1YnN0cmVhbSwgcGFyYW1zX2J1ZmZlcl9ieXRlcyhod19wYXJhbXMpKTsKK11dPgorICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworICAgICAgICAgIDxmdW5jdGlvbj5zbmRfcGNtX2xpYl9tYWxsb2NfcGFnZXMoKTwvZnVuY3Rpb24+IGlzIGF2YWlsYWJsZQorCSAgb25seSB3aGVuIHRoZSBETUEgYnVmZmVycyBoYXZlIGJlZW4gcHJlLWFsbG9jYXRlZC4KKwkgIFNlZSB0aGUgc2VjdGlvbiA8bGluaworCSAgbGlua2VuZD0iYnVmZmVyLWFuZC1tZW1vcnktYnVmZmVyLXR5cGVzIj48Y2l0ZXRpdGxlPgorCSAgQnVmZmVyIFR5cGVzPC9jaXRldGl0bGU+PC9saW5rPiBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgTm90ZSB0aGF0IHRoaXMgYW5kIDxzdHJ1Y3RmaWVsZD5wcmVwYXJlPC9zdHJ1Y3RmaWVsZD4gY2FsbGJhY2tzCisgICAgICAgIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgcGVyIGluaXRpYWxpemF0aW9uLgorICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIE9TUyBlbXVsYXRpb24gbWF5CisgICAgICAgIGNhbGwgdGhlc2UgY2FsbGJhY2tzIGF0IGVhY2ggY2hhbmdlIHZpYSBpdHMgaW9jdGwuIAorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGh1cywgeW91IG5lZWQgdG8gYmUgY2FyZWZ1bCBub3QgdG8gYWxsb2NhdGUgdGhlIHNhbWUgYnVmZmVycworICAgICAgICBtYW55IHRpbWVzLCB3aGljaCB3aWxsIGxlYWQgdG8gbWVtb3J5IGxlYWtzISAgQ2FsbGluZyB0aGUKKyAgICAgICAgaGVscGVyIGZ1bmN0aW9uIGFib3ZlIG1hbnkgdGltZXMgaXMgT0suIEl0IHdpbGwgcmVsZWFzZSB0aGUKKyAgICAgICAgcHJldmlvdXMgYnVmZmVyIGF1dG9tYXRpY2FsbHkgd2hlbiBpdCB3YXMgYWxyZWFkeSBhbGxvY2F0ZWQuIAorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgQW5vdGhlciBub3RlIGlzIHRoYXQgdGhpcyBjYWxsYmFjayBpcyBub24tYXRvbWljCisgICAgICAgIChzY2hlZHVsYWJsZSkgYXMgZGVmYXVsdCwgaS5lLiB3aGVuIG5vCisJPHN0cnVjdGZpZWxkPm5vbmF0b21pYzwvc3RydWN0ZmllbGQ+IGZsYWcgc2V0LgorCVRoaXMgaXMgaW1wb3J0YW50LCBiZWNhdXNlIHRoZQorICAgICAgICA8c3RydWN0ZmllbGQ+dHJpZ2dlcjwvc3RydWN0ZmllbGQ+IGNhbGxiYWNrIAorICAgICAgICBpcyBhdG9taWMgKG5vbi1zY2hlZHVsYWJsZSkuIFRoYXQgaXMsIG11dGV4ZXMgb3IgYW55CisgICAgICAgIHNjaGVkdWxlLXJlbGF0ZWQgZnVuY3Rpb25zIGFyZSBub3QgYXZhaWxhYmxlIGluCisgICAgICAgIDxzdHJ1Y3RmaWVsZD50cmlnZ2VyPC9zdHJ1Y3RmaWVsZD4gY2FsbGJhY2suCisJUGxlYXNlIHNlZSB0aGUgc3Vic2VjdGlvbgorCTxsaW5rIGxpbmtlbmQ9InBjbS1pbnRlcmZhY2UtYXRvbWljaXR5Ij48Y2l0ZXRpdGxlPgorCUF0b21pY2l0eTwvY2l0ZXRpdGxlPjwvbGluaz4gZm9yIGRldGFpbHMuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdGlvbj4KKworICAgICAgPHNlY3Rpb24gaWQ9InBjbS1pbnRlcmZhY2Utb3BlcmF0b3JzLWh3LWZyZWUtY2FsbGJhY2siPgorICAgICAgICA8dGl0bGU+aHdfZnJlZSBjYWxsYmFjazwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RhdGljIGludCBzbmRfeHh4X2h3X2ZyZWUoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pOworXV0+CisgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhpcyBpcyBjYWxsZWQgdG8gcmVsZWFzZSB0aGUgcmVzb3VyY2VzIGFsbG9jYXRlZCB2aWEKKyAgICAgICAgICA8c3RydWN0ZmllbGQ+aHdfcGFyYW1zPC9zdHJ1Y3RmaWVsZD4uIEZvciBleGFtcGxlLCByZWxlYXNpbmcgdGhlCisgICAgICAgICAgYnVmZmVyIHZpYSAKKyAgICAgICAgICA8ZnVuY3Rpb24+c25kX3BjbV9saWJfbWFsbG9jX3BhZ2VzKCk8L2Z1bmN0aW9uPiBpcyBkb25lIGJ5CisgICAgICAgICAgY2FsbGluZyB0aGUgZm9sbG93aW5nOiAKKworICAgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc25kX3BjbV9saWJfZnJlZV9wYWdlcyhzdWJzdHJlYW0pOworXV0+CisgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyBhbHdheXMgY2FsbGVkIGJlZm9yZSB0aGUgY2xvc2UgY2FsbGJhY2sgaXMgY2FsbGVkLgorICAgICAgICAgIEFsc28sIHRoZSBjYWxsYmFjayBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLCB0b28uCisgICAgICAgICAgS2VlcCB0cmFjayB3aGV0aGVyIHRoZSByZXNvdXJjZSB3YXMgYWxyZWFkeSByZWxlYXNlZC4gCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdGlvbj4KKworICAgICAgPHNlY3Rpb24gaWQ9InBjbS1pbnRlcmZhY2Utb3BlcmF0b3JzLXByZXBhcmUtY2FsbGJhY2siPgorICAgICAgIDx0aXRsZT5wcmVwYXJlIGNhbGxiYWNrPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdGF0aWMgaW50IHNuZF94eHhfcHJlcGFyZShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSk7CitdXT4KKyAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGlzIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuIHRoZSBwY20gaXMKKyAgICAgICAgPHF1b3RlPnByZXBhcmVkPC9xdW90ZT4uIFlvdSBjYW4gc2V0IHRoZSBmb3JtYXQgdHlwZSwgc2FtcGxlCisgICAgICAgIHJhdGUsIGV0Yy4gaGVyZS4gVGhlIGRpZmZlcmVuY2UgZnJvbQorICAgICAgICA8c3RydWN0ZmllbGQ+aHdfcGFyYW1zPC9zdHJ1Y3RmaWVsZD4gaXMgdGhhdCB0aGUgCisgICAgICAgIDxzdHJ1Y3RmaWVsZD5wcmVwYXJlPC9zdHJ1Y3RmaWVsZD4gY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgZWFjaAorICAgICAgICB0aW1lIAorICAgICAgICA8ZnVuY3Rpb24+c25kX3BjbV9wcmVwYXJlKCk8L2Z1bmN0aW9uPiBpcyBjYWxsZWQsIGkuZS4gd2hlbgorICAgICAgICByZWNvdmVyaW5nIGFmdGVyIHVuZGVycnVucywgZXRjLiAKKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorCU5vdGUgdGhhdCB0aGlzIGNhbGxiYWNrIGlzIG5vdyBub24tYXRvbWljLgorCVlvdSBjYW4gdXNlIHNjaGVkdWxlLXJlbGF0ZWQgZnVuY3Rpb25zIHNhZmVseSBpbiB0aGlzIGNhbGxiYWNrLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgSW4gdGhpcyBhbmQgdGhlIGZvbGxvd2luZyBjYWxsYmFja3MsIHlvdSBjYW4gcmVmZXIgdG8gdGhlCisgICAgICAgIHZhbHVlcyB2aWEgdGhlIHJ1bnRpbWUgcmVjb3JkLAorICAgICAgICBzdWJzdHJlYW0tJmd0O3J1bnRpbWUuCisgICAgICAgIEZvciBleGFtcGxlLCB0byBnZXQgdGhlIGN1cnJlbnQKKyAgICAgICAgcmF0ZSwgZm9ybWF0IG9yIGNoYW5uZWxzLCBhY2Nlc3MgdG8KKyAgICAgICAgcnVudGltZS0mZ3Q7cmF0ZSwKKyAgICAgICAgcnVudGltZS0mZ3Q7Zm9ybWF0IG9yCisgICAgICAgIHJ1bnRpbWUtJmd0O2NoYW5uZWxzLCByZXNwZWN0aXZlbHkuIAorICAgICAgICBUaGUgcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgYWxsb2NhdGVkIGJ1ZmZlciBpcyBzZXQgdG8KKwlydW50aW1lLSZndDtkbWFfYXJlYS4gIFRoZSBidWZmZXIgYW5kIHBlcmlvZCBzaXplcyBhcmUKKwlpbiBydW50aW1lLSZndDtidWZmZXJfc2l6ZSBhbmQgcnVudGltZS0mZ3Q7cGVyaW9kX3NpemUsCisJcmVzcGVjdGl2ZWx5LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgQmUgY2FyZWZ1bCB0aGF0IHRoaXMgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgbWFueSB0aW1lcyBhdAorICAgICAgICBlYWNoIHNldHVwLCB0b28uIAorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3Rpb24+CisKKyAgICAgIDxzZWN0aW9uIGlkPSJwY20taW50ZXJmYWNlLW9wZXJhdG9ycy10cmlnZ2VyLWNhbGxiYWNrIj4KKyAgICAgICAgPHRpdGxlPnRyaWdnZXIgY2FsbGJhY2s8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0YXRpYyBpbnQgc25kX3h4eF90cmlnZ2VyKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLCBpbnQgY21kKTsKK11dPgorICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworICAgICAgICAgIFRoaXMgaXMgY2FsbGVkIHdoZW4gdGhlIHBjbSBpcyBzdGFydGVkLCBzdG9wcGVkIG9yIHBhdXNlZC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFdoaWNoIGFjdGlvbiBpcyBzcGVjaWZpZWQgaW4gdGhlIHNlY29uZCBhcmd1bWVudCwKKyAgICAgICAgICA8Y29uc3RhbnQ+U05EUlZfUENNX1RSSUdHRVJfWFhYPC9jb25zdGFudD4gaW4KKyAgICAgICAgICA8ZmlsZW5hbWU+Jmx0O3NvdW5kL3BjbS5oJmd0OzwvZmlsZW5hbWU+LiBBdCBsZWFzdCwKKyAgICAgICAgICB0aGUgPGNvbnN0YW50PlNUQVJUPC9jb25zdGFudD4gYW5kIDxjb25zdGFudD5TVE9QPC9jb25zdGFudD4KKyAgICAgICAgICBjb21tYW5kcyBtdXN0IGJlIGRlZmluZWQgaW4gdGhpcyBjYWxsYmFjay4gCisKKyAgICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN3aXRjaCAoY21kKSB7CisgIGNhc2UgU05EUlZfUENNX1RSSUdHRVJfU1RBUlQ6CisgICAgICAgICAgLyogZG8gc29tZXRoaW5nIHRvIHN0YXJ0IHRoZSBQQ00gZW5naW5lICovCisgICAgICAgICAgYnJlYWs7CisgIGNhc2UgU05EUlZfUENNX1RSSUdHRVJfU1RPUDoKKyAgICAgICAgICAvKiBkbyBzb21ldGhpbmcgdG8gc3RvcCB0aGUgUENNIGVuZ2luZSAqLworICAgICAgICAgIGJyZWFrOworICBkZWZhdWx0OgorICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICB9CitdXT4KKyAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICBXaGVuIHRoZSBwY20gc3VwcG9ydHMgdGhlIHBhdXNlIG9wZXJhdGlvbiAoZ2l2ZW4gaW4gdGhlIGluZm8KKyAgICAgICAgZmllbGQgb2YgdGhlIGhhcmR3YXJlIHRhYmxlKSwgdGhlIDxjb25zdGFudD5QQVVTRV9QVVNIPC9jb25zdGFudD4KKyAgICAgICAgYW5kIDxjb25zdGFudD5QQVVTRV9SRUxFQVNFPC9jb25zdGFudD4gY29tbWFuZHMgbXVzdCBiZQorICAgICAgICBoYW5kbGVkIGhlcmUsIHRvby4gVGhlIGZvcm1lciBpcyB0aGUgY29tbWFuZCB0byBwYXVzZSB0aGUgcGNtLAorICAgICAgICBhbmQgdGhlIGxhdHRlciB0byByZXN0YXJ0IHRoZSBwY20gYWdhaW4uIAorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgV2hlbiB0aGUgcGNtIHN1cHBvcnRzIHRoZSBzdXNwZW5kL3Jlc3VtZSBvcGVyYXRpb24sCisJcmVnYXJkbGVzcyBvZiBmdWxsIG9yIHBhcnRpYWwgc3VzcGVuZC9yZXN1bWUgc3VwcG9ydCwKKyAgICAgICAgdGhlIDxjb25zdGFudD5TVVNQRU5EPC9jb25zdGFudD4gYW5kIDxjb25zdGFudD5SRVNVTUU8L2NvbnN0YW50PgorICAgICAgICBjb21tYW5kcyBtdXN0IGJlIGhhbmRsZWQsIHRvby4KKyAgICAgICAgVGhlc2UgY29tbWFuZHMgYXJlIGlzc3VlZCB3aGVuIHRoZSBwb3dlci1tYW5hZ2VtZW50IHN0YXR1cyBpcworICAgICAgICBjaGFuZ2VkLiAgT2J2aW91c2x5LCB0aGUgPGNvbnN0YW50PlNVU1BFTkQ8L2NvbnN0YW50PiBhbmQKKyAgICAgICAgPGNvbnN0YW50PlJFU1VNRTwvY29uc3RhbnQ+IGNvbW1hbmRzCisgICAgICAgIHN1c3BlbmQgYW5kIHJlc3VtZSB0aGUgcGNtIHN1YnN0cmVhbSwgYW5kIHVzdWFsbHksIHRoZXkKKyAgICAgICAgYXJlIGlkZW50aWNhbCB0byB0aGUgPGNvbnN0YW50PlNUT1A8L2NvbnN0YW50PiBhbmQKKyAgICAgICAgPGNvbnN0YW50PlNUQVJUPC9jb25zdGFudD4gY29tbWFuZHMsIHJlc3BlY3RpdmVseS4KKwkgIFNlZSB0aGUgPGxpbmsgbGlua2VuZD0icG93ZXItbWFuYWdlbWVudCI+PGNpdGV0aXRsZT4KKwlQb3dlciBNYW5hZ2VtZW50PC9jaXRldGl0bGU+PC9saW5rPiBzZWN0aW9uIGZvciBkZXRhaWxzLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgQXMgbWVudGlvbmVkLCB0aGlzIGNhbGxiYWNrIGlzIGF0b21pYyBhcyBkZWZhdWx0IHVubGVzcworCSAgPHN0cnVjdGZpZWxkPm5vbmF0b21pYzwvc3RydWN0ZmllbGQ+IGZsYWcgc2V0LCBhbmQKKwkgIHlvdSBjYW5ub3QgY2FsbCBmdW5jdGlvbnMgd2hpY2ggbWF5IHNsZWVwLgorCSAgVGhlIHRyaWdnZXIgY2FsbGJhY2sgc2hvdWxkIGJlIGFzIG1pbmltYWwgYXMgcG9zc2libGUsCisJICBqdXN0IHJlYWxseSB0cmlnZ2VyaW5nIHRoZSBETUEuICBUaGUgb3RoZXIgc3R1ZmYgc2hvdWxkIGJlCisJICBpbml0aWFsaXplZCBod19wYXJhbXMgYW5kIHByZXBhcmUgY2FsbGJhY2tzIHByb3Blcmx5CisJICBiZWZvcmVoYW5kLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3Rpb24+CisKKyAgICAgIDxzZWN0aW9uIGlkPSJwY20taW50ZXJmYWNlLW9wZXJhdG9ycy1wb2ludGVyLWNhbGxiYWNrIj4KKyAgICAgICAgPHRpdGxlPnBvaW50ZXIgY2FsbGJhY2s8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0YXRpYyBzbmRfcGNtX3VmcmFtZXNfdCBzbmRfeHh4X3BvaW50ZXIoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCitdXT4KKyAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisKKyAgICAgICAgICBUaGlzIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuIHRoZSBQQ00gbWlkZGxlIGxheWVyIGlucXVpcmVzCisgICAgICAgIHRoZSBjdXJyZW50IGhhcmR3YXJlIHBvc2l0aW9uIG9uIHRoZSBidWZmZXIuIFRoZSBwb3NpdGlvbiBtdXN0CisgICAgICAgIGJlIHJldHVybmVkIGluIGZyYW1lcywKKyAgICAgICAgcmFuZ2luZyBmcm9tIDAgdG8gYnVmZmVyX3NpemUgLSAxLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhpcyBpcyBjYWxsZWQgdXN1YWxseSBmcm9tIHRoZSBidWZmZXItdXBkYXRlIHJvdXRpbmUgaW4gdGhlCisgICAgICAgIHBjbSBtaWRkbGUgbGF5ZXIsIHdoaWNoIGlzIGludm9rZWQgd2hlbgorICAgICAgICA8ZnVuY3Rpb24+c25kX3BjbV9wZXJpb2RfZWxhcHNlZCgpPC9mdW5jdGlvbj4gaXMgY2FsbGVkIGluIHRoZQorICAgICAgICBpbnRlcnJ1cHQgcm91dGluZS4gVGhlbiB0aGUgcGNtIG1pZGRsZSBsYXllciB1cGRhdGVzIHRoZQorICAgICAgICBwb3NpdGlvbiBhbmQgY2FsY3VsYXRlcyB0aGUgYXZhaWxhYmxlIHNwYWNlLCBhbmQgd2FrZXMgdXAgdGhlCisgICAgICAgIHNsZWVwaW5nIHBvbGwgdGhyZWFkcywgZXRjLiAKKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoaXMgY2FsbGJhY2sgaXMgYWxzbyBhdG9taWMgYXMgZGVmYXVsdC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0aW9uPgorCisgICAgICA8c2VjdGlvbiBpZD0icGNtLWludGVyZmFjZS1vcGVyYXRvcnMtY29weS1zaWxlbmNlIj4KKyAgICAgICAgPHRpdGxlPmNvcHkgYW5kIHNpbGVuY2UgY2FsbGJhY2tzPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlc2UgY2FsbGJhY2tzIGFyZSBub3QgbWFuZGF0b3J5LCBhbmQgY2FuIGJlIG9taXR0ZWQgaW4KKyAgICAgICAgbW9zdCBjYXNlcy4gVGhlc2UgY2FsbGJhY2tzIGFyZSB1c2VkIHdoZW4gdGhlIGhhcmR3YXJlIGJ1ZmZlcgorICAgICAgICBjYW5ub3QgYmUgaW4gdGhlIG5vcm1hbCBtZW1vcnkgc3BhY2UuIFNvbWUgY2hpcHMgaGF2ZSB0aGVpcgorICAgICAgICBvd24gYnVmZmVyIG9uIHRoZSBoYXJkd2FyZSB3aGljaCBpcyBub3QgbWFwcGFibGUuIEluIHN1Y2ggYQorICAgICAgICBjYXNlLCB5b3UgaGF2ZSB0byB0cmFuc2ZlciB0aGUgZGF0YSBtYW51YWxseSBmcm9tIHRoZSBtZW1vcnkKKyAgICAgICAgYnVmZmVyIHRvIHRoZSBoYXJkd2FyZSBidWZmZXIuIE9yLCBpZiB0aGUgYnVmZmVyIGlzCisgICAgICAgIG5vbi1jb250aWd1b3VzIG9uIGJvdGggcGh5c2ljYWwgYW5kIHZpcnR1YWwgbWVtb3J5IHNwYWNlcywKKyAgICAgICAgdGhlc2UgY2FsbGJhY2tzIG11c3QgYmUgZGVmaW5lZCwgdG9vLiAKKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIElmIHRoZXNlIHR3byBjYWxsYmFja3MgYXJlIGRlZmluZWQsIGNvcHkgYW5kIHNldC1zaWxlbmNlCisgICAgICAgIG9wZXJhdGlvbnMgYXJlIGRvbmUgYnkgdGhlbS4gVGhlIGRldGFpbGVkIHdpbGwgYmUgZGVzY3JpYmVkIGluCisgICAgICAgIHRoZSBsYXRlciBzZWN0aW9uIDxsaW5rCisgICAgICAgIGxpbmtlbmQ9ImJ1ZmZlci1hbmQtbWVtb3J5Ij48Y2l0ZXRpdGxlPkJ1ZmZlciBhbmQgTWVtb3J5CisgICAgICAgIE1hbmFnZW1lbnQ8L2NpdGV0aXRsZT48L2xpbms+LiAKKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0aW9uPgorCisgICAgICA8c2VjdGlvbiBpZD0icGNtLWludGVyZmFjZS1vcGVyYXRvcnMtYWNrIj4KKyAgICAgICAgPHRpdGxlPmFjayBjYWxsYmFjazwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoaXMgY2FsbGJhY2sgaXMgYWxzbyBub3QgbWFuZGF0b3J5LiBUaGlzIGNhbGxiYWNrIGlzIGNhbGxlZAorICAgICAgICB3aGVuIHRoZSBhcHBsX3B0ciBpcyB1cGRhdGVkIGluIHJlYWQgb3Igd3JpdGUgb3BlcmF0aW9ucy4KKyAgICAgICAgU29tZSBkcml2ZXJzIGxpa2UgZW11MTBrMS1meCBhbmQgY3M0Nnh4IG5lZWQgdG8gdHJhY2sgdGhlCisJY3VycmVudCBhcHBsX3B0ciBmb3IgdGhlIGludGVybmFsIGJ1ZmZlciwgYW5kIHRoaXMgY2FsbGJhY2sKKwlpcyB1c2VmdWwgb25seSBmb3Igc3VjaCBhIHB1cnBvc2UuCisJPC9wYXJhPgorCTxwYXJhPgorCSAgVGhpcyBjYWxsYmFjayBpcyBhdG9taWMgYXMgZGVmYXVsdC4KKwk8L3BhcmE+CisgICAgICA8L3NlY3Rpb24+CisKKyAgICAgIDxzZWN0aW9uIGlkPSJwY20taW50ZXJmYWNlLW9wZXJhdG9ycy1wYWdlLWNhbGxiYWNrIj4KKyAgICAgICAgPHRpdGxlPnBhZ2UgY2FsbGJhY2s8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwgdG9vLiBUaGlzIGNhbGxiYWNrIGlzIHVzZWQKKyAgICAgICAgbWFpbmx5IGZvciBub24tY29udGlndW91cyBidWZmZXJzLiBUaGUgbW1hcCBjYWxscyB0aGlzCisgICAgICAgIGNhbGxiYWNrIHRvIGdldCB0aGUgcGFnZSBhZGRyZXNzLiBTb21lIGV4YW1wbGVzIHdpbGwgYmUKKyAgICAgICAgZXhwbGFpbmVkIGluIHRoZSBsYXRlciBzZWN0aW9uIDxsaW5rCisgICAgICAgIGxpbmtlbmQ9ImJ1ZmZlci1hbmQtbWVtb3J5Ij48Y2l0ZXRpdGxlPkJ1ZmZlciBhbmQgTWVtb3J5CisgICAgICAgIE1hbmFnZW1lbnQ8L2NpdGV0aXRsZT48L2xpbms+LCB0b28uIAorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3Rpb24+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9InBjbS1pbnRlcmZhY2UtaW50ZXJydXB0LWhhbmRsZXIiPgorICAgICAgPHRpdGxlPkludGVycnVwdCBIYW5kbGVyPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgcmVzdCBvZiBwY20gc3R1ZmYgaXMgdGhlIFBDTSBpbnRlcnJ1cHQgaGFuZGxlci4gVGhlCisgICAgICByb2xlIG9mIFBDTSBpbnRlcnJ1cHQgaGFuZGxlciBpbiB0aGUgc291bmQgZHJpdmVyIGlzIHRvIHVwZGF0ZQorICAgICAgdGhlIGJ1ZmZlciBwb3NpdGlvbiBhbmQgdG8gdGVsbCB0aGUgUENNIG1pZGRsZSBsYXllciB3aGVuIHRoZQorICAgICAgYnVmZmVyIHBvc2l0aW9uIGdvZXMgYWNyb3NzIHRoZSBwcmVzY3JpYmVkIHBlcmlvZCBzaXplLiBUbworICAgICAgaW5mb3JtIHRoaXMsIGNhbGwgdGhlIDxmdW5jdGlvbj5zbmRfcGNtX3BlcmlvZF9lbGFwc2VkKCk8L2Z1bmN0aW9uPgorICAgICAgZnVuY3Rpb24uIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlcmUgYXJlIHNldmVyYWwgdHlwZXMgb2Ygc291bmQgY2hpcHMgdG8gZ2VuZXJhdGUgdGhlIGludGVycnVwdHMuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxzZWN0aW9uIGlkPSJwY20taW50ZXJmYWNlLWludGVycnVwdC1oYW5kbGVyLWJvdW5kYXJ5Ij4KKyAgICAgICAgPHRpdGxlPkludGVycnVwdHMgYXQgdGhlIHBlcmlvZCAoZnJhZ21lbnQpIGJvdW5kYXJ5PC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhpcyBpcyB0aGUgbW9zdCBmcmVxdWVudGx5IGZvdW5kIHR5cGU6ICB0aGUgaGFyZHdhcmUKKyAgICAgICAgZ2VuZXJhdGVzIGFuIGludGVycnVwdCBhdCBlYWNoIHBlcmlvZCBib3VuZGFyeS4KKwlJbiB0aGlzIGNhc2UsIHlvdSBjYW4gY2FsbAorICAgICAgICA8ZnVuY3Rpb24+c25kX3BjbV9wZXJpb2RfZWxhcHNlZCgpPC9mdW5jdGlvbj4gYXQgZWFjaCAKKyAgICAgICAgaW50ZXJydXB0LiAKKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIDxmdW5jdGlvbj5zbmRfcGNtX3BlcmlvZF9lbGFwc2VkKCk8L2Z1bmN0aW9uPiB0YWtlcyB0aGUKKyAgICAgICAgc3Vic3RyZWFtIHBvaW50ZXIgYXMgaXRzIGFyZ3VtZW50LiBUaHVzLCB5b3UgbmVlZCB0byBrZWVwIHRoZQorICAgICAgICBzdWJzdHJlYW0gcG9pbnRlciBhY2Nlc3NpYmxlIGZyb20gdGhlIGNoaXAgaW5zdGFuY2UuIEZvcgorICAgICAgICBleGFtcGxlLCBkZWZpbmUgc3Vic3RyZWFtIGZpZWxkIGluIHRoZSBjaGlwIHJlY29yZCB0byBob2xkIHRoZQorICAgICAgICBjdXJyZW50IHJ1bm5pbmcgc3Vic3RyZWFtIHBvaW50ZXIsIGFuZCBzZXQgdGhlIHBvaW50ZXIgdmFsdWUKKyAgICAgICAgYXQgb3BlbiBjYWxsYmFjayAoYW5kIHJlc2V0IGF0IGNsb3NlIGNhbGxiYWNrKS4gCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJZiB5b3UgYWNxdWlyZSBhIHNwaW5sb2NrIGluIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciwgYW5kIHRoZQorICAgICAgICBsb2NrIGlzIHVzZWQgaW4gb3RoZXIgcGNtIGNhbGxiYWNrcywgdG9vLCB0aGVuIHlvdSBoYXZlIHRvCisgICAgICAgIHJlbGVhc2UgdGhlIGxvY2sgYmVmb3JlIGNhbGxpbmcKKyAgICAgICAgPGZ1bmN0aW9uPnNuZF9wY21fcGVyaW9kX2VsYXBzZWQoKTwvZnVuY3Rpb24+LCBiZWNhdXNlCisgICAgICAgIDxmdW5jdGlvbj5zbmRfcGNtX3BlcmlvZF9lbGFwc2VkKCk8L2Z1bmN0aW9uPiBjYWxscyBvdGhlciBwY20KKyAgICAgICAgY2FsbGJhY2tzIGluc2lkZS4gCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUeXBpY2FsIGNvZGUgd291bGQgYmUgbGlrZToKKworICAgICAgICAgIDxleGFtcGxlPgorCSAgICA8dGl0bGU+SW50ZXJydXB0IEhhbmRsZXIgQ2FzZSAjMTwvdGl0bGU+CisgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RhdGljIGlycXJldHVybl90IHNuZF9teWNoaXBfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pZCkKKyAgeworICAgICAgICAgIHN0cnVjdCBteWNoaXAgKmNoaXAgPSBkZXZfaWQ7CisgICAgICAgICAgc3Bpbl9sb2NrKCZjaGlwLT5sb2NrKTsKKyAgICAgICAgICAuLi4uCisgICAgICAgICAgaWYgKHBjbV9pcnFfaW52b2tlZChjaGlwKSkgeworICAgICAgICAgICAgICAgICAgLyogY2FsbCB1cGRhdGVyLCB1bmxvY2sgYmVmb3JlIGl0ICovCisgICAgICAgICAgICAgICAgICBzcGluX3VubG9jaygmY2hpcC0+bG9jayk7CisgICAgICAgICAgICAgICAgICBzbmRfcGNtX3BlcmlvZF9lbGFwc2VkKGNoaXAtPnN1YnN0cmVhbSk7CisgICAgICAgICAgICAgICAgICBzcGluX2xvY2soJmNoaXAtPmxvY2spOworICAgICAgICAgICAgICAgICAgLyogYWNrbm93bGVkZ2UgdGhlIGludGVycnVwdCBpZiBuZWNlc3NhcnkgKi8KKyAgICAgICAgICB9CisgICAgICAgICAgLi4uLgorICAgICAgICAgIHNwaW5fdW5sb2NrKCZjaGlwLT5sb2NrKTsKKyAgICAgICAgICByZXR1cm4gSVJRX0hBTkRMRUQ7CisgIH0KK11dPgorICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgICA8L2V4YW1wbGU+CisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdGlvbj4KKworICAgICAgPHNlY3Rpb24gaWQ9InBjbS1pbnRlcmZhY2UtaW50ZXJydXB0LWhhbmRsZXItdGltZXIiPgorICAgICAgICA8dGl0bGU+SGlnaCBmcmVxdWVuY3kgdGltZXIgaW50ZXJydXB0czwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorCVRoaXMgaGFwcGVucyB3aGVuIHRoZSBoYXJkd2FyZSBkb2Vzbid0IGdlbmVyYXRlIGludGVycnVwdHMKKyAgICAgICAgYXQgdGhlIHBlcmlvZCBib3VuZGFyeSBidXQgaXNzdWVzIHRpbWVyIGludGVycnVwdHMgYXQgYSBmaXhlZAorICAgICAgICB0aW1lciByYXRlIChlLmcuIGVzMTk2OCBvciB5bWZwY2kgZHJpdmVycykuIAorICAgICAgICBJbiB0aGlzIGNhc2UsIHlvdSBuZWVkIHRvIGNoZWNrIHRoZSBjdXJyZW50IGhhcmR3YXJlCisgICAgICAgIHBvc2l0aW9uIGFuZCBhY2N1bXVsYXRlIHRoZSBwcm9jZXNzZWQgc2FtcGxlIGxlbmd0aCBhdCBlYWNoCisgICAgICAgIGludGVycnVwdC4gIFdoZW4gdGhlIGFjY3VtdWxhdGVkIHNpemUgZXhjZWVkcyB0aGUgcGVyaW9kCisgICAgICAgIHNpemUsIGNhbGwgCisgICAgICAgIDxmdW5jdGlvbj5zbmRfcGNtX3BlcmlvZF9lbGFwc2VkKCk8L2Z1bmN0aW9uPiBhbmQgcmVzZXQgdGhlCisgICAgICAgIGFjY3VtdWxhdG9yLiAKKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIFR5cGljYWwgY29kZSB3b3VsZCBiZSBsaWtlIHRoZSBmb2xsb3dpbmcuCisKKyAgICAgICAgICA8ZXhhbXBsZT4KKwkgICAgPHRpdGxlPkludGVycnVwdCBIYW5kbGVyIENhc2UgIzI8L3RpdGxlPgorICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0YXRpYyBpcnFyZXR1cm5fdCBzbmRfbXljaGlwX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQpCisgIHsKKyAgICAgICAgICBzdHJ1Y3QgbXljaGlwICpjaGlwID0gZGV2X2lkOworICAgICAgICAgIHNwaW5fbG9jaygmY2hpcC0+bG9jayk7CisgICAgICAgICAgLi4uLgorICAgICAgICAgIGlmIChwY21faXJxX2ludm9rZWQoY2hpcCkpIHsKKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsYXN0X3B0ciwgc2l6ZTsKKyAgICAgICAgICAgICAgICAgIC8qIGdldCB0aGUgY3VycmVudCBoYXJkd2FyZSBwb2ludGVyIChpbiBmcmFtZXMpICovCisgICAgICAgICAgICAgICAgICBsYXN0X3B0ciA9IGdldF9od19wdHIoY2hpcCk7CisgICAgICAgICAgICAgICAgICAvKiBjYWxjdWxhdGUgdGhlIHByb2Nlc3NlZCBmcmFtZXMgc2luY2UgdGhlCisgICAgICAgICAgICAgICAgICAgKiBsYXN0IHVwZGF0ZQorICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICBpZiAobGFzdF9wdHIgPCBjaGlwLT5sYXN0X3B0cikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IHJ1bnRpbWUtPmJ1ZmZlcl9zaXplICsgbGFzdF9wdHIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gY2hpcC0+bGFzdF9wdHI7IAorICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gbGFzdF9wdHIgLSBjaGlwLT5sYXN0X3B0cjsKKyAgICAgICAgICAgICAgICAgIC8qIHJlbWVtYmVyIHRoZSBsYXN0IHVwZGF0ZWQgcG9pbnQgKi8KKyAgICAgICAgICAgICAgICAgIGNoaXAtPmxhc3RfcHRyID0gbGFzdF9wdHI7CisgICAgICAgICAgICAgICAgICAvKiBhY2N1bXVsYXRlIHRoZSBzaXplICovCisgICAgICAgICAgICAgICAgICBjaGlwLT5zaXplICs9IHNpemU7CisgICAgICAgICAgICAgICAgICAvKiBvdmVyIHRoZSBwZXJpb2QgYm91bmRhcnk/ICovCisgICAgICAgICAgICAgICAgICBpZiAoY2hpcC0+c2l6ZSA+PSBydW50aW1lLT5wZXJpb2Rfc2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAvKiByZXNldCB0aGUgYWNjdW11bGF0b3IgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpcC0+c2l6ZSAlPSBydW50aW1lLT5wZXJpb2Rfc2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY2FsbCB1cGRhdGVyICovCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZjaGlwLT5sb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc25kX3BjbV9wZXJpb2RfZWxhcHNlZChzdWJzdHJlYW0pOworICAgICAgICAgICAgICAgICAgICAgICAgICBzcGluX2xvY2soJmNoaXAtPmxvY2spOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgLyogYWNrbm93bGVkZ2UgdGhlIGludGVycnVwdCBpZiBuZWNlc3NhcnkgKi8KKyAgICAgICAgICB9CisgICAgICAgICAgLi4uLgorICAgICAgICAgIHNwaW5fdW5sb2NrKCZjaGlwLT5sb2NrKTsKKyAgICAgICAgICByZXR1cm4gSVJRX0hBTkRMRUQ7CisgIH0KK11dPgorICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgICA8L2V4YW1wbGU+CisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdGlvbj4KKworICAgICAgPHNlY3Rpb24gaWQ9InBjbS1pbnRlcmZhY2UtaW50ZXJydXB0LWhhbmRsZXItYm90aCI+CisgICAgICAgIDx0aXRsZT5PbiBjYWxsaW5nIDxmdW5jdGlvbj5zbmRfcGNtX3BlcmlvZF9lbGFwc2VkKCk8L2Z1bmN0aW9uPjwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEluIGJvdGggY2FzZXMsIGV2ZW4gaWYgbW9yZSB0aGFuIG9uZSBwZXJpb2QgYXJlIGVsYXBzZWQsIHlvdQorICAgICAgICBkb24ndCBoYXZlIHRvIGNhbGwKKyAgICAgICAgPGZ1bmN0aW9uPnNuZF9wY21fcGVyaW9kX2VsYXBzZWQoKTwvZnVuY3Rpb24+IG1hbnkgdGltZXMuIENhbGwKKyAgICAgICAgb25seSBvbmNlLiBBbmQgdGhlIHBjbSBsYXllciB3aWxsIGNoZWNrIHRoZSBjdXJyZW50IGhhcmR3YXJlCisgICAgICAgIHBvaW50ZXIgYW5kIHVwZGF0ZSB0byB0aGUgbGF0ZXN0IHN0YXR1cy4gCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0icGNtLWludGVyZmFjZS1hdG9taWNpdHkiPgorICAgICAgPHRpdGxlPkF0b21pY2l0eTwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgIE9uZSBvZiB0aGUgbW9zdCBpbXBvcnRhbnQgKGFuZCB0aHVzIGRpZmZpY3VsdCB0byBkZWJ1ZykgcHJvYmxlbXMKKyAgICAgIGluIGtlcm5lbCBwcm9ncmFtbWluZyBhcmUgcmFjZSBjb25kaXRpb25zLgorICAgICAgSW4gdGhlIExpbnV4IGtlcm5lbCwgdGhleSBhcmUgdXN1YWxseSBhdm9pZGVkIHZpYSBzcGluLWxvY2tzLCBtdXRleGVzCisgICAgICBvciBzZW1hcGhvcmVzLiAgSW4gZ2VuZXJhbCwgaWYgYSByYWNlIGNvbmRpdGlvbiBjYW4gaGFwcGVuCisgICAgICBpbiBhbiBpbnRlcnJ1cHQgaGFuZGxlciwgaXQgaGFzIHRvIGJlIG1hbmFnZWQgYXRvbWljYWxseSwgYW5kIHlvdQorICAgICAgaGF2ZSB0byB1c2UgYSBzcGlubG9jayB0byBwcm90ZWN0IHRoZSBjcml0aWNhbCBzZXNzaW9uLiBJZiB0aGUKKyAgICAgIGNyaXRpY2FsIHNlY3Rpb24gaXMgbm90IGluIGludGVycnVwdCBoYW5kbGVyIGNvZGUgYW5kCisgICAgICBpZiB0YWtpbmcgYSByZWxhdGl2ZWx5IGxvbmcgdGltZSB0byBleGVjdXRlIGlzIGFjY2VwdGFibGUsIHlvdQorICAgICAgc2hvdWxkIHVzZSBtdXRleGVzIG9yIHNlbWFwaG9yZXMgaW5zdGVhZC4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICBBcyBhbHJlYWR5IHNlZW4sIHNvbWUgcGNtIGNhbGxiYWNrcyBhcmUgYXRvbWljIGFuZCBzb21lIGFyZQorICAgICAgbm90LiAgRm9yIGV4YW1wbGUsIHRoZSA8cGFyYW1ldGVyPmh3X3BhcmFtczwvcGFyYW1ldGVyPiBjYWxsYmFjayBpcworICAgICAgbm9uLWF0b21pYywgd2hpbGUgPHBhcmFtZXRlcj50cmlnZ2VyPC9wYXJhbWV0ZXI+IGNhbGxiYWNrIGlzCisgICAgICBhdG9taWMuICBUaGlzIG1lYW5zLCB0aGUgbGF0dGVyIGlzIGNhbGxlZCBhbHJlYWR5IGluIGEgc3BpbmxvY2sKKyAgICAgIGhlbGQgYnkgdGhlIFBDTSBtaWRkbGUgbGF5ZXIuIFBsZWFzZSB0YWtlIHRoaXMgYXRvbWljaXR5IGludG8KKyAgICAgIGFjY291bnQgd2hlbiB5b3UgY2hvb3NlIGEgbG9ja2luZyBzY2hlbWUgaW4gdGhlIGNhbGxiYWNrcy4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICBJbiB0aGUgYXRvbWljIGNhbGxiYWNrcywgeW91IGNhbm5vdCB1c2UgZnVuY3Rpb25zIHdoaWNoIG1heSBjYWxsCisgICAgICA8ZnVuY3Rpb24+c2NoZWR1bGU8L2Z1bmN0aW9uPiBvciBnbyB0bworICAgICAgPGZ1bmN0aW9uPnNsZWVwPC9mdW5jdGlvbj4uICBTZW1hcGhvcmVzIGFuZCBtdXRleGVzIGNhbiBzbGVlcCwKKyAgICAgIGFuZCBoZW5jZSB0aGV5IGNhbm5vdCBiZSB1c2VkIGluc2lkZSB0aGUgYXRvbWljIGNhbGxiYWNrcworICAgICAgKGUuZy4gPHBhcmFtZXRlcj50cmlnZ2VyPC9wYXJhbWV0ZXI+IGNhbGxiYWNrKS4KKyAgICAgIFRvIGltcGxlbWVudCBzb21lIGRlbGF5IGluIHN1Y2ggYSBjYWxsYmFjaywgcGxlYXNlIHVzZQorICAgICAgPGZ1bmN0aW9uPnVkZWxheSgpPC9mdW5jdGlvbj4gb3IgPGZ1bmN0aW9uPm1kZWxheSgpPC9mdW5jdGlvbj4uCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgQWxsIHRocmVlIGF0b21pYyBjYWxsYmFja3MgKHRyaWdnZXIsIHBvaW50ZXIsIGFuZCBhY2spIGFyZQorICAgICAgY2FsbGVkIHdpdGggbG9jYWwgaW50ZXJydXB0cyBkaXNhYmxlZC4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICBUaGUgcmVjZW50IGNoYW5nZXMgaW4gUENNIGNvcmUgY29kZSwgaG93ZXZlciwgYWxsb3cgYWxsIFBDTQorICAgICAgb3BlcmF0aW9ucyB0byBiZSBub24tYXRvbWljLiAgVGhpcyBhc3N1bWVzIHRoYXQgdGhlIGFsbCBjYWxsZXIKKyAgICAgIHNpZGVzIGFyZSBpbiBub24tYXRvbWljIGNvbnRleHRzLiAgRm9yIGV4YW1wbGUsIHRoZSBmdW5jdGlvbgorICAgICAgPGZ1bmN0aW9uPnNuZF9wY21fcGVyaW9kX2VsYXBzZWQoKTwvZnVuY3Rpb24+IGlzIGNhbGxlZAorICAgICAgdHlwaWNhbGx5IGZyb20gdGhlIGludGVycnVwdCBoYW5kbGVyLiAgQnV0LCBpZiB5b3Ugc2V0IHVwIHRoZQorICAgICAgZHJpdmVyIHRvIHVzZSBhIHRocmVhZGVkIGludGVycnVwdCBoYW5kbGVyLCB0aGlzIGNhbGwgY2FuIGJlIGluCisgICAgICBub24tYXRvbWljIGNvbnRleHQsIHRvby4gIEluIHN1Y2ggYSBjYXNlLCB5b3UgY2FuIHNldAorICAgICAgPHN0cnVjdGZpZWxkPm5vbmF0b21pYzwvc3RydWN0ZmllbGQ+IGZpbGVkIG9mCisgICAgICA8c3RydWN0bmFtZT5zbmRfcGNtPC9zdHJ1Y3RuYW1lPiBvYmplY3QgYWZ0ZXIgY3JlYXRpbmcgaXQuCisgICAgICBXaGVuIHRoaXMgZmxhZyBpcyBzZXQsIG11dGV4IGFuZCByd3NlbSBhcmUgdXNlZCBpbnRlcm5hbGx5IGluCisgICAgICB0aGUgUENNIGNvcmUgaW5zdGVhZCBvZiBzcGluIGFuZCByd2xvY2tzLCBzbyB0aGF0IHlvdSBjYW4gY2FsbAorICAgICAgYWxsIFBDTSBmdW5jdGlvbnMgc2FmZWx5IGluIGEgbm9uLWF0b21pYyBjb250ZXh0LgorICAgICAgPC9wYXJhPgorCisgICAgPC9zZWN0aW9uPgorICAgIDxzZWN0aW9uIGlkPSJwY20taW50ZXJmYWNlLWNvbnN0cmFpbnRzIj4KKyAgICAgIDx0aXRsZT5Db25zdHJhaW50czwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgSWYgeW91ciBjaGlwIHN1cHBvcnRzIHVuY29udmVudGlvbmFsIHNhbXBsZSByYXRlcywgb3Igb25seSB0aGUKKyAgICAgIGxpbWl0ZWQgc2FtcGxlcywgeW91IG5lZWQgdG8gc2V0IGEgY29uc3RyYWludCBmb3IgdGhlCisgICAgICBjb25kaXRpb24uIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgRm9yIGV4YW1wbGUsIGluIG9yZGVyIHRvIHJlc3RyaWN0IHRoZSBzYW1wbGUgcmF0ZXMgaW4gdGhlIHNvbWUKKyAgICAgICAgc3VwcG9ydGVkIHZhbHVlcywgdXNlCisJPGZ1bmN0aW9uPnNuZF9wY21faHdfY29uc3RyYWludF9saXN0KCk8L2Z1bmN0aW9uPi4KKwlZb3UgbmVlZCB0byBjYWxsIHRoaXMgZnVuY3Rpb24gaW4gdGhlIG9wZW4gY2FsbGJhY2suCisKKyAgICAgICAgPGV4YW1wbGU+CisJICA8dGl0bGU+RXhhbXBsZSBvZiBIYXJkd2FyZSBDb25zdHJhaW50czwvdGl0bGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0YXRpYyB1bnNpZ25lZCBpbnQgcmF0ZXNbXSA9CisgICAgICAgICAgezQwMDAsIDEwMDAwLCAyMjA1MCwgNDQxMDB9OworICBzdGF0aWMgc3RydWN0IHNuZF9wY21faHdfY29uc3RyYWludF9saXN0IGNvbnN0cmFpbnRzX3JhdGVzID0geworICAgICAgICAgIC5jb3VudCA9IEFSUkFZX1NJWkUocmF0ZXMpLAorICAgICAgICAgIC5saXN0ID0gcmF0ZXMsCisgICAgICAgICAgLm1hc2sgPSAwLAorICB9OworCisgIHN0YXRpYyBpbnQgc25kX215Y2hpcF9wY21fb3BlbihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSkKKyAgeworICAgICAgICAgIGludCBlcnI7CisgICAgICAgICAgLi4uLgorICAgICAgICAgIGVyciA9IHNuZF9wY21faHdfY29uc3RyYWludF9saXN0KHN1YnN0cmVhbS0+cnVudGltZSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTkRSVl9QQ01fSFdfUEFSQU1fUkFURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29uc3RyYWludHNfcmF0ZXMpOworICAgICAgICAgIGlmIChlcnIgPCAwKQorICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICAgICAgICAuLi4uCisgIH0KK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZXJlIGFyZSBtYW55IGRpZmZlcmVudCBjb25zdHJhaW50cy4KKyAgICAgICAgTG9vayBhdCA8ZmlsZW5hbWU+c291bmQvcGNtLmg8L2ZpbGVuYW1lPiBmb3IgYSBjb21wbGV0ZSBsaXN0LgorICAgICAgICBZb3UgY2FuIGV2ZW4gZGVmaW5lIHlvdXIgb3duIGNvbnN0cmFpbnQgcnVsZXMuCisgICAgICAgIEZvciBleGFtcGxlLCBsZXQncyBzdXBwb3NlIG15X2NoaXAgY2FuIG1hbmFnZSBhIHN1YnN0cmVhbSBvZiAxIGNoYW5uZWwKKyAgICAgICAgaWYgYW5kIG9ubHkgaWYgdGhlIGZvcm1hdCBpcyBTMTZfTEUsIG90aGVyd2lzZSBpdCBzdXBwb3J0cyBhbnkgZm9ybWF0CisgICAgICAgIHNwZWNpZmllZCBpbiB0aGUgPHN0cnVjdG5hbWU+c25kX3BjbV9oYXJkd2FyZTwvc3RydWN0bmFtZT4gc3RydWN0dXJlIChvciBpbiBhbnkKKyAgICAgICAgb3RoZXIgY29uc3RyYWludF9saXN0KS4gWW91IGNhbiBidWlsZCBhIHJ1bGUgbGlrZSB0aGlzOgorCisgICAgICAgIDxleGFtcGxlPgorCSAgPHRpdGxlPkV4YW1wbGUgb2YgSGFyZHdhcmUgQ29uc3RyYWludHMgZm9yIENoYW5uZWxzPC90aXRsZT4KKwkgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdGF0aWMgaW50IGh3X3J1bGVfY2hhbm5lbHNfYnlfZm9ybWF0KHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzbmRfcGNtX2h3X3J1bGUgKnJ1bGUpCisgIHsKKyAgICAgICAgICBzdHJ1Y3Qgc25kX2ludGVydmFsICpjID0gaHdfcGFyYW1faW50ZXJ2YWwocGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgU05EUlZfUENNX0hXX1BBUkFNX0NIQU5ORUxTKTsKKyAgICAgICAgICBzdHJ1Y3Qgc25kX21hc2sgKmYgPSBod19wYXJhbV9tYXNrKHBhcmFtcywgU05EUlZfUENNX0hXX1BBUkFNX0ZPUk1BVCk7CisgICAgICAgICAgc3RydWN0IHNuZF9pbnRlcnZhbCBjaDsKKworICAgICAgICAgIHNuZF9pbnRlcnZhbF9hbnkoJmNoKTsKKyAgICAgICAgICBpZiAoZi0+Yml0c1swXSA9PSBTTkRSVl9QQ01fRk1UQklUX1MxNl9MRSkgeworICAgICAgICAgICAgICAgICAgY2gubWluID0gY2gubWF4ID0gMTsKKyAgICAgICAgICAgICAgICAgIGNoLmludGVnZXIgPSAxOworICAgICAgICAgICAgICAgICAgcmV0dXJuIHNuZF9pbnRlcnZhbF9yZWZpbmUoYywgJmNoKTsKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIDA7CisgIH0KK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKyAKKyAgICAgIDxwYXJhPgorICAgICAgICBUaGVuIHlvdSBuZWVkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiB0byBhZGQgeW91ciBydWxlOgorCisgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKwkgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHNuZF9wY21faHdfcnVsZV9hZGQoc3Vic3RyZWFtLT5ydW50aW1lLCAwLCBTTkRSVl9QQ01fSFdfUEFSQU1fQ0hBTk5FTFMsCisgICAgICAgICAgICAgICAgICAgICAgaHdfcnVsZV9jaGFubmVsc19ieV9mb3JtYXQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgU05EUlZfUENNX0hXX1BBUkFNX0ZPUk1BVCwgLTEpOworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgcnVsZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBhbiBhcHBsaWNhdGlvbiBzZXRzIHRoZSBQQ00KKwlmb3JtYXQsIGFuZCBpdCByZWZpbmVzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgYWNjb3JkaW5nbHkuCisgICAgICAgIEJ1dCBhbiBhcHBsaWNhdGlvbiBtYXkgc2V0IHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgYmVmb3JlCisJc2V0dGluZyB0aGUgZm9ybWF0LiBUaHVzIHlvdSBhbHNvIG5lZWQgdG8gZGVmaW5lIHRoZSBpbnZlcnNlIHJ1bGU6CisKKyAgICAgICA8ZXhhbXBsZT4KKwkgPHRpdGxlPkV4YW1wbGUgb2YgSGFyZHdhcmUgQ29uc3RyYWludHMgZm9yIEZvcm1hdHM8L3RpdGxlPgorCSA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RhdGljIGludCBod19ydWxlX2Zvcm1hdF9ieV9jaGFubmVscyhzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc25kX3BjbV9od19ydWxlICpydWxlKQorICB7CisgICAgICAgICAgc3RydWN0IHNuZF9pbnRlcnZhbCAqYyA9IGh3X3BhcmFtX2ludGVydmFsKHBhcmFtcywKKyAgICAgICAgICAgICAgICBTTkRSVl9QQ01fSFdfUEFSQU1fQ0hBTk5FTFMpOworICAgICAgICAgIHN0cnVjdCBzbmRfbWFzayAqZiA9IGh3X3BhcmFtX21hc2socGFyYW1zLCBTTkRSVl9QQ01fSFdfUEFSQU1fRk9STUFUKTsKKyAgICAgICAgICBzdHJ1Y3Qgc25kX21hc2sgZm10OworCisgICAgICAgICAgc25kX21hc2tfYW55KCZmbXQpOyAgICAvKiBJbml0IHRoZSBzdHJ1Y3QgKi8KKyAgICAgICAgICBpZiAoYy0+bWluIDwgMikgeworICAgICAgICAgICAgICAgICAgZm10LmJpdHNbMF0gJj0gU05EUlZfUENNX0ZNVEJJVF9TMTZfTEU7CisgICAgICAgICAgICAgICAgICByZXR1cm4gc25kX21hc2tfcmVmaW5lKGYsICZmbXQpOworICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gMDsKKyAgfQorXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9leGFtcGxlPgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgIC4uLmFuZCBpbiB0aGUgb3BlbiBjYWxsYmFjazoKKyAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorCSA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc25kX3BjbV9od19ydWxlX2FkZChzdWJzdHJlYW0tPnJ1bnRpbWUsIDAsIFNORFJWX1BDTV9IV19QQVJBTV9GT1JNQVQsCisgICAgICAgICAgICAgICAgICAgICAgaHdfcnVsZV9mb3JtYXRfYnlfY2hhbm5lbHMsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgU05EUlZfUENNX0hXX1BBUkFNX0NIQU5ORUxTLCAtMSk7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIEkgd29uJ3QgZ2l2ZSBtb3JlIGRldGFpbHMgaGVyZSwgcmF0aGVyIEkKKyAgICAgICAgd291bGQgbGlrZSB0byBzYXksIDxxdW90ZT5MdWtlLCB1c2UgdGhlIHNvdXJjZS48L3F1b3RlPgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICA8L2NoYXB0ZXI+CisKKworPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+Cis8IS0tIENvbnRyb2wgSW50ZXJmYWNlICAtLT4KKzwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgorICA8Y2hhcHRlciBpZD0iY29udHJvbC1pbnRlcmZhY2UiPgorICAgIDx0aXRsZT5Db250cm9sIEludGVyZmFjZTwvdGl0bGU+CisKKyAgICA8c2VjdGlvbiBpZD0iY29udHJvbC1pbnRlcmZhY2UtZ2VuZXJhbCI+CisgICAgICA8dGl0bGU+R2VuZXJhbDwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGNvbnRyb2wgaW50ZXJmYWNlIGlzIHVzZWQgd2lkZWx5IGZvciBtYW55IHN3aXRjaGVzLAorICAgICAgc2xpZGVycywgZXRjLiB3aGljaCBhcmUgYWNjZXNzZWQgZnJvbSB1c2VyLXNwYWNlLiBJdHMgbW9zdAorICAgICAgaW1wb3J0YW50IHVzZSBpcyB0aGUgbWl4ZXIgaW50ZXJmYWNlLiBJbiBvdGhlciB3b3Jkcywgc2luY2UgQUxTQQorICAgICAgMC45LngsIGFsbCB0aGUgbWl4ZXIgc3R1ZmYgaXMgaW1wbGVtZW50ZWQgb24gdGhlIGNvbnRyb2wga2VybmVsIEFQSS4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIEFMU0EgaGFzIGEgd2VsbC1kZWZpbmVkIEFDOTcgY29udHJvbCBtb2R1bGUuIElmIHlvdXIgY2hpcAorICAgICAgc3VwcG9ydHMgb25seSB0aGUgQUM5NyBhbmQgbm90aGluZyBlbHNlLCB5b3UgY2FuIHNraXAgdGhpcworICAgICAgc2VjdGlvbi4gCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgY29udHJvbCBBUEkgaXMgZGVmaW5lZCBpbgorICAgICAgPGZpbGVuYW1lPiZsdDtzb3VuZC9jb250cm9sLmgmZ3Q7PC9maWxlbmFtZT4uCisgICAgICBJbmNsdWRlIHRoaXMgZmlsZSBpZiB5b3Ugd2FudCB0byBhZGQgeW91ciBvd24gY29udHJvbHMuCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImNvbnRyb2wtaW50ZXJmYWNlLWRlZmluaXRpb24iPgorICAgICAgPHRpdGxlPkRlZmluaXRpb24gb2YgQ29udHJvbHM8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIFRvIGNyZWF0ZSBhIG5ldyBjb250cm9sLCB5b3UgbmVlZCB0byBkZWZpbmUgdGhlCisJZm9sbG93aW5nIHRocmVlCisgICAgICBjYWxsYmFja3M6IDxzdHJ1Y3RmaWVsZD5pbmZvPC9zdHJ1Y3RmaWVsZD4sCisgICAgICA8c3RydWN0ZmllbGQ+Z2V0PC9zdHJ1Y3RmaWVsZD4gYW5kCisgICAgICA8c3RydWN0ZmllbGQ+cHV0PC9zdHJ1Y3RmaWVsZD4uIFRoZW4sIGRlZmluZSBhCisgICAgICBzdHJ1Y3QgPHN0cnVjdG5hbWU+c25kX2tjb250cm9sX25ldzwvc3RydWN0bmFtZT4gcmVjb3JkLCBzdWNoIGFzOiAKKworICAgICAgICA8ZXhhbXBsZT4KKwkgIDx0aXRsZT5EZWZpbml0aW9uIG9mIGEgQ29udHJvbDwvdGl0bGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0YXRpYyBzdHJ1Y3Qgc25kX2tjb250cm9sX25ldyBteV9jb250cm9sID0geworICAgICAgICAgIC5pZmFjZSA9IFNORFJWX0NUTF9FTEVNX0lGQUNFX01JWEVSLAorICAgICAgICAgIC5uYW1lID0gIlBDTSBQbGF5YmFjayBTd2l0Y2giLAorICAgICAgICAgIC5pbmRleCA9IDAsCisgICAgICAgICAgLmFjY2VzcyA9IFNORFJWX0NUTF9FTEVNX0FDQ0VTU19SRUFEV1JJVEUsCisgICAgICAgICAgLnByaXZhdGVfdmFsdWUgPSAweGZmZmYsCisgICAgICAgICAgLmluZm8gPSBteV9jb250cm9sX2luZm8sCisgICAgICAgICAgLmdldCA9IG15X2NvbnRyb2xfZ2V0LAorICAgICAgICAgIC5wdXQgPSBteV9jb250cm9sX3B1dAorICB9OworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9leGFtcGxlPgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxzdHJ1Y3RmaWVsZD5pZmFjZTwvc3RydWN0ZmllbGQ+IGZpZWxkIHNwZWNpZmllcyB0aGUgY29udHJvbAorICAgICAgdHlwZSwgPGNvbnN0YW50PlNORFJWX0NUTF9FTEVNX0lGQUNFX1hYWDwvY29uc3RhbnQ+LCB3aGljaAorICAgICAgaXMgdXN1YWxseSA8Y29uc3RhbnQ+TUlYRVI8L2NvbnN0YW50Pi4KKyAgICAgIFVzZSA8Y29uc3RhbnQ+Q0FSRDwvY29uc3RhbnQ+IGZvciBnbG9iYWwgY29udHJvbHMgdGhhdCBhcmUgbm90CisgICAgICBsb2dpY2FsbHkgcGFydCBvZiB0aGUgbWl4ZXIuCisgICAgICBJZiB0aGUgY29udHJvbCBpcyBjbG9zZWx5IGFzc29jaWF0ZWQgd2l0aCBzb21lIHNwZWNpZmljIGRldmljZSBvbgorICAgICAgdGhlIHNvdW5kIGNhcmQsIHVzZSA8Y29uc3RhbnQ+SFdERVA8L2NvbnN0YW50PiwKKyAgICAgIDxjb25zdGFudD5QQ008L2NvbnN0YW50PiwgPGNvbnN0YW50PlJBV01JREk8L2NvbnN0YW50PiwKKyAgICAgIDxjb25zdGFudD5USU1FUjwvY29uc3RhbnQ+LCBvciA8Y29uc3RhbnQ+U0VRVUVOQ0VSPC9jb25zdGFudD4sIGFuZAorICAgICAgc3BlY2lmeSB0aGUgZGV2aWNlIG51bWJlciB3aXRoIHRoZQorICAgICAgPHN0cnVjdGZpZWxkPmRldmljZTwvc3RydWN0ZmllbGQ+IGFuZAorICAgICAgPHN0cnVjdGZpZWxkPnN1YmRldmljZTwvc3RydWN0ZmllbGQ+IGZpZWxkcy4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSA8c3RydWN0ZmllbGQ+bmFtZTwvc3RydWN0ZmllbGQ+IGlzIHRoZSBuYW1lIGlkZW50aWZpZXIKKyAgICAgIHN0cmluZy4gU2luY2UgQUxTQSAwLjkueCwgdGhlIGNvbnRyb2wgbmFtZSBpcyB2ZXJ5IGltcG9ydGFudCwKKyAgICAgIGJlY2F1c2UgaXRzIHJvbGUgaXMgY2xhc3NpZmllZCBmcm9tIGl0cyBuYW1lLiBUaGVyZSBhcmUKKyAgICAgIHByZS1kZWZpbmVkIHN0YW5kYXJkIGNvbnRyb2wgbmFtZXMuIFRoZSBkZXRhaWxzIGFyZSBkZXNjcmliZWQgaW4KKyAgICAgIHRoZSA8bGluayBsaW5rZW5kPSJjb250cm9sLWludGVyZmFjZS1jb250cm9sLW5hbWVzIj48Y2l0ZXRpdGxlPgorICAgICAgQ29udHJvbCBOYW1lczwvY2l0ZXRpdGxlPjwvbGluaz4gc3Vic2VjdGlvbi4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSA8c3RydWN0ZmllbGQ+aW5kZXg8L3N0cnVjdGZpZWxkPiBmaWVsZCBob2xkcyB0aGUgaW5kZXggbnVtYmVyCisgICAgICBvZiB0aGlzIGNvbnRyb2wuIElmIHRoZXJlIGFyZSBzZXZlcmFsIGRpZmZlcmVudCBjb250cm9scyB3aXRoCisgICAgICB0aGUgc2FtZSBuYW1lLCB0aGV5IGNhbiBiZSBkaXN0aW5ndWlzaGVkIGJ5IHRoZSBpbmRleAorICAgICAgbnVtYmVyLiBUaGlzIGlzIHRoZSBjYXNlIHdoZW4gCisgICAgICBzZXZlcmFsIGNvZGVjcyBleGlzdCBvbiB0aGUgY2FyZC4gSWYgdGhlIGluZGV4IGlzIHplcm8sIHlvdSBjYW4KKyAgICAgIG9taXQgdGhlIGRlZmluaXRpb24gYWJvdmUuIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxzdHJ1Y3RmaWVsZD5hY2Nlc3M8L3N0cnVjdGZpZWxkPiBmaWVsZCBjb250YWlucyB0aGUgYWNjZXNzCisgICAgICB0eXBlIG9mIHRoaXMgY29udHJvbC4gR2l2ZSB0aGUgY29tYmluYXRpb24gb2YgYml0IG1hc2tzLAorICAgICAgPGNvbnN0YW50PlNORFJWX0NUTF9FTEVNX0FDQ0VTU19YWFg8L2NvbnN0YW50PiwgdGhlcmUuCisgICAgICBUaGUgZGV0YWlscyB3aWxsIGJlIGV4cGxhaW5lZCBpbgorICAgICAgdGhlIDxsaW5rIGxpbmtlbmQ9ImNvbnRyb2wtaW50ZXJmYWNlLWFjY2Vzcy1mbGFncyI+PGNpdGV0aXRsZT4KKyAgICAgIEFjY2VzcyBGbGFnczwvY2l0ZXRpdGxlPjwvbGluaz4gc3Vic2VjdGlvbi4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSA8c3RydWN0ZmllbGQ+cHJpdmF0ZV92YWx1ZTwvc3RydWN0ZmllbGQ+IGZpZWxkIGNvbnRhaW5zCisgICAgICBhbiBhcmJpdHJhcnkgbG9uZyBpbnRlZ2VyIHZhbHVlIGZvciB0aGlzIHJlY29yZC4gV2hlbiB1c2luZworICAgICAgdGhlIGdlbmVyaWMgPHN0cnVjdGZpZWxkPmluZm88L3N0cnVjdGZpZWxkPiwKKyAgICAgIDxzdHJ1Y3RmaWVsZD5nZXQ8L3N0cnVjdGZpZWxkPiBhbmQKKyAgICAgIDxzdHJ1Y3RmaWVsZD5wdXQ8L3N0cnVjdGZpZWxkPiBjYWxsYmFja3MsIHlvdSBjYW4gcGFzcyBhIHZhbHVlIAorICAgICAgdGhyb3VnaCB0aGlzIGZpZWxkLiBJZiBzZXZlcmFsIHNtYWxsIG51bWJlcnMgYXJlIG5lY2Vzc2FyeSwgeW91IGNhbgorICAgICAgY29tYmluZSB0aGVtIGluIGJpdHdpc2UuIE9yLCBpdCdzIHBvc3NpYmxlIHRvIGdpdmUgYSBwb2ludGVyCisgICAgICAoY2FzdGVkIHRvIHVuc2lnbmVkIGxvbmcpIG9mIHNvbWUgcmVjb3JkIHRvIHRoaXMgZmllbGQsIHRvby4gCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgVGhlIDxzdHJ1Y3RmaWVsZD50bHY8L3N0cnVjdGZpZWxkPiBmaWVsZCBjYW4gYmUgdXNlZCB0byBwcm92aWRlCisgICAgICBtZXRhZGF0YSBhYm91dCB0aGUgY29udHJvbDsgc2VlIHRoZQorICAgICAgPGxpbmsgbGlua2VuZD0iY29udHJvbC1pbnRlcmZhY2UtdGx2Ij4KKyAgICAgIDxjaXRldGl0bGU+TWV0YWRhdGE8L2NpdGV0aXRsZT48L2xpbms+IHN1YnNlY3Rpb24uCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgb3RoZXIgdGhyZWUgYXJlCisJPGxpbmsgbGlua2VuZD0iY29udHJvbC1pbnRlcmZhY2UtY2FsbGJhY2tzIj48Y2l0ZXRpdGxlPgorCWNhbGxiYWNrIGZ1bmN0aW9uczwvY2l0ZXRpdGxlPjwvbGluaz4uCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImNvbnRyb2wtaW50ZXJmYWNlLWNvbnRyb2wtbmFtZXMiPgorICAgICAgPHRpdGxlPkNvbnRyb2wgTmFtZXM8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIFRoZXJlIGFyZSBzb21lIHN0YW5kYXJkcyB0byBkZWZpbmUgdGhlIGNvbnRyb2wgbmFtZXMuIEEKKyAgICAgIGNvbnRyb2wgaXMgdXN1YWxseSBkZWZpbmVkIGZyb20gdGhlIHRocmVlIHBhcnRzIGFzCisgICAgICA8cXVvdGU+U09VUkNFIERJUkVDVElPTiBGVU5DVElPTjwvcXVvdGU+LiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBmaXJzdCwgPGNvbnN0YW50PlNPVVJDRTwvY29uc3RhbnQ+LCBzcGVjaWZpZXMgdGhlIHNvdXJjZQorICAgICAgb2YgdGhlIGNvbnRyb2wsIGFuZCBpcyBhIHN0cmluZyBzdWNoIGFzIDxxdW90ZT5NYXN0ZXI8L3F1b3RlPiwKKyAgICAgIDxxdW90ZT5QQ008L3F1b3RlPiwgPHF1b3RlPkNEPC9xdW90ZT4gYW5kCisgICAgICA8cXVvdGU+TGluZTwvcXVvdGU+LiBUaGVyZSBhcmUgbWFueSBwcmUtZGVmaW5lZCBzb3VyY2VzLiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBzZWNvbmQsIDxjb25zdGFudD5ESVJFQ1RJT048L2NvbnN0YW50PiwgaXMgb25lIG9mIHRoZQorICAgICAgZm9sbG93aW5nIHN0cmluZ3MgYWNjb3JkaW5nIHRvIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGNvbnRyb2w6CisgICAgICA8cXVvdGU+UGxheWJhY2s8L3F1b3RlPiwgPHF1b3RlPkNhcHR1cmU8L3F1b3RlPiwgPHF1b3RlPkJ5cGFzcworICAgICAgUGxheWJhY2s8L3F1b3RlPiBhbmQgPHF1b3RlPkJ5cGFzcyBDYXB0dXJlPC9xdW90ZT4uIE9yLCBpdCBjYW4KKyAgICAgIGJlIG9taXR0ZWQsIG1lYW5pbmcgYm90aCBwbGF5YmFjayBhbmQgY2FwdHVyZSBkaXJlY3Rpb25zLiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSB0aGlyZCwgPGNvbnN0YW50PkZVTkNUSU9OPC9jb25zdGFudD4sIGlzIG9uZSBvZiB0aGUKKyAgICAgIGZvbGxvd2luZyBzdHJpbmdzIGFjY29yZGluZyB0byB0aGUgZnVuY3Rpb24gb2YgdGhlIGNvbnRyb2w6CisgICAgICA8cXVvdGU+U3dpdGNoPC9xdW90ZT4sIDxxdW90ZT5Wb2x1bWU8L3F1b3RlPiBhbmQKKyAgICAgIDxxdW90ZT5Sb3V0ZTwvcXVvdGU+LiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBleGFtcGxlIG9mIGNvbnRyb2wgbmFtZXMgYXJlLCB0aHVzLCA8cXVvdGU+TWFzdGVyIENhcHR1cmUKKyAgICAgIFN3aXRjaDwvcXVvdGU+IG9yIDxxdW90ZT5QQ00gUGxheWJhY2sgVm9sdW1lPC9xdW90ZT4uIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlcmUgYXJlIHNvbWUgZXhjZXB0aW9uczoKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHNlY3Rpb24gaWQ9ImNvbnRyb2wtaW50ZXJmYWNlLWNvbnRyb2wtbmFtZXMtZ2xvYmFsIj4KKyAgICAgICAgPHRpdGxlPkdsb2JhbCBjYXB0dXJlIGFuZCBwbGF5YmFjazwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIDxxdW90ZT5DYXB0dXJlIFNvdXJjZTwvcXVvdGU+LCA8cXVvdGU+Q2FwdHVyZSBTd2l0Y2g8L3F1b3RlPgorICAgICAgICBhbmQgPHF1b3RlPkNhcHR1cmUgVm9sdW1lPC9xdW90ZT4gYXJlIHVzZWQgZm9yIHRoZSBnbG9iYWwKKyAgICAgICAgY2FwdHVyZSAoaW5wdXQpIHNvdXJjZSwgc3dpdGNoIGFuZCB2b2x1bWUuIFNpbWlsYXJseSwKKyAgICAgICAgPHF1b3RlPlBsYXliYWNrIFN3aXRjaDwvcXVvdGU+IGFuZCA8cXVvdGU+UGxheWJhY2sKKyAgICAgICAgVm9sdW1lPC9xdW90ZT4gYXJlIHVzZWQgZm9yIHRoZSBnbG9iYWwgb3V0cHV0IGdhaW4gc3dpdGNoIGFuZAorICAgICAgICB2b2x1bWUuIAorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3Rpb24+CisKKyAgICAgIDxzZWN0aW9uIGlkPSJjb250cm9sLWludGVyZmFjZS1jb250cm9sLW5hbWVzLXRvbmUiPgorICAgICAgICA8dGl0bGU+VG9uZS1jb250cm9sczwvdGl0bGU+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIHRvbmUtY29udHJvbCBzd2l0Y2ggYW5kIHZvbHVtZXMgYXJlIHNwZWNpZmllZCBsaWtlCisgICAgICAgIDxxdW90ZT5Ub25lIENvbnRyb2wgLSBYWFg8L3F1b3RlPiwgZS5nLiA8cXVvdGU+VG9uZSBDb250cm9sIC0KKyAgICAgICAgU3dpdGNoPC9xdW90ZT4sIDxxdW90ZT5Ub25lIENvbnRyb2wgLSBCYXNzPC9xdW90ZT4sCisgICAgICAgIDxxdW90ZT5Ub25lIENvbnRyb2wgLSBDZW50ZXI8L3F1b3RlPi4gIAorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3Rpb24+CisKKyAgICAgIDxzZWN0aW9uIGlkPSJjb250cm9sLWludGVyZmFjZS1jb250cm9sLW5hbWVzLTNkIj4KKyAgICAgICAgPHRpdGxlPjNEIGNvbnRyb2xzPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgM0QtY29udHJvbCBzd2l0Y2hlcyBhbmQgdm9sdW1lcyBhcmUgc3BlY2lmaWVkIGxpa2UgPHF1b3RlPjNECisgICAgICAgIENvbnRyb2wgLSBYWFg8L3F1b3RlPiwgZS5nLiA8cXVvdGU+M0QgQ29udHJvbCAtCisgICAgICAgIFN3aXRjaDwvcXVvdGU+LCA8cXVvdGU+M0QgQ29udHJvbCAtIENlbnRlcjwvcXVvdGU+LCA8cXVvdGU+M0QKKyAgICAgICAgQ29udHJvbCAtIFNwYWNlPC9xdW90ZT4uIAorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3Rpb24+CisKKyAgICAgIDxzZWN0aW9uIGlkPSJjb250cm9sLWludGVyZmFjZS1jb250cm9sLW5hbWVzLW1pYyI+CisgICAgICAgIDx0aXRsZT5NaWMgYm9vc3Q8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBNaWMtYm9vc3Qgc3dpdGNoIGlzIHNldCBhcyA8cXVvdGU+TWljIEJvb3N0PC9xdW90ZT4gb3IKKyAgICAgICAgPHF1b3RlPk1pYyBCb29zdCAoNmRCKTwvcXVvdGU+LiAKKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIE1vcmUgcHJlY2lzZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4KKyAgICAgICAgPGZpbGVuYW1lPkRvY3VtZW50YXRpb24vc291bmQvYWxzYS9Db250cm9sTmFtZXMudHh0PC9maWxlbmFtZT4uCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iY29udHJvbC1pbnRlcmZhY2UtYWNjZXNzLWZsYWdzIj4KKyAgICAgIDx0aXRsZT5BY2Nlc3MgRmxhZ3M8L3RpdGxlPgorCisgICAgICA8cGFyYT4KKyAgICAgIFRoZSBhY2Nlc3MgZmxhZyBpcyB0aGUgYml0bWFzayB3aGljaCBzcGVjaWZpZXMgdGhlIGFjY2VzcyB0eXBlCisgICAgICBvZiB0aGUgZ2l2ZW4gY29udHJvbC4gIFRoZSBkZWZhdWx0IGFjY2VzcyB0eXBlIGlzCisgICAgICA8Y29uc3RhbnQ+U05EUlZfQ1RMX0VMRU1fQUNDRVNTX1JFQURXUklURTwvY29uc3RhbnQ+LCAKKyAgICAgIHdoaWNoIG1lYW5zIGJvdGggcmVhZCBhbmQgd3JpdGUgYXJlIGFsbG93ZWQgdG8gdGhpcyBjb250cm9sLgorICAgICAgV2hlbiB0aGUgYWNjZXNzIGZsYWcgaXMgb21pdHRlZCAoaS5lLiA9IDApLCBpdCBpcworICAgICAgY29uc2lkZXJlZCBhcyA8Y29uc3RhbnQ+UkVBRFdSSVRFPC9jb25zdGFudD4gYWNjZXNzIGFzIGRlZmF1bHQuIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgIFdoZW4gdGhlIGNvbnRyb2wgaXMgcmVhZC1vbmx5LCBwYXNzCisgICAgICA8Y29uc3RhbnQ+U05EUlZfQ1RMX0VMRU1fQUNDRVNTX1JFQUQ8L2NvbnN0YW50PiBpbnN0ZWFkLgorICAgICAgSW4gdGhpcyBjYXNlLCB5b3UgZG9uJ3QgaGF2ZSB0byBkZWZpbmUKKyAgICAgIHRoZSA8c3RydWN0ZmllbGQ+cHV0PC9zdHJ1Y3RmaWVsZD4gY2FsbGJhY2suCisgICAgICBTaW1pbGFybHksIHdoZW4gdGhlIGNvbnRyb2wgaXMgd3JpdGUtb25seSAoYWx0aG91Z2ggaXQncyBhIHJhcmUKKyAgICAgIGNhc2UpLCB5b3UgY2FuIHVzZSB0aGUgPGNvbnN0YW50PldSSVRFPC9jb25zdGFudD4gZmxhZyBpbnN0ZWFkLCBhbmQKKyAgICAgIHlvdSBkb24ndCBuZWVkIHRoZSA8c3RydWN0ZmllbGQ+Z2V0PC9zdHJ1Y3RmaWVsZD4gY2FsbGJhY2suCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgSWYgdGhlIGNvbnRyb2wgdmFsdWUgY2hhbmdlcyBmcmVxdWVudGx5IChlLmcuIHRoZSBWVSBtZXRlciksCisgICAgICA8Y29uc3RhbnQ+Vk9MQVRJTEU8L2NvbnN0YW50PiBmbGFnIHNob3VsZCBiZSBnaXZlbi4gIFRoaXMgbWVhbnMKKyAgICAgIHRoYXQgdGhlIGNvbnRyb2wgbWF5IGJlIGNoYW5nZWQgd2l0aG91dAorICAgICAgPGxpbmsgbGlua2VuZD0iY29udHJvbC1pbnRlcmZhY2UtY2hhbmdlLW5vdGlmaWNhdGlvbiI+PGNpdGV0aXRsZT4KKyAgICAgIG5vdGlmaWNhdGlvbjwvY2l0ZXRpdGxlPjwvbGluaz4uIEFwcGxpY2F0aW9ucyBzaG91bGQgcG9sbCBzdWNoCisgICAgICBhIGNvbnRyb2wgY29uc3RhbnRseS4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICBXaGVuIHRoZSBjb250cm9sIGlzIGluYWN0aXZlLCBzZXQKKyAgICAgIHRoZSA8Y29uc3RhbnQ+SU5BQ1RJVkU8L2NvbnN0YW50PiBmbGFnLCB0b28uCisgICAgICBUaGVyZSBhcmUgPGNvbnN0YW50PkxPQ0s8L2NvbnN0YW50PiBhbmQKKyAgICAgIDxjb25zdGFudD5PV05FUjwvY29uc3RhbnQ+IGZsYWdzIHRvIGNoYW5nZSB0aGUgd3JpdGUKKyAgICAgIHBlcm1pc3Npb25zLgorICAgICAgPC9wYXJhPgorCisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImNvbnRyb2wtaW50ZXJmYWNlLWNhbGxiYWNrcyI+CisgICAgICA8dGl0bGU+Q2FsbGJhY2tzPC90aXRsZT4KKworICAgICAgPHNlY3Rpb24gaWQ9ImNvbnRyb2wtaW50ZXJmYWNlLWNhbGxiYWNrcy1pbmZvIj4KKyAgICAgICAgPHRpdGxlPmluZm8gY2FsbGJhY2s8L3RpdGxlPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgPHN0cnVjdGZpZWxkPmluZm88L3N0cnVjdGZpZWxkPiBjYWxsYmFjayBpcyB1c2VkIHRvIGdldAorICAgICAgICBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiB0aGlzIGNvbnRyb2wuIFRoaXMgbXVzdCBzdG9yZSB0aGUKKyAgICAgICAgdmFsdWVzIG9mIHRoZSBnaXZlbiBzdHJ1Y3QgPHN0cnVjdG5hbWU+c25kX2N0bF9lbGVtX2luZm88L3N0cnVjdG5hbWU+CisgICAgICAgIG9iamVjdC4gRm9yIGV4YW1wbGUsIGZvciBhIGJvb2xlYW4gY29udHJvbCB3aXRoIGEgc2luZ2xlCisgICAgICAgIGVsZW1lbnQ6IAorCisgICAgICAgICAgPGV4YW1wbGU+CisJICAgIDx0aXRsZT5FeGFtcGxlIG9mIGluZm8gY2FsbGJhY2s8L3RpdGxlPgorICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0YXRpYyBpbnQgc25kX215Y3RsX21vbm9faW5mbyhzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNuZF9jdGxfZWxlbV9pbmZvICp1aW5mbykKKyAgeworICAgICAgICAgIHVpbmZvLT50eXBlID0gU05EUlZfQ1RMX0VMRU1fVFlQRV9CT09MRUFOOworICAgICAgICAgIHVpbmZvLT5jb3VudCA9IDE7CisgICAgICAgICAgdWluZm8tPnZhbHVlLmludGVnZXIubWluID0gMDsKKyAgICAgICAgICB1aW5mby0+dmFsdWUuaW50ZWdlci5tYXggPSAxOworICAgICAgICAgIHJldHVybiAwOworICB9CitdXT4KKyAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgICAgPC9leGFtcGxlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhlIDxzdHJ1Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gZmllbGQgc3BlY2lmaWVzIHRoZSB0eXBlCisgICAgICAgIG9mIHRoZSBjb250cm9sLiBUaGVyZSBhcmUgPGNvbnN0YW50PkJPT0xFQU48L2NvbnN0YW50PiwKKyAgICAgICAgPGNvbnN0YW50PklOVEVHRVI8L2NvbnN0YW50PiwgPGNvbnN0YW50PkVOVU1FUkFURUQ8L2NvbnN0YW50PiwKKyAgICAgICAgPGNvbnN0YW50PkJZVEVTPC9jb25zdGFudD4sIDxjb25zdGFudD5JRUM5NTg8L2NvbnN0YW50PiBhbmQKKyAgICAgICAgPGNvbnN0YW50PklOVEVHRVI2NDwvY29uc3RhbnQ+LiBUaGUKKyAgICAgICAgPHN0cnVjdGZpZWxkPmNvdW50PC9zdHJ1Y3RmaWVsZD4gZmllbGQgc3BlY2lmaWVzIHRoZSAKKyAgICAgICAgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoaXMgY29udHJvbC4gRm9yIGV4YW1wbGUsIGEgc3RlcmVvCisgICAgICAgIHZvbHVtZSB3b3VsZCBoYXZlIGNvdW50ID0gMi4gVGhlCisgICAgICAgIDxzdHJ1Y3RmaWVsZD52YWx1ZTwvc3RydWN0ZmllbGQ+IGZpZWxkIGlzIGEgdW5pb24sIGFuZCAKKyAgICAgICAgdGhlIHZhbHVlcyBzdG9yZWQgYXJlIGRlcGVuZGluZyBvbiB0aGUgdHlwZS4gVGhlIGJvb2xlYW4gYW5kCisgICAgICAgIGludGVnZXIgdHlwZXMgYXJlIGlkZW50aWNhbC4gCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICBUaGUgZW51bWVyYXRlZCB0eXBlIGlzIGEgYml0IGRpZmZlcmVudCBmcm9tIG90aGVycy4gIFlvdSdsbAorICAgICAgICAgIG5lZWQgdG8gc2V0IHRoZSBzdHJpbmcgZm9yIHRoZSBjdXJyZW50bHkgZ2l2ZW4gaXRlbSBpbmRleC4gCisKKyAgICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0YXRpYyBpbnQgc25kX215Y3RsX2VudW1faW5mbyhzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNuZF9jdGxfZWxlbV9pbmZvICp1aW5mbykKKyAgeworICAgICAgICAgIHN0YXRpYyBjaGFyICp0ZXh0c1s0XSA9IHsKKyAgICAgICAgICAgICAgICAgICJGaXJzdCIsICJTZWNvbmQiLCAiVGhpcmQiLCAiRm91cnRoIgorICAgICAgICAgIH07CisgICAgICAgICAgdWluZm8tPnR5cGUgPSBTTkRSVl9DVExfRUxFTV9UWVBFX0VOVU1FUkFURUQ7CisgICAgICAgICAgdWluZm8tPmNvdW50ID0gMTsKKyAgICAgICAgICB1aW5mby0+dmFsdWUuZW51bWVyYXRlZC5pdGVtcyA9IDQ7CisgICAgICAgICAgaWYgKHVpbmZvLT52YWx1ZS5lbnVtZXJhdGVkLml0ZW0gPiAzKQorICAgICAgICAgICAgICAgICAgdWluZm8tPnZhbHVlLmVudW1lcmF0ZWQuaXRlbSA9IDM7CisgICAgICAgICAgc3RyY3B5KHVpbmZvLT52YWx1ZS5lbnVtZXJhdGVkLm5hbWUsCisgICAgICAgICAgICAgICAgIHRleHRzW3VpbmZvLT52YWx1ZS5lbnVtZXJhdGVkLml0ZW1dKTsKKyAgICAgICAgICByZXR1cm4gMDsKKyAgfQorXV0+CisgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisJICBUaGUgYWJvdmUgY2FsbGJhY2sgY2FuIGJlIHNpbXBsaWZpZWQgd2l0aCBhIGhlbHBlciBmdW5jdGlvbiwKKwkgIDxmdW5jdGlvbj5zbmRfY3RsX2VudW1faW5mbzwvZnVuY3Rpb24+LiAgVGhlIGZpbmFsIGNvZGUKKwkgIGxvb2tzIGxpa2UgYmVsb3cuCisJICAoWW91IGNhbiBwYXNzIEFSUkFZX1NJWkUodGV4dHMpIGluc3RlYWQgb2YgNCBpbiB0aGUgdGhpcmQKKwkgICBhcmd1bWVudDsgaXQncyBhIG1hdHRlciBvZiB0YXN0ZS4pCisKKyAgICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0YXRpYyBpbnQgc25kX215Y3RsX2VudW1faW5mbyhzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNuZF9jdGxfZWxlbV9pbmZvICp1aW5mbykKKyAgeworICAgICAgICAgIHN0YXRpYyBjaGFyICp0ZXh0c1s0XSA9IHsKKyAgICAgICAgICAgICAgICAgICJGaXJzdCIsICJTZWNvbmQiLCAiVGhpcmQiLCAiRm91cnRoIgorICAgICAgICAgIH07CisgICAgICAgICAgcmV0dXJuIHNuZF9jdGxfZW51bV9pbmZvKHVpbmZvLCAxLCA0LCB0ZXh0cyk7CisgIH0KK11dPgorICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorCSAgU29tZSBjb21tb24gaW5mbyBjYWxsYmFja3MgYXJlIGF2YWlsYWJsZSBmb3IgeW91ciBjb252ZW5pZW5jZToKKwk8ZnVuY3Rpb24+c25kX2N0bF9ib29sZWFuX21vbm9faW5mbygpPC9mdW5jdGlvbj4gYW5kCisJPGZ1bmN0aW9uPnNuZF9jdGxfYm9vbGVhbl9zdGVyZW9faW5mbygpPC9mdW5jdGlvbj4uCisJT2J2aW91c2x5LCB0aGUgZm9ybWVyIGlzIGFuIGluZm8gY2FsbGJhY2sgZm9yIGEgbW9ubyBjaGFubmVsCisJYm9vbGVhbiBpdGVtLCBqdXN0IGxpa2UgPGZ1bmN0aW9uPnNuZF9teWN0bF9tb25vX2luZm88L2Z1bmN0aW9uPgorCWFib3ZlLCBhbmQgdGhlIGxhdHRlciBpcyBmb3IgYSBzdGVyZW8gY2hhbm5lbCBib29sZWFuIGl0ZW0uCisJPC9wYXJhPgorCisgICAgICA8L3NlY3Rpb24+CisKKyAgICAgIDxzZWN0aW9uIGlkPSJjb250cm9sLWludGVyZmFjZS1jYWxsYmFja3MtZ2V0Ij4KKyAgICAgICAgPHRpdGxlPmdldCBjYWxsYmFjazwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhpcyBjYWxsYmFjayBpcyB1c2VkIHRvIHJlYWQgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlCisgICAgICAgIGNvbnRyb2wgYW5kIHRvIHJldHVybiB0byB1c2VyLXNwYWNlLiAKKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgIEZvciBleGFtcGxlLAorCisgICAgICAgICAgPGV4YW1wbGU+CisJICAgIDx0aXRsZT5FeGFtcGxlIG9mIGdldCBjYWxsYmFjazwvdGl0bGU+CisgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RhdGljIGludCBzbmRfbXljdGxfZ2V0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSAqdWNvbnRyb2wpCisgIHsKKyAgICAgICAgICBzdHJ1Y3QgbXljaGlwICpjaGlwID0gc25kX2tjb250cm9sX2NoaXAoa2NvbnRyb2wpOworICAgICAgICAgIHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdID0gZ2V0X3NvbWVfdmFsdWUoY2hpcCk7CisgICAgICAgICAgcmV0dXJuIDA7CisgIH0KK11dPgorICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgICA8L2V4YW1wbGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKwlUaGUgPHN0cnVjdGZpZWxkPnZhbHVlPC9zdHJ1Y3RmaWVsZD4gZmllbGQgZGVwZW5kcyBvbiAKKyAgICAgICAgdGhlIHR5cGUgb2YgY29udHJvbCBhcyB3ZWxsIGFzIG9uIHRoZSBpbmZvIGNhbGxiYWNrLiAgRm9yIGV4YW1wbGUsCisJdGhlIHNiIGRyaXZlciB1c2VzIHRoaXMgZmllbGQgdG8gc3RvcmUgdGhlIHJlZ2lzdGVyIG9mZnNldCwKKyAgICAgICAgdGhlIGJpdC1zaGlmdCBhbmQgdGhlIGJpdC1tYXNrLiAgVGhlCisgICAgICAgIDxzdHJ1Y3RmaWVsZD5wcml2YXRlX3ZhbHVlPC9zdHJ1Y3RmaWVsZD4gZmllbGQgaXMgc2V0IGFzIGZvbGxvd3M6CisgICAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICAucHJpdmF0ZV92YWx1ZSA9IHJlZyB8IChzaGlmdCA8PCAxNikgfCAobWFzayA8PCAyNCkKK11dPgorICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKwlhbmQgaXMgcmV0cmlldmVkIGluIGNhbGxiYWNrcyBsaWtlCisgICAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdGF0aWMgaW50IHNuZF9zYm1peGVyX2dldF9zaW5nbGUoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkKKyAgeworICAgICAgICAgIGludCByZWcgPSBrY29udHJvbC0+cHJpdmF0ZV92YWx1ZSAmIDB4ZmY7CisgICAgICAgICAgaW50IHNoaWZ0ID0gKGtjb250cm9sLT5wcml2YXRlX3ZhbHVlID4+IDE2KSAmIDB4ZmY7CisgICAgICAgICAgaW50IG1hc2sgPSAoa2NvbnRyb2wtPnByaXZhdGVfdmFsdWUgPj4gMjQpICYgMHhmZjsKKyAgICAgICAgICAuLi4uCisgIH0KK11dPgorICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKwk8L3BhcmE+CisKKwk8cGFyYT4KKwlJbiB0aGUgPHN0cnVjdGZpZWxkPmdldDwvc3RydWN0ZmllbGQ+IGNhbGxiYWNrLAorCXlvdSBoYXZlIHRvIGZpbGwgYWxsIHRoZSBlbGVtZW50cyBpZiB0aGUKKyAgICAgICAgY29udHJvbCBoYXMgbW9yZSB0aGFuIG9uZSBlbGVtZW50cywKKyAgICAgICAgaS5lLiA8c3RydWN0ZmllbGQ+Y291bnQ8L3N0cnVjdGZpZWxkPiAmZ3Q7IDEuCisJSW4gdGhlIGV4YW1wbGUgYWJvdmUsIHdlIGZpbGxlZCBvbmx5IG9uZSBlbGVtZW50CisgICAgICAgICg8c3RydWN0ZmllbGQ+dmFsdWUuaW50ZWdlci52YWx1ZVswXTwvc3RydWN0ZmllbGQ+KSBzaW5jZSBpdCdzCisgICAgICAgIGFzc3VtZWQgYXMgPHN0cnVjdGZpZWxkPmNvdW50PC9zdHJ1Y3RmaWVsZD4gPSAxLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3Rpb24+CisKKyAgICAgIDxzZWN0aW9uIGlkPSJjb250cm9sLWludGVyZmFjZS1jYWxsYmFja3MtcHV0Ij4KKyAgICAgICAgPHRpdGxlPnB1dCBjYWxsYmFjazwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgVGhpcyBjYWxsYmFjayBpcyB1c2VkIHRvIHdyaXRlIGEgdmFsdWUgZnJvbSB1c2VyLXNwYWNlLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgRm9yIGV4YW1wbGUsCisKKyAgICAgICAgICA8ZXhhbXBsZT4KKwkgICAgPHRpdGxlPkV4YW1wbGUgb2YgcHV0IGNhbGxiYWNrPC90aXRsZT4KKyAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdGF0aWMgaW50IHNuZF9teWN0bF9wdXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlICp1Y29udHJvbCkKKyAgeworICAgICAgICAgIHN0cnVjdCBteWNoaXAgKmNoaXAgPSBzbmRfa2NvbnRyb2xfY2hpcChrY29udHJvbCk7CisgICAgICAgICAgaW50IGNoYW5nZWQgPSAwOworICAgICAgICAgIGlmIChjaGlwLT5jdXJyZW50X3ZhbHVlICE9CisgICAgICAgICAgICAgICB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXSkgeworICAgICAgICAgICAgICAgICAgY2hhbmdlX2N1cnJlbnRfdmFsdWUoY2hpcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdKTsKKyAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSAxOworICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgfQorXV0+CisgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICAgIDwvZXhhbXBsZT4KKworICAgICAgICAgIEFzIHNlZW4gYWJvdmUsIHlvdSBoYXZlIHRvIHJldHVybiAxIGlmIHRoZSB2YWx1ZSBpcworICAgICAgICBjaGFuZ2VkLiBJZiB0aGUgdmFsdWUgaXMgbm90IGNoYW5nZWQsIHJldHVybiAwIGluc3RlYWQuIAorCUlmIGFueSBmYXRhbCBlcnJvciBoYXBwZW5zLCByZXR1cm4gYSBuZWdhdGl2ZSBlcnJvciBjb2RlIGFzCisgICAgICAgIHVzdWFsLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisJQXMgaW4gdGhlIDxzdHJ1Y3RmaWVsZD5nZXQ8L3N0cnVjdGZpZWxkPiBjYWxsYmFjaywKKwl3aGVuIHRoZSBjb250cm9sIGhhcyBtb3JlIHRoYW4gb25lIGVsZW1lbnRzLAorCWFsbCBlbGVtZW50cyBtdXN0IGJlIGV2YWx1YXRlZCBpbiB0aGlzIGNhbGxiYWNrLCB0b28uCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdGlvbj4KKworICAgICAgPHNlY3Rpb24gaWQ9ImNvbnRyb2wtaW50ZXJmYWNlLWNhbGxiYWNrcy1hbGwiPgorICAgICAgICA8dGl0bGU+Q2FsbGJhY2tzIGFyZSBub3QgYXRvbWljPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgQWxsIHRoZXNlIHRocmVlIGNhbGxiYWNrcyBhcmUgYmFzaWNhbGx5IG5vdCBhdG9taWMuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iY29udHJvbC1pbnRlcmZhY2UtY29uc3RydWN0b3IiPgorICAgICAgPHRpdGxlPkNvbnN0cnVjdG9yPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBXaGVuIGV2ZXJ5dGhpbmcgaXMgcmVhZHksIGZpbmFsbHkgd2UgY2FuIGNyZWF0ZSBhIG5ldworICAgICAgY29udHJvbC4gVG8gY3JlYXRlIGEgY29udHJvbCwgdGhlcmUgYXJlIHR3byBmdW5jdGlvbnMgdG8gYmUKKyAgICAgIGNhbGxlZCwgPGZ1bmN0aW9uPnNuZF9jdGxfbmV3MSgpPC9mdW5jdGlvbj4gYW5kCisgICAgICA8ZnVuY3Rpb24+c25kX2N0bF9hZGQoKTwvZnVuY3Rpb24+LiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIEluIHRoZSBzaW1wbGVzdCB3YXksIHlvdSBjYW4gZG8gbGlrZSB0aGlzOgorCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIGVyciA9IHNuZF9jdGxfYWRkKGNhcmQsIHNuZF9jdGxfbmV3MSgmbXlfY29udHJvbCwgY2hpcCkpOworICBpZiAoZXJyIDwgMCkKKyAgICAgICAgICByZXR1cm4gZXJyOworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisKKyAgICAgICAgd2hlcmUgPHBhcmFtZXRlcj5teV9jb250cm9sPC9wYXJhbWV0ZXI+IGlzIHRoZQorICAgICAgc3RydWN0IDxzdHJ1Y3RuYW1lPnNuZF9rY29udHJvbF9uZXc8L3N0cnVjdG5hbWU+IG9iamVjdCBkZWZpbmVkIGFib3ZlLCBhbmQgY2hpcAorICAgICAgaXMgdGhlIG9iamVjdCBwb2ludGVyIHRvIGJlIHBhc3NlZCB0bworICAgICAga2NvbnRyb2wtJmd0O3ByaXZhdGVfZGF0YSAKKyAgICAgIHdoaWNoIGNhbiBiZSByZWZlcnJlZCB0byBpbiBjYWxsYmFja3MuIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgPGZ1bmN0aW9uPnNuZF9jdGxfbmV3MSgpPC9mdW5jdGlvbj4gYWxsb2NhdGVzIGEgbmV3CisgICAgICA8c3RydWN0bmFtZT5zbmRfa2NvbnRyb2w8L3N0cnVjdG5hbWU+IGluc3RhbmNlLAorICAgICAgYW5kIDxmdW5jdGlvbj5zbmRfY3RsX2FkZDwvZnVuY3Rpb24+IGFzc2lnbnMgdGhlIGdpdmVuCisgICAgICBjb250cm9sIGNvbXBvbmVudCB0byB0aGUgY2FyZC4gCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImNvbnRyb2wtaW50ZXJmYWNlLWNoYW5nZS1ub3RpZmljYXRpb24iPgorICAgICAgPHRpdGxlPkNoYW5nZSBOb3RpZmljYXRpb248L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIElmIHlvdSBuZWVkIHRvIGNoYW5nZSBhbmQgdXBkYXRlIGEgY29udHJvbCBpbiB0aGUgaW50ZXJydXB0CisgICAgICByb3V0aW5lLCB5b3UgY2FuIGNhbGwgPGZ1bmN0aW9uPnNuZF9jdGxfbm90aWZ5KCk8L2Z1bmN0aW9uPi4gRm9yCisgICAgICBleGFtcGxlLCAKKworICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzbmRfY3RsX25vdGlmeShjYXJkLCBTTkRSVl9DVExfRVZFTlRfTUFTS19WQUxVRSwgaWRfcG9pbnRlcik7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworICAgICAgICBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBjYXJkIHBvaW50ZXIsIHRoZSBldmVudC1tYXNrLCBhbmQgdGhlCisgICAgICBjb250cm9sIGlkIHBvaW50ZXIgZm9yIHRoZSBub3RpZmljYXRpb24uIFRoZSBldmVudC1tYXNrCisgICAgICBzcGVjaWZpZXMgdGhlIHR5cGVzIG9mIG5vdGlmaWNhdGlvbiwgZm9yIGV4YW1wbGUsIGluIHRoZSBhYm92ZQorICAgICAgZXhhbXBsZSwgdGhlIGNoYW5nZSBvZiBjb250cm9sIHZhbHVlcyBpcyBub3RpZmllZC4KKyAgICAgIFRoZSBpZCBwb2ludGVyIGlzIHRoZSBwb2ludGVyIG9mIHN0cnVjdCA8c3RydWN0bmFtZT5zbmRfY3RsX2VsZW1faWQ8L3N0cnVjdG5hbWU+CisgICAgICB0byBiZSBub3RpZmllZC4KKyAgICAgIFlvdSBjYW4gZmluZCBzb21lIGV4YW1wbGVzIGluIDxmaWxlbmFtZT5lczE5MzguYzwvZmlsZW5hbWU+IG9yCisgICAgICA8ZmlsZW5hbWU+ZXMxOTY4LmM8L2ZpbGVuYW1lPiBmb3IgaGFyZHdhcmUgdm9sdW1lIGludGVycnVwdHMuIAorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJjb250cm9sLWludGVyZmFjZS10bHYiPgorICAgICAgPHRpdGxlPk1ldGFkYXRhPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgVG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZEIgdmFsdWVzIG9mIGEgbWl4ZXIgY29udHJvbCwgdXNlCisgICAgICBvbiBvZiB0aGUgPGNvbnN0YW50PkRFQ0xBUkVfVExWX3h4eDwvY29uc3RhbnQ+IG1hY3JvcyBmcm9tCisgICAgICA8ZmlsZW5hbWU+Jmx0O3NvdW5kL3Rsdi5oJmd0OzwvZmlsZW5hbWU+IHRvIGRlZmluZSBhIHZhcmlhYmxlCisgICAgICBjb250YWluaW5nIHRoaXMgaW5mb3JtYXRpb24sIHNldCB0aGU8c3RydWN0ZmllbGQ+dGx2LnAKKyAgICAgIDwvc3RydWN0ZmllbGQ+IGZpZWxkIHRvIHBvaW50IHRvIHRoaXMgdmFyaWFibGUsIGFuZCBpbmNsdWRlIHRoZQorICAgICAgPGNvbnN0YW50PlNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfUkVBRDwvY29uc3RhbnQ+IGZsYWcgaW4gdGhlCisgICAgICA8c3RydWN0ZmllbGQ+YWNjZXNzPC9zdHJ1Y3RmaWVsZD4gZmllbGQ7IGxpa2UgdGhpczoKKyAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdGF0aWMgREVDTEFSRV9UTFZfREJfU0NBTEUoZGJfc2NhbGVfbXlfY29udHJvbCwgLTQwNTAsIDE1MCwgMCk7CisKKyAgc3RhdGljIHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IG15X2NvbnRyb2wgPSB7CisgICAgICAgICAgLi4uCisgICAgICAgICAgLmFjY2VzcyA9IFNORFJWX0NUTF9FTEVNX0FDQ0VTU19SRUFEV1JJVEUgfAorICAgICAgICAgICAgICAgICAgICBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVExWX1JFQUQsCisgICAgICAgICAgLi4uCisgICAgICAgICAgLnRsdi5wID0gZGJfc2NhbGVfbXlfY29udHJvbCwKKyAgfTsKK11dPgorICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgVGhlIDxmdW5jdGlvbj5ERUNMQVJFX1RMVl9EQl9TQ0FMRTwvZnVuY3Rpb24+IG1hY3JvIGRlZmluZXMKKyAgICAgIGluZm9ybWF0aW9uIGFib3V0IGEgbWl4ZXIgY29udHJvbCB3aGVyZSBlYWNoIHN0ZXAgaW4gdGhlIGNvbnRyb2wncworICAgICAgdmFsdWUgY2hhbmdlcyB0aGUgZEIgdmFsdWUgYnkgYSBjb25zdGFudCBkQiBhbW91bnQuCisgICAgICBUaGUgZmlyc3QgcGFyYW1ldGVyIGlzIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSB0byBiZSBkZWZpbmVkLgorICAgICAgVGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgdGhlIG1pbmltdW0gdmFsdWUsIGluIHVuaXRzIG9mIDAuMDEgZEIuCisgICAgICBUaGUgdGhpcmQgcGFyYW1ldGVyIGlzIHRoZSBzdGVwIHNpemUsIGluIHVuaXRzIG9mIDAuMDEgZEIuCisgICAgICBTZXQgdGhlIGZvdXJ0aCBwYXJhbWV0ZXIgdG8gMSBpZiB0aGUgbWluaW11bSB2YWx1ZSBhY3R1YWxseSBtdXRlcworICAgICAgdGhlIGNvbnRyb2wuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgVGhlIDxmdW5jdGlvbj5ERUNMQVJFX1RMVl9EQl9MSU5FQVI8L2Z1bmN0aW9uPiBtYWNybyBkZWZpbmVzCisgICAgICBpbmZvcm1hdGlvbiBhYm91dCBhIG1peGVyIGNvbnRyb2wgd2hlcmUgdGhlIGNvbnRyb2wncyB2YWx1ZSBhZmZlY3RzCisgICAgICB0aGUgb3V0cHV0IGxpbmVhcmx5LgorICAgICAgVGhlIGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgdG8gYmUgZGVmaW5lZC4KKyAgICAgIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIHRoZSBtaW5pbXVtIHZhbHVlLCBpbiB1bml0cyBvZiAwLjAxIGRCLgorICAgICAgVGhlIHRoaXJkIHBhcmFtZXRlciBpcyB0aGUgbWF4aW11bSB2YWx1ZSwgaW4gdW5pdHMgb2YgMC4wMSBkQi4KKyAgICAgIElmIHRoZSBtaW5pbXVtIHZhbHVlIG11dGVzIHRoZSBjb250cm9sLCBzZXQgdGhlIHNlY29uZCBwYXJhbWV0ZXIgdG8KKyAgICAgIDxjb25zdGFudD5UTFZfREJfR0FJTl9NVVRFPC9jb25zdGFudD4uCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgIDwvY2hhcHRlcj4KKworCis8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT4KKzwhLS0gQVBJIGZvciBBQzk3IENvZGVjICAtLT4KKzwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgorICA8Y2hhcHRlciBpZD0iYXBpLWFjOTciPgorICAgIDx0aXRsZT5BUEkgZm9yIEFDOTcgQ29kZWM8L3RpdGxlPgorCisgICAgPHNlY3Rpb24+CisgICAgICA8dGl0bGU+R2VuZXJhbDwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIEFMU0EgQUM5NyBjb2RlYyBsYXllciBpcyBhIHdlbGwtZGVmaW5lZCBvbmUsIGFuZCB5b3UgZG9uJ3QKKyAgICAgIGhhdmUgdG8gd3JpdGUgbXVjaCBjb2RlIHRvIGNvbnRyb2wgaXQuIE9ubHkgbG93LWxldmVsIGNvbnRyb2wKKyAgICAgIHJvdXRpbmVzIGFyZSBuZWNlc3NhcnkuIFRoZSBBQzk3IGNvZGVjIEFQSSBpcyBkZWZpbmVkIGluCisgICAgICA8ZmlsZW5hbWU+Jmx0O3NvdW5kL2FjOTdfY29kZWMuaCZndDs8L2ZpbGVuYW1lPi4gCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImFwaS1hYzk3LWV4YW1wbGUiPgorICAgICAgPHRpdGxlPkZ1bGwgQ29kZSBFeGFtcGxlPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICAgIDxleGFtcGxlPgorCSAgICA8dGl0bGU+RXhhbXBsZSBvZiBBQzk3IEludGVyZmFjZTwvdGl0bGU+CisgICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RydWN0IG15Y2hpcCB7CisgICAgICAgICAgLi4uLgorICAgICAgICAgIHN0cnVjdCBzbmRfYWM5NyAqYWM5NzsKKyAgICAgICAgICAuLi4uCisgIH07CisKKyAgc3RhdGljIHVuc2lnbmVkIHNob3J0IHNuZF9teWNoaXBfYWM5N19yZWFkKHN0cnVjdCBzbmRfYWM5NyAqYWM5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHJlZykKKyAgeworICAgICAgICAgIHN0cnVjdCBteWNoaXAgKmNoaXAgPSBhYzk3LT5wcml2YXRlX2RhdGE7CisgICAgICAgICAgLi4uLgorICAgICAgICAgIC8qIHJlYWQgYSByZWdpc3RlciB2YWx1ZSBoZXJlIGZyb20gdGhlIGNvZGVjICovCisgICAgICAgICAgcmV0dXJuIHRoZV9yZWdpc3Rlcl92YWx1ZTsKKyAgfQorCisgIHN0YXRpYyB2b2lkIHNuZF9teWNoaXBfYWM5N193cml0ZShzdHJ1Y3Qgc25kX2FjOTcgKmFjOTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHJlZywgdW5zaWduZWQgc2hvcnQgdmFsKQorICB7CisgICAgICAgICAgc3RydWN0IG15Y2hpcCAqY2hpcCA9IGFjOTctPnByaXZhdGVfZGF0YTsKKyAgICAgICAgICAuLi4uCisgICAgICAgICAgLyogd3JpdGUgdGhlIGdpdmVuIHJlZ2lzdGVyIHZhbHVlIHRvIHRoZSBjb2RlYyAqLworICB9CisKKyAgc3RhdGljIGludCBzbmRfbXljaGlwX2FjOTcoc3RydWN0IG15Y2hpcCAqY2hpcCkKKyAgeworICAgICAgICAgIHN0cnVjdCBzbmRfYWM5N19idXMgKmJ1czsKKyAgICAgICAgICBzdHJ1Y3Qgc25kX2FjOTdfdGVtcGxhdGUgYWM5NzsKKyAgICAgICAgICBpbnQgZXJyOworICAgICAgICAgIHN0YXRpYyBzdHJ1Y3Qgc25kX2FjOTdfYnVzX29wcyBvcHMgPSB7CisgICAgICAgICAgICAgICAgICAud3JpdGUgPSBzbmRfbXljaGlwX2FjOTdfd3JpdGUsCisgICAgICAgICAgICAgICAgICAucmVhZCA9IHNuZF9teWNoaXBfYWM5N19yZWFkLAorICAgICAgICAgIH07CisKKyAgICAgICAgICBlcnIgPSBzbmRfYWM5N19idXMoY2hpcC0+Y2FyZCwgMCwgJm9wcywgTlVMTCwgJmJ1cyk7CisgICAgICAgICAgaWYgKGVyciA8IDApCisgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyOworICAgICAgICAgIG1lbXNldCgmYWM5NywgMCwgc2l6ZW9mKGFjOTcpKTsKKyAgICAgICAgICBhYzk3LnByaXZhdGVfZGF0YSA9IGNoaXA7CisgICAgICAgICAgcmV0dXJuIHNuZF9hYzk3X21peGVyKGJ1cywgJmFjOTcsICZjaGlwLT5hYzk3KTsKKyAgfQorCitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2V4YW1wbGU+CisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImFwaS1hYzk3LWNvbnN0cnVjdG9yIj4KKyAgICAgIDx0aXRsZT5Db25zdHJ1Y3RvcjwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgVG8gY3JlYXRlIGFuIGFjOTcgaW5zdGFuY2UsIGZpcnN0IGNhbGwgPGZ1bmN0aW9uPnNuZF9hYzk3X2J1czwvZnVuY3Rpb24+CisgICAgICB3aXRoIGFuIDx0eXBlPmFjOTdfYnVzX29wc190PC90eXBlPiByZWNvcmQgd2l0aCBjYWxsYmFjayBmdW5jdGlvbnMuCisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RydWN0IHNuZF9hYzk3X2J1cyAqYnVzOworICBzdGF0aWMgc3RydWN0IHNuZF9hYzk3X2J1c19vcHMgb3BzID0geworICAgICAgICAud3JpdGUgPSBzbmRfbXljaGlwX2FjOTdfd3JpdGUsCisgICAgICAgIC5yZWFkID0gc25kX215Y2hpcF9hYzk3X3JlYWQsCisgIH07CisKKyAgc25kX2FjOTdfYnVzKGNhcmQsIDAsICZvcHMsIE5VTEwsICZwYnVzKTsKK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCisgICAgICBUaGUgYnVzIHJlY29yZCBpcyBzaGFyZWQgYW1vbmcgYWxsIGJlbG9uZ2luZyBhYzk3IGluc3RhbmNlcy4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICBBbmQgdGhlbiBjYWxsIDxmdW5jdGlvbj5zbmRfYWM5N19taXhlcigpPC9mdW5jdGlvbj4gd2l0aCBhbgorICAgICAgc3RydWN0IDxzdHJ1Y3RuYW1lPnNuZF9hYzk3X3RlbXBsYXRlPC9zdHJ1Y3RuYW1lPgorICAgICAgcmVjb3JkIHRvZ2V0aGVyIHdpdGggdGhlIGJ1cyBwb2ludGVyIGNyZWF0ZWQgYWJvdmUuCisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RydWN0IHNuZF9hYzk3X3RlbXBsYXRlIGFjOTc7CisgIGludCBlcnI7CisKKyAgbWVtc2V0KCZhYzk3LCAwLCBzaXplb2YoYWM5NykpOworICBhYzk3LnByaXZhdGVfZGF0YSA9IGNoaXA7CisgIHNuZF9hYzk3X21peGVyKGJ1cywgJmFjOTcsICZjaGlwLT5hYzk3KTsKK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCisgICAgICAgIHdoZXJlIGNoaXAtJmd0O2FjOTcgaXMgYSBwb2ludGVyIHRvIGEgbmV3bHkgY3JlYXRlZAorICAgICAgICA8dHlwZT5hYzk3X3Q8L3R5cGU+IGluc3RhbmNlLgorICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSBjaGlwIHBvaW50ZXIgaXMgc2V0IGFzIHRoZSBwcml2YXRlIGRhdGEsIHNvIHRoYXQKKyAgICAgICAgdGhlIHJlYWQvd3JpdGUgY2FsbGJhY2sgZnVuY3Rpb25zIGNhbiByZWZlciB0byB0aGlzIGNoaXAgaW5zdGFuY2UuCisgICAgICAgIFRoaXMgaW5zdGFuY2UgaXMgbm90IG5lY2Vzc2FyaWx5IHN0b3JlZCBpbiB0aGUgY2hpcAorCXJlY29yZC4gIElmIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgcmVnaXN0ZXIgdmFsdWVzIGZyb20gdGhlCisgICAgICAgIGRyaXZlciwgb3IgbmVlZCB0aGUgc3VzcGVuZC9yZXN1bWUgb2YgYWM5NyBjb2RlY3MsIGtlZXAgdGhpcworICAgICAgICBwb2ludGVyIHRvIHBhc3MgdG8gdGhlIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb25zLgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJhcGktYWM5Ny1jYWxsYmFja3MiPgorICAgICAgPHRpdGxlPkNhbGxiYWNrczwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHN0YW5kYXJkIGNhbGxiYWNrcyBhcmUgPHN0cnVjdGZpZWxkPnJlYWQ8L3N0cnVjdGZpZWxkPiBhbmQKKyAgICAgIDxzdHJ1Y3RmaWVsZD53cml0ZTwvc3RydWN0ZmllbGQ+LiBPYnZpb3VzbHkgdGhleSAKKyAgICAgIGNvcnJlc3BvbmQgdG8gdGhlIGZ1bmN0aW9ucyBmb3IgcmVhZCBhbmQgd3JpdGUgYWNjZXNzZXMgdG8gdGhlCisgICAgICBoYXJkd2FyZSBsb3ctbGV2ZWwgY29kZXMuIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxzdHJ1Y3RmaWVsZD5yZWFkPC9zdHJ1Y3RmaWVsZD4gY2FsbGJhY2sgcmV0dXJucyB0aGUKKyAgICAgICAgcmVnaXN0ZXIgdmFsdWUgc3BlY2lmaWVkIGluIHRoZSBhcmd1bWVudC4gCisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RhdGljIHVuc2lnbmVkIHNob3J0IHNuZF9teWNoaXBfYWM5N19yZWFkKHN0cnVjdCBzbmRfYWM5NyAqYWM5NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHJlZykKKyAgeworICAgICAgICAgIHN0cnVjdCBteWNoaXAgKmNoaXAgPSBhYzk3LT5wcml2YXRlX2RhdGE7CisgICAgICAgICAgLi4uLgorICAgICAgICAgIHJldHVybiB0aGVfcmVnaXN0ZXJfdmFsdWU7CisgIH0KK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCisgICAgICAgIEhlcmUsIHRoZSBjaGlwIGNhbiBiZSBjYXN0IGZyb20gYWM5Ny0mZ3Q7cHJpdmF0ZV9kYXRhLgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgTWVhbndoaWxlLCB0aGUgPHN0cnVjdGZpZWxkPndyaXRlPC9zdHJ1Y3RmaWVsZD4gY2FsbGJhY2sgaXMKKyAgICAgICAgdXNlZCB0byBzZXQgdGhlIHJlZ2lzdGVyIHZhbHVlLiAKKworICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdGF0aWMgdm9pZCBzbmRfbXljaGlwX2FjOTdfd3JpdGUoc3RydWN0IHNuZF9hYzk3ICphYzk3LAorICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCByZWcsIHVuc2lnbmVkIHNob3J0IHZhbCkKK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgIFRoZXNlIGNhbGxiYWNrcyBhcmUgbm9uLWF0b21pYyBsaWtlIHRoZSBjb250cm9sIEFQSSBjYWxsYmFja3MuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBUaGVyZSBhcmUgYWxzbyBvdGhlciBjYWxsYmFja3M6CisgICAgICA8c3RydWN0ZmllbGQ+cmVzZXQ8L3N0cnVjdGZpZWxkPiwKKyAgICAgIDxzdHJ1Y3RmaWVsZD53YWl0PC9zdHJ1Y3RmaWVsZD4gYW5kCisgICAgICA8c3RydWN0ZmllbGQ+aW5pdDwvc3RydWN0ZmllbGQ+LiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSA8c3RydWN0ZmllbGQ+cmVzZXQ8L3N0cnVjdGZpZWxkPiBjYWxsYmFjayBpcyB1c2VkIHRvIHJlc2V0CisgICAgICB0aGUgY29kZWMuIElmIHRoZSBjaGlwIHJlcXVpcmVzIGEgc3BlY2lhbCBraW5kIG9mIHJlc2V0LCB5b3UgY2FuCisgICAgICBkZWZpbmUgdGhpcyBjYWxsYmFjay4gCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgPHN0cnVjdGZpZWxkPndhaXQ8L3N0cnVjdGZpZWxkPiBjYWxsYmFjayBpcyB1c2VkIHRvCisgICAgICBhZGQgc29tZSB3YWl0aW5nIHRpbWUgaW4gdGhlIHN0YW5kYXJkIGluaXRpYWxpemF0aW9uIG9mIHRoZSBjb2RlYy4gSWYgdGhlCisgICAgICBjaGlwIHJlcXVpcmVzIHRoZSBleHRyYSB3YWl0aW5nIHRpbWUsIGRlZmluZSB0aGlzIGNhbGxiYWNrLiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSA8c3RydWN0ZmllbGQ+aW5pdDwvc3RydWN0ZmllbGQ+IGNhbGxiYWNrIGlzIHVzZWQgZm9yCisgICAgICBhZGRpdGlvbmFsIGluaXRpYWxpemF0aW9uIG9mIHRoZSBjb2RlYy4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iYXBpLWFjOTctdXBkYXRpbmctcmVnaXN0ZXJzIj4KKyAgICAgIDx0aXRsZT5VcGRhdGluZyBSZWdpc3RlcnMgaW4gVGhlIERyaXZlcjwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRvIHRoZSBjb2RlYyBmcm9tIHRoZSBkcml2ZXIsIHlvdSBjYW4KKyAgICAgIGNhbGwgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CisgICAgICA8ZnVuY3Rpb24+c25kX2FjOTdfd3JpdGUoKTwvZnVuY3Rpb24+LAorICAgICAgPGZ1bmN0aW9uPnNuZF9hYzk3X3JlYWQoKTwvZnVuY3Rpb24+LAorICAgICAgPGZ1bmN0aW9uPnNuZF9hYzk3X3VwZGF0ZSgpPC9mdW5jdGlvbj4gYW5kCisgICAgICA8ZnVuY3Rpb24+c25kX2FjOTdfdXBkYXRlX2JpdHMoKTwvZnVuY3Rpb24+LiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIEJvdGggPGZ1bmN0aW9uPnNuZF9hYzk3X3dyaXRlKCk8L2Z1bmN0aW9uPiBhbmQKKyAgICAgICAgPGZ1bmN0aW9uPnNuZF9hYzk3X3VwZGF0ZSgpPC9mdW5jdGlvbj4gZnVuY3Rpb25zIGFyZSB1c2VkIHRvCisgICAgICAgIHNldCBhIHZhbHVlIHRvIHRoZSBnaXZlbiByZWdpc3RlcgorICAgICAgICAoPGNvbnN0YW50PkFDOTdfWFhYPC9jb25zdGFudD4pLiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZW0gaXMKKyAgICAgICAgdGhhdCA8ZnVuY3Rpb24+c25kX2FjOTdfdXBkYXRlKCk8L2Z1bmN0aW9uPiBkb2Vzbid0IHdyaXRlIGEKKyAgICAgICAgdmFsdWUgaWYgdGhlIGdpdmVuIHZhbHVlIGhhcyBiZWVuIGFscmVhZHkgc2V0LCB3aGlsZQorICAgICAgICA8ZnVuY3Rpb24+c25kX2FjOTdfd3JpdGUoKTwvZnVuY3Rpb24+IGFsd2F5cyByZXdyaXRlcyB0aGUKKyAgICAgICAgdmFsdWUuIAorCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHNuZF9hYzk3X3dyaXRlKGFjOTcsIEFDOTdfTUFTVEVSLCAweDgwODApOworICBzbmRfYWM5N191cGRhdGUoYWM5NywgQUM5N19NQVNURVIsIDB4ODA4MCk7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIDxmdW5jdGlvbj5zbmRfYWM5N19yZWFkKCk8L2Z1bmN0aW9uPiBpcyB1c2VkIHRvIHJlYWQgdGhlIHZhbHVlCisgICAgICAgIG9mIHRoZSBnaXZlbiByZWdpc3Rlci4gRm9yIGV4YW1wbGUsIAorCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHZhbHVlID0gc25kX2FjOTdfcmVhZChhYzk3LCBBQzk3X01BU1RFUik7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIDxmdW5jdGlvbj5zbmRfYWM5N191cGRhdGVfYml0cygpPC9mdW5jdGlvbj4gaXMgdXNlZCB0byB1cGRhdGUKKyAgICAgICAgc29tZSBiaXRzIGluIHRoZSBnaXZlbiByZWdpc3Rlci4gIAorCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHNuZF9hYzk3X3VwZGF0ZV9iaXRzKGFjOTcsIHJlZywgbWFzaywgdmFsdWUpOworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBBbHNvLCB0aGVyZSBpcyBhIGZ1bmN0aW9uIHRvIGNoYW5nZSB0aGUgc2FtcGxlIHJhdGUgKG9mIGEKKyAgICAgICAgZ2l2ZW4gcmVnaXN0ZXIgc3VjaCBhcworICAgICAgICA8Y29uc3RhbnQ+QUM5N19QQ01fRlJPTlRfREFDX1JBVEU8L2NvbnN0YW50Pikgd2hlbiBWUkEgb3IKKyAgICAgICAgRFJBIGlzIHN1cHBvcnRlZCBieSB0aGUgY29kZWM6CisgICAgICAgIDxmdW5jdGlvbj5zbmRfYWM5N19zZXRfcmF0ZSgpPC9mdW5jdGlvbj4uIAorCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHNuZF9hYzk3X3NldF9yYXRlKGFjOTcsIEFDOTdfUENNX0ZST05UX0RBQ19SQVRFLCA0NDEwMCk7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBmb2xsb3dpbmcgcmVnaXN0ZXJzIGFyZSBhdmFpbGFibGUgdG8gc2V0IHRoZSByYXRlOgorICAgICAgPGNvbnN0YW50PkFDOTdfUENNX01JQ19BRENfUkFURTwvY29uc3RhbnQ+LAorICAgICAgPGNvbnN0YW50PkFDOTdfUENNX0ZST05UX0RBQ19SQVRFPC9jb25zdGFudD4sCisgICAgICA8Y29uc3RhbnQ+QUM5N19QQ01fTFJfQURDX1JBVEU8L2NvbnN0YW50PiwKKyAgICAgIDxjb25zdGFudD5BQzk3X1NQRElGPC9jb25zdGFudD4uIFdoZW4KKyAgICAgIDxjb25zdGFudD5BQzk3X1NQRElGPC9jb25zdGFudD4gaXMgc3BlY2lmaWVkLCB0aGUgcmVnaXN0ZXIgaXMKKyAgICAgIG5vdCByZWFsbHkgY2hhbmdlZCBidXQgdGhlIGNvcnJlc3BvbmRpbmcgSUVDOTU4IHN0YXR1cyBiaXRzIHdpbGwKKyAgICAgIGJlIHVwZGF0ZWQuIAorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJhcGktYWM5Ny1jbG9jay1hZGp1c3RtZW50Ij4KKyAgICAgIDx0aXRsZT5DbG9jayBBZGp1c3RtZW50PC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBJbiBzb21lIGNoaXBzLCB0aGUgY2xvY2sgb2YgdGhlIGNvZGVjIGlzbid0IDQ4MDAwIGJ1dCB1c2luZyBhCisgICAgICBQQ0kgY2xvY2sgKHRvIHNhdmUgYSBxdWFydHohKS4gSW4gdGhpcyBjYXNlLCBjaGFuZ2UgdGhlIGZpZWxkCisgICAgICBidXMtJmd0O2Nsb2NrIHRvIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICB2YWx1ZS4gRm9yIGV4YW1wbGUsIGludGVsOHgwIAorICAgICAgYW5kIGVzMTk2OCBkcml2ZXJzIGhhdmUgdGhlaXIgb3duIGZ1bmN0aW9uIHRvIHJlYWQgZnJvbSB0aGUgY2xvY2suCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImFwaS1hYzk3LXByb2MtZmlsZXMiPgorICAgICAgPHRpdGxlPlByb2MgRmlsZXM8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBBTFNBIEFDOTcgaW50ZXJmYWNlIHdpbGwgY3JlYXRlIGEgcHJvYyBmaWxlIHN1Y2ggYXMKKyAgICAgIDxmaWxlbmFtZT4vcHJvYy9hc291bmQvY2FyZDAvY29kZWM5NyMwL2FjOTcjMC0wPC9maWxlbmFtZT4gYW5kCisgICAgICA8ZmlsZW5hbWU+YWM5NyMwLTArcmVnczwvZmlsZW5hbWU+LiBZb3UgY2FuIHJlZmVyIHRvIHRoZXNlIGZpbGVzIHRvCisgICAgICBzZWUgdGhlIGN1cnJlbnQgc3RhdHVzIGFuZCByZWdpc3RlcnMgb2YgdGhlIGNvZGVjLiAKKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iYXBpLWFjOTctbXVsdGlwbGUtY29kZWNzIj4KKyAgICAgIDx0aXRsZT5NdWx0aXBsZSBDb2RlY3M8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIFdoZW4gdGhlcmUgYXJlIHNldmVyYWwgY29kZWNzIG9uIHRoZSBzYW1lIGNhcmQsIHlvdSBuZWVkIHRvCisgICAgICBjYWxsIDxmdW5jdGlvbj5zbmRfYWM5N19taXhlcigpPC9mdW5jdGlvbj4gbXVsdGlwbGUgdGltZXMgd2l0aAorICAgICAgYWM5Ny5udW09MSBvciBncmVhdGVyLiBUaGUgPHN0cnVjdGZpZWxkPm51bTwvc3RydWN0ZmllbGQ+IGZpZWxkCisgICAgICBzcGVjaWZpZXMgdGhlIGNvZGVjIG51bWJlci4gCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBJZiB5b3Ugc2V0IHVwIG11bHRpcGxlIGNvZGVjcywgeW91IGVpdGhlciBuZWVkIHRvIHdyaXRlCisgICAgICBkaWZmZXJlbnQgY2FsbGJhY2tzIGZvciBlYWNoIGNvZGVjIG9yIGNoZWNrCisgICAgICBhYzk3LSZndDtudW0gaW4gdGhlIGNhbGxiYWNrIHJvdXRpbmVzLiAKKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgPC9jaGFwdGVyPgorCisKKzwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgorPCEtLSBNSURJIChNUFU0MDEtVUFSVCkgSW50ZXJmYWNlICAtLT4KKzwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgorICA8Y2hhcHRlciBpZD0ibWlkaS1pbnRlcmZhY2UiPgorICAgIDx0aXRsZT5NSURJIChNUFU0MDEtVUFSVCkgSW50ZXJmYWNlPC90aXRsZT4KKworICAgIDxzZWN0aW9uIGlkPSJtaWRpLWludGVyZmFjZS1nZW5lcmFsIj4KKyAgICAgIDx0aXRsZT5HZW5lcmFsPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBNYW55IHNvdW5kY2FyZHMgaGF2ZSBidWlsdC1pbiBNSURJIChNUFU0MDEtVUFSVCkKKyAgICAgIGludGVyZmFjZXMuIFdoZW4gdGhlIHNvdW5kY2FyZCBzdXBwb3J0cyB0aGUgc3RhbmRhcmQgTVBVNDAxLVVBUlQKKyAgICAgIGludGVyZmFjZSwgbW9zdCBsaWtlbHkgeW91IGNhbiB1c2UgdGhlIEFMU0EgTVBVNDAxLVVBUlQgQVBJLiBUaGUKKyAgICAgIE1QVTQwMS1VQVJUIEFQSSBpcyBkZWZpbmVkIGluCisgICAgICA8ZmlsZW5hbWU+Jmx0O3NvdW5kL21wdTQwMS5oJmd0OzwvZmlsZW5hbWU+LiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFNvbWUgc291bmRjaGlwcyBoYXZlIGEgc2ltaWxhciBidXQgc2xpZ2h0bHkgZGlmZmVyZW50CisgICAgICBpbXBsZW1lbnRhdGlvbiBvZiBtcHU0MDEgc3R1ZmYuIEZvciBleGFtcGxlLCBlbXUxMGsxIGhhcyBpdHMgb3duCisgICAgICBtcHU0MDEgcm91dGluZXMuIAorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJtaWRpLWludGVyZmFjZS1jb25zdHJ1Y3RvciI+CisgICAgICA8dGl0bGU+Q29uc3RydWN0b3I8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIFRvIGNyZWF0ZSBhIHJhd21pZGkgb2JqZWN0LCBjYWxsCisgICAgICA8ZnVuY3Rpb24+c25kX21wdTQwMV91YXJ0X25ldygpPC9mdW5jdGlvbj4uIAorCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0cnVjdCBzbmRfcmF3bWlkaSAqcm1pZGk7CisgIHNuZF9tcHU0MDFfdWFydF9uZXcoY2FyZCwgMCwgTVBVNDAxX0hXX01QVTQwMSwgcG9ydCwgaW5mb19mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICBpcnEsICZybWlkaSk7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgY2FyZCBwb2ludGVyLCBhbmQgdGhlIHNlY29uZCBpcyB0aGUKKyAgICAgIGluZGV4IG9mIHRoaXMgY29tcG9uZW50LiBZb3UgY2FuIGNyZWF0ZSB1cCB0byA4IHJhd21pZGkKKyAgICAgIGRldmljZXMuIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHRoaXJkIGFyZ3VtZW50IGlzIHRoZSB0eXBlIG9mIHRoZSBoYXJkd2FyZSwKKyAgICAgIDxjb25zdGFudD5NUFU0MDFfSFdfWFhYPC9jb25zdGFudD4uIElmIGl0J3Mgbm90IGEgc3BlY2lhbCBvbmUsCisgICAgICB5b3UgY2FuIHVzZSA8Y29uc3RhbnQ+TVBVNDAxX0hXX01QVTQwMTwvY29uc3RhbnQ+LiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSA0dGggYXJndW1lbnQgaXMgdGhlIEkvTyBwb3J0IGFkZHJlc3MuIE1hbnkKKyAgICAgIGJhY2t3YXJkLWNvbXBhdGlibGUgTVBVNDAxIGhhdmUgYW4gSS9PIHBvcnQgc3VjaCBhcyAweDMzMC4gT3IsIGl0CisgICAgICBtaWdodCBiZSBhIHBhcnQgb2YgaXRzIG93biBQQ0kgSS9PIHJlZ2lvbi4gSXQgZGVwZW5kcyBvbiB0aGUKKyAgICAgIGNoaXAgZGVzaWduLiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisJVGhlIDV0aCBhcmd1bWVudCBpcyBhIGJpdGZsYWcgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgICAgICAgIFdoZW4gdGhlIEkvTyBwb3J0IGFkZHJlc3MgYWJvdmUgaXMgcGFydCBvZiB0aGUgUENJIEkvTworICAgICAgcmVnaW9uLCB0aGUgTVBVNDAxIEkvTyBwb3J0IG1pZ2h0IGhhdmUgYmVlbiBhbHJlYWR5IGFsbG9jYXRlZAorICAgICAgKHJlc2VydmVkKSBieSB0aGUgZHJpdmVyIGl0c2VsZi4gSW4gc3VjaCBhIGNhc2UsIHBhc3MgYSBiaXQgZmxhZworICAgICAgPGNvbnN0YW50Pk1QVTQwMV9JTkZPX0lOVEVHUkFURUQ8L2NvbnN0YW50PiwKKyAgICAgIGFuZCB0aGUgbXB1NDAxLXVhcnQgbGF5ZXIgd2lsbCBhbGxvY2F0ZSB0aGUgSS9PIHBvcnRzIGJ5IGl0c2VsZi4gCisgICAgICA8L3BhcmE+CisKKwk8cGFyYT4KKwlXaGVuIHRoZSBjb250cm9sbGVyIHN1cHBvcnRzIG9ubHkgdGhlIGlucHV0IG9yIG91dHB1dCBNSURJIHN0cmVhbSwKKwlwYXNzIHRoZSA8Y29uc3RhbnQ+TVBVNDAxX0lORk9fSU5QVVQ8L2NvbnN0YW50PiBvcgorCTxjb25zdGFudD5NUFU0MDFfSU5GT19PVVRQVVQ8L2NvbnN0YW50PiBiaXRmbGFnLCByZXNwZWN0aXZlbHkuCisJVGhlbiB0aGUgcmF3bWlkaSBpbnN0YW5jZSBpcyBjcmVhdGVkIGFzIGEgc2luZ2xlIHN0cmVhbS4KKwk8L3BhcmE+CisKKwk8cGFyYT4KKwk8Y29uc3RhbnQ+TVBVNDAxX0lORk9fTU1JTzwvY29uc3RhbnQ+IGJpdGZsYWcgaXMgdXNlZCB0byBjaGFuZ2UKKwl0aGUgYWNjZXNzIG1ldGhvZCB0byBNTUlPICh2aWEgcmVhZGIgYW5kIHdyaXRlYikgaW5zdGVhZCBvZgorCWlvYiBhbmQgb3V0Yi4gSW4gdGhpcyBjYXNlLCB5b3UgaGF2ZSB0byBwYXNzIHRoZSBpb21hcHBlZCBhZGRyZXNzCisJdG8gPGZ1bmN0aW9uPnNuZF9tcHU0MDFfdWFydF9uZXcoKTwvZnVuY3Rpb24+LgorCTwvcGFyYT4KKworCTxwYXJhPgorCVdoZW4gPGNvbnN0YW50Pk1QVTQwMV9JTkZPX1RYX0lSUTwvY29uc3RhbnQ+IGlzIHNldCwgdGhlIG91dHB1dAorCXN0cmVhbSBpc24ndCBjaGVja2VkIGluIHRoZSBkZWZhdWx0IGludGVycnVwdCBoYW5kbGVyLiAgVGhlIGRyaXZlcgorCW5lZWRzIHRvIGNhbGwgPGZ1bmN0aW9uPnNuZF9tcHU0MDFfdWFydF9pbnRlcnJ1cHRfdHgoKTwvZnVuY3Rpb24+CisJYnkgaXRzZWxmIHRvIHN0YXJ0IHByb2Nlc3NpbmcgdGhlIG91dHB1dCBzdHJlYW0gaW4gdGhlIGlycSBoYW5kbGVyLgorCTwvcGFyYT4KKworCTxwYXJhPgorCUlmIHRoZSBNUFUtNDAxIGludGVyZmFjZSBzaGFyZXMgaXRzIGludGVycnVwdCB3aXRoIHRoZSBvdGhlciBsb2dpY2FsCisJZGV2aWNlcyBvbiB0aGUgY2FyZCwgc2V0IDxjb25zdGFudD5NUFU0MDFfSU5GT19JUlFfSE9PSzwvY29uc3RhbnQ+CisJKHNlZSA8bGluayBsaW5rZW5kPSJtaWRpLWludGVyZmFjZS1pbnRlcnJ1cHQtaGFuZGxlciI+PGNpdGV0aXRsZT4KKwliZWxvdzwvY2l0ZXRpdGxlPjwvbGluaz4pLgorCTwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFVzdWFsbHksIHRoZSBwb3J0IGFkZHJlc3MgY29ycmVzcG9uZHMgdG8gdGhlIGNvbW1hbmQgcG9ydCBhbmQKKyAgICAgICAgcG9ydCArIDEgY29ycmVzcG9uZHMgdG8gdGhlIGRhdGEgcG9ydC4gSWYgbm90LCB5b3UgbWF5IGNoYW5nZQorICAgICAgICB0aGUgPHN0cnVjdGZpZWxkPmNwb3J0PC9zdHJ1Y3RmaWVsZD4gZmllbGQgb2YKKyAgICAgICAgc3RydWN0IDxzdHJ1Y3RuYW1lPnNuZF9tcHU0MDE8L3N0cnVjdG5hbWU+IG1hbnVhbGx5IAorICAgICAgICBhZnRlcndhcmQuIEhvd2V2ZXIsIDxzdHJ1Y3RuYW1lPnNuZF9tcHU0MDE8L3N0cnVjdG5hbWU+IHBvaW50ZXIgaXMgbm90CisgICAgICAgIHJldHVybmVkIGV4cGxpY2l0bHkgYnkKKyAgICAgICAgPGZ1bmN0aW9uPnNuZF9tcHU0MDFfdWFydF9uZXcoKTwvZnVuY3Rpb24+LiBZb3UgbmVlZCB0byBjYXN0CisgICAgICAgIHJtaWRpLSZndDtwcml2YXRlX2RhdGEgdG8KKyAgICAgICAgPHN0cnVjdG5hbWU+c25kX21wdTQwMTwvc3RydWN0bmFtZT4gZXhwbGljaXRseSwgCisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RydWN0IHNuZF9tcHU0MDEgKm1wdTsKKyAgbXB1ID0gcm1pZGktPnByaXZhdGVfZGF0YTsKK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCisgICAgICAgIGFuZCByZXNldCB0aGUgY3BvcnQgYXMgeW91IGxpa2U6CisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgbXB1LT5jcG9ydCA9IG15X293bl9jb250cm9sX3BvcnQ7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisJVGhlIDZ0aCBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIElTQSBpcnEgbnVtYmVyIHRoYXQgd2lsbCBiZQorCWFsbG9jYXRlZC4gIElmIG5vIGludGVycnVwdCBpcyB0byBiZSBhbGxvY2F0ZWQgKGJlY2F1c2UgeW91cgorCWNvZGUgaXMgYWxyZWFkeSBhbGxvY2F0aW5nIGEgc2hhcmVkIGludGVycnVwdCwgb3IgYmVjYXVzZSB0aGUKKwlkZXZpY2UgZG9lcyBub3QgdXNlIGludGVycnVwdHMpLCBwYXNzIC0xIGluc3RlYWQuCisJRm9yIGEgTVBVLTQwMSBkZXZpY2Ugd2l0aG91dCBhbiBpbnRlcnJ1cHQsIGEgcG9sbGluZyB0aW1lcgorCXdpbGwgYmUgdXNlZCBpbnN0ZWFkLgorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJtaWRpLWludGVyZmFjZS1pbnRlcnJ1cHQtaGFuZGxlciI+CisgICAgICA8dGl0bGU+SW50ZXJydXB0IEhhbmRsZXI8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIFdoZW4gdGhlIGludGVycnVwdCBpcyBhbGxvY2F0ZWQgaW4KKyAgICAgIDxmdW5jdGlvbj5zbmRfbXB1NDAxX3VhcnRfbmV3KCk8L2Z1bmN0aW9uPiwgYW4gZXhjbHVzaXZlIElTQQorICAgICAgaW50ZXJydXB0IGhhbmRsZXIgaXMgYXV0b21hdGljYWxseSB1c2VkLCBoZW5jZSB5b3UgZG9uJ3QgaGF2ZQorICAgICAgYW55dGhpbmcgZWxzZSB0byBkbyB0aGFuIGNyZWF0aW5nIHRoZSBtcHU0MDEgc3R1ZmYuICBPdGhlcndpc2UsIHlvdQorICAgICAgaGF2ZSB0byBzZXQgPGNvbnN0YW50Pk1QVTQwMV9JTkZPX0lSUV9IT09LPC9jb25zdGFudD4sIGFuZCBjYWxsCisgICAgICA8ZnVuY3Rpb24+c25kX21wdTQwMV91YXJ0X2ludGVycnVwdCgpPC9mdW5jdGlvbj4gZXhwbGljaXRseSBmcm9tIHlvdXIKKyAgICAgIG93biBpbnRlcnJ1cHQgaGFuZGxlciB3aGVuIGl0IGhhcyBkZXRlcm1pbmVkIHRoYXQgYSBVQVJUIGludGVycnVwdAorICAgICAgaGFzIG9jY3VycmVkLgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgSW4gdGhpcyBjYXNlLCB5b3UgbmVlZCB0byBwYXNzIHRoZSBwcml2YXRlX2RhdGEgb2YgdGhlCisgICAgICAgIHJldHVybmVkIHJhd21pZGkgb2JqZWN0IGZyb20KKyAgICAgICAgPGZ1bmN0aW9uPnNuZF9tcHU0MDFfdWFydF9uZXcoKTwvZnVuY3Rpb24+IGFzIHRoZSBzZWNvbmQKKyAgICAgICAgYXJndW1lbnQgb2YgPGZ1bmN0aW9uPnNuZF9tcHU0MDFfdWFydF9pbnRlcnJ1cHQoKTwvZnVuY3Rpb24+LiAKKworICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzbmRfbXB1NDAxX3VhcnRfaW50ZXJydXB0KGlycSwgcm1pZGktPnByaXZhdGVfZGF0YSwgcmVncyk7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgPC9jaGFwdGVyPgorCisKKzwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgorPCEtLSBSYXdNSURJIEludGVyZmFjZSAgLS0+Cis8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT4KKyAgPGNoYXB0ZXIgaWQ9InJhd21pZGktaW50ZXJmYWNlIj4KKyAgICA8dGl0bGU+UmF3TUlESSBJbnRlcmZhY2U8L3RpdGxlPgorCisgICAgPHNlY3Rpb24gaWQ9InJhd21pZGktaW50ZXJmYWNlLW92ZXJ2aWV3Ij4KKyAgICAgIDx0aXRsZT5PdmVydmlldzwvdGl0bGU+CisKKyAgICAgIDxwYXJhPgorICAgICAgVGhlIHJhdyBNSURJIGludGVyZmFjZSBpcyB1c2VkIGZvciBoYXJkd2FyZSBNSURJIHBvcnRzIHRoYXQgY2FuCisgICAgICBiZSBhY2Nlc3NlZCBhcyBhIGJ5dGUgc3RyZWFtLiAgSXQgaXMgbm90IHVzZWQgZm9yIHN5bnRoZXNpemVyCisgICAgICBjaGlwcyB0aGF0IGRvIG5vdCBkaXJlY3RseSB1bmRlcnN0YW5kIE1JREkuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgQUxTQSBoYW5kbGVzIGZpbGUgYW5kIGJ1ZmZlciBtYW5hZ2VtZW50LiAgQWxsIHlvdSBoYXZlIHRvIGRvIGlzCisgICAgICB0byB3cml0ZSBzb21lIGNvZGUgdG8gbW92ZSBkYXRhIGJldHdlZW4gdGhlIGJ1ZmZlciBhbmQgdGhlCisgICAgICBoYXJkd2FyZS4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICBUaGUgcmF3bWlkaSBBUEkgaXMgZGVmaW5lZCBpbgorICAgICAgPGZpbGVuYW1lPiZsdDtzb3VuZC9yYXdtaWRpLmgmZ3Q7PC9maWxlbmFtZT4uCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9InJhd21pZGktaW50ZXJmYWNlLWNvbnN0cnVjdG9yIj4KKyAgICAgIDx0aXRsZT5Db25zdHJ1Y3RvcjwvdGl0bGU+CisKKyAgICAgIDxwYXJhPgorICAgICAgVG8gY3JlYXRlIGEgcmF3bWlkaSBkZXZpY2UsIGNhbGwgdGhlCisgICAgICA8ZnVuY3Rpb24+c25kX3Jhd21pZGlfbmV3PC9mdW5jdGlvbj4gZnVuY3Rpb246CisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0cnVjdCBzbmRfcmF3bWlkaSAqcm1pZGk7CisgIGVyciA9IHNuZF9yYXdtaWRpX25ldyhjaGlwLT5jYXJkLCAiTXlNSURJIiwgMCwgb3V0cywgaW5zLCAmcm1pZGkpOworICBpZiAoZXJyIDwgMCkKKyAgICAgICAgICByZXR1cm4gZXJyOworICBybWlkaS0+cHJpdmF0ZV9kYXRhID0gY2hpcDsKKyAgc3RyY3B5KHJtaWRpLT5uYW1lLCAiTXkgTUlESSIpOworICBybWlkaS0+aW5mb19mbGFncyA9IFNORFJWX1JBV01JRElfSU5GT19PVVRQVVQgfAorICAgICAgICAgICAgICAgICAgICAgIFNORFJWX1JBV01JRElfSU5GT19JTlBVVCB8CisgICAgICAgICAgICAgICAgICAgICAgU05EUlZfUkFXTUlESV9JTkZPX0RVUExFWDsKK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgIFRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgY2FyZCBwb2ludGVyLCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzCisgICAgICB0aGUgSUQgc3RyaW5nLgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgIFRoZSB0aGlyZCBhcmd1bWVudCBpcyB0aGUgaW5kZXggb2YgdGhpcyBjb21wb25lbnQuICBZb3UgY2FuCisgICAgICBjcmVhdGUgdXAgdG8gOCByYXdtaWRpIGRldmljZXMuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgVGhlIGZvdXJ0aCBhbmQgZmlmdGggYXJndW1lbnRzIGFyZSB0aGUgbnVtYmVyIG9mIG91dHB1dCBhbmQKKyAgICAgIGlucHV0IHN1YnN0cmVhbXMsIHJlc3BlY3RpdmVseSwgb2YgdGhpcyBkZXZpY2UgKGEgc3Vic3RyZWFtIGlzCisgICAgICB0aGUgZXF1aXZhbGVudCBvZiBhIE1JREkgcG9ydCkuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgU2V0IHRoZSA8c3RydWN0ZmllbGQ+aW5mb19mbGFnczwvc3RydWN0ZmllbGQ+IGZpZWxkIHRvIHNwZWNpZnkKKyAgICAgIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIGRldmljZS4KKyAgICAgIFNldCA8Y29uc3RhbnQ+U05EUlZfUkFXTUlESV9JTkZPX09VVFBVVDwvY29uc3RhbnQ+IGlmIHRoZXJlIGlzCisgICAgICBhdCBsZWFzdCBvbmUgb3V0cHV0IHBvcnQsCisgICAgICA8Y29uc3RhbnQ+U05EUlZfUkFXTUlESV9JTkZPX0lOUFVUPC9jb25zdGFudD4gaWYgdGhlcmUgaXMgYXQKKyAgICAgIGxlYXN0IG9uZSBpbnB1dCBwb3J0LAorICAgICAgYW5kIDxjb25zdGFudD5TTkRSVl9SQVdNSURJX0lORk9fRFVQTEVYPC9jb25zdGFudD4gaWYgdGhlIGRldmljZQorICAgICAgY2FuIGhhbmRsZSBvdXRwdXQgYW5kIGlucHV0IGF0IHRoZSBzYW1lIHRpbWUuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgQWZ0ZXIgdGhlIHJhd21pZGkgZGV2aWNlIGlzIGNyZWF0ZWQsIHlvdSBuZWVkIHRvIHNldCB0aGUKKyAgICAgIG9wZXJhdG9ycyAoY2FsbGJhY2tzKSBmb3IgZWFjaCBzdWJzdHJlYW0uICBUaGVyZSBhcmUgaGVscGVyCisgICAgICBmdW5jdGlvbnMgdG8gc2V0IHRoZSBvcGVyYXRvcnMgZm9yIGFsbCB0aGUgc3Vic3RyZWFtcyBvZiBhIGRldmljZToKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc25kX3Jhd21pZGlfc2V0X29wcyhybWlkaSwgU05EUlZfUkFXTUlESV9TVFJFQU1fT1VUUFVULCAmc25kX215bWlkaV9vdXRwdXRfb3BzKTsKKyAgc25kX3Jhd21pZGlfc2V0X29wcyhybWlkaSwgU05EUlZfUkFXTUlESV9TVFJFQU1fSU5QVVQsICZzbmRfbXltaWRpX2lucHV0X29wcyk7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICBUaGUgb3BlcmF0b3JzIGFyZSB1c3VhbGx5IGRlZmluZWQgbGlrZSB0aGlzOgorICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdGF0aWMgc3RydWN0IHNuZF9yYXdtaWRpX29wcyBzbmRfbXltaWRpX291dHB1dF9vcHMgPSB7CisgICAgICAgICAgLm9wZW4gPSAgICBzbmRfbXltaWRpX291dHB1dF9vcGVuLAorICAgICAgICAgIC5jbG9zZSA9ICAgc25kX215bWlkaV9vdXRwdXRfY2xvc2UsCisgICAgICAgICAgLnRyaWdnZXIgPSBzbmRfbXltaWRpX291dHB1dF90cmlnZ2VyLAorICB9OworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisgICAgICBUaGVzZSBjYWxsYmFja3MgYXJlIGV4cGxhaW5lZCBpbiB0aGUgPGxpbmsKKyAgICAgIGxpbmtlbmQ9InJhd21pZGktaW50ZXJmYWNlLWNhbGxiYWNrcyI+PGNpdGV0aXRsZT5DYWxsYmFja3M8L2NpdGV0aXRsZT48L2xpbms+CisgICAgICBzZWN0aW9uLgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgIElmIHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIHN1YnN0cmVhbSwgeW91IHNob3VsZCBnaXZlIGEKKyAgICAgIHVuaXF1ZSBuYW1lIHRvIGVhY2ggb2YgdGhlbToKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RydWN0IHNuZF9yYXdtaWRpX3N1YnN0cmVhbSAqc3Vic3RyZWFtOworICBsaXN0X2Zvcl9lYWNoX2VudHJ5KHN1YnN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAmcm1pZGktPnN0cmVhbXNbU05EUlZfUkFXTUlESV9TVFJFQU1fT1VUUFVUXS5zdWJzdHJlYW1zLAorICAgICAgICAgICAgICAgICAgICAgIGxpc3QgeworICAgICAgICAgIHNwcmludGYoc3Vic3RyZWFtLT5uYW1lLCAiTXkgTUlESSBQb3J0ICVkIiwgc3Vic3RyZWFtLT5udW1iZXIgKyAxKTsKKyAgfQorICAvKiBzYW1lIGZvciBTTkRSVl9SQVdNSURJX1NUUkVBTV9JTlBVVCAqLworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9InJhd21pZGktaW50ZXJmYWNlLWNhbGxiYWNrcyI+CisgICAgICA8dGl0bGU+Q2FsbGJhY2tzPC90aXRsZT4KKworICAgICAgPHBhcmE+CisgICAgICBJbiBhbGwgdGhlIGNhbGxiYWNrcywgdGhlIHByaXZhdGUgZGF0YSB0aGF0IHlvdSd2ZSBzZXQgZm9yIHRoZQorICAgICAgcmF3bWlkaSBkZXZpY2UgY2FuIGJlIGFjY2Vzc2VkIGFzCisgICAgICBzdWJzdHJlYW0tJmd0O3JtaWRpLSZndDtwcml2YXRlX2RhdGEuCisgICAgICA8IS0tIDxjb2RlPiBpc24ndCBhdmFpbGFibGUgYmVmb3JlIERvY0Jvb2sgNC4zIC0tPgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgIElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgcG9ydCwgeW91ciBjYWxsYmFja3MgY2FuIGRldGVybWluZSB0aGUKKyAgICAgIHBvcnQgaW5kZXggZnJvbSB0aGUgc3RydWN0IHNuZF9yYXdtaWRpX3N1YnN0cmVhbSBkYXRhIHBhc3NlZCB0byBlYWNoCisgICAgICBjYWxsYmFjazoKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RydWN0IHNuZF9yYXdtaWRpX3N1YnN0cmVhbSAqc3Vic3RyZWFtOworICBpbnQgaW5kZXggPSBzdWJzdHJlYW0tPm51bWJlcjsKK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgPC9wYXJhPgorCisgICAgICA8c2VjdGlvbiBpZD0icmF3bWlkaS1pbnRlcmZhY2Utb3Atb3BlbiI+CisgICAgICA8dGl0bGU+PGZ1bmN0aW9uPm9wZW48L2Z1bmN0aW9uPiBjYWxsYmFjazwvdGl0bGU+CisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RhdGljIGludCBzbmRfeHh4X29wZW4oc3RydWN0IHNuZF9yYXdtaWRpX3N1YnN0cmVhbSAqc3Vic3RyZWFtKTsKK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICBUaGlzIGlzIGNhbGxlZCB3aGVuIGEgc3Vic3RyZWFtIGlzIG9wZW5lZC4KKyAgICAgICAgWW91IGNhbiBpbml0aWFsaXplIHRoZSBoYXJkd2FyZSBoZXJlLCBidXQgeW91IHNob3VsZG4ndAorICAgICAgICBzdGFydCB0cmFuc21pdHRpbmcvcmVjZWl2aW5nIGRhdGEgeWV0LgorICAgICAgICA8L3BhcmE+CisgICAgICA8L3NlY3Rpb24+CisKKyAgICAgIDxzZWN0aW9uIGlkPSJyYXdtaWRpLWludGVyZmFjZS1vcC1jbG9zZSI+CisgICAgICA8dGl0bGU+PGZ1bmN0aW9uPmNsb3NlPC9mdW5jdGlvbj4gY2FsbGJhY2s8L3RpdGxlPgorCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0YXRpYyBpbnQgc25kX3h4eF9jbG9zZShzdHJ1Y3Qgc25kX3Jhd21pZGlfc3Vic3RyZWFtICpzdWJzdHJlYW0pOworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgIEd1ZXNzIHdoYXQuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmdW5jdGlvbj5vcGVuPC9mdW5jdGlvbj4gYW5kIDxmdW5jdGlvbj5jbG9zZTwvZnVuY3Rpb24+CisgICAgICAgIGNhbGxiYWNrcyBvZiBhIHJhd21pZGkgZGV2aWNlIGFyZSBzZXJpYWxpemVkIHdpdGggYSBtdXRleCwKKyAgICAgICAgYW5kIGNhbiBzbGVlcC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0aW9uPgorCisgICAgICA8c2VjdGlvbiBpZD0icmF3bWlkaS1pbnRlcmZhY2Utb3AtdHJpZ2dlci1vdXQiPgorICAgICAgPHRpdGxlPjxmdW5jdGlvbj50cmlnZ2VyPC9mdW5jdGlvbj4gY2FsbGJhY2sgZm9yIG91dHB1dAorICAgICAgc3Vic3RyZWFtczwvdGl0bGU+CisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RhdGljIHZvaWQgc25kX3h4eF9vdXRwdXRfdHJpZ2dlcihzdHJ1Y3Qgc25kX3Jhd21pZGlfc3Vic3RyZWFtICpzdWJzdHJlYW0sIGludCB1cCk7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBpcyBjYWxsZWQgd2l0aCBhIG5vbnplcm8gPHBhcmFtZXRlcj51cDwvcGFyYW1ldGVyPgorICAgICAgICBwYXJhbWV0ZXIgd2hlbiB0aGVyZSBpcyBzb21lIGRhdGEgaW4gdGhlIHN1YnN0cmVhbSBidWZmZXIgdGhhdAorICAgICAgICBtdXN0IGJlIHRyYW5zbWl0dGVkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgIFRvIHJlYWQgZGF0YSBmcm9tIHRoZSBidWZmZXIsIGNhbGwKKyAgICAgICAgPGZ1bmN0aW9uPnNuZF9yYXdtaWRpX3RyYW5zbWl0X3BlZWs8L2Z1bmN0aW9uPi4gIEl0IHdpbGwKKyAgICAgICAgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBoYXZlIGJlZW4gcmVhZDsgdGhpcyB3aWxsIGJlCisgICAgICAgIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlcXVlc3RlZCB3aGVuIHRoZXJlIGFyZSBubyBtb3JlCisgICAgICAgIGRhdGEgaW4gdGhlIGJ1ZmZlci4KKyAgICAgICAgQWZ0ZXIgdGhlIGRhdGEgaGF2ZSBiZWVuIHRyYW5zbWl0dGVkIHN1Y2Nlc3NmdWxseSwgY2FsbAorICAgICAgICA8ZnVuY3Rpb24+c25kX3Jhd21pZGlfdHJhbnNtaXRfYWNrPC9mdW5jdGlvbj4gdG8gcmVtb3ZlIHRoZQorICAgICAgICBkYXRhIGZyb20gdGhlIHN1YnN0cmVhbSBidWZmZXI6CisgICAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICB1bnNpZ25lZCBjaGFyIGRhdGE7CisgIHdoaWxlIChzbmRfcmF3bWlkaV90cmFuc21pdF9wZWVrKHN1YnN0cmVhbSwgJmRhdGEsIDEpID09IDEpIHsKKyAgICAgICAgICBpZiAoc25kX215Y2hpcF90cnlfdG9fdHJhbnNtaXQoZGF0YSkpCisgICAgICAgICAgICAgICAgICBzbmRfcmF3bWlkaV90cmFuc21pdF9hY2soc3Vic3RyZWFtLCAxKTsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICBicmVhazsgLyogaGFyZHdhcmUgRklGTyBmdWxsICovCisgIH0KK11dPgorICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICBJZiB5b3Uga25vdyBiZWZvcmVoYW5kIHRoYXQgdGhlIGhhcmR3YXJlIHdpbGwgYWNjZXB0IGRhdGEsIHlvdQorICAgICAgICBjYW4gdXNlIHRoZSA8ZnVuY3Rpb24+c25kX3Jhd21pZGlfdHJhbnNtaXQ8L2Z1bmN0aW9uPiBmdW5jdGlvbgorICAgICAgICB3aGljaCByZWFkcyBzb21lIGRhdGEgYW5kIHJlbW92ZXMgdGhlbSBmcm9tIHRoZSBidWZmZXIgYXQgb25jZToKKyAgICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHdoaWxlIChzbmRfbXljaGlwX3RyYW5zbWl0X3Bvc3NpYmxlKCkpIHsKKyAgICAgICAgICB1bnNpZ25lZCBjaGFyIGRhdGE7CisgICAgICAgICAgaWYgKHNuZF9yYXdtaWRpX3RyYW5zbWl0KHN1YnN0cmVhbSwgJmRhdGEsIDEpICE9IDEpCisgICAgICAgICAgICAgICAgICBicmVhazsgLyogbm8gbW9yZSBkYXRhICovCisgICAgICAgICAgc25kX215Y2hpcF90cmFuc21pdChkYXRhKTsKKyAgfQorXV0+CisgICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgIElmIHlvdSBrbm93IGJlZm9yZWhhbmQgaG93IG1hbnkgYnl0ZXMgeW91IGNhbiBhY2NlcHQsIHlvdSBjYW4KKyAgICAgICAgdXNlIGEgYnVmZmVyIHNpemUgZ3JlYXRlciB0aGFuIG9uZSB3aXRoIHRoZQorICAgICAgICA8ZnVuY3Rpb24+c25kX3Jhd21pZGlfdHJhbnNtaXQqPC9mdW5jdGlvbj4gZnVuY3Rpb25zLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZnVuY3Rpb24+dHJpZ2dlcjwvZnVuY3Rpb24+IGNhbGxiYWNrIG11c3Qgbm90IHNsZWVwLiAgSWYKKyAgICAgICAgdGhlIGhhcmR3YXJlIEZJRk8gaXMgZnVsbCBiZWZvcmUgdGhlIHN1YnN0cmVhbSBidWZmZXIgaGFzIGJlZW4KKyAgICAgICAgZW1wdGllZCwgeW91IGhhdmUgdG8gY29udGludWUgdHJhbnNtaXR0aW5nIGRhdGEgbGF0ZXIsIGVpdGhlcgorICAgICAgICBpbiBhbiBpbnRlcnJ1cHQgaGFuZGxlciwgb3Igd2l0aCBhIHRpbWVyIGlmIHRoZSBoYXJkd2FyZQorICAgICAgICBkb2Vzbid0IGhhdmUgYSBNSURJIHRyYW5zbWl0IGludGVycnVwdC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZ1bmN0aW9uPnRyaWdnZXI8L2Z1bmN0aW9uPiBjYWxsYmFjayBpcyBjYWxsZWQgd2l0aCBhCisgICAgICAgIHplcm8gPHBhcmFtZXRlcj51cDwvcGFyYW1ldGVyPiBwYXJhbWV0ZXIgd2hlbiB0aGUgdHJhbnNtaXNzaW9uCisgICAgICAgIG9mIGRhdGEgc2hvdWxkIGJlIGFib3J0ZWQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdGlvbj4KKworICAgICAgPHNlY3Rpb24gaWQ9InJhd21pZGktaW50ZXJmYWNlLW9wLXRyaWdnZXItaW4iPgorICAgICAgPHRpdGxlPjxmdW5jdGlvbj50cmlnZ2VyPC9mdW5jdGlvbj4gY2FsbGJhY2sgZm9yIGlucHV0CisgICAgICBzdWJzdHJlYW1zPC90aXRsZT4KKworICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdGF0aWMgdm9pZCBzbmRfeHh4X2lucHV0X3RyaWdnZXIoc3RydWN0IHNuZF9yYXdtaWRpX3N1YnN0cmVhbSAqc3Vic3RyZWFtLCBpbnQgdXApOworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgaXMgY2FsbGVkIHdpdGggYSBub256ZXJvIDxwYXJhbWV0ZXI+dXA8L3BhcmFtZXRlcj4KKyAgICAgICAgcGFyYW1ldGVyIHRvIGVuYWJsZSByZWNlaXZpbmcgZGF0YSwgb3Igd2l0aCBhIHplcm8KKyAgICAgICAgPHBhcmFtZXRlcj51cDwvcGFyYW1ldGVyPiBwYXJhbWV0ZXIgZG8gZGlzYWJsZSByZWNlaXZpbmcgZGF0YS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgPGZ1bmN0aW9uPnRyaWdnZXI8L2Z1bmN0aW9uPiBjYWxsYmFjayBtdXN0IG5vdCBzbGVlcDsgdGhlCisgICAgICAgIGFjdHVhbCByZWFkaW5nIG9mIGRhdGEgZnJvbSB0aGUgZGV2aWNlIGlzIHVzdWFsbHkgZG9uZSBpbiBhbgorICAgICAgICBpbnRlcnJ1cHQgaGFuZGxlci4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICBXaGVuIGRhdGEgcmVjZXB0aW9uIGlzIGVuYWJsZWQsIHlvdXIgaW50ZXJydXB0IGhhbmRsZXIgc2hvdWxkCisgICAgICAgIGNhbGwgPGZ1bmN0aW9uPnNuZF9yYXdtaWRpX3JlY2VpdmU8L2Z1bmN0aW9uPiBmb3IgYWxsIHJlY2VpdmVkCisgICAgICAgIGRhdGE6CisgICAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICB2b2lkIHNuZF9teWNoaXBfbWlkaV9pbnRlcnJ1cHQoLi4uKQorICB7CisgICAgICAgICAgd2hpbGUgKG15Y2hpcF9taWRpX2F2YWlsYWJsZSgpKSB7CisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGRhdGE7CisgICAgICAgICAgICAgICAgICBkYXRhID0gbXljaGlwX21pZGlfcmVhZCgpOworICAgICAgICAgICAgICAgICAgc25kX3Jhd21pZGlfcmVjZWl2ZShzdWJzdHJlYW0sICZkYXRhLCAxKTsKKyAgICAgICAgICB9CisgIH0KK11dPgorICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9zZWN0aW9uPgorCisgICAgICA8c2VjdGlvbiBpZD0icmF3bWlkaS1pbnRlcmZhY2Utb3AtZHJhaW4iPgorICAgICAgPHRpdGxlPjxmdW5jdGlvbj5kcmFpbjwvZnVuY3Rpb24+IGNhbGxiYWNrPC90aXRsZT4KKworICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdGF0aWMgdm9pZCBzbmRfeHh4X2RyYWluKHN0cnVjdCBzbmRfcmF3bWlkaV9zdWJzdHJlYW0gKnN1YnN0cmVhbSk7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBpcyBvbmx5IHVzZWQgd2l0aCBvdXRwdXQgc3Vic3RyZWFtcy4gIFRoaXMgZnVuY3Rpb24gc2hvdWxkIHdhaXQKKyAgICAgICAgdW50aWwgYWxsIGRhdGEgcmVhZCBmcm9tIHRoZSBzdWJzdHJlYW0gYnVmZmVyIGhhdmUgYmVlbiB0cmFuc21pdHRlZC4KKyAgICAgICAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGRldmljZSBjYW4gYmUgY2xvc2VkIGFuZCB0aGUgZHJpdmVyIHVubG9hZGVkCisgICAgICAgIHdpdGhvdXQgbG9zaW5nIGRhdGEuCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbC4gSWYgeW91IGRvIG5vdCBzZXQKKyAgICAgICAgPHN0cnVjdGZpZWxkPmRyYWluPC9zdHJ1Y3RmaWVsZD4gaW4gdGhlIHN0cnVjdCBzbmRfcmF3bWlkaV9vcHMKKyAgICAgICAgc3RydWN0dXJlLCBBTFNBIHdpbGwgc2ltcGx5IHdhaXQgZm9yIDUwJm5ic3A7bWlsbGlzZWNvbmRzCisgICAgICAgIGluc3RlYWQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvc2VjdGlvbj4KKyAgICA8L3NlY3Rpb24+CisKKyAgPC9jaGFwdGVyPgorCisKKzwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgorPCEtLSBNaXNjZWxsYW5lb3VzIERldmljZXMgIC0tPgorPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+CisgIDxjaGFwdGVyIGlkPSJtaXNjLWRldmljZXMiPgorICAgIDx0aXRsZT5NaXNjZWxsYW5lb3VzIERldmljZXM8L3RpdGxlPgorCisgICAgPHNlY3Rpb24gaWQ9Im1pc2MtZGV2aWNlcy1vcGwzIj4KKyAgICAgIDx0aXRsZT5GTSBPUEwzPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgRk0gT1BMMyBpcyBzdGlsbCB1c2VkIGluIG1hbnkgY2hpcHMgKG1haW5seSBmb3IgYmFja3dhcmQKKyAgICAgIGNvbXBhdGliaWxpdHkpLiBBTFNBIGhhcyBhIG5pY2UgT1BMMyBGTSBjb250cm9sIGxheWVyLCB0b28uIFRoZQorICAgICAgT1BMMyBBUEkgaXMgZGVmaW5lZCBpbgorICAgICAgPGZpbGVuYW1lPiZsdDtzb3VuZC9vcGwzLmgmZ3Q7PC9maWxlbmFtZT4uIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgRk0gcmVnaXN0ZXJzIGNhbiBiZSBkaXJlY3RseSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBkaXJlY3QtRk0gQVBJLAorICAgICAgZGVmaW5lZCBpbiA8ZmlsZW5hbWU+Jmx0O3NvdW5kL2Fzb3VuZF9mbS5oJmd0OzwvZmlsZW5hbWU+LiBJbgorICAgICAgQUxTQSBuYXRpdmUgbW9kZSwgRk0gcmVnaXN0ZXJzIGFyZSBhY2Nlc3NlZCB0aHJvdWdoCisgICAgICB0aGUgSGFyZHdhcmUtRGVwZW5kZW50IERldmljZSBkaXJlY3QtRk0gZXh0ZW5zaW9uIEFQSSwgd2hlcmVhcyBpbgorICAgICAgT1NTIGNvbXBhdGlibGUgbW9kZSwgRk0gcmVnaXN0ZXJzIGNhbiBiZSBhY2Nlc3NlZCB3aXRoIHRoZSBPU1MKKyAgICAgIGRpcmVjdC1GTSBjb21wYXRpYmxlIEFQSSBpbiA8ZmlsZW5hbWU+L2Rldi9kbWZtWDwvZmlsZW5hbWU+IGRldmljZS4gCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBUbyBjcmVhdGUgdGhlIE9QTDMgY29tcG9uZW50LCB5b3UgaGF2ZSB0d28gZnVuY3Rpb25zIHRvCisgICAgICAgIGNhbGwuIFRoZSBmaXJzdCBvbmUgaXMgYSBjb25zdHJ1Y3RvciBmb3IgdGhlIDx0eXBlPm9wbDNfdDwvdHlwZT4KKyAgICAgICAgaW5zdGFuY2UuIAorCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0cnVjdCBzbmRfb3BsMyAqb3BsMzsKKyAgc25kX29wbDNfY3JlYXRlKGNhcmQsIGxwb3J0LCBycG9ydCwgT1BMM19IV19PUEwzX1hYWCwKKyAgICAgICAgICAgICAgICAgIGludGVncmF0ZWQsICZvcGwzKTsKK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBjYXJkIHBvaW50ZXIsIHRoZSBzZWNvbmQgb25lIGlzIHRoZQorICAgICAgbGVmdCBwb3J0IGFkZHJlc3MsIGFuZCB0aGUgdGhpcmQgaXMgdGhlIHJpZ2h0IHBvcnQgYWRkcmVzcy4gSW4KKyAgICAgIG1vc3QgY2FzZXMsIHRoZSByaWdodCBwb3J0IGlzIHBsYWNlZCBhdCB0aGUgbGVmdCBwb3J0ICsgMi4gCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgZm91cnRoIGFyZ3VtZW50IGlzIHRoZSBoYXJkd2FyZSB0eXBlLgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgV2hlbiB0aGUgbGVmdCBhbmQgcmlnaHQgcG9ydHMgaGF2ZSBiZWVuIGFscmVhZHkgYWxsb2NhdGVkIGJ5CisgICAgICB0aGUgY2FyZCBkcml2ZXIsIHBhc3Mgbm9uLXplcm8gdG8gdGhlIGZpZnRoIGFyZ3VtZW50CisgICAgICAoPHBhcmFtZXRlcj5pbnRlZ3JhdGVkPC9wYXJhbWV0ZXI+KS4gT3RoZXJ3aXNlLCB0aGUgb3BsMyBtb2R1bGUgd2lsbAorICAgICAgYWxsb2NhdGUgdGhlIHNwZWNpZmllZCBwb3J0cyBieSBpdHNlbGYuIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgV2hlbiB0aGUgYWNjZXNzaW5nIHRoZSBoYXJkd2FyZSByZXF1aXJlcyBzcGVjaWFsIG1ldGhvZAorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBzdGFuZGFyZCBJL08gYWNjZXNzLCB5b3UgY2FuIGNyZWF0ZSBvcGwzIGluc3RhbmNlCisgICAgICAgIHNlcGFyYXRlbHkgd2l0aCA8ZnVuY3Rpb24+c25kX29wbDNfbmV3KCk8L2Z1bmN0aW9uPi4KKworICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdHJ1Y3Qgc25kX29wbDMgKm9wbDM7CisgIHNuZF9vcGwzX25ldyhjYXJkLCBPUEwzX0hXX09QTDNfWFhYLCAmb3BsMyk7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisJVGhlbiBzZXQgPHN0cnVjdGZpZWxkPmNvbW1hbmQ8L3N0cnVjdGZpZWxkPiwKKwk8c3RydWN0ZmllbGQ+cHJpdmF0ZV9kYXRhPC9zdHJ1Y3RmaWVsZD4gYW5kCisJPHN0cnVjdGZpZWxkPnByaXZhdGVfZnJlZTwvc3RydWN0ZmllbGQ+IGZvciB0aGUgcHJpdmF0ZQorCWFjY2VzcyBmdW5jdGlvbiwgdGhlIHByaXZhdGUgZGF0YSBhbmQgdGhlIGRlc3RydWN0b3IuCisJVGhlIGxfcG9ydCBhbmQgcl9wb3J0IGFyZSBub3QgbmVjZXNzYXJpbHkgc2V0LiAgT25seSB0aGUKKwljb21tYW5kIG11c3QgYmUgc2V0IHByb3Blcmx5LiAgWW91IGNhbiByZXRyaWV2ZSB0aGUgZGF0YQorCWZyb20gdGhlIG9wbDMtJmd0O3ByaXZhdGVfZGF0YSBmaWVsZC4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisJQWZ0ZXIgY3JlYXRpbmcgdGhlIG9wbDMgaW5zdGFuY2UgdmlhIDxmdW5jdGlvbj5zbmRfb3BsM19uZXcoKTwvZnVuY3Rpb24+LAorCWNhbGwgPGZ1bmN0aW9uPnNuZF9vcGwzX2luaXQoKTwvZnVuY3Rpb24+IHRvIGluaXRpYWxpemUgdGhlIGNoaXAgdG8gdGhlCisJcHJvcGVyIHN0YXRlLiBOb3RlIHRoYXQgPGZ1bmN0aW9uPnNuZF9vcGwzX2NyZWF0ZSgpPC9mdW5jdGlvbj4gYWx3YXlzCisJY2FsbHMgaXQgaW50ZXJuYWxseS4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIElmIHRoZSBvcGwzIGluc3RhbmNlIGlzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LCB0aGVuIGNyZWF0ZSBhCisgICAgICAgIGh3ZGVwIGRldmljZSBmb3IgdGhpcyBvcGwzLiAKKworICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdHJ1Y3Qgc25kX2h3ZGVwICpvcGwzaHdkZXA7CisgIHNuZF9vcGwzX2h3ZGVwX25ldyhvcGwzLCAwLCAxLCAmb3BsM2h3ZGVwKTsKK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSA8dHlwZT5vcGwzX3Q8L3R5cGU+IGluc3RhbmNlIHlvdQorICAgICAgY3JlYXRlZCwgYW5kIHRoZSBzZWNvbmQgaXMgdGhlIGluZGV4IG51bWJlciwgdXN1YWxseSAwLiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSB0aGlyZCBhcmd1bWVudCBpcyB0aGUgaW5kZXgtb2Zmc2V0IGZvciB0aGUgc2VxdWVuY2VyCisgICAgICBjbGllbnQgYXNzaWduZWQgdG8gdGhlIE9QTDMgcG9ydC4gV2hlbiB0aGVyZSBpcyBhbiBNUFU0MDEtVUFSVCwKKyAgICAgIGdpdmUgMSBmb3IgaGVyZSAoVUFSVCBhbHdheXMgdGFrZXMgMCkuIAorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSJtaXNjLWRldmljZXMtaGFyZHdhcmUtZGVwZW5kZW50Ij4KKyAgICAgIDx0aXRsZT5IYXJkd2FyZS1EZXBlbmRlbnQgRGV2aWNlczwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgU29tZSBjaGlwcyBuZWVkIHVzZXItc3BhY2UgYWNjZXNzIGZvciBzcGVjaWFsCisgICAgICBjb250cm9scyBvciBmb3IgbG9hZGluZyB0aGUgbWljcm8gY29kZS4gSW4gc3VjaCBhIGNhc2UsIHlvdSBjYW4KKyAgICAgIGNyZWF0ZSBhIGh3ZGVwIChoYXJkd2FyZS1kZXBlbmRlbnQpIGRldmljZS4gVGhlIGh3ZGVwIEFQSSBpcworICAgICAgZGVmaW5lZCBpbiA8ZmlsZW5hbWU+Jmx0O3NvdW5kL2h3ZGVwLmgmZ3Q7PC9maWxlbmFtZT4uIFlvdSBjYW4KKyAgICAgIGZpbmQgZXhhbXBsZXMgaW4gb3BsMyBkcml2ZXIgb3IKKyAgICAgIDxmaWxlbmFtZT5pc2Evc2Ivc2IxNl9jc3AuYzwvZmlsZW5hbWU+LiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBjcmVhdGlvbiBvZiB0aGUgPHR5cGU+aHdkZXA8L3R5cGU+IGluc3RhbmNlIGlzIGRvbmUgdmlhCisgICAgICAgIDxmdW5jdGlvbj5zbmRfaHdkZXBfbmV3KCk8L2Z1bmN0aW9uPi4gCisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RydWN0IHNuZF9od2RlcCAqaHc7CisgIHNuZF9od2RlcF9uZXcoY2FyZCwgIk15IEhXREVQIiwgMCwgJmh3KTsKK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCisgICAgICAgIHdoZXJlIHRoZSB0aGlyZCBhcmd1bWVudCBpcyB0aGUgaW5kZXggbnVtYmVyLgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgWW91IGNhbiB0aGVuIHBhc3MgYW55IHBvaW50ZXIgdmFsdWUgdG8gdGhlCisgICAgICAgIDxwYXJhbWV0ZXI+cHJpdmF0ZV9kYXRhPC9wYXJhbWV0ZXI+LgorICAgICAgICBJZiB5b3UgYXNzaWduIGEgcHJpdmF0ZSBkYXRhLCB5b3Ugc2hvdWxkIGRlZmluZSB0aGUKKyAgICAgICAgZGVzdHJ1Y3RvciwgdG9vLiBUaGUgZGVzdHJ1Y3RvciBmdW5jdGlvbiBpcyBzZXQgaW4KKyAgICAgICAgdGhlIDxzdHJ1Y3RmaWVsZD5wcml2YXRlX2ZyZWU8L3N0cnVjdGZpZWxkPiBmaWVsZC4gIAorCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0cnVjdCBteWRhdGEgKnAgPSBrbWFsbG9jKHNpemVvZigqcCksIEdGUF9LRVJORUwpOworICBody0+cHJpdmF0ZV9kYXRhID0gcDsKKyAgaHctPnByaXZhdGVfZnJlZSA9IG15ZGF0YV9mcmVlOworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisKKyAgICAgICAgYW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGVzdHJ1Y3RvciB3b3VsZCBiZToKKworICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdGF0aWMgdm9pZCBteWRhdGFfZnJlZShzdHJ1Y3Qgc25kX2h3ZGVwICpodykKKyAgeworICAgICAgICAgIHN0cnVjdCBteWRhdGEgKnAgPSBody0+cHJpdmF0ZV9kYXRhOworICAgICAgICAgIGtmcmVlKHApOworICB9CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBhcmJpdHJhcnkgZmlsZSBvcGVyYXRpb25zIGNhbiBiZSBkZWZpbmVkIGZvciB0aGlzCisgICAgICAgIGluc3RhbmNlLiBUaGUgZmlsZSBvcGVyYXRvcnMgYXJlIGRlZmluZWQgaW4KKyAgICAgICAgdGhlIDxwYXJhbWV0ZXI+b3BzPC9wYXJhbWV0ZXI+IHRhYmxlLiBGb3IgZXhhbXBsZSwgYXNzdW1lIHRoYXQKKyAgICAgICAgdGhpcyBjaGlwIG5lZWRzIGFuIGlvY3RsLiAKKworICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBody0+b3BzLm9wZW4gPSBteWRhdGFfb3BlbjsKKyAgaHctPm9wcy5pb2N0bCA9IG15ZGF0YV9pb2N0bDsKKyAgaHctPm9wcy5yZWxlYXNlID0gbXlkYXRhX3JlbGVhc2U7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworICAgICAgICBBbmQgaW1wbGVtZW50IHRoZSBjYWxsYmFjayBmdW5jdGlvbnMgYXMgeW91IGxpa2UuCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9Im1pc2MtZGV2aWNlcy1JRUM5NTgiPgorICAgICAgPHRpdGxlPklFQzk1OCAoUy9QRElGKTwvdGl0bGU+CisgICAgICA8cGFyYT4KKyAgICAgICAgVXN1YWxseSB0aGUgY29udHJvbHMgZm9yIElFQzk1OCBkZXZpY2VzIGFyZSBpbXBsZW1lbnRlZCB2aWEKKyAgICAgIHRoZSBjb250cm9sIGludGVyZmFjZS4gVGhlcmUgaXMgYSBtYWNybyB0byBjb21wb3NlIGEgbmFtZSBzdHJpbmcgZm9yCisgICAgICBJRUM5NTggY29udHJvbHMsIDxmdW5jdGlvbj5TTkRSVl9DVExfTkFNRV9JRUM5NTgoKTwvZnVuY3Rpb24+CisgICAgICBkZWZpbmVkIGluIDxmaWxlbmFtZT4mbHQ7aW5jbHVkZS9hc291bmQuaCZndDs8L2ZpbGVuYW1lPi4gIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlcmUgYXJlIHNvbWUgc3RhbmRhcmQgY29udHJvbHMgZm9yIElFQzk1OCBzdGF0dXMgYml0cy4gVGhlc2UKKyAgICAgIGNvbnRyb2xzIHVzZSB0aGUgdHlwZSA8dHlwZT5TTkRSVl9DVExfRUxFTV9UWVBFX0lFQzk1ODwvdHlwZT4sCisgICAgICBhbmQgdGhlIHNpemUgb2YgZWxlbWVudCBpcyBmaXhlZCBhcyA0IGJ5dGVzIGFycmF5CisgICAgICAodmFsdWUuaWVjOTU4LnN0YXR1c1t4XSkuIEZvciB0aGUgPHN0cnVjdGZpZWxkPmluZm88L3N0cnVjdGZpZWxkPgorICAgICAgY2FsbGJhY2ssIHlvdSBkb24ndCBzcGVjaWZ5IAorICAgICAgdGhlIHZhbHVlIGZpZWxkIGZvciB0aGlzIHR5cGUgKHRoZSBjb3VudCBmaWVsZCBtdXN0IGJlIHNldCwKKyAgICAgIHRob3VnaCkuIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgPHF1b3RlPklFQzk1OCBQbGF5YmFjayBDb24gTWFzazwvcXVvdGU+IGlzIHVzZWQgdG8gcmV0dXJuIHRoZQorICAgICAgYml0LW1hc2sgZm9yIHRoZSBJRUM5NTggc3RhdHVzIGJpdHMgb2YgY29uc3VtZXIgbW9kZS4gU2ltaWxhcmx5LAorICAgICAgPHF1b3RlPklFQzk1OCBQbGF5YmFjayBQcm8gTWFzazwvcXVvdGU+IHJldHVybnMgdGhlIGJpdG1hc2sgZm9yCisgICAgICBwcm9mZXNzaW9uYWwgbW9kZS4gVGhleSBhcmUgcmVhZC1vbmx5IGNvbnRyb2xzLCBhbmQgYXJlIGRlZmluZWQKKyAgICAgIGFzIE1JWEVSIGNvbnRyb2xzIChpZmFjZSA9CisgICAgICA8Y29uc3RhbnQ+U05EUlZfQ1RMX0VMRU1fSUZBQ0VfTUlYRVI8L2NvbnN0YW50PikuICAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIE1lYW53aGlsZSwgPHF1b3RlPklFQzk1OCBQbGF5YmFjayBEZWZhdWx0PC9xdW90ZT4gY29udHJvbCBpcworICAgICAgZGVmaW5lZCBmb3IgZ2V0dGluZyBhbmQgc2V0dGluZyB0aGUgY3VycmVudCBkZWZhdWx0IElFQzk1OAorICAgICAgYml0cy4gTm90ZSB0aGF0IHRoaXMgb25lIGlzIHVzdWFsbHkgZGVmaW5lZCBhcyBhIFBDTSBjb250cm9sCisgICAgICAoaWZhY2UgPSA8Y29uc3RhbnQ+U05EUlZfQ1RMX0VMRU1fSUZBQ0VfUENNPC9jb25zdGFudD4pLAorICAgICAgYWx0aG91Z2ggaW4gc29tZSBwbGFjZXMgaXQncyBkZWZpbmVkIGFzIGEgTUlYRVIgY29udHJvbC4gCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBJbiBhZGRpdGlvbiwgeW91IGNhbiBkZWZpbmUgdGhlIGNvbnRyb2wgc3dpdGNoZXMgdG8KKyAgICAgIGVuYWJsZS9kaXNhYmxlIG9yIHRvIHNldCB0aGUgcmF3IGJpdCBtb2RlLiBUaGUgaW1wbGVtZW50YXRpb24KKyAgICAgIHdpbGwgZGVwZW5kIG9uIHRoZSBjaGlwLCBidXQgdGhlIGNvbnRyb2wgc2hvdWxkIGJlIG5hbWVkIGFzCisgICAgICA8cXVvdGU+SUVDOTU4IHh4eDwvcXVvdGU+LCBwcmVmZXJhYmx5IHVzaW5nCisgICAgICB0aGUgPGZ1bmN0aW9uPlNORFJWX0NUTF9OQU1FX0lFQzk1OCgpPC9mdW5jdGlvbj4gbWFjcm8uIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgWW91IGNhbiBmaW5kIHNldmVyYWwgY2FzZXMsIGZvciBleGFtcGxlLAorICAgICAgPGZpbGVuYW1lPnBjaS9lbXUxMGsxPC9maWxlbmFtZT4sCisgICAgICA8ZmlsZW5hbWU+cGNpL2ljZTE3MTI8L2ZpbGVuYW1lPiwgb3IKKyAgICAgIDxmaWxlbmFtZT5wY2kvY21pcGNpLmM8L2ZpbGVuYW1lPi4gIAorICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICA8L2NoYXB0ZXI+CisKKworPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+Cis8IS0tIEJ1ZmZlciBhbmQgTWVtb3J5IE1hbmFnZW1lbnQgIC0tPgorPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+CisgIDxjaGFwdGVyIGlkPSJidWZmZXItYW5kLW1lbW9yeSI+CisgICAgPHRpdGxlPkJ1ZmZlciBhbmQgTWVtb3J5IE1hbmFnZW1lbnQ8L3RpdGxlPgorCisgICAgPHNlY3Rpb24gaWQ9ImJ1ZmZlci1hbmQtbWVtb3J5LWJ1ZmZlci10eXBlcyI+CisgICAgICA8dGl0bGU+QnVmZmVyIFR5cGVzPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBBTFNBIHByb3ZpZGVzIHNldmVyYWwgZGlmZmVyZW50IGJ1ZmZlciBhbGxvY2F0aW9uIGZ1bmN0aW9ucworICAgICAgZGVwZW5kaW5nIG9uIHRoZSBidXMgYW5kIHRoZSBhcmNoaXRlY3R1cmUuIEFsbCB0aGVzZSBoYXZlIGEKKyAgICAgIGNvbnNpc3RlbnQgQVBJLiBUaGUgYWxsb2NhdGlvbiBvZiBwaHlzaWNhbGx5LWNvbnRpZ3VvdXMgcGFnZXMgaXMKKyAgICAgIGRvbmUgdmlhIAorICAgICAgPGZ1bmN0aW9uPnNuZF9tYWxsb2NfeHh4X3BhZ2VzKCk8L2Z1bmN0aW9uPiBmdW5jdGlvbiwgd2hlcmUgeHh4CisgICAgICBpcyB0aGUgYnVzIHR5cGUuIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGFsbG9jYXRpb24gb2YgcGFnZXMgd2l0aCBmYWxsYmFjayBpcworICAgICAgPGZ1bmN0aW9uPnNuZF9tYWxsb2NfeHh4X3BhZ2VzX2ZhbGxiYWNrKCk8L2Z1bmN0aW9uPi4gVGhpcworICAgICAgZnVuY3Rpb24gdHJpZXMgdG8gYWxsb2NhdGUgdGhlIHNwZWNpZmllZCBwYWdlcyBidXQgaWYgdGhlIHBhZ2VzCisgICAgICBhcmUgbm90IGF2YWlsYWJsZSwgaXQgdHJpZXMgdG8gcmVkdWNlIHRoZSBwYWdlIHNpemVzIHVudGlsCisgICAgICBlbm91Z2ggc3BhY2UgaXMgZm91bmQuCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgVGhlIHJlbGVhc2UgdGhlIHBhZ2VzLCBjYWxsCisgICAgICA8ZnVuY3Rpb24+c25kX2ZyZWVfeHh4X3BhZ2VzKCk8L2Z1bmN0aW9uPiBmdW5jdGlvbi4gCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgVXN1YWxseSwgQUxTQSBkcml2ZXJzIHRyeSB0byBhbGxvY2F0ZSBhbmQgcmVzZXJ2ZQorICAgICAgIGEgbGFyZ2UgY29udGlndW91cyBwaHlzaWNhbCBzcGFjZQorICAgICAgIGF0IHRoZSB0aW1lIHRoZSBtb2R1bGUgaXMgbG9hZGVkIGZvciB0aGUgbGF0ZXIgdXNlLgorICAgICAgIFRoaXMgaXMgY2FsbGVkIDxxdW90ZT5wcmUtYWxsb2NhdGlvbjwvcXVvdGU+LgorICAgICAgIEFzIGFscmVhZHkgd3JpdHRlbiwgeW91IGNhbiBjYWxsIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gYXQgCisgICAgICAgcGNtIGluc3RhbmNlIGNvbnN0cnVjdGlvbiB0aW1lIChpbiB0aGUgY2FzZSBvZiBQQ0kgYnVzKS4gCisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc25kX3BjbV9saWJfcHJlYWxsb2NhdGVfcGFnZXNfZm9yX2FsbChwY20sIFNORFJWX0RNQV9UWVBFX0RFViwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmRfZG1hX3BjaV9kYXRhKHBjaSksIHNpemUsIG1heCk7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworICAgICAgICB3aGVyZSA8cGFyYW1ldGVyPnNpemU8L3BhcmFtZXRlcj4gaXMgdGhlIGJ5dGUgc2l6ZSB0byBiZQorICAgICAgcHJlLWFsbG9jYXRlZCBhbmQgdGhlIDxwYXJhbWV0ZXI+bWF4PC9wYXJhbWV0ZXI+IGlzIHRoZSBtYXhpbXVtCisgICAgICBzaXplIHRvIGJlIGNoYW5nZWQgdmlhIHRoZSA8ZmlsZW5hbWU+cHJlYWxsb2M8L2ZpbGVuYW1lPiBwcm9jIGZpbGUuCisgICAgICBUaGUgYWxsb2NhdG9yIHdpbGwgdHJ5IHRvIGdldCBhbiBhcmVhIGFzIGxhcmdlIGFzIHBvc3NpYmxlCisgICAgICB3aXRoaW4gdGhlIGdpdmVuIHNpemUuIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgIFRoZSBzZWNvbmQgYXJndW1lbnQgKHR5cGUpIGFuZCB0aGUgdGhpcmQgYXJndW1lbnQgKGRldmljZSBwb2ludGVyKQorICAgICAgYXJlIGRlcGVuZGVudCBvbiB0aGUgYnVzLgorICAgICAgSW4gdGhlIGNhc2Ugb2YgdGhlIElTQSBidXMsIHBhc3MgPGZ1bmN0aW9uPnNuZF9kbWFfaXNhX2RhdGEoKTwvZnVuY3Rpb24+CisgICAgICBhcyB0aGUgdGhpcmQgYXJndW1lbnQgd2l0aCA8Y29uc3RhbnQ+U05EUlZfRE1BX1RZUEVfREVWPC9jb25zdGFudD4gdHlwZS4KKyAgICAgIEZvciB0aGUgY29udGludW91cyBidWZmZXIgdW5yZWxhdGVkIHRvIHRoZSBidXMgY2FuIGJlIHByZS1hbGxvY2F0ZWQKKyAgICAgIHdpdGggPGNvbnN0YW50PlNORFJWX0RNQV9UWVBFX0NPTlRJTlVPVVM8L2NvbnN0YW50PiB0eXBlIGFuZCB0aGUKKyAgICAgIDxmdW5jdGlvbj5zbmRfZG1hX2NvbnRpbnVvdXNfZGF0YShHRlBfS0VSTkVMKTwvZnVuY3Rpb24+IGRldmljZSBwb2ludGVyLAorICAgICAgd2hlcmUgPGNvbnN0YW50PkdGUF9LRVJORUw8L2NvbnN0YW50PiBpcyB0aGUga2VybmVsIGFsbG9jYXRpb24gZmxhZyB0bworICAgICAgdXNlLgorICAgICAgRm9yIHRoZSBQQ0kgc2NhdHRlci1nYXRoZXIgYnVmZmVycywgdXNlCisgICAgICA8Y29uc3RhbnQ+U05EUlZfRE1BX1RZUEVfREVWX1NHPC9jb25zdGFudD4gd2l0aAorICAgICAgPGZ1bmN0aW9uPnNuZF9kbWFfcGNpX2RhdGEocGNpKTwvZnVuY3Rpb24+CisgICAgICAoc2VlIHRoZSAKKyAgICAgICAgICA8bGluayBsaW5rZW5kPSJidWZmZXItYW5kLW1lbW9yeS1ub24tY29udGlndW91cyI+PGNpdGV0aXRsZT5Ob24tQ29udGlndW91cyBCdWZmZXJzCisgICAgICAgICAgPC9jaXRldGl0bGU+PC9saW5rPiBzZWN0aW9uKS4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIE9uY2UgdGhlIGJ1ZmZlciBpcyBwcmUtYWxsb2NhdGVkLCB5b3UgY2FuIHVzZSB0aGUKKyAgICAgICAgYWxsb2NhdG9yIGluIHRoZSA8c3RydWN0ZmllbGQ+aHdfcGFyYW1zPC9zdHJ1Y3RmaWVsZD4gY2FsbGJhY2s6IAorCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHNuZF9wY21fbGliX21hbGxvY19wYWdlcyhzdWJzdHJlYW0sIHNpemUpOworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisKKyAgICAgICAgTm90ZSB0aGF0IHlvdSBoYXZlIHRvIHByZS1hbGxvY2F0ZSB0byB1c2UgdGhpcyBmdW5jdGlvbi4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iYnVmZmVyLWFuZC1tZW1vcnktZXh0ZXJuYWwtaGFyZHdhcmUiPgorICAgICAgPHRpdGxlPkV4dGVybmFsIEhhcmR3YXJlIEJ1ZmZlcnM8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIFNvbWUgY2hpcHMgaGF2ZSB0aGVpciBvd24gaGFyZHdhcmUgYnVmZmVycyBhbmQgdGhlIERNQQorICAgICAgdHJhbnNmZXIgZnJvbSB0aGUgaG9zdCBtZW1vcnkgaXMgbm90IGF2YWlsYWJsZS4gSW4gc3VjaCBhIGNhc2UsCisgICAgICB5b3UgbmVlZCB0byBlaXRoZXIgMSkgY29weS9zZXQgdGhlIGF1ZGlvIGRhdGEgZGlyZWN0bHkgdG8gdGhlCisgICAgICBleHRlcm5hbCBoYXJkd2FyZSBidWZmZXIsIG9yIDIpIG1ha2UgYW4gaW50ZXJtZWRpYXRlIGJ1ZmZlciBhbmQKKyAgICAgIGNvcHkvc2V0IHRoZSBkYXRhIGZyb20gaXQgdG8gdGhlIGV4dGVybmFsIGhhcmR3YXJlIGJ1ZmZlciBpbgorICAgICAgaW50ZXJydXB0cyAob3IgaW4gdGFza2xldHMsIHByZWZlcmFibHkpLgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGZpcnN0IGNhc2Ugd29ya3MgZmluZSBpZiB0aGUgZXh0ZXJuYWwgaGFyZHdhcmUgYnVmZmVyIGlzIGxhcmdlCisgICAgICBlbm91Z2guICBUaGlzIG1ldGhvZCBkb2Vzbid0IG5lZWQgYW55IGV4dHJhIGJ1ZmZlcnMgYW5kIHRodXMgaXMKKyAgICAgIG1vcmUgZWZmZWN0aXZlLiBZb3UgbmVlZCB0byBkZWZpbmUgdGhlCisgICAgICA8c3RydWN0ZmllbGQ+Y29weTwvc3RydWN0ZmllbGQ+IGFuZAorICAgICAgPHN0cnVjdGZpZWxkPnNpbGVuY2U8L3N0cnVjdGZpZWxkPiBjYWxsYmFja3MgZm9yIAorICAgICAgdGhlIGRhdGEgdHJhbnNmZXIuIEhvd2V2ZXIsIHRoZXJlIGlzIGEgZHJhd2JhY2s6IGl0IGNhbm5vdAorICAgICAgYmUgbW1hcHBlZC4gVGhlIGV4YW1wbGVzIGFyZSBHVVMncyBHRjEgUENNIG9yIGVtdTgwMDAncworICAgICAgd2F2ZXRhYmxlIFBDTS4gCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgc2Vjb25kIGNhc2UgYWxsb3dzIGZvciBtbWFwIG9uIHRoZSBidWZmZXIsIGFsdGhvdWdoIHlvdSBoYXZlCisgICAgICB0byBoYW5kbGUgYW4gaW50ZXJydXB0IG9yIGEgdGFza2xldCB0byB0cmFuc2ZlciB0aGUgZGF0YQorICAgICAgZnJvbSB0aGUgaW50ZXJtZWRpYXRlIGJ1ZmZlciB0byB0aGUgaGFyZHdhcmUgYnVmZmVyLiBZb3UgY2FuIGZpbmQgYW4KKyAgICAgIGV4YW1wbGUgaW4gdGhlIHZ4cG9ja2V0IGRyaXZlci4gCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBBbm90aGVyIGNhc2UgaXMgd2hlbiB0aGUgY2hpcCB1c2VzIGEgUENJIG1lbW9yeS1tYXAKKyAgICAgIHJlZ2lvbiBmb3IgdGhlIGJ1ZmZlciBpbnN0ZWFkIG9mIHRoZSBob3N0IG1lbW9yeS4gSW4gdGhpcyBjYXNlLAorICAgICAgbW1hcCBpcyBhdmFpbGFibGUgb25seSBvbiBjZXJ0YWluIGFyY2hpdGVjdHVyZXMgbGlrZSB0aGUgSW50ZWwgb25lLgorICAgICAgSW4gbm9uLW1tYXAgbW9kZSwgdGhlIGRhdGEgY2Fubm90IGJlIHRyYW5zZmVycmVkIGFzIGluIHRoZSBub3JtYWwKKyAgICAgIHdheS4gVGh1cyB5b3UgbmVlZCB0byBkZWZpbmUgdGhlIDxzdHJ1Y3RmaWVsZD5jb3B5PC9zdHJ1Y3RmaWVsZD4gYW5kCisgICAgICA8c3RydWN0ZmllbGQ+c2lsZW5jZTwvc3RydWN0ZmllbGQ+IGNhbGxiYWNrcyBhcyB3ZWxsLCAKKyAgICAgIGFzIGluIHRoZSBjYXNlcyBhYm92ZS4gVGhlIGV4YW1wbGVzIGFyZSBmb3VuZCBpbgorICAgICAgPGZpbGVuYW1lPnJtZTMyLmM8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPnJtZTk2LmM8L2ZpbGVuYW1lPi4gCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIDxzdHJ1Y3RmaWVsZD5jb3B5PC9zdHJ1Y3RmaWVsZD4gYW5kCisgICAgICAgIDxzdHJ1Y3RmaWVsZD5zaWxlbmNlPC9zdHJ1Y3RmaWVsZD4gY2FsbGJhY2tzIGRlcGVuZHMgdXBvbiAKKyAgICAgICAgd2hldGhlciB0aGUgaGFyZHdhcmUgc3VwcG9ydHMgaW50ZXJsZWF2ZWQgb3Igbm9uLWludGVybGVhdmVkCisgICAgICAgIHNhbXBsZXMuIFRoZSA8c3RydWN0ZmllbGQ+Y29weTwvc3RydWN0ZmllbGQ+IGNhbGxiYWNrIGlzCisgICAgICAgIGRlZmluZWQgbGlrZSBiZWxvdywgYSBiaXQgCisgICAgICAgIGRpZmZlcmVudGx5IGRlcGVuZGluZyB3aGV0aGVyIHRoZSBkaXJlY3Rpb24gaXMgcGxheWJhY2sgb3IKKyAgICAgICAgY2FwdHVyZTogCisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RhdGljIGludCBwbGF5YmFja19jb3B5KHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLCBpbnQgY2hhbm5lbCwKKyAgICAgICAgICAgICAgIHNuZF9wY21fdWZyYW1lc190IHBvcywgdm9pZCAqc3JjLCBzbmRfcGNtX3VmcmFtZXNfdCBjb3VudCk7CisgIHN0YXRpYyBpbnQgY2FwdHVyZV9jb3B5KHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLCBpbnQgY2hhbm5lbCwKKyAgICAgICAgICAgICAgIHNuZF9wY21fdWZyYW1lc190IHBvcywgdm9pZCAqZHN0LCBzbmRfcGNtX3VmcmFtZXNfdCBjb3VudCk7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIEluIHRoZSBjYXNlIG9mIGludGVybGVhdmVkIHNhbXBsZXMsIHRoZSBzZWNvbmQgYXJndW1lbnQKKyAgICAgICg8cGFyYW1ldGVyPmNoYW5uZWw8L3BhcmFtZXRlcj4pIGlzIG5vdCB1c2VkLiBUaGUgdGhpcmQgYXJndW1lbnQKKyAgICAgICg8cGFyYW1ldGVyPnBvczwvcGFyYW1ldGVyPikgcG9pbnRzIHRoZSAKKyAgICAgIGN1cnJlbnQgcG9zaXRpb24gb2Zmc2V0IGluIGZyYW1lcy4gCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBUaGUgbWVhbmluZyBvZiB0aGUgZm91cnRoIGFyZ3VtZW50IGlzIGRpZmZlcmVudCBiZXR3ZWVuCisgICAgICBwbGF5YmFjayBhbmQgY2FwdHVyZS4gRm9yIHBsYXliYWNrLCBpdCBob2xkcyB0aGUgc291cmNlIGRhdGEKKyAgICAgIHBvaW50ZXIsIGFuZCBmb3IgY2FwdHVyZSwgaXQncyB0aGUgZGVzdGluYXRpb24gZGF0YSBwb2ludGVyLiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBsYXN0IGFyZ3VtZW50IGlzIHRoZSBudW1iZXIgb2YgZnJhbWVzIHRvIGJlIGNvcGllZC4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFdoYXQgeW91IGhhdmUgdG8gZG8gaW4gdGhpcyBjYWxsYmFjayBpcyBhZ2FpbiBkaWZmZXJlbnQKKyAgICAgICAgYmV0d2VlbiBwbGF5YmFjayBhbmQgY2FwdHVyZSBkaXJlY3Rpb25zLiBJbiB0aGUKKyAgICAgICAgcGxheWJhY2sgY2FzZSwgeW91IGNvcHkgdGhlIGdpdmVuIGFtb3VudCBvZiBkYXRhCisgICAgICAgICg8cGFyYW1ldGVyPmNvdW50PC9wYXJhbWV0ZXI+KSBhdCB0aGUgc3BlY2lmaWVkIHBvaW50ZXIKKyAgICAgICAgKDxwYXJhbWV0ZXI+c3JjPC9wYXJhbWV0ZXI+KSB0byB0aGUgc3BlY2lmaWVkIG9mZnNldAorICAgICAgICAoPHBhcmFtZXRlcj5wb3M8L3BhcmFtZXRlcj4pIG9uIHRoZSBoYXJkd2FyZSBidWZmZXIuIFdoZW4KKyAgICAgICAgY29kZWQgbGlrZSBtZW1jcHktbGlrZSB3YXksIHRoZSBjb3B5IHdvdWxkIGJlIGxpa2U6IAorCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIG15X21lbWNweShteV9idWZmZXIgKyBmcmFtZXNfdG9fYnl0ZXMocnVudGltZSwgcG9zKSwgc3JjLAorICAgICAgICAgICAgZnJhbWVzX3RvX2J5dGVzKHJ1bnRpbWUsIGNvdW50KSk7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIEZvciB0aGUgY2FwdHVyZSBkaXJlY3Rpb24sIHlvdSBjb3B5IHRoZSBnaXZlbiBhbW91bnQgb2YKKyAgICAgICAgZGF0YSAoPHBhcmFtZXRlcj5jb3VudDwvcGFyYW1ldGVyPikgYXQgdGhlIHNwZWNpZmllZCBvZmZzZXQKKyAgICAgICAgKDxwYXJhbWV0ZXI+cG9zPC9wYXJhbWV0ZXI+KSBvbiB0aGUgaGFyZHdhcmUgYnVmZmVyIHRvIHRoZQorICAgICAgICBzcGVjaWZpZWQgcG9pbnRlciAoPHBhcmFtZXRlcj5kc3Q8L3BhcmFtZXRlcj4pLiAKKworICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBteV9tZW1jcHkoZHN0LCBteV9idWZmZXIgKyBmcmFtZXNfdG9fYnl0ZXMocnVudGltZSwgcG9zKSwKKyAgICAgICAgICAgIGZyYW1lc190b19ieXRlcyhydW50aW1lLCBjb3VudCkpOworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisKKyAgICAgICAgTm90ZSB0aGF0IGJvdGggdGhlIHBvc2l0aW9uIGFuZCB0aGUgYW1vdW50IG9mIGRhdGEgYXJlIGdpdmVuCisgICAgICBpbiBmcmFtZXMuIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgSW4gdGhlIGNhc2Ugb2Ygbm9uLWludGVybGVhdmVkIHNhbXBsZXMsIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAgd2lsbCBiZSBhIGJpdCBtb3JlIGNvbXBsaWNhdGVkLiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFlvdSBuZWVkIHRvIGNoZWNrIHRoZSBjaGFubmVsIGFyZ3VtZW50LCBhbmQgaWYgaXQncyAtMSwgY29weQorICAgICAgdGhlIHdob2xlIGNoYW5uZWxzLiBPdGhlcndpc2UsIHlvdSBoYXZlIHRvIGNvcHkgb25seSB0aGUKKyAgICAgIHNwZWNpZmllZCBjaGFubmVsLiBQbGVhc2UgY2hlY2sKKyAgICAgIDxmaWxlbmFtZT5pc2EvZ3VzL2d1c19wY20uYzwvZmlsZW5hbWU+IGFzIGFuIGV4YW1wbGUuIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxzdHJ1Y3RmaWVsZD5zaWxlbmNlPC9zdHJ1Y3RmaWVsZD4gY2FsbGJhY2sgaXMgYWxzbworICAgICAgICBpbXBsZW1lbnRlZCBpbiBhIHNpbWlsYXIgd2F5LiAKKworICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdGF0aWMgaW50IHNpbGVuY2Uoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sIGludCBjaGFubmVsLAorICAgICAgICAgICAgICAgICAgICAgc25kX3BjbV91ZnJhbWVzX3QgcG9zLCBzbmRfcGNtX3VmcmFtZXNfdCBjb3VudCk7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBtZWFuaW5ncyBvZiBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGluIHRoZQorICAgICAgPHN0cnVjdGZpZWxkPmNvcHk8L3N0cnVjdGZpZWxkPiAKKyAgICAgIGNhbGxiYWNrLCBhbHRob3VnaCB0aGVyZSBpcyBubyA8cGFyYW1ldGVyPnNyYy9kc3Q8L3BhcmFtZXRlcj4KKyAgICAgIGFyZ3VtZW50LiBJbiB0aGUgY2FzZSBvZiBpbnRlcmxlYXZlZCBzYW1wbGVzLCB0aGUgY2hhbm5lbAorICAgICAgYXJndW1lbnQgaGFzIG5vIG1lYW5pbmcsIGFzIHdlbGwgYXMgb24KKyAgICAgIDxzdHJ1Y3RmaWVsZD5jb3B5PC9zdHJ1Y3RmaWVsZD4gY2FsbGJhY2suICAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSByb2xlIG9mIDxzdHJ1Y3RmaWVsZD5zaWxlbmNlPC9zdHJ1Y3RmaWVsZD4gY2FsbGJhY2sgaXMgdG8KKyAgICAgICAgc2V0IHRoZSBnaXZlbiBhbW91bnQgCisgICAgICAgICg8cGFyYW1ldGVyPmNvdW50PC9wYXJhbWV0ZXI+KSBvZiBzaWxlbmNlIGRhdGEgYXQgdGhlCisgICAgICAgIHNwZWNpZmllZCBvZmZzZXQgKDxwYXJhbWV0ZXI+cG9zPC9wYXJhbWV0ZXI+KSBvbiB0aGUgaGFyZHdhcmUKKyAgICAgICAgYnVmZmVyLiBTdXBwb3NlIHRoYXQgdGhlIGRhdGEgZm9ybWF0IGlzIHNpZ25lZCAodGhhdCBpcywgdGhlCisgICAgICAgIHNpbGVudC1kYXRhIGlzIDApLCBhbmQgdGhlIGltcGxlbWVudGF0aW9uIHVzaW5nIGEgbWVtc2V0LWxpa2UKKyAgICAgICAgZnVuY3Rpb24gd291bGQgYmUgbGlrZTogCisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgbXlfbWVtY3B5KG15X2J1ZmZlciArIGZyYW1lc190b19ieXRlcyhydW50aW1lLCBwb3MpLCAwLAorICAgICAgICAgICAgZnJhbWVzX3RvX2J5dGVzKHJ1bnRpbWUsIGNvdW50KSk7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIEluIHRoZSBjYXNlIG9mIG5vbi1pbnRlcmxlYXZlZCBzYW1wbGVzLCBhZ2FpbiwgdGhlCisgICAgICBpbXBsZW1lbnRhdGlvbiBiZWNvbWVzIGEgYml0IG1vcmUgY29tcGxpY2F0ZWQuIFNlZSwgZm9yIGV4YW1wbGUsCisgICAgICA8ZmlsZW5hbWU+aXNhL2d1cy9ndXNfcGNtLmM8L2ZpbGVuYW1lPi4gCisgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9ImJ1ZmZlci1hbmQtbWVtb3J5LW5vbi1jb250aWd1b3VzIj4KKyAgICAgIDx0aXRsZT5Ob24tQ29udGlndW91cyBCdWZmZXJzPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBJZiB5b3VyIGhhcmR3YXJlIHN1cHBvcnRzIHRoZSBwYWdlIHRhYmxlIGFzIGluIGVtdTEwazEgb3IgdGhlCisgICAgICBidWZmZXIgZGVzY3JpcHRvcnMgYXMgaW4gdmlhODJ4eCwgeW91IGNhbiB1c2UgdGhlIHNjYXR0ZXItZ2F0aGVyCisgICAgICAoU0cpIERNQS4gQUxTQSBwcm92aWRlcyBhbiBpbnRlcmZhY2UgZm9yIGhhbmRsaW5nIFNHLWJ1ZmZlcnMuCisgICAgICBUaGUgQVBJIGlzIHByb3ZpZGVkIGluIDxmaWxlbmFtZT4mbHQ7c291bmQvcGNtLmgmZ3Q7PC9maWxlbmFtZT4uIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgRm9yIGNyZWF0aW5nIHRoZSBTRy1idWZmZXIgaGFuZGxlciwgY2FsbAorICAgICAgICA8ZnVuY3Rpb24+c25kX3BjbV9saWJfcHJlYWxsb2NhdGVfcGFnZXMoKTwvZnVuY3Rpb24+IG9yCisgICAgICAgIDxmdW5jdGlvbj5zbmRfcGNtX2xpYl9wcmVhbGxvY2F0ZV9wYWdlc19mb3JfYWxsKCk8L2Z1bmN0aW9uPgorICAgICAgICB3aXRoIDxjb25zdGFudD5TTkRSVl9ETUFfVFlQRV9ERVZfU0c8L2NvbnN0YW50PgorCWluIHRoZSBQQ00gY29uc3RydWN0b3IgbGlrZSBvdGhlciBQQ0kgcHJlLWFsbG9jYXRvci4KKyAgICAgICAgWW91IG5lZWQgdG8gcGFzcyA8ZnVuY3Rpb24+c25kX2RtYV9wY2lfZGF0YShwY2kpPC9mdW5jdGlvbj4sCisgICAgICAgIHdoZXJlIHBjaSBpcyB0aGUgc3RydWN0IDxzdHJ1Y3RuYW1lPnBjaV9kZXY8L3N0cnVjdG5hbWU+IHBvaW50ZXIKKyAgICAgICAgb2YgdGhlIGNoaXAgYXMgd2VsbC4KKyAgICAgICAgVGhlIDx0eXBlPnN0cnVjdCBzbmRfc2dfYnVmPC90eXBlPiBpbnN0YW5jZSBpcyBjcmVhdGVkIGFzCisgICAgICAgIHN1YnN0cmVhbS0mZ3Q7ZG1hX3ByaXZhdGUuIFlvdSBjYW4gY2FzdAorICAgICAgICB0aGUgcG9pbnRlciBsaWtlOiAKKworICAgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdHJ1Y3Qgc25kX3NnX2J1ZiAqc2didWYgPSAoc3RydWN0IHNuZF9zZ19idWYgKilzdWJzdHJlYW0tPmRtYV9wcml2YXRlOworXV0+CisgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgICBUaGVuIGNhbGwgPGZ1bmN0aW9uPnNuZF9wY21fbGliX21hbGxvY19wYWdlcygpPC9mdW5jdGlvbj4KKyAgICAgIGluIHRoZSA8c3RydWN0ZmllbGQ+aHdfcGFyYW1zPC9zdHJ1Y3RmaWVsZD4gY2FsbGJhY2sKKyAgICAgIGFzIHdlbGwgYXMgaW4gdGhlIGNhc2Ugb2Ygbm9ybWFsIFBDSSBidWZmZXIuCisgICAgICBUaGUgU0ctYnVmZmVyIGhhbmRsZXIgd2lsbCBhbGxvY2F0ZSB0aGUgbm9uLWNvbnRpZ3VvdXMga2VybmVsCisgICAgICBwYWdlcyBvZiB0aGUgZ2l2ZW4gc2l6ZSBhbmQgbWFwIHRoZW0gb250byB0aGUgdmlydHVhbGx5IGNvbnRpZ3VvdXMKKyAgICAgIG1lbW9yeS4gIFRoZSB2aXJ0dWFsIHBvaW50ZXIgaXMgYWRkcmVzc2VkIGluIHJ1bnRpbWUtJmd0O2RtYV9hcmVhLgorICAgICAgVGhlIHBoeXNpY2FsIGFkZHJlc3MgKHJ1bnRpbWUtJmd0O2RtYV9hZGRyKSBpcyBzZXQgdG8gemVybywKKyAgICAgIGJlY2F1c2UgdGhlIGJ1ZmZlciBpcyBwaHlzaWNhbGx5IG5vbi1jb250aWd1b3VzLgorICAgICAgVGhlIHBoeXNpY2FsIGFkZHJlc3MgdGFibGUgaXMgc2V0IHVwIGluIHNnYnVmLSZndDt0YWJsZS4KKyAgICAgIFlvdSBjYW4gZ2V0IHRoZSBwaHlzaWNhbCBhZGRyZXNzIGF0IGEgY2VydGFpbiBvZmZzZXQgdmlhCisgICAgICA8ZnVuY3Rpb24+c25kX3BjbV9zZ2J1Zl9nZXRfYWRkcigpPC9mdW5jdGlvbj4uIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgV2hlbiBhIFNHLWhhbmRsZXIgaXMgdXNlZCwgeW91IG5lZWQgdG8gc2V0CisgICAgICA8ZnVuY3Rpb24+c25kX3BjbV9zZ2J1Zl9vcHNfcGFnZTwvZnVuY3Rpb24+IGFzCisgICAgICB0aGUgPHN0cnVjdGZpZWxkPnBhZ2U8L3N0cnVjdGZpZWxkPiBjYWxsYmFjay4KKyAgICAgIChTZWUgPGxpbmsgbGlua2VuZD0icGNtLWludGVyZmFjZS1vcGVyYXRvcnMtcGFnZS1jYWxsYmFjayI+CisgICAgICA8Y2l0ZXRpdGxlPnBhZ2UgY2FsbGJhY2sgc2VjdGlvbjwvY2l0ZXRpdGxlPjwvbGluaz4uKQorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVG8gcmVsZWFzZSB0aGUgZGF0YSwgY2FsbAorICAgICAgPGZ1bmN0aW9uPnNuZF9wY21fbGliX2ZyZWVfcGFnZXMoKTwvZnVuY3Rpb24+IGluIHRoZQorICAgICAgPHN0cnVjdGZpZWxkPmh3X2ZyZWU8L3N0cnVjdGZpZWxkPiBjYWxsYmFjayBhcyB1c3VhbC4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0iYnVmZmVyLWFuZC1tZW1vcnktdm1hbGxvY2VkIj4KKyAgICAgIDx0aXRsZT5WbWFsbG9jJ2VkIEJ1ZmZlcnM8L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIEl0J3MgcG9zc2libGUgdG8gdXNlIGEgYnVmZmVyIGFsbG9jYXRlZCB2aWEKKyAgICAgIDxmdW5jdGlvbj52bWFsbG9jPC9mdW5jdGlvbj4sIGZvciBleGFtcGxlLCBmb3IgYW4gaW50ZXJtZWRpYXRlCisgICAgICBidWZmZXIuIFNpbmNlIHRoZSBhbGxvY2F0ZWQgcGFnZXMgYXJlIG5vdCBjb250aWd1b3VzLCB5b3UgbmVlZAorICAgICAgdG8gc2V0IHRoZSA8c3RydWN0ZmllbGQ+cGFnZTwvc3RydWN0ZmllbGQ+IGNhbGxiYWNrIHRvIG9idGFpbgorICAgICAgdGhlIHBoeXNpY2FsIGFkZHJlc3MgYXQgZXZlcnkgb2Zmc2V0LiAKKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiA8c3RydWN0ZmllbGQ+cGFnZTwvc3RydWN0ZmllbGQ+IGNhbGxiYWNrCisgICAgICAgIHdvdWxkIGJlIGxpa2UgdGhpczogCisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KKworICAvKiBnZXQgdGhlIHBoeXNpY2FsIHBhZ2UgcG9pbnRlciBvbiB0aGUgZ2l2ZW4gb2Zmc2V0ICovCisgIHN0YXRpYyBzdHJ1Y3QgcGFnZSAqbXljaGlwX3BhZ2Uoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQpCisgIHsKKyAgICAgICAgICB2b2lkICpwYWdlcHRyID0gc3Vic3RyZWFtLT5ydW50aW1lLT5kbWFfYXJlYSArIG9mZnNldDsKKyAgICAgICAgICByZXR1cm4gdm1hbGxvY190b19wYWdlKHBhZ2VwdHIpOworICB9CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgPC9jaGFwdGVyPgorCisKKzwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgorPCEtLSBQcm9jIEludGVyZmFjZSAgLS0+Cis8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT4KKyAgPGNoYXB0ZXIgaWQ9InByb2MtaW50ZXJmYWNlIj4KKyAgICA8dGl0bGU+UHJvYyBJbnRlcmZhY2U8L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgQUxTQSBwcm92aWRlcyBhbiBlYXN5IGludGVyZmFjZSBmb3IgcHJvY2ZzLiBUaGUgcHJvYyBmaWxlcyBhcmUKKyAgICAgIHZlcnkgdXNlZnVsIGZvciBkZWJ1Z2dpbmcuIEkgcmVjb21tZW5kIHlvdSBzZXQgdXAgcHJvYyBmaWxlcyBpZgorICAgICAgeW91IHdyaXRlIGEgZHJpdmVyIGFuZCB3YW50IHRvIGdldCBhIHJ1bm5pbmcgc3RhdHVzIG9yIHJlZ2lzdGVyCisgICAgICBkdW1wcy4gVGhlIEFQSSBpcyBmb3VuZCBpbgorICAgICAgPGZpbGVuYW1lPiZsdDtzb3VuZC9pbmZvLmgmZ3Q7PC9maWxlbmFtZT4uIAorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgVG8gY3JlYXRlIGEgcHJvYyBmaWxlLCBjYWxsCisgICAgICA8ZnVuY3Rpb24+c25kX2NhcmRfcHJvY19uZXcoKTwvZnVuY3Rpb24+LiAKKworICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0cnVjdCBzbmRfaW5mb19lbnRyeSAqZW50cnk7CisgIGludCBlcnIgPSBzbmRfY2FyZF9wcm9jX25ldyhjYXJkLCAibXktZmlsZSIsICZlbnRyeSk7CitdXT4KKyAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCisgICAgICB3aGVyZSB0aGUgc2Vjb25kIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgcHJvYyBmaWxlIHRvIGJlCisgICAgY3JlYXRlZC4gVGhlIGFib3ZlIGV4YW1wbGUgd2lsbCBjcmVhdGUgYSBmaWxlCisgICAgPGZpbGVuYW1lPm15LWZpbGU8L2ZpbGVuYW1lPiB1bmRlciB0aGUgY2FyZCBkaXJlY3RvcnksCisgICAgZS5nLiA8ZmlsZW5hbWU+L3Byb2MvYXNvdW5kL2NhcmQwL215LWZpbGU8L2ZpbGVuYW1lPi4gCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgTGlrZSBvdGhlciBjb21wb25lbnRzLCB0aGUgcHJvYyBlbnRyeSBjcmVhdGVkIHZpYQorICAgIDxmdW5jdGlvbj5zbmRfY2FyZF9wcm9jX25ldygpPC9mdW5jdGlvbj4gd2lsbCBiZSByZWdpc3RlcmVkIGFuZAorICAgIHJlbGVhc2VkIGF1dG9tYXRpY2FsbHkgaW4gdGhlIGNhcmQgcmVnaXN0cmF0aW9uIGFuZCByZWxlYXNlCisgICAgZnVuY3Rpb25zLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgV2hlbiB0aGUgY3JlYXRpb24gaXMgc3VjY2Vzc2Z1bCwgdGhlIGZ1bmN0aW9uIHN0b3JlcyBhIG5ldworICAgIGluc3RhbmNlIGluIHRoZSBwb2ludGVyIGdpdmVuIGluIHRoZSB0aGlyZCBhcmd1bWVudC4KKyAgICBJdCBpcyBpbml0aWFsaXplZCBhcyBhIHRleHQgcHJvYyBmaWxlIGZvciByZWFkIG9ubHkuICBUbyB1c2UKKyAgICB0aGlzIHByb2MgZmlsZSBhcyBhIHJlYWQtb25seSB0ZXh0IGZpbGUgYXMgaXQgaXMsIHNldCB0aGUgcmVhZAorICAgIGNhbGxiYWNrIHdpdGggYSBwcml2YXRlIGRhdGEgdmlhIAorICAgICA8ZnVuY3Rpb24+c25kX2luZm9fc2V0X3RleHRfb3BzKCk8L2Z1bmN0aW9uPi4KKworICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgY2hpcCwgbXlfcHJvY19yZWFkKTsKK11dPgorICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisgICAgCisgICAgd2hlcmUgdGhlIHNlY29uZCBhcmd1bWVudCAoPHBhcmFtZXRlcj5jaGlwPC9wYXJhbWV0ZXI+KSBpcyB0aGUKKyAgICBwcml2YXRlIGRhdGEgdG8gYmUgdXNlZCBpbiB0aGUgY2FsbGJhY2tzLiBUaGUgdGhpcmQgcGFyYW1ldGVyCisgICAgc3BlY2lmaWVzIHRoZSByZWFkIGJ1ZmZlciBzaXplIGFuZCB0aGUgZm91cnRoCisgICAgKDxwYXJhbWV0ZXI+bXlfcHJvY19yZWFkPC9wYXJhbWV0ZXI+KSBpcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24sIHdoaWNoCisgICAgaXMgZGVmaW5lZCBsaWtlCisKKyAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdGF0aWMgdm9pZCBteV9wcm9jX3JlYWQoc3RydWN0IHNuZF9pbmZvX2VudHJ5ICplbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzbmRfaW5mb19idWZmZXIgKmJ1ZmZlcik7CitdXT4KKyAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgIAorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgIEluIHRoZSByZWFkIGNhbGxiYWNrLCB1c2UgPGZ1bmN0aW9uPnNuZF9pcHJpbnRmKCk8L2Z1bmN0aW9uPiBmb3IKKyAgICBvdXRwdXQgc3RyaW5ncywgd2hpY2ggd29ya3MganVzdCBsaWtlIG5vcm1hbAorICAgIDxmdW5jdGlvbj5wcmludGYoKTwvZnVuY3Rpb24+LiAgRm9yIGV4YW1wbGUsCisKKyAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdGF0aWMgdm9pZCBteV9wcm9jX3JlYWQoc3RydWN0IHNuZF9pbmZvX2VudHJ5ICplbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzbmRfaW5mb19idWZmZXIgKmJ1ZmZlcikKKyAgeworICAgICAgICAgIHN0cnVjdCBteV9jaGlwICpjaGlwID0gZW50cnktPnByaXZhdGVfZGF0YTsKKworICAgICAgICAgIHNuZF9pcHJpbnRmKGJ1ZmZlciwgIlRoaXMgaXMgbXkgY2hpcCFcbiIpOworICAgICAgICAgIHNuZF9pcHJpbnRmKGJ1ZmZlciwgIlBvcnQgPSAlbGRcbiIsIGNoaXAtPnBvcnQpOworICB9CitdXT4KKyAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgIFRoZSBmaWxlIHBlcm1pc3Npb25zIGNhbiBiZSBjaGFuZ2VkIGFmdGVyd2FyZHMuICBBcyBkZWZhdWx0LCBpdCdzCisgICAgc2V0IGFzIHJlYWQgb25seSBmb3IgYWxsIHVzZXJzLiAgSWYgeW91IHdhbnQgdG8gYWRkIHdyaXRlCisgICAgcGVybWlzc2lvbiBmb3IgdGhlIHVzZXIgKHJvb3QgYXMgZGVmYXVsdCksIGRvIGFzIGZvbGxvd3M6CisKKyAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworIGVudHJ5LT5tb2RlID0gU19JRlJFRyB8IFNfSVJVR08gfCBTX0lXVVNSOworXV0+CisgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworICAgIGFuZCBzZXQgdGhlIHdyaXRlIGJ1ZmZlciBzaXplIGFuZCB0aGUgY2FsbGJhY2sKKworICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIGVudHJ5LT5jLnRleHQud3JpdGUgPSBteV9wcm9jX3dyaXRlOworXV0+CisgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgIEZvciB0aGUgd3JpdGUgY2FsbGJhY2ssIHlvdSBjYW4gdXNlCisgICAgPGZ1bmN0aW9uPnNuZF9pbmZvX2dldF9saW5lKCk8L2Z1bmN0aW9uPiB0byBnZXQgYSB0ZXh0IGxpbmUsIGFuZAorICAgIDxmdW5jdGlvbj5zbmRfaW5mb19nZXRfc3RyKCk8L2Z1bmN0aW9uPiB0byByZXRyaWV2ZSBhIHN0cmluZyBmcm9tCisgICAgdGhlIGxpbmUuIFNvbWUgZXhhbXBsZXMgYXJlIGZvdW5kIGluCisgICAgPGZpbGVuYW1lPmNvcmUvb3NzL21peGVyX29zcy5jPC9maWxlbmFtZT4sIGNvcmUvb3NzL2FuZAorICAgIDxmaWxlbmFtZT5wY21fb3NzLmM8L2ZpbGVuYW1lPi4gCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBGb3IgYSByYXctZGF0YSBwcm9jLWZpbGUsIHNldCB0aGUgYXR0cmlidXRlcyBhcyBmb2xsb3dzOgorCisgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RhdGljIHN0cnVjdCBzbmRfaW5mb19lbnRyeV9vcHMgbXlfZmlsZV9pb19vcHMgPSB7CisgICAgICAgICAgLnJlYWQgPSBteV9maWxlX2lvX3JlYWQsCisgIH07CisKKyAgZW50cnktPmNvbnRlbnQgPSBTTkRSVl9JTkZPX0NPTlRFTlRfREFUQTsKKyAgZW50cnktPnByaXZhdGVfZGF0YSA9IGNoaXA7CisgIGVudHJ5LT5jLm9wcyA9ICZteV9maWxlX2lvX29wczsKKyAgZW50cnktPnNpemUgPSA0MDk2OworICBlbnRyeS0+bW9kZSA9IFNfSUZSRUcgfCBTX0lSVUdPOworXV0+CisgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworICAgICAgRm9yIHRoZSByYXcgZGF0YSwgPHN0cnVjdGZpZWxkPnNpemU8L3N0cnVjdGZpZWxkPiBmaWVsZCBtdXN0IGJlCisgICAgICBzZXQgcHJvcGVybHkuICBUaGlzIHNwZWNpZmllcyB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSBwcm9jIGZpbGUgYWNjZXNzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgVGhlIHJlYWQvd3JpdGUgY2FsbGJhY2tzIG9mIHJhdyBtb2RlIGFyZSBtb3JlIGRpcmVjdCB0aGFuIHRoZSB0ZXh0IG1vZGUuCisgICAgICBZb3UgbmVlZCB0byB1c2UgYSBsb3ctbGV2ZWwgSS9PIGZ1bmN0aW9ucyBzdWNoIGFzCisgICAgICA8ZnVuY3Rpb24+Y29weV9mcm9tL3RvX3VzZXIoKTwvZnVuY3Rpb24+IHRvIHRyYW5zZmVyIHRoZQorICAgICAgZGF0YS4KKworICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0YXRpYyBzc2l6ZV90IG15X2ZpbGVfaW9fcmVhZChzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZmlsZV9wcml2YXRlX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZmZfdCBwb3MpCisgIHsKKyAgICAgICAgICBpZiAoY29weV90b191c2VyKGJ1ZiwgbG9jYWxfZGF0YSArIHBvcywgY291bnQpKQorICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CisgICAgICAgICAgcmV0dXJuIGNvdW50OworICB9CitdXT4KKyAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCisgICAgICBJZiB0aGUgc2l6ZSBvZiB0aGUgaW5mbyBlbnRyeSBoYXMgYmVlbiBzZXQgdXAgcHJvcGVybHksCisgICAgICA8c3RydWN0ZmllbGQ+Y291bnQ8L3N0cnVjdGZpZWxkPiBhbmQgPHN0cnVjdGZpZWxkPnBvczwvc3RydWN0ZmllbGQ+IGFyZQorICAgICAgZ3VhcmFudGVlZCB0byBmaXQgd2l0aGluIDAgYW5kIHRoZSBnaXZlbiBzaXplLgorICAgICAgWW91IGRvbid0IGhhdmUgdG8gY2hlY2sgdGhlIHJhbmdlIGluIHRoZSBjYWxsYmFja3MgdW5sZXNzIGFueQorICAgICAgb3RoZXIgY29uZGl0aW9uIGlzIHJlcXVpcmVkLgorCisgICAgPC9wYXJhPgorCisgIDwvY2hhcHRlcj4KKworCis8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT4KKzwhLS0gUG93ZXIgTWFuYWdlbWVudCAgLS0+Cis8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT4KKyAgPGNoYXB0ZXIgaWQ9InBvd2VyLW1hbmFnZW1lbnQiPgorICAgIDx0aXRsZT5Qb3dlciBNYW5hZ2VtZW50PC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIElmIHRoZSBjaGlwIGlzIHN1cHBvc2VkIHRvIHdvcmsgd2l0aCBzdXNwZW5kL3Jlc3VtZQorICAgICAgZnVuY3Rpb25zLCB5b3UgbmVlZCB0byBhZGQgcG93ZXItbWFuYWdlbWVudCBjb2RlIHRvIHRoZQorICAgICAgZHJpdmVyLiBUaGUgYWRkaXRpb25hbCBjb2RlIGZvciBwb3dlci1tYW5hZ2VtZW50IHNob3VsZCBiZQorICAgICAgPGZ1bmN0aW9uPmlmZGVmPC9mdW5jdGlvbj4nZWQgd2l0aAorICAgICAgPGNvbnN0YW50PkNPTkZJR19QTTwvY29uc3RhbnQ+LiAKKyAgICA8L3BhcmE+CisKKwk8cGFyYT4KKwlJZiB0aGUgZHJpdmVyIDxlbXBoYXNpcz5mdWxseTwvZW1waGFzaXM+IHN1cHBvcnRzIHN1c3BlbmQvcmVzdW1lCisJdGhhdCBpcywgdGhlIGRldmljZSBjYW4gYmUKKwlwcm9wZXJseSByZXN1bWVkIHRvIGl0cyBzdGF0ZSB3aGVuIHN1c3BlbmQgd2FzIGNhbGxlZCwKKwl5b3UgY2FuIHNldCB0aGUgPGNvbnN0YW50PlNORFJWX1BDTV9JTkZPX1JFU1VNRTwvY29uc3RhbnQ+IGZsYWcKKwlpbiB0aGUgcGNtIGluZm8gZmllbGQuICBVc3VhbGx5LCB0aGlzIGlzIHBvc3NpYmxlIHdoZW4gdGhlCisJcmVnaXN0ZXJzIG9mIHRoZSBjaGlwIGNhbiBiZSBzYWZlbHkgc2F2ZWQgYW5kIHJlc3RvcmVkIHRvCisJUkFNLiBJZiB0aGlzIGlzIHNldCwgdGhlIHRyaWdnZXIgY2FsbGJhY2sgaXMgY2FsbGVkIHdpdGgKKwk8Y29uc3RhbnQ+U05EUlZfUENNX1RSSUdHRVJfUkVTVU1FPC9jb25zdGFudD4gYWZ0ZXIgdGhlIHJlc3VtZQorCWNhbGxiYWNrIGNvbXBsZXRlcy4gCisJPC9wYXJhPgorCisJPHBhcmE+CisJRXZlbiBpZiB0aGUgZHJpdmVyIGRvZXNuJ3Qgc3VwcG9ydCBQTSBmdWxseSBidXQgCisJcGFydGlhbCBzdXNwZW5kL3Jlc3VtZSBpcyBzdGlsbCBwb3NzaWJsZSwgaXQncyBzdGlsbCB3b3J0aHkgdG8KKwlpbXBsZW1lbnQgc3VzcGVuZC9yZXN1bWUgY2FsbGJhY2tzLiBJbiBzdWNoIGEgY2FzZSwgYXBwbGljYXRpb25zCisJd291bGQgcmVzZXQgdGhlIHN0YXR1cyBieSBjYWxsaW5nCisJPGZ1bmN0aW9uPnNuZF9wY21fcHJlcGFyZSgpPC9mdW5jdGlvbj4gYW5kIHJlc3RhcnQgdGhlIHN0cmVhbQorCWFwcHJvcHJpYXRlbHkuICBIZW5jZSwgeW91IGNhbiBkZWZpbmUgc3VzcGVuZC9yZXN1bWUgY2FsbGJhY2tzCisJYmVsb3cgYnV0IGRvbid0IHNldCA8Y29uc3RhbnQ+U05EUlZfUENNX0lORk9fUkVTVU1FPC9jb25zdGFudD4KKwlpbmZvIGZsYWcgdG8gdGhlIFBDTS4KKwk8L3BhcmE+CisJCisJPHBhcmE+CisJTm90ZSB0aGF0IHRoZSB0cmlnZ2VyIHdpdGggU1VTUEVORCBjYW4gYWx3YXlzIGJlIGNhbGxlZCB3aGVuCisJPGZ1bmN0aW9uPnNuZF9wY21fc3VzcGVuZF9hbGw8L2Z1bmN0aW9uPiBpcyBjYWxsZWQsCisJcmVnYXJkbGVzcyBvZiB0aGUgPGNvbnN0YW50PlNORFJWX1BDTV9JTkZPX1JFU1VNRTwvY29uc3RhbnQ+IGZsYWcuCisJVGhlIDxjb25zdGFudD5SRVNVTUU8L2NvbnN0YW50PiBmbGFnIGFmZmVjdHMgb25seSB0aGUgYmVoYXZpb3IKKwlvZiA8ZnVuY3Rpb24+c25kX3BjbV9yZXN1bWUoKTwvZnVuY3Rpb24+LgorCShUaHVzLCBpbiB0aGVvcnksCisJPGNvbnN0YW50PlNORFJWX1BDTV9UUklHR0VSX1JFU1VNRTwvY29uc3RhbnQ+IGlzbid0IG5lZWRlZAorCXRvIGJlIGhhbmRsZWQgaW4gdGhlIHRyaWdnZXIgY2FsbGJhY2sgd2hlbiBubworCTxjb25zdGFudD5TTkRSVl9QQ01fSU5GT19SRVNVTUU8L2NvbnN0YW50PiBmbGFnIGlzIHNldC4gIEJ1dCwKKwlpdCdzIGJldHRlciB0byBrZWVwIGl0IGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMuKQorCTwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIEluIHRoZSBlYXJsaWVyIHZlcnNpb24gb2YgQUxTQSBkcml2ZXJzLCBhIGNvbW1vbgorICAgICAgcG93ZXItbWFuYWdlbWVudCBsYXllciB3YXMgcHJvdmlkZWQsIGJ1dCBpdCBoYXMgYmVlbiByZW1vdmVkLgorICAgICAgVGhlIGRyaXZlciBuZWVkcyB0byBkZWZpbmUgdGhlIHN1c3BlbmQvcmVzdW1lIGhvb2tzIGFjY29yZGluZyB0bworICAgICAgdGhlIGJ1cyB0aGUgZGV2aWNlIGlzIGNvbm5lY3RlZCB0by4gIEluIHRoZSBjYXNlIG9mIFBDSSBkcml2ZXJzLCB0aGUKKyAgICAgIGNhbGxiYWNrcyBsb29rIGxpa2UgYmVsb3c6CisKKyAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICAjaWZkZWYgQ09ORklHX1BNCisgIHN0YXRpYyBpbnQgc25kX215X3N1c3BlbmQoc3RydWN0IHBjaV9kZXYgKnBjaSwgcG1fbWVzc2FnZV90IHN0YXRlKQorICB7CisgICAgICAgICAgLi4uLiAvKiBkbyB0aGluZ3MgZm9yIHN1c3BlbmQgKi8KKyAgICAgICAgICByZXR1cm4gMDsKKyAgfQorICBzdGF0aWMgaW50IHNuZF9teV9yZXN1bWUoc3RydWN0IHBjaV9kZXYgKnBjaSkKKyAgeworICAgICAgICAgIC4uLi4gLyogZG8gdGhpbmdzIGZvciBzdXNwZW5kICovCisgICAgICAgICAgcmV0dXJuIDA7CisgIH0KKyAgI2VuZGlmCitdXT4KKyAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgVGhlIHNjaGVtZSBvZiB0aGUgcmVhbCBzdXNwZW5kIGpvYiBpcyBhcyBmb2xsb3dzLgorCisgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgIDxsaXN0aXRlbT48cGFyYT5SZXRyaWV2ZSB0aGUgY2FyZCBhbmQgdGhlIGNoaXAgZGF0YS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNhbGwgPGZ1bmN0aW9uPnNuZF9wb3dlcl9jaGFuZ2Vfc3RhdGUoKTwvZnVuY3Rpb24+IHdpdGgKKwkgIDxjb25zdGFudD5TTkRSVl9DVExfUE9XRVJfRDNob3Q8L2NvbnN0YW50PiB0byBjaGFuZ2UgdGhlCisJICBwb3dlciBzdGF0dXMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DYWxsIDxmdW5jdGlvbj5zbmRfcGNtX3N1c3BlbmRfYWxsKCk8L2Z1bmN0aW9uPiB0byBzdXNwZW5kIHRoZSBydW5uaW5nIFBDTSBzdHJlYW1zLjwvcGFyYT48L2xpc3RpdGVtPgorCTxsaXN0aXRlbT48cGFyYT5JZiBBQzk3IGNvZGVjcyBhcmUgdXNlZCwgY2FsbAorCTxmdW5jdGlvbj5zbmRfYWM5N19zdXNwZW5kKCk8L2Z1bmN0aW9uPiBmb3IgZWFjaCBjb2RlYy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlNhdmUgdGhlIHJlZ2lzdGVyIHZhbHVlcyBpZiBuZWNlc3NhcnkuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT48cGFyYT5TdG9wIHRoZSBoYXJkd2FyZSBpZiBuZWNlc3NhcnkuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EaXNhYmxlIHRoZSBQQ0kgZGV2aWNlIGJ5IGNhbGxpbmcKKwkgIDxmdW5jdGlvbj5wY2lfZGlzYWJsZV9kZXZpY2UoKTwvZnVuY3Rpb24+LiAgVGhlbiwgY2FsbAorICAgICAgICAgIDxmdW5jdGlvbj5wY2lfc2F2ZV9zdGF0ZSgpPC9mdW5jdGlvbj4gYXQgbGFzdC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBBIHR5cGljYWwgY29kZSB3b3VsZCBiZSBsaWtlOgorCisgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RhdGljIGludCBteWNoaXBfc3VzcGVuZChzdHJ1Y3QgcGNpX2RldiAqcGNpLCBwbV9tZXNzYWdlX3Qgc3RhdGUpCisgIHsKKyAgICAgICAgICAvKiAoMSkgKi8KKyAgICAgICAgICBzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQgPSBwY2lfZ2V0X2RydmRhdGEocGNpKTsKKyAgICAgICAgICBzdHJ1Y3QgbXljaGlwICpjaGlwID0gY2FyZC0+cHJpdmF0ZV9kYXRhOworICAgICAgICAgIC8qICgyKSAqLworICAgICAgICAgIHNuZF9wb3dlcl9jaGFuZ2Vfc3RhdGUoY2FyZCwgU05EUlZfQ1RMX1BPV0VSX0QzaG90KTsKKyAgICAgICAgICAvKiAoMykgKi8KKyAgICAgICAgICBzbmRfcGNtX3N1c3BlbmRfYWxsKGNoaXAtPnBjbSk7CisgICAgICAgICAgLyogKDQpICovCisgICAgICAgICAgc25kX2FjOTdfc3VzcGVuZChjaGlwLT5hYzk3KTsKKyAgICAgICAgICAvKiAoNSkgKi8KKyAgICAgICAgICBzbmRfbXljaGlwX3NhdmVfcmVnaXN0ZXJzKGNoaXApOworICAgICAgICAgIC8qICg2KSAqLworICAgICAgICAgIHNuZF9teWNoaXBfc3RvcF9oYXJkd2FyZShjaGlwKTsKKyAgICAgICAgICAvKiAoNykgKi8KKyAgICAgICAgICBwY2lfZGlzYWJsZV9kZXZpY2UocGNpKTsKKyAgICAgICAgICBwY2lfc2F2ZV9zdGF0ZShwY2kpOworICAgICAgICAgIHJldHVybiAwOworICB9CitdXT4KKyAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgIFRoZSBzY2hlbWUgb2YgdGhlIHJlYWwgcmVzdW1lIGpvYiBpcyBhcyBmb2xsb3dzLgorCisgICAgPG9yZGVyZWRsaXN0PgorICAgIDxsaXN0aXRlbT48cGFyYT5SZXRyaWV2ZSB0aGUgY2FyZCBhbmQgdGhlIGNoaXAgZGF0YS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+PHBhcmE+U2V0IHVwIFBDSS4gRmlyc3QsIGNhbGwgPGZ1bmN0aW9uPnBjaV9yZXN0b3JlX3N0YXRlKCk8L2Z1bmN0aW9uPi4KKyAgICAJVGhlbiBlbmFibGUgdGhlIHBjaSBkZXZpY2UgYWdhaW4gYnkgY2FsbGluZyA8ZnVuY3Rpb24+cGNpX2VuYWJsZV9kZXZpY2UoKTwvZnVuY3Rpb24+LgorCUNhbGwgPGZ1bmN0aW9uPnBjaV9zZXRfbWFzdGVyKCk8L2Z1bmN0aW9uPiBpZiBuZWNlc3NhcnksIHRvby48L3BhcmE+PC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+PHBhcmE+UmUtaW5pdGlhbGl6ZSB0aGUgY2hpcC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+PHBhcmE+UmVzdG9yZSB0aGUgc2F2ZWQgcmVnaXN0ZXJzIGlmIG5lY2Vzc2FyeS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICA8bGlzdGl0ZW0+PHBhcmE+UmVzdW1lIHRoZSBtaXhlciwgZS5nLiBjYWxsaW5nCisgICAgPGZ1bmN0aW9uPnNuZF9hYzk3X3Jlc3VtZSgpPC9mdW5jdGlvbj4uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPjxwYXJhPlJlc3RhcnQgdGhlIGhhcmR3YXJlIChpZiBhbnkpLjwvcGFyYT48L2xpc3RpdGVtPgorICAgIDxsaXN0aXRlbT48cGFyYT5DYWxsIDxmdW5jdGlvbj5zbmRfcG93ZXJfY2hhbmdlX3N0YXRlKCk8L2Z1bmN0aW9uPiB3aXRoCisJPGNvbnN0YW50PlNORFJWX0NUTF9QT1dFUl9EMDwvY29uc3RhbnQ+IHRvIG5vdGlmeSB0aGUgcHJvY2Vzc2VzLjwvcGFyYT48L2xpc3RpdGVtPgorICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgQSB0eXBpY2FsIGNvZGUgd291bGQgYmUgbGlrZToKKworICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0YXRpYyBpbnQgbXljaGlwX3Jlc3VtZShzdHJ1Y3QgcGNpX2RldiAqcGNpKQorICB7CisgICAgICAgICAgLyogKDEpICovCisgICAgICAgICAgc3RydWN0IHNuZF9jYXJkICpjYXJkID0gcGNpX2dldF9kcnZkYXRhKHBjaSk7CisgICAgICAgICAgc3RydWN0IG15Y2hpcCAqY2hpcCA9IGNhcmQtPnByaXZhdGVfZGF0YTsKKyAgICAgICAgICAvKiAoMikgKi8KKyAgICAgICAgICBwY2lfcmVzdG9yZV9zdGF0ZShwY2kpOworICAgICAgICAgIHBjaV9lbmFibGVfZGV2aWNlKHBjaSk7CisgICAgICAgICAgcGNpX3NldF9tYXN0ZXIocGNpKTsKKyAgICAgICAgICAvKiAoMykgKi8KKyAgICAgICAgICBzbmRfbXljaGlwX3JlaW5pdF9jaGlwKGNoaXApOworICAgICAgICAgIC8qICg0KSAqLworICAgICAgICAgIHNuZF9teWNoaXBfcmVzdG9yZV9yZWdpc3RlcnMoY2hpcCk7CisgICAgICAgICAgLyogKDUpICovCisgICAgICAgICAgc25kX2FjOTdfcmVzdW1lKGNoaXAtPmFjOTcpOworICAgICAgICAgIC8qICg2KSAqLworICAgICAgICAgIHNuZF9teWNoaXBfcmVzdGFydF9jaGlwKGNoaXApOworICAgICAgICAgIC8qICg3KSAqLworICAgICAgICAgIHNuZF9wb3dlcl9jaGFuZ2Vfc3RhdGUoY2FyZCwgU05EUlZfQ1RMX1BPV0VSX0QwKTsKKyAgICAgICAgICByZXR1cm4gMDsKKyAgfQorXV0+CisgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKwlBcyBzaG93biBpbiB0aGUgYWJvdmUsIGl0J3MgYmV0dGVyIHRvIHNhdmUgcmVnaXN0ZXJzIGFmdGVyCisJc3VzcGVuZGluZyB0aGUgUENNIG9wZXJhdGlvbnMgdmlhCisJPGZ1bmN0aW9uPnNuZF9wY21fc3VzcGVuZF9hbGwoKTwvZnVuY3Rpb24+IG9yCisJPGZ1bmN0aW9uPnNuZF9wY21fc3VzcGVuZCgpPC9mdW5jdGlvbj4uICBJdCBtZWFucyB0aGF0IHRoZSBQQ00KKwlzdHJlYW1zIGFyZSBhbHJlYWR5IHN0b3BwZWQgd2hlbiB0aGUgcmVnaXN0ZXIgc25hcHNob3QgaXMKKwl0YWtlbi4gIEJ1dCwgcmVtZW1iZXIgdGhhdCB5b3UgZG9uJ3QgaGF2ZSB0byByZXN0YXJ0IHRoZSBQQ00KKwlzdHJlYW0gaW4gdGhlIHJlc3VtZSBjYWxsYmFjay4gSXQnbGwgYmUgcmVzdGFydGVkIHZpYSAKKwl0cmlnZ2VyIGNhbGwgd2l0aCA8Y29uc3RhbnQ+U05EUlZfUENNX1RSSUdHRVJfUkVTVU1FPC9jb25zdGFudD4KKwl3aGVuIG5lY2Vzc2FyeS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgIE9LLCB3ZSBoYXZlIGFsbCBjYWxsYmFja3Mgbm93LiBMZXQncyBzZXQgdGhlbSB1cC4gSW4gdGhlCisgICAgICBpbml0aWFsaXphdGlvbiBvZiB0aGUgY2FyZCwgbWFrZSBzdXJlIHRoYXQgeW91IGNhbiBnZXQgdGhlIGNoaXAKKyAgICAgIGRhdGEgZnJvbSB0aGUgY2FyZCBpbnN0YW5jZSwgdHlwaWNhbGx5IHZpYQorICAgICAgPHN0cnVjdGZpZWxkPnByaXZhdGVfZGF0YTwvc3RydWN0ZmllbGQ+IGZpZWxkLCBpbiBjYXNlIHlvdQorICAgICAgY3JlYXRlZCB0aGUgY2hpcCBkYXRhIGluZGl2aWR1YWxseS4KKworICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0YXRpYyBpbnQgc25kX215Y2hpcF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9pZCkKKyAgeworICAgICAgICAgIC4uLi4KKyAgICAgICAgICBzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQ7CisgICAgICAgICAgc3RydWN0IG15Y2hpcCAqY2hpcDsKKyAgICAgICAgICBpbnQgZXJyOworICAgICAgICAgIC4uLi4KKyAgICAgICAgICBlcnIgPSBzbmRfY2FyZF9uZXcoJnBjaS0+ZGV2LCBpbmRleFtkZXZdLCBpZFtkZXZdLCBUSElTX01PRFVMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgJmNhcmQpOworICAgICAgICAgIC4uLi4KKyAgICAgICAgICBjaGlwID0ga3phbGxvYyhzaXplb2YoKmNoaXApLCBHRlBfS0VSTkVMKTsKKyAgICAgICAgICAuLi4uCisgICAgICAgICAgY2FyZC0+cHJpdmF0ZV9kYXRhID0gY2hpcDsKKyAgICAgICAgICAuLi4uCisgIH0KK11dPgorICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisKKwlXaGVuIHlvdSBjcmVhdGVkIHRoZSBjaGlwIGRhdGEgd2l0aAorCTxmdW5jdGlvbj5zbmRfY2FyZF9uZXcoKTwvZnVuY3Rpb24+LCBpdCdzIGFueXdheSBhY2Nlc3NpYmxlCisJdmlhIDxzdHJ1Y3RmaWVsZD5wcml2YXRlX2RhdGE8L3N0cnVjdGZpZWxkPiBmaWVsZC4KKworICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHN0YXRpYyBpbnQgc25kX215Y2hpcF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9pZCkKKyAgeworICAgICAgICAgIC4uLi4KKyAgICAgICAgICBzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQ7CisgICAgICAgICAgc3RydWN0IG15Y2hpcCAqY2hpcDsKKyAgICAgICAgICBpbnQgZXJyOworICAgICAgICAgIC4uLi4KKyAgICAgICAgICBlcnIgPSBzbmRfY2FyZF9uZXcoJnBjaS0+ZGV2LCBpbmRleFtkZXZdLCBpZFtkZXZdLCBUSElTX01PRFVMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBteWNoaXApLCAmY2FyZCk7CisgICAgICAgICAgLi4uLgorICAgICAgICAgIGNoaXAgPSBjYXJkLT5wcml2YXRlX2RhdGE7CisgICAgICAgICAgLi4uLgorICB9CitdXT4KKyAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBJZiB5b3UgbmVlZCBhIHNwYWNlIHRvIHNhdmUgdGhlIHJlZ2lzdGVycywgYWxsb2NhdGUgdGhlCisJYnVmZmVyIGZvciBpdCBoZXJlLCB0b28sIHNpbmNlIGl0IHdvdWxkIGJlIGZhdGFsCisgICAgaWYgeW91IGNhbm5vdCBhbGxvY2F0ZSBhIG1lbW9yeSBpbiB0aGUgc3VzcGVuZCBwaGFzZS4KKyAgICBUaGUgYWxsb2NhdGVkIGJ1ZmZlciBzaG91bGQgYmUgcmVsZWFzZWQgaW4gdGhlIGNvcnJlc3BvbmRpbmcKKyAgICBkZXN0cnVjdG9yLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgQW5kIG5leHQsIHNldCBzdXNwZW5kL3Jlc3VtZSBjYWxsYmFja3MgdG8gdGhlIHBjaV9kcml2ZXIuCisKKyAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgZHJpdmVyID0geworICAgICAgICAgIC5uYW1lID0gS0JVSUxEX01PRE5BTUUsCisgICAgICAgICAgLmlkX3RhYmxlID0gc25kX215X2lkcywKKyAgICAgICAgICAucHJvYmUgPSBzbmRfbXlfcHJvYmUsCisgICAgICAgICAgLnJlbW92ZSA9IHNuZF9teV9yZW1vdmUsCisgICNpZmRlZiBDT05GSUdfUE0KKyAgICAgICAgICAuc3VzcGVuZCA9IHNuZF9teV9zdXNwZW5kLAorICAgICAgICAgIC5yZXN1bWUgPSBzbmRfbXlfcmVzdW1lLAorICAjZW5kaWYKKyAgfTsKK11dPgorICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgPC9pbmZvcm1hbGV4YW1wbGU+CisgICAgPC9wYXJhPgorCisgIDwvY2hhcHRlcj4KKworCis8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT4KKzwhLS0gTW9kdWxlIFBhcmFtZXRlcnMgIC0tPgorPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+CisgIDxjaGFwdGVyIGlkPSJtb2R1bGUtcGFyYW1ldGVycyI+CisgICAgPHRpdGxlPk1vZHVsZSBQYXJhbWV0ZXJzPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIFRoZXJlIGFyZSBzdGFuZGFyZCBtb2R1bGUgb3B0aW9ucyBmb3IgQUxTQS4gQXQgbGVhc3QsIGVhY2gKKyAgICAgIG1vZHVsZSBzaG91bGQgaGF2ZSB0aGUgPHBhcmFtZXRlcj5pbmRleDwvcGFyYW1ldGVyPiwKKyAgICAgIDxwYXJhbWV0ZXI+aWQ8L3BhcmFtZXRlcj4gYW5kIDxwYXJhbWV0ZXI+ZW5hYmxlPC9wYXJhbWV0ZXI+CisgICAgICBvcHRpb25zLiAKKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgIElmIHRoZSBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMgKHVzdWFsbHkgdXAgdG8KKyAgICAgIDggPSA8Y29uc3RhbnQ+U05EUlZfQ0FSRFM8L2NvbnN0YW50PiBjYXJkcyksIHRoZXkgc2hvdWxkIGJlCisgICAgICBhcnJheXMuIFRoZSBkZWZhdWx0IGluaXRpYWwgdmFsdWVzIGFyZSBkZWZpbmVkIGFscmVhZHkgYXMKKyAgICAgIGNvbnN0YW50cyBmb3IgZWFzaWVyIHByb2dyYW1taW5nOgorCisgICAgICA8aW5mb3JtYWxleGFtcGxlPgorICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc3RhdGljIGludCBpbmRleFtTTkRSVl9DQVJEU10gPSBTTkRSVl9ERUZBVUxUX0lEWDsKKyAgc3RhdGljIGNoYXIgKmlkW1NORFJWX0NBUkRTXSA9IFNORFJWX0RFRkFVTFRfU1RSOworICBzdGF0aWMgaW50IGVuYWJsZVtTTkRSVl9DQVJEU10gPSBTTkRSVl9ERUZBVUxUX0VOQUJMRV9QTlA7CitdXT4KKyAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgSWYgdGhlIG1vZHVsZSBzdXBwb3J0cyBvbmx5IGEgc2luZ2xlIGNhcmQsIHRoZXkgY291bGQgYmUgc2luZ2xlCisgICAgdmFyaWFibGVzLCBpbnN0ZWFkLiAgPHBhcmFtZXRlcj5lbmFibGU8L3BhcmFtZXRlcj4gb3B0aW9uIGlzIG5vdAorICAgIGFsd2F5cyBuZWNlc3NhcnkgaW4gdGhpcyBjYXNlLCBidXQgaXQgd291bGQgYmUgYmV0dGVyIHRvIGhhdmUgYQorICAgIGR1bW15IG9wdGlvbiBmb3IgY29tcGF0aWJpbGl0eS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgIFRoZSBtb2R1bGUgcGFyYW1ldGVycyBtdXN0IGJlIGRlY2xhcmVkIHdpdGggdGhlIHN0YW5kYXJkCisgICAgPGZ1bmN0aW9uPm1vZHVsZV9wYXJhbSgpKCk8L2Z1bmN0aW9uPiwKKyAgICA8ZnVuY3Rpb24+bW9kdWxlX3BhcmFtX2FycmF5KCkoKTwvZnVuY3Rpb24+IGFuZAorICAgIDxmdW5jdGlvbj5NT0RVTEVfUEFSTV9ERVNDKCk8L2Z1bmN0aW9uPiBtYWNyb3MuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICBUaGUgdHlwaWNhbCBjb2Rpbmcgd291bGQgYmUgbGlrZSBiZWxvdzoKKworICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgICNkZWZpbmUgQ0FSRF9OQU1FICJNeSBDaGlwIgorCisgIG1vZHVsZV9wYXJhbV9hcnJheShpbmRleCwgaW50LCBOVUxMLCAwNDQ0KTsKKyAgTU9EVUxFX1BBUk1fREVTQyhpbmRleCwgIkluZGV4IHZhbHVlIGZvciAiIENBUkRfTkFNRSAiIHNvdW5kY2FyZC4iKTsKKyAgbW9kdWxlX3BhcmFtX2FycmF5KGlkLCBjaGFycCwgTlVMTCwgMDQ0NCk7CisgIE1PRFVMRV9QQVJNX0RFU0MoaWQsICJJRCBzdHJpbmcgZm9yICIgQ0FSRF9OQU1FICIgc291bmRjYXJkLiIpOworICBtb2R1bGVfcGFyYW1fYXJyYXkoZW5hYmxlLCBib29sLCBOVUxMLCAwNDQ0KTsKKyAgTU9EVUxFX1BBUk1fREVTQyhlbmFibGUsICJFbmFibGUgIiBDQVJEX05BTUUgIiBzb3VuZGNhcmQuIik7CitdXT4KKyAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICAgQWxzbywgZG9uJ3QgZm9yZ2V0IHRvIGRlZmluZSB0aGUgbW9kdWxlIGRlc2NyaXB0aW9uLCBjbGFzc2VzLAorICAgICAgbGljZW5zZSBhbmQgZGV2aWNlcy4gRXNwZWNpYWxseSwgdGhlIHJlY2VudCBtb2Rwcm9iZSByZXF1aXJlcyB0bworICAgICAgZGVmaW5lIHRoZSBtb2R1bGUgbGljZW5zZSBhcyBHUEwsIGV0Yy4sIG90aGVyd2lzZSB0aGUgc3lzdGVtIGlzCisgICAgICBzaG93biBhcyA8cXVvdGU+dGFpbnRlZDwvcXVvdGU+LiAKKworICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIE1PRFVMRV9ERVNDUklQVElPTigiTXkgQ2hpcCIpOworICBNT0RVTEVfTElDRU5TRSgiR1BMIik7CisgIE1PRFVMRV9TVVBQT1JURURfREVWSUNFKCJ7e1ZlbmRvcixNeSBDaGlwIE5hbWV9fSIpOworXV0+CisgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKyAgICA8L3BhcmE+CisKKyAgPC9jaGFwdGVyPgorCisKKzwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgorPCEtLSBIb3cgVG8gUHV0IFlvdXIgRHJpdmVyICAtLT4KKzwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgorICA8Y2hhcHRlciBpZD0iaG93LXRvLXB1dC15b3VyLWRyaXZlciI+CisgICAgPHRpdGxlPkhvdyBUbyBQdXQgWW91ciBEcml2ZXIgSW50byBBTFNBIFRyZWU8L3RpdGxlPgorCTxzZWN0aW9uPgorCTx0aXRsZT5HZW5lcmFsPC90aXRsZT4KKwk8cGFyYT4KKwlTbyBmYXIsIHlvdSd2ZSBsZWFybmVkIGhvdyB0byB3cml0ZSB0aGUgZHJpdmVyIGNvZGVzLgorCUFuZCB5b3UgbWlnaHQgaGF2ZSBhIHF1ZXN0aW9uIG5vdzogaG93IHRvIHB1dCBteSBvd24KKwlkcml2ZXIgaW50byB0aGUgQUxTQSBkcml2ZXIgdHJlZT8KKwlIZXJlIChmaW5hbGx5IDopIHRoZSBzdGFuZGFyZCBwcm9jZWR1cmUgaXMgZGVzY3JpYmVkIGJyaWVmbHkuCisJPC9wYXJhPgorCisJPHBhcmE+CisJU3VwcG9zZSB0aGF0IHlvdSBjcmVhdGUgYSBuZXcgUENJIGRyaXZlciBmb3IgdGhlIGNhcmQKKwk8cXVvdGU+eHl6PC9xdW90ZT4uICBUaGUgY2FyZCBtb2R1bGUgbmFtZSB3b3VsZCBiZQorCXNuZC14eXouICBUaGUgbmV3IGRyaXZlciBpcyB1c3VhbGx5IHB1dCBpbnRvIHRoZSBhbHNhLWRyaXZlcgorCXRyZWUsIDxmaWxlbmFtZT5hbHNhLWRyaXZlci9wY2k8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaW4KKwl0aGUgY2FzZSBvZiBQQ0kgY2FyZHMuCisJVGhlbiB0aGUgZHJpdmVyIGlzIGV2YWx1YXRlZCwgYXVkaXRlZCBhbmQgdGVzdGVkCisJYnkgZGV2ZWxvcGVycyBhbmQgdXNlcnMuICBBZnRlciBhIGNlcnRhaW4gdGltZSwgdGhlIGRyaXZlcgorCXdpbGwgZ28gdG8gdGhlIGFsc2Eta2VybmVsIHRyZWUgKHRvIHRoZSBjb3JyZXNwb25kaW5nIGRpcmVjdG9yeSwKKwlzdWNoIGFzIDxmaWxlbmFtZT5hbHNhLWtlcm5lbC9wY2k8L2ZpbGVuYW1lPikgYW5kIGV2ZW50dWFsbHkKKyAJd2lsbCBiZSBpbnRlZ3JhdGVkIGludG8gdGhlIExpbnV4IDIuNiB0cmVlICh0aGUgZGlyZWN0b3J5IHdvdWxkIGJlCisJPGZpbGVuYW1lPmxpbnV4L3NvdW5kL3BjaTwvZmlsZW5hbWU+KS4KKwk8L3BhcmE+CisKKwk8cGFyYT4KKwlJbiB0aGUgZm9sbG93aW5nIHNlY3Rpb25zLCB0aGUgZHJpdmVyIGNvZGUgaXMgc3VwcG9zZWQKKwl0byBiZSBwdXQgaW50byBhbHNhLWRyaXZlciB0cmVlLiBUaGUgdHdvIGNhc2VzIGFyZSBjb3ZlcmVkOgorCWEgZHJpdmVyIGNvbnNpc3Rpbmcgb2YgYSBzaW5nbGUgc291cmNlIGZpbGUgYW5kIG9uZSBjb25zaXN0aW5nCisJb2Ygc2V2ZXJhbCBzb3VyY2UgZmlsZXMuCisJPC9wYXJhPgorCTwvc2VjdGlvbj4KKworCTxzZWN0aW9uPgorCTx0aXRsZT5Ecml2ZXIgd2l0aCBBIFNpbmdsZSBTb3VyY2UgRmlsZTwvdGl0bGU+CisJPHBhcmE+CisJPG9yZGVyZWRsaXN0PgorCTxsaXN0aXRlbT4KKwk8cGFyYT4KKwlNb2RpZnkgYWxzYS1kcml2ZXIvcGNpL01ha2VmaWxlCisJPC9wYXJhPgorCisJPHBhcmE+CisJU3VwcG9zZSB5b3UgaGF2ZSBhIGZpbGUgeHl6LmMuICBBZGQgdGhlIGZvbGxvd2luZworCXR3byBsaW5lcworICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIHNuZC14eXotb2JqcyA6PSB4eXoubworICBvYmotJChDT05GSUdfU05EX1hZWikgKz0gc25kLXh5ei5vCitdXT4KKyAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCTxwYXJhPgorCUNyZWF0ZSB0aGUgS2NvbmZpZyBlbnRyeQorCTwvcGFyYT4KKworCTxwYXJhPgorCUFkZCB0aGUgbmV3IGVudHJ5IG9mIEtjb25maWcgZm9yIHlvdXIgeHl6IGRyaXZlci4KKyAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBjb25maWcgU05EX1hZWgorICAgICAgICAgIHRyaXN0YXRlICJGb29iYXIgWFlaIgorICAgICAgICAgIGRlcGVuZHMgb24gU05ECisgICAgICAgICAgc2VsZWN0IFNORF9QQ00KKyAgICAgICAgICBoZWxwCisgICAgICAgICAgICBTYXkgWSBoZXJlIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgRm9vYmFyIFhZWiBzb3VuZGNhcmQuCisKKyAgICAgICAgICAgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUKKyAgICAgICAgICAgIHdpbGwgYmUgY2FsbGVkIHNuZC14eXouCitdXT4KKyAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCisJdGhlIGxpbmUsIHNlbGVjdCBTTkRfUENNLCBzcGVjaWZpZXMgdGhhdCB0aGUgZHJpdmVyIHh5eiBzdXBwb3J0cworCVBDTS4gIEluIGFkZGl0aW9uIHRvIFNORF9QQ00sIHRoZSBmb2xsb3dpbmcgY29tcG9uZW50cyBhcmUKKwlzdXBwb3J0ZWQgZm9yIHNlbGVjdCBjb21tYW5kOgorCVNORF9SQVdNSURJLCBTTkRfVElNRVIsIFNORF9IV0RFUCwgU05EX01QVTQwMV9VQVJULAorCVNORF9PUEwzX0xJQiwgU05EX09QTDRfTElCLCBTTkRfVlhfTElCLCBTTkRfQUM5N19DT0RFQy4KKwlBZGQgdGhlIHNlbGVjdCBjb21tYW5kIGZvciBlYWNoIHN1cHBvcnRlZCBjb21wb25lbnQuCisJPC9wYXJhPgorCisJPHBhcmE+CisJTm90ZSB0aGF0IHNvbWUgc2VsZWN0aW9ucyBpbXBseSB0aGUgbG93bGV2ZWwgc2VsZWN0aW9ucy4KKwlGb3IgZXhhbXBsZSwgUENNIGluY2x1ZGVzIFRJTUVSLCBNUFU0MDFfVUFSVCBpbmNsdWRlcyBSQVdNSURJLAorCUFDOTdfQ09ERUMgaW5jbHVkZXMgUENNLCBhbmQgT1BMM19MSUIgaW5jbHVkZXMgSFdERVAuCisJWW91IGRvbid0IG5lZWQgdG8gZ2l2ZSB0aGUgbG93bGV2ZWwgc2VsZWN0aW9ucyBhZ2Fpbi4KKwk8L3BhcmE+CisKKwk8cGFyYT4KKwlGb3IgdGhlIGRldGFpbHMgb2YgS2NvbmZpZyBzY3JpcHQsIHJlZmVyIHRvIHRoZSBrYnVpbGQKKwlkb2N1bWVudGF0aW9uLgorCTwvcGFyYT4KKworCTwvbGlzdGl0ZW0+CisKKwk8bGlzdGl0ZW0+CisJPHBhcmE+CisJUnVuIGN2c2NvbXBpbGUgc2NyaXB0IHRvIHJlLWdlbmVyYXRlIHRoZSBjb25maWd1cmUgc2NyaXB0IGFuZAorCWJ1aWxkIHRoZSB3aG9sZSBzdHVmZiBhZ2Fpbi4KKwk8L3BhcmE+CisJPC9saXN0aXRlbT4KKwk8L29yZGVyZWRsaXN0PgorCTwvcGFyYT4KKwk8L3NlY3Rpb24+CisKKwk8c2VjdGlvbj4KKwk8dGl0bGU+RHJpdmVycyB3aXRoIFNldmVyYWwgU291cmNlIEZpbGVzPC90aXRsZT4KKwk8cGFyYT4KKwlTdXBwb3NlIHRoYXQgdGhlIGRyaXZlciBzbmQteHl6IGhhdmUgc2V2ZXJhbCBzb3VyY2UgZmlsZXMuCisJVGhleSBhcmUgbG9jYXRlZCBpbiB0aGUgbmV3IHN1YmRpcmVjdG9yeSwKKwlwY2kveHl6LgorCisJPG9yZGVyZWRsaXN0PgorCTxsaXN0aXRlbT4KKwk8cGFyYT4KKwlBZGQgYSBuZXcgZGlyZWN0b3J5ICg8ZmlsZW5hbWU+eHl6PC9maWxlbmFtZT4pIGluCisJPGZpbGVuYW1lPmFsc2EtZHJpdmVyL3BjaS9NYWtlZmlsZTwvZmlsZW5hbWU+IGFzIGJlbG93CisKKyAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KKzwhW0NEQVRBWworICBvYmotJChDT05GSUdfU05EKSArPSB4eXovCitdXT4KKyAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCTxwYXJhPgorCVVuZGVyIHRoZSBkaXJlY3RvcnkgPGZpbGVuYW1lPnh5ejwvZmlsZW5hbWU+LCBjcmVhdGUgYSBNYWtlZmlsZQorCisgICAgICA8ZXhhbXBsZT4KKwk8dGl0bGU+U2FtcGxlIE1ha2VmaWxlIGZvciBhIGRyaXZlciB4eXo8L3RpdGxlPgorICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgaWZuZGVmIFNORF9UT1BESVIKKyAgU05EX1RPUERJUj0uLi8uLgorICBlbmRpZgorCisgIGluY2x1ZGUgJChTTkRfVE9QRElSKS90b3BsZXZlbC5jb25maWcKKyAgaW5jbHVkZSAkKFNORF9UT1BESVIpL01ha2VmaWxlLmNvbmYKKworICBzbmQteHl6LW9ianMgOj0geHl6Lm8gYWJjLm8gZGVmLm8KKworICBvYmotJChDT05GSUdfU05EX1hZWikgKz0gc25kLXh5ei5vCisKKyAgaW5jbHVkZSAkKFNORF9UT1BESVIpL1J1bGVzLm1ha2UKK11dPgorICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgPC9leGFtcGxlPgorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCisJPGxpc3RpdGVtPgorCTxwYXJhPgorCUNyZWF0ZSB0aGUgS2NvbmZpZyBlbnRyeQorCTwvcGFyYT4KKworCTxwYXJhPgorCVRoaXMgcHJvY2VkdXJlIGlzIGFzIHNhbWUgYXMgaW4gdGhlIGxhc3Qgc2VjdGlvbi4KKwk8L3BhcmE+CisJPC9saXN0aXRlbT4KKworCTxsaXN0aXRlbT4KKwk8cGFyYT4KKwlSdW4gY3ZzY29tcGlsZSBzY3JpcHQgdG8gcmUtZ2VuZXJhdGUgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgYW5kCisJYnVpbGQgdGhlIHdob2xlIHN0dWZmIGFnYWluLgorCTwvcGFyYT4KKwk8L2xpc3RpdGVtPgorCTwvb3JkZXJlZGxpc3Q+CisJPC9wYXJhPgorCTwvc2VjdGlvbj4KKworICA8L2NoYXB0ZXI+CisKKzwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgorPCEtLSBVc2VmdWwgRnVuY3Rpb25zICAtLT4KKzwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgorICA8Y2hhcHRlciBpZD0idXNlZnVsLWZ1bmN0aW9ucyI+CisgICAgPHRpdGxlPlVzZWZ1bCBGdW5jdGlvbnM8L3RpdGxlPgorCisgICAgPHNlY3Rpb24gaWQ9InVzZWZ1bC1mdW5jdGlvbnMtc25kLXByaW50ayI+CisgICAgICA8dGl0bGU+PGZ1bmN0aW9uPnNuZF9wcmludGsoKTwvZnVuY3Rpb24+IGFuZCBmcmllbmRzPC90aXRsZT4KKyAgICAgIDxwYXJhPgorICAgICAgICBBTFNBIHByb3ZpZGVzIGEgdmVyYm9zZSB2ZXJzaW9uIG9mIHRoZQorICAgICAgPGZ1bmN0aW9uPnByaW50aygpPC9mdW5jdGlvbj4gZnVuY3Rpb24uIElmIGEga2VybmVsIGNvbmZpZworICAgICAgPGNvbnN0YW50PkNPTkZJR19TTkRfVkVSQk9TRV9QUklOVEs8L2NvbnN0YW50PiBpcyBzZXQsIHRoaXMKKyAgICAgIGZ1bmN0aW9uIHByaW50cyB0aGUgZ2l2ZW4gbWVzc2FnZSB0b2dldGhlciB3aXRoIHRoZSBmaWxlIG5hbWUKKyAgICAgIGFuZCB0aGUgbGluZSBvZiB0aGUgY2FsbGVyLiBUaGUgPGNvbnN0YW50PktFUk5fWFhYPC9jb25zdGFudD4KKyAgICAgIHByZWZpeCBpcyBwcm9jZXNzZWQgYXMgCisgICAgICB3ZWxsIGFzIHRoZSBvcmlnaW5hbCA8ZnVuY3Rpb24+cHJpbnRrKCk8L2Z1bmN0aW9uPiBkb2VzLCBzbyBpdCdzCisgICAgICByZWNvbW1lbmRlZCB0byBhZGQgdGhpcyBwcmVmaXgsIGUuZy4gCisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc25kX3ByaW50ayhLRVJOX0VSUiAiT2ggbXksIHNvcnJ5LCBpdCdzIGV4dHJlbWVseSBiYWQhXG4iKTsKK11dPgorICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICAgIDwvaW5mb3JtYWxleGFtcGxlPgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlcmUgYXJlIGFsc28gPGZ1bmN0aW9uPnByaW50aygpPC9mdW5jdGlvbj4ncyBmb3IKKyAgICAgIGRlYnVnZ2luZy4gPGZ1bmN0aW9uPnNuZF9wcmludGQoKTwvZnVuY3Rpb24+IGNhbiBiZSB1c2VkIGZvcgorICAgICAgZ2VuZXJhbCBkZWJ1Z2dpbmcgcHVycG9zZXMuIElmCisgICAgICA8Y29uc3RhbnQ+Q09ORklHX1NORF9ERUJVRzwvY29uc3RhbnQ+IGlzIHNldCwgdGhpcyBmdW5jdGlvbiBpcworICAgICAgY29tcGlsZWQsIGFuZCB3b3JrcyBqdXN0IGxpa2UKKyAgICAgIDxmdW5jdGlvbj5zbmRfcHJpbnRrKCk8L2Z1bmN0aW9uPi4gSWYgdGhlIEFMU0EgaXMgY29tcGlsZWQKKyAgICAgIHdpdGhvdXQgdGhlIGRlYnVnZ2luZyBmbGFnLCBpdCdzIGlnbm9yZWQuIAorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgPGZ1bmN0aW9uPnNuZF9wcmludGRkKCk8L2Z1bmN0aW9uPiBpcyBjb21waWxlZCBpbiBvbmx5IHdoZW4KKyAgICAgIDxjb25zdGFudD5DT05GSUdfU05EX0RFQlVHX1ZFUkJPU0U8L2NvbnN0YW50PiBpcyBzZXQuIFBsZWFzZSBub3RlCisgICAgICB0aGF0IDxjb25zdGFudD5DT05GSUdfU05EX0RFQlVHX1ZFUkJPU0U8L2NvbnN0YW50PiBpcyBub3Qgc2V0IGFzIGRlZmF1bHQKKyAgICAgIGV2ZW4gaWYgeW91IGNvbmZpZ3VyZSB0aGUgYWxzYS1kcml2ZXIgd2l0aAorICAgICAgPG9wdGlvbj4tLXdpdGgtZGVidWc9ZnVsbDwvb3B0aW9uPiBvcHRpb24uIFlvdSBuZWVkIHRvIGdpdmUKKyAgICAgIGV4cGxpY2l0bHkgPG9wdGlvbj4tLXdpdGgtZGVidWc9ZGV0ZWN0PC9vcHRpb24+IG9wdGlvbiBpbnN0ZWFkLiAKKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0idXNlZnVsLWZ1bmN0aW9ucy1zbmQtYnVnIj4KKyAgICAgIDx0aXRsZT48ZnVuY3Rpb24+c25kX0JVRygpPC9mdW5jdGlvbj48L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIEl0IHNob3dzIHRoZSA8Y29tcHV0ZXJvdXRwdXQ+QlVHPzwvY29tcHV0ZXJvdXRwdXQ+IG1lc3NhZ2UgYW5kCisgICAgICBzdGFjayB0cmFjZSBhcyB3ZWxsIGFzIDxmdW5jdGlvbj5zbmRfQlVHX09OPC9mdW5jdGlvbj4gYXQgdGhlIHBvaW50LgorICAgICAgSXQncyB1c2VmdWwgdG8gc2hvdyB0aGF0IGEgZmF0YWwgZXJyb3IgaGFwcGVucyB0aGVyZS4gCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKwkgV2hlbiBubyBkZWJ1ZyBmbGFnIGlzIHNldCwgdGhpcyBtYWNybyBpcyBpZ25vcmVkLiAKKyAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0idXNlZnVsLWZ1bmN0aW9ucy1zbmQtYnVnLW9uIj4KKyAgICAgIDx0aXRsZT48ZnVuY3Rpb24+c25kX0JVR19PTigpPC9mdW5jdGlvbj48L3RpdGxlPgorICAgICAgPHBhcmE+CisgICAgICAgIDxmdW5jdGlvbj5zbmRfQlVHX09OKCk8L2Z1bmN0aW9uPiBtYWNybyBpcyBzaW1pbGFyIHdpdGgKKwk8ZnVuY3Rpb24+V0FSTl9PTigpPC9mdW5jdGlvbj4gbWFjcm8uIEZvciBleGFtcGxlLCAgCisKKyAgICAgICAgPGluZm9ybWFsZXhhbXBsZT4KKyAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+Cis8IVtDREFUQVsKKyAgc25kX0JVR19PTighcG9pbnRlcik7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworCW9yIGl0IGNhbiBiZSB1c2VkIGFzIHRoZSBjb25kaXRpb24sCisgICAgICAgIDxpbmZvcm1hbGV4YW1wbGU+CisgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgorPCFbQ0RBVEFbCisgIGlmIChzbmRfQlVHX09OKG5vbl96ZXJvX2lzX2J1ZykpCisgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CitdXT4KKyAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgICAgICA8L2luZm9ybWFsZXhhbXBsZT4KKworICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIG1hY3JvIHRha2VzIGFuIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gdG8gZXZhbHVhdGUuCisJV2hlbiA8Y29uc3RhbnQ+Q09ORklHX1NORF9ERUJVRzwvY29uc3RhbnQ+LCBpcyBzZXQsIGlmIHRoZQorCWV4cHJlc3Npb24gaXMgbm9uLXplcm8sIGl0IHNob3dzIHRoZSB3YXJuaW5nIG1lc3NhZ2Ugc3VjaCBhcworCTxjb21wdXRlcm91dHB1dD5CVUc/ICh4eHgpPC9jb21wdXRlcm91dHB1dD4KKwlub3JtYWxseSBmb2xsb3dlZCBieSBzdGFjayB0cmFjZS4KKworCUluIGJvdGggY2FzZXMgaXQgcmV0dXJucyB0aGUgZXZhbHVhdGVkIHZhbHVlLgorICAgICAgPC9wYXJhPgorCisgICAgPC9zZWN0aW9uPgorCisgIDwvY2hhcHRlcj4KKworCis8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT4KKzwhLS0gQWNrbm93bGVkZ21lbnRzICAtLT4KKzwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgorICA8Y2hhcHRlciBpZD0iYWNrbm93bGVkZ21lbnRzIj4KKyAgICA8dGl0bGU+QWNrbm93bGVkZ21lbnRzPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIEkgd291bGQgbGlrZSB0byB0aGFuayBQaGlsIEtlcnIgZm9yIGhpcyBoZWxwIGZvciBpbXByb3ZlbWVudCBhbmQKKyAgICAgIGNvcnJlY3Rpb25zIG9mIHRoaXMgZG9jdW1lbnQuIAorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICBLZXZpbiBDb25kZXIgcmVmb3JtYXR0ZWQgdGhlIG9yaWdpbmFsIHBsYWluLXRleHQgdG8gdGhlCisgICAgRG9jQm9vayBmb3JtYXQuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgIEdpdWxpYW5vIFBvY2hpbmkgY29ycmVjdGVkIHR5cG9zIGFuZCBjb250cmlidXRlZCB0aGUgZXhhbXBsZSBjb2RlcworICAgIGluIHRoZSBoYXJkd2FyZSBjb25zdHJhaW50cyBzZWN0aW9uLgorICAgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorPC9ib29rPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3dyaXRpbmdfbXVzYl9nbHVlX2xheWVyLnRtcGwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svd3JpdGluZ19tdXNiX2dsdWVfbGF5ZXIudG1wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzdlY2E3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3dyaXRpbmdfbXVzYl9nbHVlX2xheWVyLnRtcGwKQEAgLTAsMCArMSw4NzMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IURPQ1RZUEUgYm9vayBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBYTUwgVjQuMS4yLy9FTiIKKwkiaHR0cDovL3d3dy5vYXNpcy1vcGVuLm9yZy9kb2Nib29rL3htbC80LjEuMi9kb2Nib29reC5kdGQiIFtdPgorCis8Ym9vayBpZD0iV3JpdGluZy1NVVNCLUdsdWUtTGF5ZXIiPgorIDxib29raW5mbz4KKyAgPHRpdGxlPldyaXRpbmcgYW4gTVVTQiBHbHVlIExheWVyPC90aXRsZT4KKworICA8YXV0aG9yZ3JvdXA+CisgICA8YXV0aG9yPgorICAgIDxmaXJzdG5hbWU+QXBlbGV0ZTwvZmlyc3RuYW1lPgorICAgIDxzdXJuYW1lPlNla2V0ZWxpPC9zdXJuYW1lPgorICAgIDxhZmZpbGlhdGlvbj4KKyAgICAgPGFkZHJlc3M+CisgICAgICA8ZW1haWw+YXBlbGV0ZSBhdCBzZWtldGVsaS5uZXQ8L2VtYWlsPgorICAgICA8L2FkZHJlc3M+CisgICAgPC9hZmZpbGlhdGlvbj4KKyAgIDwvYXV0aG9yPgorICA8L2F1dGhvcmdyb3VwPgorCisgIDxjb3B5cmlnaHQ+CisgICA8eWVhcj4yMDE0PC95ZWFyPgorICAgPGhvbGRlcj5BcGVsZXRlIFNla2V0ZWxpPC9ob2xkZXI+CisgIDwvY29weXJpZ2h0PgorCisgIDxsZWdhbG5vdGljZT4KKyAgIDxwYXJhPgorICAgICBUaGlzIGRvY3VtZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKKyAgICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICAgVGhpcyBkb2N1bWVudGF0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorICAgICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkCisgICAgIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKyAgICAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICAgYWxvbmcgd2l0aCB0aGlzIGRvY3VtZW50YXRpb247IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKyAgICAgMDIxMTEtMTMwNyBVU0EKKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgIEZvciBtb3JlIGRldGFpbHMgc2VlIHRoZSBmaWxlIENPUFlJTkcgaW4gdGhlIExpbnV4IGtlcm5lbCBzb3VyY2UKKyAgICAgdHJlZS4KKyAgIDwvcGFyYT4KKyAgPC9sZWdhbG5vdGljZT4KKyA8L2Jvb2tpbmZvPgorCis8dG9jPjwvdG9jPgorCisgIDxjaGFwdGVyIGlkPSJpbnRyb2R1Y3Rpb24iPgorICAgIDx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgVGhlIExpbnV4IE1VU0Igc3Vic3lzdGVtIGlzIHBhcnQgb2YgdGhlIGxhcmdlciBMaW51eCBVU0IKKyAgICAgIHN1YnN5c3RlbS4gSXQgcHJvdmlkZXMgc3VwcG9ydCBmb3IgZW1iZWRkZWQgVVNCIERldmljZSBDb250cm9sbGVycworICAgICAgKFVEQykgdGhhdCBkbyBub3QgdXNlIFVuaXZlcnNhbCBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlIChVSENJKQorICAgICAgb3IgT3BlbiBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlIChPSENJKS4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBJbnN0ZWFkLCB0aGVzZSBlbWJlZGRlZCBVREMgcmVseSBvbiB0aGUgVVNCIE9uLXRoZS1HbyAoT1RHKQorICAgICAgc3BlY2lmaWNhdGlvbiB3aGljaCB0aGV5IGltcGxlbWVudCBhdCBsZWFzdCBwYXJ0aWFsbHkuIFRoZSBzaWxpY29uCisgICAgICByZWZlcmVuY2UgZGVzaWduIHVzZWQgaW4gbW9zdCBjYXNlcyBpcyB0aGUgTXVsdGlwb2ludCBVU0IKKyAgICAgIEhpZ2hzcGVlZCBEdWFsLVJvbGUgQ29udHJvbGxlciAoTVVTQiBIRFJDKSBmb3VuZCBpbiB0aGUgTWVudG9yCisgICAgICBHcmFwaGljcyBJbnZlbnRyYeKEoiBkZXNpZ24uCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgQXMgYSBzZWxmLXRhdWdodCBleGVyY2lzZSBJIGhhdmUgd3JpdHRlbiBhbiBNVVNCIGdsdWUgbGF5ZXIgZm9yCisgICAgICB0aGUgSW5nZW5pYyBKWjQ3NDAgU29DLCBtb2RlbGxlZCBhZnRlciB0aGUgbWFueSBNVVNCIGdsdWUgbGF5ZXJzCisgICAgICBpbiB0aGUga2VybmVsIHNvdXJjZSB0cmVlLiBUaGlzIGxheWVyIGNhbiBiZSBmb3VuZCBhdAorICAgICAgZHJpdmVycy91c2IvbXVzYi9qejQ3NDAuYy4gSW4gdGhpcyBkb2N1bWVudGF0aW9uIEkgd2lsbCB3YWxrCisgICAgICB0aHJvdWdoIHRoZSBiYXNpY3Mgb2YgdGhlIGp6NDc0MC5jIGdsdWUgbGF5ZXIsIGV4cGxhaW5pbmcgdGhlCisgICAgICBkaWZmZXJlbnQgcGllY2VzIGFuZCB3aGF0IG5lZWRzIHRvIGJlIGRvbmUgaW4gb3JkZXIgdG8gd3JpdGUgeW91cgorICAgICAgb3duIGRldmljZSBnbHVlIGxheWVyLgorICAgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJsaW51eC1tdXNiLWJhc2ljcyI+CisgICAgPHRpdGxlPkxpbnV4IE1VU0IgQmFzaWNzPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIFRvIGdldCBzdGFydGVkIG9uIHRoZSB0b3BpYywgcGxlYXNlIHJlYWQgVVNCIE9uLXRoZS1HbyBCYXNpY3MgKHNlZQorICAgICAgUmVzb3VyY2VzKSB3aGljaCBwcm92aWRlcyBhbiBpbnRyb2R1Y3Rpb24gb2YgVVNCIE9URyBvcGVyYXRpb24gYXQKKyAgICAgIHRoZSBoYXJkd2FyZSBsZXZlbC4gQSBjb3VwbGUgb2Ygd2lraSBwYWdlcyBieSBUZXhhcyBJbnN0cnVtZW50cworICAgICAgYW5kIEFuYWxvZyBEZXZpY2VzIGFsc28gcHJvdmlkZSBhbiBvdmVydmlldyBvZiB0aGUgTGludXgga2VybmVsCisgICAgICBNVVNCIGNvbmZpZ3VyYXRpb24sIGFsYmVpdCBmb2N1c2VkIG9uIHNvbWUgc3BlY2lmaWMgZGV2aWNlcworICAgICAgcHJvdmlkZWQgYnkgdGhlc2UgY29tcGFuaWVzLiBGaW5hbGx5LCBnZXR0aW5nIGFjcXVhaW50ZWQgd2l0aCB0aGUKKyAgICAgIFVTQiBzcGVjaWZpY2F0aW9uIGF0IFVTQiBob21lIHBhZ2UgbWF5IGNvbWUgaW4gaGFuZHksIHdpdGgKKyAgICAgIHByYWN0aWNhbCBpbnN0YW5jZSBwcm92aWRlZCB0aHJvdWdoIHRoZSBXcml0aW5nIFVTQiBEZXZpY2UgRHJpdmVycworICAgICAgZG9jdW1lbnRhdGlvbiAoYWdhaW4sIHNlZSBSZXNvdXJjZXMpLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIExpbnV4IFVTQiBzdGFjayBpcyBhIGxheWVyZWQgYXJjaGl0ZWN0dXJlIGluIHdoaWNoIHRoZSBNVVNCCisgICAgICBjb250cm9sbGVyIGhhcmR3YXJlIHNpdHMgYXQgdGhlIGxvd2VzdC4gVGhlIE1VU0IgY29udHJvbGxlciBkcml2ZXIKKyAgICAgIGFic3RyYWN0IHRoZSBNVVNCIGNvbnRyb2xsZXIgaGFyZHdhcmUgdG8gdGhlIExpbnV4IFVTQiBzdGFjay4KKyAgICA8L3BhcmE+CisgICAgPHByb2dyYW1saXN0aW5nPgorICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwgJmx0Oy0tLS0tLS0gZHJpdmVycy91c2IvZ2FkZ2V0CisgICAgICB8IExpbnV4IFVTQiBDb3JlIFN0YWNrIHwgJmx0Oy0tLS0tLS0gZHJpdmVycy91c2IvaG9zdAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8ICZsdDstLS0tLS0tIGRyaXZlcnMvdXNiL2NvcmUKKyAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICDirI0KKyAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgJmx0Oy0tLS0tLSBkcml2ZXJzL3VzYi9tdXNiL211c2JfZ2FkZ2V0LmMKKyAgICAgfCBNVVNCIENvbnRyb2xsZXIgZHJpdmVyIHwgJmx0Oy0tLS0tLSBkcml2ZXJzL3VzYi9tdXNiL211c2JfaG9zdC5jCisgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICZsdDstLS0tLS0gZHJpdmVycy91c2IvbXVzYi9tdXNiX2NvcmUuYworICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICDirI0KKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIHwgTVVTQiBQbGF0Zm9ybSBTcGVjaWZpYyBEcml2ZXIgfAorICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJmx0Oy0tIGRyaXZlcnMvdXNiL211c2Ivano0NzQwLmMKKyAgfCAgICAgICBha2EgJnF1b3Q7R2x1ZSBMYXllciZxdW90OyAgICAgICAgfAorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAg4qyNCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICB8ICAgTVVTQiBDb250cm9sbGVyIEhhcmR3YXJlICAgIHwKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICA8cGFyYT4KKyAgICAgIEFzIG91dGxpbmVkIGFib3ZlLCB0aGUgZ2x1ZSBsYXllciBpcyBhY3R1YWxseSB0aGUgcGxhdGZvcm0KKyAgICAgIHNwZWNpZmljIGNvZGUgc2l0dGluZyBpbiBiZXR3ZWVuIHRoZSBjb250cm9sbGVyIGRyaXZlciBhbmQgdGhlCisgICAgICBjb250cm9sbGVyIGhhcmR3YXJlLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIEp1c3QgbGlrZSBhIExpbnV4IFVTQiBkcml2ZXIgbmVlZHMgdG8gcmVnaXN0ZXIgaXRzZWxmIHdpdGggdGhlCisgICAgICBMaW51eCBVU0Igc3Vic3lzdGVtLCB0aGUgTVVTQiBnbHVlIGxheWVyIG5lZWRzIGZpcnN0IHRvIHJlZ2lzdGVyCisgICAgICBpdHNlbGYgd2l0aCB0aGUgTVVTQiBjb250cm9sbGVyIGRyaXZlci4gVGhpcyB3aWxsIGFsbG93IHRoZQorICAgICAgY29udHJvbGxlciBkcml2ZXIgdG8ga25vdyBhYm91dCB3aGljaCBkZXZpY2UgdGhlIGdsdWUgbGF5ZXIKKyAgICAgIHN1cHBvcnRzIGFuZCB3aGljaCBmdW5jdGlvbnMgdG8gY2FsbCB3aGVuIGEgc3VwcG9ydGVkIGRldmljZSBpcworICAgICAgZGV0ZWN0ZWQgb3IgcmVsZWFzZWQ7IHJlbWVtYmVyIHdlIGFyZSB0YWxraW5nIGFib3V0IGFuIGVtYmVkZGVkCisgICAgICBjb250cm9sbGVyIGNoaXAgaGVyZSwgc28gbm8gaW5zZXJ0aW9uIG9yIHJlbW92YWwgYXQgcnVuLXRpbWUuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgQWxsIG9mIHRoaXMgaW5mb3JtYXRpb24gaXMgcGFzc2VkIHRvIHRoZSBNVVNCIGNvbnRyb2xsZXIgZHJpdmVyCisgICAgICB0aHJvdWdoIGEgcGxhdGZvcm1fZHJpdmVyIHN0cnVjdHVyZSBkZWZpbmVkIGluIHRoZSBnbHVlIGxheWVyIGFzOgorICAgIDwvcGFyYT4KKyAgICA8cHJvZ3JhbWxpc3RpbmcgbGluZW51bWJlcmluZz0ibnVtYmVyZWQiPgorc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgano0NzQwX2RyaXZlciA9IHsKKwkucHJvYmUJCT0gano0NzQwX3Byb2JlLAorCS5yZW1vdmUJCT0gano0NzQwX3JlbW92ZSwKKwkuZHJpdmVyCQk9IHsKKwkJLm5hbWUJPSAibXVzYi1qejQ3NDAiLAorCX0sCit9OworICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPHBhcmE+CisgICAgICBUaGUgcHJvYmUgYW5kIHJlbW92ZSBmdW5jdGlvbiBwb2ludGVycyBhcmUgY2FsbGVkIHdoZW4gYSBtYXRjaGluZworICAgICAgZGV2aWNlIGlzIGRldGVjdGVkIGFuZCwgcmVzcGVjdGl2ZWx5LCByZWxlYXNlZC4gVGhlIG5hbWUgc3RyaW5nCisgICAgICBkZXNjcmliZXMgdGhlIGRldmljZSBzdXBwb3J0ZWQgYnkgdGhpcyBnbHVlIGxheWVyLiBJbiB0aGUgY3VycmVudAorICAgICAgY2FzZSBpdCBtYXRjaGVzIGEgcGxhdGZvcm1fZGV2aWNlIHN0cnVjdHVyZSBkZWNsYXJlZCBpbgorICAgICAgYXJjaC9taXBzL2p6NDc0MC9wbGF0Zm9ybS5jLiBOb3RlIHRoYXQgd2UgYXJlIG5vdCB1c2luZyBkZXZpY2UKKyAgICAgIHRyZWUgYmluZGluZ3MgaGVyZS4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBJbiBvcmRlciB0byByZWdpc3RlciBpdHNlbGYgdG8gdGhlIGNvbnRyb2xsZXIgZHJpdmVyLCB0aGUgZ2x1ZQorICAgICAgbGF5ZXIgZ29lcyB0aHJvdWdoIGEgZmV3IHN0ZXBzLCBiYXNpY2FsbHkgYWxsb2NhdGluZyB0aGUKKyAgICAgIGNvbnRyb2xsZXIgaGFyZHdhcmUgcmVzb3VyY2VzIGFuZCBpbml0aWFsaXNpbmcgYSBjb3VwbGUgb2YKKyAgICAgIGNpcmN1aXRzLiBUbyBkbyBzbywgaXQgbmVlZHMgdG8ga2VlcCB0cmFjayBvZiB0aGUgaW5mb3JtYXRpb24gdXNlZAorICAgICAgdGhyb3VnaG91dCB0aGVzZSBzdGVwcy4gVGhpcyBpcyBkb25lIGJ5IGRlZmluaW5nIGEgcHJpdmF0ZQorICAgICAgano0NzQwX2dsdWUgc3RydWN0dXJlOgorICAgIDwvcGFyYT4KKyAgICA8cHJvZ3JhbWxpc3RpbmcgbGluZW51bWJlcmluZz0ibnVtYmVyZWQiPgorc3RydWN0IGp6NDc0MF9nbHVlIHsKKwlzdHJ1Y3QgZGV2aWNlICAgICAgICAgICAqZGV2OworCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgICptdXNiOworCXN0cnVjdCBjbGsJCSpjbGs7Cit9OworICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPHBhcmE+CisgICAgICBUaGUgZGV2IGFuZCBtdXNiIG1lbWJlcnMgYXJlIGJvdGggZGV2aWNlIHN0cnVjdHVyZSB2YXJpYWJsZXMuIFRoZQorICAgICAgZmlyc3Qgb25lIGhvbGRzIGdlbmVyaWMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRldmljZSwgc2luY2UgaXQncworICAgICAgdGhlIGJhc2ljIGRldmljZSBzdHJ1Y3R1cmUsIGFuZCB0aGUgbGF0dGVyIGhvbGRzIGluZm9ybWF0aW9uIG1vcmUKKyAgICAgIGNsb3NlbHkgcmVsYXRlZCB0byB0aGUgc3Vic3lzdGVtIHRoZSBkZXZpY2UgaXMgcmVnaXN0ZXJlZCB0by4gVGhlCisgICAgICBjbGsgdmFyaWFibGUga2VlcHMgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgZGV2aWNlIGNsb2NrCisgICAgICBvcGVyYXRpb24uCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgTGV0J3MgZ28gdGhyb3VnaCB0aGUgc3RlcHMgb2YgdGhlIHByb2JlIGZ1bmN0aW9uIHRoYXQgbGVhZHMgdGhlCisgICAgICBnbHVlIGxheWVyIHRvIHJlZ2lzdGVyIGl0c2VsZiB0byB0aGUgY29udHJvbGxlciBkcml2ZXIuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgTi5CLjogRm9yIHRoZSBzYWtlIG9mIHJlYWRhYmlsaXR5IGVhY2ggZnVuY3Rpb24gd2lsbCBiZSBzcGxpdCBpbgorICAgICAgbG9naWNhbCBwYXJ0cywgZWFjaCBwYXJ0IGJlaW5nIHNob3duIGFzIGlmIGl0IHdhcyBpbmRlcGVuZGVudCBmcm9tCisgICAgICB0aGUgb3RoZXJzLgorICAgIDwvcGFyYT4KKyAgICA8cHJvZ3JhbWxpc3RpbmcgbGluZW51bWJlcmluZz0ibnVtYmVyZWQiPgorc3RhdGljIGludCBqejQ3NDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlCQkqbXVzYjsKKwlzdHJ1Y3Qgano0NzQwX2dsdWUJCSpnbHVlOworCXN0cnVjdCBjbGsgICAgICAgICAgICAgICAgICAgICAgKmNsazsKKwlpbnQJCQkJcmV0OworCisJZ2x1ZSA9IGRldm1fa3phbGxvYygmYW1wO3BkZXYtPmRldiwgc2l6ZW9mKCpnbHVlKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFnbHVlKQorCQlyZXR1cm4gLUVOT01FTTsKKworCW11c2IgPSBwbGF0Zm9ybV9kZXZpY2VfYWxsb2MoIm11c2ItaGRyYyIsIFBMQVRGT1JNX0RFVklEX0FVVE8pOworCWlmICghbXVzYikgeworCQlkZXZfZXJyKCZhbXA7cGRldi0+ZGV2LCAiZmFpbGVkIHRvIGFsbG9jYXRlIG11c2IgZGV2aWNlXG4iKTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJY2xrID0gZGV2bV9jbGtfZ2V0KCZhbXA7cGRldi0+ZGV2LCAidWRjIik7CisJaWYgKElTX0VSUihjbGspKSB7CisJCWRldl9lcnIoJmFtcDtwZGV2LT5kZXYsICJmYWlsZWQgdG8gZ2V0IGNsb2NrXG4iKTsKKwkJcmV0ID0gUFRSX0VSUihjbGspOworCQlnb3RvIGVycl9wbGF0Zm9ybV9kZXZpY2VfcHV0OworCX0KKworCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShjbGspOworCWlmIChyZXQpIHsKKwkJZGV2X2VycigmYW1wO3BkZXYtPmRldiwgImZhaWxlZCB0byBlbmFibGUgY2xvY2tcbiIpOworCQlnb3RvIGVycl9wbGF0Zm9ybV9kZXZpY2VfcHV0OworCX0KKworCW11c2ItPmRldi5wYXJlbnQJCT0gJmFtcDtwZGV2LT5kZXY7CisKKwlnbHVlLT5kZXYJCQk9ICZhbXA7cGRldi0+ZGV2OworCWdsdWUtPm11c2IJCQk9IG11c2I7CisJZ2x1ZS0+Y2xrCQkJPSBjbGs7CisKKwlyZXR1cm4gMDsKKworZXJyX3BsYXRmb3JtX2RldmljZV9wdXQ6CisJcGxhdGZvcm1fZGV2aWNlX3B1dChtdXNiKTsKKwlyZXR1cm4gcmV0OworfQorICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPHBhcmE+CisgICAgICBUaGUgZmlyc3QgZmV3IGxpbmVzIG9mIHRoZSBwcm9iZSBmdW5jdGlvbiBhbGxvY2F0ZSBhbmQgYXNzaWduIHRoZQorICAgICAgZ2x1ZSwgbXVzYiBhbmQgY2xrIHZhcmlhYmxlcy4gVGhlIEdGUF9LRVJORUwgZmxhZyAobGluZSA4KSBhbGxvd3MKKyAgICAgIHRoZSBhbGxvY2F0aW9uIHByb2Nlc3MgdG8gc2xlZXAgYW5kIHdhaXQgZm9yIG1lbW9yeSwgdGh1cyBiZWluZworICAgICAgdXNhYmxlIGluIGEgYmxvY2tpbmcgc2l0dWF0aW9uLiBUaGUgUExBVEZPUk1fREVWSURfQVVUTyBmbGFnIChsaW5lCisgICAgICAxMikgYWxsb3dzIGF1dG9tYXRpYyBhbGxvY2F0aW9uIGFuZCBtYW5hZ2VtZW50IG9mIGRldmljZSBJRHMgaW4KKyAgICAgIG9yZGVyIHRvIGF2b2lkIGRldmljZSBuYW1lc3BhY2UgY29sbGlzaW9ucyB3aXRoIGV4cGxpY2l0IElEcy4gV2l0aAorICAgICAgZGV2bV9jbGtfZ2V0KCkgKGxpbmUgMTgpIHRoZSBnbHVlIGxheWVyIGFsbG9jYXRlcyB0aGUgY2xvY2sgLS0gdGhlCisgICAgICA8bGl0ZXJhbD5kZXZtXzwvbGl0ZXJhbD4gcHJlZml4IGluZGljYXRlcyB0aGF0IGNsa19nZXQoKSBpcworICAgICAgbWFuYWdlZDogaXQgYXV0b21hdGljYWxseSBmcmVlcyB0aGUgYWxsb2NhdGVkIGNsb2NrIHJlc291cmNlIGRhdGEKKyAgICAgIHdoZW4gdGhlIGRldmljZSBpcyByZWxlYXNlZCAtLSBhbmQgZW5hYmxlIGl0LgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIFRoZW4gY29tZXMgdGhlIHJlZ2lzdHJhdGlvbiBzdGVwczoKKyAgICA8L3BhcmE+CisgICAgPHByb2dyYW1saXN0aW5nIGxpbmVudW1iZXJpbmc9Im51bWJlcmVkIj4KK3N0YXRpYyBpbnQgano0NzQwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IG11c2JfaGRyY19wbGF0Zm9ybV9kYXRhCSpwZGF0YSA9ICZhbXA7ano0NzQwX211c2JfcGxhdGZvcm1fZGF0YTsKKworCXBkYXRhLT5wbGF0Zm9ybV9vcHMJCT0gJmFtcDtqejQ3NDBfbXVzYl9vcHM7CisKKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBnbHVlKTsKKworCXJldCA9IHBsYXRmb3JtX2RldmljZV9hZGRfcmVzb3VyY2VzKG11c2IsIHBkZXYtPnJlc291cmNlLAorCQkJCQkgICAgcGRldi0+bnVtX3Jlc291cmNlcyk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKCZhbXA7cGRldi0+ZGV2LCAiZmFpbGVkIHRvIGFkZCByZXNvdXJjZXNcbiIpOworCQlnb3RvIGVycl9jbGtfZGlzYWJsZTsKKwl9CisKKwlyZXQgPSBwbGF0Zm9ybV9kZXZpY2VfYWRkX2RhdGEobXVzYiwgcGRhdGEsIHNpemVvZigqcGRhdGEpKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoJmFtcDtwZGV2LT5kZXYsICJmYWlsZWQgdG8gYWRkIHBsYXRmb3JtX2RhdGFcbiIpOworCQlnb3RvIGVycl9jbGtfZGlzYWJsZTsKKwl9CisKKwlyZXR1cm4gMDsKKworZXJyX2Nsa19kaXNhYmxlOgorCWNsa19kaXNhYmxlX3VucHJlcGFyZShjbGspOworZXJyX3BsYXRmb3JtX2RldmljZV9wdXQ6CisJcGxhdGZvcm1fZGV2aWNlX3B1dChtdXNiKTsKKwlyZXR1cm4gcmV0OworfQorICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPHBhcmE+CisgICAgICBUaGUgZmlyc3Qgc3RlcCBpcyB0byBwYXNzIHRoZSBkZXZpY2UgZGF0YSBwcml2YXRlbHkgaGVsZCBieSB0aGUKKyAgICAgIGdsdWUgbGF5ZXIgb24gdG8gdGhlIGNvbnRyb2xsZXIgZHJpdmVyIHRocm91Z2gKKyAgICAgIHBsYXRmb3JtX3NldF9kcnZkYXRhKCkgKGxpbmUgNykuIE5leHQgaXMgcGFzc2luZyBvbiB0aGUgZGV2aWNlCisgICAgICByZXNvdXJjZXMgaW5mb3JtYXRpb24sIGFsc28gcHJpdmF0ZWx5IGhlbGQgYXQgdGhhdCBwb2ludCwgdGhyb3VnaAorICAgICAgcGxhdGZvcm1fZGV2aWNlX2FkZF9yZXNvdXJjZXMoKSAobGluZSA5KS4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBGaW5hbGx5IGNvbWVzIHBhc3Npbmcgb24gdGhlIHBsYXRmb3JtIHNwZWNpZmljIGRhdGEgdG8gdGhlCisgICAgICBjb250cm9sbGVyIGRyaXZlciAobGluZSAxNikuIFBsYXRmb3JtIGRhdGEgd2lsbCBiZSBkaXNjdXNzZWQgaW4KKyAgICAgIDxsaW5rIGxpbmtlbmQ9ImRldmljZS1wbGF0Zm9ybS1kYXRhIj5DaGFwdGVyIDQ8L2xpbms+LCBidXQgaGVyZQorICAgICAgd2UgYXJlIGxvb2tpbmcgYXQgdGhlIHBsYXRmb3JtX29wcyBmdW5jdGlvbiBwb2ludGVyIChsaW5lIDUpIGluCisgICAgICBtdXNiX2hkcmNfcGxhdGZvcm1fZGF0YSBzdHJ1Y3R1cmUgKGxpbmUgMykuICBUaGlzIGZ1bmN0aW9uCisgICAgICBwb2ludGVyIGFsbG93cyB0aGUgTVVTQiBjb250cm9sbGVyIGRyaXZlciB0byBrbm93IHdoaWNoIGZ1bmN0aW9uCisgICAgICB0byBjYWxsIGZvciBkZXZpY2Ugb3BlcmF0aW9uOgorICAgIDwvcGFyYT4KKyAgICA8cHJvZ3JhbWxpc3RpbmcgbGluZW51bWJlcmluZz0ibnVtYmVyZWQiPgorc3RhdGljIGNvbnN0IHN0cnVjdCBtdXNiX3BsYXRmb3JtX29wcyBqejQ3NDBfbXVzYl9vcHMgPSB7CisJLmluaXQJCT0gano0NzQwX211c2JfaW5pdCwKKwkuZXhpdAkJPSBqejQ3NDBfbXVzYl9leGl0LAorfTsKKyAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgIDxwYXJhPgorICAgICAgSGVyZSB3ZSBoYXZlIHRoZSBtaW5pbWFsIGNhc2Ugd2hlcmUgb25seSBpbml0IGFuZCBleGl0IGZ1bmN0aW9ucworICAgICAgYXJlIGNhbGxlZCBieSB0aGUgY29udHJvbGxlciBkcml2ZXIgd2hlbiBuZWVkZWQuIEZhY3QgaXMgdGhlCisgICAgICBKWjQ3NDAgTVVTQiBjb250cm9sbGVyIGlzIGEgYmFzaWMgY29udHJvbGxlciwgbGFja2luZyBzb21lCisgICAgICBmZWF0dXJlcyBmb3VuZCBpbiBvdGhlciBjb250cm9sbGVycywgb3RoZXJ3aXNlIHdlIG1heSBhbHNvIGhhdmUKKyAgICAgIHBvaW50ZXJzIHRvIGEgZmV3IG90aGVyIGZ1bmN0aW9ucyBsaWtlIGEgcG93ZXIgbWFuYWdlbWVudCBmdW5jdGlvbgorICAgICAgb3IgYSBmdW5jdGlvbiB0byBzd2l0Y2ggYmV0d2VlbiBPVEcgYW5kIG5vbi1PVEcgbW9kZXMsIGZvcgorICAgICAgaW5zdGFuY2UuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgQXQgdGhhdCBwb2ludCBvZiB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MsIHRoZSBjb250cm9sbGVyIGRyaXZlcgorICAgICAgYWN0dWFsbHkgY2FsbHMgdGhlIGluaXQgZnVuY3Rpb246CisgICAgPC9wYXJhPgorICAgIDxwcm9ncmFtbGlzdGluZyBsaW5lbnVtYmVyaW5nPSJudW1iZXJlZCI+CitzdGF0aWMgaW50IGp6NDc0MF9tdXNiX2luaXQoc3RydWN0IG11c2IgKm11c2IpCit7CisJbXVzYi0+eGNlaXYgPSB1c2JfZ2V0X3BoeShVU0JfUEhZX1RZUEVfVVNCMik7CisJaWYgKCFtdXNiLT54Y2VpdikgeworCQlwcl9lcnIoIkhTIFVEQzogbm8gdHJhbnNjZWl2ZXIgY29uZmlndXJlZFxuIik7CisJCXJldHVybiAtRU5PREVWOworCX0KKworCS8qIFNpbGljb24gZG9lcyBub3QgaW1wbGVtZW50IENvbmZpZ0RhdGEgcmVnaXN0ZXIuCisJICogU2V0IGR5bl9maWZvIHRvIGF2b2lkIHJlYWRpbmcgRVAgY29uZmlnIGZyb20gaGFyZHdhcmUuCisJICovCisJbXVzYi0+ZHluX2ZpZm8gPSB0cnVlOworCisJbXVzYi0+aXNyID0gano0NzQwX211c2JfaW50ZXJydXB0OworCisJcmV0dXJuIDA7Cit9CisgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICA8cGFyYT4KKyAgICAgIFRoZSBnb2FsIG9mIGp6NDc0MF9tdXNiX2luaXQoKSBpcyB0byBnZXQgaG9sZCBvZiB0aGUgdHJhbnNjZWl2ZXIKKyAgICAgIGRyaXZlciBkYXRhIG9mIHRoZSBNVVNCIGNvbnRyb2xsZXIgaGFyZHdhcmUgYW5kIHBhc3MgaXQgb24gdG8gdGhlCisgICAgICBNVVNCIGNvbnRyb2xsZXIgZHJpdmVyLCBhcyB1c3VhbC4gVGhlIHRyYW5zY2VpdmVyIGlzIHRoZSBjaXJjdWl0cnkKKyAgICAgIGluc2lkZSB0aGUgY29udHJvbGxlciBoYXJkd2FyZSByZXNwb25zaWJsZSBmb3Igc2VuZGluZy9yZWNlaXZpbmcKKyAgICAgIHRoZSBVU0IgZGF0YS4gU2luY2UgaXQgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIHBoeXNpY2FsIGxheWVyCisgICAgICBvZiB0aGUgT1NJIG1vZGVsLCB0aGUgdHJhbnNjZWl2ZXIgaXMgYWxzbyByZWZlcnJlZCB0byBhcyBQSFkuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgR2V0dGluZyBob2xkIG9mIHRoZSBNVVNCIFBIWSBkcml2ZXIgZGF0YSBpcyBkb25lIHdpdGgKKyAgICAgIHVzYl9nZXRfcGh5KCkgd2hpY2ggcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHN0cnVjdHVyZQorICAgICAgY29udGFpbmluZyB0aGUgZHJpdmVyIGluc3RhbmNlIGRhdGEuIFRoZSBuZXh0IGNvdXBsZSBvZgorICAgICAgaW5zdHJ1Y3Rpb25zIChsaW5lIDEyIGFuZCAxNCkgYXJlIHVzZWQgYXMgYSBxdWlyayBhbmQgdG8gc2V0dXAKKyAgICAgIElSUSBoYW5kbGluZyByZXNwZWN0aXZlbHkuIFF1aXJrcyBhbmQgSVJRIGhhbmRsaW5nIHdpbGwgYmUKKyAgICAgIGRpc2N1c3NlZCBsYXRlciBpbiA8bGluayBsaW5rZW5kPSJkZXZpY2UtcXVpcmtzIj5DaGFwdGVyCisgICAgICA1PC9saW5rPiBhbmQgPGxpbmsgbGlua2VuZD0iaGFuZGxpbmctaXJxcyI+Q2hhcHRlciAzPC9saW5rPi4KKyAgICA8L3BhcmE+CisgICAgPHByb2dyYW1saXN0aW5nIGxpbmVudW1iZXJpbmc9Im51bWJlcmVkIj4KK3N0YXRpYyBpbnQgano0NzQwX211c2JfZXhpdChzdHJ1Y3QgbXVzYiAqbXVzYikKK3sKKwl1c2JfcHV0X3BoeShtdXNiLT54Y2Vpdik7CisKKwlyZXR1cm4gMDsKK30KKyAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgIDxwYXJhPgorICAgICAgQWN0aW5nIGFzIHRoZSBjb3VudGVycGFydCBvZiBpbml0LCB0aGUgZXhpdCBmdW5jdGlvbiByZWxlYXNlcyB0aGUKKyAgICAgIE1VU0IgUEhZIGRyaXZlciB3aGVuIHRoZSBjb250cm9sbGVyIGhhcmR3YXJlIGl0c2VsZiBpcyBhYm91dCB0byBiZQorICAgICAgcmVsZWFzZWQuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgQWdhaW4sIG5vdGUgdGhhdCBpbml0IGFuZCBleGl0IGFyZSBmYWlybHkgc2ltcGxlIGluIHRoaXMgY2FzZSBkdWUKKyAgICAgIHRvIHRoZSBiYXNpYyBzZXQgb2YgZmVhdHVyZXMgb2YgdGhlIEpaNDc0MCBjb250cm9sbGVyIGhhcmR3YXJlLgorICAgICAgV2hlbiB3cml0aW5nIGFuIG11c2IgZ2x1ZSBsYXllciBmb3IgYSBtb3JlIGNvbXBsZXggY29udHJvbGxlcgorICAgICAgaGFyZHdhcmUsIHlvdSBtaWdodCBuZWVkIHRvIHRha2UgY2FyZSBvZiBtb3JlIHByb2Nlc3NpbmcgaW4gdGhvc2UKKyAgICAgIHR3byBmdW5jdGlvbnMuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgUmV0dXJuaW5nIGZyb20gdGhlIGluaXQgZnVuY3Rpb24sIHRoZSBNVVNCIGNvbnRyb2xsZXIgZHJpdmVyIGp1bXBzCisgICAgICBiYWNrIGludG8gdGhlIHByb2JlIGZ1bmN0aW9uOgorICAgIDwvcGFyYT4KKyAgICA8cHJvZ3JhbWxpc3RpbmcgbGluZW51bWJlcmluZz0ibnVtYmVyZWQiPgorc3RhdGljIGludCBqejQ3NDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlyZXQgPSBwbGF0Zm9ybV9kZXZpY2VfYWRkKG11c2IpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycigmYW1wO3BkZXYtPmRldiwgImZhaWxlZCB0byByZWdpc3RlciBtdXNiIGRldmljZVxuIik7CisJCWdvdG8gZXJyX2Nsa19kaXNhYmxlOworCX0KKworCXJldHVybiAwOworCitlcnJfY2xrX2Rpc2FibGU6CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGNsayk7CitlcnJfcGxhdGZvcm1fZGV2aWNlX3B1dDoKKwlwbGF0Zm9ybV9kZXZpY2VfcHV0KG11c2IpOworCXJldHVybiByZXQ7Cit9CisgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICA8cGFyYT4KKyAgICAgIFRoaXMgaXMgdGhlIGxhc3QgcGFydCBvZiB0aGUgZGV2aWNlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIHdoZXJlIHRoZQorICAgICAgZ2x1ZSBsYXllciBhZGRzIHRoZSBjb250cm9sbGVyIGhhcmR3YXJlIGRldmljZSB0byBMaW51eCBrZXJuZWwKKyAgICAgIGRldmljZSBoaWVyYXJjaHk6IGF0IHRoaXMgc3RhZ2UsIGFsbCBrbm93biBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAgICAgIGRldmljZSBpcyBwYXNzZWQgb24gdG8gdGhlIExpbnV4IFVTQiBjb3JlIHN0YWNrLgorICAgIDwvcGFyYT4KKyAgICA8cHJvZ3JhbWxpc3RpbmcgbGluZW51bWJlcmluZz0ibnVtYmVyZWQiPgorc3RhdGljIGludCBqejQ3NDBfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGp6NDc0MF9nbHVlCSpnbHVlID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CisKKwlwbGF0Zm9ybV9kZXZpY2VfdW5yZWdpc3RlcihnbHVlLT5tdXNiKTsKKwljbGtfZGlzYWJsZV91bnByZXBhcmUoZ2x1ZS0+Y2xrKTsKKworCXJldHVybiAwOworfQorICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPHBhcmE+CisgICAgICBBY3RpbmcgYXMgdGhlIGNvdW50ZXJwYXJ0IG9mIHByb2JlLCB0aGUgcmVtb3ZlIGZ1bmN0aW9uIHVucmVnaXN0ZXIKKyAgICAgIHRoZSBNVVNCIGNvbnRyb2xsZXIgaGFyZHdhcmUgKGxpbmUgNSkgYW5kIGRpc2FibGUgdGhlIGNsb2NrIChsaW5lCisgICAgICA2KSwgYWxsb3dpbmcgaXQgdG8gYmUgZ2F0ZWQuCisgICAgPC9wYXJhPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImhhbmRsaW5nLWlycXMiPgorICAgIDx0aXRsZT5IYW5kbGluZyBJUlFzPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIEFkZGl0aW9uYWxseSB0byB0aGUgTVVTQiBjb250cm9sbGVyIGhhcmR3YXJlIGJhc2ljIHNldHVwIGFuZAorICAgICAgcmVnaXN0cmF0aW9uLCB0aGUgZ2x1ZSBsYXllciBpcyBhbHNvIHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUKKyAgICAgIElSUXM6CisgICAgPC9wYXJhPgorICAgIDxwcm9ncmFtbGlzdGluZyBsaW5lbnVtYmVyaW5nPSJudW1iZXJlZCI+CitzdGF0aWMgaXJxcmV0dXJuX3Qgano0NzQwX211c2JfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKl9faGNpKQoreworCXVuc2lnbmVkIGxvbmcgICBmbGFnczsKKwlpcnFyZXR1cm5fdCAgICAgcmV0dmFsID0gSVJRX05PTkU7CisJc3RydWN0IG11c2IgICAgICptdXNiID0gX19oY2k7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO211c2ItPmxvY2ssIGZsYWdzKTsKKworCW11c2ItPmludF91c2IgPSBtdXNiX3JlYWRiKG11c2ItPm1yZWdzLCBNVVNCX0lOVFJVU0IpOworCW11c2ItPmludF90eCA9IG11c2JfcmVhZHcobXVzYi0+bXJlZ3MsIE1VU0JfSU5UUlRYKTsKKwltdXNiLT5pbnRfcnggPSBtdXNiX3JlYWR3KG11c2ItPm1yZWdzLCBNVVNCX0lOVFJSWCk7CisKKwkvKgorCSAqIFRoZSBjb250cm9sbGVyIGlzIGdhZGdldCBvbmx5LCB0aGUgc3RhdGUgb2YgdGhlIGhvc3QgbW9kZSBJUlEgYml0cyBpcworCSAqIHVuZGVmaW5lZC4gTWFzayB0aGVtIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBtdXNiIGRyaXZlciBjb3JlIHdpbGwKKwkgKiBuZXZlciBzZWUgdGhlbSBzZXQKKwkgKi8KKwltdXNiLT5pbnRfdXNiICZhbXA7PSBNVVNCX0lOVFJfU1VTUEVORCB8IE1VU0JfSU5UUl9SRVNVTUUgfAorCSAgICBNVVNCX0lOVFJfUkVTRVQgfCBNVVNCX0lOVFJfU09GOworCisJaWYgKG11c2ItPmludF91c2IgfHwgbXVzYi0+aW50X3R4IHx8IG11c2ItPmludF9yeCkKKwkJcmV0dmFsID0gbXVzYl9pbnRlcnJ1cHQobXVzYik7CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7bXVzYi0+bG9jaywgZmxhZ3MpOworCisJcmV0dXJuIHJldHZhbDsKK30KKyAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgIDxwYXJhPgorICAgICAgSGVyZSB0aGUgZ2x1ZSBsYXllciBtb3N0bHkgaGFzIHRvIHJlYWQgdGhlIHJlbGV2YW50IGhhcmR3YXJlCisgICAgICByZWdpc3RlcnMgYW5kIHBhc3MgdGhlaXIgdmFsdWVzIG9uIHRvIHRoZSBjb250cm9sbGVyIGRyaXZlciB3aGljaAorICAgICAgd2lsbCBoYW5kbGUgdGhlIGFjdHVhbCBldmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgSVJRLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIFRoZSBpbnRlcnJ1cHQgaGFuZGxlciBjcml0aWNhbCBzZWN0aW9uIGlzIHByb3RlY3RlZCBieSB0aGUKKyAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCkgYW5kIGNvdW50ZXJwYXJ0IHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoKQorICAgICAgZnVuY3Rpb25zIChsaW5lIDcgYW5kIDI0IHJlc3BlY3RpdmVseSksIHdoaWNoIHByZXZlbnQgdGhlCisgICAgICBpbnRlcnJ1cHQgaGFuZGxlciBjb2RlIHRvIGJlIHJ1biBieSB0d28gZGlmZmVyZW50IHRocmVhZHMgYXQgdGhlCisgICAgICBzYW1lIHRpbWUuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgVGhlbiB0aGUgcmVsZXZhbnQgaW50ZXJydXB0IHJlZ2lzdGVycyBhcmUgcmVhZCAobGluZSA5IHRvIDExKToKKyAgICA8L3BhcmE+CisgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgTVVTQl9JTlRSVVNCOiBpbmRpY2F0ZXMgd2hpY2ggVVNCIGludGVycnVwdHMgYXJlIGN1cnJlbnRseQorICAgICAgICAgIGFjdGl2ZSwKKyAgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgTVVTQl9JTlRSVFg6IGluZGljYXRlcyB3aGljaCBvZiB0aGUgaW50ZXJydXB0cyBmb3IgVFgKKyAgICAgICAgICBlbmRwb2ludHMgYXJlIGN1cnJlbnRseSBhY3RpdmUsCisgICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgIE1VU0JfSU5UUlJYOiBpbmRpY2F0ZXMgd2hpY2ggb2YgdGhlIGludGVycnVwdHMgZm9yIFRYCisgICAgICAgICAgZW5kcG9pbnRzIGFyZSBjdXJyZW50bHkgYWN0aXZlLgorICAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgIDxwYXJhPgorICAgICAgTm90ZSB0aGF0IG11c2JfcmVhZGIoKSBpcyB1c2VkIHRvIHJlYWQgOC1iaXQgcmVnaXN0ZXJzIGF0IG1vc3QsCisgICAgICB3aGlsZSBtdXNiX3JlYWR3KCkgYWxsb3dzIHVzIHRvIHJlYWQgYXQgbW9zdCAxNi1iaXQgcmVnaXN0ZXJzLgorICAgICAgVGhlcmUgYXJlIG90aGVyIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIGRlcGVuZGluZyBvbiB0aGUgc2l6ZQorICAgICAgb2YgeW91ciBkZXZpY2UgcmVnaXN0ZXJzLiBTZWUgbXVzYl9pby5oIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIEluc3RydWN0aW9uIG9uIGxpbmUgMTggaXMgYW5vdGhlciBxdWlyayBzcGVjaWZpYyB0byB0aGUgSlo0NzQwCisgICAgICBVU0IgZGV2aWNlIGNvbnRyb2xsZXIsIHdoaWNoIHdpbGwgYmUgZGlzY3Vzc2VkIGxhdGVyIGluIDxsaW5rCisgICAgICBsaW5rZW5kPSJkZXZpY2UtcXVpcmtzIj5DaGFwdGVyIDU8L2xpbms+LgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIFRoZSBnbHVlIGxheWVyIHN0aWxsIG5lZWRzIHRvIHJlZ2lzdGVyIHRoZSBJUlEgaGFuZGxlciB0aG91Z2guCisgICAgICBSZW1lbWJlciB0aGUgaW5zdHJ1Y3Rpb24gb24gbGluZSAxNCBvZiB0aGUgaW5pdCBmdW5jdGlvbjoKKyAgICA8L3BhcmE+CisgICAgPHByb2dyYW1saXN0aW5nIGxpbmVudW1iZXJpbmc9Im51bWJlcmVkIj4KK3N0YXRpYyBpbnQgano0NzQwX211c2JfaW5pdChzdHJ1Y3QgbXVzYiAqbXVzYikKK3sKKwltdXNiLT5pc3IgPSBqejQ3NDBfbXVzYl9pbnRlcnJ1cHQ7CisKKwlyZXR1cm4gMDsKK30KKyAgICA8L3Byb2dyYW1saXN0aW5nPgorICAgIDxwYXJhPgorICAgICAgVGhpcyBpbnN0cnVjdGlvbiBzZXRzIGEgcG9pbnRlciB0byB0aGUgZ2x1ZSBsYXllciBJUlEgaGFuZGxlcgorICAgICAgZnVuY3Rpb24sIGluIG9yZGVyIGZvciB0aGUgY29udHJvbGxlciBoYXJkd2FyZSB0byBjYWxsIHRoZSBoYW5kbGVyCisgICAgICBiYWNrIHdoZW4gYW4gSVJRIGNvbWVzIGZyb20gdGhlIGNvbnRyb2xsZXIgaGFyZHdhcmUuIFRoZSBpbnRlcnJ1cHQKKyAgICAgIGhhbmRsZXIgaXMgbm93IGltcGxlbWVudGVkIGFuZCByZWdpc3RlcmVkLgorICAgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJkZXZpY2UtcGxhdGZvcm0tZGF0YSI+CisgICAgPHRpdGxlPkRldmljZSBQbGF0Zm9ybSBEYXRhPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIEluIG9yZGVyIHRvIHdyaXRlIGFuIE1VU0IgZ2x1ZSBsYXllciwgeW91IG5lZWQgdG8gaGF2ZSBzb21lIGRhdGEKKyAgICAgIGRlc2NyaWJpbmcgdGhlIGhhcmR3YXJlIGNhcGFiaWxpdGllcyBvZiB5b3VyIGNvbnRyb2xsZXIgaGFyZHdhcmUsCisgICAgICB3aGljaCBpcyBjYWxsZWQgdGhlIHBsYXRmb3JtIGRhdGEuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgUGxhdGZvcm0gZGF0YSBpcyBzcGVjaWZpYyB0byB5b3VyIGhhcmR3YXJlLCB0aG91Z2ggaXQgbWF5IGNvdmVyIGEKKyAgICAgIGJyb2FkIHJhbmdlIG9mIGRldmljZXMsIGFuZCBpcyBnZW5lcmFsbHkgZm91bmQgc29tZXdoZXJlIGluIHRoZQorICAgICAgYXJjaC8gZGlyZWN0b3J5LCBkZXBlbmRpbmcgb24geW91ciBkZXZpY2UgYXJjaGl0ZWN0dXJlLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIEZvciBpbnN0YW5jZSwgcGxhdGZvcm0gZGF0YSBmb3IgdGhlIEpaNDc0MCBTb0MgaXMgZm91bmQgaW4KKyAgICAgIGFyY2gvbWlwcy9qejQ3NDAvcGxhdGZvcm0uYy4gSW4gdGhlIHBsYXRmb3JtLmMgZmlsZSBlYWNoIGRldmljZSBvZgorICAgICAgdGhlIEpaNDc0MCBTb0MgaXMgZGVzY3JpYmVkIHRocm91Z2ggYSBzZXQgb2Ygc3RydWN0dXJlcy4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBIZXJlIGlzIHRoZSBwYXJ0IG9mIGFyY2gvbWlwcy9qejQ3NDAvcGxhdGZvcm0uYyB0aGF0IGNvdmVycyB0aGUKKyAgICAgIFVTQiBEZXZpY2UgQ29udHJvbGxlciAoVURDKToKKyAgICA8L3BhcmE+CisgICAgPHByb2dyYW1saXN0aW5nIGxpbmVudW1iZXJpbmc9Im51bWJlcmVkIj4KKy8qIFVTQiBEZXZpY2UgQ29udHJvbGxlciAqLworc3RydWN0IHBsYXRmb3JtX2RldmljZSBqejQ3NDBfdWRjX3hjZWl2X2RldmljZSA9IHsKKwkubmFtZSA9ICJ1c2JfcGh5X2dlbl94Y2VpdiIsCisJLmlkICAgPSAwLAorfTsKKworc3RhdGljIHN0cnVjdCByZXNvdXJjZSBqejQ3NDBfdWRjX3Jlc291cmNlc1tdID0geworCVswXSA9IHsKKwkJLnN0YXJ0ID0gSlo0NzQwX1VEQ19CQVNFX0FERFIsCisJCS5lbmQgICA9IEpaNDc0MF9VRENfQkFTRV9BRERSICsgMHgxMDAwMCAtIDEsCisJCS5mbGFncyA9IElPUkVTT1VSQ0VfTUVNLAorCX0sCisJWzFdID0geworCQkuc3RhcnQgPSBKWjQ3NDBfSVJRX1VEQywKKwkJLmVuZCAgID0gSlo0NzQwX0lSUV9VREMsCisJCS5mbGFncyA9IElPUkVTT1VSQ0VfSVJRLAorCQkubmFtZSAgPSAibWMiLAorCX0sCit9OworCitzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGp6NDc0MF91ZGNfZGV2aWNlID0geworCS5uYW1lID0gIm11c2Itano0NzQwIiwKKwkuaWQgICA9IC0xLAorCS5kZXYgID0geworCQkuZG1hX21hc2sgICAgICAgICAgPSAmYW1wO2p6NDc0MF91ZGNfZGV2aWNlLmRldi5jb2hlcmVudF9kbWFfbWFzaywKKwkJLmNvaGVyZW50X2RtYV9tYXNrID0gRE1BX0JJVF9NQVNLKDMyKSwKKwl9LAorCS5udW1fcmVzb3VyY2VzID0gQVJSQVlfU0laRShqejQ3NDBfdWRjX3Jlc291cmNlcyksCisJLnJlc291cmNlICAgICAgPSBqejQ3NDBfdWRjX3Jlc291cmNlcywKK307CisgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICA8cGFyYT4KKyAgICAgIFRoZSBqejQ3NDBfdWRjX3hjZWl2X2RldmljZSBwbGF0Zm9ybSBkZXZpY2Ugc3RydWN0dXJlIChsaW5lIDIpCisgICAgICBkZXNjcmliZXMgdGhlIFVEQyB0cmFuc2NlaXZlciB3aXRoIGEgbmFtZSBhbmQgaWQgbnVtYmVyLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIEF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZywgbm90ZSB0aGF0CisgICAgICAmcXVvdDt1c2JfcGh5X2dlbl94Y2VpdiZxdW90OyBpcyB0aGUgc3BlY2lmaWMgbmFtZSB0byBiZSB1c2VkIGZvcgorICAgICAgYWxsIHRyYW5zY2VpdmVycyB0aGF0IGFyZSBlaXRoZXIgYnVpbHQtaW4gd2l0aCByZWZlcmVuY2UgVVNCIElQIG9yCisgICAgICBhdXRvbm9tb3VzIGFuZCBkb2Vzbid0IHJlcXVpcmUgYW55IFBIWSBwcm9ncmFtbWluZy4gWW91IHdpbGwgbmVlZAorICAgICAgdG8gc2V0IENPTkZJR19OT1BfVVNCX1hDRUlWPXkgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHRvIG1ha2UKKyAgICAgIHVzZSBvZiB0aGUgY29ycmVzcG9uZGluZyB0cmFuc2NlaXZlciBkcml2ZXIuIFRoZSBpZCBmaWVsZCBjb3VsZCBiZQorICAgICAgc2V0IHRvIC0xIChlcXVpdmFsZW50IHRvIFBMQVRGT1JNX0RFVklEX05PTkUpLCAtMiAoZXF1aXZhbGVudCB0bworICAgICAgUExBVEZPUk1fREVWSURfQVVUTykgb3Igc3RhcnQgd2l0aCAwIGZvciB0aGUgZmlyc3QgZGV2aWNlIG9mIHRoaXMKKyAgICAgIGtpbmQgaWYgd2Ugd2FudCBhIHNwZWNpZmljIGlkIG51bWJlci4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBUaGUgano0NzQwX3VkY19yZXNvdXJjZXMgcmVzb3VyY2Ugc3RydWN0dXJlIChsaW5lIDcpIGRlZmluZXMgdGhlCisgICAgICBVREMgcmVnaXN0ZXJzIGJhc2UgYWRkcmVzc2VzLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIFRoZSBmaXJzdCBhcnJheSAobGluZSA5IHRvIDExKSBkZWZpbmVzIHRoZSBVREMgcmVnaXN0ZXJzIGJhc2UKKyAgICAgIG1lbW9yeSBhZGRyZXNzZXM6IHN0YXJ0IHBvaW50cyB0byB0aGUgZmlyc3QgcmVnaXN0ZXIgbWVtb3J5CisgICAgICBhZGRyZXNzLCBlbmQgcG9pbnRzIHRvIHRoZSBsYXN0IHJlZ2lzdGVyIG1lbW9yeSBhZGRyZXNzIGFuZCB0aGUKKyAgICAgIGZsYWdzIG1lbWJlciBkZWZpbmVzIHRoZSB0eXBlIG9mIHJlc291cmNlIHdlIGFyZSBkZWFsaW5nIHdpdGguIFNvCisgICAgICBJT1JFU09VUkNFX01FTSBpcyB1c2VkIHRvIGRlZmluZSB0aGUgcmVnaXN0ZXJzIG1lbW9yeSBhZGRyZXNzZXMuCisgICAgICBUaGUgc2Vjb25kIGFycmF5IChsaW5lIDE0IHRvIDE3KSBkZWZpbmVzIHRoZSBVREMgSVJRIHJlZ2lzdGVycworICAgICAgYWRkcmVzc2VzLiBTaW5jZSB0aGVyZSBpcyBvbmx5IG9uZSBJUlEgcmVnaXN0ZXIgYXZhaWxhYmxlIGZvciB0aGUKKyAgICAgIEpaNDc0MCBVREMsIHN0YXJ0IGFuZCBlbmQgcG9pbnQgYXQgdGhlIHNhbWUgYWRkcmVzcy4gVGhlCisgICAgICBJT1JFU09VUkNFX0lSUSBmbGFnIHRlbGxzIHRoYXQgd2UgYXJlIGRlYWxpbmcgd2l0aCBJUlEgcmVzb3VyY2VzLAorICAgICAgYW5kIHRoZSBuYW1lICZxdW90O21jJnF1b3Q7IGlzIGluIGZhY3QgaGFyZC1jb2RlZCBpbiB0aGUgTVVTQiBjb3JlCisgICAgICBpbiBvcmRlciBmb3IgdGhlIGNvbnRyb2xsZXIgZHJpdmVyIHRvIHJldHJpZXZlIHRoaXMgSVJRIHJlc291cmNlCisgICAgICBieSBxdWVyeWluZyBpdCBieSBpdHMgbmFtZS4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBGaW5hbGx5LCB0aGUgano0NzQwX3VkY19kZXZpY2UgcGxhdGZvcm0gZGV2aWNlIHN0cnVjdHVyZSAobGluZSAyMSkKKyAgICAgIGRlc2NyaWJlcyB0aGUgVURDIGl0c2VsZi4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBUaGUgJnF1b3Q7bXVzYi1qejQ3NDAmcXVvdDsgbmFtZSAobGluZSAyMikgZGVmaW5lcyB0aGUgTVVTQgorICAgICAgZHJpdmVyIHRoYXQgaXMgdXNlZCBmb3IgdGhpcyBkZXZpY2U7IHJlbWVtYmVyIHRoaXMgaXMgaW4gZmFjdAorICAgICAgdGhlIG5hbWUgdGhhdCB3ZSB1c2VkIGluIHRoZSBqejQ3NDBfZHJpdmVyIHBsYXRmb3JtIGRyaXZlcgorICAgICAgc3RydWN0dXJlIGluIDxsaW5rIGxpbmtlbmQ9ImxpbnV4LW11c2ItYmFzaWNzIj5DaGFwdGVyCisgICAgICAyPC9saW5rPi4gVGhlIGlkIGZpZWxkIChsaW5lIDIzKSBpcyBzZXQgdG8gLTEgKGVxdWl2YWxlbnQgdG8KKyAgICAgIFBMQVRGT1JNX0RFVklEX05PTkUpIHNpbmNlIHdlIGRvIG5vdCBuZWVkIGFuIGlkIGZvciB0aGUgZGV2aWNlOgorICAgICAgdGhlIE1VU0IgY29udHJvbGxlciBkcml2ZXIgd2FzIGFscmVhZHkgc2V0IHRvIGFsbG9jYXRlIGFuCisgICAgICBhdXRvbWF0aWMgaWQgaW4gPGxpbmsgbGlua2VuZD0ibGludXgtbXVzYi1iYXNpY3MiPkNoYXB0ZXIKKyAgICAgIDI8L2xpbms+LiBJbiB0aGUgZGV2IGZpZWxkIHdlIGNhcmUgZm9yIERNQSByZWxhdGVkIGluZm9ybWF0aW9uCisgICAgICBoZXJlLiBUaGUgZG1hX21hc2sgZmllbGQgKGxpbmUgMjUpIGRlZmluZXMgdGhlIHdpZHRoIG9mIHRoZSBETUEKKyAgICAgIG1hc2sgdGhhdCBpcyBnb2luZyB0byBiZSB1c2VkLCBhbmQgY29oZXJlbnRfZG1hX21hc2sgKGxpbmUgMjYpCisgICAgICBoYXMgdGhlIHNhbWUgcHVycG9zZSBidXQgZm9yIHRoZSBhbGxvY19jb2hlcmVudCBETUEgbWFwcGluZ3M6IGluCisgICAgICBib3RoIGNhc2VzIHdlIGFyZSB1c2luZyBhIDMyIGJpdHMgbWFzay4gVGhlbiB0aGUgcmVzb3VyY2UgZmllbGQKKyAgICAgIChsaW5lIDI5KSBpcyBzaW1wbHkgYSBwb2ludGVyIHRvIHRoZSByZXNvdXJjZSBzdHJ1Y3R1cmUgZGVmaW5lZAorICAgICAgYmVmb3JlLCB3aGlsZSB0aGUgbnVtX3Jlc291cmNlcyBmaWVsZCAobGluZSAyOCkga2VlcHMgdHJhY2sgb2YKKyAgICAgIHRoZSBudW1iZXIgb2YgYXJyYXlzIGRlZmluZWQgaW4gdGhlIHJlc291cmNlIHN0cnVjdHVyZSAoaW4gdGhpcworICAgICAgY2FzZSB0aGVyZSB3ZXJlIHR3byByZXNvdXJjZSBhcnJheXMgZGVmaW5lZCBiZWZvcmUpLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIFdpdGggdGhpcyBxdWljayBvdmVydmlldyBvZiB0aGUgVURDIHBsYXRmb3JtIGRhdGEgYXQgdGhlIGFyY2gvCisgICAgICBsZXZlbCBub3cgZG9uZSwgbGV0J3MgZ2V0IGJhY2sgdG8gdGhlIE1VU0IgZ2x1ZSBsYXllciBzcGVjaWZpYworICAgICAgcGxhdGZvcm0gZGF0YSBpbiBkcml2ZXJzL3VzYi9tdXNiL2p6NDc0MC5jOgorICAgIDwvcGFyYT4KKyAgICA8cHJvZ3JhbWxpc3RpbmcgbGluZW51bWJlcmluZz0ibnVtYmVyZWQiPgorc3RhdGljIHN0cnVjdCBtdXNiX2hkcmNfY29uZmlnIGp6NDc0MF9tdXNiX2NvbmZpZyA9IHsKKwkvKiBTaWxpY29uIGRvZXMgbm90IGltcGxlbWVudCBVU0IgT1RHLiAqLworCS5tdWx0aXBvaW50ID0gMCwKKwkvKiBNYXggRVBzIHNjYW5uZWQsIGRyaXZlciB3aWxsIGRlY2lkZSB3aGljaCBFUCBjYW4gYmUgdXNlZC4gKi8KKwkubnVtX2VwcyAgICA9IDQsCisJLyogUkFNYml0cyBuZWVkZWQgdG8gY29uZmlndXJlIEVQcyBmcm9tIHRhYmxlICovCisJLnJhbV9iaXRzICAgPSA5LAorCS5maWZvX2NmZyA9IGp6NDc0MF9tdXNiX2ZpZm9fY2ZnLAorCS5maWZvX2NmZ19zaXplID0gQVJSQVlfU0laRShqejQ3NDBfbXVzYl9maWZvX2NmZyksCit9OworCitzdGF0aWMgc3RydWN0IG11c2JfaGRyY19wbGF0Zm9ybV9kYXRhIGp6NDc0MF9tdXNiX3BsYXRmb3JtX2RhdGEgPSB7CisJLm1vZGUgICA9IE1VU0JfUEVSSVBIRVJBTCwKKwkuY29uZmlnID0gJmFtcDtqejQ3NDBfbXVzYl9jb25maWcsCit9OworICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPHBhcmE+CisgICAgICBGaXJzdCB0aGUgZ2x1ZSBsYXllciBjb25maWd1cmVzIHNvbWUgYXNwZWN0cyBvZiB0aGUgY29udHJvbGxlcgorICAgICAgZHJpdmVyIG9wZXJhdGlvbiByZWxhdGVkIHRvIHRoZSBjb250cm9sbGVyIGhhcmR3YXJlIHNwZWNpZmljcy4KKyAgICAgIFRoaXMgaXMgZG9uZSB0aHJvdWdoIHRoZSBqejQ3NDBfbXVzYl9jb25maWcgbXVzYl9oZHJjX2NvbmZpZworICAgICAgc3RydWN0dXJlLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIERlZmluaW5nIHRoZSBPVEcgY2FwYWJpbGl0eSBvZiB0aGUgY29udHJvbGxlciBoYXJkd2FyZSwgdGhlCisgICAgICBtdWx0aXBvaW50IG1lbWJlciAobGluZSAzKSBpcyBzZXQgdG8gMCAoZXF1aXZhbGVudCB0byBmYWxzZSkKKyAgICAgIHNpbmNlIHRoZSBKWjQ3NDAgVURDIGlzIG5vdCBPVEcgY29tcGF0aWJsZS4gVGhlbiBudW1fZXBzIChsaW5lCisgICAgICA1KSBkZWZpbmVzIHRoZSBudW1iZXIgb2YgVVNCIGVuZHBvaW50cyBvZiB0aGUgY29udHJvbGxlcgorICAgICAgaGFyZHdhcmUsIGluY2x1ZGluZyBlbmRwb2ludCAwOiBoZXJlIHdlIGhhdmUgMyBlbmRwb2ludHMgKworICAgICAgZW5kcG9pbnQgMC4gTmV4dCBpcyByYW1fYml0cyAobGluZSA3KSB3aGljaCBpcyB0aGUgd2lkdGggb2YgdGhlCisgICAgICBSQU0gYWRkcmVzcyBidXMgZm9yIHRoZSBNVVNCIGNvbnRyb2xsZXIgaGFyZHdhcmUuIFRoaXMKKyAgICAgIGluZm9ybWF0aW9uIGlzIG5lZWRlZCB3aGVuIHRoZSBjb250cm9sbGVyIGRyaXZlciBjYW5ub3QKKyAgICAgIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlIGVuZHBvaW50cyBieSByZWFkaW5nIHRoZSByZWxldmFudAorICAgICAgY29udHJvbGxlciBoYXJkd2FyZSByZWdpc3RlcnMuIFRoaXMgaXNzdWUgd2lsbCBiZSBkaXNjdXNzZWQgd2hlbgorICAgICAgd2UgZ2V0IHRvIGRldmljZSBxdWlya3MgaW4gPGxpbmsgbGlua2VuZD0iZGV2aWNlLXF1aXJrcyI+Q2hhcHRlcgorICAgICAgNTwvbGluaz4uIExhc3QgdHdvIGZpZWxkcyAobGluZSA4IGFuZCA5KSBhcmUgYWxzbyBhYm91dCBkZXZpY2UKKyAgICAgIHF1aXJrczogZmlmb19jZmcgcG9pbnRzIHRvIHRoZSBVU0IgZW5kcG9pbnRzIGNvbmZpZ3VyYXRpb24gdGFibGUKKyAgICAgIGFuZCBmaWZvX2NmZ19zaXplIGtlZXBzIHRyYWNrIG9mIHRoZSBzaXplIG9mIHRoZSBudW1iZXIgb2YKKyAgICAgIGVudHJpZXMgaW4gdGhhdCBjb25maWd1cmF0aW9uIHRhYmxlLiBNb3JlIG9uIHRoYXQgbGF0ZXIgaW4gPGxpbmsKKyAgICAgIGxpbmtlbmQ9ImRldmljZS1xdWlya3MiPkNoYXB0ZXIgNTwvbGluaz4uCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgVGhlbiB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgZW1iZWRkZWQgaW5zaWRlCisgICAgICBqejQ3NDBfbXVzYl9wbGF0Zm9ybV9kYXRhIG11c2JfaGRyY19wbGF0Zm9ybV9kYXRhIHN0cnVjdHVyZSAobGluZQorICAgICAgMTEpOiBjb25maWcgaXMgYSBwb2ludGVyIHRvIHRoZSBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSBpdHNlbGYsCisgICAgICBhbmQgbW9kZSB0ZWxscyB0aGUgY29udHJvbGxlciBkcml2ZXIgaWYgdGhlIGNvbnRyb2xsZXIgaGFyZHdhcmUKKyAgICAgIG1heSBiZSB1c2VkIGFzIE1VU0JfSE9TVCBvbmx5LCBNVVNCX1BFUklQSEVSQUwgb25seSBvciBNVVNCX09URworICAgICAgd2hpY2ggaXMgYSBkdWFsIG1vZGUuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgUmVtZW1iZXIgdGhhdCBqejQ3NDBfbXVzYl9wbGF0Zm9ybV9kYXRhIGlzIHRoZW4gdXNlZCB0byBjb252ZXkKKyAgICAgIHBsYXRmb3JtIGRhdGEgaW5mb3JtYXRpb24gYXMgd2UgaGF2ZSBzZWVuIGluIHRoZSBwcm9iZSBmdW5jdGlvbgorICAgICAgaW4gPGxpbmsgbGlua2VuZD0ibGludXgtbXVzYi1iYXNpY3MiPkNoYXB0ZXIgMjwvbGluaz4KKyAgICA8L3BhcmE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iZGV2aWNlLXF1aXJrcyI+CisgICAgPHRpdGxlPkRldmljZSBRdWlya3M8L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgQ29tcGxldGluZyB0aGUgcGxhdGZvcm0gZGF0YSBzcGVjaWZpYyB0byB5b3VyIGRldmljZSwgeW91IG1heSBhbHNvCisgICAgICBuZWVkIHRvIHdyaXRlIHNvbWUgY29kZSBpbiB0aGUgZ2x1ZSBsYXllciB0byB3b3JrIGFyb3VuZCBzb21lCisgICAgICBkZXZpY2Ugc3BlY2lmaWMgbGltaXRhdGlvbnMuIFRoZXNlIHF1aXJrcyBtYXkgYmUgZHVlIHRvIHNvbWUKKyAgICAgIGhhcmR3YXJlIGJ1Z3MsIG9yIHNpbXBseSBiZSB0aGUgcmVzdWx0IG9mIGFuIGluY29tcGxldGUKKyAgICAgIGltcGxlbWVudGF0aW9uIG9mIHRoZSBVU0IgT24tdGhlLUdvIHNwZWNpZmljYXRpb24uCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgVGhlIEpaNDc0MCBVREMgZXhoaWJpdHMgc3VjaCBxdWlya3MsIHNvbWUgb2Ygd2hpY2ggd2Ugd2lsbCBkaXNjdXNzCisgICAgICBoZXJlIGZvciB0aGUgc2FrZSBvZiBpbnNpZ2h0IGV2ZW4gdGhvdWdoIHRoZXNlIG1pZ2h0IG5vdCBiZSBmb3VuZAorICAgICAgaW4gdGhlIGNvbnRyb2xsZXIgaGFyZHdhcmUgeW91IGFyZSB3b3JraW5nIG9uLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIExldCdzIGdldCBiYWNrIHRvIHRoZSBpbml0IGZ1bmN0aW9uIGZpcnN0OgorICAgIDwvcGFyYT4KKyAgICA8cHJvZ3JhbWxpc3RpbmcgbGluZW51bWJlcmluZz0ibnVtYmVyZWQiPgorc3RhdGljIGludCBqejQ3NDBfbXVzYl9pbml0KHN0cnVjdCBtdXNiICptdXNiKQoreworCW11c2ItPnhjZWl2ID0gdXNiX2dldF9waHkoVVNCX1BIWV9UWVBFX1VTQjIpOworCWlmICghbXVzYi0+eGNlaXYpIHsKKwkJcHJfZXJyKCJIUyBVREM6IG5vIHRyYW5zY2VpdmVyIGNvbmZpZ3VyZWRcbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwkvKiBTaWxpY29uIGRvZXMgbm90IGltcGxlbWVudCBDb25maWdEYXRhIHJlZ2lzdGVyLgorCSAqIFNldCBkeW5fZmlmbyB0byBhdm9pZCByZWFkaW5nIEVQIGNvbmZpZyBmcm9tIGhhcmR3YXJlLgorCSAqLworCW11c2ItPmR5bl9maWZvID0gdHJ1ZTsKKworCW11c2ItPmlzciA9IGp6NDc0MF9tdXNiX2ludGVycnVwdDsKKworCXJldHVybiAwOworfQorICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPHBhcmE+CisgICAgICBJbnN0cnVjdGlvbiBvbiBsaW5lIDEyIGhlbHBzIHRoZSBNVVNCIGNvbnRyb2xsZXIgZHJpdmVyIHRvIHdvcmsKKyAgICAgIGFyb3VuZCB0aGUgZmFjdCB0aGF0IHRoZSBjb250cm9sbGVyIGhhcmR3YXJlIGlzIG1pc3NpbmcgcmVnaXN0ZXJzCisgICAgICB0aGF0IGFyZSB1c2VkIGZvciBVU0IgZW5kcG9pbnRzIGNvbmZpZ3VyYXRpb24uCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgV2l0aG91dCB0aGVzZSByZWdpc3RlcnMsIHRoZSBjb250cm9sbGVyIGRyaXZlciBpcyB1bmFibGUgdG8gcmVhZAorICAgICAgdGhlIGVuZHBvaW50cyBjb25maWd1cmF0aW9uIGZyb20gdGhlIGhhcmR3YXJlLCBzbyB3ZSB1c2UgbGluZSAxMgorICAgICAgaW5zdHJ1Y3Rpb24gdG8gYnlwYXNzIHJlYWRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZnJvbSBzaWxpY29uLCBhbmQKKyAgICAgIHJlbHkgb24gYSBoYXJkLWNvZGVkIHRhYmxlIHRoYXQgZGVzY3JpYmVzIHRoZSBlbmRwb2ludHMKKyAgICAgIGNvbmZpZ3VyYXRpb24gaW5zdGVhZDoKKyAgICA8L3BhcmE+CisgICAgPHByb2dyYW1saXN0aW5nIGxpbmVudW1iZXJpbmc9Im51bWJlcmVkIj4KK3N0YXRpYyBzdHJ1Y3QgbXVzYl9maWZvX2NmZyBqejQ3NDBfbXVzYl9maWZvX2NmZ1tdID0geworeyAuaHdfZXBfbnVtID0gMSwgLnN0eWxlID0gRklGT19UWCwgLm1heHBhY2tldCA9IDUxMiwgfSwKK3sgLmh3X2VwX251bSA9IDEsIC5zdHlsZSA9IEZJRk9fUlgsIC5tYXhwYWNrZXQgPSA1MTIsIH0sCit7IC5od19lcF9udW0gPSAyLCAuc3R5bGUgPSBGSUZPX1RYLCAubWF4cGFja2V0ID0gNjQsIH0sCit9OworICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgPHBhcmE+CisgICAgICBMb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9uIHRhYmxlIGFib3ZlLCB3ZSBzZWUgdGhhdCBlYWNoCisgICAgICBlbmRwb2ludHMgaXMgZGVzY3JpYmVkIGJ5IHRocmVlIGZpZWxkczogaHdfZXBfbnVtIGlzIHRoZSBlbmRwb2ludAorICAgICAgbnVtYmVyLCBzdHlsZSBpcyBpdHMgZGlyZWN0aW9uIChlaXRoZXIgRklGT19UWCBmb3IgdGhlIGNvbnRyb2xsZXIKKyAgICAgIGRyaXZlciB0byBzZW5kIHBhY2tldHMgaW4gdGhlIGNvbnRyb2xsZXIgaGFyZHdhcmUsIG9yIEZJRk9fUlggdG8KKyAgICAgIHJlY2VpdmUgcGFja2V0cyBmcm9tIGhhcmR3YXJlKSwgYW5kIG1heHBhY2tldCBkZWZpbmVzIHRoZSBtYXhpbXVtCisgICAgICBzaXplIG9mIGVhY2ggZGF0YSBwYWNrZXQgdGhhdCBjYW4gYmUgdHJhbnNtaXR0ZWQgb3ZlciB0aGF0CisgICAgICBlbmRwb2ludC4gUmVhZGluZyBmcm9tIHRoZSB0YWJsZSwgdGhlIGNvbnRyb2xsZXIgZHJpdmVyIGtub3dzIHRoYXQKKyAgICAgIGVuZHBvaW50IDEgY2FuIGJlIHVzZWQgdG8gc2VuZCBhbmQgcmVjZWl2ZSBVU0IgZGF0YSBwYWNrZXRzIG9mIDUxMgorICAgICAgYnl0ZXMgYXQgb25jZSAodGhpcyBpcyBpbiBmYWN0IGEgYnVsayBpbi9vdXQgZW5kcG9pbnQpLCBhbmQKKyAgICAgIGVuZHBvaW50IDIgY2FuIGJlIHVzZWQgdG8gc2VuZCBkYXRhIHBhY2tldHMgb2YgNjQgYnl0ZXMgYXQgb25jZQorICAgICAgKHRoaXMgaXMgaW4gZmFjdCBhbiBpbnRlcnJ1cHQgZW5kcG9pbnQpLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBpbmZvcm1hdGlvbiBhYm91dCBlbmRwb2ludCAwIGhlcmU6IHRoYXQgb25lCisgICAgICBpcyBpbXBsZW1lbnRlZCBieSBkZWZhdWx0IGluIGV2ZXJ5IHNpbGljb24gZGVzaWduLCB3aXRoIGEKKyAgICAgIHByZWRlZmluZWQgY29uZmlndXJhdGlvbiBhY2NvcmRpbmcgdG8gdGhlIFVTQiBzcGVjaWZpY2F0aW9uLiBGb3IKKyAgICAgIG1vcmUgZXhhbXBsZXMgb2YgZW5kcG9pbnQgY29uZmlndXJhdGlvbiB0YWJsZXMsIHNlZSBtdXNiX2NvcmUuYy4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBMZXQncyBub3cgZ2V0IGJhY2sgdG8gdGhlIGludGVycnVwdCBoYW5kbGVyIGZ1bmN0aW9uOgorICAgIDwvcGFyYT4KKyAgICA8cHJvZ3JhbWxpc3RpbmcgbGluZW51bWJlcmluZz0ibnVtYmVyZWQiPgorc3RhdGljIGlycXJldHVybl90IGp6NDc0MF9tdXNiX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpfX2hjaSkKK3sKKwl1bnNpZ25lZCBsb25nICAgZmxhZ3M7CisJaXJxcmV0dXJuX3QgICAgIHJldHZhbCA9IElSUV9OT05FOworCXN0cnVjdCBtdXNiICAgICAqbXVzYiA9IF9faGNpOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDttdXNiLT5sb2NrLCBmbGFncyk7CisKKwltdXNiLT5pbnRfdXNiID0gbXVzYl9yZWFkYihtdXNiLT5tcmVncywgTVVTQl9JTlRSVVNCKTsKKwltdXNiLT5pbnRfdHggPSBtdXNiX3JlYWR3KG11c2ItPm1yZWdzLCBNVVNCX0lOVFJUWCk7CisJbXVzYi0+aW50X3J4ID0gbXVzYl9yZWFkdyhtdXNiLT5tcmVncywgTVVTQl9JTlRSUlgpOworCisJLyoKKwkgKiBUaGUgY29udHJvbGxlciBpcyBnYWRnZXQgb25seSwgdGhlIHN0YXRlIG9mIHRoZSBob3N0IG1vZGUgSVJRIGJpdHMgaXMKKwkgKiB1bmRlZmluZWQuIE1hc2sgdGhlbSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbXVzYiBkcml2ZXIgY29yZSB3aWxsCisJICogbmV2ZXIgc2VlIHRoZW0gc2V0CisJICovCisJbXVzYi0+aW50X3VzYiAmYW1wOz0gTVVTQl9JTlRSX1NVU1BFTkQgfCBNVVNCX0lOVFJfUkVTVU1FIHwKKwkgICAgTVVTQl9JTlRSX1JFU0VUIHwgTVVTQl9JTlRSX1NPRjsKKworCWlmIChtdXNiLT5pbnRfdXNiIHx8IG11c2ItPmludF90eCB8fCBtdXNiLT5pbnRfcngpCisJCXJldHZhbCA9IG11c2JfaW50ZXJydXB0KG11c2IpOworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO211c2ItPmxvY2ssIGZsYWdzKTsKKworCXJldHVybiByZXR2YWw7Cit9CisgICAgPC9wcm9ncmFtbGlzdGluZz4KKyAgICA8cGFyYT4KKyAgICAgIEluc3RydWN0aW9uIG9uIGxpbmUgMTggYWJvdmUgaXMgYSB3YXkgZm9yIHRoZSBjb250cm9sbGVyIGRyaXZlciB0bworICAgICAgd29yayBhcm91bmQgdGhlIGZhY3QgdGhhdCBzb21lIGludGVycnVwdCBiaXRzIHVzZWQgZm9yIFVTQiBob3N0CisgICAgICBtb2RlIG9wZXJhdGlvbiBhcmUgbWlzc2luZyBpbiB0aGUgTVVTQl9JTlRSVVNCIHJlZ2lzdGVyLCB0aHVzIGxlZnQKKyAgICAgIGluIGFuIHVuZGVmaW5lZCBoYXJkd2FyZSBzdGF0ZSwgc2luY2UgdGhpcyBNVVNCIGNvbnRyb2xsZXIKKyAgICAgIGhhcmR3YXJlIGlzIHVzZWQgaW4gcGVyaXBoZXJhbCBtb2RlIG9ubHkuIEFzIGEgY29uc2VxdWVuY2UsIHRoZQorICAgICAgZ2x1ZSBsYXllciBtYXNrcyB0aGVzZSBtaXNzaW5nIGJpdHMgb3V0IHRvIGF2b2lkIHBhcmFzaXRlCisgICAgICBpbnRlcnJ1cHRzIGJ5IGRvaW5nIGEgbG9naWNhbCBBTkQgb3BlcmF0aW9uIGJldHdlZW4gdGhlIHZhbHVlIHJlYWQKKyAgICAgIGZyb20gTVVTQl9JTlRSVVNCIGFuZCB0aGUgYml0cyB0aGF0IGFyZSBhY3R1YWxseSBpbXBsZW1lbnRlZCBpbgorICAgICAgdGhlIHJlZ2lzdGVyLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIFRoZXNlIGFyZSBvbmx5IGEgY291cGxlIG9mIHRoZSBxdWlya3MgZm91bmQgaW4gdGhlIEpaNDc0MCBVU0IKKyAgICAgIGRldmljZSBjb250cm9sbGVyLiBTb21lIG90aGVycyB3ZXJlIGRpcmVjdGx5IGFkZHJlc3NlZCBpbiB0aGUgTVVTQgorICAgICAgY29yZSBzaW5jZSB0aGUgZml4ZXMgd2VyZSBnZW5lcmljIGVub3VnaCB0byBwcm92aWRlIGEgYmV0dGVyCisgICAgICBoYW5kbGluZyBvZiB0aGUgaXNzdWVzIGZvciBvdGhlcnMgY29udHJvbGxlciBoYXJkd2FyZSBldmVudHVhbGx5LgorICAgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJjb25jbHVzaW9uIj4KKyAgICA8dGl0bGU+Q29uY2x1c2lvbjwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICBXcml0aW5nIGEgTGludXggTVVTQiBnbHVlIGxheWVyIHNob3VsZCBiZSBhIG1vcmUgYWNjZXNzaWJsZSB0YXNrLAorICAgICAgYXMgdGhpcyBkb2N1bWVudGF0aW9uIHRyaWVzIHRvIHNob3cgdGhlIGlucyBhbmQgb3V0cyBvZiB0aGlzCisgICAgICBleGVyY2lzZS4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBUaGUgSlo0NzQwIFVTQiBkZXZpY2UgY29udHJvbGxlciBiZWluZyBmYWlybHkgc2ltcGxlLCBJIGhvcGUgaXRzCisgICAgICBnbHVlIGxheWVyIHNlcnZlcyBhcyBhIGdvb2QgZXhhbXBsZSBmb3IgdGhlIGN1cmlvdXMgbWluZC4gVXNlZAorICAgICAgd2l0aCB0aGUgY3VycmVudCBNVVNCIGdsdWUgbGF5ZXJzLCB0aGlzIGRvY3VtZW50YXRpb24gc2hvdWxkCisgICAgICBwcm92aWRlIGVub3VnaCBndWlkYW5jZSB0byBnZXQgc3RhcnRlZDsgc2hvdWxkIGFueXRoaW5nIGdldHMgb3V0CisgICAgICBvZiBoYW5kLCB0aGUgbGludXgtdXNiIG1haWxpbmcgbGlzdCBhcmNoaXZlIGlzIGFub3RoZXIgaGVscGZ1bAorICAgICAgcmVzb3VyY2UgdG8gYnJvd3NlIHRocm91Z2guCisgICAgPC9wYXJhPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImFja25vd2xlZGdlbWVudHMiPgorICAgIDx0aXRsZT5BY2tub3dsZWRnZW1lbnRzPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIE1hbnkgdGhhbmtzIHRvIExhcnMtUGV0ZXIgQ2xhdXNlbiBhbmQgTWFhcnRlbiB0ZXIgSHV1cm5lIGZvcgorICAgICAgYW5zd2VyaW5nIG15IHF1ZXN0aW9ucyB3aGlsZSBJIHdhcyB3cml0aW5nIHRoZSBKWjQ3NDAgZ2x1ZSBsYXllcgorICAgICAgYW5kIGZvciBoZWxwaW5nIG1lIG91dCBnZXR0aW5nIHRoZSBjb2RlIGluIGdvb2Qgc2hhcGUuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgSSB3b3VsZCBhbHNvIGxpa2UgdG8gdGhhbmsgdGhlIFFpLUhhcmR3YXJlIGNvbW11bml0eSBhdCBsYXJnZSBmb3IKKyAgICAgIGl0cyBjaGVlcmZ1bCBndWlkYW5jZSBhbmQgc3VwcG9ydC4KKyAgICA8L3BhcmE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0icmVzb3VyY2VzIj4KKyAgICA8dGl0bGU+UmVzb3VyY2VzPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIFVTQiBIb21lIFBhZ2U6CisgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnVzYi5vcmciPmh0dHA6Ly93d3cudXNiLm9yZzwvdWxpbms+CisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgbGludXgtdXNiIE1haWxpbmcgTGlzdCBBcmNoaXZlczoKKyAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9tYXJjLmluZm8vP2w9bGludXgtdXNiIj5odHRwOi8vbWFyYy5pbmZvLz9sPWxpbnV4LXVzYjwvdWxpbms+CisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgVVNCIE9uLXRoZS1HbyBCYXNpY3M6CisgICAgICA8dWxpbmsgdXJsPSJodHRwOi8vd3d3Lm1heGltaW50ZWdyYXRlZC5jb20vYXBwLW5vdGVzL2luZGV4Lm12cC9pZC8xODIyIj5odHRwOi8vd3d3Lm1heGltaW50ZWdyYXRlZC5jb20vYXBwLW5vdGVzL2luZGV4Lm12cC9pZC8xODIyPC91bGluaz4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBXcml0aW5nIFVTQiBEZXZpY2UgRHJpdmVyczoKKyAgICAgIDx1bGluayB1cmw9Imh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL2h0bWxkb2NzL3dyaXRpbmdfdXNiX2RyaXZlci9pbmRleC5odG1sIj5odHRwczovL3d3dy5rZXJuZWwub3JnL2RvYy9odG1sZG9jcy93cml0aW5nX3VzYl9kcml2ZXIvaW5kZXguaHRtbDwvdWxpbms+CisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgVGV4YXMgSW5zdHJ1bWVudHMgVVNCIENvbmZpZ3VyYXRpb24gV2lraSBQYWdlOgorICAgICAgPHVsaW5rIHVybD0iaHR0cDovL3Byb2Nlc3NvcnMud2lraS50aS5jb20vaW5kZXgucGhwL1VzYmdlbmVyYWxwYWdlIj5odHRwOi8vcHJvY2Vzc29ycy53aWtpLnRpLmNvbS9pbmRleC5waHAvVXNiZ2VuZXJhbHBhZ2U8L3VsaW5rPgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIEFuYWxvZyBEZXZpY2VzIEJsYWNrZmluIE1VU0IgQ29uZmlndXJhdGlvbjoKKyAgICAgIDx1bGluayB1cmw9Imh0dHA6Ly9kb2NzLmJsYWNrZmluLnVjbGludXgub3JnL2Rva3UucGhwP2lkPWxpbnV4LWtlcm5lbDpkcml2ZXJzOm11c2IiPmh0dHA6Ly9kb2NzLmJsYWNrZmluLnVjbGludXgub3JnL2Rva3UucGhwP2lkPWxpbnV4LWtlcm5lbDpkcml2ZXJzOm11c2I8L3VsaW5rPgorICAgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorCis8L2Jvb2s+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svd3JpdGluZ191c2JfZHJpdmVyLnRtcGwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svd3JpdGluZ191c2JfZHJpdmVyLnRtcGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzIxMGRjZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay93cml0aW5nX3VzYl9kcml2ZXIudG1wbApAQCAtMCwwICsxLDQxMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4xLjIvL0VOIgorCSJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMS4yL2RvY2Jvb2t4LmR0ZCIgW10+CisKKzxib29rIGlkPSJVU0JEZXZpY2VEcml2ZXIiPgorIDxib29raW5mbz4KKyAgPHRpdGxlPldyaXRpbmcgVVNCIERldmljZSBEcml2ZXJzPC90aXRsZT4KKyAgCisgIDxhdXRob3Jncm91cD4KKyAgIDxhdXRob3I+CisgICAgPGZpcnN0bmFtZT5HcmVnPC9maXJzdG5hbWU+CisgICAgPHN1cm5hbWU+S3JvYWgtSGFydG1hbjwvc3VybmFtZT4KKyAgICA8YWZmaWxpYXRpb24+CisgICAgIDxhZGRyZXNzPgorICAgICAgPGVtYWlsPmdyZWdAa3JvYWguY29tPC9lbWFpbD4KKyAgICAgPC9hZGRyZXNzPgorICAgIDwvYWZmaWxpYXRpb24+CisgICA8L2F1dGhvcj4KKyAgPC9hdXRob3Jncm91cD4KKworICA8Y29weXJpZ2h0PgorICAgPHllYXI+MjAwMS0yMDAyPC95ZWFyPgorICAgPGhvbGRlcj5HcmVnIEtyb2FoLUhhcnRtYW48L2hvbGRlcj4KKyAgPC9jb3B5cmlnaHQ+CisKKyAgPGxlZ2Fsbm90aWNlPgorICAgPHBhcmE+CisgICAgIFRoaXMgZG9jdW1lbnRhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZQorICAgICBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyCisgICAgIHZlcnNpb24uCisgICA8L3BhcmE+CisgICAgICAKKyAgIDxwYXJhPgorICAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCisgICAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQKKyAgICAgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorICAgICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgICA8L3BhcmE+CisgICAgICAKKyAgIDxwYXJhPgorICAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorICAgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICAgICBNQSAwMjExMS0xMzA3IFVTQQorICAgPC9wYXJhPgorICAgICAgCisgICA8cGFyYT4KKyAgICAgRm9yIG1vcmUgZGV0YWlscyBzZWUgdGhlIGZpbGUgQ09QWUlORyBpbiB0aGUgc291cmNlCisgICAgIGRpc3RyaWJ1dGlvbiBvZiBMaW51eC4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgIFRoaXMgZG9jdW1lbnRhdGlvbiBpcyBiYXNlZCBvbiBhbiBhcnRpY2xlIHB1Ymxpc2hlZCBpbiAKKyAgICAgTGludXggSm91cm5hbCBNYWdhemluZSwgT2N0b2JlciAyMDAxLCBJc3N1ZSA5MC4KKyAgIDwvcGFyYT4KKyAgPC9sZWdhbG5vdGljZT4KKyA8L2Jvb2tpbmZvPgorCis8dG9jPjwvdG9jPgorCisgIDxjaGFwdGVyIGlkPSJpbnRybyI+CisgICAgICA8dGl0bGU+SW50cm9kdWN0aW9uPC90aXRsZT4KKyAgPHBhcmE+CisgICAgICBUaGUgTGludXggVVNCIHN1YnN5c3RlbSBoYXMgZ3Jvd24gZnJvbSBzdXBwb3J0aW5nIG9ubHkgdHdvIGRpZmZlcmVudAorICAgICAgdHlwZXMgb2YgZGV2aWNlcyBpbiB0aGUgMi4yLjcga2VybmVsIChtaWNlIGFuZCBrZXlib2FyZHMpLCB0byBvdmVyIDIwCisgICAgICBkaWZmZXJlbnQgdHlwZXMgb2YgZGV2aWNlcyBpbiB0aGUgMi40IGtlcm5lbC4gTGludXggY3VycmVudGx5IHN1cHBvcnRzCisgICAgICBhbG1vc3QgYWxsIFVTQiBjbGFzcyBkZXZpY2VzIChzdGFuZGFyZCB0eXBlcyBvZiBkZXZpY2VzIGxpa2Uga2V5Ym9hcmRzLAorICAgICAgbWljZSwgbW9kZW1zLCBwcmludGVycyBhbmQgc3BlYWtlcnMpIGFuZCBhbiBldmVyLWdyb3dpbmcgbnVtYmVyIG9mCisgICAgICB2ZW5kb3Itc3BlY2lmaWMgZGV2aWNlcyAoc3VjaCBhcyBVU0IgdG8gc2VyaWFsIGNvbnZlcnRlcnMsIGRpZ2l0YWwKKyAgICAgIGNhbWVyYXMsIEV0aGVybmV0IGRldmljZXMgYW5kIE1QMyBwbGF5ZXJzKS4gRm9yIGEgZnVsbCBsaXN0IG9mIHRoZQorICAgICAgZGlmZmVyZW50IFVTQiBkZXZpY2VzIGN1cnJlbnRseSBzdXBwb3J0ZWQsIHNlZSBSZXNvdXJjZXMuCisgIDwvcGFyYT4KKyAgPHBhcmE+CisgICAgICBUaGUgcmVtYWluaW5nIGtpbmRzIG9mIFVTQiBkZXZpY2VzIHRoYXQgZG8gbm90IGhhdmUgc3VwcG9ydCBvbiBMaW51eCBhcmUKKyAgICAgIGFsbW9zdCBhbGwgdmVuZG9yLXNwZWNpZmljIGRldmljZXMuIEVhY2ggdmVuZG9yIGRlY2lkZXMgdG8gaW1wbGVtZW50IGEKKyAgICAgIGN1c3RvbSBwcm90b2NvbCB0byB0YWxrIHRvIHRoZWlyIGRldmljZSwgc28gYSBjdXN0b20gZHJpdmVyIHVzdWFsbHkgbmVlZHMKKyAgICAgIHRvIGJlIGNyZWF0ZWQuIFNvbWUgdmVuZG9ycyBhcmUgb3BlbiB3aXRoIHRoZWlyIFVTQiBwcm90b2NvbHMgYW5kIGhlbHAKKyAgICAgIHdpdGggdGhlIGNyZWF0aW9uIG9mIExpbnV4IGRyaXZlcnMsIHdoaWxlIG90aGVycyBkbyBub3QgcHVibGlzaCB0aGVtLCBhbmQKKyAgICAgIGRldmVsb3BlcnMgYXJlIGZvcmNlZCB0byByZXZlcnNlLWVuZ2luZWVyLiBTZWUgUmVzb3VyY2VzIGZvciBzb21lIGxpbmtzCisgICAgICB0byBoYW5keSByZXZlcnNlLWVuZ2luZWVyaW5nIHRvb2xzLgorICA8L3BhcmE+CisgIDxwYXJhPgorICAgICAgQmVjYXVzZSBlYWNoIGRpZmZlcmVudCBwcm90b2NvbCBjYXVzZXMgYSBuZXcgZHJpdmVyIHRvIGJlIGNyZWF0ZWQsIEkgaGF2ZQorICAgICAgd3JpdHRlbiBhIGdlbmVyaWMgVVNCIGRyaXZlciBza2VsZXRvbiwgbW9kZWxsZWQgYWZ0ZXIgdGhlIHBjaS1za2VsZXRvbi5jCisgICAgICBmaWxlIGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgdXBvbiB3aGljaCBtYW55IFBDSSBuZXR3b3JrIGRyaXZlcnMgaGF2ZQorICAgICAgYmVlbiBiYXNlZC4gVGhpcyBVU0Igc2tlbGV0b24gY2FuIGJlIGZvdW5kIGF0IGRyaXZlcnMvdXNiL3VzYi1za2VsZXRvbi5jCisgICAgICBpbiB0aGUga2VybmVsIHNvdXJjZSB0cmVlLiBJbiB0aGlzIGFydGljbGUgSSB3aWxsIHdhbGsgdGhyb3VnaCB0aGUgYmFzaWNzCisgICAgICBvZiB0aGUgc2tlbGV0b24gZHJpdmVyLCBleHBsYWluaW5nIHRoZSBkaWZmZXJlbnQgcGllY2VzIGFuZCB3aGF0IG5lZWRzIHRvCisgICAgICBiZSBkb25lIHRvIGN1c3RvbWl6ZSBpdCB0byB5b3VyIHNwZWNpZmljIGRldmljZS4KKyAgPC9wYXJhPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImJhc2ljcyI+CisgICAgICA8dGl0bGU+TGludXggVVNCIEJhc2ljczwvdGl0bGU+CisgIDxwYXJhPgorICAgICAgSWYgeW91IGFyZSBnb2luZyB0byB3cml0ZSBhIExpbnV4IFVTQiBkcml2ZXIsIHBsZWFzZSBiZWNvbWUgZmFtaWxpYXIgd2l0aAorICAgICAgdGhlIFVTQiBwcm90b2NvbCBzcGVjaWZpY2F0aW9uLiBJdCBjYW4gYmUgZm91bmQsIGFsb25nIHdpdGggbWFueSBvdGhlcgorICAgICAgdXNlZnVsIGRvY3VtZW50cywgYXQgdGhlIFVTQiBob21lIHBhZ2UgKHNlZSBSZXNvdXJjZXMpLiBBbiBleGNlbGxlbnQKKyAgICAgIGludHJvZHVjdGlvbiB0byB0aGUgTGludXggVVNCIHN1YnN5c3RlbSBjYW4gYmUgZm91bmQgYXQgdGhlIFVTQiBXb3JraW5nCisgICAgICBEZXZpY2VzIExpc3QgKHNlZSBSZXNvdXJjZXMpLiBJdCBleHBsYWlucyBob3cgdGhlIExpbnV4IFVTQiBzdWJzeXN0ZW0gaXMKKyAgICAgIHN0cnVjdHVyZWQgYW5kIGludHJvZHVjZXMgdGhlIHJlYWRlciB0byB0aGUgY29uY2VwdCBvZiBVU0IgdXJicworICAgICAgKFVTQiBSZXF1ZXN0IEJsb2NrcyksIHdoaWNoIGFyZSBlc3NlbnRpYWwgdG8gVVNCIGRyaXZlcnMuCisgIDwvcGFyYT4KKyAgPHBhcmE+CisgICAgICBUaGUgZmlyc3QgdGhpbmcgYSBMaW51eCBVU0IgZHJpdmVyIG5lZWRzIHRvIGRvIGlzIHJlZ2lzdGVyIGl0c2VsZiB3aXRoCisgICAgICB0aGUgTGludXggVVNCIHN1YnN5c3RlbSwgZ2l2aW5nIGl0IHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgd2hpY2ggZGV2aWNlcworICAgICAgdGhlIGRyaXZlciBzdXBwb3J0cyBhbmQgd2hpY2ggZnVuY3Rpb25zIHRvIGNhbGwgd2hlbiBhIGRldmljZSBzdXBwb3J0ZWQKKyAgICAgIGJ5IHRoZSBkcml2ZXIgaXMgaW5zZXJ0ZWQgb3IgcmVtb3ZlZCBmcm9tIHRoZSBzeXN0ZW0uIEFsbCBvZiB0aGlzCisgICAgICBpbmZvcm1hdGlvbiBpcyBwYXNzZWQgdG8gdGhlIFVTQiBzdWJzeXN0ZW0gaW4gdGhlIHVzYl9kcml2ZXIgc3RydWN0dXJlLgorICAgICAgVGhlIHNrZWxldG9uIGRyaXZlciBkZWNsYXJlcyBhIHVzYl9kcml2ZXIgYXM6CisgIDwvcGFyYT4KKyAgPHByb2dyYW1saXN0aW5nPgorc3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHNrZWxfZHJpdmVyID0geworICAgICAgICAubmFtZSAgICAgICAgPSAic2tlbGV0b24iLAorICAgICAgICAucHJvYmUgICAgICAgPSBza2VsX3Byb2JlLAorICAgICAgICAuZGlzY29ubmVjdCAgPSBza2VsX2Rpc2Nvbm5lY3QsCisgICAgICAgIC5mb3BzICAgICAgICA9ICZhbXA7c2tlbF9mb3BzLAorICAgICAgICAubWlub3IgICAgICAgPSBVU0JfU0tFTF9NSU5PUl9CQVNFLAorICAgICAgICAuaWRfdGFibGUgICAgPSBza2VsX3RhYmxlLAorfTsKKyAgPC9wcm9ncmFtbGlzdGluZz4KKyAgPHBhcmE+CisgICAgICBUaGUgdmFyaWFibGUgbmFtZSBpcyBhIHN0cmluZyB0aGF0IGRlc2NyaWJlcyB0aGUgZHJpdmVyLiBJdCBpcyB1c2VkIGluCisgICAgICBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIHByaW50ZWQgdG8gdGhlIHN5c3RlbSBsb2cuIFRoZSBwcm9iZSBhbmQKKyAgICAgIGRpc2Nvbm5lY3QgZnVuY3Rpb24gcG9pbnRlcnMgYXJlIGNhbGxlZCB3aGVuIGEgZGV2aWNlIHRoYXQgbWF0Y2hlcyB0aGUKKyAgICAgIGluZm9ybWF0aW9uIHByb3ZpZGVkIGluIHRoZSBpZF90YWJsZSB2YXJpYWJsZSBpcyBlaXRoZXIgc2VlbiBvciByZW1vdmVkLgorICA8L3BhcmE+CisgIDxwYXJhPgorICAgICAgVGhlIGZvcHMgYW5kIG1pbm9yIHZhcmlhYmxlcyBhcmUgb3B0aW9uYWwuIE1vc3QgVVNCIGRyaXZlcnMgaG9vayBpbnRvCisgICAgICBhbm90aGVyIGtlcm5lbCBzdWJzeXN0ZW0sIHN1Y2ggYXMgdGhlIFNDU0ksIG5ldHdvcmsgb3IgVFRZIHN1YnN5c3RlbS4KKyAgICAgIFRoZXNlIHR5cGVzIG9mIGRyaXZlcnMgcmVnaXN0ZXIgdGhlbXNlbHZlcyB3aXRoIHRoZSBvdGhlciBrZXJuZWwKKyAgICAgIHN1YnN5c3RlbSwgYW5kIGFueSB1c2VyLXNwYWNlIGludGVyYWN0aW9ucyBhcmUgcHJvdmlkZWQgdGhyb3VnaCB0aGF0CisgICAgICBpbnRlcmZhY2UuIEJ1dCBmb3IgZHJpdmVycyB0aGF0IGRvIG5vdCBoYXZlIGEgbWF0Y2hpbmcga2VybmVsIHN1YnN5c3RlbSwKKyAgICAgIHN1Y2ggYXMgTVAzIHBsYXllcnMgb3Igc2Nhbm5lcnMsIGEgbWV0aG9kIG9mIGludGVyYWN0aW5nIHdpdGggdXNlciBzcGFjZQorICAgICAgaXMgbmVlZGVkLiBUaGUgVVNCIHN1YnN5c3RlbSBwcm92aWRlcyBhIHdheSB0byByZWdpc3RlciBhIG1pbm9yIGRldmljZQorICAgICAgbnVtYmVyIGFuZCBhIHNldCBvZiBmaWxlX29wZXJhdGlvbnMgZnVuY3Rpb24gcG9pbnRlcnMgdGhhdCBlbmFibGUgdGhpcworICAgICAgdXNlci1zcGFjZSBpbnRlcmFjdGlvbi4gVGhlIHNrZWxldG9uIGRyaXZlciBuZWVkcyB0aGlzIGtpbmQgb2YgaW50ZXJmYWNlLAorICAgICAgc28gaXQgcHJvdmlkZXMgYSBtaW5vciBzdGFydGluZyBudW1iZXIgYW5kIGEgcG9pbnRlciB0byBpdHMKKyAgICAgIGZpbGVfb3BlcmF0aW9ucyBmdW5jdGlvbnMuCisgIDwvcGFyYT4KKyAgPHBhcmE+CisgICAgICBUaGUgVVNCIGRyaXZlciBpcyB0aGVuIHJlZ2lzdGVyZWQgd2l0aCBhIGNhbGwgdG8gdXNiX3JlZ2lzdGVyLCB1c3VhbGx5IGluCisgICAgICB0aGUgZHJpdmVyJ3MgaW5pdCBmdW5jdGlvbiwgYXMgc2hvd24gaGVyZToKKyAgPC9wYXJhPgorICA8cHJvZ3JhbWxpc3Rpbmc+CitzdGF0aWMgaW50IF9faW5pdCB1c2Jfc2tlbF9pbml0KHZvaWQpCit7CisgICAgICAgIGludCByZXN1bHQ7CisKKyAgICAgICAgLyogcmVnaXN0ZXIgdGhpcyBkcml2ZXIgd2l0aCB0aGUgVVNCIHN1YnN5c3RlbSAqLworICAgICAgICByZXN1bHQgPSB1c2JfcmVnaXN0ZXIoJmFtcDtza2VsX2RyaXZlcik7CisgICAgICAgIGlmIChyZXN1bHQgJmx0OyAwKSB7CisgICAgICAgICAgICAgICAgZXJyKCZxdW90O3VzYl9yZWdpc3RlciBmYWlsZWQgZm9yIHRoZSAmcXVvdDtfX0ZJTEVfXyAmcXVvdDtkcml2ZXIuJnF1b3Q7CisgICAgICAgICAgICAgICAgICAgICZxdW90O0Vycm9yIG51bWJlciAlZCZxdW90OywgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gMDsKK30KK21vZHVsZV9pbml0KHVzYl9za2VsX2luaXQpOworICA8L3Byb2dyYW1saXN0aW5nPgorICA8cGFyYT4KKyAgICAgIFdoZW4gdGhlIGRyaXZlciBpcyB1bmxvYWRlZCBmcm9tIHRoZSBzeXN0ZW0sIGl0IG5lZWRzIHRvIGRlcmVnaXN0ZXIKKyAgICAgIGl0c2VsZiB3aXRoIHRoZSBVU0Igc3Vic3lzdGVtLiBUaGlzIGlzIGRvbmUgd2l0aCB0aGUgdXNiX2RlcmVnaXN0ZXIKKyAgICAgIGZ1bmN0aW9uOgorICA8L3BhcmE+CisgIDxwcm9ncmFtbGlzdGluZz4KK3N0YXRpYyB2b2lkIF9fZXhpdCB1c2Jfc2tlbF9leGl0KHZvaWQpCit7CisgICAgICAgIC8qIGRlcmVnaXN0ZXIgdGhpcyBkcml2ZXIgd2l0aCB0aGUgVVNCIHN1YnN5c3RlbSAqLworICAgICAgICB1c2JfZGVyZWdpc3RlcigmYW1wO3NrZWxfZHJpdmVyKTsKK30KK21vZHVsZV9leGl0KHVzYl9za2VsX2V4aXQpOworICA8L3Byb2dyYW1saXN0aW5nPgorICA8cGFyYT4KKyAgICAgVG8gZW5hYmxlIHRoZSBsaW51eC1ob3RwbHVnIHN5c3RlbSB0byBsb2FkIHRoZSBkcml2ZXIgYXV0b21hdGljYWxseSB3aGVuCisgICAgIHRoZSBkZXZpY2UgaXMgcGx1Z2dlZCBpbiwgeW91IG5lZWQgdG8gY3JlYXRlIGEgTU9EVUxFX0RFVklDRV9UQUJMRS4gVGhlCisgICAgIGZvbGxvd2luZyBjb2RlIHRlbGxzIHRoZSBob3RwbHVnIHNjcmlwdHMgdGhhdCB0aGlzIG1vZHVsZSBzdXBwb3J0cyBhCisgICAgIHNpbmdsZSBkZXZpY2Ugd2l0aCBhIHNwZWNpZmljIHZlbmRvciBhbmQgcHJvZHVjdCBJRDoKKyAgPC9wYXJhPgorICA8cHJvZ3JhbWxpc3Rpbmc+CisvKiB0YWJsZSBvZiBkZXZpY2VzIHRoYXQgd29yayB3aXRoIHRoaXMgZHJpdmVyICovCitzdGF0aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgc2tlbF90YWJsZSBbXSA9IHsKKyAgICAgICAgeyBVU0JfREVWSUNFKFVTQl9TS0VMX1ZFTkRPUl9JRCwgVVNCX1NLRUxfUFJPRFVDVF9JRCkgfSwKKyAgICAgICAgeyB9ICAgICAgICAgICAgICAgICAgICAgIC8qIFRlcm1pbmF0aW5nIGVudHJ5ICovCit9OworTU9EVUxFX0RFVklDRV9UQUJMRSAodXNiLCBza2VsX3RhYmxlKTsKKyAgPC9wcm9ncmFtbGlzdGluZz4KKyAgPHBhcmE+CisgICAgIFRoZXJlIGFyZSBvdGhlciBtYWNyb3MgdGhhdCBjYW4gYmUgdXNlZCBpbiBkZXNjcmliaW5nIGEgdXNiX2RldmljZV9pZCBmb3IKKyAgICAgZHJpdmVycyB0aGF0IHN1cHBvcnQgYSB3aG9sZSBjbGFzcyBvZiBVU0IgZHJpdmVycy4gU2VlIHVzYi5oIGZvciBtb3JlCisgICAgIGluZm9ybWF0aW9uIG9uIHRoaXMuCisgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJkZXZpY2UiPgorICAgICAgPHRpdGxlPkRldmljZSBvcGVyYXRpb248L3RpdGxlPgorICA8cGFyYT4KKyAgICAgV2hlbiBhIGRldmljZSBpcyBwbHVnZ2VkIGludG8gdGhlIFVTQiBidXMgdGhhdCBtYXRjaGVzIHRoZSBkZXZpY2UgSUQKKyAgICAgcGF0dGVybiB0aGF0IHlvdXIgZHJpdmVyIHJlZ2lzdGVyZWQgd2l0aCB0aGUgVVNCIGNvcmUsIHRoZSBwcm9iZSBmdW5jdGlvbgorICAgICBpcyBjYWxsZWQuIFRoZSB1c2JfZGV2aWNlIHN0cnVjdHVyZSwgaW50ZXJmYWNlIG51bWJlciBhbmQgdGhlIGludGVyZmFjZSBJRAorICAgICBhcmUgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbjoKKyAgPC9wYXJhPgorICA8cHJvZ3JhbWxpc3Rpbmc+CitzdGF0aWMgaW50IHNrZWxfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSwKKyAgICBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpCisgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgIDxwYXJhPgorICAgICBUaGUgZHJpdmVyIG5vdyBuZWVkcyB0byB2ZXJpZnkgdGhhdCB0aGlzIGRldmljZSBpcyBhY3R1YWxseSBvbmUgdGhhdCBpdAorICAgICBjYW4gYWNjZXB0LiBJZiBzbywgaXQgcmV0dXJucyAwLgorICAgICBJZiBub3QsIG9yIGlmIGFueSBlcnJvciBvY2N1cnMgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBhbiBlcnJvcmNvZGUKKyAgICAgKHN1Y2ggYXMgPGxpdGVyYWw+LUVOT01FTTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+LUVOT0RFVjwvbGl0ZXJhbD4pCisgICAgIGlzIHJldHVybmVkIGZyb20gdGhlIHByb2JlIGZ1bmN0aW9uLgorICA8L3BhcmE+CisgIDxwYXJhPgorICAgICBJbiB0aGUgc2tlbGV0b24gZHJpdmVyLCB3ZSBkZXRlcm1pbmUgd2hhdCBlbmQgcG9pbnRzIGFyZSBtYXJrZWQgYXMgYnVsay1pbgorICAgICBhbmQgYnVsay1vdXQuIFdlIGNyZWF0ZSBidWZmZXJzIHRvIGhvbGQgdGhlIGRhdGEgdGhhdCB3aWxsIGJlIHNlbnQgYW5kCisgICAgIHJlY2VpdmVkIGZyb20gdGhlIGRldmljZSwgYW5kIGEgVVNCIHVyYiB0byB3cml0ZSBkYXRhIHRvIHRoZSBkZXZpY2UgaXMKKyAgICAgaW5pdGlhbGl6ZWQuCisgIDwvcGFyYT4KKyAgPHBhcmE+CisgICAgIENvbnZlcnNlbHksIHdoZW4gdGhlIGRldmljZSBpcyByZW1vdmVkIGZyb20gdGhlIFVTQiBidXMsIHRoZSBkaXNjb25uZWN0CisgICAgIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZSBkZXZpY2UgcG9pbnRlci4gVGhlIGRyaXZlciBuZWVkcyB0byBjbGVhbiBhbnkKKyAgICAgcHJpdmF0ZSBkYXRhIHRoYXQgaGFzIGJlZW4gYWxsb2NhdGVkIGF0IHRoaXMgdGltZSBhbmQgdG8gc2h1dCBkb3duIGFueQorICAgICBwZW5kaW5nIHVyYnMgdGhhdCBhcmUgaW4gdGhlIFVTQiBzeXN0ZW0uCisgIDwvcGFyYT4KKyAgPHBhcmE+CisgICAgIE5vdyB0aGF0IHRoZSBkZXZpY2UgaXMgcGx1Z2dlZCBpbnRvIHRoZSBzeXN0ZW0gYW5kIHRoZSBkcml2ZXIgaXMgYm91bmQgdG8KKyAgICAgdGhlIGRldmljZSwgYW55IG9mIHRoZSBmdW5jdGlvbnMgaW4gdGhlIGZpbGVfb3BlcmF0aW9ucyBzdHJ1Y3R1cmUgdGhhdAorICAgICB3ZXJlIHBhc3NlZCB0byB0aGUgVVNCIHN1YnN5c3RlbSB3aWxsIGJlIGNhbGxlZCBmcm9tIGEgdXNlciBwcm9ncmFtIHRyeWluZworICAgICB0byB0YWxrIHRvIHRoZSBkZXZpY2UuIFRoZSBmaXJzdCBmdW5jdGlvbiBjYWxsZWQgd2lsbCBiZSBvcGVuLCBhcyB0aGUKKyAgICAgcHJvZ3JhbSB0cmllcyB0byBvcGVuIHRoZSBkZXZpY2UgZm9yIEkvTy4gV2UgaW5jcmVtZW50IG91ciBwcml2YXRlIHVzYWdlCisgICAgIGNvdW50IGFuZCBzYXZlIGEgcG9pbnRlciB0byBvdXIgaW50ZXJuYWwgc3RydWN0dXJlIGluIHRoZSBmaWxlCisgICAgIHN0cnVjdHVyZS4gVGhpcyBpcyBkb25lIHNvIHRoYXQgZnV0dXJlIGNhbGxzIHRvIGZpbGUgb3BlcmF0aW9ucyB3aWxsCisgICAgIGVuYWJsZSB0aGUgZHJpdmVyIHRvIGRldGVybWluZSB3aGljaCBkZXZpY2UgdGhlIHVzZXIgaXMgYWRkcmVzc2luZy4gIEFsbAorICAgICBvZiB0aGlzIGlzIGRvbmUgd2l0aCB0aGUgZm9sbG93aW5nIGNvZGU6CisgIDwvcGFyYT4KKyAgPHByb2dyYW1saXN0aW5nPgorLyogaW5jcmVtZW50IG91ciB1c2FnZSBjb3VudCBmb3IgdGhlIG1vZHVsZSAqLworKytza2VsLT5vcGVuX2NvdW50OworCisvKiBzYXZlIG91ciBvYmplY3QgaW4gdGhlIGZpbGUncyBwcml2YXRlIHN0cnVjdHVyZSAqLworZmlsZS0+cHJpdmF0ZV9kYXRhID0gZGV2OworICA8L3Byb2dyYW1saXN0aW5nPgorICA8cGFyYT4KKyAgICAgQWZ0ZXIgdGhlIG9wZW4gZnVuY3Rpb24gaXMgY2FsbGVkLCB0aGUgcmVhZCBhbmQgd3JpdGUgZnVuY3Rpb25zIGFyZSBjYWxsZWQKKyAgICAgdG8gcmVjZWl2ZSBhbmQgc2VuZCBkYXRhIHRvIHRoZSBkZXZpY2UuIEluIHRoZSBza2VsX3dyaXRlIGZ1bmN0aW9uLCB3ZQorICAgICByZWNlaXZlIGEgcG9pbnRlciB0byBzb21lIGRhdGEgdGhhdCB0aGUgdXNlciB3YW50cyB0byBzZW5kIHRvIHRoZSBkZXZpY2UKKyAgICAgYW5kIHRoZSBzaXplIG9mIHRoZSBkYXRhLiBUaGUgZnVuY3Rpb24gZGV0ZXJtaW5lcyBob3cgbXVjaCBkYXRhIGl0IGNhbgorICAgICBzZW5kIHRvIHRoZSBkZXZpY2UgYmFzZWQgb24gdGhlIHNpemUgb2YgdGhlIHdyaXRlIHVyYiBpdCBoYXMgY3JlYXRlZCAodGhpcworICAgICBzaXplIGRlcGVuZHMgb24gdGhlIHNpemUgb2YgdGhlIGJ1bGsgb3V0IGVuZCBwb2ludCB0aGF0IHRoZSBkZXZpY2UgaGFzKS4KKyAgICAgVGhlbiBpdCBjb3BpZXMgdGhlIGRhdGEgZnJvbSB1c2VyIHNwYWNlIHRvIGtlcm5lbCBzcGFjZSwgcG9pbnRzIHRoZSB1cmIgdG8KKyAgICAgdGhlIGRhdGEgYW5kIHN1Ym1pdHMgdGhlIHVyYiB0byB0aGUgVVNCIHN1YnN5c3RlbS4gIFRoaXMgY2FuIGJlIHNlZW4gaW4KKyAgICAgdGhlIGZvbGxvd2luZyBjb2RlOgorICA8L3BhcmE+CisgIDxwcm9ncmFtbGlzdGluZz4KKy8qIHdlIGNhbiBvbmx5IHdyaXRlIGFzIG11Y2ggYXMgMSB1cmIgd2lsbCBob2xkICovCitieXRlc193cml0dGVuID0gKGNvdW50ID4gc2tlbC0+YnVsa19vdXRfc2l6ZSkgPyBza2VsLT5idWxrX291dF9zaXplIDogY291bnQ7CisKKy8qIGNvcHkgdGhlIGRhdGEgZnJvbSB1c2VyIHNwYWNlIGludG8gb3VyIHVyYiAqLworY29weV9mcm9tX3VzZXIoc2tlbC0+d3JpdGVfdXJiLT50cmFuc2Zlcl9idWZmZXIsIGJ1ZmZlciwgYnl0ZXNfd3JpdHRlbik7CisKKy8qIHNldCB1cCBvdXIgdXJiICovCit1c2JfZmlsbF9idWxrX3VyYihza2VsLT53cml0ZV91cmIsCisgICAgICAgICAgICAgICAgICBza2VsLT5kZXYsCisgICAgICAgICAgICAgICAgICB1c2Jfc25kYnVsa3BpcGUoc2tlbC0+ZGV2LCBza2VsLT5idWxrX291dF9lbmRwb2ludEFkZHIpLAorICAgICAgICAgICAgICAgICAgc2tlbC0+d3JpdGVfdXJiLT50cmFuc2Zlcl9idWZmZXIsCisgICAgICAgICAgICAgICAgICBieXRlc193cml0dGVuLAorICAgICAgICAgICAgICAgICAgc2tlbF93cml0ZV9idWxrX2NhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgc2tlbCk7CisKKy8qIHNlbmQgdGhlIGRhdGEgb3V0IHRoZSBidWxrIHBvcnQgKi8KK3Jlc3VsdCA9IHVzYl9zdWJtaXRfdXJiKHNrZWwtPndyaXRlX3VyYik7CitpZiAocmVzdWx0KSB7CisgICAgICAgIGVycigmcXVvdDtGYWlsZWQgc3VibWl0dGluZyB3cml0ZSB1cmIsIGVycm9yICVkJnF1b3Q7LCByZXN1bHQpOworfQorICA8L3Byb2dyYW1saXN0aW5nPgorICA8cGFyYT4KKyAgICAgV2hlbiB0aGUgd3JpdGUgdXJiIGlzIGZpbGxlZCB1cCB3aXRoIHRoZSBwcm9wZXIgaW5mb3JtYXRpb24gdXNpbmcgdGhlCisgICAgIHVzYl9maWxsX2J1bGtfdXJiIGZ1bmN0aW9uLCB3ZSBwb2ludCB0aGUgdXJiJ3MgY29tcGxldGlvbiBjYWxsYmFjayB0byBjYWxsIG91cgorICAgICBvd24gc2tlbF93cml0ZV9idWxrX2NhbGxiYWNrIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZQorICAgICB1cmIgaXMgZmluaXNoZWQgYnkgdGhlIFVTQiBzdWJzeXN0ZW0uIFRoZSBjYWxsYmFjayBmdW5jdGlvbiBpcyBjYWxsZWQgaW4KKyAgICAgaW50ZXJydXB0IGNvbnRleHQsIHNvIGNhdXRpb24gbXVzdCBiZSB0YWtlbiBub3QgdG8gZG8gdmVyeSBtdWNoIHByb2Nlc3NpbmcKKyAgICAgYXQgdGhhdCB0aW1lLiBPdXIgaW1wbGVtZW50YXRpb24gb2Ygc2tlbF93cml0ZV9idWxrX2NhbGxiYWNrIG1lcmVseQorICAgICByZXBvcnRzIGlmIHRoZSB1cmIgd2FzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgb3Igbm90IGFuZCB0aGVuIHJldHVybnMuCisgIDwvcGFyYT4KKyAgPHBhcmE+CisgICAgIFRoZSByZWFkIGZ1bmN0aW9uIHdvcmtzIGEgYml0IGRpZmZlcmVudGx5IGZyb20gdGhlIHdyaXRlIGZ1bmN0aW9uIGluIHRoYXQKKyAgICAgd2UgZG8gbm90IHVzZSBhbiB1cmIgdG8gdHJhbnNmZXIgZGF0YSBmcm9tIHRoZSBkZXZpY2UgdG8gdGhlIGRyaXZlci4KKyAgICAgSW5zdGVhZCB3ZSBjYWxsIHRoZSB1c2JfYnVsa19tc2cgZnVuY3Rpb24sIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHNlbmQgb3IKKyAgICAgcmVjZWl2ZSBkYXRhIGZyb20gYSBkZXZpY2Ugd2l0aG91dCBoYXZpbmcgdG8gY3JlYXRlIHVyYnMgYW5kIGhhbmRsZQorICAgICB1cmIgY29tcGxldGlvbiBjYWxsYmFjayBmdW5jdGlvbnMuIFdlIGNhbGwgdGhlIHVzYl9idWxrX21zZyBmdW5jdGlvbiwKKyAgICAgZ2l2aW5nIGl0IGEgYnVmZmVyIGludG8gd2hpY2ggdG8gcGxhY2UgYW55IGRhdGEgcmVjZWl2ZWQgZnJvbSB0aGUgZGV2aWNlCisgICAgIGFuZCBhIHRpbWVvdXQgdmFsdWUuIElmIHRoZSB0aW1lb3V0IHBlcmlvZCBleHBpcmVzIHdpdGhvdXQgcmVjZWl2aW5nIGFueQorICAgICBkYXRhIGZyb20gdGhlIGRldmljZSwgdGhlIGZ1bmN0aW9uIHdpbGwgZmFpbCBhbmQgcmV0dXJuIGFuIGVycm9yIG1lc3NhZ2UuCisgICAgIFRoaXMgY2FuIGJlIHNob3duIHdpdGggdGhlIGZvbGxvd2luZyBjb2RlOgorICA8L3BhcmE+CisgIDxwcm9ncmFtbGlzdGluZz4KKy8qIGRvIGFuIGltbWVkaWF0ZSBidWxrIHJlYWQgdG8gZ2V0IGRhdGEgZnJvbSB0aGUgZGV2aWNlICovCityZXR2YWwgPSB1c2JfYnVsa19tc2cgKHNrZWwtPmRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgdXNiX3JjdmJ1bGtwaXBlIChza2VsLT5kZXYsCisgICAgICAgICAgICAgICAgICAgICAgIHNrZWwtPmJ1bGtfaW5fZW5kcG9pbnRBZGRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgc2tlbC0+YnVsa19pbl9idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgIHNrZWwtPmJ1bGtfaW5fc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgJmFtcDtjb3VudCwgSFoqMTApOworLyogaWYgdGhlIHJlYWQgd2FzIHN1Y2Nlc3NmdWwsIGNvcHkgdGhlIGRhdGEgdG8gdXNlciBzcGFjZSAqLworaWYgKCFyZXR2YWwpIHsKKyAgICAgICAgaWYgKGNvcHlfdG9fdXNlciAoYnVmZmVyLCBza2VsLT5idWxrX2luX2J1ZmZlciwgY291bnQpKQorICAgICAgICAgICAgICAgIHJldHZhbCA9IC1FRkFVTFQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR2YWwgPSBjb3VudDsKK30KKyAgPC9wcm9ncmFtbGlzdGluZz4KKyAgPHBhcmE+CisgICAgIFRoZSB1c2JfYnVsa19tc2cgZnVuY3Rpb24gY2FuIGJlIHZlcnkgdXNlZnVsIGZvciBkb2luZyBzaW5nbGUgcmVhZHMgb3IKKyAgICAgd3JpdGVzIHRvIGEgZGV2aWNlOyBob3dldmVyLCBpZiB5b3UgbmVlZCB0byByZWFkIG9yIHdyaXRlIGNvbnN0YW50bHkgdG8gYQorICAgICBkZXZpY2UsIGl0IGlzIHJlY29tbWVuZGVkIHRvIHNldCB1cCB5b3VyIG93biB1cmJzIGFuZCBzdWJtaXQgdGhlbSB0byB0aGUKKyAgICAgVVNCIHN1YnN5c3RlbS4KKyAgPC9wYXJhPgorICA8cGFyYT4KKyAgICAgV2hlbiB0aGUgdXNlciBwcm9ncmFtIHJlbGVhc2VzIHRoZSBmaWxlIGhhbmRsZSB0aGF0IGl0IGhhcyBiZWVuIHVzaW5nIHRvCisgICAgIHRhbGsgdG8gdGhlIGRldmljZSwgdGhlIHJlbGVhc2UgZnVuY3Rpb24gaW4gdGhlIGRyaXZlciBpcyBjYWxsZWQuIEluIHRoaXMKKyAgICAgZnVuY3Rpb24gd2UgZGVjcmVtZW50IG91ciBwcml2YXRlIHVzYWdlIGNvdW50IGFuZCB3YWl0IGZvciBwb3NzaWJsZQorICAgICBwZW5kaW5nIHdyaXRlczoKKyAgPC9wYXJhPgorICA8cHJvZ3JhbWxpc3Rpbmc+CisvKiBkZWNyZW1lbnQgb3VyIHVzYWdlIGNvdW50IGZvciB0aGUgZGV2aWNlICovCistLXNrZWwtPm9wZW5fY291bnQ7CisgIDwvcHJvZ3JhbWxpc3Rpbmc+CisgIDxwYXJhPgorICAgICBPbmUgb2YgdGhlIG1vcmUgZGlmZmljdWx0IHByb2JsZW1zIHRoYXQgVVNCIGRyaXZlcnMgbXVzdCBiZSBhYmxlIHRvIGhhbmRsZQorICAgICBzbW9vdGhseSBpcyB0aGUgZmFjdCB0aGF0IHRoZSBVU0IgZGV2aWNlIG1heSBiZSByZW1vdmVkIGZyb20gdGhlIHN5c3RlbSBhdAorICAgICBhbnkgcG9pbnQgaW4gdGltZSwgZXZlbiBpZiBhIHByb2dyYW0gaXMgY3VycmVudGx5IHRhbGtpbmcgdG8gaXQuIEl0IG5lZWRzCisgICAgIHRvIGJlIGFibGUgdG8gc2h1dCBkb3duIGFueSBjdXJyZW50IHJlYWRzIGFuZCB3cml0ZXMgYW5kIG5vdGlmeSB0aGUKKyAgICAgdXNlci1zcGFjZSBwcm9ncmFtcyB0aGF0IHRoZSBkZXZpY2UgaXMgbm8gbG9uZ2VyIHRoZXJlLiBUaGUgZm9sbG93aW5nCisgICAgIGNvZGUgKGZ1bmN0aW9uIDxmdW5jdGlvbj5za2VsX2RlbGV0ZTwvZnVuY3Rpb24+KQorICAgICBpcyBhbiBleGFtcGxlIG9mIGhvdyB0byBkbyB0aGlzOiA8L3BhcmE+CisgIDxwcm9ncmFtbGlzdGluZz4KK3N0YXRpYyBpbmxpbmUgdm9pZCBza2VsX2RlbGV0ZSAoc3RydWN0IHVzYl9za2VsICpkZXYpCit7CisgICAga2ZyZWUgKGRldi0+YnVsa19pbl9idWZmZXIpOworICAgIGlmIChkZXYtPmJ1bGtfb3V0X2J1ZmZlciAhPSBOVUxMKQorICAgICAgICB1c2JfZnJlZV9jb2hlcmVudCAoZGV2LT51ZGV2LCBkZXYtPmJ1bGtfb3V0X3NpemUsCisgICAgICAgICAgICBkZXYtPmJ1bGtfb3V0X2J1ZmZlciwKKyAgICAgICAgICAgIGRldi0+d3JpdGVfdXJiLT50cmFuc2Zlcl9kbWEpOworICAgIHVzYl9mcmVlX3VyYiAoZGV2LT53cml0ZV91cmIpOworICAgIGtmcmVlIChkZXYpOworfQorICA8L3Byb2dyYW1saXN0aW5nPgorICA8cGFyYT4KKyAgICAgSWYgYSBwcm9ncmFtIGN1cnJlbnRseSBoYXMgYW4gb3BlbiBoYW5kbGUgdG8gdGhlIGRldmljZSwgd2UgcmVzZXQgdGhlIGZsYWcKKyAgICAgPGxpdGVyYWw+ZGV2aWNlX3ByZXNlbnQ8L2xpdGVyYWw+LiBGb3IKKyAgICAgZXZlcnkgcmVhZCwgd3JpdGUsIHJlbGVhc2UgYW5kIG90aGVyIGZ1bmN0aW9ucyB0aGF0IGV4cGVjdCBhIGRldmljZSB0byBiZQorICAgICBwcmVzZW50LCB0aGUgZHJpdmVyIGZpcnN0IGNoZWNrcyB0aGlzIGZsYWcgdG8gc2VlIGlmIHRoZSBkZXZpY2UgaXMKKyAgICAgc3RpbGwgcHJlc2VudC4gSWYgbm90LCBpdCByZWxlYXNlcyB0aGF0IHRoZSBkZXZpY2UgaGFzIGRpc2FwcGVhcmVkLCBhbmQgYQorICAgICAtRU5PREVWIGVycm9yIGlzIHJldHVybmVkIHRvIHRoZSB1c2VyLXNwYWNlIHByb2dyYW0uIFdoZW4gdGhlIHJlbGVhc2UKKyAgICAgZnVuY3Rpb24gaXMgZXZlbnR1YWxseSBjYWxsZWQsIGl0IGRldGVybWluZXMgaWYgdGhlcmUgaXMgbm8gZGV2aWNlCisgICAgIGFuZCBpZiBub3QsIGl0IGRvZXMgdGhlIGNsZWFudXAgdGhhdCB0aGUgc2tlbF9kaXNjb25uZWN0CisgICAgIGZ1bmN0aW9uIG5vcm1hbGx5IGRvZXMgaWYgdGhlcmUgYXJlIG5vIG9wZW4gZmlsZXMgb24gdGhlIGRldmljZSAoc2VlCisgICAgIExpc3RpbmcgNSkuCisgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJpc28iPgorICAgICAgPHRpdGxlPklzb2Nocm9ub3VzIERhdGE8L3RpdGxlPgorICA8cGFyYT4KKyAgICAgVGhpcyB1c2Itc2tlbGV0b24gZHJpdmVyIGRvZXMgbm90IGhhdmUgYW55IGV4YW1wbGVzIG9mIGludGVycnVwdCBvcgorICAgICBpc29jaHJvbm91cyBkYXRhIGJlaW5nIHNlbnQgdG8gb3IgZnJvbSB0aGUgZGV2aWNlLiBJbnRlcnJ1cHQgZGF0YSBpcyBzZW50CisgICAgIGFsbW9zdCBleGFjdGx5IGFzIGJ1bGsgZGF0YSBpcywgd2l0aCBhIGZldyBtaW5vciBleGNlcHRpb25zLiAgSXNvY2hyb25vdXMKKyAgICAgZGF0YSB3b3JrcyBkaWZmZXJlbnRseSB3aXRoIGNvbnRpbnVvdXMgc3RyZWFtcyBvZiBkYXRhIGJlaW5nIHNlbnQgdG8gb3IKKyAgICAgZnJvbSB0aGUgZGV2aWNlLiBUaGUgYXVkaW8gYW5kIHZpZGVvIGNhbWVyYSBkcml2ZXJzIGFyZSB2ZXJ5IGdvb2QgZXhhbXBsZXMKKyAgICAgb2YgZHJpdmVycyB0aGF0IGhhbmRsZSBpc29jaHJvbm91cyBkYXRhIGFuZCB3aWxsIGJlIHVzZWZ1bCBpZiB5b3UgYWxzbworICAgICBuZWVkIHRvIGRvIHRoaXMuCisgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorICAKKyAgPGNoYXB0ZXIgaWQ9IkNvbmNsdXNpb24iPgorICAgICAgPHRpdGxlPkNvbmNsdXNpb248L3RpdGxlPgorICA8cGFyYT4KKyAgICAgV3JpdGluZyBMaW51eCBVU0IgZGV2aWNlIGRyaXZlcnMgaXMgbm90IGEgZGlmZmljdWx0IHRhc2sgYXMgdGhlCisgICAgIHVzYi1za2VsZXRvbiBkcml2ZXIgc2hvd3MuIFRoaXMgZHJpdmVyLCBjb21iaW5lZCB3aXRoIHRoZSBvdGhlciBjdXJyZW50CisgICAgIFVTQiBkcml2ZXJzLCBzaG91bGQgcHJvdmlkZSBlbm91Z2ggZXhhbXBsZXMgdG8gaGVscCBhIGJlZ2lubmluZyBhdXRob3IKKyAgICAgY3JlYXRlIGEgd29ya2luZyBkcml2ZXIgaW4gYSBtaW5pbWFsIGFtb3VudCBvZiB0aW1lLiBUaGUgbGludXgtdXNiLWRldmVsCisgICAgIG1haWxpbmcgbGlzdCBhcmNoaXZlcyBhbHNvIGNvbnRhaW4gYSBsb3Qgb2YgaGVscGZ1bCBpbmZvcm1hdGlvbi4KKyAgPC9wYXJhPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9InJlc291cmNlcyI+CisgICAgICA8dGl0bGU+UmVzb3VyY2VzPC90aXRsZT4KKyAgPHBhcmE+CisgICAgIFRoZSBMaW51eCBVU0IgUHJvamVjdDogPHVsaW5rIHVybD0iaHR0cDovL3d3dy5saW51eC11c2Iub3JnIj5odHRwOi8vd3d3LmxpbnV4LXVzYi5vcmcvPC91bGluaz4KKyAgPC9wYXJhPgorICA8cGFyYT4KKyAgICAgTGludXggSG90cGx1ZyBQcm9qZWN0OiA8dWxpbmsgdXJsPSJodHRwOi8vbGludXgtaG90cGx1Zy5zb3VyY2Vmb3JnZS5uZXQiPmh0dHA6Ly9saW51eC1ob3RwbHVnLnNvdXJjZWZvcmdlLm5ldC88L3VsaW5rPgorICA8L3BhcmE+CisgIDxwYXJhPgorICAgICBMaW51eCBVU0IgV29ya2luZyBEZXZpY2VzIExpc3Q6IDx1bGluayB1cmw9Imh0dHA6Ly93d3cucWJpay5jaC91c2IvZGV2aWNlcyI+aHR0cDovL3d3dy5xYmlrLmNoL3VzYi9kZXZpY2VzLzwvdWxpbms+CisgIDwvcGFyYT4KKyAgPHBhcmE+CisgICAgIGxpbnV4LXVzYi1kZXZlbCBNYWlsaW5nIExpc3QgQXJjaGl2ZXM6IDx1bGluayB1cmw9Imh0dHA6Ly9tYXJjLnRoZWFpbXNncm91cC5jb20vP2w9bGludXgtdXNiLWRldmVsIj5odHRwOi8vbWFyYy50aGVhaW1zZ3JvdXAuY29tLz9sPWxpbnV4LXVzYi1kZXZlbDwvdWxpbms+CisgIDwvcGFyYT4KKyAgPHBhcmE+CisgICAgIFByb2dyYW1taW5nIEd1aWRlIGZvciBMaW51eCBVU0IgRGV2aWNlIERyaXZlcnM6IDx1bGluayB1cmw9Imh0dHA6Ly91c2IuY3MudHVtLmVkdS91c2Jkb2MiPmh0dHA6Ly91c2IuY3MudHVtLmVkdS91c2Jkb2M8L3VsaW5rPgorICA8L3BhcmE+CisgIDxwYXJhPgorICAgICBVU0IgSG9tZSBQYWdlOiA8dWxpbmsgdXJsPSJodHRwOi8vd3d3LnVzYi5vcmciPmh0dHA6Ly93d3cudXNiLm9yZzwvdWxpbms+CisgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorCis8L2Jvb2s+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svejg1MzBib29rLnRtcGwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svejg1MzBib29rLnRtcGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYzODgzYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay96ODUzMGJvb2sudG1wbApAQCAtMCwwICsxLDM3MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhRE9DVFlQRSBib29rIFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFhNTCBWNC4xLjIvL0VOIgorCSJodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2RvY2Jvb2sveG1sLzQuMS4yL2RvY2Jvb2t4LmR0ZCIgW10+CisKKzxib29rIGlkPSJaODUyMzBHdWlkZSI+CisgPGJvb2tpbmZvPgorICA8dGl0bGU+Wjg1MzAgUHJvZ3JhbW1pbmcgR3VpZGU8L3RpdGxlPgorICAKKyAgPGF1dGhvcmdyb3VwPgorICAgPGF1dGhvcj4KKyAgICA8Zmlyc3RuYW1lPkFsYW48L2ZpcnN0bmFtZT4KKyAgICA8c3VybmFtZT5Db3g8L3N1cm5hbWU+CisgICAgPGFmZmlsaWF0aW9uPgorICAgICA8YWRkcmVzcz4KKyAgICAgIDxlbWFpbD5hbGFuQGx4b3JndWsudWt1dS5vcmcudWs8L2VtYWlsPgorICAgICA8L2FkZHJlc3M+CisgICAgPC9hZmZpbGlhdGlvbj4KKyAgIDwvYXV0aG9yPgorICA8L2F1dGhvcmdyb3VwPgorCisgIDxjb3B5cmlnaHQ+CisgICA8eWVhcj4yMDAwPC95ZWFyPgorICAgPGhvbGRlcj5BbGFuIENveDwvaG9sZGVyPgorICA8L2NvcHlyaWdodD4KKworICA8bGVnYWxub3RpY2U+CisgICA8cGFyYT4KKyAgICAgVGhpcyBkb2N1bWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlCisgICAgIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIKKyAgICAgdmVyc2lvbi4KKyAgIDwvcGFyYT4KKyAgICAgIAorICAgPHBhcmE+CisgICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKyAgICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAorICAgICB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisgICAgIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAgIDwvcGFyYT4KKyAgICAgIAorICAgPHBhcmE+CisgICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICAgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgICAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgICAgIE1BIDAyMTExLTEzMDcgVVNBCisgICA8L3BhcmE+CisgICAgICAKKyAgIDxwYXJhPgorICAgICBGb3IgbW9yZSBkZXRhaWxzIHNlZSB0aGUgZmlsZSBDT1BZSU5HIGluIHRoZSBzb3VyY2UKKyAgICAgZGlzdHJpYnV0aW9uIG9mIExpbnV4LgorICAgPC9wYXJhPgorICA8L2xlZ2Fsbm90aWNlPgorIDwvYm9va2luZm8+CisKKzx0b2M+PC90b2M+CisKKyAgPGNoYXB0ZXIgaWQ9ImludHJvIj4KKyAgICAgIDx0aXRsZT5JbnRyb2R1Y3Rpb248L3RpdGxlPgorICA8cGFyYT4KKwlUaGUgWjg1eDMwIGZhbWlseSBzeW5jaHJvbm91cy9hc3luY2hyb25vdXMgY29udHJvbGxlciBjaGlwcyBhcmUKKwl1c2VkIG9uIGEgbGFyZ2UgbnVtYmVyIG9mIGNoZWFwIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmRzLiBUaGUKKwlrZXJuZWwgcHJvdmlkZXMgYSBjb3JlIGludGVyZmFjZSBsYXllciB0aGF0IGlzIGRlc2lnbmVkIHRvIG1ha2UKKwlpdCBlYXN5IHRvIHByb3ZpZGUgV0FOIHNlcnZpY2VzIHVzaW5nIHRoaXMgY2hpcC4KKyAgPC9wYXJhPgorICA8cGFyYT4KKwlUaGUgY3VycmVudCBkcml2ZXIgb25seSBzdXBwb3J0IHN5bmNocm9ub3VzIG9wZXJhdGlvbi4gTWVyZ2luZyB0aGUKKwlhc3luY2hyb25vdXMgZHJpdmVyIHN1cHBvcnQgaW50byB0aGlzIGNvZGUgdG8gYWxsb3cgYW55IFo4NXgzMAorCWRldmljZSB0byBiZSB1c2VkIGFzIGJvdGggYSB0dHkgaW50ZXJmYWNlIGFuZCBhcyBhIHN5bmNocm9ub3VzIAorCWNvbnRyb2xsZXIgaXMgYSBwcm9qZWN0IGZvciBMaW51eCBwb3N0IHRoZSAyLjQgcmVsZWFzZQorICA8L3BhcmE+CisgIDwvY2hhcHRlcj4KKyAgCisgIDxjaGFwdGVyIGlkPSJEcml2ZXJfTW9kZXMiPgorIAk8dGl0bGU+RHJpdmVyIE1vZGVzPC90aXRsZT4KKyAgPHBhcmE+CisJVGhlIFo4NTIzMCBkcml2ZXIgbGF5ZXIgY2FuIGRyaXZlIFo4NTMwLCBaODVDMzAgYW5kIFo4NTIzMCBkZXZpY2VzCisJaW4gdGhyZWUgZGlmZmVyZW50IG1vZGVzLiBFYWNoIG1vZGUgY2FuIGJlIGFwcGxpZWQgdG8gYW4gaW5kaXZpZHVhbAorCWNoYW5uZWwgb24gdGhlIGNoaXAgKGVhY2ggY2hpcCBoYXMgdHdvIGNoYW5uZWxzKS4KKyAgPC9wYXJhPgorICA8cGFyYT4KKwlUaGUgUElPIHN5bmNocm9ub3VzIG1vZGUgc3VwcG9ydHMgdGhlIG1vc3QgY29tbW9uIFo4NTMwIHdpcmluZy4gSGVyZQorCXRoZSBjaGlwIGlzIGludGVyZmFjZSB0byB0aGUgSS9PIGFuZCBpbnRlcnJ1cHQgZmFjaWxpdGllcyBvZiB0aGUKKwlob3N0IG1hY2hpbmUgYnV0IG5vdCB0byB0aGUgRE1BIHN1YnN5c3RlbS4gV2hlbiBydW5uaW5nIFBJTyB0aGUKKwlaODUzMCBoYXMgZXh0cmVtZWx5IHRpZ2h0IHRpbWluZyByZXF1aXJlbWVudHMuIERvaW5nIGhpZ2ggc3BlZWRzLAorCWV2ZW4gd2l0aCBhIFo4NTIzMCB3aWxsIGJlIHRyaWNreS4gVHlwaWNhbGx5IHlvdSBzaG91bGQgZXhwZWN0IHRvCisJYWNoaWV2ZSBhdCBiZXN0IDk2MDAgYmF1ZCB3aXRoIGEgWjhDNTMwIGFuZCA2NEtiaXRzIHdpdGggYSBaODUyMzAuCisgIDwvcGFyYT4KKyAgPHBhcmE+CisJVGhlIERNQSBtb2RlIHN1cHBvcnRzIHRoZSBjaGlwIHdoZW4gaXQgaXMgY29uZmlndXJlZCB0byB1c2UgZHVhbCBETUEKKwljaGFubmVscyBvbiBhbiBJU0EgYnVzLiBUaGUgYmV0dGVyIGNhcmRzIHRlbmQgdG8gc3VwcG9ydCB0aGlzIG1vZGUKKwlvZiBvcGVyYXRpb24gZm9yIGEgc2luZ2xlIGNoYW5uZWwuIFdpdGggRE1BIHJ1bm5pbmcgdGhlIFo4NTIzMCB0b3BzCisJb3V0IHdoZW4gaXQgc3RhcnRzIHRvIGhpdCBJU0EgRE1BIGNvbnN0cmFpbnRzIGF0IGFib3V0IDUxMktiaXRzLiBJdAorCWlzIHdvcnRoIG5vdGluZyBoZXJlIHRoYXQgbWFueSBQQyBtYWNoaW5lcyBoYW5nIG9yIGNyYXNoIHdoZW4gdGhlCisJY2hpcCBpcyBkcml2ZW4gZmFzdCBlbm91Z2ggdG8gaG9sZCB0aGUgSVNBIGJ1cyBzb2xpZC4KKyAgPC9wYXJhPgorICA8cGFyYT4KKwlUcmFuc21pdCBETUEgbW9kZSB1c2VzIGEgc2luZ2xlIERNQSBjaGFubmVsLiBUaGUgRE1BIGNoYW5uZWwgaXMgdXNlZAorCWZvciB0cmFuc21pc3Npb24gYXMgdGhlIHRyYW5zbWl0IEZJRk8gaXMgc21hbGxlciB0aGFuIHRoZSByZWNlaXZlCisJRklGTy4gaXQgZ2l2ZXMgYmV0dGVyIHBlcmZvcm1hbmNlIHRoYW4gcHVyZSBQSU8gbW9kZSBidXQgaXMgbm93aGVyZQorCW5lYXIgYXMgaWRlYWwgYXMgcHVyZSBETUEgbW9kZS4gCisgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJVc2luZ190aGVfWjg1MjMwX2RyaXZlciI+CisgCTx0aXRsZT5Vc2luZyB0aGUgWjg1MjMwIGRyaXZlcjwvdGl0bGU+CisgIDxwYXJhPgorCVRoZSBaODUyMzAgZHJpdmVyIHByb3ZpZGVzIHRoZSBiYWNrIGVuZCBpbnRlcmZhY2UgdG8geW91ciBib2FyZC4gVG8KKwljb25maWd1cmUgYSBaODUzMCBpbnRlcmZhY2UgeW91IG5lZWQgdG8gZGV0ZWN0IHRoZSBib2FyZCBhbmQgdG8gCisJaWRlbnRpZnkgaXRzIHBvcnRzIGFuZCBpbnRlcnJ1cHQgcmVzb3VyY2VzLiBJdCBpcyBhbHNvIHlvdXIgcHJvYmxlbQorCXRvIHZlcmlmeSB0aGUgcmVzb3VyY2VzIGFyZSBhdmFpbGFibGUuCisgIDwvcGFyYT4KKyAgPHBhcmE+CisJSGF2aW5nIGlkZW50aWZpZWQgdGhlIGNoaXAgeW91IG5lZWQgdG8gZmlsbCBpbiBhIHN0cnVjdCB6ODUzMF9kZXYsCisJd2hpY2ggZGVzY3JpYmVzIGVhY2ggY2hpcC4gVGhpcyBvYmplY3QgbXVzdCBleGlzdCB1bnRpbCB5b3UgZmluYWxseQorCXNodXRkb3duIHRoZSBib2FyZC4gRmlyc3RseSB6ZXJvIHRoZSBhY3RpdmUgZmllbGQuIFRoaXMgZW5zdXJlcyAKKwlub3RoaW5nIGdvZXMgb2ZmIHdpdGhvdXQgeW91IGludGVuZGluZyBpdC4gVGhlIGlycSBmaWVsZCBzaG91bGQKKwliZSBzZXQgdG8gdGhlIGludGVycnVwdCBudW1iZXIgb2YgdGhlIGNoaXAuIChFYWNoIGNoaXAgaGFzIGEgc2luZ2xlCisJaW50ZXJydXB0IHNvdXJjZSByYXRoZXIgdGhhbiBlYWNoIGNoYW5uZWwpLiBZb3UgYXJlIHJlc3BvbnNpYmxlCisJZm9yIGFsbG9jYXRpbmcgdGhlIGludGVycnVwdCBsaW5lLiBUaGUgaW50ZXJydXB0IGhhbmRsZXIgc2hvdWxkIGJlCisJc2V0IHRvIDxmdW5jdGlvbj56ODUzMF9pbnRlcnJ1cHQ8L2Z1bmN0aW9uPi4gVGhlIGRldmljZSBpZCBzaG91bGQKKwliZSBzZXQgdG8gdGhlIHo4NTMwX2RldiBzdHJ1Y3R1cmUgcG9pbnRlci4gV2hldGhlciB0aGUgaW50ZXJydXB0IGNhbgorCWJlIHNoYXJlZCBvciBub3QgaXMgYm9hcmQgZGVwZW5kZW50LCBhbmQgdXAgdG8geW91IHRvIGluaXRpYWxpc2UuCisgIDwvcGFyYT4KKyAgPHBhcmE+CisJVGhlIHN0cnVjdHVyZSBob2xkcyB0d28gY2hhbm5lbCBzdHJ1Y3R1cmVzLiAKKwlJbml0aWFsaXNlIGNoYW5BLmN0cmxpbyBhbmQgY2hhbkEuZGF0YWlvIHdpdGggdGhlIGFkZHJlc3Mgb2YgdGhlCisJY29udHJvbCBhbmQgZGF0YSBwb3J0cy4gWW91IGNhbiBvciB0aGlzIHdpdGggWjg1MzBfUE9SVF9TTEVFUCB0bworCWluZGljYXRlIHlvdXIgaW50ZXJmYWNlIG5lZWRzIHRoZSA1dVMgZGVsYXkgZm9yIGNoaXAgc2V0dGxpbmcgZG9uZQorCWluIHNvZnR3YXJlLiBUaGUgUE9SVF9TTEVFUCBvcHRpb24gaXMgYXJjaGl0ZWN0dXJlIHNwZWNpZmljLiBPdGhlcgorCWZsYWdzIG1heSBiZWNvbWUgYXZhaWxhYmxlIG9uIGZ1dHVyZSBwbGF0Zm9ybXMsIGVnIGZvciBNTUlPLgorCUluaXRpYWxpc2UgdGhlIGNoYW5BLmlycXMgdG8gJmFtcDt6ODUzMF9ub3AgdG8gc3RhcnQgdGhlIGNoaXAgdXAKKwlhcyBkaXNhYmxlZCBhbmQgZGlzY2FyZGluZyBpbnRlcnJ1cHQgZXZlbnRzLiBUaGlzIGVuc3VyZXMgdGhhdAorCXN0cmF5IGludGVycnVwdHMgd2lsbCBiZSBtb3BwZWQgdXAgYW5kIG5vdCBoYW5nIHRoZSBidXMuIFNldAorCWNoYW5BLmRldiB0byBwb2ludCB0byB0aGUgZGV2aWNlIHN0cnVjdHVyZSBpdHNlbGYuIFRoZQorCXByaXZhdGUgYW5kIG5hbWUgZmllbGQgeW91IG1heSB1c2UgYXMgeW91IHdpc2guIFRoZSBwcml2YXRlIGZpZWxkCisJaXMgdW51c2VkIGJ5IHRoZSBaODUyMzAgbGF5ZXIuIFRoZSBuYW1lIGlzIHVzZWQgZm9yIGVycm9yIHJlcG9ydGluZworCWFuZCBpdCBtYXkgdGh1cyBtYWtlIHNlbnNlIHRvIG1ha2UgaXQgbWF0Y2ggdGhlIG5ldHdvcmsgbmFtZS4KKyAgPC9wYXJhPgorICA8cGFyYT4KKwlSZXBlYXQgdGhlIHNhbWUgb3BlcmF0aW9uIHdpdGggdGhlIEIgY2hhbm5lbCBpZiB5b3VyIGNoaXAgaGFzCisJYm90aCBjaGFubmVscyB3aXJlZCB0byBzb21ldGhpbmcgdXNlZnVsLiBUaGlzIGlzbid0IGFsd2F5cyB0aGUKKwljYXNlLiBJZiBpdCBpcyBub3Qgd2lyZWQgdGhlbiB0aGUgSS9PIHZhbHVlcyBkbyBub3QgbWF0dGVyLCBidXQKKwl5b3UgbXVzdCBpbml0aWFsaXNlIGNoYW5CLmRldi4KKyAgPC9wYXJhPgorICA8cGFyYT4KKwlJZiB5b3VyIGJvYXJkIGhhcyBETUEgZmFjaWxpdGllcyB0aGVuIGluaXRpYWxpc2UgdGhlIHR4ZG1hIGFuZAorCXJ4ZG1hIGZpZWxkcyBmb3IgdGhlIHJlbGV2YW50IGNoYW5uZWxzLiBZb3UgbXVzdCBhbHNvIGFsbG9jYXRlIHRoZQorCUlTQSBETUEgY2hhbm5lbHMgYW5kIGRvIGFueSBuZWNlc3NhcnkgYm9hcmQgbGV2ZWwgaW5pdGlhbGlzYXRpb24KKwl0byBjb25maWd1cmUgdGhlbS4gVGhlIGxvdyBsZXZlbCBkcml2ZXIgd2lsbCBkbyB0aGUgWjg1MzAgYW5kCisJRE1BIGNvbnRyb2xsZXIgcHJvZ3JhbW1pbmcgYnV0IG5vdCBib2FyZCBzcGVjaWZpYyBtYWdpYy4KKyAgPC9wYXJhPgorICA8cGFyYT4KKwlIYXZpbmcgaW5pdGlhbGlzZWQgdGhlIGRldmljZSB5b3UgY2FuIHRoZW4gY2FsbAorCTxmdW5jdGlvbj56ODUzMF9pbml0PC9mdW5jdGlvbj4uIFRoaXMgd2lsbCBwcm9iZSB0aGUgY2hpcCBhbmQgCisJcmVzZXQgaXQgaW50byBhIGtub3duIHN0YXRlLiBBbiBpZGVudGlmaWNhdGlvbiBzZXF1ZW5jZSBpcyB0aGVuCisJcnVuIHRvIGlkZW50aWZ5IHRoZSBjaGlwIHR5cGUuIElmIHRoZSBjaGVja3MgZmFpbCB0byBwYXNzIHRoZQorCWZ1bmN0aW9uIHJldHVybnMgYSBub24gemVybyBlcnJvciBjb2RlLiBUeXBpY2FsbHkgdGhpcyBpbmRpY2F0ZXMKKwl0aGF0IHRoZSBwb3J0IGdpdmVuIGlzIG5vdCB2YWxpZC4gQWZ0ZXIgdGhpcyBjYWxsIHRoZQorCXR5cGUgZmllbGQgb2YgdGhlIHo4NTMwX2RldiBzdHJ1Y3R1cmUgaXMgaW5pdGlhbGlzZWQgdG8gZWl0aGVyCisJWjg1MzAsIFo4NUMzMCBvciBaODUyMzAgYWNjb3JkaW5nIHRvIHRoZSBjaGlwIGZvdW5kLgorICA8L3BhcmE+CisgIDxwYXJhPgorCU9uY2UgeW91IGhhdmUgY2FsbGVkIHo4NTMwX2luaXQgeW91IGNhbiBhbHNvIG1ha2UgdXNlIG9mIHRoZSB1dGlsaXR5CisJZnVuY3Rpb24gPGZ1bmN0aW9uPno4NTMwX2Rlc2NyaWJlPC9mdW5jdGlvbj4uIFRoaXMgcHJvdmlkZXMgYSAKKwljb25zaXN0ZW50IHJlcG9ydGluZyBmb3JtYXQgZm9yIHRoZSBaODUzMCBkZXZpY2VzLCBhbmQgYWxsb3dzIGFsbAorCXRoZSBkcml2ZXJzIHRvIHByb3ZpZGUgY29uc2lzdGVudCByZXBvcnRpbmcuCisgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJBdHRhY2hpbmdfTmV0d29ya19JbnRlcmZhY2VzIj4KKyAJPHRpdGxlPkF0dGFjaGluZyBOZXR3b3JrIEludGVyZmFjZXM8L3RpdGxlPgorICA8cGFyYT4KKwlJZiB5b3Ugd2lzaCB0byB1c2UgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGZhY2lsaXRpZXMgb2YgdGhlIGRyaXZlciwKKwl0aGVuIHlvdSBuZWVkIHRvIGF0dGFjaCBhIG5ldHdvcmsgZGV2aWNlIHRvIGVhY2ggY2hhbm5lbCB0aGF0IGlzCisJcHJlc2VudCBhbmQgaW4gdXNlLiBJbiBhZGRpdGlvbiB0byB1c2UgdGhlIGdlbmVyaWMgSERMQworCXlvdSBuZWVkIHRvIGZvbGxvdyBzb21lIGFkZGl0aW9uYWwgcGx1bWJpbmcgcnVsZXMuIFRoZXkgbWF5IHNlZW0gCisJY29tcGxleCBidXQgYSBsb29rIGF0IHRoZSBleGFtcGxlIGhvc3Rlc3Nfc3YxMSBkcml2ZXIgc2hvdWxkCisJcmVhc3N1cmUgeW91LgorICA8L3BhcmE+CisgIDxwYXJhPgorCVRoZSBuZXR3b3JrIGRldmljZSB1c2VkIGZvciBlYWNoIGNoYW5uZWwgc2hvdWxkIGJlIHBvaW50ZWQgdG8gYnkKKwl0aGUgbmV0ZGV2aWNlIGZpZWxkIG9mIGVhY2ggY2hhbm5lbC4gVGhlIGhkbGMtJmd0OyBwcml2IGZpZWxkIG9mIHRoZQorCW5ldHdvcmsgZGV2aWNlIHBvaW50cyB0byB5b3VyIHByaXZhdGUgZGF0YSAtIHlvdSB3aWxsIG5lZWQgdG8gYmUKKwlhYmxlIHRvIGZpbmQgeW91ciBwcml2YXRlIGRhdGEgZnJvbSB0aGlzLgorICA8L3BhcmE+CisgIDxwYXJhPgorCVRoZSB3YXkgbW9zdCBkcml2ZXJzIGFwcHJvYWNoIHRoaXMgcGFydGljdWxhciBwcm9ibGVtIGlzIHRvCisJY3JlYXRlIGEgc3RydWN0dXJlIGhvbGRpbmcgdGhlIFo4NTMwIGRldmljZSBkZWZpbml0aW9uIGFuZAorCXB1dCB0aGF0IGludG8gdGhlIHByaXZhdGUgZmllbGQgb2YgdGhlIG5ldHdvcmsgZGV2aWNlLiBUaGUKKwluZXR3b3JrIGRldmljZSBmaWVsZHMgb2YgdGhlIGNoYW5uZWxzIHRoZW4gcG9pbnQgYmFjayB0byB0aGUKKwluZXR3b3JrIGRldmljZXMuCisgIDwvcGFyYT4KKyAgPHBhcmE+CisJSWYgeW91IHdpc2ggdG8gdXNlIHRoZSBnZW5lcmljIEhETEMgdGhlbiB5b3UgbmVlZCB0byByZWdpc3RlcgorCXRoZSBIRExDIGRldmljZS4KKyAgPC9wYXJhPgorICA8cGFyYT4KKwlCZWZvcmUgeW91IHJlZ2lzdGVyIHlvdXIgbmV0d29yayBkZXZpY2UgeW91IHdpbGwgYWxzbyBuZWVkIHRvCisJcHJvdmlkZSBzdWl0YWJsZSBoYW5kbGVycyBmb3IgbW9zdCBvZiB0aGUgbmV0d29yayBkZXZpY2UgY2FsbGJhY2tzLiAKKwlTZWUgdGhlIG5ldHdvcmsgZGV2aWNlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlscyBvbiB0aGlzLgorICA8L3BhcmE+CisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iQ29uZmlndXJpbmdfQW5kX0FjdGl2YXRpbmdfVGhlX1BvcnQiPgorIAk8dGl0bGU+Q29uZmlndXJpbmcgQW5kIEFjdGl2YXRpbmcgVGhlIFBvcnQ8L3RpdGxlPgorICA8cGFyYT4KKwlUaGUgWjg1MjMwIGRyaXZlciBwcm92aWRlcyBoZWxwZXIgZnVuY3Rpb25zIGFuZCB0YWJsZXMgdG8gbG9hZCB0aGUKKwlwb3J0IHJlZ2lzdGVycyBvbiB0aGUgWjg1MzAgY2hpcHMuIFdoZW4gcHJvZ3JhbW1pbmcgdGhlIHJlZ2lzdGVyCisJc2V0dGluZ3MgZm9yIGEgY2hhbm5lbCBiZSBhd2FyZSB0aGF0IHRoZSBkb2N1bWVudGF0aW9uIHJlY29tbWVuZHMKKwlpbml0aWFsaXNhdGlvbiBvcmRlcnMuIFN0cmFuZ2UgdGhpbmdzIGhhcHBlbiB3aGVuIHRoZXNlIGFyZSBub3QKKwlmb2xsb3dlZC4gCisgIDwvcGFyYT4KKyAgPHBhcmE+CisJPGZ1bmN0aW9uPno4NTMwX2NoYW5uZWxfbG9hZDwvZnVuY3Rpb24+IHRha2VzIGFuIGFycmF5IG9mCisJcGFpcnMgb2YgaW5pdGlhbGlzYXRpb24gdmFsdWVzIGluIGFuIGFycmF5IG9mIHU4IHR5cGUuIFRoZSBmaXJzdAorCXZhbHVlIGlzIHRoZSBaODUzMCByZWdpc3RlciBudW1iZXIuIEFkZCAxNiB0byBpbmRpY2F0ZSB0aGUgYWx0ZXJuYXRlCisJcmVnaXN0ZXIgYmFuayBvbiB0aGUgbGF0ZXIgY2hpcHMuIFRoZSBhcnJheSBpcyB0ZXJtaW5hdGVkIGJ5IGEgMjU1LgorICA8L3BhcmE+CisgIDxwYXJhPgorCVRoZSBkcml2ZXIgcHJvdmlkZXMgYSBwYWlyIG9mIHB1YmxpYyB0YWJsZXMuIFRoZQorCXo4NTMwX2hkbGNfa2lsb3N0cmVhbSB0YWJsZSBpcyBmb3IgdGhlIFVLICdLaWxvc3RyZWFtJyBzZXJ2aWNlIGFuZAorCWFsc28gaGFwcGVucyB0byBjb3ZlciBtb3N0IG90aGVyIGVuZCBob3N0IGNvbmZpZ3VyYXRpb25zLiBUaGUKKwl6ODUzMF9oZGxjX2tpbG9zdHJlYW1fODUyMzAgdGFibGUgaXMgdGhlIHNhbWUgY29uZmlndXJhdGlvbiB1c2luZworCXRoZSBlbmhhbmNlbWVudHMgb2YgdGhlIDg1MjMwIGNoaXAuIFRoZSBjb25maWd1cmF0aW9uIGxvYWRlZCBpcworCXN0YW5kYXJkIE5SWiBlbmNvZGVkIHN5bmNocm9ub3VzIGRhdGEgd2l0aCBIRExDIGJpdHN0dWZmaW5nLiBBbGwKKwlvZiB0aGUgdGltaW5nIGlzIHRha2VuIGZyb20gdGhlIG90aGVyIGVuZCBvZiB0aGUgbGluay4KKyAgPC9wYXJhPgorICA8cGFyYT4KKwlXaGVuIHdyaXRpbmcgeW91ciBvd24gdGFibGVzIGJlIGF3YXJlIHRoYXQgdGhlIGRyaXZlciBpbnRlcm5hbGx5CisJdHJhY2tzIHJlZ2lzdGVyIHZhbHVlcy4gSXQgbWF5IG5lZWQgdG8gcmVsb2FkIHZhbHVlcy4gWW91IHNob3VsZAorCXRoZXJlZm9yZSBiZSBzdXJlIHRvIHNldCByZWdpc3RlcnMgMS03LCA5LTExLCAxNCBhbmQgMTUgaW4gYWxsCisJY29uZmlndXJhdGlvbnMuIFdoZXJlIHRoZSByZWdpc3RlciBzZXR0aW5ncyBkZXBlbmQgb24gRE1BIHNlbGVjdGlvbgorCXRoZSBkcml2ZXIgd2lsbCB1cGRhdGUgdGhlIGJpdHMgaXRzZWxmIHdoZW4geW91IG9wZW4gb3IgY2xvc2UuCisJTG9hZGluZyBhIG5ldyB0YWJsZSB3aXRoIHRoZSBpbnRlcmZhY2Ugb3BlbiBpcyBub3QgcmVjb21tZW5kZWQuCisgIDwvcGFyYT4KKyAgPHBhcmE+CisJVGhlcmUgYXJlIHRocmVlIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb25zIHN1cHBvcnRlZCBieSB0aGUgY29yZQorCWNvZGUuIEluIFBJTyBtb2RlIHRoZSBpbnRlcmZhY2UgaXMgcHJvZ3JhbW1lZCB1cCB0byB1c2UKKwlpbnRlcnJ1cHQgZHJpdmVuIFBJTy4gVGhpcyBwbGFjZXMgaGlnaCBkZW1hbmRzIG9uIHRoZSBob3N0IHByb2Nlc3NvcgorCXRvIGF2b2lkIGxhdGVuY3kuIFRoZSBkcml2ZXIgaXMgd3JpdHRlbiB0byB0YWtlIGFjY291bnQgb2YgbGF0ZW5jeQorCWlzc3VlcyBidXQgaXQgY2Fubm90IGF2b2lkIGxhdGVuY2llcyBjYXVzZWQgYnkgb3RoZXIgZHJpdmVycywKKwlub3RhYmx5IElERSBpbiBQSU8gbW9kZS4gQmVjYXVzZSB0aGUgZHJpdmVycyBhbGxvY2F0ZSBidWZmZXJzIHlvdQorCW11c3QgYWxzbyBwcmV2ZW50IE1UVSBjaGFuZ2VzIHdoaWxlIHRoZSBwb3J0IGlzIG9wZW4uCisgIDwvcGFyYT4KKyAgPHBhcmE+CisJT25jZSB0aGUgcG9ydCBpcyBvcGVuIGl0IHdpbGwgY2FsbCB0aGUgcnhfZnVuY3Rpb24gb2YgZWFjaCBjaGFubmVsCisJd2hlbmV2ZXIgYSBjb21wbGV0ZWQgcGFja2V0IGFycml2ZWQuIFRoaXMgaXMgaW52b2tlZCBmcm9tCisJaW50ZXJydXB0IGNvbnRleHQgYW5kIHBhc3NlcyB5b3UgdGhlIGNoYW5uZWwgYW5kIGEgbmV0d29yawkKKwlidWZmZXIgKHN0cnVjdCBza19idWZmKSBob2xkaW5nIHRoZSBkYXRhLiBUaGUgZGF0YSBpbmNsdWRlcworCXRoZSBDUkMgYnl0ZXMgc28gbW9zdCB1c2VycyB3aWxsIHdhbnQgdG8gdHJpbSB0aGUgbGFzdCB0d28KKwlieXRlcyBiZWZvcmUgcHJvY2Vzc2luZyB0aGUgZGF0YS4gVGhpcyBmdW5jdGlvbiBpcyB2ZXJ5IHRpbWluZworCWNyaXRpY2FsLiBXaGVuIHlvdSB3aXNoIHRvIHNpbXBseSBkaXNjYXJkIGRhdGEgdGhlIHN1cHBvcnQKKwljb2RlIHByb3ZpZGVzIHRoZSBmdW5jdGlvbiA8ZnVuY3Rpb24+ejg1MzBfbnVsbF9yeDwvZnVuY3Rpb24+CisJdG8gZGlzY2FyZCB0aGUgZGF0YS4KKyAgPC9wYXJhPgorICA8cGFyYT4KKwlUbyBhY3RpdmUgUElPIG1vZGUgc2VuZGluZyBhbmQgcmVjZWl2aW5nIHRoZSA8ZnVuY3Rpb24+CisJejg1MzBfc3luY19vcGVuPC9mdW5jdGlvbj4gaXMgY2FsbGVkLiBUaGlzIGV4cGVjdHMgdG8gYmUgcGFzc2VkCisJdGhlIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgY2hhbm5lbC4gVHlwaWNhbGx5IHRoaXMgaXMgY2FsbGVkIGZyb20KKwl5b3VyIG5ldHdvcmsgZGV2aWNlIG9wZW4gY2FsbGJhY2suIE9uIGEgZmFpbHVyZSBhIG5vbiB6ZXJvIGVycm9yCisJc3RhdHVzIGlzIHJldHVybmVkLiBUaGUgPGZ1bmN0aW9uPno4NTMwX3N5bmNfY2xvc2U8L2Z1bmN0aW9uPiAKKwlmdW5jdGlvbiBzaHV0cyBkb3duIGEgUElPIGNoYW5uZWwuIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSB0aGUgCisJY2hhbm5lbCBpcyBvcGVuZWQgYWdhaW4JYW5kIGJlZm9yZSB0aGUgZHJpdmVyIHNodXRzIGRvd24gCisJYW5kIHVubG9hZHMuCisgIDwvcGFyYT4KKyAgPHBhcmE+CisJVGhlIGlkZWFsIG1vZGUgb2Ygb3BlcmF0aW9uIGlzIGR1YWwgY2hhbm5lbCBETUEgbW9kZS4gSGVyZSB0aGUKKwlrZXJuZWwgZHJpdmVyIHdpbGwgY29uZmlndXJlIHRoZSBib2FyZCBmb3IgRE1BIGluIGJvdGggZGlyZWN0aW9ucy4KKwlUaGUgZHJpdmVyIGFsc28gaGFuZGxlcyBJU0EgRE1BIGlzc3VlcyBzdWNoIGFzIGNvbnRyb2xsZXIKKwlwcm9ncmFtbWluZyBhbmQgdGhlIG1lbW9yeSByYW5nZSBsaW1pdCBmb3IgeW91LiBUaGlzIG1vZGUgaXMKKwlhY3RpdmF0ZWQgYnkgY2FsbGluZyB0aGUgPGZ1bmN0aW9uPno4NTMwX3N5bmNfZG1hX29wZW48L2Z1bmN0aW9uPgorCWZ1bmN0aW9uLiBPbiBmYWlsdXJlIGEgbm9uIHplcm8gZXJyb3IgdmFsdWUgaXMgcmV0dXJuZWQuCisJT25jZSB0aGlzIG1vZGUgaXMgYWN0aXZhdGVkIGl0IGNhbiBiZSBzaHV0IGRvd24gYnkgY2FsbGluZyB0aGUKKwk8ZnVuY3Rpb24+ejg1MzBfc3luY19kbWFfY2xvc2U8L2Z1bmN0aW9uPi4gWW91IG11c3QgY2FsbCB0aGUgY2xvc2UKKwlmdW5jdGlvbiBtYXRjaGluZyB0aGUgb3BlbiBtb2RlIHlvdSB1c2VkLgorICA8L3BhcmE+CisgIDxwYXJhPgorCVRoZSBmaW5hbCBzdXBwb3J0ZWQgbW9kZSB1c2VzIGEgc2luZ2xlIERNQSBjaGFubmVsIHRvIGRyaXZlIHRoZQorCXRyYW5zbWl0IHNpZGUuIEFzIHRoZSBaODVDMzAgaGFzIGEgbGFyZ2VyIEZJRk8gb24gdGhlIHJlY2VpdmUKKwljaGFubmVsCXRoaXMgdGVuZHMgdG8gaW5jcmVhc2UgdGhlIG1heGltdW0gc3BlZWQgYSBsaXR0bGUuIAorCVRoaXMgaXMgYWN0aXZhdGVkIGJ5IGNhbGxpbmcgdGhlIDxmdW5jdGlvbj56ODUzMF9zeW5jX3R4ZG1hX29wZW4KKwk8L2Z1bmN0aW9uPi4gVGhpcyByZXR1cm5zIGEgbm9uIHplcm8gZXJyb3IgY29kZSBvbiBmYWlsdXJlLiBUaGUKKwk8ZnVuY3Rpb24+ejg1MzBfc3luY190eGRtYV9jbG9zZTwvZnVuY3Rpb24+IGZ1bmN0aW9uIGNsb3NlcyBkb3duCisJdGhlIFo4NTMwIGludGVyZmFjZSBmcm9tIHRoaXMgbW9kZS4KKyAgPC9wYXJhPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9Ik5ldHdvcmtfTGF5ZXJfRnVuY3Rpb25zIj4KKyAJPHRpdGxlPk5ldHdvcmsgTGF5ZXIgRnVuY3Rpb25zPC90aXRsZT4KKyAgPHBhcmE+CisJVGhlIFo4NTMwIGxheWVyIHByb3ZpZGVzIGZ1bmN0aW9ucyB0byBxdWV1ZSBwYWNrZXRzIGZvcgorCXRyYW5zbWlzc2lvbi4gVGhlIGRyaXZlciBpbnRlcm5hbGx5IGJ1ZmZlcnMgdGhlIGZyYW1lIGN1cnJlbnRseQorCWJlaW5nIHRyYW5zbWl0dGVkIGFuZCBvbmUgZnVydGhlciBmcmFtZSAoaW4gb3JkZXIgdG8ga2VlcCBiYWNrCisJdG8gYmFjayB0cmFuc21pc3Npb24gcnVubmluZykuIEFueSBmdXJ0aGVyIGJ1ZmZlcmluZyBpcyB1cCB0bworCXRoZSBjYWxsZXIuCisgIDwvcGFyYT4KKyAgPHBhcmE+CisJVGhlIGZ1bmN0aW9uIDxmdW5jdGlvbj56ODUzMF9xdWV1ZV94bWl0PC9mdW5jdGlvbj4gdGFrZXMgYSBuZXR3b3JrCisJYnVmZmVyIGluIHNrX2J1ZmYgZm9ybWF0IGFuZCBxdWV1ZXMgaXQgZm9yIHRyYW5zbWlzc2lvbi4gVGhlCisJY2FsbGVyIG11c3QgcHJvdmlkZSB0aGUgZW50aXJlIHBhY2tldCB3aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlCisJYml0c3R1ZmZpbmcgYW5kIENSQy4gVGhpcyBpcyBub3JtYWxseSBkb25lIGJ5IHRoZSBjYWxsZXIgdmlhCisJdGhlIGdlbmVyaWMgSERMQyBpbnRlcmZhY2UgbGF5ZXIuIEl0IHJldHVybnMgMCBpZiB0aGUgYnVmZmVyIGhhcyBiZWVuCisJcXVldWVkIGFuZCBub24gemVybyB2YWx1ZXMgZm9yIHF1ZXVlIGZ1bGwuIElmIHRoZSBmdW5jdGlvbiBhY2NlcHRzCisJdGhlIGJ1ZmZlciBpdCBiZWNvbWVzIHByb3BlcnR5IG9mIHRoZSBaODUzMCBsYXllciBhbmQgdGhlIGNhbGxlcgorCXNob3VsZCBub3QgZnJlZSBpdC4KKyAgPC9wYXJhPgorICA8cGFyYT4KKwlUaGUgZnVuY3Rpb24gPGZ1bmN0aW9uPno4NTMwX2dldF9zdGF0czwvZnVuY3Rpb24+IHJldHVybnMgYSBwb2ludGVyCisJdG8gYW4gaW50ZXJuYWxseSBtYWludGFpbmVkIHBlciBpbnRlcmZhY2Ugc3RhdGlzdGljcyBibG9jay4gVGhpcworCXByb3ZpZGVzIG1vc3Qgb2YgdGhlIGludGVyZmFjZSBjb2RlIG5lZWRlZCB0byBpbXBsZW1lbnQgdGhlIG5ldHdvcmsKKwlsYXllciBnZXRfc3RhdHMgY2FsbGJhY2suCisgIDwvcGFyYT4KKyAgPC9jaGFwdGVyPgorCisgIDxjaGFwdGVyIGlkPSJQb3J0aW5nX1RoZV9aODUzMF9Ecml2ZXIiPgorICAgICA8dGl0bGU+UG9ydGluZyBUaGUgWjg1MzAgRHJpdmVyPC90aXRsZT4KKyAgPHBhcmE+CisJVGhlIFo4NTMwIGRyaXZlciBpcyB3cml0dGVuIHRvIGJlIHBvcnRhYmxlLiBJbiBETUEgbW9kZSBpdCBtYWtlcworCWFzc3VtcHRpb25zIGFib3V0IHRoZSB1c2Ugb2YgSVNBIERNQS4gVGhlc2UgYXJlIHByb2JhYmx5IHdhcnJhbnRlZAorCWluIG1vc3QgY2FzZXMgYXMgdGhlIFo4NTIzMCBpbiBwYXJ0aWN1bGFyIHdhcyBkZXNpZ25lZCB0byBnbHVlIHRvIFBDCisJdHlwZSBtYWNoaW5lcy4gVGhlIFBJTyBtb2RlIG1ha2VzIG5vIHJlYWwgYXNzdW1wdGlvbnMuCisgIDwvcGFyYT4KKyAgPHBhcmE+CisJU2hvdWxkIHlvdSBuZWVkIHRvIHJldGFyZ2V0IHRoZSBaODUzMCBkcml2ZXIgdG8gYW5vdGhlciBhcmNoaXRlY3R1cmUKKwl0aGUgb25seSBjb2RlIHRoYXQgc2hvdWxkIG5lZWQgY2hhbmdpbmcgYXJlIHRoZSBwb3J0IEkvTyBmdW5jdGlvbnMuCisJQXQgdGhlIG1vbWVudCB0aGVzZSBhc3N1bWUgUEMgSS9PIHBvcnQgYWNjZXNzZXMuIFRoaXMgbWF5IG5vdCBiZQorCWFwcHJvcHJpYXRlIGZvciBhbGwgcGxhdGZvcm1zLiBSZXBsYWNpbmcgCisJPGZ1bmN0aW9uPno4NTMwX3JlYWRfcG9ydDwvZnVuY3Rpb24+IGFuZCA8ZnVuY3Rpb24+ejg1MzBfd3JpdGVfcG9ydAorCTwvZnVuY3Rpb24+IGlzIGludGVuZGVkIHRvIGJlIGFsbCB0aGF0IGlzIHJlcXVpcmVkIHRvIHBvcnQgdGhpcworCWRyaXZlciBsYXllci4KKyAgPC9wYXJhPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9ImJ1Z3MiPgorICAgICA8dGl0bGU+S25vd24gQnVncyBBbmQgQXNzdW1wdGlvbnM8L3RpdGxlPgorICA8cGFyYT4KKyAgPHZhcmlhYmxlbGlzdD4KKyAgICA8dmFybGlzdGVudHJ5Pjx0ZXJtPkludGVycnVwdCBMb2NraW5nPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICA8cGFyYT4KKwlUaGUgbG9ja2luZyBpbiB0aGUgZHJpdmVyIGlzIGRvbmUgdmlhIHRoZSBnbG9iYWwgY2xpL3N0aSBsb2NrLiBUaGlzCisJbWFrZXMgZm9yIHJlbGF0aXZlbHkgcG9vciBTTVAgcGVyZm9ybWFuY2UuIFN3aXRjaGluZyB0aGlzIHRvIHVzZSBhCisJcGVyIGRldmljZSBzcGluIGxvY2sgd291bGQgcHJvYmFibHkgbWF0ZXJpYWxseSBpbXByb3ZlIHBlcmZvcm1hbmNlLgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPjwvdmFybGlzdGVudHJ5PgorCisgICAgPHZhcmxpc3RlbnRyeT48dGVybT5PY2Nhc2lvbmFsIEZhaWx1cmVzPC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICA8cGFyYT4KKwlXZSBoYXZlIHJlcG9ydHMgb2Ygb2NjYXNpb25hbCBmYWlsdXJlcyB3aGVuIHJ1biBmb3IgdmVyeSBsb25nCisJcGVyaW9kcyBvZiB0aW1lIGFuZCB0aGUgZHJpdmVyIHN0YXJ0cyB0byByZWNlaXZlIGp1bmsgZnJhbWVzLiBBdAorCXRoZSBtb21lbnQgdGhlIGNhdXNlIG9mIHRoaXMgaXMgbm90IGNsZWFyLgorICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPjwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKwkKKyAgPC9wYXJhPgorICA8L2NoYXB0ZXI+CisKKyAgPGNoYXB0ZXIgaWQ9InB1YmZ1bmN0aW9ucyI+CisgICAgIDx0aXRsZT5QdWJsaWMgRnVuY3Rpb25zIFByb3ZpZGVkPC90aXRsZT4KKyFFZHJpdmVycy9uZXQvd2FuL3o4NTIzMC5jCisgIDwvY2hhcHRlcj4KKworICA8Y2hhcHRlciBpZD0iaW50ZnVuY3Rpb25zIj4KKyAgICAgPHRpdGxlPkludGVybmFsIEZ1bmN0aW9uczwvdGl0bGU+CishSWRyaXZlcnMvbmV0L3dhbi96ODUyMzAuYworICA8L2NoYXB0ZXI+CisKKzwvYm9vaz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRURJRC8xMDI0eDc2OC5TIGIvRG9jdW1lbnRhdGlvbi9FRElELzEwMjR4NzY4LlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYzZTRiNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRURJRC8xMDI0eDc2OC5TCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgICAxMDI0eDc2OC5TOiBFRElEIGRhdGEgc2V0IGZvciBzdGFuZGFyZCAxMDI0eDc2OCA2MCBIeiBtb25pdG9yCisKKyAgIENvcHlyaWdodCAoQykgMjAxMSBDYXJzdGVuIEVtZGUgPEMuRW1kZUBvc2FkbC5vcmc+CisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMgorICAgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EuCisqLworCisvKiBFRElEICovCisjZGVmaW5lIFZFUlNJT04gMQorI2RlZmluZSBSRVZJU0lPTiAzCisKKy8qIERpc3BsYXkgKi8KKyNkZWZpbmUgQ0xPQ0sgNjUwMDAgLyoga0h6ICovCisjZGVmaW5lIFhQSVggMTAyNAorI2RlZmluZSBZUElYIDc2OAorI2RlZmluZSBYWV9SQVRJTyBYWV9SQVRJT180XzMKKyNkZWZpbmUgWEJMQU5LIDMyMAorI2RlZmluZSBZQkxBTksgMzgKKyNkZWZpbmUgWE9GRlNFVCA4CisjZGVmaW5lIFhQVUxTRSAxNDQKKyNkZWZpbmUgWU9GRlNFVCAoNjMrMykKKyNkZWZpbmUgWVBVTFNFICg2Mys2KQorI2RlZmluZSBEUEkgNzIKKyNkZWZpbmUgVkZSRVEgNjAgLyogSHogKi8KKyNkZWZpbmUgVElNSU5HX05BTUUgIkxpbnV4IFhHQSIKKyNkZWZpbmUgRVNUQUJMSVNIRURfVElNSU5HMl9CSVRTIDB4MDggLyogQml0IDMgLT4gMTAyNHg3NjggQDYwIEh6ICovCisjZGVmaW5lIEhTWU5DX1BPTCAwCisjZGVmaW5lIFZTWU5DX1BPTCAwCisjZGVmaW5lIENSQyAweDU1CisKKyNpbmNsdWRlICJlZGlkLlMiCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0VESUQvMTI4MHgxMDI0LlMgYi9Eb2N1bWVudGF0aW9uL0VESUQvMTI4MHgxMDI0LlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ5YmVmMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRURJRC8xMjgweDEwMjQuUwpAQCAtMCwwICsxLDQ0IEBACisvKgorICAgMTI4MHgxMDI0LlM6IEVESUQgZGF0YSBzZXQgZm9yIHN0YW5kYXJkIDEyODB4MTAyNCA2MCBIeiBtb25pdG9yCisKKyAgIENvcHlyaWdodCAoQykgMjAxMSBDYXJzdGVuIEVtZGUgPEMuRW1kZUBvc2FkbC5vcmc+CisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMgorICAgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EuCisqLworCisvKiBFRElEICovCisjZGVmaW5lIFZFUlNJT04gMQorI2RlZmluZSBSRVZJU0lPTiAzCisKKy8qIERpc3BsYXkgKi8KKyNkZWZpbmUgQ0xPQ0sgMTA4MDAwIC8qIGtIeiAqLworI2RlZmluZSBYUElYIDEyODAKKyNkZWZpbmUgWVBJWCAxMDI0CisjZGVmaW5lIFhZX1JBVElPIFhZX1JBVElPXzVfNAorI2RlZmluZSBYQkxBTksgNDA4CisjZGVmaW5lIFlCTEFOSyA0MgorI2RlZmluZSBYT0ZGU0VUIDQ4CisjZGVmaW5lIFhQVUxTRSAxMTIKKyNkZWZpbmUgWU9GRlNFVCAoNjMrMSkKKyNkZWZpbmUgWVBVTFNFICg2MyszKQorI2RlZmluZSBEUEkgNzIKKyNkZWZpbmUgVkZSRVEgNjAgLyogSHogKi8KKyNkZWZpbmUgVElNSU5HX05BTUUgIkxpbnV4IFNYR0EiCisvKiBObyBFU1RBQkxJU0hFRF9USU1JTkd4X0JJVFMgKi8KKyNkZWZpbmUgSFNZTkNfUE9MIDEKKyNkZWZpbmUgVlNZTkNfUE9MIDEKKyNkZWZpbmUgQ1JDIDB4YTAKKworI2luY2x1ZGUgImVkaWQuUyIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRURJRC8xNjAweDEyMDAuUyBiL0RvY3VtZW50YXRpb24vRURJRC8xNjAweDEyMDAuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDUxMDFjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9FRElELzE2MDB4MTIwMC5TCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgICAxNjAweDEyMDAuUzogRURJRCBkYXRhIHNldCBmb3Igc3RhbmRhcmQgMTYwMHgxMjAwIDYwIEh6IG1vbml0b3IKKworICAgQ29weXJpZ2h0IChDKSAyMDEzIENhcnN0ZW4gRW1kZSA8Qy5FbWRlQG9zYWRsLm9yZz4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyCisgICBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQS4KKyovCisKKy8qIEVESUQgKi8KKyNkZWZpbmUgVkVSU0lPTiAxCisjZGVmaW5lIFJFVklTSU9OIDMKKworLyogRGlzcGxheSAqLworI2RlZmluZSBDTE9DSyAxNjIwMDAgLyoga0h6ICovCisjZGVmaW5lIFhQSVggMTYwMAorI2RlZmluZSBZUElYIDEyMDAKKyNkZWZpbmUgWFlfUkFUSU8gWFlfUkFUSU9fNF8zCisjZGVmaW5lIFhCTEFOSyA1NjAKKyNkZWZpbmUgWUJMQU5LIDUwCisjZGVmaW5lIFhPRkZTRVQgNjQKKyNkZWZpbmUgWFBVTFNFIDE5MgorI2RlZmluZSBZT0ZGU0VUICg2MysxKQorI2RlZmluZSBZUFVMU0UgKDYzKzMpCisjZGVmaW5lIERQSSA3MgorI2RlZmluZSBWRlJFUSA2MCAvKiBIeiAqLworI2RlZmluZSBUSU1JTkdfTkFNRSAiTGludXggVVhHQSIKKy8qIE5vIEVTVEFCTElTSEVEX1RJTUlOR3hfQklUUyAqLworI2RlZmluZSBIU1lOQ19QT0wgMQorI2RlZmluZSBWU1lOQ19QT0wgMQorI2RlZmluZSBDUkMgMHg5ZAorCisjaW5jbHVkZSAiZWRpZC5TIgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9FRElELzE2ODB4MTA1MC5TIGIvRG9jdW1lbnRhdGlvbi9FRElELzE2ODB4MTA1MC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwZDdjNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0VESUQvMTY4MHgxMDUwLlMKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAgIDE2ODB4MTA1MC5TOiBFRElEIGRhdGEgc2V0IGZvciBzdGFuZGFyZCAxNjgweDEwNTAgNjAgSHogbW9uaXRvcgorCisgICBDb3B5cmlnaHQgKEMpIDIwMTIgQ2Fyc3RlbiBFbWRlIDxDLkVtZGVAb3NhZGwub3JnPgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIKKyAgIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBLgorKi8KKworLyogRURJRCAqLworI2RlZmluZSBWRVJTSU9OIDEKKyNkZWZpbmUgUkVWSVNJT04gMworCisvKiBEaXNwbGF5ICovCisjZGVmaW5lIENMT0NLIDE0NjI1MCAvKiBrSHogKi8KKyNkZWZpbmUgWFBJWCAxNjgwCisjZGVmaW5lIFlQSVggMTA1MAorI2RlZmluZSBYWV9SQVRJTyBYWV9SQVRJT18xNl8xMAorI2RlZmluZSBYQkxBTksgNTYwCisjZGVmaW5lIFlCTEFOSyAzOQorI2RlZmluZSBYT0ZGU0VUIDEwNAorI2RlZmluZSBYUFVMU0UgMTc2CisjZGVmaW5lIFlPRkZTRVQgKDYzKzMpCisjZGVmaW5lIFlQVUxTRSAoNjMrNikKKyNkZWZpbmUgRFBJIDk2CisjZGVmaW5lIFZGUkVRIDYwIC8qIEh6ICovCisjZGVmaW5lIFRJTUlOR19OQU1FICJMaW51eCBXU1hHQSIKKy8qIE5vIEVTVEFCTElTSEVEX1RJTUlOR3hfQklUUyAqLworI2RlZmluZSBIU1lOQ19QT0wgMQorI2RlZmluZSBWU1lOQ19QT0wgMQorI2RlZmluZSBDUkMgMHgyNgorCisjaW5jbHVkZSAiZWRpZC5TIgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9FRElELzE5MjB4MTA4MC5TIGIvRG9jdW1lbnRhdGlvbi9FRElELzE5MjB4MTA4MC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwODQzNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0VESUQvMTkyMHgxMDgwLlMKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAgIDE5MjB4MTA4MC5TOiBFRElEIGRhdGEgc2V0IGZvciBzdGFuZGFyZCAxOTIweDEwODAgNjAgSHogbW9uaXRvcgorCisgICBDb3B5cmlnaHQgKEMpIDIwMTIgQ2Fyc3RlbiBFbWRlIDxDLkVtZGVAb3NhZGwub3JnPgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIKKyAgIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBLgorKi8KKworLyogRURJRCAqLworI2RlZmluZSBWRVJTSU9OIDEKKyNkZWZpbmUgUkVWSVNJT04gMworCisvKiBEaXNwbGF5ICovCisjZGVmaW5lIENMT0NLIDE0ODUwMCAvKiBrSHogKi8KKyNkZWZpbmUgWFBJWCAxOTIwCisjZGVmaW5lIFlQSVggMTA4MAorI2RlZmluZSBYWV9SQVRJTyBYWV9SQVRJT18xNl85CisjZGVmaW5lIFhCTEFOSyAyODAKKyNkZWZpbmUgWUJMQU5LIDQ1CisjZGVmaW5lIFhPRkZTRVQgODgKKyNkZWZpbmUgWFBVTFNFIDQ0CisjZGVmaW5lIFlPRkZTRVQgKDYzKzQpCisjZGVmaW5lIFlQVUxTRSAoNjMrNSkKKyNkZWZpbmUgRFBJIDk2CisjZGVmaW5lIFZGUkVRIDYwIC8qIEh6ICovCisjZGVmaW5lIFRJTUlOR19OQU1FICJMaW51eCBGSEQiCisvKiBObyBFU1RBQkxJU0hFRF9USU1JTkd4X0JJVFMgKi8KKyNkZWZpbmUgSFNZTkNfUE9MIDEKKyNkZWZpbmUgVlNZTkNfUE9MIDEKKyNkZWZpbmUgQ1JDIDB4MDUKKworI2luY2x1ZGUgImVkaWQuUyIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRURJRC84MDB4NjAwLlMgYi9Eb2N1bWVudGF0aW9uL0VESUQvODAweDYwMC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2NDRlMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0VESUQvODAweDYwMC5TCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgICA4MDB4NjAwLlM6IEVESUQgZGF0YSBzZXQgZm9yIHN0YW5kYXJkIDgwMHg2MDAgNjAgSHogbW9uaXRvcgorCisgICBDb3B5cmlnaHQgKEMpIDIwMTEgQ2Fyc3RlbiBFbWRlIDxDLkVtZGVAb3NhZGwub3JnPgorICAgQ29weXJpZ2h0IChDKSAyMDE0IExpbmFybyBMaW1pdGVkCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMgorICAgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisqLworCisvKiBFRElEICovCisjZGVmaW5lIFZFUlNJT04gMQorI2RlZmluZSBSRVZJU0lPTiAzCisKKy8qIERpc3BsYXkgKi8KKyNkZWZpbmUgQ0xPQ0sgNDAwMDAgLyoga0h6ICovCisjZGVmaW5lIFhQSVggODAwCisjZGVmaW5lIFlQSVggNjAwCisjZGVmaW5lIFhZX1JBVElPIFhZX1JBVElPXzRfMworI2RlZmluZSBYQkxBTksgMjU2CisjZGVmaW5lIFlCTEFOSyAyOAorI2RlZmluZSBYT0ZGU0VUIDQwCisjZGVmaW5lIFhQVUxTRSAxMjgKKyNkZWZpbmUgWU9GRlNFVCAoNjMrMSkKKyNkZWZpbmUgWVBVTFNFICg2Mys0KQorI2RlZmluZSBEUEkgNzIKKyNkZWZpbmUgVkZSRVEgNjAgLyogSHogKi8KKyNkZWZpbmUgVElNSU5HX05BTUUgIkxpbnV4IFNWR0EiCisjZGVmaW5lIEVTVEFCTElTSEVEX1RJTUlORzFfQklUUyAweDAxIC8qIEJpdCAwOiA4MDB4NjAwIEAgNjBIeiAqLworI2RlZmluZSBIU1lOQ19QT0wgMQorI2RlZmluZSBWU1lOQ19QT0wgMQorI2RlZmluZSBDUkMgMHhjMgorCisjaW5jbHVkZSAiZWRpZC5TIgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9FRElEL0hPV1RPLnR4dCBiL0RvY3VtZW50YXRpb24vRURJRC9IT1dUTy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM1ZGIzMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRURJRC9IT1dUTy50eHQKQEAgLTAsMCArMSw1OCBAQAorSW4gdGhlIGdvb2Qgb2xkIGRheXMgd2hlbiBncmFwaGljcyBwYXJhbWV0ZXJzIHdlcmUgY29uZmlndXJlZCBleHBsaWNpdGx5CitpbiBhIGZpbGUgY2FsbGVkIHhvcmcuY29uZiwgZXZlbiBicm9rZW4gaGFyZHdhcmUgY291bGQgYmUgbWFuYWdlZC4KKworVG9kYXksIHdpdGggdGhlIGFkdmVudCBvZiBLZXJuZWwgTW9kZSBTZXR0aW5nLCBhIGdyYXBoaWNzIGJvYXJkIGlzCitlaXRoZXIgY29ycmVjdGx5IHdvcmtpbmcgYmVjYXVzZSBhbGwgY29tcG9uZW50cyBmb2xsb3cgdGhlIHN0YW5kYXJkcyAtCitvciB0aGUgY29tcHV0ZXIgaXMgdW51c2FibGUsIGJlY2F1c2UgdGhlIHNjcmVlbiByZW1haW5zIGRhcmsgYWZ0ZXIKK2Jvb3Rpbmcgb3IgaXQgZGlzcGxheXMgdGhlIHdyb25nIGFyZWEuIENhc2VzIHdoZW4gdGhpcyBoYXBwZW5zIGFyZToKKy0gVGhlIGdyYXBoaWNzIGJvYXJkIGRvZXMgbm90IHJlY29nbml6ZSB0aGUgbW9uaXRvci4KKy0gVGhlIGdyYXBoaWNzIGJvYXJkIGlzIHVuYWJsZSB0byBkZXRlY3QgYW55IEVESUQgZGF0YS4KKy0gVGhlIGdyYXBoaWNzIGJvYXJkIGluY29ycmVjdGx5IGZvcndhcmRzIEVESUQgZGF0YSB0byB0aGUgZHJpdmVyLgorLSBUaGUgbW9uaXRvciBzZW5kcyBubyBvciBib2d1cyBFRElEIGRhdGEuCistIEEgS1ZNIHNlbmRzIGl0cyBvd24gRURJRCBkYXRhIGluc3RlYWQgb2YgcXVlcnlpbmcgdGhlIGNvbm5lY3RlZCBtb25pdG9yLgorQWRkaW5nIHRoZSBrZXJuZWwgcGFyYW1ldGVyICJub21vZGVzZXQiIGhlbHBzIGluIG1vc3QgY2FzZXMsIGJ1dCBjYXVzZXMKK3Jlc3RyaWN0aW9ucyBsYXRlciBvbi4KKworQXMgYSByZW1lZHkgZm9yIHN1Y2ggc2l0dWF0aW9ucywgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGl0ZW0KK0NPTkZJR19EUk1fTE9BRF9FRElEX0ZJUk1XQVJFIHdhcyBpbnRyb2R1Y2VkLiBJdCBhbGxvd3MgdG8gcHJvdmlkZSBhbgoraW5kaXZpZHVhbGx5IHByZXBhcmVkIG9yIGNvcnJlY3RlZCBFRElEIGRhdGEgc2V0IGluIHRoZSAvbGliL2Zpcm13YXJlCitkaXJlY3RvcnkgZnJvbSB3aGVyZSBpdCBpcyBsb2FkZWQgdmlhIHRoZSBmaXJtd2FyZSBpbnRlcmZhY2UuIFRoZSBjb2RlCisoc2VlIGRyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZF9sb2FkLmMpIGNvbnRhaW5zIGJ1aWx0LWluIGRhdGEgc2V0cyBmb3IKK2NvbW1vbmx5IHVzZWQgc2NyZWVuIHJlc29sdXRpb25zICg4MDB4NjAwLCAxMDI0eDc2OCwgMTI4MHgxMDI0LCAxNjAweDEyMDAsCisxNjgweDEwNTAsIDE5MjB4MTA4MCkgYXMgYmluYXJ5IGJsb2JzLCBidXQgdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSBkb2VzCitub3QgY29udGFpbiBjb2RlIHRvIGNyZWF0ZSB0aGVzZSBkYXRhLiBJbiBvcmRlciB0byBlbHVjaWRhdGUgdGhlIG9yaWdpbgorb2YgdGhlIGJ1aWx0LWluIGJpbmFyeSBFRElEIGJsb2JzIGFuZCB0byBmYWNpbGl0YXRlIHRoZSBjcmVhdGlvbiBvZgoraW5kaXZpZHVhbCBkYXRhIGZvciBhIHNwZWNpZmljIG1pc2JlaGF2aW5nIG1vbml0b3IsIGNvbW1lbnRlZCBzb3VyY2VzCithbmQgYSBNYWtlZmlsZSBlbnZpcm9ubWVudCBhcmUgZ2l2ZW4gaGVyZS4KKworVG8gY3JlYXRlIGJpbmFyeSBFRElEIGFuZCBDIHNvdXJjZSBjb2RlIGZpbGVzIGZyb20gdGhlIGV4aXN0aW5nIGRhdGEKK21hdGVyaWFsLCBzaW1wbHkgdHlwZSAibWFrZSIuCisKK0lmIHlvdSB3YW50IHRvIGNyZWF0ZSB5b3VyIG93biBFRElEIGZpbGUsIGNvcHkgdGhlIGZpbGUgMTAyNHg3NjguUywKK3JlcGxhY2UgdGhlIHNldHRpbmdzIHdpdGggeW91ciBvd24gZGF0YSBhbmQgYWRkIGEgbmV3IHRhcmdldCB0byB0aGUKK01ha2VmaWxlLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBFRElEIGRhdGEgc3RydWN0dXJlIGV4cGVjdHMgdGhlIHRpbWluZwordmFsdWVzIGluIGEgZGlmZmVyZW50IHdheSBhcyBjb21wYXJlZCB0byB0aGUgc3RhbmRhcmQgWDExIGZvcm1hdC4KKworWDExOgorSFRpbWluZ3M6ICBoZGlzcCBoc3luY3N0YXJ0IGhzeW5jZW5kIGh0b3RhbAorVlRpbWluZ3M6ICB2ZGlzcCB2c3luY3N0YXJ0IHZzeW5jZW5kIHZ0b3RhbAorCitFRElEOgorI2RlZmluZSBYUElYIGhkaXNwCisjZGVmaW5lIFhCTEFOSyBodG90YWwtaGRpc3AKKyNkZWZpbmUgWE9GRlNFVCBoc3luY3N0YXJ0LWhkaXNwCisjZGVmaW5lIFhQVUxTRSBoc3luY2VuZC1oc3luY3N0YXJ0CisKKyNkZWZpbmUgWVBJWCB2ZGlzcAorI2RlZmluZSBZQkxBTksgdnRvdGFsLXZkaXNwCisjZGVmaW5lIFlPRkZTRVQgKDYzKyh2c3luY3N0YXJ0LXZkaXNwKSkKKyNkZWZpbmUgWVBVTFNFICg2MysodnN5bmNlbmQtdnN5bmNzdGFydCkpCisKK1RoZSBDUkMgdmFsdWUgaW4gdGhlIGxhc3QgbGluZQorICAjZGVmaW5lIENSQyAweDU1CithbHNvIGlzIGEgYml0IHRyaWNreS4gQWZ0ZXIgYSBmaXJzdCB2ZXJzaW9uIG9mIHRoZSBiaW5hcnkgZGF0YSBzZXQgaXMKK2NyZWF0ZWQsIGl0IG11c3QgYmUgY2hlY2tlZCB3aXRoIHRoZSAiZWRpZC1kZWNvZGUiIHV0aWxpdHkgd2hpY2ggd2lsbAorbW9zdCBwcm9iYWJseSBjb21wbGFpbiBhYm91dCBhIHdyb25nIENSQy4gRm9ydHVuYXRlbHksIHRoZSB1dGlsaXR5IGFsc28KK2Rpc3BsYXlzIHRoZSBjb3JyZWN0IENSQyB3aGljaCBtdXN0IHRoZW4gYmUgaW5zZXJ0ZWQgaW50byB0aGUgc291cmNlCitmaWxlLiBBZnRlciB0aGUgbWFrZSBwcm9jZWR1cmUgaXMgcmVwZWF0ZWQsIHRoZSBFRElEIGRhdGEgc2V0IGlzIHJlYWR5Cit0byBiZSB1c2VkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9FRElEL01ha2VmaWxlIGIvRG9jdW1lbnRhdGlvbi9FRElEL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3NzYzY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL0VESUQvTWFrZWZpbGUKQEAgLTAsMCArMSwyNiBAQAorCitTT1VSQ0VTCTo9ICQod2lsZGNhcmQgWzAtOV0qeFswLTldKi5TKQorCitCSU4JOj0gJChwYXRzdWJzdCAlLlMsICUuYmluLCAkKFNPVVJDRVMpKQorCitJSEVYCTo9ICQocGF0c3Vic3QgJS5TLCAlLmJpbi5paGV4LCAkKFNPVVJDRVMpKQorCitDT0RFCTo9ICQocGF0c3Vic3QgJS5TLCAlLmMsICQoU09VUkNFUykpCisKK2FsbDoJJChCSU4pICQoSUhFWCkgJChDT0RFKQorCitjbGVhbjoKKwlAcm0gLWYgKi5vICouYmluLmloZXggKi5iaW4gKi5jCisKKyUubzoJJS5TCisJQGNjIC1jICReCisKKyUuYmluOgklLm8KKwlAb2JqY29weSAtT2JpbmFyeSAkXiAkQAorCislLmJpbi5paGV4OgklLm8KKwlAb2JqY29weSAtT2loZXggJF4gJEAKKwlAZG9zMnVuaXggJEAgMj4vZGV2L251bGwKKworJS5jOgklLmJpbgorCUBlY2hvICJ7IiA+JEA7IGhleGR1bXAgLWYgaGV4ICReID4+JEA7IGVjaG8gIn07IiA+PiRACmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0VESUQvZWRpZC5TIGIvRG9jdW1lbnRhdGlvbi9FRElEL2VkaWQuUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWMwMzI3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9FRElEL2VkaWQuUwpAQCAtMCwwICsxLDI3MiBAQAorLyoKKyAgIGVkaWQuUzogRURJRCBkYXRhIHRlbXBsYXRlCisKKyAgIENvcHlyaWdodCAoQykgMjAxMiBDYXJzdGVuIEVtZGUgPEMuRW1kZUBvc2FkbC5vcmc+CisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMgorICAgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EuCisqLworCisKKy8qIE1hbnVmYWN0dXJlciAqLworI2RlZmluZSBNRkdfTE5YMSAnTCcKKyNkZWZpbmUgTUZHX0xOWDIgJ04nCisjZGVmaW5lIE1GR19MTlgzICdYJworI2RlZmluZSBTRVJJQUwgMAorI2RlZmluZSBZRUFSIDIwMTIKKyNkZWZpbmUgV0VFSyA1CisKKy8qIEVESUQgMS4zIHN0YW5kYXJkIGRlZmluaXRpb25zICovCisjZGVmaW5lIFhZX1JBVElPXzE2XzEwCTBiMDAKKyNkZWZpbmUgWFlfUkFUSU9fNF8zCTBiMDEKKyNkZWZpbmUgWFlfUkFUSU9fNV80CTBiMTAKKyNkZWZpbmUgWFlfUkFUSU9fMTZfOQkwYjExCisKKy8qIFByb3ZpZGUgZGVmYXVsdHMgZm9yIHRoZSB0aW1pbmcgYml0cyAqLworI2lmbmRlZiBFU1RBQkxJU0hFRF9USU1JTkcxX0JJVFMKKyNkZWZpbmUgRVNUQUJMSVNIRURfVElNSU5HMV9CSVRTIDB4MDAKKyNlbmRpZgorI2lmbmRlZiBFU1RBQkxJU0hFRF9USU1JTkcyX0JJVFMKKyNkZWZpbmUgRVNUQUJMSVNIRURfVElNSU5HMl9CSVRTIDB4MDAKKyNlbmRpZgorI2lmbmRlZiBFU1RBQkxJU0hFRF9USU1JTkczX0JJVFMKKyNkZWZpbmUgRVNUQUJMSVNIRURfVElNSU5HM19CSVRTIDB4MDAKKyNlbmRpZgorCisjZGVmaW5lIG1mZ25hbWUyaWQodjEsdjIsdjMpIFwKKwkoKCgodjEtJ0AnKSYweDFmKTw8MTApKygoKHYyLSdAJykmMHgxZik8PDUpKygodjMtJ0AnKSYweDFmKSkKKyNkZWZpbmUgc3dhcDE2KHYxKSAoKHYxPj44KSsoKHYxJjB4ZmYpPDw4KSkKKyNkZWZpbmUgbXNiczIodjEsdjIpICgoKCh2MT4+OCkmMHgwZik8PDQpKygodjI+PjgpJjB4MGYpKQorI2RlZmluZSBtc2JzNCh2MSx2Mix2Myx2NCkgXAorCSgoKHYxJjB4MDMpPj4yKSsoKHYyJjB4MDMpPj40KSsoKHYzJjB4MDMpPj42KSsoKHY0JjB4MDMpPj44KSkKKyNkZWZpbmUgcGl4ZHBpMm1tKHBpeCxkcGkpICgocGl4KjI1KS9kcGkpCisjZGVmaW5lIHhzaXplIHBpeGRwaTJtbShYUElYLERQSSkKKyNkZWZpbmUgeXNpemUgcGl4ZHBpMm1tKFlQSVgsRFBJKQorCisJCS5kYXRhCisKKy8qIEZpeGVkIGhlYWRlciBwYXR0ZXJuICovCitoZWFkZXI6CQkuYnl0ZQkweDAwLDB4ZmYsMHhmZiwweGZmLDB4ZmYsMHhmZiwweGZmLDB4MDAKKworbWZnX2lkOgkJLndvcmQJc3dhcDE2KG1mZ25hbWUyaWQoTUZHX0xOWDEsIE1GR19MTlgyLCBNRkdfTE5YMykpCisKK3Byb2RfY29kZToJLndvcmQJMAorCisvKiBTZXJpYWwgbnVtYmVyLiAzMiBiaXRzLCBsaXR0bGUgZW5kaWFuLiAqLworc2VyaWFsX251bWJlcjoJLmxvbmcJU0VSSUFMCisKKy8qIFdlZWsgb2YgbWFudWZhY3R1cmUgKi8KK3dlZWs6CQkuYnl0ZQlXRUVLCisKKy8qIFllYXIgb2YgbWFudWZhY3R1cmUsIGxlc3MgMTk5MC4gKDE5OTAtMjI0NSkKKyAgIElmIHdlZWs9MjU1LCBpdCBpcyB0aGUgbW9kZWwgeWVhciBpbnN0ZWFkICovCit5ZWFyOgkJLmJ5dGUJWUVBUi0xOTkwCisKK3ZlcnNpb246CS5ieXRlCVZFUlNJT04gCS8qIEVESUQgdmVyc2lvbiwgdXN1YWxseSAxIChmb3IgMS4zKSAqLworcmV2aXNpb246CS5ieXRlCVJFVklTSU9OCS8qIEVESUQgcmV2aXNpb24sIHVzdWFsbHkgMyAoZm9yIDEuMykgKi8KKworLyogSWYgQml0IDc9MQlEaWdpdGFsIGlucHV0LiBJZiBzZXQsIHRoZSBmb2xsb3dpbmcgYml0IGRlZmluaXRpb25zIGFwcGx5OgorICAgICBCaXRzIDYtMQlSZXNlcnZlZCwgbXVzdCBiZSAwCisgICAgIEJpdCAwCVNpZ25hbCBpcyBjb21wYXRpYmxlIHdpdGggVkVTQSBERlAgMS54IFRNRFMgQ1JHQiwKKwkJICAxIHBpeGVsIHBlciBjbG9jaywgdXAgdG8gOCBiaXRzIHBlciBjb2xvciwgTVNCIGFsaWduZWQsCisgICBJZiBCaXQgNz0wCUFuYWxvZyBpbnB1dC4gSWYgY2xlYXIsIHRoZSBmb2xsb3dpbmcgYml0IGRlZmluaXRpb25zIGFwcGx5OgorICAgICBCaXRzIDYtNQlWaWRlbyB3aGl0ZSBhbmQgc3luYyBsZXZlbHMsIHJlbGF0aXZlIHRvIGJsYW5rCisJCSAgMDA9KzAuNy8tMC4zIFY7IDAxPSswLjcxNC8tMC4yODYgVjsKKwkJICAxMD0rMS4wLy0wLjQgVjsgMTE9KzAuNy8wIFYKKyAgIEJpdCA0CUJsYW5rLXRvLWJsYWNrIHNldHVwIChwZWRlc3RhbCkgZXhwZWN0ZWQKKyAgIEJpdCAzCVNlcGFyYXRlIHN5bmMgc3VwcG9ydGVkCisgICBCaXQgMglDb21wb3NpdGUgc3luYyAob24gSFN5bmMpIHN1cHBvcnRlZAorICAgQml0IDEJU3luYyBvbiBncmVlbiBzdXBwb3J0ZWQKKyAgIEJpdCAwCVZTeW5jIHB1bHNlIG11c3QgYmUgc2VycmF0ZWQgd2hlbiBzb21wb3NpdGUgb3IKKwkJICBzeW5jLW9uLWdyZWVuIGlzIHVzZWQuICovCit2aWRlb19wYXJtczoJLmJ5dGUJMHg2ZAorCisvKiBNYXhpbXVtIGhvcml6b250YWwgaW1hZ2Ugc2l6ZSwgaW4gY2VudGltZXRyZXMKKyAgIChtYXggMjkyIGNtLzExNSBpbiBhdCAxNjo5IGFzcGVjdCByYXRpbykgKi8KK21heF9ob3Jfc2l6ZToJLmJ5dGUJeHNpemUvMTAKKworLyogTWF4aW11bSB2ZXJ0aWNhbCBpbWFnZSBzaXplLCBpbiBjZW50aW1ldHJlcy4KKyAgIElmIGVpdGhlciBieXRlIGlzIDAsIHVuZGVmaW5lZCAoZS5nLiBwcm9qZWN0b3IpICovCittYXhfdmVydF9zaXplOgkuYnl0ZQl5c2l6ZS8xMAorCisvKiBEaXNwbGF5IGdhbW1hLCBtaW51cyAxLCB0aW1lcyAxMDAgKHJhbmdlIDEuMDAtMy41ICovCitnYW1tYToJCS5ieXRlCTEyMAorCisvKiBCaXQgNwlEUE1TIHN0YW5kYnkgc3VwcG9ydGVkCisgICBCaXQgNglEUE1TIHN1c3BlbmQgc3VwcG9ydGVkCisgICBCaXQgNQlEUE1TIGFjdGl2ZS1vZmYgc3VwcG9ydGVkCisgICBCaXRzIDQtMwlEaXNwbGF5IHR5cGU6IDAwPW1vbm9jaHJvbWU7IDAxPVJHQiBjb2xvdXI7CisJCSAgMTA9bm9uLVJHQiBtdWx0aWNvbG91cjsgMTE9dW5kZWZpbmVkCisgICBCaXQgMglTdGFuZGFyZCBzUkdCIGNvbG91ciBzcGFjZS4gQnl0ZXMgMjUtMzQgbXVzdCBjb250YWluCisJCSAgc1JHQiBzdGFuZGFyZCB2YWx1ZXMuCisgICBCaXQgMQlQcmVmZXJyZWQgdGltaW5nIG1vZGUgc3BlY2lmaWVkIGluIGRlc2NyaXB0b3IgYmxvY2sgMS4KKyAgIEJpdCAwCUdURiBzdXBwb3J0ZWQgd2l0aCBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMuICovCitkc3BfZmVhdHVyZXM6CS5ieXRlCTB4ZWEKKworLyogQ2hyb21hdGljaXR5IGNvb3JkaW5hdGVzLiAqLworLyogUmVkIGFuZCBncmVlbiBsZWFzdC1zaWduaWZpY2FudCBiaXRzCisgICBCaXRzIDctNglSZWQgeCB2YWx1ZSBsZWFzdC1zaWduaWZpY2FudCAyIGJpdHMKKyAgIEJpdHMgNS00CVJlZCB5IHZhbHVlIGxlYXN0LXNpZ25pZmljYW50IDIgYml0cworICAgQml0cyAzLTIJR3JlZW4geCB2YWx1ZSBsc3Qtc2lnbmlmaWNhbnQgMiBiaXRzCisgICBCaXRzIDEtMAlHcmVlbiB5IHZhbHVlIGxlYXN0LXNpZ25pZmljYW50IDIgYml0cyAqLworcmVkX2dyZWVuX2xzYjoJLmJ5dGUJMHg1ZQorCisvKiBCbHVlIGFuZCB3aGl0ZSBsZWFzdC1zaWduaWZpY2FudCAyIGJpdHMgKi8KK2JsdWVfd2hpdGVfbHNiOgkuYnl0ZQkweGMwCisKKy8qIFJlZCB4IHZhbHVlIG1vc3Qgc2lnbmlmaWNhbnQgOCBiaXRzLgorICAgMC0yNTUgZW5jb2RlcyAwLTAuOTk2ICgyNTUvMjU2KTsgMC0wLjk5OSAoMTAyMy8xMDI0KSB3aXRoIGxzYml0cyAqLworcmVkX3hfbXNiOgkuYnl0ZQkweGE0CisKKy8qIFJlZCB5IHZhbHVlIG1vc3Qgc2lnbmlmaWNhbnQgOCBiaXRzICovCityZWRfeV9tc2I6CS5ieXRlCTB4NTkKKworLyogR3JlZW4geCBhbmQgeSB2YWx1ZSBtb3N0IHNpZ25pZmljYW50IDggYml0cyAqLworZ3JlZW5feF95X21zYjoJLmJ5dGUJMHg0YSwweDk4CisKKy8qIEJsdWUgeCBhbmQgeSB2YWx1ZSBtb3N0IHNpZ25pZmljYW50IDggYml0cyAqLworYmx1ZV94X3lfbXNiOgkuYnl0ZQkweDI1LDB4MjAKKworLyogRGVmYXVsdCB3aGl0ZSBwb2ludCB4IGFuZCB5IHZhbHVlIG1vc3Qgc2lnbmlmaWNhbnQgOCBiaXRzICovCit3aGl0ZV94X3lfbXNiOgkuYnl0ZQkweDUwLDB4NTQKKworLyogRXN0YWJsaXNoZWQgdGltaW5ncyAqLworLyogQml0IDcJNzIweDQwMCBAIDcwIEh6CisgICBCaXQgNgk3MjB4NDAwIEAgODggSHoKKyAgIEJpdCA1CTY0MHg0ODAgQCA2MCBIegorICAgQml0IDQJNjQweDQ4MCBAIDY3IEh6CisgICBCaXQgMwk2NDB4NDgwIEAgNzIgSHoKKyAgIEJpdCAyCTY0MHg0ODAgQCA3NSBIegorICAgQml0IDEJODAweDYwMCBAIDU2IEh6CisgICBCaXQgMAk4MDB4NjAwIEAgNjAgSHogKi8KK2VzdGJsX3RpbWluZzE6CS5ieXRlCUVTVEFCTElTSEVEX1RJTUlORzFfQklUUworCisvKiBCaXQgNwk4MDB4NjAwIEAgNzIgSHoKKyAgIEJpdCA2CTgwMHg2MDAgQCA3NSBIegorICAgQml0IDUJODMyeDYyNCBAIDc1IEh6CisgICBCaXQgNAkxMDI0eDc2OCBAIDg3IEh6LCBpbnRlcmxhY2VkICgxMDI0eDc2OCkKKyAgIEJpdCAzCTEwMjR4NzY4IEAgNjAgSHoKKyAgIEJpdCAyCTEwMjR4NzY4IEAgNzIgSHoKKyAgIEJpdCAxCTEwMjR4NzY4IEAgNzUgSHoKKyAgIEJpdCAwCTEyODB4MTAyNCBAIDc1IEh6ICovCitlc3RibF90aW1pbmcyOgkuYnl0ZQlFU1RBQkxJU0hFRF9USU1JTkcyX0JJVFMKKworLyogQml0IDcJMTE1Mng4NzAgQCA3NSBIeiAoQXBwbGUgTWFjaW50b3NoIElJKQorICAgQml0cyA2LTAgCU90aGVyIG1hbnVmYWN0dXJlci1zcGVjaWZpYyBkaXNwbGF5IG1vZCAqLworZXN0YmxfdGltaW5nMzoJLmJ5dGUJRVNUQUJMSVNIRURfVElNSU5HM19CSVRTCisKKy8qIFN0YW5kYXJkIHRpbWluZyAqLworLyogWCByZXNvbHV0aW9uLCBsZXNzIDMxLCBkaXZpZGVkIGJ5IDggKDI1Ni0yMjg4IHBpeGVscykgKi8KK3N0ZF94cmVzOgkuYnl0ZQkoWFBJWC84KS0zMQorLyogWSByZXNvbHV0aW9uLCBYOlkgcGl4ZWwgcmF0aW8KKyAgIEJpdHMgNy02CVg6WSBwaXhlbCByYXRpbzogMDA9MTY6MTA7IDAxPTQ6MzsgMTA9NTo0OyAxMT0xNjo5LgorICAgQml0cyA1LTAJVmVydGljYWwgZnJlcXVlbmN5LCBsZXNzIDYwICg2MC0xMjMgSHopICovCitzdGRfdnJlczoJLmJ5dGUJKFhZX1JBVElPPDw2KStWRlJFUS02MAorCQkuZmlsbAk3LDIsMHgwMTAxCS8qIFVudXNlZCAqLworCitkZXNjcmlwdG9yMToKKy8qIFBpeGVsIGNsb2NrIGluIDEwIGtIeiB1bml0cy4gKDAuLTY1NS4zNSBNSHosIGxpdHRsZS1lbmRpYW4pICovCitjbG9jazoJCS53b3JkCUNMT0NLLzEwCisKKy8qIEhvcml6b250YWwgYWN0aXZlIHBpeGVscyA4IGxzYml0cyAoMC00MDk1KSAqLworeF9hY3RfbHNiOgkuYnl0ZQlYUElYJjB4ZmYKKy8qIEhvcml6b250YWwgYmxhbmtpbmcgcGl4ZWxzIDggbHNiaXRzICgwLTQwOTUpCisgICBFbmQgb2YgYWN0aXZlIHRvIHN0YXJ0IG9mIG5leHQgYWN0aXZlLiAqLworeF9ibGtfbHNiOgkuYnl0ZQlYQkxBTksmMHhmZgorLyogQml0cyA3LTQgCUhvcml6b250YWwgYWN0aXZlIHBpeGVscyA0IG1zYml0cworICAgQml0cyAzLTAJSG9yaXpvbnRhbCBibGFua2luZyBwaXhlbHMgNCBtc2JpdHMgKi8KK3hfbXNiczoJCS5ieXRlCW1zYnMyKFhQSVgsWEJMQU5LKQorCisvKiBWZXJ0aWNhbCBhY3RpdmUgbGluZXMgOCBsc2JpdHMgKDAtNDA5NSkgKi8KK3lfYWN0X2xzYjoJLmJ5dGUJWVBJWCYweGZmCisvKiBWZXJ0aWNhbCBibGFua2luZyBsaW5lcyA4IGxzYml0cyAoMC00MDk1KSAqLworeV9ibGtfbHNiOgkuYnl0ZQlZQkxBTksmMHhmZgorLyogQml0cyA3LTQgCVZlcnRpY2FsIGFjdGl2ZSBsaW5lcyA0IG1zYml0cworICAgQml0cyAzLTAgCVZlcnRpY2FsIGJsYW5raW5nIGxpbmVzIDQgbXNiaXRzICovCit5X21zYnM6CQkuYnl0ZQltc2JzMihZUElYLFlCTEFOSykKKworLyogSG9yaXpvbnRhbCBzeW5jIG9mZnNldCBwaXhlbHMgOCBsc2JpdHMgKDAtMTAyMykgRnJvbSBibGFua2luZyBzdGFydCAqLworeF9zbmNfb2ZmX2xzYjoJLmJ5dGUJWE9GRlNFVCYweGZmCisvKiBIb3Jpem9udGFsIHN5bmMgcHVsc2Ugd2lkdGggcGl4ZWxzIDggbHNiaXRzICgwLTEwMjMpICovCit4X3NuY19wbHNfbHNiOgkuYnl0ZQlYUFVMU0UmMHhmZgorLyogQml0cyA3LTQgCVZlcnRpY2FsIHN5bmMgb2Zmc2V0IGxpbmVzIDQgbHNiaXRzIC02MykKKyAgIEJpdHMgMy0wIAlWZXJ0aWNhbCBzeW5jIHB1bHNlIHdpZHRoIGxpbmVzIDQgbHNiaXRzIC02MykgKi8KK3lfc25jX2xzYjoJLmJ5dGUJKChZT0ZGU0VULTYzKTw8NCkrKFlQVUxTRS02MykKKy8qIEJpdHMgNy02IAlIb3Jpem9udGFsIHN5bmMgb2Zmc2V0IHBpeGVscyAyIG1zYml0cworICAgQml0cyA1LTQgCUhvcml6b250YWwgc3luYyBwdWxzZSB3aWR0aCBwaXhlbHMgMiBtc2JpdHMKKyAgIEJpdHMgMy0yIAlWZXJ0aWNhbCBzeW5jIG9mZnNldCBsaW5lcyAyIG1zYml0cworICAgQml0cyAxLTAgCVZlcnRpY2FsIHN5bmMgcHVsc2Ugd2lkdGggbGluZXMgMiBtc2JpdHMgKi8KK3h5X3NuY19tc2JzOgkuYnl0ZQltc2JzNChYT0ZGU0VULFhQVUxTRSxZT0ZGU0VULFlQVUxTRSkKKworLyogSG9yaXpvbnRhbCBkaXNwbGF5IHNpemUsIG1tLCA4IGxzYml0cyAoMC00MDk1IG1tLCAxNjEgaW4pICovCit4X2RzcF9zaXplOgkuYnl0ZQl4c2l6ZSYweGZmCisKKy8qIFZlcnRpY2FsIGRpc3BsYXkgc2l6ZSwgbW0sIDggbHNiaXRzICgwLTQwOTUgbW0sIDE2MSBpbikgKi8KK3lfZHNwX3NpemU6CS5ieXRlCXlzaXplJjB4ZmYKKworLyogQml0cyA3LTQgCUhvcml6b250YWwgZGlzcGxheSBzaXplLCBtbSwgNCBtc2JpdHMKKyAgIEJpdHMgMy0wIAlWZXJ0aWNhbCBkaXNwbGF5IHNpemUsIG1tLCA0IG1zYml0cyAqLworZHNwX3NpemVfbWJzYjoJLmJ5dGUJbXNiczIoeHNpemUseXNpemUpCisKKy8qIEhvcml6b250YWwgYm9yZGVyIHBpeGVscyAoZWFjaCBzaWRlOyB0b3RhbCBpcyB0d2ljZSB0aGlzKSAqLworeF9ib3JkZXI6CS5ieXRlCTAKKy8qIFZlcnRpY2FsIGJvcmRlciBsaW5lcyAoZWFjaCBzaWRlOyB0b3RhbCBpcyB0d2ljZSB0aGlzKSAqLworeV9ib3JkZXI6CS5ieXRlCTAKKworLyogQml0IDcgCUludGVybGFjZWQKKyAgIEJpdHMgNi01IAlTdGVyZW8gbW9kZTogMDA9Tm8gc3RlcmVvOyBvdGhlciB2YWx1ZXMgZGVwZW5kIG9uIGJpdCAwOgorICAgQml0IDA9MDogMDE9RmllbGQgc2VxdWVudGlhbCwgc3luYz0xIGR1cmluZyByaWdodDsgMTA9c2ltaWxhciwKKyAgICAgc3luYz0xIGR1cmluZyBsZWZ0OyAxMT00LXdheSBpbnRlcmxlYXZlZCBzdGVyZW8KKyAgIEJpdCAwPTEgMi13YXkgaW50ZXJsZWF2ZWQgc3RlcmVvOiAwMT1SaWdodCBpbWFnZSBvbiBldmVuIGxpbmVzOworICAgICAxMD1MZWZ0IGltYWdlIG9uIGV2ZW4gbGluZXM7IDExPXNpZGUtYnktc2lkZQorICAgQml0cyA0LTMgCVN5bmMgdHlwZTogMDA9QW5hbG9nIGNvbXBvc2l0ZTsgMDE9Qmlwb2xhciBhbmFsb2cgY29tcG9zaXRlOworICAgICAxMD1EaWdpdGFsIGNvbXBvc2l0ZSAob24gSFN5bmMpOyAxMT1EaWdpdGFsIHNlcGFyYXRlCisgICBCaXQgMiAJSWYgZGlnaXRhbCBzZXBhcmF0ZTogVmVydGljYWwgc3luYyBwb2xhcml0eSAoMT1wb3NpdGl2ZSkKKyAgIE90aGVyIHR5cGVzOiBWU3luYyBzZXJyYXRlZCAoSFN5bmMgZHVyaW5nIFZTeW5jKQorICAgQml0IDEgCUlmIGFuYWxvZyBzeW5jOiBTeW5jIG9uIGFsbCAzIFJHQiBsaW5lcyAoZWxzZSBncmVlbiBvbmx5KQorICAgRGlnaXRhbDogSFN5bmMgcG9sYXJpdHkgKDE9cG9zaXRpdmUpCisgICBCaXQgMCAJMi13YXkgbGluZS1pbnRlcmxlYXZlZCBzdGVyZW8sIGlmIGJpdHMgNC0zIGFyZSBub3QgMDAuICovCitmZWF0dXJlczoJLmJ5dGUJMHgxOCsoVlNZTkNfUE9MPDwyKSsoSFNZTkNfUE9MPDwxKQorCitkZXNjcmlwdG9yMjoJLmJ5dGUJMCwwCS8qIE5vdCBhIGRldGFpbGVkIHRpbWluZyBkZXNjcmlwdG9yICovCisJCS5ieXRlCTAJLyogTXVzdCBiZSB6ZXJvICovCisJCS5ieXRlCTB4ZmYJLyogRGVzY3JpcHRvciBpcyBtb25pdG9yIHNlcmlhbCBudW1iZXIgKHRleHQpICovCisJCS5ieXRlCTAJLyogTXVzdCBiZSB6ZXJvICovCitzdGFydDE6CQkuYXNjaWkJIkxpbnV4ICMwIgorZW5kMToJCS5ieXRlCTB4MGEJLyogRW5kIG1hcmtlciAqLworCQkuZmlsbAkxMi0oZW5kMS1zdGFydDEpLCAxLCAweDIwIC8qIFBhZGRlZCBzcGFjZXMgKi8KK2Rlc2NyaXB0b3IzOgkuYnl0ZQkwLDAJLyogTm90IGEgZGV0YWlsZWQgdGltaW5nIGRlc2NyaXB0b3IgKi8KKwkJLmJ5dGUJMAkvKiBNdXN0IGJlIHplcm8gKi8KKwkJLmJ5dGUJMHhmZAkvKiBEZXNjcmlwdG9yIGlzIG1vbml0b3IgcmFuZ2UgbGltaXRzICovCisJCS5ieXRlCTAJLyogTXVzdCBiZSB6ZXJvICovCitzdGFydDI6CQkuYnl0ZQlWRlJFUS0xCS8qIE1pbmltdW0gdmVydGljYWwgZmllbGQgcmF0ZSAoMS0yNTUgSHopICovCisJCS5ieXRlCVZGUkVRKzEJLyogTWF4aW11bSB2ZXJ0aWNhbCBmaWVsZCByYXRlICgxLTI1NSBIeikgKi8KKwkJLmJ5dGUJKENMT0NLLyhYUElYK1hCTEFOSykpLTEgLyogTWluaW11bSBob3Jpem9udGFsIGxpbmUgcmF0ZQorCQkJCQkJICAgICgxLTI1NSBrSHopICovCisJCS5ieXRlCShDTE9DSy8oWFBJWCtYQkxBTkspKSsxIC8qIE1heGltdW0gaG9yaXpvbnRhbCBsaW5lIHJhdGUKKwkJCQkJCSAgICAoMS0yNTUga0h6KSAqLworCQkuYnl0ZQkoQ0xPQ0svMTAwMDApKzEJLyogTWF4aW11bSBwaXhlbCBjbG9jayByYXRlLCByb3VuZGVkIHVwCisJCQkJCSAgIHRvIDEwIE1IeiBtdWx0aXBsZSAoMTAtMjU1MCBNSHopICovCisJCS5ieXRlCTAJLyogTm8gZXh0ZW5kZWQgdGltaW5nIGluZm9ybWF0aW9uIHR5cGUgKi8KK2VuZDI6CQkuYnl0ZQkweDBhCS8qIEVuZCBtYXJrZXIgKi8KKwkJLmZpbGwJMTItKGVuZDItc3RhcnQyKSwgMSwgMHgyMCAvKiBQYWRkZWQgc3BhY2VzICovCitkZXNjcmlwdG9yNDoJLmJ5dGUJMCwwCS8qIE5vdCBhIGRldGFpbGVkIHRpbWluZyBkZXNjcmlwdG9yICovCisJCS5ieXRlCTAJLyogTXVzdCBiZSB6ZXJvICovCisJCS5ieXRlCTB4ZmMJLyogRGVzY3JpcHRvciBpcyB0ZXh0ICovCisJCS5ieXRlCTAJLyogTXVzdCBiZSB6ZXJvICovCitzdGFydDM6CQkuYXNjaWkJVElNSU5HX05BTUUKK2VuZDM6CQkuYnl0ZQkweDBhCS8qIEVuZCBtYXJrZXIgKi8KKwkJLmZpbGwJMTItKGVuZDMtc3RhcnQzKSwgMSwgMHgyMCAvKiBQYWRkZWQgc3BhY2VzICovCitleHRlbnNpb25zOgkuYnl0ZQkwCS8qIE51bWJlciBvZiBleHRlbnNpb25zIHRvIGZvbGxvdyAqLworY2hlY2tzdW06CS5ieXRlCUNSQwkvKiBTdW0gb2YgYWxsIGJ5dGVzIG11c3QgYmUgMCAqLwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9FRElEL2hleCBiL0RvY3VtZW50YXRpb24vRURJRC9oZXgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg3M2ViYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vRURJRC9oZXgKQEAgLTAsMCArMSBAQAorIlx0IiA4LzEgIjB4JTAyeCwgIiAiXG4iCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0hPV1RPIGIvRG9jdW1lbnRhdGlvbi9IT1dUTwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTE1MmQzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9IT1dUTwpAQCAtMCwwICsxLDYwOSBAQAorSE9XVE8gZG8gTGludXgga2VybmVsIGRldmVsb3BtZW50CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBpcyB0aGUgYmUtYWxsLCBlbmQtYWxsIGRvY3VtZW50IG9uIHRoaXMgdG9waWMuICBJdCBjb250YWlucworaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byBiZWNvbWUgYSBMaW51eCBrZXJuZWwgZGV2ZWxvcGVyIGFuZCBob3cgdG8gbGVhcm4KK3RvIHdvcmsgd2l0aCB0aGUgTGludXgga2VybmVsIGRldmVsb3BtZW50IGNvbW11bml0eS4gIEl0IHRyaWVzIHRvIG5vdAorY29udGFpbiBhbnl0aGluZyByZWxhdGVkIHRvIHRoZSB0ZWNobmljYWwgYXNwZWN0cyBvZiBrZXJuZWwgcHJvZ3JhbW1pbmcsCitidXQgd2lsbCBoZWxwIHBvaW50IHlvdSBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uIGZvciB0aGF0LgorCitJZiBhbnl0aGluZyBpbiB0aGlzIGRvY3VtZW50IGJlY29tZXMgb3V0IG9mIGRhdGUsIHBsZWFzZSBzZW5kIGluIHBhdGNoZXMKK3RvIHRoZSBtYWludGFpbmVyIG9mIHRoaXMgZmlsZSwgd2hvIGlzIGxpc3RlZCBhdCB0aGUgYm90dG9tIG9mIHRoZQorZG9jdW1lbnQuCisKKworSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0KKworU28sIHlvdSB3YW50IHRvIGxlYXJuIGhvdyB0byBiZWNvbWUgYSBMaW51eCBrZXJuZWwgZGV2ZWxvcGVyPyAgT3IgeW91CitoYXZlIGJlZW4gdG9sZCBieSB5b3VyIG1hbmFnZXIsICJHbyB3cml0ZSBhIExpbnV4IGRyaXZlciBmb3IgdGhpcworZGV2aWNlLiIgIFRoaXMgZG9jdW1lbnQncyBnb2FsIGlzIHRvIHRlYWNoIHlvdSBldmVyeXRoaW5nIHlvdSBuZWVkIHRvCitrbm93IHRvIGFjaGlldmUgdGhpcyBieSBkZXNjcmliaW5nIHRoZSBwcm9jZXNzIHlvdSBuZWVkIHRvIGdvIHRocm91Z2gsCithbmQgaGludHMgb24gaG93IHRvIHdvcmsgd2l0aCB0aGUgY29tbXVuaXR5LiAgSXQgd2lsbCBhbHNvIHRyeSB0bworZXhwbGFpbiBzb21lIG9mIHRoZSByZWFzb25zIHdoeSB0aGUgY29tbXVuaXR5IHdvcmtzIGxpa2UgaXQgZG9lcy4KKworVGhlIGtlcm5lbCBpcyB3cml0dGVuIG1vc3RseSBpbiBDLCB3aXRoIHNvbWUgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudAorcGFydHMgd3JpdHRlbiBpbiBhc3NlbWJseS4gQSBnb29kIHVuZGVyc3RhbmRpbmcgb2YgQyBpcyByZXF1aXJlZCBmb3IKK2tlcm5lbCBkZXZlbG9wbWVudC4gIEFzc2VtYmx5IChhbnkgYXJjaGl0ZWN0dXJlKSBpcyBub3QgcmVxdWlyZWQgdW5sZXNzCit5b3UgcGxhbiB0byBkbyBsb3ctbGV2ZWwgZGV2ZWxvcG1lbnQgZm9yIHRoYXQgYXJjaGl0ZWN0dXJlLiAgVGhvdWdoIHRoZXkKK2FyZSBub3QgYSBnb29kIHN1YnN0aXR1dGUgZm9yIGEgc29saWQgQyBlZHVjYXRpb24gYW5kL29yIHllYXJzIG9mCitleHBlcmllbmNlLCB0aGUgZm9sbG93aW5nIGJvb2tzIGFyZSBnb29kIGZvciwgaWYgYW55dGhpbmcsIHJlZmVyZW5jZToKKyAtICJUaGUgQyBQcm9ncmFtbWluZyBMYW5ndWFnZSIgYnkgS2VybmlnaGFuIGFuZCBSaXRjaGllIFtQcmVudGljZSBIYWxsXQorIC0gIlByYWN0aWNhbCBDIFByb2dyYW1taW5nIiBieSBTdGV2ZSBPdWFsbGluZSBbTydSZWlsbHldCisgLSAiQzogIEEgUmVmZXJlbmNlIE1hbnVhbCIgYnkgSGFyYmlzb24gYW5kIFN0ZWVsZSBbUHJlbnRpY2UgSGFsbF0KKworVGhlIGtlcm5lbCBpcyB3cml0dGVuIHVzaW5nIEdOVSBDIGFuZCB0aGUgR05VIHRvb2xjaGFpbi4gIFdoaWxlIGl0CithZGhlcmVzIHRvIHRoZSBJU08gQzg5IHN0YW5kYXJkLCBpdCB1c2VzIGEgbnVtYmVyIG9mIGV4dGVuc2lvbnMgdGhhdCBhcmUKK25vdCBmZWF0dXJlZCBpbiB0aGUgc3RhbmRhcmQuICBUaGUga2VybmVsIGlzIGEgZnJlZXN0YW5kaW5nIEMKK2Vudmlyb25tZW50LCB3aXRoIG5vIHJlbGlhbmNlIG9uIHRoZSBzdGFuZGFyZCBDIGxpYnJhcnksIHNvIHNvbWUKK3BvcnRpb25zIG9mIHRoZSBDIHN0YW5kYXJkIGFyZSBub3Qgc3VwcG9ydGVkLiAgQXJiaXRyYXJ5IGxvbmcgbG9uZworZGl2aXNpb25zIGFuZCBmbG9hdGluZyBwb2ludCBhcmUgbm90IGFsbG93ZWQuICBJdCBjYW4gc29tZXRpbWVzIGJlCitkaWZmaWN1bHQgdG8gdW5kZXJzdGFuZCB0aGUgYXNzdW1wdGlvbnMgdGhlIGtlcm5lbCBoYXMgb24gdGhlIHRvb2xjaGFpbgorYW5kIHRoZSBleHRlbnNpb25zIHRoYXQgaXQgdXNlcywgYW5kIHVuZm9ydHVuYXRlbHkgdGhlcmUgaXMgbm8KK2RlZmluaXRpdmUgcmVmZXJlbmNlIGZvciB0aGVtLiAgUGxlYXNlIGNoZWNrIHRoZSBnY2MgaW5mbyBwYWdlcyAoYGluZm8KK2djY2ApIGZvciBzb21lIGluZm9ybWF0aW9uIG9uIHRoZW0uCisKK1BsZWFzZSByZW1lbWJlciB0aGF0IHlvdSBhcmUgdHJ5aW5nIHRvIGxlYXJuIGhvdyB0byB3b3JrIHdpdGggdGhlCitleGlzdGluZyBkZXZlbG9wbWVudCBjb21tdW5pdHkuICBJdCBpcyBhIGRpdmVyc2UgZ3JvdXAgb2YgcGVvcGxlLCB3aXRoCitoaWdoIHN0YW5kYXJkcyBmb3IgY29kaW5nLCBzdHlsZSBhbmQgcHJvY2VkdXJlLiAgVGhlc2Ugc3RhbmRhcmRzIGhhdmUKK2JlZW4gY3JlYXRlZCBvdmVyIHRpbWUgYmFzZWQgb24gd2hhdCB0aGV5IGhhdmUgZm91bmQgdG8gd29yayBiZXN0IGZvcgorc3VjaCBhIGxhcmdlIGFuZCBnZW9ncmFwaGljYWxseSBkaXNwZXJzZWQgdGVhbS4gIFRyeSB0byBsZWFybiBhcyBtdWNoIGFzCitwb3NzaWJsZSBhYm91dCB0aGVzZSBzdGFuZGFyZHMgYWhlYWQgb2YgdGltZSwgYXMgdGhleSBhcmUgd2VsbAorZG9jdW1lbnRlZDsgZG8gbm90IGV4cGVjdCBwZW9wbGUgdG8gYWRhcHQgdG8geW91IG9yIHlvdXIgY29tcGFueSdzIHdheQorb2YgZG9pbmcgdGhpbmdzLgorCisKK0xlZ2FsIElzc3VlcworLS0tLS0tLS0tLS0tCisKK1RoZSBMaW51eCBrZXJuZWwgc291cmNlIGNvZGUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIEdQTC4gIFBsZWFzZSBzZWUgdGhlCitmaWxlLCBDT1BZSU5HLCBpbiB0aGUgbWFpbiBkaXJlY3Rvcnkgb2YgdGhlIHNvdXJjZSB0cmVlLCBmb3IgZGV0YWlscyBvbgordGhlIGxpY2Vuc2UuICBJZiB5b3UgaGF2ZSBmdXJ0aGVyIHF1ZXN0aW9ucyBhYm91dCB0aGUgbGljZW5zZSwgcGxlYXNlCitjb250YWN0IGEgbGF3eWVyLCBhbmQgZG8gbm90IGFzayBvbiB0aGUgTGludXgga2VybmVsIG1haWxpbmcgbGlzdC4gIFRoZQorcGVvcGxlIG9uIHRoZSBtYWlsaW5nIGxpc3RzIGFyZSBub3QgbGF3eWVycywgYW5kIHlvdSBzaG91bGQgbm90IHJlbHkgb24KK3RoZWlyIHN0YXRlbWVudHMgb24gbGVnYWwgbWF0dGVycy4KKworRm9yIGNvbW1vbiBxdWVzdGlvbnMgYW5kIGFuc3dlcnMgYWJvdXQgdGhlIEdQTCwgcGxlYXNlIHNlZToKKwlodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLWZhcS5odG1sCisKKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tCisKK1RoZSBMaW51eCBrZXJuZWwgc291cmNlIHRyZWUgaGFzIGEgbGFyZ2UgcmFuZ2Ugb2YgZG9jdW1lbnRzIHRoYXQgYXJlCitpbnZhbHVhYmxlIGZvciBsZWFybmluZyBob3cgdG8gaW50ZXJhY3Qgd2l0aCB0aGUga2VybmVsIGNvbW11bml0eS4gIFdoZW4KK25ldyBmZWF0dXJlcyBhcmUgYWRkZWQgdG8gdGhlIGtlcm5lbCwgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCBuZXcKK2RvY3VtZW50YXRpb24gZmlsZXMgYXJlIGFsc28gYWRkZWQgd2hpY2ggZXhwbGFpbiBob3cgdG8gdXNlIHRoZSBmZWF0dXJlLgorV2hlbiBhIGtlcm5lbCBjaGFuZ2UgY2F1c2VzIHRoZSBpbnRlcmZhY2UgdGhhdCB0aGUga2VybmVsIGV4cG9zZXMgdG8KK3VzZXJzcGFjZSB0byBjaGFuZ2UsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHNlbmQgdGhlIGluZm9ybWF0aW9uIG9yCithIHBhdGNoIHRvIHRoZSBtYW51YWwgcGFnZXMgZXhwbGFpbmluZyB0aGUgY2hhbmdlIHRvIHRoZSBtYW51YWwgcGFnZXMKK21haW50YWluZXIgYXQgbXRrLm1hbnBhZ2VzQGdtYWlsLmNvbSwgYW5kIENDIHRoZSBsaXN0CitsaW51eC1hcGlAdmdlci5rZXJuZWwub3JnLgorCitIZXJlIGlzIGEgbGlzdCBvZiBmaWxlcyB0aGF0IGFyZSBpbiB0aGUga2VybmVsIHNvdXJjZSB0cmVlIHRoYXQgYXJlCityZXF1aXJlZCByZWFkaW5nOgorICBSRUFETUUKKyAgICBUaGlzIGZpbGUgZ2l2ZXMgYSBzaG9ydCBiYWNrZ3JvdW5kIG9uIHRoZSBMaW51eCBrZXJuZWwgYW5kIGRlc2NyaWJlcworICAgIHdoYXQgaXMgbmVjZXNzYXJ5IHRvIGRvIHRvIGNvbmZpZ3VyZSBhbmQgYnVpbGQgdGhlIGtlcm5lbC4gIFBlb3BsZQorICAgIHdobyBhcmUgbmV3IHRvIHRoZSBrZXJuZWwgc2hvdWxkIHN0YXJ0IGhlcmUuCisKKyAgRG9jdW1lbnRhdGlvbi9DaGFuZ2VzCisgICAgVGhpcyBmaWxlIGdpdmVzIGEgbGlzdCBvZiB0aGUgbWluaW11bSBsZXZlbHMgb2YgdmFyaW91cyBzb2Z0d2FyZQorICAgIHBhY2thZ2VzIHRoYXQgYXJlIG5lY2Vzc2FyeSB0byBidWlsZCBhbmQgcnVuIHRoZSBrZXJuZWwKKyAgICBzdWNjZXNzZnVsbHkuCisKKyAgRG9jdW1lbnRhdGlvbi9Db2RpbmdTdHlsZQorICAgIFRoaXMgZGVzY3JpYmVzIHRoZSBMaW51eCBrZXJuZWwgY29kaW5nIHN0eWxlLCBhbmQgc29tZSBvZiB0aGUKKyAgICByYXRpb25hbGUgYmVoaW5kIGl0LiBBbGwgbmV3IGNvZGUgaXMgZXhwZWN0ZWQgdG8gZm9sbG93IHRoZQorICAgIGd1aWRlbGluZXMgaW4gdGhpcyBkb2N1bWVudC4gTW9zdCBtYWludGFpbmVycyB3aWxsIG9ubHkgYWNjZXB0CisgICAgcGF0Y2hlcyBpZiB0aGVzZSBydWxlcyBhcmUgZm9sbG93ZWQsIGFuZCBtYW55IHBlb3BsZSB3aWxsIG9ubHkKKyAgICByZXZpZXcgY29kZSBpZiBpdCBpcyBpbiB0aGUgcHJvcGVyIHN0eWxlLgorCisgIERvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXMKKyAgRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nRHJpdmVycworICAgIFRoZXNlIGZpbGVzIGRlc2NyaWJlIGluIGV4cGxpY2l0IGRldGFpbCBob3cgdG8gc3VjY2Vzc2Z1bGx5IGNyZWF0ZQorICAgIGFuZCBzZW5kIGEgcGF0Y2gsIGluY2x1ZGluZyAoYnV0IG5vdCBsaW1pdGVkIHRvKToKKyAgICAgICAtIEVtYWlsIGNvbnRlbnRzCisgICAgICAgLSBFbWFpbCBmb3JtYXQKKyAgICAgICAtIFdobyB0byBzZW5kIGl0IHRvCisgICAgRm9sbG93aW5nIHRoZXNlIHJ1bGVzIHdpbGwgbm90IGd1YXJhbnRlZSBzdWNjZXNzIChhcyBhbGwgcGF0Y2hlcyBhcmUKKyAgICBzdWJqZWN0IHRvIHNjcnV0aW55IGZvciBjb250ZW50IGFuZCBzdHlsZSksIGJ1dCBub3QgZm9sbG93aW5nIHRoZW0KKyAgICB3aWxsIGFsbW9zdCBhbHdheXMgcHJldmVudCBpdC4KKworICAgIE90aGVyIGV4Y2VsbGVudCBkZXNjcmlwdGlvbnMgb2YgaG93IHRvIGNyZWF0ZSBwYXRjaGVzIHByb3Blcmx5IGFyZToKKwkiVGhlIFBlcmZlY3QgUGF0Y2giCisJCWh0dHA6Ly93d3cub3psYWJzLm9yZy9+YWtwbS9zdHVmZi90cHAudHh0CisJIkxpbnV4IGtlcm5lbCBwYXRjaCBzdWJtaXNzaW9uIGZvcm1hdCIKKwkJaHR0cDovL2xpbnV4Lnl5ei51cy9wYXRjaC1mb3JtYXQuaHRtbAorCisgIERvY3VtZW50YXRpb24vc3RhYmxlX2FwaV9ub25zZW5zZS50eHQKKyAgICBUaGlzIGZpbGUgZGVzY3JpYmVzIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoZSBjb25zY2lvdXMgZGVjaXNpb24gdG8KKyAgICBub3QgaGF2ZSBhIHN0YWJsZSBBUEkgd2l0aGluIHRoZSBrZXJuZWwsIGluY2x1ZGluZyB0aGluZ3MgbGlrZToKKyAgICAgIC0gU3Vic3lzdGVtIHNoaW0tbGF5ZXJzIChmb3IgY29tcGF0aWJpbGl0eT8pCisgICAgICAtIERyaXZlciBwb3J0YWJpbGl0eSBiZXR3ZWVuIE9wZXJhdGluZyBTeXN0ZW1zLgorICAgICAgLSBNaXRpZ2F0aW5nIHJhcGlkIGNoYW5nZSB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSAob3IKKwlwcmV2ZW50aW5nIHJhcGlkIGNoYW5nZSkKKyAgICBUaGlzIGRvY3VtZW50IGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIExpbnV4IGRldmVsb3BtZW50CisgICAgcGhpbG9zb3BoeSBhbmQgaXMgdmVyeSBpbXBvcnRhbnQgZm9yIHBlb3BsZSBtb3ZpbmcgdG8gTGludXggZnJvbQorICAgIGRldmVsb3BtZW50IG9uIG90aGVyIE9wZXJhdGluZyBTeXN0ZW1zLgorCisgIERvY3VtZW50YXRpb24vU2VjdXJpdHlCdWdzCisgICAgSWYgeW91IGZlZWwgeW91IGhhdmUgZm91bmQgYSBzZWN1cml0eSBwcm9ibGVtIGluIHRoZSBMaW51eCBrZXJuZWwsCisgICAgcGxlYXNlIGZvbGxvdyB0aGUgc3RlcHMgaW4gdGhpcyBkb2N1bWVudCB0byBoZWxwIG5vdGlmeSB0aGUga2VybmVsCisgICAgZGV2ZWxvcGVycywgYW5kIGhlbHAgc29sdmUgdGhlIGlzc3VlLgorCisgIERvY3VtZW50YXRpb24vTWFuYWdlbWVudFN0eWxlCisgICAgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgaG93IExpbnV4IGtlcm5lbCBtYWludGFpbmVycyBvcGVyYXRlIGFuZCB0aGUKKyAgICBzaGFyZWQgZXRob3MgYmVoaW5kIHRoZWlyIG1ldGhvZG9sb2dpZXMuICBUaGlzIGlzIGltcG9ydGFudCByZWFkaW5nCisgICAgZm9yIGFueW9uZSBuZXcgdG8ga2VybmVsIGRldmVsb3BtZW50IChvciBhbnlvbmUgc2ltcGx5IGN1cmlvdXMgYWJvdXQKKyAgICBpdCksIGFzIGl0IHJlc29sdmVzIGEgbG90IG9mIGNvbW1vbiBtaXNjb25jZXB0aW9ucyBhbmQgY29uZnVzaW9uCisgICAgYWJvdXQgdGhlIHVuaXF1ZSBiZWhhdmlvciBvZiBrZXJuZWwgbWFpbnRhaW5lcnMuCisKKyAgRG9jdW1lbnRhdGlvbi9zdGFibGVfa2VybmVsX3J1bGVzLnR4dAorICAgIFRoaXMgZmlsZSBkZXNjcmliZXMgdGhlIHJ1bGVzIG9uIGhvdyB0aGUgc3RhYmxlIGtlcm5lbCByZWxlYXNlcworICAgIGhhcHBlbiwgYW5kIHdoYXQgdG8gZG8gaWYgeW91IHdhbnQgdG8gZ2V0IGEgY2hhbmdlIGludG8gb25lIG9mIHRoZXNlCisgICAgcmVsZWFzZXMuCisKKyAgRG9jdW1lbnRhdGlvbi9rZXJuZWwtZG9jcy50eHQKKyAgICBBIGxpc3Qgb2YgZXh0ZXJuYWwgZG9jdW1lbnRhdGlvbiB0aGF0IHBlcnRhaW5zIHRvIGtlcm5lbAorICAgIGRldmVsb3BtZW50LiAgUGxlYXNlIGNvbnN1bHQgdGhpcyBsaXN0IGlmIHlvdSBkbyBub3QgZmluZCB3aGF0IHlvdQorICAgIGFyZSBsb29raW5nIGZvciB3aXRoaW4gdGhlIGluLWtlcm5lbCBkb2N1bWVudGF0aW9uLgorCisgIERvY3VtZW50YXRpb24vYXBwbHlpbmctcGF0Y2hlcy50eHQKKyAgICBBIGdvb2QgaW50cm9kdWN0aW9uIGRlc2NyaWJpbmcgZXhhY3RseSB3aGF0IGEgcGF0Y2ggaXMgYW5kIGhvdyB0bworICAgIGFwcGx5IGl0IHRvIHRoZSBkaWZmZXJlbnQgZGV2ZWxvcG1lbnQgYnJhbmNoZXMgb2YgdGhlIGtlcm5lbC4KKworVGhlIGtlcm5lbCBhbHNvIGhhcyBhIGxhcmdlIG51bWJlciBvZiBkb2N1bWVudHMgdGhhdCBjYW4gYmUKK2F1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdGhlIHNvdXJjZSBjb2RlIGl0c2VsZi4gIFRoaXMgaW5jbHVkZXMgYQorZnVsbCBkZXNjcmlwdGlvbiBvZiB0aGUgaW4ta2VybmVsIEFQSSwgYW5kIHJ1bGVzIG9uIGhvdyB0byBoYW5kbGUKK2xvY2tpbmcgcHJvcGVybHkuICBUaGUgZG9jdW1lbnRzIHdpbGwgYmUgY3JlYXRlZCBpbiB0aGUKK0RvY3VtZW50YXRpb24vRG9jQm9vay8gZGlyZWN0b3J5IGFuZCBjYW4gYmUgZ2VuZXJhdGVkIGFzIFBERiwKK1Bvc3RzY3JpcHQsIEhUTUwsIGFuZCBtYW4gcGFnZXMgYnkgcnVubmluZzoKKwltYWtlIHBkZmRvY3MKKwltYWtlIHBzZG9jcworCW1ha2UgaHRtbGRvY3MKKwltYWtlIG1hbmRvY3MKK3Jlc3BlY3RpdmVseSBmcm9tIHRoZSBtYWluIGtlcm5lbCBzb3VyY2UgZGlyZWN0b3J5LgorCisKK0JlY29taW5nIEEgS2VybmVsIERldmVsb3BlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHlvdSBkbyBub3Qga25vdyBhbnl0aGluZyBhYm91dCBMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQsIHlvdSBzaG91bGQKK2xvb2sgYXQgdGhlIExpbnV4IEtlcm5lbE5ld2JpZXMgcHJvamVjdDoKKwlodHRwOi8va2VybmVsbmV3Ymllcy5vcmcKK0l0IGNvbnNpc3RzIG9mIGEgaGVscGZ1bCBtYWlsaW5nIGxpc3Qgd2hlcmUgeW91IGNhbiBhc2sgYWxtb3N0IGFueSB0eXBlCitvZiBiYXNpYyBrZXJuZWwgZGV2ZWxvcG1lbnQgcXVlc3Rpb24gKG1ha2Ugc3VyZSB0byBzZWFyY2ggdGhlIGFyY2hpdmVzCitmaXJzdCwgYmVmb3JlIGFza2luZyBzb21ldGhpbmcgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGFuc3dlcmVkIGluIHRoZQorcGFzdC4pICBJdCBhbHNvIGhhcyBhbiBJUkMgY2hhbm5lbCB0aGF0IHlvdSBjYW4gdXNlIHRvIGFzayBxdWVzdGlvbnMgaW4KK3JlYWwtdGltZSwgYW5kIGEgbG90IG9mIGhlbHBmdWwgZG9jdW1lbnRhdGlvbiB0aGF0IGlzIHVzZWZ1bCBmb3IKK2xlYXJuaW5nIGFib3V0IExpbnV4IGtlcm5lbCBkZXZlbG9wbWVudC4KKworVGhlIHdlYnNpdGUgaGFzIGJhc2ljIGluZm9ybWF0aW9uIGFib3V0IGNvZGUgb3JnYW5pemF0aW9uLCBzdWJzeXN0ZW1zLAorYW5kIGN1cnJlbnQgcHJvamVjdHMgKGJvdGggaW4tdHJlZSBhbmQgb3V0LW9mLXRyZWUpLiBJdCBhbHNvIGRlc2NyaWJlcworc29tZSBiYXNpYyBsb2dpc3RpY2FsIGluZm9ybWF0aW9uLCBsaWtlIGhvdyB0byBjb21waWxlIGEga2VybmVsIGFuZAorYXBwbHkgYSBwYXRjaC4KKworSWYgeW91IGRvIG5vdCBrbm93IHdoZXJlIHlvdSB3YW50IHRvIHN0YXJ0LCBidXQgeW91IHdhbnQgdG8gbG9vayBmb3IKK3NvbWUgdGFzayB0byBzdGFydCBkb2luZyB0byBqb2luIGludG8gdGhlIGtlcm5lbCBkZXZlbG9wbWVudCBjb21tdW5pdHksCitnbyB0byB0aGUgTGludXggS2VybmVsIEphbml0b3IncyBwcm9qZWN0OgorCWh0dHA6Ly9rZXJuZWxuZXdiaWVzLm9yZy9LZXJuZWxKYW5pdG9ycwkKK0l0IGlzIGEgZ3JlYXQgcGxhY2UgdG8gc3RhcnQuICBJdCBkZXNjcmliZXMgYSBsaXN0IG9mIHJlbGF0aXZlbHkgc2ltcGxlCitwcm9ibGVtcyB0aGF0IG5lZWQgdG8gYmUgY2xlYW5lZCB1cCBhbmQgZml4ZWQgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwKK3NvdXJjZSB0cmVlLiAgV29ya2luZyB3aXRoIHRoZSBkZXZlbG9wZXJzIGluIGNoYXJnZSBvZiB0aGlzIHByb2plY3QsIHlvdQord2lsbCBsZWFybiB0aGUgYmFzaWNzIG9mIGdldHRpbmcgeW91ciBwYXRjaCBpbnRvIHRoZSBMaW51eCBrZXJuZWwgdHJlZSwKK2FuZCBwb3NzaWJseSBiZSBwb2ludGVkIGluIHRoZSBkaXJlY3Rpb24gb2Ygd2hhdCB0byBnbyB3b3JrIG9uIG5leHQsIGlmCit5b3UgZG8gbm90IGFscmVhZHkgaGF2ZSBhbiBpZGVhLgorCitJZiB5b3UgYWxyZWFkeSBoYXZlIGEgY2h1bmsgb2YgY29kZSB0aGF0IHlvdSB3YW50IHRvIHB1dCBpbnRvIHRoZSBrZXJuZWwKK3RyZWUsIGJ1dCBuZWVkIHNvbWUgaGVscCBnZXR0aW5nIGl0IGluIHRoZSBwcm9wZXIgZm9ybSwgdGhlCitrZXJuZWwtbWVudG9ycyBwcm9qZWN0IHdhcyBjcmVhdGVkIHRvIGhlbHAgeW91IG91dCB3aXRoIHRoaXMuICBJdCBpcyBhCittYWlsaW5nIGxpc3QsIGFuZCBjYW4gYmUgZm91bmQgYXQ6CisJaHR0cDovL3NlbGVuaWMuY29tL21haWxtYW4vbGlzdGluZm8va2VybmVsLW1lbnRvcnMKKworQmVmb3JlIG1ha2luZyBhbnkgYWN0dWFsIG1vZGlmaWNhdGlvbnMgdG8gdGhlIExpbnV4IGtlcm5lbCBjb2RlLCBpdCBpcworaW1wZXJhdGl2ZSB0byB1bmRlcnN0YW5kIGhvdyB0aGUgY29kZSBpbiBxdWVzdGlvbiB3b3Jrcy4gIEZvciB0aGlzCitwdXJwb3NlLCBub3RoaW5nIGlzIGJldHRlciB0aGFuIHJlYWRpbmcgdGhyb3VnaCBpdCBkaXJlY3RseSAobW9zdCB0cmlja3kKK2JpdHMgYXJlIGNvbW1lbnRlZCB3ZWxsKSwgcGVyaGFwcyBldmVuIHdpdGggdGhlIGhlbHAgb2Ygc3BlY2lhbGl6ZWQKK3Rvb2xzLiAgT25lIHN1Y2ggdG9vbCB0aGF0IGlzIHBhcnRpY3VsYXJseSByZWNvbW1lbmRlZCBpcyB0aGUgTGludXgKK0Nyb3NzLVJlZmVyZW5jZSBwcm9qZWN0LCB3aGljaCBpcyBhYmxlIHRvIHByZXNlbnQgc291cmNlIGNvZGUgaW4gYQorc2VsZi1yZWZlcmVudGlhbCwgaW5kZXhlZCB3ZWJwYWdlIGZvcm1hdC4gQW4gZXhjZWxsZW50IHVwLXRvLWRhdGUKK3JlcG9zaXRvcnkgb2YgdGhlIGtlcm5lbCBjb2RlIG1heSBiZSBmb3VuZCBhdDoKKwlodHRwOi8vbHhyLmxpbnV4Lm5vLyt0cmVlcworCisKK1RoZSBkZXZlbG9wbWVudCBwcm9jZXNzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQgcHJvY2VzcyBjdXJyZW50bHkgY29uc2lzdHMgb2YgYSBmZXcgZGlmZmVyZW50CittYWluIGtlcm5lbCAiYnJhbmNoZXMiIGFuZCBsb3RzIG9mIGRpZmZlcmVudCBzdWJzeXN0ZW0tc3BlY2lmaWMga2VybmVsCiticmFuY2hlcy4gIFRoZXNlIGRpZmZlcmVudCBicmFuY2hlcyBhcmU6CisgIC0gbWFpbiA0Lngga2VybmVsIHRyZWUKKyAgLSA0LngueSAtc3RhYmxlIGtlcm5lbCB0cmVlCisgIC0gNC54IC1naXQga2VybmVsIHBhdGNoZXMKKyAgLSBzdWJzeXN0ZW0gc3BlY2lmaWMga2VybmVsIHRyZWVzIGFuZCBwYXRjaGVzCisgIC0gdGhlIDQueCAtbmV4dCBrZXJuZWwgdHJlZSBmb3IgaW50ZWdyYXRpb24gdGVzdHMKKworNC54IGtlcm5lbCB0cmVlCistLS0tLS0tLS0tLS0tLS0tLQorNC54IGtlcm5lbHMgYXJlIG1haW50YWluZWQgYnkgTGludXMgVG9ydmFsZHMsIGFuZCBjYW4gYmUgZm91bmQgb24KK2tlcm5lbC5vcmcgaW4gdGhlIHB1Yi9saW51eC9rZXJuZWwvdjQueC8gZGlyZWN0b3J5LiAgSXRzIGRldmVsb3BtZW50Citwcm9jZXNzIGlzIGFzIGZvbGxvd3M6CisgIC0gQXMgc29vbiBhcyBhIG5ldyBrZXJuZWwgaXMgcmVsZWFzZWQgYSB0d28gd2Vla3Mgd2luZG93IGlzIG9wZW4sCisgICAgZHVyaW5nIHRoaXMgcGVyaW9kIG9mIHRpbWUgbWFpbnRhaW5lcnMgY2FuIHN1Ym1pdCBiaWcgZGlmZnMgdG8KKyAgICBMaW51cywgdXN1YWxseSB0aGUgcGF0Y2hlcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGluY2x1ZGVkIGluIHRoZQorICAgIC1uZXh0IGtlcm5lbCBmb3IgYSBmZXcgd2Vla3MuICBUaGUgcHJlZmVycmVkIHdheSB0byBzdWJtaXQgYmlnIGNoYW5nZXMKKyAgICBpcyB1c2luZyBnaXQgKHRoZSBrZXJuZWwncyBzb3VyY2UgbWFuYWdlbWVudCB0b29sLCBtb3JlIGluZm9ybWF0aW9uCisgICAgY2FuIGJlIGZvdW5kIGF0IGh0dHA6Ly9naXQtc2NtLmNvbS8pIGJ1dCBwbGFpbiBwYXRjaGVzIGFyZSBhbHNvIGp1c3QKKyAgICBmaW5lLgorICAtIEFmdGVyIHR3byB3ZWVrcyBhIC1yYzEga2VybmVsIGlzIHJlbGVhc2VkIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBwdXNoCisgICAgb25seSBwYXRjaGVzIHRoYXQgZG8gbm90IGluY2x1ZGUgbmV3IGZlYXR1cmVzIHRoYXQgY291bGQgYWZmZWN0IHRoZQorICAgIHN0YWJpbGl0eSBvZiB0aGUgd2hvbGUga2VybmVsLiAgUGxlYXNlIG5vdGUgdGhhdCBhIHdob2xlIG5ldyBkcml2ZXIKKyAgICAob3IgZmlsZXN5c3RlbSkgbWlnaHQgYmUgYWNjZXB0ZWQgYWZ0ZXIgLXJjMSBiZWNhdXNlIHRoZXJlIGlzIG5vCisgICAgcmlzayBvZiBjYXVzaW5nIHJlZ3Jlc3Npb25zIHdpdGggc3VjaCBhIGNoYW5nZSBhcyBsb25nIGFzIHRoZSBjaGFuZ2UKKyAgICBpcyBzZWxmLWNvbnRhaW5lZCBhbmQgZG9lcyBub3QgYWZmZWN0IGFyZWFzIG91dHNpZGUgb2YgdGhlIGNvZGUgdGhhdAorICAgIGlzIGJlaW5nIGFkZGVkLiAgZ2l0IGNhbiBiZSB1c2VkIHRvIHNlbmQgcGF0Y2hlcyB0byBMaW51cyBhZnRlciAtcmMxCisgICAgaXMgcmVsZWFzZWQsIGJ1dCB0aGUgcGF0Y2hlcyBuZWVkIHRvIGFsc28gYmUgc2VudCB0byBhIHB1YmxpYworICAgIG1haWxpbmcgbGlzdCBmb3IgcmV2aWV3LgorICAtIEEgbmV3IC1yYyBpcyByZWxlYXNlZCB3aGVuZXZlciBMaW51cyBkZWVtcyB0aGUgY3VycmVudCBnaXQgdHJlZSB0bworICAgIGJlIGluIGEgcmVhc29uYWJseSBzYW5lIHN0YXRlIGFkZXF1YXRlIGZvciB0ZXN0aW5nLiAgVGhlIGdvYWwgaXMgdG8KKyAgICByZWxlYXNlIGEgbmV3IC1yYyBrZXJuZWwgZXZlcnkgd2Vlay4KKyAgLSBQcm9jZXNzIGNvbnRpbnVlcyB1bnRpbCB0aGUga2VybmVsIGlzIGNvbnNpZGVyZWQgInJlYWR5IiwgdGhlCisgICAgcHJvY2VzcyBzaG91bGQgbGFzdCBhcm91bmQgNiB3ZWVrcy4KKyAgLSBLbm93biByZWdyZXNzaW9ucyBpbiBlYWNoIHJlbGVhc2UgYXJlIHBlcmlvZGljYWxseSBwb3N0ZWQgdG8gdGhlIAorICAgIGxpbnV4LWtlcm5lbCBtYWlsaW5nIGxpc3QuICBUaGUgZ29hbCBpcyB0byByZWR1Y2UgdGhlIGxlbmd0aCBvZiAKKyAgICB0aGF0IGxpc3QgdG8gemVybyBiZWZvcmUgZGVjbGFyaW5nIHRoZSBrZXJuZWwgdG8gYmUgInJlYWR5LCIgYnV0LCBpbgorICAgIHRoZSByZWFsIHdvcmxkLCBhIHNtYWxsIG51bWJlciBvZiByZWdyZXNzaW9ucyBvZnRlbiByZW1haW4gYXQgCisgICAgcmVsZWFzZSB0aW1lLgorCitJdCBpcyB3b3J0aCBtZW50aW9uaW5nIHdoYXQgQW5kcmV3IE1vcnRvbiB3cm90ZSBvbiB0aGUgbGludXgta2VybmVsCittYWlsaW5nIGxpc3QgYWJvdXQga2VybmVsIHJlbGVhc2VzOgorCSJOb2JvZHkga25vd3Mgd2hlbiBhIGtlcm5lbCB3aWxsIGJlIHJlbGVhc2VkLCBiZWNhdXNlIGl0J3MKKwlyZWxlYXNlZCBhY2NvcmRpbmcgdG8gcGVyY2VpdmVkIGJ1ZyBzdGF0dXMsIG5vdCBhY2NvcmRpbmcgdG8gYQorCXByZWNvbmNlaXZlZCB0aW1lbGluZS4iCisKKzQueC55IC1zdGFibGUga2VybmVsIHRyZWUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorS2VybmVscyB3aXRoIDMtcGFydCB2ZXJzaW9ucyBhcmUgLXN0YWJsZSBrZXJuZWxzLiBUaGV5IGNvbnRhaW4KK3JlbGF0aXZlbHkgc21hbGwgYW5kIGNyaXRpY2FsIGZpeGVzIGZvciBzZWN1cml0eSBwcm9ibGVtcyBvciBzaWduaWZpY2FudAorcmVncmVzc2lvbnMgZGlzY292ZXJlZCBpbiBhIGdpdmVuIDQueCBrZXJuZWwuCisKK1RoaXMgaXMgdGhlIHJlY29tbWVuZGVkIGJyYW5jaCBmb3IgdXNlcnMgd2hvIHdhbnQgdGhlIG1vc3QgcmVjZW50IHN0YWJsZQora2VybmVsIGFuZCBhcmUgbm90IGludGVyZXN0ZWQgaW4gaGVscGluZyB0ZXN0IGRldmVsb3BtZW50L2V4cGVyaW1lbnRhbAordmVyc2lvbnMuCisKK0lmIG5vIDQueC55IGtlcm5lbCBpcyBhdmFpbGFibGUsIHRoZW4gdGhlIGhpZ2hlc3QgbnVtYmVyZWQgNC54CitrZXJuZWwgaXMgdGhlIGN1cnJlbnQgc3RhYmxlIGtlcm5lbC4KKworNC54LnkgYXJlIG1haW50YWluZWQgYnkgdGhlICJzdGFibGUiIHRlYW0gPHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmc+LCBhbmQKK2FyZSByZWxlYXNlZCBhcyBuZWVkcyBkaWN0YXRlLiAgVGhlIG5vcm1hbCByZWxlYXNlIHBlcmlvZCBpcyBhcHByb3hpbWF0ZWx5Cit0d28gd2Vla3MsIGJ1dCBpdCBjYW4gYmUgbG9uZ2VyIGlmIHRoZXJlIGFyZSBubyBwcmVzc2luZyBwcm9ibGVtcy4gIEEKK3NlY3VyaXR5LXJlbGF0ZWQgcHJvYmxlbSwgaW5zdGVhZCwgY2FuIGNhdXNlIGEgcmVsZWFzZSB0byBoYXBwZW4gYWxtb3N0CitpbnN0YW50bHkuCisKK1RoZSBmaWxlIERvY3VtZW50YXRpb24vc3RhYmxlX2tlcm5lbF9ydWxlcy50eHQgaW4gdGhlIGtlcm5lbCB0cmVlCitkb2N1bWVudHMgd2hhdCBraW5kcyBvZiBjaGFuZ2VzIGFyZSBhY2NlcHRhYmxlIGZvciB0aGUgLXN0YWJsZSB0cmVlLCBhbmQKK2hvdyB0aGUgcmVsZWFzZSBwcm9jZXNzIHdvcmtzLgorCis0LnggLWdpdCBwYXRjaGVzCistLS0tLS0tLS0tLS0tLS0tLS0KK1RoZXNlIGFyZSBkYWlseSBzbmFwc2hvdHMgb2YgTGludXMnIGtlcm5lbCB0cmVlIHdoaWNoIGFyZSBtYW5hZ2VkIGluIGEKK2dpdCByZXBvc2l0b3J5IChoZW5jZSB0aGUgbmFtZS4pIFRoZXNlIHBhdGNoZXMgYXJlIHVzdWFsbHkgcmVsZWFzZWQKK2RhaWx5IGFuZCByZXByZXNlbnQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgTGludXMnIHRyZWUuICBUaGV5IGFyZSBtb3JlCitleHBlcmltZW50YWwgdGhhbiAtcmMga2VybmVscyBzaW5jZSB0aGV5IGFyZSBnZW5lcmF0ZWQgYXV0b21hdGljYWxseQord2l0aG91dCBldmVuIGEgY3Vyc29yeSBnbGFuY2UgdG8gc2VlIGlmIHRoZXkgYXJlIHNhbmUuCisKK1N1YnN5c3RlbSBTcGVjaWZpYyBrZXJuZWwgdHJlZXMgYW5kIHBhdGNoZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBtYWludGFpbmVycyBvZiB0aGUgdmFyaW91cyBrZXJuZWwgc3Vic3lzdGVtcyAtLS0gYW5kIGFsc28gbWFueQora2VybmVsIHN1YnN5c3RlbSBkZXZlbG9wZXJzIC0tLSBleHBvc2UgdGhlaXIgY3VycmVudCBzdGF0ZSBvZgorZGV2ZWxvcG1lbnQgaW4gc291cmNlIHJlcG9zaXRvcmllcy4gIFRoYXQgd2F5LCBvdGhlcnMgY2FuIHNlZSB3aGF0IGlzCitoYXBwZW5pbmcgaW4gdGhlIGRpZmZlcmVudCBhcmVhcyBvZiB0aGUga2VybmVsLiAgSW4gYXJlYXMgd2hlcmUKK2RldmVsb3BtZW50IGlzIHJhcGlkLCBhIGRldmVsb3BlciBtYXkgYmUgYXNrZWQgdG8gYmFzZSBoaXMgc3VibWlzc2lvbnMKK29udG8gc3VjaCBhIHN1YnN5c3RlbSBrZXJuZWwgdHJlZSBzbyB0aGF0IGNvbmZsaWN0cyBiZXR3ZWVuIHRoZQorc3VibWlzc2lvbiBhbmQgb3RoZXIgYWxyZWFkeSBvbmdvaW5nIHdvcmsgYXJlIGF2b2lkZWQuCisKK01vc3Qgb2YgdGhlc2UgcmVwb3NpdG9yaWVzIGFyZSBnaXQgdHJlZXMsIGJ1dCB0aGVyZSBhcmUgYWxzbyBvdGhlciBTQ01zCitpbiB1c2UsIG9yIHBhdGNoIHF1ZXVlcyBiZWluZyBwdWJsaXNoZWQgYXMgcXVpbHQgc2VyaWVzLiAgQWRkcmVzc2VzIG9mCit0aGVzZSBzdWJzeXN0ZW0gcmVwb3NpdG9yaWVzIGFyZSBsaXN0ZWQgaW4gdGhlIE1BSU5UQUlORVJTIGZpbGUuICBNYW55CitvZiB0aGVtIGNhbiBiZSBicm93c2VkIGF0IGh0dHA6Ly9naXQua2VybmVsLm9yZy8uCisKK0JlZm9yZSBhIHByb3Bvc2VkIHBhdGNoIGlzIGNvbW1pdHRlZCB0byBzdWNoIGEgc3Vic3lzdGVtIHRyZWUsIGl0IGlzCitzdWJqZWN0IHRvIHJldmlldyB3aGljaCBwcmltYXJpbHkgaGFwcGVucyBvbiBtYWlsaW5nIGxpc3RzIChzZWUgdGhlCityZXNwZWN0aXZlIHNlY3Rpb24gYmVsb3cpLiAgRm9yIHNldmVyYWwga2VybmVsIHN1YnN5c3RlbXMsIHRoaXMgcmV2aWV3Citwcm9jZXNzIGlzIHRyYWNrZWQgd2l0aCB0aGUgdG9vbCBwYXRjaHdvcmsuICBQYXRjaHdvcmsgb2ZmZXJzIGEgd2ViCitpbnRlcmZhY2Ugd2hpY2ggc2hvd3MgcGF0Y2ggcG9zdGluZ3MsIGFueSBjb21tZW50cyBvbiBhIHBhdGNoIG9yCityZXZpc2lvbnMgdG8gaXQsIGFuZCBtYWludGFpbmVycyBjYW4gbWFyayBwYXRjaGVzIGFzIHVuZGVyIHJldmlldywKK2FjY2VwdGVkLCBvciByZWplY3RlZC4gIE1vc3Qgb2YgdGhlc2UgcGF0Y2h3b3JrIHNpdGVzIGFyZSBsaXN0ZWQgYXQKK2h0dHA6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy8uCisKKzQueCAtbmV4dCBrZXJuZWwgdHJlZSBmb3IgaW50ZWdyYXRpb24gdGVzdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQmVmb3JlIHVwZGF0ZXMgZnJvbSBzdWJzeXN0ZW0gdHJlZXMgYXJlIG1lcmdlZCBpbnRvIHRoZSBtYWlubGluZSA0LngKK3RyZWUsIHRoZXkgbmVlZCB0byBiZSBpbnRlZ3JhdGlvbi10ZXN0ZWQuICBGb3IgdGhpcyBwdXJwb3NlLCBhIHNwZWNpYWwKK3Rlc3RpbmcgcmVwb3NpdG9yeSBleGlzdHMgaW50byB3aGljaCB2aXJ0dWFsbHkgYWxsIHN1YnN5c3RlbSB0cmVlcyBhcmUKK3B1bGxlZCBvbiBhbiBhbG1vc3QgZGFpbHkgYmFzaXM6CisJaHR0cDovL2dpdC5rZXJuZWwub3JnLz9wPWxpbnV4L2tlcm5lbC9naXQvbmV4dC9saW51eC1uZXh0LmdpdAorCitUaGlzIHdheSwgdGhlIC1uZXh0IGtlcm5lbCBnaXZlcyBhIHN1bW1hcnkgb3V0bG9vayBvbnRvIHdoYXQgd2lsbCBiZQorZXhwZWN0ZWQgdG8gZ28gaW50byB0aGUgbWFpbmxpbmUga2VybmVsIGF0IHRoZSBuZXh0IG1lcmdlIHBlcmlvZC4KK0FkdmVudHVyb3VzIHRlc3RlcnMgYXJlIHZlcnkgd2VsY29tZSB0byBydW50aW1lLXRlc3QgdGhlIC1uZXh0IGtlcm5lbC4KKworCitCdWcgUmVwb3J0aW5nCistLS0tLS0tLS0tLS0tCisKK2J1Z3ppbGxhLmtlcm5lbC5vcmcgaXMgd2hlcmUgdGhlIExpbnV4IGtlcm5lbCBkZXZlbG9wZXJzIHRyYWNrIGtlcm5lbAorYnVncy4gIFVzZXJzIGFyZSBlbmNvdXJhZ2VkIHRvIHJlcG9ydCBhbGwgYnVncyB0aGF0IHRoZXkgZmluZCBpbiB0aGlzCit0b29sLiAgRm9yIGRldGFpbHMgb24gaG93IHRvIHVzZSB0aGUga2VybmVsIGJ1Z3ppbGxhLCBwbGVhc2Ugc2VlOgorCWh0dHA6Ly9idWd6aWxsYS5rZXJuZWwub3JnL3BhZ2UuY2dpP2lkPWZhcS5odG1sCisKK1RoZSBmaWxlIFJFUE9SVElORy1CVUdTIGluIHRoZSBtYWluIGtlcm5lbCBzb3VyY2UgZGlyZWN0b3J5IGhhcyBhIGdvb2QKK3RlbXBsYXRlIGZvciBob3cgdG8gcmVwb3J0IGEgcG9zc2libGUga2VybmVsIGJ1ZywgYW5kIGRldGFpbHMgd2hhdCBraW5kCitvZiBpbmZvcm1hdGlvbiBpcyBuZWVkZWQgYnkgdGhlIGtlcm5lbCBkZXZlbG9wZXJzIHRvIGhlbHAgdHJhY2sgZG93biB0aGUKK3Byb2JsZW0uCisKKworTWFuYWdpbmcgYnVnIHJlcG9ydHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK09uZSBvZiB0aGUgYmVzdCB3YXlzIHRvIHB1dCBpbnRvIHByYWN0aWNlIHlvdXIgaGFja2luZyBza2lsbHMgaXMgYnkgZml4aW5nCitidWdzIHJlcG9ydGVkIGJ5IG90aGVyIHBlb3BsZS4gTm90IG9ubHkgeW91IHdpbGwgaGVscCB0byBtYWtlIHRoZSBrZXJuZWwKK21vcmUgc3RhYmxlLCB5b3UnbGwgbGVhcm4gdG8gZml4IHJlYWwgd29ybGQgcHJvYmxlbXMgYW5kIHlvdSB3aWxsIGltcHJvdmUKK3lvdXIgc2tpbGxzLCBhbmQgb3RoZXIgZGV2ZWxvcGVycyB3aWxsIGJlIGF3YXJlIG9mIHlvdXIgcHJlc2VuY2UuIEZpeGluZworYnVncyBpcyBvbmUgb2YgdGhlIGJlc3Qgd2F5cyB0byBnZXQgbWVyaXRzIGFtb25nIG90aGVyIGRldmVsb3BlcnMsIGJlY2F1c2UKK25vdCBtYW55IHBlb3BsZSBsaWtlIHdhc3RpbmcgdGltZSBmaXhpbmcgb3RoZXIgcGVvcGxlJ3MgYnVncy4KKworVG8gd29yayBpbiB0aGUgYWxyZWFkeSByZXBvcnRlZCBidWcgcmVwb3J0cywgZ28gdG8gaHR0cDovL2J1Z3ppbGxhLmtlcm5lbC5vcmcuCitJZiB5b3Ugd2FudCB0byBiZSBhZHZpc2VkIG9mIHRoZSBmdXR1cmUgYnVnIHJlcG9ydHMsIHlvdSBjYW4gc3Vic2NyaWJlIHRvIHRoZQorYnVnbWUtbmV3IG1haWxpbmcgbGlzdCAob25seSBuZXcgYnVnIHJlcG9ydHMgYXJlIG1haWxlZCBoZXJlKSBvciB0byB0aGUKK2J1Z21lLWphbml0b3IgbWFpbGluZyBsaXN0IChldmVyeSBjaGFuZ2UgaW4gdGhlIGJ1Z3ppbGxhIGlzIG1haWxlZCBoZXJlKQorCisJaHR0cDovL2xpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vYnVnbWUtbmV3CisJaHR0cDovL2xpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vYnVnbWUtamFuaXRvcnMKKworCisKK01haWxpbmcgbGlzdHMKKy0tLS0tLS0tLS0tLS0KKworQXMgc29tZSBvZiB0aGUgYWJvdmUgZG9jdW1lbnRzIGRlc2NyaWJlLCB0aGUgbWFqb3JpdHkgb2YgdGhlIGNvcmUga2VybmVsCitkZXZlbG9wZXJzIHBhcnRpY2lwYXRlIG9uIHRoZSBMaW51eCBLZXJuZWwgTWFpbGluZyBsaXN0LiAgRGV0YWlscyBvbiBob3cKK3RvIHN1YnNjcmliZSBhbmQgdW5zdWJzY3JpYmUgZnJvbSB0aGUgbGlzdCBjYW4gYmUgZm91bmQgYXQ6CisJaHR0cDovL3ZnZXIua2VybmVsLm9yZy92Z2VyLWxpc3RzLmh0bWwjbGludXgta2VybmVsCitUaGVyZSBhcmUgYXJjaGl2ZXMgb2YgdGhlIG1haWxpbmcgbGlzdCBvbiB0aGUgd2ViIGluIG1hbnkgZGlmZmVyZW50CitwbGFjZXMuICBVc2UgYSBzZWFyY2ggZW5naW5lIHRvIGZpbmQgdGhlc2UgYXJjaGl2ZXMuICBGb3IgZXhhbXBsZToKKwlodHRwOi8vZGlyLmdtYW5lLm9yZy9nbWFuZS5saW51eC5rZXJuZWwKK0l0IGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0aGF0IHlvdSBzZWFyY2ggdGhlIGFyY2hpdmVzIGFib3V0IHRoZSB0b3BpYworeW91IHdhbnQgdG8gYnJpbmcgdXAsIGJlZm9yZSB5b3UgcG9zdCBpdCB0byB0aGUgbGlzdC4gQSBsb3Qgb2YgdGhpbmdzCithbHJlYWR5IGRpc2N1c3NlZCBpbiBkZXRhaWwgYXJlIG9ubHkgcmVjb3JkZWQgYXQgdGhlIG1haWxpbmcgbGlzdAorYXJjaGl2ZXMuCisKK01vc3Qgb2YgdGhlIGluZGl2aWR1YWwga2VybmVsIHN1YnN5c3RlbXMgYWxzbyBoYXZlIHRoZWlyIG93biBzZXBhcmF0ZQorbWFpbGluZyBsaXN0IHdoZXJlIHRoZXkgZG8gdGhlaXIgZGV2ZWxvcG1lbnQgZWZmb3J0cy4gIFNlZSB0aGUKK01BSU5UQUlORVJTIGZpbGUgZm9yIGEgbGlzdCBvZiB3aGF0IHRoZXNlIGxpc3RzIGFyZSBmb3IgdGhlIGRpZmZlcmVudAorZ3JvdXBzLgorCitNYW55IG9mIHRoZSBsaXN0cyBhcmUgaG9zdGVkIG9uIGtlcm5lbC5vcmcuIEluZm9ybWF0aW9uIG9uIHRoZW0gY2FuIGJlCitmb3VuZCBhdDoKKwlodHRwOi8vdmdlci5rZXJuZWwub3JnL3ZnZXItbGlzdHMuaHRtbAorCitQbGVhc2UgcmVtZW1iZXIgdG8gZm9sbG93IGdvb2QgYmVoYXZpb3JhbCBoYWJpdHMgd2hlbiB1c2luZyB0aGUgbGlzdHMuCitUaG91Z2ggYSBiaXQgY2hlZXN5LCB0aGUgZm9sbG93aW5nIFVSTCBoYXMgc29tZSBzaW1wbGUgZ3VpZGVsaW5lcyBmb3IKK2ludGVyYWN0aW5nIHdpdGggdGhlIGxpc3QgKG9yIGFueSBsaXN0KToKKwlodHRwOi8vd3d3LmFsYmlvbi5jb20vbmV0aXF1ZXR0ZS8KKworSWYgbXVsdGlwbGUgcGVvcGxlIHJlc3BvbmQgdG8geW91ciBtYWlsLCB0aGUgQ0M6IGxpc3Qgb2YgcmVjaXBpZW50cyBtYXkKK2dldCBwcmV0dHkgbGFyZ2UuIERvbid0IHJlbW92ZSBhbnlib2R5IGZyb20gdGhlIENDOiBsaXN0IHdpdGhvdXQgYSBnb29kCityZWFzb24sIG9yIGRvbid0IHJlcGx5IG9ubHkgdG8gdGhlIGxpc3QgYWRkcmVzcy4gR2V0IHVzZWQgdG8gcmVjZWl2aW5nIHRoZQorbWFpbCB0d2ljZSwgb25lIGZyb20gdGhlIHNlbmRlciBhbmQgdGhlIG9uZSBmcm9tIHRoZSBsaXN0LCBhbmQgZG9uJ3QgdHJ5Cit0byB0dW5lIHRoYXQgYnkgYWRkaW5nIGZhbmN5IG1haWwtaGVhZGVycywgcGVvcGxlIHdpbGwgbm90IGxpa2UgaXQuCisKK1JlbWVtYmVyIHRvIGtlZXAgdGhlIGNvbnRleHQgYW5kIHRoZSBhdHRyaWJ1dGlvbiBvZiB5b3VyIHJlcGxpZXMgaW50YWN0LAora2VlcCB0aGUgIkpvaG4gS2VybmVsaGFja2VyIHdyb3RlIC4uLjoiIGxpbmVzIGF0IHRoZSB0b3Agb2YgeW91ciByZXBseSwgYW5kCithZGQgeW91ciBzdGF0ZW1lbnRzIGJldHdlZW4gdGhlIGluZGl2aWR1YWwgcXVvdGVkIHNlY3Rpb25zIGluc3RlYWQgb2YKK3dyaXRpbmcgYXQgdGhlIHRvcCBvZiB0aGUgbWFpbC4KKworSWYgeW91IGFkZCBwYXRjaGVzIHRvIHlvdXIgbWFpbCwgbWFrZSBzdXJlIHRoZXkgYXJlIHBsYWluIHJlYWRhYmxlIHRleHQKK2FzIHN0YXRlZCBpbiBEb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzLiBLZXJuZWwgZGV2ZWxvcGVycyBkb24ndAord2FudCB0byBkZWFsIHdpdGggYXR0YWNobWVudHMgb3IgY29tcHJlc3NlZCBwYXRjaGVzOyB0aGV5IG1heSB3YW50Cit0byBjb21tZW50IG9uIGluZGl2aWR1YWwgbGluZXMgb2YgeW91ciBwYXRjaCwgd2hpY2ggd29ya3Mgb25seSB0aGF0IHdheS4KK01ha2Ugc3VyZSB5b3UgdXNlIGEgbWFpbCBwcm9ncmFtIHRoYXQgZG9lcyBub3QgbWFuZ2xlIHNwYWNlcyBhbmQgdGFiCitjaGFyYWN0ZXJzLiBBIGdvb2QgZmlyc3QgdGVzdCBpcyB0byBzZW5kIHRoZSBtYWlsIHRvIHlvdXJzZWxmIGFuZCB0cnkKK3RvIGFwcGx5IHlvdXIgb3duIHBhdGNoIGJ5IHlvdXJzZWxmLiBJZiB0aGF0IGRvZXNuJ3Qgd29yaywgZ2V0IHlvdXIKK21haWwgcHJvZ3JhbSBmaXhlZCBvciBjaGFuZ2UgaXQgdW50aWwgaXQgd29ya3MuCisKK0Fib3ZlIGFsbCwgcGxlYXNlIHJlbWVtYmVyIHRvIHNob3cgcmVzcGVjdCB0byBvdGhlciBzdWJzY3JpYmVycy4KKworCitXb3JraW5nIHdpdGggdGhlIGNvbW11bml0eQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGdvYWwgb2YgdGhlIGtlcm5lbCBjb21tdW5pdHkgaXMgdG8gcHJvdmlkZSB0aGUgYmVzdCBwb3NzaWJsZSBrZXJuZWwKK3RoZXJlIGlzLiAgV2hlbiB5b3Ugc3VibWl0IGEgcGF0Y2ggZm9yIGFjY2VwdGFuY2UsIGl0IHdpbGwgYmUgcmV2aWV3ZWQKK29uIGl0cyB0ZWNobmljYWwgbWVyaXRzIGFuZCB0aG9zZSBhbG9uZS4gIFNvLCB3aGF0IHNob3VsZCB5b3UgYmUKK2V4cGVjdGluZz8KKyAgLSBjcml0aWNpc20KKyAgLSBjb21tZW50cworICAtIHJlcXVlc3RzIGZvciBjaGFuZ2UKKyAgLSByZXF1ZXN0cyBmb3IganVzdGlmaWNhdGlvbgorICAtIHNpbGVuY2UKKworUmVtZW1iZXIsIHRoaXMgaXMgcGFydCBvZiBnZXR0aW5nIHlvdXIgcGF0Y2ggaW50byB0aGUga2VybmVsLiAgWW91IGhhdmUKK3RvIGJlIGFibGUgdG8gdGFrZSBjcml0aWNpc20gYW5kIGNvbW1lbnRzIGFib3V0IHlvdXIgcGF0Y2hlcywgZXZhbHVhdGUKK3RoZW0gYXQgYSB0ZWNobmljYWwgbGV2ZWwgYW5kIGVpdGhlciByZXdvcmsgeW91ciBwYXRjaGVzIG9yIHByb3ZpZGUKK2NsZWFyIGFuZCBjb25jaXNlIHJlYXNvbmluZyBhcyB0byB3aHkgdGhvc2UgY2hhbmdlcyBzaG91bGQgbm90IGJlIG1hZGUuCitJZiB0aGVyZSBhcmUgbm8gcmVzcG9uc2VzIHRvIHlvdXIgcG9zdGluZywgd2FpdCBhIGZldyBkYXlzIGFuZCB0cnkKK2FnYWluLCBzb21ldGltZXMgdGhpbmdzIGdldCBsb3N0IGluIHRoZSBodWdlIHZvbHVtZS4KKworV2hhdCBzaG91bGQgeW91IG5vdCBkbz8KKyAgLSBleHBlY3QgeW91ciBwYXRjaCB0byBiZSBhY2NlcHRlZCB3aXRob3V0IHF1ZXN0aW9uCisgIC0gYmVjb21lIGRlZmVuc2l2ZQorICAtIGlnbm9yZSBjb21tZW50cworICAtIHJlc3VibWl0IHRoZSBwYXRjaCB3aXRob3V0IG1ha2luZyBhbnkgb2YgdGhlIHJlcXVlc3RlZCBjaGFuZ2VzCisKK0luIGEgY29tbXVuaXR5IHRoYXQgaXMgbG9va2luZyBmb3IgdGhlIGJlc3QgdGVjaG5pY2FsIHNvbHV0aW9uIHBvc3NpYmxlLAordGhlcmUgd2lsbCBhbHdheXMgYmUgZGlmZmVyaW5nIG9waW5pb25zIG9uIGhvdyBiZW5lZmljaWFsIGEgcGF0Y2ggaXMuCitZb3UgaGF2ZSB0byBiZSBjb29wZXJhdGl2ZSwgYW5kIHdpbGxpbmcgdG8gYWRhcHQgeW91ciBpZGVhIHRvIGZpdCB3aXRoaW4KK3RoZSBrZXJuZWwuICBPciBhdCBsZWFzdCBiZSB3aWxsaW5nIHRvIHByb3ZlIHlvdXIgaWRlYSBpcyB3b3J0aCBpdC4KK1JlbWVtYmVyLCBiZWluZyB3cm9uZyBpcyBhY2NlcHRhYmxlIGFzIGxvbmcgYXMgeW91IGFyZSB3aWxsaW5nIHRvIHdvcmsKK3Rvd2FyZCBhIHNvbHV0aW9uIHRoYXQgaXMgcmlnaHQuCisKK0l0IGlzIG5vcm1hbCB0aGF0IHRoZSBhbnN3ZXJzIHRvIHlvdXIgZmlyc3QgcGF0Y2ggbWlnaHQgc2ltcGx5IGJlIGEgbGlzdAorb2YgYSBkb3plbiB0aGluZ3MgeW91IHNob3VsZCBjb3JyZWN0LiAgVGhpcyBkb2VzIF9ub3RfIGltcGx5IHRoYXQgeW91cgorcGF0Y2ggd2lsbCBub3QgYmUgYWNjZXB0ZWQsIGFuZCBpdCBpcyBfbm90XyBtZWFudCBhZ2FpbnN0IHlvdQorcGVyc29uYWxseS4gIFNpbXBseSBjb3JyZWN0IGFsbCBpc3N1ZXMgcmFpc2VkIGFnYWluc3QgeW91ciBwYXRjaCBhbmQKK3Jlc2VuZCBpdC4KKworCitEaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBrZXJuZWwgY29tbXVuaXR5IGFuZCBjb3Jwb3JhdGUgc3RydWN0dXJlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGtlcm5lbCBjb21tdW5pdHkgd29ya3MgZGlmZmVyZW50bHkgdGhhbiBtb3N0IHRyYWRpdGlvbmFsIGNvcnBvcmF0ZQorZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLiAgSGVyZSBhcmUgYSBsaXN0IG9mIHRoaW5ncyB0aGF0IHlvdSBjYW4gdHJ5IHRvCitkbyB0byBhdm9pZCBwcm9ibGVtczoKKyAgR29vZCB0aGluZ3MgdG8gc2F5IHJlZ2FyZGluZyB5b3VyIHByb3Bvc2VkIGNoYW5nZXM6CisgICAgLSAiVGhpcyBzb2x2ZXMgbXVsdGlwbGUgcHJvYmxlbXMuIgorICAgIC0gIlRoaXMgZGVsZXRlcyAyMDAwIGxpbmVzIG9mIGNvZGUuIgorICAgIC0gIkhlcmUgaXMgYSBwYXRjaCB0aGF0IGV4cGxhaW5zIHdoYXQgSSBhbSB0cnlpbmcgdG8gZGVzY3JpYmUuIgorICAgIC0gIkkgdGVzdGVkIGl0IG9uIDUgZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMuLi4iCisgICAgLSAiSGVyZSBpcyBhIHNlcmllcyBvZiBzbWFsbCBwYXRjaGVzIHRoYXQuLi4iCisgICAgLSAiVGhpcyBpbmNyZWFzZXMgcGVyZm9ybWFuY2Ugb24gdHlwaWNhbCBtYWNoaW5lcy4uLiIKKworICBCYWQgdGhpbmdzIHlvdSBzaG91bGQgYXZvaWQgc2F5aW5nOgorICAgIC0gIldlIGRpZCBpdCB0aGlzIHdheSBpbiBBSVgvcHR4L1NvbGFyaXMsIHNvIHRoZXJlZm9yZSBpdCBtdXN0IGJlCisgICAgICBnb29kLi4uIgorICAgIC0gIkkndmUgYmVpbmcgZG9pbmcgdGhpcyBmb3IgMjAgeWVhcnMsIHNvLi4uIgorICAgIC0gIlRoaXMgaXMgcmVxdWlyZWQgZm9yIG15IGNvbXBhbnkgdG8gbWFrZSBtb25leSIKKyAgICAtICJUaGlzIGlzIGZvciBvdXIgRW50ZXJwcmlzZSBwcm9kdWN0IGxpbmUuIgorICAgIC0gIkhlcmUgaXMgbXkgMTAwMCBwYWdlIGRlc2lnbiBkb2N1bWVudCB0aGF0IGRlc2NyaWJlcyBteSBpZGVhIgorICAgIC0gIkkndmUgYmVlbiB3b3JraW5nIG9uIHRoaXMgZm9yIDYgbW9udGhzLi4uIgorICAgIC0gIkhlcmUncyBhIDUwMDAgbGluZSBwYXRjaCB0aGF0Li4uIgorICAgIC0gIkkgcmV3cm90ZSBhbGwgb2YgdGhlIGN1cnJlbnQgbWVzcywgYW5kIGhlcmUgaXQgaXMuLi4iCisgICAgLSAiSSBoYXZlIGEgZGVhZGxpbmUsIGFuZCB0aGlzIHBhdGNoIG5lZWRzIHRvIGJlIGFwcGxpZWQgbm93LiIKKworQW5vdGhlciB3YXkgdGhlIGtlcm5lbCBjb21tdW5pdHkgaXMgZGlmZmVyZW50IHRoYW4gbW9zdCB0cmFkaXRpb25hbAorc29mdHdhcmUgZW5naW5lZXJpbmcgd29yayBlbnZpcm9ubWVudHMgaXMgdGhlIGZhY2VsZXNzIG5hdHVyZSBvZgoraW50ZXJhY3Rpb24uICBPbmUgYmVuZWZpdCBvZiB1c2luZyBlbWFpbCBhbmQgaXJjIGFzIHRoZSBwcmltYXJ5IGZvcm1zIG9mCitjb21tdW5pY2F0aW9uIGlzIHRoZSBsYWNrIG9mIGRpc2NyaW1pbmF0aW9uIGJhc2VkIG9uIGdlbmRlciBvciByYWNlLgorVGhlIExpbnV4IGtlcm5lbCB3b3JrIGVudmlyb25tZW50IGlzIGFjY2VwdGluZyBvZiB3b21lbiBhbmQgbWlub3JpdGllcworYmVjYXVzZSBhbGwgeW91IGFyZSBpcyBhbiBlbWFpbCBhZGRyZXNzLiAgVGhlIGludGVybmF0aW9uYWwgYXNwZWN0IGFsc28KK2hlbHBzIHRvIGxldmVsIHRoZSBwbGF5aW5nIGZpZWxkIGJlY2F1c2UgeW91IGNhbid0IGd1ZXNzIGdlbmRlciBiYXNlZCBvbgorYSBwZXJzb24ncyBuYW1lLiBBIG1hbiBtYXkgYmUgbmFtZWQgQW5kcmVhIGFuZCBhIHdvbWFuIG1heSBiZSBuYW1lZCBQYXQuCitNb3N0IHdvbWVuIHdobyBoYXZlIHdvcmtlZCBpbiB0aGUgTGludXgga2VybmVsIGFuZCBoYXZlIGV4cHJlc3NlZCBhbgorb3BpbmlvbiBoYXZlIGhhZCBwb3NpdGl2ZSBleHBlcmllbmNlcy4KKworVGhlIGxhbmd1YWdlIGJhcnJpZXIgY2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBlb3BsZSB3aG8gYXJlIG5vdAorY29tZm9ydGFibGUgd2l0aCBFbmdsaXNoLiAgQSBnb29kIGdyYXNwIG9mIHRoZSBsYW5ndWFnZSBjYW4gYmUgbmVlZGVkIGluCitvcmRlciB0byBnZXQgaWRlYXMgYWNyb3NzIHByb3Blcmx5IG9uIG1haWxpbmcgbGlzdHMsIHNvIGl0IGlzCityZWNvbW1lbmRlZCB0aGF0IHlvdSBjaGVjayB5b3VyIGVtYWlscyB0byBtYWtlIHN1cmUgdGhleSBtYWtlIHNlbnNlIGluCitFbmdsaXNoIGJlZm9yZSBzZW5kaW5nIHRoZW0uCisKKworQnJlYWsgdXAgeW91ciBjaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIExpbnV4IGtlcm5lbCBjb21tdW5pdHkgZG9lcyBub3QgZ2xhZGx5IGFjY2VwdCBsYXJnZSBjaHVua3Mgb2YgY29kZQorZHJvcHBlZCBvbiBpdCBhbGwgYXQgb25jZS4gIFRoZSBjaGFuZ2VzIG5lZWQgdG8gYmUgcHJvcGVybHkgaW50cm9kdWNlZCwKK2Rpc2N1c3NlZCwgYW5kIGJyb2tlbiB1cCBpbnRvIHRpbnksIGluZGl2aWR1YWwgcG9ydGlvbnMuICBUaGlzIGlzIGFsbW9zdAordGhlIGV4YWN0IG9wcG9zaXRlIG9mIHdoYXQgY29tcGFuaWVzIGFyZSB1c2VkIHRvIGRvaW5nLiAgWW91ciBwcm9wb3NhbAorc2hvdWxkIGFsc28gYmUgaW50cm9kdWNlZCB2ZXJ5IGVhcmx5IGluIHRoZSBkZXZlbG9wbWVudCBwcm9jZXNzLCBzbyB0aGF0Cit5b3UgY2FuIHJlY2VpdmUgZmVlZGJhY2sgb24gd2hhdCB5b3UgYXJlIGRvaW5nLiAgSXQgYWxzbyBsZXRzIHRoZQorY29tbXVuaXR5IGZlZWwgdGhhdCB5b3UgYXJlIHdvcmtpbmcgd2l0aCB0aGVtLCBhbmQgbm90IHNpbXBseSB1c2luZyB0aGVtCithcyBhIGR1bXBpbmcgZ3JvdW5kIGZvciB5b3VyIGZlYXR1cmUuICBIb3dldmVyLCBkb24ndCBzZW5kIDUwIGVtYWlscyBhdAorb25lIHRpbWUgdG8gYSBtYWlsaW5nIGxpc3QsIHlvdXIgcGF0Y2ggc2VyaWVzIHNob3VsZCBiZSBzbWFsbGVyIHRoYW4KK3RoYXQgYWxtb3N0IGFsbCBvZiB0aGUgdGltZS4KKworVGhlIHJlYXNvbnMgZm9yIGJyZWFraW5nIHRoaW5ncyB1cCBhcmUgdGhlIGZvbGxvd2luZzoKKworMSkgU21hbGwgcGF0Y2hlcyBpbmNyZWFzZSB0aGUgbGlrZWxpaG9vZCB0aGF0IHlvdXIgcGF0Y2hlcyB3aWxsIGJlCisgICBhcHBsaWVkLCBzaW5jZSB0aGV5IGRvbid0IHRha2UgbXVjaCB0aW1lIG9yIGVmZm9ydCB0byB2ZXJpZnkgZm9yCisgICBjb3JyZWN0bmVzcy4gIEEgNSBsaW5lIHBhdGNoIGNhbiBiZSBhcHBsaWVkIGJ5IGEgbWFpbnRhaW5lciB3aXRoCisgICBiYXJlbHkgYSBzZWNvbmQgZ2xhbmNlLiBIb3dldmVyLCBhIDUwMCBsaW5lIHBhdGNoIG1heSB0YWtlIGhvdXJzIHRvCisgICByZXZpZXcgZm9yIGNvcnJlY3RuZXNzICh0aGUgdGltZSBpdCB0YWtlcyBpcyBleHBvbmVudGlhbGx5CisgICBwcm9wb3J0aW9uYWwgdG8gdGhlIHNpemUgb2YgdGhlIHBhdGNoLCBvciBzb21ldGhpbmcpLgorCisgICBTbWFsbCBwYXRjaGVzIGFsc28gbWFrZSBpdCB2ZXJ5IGVhc3kgdG8gZGVidWcgd2hlbiBzb21ldGhpbmcgZ29lcworICAgd3JvbmcuICBJdCdzIG11Y2ggZWFzaWVyIHRvIGJhY2sgb3V0IHBhdGNoZXMgb25lIGJ5IG9uZSB0aGFuIGl0IGlzCisgICB0byBkaXNzZWN0IGEgdmVyeSBsYXJnZSBwYXRjaCBhZnRlciBpdCdzIGJlZW4gYXBwbGllZCAoYW5kIGJyb2tlbgorICAgc29tZXRoaW5nKS4KKworMikgSXQncyBpbXBvcnRhbnQgbm90IG9ubHkgdG8gc2VuZCBzbWFsbCBwYXRjaGVzLCBidXQgYWxzbyB0byByZXdyaXRlCisgICBhbmQgc2ltcGxpZnkgKG9yIHNpbXBseSByZS1vcmRlcikgcGF0Y2hlcyBiZWZvcmUgc3VibWl0dGluZyB0aGVtLgorCitIZXJlIGlzIGFuIGFuYWxvZ3kgZnJvbSBrZXJuZWwgZGV2ZWxvcGVyIEFsIFZpcm86CisJIlRoaW5rIG9mIGEgdGVhY2hlciBncmFkaW5nIGhvbWV3b3JrIGZyb20gYSBtYXRoIHN0dWRlbnQuICBUaGUKKwl0ZWFjaGVyIGRvZXMgbm90IHdhbnQgdG8gc2VlIHRoZSBzdHVkZW50J3MgdHJpYWxzIGFuZCBlcnJvcnMKKwliZWZvcmUgdGhleSBjYW1lIHVwIHdpdGggdGhlIHNvbHV0aW9uLiBUaGV5IHdhbnQgdG8gc2VlIHRoZQorCWNsZWFuZXN0LCBtb3N0IGVsZWdhbnQgYW5zd2VyLiAgQSBnb29kIHN0dWRlbnQga25vd3MgdGhpcywgYW5kCisJd291bGQgbmV2ZXIgc3VibWl0IGhlciBpbnRlcm1lZGlhdGUgd29yayBiZWZvcmUgdGhlIGZpbmFsCisJc29sdXRpb24uIgorCisJVGhlIHNhbWUgaXMgdHJ1ZSBvZiBrZXJuZWwgZGV2ZWxvcG1lbnQuIFRoZSBtYWludGFpbmVycyBhbmQKKwlyZXZpZXdlcnMgZG8gbm90IHdhbnQgdG8gc2VlIHRoZSB0aG91Z2h0IHByb2Nlc3MgYmVoaW5kIHRoZQorCXNvbHV0aW9uIHRvIHRoZSBwcm9ibGVtIG9uZSBpcyBzb2x2aW5nLiBUaGV5IHdhbnQgdG8gc2VlIGEKKwlzaW1wbGUgYW5kIGVsZWdhbnQgc29sdXRpb24uIgorCitJdCBtYXkgYmUgY2hhbGxlbmdpbmcgdG8ga2VlcCB0aGUgYmFsYW5jZSBiZXR3ZWVuIHByZXNlbnRpbmcgYW4gZWxlZ2FudAorc29sdXRpb24gYW5kIHdvcmtpbmcgdG9nZXRoZXIgd2l0aCB0aGUgY29tbXVuaXR5IGFuZCBkaXNjdXNzaW5nIHlvdXIKK3VuZmluaXNoZWQgd29yay4gVGhlcmVmb3JlIGl0IGlzIGdvb2QgdG8gZ2V0IGVhcmx5IGluIHRoZSBwcm9jZXNzIHRvCitnZXQgZmVlZGJhY2sgdG8gaW1wcm92ZSB5b3VyIHdvcmssIGJ1dCBhbHNvIGtlZXAgeW91ciBjaGFuZ2VzIGluIHNtYWxsCitjaHVua3MgdGhhdCB0aGV5IG1heSBnZXQgYWxyZWFkeSBhY2NlcHRlZCwgZXZlbiB3aGVuIHlvdXIgd2hvbGUgdGFzayBpcworbm90IHJlYWR5IGZvciBpbmNsdXNpb24gbm93LgorCitBbHNvIHJlYWxpemUgdGhhdCBpdCBpcyBub3QgYWNjZXB0YWJsZSB0byBzZW5kIHBhdGNoZXMgZm9yIGluY2x1c2lvbgordGhhdCBhcmUgdW5maW5pc2hlZCBhbmQgd2lsbCBiZSAiZml4ZWQgdXAgbGF0ZXIuIgorCisKK0p1c3RpZnkgeW91ciBjaGFuZ2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWxvbmcgd2l0aCBicmVha2luZyB1cCB5b3VyIHBhdGNoZXMsIGl0IGlzIHZlcnkgaW1wb3J0YW50IGZvciB5b3UgdG8gbGV0Cit0aGUgTGludXggY29tbXVuaXR5IGtub3cgd2h5IHRoZXkgc2hvdWxkIGFkZCB0aGlzIGNoYW5nZS4gIE5ldyBmZWF0dXJlcworbXVzdCBiZSBqdXN0aWZpZWQgYXMgYmVpbmcgbmVlZGVkIGFuZCB1c2VmdWwuCisKKworRG9jdW1lbnQgeW91ciBjaGFuZ2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doZW4gc2VuZGluZyBpbiB5b3VyIHBhdGNoZXMsIHBheSBzcGVjaWFsIGF0dGVudGlvbiB0byB3aGF0IHlvdSBzYXkgaW4KK3RoZSB0ZXh0IGluIHlvdXIgZW1haWwuICBUaGlzIGluZm9ybWF0aW9uIHdpbGwgYmVjb21lIHRoZSBDaGFuZ2VMb2cKK2luZm9ybWF0aW9uIGZvciB0aGUgcGF0Y2gsIGFuZCB3aWxsIGJlIHByZXNlcnZlZCBmb3IgZXZlcnlvbmUgdG8gc2VlIGZvcgorYWxsIHRpbWUuICBJdCBzaG91bGQgZGVzY3JpYmUgdGhlIHBhdGNoIGNvbXBsZXRlbHksIGNvbnRhaW5pbmc6CisgIC0gd2h5IHRoZSBjaGFuZ2UgaXMgbmVjZXNzYXJ5CisgIC0gdGhlIG92ZXJhbGwgZGVzaWduIGFwcHJvYWNoIGluIHRoZSBwYXRjaAorICAtIGltcGxlbWVudGF0aW9uIGRldGFpbHMKKyAgLSB0ZXN0aW5nIHJlc3VsdHMKKworRm9yIG1vcmUgZGV0YWlscyBvbiB3aGF0IHRoaXMgc2hvdWxkIGFsbCBsb29rIGxpa2UsIHBsZWFzZSBzZWUgdGhlCitDaGFuZ2VMb2cgc2VjdGlvbiBvZiB0aGUgZG9jdW1lbnQ6CisgICJUaGUgUGVyZmVjdCBQYXRjaCIKKyAgICAgIGh0dHA6Ly93d3cub3psYWJzLm9yZy9+YWtwbS9zdHVmZi90cHAudHh0CisKKworCisKK0FsbCBvZiB0aGVzZSB0aGluZ3MgYXJlIHNvbWV0aW1lcyB2ZXJ5IGhhcmQgdG8gZG8uIEl0IGNhbiB0YWtlIHllYXJzIHRvCitwZXJmZWN0IHRoZXNlIHByYWN0aWNlcyAoaWYgYXQgYWxsKS4gSXQncyBhIGNvbnRpbnVvdXMgcHJvY2VzcyBvZgoraW1wcm92ZW1lbnQgdGhhdCByZXF1aXJlcyBhIGxvdCBvZiBwYXRpZW5jZSBhbmQgZGV0ZXJtaW5hdGlvbi4gQnV0Citkb24ndCBnaXZlIHVwLCBpdCdzIHBvc3NpYmxlLiBNYW55IGhhdmUgZG9uZSBpdCBiZWZvcmUsIGFuZCBlYWNoIGhhZCB0bworc3RhcnQgZXhhY3RseSB3aGVyZSB5b3UgYXJlIG5vdy4KKworCisKKworLS0tLS0tLS0tLQorVGhhbmtzIHRvIFBhb2xvIENpYXJyb2NjaGkgd2hvIGFsbG93ZWQgdGhlICJEZXZlbG9wbWVudCBQcm9jZXNzIgorKGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzk0Mzg2Lykgc2VjdGlvbgordG8gYmUgYmFzZWQgb24gdGV4dCBoZSBoYWQgd3JpdHRlbiwgYW5kIHRvIFJhbmR5IER1bmxhcCBhbmQgR2Vycml0CitIdWl6ZW5nYSBmb3Igc29tZSBvZiB0aGUgbGlzdCBvZiB0aGluZ3MgeW91IHNob3VsZCBhbmQgc2hvdWxkIG5vdCBzYXkuCitBbHNvIHRoYW5rcyB0byBQYXQgTW9jaGVsLCBIYW5uYSBMaW5kZXIsIFJhbmR5IER1bmxhcCwgS2F5IFNpZXZlcnMsCitWb2p0ZWNoIFBhdmxpaywgSmFuIEthcmEsIEpvc2ggQm95ZXIsIEtlZXMgQ29vaywgQW5kcmV3IE1vcnRvbiwgQW5kaQorS2xlZW4sIFZhZGltIExvYmFub3YsIEplc3BlciBKdWhsLCBBZHJpYW4gQnVuaywgS2VyaSBIYXJyaXMsIEZyYW5zIFBvcCwKK0RhdmlkIEEuIFdoZWVsZXIsIEp1bmlvIEhhbWFubywgTWljaGFlbCBLZXJyaXNrLCBhbmQgQWxleCBTaGVwYXJkIGZvcgordGhlaXIgcmV2aWV3LCBjb21tZW50cywgYW5kIGNvbnRyaWJ1dGlvbnMuICBXaXRob3V0IHRoZWlyIGhlbHAsIHRoaXMKK2RvY3VtZW50IHdvdWxkIG5vdCBoYXZlIGJlZW4gcG9zc2libGUuCisKKworCitNYWludGFpbmVyOiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdAa3JvYWguY29tPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9JUE1JLnR4dCBiL0RvY3VtZW50YXRpb24vSVBNSS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBkODc4OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vSVBNSS50eHQKQEAgLTAsMCArMSw3MjUgQEAKKworICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgTGludXggSVBNSSBEcml2ZXIKKwkJCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJCQkgICAgICBDb3JleSBNaW55YXJkCisJCQkgIDxtaW55YXJkQG12aXN0YS5jb20+CisJCQkgICAgPG1pbnlhcmRAYWNtLm9yZz4KKworVGhlIEludGVsbGlnZW50IFBsYXRmb3JtIE1hbmFnZW1lbnQgSW50ZXJmYWNlLCBvciBJUE1JLCBpcyBhCitzdGFuZGFyZCBmb3IgY29udHJvbGxpbmcgaW50ZWxsaWdlbnQgZGV2aWNlcyB0aGF0IG1vbml0b3IgYSBzeXN0ZW0uCitJdCBwcm92aWRlcyBmb3IgZHluYW1pYyBkaXNjb3Zlcnkgb2Ygc2Vuc29ycyBpbiB0aGUgc3lzdGVtIGFuZCB0aGUKK2FiaWxpdHkgdG8gbW9uaXRvciB0aGUgc2Vuc29ycyBhbmQgYmUgaW5mb3JtZWQgd2hlbiB0aGUgc2Vuc29yJ3MKK3ZhbHVlcyBjaGFuZ2Ugb3IgZ28gb3V0c2lkZSBjZXJ0YWluIGJvdW5kYXJpZXMuICBJdCBhbHNvIGhhcyBhCitzdGFuZGFyZGl6ZWQgZGF0YWJhc2UgZm9yIGZpZWxkLXJlcGxhY2VhYmxlIHVuaXRzIChGUlVzKSBhbmQgYSB3YXRjaGRvZwordGltZXIuCisKK1RvIHVzZSB0aGlzLCB5b3UgbmVlZCBhbiBpbnRlcmZhY2UgdG8gYW4gSVBNSSBjb250cm9sbGVyIGluIHlvdXIKK3N5c3RlbSAoY2FsbGVkIGEgQmFzZWJvYXJkIE1hbmFnZW1lbnQgQ29udHJvbGxlciwgb3IgQk1DKSBhbmQKK21hbmFnZW1lbnQgc29mdHdhcmUgdGhhdCBjYW4gdXNlIHRoZSBJUE1JIHN5c3RlbS4KKworVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgaG93IHRvIHVzZSB0aGUgSVBNSSBkcml2ZXIgZm9yIExpbnV4LiAgSWYgeW91CithcmUgbm90IGZhbWlsaWFyIHdpdGggSVBNSSBpdHNlbGYsIHNlZSB0aGUgd2ViIHNpdGUgYXQKK2h0dHA6Ly93d3cuaW50ZWwuY29tL2Rlc2lnbi9zZXJ2ZXJzL2lwbWkvaW5kZXguaHRtLiAgSVBNSSBpcyBhIGJpZworc3ViamVjdCBhbmQgSSBjYW4ndCBjb3ZlciBpdCBhbGwgaGVyZSEKKworQ29uZmlndXJhdGlvbgorLS0tLS0tLS0tLS0tLQorCitUaGUgTGludXggSVBNSSBkcml2ZXIgaXMgbW9kdWxhciwgd2hpY2ggbWVhbnMgeW91IGhhdmUgdG8gcGljayBzZXZlcmFsCit0aGluZ3MgdG8gaGF2ZSBpdCB3b3JrIHJpZ2h0IGRlcGVuZGluZyBvbiB5b3VyIGhhcmR3YXJlLiAgTW9zdCBvZgordGhlc2UgYXJlIGF2YWlsYWJsZSBpbiB0aGUgJ0NoYXJhY3RlciBEZXZpY2VzJyBtZW51IHRoZW4gdGhlIElQTUkKK21lbnUuCisKK05vIG1hdHRlciB3aGF0LCB5b3UgbXVzdCBwaWNrICdJUE1JIHRvcC1sZXZlbCBtZXNzYWdlIGhhbmRsZXInIHRvIHVzZQorSVBNSS4gIFdoYXQgeW91IGRvIGJleW9uZCB0aGF0IGRlcGVuZHMgb24geW91ciBuZWVkcyBhbmQgaGFyZHdhcmUuCisKK1RoZSBtZXNzYWdlIGhhbmRsZXIgZG9lcyBub3QgcHJvdmlkZSBhbnkgdXNlci1sZXZlbCBpbnRlcmZhY2VzLgorS2VybmVsIGNvZGUgKGxpa2UgdGhlIHdhdGNoZG9nKSBjYW4gc3RpbGwgdXNlIGl0LiAgSWYgeW91IG5lZWQgYWNjZXNzCitmcm9tIHVzZXJsYW5kLCB5b3UgbmVlZCB0byBzZWxlY3QgJ0RldmljZSBpbnRlcmZhY2UgZm9yIElQTUknIGlmIHlvdQord2FudCBhY2Nlc3MgdGhyb3VnaCBhIGRldmljZSBkcml2ZXIuCisKK1RoZSBkcml2ZXIgaW50ZXJmYWNlIGRlcGVuZHMgb24geW91ciBoYXJkd2FyZS4gIElmIHlvdXIgc3lzdGVtCitwcm9wZXJseSBwcm92aWRlcyB0aGUgU01CSU9TIGluZm8gZm9yIElQTUksIHRoZSBkcml2ZXIgd2lsbCBkZXRlY3QgaXQKK2FuZCBqdXN0IHdvcmsuICBJZiB5b3UgaGF2ZSBhIGJvYXJkIHdpdGggYSBzdGFuZGFyZCBpbnRlcmZhY2UgKFRoZXNlCit3aWxsIGdlbmVyYWxseSBiZSBlaXRoZXIgIktDUyIsICJTTUlDIiwgb3IgIkJUIiwgY29uc3VsdCB5b3VyIGhhcmR3YXJlCittYW51YWwpLCBjaG9vc2UgdGhlICdJUE1JIFNJIGhhbmRsZXInIG9wdGlvbi4gIEEgZHJpdmVyIGFsc28gZXhpc3RzCitmb3IgZGlyZWN0IEkyQyBhY2Nlc3MgdG8gdGhlIElQTUkgbWFuYWdlbWVudCBjb250cm9sbGVyLiAgU29tZSBib2FyZHMKK3N1cHBvcnQgdGhpcywgYnV0IGl0IGlzIHVua25vd24gaWYgaXQgd2lsbCB3b3JrIG9uIGV2ZXJ5IGJvYXJkLiAgRm9yCit0aGlzLCBjaG9vc2UgJ0lQTUkgU01CdXMgaGFuZGxlcicsIGJ1dCBiZSByZWFkeSB0byB0cnkgdG8gZG8gc29tZQorZmlndXJpbmcgdG8gc2VlIGlmIGl0IHdpbGwgd29yayBvbiB5b3VyIHN5c3RlbSBpZiB0aGUgU01CSU9TL0FQQ0kKK2luZm9ybWF0aW9uIGlzIHdyb25nIG9yIG5vdCBwcmVzZW50LiAgSXQgaXMgZmFpcmx5IHNhZmUgdG8gaGF2ZSBib3RoCit0aGVzZSBlbmFibGVkIGFuZCBsZXQgdGhlIGRyaXZlcnMgYXV0by1kZXRlY3Qgd2hhdCBpcyBwcmVzZW50LgorCitZb3Ugc2hvdWxkIGdlbmVyYWxseSBlbmFibGUgQUNQSSBvbiB5b3VyIHN5c3RlbSwgYXMgc3lzdGVtcyB3aXRoIElQTUkKK2NhbiBoYXZlIEFDUEkgdGFibGVzIGRlc2NyaWJpbmcgdGhlbS4KKworSWYgeW91IGhhdmUgYSBzdGFuZGFyZCBpbnRlcmZhY2UgYW5kIHRoZSBib2FyZCBtYW51ZmFjdHVyZXIgaGFzIGRvbmUKK3RoZWlyIGpvYiBjb3JyZWN0bHksIHRoZSBJUE1JIGNvbnRyb2xsZXIgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkKK2RldGVjdGVkICh2aWEgQUNQSSBvciBTTUJJT1MgdGFibGVzKSBhbmQgc2hvdWxkIGp1c3Qgd29yay4gIFNhZGx5LAorbWFueSBib2FyZHMgZG8gbm90IGhhdmUgdGhpcyBpbmZvcm1hdGlvbi4gIFRoZSBkcml2ZXIgYXR0ZW1wdHMKK3N0YW5kYXJkIGRlZmF1bHRzLCBidXQgdGhleSBtYXkgbm90IHdvcmsuICBJZiB5b3UgZmFsbCBpbnRvIHRoaXMKK3NpdHVhdGlvbiwgeW91IG5lZWQgdG8gcmVhZCB0aGUgc2VjdGlvbiBiZWxvdyBuYW1lZCAnVGhlIFNJIERyaXZlcicgb3IKKyJUaGUgU01CdXMgRHJpdmVyIiBvbiBob3cgdG8gaGFuZC1jb25maWd1cmUgeW91ciBzeXN0ZW0uCisKK0lQTUkgZGVmaW5lcyBhIHN0YW5kYXJkIHdhdGNoZG9nIHRpbWVyLiAgWW91IGNhbiBlbmFibGUgdGhpcyB3aXRoIHRoZQorJ0lQTUkgV2F0Y2hkb2cgVGltZXInIGNvbmZpZyBvcHRpb24uICBJZiB5b3UgY29tcGlsZSB0aGUgZHJpdmVyIGludG8KK3RoZSBrZXJuZWwsIHRoZW4gdmlhIGEga2VybmVsIGNvbW1hbmQtbGluZSBvcHRpb24geW91IGNhbiBoYXZlIHRoZQord2F0Y2hkb2cgdGltZXIgc3RhcnQgYXMgc29vbiBhcyBpdCBpbml0aWFsaXplcy4gIEl0IGFsc28gaGF2ZSBhIGxvdAorb2Ygb3RoZXIgb3B0aW9ucywgc2VlIHRoZSAnV2F0Y2hkb2cnIHNlY3Rpb24gYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KK05vdGUgdGhhdCB5b3UgY2FuIGFsc28gaGF2ZSB0aGUgd2F0Y2hkb2cgY29udGludWUgdG8gcnVuIGlmIGl0IGlzCitjbG9zZWQgKGJ5IGRlZmF1bHQgaXQgaXMgZGlzYWJsZWQgb24gY2xvc2UpLiAgR28gaW50byB0aGUgJ1dhdGNoZG9nCitDYXJkcycgbWVudSwgZW5hYmxlICdXYXRjaGRvZyBUaW1lciBTdXBwb3J0JywgYW5kIGVuYWJsZSB0aGUgb3B0aW9uCisnRGlzYWJsZSB3YXRjaGRvZyBzaHV0ZG93biBvbiBjbG9zZScuCisKK0lQTUkgc3lzdGVtcyBjYW4gb2Z0ZW4gYmUgcG93ZXJlZCBvZmYgdXNpbmcgSVBNSSBjb21tYW5kcy4gIFNlbGVjdAorJ0lQTUkgUG93ZXJvZmYnIHRvIGRvIHRoaXMuICBUaGUgZHJpdmVyIHdpbGwgYXV0by1kZXRlY3QgaWYgdGhlIHN5c3RlbQorY2FuIGJlIHBvd2VyZWQgb2ZmIGJ5IElQTUkuICBJdCBpcyBzYWZlIHRvIGVuYWJsZSB0aGlzIGV2ZW4gaWYgeW91cgorc3lzdGVtIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIG9wdGlvbi4gIFRoaXMgd29ya3Mgb24gQVRDQSBzeXN0ZW1zLCB0aGUKK1JhZGlzeXMgQ1BJMSBjYXJkLCBhbmQgYW55IElQTUkgc3lzdGVtIHRoYXQgc3VwcG9ydHMgc3RhbmRhcmQgY2hhc3NpcworbWFuYWdlbWVudCBjb21tYW5kcy4KKworSWYgeW91IHdhbnQgdGhlIGRyaXZlciB0byBwdXQgYW4gZXZlbnQgaW50byB0aGUgZXZlbnQgbG9nIG9uIGEgcGFuaWMsCitlbmFibGUgdGhlICdHZW5lcmF0ZSBhIHBhbmljIGV2ZW50IHRvIGFsbCBCTUNzIG9uIGEgcGFuaWMnIG9wdGlvbi4gIElmCit5b3Ugd2FudCB0aGUgd2hvbGUgcGFuaWMgc3RyaW5nIHB1dCBpbnRvIHRoZSBldmVudCBsb2cgdXNpbmcgT0VNCitldmVudHMsIGVuYWJsZSB0aGUgJ0dlbmVyYXRlIE9FTSBldmVudHMgY29udGFpbmluZyB0aGUgcGFuaWMgc3RyaW5nJworb3B0aW9uLgorCitCYXNpYyBEZXNpZ24KKy0tLS0tLS0tLS0tLQorCitUaGUgTGludXggSVBNSSBkcml2ZXIgaXMgZGVzaWduZWQgdG8gYmUgdmVyeSBtb2R1bGFyIGFuZCBmbGV4aWJsZSwgeW91Citvbmx5IG5lZWQgdG8gdGFrZSB0aGUgcGllY2VzIHlvdSBuZWVkIGFuZCB5b3UgY2FuIHVzZSBpdCBpbiBtYW55CitkaWZmZXJlbnQgd2F5cy4gIEJlY2F1c2Ugb2YgdGhhdCwgaXQncyBicm9rZW4gaW50byBtYW55IGNodW5rcyBvZgorY29kZS4gIFRoZXNlIGNodW5rcyAoYnkgbW9kdWxlIG5hbWUpIGFyZToKKworaXBtaV9tc2doYW5kbGVyIC0gVGhpcyBpcyB0aGUgY2VudHJhbCBwaWVjZSBvZiBzb2Z0d2FyZSBmb3IgdGhlIElQTUkKK3N5c3RlbS4gIEl0IGhhbmRsZXMgYWxsIG1lc3NhZ2VzLCBtZXNzYWdlIHRpbWluZywgYW5kIHJlc3BvbnNlcy4gIFRoZQorSVBNSSB1c2VycyB0aWUgaW50byB0aGlzLCBhbmQgdGhlIElQTUkgcGh5c2ljYWwgaW50ZXJmYWNlcyAoY2FsbGVkCitTeXN0ZW0gTWFuYWdlbWVudCBJbnRlcmZhY2VzLCBvciBTTUlzKSBhbHNvIHRpZSBpbiBoZXJlLiAgVGhpcworcHJvdmlkZXMgdGhlIGtlcm5lbGxhbmQgaW50ZXJmYWNlIGZvciBJUE1JLCBidXQgZG9lcyBub3QgcHJvdmlkZSBhbgoraW50ZXJmYWNlIGZvciB1c2UgYnkgYXBwbGljYXRpb24gcHJvY2Vzc2VzLgorCitpcG1pX2RldmludGYgLSBUaGlzIHByb3ZpZGVzIGEgdXNlcmxhbmQgSU9DVEwgaW50ZXJmYWNlIGZvciB0aGUgSVBNSQorZHJpdmVyLCBlYWNoIG9wZW4gZmlsZSBmb3IgdGhpcyBkZXZpY2UgdGllcyBpbiB0byB0aGUgbWVzc2FnZSBoYW5kbGVyCithcyBhbiBJUE1JIHVzZXIuCisKK2lwbWlfc2kgLSBBIGRyaXZlciBmb3IgdmFyaW91cyBzeXN0ZW0gaW50ZXJmYWNlcy4gIFRoaXMgc3VwcG9ydHMgS0NTLAorU01JQywgYW5kIEJUIGludGVyZmFjZXMuICBVbmxlc3MgeW91IGhhdmUgYW4gU01CdXMgaW50ZXJmYWNlIG9yIHlvdXIKK293biBjdXN0b20gaW50ZXJmYWNlLCB5b3UgcHJvYmFibHkgbmVlZCB0byB1c2UgdGhpcy4KKworaXBtaV9zc2lmIC0gQSBkcml2ZXIgZm9yIGFjY2Vzc2luZyBCTUNzIG9uIHRoZSBTTUJ1cy4gSXQgdXNlcyB0aGUKK0kyQyBrZXJuZWwgZHJpdmVyJ3MgU01CdXMgaW50ZXJmYWNlcyB0byBzZW5kIGFuZCByZWNlaXZlIElQTUkgbWVzc2FnZXMKK292ZXIgdGhlIFNNQnVzLgorCitpcG1pX3dhdGNoZG9nIC0gSVBNSSByZXF1aXJlcyBzeXN0ZW1zIHRvIGhhdmUgYSB2ZXJ5IGNhcGFibGUgd2F0Y2hkb2cKK3RpbWVyLiAgVGhpcyBkcml2ZXIgaW1wbGVtZW50cyB0aGUgc3RhbmRhcmQgTGludXggd2F0Y2hkb2cgdGltZXIKK2ludGVyZmFjZSBvbiB0b3Agb2YgdGhlIElQTUkgbWVzc2FnZSBoYW5kbGVyLgorCitpcG1pX3Bvd2Vyb2ZmIC0gU29tZSBzeXN0ZW1zIHN1cHBvcnQgdGhlIGFiaWxpdHkgdG8gYmUgdHVybmVkIG9mZiB2aWEKK0lQTUkgY29tbWFuZHMuCisKK1RoZXNlIGFyZSBhbGwgaW5kaXZpZHVhbGx5IHNlbGVjdGFibGUgdmlhIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KKworTm90ZSB0aGF0IHRoZSBLQ1Mtb25seSBpbnRlcmZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gIFRoZSBhZl9pcG1pIGRyaXZlcgoraXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCBhbmQgaGFzIGJlZW4gcmVtb3ZlZCBiZWNhdXNlIGl0IHdhcyBpbXBvc3NpYmxlCit0byBkbyAzMiBiaXQgZW11bGF0aW9uIG9uIDY0LWJpdCBrZXJuZWxzIHdpdGggaXQuCisKK011Y2ggZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGludGVyZmFjZSBpcyBpbiB0aGUgaW5jbHVkZSBmaWxlcy4gIFRoZQorSVBNSSBpbmNsdWRlIGZpbGVzIGFyZToKKworbmV0L2FmX2lwbWkuaCAtIENvbnRhaW5zIHRoZSBzb2NrZXQgaW50ZXJmYWNlLgorCitsaW51eC9pcG1pLmggLSBDb250YWlucyB0aGUgdXNlciBpbnRlcmZhY2UgYW5kIElPQ1RMIGludGVyZmFjZSBmb3IgSVBNSS4KKworbGludXgvaXBtaV9zbWkuaCAtIENvbnRhaW5zIHRoZSBpbnRlcmZhY2UgZm9yIHN5c3RlbSBtYW5hZ2VtZW50IGludGVyZmFjZXMKKyh0aGluZ3MgdGhhdCBpbnRlcmZhY2UgdG8gSVBNSSBjb250cm9sbGVycykgdG8gdXNlLgorCitsaW51eC9pcG1pX21zZ2RlZnMuaCAtIEdlbmVyYWwgZGVmaW5pdGlvbnMgZm9yIGJhc2UgSVBNSSBtZXNzYWdpbmcuCisKKworQWRkcmVzc2luZworLS0tLS0tLS0tLQorCitUaGUgSVBNSSBhZGRyZXNzaW5nIHdvcmtzIG11Y2ggbGlrZSBJUCBhZGRyZXNzZXMsIHlvdSBoYXZlIGFuIG92ZXJsYXkKK3RvIGhhbmRsZSB0aGUgZGlmZmVyZW50IGFkZHJlc3MgdHlwZXMuICBUaGUgb3ZlcmxheSBpczoKKworICBzdHJ1Y3QgaXBtaV9hZGRyCisgIHsKKwlpbnQgICBhZGRyX3R5cGU7CisJc2hvcnQgY2hhbm5lbDsKKwljaGFyICBkYXRhW0lQTUlfTUFYX0FERFJfU0laRV07CisgIH07CisKK1RoZSBhZGRyX3R5cGUgZGV0ZXJtaW5lcyB3aGF0IHRoZSBhZGRyZXNzIHJlYWxseSBpcy4gIFRoZSBkcml2ZXIKK2N1cnJlbnRseSB1bmRlcnN0YW5kcyB0d28gZGlmZmVyZW50IHR5cGVzIG9mIGFkZHJlc3Nlcy4KKworIlN5c3RlbSBJbnRlcmZhY2UiIGFkZHJlc3NlcyBhcmUgZGVmaW5lZCBhczoKKworICBzdHJ1Y3QgaXBtaV9zeXN0ZW1faW50ZXJmYWNlX2FkZHIKKyAgeworCWludCAgIGFkZHJfdHlwZTsKKwlzaG9ydCBjaGFubmVsOworICB9OworCithbmQgdGhlIHR5cGUgaXMgSVBNSV9TWVNURU1fSU5URVJGQUNFX0FERFJfVFlQRS4gIFRoaXMgaXMgdXNlZCBmb3IgdGFsa2luZworc3RyYWlnaHQgdG8gdGhlIEJNQyBvbiB0aGUgY3VycmVudCBjYXJkLiAgVGhlIGNoYW5uZWwgbXVzdCBiZQorSVBNSV9CTUNfQ0hBTk5FTC4KKworTWVzc2FnZXMgdGhhdCBhcmUgZGVzdGluZWQgdG8gZ28gb3V0IG9uIHRoZSBJUE1CIGJ1cyB1c2UgdGhlCitJUE1JX0lQTUJfQUREUl9UWVBFIGFkZHJlc3MgdHlwZS4gIFRoZSBmb3JtYXQgaXMKKworICBzdHJ1Y3QgaXBtaV9pcG1iX2FkZHIKKyAgeworCWludCAgICAgICAgICAgYWRkcl90eXBlOworCXNob3J0ICAgICAgICAgY2hhbm5lbDsKKwl1bnNpZ25lZCBjaGFyIHNsYXZlX2FkZHI7CisJdW5zaWduZWQgY2hhciBsdW47CisgIH07CisKK1RoZSAiY2hhbm5lbCIgaGVyZSBpcyBnZW5lcmFsbHkgemVybywgYnV0IHNvbWUgZGV2aWNlcyBzdXBwb3J0IG1vcmUKK3RoYW4gb25lIGNoYW5uZWwsIGl0IGNvcnJlc3BvbmRzIHRvIHRoZSBjaGFubmVsIGFzIGRlZmluZWQgaW4gdGhlIElQTUkKK3NwZWMuCisKKworTWVzc2FnZXMKKy0tLS0tLS0tCisKK01lc3NhZ2VzIGFyZSBkZWZpbmVkIGFzOgorCitzdHJ1Y3QgaXBtaV9tc2cKK3sKKwl1bnNpZ25lZCBjaGFyIG5ldGZuOworCXVuc2lnbmVkIGNoYXIgbHVuOworCXVuc2lnbmVkIGNoYXIgY21kOworCXVuc2lnbmVkIGNoYXIgKmRhdGE7CisJaW50ICAgICAgICAgICBkYXRhX2xlbjsKK307CisKK1RoZSBkcml2ZXIgdGFrZXMgY2FyZSBvZiBhZGRpbmcvc3RyaXBwaW5nIHRoZSBoZWFkZXIgaW5mb3JtYXRpb24uICBUaGUKK2RhdGEgcG9ydGlvbiBpcyBqdXN0IHRoZSBkYXRhIHRvIGJlIHNlbmQgKGRvIE5PVCBwdXQgYWRkcmVzc2luZyBpbmZvCitoZXJlKSBvciB0aGUgcmVzcG9uc2UuICBOb3RlIHRoYXQgdGhlIGNvbXBsZXRpb24gY29kZSBvZiBhIHJlc3BvbnNlIGlzCit0aGUgZmlyc3QgaXRlbSBpbiAiZGF0YSIsIGl0IGlzIG5vdCBzdHJpcHBlZCBvdXQgYmVjYXVzZSB0aGF0IGlzIGhvdworYWxsIHRoZSBtZXNzYWdlcyBhcmUgZGVmaW5lZCBpbiB0aGUgc3BlYyAoYW5kIHRodXMgbWFrZXMgY291bnRpbmcgdGhlCitvZmZzZXRzIGEgbGl0dGxlIGVhc2llciA6LSkuCisKK1doZW4gdXNpbmcgdGhlIElPQ1RMIGludGVyZmFjZSBmcm9tIHVzZXJsYW5kLCB5b3UgbXVzdCBwcm92aWRlIGEgYmxvY2sKK29mIGRhdGEgZm9yICJkYXRhIiwgZmlsbCBpdCwgYW5kIHNldCBkYXRhX2xlbiB0byB0aGUgbGVuZ3RoIG9mIHRoZQorYmxvY2sgb2YgZGF0YSwgZXZlbiB3aGVuIHJlY2VpdmluZyBtZXNzYWdlcy4gIE90aGVyd2lzZSB0aGUgZHJpdmVyCit3aWxsIGhhdmUgbm8gcGxhY2UgdG8gcHV0IHRoZSBtZXNzYWdlLgorCitNZXNzYWdlcyBjb21pbmcgdXAgZnJvbSB0aGUgbWVzc2FnZSBoYW5kbGVyIGluIGtlcm5lbGxhbmQgd2lsbCBjb21lIGluCithczoKKworICBzdHJ1Y3QgaXBtaV9yZWN2X21zZworICB7CisJc3RydWN0IGxpc3RfaGVhZCBsaW5rOworCisJLyogVGhlIHR5cGUgb2YgbWVzc2FnZSBhcyBkZWZpbmVkIGluIHRoZSAiUmVjZWl2ZSBUeXBlcyIKKyAgICAgICAgICAgZGVmaW5lcyBhYm92ZS4gKi8KKwlpbnQgICAgICAgICByZWN2X3R5cGU7CisKKwlpcG1pX3VzZXJfdCAgICAgICp1c2VyOworCXN0cnVjdCBpcG1pX2FkZHIgYWRkcjsKKwlsb25nICAgICAgICAgICAgIG1zZ2lkOworCXN0cnVjdCBpcG1pX21zZyAgbXNnOworCisJLyogQ2FsbCB0aGlzIHdoZW4gZG9uZSB3aXRoIHRoZSBtZXNzYWdlLiAgSXQgd2lsbCBwcmVzdW1hYmx5IGZyZWUKKwkgICB0aGUgbWVzc2FnZSBhbmQgZG8gYW55IG90aGVyIG5lY2Vzc2FyeSBjbGVhbnVwLiAqLworCXZvaWQgKCpkb25lKShzdHJ1Y3QgaXBtaV9yZWN2X21zZyAqbXNnKTsKKworCS8qIFBsYWNlLWhvbGRlciBmb3IgdGhlIGRhdGEsIGRvbid0IG1ha2UgYW55IGFzc3VtcHRpb25zIGFib3V0CisJICAgdGhlIHNpemUgb3IgZXhpc3RlbmNlIG9mIHRoaXMsIHNpbmNlIGl0IG1heSBjaGFuZ2UuICovCisJdW5zaWduZWQgY2hhciAgIG1zZ19kYXRhW0lQTUlfTUFYX01TR19MRU5HVEhdOworICB9OworCitZb3Ugc2hvdWxkIGxvb2sgYXQgdGhlIHJlY2VpdmUgdHlwZSBhbmQgaGFuZGxlIHRoZSBtZXNzYWdlCithcHByb3ByaWF0ZWx5LgorCisKK1RoZSBVcHBlciBMYXllciBJbnRlcmZhY2UgKE1lc3NhZ2UgSGFuZGxlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHVwcGVyIGxheWVyIG9mIHRoZSBpbnRlcmZhY2UgcHJvdmlkZXMgdGhlIHVzZXJzIHdpdGggYSBjb25zaXN0ZW50Cit2aWV3IG9mIHRoZSBJUE1JIGludGVyZmFjZXMuICBJdCBhbGxvd3MgbXVsdGlwbGUgU01JIGludGVyZmFjZXMgdG8gYmUKK2FkZHJlc3NlZCAoYmVjYXVzZSBzb21lIGJvYXJkcyBhY3R1YWxseSBoYXZlIG11bHRpcGxlIEJNQ3Mgb24gdGhlbSkKK2FuZCB0aGUgdXNlciBzaG91bGQgbm90IGhhdmUgdG8gY2FyZSB3aGF0IHR5cGUgb2YgU01JIGlzIGJlbG93IHRoZW0uCisKKworQ3JlYXRpbmcgdGhlIFVzZXIKKworVG8gdXNlciB0aGUgbWVzc2FnZSBoYW5kbGVyLCB5b3UgbXVzdCBmaXJzdCBjcmVhdGUgYSB1c2VyIHVzaW5nCitpcG1pX2NyZWF0ZV91c2VyLiAgVGhlIGludGVyZmFjZSBudW1iZXIgc3BlY2lmaWVzIHdoaWNoIFNNSSB5b3Ugd2FudAordG8gY29ubmVjdCB0bywgYW5kIHlvdSBtdXN0IHN1cHBseSBjYWxsYmFjayBmdW5jdGlvbnMgdG8gYmUgY2FsbGVkCit3aGVuIGRhdGEgY29tZXMgaW4uICBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gY2FuIHJ1biBhdCBpbnRlcnJ1cHQgbGV2ZWwsCitzbyBiZSBjYXJlZnVsIHVzaW5nIHRoZSBjYWxsYmFja3MuICBUaGlzIGFsc28gYWxsb3dzIHRvIHlvdSBwYXNzIGluIGEKK3BpZWNlIG9mIGRhdGEsIHRoZSBoYW5kbGVyX2RhdGEsIHRoYXQgd2lsbCBiZSBwYXNzZWQgYmFjayB0byB5b3Ugb24KK2FsbCBjYWxscy4KKworT25jZSB5b3UgYXJlIGRvbmUsIGNhbGwgaXBtaV9kZXN0cm95X3VzZXIoKSB0byBnZXQgcmlkIG9mIHRoZSB1c2VyLgorCitGcm9tIHVzZXJsYW5kLCBvcGVuaW5nIHRoZSBkZXZpY2UgYXV0b21hdGljYWxseSBjcmVhdGVzIGEgdXNlciwgYW5kCitjbG9zaW5nIHRoZSBkZXZpY2UgYXV0b21hdGljYWxseSBkZXN0cm95cyB0aGUgdXNlci4KKworCitNZXNzYWdpbmcKKworVG8gc2VuZCBhIG1lc3NhZ2UgZnJvbSBrZXJuZWwtbGFuZCwgdGhlIGlwbWlfcmVxdWVzdCgpIGNhbGwgZG9lcworcHJldHR5IG11Y2ggYWxsIG1lc3NhZ2UgaGFuZGxpbmcuICBNb3N0IG9mIHRoZSBwYXJhbWV0ZXIgYXJlCitzZWxmLWV4cGxhbmF0b3J5LiAgSG93ZXZlciwgaXQgdGFrZXMgYSAibXNnaWQiIHBhcmFtZXRlci4gIFRoaXMgaXMgTk9UCit0aGUgc2VxdWVuY2UgbnVtYmVyIG9mIG1lc3NhZ2VzLiAgSXQgaXMgc2ltcGx5IGEgbG9uZyB2YWx1ZSB0aGF0IGlzCitwYXNzZWQgYmFjayB3aGVuIHRoZSByZXNwb25zZSBmb3IgdGhlIG1lc3NhZ2UgaXMgcmV0dXJuZWQuICBZb3UgbWF5Cit1c2UgaXQgZm9yIGFueXRoaW5nIHlvdSBsaWtlLgorCitSZXNwb25zZXMgY29tZSBiYWNrIGluIHRoZSBmdW5jdGlvbiBwb2ludGVkIHRvIGJ5IHRoZSBpcG1pX3JlY3ZfaG5kbAorZmllbGQgb2YgdGhlICJoYW5kbGVyIiB0aGF0IHlvdSBwYXNzZWQgaW4gdG8gaXBtaV9jcmVhdGVfdXNlcigpLgorUmVtZW1iZXIgYWdhaW4sIHRoZXNlIG1heSBiZSBydW5uaW5nIGF0IGludGVycnVwdCBsZXZlbC4gIFJlbWVtYmVyIHRvCitsb29rIGF0IHRoZSByZWNlaXZlIHR5cGUsIHRvby4KKworRnJvbSB1c2VybGFuZCwgeW91IGZpbGwgb3V0IGFuIGlwbWlfcmVxX3Qgc3RydWN0dXJlIGFuZCB1c2UgdGhlCitJUE1JQ1RMX1NFTkRfQ09NTUFORCBpb2N0bC4gIEZvciBpbmNvbWluZyBzdHVmZiwgeW91IGNhbiB1c2Ugc2VsZWN0KCkKK29yIHBvbGwoKSB0byB3YWl0IGZvciBtZXNzYWdlcyB0byBjb21lIGluLiAgSG93ZXZlciwgeW91IGNhbm5vdCB1c2UKK3JlYWQoKSB0byBnZXQgdGhlbSwgeW91IG11c3QgY2FsbCB0aGUgSVBNSUNUTF9SRUNFSVZFX01TRyB3aXRoIHRoZQoraXBtaV9yZWN2X3Qgc3RydWN0dXJlIHRvIGFjdHVhbGx5IGdldCB0aGUgbWVzc2FnZS4gIFJlbWVtYmVyIHRoYXQgeW91CittdXN0IHN1cHBseSBhIHBvaW50ZXIgdG8gYSBibG9jayBvZiBkYXRhIGluIHRoZSBtc2cuZGF0YSBmaWVsZCwgYW5kCit5b3UgbXVzdCBmaWxsIGluIHRoZSBtc2cuZGF0YV9sZW4gZmllbGQgd2l0aCB0aGUgc2l6ZSBvZiB0aGUgZGF0YS4KK1RoaXMgZ2l2ZXMgdGhlIHJlY2VpdmVyIGEgcGxhY2UgdG8gYWN0dWFsbHkgcHV0IHRoZSBtZXNzYWdlLgorCitJZiB0aGUgbWVzc2FnZSBjYW5ub3QgZml0IGludG8gdGhlIGRhdGEgeW91IHByb3ZpZGUsIHlvdSB3aWxsIGdldCBhbgorRU1TR1NJWkUgZXJyb3IgYW5kIHRoZSBkcml2ZXIgd2lsbCBsZWF2ZSB0aGUgZGF0YSBpbiB0aGUgcmVjZWl2ZQorcXVldWUuICBJZiB5b3Ugd2FudCB0byBnZXQgaXQgYW5kIGhhdmUgaXQgdHJ1bmNhdGUgdGhlIG1lc3NhZ2UsIHVzCit0aGUgSVBNSUNUTF9SRUNFSVZFX01TR19UUlVOQyBpb2N0bC4KKworV2hlbiB5b3Ugc2VuZCBhIGNvbW1hbmQgKHdoaWNoIGlzIGRlZmluZWQgYnkgdGhlIGxvd2VzdC1vcmRlciBiaXQgb2YKK3RoZSBuZXRmbiBwZXIgdGhlIElQTUkgc3BlYykgb24gdGhlIElQTUIgYnVzLCB0aGUgZHJpdmVyIHdpbGwKK2F1dG9tYXRpY2FsbHkgYXNzaWduIHRoZSBzZXF1ZW5jZSBudW1iZXIgdG8gdGhlIGNvbW1hbmQgYW5kIHNhdmUgdGhlCitjb21tYW5kLiAgSWYgdGhlIHJlc3BvbnNlIGlzIG5vdCByZWNlaXZlIGluIHRoZSBJUE1JLXNwZWNpZmllZCA1CitzZWNvbmRzLCBpdCB3aWxsIGdlbmVyYXRlIGEgcmVzcG9uc2UgYXV0b21hdGljYWxseSBzYXlpbmcgdGhlIGNvbW1hbmQKK3RpbWVkIG91dC4gIElmIGFuIHVuc29saWNpdGVkIHJlc3BvbnNlIGNvbWVzIGluIChpZiBpdCB3YXMgYWZ0ZXIgNQorc2Vjb25kcywgZm9yIGluc3RhbmNlKSwgdGhhdCByZXNwb25zZSB3aWxsIGJlIGlnbm9yZWQuCisKK0luIGtlcm5lbGxhbmQsIGFmdGVyIHlvdSByZWNlaXZlIGEgbWVzc2FnZSBhbmQgYXJlIGRvbmUgd2l0aCBpdCwgeW91CitNVVNUIGNhbGwgaXBtaV9mcmVlX3JlY3ZfbXNnKCkgb24gaXQsIG9yIHlvdSB3aWxsIGxlYWsgbWVzc2FnZXMuICBOb3RlCit0aGF0IHlvdSBzaG91bGQgTkVWRVIgbWVzcyB3aXRoIHRoZSAiZG9uZSIgZmllbGQgb2YgYSBtZXNzYWdlLCB0aGF0IGlzCityZXF1aXJlZCB0byBwcm9wZXJseSBjbGVhbiB1cCB0aGUgbWVzc2FnZS4KKworTm90ZSB0aGF0IHdoZW4gc2VuZGluZywgdGhlcmUgaXMgYW4gaXBtaV9yZXF1ZXN0X3N1cHBseV9tc2dzKCkgY2FsbAordGhhdCBsZXRzIHlvdSBzdXBwbHkgdGhlIHNtaSBhbmQgcmVjZWl2ZSBtZXNzYWdlLiAgVGhpcyBpcyB1c2VmdWwgZm9yCitwaWVjZXMgb2YgY29kZSB0aGF0IG5lZWQgdG8gd29yayBldmVuIGlmIHRoZSBzeXN0ZW0gaXMgb3V0IG9mIGJ1ZmZlcnMKKyh0aGUgd2F0Y2hkb2cgdGltZXIgdXNlcyB0aGlzLCBmb3IgaW5zdGFuY2UpLiAgWW91IHN1cHBseSB5b3VyIG93bgorYnVmZmVyIGFuZCBvd24gZnJlZSByb3V0aW5lcy4gIFRoaXMgaXMgbm90IHJlY29tbWVuZGVkIGZvciBub3JtYWwgdXNlLAordGhvdWdoLCBzaW5jZSBpdCBpcyB0cmlja3kgdG8gbWFuYWdlIHlvdXIgb3duIGJ1ZmZlcnMuCisKKworRXZlbnRzIGFuZCBJbmNvbWluZyBDb21tYW5kcworCitUaGUgZHJpdmVyIHRha2VzIGNhcmUgb2YgcG9sbGluZyBmb3IgSVBNSSBldmVudHMgYW5kIHJlY2VpdmluZworY29tbWFuZHMgKGNvbW1hbmRzIGFyZSBtZXNzYWdlcyB0aGF0IGFyZSBub3QgcmVzcG9uc2VzLCB0aGV5IGFyZQorY29tbWFuZHMgdGhhdCBvdGhlciB0aGluZ3Mgb24gdGhlIElQTUIgYnVzIGhhdmUgc2VudCB5b3UpLiAgVG8gcmVjZWl2ZQordGhlc2UsIHlvdSBtdXN0IHJlZ2lzdGVyIGZvciB0aGVtLCB0aGV5IHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYmUgc2VudAordG8geW91LgorCitUbyByZWNlaXZlIGV2ZW50cywgeW91IG11c3QgY2FsbCBpcG1pX3NldF9nZXRzX2V2ZW50cygpIGFuZCBzZXQgdGhlCisidmFsIiB0byBub24temVyby4gIEFueSBldmVudHMgdGhhdCBoYXZlIGJlZW4gcmVjZWl2ZWQgYnkgdGhlIGRyaXZlcgorc2luY2Ugc3RhcnR1cCB3aWxsIGltbWVkaWF0ZWx5IGJlIGRlbGl2ZXJlZCB0byB0aGUgZmlyc3QgdXNlciB0aGF0CityZWdpc3RlcnMgZm9yIGV2ZW50cy4gIEFmdGVyIHRoYXQsIGlmIG11bHRpcGxlIHVzZXJzIGFyZSByZWdpc3RlcmVkCitmb3IgZXZlbnRzLCB0aGV5IHdpbGwgYWxsIHJlY2VpdmUgYWxsIGV2ZW50cyB0aGF0IGNvbWUgaW4uCisKK0ZvciByZWNlaXZpbmcgY29tbWFuZHMsIHlvdSBoYXZlIHRvIGluZGl2aWR1YWxseSByZWdpc3RlciBjb21tYW5kcyB5b3UKK3dhbnQgdG8gcmVjZWl2ZS4gIENhbGwgaXBtaV9yZWdpc3Rlcl9mb3JfY21kKCkgYW5kIHN1cHBseSB0aGUgbmV0Zm4KK2FuZCBjb21tYW5kIG5hbWUgZm9yIGVhY2ggY29tbWFuZCB5b3Ugd2FudCB0byByZWNlaXZlLiAgWW91IGFsc28KK3NwZWNpZnkgYSBiaXRtYXNrIG9mIHRoZSBjaGFubmVscyB5b3Ugd2FudCB0byByZWNlaXZlIHRoZSBjb21tYW5kIGZyb20KKyhvciB1c2UgSVBNSV9DSEFOX0FMTCBmb3IgYWxsIGNoYW5uZWxzIGlmIHlvdSBkb24ndCBjYXJlKS4gIE9ubHkgb25lCit1c2VyIG1heSBiZSByZWdpc3RlcmVkIGZvciBlYWNoIG5ldGZuL2NtZC9jaGFubmVsLCBidXQgZGlmZmVyZW50IHVzZXJzCittYXkgcmVnaXN0ZXIgZm9yIGRpZmZlcmVudCBjb21tYW5kcywgb3IgdGhlIHNhbWUgY29tbWFuZCBpZiB0aGUKK2NoYW5uZWwgYml0bWFza3MgZG8gbm90IG92ZXJsYXAuCisKK0Zyb20gdXNlcmxhbmQsIGVxdWl2YWxlbnQgSU9DVExzIGFyZSBwcm92aWRlZCB0byBkbyB0aGVzZSBmdW5jdGlvbnMuCisKKworVGhlIExvd2VyIExheWVyIChTTUkpIEludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBcyBtZW50aW9uZWQgYmVmb3JlLCBtdWx0aXBsZSBTTUkgaW50ZXJmYWNlcyBtYXkgYmUgcmVnaXN0ZXJlZCB0byB0aGUKK21lc3NhZ2UgaGFuZGxlciwgZWFjaCBvZiB0aGVzZSBpcyBhc3NpZ25lZCBhbiBpbnRlcmZhY2UgbnVtYmVyIHdoZW4KK3RoZXkgcmVnaXN0ZXIgd2l0aCB0aGUgbWVzc2FnZSBoYW5kbGVyLiAgVGhleSBhcmUgZ2VuZXJhbGx5IGFzc2lnbmVkCitpbiB0aGUgb3JkZXIgdGhleSByZWdpc3RlciwgYWx0aG91Z2ggaWYgYW4gU01JIHVucmVnaXN0ZXJzIGFuZCB0aGVuCithbm90aGVyIG9uZSByZWdpc3RlcnMsIGFsbCBiZXRzIGFyZSBvZmYuCisKK1RoZSBpcG1pX3NtaS5oIGRlZmluZXMgdGhlIGludGVyZmFjZSBmb3IgbWFuYWdlbWVudCBpbnRlcmZhY2VzLCBzZWUKK3RoYXQgZm9yIG1vcmUgZGV0YWlscy4KKworCitUaGUgU0kgRHJpdmVyCistLS0tLS0tLS0tLS0tCisKK1RoZSBTSSBkcml2ZXIgYWxsb3dzIHVwIHRvIDQgS0NTIG9yIFNNSUMgaW50ZXJmYWNlcyB0byBiZSBjb25maWd1cmVkCitpbiB0aGUgc3lzdGVtLiAgQnkgZGVmYXVsdCwgc2NhbiB0aGUgQUNQSSB0YWJsZXMgZm9yIGludGVyZmFjZXMsIGFuZAoraWYgaXQgZG9lc24ndCBmaW5kIGFueSB0aGUgZHJpdmVyIHdpbGwgYXR0ZW1wdCB0byByZWdpc3RlciBvbmUgS0NTCitpbnRlcmZhY2UgYXQgdGhlIHNwZWMtc3BlY2lmaWVkIEkvTyBwb3J0IDB4Y2EyIHdpdGhvdXQgaW50ZXJydXB0cy4KK1lvdSBjYW4gY2hhbmdlIHRoaXMgYXQgbW9kdWxlIGxvYWQgdGltZSAoZm9yIGEgbW9kdWxlKSB3aXRoOgorCisgIG1vZHByb2JlIGlwbWlfc2kubyB0eXBlPTx0eXBlMT4sPHR5cGUyPi4uLi4KKyAgICAgICBwb3J0cz08cG9ydDE+LDxwb3J0Mj4uLi4gYWRkcnM9PGFkZHIxPiw8YWRkcjI+Li4uCisgICAgICAgaXJxcz08aXJxMT4sPGlycTI+Li4uCisgICAgICAgcmVnc3BhY2luZ3M9PHNwMT4sPHNwMj4sLi4uIHJlZ3NpemVzPTxzaXplMT4sPHNpemUyPiwuLi4KKyAgICAgICByZWdzaGlmdHM9PHNoaWZ0MT4sPHNoaWZ0Mj4sLi4uCisgICAgICAgc2xhdmVfYWRkcnM9PGFkZHIxPiw8YWRkcjI+LC4uLgorICAgICAgIGZvcmNlX2tpcG1pZD08ZW5hYmxlMT4sPGVuYWJsZTI+LC4uLgorICAgICAgIGtpcG1pZF9tYXhfYnVzeV91cz08dXN0aW1lMT4sPHVzdGltZTI+LC4uLgorICAgICAgIHVubG9hZF93aGVuX2VtcHR5PVswfDFdCisgICAgICAgdHJ5ZGVmYXVsdHM9WzB8MV0gdHJ5ZG1pPVswfDFdIHRyeWFjcGk9WzB8MV0KKyAgICAgICB0cnlwbGF0Zm9ybT1bMHwxXSB0cnlwY2k9WzB8MV0KKworRWFjaCBvZiB0aGVzZSBleGNlcHQgdHJ5Li4uIGl0ZW1zIGlzIGEgbGlzdCwgdGhlIGZpcnN0IGl0ZW0gZm9yIHRoZQorZmlyc3QgaW50ZXJmYWNlLCBzZWNvbmQgaXRlbSBmb3IgdGhlIHNlY29uZCBpbnRlcmZhY2UsIGV0Yy4KKworVGhlIHNpX3R5cGUgbWF5IGJlIGVpdGhlciAia2NzIiwgInNtaWMiLCBvciAiYnQiLiAgSWYgeW91IGxlYXZlIGl0IGJsYW5rLCBpdAorZGVmYXVsdHMgdG8gImtjcyIuCisKK0lmIHlvdSBzcGVjaWZ5IGFkZHJzIGFzIG5vbi16ZXJvIGZvciBhbiBpbnRlcmZhY2UsIHRoZSBkcml2ZXIgd2lsbAordXNlIHRoZSBtZW1vcnkgYWRkcmVzcyBnaXZlbiBhcyB0aGUgYWRkcmVzcyBvZiB0aGUgZGV2aWNlLiAgVGhpcworb3ZlcnJpZGVzIHNpX3BvcnRzLgorCitJZiB5b3Ugc3BlY2lmeSBwb3J0cyBhcyBub24temVybyBmb3IgYW4gaW50ZXJmYWNlLCB0aGUgZHJpdmVyIHdpbGwKK3VzZSB0aGUgSS9PIHBvcnQgZ2l2ZW4gYXMgdGhlIGRldmljZSBhZGRyZXNzLgorCitJZiB5b3Ugc3BlY2lmeSBpcnFzIGFzIG5vbi16ZXJvIGZvciBhbiBpbnRlcmZhY2UsIHRoZSBkcml2ZXIgd2lsbAorYXR0ZW1wdCB0byB1c2UgdGhlIGdpdmVuIGludGVycnVwdCBmb3IgdGhlIGRldmljZS4KKwordHJ5ZGVmYXVsdHMgc2V0cyB3aGV0aGVyIHRoZSBzdGFuZGFyZCBJUE1JIGludGVyZmFjZSBhdCAweGNhMiBhbmQKK2FueSBpbnRlcmZhY2VzIHNwZWNpZmllZCBieSBBQ1BFIGFyZSB0cmllZC4gIEJ5IGRlZmF1bHQsIHRoZSBkcml2ZXIKK3RyaWVzIGl0LCBzZXQgdGhpcyB2YWx1ZSB0byB6ZXJvIHRvIHR1cm4gdGhpcyBvZmYuCisKK1RoZSBvdGhlciB0cnkuLi4gaXRlbXMgZGlzYWJsZSBkaXNjb3ZlcnkgYnkgdGhlaXIgY29ycmVzcG9uZGluZworbmFtZXMuICBUaGVzZSBhcmUgYWxsIGVuYWJsZWQgYnkgZGVmYXVsdCwgc2V0IHRoZW0gdG8gemVybyB0byBkaXNhYmxlCit0aGVtLiAgVGhlIHRyeXBsYXRmb3JtIGRpc2FibGVzIG9wZW5maXJtd2FyZS4KKworVGhlIG5leHQgdGhyZWUgcGFyYW1ldGVycyBoYXZlIHRvIGRvIHdpdGggcmVnaXN0ZXIgbGF5b3V0LiAgVGhlCityZWdpc3RlcnMgdXNlZCBieSB0aGUgaW50ZXJmYWNlcyBtYXkgbm90IGFwcGVhciBhdCBzdWNjZXNzaXZlCitsb2NhdGlvbnMgYW5kIHRoZXkgbWF5IG5vdCBiZSBpbiA4LWJpdCByZWdpc3RlcnMuICBUaGVzZSBwYXJhbWV0ZXJzCithbGxvdyB0aGUgbGF5b3V0IG9mIHRoZSBkYXRhIGluIHRoZSByZWdpc3RlcnMgdG8gYmUgbW9yZSBwcmVjaXNlbHkKK3NwZWNpZmllZC4KKworVGhlIHJlZ3NwYWNpbmdzIHBhcmFtZXRlciBnaXZlIHRoZSBudW1iZXIgb2YgYnl0ZXMgYmV0d2VlbiBzdWNjZXNzaXZlCityZWdpc3RlciBzdGFydCBhZGRyZXNzZXMuICBGb3IgaW5zdGFuY2UsIGlmIHRoZSByZWdzcGFjaW5nIGlzIHNldCB0byA0CithbmQgdGhlIHN0YXJ0IGFkZHJlc3MgaXMgMHhjYTIsIHRoZW4gdGhlIGFkZHJlc3MgZm9yIHRoZSBzZWNvbmQKK3JlZ2lzdGVyIHdvdWxkIGJlIDB4Y2E2LiAgVGhpcyBkZWZhdWx0cyB0byAxLgorCitUaGUgcmVnc2l6ZXMgcGFyYW1ldGVyIGdpdmVzIHRoZSBzaXplIG9mIGEgcmVnaXN0ZXIsIGluIGJ5dGVzLiAgVGhlCitkYXRhIHVzZWQgYnkgSVBNSSBpcyA4LWJpdHMgd2lkZSwgYnV0IGl0IG1heSBiZSBpbnNpZGUgYSBsYXJnZXIKK3JlZ2lzdGVyLiAgVGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHRoZSByZWFkIGFuZCB3cml0ZSB0eXBlIHRvIHNwZWNpZmllZC4KK0l0IG1heSBiZSAxLCAyLCA0LCBvciA4LiAgVGhlIGRlZmF1bHQgaXMgMS4KKworU2luY2UgdGhlIHJlZ2lzdGVyIHNpemUgbWF5IGJlIGxhcmdlciB0aGFuIDMyIGJpdHMsIHRoZSBJUE1JIGRhdGEgbWF5IG5vdAorYmUgaW4gdGhlIGxvd2VyIDggYml0cy4gIFRoZSByZWdzaGlmdHMgcGFyYW1ldGVyIGdpdmUgdGhlIGFtb3VudCB0byBzaGlmdAordGhlIGRhdGEgdG8gZ2V0IHRvIHRoZSBhY3R1YWwgSVBNSSBkYXRhLgorCitUaGUgc2xhdmVfYWRkcnMgc3BlY2lmaWVzIHRoZSBJUE1JIGFkZHJlc3Mgb2YgdGhlIGxvY2FsIEJNQy4gIFRoaXMgaXMKK3VzdWFsbHkgMHgyMCBhbmQgdGhlIGRyaXZlciBkZWZhdWx0cyB0byB0aGF0LCBidXQgaW4gY2FzZSBpdCdzIG5vdCwgaXQKK2NhbiBiZSBzcGVjaWZpZWQgd2hlbiB0aGUgZHJpdmVyIHN0YXJ0cyB1cC4KKworVGhlIGZvcmNlX2lwbWlkIHBhcmFtZXRlciBmb3JjZWZ1bGx5IGVuYWJsZXMgKGlmIHNldCB0byAxKSBvciBkaXNhYmxlcworKGlmIHNldCB0byAwKSB0aGUga2VybmVsIElQTUkgZGFlbW9uLiAgTm9ybWFsbHkgdGhpcyBpcyBhdXRvLWRldGVjdGVkCitieSB0aGUgZHJpdmVyLCBidXQgc3lzdGVtcyB3aXRoIGJyb2tlbiBpbnRlcnJ1cHRzIG1pZ2h0IG5lZWQgYW4gZW5hYmxlLAorb3IgdXNlcnMgdGhhdCBkb24ndCB3YW50IHRoZSBkYWVtb24gKGRvbid0IG5lZWQgdGhlIHBlcmZvcm1hbmNlLCBkb24ndAord2FudCB0aGUgQ1BVIGhpdCkgY2FuIGRpc2FibGUgaXQuCisKK0lmIHVubG9hZF93aGVuX2VtcHR5IGlzIHNldCB0byAxLCB0aGUgZHJpdmVyIHdpbGwgYmUgdW5sb2FkZWQgaWYgaXQKK2RvZXNuJ3QgZmluZCBhbnkgaW50ZXJmYWNlcyBvciBhbGwgdGhlIGludGVyZmFjZXMgZmFpbCB0byB3b3JrLiAgVGhlCitkZWZhdWx0IGlzIG9uZS4gIFNldHRpbmcgdG8gMCBpcyB1c2VmdWwgd2l0aCB0aGUgaG90bW9kLCBidXQgaXMKK29idmlvdXNseSBvbmx5IHVzZWZ1bCBmb3IgbW9kdWxlcy4KKworV2hlbiBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwsIHRoZSBwYXJhbWV0ZXJzIGNhbiBiZSBzcGVjaWZpZWQgb24gdGhlCitrZXJuZWwgY29tbWFuZCBsaW5lIGFzOgorCisgIGlwbWlfc2kudHlwZT08dHlwZTE+LDx0eXBlMj4uLi4KKyAgICAgICBpcG1pX3NpLnBvcnRzPTxwb3J0MT4sPHBvcnQyPi4uLiBpcG1pX3NpLmFkZHJzPTxhZGRyMT4sPGFkZHIyPi4uLgorICAgICAgIGlwbWlfc2kuaXJxcz08aXJxMT4sPGlycTI+Li4uIGlwbWlfc2kudHJ5ZGVmYXVsdHM9WzB8MV0KKyAgICAgICBpcG1pX3NpLnJlZ3NwYWNpbmdzPTxzcDE+LDxzcDI+LC4uLgorICAgICAgIGlwbWlfc2kucmVnc2l6ZXM9PHNpemUxPiw8c2l6ZTI+LC4uLgorICAgICAgIGlwbWlfc2kucmVnc2hpZnRzPTxzaGlmdDE+LDxzaGlmdDI+LC4uLgorICAgICAgIGlwbWlfc2kuc2xhdmVfYWRkcnM9PGFkZHIxPiw8YWRkcjI+LC4uLgorICAgICAgIGlwbWlfc2kuZm9yY2Vfa2lwbWlkPTxlbmFibGUxPiw8ZW5hYmxlMj4sLi4uCisgICAgICAgaXBtaV9zaS5raXBtaWRfbWF4X2J1c3lfdXM9PHVzdGltZTE+LDx1c3RpbWUyPiwuLi4KKworSXQgd29ya3MgdGhlIHNhbWUgYXMgdGhlIG1vZHVsZSBwYXJhbWV0ZXJzIG9mIHRoZSBzYW1lIG5hbWVzLgorCitCeSBkZWZhdWx0LCB0aGUgZHJpdmVyIHdpbGwgYXR0ZW1wdCB0byBkZXRlY3QgYW55IGRldmljZSBzcGVjaWZpZWQgYnkKK0FDUEksIGFuZCBpZiBub25lIG9mIHRob3NlIHRoZW4gYSBLQ1MgZGV2aWNlIGF0IHRoZSBzcGVjLXNwZWNpZmllZAorMHhjYTIuICBJZiB5b3Ugd2FudCB0byB0dXJuIHRoaXMgb2ZmLCBzZXQgdGhlICJ0cnlkZWZhdWx0cyIgb3B0aW9uIHRvCitmYWxzZS4KKworSWYgeW91ciBJUE1JIGludGVyZmFjZSBkb2VzIG5vdCBzdXBwb3J0IGludGVycnVwdHMgYW5kIGlzIGEgS0NTIG9yCitTTUlDIGludGVyZmFjZSwgdGhlIElQTUkgZHJpdmVyIHdpbGwgc3RhcnQgYSBrZXJuZWwgdGhyZWFkIGZvciB0aGUKK2ludGVyZmFjZSB0byBoZWxwIHNwZWVkIHRoaW5ncyB1cC4gIFRoaXMgaXMgYSBsb3ctcHJpb3JpdHkga2VybmVsCit0aHJlYWQgdGhhdCBjb25zdGFudGx5IHBvbGxzIHRoZSBJUE1JIGRyaXZlciB3aGlsZSBhbiBJUE1JIG9wZXJhdGlvbgoraXMgaW4gcHJvZ3Jlc3MuICBUaGUgZm9yY2Vfa2lwbWlkIG1vZHVsZSBwYXJhbWV0ZXIgd2lsbCBhbGwgdGhlIHVzZXIgdG8KK2ZvcmNlIHRoaXMgdGhyZWFkIG9uIG9yIG9mZi4gIElmIHlvdSBmb3JjZSBpdCBvZmYgYW5kIGRvbid0IGhhdmUKK2ludGVycnVwdHMsIHRoZSBkcml2ZXIgd2lsbCBydW4gVkVSWSBzbG93bHkuICBEb24ndCBibGFtZSBtZSwKK3RoZXNlIGludGVyZmFjZXMgc3Vjay4KKworVW5mb3J0dW5hdGVseSwgdGhpcyB0aHJlYWQgY2FuIHVzZSBhIGxvdCBvZiBDUFUgZGVwZW5kaW5nIG9uIHRoZQoraW50ZXJmYWNlJ3MgcGVyZm9ybWFuY2UuICBUaGlzIGNhbiB3YXN0ZSBhIGxvdCBvZiBDUFUgYW5kIGNhdXNlCit2YXJpb3VzIGlzc3VlcyB3aXRoIGRldGVjdGluZyBpZGxlIENQVSBhbmQgdXNpbmcgZXh0cmEgcG93ZXIuICBUbworYXZvaWQgdGhpcywgdGhlIGtpcG1pZF9tYXhfYnVzeV91cyBzZXRzIHRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lLCBpbgorbWljcm9zZWNvbmRzLCB0aGF0IGtpcG1pZCB3aWxsIHNwaW4gYmVmb3JlIHNsZWVwaW5nIGZvciBhIHRpY2suICBUaGlzCit2YWx1ZSBzZXRzIGEgYmFsYW5jZSBiZXR3ZWVuIHBlcmZvcm1hbmNlIGFuZCBDUFUgd2FzdGUgYW5kIG5lZWRzIHRvIGJlCit0dW5lZCB0byB5b3VyIG5lZWRzLiAgTWF5YmUsIHNvbWVkYXksIGF1dG8tdHVuaW5nIHdpbGwgYmUgYWRkZWQsIGJ1dAordGhhdCdzIG5vdCBhIHNpbXBsZSB0aGluZyBhbmQgZXZlbiB0aGUgYXV0by10dW5pbmcgd291bGQgbmVlZCB0byBiZQordHVuZWQgdG8gdGhlIHVzZXIncyBkZXNpcmVkIHBlcmZvcm1hbmNlLgorCitUaGUgZHJpdmVyIHN1cHBvcnRzIGEgaG90IGFkZCBhbmQgcmVtb3ZlIG9mIGludGVyZmFjZXMuICBUaGlzIHdheSwKK2ludGVyZmFjZXMgY2FuIGJlIGFkZGVkIG9yIHJlbW92ZWQgYWZ0ZXIgdGhlIGtlcm5lbCBpcyB1cCBhbmQgcnVubmluZy4KK1RoaXMgaXMgZG9uZSB1c2luZyAvc3lzL21vZHVsZXMvaXBtaV9zaS9wYXJhbWV0ZXJzL2hvdG1vZCwgd2hpY2ggaXMgYQord3JpdGUtb25seSBwYXJhbWV0ZXIuICBZb3Ugd3JpdGUgYSBzdHJpbmcgdG8gdGhpcyBpbnRlcmZhY2UuICBUaGUgc3RyaW5nCitoYXMgdGhlIGZvcm1hdDoKKyAgIDxvcDE+WzpvcDJbOm9wMy4uLl1dCitUaGUgIm9wInMgYXJlOgorICAgYWRkfHJlbW92ZSxrY3N8YnR8c21pYyxtZW18aS9vLDxhZGRyZXNzPlssPG9wdDE+Wyw8b3B0Mj5bLC4uLl1dXQorWW91IGNhbiBzcGVjaWZ5IG1vcmUgdGhhbiBvbmUgaW50ZXJmYWNlIG9uIHRoZSBsaW5lLiAgVGhlICJvcHQicyBhcmU6CisgICByc3A9PHJlZ3NwYWNpbmc+CisgICByc2k9PHJlZ3NpemU+CisgICByc2g9PHJlZ3NoaWZ0PgorICAgaXJxPTxpcnE+CisgICBpcG1iPTxpcG1iIHNsYXZlIGFkZHI+CithbmQgdGhlc2UgaGF2ZSB0aGUgc2FtZSBtZWFuaW5ncyBhcyBkaXNjdXNzZWQgYWJvdmUuICBOb3RlIHRoYXQgeW91CitjYW4gYWxzbyB1c2UgdGhpcyBvbiB0aGUga2VybmVsIGNvbW1hbmQgbGluZSBmb3IgYSBtb3JlIGNvbXBhY3QgZm9ybWF0Citmb3Igc3BlY2lmeWluZyBhbiBpbnRlcmZhY2UuICBOb3RlIHRoYXQgd2hlbiByZW1vdmluZyBhbiBpbnRlcmZhY2UsCitvbmx5IHRoZSBmaXJzdCB0aHJlZSBwYXJhbWV0ZXJzIChzaSB0eXBlLCBhZGRyZXNzIHR5cGUsIGFuZCBhZGRyZXNzKQorYXJlIHVzZWQgZm9yIHRoZSBjb21wYXJpc29uLiAgQW55IG9wdGlvbnMgYXJlIGlnbm9yZWQgZm9yIHJlbW92aW5nLgorCitUaGUgU01CdXMgRHJpdmVyIChTU0lGKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIFNNQnVzIGRyaXZlciBhbGxvd3MgdXAgdG8gNCBTTUJ1cyBkZXZpY2VzIHRvIGJlIGNvbmZpZ3VyZWQgaW4gdGhlCitzeXN0ZW0uICBCeSBkZWZhdWx0LCB0aGUgZHJpdmVyIHdpbGwgb25seSByZWdpc3RlciB3aXRoIHNvbWV0aGluZyBpdAorZmluZHMgaW4gRE1JIG9yIEFDUEkgdGFibGVzLiAgWW91IGNhbiBjaGFuZ2UgdGhpcworYXQgbW9kdWxlIGxvYWQgdGltZSAoZm9yIGEgbW9kdWxlKSB3aXRoOgorCisgIG1vZHByb2JlIGlwbWlfc3NpZi5vCisJYWRkcj08aTJjYWRkcjE+Wyw8aTJjYWRkcjI+WywuLi5dXQorCWFkYXB0ZXI9PGFkYXB0ZXIxPlssPGFkYXB0ZXIyPlsuLi5dXQorCWRiZz08ZmxhZ3MxPiw8ZmxhZ3MyPi4uLgorICAgICAgICBzbGF2ZV9hZGRycz08YWRkcjE+LDxhZGRyMj4sLi4uCisJW2RiZ19wcm9iZT0xXQorCitUaGUgYWRkcmVzc2VzIGFyZSBub3JtYWwgSTJDIGFkZHJlc3Nlcy4gIFRoZSBhZGFwdGVyIGlzIHRoZSBzdHJpbmcKK25hbWUgb2YgdGhlIGFkYXB0ZXIsIGFzIHNob3duIGluIC9zeXMvY2xhc3MvaTJjLWFkYXB0ZXIvaTJjLTxuPi9uYW1lLgorSXQgaXMgKk5PVCogaTJjLTxuPiBpdHNlbGYuICBBbHNvLCB0aGUgY29tcGFyaXNvbiBpcyBkb25lIGlnbm9yaW5nCitzcGFjZXMsIHNvIGlmIHRoZSBuYW1lIGlzICJUaGlzIGlzIGFuIEkyQyBjaGlwIiB5b3UgY2FuIHNheQorYWRhcHRlcl9uYW1lPVRoaXNpc2FuSTJjY2hpcC4gIFRoaXMgaXMgYmVjYXVzZSBpdCdzIGhhcmQgdG8gcGFzcyBpbgorc3BhY2VzIGluIGtlcm5lbCBwYXJhbWV0ZXJzLgorCitUaGUgZGVidWcgZmxhZ3MgYXJlIGJpdCBmbGFncyBmb3IgZWFjaCBCTUMgZm91bmQsIHRoZXkgYXJlOgorSVBNSSBtZXNzYWdlczogMSwgZHJpdmVyIHN0YXRlOiAyLCB0aW1pbmc6IDQsIEkyQyBwcm9iZTogOAorCitTZXR0aW5nIGRiZ19wcm9iZSB0byAxIHdpbGwgZW5hYmxlIGRlYnVnZ2luZyBvZiB0aGUgcHJvYmluZyBhbmQKK2RldGVjdGlvbiBwcm9jZXNzIGZvciBCTUNzIG9uIHRoZSBTTUJ1c3Nlcy4KKworVGhlIHNsYXZlX2FkZHJzIHNwZWNpZmllcyB0aGUgSVBNSSBhZGRyZXNzIG9mIHRoZSBsb2NhbCBCTUMuICBUaGlzIGlzCit1c3VhbGx5IDB4MjAgYW5kIHRoZSBkcml2ZXIgZGVmYXVsdHMgdG8gdGhhdCwgYnV0IGluIGNhc2UgaXQncyBub3QsIGl0CitjYW4gYmUgc3BlY2lmaWVkIHdoZW4gdGhlIGRyaXZlciBzdGFydHMgdXAuCisKK0Rpc2NvdmVyaW5nIHRoZSBJUE1JIGNvbXBsaWFudCBCTUMgb24gdGhlIFNNQnVzIGNhbiBjYXVzZSBkZXZpY2VzIG9uCit0aGUgSTJDIGJ1cyB0byBmYWlsLiBUaGUgU01CdXMgZHJpdmVyIHdyaXRlcyBhICJHZXQgRGV2aWNlIElEIiBJUE1JCittZXNzYWdlIGFzIGEgYmxvY2sgd3JpdGUgdG8gdGhlIEkyQyBidXMgYW5kIHdhaXRzIGZvciBhIHJlc3BvbnNlLgorVGhpcyBhY3Rpb24gY2FuIGJlIGRldHJpbWVudGFsIHRvIHNvbWUgSTJDIGRldmljZXMuIEl0IGlzIGhpZ2hseQorcmVjb21tZW5kZWQgdGhhdCB0aGUga25vd24gSTJDIGFkZHJlc3MgYmUgZ2l2ZW4gdG8gdGhlIFNNQnVzIGRyaXZlciBpbgordGhlIHNtYl9hZGRyIHBhcmFtZXRlciB1bmxlc3MgeW91IGhhdmUgRE1JIG9yIEFDUEkgZGF0YSB0byB0ZWxsIHRoZQorZHJpdmVyIHdoYXQgdG8gdXNlLgorCitXaGVuIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCwgdGhlIGFkZHJlc3NlcyBjYW4gYmUgc3BlY2lmaWVkIG9uIHRoZQora2VybmVsIGNvbW1hbmQgbGluZSBhczoKKworICBpcG1iX3NzaWYuYWRkcj08aTJjYWRkcjE+Wyw8aTJjYWRkcjI+Wy4uLl1dCisJaXBtaV9zc2lmLmFkYXB0ZXI9PGFkYXB0ZXIxPlssPGFkYXB0ZXIyPlsuLi5dXQorCWlwbWlfc3NpZi5kYmc9PGZsYWdzMT5bLDxmbGFnczI+Wy4uLl1dCisJaXBtaV9zc2lmLmRiZ19wcm9iZT0xCisgICAgICAgIGlwbWlfc3NpZi5zbGF2ZV9hZGRycz08YWRkcjE+Wyw8YWRkcjI+Wy4uLl1dCisKK1RoZXNlIGFyZSB0aGUgc2FtZSBvcHRpb25zIGFzIG9uIHRoZSBtb2R1bGUgY29tbWFuZCBsaW5lLgorCitUaGUgSTJDIGRyaXZlciBkb2VzIG5vdCBzdXBwb3J0IG5vbi1ibG9ja2luZyBhY2Nlc3Mgb3IgcG9sbGluZywgc28KK3RoaXMgZHJpdmVyIGNhbm5vZCB0byBJUE1JIHBhbmljIGV2ZW50cywgZXh0ZW5kIHRoZSB3YXRjaGRvZyBhdCBwYW5pYwordGltZSwgb3Igb3RoZXIgcGFuaWMtcmVsYXRlZCBJUE1JIGZ1bmN0aW9ucyB3aXRob3V0IHNwZWNpYWwga2VybmVsCitwYXRjaGVzIGFuZCBkcml2ZXIgbW9kaWZpY2F0aW9ucy4gIFlvdSBjYW4gZ2V0IHRob3NlIGF0IHRoZSBvcGVuaXBtaQord2ViIHBhZ2UuCisKK1RoZSBkcml2ZXIgc3VwcG9ydHMgYSBob3QgYWRkIGFuZCByZW1vdmUgb2YgaW50ZXJmYWNlcyB0aHJvdWdoIHRoZSBJMkMKK3N5c2ZzIGludGVyZmFjZS4KKworT3RoZXIgUGllY2VzCistLS0tLS0tLS0tLS0KKworR2V0IHRoZSBkZXRhaWxlZCBpbmZvIHJlbGF0ZWQgd2l0aCB0aGUgSVBNSSBkZXZpY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NvbWUgdXNlcnMgbmVlZCBtb3JlIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGEgZGV2aWNlLCBsaWtlIHdoZXJlCit0aGUgYWRkcmVzcyBjYW1lIGZyb20gb3IgdGhlIHJhdyBiYXNlIGRldmljZSBmb3IgdGhlIElQTUkgaW50ZXJmYWNlLgorWW91IGNhbiB1c2UgdGhlIElQTUkgc21pX3dhdGNoZXIgdG8gY2F0Y2ggdGhlIElQTUkgaW50ZXJmYWNlcyBhcyB0aGV5Citjb21lIG9yIGdvLCBhbmQgdG8gZ3JhYiB0aGUgaW5mb3JtYXRpb24sIHlvdSBjYW4gdXNlIHRoZSBmdW5jdGlvbgoraXBtaV9nZXRfc21pX2luZm8oKSwgd2hpY2ggcmV0dXJucyB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKKworc3RydWN0IGlwbWlfc21pX2luZm8geworCWVudW0gaXBtaV9hZGRyX3NyYyBhZGRyX3NyYzsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJdW5pb24geworCQlzdHJ1Y3QgeworCQkJdm9pZCAqYWNwaV9oYW5kbGU7CisJCX0gYWNwaV9pbmZvOworCX0gYWRkcl9pbmZvOworfTsKKworQ3VycmVudGx5IHNwZWNpYWwgaW5mbyBmb3Igb25seSBmb3IgU0lfQUNQSSBhZGRyZXNzIHNvdXJjZXMgaXMKK3JldHVybmVkLiAgT3RoZXJzIG1heSBiZSBhZGRlZCBhcyBuZWNlc3NhcnkuCisKK05vdGUgdGhhdCB0aGUgZGV2IHBvaW50ZXIgaXMgaW5jbHVkZWQgaW4gdGhlIGFib3ZlIHN0cnVjdHVyZSwgYW5kCithc3N1bWluZyBpcG1pX3NtaV9nZXRfaW5mbyByZXR1cm5zIHN1Y2Nlc3MsIHlvdSBtdXN0IGNhbGwgcHV0X2RldmljZQorb24gdGhlIGRldiBwb2ludGVyLgorCisKK1dhdGNoZG9nCistLS0tLS0tLQorCitBIHdhdGNoZG9nIHRpbWVyIGlzIHByb3ZpZGVkIHRoYXQgaW1wbGVtZW50cyB0aGUgTGludXgtc3RhbmRhcmQKK3dhdGNoZG9nIHRpbWVyIGludGVyZmFjZS4gIEl0IGhhcyB0aHJlZSBtb2R1bGUgcGFyYW1ldGVycyB0aGF0IGNhbiBiZQordXNlZCB0byBjb250cm9sIGl0OgorCisgIG1vZHByb2JlIGlwbWlfd2F0Y2hkb2cgdGltZW91dD08dD4gcHJldGltZW91dD08dD4gYWN0aW9uPTxhY3Rpb24gdHlwZT4KKyAgICAgIHByZWFjdGlvbj08cHJlYWN0aW9uIHR5cGU+IHByZW9wPTxwcmVvcCB0eXBlPiBzdGFydF9ub3c9eAorICAgICAgbm93YXlvdXQ9eCBpZm51bV90b191c2U9biBwYW5pY193ZHRfdGltZW91dD08dD4KKworaWZudW1fdG9fdXNlIHNwZWNpZmllcyB3aGljaCBpbnRlcmZhY2UgdGhlIHdhdGNoZG9nIHRpbWVyIHNob3VsZCB1c2UuCitUaGUgZGVmYXVsdCBpcyAtMSwgd2hpY2ggbWVhbnMgdG8gcGljayB0aGUgZmlyc3Qgb25lIHJlZ2lzdGVyZWQuCisKK1RoZSB0aW1lb3V0IGlzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0byB0aGUgYWN0aW9uLCBhbmQgdGhlIHByZXRpbWVvdXQKK2lzIHRoZSBhbW91bnQgb2Ygc2Vjb25kcyBiZWZvcmUgdGhlIHJlc2V0IHRoYXQgdGhlIHByZS10aW1lb3V0IHBhbmljIHdpbGwKK29jY3VyIChpZiBwcmV0aW1lb3V0IGlzIHplcm8sIHRoZW4gcHJldGltZW91dCB3aWxsIG5vdCBiZSBlbmFibGVkKS4gIE5vdGUKK3RoYXQgdGhlIHByZXRpbWVvdXQgaXMgdGhlIHRpbWUgYmVmb3JlIHRoZSBmaW5hbCB0aW1lb3V0LiAgU28gaWYgdGhlCit0aW1lb3V0IGlzIDUwIHNlY29uZHMgYW5kIHRoZSBwcmV0aW1lb3V0IGlzIDEwIHNlY29uZHMsIHRoZW4gdGhlIHByZXRpbWVvdXQKK3dpbGwgb2NjdXIgaW4gNDAgc2Vjb25kICgxMCBzZWNvbmRzIGJlZm9yZSB0aGUgdGltZW91dCkuIFRoZSBwYW5pY193ZHRfdGltZW91dAoraXMgdGhlIHZhbHVlIG9mIHRpbWVvdXQgd2hpY2ggaXMgc2V0IG9uIGtlcm5lbCBwYW5pYywgaW4gb3JkZXIgdG8gbGV0IGFjdGlvbnMKK3N1Y2ggYXMga2R1bXAgdG8gb2NjdXIgZHVyaW5nIHBhbmljLgorCitUaGUgYWN0aW9uIG1heSBiZSAicmVzZXQiLCAicG93ZXJfY3ljbGUiLCBvciAicG93ZXJfb2ZmIiwgYW5kCitzcGVjaWZpZXMgd2hhdCB0byBkbyB3aGVuIHRoZSB0aW1lciB0aW1lcyBvdXQsIGFuZCBkZWZhdWx0cyB0bworInJlc2V0Ii4KKworVGhlIHByZWFjdGlvbiBtYXkgYmUgInByZV9zbWkiIGZvciBhbiBpbmRpY2F0aW9uIHRocm91Z2ggdGhlIFNNSQoraW50ZXJmYWNlLCAicHJlX2ludCIgZm9yIGFuIGluZGljYXRpb24gdGhyb3VnaCB0aGUgU01JIHdpdGggYW4KK2ludGVycnVwdHMsIGFuZCAicHJlX25taSIgZm9yIGEgTk1JIG9uIGEgcHJlYWN0aW9uLiAgVGhpcyBpcyBob3cKK3RoZSBkcml2ZXIgaXMgaW5mb3JtZWQgb2YgdGhlIHByZXRpbWVvdXQuCisKK1RoZSBwcmVvcCBtYXkgYmUgc2V0IHRvICJwcmVvcF9ub25lIiBmb3Igbm8gb3BlcmF0aW9uIG9uIGEgcHJldGltZW91dCwKKyJwcmVvcF9wYW5pYyIgdG8gc2V0IHRoZSBwcmVvcGVyYXRpb24gdG8gcGFuaWMsIG9yICJwcmVvcF9naXZlX2RhdGEiCit0byBwcm92aWRlIGRhdGEgdG8gcmVhZCBmcm9tIHRoZSB3YXRjaGRvZyBkZXZpY2Ugd2hlbiB0aGUgcHJldGltZW91dAorb2NjdXJzLiAgQSAicHJlX25taSIgc2V0dGluZyBDQU5OT1QgYmUgdXNlZCB3aXRoICJwcmVvcF9naXZlX2RhdGEiCitiZWNhdXNlIHlvdSBjYW4ndCBkbyBkYXRhIG9wZXJhdGlvbnMgZnJvbSBhbiBOTUkuCisKK1doZW4gcHJlb3AgaXMgc2V0IHRvICJwcmVvcF9naXZlX2RhdGEiLCBvbmUgYnl0ZSBjb21lcyByZWFkeSB0byByZWFkCitvbiB0aGUgZGV2aWNlIHdoZW4gdGhlIHByZXRpbWVvdXQgb2NjdXJzLiAgU2VsZWN0IGFuZCBmYXN5bmMgd29yayBvbgordGhlIGRldmljZSwgYXMgd2VsbC4KKworSWYgc3RhcnRfbm93IGlzIHNldCB0byAxLCB0aGUgd2F0Y2hkb2cgdGltZXIgd2lsbCBzdGFydCBydW5uaW5nIGFzCitzb29uIGFzIHRoZSBkcml2ZXIgaXMgbG9hZGVkLgorCitJZiBub3dheW91dCBpcyBzZXQgdG8gMSwgdGhlIHdhdGNoZG9nIHRpbWVyIHdpbGwgbm90IHN0b3Agd2hlbiB0aGUKK3dhdGNoZG9nIGRldmljZSBpcyBjbG9zZWQuICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBub3dheW91dCBpcyB0cnVlCitpZiB0aGUgQ09ORklHX1dBVENIRE9HX05PV0FZT1VUIG9wdGlvbiBpcyBlbmFibGVkLCBvciBmYWxzZSBpZiBub3QuCisKK1doZW4gY29tcGlsZWQgaW50byB0aGUga2VybmVsLCB0aGUga2VybmVsIGNvbW1hbmQgbGluZSBpcyBhdmFpbGFibGUKK2ZvciBjb25maWd1cmluZyB0aGUgd2F0Y2hkb2c6CisKKyAgaXBtaV93YXRjaGRvZy50aW1lb3V0PTx0PiBpcG1pX3dhdGNoZG9nLnByZXRpbWVvdXQ9PHQ+CisJaXBtaV93YXRjaGRvZy5hY3Rpb249PGFjdGlvbiB0eXBlPgorCWlwbWlfd2F0Y2hkb2cucHJlYWN0aW9uPTxwcmVhY3Rpb24gdHlwZT4KKwlpcG1pX3dhdGNoZG9nLnByZW9wPTxwcmVvcCB0eXBlPgorCWlwbWlfd2F0Y2hkb2cuc3RhcnRfbm93PXgKKwlpcG1pX3dhdGNoZG9nLm5vd2F5b3V0PXgKKwlpcG1pX3dhdGNoZG9nLnBhbmljX3dkdF90aW1lb3V0PTx0PgorCitUaGUgb3B0aW9ucyBhcmUgdGhlIHNhbWUgYXMgdGhlIG1vZHVsZSBwYXJhbWV0ZXIgb3B0aW9ucy4KKworVGhlIHdhdGNoZG9nIHdpbGwgcGFuaWMgYW5kIHN0YXJ0IGEgMTIwIHNlY29uZCByZXNldCB0aW1lb3V0IGlmIGl0CitnZXRzIGEgcHJlLWFjdGlvbi4gIER1cmluZyBhIHBhbmljIG9yIGEgcmVib290LCB0aGUgd2F0Y2hkb2cgd2lsbAorc3RhcnQgYSAxMjAgdGltZXIgaWYgaXQgaXMgcnVubmluZyB0byBtYWtlIHN1cmUgdGhlIHJlYm9vdCBvY2N1cnMuCisKK05vdGUgdGhhdCBpZiB5b3UgdXNlIHRoZSBOTUkgcHJlYWN0aW9uIGZvciB0aGUgd2F0Y2hkb2csIHlvdSBNVVNUIE5PVAordXNlIHRoZSBubWkgd2F0Y2hkb2cuICBUaGVyZSBpcyBubyByZWFzb25hYmxlIHdheSB0byB0ZWxsIGlmIGFuIE5NSQorY29tZXMgZnJvbSB0aGUgSVBNSSBjb250cm9sbGVyLCBzbyBpdCBtdXN0IGFzc3VtZSB0aGF0IGlmIGl0IGdldHMgYW4KK290aGVyd2lzZSB1bmhhbmRsZWQgTk1JLCBpdCBtdXN0IGJlIGZyb20gSVBNSSBhbmQgaXQgd2lsbCBwYW5pYworaW1tZWRpYXRlbHkuCisKK09uY2UgeW91IG9wZW4gdGhlIHdhdGNoZG9nIHRpbWVyLCB5b3UgbXVzdCB3cml0ZSBhICdWJyBjaGFyYWN0ZXIgdG8gdGhlCitkZXZpY2UgdG8gY2xvc2UgaXQsIG9yIHRoZSB0aW1lciB3aWxsIG5vdCBzdG9wLiAgVGhpcyBpcyBhIG5ldyBzZW1hbnRpYworZm9yIHRoZSBkcml2ZXIsIGJ1dCBtYWtlcyBpdCBjb25zaXN0ZW50IHdpdGggdGhlIHJlc3Qgb2YgdGhlIHdhdGNoZG9nCitkcml2ZXJzIGluIExpbnV4LgorCisKK1BhbmljIFRpbWVvdXRzCistLS0tLS0tLS0tLS0tLQorCitUaGUgT3BlbklQTUkgZHJpdmVyIHN1cHBvcnRzIHRoZSBhYmlsaXR5IHRvIHB1dCBzZW1pLWN1c3RvbSBhbmQgY3VzdG9tCitldmVudHMgaW4gdGhlIHN5c3RlbSBldmVudCBsb2cgaWYgYSBwYW5pYyBvY2N1cnMuICBpZiB5b3UgZW5hYmxlIHRoZQorJ0dlbmVyYXRlIGEgcGFuaWMgZXZlbnQgdG8gYWxsIEJNQ3Mgb24gYSBwYW5pYycgb3B0aW9uLCB5b3Ugd2lsbCBnZXQKK29uZSBldmVudCBvbiBhIHBhbmljIGluIGEgc3RhbmRhcmQgSVBNSSBldmVudCBmb3JtYXQuICBJZiB5b3UgZW5hYmxlCit0aGUgJ0dlbmVyYXRlIE9FTSBldmVudHMgY29udGFpbmluZyB0aGUgcGFuaWMgc3RyaW5nJyBvcHRpb24sIHlvdSB3aWxsCithbHNvIGdldCBhIGJ1bmNoIG9mIE9FTSBldmVudHMgaG9sZGluZyB0aGUgcGFuaWMgc3RyaW5nLgorCisKK1RoZSBmaWVsZCBzZXR0aW5ncyBvZiB0aGUgZXZlbnRzIGFyZToKKyogR2VuZXJhdG9yIElEOiAweDIxIChrZXJuZWwpCisqIEV2TSBSZXY6IDB4MDMgKHRoaXMgZXZlbnQgaXMgZm9ybWF0dGluZyBpbiBJUE1JIDEuMCBmb3JtYXQpCisqIFNlbnNvciBUeXBlOiAweDIwIChPUyBjcml0aWNhbCBzdG9wIHNlbnNvcikKKyogU2Vuc29yICM6IFRoZSBmaXJzdCBieXRlIG9mIHRoZSBwYW5pYyBzdHJpbmcgKDAgaWYgbm8gcGFuaWMgc3RyaW5nKQorKiBFdmVudCBEaXIgfCBFdmVudCBUeXBlOiAweDZmIChBc3NlcnRpb24sIHNlbnNvci1zcGVjaWZpYyBldmVudCBpbmZvKQorKiBFdmVudCBEYXRhIDE6IDB4YTEgKFJ1bnRpbWUgc3RvcCBpbiBPRU0gYnl0ZXMgMiBhbmQgMykKKyogRXZlbnQgZGF0YSAyOiBzZWNvbmQgYnl0ZSBvZiBwYW5pYyBzdHJpbmcKKyogRXZlbnQgZGF0YSAzOiB0aGlyZCBieXRlIG9mIHBhbmljIHN0cmluZworU2VlIHRoZSBJUE1JIHNwZWMgZm9yIHRoZSBkZXRhaWxzIG9mIHRoZSBldmVudCBsYXlvdXQuICBUaGlzIGV2ZW50IGlzCithbHdheXMgc2VudCB0byB0aGUgbG9jYWwgbWFuYWdlbWVudCBjb250cm9sbGVyLiAgSXQgd2lsbCBoYW5kbGUgcm91dGluZwordGhlIG1lc3NhZ2UgdG8gdGhlIHJpZ2h0IHBsYWNlCisKK090aGVyIE9FTSBldmVudHMgaGF2ZSB0aGUgZm9sbG93aW5nIGZvcm1hdDoKK1JlY29yZCBJRCAoYnl0ZXMgMC0xKTogU2V0IGJ5IHRoZSBTRUwuCitSZWNvcmQgdHlwZSAoYnl0ZSAyKTogMHhmMCAoT0VNIG5vbi10aW1lc3RhbXBlZCkKK2J5dGUgMzogVGhlIHNsYXZlIGFkZHJlc3Mgb2YgdGhlIGNhcmQgc2F2aW5nIHRoZSBwYW5pYworYnl0ZSA0OiBBIHNlcXVlbmNlIG51bWJlciAoc3RhcnRpbmcgYXQgemVybykKK1RoZSByZXN0IG9mIHRoZSBieXRlcyAoMTEgYnl0ZXMpIGFyZSB0aGUgcGFuaWMgc3RyaW5nLiAgSWYgdGhlIHBhbmljIHN0cmluZworaXMgbG9uZ2VyIHRoYW4gMTEgYnl0ZXMsIG11bHRpcGxlIG1lc3NhZ2VzIHdpbGwgYmUgc2VudCB3aXRoIGluY3JlYXNpbmcKK3NlcXVlbmNlIG51bWJlcnMuCisKK0JlY2F1c2UgeW91IGNhbm5vdCBzZW5kIE9FTSBldmVudHMgdXNpbmcgdGhlIHN0YW5kYXJkIGludGVyZmFjZSwgdGhpcworZnVuY3Rpb24gd2lsbCBhdHRlbXB0IHRvIGZpbmQgYW4gU0VMIGFuZCBhZGQgdGhlIGV2ZW50cyB0aGVyZS4gIEl0Cit3aWxsIGZpcnN0IHF1ZXJ5IHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIGxvY2FsIG1hbmFnZW1lbnQgY29udHJvbGxlci4KK0lmIGl0IGhhcyBhbiBTRUwsIHRoZW4gdGhleSB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgU0VMIG9mIHRoZSBsb2NhbAorbWFuYWdlbWVudCBjb250cm9sbGVyLiAgSWYgbm90LCBhbmQgdGhlIGxvY2FsIG1hbmFnZW1lbnQgY29udHJvbGxlciBpcworYW4gZXZlbnQgZ2VuZXJhdG9yLCB0aGUgZXZlbnQgcmVjZWl2ZXIgZnJvbSB0aGUgbG9jYWwgbWFuYWdlbWVudAorY29udHJvbGxlciB3aWxsIGJlIHF1ZXJpZWQgYW5kIHRoZSBldmVudHMgc2VudCB0byB0aGUgU0VMIG9uIHRoYXQKK2RldmljZS4gIE90aGVyd2lzZSwgdGhlIGV2ZW50cyBnbyBub3doZXJlIHNpbmNlIHRoZXJlIGlzIG5vd2hlcmUgdG8KK3NlbmQgdGhlbS4KKworCitQb3dlcm9mZgorLS0tLS0tLS0KKworSWYgdGhlIHBvd2Vyb2ZmIGNhcGFiaWxpdHkgaXMgc2VsZWN0ZWQsIHRoZSBJUE1JIGRyaXZlciB3aWxsIGluc3RhbGwKK2Egc2h1dGRvd24gZnVuY3Rpb24gaW50byB0aGUgc3RhbmRhcmQgcG93ZXJvZmYgZnVuY3Rpb24gcG9pbnRlci4gIFRoaXMKK2lzIGluIHRoZSBpcG1pX3Bvd2Vyb2ZmIG1vZHVsZS4gIFdoZW4gdGhlIHN5c3RlbSByZXF1ZXN0cyBhIHBvd2VyZG93biwKK2l0IHdpbGwgc2VuZCB0aGUgcHJvcGVyIElQTUkgY29tbWFuZHMgdG8gZG8gdGhpcy4gIFRoaXMgaXMgc3VwcG9ydGVkIG9uCitzZXZlcmFsIHBsYXRmb3Jtcy4KKworVGhlcmUgaXMgYSBtb2R1bGUgcGFyYW1ldGVyIG5hbWVkICJwb3dlcm9mZl9wb3dlcmN5Y2xlIiB0aGF0IG1heQorZWl0aGVyIGJlIHplcm8gKGRvIGEgcG93ZXIgZG93bikgb3Igbm9uLXplcm8gKGRvIGEgcG93ZXIgY3ljbGUsIHBvd2VyCit0aGUgc3lzdGVtIG9mZiwgdGhlbiBwb3dlciBpdCBvbiBpbiBhIGZldyBzZWNvbmRzKS4gIFNldHRpbmcKK2lwbWlfcG93ZXJvZmYucG93ZXJvZmZfY29udHJvbD14IHdpbGwgZG8gdGhlIHNhbWUgdGhpbmcgb24gdGhlIGtlcm5lbAorY29tbWFuZCBsaW5lLiAgVGhlIHBhcmFtZXRlciBpcyBhbHNvIGF2YWlsYWJsZSB2aWEgdGhlIHByb2MgZmlsZXN5c3RlbQoraW4gL3Byb2Mvc3lzL2Rldi9pcG1pL3Bvd2Vyb2ZmX3Bvd2VyY3ljbGUuICBOb3RlIHRoYXQgaWYgdGhlIHN5c3RlbQorZG9lcyBub3Qgc3VwcG9ydCBwb3dlciBjeWNsaW5nLCBpdCB3aWxsIGFsd2F5cyBkbyB0aGUgcG93ZXIgb2ZmLgorCitUaGUgImlmbnVtX3RvX3VzZSIgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGljaCBpbnRlcmZhY2UgdGhlIHBvd2Vyb2ZmCitjb2RlIHNob3VsZCB1c2UuICBUaGUgZGVmYXVsdCBpcyAtMSwgd2hpY2ggbWVhbnMgdG8gcGljayB0aGUgZmlyc3Qgb25lCityZWdpc3RlcmVkLgorCitOb3RlIHRoYXQgaWYgeW91IGhhdmUgQUNQSSBlbmFibGVkLCB0aGUgc3lzdGVtIHdpbGwgcHJlZmVyIHVzaW5nIEFDUEkgdG8KK3Bvd2VyIG9mZi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vSVJRLWFmZmluaXR5LnR4dCBiL0RvY3VtZW50YXRpb24vSVJRLWFmZmluaXR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWE2NzUxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9JUlEtYWZmaW5pdHkudHh0CkBAIC0wLDAgKzEsNjUgQEAKK0NoYW5nZUxvZzoKKwlTdGFydGVkIGJ5IEluZ28gTW9sbmFyIDxtaW5nb0ByZWRoYXQuY29tPgorCVVwZGF0ZSBieSBNYXggS3Jhc255YW5za3kgPG1heGtAcXVhbGNvbW0uY29tPgorCitTTVAgSVJRIGFmZmluaXR5CisKKy9wcm9jL2lycS9JUlEjL3NtcF9hZmZpbml0eSBhbmQgL3Byb2MvaXJxL0lSUSMvc21wX2FmZmluaXR5X2xpc3Qgc3BlY2lmeQord2hpY2ggdGFyZ2V0IENQVXMgYXJlIHBlcm1pdHRlZCBmb3IgYSBnaXZlbiBJUlEgc291cmNlLiAgSXQncyBhIGJpdG1hc2sKKyhzbXBfYWZmaW5pdHkpIG9yIGNwdSBsaXN0IChzbXBfYWZmaW5pdHlfbGlzdCkgb2YgYWxsb3dlZCBDUFVzLiAgSXQncyBub3QKK2FsbG93ZWQgdG8gdHVybiBvZmYgYWxsIENQVXMsIGFuZCBpZiBhbiBJUlEgY29udHJvbGxlciBkb2VzIG5vdCBzdXBwb3J0CitJUlEgYWZmaW5pdHkgdGhlbiB0aGUgdmFsdWUgd2lsbCBub3QgY2hhbmdlIGZyb20gdGhlIGRlZmF1bHQgb2YgYWxsIGNwdXMuCisKKy9wcm9jL2lycS9kZWZhdWx0X3NtcF9hZmZpbml0eSBzcGVjaWZpZXMgZGVmYXVsdCBhZmZpbml0eSBtYXNrIHRoYXQgYXBwbGllcwordG8gYWxsIG5vbi1hY3RpdmUgSVJRcy4gT25jZSBJUlEgaXMgYWxsb2NhdGVkL2FjdGl2YXRlZCBpdHMgYWZmaW5pdHkgYml0bWFzaword2lsbCBiZSBzZXQgdG8gdGhlIGRlZmF1bHQgbWFzay4gSXQgY2FuIHRoZW4gYmUgY2hhbmdlZCBhcyBkZXNjcmliZWQgYWJvdmUuCitEZWZhdWx0IG1hc2sgaXMgMHhmZmZmZmZmZi4KKworSGVyZSBpcyBhbiBleGFtcGxlIG9mIHJlc3RyaWN0aW5nIElSUTQ0IChldGgxKSB0byBDUFUwLTMgdGhlbiByZXN0cmljdGluZworaXQgdG8gQ1BVNC03ICh0aGlzIGlzIGFuIDgtQ1BVIFNNUCBib3gpOgorCitbcm9vdEBtb29uIDQ0XSMgY2QgL3Byb2MvaXJxLzQ0Citbcm9vdEBtb29uIDQ0XSMgY2F0IHNtcF9hZmZpbml0eQorZmZmZmZmZmYKKworW3Jvb3RAbW9vbiA0NF0jIGVjaG8gMGYgPiBzbXBfYWZmaW5pdHkKK1tyb290QG1vb24gNDRdIyBjYXQgc21wX2FmZmluaXR5CiswMDAwMDAwZgorW3Jvb3RAbW9vbiA0NF0jIHBpbmcgLWYgaAorUElORyBoZWxsICgxOTUuNC43LjMpOiA1NiBkYXRhIGJ5dGVzCisuLi4KKy0tLSBoZWxsIHBpbmcgc3RhdGlzdGljcyAtLS0KKzYwMjkgcGFja2V0cyB0cmFuc21pdHRlZCwgNjAyNyBwYWNrZXRzIHJlY2VpdmVkLCAwJSBwYWNrZXQgbG9zcworcm91bmQtdHJpcCBtaW4vYXZnL21heCA9IDAuMS8wLjEvMC40IG1zCitbcm9vdEBtb29uIDQ0XSMgY2F0IC9wcm9jL2ludGVycnVwdHMgfCBncmVwICdDUFVcfDQ0OicKKyAgICAgICAgICAgQ1BVMCAgICAgICBDUFUxICAgICAgIENQVTIgICAgICAgQ1BVMyAgICAgIENQVTQgICAgICAgQ1BVNSAgICAgICAgQ1BVNiAgICAgICBDUFU3CisgNDQ6ICAgICAgIDEwNjggICAgICAgMTc4NSAgICAgICAxNzg1ICAgICAgIDE3ODMgICAgICAgICAwICAgICAgICAgIDAgICAgICAgICAgIDAgICAgICAgICAwICAgIElPLUFQSUMtbGV2ZWwgIGV0aDEKKworQXMgY2FuIGJlIHNlZW4gZnJvbSB0aGUgbGluZSBhYm92ZSBJUlE0NCB3YXMgZGVsaXZlcmVkIG9ubHkgdG8gdGhlIGZpcnN0IGZvdXIKK3Byb2Nlc3NvcnMgKDAtMykuCitOb3cgbGV0cyByZXN0cmljdCB0aGF0IElSUSB0byBDUFUoNC03KS4KKworW3Jvb3RAbW9vbiA0NF0jIGVjaG8gZjAgPiBzbXBfYWZmaW5pdHkKK1tyb290QG1vb24gNDRdIyBjYXQgc21wX2FmZmluaXR5CiswMDAwMDBmMAorW3Jvb3RAbW9vbiA0NF0jIHBpbmcgLWYgaAorUElORyBoZWxsICgxOTUuNC43LjMpOiA1NiBkYXRhIGJ5dGVzCisuLgorLS0tIGhlbGwgcGluZyBzdGF0aXN0aWNzIC0tLQorMjc3OSBwYWNrZXRzIHRyYW5zbWl0dGVkLCAyNzc3IHBhY2tldHMgcmVjZWl2ZWQsIDAlIHBhY2tldCBsb3NzCityb3VuZC10cmlwIG1pbi9hdmcvbWF4ID0gMC4xLzAuNS81ODUuNCBtcworW3Jvb3RAbW9vbiA0NF0jIGNhdCAvcHJvYy9pbnRlcnJ1cHRzIHwgICdDUFVcfDQ0OicKKyAgICAgICAgICAgQ1BVMCAgICAgICBDUFUxICAgICAgIENQVTIgICAgICAgQ1BVMyAgICAgIENQVTQgICAgICAgQ1BVNSAgICAgICAgQ1BVNiAgICAgICBDUFU3CisgNDQ6ICAgICAgIDEwNjggICAgICAgMTc4NSAgICAgICAxNzg1ICAgICAgIDE3ODMgICAgICAxNzg0ICAgICAgIDEwNjkgICAgICAgIDEwNzAgICAgICAgMTA2OSAgIElPLUFQSUMtbGV2ZWwgIGV0aDEKKworVGhpcyB0aW1lIGFyb3VuZCBJUlE0NCB3YXMgZGVsaXZlcmVkIG9ubHkgdG8gdGhlIGxhc3QgZm91ciBwcm9jZXNzb3JzLgoraS5lIGNvdW50ZXJzIGZvciB0aGUgQ1BVMC0zIGRpZCBub3QgY2hhbmdlLgorCitIZXJlIGlzIGFuIGV4YW1wbGUgb2YgbGltaXRpbmcgdGhhdCBzYW1lIGlycSAoNDQpIHRvIGNwdXMgMTAyNCB0byAxMDMxOgorCitbcm9vdEBtb29uIDQ0XSMgZWNobyAxMDI0LTEwMzEgPiBzbXBfYWZmaW5pdHlfbGlzdAorW3Jvb3RAbW9vbiA0NF0jIGNhdCBzbXBfYWZmaW5pdHlfbGlzdAorMTAyNC0xMDMxCisKK05vdGUgdGhhdCB0byBkbyB0aGlzIHdpdGggYSBiaXRtYXNrIHdvdWxkIHJlcXVpcmUgMzIgYml0bWFza3Mgb2YgemVybwordG8gZm9sbG93IHRoZSBwZXJ0aW5lbnQgb25lLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9JUlEtZG9tYWluLnR4dCBiL0RvY3VtZW50YXRpb24vSVJRLWRvbWFpbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ5OTBiZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vSVJRLWRvbWFpbi50eHQKQEAgLTAsMCArMSwyMjMgQEAKK2lycV9kb21haW4gaW50ZXJydXB0IG51bWJlciBtYXBwaW5nIGxpYnJhcnkKKworVGhlIGN1cnJlbnQgZGVzaWduIG9mIHRoZSBMaW51eCBrZXJuZWwgdXNlcyBhIHNpbmdsZSBsYXJnZSBudW1iZXIKK3NwYWNlIHdoZXJlIGVhY2ggc2VwYXJhdGUgSVJRIHNvdXJjZSBpcyBhc3NpZ25lZCBhIGRpZmZlcmVudCBudW1iZXIuCitUaGlzIGlzIHNpbXBsZSB3aGVuIHRoZXJlIGlzIG9ubHkgb25lIGludGVycnVwdCBjb250cm9sbGVyLCBidXQgaW4KK3N5c3RlbXMgd2l0aCBtdWx0aXBsZSBpbnRlcnJ1cHQgY29udHJvbGxlcnMgdGhlIGtlcm5lbCBtdXN0IGVuc3VyZQordGhhdCBlYWNoIG9uZSBnZXRzIGFzc2lnbmVkIG5vbi1vdmVybGFwcGluZyBhbGxvY2F0aW9ucyBvZiBMaW51eAorSVJRIG51bWJlcnMuCisKK1RoZSBudW1iZXIgb2YgaW50ZXJydXB0IGNvbnRyb2xsZXJzIHJlZ2lzdGVyZWQgYXMgdW5pcXVlIGlycWNoaXBzCitzaG93IGEgcmlzaW5nIHRlbmRlbmN5OiBmb3IgZXhhbXBsZSBzdWJkcml2ZXJzIG9mIGRpZmZlcmVudCBraW5kcworc3VjaCBhcyBHUElPIGNvbnRyb2xsZXJzIGF2b2lkIHJlaW1wbGVtZW50aW5nIGlkZW50aWNhbCBjYWxsYmFjaworbWVjaGFuaXNtcyBhcyB0aGUgSVJRIGNvcmUgc3lzdGVtIGJ5IG1vZGVsbGluZyB0aGVpciBpbnRlcnJ1cHQKK2hhbmRsZXJzIGFzIGlycWNoaXBzLCBpLmUuIGluIGVmZmVjdCBjYXNjYWRpbmcgaW50ZXJydXB0IGNvbnRyb2xsZXJzLgorCitIZXJlIHRoZSBpbnRlcnJ1cHQgbnVtYmVyIGxvb3NlIGFsbCBraW5kIG9mIGNvcnJlc3BvbmRlbmNlIHRvCitoYXJkd2FyZSBpbnRlcnJ1cHQgbnVtYmVyczogd2hlcmVhcyBpbiB0aGUgcGFzdCwgSVJRIG51bWJlcnMgY291bGQKK2JlIGNob3NlbiBzbyB0aGV5IG1hdGNoZWQgdGhlIGhhcmR3YXJlIElSUSBsaW5lIGludG8gdGhlIHJvb3QKK2ludGVycnVwdCBjb250cm9sbGVyIChpLmUuIHRoZSBjb21wb25lbnQgYWN0dWFsbHkgZmlyZWluZyB0aGUKK2ludGVycnVwdCBsaW5lIHRvIHRoZSBDUFUpIG5vd2FkYXlzIHRoaXMgbnVtYmVyIGlzIGp1c3QgYSBudW1iZXIuCisKK0ZvciB0aGlzIHJlYXNvbiB3ZSBuZWVkIGEgbWVjaGFuaXNtIHRvIHNlcGFyYXRlIGNvbnRyb2xsZXItbG9jYWwKK2ludGVycnVwdCBudW1iZXJzLCBjYWxsZWQgaGFyZHdhcmUgaXJxJ3MsIGZyb20gTGludXggSVJRIG51bWJlcnMuCisKK1RoZSBpcnFfYWxsb2NfZGVzYyooKSBhbmQgaXJxX2ZyZWVfZGVzYyooKSBBUElzIHByb3ZpZGUgYWxsb2NhdGlvbiBvZgoraXJxIG51bWJlcnMsIGJ1dCB0aGV5IGRvbid0IHByb3ZpZGUgYW55IHN1cHBvcnQgZm9yIHJldmVyc2UgbWFwcGluZyBvZgordGhlIGNvbnRyb2xsZXItbG9jYWwgSVJRIChod2lycSkgbnVtYmVyIGludG8gdGhlIExpbnV4IElSUSBudW1iZXIKK3NwYWNlLgorCitUaGUgaXJxX2RvbWFpbiBsaWJyYXJ5IGFkZHMgbWFwcGluZyBiZXR3ZWVuIGh3aXJxIGFuZCBJUlEgbnVtYmVycyBvbgordG9wIG9mIHRoZSBpcnFfYWxsb2NfZGVzYyooKSBBUEkuICBBbiBpcnFfZG9tYWluIHRvIG1hbmFnZSBtYXBwaW5nIGlzCitwcmVmZXJyZWQgb3ZlciBpbnRlcnJ1cHQgY29udHJvbGxlciBkcml2ZXJzIG9wZW4gY29kaW5nIHRoZWlyIG93bgorcmV2ZXJzZSBtYXBwaW5nIHNjaGVtZS4KKworaXJxX2RvbWFpbiBhbHNvIGltcGxlbWVudHMgdHJhbnNsYXRpb24gZnJvbSBhbiBhYnN0cmFjdCBpcnFfZndzcGVjCitzdHJ1Y3R1cmUgdG8gaHdpcnEgbnVtYmVycyAoRGV2aWNlIFRyZWUgYW5kIEFDUEkgR1NJIHNvIGZhciksIGFuZCBjYW4KK2JlIGVhc2lseSBleHRlbmRlZCB0byBzdXBwb3J0IG90aGVyIElSUSB0b3BvbG9neSBkYXRhIHNvdXJjZXMuCisKKz09PSBpcnFfZG9tYWluIHVzYWdlID09PQorQW4gaW50ZXJydXB0IGNvbnRyb2xsZXIgZHJpdmVyIGNyZWF0ZXMgYW5kIHJlZ2lzdGVycyBhbiBpcnFfZG9tYWluIGJ5CitjYWxsaW5nIG9uZSBvZiB0aGUgaXJxX2RvbWFpbl9hZGRfKigpIGZ1bmN0aW9ucyAoZWFjaCBtYXBwaW5nIG1ldGhvZAoraGFzIGEgZGlmZmVyZW50IGFsbG9jYXRvciBmdW5jdGlvbiwgbW9yZSBvbiB0aGF0IGxhdGVyKS4gIFRoZSBmdW5jdGlvbgord2lsbCByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBpcnFfZG9tYWluIG9uIHN1Y2Nlc3MuICBUaGUgY2FsbGVyIG11c3QKK3Byb3ZpZGUgdGhlIGFsbG9jYXRvciBmdW5jdGlvbiB3aXRoIGFuIGlycV9kb21haW5fb3BzIHN0cnVjdHVyZS4KKworSW4gbW9zdCBjYXNlcywgdGhlIGlycV9kb21haW4gd2lsbCBiZWdpbiBlbXB0eSB3aXRob3V0IGFueSBtYXBwaW5ncworYmV0d2VlbiBod2lycSBhbmQgSVJRIG51bWJlcnMuICBNYXBwaW5ncyBhcmUgYWRkZWQgdG8gdGhlIGlycV9kb21haW4KK2J5IGNhbGxpbmcgaXJxX2NyZWF0ZV9tYXBwaW5nKCkgd2hpY2ggYWNjZXB0cyB0aGUgaXJxX2RvbWFpbiBhbmQgYQoraHdpcnEgbnVtYmVyIGFzIGFyZ3VtZW50cy4gIElmIGEgbWFwcGluZyBmb3IgdGhlIGh3aXJxIGRvZXNuJ3QgYWxyZWFkeQorZXhpc3QgdGhlbiBpdCB3aWxsIGFsbG9jYXRlIGEgbmV3IExpbnV4IGlycV9kZXNjLCBhc3NvY2lhdGUgaXQgd2l0aAordGhlIGh3aXJxLCBhbmQgY2FsbCB0aGUgLm1hcCgpIGNhbGxiYWNrIHNvIHRoZSBkcml2ZXIgY2FuIHBlcmZvcm0gYW55CityZXF1aXJlZCBoYXJkd2FyZSBzZXR1cC4KKworV2hlbiBhbiBpbnRlcnJ1cHQgaXMgcmVjZWl2ZWQsIGlycV9maW5kX21hcHBpbmcoKSBmdW5jdGlvbiBzaG91bGQKK2JlIHVzZWQgdG8gZmluZCB0aGUgTGludXggSVJRIG51bWJlciBmcm9tIHRoZSBod2lycSBudW1iZXIuCisKK1RoZSBpcnFfY3JlYXRlX21hcHBpbmcoKSBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCAqYXRsZWFzdCBvbmNlKgorYmVmb3JlIGFueSBjYWxsIHRvIGlycV9maW5kX21hcHBpbmcoKSwgbGVzdCB0aGUgZGVzY3JpcHRvciB3aWxsIG5vdAorYmUgYWxsb2NhdGVkLgorCitJZiB0aGUgZHJpdmVyIGhhcyB0aGUgTGludXggSVJRIG51bWJlciBvciB0aGUgaXJxX2RhdGEgcG9pbnRlciwgYW5kCituZWVkcyB0byBrbm93IHRoZSBhc3NvY2lhdGVkIGh3aXJxIG51bWJlciAoc3VjaCBhcyBpbiB0aGUgaXJxX2NoaXAKK2NhbGxiYWNrcykgdGhlbiBpdCBjYW4gYmUgZGlyZWN0bHkgb2J0YWluZWQgZnJvbSBpcnFfZGF0YS0+aHdpcnEuCisKKz09PSBUeXBlcyBvZiBpcnFfZG9tYWluIG1hcHBpbmdzID09PQorVGhlcmUgYXJlIHNldmVyYWwgbWVjaGFuaXNtcyBhdmFpbGFibGUgZm9yIHJldmVyc2UgbWFwcGluZyBmcm9tIGh3aXJxCit0byBMaW51eCBpcnEsIGFuZCBlYWNoIG1lY2hhbmlzbSB1c2VzIGEgZGlmZmVyZW50IGFsbG9jYXRpb24gZnVuY3Rpb24uCitXaGljaCByZXZlcnNlIG1hcCB0eXBlIHNob3VsZCBiZSB1c2VkIGRlcGVuZHMgb24gdGhlIHVzZSBjYXNlLiAgRWFjaAorb2YgdGhlIHJldmVyc2UgbWFwIHR5cGVzIGFyZSBkZXNjcmliZWQgYmVsb3c6CisKKz09PT0gTGluZWFyID09PT0KK2lycV9kb21haW5fYWRkX2xpbmVhcigpCisKK1RoZSBsaW5lYXIgcmV2ZXJzZSBtYXAgbWFpbnRhaW5zIGEgZml4ZWQgc2l6ZSB0YWJsZSBpbmRleGVkIGJ5IHRoZQoraHdpcnEgbnVtYmVyLiAgV2hlbiBhIGh3aXJxIGlzIG1hcHBlZCwgYW4gaXJxX2Rlc2MgaXMgYWxsb2NhdGVkIGZvcgordGhlIGh3aXJxLCBhbmQgdGhlIElSUSBudW1iZXIgaXMgc3RvcmVkIGluIHRoZSB0YWJsZS4KKworVGhlIExpbmVhciBtYXAgaXMgYSBnb29kIGNob2ljZSB3aGVuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBod2lycXMgaXMKK2ZpeGVkIGFuZCBhIHJlbGF0aXZlbHkgc21hbGwgbnVtYmVyICh+IDwgMjU2KS4gIFRoZSBhZHZhbnRhZ2VzIG9mIHRoaXMKK21hcCBhcmUgZml4ZWQgdGltZSBsb29rdXAgZm9yIElSUSBudW1iZXJzLCBhbmQgaXJxX2Rlc2NzIGFyZSBvbmx5CithbGxvY2F0ZWQgZm9yIGluLXVzZSBJUlFzLiAgVGhlIGRpc2FkdmFudGFnZSBpcyB0aGF0IHRoZSB0YWJsZSBtdXN0IGJlCithcyBsYXJnZSBhcyB0aGUgbGFyZ2VzdCBwb3NzaWJsZSBod2lycSBudW1iZXIuCisKK1RoZSBtYWpvcml0eSBvZiBkcml2ZXJzIHNob3VsZCB1c2UgdGhlIGxpbmVhciBtYXAuCisKKz09PT0gVHJlZSA9PT09CitpcnFfZG9tYWluX2FkZF90cmVlKCkKKworVGhlIGlycV9kb21haW4gbWFpbnRhaW5zIGEgcmFkaXggdHJlZSBtYXAgZnJvbSBod2lycSBudW1iZXJzIHRvIExpbnV4CitJUlFzLiAgV2hlbiBhbiBod2lycSBpcyBtYXBwZWQsIGFuIGlycV9kZXNjIGlzIGFsbG9jYXRlZCBhbmQgdGhlCitod2lycSBpcyB1c2VkIGFzIHRoZSBsb29rdXAga2V5IGZvciB0aGUgcmFkaXggdHJlZS4KKworVGhlIHRyZWUgbWFwIGlzIGEgZ29vZCBjaG9pY2UgaWYgdGhlIGh3aXJxIG51bWJlciBjYW4gYmUgdmVyeSBsYXJnZQorc2luY2UgaXQgZG9lc24ndCBuZWVkIHRvIGFsbG9jYXRlIGEgdGFibGUgYXMgbGFyZ2UgYXMgdGhlIGxhcmdlc3QKK2h3aXJxIG51bWJlci4gIFRoZSBkaXNhZHZhbnRhZ2UgaXMgdGhhdCBod2lycSB0byBJUlEgbnVtYmVyIGxvb2t1cCBpcworZGVwZW5kZW50IG9uIGhvdyBtYW55IGVudHJpZXMgYXJlIGluIHRoZSB0YWJsZS4KKworVmVyeSBmZXcgZHJpdmVycyBzaG91bGQgbmVlZCB0aGlzIG1hcHBpbmcuCisKKz09PT0gTm8gTWFwID09PS0KK2lycV9kb21haW5fYWRkX25vbWFwKCkKKworVGhlIE5vIE1hcCBtYXBwaW5nIGlzIHRvIGJlIHVzZWQgd2hlbiB0aGUgaHdpcnEgbnVtYmVyIGlzCitwcm9ncmFtbWFibGUgaW4gdGhlIGhhcmR3YXJlLiAgSW4gdGhpcyBjYXNlIGl0IGlzIGJlc3QgdG8gcHJvZ3JhbSB0aGUKK0xpbnV4IElSUSBudW1iZXIgaW50byB0aGUgaGFyZHdhcmUgaXRzZWxmIHNvIHRoYXQgbm8gbWFwcGluZyBpcworcmVxdWlyZWQuICBDYWxsaW5nIGlycV9jcmVhdGVfZGlyZWN0X21hcHBpbmcoKSB3aWxsIGFsbG9jYXRlIGEgTGludXgKK0lSUSBudW1iZXIgYW5kIGNhbGwgdGhlIC5tYXAoKSBjYWxsYmFjayBzbyB0aGF0IGRyaXZlciBjYW4gcHJvZ3JhbSB0aGUKK0xpbnV4IElSUSBudW1iZXIgaW50byB0aGUgaGFyZHdhcmUuCisKK01vc3QgZHJpdmVycyBjYW5ub3QgdXNlIHRoaXMgbWFwcGluZy4KKworPT09PSBMZWdhY3kgPT09PQoraXJxX2RvbWFpbl9hZGRfc2ltcGxlKCkKK2lycV9kb21haW5fYWRkX2xlZ2FjeSgpCitpcnFfZG9tYWluX2FkZF9sZWdhY3lfaXNhKCkKKworVGhlIExlZ2FjeSBtYXBwaW5nIGlzIGEgc3BlY2lhbCBjYXNlIGZvciBkcml2ZXJzIHRoYXQgYWxyZWFkeSBoYXZlIGEKK3JhbmdlIG9mIGlycV9kZXNjcyBhbGxvY2F0ZWQgZm9yIHRoZSBod2lycXMuICBJdCBpcyB1c2VkIHdoZW4gdGhlCitkcml2ZXIgY2Fubm90IGJlIGltbWVkaWF0ZWx5IGNvbnZlcnRlZCB0byB1c2UgdGhlIGxpbmVhciBtYXBwaW5nLiAgRm9yCitleGFtcGxlLCBtYW55IGVtYmVkZGVkIHN5c3RlbSBib2FyZCBzdXBwb3J0IGZpbGVzIHVzZSBhIHNldCBvZiAjZGVmaW5lcworZm9yIElSUSBudW1iZXJzIHRoYXQgYXJlIHBhc3NlZCB0byBzdHJ1Y3QgZGV2aWNlIHJlZ2lzdHJhdGlvbnMuICBJbiB0aGF0CitjYXNlIHRoZSBMaW51eCBJUlEgbnVtYmVycyBjYW5ub3QgYmUgZHluYW1pY2FsbHkgYXNzaWduZWQgYW5kIHRoZSBsZWdhY3kKK21hcHBpbmcgc2hvdWxkIGJlIHVzZWQuCisKK1RoZSBsZWdhY3kgbWFwIGFzc3VtZXMgYSBjb250aWd1b3VzIHJhbmdlIG9mIElSUSBudW1iZXJzIGhhcyBhbHJlYWR5CitiZWVuIGFsbG9jYXRlZCBmb3IgdGhlIGNvbnRyb2xsZXIgYW5kIHRoYXQgdGhlIElSUSBudW1iZXIgY2FuIGJlCitjYWxjdWxhdGVkIGJ5IGFkZGluZyBhIGZpeGVkIG9mZnNldCB0byB0aGUgaHdpcnEgbnVtYmVyLCBhbmQKK3Zpc2EtdmVyc2EuICBUaGUgZGlzYWR2YW50YWdlIGlzIHRoYXQgaXQgcmVxdWlyZXMgdGhlIGludGVycnVwdAorY29udHJvbGxlciB0byBtYW5hZ2UgSVJRIGFsbG9jYXRpb25zIGFuZCBpdCByZXF1aXJlcyBhbiBpcnFfZGVzYyB0byBiZQorYWxsb2NhdGVkIGZvciBldmVyeSBod2lycSwgZXZlbiBpZiBpdCBpcyB1bnVzZWQuCisKK1RoZSBsZWdhY3kgbWFwIHNob3VsZCBvbmx5IGJlIHVzZWQgaWYgZml4ZWQgSVJRIG1hcHBpbmdzIG11c3QgYmUKK3N1cHBvcnRlZC4gIEZvciBleGFtcGxlLCBJU0EgY29udHJvbGxlcnMgd291bGQgdXNlIHRoZSBsZWdhY3kgbWFwIGZvcgorbWFwcGluZyBMaW51eCBJUlFzIDAtMTUgc28gdGhhdCBleGlzdGluZyBJU0EgZHJpdmVycyBnZXQgdGhlIGNvcnJlY3QgSVJRCitudW1iZXJzLgorCitNb3N0IHVzZXJzIG9mIGxlZ2FjeSBtYXBwaW5ncyBzaG91bGQgdXNlIGlycV9kb21haW5fYWRkX3NpbXBsZSgpIHdoaWNoCit3aWxsIHVzZSBhIGxlZ2FjeSBkb21haW4gb25seSBpZiBhbiBJUlEgcmFuZ2UgaXMgc3VwcGxpZWQgYnkgdGhlCitzeXN0ZW0gYW5kIHdpbGwgb3RoZXJ3aXNlIHVzZSBhIGxpbmVhciBkb21haW4gbWFwcGluZy4gVGhlIHNlbWFudGljcworb2YgdGhpcyBjYWxsIGFyZSBzdWNoIHRoYXQgaWYgYW4gSVJRIHJhbmdlIGlzIHNwZWNpZmllZCB0aGVuCitkZXNjcmlwdG9ycyB3aWxsIGJlIGFsbG9jYXRlZCBvbi10aGUtZmx5IGZvciBpdCwgYW5kIGlmIG5vIHJhbmdlIGlzCitzcGVjaWZpZWQgaXQgd2lsbCBmYWxsIHRocm91Z2ggdG8gaXJxX2RvbWFpbl9hZGRfbGluZWFyKCkgd2hpY2ggbWVhbnMKKypubyogaXJxIGRlc2NyaXB0b3JzIHdpbGwgYmUgYWxsb2NhdGVkLgorCitBIHR5cGljYWwgdXNlIGNhc2UgZm9yIHNpbXBsZSBkb21haW5zIGlzIHdoZXJlIGFuIGlycWNoaXAgcHJvdmlkZXIKK2lzIHN1cHBvcnRpbmcgYm90aCBkeW5hbWljIGFuZCBzdGF0aWMgSVJRIGFzc2lnbm1lbnRzLgorCitJbiBvcmRlciB0byBhdm9pZCBlbmRpbmcgdXAgaW4gYSBzaXR1YXRpb24gd2hlcmUgYSBsaW5lYXIgZG9tYWluIGlzCit1c2VkIGFuZCBubyBkZXNjcmlwdG9yIGdldHMgYWxsb2NhdGVkIGl0IGlzIHZlcnkgaW1wb3J0YW50IHRvIG1ha2Ugc3VyZQordGhhdCB0aGUgZHJpdmVyIHVzaW5nIHRoZSBzaW1wbGUgZG9tYWluIGNhbGwgaXJxX2NyZWF0ZV9tYXBwaW5nKCkKK2JlZm9yZSBhbnkgaXJxX2ZpbmRfbWFwcGluZygpIHNpbmNlIHRoZSBsYXR0ZXIgd2lsbCBhY3R1YWxseSB3b3JrCitmb3IgdGhlIHN0YXRpYyBJUlEgYXNzaWdubWVudCBjYXNlLgorCis9PT09IEhpZXJhcmNoeSBJUlEgZG9tYWluID09PT0KK09uIHNvbWUgYXJjaGl0ZWN0dXJlcywgdGhlcmUgbWF5IGJlIG11bHRpcGxlIGludGVycnVwdCBjb250cm9sbGVycworaW52b2x2ZWQgaW4gZGVsaXZlcmluZyBhbiBpbnRlcnJ1cHQgZnJvbSB0aGUgZGV2aWNlIHRvIHRoZSB0YXJnZXQgQ1BVLgorTGV0J3MgbG9vayBhdCBhIHR5cGljYWwgaW50ZXJydXB0IGRlbGl2ZXJpbmcgcGF0aCBvbiB4ODYgcGxhdGZvcm1zOgorCitEZXZpY2UgLS0+IElPQVBJQyAtPiBJbnRlcnJ1cHQgcmVtYXBwaW5nIENvbnRyb2xsZXIgLT4gTG9jYWwgQVBJQyAtPiBDUFUKKworVGhlcmUgYXJlIHRocmVlIGludGVycnVwdCBjb250cm9sbGVycyBpbnZvbHZlZDoKKzEpIElPQVBJQyBjb250cm9sbGVyCisyKSBJbnRlcnJ1cHQgcmVtYXBwaW5nIGNvbnRyb2xsZXIKKzMpIExvY2FsIEFQSUMgY29udHJvbGxlcgorCitUbyBzdXBwb3J0IHN1Y2ggYSBoYXJkd2FyZSB0b3BvbG9neSBhbmQgbWFrZSBzb2Z0d2FyZSBhcmNoaXRlY3R1cmUgbWF0Y2gKK2hhcmR3YXJlIGFyY2hpdGVjdHVyZSwgYW4gaXJxX2RvbWFpbiBkYXRhIHN0cnVjdHVyZSBpcyBidWlsdCBmb3IgZWFjaAoraW50ZXJydXB0IGNvbnRyb2xsZXIgYW5kIHRob3NlIGlycV9kb21haW5zIGFyZSBvcmdhbml6ZWQgaW50byBoaWVyYXJjaHkuCitXaGVuIGJ1aWxkaW5nIGlycV9kb21haW4gaGllcmFyY2h5LCB0aGUgaXJxX2RvbWFpbiBuZWFyIHRvIHRoZSBkZXZpY2UgaXMKK2NoaWxkIGFuZCB0aGUgaXJxX2RvbWFpbiBuZWFyIHRvIENQVSBpcyBwYXJlbnQuIFNvIGEgaGllcmFyY2h5IHN0cnVjdHVyZQorYXMgYmVsb3cgd2lsbCBiZSBidWlsdCBmb3IgdGhlIGV4YW1wbGUgYWJvdmUuCisJQ1BVIFZlY3RvciBpcnFfZG9tYWluIChyb290IGlycV9kb21haW4gdG8gbWFuYWdlIENQVSB2ZWN0b3JzKQorCQleCisJCXwKKwlJbnRlcnJ1cHQgUmVtYXBwaW5nIGlycV9kb21haW4gKG1hbmFnZSBpcnFfcmVtYXBwaW5nIGVudHJpZXMpCisJCV4KKwkJfAorCUlPQVBJQyBpcnFfZG9tYWluIChtYW5hZ2UgSU9BUElDIGRlbGl2ZXJ5IGVudHJpZXMvcGlucykKKworVGhlcmUgYXJlIGZvdXIgbWFqb3IgaW50ZXJmYWNlcyB0byB1c2UgaGllcmFyY2h5IGlycV9kb21haW46CisxKSBpcnFfZG9tYWluX2FsbG9jX2lycXMoKTogYWxsb2NhdGUgSVJRIGRlc2NyaXB0b3JzIGFuZCBpbnRlcnJ1cHQKKyAgIGNvbnRyb2xsZXIgcmVsYXRlZCByZXNvdXJjZXMgdG8gZGVsaXZlciB0aGVzZSBpbnRlcnJ1cHRzLgorMikgaXJxX2RvbWFpbl9mcmVlX2lycXMoKTogZnJlZSBJUlEgZGVzY3JpcHRvcnMgYW5kIGludGVycnVwdCBjb250cm9sbGVyCisgICByZWxhdGVkIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlc2UgaW50ZXJydXB0cy4KKzMpIGlycV9kb21haW5fYWN0aXZhdGVfaXJxKCk6IGFjdGl2YXRlIGludGVycnVwdCBjb250cm9sbGVyIGhhcmR3YXJlIHRvCisgICBkZWxpdmVyIHRoZSBpbnRlcnJ1cHQuCis0KSBpcnFfZG9tYWluX2RlYWN0aXZhdGVfaXJxKCk6IGRlYWN0aXZhdGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgaGFyZHdhcmUKKyAgIHRvIHN0b3AgZGVsaXZlcmluZyB0aGUgaW50ZXJydXB0LgorCitGb2xsb3dpbmcgY2hhbmdlcyBhcmUgbmVlZGVkIHRvIHN1cHBvcnQgaGllcmFyY2h5IGlycV9kb21haW4uCisxKSBhIG5ldyBmaWVsZCAncGFyZW50JyBpcyBhZGRlZCB0byBzdHJ1Y3QgaXJxX2RvbWFpbjsgaXQncyB1c2VkIHRvCisgICBtYWludGFpbiBpcnFfZG9tYWluIGhpZXJhcmNoeSBpbmZvcm1hdGlvbi4KKzIpIGEgbmV3IGZpZWxkICdwYXJlbnRfZGF0YScgaXMgYWRkZWQgdG8gc3RydWN0IGlycV9kYXRhOyBpdCdzIHVzZWQgdG8KKyAgIGJ1aWxkIGhpZXJhcmNoeSBpcnFfZGF0YSB0byBtYXRjaCBoaWVyYXJjaHkgaXJxX2RvbWFpbnMuIFRoZSBpcnFfZGF0YQorICAgaXMgdXNlZCB0byBzdG9yZSBpcnFfZG9tYWluIHBvaW50ZXIgYW5kIGhhcmR3YXJlIGlycSBudW1iZXIuCiszKSBuZXcgY2FsbGJhY2tzIGFyZSBhZGRlZCB0byBzdHJ1Y3QgaXJxX2RvbWFpbl9vcHMgdG8gc3VwcG9ydCBoaWVyYXJjaHkKKyAgIGlycV9kb21haW4gb3BlcmF0aW9ucy4KKworV2l0aCBzdXBwb3J0IG9mIGhpZXJhcmNoeSBpcnFfZG9tYWluIGFuZCBoaWVyYXJjaHkgaXJxX2RhdGEgcmVhZHksIGFuCitpcnFfZG9tYWluIHN0cnVjdHVyZSBpcyBidWlsdCBmb3IgZWFjaCBpbnRlcnJ1cHQgY29udHJvbGxlciwgYW5kIGFuCitpcnFfZGF0YSBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkIGZvciBlYWNoIGlycV9kb21haW4gYXNzb2NpYXRlZCB3aXRoIGFuCitJUlEuIE5vdyB3ZSBjb3VsZCBnbyBvbmUgc3RlcCBmdXJ0aGVyIHRvIHN1cHBvcnQgc3RhY2tlZChoaWVyYXJjaHkpCitpcnFfY2hpcC4gVGhhdCBpcywgYW4gaXJxX2NoaXAgaXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggaXJxX2RhdGEgYWxvbmcKK3RoZSBoaWVyYXJjaHkuIEEgY2hpbGQgaXJxX2NoaXAgbWF5IGltcGxlbWVudCBhIHJlcXVpcmVkIGFjdGlvbiBieQoraXRzZWxmIG9yIGJ5IGNvb3BlcmF0aW5nIHdpdGggaXRzIHBhcmVudCBpcnFfY2hpcC4KKworV2l0aCBzdGFja2VkIGlycV9jaGlwLCBpbnRlcnJ1cHQgY29udHJvbGxlciBkcml2ZXIgb25seSBuZWVkcyB0byBkZWFsCit3aXRoIHRoZSBoYXJkd2FyZSBtYW5hZ2VkIGJ5IGl0c2VsZiBhbmQgbWF5IGFzayBmb3Igc2VydmljZXMgZnJvbSBpdHMKK3BhcmVudCBpcnFfY2hpcCB3aGVuIG5lZWRlZC4gU28gd2UgY291bGQgYWNoaWV2ZSBhIG11Y2ggY2xlYW5lcgorc29mdHdhcmUgYXJjaGl0ZWN0dXJlLgorCitGb3IgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIgZHJpdmVyIHRvIHN1cHBvcnQgaGllcmFyY2h5IGlycV9kb21haW4sIGl0CituZWVkcyB0bzoKKzEpIEltcGxlbWVudCBpcnFfZG9tYWluX29wcy5hbGxvYyBhbmQgaXJxX2RvbWFpbl9vcHMuZnJlZQorMikgT3B0aW9uYWxseSBpbXBsZW1lbnQgaXJxX2RvbWFpbl9vcHMuYWN0aXZhdGUgYW5kCisgICBpcnFfZG9tYWluX29wcy5kZWFjdGl2YXRlLgorMykgT3B0aW9uYWxseSBpbXBsZW1lbnQgYW4gaXJxX2NoaXAgdG8gbWFuYWdlIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlcgorICAgaGFyZHdhcmUuCis0KSBObyBuZWVkIHRvIGltcGxlbWVudCBpcnFfZG9tYWluX29wcy5tYXAgYW5kIGlycV9kb21haW5fb3BzLnVubWFwLAorICAgdGhleSBhcmUgdW51c2VkIHdpdGggaGllcmFyY2h5IGlycV9kb21haW4uCisKK0hpZXJhcmNoeSBpcnFfZG9tYWluIG1heSBhbHNvIGJlIHVzZWQgdG8gc3VwcG9ydCBvdGhlciBhcmNoaXRlY3R1cmVzLAorc3VjaCBhcyBBUk0sIEFSTTY0IGV0Yy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vSVJRLnR4dCBiL0RvY3VtZW50YXRpb24vSVJRLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDExZTcxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9JUlEudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1doYXQgaXMgYW4gSVJRPworCitBbiBJUlEgaXMgYW4gaW50ZXJydXB0IHJlcXVlc3QgZnJvbSBhIGRldmljZS4KK0N1cnJlbnRseSB0aGV5IGNhbiBjb21lIGluIG92ZXIgYSBwaW4sIG9yIG92ZXIgYSBwYWNrZXQuCitTZXZlcmFsIGRldmljZXMgbWF5IGJlIGNvbm5lY3RlZCB0byB0aGUgc2FtZSBwaW4gdGh1cworc2hhcmluZyBhbiBJUlEuCisKK0FuIElSUSBudW1iZXIgaXMgYSBrZXJuZWwgaWRlbnRpZmllciB1c2VkIHRvIHRhbGsgYWJvdXQgYSBoYXJkd2FyZQoraW50ZXJydXB0IHNvdXJjZS4gIFR5cGljYWxseSB0aGlzIGlzIGFuIGluZGV4IGludG8gdGhlIGdsb2JhbCBpcnFfZGVzYworYXJyYXksIGJ1dCBleGNlcHQgZm9yIHdoYXQgbGludXgvaW50ZXJydXB0LmggaW1wbGVtZW50cyB0aGUgZGV0YWlscworYXJlIGFyY2hpdGVjdHVyZSBzcGVjaWZpYy4KKworQW4gSVJRIG51bWJlciBpcyBhbiBlbnVtZXJhdGlvbiBvZiB0aGUgcG9zc2libGUgaW50ZXJydXB0IHNvdXJjZXMgb24gYQorbWFjaGluZS4gIFR5cGljYWxseSB3aGF0IGlzIGVudW1lcmF0ZWQgaXMgdGhlIG51bWJlciBvZiBpbnB1dCBwaW5zIG9uCithbGwgb2YgdGhlIGludGVycnVwdCBjb250cm9sbGVyIGluIHRoZSBzeXN0ZW0uICBJbiB0aGUgY2FzZSBvZiBJU0EKK3doYXQgaXMgZW51bWVyYXRlZCBhcmUgdGhlIDE2IGlucHV0IHBpbnMgb24gdGhlIHR3byBpODI1OSBpbnRlcnJ1cHQKK2NvbnRyb2xsZXJzLgorCitBcmNoaXRlY3R1cmVzIGNhbiBhc3NpZ24gYWRkaXRpb25hbCBtZWFuaW5nIHRvIHRoZSBJUlEgbnVtYmVycywgYW5kCithcmUgZW5jb3VyYWdlZCB0byBpbiB0aGUgY2FzZSAgd2hlcmUgdGhlcmUgaXMgYW55IG1hbnVhbCBjb25maWd1cmF0aW9uCitvZiB0aGUgaGFyZHdhcmUgaW52b2x2ZWQuICBUaGUgSVNBIElSUXMgYXJlIGEgY2xhc3NpYyBleGFtcGxlIG9mCithc3NpZ25pbmcgdGhpcyBraW5kIG9mIGFkZGl0aW9uYWwgbWVhbmluZy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vSW50ZWwtSU9NTVUudHh0IGIvRG9jdW1lbnRhdGlvbi9JbnRlbC1JT01NVS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I1N2ZjMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vSW50ZWwtSU9NTVUudHh0CkBAIC0wLDAgKzEsMTExIEBACitMaW51eCBJT01NVSBTdXBwb3J0Cis9PT09PT09PT09PT09PT09PT09CisKK1RoZSBhcmNoaXRlY3R1cmUgc3BlYyBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgYmVsb3cgbG9jYXRpb24uCisKK2h0dHA6Ly93d3cuaW50ZWwuY29tL3RlY2hub2xvZ3kvdmlydHVhbGl6YXRpb24vCisKK1RoaXMgZ3VpZGUgZ2l2ZXMgYSBxdWljayBjaGVhdCBzaGVldCBmb3Igc29tZSBiYXNpYyB1bmRlcnN0YW5kaW5nLgorCitTb21lIEtleXdvcmRzCisKK0RNQVIgLSBETUEgcmVtYXBwaW5nCitEUkhEIC0gRE1BIFJlbWFwcGluZyBIYXJkd2FyZSBVbml0IERlZmluaXRpb24KK1JNUlIgLSBSZXNlcnZlZCBtZW1vcnkgUmVnaW9uIFJlcG9ydGluZyBTdHJ1Y3R1cmUKK1pMUiAgLSBaZXJvIGxlbmd0aCByZWFkcyBmcm9tIFBDSSBkZXZpY2VzCitJT1ZBIC0gSU8gVmlydHVhbCBhZGRyZXNzLgorCitCYXNpYyBzdHVmZgorLS0tLS0tLS0tLS0KKworQUNQSSBlbnVtZXJhdGVzIGFuZCBsaXN0cyB0aGUgZGlmZmVyZW50IERNQSBlbmdpbmVzIGluIHRoZSBwbGF0Zm9ybSwgYW5kCitkZXZpY2Ugc2NvcGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIFBDSSBkZXZpY2VzIGFuZCB3aGljaCBETUEgZW5naW5lICBjb250cm9scwordGhlbS4KKworV2hhdCBpcyBSTVJSPworLS0tLS0tLS0tLS0tLQorCitUaGVyZSBhcmUgc29tZSBkZXZpY2VzIHRoZSBCSU9TIGNvbnRyb2xzLCBmb3IgZS5nIFVTQiBkZXZpY2VzIHRvIHBlcmZvcm0KK1BTMiBlbXVsYXRpb24uIFRoZSByZWdpb25zIG9mIG1lbW9yeSB1c2VkIGZvciB0aGVzZSBkZXZpY2VzIGFyZSBtYXJrZWQKK3Jlc2VydmVkIGluIHRoZSBlODIwIG1hcC4gV2hlbiB3ZSB0dXJuIG9uIERNQSB0cmFuc2xhdGlvbiwgRE1BIHRvIHRob3NlCityZWdpb25zIHdpbGwgZmFpbC4gSGVuY2UgQklPUyB1c2VzIFJNUlIgdG8gc3BlY2lmeSB0aGVzZSByZWdpb25zIGFsb25nIHdpdGgKK2RldmljZXMgdGhhdCBuZWVkIHRvIGFjY2VzcyB0aGVzZSByZWdpb25zLiBPUyBpcyBleHBlY3RlZCB0byBzZXR1cAordW5pdHkgbWFwcGluZ3MgZm9yIHRoZXNlIHJlZ2lvbnMgZm9yIHRoZXNlIGRldmljZXMgdG8gYWNjZXNzIHRoZXNlIHJlZ2lvbnMuCisKK0hvdyBpcyBJT1ZBIGdlbmVyYXRlZD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXZWxsIGJlaGF2ZWQgZHJpdmVycyBjYWxsIHBjaV9tYXBfKigpIGNhbGxzIGJlZm9yZSBzZW5kaW5nIGNvbW1hbmQgdG8gZGV2aWNlCit0aGF0IG5lZWRzIHRvIHBlcmZvcm0gRE1BLiBPbmNlIERNQSBpcyBjb21wbGV0ZWQgYW5kIG1hcHBpbmcgaXMgbm8gbG9uZ2VyCityZXF1aXJlZCwgZGV2aWNlIHBlcmZvcm1zIGEgcGNpX3VubWFwXyooKSBjYWxscyB0byB1bm1hcCB0aGUgcmVnaW9uLgorCitUaGUgSW50ZWwgSU9NTVUgZHJpdmVyIGFsbG9jYXRlcyBhIHZpcnR1YWwgYWRkcmVzcyBwZXIgZG9tYWluLiBFYWNoIFBDSUUKK2RldmljZSBoYXMgaXRzIG93biBkb21haW4gKGhlbmNlIHByb3RlY3Rpb24pLiBEZXZpY2VzIHVuZGVyIHAycCBicmlkZ2VzCitzaGFyZSB0aGUgdmlydHVhbCBhZGRyZXNzIHdpdGggYWxsIGRldmljZXMgdW5kZXIgdGhlIHAycCBicmlkZ2UgZHVlIHRvCit0cmFuc2FjdGlvbiBpZCBhbGlhc2luZyBmb3IgcDJwIGJyaWRnZXMuCisKK0lPVkEgZ2VuZXJhdGlvbiBpcyBwcmV0dHkgZ2VuZXJpYy4gV2UgdXNlZCB0aGUgc2FtZSB0ZWNobmlxdWUgYXMgdm1hbGxvYygpCitidXQgdGhlc2UgYXJlIG5vdCBnbG9iYWwgYWRkcmVzcyBzcGFjZXMsIGJ1dCBzZXBhcmF0ZSBmb3IgZWFjaCBkb21haW4uCitEaWZmZXJlbnQgRE1BIGVuZ2luZXMgbWF5IHN1cHBvcnQgZGlmZmVyZW50IG51bWJlciBvZiBkb21haW5zLgorCitXZSBhbHNvIGFsbG9jYXRlIGd1YXJkIHBhZ2VzIHdpdGggZWFjaCBtYXBwaW5nLCBzbyB3ZSBjYW4gYXR0ZW1wdCB0byBjYXRjaAorYW55IG92ZXJmbG93IHRoYXQgbWlnaHQgaGFwcGVuLgorCisKK0dyYXBoaWNzIFByb2JsZW1zPworLS0tLS0tLS0tLS0tLS0tLS0tCitJZiB5b3UgZW5jb3VudGVyIGlzc3VlcyB3aXRoIGdyYXBoaWNzIGRldmljZXMsIHlvdSBjYW4gdHJ5IGFkZGluZworb3B0aW9uIGludGVsX2lvbW11PWlnZnhfb2ZmIHRvIHR1cm4gb2ZmIHRoZSBpbnRlZ3JhdGVkIGdyYXBoaWNzIGVuZ2luZS4KK0lmIHRoaXMgZml4ZXMgYW55dGhpbmcsIHBsZWFzZSBlbnN1cmUgeW91IGZpbGUgYSBidWcgcmVwb3J0aW5nIHRoZSBwcm9ibGVtLgorCitTb21lIGV4Y2VwdGlvbnMgdG8gSU9WQQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0ludGVycnVwdCByYW5nZXMgYXJlIG5vdCBhZGRyZXNzIHRyYW5zbGF0ZWQsICgweGZlZTAwMDAwIC0gMHhmZWVmZmZmZikuCitUaGUgc2FtZSBpcyB0cnVlIGZvciBwZWVyIHRvIHBlZXIgdHJhbnNhY3Rpb25zLiBIZW5jZSB3ZSByZXNlcnZlIHRoZQorYWRkcmVzcyBmcm9tIFBDSSBNTUlPIHJhbmdlcyBzbyB0aGV5IGFyZSBub3QgYWxsb2NhdGVkIGZvciBJT1ZBIGFkZHJlc3Nlcy4KKworCitGYXVsdCByZXBvcnRpbmcKKy0tLS0tLS0tLS0tLS0tLQorV2hlbiBlcnJvcnMgYXJlIHJlcG9ydGVkLCB0aGUgRE1BIGVuZ2luZSBzaWduYWxzIHZpYSBhbiBpbnRlcnJ1cHQuIFRoZSBmYXVsdAorcmVhc29uIGFuZCBkZXZpY2UgdGhhdCBjYXVzZWQgaXQgd2l0aCBmYXVsdCByZWFzb24gaXMgcHJpbnRlZCBvbiBjb25zb2xlLgorCitTZWUgYmVsb3cgZm9yIHNhbXBsZS4KKworCitCb290IE1lc3NhZ2UgU2FtcGxlCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NvbWV0aGluZyBsaWtlIHRoaXMgZ2V0cyBwcmludGVkIGluZGljYXRpbmcgcHJlc2VuY2Ugb2YgRE1BUiB0YWJsZXMKK2luIEFDUEkuCisKK0FDUEk6IERNQVIgKHYwMDEgQSBNIEkgIE9FTURNQVIgIDB4MDAwMDAwMDEgTVNGVCAweDAwMDAwMDk3KSBAIDB4MDAwMDAwMDA3ZjViNWVmMAorCitXaGVuIERNQVIgaXMgYmVpbmcgcHJvY2Vzc2VkIGFuZCBpbml0aWFsaXplZCBieSBBQ1BJLCBwcmludHMgRE1BUiBsb2NhdGlvbnMKK2FuZCBhbnkgUk1SUidzIHByb2Nlc3NlZC4KKworQUNQSSBETUFSOkhvc3QgYWRkcmVzcyB3aWR0aCAzNgorQUNQSSBETUFSOkRSSEQgKGZsYWdzOiAweDAwMDAwMDAwKWJhc2U6IDB4MDAwMDAwMDBmZWQ5MDAwMAorQUNQSSBETUFSOkRSSEQgKGZsYWdzOiAweDAwMDAwMDAwKWJhc2U6IDB4MDAwMDAwMDBmZWQ5MTAwMAorQUNQSSBETUFSOkRSSEQgKGZsYWdzOiAweDAwMDAwMDAxKWJhc2U6IDB4MDAwMDAwMDBmZWQ5MzAwMAorQUNQSSBETUFSOlJNUlIgYmFzZTogMHgwMDAwMDAwMDAwMGVkMDAwIGVuZDogMHgwMDAwMDAwMDAwMGVmZmZmCitBQ1BJIERNQVI6Uk1SUiBiYXNlOiAweDAwMDAwMDAwN2Y2MDAwMDAgZW5kOiAweDAwMDAwMDAwN2ZmZmZmZmYKKworV2hlbiBETUFSIGlzIGVuYWJsZWQgZm9yIHVzZSwgeW91IHdpbGwgbm90aWNlLi4KKworUENJLURNQTogVXNpbmcgRE1BUiBJT01NVQorCitGYXVsdCByZXBvcnRpbmcKKy0tLS0tLS0tLS0tLS0tLQorCitETUFSOltETUEgV3JpdGVdIFJlcXVlc3QgZGV2aWNlIFswMDowMi4wXSBmYXVsdCBhZGRyIDZkZjA4NDAwMAorRE1BUjpbZmF1bHQgcmVhc29uIDA1XSBQVEUgV3JpdGUgYWNjZXNzIGlzIG5vdCBzZXQKK0RNQVI6W0RNQSBXcml0ZV0gUmVxdWVzdCBkZXZpY2UgWzAwOjAyLjBdIGZhdWx0IGFkZHIgNmRmMDg0MDAwCitETUFSOltmYXVsdCByZWFzb24gMDVdIFBURSBXcml0ZSBhY2Nlc3MgaXMgbm90IHNldAorCitUQkQKKy0tLS0KKworLSBGb3IgY29tcGF0aWJpbGl0eSB0ZXN0aW5nLCBjb3VsZCB1c2UgdW5pdHkgbWFwIGRvbWFpbiBmb3IgYWxsIGRldmljZXMsIGp1c3QKKyAgcHJvdmlkZSBhIDEtMSBmb3IgYWxsIHVzZWZ1bCBtZW1vcnkgdW5kZXIgYSBzaW5nbGUgZG9tYWluIGZvciBhbGwgZGV2aWNlcy4KKy0gQVBJIGZvciBwYXJhdmlydCBvcHMgZm9yIGFic3RyYWN0aW5nIGZ1bmN0aW9uYWxpdHkgZm9yIFZNTSBmb2xrcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vTWFrZWZpbGUgYi9Eb2N1bWVudGF0aW9uL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjNzU5NTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL01ha2VmaWxlCkBAIC0wLDAgKzEsNCBAQAorc3ViZGlyLXkgOj0gYWNjb3VudGluZyBhdXhkaXNwbGF5IGJsYWNrZmluIGNvbm5lY3RvciBcCisJZmlsZXN5c3RlbXMgZmlsZXN5c3RlbXMgaWE2NCBsYXB0b3BzIG1pc2MtZGV2aWNlcyBcCisJbmV0d29ya2luZyBwY21jaWEgcHJjdGwgcHRwIHNwaSB0aW1lcnMgdkRTTyB2aWRlbzRsaW51eCBcCisJd2F0Y2hkb2cKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vTWFuYWdlbWVudFN0eWxlIGIvRG9jdW1lbnRhdGlvbi9NYW5hZ2VtZW50U3R5bGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIxMWVlOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vTWFuYWdlbWVudFN0eWxlCkBAIC0wLDAgKzEsMjc2IEBACisKKyAgICAgICAgICAgICAgICBMaW51eCBrZXJuZWwgbWFuYWdlbWVudCBzdHlsZQorCitUaGlzIGlzIGEgc2hvcnQgZG9jdW1lbnQgZGVzY3JpYmluZyB0aGUgcHJlZmVycmVkIChvciBtYWRlIHVwLCBkZXBlbmRpbmcKK29uIHdobyB5b3UgYXNrKSBtYW5hZ2VtZW50IHN0eWxlIGZvciB0aGUgbGludXgga2VybmVsLiAgSXQncyBtZWFudCB0bworbWlycm9yIHRoZSBDb2RpbmdTdHlsZSBkb2N1bWVudCB0byBzb21lIGRlZ3JlZSwgYW5kIG1haW5seSB3cml0dGVuIHRvCithdm9pZCBhbnN3ZXJpbmcgKCopIHRoZSBzYW1lIChvciBzaW1pbGFyKSBxdWVzdGlvbnMgb3ZlciBhbmQgb3ZlciBhZ2Fpbi4gCisKK01hbmFnZW1lbnQgc3R5bGUgaXMgdmVyeSBwZXJzb25hbCBhbmQgbXVjaCBoYXJkZXIgdG8gcXVhbnRpZnkgdGhhbgorc2ltcGxlIGNvZGluZyBzdHlsZSBydWxlcywgc28gdGhpcyBkb2N1bWVudCBtYXkgb3IgbWF5IG5vdCBoYXZlIGFueXRoaW5nCit0byBkbyB3aXRoIHJlYWxpdHkuICBJdCBzdGFydGVkIGFzIGEgbGFyaywgYnV0IHRoYXQgZG9lc24ndCBtZWFuIHRoYXQgaXQKK21pZ2h0IG5vdCBhY3R1YWxseSBiZSB0cnVlLiBZb3UnbGwgaGF2ZSB0byBkZWNpZGUgZm9yIHlvdXJzZWxmLgorCitCdHcsIHdoZW4gdGFsa2luZyBhYm91dCAia2VybmVsIG1hbmFnZXIiLCBpdCdzIGFsbCBhYm91dCB0aGUgdGVjaG5pY2FsCitsZWFkIHBlcnNvbnMsIG5vdCB0aGUgcGVvcGxlIHdobyBkbyB0cmFkaXRpb25hbCBtYW5hZ2VtZW50IGluc2lkZQorY29tcGFuaWVzLiAgSWYgeW91IHNpZ24gcHVyY2hhc2Ugb3JkZXJzIG9yIHlvdSBoYXZlIGFueSBjbHVlIGFib3V0IHRoZQorYnVkZ2V0IG9mIHlvdXIgZ3JvdXAsIHlvdSdyZSBhbG1vc3QgY2VydGFpbmx5IG5vdCBhIGtlcm5lbCBtYW5hZ2VyLiAKK1RoZXNlIHN1Z2dlc3Rpb25zIG1heSBvciBtYXkgbm90IGFwcGx5IHRvIHlvdS4gCisKK0ZpcnN0IG9mZiwgSSdkIHN1Z2dlc3QgYnV5aW5nICJTZXZlbiBIYWJpdHMgb2YgSGlnaGx5IEVmZmVjdGl2ZQorUGVvcGxlIiwgYW5kIE5PVCByZWFkIGl0LiAgQnVybiBpdCwgaXQncyBhIGdyZWF0IHN5bWJvbGljIGdlc3R1cmUuIAorCisoKikgVGhpcyBkb2N1bWVudCBkb2VzIHNvIG5vdCBzbyBtdWNoIGJ5IGFuc3dlcmluZyB0aGUgcXVlc3Rpb24sIGJ1dCBieQorbWFraW5nIGl0IHBhaW5mdWxseSBvYnZpb3VzIHRvIHRoZSBxdWVzdGlvbmVyIHRoYXQgd2UgZG9uJ3QgaGF2ZSBhIGNsdWUKK3RvIHdoYXQgdGhlIGFuc3dlciBpcy4gCisKK0FueXdheSwgaGVyZSBnb2VzOgorCisKKwkJQ2hhcHRlciAxOiBEZWNpc2lvbnMKKworRXZlcnlib2R5IHRoaW5rcyBtYW5hZ2VycyBtYWtlIGRlY2lzaW9ucywgYW5kIHRoYXQgZGVjaXNpb24tbWFraW5nIGlzCitpbXBvcnRhbnQuICBUaGUgYmlnZ2VyIGFuZCBtb3JlIHBhaW5mdWwgdGhlIGRlY2lzaW9uLCB0aGUgYmlnZ2VyIHRoZQorbWFuYWdlciBtdXN0IGJlIHRvIG1ha2UgaXQuICBUaGF0J3MgdmVyeSBkZWVwIGFuZCBvYnZpb3VzLCBidXQgaXQncyBub3QKK2FjdHVhbGx5IHRydWUuIAorCitUaGUgbmFtZSBvZiB0aGUgZ2FtZSBpcyB0byBfYXZvaWRfIGhhdmluZyB0byBtYWtlIGEgZGVjaXNpb24uICBJbgorcGFydGljdWxhciwgaWYgc29tZWJvZHkgdGVsbHMgeW91ICJjaG9vc2UgKGEpIG9yIChiKSwgd2UgcmVhbGx5IG5lZWQgeW91Cit0byBkZWNpZGUgb24gdGhpcyIsIHlvdSdyZSBpbiB0cm91YmxlIGFzIGEgbWFuYWdlci4gIFRoZSBwZW9wbGUgeW91CittYW5hZ2UgaGFkIGJldHRlciBrbm93IHRoZSBkZXRhaWxzIGJldHRlciB0aGFuIHlvdSwgc28gaWYgdGhleSBjb21lIHRvCit5b3UgZm9yIGEgdGVjaG5pY2FsIGRlY2lzaW9uLCB5b3UncmUgc2NyZXdlZC4gIFlvdSdyZSBjbGVhcmx5IG5vdAorY29tcGV0ZW50IHRvIG1ha2UgdGhhdCBkZWNpc2lvbiBmb3IgdGhlbS4gCisKKyhDb3JvbGxhcnk6aWYgdGhlIHBlb3BsZSB5b3UgbWFuYWdlIGRvbid0IGtub3cgdGhlIGRldGFpbHMgYmV0dGVyIHRoYW4KK3lvdSwgeW91J3JlIGFsc28gc2NyZXdlZCwgYWx0aG91Z2ggZm9yIGEgdG90YWxseSBkaWZmZXJlbnQgcmVhc29uLiAKK05hbWVseSB0aGF0IHlvdSBhcmUgaW4gdGhlIHdyb25nIGpvYiwgYW5kIHRoYXQgX3RoZXlfIHNob3VsZCBiZSBtYW5hZ2luZworeW91ciBicmlsbGlhbmNlIGluc3RlYWQpLiAKKworU28gdGhlIG5hbWUgb2YgdGhlIGdhbWUgaXMgdG8gX2F2b2lkXyBkZWNpc2lvbnMsIGF0IGxlYXN0IHRoZSBiaWcgYW5kCitwYWluZnVsIG9uZXMuICBNYWtpbmcgc21hbGwgYW5kIG5vbi1jb25zZXF1ZW50aWFsIGRlY2lzaW9ucyBpcyBmaW5lLCBhbmQKK21ha2VzIHlvdSBsb29rIGxpa2UgeW91IGtub3cgd2hhdCB5b3UncmUgZG9pbmcsIHNvIHdoYXQgYSBrZXJuZWwgbWFuYWdlcgorbmVlZHMgdG8gZG8gaXMgdG8gdHVybiB0aGUgYmlnIGFuZCBwYWluZnVsIG9uZXMgaW50byBzbWFsbCB0aGluZ3Mgd2hlcmUKK25vYm9keSByZWFsbHkgY2FyZXMuIAorCitJdCBoZWxwcyB0byByZWFsaXplIHRoYXQgdGhlIGtleSBkaWZmZXJlbmNlIGJldHdlZW4gYSBiaWcgZGVjaXNpb24gYW5kIGEKK3NtYWxsIG9uZSBpcyB3aGV0aGVyIHlvdSBjYW4gZml4IHlvdXIgZGVjaXNpb24gYWZ0ZXJ3YXJkcy4gIEFueSBkZWNpc2lvbgorY2FuIGJlIG1hZGUgc21hbGwgYnkganVzdCBhbHdheXMgbWFraW5nIHN1cmUgdGhhdCBpZiB5b3Ugd2VyZSB3cm9uZyAoYW5kCit5b3UgX3dpbGxfIGJlIHdyb25nKSwgeW91IGNhbiBhbHdheXMgdW5kbyB0aGUgZGFtYWdlIGxhdGVyIGJ5CitiYWNrdHJhY2tpbmcuICBTdWRkZW5seSwgeW91IGdldCB0byBiZSBkb3VibHkgbWFuYWdlcmlhbCBmb3IgbWFraW5nCitfdHdvXyBpbmNvbnNlcXVlbnRpYWwgZGVjaXNpb25zIC0gdGhlIHdyb25nIG9uZSBfYW5kXyB0aGUgcmlnaHQgb25lLiAKKworQW5kIHBlb3BsZSB3aWxsIGV2ZW4gc2VlIHRoYXQgYXMgdHJ1ZSBsZWFkZXJzaGlwICgqY291Z2gqIGJ1bGxzaGl0CisqY291Z2gqKS4KKworVGh1cyB0aGUga2V5IHRvIGF2b2lkaW5nIGJpZyBkZWNpc2lvbnMgYmVjb21lcyB0byBqdXN0IGF2b2lkaW5nIHRvIGRvCit0aGluZ3MgdGhhdCBjYW4ndCBiZSB1bmRvbmUuICBEb24ndCBnZXQgdXNoZXJlZCBpbnRvIGEgY29ybmVyIGZyb20gd2hpY2gKK3lvdSBjYW5ub3QgZXNjYXBlLiAgQSBjb3JuZXJlZCByYXQgbWF5IGJlIGRhbmdlcm91cyAtIGEgY29ybmVyZWQgbWFuYWdlcgoraXMganVzdCBwaXRpZnVsLiAKKworSXQgdHVybnMgb3V0IHRoYXQgc2luY2Ugbm9ib2R5IHdvdWxkIGJlIHN0dXBpZCBlbm91Z2ggdG8gZXZlciByZWFsbHkgbGV0CithIGtlcm5lbCBtYW5hZ2VyIGhhdmUgaHVnZSBmaXNjYWwgcmVzcG9uc2liaWxpdHkgX2FueXdheV8sIGl0J3MgdXN1YWxseQorZmFpcmx5IGVhc3kgdG8gYmFja3RyYWNrLiAgU2luY2UgeW91J3JlIG5vdCBnb2luZyB0byBiZSBhYmxlIHRvIHdhc3RlCitodWdlIGFtb3VudHMgb2YgbW9uZXkgdGhhdCB5b3UgbWlnaHQgbm90IGJlIGFibGUgdG8gcmVwYXksIHRoZSBvbmx5Cit0aGluZyB5b3UgY2FuIGJhY2t0cmFjayBvbiBpcyBhIHRlY2huaWNhbCBkZWNpc2lvbiwgYW5kIHRoZXJlCitiYWNrLXRyYWNraW5nIGlzIHZlcnkgZWFzeToganVzdCB0ZWxsIGV2ZXJ5Ym9keSB0aGF0IHlvdSB3ZXJlIGFuCitpbmNvbXBldGVudCBuaW5jb21wb29wLCBzYXkgeW91J3JlIHNvcnJ5LCBhbmQgdW5kbyBhbGwgdGhlIHdvcnRobGVzcword29yayB5b3UgaGFkIHBlb3BsZSB3b3JrIG9uIGZvciB0aGUgbGFzdCB5ZWFyLiAgU3VkZGVubHkgdGhlIGRlY2lzaW9uCit5b3UgbWFkZSBhIHllYXIgYWdvIHdhc24ndCBhIGJpZyBkZWNpc2lvbiBhZnRlciBhbGwsIHNpbmNlIGl0IGNvdWxkIGJlCitlYXNpbHkgdW5kb25lLiAKKworSXQgdHVybnMgb3V0IHRoYXQgc29tZSBwZW9wbGUgaGF2ZSB0cm91YmxlIHdpdGggdGhpcyBhcHByb2FjaCwgZm9yIHR3bworcmVhc29uczoKKyAtIGFkbWl0dGluZyB5b3Ugd2VyZSBhbiBpZGlvdCBpcyBoYXJkZXIgdGhhbiBpdCBsb29rcy4gIFdlIGFsbCBsaWtlIHRvCisgICBtYWludGFpbiBhcHBlYXJhbmNlcywgYW5kIGNvbWluZyBvdXQgaW4gcHVibGljIHRvIHNheSB0aGF0IHlvdSB3ZXJlCisgICB3cm9uZyBpcyBzb21ldGltZXMgdmVyeSBoYXJkIGluZGVlZC4gCisgLSBoYXZpbmcgc29tZWJvZHkgdGVsbCB5b3UgdGhhdCB3aGF0IHlvdSB3b3JrZWQgb24gZm9yIHRoZSBsYXN0IHllYXIKKyAgIHdhc24ndCB3b3J0aHdoaWxlIGFmdGVyIGFsbCBjYW4gYmUgaGFyZCBvbiB0aGUgcG9vciBsb3dseSBlbmdpbmVlcnMKKyAgIHRvbywgYW5kIHdoaWxlIHRoZSBhY3R1YWwgX3dvcmtfIHdhcyBlYXN5IGVub3VnaCB0byB1bmRvIGJ5IGp1c3QKKyAgIGRlbGV0aW5nIGl0LCB5b3UgbWF5IGhhdmUgaXJyZXZvY2FibHkgbG9zdCB0aGUgdHJ1c3Qgb2YgdGhhdAorICAgZW5naW5lZXIuICBBbmQgcmVtZW1iZXI6ICJpcnJldm9jYWJsZSIgd2FzIHdoYXQgd2UgdHJpZWQgdG8gYXZvaWQgaW4KKyAgIHRoZSBmaXJzdCBwbGFjZSwgYW5kIHlvdXIgZGVjaXNpb24gZW5kZWQgdXAgYmVpbmcgYSBiaWcgb25lIGFmdGVyCisgICBhbGwuIAorCitIYXBwaWx5LCBib3RoIG9mIHRoZXNlIHJlYXNvbnMgY2FuIGJlIG1pdGlnYXRlZCBlZmZlY3RpdmVseSBieSBqdXN0CithZG1pdHRpbmcgdXAtZnJvbnQgdGhhdCB5b3UgZG9uJ3QgaGF2ZSBhIGZyaWdnaW4nIGNsdWUsIGFuZCB0ZWxsaW5nCitwZW9wbGUgYWhlYWQgb2YgdGhlIGZhY3QgdGhhdCB5b3VyIGRlY2lzaW9uIGlzIHB1cmVseSBwcmVsaW1pbmFyeSwgYW5kCittaWdodCBiZSB0aGUgd3JvbmcgdGhpbmcuICBZb3Ugc2hvdWxkIGFsd2F5cyByZXNlcnZlIHRoZSByaWdodCB0byBjaGFuZ2UKK3lvdXIgbWluZCwgYW5kIG1ha2UgcGVvcGxlIHZlcnkgX2F3YXJlXyBvZiB0aGF0LiAgQW5kIGl0J3MgbXVjaCBlYXNpZXIKK3RvIGFkbWl0IHRoYXQgeW91IGFyZSBzdHVwaWQgd2hlbiB5b3UgaGF2ZW4ndCBfeWV0XyBkb25lIHRoZSByZWFsbHkKK3N0dXBpZCB0aGluZy4KKworVGhlbiwgd2hlbiBpdCByZWFsbHkgZG9lcyB0dXJuIG91dCB0byBiZSBzdHVwaWQsIHBlb3BsZSBqdXN0IHJvbGwgdGhlaXIKK2V5ZXMgYW5kIHNheSAiT29wcywgaGUgZGlkIGl0IGFnYWluIi4gIAorCitUaGlzIHByZWVtcHRpdmUgYWRtaXNzaW9uIG9mIGluY29tcGV0ZW5jZSBtaWdodCBhbHNvIG1ha2UgdGhlIHBlb3BsZSB3aG8KK2FjdHVhbGx5IGRvIHRoZSB3b3JrIGFsc28gdGhpbmsgdHdpY2UgYWJvdXQgd2hldGhlciBpdCdzIHdvcnRoIGRvaW5nIG9yCitub3QuICBBZnRlciBhbGwsIGlmIF90aGV5XyBhcmVuJ3QgY2VydGFpbiB3aGV0aGVyIGl0J3MgYSBnb29kIGlkZWEsIHlvdQorc3VyZSBhcyBoZWxsIHNob3VsZG4ndCBlbmNvdXJhZ2UgdGhlbSBieSBwcm9taXNpbmcgdGhlbSB0aGF0IHdoYXQgdGhleQord29yayBvbiB3aWxsIGJlIGluY2x1ZGVkLiAgTWFrZSB0aGVtIGF0IGxlYXN0IHRoaW5rIHR3aWNlIGJlZm9yZSB0aGV5CitlbWJhcmsgb24gYSBiaWcgZW5kZWF2b3IuIAorCitSZW1lbWJlcjogdGhleSdkIGJldHRlciBrbm93IG1vcmUgYWJvdXQgdGhlIGRldGFpbHMgdGhhbiB5b3UgZG8sIGFuZAordGhleSB1c3VhbGx5IGFscmVhZHkgdGhpbmsgdGhleSBoYXZlIHRoZSBhbnN3ZXIgdG8gZXZlcnl0aGluZy4gIFRoZSBiZXN0Cit0aGluZyB5b3UgY2FuIGRvIGFzIGEgbWFuYWdlciBpcyBub3QgdG8gaW5zdGlsbCBjb25maWRlbmNlLCBidXQgcmF0aGVyIGEKK2hlYWx0aHkgZG9zZSBvZiBjcml0aWNhbCB0aGlua2luZyBvbiB3aGF0IHRoZXkgZG8uIAorCitCdHcsIGFub3RoZXIgd2F5IHRvIGF2b2lkIGEgZGVjaXNpb24gaXMgdG8gcGxhaW50aXZlbHkganVzdCB3aGluZSAiY2FuJ3QKK3dlIGp1c3QgZG8gYm90aD8iIGFuZCBsb29rIHBpdGlmdWwuICBUcnVzdCBtZSwgaXQgd29ya3MuICBJZiBpdCdzIG5vdAorY2xlYXIgd2hpY2ggYXBwcm9hY2ggaXMgYmV0dGVyLCB0aGV5J2xsIGV2ZW50dWFsbHkgZmlndXJlIGl0IG91dC4gIFRoZQorYW5zd2VyIG1heSBlbmQgdXAgYmVpbmcgdGhhdCBib3RoIHRlYW1zIGdldCBzbyBmcnVzdHJhdGVkIGJ5IHRoZQorc2l0dWF0aW9uIHRoYXQgdGhleSBqdXN0IGdpdmUgdXAuIAorCitUaGF0IG1heSBzb3VuZCBsaWtlIGEgZmFpbHVyZSwgYnV0IGl0J3MgdXN1YWxseSBhIHNpZ24gdGhhdCB0aGVyZSB3YXMKK3NvbWV0aGluZyB3cm9uZyB3aXRoIGJvdGggcHJvamVjdHMsIGFuZCB0aGUgcmVhc29uIHRoZSBwZW9wbGUgaW52b2x2ZWQKK2NvdWxkbid0IGRlY2lkZSB3YXMgdGhhdCB0aGV5IHdlcmUgYm90aCB3cm9uZy4gIFlvdSBlbmQgdXAgY29taW5nIHVwCitzbWVsbGluZyBsaWtlIHJvc2VzLCBhbmQgeW91IGF2b2lkZWQgeWV0IGFub3RoZXIgZGVjaXNpb24gdGhhdCB5b3UgY291bGQKK2hhdmUgc2NyZXdlZCB1cCBvbi4gCisKKworCQlDaGFwdGVyIDI6IFBlb3BsZQorCitNb3N0IHBlb3BsZSBhcmUgaWRpb3RzLCBhbmQgYmVpbmcgYSBtYW5hZ2VyIG1lYW5zIHlvdSdsbCBoYXZlIHRvIGRlYWwKK3dpdGggaXQsIGFuZCBwZXJoYXBzIG1vcmUgaW1wb3J0YW50bHksIHRoYXQgX3RoZXlfIGhhdmUgdG8gZGVhbCB3aXRoCitfeW91Xy4gCisKK0l0IHR1cm5zIG91dCB0aGF0IHdoaWxlIGl0J3MgZWFzeSB0byB1bmRvIHRlY2huaWNhbCBtaXN0YWtlcywgaXQncyBub3QKK2FzIGVhc3kgdG8gdW5kbyBwZXJzb25hbGl0eSBkaXNvcmRlcnMuICBZb3UganVzdCBoYXZlIHRvIGxpdmUgd2l0aAordGhlaXJzIC0gYW5kIHlvdXJzLiAKKworSG93ZXZlciwgaW4gb3JkZXIgdG8gcHJlcGFyZSB5b3Vyc2VsZiBhcyBhIGtlcm5lbCBtYW5hZ2VyLCBpdCdzIGJlc3QgdG8KK3JlbWVtYmVyIG5vdCB0byBidXJuIGFueSBicmlkZ2VzLCBib21iIGFueSBpbm5vY2VudCB2aWxsYWdlcnMsIG9yCithbGllbmF0ZSB0b28gbWFueSBrZXJuZWwgZGV2ZWxvcGVycy4gSXQgdHVybnMgb3V0IHRoYXQgYWxpZW5hdGluZyBwZW9wbGUKK2lzIGZhaXJseSBlYXN5LCBhbmQgdW4tYWxpZW5hdGluZyB0aGVtIGlzIGhhcmQuIFRodXMgImFsaWVuYXRpbmciCitpbW1lZGlhdGVseSBmYWxscyB1bmRlciB0aGUgaGVhZGluZyBvZiAibm90IHJldmVyc2libGUiLCBhbmQgYmVjb21lcyBhCituby1ubyBhY2NvcmRpbmcgdG8gQ2hhcHRlciAxLgorCitUaGVyZSdzIGp1c3QgYSBmZXcgc2ltcGxlIHJ1bGVzIGhlcmU6CisgKDEpIGRvbid0IGNhbGwgcGVvcGxlIGQqY2toZWFkcyAoYXQgbGVhc3Qgbm90IGluIHB1YmxpYykKKyAoMikgbGVhcm4gaG93IHRvIGFwb2xvZ2l6ZSB3aGVuIHlvdSBmb3Jnb3QgcnVsZSAoMSkKKworVGhlIHByb2JsZW0gd2l0aCAjMSBpcyB0aGF0IGl0J3MgdmVyeSBlYXN5IHRvIGRvLCBzaW5jZSB5b3UgY2FuIHNheQorInlvdSdyZSBhIGQqY2toZWFkIiBpbiBtaWxsaW9ucyBvZiBkaWZmZXJlbnQgd2F5cyAoKiksIHNvbWV0aW1lcyB3aXRob3V0CitldmVuIHJlYWxpemluZyBpdCwgYW5kIGFsbW9zdCBhbHdheXMgd2l0aCBhIHdoaXRlLWhvdCBjb252aWN0aW9uIHRoYXQKK3lvdSBhcmUgcmlnaHQuIAorCitBbmQgdGhlIG1vcmUgY29udmluY2VkIHlvdSBhcmUgdGhhdCB5b3UgYXJlIHJpZ2h0IChhbmQgbGV0J3MgZmFjZSBpdCwKK3lvdSBjYW4gY2FsbCBqdXN0IGFib3V0IF9hbnlib2R5XyBhIGQqY2toZWFkLCBhbmQgeW91IG9mdGVuIF93aWxsXyBiZQorcmlnaHQpLCB0aGUgaGFyZGVyIGl0IGVuZHMgdXAgYmVpbmcgdG8gYXBvbG9naXplIGFmdGVyd2FyZHMuIAorCitUbyBzb2x2ZSB0aGlzIHByb2JsZW0sIHlvdSByZWFsbHkgb25seSBoYXZlIHR3byBvcHRpb25zOgorIC0gZ2V0IHJlYWxseSBnb29kIGF0IGFwb2xvZ2llcworIC0gc3ByZWFkIHRoZSAibG92ZSIgb3V0IHNvIGV2ZW5seSB0aGF0IG5vYm9keSByZWFsbHkgZW5kcyB1cCBmZWVsaW5nCisgICBsaWtlIHRoZXkgZ2V0IHVuZmFpcmx5IHRhcmdldGVkLiAgTWFrZSBpdCBpbnZlbnRpdmUgZW5vdWdoLCBhbmQgdGhleQorICAgbWlnaHQgZXZlbiBiZSBhbXVzZWQuIAorCitUaGUgb3B0aW9uIG9mIGJlaW5nIHVuZmFpbGluZ2x5IHBvbGl0ZSByZWFsbHkgZG9lc24ndCBleGlzdC4gTm9ib2R5IHdpbGwKK3RydXN0IHNvbWVib2R5IHdobyBpcyBzbyBjbGVhcmx5IGhpZGluZyBoaXMgdHJ1ZSBjaGFyYWN0ZXIuCisKKygqKSBQYXVsIFNpbW9uIHNhbmcgIkZpZnR5IFdheXMgdG8gTGVhdmUgWW91ciBMb3ZlciIsIGJlY2F1c2UgcXVpdGUKK2ZyYW5rbHksICJBIE1pbGxpb24gV2F5cyB0byBUZWxsIGEgRGV2ZWxvcGVyIEhlIElzIGEgRCpja2hlYWQiIGRvZXNuJ3QKK3NjYW4gbmVhcmx5IGFzIHdlbGwuICBCdXQgSSdtIHN1cmUgaGUgdGhvdWdodCBhYm91dCBpdC4gCisKKworCQlDaGFwdGVyIDM6IFBlb3BsZSBJSSAtIHRoZSBHb29kIEtpbmQKKworV2hpbGUgaXQgdHVybnMgb3V0IHRoYXQgbW9zdCBwZW9wbGUgYXJlIGlkaW90cywgdGhlIGNvcm9sbGFyeSB0byB0aGF0IGlzCitzYWRseSB0aGF0IHlvdSBhcmUgb25lIHRvbywgYW5kIHRoYXQgd2hpbGUgd2UgY2FuIGFsbCBiYXNrIGluIHRoZSBzZWN1cmUKK2tub3dsZWRnZSB0aGF0IHdlJ3JlIGJldHRlciB0aGFuIHRoZSBhdmVyYWdlIHBlcnNvbiAobGV0J3MgZmFjZSBpdCwKK25vYm9keSBldmVyIGJlbGlldmVzIHRoYXQgdGhleSdyZSBhdmVyYWdlIG9yIGJlbG93LWF2ZXJhZ2UpLCB3ZSBzaG91bGQKK2Fsc28gYWRtaXQgdGhhdCB3ZSdyZSBub3QgdGhlIHNoYXJwZXN0IGtuaWZlIGFyb3VuZCwgYW5kIHRoZXJlIHdpbGwgYmUKK290aGVyIHBlb3BsZSB0aGF0IGFyZSBsZXNzIG9mIGFuIGlkaW90IHRoYW4geW91IGFyZS4gCisKK1NvbWUgcGVvcGxlIHJlYWN0IGJhZGx5IHRvIHNtYXJ0IHBlb3BsZS4gIE90aGVycyB0YWtlIGFkdmFudGFnZSBvZiB0aGVtLiAKKworTWFrZSBzdXJlIHRoYXQgeW91LCBhcyBhIGtlcm5lbCBtYWludGFpbmVyLCBhcmUgaW4gdGhlIHNlY29uZCBncm91cC4gCitTdWNrIHVwIHRvIHRoZW0sIGJlY2F1c2UgdGhleSBhcmUgdGhlIHBlb3BsZSB3aG8gd2lsbCBtYWtlIHlvdXIgam9iCitlYXNpZXIuIEluIHBhcnRpY3VsYXIsIHRoZXknbGwgYmUgYWJsZSB0byBtYWtlIHlvdXIgZGVjaXNpb25zIGZvciB5b3UsCit3aGljaCBpcyB3aGF0IHRoZSBnYW1lIGlzIGFsbCBhYm91dC4KKworU28gd2hlbiB5b3UgZmluZCBzb21lYm9keSBzbWFydGVyIHRoYW4geW91IGFyZSwganVzdCBjb2FzdCBhbG9uZy4gIFlvdXIKK21hbmFnZW1lbnQgcmVzcG9uc2liaWxpdGllcyBsYXJnZWx5IGJlY29tZSBvbmVzIG9mIHNheWluZyAiU291bmRzIGxpa2UgYQorZ29vZCBpZGVhIC0gZ28gd2lsZCIsIG9yICJUaGF0IHNvdW5kcyBnb29kLCBidXQgd2hhdCBhYm91dCB4eHg/Ii4gIFRoZQorc2Vjb25kIHZlcnNpb24gaW4gcGFydGljdWxhciBpcyBhIGdyZWF0IHdheSB0byBlaXRoZXIgbGVhcm4gc29tZXRoaW5nCituZXcgYWJvdXQgInh4eCIgb3Igc2VlbSBfZXh0cmFfIG1hbmFnZXJpYWwgYnkgcG9pbnRpbmcgb3V0IHNvbWV0aGluZyB0aGUKK3NtYXJ0ZXIgcGVyc29uIGhhZG4ndCB0aG91Z2h0IGFib3V0LiAgSW4gZWl0aGVyIGNhc2UsIHlvdSB3aW4uCisKK09uZSB0aGluZyB0byBsb29rIG91dCBmb3IgaXMgdG8gcmVhbGl6ZSB0aGF0IGdyZWF0bmVzcyBpbiBvbmUgYXJlYSBkb2VzCitub3QgbmVjZXNzYXJpbHkgdHJhbnNsYXRlIHRvIG90aGVyIGFyZWFzLiAgU28geW91IG1pZ2h0IHByb2QgcGVvcGxlIGluCitzcGVjaWZpYyBkaXJlY3Rpb25zLCBidXQgbGV0J3MgZmFjZSBpdCwgdGhleSBtaWdodCBiZSBnb29kIGF0IHdoYXQgdGhleQorZG8sIGFuZCBzdWNrIGF0IGV2ZXJ5dGhpbmcgZWxzZS4gIFRoZSBnb29kIG5ld3MgaXMgdGhhdCBwZW9wbGUgdGVuZCB0bworbmF0dXJhbGx5IGdyYXZpdGF0ZSBiYWNrIHRvIHdoYXQgdGhleSBhcmUgZ29vZCBhdCwgc28gaXQncyBub3QgbGlrZSB5b3UKK2FyZSBkb2luZyBzb21ldGhpbmcgaXJyZXZlcnNpYmxlIHdoZW4geW91IF9kb18gcHJvZCB0aGVtIGluIHNvbWUKK2RpcmVjdGlvbiwganVzdCBkb24ndCBwdXNoIHRvbyBoYXJkLgorCisKKwkJQ2hhcHRlciA0OiBQbGFjaW5nIGJsYW1lCisKK1RoaW5ncyB3aWxsIGdvIHdyb25nLCBhbmQgcGVvcGxlIHdhbnQgc29tZWJvZHkgdG8gYmxhbWUuIFRhZywgeW91J3JlIGl0LgorCitJdCdzIG5vdCBhY3R1YWxseSB0aGF0IGhhcmQgdG8gYWNjZXB0IHRoZSBibGFtZSwgZXNwZWNpYWxseSBpZiBwZW9wbGUKK2tpbmQgb2YgcmVhbGl6ZSB0aGF0IGl0IHdhc24ndCBfYWxsXyB5b3VyIGZhdWx0LiAgV2hpY2ggYnJpbmdzIHVzIHRvIHRoZQorYmVzdCB3YXkgb2YgdGFraW5nIHRoZSBibGFtZTogZG8gaXQgZm9yIGFub3RoZXIgZ3V5LiBZb3UnbGwgZmVlbCBnb29kCitmb3IgdGFraW5nIHRoZSBmYWxsLCBoZSdsbCBmZWVsIGdvb2QgYWJvdXQgbm90IGdldHRpbmcgYmxhbWVkLCBhbmQgdGhlCitndXkgd2hvIGxvc3QgaGlzIHdob2xlIDM2R0IgcG9ybi1jb2xsZWN0aW9uIGJlY2F1c2Ugb2YgeW91ciBpbmNvbXBldGVuY2UKK3dpbGwgZ3J1ZGdpbmdseSBhZG1pdCB0aGF0IHlvdSBhdCBsZWFzdCBkaWRuJ3QgdHJ5IHRvIHdlYXNlbCBvdXQgb2YgaXQuCisKK1RoZW4gbWFrZSB0aGUgZGV2ZWxvcGVyIHdobyByZWFsbHkgc2NyZXdlZCB1cCAoaWYgeW91IGNhbiBmaW5kIGhpbSkga25vdworX2luX3ByaXZhdGVfIHRoYXQgaGUgc2NyZXdlZCB1cC4gIE5vdCBqdXN0IHNvIGhlIGNhbiBhdm9pZCBpdCBpbiB0aGUKK2Z1dHVyZSwgYnV0IHNvIHRoYXQgaGUga25vd3MgaGUgb3dlcyB5b3Ugb25lLiAgQW5kLCBwZXJoYXBzIGV2ZW4gbW9yZQoraW1wb3J0YW50bHksIGhlJ3MgYWxzbyBsaWtlbHkgdGhlIHBlcnNvbiB3aG8gY2FuIGZpeCBpdC4gIEJlY2F1c2UsIGxldCdzCitmYWNlIGl0LCBpdCBzdXJlIGFpbid0IHlvdS4gCisKK1Rha2luZyB0aGUgYmxhbWUgaXMgYWxzbyB3aHkgeW91IGdldCB0byBiZSBtYW5hZ2VyIGluIHRoZSBmaXJzdCBwbGFjZS4gCitJdCdzIHBhcnQgb2Ygd2hhdCBtYWtlcyBwZW9wbGUgdHJ1c3QgeW91LCBhbmQgYWxsb3cgeW91IHRoZSBwb3RlbnRpYWwKK2dsb3J5LCBiZWNhdXNlIHlvdSdyZSB0aGUgb25lIHdobyBnZXRzIHRvIHNheSAiSSBzY3Jld2VkIHVwIi4gIEFuZCBpZgoreW91J3ZlIGZvbGxvd2VkIHRoZSBwcmV2aW91cyBydWxlcywgeW91J2xsIGJlIHByZXR0eSBnb29kIGF0IHNheWluZyB0aGF0CitieSBub3cuIAorCisKKwkJQ2hhcHRlciA1OiBUaGluZ3MgdG8gYXZvaWQKKworVGhlcmUncyBvbmUgdGhpbmcgcGVvcGxlIGhhdGUgZXZlbiBtb3JlIHRoYW4gYmVpbmcgY2FsbGVkICJkKmNraGVhZCIsCithbmQgdGhhdCBpcyBiZWluZyBjYWxsZWQgYSAiZCpja2hlYWQiIGluIGEgc2FuY3RpbW9uaW91cyB2b2ljZS4gIFRoZQorZmlyc3QgeW91IGNhbiBhcG9sb2dpemUgZm9yLCB0aGUgc2Vjb25kIG9uZSB5b3Ugd29uJ3QgcmVhbGx5IGdldCB0aGUKK2NoYW5jZS4gIFRoZXkgbGlrZWx5IHdpbGwgbm8gbG9uZ2VyIGJlIGxpc3RlbmluZyBldmVuIGlmIHlvdSBvdGhlcndpc2UKK2RvIGEgZ29vZCBqb2IuIAorCitXZSBhbGwgdGhpbmsgd2UncmUgYmV0dGVyIHRoYW4gYW55Ym9keSBlbHNlLCB3aGljaCBtZWFucyB0aGF0IHdoZW4KK3NvbWVib2R5IGVsc2UgcHV0cyBvbiBhaXJzLCBpdCBfcmVhbGx5XyBydWJzIHVzIHRoZSB3cm9uZyB3YXkuICBZb3UgbWF5CitiZSBtb3JhbGx5IGFuZCBpbnRlbGxlY3R1YWxseSBzdXBlcmlvciB0byBldmVyeWJvZHkgYXJvdW5kIHlvdSwgYnV0Citkb24ndCB0cnkgdG8gbWFrZSBpdCB0b28gb2J2aW91cyB1bmxlc3MgeW91IHJlYWxseSBfaW50ZW5kXyB0byBpcnJpdGF0ZQorc29tZWJvZHkgKCopLiAKKworU2ltaWxhcmx5LCBkb24ndCBiZSB0b28gcG9saXRlIG9yIHN1YnRsZSBhYm91dCB0aGluZ3MuIFBvbGl0ZW5lc3MgZWFzaWx5CitlbmRzIHVwIGdvaW5nIG92ZXJib2FyZCBhbmQgaGlkaW5nIHRoZSBwcm9ibGVtLCBhbmQgYXMgdGhleSBzYXksICJPbiB0aGUKK2ludGVybmV0LCBub2JvZHkgY2FuIGhlYXIgeW91IGJlaW5nIHN1YnRsZSIuIFVzZSBhIGJpZyBibHVudCBvYmplY3QgdG8KK2hhbW1lciB0aGUgcG9pbnQgaW4sIGJlY2F1c2UgeW91IGNhbid0IHJlYWxseSBkZXBlbmQgb24gcGVvcGxlIGdldHRpbmcKK3lvdXIgcG9pbnQgb3RoZXJ3aXNlLgorCitTb21lIGh1bW9yIGNhbiBoZWxwIHBhZCBib3RoIHRoZSBibHVudG5lc3MgYW5kIHRoZSBtb3JhbGl6aW5nLiAgR29pbmcKK292ZXJib2FyZCB0byB0aGUgcG9pbnQgb2YgYmVpbmcgcmlkaWN1bG91cyBjYW4gZHJpdmUgYSBwb2ludCBob21lCit3aXRob3V0IG1ha2luZyBpdCBwYWluZnVsIHRvIHRoZSByZWNpcGllbnQsIHdobyBqdXN0IHRoaW5rcyB5b3UncmUgYmVpbmcKK3NpbGx5LiAgSXQgY2FuIHRodXMgaGVscCBnZXQgdGhyb3VnaCB0aGUgcGVyc29uYWwgbWVudGFsIGJsb2NrIHdlIGFsbAoraGF2ZSBhYm91dCBjcml0aWNpc20uIAorCisoKikgSGludDogaW50ZXJuZXQgbmV3c2dyb3VwcyB0aGF0IGFyZSBub3QgZGlyZWN0bHkgcmVsYXRlZCB0byB5b3VyIHdvcmsKK2FyZSBncmVhdCB3YXlzIHRvIHRha2Ugb3V0IHlvdXIgZnJ1c3RyYXRpb25zIGF0IG90aGVyIHBlb3BsZS4gV3JpdGUKK2luc3VsdGluZyBwb3N0cyB3aXRoIGEgc25lZXIganVzdCB0byBnZXQgaW50byBhIGdvb2QgZmxhbWUgZXZlcnkgb25jZSBpbgorYSB3aGlsZSwgYW5kIHlvdSdsbCBmZWVsIGNsZWFuc2VkLiBKdXN0IGRvbid0IGNyYXAgdG9vIGNsb3NlIHRvIGhvbWUuCisKKworCQlDaGFwdGVyIDY6IFdoeSBtZT8KKworU2luY2UgeW91ciBtYWluIHJlc3BvbnNpYmlsaXR5IHNlZW1zIHRvIGJlIHRvIHRha2UgdGhlIGJsYW1lIGZvciBvdGhlcgorcGVvcGxlcyBtaXN0YWtlcywgYW5kIG1ha2UgaXQgcGFpbmZ1bGx5IG9idmlvdXMgdG8gZXZlcnlib2R5IGVsc2UgdGhhdAoreW91J3JlIGluY29tcGV0ZW50LCB0aGUgb2J2aW91cyBxdWVzdGlvbiBiZWNvbWVzIG9uZSBvZiB3aHkgZG8gaXQgaW4gdGhlCitmaXJzdCBwbGFjZT8KKworRmlyc3Qgb2ZmLCB3aGlsZSB5b3UgbWF5IG9yIG1heSBub3QgZ2V0IHNjcmVhbWluZyB0ZWVuYWdlIGdpcmxzIChvcgorYm95cywgbGV0J3Mgbm90IGJlIGp1ZGdtZW50YWwgb3Igc2V4aXN0IGhlcmUpIGtub2NraW5nIG9uIHlvdXIgZHJlc3NpbmcKK3Jvb20gZG9vciwgeW91IF93aWxsXyBnZXQgYW4gaW1tZW5zZSBmZWVsaW5nIG9mIHBlcnNvbmFsIGFjY29tcGxpc2htZW50Citmb3IgYmVpbmcgImluIGNoYXJnZSIuICBOZXZlciBtaW5kIHRoZSBmYWN0IHRoYXQgeW91J3JlIHJlYWxseSBsZWFkaW5nCitieSB0cnlpbmcgdG8ga2VlcCB1cCB3aXRoIGV2ZXJ5Ym9keSBlbHNlIGFuZCBydW5uaW5nIGFmdGVyIHRoZW0gYXMgZmFzdAorYXMgeW91IGNhbi4gIEV2ZXJ5Ym9keSB3aWxsIHN0aWxsIHRoaW5rIHlvdSdyZSB0aGUgcGVyc29uIGluIGNoYXJnZS4gCisKK0l0J3MgYSBncmVhdCBqb2IgaWYgeW91IGNhbiBoYWNrIGl0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9QQ0kvMDAtSU5ERVggYi9Eb2N1bWVudGF0aW9uL1BDSS8wMC1JTkRFWApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDcyMzFmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9QQ0kvMDAtSU5ERVgKQEAgLTAsMCArMSwxNCBAQAorMDAtSU5ERVgKKwktIHRoaXMgZmlsZQorTVNJLUhPV1RPLnR4dAorCS0gdGhlIE1lc3NhZ2UgU2lnbmFsZWQgSW50ZXJydXB0cyAoTVNJKSBEcml2ZXIgR3VpZGUgSE9XVE8gYW5kIEZBUS4KK1BDSUVCVVMtSE9XVE8udHh0CisJLSBhIGd1aWRlIGRlc2NyaWJpbmcgdGhlIFBDSSBFeHByZXNzIFBvcnQgQnVzIGRyaXZlcgorcGNpLWVycm9yLXJlY292ZXJ5LnR4dAorCS0gaW5mbyBvbiBQQ0kgZXJyb3IgcmVjb3ZlcnkKK3BjaS1pb3YtaG93dG8udHh0CisJLSB0aGUgUENJIEV4cHJlc3MgSS9PIFZpcnR1YWxpemF0aW9uIEhPV1RPCitwY2kudHh0CisJLSBpbmZvIG9uIHRoZSBQQ0kgc3Vic3lzdGVtIGZvciBkZXZpY2UgZHJpdmVyIGF1dGhvcnMKK3BjaWVhZXItaG93dG8udHh0CisJLSB0aGUgUENJIEV4cHJlc3MgQWR2YW5jZWQgRXJyb3IgUmVwb3J0aW5nIERyaXZlciBHdWlkZSBIT1dUTwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9QQ0kvTVNJLUhPV1RPLnR4dCBiL0RvY3VtZW50YXRpb24vUENJL01TSS1IT1dUTy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE3OTg1MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUENJL01TSS1IT1dUTy50eHQKQEAgLTAsMCArMSw1ODcgQEAKKwkJVGhlIE1TSSBEcml2ZXIgR3VpZGUgSE9XVE8KKwlUb20gTCBOZ3V5ZW4gdG9tLmwubmd1eWVuQGludGVsLmNvbQorCQkJMTAvMDMvMjAwMworCVJldmlzZWQgRmViIDEyLCAyMDA0IGJ5IE1hcnRpbmUgU2lsYmVybWFubgorCQllbWFpbDogTWFydGluZS5TaWxiZXJtYW5uQGhwLmNvbQorCVJldmlzZWQgSnVuIDI1LCAyMDA0IGJ5IFRvbSBMIE5ndXllbgorCVJldmlzZWQgSnVsICA5LCAyMDA4IGJ5IE1hdHRoZXcgV2lsY294IDx3aWxseUBsaW51eC5pbnRlbC5jb20+CisJCUNvcHlyaWdodCAyMDAzLCAyMDA4IEludGVsIENvcnBvcmF0aW9uCisKKzEuIEFib3V0IHRoaXMgZ3VpZGUKKworVGhpcyBndWlkZSBkZXNjcmliZXMgdGhlIGJhc2ljcyBvZiBNZXNzYWdlIFNpZ25hbGVkIEludGVycnVwdHMgKE1TSXMpLAordGhlIGFkdmFudGFnZXMgb2YgdXNpbmcgTVNJIG92ZXIgdHJhZGl0aW9uYWwgaW50ZXJydXB0IG1lY2hhbmlzbXMsIGhvdwordG8gY2hhbmdlIHlvdXIgZHJpdmVyIHRvIHVzZSBNU0kgb3IgTVNJLVggYW5kIHNvbWUgYmFzaWMgZGlhZ25vc3RpY3MgdG8KK3RyeSBpZiBhIGRldmljZSBkb2Vzbid0IHN1cHBvcnQgTVNJcy4KKworCisyLiBXaGF0IGFyZSBNU0lzPworCitBIE1lc3NhZ2UgU2lnbmFsZWQgSW50ZXJydXB0IGlzIGEgd3JpdGUgZnJvbSB0aGUgZGV2aWNlIHRvIGEgc3BlY2lhbAorYWRkcmVzcyB3aGljaCBjYXVzZXMgYW4gaW50ZXJydXB0IHRvIGJlIHJlY2VpdmVkIGJ5IHRoZSBDUFUuCisKK1RoZSBNU0kgY2FwYWJpbGl0eSB3YXMgZmlyc3Qgc3BlY2lmaWVkIGluIFBDSSAyLjIgYW5kIHdhcyBsYXRlciBlbmhhbmNlZAoraW4gUENJIDMuMCB0byBhbGxvdyBlYWNoIGludGVycnVwdCB0byBiZSBtYXNrZWQgaW5kaXZpZHVhbGx5LiAgVGhlIE1TSS1YCitjYXBhYmlsaXR5IHdhcyBhbHNvIGludHJvZHVjZWQgd2l0aCBQQ0kgMy4wLiAgSXQgc3VwcG9ydHMgbW9yZSBpbnRlcnJ1cHRzCitwZXIgZGV2aWNlIHRoYW4gTVNJIGFuZCBhbGxvd3MgaW50ZXJydXB0cyB0byBiZSBpbmRlcGVuZGVudGx5IGNvbmZpZ3VyZWQuCisKK0RldmljZXMgbWF5IHN1cHBvcnQgYm90aCBNU0kgYW5kIE1TSS1YLCBidXQgb25seSBvbmUgY2FuIGJlIGVuYWJsZWQgYXQKK2EgdGltZS4KKworCiszLiBXaHkgdXNlIE1TSXM/CisKK1RoZXJlIGFyZSB0aHJlZSByZWFzb25zIHdoeSB1c2luZyBNU0lzIGNhbiBnaXZlIGFuIGFkdmFudGFnZSBvdmVyCit0cmFkaXRpb25hbCBwaW4tYmFzZWQgaW50ZXJydXB0cy4KKworUGluLWJhc2VkIFBDSSBpbnRlcnJ1cHRzIGFyZSBvZnRlbiBzaGFyZWQgYW1vbmdzdCBzZXZlcmFsIGRldmljZXMuCitUbyBzdXBwb3J0IHRoaXMsIHRoZSBrZXJuZWwgbXVzdCBjYWxsIGVhY2ggaW50ZXJydXB0IGhhbmRsZXIgYXNzb2NpYXRlZAord2l0aCBhbiBpbnRlcnJ1cHQsIHdoaWNoIGxlYWRzIHRvIHJlZHVjZWQgcGVyZm9ybWFuY2UgZm9yIHRoZSBzeXN0ZW0gYXMKK2Egd2hvbGUuICBNU0lzIGFyZSBuZXZlciBzaGFyZWQsIHNvIHRoaXMgcHJvYmxlbSBjYW5ub3QgYXJpc2UuCisKK1doZW4gYSBkZXZpY2Ugd3JpdGVzIGRhdGEgdG8gbWVtb3J5LCB0aGVuIHJhaXNlcyBhIHBpbi1iYXNlZCBpbnRlcnJ1cHQsCitpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBpbnRlcnJ1cHQgbWF5IGFycml2ZSBiZWZvcmUgYWxsIHRoZSBkYXRhIGhhcworYXJyaXZlZCBpbiBtZW1vcnkgKHRoaXMgYmVjb21lcyBtb3JlIGxpa2VseSB3aXRoIGRldmljZXMgYmVoaW5kIFBDSS1QQ0kKK2JyaWRnZXMpLiAgSW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgYWxsIHRoZSBkYXRhIGhhcyBhcnJpdmVkIGluIG1lbW9yeSwKK3RoZSBpbnRlcnJ1cHQgaGFuZGxlciBtdXN0IHJlYWQgYSByZWdpc3RlciBvbiB0aGUgZGV2aWNlIHdoaWNoIHJhaXNlZAordGhlIGludGVycnVwdC4gIFBDSSB0cmFuc2FjdGlvbiBvcmRlcmluZyBydWxlcyByZXF1aXJlIHRoYXQgYWxsIHRoZSBkYXRhCithcnJpdmUgaW4gbWVtb3J5IGJlZm9yZSB0aGUgdmFsdWUgbWF5IGJlIHJldHVybmVkIGZyb20gdGhlIHJlZ2lzdGVyLgorVXNpbmcgTVNJcyBhdm9pZHMgdGhpcyBwcm9ibGVtIGFzIHRoZSBpbnRlcnJ1cHQtZ2VuZXJhdGluZyB3cml0ZSBjYW5ub3QKK3Bhc3MgdGhlIGRhdGEgd3JpdGVzLCBzbyBieSB0aGUgdGltZSB0aGUgaW50ZXJydXB0IGlzIHJhaXNlZCwgdGhlIGRyaXZlcgora25vd3MgdGhhdCBhbGwgdGhlIGRhdGEgaGFzIGFycml2ZWQgaW4gbWVtb3J5LgorCitQQ0kgZGV2aWNlcyBjYW4gb25seSBzdXBwb3J0IGEgc2luZ2xlIHBpbi1iYXNlZCBpbnRlcnJ1cHQgcGVyIGZ1bmN0aW9uLgorT2Z0ZW4gZHJpdmVycyBoYXZlIHRvIHF1ZXJ5IHRoZSBkZXZpY2UgdG8gZmluZCBvdXQgd2hhdCBldmVudCBoYXMKK29jY3VycmVkLCBzbG93aW5nIGRvd24gaW50ZXJydXB0IGhhbmRsaW5nIGZvciB0aGUgY29tbW9uIGNhc2UuICBXaXRoCitNU0lzLCBhIGRldmljZSBjYW4gc3VwcG9ydCBtb3JlIGludGVycnVwdHMsIGFsbG93aW5nIGVhY2ggaW50ZXJydXB0Cit0byBiZSBzcGVjaWFsaXNlZCB0byBhIGRpZmZlcmVudCBwdXJwb3NlLiAgT25lIHBvc3NpYmxlIGRlc2lnbiBnaXZlcworaW5mcmVxdWVudCBjb25kaXRpb25zIChzdWNoIGFzIGVycm9ycykgdGhlaXIgb3duIGludGVycnVwdCB3aGljaCBhbGxvd3MKK3RoZSBkcml2ZXIgdG8gaGFuZGxlIHRoZSBub3JtYWwgaW50ZXJydXB0IGhhbmRsaW5nIHBhdGggbW9yZSBlZmZpY2llbnRseS4KK090aGVyIHBvc3NpYmxlIGRlc2lnbnMgaW5jbHVkZSBnaXZpbmcgb25lIGludGVycnVwdCB0byBlYWNoIHBhY2tldCBxdWV1ZQoraW4gYSBuZXR3b3JrIGNhcmQgb3IgZWFjaCBwb3J0IGluIGEgc3RvcmFnZSBjb250cm9sbGVyLgorCisKKzQuIEhvdyB0byB1c2UgTVNJcworCitQQ0kgZGV2aWNlcyBhcmUgaW5pdGlhbGlzZWQgdG8gdXNlIHBpbi1iYXNlZCBpbnRlcnJ1cHRzLiAgVGhlIGRldmljZQorZHJpdmVyIGhhcyB0byBzZXQgdXAgdGhlIGRldmljZSB0byB1c2UgTVNJIG9yIE1TSS1YLiAgTm90IGFsbCBtYWNoaW5lcworc3VwcG9ydCBNU0lzIGNvcnJlY3RseSwgYW5kIGZvciB0aG9zZSBtYWNoaW5lcywgdGhlIEFQSXMgZGVzY3JpYmVkIGJlbG93Cit3aWxsIHNpbXBseSBmYWlsIGFuZCB0aGUgZGV2aWNlIHdpbGwgY29udGludWUgdG8gdXNlIHBpbi1iYXNlZCBpbnRlcnJ1cHRzLgorCis0LjEgSW5jbHVkZSBrZXJuZWwgc3VwcG9ydCBmb3IgTVNJcworCitUbyBzdXBwb3J0IE1TSSBvciBNU0ktWCwgdGhlIGtlcm5lbCBtdXN0IGJlIGJ1aWx0IHdpdGggdGhlIENPTkZJR19QQ0lfTVNJCitvcHRpb24gZW5hYmxlZC4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcywKK2FuZCBpdCBtYXkgZGVwZW5kIG9uIHNvbWUgb3RoZXIgb3B0aW9ucyBhbHNvIGJlaW5nIHNldC4gIEZvciBleGFtcGxlLAorb24geDg2LCB5b3UgbXVzdCBhbHNvIGVuYWJsZSBYODZfVVBfQVBJQyBvciBTTVAgaW4gb3JkZXIgdG8gc2VlIHRoZQorQ09ORklHX1BDSV9NU0kgb3B0aW9uLgorCis0LjIgVXNpbmcgTVNJCisKK01vc3Qgb2YgdGhlIGhhcmQgd29yayBpcyBkb25lIGZvciB0aGUgZHJpdmVyIGluIHRoZSBQQ0kgbGF5ZXIuICBJdCBzaW1wbHkKK2hhcyB0byByZXF1ZXN0IHRoYXQgdGhlIFBDSSBsYXllciBzZXQgdXAgdGhlIE1TSSBjYXBhYmlsaXR5IGZvciB0aGlzCitkZXZpY2UuCisKKzQuMi4xIHBjaV9lbmFibGVfbXNpCisKK2ludCBwY2lfZW5hYmxlX21zaShzdHJ1Y3QgcGNpX2RldiAqZGV2KQorCitBIHN1Y2Nlc3NmdWwgY2FsbCBhbGxvY2F0ZXMgT05FIGludGVycnVwdCB0byB0aGUgZGV2aWNlLCByZWdhcmRsZXNzCitvZiBob3cgbWFueSBNU0lzIHRoZSBkZXZpY2Ugc3VwcG9ydHMuICBUaGUgZGV2aWNlIGlzIHN3aXRjaGVkIGZyb20KK3Bpbi1iYXNlZCBpbnRlcnJ1cHQgbW9kZSB0byBNU0kgbW9kZS4gIFRoZSBkZXYtPmlycSBudW1iZXIgaXMgY2hhbmdlZAordG8gYSBuZXcgbnVtYmVyIHdoaWNoIHJlcHJlc2VudHMgdGhlIG1lc3NhZ2Ugc2lnbmFsZWQgaW50ZXJydXB0OworY29uc2VxdWVudGx5LCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBkcml2ZXIgY2FsbHMKK3JlcXVlc3RfaXJxKCksIGJlY2F1c2UgYW4gTVNJIGlzIGRlbGl2ZXJlZCB2aWEgYSB2ZWN0b3IgdGhhdCBpcworZGlmZmVyZW50IGZyb20gdGhlIHZlY3RvciBvZiBhIHBpbi1iYXNlZCBpbnRlcnJ1cHQuCisKKzQuMi4yIHBjaV9lbmFibGVfbXNpX3JhbmdlCisKK2ludCBwY2lfZW5hYmxlX21zaV9yYW5nZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgbWludmVjLCBpbnQgbWF4dmVjKQorCitUaGlzIGZ1bmN0aW9uIGFsbG93cyBhIGRldmljZSBkcml2ZXIgdG8gcmVxdWVzdCBhbnkgbnVtYmVyIG9mIE1TSQoraW50ZXJydXB0cyB3aXRoaW4gc3BlY2lmaWVkIHJhbmdlIGZyb20gJ21pbnZlYycgdG8gJ21heHZlYycuCisKK0lmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIHBvc2l0aXZlIG51bWJlciBpdCBpbmRpY2F0ZXMgdGhlIG51bWJlciBvZgorTVNJIGludGVycnVwdHMgdGhhdCBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGFsbG9jYXRlZC4gIEluIHRoaXMgY2FzZQordGhlIGRldmljZSBpcyBzd2l0Y2hlZCBmcm9tIHBpbi1iYXNlZCBpbnRlcnJ1cHQgbW9kZSB0byBNU0kgbW9kZSBhbmQKK3VwZGF0ZXMgZGV2LT5pcnEgdG8gYmUgdGhlIGxvd2VzdCBvZiB0aGUgbmV3IGludGVycnVwdHMgYXNzaWduZWQgdG8gaXQuCitUaGUgb3RoZXIgaW50ZXJydXB0cyBhc3NpZ25lZCB0byB0aGUgZGV2aWNlIGFyZSBpbiB0aGUgcmFuZ2UgZGV2LT5pcnEKK3RvIGRldi0+aXJxICsgcmV0dXJuZWQgdmFsdWUgLSAxLiAgRGV2aWNlIGRyaXZlciBjYW4gdXNlIHRoZSByZXR1cm5lZAorbnVtYmVyIG9mIHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgTVNJIGludGVycnVwdHMgdG8gZnVydGhlciBhbGxvY2F0ZQorYW5kIGluaXRpYWxpemUgZGV2aWNlIHJlc291cmNlcy4KKworSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgbmVnYXRpdmUgbnVtYmVyLCBpdCBpbmRpY2F0ZXMgYW4gZXJyb3IgYW5kCit0aGUgZHJpdmVyIHNob3VsZCBub3QgYXR0ZW1wdCB0byByZXF1ZXN0IGFueSBtb3JlIE1TSSBpbnRlcnJ1cHRzIGZvcgordGhpcyBkZXZpY2UuCisKK1RoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGRyaXZlciBjYWxscyByZXF1ZXN0X2lycSgpLAorYmVjYXVzZSBNU0kgaW50ZXJydXB0cyBhcmUgZGVsaXZlcmVkIHZpYSB2ZWN0b3JzIHRoYXQgYXJlIGRpZmZlcmVudAorZnJvbSB0aGUgdmVjdG9yIG9mIGEgcGluLWJhc2VkIGludGVycnVwdC4KKworSXQgaXMgaWRlYWwgaWYgZHJpdmVycyBjYW4gY29wZSB3aXRoIGEgdmFyaWFibGUgbnVtYmVyIG9mIE1TSSBpbnRlcnJ1cHRzOwordGhlcmUgYXJlIG1hbnkgcmVhc29ucyB3aHkgdGhlIHBsYXRmb3JtIG1heSBub3QgYmUgYWJsZSB0byBwcm92aWRlIHRoZQorZXhhY3QgbnVtYmVyIHRoYXQgYSBkcml2ZXIgYXNrcyBmb3IuCisKK1RoZXJlIGNvdWxkIGJlIGRldmljZXMgdGhhdCBjYW4gbm90IG9wZXJhdGUgd2l0aCBqdXN0IGFueSBudW1iZXIgb2YgTVNJCitpbnRlcnJ1cHRzIHdpdGhpbiBhIHJhbmdlLiAgU2VlIGNoYXB0ZXIgNC4zLjEuMyB0byBnZXQgdGhlIGlkZWEgaG93IHRvCitoYW5kbGUgc3VjaCBkZXZpY2VzIGZvciBNU0ktWCAtIHRoZSBzYW1lIGxvZ2ljIGFwcGxpZXMgdG8gTVNJLgorCis0LjIuMS4xIE1heGltdW0gcG9zc2libGUgbnVtYmVyIG9mIE1TSSBpbnRlcnJ1cHRzCisKK1RoZSB0eXBpY2FsIHVzYWdlIG9mIE1TSSBpbnRlcnJ1cHRzIGlzIHRvIGFsbG9jYXRlIGFzIG1hbnkgdmVjdG9ycyBhcworcG9zc2libGUsIGxpa2VseSB1cCB0byB0aGUgbGltaXQgcmV0dXJuZWQgYnkgcGNpX21zaV92ZWNfY291bnQoKSBmdW5jdGlvbjoKKworc3RhdGljIGludCBmb29fZHJpdmVyX2VuYWJsZV9tc2koc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudmVjKQoreworCXJldHVybiBwY2lfZW5hYmxlX21zaV9yYW5nZShwZGV2LCAxLCBudmVjKTsKK30KKworTm90ZSB0aGUgdmFsdWUgb2YgJ21pbnZlYycgcGFyYW1ldGVyIGlzIDEuICBBcyAnbWludmVjJyBpcyBpbmNsdXNpdmUsCit0aGUgdmFsdWUgb2YgMCB3b3VsZCBiZSBtZWFuaW5nbGVzcyBhbmQgY291bGQgcmVzdWx0IGluIGVycm9yLgorCitTb21lIGRldmljZXMgaGF2ZSBhIG1pbmltYWwgbGltaXQgb24gbnVtYmVyIG9mIE1TSSBpbnRlcnJ1cHRzLgorSW4gdGhpcyBjYXNlIHRoZSBmdW5jdGlvbiBjb3VsZCBsb29rIGxpa2UgdGhpczoKKworc3RhdGljIGludCBmb29fZHJpdmVyX2VuYWJsZV9tc2koc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudmVjKQoreworCXJldHVybiBwY2lfZW5hYmxlX21zaV9yYW5nZShwZGV2LCBGT09fRFJJVkVSX01JTklNVU1fTlZFQywgbnZlYyk7Cit9CisKKzQuMi4xLjIgRXhhY3QgbnVtYmVyIG9mIE1TSSBpbnRlcnJ1cHRzCisKK0lmIGEgZHJpdmVyIGlzIHVuYWJsZSBvciB1bndpbGxpbmcgdG8gZGVhbCB3aXRoIGEgdmFyaWFibGUgbnVtYmVyIG9mIE1TSQoraW50ZXJydXB0cyBpdCBjb3VsZCByZXF1ZXN0IGEgcGFydGljdWxhciBudW1iZXIgb2YgaW50ZXJydXB0cyBieSBwYXNzaW5nCit0aGF0IG51bWJlciB0byBwY2lfZW5hYmxlX21zaV9yYW5nZSgpIGZ1bmN0aW9uIGFzIGJvdGggJ21pbnZlYycgYW5kICdtYXh2ZWMnCitwYXJhbWV0ZXJzOgorCitzdGF0aWMgaW50IGZvb19kcml2ZXJfZW5hYmxlX21zaShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG52ZWMpCit7CisJcmV0dXJuIHBjaV9lbmFibGVfbXNpX3JhbmdlKHBkZXYsIG52ZWMsIG52ZWMpOworfQorCitOb3RlLCB1bmxpa2UgcGNpX2VuYWJsZV9tc2lfZXhhY3QoKSBmdW5jdGlvbiwgd2hpY2ggY291bGQgYmUgYWxzbyB1c2VkIHRvCitlbmFibGUgYSBwYXJ0aWN1bGFyIG51bWJlciBvZiBNU0ktWCBpbnRlcnJ1cHRzLCBwY2lfZW5hYmxlX21zaV9yYW5nZSgpCityZXR1cm5zIGVpdGhlciBhIG5lZ2F0aXZlIGVycm5vIG9yICdudmVjJyAobm90IG5lZ2F0aXZlIGVycm5vIG9yIDAgLSBhcworcGNpX2VuYWJsZV9tc2lfZXhhY3QoKSBkb2VzKS4KKworNC4yLjEuMyBTaW5nbGUgTVNJIG1vZGUKKworVGhlIG1vc3Qgbm90b3Jpb3VzIGV4YW1wbGUgb2YgdGhlIHJlcXVlc3QgdHlwZSBkZXNjcmliZWQgYWJvdmUgaXMKK2VuYWJsaW5nIHRoZSBzaW5nbGUgTVNJIG1vZGUgZm9yIGEgZGV2aWNlLiAgSXQgY291bGQgYmUgZG9uZSBieSBwYXNzaW5nCit0d28gMXMgYXMgJ21pbnZlYycgYW5kICdtYXh2ZWMnOgorCitzdGF0aWMgaW50IGZvb19kcml2ZXJfZW5hYmxlX3NpbmdsZV9tc2koc3RydWN0IHBjaV9kZXYgKnBkZXYpCit7CisJcmV0dXJuIHBjaV9lbmFibGVfbXNpX3JhbmdlKHBkZXYsIDEsIDEpOworfQorCitOb3RlLCB1bmxpa2UgcGNpX2VuYWJsZV9tc2koKSBmdW5jdGlvbiwgd2hpY2ggY291bGQgYmUgYWxzbyB1c2VkIHRvCitlbmFibGUgdGhlIHNpbmdsZSBNU0kgbW9kZSwgcGNpX2VuYWJsZV9tc2lfcmFuZ2UoKSByZXR1cm5zIGVpdGhlciBhCituZWdhdGl2ZSBlcnJubyBvciAxIChub3QgbmVnYXRpdmUgZXJybm8gb3IgMCAtIGFzIHBjaV9lbmFibGVfbXNpKCkKK2RvZXMpLgorCis0LjIuMyBwY2lfZW5hYmxlX21zaV9leGFjdAorCitpbnQgcGNpX2VuYWJsZV9tc2lfZXhhY3Qoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IG52ZWMpCisKK1RoaXMgdmFyaWF0aW9uIG9uIHBjaV9lbmFibGVfbXNpX3JhbmdlKCkgY2FsbCBhbGxvd3MgYSBkZXZpY2UgZHJpdmVyIHRvCityZXF1ZXN0IGV4YWN0bHkgJ252ZWMnIE1TSXMuCisKK0lmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIG5lZ2F0aXZlIG51bWJlciwgaXQgaW5kaWNhdGVzIGFuIGVycm9yIGFuZAordGhlIGRyaXZlciBzaG91bGQgbm90IGF0dGVtcHQgdG8gcmVxdWVzdCBhbnkgbW9yZSBNU0kgaW50ZXJydXB0cyBmb3IKK3RoaXMgZGV2aWNlLgorCitCeSBjb250cmFzdCB3aXRoIHBjaV9lbmFibGVfbXNpX3JhbmdlKCkgZnVuY3Rpb24sIHBjaV9lbmFibGVfbXNpX2V4YWN0KCkKK3JldHVybnMgemVybyBpbiBjYXNlIG9mIHN1Y2Nlc3MsIHdoaWNoIGluZGljYXRlcyBNU0kgaW50ZXJydXB0cyBoYXZlIGJlZW4KK3N1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQuCisKKzQuMi40IHBjaV9kaXNhYmxlX21zaQorCit2b2lkIHBjaV9kaXNhYmxlX21zaShzdHJ1Y3QgcGNpX2RldiAqZGV2KQorCitUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIHRvIHVuZG8gdGhlIGVmZmVjdCBvZiBwY2lfZW5hYmxlX21zaV9yYW5nZSgpLgorQ2FsbGluZyBpdCByZXN0b3JlcyBkZXYtPmlycSB0byB0aGUgcGluLWJhc2VkIGludGVycnVwdCBudW1iZXIgYW5kIGZyZWVzCit0aGUgcHJldmlvdXNseSBhbGxvY2F0ZWQgTVNJcy4gIFRoZSBpbnRlcnJ1cHRzIG1heSBzdWJzZXF1ZW50bHkgYmUgYXNzaWduZWQKK3RvIGFub3RoZXIgZGV2aWNlLCBzbyBkcml2ZXJzIHNob3VsZCBub3QgY2FjaGUgdGhlIHZhbHVlIG9mIGRldi0+aXJxLgorCitCZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCBhIGRldmljZSBkcml2ZXIgbXVzdCBhbHdheXMgY2FsbCBmcmVlX2lycSgpCitvbiBhbnkgaW50ZXJydXB0IGZvciB3aGljaCBpdCBwcmV2aW91c2x5IGNhbGxlZCByZXF1ZXN0X2lycSgpLgorRmFpbHVyZSB0byBkbyBzbyByZXN1bHRzIGluIGEgQlVHX09OKCksIGxlYXZpbmcgdGhlIGRldmljZSB3aXRoCitNU0kgZW5hYmxlZCBhbmQgdGh1cyBsZWFraW5nIGl0cyB2ZWN0b3IuCisKKzQuMi40IHBjaV9tc2lfdmVjX2NvdW50CisKK2ludCBwY2lfbXNpX3ZlY19jb3VudChzdHJ1Y3QgcGNpX2RldiAqZGV2KQorCitUaGlzIGZ1bmN0aW9uIGNvdWxkIGJlIHVzZWQgdG8gcmV0cmlldmUgdGhlIG51bWJlciBvZiBNU0kgdmVjdG9ycyB0aGUKK2RldmljZSByZXF1ZXN0ZWQgKHZpYSB0aGUgTXVsdGlwbGUgTWVzc2FnZSBDYXBhYmxlIHJlZ2lzdGVyKS4gVGhlIE1TSQorc3BlY2lmaWNhdGlvbiBvbmx5IGFsbG93cyB0aGUgcmV0dXJuZWQgdmFsdWUgdG8gYmUgYSBwb3dlciBvZiB0d28sCit1cCB0byBhIG1heGltdW0gb2YgMl41ICgzMikuCisKK0lmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIG5lZ2F0aXZlIG51bWJlciwgaXQgaW5kaWNhdGVzIHRoZSBkZXZpY2UgaXMKK25vdCBjYXBhYmxlIG9mIHNlbmRpbmcgTVNJcy4KKworSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgcG9zaXRpdmUgbnVtYmVyLCBpdCBpbmRpY2F0ZXMgdGhlIG1heGltdW0KK251bWJlciBvZiBNU0kgaW50ZXJydXB0IHZlY3RvcnMgdGhhdCBjb3VsZCBiZSBhbGxvY2F0ZWQuCisKKzQuMyBVc2luZyBNU0ktWAorCitUaGUgTVNJLVggY2FwYWJpbGl0eSBpcyBtdWNoIG1vcmUgZmxleGlibGUgdGhhbiB0aGUgTVNJIGNhcGFiaWxpdHkuCitJdCBzdXBwb3J0cyB1cCB0byAyMDQ4IGludGVycnVwdHMsIGVhY2ggb2Ygd2hpY2ggY2FuIGJlIGNvbnRyb2xsZWQKK2luZGVwZW5kZW50bHkuICBUbyBzdXBwb3J0IHRoaXMgZmxleGliaWxpdHksIGRyaXZlcnMgbXVzdCB1c2UgYW4gYXJyYXkgb2YKK2BzdHJ1Y3QgbXNpeF9lbnRyeSc6CisKK3N0cnVjdCBtc2l4X2VudHJ5IHsKKwl1MTYgCXZlY3RvcjsgLyoga2VybmVsIHVzZXMgdG8gd3JpdGUgYWxsb2MgdmVjdG9yICovCisJdTE2CWVudHJ5OyAvKiBkcml2ZXIgdXNlcyB0byBzcGVjaWZ5IGVudHJ5ICovCit9OworCitUaGlzIGFsbG93cyBmb3IgdGhlIGRldmljZSB0byB1c2UgdGhlc2UgaW50ZXJydXB0cyBpbiBhIHNwYXJzZSBmYXNoaW9uOworZm9yIGV4YW1wbGUsIGl0IGNvdWxkIHVzZSBpbnRlcnJ1cHRzIDMgYW5kIDEwMjcgYW5kIHlldCBhbGxvY2F0ZSBvbmx5IGEKK3R3by1lbGVtZW50IGFycmF5LiAgVGhlIGRyaXZlciBpcyBleHBlY3RlZCB0byBmaWxsIGluIHRoZSAnZW50cnknIHZhbHVlCitpbiBlYWNoIGVsZW1lbnQgb2YgdGhlIGFycmF5IHRvIGluZGljYXRlIGZvciB3aGljaCBlbnRyaWVzIHRoZSBrZXJuZWwKK3Nob3VsZCBhc3NpZ24gaW50ZXJydXB0czsgaXQgaXMgaW52YWxpZCB0byBmaWxsIGluIHR3byBlbnRyaWVzIHdpdGggdGhlCitzYW1lIG51bWJlci4KKworNC4zLjEgcGNpX2VuYWJsZV9tc2l4X3JhbmdlCisKK2ludCBwY2lfZW5hYmxlX21zaXhfcmFuZ2Uoc3RydWN0IHBjaV9kZXYgKmRldiwgc3RydWN0IG1zaXhfZW50cnkgKmVudHJpZXMsCisJCQkgIGludCBtaW52ZWMsIGludCBtYXh2ZWMpCisKK0NhbGxpbmcgdGhpcyBmdW5jdGlvbiBhc2tzIHRoZSBQQ0kgc3Vic3lzdGVtIHRvIGFsbG9jYXRlIGFueSBudW1iZXIgb2YKK01TSS1YIGludGVycnVwdHMgd2l0aGluIHNwZWNpZmllZCByYW5nZSBmcm9tICdtaW52ZWMnIHRvICdtYXh2ZWMnLgorVGhlICdlbnRyaWVzJyBhcmd1bWVudCBpcyBhIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgbXNpeF9lbnRyeSBzdHJ1Y3RzCit3aGljaCBzaG91bGQgYmUgYXQgbGVhc3QgJ21heHZlYycgZW50cmllcyBpbiBzaXplLgorCitPbiBzdWNjZXNzLCB0aGUgZGV2aWNlIGlzIHN3aXRjaGVkIGludG8gTVNJLVggbW9kZSBhbmQgdGhlIGZ1bmN0aW9uCityZXR1cm5zIHRoZSBudW1iZXIgb2YgTVNJLVggaW50ZXJydXB0cyB0aGF0IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkKK2FsbG9jYXRlZC4gIEluIHRoaXMgY2FzZSB0aGUgJ3ZlY3RvcicgbWVtYmVyIGluIGVudHJpZXMgbnVtYmVyZWQgZnJvbQorMCB0byB0aGUgcmV0dXJuZWQgdmFsdWUgLSAxIGlzIHBvcHVsYXRlZCB3aXRoIHRoZSBpbnRlcnJ1cHQgbnVtYmVyOwordGhlIGRyaXZlciBzaG91bGQgdGhlbiBjYWxsIHJlcXVlc3RfaXJxKCkgZm9yIGVhY2ggJ3ZlY3RvcicgdGhhdCBpdAorZGVjaWRlcyB0byB1c2UuICBUaGUgZGV2aWNlIGRyaXZlciBpcyByZXNwb25zaWJsZSBmb3Iga2VlcGluZyB0cmFjayBvZiB0aGUKK2ludGVycnVwdHMgYXNzaWduZWQgdG8gdGhlIE1TSS1YIHZlY3RvcnMgc28gaXQgY2FuIGZyZWUgdGhlbSBhZ2FpbiBsYXRlci4KK0RldmljZSBkcml2ZXIgY2FuIHVzZSB0aGUgcmV0dXJuZWQgbnVtYmVyIG9mIHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgTVNJLVgKK2ludGVycnVwdHMgdG8gZnVydGhlciBhbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBkZXZpY2UgcmVzb3VyY2VzLgorCitJZiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYSBuZWdhdGl2ZSBudW1iZXIsIGl0IGluZGljYXRlcyBhbiBlcnJvciBhbmQKK3RoZSBkcml2ZXIgc2hvdWxkIG5vdCBhdHRlbXB0IHRvIGFsbG9jYXRlIGFueSBtb3JlIE1TSS1YIGludGVycnVwdHMgZm9yCit0aGlzIGRldmljZS4KKworVGhpcyBmdW5jdGlvbiwgaW4gY29udHJhc3Qgd2l0aCBwY2lfZW5hYmxlX21zaV9yYW5nZSgpLCBkb2VzIG5vdCBhZGp1c3QKK2Rldi0+aXJxLiAgVGhlIGRldmljZSB3aWxsIG5vdCBnZW5lcmF0ZSBpbnRlcnJ1cHRzIGZvciB0aGlzIGludGVycnVwdAorbnVtYmVyIG9uY2UgTVNJLVggaXMgZW5hYmxlZC4KKworRGV2aWNlIGRyaXZlcnMgc2hvdWxkIG5vcm1hbGx5IGNhbGwgdGhpcyBmdW5jdGlvbiBvbmNlIHBlciBkZXZpY2UKK2R1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gcGhhc2UuCisKK0l0IGlzIGlkZWFsIGlmIGRyaXZlcnMgY2FuIGNvcGUgd2l0aCBhIHZhcmlhYmxlIG51bWJlciBvZiBNU0ktWCBpbnRlcnJ1cHRzOwordGhlcmUgYXJlIG1hbnkgcmVhc29ucyB3aHkgdGhlIHBsYXRmb3JtIG1heSBub3QgYmUgYWJsZSB0byBwcm92aWRlIHRoZQorZXhhY3QgbnVtYmVyIHRoYXQgYSBkcml2ZXIgYXNrcyBmb3IuCisKK1RoZXJlIGNvdWxkIGJlIGRldmljZXMgdGhhdCBjYW4gbm90IG9wZXJhdGUgd2l0aCBqdXN0IGFueSBudW1iZXIgb2YgTVNJLVgKK2ludGVycnVwdHMgd2l0aGluIGEgcmFuZ2UuICBFLmcuLCBhbiBuZXR3b3JrIGFkYXB0ZXIgbWlnaHQgbmVlZCBsZXQncyBzYXkKK2ZvdXIgdmVjdG9ycyBwZXIgZWFjaCBxdWV1ZSBpdCBwcm92aWRlcy4gIFRoZXJlZm9yZSwgYSBudW1iZXIgb2YgTVNJLVgKK2ludGVycnVwdHMgYWxsb2NhdGVkIHNob3VsZCBiZSBhIG11bHRpcGxlIG9mIGZvdXIuICBJbiB0aGlzIGNhc2UgaW50ZXJmYWNlCitwY2lfZW5hYmxlX21zaXhfcmFuZ2UoKSBjYW4gbm90IGJlIHVzZWQgYWxvbmUgdG8gcmVxdWVzdCBNU0ktWCBpbnRlcnJ1cHRzCisoc2luY2UgaXQgY2FuIGFsbG9jYXRlIGFueSBudW1iZXIgd2l0aGluIHRoZSByYW5nZSwgd2l0aG91dCBhbnkgbm90aW9uIG9mCit0aGUgbXVsdGlwbGUgb2YgZm91cikgYW5kIHRoZSBkZXZpY2UgZHJpdmVyIHNob3VsZCBtYXN0ZXIgYSBjdXN0b20gbG9naWMKK3RvIHJlcXVlc3QgdGhlIHJlcXVpcmVkIG51bWJlciBvZiBNU0ktWCBpbnRlcnJ1cHRzLgorCis0LjMuMS4xIE1heGltdW0gcG9zc2libGUgbnVtYmVyIG9mIE1TSS1YIGludGVycnVwdHMKKworVGhlIHR5cGljYWwgdXNhZ2Ugb2YgTVNJLVggaW50ZXJydXB0cyBpcyB0byBhbGxvY2F0ZSBhcyBtYW55IHZlY3RvcnMgYXMKK3Bvc3NpYmxlLCBsaWtlbHkgdXAgdG8gdGhlIGxpbWl0IHJldHVybmVkIGJ5IHBjaV9tc2l4X3ZlY19jb3VudCgpIGZ1bmN0aW9uOgorCitzdGF0aWMgaW50IGZvb19kcml2ZXJfZW5hYmxlX21zaXgoc3RydWN0IGZvb19hZGFwdGVyICphZGFwdGVyLCBpbnQgbnZlYykKK3sKKwlyZXR1cm4gcGNpX2VuYWJsZV9tc2l4X3JhbmdlKGFkYXB0ZXItPnBkZXYsIGFkYXB0ZXItPm1zaXhfZW50cmllcywKKwkJCQkgICAgIDEsIG52ZWMpOworfQorCitOb3RlIHRoZSB2YWx1ZSBvZiAnbWludmVjJyBwYXJhbWV0ZXIgaXMgMS4gIEFzICdtaW52ZWMnIGlzIGluY2x1c2l2ZSwKK3RoZSB2YWx1ZSBvZiAwIHdvdWxkIGJlIG1lYW5pbmdsZXNzIGFuZCBjb3VsZCByZXN1bHQgaW4gZXJyb3IuCisKK1NvbWUgZGV2aWNlcyBoYXZlIGEgbWluaW1hbCBsaW1pdCBvbiBudW1iZXIgb2YgTVNJLVggaW50ZXJydXB0cy4KK0luIHRoaXMgY2FzZSB0aGUgZnVuY3Rpb24gY291bGQgbG9vayBsaWtlIHRoaXM6CisKK3N0YXRpYyBpbnQgZm9vX2RyaXZlcl9lbmFibGVfbXNpeChzdHJ1Y3QgZm9vX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCBudmVjKQoreworCXJldHVybiBwY2lfZW5hYmxlX21zaXhfcmFuZ2UoYWRhcHRlci0+cGRldiwgYWRhcHRlci0+bXNpeF9lbnRyaWVzLAorCQkJCSAgICAgRk9PX0RSSVZFUl9NSU5JTVVNX05WRUMsIG52ZWMpOworfQorCis0LjMuMS4yIEV4YWN0IG51bWJlciBvZiBNU0ktWCBpbnRlcnJ1cHRzCisKK0lmIGEgZHJpdmVyIGlzIHVuYWJsZSBvciB1bndpbGxpbmcgdG8gZGVhbCB3aXRoIGEgdmFyaWFibGUgbnVtYmVyIG9mIE1TSS1YCitpbnRlcnJ1cHRzIGl0IGNvdWxkIHJlcXVlc3QgYSBwYXJ0aWN1bGFyIG51bWJlciBvZiBpbnRlcnJ1cHRzIGJ5IHBhc3NpbmcKK3RoYXQgbnVtYmVyIHRvIHBjaV9lbmFibGVfbXNpeF9yYW5nZSgpIGZ1bmN0aW9uIGFzIGJvdGggJ21pbnZlYycgYW5kICdtYXh2ZWMnCitwYXJhbWV0ZXJzOgorCitzdGF0aWMgaW50IGZvb19kcml2ZXJfZW5hYmxlX21zaXgoc3RydWN0IGZvb19hZGFwdGVyICphZGFwdGVyLCBpbnQgbnZlYykKK3sKKwlyZXR1cm4gcGNpX2VuYWJsZV9tc2l4X3JhbmdlKGFkYXB0ZXItPnBkZXYsIGFkYXB0ZXItPm1zaXhfZW50cmllcywKKwkJCQkgICAgIG52ZWMsIG52ZWMpOworfQorCitOb3RlLCB1bmxpa2UgcGNpX2VuYWJsZV9tc2l4X2V4YWN0KCkgZnVuY3Rpb24sIHdoaWNoIGNvdWxkIGJlIGFsc28gdXNlZCB0bworZW5hYmxlIGEgcGFydGljdWxhciBudW1iZXIgb2YgTVNJLVggaW50ZXJydXB0cywgcGNpX2VuYWJsZV9tc2l4X3JhbmdlKCkKK3JldHVybnMgZWl0aGVyIGEgbmVnYXRpdmUgZXJybm8gb3IgJ252ZWMnIChub3QgbmVnYXRpdmUgZXJybm8gb3IgMCAtIGFzCitwY2lfZW5hYmxlX21zaXhfZXhhY3QoKSBkb2VzKS4KKworNC4zLjEuMyBTcGVjaWZpYyByZXF1aXJlbWVudHMgdG8gdGhlIG51bWJlciBvZiBNU0ktWCBpbnRlcnJ1cHRzCisKK0FzIG5vdGVkIGFib3ZlLCB0aGVyZSBjb3VsZCBiZSBkZXZpY2VzIHRoYXQgY2FuIG5vdCBvcGVyYXRlIHdpdGgganVzdCBhbnkKK251bWJlciBvZiBNU0ktWCBpbnRlcnJ1cHRzIHdpdGhpbiBhIHJhbmdlLiAgRS5nLiwgbGV0J3MgYXNzdW1lIGEgZGV2aWNlIHRoYXQKK2lzIG9ubHkgY2FwYWJsZSBzZW5kaW5nIHRoZSBudW1iZXIgb2YgTVNJLVggaW50ZXJydXB0cyB3aGljaCBpcyBhIHBvd2VyIG9mCit0d28uICBBIHJvdXRpbmUgdGhhdCBlbmFibGVzIE1TSS1YIG1vZGUgZm9yIHN1Y2ggZGV2aWNlIG1pZ2h0IGxvb2sgbGlrZSB0aGlzOgorCisvKgorICogQXNzdW1lICdtaW52ZWMnIGFuZCAnbWF4dmVjJyBhcmUgbm9uLXplcm8KKyAqLworc3RhdGljIGludCBmb29fZHJpdmVyX2VuYWJsZV9tc2l4KHN0cnVjdCBmb29fYWRhcHRlciAqYWRhcHRlciwKKwkJCQkgIGludCBtaW52ZWMsIGludCBtYXh2ZWMpCit7CisJaW50IHJjOworCisJbWludmVjID0gcm91bmR1cF9wb3dfb2ZfdHdvKG1pbnZlYyk7CisJbWF4dmVjID0gcm91bmRkb3duX3Bvd19vZl90d28obWF4dmVjKTsKKworCWlmIChtaW52ZWMgPiBtYXh2ZWMpCisJCXJldHVybiAtRVJBTkdFOworCityZXRyeToKKwlyYyA9IHBjaV9lbmFibGVfbXNpeF9yYW5nZShhZGFwdGVyLT5wZGV2LCBhZGFwdGVyLT5tc2l4X2VudHJpZXMsCisJCQkJICAgbWF4dmVjLCBtYXh2ZWMpOworCS8qCisJICogLUVOT1NQQyBpcyB0aGUgb25seSBlcnJvciBjb2RlIGFsbG93ZWQgdG8gYmUgYW5hbHl6ZWQKKwkgKi8KKwlpZiAocmMgPT0gLUVOT1NQQykgeworCQlpZiAobWF4dmVjID09IDEpCisJCQlyZXR1cm4gLUVOT1NQQzsKKworCQltYXh2ZWMgLz0gMjsKKworCQlpZiAobWludmVjID4gbWF4dmVjKQorCQkJcmV0dXJuIC1FTk9TUEM7CisKKwkJZ290byByZXRyeTsKKwl9CisKKwlyZXR1cm4gcmM7Cit9CisKK05vdGUgaG93IHBjaV9lbmFibGVfbXNpeF9yYW5nZSgpIHJldHVybiB2YWx1ZSBpcyBhbmFseXplZCBmb3IgYSBmYWxsYmFjayAtCithbnkgZXJyb3IgY29kZSBvdGhlciB0aGFuIC1FTk9TUEMgaW5kaWNhdGVzIGEgZmF0YWwgZXJyb3IgYW5kIHNob3VsZCBub3QKK2JlIHJldHJpZWQuCisKKzQuMy4yIHBjaV9lbmFibGVfbXNpeF9leGFjdAorCitpbnQgcGNpX2VuYWJsZV9tc2l4X2V4YWN0KHN0cnVjdCBwY2lfZGV2ICpkZXYsCisJCQkgIHN0cnVjdCBtc2l4X2VudHJ5ICplbnRyaWVzLCBpbnQgbnZlYykKKworVGhpcyB2YXJpYXRpb24gb24gcGNpX2VuYWJsZV9tc2l4X3JhbmdlKCkgY2FsbCBhbGxvd3MgYSBkZXZpY2UgZHJpdmVyIHRvCityZXF1ZXN0IGV4YWN0bHkgJ252ZWMnIE1TSS1Ycy4KKworSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgbmVnYXRpdmUgbnVtYmVyLCBpdCBpbmRpY2F0ZXMgYW4gZXJyb3IgYW5kCit0aGUgZHJpdmVyIHNob3VsZCBub3QgYXR0ZW1wdCB0byBhbGxvY2F0ZSBhbnkgbW9yZSBNU0ktWCBpbnRlcnJ1cHRzIGZvcgordGhpcyBkZXZpY2UuCisKK0J5IGNvbnRyYXN0IHdpdGggcGNpX2VuYWJsZV9tc2l4X3JhbmdlKCkgZnVuY3Rpb24sIHBjaV9lbmFibGVfbXNpeF9leGFjdCgpCityZXR1cm5zIHplcm8gaW4gY2FzZSBvZiBzdWNjZXNzLCB3aGljaCBpbmRpY2F0ZXMgTVNJLVggaW50ZXJydXB0cyBoYXZlIGJlZW4KK3N1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQuCisKK0Fub3RoZXIgdmVyc2lvbiBvZiBhIHJvdXRpbmUgdGhhdCBlbmFibGVzIE1TSS1YIG1vZGUgZm9yIGEgZGV2aWNlIHdpdGgKK3NwZWNpZmljIHJlcXVpcmVtZW50cyBkZXNjcmliZWQgaW4gY2hhcHRlciA0LjMuMS4zIG1pZ2h0IGxvb2sgbGlrZSB0aGlzOgorCisvKgorICogQXNzdW1lICdtaW52ZWMnIGFuZCAnbWF4dmVjJyBhcmUgbm9uLXplcm8KKyAqLworc3RhdGljIGludCBmb29fZHJpdmVyX2VuYWJsZV9tc2l4KHN0cnVjdCBmb29fYWRhcHRlciAqYWRhcHRlciwKKwkJCQkgIGludCBtaW52ZWMsIGludCBtYXh2ZWMpCit7CisJaW50IHJjOworCisJbWludmVjID0gcm91bmR1cF9wb3dfb2ZfdHdvKG1pbnZlYyk7CisJbWF4dmVjID0gcm91bmRkb3duX3Bvd19vZl90d28obWF4dmVjKTsKKworCWlmIChtaW52ZWMgPiBtYXh2ZWMpCisJCXJldHVybiAtRVJBTkdFOworCityZXRyeToKKwlyYyA9IHBjaV9lbmFibGVfbXNpeF9leGFjdChhZGFwdGVyLT5wZGV2LAorCQkJCSAgIGFkYXB0ZXItPm1zaXhfZW50cmllcywgbWF4dmVjKTsKKworCS8qCisJICogLUVOT1NQQyBpcyB0aGUgb25seSBlcnJvciBjb2RlIGFsbG93ZWQgdG8gYmUgYW5hbHl6ZWQKKwkgKi8KKwlpZiAocmMgPT0gLUVOT1NQQykgeworCQlpZiAobWF4dmVjID09IDEpCisJCQlyZXR1cm4gLUVOT1NQQzsKKworCQltYXh2ZWMgLz0gMjsKKworCQlpZiAobWludmVjID4gbWF4dmVjKQorCQkJcmV0dXJuIC1FTk9TUEM7CisKKwkJZ290byByZXRyeTsKKwl9IGVsc2UgaWYgKHJjIDwgMCkgeworCQlyZXR1cm4gcmM7CisJfQorCisJcmV0dXJuIG1heHZlYzsKK30KKworNC4zLjMgcGNpX2Rpc2FibGVfbXNpeAorCit2b2lkIHBjaV9kaXNhYmxlX21zaXgoc3RydWN0IHBjaV9kZXYgKmRldikKKworVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCB0byB1bmRvIHRoZSBlZmZlY3Qgb2YgcGNpX2VuYWJsZV9tc2l4X3JhbmdlKCkuCitJdCBmcmVlcyB0aGUgcHJldmlvdXNseSBhbGxvY2F0ZWQgTVNJLVggaW50ZXJydXB0cy4gVGhlIGludGVycnVwdHMgbWF5CitzdWJzZXF1ZW50bHkgYmUgYXNzaWduZWQgdG8gYW5vdGhlciBkZXZpY2UsIHNvIGRyaXZlcnMgc2hvdWxkIG5vdCBjYWNoZQordGhlIHZhbHVlIG9mIHRoZSAndmVjdG9yJyBlbGVtZW50cyBvdmVyIGEgY2FsbCB0byBwY2lfZGlzYWJsZV9tc2l4KCkuCisKK0JlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIGEgZGV2aWNlIGRyaXZlciBtdXN0IGFsd2F5cyBjYWxsIGZyZWVfaXJxKCkKK29uIGFueSBpbnRlcnJ1cHQgZm9yIHdoaWNoIGl0IHByZXZpb3VzbHkgY2FsbGVkIHJlcXVlc3RfaXJxKCkuCitGYWlsdXJlIHRvIGRvIHNvIHJlc3VsdHMgaW4gYSBCVUdfT04oKSwgbGVhdmluZyB0aGUgZGV2aWNlIHdpdGgKK01TSS1YIGVuYWJsZWQgYW5kIHRodXMgbGVha2luZyBpdHMgdmVjdG9yLgorCis0LjMuMyBUaGUgTVNJLVggVGFibGUKKworVGhlIE1TSS1YIGNhcGFiaWxpdHkgc3BlY2lmaWVzIGEgQkFSIGFuZCBvZmZzZXQgd2l0aGluIHRoYXQgQkFSIGZvciB0aGUKK01TSS1YIFRhYmxlLiAgVGhpcyBhZGRyZXNzIGlzIG1hcHBlZCBieSB0aGUgUENJIHN1YnN5c3RlbSwgYW5kIHNob3VsZCBub3QKK2JlIGFjY2Vzc2VkIGRpcmVjdGx5IGJ5IHRoZSBkZXZpY2UgZHJpdmVyLiAgSWYgdGhlIGRyaXZlciB3aXNoZXMgdG8KK21hc2sgb3IgdW5tYXNrIGFuIGludGVycnVwdCwgaXQgc2hvdWxkIGNhbGwgZGlzYWJsZV9pcnEoKSAvIGVuYWJsZV9pcnEoKS4KKworNC4zLjQgcGNpX21zaXhfdmVjX2NvdW50CisKK2ludCBwY2lfbXNpeF92ZWNfY291bnQoc3RydWN0IHBjaV9kZXYgKmRldikKKworVGhpcyBmdW5jdGlvbiBjb3VsZCBiZSB1c2VkIHRvIHJldHJpZXZlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBkZXZpY2UKK01TSS1YIHRhYmxlLgorCitJZiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYSBuZWdhdGl2ZSBudW1iZXIsIGl0IGluZGljYXRlcyB0aGUgZGV2aWNlIGlzCitub3QgY2FwYWJsZSBvZiBzZW5kaW5nIE1TSS1Ycy4KKworSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgcG9zaXRpdmUgbnVtYmVyLCBpdCBpbmRpY2F0ZXMgdGhlIG1heGltdW0KK251bWJlciBvZiBNU0ktWCBpbnRlcnJ1cHQgdmVjdG9ycyB0aGF0IGNvdWxkIGJlIGFsbG9jYXRlZC4KKworNC40IEhhbmRsaW5nIGRldmljZXMgaW1wbGVtZW50aW5nIGJvdGggTVNJIGFuZCBNU0ktWCBjYXBhYmlsaXRpZXMKKworSWYgYSBkZXZpY2UgaW1wbGVtZW50cyBib3RoIE1TSSBhbmQgTVNJLVggY2FwYWJpbGl0aWVzLCBpdCBjYW4KK3J1biBpbiBlaXRoZXIgTVNJIG1vZGUgb3IgTVNJLVggbW9kZSwgYnV0IG5vdCBib3RoIHNpbXVsdGFuZW91c2x5LgorVGhpcyBpcyBhIHJlcXVpcmVtZW50IG9mIHRoZSBQQ0kgc3BlYywgYW5kIGl0IGlzIGVuZm9yY2VkIGJ5IHRoZQorUENJIGxheWVyLiAgQ2FsbGluZyBwY2lfZW5hYmxlX21zaV9yYW5nZSgpIHdoZW4gTVNJLVggaXMgYWxyZWFkeQorZW5hYmxlZCBvciBwY2lfZW5hYmxlX21zaXhfcmFuZ2UoKSB3aGVuIE1TSSBpcyBhbHJlYWR5IGVuYWJsZWQKK3Jlc3VsdHMgaW4gYW4gZXJyb3IuICBJZiBhIGRldmljZSBkcml2ZXIgd2lzaGVzIHRvIHN3aXRjaCBiZXR3ZWVuIE1TSQorYW5kIE1TSS1YIGF0IHJ1bnRpbWUsIGl0IG11c3QgZmlyc3QgcXVpZXNjZSB0aGUgZGV2aWNlLCB0aGVuIHN3aXRjaAoraXQgYmFjayB0byBwaW4taW50ZXJydXB0IG1vZGUsIGJlZm9yZSBjYWxsaW5nIHBjaV9lbmFibGVfbXNpX3JhbmdlKCkKK29yIHBjaV9lbmFibGVfbXNpeF9yYW5nZSgpIGFuZCByZXN1bWluZyBvcGVyYXRpb24uICBUaGlzIGlzIG5vdCBleHBlY3RlZAordG8gYmUgYSBjb21tb24gb3BlcmF0aW9uIGJ1dCBtYXkgYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgb3IgdGVzdGluZworZHVyaW5nIGRldmVsb3BtZW50LgorCis0LjUgQ29uc2lkZXJhdGlvbnMgd2hlbiB1c2luZyBNU0lzCisKKzQuNS4xIENob29zaW5nIGJldHdlZW4gTVNJLVggYW5kIE1TSQorCitJZiB5b3VyIGRldmljZSBzdXBwb3J0cyBib3RoIE1TSS1YIGFuZCBNU0kgY2FwYWJpbGl0aWVzLCB5b3Ugc2hvdWxkIHVzZQordGhlIE1TSS1YIGZhY2lsaXRpZXMgaW4gcHJlZmVyZW5jZSB0byB0aGUgTVNJIGZhY2lsaXRpZXMuICBBcyBtZW50aW9uZWQKK2Fib3ZlLCBNU0ktWCBzdXBwb3J0cyBhbnkgbnVtYmVyIG9mIGludGVycnVwdHMgYmV0d2VlbiAxIGFuZCAyMDQ4LgorSW4gY29udHJhc3QsIE1TSSBpcyByZXN0cmljdGVkIHRvIGEgbWF4aW11bSBvZiAzMiBpbnRlcnJ1cHRzIChhbmQKK211c3QgYmUgYSBwb3dlciBvZiB0d28pLiAgSW4gYWRkaXRpb24sIHRoZSBNU0kgaW50ZXJydXB0IHZlY3RvcnMgbXVzdAorYmUgYWxsb2NhdGVkIGNvbnNlY3V0aXZlbHksIHNvIHRoZSBzeXN0ZW0gbWlnaHQgbm90IGJlIGFibGUgdG8gYWxsb2NhdGUKK2FzIG1hbnkgdmVjdG9ycyBmb3IgTVNJIGFzIGl0IGNvdWxkIGZvciBNU0ktWC4gIE9uIHNvbWUgcGxhdGZvcm1zLCBNU0kKK2ludGVycnVwdHMgbXVzdCBhbGwgYmUgdGFyZ2V0ZWQgYXQgdGhlIHNhbWUgc2V0IG9mIENQVXMgd2hlcmVhcyBNU0ktWAoraW50ZXJydXB0cyBjYW4gYWxsIGJlIHRhcmdldGVkIGF0IGRpZmZlcmVudCBDUFVzLgorCis0LjUuMiBTcGlubG9ja3MKKworTW9zdCBkZXZpY2UgZHJpdmVycyBoYXZlIGEgcGVyLWRldmljZSBzcGlubG9jayB3aGljaCBpcyB0YWtlbiBpbiB0aGUKK2ludGVycnVwdCBoYW5kbGVyLiAgV2l0aCBwaW4tYmFzZWQgaW50ZXJydXB0cyBvciBhIHNpbmdsZSBNU0ksIGl0IGlzIG5vdAorbmVjZXNzYXJ5IHRvIGRpc2FibGUgaW50ZXJydXB0cyAoTGludXggZ3VhcmFudGVlcyB0aGUgc2FtZSBpbnRlcnJ1cHQgd2lsbAorbm90IGJlIHJlLWVudGVyZWQpLiAgSWYgYSBkZXZpY2UgdXNlcyBtdWx0aXBsZSBpbnRlcnJ1cHRzLCB0aGUgZHJpdmVyCittdXN0IGRpc2FibGUgaW50ZXJydXB0cyB3aGlsZSB0aGUgbG9jayBpcyBoZWxkLiAgSWYgdGhlIGRldmljZSBzZW5kcworYSBkaWZmZXJlbnQgaW50ZXJydXB0LCB0aGUgZHJpdmVyIHdpbGwgZGVhZGxvY2sgdHJ5aW5nIHRvIHJlY3Vyc2l2ZWx5CithY3F1aXJlIHRoZSBzcGlubG9jay4gIFN1Y2ggZGVhZGxvY2tzIGNhbiBiZSBhdm9pZGVkIGJ5IHVzaW5nCitzcGluX2xvY2tfaXJxc2F2ZSgpIG9yIHNwaW5fbG9ja19pcnEoKSB3aGljaCBkaXNhYmxlIGxvY2FsIGludGVycnVwdHMKK2FuZCBhY3F1aXJlIHRoZSBsb2NrIChzZWUgRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2tlcm5lbC1sb2NraW5nKS4KKworNC42IEhvdyB0byB0ZWxsIHdoZXRoZXIgTVNJL01TSS1YIGlzIGVuYWJsZWQgb24gYSBkZXZpY2UKKworVXNpbmcgJ2xzcGNpIC12JyAoYXMgcm9vdCkgbWF5IHNob3cgc29tZSBkZXZpY2VzIHdpdGggIk1TSSIsICJNZXNzYWdlCitTaWduYWxsZWQgSW50ZXJydXB0cyIgb3IgIk1TSS1YIiBjYXBhYmlsaXRpZXMuICBFYWNoIG9mIHRoZXNlIGNhcGFiaWxpdGllcworaGFzIGFuICdFbmFibGUnIGZsYWcgd2hpY2ggaXMgZm9sbG93ZWQgd2l0aCBlaXRoZXIgIisiIChlbmFibGVkKQorb3IgIi0iIChkaXNhYmxlZCkuCisKKworNS4gTVNJIHF1aXJrcworCitTZXZlcmFsIFBDSSBjaGlwc2V0cyBvciBkZXZpY2VzIGFyZSBrbm93biBub3QgdG8gc3VwcG9ydCBNU0lzLgorVGhlIFBDSSBzdGFjayBwcm92aWRlcyB0aHJlZSB3YXlzIHRvIGRpc2FibGUgTVNJczoKKworMS4gZ2xvYmFsbHkKKzIuIG9uIGFsbCBkZXZpY2VzIGJlaGluZCBhIHNwZWNpZmljIGJyaWRnZQorMy4gb24gYSBzaW5nbGUgZGV2aWNlCisKKzUuMS4gRGlzYWJsaW5nIE1TSXMgZ2xvYmFsbHkKKworU29tZSBob3N0IGNoaXBzZXRzIHNpbXBseSBkb24ndCBzdXBwb3J0IE1TSXMgcHJvcGVybHkuICBJZiB3ZSdyZQorbHVja3ksIHRoZSBtYW51ZmFjdHVyZXIga25vd3MgdGhpcyBhbmQgaGFzIGluZGljYXRlZCBpdCBpbiB0aGUgQUNQSQorRkFEVCB0YWJsZS4gIEluIHRoaXMgY2FzZSwgTGludXggYXV0b21hdGljYWxseSBkaXNhYmxlcyBNU0lzLgorU29tZSBib2FyZHMgZG9uJ3QgaW5jbHVkZSB0aGlzIGluZm9ybWF0aW9uIGluIHRoZSB0YWJsZSBhbmQgc28gd2UgaGF2ZQordG8gZGV0ZWN0IHRoZW0gb3Vyc2VsdmVzLiAgVGhlIGNvbXBsZXRlIGxpc3Qgb2YgdGhlc2UgaXMgZm91bmQgbmVhciB0aGUKK3F1aXJrX2Rpc2FibGVfYWxsX21zaSgpIGZ1bmN0aW9uIGluIGRyaXZlcnMvcGNpL3F1aXJrcy5jLgorCitJZiB5b3UgaGF2ZSBhIGJvYXJkIHdoaWNoIGhhcyBwcm9ibGVtcyB3aXRoIE1TSXMsIHlvdSBjYW4gcGFzcyBwY2k9bm9tc2kKK29uIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIHRvIGRpc2FibGUgTVNJcyBvbiBhbGwgZGV2aWNlcy4gIEl0IHdvdWxkIGJlCitpbiB5b3VyIGJlc3QgaW50ZXJlc3RzIHRvIHJlcG9ydCB0aGUgcHJvYmxlbSB0byBsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitpbmNsdWRpbmcgYSBmdWxsICdsc3BjaSAtdicgc28gd2UgY2FuIGFkZCB0aGUgcXVpcmtzIHRvIHRoZSBrZXJuZWwuCisKKzUuMi4gRGlzYWJsaW5nIE1TSXMgYmVsb3cgYSBicmlkZ2UKKworU29tZSBQQ0kgYnJpZGdlcyBhcmUgbm90IGFibGUgdG8gcm91dGUgTVNJcyBiZXR3ZWVuIGJ1c3NlcyBwcm9wZXJseS4KK0luIHRoaXMgY2FzZSwgTVNJcyBtdXN0IGJlIGRpc2FibGVkIG9uIGFsbCBkZXZpY2VzIGJlaGluZCB0aGUgYnJpZGdlLgorCitTb21lIGJyaWRnZXMgYWxsb3cgeW91IHRvIGVuYWJsZSBNU0lzIGJ5IGNoYW5naW5nIHNvbWUgYml0cyBpbiB0aGVpcgorUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgKGVzcGVjaWFsbHkgdGhlIEh5cGVydHJhbnNwb3J0IGNoaXBzZXRzIHN1Y2gKK2FzIHRoZSBuVmlkaWEgbkZvcmNlIGFuZCBTZXJ2ZXJ3b3JrcyBIVDIwMDApLiAgQXMgd2l0aCBob3N0IGNoaXBzZXRzLAorTGludXggbW9zdGx5IGtub3dzIGFib3V0IHRoZW0gYW5kIGF1dG9tYXRpY2FsbHkgZW5hYmxlcyBNU0lzIGlmIGl0IGNhbi4KK0lmIHlvdSBoYXZlIGEgYnJpZGdlIHVua25vd24gdG8gTGludXgsIHlvdSBjYW4gZW5hYmxlCitNU0lzIGluIGNvbmZpZ3VyYXRpb24gc3BhY2UgdXNpbmcgd2hhdGV2ZXIgbWV0aG9kIHlvdSBrbm93IHdvcmtzLCB0aGVuCitlbmFibGUgTVNJcyBvbiB0aGF0IGJyaWRnZSBieSBkb2luZzoKKworICAgICAgIGVjaG8gMSA+IC9zeXMvYnVzL3BjaS9kZXZpY2VzLyRicmlkZ2UvbXNpX2J1cworCit3aGVyZSAkYnJpZGdlIGlzIHRoZSBQQ0kgYWRkcmVzcyBvZiB0aGUgYnJpZGdlIHlvdSd2ZSBlbmFibGVkIChlZworMDAwMDowMDowZS4wKS4KKworVG8gZGlzYWJsZSBNU0lzLCBlY2hvIDAgaW5zdGVhZCBvZiAxLiAgQ2hhbmdpbmcgdGhpcyB2YWx1ZSBzaG91bGQgYmUKK2RvbmUgd2l0aCBjYXV0aW9uIGFzIGl0IGNvdWxkIGJyZWFrIGludGVycnVwdCBoYW5kbGluZyBmb3IgYWxsIGRldmljZXMKK2JlbG93IHRoaXMgYnJpZGdlLgorCitBZ2FpbiwgcGxlYXNlIG5vdGlmeSBsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnIG9mIGFueSBicmlkZ2VzIHRoYXQgbmVlZAorc3BlY2lhbCBoYW5kbGluZy4KKworNS4zLiBEaXNhYmxpbmcgTVNJcyBvbiBhIHNpbmdsZSBkZXZpY2UKKworU29tZSBkZXZpY2VzIGFyZSBrbm93biB0byBoYXZlIGZhdWx0eSBNU0kgaW1wbGVtZW50YXRpb25zLiAgVXN1YWxseSB0aGlzCitpcyBoYW5kbGVkIGluIHRoZSBpbmRpdmlkdWFsIGRldmljZSBkcml2ZXIsIGJ1dCBvY2Nhc2lvbmFsbHkgaXQncyBuZWNlc3NhcnkKK3RvIGhhbmRsZSB0aGlzIHdpdGggYSBxdWlyay4gIFNvbWUgZHJpdmVycyBoYXZlIGFuIG9wdGlvbiB0byBkaXNhYmxlIHVzZQorb2YgTVNJLiAgV2hpbGUgdGhpcyBpcyBhIGNvbnZlbmllbnQgd29ya2Fyb3VuZCBmb3IgdGhlIGRyaXZlciBhdXRob3IsCitpdCBpcyBub3QgZ29vZCBwcmFjdGljZSwgYW5kIHNob3VsZCBub3QgYmUgZW11bGF0ZWQuCisKKzUuNC4gRmluZGluZyB3aHkgTVNJcyBhcmUgZGlzYWJsZWQgb24gYSBkZXZpY2UKKworRnJvbSB0aGUgYWJvdmUgdGhyZWUgc2VjdGlvbnMsIHlvdSBjYW4gc2VlIHRoYXQgdGhlcmUgYXJlIG1hbnkgcmVhc29ucword2h5IE1TSXMgbWF5IG5vdCBiZSBlbmFibGVkIGZvciBhIGdpdmVuIGRldmljZS4gIFlvdXIgZmlyc3Qgc3RlcCBzaG91bGQKK2JlIHRvIGV4YW1pbmUgeW91ciBkbWVzZyBjYXJlZnVsbHkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgTVNJcyBhcmUgZW5hYmxlZAorZm9yIHlvdXIgbWFjaGluZS4gIFlvdSBzaG91bGQgYWxzbyBjaGVjayB5b3VyIC5jb25maWcgdG8gYmUgc3VyZSB5b3UKK2hhdmUgZW5hYmxlZCBDT05GSUdfUENJX01TSS4KKworVGhlbiwgJ2xzcGNpIC10JyBnaXZlcyB0aGUgbGlzdCBvZiBicmlkZ2VzIGFib3ZlIGEgZGV2aWNlLiAgUmVhZGluZworL3N5cy9idXMvcGNpL2RldmljZXMvKi9tc2lfYnVzIHdpbGwgdGVsbCB5b3Ugd2hldGhlciBNU0lzIGFyZSBlbmFibGVkICgxKQorb3IgZGlzYWJsZWQgKDApLiAgSWYgMCBpcyBmb3VuZCBpbiBhbnkgb2YgdGhlIG1zaV9idXMgZmlsZXMgYmVsb25naW5nCit0byBicmlkZ2VzIGJldHdlZW4gdGhlIFBDSSByb290IGFuZCB0aGUgZGV2aWNlLCBNU0lzIGFyZSBkaXNhYmxlZC4KKworSXQgaXMgYWxzbyB3b3J0aCBjaGVja2luZyB0aGUgZGV2aWNlIGRyaXZlciB0byBzZWUgd2hldGhlciBpdCBzdXBwb3J0cyBNU0lzLgorRm9yIGV4YW1wbGUsIGl0IG1heSBjb250YWluIGNhbGxzIHRvIHBjaV9lbmFibGVfbXNpX3JhbmdlKCkgb3IKK3BjaV9lbmFibGVfbXNpeF9yYW5nZSgpLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9QQ0kvUENJRUJVUy1IT1dUTy50eHQgYi9Eb2N1bWVudGF0aW9uL1BDSS9QQ0lFQlVTLUhPV1RPLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmQ1ZjM3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9QQ0kvUENJRUJVUy1IT1dUTy50eHQKQEAgLTAsMCArMSwyMTcgQEAKKwkJVGhlIFBDSSBFeHByZXNzIFBvcnQgQnVzIERyaXZlciBHdWlkZSBIT1dUTworCVRvbSBMIE5ndXllbiB0b20ubC5uZ3V5ZW5AaW50ZWwuY29tCisJCQkxMS8wMy8yMDA0CisKKzEuIEFib3V0IHRoaXMgZ3VpZGUKKworVGhpcyBndWlkZSBkZXNjcmliZXMgdGhlIGJhc2ljcyBvZiB0aGUgUENJIEV4cHJlc3MgUG9ydCBCdXMgZHJpdmVyCithbmQgcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gaG93IHRvIGVuYWJsZSB0aGUgc2VydmljZSBkcml2ZXJzIHRvCityZWdpc3Rlci91bnJlZ2lzdGVyIHdpdGggdGhlIFBDSSBFeHByZXNzIFBvcnQgQnVzIERyaXZlci4KKworMi4gQ29weXJpZ2h0IDIwMDQgSW50ZWwgQ29ycG9yYXRpb24KKworMy4gV2hhdCBpcyB0aGUgUENJIEV4cHJlc3MgUG9ydCBCdXMgRHJpdmVyCisKK0EgUENJIEV4cHJlc3MgUG9ydCBpcyBhIGxvZ2ljYWwgUENJLVBDSSBCcmlkZ2Ugc3RydWN0dXJlLiBUaGVyZQorYXJlIHR3byB0eXBlcyBvZiBQQ0kgRXhwcmVzcyBQb3J0OiB0aGUgUm9vdCBQb3J0IGFuZCB0aGUgU3dpdGNoCitQb3J0LiBUaGUgUm9vdCBQb3J0IG9yaWdpbmF0ZXMgYSBQQ0kgRXhwcmVzcyBsaW5rIGZyb20gYSBQQ0kgRXhwcmVzcworUm9vdCBDb21wbGV4IGFuZCB0aGUgU3dpdGNoIFBvcnQgY29ubmVjdHMgUENJIEV4cHJlc3MgbGlua3MgdG8KK2ludGVybmFsIGxvZ2ljYWwgUENJIGJ1c2VzLiBUaGUgU3dpdGNoIFBvcnQsIHdoaWNoIGhhcyBpdHMgc2Vjb25kYXJ5CitidXMgcmVwcmVzZW50aW5nIHRoZSBzd2l0Y2gncyBpbnRlcm5hbCByb3V0aW5nIGxvZ2ljLCBpcyBjYWxsZWQgdGhlCitzd2l0Y2gncyBVcHN0cmVhbSBQb3J0LiBUaGUgc3dpdGNoJ3MgRG93bnN0cmVhbSBQb3J0IGlzIGJyaWRnaW5nIGZyb20KK3N3aXRjaCdzIGludGVybmFsIHJvdXRpbmcgYnVzIHRvIGEgYnVzIHJlcHJlc2VudGluZyB0aGUgZG93bnN0cmVhbQorUENJIEV4cHJlc3MgbGluayBmcm9tIHRoZSBQQ0kgRXhwcmVzcyBTd2l0Y2guCisKK0EgUENJIEV4cHJlc3MgUG9ydCBjYW4gcHJvdmlkZSB1cCB0byBmb3VyIGRpc3RpbmN0IGZ1bmN0aW9ucywKK3JlZmVycmVkIHRvIGluIHRoaXMgZG9jdW1lbnQgYXMgc2VydmljZXMsIGRlcGVuZGluZyBvbiBpdHMgcG9ydCB0eXBlLgorUENJIEV4cHJlc3MgUG9ydCdzIHNlcnZpY2VzIGluY2x1ZGUgbmF0aXZlIGhvdHBsdWcgc3VwcG9ydCAoSFApLAorcG93ZXIgbWFuYWdlbWVudCBldmVudCBzdXBwb3J0IChQTUUpLCBhZHZhbmNlZCBlcnJvciByZXBvcnRpbmcKK3N1cHBvcnQgKEFFUiksIGFuZCB2aXJ0dWFsIGNoYW5uZWwgc3VwcG9ydCAoVkMpLiBUaGVzZSBzZXJ2aWNlcyBtYXkKK2JlIGhhbmRsZWQgYnkgYSBzaW5nbGUgY29tcGxleCBkcml2ZXIgb3IgYmUgaW5kaXZpZHVhbGx5IGRpc3RyaWJ1dGVkCithbmQgaGFuZGxlZCBieSBjb3JyZXNwb25kaW5nIHNlcnZpY2UgZHJpdmVycy4KKworNC4gV2h5IHVzZSB0aGUgUENJIEV4cHJlc3MgUG9ydCBCdXMgRHJpdmVyPworCitJbiBleGlzdGluZyBMaW51eCBrZXJuZWxzLCB0aGUgTGludXggRGV2aWNlIERyaXZlciBNb2RlbCBhbGxvd3MgYQorcGh5c2ljYWwgZGV2aWNlIHRvIGJlIGhhbmRsZWQgYnkgb25seSBhIHNpbmdsZSBkcml2ZXIuIFRoZSBQQ0kKK0V4cHJlc3MgUG9ydCBpcyBhIFBDSS1QQ0kgQnJpZGdlIGRldmljZSB3aXRoIG11bHRpcGxlIGRpc3RpbmN0CitzZXJ2aWNlcy4gVG8gbWFpbnRhaW4gYSBjbGVhbiBhbmQgc2ltcGxlIHNvbHV0aW9uIGVhY2ggc2VydmljZQorbWF5IGhhdmUgaXRzIG93biBzb2Z0d2FyZSBzZXJ2aWNlIGRyaXZlci4gSW4gdGhpcyBjYXNlIHNldmVyYWwKK3NlcnZpY2UgZHJpdmVycyB3aWxsIGNvbXBldGUgZm9yIGEgc2luZ2xlIFBDSS1QQ0kgQnJpZGdlIGRldmljZS4KK0ZvciBleGFtcGxlLCBpZiB0aGUgUENJIEV4cHJlc3MgUm9vdCBQb3J0IG5hdGl2ZSBob3RwbHVnIHNlcnZpY2UKK2RyaXZlciBpcyBsb2FkZWQgZmlyc3QsIGl0IGNsYWltcyBhIFBDSS1QQ0kgQnJpZGdlIFJvb3QgUG9ydC4gVGhlCitrZXJuZWwgdGhlcmVmb3JlIGRvZXMgbm90IGxvYWQgb3RoZXIgc2VydmljZSBkcml2ZXJzIGZvciB0aGF0IFJvb3QKK1BvcnQuIEluIG90aGVyIHdvcmRzLCBpdCBpcyBpbXBvc3NpYmxlIHRvIGhhdmUgbXVsdGlwbGUgc2VydmljZQorZHJpdmVycyBsb2FkIGFuZCBydW4gb24gYSBQQ0ktUENJIEJyaWRnZSBkZXZpY2Ugc2ltdWx0YW5lb3VzbHkKK3VzaW5nIHRoZSBjdXJyZW50IGRyaXZlciBtb2RlbC4KKworVG8gZW5hYmxlIG11bHRpcGxlIHNlcnZpY2UgZHJpdmVycyBydW5uaW5nIHNpbXVsdGFuZW91c2x5IHJlcXVpcmVzCitoYXZpbmcgYSBQQ0kgRXhwcmVzcyBQb3J0IEJ1cyBkcml2ZXIsIHdoaWNoIG1hbmFnZXMgYWxsIHBvcHVsYXRlZAorUENJIEV4cHJlc3MgUG9ydHMgYW5kIGRpc3RyaWJ1dGVzIGFsbCBwcm92aWRlZCBzZXJ2aWNlIHJlcXVlc3RzCit0byB0aGUgY29ycmVzcG9uZGluZyBzZXJ2aWNlIGRyaXZlcnMgYXMgcmVxdWlyZWQuIFNvbWUga2V5CithZHZhbnRhZ2VzIG9mIHVzaW5nIHRoZSBQQ0kgRXhwcmVzcyBQb3J0IEJ1cyBkcml2ZXIgYXJlIGxpc3RlZCBiZWxvdzoKKworCS0gQWxsb3cgbXVsdGlwbGUgc2VydmljZSBkcml2ZXJzIHRvIHJ1biBzaW11bHRhbmVvdXNseSBvbgorCSAgYSBQQ0ktUENJIEJyaWRnZSBQb3J0IGRldmljZS4KKworCS0gQWxsb3cgc2VydmljZSBkcml2ZXJzIGltcGxlbWVudGVkIGluIGFuIGluZGVwZW5kZW50CisJICBzdGFnZWQgYXBwcm9hY2guCisKKwktIEFsbG93IG9uZSBzZXJ2aWNlIGRyaXZlciB0byBydW4gb24gbXVsdGlwbGUgUENJLVBDSSBCcmlkZ2UKKwkgIFBvcnQgZGV2aWNlcy4KKworCS0gTWFuYWdlIGFuZCBkaXN0cmlidXRlIHJlc291cmNlcyBvZiBhIFBDSS1QQ0kgQnJpZGdlIFBvcnQKKwkgIGRldmljZSB0byByZXF1ZXN0ZWQgc2VydmljZSBkcml2ZXJzLgorCis1LiBDb25maWd1cmluZyB0aGUgUENJIEV4cHJlc3MgUG9ydCBCdXMgRHJpdmVyIHZzLiBTZXJ2aWNlIERyaXZlcnMKKworNS4xIEluY2x1ZGluZyB0aGUgUENJIEV4cHJlc3MgUG9ydCBCdXMgRHJpdmVyIFN1cHBvcnQgaW50byB0aGUgS2VybmVsCisKK0luY2x1ZGluZyB0aGUgUENJIEV4cHJlc3MgUG9ydCBCdXMgZHJpdmVyIGRlcGVuZHMgb24gd2hldGhlciB0aGUgUENJCitFeHByZXNzIHN1cHBvcnQgaXMgaW5jbHVkZWQgaW4gdGhlIGtlcm5lbCBjb25maWcuIFRoZSBrZXJuZWwgd2lsbAorYXV0b21hdGljYWxseSBpbmNsdWRlIHRoZSBQQ0kgRXhwcmVzcyBQb3J0IEJ1cyBkcml2ZXIgYXMgYSBrZXJuZWwKK2RyaXZlciB3aGVuIHRoZSBQQ0kgRXhwcmVzcyBzdXBwb3J0IGlzIGVuYWJsZWQgaW4gdGhlIGtlcm5lbC4KKworNS4yIEVuYWJsaW5nIFNlcnZpY2UgRHJpdmVyIFN1cHBvcnQKKworUENJIGRldmljZSBkcml2ZXJzIGFyZSBpbXBsZW1lbnRlZCBiYXNlZCBvbiBMaW51eCBEZXZpY2UgRHJpdmVyIE1vZGVsLgorQWxsIHNlcnZpY2UgZHJpdmVycyBhcmUgUENJIGRldmljZSBkcml2ZXJzLiBBcyBkaXNjdXNzZWQgYWJvdmUsIGl0IGlzCitpbXBvc3NpYmxlIHRvIGxvYWQgYW55IHNlcnZpY2UgZHJpdmVyIG9uY2UgdGhlIGtlcm5lbCBoYXMgbG9hZGVkIHRoZQorUENJIEV4cHJlc3MgUG9ydCBCdXMgRHJpdmVyLiBUbyBtZWV0IHRoZSBQQ0kgRXhwcmVzcyBQb3J0IEJ1cyBEcml2ZXIKK01vZGVsIHJlcXVpcmVzIHNvbWUgbWluaW1hbCBjaGFuZ2VzIG9uIGV4aXN0aW5nIHNlcnZpY2UgZHJpdmVycyB0aGF0CitpbXBvc2VzIG5vIGltcGFjdCBvbiB0aGUgZnVuY3Rpb25hbGl0eSBvZiBleGlzdGluZyBzZXJ2aWNlIGRyaXZlcnMuCisKK0Egc2VydmljZSBkcml2ZXIgaXMgcmVxdWlyZWQgdG8gdXNlIHRoZSB0d28gQVBJcyBzaG93biBiZWxvdyB0bworcmVnaXN0ZXIgaXRzIHNlcnZpY2Ugd2l0aCB0aGUgUENJIEV4cHJlc3MgUG9ydCBCdXMgZHJpdmVyIChzZWUKK3NlY3Rpb24gNS4yLjEgJiA1LjIuMikuIEl0IGlzIGltcG9ydGFudCB0aGF0IGEgc2VydmljZSBkcml2ZXIKK2luaXRpYWxpemVzIHRoZSBwY2llX3BvcnRfc2VydmljZV9kcml2ZXIgZGF0YSBzdHJ1Y3R1cmUsIGluY2x1ZGVkIGluCitoZWFkZXIgZmlsZSAvaW5jbHVkZS9saW51eC9wY2llcG9ydF9pZi5oLCBiZWZvcmUgY2FsbGluZyB0aGVzZSBBUElzLgorRmFpbHVyZSB0byBkbyBzbyB3aWxsIHJlc3VsdCBhbiBpZGVudGl0eSBtaXNtYXRjaCwgd2hpY2ggcHJldmVudHMKK3RoZSBQQ0kgRXhwcmVzcyBQb3J0IEJ1cyBkcml2ZXIgZnJvbSBsb2FkaW5nIGEgc2VydmljZSBkcml2ZXIuCisKKzUuMi4xIHBjaWVfcG9ydF9zZXJ2aWNlX3JlZ2lzdGVyCisKK2ludCBwY2llX3BvcnRfc2VydmljZV9yZWdpc3RlcihzdHJ1Y3QgcGNpZV9wb3J0X3NlcnZpY2VfZHJpdmVyICpuZXcpCisKK1RoaXMgQVBJIHJlcGxhY2VzIHRoZSBMaW51eCBEcml2ZXIgTW9kZWwncyBwY2lfcmVnaXN0ZXJfZHJpdmVyIEFQSS4gQQorc2VydmljZSBkcml2ZXIgc2hvdWxkIGFsd2F5cyBjYWxscyBwY2llX3BvcnRfc2VydmljZV9yZWdpc3RlciBhdAorbW9kdWxlIGluaXQuIE5vdGUgdGhhdCBhZnRlciBzZXJ2aWNlIGRyaXZlciBiZWluZyBsb2FkZWQsIGNhbGxzCitzdWNoIGFzIHBjaV9lbmFibGVfZGV2aWNlKGRldikgYW5kIHBjaV9zZXRfbWFzdGVyKGRldikgYXJlIG5vIGxvbmdlcgorbmVjZXNzYXJ5IHNpbmNlIHRoZXNlIGNhbGxzIGFyZSBleGVjdXRlZCBieSB0aGUgUENJIFBvcnQgQnVzIGRyaXZlci4KKworNS4yLjIgcGNpZV9wb3J0X3NlcnZpY2VfdW5yZWdpc3RlcgorCit2b2lkIHBjaWVfcG9ydF9zZXJ2aWNlX3VucmVnaXN0ZXIoc3RydWN0IHBjaWVfcG9ydF9zZXJ2aWNlX2RyaXZlciAqbmV3KQorCitwY2llX3BvcnRfc2VydmljZV91bnJlZ2lzdGVyIHJlcGxhY2VzIHRoZSBMaW51eCBEcml2ZXIgTW9kZWwncworcGNpX3VucmVnaXN0ZXJfZHJpdmVyLiBJdCdzIGFsd2F5cyBjYWxsZWQgYnkgc2VydmljZSBkcml2ZXIgd2hlbiBhCittb2R1bGUgZXhpdHMuCisKKzUuMi4zIFNhbXBsZSBDb2RlCisKK0JlbG93IGlzIHNhbXBsZSBzZXJ2aWNlIGRyaXZlciBjb2RlIHRvIGluaXRpYWxpemUgdGhlIHBvcnQgc2VydmljZQorZHJpdmVyIGRhdGEgc3RydWN0dXJlLgorCitzdGF0aWMgc3RydWN0IHBjaWVfcG9ydF9zZXJ2aWNlX2lkIHNlcnZpY2VfaWRbXSA9IHsgeworCS52ZW5kb3IgPSBQQ0lfQU5ZX0lELAorCS5kZXZpY2UgPSBQQ0lfQU5ZX0lELAorCS5wb3J0X3R5cGUgPSBQQ0lFX1JDX1BPUlQsCisJLnNlcnZpY2VfdHlwZSA9IFBDSUVfUE9SVF9TRVJWSUNFX0FFUiwKKwl9LCB7IC8qIGVuZDogYWxsIHplcm9lcyAqLyB9Cit9OworCitzdGF0aWMgc3RydWN0IHBjaWVfcG9ydF9zZXJ2aWNlX2RyaXZlciByb290X2FlcmRydiA9IHsKKwkubmFtZQkJPSAoY2hhciAqKWRldmljZV9uYW1lLAorCS5pZF90YWJsZQk9ICZzZXJ2aWNlX2lkWzBdLAorCisJLnByb2JlCQk9IGFlcmRydl9sb2FkLAorCS5yZW1vdmUJCT0gYWVyZHJ2X3VubG9hZCwKKworCS5zdXNwZW5kCT0gYWVyZHJ2X3N1c3BlbmQsCisJLnJlc3VtZQkJPSBhZXJkcnZfcmVzdW1lLAorfTsKKworQmVsb3cgaXMgYSBzYW1wbGUgY29kZSBmb3IgcmVnaXN0ZXJpbmcvdW5yZWdpc3RlcmluZyBhIHNlcnZpY2UKK2RyaXZlci4KKworc3RhdGljIGludCBfX2luaXQgYWVyZHJ2X3NlcnZpY2VfaW5pdCh2b2lkKQoreworCWludCByZXR2YWwgPSAwOworCisJcmV0dmFsID0gcGNpZV9wb3J0X3NlcnZpY2VfcmVnaXN0ZXIoJnJvb3RfYWVyZHJ2KTsKKwlpZiAoIXJldHZhbCkgeworCQkvKgorCQkgKiBGSVggTUUKKwkJICovCisJfQorCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBhZXJkcnZfc2VydmljZV9leGl0KHZvaWQpCit7CisJcGNpZV9wb3J0X3NlcnZpY2VfdW5yZWdpc3Rlcigmcm9vdF9hZXJkcnYpOworfQorCittb2R1bGVfaW5pdChhZXJkcnZfc2VydmljZV9pbml0KTsKK21vZHVsZV9leGl0KGFlcmRydl9zZXJ2aWNlX2V4aXQpOworCis2LiBQb3NzaWJsZSBSZXNvdXJjZSBDb25mbGljdHMKKworU2luY2UgYWxsIHNlcnZpY2UgZHJpdmVycyBvZiBhIFBDSS1QQ0kgQnJpZGdlIFBvcnQgZGV2aWNlIGFyZQorYWxsb3dlZCB0byBydW4gc2ltdWx0YW5lb3VzbHksIGJlbG93IGxpc3RzIGEgZmV3IG9mIHBvc3NpYmxlIHJlc291cmNlCitjb25mbGljdHMgd2l0aCBwcm9wb3NlZCBzb2x1dGlvbnMuCisKKzYuMSBNU0kgVmVjdG9yIFJlc291cmNlCisKK1RoZSBNU0kgY2FwYWJpbGl0eSBzdHJ1Y3R1cmUgZW5hYmxlcyBhIGRldmljZSBzb2Z0d2FyZSBkcml2ZXIgdG8gY2FsbAorcGNpX2VuYWJsZV9tc2kgdG8gcmVxdWVzdCBNU0kgYmFzZWQgaW50ZXJydXB0cy4gT25jZSBNU0kgaW50ZXJydXB0cworYXJlIGVuYWJsZWQgb24gYSBkZXZpY2UsIGl0IHN0YXlzIGluIHRoaXMgbW9kZSB1bnRpbCBhIGRldmljZSBkcml2ZXIKK2NhbGxzIHBjaV9kaXNhYmxlX21zaSB0byBkaXNhYmxlIE1TSSBpbnRlcnJ1cHRzIGFuZCByZXZlcnQgYmFjayB0bworSU5UeCBlbXVsYXRpb24gbW9kZS4gU2luY2Ugc2VydmljZSBkcml2ZXJzIG9mIHRoZSBzYW1lIFBDSS1QQ0kgQnJpZGdlCitwb3J0IHNoYXJlIHRoZSBzYW1lIHBoeXNpY2FsIGRldmljZSwgaWYgYW4gaW5kaXZpZHVhbCBzZXJ2aWNlIGRyaXZlcgorY2FsbHMgcGNpX2VuYWJsZV9tc2kvcGNpX2Rpc2FibGVfbXNpIGl0IG1heSByZXN1bHQgdW5wcmVkaWN0YWJsZQorYmVoYXZpb3IuIEZvciBleGFtcGxlLCB0d28gc2VydmljZSBkcml2ZXJzIHJ1biBzaW11bHRhbmVvdXNseSBvbiB0aGUKK3NhbWUgcGh5c2ljYWwgUm9vdCBQb3J0LiBCb3RoIHNlcnZpY2UgZHJpdmVycyBjYWxsIHBjaV9lbmFibGVfbXNpIHRvCityZXF1ZXN0IE1TSSBiYXNlZCBpbnRlcnJ1cHRzLiBBIHNlcnZpY2UgZHJpdmVyIG1heSBub3Qga25vdyB3aGV0aGVyCithbnkgb3RoZXIgc2VydmljZSBkcml2ZXJzIGhhdmUgcnVuIG9uIHRoaXMgUm9vdCBQb3J0LiBJZiBlaXRoZXIgb25lCitvZiB0aGVtIGNhbGxzIHBjaV9kaXNhYmxlX21zaSwgaXQgcHV0cyB0aGUgb3RoZXIgc2VydmljZSBkcml2ZXIKK2luIGEgd3JvbmcgaW50ZXJydXB0IG1vZGUuCisKK1RvIGF2b2lkIHRoaXMgc2l0dWF0aW9uIGFsbCBzZXJ2aWNlIGRyaXZlcnMgYXJlIG5vdCBwZXJtaXR0ZWQgdG8KK3N3aXRjaCBpbnRlcnJ1cHQgbW9kZSBvbiBpdHMgZGV2aWNlLiBUaGUgUENJIEV4cHJlc3MgUG9ydCBCdXMgZHJpdmVyCitpcyByZXNwb25zaWJsZSBmb3IgZGV0ZXJtaW5pbmcgdGhlIGludGVycnVwdCBtb2RlIGFuZCB0aGlzIHNob3VsZCBiZQordHJhbnNwYXJlbnQgdG8gc2VydmljZSBkcml2ZXJzLiBTZXJ2aWNlIGRyaXZlcnMgbmVlZCB0byBrbm93IG9ubHkKK3RoZSB2ZWN0b3IgSVJRIGFzc2lnbmVkIHRvIHRoZSBmaWVsZCBpcnEgb2Ygc3RydWN0IHBjaWVfZGV2aWNlLCB3aGljaAoraXMgcGFzc2VkIGluIHdoZW4gdGhlIFBDSSBFeHByZXNzIFBvcnQgQnVzIGRyaXZlciBwcm9iZXMgZWFjaCBzZXJ2aWNlCitkcml2ZXIuIFNlcnZpY2UgZHJpdmVycyBzaG91bGQgdXNlIChzdHJ1Y3QgcGNpZV9kZXZpY2UqKWRldi0+aXJxIHRvCitjYWxsIHJlcXVlc3RfaXJxL2ZyZWVfaXJxLiBJbiBhZGRpdGlvbiwgdGhlIGludGVycnVwdCBtb2RlIGlzIHN0b3JlZAoraW4gdGhlIGZpZWxkIGludGVycnVwdF9tb2RlIG9mIHN0cnVjdCBwY2llX2RldmljZS4KKworNi4yIE1TSS1YIFZlY3RvciBSZXNvdXJjZXMKKworU2ltaWxhciB0byB0aGUgTVNJIGEgZGV2aWNlIGRyaXZlciBmb3IgYW4gTVNJLVggY2FwYWJsZSBkZXZpY2UgY2FuCitjYWxsIHBjaV9lbmFibGVfbXNpeCB0byByZXF1ZXN0IE1TSS1YIGludGVycnVwdHMuIEFsbCBzZXJ2aWNlIGRyaXZlcnMKK2FyZSBub3QgcGVybWl0dGVkIHRvIHN3aXRjaCBpbnRlcnJ1cHQgbW9kZSBvbiBpdHMgZGV2aWNlLiBUaGUgUENJCitFeHByZXNzIFBvcnQgQnVzIGRyaXZlciBpcyByZXNwb25zaWJsZSBmb3IgZGV0ZXJtaW5pbmcgdGhlIGludGVycnVwdAorbW9kZSBhbmQgdGhpcyBzaG91bGQgYmUgdHJhbnNwYXJlbnQgdG8gc2VydmljZSBkcml2ZXJzLiBBbnkgYXR0ZW1wdAorYnkgc2VydmljZSBkcml2ZXIgdG8gY2FsbCBwY2lfZW5hYmxlX21zaXgvcGNpX2Rpc2FibGVfbXNpeCBtYXkKK3Jlc3VsdCB1bnByZWRpY3RhYmxlIGJlaGF2aW9yLiBTZXJ2aWNlIGRyaXZlcnMgc2hvdWxkIHVzZQorKHN0cnVjdCBwY2llX2RldmljZSopZGV2LT5pcnEgYW5kIGNhbGwgcmVxdWVzdF9pcnEvZnJlZV9pcnEuCisKKzYuMyBQQ0kgTWVtb3J5L0lPIE1hcHBlZCBSZWdpb25zCisKK1NlcnZpY2UgZHJpdmVycyBmb3IgUENJIEV4cHJlc3MgUG93ZXIgTWFuYWdlbWVudCAoUE1FKSwgQWR2YW5jZWQKK0Vycm9yIFJlcG9ydGluZyAoQUVSKSwgSG90LVBsdWcgKEhQKSBhbmQgVmlydHVhbCBDaGFubmVsIChWQykgYWNjZXNzCitQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSBvbiB0aGUgUENJIEV4cHJlc3MgcG9ydC4gSW4gYWxsIGNhc2VzIHRoZQorcmVnaXN0ZXJzIGFjY2Vzc2VkIGFyZSBpbmRlcGVuZGVudCBvZiBlYWNoIG90aGVyLiBUaGlzIHBhdGNoIGFzc3VtZXMKK3RoYXQgYWxsIHNlcnZpY2UgZHJpdmVycyB3aWxsIGJlIHdlbGwgYmVoYXZlZCBhbmQgbm90IG92ZXJ3cml0ZQorb3RoZXIgc2VydmljZSBkcml2ZXIncyBjb25maWd1cmF0aW9uIHNldHRpbmdzLgorCis2LjQgUENJIENvbmZpZyBSZWdpc3RlcnMKKworRWFjaCBzZXJ2aWNlIGRyaXZlciBydW5zIGl0cyBQQ0kgY29uZmlnIG9wZXJhdGlvbnMgb24gaXRzIG93bgorY2FwYWJpbGl0eSBzdHJ1Y3R1cmUgZXhjZXB0IHRoZSBQQ0kgRXhwcmVzcyBjYXBhYmlsaXR5IHN0cnVjdHVyZSwgaW4KK3doaWNoIFJvb3QgQ29udHJvbCByZWdpc3RlciBhbmQgRGV2aWNlIENvbnRyb2wgcmVnaXN0ZXIgYXJlIHNoYXJlZAorYmV0d2VlbiBQTUUgYW5kIEFFUi4gVGhpcyBwYXRjaCBhc3N1bWVzIHRoYXQgYWxsIHNlcnZpY2UgZHJpdmVycword2lsbCBiZSB3ZWxsIGJlaGF2ZWQgYW5kIG5vdCBvdmVyd3JpdGUgb3RoZXIgc2VydmljZSBkcml2ZXIncworY29uZmlndXJhdGlvbiBzZXR0aW5ncy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUENJL3BjaS1lcnJvci1yZWNvdmVyeS50eHQgYi9Eb2N1bWVudGF0aW9uL1BDSS9wY2ktZXJyb3ItcmVjb3ZlcnkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjMjY4NjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1BDSS9wY2ktZXJyb3ItcmVjb3ZlcnkudHh0CkBAIC0wLDAgKzEsNDMxIEBACisKKyAgICAgICAgICAgICAgICAgICAgICAgUENJIEVycm9yIFJlY292ZXJ5CisgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgRmVicnVhcnkgMiwgMjAwNgorCisgICAgICAgICAgICAgICAgIEN1cnJlbnQgZG9jdW1lbnQgbWFpbnRhaW5lcjoKKyAgICAgICAgICAgICBMaW5hcyBWZXBzdGFzIDxsaW5hc3ZlcHN0YXNAZ21haWwuY29tPgorICAgICAgICAgIHVwZGF0ZWQgYnkgUmljaGFyZCBMYXJ5IDxybGFyeUB1cy5pYm0uY29tPgorICAgICAgIGFuZCBNaWtlIE1hc29uIDxtbWxueEB1cy5pYm0uY29tPiBvbiAyNy1KdWwtMjAwOQorCisKK01hbnkgUENJIGJ1cyBjb250cm9sbGVycyBhcmUgYWJsZSB0byBkZXRlY3QgYSB2YXJpZXR5IG9mIGhhcmR3YXJlCitQQ0kgZXJyb3JzIG9uIHRoZSBidXMsIHN1Y2ggYXMgcGFyaXR5IGVycm9ycyBvbiB0aGUgZGF0YSBhbmQgYWRkcmVzcworYnVzc2VzLCBhcyB3ZWxsIGFzIFNFUlIgYW5kIFBFUlIgZXJyb3JzLiAgU29tZSBvZiB0aGUgbW9yZSBhZHZhbmNlZAorY2hpcHNldHMgYXJlIGFibGUgdG8gZGVhbCB3aXRoIHRoZXNlIGVycm9yczsgdGhlc2UgaW5jbHVkZSBQQ0ktRSBjaGlwc2V0cywKK2FuZCB0aGUgUENJLWhvc3QgYnJpZGdlcyBmb3VuZCBvbiBJQk0gUG93ZXI0LCBQb3dlcjUgYW5kIFBvd2VyNi1iYXNlZAorcFNlcmllcyBib3hlcy4gQSB0eXBpY2FsIGFjdGlvbiB0YWtlbiBpcyB0byBkaXNjb25uZWN0IHRoZSBhZmZlY3RlZCBkZXZpY2UsCitoYWx0aW5nIGFsbCBJL08gdG8gaXQuICBUaGUgZ29hbCBvZiBhIGRpc2Nvbm5lY3Rpb24gaXMgdG8gYXZvaWQgc3lzdGVtCitjb3JydXB0aW9uOyBmb3IgZXhhbXBsZSwgdG8gaGFsdCBzeXN0ZW0gbWVtb3J5IGNvcnJ1cHRpb24gZHVlIHRvIERNQSdzCit0byAid2lsZCIgYWRkcmVzc2VzLiBUeXBpY2FsbHksIGEgcmVjb25uZWN0aW9uIG1lY2hhbmlzbSBpcyBhbHNvCitvZmZlcmVkLCBzbyB0aGF0IHRoZSBhZmZlY3RlZCBQQ0kgZGV2aWNlKHMpIGFyZSByZXNldCBhbmQgcHV0IGJhY2sKK2ludG8gd29ya2luZyBjb25kaXRpb24uIFRoZSByZXNldCBwaGFzZSByZXF1aXJlcyBjb29yZGluYXRpb24KK2JldHdlZW4gdGhlIGFmZmVjdGVkIGRldmljZSBkcml2ZXJzIGFuZCB0aGUgUENJIGNvbnRyb2xsZXIgY2hpcC4KK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIGEgZ2VuZXJpYyBBUEkgZm9yIG5vdGlmeWluZyBkZXZpY2UgZHJpdmVycworb2YgYSBidXMgZGlzY29ubmVjdGlvbiwgYW5kIHRoZW4gcGVyZm9ybWluZyBlcnJvciByZWNvdmVyeS4KK1RoaXMgQVBJIGlzIGN1cnJlbnRseSBpbXBsZW1lbnRlZCBpbiB0aGUgMi42LjE2IGFuZCBsYXRlciBrZXJuZWxzLgorCitSZXBvcnRpbmcgYW5kIHJlY292ZXJ5IGlzIHBlcmZvcm1lZCBpbiBzZXZlcmFsIHN0ZXBzLiBGaXJzdCwgd2hlbgorYSBQQ0kgaGFyZHdhcmUgZXJyb3IgaGFzIHJlc3VsdGVkIGluIGEgYnVzIGRpc2Nvbm5lY3QsIHRoYXQgZXZlbnQKK2lzIHJlcG9ydGVkIGFzIHNvb24gYXMgcG9zc2libGUgdG8gYWxsIGFmZmVjdGVkIGRldmljZSBkcml2ZXJzLAoraW5jbHVkaW5nIG11bHRpcGxlIGluc3RhbmNlcyBvZiBhIGRldmljZSBkcml2ZXIgb24gbXVsdGktZnVuY3Rpb24KK2NhcmRzLiBUaGlzIGFsbG93cyBkZXZpY2UgZHJpdmVycyB0byBhdm9pZCBkZWFkbG9ja2luZyBpbiBzcGlubG9vcHMsCit3YWl0aW5nIGZvciBzb21lIGkvby1zcGFjZSByZWdpc3RlciB0byBjaGFuZ2UsIHdoZW4gaXQgbmV2ZXIgd2lsbC4KK0l0IGFsc28gZ2l2ZXMgdGhlIGRyaXZlcnMgYSBjaGFuY2UgdG8gZGVmZXIgaW5jb21pbmcgSS9PIGFzCituZWVkZWQuCisKK05leHQsIHJlY292ZXJ5IGlzIHBlcmZvcm1lZCBpbiBzZXZlcmFsIHN0YWdlcy4gTW9zdCBvZiB0aGUgY29tcGxleGl0eQoraXMgZm9yY2VkIGJ5IHRoZSBuZWVkIHRvIGhhbmRsZSBtdWx0aS1mdW5jdGlvbiBkZXZpY2VzLCB0aGF0IGlzLAorZGV2aWNlcyB0aGF0IGhhdmUgbXVsdGlwbGUgZGV2aWNlIGRyaXZlcnMgYXNzb2NpYXRlZCB3aXRoIHRoZW0uCitJbiB0aGUgZmlyc3Qgc3RhZ2UsIGVhY2ggZHJpdmVyIGlzIGFsbG93ZWQgdG8gaW5kaWNhdGUgd2hhdCB0eXBlCitvZiByZXNldCBpdCBkZXNpcmVzLCB0aGUgY2hvaWNlcyBiZWluZyBhIHNpbXBsZSByZS1lbmFibGluZyBvZiBJL08KK29yIHJlcXVlc3RpbmcgYSBzbG90IHJlc2V0LgorCitJZiBhbnkgZHJpdmVyIHJlcXVlc3RzIGEgc2xvdCByZXNldCwgdGhhdCBpcyB3aGF0IHdpbGwgYmUgZG9uZS4KKworQWZ0ZXIgYSByZXNldCBhbmQvb3IgYSByZS1lbmFibGluZyBvZiBJL08sIGFsbCBkcml2ZXJzIGFyZQorYWdhaW4gbm90aWZpZWQsIHNvIHRoYXQgdGhleSBtYXkgdGhlbiBwZXJmb3JtIGFueSBkZXZpY2Ugc2V0dXAvY29uZmlnCit0aGF0IG1heSBiZSByZXF1aXJlZC4gIEFmdGVyIHRoZXNlIGhhdmUgYWxsIGNvbXBsZXRlZCwgYSBmaW5hbAorInJlc3VtZSBub3JtYWwgb3BlcmF0aW9ucyIgZXZlbnQgaXMgc2VudCBvdXQuCisKK1RoZSBiaWdnZXN0IHJlYXNvbiBmb3IgY2hvb3NpbmcgYSBrZXJuZWwtYmFzZWQgaW1wbGVtZW50YXRpb24gcmF0aGVyCit0aGFuIGEgdXNlci1zcGFjZSBpbXBsZW1lbnRhdGlvbiB3YXMgdGhlIG5lZWQgdG8gZGVhbCB3aXRoIGJ1cworZGlzY29ubmVjdHMgb2YgUENJIGRldmljZXMgYXR0YWNoZWQgdG8gc3RvcmFnZSBtZWRpYSwgYW5kLCBpbiBwYXJ0aWN1bGFyLAorZGlzY29ubmVjdHMgZnJvbSBkZXZpY2VzIGhvbGRpbmcgdGhlIHJvb3QgZmlsZSBzeXN0ZW0uICBJZiB0aGUgcm9vdAorZmlsZSBzeXN0ZW0gaXMgZGlzY29ubmVjdGVkLCBhIHVzZXItc3BhY2UgbWVjaGFuaXNtIHdvdWxkIGhhdmUgdG8gZ28KK3Rocm91Z2ggYSBsYXJnZSBudW1iZXIgb2YgY29udG9ydGlvbnMgdG8gY29tcGxldGUgcmVjb3ZlcnkuIEFsbW9zdCBhbGwKK29mIHRoZSBjdXJyZW50IExpbnV4IGZpbGUgc3lzdGVtcyBhcmUgbm90IHRvbGVyYW50IG9mIGRpc2Nvbm5lY3Rpb24KK2Zyb20vcmVjb25uZWN0aW9uIHRvIHRoZWlyIHVuZGVybHlpbmcgYmxvY2sgZGV2aWNlLiBCeSBjb250cmFzdCwKK2J1cyBlcnJvcnMgYXJlIGVhc3kgdG8gbWFuYWdlIGluIHRoZSBkZXZpY2UgZHJpdmVyLiBJbmRlZWQsIG1vc3QKK2RldmljZSBkcml2ZXJzIGFscmVhZHkgaGFuZGxlIHZlcnkgc2ltaWxhciByZWNvdmVyeSBwcm9jZWR1cmVzOworZm9yIGV4YW1wbGUsIHRoZSBTQ1NJLWdlbmVyaWMgbGF5ZXIgYWxyZWFkeSBwcm92aWRlcyBzaWduaWZpY2FudAorbWVjaGFuaXNtcyBmb3IgZGVhbGluZyB3aXRoIFNDU0kgYnVzIGVycm9ycyBhbmQgU0NTSSBidXMgcmVzZXRzLgorCisKK0RldGFpbGVkIERlc2lnbgorLS0tLS0tLS0tLS0tLS0tCitEZXNpZ24gYW5kIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYmVsb3csIGJhc2VkIG9uIGEgY2hhaW4gb2YKK3B1YmxpYyBlbWFpbCBkaXNjdXNzaW9ucyB3aXRoIEJlbiBIZXJyZW5zY2htaWR0LCBjaXJjYSA1IEFwcmlsIDIwMDUuCisKK1RoZSBlcnJvciByZWNvdmVyeSBBUEkgc3VwcG9ydCBpcyBleHBvc2VkIHRvIHRoZSBkcml2ZXIgaW4gdGhlIGZvcm0gb2YKK2Egc3RydWN0dXJlIG9mIGZ1bmN0aW9uIHBvaW50ZXJzIHBvaW50ZWQgdG8gYnkgYSBuZXcgZmllbGQgaW4gc3RydWN0CitwY2lfZHJpdmVyLiBBIGRyaXZlciB0aGF0IGZhaWxzIHRvIHByb3ZpZGUgdGhlIHN0cnVjdHVyZSBpcyAibm9uLWF3YXJlIiwKK2FuZCB0aGUgYWN0dWFsIHJlY292ZXJ5IHN0ZXBzIHRha2VuIGFyZSBwbGF0Zm9ybSBkZXBlbmRlbnQuICBUaGUKK2FyY2gvcG93ZXJwYyBpbXBsZW1lbnRhdGlvbiB3aWxsIHNpbXVsYXRlIGEgUENJIGhvdHBsdWcgcmVtb3ZlL2FkZC4KKworVGhpcyBzdHJ1Y3R1cmUgaGFzIHRoZSBmb3JtOgorc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycworeworCWludCAoKmVycm9yX2RldGVjdGVkKShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBlbnVtIHBjaV9jaGFubmVsX3N0YXRlKTsKKwlpbnQgKCptbWlvX2VuYWJsZWQpKHN0cnVjdCBwY2lfZGV2ICpkZXYpOworCWludCAoKmxpbmtfcmVzZXQpKHN0cnVjdCBwY2lfZGV2ICpkZXYpOworCWludCAoKnNsb3RfcmVzZXQpKHN0cnVjdCBwY2lfZGV2ICpkZXYpOworCXZvaWQgKCpyZXN1bWUpKHN0cnVjdCBwY2lfZGV2ICpkZXYpOworfTsKKworVGhlIHBvc3NpYmxlIGNoYW5uZWwgc3RhdGVzIGFyZToKK2VudW0gcGNpX2NoYW5uZWxfc3RhdGUgeworCXBjaV9jaGFubmVsX2lvX25vcm1hbCwgIC8qIEkvTyBjaGFubmVsIGlzIGluIG5vcm1hbCBzdGF0ZSAqLworCXBjaV9jaGFubmVsX2lvX2Zyb3plbiwgIC8qIEkvTyB0byBjaGFubmVsIGlzIGJsb2NrZWQgKi8KKwlwY2lfY2hhbm5lbF9pb19wZXJtX2ZhaWx1cmUsIC8qIFBDSSBjYXJkIGlzIGRlYWQgKi8KK307CisKK1Bvc3NpYmxlIHJldHVybiB2YWx1ZXMgYXJlOgorZW51bSBwY2lfZXJzX3Jlc3VsdCB7CisJUENJX0VSU19SRVNVTFRfTk9ORSwgICAgICAgIC8qIG5vIHJlc3VsdC9ub25lL25vdCBzdXBwb3J0ZWQgaW4gZGV2aWNlIGRyaXZlciAqLworCVBDSV9FUlNfUkVTVUxUX0NBTl9SRUNPVkVSLCAvKiBEZXZpY2UgZHJpdmVyIGNhbiByZWNvdmVyIHdpdGhvdXQgc2xvdCByZXNldCAqLworCVBDSV9FUlNfUkVTVUxUX05FRURfUkVTRVQsICAvKiBEZXZpY2UgZHJpdmVyIHdhbnRzIHNsb3QgdG8gYmUgcmVzZXQuICovCisJUENJX0VSU19SRVNVTFRfRElTQ09OTkVDVCwgIC8qIERldmljZSBoYXMgY29tcGxldGVseSBmYWlsZWQsIGlzIHVucmVjb3ZlcmFibGUgKi8KKwlQQ0lfRVJTX1JFU1VMVF9SRUNPVkVSRUQsICAgLyogRGV2aWNlIGRyaXZlciBpcyBmdWxseSByZWNvdmVyZWQgYW5kIG9wZXJhdGlvbmFsICovCit9OworCitBIGRyaXZlciBkb2VzIG5vdCBoYXZlIHRvIGltcGxlbWVudCBhbGwgb2YgdGhlc2UgY2FsbGJhY2tzOyBob3dldmVyLAoraWYgaXQgaW1wbGVtZW50cyBhbnksIGl0IG11c3QgaW1wbGVtZW50IGVycm9yX2RldGVjdGVkKCkuIElmIGEgY2FsbGJhY2sKK2lzIG5vdCBpbXBsZW1lbnRlZCwgdGhlIGNvcnJlc3BvbmRpbmcgZmVhdHVyZSBpcyBjb25zaWRlcmVkIHVuc3VwcG9ydGVkLgorRm9yIGV4YW1wbGUsIGlmIG1taW9fZW5hYmxlZCgpIGFuZCByZXN1bWUoKSBhcmVuJ3QgdGhlcmUsIHRoZW4gaXQKK2lzIGFzc3VtZWQgdGhhdCB0aGUgZHJpdmVyIGlzIG5vdCBkb2luZyBhbnkgZGlyZWN0IHJlY292ZXJ5IGFuZCByZXF1aXJlcworYSBzbG90IHJlc2V0LiBJZiBsaW5rX3Jlc2V0KCkgaXMgbm90IGltcGxlbWVudGVkLCB0aGUgY2FyZCBpcyBhc3N1bWVkIHRvCitub3QgY2FyZSBhYm91dCBsaW5rIHJlc2V0cy4gVHlwaWNhbGx5IGEgZHJpdmVyIHdpbGwgd2FudCB0byBrbm93IGFib3V0CithIHNsb3RfcmVzZXQoKS4KKworVGhlIGFjdHVhbCBzdGVwcyB0YWtlbiBieSBhIHBsYXRmb3JtIHRvIHJlY292ZXIgZnJvbSBhIFBDSSBlcnJvcgorZXZlbnQgd2lsbCBiZSBwbGF0Zm9ybS1kZXBlbmRlbnQsIGJ1dCB3aWxsIGZvbGxvdyB0aGUgZ2VuZXJhbAorc2VxdWVuY2UgZGVzY3JpYmVkIGJlbG93LgorCitTVEVQIDA6IEVycm9yIEV2ZW50CistLS0tLS0tLS0tLS0tLS0tLS0tCitBIFBDSSBidXMgZXJyb3IgaXMgZGV0ZWN0ZWQgYnkgdGhlIFBDSSBoYXJkd2FyZS4gIE9uIHBvd2VycGMsIHRoZSBzbG90CitpcyBpc29sYXRlZCwgaW4gdGhhdCBhbGwgSS9PIGlzIGJsb2NrZWQ6IGFsbCByZWFkcyByZXR1cm4gMHhmZmZmZmZmZiwKK2FsbCB3cml0ZXMgYXJlIGlnbm9yZWQuCisKKworU1RFUCAxOiBOb3RpZmljYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tCitQbGF0Zm9ybSBjYWxscyB0aGUgZXJyb3JfZGV0ZWN0ZWQoKSBjYWxsYmFjayBvbiBldmVyeSBpbnN0YW5jZSBvZgorZXZlcnkgZHJpdmVyIGFmZmVjdGVkIGJ5IHRoZSBlcnJvci4KKworQXQgdGhpcyBwb2ludCwgdGhlIGRldmljZSBtaWdodCBub3QgYmUgYWNjZXNzaWJsZSBhbnltb3JlLCBkZXBlbmRpbmcgb24KK3RoZSBwbGF0Zm9ybSAodGhlIHNsb3Qgd2lsbCBiZSBpc29sYXRlZCBvbiBwb3dlcnBjKS4gVGhlIGRyaXZlciBtYXkKK2FscmVhZHkgaGF2ZSAibm90aWNlZCIgdGhlIGVycm9yIGJlY2F1c2Ugb2YgYSBmYWlsaW5nIEkvTywgYnV0IHRoaXMKK2lzIHRoZSBwcm9wZXIgInN5bmNocm9uaXphdGlvbiBwb2ludCIsIHRoYXQgaXMsIGl0IGdpdmVzIHRoZSBkcml2ZXIKK2EgY2hhbmNlIHRvIGNsZWFudXAsIHdhaXRpbmcgZm9yIHBlbmRpbmcgc3R1ZmYgKHRpbWVycywgd2hhdGV2ZXIsIGV0Yy4uLikKK3RvIGNvbXBsZXRlOyBpdCBjYW4gdGFrZSBzZW1hcGhvcmVzLCBzY2hlZHVsZSwgZXRjLi4uIGV2ZXJ5dGhpbmcgYnV0Cit0b3VjaCB0aGUgZGV2aWNlLiBXaXRoaW4gdGhpcyBmdW5jdGlvbiBhbmQgYWZ0ZXIgaXQgcmV0dXJucywgdGhlIGRyaXZlcgorc2hvdWxkbid0IGRvIGFueSBuZXcgSU9zLiBDYWxsZWQgaW4gdGFzayBjb250ZXh0LiBUaGlzIGlzIHNvcnQgb2YgYQorInF1aWVzY2UiIHBvaW50LiBTZWUgbm90ZSBhYm91dCBpbnRlcnJ1cHRzIGF0IHRoZSBlbmQgb2YgdGhpcyBkb2MuCisKK0FsbCBkcml2ZXJzIHBhcnRpY2lwYXRpbmcgaW4gdGhpcyBzeXN0ZW0gbXVzdCBpbXBsZW1lbnQgdGhpcyBjYWxsLgorVGhlIGRyaXZlciBtdXN0IHJldHVybiBvbmUgb2YgdGhlIGZvbGxvd2luZyByZXN1bHQgY29kZXM6CisJCS0gUENJX0VSU19SRVNVTFRfQ0FOX1JFQ09WRVI6CisJCSAgRHJpdmVyIHJldHVybnMgdGhpcyBpZiBpdCB0aGlua3MgaXQgbWlnaHQgYmUgYWJsZSB0byByZWNvdmVyCisJCSAgdGhlIEhXIGJ5IGp1c3QgYmFuZ2luZyBJT3Mgb3IgaWYgaXQgd2FudHMgdG8gYmUgZ2l2ZW4KKwkJICBhIGNoYW5jZSB0byBleHRyYWN0IHNvbWUgZGlhZ25vc3RpYyBpbmZvcm1hdGlvbiAoc2VlCisJCSAgbW1pb19lbmFibGUsIGJlbG93KS4KKwkJLSBQQ0lfRVJTX1JFU1VMVF9ORUVEX1JFU0VUOgorCQkgIERyaXZlciByZXR1cm5zIHRoaXMgaWYgaXQgY2FuJ3QgcmVjb3ZlciB3aXRob3V0IGEKKwkJICBzbG90IHJlc2V0LgorCQktIFBDSV9FUlNfUkVTVUxUX0RJU0NPTk5FQ1Q6CisJCSAgRHJpdmVyIHJldHVybnMgdGhpcyBpZiBpdCBkb2Vzbid0IHdhbnQgdG8gcmVjb3ZlciBhdCBhbGwuCisKK1RoZSBuZXh0IHN0ZXAgdGFrZW4gd2lsbCBkZXBlbmQgb24gdGhlIHJlc3VsdCBjb2RlcyByZXR1cm5lZCBieSB0aGUKK2RyaXZlcnMuCisKK0lmIGFsbCBkcml2ZXJzIG9uIHRoZSBzZWdtZW50L3Nsb3QgcmV0dXJuIFBDSV9FUlNfUkVTVUxUX0NBTl9SRUNPVkVSLAordGhlbiB0aGUgcGxhdGZvcm0gc2hvdWxkIHJlLWVuYWJsZSBJT3Mgb24gdGhlIHNsb3QgKG9yIGRvIG5vdGhpbmcgaW4KK3BhcnRpY3VsYXIsIGlmIHRoZSBwbGF0Zm9ybSBkb2Vzbid0IGlzb2xhdGUgc2xvdHMpLCBhbmQgcmVjb3ZlcnkKK3Byb2NlZWRzIHRvIFNURVAgMiAoTU1JTyBFbmFibGUpLgorCitJZiBhbnkgZHJpdmVyIHJlcXVlc3RlZCBhIHNsb3QgcmVzZXQgKGJ5IHJldHVybmluZyBQQ0lfRVJTX1JFU1VMVF9ORUVEX1JFU0VUKSwKK3RoZW4gcmVjb3ZlcnkgcHJvY2VlZHMgdG8gU1RFUCA0IChTbG90IFJlc2V0KS4KKworSWYgdGhlIHBsYXRmb3JtIGlzIHVuYWJsZSB0byByZWNvdmVyIHRoZSBzbG90LCB0aGUgbmV4dCBzdGVwCitpcyBTVEVQIDYgKFBlcm1hbmVudCBGYWlsdXJlKS4KKworPj4+IFRoZSBjdXJyZW50IHBvd2VycGMgaW1wbGVtZW50YXRpb24gYXNzdW1lcyB0aGF0IGEgZGV2aWNlIGRyaXZlciB3aWxsCis+Pj4gKm5vdCogc2NoZWR1bGUgb3Igc2VtYXBob3JlIGluIHRoaXMgcm91dGluZTsgdGhlIGN1cnJlbnQgcG93ZXJwYworPj4+IGltcGxlbWVudGF0aW9uIHVzZXMgb25lIGtlcm5lbCB0aHJlYWQgdG8gbm90aWZ5IGFsbCBkZXZpY2VzOworPj4+IHRodXMsIGlmIG9uZSBkZXZpY2Ugc2xlZXBzL3NjaGVkdWxlcywgYWxsIGRldmljZXMgYXJlIGFmZmVjdGVkLgorPj4+IERvaW5nIGJldHRlciByZXF1aXJlcyBjb21wbGV4IG11bHRpLXRocmVhZGVkIGxvZ2ljIGluIHRoZSBlcnJvcgorPj4+IHJlY292ZXJ5IGltcGxlbWVudGF0aW9uIChlLmcuIHdhaXRpbmcgZm9yIGFsbCBub3RpZmljYXRpb24gdGhyZWFkcworPj4+IHRvICJqb2luIiBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHJlY292ZXJ5LikgIFRoaXMgc2VlbXMgZXhjZXNzaXZlbHkKKz4+PiBjb21wbGV4IGFuZCBub3Qgd29ydGggaW1wbGVtZW50aW5nLgorCis+Pj4gVGhlIGN1cnJlbnQgcG93ZXJwYyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IG11Y2ggY2FyZSBpZiB0aGUgZGV2aWNlCis+Pj4gYXR0ZW1wdHMgSS9PIGF0IHRoaXMgcG9pbnQsIG9yIG5vdC4gIEkvTydzIHdpbGwgZmFpbCwgcmV0dXJuaW5nCis+Pj4gYSB2YWx1ZSBvZiAweGZmIG9uIHJlYWQsIGFuZCB3cml0ZXMgd2lsbCBiZSBkcm9wcGVkLiBJZiBtb3JlIHRoYW4KKz4+PiBFRUhfTUFYX0ZBSUxTIEkvTydzIGFyZSBhdHRlbXB0ZWQgdG8gYSBmcm96ZW4gYWRhcHRlciwgRUVICis+Pj4gYXNzdW1lcyB0aGF0IHRoZSBkZXZpY2UgZHJpdmVyIGhhcyBnb25lIGludG8gYW4gaW5maW5pdGUgbG9vcAorPj4+IGFuZCBwcmludHMgYW4gZXJyb3IgdG8gc3lzbG9nLiAgQSByZWJvb3QgaXMgdGhlbiByZXF1aXJlZCB0byAKKz4+PiBnZXQgdGhlIGRldmljZSB3b3JraW5nIGFnYWluLgorCitTVEVQIDI6IE1NSU8gRW5hYmxlZAorLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIHBsYXRmb3JtIHJlLWVuYWJsZXMgTU1JTyB0byB0aGUgZGV2aWNlIChidXQgdHlwaWNhbGx5IG5vdCB0aGUKK0RNQSksIGFuZCB0aGVuIGNhbGxzIHRoZSBtbWlvX2VuYWJsZWQoKSBjYWxsYmFjayBvbiBhbGwgYWZmZWN0ZWQKK2RldmljZSBkcml2ZXJzLgorCitUaGlzIGlzIHRoZSAiZWFybHkgcmVjb3ZlcnkiIGNhbGwuIElPcyBhcmUgYWxsb3dlZCBhZ2FpbiwgYnV0IERNQSBpcworbm90LCB3aXRoIHNvbWUgcmVzdHJpY3Rpb25zLiBUaGlzIGlzIE5PVCBhIGNhbGxiYWNrIGZvciB0aGUgZHJpdmVyIHRvCitzdGFydCBvcGVyYXRpb25zIGFnYWluLCBvbmx5IHRvIHBlZWsvcG9rZSBhdCB0aGUgZGV2aWNlLCBleHRyYWN0IGRpYWdub3N0aWMKK2luZm9ybWF0aW9uLCBpZiBhbnksIGFuZCBldmVudHVhbGx5IGRvIHRoaW5ncyBsaWtlIHRyaWdnZXIgYSBkZXZpY2UgbG9jYWwKK3Jlc2V0IG9yIHNvbWUgc3VjaCwgYnV0IG5vdCByZXN0YXJ0IG9wZXJhdGlvbnMuIFRoaXMgY2FsbGJhY2sgaXMgbWFkZSBpZgorYWxsIGRyaXZlcnMgb24gYSBzZWdtZW50IGFncmVlIHRoYXQgdGhleSBjYW4gdHJ5IHRvIHJlY292ZXIgYW5kIGlmIG5vIGF1dG9tYXRpYworbGluayByZXNldCB3YXMgcGVyZm9ybWVkIGJ5IHRoZSBIVy4gSWYgdGhlIHBsYXRmb3JtIGNhbid0IGp1c3QgcmUtZW5hYmxlIElPcword2l0aG91dCBhIHNsb3QgcmVzZXQgb3IgYSBsaW5rIHJlc2V0LCBpdCB3aWxsIG5vdCBjYWxsIHRoaXMgY2FsbGJhY2ssIGFuZAoraW5zdGVhZCB3aWxsIGhhdmUgZ29uZSBkaXJlY3RseSB0byBTVEVQIDMgKExpbmsgUmVzZXQpIG9yIFNURVAgNCAoU2xvdCBSZXNldCkKKworPj4+IFRoZSBmb2xsb3dpbmcgaXMgcHJvcG9zZWQ7IG5vIHBsYXRmb3JtIGltcGxlbWVudHMgdGhpcyB5ZXQ6Cis+Pj4gUHJvcG9zYWw6IEFsbCBJL08ncyBzaG91bGQgYmUgZG9uZSBfc3luY2hyb25vdXNseV8gZnJvbSB3aXRoaW4KKz4+PiB0aGlzIGNhbGxiYWNrLCBlcnJvcnMgdHJpZ2dlcmVkIGJ5IHRoZW0gd2lsbCBiZSByZXR1cm5lZCB2aWEKKz4+PiB0aGUgbm9ybWFsIHBjaV9jaGVja193aGF0ZXZlcigpIEFQSSwgbm8gbmV3IGVycm9yX2RldGVjdGVkKCkKKz4+PiBjYWxsYmFjayB3aWxsIGJlIGlzc3VlZCBkdWUgdG8gYW4gZXJyb3IgaGFwcGVuaW5nIGhlcmUuIEhvd2V2ZXIsCis+Pj4gc3VjaCBhbiBlcnJvciBtaWdodCBjYXVzZSBJT3MgdG8gYmUgcmUtYmxvY2tlZCBmb3IgdGhlIHdob2xlCis+Pj4gc2VnbWVudCwgYW5kIHRodXMgaW52YWxpZGF0ZSB0aGUgcmVjb3ZlcnkgdGhhdCBvdGhlciBkZXZpY2VzCis+Pj4gb24gdGhlIHNhbWUgc2VnbWVudCBtaWdodCBoYXZlIGRvbmUsIGZvcmNpbmcgdGhlIHdob2xlIHNlZ21lbnQKKz4+PiBpbnRvIG9uZSBvZiB0aGUgbmV4dCBzdGF0ZXMsIHRoYXQgaXMsIGxpbmsgcmVzZXQgb3Igc2xvdCByZXNldC4KKworVGhlIGRyaXZlciBzaG91bGQgcmV0dXJuIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJlc3VsdCBjb2RlczoKKwkJLSBQQ0lfRVJTX1JFU1VMVF9SRUNPVkVSRUQKKwkJICBEcml2ZXIgcmV0dXJucyB0aGlzIGlmIGl0IHRoaW5rcyB0aGUgZGV2aWNlIGlzIGZ1bGx5CisJCSAgZnVuY3Rpb25hbCBhbmQgdGhpbmtzIGl0IGlzIHJlYWR5IHRvIHN0YXJ0CisJCSAgbm9ybWFsIGRyaXZlciBvcGVyYXRpb25zIGFnYWluLiBUaGVyZSBpcyBubworCQkgIGd1YXJhbnRlZSB0aGF0IHRoZSBkcml2ZXIgd2lsbCBhY3R1YWxseSBiZQorCQkgIGFsbG93ZWQgdG8gcHJvY2VlZCwgYXMgYW5vdGhlciBkcml2ZXIgb24gdGhlCisJCSAgc2FtZSBzZWdtZW50IG1pZ2h0IGhhdmUgZmFpbGVkIGFuZCB0aHVzIHRyaWdnZXJlZCBhCisJCSAgc2xvdCByZXNldCBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IGl0LgorCisJCS0gUENJX0VSU19SRVNVTFRfTkVFRF9SRVNFVAorCQkgIERyaXZlciByZXR1cm5zIHRoaXMgaWYgaXQgdGhpbmtzIHRoZSBkZXZpY2UgaXMgbm90CisJCSAgcmVjb3ZlcmFibGUgaW4gaXRzIGN1cnJlbnQgc3RhdGUgYW5kIGl0IG5lZWRzIGEgc2xvdAorCQkgIHJlc2V0IHRvIHByb2NlZWQuCisKKwkJLSBQQ0lfRVJTX1JFU1VMVF9ESVNDT05ORUNUCisJCSAgU2FtZSBhcyBhYm92ZS4gVG90YWwgZmFpbHVyZSwgbm8gcmVjb3ZlcnkgZXZlbiBhZnRlcgorCQkgIHJlc2V0IGRyaXZlciBkZWFkLiAoVG8gYmUgZGVmaW5lZCBtb3JlIHByZWNpc2VseSkKKworVGhlIG5leHQgc3RlcCB0YWtlbiBkZXBlbmRzIG9uIHRoZSByZXN1bHRzIHJldHVybmVkIGJ5IHRoZSBkcml2ZXJzLgorSWYgYWxsIGRyaXZlcnMgcmV0dXJuZWQgUENJX0VSU19SRVNVTFRfUkVDT1ZFUkVELCB0aGVuIHRoZSBwbGF0Zm9ybQorcHJvY2VlZHMgdG8gZWl0aGVyIFNURVAzIChMaW5rIFJlc2V0KSBvciB0byBTVEVQIDUgKFJlc3VtZSBPcGVyYXRpb25zKS4KKworSWYgYW55IGRyaXZlciByZXR1cm5lZCBQQ0lfRVJTX1JFU1VMVF9ORUVEX1JFU0VULCB0aGVuIHRoZSBwbGF0Zm9ybQorcHJvY2VlZHMgdG8gU1RFUCA0IChTbG90IFJlc2V0KQorCitTVEVQIDM6IExpbmsgUmVzZXQKKy0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIHBsYXRmb3JtIHJlc2V0cyB0aGUgbGluaywgYW5kIHRoZW4gY2FsbHMgdGhlIGxpbmtfcmVzZXQoKSBjYWxsYmFjaworb24gYWxsIGFmZmVjdGVkIGRldmljZSBkcml2ZXJzLiAgVGhpcyBpcyBhIFBDSS1FeHByZXNzIHNwZWNpZmljIHN0YXRlCithbmQgaXMgZG9uZSB3aGVuZXZlciBhIG5vbi1mYXRhbCBlcnJvciBoYXMgYmVlbiBkZXRlY3RlZCB0aGF0IGNhbiBiZQorInNvbHZlZCIgYnkgcmVzZXR0aW5nIHRoZSBsaW5rLiBUaGlzIGNhbGwgaW5mb3JtcyB0aGUgZHJpdmVyIG9mIHRoZQorcmVzZXQgYW5kIHRoZSBkcml2ZXIgc2hvdWxkIGNoZWNrIHRvIHNlZSBpZiB0aGUgZGV2aWNlIGFwcGVhcnMgdG8gYmUKK2luIHdvcmtpbmcgY29uZGl0aW9uLgorCitUaGUgZHJpdmVyIGlzIG5vdCBzdXBwb3NlZCB0byByZXN0YXJ0IG5vcm1hbCBkcml2ZXIgSS9PIG9wZXJhdGlvbnMKK2F0IHRoaXMgcG9pbnQuICBJdCBzaG91bGQgbGltaXQgaXRzZWxmIHRvICJwcm9iaW5nIiB0aGUgZGV2aWNlIHRvCitjaGVjayBpdHMgcmVjb3ZlcmFiaWxpdHkgc3RhdHVzLiBJZiBhbGwgaXMgcmlnaHQsIHRoZW4gdGhlIHBsYXRmb3JtCit3aWxsIGNhbGwgcmVzdW1lKCkgb25jZSBhbGwgZHJpdmVycyBoYXZlIGFjaydkIGxpbmtfcmVzZXQoKS4KKworCVJlc3VsdCBjb2RlczoKKwkJKGlkZW50aWNhbCB0byBTVEVQIDMgKE1NSU8gRW5hYmxlZCkKKworVGhlIHBsYXRmb3JtIHRoZW4gcHJvY2VlZHMgdG8gZWl0aGVyIFNURVAgNCAoU2xvdCBSZXNldCkgb3IgU1RFUCA1CisoUmVzdW1lIE9wZXJhdGlvbnMpLgorCis+Pj4gVGhlIGN1cnJlbnQgcG93ZXJwYyBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBpbXBsZW1lbnQgdGhpcyBjYWxsYmFjay4KKworU1RFUCA0OiBTbG90IFJlc2V0CistLS0tLS0tLS0tLS0tLS0tLS0KKworSW4gcmVzcG9uc2UgdG8gYSByZXR1cm4gdmFsdWUgb2YgUENJX0VSU19SRVNVTFRfTkVFRF9SRVNFVCwgdGhlCit0aGUgcGxhdGZvcm0gd2lsbCBwZXJmb3JtIGEgc2xvdCByZXNldCBvbiB0aGUgcmVxdWVzdGluZyBQQ0kgZGV2aWNlKHMpLiAKK1RoZSBhY3R1YWwgc3RlcHMgdGFrZW4gYnkgYSBwbGF0Zm9ybSB0byBwZXJmb3JtIGEgc2xvdCByZXNldAord2lsbCBiZSBwbGF0Zm9ybS1kZXBlbmRlbnQuIFVwb24gY29tcGxldGlvbiBvZiBzbG90IHJlc2V0LCB0aGUKK3BsYXRmb3JtIHdpbGwgY2FsbCB0aGUgZGV2aWNlIHNsb3RfcmVzZXQoKSBjYWxsYmFjay4KKworUG93ZXJwYyBwbGF0Zm9ybXMgaW1wbGVtZW50IHR3byBsZXZlbHMgb2Ygc2xvdCByZXNldDoKK3NvZnQgcmVzZXQoZGVmYXVsdCkgYW5kIGZ1bmRhbWVudGFsKG9wdGlvbmFsKSByZXNldC4KKworUG93ZXJwYyBzb2Z0IHJlc2V0IGNvbnNpc3RzIG9mIGFzc2VydGluZyB0aGUgYWRhcHRlciAjUlNUIGxpbmUgYW5kIHRoZW4KK3Jlc3RvcmluZyB0aGUgUENJIEJBUidzIGFuZCBQQ0kgY29uZmlndXJhdGlvbiBoZWFkZXIgdG8gYSBzdGF0ZQordGhhdCBpcyBlcXVpdmFsZW50IHRvIHdoYXQgaXQgd291bGQgYmUgYWZ0ZXIgYSBmcmVzaCBzeXN0ZW0KK3Bvd2VyLW9uIGZvbGxvd2VkIGJ5IHBvd2VyLW9uIEJJT1Mvc3lzdGVtIGZpcm13YXJlIGluaXRpYWxpemF0aW9uLgorU29mdCByZXNldCBpcyBhbHNvIGtub3duIGFzIGhvdC1yZXNldC4KKworUG93ZXJwYyBmdW5kYW1lbnRhbCByZXNldCBpcyBzdXBwb3J0ZWQgYnkgUENJIEV4cHJlc3MgY2FyZHMgb25seQorYW5kIHJlc3VsdHMgaW4gZGV2aWNlJ3Mgc3RhdGUgbWFjaGluZXMsIGhhcmR3YXJlIGxvZ2ljLCBwb3J0IHN0YXRlcyBhbmQKK2NvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIHRvIGluaXRpYWxpemUgdG8gdGhlaXIgZGVmYXVsdCBjb25kaXRpb25zLgorCitGb3IgbW9zdCBQQ0kgZGV2aWNlcywgYSBzb2Z0IHJlc2V0IHdpbGwgYmUgc3VmZmljaWVudCBmb3IgcmVjb3ZlcnkuCitPcHRpb25hbCBmdW5kYW1lbnRhbCByZXNldCBpcyBwcm92aWRlZCB0byBzdXBwb3J0IGEgbGltaXRlZCBudW1iZXIKK29mIFBDSSBFeHByZXNzIFBDSSBkZXZpY2VzICBmb3Igd2hpY2ggYSBzb2Z0IHJlc2V0IGlzIG5vdCBzdWZmaWNpZW50Citmb3IgcmVjb3ZlcnkuCisKK0lmIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyBQQ0kgaG90cGx1ZywgdGhlbiB0aGUgcmVzZXQgbWlnaHQgYmUKK3BlcmZvcm1lZCBieSB0b2dnbGluZyB0aGUgc2xvdCBlbGVjdHJpY2FsIHBvd2VyIG9mZi9vbi4KKworSXQgaXMgaW1wb3J0YW50IGZvciB0aGUgcGxhdGZvcm0gdG8gcmVzdG9yZSB0aGUgUENJIGNvbmZpZyBzcGFjZQordG8gdGhlICJmcmVzaCBwb3dlcm9uIiBzdGF0ZSwgcmF0aGVyIHRoYW4gdGhlICJsYXN0IHN0YXRlIi4gQWZ0ZXIKK2Egc2xvdCByZXNldCwgdGhlIGRldmljZSBkcml2ZXIgd2lsbCBhbG1vc3QgYWx3YXlzIHVzZSBpdHMgc3RhbmRhcmQKK2RldmljZSBpbml0aWFsaXphdGlvbiByb3V0aW5lcywgYW5kIGFuIHVudXN1YWwgY29uZmlnIHNwYWNlIHNldHVwCittYXkgcmVzdWx0IGluIGh1bmcgZGV2aWNlcywga2VybmVsIHBhbmljcywgb3Igc2lsZW50IGRhdGEgY29ycnVwdGlvbi4KKworVGhpcyBjYWxsIGdpdmVzIGRyaXZlcnMgdGhlIGNoYW5jZSB0byByZS1pbml0aWFsaXplIHRoZSBoYXJkd2FyZQorKHJlLWRvd25sb2FkIGZpcm13YXJlLCBldGMuKS4gIEF0IHRoaXMgcG9pbnQsIHRoZSBkcml2ZXIgbWF5IGFzc3VtZQordGhhdCB0aGUgY2FyZCBpcyBpbiBhIGZyZXNoIHN0YXRlIGFuZCBpcyBmdWxseSBmdW5jdGlvbmFsLiBUaGUgc2xvdAoraXMgdW5mcm96ZW4gYW5kIHRoZSBkcml2ZXIgaGFzIGZ1bGwgYWNjZXNzIHRvIFBDSSBjb25maWcgc3BhY2UsCittZW1vcnkgbWFwcGVkIEkvTyBzcGFjZSBhbmQgRE1BLiBJbnRlcnJ1cHRzIChMZWdhY3ksIE1TSSwgb3IgTVNJLVgpCit3aWxsIGFsc28gYmUgYXZhaWxhYmxlLgorCitEcml2ZXJzIHNob3VsZCBub3QgcmVzdGFydCBub3JtYWwgSS9PIHByb2Nlc3Npbmcgb3BlcmF0aW9ucworYXQgdGhpcyBwb2ludC4gIElmIGFsbCBkZXZpY2UgZHJpdmVycyByZXBvcnQgc3VjY2VzcyBvbiB0aGlzCitjYWxsYmFjaywgdGhlIHBsYXRmb3JtIHdpbGwgY2FsbCByZXN1bWUoKSB0byBjb21wbGV0ZSB0aGUgc2VxdWVuY2UsCithbmQgbGV0IHRoZSBkcml2ZXIgcmVzdGFydCBub3JtYWwgSS9PIHByb2Nlc3NpbmcuCisKK0EgZHJpdmVyIGNhbiBzdGlsbCByZXR1cm4gYSBjcml0aWNhbCBmYWlsdXJlIGZvciB0aGlzIGZ1bmN0aW9uIGlmCitpdCBjYW4ndCBnZXQgdGhlIGRldmljZSBvcGVyYXRpb25hbCBhZnRlciByZXNldC4gIElmIHRoZSBwbGF0Zm9ybQorcHJldmlvdXNseSB0cmllZCBhIHNvZnQgcmVzZXQsIGl0IG1pZ2h0IG5vdyB0cnkgYSBoYXJkIHJlc2V0IChwb3dlcgorY3ljbGUpIGFuZCB0aGVuIGNhbGwgc2xvdF9yZXNldCgpIGFnYWluLiAgSXQgdGhlIGRldmljZSBzdGlsbCBjYW4ndAorYmUgcmVjb3ZlcmVkLCB0aGVyZSBpcyBub3RoaW5nIG1vcmUgdGhhdCBjYW4gYmUgZG9uZTsgIHRoZSBwbGF0Zm9ybQord2lsbCB0eXBpY2FsbHkgcmVwb3J0IGEgInBlcm1hbmVudCBmYWlsdXJlIiBpbiBzdWNoIGEgY2FzZS4gIFRoZQorZGV2aWNlIHdpbGwgYmUgY29uc2lkZXJlZCAiZGVhZCIgaW4gdGhpcyBjYXNlLgorCitEcml2ZXJzIGZvciBtdWx0aS1mdW5jdGlvbiBjYXJkcyB3aWxsIG5lZWQgdG8gY29vcmRpbmF0ZSBhbW9uZwordGhlbXNlbHZlcyBhcyB0byB3aGljaCBkcml2ZXIgaW5zdGFuY2Ugd2lsbCBwZXJmb3JtIGFueSAib25lLXNob3QiCitvciBnbG9iYWwgZGV2aWNlIGluaXRpYWxpemF0aW9uLiBGb3IgZXhhbXBsZSwgdGhlIFN5bWJpb3Mgc3ltNTNjeHgyCitkcml2ZXIgcGVyZm9ybXMgZGV2aWNlIGluaXQgb25seSBmcm9tIFBDSSBmdW5jdGlvbiAwOgorCisrICAgICAgIGlmIChQQ0lfRlVOQyhwZGV2LT5kZXZmbikgPT0gMCkKKysgICAgICAgICAgICAgICBzeW1fcmVzZXRfc2NzaV9idXMobnAsIDApOworCisJUmVzdWx0IGNvZGVzOgorCQktIFBDSV9FUlNfUkVTVUxUX0RJU0NPTk5FQ1QKKwkJU2FtZSBhcyBhYm92ZS4KKworRHJpdmVycyBmb3IgUENJIEV4cHJlc3MgY2FyZHMgdGhhdCByZXF1aXJlIGEgZnVuZGFtZW50YWwgcmVzZXQgbXVzdAorc2V0IHRoZSBuZWVkc19mcmVzZXQgYml0IGluIHRoZSBwY2lfZGV2IHN0cnVjdHVyZSBpbiB0aGVpciBwcm9iZSBmdW5jdGlvbi4gIAorRm9yIGV4YW1wbGUsIHRoZSBRTG9naWMgcWxhMnh4eCBkcml2ZXIgc2V0cyB0aGUgbmVlZHNfZnJlc2V0IGJpdCBmb3IgY2VydGFpbgorUENJIGNhcmQgdHlwZXM6CisKKysJLyogU2V0IEVFSCByZXNldCB0eXBlIHRvIGZ1bmRhbWVudGFsIGlmIHJlcXVpcmVkIGJ5IGhiYSAgKi8KKysJaWYgKElTX1FMQTI0WFgoaGEpIHx8IElTX1FMQTI1WFgoaGEpIHx8IElTX1FMQTgxWFgoaGEpKQorKwkJcGRldi0+bmVlZHNfZnJlc2V0ID0gMTsKKysKKworUGxhdGZvcm0gcHJvY2VlZHMgZWl0aGVyIHRvIFNURVAgNSAoUmVzdW1lIE9wZXJhdGlvbnMpIG9yIFNURVAgNiAoUGVybWFuZW50CitGYWlsdXJlKS4KKworPj4+IFRoZSBjdXJyZW50IHBvd2VycGMgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgdHJ5IGEgcG93ZXItY3ljbGUKKz4+PiByZXNldCBpZiB0aGUgZHJpdmVyIHJldHVybmVkIFBDSV9FUlNfUkVTVUxUX0RJU0NPTk5FQ1QuCis+Pj4gSG93ZXZlciwgaXQgcHJvYmFibHkgc2hvdWxkLgorCisKK1NURVAgNTogUmVzdW1lIE9wZXJhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBwbGF0Zm9ybSB3aWxsIGNhbGwgdGhlIHJlc3VtZSgpIGNhbGxiYWNrIG9uIGFsbCBhZmZlY3RlZCBkZXZpY2UKK2RyaXZlcnMgaWYgYWxsIGRyaXZlcnMgb24gdGhlIHNlZ21lbnQgaGF2ZSByZXR1cm5lZAorUENJX0VSU19SRVNVTFRfUkVDT1ZFUkVEIGZyb20gb25lIG9mIHRoZSAzIHByZXZpb3VzIGNhbGxiYWNrcy4KK1RoZSBnb2FsIG9mIHRoaXMgY2FsbGJhY2sgaXMgdG8gdGVsbCB0aGUgZHJpdmVyIHRvIHJlc3RhcnQgYWN0aXZpdHksCit0aGF0IGV2ZXJ5dGhpbmcgaXMgYmFjayBhbmQgcnVubmluZy4gVGhpcyBjYWxsYmFjayBkb2VzIG5vdCByZXR1cm4KK2EgcmVzdWx0IGNvZGUuCisKK0F0IHRoaXMgcG9pbnQsIGlmIGEgbmV3IGVycm9yIGhhcHBlbnMsIHRoZSBwbGF0Zm9ybSB3aWxsIHJlc3RhcnQKK2EgbmV3IGVycm9yIHJlY292ZXJ5IHNlcXVlbmNlLgorCitTVEVQIDY6IFBlcm1hbmVudCBGYWlsdXJlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBICJwZXJtYW5lbnQgZmFpbHVyZSIgaGFzIG9jY3VycmVkLCBhbmQgdGhlIHBsYXRmb3JtIGNhbm5vdCByZWNvdmVyCit0aGUgZGV2aWNlLiAgVGhlIHBsYXRmb3JtIHdpbGwgY2FsbCBlcnJvcl9kZXRlY3RlZCgpIHdpdGggYQorcGNpX2NoYW5uZWxfc3RhdGUgdmFsdWUgb2YgcGNpX2NoYW5uZWxfaW9fcGVybV9mYWlsdXJlLgorCitUaGUgZGV2aWNlIGRyaXZlciBzaG91bGQsIGF0IHRoaXMgcG9pbnQsIGFzc3VtZSB0aGUgd29yc3QuIEl0IHNob3VsZAorY2FuY2VsIGFsbCBwZW5kaW5nIEkvTywgcmVmdXNlIGFsbCBuZXcgSS9PLCByZXR1cm5pbmcgLUVJTyB0bworaGlnaGVyIGxheWVycy4gVGhlIGRldmljZSBkcml2ZXIgc2hvdWxkIHRoZW4gY2xlYW4gdXAgYWxsIG9mIGl0cworbWVtb3J5IGFuZCByZW1vdmUgaXRzZWxmIGZyb20ga2VybmVsIG9wZXJhdGlvbnMsIG11Y2ggYXMgaXQgd291bGQKK2R1cmluZyBzeXN0ZW0gc2h1dGRvd24uCisKK1RoZSBwbGF0Zm9ybSB3aWxsIHR5cGljYWxseSBub3RpZnkgdGhlIHN5c3RlbSBvcGVyYXRvciBvZiB0aGUKK3Blcm1hbmVudCBmYWlsdXJlIGluIHNvbWUgd2F5LiAgSWYgdGhlIGRldmljZSBpcyBob3RwbHVnLWNhcGFibGUsCit0aGUgb3BlcmF0b3Igd2lsbCBwcm9iYWJseSB3YW50IHRvIHJlbW92ZSBhbmQgcmVwbGFjZSB0aGUgZGV2aWNlLgorTm90ZSwgaG93ZXZlciwgbm90IGFsbCBmYWlsdXJlcyBhcmUgdHJ1bHkgInBlcm1hbmVudCIuIFNvbWUgYXJlCitjYXVzZWQgYnkgb3Zlci1oZWF0aW5nLCBzb21lIGJ5IGEgcG9vcmx5IHNlYXRlZCBjYXJkLiBNYW55CitQQ0kgZXJyb3IgZXZlbnRzIGFyZSBjYXVzZWQgYnkgc29mdHdhcmUgYnVncywgZS5nLiBETUEncyB0bword2lsZCBhZGRyZXNzZXMgb3IgYm9ndXMgc3BsaXQgdHJhbnNhY3Rpb25zIGR1ZSB0byBwcm9ncmFtbWluZworZXJyb3JzLiBTZWUgdGhlIGRpc2N1c3Npb24gaW4gcG93ZXJwYy9lZWgtcGNpLWVycm9yLXJlY292ZXJ5LnR4dAorZm9yIGFkZGl0aW9uYWwgZGV0YWlsIG9uIHJlYWwtbGlmZSBleHBlcmllbmNlIG9mIHRoZSBjYXVzZXMgb2YKK3NvZnR3YXJlIGVycm9ycy4KKworCitDb25jbHVzaW9uOyBHZW5lcmFsIFJlbWFya3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIHdheSB0aGUgY2FsbGJhY2tzIGFyZSBjYWxsZWQgaXMgcGxhdGZvcm0gcG9saWN5LiBBIHBsYXRmb3JtIHdpdGgKK25vIHNsb3QgcmVzZXQgY2FwYWJpbGl0eSBtYXkgd2FudCB0byBqdXN0ICJpZ25vcmUiIGRyaXZlcnMgdGhhdCBjYW4ndAorcmVjb3ZlciAoZGlzY29ubmVjdCB0aGVtKSBhbmQgdHJ5IHRvIGxldCBvdGhlciBjYXJkcyBvbiB0aGUgc2FtZSBzZWdtZW50CityZWNvdmVyLiBLZWVwIGluIG1pbmQgdGhhdCBpbiBtb3N0IHJlYWwgbGlmZSBjYXNlcywgdGhvdWdoLCB0aGVyZSB3aWxsCitiZSBvbmx5IG9uZSBkcml2ZXIgcGVyIHNlZ21lbnQuCisKK05vdywgYSBub3RlIGFib3V0IGludGVycnVwdHMuIElmIHlvdSBnZXQgYW4gaW50ZXJydXB0IGFuZCB5b3VyCitkZXZpY2UgaXMgZGVhZCBvciBoYXMgYmVlbiBpc29sYXRlZCwgdGhlcmUgaXMgYSBwcm9ibGVtIDopCitUaGUgY3VycmVudCBwb2xpY3kgaXMgdG8gdHVybiB0aGlzIGludG8gYSBwbGF0Zm9ybSBwb2xpY3kuCitUaGF0IGlzLCB0aGUgcmVjb3ZlcnkgQVBJIG9ubHkgcmVxdWlyZXMgdGhhdDoKKworIC0gVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgaW50ZXJydXB0IGRlbGl2ZXJ5IGNhbiBwcm9jZWVkIGZyb20gYW55CitkZXZpY2Ugb24gdGhlIHNlZ21lbnQgc3RhcnRpbmcgZnJvbSB0aGUgZXJyb3IgZGV0ZWN0aW9uIGFuZCB1bnRpbCB0aGUKK3Nsb3RfcmVzZXQgY2FsbGJhY2sgaXMgY2FsbGVkLCBhdCB3aGljaCBwb2ludCBpbnRlcnJ1cHRzIGFyZSBleHBlY3RlZAordG8gYmUgZnVsbHkgb3BlcmF0aW9uYWwuCisKKyAtIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGludGVycnVwdCBkZWxpdmVyeSBpcyBzdG9wcGVkLCB0aGF0IGlzLAorYSBkcml2ZXIgdGhhdCBnZXRzIGFuIGludGVycnVwdCBhZnRlciBkZXRlY3RpbmcgYW4gZXJyb3IsIG9yIHRoYXQgZGV0ZWN0cworYW4gZXJyb3Igd2l0aGluIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBzdWNoIHRoYXQgaXQgcHJldmVudHMgcHJvcGVyCithY2snaW5nIG9mIHRoZSBpbnRlcnJ1cHQgKGFuZCB0aHVzIHJlbW92YWwgb2YgdGhlIHNvdXJjZSkgc2hvdWxkIGp1c3QKK3JldHVybiBJUlFfTk9USEFORExFRC4gSXQncyB1cCB0byB0aGUgcGxhdGZvcm0gdG8gZGVhbCB3aXRoIHRoYXQKK2NvbmRpdGlvbiwgdHlwaWNhbGx5IGJ5IG1hc2tpbmcgdGhlIElSUSBzb3VyY2UgZHVyaW5nIHRoZSBkdXJhdGlvbiBvZgordGhlIGVycm9yIGhhbmRsaW5nLiBJdCBpcyBleHBlY3RlZCB0aGF0IHRoZSBwbGF0Zm9ybSAia25vd3MiIHdoaWNoCitpbnRlcnJ1cHRzIGFyZSByb3V0ZWQgdG8gZXJyb3ItbWFuYWdlbWVudCBjYXBhYmxlIHNsb3RzIGFuZCBjYW4gZGVhbAord2l0aCB0ZW1wb3JhcmlseSBkaXNhYmxpbmcgdGhhdCBJUlEgbnVtYmVyIGR1cmluZyBlcnJvciBwcm9jZXNzaW5nICh0aGlzCitpc24ndCB0ZXJyaWJseSBjb21wbGV4KS4gVGhhdCBtZWFucyBzb21lIElSUSBsYXRlbmN5IGZvciBvdGhlciBkZXZpY2VzCitzaGFyaW5nIHRoZSBpbnRlcnJ1cHQsIGJ1dCB0aGVyZSBpcyBzaW1wbHkgbm8gb3RoZXIgd2F5LiBIaWdoIGVuZAorcGxhdGZvcm1zIGFyZW4ndCBzdXBwb3NlZCB0byBzaGFyZSBpbnRlcnJ1cHRzIGJldHdlZW4gbWFueSBkZXZpY2VzCithbnl3YXkgOikKKworPj4+IEltcGxlbWVudGF0aW9uIGRldGFpbHMgZm9yIHRoZSBwb3dlcnBjIHBsYXRmb3JtIGFyZSBkaXNjdXNzZWQgaW4KKz4+PiB0aGUgZmlsZSBEb2N1bWVudGF0aW9uL3Bvd2VycGMvZWVoLXBjaS1lcnJvci1yZWNvdmVyeS50eHQKKworPj4+IEFzIG9mIHRoaXMgd3JpdGluZywgdGhlcmUgaXMgYSBncm93aW5nIGxpc3Qgb2YgZGV2aWNlIGRyaXZlcnMgd2l0aAorPj4+IHBhdGNoZXMgaW1wbGVtZW50aW5nIGVycm9yIHJlY292ZXJ5LiBOb3QgYWxsIG9mIHRoZXNlIHBhdGNoZXMgYXJlIGluCis+Pj4gbWFpbmxpbmUgeWV0LiBUaGVzZSBtYXkgYmUgdXNlZCBhcyAiZXhhbXBsZXMiOgorPj4+Cis+Pj4gZHJpdmVycy9zY3NpL2lwcgorPj4+IGRyaXZlcnMvc2NzaS9zeW01M2M4eHhfMgorPj4+IGRyaXZlcnMvc2NzaS9xbGEyeHh4Cis+Pj4gZHJpdmVycy9zY3NpL2xwZmMKKz4+PiBkcml2ZXJzL25leHQvYm54Mi5jCis+Pj4gZHJpdmVycy9uZXh0L2UxMDAuYworPj4+IGRyaXZlcnMvbmV0L2UxMDAwCis+Pj4gZHJpdmVycy9uZXQvZTEwMDBlCis+Pj4gZHJpdmVycy9uZXQvaXhnYgorPj4+IGRyaXZlcnMvbmV0L2l4Z2JlCis+Pj4gZHJpdmVycy9uZXQvY3hnYjMKKz4+PiBkcml2ZXJzL25ldC9zMmlvLmMKKz4+PiBkcml2ZXJzL25ldC9xbGdlCisKK1RoZSBFbmQKKy0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUENJL3BjaS1pb3YtaG93dG8udHh0IGIvRG9jdW1lbnRhdGlvbi9QQ0kvcGNpLWlvdi1ob3d0by50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ5MWFlMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUENJL3BjaS1pb3YtaG93dG8udHh0CkBAIC0wLDAgKzEsMTM1IEBACisJCVBDSSBFeHByZXNzIEkvTyBWaXJ0dWFsaXphdGlvbiBIb3d0bworCQlDb3B5cmlnaHQgKEMpIDIwMDkgSW50ZWwgQ29ycG9yYXRpb24KKwkJICAgIFl1IFpoYW8gPHl1LnpoYW9AaW50ZWwuY29tPgorCisJCVVwZGF0ZTogTm92ZW1iZXIgMjAxMgorCQkJLS0gc3lzZnMtYmFzZWQgU1JJT1YgZW5hYmxlLS9kaXNhYmxlLW1lbnQKKwkJRG9uYWxkIER1dGlsZSA8ZGR1dGlsZUByZWRoYXQuY29tPgorCisxLiBPdmVydmlldworCisxLjEgV2hhdCBpcyBTUi1JT1YKKworU2luZ2xlIFJvb3QgSS9PIFZpcnR1YWxpemF0aW9uIChTUi1JT1YpIGlzIGEgUENJIEV4cHJlc3MgRXh0ZW5kZWQKK2NhcGFiaWxpdHkgd2hpY2ggbWFrZXMgb25lIHBoeXNpY2FsIGRldmljZSBhcHBlYXIgYXMgbXVsdGlwbGUgdmlydHVhbAorZGV2aWNlcy4gVGhlIHBoeXNpY2FsIGRldmljZSBpcyByZWZlcnJlZCB0byBhcyBQaHlzaWNhbCBGdW5jdGlvbiAoUEYpCit3aGlsZSB0aGUgdmlydHVhbCBkZXZpY2VzIGFyZSByZWZlcnJlZCB0byBhcyBWaXJ0dWFsIEZ1bmN0aW9ucyAoVkYpLgorQWxsb2NhdGlvbiBvZiB0aGUgVkYgY2FuIGJlIGR5bmFtaWNhbGx5IGNvbnRyb2xsZWQgYnkgdGhlIFBGIHZpYQorcmVnaXN0ZXJzIGVuY2Fwc3VsYXRlZCBpbiB0aGUgY2FwYWJpbGl0eS4gQnkgZGVmYXVsdCwgdGhpcyBmZWF0dXJlIGlzCitub3QgZW5hYmxlZCBhbmQgdGhlIFBGIGJlaGF2ZXMgYXMgdHJhZGl0aW9uYWwgUENJZSBkZXZpY2UuIE9uY2UgaXQncwordHVybmVkIG9uLCBlYWNoIFZGJ3MgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgY2FuIGJlIGFjY2Vzc2VkIGJ5IGl0cyBvd24KK0J1cywgRGV2aWNlIGFuZCBGdW5jdGlvbiBOdW1iZXIgKFJvdXRpbmcgSUQpLiBBbmQgZWFjaCBWRiBhbHNvIGhhcyBQQ0kKK01lbW9yeSBTcGFjZSwgd2hpY2ggaXMgdXNlZCB0byBtYXAgaXRzIHJlZ2lzdGVyIHNldC4gVkYgZGV2aWNlIGRyaXZlcgorb3BlcmF0ZXMgb24gdGhlIHJlZ2lzdGVyIHNldCBzbyBpdCBjYW4gYmUgZnVuY3Rpb25hbCBhbmQgYXBwZWFyIGFzIGEKK3JlYWwgZXhpc3RpbmcgUENJIGRldmljZS4KKworMi4gVXNlciBHdWlkZQorCisyLjEgSG93IGNhbiBJIGVuYWJsZSBTUi1JT1YgY2FwYWJpbGl0eQorCitNdWx0aXBsZSBtZXRob2RzIGFyZSBhdmFpbGFibGUgZm9yIFNSLUlPViBlbmFibGVtZW50LgorSW4gdGhlIGZpcnN0IG1ldGhvZCwgdGhlIGRldmljZSBkcml2ZXIgKFBGIGRyaXZlcikgd2lsbCBjb250cm9sIHRoZQorZW5hYmxpbmcgYW5kIGRpc2FibGluZyBvZiB0aGUgY2FwYWJpbGl0eSB2aWEgQVBJIHByb3ZpZGVkIGJ5IFNSLUlPViBjb3JlLgorSWYgdGhlIGhhcmR3YXJlIGhhcyBTUi1JT1YgY2FwYWJpbGl0eSwgbG9hZGluZyBpdHMgUEYgZHJpdmVyIHdvdWxkCitlbmFibGUgaXQgYW5kIGFsbCBWRnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBQRi4gIFNvbWUgUEYgZHJpdmVycyByZXF1aXJlCithIG1vZHVsZSBwYXJhbWV0ZXIgdG8gYmUgc2V0IHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIFZGcyB0byBlbmFibGUuCitJbiB0aGUgc2Vjb25kIG1ldGhvZCwgYSB3cml0ZSB0byB0aGUgc3lzZnMgZmlsZSBzcmlvdl9udW12ZnMgd2lsbAorZW5hYmxlIGFuZCBkaXNhYmxlIHRoZSBWRnMgYXNzb2NpYXRlZCB3aXRoIGEgUENJZSBQRi4gIFRoaXMgbWV0aG9kCitlbmFibGVzIHBlci1QRiwgVkYgZW5hYmxlL2Rpc2FibGUgdmFsdWVzIHZlcnN1cyB0aGUgZmlyc3QgbWV0aG9kLAord2hpY2ggYXBwbGllcyB0byBhbGwgUEZzIG9mIHRoZSBzYW1lIGRldmljZS4gIEFkZGl0aW9uYWxseSwgdGhlCitQQ0kgU1JJT1YgY29yZSBzdXBwb3J0IGVuc3VyZXMgdGhhdCBlbmFibGUvZGlzYWJsZSBvcGVyYXRpb25zIGFyZQordmFsaWQgdG8gcmVkdWNlIGR1cGxpY2F0aW9uIGluIG11bHRpcGxlIGRyaXZlcnMgZm9yIHRoZSBzYW1lCitjaGVja3MsIGUuZy4sIGNoZWNrIG51bXZmcyA9PSAwIGlmIGVuYWJsaW5nIFZGcywgZW5zdXJlCitudW12ZnMgPD0gdG90YWx2ZnMuCitUaGUgc2Vjb25kIG1ldGhvZCBpcyB0aGUgcmVjb21tZW5kZWQgbWV0aG9kIGZvciBuZXcvZnV0dXJlIFZGIGRldmljZXMuCisKKzIuMiBIb3cgY2FuIEkgdXNlIHRoZSBWaXJ0dWFsIEZ1bmN0aW9ucworCitUaGUgVkYgaXMgdHJlYXRlZCBhcyBob3QtcGx1Z2dlZCBQQ0kgZGV2aWNlcyBpbiB0aGUga2VybmVsLCBzbyB0aGV5CitzaG91bGQgYmUgYWJsZSB0byB3b3JrIGluIHRoZSBzYW1lIHdheSBhcyByZWFsIFBDSSBkZXZpY2VzLiBUaGUgVkYKK3JlcXVpcmVzIGRldmljZSBkcml2ZXIgdGhhdCBpcyBzYW1lIGFzIGEgbm9ybWFsIFBDSSBkZXZpY2Uncy4KKworMy4gRGV2ZWxvcGVyIEd1aWRlCisKKzMuMSBTUi1JT1YgQVBJCisKK1RvIGVuYWJsZSBTUi1JT1YgY2FwYWJpbGl0eToKKyhhKSBGb3IgdGhlIGZpcnN0IG1ldGhvZCwgaW4gdGhlIGRyaXZlcjoKKwlpbnQgcGNpX2VuYWJsZV9zcmlvdihzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgbnJfdmlydGZuKTsKKwknbnJfdmlydGZuJyBpcyBudW1iZXIgb2YgVkZzIHRvIGJlIGVuYWJsZWQuCisoYikgRm9yIHRoZSBzZWNvbmQgbWV0aG9kLCBmcm9tIHN5c2ZzOgorCWVjaG8gJ25yX3ZpcnRmbicgPiBcCisgICAgICAgIC9zeXMvYnVzL3BjaS9kZXZpY2VzLzxET01BSU46QlVTOkRFVklDRS5GVU5DVElPTj4vc3Jpb3ZfbnVtdmZzCisKK1RvIGRpc2FibGUgU1ItSU9WIGNhcGFiaWxpdHk6CisoYSkgRm9yIHRoZSBmaXJzdCBtZXRob2QsIGluIHRoZSBkcml2ZXI6CisJdm9pZCBwY2lfZGlzYWJsZV9zcmlvdihzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKKyhiKSBGb3IgdGhlIHNlY29uZCBtZXRob2QsIGZyb20gc3lzZnM6CisJZWNobyAgMCA+IFwKKyAgICAgICAgL3N5cy9idXMvcGNpL2RldmljZXMvPERPTUFJTjpCVVM6REVWSUNFLkZVTkNUSU9OPi9zcmlvdl9udW12ZnMKKworMy4yIFVzYWdlIGV4YW1wbGUKKworRm9sbG93aW5nIHBpZWNlIG9mIGNvZGUgaWxsdXN0cmF0ZXMgdGhlIHVzYWdlIG9mIHRoZSBTUi1JT1YgQVBJLgorCitzdGF0aWMgaW50IGRldl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpCit7CisJcGNpX2VuYWJsZV9zcmlvdihkZXYsIE5SX1ZJUlRGTik7CisKKwkuLi4KKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBkZXZfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpkZXYpCit7CisJcGNpX2Rpc2FibGVfc3Jpb3YoZGV2KTsKKworCS4uLgorfQorCitzdGF0aWMgaW50IGRldl9zdXNwZW5kKHN0cnVjdCBwY2lfZGV2ICpkZXYsIHBtX21lc3NhZ2VfdCBzdGF0ZSkKK3sKKwkuLi4KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRldl9yZXN1bWUoc3RydWN0IHBjaV9kZXYgKmRldikKK3sKKwkuLi4KKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBkZXZfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKmRldikKK3sKKwkuLi4KK30KKworc3RhdGljIGludCBkZXZfc3Jpb3ZfY29uZmlndXJlKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCBudW12ZnMpCit7CisJaWYgKG51bXZmcyA+IDApIHsKKwkJLi4uCisJCXBjaV9lbmFibGVfc3Jpb3YoZGV2LCBudW12ZnMpOworCQkuLi4KKwkJcmV0dXJuIG51bXZmczsKKwl9CisJaWYgKG51bXZmcyA9PSAwKSB7CisJCS4uLi4KKwkJcGNpX2Rpc2FibGVfc3Jpb3YoZGV2KTsKKwkJLi4uCisJCXJldHVybiAwOworCX0KK30KKworc3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGRldl9kcml2ZXIgPSB7CisJLm5hbWUgPQkJIlNSLUlPViBQaHlzaWNhbCBGdW5jdGlvbiBkcml2ZXIiLAorCS5pZF90YWJsZSA9CWRldl9pZF90YWJsZSwKKwkucHJvYmUgPQlkZXZfcHJvYmUsCisJLnJlbW92ZSA9CWRldl9yZW1vdmUsCisJLnN1c3BlbmQgPQlkZXZfc3VzcGVuZCwKKwkucmVzdW1lID0JZGV2X3Jlc3VtZSwKKwkuc2h1dGRvd24gPQlkZXZfc2h1dGRvd24sCisJLnNyaW92X2NvbmZpZ3VyZSA9IGRldl9zcmlvdl9jb25maWd1cmUsCit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9QQ0kvcGNpLnR4dCBiL0RvY3VtZW50YXRpb24vUENJL3BjaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTIzODgxZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUENJL3BjaS50eHQKQEAgLTAsMCArMSw2MzUgQEAKKworCQkJSG93IFRvIFdyaXRlIExpbnV4IFBDSSBEcml2ZXJzCisKKwkJYnkgTWFydGluIE1hcmVzIDxtakB1Y3cuY3o+IG9uIDA3LUZlYi0yMDAwCisJdXBkYXRlZCBieSBHcmFudCBHcnVuZGxlciA8Z3J1bmRsZXJAcGFyaXNjLWxpbnV4Lm9yZz4gb24gMjMtRGVjLTIwMDYKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK1RoZSB3b3JsZCBvZiBQQ0kgaXMgdmFzdCBhbmQgZnVsbCBvZiAobW9zdGx5IHVucGxlYXNhbnQpIHN1cnByaXNlcy4KK1NpbmNlIGVhY2ggQ1BVIGFyY2hpdGVjdHVyZSBpbXBsZW1lbnRzIGRpZmZlcmVudCBjaGlwLXNldHMgYW5kIFBDSSBkZXZpY2VzCitoYXZlIGRpZmZlcmVudCByZXF1aXJlbWVudHMgKGVybSwgImZlYXR1cmVzIiksIHRoZSByZXN1bHQgaXMgdGhlIFBDSSBzdXBwb3J0CitpbiB0aGUgTGludXgga2VybmVsIGlzIG5vdCBhcyB0cml2aWFsIGFzIG9uZSB3b3VsZCB3aXNoLiBUaGlzIHNob3J0IHBhcGVyCit0cmllcyB0byBpbnRyb2R1Y2UgYWxsIHBvdGVudGlhbCBkcml2ZXIgYXV0aG9ycyB0byBMaW51eCBBUElzIGZvcgorUENJIGRldmljZSBkcml2ZXJzLgorCitBIG1vcmUgY29tcGxldGUgcmVzb3VyY2UgaXMgdGhlIHRoaXJkIGVkaXRpb24gb2YgIkxpbnV4IERldmljZSBEcml2ZXJzIgorYnkgSm9uYXRoYW4gQ29yYmV0LCBBbGVzc2FuZHJvIFJ1YmluaSwgYW5kIEdyZWcgS3JvYWgtSGFydG1hbi4KK0xERDMgaXMgYXZhaWxhYmxlIGZvciBmcmVlICh1bmRlciBDcmVhdGl2ZSBDb21tb25zIExpY2Vuc2UpIGZyb206CisKKwlodHRwOi8vbHduLm5ldC9LZXJuZWwvTEREMy8KKworSG93ZXZlciwga2VlcCBpbiBtaW5kIHRoYXQgYWxsIGRvY3VtZW50cyBhcmUgc3ViamVjdCB0byAiYml0IHJvdCIuCitSZWZlciB0byB0aGUgc291cmNlIGNvZGUgaWYgdGhpbmdzIGFyZSBub3Qgd29ya2luZyBhcyBkZXNjcmliZWQgaGVyZS4KKworUGxlYXNlIHNlbmQgcXVlc3Rpb25zL2NvbW1lbnRzL3BhdGNoZXMgYWJvdXQgTGludXggUENJIEFQSSB0byB0aGUKKyJMaW51eCBQQ0kiIDxsaW51eC1wY2lAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6PiBtYWlsaW5nIGxpc3QuCisKKworCiswLiBTdHJ1Y3R1cmUgb2YgUENJIGRyaXZlcnMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorUENJIGRyaXZlcnMgImRpc2NvdmVyIiBQQ0kgZGV2aWNlcyBpbiBhIHN5c3RlbSB2aWEgcGNpX3JlZ2lzdGVyX2RyaXZlcigpLgorQWN0dWFsbHksIGl0J3MgdGhlIG90aGVyIHdheSBhcm91bmQuIFdoZW4gdGhlIFBDSSBnZW5lcmljIGNvZGUgZGlzY292ZXJzCithIG5ldyBkZXZpY2UsIHRoZSBkcml2ZXIgd2l0aCBhIG1hdGNoaW5nICJkZXNjcmlwdGlvbiIgd2lsbCBiZSBub3RpZmllZC4KK0RldGFpbHMgb24gdGhpcyBiZWxvdy4KKworcGNpX3JlZ2lzdGVyX2RyaXZlcigpIGxlYXZlcyBtb3N0IG9mIHRoZSBwcm9iaW5nIGZvciBkZXZpY2VzIHRvCit0aGUgUENJIGxheWVyIGFuZCBzdXBwb3J0cyBvbmxpbmUgaW5zZXJ0aW9uL3JlbW92YWwgb2YgZGV2aWNlcyBbdGh1cworc3VwcG9ydGluZyBob3QtcGx1Z2dhYmxlIFBDSSwgQ2FyZEJ1cywgYW5kIEV4cHJlc3MtQ2FyZCBpbiBhIHNpbmdsZSBkcml2ZXJdLgorcGNpX3JlZ2lzdGVyX2RyaXZlcigpIGNhbGwgcmVxdWlyZXMgcGFzc2luZyBpbiBhIHRhYmxlIG9mIGZ1bmN0aW9uCitwb2ludGVycyBhbmQgdGh1cyBkaWN0YXRlcyB0aGUgaGlnaCBsZXZlbCBzdHJ1Y3R1cmUgb2YgYSBkcml2ZXIuCisKK09uY2UgdGhlIGRyaXZlciBrbm93cyBhYm91dCBhIFBDSSBkZXZpY2UgYW5kIHRha2VzIG93bmVyc2hpcCwgdGhlCitkcml2ZXIgZ2VuZXJhbGx5IG5lZWRzIHRvIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBpbml0aWFsaXphdGlvbjoKKworCUVuYWJsZSB0aGUgZGV2aWNlCisJUmVxdWVzdCBNTUlPL0lPUCByZXNvdXJjZXMKKwlTZXQgdGhlIERNQSBtYXNrIHNpemUgKGZvciBib3RoIGNvaGVyZW50IGFuZCBzdHJlYW1pbmcgRE1BKQorCUFsbG9jYXRlIGFuZCBpbml0aWFsaXplIHNoYXJlZCBjb250cm9sIGRhdGEgKHBjaV9hbGxvY2F0ZV9jb2hlcmVudCgpKQorCUFjY2VzcyBkZXZpY2UgY29uZmlndXJhdGlvbiBzcGFjZSAoaWYgbmVlZGVkKQorCVJlZ2lzdGVyIElSUSBoYW5kbGVyIChyZXF1ZXN0X2lycSgpKQorCUluaXRpYWxpemUgbm9uLVBDSSAoaS5lLiBMQU4vU0NTSS9ldGMgcGFydHMgb2YgdGhlIGNoaXApCisJRW5hYmxlIERNQS9wcm9jZXNzaW5nIGVuZ2luZXMKKworV2hlbiBkb25lIHVzaW5nIHRoZSBkZXZpY2UsIGFuZCBwZXJoYXBzIHRoZSBtb2R1bGUgbmVlZHMgdG8gYmUgdW5sb2FkZWQsCit0aGUgZHJpdmVyIG5lZWRzIHRvIHRha2UgdGhlIGZvbGxvdyBzdGVwczoKKwlEaXNhYmxlIHRoZSBkZXZpY2UgZnJvbSBnZW5lcmF0aW5nIElSUXMKKwlSZWxlYXNlIHRoZSBJUlEgKGZyZWVfaXJxKCkpCisJU3RvcCBhbGwgRE1BIGFjdGl2aXR5CisJUmVsZWFzZSBETUEgYnVmZmVycyAoYm90aCBzdHJlYW1pbmcgYW5kIGNvaGVyZW50KQorCVVucmVnaXN0ZXIgZnJvbSBvdGhlciBzdWJzeXN0ZW1zIChlLmcuIHNjc2kgb3IgbmV0ZGV2KQorCVJlbGVhc2UgTU1JTy9JT1AgcmVzb3VyY2VzCisJRGlzYWJsZSB0aGUgZGV2aWNlCisKK01vc3Qgb2YgdGhlc2UgdG9waWNzIGFyZSBjb3ZlcmVkIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMuCitGb3IgdGhlIHJlc3QgbG9vayBhdCBMREQzIG9yIDxsaW51eC9wY2kuaD4gLgorCitJZiB0aGUgUENJIHN1YnN5c3RlbSBpcyBub3QgY29uZmlndXJlZCAoQ09ORklHX1BDSSBpcyBub3Qgc2V0KSwgbW9zdCBvZgordGhlIFBDSSBmdW5jdGlvbnMgZGVzY3JpYmVkIGJlbG93IGFyZSBkZWZpbmVkIGFzIGlubGluZSBmdW5jdGlvbnMgZWl0aGVyCitjb21wbGV0ZWx5IGVtcHR5IG9yIGp1c3QgcmV0dXJuaW5nIGFuIGFwcHJvcHJpYXRlIGVycm9yIGNvZGVzIHRvIGF2b2lkCitsb3RzIG9mIGlmZGVmcyBpbiB0aGUgZHJpdmVycy4KKworCisKKzEuIHBjaV9yZWdpc3Rlcl9kcml2ZXIoKSBjYWxsCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitQQ0kgZGV2aWNlIGRyaXZlcnMgY2FsbCBwY2lfcmVnaXN0ZXJfZHJpdmVyKCkgZHVyaW5nIHRoZWlyCitpbml0aWFsaXphdGlvbiB3aXRoIGEgcG9pbnRlciB0byBhIHN0cnVjdHVyZSBkZXNjcmliaW5nIHRoZSBkcml2ZXIKKyhzdHJ1Y3QgcGNpX2RyaXZlcik6CisKKwlmaWVsZCBuYW1lCURlc2NyaXB0aW9uCisJLS0tLS0tLS0tLQktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlpZF90YWJsZQlQb2ludGVyIHRvIHRhYmxlIG9mIGRldmljZSBJRCdzIHRoZSBkcml2ZXIgaXMKKwkJCWludGVyZXN0ZWQgaW4uICBNb3N0IGRyaXZlcnMgc2hvdWxkIGV4cG9ydCB0aGlzCisJCQl0YWJsZSB1c2luZyBNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwuLi4pLgorCisJcHJvYmUJCVRoaXMgcHJvYmluZyBmdW5jdGlvbiBnZXRzIGNhbGxlZCAoZHVyaW5nIGV4ZWN1dGlvbgorCQkJb2YgcGNpX3JlZ2lzdGVyX2RyaXZlcigpIGZvciBhbHJlYWR5IGV4aXN0aW5nCisJCQlkZXZpY2VzIG9yIGxhdGVyIGlmIGEgbmV3IGRldmljZSBnZXRzIGluc2VydGVkKSBmb3IKKwkJCWFsbCBQQ0kgZGV2aWNlcyB3aGljaCBtYXRjaCB0aGUgSUQgdGFibGUgYW5kIGFyZSBub3QKKwkJCSJvd25lZCIgYnkgdGhlIG90aGVyIGRyaXZlcnMgeWV0LiBUaGlzIGZ1bmN0aW9uIGdldHMKKwkJCXBhc3NlZCBhICJzdHJ1Y3QgcGNpX2RldiAqIiBmb3IgZWFjaCBkZXZpY2Ugd2hvc2UKKwkJCWVudHJ5IGluIHRoZSBJRCB0YWJsZSBtYXRjaGVzIHRoZSBkZXZpY2UuIFRoZSBwcm9iZQorCQkJZnVuY3Rpb24gcmV0dXJucyB6ZXJvIHdoZW4gdGhlIGRyaXZlciBjaG9vc2VzIHRvCisJCQl0YWtlICJvd25lcnNoaXAiIG9mIHRoZSBkZXZpY2Ugb3IgYW4gZXJyb3IgY29kZQorCQkJKG5lZ2F0aXZlIG51bWJlcikgb3RoZXJ3aXNlLgorCQkJVGhlIHByb2JlIGZ1bmN0aW9uIGFsd2F5cyBnZXRzIGNhbGxlZCBmcm9tIHByb2Nlc3MKKwkJCWNvbnRleHQsIHNvIGl0IGNhbiBzbGVlcC4KKworCXJlbW92ZQkJVGhlIHJlbW92ZSgpIGZ1bmN0aW9uIGdldHMgY2FsbGVkIHdoZW5ldmVyIGEgZGV2aWNlCisJCQliZWluZyBoYW5kbGVkIGJ5IHRoaXMgZHJpdmVyIGlzIHJlbW92ZWQgKGVpdGhlciBkdXJpbmcKKwkJCWRlcmVnaXN0cmF0aW9uIG9mIHRoZSBkcml2ZXIgb3Igd2hlbiBpdCdzIG1hbnVhbGx5CisJCQlwdWxsZWQgb3V0IG9mIGEgaG90LXBsdWdnYWJsZSBzbG90KS4KKwkJCVRoZSByZW1vdmUgZnVuY3Rpb24gYWx3YXlzIGdldHMgY2FsbGVkIGZyb20gcHJvY2VzcworCQkJY29udGV4dCwgc28gaXQgY2FuIHNsZWVwLgorCisJc3VzcGVuZAkJUHV0IGRldmljZSBpbnRvIGxvdyBwb3dlciBzdGF0ZS4KKwlzdXNwZW5kX2xhdGUJUHV0IGRldmljZSBpbnRvIGxvdyBwb3dlciBzdGF0ZS4KKworCXJlc3VtZV9lYXJseQlXYWtlIGRldmljZSBmcm9tIGxvdyBwb3dlciBzdGF0ZS4KKwlyZXN1bWUJCVdha2UgZGV2aWNlIGZyb20gbG93IHBvd2VyIHN0YXRlLgorCisJCShQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vcG93ZXIvcGNpLnR4dCBmb3IgZGVzY3JpcHRpb25zCisJCW9mIFBDSSBQb3dlciBNYW5hZ2VtZW50IGFuZCB0aGUgcmVsYXRlZCBmdW5jdGlvbnMuKQorCisJc2h1dGRvd24JSG9vayBpbnRvIHJlYm9vdF9ub3RpZmllcl9saXN0IChrZXJuZWwvc3lzLmMpLgorCQkJSW50ZW5kZWQgdG8gc3RvcCBhbnkgaWRsaW5nIERNQSBvcGVyYXRpb25zLgorCQkJVXNlZnVsIGZvciBlbmFibGluZyB3YWtlLW9uLWxhbiAoTklDKSBvciBjaGFuZ2luZworCQkJdGhlIHBvd2VyIHN0YXRlIG9mIGEgZGV2aWNlIGJlZm9yZSByZWJvb3QuCisJCQllLmcuIGRyaXZlcnMvbmV0L2UxMDAuYy4KKworCWVycl9oYW5kbGVyCVNlZSBEb2N1bWVudGF0aW9uL1BDSS9wY2ktZXJyb3ItcmVjb3ZlcnkudHh0CisKKworVGhlIElEIHRhYmxlIGlzIGFuIGFycmF5IG9mIHN0cnVjdCBwY2lfZGV2aWNlX2lkIGVudHJpZXMgZW5kaW5nIHdpdGggYW4KK2FsbC16ZXJvIGVudHJ5LiAgRGVmaW5pdGlvbnMgd2l0aCBzdGF0aWMgY29uc3QgYXJlIGdlbmVyYWxseSBwcmVmZXJyZWQuCitVc2Ugb2YgdGhlIGRlcHJlY2F0ZWQgbWFjcm8gREVGSU5FX1BDSV9ERVZJQ0VfVEFCTEUgc2hvdWxkIGJlIGF2b2lkZWQuCisKK0VhY2ggZW50cnkgY29uc2lzdHMgb2Y6CisKKwl2ZW5kb3IsZGV2aWNlCVZlbmRvciBhbmQgZGV2aWNlIElEIHRvIG1hdGNoIChvciBQQ0lfQU5ZX0lEKQorCisJc3VidmVuZG9yLAlTdWJzeXN0ZW0gdmVuZG9yIGFuZCBkZXZpY2UgSUQgdG8gbWF0Y2ggKG9yIFBDSV9BTllfSUQpCisJc3ViZGV2aWNlLAorCisJY2xhc3MJCURldmljZSBjbGFzcywgc3ViY2xhc3MsIGFuZCAiaW50ZXJmYWNlIiB0byBtYXRjaC4KKwkJCVNlZSBBcHBlbmRpeCBEIG9mIHRoZSBQQ0kgTG9jYWwgQnVzIFNwZWMgb3IKKwkJCWluY2x1ZGUvbGludXgvcGNpX2lkcy5oIGZvciBhIGZ1bGwgbGlzdCBvZiBjbGFzc2VzLgorCQkJTW9zdCBkcml2ZXJzIGRvIG5vdCBuZWVkIHRvIHNwZWNpZnkgY2xhc3MvY2xhc3NfbWFzaworCQkJYXMgdmVuZG9yL2RldmljZSBpcyBub3JtYWxseSBzdWZmaWNpZW50LgorCisJY2xhc3NfbWFzawlsaW1pdCB3aGljaCBzdWItZmllbGRzIG9mIHRoZSBjbGFzcyBmaWVsZCBhcmUgY29tcGFyZWQuCisJCQlTZWUgZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yLyBmb3IgZXhhbXBsZSBvZiB1c2FnZS4KKworCWRyaXZlcl9kYXRhCURhdGEgcHJpdmF0ZSB0byB0aGUgZHJpdmVyLgorCQkJTW9zdCBkcml2ZXJzIGRvbid0IG5lZWQgdG8gdXNlIGRyaXZlcl9kYXRhIGZpZWxkLgorCQkJQmVzdCBwcmFjdGljZSBpcyB0byB1c2UgZHJpdmVyX2RhdGEgYXMgYW4gaW5kZXgKKwkJCWludG8gYSBzdGF0aWMgbGlzdCBvZiBlcXVpdmFsZW50IGRldmljZSB0eXBlcywKKwkJCWluc3RlYWQgb2YgdXNpbmcgaXQgYXMgYSBwb2ludGVyLgorCisKK01vc3QgZHJpdmVycyBvbmx5IG5lZWQgUENJX0RFVklDRSgpIG9yIFBDSV9ERVZJQ0VfQ0xBU1MoKSB0byBzZXQgdXAKK2EgcGNpX2RldmljZV9pZCB0YWJsZS4KKworTmV3IFBDSSBJRHMgbWF5IGJlIGFkZGVkIHRvIGEgZGV2aWNlIGRyaXZlciBwY2lfaWRzIHRhYmxlIGF0IHJ1bnRpbWUKK2FzIHNob3duIGJlbG93OgorCitlY2hvICJ2ZW5kb3IgZGV2aWNlIHN1YnZlbmRvciBzdWJkZXZpY2UgY2xhc3MgY2xhc3NfbWFzayBkcml2ZXJfZGF0YSIgPiBcCisvc3lzL2J1cy9wY2kvZHJpdmVycy97ZHJpdmVyfS9uZXdfaWQKKworQWxsIGZpZWxkcyBhcmUgcGFzc2VkIGluIGFzIGhleGFkZWNpbWFsIHZhbHVlcyAobm8gbGVhZGluZyAweCkuCitUaGUgdmVuZG9yIGFuZCBkZXZpY2UgZmllbGRzIGFyZSBtYW5kYXRvcnksIHRoZSBvdGhlcnMgYXJlIG9wdGlvbmFsLiBVc2VycworbmVlZCBwYXNzIG9ubHkgYXMgbWFueSBvcHRpb25hbCBmaWVsZHMgYXMgbmVjZXNzYXJ5OgorCW8gc3VidmVuZG9yIGFuZCBzdWJkZXZpY2UgZmllbGRzIGRlZmF1bHQgdG8gUENJX0FOWV9JRCAoRkZGRkZGRkYpCisJbyBjbGFzcyBhbmQgY2xhc3NtYXNrIGZpZWxkcyBkZWZhdWx0IHRvIDAKKwlvIGRyaXZlcl9kYXRhIGRlZmF1bHRzIHRvIDBVTC4KKworTm90ZSB0aGF0IGRyaXZlcl9kYXRhIG11c3QgbWF0Y2ggdGhlIHZhbHVlIHVzZWQgYnkgYW55IG9mIHRoZSBwY2lfZGV2aWNlX2lkCitlbnRyaWVzIGRlZmluZWQgaW4gdGhlIGRyaXZlci4gVGhpcyBtYWtlcyB0aGUgZHJpdmVyX2RhdGEgZmllbGQgbWFuZGF0b3J5CitpZiBhbGwgdGhlIHBjaV9kZXZpY2VfaWQgZW50cmllcyBoYXZlIGEgbm9uLXplcm8gZHJpdmVyX2RhdGEgdmFsdWUuCisKK09uY2UgYWRkZWQsIHRoZSBkcml2ZXIgcHJvYmUgcm91dGluZSB3aWxsIGJlIGludm9rZWQgZm9yIGFueSB1bmNsYWltZWQKK1BDSSBkZXZpY2VzIGxpc3RlZCBpbiBpdHMgKG5ld2x5IHVwZGF0ZWQpIHBjaV9pZHMgbGlzdC4KKworV2hlbiB0aGUgZHJpdmVyIGV4aXRzLCBpdCBqdXN0IGNhbGxzIHBjaV91bnJlZ2lzdGVyX2RyaXZlcigpIGFuZCB0aGUgUENJIGxheWVyCithdXRvbWF0aWNhbGx5IGNhbGxzIHRoZSByZW1vdmUgaG9vayBmb3IgYWxsIGRldmljZXMgaGFuZGxlZCBieSB0aGUgZHJpdmVyLgorCisKKzEuMSAiQXR0cmlidXRlcyIgZm9yIGRyaXZlciBmdW5jdGlvbnMvZGF0YQorCitQbGVhc2UgbWFyayB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGNsZWFudXAgZnVuY3Rpb25zIHdoZXJlIGFwcHJvcHJpYXRlCisodGhlIGNvcnJlc3BvbmRpbmcgbWFjcm9zIGFyZSBkZWZpbmVkIGluIDxsaW51eC9pbml0Lmg+KToKKworCV9faW5pdAkJSW5pdGlhbGl6YXRpb24gY29kZS4gVGhyb3duIGF3YXkgYWZ0ZXIgdGhlIGRyaXZlcgorCQkJaW5pdGlhbGl6ZXMuCisJX19leGl0CQlFeGl0IGNvZGUuIElnbm9yZWQgZm9yIG5vbi1tb2R1bGFyIGRyaXZlcnMuCisKK1RpcHMgb24gd2hlbi93aGVyZSB0byB1c2UgdGhlIGFib3ZlIGF0dHJpYnV0ZXM6CisJbyBUaGUgbW9kdWxlX2luaXQoKS9tb2R1bGVfZXhpdCgpIGZ1bmN0aW9ucyAoYW5kIGFsbAorCSAgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zIGNhbGxlZCBfb25seV8gZnJvbSB0aGVzZSkKKwkgIHNob3VsZCBiZSBtYXJrZWQgX19pbml0L19fZXhpdC4KKworCW8gRG8gbm90IG1hcmsgdGhlIHN0cnVjdCBwY2lfZHJpdmVyLgorCisJbyBEbyBOT1QgbWFyayBhIGZ1bmN0aW9uIGlmIHlvdSBhcmUgbm90IHN1cmUgd2hpY2ggbWFyayB0byB1c2UuCisJICBCZXR0ZXIgdG8gbm90IG1hcmsgdGhlIGZ1bmN0aW9uIHRoYW4gbWFyayB0aGUgZnVuY3Rpb24gd3JvbmcuCisKKworCisyLiBIb3cgdG8gZmluZCBQQ0kgZGV2aWNlcyBtYW51YWxseQorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworUENJIGRyaXZlcnMgc2hvdWxkIGhhdmUgYSByZWFsbHkgZ29vZCByZWFzb24gZm9yIG5vdCB1c2luZyB0aGUKK3BjaV9yZWdpc3Rlcl9kcml2ZXIoKSBpbnRlcmZhY2UgdG8gc2VhcmNoIGZvciBQQ0kgZGV2aWNlcy4KK1RoZSBtYWluIHJlYXNvbiBQQ0kgZGV2aWNlcyBhcmUgY29udHJvbGxlZCBieSBtdWx0aXBsZSBkcml2ZXJzCitpcyBiZWNhdXNlIG9uZSBQQ0kgZGV2aWNlIGltcGxlbWVudHMgc2V2ZXJhbCBkaWZmZXJlbnQgSFcgc2VydmljZXMuCitFLmcuIGNvbWJpbmVkIHNlcmlhbC9wYXJhbGxlbCBwb3J0L2Zsb3BweSBjb250cm9sbGVyLgorCitBIG1hbnVhbCBzZWFyY2ggbWF5IGJlIHBlcmZvcm1lZCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbnN0cnVjdHM6CisKK1NlYXJjaGluZyBieSB2ZW5kb3IgYW5kIGRldmljZSBJRDoKKworCXN0cnVjdCBwY2lfZGV2ICpkZXYgPSBOVUxMOworCXdoaWxlIChkZXYgPSBwY2lfZ2V0X2RldmljZShWRU5ET1JfSUQsIERFVklDRV9JRCwgZGV2KSkKKwkJY29uZmlndXJlX2RldmljZShkZXYpOworCitTZWFyY2hpbmcgYnkgY2xhc3MgSUQgKGl0ZXJhdGUgaW4gYSBzaW1pbGFyIHdheSk6CisKKwlwY2lfZ2V0X2NsYXNzKENMQVNTX0lELCBkZXYpCisKK1NlYXJjaGluZyBieSBib3RoIHZlbmRvci9kZXZpY2UgYW5kIHN1YnN5c3RlbSB2ZW5kb3IvZGV2aWNlIElEOgorCisJcGNpX2dldF9zdWJzeXMoVkVORE9SX0lELERFVklDRV9JRCwgU1VCU1lTX1ZFTkRPUl9JRCwgU1VCU1lTX0RFVklDRV9JRCwgZGV2KS4KKworWW91IGNhbiB1c2UgdGhlIGNvbnN0YW50IFBDSV9BTllfSUQgYXMgYSB3aWxkY2FyZCByZXBsYWNlbWVudCBmb3IKK1ZFTkRPUl9JRCBvciBERVZJQ0VfSUQuICBUaGlzIGFsbG93cyBzZWFyY2hpbmcgZm9yIGFueSBkZXZpY2UgZnJvbSBhCitzcGVjaWZpYyB2ZW5kb3IsIGZvciBleGFtcGxlLgorCitUaGVzZSBmdW5jdGlvbnMgYXJlIGhvdHBsdWctc2FmZS4gVGhleSBpbmNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvbgordGhlIHBjaV9kZXYgdGhhdCB0aGV5IHJldHVybi4gWW91IG11c3QgZXZlbnR1YWxseSAocG9zc2libHkgYXQgbW9kdWxlIHVubG9hZCkKK2RlY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIHRoZXNlIGRldmljZXMgYnkgY2FsbGluZyBwY2lfZGV2X3B1dCgpLgorCisKKworMy4gRGV2aWNlIEluaXRpYWxpemF0aW9uIFN0ZXBzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworQXMgbm90ZWQgaW4gdGhlIGludHJvZHVjdGlvbiwgbW9zdCBQQ0kgZHJpdmVycyBuZWVkIHRoZSBmb2xsb3dpbmcgc3RlcHMKK2ZvciBkZXZpY2UgaW5pdGlhbGl6YXRpb246CisKKwlFbmFibGUgdGhlIGRldmljZQorCVJlcXVlc3QgTU1JTy9JT1AgcmVzb3VyY2VzCisJU2V0IHRoZSBETUEgbWFzayBzaXplIChmb3IgYm90aCBjb2hlcmVudCBhbmQgc3RyZWFtaW5nIERNQSkKKwlBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBzaGFyZWQgY29udHJvbCBkYXRhIChwY2lfYWxsb2NhdGVfY29oZXJlbnQoKSkKKwlBY2Nlc3MgZGV2aWNlIGNvbmZpZ3VyYXRpb24gc3BhY2UgKGlmIG5lZWRlZCkKKwlSZWdpc3RlciBJUlEgaGFuZGxlciAocmVxdWVzdF9pcnEoKSkKKwlJbml0aWFsaXplIG5vbi1QQ0kgKGkuZS4gTEFOL1NDU0kvZXRjIHBhcnRzIG9mIHRoZSBjaGlwKQorCUVuYWJsZSBETUEvcHJvY2Vzc2luZyBlbmdpbmVzLgorCitUaGUgZHJpdmVyIGNhbiBhY2Nlc3MgUENJIGNvbmZpZyBzcGFjZSByZWdpc3RlcnMgYXQgYW55IHRpbWUuCisoV2VsbCwgYWxtb3N0LiBXaGVuIHJ1bm5pbmcgQklTVCwgY29uZmlnIHNwYWNlIGNhbiBnbyBhd2F5Li4uYnV0Cit0aGF0IHdpbGwganVzdCByZXN1bHQgaW4gYSBQQ0kgQnVzIE1hc3RlciBBYm9ydCBhbmQgY29uZmlnIHJlYWRzCit3aWxsIHJldHVybiBnYXJiYWdlKS4KKworCiszLjEgRW5hYmxlIHRoZSBQQ0kgZGV2aWNlCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitCZWZvcmUgdG91Y2hpbmcgYW55IGRldmljZSByZWdpc3RlcnMsIHRoZSBkcml2ZXIgbmVlZHMgdG8gZW5hYmxlCit0aGUgUENJIGRldmljZSBieSBjYWxsaW5nIHBjaV9lbmFibGVfZGV2aWNlKCkuIFRoaXMgd2lsbDoKKwlvIHdha2UgdXAgdGhlIGRldmljZSBpZiBpdCB3YXMgaW4gc3VzcGVuZGVkIHN0YXRlLAorCW8gYWxsb2NhdGUgSS9PIGFuZCBtZW1vcnkgcmVnaW9ucyBvZiB0aGUgZGV2aWNlIChpZiBCSU9TIGRpZCBub3QpLAorCW8gYWxsb2NhdGUgYW4gSVJRIChpZiBCSU9TIGRpZCBub3QpLgorCitOT1RFOiBwY2lfZW5hYmxlX2RldmljZSgpIGNhbiBmYWlsISBDaGVjayB0aGUgcmV0dXJuIHZhbHVlLgorCitbIE9TIEJVRzogd2UgZG9uJ3QgY2hlY2sgcmVzb3VyY2UgYWxsb2NhdGlvbnMgYmVmb3JlIGVuYWJsaW5nIHRob3NlCisgIHJlc291cmNlcy4gVGhlIHNlcXVlbmNlIHdvdWxkIG1ha2UgbW9yZSBzZW5zZSBpZiB3ZSBjYWxsZWQKKyAgcGNpX3JlcXVlc3RfcmVzb3VyY2VzKCkgYmVmb3JlIGNhbGxpbmcgcGNpX2VuYWJsZV9kZXZpY2UoKS4KKyAgQ3VycmVudGx5LCB0aGUgZGV2aWNlIGRyaXZlcnMgY2FuJ3QgZGV0ZWN0IHRoZSBidWcgd2hlbiB3aGVuIHR3bworICBkZXZpY2VzIGhhdmUgYmVlbiBhbGxvY2F0ZWQgdGhlIHNhbWUgcmFuZ2UuIFRoaXMgaXMgbm90IGEgY29tbW9uCisgIHByb2JsZW0gYW5kIHVubGlrZWx5IHRvIGdldCBmaXhlZCBzb29uLgorCisgIFRoaXMgaGFzIGJlZW4gZGlzY3Vzc2VkIGJlZm9yZSBidXQgbm90IGNoYW5nZWQgYXMgb2YgMi42LjE5OgorCWh0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDYvMy8yLzE5NAorXQorCitwY2lfc2V0X21hc3RlcigpIHdpbGwgZW5hYmxlIERNQSBieSBzZXR0aW5nIHRoZSBidXMgbWFzdGVyIGJpdAoraW4gdGhlIFBDSV9DT01NQU5EIHJlZ2lzdGVyLiBJdCBhbHNvIGZpeGVzIHRoZSBsYXRlbmN5IHRpbWVyIHZhbHVlIGlmCitpdCdzIHNldCB0byBzb21ldGhpbmcgYm9ndXMgYnkgdGhlIEJJT1MuICBwY2lfY2xlYXJfbWFzdGVyKCkgd2lsbAorZGlzYWJsZSBETUEgYnkgY2xlYXJpbmcgdGhlIGJ1cyBtYXN0ZXIgYml0LgorCitJZiB0aGUgUENJIGRldmljZSBjYW4gdXNlIHRoZSBQQ0kgTWVtb3J5LVdyaXRlLUludmFsaWRhdGUgdHJhbnNhY3Rpb24sCitjYWxsIHBjaV9zZXRfbXdpKCkuICBUaGlzIGVuYWJsZXMgdGhlIFBDSV9DT01NQU5EIGJpdCBmb3IgTWVtLVdyLUludmFsCithbmQgYWxzbyBlbnN1cmVzIHRoYXQgdGhlIGNhY2hlIGxpbmUgc2l6ZSByZWdpc3RlciBpcyBzZXQgY29ycmVjdGx5LgorQ2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZiBwY2lfc2V0X213aSgpIGFzIG5vdCBhbGwgYXJjaGl0ZWN0dXJlcworb3IgY2hpcC1zZXRzIG1heSBzdXBwb3J0IE1lbW9yeS1Xcml0ZS1JbnZhbGlkYXRlLiAgQWx0ZXJuYXRpdmVseSwKK2lmIE1lbS1Xci1JbnZhbCB3b3VsZCBiZSBuaWNlIHRvIGhhdmUgYnV0IGlzIG5vdCByZXF1aXJlZCwgY2FsbAorcGNpX3RyeV9zZXRfbXdpKCkgdG8gaGF2ZSB0aGUgc3lzdGVtIGRvIGl0cyBiZXN0IGVmZm9ydCBhdCBlbmFibGluZworTWVtLVdyLUludmFsLgorCisKKzMuMiBSZXF1ZXN0IE1NSU8vSU9QIHJlc291cmNlcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitNZW1vcnkgKE1NSU8pLCBhbmQgSS9PIHBvcnQgYWRkcmVzc2VzIHNob3VsZCBOT1QgYmUgcmVhZCBkaXJlY3RseQorZnJvbSB0aGUgUENJIGRldmljZSBjb25maWcgc3BhY2UuIFVzZSB0aGUgdmFsdWVzIGluIHRoZSBwY2lfZGV2IHN0cnVjdHVyZQorYXMgdGhlIFBDSSAiYnVzIGFkZHJlc3MiIG1pZ2h0IGhhdmUgYmVlbiByZW1hcHBlZCB0byBhICJob3N0IHBoeXNpY2FsIgorYWRkcmVzcyBieSB0aGUgYXJjaC9jaGlwLXNldCBzcGVjaWZpYyBrZXJuZWwgc3VwcG9ydC4KKworU2VlIERvY3VtZW50YXRpb24vaW8tbWFwcGluZy50eHQgZm9yIGhvdyB0byBhY2Nlc3MgZGV2aWNlIHJlZ2lzdGVycworb3IgZGV2aWNlIG1lbW9yeS4KKworVGhlIGRldmljZSBkcml2ZXIgbmVlZHMgdG8gY2FsbCBwY2lfcmVxdWVzdF9yZWdpb24oKSB0byB2ZXJpZnkKK25vIG90aGVyIGRldmljZSBpcyBhbHJlYWR5IHVzaW5nIHRoZSBzYW1lIGFkZHJlc3MgcmVzb3VyY2UuCitDb252ZXJzZWx5LCBkcml2ZXJzIHNob3VsZCBjYWxsIHBjaV9yZWxlYXNlX3JlZ2lvbigpIEFGVEVSCitjYWxsaW5nIHBjaV9kaXNhYmxlX2RldmljZSgpLgorVGhlIGlkZWEgaXMgdG8gcHJldmVudCB0d28gZGV2aWNlcyBjb2xsaWRpbmcgb24gdGhlIHNhbWUgYWRkcmVzcyByYW5nZS4KKworWyBTZWUgT1MgQlVHIGNvbW1lbnQgYWJvdmUuIEN1cnJlbnRseSAoMi42LjE5KSwgVGhlIGRyaXZlciBjYW4gb25seQorICBkZXRlcm1pbmUgTU1JTyBhbmQgSU8gUG9ydCByZXNvdXJjZSBhdmFpbGFiaWxpdHkgX2FmdGVyXyBjYWxsaW5nCisgIHBjaV9lbmFibGVfZGV2aWNlKCkuIF0KKworR2VuZXJpYyBmbGF2b3JzIG9mIHBjaV9yZXF1ZXN0X3JlZ2lvbigpIGFyZSByZXF1ZXN0X21lbV9yZWdpb24oKQorKGZvciBNTUlPIHJhbmdlcykgYW5kIHJlcXVlc3RfcmVnaW9uKCkgKGZvciBJTyBQb3J0IHJhbmdlcykuCitVc2UgdGhlc2UgZm9yIGFkZHJlc3MgcmVzb3VyY2VzIHRoYXQgYXJlIG5vdCBkZXNjcmliZWQgYnkgIm5vcm1hbCIgUENJCitCQVJzLgorCitBbHNvIHNlZSBwY2lfcmVxdWVzdF9zZWxlY3RlZF9yZWdpb25zKCkgYmVsb3cuCisKKworMy4zIFNldCB0aGUgRE1BIG1hc2sgc2l6ZQorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorWyBJZiBhbnl0aGluZyBiZWxvdyBkb2Vzbid0IG1ha2Ugc2Vuc2UsIHBsZWFzZSByZWZlciB0bworICBEb2N1bWVudGF0aW9uL0RNQS1BUEkudHh0LiBUaGlzIHNlY3Rpb24gaXMganVzdCBhIHJlbWluZGVyIHRoYXQKKyAgZHJpdmVycyBuZWVkIHRvIGluZGljYXRlIERNQSBjYXBhYmlsaXRpZXMgb2YgdGhlIGRldmljZSBhbmQgaXMgbm90CisgIGFuIGF1dGhvcml0YXRpdmUgc291cmNlIGZvciBETUEgaW50ZXJmYWNlcy4gXQorCitXaGlsZSBhbGwgZHJpdmVycyBzaG91bGQgZXhwbGljaXRseSBpbmRpY2F0ZSB0aGUgRE1BIGNhcGFiaWxpdHkKKyhlLmcuIDMyIG9yIDY0IGJpdCkgb2YgdGhlIFBDSSBidXMgbWFzdGVyLCBkZXZpY2VzIHdpdGggbW9yZSB0aGFuCiszMi1iaXQgYnVzIG1hc3RlciBjYXBhYmlsaXR5IGZvciBzdHJlYW1pbmcgZGF0YSBuZWVkIHRoZSBkcml2ZXIKK3RvICJyZWdpc3RlciIgdGhpcyBjYXBhYmlsaXR5IGJ5IGNhbGxpbmcgcGNpX3NldF9kbWFfbWFzaygpIHdpdGgKK2FwcHJvcHJpYXRlIHBhcmFtZXRlcnMuICBJbiBnZW5lcmFsIHRoaXMgYWxsb3dzIG1vcmUgZWZmaWNpZW50IERNQQorb24gc3lzdGVtcyB3aGVyZSBTeXN0ZW0gUkFNIGV4aXN0cyBhYm92ZSA0RyBfcGh5c2ljYWxfIGFkZHJlc3MuCisKK0RyaXZlcnMgZm9yIGFsbCBQQ0ktWCBhbmQgUENJZSBjb21wbGlhbnQgZGV2aWNlcyBtdXN0IGNhbGwKK3BjaV9zZXRfZG1hX21hc2soKSBhcyB0aGV5IGFyZSA2NC1iaXQgRE1BIGRldmljZXMuCisKK1NpbWlsYXJseSwgZHJpdmVycyBtdXN0IGFsc28gInJlZ2lzdGVyIiB0aGlzIGNhcGFiaWxpdHkgaWYgdGhlIGRldmljZQorY2FuIGRpcmVjdGx5IGFkZHJlc3MgImNvbnNpc3RlbnQgbWVtb3J5IiBpbiBTeXN0ZW0gUkFNIGFib3ZlIDRHIHBoeXNpY2FsCithZGRyZXNzIGJ5IGNhbGxpbmcgcGNpX3NldF9jb25zaXN0ZW50X2RtYV9tYXNrKCkuCitBZ2FpbiwgdGhpcyBpbmNsdWRlcyBkcml2ZXJzIGZvciBhbGwgUENJLVggYW5kIFBDSWUgY29tcGxpYW50IGRldmljZXMuCitNYW55IDY0LWJpdCAiUENJIiBkZXZpY2VzIChiZWZvcmUgUENJLVgpIGFuZCBzb21lIFBDSS1YIGRldmljZXMgYXJlCis2NC1iaXQgRE1BIGNhcGFibGUgZm9yIHBheWxvYWQgKCJzdHJlYW1pbmciKSBkYXRhIGJ1dCBub3QgY29udHJvbAorKCJjb25zaXN0ZW50IikgZGF0YS4KKworCiszLjQgU2V0dXAgc2hhcmVkIGNvbnRyb2wgZGF0YQorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorT25jZSB0aGUgRE1BIG1hc2tzIGFyZSBzZXQsIHRoZSBkcml2ZXIgY2FuIGFsbG9jYXRlICJjb25zaXN0ZW50IiAoYS5rLmEuIHNoYXJlZCkKK21lbW9yeS4gIFNlZSBEb2N1bWVudGF0aW9uL0RNQS1BUEkudHh0IGZvciBhIGZ1bGwgZGVzY3JpcHRpb24gb2YKK3RoZSBETUEgQVBJcy4gVGhpcyBzZWN0aW9uIGlzIGp1c3QgYSByZW1pbmRlciB0aGF0IGl0IG5lZWRzIHRvIGJlIGRvbmUKK2JlZm9yZSBlbmFibGluZyBETUEgb24gdGhlIGRldmljZS4KKworCiszLjUgSW5pdGlhbGl6ZSBkZXZpY2UgcmVnaXN0ZXJzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitTb21lIGRyaXZlcnMgd2lsbCBuZWVkIHNwZWNpZmljICJjYXBhYmlsaXR5IiBmaWVsZHMgcHJvZ3JhbW1lZAorb3Igb3RoZXIgInZlbmRvciBzcGVjaWZpYyIgcmVnaXN0ZXIgaW5pdGlhbGl6ZWQgb3IgcmVzZXQuCitFLmcuIGNsZWFyaW5nIHBlbmRpbmcgaW50ZXJydXB0cy4KKworCiszLjYgUmVnaXN0ZXIgSVJRIGhhbmRsZXIKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorV2hpbGUgY2FsbGluZyByZXF1ZXN0X2lycSgpIGlzIHRoZSBsYXN0IHN0ZXAgZGVzY3JpYmVkIGhlcmUsCit0aGlzIGlzIG9mdGVuIGp1c3QgYW5vdGhlciBpbnRlcm1lZGlhdGUgc3RlcCB0byBpbml0aWFsaXplIGEgZGV2aWNlLgorVGhpcyBzdGVwIGNhbiBvZnRlbiBiZSBkZWZlcnJlZCB1bnRpbCB0aGUgZGV2aWNlIGlzIG9wZW5lZCBmb3IgdXNlLgorCitBbGwgaW50ZXJydXB0IGhhbmRsZXJzIGZvciBJUlEgbGluZXMgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgd2l0aCBJUlFGX1NIQVJFRAorYW5kIHVzZSB0aGUgZGV2aWQgdG8gbWFwIElSUXMgdG8gZGV2aWNlcyAocmVtZW1iZXIgdGhhdCBhbGwgUENJIElSUSBsaW5lcworY2FuIGJlIHNoYXJlZCkuCisKK3JlcXVlc3RfaXJxKCkgd2lsbCBhc3NvY2lhdGUgYW4gaW50ZXJydXB0IGhhbmRsZXIgYW5kIGRldmljZSBoYW5kbGUKK3dpdGggYW4gaW50ZXJydXB0IG51bWJlci4gSGlzdG9yaWNhbGx5IGludGVycnVwdCBudW1iZXJzIHJlcHJlc2VudAorSVJRIGxpbmVzIHdoaWNoIHJ1biBmcm9tIHRoZSBQQ0kgZGV2aWNlIHRvIHRoZSBJbnRlcnJ1cHQgY29udHJvbGxlci4KK1dpdGggTVNJIGFuZCBNU0ktWCAobW9yZSBiZWxvdykgdGhlIGludGVycnVwdCBudW1iZXIgaXMgYSBDUFUgInZlY3RvciIuCisKK3JlcXVlc3RfaXJxKCkgYWxzbyBlbmFibGVzIHRoZSBpbnRlcnJ1cHQuIE1ha2Ugc3VyZSB0aGUgZGV2aWNlIGlzCitxdWllc2NlZCBhbmQgZG9lcyBub3QgaGF2ZSBhbnkgaW50ZXJydXB0cyBwZW5kaW5nIGJlZm9yZSByZWdpc3RlcmluZwordGhlIGludGVycnVwdCBoYW5kbGVyLgorCitNU0kgYW5kIE1TSS1YIGFyZSBQQ0kgY2FwYWJpbGl0aWVzLiBCb3RoIGFyZSAiTWVzc2FnZSBTaWduYWxlZCBJbnRlcnJ1cHRzIgord2hpY2ggZGVsaXZlciBpbnRlcnJ1cHRzIHRvIHRoZSBDUFUgdmlhIGEgRE1BIHdyaXRlIHRvIGEgTG9jYWwgQVBJQy4KK1RoZSBmdW5kYW1lbnRhbCBkaWZmZXJlbmNlIGJldHdlZW4gTVNJIGFuZCBNU0ktWCBpcyBob3cgbXVsdGlwbGUKKyJ2ZWN0b3JzIiBnZXQgYWxsb2NhdGVkLiBNU0kgcmVxdWlyZXMgY29udGlndW91cyBibG9ja3Mgb2YgdmVjdG9ycword2hpbGUgTVNJLVggY2FuIGFsbG9jYXRlIHNldmVyYWwgaW5kaXZpZHVhbCBvbmVzLgorCitNU0kgY2FwYWJpbGl0eSBjYW4gYmUgZW5hYmxlZCBieSBjYWxsaW5nIHBjaV9lbmFibGVfbXNpKCkgb3IKK3BjaV9lbmFibGVfbXNpeCgpIGJlZm9yZSBjYWxsaW5nIHJlcXVlc3RfaXJxKCkuIFRoaXMgY2F1c2VzCit0aGUgUENJIHN1cHBvcnQgdG8gcHJvZ3JhbSBDUFUgdmVjdG9yIGRhdGEgaW50byB0aGUgUENJIGRldmljZQorY2FwYWJpbGl0eSByZWdpc3RlcnMuCisKK0lmIHlvdXIgUENJIGRldmljZSBzdXBwb3J0cyBib3RoLCB0cnkgdG8gZW5hYmxlIE1TSS1YIGZpcnN0LgorT25seSBvbmUgY2FuIGJlIGVuYWJsZWQgYXQgYSB0aW1lLiAgTWFueSBhcmNoaXRlY3R1cmVzLCBjaGlwLXNldHMsCitvciBCSU9TZXMgZG8gTk9UIHN1cHBvcnQgTVNJIG9yIE1TSS1YIGFuZCB0aGUgY2FsbCB0byBwY2lfZW5hYmxlX21zaS9tc2l4Cit3aWxsIGZhaWwuIFRoaXMgaXMgaW1wb3J0YW50IHRvIG5vdGUgc2luY2UgbWFueSBkcml2ZXJzIGhhdmUKK3R3byAob3IgbW9yZSkgaW50ZXJydXB0IGhhbmRsZXJzOiBvbmUgZm9yIE1TSS9NU0ktWCBhbmQgYW5vdGhlciBmb3IgSVJRcy4KK1RoZXkgY2hvb3NlIHdoaWNoIGhhbmRsZXIgdG8gcmVnaXN0ZXIgd2l0aCByZXF1ZXN0X2lycSgpIGJhc2VkIG9uIHRoZQorcmV0dXJuIHZhbHVlIGZyb20gcGNpX2VuYWJsZV9tc2kvbXNpeCgpLgorCitUaGVyZSBhcmUgKGF0IGxlYXN0KSB0d28gcmVhbGx5IGdvb2QgcmVhc29ucyBmb3IgdXNpbmcgTVNJOgorMSkgTVNJIGlzIGFuIGV4Y2x1c2l2ZSBpbnRlcnJ1cHQgdmVjdG9yIGJ5IGRlZmluaXRpb24uCisgICBUaGlzIG1lYW5zIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBkb2Vzbid0IGhhdmUgdG8gdmVyaWZ5CisgICBpdHMgZGV2aWNlIGNhdXNlZCB0aGUgaW50ZXJydXB0LgorCisyKSBNU0kgYXZvaWRzIERNQS9JUlEgcmFjZSBjb25kaXRpb25zLiBETUEgdG8gaG9zdCBtZW1vcnkgaXMgZ3VhcmFudGVlZAorICAgdG8gYmUgdmlzaWJsZSB0byB0aGUgaG9zdCBDUFUocykgd2hlbiB0aGUgTVNJIGlzIGRlbGl2ZXJlZC4gVGhpcworICAgaXMgaW1wb3J0YW50IGZvciBib3RoIGRhdGEgY29oZXJlbmN5IGFuZCBhdm9pZGluZyBzdGFsZSBjb250cm9sIGRhdGEuCisgICBUaGlzIGd1YXJhbnRlZSBhbGxvd3MgdGhlIGRyaXZlciB0byBvbWl0IE1NSU8gcmVhZHMgdG8gZmx1c2gKKyAgIHRoZSBETUEgc3RyZWFtLgorCitTZWUgZHJpdmVycy9pbmZpbmliYW5kL2h3L210aGNhLyBvciBkcml2ZXJzL25ldC90ZzMuYyBmb3IgZXhhbXBsZXMKK29mIE1TSS9NU0ktWCB1c2FnZS4KKworCisKKzQuIFBDSSBkZXZpY2Ugc2h1dGRvd24KK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1doZW4gYSBQQ0kgZGV2aWNlIGRyaXZlciBpcyBiZWluZyB1bmxvYWRlZCwgbW9zdCBvZiB0aGUgZm9sbG93aW5nCitzdGVwcyBuZWVkIHRvIGJlIHBlcmZvcm1lZDoKKworCURpc2FibGUgdGhlIGRldmljZSBmcm9tIGdlbmVyYXRpbmcgSVJRcworCVJlbGVhc2UgdGhlIElSUSAoZnJlZV9pcnEoKSkKKwlTdG9wIGFsbCBETUEgYWN0aXZpdHkKKwlSZWxlYXNlIERNQSBidWZmZXJzIChib3RoIHN0cmVhbWluZyBhbmQgY29uc2lzdGVudCkKKwlVbnJlZ2lzdGVyIGZyb20gb3RoZXIgc3Vic3lzdGVtcyAoZS5nLiBzY3NpIG9yIG5ldGRldikKKwlEaXNhYmxlIGRldmljZSBmcm9tIHJlc3BvbmRpbmcgdG8gTU1JTy9JTyBQb3J0IGFkZHJlc3NlcworCVJlbGVhc2UgTU1JTy9JTyBQb3J0IHJlc291cmNlKHMpCisKKworNC4xIFN0b3AgSVJRcyBvbiB0aGUgZGV2aWNlCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK0hvdyB0byBkbyB0aGlzIGlzIGNoaXAvZGV2aWNlIHNwZWNpZmljLiBJZiBpdCdzIG5vdCBkb25lLCBpdCBvcGVucwordGhlIHBvc3NpYmlsaXR5IG9mIGEgInNjcmVhbWluZyBpbnRlcnJ1cHQiIGlmIChhbmQgb25seSBpZikKK3RoZSBJUlEgaXMgc2hhcmVkIHdpdGggYW5vdGhlciBkZXZpY2UuCisKK1doZW4gdGhlIHNoYXJlZCBJUlEgaGFuZGxlciBpcyAidW5ob29rZWQiLCB0aGUgcmVtYWluaW5nIGRldmljZXMKK3VzaW5nIHRoZSBzYW1lIElSUSBsaW5lIHdpbGwgc3RpbGwgbmVlZCB0aGUgSVJRIGVuYWJsZWQuIFRodXMgaWYgdGhlCisidW5ob29rZWQiIGRldmljZSBhc3NlcnRzIElSUSBsaW5lLCB0aGUgc3lzdGVtIHdpbGwgcmVzcG9uZCBhc3N1bWluZworaXQgd2FzIG9uZSBvZiB0aGUgcmVtYWluaW5nIGRldmljZXMgYXNzZXJ0ZWQgdGhlIElSUSBsaW5lLiBTaW5jZSBub25lCitvZiB0aGUgb3RoZXIgZGV2aWNlcyB3aWxsIGhhbmRsZSB0aGUgSVJRLCB0aGUgc3lzdGVtIHdpbGwgImhhbmciIHVudGlsCitpdCBkZWNpZGVzIHRoZSBJUlEgaXNuJ3QgZ29pbmcgdG8gZ2V0IGhhbmRsZWQgYW5kIG1hc2tzIHRoZSBJUlEgKDEwMCwwMDAKK2l0ZXJhdGlvbnMgbGF0ZXIpLiBPbmNlIHRoZSBzaGFyZWQgSVJRIGlzIG1hc2tlZCwgdGhlIHJlbWFpbmluZyBkZXZpY2VzCit3aWxsIHN0b3AgZnVuY3Rpb25pbmcgcHJvcGVybHkuIE5vdCBhIG5pY2Ugc2l0dWF0aW9uLgorCitUaGlzIGlzIGFub3RoZXIgcmVhc29uIHRvIHVzZSBNU0kgb3IgTVNJLVggaWYgaXQncyBhdmFpbGFibGUuCitNU0kgYW5kIE1TSS1YIGFyZSBkZWZpbmVkIHRvIGJlIGV4Y2x1c2l2ZSBpbnRlcnJ1cHRzIGFuZCB0aHVzCithcmUgbm90IHN1c2NlcHRpYmxlIHRvIHRoZSAic2NyZWFtaW5nIGludGVycnVwdCIgcHJvYmxlbS4KKworCis0LjIgUmVsZWFzZSB0aGUgSVJRCit+fn5+fn5+fn5+fn5+fn5+fn5+CitPbmNlIHRoZSBkZXZpY2UgaXMgcXVpZXNjZWQgKG5vIG1vcmUgSVJRcyksIG9uZSBjYW4gY2FsbCBmcmVlX2lycSgpLgorVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBjb250cm9sIG9uY2UgYW55IHBlbmRpbmcgSVJRcyBhcmUgaGFuZGxlZCwKKyJ1bmhvb2siIHRoZSBkcml2ZXJzIElSUSBoYW5kbGVyIGZyb20gdGhhdCBJUlEsIGFuZCBmaW5hbGx5IHJlbGVhc2UKK3RoZSBJUlEgaWYgbm8gb25lIGVsc2UgaXMgdXNpbmcgaXQuCisKKworNC4zIFN0b3AgYWxsIERNQSBhY3Rpdml0eQorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorSXQncyBleHRyZW1lbHkgaW1wb3J0YW50IHRvIHN0b3AgYWxsIERNQSBvcGVyYXRpb25zIEJFRk9SRSBhdHRlbXB0aW5nCit0byBkZWFsbG9jYXRlIERNQSBjb250cm9sIGRhdGEuIEZhaWx1cmUgdG8gZG8gc28gY2FuIHJlc3VsdCBpbiBtZW1vcnkKK2NvcnJ1cHRpb24sIGhhbmdzLCBhbmQgb24gc29tZSBjaGlwLXNldHMgYSBoYXJkIGNyYXNoLgorCitTdG9wcGluZyBETUEgYWZ0ZXIgc3RvcHBpbmcgdGhlIElSUXMgY2FuIGF2b2lkIHJhY2VzIHdoZXJlIHRoZQorSVJRIGhhbmRsZXIgbWlnaHQgcmVzdGFydCBETUEgZW5naW5lcy4KKworV2hpbGUgdGhpcyBzdGVwIHNvdW5kcyBvYnZpb3VzIGFuZCB0cml2aWFsLCBzZXZlcmFsICJtYXR1cmUiIGRyaXZlcnMKK2RpZG4ndCBnZXQgdGhpcyBzdGVwIHJpZ2h0IGluIHRoZSBwYXN0LgorCisKKzQuNCBSZWxlYXNlIERNQSBidWZmZXJzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorT25jZSBETUEgaXMgc3RvcHBlZCwgY2xlYW4gdXAgc3RyZWFtaW5nIERNQSBmaXJzdC4KK0kuZS4gdW5tYXAgZGF0YSBidWZmZXJzIGFuZCByZXR1cm4gYnVmZmVycyB0byAidXBzdHJlYW0iCitvd25lcnMgaWYgdGhlcmUgaXMgb25lLgorCitUaGVuIGNsZWFuIHVwICJjb25zaXN0ZW50IiBidWZmZXJzIHdoaWNoIGNvbnRhaW4gdGhlIGNvbnRyb2wgZGF0YS4KKworU2VlIERvY3VtZW50YXRpb24vRE1BLUFQSS50eHQgZm9yIGRldGFpbHMgb24gdW5tYXBwaW5nIGludGVyZmFjZXMuCisKKworNC41IFVucmVnaXN0ZXIgZnJvbSBvdGhlciBzdWJzeXN0ZW1zCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK01vc3QgbG93IGxldmVsIFBDSSBkZXZpY2UgZHJpdmVycyBzdXBwb3J0IHNvbWUgb3RoZXIgc3Vic3lzdGVtCitsaWtlIFVTQiwgQUxTQSwgU0NTSSwgTmV0RGV2LCBJbmZpbmliYW5kLCBldGMuIE1ha2Ugc3VyZSB5b3VyCitkcml2ZXIgaXNuJ3QgbG9zaW5nIHJlc291cmNlcyBmcm9tIHRoYXQgb3RoZXIgc3Vic3lzdGVtLgorSWYgdGhpcyBoYXBwZW5zLCB0eXBpY2FsbHkgdGhlIHN5bXB0b20gaXMgYW4gT29wcyAocGFuaWMpIHdoZW4KK3RoZSBzdWJzeXN0ZW0gYXR0ZW1wdHMgdG8gY2FsbCBpbnRvIGEgZHJpdmVyIHRoYXQgaGFzIGJlZW4gdW5sb2FkZWQuCisKKworNC42IERpc2FibGUgRGV2aWNlIGZyb20gcmVzcG9uZGluZyB0byBNTUlPL0lPIFBvcnQgYWRkcmVzc2VzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK2lvX3VubWFwKCkgTU1JTyBvciBJTyBQb3J0IHJlc291cmNlcyBhbmQgdGhlbiBjYWxsIHBjaV9kaXNhYmxlX2RldmljZSgpLgorVGhpcyBpcyB0aGUgc3ltbWV0cmljIG9wcG9zaXRlIG9mIHBjaV9lbmFibGVfZGV2aWNlKCkuCitEbyBub3QgYWNjZXNzIGRldmljZSByZWdpc3RlcnMgYWZ0ZXIgY2FsbGluZyBwY2lfZGlzYWJsZV9kZXZpY2UoKS4KKworCis0LjcgUmVsZWFzZSBNTUlPL0lPIFBvcnQgUmVzb3VyY2UocykKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorQ2FsbCBwY2lfcmVsZWFzZV9yZWdpb24oKSB0byBtYXJrIHRoZSBNTUlPIG9yIElPIFBvcnQgcmFuZ2UgYXMgYXZhaWxhYmxlLgorRmFpbHVyZSB0byBkbyBzbyB1c3VhbGx5IHJlc3VsdHMgaW4gdGhlIGluYWJpbGl0eSB0byByZWxvYWQgdGhlIGRyaXZlci4KKworCisKKzUuIEhvdyB0byBhY2Nlc3MgUENJIGNvbmZpZyBzcGFjZQorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1lvdSBjYW4gdXNlIHBjaV8ocmVhZHx3cml0ZSlfY29uZmlnXyhieXRlfHdvcmR8ZHdvcmQpIHRvIGFjY2VzcyB0aGUgY29uZmlnCitzcGFjZSBvZiBhIGRldmljZSByZXByZXNlbnRlZCBieSBzdHJ1Y3QgcGNpX2RldiAqLiBBbGwgdGhlc2UgZnVuY3Rpb25zIHJldHVybiAwCit3aGVuIHN1Y2Nlc3NmdWwgb3IgYW4gZXJyb3IgY29kZSAoUENJQklPU18uLi4pIHdoaWNoIGNhbiBiZSB0cmFuc2xhdGVkIHRvIGEgdGV4dAorc3RyaW5nIGJ5IHBjaWJpb3Nfc3RyZXJyb3IuIE1vc3QgZHJpdmVycyBleHBlY3QgdGhhdCBhY2Nlc3NlcyB0byB2YWxpZCBQQ0kKK2RldmljZXMgZG9uJ3QgZmFpbC4KKworSWYgeW91IGRvbid0IGhhdmUgYSBzdHJ1Y3QgcGNpX2RldiBhdmFpbGFibGUsIHlvdSBjYW4gY2FsbAorcGNpX2J1c18ocmVhZHx3cml0ZSlfY29uZmlnXyhieXRlfHdvcmR8ZHdvcmQpIHRvIGFjY2VzcyBhIGdpdmVuIGRldmljZQorYW5kIGZ1bmN0aW9uIG9uIHRoYXQgYnVzLgorCitJZiB5b3UgYWNjZXNzIGZpZWxkcyBpbiB0aGUgc3RhbmRhcmQgcG9ydGlvbiBvZiB0aGUgY29uZmlnIGhlYWRlciwgcGxlYXNlCit1c2Ugc3ltYm9saWMgbmFtZXMgb2YgbG9jYXRpb25zIGFuZCBiaXRzIGRlY2xhcmVkIGluIDxsaW51eC9wY2kuaD4uCisKK0lmIHlvdSBuZWVkIHRvIGFjY2VzcyBFeHRlbmRlZCBQQ0kgQ2FwYWJpbGl0eSByZWdpc3RlcnMsIGp1c3QgY2FsbAorcGNpX2ZpbmRfY2FwYWJpbGl0eSgpIGZvciB0aGUgcGFydGljdWxhciBjYXBhYmlsaXR5IGFuZCBpdCB3aWxsIGZpbmQgdGhlCitjb3JyZXNwb25kaW5nIHJlZ2lzdGVyIGJsb2NrIGZvciB5b3UuCisKKworCis2LiBPdGhlciBpbnRlcmVzdGluZyBmdW5jdGlvbnMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitwY2lfZ2V0X2RvbWFpbl9idXNfYW5kX3Nsb3QoKQlGaW5kIHBjaV9kZXYgY29ycmVzcG9uZGluZyB0byBnaXZlbiBkb21haW4sCisJCQkJYnVzIGFuZCBzbG90IGFuZCBudW1iZXIuIElmIHRoZSBkZXZpY2UgaXMKKwkJCQlmb3VuZCwgaXRzIHJlZmVyZW5jZSBjb3VudCBpcyBpbmNyZWFzZWQuCitwY2lfc2V0X3Bvd2VyX3N0YXRlKCkJCVNldCBQQ0kgUG93ZXIgTWFuYWdlbWVudCBzdGF0ZSAoMD1EMCAuLi4gMz1EMykKK3BjaV9maW5kX2NhcGFiaWxpdHkoKQkJRmluZCBzcGVjaWZpZWQgY2FwYWJpbGl0eSBpbiBkZXZpY2UncyBjYXBhYmlsaXR5CisJCQkJbGlzdC4KK3BjaV9yZXNvdXJjZV9zdGFydCgpCQlSZXR1cm5zIGJ1cyBzdGFydCBhZGRyZXNzIGZvciBhIGdpdmVuIFBDSSByZWdpb24KK3BjaV9yZXNvdXJjZV9lbmQoKQkJUmV0dXJucyBidXMgZW5kIGFkZHJlc3MgZm9yIGEgZ2l2ZW4gUENJIHJlZ2lvbgorcGNpX3Jlc291cmNlX2xlbigpCQlSZXR1cm5zIHRoZSBieXRlIGxlbmd0aCBvZiBhIFBDSSByZWdpb24KK3BjaV9zZXRfZHJ2ZGF0YSgpCQlTZXQgcHJpdmF0ZSBkcml2ZXIgZGF0YSBwb2ludGVyIGZvciBhIHBjaV9kZXYKK3BjaV9nZXRfZHJ2ZGF0YSgpCQlSZXR1cm4gcHJpdmF0ZSBkcml2ZXIgZGF0YSBwb2ludGVyIGZvciBhIHBjaV9kZXYKK3BjaV9zZXRfbXdpKCkJCQlFbmFibGUgTWVtb3J5LVdyaXRlLUludmFsaWRhdGUgdHJhbnNhY3Rpb25zLgorcGNpX2NsZWFyX213aSgpCQkJRGlzYWJsZSBNZW1vcnktV3JpdGUtSW52YWxpZGF0ZSB0cmFuc2FjdGlvbnMuCisKKworCis3LiBNaXNjZWxsYW5lb3VzIGhpbnRzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1doZW4gZGlzcGxheWluZyBQQ0kgZGV2aWNlIG5hbWVzIHRvIHRoZSB1c2VyIChmb3IgZXhhbXBsZSB3aGVuIGEgZHJpdmVyIHdhbnRzCit0byB0ZWxsIHRoZSB1c2VyIHdoYXQgY2FyZCBoYXMgaXQgZm91bmQpLCBwbGVhc2UgdXNlIHBjaV9uYW1lKHBjaV9kZXYpLgorCitBbHdheXMgcmVmZXIgdG8gdGhlIFBDSSBkZXZpY2VzIGJ5IGEgcG9pbnRlciB0byB0aGUgcGNpX2RldiBzdHJ1Y3R1cmUuCitBbGwgUENJIGxheWVyIGZ1bmN0aW9ucyB1c2UgdGhpcyBpZGVudGlmaWNhdGlvbiBhbmQgaXQncyB0aGUgb25seQorcmVhc29uYWJsZSBvbmUuIERvbid0IHVzZSBidXMvc2xvdC9mdW5jdGlvbiBudW1iZXJzIGV4Y2VwdCBmb3IgdmVyeQorc3BlY2lhbCBwdXJwb3NlcyAtLSBvbiBzeXN0ZW1zIHdpdGggbXVsdGlwbGUgcHJpbWFyeSBidXNlcyB0aGVpciBzZW1hbnRpY3MKK2NhbiBiZSBwcmV0dHkgY29tcGxleC4KKworRG9uJ3QgdHJ5IHRvIHR1cm4gb24gRmFzdCBCYWNrIHRvIEJhY2sgd3JpdGVzIGluIHlvdXIgZHJpdmVyLiAgQWxsIGRldmljZXMKK29uIHRoZSBidXMgbmVlZCB0byBiZSBjYXBhYmxlIG9mIGRvaW5nIGl0LCBzbyB0aGlzIGlzIHNvbWV0aGluZyB3aGljaCBuZWVkcwordG8gYmUgaGFuZGxlZCBieSBwbGF0Zm9ybSBhbmQgZ2VuZXJpYyBjb2RlLCBub3QgaW5kaXZpZHVhbCBkcml2ZXJzLgorCisKKworOC4gVmVuZG9yIGFuZCBkZXZpY2UgaWRlbnRpZmljYXRpb25zCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworRG8gbm90IGFkZCBuZXcgZGV2aWNlIG9yIHZlbmRvciBJRHMgdG8gaW5jbHVkZS9saW51eC9wY2lfaWRzLmggdW5sZXNzIHRoZXkKK2FyZSBzaGFyZWQgYWNyb3NzIG11bHRpcGxlIGRyaXZlcnMuICBZb3UgY2FuIGFkZCBwcml2YXRlIGRlZmluaXRpb25zIGluCit5b3VyIGRyaXZlciBpZiB0aGV5J3JlIGhlbHBmdWwsIG9yIGp1c3QgdXNlIHBsYWluIGhleCBjb25zdGFudHMuCisKK1RoZSBkZXZpY2UgSURzIGFyZSBhcmJpdHJhcnkgaGV4IG51bWJlcnMgKHZlbmRvciBjb250cm9sbGVkKSBhbmQgbm9ybWFsbHkgdXNlZAorb25seSBpbiBhIHNpbmdsZSBsb2NhdGlvbiwgdGhlIHBjaV9kZXZpY2VfaWQgdGFibGUuCisKK1BsZWFzZSBETyBzdWJtaXQgbmV3IHZlbmRvci9kZXZpY2UgSURzIHRvIGh0dHA6Ly9wY2lpZHMuc291cmNlZm9yZ2UubmV0Ly4KKworCisKKzkuIE9ic29sZXRlIGZ1bmN0aW9ucworfn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1RoZXJlIGFyZSBzZXZlcmFsIGZ1bmN0aW9ucyB3aGljaCB5b3UgbWlnaHQgY29tZSBhY3Jvc3Mgd2hlbiB0cnlpbmcgdG8KK3BvcnQgYW4gb2xkIGRyaXZlciB0byB0aGUgbmV3IFBDSSBpbnRlcmZhY2UuICBUaGV5IGFyZSBubyBsb25nZXIgcHJlc2VudAoraW4gdGhlIGtlcm5lbCBhcyB0aGV5IGFyZW4ndCBjb21wYXRpYmxlIHdpdGggaG90cGx1ZyBvciBQQ0kgZG9tYWlucyBvcgoraGF2aW5nIHNhbmUgbG9ja2luZy4KKworcGNpX2ZpbmRfZGV2aWNlKCkJU3VwZXJzZWRlZCBieSBwY2lfZ2V0X2RldmljZSgpCitwY2lfZmluZF9zdWJzeXMoKQlTdXBlcnNlZGVkIGJ5IHBjaV9nZXRfc3Vic3lzKCkKK3BjaV9maW5kX3Nsb3QoKQkJU3VwZXJzZWRlZCBieSBwY2lfZ2V0X2RvbWFpbl9idXNfYW5kX3Nsb3QoKQorcGNpX2dldF9zbG90KCkJCVN1cGVyc2VkZWQgYnkgcGNpX2dldF9kb21haW5fYnVzX2FuZF9zbG90KCkKKworCitUaGUgYWx0ZXJuYXRpdmUgaXMgdGhlIHRyYWRpdGlvbmFsIFBDSSBkZXZpY2UgZHJpdmVyIHRoYXQgd2Fsa3MgUENJCitkZXZpY2UgbGlzdHMuIFRoaXMgaXMgc3RpbGwgcG9zc2libGUgYnV0IGRpc2NvdXJhZ2VkLgorCisKKworMTAuIE1NSU8gU3BhY2UgYW5kICJXcml0ZSBQb3N0aW5nIgorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitDb252ZXJ0aW5nIGEgZHJpdmVyIGZyb20gdXNpbmcgSS9PIFBvcnQgc3BhY2UgdG8gdXNpbmcgTU1JTyBzcGFjZQorb2Z0ZW4gcmVxdWlyZXMgc29tZSBhZGRpdGlvbmFsIGNoYW5nZXMuIFNwZWNpZmljYWxseSwgIndyaXRlIHBvc3RpbmciCituZWVkcyB0byBiZSBoYW5kbGVkLiBNYW55IGRyaXZlcnMgKGUuZy4gdGczLCBhY2VuaWMsIHN5bTUzYzh4eF8yKQorYWxyZWFkeSBkbyB0aGlzLiBJL08gUG9ydCBzcGFjZSBndWFyYW50ZWVzIHdyaXRlIHRyYW5zYWN0aW9ucyByZWFjaCB0aGUgUENJCitkZXZpY2UgYmVmb3JlIHRoZSBDUFUgY2FuIGNvbnRpbnVlLiBXcml0ZXMgdG8gTU1JTyBzcGFjZSBhbGxvdyB0aGUgQ1BVCit0byBjb250aW51ZSBiZWZvcmUgdGhlIHRyYW5zYWN0aW9uIHJlYWNoZXMgdGhlIFBDSSBkZXZpY2UuIEhXIHdlZW5pZXMKK2NhbGwgdGhpcyAiV3JpdGUgUG9zdGluZyIgYmVjYXVzZSB0aGUgd3JpdGUgY29tcGxldGlvbiBpcyAicG9zdGVkIiB0bwordGhlIENQVSBiZWZvcmUgdGhlIHRyYW5zYWN0aW9uIGhhcyByZWFjaGVkIGl0cyBkZXN0aW5hdGlvbi4KKworVGh1cywgdGltaW5nIHNlbnNpdGl2ZSBjb2RlIHNob3VsZCBhZGQgcmVhZGwoKSB3aGVyZSB0aGUgQ1BVIGlzCitleHBlY3RlZCB0byB3YWl0IGJlZm9yZSBkb2luZyBvdGhlciB3b3JrLiAgVGhlIGNsYXNzaWMgImJpdCBiYW5naW5nIgorc2VxdWVuY2Ugd29ya3MgZmluZSBmb3IgSS9PIFBvcnQgc3BhY2U6CisKKyAgICAgICBmb3IgKGkgPSA4OyAtLWk7IHZhbCA+Pj0gMSkgeworICAgICAgICAgICAgICAgb3V0Yih2YWwgJiAxLCBpb3BvcnRfcmVnKTsgICAgICAvKiB3cml0ZSBiaXQgKi8KKyAgICAgICAgICAgICAgIHVkZWxheSgxMCk7CisgICAgICAgfQorCitUaGUgc2FtZSBzZXF1ZW5jZSBmb3IgTU1JTyBzcGFjZSBzaG91bGQgYmU6CisKKyAgICAgICBmb3IgKGkgPSA4OyAtLWk7IHZhbCA+Pj0gMSkgeworICAgICAgICAgICAgICAgd3JpdGViKHZhbCAmIDEsIG1taW9fcmVnKTsgICAgICAvKiB3cml0ZSBiaXQgKi8KKyAgICAgICAgICAgICAgIHJlYWRiKHNhZmVfbW1pb19yZWcpOyAgICAgICAgICAgLyogZmx1c2ggcG9zdGVkIHdyaXRlICovCisgICAgICAgICAgICAgICB1ZGVsYXkoMTApOworICAgICAgIH0KKworSXQgaXMgaW1wb3J0YW50IHRoYXQgInNhZmVfbW1pb19yZWciIG5vdCBoYXZlIGFueSBzaWRlIGVmZmVjdHMgdGhhdAoraW50ZXJmZXJlcyB3aXRoIHRoZSBjb3JyZWN0IG9wZXJhdGlvbiBvZiB0aGUgZGV2aWNlLgorCitBbm90aGVyIGNhc2UgdG8gd2F0Y2ggb3V0IGZvciBpcyB3aGVuIHJlc2V0dGluZyBhIFBDSSBkZXZpY2UuIFVzZSBQQ0kKK0NvbmZpZ3VyYXRpb24gc3BhY2UgcmVhZHMgdG8gZmx1c2ggdGhlIHdyaXRlbCgpLiBUaGlzIHdpbGwgZ3JhY2VmdWxseQoraGFuZGxlIHRoZSBQQ0kgbWFzdGVyIGFib3J0IG9uIGFsbCBwbGF0Zm9ybXMgaWYgdGhlIFBDSSBkZXZpY2UgaXMKK2V4cGVjdGVkIHRvIG5vdCByZXNwb25kIHRvIGEgcmVhZGwoKS4gIE1vc3QgeDg2IHBsYXRmb3JtcyB3aWxsIGFsbG93CitNTUlPIHJlYWRzIHRvIG1hc3RlciBhYm9ydCAoYS5rLmEuICJTb2Z0IEZhaWwiKSBhbmQgcmV0dXJuIGdhcmJhZ2UKKyhlLmcuIH4wKS4gQnV0IG1hbnkgUklTQyBwbGF0Zm9ybXMgd2lsbCBjcmFzaCAoYS5rLmEuIkhhcmQgRmFpbCIpLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1BDSS9wY2llYWVyLWhvd3RvLnR4dCBiL0RvY3VtZW50YXRpb24vUENJL3BjaWVhZXItaG93dG8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0OTg3YzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1BDSS9wY2llYWVyLWhvd3RvLnR4dApAQCAtMCwwICsxLDI3MCBAQAorICAgVGhlIFBDSSBFeHByZXNzIEFkdmFuY2VkIEVycm9yIFJlcG9ydGluZyBEcml2ZXIgR3VpZGUgSE9XVE8KKwkJVC4gTG9uZyBOZ3V5ZW4JPHRvbS5sLm5ndXllbkBpbnRlbC5jb20+CisJCVlhbm1pbiBaaGFuZwk8eWFubWluLnpoYW5nQGludGVsLmNvbT4KKwkJCQkwNy8yOS8yMDA2CisKKworMS4gT3ZlcnZpZXcKKworMS4xIEFib3V0IHRoaXMgZ3VpZGUKKworVGhpcyBndWlkZSBkZXNjcmliZXMgdGhlIGJhc2ljcyBvZiB0aGUgUENJIEV4cHJlc3MgQWR2YW5jZWQgRXJyb3IKK1JlcG9ydGluZyAoQUVSKSBkcml2ZXIgYW5kIHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIGhvdyB0byB1c2UgaXQsIGFzCit3ZWxsIGFzIGhvdyB0byBlbmFibGUgdGhlIGRyaXZlcnMgb2YgZW5kcG9pbnQgZGV2aWNlcyB0byBjb25mb3JtIHdpdGgKK1BDSSBFeHByZXNzIEFFUiBkcml2ZXIuCisKKzEuMiBDb3B5cmlnaHQgKEMpIEludGVsIENvcnBvcmF0aW9uIDIwMDYuCisKKzEuMyBXaGF0IGlzIHRoZSBQQ0kgRXhwcmVzcyBBRVIgRHJpdmVyPworCitQQ0kgRXhwcmVzcyBlcnJvciBzaWduYWxpbmcgY2FuIG9jY3VyIG9uIHRoZSBQQ0kgRXhwcmVzcyBsaW5rIGl0c2VsZgorb3Igb24gYmVoYWxmIG9mIHRyYW5zYWN0aW9ucyBpbml0aWF0ZWQgb24gdGhlIGxpbmsuIFBDSSBFeHByZXNzCitkZWZpbmVzIHR3byBlcnJvciByZXBvcnRpbmcgcGFyYWRpZ21zOiB0aGUgYmFzZWxpbmUgY2FwYWJpbGl0eSBhbmQKK3RoZSBBZHZhbmNlZCBFcnJvciBSZXBvcnRpbmcgY2FwYWJpbGl0eS4gVGhlIGJhc2VsaW5lIGNhcGFiaWxpdHkgaXMKK3JlcXVpcmVkIG9mIGFsbCBQQ0kgRXhwcmVzcyBjb21wb25lbnRzIHByb3ZpZGluZyBhIG1pbmltdW0gZGVmaW5lZAorc2V0IG9mIGVycm9yIHJlcG9ydGluZyByZXF1aXJlbWVudHMuIEFkdmFuY2VkIEVycm9yIFJlcG9ydGluZworY2FwYWJpbGl0eSBpcyBpbXBsZW1lbnRlZCB3aXRoIGEgUENJIEV4cHJlc3MgYWR2YW5jZWQgZXJyb3IgcmVwb3J0aW5nCitleHRlbmRlZCBjYXBhYmlsaXR5IHN0cnVjdHVyZSBwcm92aWRpbmcgbW9yZSByb2J1c3QgZXJyb3IgcmVwb3J0aW5nLgorCitUaGUgUENJIEV4cHJlc3MgQUVSIGRyaXZlciBwcm92aWRlcyB0aGUgaW5mcmFzdHJ1Y3R1cmUgdG8gc3VwcG9ydCBQQ0kKK0V4cHJlc3MgQWR2YW5jZWQgRXJyb3IgUmVwb3J0aW5nIGNhcGFiaWxpdHkuIFRoZSBQQ0kgRXhwcmVzcyBBRVIKK2RyaXZlciBwcm92aWRlcyB0aHJlZSBiYXNpYyBmdW5jdGlvbnM6CisKKy0JR2F0aGVycyB0aGUgY29tcHJlaGVuc2l2ZSBlcnJvciBpbmZvcm1hdGlvbiBpZiBlcnJvcnMgb2NjdXJyZWQuCistCVJlcG9ydHMgZXJyb3IgdG8gdGhlIHVzZXJzLgorLQlQZXJmb3JtcyBlcnJvciByZWNvdmVyeSBhY3Rpb25zLgorCitBRVIgZHJpdmVyIG9ubHkgYXR0YWNoZXMgcm9vdCBwb3J0cyB3aGljaCBzdXBwb3J0IFBDSS1FeHByZXNzIEFFUgorY2FwYWJpbGl0eS4KKworCisyLiBVc2VyIEd1aWRlCisKKzIuMSBJbmNsdWRlIHRoZSBQQ0kgRXhwcmVzcyBBRVIgUm9vdCBEcml2ZXIgaW50byB0aGUgTGludXggS2VybmVsCisKK1RoZSBQQ0kgRXhwcmVzcyBBRVIgUm9vdCBkcml2ZXIgaXMgYSBSb290IFBvcnQgc2VydmljZSBkcml2ZXIgYXR0YWNoZWQKK3RvIHRoZSBQQ0kgRXhwcmVzcyBQb3J0IEJ1cyBkcml2ZXIuIElmIGEgdXNlciB3YW50cyB0byB1c2UgaXQsIHRoZSBkcml2ZXIKK2hhcyB0byBiZSBjb21waWxlZC4gT3B0aW9uIENPTkZJR19QQ0lFQUVSIHN1cHBvcnRzIHRoaXMgY2FwYWJpbGl0eS4gSXQKK2RlcGVuZHMgb24gQ09ORklHX1BDSUVQT1JUQlVTLCBzbyBwbHMuIHNldCBDT05GSUdfUENJRVBPUlRCVVM9eSBhbmQKK0NPTkZJR19QQ0lFQUVSID0geS4KKworMi4yIExvYWQgUENJIEV4cHJlc3MgQUVSIFJvb3QgRHJpdmVyCitUaGVyZSBpcyBhIGNhc2Ugd2hlcmUgYSBzeXN0ZW0gaGFzIEFFUiBzdXBwb3J0IGluIEJJT1MuIEVuYWJsaW5nIHRoZSBBRVIKK1Jvb3QgZHJpdmVyIGFuZCBoYXZpbmcgQUVSIHN1cHBvcnQgaW4gQklPUyBtYXkgcmVzdWx0IHVucHJlZGljdGFibGUKK2JlaGF2aW9yLiBUbyBhdm9pZCB0aGlzIGNvbmZsaWN0LCBhIHN1Y2Nlc3NmdWwgbG9hZCBvZiB0aGUgQUVSIFJvb3QgZHJpdmVyCityZXF1aXJlcyBBQ1BJIF9PU0Mgc3VwcG9ydCBpbiB0aGUgQklPUyB0byBhbGxvdyB0aGUgQUVSIFJvb3QgZHJpdmVyIHRvCityZXF1ZXN0IGZvciBuYXRpdmUgY29udHJvbCBvZiBBRVIuIFNlZSB0aGUgUENJIEZXIDMuMCBTcGVjaWZpY2F0aW9uIGZvcgorZGV0YWlscyByZWdhcmRpbmcgT1NDIHVzYWdlLiBDdXJyZW50bHksIGxvdHMgb2YgZmlybXdhcmVzIGRvbid0IHByb3ZpZGUKK19PU0Mgc3VwcG9ydCB3aGlsZSB0aGV5IHVzZSBQQ0kgRXhwcmVzcy4gVG8gc3VwcG9ydCBzdWNoIGZpcm13YXJlcywKK2ZvcmNlbG9hZCwgYSBwYXJhbWV0ZXIgb2YgdHlwZSBib29sLCBjb3VsZCBlbmFibGUgQUVSIHRvIGNvbnRpbnVlIHRvCitiZSBpbml0aWF0ZWQgYWx0aG91Z2ggZmlybXdhcmVzIGhhdmUgbm8gX09TQyBzdXBwb3J0LiBUbyBlbmFibGUgdGhlCit3YWxrYXJvdW5kLCBwbHMuIGFkZCBhZXJkcml2ZXIuZm9yY2Vsb2FkPXkgdG8ga2VybmVsIGJvb3QgcGFyYW1ldGVyIGxpbmUKK3doZW4gYm9vdGluZyBrZXJuZWwuIE5vdGUgdGhhdCBmb3JjZWxvYWQ9biBieSBkZWZhdWx0LgorCitub3NvdXJjZWlkLCBhbm90aGVyIHBhcmFtZXRlciBvZiB0eXBlIGJvb2wsIGNhbiBiZSB1c2VkIHdoZW4gYnJva2VuCitoYXJkd2FyZSAobW9zdGx5IGNoaXBzZXRzKSBoYXMgcm9vdCBwb3J0cyB0aGF0IGNhbm5vdCBvYnRhaW4gdGhlIHJlcG9ydGluZworc291cmNlIElELiBub3NvdXJjZWlkPW4gYnkgZGVmYXVsdC4KKworMi4zIEFFUiBlcnJvciBvdXRwdXQKK1doZW4gYSBQQ0ktRSBBRVIgZXJyb3IgaXMgY2FwdHVyZWQsIGFuIGVycm9yIG1lc3NhZ2Ugd2lsbCBiZSBvdXRwdXR0ZWQgdG8KK2NvbnNvbGUuIElmIGl0J3MgYSBjb3JyZWN0YWJsZSBlcnJvciwgaXQgaXMgb3V0cHV0dGVkIGFzIGEgd2FybmluZy4KK090aGVyd2lzZSwgaXQgaXMgcHJpbnRlZCBhcyBhbiBlcnJvci4gU28gdXNlcnMgY291bGQgY2hvb3NlIGRpZmZlcmVudAorbG9nIGxldmVsIHRvIGZpbHRlciBvdXQgY29ycmVjdGFibGUgZXJyb3IgbWVzc2FnZXMuCisKK0JlbG93IHNob3dzIGFuIGV4YW1wbGU6CiswMDAwOjUwOjAwLjA6IFBDSWUgQnVzIEVycm9yOiBzZXZlcml0eT1VbmNvcnJlY3RlZCAoRmF0YWwpLCB0eXBlPVRyYW5zYWN0aW9uIExheWVyLCBpZD0wNTAwKFJlcXVlc3RlciBJRCkKKzAwMDA6NTA6MDAuMDogICBkZXZpY2UgWzgwODY6MDMyOV0gZXJyb3Igc3RhdHVzL21hc2s9MDAxMDAwMDAvMDAwMDAwMDAKKzAwMDA6NTA6MDAuMDogICAgWzIwXSBVbnN1cHBvcnRlZCBSZXF1ZXN0ICAgIChGaXJzdCkKKzAwMDA6NTA6MDAuMDogICBUTFAgSGVhZGVyOiAwNDAwMDAwMSAwMDIwMGEwMyAwNTAxMDAwMCAwMDA1MDEwMAorCitJbiB0aGUgZXhhbXBsZSwgJ1JlcXVlc3RlciBJRCcgbWVhbnMgdGhlIElEIG9mIHRoZSBkZXZpY2Ugd2hvIHNlbmRzCit0aGUgZXJyb3IgbWVzc2FnZSB0byByb290IHBvcnQuIFBscy4gcmVmZXIgdG8gcGNpIGV4cHJlc3Mgc3BlY3MgZm9yCitvdGhlciBmaWVsZHMuCisKKworMy4gRGV2ZWxvcGVyIEd1aWRlCisKK1RvIGVuYWJsZSBBRVIgYXdhcmUgc3VwcG9ydCByZXF1aXJlcyBhIHNvZnR3YXJlIGRyaXZlciB0byBjb25maWd1cmUKK3RoZSBBRVIgY2FwYWJpbGl0eSBzdHJ1Y3R1cmUgd2l0aGluIGl0cyBkZXZpY2UgYW5kIHRvIHByb3ZpZGUgY2FsbGJhY2tzLgorCitUbyBzdXBwb3J0IEFFUiBiZXR0ZXIsIGRldmVsb3BlcnMgbmVlZCB1bmRlcnN0YW5kIGhvdyBBRVIgZG9lcyB3b3JrCitmaXJzdGx5LgorCitQQ0kgRXhwcmVzcyBlcnJvcnMgYXJlIGNsYXNzaWZpZWQgaW50byB0d28gdHlwZXM6IGNvcnJlY3RhYmxlIGVycm9ycworYW5kIHVuY29ycmVjdGFibGUgZXJyb3JzLiBUaGlzIGNsYXNzaWZpY2F0aW9uIGlzIGJhc2VkIG9uIHRoZSBpbXBhY3RzCitvZiB0aG9zZSBlcnJvcnMsIHdoaWNoIG1heSByZXN1bHQgaW4gZGVncmFkZWQgcGVyZm9ybWFuY2Ugb3IgZnVuY3Rpb24KK2ZhaWx1cmUuCisKK0NvcnJlY3RhYmxlIGVycm9ycyBwb3NlIG5vIGltcGFjdHMgb24gdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlCitpbnRlcmZhY2UuIFRoZSBQQ0kgRXhwcmVzcyBwcm90b2NvbCBjYW4gcmVjb3ZlciB3aXRob3V0IGFueSBzb2Z0d2FyZQoraW50ZXJ2ZW50aW9uIG9yIGFueSBsb3NzIG9mIGRhdGEuIFRoZXNlIGVycm9ycyBhcmUgZGV0ZWN0ZWQgYW5kCitjb3JyZWN0ZWQgYnkgaGFyZHdhcmUuIFVubGlrZSBjb3JyZWN0YWJsZSBlcnJvcnMsIHVuY29ycmVjdGFibGUKK2Vycm9ycyBpbXBhY3QgZnVuY3Rpb25hbGl0eSBvZiB0aGUgaW50ZXJmYWNlLiBVbmNvcnJlY3RhYmxlIGVycm9ycworY2FuIGNhdXNlIGEgcGFydGljdWxhciB0cmFuc2FjdGlvbiBvciBhIHBhcnRpY3VsYXIgUENJIEV4cHJlc3MgbGluawordG8gYmUgdW5yZWxpYWJsZS4gRGVwZW5kaW5nIG9uIHRob3NlIGVycm9yIGNvbmRpdGlvbnMsIHVuY29ycmVjdGFibGUKK2Vycm9ycyBhcmUgZnVydGhlciBjbGFzc2lmaWVkIGludG8gbm9uLWZhdGFsIGVycm9ycyBhbmQgZmF0YWwgZXJyb3JzLgorTm9uLWZhdGFsIGVycm9ycyBjYXVzZSB0aGUgcGFydGljdWxhciB0cmFuc2FjdGlvbiB0byBiZSB1bnJlbGlhYmxlLAorYnV0IHRoZSBQQ0kgRXhwcmVzcyBsaW5rIGl0c2VsZiBpcyBmdWxseSBmdW5jdGlvbmFsLiBGYXRhbCBlcnJvcnMsIG9uCit0aGUgb3RoZXIgaGFuZCwgY2F1c2UgdGhlIGxpbmsgdG8gYmUgdW5yZWxpYWJsZS4KKworV2hlbiBBRVIgaXMgZW5hYmxlZCwgYSBQQ0kgRXhwcmVzcyBkZXZpY2Ugd2lsbCBhdXRvbWF0aWNhbGx5IHNlbmQgYW4KK2Vycm9yIG1lc3NhZ2UgdG8gdGhlIFBDSWUgcm9vdCBwb3J0IGFib3ZlIGl0IHdoZW4gdGhlIGRldmljZSBjYXB0dXJlcworYW4gZXJyb3IuIFRoZSBSb290IFBvcnQsIHVwb24gcmVjZWl2aW5nIGFuIGVycm9yIHJlcG9ydGluZyBtZXNzYWdlLAoraW50ZXJuYWxseSBwcm9jZXNzZXMgYW5kIGxvZ3MgdGhlIGVycm9yIG1lc3NhZ2UgaW4gaXRzIFBDSSBFeHByZXNzCitjYXBhYmlsaXR5IHN0cnVjdHVyZS4gRXJyb3IgaW5mb3JtYXRpb24gYmVpbmcgbG9nZ2VkIGluY2x1ZGVzIHN0b3JpbmcKK3RoZSBlcnJvciByZXBvcnRpbmcgYWdlbnQncyByZXF1ZXN0b3IgSUQgaW50byB0aGUgRXJyb3IgU291cmNlCitJZGVudGlmaWNhdGlvbiBSZWdpc3RlcnMgYW5kIHNldHRpbmcgdGhlIGVycm9yIGJpdHMgb2YgdGhlIFJvb3QgRXJyb3IKK1N0YXR1cyBSZWdpc3RlciBhY2NvcmRpbmdseS4gSWYgQUVSIGVycm9yIHJlcG9ydGluZyBpcyBlbmFibGVkIGluIFJvb3QKK0Vycm9yIENvbW1hbmQgUmVnaXN0ZXIsIHRoZSBSb290IFBvcnQgZ2VuZXJhdGVzIGFuIGludGVycnVwdCBpZiBhbgorZXJyb3IgaXMgZGV0ZWN0ZWQuCisKK05vdGUgdGhhdCB0aGUgZXJyb3JzIGFzIGRlc2NyaWJlZCBhYm92ZSBhcmUgcmVsYXRlZCB0byB0aGUgUENJIEV4cHJlc3MKK2hpZXJhcmNoeSBhbmQgbGlua3MuIFRoZXNlIGVycm9ycyBkbyBub3QgaW5jbHVkZSBhbnkgZGV2aWNlIHNwZWNpZmljCitlcnJvcnMgYmVjYXVzZSBkZXZpY2Ugc3BlY2lmaWMgZXJyb3JzIHdpbGwgc3RpbGwgZ2V0IHNlbnQgZGlyZWN0bHkgdG8KK3RoZSBkZXZpY2UgZHJpdmVyLgorCiszLjEgQ29uZmlndXJlIHRoZSBBRVIgY2FwYWJpbGl0eSBzdHJ1Y3R1cmUKKworQUVSIGF3YXJlIGRyaXZlcnMgb2YgUENJIEV4cHJlc3MgY29tcG9uZW50IG5lZWQgY2hhbmdlIHRoZSBkZXZpY2UKK2NvbnRyb2wgcmVnaXN0ZXJzIHRvIGVuYWJsZSBBRVIuIFRoZXkgYWxzbyBjb3VsZCBjaGFuZ2UgQUVSIHJlZ2lzdGVycywKK2luY2x1ZGluZyBtYXNrIGFuZCBzZXZlcml0eSByZWdpc3RlcnMuIEhlbHBlciBmdW5jdGlvbgorcGNpX2VuYWJsZV9wY2llX2Vycm9yX3JlcG9ydGluZyBjb3VsZCBiZSB1c2VkIHRvIGVuYWJsZSBBRVIuIFNlZQorc2VjdGlvbiAzLjMuCisKKzMuMi4gUHJvdmlkZSBjYWxsYmFja3MKKworMy4yLjEgY2FsbGJhY2sgcmVzZXRfbGluayB0byByZXNldCBwY2kgZXhwcmVzcyBsaW5rCisKK1RoaXMgY2FsbGJhY2sgaXMgdXNlZCB0byByZXNldCB0aGUgcGNpIGV4cHJlc3MgcGh5c2ljYWwgbGluayB3aGVuIGEKK2ZhdGFsIGVycm9yIGhhcHBlbnMuIFRoZSByb290IHBvcnQgYWVyIHNlcnZpY2UgZHJpdmVyIHByb3ZpZGVzIGEKK2RlZmF1bHQgcmVzZXRfbGluayBmdW5jdGlvbiwgYnV0IGRpZmZlcmVudCB1cHN0cmVhbSBwb3J0cyBtaWdodAoraGF2ZSBkaWZmZXJlbnQgc3BlY2lmaWNhdGlvbnMgdG8gcmVzZXQgcGNpIGV4cHJlc3MgbGluaywgc28gYWxsCit1cHN0cmVhbSBwb3J0cyBzaG91bGQgcHJvdmlkZSB0aGVpciBvd24gcmVzZXRfbGluayBmdW5jdGlvbnMuCisKK0luIHN0cnVjdCBwY2llX3BvcnRfc2VydmljZV9kcml2ZXIsIGEgbmV3IHBvaW50ZXIsIHJlc2V0X2xpbmssIGlzCithZGRlZC4KKworcGNpX2Vyc19yZXN1bHRfdCAoKnJlc2V0X2xpbmspIChzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKKworU2VjdGlvbiAzLjIuMi4yIHByb3ZpZGVzIG1vcmUgZGV0YWlsZWQgaW5mbyBvbiB3aGVuIHRvIGNhbGwKK3Jlc2V0X2xpbmsuCisKKzMuMi4yIFBDSSBlcnJvci1yZWNvdmVyeSBjYWxsYmFja3MKKworVGhlIFBDSSBFeHByZXNzIEFFUiBSb290IGRyaXZlciB1c2VzIGVycm9yIGNhbGxiYWNrcyB0byBjb29yZGluYXRlCit3aXRoIGRvd25zdHJlYW0gZGV2aWNlIGRyaXZlcnMgYXNzb2NpYXRlZCB3aXRoIGEgaGllcmFyY2h5IGluIHF1ZXN0aW9uCit3aGVuIHBlcmZvcm1pbmcgZXJyb3IgcmVjb3ZlcnkgYWN0aW9ucy4KKworRGF0YSBzdHJ1Y3QgcGNpX2RyaXZlciBoYXMgYSBwb2ludGVyLCBlcnJfaGFuZGxlciwgdG8gcG9pbnQgdG8KK3BjaV9lcnJvcl9oYW5kbGVycyB3aG8gY29uc2lzdHMgb2YgYSBjb3VwbGUgb2YgY2FsbGJhY2sgZnVuY3Rpb24KK3BvaW50ZXJzLiBBRVIgZHJpdmVyIGZvbGxvd3MgdGhlIHJ1bGVzIGRlZmluZWQgaW4KK3BjaS1lcnJvci1yZWNvdmVyeS50eHQgZXhjZXB0IHBjaSBleHByZXNzIHNwZWNpZmljIHBhcnRzIChlLmcuCityZXNldF9saW5rKS4gUGxzLiByZWZlciB0byBwY2ktZXJyb3ItcmVjb3ZlcnkudHh0IGZvciBkZXRhaWxlZAorZGVmaW5pdGlvbnMgb2YgdGhlIGNhbGxiYWNrcy4KKworQmVsb3cgc2VjdGlvbnMgc3BlY2lmeSB3aGVuIHRvIGNhbGwgdGhlIGVycm9yIGNhbGxiYWNrIGZ1bmN0aW9ucy4KKworMy4yLjIuMSBDb3JyZWN0YWJsZSBlcnJvcnMKKworQ29ycmVjdGFibGUgZXJyb3JzIHBvc2Ugbm8gaW1wYWN0cyBvbiB0aGUgZnVuY3Rpb25hbGl0eSBvZgordGhlIGludGVyZmFjZS4gVGhlIFBDSSBFeHByZXNzIHByb3RvY29sIGNhbiByZWNvdmVyIHdpdGhvdXQgYW55Citzb2Z0d2FyZSBpbnRlcnZlbnRpb24gb3IgYW55IGxvc3Mgb2YgZGF0YS4gVGhlc2UgZXJyb3JzIGRvIG5vdAorcmVxdWlyZSBhbnkgcmVjb3ZlcnkgYWN0aW9ucy4gVGhlIEFFUiBkcml2ZXIgY2xlYXJzIHRoZSBkZXZpY2UncworY29ycmVjdGFibGUgZXJyb3Igc3RhdHVzIHJlZ2lzdGVyIGFjY29yZGluZ2x5IGFuZCBsb2dzIHRoZXNlIGVycm9ycy4KKworMy4yLjIuMiBOb24tY29ycmVjdGFibGUgKG5vbi1mYXRhbCBhbmQgZmF0YWwpIGVycm9ycworCitJZiBhbiBlcnJvciBtZXNzYWdlIGluZGljYXRlcyBhIG5vbi1mYXRhbCBlcnJvciwgcGVyZm9ybWluZyBsaW5rIHJlc2V0CithdCB1cHN0cmVhbSBpcyBub3QgcmVxdWlyZWQuIFRoZSBBRVIgZHJpdmVyIGNhbGxzIGVycm9yX2RldGVjdGVkKGRldiwKK3BjaV9jaGFubmVsX2lvX25vcm1hbCkgdG8gYWxsIGRyaXZlcnMgYXNzb2NpYXRlZCB3aXRoaW4gYSBoaWVyYXJjaHkgaW4KK3F1ZXN0aW9uLiBmb3IgZXhhbXBsZSwKK0VuZFBvaW50PD09PkRvd25zdHJlYW1Qb3J0IEI8PT0+VXBzdHJlYW1Qb3J0IEE8PT0+Um9vdFBvcnQuCitJZiBVcHN0cmVhbSBwb3J0IEEgY2FwdHVyZXMgYW4gQUVSIGVycm9yLCB0aGUgaGllcmFyY2h5IGNvbnNpc3RzIG9mCitEb3duc3RyZWFtIHBvcnQgQiBhbmQgRW5kUG9pbnQuCisKK0EgZHJpdmVyIG1heSByZXR1cm4gUENJX0VSU19SRVNVTFRfQ0FOX1JFQ09WRVIsCitQQ0lfRVJTX1JFU1VMVF9ESVNDT05ORUNULCBvciBQQ0lfRVJTX1JFU1VMVF9ORUVEX1JFU0VULCBkZXBlbmRpbmcgb24KK3doZXRoZXIgaXQgY2FuIHJlY292ZXIgb3IgdGhlIEFFUiBkcml2ZXIgY2FsbHMgbW1pb19lbmFibGVkIGFzIG5leHQuCisKK0lmIGFuIGVycm9yIG1lc3NhZ2UgaW5kaWNhdGVzIGEgZmF0YWwgZXJyb3IsIGtlcm5lbCB3aWxsIGJyb2FkY2FzdAorZXJyb3JfZGV0ZWN0ZWQoZGV2LCBwY2lfY2hhbm5lbF9pb19mcm96ZW4pIHRvIGFsbCBkcml2ZXJzIHdpdGhpbgorYSBoaWVyYXJjaHkgaW4gcXVlc3Rpb24uIFRoZW4sIHBlcmZvcm1pbmcgbGluayByZXNldCBhdCB1cHN0cmVhbSBpcworbmVjZXNzYXJ5LiBBcyBkaWZmZXJlbnQga2luZHMgb2YgZGV2aWNlcyBtaWdodCB1c2UgZGlmZmVyZW50IGFwcHJvYWNoZXMKK3RvIHJlc2V0IGxpbmssIEFFUiBwb3J0IHNlcnZpY2UgZHJpdmVyIGlzIHJlcXVpcmVkIHRvIHByb3ZpZGUgdGhlCitmdW5jdGlvbiB0byByZXNldCBsaW5rLiBGaXJzdGx5LCBrZXJuZWwgbG9va3MgZm9yIGlmIHRoZSB1cHN0cmVhbQorY29tcG9uZW50IGhhcyBhbiBhZXIgZHJpdmVyLiBJZiBpdCBoYXMsIGtlcm5lbCB1c2VzIHRoZSByZXNldF9saW5rCitjYWxsYmFjayBvZiB0aGUgYWVyIGRyaXZlci4gSWYgdGhlIHVwc3RyZWFtIGNvbXBvbmVudCBoYXMgbm8gYWVyIGRyaXZlcgorYW5kIHRoZSBwb3J0IGlzIGRvd25zdHJlYW0gcG9ydCwgd2Ugd2lsbCBwZXJmb3JtIGEgaG90IHJlc2V0IGFzIHRoZQorZGVmYXVsdCBieSBzZXR0aW5nIHRoZSBTZWNvbmRhcnkgQnVzIFJlc2V0IGJpdCBvZiB0aGUgQnJpZGdlIENvbnRyb2wKK3JlZ2lzdGVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgZG93bnN0cmVhbSBwb3J0LiBBcyBmb3IgdXBzdHJlYW0gcG9ydHMsCit0aGV5IHNob3VsZCBwcm92aWRlIHRoZWlyIG93biBhZXIgc2VydmljZSBkcml2ZXJzIHdpdGggcmVzZXRfbGluaworZnVuY3Rpb24uIElmIGVycm9yX2RldGVjdGVkIHJldHVybnMgUENJX0VSU19SRVNVTFRfQ0FOX1JFQ09WRVIgYW5kCityZXNldF9saW5rIHJldHVybnMgUENJX0VSU19SRVNVTFRfUkVDT1ZFUkVELCB0aGUgZXJyb3IgaGFuZGxpbmcgZ29lcwordG8gbW1pb19lbmFibGVkLgorCiszLjMgaGVscGVyIGZ1bmN0aW9ucworCiszLjMuMSBpbnQgcGNpX2VuYWJsZV9wY2llX2Vycm9yX3JlcG9ydGluZyhzdHJ1Y3QgcGNpX2RldiAqZGV2KTsKK3BjaV9lbmFibGVfcGNpZV9lcnJvcl9yZXBvcnRpbmcgZW5hYmxlcyB0aGUgZGV2aWNlIHRvIHNlbmQgZXJyb3IKK21lc3NhZ2VzIHRvIHJvb3QgcG9ydCB3aGVuIGFuIGVycm9yIGlzIGRldGVjdGVkLiBOb3RlIHRoYXQgZGV2aWNlcworZG9uJ3QgZW5hYmxlIHRoZSBlcnJvciByZXBvcnRpbmcgYnkgZGVmYXVsdCwgc28gZGV2aWNlIGRyaXZlcnMgbmVlZAorY2FsbCB0aGlzIGZ1bmN0aW9uIHRvIGVuYWJsZSBpdC4KKworMy4zLjIgaW50IHBjaV9kaXNhYmxlX3BjaWVfZXJyb3JfcmVwb3J0aW5nKHN0cnVjdCBwY2lfZGV2ICpkZXYpOworcGNpX2Rpc2FibGVfcGNpZV9lcnJvcl9yZXBvcnRpbmcgZGlzYWJsZXMgdGhlIGRldmljZSB0byBzZW5kIGVycm9yCittZXNzYWdlcyB0byByb290IHBvcnQgd2hlbiBhbiBlcnJvciBpcyBkZXRlY3RlZC4KKworMy4zLjMgaW50IHBjaV9jbGVhbnVwX2Flcl91bmNvcnJlY3RfZXJyb3Jfc3RhdHVzKHN0cnVjdCBwY2lfZGV2ICpkZXYpOworcGNpX2NsZWFudXBfYWVyX3VuY29ycmVjdF9lcnJvcl9zdGF0dXMgY2xlYW51cHMgdGhlIHVuY29ycmVjdGFibGUKK2Vycm9yIHN0YXR1cyByZWdpc3Rlci4KKworMy40IEZyZXF1ZW50IEFza2VkIFF1ZXN0aW9ucworCitROiBXaGF0IGhhcHBlbnMgaWYgYSBQQ0kgRXhwcmVzcyBkZXZpY2UgZHJpdmVyIGRvZXMgbm90IHByb3ZpZGUgYW4KK2Vycm9yIHJlY292ZXJ5IGhhbmRsZXIgKHBjaV9kcml2ZXItPmVycl9oYW5kbGVyIGlzIGVxdWFsIHRvIE5VTEwpPworCitBOiBUaGUgZGV2aWNlcyBhdHRhY2hlZCB3aXRoIHRoZSBkcml2ZXIgd29uJ3QgYmUgcmVjb3ZlcmVkLiBJZiB0aGUKK2Vycm9yIGlzIGZhdGFsLCBrZXJuZWwgd2lsbCBwcmludCBvdXQgd2FybmluZyBtZXNzYWdlcy4gUGxlYXNlIHJlZmVyCit0byBzZWN0aW9uIDMgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKK1E6IFdoYXQgaGFwcGVucyBpZiBhbiB1cHN0cmVhbSBwb3J0IHNlcnZpY2UgZHJpdmVyIGRvZXMgbm90IHByb3ZpZGUKK2NhbGxiYWNrIHJlc2V0X2xpbms/CisKK0E6IEZhdGFsIGVycm9yIHJlY292ZXJ5IHdpbGwgZmFpbCBpZiB0aGUgZXJyb3JzIGFyZSByZXBvcnRlZCBieSB0aGUKK3Vwc3RyZWFtIHBvcnRzIHdobyBhcmUgYXR0YWNoZWQgYnkgdGhlIHNlcnZpY2UgZHJpdmVyLgorCitROiBIb3cgZG9lcyB0aGlzIGluZnJhc3RydWN0dXJlIGRlYWwgd2l0aCBkcml2ZXIgdGhhdCBpcyBub3QgUENJCitFeHByZXNzIGF3YXJlPworCitBOiBUaGlzIGluZnJhc3RydWN0dXJlIGNhbGxzIHRoZSBlcnJvciBjYWxsYmFjayBmdW5jdGlvbnMgb2YgdGhlCitkcml2ZXIgd2hlbiBhbiBlcnJvciBoYXBwZW5zLiBCdXQgaWYgdGhlIGRyaXZlciBpcyBub3QgYXdhcmUgb2YKK1BDSSBFeHByZXNzLCB0aGUgZGV2aWNlIG1pZ2h0IG5vdCByZXBvcnQgaXRzIG93biBlcnJvcnMgdG8gcm9vdAorcG9ydC4KKworUTogV2hhdCBtb2RpZmljYXRpb25zIHdpbGwgdGhhdCBkcml2ZXIgbmVlZCB0byBtYWtlIGl0IGNvbXBhdGlibGUKK3dpdGggdGhlIFBDSSBFeHByZXNzIEFFUiBSb290IGRyaXZlcj8KKworQTogSXQgY291bGQgY2FsbCB0aGUgaGVscGVyIGZ1bmN0aW9ucyB0byBlbmFibGUgQUVSIGluIGRldmljZXMgYW5kCitjbGVhbnVwIHVuY29ycmVjdGFibGUgc3RhdHVzIHJlZ2lzdGVyLiBQbHMuIHJlZmVyIHRvIHNlY3Rpb24gMy4zLgorCisKKzQuIFNvZnR3YXJlIGVycm9yIGluamVjdGlvbgorCitEZWJ1Z2dpbmcgUENJZSBBRVIgZXJyb3IgcmVjb3ZlcnkgY29kZSBpcyBxdWl0ZSBkaWZmaWN1bHQgYmVjYXVzZSBpdAoraXMgaGFyZCB0byB0cmlnZ2VyIHJlYWwgaGFyZHdhcmUgZXJyb3JzLiBTb2Z0d2FyZSBiYXNlZCBlcnJvcgoraW5qZWN0aW9uIGNhbiBiZSB1c2VkIHRvIGZha2UgdmFyaW91cyBraW5kcyBvZiBQQ0llIGVycm9ycy4KKworRmlyc3QgeW91IHNob3VsZCBlbmFibGUgUENJZSBBRVIgc29mdHdhcmUgZXJyb3IgaW5qZWN0aW9uIGluIGtlcm5lbAorY29uZmlndXJhdGlvbiwgdGhhdCBpcywgZm9sbG93aW5nIGl0ZW0gc2hvdWxkIGJlIGluIHlvdXIgLmNvbmZpZy4KKworQ09ORklHX1BDSUVBRVJfSU5KRUNUPXkgb3IgQ09ORklHX1BDSUVBRVJfSU5KRUNUPW0KKworQWZ0ZXIgcmVib290IHdpdGggbmV3IGtlcm5lbCBvciBpbnNlcnQgdGhlIG1vZHVsZSwgYSBkZXZpY2UgZmlsZSBuYW1lZAorL2Rldi9hZXJfaW5qZWN0IHNob3VsZCBiZSBjcmVhdGVkLgorCitUaGVuLCB5b3UgbmVlZCBhIHVzZXIgc3BhY2UgdG9vbCBuYW1lZCBhZXItaW5qZWN0LCB3aGljaCBjYW4gYmUgZ290dGVuCitmcm9tOgorICAgIGh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMvcGNpL2Flci1pbmplY3QvCisKK01vcmUgaW5mb3JtYXRpb24gYWJvdXQgYWVyLWluamVjdCBjYW4gYmUgZm91bmQgaW4gdGhlIGRvY3VtZW50IGNvbWVzCit3aXRoIGl0cyBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUkNVLzAwLUlOREVYIGIvRG9jdW1lbnRhdGlvbi9SQ1UvMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc3M2EyNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUkNVLzAwLUlOREVYCkBAIC0wLDAgKzEsMzYgQEAKKzAwLUlOREVYCisJLSBUaGlzIGZpbGUKK2FycmF5UkNVLnR4dAorCS0gVXNpbmcgUkNVIHRvIFByb3RlY3QgUmVhZC1Nb3N0bHkgQXJyYXlzCitjaGVja2xpc3QudHh0CisJLSBSZXZpZXcgQ2hlY2tsaXN0IGZvciBSQ1UgUGF0Y2hlcworbGlzdFJDVS50eHQKKwktIFVzaW5nIFJDVSB0byBQcm90ZWN0IFJlYWQtTW9zdGx5IExpbmtlZCBMaXN0cworbG9ja2RlcC50eHQKKwktIFJDVSBhbmQgbG9ja2RlcCBjaGVja2luZworbG9ja2RlcC1zcGxhdC50eHQKKwktIFJDVSBMb2NrZGVwIHNwbGF0cyBleHBsYWluZWQuCitOTUktUkNVLnR4dAorCS0gVXNpbmcgUkNVIHRvIFByb3RlY3QgRHluYW1pYyBOTUkgSGFuZGxlcnMKK3JjdV9kZXJlZmVyZW5jZS50eHQKKwktIFByb3BlciBjYXJlIGFuZCBmZWVkaW5nIG9mIHJldHVybiB2YWx1ZXMgZnJvbSByY3VfZGVyZWZlcmVuY2UoKQorcmN1YmFycmllci50eHQKKwktIFJDVSBhbmQgVW5sb2FkYWJsZSBNb2R1bGVzCityY3VsaXN0X251bGxzLnR4dAorCS0gUkNVIGxpc3QgcHJpbWl0aXZlcyBmb3IgdXNlIHdpdGggU0xBQl9ERVNUUk9ZX0JZX1JDVQorcmN1cmVmLnR4dAorCS0gUmVmZXJlbmNlLWNvdW50IGRlc2lnbiBmb3IgZWxlbWVudHMgb2YgbGlzdHMvYXJyYXlzIHByb3RlY3RlZCBieSBSQ1UKK3JjdS50eHQKKwktIFJDVSBDb25jZXB0cworUlRGUC50eHQKKwktIExpc3Qgb2YgUkNVIHBhcGVycyAoYmlibGlvZ3JhcGh5KSBnb2luZyBiYWNrIHRvIDE5ODAuCitzdGFsbHdhcm4udHh0CisJLSBSQ1UgQ1BVIHN0YWxsIHdhcm5pbmdzIChtb2R1bGUgcGFyYW1ldGVyIHJjdV9jcHVfc3RhbGxfc3VwcHJlc3MpCit0b3J0dXJlLnR4dAorCS0gUkNVIFRvcnR1cmUgVGVzdCBPcGVyYXRpb24gKENPTkZJR19SQ1VfVE9SVFVSRV9URVNUKQordHJhY2UudHh0CisJLSBDT05GSUdfUkNVX1RSQUNFIGRlYnVnZnMgZmlsZXMgYW5kIGZvcm1hdHMKK1VQLnR4dAorCS0gUkNVIG9uIFVuaXByb2Nlc3NvciBTeXN0ZW1zCit3aGF0aXNSQ1UudHh0CisJLSBXaGF0IGlzIFJDVT8KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUkNVL05NSS1SQ1UudHh0IGIvRG9jdW1lbnRhdGlvbi9SQ1UvTk1JLVJDVS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg3Nzc3ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUkNVL05NSS1SQ1UudHh0CkBAIC0wLDAgKzEsMTIwIEBACitVc2luZyBSQ1UgdG8gUHJvdGVjdCBEeW5hbWljIE5NSSBIYW5kbGVycworCisKK0FsdGhvdWdoIFJDVSBpcyB1c3VhbGx5IHVzZWQgdG8gcHJvdGVjdCByZWFkLW1vc3RseSBkYXRhIHN0cnVjdHVyZXMsCitpdCBpcyBwb3NzaWJsZSB0byB1c2UgUkNVIHRvIHByb3ZpZGUgZHluYW1pYyBub24tbWFza2FibGUgaW50ZXJydXB0CitoYW5kbGVycywgYXMgd2VsbCBhcyBkeW5hbWljIGlycSBoYW5kbGVycy4gIFRoaXMgZG9jdW1lbnQgZGVzY3JpYmVzCitob3cgdG8gZG8gdGhpcywgZHJhd2luZyBsb29zZWx5IGZyb20gWndhbmUgTXdhaWthbWJvJ3MgTk1JLXRpbWVyCit3b3JrIGluICJhcmNoL3g4Ni9vcHJvZmlsZS9ubWlfdGltZXJfaW50LmMiIGFuZCBpbgorImFyY2gveDg2L2tlcm5lbC90cmFwcy5jIi4KKworVGhlIHJlbGV2YW50IHBpZWNlcyBvZiBjb2RlIGFyZSBsaXN0ZWQgYmVsb3csIGVhY2ggZm9sbG93ZWQgYnkgYQorYnJpZWYgZXhwbGFuYXRpb24uCisKKwlzdGF0aWMgaW50IGR1bW15X25taV9jYWxsYmFjayhzdHJ1Y3QgcHRfcmVncyAqcmVncywgaW50IGNwdSkKKwl7CisJCXJldHVybiAwOworCX0KKworVGhlIGR1bW15X25taV9jYWxsYmFjaygpIGZ1bmN0aW9uIGlzIGEgImR1bW15IiBOTUkgaGFuZGxlciB0aGF0IGRvZXMKK25vdGhpbmcsIGJ1dCByZXR1cm5zIHplcm8sIHRodXMgc2F5aW5nIHRoYXQgaXQgZGlkIG5vdGhpbmcsIGFsbG93aW5nCit0aGUgTk1JIGhhbmRsZXIgdG8gdGFrZSB0aGUgZGVmYXVsdCBtYWNoaW5lLXNwZWNpZmljIGFjdGlvbi4KKworCXN0YXRpYyBubWlfY2FsbGJhY2tfdCBubWlfY2FsbGJhY2sgPSBkdW1teV9ubWlfY2FsbGJhY2s7CisKK1RoaXMgbm1pX2NhbGxiYWNrIHZhcmlhYmxlIGlzIGEgZ2xvYmFsIGZ1bmN0aW9uIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQKK05NSSBoYW5kbGVyLgorCisJdm9pZCBkb19ubWkoc3RydWN0IHB0X3JlZ3MgKiByZWdzLCBsb25nIGVycm9yX2NvZGUpCisJeworCQlpbnQgY3B1OworCisJCW5taV9lbnRlcigpOworCisJCWNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKKwkJKytubWlfY291bnQoY3B1KTsKKworCQlpZiAoIXJjdV9kZXJlZmVyZW5jZV9zY2hlZChubWlfY2FsbGJhY2spKHJlZ3MsIGNwdSkpCisJCQlkZWZhdWx0X2RvX25taShyZWdzKTsKKworCQlubWlfZXhpdCgpOworCX0KKworVGhlIGRvX25taSgpIGZ1bmN0aW9uIHByb2Nlc3NlcyBlYWNoIE5NSS4gIEl0IGZpcnN0IGRpc2FibGVzIHByZWVtcHRpb24KK2luIHRoZSBzYW1lIHdheSB0aGF0IGEgaGFyZHdhcmUgaXJxIHdvdWxkLCB0aGVuIGluY3JlbWVudHMgdGhlIHBlci1DUFUKK2NvdW50IG9mIE5NSXMuICBJdCB0aGVuIGludm9rZXMgdGhlIE5NSSBoYW5kbGVyIHN0b3JlZCBpbiB0aGUgbm1pX2NhbGxiYWNrCitmdW5jdGlvbiBwb2ludGVyLiAgSWYgdGhpcyBoYW5kbGVyIHJldHVybnMgemVybywgZG9fbm1pKCkgaW52b2tlcyB0aGUKK2RlZmF1bHRfZG9fbm1pKCkgZnVuY3Rpb24gdG8gaGFuZGxlIGEgbWFjaGluZS1zcGVjaWZpYyBOTUkuICBGaW5hbGx5LAorcHJlZW1wdGlvbiBpcyByZXN0b3JlZC4KKworSW4gdGhlb3J5LCByY3VfZGVyZWZlcmVuY2Vfc2NoZWQoKSBpcyBub3QgbmVlZGVkLCBzaW5jZSB0aGlzIGNvZGUgcnVucworb25seSBvbiBpMzg2LCB3aGljaCBpbiB0aGVvcnkgZG9lcyBub3QgbmVlZCByY3VfZGVyZWZlcmVuY2Vfc2NoZWQoKQorYW55d2F5LiAgSG93ZXZlciwgaW4gcHJhY3RpY2UgaXQgaXMgYSBnb29kIGRvY3VtZW50YXRpb24gYWlkLCBwYXJ0aWN1bGFybHkKK2ZvciBhbnlvbmUgYXR0ZW1wdGluZyB0byBkbyBzb21ldGhpbmcgc2ltaWxhciBvbiBBbHBoYSBvciBvbiBzeXN0ZW1zCit3aXRoIGFnZ3Jlc3NpdmUgb3B0aW1pemluZyBjb21waWxlcnMuCisKK1F1aWNrIFF1aXo6ICBXaHkgbWlnaHQgdGhlIHJjdV9kZXJlZmVyZW5jZV9zY2hlZCgpIGJlIG5lY2Vzc2FyeSBvbiBBbHBoYSwKKwkgICAgIGdpdmVuIHRoYXQgdGhlIGNvZGUgcmVmZXJlbmNlZCBieSB0aGUgcG9pbnRlciBpcyByZWFkLW9ubHk/CisKKworQmFjayB0byB0aGUgZGlzY3Vzc2lvbiBvZiBOTUkgYW5kIFJDVS4uLgorCisJdm9pZCBzZXRfbm1pX2NhbGxiYWNrKG5taV9jYWxsYmFja190IGNhbGxiYWNrKQorCXsKKwkJcmN1X2Fzc2lnbl9wb2ludGVyKG5taV9jYWxsYmFjaywgY2FsbGJhY2spOworCX0KKworVGhlIHNldF9ubWlfY2FsbGJhY2soKSBmdW5jdGlvbiByZWdpc3RlcnMgYW4gTk1JIGhhbmRsZXIuICBOb3RlIHRoYXQgYW55CitkYXRhIHRoYXQgaXMgdG8gYmUgdXNlZCBieSB0aGUgY2FsbGJhY2sgbXVzdCBiZSBpbml0aWFsaXplZCB1cCAtYmVmb3JlLQordGhlIGNhbGwgdG8gc2V0X25taV9jYWxsYmFjaygpLiAgT24gYXJjaGl0ZWN0dXJlcyB0aGF0IGRvIG5vdCBvcmRlcgord3JpdGVzLCB0aGUgcmN1X2Fzc2lnbl9wb2ludGVyKCkgZW5zdXJlcyB0aGF0IHRoZSBOTUkgaGFuZGxlciBzZWVzIHRoZQoraW5pdGlhbGl6ZWQgdmFsdWVzLgorCisJdm9pZCB1bnNldF9ubWlfY2FsbGJhY2sodm9pZCkKKwl7CisJCXJjdV9hc3NpZ25fcG9pbnRlcihubWlfY2FsbGJhY2ssIGR1bW15X25taV9jYWxsYmFjayk7CisJfQorCitUaGlzIGZ1bmN0aW9uIHVucmVnaXN0ZXJzIGFuIE5NSSBoYW5kbGVyLCByZXN0b3JpbmcgdGhlIG9yaWdpbmFsCitkdW1teV9ubWlfaGFuZGxlcigpLiAgSG93ZXZlciwgdGhlcmUgbWF5IHdlbGwgYmUgYW4gTk1JIGhhbmRsZXIKK2N1cnJlbnRseSBleGVjdXRpbmcgb24gc29tZSBvdGhlciBDUFUuICBXZSB0aGVyZWZvcmUgY2Fubm90IGZyZWUKK3VwIGFueSBkYXRhIHN0cnVjdHVyZXMgdXNlZCBieSB0aGUgb2xkIE5NSSBoYW5kbGVyIHVudGlsIGV4ZWN1dGlvbgorb2YgaXQgY29tcGxldGVzIG9uIGFsbCBvdGhlciBDUFVzLgorCitPbmUgd2F5IHRvIGFjY29tcGxpc2ggdGhpcyBpcyB2aWEgc3luY2hyb25pemVfc2NoZWQoKSwgcGVyaGFwcyBhcworZm9sbG93czoKKworCXVuc2V0X25taV9jYWxsYmFjaygpOworCXN5bmNocm9uaXplX3NjaGVkKCk7CisJa2ZyZWUobXlfbm1pX2RhdGEpOworCitUaGlzIHdvcmtzIGJlY2F1c2Ugc3luY2hyb25pemVfc2NoZWQoKSBibG9ja3MgdW50aWwgYWxsIENQVXMgY29tcGxldGUKK2FueSBwcmVlbXB0aW9uLWRpc2FibGVkIHNlZ21lbnRzIG9mIGNvZGUgdGhhdCB0aGV5IHdlcmUgZXhlY3V0aW5nLgorU2luY2UgTk1JIGhhbmRsZXJzIGRpc2FibGUgcHJlZW1wdGlvbiwgc3luY2hyb25pemVfc2NoZWQoKSBpcyBndWFyYW50ZWVkCitub3QgdG8gcmV0dXJuIHVudGlsIGFsbCBvbmdvaW5nIE5NSSBoYW5kbGVycyBleGl0LiAgSXQgaXMgdGhlcmVmb3JlIHNhZmUKK3RvIGZyZWUgdXAgdGhlIGhhbmRsZXIncyBkYXRhIGFzIHNvb24gYXMgc3luY2hyb25pemVfc2NoZWQoKSByZXR1cm5zLgorCitJbXBvcnRhbnQgbm90ZTogZm9yIHRoaXMgdG8gd29yaywgdGhlIGFyY2hpdGVjdHVyZSBpbiBxdWVzdGlvbiBtdXN0CitpbnZva2Ugbm1pX2VudGVyKCkgYW5kIG5taV9leGl0KCkgb24gTk1JIGVudHJ5IGFuZCBleGl0LCByZXNwZWN0aXZlbHkuCisKKworQW5zd2VyIHRvIFF1aWNrIFF1aXoKKworCVdoeSBtaWdodCB0aGUgcmN1X2RlcmVmZXJlbmNlX3NjaGVkKCkgYmUgbmVjZXNzYXJ5IG9uIEFscGhhLCBnaXZlbgorCXRoYXQgdGhlIGNvZGUgcmVmZXJlbmNlZCBieSB0aGUgcG9pbnRlciBpcyByZWFkLW9ubHk/CisKKwlBbnN3ZXI6IFRoZSBjYWxsZXIgdG8gc2V0X25taV9jYWxsYmFjaygpIG1pZ2h0IHdlbGwgaGF2ZQorCQlpbml0aWFsaXplZCBzb21lIGRhdGEgdGhhdCBpcyB0byBiZSB1c2VkIGJ5IHRoZSBuZXcgTk1JCisJCWhhbmRsZXIuICBJbiB0aGlzIGNhc2UsIHRoZSByY3VfZGVyZWZlcmVuY2Vfc2NoZWQoKSB3b3VsZAorCQliZSBuZWVkZWQsIGJlY2F1c2Ugb3RoZXJ3aXNlIGEgQ1BVIHRoYXQgcmVjZWl2ZWQgYW4gTk1JCisJCWp1c3QgYWZ0ZXIgdGhlIG5ldyBoYW5kbGVyIHdhcyBzZXQgbWlnaHQgc2VlIHRoZSBwb2ludGVyCisJCXRvIHRoZSBuZXcgTk1JIGhhbmRsZXIsIGJ1dCB0aGUgb2xkIHByZS1pbml0aWFsaXplZAorCQl2ZXJzaW9uIG9mIHRoZSBoYW5kbGVyJ3MgZGF0YS4KKworCQlUaGlzIHNhbWUgc2FkIHN0b3J5IGNhbiBoYXBwZW4gb24gb3RoZXIgQ1BVcyB3aGVuIHVzaW5nCisJCWEgY29tcGlsZXIgd2l0aCBhZ2dyZXNzaXZlIHBvaW50ZXItdmFsdWUgc3BlY3VsYXRpb24KKwkJb3B0aW1pemF0aW9ucy4KKworCQlNb3JlIGltcG9ydGFudCwgdGhlIHJjdV9kZXJlZmVyZW5jZV9zY2hlZCgpIG1ha2VzIGl0CisJCWNsZWFyIHRvIHNvbWVvbmUgcmVhZGluZyB0aGUgY29kZSB0aGF0IHRoZSBwb2ludGVyIGlzCisJCWJlaW5nIHByb3RlY3RlZCBieSBSQ1Utc2NoZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JDVS9SVEZQLnR4dCBiL0RvY3VtZW50YXRpb24vUkNVL1JURlAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3MGNhMDAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1JDVS9SVEZQLnR4dApAQCAtMCwwICsxLDI4MTIgQEAKK1JlYWQgdGhlIEZzY2tpbmcgUGFwZXJzIQorCisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIFJDVS1yZWxhdGVkIHB1YmxpY2F0aW9ucywgYW5kIGlzIGZvbGxvd2VkIGJ5Cit0aGUgY29ycmVzcG9uZGluZyBiaWJ0ZXggZW50cmllcy4gIEEgbnVtYmVyIG9mIHRoZSBwdWJsaWNhdGlvbnMgbWF5CitiZSBmb3VuZCBhdCBodHRwOi8vd3d3LnJkcm9wLmNvbS91c2Vycy9wYXVsbWNrL1JDVS8uICBGb3Igb3RoZXJzLCBicm93c2VycworYW5kIHNlYXJjaCBlbmdpbmVzIHdpbGwgdXN1YWxseSBmaW5kIHdoYXQgeW91IGFyZSBsb29raW5nIGZvci4KKworVGhlIGZpcnN0IHRoaW5nIHJlc2VtYmxpbmcgUkNVIHdhcyBwdWJsaXNoZWQgaW4gMTk4MCwgd2hlbiBLdW5nIGFuZCBMZWhtYW4KK1tLdW5nODBdIHJlY29tbWVuZGVkIHVzZSBvZiBhIGdhcmJhZ2UgY29sbGVjdG9yIHRvIGRlZmVyIGRlc3RydWN0aW9uCitvZiBub2RlcyBpbiBhIHBhcmFsbGVsIGJpbmFyeSBzZWFyY2ggdHJlZSBpbiBvcmRlciB0byBzaW1wbGlmeSBpdHMKK2ltcGxlbWVudGF0aW9uLiAgVGhpcyB3b3JrcyB3ZWxsIGluIGVudmlyb25tZW50cyB0aGF0IGhhdmUgZ2FyYmFnZQorY29sbGVjdG9ycywgYnV0IG1vc3QgcHJvZHVjdGlvbiBnYXJiYWdlIGNvbGxlY3RvcnMgaW5jdXIgc2lnbmlmaWNhbnQKK292ZXJoZWFkLgorCitJbiAxOTgyLCBNYW5iZXIgYW5kIExhZG5lciBbTWFuYmVyODIsTWFuYmVyODRdIHJlY29tbWVuZGVkIGRlZmVycmluZworZGVzdHJ1Y3Rpb24gdW50aWwgYWxsIHRocmVhZHMgcnVubmluZyBhdCB0aGF0IHRpbWUgaGF2ZSB0ZXJtaW5hdGVkLCBhZ2FpbgorZm9yIGEgcGFyYWxsZWwgYmluYXJ5IHNlYXJjaCB0cmVlLiAgVGhpcyBhcHByb2FjaCB3b3JrcyB3ZWxsIGluIHN5c3RlbXMKK3dpdGggc2hvcnQtbGl2ZWQgdGhyZWFkcywgc3VjaCBhcyB0aGUgSzQyIHJlc2VhcmNoIG9wZXJhdGluZyBzeXN0ZW0uCitIb3dldmVyLCBMaW51eCBoYXMgbG9uZy1saXZlZCB0YXNrcywgc28gbW9yZSBpcyBuZWVkZWQuCisKK0luIDE5ODYsIEhlbm5lc3N5LCBPc2lzZWssIGFuZCBTZWlnaCBbSGVubmVzc3k4OV0gaW50cm9kdWNlZCBwYXNzaXZlCitzZXJpYWxpemF0aW9uLCB3aGljaCBpcyBhbiBSQ1UtbGlrZSBtZWNoYW5pc20gdGhhdCByZWxpZXMgb24gdGhlIHByZXNlbmNlCitvZiAicXVpZXNjZW50IHN0YXRlcyIgaW4gdGhlIFZNL1hBIGh5cGVydmlzb3IgdGhhdCBhcmUgZ3VhcmFudGVlZCBub3QKK3RvIGJlIHJlZmVyZW5jaW5nIHRoZSBkYXRhIHN0cnVjdHVyZS4gIEhvd2V2ZXIsIHRoaXMgbWVjaGFuaXNtIHdhcyBub3QKK29wdGltaXplZCBmb3IgbW9kZXJuIGNvbXB1dGVyIHN5c3RlbXMsIHdoaWNoIGlzIG5vdCBzdXJwcmlzaW5nIGdpdmVuCit0aGF0IHRoZXNlIG92ZXJoZWFkcyB3ZXJlIG5vdCBzbyBleHBlbnNpdmUgaW4gdGhlIG1pZC04MHMuICBOb25ldGhlbGVzcywKK3Bhc3NpdmUgc2VyaWFsaXphdGlvbiBhcHBlYXJzIHRvIGJlIHRoZSBmaXJzdCBkZWZlcnJlZC1kZXN0cnVjdGlvbgorbWVjaGFuaXNtIHRvIGJlIHVzZWQgaW4gcHJvZHVjdGlvbi4gIEZ1cnRoZXJtb3JlLCB0aGUgcmVsZXZhbnQgcGF0ZW50CitoYXMgbGFwc2VkLCBzbyB0aGlzIGFwcHJvYWNoIG1heSBiZSB1c2VkIGluIG5vbi1HUEwgc29mdHdhcmUsIGlmIGRlc2lyZWQuCisoSW4gY29udHJhc3QsIGltcGxlbWVudGF0aW9uIG9mIFJDVSBpcyBwZXJtaXR0ZWQgb25seSBpbiBzb2Z0d2FyZSBsaWNlbnNlZAordW5kZXIgZWl0aGVyIEdQTCBvciBMR1BMLiAgU29ycnkhISEpCisKK0luIDE5ODcsIFJhc2hpZCBldCBhbC4gZGVzY3JpYmVkIGxhenkgVExCLWZsdXNoIFtSaWNoYXJkUmFzaGlkODdhXS4KK0F0IGZpcnN0IGdsYW5jZSwgdGhpcyBoYXMgbm90aGluZyB0byBkbyB3aXRoIFJDVSwgYnV0IG5ldmVydGhlbGVzcwordGhpcyBwYXBlciBoZWxwZWQgaW5zcGlyZSB0aGUgdXBkYXRlLXNpZGUgYmF0Y2hpbmcgdXNlZCBpbiB0aGUgbGF0ZXIKK1JDVSBpbXBsZW1lbnRhdGlvbiBpbiBEWU5JWC9wdHguICBJbiAxOTg4LCBCYXJiYXJhIExpc2tvdiBwdWJsaXNoZWQKK2EgZGVzY3JpcHRpb24gb2YgQXJndXMgdGhhdCBub3RlZCB0aGF0IHVzZSBvZiBvdXQtb2YtZGF0ZSB2YWx1ZXMgY2FuCitiZSB0b2xlcmF0ZWQgaW4gc29tZSBzaXR1YXRpb25zLiAgVGh1cywgdGhpcyBwYXBlciBwcm92aWRlcyBzb21lIGVhcmx5Cit0aGVvcmV0aWNhbCBqdXN0aWZpY2F0aW9uIGZvciB1c2Ugb2Ygc3RhbGUgZGF0YS4KKworSW4gMTk5MCwgUHVnaCBbUHVnaDkwXSBub3RlZCB0aGF0IGV4cGxpY2l0bHkgdHJhY2tpbmcgd2hpY2ggdGhyZWFkcword2VyZSByZWFkaW5nIGEgZ2l2ZW4gZGF0YSBzdHJ1Y3R1cmUgcGVybWl0dGVkIGRlZmVycmVkIGZyZWUgdG8gb3BlcmF0ZQoraW4gdGhlIHByZXNlbmNlIG9mIG5vbi10ZXJtaW5hdGluZyB0aHJlYWRzLiAgSG93ZXZlciwgdGhpcyBleHBsaWNpdAordHJhY2tpbmcgaW1wb3NlcyBzaWduaWZpY2FudCByZWFkLXNpZGUgb3ZlcmhlYWQsIHdoaWNoIGlzIHVuZGVzaXJhYmxlCitpbiByZWFkLW1vc3RseSBzaXR1YXRpb25zLiAgVGhpcyBhbGdvcml0aG0gZG9lcyB0YWtlIHBhaW5zIHRvIGF2b2lkCit3cml0ZS1zaWRlIGNvbnRlbnRpb24gYW5kIHBhcmFsbGVsaXplIHRoZSBvdGhlciB3cml0ZS1zaWRlIG92ZXJoZWFkcyBieQorcHJvdmlkaW5nIGEgZmluZS1ncmFpbmVkIGxvY2tpbmcgZGVzaWduLCBob3dldmVyLCBpdCB3b3VsZCBiZSBpbnRlcmVzdGluZwordG8gc2VlIGhvdyBtdWNoIG9mIHRoZSBwZXJmb3JtYW5jZSBhZHZhbnRhZ2UgcmVwb3J0ZWQgaW4gMTk5MCByZW1haW5zCit0b2RheS4KKworQXQgYWJvdXQgdGhpcyBzYW1lIHRpbWUsIEFuZHJld3MgW0FuZHJld3M5MXRleHRib29rXSBkZXNjcmliZWQgYGBjaGFvdGljCityZWxheGF0aW9uJycsIHdoZXJlIHRoZSBub3JtYWwgYmFycmllcnMgYmV0d2VlbiBzdWNjZXNzaXZlIGl0ZXJhdGlvbnMKK29mIGNvbnZlcmdlbnQgbnVtZXJpY2FsIGFsZ29yaXRobXMgYXJlIHJlbGF4ZWQsIHNvIHRoYXQgaXRlcmF0aW9uICRuJAorbWlnaHQgdXNlIGRhdGEgZnJvbSBpdGVyYXRpb24gJG4tMSQgb3IgZXZlbiAkbi0yJC4gIFRoaXMgaW50cm9kdWNlcworZXJyb3IsIHdoaWNoIHR5cGljYWxseSBzbG93cyBjb252ZXJnZW5jZSBhbmQgdGh1cyBpbmNyZWFzZXMgdGhlIG51bWJlciBvZgoraXRlcmF0aW9ucyByZXF1aXJlZC4gIEhvd2V2ZXIsIHRoaXMgaW5jcmVhc2UgaXMgc29tZXRpbWVzIG1vcmUgdGhhbiBtYWRlCit1cCBmb3IgYnkgYSByZWR1Y3Rpb24gaW4gdGhlIG51bWJlciBvZiBleHBlbnNpdmUgYmFycmllciBvcGVyYXRpb25zLAord2hpY2ggYXJlIG90aGVyd2lzZSByZXF1aXJlZCB0byBzeW5jaHJvbml6ZSB0aGUgdGhyZWFkcyBhdCB0aGUgZW5kCitvZiBlYWNoIGl0ZXJhdGlvbi4gIFVuZm9ydHVuYXRlbHksIGNoYW90aWMgcmVsYXhhdGlvbiByZXF1aXJlcyBoaWdobHkKK3N0cnVjdHVyZWQgZGF0YSwgc3VjaCBhcyB0aGUgbWF0cmljZXMgdXNlZCBpbiBzY2llbnRpZmljIHByb2dyYW1zLCBhbmQKK2lzIHRodXMgaW5hcHBsaWNhYmxlIHRvIG1vc3QgZGF0YSBzdHJ1Y3R1cmVzIGluIG9wZXJhdGluZy1zeXN0ZW0ga2VybmVscy4KKworSW4gMTk5MiwgSGVucnkgKG5vdyBBbGV4aWEpIE1hc3NhbGluIGNvbXBsZXRlZCBhIGRpc3NlcnRhdGlvbiBhZHZpc2luZworcGFyYWxsZWwgcHJvZ3JhbW1lcnMgdG8gZGVmZXIgcHJvY2Vzc2luZyB3aGVuIGZlYXNpYmxlIHRvIHNpbXBsaWZ5CitzeW5jaHJvbml6YXRpb24gW0hNYXNzYWxpblBoRF0uICBSQ1UgbWFrZXMgZXh0cmVtZWx5IGhlYXZ5IHVzZSBvZgordGhpcyBhZHZpY2UuCisKK0luIDE5OTMsIEphY29ic29uIFtKYWNvYnNvbjkzXSB2ZXJiYWxseSBkZXNjcmliZWQgd2hhdCBpcyBwZXJoYXBzIHRoZQorc2ltcGxlc3QgZGVmZXJyZWQtZnJlZSB0ZWNobmlxdWU6IHNpbXBseSB3YWl0aW5nIGEgZml4ZWQgYW1vdW50IG9mIHRpbWUKK2JlZm9yZSBmcmVlaW5nIGJsb2NrcyBhd2FpdGluZyBkZWZlcnJlZCBmcmVlLiAgSmFjb2Jzb24gZGlkIG5vdCBkZXNjcmliZQorYW55IHdyaXRlLXNpZGUgY2hhbmdlcyBoZSBtaWdodCBoYXZlIG1hZGUgaW4gdGhpcyB3b3JrIHVzaW5nIFNHSSdzIElyaXgKK2tlcm5lbC4gIEFqdSBKb2huIHB1Ymxpc2hlZCBhIHNpbWlsYXIgdGVjaG5pcXVlIGluIDE5OTUgW0FqdUpvaG45NV0uCitUaGlzIHdvcmtzIHdlbGwgaWYgdGhlcmUgaXMgYSB3ZWxsLWRlZmluZWQgdXBwZXIgYm91bmQgb24gdGhlIGxlbmd0aCBvZgordGltZSB0aGF0IHJlYWRpbmcgdGhyZWFkcyBjYW4gaG9sZCByZWZlcmVuY2VzLCBhcyB0aGVyZSBtaWdodCB3ZWxsIGJlIGluCitoYXJkIHJlYWwtdGltZSBzeXN0ZW1zLiAgSG93ZXZlciwgaWYgdGhpcyB0aW1lIGlzIGV4Y2VlZGVkLCBwZXJoYXBzIGR1ZQordG8gcHJlZW1wdGlvbiwgZXhjZXNzaXZlIGludGVycnVwdHMsIG9yIGxhcmdlci10aGFuLWFudGljaXBhdGVkIGxvYWQsCittZW1vcnkgY29ycnVwdGlvbiBjYW4gZW5zdWUsIHdpdGggbm8gcmVhc29uYWJsZSBtZWFucyBvZiBkaWFnbm9zaXMuCitKYWNvYnNvbidzIHRlY2huaXF1ZSBpcyB0aGVyZWZvcmUgaW5hcHByb3ByaWF0ZSBmb3IgdXNlIGluIHByb2R1Y3Rpb24KK29wZXJhdGluZy1zeXN0ZW0ga2VybmVscywgZXhjZXB0IHdoZW4gc3VjaCBrZXJuZWxzIGNhbiBwcm92aWRlIGhhcmQKK3JlYWwtdGltZSByZXNwb25zZSBndWFyYW50ZWVzIGZvciBhbGwgb3BlcmF0aW9ucy4KKworQWxzbyBpbiAxOTk1LCBQdSBldCBhbC4gW1B1OTVhXSBhcHBsaWVkIGEgdGVjaG5pcXVlIHNpbWlsYXIgdG8gdGhhdCBvZiBQdWdoJ3MKK3JlYWQtc2lkZS10cmFja2luZyB0byBwZXJtaXQgcmVwbHVnZ2luZyBvZiBhbGdvcml0aG1zIHdpdGhpbiBhIGNvbW1lcmNpYWwKK1VuaXggb3BlcmF0aW5nIHN5c3RlbS4gIEhvd2V2ZXIsIHRoaXMgcmVwbHVnZ2luZyBwZXJtaXR0ZWQgb25seSBhIHNpbmdsZQorcmVhZGVyIGF0IGEgdGltZS4gIFRoZSBmb2xsb3dpbmcgeWVhciwgdGhpcyBzYW1lIGdyb3VwIG9mIHJlc2VhcmNoZXJzCitleHRlbmRlZCB0aGVpciB0ZWNobmlxdWUgdG8gYWxsb3cgZm9yIG11bHRpcGxlIHJlYWRlcnMgW0Nvd2FuOTZhXS4KK1RoZWlyIGFwcHJvYWNoIHJlcXVpcmVzIG1lbW9yeSBiYXJyaWVycyAoYW5kIHRodXMgcGlwZWxpbmUgc3RhbGxzKSwKK2J1dCByZWR1Y2VzIG1lbW9yeSBsYXRlbmN5LCBjb250ZW50aW9uLCBhbmQgbG9ja2luZyBvdmVyaGVhZHMuCisKKzE5OTUgYWxzbyBzYXcgdGhlIGZpcnN0IHB1YmxpY2F0aW9uIG9mIERZTklYL3B0eCdzIFJDVSBtZWNoYW5pc20KK1tTbGluZ3dpbmU5NV0sIHdoaWNoIHdhcyBvcHRpbWl6ZWQgZm9yIG1vZGVybiBDUFUgYXJjaGl0ZWN0dXJlcywKK2FuZCB3YXMgc3VjY2Vzc2Z1bGx5IGFwcGxpZWQgdG8gYSBudW1iZXIgb2Ygc2l0dWF0aW9ucyB3aXRoaW4gdGhlCitEWU5JWC9wdHgga2VybmVsLiAgVGhlIGNvcnJlc3BvbmRpbmcgY29uZmVyZW5jZSBwYXBlciBhcHBlYXJlZCBpbiAxOTk4CitbTWNLZW5uZXk5OF0uCisKK0luIDE5OTksIHRoZSBUb3JuYWRvIGFuZCBLNDIgZ3JvdXBzIGRlc2NyaWJlZCB0aGVpciAiZ2VuZXJhdGlvbnMiCittZWNoYW5pc20sIHdoaWNoIGlzIHF1aXRlIHNpbWlsYXIgdG8gUkNVIFtHYW1zYTk5XS4gIFRoZXNlIG9wZXJhdGluZworc3lzdGVtcyBtYWRlIHBlcnZhc2l2ZSB1c2Ugb2YgUkNVIGluIHBsYWNlIG9mICJleGlzdGVuY2UgbG9ja3MiLCB3aGljaAorZ3JlYXRseSBzaW1wbGlmaWVzIGxvY2tpbmcgaGllcmFyY2hpZXMgYW5kIGhlbHBzIGF2b2lkIGRlYWRsb2Nrcy4KKworVGhlIHllYXIgMjAwMCBzYXcgYW4gZW1haWwgZXhjaGFuZ2UgdGhhdCB3b3VsZCBsaWtlbHkgaGF2ZQorbGVkIHRvIHlldCBhbm90aGVyIGluZGVwZW5kZW50IGludmVudGlvbiBvZiBzb21ldGhpbmcgbGlrZSBSQ1UKK1tSdXN0eVJ1c3NlbGwyMDAwYSxSdXN0eVJ1c3NlbGwyMDAwYl0uICBJbnN0ZWFkLCAyMDAxIHNhdyB0aGUgZmlyc3QKK1JDVSBwcmVzZW50YXRpb24gaW52b2x2aW5nIExpbnV4IFtNY0tlbm5leTAxYV0gYXQgT0xTLiAgVGhlIHJlc3VsdGluZworYWJ1bmRhbmNlIG9mIFJDVSBwYXRjaGVzIHdhcyBwcmVzZW50ZWQgdGhlIGZvbGxvd2luZyB5ZWFyIFtNY0tlbm5leTAyYV0sCithbmQgdXNlIG9mIFJDVSBpbiBkY2FjaGUgd2FzIGZpcnN0IGRlc2NyaWJlZCB0aGF0IHNhbWUgeWVhciBbTGluZGVyMDJhXS4KKworQWxzbyBpbiAyMDAyLCBNaWNoYWVsIFtNaWNoYWVsMDJiLE1pY2hhZWwwMmFdIHByZXNlbnRlZCAiaGF6YXJkLXBvaW50ZXIiCit0ZWNobmlxdWVzIHRoYXQgZGVmZXIgdGhlIGRlc3RydWN0aW9uIG9mIGRhdGEgc3RydWN0dXJlcyB0byBzaW1wbGlmeQorbm9uLWJsb2NraW5nIHN5bmNocm9uaXphdGlvbiAod2FpdC1mcmVlIHN5bmNocm9uaXphdGlvbiwgbG9jay1mcmVlCitzeW5jaHJvbml6YXRpb24sIGFuZCBvYnN0cnVjdGlvbi1mcmVlIHN5bmNocm9uaXphdGlvbiBhcmUgYWxsIGV4YW1wbGVzIG9mCitub24tYmxvY2tpbmcgc3luY2hyb25pemF0aW9uKS4gIFRoZSBjb3JyZXNwb25kaW5nIGpvdXJuYWwgYXJ0aWNsZSBhcHBlYXJlZAoraW4gMjAwNCBbTWFnZWRNaWNoYWVsMDRhXS4gIFRoaXMgdGVjaG5pcXVlIGVsaW1pbmF0ZXMgbG9ja2luZywgcmVkdWNlcworY29udGVudGlvbiwgcmVkdWNlcyBtZW1vcnkgbGF0ZW5jeSBmb3IgcmVhZGVycywgYW5kIHBhcmFsbGVsaXplcyBwaXBlbGluZQorc3RhbGxzIGFuZCBtZW1vcnkgbGF0ZW5jeSBmb3Igd3JpdGVycy4gIEhvd2V2ZXIsIHRoZXNlIHRlY2huaXF1ZXMgc3RpbGwKK2ltcG9zZSBzaWduaWZpY2FudCByZWFkLXNpZGUgb3ZlcmhlYWQgaW4gdGhlIGZvcm0gb2YgbWVtb3J5IGJhcnJpZXJzLgorUmVzZWFyY2hlcnMgYXQgU3VuIHdvcmtlZCBhbG9uZyBzaW1pbGFyIGxpbmVzIGluIHRoZSBzYW1lIHRpbWVmcmFtZQorW0hlcmxpaHlMTTAyXS4gIFRoZXNlIHRlY2huaXF1ZXMgY2FuIGJlIHRob3VnaHQgb2YgYXMgaW5zaWRlLW91dCByZWZlcmVuY2UKK2NvdW50cywgd2hlcmUgdGhlIGNvdW50IGlzIHJlcHJlc2VudGVkIGJ5IHRoZSBudW1iZXIgb2YgaGF6YXJkIHBvaW50ZXJzCityZWZlcmVuY2luZyBhIGdpdmVuIGRhdGEgc3RydWN0dXJlIHJhdGhlciB0aGFuIHRoZSBtb3JlIGNvbnZlbnRpb25hbAorY291bnRlciBmaWVsZCB3aXRoaW4gdGhlIGRhdGEgc3RydWN0dXJlIGl0c2VsZi4gIFRoZSBrZXkgYWR2YW50YWdlCitvZiBpbnNpZGUtb3V0IHJlZmVyZW5jZSBjb3VudHMgaXMgdGhhdCB0aGV5IGNhbiBiZSBzdG9yZWQgaW4gaW1tb3J0YWwKK3ZhcmlhYmxlcywgdGh1cyBhbGxvd2luZyByYWNlcyBiZXR3ZWVuIGFjY2VzcyBhbmQgZGVsZXRpb24gdG8gYmUgYXZvaWRlZC4KKworQnkgdGhlIHNhbWUgdG9rZW4sIFJDVSBjYW4gYmUgdGhvdWdodCBvZiBhcyBhICJidWxrIHJlZmVyZW5jZSBjb3VudCIsCit3aGVyZSBzb21lIGZvcm0gb2YgcmVmZXJlbmNlIGNvdW50ZXIgY292ZXJzIGFsbCByZWZlcmVuY2UgYnkgYSBnaXZlbiBDUFUKK29yIHRocmVhZCBkdXJpbmcgYSBzZXQgdGltZWZyYW1lLiAgVGhpcyB0aW1lZnJhbWUgaXMgcmVsYXRlZCB0bywgYnV0Citub3QgbmVjZXNzYXJpbHkgZXhhY3RseSB0aGUgc2FtZSBhcywgYW4gUkNVIGdyYWNlIHBlcmlvZC4gIEluIGNsYXNzaWMKK1JDVSwgdGhlIHJlZmVyZW5jZSBjb3VudGVyIGlzIHRoZSBwZXItQ1BVIGJpdCBpbiB0aGUgImJpdG1hc2siIGZpZWxkLAorYW5kIGVhY2ggc3VjaCBiaXQgY292ZXJzIGFsbCByZWZlcmVuY2VzIHRoYXQgbWlnaHQgaGF2ZSBiZWVuIG1hZGUgYnkKK3RoZSBjb3JyZXNwb25kaW5nIENQVSBkdXJpbmcgdGhlIHByaW9yIGdyYWNlIHBlcmlvZC4gIE9mIGNvdXJzZSwgUkNVCitjYW4gYmUgdGhvdWdodCBvZiBpbiBvdGhlciB0ZXJtcyBhcyB3ZWxsLgorCitJbiAyMDAzLCB0aGUgSzQyIGdyb3VwIGRlc2NyaWJlZCBob3cgUkNVIGNvdWxkIGJlIHVzZWQgdG8gY3JlYXRlCitob3QtcGx1Z2dhYmxlIGltcGxlbWVudGF0aW9ucyBvZiBvcGVyYXRpbmctc3lzdGVtIGZ1bmN0aW9ucyBbQXBwYXZvbzAzYV0uCitMYXRlciB0aGF0IHllYXIgc2F3IGEgcGFwZXIgZGVzY3JpYmluZyBhbiBSQ1UgaW1wbGVtZW50YXRpb24KK29mIFN5c3RlbSBWIElQQyBbQXJjYW5nZWxpMDNdIChmb2xsb3dpbmcgdXAgb24gYSBzdWdnZXN0aW9uIGJ5CitIdWdoIERpY2tpbnMgW0RpY2tpbnMwMmFdIGFuZCBhbiBpbXBsZW1lbnRhdGlvbiBieSBNaW5nbWluZyBDYW8KK1tNaW5nbWluZ0NhbzIwMDJJUENSQ1VdKSwgYW5kIGFuIGludHJvZHVjdGlvbiB0byBSQ1UgaW4gTGludXggSm91cm5hbAorW01jS2VubmV5MDNhXS4KKworMjAwNCBoYXMgc2VlbiBhIExpbnV4LUpvdXJuYWwgYXJ0aWNsZSBvbiB1c2Ugb2YgUkNVIGluIGRjYWNoZQorW01jS2VubmV5MDRhXSwgYSBwZXJmb3JtYW5jZSBjb21wYXJpc29uIG9mIGxvY2tpbmcgdG8gUkNVIG9uIHNldmVyYWwKK2RpZmZlcmVudCBDUFVzIFtNY0tlbm5leTA0Yl0sIGEgZGlzc2VydGF0aW9uIGRlc2NyaWJpbmcgdXNlIG9mIFJDVSBpbiBhCitudW1iZXIgb2Ygb3BlcmF0aW5nLXN5c3RlbSBrZXJuZWxzIFtQYXVsRWR3YXJkTWNLZW5uZXlQaERdLCBhIHBhcGVyCitkZXNjcmliaW5nIGhvdyB0byBtYWtlIFJDVSBzYWZlIGZvciBzb2Z0LXJlYWx0aW1lIGFwcGxpY2F0aW9ucyBbU2FybWEwNGNdLAorYW5kIGEgcGFwZXIgZGVzY3JpYmluZyBTRUxpbnV4IHBlcmZvcm1hbmNlIHdpdGggUkNVIFtKYW1lc01vcnJpczA0Yl0uCisKKzIwMDUgYnJvdWdodCBmdXJ0aGVyIGFkYXB0YXRpb24gb2YgUkNVIHRvIHJlYWx0aW1lIHVzZSwgcGVybWl0dGluZworcHJlZW1wdGlvbiBvZiBSQ1UgcmVhbHRpbWUgY3JpdGljYWwgc2VjdGlvbnMgW1BhdWxNY0tlbm5leTA1YSwKK1BhdWxNY0tlbm5leTA1Yl0uCisKKzIwMDYgc2F3IHRoZSBmaXJzdCBiZXN0LXBhcGVyIGF3YXJkIGZvciBhbiBSQ1UgcGFwZXIgW1Rob21hc0VIYXJ0MjAwNmFdLAorYXMgd2VsbCBhcyBmdXJ0aGVyIHdvcmsgb24gZWZmaWNpZW50IGltcGxlbWVudGF0aW9ucyBvZiBwcmVlbXB0aWJsZQorUkNVIFtQYXVsRU1jS2VubmV5MjAwNmJdLCBidXQgcHJpb3JpdHktYm9vc3Rpbmcgb2YgUkNVIHJlYWQtc2lkZSBjcml0aWNhbAorc2VjdGlvbnMgcHJvdmVkIGVsdXNpdmUuICBBbiBSQ1UgaW1wbGVtZW50YXRpb24gcGVybWl0dGluZyBnZW5lcmFsCitibG9ja2luZyBpbiByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbnMgYXBwZWFyZWQgW1BhdWxFTWNLZW5uZXkyMDA2Y10sCitSb2JlcnQgT2xzc29uIGRlc2NyaWJlZCBhbiBSQ1UtcHJvdGVjdGVkIHRyaWUtaGFzaCBjb21iaW5hdGlvbgorW1JvYmVydE9sc3NvbjIwMDZhXS4KKworMjAwNyBzYXcgdGhlIGpvdXJuYWwgdmVyc2lvbiBvZiB0aGUgYXdhcmQtd2lubmluZyBSQ1UgcGFwZXIgZnJvbSAyMDA2CitbVGhvbWFzRUhhcnQyMDA3YV0sIGFzIHdlbGwgYXMgYSBwYXBlciBkZW1vbnN0cmF0aW5nIHVzZSBvZiBQcm9tZWxhCithbmQgU3BpbiB0byBtZWNoYW5pY2FsbHkgdmVyaWZ5IGFuIG9wdGltaXphdGlvbiB0byBPbGVnIE5lc3Rlcm92J3MKK1FSQ1UgW1BhdWxFTWNLZW5uZXkyMDA3UVJDVXNwaW5dLCBhIGRlc2lnbiBkb2N1bWVudCBkZXNjcmliaW5nCitwcmVlbXB0aWJsZSBSQ1UgW1BhdWxFTWNLZW5uZXkyMDA3UHJlZW1wdGlibGVSQ1VdLCBhbmQgdGhlIHRocmVlLXBhcnQKK0xXTiAiV2hhdCBpcyBSQ1U/IiBzZXJpZXMgW1BhdWxFTWNLZW5uZXkyMDA3V2hhdElzUkNVRnVuZGFtZW50YWxseSwKK1BhdWxFTWNLZW5uZXkyMDA4V2hhdElzUkNVVXNhZ2UsIGFuZCBQYXVsRU1jS2VubmV5MjAwOFdoYXRJc1JDVUFQSV0uCisKKzIwMDggc2F3IGEgam91cm5hbCBwYXBlciBvbiByZWFsLXRpbWUgUkNVIFtEaW5ha2FyR3VuaWd1bnRhbGEyMDA4SUJNU3lzSl0sCithIGhpc3Rvcnkgb2YgaG93IExpbnV4IGNoYW5nZWQgUkNVIG1vcmUgdGhhbiBSQ1UgY2hhbmdlZCBMaW51eAorW1BhdWxFTWNLZW5uZXkyMDA4UkNVT1NSXSwgYW5kIGEgZGVzaWduIG92ZXJ2aWV3IG9mIGhpZXJhcmNoaWNhbCBSQ1UKK1tQYXVsRU1jS2VubmV5MjAwOEhpZXJhcmNoaWNhbFJDVV0uCisKKzIwMDkgaW50cm9kdWNlZCB1c2VyLWxldmVsIFJDVSBhbGdvcml0aG1zIFtQYXVsRU1jS2VubmV5MjAwOU1hbGljaW91c1VSQ1VdLAord2hpY2ggTWF0aGlldSBEZXNub3llcnMgaXMgbm93IG1haW50YWluaW5nIFtNYXRoaWV1RGVzbm95ZXJzMjAwOVVSQ1VdCitbTWF0aGlldURlc25veWVyc1BoRF0uICBUSU5ZX1JDVSBbUGF1bEVNY0tlbm5leTIwMDlCbG9hdFdhdGNoUkNVXSBtYWRlCitpdHMgYXBwZWFyYW5jZSwgYXMgZGlkIGV4cGVkaXRlZCBSQ1UgW1BhdWxFTWNLZW5uZXkyMDA5ZXhwZWRpdGVkUkNVXS4KK1RoZSBwcm9ibGVtIG9mIHJlc2l6ZWFibGUgUkNVLXByb3RlY3RlZCBoYXNoIHRhYmxlcyBtYXkgbm93IGJlIG9uIGEgcGF0aAordG8gYSBzb2x1dGlvbiBbSm9zaFRyaXBsZXR0MjAwOVJQSGFzaF0uICBBIGZldyBhY2FkZW1pYyByZXNlYXJjaGVycyBhcmUgbm93Cit1c2luZyBSQ1UgdG8gc29sdmUgdGhlaXIgcGFyYWxsZWwgcHJvYmxlbXMgW0hhcmlLYW5uYW4yMDA5RHluYW1pY0FuYWx5c2lzUkNVXS4KKworMjAxMCBwcm9kdWNlZCBhIHNpbXBsZXIgcHJlZW1wdGlibGUtUkNVIGltcGxlbWVudGF0aW9uCitiYXNlZCBvbiBUUkVFX1JDVSBbUGF1bEVNY0tlbm5leTIwMTBTaW1wbGVPcHRSQ1VdLCBsb2NrZGVwLVJDVQorW1BhdWxFTWNLZW5uZXkyMDEwTG9ja2RlcFJDVV0sIGFub3RoZXIgcmVzaXplYWJsZSBSQ1UtcHJvdGVjdGVkIGhhc2gKK3RhYmxlIFtIZXJiZXJ0WHUyMDEwUkNVUmVzaXplSGFzaF0gKHRoaXMgb25lIGNvbnN1bWluZyBtb3JlIG1lbW9yeSwKK2J1dCBhbGxvd2luZyBhcmJpdHJhcnkgY2hhbmdlcyBpbiBoYXNoIGZ1bmN0aW9uLCBhcyByZXF1aXJlZCBmb3IgRG9TCithdm9pZGFuY2UgaW4gdGhlIG5ldHdvcmtpbmcgY29kZSksIHJlYWxpemF0aW9uIG9mIHRoZSAyMDA5IFJDVS1wcm90ZWN0ZWQKK2hhc2ggdGFibGUgd2l0aCBhdG9taWMgbm9kZSBtb3ZlIFtKb3NoVHJpcGxldHQyMDEwUlBIYXNoXSwgYW4gdXBkYXRlIG9uCit0aGUgUkNVIEFQSSBbUGF1bEVNY0tlbm5leTIwMTBSQ1VBUEldLgorCisyMDExIG1hcmtlZCB0aGUgaW5jbHVzaW9uIG9mIE5pY2sgUGlnZ2luJ3MgZnVsbHkgbG9ja2xlc3MgZGVudHJ5IHNlYXJjaAorW0xpbnVzVG9ydmFsZHMyMDExTGludXgyOjY6Mzg6cmMxOk5QaWdnaW5WRlNdLCBhbiBSQ1UtcHJvdGVjdGVkIHJlZC1ibGFjawordHJlZSB1c2luZyBzb2Z0d2FyZSB0cmFuc2FjdGlvbmFsIG1lbW9yeSB0byBwcm90ZWN0IGNvbmN1cnJlbnQgdXBkYXRlcworKHN0cmFuZ2UsIGJ1dCB0cnVlISkgW1BoaWxIb3dhcmQyMDExUkNVVE1SQlRyZWVdLCB5ZXQgYW5vdGhlciB2YXJpYW50IG9mCitSQ1UtcHJvdGVjdGVkIHJlc2l6ZWFibGUgaGFzaCB0YWJsZXMgW1RyaXBsZXR0OjIwMTE6UlBIYXNoXSwgdGhlIDMuMCBSQ1UKK3RyYWlud3JlY2sgW1BhdWxFTWNLZW5uZXkyMDExUkNVMy4wdHJhaW53cmVja10sIGFuZCBOZWlsIEJyb3duJ3MgIk1lZXQgdGhlCitMb2NrZXJzIiBMV04gYXJ0aWNsZSBbTmVpbEJyb3duMjAxMU1lZXRUaGVMb2NrZXJzXS4gIFNvbWUgYWNhZGVtaWMKK3dvcmsgbG9va2VkIGF0IGRlYnVnZ2luZyB1c2VzIG9mIFJDVSBbU2V5c3RlcjoyMDExOlJGQToyMDc1NDE2LjIwNzU0MjVdLgorCitJbiAyMDEyLCBKb3NoIFRyaXBsZXR0IHJlY2VpdmVkIGhpcyBQaC5ELiB3aXRoIGhpcyBkaXNzZXJ0YXRpb24KK2NvdmVyaW5nIFJDVS1wcm90ZWN0ZWQgcmVzaXphYmxlIGhhc2ggdGFibGVzIGFuZCB0aGUgcmVsYXRpb25zaGlwCitiZXR3ZWVuIG1lbW9yeSBiYXJyaWVycyBhbmQgcmVhZC1zaWRlIHRyYXZlcnNhbCBvcmRlcjogIElmIHRoZSB1cGRhdGVyCitpcyBtYWtpbmcgY2hhbmdlcyBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIGZyb20gdGhlIHJlYWQtc2lkZSB0cmF2ZXJhbAorb3JkZXIsIHRoZSB1cGRhdGVyIG5lZWQgb25seSBleGVjdXRlIGEgbWVtb3J5LWJhcnJpZXIgaW5zdHJ1Y3Rpb24sCitidXQgaWYgaW4gdGhlIHNhbWUgZGlyZWN0aW9uLCB0aGUgdXBkYXRlciBuZWVkcyB0byB3YWl0IGZvciBhIGdyYWNlCitwZXJpb2QgYmV0d2VlbiB0aGUgaW5kaXZpZHVhbCB1cGRhdGVzIFtKb3NoVHJpcGxldHRQaERdLiAgQWxzbyBpbiAyMDEyLAorYWZ0ZXIgc2V2ZW50ZWVuIHllYXJzIG9mIGF0dGVtcHRzLCBhbiBSQ1UgcGFwZXIgbWFkZSBpdCBpbnRvIGEgdG9wLWZsaWdodAorYWNhZGVtaWMgam91cm5hbCwgSUVFRSBUcmFuc2FjdGlvbnMgb24gUGFyYWxsZWwgYW5kIERpc3RyaWJ1dGVkIFN5c3RlbXMKK1tNYXRoaWV1RGVzbm95ZXJzMjAxMlVSQ1VdLiAgQSBncm91cCBvZiByZXNlYXJjaGVycyBpbiBTcGFpbiBhcHBsaWVkCit1c2VyLWxldmVsIFJDVSB0byBjcm93ZCBzaW11bGF0aW9uIFtHdWlsbGVybW9WaWd1ZXJhczIwMTJSQ1VDcm93ZF0sIGFuZAorYW5vdGhlciBncm91cCBvZiByZXNlYXJjaGVycyBpbiBFdXJvcGUgcHJvZHVjZWQgYSBmb3JtYWwgZGVzY3JpcHRpb24gb2YKK1JDVSBiYXNlZCBvbiBzZXBhcmF0aW9uIGxvZ2ljIFtBbGV4ZXlHb3RzbWFuMjAxMlZlcmlmeUdyYWNlRXh0ZW5kZWRdLAord2hpY2ggd2FzIHB1Ymxpc2hlZCBpbiB0aGUgMjAxMyBFdXJvcGVhbiBTeW1wb3NpdW0gb24gUHJvZ3JhbW1pbmcKK1tBbGV4ZXlHb3RzbWFuMjAxM0VTT1BSQ1VdLgorCisKKworQmlidGV4IEVudHJpZXMKKworQGFydGljbGV7S3VuZzgwCissYXV0aG9yPSJILiBULiBLdW5nIGFuZCBRLiBMZWhtYW4iCissdGl0bGU9IkNvbmN1cnJlbnQgTWFuaXB1bGF0aW9uIG9mIEJpbmFyeSBTZWFyY2ggVHJlZXMiCissWWVhcj0iMTk4MCIKKyxNb250aD0iU2VwdGVtYmVyIgorLGpvdXJuYWw9IkFDTSBUcmFuc2FjdGlvbnMgb24gRGF0YWJhc2UgU3lzdGVtcyIKKyx2b2x1bWU9IjUiCissbnVtYmVyPSIzIgorLHBhZ2VzPSIzNTQtMzgyIgorLGFubm90YXRpb249eworCVVzZSBnYXJiYWdlIGNvbGxlY3RvciB0byBjbGVhbiB1cCBkYXRhIGFmdGVyIGV2ZXJ5b25lIGlzIGRvbmUgd2l0aCBpdC4KKwkuCisJT2xkZXN0IHVzZSBvZiBzb21ldGhpbmcgdmFndWVseSByZXNlbWJsaW5nIFJDVSB0aGF0IEkgaGF2ZSBmb3VuZC4KKwlodHRwOi8vcG9ydGFsLmFjbS5vcmcvY2l0YXRpb24uY2ZtP2lkPTMyMDYxOSZkbD1HVUlERSwKKwlbVmlld2VkIERlY2VtYmVyIDMsIDIwMDddCit9Cit9CisKK0B0ZWNocmVwb3J0e01hbmJlcjgyCissYXV0aG9yPSJVZGkgTWFuYmVyIGFuZCBSaWNoYXJkIEUuIExhZG5lciIKKyx0aXRsZT0iQ29uY3VycmVuY3kgQ29udHJvbCBpbiBhIER5bmFtaWMgU2VhcmNoIFN0cnVjdHVyZSIKKyxpbnN0aXR1dGlvbj0iRGVwYXJ0bWVudCBvZiBDb21wdXRlciBTY2llbmNlLCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24iCissYWRkcmVzcz0iU2VhdHRsZSwgV2FzaGluZ3RvbiIKKyx5ZWFyPSIxOTgyIgorLG51bWJlcj0iODItMDEtMDEiCissbW9udGg9IkphbnVhcnkiCisscGFnZXM9IjI4IgorLGFubm90YXRpb249eworCS4KKwlTdXBlcnNlZGVkIGJ5IE1hbmJlcjg0LgorCS4KKwlEZXNjcmliZXMgY29uY3VycmVudCBBVkwgdHJlZSBpbXBsZW1lbnRhdGlvbi4gIFVzZXMgYQorCWdhcmJhZ2UtY29sbGVjdGlvbiBtZWNoYW5pc20gdG8gaGFuZGxlIGNvbmN1cnJlbnQgdXNlIGFuZCBkZWxldGlvbgorCW9mIG5vZGVzIGluIHRoZSB0cmVlLCBidXQgbGFja3MgdGhlIHN1bW1hcnktb2YtZXhlY3V0aW9uLWhpc3RvcnkKKwljb25jZXB0IG9mIHJlYWQtY29weSBsb2NraW5nLgorCS4KKwlLZWVwcyBmdWxsIGxpc3Qgb2YgcHJvY2Vzc2VzIHRoYXQgd2VyZSBhY3RpdmUgd2hlbiBhIGdpdmVuCisJbm9kZSB3YXMgdG8gYmUgZGVsZXRlZCwgYW5kIHdhaXRzIHVudGlsIGFsbCBzdWNoIHByb2Nlc3NlcyBoYXZlCisJLXRlcm1pbmF0ZWQtIGJlZm9yZSBhbGxvd2luZyB0aGlzIG5vZGUgdG8gYmUgcmV1c2VkLiAgVGhpcyBpcworCW5vdCBkZXNjcmliZWQgaW4gZ3JlYXQgZGV0YWlsIC0tIG9uZSBjb3VsZCBpbWFnaW5lIHVzaW5nIHByb2Nlc3MKKwlJRHMgZm9yIHRoaXMgaWYgdGhlIElEIHNwYWNlIHdhcyBsYXJnZSBlbm91Z2ggdGhhdCBvdmVybGFwcGluZworCW5ldmVyIG9jY3VycmVkLgorCS4KKwlUaGlzIHJlc3RyaWN0aW9uIG1ha2VzIHRoaXMgYWxnb3JpdGhtIHVuc3VpdGFibGUgZm9yIHVzZSBpbgorCXN5c3RlbXMgY29tcHJpc2VkIG9mIGxvbmctbGl2ZWQgcHJvY2Vzc2VzLiAgSXQgYWxzbyBwcm9kdWNlcworCWNvbXBsZXRlbHkgdW5hY2NlcHRhYmxlIG92ZXJoZWFkIGluIHN5c3RlbXMgd2l0aCBsYXJnZSBudW1iZXJzCisJb2YgcHJvY2Vzc2VzLiAgRmluYWxseSwgaXQgaXMgc3BlY2lmaWMgdG8gQVZMIHRyZWVzLgorCS4KKwlDaXRlcyBLdW5nODAsIHNvIG5vdCBhbiBpbmRlcGVuZGVudCBpbnZlbnRpb24sIGJ1dCB0aGUgZmlyc3QKKwlSQ1UtbGlrZSB1c2FnZSB0aGF0IGRvZXMgbm90IHJlbHkgb24gYW4gYXV0b21hdGljIGdhcmJhZ2UKKwljb2xsZWN0b3IuCit9Cit9CisKK0BhcnRpY2xle01hbmJlcjg0CissYXV0aG9yPSJVZGkgTWFuYmVyIGFuZCBSaWNoYXJkIEUuIExhZG5lciIKKyx0aXRsZT0iQ29uY3VycmVuY3kgQ29udHJvbCBpbiBhIER5bmFtaWMgU2VhcmNoIFN0cnVjdHVyZSIKKyxZZWFyPSIxOTg0IgorLE1vbnRoPSJTZXB0ZW1iZXIiCissam91cm5hbD0iQUNNIFRyYW5zYWN0aW9ucyBvbiBEYXRhYmFzZSBTeXN0ZW1zIgorLHZvbHVtZT0iOSIKKyxudW1iZXI9IjMiCisscGFnZXM9IjQzOS00NTUiCissYW5ub3RhdGlvbj17CisJRGVzY3JpYmVzIGNvbmN1cnJlbnQgQVZMIHRyZWUgaW1wbGVtZW50YXRpb24uICBVc2VzIGEKKwlnYXJiYWdlLWNvbGxlY3Rpb24gbWVjaGFuaXNtIHRvIGhhbmRsZSBjb25jdXJyZW50IHVzZSBhbmQgZGVsZXRpb24KKwlvZiBub2RlcyBpbiB0aGUgdHJlZSwgYnV0IGxhY2tzIHRoZSBzdW1tYXJ5LW9mLWV4ZWN1dGlvbi1oaXN0b3J5CisJY29uY2VwdCBvZiByZWFkLWNvcHkgbG9ja2luZy4KKwkuCisJS2VlcHMgZnVsbCBsaXN0IG9mIHByb2Nlc3NlcyB0aGF0IHdlcmUgYWN0aXZlIHdoZW4gYSBnaXZlbgorCW5vZGUgd2FzIHRvIGJlIGRlbGV0ZWQsIGFuZCB3YWl0cyB1bnRpbCBhbGwgc3VjaCBwcm9jZXNzZXMgaGF2ZQorCS10ZXJtaW5hdGVkLSBiZWZvcmUgYWxsb3dpbmcgdGhpcyBub2RlIHRvIGJlIHJldXNlZC4gIFRoaXMgaXMKKwlub3QgZGVzY3JpYmVkIGluIGdyZWF0IGRldGFpbCAtLSBvbmUgY291bGQgaW1hZ2luZSB1c2luZyBwcm9jZXNzCisJSURzIGZvciB0aGlzIGlmIHRoZSBJRCBzcGFjZSB3YXMgbGFyZ2UgZW5vdWdoIHRoYXQgb3ZlcmxhcHBpbmcKKwluZXZlciBvY2N1cnJlZC4KKwkuCisJVGhpcyByZXN0cmljdGlvbiBtYWtlcyB0aGlzIGFsZ29yaXRobSB1bnN1aXRhYmxlIGZvciB1c2UgaW4KKwlzeXN0ZW1zIGNvbXByaXNlZCBvZiBsb25nLWxpdmVkIHByb2Nlc3Nlcy4gIEl0IGFsc28gcHJvZHVjZXMKKwljb21wbGV0ZWx5IHVuYWNjZXB0YWJsZSBvdmVyaGVhZCBpbiBzeXN0ZW1zIHdpdGggbGFyZ2UgbnVtYmVycworCW9mIHByb2Nlc3Nlcy4gIEZpbmFsbHksIGl0IGlzIHNwZWNpZmljIHRvIEFWTCB0cmVlcy4KK30KK30KKworQENvbmZlcmVuY2V7UmljaGFyZFJhc2hpZDg3YQorLEF1dGhvcj0iUmljaGFyZCBSYXNoaWQgYW5kIEF2YWRpcyBUZXZhbmlhbiBhbmQgTWljaGFlbCBZb3VuZyBhbmQKK0RhdmlkIEdvbHViIGFuZCBSb2JlcnQgQmFyb24gYW5kIERhdmlkIEJsYWNrIGFuZCBXaWxsaWFtIEJvbG9za3kgYW5kCitKb25hdGhhbiBDaGV3IgorLFRpdGxlPSJNYWNoaW5lLUluZGVwZW5kZW50IFZpcnR1YWwgTWVtb3J5IE1hbmFnZW1lbnQgZm9yIFBhZ2VkCitVbmlwcm9jZXNzb3IgYW5kIE11bHRpcHJvY2Vzc29yIEFyY2hpdGVjdHVyZXMiCissQm9va3RpdGxlPSJ7Mlx0ZXh0c3VwZXJzY3JpcHR7bmR9IFN5bXBvc2l1bSBvbiBBcmNoaXRlY3R1cmFsIFN1cHBvcnQKK2ZvciBQcm9ncmFtbWluZyBMYW5ndWFnZXMgYW5kIE9wZXJhdGluZyBTeXN0ZW1zfSIKKyxQdWJsaXNoZXI9IkFzc29jaWF0aW9uIGZvciBDb21wdXRpbmcgTWFjaGluZXJ5IgorLE1vbnRoPSJPY3RvYmVyIgorLFllYXI9IjE5ODciCisscGFnZXM9IjMxLTM5IgorLEFkZHJlc3M9IlBhbG8gQWx0bywgQ0EiCissbm90ZT0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vd3d3LmNzZS51Y3NjLmVkdS9+cmFuZGFsLzIyMS9yYXNoaWQtbWFjaHZtLnBkZn0KK1tWaWV3ZWQgRmVicnVhcnkgMTcsIDIwMDVdIgorLGFubm90YXRpb249eworCURlc2NyaWJlcyBsYXp5IFRMQiBmbHVzaCwgd2hlcmUgb25lIHdhaXRzIGZvciBlYWNoIENQVSB0byBwYXNzCisJdGhyb3VnaCBhIHNjaGVkdWxpbmctY2xvY2sgaW50ZXJydXB0IGJlZm9yZSByZXVzaW5nIGEgZ2l2ZW4gcmFuZ2UKKwlvZiB2aXJ0dWFsIGFkZHJlc3MuICBEb2VzIG5vdCBkZXNjcmliZSBob3cgb25lIGRldGVybWluZXMgdGhhdAorCWFsbCBDUFVzIGhhdmUgaW4gZmFjdCB0YWtlbiBzdWNoIGFuIGludGVycnVwdCwgdGhvdWdoIHRoZXJlIGFyZQorCW5vIHNob3J0YWdlIG9mIHN0cmFpZ2h0Zm9yd2FyZCBtZXRob2RzIGZvciBhY2NvbXBsaXNoaW5nIHRoaXMuCisJLgorCU5vdGUgdGhhdCBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIGp1c3Qgd2FpdCBhIGZpeGVkIGFtb3VudCBvZgorCXRpbWUsIHNpbmNlIGEgZ2l2ZW4gQ1BVIG1pZ2h0IGhhdmUgaW50ZXJydXB0cyBkaXNhYmxlZCBmb3IgYW4KKwlleHRlbmRlZCBhbW91bnQgb2YgdGltZS4KK30KK30KKworQGFydGljbGV7QmFyYmFyYUxpc2tvdjE5ODhBcmd1c0NBQ00KKyxhdXRob3IgPSB7QmFyYmFyYSBMaXNrb3Z9CissdGl0bGUgPSB7RGlzdHJpYnV0ZWQgcHJvZ3JhbW1pbmcgaW4ge0FyZ3VzfX0KKyxqb3VybmFsID0ge0NvbW11bi4gQUNNfQorLHZvbHVtZSA9IHszMX0KKyxudW1iZXIgPSB7M30KKyx5ZWFyID0gezE5ODh9CissaXNzbiA9IHswMDAxLTA3ODJ9CisscGFnZXMgPSB7MzAwLS0zMTJ9CissZG9pID0ge2h0dHA6Ly9kb2kuYWNtLm9yZy8xMC4xMTQ1LzQyMzkyLjQyMzk5fQorLHB1Ymxpc2hlciA9IHtBQ019CissYWRkcmVzcyA9IHtOZXcgWW9yaywgTlksIFVTQX0KKyxhbm5vdGF0aW9uPXsKKwlBdCB0aGUgdG9wIG9mIHBhZ2UgMzA3OiAiQ29uZmxpY3RzIHdpdGggZGVwb3NpdHMgYW5kIHdpdGhkcmF3YWxzCisJYXJlIG5lY2Vzc2FyeSBpZiB0aGUgcmVwb3J0ZWQgdG90YWwgaXMgdG8gYmUgdXAgdG8gZGF0ZS4gIFRoZXkKKwljb3VsZCBiZSBhdm9pZGVkIGJ5IGhhdmluZyB0b3RhbCByZXR1cm4gYSBzdW0gdGhhdCBpcyBzbGlnaHRseQorCW91dCBvZiBkYXRlLiIgIFJlbGllcyBvbiBzZW1hbnRpY3MgLS0gYXBwcm94aW1hdGUgbnVtZXJpY2FsCisJdmFsdWVzIHNvbWV0aW1lcyBPSy4KK30KK30KKworQHRlY2hyZXBvcnR7SGVubmVzc3k4OQorLGF1dGhvcj0iSmFtZXMgUC4gSGVubmVzc3kgYW5kIERhbWlhbiBMLiBPc2lzZWsgYW5kIEpvc2VwaCBXLiB7U2VpZ2ggSUl9IgorLHRpdGxlPSJQYXNzaXZlIFNlcmlhbGl6YXRpb24gaW4gYSBNdWx0aXRhc2tpbmcgRW52aXJvbm1lbnQiCissaW5zdGl0dXRpb249IlVTIFBhdGVudCBhbmQgVHJhZGVtYXJrIE9mZmljZSIKKyxhZGRyZXNzPSJXYXNoaW5ndG9uLCBEQyIKKyx5ZWFyPSIxOTg5IgorLG51bWJlcj0iVVMgUGF0ZW50IDQsODA5LDE2OCAobGFwc2VkKSIKKyxtb250aD0iRmVicnVhcnkiCisscGFnZXM9IjExIgorfQorCitAdGVjaHJlcG9ydHtQdWdoOTAKKyxhdXRob3I9IldpbGxpYW0gUHVnaCIKKyx0aXRsZT0iQ29uY3VycmVudCBNYWludGVuYW5jZSBvZiBTa2lwIExpc3RzIgorLGluc3RpdHV0aW9uPSJJbnN0aXR1dGUgb2YgQWR2YW5jZWQgQ29tcHV0ZXIgU2NpZW5jZSBTdHVkaWVzLCBEZXBhcnRtZW50IG9mIENvbXB1dGVyIFNjaWVuY2UsIFVuaXZlcnNpdHkgb2YgTWFyeWxhbmQiCissYWRkcmVzcz0iQ29sbGVnZSBQYXJrLCBNYXJ5bGFuZCIKKyx5ZWFyPSIxOTkwIgorLG51bWJlcj0iQ1MtVFItMjIyMi4xIgorLG1vbnRoPSJKdW5lIgorLGFubm90YXRpb249eworCUNvbmN1cnJlbnQgYWNjZXNzIHRvIHNraXAgbGlzdHMuICBIYXMgYm90aCB3ZWFrIGFuZCBzdHJvbmcgc2VhcmNoLgorCVVzZXMgY29uY2VwdCBvZiBgYGdhcmJhZ2UgcXVldWUnJywgYnV0IGhhcyBubyByZWFsIHdheSBvZiBjbGVhbmluZworCXRoZSBnYXJiYWdlIGVmZmljaWVudGx5LgorCS4KKwlBcHBlYXJzIHRvIGJlIGFuIGluZGVwZW5kZW50IGludmVudGlvbiBvZiBhbiBSQ1UtbGlrZSBtZWNoYW5pc20uCit9Cit9CisKKyMgV2FzIEFkYW1zOTEsIHNlZSBhbHNvIHN5bmNyZWZzLmJpYi4KK0BCb29re0FuZHJld3M5MXRleHRib29rCissQXV0aG9yPSJHcmVnb3J5IFIuIEFuZHJld3MiCissdGl0bGU9IkNvbmN1cnJlbnQgUHJvZ3JhbW1pbmcsIFByaW5jaXBsZXMsIGFuZCBQcmFjdGljZXMiCissUHVibGlzaGVyPSJCZW5qYW1pbiBDdW1taW5zIgorLFllYXI9IjE5OTEiCissYW5ub3RhdGlvbj17CisJSGFzIGEgZmV3IHBhcmFncmFwaHMgZGVzY3JpYmluZyBgYGNoYW90aWMgcmVsYXhhdGlvbicnLCBhCisJbnVtZXJpY2FsIGFuYWx5c2lzIHRlY2huaXF1ZSB0aGF0IGFsbG93cyBtdWx0aXByb2Nlc3NvcnMgdG8KKwlhdm9pZCBzeW5jaHJvbml6YXRpb24gb3ZlcmhlYWQgYnkgdXNpbmcgcG9zc2libHktc3RhbGUgZGF0YS4KKwkuCisJU2VlbXMgbGlrZSB0aGlzIGlzIGRlc2NlbmRlZCBmcm9tIHlldCBhbm90aGVyIGluZGVwZW5kZW50CisJaW52ZW50aW9uIG9mIFJDVS1saWtlIGZ1bmN0aW9uIC0tIGJ1dCB0aGlzIGlzIHJlc3RyaWN0ZWQKKwlpbiB0aGF0IHJlY2xhbWF0aW9uIGlzIG5vdCBuZWNlc3NhcnkuCit9Cit9CisKK0BwaGR0aGVzaXN7SE1hc3NhbGluUGhECissYXV0aG9yPSJILiBNYXNzYWxpbiIKKyx0aXRsZT0iU3ludGhlc2lzOiBBbiBFZmZpY2llbnQgSW1wbGVtZW50YXRpb24gb2YgRnVuZGFtZW50YWwgT3BlcmF0aW5nCitTeXN0ZW0gU2VydmljZXMiCissc2Nob29sPSJDb2x1bWJpYSBVbml2ZXJzaXR5IgorLGFkZHJlc3M9Ik5ldyBZb3JrLCBOWSIKKyx5ZWFyPSIxOTkyIgorLGFubm90YXRpb249eworCU1vbmRvIG9wdGltaXppbmcgY29tcGlsZXIuCisJV2FpdC1mcmVlIHN0dWZmLgorCUdvb2QgYWR2aWNlOiBkZWZlciB3b3JrIHRvIGF2b2lkIHN5bmNocm9uaXphdGlvbi4gIFNlZSBwYWdlIDkwCisJCShQREYgcGFnZSAxMDYpLCBTZWN0aW9uIDUuNCwgZm91cnRoIGJ1bGxldCBwb2ludC4KK30KK30KKworQHVucHVibGlzaGVke0phY29ic29uOTMKKyxhdXRob3I9IlZhbiBKYWNvYnNvbiIKKyx0aXRsZT0iQXZvaWQgUmVhZC1TaWRlIExvY2tpbmcgVmlhIERlbGF5ZWQgRnJlZSIKKyx5ZWFyPSIxOTkzIgorLG1vbnRoPSJTZXB0ZW1iZXIiCissbm90ZT0icHJpdmF0ZSBjb21tdW5pY2F0aW9uIgorLGFubm90YXRpb249eworCVVzZSBmaXhlZCB0aW1lIGRlbGF5IHRvIGFwcHJveGltYXRlIGdyYWNlIHBlcmlvZC4gIFZlcnkgc2ltcGxlLAorCWJ1dCBzdWJqZWN0IHRvIHJhbmRvbSBtZW1vcnkgY29ycnVwdGlvbiB1bmRlciBoZWF2eSBsb2FkLgorCS4KKwlJbmRlcGVuZGVudCBpbnZlbnRpb24gb2YgUkNVLWxpa2UgbWVjaGFuaXNtLgorfQorfQorCitAQ29uZmVyZW5jZXtBanVKb2huOTUKKyxBdXRob3I9IkFqdSBKb2huIgorLFRpdGxlPSJEeW5hbWljIHZub2RlcyAtLSBEZXNpZ24gYW5kIEltcGxlbWVudGF0aW9uIgorLEJvb2t0aXRsZT0ie1VTRU5JWCBXaW50ZXIgMTk5NX0iCissUHVibGlzaGVyPSJVU0VOSVggQXNzb2NpYXRpb24iCissTW9udGg9IkphbnVhcnkiCissWWVhcj0iMTk5NSIKKyxwYWdlcz0iMTEtMjMiCissQWRkcmVzcz0iTmV3IE9ybGVhbnMsIExBIgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cHM6Ly93d3cudXNlbml4Lm9yZy9wdWJsaWNhdGlvbnMvbGlicmFyeS9wcm9jZWVkaW5ncy9uZXdvcmwvZnVsbF9wYXBlcnMvam9obi5hfQorW1ZpZXdlZCBPY3RvYmVyIDEsIDIwMTBdIgorLGFubm90YXRpb249eworCUFnZSB2bm9kZXMgb3V0IG9mIHRoZSBjYWNoZSwgYW5kIGhhdmUgYSBmaXhlZCB0aW1lIHNldCBieSBhIGtlcm5lbAorCXBhcmFtZXRlci4gIE5vdCBjbGVhciB0aGF0IGFsbCByYWNlcyB3ZXJlIGluIGZhY3QgY29ycmVjdGx5IGhhbmRsZWQuCisJVXNlZCBhIDIwLW1pbnV0ZSB0aW1lIGJ5IGRlZmF1bHQsIHdoaWNoIHdvdWxkIG1vc3QgZGVmaW5pdGVseSBub3QKKwliZSBzdWl0YWJsZSBkdXJpbmcgRG9TIGF0dGFja3Mgb3IgdmlydXMgc2NhbnMuCisJLgorCUFwcGFyZW50bHkgaW5kZXBlbmRlbnQgaW52ZW50aW9uIG9mIFJDVS1saWtlIG1lY2hhbmlzbS4KK30KK30KKworQGNvbmZlcmVuY2V7UHU5NWEKKyxBdXRob3IgPSAiQ2FsdG9uIFB1IGFuZCBUaXRvIEF1dHJleSBhbmQgQW5kcmV3IEJsYWNrIGFuZCBDaGFybGVzIENvbnNlbCBhbmQKK0NyaXNwaW4gQ293YW4gYW5kIEpvbiBJbm91eWUgYW5kIExha3NobWkgS2V0aGFuYSBhbmQgSm9uYXRoYW4gV2FscG9sZSBhbmQKK0tlIFpoYW5nIgorLFRpdGxlID0gIk9wdGltaXN0aWMgSW5jcmVtZW50YWwgU3BlY2lhbGl6YXRpb246IFN0cmVhbWxpbmluZyBhIENvbW1lcmNpYWwKKyxPcGVyYXRpbmcgU3lzdGVtIgorLEJvb2t0aXRsZSA9ICIxNVx0ZXh0c3VwZXJzY3JpcHR7dGh9IEFDTSBTeW1wb3NpdW0gb24KKyxPcGVyYXRpbmcgU3lzdGVtcyBQcmluY2lwbGVzIChTT1NQJzk1KSIKKyxhZGRyZXNzID0gIkNvcHBlciBNb3VudGFpbiwgQ08iCissbW9udGg9IkRlY2VtYmVyIgorLHllYXI9IjE5OTUiCisscGFnZXM9IjMxNC0zMjEiCissYW5ub3RhdGlvbj17CisJVXNlcyBhIHJlcGx1Z2dlciwgYnV0IHdpdGggYSBmbGFnIHRvIHNpZ25hbCB3aGVuIHBlb3BsZSBhcmUKKwl1c2luZyB0aGUgcmVzb3VyY2UgYXQgaGFuZC4gIE9ubHkgb25lIHJlYWRlciBhdCBhIHRpbWUuCit9Cit9CisKK0Bjb25mZXJlbmNle0Nvd2FuOTZhCissQXV0aG9yID0gIkNyaXNwaW4gQ293YW4gYW5kIFRpdG8gQXV0cmV5IGFuZCBDaGFybGVzIEtyYXNpYyBhbmQKKyxDYWx0b24gUHUgYW5kIEpvbmF0aGFuIFdhbHBvbGUiCissVGl0bGUgPSAiRmFzdCBDb25jdXJyZW50IER5bmFtaWMgTGlua2luZyBmb3IgYW4gQWRhcHRpdmUgT3BlcmF0aW5nIFN5c3RlbSIKKyxCb29rdGl0bGUgPSAiSW50ZXJuYXRpb25hbCBDb25mZXJlbmNlIG9uIENvbmZpZ3VyYWJsZSBEaXN0cmlidXRlZCBTeXN0ZW1zCisoSUNDRFMnOTYpIgorLGFkZHJlc3MgPSAiQW5uYXBvbGlzLCBNRCIKKyxtb250aD0iTWF5IgorLHllYXI9IjE5OTYiCisscGFnZXM9IjEwOCIKKyxpc2JuPSIwLTgxODYtNzM5NS04IgorLGFubm90YXRpb249eworCVVzZXMgYSByZXBsdWdnZXIsIGJ1dCB3aXRoIGEgY291bnRlciB0byBzaWduYWwgd2hlbiBwZW9wbGUgYXJlCisJdXNpbmcgdGhlIHJlc291cmNlIGF0IGhhbmQuICBBbGxvd3MgbXVsdGlwbGUgcmVhZGVycy4KK30KK30KKworQHRlY2hyZXBvcnR7U2xpbmd3aW5lOTUKKyxhdXRob3I9IkpvaG4gRC4gU2xpbmd3aW5lIGFuZCBQYXVsIEUuIE1jS2VubmV5IgorLHRpdGxlPSJBcHBhcmF0dXMgYW5kIE1ldGhvZCBmb3IgQWNoaWV2aW5nIFJlZHVjZWQgT3ZlcmhlYWQgTXV0dWFsCitFeGNsdXNpb24gYW5kIE1haW50YWluaW5nIENvaGVyZW5jeSBpbiBhIE11bHRpcHJvY2Vzc29yIFN5c3RlbQorVXRpbGl6aW5nIEV4ZWN1dGlvbiBIaXN0b3J5IGFuZCBUaHJlYWQgTW9uaXRvcmluZyIKKyxpbnN0aXR1dGlvbj0iVVMgUGF0ZW50IGFuZCBUcmFkZW1hcmsgT2ZmaWNlIgorLGFkZHJlc3M9Ildhc2hpbmd0b24sIERDIgorLHllYXI9IjE5OTUiCissbnVtYmVyPSJVUyBQYXRlbnQgNSw0NDIsNzU4IgorLG1vbnRoPSJBdWd1c3QiCissYW5ub3RhdGlvbj17CisJRGVzY3JpYmVzIHRoZSBwYXJhbGxlbCBSQ1UgaW5mcmFzdHJ1Y3R1cmUuICBJbmNsdWRlcyBOVU1BIGFzcGVjdAorCShzdHJ1Y3R1cmUgb2YgYml0bWFwIGNhbiByZWZsZWN0IGJ1cyBzdHJ1Y3R1cmUgb2YgY29tcHV0ZXIgc3lzdGVtKS4KKwkuCisJQW5vdGhlciBpbmRlcGVuZGVudCBpbnZlbnRpb24gb2YgYW4gUkNVLWxpa2UgbWVjaGFuaXNtLCBidXQgdGhlCisJInJlYWwiIFJDVSB0aGlzIHRpbWUhCit9Cit9CisKK0B0ZWNocmVwb3J0e1NsaW5nd2luZTk3CissYXV0aG9yPSJKb2huIEQuIFNsaW5nd2luZSBhbmQgUGF1bCBFLiBNY0tlbm5leSIKKyx0aXRsZT0iTWV0aG9kIGZvciBNYWludGFpbmluZyBEYXRhIENvaGVyZW5jeSBVc2luZyBUaHJlYWQgQWN0aXZpdHkKK1N1bW1hcmllcyBpbiBhIE11bHRpY29tcHV0ZXIgU3lzdGVtIgorLGluc3RpdHV0aW9uPSJVUyBQYXRlbnQgYW5kIFRyYWRlbWFyayBPZmZpY2UiCissYWRkcmVzcz0iV2FzaGluZ3RvbiwgREMiCisseWVhcj0iMTk5NyIKKyxudW1iZXI9IlVTIFBhdGVudCA1LDYwOCw4OTMiCissbW9udGg9Ik1hcmNoIgorLHBhZ2VzPSIxOSIKKyxhbm5vdGF0aW9uPXsKKwlEZXNjcmliZXMgdXNlIG9mIFJDVSB0byBzeW5jaHJvbml6ZSBkYXRhIGJldHdlZW4gYSBwYWlyIG9mCisJU01QL05VTUEgY29tcHV0ZXIgc3lzdGVtcy4KK30KK30KKworQHRlY2hyZXBvcnR7U2xpbmd3aW5lOTgKKyxhdXRob3I9IkpvaG4gRC4gU2xpbmd3aW5lIGFuZCBQYXVsIEUuIE1jS2VubmV5IgorLHRpdGxlPSJBcHBhcmF0dXMgYW5kIE1ldGhvZCBmb3IgQWNoaWV2aW5nIFJlZHVjZWQgT3ZlcmhlYWQgTXV0dWFsCitFeGNsdXNpb24gYW5kIE1haW50YWluaW5nIENvaGVyZW5jeSBpbiBhIE11bHRpcHJvY2Vzc29yIFN5c3RlbQorVXRpbGl6aW5nIEV4ZWN1dGlvbiBIaXN0b3J5IGFuZCBUaHJlYWQgTW9uaXRvcmluZyIKKyxpbnN0aXR1dGlvbj0iVVMgUGF0ZW50IGFuZCBUcmFkZW1hcmsgT2ZmaWNlIgorLGFkZHJlc3M9Ildhc2hpbmd0b24sIERDIgorLHllYXI9IjE5OTgiCissbnVtYmVyPSJVUyBQYXRlbnQgNSw3MjcsMjA5IgorLG1vbnRoPSJNYXJjaCIKKyxhbm5vdGF0aW9uPXsKKwlEZXNjcmliZXMgZG9pbmcgYW4gYXRvbWljIHVwZGF0ZSBieSBjb3B5aW5nIHRoZSBkYXRhIGl0ZW0gYW5kCisJdGhlbiBzdWJzdGl0dXRpbmcgaXQgaW50byB0aGUgZGF0YSBzdHJ1Y3R1cmUuCit9Cit9CisKK0BDb25mZXJlbmNle01jS2VubmV5OTgKKyxBdXRob3I9IlBhdWwgRS4gTWNLZW5uZXkgYW5kIEpvaG4gRC4gU2xpbmd3aW5lIgorLFRpdGxlPSJSZWFkLUNvcHkgVXBkYXRlOiBVc2luZyBFeGVjdXRpb24gSGlzdG9yeSB0byBTb2x2ZSBDb25jdXJyZW5jeQorUHJvYmxlbXMiCissQm9va3RpdGxlPSJ7UGFyYWxsZWwgYW5kIERpc3RyaWJ1dGVkIENvbXB1dGluZyBhbmQgU3lzdGVtc30iCissTW9udGg9Ik9jdG9iZXIiCissWWVhcj0iMTk5OCIKKyxwYWdlcz0iNTA5LTUxOCIKKyxBZGRyZXNzPSJMYXMgVmVnYXMsIE5WIgorLGFubm90YXRpb249eworCURlc2NyaWJlcyBhbmQgYW5hbHl6ZXMgUkNVIG1lY2hhbmlzbSBpbiBEWU5JWC9wdHguICBEZXNjcmliZXMKKwlhcHBsaWNhdGlvbiB0byBsaW5rZWQgbGlzdCB1cGRhdGUgYW5kIGxvZy1idWZmZXIgZmx1c2hpbmcuCisJRGVmaW5lcyAncXVpZXNjZW50IHN0YXRlJy4gIEluY2x1ZGVzIGJvdGggbWVhc3VyZWQgYW5kIGFuYWx5dGljCisJZXZhbHVhdGlvbi4KKwlodHRwOi8vd3d3LnJkcm9wLmNvbS91c2Vycy9wYXVsbWNrL1JDVS9yY2xvY2twZGNzcHJvb2YucGRmCisJW1ZpZXdlZCBEZWNlbWJlciAzLCAyMDA3XQorfQorfQorCitAQ29uZmVyZW5jZXtHYW1zYTk5CissQXV0aG9yPSJCZW4gR2Ftc2EgYW5kIE9ycmFuIEtyaWVnZXIgYW5kIEpvbmF0aGFuIEFwcGF2b28gYW5kIE1pY2hhZWwgU3R1bW0iCissVGl0bGU9IlRvcm5hZG86IE1heGltaXppbmcgTG9jYWxpdHkgYW5kIENvbmN1cnJlbmN5IGluIGEgU2hhcmVkIE1lbW9yeQorTXVsdGlwcm9jZXNzb3IgT3BlcmF0aW5nIFN5c3RlbSIKKyxCb29rdGl0bGU9IntQcm9jZWVkaW5ncyBvZiB0aGUgM1x0ZXh0c3VwZXJzY3JpcHR7cmR9IFN5bXBvc2l1bSBvbgorT3BlcmF0aW5nIFN5c3RlbSBEZXNpZ24gYW5kIEltcGxlbWVudGF0aW9ufSIKKyxNb250aD0iRmVicnVhcnkiCissWWVhcj0iMTk5OSIKKyxwYWdlcz0iODctMTAwIgorLEFkZHJlc3M9Ik5ldyBPcmxlYW5zLCBMQSIKKyxhbm5vdGF0aW9uPXsKKwlVc2Ugb2YgUkNVLWxpa2UgZmFjaWxpdHkgaW4gSzQyL1Rvcm5hZG8uICBBbm90aGVyIGluZGVwZW5kZW50CisJaW52ZW50aW9uIG9mIFJDVS4KKwlTZWUgZXNwZWNpYWxseSBwYWdlcyA3LTkgKFNlY3Rpb24gNSkuCisJaHR0cDovL3d3dy51c2VuaXgub3JnL2V2ZW50cy9vc2RpOTkvZnVsbF9wYXBlcnMvZ2Ftc2EvZ2Ftc2EucGRmCisJW1ZpZXdlZCBBdWd1c3QgMzAsIDIwMDZdCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtSdXN0eVJ1c3NlbGwyMDAwYQorLEF1dGhvcj0iUnVzdHkgUnVzc2VsbCIKKyxUaXRsZT0iUmU6IG1vZHVsYXIgbmV0IGRyaXZlcnMiCissbW9udGg9Ikp1bmUiCisseWVhcj0iMjAwMCIKKyxkYXk9IjIzIgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL29zcy5zZ2kuY29tL3Byb2plY3RzL25ldGRldi9hcmNoaXZlLzIwMDAtMDYvbXNnMDAyNTAuaHRtbH0KK1tWaWV3ZWQgQXByaWwgMTAsIDIwMDZdIgorLGFubm90YXRpb249eworCVByb3RvLVJDVSBwcm9wb3NhbCBmcm9tIFBoaWwgUnVtcGYgYW5kIFJ1c3R5IFJ1c3NlbGwuCisJWWV0IGFub3RoZXIgaW5kZXBlbmRlbnQgaW52ZW50aW9uIG9mIFJDVS4KKwlPdXRsaW5lIG9mIGFsZ29yaXRobSB0byB1bmxvYWQgbW9kdWxlcy4uLgorCS4KKwlBcHBlYXJlZCBvbiBuZXQtZGV2IG1haWxpbmcgbGlzdC4KK30KK30KKworQHVucHVibGlzaGVke1J1c3R5UnVzc2VsbDIwMDBiCissQXV0aG9yPSJSdXN0eSBSdXNzZWxsIgorLFRpdGxlPSJSZTogbW9kdWxhciBuZXQgZHJpdmVycyIKKyxtb250aD0iSnVuZSIKKyx5ZWFyPSIyMDAwIgorLGRheT0iMjQiCissbm90ZT0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vb3NzLnNnaS5jb20vcHJvamVjdHMvbmV0ZGV2L2FyY2hpdmUvMjAwMC0wNi9tc2cwMDI1NC5odG1sfQorW1ZpZXdlZCBBcHJpbCAxMCwgMjAwNl0iCissYW5ub3RhdGlvbj17CisJUHJvdG8tUkNVIHByb3Bvc2FsIGZyb20gUGhpbCBSdW1wZiBhbmQgUnVzdHkgUnVzc2VsbC4KKwkuCisJQXBwZWFyZWQgb24gbmV0LWRldiBtYWlsaW5nIGxpc3QuCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtNY0tlbm5leTAxYgorLEF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSBhbmQgRGlwYW5rYXIgU2FybWEiCissVGl0bGU9IlJlYWQtQ29weSBVcGRhdGUgTXV0dWFsIEV4Y2x1c2lvbiBpbiB7TGludXh9IgorLG1vbnRoPSJGZWJydWFyeSIKKyx5ZWFyPSIyMDAxIgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL2xzZS5zb3VyY2Vmb3JnZS5uZXQvbG9ja2luZy9yY3UvcmN1cGRhdGVfZG9jLmh0bWx9CitbVmlld2VkIE9jdG9iZXIgMTgsIDIwMDRdIgorLGFubm90YXRpb249eworCVByb3RvdHlwaWNhbCBMaW51eCBkb2N1bWVudGF0aW9uIGZvciBSQ1UuCit9Cit9CisKK0B0ZWNocmVwb3J0e1NsaW5nd2luZTAxCissYXV0aG9yPSJKb2huIEQuIFNsaW5nd2luZSBhbmQgUGF1bCBFLiBNY0tlbm5leSIKKyx0aXRsZT0iQXBwYXJhdHVzIGFuZCBNZXRob2QgZm9yIEFjaGlldmluZyBSZWR1Y2VkIE92ZXJoZWFkIE11dHVhbAorRXhjbHVzaW9uIGFuZCBNYWludGFpbmluZyBDb2hlcmVuY3kgaW4gYSBNdWx0aXByb2Nlc3NvciBTeXN0ZW0KK1V0aWxpemluZyBFeGVjdXRpb24gSGlzdG9yeSBhbmQgVGhyZWFkIE1vbml0b3JpbmciCissaW5zdGl0dXRpb249IlVTIFBhdGVudCBhbmQgVHJhZGVtYXJrIE9mZmljZSIKKyxhZGRyZXNzPSJXYXNoaW5ndG9uLCBEQyIKKyx5ZWFyPSIyMDAxIgorLG51bWJlcj0iVVMgUGF0ZW50IDYsMjE5LDY5MCIKKyxtb250aD0iQXByaWwiCissYW5ub3RhdGlvbj17CisJJ0NoYW5nZSBpbiBtb2RlJyBhc3BlY3Qgb2YgUkNVLiAgQ2FuIGJlIHRob3VnaHQgb2YgYXMgYSBsYXp5IGJhcnJpZXIuCit9Cit9CisKK0BDb25mZXJlbmNle01jS2VubmV5MDFhCissQXV0aG9yPSJQYXVsIEUuIE1jS2VubmV5IGFuZCBKb25hdGhhbiBBcHBhdm9vIGFuZCBBbmRpIEtsZWVuIGFuZAorT3JyYW4gS3JpZWdlciBhbmQgUnVzdHkgUnVzc2VsbCBhbmQgRGlwYW5rYXIgU2FybWEgYW5kIE1hbmVlc2ggU29uaSIKKyxUaXRsZT0iUmVhZC1Db3B5IFVwZGF0ZSIKKyxCb29rdGl0bGU9IntPdHRhd2EgTGludXggU3ltcG9zaXVtfSIKKyxNb250aD0iSnVseSIKKyxZZWFyPSIyMDAxIgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL3d3dy5saW51eHN5bXBvc2l1bS5vcmcvMjAwMS9hYnN0cmFjdHMvcmVhZGNvcHkucGhwfQorXHVybHtodHRwOi8vd3d3LnJkcm9wLmNvbS91c2Vycy9wYXVsbWNrL1JDVS9yY2xvY2tfT0xTLjIwMDEuMDUuMDFjLnBkZn0KK1tWaWV3ZWQgSnVuZSAyMywgMjAwNF0iCissYW5ub3RhdGlvbj17CisJRGVzY3JpYmVkIFJDVSwgYW5kIHByZXNlbnRlZCBzb21lIHBhdGNoZXMgaW1wbGVtZW50aW5nIGFuZCB1c2luZworCWl0IGluIHRoZSBMaW51eCBrZXJuZWwuCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtNY0tlbm5leTAxZgorLEF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSIKKyxUaXRsZT0ie1JGQzp9IHBhdGNoIHRvIGFsbG93IGxvY2stZnJlZSB0cmF2ZXJzYWwgb2YgbGlzdHMgd2l0aCBpbnNlcnRpb24iCissbW9udGg9Ik9jdG9iZXIiCisseWVhcj0iMjAwMSIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9tYXJjLnRoZWFpbXNncm91cC5jb20vP2w9bGludXgta2VybmVsJm09MTAwMjU5MjY2MzE2NDU2Jnc9Mn0KK1tWaWV3ZWQgSnVuZSAyMywgMjAwNF0iCissYW5ub3RhdGlvbj17CisJTWVtb3J5LWJhcnJpZXIgYW5kIEFscGhhIHRocmVhZC4gIDEwMCBtZXNzYWdlcywgbm90IHRvbyBiYWQuLi4KK30KK30KKworQHVucHVibGlzaGVke1NwcmF1bDAxCissQXV0aG9yPSJNYW5mcmVkIFNwcmF1bCIKKyxUaXRsZT0iUmU6IHtSRkM6fSBwYXRjaCB0byBhbGxvdyBsb2NrLWZyZWUgdHJhdmVyc2FsIG9mIGxpc3RzIHdpdGggaW5zZXJ0aW9uIgorLG1vbnRoPSJPY3RvYmVyIgorLHllYXI9IjIwMDEiCissbm90ZT0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vbWFyYy50aGVhaW1zZ3JvdXAuY29tLz9sPWxpbnV4LWtlcm5lbCZtPTEwMDI2NDY3NTAxMjg2NyZ3PTJ9CitbVmlld2VkIEp1bmUgMjMsIDIwMDRdIgorLGFubm90YXRpb249eworCVN1Z2dlc3RlZCBidXJ5aW5nIG1lbW9yeSBiYXJyaWVycyBpbiBMaW51eCdzIGxpc3QtbWFuaXB1bGF0aW9uCisJcHJpbWl0aXZlcy4KK30KK30KKworQHVucHVibGlzaGVke0xpbnVzVG9ydmFsZHMyMDAxYQorLEF1dGhvcj0iTGludXMgVG9ydmFsZHMiCissVGl0bGU9IntSZTp9IHtbTHNlLXRlY2hdfSB7UmU6fSB7UkZDOn0gcGF0Y2ggdG8gYWxsb3cgbG9jay1mcmVlIHRyYXZlcnNhbCBvZiBsaXN0cyB3aXRoIGluc2VydGlvbiIKKyxtb250aD0iT2N0b2JlciIKKyx5ZWFyPSIyMDAxIgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL2xrbWwub3JnL2xrbWwvMjAwMS8xMC8xMy8xMDV9CitbVmlld2VkIEF1Z3VzdCAyMSwgMjAwNF0iCissYW5ub3RhdGlvbj17Cit9Cit9CisKK0B1bnB1Ymxpc2hlZHtCbGFuY2hhcmQwMmEKKyxBdXRob3I9IkFudG9uIEJsYW5jaGFyZCIKKyxUaXRsZT0ic29tZSBSQ1UgZGNhY2hlIGFuZCByYXRjYWNoZSByZXN1bHRzIgorLG1vbnRoPSJNYXJjaCIKKyx5ZWFyPSIyMDAyIgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL21hcmMudGhlYWltc2dyb3VwLmNvbS8/bD1saW51eC1rZXJuZWwmbT0xMDE2MzcxMDc0MTI5NzImdz0yfQorW1ZpZXdlZCBPY3RvYmVyIDE4LCAyMDA0XSIKK30KKworQGNvbmZlcmVuY2V7TWljaGFlbDAyYgorLGF1dGhvcj0iTWFnZWQgTS4gTWljaGFlbCIKKyx0aXRsZT0iSGlnaCBQZXJmb3JtYW5jZSBEeW5hbWljIExvY2stRnJlZSBIYXNoIFRhYmxlcyBhbmQgTGlzdC1CYXNlZCBTZXRzIgorLFllYXI9IjIwMDIiCissTW9udGg9IkF1Z3VzdCIKKyxib29rdGl0bGU9IntQcm9jZWVkaW5ncyBvZiB0aGUgMTRcdGV4dHN1cGVyc2NyaXB0e3RofSBBbm51YWwgQUNNCitTeW1wb3NpdW0gb24gUGFyYWxsZWwKK0FsZ29yaXRobXMgYW5kIEFyY2hpdGVjdHVyZX0iCisscGFnZXM9IjczLTgyIgorLGFubm90YXRpb249eworTGlrZSB0aGUgdGl0bGUgc2F5cy4uLgorfQorfQorCitAQ29uZmVyZW5jZXtMaW5kZXIwMmEKKyxBdXRob3I9Ikhhbm5hIExpbmRlciBhbmQgRGlwYW5rYXIgU2FybWEgYW5kIE1hbmVlc2ggU29uaSIKKyxUaXRsZT0iU2NhbGFiaWxpdHkgb2YgdGhlIERpcmVjdG9yeSBFbnRyeSBDYWNoZSIKKyxCb29rdGl0bGU9IntPdHRhd2EgTGludXggU3ltcG9zaXVtfSIKKyxNb250aD0iSnVuZSIKKyxZZWFyPSIyMDAyIgorLHBhZ2VzPSIyODktMzAwIgorLGFubm90YXRpb249eworCU1lYXN1cmVkIHNjYWxhYmlsaXR5IG9mIExpbnV4IDIuNCBrZXJuZWwncyBkaXJlY3RvcnktZW50cnkgY2FjaGUKKwkoZGNhY2hlKSwgYW5kIG1lYXN1cmVkIHNvbWUgc2NhbGFiaWxpdHkgZW5oYW5jZW1lbnRzLgorfQorfQorCitAQ29uZmVyZW5jZXtNY0tlbm5leTAyYQorLEF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSBhbmQgRGlwYW5rYXIgU2FybWEgYW5kCitBbmRyZWEgQXJjYW5nZWxpIGFuZCBBbmRpIEtsZWVuIGFuZCBPcnJhbiBLcmllZ2VyIGFuZCBSdXN0eSBSdXNzZWxsIgorLFRpdGxlPSJSZWFkLUNvcHkgVXBkYXRlIgorLEJvb2t0aXRsZT0ie090dGF3YSBMaW51eCBTeW1wb3NpdW19IgorLE1vbnRoPSJKdW5lIgorLFllYXI9IjIwMDIiCisscGFnZXM9IjMzOC0zNjciCissbm90ZT0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vd3d3LmxpbnV4Lm9yZy51ay9+YWpoL29sczIwMDJfcHJvY2VlZGluZ3MucGRmLmd6fQorW1ZpZXdlZCBKdW5lIDIzLCAyMDA0XSIKKyxhbm5vdGF0aW9uPXsKKwlQcmVzZW50ZWQgYW5kIGNvbXBhcmVkIGEgbnVtYmVyIG9mIFJDVSBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZQorCUxpbnV4IGtlcm5lbC4KK30KK30KKworQHVucHVibGlzaGVke1Nhcm1hMDJhCissQXV0aG9yPSJEaXBhbmthciBTYXJtYSIKKyxUaXRsZT0ic3BlY3dlYjk5OiBkY2FjaGUgc2NhbGFiaWxpdHkgcmVzdWx0cyIKKyxtb250aD0iSnVseSIKKyx5ZWFyPSIyMDAyIgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL21hcmMudGhlYWltc2dyb3VwLmNvbS8/bD1saW51eC1rZXJuZWwmbT0xMDI2NDU3Njc5MTQyMTImdz0yfQorW1ZpZXdlZCBKdW5lIDIzLCAyMDA0XSIKKyxhbm5vdGF0aW9uPXsKKwlDb21wYXJlIGZhc3R3YWxrIGFuZCBSQ1UgZm9yIGRjYWNoZS4gIFJDVSB3b24uCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtCYXJiaWVyaTAyCissQXV0aG9yPSJMdWNhIEJhcmJpZXJpIgorLFRpdGxlPSJSZToge1tQQVRDSF19IEluaXRpYWwgc3VwcG9ydCBmb3Igc3RydWN0IHt2ZnNcX2NyZWR9IgorLG1vbnRoPSJBdWd1c3QiCisseWVhcj0iMjAwMiIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9tYXJjLnRoZWFpbXNncm91cC5jb20vP2w9bGludXgta2VybmVsJm09MTAzMDgyMDUwNjIxMjQxJnc9Mn0KK1tWaWV3ZWQ6IEp1bmUgMjMsIDIwMDRdIgorLGFubm90YXRpb249eworCVN1Z2dlc3RlZCBSQ1UgZm9yIHZmc1xfc2hhcmVkXF9jcmVkLgorfQorfQorCitAY29uZmVyZW5jZXtNaWNoYWVsMDJhCissYXV0aG9yPSJNYWdlZCBNLiBNaWNoYWVsIgorLHRpdGxlPSJTYWZlIE1lbW9yeSBSZWNsYW1hdGlvbiBmb3IgRHluYW1pYyBMb2NrLUZyZWUgT2JqZWN0cyBVc2luZyBBdG9taWMKK1JlYWRzIGFuZCBXcml0ZXMiCissWWVhcj0iMjAwMiIKKyxNb250aD0iQXVndXN0IgorLGJvb2t0aXRsZT0ie1Byb2NlZWRpbmdzIG9mIHRoZSAyMVx0ZXh0c3VwZXJzY3JpcHR7c3R9IEFubnVhbCBBQ00KK1N5bXBvc2l1bSBvbiBQcmluY2lwbGVzIG9mIERpc3RyaWJ1dGVkIENvbXB1dGluZ30iCisscGFnZXM9IjIxLTMwIgorLGFubm90YXRpb249eworCUVhY2ggdGhyZWFkIGtlZXBzIGFuIGFycmF5IG9mIHBvaW50ZXJzIHRvIGl0ZW1zIHRoYXQgaXQgaXMKKwljdXJyZW50bHkgcmVmZXJlbmNpbmcuCVNvcnQgb2YgYW4gaW5zaWRlLW91dCBnYXJiYWdlIGNvbGxlY3Rpb24KKwltZWNoYW5pc20sIGJ1dCBvbmUgdGhhdCByZXF1aXJlcyB0aGUgYWNjZXNzaW5nIGNvZGUgdG8gZXhwbGljaXRseQorCXN0YXRlIGl0cyBuZWVkcy4gIEFsc28gcmVxdWlyZXMgcmVhZC1zaWRlIG1lbW9yeSBiYXJyaWVycyBvbgorCW1vc3QgYXJjaGl0ZWN0dXJlcy4KK30KK30KKworQHVucHVibGlzaGVke0RpY2tpbnMwMmEKKyxhdXRob3I9Ikh1Z2ggRGlja2lucyIKKyx0aXRsZT0iVXNlIFJDVSBmb3IgU3lzdGVtLVYgSVBDIgorLHllYXI9IjIwMDIiCissbW9udGg9Ik9jdG9iZXIiCissbm90ZT0icHJpdmF0ZSBjb21tdW5pY2F0aW9uIgorfQorCitASW5Qcm9jZWVkaW5nc3tIZXJsaWh5TE0wMgorLGF1dGhvcj17TWF1cmljZSBIZXJsaWh5IGFuZCBWaWN0b3IgTHVjaGFuZ2NvIGFuZCBNYXJrIE1vaXJ9CissdGl0bGU9IlRoZSBSZXBlYXQgT2ZmZW5kZXIgUHJvYmxlbTogQSBNZWNoYW5pc20gZm9yIFN1cHBvcnRpbmcgRHluYW1pYy1TaXplZCwKK0xvY2stRnJlZSBEYXRhIFN0cnVjdHVyZXMiCissYm9va3RpdGxlPXtQcm9jZWVkaW5ncyBvZiAxNlx0ZXh0c3VwZXJzY3JpcHR7dGh9IEludGVybmF0aW9uYWwKK1N5bXBvc2l1bSBvbiBEaXN0cmlidXRlZCBDb21wdXRpbmd9CisseWVhcj0yMDAyCissbW9udGg9Ik9jdG9iZXIiCisscGFnZXM9IjMzOS0zNTMiCit9CisKK0B1bnB1Ymxpc2hlZHtTYXJtYTAyYgorLEF1dGhvcj0iRGlwYW5rYXIgU2FybWEiCissVGl0bGU9IlNvbWUgZGNhY2hlXF9yY3UgYmVuY2htYXJrIG51bWJlcnMiCissbW9udGg9Ik9jdG9iZXIiCisseWVhcj0iMjAwMiIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9tYXJjLnRoZWFpbXNncm91cC5jb20vP2w9bGludXgta2VybmVsJm09MTAzNDYyMDc1NDE2NjM4Jnc9Mn0KK1tWaWV3ZWQgSnVuZSAyMywgMjAwNF0iCissYW5ub3RhdGlvbj17CisJUGVyZm9ybWFuY2Ugb2YgZGNhY2hlIFJDVSBvbiBrZXJuYmVuY2ggZm9yIDE2eCBOVU1BLVEgYW5kIDF4LAorCTJ4LCBhbmQgNHggc3lzdGVtcy4gIFJDVSBkb2VzIG5vIGhhcm0sIGFuZCBoZWxwcyBvbiAxNnguCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtNaW5nbWluZ0NhbzIwMDJJUENSQ1UKKyxBdXRob3I9Ik1pbmdtaW5nIENhbyIKKyxUaXRsZT0iW1BBVENIXXVwZGF0ZWQgaXBjIGxvY2sgcGF0Y2giCissbW9udGg9Ik9jdG9iZXIiCisseWVhcj0iMjAwMiIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHBzOi8vbGttbC5vcmcvbGttbC8yMDAyLzEwLzI0LzI2Mn0KK1tWaWV3ZWQgRmVicnVhcnkgMTUsIDIwMTRdIgorLGFubm90YXRpb249eworCU1pbmdtaW5nIENhbydzIHBhdGNoIHRvIGludHJvZHVjZSBSQ1UgdG8gU3lzViBJUEMuCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtMaW51c1RvcnZhbGRzMjAwM2EKKyxBdXRob3I9IkxpbnVzIFRvcnZhbGRzIgorLFRpdGxlPSJSZToge1tQQVRDSF19IHNtYWxsIGZpeGVzIGluIGJybG9jay5oIgorLG1vbnRoPSJNYXJjaCIKKyx5ZWFyPSIyMDAzIgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL2xrbWwub3JnL2xrbWwvMjAwMy8zLzkvMjA1fQorW1ZpZXdlZCBNYXJjaCAxMywgMjAwNl0iCissYW5ub3RhdGlvbj17CisJTGludXMgc3VnZ2VzdHMgcmVwbGFjaW5nIGJybG9jayB3aXRoIFJDVSBhbmQvb3Igc2VxbG9ja3M6CisJLgorCSdJdCdzIGVudGlyZWx5IHBvc3NpYmxlIHRoYXQgdGhlIGN1cnJlbnQgdXNlciBjb3VsZCBiZSByZXBsYWNlZAorCWJ5IFJDVSBhbmQvb3Igc2VxbG9ja3MsIGFuZCB3ZSBjb3VsZCBnZXQgcmlkIG9mIGJybG9ja3MgZW50aXJlbHkuJworCS4KKwlTdGV2ZSBIZW1taW5nZXIgcmVzcG9uZHMgYnkgcmVwbGFjaW5nIHRoZW0gd2l0aCBSQ1UuCit9Cit9CisKK0BhcnRpY2xle0FwcGF2b28wM2EKKyxhdXRob3I9IkouIEFwcGF2b28gYW5kIEsuIEh1aSBhbmQgQy4gQS4gTi4gU291bGVzIGFuZCBSLiBXLiBXaXNuaWV3c2tpIGFuZAorRC4gTS4ge0RhIFNpbHZhfSBhbmQgTy4gS3JpZWdlciBhbmQgTS4gQS4gQXVzbGFuZGVyIGFuZCBELiBKLiBFZGVsc29obiBhbmQKK0IuIEdhbXNhIGFuZCBHLiBSLiBHYW5nZXIgYW5kIFAuIE1jS2VubmV5IGFuZCBNLiBPc3Ryb3dza2kgYW5kCitCLiBSb3NlbmJ1cmcgYW5kIE0uIFN0dW1tIGFuZCBKLiBYZW5pZGlzIgorLHRpdGxlPSJFbmFibGluZyBBdXRvbm9taWMgQmVoYXZpb3IgaW4gU3lzdGVtcyBTb2Z0d2FyZSBXaXRoIEhvdCBTd2FwcGluZyIKKyxZZWFyPSIyMDAzIgorLE1vbnRoPSJKYW51YXJ5IgorLGpvdXJuYWw9IklCTSBTeXN0ZW1zIEpvdXJuYWwiCissdm9sdW1lPSI0MiIKKyxudW1iZXI9IjEiCisscGFnZXM9IjYwLTc2IgorLGFubm90YXRpb249eworCVVzZSBvZiBSQ1UgdG8gZW5hYmxlIGhvdC1zd2FwcGluZyBmb3IgYXV0b25vbWljIGJlaGF2aW9yIGluIEs0Mi4KK30KK30KKworQHVucHVibGlzaGVke1NlaWdoMDMKKyxhdXRob3I9Ikpvc2VwaCBXLiB7U2VpZ2ggSUl9IgorLHRpdGxlPSJSZWFkIENvcHkgVXBkYXRlIgorLFllYXI9IjIwMDMiCissTW9udGg9Ik1hcmNoIgorLG5vdGU9ImVtYWlsIGNvcnJlc3BvbmRlbmNlIgorLGFubm90YXRpb249eworCURlc2NyaWJlZCB0aGUgcmVsYXRpb25zaGlwIG9mIHRoZSBWTS9YQSBwYXNzaXZlIHNlcmlhbGl6YXRpb24gdG8gUkNVLgorfQorfQorCitAQ29uZmVyZW5jZXtBcmNhbmdlbGkwMworLEF1dGhvcj0iQW5kcmVhIEFyY2FuZ2VsaSBhbmQgTWluZ21pbmcgQ2FvIGFuZCBQYXVsIEUuIE1jS2VubmV5IGFuZAorRGlwYW5rYXIgU2FybWEiCissVGl0bGU9IlVzaW5nIFJlYWQtQ29weSBVcGRhdGUgVGVjaG5pcXVlcyBmb3Ige1N5c3RlbSBWIElQQ30gaW4gdGhlCit7TGludXh9IDIuNSBLZXJuZWwiCissQm9va3RpdGxlPSJQcm9jZWVkaW5ncyBvZiB0aGUgMjAwMyBVU0VOSVggQW5udWFsIFRlY2huaWNhbCBDb25mZXJlbmNlCisoRlJFRU5JWCBUcmFjaykiCissUHVibGlzaGVyPSJVU0VOSVggQXNzb2NpYXRpb24iCisseWVhcj0iMjAwMyIKKyxtb250aD0iSnVuZSIKKyxwYWdlcz0iMjk3LTMxMCIKKyxhbm5vdGF0aW9uPXsKKwlDb21wYXJlZCB1cGRhdGVkIFJDVSBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZSBMaW51eCBrZXJuZWwsIGFuZAorCWRlc2NyaWJlZCBTeXN0ZW0gViBJUEMgdXNlIG9mIFJDVSwgaW5jbHVkaW5nIG9yZGVyLW9mLW1hZ25pdHVkZQorCXBlcmZvcm1hbmNlIGltcHJvdmVtZW50cy4KKwlodHRwOi8vd3d3LnJkcm9wLmNvbS91c2Vycy9wYXVsbWNrL1JDVS9yY3UuRlJFRU5JWC4yMDAzLjA2LjE0LnBkZgorfQorfQorCitAQ29uZmVyZW5jZXtTb3VsZXMwM2EKKyxBdXRob3I9IkNyYWlnIEEuIE4uIFNvdWxlcyBhbmQgSm9uYXRoYW4gQXBwYXZvbyBhbmQgS2V2aW4gSHVpIGFuZAorRGlsbWEge0RhIFNpbHZhfSBhbmQgR3JlZ29yeSBSLiBHYW5nZXIgYW5kIE9ycmFuIEtyaWVnZXIgYW5kCitNaWNoYWVsIFN0dW1tIGFuZCBSb2JlcnQgVy4gV2lzbmlld3NraSBhbmQgTWFyYyBBdXNsYW5kZXIgYW5kCitNaWNoYWwgT3N0cm93c2tpIGFuZCBCcnlhbiBSb3NlbmJ1cmcgYW5kIEppbWkgWGVuaWRpcyIKKyxUaXRsZT0iU3lzdGVtIFN1cHBvcnQgZm9yIE9ubGluZSBSZWNvbmZpZ3VyYXRpb24iCissQm9va3RpdGxlPSJQcm9jZWVkaW5ncyBvZiB0aGUgMjAwMyBVU0VOSVggQW5udWFsIFRlY2huaWNhbCBDb25mZXJlbmNlIgorLFB1Ymxpc2hlcj0iVVNFTklYIEFzc29jaWF0aW9uIgorLHllYXI9IjIwMDMiCissbW9udGg9Ikp1bmUiCisscGFnZXM9IjE0MS0xNTQiCit9CisKK0BhcnRpY2xle01jS2VubmV5MDNhCissYXV0aG9yPSJQYXVsIEUuIE1jS2VubmV5IgorLHRpdGxlPSJVc2luZyB7UkNVfSBpbiB0aGUge0xpbnV4fSAyLjUgS2VybmVsIgorLFllYXI9IjIwMDMiCissTW9udGg9Ik9jdG9iZXIiCissam91cm5hbD0iTGludXggSm91cm5hbCIKKyx2b2x1bWU9IjEiCissbnVtYmVyPSIxMTQiCisscGFnZXM9IjE4LTI2IgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL3d3dy5saW51eGpvdXJuYWwuY29tL2FydGljbGUvNjk5M30KK1tWaWV3ZWQgTm92ZW1iZXIgMTQsIDIwMDddIgorLGFubm90YXRpb249eworCVJlYWRlci1mcmllbmRseSBpbnRybyB0byBSQ1UsIHdpdGggdGhlIGluZmFtb3VzIG9sZC1tYW4tYW5kLWJyYXQKKwljYXJ0b29uLgorfQorfQorCitAdW5wdWJsaXNoZWR7U2FybWEwM2EKKyxBdXRob3I9IkRpcGFua2FyIFNhcm1hIgorLFRpdGxlPSJSQ1UgbG93IGxhdGVuY3kgcGF0Y2hlcyIKKyxtb250aD0iRGVjZW1iZXIiCisseWVhcj0iMjAwMyIKKyxub3RlPSJNZXNzYWdlIElEOiAyMDAzMTIyMjE4MDExNC5HQTIyNDhAaW4uaWJtLmNvbSIKKyxhbm5vdGF0aW9uPXsKKwlkaXBhbmthci9jdC4yMDA0LjAzLjI3L1JDVWxsLjIwMDMuMTIuMjIucGF0Y2gKK30KK30KKworQHRlY2hyZXBvcnR7RnJpZWRiZXJnMDNhCissYXV0aG9yPSJTdHVhcnQgQS4gRnJpZWRiZXJnIgorLHRpdGxlPSJMb2NrLUZyZWUgV2lsZCBDYXJkIFNlYXJjaCBEYXRhIFN0cnVjdHVyZSBhbmQgTWV0aG9kIgorLGluc3RpdHV0aW9uPSJVUyBQYXRlbnQgYW5kIFRyYWRlbWFyayBPZmZpY2UiCissYWRkcmVzcz0iV2FzaGluZ3RvbiwgREMiCisseWVhcj0iMjAwMyIKKyxudW1iZXI9IlVTIFBhdGVudCA2LDY2MiwxODQiCissbW9udGg9IkRlY2VtYmVyIgorLHBhZ2VzPSIxMTIiCissYW5ub3RhdGlvbj17CisJQXBwbGllcyBSQ1UgdG8gYSB3aWxkY2FyZC1zZWFyY2ggUGF0cmljaWEgdHJlZSBpbiBvcmRlciB0byBwZXJtaXQKKwlzeW5jaHJvbml6YXRpb24tZnJlZSBsb29rdXAuICBSQ1UgaXMgdXNlZCB0byByZXRhaW4gcmVtb3ZlZCBub2RlcworCWZvciBhIGdyYWNlIHBlcmlvZCBiZWZvcmUgZnJlZWluZyB0aGVtLgorfQorfQorCitAYXJ0aWNsZXtNY0tlbm5leTA0YQorLGF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSBhbmQgRGlwYW5rYXIgU2FybWEgYW5kIE1hbmVlc2ggU29uaSIKKyx0aXRsZT0iU2NhbGluZyBkY2FjaGUgd2l0aCB7UkNVfSIKKyxZZWFyPSIyMDA0IgorLE1vbnRoPSJKYW51YXJ5IgorLGpvdXJuYWw9IkxpbnV4IEpvdXJuYWwiCissdm9sdW1lPSIxIgorLG51bWJlcj0iMTE4IgorLHBhZ2VzPSIzOC00NiIKKyxhbm5vdGF0aW9uPXsKKwlSZWFkZXIgZnJpZW5kbHkgaW50cm8gdG8gZGNhY2hlIGFuZCBSQ1UuCisJaHR0cDovL3d3dy5saW51eGpvdXJuYWwuY29tL25vZGUvNzEyNAorCVtWaWV3ZWQgRGVjZW1iZXIgMjYsIDIwMTBdCit9Cit9CisKK0BDb25mZXJlbmNle01jS2VubmV5MDRiCissQXV0aG9yPSJQYXVsIEUuIE1jS2VubmV5IgorLFRpdGxlPSJ7UkNVfSB2cy4gTG9ja2luZyBQZXJmb3JtYW5jZSBvbiBEaWZmZXJlbnQge0NQVXN9IgorLEJvb2t0aXRsZT0ie2xpbnV4LmNvbmYuYXV9IgorLE1vbnRoPSJKYW51YXJ5IgorLFllYXI9IjIwMDQiCissQWRkcmVzcz0iQWRlbGFpZGUsIEF1c3RyYWxpYSIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly93d3cubGludXgub3JnLmF1L2NvbmYvMjAwNC9hYnN0cmFjdHMuaHRtbCM5MH0KK1x1cmx7aHR0cDovL3d3dy5yZHJvcC5jb20vdXNlcnMvcGF1bG1jay9SQ1UvbG9ja3BlcmYuMjAwNC4wMS4xN2EucGRmfQorW1ZpZXdlZCBKdW5lIDIzLCAyMDA0XSIKKyxhbm5vdGF0aW9uPXsKKwlDb21wYXJlcyBwZXJmb3JtYW5jZSBvZiBSQ1UgdG8gdGhhdCBvZiBvdGhlciBsb2NraW5nIHByaW1pdGl2ZXMKKwlvdmVyIGEgbnVtYmVyIG9mIENQVXMgKHg4NiwgT3B0ZXJvbiwgSXRhbml1bSwgYW5kIFBQQykuCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtTYXJtYTA0YQorLEF1dGhvcj0iRGlwYW5rYXIgU2FybWEiCissVGl0bGU9IntbUEFUQ0hdfSB7UkNVfSBmb3IgbG93IGxhdGVuY3kgKGV4cGVyaW1lbnRhbCkiCissbW9udGg9Ik1hcmNoIgorLHllYXI9IjIwMDQiCissbm90ZT0iXHVybHtodHRwOi8vbWFyYy50aGVhaW1zZ3JvdXAuY29tLz9sPWxpbnV4LWtlcm5lbCZtPTEwODAwMzc0NjQwMjg5MiZ3PTJ9IgorLGFubm90YXRpb249eworCUhlYWQgb2YgdGhyZWFkOiBkaXBhbmthci8yMDA0LjAzLjIzL3JjdS1sb3ctbGF0LjEucGF0Y2gKK30KK30KKworQHVucHVibGlzaGVke1Nhcm1hMDRiCissQXV0aG9yPSJEaXBhbmthciBTYXJtYSIKKyxUaXRsZT0iUmU6IHtbUEFUQ0hdfSB7UkNVfSBmb3IgbG93IGxhdGVuY3kgKGV4cGVyaW1lbnRhbCkiCissbW9udGg9Ik1hcmNoIgorLHllYXI9IjIwMDQiCissbm90ZT0iXHVybHtodHRwOi8vbWFyYy50aGVhaW1zZ3JvdXAuY29tLz9sPWxpbnV4LWtlcm5lbCZtPTEwODAxNjQ3NDgyOTU0NiZ3PTJ9IgorLGFubm90YXRpb249eworCWRpcGFua2FyL3JjdXRoLjIwMDQuMDMuMjQvcmN1LXRocm90dGxlLnBhdGNoCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtTcHJhdWwwNGEKKyxBdXRob3I9Ik1hbmZyZWQgU3ByYXVsIgorLFRpdGxlPSJbUkZDXSAwLzUgcmN1IGxvY2sgdXBkYXRlIgorLG1vbnRoPSJNYXkiCisseWVhcj0iMjAwNCIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9tYXJjLnRoZWFpbXNncm91cC5jb20vP2w9bGludXgta2VybmVsJm09MTA4NTQ2NDA3NzI2NjAyJnc9Mn0KK1tWaWV3ZWQgSnVuZSAyMywgMjAwNF0iCissYW5ub3RhdGlvbj17CisJSGllcmFyY2hpY2FsLWJpdG1hcCBwYXRjaCBmb3IgUkNVIGluZnJhc3RydWN0dXJlLgorfQorfQorCitAdW5wdWJsaXNoZWR7U3RlaW5lcjA0YQorLEF1dGhvcj0iSmFjayBTdGVpbmVyIgorLFRpdGxlPSJSZTogW0xzZS10ZWNoXSBbUkZDLCBQQVRDSF0gMS81IHJjdSBsb2NrIHVwZGF0ZToKK0FkZCBwZXItY3B1IGJhdGNoIGNvdW50ZXIiCissbW9udGg9Ik1heSIKKyx5ZWFyPSIyMDA0IgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL21hcmMudGhlYWltc2dyb3VwLmNvbS8/bD1saW51eC1rZXJuZWwmbT0xMDg1NTE3NjQ1MTUzMzImdz0yfQorW1ZpZXdlZCBKdW5lIDIzLCAyMDA0XSIKKyxhbm5vdGF0aW9uPXsKKwlSQ1UgcnVucyByZWFzb25hYmx5IG9uIGEgNTEyLUNQVSBTR0kgdXNpbmcgTWFuZnJlZCBTcHJhdWwncyBwYXRjaGVzLAorCXdoaWNoIG1heSBiZSBmb3VuZCBhdDoKKwlodHRwczovL2xrbWwub3JnL2xrbWwvMjAwNC81LzIwLzQ5IChzcGxpdCB2YXJzIGludG8gY2FjaGVsaW5lcykKKwlodHRwczovL2xrbWwub3JnL2xrbWwvMjAwNC81LzIyLzExNCAoY3B1X3F1aWV0KCkgcGF0Y2gpCisJaHR0cHM6Ly9sa21sLm9yZy9sa21sLzIwMDQvNS8yNS8yNCAoMC81KQorCWh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDA0LzUvMjUvMjMgKDEvNSkKKwkJaHR0cHM6Ly9sa21sLm9yZy9sa21sLzIwMDQvNS8yNS8yNjUgKHdvcmtzIGZvciBKYWNrKQorCWh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDA0LzUvMjUvMjAgKDIvNSkKKwlodHRwczovL2xrbWwub3JnL2xrbWwvMjAwNC81LzI1LzIyICgzLzUpCisJaHR0cHM6Ly9sa21sLm9yZy9sa21sLzIwMDQvNS8yNS8xOSAoNC81KQorCWh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDA0LzUvMjUvMjEgKDUvNSkKK30KK30KKworQENvbmZlcmVuY2V7U2FybWEwNGMKKyxBdXRob3I9IkRpcGFua2FyIFNhcm1hIGFuZCBQYXVsIEUuIE1jS2VubmV5IgorLFRpdGxlPSJNYWtpbmcge1JDVX0gU2FmZSBmb3IgRGVlcCBTdWItTWlsbGlzZWNvbmQgUmVzcG9uc2UKK1JlYWx0aW1lIEFwcGxpY2F0aW9ucyIKKyxCb29rdGl0bGU9IlByb2NlZWRpbmdzIG9mIHRoZSAyMDA0IFVTRU5JWCBBbm51YWwgVGVjaG5pY2FsIENvbmZlcmVuY2UKKyhGUkVFTklYIFRyYWNrKSIKKyxQdWJsaXNoZXI9IlVTRU5JWCBBc3NvY2lhdGlvbiIKKyx5ZWFyPSIyMDA0IgorLG1vbnRoPSJKdW5lIgorLHBhZ2VzPSIxODItMTkxIgorLGFubm90YXRpb249eworCURlc2NyaWJlcyBhbmQgY29tcGFyZXMgYSBudW1iZXIgb2YgbW9kaWZpY2F0aW9ucyB0byB0aGUgTGludXggUkNVCisJaW1wbGVtZW50YXRpb24gdGhhdCBtYWtlIGl0IGZyaWVuZGx5IHRvIHJlYWx0aW1lIGFwcGxpY2F0aW9ucy4KKwlodHRwczovL3d3dy51c2VuaXgub3JnL2NvbmZlcmVuY2UvMjAwNC11c2VuaXgtYW5udWFsLXRlY2huaWNhbC1jb25mZXJlbmNlL21ha2luZy1yY3Utc2FmZS1kZWVwLXN1Yi1taWxsaXNlY29uZC1yZXNwb25zZQorCVtWaWV3ZWQgSnVseSAyNiwgMjAxMl0KK30KK30KKworQGFydGljbGV7TWFnZWRNaWNoYWVsMDRhCissYXV0aG9yPSJNYWdlZCBNLiBNaWNoYWVsIgorLHRpdGxlPSJIYXphcmQgUG9pbnRlcnM6IFNhZmUgTWVtb3J5IFJlY2xhbWF0aW9uIGZvciBMb2NrLUZyZWUgT2JqZWN0cyIKKyxZZWFyPSIyMDA0IgorLE1vbnRoPSJKdW5lIgorLGpvdXJuYWw9IklFRUUgVHJhbnNhY3Rpb25zIG9uIFBhcmFsbGVsIGFuZCBEaXN0cmlidXRlZCBTeXN0ZW1zIgorLHZvbHVtZT0iMTUiCissbnVtYmVyPSI2IgorLHBhZ2VzPSI0OTEtNTA0IgorLHVybD0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vd3d3LnJlc2VhcmNoLmlibS5jb20vcGVvcGxlL20vbWljaGFlbC9pZWVldHBkcy0yMDA0LnBkZn0KK1tWaWV3ZWQgTWFyY2ggMSwgMjAwNV0iCissYW5ub3RhdGlvbj17CisJTmV3IGNhbm9uaWNhbCBoYXphcmQtcG9pbnRlciBjaXRhdGlvbi4KK30KK30KKworQHBoZHRoZXNpc3tQYXVsRWR3YXJkTWNLZW5uZXlQaEQKKyxhdXRob3I9IlBhdWwgRS4gTWNLZW5uZXkiCissdGl0bGU9IkV4cGxvaXRpbmcgRGVmZXJyZWQgRGVzdHJ1Y3Rpb246CitBbiBBbmFseXNpcyBvZiBSZWFkLUNvcHktVXBkYXRlIFRlY2huaXF1ZXMKK2luIE9wZXJhdGluZyBTeXN0ZW0gS2VybmVscyIKKyxzY2hvb2w9Ik9HSSBTY2hvb2wgb2YgU2NpZW5jZSBhbmQgRW5naW5lZXJpbmcgYXQKK09yZWdvbiBIZWFsdGggYW5kIFNjaWVuY2VzIFVuaXZlcnNpdHkiCisseWVhcj0iMjAwNCIKKyxhbm5vdGF0aW9uPXsKKwlEZXNjcmliZXMgUkNVIGltcGxlbWVudGF0aW9ucyBhbmQgcHJlc2VudHMgZGVzaWduIHBhdHRlcm5zCisJY29ycmVzcG9uZGluZyB0byBjb21tb24gdXNlcyBvZiBSQ1UgaW4gc2V2ZXJhbCBvcGVyYXRpbmctc3lzdGVtCisJa2VybmVscy4KKwlodHRwOi8vd3d3LnJkcm9wLmNvbS91c2Vycy9wYXVsbWNrL1JDVS9SQ1VkaXNzZXJ0YXRpb24uMjAwNC4wNy4xNGUxLnBkZgorCVtWaWV3ZWQgT2N0b2JlciAxNSwgMjAwNF0KK30KK30KKworQHVucHVibGlzaGVke1BhdWxFTWNLZW5uZXkyMDA0cmN1OmRlcmVmZXJlbmNlCissQXV0aG9yPSJEaXBhbmthciBTYXJtYSIKKyxUaXRsZT0ie1JlOiBSQ1UgOiBBYnN0cmFjdGVkIFJDVSBkZXJlZmVyZW5jaW5nIFs1LzVdfSIKKyxtb250aD0iQXVndXN0IgorLHllYXI9IjIwMDQiCissbm90ZT0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vbGttbC5vcmcvbGttbC8yMDA0LzgvNi8yMzd9CitbVmlld2VkIEp1bmUgOCwgMjAxMF0iCissYW5ub3RhdGlvbj17CisJSW50cm9kdWNlIHJjdV9kZXJlZmVyZW5jZSgpLgorfQorfQorCitAdW5wdWJsaXNoZWR7SmltSG91c3RvbjA0YQorLEF1dGhvcj0iSmltIEhvdXN0b24iCissVGl0bGU9IntbUkZDXCZQQVRDSF0gQWx0ZXJuYXRpdmUge1JDVX0gaW1wbGVtZW50YXRpb259IgorLG1vbnRoPSJBdWd1c3QiCisseWVhcj0iMjAwNCIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDQvOC8zMC84N30KK1tWaWV3ZWQgRmVicnVhcnkgMTcsIDIwMDVdIgorLGFubm90YXRpb249eworCVVzZXMgYWN0aXZlIGNvZGUgaW4gcmN1X3JlYWRfbG9jaygpIGFuZCByY3VfcmVhZF91bmxvY2soKSB0bworCW1ha2UgUkNVIGhhcHBlbiwgYWxsb3dpbmcgUkNVIHRvIGZ1bmN0aW9uIG9uIENQVXMgdGhhdCBkbyBub3QKKwlyZWNlaXZlIGEgc2NoZWR1bGluZy1jbG9jayBpbnRlcnJ1cHQuCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtUb21IYXJ0MDRhCissQXV0aG9yPSJUaG9tYXMgRS4gSGFydCIKKyxUaXRsZT0iTWFzdGVyJ3MgVGhlc2lzOiBBcHBseWluZyBMb2NrLWZyZWUgVGVjaG5pcXVlcyB0byB0aGUge0xpbnV4fSBLZXJuZWwiCissbW9udGg9Ik9jdG9iZXIiCisseWVhcj0iMjAwNCIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly93d3cuY3MudG9yb250by5lZHUvfnRvbWhhcnQvbWFzdGVyc190aGVzaXMuaHRtbH0KK1tWaWV3ZWQgT2N0b2JlciAxNSwgMjAwNF0iCissYW5ub3RhdGlvbj17CisJUHJvcG9zZXMgY29tcGFyaW5nIFJDVSB0byBsb2NrLWZyZWUgbWV0aG9kcyBmb3IgdGhlIExpbnV4IGtlcm5lbC4KK30KK30KKworQHVucHVibGlzaGVke1ZhZGRhZ2lyaTA0YQorLEF1dGhvcj0iU3JpdmF0c2EgVmFkZGFnaXJpIgorLFRpdGxlPSJTdWJqZWN0OiBbUkZDXSBVc2UgUkNVIGZvciB0Y3BcX2VoYXNoIGxvb2t1cCIKKyxtb250aD0iT2N0b2JlciIKKyx5ZWFyPSIyMDA0IgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL21hcmMudGhlYWltc2dyb3VwLmNvbS8/dD0xMDkzOTU3MzE3MDAwMDQmcj0xJnc9Mn0KK1tWaWV3ZWQgT2N0b2JlciAxOCwgMjAwNF0iCissYW5ub3RhdGlvbj17CisJU3JpdmF0c2EncyBSQ1UgcGF0Y2ggZm9yIHRjcF9laGFzaCBsb29rdXAuCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtUaGlydW1hbGFpMDRhCissQXV0aG9yPSJSYXZpa2lyYW4gVGhpcnVtYWxhaSIKKyxUaXRsZT0iU3ViamVjdDogW3BhdGNoc2V0XSBMb2NrZnJlZSBmZCBsb29rdXAgMCBvZiA1IgorLG1vbnRoPSJPY3RvYmVyIgorLHllYXI9IjIwMDQiCissbm90ZT0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vbWFyYy50aGVhaW1zZ3JvdXAuY29tLz90PTEwOTE0NDIxNzQwMDAwMyZyPTEmdz0yfQorW1ZpZXdlZCBPY3RvYmVyIDE4LCAyMDA0XSIKKyxhbm5vdGF0aW9uPXsKKwlSYXZpa2lyYW4ncyBsb2NrZnJlZSBGRCBwYXRjaC4KK30KK30KKworQHVucHVibGlzaGVke1RoaXJ1bWFsYWkwNGIKKyxBdXRob3I9IlJhdmlraXJhbiBUaGlydW1hbGFpIgorLFRpdGxlPSJTdWJqZWN0OiBSZTogW3BhdGNoc2V0XSBMb2NrZnJlZSBmZCBsb29rdXAgMCBvZiA1IgorLG1vbnRoPSJPY3RvYmVyIgorLHllYXI9IjIwMDQiCissbm90ZT0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vbWFyYy50aGVhaW1zZ3JvdXAuY29tLz9sPWxpbnV4LWtlcm5lbCZtPTEwOTE1MjUyMTQxMDQ1OSZ3PTJ9CitbVmlld2VkIE9jdG9iZXIgMTgsIDIwMDRdIgorLGFubm90YXRpb249eworCVJhdmlraXJhbidzIGxvY2tmcmVlIEZEIHBhdGNoLgorfQorfQorCitAdW5wdWJsaXNoZWR7UGF1bEVNY0tlbm5leTIwMDRyY3U6YXNzaWduOnBvaW50ZXIKKyxBdXRob3I9IlBhdWwgRS4gTWNLZW5uZXkiCissVGl0bGU9IntbUEFUQ0ggMS8zXSBSQ1U6IFx1cmx7cmN1X2Fzc2lnbl9wb2ludGVyKCl9IHJlbW92YWwgb2YgbWVtb3J5IGJhcnJpZXJzfSIKKyxtb250aD0iT2N0b2JlciIKKyx5ZWFyPSIyMDA0IgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL2xrbWwub3JnL2xrbWwvMjAwNC8xMC8yMy8yNDF9CitbVmlld2VkIEp1bmUgOCwgMjAxMF0iCissYW5ub3RhdGlvbj17CisJSW50cm9kdWNlIHJjdV9hc3NpZ25fcG9pbnRlcigpLgorfQorfQorCitAdW5wdWJsaXNoZWR7SmFtZXNNb3JyaXMwNGEKKyxBdXRob3I9IkphbWVzIE1vcnJpcyIKKyxUaXRsZT0ie1tQQVRDSCAyLzNdIFNFTGludXh9IHNjYWxhYmlsaXR5IC0gY29udmVydCB7QVZDfSB0byB7UkNVfSIKKyxkYXk9IjE1IgorLG1vbnRoPSJOb3ZlbWJlciIKKyx5ZWFyPSIyMDA0IgorLG5vdGU9Ilx1cmx7aHR0cDovL21hcmMudGhlYWltc2dyb3VwLmNvbS8/bD1saW51eC1rZXJuZWwmbT0xMTAwNTQ5Nzk0MTYwMDQmdz0yfSIKKyxhbm5vdGF0aW9uPXsKKwlKYW1lcyBNb3JyaXMgcG9zdHMgS2FpZ2FpIEtvaGVpJ3MgcGF0Y2ggdG8gTEtNTC4KKwlbVmlld2VkIERlY2VtYmVyIDEwLCAyMDA0XQorCUthaWdhaSdzIHBhdGNoIGlzIGF0IGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDA0LzkvMjcvNTIKK30KK30KKworQHVucHVibGlzaGVke0phbWVzTW9ycmlzMDRiCissQXV0aG9yPSJKYW1lcyBNb3JyaXMiCissVGl0bGU9IlJlY2VudCBEZXZlbG9wbWVudHMgaW4ge1NFTGludXh9IEtlcm5lbCBQZXJmb3JtYW5jZSIKKyxtb250aD0iRGVjZW1iZXIiCisseWVhcj0iMjAwNCIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly93d3cubGl2ZWpvdXJuYWwuY29tL3VzZXJzL2phbWVzX21vcnJpcy8yMTUzLmh0bWx9CitbVmlld2VkIERlY2VtYmVyIDEwLCAyMDA0XSIKKyxhbm5vdGF0aW9uPXsKKwlSQ1UgaGVscHMgU0VMaW51eCBwZXJmb3JtYW5jZS4gIDstKSAgTWFkZSBMV04uCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtQYXVsTWNLZW5uZXkyMDA1UkNVU2VtYW50aWNzCissQXV0aG9yPSJQYXVsIEUuIE1jS2VubmV5IGFuZCBKb25hdGhhbiBXYWxwb2xlIgorLFRpdGxlPSJ7UkNVfSBTZW1hbnRpY3M6IEEgRmlyc3QgQXR0ZW1wdCIKKyxtb250aD0iSmFudWFyeSIKKyx5ZWFyPSIyMDA1IgorLGRheT0iMzAiCissbm90ZT0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vd3d3LnJkcm9wLmNvbS91c2Vycy9wYXVsbWNrL1JDVS9yY3Utc2VtYW50aWNzLjIwMDUuMDEuMzBhLnBkZn0KK1tWaWV3ZWQgRGVjZW1iZXIgNiwgMjAwOV0iCissYW5ub3RhdGlvbj17CisJRWFybHkgZGVyaXZhdGlvbiBvZiBSQ1Ugc2VtYW50aWNzLgorfQorfQorCitAdW5wdWJsaXNoZWR7UGF1bE1jS2VubmV5MjAwNWUKKyxBdXRob3I9IlBhdWwgRS4gTWNLZW5uZXkiCissVGl0bGU9IlJlYWwtVGltZSBQcmVlbXB0aW9uIGFuZCB7UkNVfSIKKyxtb250aD0iTWFyY2giCisseWVhcj0iMjAwNSIKKyxkYXk9IjE3IgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL2xrbWwub3JnL2xrbWwvMjAwNS8zLzE3LzE5OX0KK1tWaWV3ZWQgU2VwdGVtYmVyIDUsIDIwMDVdIgorLGFubm90YXRpb249eworCUZpcnN0IHBvc3Rpbmcgc2hvd2luZyBob3cgUkNVIGNhbiBiZSBzYWZlbHkgYWRhcHRlZCBmb3IKKwlwcmVlbXB0YWJsZSBSQ1UgcmVhZCBzaWRlIGNyaXRpY2FsIHNlY3Rpb25zLgorfQorfQorCitAdW5wdWJsaXNoZWR7RXNiZW5OZWlsc2VuMjAwNWEKKyxBdXRob3I9IkVzYmVuIE5laWxzZW4iCissVGl0bGU9IlJlOiBSZWFsLVRpbWUgUHJlZW1wdGlvbiBhbmQge1JDVX0iCissbW9udGg9Ik1hcmNoIgorLHllYXI9IjIwMDUiCissZGF5PSIxOCIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDUvMy8xOC8xMjJ9CitbVmlld2VkIE1hcmNoIDMwLCAyMDA2XSIKKyxhbm5vdGF0aW9uPXsKKwlFc2JlbiBOZWlsc2VuIHN1Z2dlc3RzIHJlYWQtc2lkZSBzdXBwcmVzc2lvbiBvZiBncmFjZS1wZXJpb2QKKwlwcm9jZXNzaW5nIGZvciBjcnVkZS1idXQtd29ya2FibGUgcmVhbHRpbWUgUkNVLiAgVGhlIGRvd25zaWRlCisJaXMgaW5kZWZpbml0ZSBncmFjZSBwZXJpb2RzLi4uICBCdXQgdGhpcyBpcyBPSyBmb3IgZXhwZXJpbWVudGF0aW9uCisJYW5kIHRlc3RpbmcuCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtUb21IYXJ0MDVhCissQXV0aG9yPSJUaG9tYXMgRS4gSGFydCBhbmQgUGF1bCBFLiBNY0tlbm5leSBhbmQgQW5nZWxhIERlbWtlIEJyb3duIgorLFRpdGxlPSJFZmZpY2llbnQgTWVtb3J5IFJlY2xhbWF0aW9uIGlzIE5lY2Vzc2FyeSBmb3IgRmFzdCBMb2NrLUZyZWUKK0RhdGEgU3RydWN0dXJlcyIKKyxtb250aD0iTWFyY2giCisseWVhcj0iMjAwNSIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2Z0cDovL2Z0cC5jcy50b3JvbnRvLmVkdS9jc3JnLXRlY2huaWNhbC1yZXBvcnRzLzUxNS99CitbVmlld2VkIE1hcmNoIDQsIDIwMDVdIgorLGFubm90YXRpb249eworCUNvbXBhcmlzb24gb2YgUkNVLCBRQlNSLCBhbmQgRUJTUi4gIFJDVSB3aW5zIGZvciByZWFkLW1vc3RseQorCXdvcmtsb2Fkcy4gIDstKQorfQorfQorCitAdW5wdWJsaXNoZWR7Sm9uQ29yYmV0MjAwNURlcHJlY2F0ZVN5bmNLZXJuZWwKKyxBdXRob3I9IkpvbmF0aGFuIENvcmJldCIKKyxUaXRsZT0iQVBJIGNoYW5nZTogc3luY2hyb25pemVfa2VybmVsKCkgZGVwcmVjYXRlZCIKKyxtb250aD0iTWF5IgorLGRheT0iMyIKKyx5ZWFyPSIyMDA1IgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvMTM0NDg0L30KK1tWaWV3ZWQgTWF5IDMsIDIwMDVdIgorLGFubm90YXRpb249eworCUpvbiBDb3JiZXQgZGVzY3JpYmVzIGRlcHJlY2F0aW9uIG9mIHN5bmNocm9uaXplX2tlcm5lbCgpCisJaW4gZmF2b3Igb2Ygc3luY2hyb25pemVfcmN1KCkgYW5kIHN5bmNocm9uaXplX3NjaGVkKCkuCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtQYXVsTWNLZW5uZXkwNWEKKyxBdXRob3I9IlBhdWwgRS4gTWNLZW5uZXkiCissVGl0bGU9IntbUkZDXX0ge1JDVX0gYW5kIHtDT05GSUdcX1BSRUVNUFRcX1JUfSBwcm9ncmVzcyIKKyxtb250aD0iTWF5IgorLHllYXI9IjIwMDUiCissbm90ZT0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vbGttbC5vcmcvbGttbC8yMDA1LzUvOS8xODV9CitbVmlld2VkIE1heSAxMywgMjAwNV0iCissYW5ub3RhdGlvbj17CisJRmlyc3QgcHVibGljYXRpb24gb2Ygd29ya2luZyBsb2NrLWJhc2VkIGRlZmVycmVkIGZyZWUgcGF0Y2hlcworCWZvciB0aGUgQ09ORklHX1BSRUVNUFRfUlQgZW52aXJvbm1lbnQuCit9Cit9CisKK0Bjb25mZXJlbmNle1BhdWxNY0tlbm5leTA1YgorLEF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSBhbmQgRGlwYW5rYXIgU2FybWEiCissVGl0bGU9IlRvd2FyZHMgSGFyZCBSZWFsdGltZSBSZXNwb25zZSBmcm9tIHRoZSB7TGludXh9IEtlcm5lbCBvbiB7U01QfSBIYXJkd2FyZSIKKyxCb29rdGl0bGU9ImxpbnV4LmNvbmYuYXUgMjAwNSIKKyxtb250aD0iQXByaWwiCisseWVhcj0iMjAwNSIKKyxhZGRyZXNzPSJDYW5iZXJyYSwgQXVzdHJhbGlhIgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL3d3dy5yZHJvcC5jb20vdXNlcnMvcGF1bG1jay9SQ1UvcmVhbHRpbWVSQ1UuMjAwNS4wNC4yM2EucGRmfQorW1ZpZXdlZCBNYXkgMTMsIDIwMDVdIgorLGFubm90YXRpb249eworCVJlYWx0aW1lIHR1cm5zIGludG8gbWFraW5nIFJDVSB5ZXQgbW9yZSByZWFsdGltZSBmcmllbmRseS4KKwlodHRwOi8vbGNhMjAwNS5saW51eC5vcmcuYXUvUGFwZXJzL1BhdWwlMjBNY0tlbm5leS9Ub3dhcmRzJTIwSGFyZCUyMFJlYWx0aW1lJTIwUmVzcG9uc2UlMjBmcm9tJTIwdGhlJTIwTGludXglMjBLZXJuZWwvTEtTLjIwMDUuMDQuMjJhLnBkZgorfQorfQorCitAdW5wdWJsaXNoZWR7UGF1bEVNY0tlbm5leUhvbWVQYWdlCissQXV0aG9yPSJQYXVsIEUuIE1jS2VubmV5IgorLFRpdGxlPSJ7UGF1bH0ge0UufSB7TWNLZW5uZXl9IgorLG1vbnRoPSJNYXkiCisseWVhcj0iMjAwNSIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly93d3cucmRyb3AuY29tL3VzZXJzL3BhdWxtY2svfQorW1ZpZXdlZCBNYXkgMjUsIDIwMDVdIgorLGFubm90YXRpb249eworCVBhdWwgTWNLZW5uZXkncyBob21lIHBhZ2UuCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtQYXVsRU1jS2VubmV5UkNVUGFnZQorLEF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSIKKyxUaXRsZT0iUmVhZC1Db3B5IFVwZGF0ZSB7KFJDVSl9IgorLG1vbnRoPSJNYXkiCisseWVhcj0iMjAwNSIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly93d3cucmRyb3AuY29tL3VzZXJzL3BhdWxtY2svUkNVfQorW1ZpZXdlZCBNYXkgMjUsIDIwMDVdIgorLGFubm90YXRpb249eworCVBhdWwgTWNLZW5uZXkncyBSQ1UgcGFnZS4KK30KK30KKworQHVucHVibGlzaGVke0pvc2VwaFNlaWdoMjAwNWEKKyxBdXRob3I9Ikpvc2VwaCBTZWlnaCIKKyxUaXRsZT0ie1JDVX0re1NNUn0gKGhhemFyZCBwb2ludGVycykiCissbW9udGg9Ikp1bHkiCisseWVhcj0iMjAwNSIKKyxub3RlPSJQZXJzb25hbCBjb21tdW5pY2F0aW9uIgorLGFubm90YXRpb249eworCUpvZSBTZWlnaCBhbm5vdW5jaW5nIGhpcyBhdG9taWMtcHRyLXBsdXMgcHJvamVjdC4KKwlodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2F0b21pYy1wdHItcGx1cy8KK30KK30KKworQHVucHVibGlzaGVke0pvc2VwaFNlaWdoMjAwNWIKKyxBdXRob3I9Ikpvc2VwaCBTZWlnaCIKKyxUaXRsZT0iTG9jay1mcmVlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIgorLG1vbnRoPSJKdWx5IgorLGRheT0iNiIKKyx5ZWFyPSIyMDA1IgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9hdG9taWMtcHRyLXBsdXMvfQorW1ZpZXdlZCBBdWd1c3QgOCwgMjAwNV0iCissYW5ub3RhdGlvbj17CisJSm9lIFNlaWdoJ3MgYXRvbWljLXB0ci1wbHVzIHByb2plY3QuCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtQYXVsTWNLZW5uZXkyMDA1YworLEF1dGhvcj0iUGF1bCBFLk1jS2VubmV5IgorLFRpdGxlPSJ7W1JGQyxQQVRDSF0gUkNVfSBhbmQge0NPTkZJR1xfUFJFRU1QVFxfUlR9IHNhbmUgcGF0Y2giCissbW9udGg9IkF1Z3VzdCIKKyxkYXk9IjEiCisseWVhcj0iMjAwNSIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDUvOC8xLzE1NX0KK1tWaWV3ZWQgTWFyY2ggMTQsIDIwMDZdIgorLGFubm90YXRpb249eworCUZpcnN0IG9wZXJhdGluZyBjb3VudGVyLWJhc2VkIHJlYWx0aW1lIFJDVSBwYXRjaCBwb3N0ZWQgdG8gTEtNTC4KK30KK30KKworQHVucHVibGlzaGVke1BhdWxNY0tlbm5leTIwMDVkCissQXV0aG9yPSJQYXVsIEUuIE1jS2VubmV5IgorLFRpdGxlPSJSZTogW0Z3ZDogUmU6IFtwYXRjaF0gUmVhbC1UaW1lIFByZWVtcHRpb24sIC1SVC0yLjYuMTMtcmM0LVYwLjcuNTItMDFdIgorLG1vbnRoPSJBdWd1c3QiCissZGF5PSI4IgorLHllYXI9IjIwMDUiCissbm90ZT0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vbGttbC5vcmcvbGttbC8yMDA1LzgvOC8xMDh9CitbVmlld2VkIE1hcmNoIDE0LCAyMDA2XSIKKyxhbm5vdGF0aW9uPXsKKwlGaXJzdCBvcGVyYXRpbmcgY291bnRlci1iYXNlZCByZWFsdGltZSBSQ1UgcGF0Y2ggcG9zdGVkIHRvIExLTUwsCisJYnV0IGZpeGVkIHNvIHRoYXQgdmFyaW91cyB1bnVzdWFsIGNvbWJpbmF0aW9ucyBvZiBjb25maWd1cmF0aW9uCisJcGFyYW1ldGVycyBhbGwgZnVuY3Rpb24gcHJvcGVybHkuCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtQYXVsTWNLZW5uZXkyMDA1cmN1dG9ydHVyZQorLEF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSIKKyxUaXRsZT0ie1tQQVRDSF19IHtSQ1V9IHRvcnR1cmUgdGVzdGluZyIKKyxtb250aD0iT2N0b2JlciIKKyxkYXk9IjEiCisseWVhcj0iMjAwNSIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDUvMTAvMS83MH0KK1tWaWV3ZWQgTWFyY2ggMTQsIDIwMDZdIgorLGFubm90YXRpb249eworCUZpcnN0IHJjdXRvcnR1cmUgcGF0Y2guCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtEYXZpZFNNaWxsZXIyMDA2SGFzaGVkTG9ja2luZworLEF1dGhvcj0iRGF2aWQgUy4gTWlsbGVyIgorLFRpdGxlPSJSZTogW3tQQVRDSH0sIHtSRkN9XSB7UkNVfSA6IHtPT019IGF2b2lkYW5jZSBhbmQgbG93ZXIgbGF0ZW5jeSIKKyxtb250aD0iSmFudWFyeSIKKyxkYXk9IjYiCisseWVhcj0iMjAwNiIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHBzOi8vbGttbC5vcmcvbGttbC8yMDA2LzEvNy8yMn0KK1tWaWV3ZWQgRmVicnVhcnkgMjksIDIwMTJdIgorLGFubm90YXRpb249eworCURhdmlkIE1pbGxlcidzIHZpZXcgb24gaGFzaGVkIGFycmF5cyBvZiBsb2NrczogdXNlZCB0byByZWFsbHkKKwlsaWtlIGl0LCBidXQgdGltZSBoZSBzYXcgYW4gb3Bwb3J0dW5pdHkgZm9yIHRoaXMgdGVjaG5pcXVlLAorCXNvbWV0aGluZyBlbHNlIGFsd2F5cyBwcm92ZWQgc3VwZXJpb3IuICBQYXJ0aXRpb25pbmcgb3IgUkNVLiAgOy0pCit9Cit9CisKK0Bjb25mZXJlbmNle1Rob21hc0VIYXJ0MjAwNmEKKyxBdXRob3I9IlRob21hcyBFLiBIYXJ0IGFuZCBQYXVsIEUuIE1jS2VubmV5IGFuZCBBbmdlbGEgRGVta2UgQnJvd24iCissVGl0bGU9Ik1ha2luZyBMb2NrbGVzcyBTeW5jaHJvbml6YXRpb24gRmFzdDogUGVyZm9ybWFuY2UgSW1wbGljYXRpb25zCitvZiBNZW1vcnkgUmVjbGFtYXRpb24iCissQm9va3RpdGxlPSIyMFx0ZXh0c3VwZXJzY3JpcHR7dGh9IHtJRUVFfSBJbnRlcm5hdGlvbmFsIFBhcmFsbGVsIGFuZAorRGlzdHJpYnV0ZWQgUHJvY2Vzc2luZyBTeW1wb3NpdW0iCissbW9udGg9IkFwcmlsIgorLHllYXI9IjIwMDYiCissZGF5PSIyNS0yOSIKKyxhZGRyZXNzPSJSaG9kZXMsIEdyZWVjZSIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly93d3cucmRyb3AuY29tL3VzZXJzL3BhdWxtY2svUkNVL2hhcnRfaXBkcHMwNi5wZGZ9CitbVmlld2VkIEFwcmlsIDI4LCAyMDA4XSIKKyxhbm5vdGF0aW9uPXsKKwlDb21wYXJlcyBRU0JSLCBIUEJSLCBFQlIsIGFuZCBsb2NrLWZyZWUgcmVmZXJlbmNlIGNvdW50aW5nLgorCWh0dHA6Ly93d3cuY3MudG9yb250by5lZHUvfnRvbWhhcnQvcGVyZmxhYi9pcGRwczA2LnRnegorfQorfQorCitAdW5wdWJsaXNoZWR7Tmlja1BpZ2dpbjIwMDZyYWRpeHRyZWUKKyxBdXRob3I9Ik5pY2sgUGlnZ2luIgorLFRpdGxlPSJbcGF0Y2ggMy8zXSByYWRpeC10cmVlOiB7UkNVfSBsb2NrbGVzcyByZWFkc2lkZSIKKyxtb250aD0iSnVuZSIKKyxkYXk9IjIwIgorLHllYXI9IjIwMDYiCissbm90ZT0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vbGttbC5vcmcvbGttbC8yMDA2LzYvMjAvMjM4fQorW1ZpZXdlZCBNYXJjaCAyNSwgMjAwOF0iCissYW5ub3RhdGlvbj17CisJUkNVLXByb3RlY3RlZCByYWRpeCB0cmVlLgorfQorfQorCitAQ29uZmVyZW5jZXtQYXVsRU1jS2VubmV5MjAwNmIKKyxBdXRob3I9IlBhdWwgRS4gTWNLZW5uZXkgYW5kIERpcGFua2FyIFNhcm1hIGFuZCBJbmdvIE1vbG5hciBhbmQKK1N1cGFybmEgQmhhdHRhY2hhcnlhIgorLFRpdGxlPSJFeHRlbmRpbmcge1JDVX0gZm9yIFJlYWx0aW1lIGFuZCBFbWJlZGRlZCBXb3JrbG9hZHMiCissQm9va3RpdGxlPSJ7T3R0YXdhIExpbnV4IFN5bXBvc2l1bX0iCissTW9udGg9Ikp1bHkiCissWWVhcj0iMjAwNiIKKyxwYWdlcz0idjIgMTIzLTEzOCIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly93d3cubGludXhzeW1wb3NpdW0ub3JnLzIwMDYvdmlld19hYnN0cmFjdC5waHA/Y29udGVudF9rZXk9MTg0fQorXHVybHtodHRwOi8vd3d3LnJkcm9wLmNvbS91c2Vycy9wYXVsbWNrL1JDVS9PTFNydFJDVS4yMDA2LjA4LjExYS5wZGZ9CitbVmlld2VkIEphbnVhcnkgMSwgMjAwN10iCissYW5ub3RhdGlvbj17CisJRGVzY3JpYmVkIGhvdyB0byBpbXByb3ZlIHRoZSAtcnQgaW1wbGVtZW50YXRpb24gb2YgcmVhbHRpbWUgUkNVLgorfQorfQorCitAdW5wdWJsaXNoZWR7V2lraXBlZGlhUkNVCissQXV0aG9yPSJQYXVsIEUuIE1jS2VubmV5IGFuZCBDaHJpcyBQdXJjZWxsIGFuZCBBbGdhZSBhbmQgQmVuIFNjaHVtaW4gYW5kCitHYWl1cyBDb3JuZWxpdXMgYW5kIFF3ZXJ0eXVzIGFuZCBOZWlsIENvbndheSBhbmQgU2J3IGFuZCBCbGFpbnN0ZXIgYW5kCitDYW5pcyBSdWZ1cyBhbmQgWm9pY29uNSBhbmQgQW5vbWUgYW5kIEhhbCBFaXNlbiIKKyxUaXRsZT0iUmVhZC1Db3B5IFVwZGF0ZSIKKyxtb250aD0iSnVseSIKKyxkYXk9IjgiCisseWVhcj0iMjAwNiIKKyxub3RlPSJcdXJse2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlYWQtY29weS11cGRhdGV9IgorLGFubm90YXRpb249eworCVdpa2lwZWRpYSBSQ1UgcGFnZSBhcyBvZiBKdWx5IDggMjAwNi4KKwlbVmlld2VkIEF1Z3VzdCAyMSwgMjAwNl0KK30KK30KKworQENvbmZlcmVuY2V7Tmlja1BpZ2dpbjIwMDZMb2NrbGVzc1BhZ2VDYWNoZQorLEF1dGhvcj0iTmljayBQaWdnaW4iCissVGl0bGU9IkEgTG9ja2xlc3MgUGFnZWNhY2hlIGluIExpbnV4LS0tSW50cm9kdWN0aW9uLCBQcm9ncmVzcywgUGVyZm9ybWFuY2UiCissQm9va3RpdGxlPSJ7T3R0YXdhIExpbnV4IFN5bXBvc2l1bX0iCissTW9udGg9Ikp1bHkiCissWWVhcj0iMjAwNiIKKyxwYWdlcz0idjIgMjQ5LTI1NCIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly93d3cubGludXhzeW1wb3NpdW0ub3JnLzIwMDYvdmlld19hYnN0cmFjdC5waHA/Y29udGVudF9rZXk9MTg0fQorW1ZpZXdlZCBKYW51YXJ5IDExLCAyMDA5XSIKKyxhbm5vdGF0aW9uPXsKKwlVc2VzIFJDVS1wcm90ZWN0ZWQgcmFkaXggdHJlZSBmb3IgYSBsb2NrbGVzcyBwYWdlIGNhY2hlLgorfQorfQorCitAdW5wdWJsaXNoZWR7UGF1bEVNY0tlbm5leTIwMDZjCissQXV0aG9yPSJQYXVsIEUuIE1jS2VubmV5IgorLFRpdGxlPSJTbGVlcGFibGUge1JDVX0iCissbW9udGg9Ik9jdG9iZXIiCissZGF5PSI5IgorLHllYXI9IjIwMDYiCissbm90ZT0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8yMDI4NDcvfQorUmV2aXNlZDoKK1x1cmx7aHR0cDovL3d3dy5yZHJvcC5jb20vdXNlcnMvcGF1bG1jay9SQ1Uvc3JjdS4yMDA3LjAxLjE0YS5wZGZ9CitbVmlld2VkIEF1Z3VzdCAyMSwgMjAwNl0iCissYW5ub3RhdGlvbj17CisJTFdOIGFydGljbGUgaW50cm9kdWNpbmcgU1JDVS4KK30KK30KKworQHVucHVibGlzaGVke1JvYmVydE9sc3NvbjIwMDZhCissQXV0aG9yPSJSb2JlcnQgT2xzc29uIGFuZCBTdGVmYW4gTmlsc3NvbiIKKyxUaXRsZT0ie1RSQVNIfTogQSBkeW5hbWljIHtMQ30tdHJpZSBhbmQgaGFzaCBkYXRhIHN0cnVjdHVyZSIKKyxtb250aD0iQXVndXN0IgorLGRheT0iMTgiCisseWVhcj0iMjAwNiIKKyxub3RlPSJcdXJse2h0dHA6Ly93d3cubmFkYS5rdGguc2UvfnNuaWxzc29uL3B1YmxpY2F0aW9ucy9UUkFTSC90cmFzaC5wZGZ9IgorLGFubm90YXRpb249eworCVJDVS1wcm90ZWN0ZWQgZHluYW1pYyB0cmllLWhhc2ggY29tYmluYXRpb24uCisJW1ZpZXdlZCBNYXJjaCA0LCAyMDExXQorfQorfQorCitAdW5wdWJsaXNoZWR7Q2hyaXN0b3BoSGVsbHdpZzIwMDZSQ1UyU1JDVQorLEF1dGhvcj0iQ2hyaXN0b3BoIEhlbGx3aWciCissVGl0bGU9IlJlOiB7Wy1tbSBQQVRDSCAxLzRdfSB7UkNVfTogc3BsaXQgY2xhc3NpYyByY3UiCissbW9udGg9IlNlcHRlbWJlciIKKyxkYXk9IjI4IgorLHllYXI9IjIwMDYiCissbm90ZT0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vbGttbC5vcmcvbGttbC8yMDA2LzkvMjgvMTYwfQorW1ZpZXdlZCBNYXJjaCAyNywgMjAwOF0iCit9CisKK0B1bnB1Ymxpc2hlZHtQYXVsRU1jS2VubmV5UkNVdXNhZ2VQYWdlCissQXV0aG9yPSJQYXVsIEUuIE1jS2VubmV5IgorLFRpdGxlPSJ7UkNVfSB7TGludXh9IFVzYWdlIgorLG1vbnRoPSJPY3RvYmVyIgorLHllYXI9IjIwMDYiCissbm90ZT0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vd3d3LnJkcm9wLmNvbS91c2Vycy9wYXVsbWNrL1JDVS9saW51eHVzYWdlLmh0bWx9CitbVmlld2VkIEphbnVhcnkgMTQsIDIwMDddIgorLGFubm90YXRpb249eworCVBhdWwgTWNLZW5uZXkncyBSQ1UgcGFnZSBzaG93aW5nIGdyYXBocyBwbG90dGluZyBMaW51eC1rZXJuZWwKKwl1c2FnZSBvZiBSQ1UuCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtQYXVsRU1jS2VubmV5UkNVdXNhZ2VSYXdEYXRhUGFnZQorLEF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSIKKyxUaXRsZT0iUmVhZC1Db3B5IFVwZGF0ZSB7KFJDVSl9IFVzYWdlIGluIHtMaW51eH0gS2VybmVsIgorLG1vbnRoPSJPY3RvYmVyIgorLHllYXI9IjIwMDYiCissbm90ZT0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vd3d3LnJkcm9wLmNvbS91c2Vycy9wYXVsbWNrL1JDVS9saW51eHVzYWdlL3JjdWxvY2t0YWIuaHRtbH0KK1tWaWV3ZWQgSmFudWFyeSAxNCwgMjAwN10iCissYW5ub3RhdGlvbj17CisJUGF1bCBNY0tlbm5leSdzIFJDVSBwYWdlIHNob3dpbmcgTGludXggdXNhZ2Ugb2YgUkNVIGluIHRhYnVsYXIKKwlmb3JtLCB3aXRoIGxpbmtzIHRvIGNvcnJlc3BvbmRpbmcgY3Njb3BlIGRhdGFiYXNlcy4KK30KK30KKworQHVucHVibGlzaGVke0dhdXRoYW1TaGVub3kyMDA2UkNVcndsb2NrCissQXV0aG9yPSJHYXV0aGFtIFIuIFNoZW5veSIKKyxUaXRsZT0iW1BBVENIIDQvNV0gbG9ja1xfY3B1XF9ob3RwbHVnOiBSZWRlc2lnbiAtIExpZ2h0d2VpZ2h0IGltcGxlbWVudGF0aW9uIG9mIGxvY2tcX2NwdVxfaG90cGx1ZyIKKyxtb250aD0iT2N0b2JlciIKKyx5ZWFyPSIyMDA2IgorLGRheT0yNgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL2xrbWwub3JnL2xrbWwvMjAwNi8xMC8yNi83M30KK1tWaWV3ZWQgSmFudWFyeSAyNiwgMjAwOV0iCissYW5ub3RhdGlvbj17CisJUkNVLWJhc2VkIHJlYWRlci13cml0ZXIgbG9jayB0aGF0IGFsbG93cyByZWFkZXJzIHRvIHByb2NlZWQgd2l0aAorCW5vIG1lbW9yeSBiYXJyaWVycyBvciBhdG9taWMgaW5zdHJ1Y3Rpb24gaW4gYWJzZW5jZSBvZiB3cml0ZXJzLgorCUlmIHdyaXRlciBkbyBzaG93IHVwLCByZWFkZXJzIG11c3Qgb2YgY291cnNlIHdhaXQgYXMgcmVxdWlyZWQgYnkKKwl0aGUgc2VtYW50aWNzIG9mIHJlYWRlci13cml0ZXIgbG9ja2luZy4gIFRoaXMgaXMgYSByZWN1cnNpdmUKKwlsb2NrLgorfQorfQorCitAdW5wdWJsaXNoZWR7SmVuc0F4Ym9lMjAwNlNsb3dTUkNVCissQXV0aG9yPSJKZW5zIEF4Ym9lIgorLFRpdGxlPSJSZTogW3BhdGNoXSBjcHVmcmVxOiBtYXJrIFx1cmx7Y3B1ZnJlcV90c2MoKX0gYXMKK1x1cmx7Y29yZV9pbml0Y2FsbF9zeW5jfSIKKyxtb250aD0iTm92ZW1iZXIiCisseWVhcj0iMjAwNiIKKyxkYXk9MTcKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDYvMTEvMTcvNTZ9CitbVmlld2VkIE1heSAyOCwgMjAwN10iCissYW5ub3RhdGlvbj17CisJU1JDVSdzIGdyYWNlIHBlcmlvZHMgYXJlIHRvbyBzbG93IGZvciBKZW5zLCBldmVuIGFmdGVyIGEKKwlmYWN0b3Itb2YtdGhyZWUgc3BlZWR1cC4KKwlTcGVkLXVwIHZlcnNpb24gb2YgU1JDVSBhdCBodHRwOi8vbGttbC5vcmcvbGttbC8yMDA2LzExLzE3LzM1OS4KK30KK30KKworQHVucHVibGlzaGVke09sZWdOZXN0ZXJvdjIwMDZRUkNVCissQXV0aG9yPSJPbGVnIE5lc3Rlcm92IgorLFRpdGxlPSJSZTogW3BhdGNoXSBjcHVmcmVxOiBtYXJrIHtcdHQgY3B1ZnJlcVxfdHNjKCl9IGFzCit7XHR0IGNvcmVcX2luaXRjYWxsXF9zeW5jfSIKKyxtb250aD0iTm92ZW1iZXIiCisseWVhcj0iMjAwNiIKKyxkYXk9MTkKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDYvMTEvMTkvNjl9CitbVmlld2VkIE1heSAyOCwgMjAwN10iCissYW5ub3RhdGlvbj17CisJRmlyc3QgY3V0IG9mIFFSQ1UuICBFeHBhbmRlZC9jb3JyZWN0ZWQgdmVyc2lvbnMgZm9sbG93ZWQuCisJVXNlZCB0byBiZSBPbGVnTmVzdGVyb3YyMDA3UVJDVSwgbm93IHRpbWUtY29ycmVjdGVkLgorfQorfQorCitAdW5wdWJsaXNoZWR7T2xlZ05lc3Rlcm92MjAwNmFRUkNVCissQXV0aG9yPSJPbGVnIE5lc3Rlcm92IgorLFRpdGxlPSJSZTogW1JGQywgUEFUQ0ggMS8yXSBxcmN1OiB7InF1aWNrIn0gc3JjdSBpbXBsZW1lbnRhdGlvbiIKKyxtb250aD0iTm92ZW1iZXIiCisseWVhcj0iMjAwNiIKKyxkYXk9MzAKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDYvMTEvMjkvMzMwfQorW1ZpZXdlZCBOb3ZlbWJlciAyNiwgMjAwOF0iCissYW5ub3RhdGlvbj17CisJRXhwYW5kZWQvY29ycmVjdGVkIHZlcnNpb24gb2YgUVJDVS4KKwlVc2VkIHRvIGJlIE9sZWdOZXN0ZXJvdjIwMDdhUVJDVSwgbm93IHRpbWUtY29ycmVjdGVkLgorfQorfQorCitAdW5wdWJsaXNoZWR7RXZnZW5peVBvbHlha292MjAwNlJDVXNsb3dkb3duCissQXV0aG9yPSJFdmdlbml5IFBvbHlha292IgorLFRpdGxlPSJCYWRuZXNzIGluIHBvc3Rwb25pbmcgd29yayIKKyxtb250aD0iRGVjZW1iZXIiCisseWVhcj0iMjAwNiIKKyxkYXk9MDUKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly93d3cuaW9yZW1hcC5uZXQvbm9kZS80MX0KK1tWaWV3ZWQgT2N0b2JlciAyOCwgMjAwOF0iCissYW5ub3RhdGlvbj17CisJVXNpbmcgUkNVIGFzIGEgcHVyZSBkZWxheSBsZWFkcyB0byBhIDIuNXggc2xvd2Rvd24gaW4gc2ticyBpbgorCXRoZSBMaW51eCBrZXJuZWwuCit9Cit9CisKK0BpbnByb2NlZWRpbmdze0NocmlzTWF0dGhld3MyMDA2Q2x1c3RlcmVkT2JqZWN0c1JDVQorLGF1dGhvciA9IHtNYXR0aGV3cywgQ2hyaXMgYW5kIENvYWR5LCBZdm9ubmUgYW5kIEFwcGF2b28sIEpvbmF0aGFufQorLHRpdGxlID0ge1BvcnRhYmlsaXR5IGV2ZW50czogYSBwcm9ncmFtbWluZyBtb2RlbCBmb3Igc2NhbGFibGUgc3lzdGVtIGluZnJhc3RydWN0dXJlc30KKyxib29rdGl0bGUgPSB7UExPUyAnMDY6IFByb2NlZWRpbmdzIG9mIHRoZSAzcmQgd29ya3Nob3Agb24gUHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIGFuZCBvcGVyYXRpbmcgc3lzdGVtc30KKyx5ZWFyID0gezIwMDZ9CissaXNibiA9IHsxLTU5NTkzLTU3Ny0wfQorLHBhZ2VzID0gezExfQorLGxvY2F0aW9uID0ge1NhbiBKb3NlLCBDYWxpZm9ybmlhfQorLGRvaSA9IHtodHRwOi8vZG9pLmFjbS5vcmcvMTAuMTE0NS8xMjE1OTk1LjEyMTYwMDZ9CisscHVibGlzaGVyID0ge0FDTX0KKyxhZGRyZXNzID0ge05ldyBZb3JrLCBOWSwgVVNBfQorLGFubm90YXRpb249eworCVVzZXMgSzQyJ3MgUkNVLWxpa2UgZnVuY3Rpb25hbGl0eSB0byBtYW5hZ2UgY2x1c3RlcmVkLW9iamVjdAorCWxpZmV0aW1lcy4KK30KK30KKworQGFydGljbGV7RGlsbWFEYVNpbHZhMjAwNks0MgorLGF1dGhvciA9IHtTaWx2YSwgRGlsbWEgRGEgYW5kIEtyaWVnZXIsIE9ycmFuIGFuZCBXaXNuaWV3c2tpLCBSb2JlcnQgVy4gYW5kIFdhdGVybGFuZCwgQW1vcyBhbmQgVGFtLCBEYXZpZCBhbmQgQmF1bWFubiwgQW5kcmV3fQorLHRpdGxlID0ge0s0MjogYW4gaW5mcmFzdHJ1Y3R1cmUgZm9yIG9wZXJhdGluZyBzeXN0ZW0gcmVzZWFyY2h9Cissam91cm5hbCA9IHtTSUdPUFMgT3Blci4gU3lzdC4gUmV2Ln0KKyx2b2x1bWUgPSB7NDB9CissbnVtYmVyID0gezJ9CisseWVhciA9IHsyMDA2fQorLGlzc24gPSB7MDE2My01OTgwfQorLHBhZ2VzID0gezM0LS00Mn0KKyxkb2kgPSB7aHR0cDovL2RvaS5hY20ub3JnLzEwLjExNDUvMTEzMTMyMi4xMTMxMzMzfQorLHB1Ymxpc2hlciA9IHtBQ019CissYWRkcmVzcyA9IHtOZXcgWW9yaywgTlksIFVTQX0KKyxhbm5vdGF0aW9uPXsKKwlEZXNjcmliZXMgcmVsYXRpb25zaGlwIG9mIEs0MiBnZW5lcmF0aW9ucyB0byBSQ1UuCit9Cit9CisKKyMgQ29yZXlNaW55YXJkMjAwN2xpc3Rfc3BsaWNlX3JjdQorQHVucHVibGlzaGVke0NvcmV5TWlueWFyZDIwMDdsaXN0OnNwbGljZTpyY3UKKyxBdXRob3I9IkNvcmV5IE1pbnlhcmQgYW5kIFBhdWwgRS4gTWNLZW5uZXkiCissVGl0bGU9IntbUEFUQ0hdfSBhZGQgYW4ge1JDVX0gdmVyc2lvbiBvZiBsaXN0IHNwbGljaW5nIgorLG1vbnRoPSJKYW51YXJ5IgorLHllYXI9IjIwMDciCissZGF5PTMKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDcvMS8zLzExMn0KK1tWaWV3ZWQgTWF5IDI4LCAyMDA3XSIKKyxhbm5vdGF0aW9uPXsKKwlQYXRjaCBmb3IgbGlzdF9zcGxpY2VfcmN1KCkuCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtQYXVsRU1jS2VubmV5MjAwN3JjdWJhcnJpZXIKKyxBdXRob3I9IlBhdWwgRS4gTWNLZW5uZXkiCissVGl0bGU9IntSQ1V9IGFuZCBVbmxvYWRhYmxlIE1vZHVsZXMiCissbW9udGg9IkphbnVhcnkiCissZGF5PSIxNCIKKyx5ZWFyPSIyMDA3IgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvMjE3NDg0L30KK1tWaWV3ZWQgTm92ZW1iZXIgMjIsIDIwMDddIgorLGFubm90YXRpb249eworCUxXTiBhcnRpY2xlIGludHJvZHVjaW5nIHRoZSByY3VfYmFycmllcigpIHByaW1pdGl2ZS4KK30KK30KKworQHVucHVibGlzaGVke1BldGVyWmlqbHN0cmEyMDA3U3luY0JhcnJpZXIKKyxBdXRob3I9IlBldGVyIFppamxzdHJhIGFuZCBJbmdvIE1vbG5hciIKKyxUaXRsZT0ie1tQQVRDSCAzLzddfSBiYXJyaWVyOiBhIHNjYWxhYmxlIHN5bmNob25pc2F0aW9uIGJhcnJpZXIiCissbW9udGg9IkphbnVhcnkiCisseWVhcj0iMjAwNyIKKyxkYXk9MjgKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDcvMS8yOC8zNH0KK1tWaWV3ZWQgTWFyY2ggMjcsIDIwMDhdIgorLGFubm90YXRpb249eworCVJDVS1saWtlIGltcGxlbWVudGF0aW9uIGZvciBmcmVxdWVudCB1cGRhdGVycyBhbmQgcmFyZSByZWFkZXJzKCEpLgorCVN1YnN1bWVkIGludG8gUVJDVS4gIE1heWJlLi4uCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtQYXVsRU1jS2VubmV5MjAwN0Jvb3N0UkNVCissQXV0aG9yPSJQYXVsIEUuIE1jS2VubmV5IgorLFRpdGxlPSJQcmlvcml0eS1Cb29zdGluZyB7UkNVfSBSZWFkLVNpZGUgQ3JpdGljYWwgU2VjdGlvbnMiCissbW9udGg9IkZlYnJ1YXJ5IgorLGRheT0iNSIKKyx5ZWFyPSIyMDA3IgorLG5vdGU9Ilx1cmx7aHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvMjIwNjc3L30iCissYW5ub3RhdGlvbj17CisJTFdOIGFydGljbGUgaW50cm9kdWNpbmcgUkNVIHByaW9yaXR5IGJvb3N0aW5nLgorCVJldmlzZWQ6CisJaHR0cDovL3d3dy5yZHJvcC5jb20vdXNlcnMvcGF1bG1jay9SQ1UvUkNVYm9vc3RzdGF0ZS4yMDA3LjA0LjE2YS5wZGYKKwlbVmlld2VkIFNlcHRlbWJlciA3LCAyMDA3XQorfQorfQorCitAdW5wdWJsaXNoZWR7UGF1bE1jS2VubmV5MjAwN1FSQ1VwYXRjaAorLEF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSIKKyxUaXRsZT0ie1tQQVRDSF19IHtRUkNVfSB3aXRoIGxvY2tsZXNzIGZhc3RwYXRoIgorLG1vbnRoPSJGZWJydWFyeSIKKyx5ZWFyPSIyMDA3IgorLGRheT0yNAorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL2xrbWwub3JnL2xrbWwvMjAwNy8yLzI1LzE4fQorW1ZpZXdlZCBNYXJjaCAyNywgMjAwOF0iCissYW5ub3RhdGlvbj17CisJUGF0Y2ggZm9yIFFSQ1Ugc3VwcGx5aW5nIGxvY2stZnJlZSBmYXN0IHBhdGguCit9Cit9CisKK0BhcnRpY2xle0pvbmF0aGFuQXBwYXZvbzIwMDdLNDJSQ1UKKyxhdXRob3IgPSB7QXBwYXZvbywgSm9uYXRoYW4gYW5kIFNpbHZhLCBEaWxtYSBEYSBhbmQgS3JpZWdlciwgT3JyYW4gYW5kIEF1c2xhbmRlciwgTWFyYyBhbmQgT3N0cm93c2tpLCBNaWNoYWwgYW5kIFJvc2VuYnVyZywgQnJ5YW4gYW5kIFdhdGVybGFuZCwgQW1vcyBhbmQgV2lzbmlld3NraSwgUm9iZXJ0IFcuIGFuZCBYZW5pZGlzLCBKaW1pIGFuZCBTdHVtbSwgTWljaGFlbCBhbmQgU29hcmVzLCBMaXZpb30KKyx0aXRsZSA9IHtFeHBlcmllbmNlIGRpc3RyaWJ1dGluZyBvYmplY3RzIGluIGFuIFNNTVAgT1N9Cissam91cm5hbCA9IHtBQ00gVHJhbnMuIENvbXB1dC4gU3lzdC59Cissdm9sdW1lID0gezI1fQorLG51bWJlciA9IHszfQorLHllYXIgPSB7MjAwN30KKyxpc3NuID0gezA3MzQtMjA3MX0KKyxwYWdlcyA9IHs2LzEtLTYvNTJ9CissZG9pID0ge2h0dHA6Ly9kb2kuYWNtLm9yZy8xMC4xMTQ1LzEyNzU1MTcuMTI3NTUxOH0KKyxwdWJsaXNoZXIgPSB7QUNNfQorLGFkZHJlc3MgPSB7TmV3IFlvcmssIE5ZLCBVU0F9CissYW5ub3RhdGlvbj17CisJUm9sZSBvZiBSQ1UgaW4gSzQyLgorfQorfQorCitAY29uZmVyZW5jZXtSb2JlcnRPbHNzb24yMDA3VHJhc2gKKyxBdXRob3I9IlJvYmVydCBPbHNzb24gYW5kIFN0ZWZhbiBOaWxzc29uIgorLFRpdGxlPSJ7VFJBU0h9OiBBIGR5bmFtaWMge0xDfS10cmllIGFuZCBoYXNoIGRhdGEgc3RydWN0dXJlIgorLGJvb2t0aXRsZT0iV29ya3Nob3Agb24gSGlnaCBQZXJmb3JtYW5jZSBTd2l0Y2hpbmcgYW5kIFJvdXRpbmcgKEhQU1InMDcpIgorLG1vbnRoPSJNYXkiCisseWVhcj0iMjAwNyIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9pZWVleHBsb3JlLmllZWUub3JnL3hwbC9mcmVlYWJzX2FsbC5qc3A/YXJudW1iZXI9NDI4MTIzOX0KK1tWaWV3ZWQgT2N0b2JlciAxLCAyMDEwXSIKKyxhbm5vdGF0aW9uPXsKKwlSQ1UtcHJvdGVjdGVkIGR5bmFtaWMgdHJpZS1oYXNoIGNvbWJpbmF0aW9uLgorfQorfQorCitAY29uZmVyZW5jZXtQZXRlclppamxzdHJhMjAwN0NvbmN1cnJlbnRQYWdlY2FjaGVSQ1UKKyxBdXRob3I9IlBldGVyIFppamxzdHJhIgorLFRpdGxlPSJDb25jdXJyZW50IFBhZ2VjYWNoZSIKKyxCb29rdGl0bGU9IkxpbnV4IFN5bXBvc2l1bSIKKyxtb250aD0iSnVuZSIKKyx5ZWFyPSIyMDA3IgorLGFkZHJlc3M9Ik90dGF3YSwgQ2FuYWRhIgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL29scy4xMDgucmVkaGF0LmNvbS8yMDA3L1JlcHJpbnRzL3ppamxzdHJhLVJlcHJpbnQucGRmfQorW1ZpZXdlZCBBcHJpbCAxNCwgMjAwOF0iCissYW5ub3RhdGlvbj17CisJUGFnZS1jYWNoZSBtb2RpZmljYXRpb25zIHBlcm1pdHRpbmcgUkNVIHJlYWRlcnMgYW5kIGNvbmN1cnJlbnQKKwl1cGRhdGVzLgorfQorfQorCitAdW5wdWJsaXNoZWR7UGF1bEVNY0tlbm5leTIwMDd3aGF0aXNSQ1UKKyxBdXRob3I9IlBhdWwgRS4gTWNLZW5uZXkiCissVGl0bGU9IldoYXQgaXMge1JDVX0/IgorLHllYXI9IjIwMDciCissbW9udGg9IjA3IgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL3d3dy5yZHJvcC5jb20vdXNlcnMvcGF1bG1jay9SQ1Uvd2hhdGlzUkNVLmh0bWx9CitbVmlld2VkIEp1bHkgNiwgMjAwN10iCissYW5ub3RhdGlvbj17CisJRGVzY3JpYmVzIFJDVSBpbiBMaW51eCBrZXJuZWwuCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtQYXVsRU1jS2VubmV5MjAwN1FSQ1VzcGluCissQXV0aG9yPSJQYXVsIEUuIE1jS2VubmV5IgorLFRpdGxlPSJVc2luZyB7UHJvbWVsYX0gYW5kIHtTcGlufSB0byB2ZXJpZnkgcGFyYWxsZWwgYWxnb3JpdGhtcyIKKyxtb250aD0iQXVndXN0IgorLGRheT0iMSIKKyx5ZWFyPSIyMDA3IgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvMjQzODUxL30KK1tWaWV3ZWQgU2VwdGVtYmVyIDgsIDIwMDddIgorLGFubm90YXRpb249eworCUxXTiBhcnRpY2xlIGRlc2NyaWJpbmcgUHJvbWVsYSBhbmQgc3BpbiwgYW5kIGFsc28gdXNpbmcgT2xlZworCU5lc3Rlcm92J3MgUVJDVSBhcyBhbiBleGFtcGxlICh3aXRoIFBhdWwgTWNLZW5uZXkncyBmYXN0cGF0aCkuCisJTWVyZ2VkIHBhdGNoIGF0OiBodHRwOi8vbGttbC5vcmcvbGttbC8yMDA3LzIvMjUvMTgKK30KK30KKworQHVucHVibGlzaGVke1BhdWxFTWNLZW5uZXkyMDA3V0cyMURET2F0b21pY3MKKyxBdXRob3I9IlBhdWwgRS4gTWNLZW5uZXkgYW5kIEhhbnMtSi4gQm9laG0gYW5kIExhd3JlbmNlIENyb3dsIgorLFRpdGxlPSJDKysgRGF0YS1EZXBlbmRlbmN5IE9yZGVyaW5nOiBBdG9taWNzIGFuZCBNZW1vcnkgTW9kZWwiCissbW9udGg9IkF1Z3VzdCIKKyxkYXk9IjMiCisseWVhcj0iMjAwNyIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9vcGVuLXN0ZC5vcmcvanRjMS9zYzIyL3dnMjEvZG9jcy9wYXBlcnMvMjAwOC9uMjY2NC5odG19CitbVmlld2VkIERlY2VtYmVyIDcsIDIwMDldIgorLGFubm90YXRpb249eworCVJDVSBmb3IgQysrLCBwYXJ0cyAxIGFuZCAyLgorfQorfQorCitAdW5wdWJsaXNoZWR7UGF1bEVNY0tlbm5leTIwMDdXRzIxRERPYW5ub3RhdGlvbgorLEF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSBhbmQgTGF3cmVuY2UgQ3Jvd2wiCissVGl0bGU9IkMrKyBEYXRhLURlcGVuZGVuY3kgT3JkZXJpbmc6IEZ1bmN0aW9uIEFubm90YXRpb24iCissbW9udGg9IlNlcHRlbWJlciIKKyxkYXk9IjE4IgorLHllYXI9IjIwMDgiCissbm90ZT0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vb3Blbi1zdGQub3JnL2p0YzEvc2MyMi93ZzIxL2RvY3MvcGFwZXJzLzIwMDgvbjI3ODIuaHRtfQorW1ZpZXdlZCBEZWNlbWJlciA3LCAyMDA5XSIKKyxhbm5vdGF0aW9uPXsKKwlSQ1UgZm9yIEMrKywgcGFydCAyLCB1cGRhdGVkIG1hbnkgdGltZXMuCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtQYXVsRU1jS2VubmV5MjAwN1ByZWVtcHRpYmxlUkNVUGF0Y2gKKyxBdXRob3I9IlBhdWwgRS4gTWNLZW5uZXkiCissVGl0bGU9IltQQVRDSCBSRkMgMC85XSB7UkNVfTogUHJlZW1wdGlibGUge1JDVX0iCissbW9udGg9IlNlcHRlbWJlciIKKyxkYXk9IjEwIgorLHllYXI9IjIwMDciCissbm90ZT0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vbGttbC5vcmcvbGttbC8yMDA3LzkvMTAvMjEzfQorW1ZpZXdlZCBPY3RvYmVyIDI1LCAyMDA3XSIKKyxhbm5vdGF0aW9uPXsKKwlGaW5hbCBwYXRjaCBmb3IgcHJlZW1wdGFibGUgUkNVIHRvIC1ydC4gIChMYXRlciBwYXRjaGVzIHdlcmUKKwl0byBtYWlubGluZSwgZXZlbnR1YWxseSBpbmNvcnBvcmF0ZWQuKQorfQorfQorCitAdW5wdWJsaXNoZWR7UGF1bEVNY0tlbm5leTIwMDdQcmVlbXB0aWJsZVJDVQorLEF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSIKKyxUaXRsZT0iVGhlIGRlc2lnbiBvZiBwcmVlbXB0aWJsZSByZWFkLWNvcHktdXBkYXRlIgorLG1vbnRoPSJPY3RvYmVyIgorLGRheT0iOCIKKyx5ZWFyPSIyMDA3IgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvMjUzNjUxL30KK1tWaWV3ZWQgT2N0b2JlciAyNSwgMjAwN10iCissYW5ub3RhdGlvbj17CisJTFdOIGFydGljbGUgZGVzY3JpYmluZyB0aGUgZGVzaWduIG9mIHByZWVtcHRpYmxlIFJDVS4KK30KK30KKworQGFydGljbGV7VGhvbWFzRUhhcnQyMDA3YQorLEF1dGhvcj0iVGhvbWFzIEUuIEhhcnQgYW5kIFBhdWwgRS4gTWNLZW5uZXkgYW5kIEFuZ2VsYSBEZW1rZSBCcm93biBhbmQgSm9uYXRoYW4gV2FscG9sZSIKKyxUaXRsZT0iUGVyZm9ybWFuY2Ugb2YgbWVtb3J5IHJlY2xhbWF0aW9uIGZvciBsb2NrbGVzcyBzeW5jaHJvbml6YXRpb24iCissam91cm5hbD0iSi4gUGFyYWxsZWwgRGlzdHJpYi4gQ29tcHV0LiIKKyx2b2x1bWU9ezY3fQorLG51bWJlcj0iMTIiCisseWVhcj0iMjAwNyIKKyxpc3NuPSIwNzQzLTczMTUiCisscGFnZXM9IjEyNzAtLTEyODUiCissZG9pPSJodHRwOi8vZHguZG9pLm9yZy8xMC4xMDE2L2ouanBkYy4yMDA3LjA0LjAxMCIKKyxwdWJsaXNoZXI9IkFjYWRlbWljIFByZXNzLCBJbmMuIgorLGFkZHJlc3M9Ik9ybGFuZG8sIEZMLCBVU0EiCissYW5ub3RhdGlvbj17CisJQ29tcGFyZXMgUVNCUiwgSFBCUiwgRUJSLCBhbmQgbG9jay1mcmVlIHJlZmVyZW5jZSBjb3VudGluZy4KKwlKb3VybmFsIHZlcnNpb24gb2YgVGhvbWFzRUhhcnQyMDA2YS4KK30KK30KKworIyBNYXRoaWV1RGVzbm95ZXJzMjAwN2NhbGxfcmN1X3NjaGVkTmVlZGVkCitAdW5wdWJsaXNoZWR7TWF0aGlldURlc25veWVyczIwMDdjYWxsOnJjdTpzY2hlZE5lZWRlZAorLEF1dGhvcj0iTWF0aGlldSBEZXNub3llcnMiCissVGl0bGU9IlJlOiBbcGF0Y2ggMS8yXSB7TGludXh9IEtlcm5lbCBNYXJrZXJzIC0gU3VwcG9ydCBNdWx0aXBsZSBQcm9iZXMiCissbW9udGg9IkRlY2VtYmVyIgorLGRheT0iMjAiCisseWVhcj0iMjAwNyIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDcvMTIvMjAvMjQ0fQorW1ZpZXdlZCBNYXJjaCAyNywgMjAwOF0iCissYW5ub3RhdGlvbj17CisJUmVxdWVzdCBmb3IgY2FsbF9yY3Vfc2NoZWQoKSBhbmQgcmN1X2JhcnJpZXJfc2NoZWQoKS4KK30KK30KKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMJIldoYXQgaXMgUkNVPyIgTFdOIHNlcmllcy4KKyMKKyMJaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvMjYyNDY0LyAoV2hhdCBpcyBSQ1UsIEZ1bmRhbWVudGFsbHk/KQorIwlodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8yNjMxMzAvIChXaGF0IGlzIFJDVSdzIFVzYWdlPykKKyMJaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvMjY0MDkwLyAoV2hhdCBpcyBSQ1UncyBBUEk/KQorCitAdW5wdWJsaXNoZWR7UGF1bEVNY0tlbm5leTIwMDdXaGF0SXNSQ1VGdW5kYW1lbnRhbGx5CissQXV0aG9yPSJQYXVsIEUuIE1jS2VubmV5IGFuZCBKb25hdGhhbiBXYWxwb2xlIgorLFRpdGxlPSJXaGF0IGlzIHtSQ1V9LCBGdW5kYW1lbnRhbGx5PyIKKyxtb250aD0iRGVjZW1iZXIiCissZGF5PSIxNyIKKyx5ZWFyPSIyMDA3IgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvMjYyNDY0L30KK1tWaWV3ZWQgRGVjZW1iZXIgMjcsIDIwMDddIgorLGFubm90YXRpb249eworCUxheXMgb3V0IHRoZSB0aHJlZSBiYXNpYyBjb21wb25lbnRzIG9mIFJDVTogKDEpIHB1Ymxpc2gtc3Vic2NyaWJlLAorCSgyKSB3YWl0IGZvciBwcmUtZXhpc3RpbmcgcmVhZGVycyB0byBjb21wbGV0ZSwgYW5kICgyKSBtYWludGFpbgorCW11bHRpcGxlIHZlcnNpb25zLgorfQorfQorCitAdW5wdWJsaXNoZWR7UGF1bEVNY0tlbm5leTIwMDhXaGF0SXNSQ1VVc2FnZQorLEF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSIKKyxUaXRsZT0iV2hhdCBpcyB7UkNVfT8gUGFydCAyOiBVc2FnZSIKKyxtb250aD0iSmFudWFyeSIKKyxkYXk9IjQiCisseWVhcj0iMjAwOCIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9sd24ubmV0L0FydGljbGVzLzI2MzEzMC99CitbVmlld2VkIEphbnVhcnkgNCwgMjAwOF0iCissYW5ub3RhdGlvbj17CisJTGF5cyBvdXQgc2l4IHVzZXMgb2YgUkNVOgorCTEuIFJDVSBpcyBhIFJlYWRlci1Xcml0ZXIgTG9jayBSZXBsYWNlbWVudAorCTIuIFJDVSBpcyBhIFJlc3RyaWN0ZWQgUmVmZXJlbmNlLUNvdW50aW5nIE1lY2hhbmlzbQorCTMuIFJDVSBpcyBhIEJ1bGsgUmVmZXJlbmNlLUNvdW50aW5nIE1lY2hhbmlzbQorCTQuIFJDVSBpcyBhIFBvb3IgTWFuJ3MgR2FyYmFnZSBDb2xsZWN0b3IKKwk1LiBSQ1UgaXMgYSBXYXkgb2YgUHJvdmlkaW5nIEV4aXN0ZW5jZSBHdWFyYW50ZWVzCisJNi4gUkNVIGlzIGEgV2F5IG9mIFdhaXRpbmcgZm9yIFRoaW5ncyB0byBGaW5pc2gKK30KK30KKworQHVucHVibGlzaGVke1BhdWxFTWNLZW5uZXkyMDA4V2hhdElzUkNVQVBJCissQXV0aG9yPSJQYXVsIEUuIE1jS2VubmV5IgorLFRpdGxlPSJ7UkNVfSBwYXJ0IDM6IHRoZSB7UkNVfSB7QVBJfSIKKyxtb250aD0iSmFudWFyeSIKKyxkYXk9IjE3IgorLHllYXI9IjIwMDgiCissbm90ZT0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8yNjQwOTAvfQorW1ZpZXdlZCBKYW51YXJ5IDEwLCAyMDA4XSIKKyxhbm5vdGF0aW9uPXsKKwlHaXZlcyBhbiBvdmVydmlldyBvZiB0aGUgTGludXgta2VybmVsIFJDVSBBUEkgYW5kIGEgYnJpZWYgYW5ub3RhdGVkIFJDVQorCWJpYmxpb2dyYXBoeS4KK30KK30KKworIworIwkiV2hhdCBpcyBSQ1U/IiBMV04gc2VyaWVzLgorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKworQHVucHVibGlzaGVke1N0ZXZlUm9zdGVkdDIwMDhkeW50aWNrUkNVcGF0Y2gKKyxBdXRob3I9IlN0ZXZlbiBSb3N0ZWR0IGFuZCBQYXVsIEUuIE1jS2VubmV5IgorLFRpdGxlPSJ7W1BBVENIXX0gYWRkIHN1cHBvcnQgZm9yIGR5bmFtaWMgdGlja3MgYW5kIHByZWVtcHQgcmN1IgorLG1vbnRoPSJKYW51YXJ5IgorLGRheT0iMjkiCisseWVhcj0iMjAwOCIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDgvMS8yOS8yMDh9CitbVmlld2VkIE1hcmNoIDI3LCAyMDA4XSIKKyxhbm5vdGF0aW9uPXsKKwlQYXRjaCB0aGF0IHByZXZlbnRzIHByZWVtcHRpYmxlIFJDVSBmcm9tIHVubmVjZXNzYXJpbHkgd2FraW5nCisJdXAgZHludGlja3MtaWRsZSBDUFVzLgorfQorfQorCitAdW5wdWJsaXNoZWR7UGF1bEVNY0tlbm5leTIwMDhMS01MRGVwZW5kZW5jeU9yZGVyaW5nCissQXV0aG9yPSJQYXVsIEUuIE1jS2VubmV5IgorLFRpdGxlPSJSZTogW1BBVENIIDAyLzIyIC12N10gQWRkIGJhc2ljIHN1cHBvcnQgZm9yIGdjYyBwcm9maWxlciBpbnN0cnVtZW50YXRpb24iCissbW9udGg9IkZlYnJ1YXJ5IgorLGRheT0iMSIKKyx5ZWFyPSIyMDA4IgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL2xrbWwub3JnL2xrbWwvMjAwOC8yLzIvMjU1fQorW1ZpZXdlZCBPY3RvYmVyIDE4LCAyMDA4XSIKKyxhbm5vdGF0aW9uPXsKKwlFeHBsYW5hdGlvbiBvZiBjb21waWxlcnMgdmlvbGF0aW5nIGRlcGVuZGVuY3kgb3JkZXJpbmcuCit9Cit9CisKK0BDb25mZXJlbmNle1BhdWxFTWNLZW5uZXkyMDA4QmVpamluZworLEF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSIKKyxUaXRsZT0iSW50cm9kdWNpbmcgVGVjaG5vbG9neSBJbnRvIHtMaW51eH0gT3I6CitJbnRyb2R1Y2luZyB5b3VyIHRlY2hub2xvZ3kgSW50byB7TGludXh9IHdpbGwgcmVxdWlyZSBpbnRyb2R1Y2luZyBhCitsb3Qgb2Yge0xpbnV4fSBpbnRvIHlvdXIgdGVjaG5vbG9neSEhISIKKyxCb29rdGl0bGU9IjIwMDggTGludXggRGV2ZWxvcGVyIFN5bXBvc2l1bSAtIENoaW5hIgorLFB1Ymxpc2hlcj0iT1NTIENoaW5hIgorLE1vbnRoPSJGZWJydWFyeSIKKyxZZWFyPSIyMDA4IgorLEFkZHJlc3M9IkJlaWppbmcsIENoaW5hIgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL3d3dy5yZHJvcC5jb20vdXNlcnMvcGF1bG1jay9SQ1UvVGVjaEludHJvTGludXguMjAwOC4wMi4xOWEucGRmfQorW1ZpZXdlZCBBdWd1c3QgMTIsIDIwMDhdIgorfQorCitAdW5wdWJsaXNoZWR7UGF1bEVNY0tlbm5leTIwMDhkeW50aWNrc1JDVQorLEF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSBhbmQgU3RldmVuIFJvc3RlZHQiCissVGl0bGU9IkludGVncmF0aW5nIGFuZCBWYWxpZGF0aW5nIGR5bnRpY2tzIGFuZCBQcmVlbXB0YWJsZSBSQ1UiCissbW9udGg9IkFwcmlsIgorLGRheT0iMjQiCisseWVhcj0iMjAwOCIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9sd24ubmV0L0FydGljbGVzLzI3OTA3Ny99CitbVmlld2VkIEFwcmlsIDI0LCAyMDA4XSIKKyxhbm5vdGF0aW9uPXsKKwlEZXNjcmliZXMgdXNlIG9mIFByb21lbGEgYW5kIFNwaW4gdG8gdmFsaWRhdGUgKGFuZCBmaXghKSB0aGUKKwlkeW50aWNrcy9SQ1UgaW50ZXJmYWNlLgorfQorfQorCitAYXJ0aWNsZXtEaW5ha2FyR3VuaWd1bnRhbGEyMDA4SUJNU3lzSgorLGF1dGhvcj0iRC4gR3VuaWd1bnRhbGEgYW5kIFAuIEUuIE1jS2VubmV5IGFuZCBKLiBUcmlwbGV0dCBhbmQgSi4gV2FscG9sZSIKKyx0aXRsZT0iVGhlIHJlYWQtY29weS11cGRhdGUgbWVjaGFuaXNtIGZvciBzdXBwb3J0aW5nIHJlYWwtdGltZSBhcHBsaWNhdGlvbnMgb24gc2hhcmVkLW1lbW9yeSBtdWx0aXByb2Nlc3NvciBzeXN0ZW1zIHdpdGgge0xpbnV4fSIKKyxZZWFyPSIyMDA4IgorLE1vbnRoPSJNYXkiCissam91cm5hbD0iSUJNIFN5c3RlbXMgSm91cm5hbCIKKyx2b2x1bWU9IjQ3IgorLG51bWJlcj0iMiIKKyxwYWdlcz0iMjIxLTIzNiIKKyxhbm5vdGF0aW9uPXsKKwlSQ1UsIHJlYWx0aW1lIFJDVSwgc2xlZXBhYmxlIFJDVSwgcGVyZm9ybWFuY2UuCisJaHR0cDovL3d3dy5yZXNlYXJjaC5pYm0uY29tL2pvdXJuYWwvc2ovNDcyL2d1bmlndW50YWxhLnBkZgorCVtWaWV3ZWQgQXByaWwgMjQsIDIwMDhdCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtMYWlKaWFuZ3NoYW4yMDA4TmV3Q2xhc3NpY0FsZ29yaXRobQorLEF1dGhvcj0iTGFpIEppYW5nc2hhbiIKKyxUaXRsZT0iW3tSRkN9XVt7UEFUQ0h9XSByY3UgY2xhc3NpYzogbmV3IGFsZ29yaXRobSBmb3IgY2FsbGJhY2tzLXByb2Nlc3NpbmciCissbW9udGg9Ikp1bmUiCissZGF5PSIzIgorLHllYXI9IjIwMDgiCissbm90ZT0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vbGttbC5vcmcvbGttbC8yMDA4LzYvMi81Mzl9CitbVmlld2VkIERlY2VtYmVyIDEwLCAyMDA4XSIKKyxhbm5vdGF0aW9uPXsKKwlVcGRhdGVkIFJDVSBjbGFzc2ljIGFsZ29yaXRobS4gIEludHJvZHVjZWQgbXVsdGktdGFpbGVkIGxpc3QKKwlmb3IgUkNVIGNhbGxiYWNrcyBhbmQgYWxzbyBwdWxsaW5nIGNvbW1vbiBjb2RlIGludG8KKwlfX2NhbGxfcmN1KCkuCit9Cit9CisKK0BhcnRpY2xle1BhdWxFTWNLZW5uZXkyMDA4UkNVT1NSCissYXV0aG9yPSJQYXVsIEUuIE1jS2VubmV5IGFuZCBKb25hdGhhbiBXYWxwb2xlIgorLHRpdGxlPSJJbnRyb2R1Y2luZyB0ZWNobm9sb2d5IGludG8gdGhlIHtMaW51eH0ga2VybmVsOiBhIGNhc2Ugc3R1ZHkiCissWWVhcj0iMjAwOCIKKyxqb3VybmFsPSJTSUdPUFMgT3Blci4gU3lzdC4gUmV2LiIKKyx2b2x1bWU9IjQyIgorLG51bWJlcj0iNSIKKyxwYWdlcz0iNC0tMTciCissaXNzbj0iMDE2My01OTgwIgorLGRvaT17aHR0cDovL2RvaS5hY20ub3JnLzEwLjExNDUvMTQwMDA5Ny4xNDAwMDk5fQorLHB1Ymxpc2hlcj0iQUNNIgorLGFkZHJlc3M9Ik5ldyBZb3JrLCBOWSwgVVNBIgorLGFubm90YXRpb249eworCUxpbnV4IGNoYW5nZWQgUkNVIHRvIGEgZmFyIGdyZWF0ZXIgZGVncmVlIHRoYW4gUkNVIGhhcyBjaGFuZ2VkIExpbnV4LgorCWh0dHA6Ly9wb3J0YWwuYWNtLm9yZy9jaXRhdGlvbi5jZm0/ZG9pZD0xNDAwMDk3LjE0MDAwOTkKK30KK30KKworQHVucHVibGlzaGVke01hbmZyZWRTcHJhdWwyMDA4U3RhdGVNYWNoaW5lUkNVCissQXV0aG9yPSJNYW5mcmVkIFNwcmF1bCIKKyxUaXRsZT0iW3tSRkN9LCB7UEFUQ0h9XSBzdGF0ZSBtYWNoaW5lIGJhc2VkIHJjdSIKKyxtb250aD0iQXVndXN0IgorLGRheT0iMjEiCisseWVhcj0iMjAwOCIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDgvOC8yMS8zMzZ9CitbVmlld2VkIERlY2VtYmVyIDgsIDIwMDhdIgorLGFubm90YXRpb249eworCVN0YXRlLWJhc2VkIFJDVS4gIE9uZSBrZXkgdGhpbmcgdGhhdCB0aGlzIHBhdGNoIGRvZXMgaXMgdG8KKwlzZXBhcmF0ZSB0aGUgZHludGlja3MgaGFuZGxpbmcgb2YgTk1JcyBhbmQgSVJRcy4KK30KK30KKworQHVucHVibGlzaGVke01hbmZyZWRTcHJhdWwyMDA4ZHludGlja0lSUU5NSQorLEF1dGhvcj0iTWFuZnJlZCBTcHJhdWwiCissVGl0bGU9IlJlOiBbe1JGQ30sIHtQQVRDSH1dIHY0IHNjYWxhYmxlIGNsYXNzaWMge1JDVX0gaW1wbGVtZW50YXRpb24iCissbW9udGg9IlNlcHRlbWJlciIKKyxkYXk9IjYiCisseWVhcj0iMjAwOCIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDgvOS82Lzg2fQorW1ZpZXdlZCBEZWNlbWJlciA4LCAyMDA4XSIKKyxhbm5vdGF0aW9uPXsKKwlNYW5mcmVkIG5vdGVzIGEgZml4IHJlcXVpcmVkIHRvIG15IGF0dGVtcHQgdG8gc2VwYXJhdGUgaXJxCisJYW5kIE5NSSBwcm9jZXNzaW5nIGZvciBoaWVyYXJjaGljYWwgUkNVJ3MgZHludGlja3MgaW50ZXJmYWNlLgorfQorfQorCisjIFdhcyBQYXVsRU1jS2VubmV5MjAxMWN5Y2xpY1JDVQorQHRlY2hyZXBvcnR7UGF1bEVNY0tlbm5leTIwMDhjeWNsaWNSQ1UKKyxhdXRob3I9IlBhdWwgRS4gTWNLZW5uZXkiCissdGl0bGU9IkVmZmljaWVudCBTdXBwb3J0IG9mIENvbnNpc3RlbnQgQ3ljbGljIFNlYXJjaCBXaXRoIFJlYWQtQ29weSBVcGRhdGUiCissaW5zdGl0dXRpb249IlVTIFBhdGVudCBhbmQgVHJhZGVtYXJrIE9mZmljZSIKKyxhZGRyZXNzPSJXYXNoaW5ndG9uLCBEQyIKKyx5ZWFyPSIyMDA4IgorLG51bWJlcj0iVVMgUGF0ZW50IDcsNDI2LDUxMSIKKyxtb250aD0iU2VwdGVtYmVyIgorLHBhZ2VzPSIyMyIKKyxhbm5vdGF0aW9uPXsKKwlNYWludGFpbnMgYW4gYWRkaXRpb25hbCBsZXZlbCBvZiBpbmRpcmVjdGlvbiB0byBhbGxvdworCXJlYWRlcnMgdG8gY29uZmluZSB0aGVtc2VsdmVzIHRvIHRoZSBkZXNpcmVkIHNuYXBzaG90IG9mIHRoZQorCWRhdGEgc3RydWN0dXJlLiAgT25seSBwZXJtaXRzIG9uZSB1cGRhdGUgYXQgYSB0aW1lLgorfQorfQorCitAdW5wdWJsaXNoZWR7UGF1bEVNY0tlbm5leTIwMDhIaWVyYXJjaGljYWxSQ1UKKyxBdXRob3I9IlBhdWwgRS4gTWNLZW5uZXkiCissVGl0bGU9IkhpZXJhcmNoaWNhbCB7UkNVfSIKKyxtb250aD0iTm92ZW1iZXIiCissZGF5PSIzIgorLHllYXI9IjIwMDgiCissbm90ZT0iXHVybHtodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8zMDU3ODIvfSIKKyxhbm5vdGF0aW9uPXsKKwlSQ1Ugd2l0aCBjb21iaW5pbmctdHJlZS1iYXNlZCBncmFjZS1wZXJpb2QgZGV0ZWN0aW9uLAorCXBlcm1pdHRpbmcgaXQgdG8gaGFuZGxlIHRob3VzYW5kcyBvZiBDUFVzLgorCVtWaWV3ZWQgTm92ZW1iZXIgNiwgMjAwOF0KK30KK30KKworQHVucHVibGlzaGVke1BhdWxFTWNLZW5uZXkyMDA5QmxvYXR3YXRjaFJDVQorLEF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSIKKyxUaXRsZT0iUmU6IFtQQVRDSCBmeWldIFJDVTogdGhlIGJsb2F0d2F0Y2ggZWRpdGlvbiIKKyxtb250aD0iSmFudWFyeSIKKyxkYXk9IjE0IgorLHllYXI9IjIwMDkiCissbm90ZT0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vbGttbC5vcmcvbGttbC8yMDA5LzEvMTQvNDQ5fQorW1ZpZXdlZCBKYW51YXJ5IDE1LCAyMDA5XSIKKyxhbm5vdGF0aW9uPXsKKwlTbWFsbC1mb290cHJpbnQgaW1wbGVtZW50YXRpb24gb2YgUkNVIGZvciB1bmlwcm9jZXNzb3IKKwllbWJlZGRlZCBhcHBsaWNhdGlvbnMgLS0gYW5kIGFsc28gZm9yIGV4cG9zaXRpb24gcHVycG9zZXMuCit9Cit9CisKK0Bjb25mZXJlbmNle1BhdWxFTWNLZW5uZXkyMDA5TWFsaWNpb3VzVVJDVQorLEF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSIKKyxUaXRsZT0iVXNpbmcgYSBNYWxpY2lvdXMgVXNlci1MZXZlbCB7UkNVfSB0byBUb3J0dXJlIHtSQ1V9LUJhc2VkIEFsZ29yaXRobXMiCissQm9va3RpdGxlPSJsaW51eC5jb25mLmF1IDIwMDkiCissbW9udGg9IkphbnVhcnkiCisseWVhcj0iMjAwOSIKKyxhZGRyZXNzPSJIb2JhcnQsIEF1c3RyYWxpYSIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly93d3cucmRyb3AuY29tL3VzZXJzL3BhdWxtY2svUkNVL3VyY3V0b3J0dXJlLjIwMDkuMDEuMjJhLnBkZn0KK1tWaWV3ZWQgRmVicnVhcnkgMiwgMjAwOV0iCissYW5ub3RhdGlvbj17CisJUmVhbHRpbWUgUkNVIGFuZCB0b3J0dXJlLXRlc3RpbmcgUkNVIHVzZXMuCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtNYXRoaWV1RGVzbm95ZXJzMjAwOVVSQ1UKKyxBdXRob3I9Ik1hdGhpZXUgRGVzbm95ZXJzIgorLFRpdGxlPSJbe1JGQ30gZ2l0IHRyZWVdIFVzZXJzcGFjZSB7UkNVfSAodXJjdSkgZm9yIHtMaW51eH0iCissbW9udGg9IkZlYnJ1YXJ5IgorLGRheT0iNSIKKyx5ZWFyPSIyMDA5IgorLG5vdGU9Ilx1cmx7aHR0cDovL2x0dG5nLm9yZy91cmN1fSIKKyxhbm5vdGF0aW9uPXsKKwlNYXRoaWV1IERlc25veWVycydzIHVzZXItc3BhY2UgUkNVIGltcGxlbWVudGF0aW9uLgorCWdpdDovL2x0dG5nLm9yZy91c2Vyc3BhY2UtcmN1LmdpdAorCWh0dHA6Ly9sdHRuZy5vcmcvY2dpLWJpbi9naXR3ZWIuY2dpP3A9dXNlcnNwYWNlLXJjdS5naXQKKwlodHRwOi8vbHR0bmcub3JnL3VyY3UKKwlodHRwOi8vbGttbC5vcmcvbGttbC8yMDA5LzIvNS81NzIKK30KK30KKworQHVucHVibGlzaGVke1BhdWxFTWNLZW5uZXkyMDA5TFdOQmxvYXRXYXRjaFJDVQorLEF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSIKKyxUaXRsZT0ie1JDVX06IFRoZSB7QmxvYXR3YXRjaH0gRWRpdGlvbiIKKyxtb250aD0iTWFyY2giCissZGF5PSIxNyIKKyx5ZWFyPSIyMDA5IgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvMzIzOTI5L30KK1tWaWV3ZWQgTWFyY2ggMjAsIDIwMDldIgorLGFubm90YXRpb249eworCVVuaXByb2Nlc3NvciBhc3N1bXB0aW9ucyBhbGxvdyBzaW1wbGlmaWVkIFJDVSBpbXBsZW1lbnRhdGlvbi4KK30KK30KKworQHVucHVibGlzaGVke0V2Z2VuaXlQb2x5YWtvdjIwMDlFbGxpcHRpY3NOZXR3b3JrCissQXV0aG9yPSJFdmdlbml5IFBvbHlha292IgorLFRpdGxlPSJUaGUgRWxsaXB0aWNzIE5ldHdvcmsiCissbW9udGg9IkFwcmlsIgorLGRheT0iMTciCisseWVhcj0iMjAwOSIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly93d3cuaW9yZW1hcC5uZXQvcHJvamVjdHMvZWxsaXB0aWNzfQorW1ZpZXdlZCBBcHJpbCAzMCwgMjAwOV0iCissYW5ub3RhdGlvbj17CisJRGlzdHJpYnV0ZWQgaGFzaCB0YWJsZSB3aXRoIHRyYW5zYWN0aW9ucywgdXNpbmcgZWxsaXB0aWMKKwloYXNoIGZ1bmN0aW9ucyB0byBkaXN0cmlidXRlIGRhdGEuCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtQYXVsRU1jS2VubmV5MjAwOWV4cGVkaXRlZFJDVQorLEF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSIKKyxUaXRsZT0iW3tQQVRDSH0gLXRpcCAwLzNdIGV4cGVkaXRlZCAnYmlnIGhhbW1lcicge1JDVX0gZ3JhY2UgcGVyaW9kcyIKKyxtb250aD0iSnVuZSIKKyxkYXk9IjI1IgorLHllYXI9IjIwMDkiCissbm90ZT0iQXZhaWxhYmxlOgorXHVybHtodHRwOi8vbGttbC5vcmcvbGttbC8yMDA5LzYvMjUvMzA2fQorW1ZpZXdlZCBBdWd1c3QgMTYsIDIwMDldIgorLGFubm90YXRpb249eworCUZpcnN0IHBvc3Rpbmcgb2YgZXhwZWRpdGVkIFJDVSB0byBiZSBhY2NlcHRlZCBpbnRvIC10aXAuCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtQYXVsRU1jS2VubmV5MjAwOWZhc3RSVFJDVQorLEF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSIKKyxUaXRsZT0iW3tQQVRDSH0ge1JGQ30gLXRpcCAwLzRdIHtSQ1V9IGNsZWFudXBzIGFuZCBzaW1wbGlmaWVkIHByZWVtcHRhYmxlIHtSQ1V9IgorLG1vbnRoPSJKdWx5IgorLGRheT0iMjMiCisseWVhcj0iMjAwOSIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDkvNy8yMy8yOTR9CitbVmlld2VkIEF1Z3VzdCAxNSwgMjAwOV0iCissYW5ub3RhdGlvbj17CisJRmlyc3QgcG9zdGluZyBvZiBzaW1wbGUgYW5kIGZhc3QgcHJlZW1wdGFibGUgUkNVLgorfQorfQorCitAdW5wdWJsaXNoZWR7Sm9zaFRyaXBsZXR0MjAwOVJQSGFzaAorLEF1dGhvcj0iSm9zaCBUcmlwbGV0dCIKKyxUaXRsZT0iU2NhbGFibGUgY29uY3VycmVudCBoYXNoIHRhYmxlcyB2aWEgcmVsYXRpdmlzdGljIHByb2dyYW1taW5nIgorLG1vbnRoPSJTZXB0ZW1iZXIiCisseWVhcj0iMjAwOSIKKyxub3RlPSJMaW51eCBQbHVtYmVycyBDb25mZXJlbmNlIHByZXNlbnRhdGlvbiIKKyxhbm5vdGF0aW9uPXsKKwlSUCBmdW4gd2l0aCBoYXNoIHRhYmxlcy4KKwlTdXBlcnNlZGVkIGJ5IEpvc2hUcmlwbGV0dDIwMTBSUEhhc2gKK30KK30KKworQHBoZHRoZXNpc3tNYXRoaWV1RGVzbm95ZXJzUGhECissIHRpdGxlICA9ICJMb3ctSW1wYWN0IE9wZXJhdGluZyBTeXN0ZW0gVHJhY2luZyIKKywgYXV0aG9yID0gIk1hdGhpZXUgRGVzbm95ZXJzIgorLCBzY2hvb2wgPSAiRWNvbGUgUG9seXRlY2huaXF1ZSBkZSBNb250clwne2V9YWwiCissIG1vbnRoICA9ICJEZWNlbWJlciIKKywgeWVhciAgID0gMjAwOQorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL3d3dy5sdHRuZy5vcmcvcHViL3RoZXNpcy9kZXNub3llcnMtZGlzc2VydGF0aW9uLTIwMDktMTIucGRmfQorW1ZpZXdlZCBEZWNlbWJlciA5LCAyMDA5XSIKKyxhbm5vdGF0aW9uPXsKKwlDaGFwdGVyIDYgKHBhZ2UgOTcpIGNvdmVycyB1c2VyLWxldmVsIFJDVS4KK30KK30KKworQHVucHVibGlzaGVke1JlbGF0aXZpc3RpY1Byb2dyYW1taW5nV2lraQorLEF1dGhvcj0iSm9zaCBUcmlwbGV0dCBhbmQgUGF1bCBFLiBNY0tlbm5leSBhbmQgSm9uYXRoYW4gV2FscG9sZSIKKyxUaXRsZT0iUmVsYXRpdmlzdGljIFByb2dyYW1taW5nIgorLG1vbnRoPSJTZXB0ZW1iZXIiCisseWVhcj0iMjAwOSIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly93aWtpLmNzLnBkeC5lZHUvcnAvfQorW1ZpZXdlZCBEZWNlbWJlciA5LCAyMDA5XSIKKyxhbm5vdGF0aW9uPXsKKwlNYWluIFJlbGF0aXZpc3RpYyBQcm9ncmFtbWluZyBXaWtpLgorfQorfQorCitAY29uZmVyZW5jZXtQYXVsRU1jS2VubmV5MjAwOURldGVybWluaXN0aWNSQ1UKKyxBdXRob3I9IlBhdWwgRS4gTWNLZW5uZXkiCissVGl0bGU9IkRldGVybWluaXN0aWMgU3luY2hyb25pemF0aW9uIGluIE11bHRpY29yZSBTeXN0ZW1zOiB0aGUgUm9sZSBvZiB7UkNVfSIKKyxCb29rdGl0bGU9IkVsZXZlbnRoIFJlYWwgVGltZSBMaW51eCBXb3Jrc2hvcCIKKyxtb250aD0iU2VwdGVtYmVyIgorLHllYXI9IjIwMDkiCissYWRkcmVzcz0iRHJlc2RlbiwgR2VybWFueSIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly93d3cucmRyb3AuY29tL3VzZXJzL3BhdWxtY2svcmVhbHRpbWUvcGFwZXIvRGV0U3luY1JDVS4yMDA5LjA4LjE4YS5wZGZ9CitbVmlld2VkIEphbnVhcnkgMTQsIDIwMDldIgorfQorCitAdW5wdWJsaXNoZWR7UGF1bEVNY0tlbm5leTIwMDlIdW50aW5nSGVpc2VuYnVncworLEF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSIKKyxUaXRsZT0iSHVudGluZyBIZWlzZW5idWdzIgorLG1vbnRoPSJOb3ZlbWJlciIKKyx5ZWFyPSIyMDA5IgorLGRheT0iMSIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9wYXVsbWNrLmxpdmVqb3VybmFsLmNvbS8xNDYzOS5odG1sfQorW1ZpZXdlZCBKdW5lIDQsIDIwMTBdIgorLGFubm90YXRpb249eworCURheS1vbmUgYnVnIGluIFRyZWUgUkNVIHRoYXQgdG9vayBmb3JldmVyIHRvIHRyYWNrIGRvd24uCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtNYXRoaWV1RGVzbm95ZXJzMjAwOWRlZmVyOnJjdQorLEF1dGhvcj0iTWF0aGlldSBEZXNub3llcnMiCissVGl0bGU9Iktlcm5lbCBSQ1U6IHNocmluayB0aGUgc2l6ZSBvZiB0aGUgc3RydWN0IHJjdVxfaGVhZCIKKyxtb250aD0iRGVjZW1iZXIiCisseWVhcj0iMjAwOSIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDkvMTAvMTgvMTI5fQorW1ZpZXdlZCBEZWNlbWJlciAyOSwgMjAwOV0iCissYW5ub3RhdGlvbj17CisJTWF0aGlldSBwcm9wb3NlZCBkZWZlcl9yY3UoKSB3aXRoIGZpeGVkLXNpemUgcGVyLXRocmVhZCBwb29sCisJb2YgUkNVIGNhbGxiYWNrcy4KK30KK30KKworQHVucHVibGlzaGVke01hdGhpZXVEZXNub3llcnMyMDA5VmVyaWZQcmVQdWIKKyxBdXRob3I9Ik1hdGhpZXUgRGVzbm95ZXJzIGFuZCBQYXVsIEUuIE1jS2VubmV5IGFuZCBNaWNoZWwgUi4gRGFnZW5haXMiCissVGl0bGU9Ik11bHRpLUNvcmUgU3lzdGVtcyBNb2RlbGluZyBmb3IgRm9ybWFsIFZlcmlmaWNhdGlvbiBvZiBQYXJhbGxlbCBBbGdvcml0aG1zIgorLG1vbnRoPSJEZWNlbWJlciIKKyx5ZWFyPSIyMDA5IgorLG5vdGU9IlN1Ym1pdHRlZCB0byBJRUVFIFRQRFMiCissYW5ub3RhdGlvbj17CisJT09NZW0gbW9kZWwgZm9yIE1hdGhpZXUncyB1c2VyLWxldmVsIFJDVSBtZWNoYW5pY2FsIHByb29mIG9mCisJY29ycmVjdG5lc3MuCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtNYXRoaWV1RGVzbm95ZXJzMjAwOVVSQ1VQcmVQdWIKKyxBdXRob3I9Ik1hdGhpZXUgRGVzbm95ZXJzIGFuZCBQYXVsIEUuIE1jS2VubmV5IGFuZCBBbGFuIFN0ZXJuIGFuZCBNaWNoZWwgUi4gRGFnZW5haXMgYW5kIEpvbmF0aGFuIFdhbHBvbGUiCissVGl0bGU9IlVzZXItTGV2ZWwgSW1wbGVtZW50YXRpb25zIG9mIFJlYWQtQ29weSBVcGRhdGUiCissbW9udGg9IkRlY2VtYmVyIgorLHllYXI9IjIwMTAiCissdXJsPXtcdXJse2h0dHA6Ly93d3cuY29tcHV0ZXIub3JnL2NzZGwvdHJhbnMvdGQvMjAxMi8wMi90dGQyMDEyMDIwMzc1LWFicy5odG1sfX0KKyxhbm5vdGF0aW9uPXsKKwlSQ1Ugb3ZlcnZpZXcsIGRlc2lkZXJhdGEsIHNlbWktZm9ybWFsIHNlbWFudGljcywgdXNlci1sZXZlbCBSQ1UKKwl1c2FnZSBzY2VuYXJpb3MsIHRocmVlIGNsYXNzZXMgb2YgUkNVIGltcGxlbWVudGF0aW9uLCB3YWl0LWZyZWUKKwlSQ1UgdXBkYXRlcywgUkNVIGdyYWNlLXBlcmlvZCBiYXRjaGluZywgdXBkYXRlIG92ZXJoZWFkLAorCWh0dHA6Ly93d3cucmRyb3AuY29tL3VzZXJzL3BhdWxtY2svUkNVL3VyY3UtbWFpbi1hY2NlcHRlZC4yMDExLjA4LjMwYS5wZGYKKwlodHRwOi8vd3d3LnJkcm9wLmNvbS91c2Vycy9wYXVsbWNrL1JDVS91cmN1LXN1cHAtYWNjZXB0ZWQuMjAxMS4wOC4zMGEucGRmCisJU3VwZXJzZWRlZCBieSBNYXRoaWV1RGVzbm95ZXJzMjAxMlVSQ1UuCit9Cit9CisKK0BpbnByb2NlZWRpbmdze0hhcmlLYW5uYW4yMDA5RHluYW1pY0FuYWx5c2lzUkNVCissYXV0aG9yID0ge0thbm5hbiwgSGFyaX0KKyx0aXRsZSA9IHtPcmRlcmluZyBkZWNvdXBsZWQgbWV0YWRhdGEgYWNjZXNzZXMgaW4gbXVsdGlwcm9jZXNzb3JzfQorLGJvb2t0aXRsZSA9IHtNSUNSTyA0MjogUHJvY2VlZGluZ3Mgb2YgdGhlIDQybmQgQW5udWFsIElFRUUvQUNNIEludGVybmF0aW9uYWwgU3ltcG9zaXVtIG9uIE1pY3JvYXJjaGl0ZWN0dXJlfQorLHllYXIgPSB7MjAwOX0KKyxpc2JuID0gezk3OC0xLTYwNTU4LTc5OC0xfQorLHBhZ2VzID0gezM4MS0tMzkwfQorLGxvY2F0aW9uID0ge05ldyBZb3JrLCBOZXcgWW9ya30KKyxkb2kgPSB7aHR0cDovL2RvaS5hY20ub3JnLzEwLjExNDUvMTY2OTExMi4xNjY5MTYxfQorLHB1Ymxpc2hlciA9IHtBQ019CissYWRkcmVzcyA9IHtOZXcgWW9yaywgTlksIFVTQX0KKyxhbm5vdGF0aW9uPXsKKwlVc2VzIFJDVSB0byBwcm90ZWN0IG1ldGFkYXRhIHVzZWQgaW4gZHluYW1pYyBhbmFseXNpcy4KK30KK30KKworQGNvbmZlcmVuY2V7UGF1bEVNY0tlbm5leTIwMTBTaW1wbGVPcHRSQ1UKKyxBdXRob3I9IlBhdWwgRS4gTWNLZW5uZXkiCissVGl0bGU9IlNpbXBsaWNpdHkgVGhyb3VnaCBPcHRpbWl6YXRpb24iCissQm9va3RpdGxlPSJsaW51eC5jb25mLmF1IDIwMTAiCissbW9udGg9IkphbnVhcnkiCisseWVhcj0iMjAxMCIKKyxhZGRyZXNzPSJXZWxsaW5ndG9uLCBOZXcgWmVhbGFuZCIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly93d3cucmRyb3AuY29tL3VzZXJzL3BhdWxtY2svUkNVL1NpbXBsaWNpdHlUaHJ1T3B0aW1pemF0aW9uLjIwMTAuMDEuMjFmLnBkZn0KK1tWaWV3ZWQgT2N0b2JlciAxMCwgMjAxMF0iCissYW5ub3RhdGlvbj17CisJVFJFRV9QUkVFTVBUX1JDVSBvcHRpbWl6YXRpb25zIGdyZWF0bHkgc2ltcGxpZmllZCB0aGUgb2xkCisJUFJFRU1QVF9SQ1UgaW1wbGVtZW50YXRpb24uCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtQYXVsRU1jS2VubmV5MjAxMExvY2tkZXBSQ1UKKyxBdXRob3I9IlBhdWwgRS4gTWNLZW5uZXkiCissVGl0bGU9IkxvY2tkZXAte1JDVX0iCissbW9udGg9IkZlYnJ1YXJ5IgorLHllYXI9IjIwMTAiCissZGF5PSIxIgorLG5vdGU9Ilx1cmx7aHR0cHM6Ly9sd24ubmV0L0FydGljbGVzLzM3MTk4Ni99IgorLGFubm90YXRpb249eworCUNPTkZJR19QUk9WRV9SQ1UsIG9yIGF0IGxlYXN0IGFuIGVhcmx5IHZlcnNpb24uCisJW1ZpZXdlZCBKdW5lIDQsIDIwMTBdCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtBdmlLaXZpdHkyMDEwS1ZNMlJDVQorLEF1dGhvcj0iQXZpIEtpdml0eSIKKyxUaXRsZT0iW3tQQVRDSH0gMzcvNDBdIHtLVk19OiBCdW1wIG1heGltdW0gdmNwdSBjb3VudCB0byA2NCIKKyxtb250aD0iRmVicnVhcnkiCisseWVhcj0iMjAxMCIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9rdm1Admdlci5rZXJuZWwub3JnL21zZzI4NjQwLmh0bWx9CitbVmlld2VkIE1hcmNoIDIwLCAyMDEwXSIKKyxhbm5vdGF0aW9uPXsKKwlVc2Ugb2YgUkNVIHBlcm1pdHMgS1ZNIHRvIGluY3JlYXNlIHRoZSBzaXplIG9mIGd1ZXN0IE9TZXMgZnJvbQorCTE2IENQVXMgdG8gNjQgQ1BVcy4KK30KK30KKworQHVucHVibGlzaGVke0hlcmJlcnRYdTIwMTBSQ1VSZXNpemVIYXNoCissQXV0aG9yPSJIZXJiZXJ0IFh1IgorLFRpdGxlPSJicmlkZ2U6IEFkZCBjb3JlIElHTVAgc25vb3Bpbmcgc3VwcG9ydCIKKyxtb250aD0iRmVicnVhcnkiCisseWVhcj0iMjAxMCIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHA6Ly90aHJlYWQuZ21hbmUub3JnL2dtYW5lLmxpbnV4Lm5ldHdvcmsvMTUzMzM4fQorW1ZpZXdlZCBKdW5lIDksIDIwMTRdIgorLGFubm90YXRpb249eworCVVzZSBhIHBhaXIgb2YgbGlzdF9oZWFkIHN0cnVjdHVyZXMgdG8gc3VwcG9ydCBSQ1UtcHJvdGVjdGVkCisJcmVzaXphYmxlIGhhc2ggdGFibGVzLgorfQorfQorCitAbWFzdGVyc3RoZXNpc3tBYmhpbmF2RHVnZ2FsMjAxME1hc3RlcnMKKyxhdXRob3I9IkFiaGluYXYgRHVnZ2FsIgorLHRpdGxlPSJTdG9wcGluZyBEYXRhIFJhY2VzIFVzaW5nIFJlZGZsYWciCissc2Nob29sPSJTdG9ueSBCcm9vayBVbml2ZXJzaXR5IgorLHllYXI9IjIwMTAiCissYW5ub3RhdGlvbj17CisJRGF0YS1yYWNlIGRldGVjdG9yIGluY29ycG9yYXRpbmcgUkNVLgorCWh0dHA6Ly93d3cuZmlsZXN5c3RlbXMub3JnL2RvY3MvYWJoaW5hdi10aGVzaXMvYWJoaW5hdl90aGVzaXMucGRmCit9Cit9CisKK0BhcnRpY2xle0pvc2hUcmlwbGV0dDIwMTBSUEhhc2gKKyxhdXRob3I9Ikpvc2ggVHJpcGxldHQgYW5kIFBhdWwgRS4gTWNLZW5uZXkgYW5kIEpvbmF0aGFuIFdhbHBvbGUiCissdGl0bGU9IlNjYWxhYmxlIENvbmN1cnJlbnQgSGFzaCBUYWJsZXMgdmlhIFJlbGF0aXZpc3RpYyBQcm9ncmFtbWluZyIKKyxqb3VybmFsPSJBQ00gT3BlcmF0aW5nIFN5c3RlbXMgUmV2aWV3IgorLHllYXI9MjAxMAorLHZvbHVtZT00NAorLG51bWJlcj0zCissbW9udGg9Ikp1bHkiCissYW5ub3RhdGlvbj17CisJUlAgZnVuIHdpdGggaGFzaCB0YWJsZXMuCisJaHR0cDovL3BvcnRhbC5hY20ub3JnL2NpdGF0aW9uLmNmbT9pZD0xODQyNzMzLjE4NDI3NTAKK30KK30KKworQHVucHVibGlzaGVke1BhdWxFTWNLZW5uZXkyMDEwUkNVQVBJCissQXV0aG9yPSJQYXVsIEUuIE1jS2VubmV5IgorLFRpdGxlPSJUaGUge1JDVX0ge0FQSX0sIDIwMTAgRWRpdGlvbiIKKyxtb250aD0iRGVjZW1iZXIiCissZGF5PSI4IgorLHllYXI9IjIwMTAiCissbm90ZT0iXHVybHtodHRwOi8vbHduLm5ldC9BcnRpY2xlcy80MTg4NTMvfSIKKyxhbm5vdGF0aW9uPXsKKwlJbmNsdWRlcyB1cGRhdGVkIHNvZnR3YXJlLWVuZ2luZWVyaW5nIGZlYXR1cmVzLgorCVtWaWV3ZWQgRGVjZW1iZXIgOCwgMjAxMF0KK30KK30KKworQG1hc3RlcnN0aGVzaXN7QW5kcmVqUG9kemltZWsyMDEwbWFzdGVycworLGF1dGhvcj0iQW5kcmVqIFBvZHppbWVrIgorLHRpdGxlPSJSZWFkLUNvcHktVXBkYXRlIGZvciBPcGVuU29sYXJpcyIKKyxzY2hvb2w9IkNoYXJsZXMgVW5pdmVyc2l0eSBpbiBQcmFndWUiCisseWVhcj0iMjAxMCIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHBzOi8vYW5kcmVqLnBvZHppbWVrLm9yZy90aGVzaXMucGRmfQorW1ZpZXdlZCBKYW51YXJ5IDMxLCAyMDExXSIKKyxhbm5vdGF0aW9uPXsKKwlSZXZpZXdzIFJDVSBpbXBsZW1lbnRhdGlvbnMgYW5kIGNyZWF0ZXMgYSBmZXcgZm9yIE9wZW5Tb2xhcmlzLgorCURyaXZlcyBxdWllc2NlbnQtc3RhdGUgZGV0ZWN0aW9uIGZyb20gUkNVIHJlYWQtc2lkZSBwcmltaXRpdmVzLAorCWluIGEgbWFubmVyIHJvdWdobHkgc2ltaWxhciB0byB0aGF0IG9mIEppbSBIb3VzdG9uLgorfQorfQorCitAdW5wdWJsaXNoZWR7TGludXNUb3J2YWxkczIwMTFMaW51eDI6NjozODpyYzE6TlBpZ2dpblZGUworLEF1dGhvcj0iTGludXMgVG9ydmFsZHMiCissVGl0bGU9IkxpbnV4IDIuNi4zOC1yYzEiCissbW9udGg9IkphbnVhcnkiCisseWVhcj0iMjAxMSIKKyxub3RlPSJBdmFpbGFibGU6CitcdXJse2h0dHBzOi8vbGttbC5vcmcvbGttbC8yMDExLzEvMTgvMzIyfQorW1ZpZXdlZCBNYXJjaCA0LCAyMDExXSIKKyxhbm5vdGF0aW9uPXsKKwkiVGhlIFJDVS1iYXNlZCBuYW1lIGxvb2t1cCBpcyBhdCB0aGUgb3RoZXIgZW5kIG9mIHRoZSBzcGVjdHJ1bSAtIHRoZQorCWFic29sdXRlIGFudGktZ2ltbWljay4gSXQncyBzb21lIHNlcmlvdXNseSBnb29kIHN0dWZmLCBhbmQgZ2V0cyByaWQgb2YKKwl0aGUgbGFzdCBtYWluIGdsb2JhbCBsb2NrIHRoYXQgcmVhbGx5IHRlbmRzIHRvIGh1cnQgc29tZSBrZXJuZWwgbG9hZHMuCisJVGhlIGRlbnRyeSBsb2NrIGlzIG5vIGxvbmdlciBhIGJpZyBzZXJpYWxpemluZyBpc3N1ZS4gV2hhdCdzIHJlYWxseQorCW5pY2UgYWJvdXQgaXQgaXMgdGhhdCBpdCBhY3R1YWxseSBpbXByb3ZlcyBwZXJmb3JtYW5jZSBhIGxvdCBldmVuIGZvcgorCXNpbmdsZS10aHJlYWRlZCBsb2FkcyAob24gYW4gU01QIGtlcm5lbCksIGJlY2F1c2UgaXQgZ2V0cyByaWQgb2Ygc29tZQorCW9mIHRoZSBtb3N0IGV4cGVuc2l2ZSBwYXJ0cyBvZiBwYXRoIGNvbXBvbmVudCBsb29rdXAsIHdoaWNoIHdhcyB0aGUKKwlkX2xvY2sgb24gZXZlcnkgY29tcG9uZW50IGxvb2t1cC4gU28gSSdtIHNlZWluZyBpbXByb3ZlbWVudHMgb2YgMzAtNTAlCisJb24gc29tZSBzZXJpb3VzbHkgcGF0aG5hbWUtbG9va3VwIGludGVuc2l2ZSBsb2Fkcy4iCit9Cit9CisKK0B0ZWNocmVwb3J0e0pvc2hUcmlwbGV0dDIwMTFSUFNjYWxhYmxlQ29ycmVjdE9yZGVyaW5nCissYXV0aG9yID0ge0pvc2ggVHJpcGxldHQgYW5kIFBoaWxpcCBXLiBIb3dhcmQgYW5kIFBhdWwgRS4gTWNLZW5uZXkgYW5kIEpvbmF0aGFuIFdhbHBvbGV9CissdGl0bGUgPSB7U2NhbGFibGUgQ29ycmVjdCBNZW1vcnkgT3JkZXJpbmcgdmlhIFJlbGF0aXZpc3RpYyBQcm9ncmFtbWluZ30KKyx5ZWFyID0gezIwMTF9CissbnVtYmVyID0gezExLTAzfQorLGluc3RpdHV0aW9uID0ge1BvcnRsYW5kIFN0YXRlIFVuaXZlcnNpdHl9Cissbm90ZSA9IHtcdXJse2h0dHA6Ly93d3cuY3MucGR4LmVkdS9wZGZzL3RyMTEwMy5wZGZ9fQorfQorCitAaW5wcm9jZWVkaW5nc3tQaGlsSG93YXJkMjAxMVJDVVRNUkJUcmVlCissYXV0aG9yID0ge1BoaWxpcCBXLiBIb3dhcmQgYW5kIEpvbmF0aGFuIFdhbHBvbGV9CissdGl0bGUgPSB7QSBSZWxhdGl2aXN0aWMgRW5oYW5jZW1lbnQgdG8gU29mdHdhcmUgVHJhbnNhY3Rpb25hbCBNZW1vcnl9CissYm9va3RpdGxlID0ge1Byb2NlZWRpbmdzIG9mIHRoZSAzcmQgVVNFTklYIGNvbmZlcmVuY2Ugb24gSG90IHRvcGljcyBpbiBwYXJhbGxlbGlzbX0KKyxzZXJpZXMgPSB7SG90UGFyJzExfQorLHllYXIgPSB7MjAxMX0KKyxsb2NhdGlvbiA9IHtCZXJrZWxleSwgQ0F9CisscGFnZXMgPSB7MS0tNn0KKyxudW1wYWdlcyA9IHs2fQorLHVybCA9IHtodHRwOi8vd3d3LnVzZW5peC5vcmcvZXZlbnQvaG90cGFyMTEvdGVjaC9maW5hbF9maWxlcy9Ib3dhcmQucGRmfQorLHB1Ymxpc2hlciA9IHtVU0VOSVggQXNzb2NpYXRpb259CissYWRkcmVzcyA9IHtCZXJrZWxleSwgQ0EsIFVTQX0KK30KKworQHRlY2hyZXBvcnR7UGF1bEVNY0tlbm5leTIwMTFjeWNsaWNwYXJhbGxlbFJDVQorLGF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSBhbmQgSm9uYXRoYW4gV2FscG9sZSIKKyx0aXRsZT0iRWZmaWNpZW50IFN1cHBvcnQgb2YgQ29uc2lzdGVudCBDeWNsaWMgU2VhcmNoIFdpdGggUmVhZC1Db3B5IFVwZGF0ZSBhbmQgUGFyYWxsZWwgVXBkYXRlcyIKKyxpbnN0aXR1dGlvbj0iVVMgUGF0ZW50IGFuZCBUcmFkZW1hcmsgT2ZmaWNlIgorLGFkZHJlc3M9Ildhc2hpbmd0b24sIERDIgorLHllYXI9IjIwMTEiCissbnVtYmVyPSJVUyBQYXRlbnQgNyw5NTMsNzc4IgorLG1vbnRoPSJNYXkiCisscGFnZXM9IjM0IgorLGFubm90YXRpb249eworCU1haW50YWlucyBhbiBhcnJheSBvZiBnZW5lcmF0aW9uIG51bWJlcnMgdG8gdHJhY2sgaW4tZmxpZ2h0CisJdXBkYXRlcyBhbmQga2VlcHMgYW4gYWRkaXRpb25hbCBsZXZlbCBvZiBpbmRpcmVjdGlvbiB0byBhbGxvdworCXJlYWRlcnMgdG8gY29uZmluZSB0aGVtc2VsdmVzIHRvIHRoZSBkZXNpcmVkIHNuYXBzaG90IG9mIHRoZQorCWRhdGEgc3RydWN0dXJlLgorfQorfQorCitAaW5wcm9jZWVkaW5nc3tUcmlwbGV0dDoyMDExOlJQSGFzaAorLGF1dGhvciA9IHtUcmlwbGV0dCwgSm9zaCBhbmQgTWNLZW5uZXksIFBhdWwgRS4gYW5kIFdhbHBvbGUsIEpvbmF0aGFufQorLHRpdGxlID0ge1Jlc2l6YWJsZSwgU2NhbGFibGUsIENvbmN1cnJlbnQgSGFzaCBUYWJsZXMgdmlhIFJlbGF0aXZpc3RpYyBQcm9ncmFtbWluZ30KKyxib29rdGl0bGUgPSB7UHJvY2VlZGluZ3Mgb2YgdGhlIDIwMTEgVVNFTklYIEFubnVhbCBUZWNobmljYWwgQ29uZmVyZW5jZX0KKyxtb250aCA9IHtKdW5lfQorLHllYXIgPSB7MjAxMX0KKyxwYWdlcyA9IHsxNDUtLTE1OH0KKyxudW1wYWdlcyA9IHsxNH0KKyx1cmw9e2h0dHA6Ly93d3cudXNlbml4Lm9yZy9ldmVudC9hdGMxMS90ZWNoL2ZpbmFsX2ZpbGVzL1RyaXBsZXR0LnBkZn0KKyxwdWJsaXNoZXIgPSB7VGhlIFVTRU5JWCBBc3NvY2lhdGlvbn0KKyxhZGRyZXNzID0ge1BvcnRsYW5kLCBPUiBVU0F9Cit9CisKK0B1bnB1Ymxpc2hlZHtQYXVsRU1jS2VubmV5MjAxMVJDVTMuMHRyYWlud3JlY2sKKyxBdXRob3I9IlBhdWwgRS4gTWNLZW5uZXkiCissVGl0bGU9IjMuMCBhbmQge1JDVTp9IHdoYXQgd2VudCB3cm9uZyIKKyxtb250aD0iSnVseSIKKyxkYXk9IjI3IgorLHllYXI9IjIwMTEiCissbm90ZT0iXHVybHtodHRwOi8vbHduLm5ldC9BcnRpY2xlcy80NTMwMDIvfSIKKyxhbm5vdGF0aW9uPXsKKwlBbmFseXNpcyBvZiB0aGUgUkNVIHRyYWlud3JlY2sgaW4gTGludXgga2VybmVsIDMuMC4KKwlbVmlld2VkIEp1bHkgMjcsIDIwMTFdCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtOZWlsQnJvd24yMDExTWVldFRoZUxvY2tlcnMKKyxBdXRob3I9Ik5laWwgQnJvd24iCissVGl0bGU9Ik1lZXQgdGhlIHtMb2NrZXJzfSIKKyxtb250aD0iQXVndXN0IgorLGRheT0iMyIKKyx5ZWFyPSIyMDExIgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvNDUzNjg1L30KK1tWaWV3ZWQgU2VwdGVtYmVyIDIsIDIwMTFdIgorLGFubm90YXRpb249eworCVRoZSBMb2NrZXIgZmFtaWx5IGFzIGFuIGFuYWxvZ3kgZm9yIGxvY2tpbmcsIHJlZmVyZW5jZSBjb3VudGluZywKKwlSQ1UsIGFuZCBzZXFsb2NrLgorfQorfQorCitAaW5wcm9jZWVkaW5nc3tTZXlzdGVyOjIwMTE6UkZBOjIwNzU0MTYuMjA3NTQyNQorLGF1dGhvciA9IHtTZXlzdGVyLCBKdXN0aW4gYW5kIFJhZGhha3Jpc2huYW4sIFByYWJha2FyIGFuZCBLYXRvY2gsIFNhbXJpdGkgYW5kIER1Z2dhbCwgQWJoaW5hdiBhbmQgU3RvbGxlciwgU2NvdHQgRC4gYW5kIFphZG9rLCBFcmV6fQorLHRpdGxlID0ge1JlZGZsYWc6IGEgZnJhbWV3b3JrIGZvciBhbmFseXNpcyBvZiBLZXJuZWwtbGV2ZWwgY29uY3VycmVuY3l9CissYm9va3RpdGxlID0ge1Byb2NlZWRpbmdzIG9mIHRoZSAxMXRoIGludGVybmF0aW9uYWwgY29uZmVyZW5jZSBvbiBBbGdvcml0aG1zIGFuZCBhcmNoaXRlY3R1cmVzIGZvciBwYXJhbGxlbCBwcm9jZXNzaW5nIC0gVm9sdW1lIFBhcnQgSX0KKyxzZXJpZXMgPSB7SUNBM1BQJzExfQorLHllYXIgPSB7MjAxMX0KKyxpc2JuID0gezk3OC0zLTY0Mi0yNDY0OS00fQorLGxvY2F0aW9uID0ge01lbGJvdXJuZSwgQXVzdHJhbGlhfQorLHBhZ2VzID0gezY2LS03OX0KKyxudW1wYWdlcyA9IHsxNH0KKyx1cmwgPSB7aHR0cDovL2RsLmFjbS5vcmcvY2l0YXRpb24uY2ZtP2lkPTIwNzU0MTYuMjA3NTQyNX0KKyxhY21pZCA9IHsyMDc1NDI1fQorLHB1Ymxpc2hlciA9IHtTcHJpbmdlci1WZXJsYWd9CissYWRkcmVzcyA9IHtCZXJsaW4sIEhlaWRlbGJlcmd9Cit9CisKK0BwaGR0aGVzaXN7Sm9zaFRyaXBsZXR0UGhECissYXV0aG9yPSJKb3NoIFRyaXBsZXR0IgorLHRpdGxlPSJSZWxhdGl2aXN0aWMgQ2F1c2FsIE9yZGVyaW5nOiBBIE1lbW9yeSBNb2RlbCBmb3IgU2NhbGFibGUgQ29uY3VycmVudCBEYXRhIFN0cnVjdHVyZXMiCissc2Nob29sPSJQb3J0bGFuZCBTdGF0ZSBVbml2ZXJzaXR5IgorLHllYXI9IjIwMTIiCissYW5ub3RhdGlvbj17CisJUkNVLXByb3RlY3RlZCBoYXNoIHRhYmxlcywgYmFycmllcnMgdnMuIHJlYWQtc2lkZSB0cmF2ZXJzYWwgb3JkZXIuCisJLgorCUlmIHRoZSB1cGRhdGVyIGlzIG1ha2luZyBjaGFuZ2VzIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gZnJvbQorCXRoZSByZWFkLXNpZGUgdHJhdmVyYWwgb3JkZXIsIHRoZSB1cGRhdGVyIG5lZWQgb25seSBleGVjdXRlIGEKKwltZW1vcnktYmFycmllciBpbnN0cnVjdGlvbiwgYnV0IGlmIGluIHRoZSBzYW1lIGRpcmVjdGlvbiwgdGhlCisJdXBkYXRlciBuZWVkcyB0byB3YWl0IGZvciBhIGdyYWNlIHBlcmlvZCBiZXR3ZWVuIHRoZSBpbmRpdmlkdWFsCisJdXBkYXRlcy4KK30KK30KKworQGFydGljbGV7TWF0aGlldURlc25veWVyczIwMTJVUkNVCissQXV0aG9yPSJNYXRoaWV1IERlc25veWVycyBhbmQgUGF1bCBFLiBNY0tlbm5leSBhbmQgQWxhbiBTdGVybiBhbmQgTWljaGVsIFIuIERhZ2VuYWlzIGFuZCBKb25hdGhhbiBXYWxwb2xlIgorLFRpdGxlPSJVc2VyLUxldmVsIEltcGxlbWVudGF0aW9ucyBvZiBSZWFkLUNvcHkgVXBkYXRlIgorLGpvdXJuYWw9IklFRUUgVHJhbnNhY3Rpb25zIG9uIFBhcmFsbGVsIGFuZCBEaXN0cmlidXRlZCBTeXN0ZW1zIgorLHZvbHVtZT17MjN9CisseWVhcj0iMjAxMiIKKyxpc3NuPSIxMDQ1LTkyMTkiCisscGFnZXM9IjM3NS0zODIiCissZG9pPSJodHRwOi8vZG9pLmllZWVjb21wdXRlcnNvY2lldHkub3JnLzEwLjExMDkvVFBEUy4yMDExLjE1OSIKKyxwdWJsaXNoZXI9IklFRUUgQ29tcHV0ZXIgU29jaWV0eSIKKyxhZGRyZXNzPSJMb3MgQWxhbWl0b3MsIENBLCBVU0EiCissYW5ub3RhdGlvbj17CisJUkNVIG92ZXJ2aWV3LCBkZXNpZGVyYXRhLCBzZW1pLWZvcm1hbCBzZW1hbnRpY3MsIHVzZXItbGV2ZWwgUkNVCisJdXNhZ2Ugc2NlbmFyaW9zLCB0aHJlZSBjbGFzc2VzIG9mIFJDVSBpbXBsZW1lbnRhdGlvbiwgd2FpdC1mcmVlCisJUkNVIHVwZGF0ZXMsIFJDVSBncmFjZS1wZXJpb2QgYmF0Y2hpbmcsIHVwZGF0ZSBvdmVyaGVhZCwKKwlodHRwOi8vd3d3LnJkcm9wLmNvbS91c2Vycy9wYXVsbWNrL1JDVS91cmN1LW1haW4tYWNjZXB0ZWQuMjAxMS4wOC4zMGEucGRmCisJaHR0cDovL3d3dy5yZHJvcC5jb20vdXNlcnMvcGF1bG1jay9SQ1UvdXJjdS1zdXBwLWFjY2VwdGVkLjIwMTEuMDguMzBhLnBkZgorCWh0dHA6Ly93d3cuY29tcHV0ZXIub3JnL2Ntcy9Db21wdXRlci5vcmcvZGwvdHJhbnMvdGQvMjAxMi8wMi9leHRyYXMvdHRkMjAxMjAyMDM3NXMucGRmCit9Cit9CisKK0BpbnByb2NlZWRpbmdze0F1c3RpbkNsZW1lbnRzMjAxMlJDVUxpbnV4Om1tYXBzZW0KKyxhdXRob3IgPSB7QXVzdGluIENsZW1lbnRzIGFuZCBGcmFucyBLYWFzaG9layBhbmQgTmlja29sYWkgWmVsZG92aWNofQorLHRpdGxlID0ge1NjYWxhYmxlIEFkZHJlc3MgU3BhY2VzIFVzaW5nIHtSQ1V9IEJhbGFuY2VkIFRyZWVzfQorLGJvb2t0aXRsZSA9IHtBcmNoaXRlY3R1cmFsIFN1cHBvcnQgZm9yIFByb2dyYW1taW5nIExhbmd1YWdlcyBhbmQgT3BlcmF0aW5nIFN5c3RlbXMgKEFTUExPUyAyMDEyKX0KKyxtb250aCA9IHtNYXJjaH0KKyx5ZWFyID0gezIwMTJ9CisscGFnZXMgPSB7MTk5LS0yMTB9CissbnVtcGFnZXMgPSB7MTJ9CisscHVibGlzaGVyID0ge0FDTX0KKyxhZGRyZXNzID0ge0xvbmRvbiwgVUt9CissdXJsPSJodHRwOi8vcGVvcGxlLmNzYWlsLm1pdC5lZHUvbmlja29sYWkvcGFwZXJzL2NsZW1lbnRzLWJvbnNhaS5wZGYiCit9CisKK0B1bnB1Ymxpc2hlZHtQYXVsRU1jS2VubmV5MjAxMkVMQ2JhdHRlcnkKKyxBdXRob3I9IlBhdWwgRS4gTWNLZW5uZXkiCissVGl0bGU9Ik1ha2luZyB7UkNVfSBTYWZlIEZvciBCYXR0ZXJ5LVBvd2VyZWQgRGV2aWNlcyIKKyxtb250aD0iRmVicnVhcnkiCissZGF5PSIxNSIKKyx5ZWFyPSIyMDEyIgorLG5vdGU9IkF2YWlsYWJsZToKK1x1cmx7aHR0cDovL3d3dy5yZHJvcC5jb20vdXNlcnMvcGF1bG1jay9SQ1UvUkNVZHludGlja3MuMjAxMi4wMi4xNWIucGRmfQorW1ZpZXdlZCBNYXJjaCAxLCAyMDEyXSIKKyxhbm5vdGF0aW9uPXsKKwlSQ1VfRkFTVF9OT19IWiwgcm91bmQgMi4KK30KK30KKworQGFydGljbGV7R3VpbGxlcm1vVmlndWVyYXMyMDEyUkNVQ3Jvd2QKKyxhdXRob3IgPSB7VmlndWVyYXMsIEd1aWxsZXJtbyBhbmQgT3JkdVx+e259YSwgSnVhbiBNLiBhbmQgTG96YW5vLCBNaWd1ZWx9CissZGF5ID0gezI1fQorLGRvaSA9IHsxMC4xMDA3L3MxMTIyNy0wMTItMDc2Ni14fQorLGlzc24gPSB7MDkyMC04NTQyfQorLGpvdXJuYWwgPSB7VGhlIEpvdXJuYWwgb2YgU3VwZXJjb21wdXRpbmd9Cissa2V5d29yZHMgPSB7bGludXgsIHNpbXVsYXRpb259CissbW9udGggPSBhcHIKKyxwb3N0ZWQtYXQgPSB7MjAxMi0wNS0wMyAwOToxMjowNH0KKyxwcmlvcml0eSA9IHsyfQorLHRpdGxlID0ge3tBIFJlYWQtQ29weSBVcGRhdGUgYmFzZWQgcGFyYWxsZWwgc2VydmVyIGZvciBkaXN0cmlidXRlZCBjcm93ZCBzaW11bGF0aW9uc319CissdXJsID0ge2h0dHA6Ly9keC5kb2kub3JnLzEwLjEwMDcvczExMjI3LTAxMi0wNzY2LXh9CisseWVhciA9IHsyMDEyfQorfQorCisKK0B1bnB1Ymxpc2hlZHtKb25Db3JiZXQyMDEyQUNDRVNTOk9OQ0UKKyxBdXRob3I9IkpvbiBDb3JiZXQiCissVGl0bGU9IntBQ0NFU1NcX09OQ0UoKX0iCissbW9udGg9IkF1Z3VzdCIKKyxkYXk9IjEiCisseWVhcj0iMjAxMiIKKyxub3RlPSJcdXJse2h0dHA6Ly9sd24ubmV0L0FydGljbGVzLzUwODk5MS99IgorLGFubm90YXRpb249eworCUEgY291cGxlIG9mIHNpbXBsZSBzcGVjaWZpYyBjb21waWxlciBvcHRpbWl6YXRpb25zIHRoYXQgbW90aXZhdGUKKwlBQ0NFU1NfT05DRSgpLgorfQorfQorCitAdW5wdWJsaXNoZWR7QWxleGV5R290c21hbjIwMTJWZXJpZnlHcmFjZUV4dGVuZGVkCissQXV0aG9yPSJBbGV4ZXkgR290c21hbiBhbmQgTm9hbSBSaW5ldHpreSBhbmQgSG9uZ3Nlb2sgWWFuZyIKKyxUaXRsZT0iVmVyaWZ5aW5nIEhpZ2hseSBDb25jdXJyZW50IEFsZ29yaXRobXMgd2l0aCBHcmFjZSAoZXh0ZW5kZWQgdmVyc2lvbikiCissbW9udGg9Ikp1bHkiCissZGF5PSIxMCIKKyx5ZWFyPSIyMDEyIgorLG5vdGU9Ilx1cmx7aHR0cDovL3NvZnR3YXJlLmltZGVhLm9yZy9+Z290c21hbi9wYXBlcnMvcmVjeWNsaW5nLWVzb3AxMy1leHQucGRmfSIKKyxhbm5vdGF0aW9uPXsKKwlTZXBhcmF0aW9uLWxvZ2ljIGZvcm11bGF0aW9uIG9mIFJDVSB1c2VzLgorfQorfQorCitAdW5wdWJsaXNoZWR7UGF1bE1jS2VubmV5MjAxMlJDVVVzYWdlCissQXV0aG9yPSJQYXVsIEUuIE1jS2VubmV5IGFuZCBTaWxhcyBCb3lkLVdpY2tpemVyIGFuZCBKb25hdGhhbiBXYWxwb2xlIgorLFRpdGxlPSJ7UkNVfSBVc2FnZSBJbiB0aGUgTGludXggS2VybmVsOiBPbmUgRGVjYWRlIExhdGVyIgorLG1vbnRoPSJTZXB0ZW1iZXIiCissZGF5PSIxNyIKKyx5ZWFyPSIyMDEyIgorLHVybD1odHRwOi8vcmRyb3AuY29tL3VzZXJzL3BhdWxtY2svdGVjaHJlcG9ydHMvc3VydmV5LjIwMTIuMDkuMTdhLnBkZgorLG5vdGU9IlRlY2huaWNhbCByZXBvcnQgcGF1bG1jay4yMDEyLjA5LjE3IgorLGFubm90YXRpb249eworCU92ZXJ2aWV3IG9mIHRoZSBmaXJzdCB2YXJpYW50IG9mIG5vLUNCcyBDUFVzIGZvciBSQ1UuCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtKb25Db3JiZXQyMDEyTk9DQgorLEF1dGhvcj0iSm9uIENvcmJldCIKKyxUaXRsZT0iUmVsb2NhdGluZyBSQ1UgY2FsbGJhY2tzIgorLG1vbnRoPSJPY3RvYmVyIgorLGRheT0iMzEiCisseWVhcj0iMjAxMiIKKyxub3RlPSJcdXJse2h0dHA6Ly9sd24ubmV0L0FydGljbGVzLzUyMjI2Mi99IgorLGFubm90YXRpb249eworCU92ZXJ2aWV3IG9mIHRoZSBmaXJzdCB2YXJpYW50IG9mIG5vLUNCcyBDUFVzIGZvciBSQ1UuCit9Cit9CisKK0BwaGR0aGVzaXN7SnVzdGluU2V5c3RlcjIwMTJQaEQKKyxhdXRob3I9Ikp1c3RpbiBTZXlzdGVyIgorLHRpdGxlPSJSdW50aW1lIFZlcmlmaWNhdGlvbiBvZiBLZXJuZWwtTGV2ZWwgQ29uY3VycmVuY3kgVXNpbmcgQ29tcGlsZXItQmFzZWQgSW5zdHJ1bWVudGF0aW9uIgorLHNjaG9vbD0iU3RvbnkgQnJvb2sgVW5pdmVyc2l0eSIKKyx5ZWFyPSIyMDEyIgorLGFubm90YXRpb249eworCUxvb2tpbmcgZm9yIGRhdGEgcmFjZXMsIGluY2x1ZGluZyB0aG9zZSBpbnZvbHZpbmcgUkNVLgorCVByb3Bvc2FsOgorCWh0dHA6Ly93d3cuZnNsLmNzLnN1bnlzYi5lZHUvZG9jcy9qc2V5c3Rlci1wcm9wb3NhbC9yZWRmbGFnLnBkZgorCURpc3NlcnRhdGlvbjoKKwlodHRwOi8vd3d3LmZzbC5jcy5zdW55c2IuZWR1L2RvY3MvanNleXN0ZXItZGlzc2VydGF0aW9uL3JlZGZsYWcucGRmCit9Cit9CisKK0B1bnB1Ymxpc2hlZHtQYXVsRU1jS2VubmV5MjAxM1JDVVVzYWdlCissQXV0aG9yPSJQYXVsIEUuIE1jS2VubmV5IGFuZCBTaWxhcyBCb3lkLVdpY2tpemVyIGFuZCBKb25hdGhhbiBXYWxwb2xlIgorLFRpdGxlPSJ7UkNVfSBVc2FnZSBpbiB0aGUge0xpbnV4fSBLZXJuZWw6IE9uZSBEZWNhZGUgTGF0ZXIiCissbW9udGg9IkZlYnJ1YXJ5IgorLGRheT0iMjQiCisseWVhcj0iMjAxMyIKKyxub3RlPSJcdXJse2h0dHA6Ly9yZHJvcC5jb20vdXNlcnMvcGF1bG1jay90ZWNocmVwb3J0cy9SQ1VVc2FnZS4yMDEzLjAyLjI0YS5wZGZ9IgorLGFubm90YXRpb249eworCVVzYWdlIG9mIFJDVSB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbC4KK30KK30KKworQGlucHJvY2VlZGluZ3N7QWxleGV5R290c21hbjIwMTNFU09QUkNVCissYXV0aG9yID0ge0FsZXhleSBHb3RzbWFuIGFuZCBOb2FtIFJpbmV0emt5IGFuZCBIb25nc2VvayBZYW5nfQorLHRpdGxlID0ge1ZlcmlmeWluZyBjb25jdXJyZW50IG1lbW9yeSByZWNsYW1hdGlvbiBhbGdvcml0aG1zIHdpdGggZ3JhY2V9CissYm9va3RpdGxlID0ge0VTT1AnMTM6IEV1cm9wZWFuIFN5bXBvc2l1bSBvbiBQcm9ncmFtbWluZ30KKyx5ZWFyID0gezIwMTN9CisscGFnZXMgPSB7MjQ5LS0yNjl9CisscHVibGlzaGVyID0ge1NwcmluZ2VyfQorLGFkZHJlc3MgPSB7Um9tZSwgSXRhbHl9CissYW5ub3RhdGlvbj17CisJaHR0cDovL3NvZnR3YXJlLmltZGVhLm9yZy9+Z290c21hbi9wYXBlcnMvcmVjeWNsaW5nLWVzb3AxMy5wZGYKK30KK30KKworQHVucHVibGlzaGVke1BhdWxFTWNLZW5uZXkyMDEzTm9UaW55UHJlZW1wdAorLEF1dGhvcj0iUGF1bCBFLiBNY0tlbm5leSIKKyxUaXRsZT0iU2ltcGxpZnlpbmcgUkNVIgorLG1vbnRoPSJNYXJjaCIKKyxkYXk9IjYiCisseWVhcj0iMjAxMyIKKyxub3RlPSJcdXJse2h0dHA6Ly9sd24ubmV0L0FydGljbGVzLzU0MTAzNy99IgorLGFubm90YXRpb249eworCUdldHRpbmcgcmlkIG9mIFRJTllfUFJFRU1QVF9SQ1UuCit9Cit9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JDVS9VUC50eHQgYi9Eb2N1bWVudGF0aW9uL1JDVS9VUC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBlYzUzNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUkNVL1VQLnR4dApAQCAtMCwwICsxLDEzNSBAQAorUkNVIG9uIFVuaXByb2Nlc3NvciBTeXN0ZW1zCisKKworQSBjb21tb24gbWlzY29uY2VwdGlvbiBpcyB0aGF0LCBvbiBVUCBzeXN0ZW1zLCB0aGUgY2FsbF9yY3UoKSBwcmltaXRpdmUKK21heSBpbW1lZGlhdGVseSBpbnZva2UgaXRzIGZ1bmN0aW9uLiAgVGhlIGJhc2lzIG9mIHRoaXMgbWlzY29uY2VwdGlvbgoraXMgdGhhdCBzaW5jZSB0aGVyZSBpcyBvbmx5IG9uZSBDUFUsIGl0IHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5IHRvCit3YWl0IGZvciBhbnl0aGluZyBlbHNlIHRvIGdldCBkb25lLCBzaW5jZSB0aGVyZSBhcmUgbm8gb3RoZXIgQ1BVcyBmb3IKK2FueXRoaW5nIGVsc2UgdG8gYmUgaGFwcGVuaW5nIG9uLiAgQWx0aG91Z2ggdGhpcyBhcHByb2FjaCB3aWxsIC1zb3J0LSAtb2YtCit3b3JrIGEgc3VycHJpc2luZyBhbW91bnQgb2YgdGhlIHRpbWUsIGl0IGlzIGEgdmVyeSBiYWQgaWRlYSBpbiBnZW5lcmFsLgorVGhpcyBkb2N1bWVudCBwcmVzZW50cyB0aHJlZSBleGFtcGxlcyB0aGF0IGRlbW9uc3RyYXRlIGV4YWN0bHkgaG93IGJhZAorYW4gaWRlYSB0aGlzIGlzLgorCisKK0V4YW1wbGUgMTogc29mdGlycSBTdWljaWRlCisKK1N1cHBvc2UgdGhhdCBhbiBSQ1UtYmFzZWQgYWxnb3JpdGhtIHNjYW5zIGEgbGlua2VkIGxpc3QgY29udGFpbmluZworZWxlbWVudHMgQSwgQiwgYW5kIEMgaW4gcHJvY2VzcyBjb250ZXh0LCBhbmQgY2FuIGRlbGV0ZSBlbGVtZW50cyBmcm9tCit0aGlzIHNhbWUgbGlzdCBpbiBzb2Z0aXJxIGNvbnRleHQuICBTdXBwb3NlIHRoYXQgdGhlIHByb2Nlc3MtY29udGV4dCBzY2FuCitpcyByZWZlcmVuY2luZyBlbGVtZW50IEIgd2hlbiBpdCBpcyBpbnRlcnJ1cHRlZCBieSBzb2Z0aXJxIHByb2Nlc3NpbmcsCit3aGljaCBkZWxldGVzIGVsZW1lbnQgQiwgYW5kIHRoZW4gaW52b2tlcyBjYWxsX3JjdSgpIHRvIGZyZWUgZWxlbWVudCBCCithZnRlciBhIGdyYWNlIHBlcmlvZC4KKworTm93LCBpZiBjYWxsX3JjdSgpIHdlcmUgdG8gZGlyZWN0bHkgaW52b2tlIGl0cyBhcmd1bWVudHMsIHRoZW4gdXBvbiByZXR1cm4KK2Zyb20gc29mdGlycSwgdGhlIGxpc3Qgc2NhbiB3b3VsZCBmaW5kIGl0c2VsZiByZWZlcmVuY2luZyBhIG5ld2x5IGZyZWVkCitlbGVtZW50IEIuICBUaGlzIHNpdHVhdGlvbiBjYW4gZ3JlYXRseSBkZWNyZWFzZSB0aGUgbGlmZSBleHBlY3RhbmN5IG9mCit5b3VyIGtlcm5lbC4KKworVGhpcyBzYW1lIHByb2JsZW0gY2FuIG9jY3VyIGlmIGNhbGxfcmN1KCkgaXMgaW52b2tlZCBmcm9tIGEgaGFyZHdhcmUKK2ludGVycnVwdCBoYW5kbGVyLgorCisKK0V4YW1wbGUgMjogRnVuY3Rpb24tQ2FsbCBGYXRhbGl0eQorCitPZiBjb3Vyc2UsIG9uZSBjb3VsZCBhdmVydCB0aGUgc3VpY2lkZSBkZXNjcmliZWQgaW4gdGhlIHByZWNlZGluZyBleGFtcGxlCitieSBoYXZpbmcgY2FsbF9yY3UoKSBkaXJlY3RseSBpbnZva2UgaXRzIGFyZ3VtZW50cyBvbmx5IGlmIGl0IHdhcyBjYWxsZWQKK2Zyb20gcHJvY2VzcyBjb250ZXh0LiAgSG93ZXZlciwgdGhpcyBjYW4gZmFpbCBpbiBhIHNpbWlsYXIgbWFubmVyLgorCitTdXBwb3NlIHRoYXQgYW4gUkNVLWJhc2VkIGFsZ29yaXRobSBhZ2FpbiBzY2FucyBhIGxpbmtlZCBsaXN0IGNvbnRhaW5pbmcKK2VsZW1lbnRzIEEsIEIsIGFuZCBDIGluIHByb2Nlc3MgY29udGV4dHMsIGJ1dCB0aGF0IGl0IGludm9rZXMgYSBmdW5jdGlvbgorb24gZWFjaCBlbGVtZW50IGFzIGl0IGlzIHNjYW5uZWQuICBTdXBwb3NlIGZ1cnRoZXIgdGhhdCB0aGlzIGZ1bmN0aW9uCitkZWxldGVzIGVsZW1lbnQgQiBmcm9tIHRoZSBsaXN0LCB0aGVuIHBhc3NlcyBpdCB0byBjYWxsX3JjdSgpIGZvciBkZWZlcnJlZAorZnJlZWluZy4gIFRoaXMgbWF5IGJlIGEgYml0IHVuY29udmVudGlvbmFsLCBidXQgaXQgaXMgcGVyZmVjdGx5IGxlZ2FsCitSQ1UgdXNhZ2UsIHNpbmNlIGNhbGxfcmN1KCkgbXVzdCB3YWl0IGZvciBhIGdyYWNlIHBlcmlvZCB0byBlbGFwc2UuCitUaGVyZWZvcmUsIGluIHRoaXMgY2FzZSwgYWxsb3dpbmcgY2FsbF9yY3UoKSB0byBpbW1lZGlhdGVseSBpbnZva2UKK2l0cyBhcmd1bWVudHMgd291bGQgY2F1c2UgaXQgdG8gZmFpbCB0byBtYWtlIHRoZSBmdW5kYW1lbnRhbCBndWFyYW50ZWUKK3VuZGVybHlpbmcgUkNVLCBuYW1lbHkgdGhhdCBjYWxsX3JjdSgpIGRlZmVycyBpbnZva2luZyBpdHMgYXJndW1lbnRzIHVudGlsCithbGwgUkNVIHJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9ucyBjdXJyZW50bHkgZXhlY3V0aW5nIGhhdmUgY29tcGxldGVkLgorCitRdWljayBRdWl6ICMxOiB3aHkgaXMgaXQgLW5vdC0gbGVnYWwgdG8gaW52b2tlIHN5bmNocm9uaXplX3JjdSgpIGluCisJdGhpcyBjYXNlPworCisKK0V4YW1wbGUgMzogRGVhdGggYnkgRGVhZGxvY2sKKworU3VwcG9zZSB0aGF0IGNhbGxfcmN1KCkgaXMgaW52b2tlZCB3aGlsZSBob2xkaW5nIGEgbG9jaywgYW5kIHRoYXQgdGhlCitjYWxsYmFjayBmdW5jdGlvbiBtdXN0IGFjcXVpcmUgdGhpcyBzYW1lIGxvY2suICBJbiB0aGlzIGNhc2UsIGlmCitjYWxsX3JjdSgpIHdlcmUgdG8gZGlyZWN0bHkgaW52b2tlIHRoZSBjYWxsYmFjaywgdGhlIHJlc3VsdCB3b3VsZAorYmUgc2VsZi1kZWFkbG9jay4KKworSW4gc29tZSBjYXNlcywgaXQgd291bGQgcG9zc2libGUgdG8gcmVzdHJ1Y3R1cmUgdG8gY29kZSBzbyB0aGF0Cit0aGUgY2FsbF9yY3UoKSBpcyBkZWxheWVkIHVudGlsIGFmdGVyIHRoZSBsb2NrIGlzIHJlbGVhc2VkLiAgSG93ZXZlciwKK3RoZXJlIGFyZSBjYXNlcyB3aGVyZSB0aGlzIGNhbiBiZSBxdWl0ZSB1Z2x5OgorCisxLglJZiBhIG51bWJlciBvZiBpdGVtcyBuZWVkIHRvIGJlIHBhc3NlZCB0byBjYWxsX3JjdSgpIHdpdGhpbgorCXRoZSBzYW1lIGNyaXRpY2FsIHNlY3Rpb24sIHRoZW4gdGhlIGNvZGUgd291bGQgbmVlZCB0byBjcmVhdGUKKwlhIGxpc3Qgb2YgdGhlbSwgdGhlbiB0cmF2ZXJzZSB0aGUgbGlzdCBvbmNlIHRoZSBsb2NrIHdhcworCXJlbGVhc2VkLgorCisyLglJbiBzb21lIGNhc2VzLCB0aGUgbG9jayB3aWxsIGJlIGhlbGQgYWNyb3NzIHNvbWUga2VybmVsIEFQSSwKKwlzbyB0aGF0IGRlbGF5aW5nIHRoZSBjYWxsX3JjdSgpIHVudGlsIHRoZSBsb2NrIGlzIHJlbGVhc2VkCisJcmVxdWlyZXMgdGhhdCB0aGUgZGF0YSBpdGVtIGJlIHBhc3NlZCB1cCB2aWEgYSBjb21tb24gQVBJLgorCUl0IGlzIGZhciBiZXR0ZXIgdG8gZ3VhcmFudGVlIHRoYXQgY2FsbGJhY2tzIGFyZSBpbnZva2VkCisJd2l0aCBubyBsb2NrcyBoZWxkIHRoYW4gdG8gaGF2ZSB0byBtb2RpZnkgc3VjaCBBUElzIHRvIGFsbG93CisJYXJiaXRyYXJ5IGRhdGEgaXRlbXMgdG8gYmUgcGFzc2VkIGJhY2sgdXAgdGhyb3VnaCB0aGVtLgorCitJZiBjYWxsX3JjdSgpIGRpcmVjdGx5IGludm9rZXMgdGhlIGNhbGxiYWNrLCBwYWluZnVsIGxvY2tpbmcgcmVzdHJpY3Rpb25zCitvciBBUEkgY2hhbmdlcyB3b3VsZCBiZSByZXF1aXJlZC4KKworUXVpY2sgUXVpeiAjMjogV2hhdCBsb2NraW5nIHJlc3RyaWN0aW9uIG11c3QgUkNVIGNhbGxiYWNrcyByZXNwZWN0PworCisKK1N1bW1hcnkKKworUGVybWl0dGluZyBjYWxsX3JjdSgpIHRvIGltbWVkaWF0ZWx5IGludm9rZSBpdHMgYXJndW1lbnRzIGJyZWFrcyBSQ1UsCitldmVuIG9uIGEgVVAgc3lzdGVtLiAgU28gZG8gbm90IGRvIGl0ISAgRXZlbiBvbiBhIFVQIHN5c3RlbSwgdGhlIFJDVQoraW5mcmFzdHJ1Y3R1cmUgLW11c3QtIHJlc3BlY3QgZ3JhY2UgcGVyaW9kcywgYW5kIC1tdXN0LSBpbnZva2UgY2FsbGJhY2tzCitmcm9tIGEga25vd24gZW52aXJvbm1lbnQgaW4gd2hpY2ggbm8gbG9ja3MgYXJlIGhlbGQuCisKK0l0IC1pcy0gc2FmZSBmb3Igc3luY2hyb25pemVfc2NoZWQoKSBhbmQgc3luY2hyb25pemVfcmN1X2JoKCkgdG8gcmV0dXJuCitpbW1lZGlhdGVseSBvbiBhbiBVUCBzeXN0ZW0uICBJdCBpcyBhbHNvIHNhZmUgZm9yIHN5bmNocm9uaXplX3JjdSgpCit0byByZXR1cm4gaW1tZWRpYXRlbHkgb24gVVAgc3lzdGVtcywgZXhjZXB0IHdoZW4gcnVubmluZyBwcmVlbXB0YWJsZQorUkNVLgorCitRdWljayBRdWl6ICMzOiBXaHkgY2FuJ3Qgc3luY2hyb25pemVfcmN1KCkgcmV0dXJuIGltbWVkaWF0ZWx5IG9uCisJVVAgc3lzdGVtcyBydW5uaW5nIHByZWVtcHRhYmxlIFJDVT8KKworCitBbnN3ZXIgdG8gUXVpY2sgUXVpeiAjMToKKwlXaHkgaXMgaXQgLW5vdC0gbGVnYWwgdG8gaW52b2tlIHN5bmNocm9uaXplX3JjdSgpIGluIHRoaXMgY2FzZT8KKworCUJlY2F1c2UgdGhlIGNhbGxpbmcgZnVuY3Rpb24gaXMgc2Nhbm5pbmcgYW4gUkNVLXByb3RlY3RlZCBsaW5rZWQKKwlsaXN0LCBhbmQgaXMgdGhlcmVmb3JlIHdpdGhpbiBhbiBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb24uCisJVGhlcmVmb3JlLCB0aGUgY2FsbGVkIGZ1bmN0aW9uIGhhcyBiZWVuIGludm9rZWQgd2l0aGluIGFuIFJDVQorCXJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9uLCBhbmQgaXMgbm90IHBlcm1pdHRlZCB0byBibG9jay4KKworQW5zd2VyIHRvIFF1aWNrIFF1aXogIzI6CisJV2hhdCBsb2NraW5nIHJlc3RyaWN0aW9uIG11c3QgUkNVIGNhbGxiYWNrcyByZXNwZWN0PworCisJQW55IGxvY2sgdGhhdCBpcyBhY3F1aXJlZCB3aXRoaW4gYW4gUkNVIGNhbGxiYWNrIG11c3QgYmUKKwlhY3F1aXJlZCBlbHNld2hlcmUgdXNpbmcgYW4gX2lycSB2YXJpYW50IG9mIHRoZSBzcGlubG9jaworCXByaW1pdGl2ZS4gIEZvciBleGFtcGxlLCBpZiAibXlsb2NrIiBpcyBhY3F1aXJlZCBieSBhbgorCVJDVSBjYWxsYmFjaywgdGhlbiBhIHByb2Nlc3MtY29udGV4dCBhY3F1aXNpdGlvbiBvZiB0aGlzCisJbG9jayBtdXN0IHVzZSBzb21ldGhpbmcgbGlrZSBzcGluX2xvY2tfaXJxc2F2ZSgpIHRvCisJYWNxdWlyZSB0aGUgbG9jay4KKworCUlmIHRoZSBwcm9jZXNzLWNvbnRleHQgY29kZSB3ZXJlIHRvIHNpbXBseSB1c2Ugc3Bpbl9sb2NrKCksCisJdGhlbiwgc2luY2UgUkNVIGNhbGxiYWNrcyBjYW4gYmUgaW52b2tlZCBmcm9tIHNvZnRpcnEgY29udGV4dCwKKwl0aGUgY2FsbGJhY2sgbWlnaHQgYmUgY2FsbGVkIGZyb20gYSBzb2Z0aXJxIHRoYXQgaW50ZXJydXB0ZWQKKwl0aGUgcHJvY2Vzcy1jb250ZXh0IGNyaXRpY2FsIHNlY3Rpb24uICBUaGlzIHdvdWxkIHJlc3VsdCBpbgorCXNlbGYtZGVhZGxvY2suCisKKwlUaGlzIHJlc3RyaWN0aW9uIG1pZ2h0IHNlZW0gZ3JhdHVpdG91cywgc2luY2UgdmVyeSBmZXcgUkNVCisJY2FsbGJhY2tzIGFjcXVpcmUgbG9ja3MgZGlyZWN0bHkuICBIb3dldmVyLCBhIGdyZWF0IG1hbnkgUkNVCisJY2FsbGJhY2tzIGRvIGFjcXVpcmUgbG9ja3MgLWluZGlyZWN0bHktLCBmb3IgZXhhbXBsZSwgdmlhCisJdGhlIGtmcmVlKCkgcHJpbWl0aXZlLgorCitBbnN3ZXIgdG8gUXVpY2sgUXVpeiAjMzoKKwlXaHkgY2FuJ3Qgc3luY2hyb25pemVfcmN1KCkgcmV0dXJuIGltbWVkaWF0ZWx5IG9uIFVQIHN5c3RlbXMKKwlydW5uaW5nIHByZWVtcHRhYmxlIFJDVT8KKworCUJlY2F1c2Ugc29tZSBvdGhlciB0YXNrIG1pZ2h0IGhhdmUgYmVlbiBwcmVlbXB0ZWQgaW4gdGhlIG1pZGRsZQorCW9mIGFuIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbi4gIElmIHN5bmNocm9uaXplX3JjdSgpCisJc2ltcGx5IGltbWVkaWF0ZWx5IHJldHVybmVkLCBpdCB3b3VsZCBwcmVtYXR1cmVseSBzaWduYWwgdGhlCisJZW5kIG9mIHRoZSBncmFjZSBwZXJpb2QsIHdoaWNoIHdvdWxkIGNvbWUgYXMgYSBuYXN0eSBzaG9jayB0bworCXRoYXQgb3RoZXIgdGhyZWFkIHdoZW4gaXQgc3RhcnRlZCBydW5uaW5nIGFnYWluLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SQ1UvYXJyYXlSQ1UudHh0IGIvRG9jdW1lbnRhdGlvbi9SQ1UvYXJyYXlSQ1UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNWE5YWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1JDVS9hcnJheVJDVS50eHQKQEAgLTAsMCArMSwxNTMgQEAKK1VzaW5nIFJDVSB0byBQcm90ZWN0IFJlYWQtTW9zdGx5IEFycmF5cworCisKK0FsdGhvdWdoIFJDVSBpcyBtb3JlIGNvbW1vbmx5IHVzZWQgdG8gcHJvdGVjdCBsaW5rZWQgbGlzdHMsIGl0IGNhbgorYWxzbyBiZSB1c2VkIHRvIHByb3RlY3QgYXJyYXlzLiAgVGhyZWUgc2l0dWF0aW9ucyBhcmUgYXMgZm9sbG93czoKKworMS4gIEhhc2ggVGFibGVzCisKKzIuICBTdGF0aWMgQXJyYXlzCisKKzMuICBSZXNpemVhYmxlIEFycmF5cworCitFYWNoIG9mIHRoZXNlIHRocmVlIHNpdHVhdGlvbnMgaW52b2x2ZXMgYW4gUkNVLXByb3RlY3RlZCBwb2ludGVyIHRvIGFuCithcnJheSB0aGF0IGlzIHNlcGFyYXRlbHkgaW5kZXhlZC4gIEl0IG1pZ2h0IGJlIHRlbXB0aW5nIHRvIGNvbnNpZGVyIHVzZQorb2YgUkNVIHRvIGluc3RlYWQgcHJvdGVjdCB0aGUgaW5kZXggaW50byBhbiBhcnJheSwgaG93ZXZlciwgdGhpcyB1c2UKK2Nhc2UgaXMgLW5vdC0gc3VwcG9ydGVkLiAgVGhlIHByb2JsZW0gd2l0aCBSQ1UtcHJvdGVjdGVkIGluZGV4ZXMgaW50bworYXJyYXlzIGlzIHRoYXQgY29tcGlsZXJzIGNhbiBwbGF5IHdheSB0b28gbWFueSBvcHRpbWl6YXRpb24gZ2FtZXMgd2l0aAoraW50ZWdlcnMsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIHJ1bGVzIGdvdmVybmluZyBoYW5kbGluZyBvZiB0aGVzZSBpbmRleGVzCithcmUgZmFyIG1vcmUgdHJvdWJsZSB0aGFuIHRoZXkgYXJlIHdvcnRoLiAgSWYgUkNVLXByb3RlY3RlZCBpbmRleGVzIGludG8KK2FycmF5cyBwcm92ZSB0byBiZSBwYXJ0aWN1bGFybHkgdmFsdWFibGUgKHdoaWNoIHRoZXkgaGF2ZSBub3QgdGh1cyBmYXIpLAorZXhwbGljaXQgY29vcGVyYXRpb24gZnJvbSB0aGUgY29tcGlsZXIgd2lsbCBiZSByZXF1aXJlZCB0byBwZXJtaXQgdGhlbQordG8gYmUgc2FmZWx5IHVzZWQuCisKK1RoYXQgYXNpZGUsIGVhY2ggb2YgdGhlIHRocmVlIFJDVS1wcm90ZWN0ZWQgcG9pbnRlciBzaXR1YXRpb25zIGFyZQorZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMuCisKKworU2l0dWF0aW9uIDE6IEhhc2ggVGFibGVzCisKK0hhc2ggdGFibGVzIGFyZSBvZnRlbiBpbXBsZW1lbnRlZCBhcyBhbiBhcnJheSwgd2hlcmUgZWFjaCBhcnJheSBlbnRyeQoraGFzIGEgbGlua2VkLWxpc3QgaGFzaCBjaGFpbi4gIEVhY2ggaGFzaCBjaGFpbiBjYW4gYmUgcHJvdGVjdGVkIGJ5IFJDVQorYXMgZGVzY3JpYmVkIGluIHRoZSBsaXN0UkNVLnR4dCBkb2N1bWVudC4gIFRoaXMgYXBwcm9hY2ggYWxzbyBhcHBsaWVzCit0byBvdGhlciBhcnJheS1vZi1saXN0IHNpdHVhdGlvbnMsIHN1Y2ggYXMgcmFkaXggdHJlZXMuCisKKworU2l0dWF0aW9uIDI6IFN0YXRpYyBBcnJheXMKKworU3RhdGljIGFycmF5cywgd2hlcmUgdGhlIGRhdGEgKHJhdGhlciB0aGFuIGEgcG9pbnRlciB0byB0aGUgZGF0YSkgaXMKK2xvY2F0ZWQgaW4gZWFjaCBhcnJheSBlbGVtZW50LCBhbmQgd2hlcmUgdGhlIGFycmF5IGlzIG5ldmVyIHJlc2l6ZWQsCitoYXZlIG5vdCBiZWVuIHVzZWQgd2l0aCBSQ1UuICBSaWsgdmFuIFJpZWwgcmVjb21tZW5kcyB1c2luZyBzZXFsb2NrIGluCit0aGlzIHNpdHVhdGlvbiwgd2hpY2ggd291bGQgYWxzbyBoYXZlIG1pbmltYWwgcmVhZC1zaWRlIG92ZXJoZWFkIGFzIGxvbmcKK2FzIHVwZGF0ZXMgYXJlIHJhcmUuCisKK1F1aWNrIFF1aXo6ICBXaHkgaXMgaXQgc28gaW1wb3J0YW50IHRoYXQgdXBkYXRlcyBiZSByYXJlIHdoZW4KKwkgICAgIHVzaW5nIHNlcWxvY2s/CisKKworU2l0dWF0aW9uIDM6IFJlc2l6ZWFibGUgQXJyYXlzCisKK1VzZSBvZiBSQ1UgZm9yIHJlc2l6ZWFibGUgYXJyYXlzIGlzIGRlbW9uc3RyYXRlZCBieSB0aGUgZ3Jvd19hcnkoKQorZnVuY3Rpb24gZm9ybWVybHkgdXNlZCBieSB0aGUgU3lzdGVtIFYgSVBDIGNvZGUuICBUaGUgYXJyYXkgaXMgdXNlZAordG8gbWFwIGZyb20gc2VtYXBob3JlLCBtZXNzYWdlLXF1ZXVlLCBhbmQgc2hhcmVkLW1lbW9yeSBJRHMgdG8gdGhlIGRhdGEKK3N0cnVjdHVyZSB0aGF0IHJlcHJlc2VudHMgdGhlIGNvcnJlc3BvbmRpbmcgSVBDIGNvbnN0cnVjdC4gIFRoZSBncm93X2FyeSgpCitmdW5jdGlvbiBkb2VzIG5vdCBhY3F1aXJlIGFueSBsb2NrczsgaW5zdGVhZCBpdHMgY2FsbGVyIG11c3QgaG9sZCB0aGUKK2lkcy0+c2VtIHNlbWFwaG9yZS4KKworVGhlIGdyb3dfYXJ5KCkgZnVuY3Rpb24sIHNob3duIGJlbG93LCBkb2VzIHNvbWUgbGltaXQgY2hlY2tzLCBhbGxvY2F0ZXMgYQorbmV3IGlwY19pZF9hcnksIGNvcGllcyB0aGUgb2xkIHRvIHRoZSBuZXcgcG9ydGlvbiBvZiB0aGUgbmV3LCBpbml0aWFsaXplcwordGhlIHJlbWFpbmRlciBvZiB0aGUgbmV3LCB1cGRhdGVzIHRoZSBpZHMtPmVudHJpZXMgcG9pbnRlciB0byBwb2ludCB0bwordGhlIG5ldyBhcnJheSwgYW5kIGludm9rZXMgaXBjX3JjdV9wdXRyZWYoKSB0byBmcmVlIHVwIHRoZSBvbGQgYXJyYXkuCitOb3RlIHRoYXQgcmN1X2Fzc2lnbl9wb2ludGVyKCkgaXMgdXNlZCB0byB1cGRhdGUgdGhlIGlkcy0+ZW50cmllcyBwb2ludGVyLAord2hpY2ggaW5jbHVkZXMgYW55IG1lbW9yeSBiYXJyaWVycyByZXF1aXJlZCBvbiB3aGF0ZXZlciBhcmNoaXRlY3R1cmUKK3lvdSBhcmUgcnVubmluZyBvbi4KKworCXN0YXRpYyBpbnQgZ3Jvd19hcnkoc3RydWN0IGlwY19pZHMqIGlkcywgaW50IG5ld3NpemUpCisJeworCQlzdHJ1Y3QgaXBjX2lkX2FyeSogbmV3OworCQlzdHJ1Y3QgaXBjX2lkX2FyeSogb2xkOworCQlpbnQgaTsKKwkJaW50IHNpemUgPSBpZHMtPmVudHJpZXMtPnNpemU7CisKKwkJaWYobmV3c2l6ZSA+IElQQ01OSSkKKwkJCW5ld3NpemUgPSBJUENNTkk7CisJCWlmKG5ld3NpemUgPD0gc2l6ZSkKKwkJCXJldHVybiBuZXdzaXplOworCisJCW5ldyA9IGlwY19yY3VfYWxsb2Moc2l6ZW9mKHN0cnVjdCBrZXJuX2lwY19wZXJtICopKm5ld3NpemUgKworCQkJCSAgICBzaXplb2Yoc3RydWN0IGlwY19pZF9hcnkpKTsKKwkJaWYobmV3ID09IE5VTEwpCisJCQlyZXR1cm4gc2l6ZTsKKwkJbmV3LT5zaXplID0gbmV3c2l6ZTsKKwkJbWVtY3B5KG5ldy0+cCwgaWRzLT5lbnRyaWVzLT5wLAorCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBrZXJuX2lwY19wZXJtICopKnNpemUgKworCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBpcGNfaWRfYXJ5KSk7CisJCWZvcihpPXNpemU7aTxuZXdzaXplO2krKykgeworCQkJbmV3LT5wW2ldID0gTlVMTDsKKwkJfQorCQlvbGQgPSBpZHMtPmVudHJpZXM7CisKKwkJLyoKKwkJICogVXNlIHJjdV9hc3NpZ25fcG9pbnRlcigpIHRvIG1ha2Ugc3VyZSB0aGUgbWVtY3B5ZWQKKwkJICogY29udGVudHMgb2YgdGhlIG5ldyBhcnJheSBhcmUgdmlzaWJsZSBiZWZvcmUgdGhlIG5ldworCQkgKiBhcnJheSBiZWNvbWVzIHZpc2libGUuCisJCSAqLworCQlyY3VfYXNzaWduX3BvaW50ZXIoaWRzLT5lbnRyaWVzLCBuZXcpOworCisJCWlwY19yY3VfcHV0cmVmKG9sZCk7CisJCXJldHVybiBuZXdzaXplOworCX0KKworVGhlIGlwY19yY3VfcHV0cmVmKCkgZnVuY3Rpb24gZGVjcmVtZW50cyB0aGUgYXJyYXkncyByZWZlcmVuY2UgY291bnQKK2FuZCB0aGVuLCBpZiB0aGUgcmVmZXJlbmNlIGNvdW50IGhhcyBkcm9wcGVkIHRvIHplcm8sIHVzZXMgY2FsbF9yY3UoKQordG8gZnJlZSB0aGUgYXJyYXkgYWZ0ZXIgYSBncmFjZSBwZXJpb2QgaGFzIGVsYXBzZWQuCisKK1RoZSBhcnJheSBpcyB0cmF2ZXJzZWQgYnkgdGhlIGlwY19sb2NrKCkgZnVuY3Rpb24uICBUaGlzIGZ1bmN0aW9uCitpbmRleGVzIGludG8gdGhlIGFycmF5IHVuZGVyIHRoZSBwcm90ZWN0aW9uIG9mIHJjdV9yZWFkX2xvY2soKSwKK3VzaW5nIHJjdV9kZXJlZmVyZW5jZSgpIHRvIHBpY2sgdXAgdGhlIHBvaW50ZXIgdG8gdGhlIGFycmF5IHNvCit0aGF0IGl0IG1heSBsYXRlciBzYWZlbHkgYmUgZGVyZWZlcmVuY2VkIC0tIG1lbW9yeSBiYXJyaWVycyBhcmUKK3JlcXVpcmVkIG9uIHRoZSBBbHBoYSBDUFUuICBTaW5jZSB0aGUgc2l6ZSBvZiB0aGUgYXJyYXkgaXMgc3RvcmVkCit3aXRoIHRoZSBhcnJheSBpdHNlbGYsIHRoZXJlIGNhbiBiZSBubyBhcnJheS1zaXplIG1pc21hdGNoZXMsIHNvCithIHNpbXBsZSBjaGVjayBzdWZmaWNlcy4gIFRoZSBwb2ludGVyIHRvIHRoZSBzdHJ1Y3R1cmUgY29ycmVzcG9uZGluZwordG8gdGhlIGRlc2lyZWQgSVBDIG9iamVjdCBpcyBwbGFjZWQgaW4gIm91dCIsIHdpdGggTlVMTCBpbmRpY2F0aW5nCithIG5vbi1leGlzdGVudCBlbnRyeS4gIEFmdGVyIGFjcXVpcmluZyAib3V0LT5sb2NrIiwgdGhlICJvdXQtPmRlbGV0ZWQiCitmbGFnIGluZGljYXRlcyB3aGV0aGVyIHRoZSBJUEMgb2JqZWN0IGlzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nCitkZWxldGVkLCBhbmQsIGlmIG5vdCwgdGhlIHBvaW50ZXIgaXMgcmV0dXJuZWQuCisKKwlzdHJ1Y3Qga2Vybl9pcGNfcGVybSogaXBjX2xvY2soc3RydWN0IGlwY19pZHMqIGlkcywgaW50IGlkKQorCXsKKwkJc3RydWN0IGtlcm5faXBjX3Blcm0qIG91dDsKKwkJaW50IGxpZCA9IGlkICUgU0VRX01VTFRJUExJRVI7CisJCXN0cnVjdCBpcGNfaWRfYXJ5KiBlbnRyaWVzOworCisJCXJjdV9yZWFkX2xvY2soKTsKKwkJZW50cmllcyA9IHJjdV9kZXJlZmVyZW5jZShpZHMtPmVudHJpZXMpOworCQlpZihsaWQgPj0gZW50cmllcy0+c2l6ZSkgeworCQkJcmN1X3JlYWRfdW5sb2NrKCk7CisJCQlyZXR1cm4gTlVMTDsKKwkJfQorCQlvdXQgPSBlbnRyaWVzLT5wW2xpZF07CisJCWlmKG91dCA9PSBOVUxMKSB7CisJCQlyY3VfcmVhZF91bmxvY2soKTsKKwkJCXJldHVybiBOVUxMOworCQl9CisJCXNwaW5fbG9jaygmb3V0LT5sb2NrKTsKKworCQkvKiBpcGNfcm1pZCgpIG1heSBoYXZlIGFscmVhZHkgZnJlZWQgdGhlIElEIHdoaWxlIGlwY19sb2NrCisJCSAqIHdhcyBzcGlubmluZzogaGVyZSB2ZXJpZnkgdGhhdCB0aGUgc3RydWN0dXJlIGlzIHN0aWxsIHZhbGlkCisJCSAqLworCQlpZiAob3V0LT5kZWxldGVkKSB7CisJCQlzcGluX3VubG9jaygmb3V0LT5sb2NrKTsKKwkJCXJjdV9yZWFkX3VubG9jaygpOworCQkJcmV0dXJuIE5VTEw7CisJCX0KKwkJcmV0dXJuIG91dDsKKwl9CisKKworQW5zd2VyIHRvIFF1aWNrIFF1aXo6CisKKwlUaGUgcmVhc29uIHRoYXQgaXQgaXMgaW1wb3J0YW50IHRoYXQgdXBkYXRlcyBiZSByYXJlIHdoZW4KKwl1c2luZyBzZXFsb2NrIGlzIHRoYXQgZnJlcXVlbnQgdXBkYXRlcyBjYW4gbGl2ZWxvY2sgcmVhZGVycy4KKwlPbmUgd2F5IHRvIGF2b2lkIHRoaXMgcHJvYmxlbSBpcyB0byBhc3NpZ24gYSBzZXFsb2NrIGZvcgorCWVhY2ggYXJyYXkgZW50cnkgcmF0aGVyIHRoYW4gdG8gdGhlIGVudGlyZSBhcnJheS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUkNVL2NoZWNrbGlzdC50eHQgYi9Eb2N1bWVudGF0aW9uL1JDVS9jaGVja2xpc3QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3Nzk0NzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1JDVS9jaGVja2xpc3QudHh0CkBAIC0wLDAgKzEsNDM3IEBACitSZXZpZXcgQ2hlY2tsaXN0IGZvciBSQ1UgUGF0Y2hlcworCisKK1RoaXMgZG9jdW1lbnQgY29udGFpbnMgYSBjaGVja2xpc3QgZm9yIHByb2R1Y2luZyBhbmQgcmV2aWV3aW5nIHBhdGNoZXMKK3RoYXQgbWFrZSB1c2Ugb2YgUkNVLiAgVmlvbGF0aW5nIGFueSBvZiB0aGUgcnVsZXMgbGlzdGVkIGJlbG93IHdpbGwKK3Jlc3VsdCBpbiB0aGUgc2FtZSBzb3J0cyBvZiBwcm9ibGVtcyB0aGF0IGxlYXZpbmcgb3V0IGEgbG9ja2luZyBwcmltaXRpdmUKK3dvdWxkIGNhdXNlLiAgVGhpcyBsaXN0IGlzIGJhc2VkIG9uIGV4cGVyaWVuY2VzIHJldmlld2luZyBzdWNoIHBhdGNoZXMKK292ZXIgYSByYXRoZXIgbG9uZyBwZXJpb2Qgb2YgdGltZSwgYnV0IGltcHJvdmVtZW50cyBhcmUgYWx3YXlzIHdlbGNvbWUhCisKKzAuCUlzIFJDVSBiZWluZyBhcHBsaWVkIHRvIGEgcmVhZC1tb3N0bHkgc2l0dWF0aW9uPyAgSWYgdGhlIGRhdGEKKwlzdHJ1Y3R1cmUgaXMgdXBkYXRlZCBtb3JlIHRoYW4gYWJvdXQgMTAlIG9mIHRoZSB0aW1lLCB0aGVuIHlvdQorCXNob3VsZCBzdHJvbmdseSBjb25zaWRlciBzb21lIG90aGVyIGFwcHJvYWNoLCB1bmxlc3MgZGV0YWlsZWQKKwlwZXJmb3JtYW5jZSBtZWFzdXJlbWVudHMgc2hvdyB0aGF0IFJDVSBpcyBub25ldGhlbGVzcyB0aGUgcmlnaHQKKwl0b29sIGZvciB0aGUgam9iLiAgWWVzLCBSQ1UgZG9lcyByZWR1Y2UgcmVhZC1zaWRlIG92ZXJoZWFkIGJ5CisJaW5jcmVhc2luZyB3cml0ZS1zaWRlIG92ZXJoZWFkLCB3aGljaCBpcyBleGFjdGx5IHdoeSBub3JtYWwgdXNlcworCW9mIFJDVSB3aWxsIGRvIG11Y2ggbW9yZSByZWFkaW5nIHRoYW4gdXBkYXRpbmcuCisKKwlBbm90aGVyIGV4Y2VwdGlvbiBpcyB3aGVyZSBwZXJmb3JtYW5jZSBpcyBub3QgYW4gaXNzdWUsIGFuZCBSQ1UKKwlwcm92aWRlcyBhIHNpbXBsZXIgaW1wbGVtZW50YXRpb24uICBBbiBleGFtcGxlIG9mIHRoaXMgc2l0dWF0aW9uCisJaXMgdGhlIGR5bmFtaWMgTk1JIGNvZGUgaW4gdGhlIExpbnV4IDIuNiBrZXJuZWwsIGF0IGxlYXN0IG9uCisJYXJjaGl0ZWN0dXJlcyB3aGVyZSBOTUlzIGFyZSByYXJlLgorCisJWWV0IGFub3RoZXIgZXhjZXB0aW9uIGlzIHdoZXJlIHRoZSBsb3cgcmVhbC10aW1lIGxhdGVuY3kgb2YgUkNVJ3MKKwlyZWFkLXNpZGUgcHJpbWl0aXZlcyBpcyBjcml0aWNhbGx5IGltcG9ydGFudC4KKworMS4JRG9lcyB0aGUgdXBkYXRlIGNvZGUgaGF2ZSBwcm9wZXIgbXV0dWFsIGV4Y2x1c2lvbj8KKworCVJDVSBkb2VzIGFsbG93IC1yZWFkZXJzLSB0byBydW4gKGFsbW9zdCkgbmFrZWQsIGJ1dCAtd3JpdGVycy0gbXVzdAorCXN0aWxsIHVzZSBzb21lIHNvcnQgb2YgbXV0dWFsIGV4Y2x1c2lvbiwgc3VjaCBhczoKKworCWEuCWxvY2tpbmcsCisJYi4JYXRvbWljIG9wZXJhdGlvbnMsIG9yCisJYy4JcmVzdHJpY3RpbmcgdXBkYXRlcyB0byBhIHNpbmdsZSB0YXNrLgorCisJSWYgeW91IGNob29zZSAjYiwgYmUgcHJlcGFyZWQgdG8gZGVzY3JpYmUgaG93IHlvdSBoYXZlIGhhbmRsZWQKKwltZW1vcnkgYmFycmllcnMgb24gd2Vha2x5IG9yZGVyZWQgbWFjaGluZXMgKHByZXR0eSBtdWNoIGFsbCBvZgorCXRoZW0gLS0gZXZlbiB4ODYgYWxsb3dzIGxhdGVyIGxvYWRzIHRvIGJlIHJlb3JkZXJlZCB0byBwcmVjZWRlCisJZWFybGllciBzdG9yZXMpLCBhbmQgYmUgcHJlcGFyZWQgdG8gZXhwbGFpbiB3aHkgdGhpcyBhZGRlZAorCWNvbXBsZXhpdHkgaXMgd29ydGh3aGlsZS4gIElmIHlvdSBjaG9vc2UgI2MsIGJlIHByZXBhcmVkIHRvCisJZXhwbGFpbiBob3cgdGhpcyBzaW5nbGUgdGFzayBkb2VzIG5vdCBiZWNvbWUgYSBtYWpvciBib3R0bGVuZWNrIG9uCisJYmlnIG11bHRpcHJvY2Vzc29yIG1hY2hpbmVzIChmb3IgZXhhbXBsZSwgaWYgdGhlIHRhc2sgaXMgdXBkYXRpbmcKKwlpbmZvcm1hdGlvbiByZWxhdGluZyB0byBpdHNlbGYgdGhhdCBvdGhlciB0YXNrcyBjYW4gcmVhZCwgdGhlcmUKKwlieSBkZWZpbml0aW9uIGNhbiBiZSBubyBib3R0bGVuZWNrKS4KKworMi4JRG8gdGhlIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbnMgbWFrZSBwcm9wZXIgdXNlIG9mCisJcmN1X3JlYWRfbG9jaygpIGFuZCBmcmllbmRzPyAgVGhlc2UgcHJpbWl0aXZlcyBhcmUgbmVlZGVkCisJdG8gcHJldmVudCBncmFjZSBwZXJpb2RzIGZyb20gZW5kaW5nIHByZW1hdHVyZWx5LCB3aGljaAorCWNvdWxkIHJlc3VsdCBpbiBkYXRhIGJlaW5nIHVuY2VyZW1vbmlvdXNseSBmcmVlZCBvdXQgZnJvbQorCXVuZGVyIHlvdXIgcmVhZC1zaWRlIGNvZGUsIHdoaWNoIGNhbiBncmVhdGx5IGluY3JlYXNlIHRoZQorCWFjdHVhcmlhbCByaXNrIG9mIHlvdXIga2VybmVsLgorCisJQXMgYSByb3VnaCBydWxlIG9mIHRodW1iLCBhbnkgZGVyZWZlcmVuY2Ugb2YgYW4gUkNVLXByb3RlY3RlZAorCXBvaW50ZXIgbXVzdCBiZSBjb3ZlcmVkIGJ5IHJjdV9yZWFkX2xvY2soKSwgcmN1X3JlYWRfbG9ja19iaCgpLAorCXJjdV9yZWFkX2xvY2tfc2NoZWQoKSwgb3IgYnkgdGhlIGFwcHJvcHJpYXRlIHVwZGF0ZS1zaWRlIGxvY2suCisJRGlzYWJsaW5nIG9mIHByZWVtcHRpb24gY2FuIHNlcnZlIGFzIHJjdV9yZWFkX2xvY2tfc2NoZWQoKSwgYnV0CisJaXMgbGVzcyByZWFkYWJsZS4KKworMy4JRG9lcyB0aGUgdXBkYXRlIGNvZGUgdG9sZXJhdGUgY29uY3VycmVudCBhY2Nlc3Nlcz8KKworCVRoZSB3aG9sZSBwb2ludCBvZiBSQ1UgaXMgdG8gcGVybWl0IHJlYWRlcnMgdG8gcnVuIHdpdGhvdXQKKwlhbnkgbG9ja3Mgb3IgYXRvbWljIG9wZXJhdGlvbnMuICBUaGlzIG1lYW5zIHRoYXQgcmVhZGVycyB3aWxsCisJYmUgcnVubmluZyB3aGlsZSB1cGRhdGVzIGFyZSBpbiBwcm9ncmVzcy4gIFRoZXJlIGFyZSBhIG51bWJlcgorCW9mIHdheXMgdG8gaGFuZGxlIHRoaXMgY29uY3VycmVuY3ksIGRlcGVuZGluZyBvbiB0aGUgc2l0dWF0aW9uOgorCisJYS4JVXNlIHRoZSBSQ1UgdmFyaWFudHMgb2YgdGhlIGxpc3QgYW5kIGhsaXN0IHVwZGF0ZQorCQlwcmltaXRpdmVzIHRvIGFkZCwgcmVtb3ZlLCBhbmQgcmVwbGFjZSBlbGVtZW50cyBvbgorCQlhbiBSQ1UtcHJvdGVjdGVkIGxpc3QuCUFsdGVybmF0aXZlbHksIHVzZSB0aGUgb3RoZXIKKwkJUkNVLXByb3RlY3RlZCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBoYXZlIGJlZW4gYWRkZWQgdG8KKwkJdGhlIExpbnV4IGtlcm5lbC4KKworCQlUaGlzIGlzIGFsbW9zdCBhbHdheXMgdGhlIGJlc3QgYXBwcm9hY2guCisKKwliLglQcm9jZWVkIGFzIGluIChhKSBhYm92ZSwgYnV0IGFsc28gbWFpbnRhaW4gcGVyLWVsZW1lbnQKKwkJbG9ja3MgKHRoYXQgYXJlIGFjcXVpcmVkIGJ5IGJvdGggcmVhZGVycyBhbmQgd3JpdGVycykKKwkJdGhhdCBndWFyZCBwZXItZWxlbWVudCBzdGF0ZS4gIE9mIGNvdXJzZSwgZmllbGRzIHRoYXQKKwkJdGhlIHJlYWRlcnMgcmVmcmFpbiBmcm9tIGFjY2Vzc2luZyBjYW4gYmUgZ3VhcmRlZCBieQorCQlzb21lIG90aGVyIGxvY2sgYWNxdWlyZWQgb25seSBieSB1cGRhdGVycywgaWYgZGVzaXJlZC4KKworCQlUaGlzIHdvcmtzIHF1aXRlIHdlbGwsIGFsc28uCisKKwljLglNYWtlIHVwZGF0ZXMgYXBwZWFyIGF0b21pYyB0byByZWFkZXJzLiAgRm9yIGV4YW1wbGUsCisJCXBvaW50ZXIgdXBkYXRlcyB0byBwcm9wZXJseSBhbGlnbmVkIGZpZWxkcyB3aWxsCisJCWFwcGVhciBhdG9taWMsIGFzIHdpbGwgaW5kaXZpZHVhbCBhdG9taWMgcHJpbWl0aXZlcy4KKwkJU2VxdWVuY2VzIG9mIHBlcmF0aW9ucyBwZXJmb3JtZWQgdW5kZXIgYSBsb2NrIHdpbGwgLW5vdC0KKwkJYXBwZWFyIHRvIGJlIGF0b21pYyB0byBSQ1UgcmVhZGVycywgbm9yIHdpbGwgc2VxdWVuY2VzCisJCW9mIG11bHRpcGxlIGF0b21pYyBwcmltaXRpdmVzLgorCisJCVRoaXMgY2FuIHdvcmssIGJ1dCBpcyBzdGFydGluZyB0byBnZXQgYSBiaXQgdHJpY2t5LgorCisJZC4JQ2FyZWZ1bGx5IG9yZGVyIHRoZSB1cGRhdGVzIGFuZCB0aGUgcmVhZHMgc28gdGhhdAorCQlyZWFkZXJzIHNlZSB2YWxpZCBkYXRhIGF0IGFsbCBwaGFzZXMgb2YgdGhlIHVwZGF0ZS4KKwkJVGhpcyBpcyBvZnRlbiBtb3JlIGRpZmZpY3VsdCB0aGFuIGl0IHNvdW5kcywgZXNwZWNpYWxseQorCQlnaXZlbiBtb2Rlcm4gQ1BVcycgdGVuZGVuY3kgdG8gcmVvcmRlciBtZW1vcnkgcmVmZXJlbmNlcy4KKwkJT25lIG11c3QgdXN1YWxseSBsaWJlcmFsbHkgc3ByaW5rbGUgbWVtb3J5IGJhcnJpZXJzCisJCShzbXBfd21iKCksIHNtcF9ybWIoKSwgc21wX21iKCkpIHRocm91Z2ggdGhlIGNvZGUsCisJCW1ha2luZyBpdCBkaWZmaWN1bHQgdG8gdW5kZXJzdGFuZCBhbmQgdG8gdGVzdC4KKworCQlJdCBpcyB1c3VhbGx5IGJldHRlciB0byBncm91cCB0aGUgY2hhbmdpbmcgZGF0YSBpbnRvCisJCWEgc2VwYXJhdGUgc3RydWN0dXJlLCBzbyB0aGF0IHRoZSBjaGFuZ2UgbWF5IGJlIG1hZGUKKwkJdG8gYXBwZWFyIGF0b21pYyBieSB1cGRhdGluZyBhIHBvaW50ZXIgdG8gcmVmZXJlbmNlCisJCWEgbmV3IHN0cnVjdHVyZSBjb250YWluaW5nIHVwZGF0ZWQgdmFsdWVzLgorCis0LglXZWFrbHkgb3JkZXJlZCBDUFVzIHBvc2Ugc3BlY2lhbCBjaGFsbGVuZ2VzLiAgQWxtb3N0IGFsbCBDUFVzCisJYXJlIHdlYWtseSBvcmRlcmVkIC0tIGV2ZW4geDg2IENQVXMgYWxsb3cgbGF0ZXIgbG9hZHMgdG8gYmUKKwlyZW9yZGVyZWQgdG8gcHJlY2VkZSBlYXJsaWVyIHN0b3Jlcy4gIFJDVSBjb2RlIG11c3QgdGFrZSBhbGwgb2YKKwl0aGUgZm9sbG93aW5nIG1lYXN1cmVzIHRvIHByZXZlbnQgbWVtb3J5LWNvcnJ1cHRpb24gcHJvYmxlbXM6CisKKwlhLglSZWFkZXJzIG11c3QgbWFpbnRhaW4gcHJvcGVyIG9yZGVyaW5nIG9mIHRoZWlyIG1lbW9yeQorCQlhY2Nlc3Nlcy4gIFRoZSByY3VfZGVyZWZlcmVuY2UoKSBwcmltaXRpdmUgZW5zdXJlcyB0aGF0CisJCXRoZSBDUFUgcGlja3MgdXAgdGhlIHBvaW50ZXIgYmVmb3JlIGl0IHBpY2tzIHVwIHRoZSBkYXRhCisJCXRoYXQgdGhlIHBvaW50ZXIgcG9pbnRzIHRvLiAgVGhpcyByZWFsbHkgaXMgbmVjZXNzYXJ5CisJCW9uIEFscGhhIENQVXMuCUlmIHlvdSBkb24ndCBiZWxpZXZlIG1lLCBzZWU6CisKKwkJCWh0dHA6Ly93d3cub3BlbnZtcy5jb21wYXEuY29tL3dpemFyZC93aXpfMjYzNy5odG1sCisKKwkJVGhlIHJjdV9kZXJlZmVyZW5jZSgpIHByaW1pdGl2ZSBpcyBhbHNvIGFuIGV4Y2VsbGVudAorCQlkb2N1bWVudGF0aW9uIGFpZCwgbGV0dGluZyB0aGUgcGVyc29uIHJlYWRpbmcgdGhlCisJCWNvZGUga25vdyBleGFjdGx5IHdoaWNoIHBvaW50ZXJzIGFyZSBwcm90ZWN0ZWQgYnkgUkNVLgorCQlQbGVhc2Ugbm90ZSB0aGF0IGNvbXBpbGVycyBjYW4gYWxzbyByZW9yZGVyIGNvZGUsIGFuZAorCQl0aGV5IGFyZSBiZWNvbWluZyBpbmNyZWFzaW5nbHkgYWdncmVzc2l2ZSBhYm91dCBkb2luZworCQlqdXN0IHRoYXQuICBUaGUgcmN1X2RlcmVmZXJlbmNlKCkgcHJpbWl0aXZlIHRoZXJlZm9yZSBhbHNvCisJCXByZXZlbnRzIGRlc3RydWN0aXZlIGNvbXBpbGVyIG9wdGltaXphdGlvbnMuICBIb3dldmVyLAorCQl3aXRoIGEgYml0IG9mIGRldmlvdXMgY3JlYXRpdml0eSwgaXQgaXMgcG9zc2libGUgdG8KKwkJbWlzaGFuZGxlIHRoZSByZXR1cm4gdmFsdWUgZnJvbSByY3VfZGVyZWZlcmVuY2UoKS4KKwkJUGxlYXNlIHNlZSByY3VfZGVyZWZlcmVuY2UudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvcgorCQltb3JlIGluZm9ybWF0aW9uLgorCisJCVRoZSByY3VfZGVyZWZlcmVuY2UoKSBwcmltaXRpdmUgaXMgdXNlZCBieSB0aGUKKwkJdmFyaW91cyAiX3JjdSgpIiBsaXN0LXRyYXZlcnNhbCBwcmltaXRpdmVzLCBzdWNoCisJCWFzIHRoZSBsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSgpLiAgTm90ZSB0aGF0IGl0IGlzCisJCXBlcmZlY3RseSBsZWdhbCAoaWYgcmVkdW5kYW50KSBmb3IgdXBkYXRlLXNpZGUgY29kZSB0bworCQl1c2UgcmN1X2RlcmVmZXJlbmNlKCkgYW5kIHRoZSAiX3JjdSgpIiBsaXN0LXRyYXZlcnNhbAorCQlwcmltaXRpdmVzLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGluIGNvZGUgdGhhdAorCQlpcyBjb21tb24gdG8gcmVhZGVycyBhbmQgdXBkYXRlcnMuICBIb3dldmVyLCBsb2NrZGVwCisJCXdpbGwgY29tcGxhaW4gaWYgeW91IGFjY2VzcyByY3VfZGVyZWZlcmVuY2UoKSBvdXRzaWRlCisJCW9mIGFuIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbi4gIFNlZSBsb2NrZGVwLnR4dAorCQl0byBsZWFybiB3aGF0IHRvIGRvIGFib3V0IHRoaXMuCisKKwkJT2YgY291cnNlLCBuZWl0aGVyIHJjdV9kZXJlZmVyZW5jZSgpIG5vciB0aGUgIl9yY3UoKSIKKwkJbGlzdC10cmF2ZXJzYWwgcHJpbWl0aXZlcyBjYW4gc3Vic3RpdHV0ZSBmb3IgYSBnb29kCisJCWNvbmN1cnJlbmN5IGRlc2lnbiBjb29yZGluYXRpbmcgYW1vbmcgbXVsdGlwbGUgdXBkYXRlcnMuCisKKwliLglJZiB0aGUgbGlzdCBtYWNyb3MgYXJlIGJlaW5nIHVzZWQsIHRoZSBsaXN0X2FkZF90YWlsX3JjdSgpCisJCWFuZCBsaXN0X2FkZF9yY3UoKSBwcmltaXRpdmVzIG11c3QgYmUgdXNlZCBpbiBvcmRlcgorCQl0byBwcmV2ZW50IHdlYWtseSBvcmRlcmVkIG1hY2hpbmVzIGZyb20gbWlzb3JkZXJpbmcKKwkJc3RydWN0dXJlIGluaXRpYWxpemF0aW9uIGFuZCBwb2ludGVyIHBsYW50aW5nLgorCQlTaW1pbGFybHksIGlmIHRoZSBobGlzdCBtYWNyb3MgYXJlIGJlaW5nIHVzZWQsIHRoZQorCQlobGlzdF9hZGRfaGVhZF9yY3UoKSBwcmltaXRpdmUgaXMgcmVxdWlyZWQuCisKKwljLglJZiB0aGUgbGlzdCBtYWNyb3MgYXJlIGJlaW5nIHVzZWQsIHRoZSBsaXN0X2RlbF9yY3UoKQorCQlwcmltaXRpdmUgbXVzdCBiZSB1c2VkIHRvIGtlZXAgbGlzdF9kZWwoKSdzIHBvaW50ZXIKKwkJcG9pc29uaW5nIGZyb20gaW5mbGljdGluZyB0b3hpYyBlZmZlY3RzIG9uIGNvbmN1cnJlbnQKKwkJcmVhZGVycy4gIFNpbWlsYXJseSwgaWYgdGhlIGhsaXN0IG1hY3JvcyBhcmUgYmVpbmcgdXNlZCwKKwkJdGhlIGhsaXN0X2RlbF9yY3UoKSBwcmltaXRpdmUgaXMgcmVxdWlyZWQuCisKKwkJVGhlIGxpc3RfcmVwbGFjZV9yY3UoKSBhbmQgaGxpc3RfcmVwbGFjZV9yY3UoKSBwcmltaXRpdmVzCisJCW1heSBiZSB1c2VkIHRvIHJlcGxhY2UgYW4gb2xkIHN0cnVjdHVyZSB3aXRoIGEgbmV3IG9uZQorCQlpbiB0aGVpciByZXNwZWN0aXZlIHR5cGVzIG9mIFJDVS1wcm90ZWN0ZWQgbGlzdHMuCisKKwlkLglSdWxlcyBzaW1pbGFyIHRvICg0YikgYW5kICg0YykgYXBwbHkgdG8gdGhlICJobGlzdF9udWxscyIKKwkJdHlwZSBvZiBSQ1UtcHJvdGVjdGVkIGxpbmtlZCBsaXN0cy4KKworCWUuCVVwZGF0ZXMgbXVzdCBlbnN1cmUgdGhhdCBpbml0aWFsaXphdGlvbiBvZiBhIGdpdmVuCisJCXN0cnVjdHVyZSBoYXBwZW5zIGJlZm9yZSBwb2ludGVycyB0byB0aGF0IHN0cnVjdHVyZSBhcmUKKwkJcHVibGljaXplZC4gIFVzZSB0aGUgcmN1X2Fzc2lnbl9wb2ludGVyKCkgcHJpbWl0aXZlCisJCXdoZW4gcHVibGljaXppbmcgYSBwb2ludGVyIHRvIGEgc3RydWN0dXJlIHRoYXQgY2FuCisJCWJlIHRyYXZlcnNlZCBieSBhbiBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb24uCisKKzUuCUlmIGNhbGxfcmN1KCksIG9yIGEgcmVsYXRlZCBwcmltaXRpdmUgc3VjaCBhcyBjYWxsX3JjdV9iaCgpLAorCWNhbGxfcmN1X3NjaGVkKCksIG9yIGNhbGxfc3JjdSgpIGlzIHVzZWQsIHRoZSBjYWxsYmFjayBmdW5jdGlvbgorCW11c3QgYmUgd3JpdHRlbiB0byBiZSBjYWxsZWQgZnJvbSBzb2Z0aXJxIGNvbnRleHQuICBJbiBwYXJ0aWN1bGFyLAorCWl0IGNhbm5vdCBibG9jay4KKworNi4JU2luY2Ugc3luY2hyb25pemVfcmN1KCkgY2FuIGJsb2NrLCBpdCBjYW5ub3QgYmUgY2FsbGVkIGZyb20KKwlhbnkgc29ydCBvZiBpcnEgY29udGV4dC4gIFRoZSBzYW1lIHJ1bGUgYXBwbGllcyBmb3IKKwlzeW5jaHJvbml6ZV9yY3VfYmgoKSwgc3luY2hyb25pemVfc2NoZWQoKSwgc3luY2hyb25pemVfc3JjdSgpLAorCXN5bmNocm9uaXplX3JjdV9leHBlZGl0ZWQoKSwgc3luY2hyb25pemVfcmN1X2JoX2V4cGVkaXRlZCgpLAorCXN5bmNocm9uaXplX3NjaGVkX2V4cGVkaXRlKCksIGFuZCBzeW5jaHJvbml6ZV9zcmN1X2V4cGVkaXRlZCgpLgorCisJVGhlIGV4cGVkaXRlZCBmb3JtcyBvZiB0aGVzZSBwcmltaXRpdmVzIGhhdmUgdGhlIHNhbWUgc2VtYW50aWNzCisJYXMgdGhlIG5vbi1leHBlZGl0ZWQgZm9ybXMsIGJ1dCBleHBlZGl0aW5nIGlzIGJvdGggZXhwZW5zaXZlCisJYW5kIHVuZnJpZW5kbHkgdG8gcmVhbC10aW1lIHdvcmtsb2Fkcy4JVXNlIG9mIHRoZSBleHBlZGl0ZWQKKwlwcmltaXRpdmVzIHNob3VsZCBiZSByZXN0cmljdGVkIHRvIHJhcmUgY29uZmlndXJhdGlvbi1jaGFuZ2UKKwlvcGVyYXRpb25zIHRoYXQgd291bGQgbm90IG5vcm1hbGx5IGJlIHVuZGVydGFrZW4gd2hpbGUgYSByZWFsLXRpbWUKKwl3b3JrbG9hZCBpcyBydW5uaW5nLgorCisJSW4gcGFydGljdWxhciwgaWYgeW91IGZpbmQgeW91cnNlbGYgaW52b2tpbmcgb25lIG9mIHRoZSBleHBlZGl0ZWQKKwlwcmltaXRpdmVzIHJlcGVhdGVkbHkgaW4gYSBsb29wLCBwbGVhc2UgZG8gZXZlcnlvbmUgYSBmYXZvcjoKKwlSZXN0cnVjdHVyZSB5b3VyIGNvZGUgc28gdGhhdCBpdCBiYXRjaGVzIHRoZSB1cGRhdGVzLCBhbGxvd2luZworCWEgc2luZ2xlIG5vbi1leHBlZGl0ZWQgcHJpbWl0aXZlIHRvIGNvdmVyIHRoZSBlbnRpcmUgYmF0Y2guCisJVGhpcyB3aWxsIHZlcnkgbGlrZWx5IGJlIGZhc3RlciB0aGFuIHRoZSBsb29wIGNvbnRhaW5pbmcgdGhlCisJZXhwZWRpdGVkIHByaW1pdGl2ZSwgYW5kIHdpbGwgYmUgbXVjaCBtdWNoIGVhc2llciBvbiB0aGUgcmVzdAorCW9mIHRoZSBzeXN0ZW0sIGVzcGVjaWFsbHkgdG8gcmVhbC10aW1lIHdvcmtsb2FkcyBydW5uaW5nIG9uCisJdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4KKworCUluIGFkZGl0aW9uLCBpdCBpcyBpbGxlZ2FsIHRvIGNhbGwgdGhlIGV4cGVkaXRlZCBmb3JtcyBmcm9tCisJYSBDUFUtaG90cGx1ZyBub3RpZmllciwgb3Igd2hpbGUgaG9sZGluZyBhIGxvY2sgdGhhdCBpcyBhY3F1aXJlZAorCWJ5IGEgQ1BVLWhvdHBsdWcgbm90aWZpZXIuICBGYWlsaW5nIHRvIG9ic2VydmUgdGhpcyByZXN0cmljdGlvbgorCXdpbGwgcmVzdWx0IGluIGRlYWRsb2NrLgorCis3LglJZiB0aGUgdXBkYXRlciB1c2VzIGNhbGxfcmN1KCkgb3Igc3luY2hyb25pemVfcmN1KCksIHRoZW4gdGhlCisJY29ycmVzcG9uZGluZyByZWFkZXJzIG11c3QgdXNlIHJjdV9yZWFkX2xvY2soKSBhbmQKKwlyY3VfcmVhZF91bmxvY2soKS4gIElmIHRoZSB1cGRhdGVyIHVzZXMgY2FsbF9yY3VfYmgoKSBvcgorCXN5bmNocm9uaXplX3JjdV9iaCgpLCB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIHJlYWRlcnMgbXVzdAorCXVzZSByY3VfcmVhZF9sb2NrX2JoKCkgYW5kIHJjdV9yZWFkX3VubG9ja19iaCgpLiAgSWYgdGhlCisJdXBkYXRlciB1c2VzIGNhbGxfcmN1X3NjaGVkKCkgb3Igc3luY2hyb25pemVfc2NoZWQoKSwgdGhlbgorCXRoZSBjb3JyZXNwb25kaW5nIHJlYWRlcnMgbXVzdCBkaXNhYmxlIHByZWVtcHRpb24sIHBvc3NpYmx5CisJYnkgY2FsbGluZyByY3VfcmVhZF9sb2NrX3NjaGVkKCkgYW5kIHJjdV9yZWFkX3VubG9ja19zY2hlZCgpLgorCUlmIHRoZSB1cGRhdGVyIHVzZXMgc3luY2hyb25pemVfc3JjdSgpIG9yIGNhbGxfc3JjdSgpLCB0aGVuCisJdGhlIGNvcnJlc3BvbmRpbmcgcmVhZGVycyBtdXN0IHVzZSBzcmN1X3JlYWRfbG9jaygpIGFuZAorCXNyY3VfcmVhZF91bmxvY2soKSwgYW5kIHdpdGggdGhlIHNhbWUgc3JjdV9zdHJ1Y3QuICBUaGUgcnVsZXMgZm9yCisJdGhlIGV4cGVkaXRlZCBwcmltaXRpdmVzIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlaXIgbm9uLWV4cGVkaXRlZAorCWNvdW50ZXJwYXJ0cy4gIE1peGluZyB0aGluZ3MgdXAgd2lsbCByZXN1bHQgaW4gY29uZnVzaW9uIGFuZAorCWJyb2tlbiBrZXJuZWxzLgorCisJT25lIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGU6IHJjdV9yZWFkX2xvY2soKSBhbmQgcmN1X3JlYWRfdW5sb2NrKCkKKwltYXkgYmUgc3Vic3RpdHV0ZWQgZm9yIHJjdV9yZWFkX2xvY2tfYmgoKSBhbmQgcmN1X3JlYWRfdW5sb2NrX2JoKCkKKwlpbiBjYXNlcyB3aGVyZSBsb2NhbCBib3R0b20gaGFsdmVzIGFyZSBhbHJlYWR5IGtub3duIHRvIGJlCisJZGlzYWJsZWQsIGZvciBleGFtcGxlLCBpbiBpcnEgb3Igc29mdGlycSBjb250ZXh0LiAgQ29tbWVudGluZworCXN1Y2ggY2FzZXMgaXMgYSBtdXN0LCBvZiBjb3Vyc2UhICBBbmQgdGhlIGp1cnkgaXMgc3RpbGwgb3V0IG9uCisJd2hldGhlciB0aGUgaW5jcmVhc2VkIHNwZWVkIGlzIHdvcnRoIGl0LgorCis4LglBbHRob3VnaCBzeW5jaHJvbml6ZV9yY3UoKSBpcyBzbG93ZXIgdGhhbiBpcyBjYWxsX3JjdSgpLCBpdAorCXVzdWFsbHkgcmVzdWx0cyBpbiBzaW1wbGVyIGNvZGUuICBTbywgdW5sZXNzIHVwZGF0ZSBwZXJmb3JtYW5jZSBpcworCWNyaXRpY2FsbHkgaW1wb3J0YW50LCB0aGUgdXBkYXRlcnMgY2Fubm90IGJsb2NrLCBvciB0aGUgbGF0ZW5jeSBvZgorCXN5bmNocm9uaXplX3JjdSgpIGlzIHZpc2libGUgZnJvbSB1c2Vyc3BhY2UsIHN5bmNocm9uaXplX3JjdSgpCisJc2hvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byBjYWxsX3JjdSgpLiAgRnVydGhlcm1vcmUsCisJa2ZyZWVfcmN1KCkgdXN1YWxseSByZXN1bHRzIGluIGV2ZW4gc2ltcGxlciBjb2RlIHRoYW4gZG9lcworCXN5bmNocm9uaXplX3JjdSgpIHdpdGhvdXQgc3luY2hyb25pemVfcmN1KCkncyBtdWx0aS1taWxsaXNlY29uZAorCWxhdGVuY3kuICBTbyBwbGVhc2UgdGFrZSBhZHZhbnRhZ2Ugb2Yga2ZyZWVfcmN1KCkncyAiZmlyZSBhbmQKKwlmb3JnZXQiIG1lbW9yeS1mcmVlaW5nIGNhcGFiaWxpdGllcyB3aGVyZSBpdCBhcHBsaWVzLgorCisJQW4gZXNwZWNpYWxseSBpbXBvcnRhbnQgcHJvcGVydHkgb2YgdGhlIHN5bmNocm9uaXplX3JjdSgpCisJcHJpbWl0aXZlIGlzIHRoYXQgaXQgYXV0b21hdGljYWxseSBzZWxmLWxpbWl0czogaWYgZ3JhY2UgcGVyaW9kcworCWFyZSBkZWxheWVkIGZvciB3aGF0ZXZlciByZWFzb24sIHRoZW4gdGhlIHN5bmNocm9uaXplX3JjdSgpCisJcHJpbWl0aXZlIHdpbGwgY29ycmVzcG9uZGluZ2x5IGRlbGF5IHVwZGF0ZXMuICBJbiBjb250cmFzdCwKKwljb2RlIHVzaW5nIGNhbGxfcmN1KCkgc2hvdWxkIGV4cGxpY2l0bHkgbGltaXQgdXBkYXRlIHJhdGUgaW4KKwljYXNlcyB3aGVyZSBncmFjZSBwZXJpb2RzIGFyZSBkZWxheWVkLCBhcyBmYWlsaW5nIHRvIGRvIHNvIGNhbgorCXJlc3VsdCBpbiBleGNlc3NpdmUgcmVhbHRpbWUgbGF0ZW5jaWVzIG9yIGV2ZW4gT09NIGNvbmRpdGlvbnMuCisKKwlXYXlzIG9mIGdhaW5pbmcgdGhpcyBzZWxmLWxpbWl0aW5nIHByb3BlcnR5IHdoZW4gdXNpbmcgY2FsbF9yY3UoKQorCWluY2x1ZGU6CisKKwlhLglLZWVwaW5nIGEgY291bnQgb2YgdGhlIG51bWJlciBvZiBkYXRhLXN0cnVjdHVyZSBlbGVtZW50cworCQl1c2VkIGJ5IHRoZSBSQ1UtcHJvdGVjdGVkIGRhdGEgc3RydWN0dXJlLCBpbmNsdWRpbmcKKwkJdGhvc2Ugd2FpdGluZyBmb3IgYSBncmFjZSBwZXJpb2QgdG8gZWxhcHNlLiAgRW5mb3JjZSBhCisJCWxpbWl0IG9uIHRoaXMgbnVtYmVyLCBzdGFsbGluZyB1cGRhdGVzIGFzIG5lZWRlZCB0byBhbGxvdworCQlwcmV2aW91c2x5IGRlZmVycmVkIGZyZWVzIHRvIGNvbXBsZXRlLglBbHRlcm5hdGl2ZWx5LAorCQlsaW1pdCBvbmx5IHRoZSBudW1iZXIgYXdhaXRpbmcgZGVmZXJyZWQgZnJlZSByYXRoZXIgdGhhbgorCQl0aGUgdG90YWwgbnVtYmVyIG9mIGVsZW1lbnRzLgorCisJCU9uZSB3YXkgdG8gc3RhbGwgdGhlIHVwZGF0ZXMgaXMgdG8gYWNxdWlyZSB0aGUgdXBkYXRlLXNpZGUKKwkJbXV0ZXguCShEb24ndCB0cnkgdGhpcyB3aXRoIGEgc3BpbmxvY2sgLS0gb3RoZXIgQ1BVcworCQlzcGlubmluZyBvbiB0aGUgbG9jayBjb3VsZCBwcmV2ZW50IHRoZSBncmFjZSBwZXJpb2QKKwkJZnJvbSBldmVyIGVuZGluZy4pICBBbm90aGVyIHdheSB0byBzdGFsbCB0aGUgdXBkYXRlcworCQlpcyBmb3IgdGhlIHVwZGF0ZXMgdG8gdXNlIGEgd3JhcHBlciBmdW5jdGlvbiBhcm91bmQKKwkJdGhlIG1lbW9yeSBhbGxvY2F0b3IsIHNvIHRoYXQgdGhpcyB3cmFwcGVyIGZ1bmN0aW9uCisJCXNpbXVsYXRlcyBPT00gd2hlbiB0aGVyZSBpcyB0b28gbXVjaCBtZW1vcnkgYXdhaXRpbmcgYW4KKwkJUkNVIGdyYWNlIHBlcmlvZC4gIFRoZXJlIGFyZSBvZiBjb3Vyc2UgbWFueSBvdGhlcgorCQl2YXJpYXRpb25zIG9uIHRoaXMgdGhlbWUuCisKKwliLglMaW1pdGluZyB1cGRhdGUgcmF0ZS4gIEZvciBleGFtcGxlLCBpZiB1cGRhdGVzIG9jY3VyIG9ubHkKKwkJb25jZSBwZXIgaG91ciwgdGhlbiBubyBleHBsaWNpdCByYXRlIGxpbWl0aW5nIGlzCisJCXJlcXVpcmVkLCB1bmxlc3MgeW91ciBzeXN0ZW0gaXMgYWxyZWFkeSBiYWRseSBicm9rZW4uCisJCU9sZGVyIHZlcnNpb25zIG9mIHRoZSBkY2FjaGUgc3Vic3lzdGVtIHRha2UgdGhpcyBhcHByb2FjaCwKKwkJZ3VhcmRpbmcgdXBkYXRlcyB3aXRoIGEgZ2xvYmFsIGxvY2ssIGxpbWl0aW5nIHRoZWlyIHJhdGUuCisKKwljLglUcnVzdGVkIHVwZGF0ZSAtLSBpZiB1cGRhdGVzIGNhbiBvbmx5IGJlIGRvbmUgbWFudWFsbHkgYnkKKwkJc3VwZXJ1c2VyIG9yIHNvbWUgb3RoZXIgdHJ1c3RlZCB1c2VyLCB0aGVuIGl0IG1pZ2h0IG5vdAorCQliZSBuZWNlc3NhcnkgdG8gYXV0b21hdGljYWxseSBsaW1pdCB0aGVtLiAgVGhlIHRoZW9yeQorCQloZXJlIGlzIHRoYXQgc3VwZXJ1c2VyIGFscmVhZHkgaGFzIGxvdHMgb2Ygd2F5cyB0byBjcmFzaAorCQl0aGUgbWFjaGluZS4KKworCWQuCVVzZSBjYWxsX3JjdV9iaCgpIHJhdGhlciB0aGFuIGNhbGxfcmN1KCksIGluIG9yZGVyIHRvIHRha2UKKwkJYWR2YW50YWdlIG9mIGNhbGxfcmN1X2JoKCkncyBmYXN0ZXIgZ3JhY2UgcGVyaW9kcy4gIChUaGlzCisJCWlzIG9ubHkgYSBwYXJ0aWFsIHNvbHV0aW9uLCB0aG91Z2guKQorCisJZS4JUGVyaW9kaWNhbGx5IGludm9rZSBzeW5jaHJvbml6ZV9yY3UoKSwgcGVybWl0dGluZyBhIGxpbWl0ZWQKKwkJbnVtYmVyIG9mIHVwZGF0ZXMgcGVyIGdyYWNlIHBlcmlvZC4KKworCVRoZSBzYW1lIGNhdXRpb25zIGFwcGx5IHRvIGNhbGxfcmN1X2JoKCksIGNhbGxfcmN1X3NjaGVkKCksCisJY2FsbF9zcmN1KCksIGFuZCBrZnJlZV9yY3UoKS4KKworCU5vdGUgdGhhdCBhbHRob3VnaCB0aGVzZSBwcmltaXRpdmVzIGRvIHRha2UgYWN0aW9uIHRvIGF2b2lkIG1lbW9yeQorCWV4aGF1c3Rpb24gd2hlbiBhbnkgZ2l2ZW4gQ1BVIGhhcyB0b28gbWFueSBjYWxsYmFja3MsIGEgZGV0ZXJtaW5lZAorCXVzZXIgY291bGQgc3RpbGwgZXhoYXVzdCBtZW1vcnkuICBUaGlzIGlzIGVzcGVjaWFsbHkgdGhlIGNhc2UKKwlpZiBhIHN5c3RlbSB3aXRoIGEgbGFyZ2UgbnVtYmVyIG9mIENQVXMgaGFzIGJlZW4gY29uZmlndXJlZCB0bworCW9mZmxvYWQgYWxsIG9mIGl0cyBSQ1UgY2FsbGJhY2tzIG9udG8gYSBzaW5nbGUgQ1BVLCBvciBpZiB0aGUKKwlzeXN0ZW0gaGFzIHJlbGF0aXZlbHkgbGl0dGxlIGZyZWUgbWVtb3J5LgorCis5LglBbGwgUkNVIGxpc3QtdHJhdmVyc2FsIHByaW1pdGl2ZXMsIHdoaWNoIGluY2x1ZGUKKwlyY3VfZGVyZWZlcmVuY2UoKSwgbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoKSwgYW5kCisJbGlzdF9mb3JfZWFjaF9zYWZlX3JjdSgpLCBtdXN0IGJlIGVpdGhlciB3aXRoaW4gYW4gUkNVIHJlYWQtc2lkZQorCWNyaXRpY2FsIHNlY3Rpb24gb3IgbXVzdCBiZSBwcm90ZWN0ZWQgYnkgYXBwcm9wcmlhdGUgdXBkYXRlLXNpZGUKKwlsb2Nrcy4JUkNVIHJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9ucyBhcmUgZGVsaW1pdGVkIGJ5CisJcmN1X3JlYWRfbG9jaygpIGFuZCByY3VfcmVhZF91bmxvY2soKSwgb3IgYnkgc2ltaWxhciBwcmltaXRpdmVzCisJc3VjaCBhcyByY3VfcmVhZF9sb2NrX2JoKCkgYW5kIHJjdV9yZWFkX3VubG9ja19iaCgpLCBpbiB3aGljaAorCWNhc2UgdGhlIG1hdGNoaW5nIHJjdV9kZXJlZmVyZW5jZSgpIHByaW1pdGl2ZSBtdXN0IGJlIHVzZWQgaW4KKwlvcmRlciB0byBrZWVwIGxvY2tkZXAgaGFwcHksIGluIHRoaXMgY2FzZSwgcmN1X2RlcmVmZXJlbmNlX2JoKCkuCisKKwlUaGUgcmVhc29uIHRoYXQgaXQgaXMgcGVybWlzc2libGUgdG8gdXNlIFJDVSBsaXN0LXRyYXZlcnNhbAorCXByaW1pdGl2ZXMgd2hlbiB0aGUgdXBkYXRlLXNpZGUgbG9jayBpcyBoZWxkIGlzIHRoYXQgZG9pbmcgc28KKwljYW4gYmUgcXVpdGUgaGVscGZ1bCBpbiByZWR1Y2luZyBjb2RlIGJsb2F0IHdoZW4gY29tbW9uIGNvZGUgaXMKKwlzaGFyZWQgYmV0d2VlbiByZWFkZXJzIGFuZCB1cGRhdGVycy4gIEFkZGl0aW9uYWwgcHJpbWl0aXZlcworCWFyZSBwcm92aWRlZCBmb3IgdGhpcyBjYXNlLCBhcyBkaXNjdXNzZWQgaW4gbG9ja2RlcC50eHQuCisKKzEwLglDb252ZXJzZWx5LCBpZiB5b3UgYXJlIGluIGFuIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbiwKKwlhbmQgeW91IGRvbid0IGhvbGQgdGhlIGFwcHJvcHJpYXRlIHVwZGF0ZS1zaWRlIGxvY2ssIHlvdSAtbXVzdC0KKwl1c2UgdGhlICJfcmN1KCkiIHZhcmlhbnRzIG9mIHRoZSBsaXN0IG1hY3Jvcy4gIEZhaWxpbmcgdG8gZG8gc28KKwl3aWxsIGJyZWFrIEFscGhhLCBjYXVzZSBhZ2dyZXNzaXZlIGNvbXBpbGVycyB0byBnZW5lcmF0ZSBiYWQgY29kZSwKKwlhbmQgY29uZnVzZSBwZW9wbGUgdHJ5aW5nIHRvIHJlYWQgeW91ciBjb2RlLgorCisxMS4JTm90ZSB0aGF0IHN5bmNocm9uaXplX3JjdSgpIC1vbmx5LSBndWFyYW50ZWVzIHRvIHdhaXQgdW50aWwKKwlhbGwgY3VycmVudGx5IGV4ZWN1dGluZyByY3VfcmVhZF9sb2NrKCktcHJvdGVjdGVkIFJDVSByZWFkLXNpZGUKKwljcml0aWNhbCBzZWN0aW9ucyBjb21wbGV0ZS4gIEl0IGRvZXMgLW5vdC0gbmVjZXNzYXJpbHkgZ3VhcmFudGVlCisJdGhhdCBhbGwgY3VycmVudGx5IHJ1bm5pbmcgaW50ZXJydXB0cywgTk1JcywgcHJlZW1wdF9kaXNhYmxlKCkKKwljb2RlLCBvciBpZGxlIGxvb3BzIHdpbGwgY29tcGxldGUuICBUaGVyZWZvcmUsIGlmIHlvdXIKKwlyZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbnMgYXJlIHByb3RlY3RlZCBieSBzb21ldGhpbmcgb3RoZXIKKwl0aGFuIHJjdV9yZWFkX2xvY2soKSwgZG8gLW5vdC0gdXNlIHN5bmNocm9uaXplX3JjdSgpLgorCisJU2ltaWxhcmx5LCBkaXNhYmxpbmcgcHJlZW1wdGlvbiBpcyBub3QgYW4gYWNjZXB0YWJsZSBzdWJzdGl0dXRlCisJZm9yIHJjdV9yZWFkX2xvY2soKS4gIENvZGUgdGhhdCBhdHRlbXB0cyB0byB1c2UgcHJlZW1wdGlvbgorCWRpc2FibGluZyB3aGVyZSBpdCBzaG91bGQgYmUgdXNpbmcgcmN1X3JlYWRfbG9jaygpIHdpbGwgYnJlYWsKKwlpbiByZWFsLXRpbWUga2VybmVsIGJ1aWxkcy4KKworCUlmIHlvdSB3YW50IHRvIHdhaXQgZm9yIGludGVycnVwdCBoYW5kbGVycywgTk1JIGhhbmRsZXJzLCBhbmQKKwljb2RlIHVuZGVyIHRoZSBpbmZsdWVuY2Ugb2YgcHJlZW1wdF9kaXNhYmxlKCksIHlvdSBpbnN0ZWFkCisJbmVlZCB0byB1c2Ugc3luY2hyb25pemVfaXJxKCkgb3Igc3luY2hyb25pemVfc2NoZWQoKS4KKworCVRoaXMgc2FtZSBsaW1pdGF0aW9uIGFsc28gYXBwbGllcyB0byBzeW5jaHJvbml6ZV9yY3VfYmgoKQorCWFuZCBzeW5jaHJvbml6ZV9zcmN1KCksIGFzIHdlbGwgYXMgdG8gdGhlIGFzeW5jaHJvbm91cyBhbmQKKwlleHBlZGl0ZWQgZm9ybXMgb2YgdGhlIHRocmVlIHByaW1pdGl2ZXMsIG5hbWVseSBjYWxsX3JjdSgpLAorCWNhbGxfcmN1X2JoKCksIGNhbGxfc3JjdSgpLCBzeW5jaHJvbml6ZV9yY3VfZXhwZWRpdGVkKCksCisJc3luY2hyb25pemVfcmN1X2JoX2V4cGVkaXRlZCgpLCBhbmQgc3luY2hyb25pemVfc3JjdV9leHBlZGl0ZWQoKS4KKworMTIuCUFueSBsb2NrIGFjcXVpcmVkIGJ5IGFuIFJDVSBjYWxsYmFjayBtdXN0IGJlIGFjcXVpcmVkIGVsc2V3aGVyZQorCXdpdGggc29mdGlycSBkaXNhYmxlZCwgZS5nLiwgdmlhIHNwaW5fbG9ja19pcnFzYXZlKCksCisJc3Bpbl9sb2NrX2JoKCksIGV0Yy4gIEZhaWxpbmcgdG8gZGlzYWJsZSBpcnEgb24gYSBnaXZlbgorCWFjcXVpc2l0aW9uIG9mIHRoYXQgbG9jayB3aWxsIHJlc3VsdCBpbiBkZWFkbG9jayBhcyBzb29uIGFzCisJdGhlIFJDVSBzb2Z0aXJxIGhhbmRsZXIgaGFwcGVucyB0byBydW4geW91ciBSQ1UgY2FsbGJhY2sgd2hpbGUKKwlpbnRlcnJ1cHRpbmcgdGhhdCBhY3F1aXNpdGlvbidzIGNyaXRpY2FsIHNlY3Rpb24uCisKKzEzLglSQ1UgY2FsbGJhY2tzIGNhbiBiZSBhbmQgYXJlIGV4ZWN1dGVkIGluIHBhcmFsbGVsLiAgSW4gbWFueSBjYXNlcywKKwl0aGUgY2FsbGJhY2sgY29kZSBzaW1wbHkgd3JhcHBlcnMgYXJvdW5kIGtmcmVlKCksIHNvIHRoYXQgdGhpcworCWlzIG5vdCBhbiBpc3N1ZSAob3IsIG1vcmUgYWNjdXJhdGVseSwgdG8gdGhlIGV4dGVudCB0aGF0IGl0IGlzCisJYW4gaXNzdWUsIHRoZSBtZW1vcnktYWxsb2NhdG9yIGxvY2tpbmcgaGFuZGxlcyBpdCkuICBIb3dldmVyLAorCWlmIHRoZSBjYWxsYmFja3MgZG8gbWFuaXB1bGF0ZSBhIHNoYXJlZCBkYXRhIHN0cnVjdHVyZSwgdGhleQorCW11c3QgdXNlIHdoYXRldmVyIGxvY2tpbmcgb3Igb3RoZXIgc3luY2hyb25pemF0aW9uIGlzIHJlcXVpcmVkCisJdG8gc2FmZWx5IGFjY2VzcyBhbmQvb3IgbW9kaWZ5IHRoYXQgZGF0YSBzdHJ1Y3R1cmUuCisKKwlSQ1UgY2FsbGJhY2tzIGFyZSAtdXN1YWxseS0gZXhlY3V0ZWQgb24gdGhlIHNhbWUgQ1BVIHRoYXQgZXhlY3V0ZWQKKwl0aGUgY29ycmVzcG9uZGluZyBjYWxsX3JjdSgpLCBjYWxsX3JjdV9iaCgpLCBvciBjYWxsX3JjdV9zY2hlZCgpLAorCWJ1dCBhcmUgYnkgLW5vLSBtZWFucyBndWFyYW50ZWVkIHRvIGJlLiAgRm9yIGV4YW1wbGUsIGlmIGEgZ2l2ZW4KKwlDUFUgZ29lcyBvZmZsaW5lIHdoaWxlIGhhdmluZyBhbiBSQ1UgY2FsbGJhY2sgcGVuZGluZywgdGhlbiB0aGF0CisJUkNVIGNhbGxiYWNrIHdpbGwgZXhlY3V0ZSBvbiBzb21lIHN1cnZpdmluZyBDUFUuICAoSWYgdGhpcyB3YXMKKwlub3QgdGhlIGNhc2UsIGEgc2VsZi1zcGF3bmluZyBSQ1UgY2FsbGJhY2sgd291bGQgcHJldmVudCB0aGUKKwl2aWN0aW0gQ1BVIGZyb20gZXZlciBnb2luZyBvZmZsaW5lLikKKworMTQuCVNSQ1UgKHNyY3VfcmVhZF9sb2NrKCksIHNyY3VfcmVhZF91bmxvY2soKSwgc3JjdV9kZXJlZmVyZW5jZSgpLAorCXN5bmNocm9uaXplX3NyY3UoKSwgc3luY2hyb25pemVfc3JjdV9leHBlZGl0ZWQoKSwgYW5kIGNhbGxfc3JjdSgpKQorCW1heSBvbmx5IGJlIGludm9rZWQgZnJvbSBwcm9jZXNzIGNvbnRleHQuICBVbmxpa2Ugb3RoZXIgZm9ybXMgb2YKKwlSQ1UsIGl0IC1pcy0gcGVybWlzc2libGUgdG8gYmxvY2sgaW4gYW4gU1JDVSByZWFkLXNpZGUgY3JpdGljYWwKKwlzZWN0aW9uIChkZW1hcmtlZCBieSBzcmN1X3JlYWRfbG9jaygpIGFuZCBzcmN1X3JlYWRfdW5sb2NrKCkpLAorCWhlbmNlIHRoZSAiU1JDVSI6ICJzbGVlcGFibGUgUkNVIi4gIFBsZWFzZSBub3RlIHRoYXQgaWYgeW91CisJZG9uJ3QgbmVlZCB0byBzbGVlcCBpbiByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbnMsIHlvdSBzaG91bGQgYmUKKwl1c2luZyBSQ1UgcmF0aGVyIHRoYW4gU1JDVSwgYmVjYXVzZSBSQ1UgaXMgYWxtb3N0IGFsd2F5cyBmYXN0ZXIKKwlhbmQgZWFzaWVyIHRvIHVzZSB0aGFuIGlzIFNSQ1UuCisKKwlBbHNvIHVubGlrZSBvdGhlciBmb3JtcyBvZiBSQ1UsIGV4cGxpY2l0IGluaXRpYWxpemF0aW9uCisJYW5kIGNsZWFudXAgaXMgcmVxdWlyZWQgdmlhIGluaXRfc3JjdV9zdHJ1Y3QoKSBhbmQKKwljbGVhbnVwX3NyY3Vfc3RydWN0KCkuCVRoZXNlIGFyZSBwYXNzZWQgYSAic3RydWN0IHNyY3Vfc3RydWN0IgorCXRoYXQgZGVmaW5lcyB0aGUgc2NvcGUgb2YgYSBnaXZlbiBTUkNVIGRvbWFpbi4JT25jZSBpbml0aWFsaXplZCwKKwl0aGUgc3JjdV9zdHJ1Y3QgaXMgcGFzc2VkIHRvIHNyY3VfcmVhZF9sb2NrKCksIHNyY3VfcmVhZF91bmxvY2soKQorCXN5bmNocm9uaXplX3NyY3UoKSwgc3luY2hyb25pemVfc3JjdV9leHBlZGl0ZWQoKSwgYW5kIGNhbGxfc3JjdSgpLgorCUEgZ2l2ZW4gc3luY2hyb25pemVfc3JjdSgpIHdhaXRzIG9ubHkgZm9yIFNSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsCisJc2VjdGlvbnMgZ292ZXJuZWQgYnkgc3JjdV9yZWFkX2xvY2soKSBhbmQgc3JjdV9yZWFkX3VubG9jaygpCisJY2FsbHMgdGhhdCBoYXZlIGJlZW4gcGFzc2VkIHRoZSBzYW1lIHNyY3Vfc3RydWN0LiAgVGhpcyBwcm9wZXJ0eQorCWlzIHdoYXQgbWFrZXMgc2xlZXBpbmcgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb25zIHRvbGVyYWJsZSAtLQorCWEgZ2l2ZW4gc3Vic3lzdGVtIGRlbGF5cyBvbmx5IGl0cyBvd24gdXBkYXRlcywgbm90IHRob3NlIG9mIG90aGVyCisJc3Vic3lzdGVtcyB1c2luZyBTUkNVLglUaGVyZWZvcmUsIFNSQ1UgaXMgbGVzcyBwcm9uZSB0byBPT00gdGhlCisJc3lzdGVtIHRoYW4gUkNVIHdvdWxkIGJlIGlmIFJDVSdzIHJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9ucworCXdlcmUgcGVybWl0dGVkIHRvIHNsZWVwLgorCisJVGhlIGFiaWxpdHkgdG8gc2xlZXAgaW4gcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb25zIGRvZXMgbm90CisJY29tZSBmb3IgZnJlZS4JRmlyc3QsIGNvcnJlc3BvbmRpbmcgc3JjdV9yZWFkX2xvY2soKSBhbmQKKwlzcmN1X3JlYWRfdW5sb2NrKCkgY2FsbHMgbXVzdCBiZSBwYXNzZWQgdGhlIHNhbWUgc3JjdV9zdHJ1Y3QuCisJU2Vjb25kLCBncmFjZS1wZXJpb2QtZGV0ZWN0aW9uIG92ZXJoZWFkIGlzIGFtb3J0aXplZCBvbmx5CisJb3ZlciB0aG9zZSB1cGRhdGVzIHNoYXJpbmcgYSBnaXZlbiBzcmN1X3N0cnVjdCwgcmF0aGVyIHRoYW4KKwliZWluZyBnbG9iYWxseSBhbW9ydGl6ZWQgYXMgdGhleSBhcmUgZm9yIG90aGVyIGZvcm1zIG9mIFJDVS4KKwlUaGVyZWZvcmUsIFNSQ1Ugc2hvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byByd19zZW1hcGhvcmUKKwlvbmx5IGluIGV4dHJlbWVseSByZWFkLWludGVuc2l2ZSBzaXR1YXRpb25zLCBvciBpbiBzaXR1YXRpb25zCisJcmVxdWlyaW5nIFNSQ1UncyByZWFkLXNpZGUgZGVhZGxvY2sgaW1tdW5pdHkgb3IgbG93IHJlYWQtc2lkZQorCXJlYWx0aW1lIGxhdGVuY3kuCisKKwlOb3RlIHRoYXQsIHJjdV9hc3NpZ25fcG9pbnRlcigpIHJlbGF0ZXMgdG8gU1JDVSBqdXN0IGFzIGl0IGRvZXMKKwl0byBvdGhlciBmb3JtcyBvZiBSQ1UuCisKKzE1LglUaGUgd2hvbGUgcG9pbnQgb2YgY2FsbF9yY3UoKSwgc3luY2hyb25pemVfcmN1KCksIGFuZCBmcmllbmRzCisJaXMgdG8gd2FpdCB1bnRpbCBhbGwgcHJlLWV4aXN0aW5nIHJlYWRlcnMgaGF2ZSBmaW5pc2hlZCBiZWZvcmUKKwljYXJyeWluZyBvdXQgc29tZSBvdGhlcndpc2UtZGVzdHJ1Y3RpdmUgb3BlcmF0aW9uLiAgSXQgaXMKKwl0aGVyZWZvcmUgY3JpdGljYWxseSBpbXBvcnRhbnQgdG8gLWZpcnN0LSByZW1vdmUgYW55IHBhdGgKKwl0aGF0IHJlYWRlcnMgY2FuIGZvbGxvdyB0aGF0IGNvdWxkIGJlIGFmZmVjdGVkIGJ5IHRoZQorCWRlc3RydWN0aXZlIG9wZXJhdGlvbiwgYW5kIC1vbmx5LSAtdGhlbi0gaW52b2tlIGNhbGxfcmN1KCksCisJc3luY2hyb25pemVfcmN1KCksIG9yIGZyaWVuZHMuCisKKwlCZWNhdXNlIHRoZXNlIHByaW1pdGl2ZXMgb25seSB3YWl0IGZvciBwcmUtZXhpc3RpbmcgcmVhZGVycywgaXQKKwlpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZ3VhcmFudGVlIHRoYXQgYW55IHN1YnNlcXVlbnQKKwlyZWFkZXJzIHdpbGwgZXhlY3V0ZSBzYWZlbHkuCisKKzE2LglUaGUgdmFyaW91cyBSQ1UgcmVhZC1zaWRlIHByaW1pdGl2ZXMgZG8gLW5vdC0gbmVjZXNzYXJpbHkgY29udGFpbgorCW1lbW9yeSBiYXJyaWVycy4gIFlvdSBzaG91bGQgdGhlcmVmb3JlIHBsYW4gZm9yIHRoZSBDUFUKKwlhbmQgdGhlIGNvbXBpbGVyIHRvIGZyZWVseSByZW9yZGVyIGNvZGUgaW50byBhbmQgb3V0IG9mIFJDVQorCXJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9ucy4gIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUKKwlSQ1UgdXBkYXRlLXNpZGUgcHJpbWl0aXZlcyB0byBkZWFsIHdpdGggdGhpcy4KKworMTcuCVVzZSBDT05GSUdfUFJPVkVfUkNVLCBDT05GSUdfREVCVUdfT0JKRUNUU19SQ1VfSEVBRCwgYW5kIHRoZQorCV9fcmN1IHNwYXJzZSBjaGVja3MgKGVuYWJsZWQgYnkgQ09ORklHX1NQQVJTRV9SQ1VfUE9JTlRFUikgdG8KKwl2YWxpZGF0ZSB5b3VyIFJDVSBjb2RlLiAgVGhlc2UgY2FuIGhlbHAgZmluZCBwcm9ibGVtcyBhcyBmb2xsb3dzOgorCisJQ09ORklHX1BST1ZFX1JDVTogY2hlY2sgdGhhdCBhY2Nlc3NlcyB0byBSQ1UtcHJvdGVjdGVkIGRhdGEKKwkJc3RydWN0dXJlcyBhcmUgY2FycmllZCBvdXQgdW5kZXIgdGhlIHByb3BlciBSQ1UKKwkJcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb24sIHdoaWxlIGhvbGRpbmcgdGhlIHJpZ2h0CisJCWNvbWJpbmF0aW9uIG9mIGxvY2tzLCBvciB3aGF0ZXZlciBvdGhlciBjb25kaXRpb25zCisJCWFyZSBhcHByb3ByaWF0ZS4KKworCUNPTkZJR19ERUJVR19PQkpFQ1RTX1JDVV9IRUFEOiBjaGVjayB0aGF0IHlvdSBkb24ndCBwYXNzIHRoZQorCQlzYW1lIG9iamVjdCB0byBjYWxsX3JjdSgpIChvciBmcmllbmRzKSBiZWZvcmUgYW4gUkNVCisJCWdyYWNlIHBlcmlvZCBoYXMgZWxhcHNlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoYXQgeW91CisJCXBhc3NlZCB0aGF0IHNhbWUgb2JqZWN0IHRvIGNhbGxfcmN1KCkgKG9yIGZyaWVuZHMpLgorCisJX19yY3Ugc3BhcnNlIGNoZWNrczogdGFnIHRoZSBwb2ludGVyIHRvIHRoZSBSQ1UtcHJvdGVjdGVkIGRhdGEKKwkJc3RydWN0dXJlIHdpdGggX19yY3UsIGFuZCBzcGFyc2Ugd2lsbCB3YXJuIHlvdSBpZiB5b3UKKwkJYWNjZXNzIHRoYXQgcG9pbnRlciB3aXRob3V0IHRoZSBzZXJ2aWNlcyBvZiBvbmUgb2YgdGhlCisJCXZhcmlhbnRzIG9mIHJjdV9kZXJlZmVyZW5jZSgpLgorCisJVGhlc2UgZGVidWdnaW5nIGFpZHMgY2FuIGhlbHAgeW91IGZpbmQgcHJvYmxlbXMgdGhhdCBhcmUKKwlvdGhlcndpc2UgZXh0cmVtZWx5IGRpZmZpY3VsdCB0byBzcG90LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SQ1UvbGlzdFJDVS50eHQgYi9Eb2N1bWVudGF0aW9uL1JDVS9saXN0UkNVLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGI1YTM3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9SQ1UvbGlzdFJDVS50eHQKQEAgLTAsMCArMSwzMTUgQEAKK1VzaW5nIFJDVSB0byBQcm90ZWN0IFJlYWQtTW9zdGx5IExpbmtlZCBMaXN0cworCisKK09uZSBvZiB0aGUgYmVzdCBhcHBsaWNhdGlvbnMgb2YgUkNVIGlzIHRvIHByb3RlY3QgcmVhZC1tb3N0bHkgbGlua2VkIGxpc3RzCisoInN0cnVjdCBsaXN0X2hlYWQiIGluIGxpc3QuaCkuICBPbmUgYmlnIGFkdmFudGFnZSBvZiB0aGlzIGFwcHJvYWNoCitpcyB0aGF0IGFsbCBvZiB0aGUgcmVxdWlyZWQgbWVtb3J5IGJhcnJpZXJzIGFyZSBpbmNsdWRlZCBmb3IgeW91IGluCit0aGUgbGlzdCBtYWNyb3MuICBUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyBzZXZlcmFsIGFwcGxpY2F0aW9ucyBvZiBSQ1UsCit3aXRoIHRoZSBiZXN0IGZpdHMgZmlyc3QuCisKKworRXhhbXBsZSAxOiBSZWFkLVNpZGUgQWN0aW9uIFRha2VuIE91dHNpZGUgb2YgTG9jaywgTm8gSW4tUGxhY2UgVXBkYXRlcworCitUaGUgYmVzdCBhcHBsaWNhdGlvbnMgYXJlIGNhc2VzIHdoZXJlLCBpZiByZWFkZXItd3JpdGVyIGxvY2tpbmcgd2VyZQordXNlZCwgdGhlIHJlYWQtc2lkZSBsb2NrIHdvdWxkIGJlIGRyb3BwZWQgYmVmb3JlIHRha2luZyBhbnkgYWN0aW9uCitiYXNlZCBvbiB0aGUgcmVzdWx0cyBvZiB0aGUgc2VhcmNoLiAgVGhlIG1vc3QgY2VsZWJyYXRlZCBleGFtcGxlIGlzCit0aGUgcm91dGluZyB0YWJsZS4gIEJlY2F1c2UgdGhlIHJvdXRpbmcgdGFibGUgaXMgdHJhY2tpbmcgdGhlIHN0YXRlIG9mCitlcXVpcG1lbnQgb3V0c2lkZSBvZiB0aGUgY29tcHV0ZXIsIGl0IHdpbGwgYXQgdGltZXMgY29udGFpbiBzdGFsZSBkYXRhLgorVGhlcmVmb3JlLCBvbmNlIHRoZSByb3V0ZSBoYXMgYmVlbiBjb21wdXRlZCwgdGhlcmUgaXMgbm8gbmVlZCB0byBob2xkCit0aGUgcm91dGluZyB0YWJsZSBzdGF0aWMgZHVyaW5nIHRyYW5zbWlzc2lvbiBvZiB0aGUgcGFja2V0LiAgQWZ0ZXIgYWxsLAoreW91IGNhbiBob2xkIHRoZSByb3V0aW5nIHRhYmxlIHN0YXRpYyBhbGwgeW91IHdhbnQsIGJ1dCB0aGF0IHdvbid0IGtlZXAKK3RoZSBleHRlcm5hbCBJbnRlcm5ldCBmcm9tIGNoYW5naW5nLCBhbmQgaXQgaXMgdGhlIHN0YXRlIG9mIHRoZSBleHRlcm5hbAorSW50ZXJuZXQgdGhhdCByZWFsbHkgbWF0dGVycy4gIEluIGFkZGl0aW9uLCByb3V0aW5nIGVudHJpZXMgYXJlIHR5cGljYWxseQorYWRkZWQgb3IgZGVsZXRlZCwgcmF0aGVyIHRoYW4gYmVpbmcgbW9kaWZpZWQgaW4gcGxhY2UuCisKK0Egc3RyYWlnaHRmb3J3YXJkIGV4YW1wbGUgb2YgdGhpcyB1c2Ugb2YgUkNVIG1heSBiZSBmb3VuZCBpbiB0aGUKK3N5c3RlbS1jYWxsIGF1ZGl0aW5nIHN1cHBvcnQuICBGb3IgZXhhbXBsZSwgYSByZWFkZXItd3JpdGVyIGxvY2tlZAoraW1wbGVtZW50YXRpb24gb2YgYXVkaXRfZmlsdGVyX3Rhc2soKSBtaWdodCBiZSBhcyBmb2xsb3dzOgorCisJc3RhdGljIGVudW0gYXVkaXRfc3RhdGUgYXVkaXRfZmlsdGVyX3Rhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCisJeworCQlzdHJ1Y3QgYXVkaXRfZW50cnkgKmU7CisJCWVudW0gYXVkaXRfc3RhdGUgICBzdGF0ZTsKKworCQlyZWFkX2xvY2soJmF1ZGl0c2NfbG9jayk7CisJCS8qIE5vdGU6IGF1ZGl0X25ldGxpbmtfc2VtIGhlbGQgYnkgY2FsbGVyLiAqLworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGUsICZhdWRpdF90c2tsaXN0LCBsaXN0KSB7CisJCQlpZiAoYXVkaXRfZmlsdGVyX3J1bGVzKHRzaywgJmUtPnJ1bGUsIE5VTEwsICZzdGF0ZSkpIHsKKwkJCQlyZWFkX3VubG9jaygmYXVkaXRzY19sb2NrKTsKKwkJCQlyZXR1cm4gc3RhdGU7CisJCQl9CisJCX0KKwkJcmVhZF91bmxvY2soJmF1ZGl0c2NfbG9jayk7CisJCXJldHVybiBBVURJVF9CVUlMRF9DT05URVhUOworCX0KKworSGVyZSB0aGUgbGlzdCBpcyBzZWFyY2hlZCB1bmRlciB0aGUgbG9jaywgYnV0IHRoZSBsb2NrIGlzIGRyb3BwZWQgYmVmb3JlCit0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpcyByZXR1cm5lZC4gIEJ5IHRoZSB0aW1lIHRoYXQgdGhpcyB2YWx1ZSBpcyBhY3RlZAorb24sIHRoZSBsaXN0IG1heSB3ZWxsIGhhdmUgYmVlbiBtb2RpZmllZC4gIFRoaXMgbWFrZXMgc2Vuc2UsIHNpbmNlIGlmCit5b3UgYXJlIHR1cm5pbmcgYXVkaXRpbmcgb2ZmLCBpdCBpcyBPSyB0byBhdWRpdCBhIGZldyBleHRyYSBzeXN0ZW0gY2FsbHMuCisKK1RoaXMgbWVhbnMgdGhhdCBSQ1UgY2FuIGJlIGVhc2lseSBhcHBsaWVkIHRvIHRoZSByZWFkIHNpZGUsIGFzIGZvbGxvd3M6CisKKwlzdGF0aWMgZW51bSBhdWRpdF9zdGF0ZSBhdWRpdF9maWx0ZXJfdGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKKwl7CisJCXN0cnVjdCBhdWRpdF9lbnRyeSAqZTsKKwkJZW51bSBhdWRpdF9zdGF0ZSAgIHN0YXRlOworCisJCXJjdV9yZWFkX2xvY2soKTsKKwkJLyogTm90ZTogYXVkaXRfbmV0bGlua19zZW0gaGVsZCBieSBjYWxsZXIuICovCisJCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KGUsICZhdWRpdF90c2tsaXN0LCBsaXN0KSB7CisJCQlpZiAoYXVkaXRfZmlsdGVyX3J1bGVzKHRzaywgJmUtPnJ1bGUsIE5VTEwsICZzdGF0ZSkpIHsKKwkJCQlyY3VfcmVhZF91bmxvY2soKTsKKwkJCQlyZXR1cm4gc3RhdGU7CisJCQl9CisJCX0KKwkJcmN1X3JlYWRfdW5sb2NrKCk7CisJCXJldHVybiBBVURJVF9CVUlMRF9DT05URVhUOworCX0KKworVGhlIHJlYWRfbG9jaygpIGFuZCByZWFkX3VubG9jaygpIGNhbGxzIGhhdmUgYmVjb21lIHJjdV9yZWFkX2xvY2soKQorYW5kIHJjdV9yZWFkX3VubG9jaygpLCByZXNwZWN0aXZlbHksIGFuZCB0aGUgbGlzdF9mb3JfZWFjaF9lbnRyeSgpIGhhcworYmVjb21lIGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KCkuICBUaGUgX3JjdSgpIGxpc3QtdHJhdmVyc2FsIHByaW1pdGl2ZXMKK2luc2VydCB0aGUgcmVhZC1zaWRlIG1lbW9yeSBiYXJyaWVycyB0aGF0IGFyZSByZXF1aXJlZCBvbiBERUMgQWxwaGEgQ1BVcy4KKworVGhlIGNoYW5nZXMgdG8gdGhlIHVwZGF0ZSBzaWRlIGFyZSBhbHNvIHN0cmFpZ2h0Zm9yd2FyZC4gIEEgcmVhZGVyLXdyaXRlcgorbG9jayBtaWdodCBiZSB1c2VkIGFzIGZvbGxvd3MgZm9yIGRlbGV0aW9uIGFuZCBpbnNlcnRpb246CisKKwlzdGF0aWMgaW5saW5lIGludCBhdWRpdF9kZWxfcnVsZShzdHJ1Y3QgYXVkaXRfcnVsZSAqcnVsZSwKKwkJCQkJIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpCisJeworCQlzdHJ1Y3QgYXVkaXRfZW50cnkgICplOworCisJCXdyaXRlX2xvY2soJmF1ZGl0c2NfbG9jayk7CisJCWxpc3RfZm9yX2VhY2hfZW50cnkoZSwgbGlzdCwgbGlzdCkgeworCQkJaWYgKCFhdWRpdF9jb21wYXJlX3J1bGUocnVsZSwgJmUtPnJ1bGUpKSB7CisJCQkJbGlzdF9kZWwoJmUtPmxpc3QpOworCQkJCXdyaXRlX3VubG9jaygmYXVkaXRzY19sb2NrKTsKKwkJCQlyZXR1cm4gMDsKKwkJCX0KKwkJfQorCQl3cml0ZV91bmxvY2soJmF1ZGl0c2NfbG9jayk7CisJCXJldHVybiAtRUZBVUxUOwkJLyogTm8gbWF0Y2hpbmcgcnVsZSAqLworCX0KKworCXN0YXRpYyBpbmxpbmUgaW50IGF1ZGl0X2FkZF9ydWxlKHN0cnVjdCBhdWRpdF9lbnRyeSAqZW50cnksCisJCQkJCSBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KQorCXsKKwkJd3JpdGVfbG9jaygmYXVkaXRzY19sb2NrKTsKKwkJaWYgKGVudHJ5LT5ydWxlLmZsYWdzICYgQVVESVRfUFJFUEVORCkgeworCQkJZW50cnktPnJ1bGUuZmxhZ3MgJj0gfkFVRElUX1BSRVBFTkQ7CisJCQlsaXN0X2FkZCgmZW50cnktPmxpc3QsIGxpc3QpOworCQl9IGVsc2UgeworCQkJbGlzdF9hZGRfdGFpbCgmZW50cnktPmxpc3QsIGxpc3QpOworCQl9CisJCXdyaXRlX3VubG9jaygmYXVkaXRzY19sb2NrKTsKKwkJcmV0dXJuIDA7CisJfQorCitGb2xsb3dpbmcgYXJlIHRoZSBSQ1UgZXF1aXZhbGVudHMgZm9yIHRoZXNlIHR3byBmdW5jdGlvbnM6CisKKwlzdGF0aWMgaW5saW5lIGludCBhdWRpdF9kZWxfcnVsZShzdHJ1Y3QgYXVkaXRfcnVsZSAqcnVsZSwKKwkJCQkJIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpCisJeworCQlzdHJ1Y3QgYXVkaXRfZW50cnkgICplOworCisJCS8qIERvIG5vdCB1c2UgdGhlIF9yY3UgaXRlcmF0b3IgaGVyZSwgc2luY2UgdGhpcyBpcyB0aGUgb25seQorCQkgKiBkZWxldGlvbiByb3V0aW5lLiAqLworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGUsIGxpc3QsIGxpc3QpIHsKKwkJCWlmICghYXVkaXRfY29tcGFyZV9ydWxlKHJ1bGUsICZlLT5ydWxlKSkgeworCQkJCWxpc3RfZGVsX3JjdSgmZS0+bGlzdCk7CisJCQkJY2FsbF9yY3UoJmUtPnJjdSwgYXVkaXRfZnJlZV9ydWxlKTsKKwkJCQlyZXR1cm4gMDsKKwkJCX0KKwkJfQorCQlyZXR1cm4gLUVGQVVMVDsJCS8qIE5vIG1hdGNoaW5nIHJ1bGUgKi8KKwl9CisKKwlzdGF0aWMgaW5saW5lIGludCBhdWRpdF9hZGRfcnVsZShzdHJ1Y3QgYXVkaXRfZW50cnkgKmVudHJ5LAorCQkJCQkgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCkKKwl7CisJCWlmIChlbnRyeS0+cnVsZS5mbGFncyAmIEFVRElUX1BSRVBFTkQpIHsKKwkJCWVudHJ5LT5ydWxlLmZsYWdzICY9IH5BVURJVF9QUkVQRU5EOworCQkJbGlzdF9hZGRfcmN1KCZlbnRyeS0+bGlzdCwgbGlzdCk7CisJCX0gZWxzZSB7CisJCQlsaXN0X2FkZF90YWlsX3JjdSgmZW50cnktPmxpc3QsIGxpc3QpOworCQl9CisJCXJldHVybiAwOworCX0KKworTm9ybWFsbHksIHRoZSB3cml0ZV9sb2NrKCkgYW5kIHdyaXRlX3VubG9jaygpIHdvdWxkIGJlIHJlcGxhY2VkIGJ5CithIHNwaW5fbG9jaygpIGFuZCBhIHNwaW5fdW5sb2NrKCksIGJ1dCBpbiB0aGlzIGNhc2UsIGFsbCBjYWxsZXJzIGhvbGQKK2F1ZGl0X25ldGxpbmtfc2VtLCBzbyBubyBhZGRpdGlvbmFsIGxvY2tpbmcgaXMgcmVxdWlyZWQuICBUaGUgYXVkaXRzY19sb2NrCitjYW4gdGhlcmVmb3JlIGJlIGVsaW1pbmF0ZWQsIHNpbmNlIHVzZSBvZiBSQ1UgZWxpbWluYXRlcyB0aGUgbmVlZCBmb3IKK3dyaXRlcnMgdG8gZXhjbHVkZSByZWFkZXJzLiAgTm9ybWFsbHksIHRoZSB3cml0ZV9sb2NrKCkgY2FsbHMgd291bGQKK2JlIGNvbnZlcnRlZCBpbnRvIHNwaW5fbG9jaygpIGNhbGxzLgorCitUaGUgbGlzdF9kZWwoKSwgbGlzdF9hZGQoKSwgYW5kIGxpc3RfYWRkX3RhaWwoKSBwcmltaXRpdmVzIGhhdmUgYmVlbgorcmVwbGFjZWQgYnkgbGlzdF9kZWxfcmN1KCksIGxpc3RfYWRkX3JjdSgpLCBhbmQgbGlzdF9hZGRfdGFpbF9yY3UoKS4KK1RoZSBfcmN1KCkgbGlzdC1tYW5pcHVsYXRpb24gcHJpbWl0aXZlcyBhZGQgbWVtb3J5IGJhcnJpZXJzIHRoYXQgYXJlCituZWVkZWQgb24gd2Vha2x5IG9yZGVyZWQgQ1BVcyAobW9zdCBvZiB0aGVtISkuICBUaGUgbGlzdF9kZWxfcmN1KCkKK3ByaW1pdGl2ZSBvbWl0cyB0aGUgcG9pbnRlciBwb2lzb25pbmcgZGVidWctYXNzaXN0IGNvZGUgdGhhdCB3b3VsZAorb3RoZXJ3aXNlIGNhdXNlIGNvbmN1cnJlbnQgcmVhZGVycyB0byBmYWlsIHNwZWN0YWN1bGFybHkuCisKK1NvLCB3aGVuIHJlYWRlcnMgY2FuIHRvbGVyYXRlIHN0YWxlIGRhdGEgYW5kIHdoZW4gZW50cmllcyBhcmUgZWl0aGVyIGFkZGVkCitvciBkZWxldGVkLCB3aXRob3V0IGluLXBsYWNlIG1vZGlmaWNhdGlvbiwgaXQgaXMgdmVyeSBlYXN5IHRvIHVzZSBSQ1UhCisKKworRXhhbXBsZSAyOiBIYW5kbGluZyBJbi1QbGFjZSBVcGRhdGVzCisKK1RoZSBzeXN0ZW0tY2FsbCBhdWRpdGluZyBjb2RlIGRvZXMgbm90IHVwZGF0ZSBhdWRpdGluZyBydWxlcyBpbiBwbGFjZS4KK0hvd2V2ZXIsIGlmIGl0IGRpZCwgcmVhZGVyLXdyaXRlci1sb2NrZWQgY29kZSB0byBkbyBzbyBtaWdodCBsb29rIGFzCitmb2xsb3dzIChwcmVzdW1hYmx5LCB0aGUgZmllbGRfY291bnQgaXMgb25seSBwZXJtaXR0ZWQgdG8gZGVjcmVhc2UsCitvdGhlcndpc2UsIHRoZSBhZGRlZCBmaWVsZHMgd291bGQgbmVlZCB0byBiZSBmaWxsZWQgaW4pOgorCisJc3RhdGljIGlubGluZSBpbnQgYXVkaXRfdXBkX3J1bGUoc3RydWN0IGF1ZGl0X3J1bGUgKnJ1bGUsCisJCQkJCSBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LAorCQkJCQkgX191MzIgbmV3YWN0aW9uLAorCQkJCQkgX191MzIgbmV3ZmllbGRfY291bnQpCisJeworCQlzdHJ1Y3QgYXVkaXRfZW50cnkgICplOworCQlzdHJ1Y3QgYXVkaXRfbmV3ZW50cnkgKm5lOworCisJCXdyaXRlX2xvY2soJmF1ZGl0c2NfbG9jayk7CisJCS8qIE5vdGU6IGF1ZGl0X25ldGxpbmtfc2VtIGhlbGQgYnkgY2FsbGVyLiAqLworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGUsIGxpc3QsIGxpc3QpIHsKKwkJCWlmICghYXVkaXRfY29tcGFyZV9ydWxlKHJ1bGUsICZlLT5ydWxlKSkgeworCQkJCWUtPnJ1bGUuYWN0aW9uID0gbmV3YWN0aW9uOworCQkJCWUtPnJ1bGUuZmlsZV9jb3VudCA9IG5ld2ZpZWxkX2NvdW50OworCQkJCXdyaXRlX3VubG9jaygmYXVkaXRzY19sb2NrKTsKKwkJCQlyZXR1cm4gMDsKKwkJCX0KKwkJfQorCQl3cml0ZV91bmxvY2soJmF1ZGl0c2NfbG9jayk7CisJCXJldHVybiAtRUZBVUxUOwkJLyogTm8gbWF0Y2hpbmcgcnVsZSAqLworCX0KKworVGhlIFJDVSB2ZXJzaW9uIGNyZWF0ZXMgYSBjb3B5LCB1cGRhdGVzIHRoZSBjb3B5LCB0aGVuIHJlcGxhY2VzIHRoZSBvbGQKK2VudHJ5IHdpdGggdGhlIG5ld2x5IHVwZGF0ZWQgZW50cnkuICBUaGlzIHNlcXVlbmNlIG9mIGFjdGlvbnMsIGFsbG93aW5nCitjb25jdXJyZW50IHJlYWRzIHdoaWxlIGRvaW5nIGEgY29weSB0byBwZXJmb3JtIGFuIHVwZGF0ZSwgaXMgd2hhdCBnaXZlcworUkNVICgicmVhZC1jb3B5IHVwZGF0ZSIpIGl0cyBuYW1lLiAgVGhlIFJDVSBjb2RlIGlzIGFzIGZvbGxvd3M6CisKKwlzdGF0aWMgaW5saW5lIGludCBhdWRpdF91cGRfcnVsZShzdHJ1Y3QgYXVkaXRfcnVsZSAqcnVsZSwKKwkJCQkJIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCisJCQkJCSBfX3UzMiBuZXdhY3Rpb24sCisJCQkJCSBfX3UzMiBuZXdmaWVsZF9jb3VudCkKKwl7CisJCXN0cnVjdCBhdWRpdF9lbnRyeSAgKmU7CisJCXN0cnVjdCBhdWRpdF9uZXdlbnRyeSAqbmU7CisKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShlLCBsaXN0LCBsaXN0KSB7CisJCQlpZiAoIWF1ZGl0X2NvbXBhcmVfcnVsZShydWxlLCAmZS0+cnVsZSkpIHsKKwkJCQluZSA9IGttYWxsb2Moc2l6ZW9mKCplbnRyeSksIEdGUF9BVE9NSUMpOworCQkJCWlmIChuZSA9PSBOVUxMKQorCQkJCQlyZXR1cm4gLUVOT01FTTsKKwkJCQlhdWRpdF9jb3B5X3J1bGUoJm5lLT5ydWxlLCAmZS0+cnVsZSk7CisJCQkJbmUtPnJ1bGUuYWN0aW9uID0gbmV3YWN0aW9uOworCQkJCW5lLT5ydWxlLmZpbGVfY291bnQgPSBuZXdmaWVsZF9jb3VudDsKKwkJCQlsaXN0X3JlcGxhY2VfcmN1KCZlLT5saXN0LCAmbmUtPmxpc3QpOworCQkJCWNhbGxfcmN1KCZlLT5yY3UsIGF1ZGl0X2ZyZWVfcnVsZSk7CisJCQkJcmV0dXJuIDA7CisJCQl9CisJCX0KKwkJcmV0dXJuIC1FRkFVTFQ7CQkvKiBObyBtYXRjaGluZyBydWxlICovCisJfQorCitBZ2FpbiwgdGhpcyBhc3N1bWVzIHRoYXQgdGhlIGNhbGxlciBob2xkcyBhdWRpdF9uZXRsaW5rX3NlbS4gIE5vcm1hbGx5LAordGhlIHJlYWRlci13cml0ZXIgbG9jayB3b3VsZCBiZWNvbWUgYSBzcGlubG9jayBpbiB0aGlzIHNvcnQgb2YgY29kZS4KKworCitFeGFtcGxlIDM6IEVsaW1pbmF0aW5nIFN0YWxlIERhdGEKKworVGhlIGF1ZGl0aW5nIGV4YW1wbGVzIGFib3ZlIHRvbGVyYXRlIHN0YWxlIGRhdGEsIGFzIGRvIG1vc3QgYWxnb3JpdGhtcwordGhhdCBhcmUgdHJhY2tpbmcgZXh0ZXJuYWwgc3RhdGUuICBCZWNhdXNlIHRoZXJlIGlzIGEgZGVsYXkgZnJvbSB0aGUKK3RpbWUgdGhlIGV4dGVybmFsIHN0YXRlIGNoYW5nZXMgYmVmb3JlIExpbnV4IGJlY29tZXMgYXdhcmUgb2YgdGhlIGNoYW5nZSwKK2FkZGl0aW9uYWwgUkNVLWluZHVjZWQgc3RhbGVuZXNzIGlzIG5vcm1hbGx5IG5vdCBhIHByb2JsZW0uCisKK0hvd2V2ZXIsIHRoZXJlIGFyZSBtYW55IGV4YW1wbGVzIHdoZXJlIHN0YWxlIGRhdGEgY2Fubm90IGJlIHRvbGVyYXRlZC4KK09uZSBleGFtcGxlIGluIHRoZSBMaW51eCBrZXJuZWwgaXMgdGhlIFN5c3RlbSBWIElQQyAoc2VlIHRoZSBpcGNfbG9jaygpCitmdW5jdGlvbiBpbiBpcGMvdXRpbC5jKS4gIFRoaXMgY29kZSBjaGVja3MgYSAiZGVsZXRlZCIgZmxhZyB1bmRlciBhCitwZXItZW50cnkgc3BpbmxvY2ssIGFuZCwgaWYgdGhlICJkZWxldGVkIiBmbGFnIGlzIHNldCwgcHJldGVuZHMgdGhhdCB0aGUKK2VudHJ5IGRvZXMgbm90IGV4aXN0LiAgRm9yIHRoaXMgdG8gYmUgaGVscGZ1bCwgdGhlIHNlYXJjaCBmdW5jdGlvbiBtdXN0CityZXR1cm4gaG9sZGluZyB0aGUgcGVyLWVudHJ5IHNwaW5sb2NrLCBhcyBpcGNfbG9jaygpIGRvZXMgaW4gZmFjdCBkby4KKworUXVpY2sgUXVpejogIFdoeSBkb2VzIHRoZSBzZWFyY2ggZnVuY3Rpb24gbmVlZCB0byByZXR1cm4gaG9sZGluZyB0aGUKKwlwZXItZW50cnkgbG9jayBmb3IgdGhpcyBkZWxldGVkLWZsYWcgdGVjaG5pcXVlIHRvIGJlIGhlbHBmdWw/CisKK0lmIHRoZSBzeXN0ZW0tY2FsbCBhdWRpdCBtb2R1bGUgd2VyZSB0byBldmVyIG5lZWQgdG8gcmVqZWN0IHN0YWxlIGRhdGEsCitvbmUgd2F5IHRvIGFjY29tcGxpc2ggdGhpcyB3b3VsZCBiZSB0byBhZGQgYSAiZGVsZXRlZCIgZmxhZyBhbmQgYSAibG9jayIKK3NwaW5sb2NrIHRvIHRoZSBhdWRpdF9lbnRyeSBzdHJ1Y3R1cmUsIGFuZCBtb2RpZnkgYXVkaXRfZmlsdGVyX3Rhc2soKQorYXMgZm9sbG93czoKKworCXN0YXRpYyBlbnVtIGF1ZGl0X3N0YXRlIGF1ZGl0X2ZpbHRlcl90YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQorCXsKKwkJc3RydWN0IGF1ZGl0X2VudHJ5ICplOworCQllbnVtIGF1ZGl0X3N0YXRlICAgc3RhdGU7CisKKwkJcmN1X3JlYWRfbG9jaygpOworCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShlLCAmYXVkaXRfdHNrbGlzdCwgbGlzdCkgeworCQkJaWYgKGF1ZGl0X2ZpbHRlcl9ydWxlcyh0c2ssICZlLT5ydWxlLCBOVUxMLCAmc3RhdGUpKSB7CisJCQkJc3Bpbl9sb2NrKCZlLT5sb2NrKTsKKwkJCQlpZiAoZS0+ZGVsZXRlZCkgeworCQkJCQlzcGluX3VubG9jaygmZS0+bG9jayk7CisJCQkJCXJjdV9yZWFkX3VubG9jaygpOworCQkJCQlyZXR1cm4gQVVESVRfQlVJTERfQ09OVEVYVDsKKwkJCQl9CisJCQkJcmN1X3JlYWRfdW5sb2NrKCk7CisJCQkJcmV0dXJuIHN0YXRlOworCQkJfQorCQl9CisJCXJjdV9yZWFkX3VubG9jaygpOworCQlyZXR1cm4gQVVESVRfQlVJTERfQ09OVEVYVDsKKwl9CisKK05vdGUgdGhhdCB0aGlzIGV4YW1wbGUgYXNzdW1lcyB0aGF0IGVudHJpZXMgYXJlIG9ubHkgYWRkZWQgYW5kIGRlbGV0ZWQuCitBZGRpdGlvbmFsIG1lY2hhbmlzbSBpcyByZXF1aXJlZCB0byBkZWFsIGNvcnJlY3RseSB3aXRoIHRoZQordXBkYXRlLWluLXBsYWNlIHBlcmZvcm1lZCBieSBhdWRpdF91cGRfcnVsZSgpLiAgRm9yIG9uZSB0aGluZywKK2F1ZGl0X3VwZF9ydWxlKCkgd291bGQgbmVlZCBhZGRpdGlvbmFsIG1lbW9yeSBiYXJyaWVycyB0byBlbnN1cmUKK3RoYXQgdGhlIGxpc3RfYWRkX3JjdSgpIHdhcyByZWFsbHkgZXhlY3V0ZWQgYmVmb3JlIHRoZSBsaXN0X2RlbF9yY3UoKS4KKworVGhlIGF1ZGl0X2RlbF9ydWxlKCkgZnVuY3Rpb24gd291bGQgbmVlZCB0byBzZXQgdGhlICJkZWxldGVkIgorZmxhZyB1bmRlciB0aGUgc3BpbmxvY2sgYXMgZm9sbG93czoKKworCXN0YXRpYyBpbmxpbmUgaW50IGF1ZGl0X2RlbF9ydWxlKHN0cnVjdCBhdWRpdF9ydWxlICpydWxlLAorCQkJCQkgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCkKKwl7CisJCXN0cnVjdCBhdWRpdF9lbnRyeSAgKmU7CisKKwkJLyogRG8gbm90IG5lZWQgdG8gdXNlIHRoZSBfcmN1IGl0ZXJhdG9yIGhlcmUsIHNpbmNlIHRoaXMKKwkJICogaXMgdGhlIG9ubHkgZGVsZXRpb24gcm91dGluZS4gKi8KKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShlLCBsaXN0LCBsaXN0KSB7CisJCQlpZiAoIWF1ZGl0X2NvbXBhcmVfcnVsZShydWxlLCAmZS0+cnVsZSkpIHsKKwkJCQlzcGluX2xvY2soJmUtPmxvY2spOworCQkJCWxpc3RfZGVsX3JjdSgmZS0+bGlzdCk7CisJCQkJZS0+ZGVsZXRlZCA9IDE7CisJCQkJc3Bpbl91bmxvY2soJmUtPmxvY2spOworCQkJCWNhbGxfcmN1KCZlLT5yY3UsIGF1ZGl0X2ZyZWVfcnVsZSk7CisJCQkJcmV0dXJuIDA7CisJCQl9CisJCX0KKwkJcmV0dXJuIC1FRkFVTFQ7CQkvKiBObyBtYXRjaGluZyBydWxlICovCisJfQorCisKK1N1bW1hcnkKKworUmVhZC1tb3N0bHkgbGlzdC1iYXNlZCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBjYW4gdG9sZXJhdGUgc3RhbGUgZGF0YSBhcmUKK3RoZSBtb3N0IGFtZW5hYmxlIHRvIHVzZSBvZiBSQ1UuICBUaGUgc2ltcGxlc3QgY2FzZSBpcyB3aGVyZSBlbnRyaWVzIGFyZQorZWl0aGVyIGFkZGVkIG9yIGRlbGV0ZWQgZnJvbSB0aGUgZGF0YSBzdHJ1Y3R1cmUgKG9yIGF0b21pY2FsbHkgbW9kaWZpZWQKK2luIHBsYWNlKSwgYnV0IG5vbi1hdG9taWMgaW4tcGxhY2UgbW9kaWZpY2F0aW9ucyBjYW4gYmUgaGFuZGxlZCBieSBtYWtpbmcKK2EgY29weSwgdXBkYXRpbmcgdGhlIGNvcHksIHRoZW4gcmVwbGFjaW5nIHRoZSBvcmlnaW5hbCB3aXRoIHRoZSBjb3B5LgorSWYgc3RhbGUgZGF0YSBjYW5ub3QgYmUgdG9sZXJhdGVkLCB0aGVuIGEgImRlbGV0ZWQiIGZsYWcgbWF5IGJlIHVzZWQKK2luIGNvbmp1bmN0aW9uIHdpdGggYSBwZXItZW50cnkgc3BpbmxvY2sgaW4gb3JkZXIgdG8gYWxsb3cgdGhlIHNlYXJjaAorZnVuY3Rpb24gdG8gcmVqZWN0IG5ld2x5IGRlbGV0ZWQgZGF0YS4KKworCitBbnN3ZXIgdG8gUXVpY2sgUXVpegorCVdoeSBkb2VzIHRoZSBzZWFyY2ggZnVuY3Rpb24gbmVlZCB0byByZXR1cm4gaG9sZGluZyB0aGUgcGVyLWVudHJ5CisJbG9jayBmb3IgdGhpcyBkZWxldGVkLWZsYWcgdGVjaG5pcXVlIHRvIGJlIGhlbHBmdWw/CisKKwlJZiB0aGUgc2VhcmNoIGZ1bmN0aW9uIGRyb3BzIHRoZSBwZXItZW50cnkgbG9jayBiZWZvcmUgcmV0dXJuaW5nLAorCXRoZW4gdGhlIGNhbGxlciB3aWxsIGJlIHByb2Nlc3Npbmcgc3RhbGUgZGF0YSBpbiBhbnkgY2FzZS4gIElmIGl0CisJaXMgcmVhbGx5IE9LIHRvIGJlIHByb2Nlc3Npbmcgc3RhbGUgZGF0YSwgdGhlbiB5b3UgZG9uJ3QgbmVlZCBhCisJImRlbGV0ZWQiIGZsYWcuICBJZiBwcm9jZXNzaW5nIHN0YWxlIGRhdGEgcmVhbGx5IGlzIGEgcHJvYmxlbSwKKwl0aGVuIHlvdSBuZWVkIHRvIGhvbGQgdGhlIHBlci1lbnRyeSBsb2NrIGFjcm9zcyBhbGwgb2YgdGhlIGNvZGUKKwl0aGF0IHVzZXMgdGhlIHZhbHVlIHRoYXQgd2FzIHJldHVybmVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SQ1UvbG9ja2RlcC1zcGxhdC50eHQgYi9Eb2N1bWVudGF0aW9uL1JDVS9sb2NrZGVwLXNwbGF0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjkwNjExCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9SQ1UvbG9ja2RlcC1zcGxhdC50eHQKQEAgLTAsMCArMSwxMTAgQEAKK0xvY2tkZXAtUkNVIHdhcyBhZGRlZCB0byB0aGUgTGludXgga2VybmVsIGluIGVhcmx5IDIwMTAKKyhodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8zNzE5ODYvKS4gIFRoaXMgZmFjaWxpdHkgY2hlY2tzIGZvciBzb21lIGNvbW1vbgorbWlzdXNlcyBvZiB0aGUgUkNVIEFQSSwgbW9zdCBub3RhYmx5IHVzaW5nIG9uZSBvZiB0aGUgcmN1X2RlcmVmZXJlbmNlKCkKK2ZhbWlseSB0byBhY2Nlc3MgYW4gUkNVLXByb3RlY3RlZCBwb2ludGVyIHdpdGhvdXQgdGhlIHByb3BlciBwcm90ZWN0aW9uLgorV2hlbiBzdWNoIG1pc3VzZSBpcyBkZXRlY3RlZCwgYW4gbG9ja2RlcC1SQ1Ugc3BsYXQgaXMgZW1pdHRlZC4KKworVGhlIHVzdWFsIGNhdXNlIG9mIGEgbG9ja2RlcC1SQ1Ugc2xhdCBpcyBzb21lb25lIGFjY2Vzc2luZyBhbgorUkNVLXByb3RlY3RlZCBkYXRhIHN0cnVjdHVyZSB3aXRob3V0IGVpdGhlciAoMSkgYmVpbmcgaW4gdGhlIHJpZ2h0IGtpbmQgb2YKK1JDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbiBvciAoMikgaG9sZGluZyB0aGUgcmlnaHQgdXBkYXRlLXNpZGUgbG9jay4KK1RoaXMgcHJvYmxlbSBjYW4gdGhlcmVmb3JlIGJlIHNlcmlvdXM6IGl0IG1pZ2h0IHJlc3VsdCBpbiByYW5kb20gbWVtb3J5CitvdmVyd3JpdGluZyBvciB3b3JzZS4gIFRoZXJlIGNhbiBvZiBjb3Vyc2UgYmUgZmFsc2UgcG9zaXRpdmVzLCB0aGlzCitiZWluZyB0aGUgcmVhbCB3b3JsZCBhbmQgYWxsIHRoYXQuCisKK1NvIGxldCdzIGxvb2sgYXQgYW4gZXhhbXBsZSBSQ1UgbG9ja2RlcCBzcGxhdCBmcm9tIDMuMC1yYzUsIG9uZSB0aGF0CitoYXMgbG9uZyBzaW5jZSBiZWVuIGZpeGVkOgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitbIElORk86IHN1c3BpY2lvdXMgUkNVIHVzYWdlLiBdCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitibG9jay9jZnEtaW9zY2hlZC5jOjI3NzYgc3VzcGljaW91cyByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKCkgdXNhZ2UhCisKK290aGVyIGluZm8gdGhhdCBtaWdodCBoZWxwIHVzIGRlYnVnIHRoaXM6CisKKworcmN1X3NjaGVkdWxlcl9hY3RpdmUgPSAxLCBkZWJ1Z19sb2NrcyA9IDAKKzMgbG9ja3MgaGVsZCBieSBzY3NpX3NjYW5fNi8xNTUyOgorICMwOiAgKCZzaG9zdC0+c2Nhbl9tdXRleCl7Ky4rLisufSwgYXQ6IFs8ZmZmZmZmZmY4MTQ1ZWZjYT5dCitzY3NpX3NjYW5faG9zdF9zZWxlY3RlZCsweDVhLzB4MTUwCisgIzE6ICAoJmVxLT5zeXNmc19sb2NrKXsrLisuLi59LCBhdDogWzxmZmZmZmZmZjgxMmE1MDMyPl0KK2VsZXZhdG9yX2V4aXQrMHgyMi8weDYwCisgIzI6ICAoJigmcS0+X19xdWV1ZV9sb2NrKS0+cmxvY2spey0uLS4uLn0sIGF0OiBbPGZmZmZmZmZmODEyYjYyMzM+XQorY2ZxX2V4aXRfcXVldWUrMHg0My8weDE5MAorCitzdGFjayBiYWNrdHJhY2U6CitQaWQ6IDE1NTIsIGNvbW06IHNjc2lfc2Nhbl82IE5vdCB0YWludGVkIDMuMC4wLXJjNSAjMTcKK0NhbGwgVHJhY2U6CisgWzxmZmZmZmZmZjgxMGFiYjliPl0gbG9ja2RlcF9yY3VfZGVyZWZlcmVuY2UrMHhiYi8weGMwCisgWzxmZmZmZmZmZjgxMmI2MTM5Pl0gX19jZnFfZXhpdF9zaW5nbGVfaW9fY29udGV4dCsweGU5LzB4MTIwCisgWzxmZmZmZmZmZjgxMmI2MjZjPl0gY2ZxX2V4aXRfcXVldWUrMHg3Yy8weDE5MAorIFs8ZmZmZmZmZmY4MTJhNTA0Nj5dIGVsZXZhdG9yX2V4aXQrMHgzNi8weDYwCisgWzxmZmZmZmZmZjgxMmE4MDJhPl0gYmxrX2NsZWFudXBfcXVldWUrMHg0YS8weDYwCisgWzxmZmZmZmZmZjgxNDVjYzA5Pl0gc2NzaV9mcmVlX3F1ZXVlKzB4OS8weDEwCisgWzxmZmZmZmZmZjgxNDYwOTQ0Pl0gX19zY3NpX3JlbW92ZV9kZXZpY2UrMHg4NC8weGQwCisgWzxmZmZmZmZmZjgxNDVkY2EzPl0gc2NzaV9wcm9iZV9hbmRfYWRkX2x1bisweDM1My8weGIxMAorIFs8ZmZmZmZmZmY4MTdkYTA2OT5dID8gZXJyb3JfZXhpdCsweDI5LzB4YjAKKyBbPGZmZmZmZmZmODE3ZDk4ZWQ+XSA/IF9yYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSsweDNkLzB4ODAKKyBbPGZmZmZmZmZmODE0NWU3MjI+XSBfX3Njc2lfc2Nhbl90YXJnZXQrMHgxMTIvMHg2ODAKKyBbPGZmZmZmZmZmODEyYzY5MGQ+XSA/IHRyYWNlX2hhcmRpcnFzX29mZl90aHVuaysweDNhLzB4M2MKKyBbPGZmZmZmZmZmODE3ZGEwNjk+XSA/IGVycm9yX2V4aXQrMHgyOS8weGIwCisgWzxmZmZmZmZmZjgxMmJjYzYwPl0gPyBrb2JqZWN0X2RlbCsweDQwLzB4NDAKKyBbPGZmZmZmZmZmODE0NWVkMTY+XSBzY3NpX3NjYW5fY2hhbm5lbCsweDg2LzB4YjAKKyBbPGZmZmZmZmZmODE0NWYwYjA+XSBzY3NpX3NjYW5faG9zdF9zZWxlY3RlZCsweDE0MC8weDE1MAorIFs8ZmZmZmZmZmY4MTQ1ZjE0OT5dIGRvX3Njc2lfc2Nhbl9ob3N0KzB4ODkvMHg5MAorIFs8ZmZmZmZmZmY4MTQ1ZjE3MD5dIGRvX3NjYW5fYXN5bmMrMHgyMC8weDE2MAorIFs8ZmZmZmZmZmY4MTQ1ZjE1MD5dID8gZG9fc2NzaV9zY2FuX2hvc3QrMHg5MC8weDkwCisgWzxmZmZmZmZmZjgxMDk3NWI2Pl0ga3RocmVhZCsweGE2LzB4YjAKKyBbPGZmZmZmZmZmODE3ZGIxNTQ+XSBrZXJuZWxfdGhyZWFkX2hlbHBlcisweDQvMHgxMAorIFs8ZmZmZmZmZmY4MTA2NjQzMD5dID8gZmluaXNoX3Rhc2tfc3dpdGNoKzB4ODAvMHgxMTAKKyBbPGZmZmZmZmZmODE3ZDljMDQ+XSA/IHJldGludF9yZXN0b3JlX2FyZ3MrMHhlLzB4ZQorIFs8ZmZmZmZmZmY4MTA5NzUxMD5dID8gX19pbml0X2t0aHJlYWRfd29ya2VyKzB4NzAvMHg3MAorIFs8ZmZmZmZmZmY4MTdkYjE1MD5dID8gZ3NfY2hhbmdlKzB4Yi8weGIKKworTGluZSAyNzc2IG9mIGJsb2NrL2NmcS1pb3NjaGVkLmMgaW4gdjMuMC1yYzUgaXMgYXMgZm9sbG93czoKKworCWlmIChyY3VfZGVyZWZlcmVuY2UoaW9jLT5pb2NfZGF0YSkgPT0gY2ljKSB7CisKK1RoaXMgZm9ybSBzYXlzIHRoYXQgaXQgbXVzdCBiZSBpbiBhIHBsYWluIHZhbmlsbGEgUkNVIHJlYWQtc2lkZSBjcml0aWNhbAorc2VjdGlvbiwgYnV0IHRoZSAib3RoZXIgaW5mbyIgbGlzdCBhYm92ZSBzaG93cyB0aGF0IHRoaXMgaXMgbm90IHRoZQorY2FzZS4gIEluc3RlYWQsIHdlIGhvbGQgdGhyZWUgbG9ja3MsIG9uZSBvZiB3aGljaCBtaWdodCBiZSBSQ1UgcmVsYXRlZC4KK0FuZCBtYXliZSB0aGF0IGxvY2sgcmVhbGx5IGRvZXMgcHJvdGVjdCB0aGlzIHJlZmVyZW5jZS4gIElmIHNvLCB0aGUgZml4CitpcyB0byBpbmZvcm0gUkNVLCBwZXJoYXBzIGJ5IGNoYW5naW5nIF9fY2ZxX2V4aXRfc2luZ2xlX2lvX2NvbnRleHQoKSB0bwordGFrZSB0aGUgc3RydWN0IHJlcXVlc3RfcXVldWUgInEiIGZyb20gY2ZxX2V4aXRfcXVldWUoKSBhcyBhbiBhcmd1bWVudCwKK3doaWNoIHdvdWxkIHBlcm1pdCB1cyB0byBpbnZva2UgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZCBhcyBmb2xsb3dzOgorCisJaWYgKHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoaW9jLT5pb2NfZGF0YSwKKwkJCQkgICAgICBsb2NrZGVwX2lzX2hlbGQoJnEtPnF1ZXVlX2xvY2spKSA9PSBjaWMpIHsKKworV2l0aCB0aGlzIGNoYW5nZSwgdGhlcmUgd291bGQgYmUgbm8gbG9ja2RlcC1SQ1Ugc3BsYXQgZW1pdHRlZCBpZiB0aGlzCitjb2RlIHdhcyBpbnZva2VkIGVpdGhlciBmcm9tIHdpdGhpbiBhbiBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb24KK29yIHdpdGggdGhlIC0+cXVldWVfbG9jayBoZWxkLiAgSW4gcGFydGljdWxhciwgdGhpcyB3b3VsZCBoYXZlIHN1cHByZXNzZWQKK3RoZSBhYm92ZSBsb2NrZGVwLVJDVSBzcGxhdCBiZWNhdXNlIC0+cXVldWVfbG9jayBpcyBoZWxkIChzZWUgIzIgaW4gdGhlCitsaXN0IGFib3ZlKS4KKworT24gdGhlIG90aGVyIGhhbmQsIHBlcmhhcHMgd2UgcmVhbGx5IGRvIG5lZWQgYW4gUkNVIHJlYWQtc2lkZSBjcml0aWNhbAorc2VjdGlvbi4gIEluIHRoaXMgY2FzZSwgdGhlIGNyaXRpY2FsIHNlY3Rpb24gbXVzdCBzcGFuIHRoZSB1c2Ugb2YgdGhlCityZXR1cm4gdmFsdWUgZnJvbSByY3VfZGVyZWZlcmVuY2UoKSwgb3IgYXQgbGVhc3QgdW50aWwgdGhlcmUgaXMgc29tZQorcmVmZXJlbmNlIGNvdW50IGluY3JlbWVudGVkIG9yIHNvbWUgc3VjaC4gIE9uZSB3YXkgdG8gaGFuZGxlIHRoaXMgaXMgdG8KK2FkZCByY3VfcmVhZF9sb2NrKCkgYW5kIHJjdV9yZWFkX3VubG9jaygpIGFzIGZvbGxvd3M6CisKKwlyY3VfcmVhZF9sb2NrKCk7CisJaWYgKHJjdV9kZXJlZmVyZW5jZShpb2MtPmlvY19kYXRhKSA9PSBjaWMpIHsKKwkJc3Bpbl9sb2NrKCZpb2MtPmxvY2spOworCQlyY3VfYXNzaWduX3BvaW50ZXIoaW9jLT5pb2NfZGF0YSwgTlVMTCk7CisJCXNwaW5fdW5sb2NrKCZpb2MtPmxvY2spOworCX0KKwlyY3VfcmVhZF91bmxvY2soKTsKKworV2l0aCB0aGlzIGNoYW5nZSwgdGhlIHJjdV9kZXJlZmVyZW5jZSgpIGlzIGFsd2F5cyB3aXRoaW4gYW4gUkNVCityZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbiwgd2hpY2ggYWdhaW4gd291bGQgaGF2ZSBzdXBwcmVzc2VkIHRoZQorYWJvdmUgbG9ja2RlcC1SQ1Ugc3BsYXQuCisKK0J1dCBpbiB0aGlzIHBhcnRpY3VsYXIgY2FzZSwgd2UgZG9uJ3QgYWN0dWFsbHkgZGVmZXJlbmNlIHRoZSBwb2ludGVyCityZXR1cm5lZCBmcm9tIHJjdV9kZXJlZmVyZW5jZSgpLiAgSW5zdGVhZCwgdGhhdCBwb2ludGVyIGlzIGp1c3QgY29tcGFyZWQKK3RvIHRoZSBjaWMgcG9pbnRlciwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgcmN1X2RlcmVmZXJlbmNlKCkgY2FuIGJlIHJlcGxhY2VkCitieSByY3VfYWNjZXNzX3BvaW50ZXIoKSBhcyBmb2xsb3dzOgorCisJaWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihpb2MtPmlvY19kYXRhKSA9PSBjaWMpIHsKKworQmVjYXVzZSBpdCBpcyBsZWdhbCB0byBpbnZva2UgcmN1X2FjY2Vzc19wb2ludGVyKCkgd2l0aG91dCBwcm90ZWN0aW9uLAordGhpcyBjaGFuZ2Ugd291bGQgYWxzbyBzdXBwcmVzcyB0aGUgYWJvdmUgbG9ja2RlcC1SQ1Ugc3BsYXQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JDVS9sb2NrZGVwLnR4dCBiL0RvY3VtZW50YXRpb24vUkNVL2xvY2tkZXAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNTFkMzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1JDVS9sb2NrZGVwLnR4dApAQCAtMCwwICsxLDEwMiBAQAorUkNVIGFuZCBsb2NrZGVwIGNoZWNraW5nCisKK0FsbCBmbGF2b3JzIG9mIFJDVSBoYXZlIGxvY2tkZXAgY2hlY2tpbmcgYXZhaWxhYmxlLCBzbyB0aGF0IGxvY2tkZXAgaXMKK2F3YXJlIG9mIHdoZW4gZWFjaCB0YXNrIGVudGVycyBhbmQgbGVhdmVzIGFueSBmbGF2b3Igb2YgUkNVIHJlYWQtc2lkZQorY3JpdGljYWwgc2VjdGlvbi4gIEVhY2ggZmxhdm9yIG9mIFJDVSBpcyB0cmFja2VkIHNlcGFyYXRlbHkgKGJ1dCBub3RlCit0aGF0IHRoaXMgaXMgbm90IHRoZSBjYXNlIGluIDIuNi4zMiBhbmQgZWFybGllcikuICBUaGlzIGFsbG93cyBsb2NrZGVwJ3MKK3RyYWNraW5nIHRvIGluY2x1ZGUgUkNVIHN0YXRlLCB3aGljaCBjYW4gc29tZXRpbWVzIGhlbHAgd2hlbiBkZWJ1Z2dpbmcKK2RlYWRsb2NrcyBhbmQgdGhlIGxpa2UuCisKK0luIGFkZGl0aW9uLCBSQ1UgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBwcmltaXRpdmVzIHRoYXQgY2hlY2sgbG9ja2RlcCdzCitzdGF0ZToKKworCXJjdV9yZWFkX2xvY2tfaGVsZCgpIGZvciBub3JtYWwgUkNVLgorCXJjdV9yZWFkX2xvY2tfYmhfaGVsZCgpIGZvciBSQ1UtYmguCisJcmN1X3JlYWRfbG9ja19zY2hlZF9oZWxkKCkgZm9yIFJDVS1zY2hlZC4KKwlzcmN1X3JlYWRfbG9ja19oZWxkKCkgZm9yIFNSQ1UuCisKK1RoZXNlIGZ1bmN0aW9ucyBhcmUgY29uc2VydmF0aXZlLCBhbmQgd2lsbCB0aGVyZWZvcmUgcmV0dXJuIDEgaWYgdGhleQorYXJlbid0IGNlcnRhaW4gKGZvciBleGFtcGxlLCBpZiBDT05GSUdfREVCVUdfTE9DS19BTExPQyBpcyBub3Qgc2V0KS4KK1RoaXMgcHJldmVudHMgdGhpbmdzIGxpa2UgV0FSTl9PTighcmN1X3JlYWRfbG9ja19oZWxkKCkpIGZyb20gZ2l2aW5nIGZhbHNlCitwb3NpdGl2ZXMgd2hlbiBsb2NrZGVwIGlzIGRpc2FibGVkLgorCitJbiBhZGRpdGlvbiwgYSBzZXBhcmF0ZSBrZXJuZWwgY29uZmlnIHBhcmFtZXRlciBDT05GSUdfUFJPVkVfUkNVIGVuYWJsZXMKK2NoZWNraW5nIG9mIHJjdV9kZXJlZmVyZW5jZSgpIHByaW1pdGl2ZXM6CisKKwlyY3VfZGVyZWZlcmVuY2UocCk6CisJCUNoZWNrIGZvciBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb24uCisJcmN1X2RlcmVmZXJlbmNlX2JoKHApOgorCQlDaGVjayBmb3IgUkNVLWJoIHJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9uLgorCXJjdV9kZXJlZmVyZW5jZV9zY2hlZChwKToKKwkJQ2hlY2sgZm9yIFJDVS1zY2hlZCByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbi4KKwlzcmN1X2RlcmVmZXJlbmNlKHAsIHNwKToKKwkJQ2hlY2sgZm9yIFNSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb24uCisJcmN1X2RlcmVmZXJlbmNlX2NoZWNrKHAsIGMpOgorCQlVc2UgZXhwbGljaXQgY2hlY2sgZXhwcmVzc2lvbiAiYyIgYWxvbmcgd2l0aAorCQlyY3VfcmVhZF9sb2NrX2hlbGQoKS4gIFRoaXMgaXMgdXNlZnVsIGluIGNvZGUgdGhhdCBpcworCQlpbnZva2VkIGJ5IGJvdGggUkNVIHJlYWRlcnMgYW5kIHVwZGF0ZXJzLgorCXJjdV9kZXJlZmVyZW5jZV9iaF9jaGVjayhwLCBjKToKKwkJVXNlIGV4cGxpY2l0IGNoZWNrIGV4cHJlc3Npb24gImMiIGFsb25nIHdpdGgKKwkJcmN1X3JlYWRfbG9ja19iaF9oZWxkKCkuICBUaGlzIGlzIHVzZWZ1bCBpbiBjb2RlIHRoYXQKKwkJaXMgaW52b2tlZCBieSBib3RoIFJDVS1iaCByZWFkZXJzIGFuZCB1cGRhdGVycy4KKwlyY3VfZGVyZWZlcmVuY2Vfc2NoZWRfY2hlY2socCwgYyk6CisJCVVzZSBleHBsaWNpdCBjaGVjayBleHByZXNzaW9uICJjIiBhbG9uZyB3aXRoCisJCXJjdV9yZWFkX2xvY2tfc2NoZWRfaGVsZCgpLiAgVGhpcyBpcyB1c2VmdWwgaW4gY29kZSB0aGF0CisJCWlzIGludm9rZWQgYnkgYm90aCBSQ1Utc2NoZWQgcmVhZGVycyBhbmQgdXBkYXRlcnMuCisJc3JjdV9kZXJlZmVyZW5jZV9jaGVjayhwLCBjKToKKwkJVXNlIGV4cGxpY2l0IGNoZWNrIGV4cHJlc3Npb24gImMiIGFsb25nIHdpdGgKKwkJc3JjdV9yZWFkX2xvY2tfaGVsZCgpKCkuICBUaGlzIGlzIHVzZWZ1bCBpbiBjb2RlIHRoYXQKKwkJaXMgaW52b2tlZCBieSBib3RoIFNSQ1UgcmVhZGVycyBhbmQgdXBkYXRlcnMuCisJcmN1X2RlcmVmZXJlbmNlX3JhdyhwKToKKwkJRG9uJ3QgY2hlY2suICAoVXNlIHNwYXJpbmdseSwgaWYgYXQgYWxsLikKKwlyY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHAsIGMpOgorCQlVc2UgZXhwbGljaXQgY2hlY2sgZXhwcmVzc2lvbiAiYyIsIGFuZCBvbWl0IGFsbCBiYXJyaWVycworCQlhbmQgY29tcGlsZXIgY29uc3RyYWludHMuICBUaGlzIGlzIHVzZWZ1bCB3aGVuIHRoZSBkYXRhCisJCXN0cnVjdHVyZSBjYW5ub3QgY2hhbmdlLCBmb3IgZXhhbXBsZSwgaW4gY29kZSB0aGF0IGlzCisJCWludm9rZWQgb25seSBieSB1cGRhdGVycy4KKwlyY3VfYWNjZXNzX3BvaW50ZXIocCk6CisJCVJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHBvaW50ZXIgYW5kIG9taXQgYWxsIGJhcnJpZXJzLAorCQlidXQgcmV0YWluIHRoZSBjb21waWxlciBjb25zdHJhaW50cyB0aGF0IHByZXZlbnQgZHVwbGljYXRpbmcKKwkJb3IgY29hbGVzY3NpbmcuICBUaGlzIGlzIHVzZWZ1bCB3aGVuIHdoZW4gdGVzdGluZyB0aGUKKwkJdmFsdWUgb2YgdGhlIHBvaW50ZXIgaXRzZWxmLCBmb3IgZXhhbXBsZSwgYWdhaW5zdCBOVUxMLgorCitUaGUgcmN1X2RlcmVmZXJlbmNlX2NoZWNrKCkgY2hlY2sgZXhwcmVzc2lvbiBjYW4gYmUgYW55IGJvb2xlYW4KK2V4cHJlc3Npb24sIGJ1dCB3b3VsZCBub3JtYWxseSBpbmNsdWRlIGEgbG9ja2RlcCBleHByZXNzaW9uLiAgSG93ZXZlciwKK2FueSBib29sZWFuIGV4cHJlc3Npb24gY2FuIGJlIHVzZWQuICBGb3IgYSBtb2RlcmF0ZWx5IG9ybmF0ZSBleGFtcGxlLAorY29uc2lkZXIgdGhlIGZvbGxvd2luZzoKKworCWZpbGUgPSByY3VfZGVyZWZlcmVuY2VfY2hlY2soZmR0LT5mZFtmZF0sCisJCQkJICAgICBsb2NrZGVwX2lzX2hlbGQoJmZpbGVzLT5maWxlX2xvY2spIHx8CisJCQkJICAgICBhdG9taWNfcmVhZCgmZmlsZXMtPmNvdW50KSA9PSAxKTsKKworVGhpcyBleHByZXNzaW9uIHBpY2tzIHVwIHRoZSBwb2ludGVyICJmZHQtPmZkW2ZkXSIgaW4gYW4gUkNVLXNhZmUgbWFubmVyLAorYW5kLCBpZiBDT05GSUdfUFJPVkVfUkNVIGlzIGNvbmZpZ3VyZWQsIHZlcmlmaWVzIHRoYXQgdGhpcyBleHByZXNzaW9uCitpcyB1c2VkIGluOgorCisxLglBbiBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb24gKGltcGxpY2l0KSwgb3IKKzIuCXdpdGggZmlsZXMtPmZpbGVfbG9jayBoZWxkLCBvcgorMy4Jb24gYW4gdW5zaGFyZWQgZmlsZXNfc3RydWN0LgorCitJbiBjYXNlICgxKSwgdGhlIHBvaW50ZXIgaXMgcGlja2VkIHVwIGluIGFuIFJDVS1zYWZlIG1hbm5lciBmb3IgdmFuaWxsYQorUkNVIHJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9ucywgaW4gY2FzZSAoMikgdGhlIC0+ZmlsZV9sb2NrIHByZXZlbnRzCithbnkgY2hhbmdlIGZyb20gdGFraW5nIHBsYWNlLCBhbmQgZmluYWxseSwgaW4gY2FzZSAoMykgdGhlIGN1cnJlbnQgdGFzaworaXMgdGhlIG9ubHkgdGFzayBhY2Nlc3NpbmcgdGhlIGZpbGVfc3RydWN0LCBhZ2FpbiBwcmV2ZW50aW5nIGFueSBjaGFuZ2UKK2Zyb20gdGFraW5nIHBsYWNlLiAgSWYgdGhlIGFib3ZlIHN0YXRlbWVudCB3YXMgaW52b2tlZCBvbmx5IGZyb20gdXBkYXRlcgorY29kZSwgaXQgY291bGQgaW5zdGVhZCBiZSB3cml0dGVuIGFzIGZvbGxvd3M6CisKKwlmaWxlID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChmZHQtPmZkW2ZkXSwKKwkJCQkJIGxvY2tkZXBfaXNfaGVsZCgmZmlsZXMtPmZpbGVfbG9jaykgfHwKKwkJCQkJIGF0b21pY19yZWFkKCZmaWxlcy0+Y291bnQpID09IDEpOworCitUaGlzIHdvdWxkIHZlcmlmeSBjYXNlcyAjMiBhbmQgIzMgYWJvdmUsIGFuZCBmdXJ0aGVybW9yZSBsb2NrZGVwIHdvdWxkCitjb21wbGFpbiBpZiB0aGlzIHdhcyB1c2VkIGluIGFuIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbiB1bmxlc3Mgb25lCitvZiB0aGVzZSB0d28gY2FzZXMgaGVsZC4gIEJlY2F1c2UgcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZCgpIG9taXRzIGFsbAorYmFycmllcnMgYW5kIGNvbXBpbGVyIGNvbnN0cmFpbnRzLCBpdCBnZW5lcmF0ZXMgYmV0dGVyIGNvZGUgdGhhbiBkbyB0aGUKK290aGVyIGZsYXZvcnMgb2YgcmN1X2RlcmVmZXJlbmNlKCkuICBPbiB0aGUgb3RoZXIgaGFuZCwgaXQgaXMgaWxsZWdhbAordG8gdXNlIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoKSBpZiBlaXRoZXIgdGhlIFJDVS1wcm90ZWN0ZWQgcG9pbnRlcgorb3IgdGhlIFJDVS1wcm90ZWN0ZWQgZGF0YSB0aGF0IGl0IHBvaW50cyB0byBjYW4gY2hhbmdlIGNvbmN1cnJlbnRseS4KKworVGhlcmUgYXJlIGN1cnJlbnRseSBvbmx5ICJ1bml2ZXJzYWwiIHZlcnNpb25zIG9mIHRoZSByY3VfYXNzaWduX3BvaW50ZXIoKQorYW5kIFJDVSBsaXN0LS90cmVlLXRyYXZlcnNhbCBwcmltaXRpdmVzLCB3aGljaCBkbyBub3QgKHlldCkgY2hlY2sgZm9yCitiZWluZyBpbiBhbiBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb24uICBJbiB0aGUgZnV0dXJlLCBzZXBhcmF0ZQordmVyc2lvbnMgb2YgdGhlc2UgcHJpbWl0aXZlcyBtaWdodCBiZSBjcmVhdGVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SQ1UvcmN1LnR4dCBiL0RvY3VtZW50YXRpb24vUkNVL3JjdS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ1ZjQyOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUkNVL3JjdS50eHQKQEAgLTAsMCArMSw5NiBAQAorUkNVIENvbmNlcHRzCisKKworVGhlIGJhc2ljIGlkZWEgYmVoaW5kIFJDVSAocmVhZC1jb3B5IHVwZGF0ZSkgaXMgdG8gc3BsaXQgZGVzdHJ1Y3RpdmUKK29wZXJhdGlvbnMgaW50byB0d28gcGFydHMsIG9uZSB0aGF0IHByZXZlbnRzIGFueW9uZSBmcm9tIHNlZWluZyB0aGUgZGF0YQoraXRlbSBiZWluZyBkZXN0cm95ZWQsIGFuZCBvbmUgdGhhdCBhY3R1YWxseSBjYXJyaWVzIG91dCB0aGUgZGVzdHJ1Y3Rpb24uCitBICJncmFjZSBwZXJpb2QiIG11c3QgZWxhcHNlIGJldHdlZW4gdGhlIHR3byBwYXJ0cywgYW5kIHRoaXMgZ3JhY2UgcGVyaW9kCittdXN0IGJlIGxvbmcgZW5vdWdoIHRoYXQgYW55IHJlYWRlcnMgYWNjZXNzaW5nIHRoZSBpdGVtIGJlaW5nIGRlbGV0ZWQgaGF2ZQorc2luY2UgZHJvcHBlZCB0aGVpciByZWZlcmVuY2VzLiAgRm9yIGV4YW1wbGUsIGFuIFJDVS1wcm90ZWN0ZWQgZGVsZXRpb24KK2Zyb20gYSBsaW5rZWQgbGlzdCB3b3VsZCBmaXJzdCByZW1vdmUgdGhlIGl0ZW0gZnJvbSB0aGUgbGlzdCwgd2FpdCBmb3IKK2EgZ3JhY2UgcGVyaW9kIHRvIGVsYXBzZSwgdGhlbiBmcmVlIHRoZSBlbGVtZW50LiAgU2VlIHRoZSBsaXN0UkNVLnR4dAorZmlsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB1c2luZyBSQ1Ugd2l0aCBsaW5rZWQgbGlzdHMuCisKKworRnJlcXVlbnRseSBBc2tlZCBRdWVzdGlvbnMKKworbwlXaHkgd291bGQgYW55b25lIHdhbnQgdG8gdXNlIFJDVT8KKworCVRoZSBhZHZhbnRhZ2Ugb2YgUkNVJ3MgdHdvLXBhcnQgYXBwcm9hY2ggaXMgdGhhdCBSQ1UgcmVhZGVycyBuZWVkCisJbm90IGFjcXVpcmUgYW55IGxvY2tzLCBwZXJmb3JtIGFueSBhdG9taWMgaW5zdHJ1Y3Rpb25zLCB3cml0ZSB0bworCXNoYXJlZCBtZW1vcnksIG9yIChvbiBDUFVzIG90aGVyIHRoYW4gQWxwaGEpIGV4ZWN1dGUgYW55IG1lbW9yeQorCWJhcnJpZXJzLiAgVGhlIGZhY3QgdGhhdCB0aGVzZSBvcGVyYXRpb25zIGFyZSBxdWl0ZSBleHBlbnNpdmUKKwlvbiBtb2Rlcm4gQ1BVcyBpcyB3aGF0IGdpdmVzIFJDVSBpdHMgcGVyZm9ybWFuY2UgYWR2YW50YWdlcworCWluIHJlYWQtbW9zdGx5IHNpdHVhdGlvbnMuICBUaGUgZmFjdCB0aGF0IFJDVSByZWFkZXJzIG5lZWQgbm90CisJYWNxdWlyZSBsb2NrcyBjYW4gYWxzbyBncmVhdGx5IHNpbXBsaWZ5IGRlYWRsb2NrLWF2b2lkYW5jZSBjb2RlLgorCitvCUhvdyBjYW4gdGhlIHVwZGF0ZXIgdGVsbCB3aGVuIGEgZ3JhY2UgcGVyaW9kIGhhcyBjb21wbGV0ZWQKKwlpZiB0aGUgUkNVIHJlYWRlcnMgZ2l2ZSBubyBpbmRpY2F0aW9uIHdoZW4gdGhleSBhcmUgZG9uZT8KKworCUp1c3QgYXMgd2l0aCBzcGlubG9ja3MsIFJDVSByZWFkZXJzIGFyZSBub3QgcGVybWl0dGVkIHRvCisJYmxvY2ssIHN3aXRjaCB0byB1c2VyLW1vZGUgZXhlY3V0aW9uLCBvciBlbnRlciB0aGUgaWRsZSBsb29wLgorCVRoZXJlZm9yZSwgYXMgc29vbiBhcyBhIENQVSBpcyBzZWVuIHBhc3NpbmcgdGhyb3VnaCBhbnkgb2YgdGhlc2UKKwl0aHJlZSBzdGF0ZXMsIHdlIGtub3cgdGhhdCB0aGF0IENQVSBoYXMgZXhpdGVkIGFueSBwcmV2aW91cyBSQ1UKKwlyZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbnMuICBTbywgaWYgd2UgcmVtb3ZlIGFuIGl0ZW0gZnJvbSBhCisJbGlua2VkIGxpc3QsIGFuZCB0aGVuIHdhaXQgdW50aWwgYWxsIENQVXMgaGF2ZSBzd2l0Y2hlZCBjb250ZXh0LAorCWV4ZWN1dGVkIGluIHVzZXIgbW9kZSwgb3IgZXhlY3V0ZWQgaW4gdGhlIGlkbGUgbG9vcCwgd2UgY2FuCisJc2FmZWx5IGZyZWUgdXAgdGhhdCBpdGVtLgorCisJUHJlZW1wdGlibGUgdmFyaWFudHMgb2YgUkNVIChDT05GSUdfUFJFRU1QVF9SQ1UpIGdldCB0aGUKKwlzYW1lIGVmZmVjdCwgYnV0IHJlcXVpcmUgdGhhdCB0aGUgcmVhZGVycyBtYW5pcHVsYXRlIENQVS1sb2NhbAorCWNvdW50ZXJzLiAgVGhlc2UgY291bnRlcnMgYWxsb3cgbGltaXRlZCB0eXBlcyBvZiBibG9ja2luZyB3aXRoaW4KKwlSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb25zLiAgU1JDVSBhbHNvIHVzZXMgQ1BVLWxvY2FsCisJY291bnRlcnMsIGFuZCBwZXJtaXRzIGdlbmVyYWwgYmxvY2tpbmcgd2l0aGluIFJDVSByZWFkLXNpZGUKKwljcml0aWNhbCBzZWN0aW9ucy4gIFRoZXNlIHZhcmlhbnRzIG9mIFJDVSBkZXRlY3QgZ3JhY2UgcGVyaW9kcworCWJ5IHNhbXBsaW5nIHRoZXNlIGNvdW50ZXJzLgorCitvCUlmIEkgYW0gcnVubmluZyBvbiBhIHVuaXByb2Nlc3NvciBrZXJuZWwsIHdoaWNoIGNhbiBvbmx5IGRvIG9uZQorCXRoaW5nIGF0IGEgdGltZSwgd2h5IHNob3VsZCBJIHdhaXQgZm9yIGEgZ3JhY2UgcGVyaW9kPworCisJU2VlIHRoZSBVUC50eHQgZmlsZSBpbiB0aGlzIGRpcmVjdG9yeS4KKworbwlIb3cgY2FuIEkgc2VlIHdoZXJlIFJDVSBpcyBjdXJyZW50bHkgdXNlZCBpbiB0aGUgTGludXgga2VybmVsPworCisJU2VhcmNoIGZvciAicmN1X3JlYWRfbG9jayIsICJyY3VfcmVhZF91bmxvY2siLCAiY2FsbF9yY3UiLAorCSJyY3VfcmVhZF9sb2NrX2JoIiwgInJjdV9yZWFkX3VubG9ja19iaCIsICJjYWxsX3JjdV9iaCIsCisJInNyY3VfcmVhZF9sb2NrIiwgInNyY3VfcmVhZF91bmxvY2siLCAic3luY2hyb25pemVfcmN1IiwKKwkic3luY2hyb25pemVfbmV0IiwgInN5bmNocm9uaXplX3NyY3UiLCBhbmQgdGhlIG90aGVyIFJDVQorCXByaW1pdGl2ZXMuICBPciBncmFiIG9uZSBvZiB0aGUgY3Njb3BlIGRhdGFiYXNlcyBmcm9tOgorCisJaHR0cDovL3d3dy5yZHJvcC5jb20vdXNlcnMvcGF1bG1jay9SQ1UvbGludXh1c2FnZS9yY3Vsb2NrdGFiLmh0bWwKKworbwlXaGF0IGd1aWRlbGluZXMgc2hvdWxkIEkgZm9sbG93IHdoZW4gd3JpdGluZyBjb2RlIHRoYXQgdXNlcyBSQ1U/CisKKwlTZWUgdGhlIGNoZWNrbGlzdC50eHQgZmlsZSBpbiB0aGlzIGRpcmVjdG9yeS4KKworbwlXaHkgdGhlIG5hbWUgIlJDVSI/CisKKwkiUkNVIiBzdGFuZHMgZm9yICJyZWFkLWNvcHkgdXBkYXRlIi4gIFRoZSBmaWxlIGxpc3RSQ1UudHh0IGhhcworCW1vcmUgaW5mb3JtYXRpb24gb24gd2hlcmUgdGhpcyBuYW1lIGNhbWUgZnJvbSwgc2VhcmNoIGZvcgorCSJyZWFkLWNvcHkgdXBkYXRlIiB0byBmaW5kIGl0LgorCitvCUkgaGVhciB0aGF0IFJDVSBpcyBwYXRlbnRlZD8gIFdoYXQgaXMgd2l0aCB0aGF0PworCisJWWVzLCBpdCBpcy4gIFRoZXJlIGFyZSBzZXZlcmFsIGtub3duIHBhdGVudHMgcmVsYXRlZCB0byBSQ1UsCisJc2VhcmNoIGZvciB0aGUgc3RyaW5nICJQYXRlbnQiIGluIFJURlAudHh0IHRvIGZpbmQgdGhlbS4KKwlPZiB0aGVzZSwgb25lIHdhcyBhbGxvd2VkIHRvIGxhcHNlIGJ5IHRoZSBhc3NpZ25lZSwgYW5kIHRoZQorCW90aGVycyBoYXZlIGJlZW4gY29udHJpYnV0ZWQgdG8gdGhlIExpbnV4IGtlcm5lbCB1bmRlciBHUEwuCisJVGhlcmUgYXJlIG5vdyBhbHNvIExHUEwgaW1wbGVtZW50YXRpb25zIG9mIHVzZXItbGV2ZWwgUkNVCisJYXZhaWxhYmxlIChodHRwOi8vbHR0bmcub3JnLz9xPW5vZGUvMTgpLgorCitvCUkgaGVhciB0aGF0IFJDVSBuZWVkcyB3b3JrIGluIG9yZGVyIHRvIHN1cHBvcnQgcmVhbHRpbWUga2VybmVscz8KKworCVRoaXMgd29yayBpcyBsYXJnZWx5IGNvbXBsZXRlZC4gIFJlYWx0aW1lLWZyaWVuZGx5IFJDVSBjYW4gYmUKKwllbmFibGVkIHZpYSB0aGUgQ09ORklHX1BSRUVNUFRfUkNVIGtlcm5lbCBjb25maWd1cmF0aW9uCisJcGFyYW1ldGVyLiAgSG93ZXZlciwgd29yayBpcyBpbiBwcm9ncmVzcyBmb3IgZW5hYmxpbmcgcHJpb3JpdHkKKwlib29zdGluZyBvZiBwcmVlbXB0ZWQgUkNVIHJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9ucy4JVGhpcyBpcworCW5lZWRlZCBpZiB5b3UgaGF2ZSBDUFUtYm91bmQgcmVhbHRpbWUgdGhyZWFkcy4KKworbwlXaGVyZSBjYW4gSSBmaW5kIG1vcmUgaW5mb3JtYXRpb24gb24gUkNVPworCisJU2VlIHRoZSBSVEZQLnR4dCBmaWxlIGluIHRoaXMgZGlyZWN0b3J5LgorCU9yIHBvaW50IHlvdXIgYnJvd3NlciBhdCBodHRwOi8vd3d3LnJkcm9wLmNvbS91c2Vycy9wYXVsbWNrL1JDVS8uCisKK28JV2hhdCBhcmUgYWxsIHRoZXNlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5PworCisJU2VlIDAwLUlOREVYIGZvciB0aGUgbGlzdC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUkNVL3JjdV9kZXJlZmVyZW5jZS50eHQgYi9Eb2N1bWVudGF0aW9uL1JDVS9yY3VfZGVyZWZlcmVuY2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwYmYyNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1JDVS9yY3VfZGVyZWZlcmVuY2UudHh0CkBAIC0wLDAgKzEsMzY3IEBACitQUk9QRVIgQ0FSRSBBTkQgRkVFRElORyBPRiBSRVRVUk4gVkFMVUVTIEZST00gcmN1X2RlcmVmZXJlbmNlKCkKKworTW9zdCBvZiB0aGUgdGltZSwgeW91IGNhbiB1c2UgdmFsdWVzIGZyb20gcmN1X2RlcmVmZXJlbmNlKCkgb3Igb25lIG9mCit0aGUgc2ltaWxhciBwcmltaXRpdmVzIHdpdGhvdXQgd29ycmllcy4gIERlcmVmZXJlbmNpbmcgKHByZWZpeCAiKiIpLAorZmllbGQgc2VsZWN0aW9uICgiLT4iKSwgYXNzaWdubWVudCAoIj0iKSwgYWRkcmVzcy1vZiAoIiYiKSwgYWRkaXRpb24gYW5kCitzdWJ0cmFjdGlvbiBvZiBjb25zdGFudHMsIGFuZCBjYXN0cyBhbGwgd29yayBxdWl0ZSBuYXR1cmFsbHkgYW5kIHNhZmVseS4KKworSXQgaXMgbmV2ZXJ0aGVsZXNzIHBvc3NpYmxlIHRvIGdldCBpbnRvIHRyb3VibGUgd2l0aCBvdGhlciBvcGVyYXRpb25zLgorRm9sbG93IHRoZXNlIHJ1bGVzIHRvIGtlZXAgeW91ciBSQ1UgY29kZSB3b3JraW5nIHByb3Blcmx5OgorCitvCVlvdSBtdXN0IHVzZSBvbmUgb2YgdGhlIHJjdV9kZXJlZmVyZW5jZSgpIGZhbWlseSBvZiBwcmltaXRpdmVzCisJdG8gbG9hZCBhbiBSQ1UtcHJvdGVjdGVkIHBvaW50ZXIsIG90aGVyd2lzZSBDT05GSUdfUFJPVkVfUkNVCisJd2lsbCBjb21wbGFpbi4gIFdvcnNlIHlldCwgeW91ciBjb2RlIGNhbiBzZWUgcmFuZG9tIG1lbW9yeS1jb3JydXB0aW9uCisJYnVncyBkdWUgdG8gZ2FtZXMgdGhhdCBjb21waWxlcnMgYW5kIERFQyBBbHBoYSBjYW4gcGxheS4KKwlXaXRob3V0IG9uZSBvZiB0aGUgcmN1X2RlcmVmZXJlbmNlKCkgcHJpbWl0aXZlcywgY29tcGlsZXJzCisJY2FuIHJlbG9hZCB0aGUgdmFsdWUsIGFuZCB3b24ndCB5b3VyIGNvZGUgaGF2ZSBmdW4gd2l0aCB0d28KKwlkaWZmZXJlbnQgdmFsdWVzIGZvciBhIHNpbmdsZSBwb2ludGVyISAgV2l0aG91dCByY3VfZGVyZWZlcmVuY2UoKSwKKwlERUMgQWxwaGEgY2FuIGxvYWQgYSBwb2ludGVyLCBkZXJlZmVyZW5jZSB0aGF0IHBvaW50ZXIsIGFuZAorCXJldHVybiBkYXRhIHByZWNlZGluZyBpbml0aWFsaXphdGlvbiB0aGF0IHByZWNlZGVkIHRoZSBzdG9yZSBvZgorCXRoZSBwb2ludGVyLgorCisJSW4gYWRkaXRpb24sIHRoZSB2b2xhdGlsZSBjYXN0IGluIHJjdV9kZXJlZmVyZW5jZSgpIHByZXZlbnRzIHRoZQorCWNvbXBpbGVyIGZyb20gZGVkdWNpbmcgdGhlIHJlc3VsdGluZyBwb2ludGVyIHZhbHVlLiAgUGxlYXNlIHNlZQorCXRoZSBzZWN0aW9uIGVudGl0bGVkICJFWEFNUExFIFdIRVJFIFRIRSBDT01QSUxFUiBLTk9XUyBUT08gTVVDSCIKKwlmb3IgYW4gZXhhbXBsZSB3aGVyZSB0aGUgY29tcGlsZXIgY2FuIGluIGZhY3QgZGVkdWNlIHRoZSBleGFjdAorCXZhbHVlIG9mIHRoZSBwb2ludGVyLCBhbmQgdGh1cyBjYXVzZSBtaXNvcmRlcmluZy4KKworbwlBdm9pZCBjYW5jZWxsYXRpb24gd2hlbiB1c2luZyB0aGUgIisiIGFuZCAiLSIgaW5maXggYXJpdGhtZXRpYworCW9wZXJhdG9ycy4gIEZvciBleGFtcGxlLCBmb3IgYSBnaXZlbiB2YXJpYWJsZSAieCIsIGF2b2lkCisJIih4LXgpIi4gIFRoZXJlIGFyZSBzaW1pbGFyIGFyaXRobWV0aWMgcGl0ZmFsbHMgZnJvbSBvdGhlcgorCWFyaXRobWV0aWMgb3BlcmF0b3JzLCBzdWNoIGFzICIoeCowKSIsICIoeC8oeCsxKSkiIG9yICIoeCUxKSIuCisJVGhlIGNvbXBpbGVyIGlzIHdpdGhpbiBpdHMgcmlnaHRzIHRvIHN1YnN0aXR1dGUgemVybyBmb3IgYWxsIG9mCisJdGhlc2UgZXhwcmVzc2lvbnMsIHNvIHRoYXQgc3Vic2VxdWVudCBhY2Nlc3NlcyBubyBsb25nZXIgZGVwZW5kCisJb24gdGhlIHJjdV9kZXJlZmVyZW5jZSgpLCBhZ2FpbiBwb3NzaWJseSByZXN1bHRpbmcgaW4gYnVncyBkdWUKKwl0byBtaXNvcmRlcmluZy4KKworCU9mIGNvdXJzZSwgaWYgInAiIGlzIGEgcG9pbnRlciBmcm9tIHJjdV9kZXJlZmVyZW5jZSgpLCBhbmQgImEiCisJYW5kICJiIiBhcmUgaW50ZWdlcnMgdGhhdCBoYXBwZW4gdG8gYmUgZXF1YWwsIHRoZSBleHByZXNzaW9uCisJInArYS1iIiBpcyBzYWZlIGJlY2F1c2UgaXRzIHZhbHVlIHN0aWxsIG5lY2Vzc2FyaWx5IGRlcGVuZHMgb24KKwl0aGUgcmN1X2RlcmVmZXJlbmNlKCksIHRodXMgbWFpbnRhaW5pbmcgcHJvcGVyIG9yZGVyaW5nLgorCitvCUF2b2lkIGFsbC16ZXJvIG9wZXJhbmRzIHRvIHRoZSBiaXR3aXNlICImIiBvcGVyYXRvciwgYW5kCisJc2ltaWxhcmx5IGF2b2lkIGFsbC1vbmVzIG9wZXJhbmRzIHRvIHRoZSBiaXR3aXNlICJ8IiBvcGVyYXRvci4KKwlJZiB0aGUgY29tcGlsZXIgaXMgYWJsZSB0byBkZWR1Y2UgdGhlIHZhbHVlIG9mIHN1Y2ggb3BlcmFuZHMsCisJaXQgaXMgd2l0aGluIGl0cyByaWdodHMgdG8gc3Vic3RpdHV0ZSB0aGUgY29ycmVzcG9uZGluZyBjb25zdGFudAorCWZvciB0aGUgYml0d2lzZSBvcGVyYXRpb24uICBPbmNlIGFnYWluLCB0aGlzIGNhdXNlcyBzdWJzZXF1ZW50CisJYWNjZXNzZXMgdG8gbm8gbG9uZ2VyIGRlcGVuZCBvbiB0aGUgcmN1X2RlcmVmZXJlbmNlKCksIGNhdXNpbmcKKwlidWdzIGR1ZSB0byBtaXNvcmRlcmluZy4KKworCVBsZWFzZSBub3RlIHRoYXQgc2luZ2xlLWJpdCBvcGVyYW5kcyB0byBiaXR3aXNlICImIiBjYW4gYWxzbworCWJlIGRhbmdlcm91cy4gIEF0IHRoaXMgcG9pbnQsIHRoZSBjb21waWxlciBrbm93cyB0aGF0IHRoZQorCXJlc3VsdGluZyB2YWx1ZSBjYW4gb25seSB0YWtlIG9uIG9uZSBvZiB0d28gcG9zc2libGUgdmFsdWVzLgorCVRoZXJlZm9yZSwgYSB2ZXJ5IHNtYWxsIGFtb3VudCBvZiBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHdpbGwKKwlhbGxvdyB0aGUgY29tcGlsZXIgdG8gZGVkdWNlIHRoZSBleGFjdCB2YWx1ZSwgd2hpY2ggYWdhaW4gY2FuCisJcmVzdWx0IGluIG1pc29yZGVyaW5nLgorCitvCUlmIHlvdSBhcmUgdXNpbmcgUkNVIHRvIHByb3RlY3QgSklUZWQgZnVuY3Rpb25zLCBzbyB0aGF0IHRoZQorCSIoKSIgZnVuY3Rpb24taW52b2NhdGlvbiBvcGVyYXRvciBpcyBhcHBsaWVkIHRvIGEgdmFsdWUgb2J0YWluZWQKKwkoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgZnJvbSByY3VfZGVyZWZlcmVuY2UoKSwgeW91IG1heSBuZWVkIHRvCisJaW50ZXJhY3QgZGlyZWN0bHkgd2l0aCB0aGUgaGFyZHdhcmUgdG8gZmx1c2ggaW5zdHJ1Y3Rpb24gY2FjaGVzLgorCVRoaXMgaXNzdWUgYXJpc2VzIG9uIHNvbWUgc3lzdGVtcyB3aGVuIGEgbmV3bHkgSklUZWQgZnVuY3Rpb24gaXMKKwl1c2luZyB0aGUgc2FtZSBtZW1vcnkgdGhhdCB3YXMgdXNlZCBieSBhbiBlYXJsaWVyIEpJVGVkIGZ1bmN0aW9uLgorCitvCURvIG5vdCB1c2UgdGhlIHJlc3VsdHMgZnJvbSB0aGUgYm9vbGVhbiAiJiYiIGFuZCAifHwiIHdoZW4KKwlkZXJlZmVyZW5jaW5nLglGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyAocmF0aGVyIGltcHJvYmFibGUpCisJY29kZSBpcyBidWdneToKKworCQlpbnQgKnA7CisJCWludCAqcTsKKworCQkuLi4KKworCQlwID0gcmN1X2RlcmVmZXJlbmNlKGdwKQorCQlxID0gJmdsb2JhbF9xOworCQlxICs9IHAgIT0gJm9vbV9wMSAmJiBwICE9ICZvb21fcDI7CisJCXIxID0gKnE7ICAvKiBCVUdHWSEhISAqLworCisJVGhlIHJlYXNvbiB0aGlzIGlzIGJ1Z2d5IGlzIHRoYXQgIiYmIiBhbmQgInx8IiBhcmUgb2Z0ZW4gY29tcGlsZWQKKwl1c2luZyBicmFuY2hlcy4gIFdoaWxlIHdlYWstbWVtb3J5IG1hY2hpbmVzIHN1Y2ggYXMgQVJNIG9yIFBvd2VyUEMKKwlkbyBvcmRlciBzdG9yZXMgYWZ0ZXIgc3VjaCBicmFuY2hlcywgdGhleSBjYW4gc3BlY3VsYXRlIGxvYWRzLAorCXdoaWNoIGNhbiByZXN1bHQgaW4gbWlzb3JkZXJpbmcgYnVncy4KKworbwlEbyBub3QgdXNlIHRoZSByZXN1bHRzIGZyb20gcmVsYXRpb25hbCBvcGVyYXRvcnMgKCI9PSIsICIhPSIsCisJIj4iLCAiPj0iLCAiPCIsIG9yICI8PSIpIHdoZW4gZGVyZWZlcmVuY2luZy4gIEZvciBleGFtcGxlLAorCXRoZSBmb2xsb3dpbmcgKHF1aXRlIHN0cmFuZ2UpIGNvZGUgaXMgYnVnZ3k6CisKKwkJaW50ICpwOworCQlpbnQgKnE7CisKKwkJLi4uCisKKwkJcCA9IHJjdV9kZXJlZmVyZW5jZShncCkKKwkJcSA9ICZnbG9iYWxfcTsKKwkJcSArPSBwID4gJm9vbV9wOworCQlyMSA9ICpxOyAgLyogQlVHR1khISEgKi8KKworCUFzIGJlZm9yZSwgdGhlIHJlYXNvbiB0aGlzIGlzIGJ1Z2d5IGlzIHRoYXQgcmVsYXRpb25hbCBvcGVyYXRvcnMKKwlhcmUgb2Z0ZW4gY29tcGlsZWQgdXNpbmcgYnJhbmNoZXMuICBBbmQgYXMgYmVmb3JlLCBhbHRob3VnaAorCXdlYWstbWVtb3J5IG1hY2hpbmVzIHN1Y2ggYXMgQVJNIG9yIFBvd2VyUEMgZG8gb3JkZXIgc3RvcmVzCisJYWZ0ZXIgc3VjaCBicmFuY2hlcywgYnV0IGNhbiBzcGVjdWxhdGUgbG9hZHMsIHdoaWNoIGNhbiBhZ2FpbgorCXJlc3VsdCBpbiBtaXNvcmRlcmluZyBidWdzLgorCitvCUJlIHZlcnkgY2FyZWZ1bCBhYm91dCBjb21wYXJpbmcgcG9pbnRlcnMgb2J0YWluZWQgZnJvbQorCXJjdV9kZXJlZmVyZW5jZSgpIGFnYWluc3Qgbm9uLU5VTEwgdmFsdWVzLiAgQXMgTGludXMgVG9ydmFsZHMKKwlleHBsYWluZWQsIGlmIHRoZSB0d28gcG9pbnRlcnMgYXJlIGVxdWFsLCB0aGUgY29tcGlsZXIgY291bGQKKwlzdWJzdGl0dXRlIHRoZSBwb2ludGVyIHlvdSBhcmUgY29tcGFyaW5nIGFnYWluc3QgZm9yIHRoZSBwb2ludGVyCisJb2J0YWluZWQgZnJvbSByY3VfZGVyZWZlcmVuY2UoKS4gIEZvciBleGFtcGxlOgorCisJCXAgPSByY3VfZGVyZWZlcmVuY2UoZ3ApOworCQlpZiAocCA9PSAmZGVmYXVsdF9zdHJ1Y3QpCisJCQlkb19kZWZhdWx0KHAtPmEpOworCisJQmVjYXVzZSB0aGUgY29tcGlsZXIgbm93IGtub3dzIHRoYXQgdGhlIHZhbHVlIG9mICJwIiBpcyBleGFjdGx5CisJdGhlIGFkZHJlc3Mgb2YgdGhlIHZhcmlhYmxlICJkZWZhdWx0X3N0cnVjdCIsIGl0IGlzIGZyZWUgdG8KKwl0cmFuc2Zvcm0gdGhpcyBjb2RlIGludG8gdGhlIGZvbGxvd2luZzoKKworCQlwID0gcmN1X2RlcmVmZXJlbmNlKGdwKTsKKwkJaWYgKHAgPT0gJmRlZmF1bHRfc3RydWN0KQorCQkJZG9fZGVmYXVsdChkZWZhdWx0X3N0cnVjdC5hKTsKKworCU9uIEFSTSBhbmQgUG93ZXIgaGFyZHdhcmUsIHRoZSBsb2FkIGZyb20gImRlZmF1bHRfc3RydWN0LmEiCisJY2FuIG5vdyBiZSBzcGVjdWxhdGVkLCBzdWNoIHRoYXQgaXQgbWlnaHQgaGFwcGVuIGJlZm9yZSB0aGUKKwlyY3VfZGVyZWZlcmVuY2UoKS4gIFRoaXMgY291bGQgcmVzdWx0IGluIGJ1Z3MgZHVlIHRvIG1pc29yZGVyaW5nLgorCisJSG93ZXZlciwgY29tcGFyaXNvbnMgYXJlIE9LIGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisKKwlvCVRoZSBjb21wYXJpc29uIHdhcyBhZ2FpbnN0IHRoZSBOVUxMIHBvaW50ZXIuICBJZiB0aGUKKwkJY29tcGlsZXIga25vd3MgdGhhdCB0aGUgcG9pbnRlciBpcyBOVUxMLCB5b3UgaGFkIGJldHRlcgorCQlub3QgYmUgZGVyZWZlcmVuY2luZyBpdCBhbnl3YXkuICBJZiB0aGUgY29tcGFyaXNvbiBpcworCQlub24tZXF1YWwsIHRoZSBjb21waWxlciBpcyBub25lIHRoZSB3aXNlci4gIFRoZXJlZm9yZSwKKwkJaXQgaXMgc2FmZSB0byBjb21wYXJlIHBvaW50ZXJzIGZyb20gcmN1X2RlcmVmZXJlbmNlKCkKKwkJYWdhaW5zdCBOVUxMIHBvaW50ZXJzLgorCisJbwlUaGUgcG9pbnRlciBpcyBuZXZlciBkZXJlZmVyZW5jZWQgYWZ0ZXIgYmVpbmcgY29tcGFyZWQuCisJCVNpbmNlIHRoZXJlIGFyZSBubyBzdWJzZXF1ZW50IGRlcmVmZXJlbmNlcywgdGhlIGNvbXBpbGVyCisJCWNhbm5vdCB1c2UgYW55dGhpbmcgaXQgbGVhcm5lZCBmcm9tIHRoZSBjb21wYXJpc29uCisJCXRvIHJlb3JkZXIgdGhlIG5vbi1leGlzdGVudCBzdWJzZXF1ZW50IGRlcmVmZXJlbmNlcy4KKwkJVGhpcyBzb3J0IG9mIGNvbXBhcmlzb24gb2NjdXJzIGZyZXF1ZW50bHkgd2hlbiBzY2FubmluZworCQlSQ1UtcHJvdGVjdGVkIGNpcmN1bGFyIGxpbmtlZCBsaXN0cy4KKworCW8JVGhlIGNvbXBhcmlzb24gaXMgYWdhaW5zdCBhIHBvaW50ZXIgdGhhdCByZWZlcmVuY2VzIG1lbW9yeQorCQl0aGF0IHdhcyBpbml0aWFsaXplZCAiYSBsb25nIHRpbWUgYWdvLiIgIFRoZSByZWFzb24KKwkJdGhpcyBpcyBzYWZlIGlzIHRoYXQgZXZlbiBpZiBtaXNvcmRlcmluZyBvY2N1cnMsIHRoZQorCQltaXNvcmRlcmluZyB3aWxsIG5vdCBhZmZlY3QgdGhlIGFjY2Vzc2VzIHRoYXQgZm9sbG93CisJCXRoZSBjb21wYXJpc29uLiAgU28gZXhhY3RseSBob3cgbG9uZyBhZ28gaXMgImEgbG9uZworCQl0aW1lIGFnbyI/ICBIZXJlIGFyZSBzb21lIHBvc3NpYmlsaXRpZXM6CisKKwkJbwlDb21waWxlIHRpbWUuCisKKwkJbwlCb290IHRpbWUuCisKKwkJbwlNb2R1bGUtaW5pdCB0aW1lIGZvciBtb2R1bGUgY29kZS4KKworCQlvCVByaW9yIHRvIGt0aHJlYWQgY3JlYXRpb24gZm9yIGt0aHJlYWQgY29kZS4KKworCQlvCUR1cmluZyBzb21lIHByaW9yIGFjcXVpc2l0aW9uIG9mIHRoZSBsb2NrIHRoYXQKKwkJCXdlIG5vdyBob2xkLgorCisJCW8JQmVmb3JlIG1vZF90aW1lcigpIHRpbWUgZm9yIGEgdGltZXIgaGFuZGxlci4KKworCQlUaGVyZSBhcmUgbWFueSBvdGhlciBwb3NzaWJpbGl0aWVzIGludm9sdmluZyB0aGUgTGludXgKKwkJa2VybmVsJ3Mgd2lkZSBhcnJheSBvZiBwcmltaXRpdmVzIHRoYXQgY2F1c2UgY29kZSB0bworCQliZSBpbnZva2VkIGF0IGEgbGF0ZXIgdGltZS4KKworCW8JVGhlIHBvaW50ZXIgYmVpbmcgY29tcGFyZWQgYWdhaW5zdCBhbHNvIGNhbWUgZnJvbQorCQlyY3VfZGVyZWZlcmVuY2UoKS4gIEluIHRoaXMgY2FzZSwgYm90aCBwb2ludGVycyBkZXBlbmQKKwkJb24gb25lIHJjdV9kZXJlZmVyZW5jZSgpIG9yIGFub3RoZXIsIHNvIHlvdSBnZXQgcHJvcGVyCisJCW9yZGVyaW5nIGVpdGhlciB3YXkuCisKKwkJVGhhdCBzYWlkLCB0aGlzIHNpdHVhdGlvbiBjYW4gbWFrZSBjZXJ0YWluIFJDVSB1c2FnZQorCQlidWdzIG1vcmUgbGlrZWx5IHRvIGhhcHBlbi4gIFdoaWNoIGNhbiBiZSBhIGdvb2QgdGhpbmcsCisJCWF0IGxlYXN0IGlmIHRoZXkgaGFwcGVuIGR1cmluZyB0ZXN0aW5nLiAgQW4gZXhhbXBsZQorCQlvZiBzdWNoIGFuIFJDVSB1c2FnZSBidWcgaXMgc2hvd24gaW4gdGhlIHNlY3Rpb24gdGl0bGVkCisJCSJFWEFNUExFIE9GIEFNUExJRklFRCBSQ1UtVVNBR0UgQlVHIi4KKworCW8JQWxsIG9mIHRoZSBhY2Nlc3NlcyBmb2xsb3dpbmcgdGhlIGNvbXBhcmlzb24gYXJlIHN0b3JlcywKKwkJc28gdGhhdCBhIGNvbnRyb2wgZGVwZW5kZW5jeSBwcmVzZXJ2ZXMgdGhlIG5lZWRlZCBvcmRlcmluZy4KKwkJVGhhdCBzYWlkLCBpdCBpcyBlYXN5IHRvIGdldCBjb250cm9sIGRlcGVuZGVuY2llcyB3cm9uZy4KKwkJUGxlYXNlIHNlZSB0aGUgIkNPTlRST0wgREVQRU5ERU5DSUVTIiBzZWN0aW9uIG9mCisJCURvY3VtZW50YXRpb24vbWVtb3J5LWJhcnJpZXJzLnR4dCBmb3IgbW9yZSBkZXRhaWxzLgorCisJbwlUaGUgcG9pbnRlcnMgYXJlIG5vdCBlcXVhbCAtYW5kLSB0aGUgY29tcGlsZXIgZG9lcworCQlub3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gZGVkdWNlIHRoZSB2YWx1ZSBvZiB0aGUKKwkJcG9pbnRlci4gIE5vdGUgdGhhdCB0aGUgdm9sYXRpbGUgY2FzdCBpbiByY3VfZGVyZWZlcmVuY2UoKQorCQl3aWxsIG5vcm1hbGx5IHByZXZlbnQgdGhlIGNvbXBpbGVyIGZyb20ga25vd2luZyB0b28gbXVjaC4KKworCQlIb3dldmVyLCBwbGVhc2Ugbm90ZSB0aGF0IGlmIHRoZSBjb21waWxlciBrbm93cyB0aGF0IHRoZQorCQlwb2ludGVyIHRha2VzIG9uIG9ubHkgb25lIG9mIHR3byB2YWx1ZXMsIGEgbm90LWVxdWFsCisJCWNvbXBhcmlzb24gd2lsbCBwcm92aWRlIGV4YWN0bHkgdGhlIGluZm9ybWF0aW9uIHRoYXQgdGhlCisJCWNvbXBpbGVyIG5lZWRzIHRvIGRlZHVjZSB0aGUgdmFsdWUgb2YgdGhlIHBvaW50ZXIuCisKK28JRGlzYWJsZSBhbnkgdmFsdWUtc3BlY3VsYXRpb24gb3B0aW1pemF0aW9ucyB0aGF0IHlvdXIgY29tcGlsZXIKKwltaWdodCBwcm92aWRlLCBlc3BlY2lhbGx5IGlmIHlvdSBhcmUgbWFraW5nIHVzZSBvZiBmZWVkYmFjay1iYXNlZAorCW9wdGltaXphdGlvbnMgdGhhdCB0YWtlIGRhdGEgY29sbGVjdGVkIGZyb20gcHJpb3IgcnVucy4gIFN1Y2gKKwl2YWx1ZS1zcGVjdWxhdGlvbiBvcHRpbWl6YXRpb25zIHJlb3JkZXIgb3BlcmF0aW9ucyBieSBkZXNpZ24uCisKKwlUaGVyZSBpcyBvbmUgZXhjZXB0aW9uIHRvIHRoaXMgcnVsZTogIFZhbHVlLXNwZWN1bGF0aW9uCisJb3B0aW1pemF0aW9ucyB0aGF0IGxldmVyYWdlIHRoZSBicmFuY2gtcHJlZGljdGlvbiBoYXJkd2FyZSBhcmUKKwlzYWZlIG9uIHN0cm9uZ2x5IG9yZGVyZWQgc3lzdGVtcyAoc3VjaCBhcyB4ODYpLCBidXQgbm90IG9uIHdlYWtseQorCW9yZGVyZWQgc3lzdGVtcyAoc3VjaCBhcyBBUk0gb3IgUG93ZXIpLiAgQ2hvb3NlIHlvdXIgY29tcGlsZXIKKwljb21tYW5kLWxpbmUgb3B0aW9ucyB3aXNlbHkhCisKKworRVhBTVBMRSBPRiBBTVBMSUZJRUQgUkNVLVVTQUdFIEJVRworCitCZWNhdXNlIHVwZGF0ZXJzIGNhbiBydW4gY29uY3VycmVudGx5IHdpdGggUkNVIHJlYWRlcnMsIFJDVSByZWFkZXJzIGNhbgorc2VlIHN0YWxlIGFuZC9vciBpbmNvbnNpc3RlbnQgdmFsdWVzLiAgSWYgUkNVIHJlYWRlcnMgbmVlZCBmcmVzaCBvcgorY29uc2lzdGVudCB2YWx1ZXMsIHdoaWNoIHRoZXkgc29tZXRpbWVzIGRvLCB0aGV5IG5lZWQgdG8gdGFrZSBwcm9wZXIKK3ByZWNhdXRpb25zLiAgVG8gc2VlIHRoaXMsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgY29kZSBmcmFnbWVudDoKKworCXN0cnVjdCBmb28geworCQlpbnQgYTsKKwkJaW50IGI7CisJCWludCBjOworCX07CisJc3RydWN0IGZvbyAqZ3AxOworCXN0cnVjdCBmb28gKmdwMjsKKworCXZvaWQgdXBkYXRlcih2b2lkKQorCXsKKwkJc3RydWN0IGZvbyAqcDsKKworCQlwID0ga21hbGxvYyguLi4pOworCQlpZiAocCA9PSBOVUxMKQorCQkJZGVhbF93aXRoX2l0KCk7CisJCXAtPmEgPSA0MjsgIC8qIEVhY2ggZmllbGQgaW4gaXRzIG93biBjYWNoZSBsaW5lLiAqLworCQlwLT5iID0gNDM7CisJCXAtPmMgPSA0NDsKKwkJcmN1X2Fzc2lnbl9wb2ludGVyKGdwMSwgcCk7CisJCXAtPmIgPSAxNDM7CisJCXAtPmMgPSAxNDQ7CisJCXJjdV9hc3NpZ25fcG9pbnRlcihncDIsIHApOworCX0KKworCXZvaWQgcmVhZGVyKHZvaWQpCisJeworCQlzdHJ1Y3QgZm9vICpwOworCQlzdHJ1Y3QgZm9vICpxOworCQlpbnQgcjEsIHIyOworCisJCXAgPSByY3VfZGVyZWZlcmVuY2UoZ3AyKTsKKwkJaWYgKHAgPT0gTlVMTCkKKwkJCXJldHVybjsKKwkJcjEgPSBwLT5iOyAgLyogR3VhcmFudGVlZCB0byBnZXQgMTQzLiAqLworCQlxID0gcmN1X2RlcmVmZXJlbmNlKGdwMSk7ICAvKiBHdWFyYW50ZWVkIG5vbi1OVUxMLiAqLworCQlpZiAocCA9PSBxKSB7CisJCQkvKiBUaGUgY29tcGlsZXIgZGVjaWRlcyB0aGF0IHEtPmMgaXMgc2FtZSBhcyBwLT5jLiAqLworCQkJcjIgPSBwLT5jOyAvKiBDb3VsZCBnZXQgNDQgb24gd2Vha2x5IG9yZGVyIHN5c3RlbS4gKi8KKwkJfQorCQlkb19zb21ldGhpbmdfd2l0aChyMSwgcjIpOworCX0KKworWW91IG1pZ2h0IGJlIHN1cnByaXNlZCB0aGF0IHRoZSBvdXRjb21lIChyMSA9PSAxNDMgJiYgcjIgPT0gNDQpIGlzIHBvc3NpYmxlLAorYnV0IHlvdSBzaG91bGQgbm90IGJlLiAgQWZ0ZXIgYWxsLCB0aGUgdXBkYXRlciBtaWdodCBoYXZlIGJlZW4gaW52b2tlZAorYSBzZWNvbmQgdGltZSBiZXR3ZWVuIHRoZSB0aW1lIHJlYWRlcigpIGxvYWRlZCBpbnRvICJyMSIgYW5kIHRoZSB0aW1lCit0aGF0IGl0IGxvYWRlZCBpbnRvICJyMiIuICBUaGUgZmFjdCB0aGF0IHRoaXMgc2FtZSByZXN1bHQgY2FuIG9jY3VyIGR1ZQordG8gc29tZSByZW9yZGVyaW5nIGZyb20gdGhlIGNvbXBpbGVyIGFuZCBDUFVzIGlzIGJlc2lkZSB0aGUgcG9pbnQuCisKK0J1dCBzdXBwb3NlIHRoYXQgdGhlIHJlYWRlciBuZWVkcyBhIGNvbnNpc3RlbnQgdmlldz8KKworVGhlbiBvbmUgYXBwcm9hY2ggaXMgdG8gdXNlIGxvY2tpbmcsIGZvciBleGFtcGxlLCBhcyBmb2xsb3dzOgorCisJc3RydWN0IGZvbyB7CisJCWludCBhOworCQlpbnQgYjsKKwkJaW50IGM7CisJCXNwaW5sb2NrX3QgbG9jazsKKwl9OworCXN0cnVjdCBmb28gKmdwMTsKKwlzdHJ1Y3QgZm9vICpncDI7CisKKwl2b2lkIHVwZGF0ZXIodm9pZCkKKwl7CisJCXN0cnVjdCBmb28gKnA7CisKKwkJcCA9IGttYWxsb2MoLi4uKTsKKwkJaWYgKHAgPT0gTlVMTCkKKwkJCWRlYWxfd2l0aF9pdCgpOworCQlzcGluX2xvY2soJnAtPmxvY2spOworCQlwLT5hID0gNDI7ICAvKiBFYWNoIGZpZWxkIGluIGl0cyBvd24gY2FjaGUgbGluZS4gKi8KKwkJcC0+YiA9IDQzOworCQlwLT5jID0gNDQ7CisJCXNwaW5fdW5sb2NrKCZwLT5sb2NrKTsKKwkJcmN1X2Fzc2lnbl9wb2ludGVyKGdwMSwgcCk7CisJCXNwaW5fbG9jaygmcC0+bG9jayk7CisJCXAtPmIgPSAxNDM7CisJCXAtPmMgPSAxNDQ7CisJCXNwaW5fdW5sb2NrKCZwLT5sb2NrKTsKKwkJcmN1X2Fzc2lnbl9wb2ludGVyKGdwMiwgcCk7CisJfQorCisJdm9pZCByZWFkZXIodm9pZCkKKwl7CisJCXN0cnVjdCBmb28gKnA7CisJCXN0cnVjdCBmb28gKnE7CisJCWludCByMSwgcjI7CisKKwkJcCA9IHJjdV9kZXJlZmVyZW5jZShncDIpOworCQlpZiAocCA9PSBOVUxMKQorCQkJcmV0dXJuOworCQlzcGluX2xvY2soJnAtPmxvY2spOworCQlyMSA9IHAtPmI7ICAvKiBHdWFyYW50ZWVkIHRvIGdldCAxNDMuICovCisJCXEgPSByY3VfZGVyZWZlcmVuY2UoZ3AxKTsgIC8qIEd1YXJhbnRlZWQgbm9uLU5VTEwuICovCisJCWlmIChwID09IHEpIHsKKwkJCS8qIFRoZSBjb21waWxlciBkZWNpZGVzIHRoYXQgcS0+YyBpcyBzYW1lIGFzIHAtPmMuICovCisJCQlyMiA9IHAtPmM7IC8qIExvY2tpbmcgZ3VhcmFudGVlcyByMiA9PSAxNDQuICovCisJCX0KKwkJc3Bpbl91bmxvY2soJnAtPmxvY2spOworCQlkb19zb21ldGhpbmdfd2l0aChyMSwgcjIpOworCX0KKworQXMgYWx3YXlzLCB1c2UgdGhlIHJpZ2h0IHRvb2wgZm9yIHRoZSBqb2IhCisKKworRVhBTVBMRSBXSEVSRSBUSEUgQ09NUElMRVIgS05PV1MgVE9PIE1VQ0gKKworSWYgYSBwb2ludGVyIG9idGFpbmVkIGZyb20gcmN1X2RlcmVmZXJlbmNlKCkgY29tcGFyZXMgbm90LWVxdWFsIHRvIHNvbWUKK290aGVyIHBvaW50ZXIsIHRoZSBjb21waWxlciBub3JtYWxseSBoYXMgbm8gY2x1ZSB3aGF0IHRoZSB2YWx1ZSBvZiB0aGUKK2ZpcnN0IHBvaW50ZXIgbWlnaHQgYmUuICBUaGlzIGxhY2sgb2Yga25vd2xlZGdlIHByZXZlbnRzIHRoZSBjb21waWxlcgorZnJvbSBjYXJyeWluZyBvdXQgb3B0aW1pemF0aW9ucyB0aGF0IG90aGVyd2lzZSBtaWdodCBkZXN0cm95IHRoZSBvcmRlcmluZworZ3VhcmFudGVlcyB0aGF0IFJDVSBkZXBlbmRzIG9uLiAgQW5kIHRoZSB2b2xhdGlsZSBjYXN0IGluIHJjdV9kZXJlZmVyZW5jZSgpCitzaG91bGQgcHJldmVudCB0aGUgY29tcGlsZXIgZnJvbSBndWVzc2luZyB0aGUgdmFsdWUuCisKK0J1dCB3aXRob3V0IHJjdV9kZXJlZmVyZW5jZSgpLCB0aGUgY29tcGlsZXIga25vd3MgbW9yZSB0aGFuIHlvdSBtaWdodAorZXhwZWN0LiAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBjb2RlIGZyYWdtZW50OgorCisJc3RydWN0IGZvbyB7CisJCWludCBhOworCQlpbnQgYjsKKwl9OworCXN0YXRpYyBzdHJ1Y3QgZm9vIHZhcmlhYmxlMTsKKwlzdGF0aWMgc3RydWN0IGZvbyB2YXJpYWJsZTI7CisJc3RhdGljIHN0cnVjdCBmb28gKmdwID0gJnZhcmlhYmxlMTsKKworCXZvaWQgdXBkYXRlcih2b2lkKQorCXsKKwkJaW5pdGlhbGl6ZV9mb28oJnZhcmlhYmxlMik7CisJCXJjdV9hc3NpZ25fcG9pbnRlcihncCwgJnZhcmlhYmxlMik7CisJCS8qCisJCSAqIFRoZSBhYm92ZSBpcyB0aGUgb25seSBzdG9yZSB0byBncCBpbiB0aGlzIHRyYW5zbGF0aW9uIHVuaXQsCisJCSAqIGFuZCB0aGUgYWRkcmVzcyBvZiBncCBpcyBub3QgZXhwb3J0ZWQgaW4gYW55IHdheS4KKwkJICovCisJfQorCisJaW50IHJlYWRlcih2b2lkKQorCXsKKwkJc3RydWN0IGZvbyAqcDsKKworCQlwID0gZ3A7CisJCWJhcnJpZXIoKTsKKwkJaWYgKHAgPT0gJnZhcmlhYmxlMSkKKwkJCXJldHVybiBwLT5hOyAvKiBNdXN0IGJlIHZhcmlhYmxlMS5hLiAqLworCQllbHNlCisJCQlyZXR1cm4gcC0+YjsgLyogTXVzdCBiZSB2YXJpYWJsZTIuYi4gKi8KKwl9CisKK0JlY2F1c2UgdGhlIGNvbXBpbGVyIGNhbiBzZWUgYWxsIHN0b3JlcyB0byAiZ3AiLCBpdCBrbm93cyB0aGF0IHRoZSBvbmx5Citwb3NzaWJsZSB2YWx1ZXMgb2YgImdwIiBhcmUgInZhcmlhYmxlMSIgb24gdGhlIG9uZSBoYW5kIGFuZCAidmFyaWFibGUyIgorb24gdGhlIG90aGVyLiAgVGhlIGNvbXBhcmlzb24gaW4gcmVhZGVyKCkgdGhlcmVmb3JlIHRlbGxzIHRoZSBjb21waWxlcgordGhlIGV4YWN0IHZhbHVlIG9mICJwIiBldmVuIGluIHRoZSBub3QtZXF1YWxzIGNhc2UuICBUaGlzIGFsbG93cyB0aGUKK2NvbXBpbGVyIHRvIG1ha2UgdGhlIHJldHVybiB2YWx1ZXMgaW5kZXBlbmRlbnQgb2YgdGhlIGxvYWQgZnJvbSAiZ3AiLAoraW4gdHVybiBkZXN0cm95aW5nIHRoZSBvcmRlcmluZyBiZXR3ZWVuIHRoaXMgbG9hZCBhbmQgdGhlIGxvYWRzIG9mIHRoZQorcmV0dXJuIHZhbHVlcy4gIFRoaXMgY2FuIHJlc3VsdCBpbiAicC0+YiIgcmV0dXJuaW5nIHByZS1pbml0aWFsaXphdGlvbgorZ2FyYmFnZSB2YWx1ZXMuCisKK0luIHNob3J0LCByY3VfZGVyZWZlcmVuY2UoKSBpcyAtbm90LSBvcHRpb25hbCB3aGVuIHlvdSBhcmUgZ29pbmcgdG8KK2RlcmVmZXJlbmNlIHRoZSByZXN1bHRpbmcgcG9pbnRlci4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUkNVL3JjdWJhcnJpZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9SQ1UvcmN1YmFycmllci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEwY2ZlNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUkNVL3JjdWJhcnJpZXIudHh0CkBAIC0wLDAgKzEsMzIxIEBACitSQ1UgYW5kIFVubG9hZGFibGUgTW9kdWxlcworCitbT3JpZ2luYWxseSBwdWJsaXNoZWQgaW4gTFdOIEphbi4gMTQsIDIwMDc6IGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzIxNzQ4NC9dCisKK1JDVSAocmVhZC1jb3B5IHVwZGF0ZSkgaXMgYSBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtIHRoYXQgY2FuIGJlIHRob3VnaHQKK29mIGFzIGEgcmVwbGFjZW1lbnQgZm9yIHJlYWQtd3JpdGVyIGxvY2tpbmcgKGFtb25nIG90aGVyIHRoaW5ncyksIGJ1dCB3aXRoCit2ZXJ5IGxvdy1vdmVyaGVhZCByZWFkZXJzIHRoYXQgYXJlIGltbXVuZSB0byBkZWFkbG9jaywgcHJpb3JpdHkgaW52ZXJzaW9uLAorYW5kIHVuYm91bmRlZCBsYXRlbmN5LiBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb25zIGFyZSBkZWxpbWl0ZWQKK2J5IHJjdV9yZWFkX2xvY2soKSBhbmQgcmN1X3JlYWRfdW5sb2NrKCksIHdoaWNoLCBpbiBub24tQ09ORklHX1BSRUVNUFQKK2tlcm5lbHMsIGdlbmVyYXRlIG5vIGNvZGUgd2hhdHNvZXZlci4KKworVGhpcyBtZWFucyB0aGF0IFJDVSB3cml0ZXJzIGFyZSB1bmF3YXJlIG9mIHRoZSBwcmVzZW5jZSBvZiBjb25jdXJyZW50CityZWFkZXJzLCBzbyB0aGF0IFJDVSB1cGRhdGVzIHRvIHNoYXJlZCBkYXRhIG11c3QgYmUgdW5kZXJ0YWtlbiBxdWl0ZQorY2FyZWZ1bGx5LCBsZWF2aW5nIGFuIG9sZCB2ZXJzaW9uIG9mIHRoZSBkYXRhIHN0cnVjdHVyZSBpbiBwbGFjZSB1bnRpbCBhbGwKK3ByZS1leGlzdGluZyByZWFkZXJzIGhhdmUgZmluaXNoZWQuIFRoZXNlIG9sZCB2ZXJzaW9ucyBhcmUgbmVlZGVkIGJlY2F1c2UKK3N1Y2ggcmVhZGVycyBtaWdodCBob2xkIGEgcmVmZXJlbmNlIHRvIHRoZW0uIFJDVSB1cGRhdGVzIGNhbiB0aGVyZWZvcmUgYmUKK3JhdGhlciBleHBlbnNpdmUsIGFuZCBSQ1UgaXMgdGh1cyBiZXN0IHN1aXRlZCBmb3IgcmVhZC1tb3N0bHkgc2l0dWF0aW9ucy4KKworSG93IGNhbiBhbiBSQ1Ugd3JpdGVyIHBvc3NpYmx5IGRldGVybWluZSB3aGVuIGFsbCByZWFkZXJzIGFyZSBmaW5pc2hlZCwKK2dpdmVuIHRoYXQgcmVhZGVycyBtaWdodCB3ZWxsIGxlYXZlIGFic29sdXRlbHkgbm8gdHJhY2Ugb2YgdGhlaXIKK3ByZXNlbmNlPyBUaGVyZSBpcyBhIHN5bmNocm9uaXplX3JjdSgpIHByaW1pdGl2ZSB0aGF0IGJsb2NrcyB1bnRpbCBhbGwKK3ByZS1leGlzdGluZyByZWFkZXJzIGhhdmUgY29tcGxldGVkLiBBbiB1cGRhdGVyIHdpc2hpbmcgdG8gZGVsZXRlIGFuCitlbGVtZW50IHAgZnJvbSBhIGxpbmtlZCBsaXN0IG1pZ2h0IGRvIHRoZSBmb2xsb3dpbmcsIHdoaWxlIGhvbGRpbmcgYW4KK2FwcHJvcHJpYXRlIGxvY2ssIG9mIGNvdXJzZToKKworCWxpc3RfZGVsX3JjdShwKTsKKwlzeW5jaHJvbml6ZV9yY3UoKTsKKwlrZnJlZShwKTsKKworQnV0IHRoZSBhYm92ZSBjb2RlIGNhbm5vdCBiZSB1c2VkIGluIElSUSBjb250ZXh0IC0tIHRoZSBjYWxsX3JjdSgpCitwcmltaXRpdmUgbXVzdCBiZSB1c2VkIGluc3RlYWQuIFRoaXMgcHJpbWl0aXZlIHRha2VzIGEgcG9pbnRlciB0byBhbgorcmN1X2hlYWQgc3RydWN0IHBsYWNlZCB3aXRoaW4gdGhlIFJDVS1wcm90ZWN0ZWQgZGF0YSBzdHJ1Y3R1cmUgYW5kCithbm90aGVyIHBvaW50ZXIgdG8gYSBmdW5jdGlvbiB0aGF0IG1heSBiZSBpbnZva2VkIGxhdGVyIHRvIGZyZWUgdGhhdAorc3RydWN0dXJlLiBDb2RlIHRvIGRlbGV0ZSBhbiBlbGVtZW50IHAgZnJvbSB0aGUgbGlua2VkIGxpc3QgZnJvbSBJUlEKK2NvbnRleHQgbWlnaHQgdGhlbiBiZSBhcyBmb2xsb3dzOgorCisJbGlzdF9kZWxfcmN1KHApOworCWNhbGxfcmN1KCZwLT5yY3UsIHBfY2FsbGJhY2spOworCitTaW5jZSBjYWxsX3JjdSgpIG5ldmVyIGJsb2NrcywgdGhpcyBjb2RlIGNhbiBzYWZlbHkgYmUgdXNlZCBmcm9tIHdpdGhpbgorSVJRIGNvbnRleHQuIFRoZSBmdW5jdGlvbiBwX2NhbGxiYWNrKCkgbWlnaHQgYmUgZGVmaW5lZCBhcyBmb2xsb3dzOgorCisJc3RhdGljIHZvaWQgcF9jYWxsYmFjayhzdHJ1Y3QgcmN1X2hlYWQgKnJwKQorCXsKKwkJc3RydWN0IHBzdHJ1Y3QgKnAgPSBjb250YWluZXJfb2YocnAsIHN0cnVjdCBwc3RydWN0LCByY3UpOworCisJCWtmcmVlKHApOworCX0KKworCitVbmxvYWRpbmcgTW9kdWxlcyBUaGF0IFVzZSBjYWxsX3JjdSgpCisKK0J1dCB3aGF0IGlmIHBfY2FsbGJhY2sgaXMgZGVmaW5lZCBpbiBhbiB1bmxvYWRhYmxlIG1vZHVsZT8KKworSWYgd2UgdW5sb2FkIHRoZSBtb2R1bGUgd2hpbGUgc29tZSBSQ1UgY2FsbGJhY2tzIGFyZSBwZW5kaW5nLAordGhlIENQVXMgZXhlY3V0aW5nIHRoZXNlIGNhbGxiYWNrcyBhcmUgZ29pbmcgdG8gYmUgc2V2ZXJlbHkKK2Rpc2FwcG9pbnRlZCB3aGVuIHRoZXkgYXJlIGxhdGVyIGludm9rZWQsIGFzIGZhbmNpZnVsbHkgZGVwaWN0ZWQgYXQKK2h0dHA6Ly9sd24ubmV0L2ltYWdlcy9ucy9rZXJuZWwvcmN1LWRyb3AuanBnLgorCitXZSBjb3VsZCB0cnkgcGxhY2luZyBhIHN5bmNocm9uaXplX3JjdSgpIGluIHRoZSBtb2R1bGUtZXhpdCBjb2RlIHBhdGgsCitidXQgdGhpcyBpcyBub3Qgc3VmZmljaWVudC4gQWx0aG91Z2ggc3luY2hyb25pemVfcmN1KCkgZG9lcyB3YWl0IGZvciBhCitncmFjZSBwZXJpb2QgdG8gZWxhcHNlLCBpdCBkb2VzIG5vdCB3YWl0IGZvciB0aGUgY2FsbGJhY2tzIHRvIGNvbXBsZXRlLgorCitPbmUgbWlnaHQgYmUgdGVtcHRlZCB0byB0cnkgc2V2ZXJhbCBiYWNrLXRvLWJhY2sgc3luY2hyb25pemVfcmN1KCkKK2NhbGxzLCBidXQgdGhpcyBpcyBzdGlsbCBub3QgZ3VhcmFudGVlZCB0byB3b3JrLiBJZiB0aGVyZSBpcyBhIHZlcnkKK2hlYXZ5IFJDVS1jYWxsYmFjayBsb2FkLCB0aGVuIHNvbWUgb2YgdGhlIGNhbGxiYWNrcyBtaWdodCBiZSBkZWZlcnJlZAoraW4gb3JkZXIgdG8gYWxsb3cgb3RoZXIgcHJvY2Vzc2luZyB0byBwcm9jZWVkLiBTdWNoIGRlZmVycmFsIGlzIHJlcXVpcmVkCitpbiByZWFsdGltZSBrZXJuZWxzIGluIG9yZGVyIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBzY2hlZHVsaW5nIGxhdGVuY2llcy4KKworCityY3VfYmFycmllcigpCisKK1dlIGluc3RlYWQgbmVlZCB0aGUgcmN1X2JhcnJpZXIoKSBwcmltaXRpdmUuICBSYXRoZXIgdGhhbiB3YWl0aW5nIGZvcgorYSBncmFjZSBwZXJpb2QgdG8gZWxhcHNlLCByY3VfYmFycmllcigpIHdhaXRzIGZvciBhbGwgb3V0c3RhbmRpbmcgUkNVCitjYWxsYmFja3MgdG8gY29tcGxldGUuICBQbGVhc2Ugbm90ZSB0aGF0IHJjdV9iYXJyaWVyKCkgZG9lcyAtbm90LSBpbXBseQorc3luY2hyb25pemVfcmN1KCksIGluIHBhcnRpY3VsYXIsIGlmIHRoZXJlIGFyZSBubyBSQ1UgY2FsbGJhY2tzIHF1ZXVlZAorYW55d2hlcmUsIHJjdV9iYXJyaWVyKCkgaXMgd2l0aGluIGl0cyByaWdodHMgdG8gcmV0dXJuIGltbWVkaWF0ZWx5LAord2l0aG91dCB3YWl0aW5nIGZvciBhIGdyYWNlIHBlcmlvZCB0byBlbGFwc2UuCisKK1BzZXVkby1jb2RlIHVzaW5nIHJjdV9iYXJyaWVyKCkgaXMgYXMgZm9sbG93czoKKworICAgMS4gUHJldmVudCBhbnkgbmV3IFJDVSBjYWxsYmFja3MgZnJvbSBiZWluZyBwb3N0ZWQuCisgICAyLiBFeGVjdXRlIHJjdV9iYXJyaWVyKCkuCisgICAzLiBBbGxvdyB0aGUgbW9kdWxlIHRvIGJlIHVubG9hZGVkLgorCitUaGVyZSBhcmUgYWxzbyByY3VfYmFycmllcl9iaCgpLCByY3VfYmFycmllcl9zY2hlZCgpLCBhbmQgc3JjdV9iYXJyaWVyKCkKK2Z1bmN0aW9ucyBmb3IgdGhlIG90aGVyIGZsYXZvcnMgb2YgUkNVLCBhbmQgeW91IG9mIGNvdXJzZSBtdXN0IG1hdGNoCit0aGUgZmxhdm9yIG9mIHJjdV9iYXJyaWVyKCkgd2l0aCB0aGF0IG9mIGNhbGxfcmN1KCkuICBJZiB5b3VyIG1vZHVsZQordXNlcyBtdWx0aXBsZSBmbGF2b3JzIG9mIGNhbGxfcmN1KCksIHRoZW4gaXQgbXVzdCBhbHNvIHVzZSBtdWx0aXBsZQorZmxhdm9ycyBvZiByY3VfYmFycmllcigpIHdoZW4gdW5sb2FkaW5nIHRoYXQgbW9kdWxlLiAgRm9yIGV4YW1wbGUsIGlmCitpdCB1c2VzIGNhbGxfcmN1X2JoKCksIGNhbGxfc3JjdSgpIG9uIHNyY3Vfc3RydWN0XzEsIGFuZCBjYWxsX3NyY3UoKSBvbgorc3JjdV9zdHJ1Y3RfMigpLCB0aGVuIHRoZSBmb2xsb3dpbmcgdGhyZWUgbGluZXMgb2YgY29kZSB3aWxsIGJlIHJlcXVpcmVkCit3aGVuIHVubG9hZGluZzoKKworIDEgcmN1X2JhcnJpZXJfYmgoKTsKKyAyIHNyY3VfYmFycmllcigmc3JjdV9zdHJ1Y3RfMSk7CisgMyBzcmN1X2JhcnJpZXIoJnNyY3Vfc3RydWN0XzIpOworCitUaGUgcmN1dG9ydHVyZSBtb2R1bGUgbWFrZXMgdXNlIG9mIHJjdV9iYXJyaWVyKCkgaW4gaXRzIGV4aXQgZnVuY3Rpb24KK2FzIGZvbGxvd3M6CisKKyAxIHN0YXRpYyB2b2lkCisgMiByY3VfdG9ydHVyZV9jbGVhbnVwKHZvaWQpCisgMyB7CisgNCAgIGludCBpOworIDUKKyA2ICAgZnVsbHN0b3AgPSAxOworIDcgICBpZiAoc2h1ZmZsZXJfdGFzayAhPSBOVUxMKSB7CisgOCAgICAgVkVSQk9TRV9QUklOVEtfU1RSSU5HKCJTdG9wcGluZyByY3VfdG9ydHVyZV9zaHVmZmxlIHRhc2siKTsKKyA5ICAgICBrdGhyZWFkX3N0b3Aoc2h1ZmZsZXJfdGFzayk7CisxMCAgIH0KKzExICAgc2h1ZmZsZXJfdGFzayA9IE5VTEw7CisxMgorMTMgICBpZiAod3JpdGVyX3Rhc2sgIT0gTlVMTCkgeworMTQgICAgIFZFUkJPU0VfUFJJTlRLX1NUUklORygiU3RvcHBpbmcgcmN1X3RvcnR1cmVfd3JpdGVyIHRhc2siKTsKKzE1ICAgICBrdGhyZWFkX3N0b3Aod3JpdGVyX3Rhc2spOworMTYgICB9CisxNyAgIHdyaXRlcl90YXNrID0gTlVMTDsKKzE4CisxOSAgIGlmIChyZWFkZXJfdGFza3MgIT0gTlVMTCkgeworMjAgICAgIGZvciAoaSA9IDA7IGkgPCBucmVhbHJlYWRlcnM7IGkrKykgeworMjEgICAgICAgaWYgKHJlYWRlcl90YXNrc1tpXSAhPSBOVUxMKSB7CisyMiAgICAgICAgIFZFUkJPU0VfUFJJTlRLX1NUUklORygKKzIzICAgICAgICAgICAiU3RvcHBpbmcgcmN1X3RvcnR1cmVfcmVhZGVyIHRhc2siKTsKKzI0ICAgICAgICAga3RocmVhZF9zdG9wKHJlYWRlcl90YXNrc1tpXSk7CisyNSAgICAgICB9CisyNiAgICAgICByZWFkZXJfdGFza3NbaV0gPSBOVUxMOworMjcgICAgIH0KKzI4ICAgICBrZnJlZShyZWFkZXJfdGFza3MpOworMjkgICAgIHJlYWRlcl90YXNrcyA9IE5VTEw7CiszMCAgIH0KKzMxICAgcmN1X3RvcnR1cmVfY3VycmVudCA9IE5VTEw7CiszMgorMzMgICBpZiAoZmFrZXdyaXRlcl90YXNrcyAhPSBOVUxMKSB7CiszNCAgICAgZm9yIChpID0gMDsgaSA8IG5mYWtld3JpdGVyczsgaSsrKSB7CiszNSAgICAgICBpZiAoZmFrZXdyaXRlcl90YXNrc1tpXSAhPSBOVUxMKSB7CiszNiAgICAgICAgIFZFUkJPU0VfUFJJTlRLX1NUUklORygKKzM3ICAgICAgICAgICAiU3RvcHBpbmcgcmN1X3RvcnR1cmVfZmFrZXdyaXRlciB0YXNrIik7CiszOCAgICAgICAgIGt0aHJlYWRfc3RvcChmYWtld3JpdGVyX3Rhc2tzW2ldKTsKKzM5ICAgICAgIH0KKzQwICAgICAgIGZha2V3cml0ZXJfdGFza3NbaV0gPSBOVUxMOworNDEgICAgIH0KKzQyICAgICBrZnJlZShmYWtld3JpdGVyX3Rhc2tzKTsKKzQzICAgICBmYWtld3JpdGVyX3Rhc2tzID0gTlVMTDsKKzQ0ICAgfQorNDUKKzQ2ICAgaWYgKHN0YXRzX3Rhc2sgIT0gTlVMTCkgeworNDcgICAgIFZFUkJPU0VfUFJJTlRLX1NUUklORygiU3RvcHBpbmcgcmN1X3RvcnR1cmVfc3RhdHMgdGFzayIpOworNDggICAgIGt0aHJlYWRfc3RvcChzdGF0c190YXNrKTsKKzQ5ICAgfQorNTAgICBzdGF0c190YXNrID0gTlVMTDsKKzUxCis1MiAgIC8qIFdhaXQgZm9yIGFsbCBSQ1UgY2FsbGJhY2tzIHRvIGZpcmUuICovCis1MyAgIHJjdV9iYXJyaWVyKCk7Cis1NAorNTUgICByY3VfdG9ydHVyZV9zdGF0c19wcmludCgpOyAvKiAtQWZ0ZXItIHRoZSBzdGF0cyB0aHJlYWQgaXMgc3RvcHBlZCEgKi8KKzU2Cis1NyAgIGlmIChjdXJfb3BzLT5jbGVhbnVwICE9IE5VTEwpCis1OCAgICAgY3VyX29wcy0+Y2xlYW51cCgpOworNTkgICBpZiAoYXRvbWljX3JlYWQoJm5fcmN1X3RvcnR1cmVfZXJyb3IpKQorNjAgICAgIHJjdV90b3J0dXJlX3ByaW50X21vZHVsZV9wYXJtcygiRW5kIG9mIHRlc3Q6IEZBSUxVUkUiKTsKKzYxICAgZWxzZQorNjIgICAgIHJjdV90b3J0dXJlX3ByaW50X21vZHVsZV9wYXJtcygiRW5kIG9mIHRlc3Q6IFNVQ0NFU1MiKTsKKzYzIH0KKworTGluZSA2IHNldHMgYSBnbG9iYWwgdmFyaWFibGUgdGhhdCBwcmV2ZW50cyBhbnkgUkNVIGNhbGxiYWNrcyBmcm9tCityZS1wb3N0aW5nIHRoZW1zZWx2ZXMuIFRoaXMgd2lsbCBub3QgYmUgbmVjZXNzYXJ5IGluIG1vc3QgY2FzZXMsIHNpbmNlCitSQ1UgY2FsbGJhY2tzIHJhcmVseSBpbmNsdWRlIGNhbGxzIHRvIGNhbGxfcmN1KCkuIEhvd2V2ZXIsIHRoZSByY3V0b3J0dXJlCittb2R1bGUgaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZSwgYW5kIHRoZXJlZm9yZSBuZWVkcyB0byBzZXQgdGhpcworZ2xvYmFsIHZhcmlhYmxlLgorCitMaW5lcyA3LTUwIHN0b3AgYWxsIHRoZSBrZXJuZWwgdGFza3MgYXNzb2NpYXRlZCB3aXRoIHRoZSByY3V0b3J0dXJlCittb2R1bGUuIFRoZXJlZm9yZSwgb25jZSBleGVjdXRpb24gcmVhY2hlcyBsaW5lIDUzLCBubyBtb3JlIHJjdXRvcnR1cmUKK1JDVSBjYWxsYmFja3Mgd2lsbCBiZSBwb3N0ZWQuIFRoZSByY3VfYmFycmllcigpIGNhbGwgb24gbGluZSA1MyB3YWl0cworZm9yIGFueSBwcmUtZXhpc3RpbmcgY2FsbGJhY2tzIHRvIGNvbXBsZXRlLgorCitUaGVuIGxpbmVzIDU1LTYyIHByaW50IHN0YXR1cyBhbmQgZG8gb3BlcmF0aW9uLXNwZWNpZmljIGNsZWFudXAsIGFuZAordGhlbiByZXR1cm4sIHBlcm1pdHRpbmcgdGhlIG1vZHVsZS11bmxvYWQgb3BlcmF0aW9uIHRvIGJlIGNvbXBsZXRlZC4KKworUXVpY2sgUXVpeiAjMTogSXMgdGhlcmUgYW55IG90aGVyIHNpdHVhdGlvbiB3aGVyZSByY3VfYmFycmllcigpIG1pZ2h0CisJYmUgcmVxdWlyZWQ/CisKK1lvdXIgbW9kdWxlIG1pZ2h0IGhhdmUgYWRkaXRpb25hbCBjb21wbGljYXRpb25zLiBGb3IgZXhhbXBsZSwgaWYgeW91cgorbW9kdWxlIGludm9rZXMgY2FsbF9yY3UoKSBmcm9tIHRpbWVycywgeW91IHdpbGwgbmVlZCB0byBmaXJzdCBjYW5jZWwgYWxsCit0aGUgdGltZXJzLCBhbmQgb25seSB0aGVuIGludm9rZSByY3VfYmFycmllcigpIHRvIHdhaXQgZm9yIGFueSByZW1haW5pbmcKK1JDVSBjYWxsYmFja3MgdG8gY29tcGxldGUuCisKK09mIGNvdXJzZSwgaWYgeW91IG1vZHVsZSB1c2VzIGNhbGxfcmN1X2JoKCksIHlvdSB3aWxsIG5lZWQgdG8gaW52b2tlCityY3VfYmFycmllcl9iaCgpIGJlZm9yZSB1bmxvYWRpbmcuICBTaW1pbGFybHksIGlmIHlvdXIgbW9kdWxlIHVzZXMKK2NhbGxfcmN1X3NjaGVkKCksIHlvdSB3aWxsIG5lZWQgdG8gaW52b2tlIHJjdV9iYXJyaWVyX3NjaGVkKCkgYmVmb3JlCit1bmxvYWRpbmcuICBJZiB5b3VyIG1vZHVsZSB1c2VzIGNhbGxfcmN1KCksIGNhbGxfcmN1X2JoKCksIC1hbmQtCitjYWxsX3JjdV9zY2hlZCgpLCB0aGVuIHlvdSB3aWxsIG5lZWQgdG8gaW52b2tlIGVhY2ggb2YgcmN1X2JhcnJpZXIoKSwKK3JjdV9iYXJyaWVyX2JoKCksIGFuZCByY3VfYmFycmllcl9zY2hlZCgpLgorCisKK0ltcGxlbWVudGluZyByY3VfYmFycmllcigpCisKK0RpcGFua2FyIFNhcm1hJ3MgaW1wbGVtZW50YXRpb24gb2YgcmN1X2JhcnJpZXIoKSBtYWtlcyB1c2Ugb2YgdGhlIGZhY3QKK3RoYXQgUkNVIGNhbGxiYWNrcyBhcmUgbmV2ZXIgcmVvcmRlcmVkIG9uY2UgcXVldWVkIG9uIG9uZSBvZiB0aGUgcGVyLUNQVQorcXVldWVzLiBIaXMgaW1wbGVtZW50YXRpb24gcXVldWVzIGFuIFJDVSBjYWxsYmFjayBvbiBlYWNoIG9mIHRoZSBwZXItQ1BVCitjYWxsYmFjayBxdWV1ZXMsIGFuZCB0aGVuIHdhaXRzIHVudGlsIHRoZXkgaGF2ZSBhbGwgc3RhcnRlZCBleGVjdXRpbmcsIGF0Cit3aGljaCBwb2ludCwgYWxsIGVhcmxpZXIgUkNVIGNhbGxiYWNrcyBhcmUgZ3VhcmFudGVlZCB0byBoYXZlIGNvbXBsZXRlZC4KKworVGhlIG9yaWdpbmFsIGNvZGUgZm9yIHJjdV9iYXJyaWVyKCkgd2FzIGFzIGZvbGxvd3M6CisKKyAxIHZvaWQgcmN1X2JhcnJpZXIodm9pZCkKKyAyIHsKKyAzICAgQlVHX09OKGluX2ludGVycnVwdCgpKTsKKyA0ICAgLyogVGFrZSBjcHVjb250cm9sIG11dGV4IHRvIHByb3RlY3QgYWdhaW5zdCBDUFUgaG90cGx1ZyAqLworIDUgICBtdXRleF9sb2NrKCZyY3VfYmFycmllcl9tdXRleCk7CisgNiAgIGluaXRfY29tcGxldGlvbigmcmN1X2JhcnJpZXJfY29tcGxldGlvbik7CisgNyAgIGF0b21pY19zZXQoJnJjdV9iYXJyaWVyX2NwdV9jb3VudCwgMCk7CisgOCAgIG9uX2VhY2hfY3B1KHJjdV9iYXJyaWVyX2Z1bmMsIE5VTEwsIDAsIDEpOworIDkgICB3YWl0X2Zvcl9jb21wbGV0aW9uKCZyY3VfYmFycmllcl9jb21wbGV0aW9uKTsKKzEwICAgbXV0ZXhfdW5sb2NrKCZyY3VfYmFycmllcl9tdXRleCk7CisxMSB9CisKK0xpbmUgMyB2ZXJpZmllcyB0aGF0IHRoZSBjYWxsZXIgaXMgaW4gcHJvY2VzcyBjb250ZXh0LCBhbmQgbGluZXMgNSBhbmQgMTAKK3VzZSByY3VfYmFycmllcl9tdXRleCB0byBlbnN1cmUgdGhhdCBvbmx5IG9uZSByY3VfYmFycmllcigpIGlzIHVzaW5nIHRoZQorZ2xvYmFsIGNvbXBsZXRpb24gYW5kIGNvdW50ZXJzIGF0IGEgdGltZSwgd2hpY2ggYXJlIGluaXRpYWxpemVkIG9uIGxpbmVzCis2IGFuZCA3LiBMaW5lIDggY2F1c2VzIGVhY2ggQ1BVIHRvIGludm9rZSByY3VfYmFycmllcl9mdW5jKCksIHdoaWNoIGlzCitzaG93biBiZWxvdy4gTm90ZSB0aGF0IHRoZSBmaW5hbCAiMSIgaW4gb25fZWFjaF9jcHUoKSdzIGFyZ3VtZW50IGxpc3QKK2Vuc3VyZXMgdGhhdCBhbGwgdGhlIGNhbGxzIHRvIHJjdV9iYXJyaWVyX2Z1bmMoKSB3aWxsIGhhdmUgY29tcGxldGVkCitiZWZvcmUgb25fZWFjaF9jcHUoKSByZXR1cm5zLiBMaW5lIDkgdGhlbiB3YWl0cyBmb3IgdGhlIGNvbXBsZXRpb24uCisKK1RoaXMgY29kZSB3YXMgcmV3cml0dGVuIGluIDIwMDggdG8gc3VwcG9ydCByY3VfYmFycmllcl9iaCgpIGFuZAorcmN1X2JhcnJpZXJfc2NoZWQoKSBpbiBhZGRpdGlvbiB0byB0aGUgb3JpZ2luYWwgcmN1X2JhcnJpZXIoKS4KKworVGhlIHJjdV9iYXJyaWVyX2Z1bmMoKSBydW5zIG9uIGVhY2ggQ1BVLCB3aGVyZSBpdCBpbnZva2VzIGNhbGxfcmN1KCkKK3RvIHBvc3QgYW4gUkNVIGNhbGxiYWNrLCBhcyBmb2xsb3dzOgorCisgMSBzdGF0aWMgdm9pZCByY3VfYmFycmllcl9mdW5jKHZvaWQgKm5vdHVzZWQpCisgMiB7CisgMyBpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOworIDQgc3RydWN0IHJjdV9kYXRhICpyZHAgPSAmcGVyX2NwdShyY3VfZGF0YSwgY3B1KTsKKyA1IHN0cnVjdCByY3VfaGVhZCAqaGVhZDsKKyA2CisgNyBoZWFkID0gJnJkcC0+YmFycmllcjsKKyA4IGF0b21pY19pbmMoJnJjdV9iYXJyaWVyX2NwdV9jb3VudCk7CisgOSBjYWxsX3JjdShoZWFkLCByY3VfYmFycmllcl9jYWxsYmFjayk7CisxMCB9CisKK0xpbmVzIDMgYW5kIDQgbG9jYXRlIFJDVSdzIGludGVybmFsIHBlci1DUFUgcmN1X2RhdGEgc3RydWN0dXJlLAord2hpY2ggY29udGFpbnMgdGhlIHN0cnVjdCByY3VfaGVhZCB0aGF0IG5lZWRlZCBmb3IgdGhlIGxhdGVyIGNhbGwgdG8KK2NhbGxfcmN1KCkuIExpbmUgNyBwaWNrcyB1cCBhIHBvaW50ZXIgdG8gdGhpcyBzdHJ1Y3QgcmN1X2hlYWQsIGFuZCBsaW5lCis4IGluY3JlbWVudHMgYSBnbG9iYWwgY291bnRlci4gVGhpcyBjb3VudGVyIHdpbGwgbGF0ZXIgYmUgZGVjcmVtZW50ZWQKK2J5IHRoZSBjYWxsYmFjay4gTGluZSA5IHRoZW4gcmVnaXN0ZXJzIHRoZSByY3VfYmFycmllcl9jYWxsYmFjaygpIG9uCit0aGUgY3VycmVudCBDUFUncyBxdWV1ZS4KKworVGhlIHJjdV9iYXJyaWVyX2NhbGxiYWNrKCkgZnVuY3Rpb24gc2ltcGx5IGF0b21pY2FsbHkgZGVjcmVtZW50cyB0aGUKK3JjdV9iYXJyaWVyX2NwdV9jb3VudCB2YXJpYWJsZSBhbmQgZmluYWxpemVzIHRoZSBjb21wbGV0aW9uIHdoZW4gaXQKK3JlYWNoZXMgemVybywgYXMgZm9sbG93czoKKworIDEgc3RhdGljIHZvaWQgcmN1X2JhcnJpZXJfY2FsbGJhY2soc3RydWN0IHJjdV9oZWFkICpub3R1c2VkKQorIDIgeworIDMgaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJnJjdV9iYXJyaWVyX2NwdV9jb3VudCkpCisgNCBjb21wbGV0ZSgmcmN1X2JhcnJpZXJfY29tcGxldGlvbik7CisgNSB9CisKK1F1aWNrIFF1aXogIzI6IFdoYXQgaGFwcGVucyBpZiBDUFUgMCdzIHJjdV9iYXJyaWVyX2Z1bmMoKSBleGVjdXRlcworCWltbWVkaWF0ZWx5ICh0aHVzIGluY3JlbWVudGluZyByY3VfYmFycmllcl9jcHVfY291bnQgdG8gdGhlCisJdmFsdWUgb25lKSwgYnV0IHRoZSBvdGhlciBDUFUncyByY3VfYmFycmllcl9mdW5jKCkgaW52b2NhdGlvbnMKKwlhcmUgZGVsYXllZCBmb3IgYSBmdWxsIGdyYWNlIHBlcmlvZD8gQ291bGRuJ3QgdGhpcyByZXN1bHQgaW4KKwlyY3VfYmFycmllcigpIHJldHVybmluZyBwcmVtYXR1cmVseT8KKworCityY3VfYmFycmllcigpIFN1bW1hcnkKKworVGhlIHJjdV9iYXJyaWVyKCkgcHJpbWl0aXZlIGhhcyBzZWVuIHJlbGF0aXZlbHkgbGl0dGxlIHVzZSwgc2luY2UgbW9zdAorY29kZSB1c2luZyBSQ1UgaXMgaW4gdGhlIGNvcmUga2VybmVsIHJhdGhlciB0aGFuIGluIG1vZHVsZXMuIEhvd2V2ZXIsIGlmCit5b3UgYXJlIHVzaW5nIFJDVSBmcm9tIGFuIHVubG9hZGFibGUgbW9kdWxlLCB5b3UgbmVlZCB0byB1c2UgcmN1X2JhcnJpZXIoKQorc28gdGhhdCB5b3VyIG1vZHVsZSBtYXkgYmUgc2FmZWx5IHVubG9hZGVkLgorCisKK0Fuc3dlcnMgdG8gUXVpY2sgUXVpenplcworCitRdWljayBRdWl6ICMxOiBJcyB0aGVyZSBhbnkgb3RoZXIgc2l0dWF0aW9uIHdoZXJlIHJjdV9iYXJyaWVyKCkgbWlnaHQKKwliZSByZXF1aXJlZD8KKworQW5zd2VyOiBJbnRlcmVzdGluZ2x5IGVub3VnaCwgcmN1X2JhcnJpZXIoKSB3YXMgbm90IG9yaWdpbmFsbHkKKwlpbXBsZW1lbnRlZCBmb3IgbW9kdWxlIHVubG9hZGluZy4gTmlraXRhIERhbmlsb3Ygd2FzIHVzaW5nCisJUkNVIGluIGEgZmlsZXN5c3RlbSwgd2hpY2ggcmVzdWx0ZWQgaW4gYSBzaW1pbGFyIHNpdHVhdGlvbiBhdAorCWZpbGVzeXN0ZW0tdW5tb3VudCB0aW1lLiBEaXBhbmthciBTYXJtYSBjb2RlZCB1cCByY3VfYmFycmllcigpCisJaW4gcmVzcG9uc2UsIHNvIHRoYXQgTmlraXRhIGNvdWxkIGludm9rZSBpdCBkdXJpbmcgdGhlCisJZmlsZXN5c3RlbS11bm1vdW50IHByb2Nlc3MuCisKKwlNdWNoIGxhdGVyLCB5b3VycyB0cnVseSBoaXQgdGhlIFJDVSBtb2R1bGUtdW5sb2FkIHByb2JsZW0gd2hlbgorCWltcGxlbWVudGluZyByY3V0b3J0dXJlLCBhbmQgZm91bmQgdGhhdCByY3VfYmFycmllcigpIHNvbHZlcworCXRoaXMgcHJvYmxlbSBhcyB3ZWxsLgorCitRdWljayBRdWl6ICMyOiBXaGF0IGhhcHBlbnMgaWYgQ1BVIDAncyByY3VfYmFycmllcl9mdW5jKCkgZXhlY3V0ZXMKKwlpbW1lZGlhdGVseSAodGh1cyBpbmNyZW1lbnRpbmcgcmN1X2JhcnJpZXJfY3B1X2NvdW50IHRvIHRoZQorCXZhbHVlIG9uZSksIGJ1dCB0aGUgb3RoZXIgQ1BVJ3MgcmN1X2JhcnJpZXJfZnVuYygpIGludm9jYXRpb25zCisJYXJlIGRlbGF5ZWQgZm9yIGEgZnVsbCBncmFjZSBwZXJpb2Q/IENvdWxkbid0IHRoaXMgcmVzdWx0IGluCisJcmN1X2JhcnJpZXIoKSByZXR1cm5pbmcgcHJlbWF0dXJlbHk/CisKK0Fuc3dlcjogVGhpcyBjYW5ub3QgaGFwcGVuLiBUaGUgcmVhc29uIGlzIHRoYXQgb25fZWFjaF9jcHUoKSBoYXMgaXRzIGxhc3QKKwlhcmd1bWVudCwgdGhlIHdhaXQgZmxhZywgc2V0IHRvICIxIi4gVGhpcyBmbGFnIGlzIHBhc3NlZCB0aHJvdWdoCisJdG8gc21wX2NhbGxfZnVuY3Rpb24oKSBhbmQgZnVydGhlciB0byBzbXBfY2FsbF9mdW5jdGlvbl9vbl9jcHUoKSwKKwljYXVzaW5nIHRoaXMgbGF0dGVyIHRvIHNwaW4gdW50aWwgdGhlIGNyb3NzLUNQVSBpbnZvY2F0aW9uIG9mCisJcmN1X2JhcnJpZXJfZnVuYygpIGhhcyBjb21wbGV0ZWQuIFRoaXMgYnkgaXRzZWxmIHdvdWxkIHByZXZlbnQKKwlhIGdyYWNlIHBlcmlvZCBmcm9tIGNvbXBsZXRpbmcgb24gbm9uLUNPTkZJR19QUkVFTVBUIGtlcm5lbHMsCisJc2luY2UgZWFjaCBDUFUgbXVzdCB1bmRlcmdvIGEgY29udGV4dCBzd2l0Y2ggKG9yIG90aGVyIHF1aWVzY2VudAorCXN0YXRlKSBiZWZvcmUgdGhlIGdyYWNlIHBlcmlvZCBjYW4gY29tcGxldGUuIEhvd2V2ZXIsIHRoaXMgaXMKKwlvZiBubyB1c2UgaW4gQ09ORklHX1BSRUVNUFQga2VybmVscy4KKworCVRoZXJlZm9yZSwgb25fZWFjaF9jcHUoKSBkaXNhYmxlcyBwcmVlbXB0aW9uIGFjcm9zcyBpdHMgY2FsbAorCXRvIHNtcF9jYWxsX2Z1bmN0aW9uKCkgYW5kIGFsc28gYWNyb3NzIHRoZSBsb2NhbCBjYWxsIHRvCisJcmN1X2JhcnJpZXJfZnVuYygpLiBUaGlzIHByZXZlbnRzIHRoZSBsb2NhbCBDUFUgZnJvbSBjb250ZXh0CisJc3dpdGNoaW5nLCBhZ2FpbiBwcmV2ZW50aW5nIGdyYWNlIHBlcmlvZHMgZnJvbSBjb21wbGV0aW5nLiBUaGlzCisJbWVhbnMgdGhhdCBhbGwgQ1BVcyBoYXZlIGV4ZWN1dGVkIHJjdV9iYXJyaWVyX2Z1bmMoKSBiZWZvcmUKKwl0aGUgZmlyc3QgcmN1X2JhcnJpZXJfY2FsbGJhY2soKSBjYW4gcG9zc2libHkgZXhlY3V0ZSwgaW4gdHVybgorCXByZXZlbnRpbmcgcmN1X2JhcnJpZXJfY3B1X2NvdW50IGZyb20gcHJlbWF0dXJlbHkgcmVhY2hpbmcgemVyby4KKworCUN1cnJlbnRseSwgLXJ0IGltcGxlbWVudGF0aW9ucyBvZiBSQ1Uga2VlcCBidXQgYSBzaW5nbGUgZ2xvYmFsCisJcXVldWUgZm9yIFJDVSBjYWxsYmFja3MsIGFuZCB0aHVzIGRvIG5vdCBzdWZmZXIgZnJvbSB0aGlzCisJcHJvYmxlbS4gSG93ZXZlciwgd2hlbiB0aGUgLXJ0IFJDVSBldmVudHVhbGx5IGRvZXMgaGF2ZSBwZXItQ1BVCisJY2FsbGJhY2sgcXVldWVzLCB0aGluZ3Mgd2lsbCBoYXZlIHRvIGNoYW5nZS4gT25lIHNpbXBsZSBjaGFuZ2UKKwlpcyB0byBhZGQgYW4gcmN1X3JlYWRfbG9jaygpIGJlZm9yZSBsaW5lIDggb2YgcmN1X2JhcnJpZXIoKQorCWFuZCBhbiByY3VfcmVhZF91bmxvY2soKSBhZnRlciBsaW5lIDggb2YgdGhpcyBzYW1lIGZ1bmN0aW9uLiBJZgorCXlvdSBjYW4gdGhpbmsgb2YgYSBiZXR0ZXIgY2hhbmdlLCBwbGVhc2UgbGV0IG1lIGtub3chCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JDVS9yY3VsaXN0X251bGxzLnR4dCBiL0RvY3VtZW50YXRpb24vUkNVL3JjdWxpc3RfbnVsbHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4Zjk2NTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1JDVS9yY3VsaXN0X251bGxzLnR4dApAQCAtMCwwICsxLDE3MiBAQAorVXNpbmcgaGxpc3RfbnVsbHMgdG8gcHJvdGVjdCByZWFkLW1vc3RseSBsaW5rZWQgbGlzdHMgYW5kCitvYmplY3RzIHVzaW5nIFNMQUJfREVTVFJPWV9CWV9SQ1UgYWxsb2NhdGlvbnMuCisKK1BsZWFzZSByZWFkIHRoZSBiYXNpY3MgaW4gRG9jdW1lbnRhdGlvbi9SQ1UvbGlzdFJDVS50eHQKKworVXNpbmcgc3BlY2lhbCBtYWtlcnMgKGNhbGxlZCAnbnVsbHMnKSBpcyBhIGNvbnZlbmllbnQgd2F5Cit0byBzb2x2ZSBmb2xsb3dpbmcgcHJvYmxlbSA6CisKK0EgdHlwaWNhbCBSQ1UgbGlua2VkIGxpc3QgbWFuYWdpbmcgb2JqZWN0cyB3aGljaCBhcmUKK2FsbG9jYXRlZCB3aXRoIFNMQUJfREVTVFJPWV9CWV9SQ1Uga21lbV9jYWNoZSBjYW4KK3VzZSBmb2xsb3dpbmcgYWxnb3MgOgorCisxKSBMb29rdXAgYWxnbworLS0tLS0tLS0tLS0tLS0KK3JjdV9yZWFkX2xvY2soKQorYmVnaW46CitvYmogPSBsb2NrbGVzc19sb29rdXAoa2V5KTsKK2lmIChvYmopIHsKKyAgaWYgKCF0cnlfZ2V0X3JlZihvYmopKSAvLyBtaWdodCBmYWlsIGZvciBmcmVlIG9iamVjdHMKKyAgICBnb3RvIGJlZ2luOworICAvKgorICAgKiBCZWNhdXNlIGEgd3JpdGVyIGNvdWxkIGRlbGV0ZSBvYmplY3QsIGFuZCBhIHdyaXRlciBjb3VsZAorICAgKiByZXVzZSB0aGVzZSBvYmplY3QgYmVmb3JlIHRoZSBSQ1UgZ3JhY2UgcGVyaW9kLCB3ZQorICAgKiBtdXN0IGNoZWNrIGtleSBhZnRlciBnZXR0aW5nIHRoZSByZWZlcmVuY2Ugb24gb2JqZWN0CisgICAqLworICBpZiAob2JqLT5rZXkgIT0ga2V5KSB7IC8vIG5vdCB0aGUgb2JqZWN0IHdlIGV4cGVjdGVkCisgICAgIHB1dF9yZWYob2JqKTsKKyAgICAgZ290byBiZWdpbjsKKyAgIH0KK30KK3JjdV9yZWFkX3VubG9jaygpOworCitCZXdhcmUgdGhhdCBsb2NrbGVzc19sb29rdXAoa2V5KSBjYW5ub3QgdXNlIHRyYWRpdGlvbmFsIGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSgpCitidXQgYSB2ZXJzaW9uIHdpdGggYW4gYWRkaXRpb25hbCBtZW1vcnkgYmFycmllciAoc21wX3JtYigpKQorCitsb2NrbGVzc19sb29rdXAoa2V5KQoreworICAgc3RydWN0IGhsaXN0X25vZGUgKm5vZGUsICpuZXh0OworICAgZm9yIChwb3MgPSByY3VfZGVyZWZlcmVuY2UoKGhlYWQpLT5maXJzdCk7CisgICAgICAgICAgcG9zICYmICh7IG5leHQgPSBwb3MtPm5leHQ7IHNtcF9ybWIoKTsgcHJlZmV0Y2gobmV4dCk7IDE7IH0pICYmCisgICAgICAgICAgKHsgdHBvcyA9IGhsaXN0X2VudHJ5KHBvcywgdHlwZW9mKCp0cG9zKSwgbWVtYmVyKTsgMTsgfSk7CisgICAgICAgICAgcG9zID0gcmN1X2RlcmVmZXJlbmNlKG5leHQpKQorICAgICAgaWYgKG9iai0+a2V5ID09IGtleSkKKyAgICAgICAgIHJldHVybiBvYmo7CisgICByZXR1cm4gTlVMTDsKKworQW5kIG5vdGUgdGhlIHRyYWRpdGlvbmFsIGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSgpIG1pc3NlcyB0aGlzIHNtcF9ybWIoKSA6CisKKyAgIHN0cnVjdCBobGlzdF9ub2RlICpub2RlOworICAgZm9yIChwb3MgPSByY3VfZGVyZWZlcmVuY2UoKGhlYWQpLT5maXJzdCk7CisJCXBvcyAmJiAoeyBwcmVmZXRjaChwb3MtPm5leHQpOyAxOyB9KSAmJgorCQkoeyB0cG9zID0gaGxpc3RfZW50cnkocG9zLCB0eXBlb2YoKnRwb3MpLCBtZW1iZXIpOyAxOyB9KTsKKwkJcG9zID0gcmN1X2RlcmVmZXJlbmNlKHBvcy0+bmV4dCkpCisgICAgICBpZiAob2JqLT5rZXkgPT0ga2V5KQorICAgICAgICAgcmV0dXJuIG9iajsKKyAgIHJldHVybiBOVUxMOworfQorCitRdW90aW5nIENvcmV5IE1pbnlhcmQgOgorCisiSWYgdGhlIG9iamVjdCBpcyBtb3ZlZCBmcm9tIG9uZSBsaXN0IHRvIGFub3RoZXIgbGlzdCBpbi1iZXR3ZWVuIHRoZQorIHRpbWUgdGhlIGhhc2ggaXMgY2FsY3VsYXRlZCBhbmQgdGhlIG5leHQgZmllbGQgaXMgYWNjZXNzZWQsIGFuZCB0aGUKKyBvYmplY3QgaGFzIG1vdmVkIHRvIHRoZSBlbmQgb2YgYSBuZXcgbGlzdCwgdGhlIHRyYXZlcnNhbCB3aWxsIG5vdAorIGNvbXBsZXRlIHByb3Blcmx5IG9uIHRoZSBsaXN0IGl0IHNob3VsZCBoYXZlLCBzaW5jZSB0aGUgb2JqZWN0IHdpbGwKKyBiZSBvbiB0aGUgZW5kIG9mIHRoZSBuZXcgbGlzdCBhbmQgdGhlcmUncyBub3QgYSB3YXkgdG8gdGVsbCBpdCdzIG9uIGEKKyBuZXcgbGlzdCBhbmQgcmVzdGFydCB0aGUgbGlzdCB0cmF2ZXJzYWwuICBJIHRoaW5rIHRoYXQgdGhpcyBjYW4gYmUKKyBzb2x2ZWQgYnkgcHJlLWZldGNoaW5nIHRoZSAibmV4dCIgZmllbGQgKHdpdGggcHJvcGVyIGJhcnJpZXJzKSBiZWZvcmUKKyBjaGVja2luZyB0aGUga2V5LiIKKworMikgSW5zZXJ0IGFsZ28gOgorLS0tLS0tLS0tLS0tLS0tLQorCitXZSBuZWVkIHRvIG1ha2Ugc3VyZSBhIHJlYWRlciBjYW5ub3QgcmVhZCB0aGUgbmV3ICdvYmotPm9ial9uZXh0JyB2YWx1ZQorYW5kIHByZXZpb3VzIHZhbHVlIG9mICdvYmotPmtleScuIE9yIGVsc2UsIGFuIGl0ZW0gY291bGQgYmUgZGVsZXRlZAorZnJvbSBhIGNoYWluLCBhbmQgaW5zZXJ0ZWQgaW50byBhbm90aGVyIGNoYWluLiBJZiBuZXcgY2hhaW4gd2FzIGVtcHR5CitiZWZvcmUgdGhlIG1vdmUsICduZXh0JyBwb2ludGVyIGlzIE5VTEwsIGFuZCBsb2NrbGVzcyByZWFkZXIgY2FuCitub3QgZGV0ZWN0IGl0IG1pc3NlZCBmb2xsb3dpbmcgaXRlbXMgaW4gb3JpZ2luYWwgY2hhaW4uCisKKy8qCisgKiBQbGVhc2Ugbm90ZSB0aGF0IG5ldyBpbnNlcnRzIGFyZSBkb25lIGF0IHRoZSBoZWFkIG9mIGxpc3QsCisgKiBub3QgaW4gdGhlIG1pZGRsZSBvciBlbmQuCisgKi8KK29iaiA9IGttZW1fY2FjaGVfYWxsb2MoLi4uKTsKK2xvY2tfY2hhaW4oKTsgLy8gdHlwaWNhbGx5IGEgc3Bpbl9sb2NrKCkKK29iai0+a2V5ID0ga2V5OworLyoKKyAqIHdlIG5lZWQgdG8gbWFrZSBzdXJlIG9iai0+a2V5IGlzIHVwZGF0ZWQgYmVmb3JlIG9iai0+bmV4dAorICogb3Igb2JqLT5yZWZjbnQKKyAqLworc21wX3dtYigpOworYXRvbWljX3NldCgmb2JqLT5yZWZjbnQsIDEpOworaGxpc3RfYWRkX2hlYWRfcmN1KCZvYmotPm9ial9ub2RlLCBsaXN0KTsKK3VubG9ja19jaGFpbigpOyAvLyB0eXBpY2FsbHkgYSBzcGluX3VubG9jaygpCisKKworMykgUmVtb3ZlIGFsZ28KKy0tLS0tLS0tLS0tLS0tCitOb3RoaW5nIHNwZWNpYWwgaGVyZSwgd2UgY2FuIHVzZSBhIHN0YW5kYXJkIFJDVSBobGlzdCBkZWxldGlvbi4KK0J1dCB0aGFua3MgdG8gU0xBQl9ERVNUUk9ZX0JZX1JDVSwgYmV3YXJlIGEgZGVsZXRlZCBvYmplY3QgY2FuIGJlIHJldXNlZAordmVyeSB2ZXJ5IGZhc3QgKGJlZm9yZSB0aGUgZW5kIG9mIFJDVSBncmFjZSBwZXJpb2QpCisKK2lmIChwdXRfbGFzdF9yZWZlcmVuY2Vfb24ob2JqKSB7CisgICBsb2NrX2NoYWluKCk7IC8vIHR5cGljYWxseSBhIHNwaW5fbG9jaygpCisgICBobGlzdF9kZWxfaW5pdF9yY3UoJm9iai0+b2JqX25vZGUpOworICAgdW5sb2NrX2NoYWluKCk7IC8vIHR5cGljYWxseSBhIHNwaW5fdW5sb2NrKCkKKyAgIGttZW1fY2FjaGVfZnJlZShjYWNoZXAsIG9iaik7Cit9CisKKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorV2l0aCBobGlzdF9udWxscyB3ZSBjYW4gYXZvaWQgZXh0cmEgc21wX3JtYigpIGluIGxvY2tsZXNzX2xvb2t1cCgpCithbmQgZXh0cmEgc21wX3dtYigpIGluIGluc2VydCBmdW5jdGlvbi4KKworRm9yIGV4YW1wbGUsIGlmIHdlIGNob29zZSB0byBzdG9yZSB0aGUgc2xvdCBudW1iZXIgYXMgdGhlICdudWxscycKK2VuZC1vZi1saXN0IG1hcmtlciBmb3IgZWFjaCBzbG90IG9mIHRoZSBoYXNoIHRhYmxlLCB3ZSBjYW4gZGV0ZWN0CithIHJhY2UgKHNvbWUgd3JpdGVyIGRpZCBhIGRlbGV0ZSBhbmQvb3IgYSBtb3ZlIG9mIGFuIG9iamVjdAordG8gYW5vdGhlciBjaGFpbikgY2hlY2tpbmcgdGhlIGZpbmFsICdudWxscycgdmFsdWUgaWYKK3RoZSBsb29rdXAgbWV0IHRoZSBlbmQgb2YgY2hhaW4uIElmIGZpbmFsICdudWxscycgdmFsdWUKK2lzIG5vdCB0aGUgc2xvdCBudW1iZXIsIHRoZW4gd2UgbXVzdCByZXN0YXJ0IHRoZSBsb29rdXAgYXQKK3RoZSBiZWdpbm5pbmcuIElmIHRoZSBvYmplY3Qgd2FzIG1vdmVkIHRvIHRoZSBzYW1lIGNoYWluLAordGhlbiB0aGUgcmVhZGVyIGRvZXNuJ3QgY2FyZSA6IEl0IG1pZ2h0IGV2ZW50dWFsbHkKK3NjYW4gdGhlIGxpc3QgYWdhaW4gd2l0aG91dCBoYXJtLgorCisKKzEpIGxvb2t1cCBhbGdvCisKKyBoZWFkID0gJnRhYmxlW3Nsb3RdOworIHJjdV9yZWFkX2xvY2soKTsKK2JlZ2luOgorIGhsaXN0X251bGxzX2Zvcl9lYWNoX2VudHJ5X3JjdShvYmosIG5vZGUsIGhlYWQsIG1lbWJlcikgeworICAgaWYgKG9iai0+a2V5ID09IGtleSkgeworICAgICAgaWYgKCF0cnlfZ2V0X3JlZihvYmopKSAvLyBtaWdodCBmYWlsIGZvciBmcmVlIG9iamVjdHMKKyAgICAgICAgIGdvdG8gYmVnaW47CisgICAgICBpZiAob2JqLT5rZXkgIT0ga2V5KSB7IC8vIG5vdCB0aGUgb2JqZWN0IHdlIGV4cGVjdGVkCisgICAgICAgICBwdXRfcmVmKG9iaik7CisgICAgICAgICBnb3RvIGJlZ2luOworICAgICAgfQorICBnb3RvIG91dDsKKyB9CisvKgorICogaWYgdGhlIG51bGxzIHZhbHVlIHdlIGdvdCBhdCB0aGUgZW5kIG9mIHRoaXMgbG9va3VwIGlzCisgKiBub3QgdGhlIGV4cGVjdGVkIG9uZSwgd2UgbXVzdCByZXN0YXJ0IGxvb2t1cC4KKyAqIFdlIHByb2JhYmx5IG1ldCBhbiBpdGVtIHRoYXQgd2FzIG1vdmVkIHRvIGFub3RoZXIgY2hhaW4uCisgKi8KKyBpZiAoZ2V0X251bGxzX3ZhbHVlKG5vZGUpICE9IHNsb3QpCisgICBnb3RvIGJlZ2luOworIG9iaiA9IE5VTEw7CisKK291dDoKKyByY3VfcmVhZF91bmxvY2soKTsKKworMikgSW5zZXJ0IGZ1bmN0aW9uIDoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8qCisgKiBQbGVhc2Ugbm90ZSB0aGF0IG5ldyBpbnNlcnRzIGFyZSBkb25lIGF0IHRoZSBoZWFkIG9mIGxpc3QsCisgKiBub3QgaW4gdGhlIG1pZGRsZSBvciBlbmQuCisgKi8KK29iaiA9IGttZW1fY2FjaGVfYWxsb2MoY2FjaGVwKTsKK2xvY2tfY2hhaW4oKTsgLy8gdHlwaWNhbGx5IGEgc3Bpbl9sb2NrKCkKK29iai0+a2V5ID0ga2V5OworLyoKKyAqIGNoYW5nZXMgdG8gb2JqLT5rZXkgbXVzdCBiZSB2aXNpYmxlIGJlZm9yZSByZWZjbnQgb25lCisgKi8KK3NtcF93bWIoKTsKK2F0b21pY19zZXQoJm9iai0+cmVmY250LCAxKTsKKy8qCisgKiBpbnNlcnQgb2JqIGluIFJDVSB3YXkgKHJlYWRlcnMgbWlnaHQgYmUgdHJhdmVyc2luZyBjaGFpbikKKyAqLworaGxpc3RfbnVsbHNfYWRkX2hlYWRfcmN1KCZvYmotPm9ial9ub2RlLCBsaXN0KTsKK3VubG9ja19jaGFpbigpOyAvLyB0eXBpY2FsbHkgYSBzcGluX3VubG9jaygpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JDVS9yY3VyZWYudHh0IGIvRG9jdW1lbnRhdGlvbi9SQ1UvcmN1cmVmLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTMwMzNmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9SQ1UvcmN1cmVmLnR4dApAQCAtMCwwICsxLDEzMiBAQAorUmVmZXJlbmNlLWNvdW50IGRlc2lnbiBmb3IgZWxlbWVudHMgb2YgbGlzdHMvYXJyYXlzIHByb3RlY3RlZCBieSBSQ1UuCisKKworUGxlYXNlIG5vdGUgdGhhdCB0aGUgcGVyY3B1LXJlZiBmZWF0dXJlIGlzIGxpa2VseSB5b3VyIGZpcnN0CitzdG9wIGlmIHlvdSBuZWVkIHRvIGNvbWJpbmUgcmVmZXJlbmNlIGNvdW50cyBhbmQgUkNVLiAgUGxlYXNlIHNlZQoraW5jbHVkZS9saW51eC9wZXJjcHUtcmVmY291bnQuaCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gIEhvd2V2ZXIsIGluCit0aG9zZSB1bnVzdWFsIGNhc2VzIHdoZXJlIHBlcmNwdS1yZWYgd291bGQgY29uc3VtZSB0b28gbXVjaCBtZW1vcnksCitwbGVhc2UgcmVhZCBvbi4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlZmVyZW5jZSBjb3VudGluZyBvbiBlbGVtZW50cyBvZiBsaXN0cyB3aGljaCBhcmUgcHJvdGVjdGVkIGJ5IHRyYWRpdGlvbmFsCityZWFkZXIvd3JpdGVyIHNwaW5sb2NrcyBvciBzZW1hcGhvcmVzIGFyZSBzdHJhaWdodGZvcndhcmQ6CisKKzEuCQkJCTIuCithZGQoKQkJCQlzZWFyY2hfYW5kX3JlZmVyZW5jZSgpCit7CQkJCXsKKyAgICBhbGxvY19vYmplY3QJCSAgICByZWFkX2xvY2soJmxpc3RfbG9jayk7CisgICAgLi4uCQkJCSAgICBzZWFyY2hfZm9yX2VsZW1lbnQKKyAgICBhdG9taWNfc2V0KCZlbC0+cmMsIDEpOwkgICAgYXRvbWljX2luYygmZWwtPnJjKTsKKyAgICB3cml0ZV9sb2NrKCZsaXN0X2xvY2spOwkgICAgIC4uLgorICAgIGFkZF9lbGVtZW50CQkJICAgIHJlYWRfdW5sb2NrKCZsaXN0X2xvY2spOworICAgIC4uLgkJCQkgICAgLi4uCisgICAgd3JpdGVfdW5sb2NrKCZsaXN0X2xvY2spOwl9Cit9CisKKzMuCQkJCQk0LgorcmVsZWFzZV9yZWZlcmVuY2VkKCkJCQlkZWxldGUoKQorewkJCQkJeworICAgIC4uLgkJCQkJICAgIHdyaXRlX2xvY2soJmxpc3RfbG9jayk7CisgICAgYXRvbWljX2RlYygmZWwtPnJjLCByZWxmdW5jKQkgICAgLi4uCisgICAgLi4uCQkJCQkgICAgcmVtb3ZlX2VsZW1lbnQKK30JCQkJCSAgICB3cml0ZV91bmxvY2soJmxpc3RfbG9jayk7CisgCQkJCQkgICAgLi4uCisJCQkJCSAgICBpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmZWwtPnJjKSkKKwkJCQkJICAgICAgICBrZnJlZShlbCk7CisJCQkJCSAgICAuLi4KKwkJCQkJfQorCitJZiB0aGlzIGxpc3QvYXJyYXkgaXMgbWFkZSBsb2NrIGZyZWUgdXNpbmcgUkNVIGFzIGluIGNoYW5naW5nIHRoZQord3JpdGVfbG9jaygpIGluIGFkZCgpIGFuZCBkZWxldGUoKSB0byBzcGluX2xvY2soKSBhbmQgY2hhbmdpbmcgcmVhZF9sb2NrKCkKK2luIHNlYXJjaF9hbmRfcmVmZXJlbmNlKCkgdG8gcmN1X3JlYWRfbG9jaygpLCB0aGUgYXRvbWljX2luYygpIGluCitzZWFyY2hfYW5kX3JlZmVyZW5jZSgpIGNvdWxkIHBvdGVudGlhbGx5IGhvbGQgcmVmZXJlbmNlIHRvIGFuIGVsZW1lbnQgd2hpY2gKK2hhcyBhbHJlYWR5IGJlZW4gZGVsZXRlZCBmcm9tIHRoZSBsaXN0L2FycmF5LiAgVXNlIGF0b21pY19pbmNfbm90X3plcm8oKQoraW4gdGhpcyBzY2VuYXJpbyBhcyBmb2xsb3dzOgorCisxLgkJCQkJMi4KK2FkZCgpCQkJCQlzZWFyY2hfYW5kX3JlZmVyZW5jZSgpCit7CQkJCQl7CisgICAgYWxsb2Nfb2JqZWN0CQkJICAgIHJjdV9yZWFkX2xvY2soKTsKKyAgICAuLi4JCQkJCSAgICBzZWFyY2hfZm9yX2VsZW1lbnQKKyAgICBhdG9taWNfc2V0KCZlbC0+cmMsIDEpOwkJICAgIGlmICghYXRvbWljX2luY19ub3RfemVybygmZWwtPnJjKSkgeworICAgIHNwaW5fbG9jaygmbGlzdF9sb2NrKTsJCSAgICAgICAgcmN1X3JlYWRfdW5sb2NrKCk7CisJCQkJCSAgICAgICAgcmV0dXJuIEZBSUw7CisgICAgYWRkX2VsZW1lbnQJCQkJICAgIH0KKyAgICAuLi4JCQkJCSAgICAuLi4KKyAgICBzcGluX3VubG9jaygmbGlzdF9sb2NrKTsJCSAgICByY3VfcmVhZF91bmxvY2soKTsKK30JCQkJCX0KKzMuCQkJCQk0LgorcmVsZWFzZV9yZWZlcmVuY2VkKCkJCQlkZWxldGUoKQorewkJCQkJeworICAgIC4uLgkJCQkJICAgIHNwaW5fbG9jaygmbGlzdF9sb2NrKTsKKyAgICBpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmZWwtPnJjKSkgICAgICAgLi4uCisgICAgICAgIGNhbGxfcmN1KCZlbC0+aGVhZCwgZWxfZnJlZSk7ICAgICAgIHJlbW92ZV9lbGVtZW50CisgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZsaXN0X2xvY2spOworfSAJCQkJCSAgICAuLi4KKwkJCQkJICAgIGlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZlbC0+cmMpKQorCQkJCQkgICAgICAgIGNhbGxfcmN1KCZlbC0+aGVhZCwgZWxfZnJlZSk7CisJCQkJCSAgICAuLi4KKwkJCQkJfQorCitTb21ldGltZXMsIGEgcmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50IG5lZWRzIHRvIGJlIG9idGFpbmVkIGluIHRoZQordXBkYXRlICh3cml0ZSkgc3RyZWFtLiAgSW4gc3VjaCBjYXNlcywgYXRvbWljX2luY19ub3RfemVybygpIG1pZ2h0IGJlCitvdmVya2lsbCwgc2luY2Ugd2UgaG9sZCB0aGUgdXBkYXRlLXNpZGUgc3BpbmxvY2suICBPbmUgbWlnaHQgaW5zdGVhZAordXNlIGF0b21pY19pbmMoKSBpbiBzdWNoIGNhc2VzLgorCitJdCBpcyBub3QgYWx3YXlzIGNvbnZlbmllbnQgdG8gZGVhbCB3aXRoICJGQUlMIiBpbiB0aGUKK3NlYXJjaF9hbmRfcmVmZXJlbmNlKCkgY29kZSBwYXRoLiAgSW4gc3VjaCBjYXNlcywgdGhlCithdG9taWNfZGVjX2FuZF90ZXN0KCkgbWF5IGJlIG1vdmVkIGZyb20gZGVsZXRlKCkgdG8gZWxfZnJlZSgpCithcyBmb2xsb3dzOgorCisxLgkJCQkJMi4KK2FkZCgpCQkJCQlzZWFyY2hfYW5kX3JlZmVyZW5jZSgpCit7CQkJCQl7CisgICAgYWxsb2Nfb2JqZWN0CQkJICAgIHJjdV9yZWFkX2xvY2soKTsKKyAgICAuLi4JCQkJCSAgICBzZWFyY2hfZm9yX2VsZW1lbnQKKyAgICBhdG9taWNfc2V0KCZlbC0+cmMsIDEpOwkJICAgIGF0b21pY19pbmMoJmVsLT5yYyk7CisgICAgc3Bpbl9sb2NrKCZsaXN0X2xvY2spOwkJICAgIC4uLgorCisgICAgYWRkX2VsZW1lbnQJCQkJICAgIHJjdV9yZWFkX3VubG9jaygpOworICAgIC4uLgkJCQkJfQorICAgIHNwaW5fdW5sb2NrKCZsaXN0X2xvY2spOwkJNC4KK30JCQkJCWRlbGV0ZSgpCiszLgkJCQkJeworcmVsZWFzZV9yZWZlcmVuY2VkKCkJCQkgICAgc3Bpbl9sb2NrKCZsaXN0X2xvY2spOworewkJCQkJICAgIC4uLgorICAgIC4uLgkJCQkJICAgIHJlbW92ZV9lbGVtZW50CisgICAgaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJmVsLT5yYykpICAgICAgIHNwaW5fdW5sb2NrKCZsaXN0X2xvY2spOworICAgICAgICBrZnJlZShlbCk7CQkJICAgIC4uLgorICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsX3JjdSgmZWwtPmhlYWQsIGVsX2ZyZWUpOworfSAJCQkJCSAgICAuLi4KKzUuCQkJCQl9Cit2b2lkIGVsX2ZyZWUoc3RydWN0IHJjdV9oZWFkICpyaHApCit7CisgICAgcmVsZWFzZV9yZWZlcmVuY2VkKCk7Cit9CisKK1RoZSBrZXkgcG9pbnQgaXMgdGhhdCB0aGUgaW5pdGlhbCByZWZlcmVuY2UgYWRkZWQgYnkgYWRkKCkgaXMgbm90IHJlbW92ZWQKK3VudGlsIGFmdGVyIGEgZ3JhY2UgcGVyaW9kIGhhcyBlbGFwc2VkIGZvbGxvd2luZyByZW1vdmFsLiAgVGhpcyBtZWFucyB0aGF0CitzZWFyY2hfYW5kX3JlZmVyZW5jZSgpIGNhbm5vdCBmaW5kIHRoaXMgZWxlbWVudCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgdmFsdWUKK29mIGVsLT5yYyBjYW5ub3QgaW5jcmVhc2UuICBUaHVzLCBvbmNlIGl0IHJlYWNoZXMgemVybywgdGhlcmUgYXJlIG5vCityZWFkZXJzIHRoYXQgY2FuIG9yIGV2ZXIgd2lsbCBiZSBhYmxlIHRvIHJlZmVyZW5jZSB0aGUgZWxlbWVudC4gIFRoZQorZWxlbWVudCBjYW4gdGhlcmVmb3JlIHNhZmVseSBiZSBmcmVlZC4gIFRoaXMgaW4gdHVybiBndWFyYW50ZWVzIHRoYXQgaWYKK2FueSByZWFkZXIgZmluZHMgdGhlIGVsZW1lbnQsIHRoYXQgcmVhZGVyIG1heSBzYWZlbHkgYWNxdWlyZSBhIHJlZmVyZW5jZQord2l0aG91dCBjaGVja2luZyB0aGUgdmFsdWUgb2YgdGhlIHJlZmVyZW5jZSBjb3VudGVyLgorCitJbiBjYXNlcyB3aGVyZSBkZWxldGUoKSBjYW4gc2xlZXAsIHN5bmNocm9uaXplX3JjdSgpIGNhbiBiZSBjYWxsZWQgZnJvbQorZGVsZXRlKCksIHNvIHRoYXQgZWxfZnJlZSgpIGNhbiBiZSBzdWJzdW1lZCBpbnRvIGRlbGV0ZSBhcyBmb2xsb3dzOgorCis0LgorZGVsZXRlKCkKK3sKKyAgICBzcGluX2xvY2soJmxpc3RfbG9jayk7CisgICAgLi4uCisgICAgcmVtb3ZlX2VsZW1lbnQKKyAgICBzcGluX3VubG9jaygmbGlzdF9sb2NrKTsKKyAgICAuLi4KKyAgICBzeW5jaHJvbml6ZV9yY3UoKTsKKyAgICBpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmZWwtPnJjKSkKKyAgICAJa2ZyZWUoZWwpOworICAgIC4uLgorfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SQ1Uvc3RhbGx3YXJuLnR4dCBiL0RvY3VtZW50YXRpb24vUkNVL3N0YWxsd2Fybi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY3ZmI0MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUkNVL3N0YWxsd2Fybi50eHQKQEAgLTAsMCArMSwyNjYgQEAKK1VzaW5nIFJDVSdzIENQVSBTdGFsbCBEZXRlY3RvcgorCitUaGUgcmN1X2NwdV9zdGFsbF9zdXBwcmVzcyBtb2R1bGUgcGFyYW1ldGVyIGVuYWJsZXMgUkNVJ3MgQ1BVIHN0YWxsCitkZXRlY3Rvciwgd2hpY2ggZGV0ZWN0cyBjb25kaXRpb25zIHRoYXQgdW5kdWx5IGRlbGF5IFJDVSBncmFjZSBwZXJpb2RzLgorVGhpcyBtb2R1bGUgcGFyYW1ldGVyIGVuYWJsZXMgQ1BVIHN0YWxsIGRldGVjdGlvbiBieSBkZWZhdWx0LCBidXQKK21heSBiZSBvdmVycmlkZGVuIHZpYSBib290LXRpbWUgcGFyYW1ldGVyIG9yIGF0IHJ1bnRpbWUgdmlhIHN5c2ZzLgorVGhlIHN0YWxsIGRldGVjdG9yJ3MgaWRlYSBvZiB3aGF0IGNvbnN0aXR1dGVzICJ1bmR1bHkgZGVsYXllZCIgaXMKK2NvbnRyb2xsZWQgYnkgYSBzZXQgb2Yga2VybmVsIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGFuZCBjcHAgbWFjcm9zOgorCitDT05GSUdfUkNVX0NQVV9TVEFMTF9USU1FT1VUCisKKwlUaGlzIGtlcm5lbCBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBkZWZpbmVzIHRoZSBwZXJpb2Qgb2YgdGltZQorCXRoYXQgUkNVIHdpbGwgd2FpdCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgYSBncmFjZSBwZXJpb2QgdW50aWwgaXQKKwlpc3N1ZXMgYW4gUkNVIENQVSBzdGFsbCB3YXJuaW5nLiAgVGhpcyB0aW1lIHBlcmlvZCBpcyBub3JtYWxseQorCTIxIHNlY29uZHMuCisKKwlUaGlzIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIG1heSBiZSBjaGFuZ2VkIGF0IHJ1bnRpbWUgdmlhIHRoZQorCS9zeXMvbW9kdWxlL3JjdXBkYXRlL3BhcmFtZXRlcnMvcmN1X2NwdV9zdGFsbF90aW1lb3V0LCBob3dldmVyCisJdGhpcyBwYXJhbWV0ZXIgaXMgY2hlY2tlZCBvbmx5IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBjeWNsZS4KKwlTbyBpZiB5b3UgYXJlIDEwIHNlY29uZHMgaW50byBhIDQwLXNlY29uZCBzdGFsbCwgc2V0dGluZyB0aGlzCisJc3lzZnMgcGFyYW1ldGVyIHRvIChzYXkpIGZpdmUgd2lsbCBzaG9ydGVuIHRoZSB0aW1lb3V0IGZvciB0aGUKKwktbmV4dC0gc3RhbGwsIG9yIHRoZSBmb2xsb3dpbmcgd2FybmluZyBmb3IgdGhlIGN1cnJlbnQgc3RhbGwKKwkoYXNzdW1pbmcgdGhlIHN0YWxsIGxhc3RzIGxvbmcgZW5vdWdoKS4gIEl0IHdpbGwgbm90IGFmZmVjdCB0aGUKKwl0aW1pbmcgb2YgdGhlIG5leHQgd2FybmluZyBmb3IgdGhlIGN1cnJlbnQgc3RhbGwuCisKKwlTdGFsbC13YXJuaW5nIG1lc3NhZ2VzIG1heSBiZSBlbmFibGVkIGFuZCBkaXNhYmxlZCBjb21wbGV0ZWx5IHZpYQorCS9zeXMvbW9kdWxlL3JjdXBkYXRlL3BhcmFtZXRlcnMvcmN1X2NwdV9zdGFsbF9zdXBwcmVzcy4KKworUkNVX1NUQUxMX0RFTEFZX0RFTFRBCisKKwlBbHRob3VnaCB0aGUgbG9ja2RlcCBmYWNpbGl0eSBpcyBleHRyZW1lbHkgdXNlZnVsLCBpdCBkb2VzIGFkZAorCXNvbWUgb3ZlcmhlYWQuICBUaGVyZWZvcmUsIHVuZGVyIENPTkZJR19QUk9WRV9SQ1UsIHRoZQorCVJDVV9TVEFMTF9ERUxBWV9ERUxUQSBtYWNybyBhbGxvd3MgZml2ZSBleHRyYSBzZWNvbmRzIGJlZm9yZQorCWdpdmluZyBhbiBSQ1UgQ1BVIHN0YWxsIHdhcm5pbmcgbWVzc2FnZS4gIChUaGlzIGlzIGEgY3BwCisJbWFjcm8sIG5vdCBhIGtlcm5lbCBjb25maWd1cmF0aW9uIHBhcmFtZXRlci4pCisKK1JDVV9TVEFMTF9SQVRfREVMQVkKKworCVRoZSBDUFUgc3RhbGwgZGV0ZWN0b3IgdHJpZXMgdG8gbWFrZSB0aGUgb2ZmZW5kaW5nIENQVSBwcmludCBpdHMKKwlvd24gd2FybmluZ3MsIGFzIHRoaXMgb2Z0ZW4gZ2l2ZXMgYmV0dGVyLXF1YWxpdHkgc3RhY2sgdHJhY2VzLgorCUhvd2V2ZXIsIGlmIHRoZSBvZmZlbmRpbmcgQ1BVIGRvZXMgbm90IGRldGVjdCBpdHMgb3duIHN0YWxsIGluCisJdGhlIG51bWJlciBvZiBqaWZmaWVzIHNwZWNpZmllZCBieSBSQ1VfU1RBTExfUkFUX0RFTEFZLCB0aGVuCisJc29tZSBvdGhlciBDUFUgd2lsbCBjb21wbGFpbi4gIFRoaXMgZGVsYXkgaXMgbm9ybWFsbHkgc2V0IHRvCisJdHdvIGppZmZpZXMuICAoVGhpcyBpcyBhIGNwcCBtYWNybywgbm90IGEga2VybmVsIGNvbmZpZ3VyYXRpb24KKwlwYXJhbWV0ZXIuKQorCityY3VwZGF0ZS5yY3VfdGFza19zdGFsbF90aW1lb3V0CisKKwlUaGlzIGJvb3Qvc3lzZnMgcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBSQ1UtdGFza3Mgc3RhbGwgd2FybmluZworCWludGVydmFsLiAgQSB2YWx1ZSBvZiB6ZXJvIG9yIGxlc3Mgc3VwcHJlc3NlcyBSQ1UtdGFza3Mgc3RhbGwKKwl3YXJuaW5ncy4gIEEgcG9zaXRpdmUgdmFsdWUgc2V0cyB0aGUgc3RhbGwtd2FybmluZyBpbnRlcnZhbAorCWluIGppZmZpZXMuICBBbiBSQ1UtdGFza3Mgc3RhbGwgd2FybmluZyBzdGFydHMgd3RpaCB0aGUgbGluZToKKworCQlJTkZPOiByY3VfdGFza3MgZGV0ZWN0ZWQgc3RhbGxzIG9uIHRhc2tzOgorCisJQW5kIGNvbnRpbnVlcyB3aXRoIHRoZSBvdXRwdXQgb2Ygc2NoZWRfc2hvd190YXNrKCkgZm9yIGVhY2gKKwl0YXNrIHN0YWxsaW5nIHRoZSBjdXJyZW50IFJDVS10YXNrcyBncmFjZSBwZXJpb2QuCisKK0ZvciBub24tUkNVLXRhc2tzIGZsYXZvcnMgb2YgUkNVLCB3aGVuIGEgQ1BVIGRldGVjdHMgdGhhdCBpdCBpcyBzdGFsbGluZywKK2l0IHdpbGwgcHJpbnQgYSBtZXNzYWdlIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZzoKKworSU5GTzogcmN1X3NjaGVkX3N0YXRlIGRldGVjdGVkIHN0YWxsIG9uIENQVSA1ICh0PTI1MDAgamlmZmllcykKKworVGhpcyBtZXNzYWdlIGluZGljYXRlcyB0aGF0IENQVSA1IGRldGVjdGVkIHRoYXQgaXQgd2FzIGNhdXNpbmcgYSBzdGFsbCwKK2FuZCB0aGF0IHRoZSBzdGFsbCB3YXMgYWZmZWN0aW5nIFJDVS1zY2hlZC4gIFRoaXMgbWVzc2FnZSB3aWxsIG5vcm1hbGx5IGJlCitmb2xsb3dlZCBieSBhIHN0YWNrIGR1bXAgb2YgdGhlIG9mZmVuZGluZyBDUFUuICBPbiBUUkVFX1JDVSBrZXJuZWwgYnVpbGRzLAorUkNVIGFuZCBSQ1Utc2NoZWQgYXJlIGltcGxlbWVudGVkIGJ5IHRoZSBzYW1lIHVuZGVybHlpbmcgbWVjaGFuaXNtLAord2hpbGUgb24gUFJFRU1QVF9SQ1Uga2VybmVsIGJ1aWxkcywgUkNVIGlzIGluc3RlYWQgaW1wbGVtZW50ZWQKK2J5IHJjdV9wcmVlbXB0X3N0YXRlLgorCitPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIG9mZmVuZGluZyBDUFUgZmFpbHMgdG8gcHJpbnQgb3V0IGEgc3RhbGwtd2FybmluZworbWVzc2FnZSBxdWlja2x5IGVub3VnaCwgc29tZSBvdGhlciBDUFUgd2lsbCBwcmludCBhIG1lc3NhZ2Ugc2ltaWxhciB0bwordGhlIGZvbGxvd2luZzoKKworSU5GTzogcmN1X2JoX3N0YXRlIGRldGVjdGVkIHN0YWxscyBvbiBDUFVzL3Rhc2tzOiB7IDMgNSB9IChkZXRlY3RlZCBieSAyLCAyNTAyIGppZmZpZXMpCisKK1RoaXMgbWVzc2FnZSBpbmRpY2F0ZXMgdGhhdCBDUFUgMiBkZXRlY3RlZCB0aGF0IENQVXMgMyBhbmQgNSB3ZXJlIGJvdGgKK2NhdXNpbmcgc3RhbGxzLCBhbmQgdGhhdCB0aGUgc3RhbGwgd2FzIGFmZmVjdGluZyBSQ1UtYmguICBUaGlzIG1lc3NhZ2UKK3dpbGwgbm9ybWFsbHkgYmUgZm9sbG93ZWQgYnkgc3RhY2sgZHVtcHMgZm9yIGVhY2ggQ1BVLiAgUGxlYXNlIG5vdGUgdGhhdAorUFJFRU1QVF9SQ1UgYnVpbGRzIGNhbiBiZSBzdGFsbGVkIGJ5IHRhc2tzIGFzIHdlbGwgYXMgYnkgQ1BVcywKK2FuZCB0aGF0IHRoZSB0YXNrcyB3aWxsIGJlIGluZGljYXRlZCBieSBQSUQsIGZvciBleGFtcGxlLCAiUDM0MjEiLgorSXQgaXMgZXZlbiBwb3NzaWJsZSBmb3IgYSByY3VfcHJlZW1wdF9zdGF0ZSBzdGFsbCB0byBiZSBjYXVzZWQgYnkgYm90aAorQ1BVcyAtYW5kLSB0YXNrcywgaW4gd2hpY2ggY2FzZSB0aGUgb2ZmZW5kaW5nIENQVXMgYW5kIHRhc2tzIHdpbGwgYWxsCitiZSBjYWxsZWQgb3V0IGluIHRoZSBsaXN0LgorCitGaW5hbGx5LCBpZiB0aGUgZ3JhY2UgcGVyaW9kIGVuZHMganVzdCBhcyB0aGUgc3RhbGwgd2FybmluZyBzdGFydHMKK3ByaW50aW5nLCB0aGVyZSB3aWxsIGJlIGEgc3B1cmlvdXMgc3RhbGwtd2FybmluZyBtZXNzYWdlOgorCitJTkZPOiByY3VfYmhfc3RhdGUgZGV0ZWN0ZWQgc3RhbGxzIG9uIENQVXMvdGFza3M6IHsgfSAoZGV0ZWN0ZWQgYnkgNCwgMjUwMiBqaWZmaWVzKQorCitUaGlzIGlzIHJhcmUsIGJ1dCBkb2VzIGhhcHBlbiBmcm9tIHRpbWUgdG8gdGltZSBpbiByZWFsIGxpZmUuICBJdCBpcyBhbHNvCitwb3NzaWJsZSBmb3IgYSB6ZXJvLWppZmZ5IHN0YWxsIHRvIGJlIGZsYWdnZWQgaW4gdGhpcyBjYXNlLCBkZXBlbmRpbmcKK29uIGhvdyB0aGUgc3RhbGwgd2FybmluZyBhbmQgdGhlIGdyYWNlLXBlcmlvZCBpbml0aWFsaXphdGlvbiBoYXBwZW4gdG8KK2ludGVyYWN0LiAgUGxlYXNlIG5vdGUgdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gZW50aXJlbHkgZWxpbWluYXRlIHRoaXMKK3NvcnQgb2YgZmFsc2UgcG9zaXRpdmUgd2l0aG91dCByZXNvcnRpbmcgdG8gdGhpbmdzIGxpa2Ugc3RvcF9tYWNoaW5lKCksCit3aGljaCBpcyBvdmVya2lsbCBmb3IgdGhpcyBzb3J0IG9mIHByb2JsZW0uCisKK1JlY2VudCBrZXJuZWxzIHdpbGwgcHJpbnQgYSBsb25nIGZvcm0gb2YgdGhlIHN0YWxsLXdhcm5pbmcgbWVzc2FnZToKKworCUlORk86IHJjdV9wcmVlbXB0IGRldGVjdGVkIHN0YWxsIG9uIENQVQorCTA6ICg2Mzk1OSB0aWNrcyB0aGlzIEdQKSBpZGxlPTI0MS8zZmZmZmZmZmZmZmZmZmZmLzAgc29mdGlycT04Mi81NDMKKwkgICAodD02NTAwMCBqaWZmaWVzKQorCitJbiBrZXJuZWxzIHdpdGggQ09ORklHX1JDVV9GQVNUX05PX0haLCBtb3JlIGluZm9ybWF0aW9uIGlzIHByaW50ZWQ6CisKKwlJTkZPOiByY3VfcHJlZW1wdCBkZXRlY3RlZCBzdGFsbCBvbiBDUFUKKwkwOiAoNjQ2MjggdGlja3MgdGhpcyBHUCkgaWRsZT1kZDUvM2ZmZmZmZmZmZmZmZmZmZi8wIHNvZnRpcnE9ODIvNTQzIGxhc3RfYWNjZWxlcmF0ZTogYTM0NS9kMzQyIG5vbmxhenlfcG9zdGVkOiAyNSAuRAorCSAgICh0PTY1MDAwIGppZmZpZXMpCisKK1RoZSAiKDY0NjI4IHRpY2tzIHRoaXMgR1ApIiBpbmRpY2F0ZXMgdGhhdCB0aGlzIENQVSBoYXMgdGFrZW4gbW9yZQordGhhbiA2NCwwMDAgc2NoZWR1bGluZy1jbG9jayBpbnRlcnJ1cHRzIGR1cmluZyB0aGUgY3VycmVudCBzdGFsbGVkCitncmFjZSBwZXJpb2QuICBJZiB0aGUgQ1BVIHdhcyBub3QgeWV0IGF3YXJlIG9mIHRoZSBjdXJyZW50IGdyYWNlCitwZXJpb2QgKGZvciBleGFtcGxlLCBpZiBpdCB3YXMgb2ZmbGluZSksIHRoZW4gdGhpcyBwYXJ0IG9mIHRoZSBtZXNzYWdlCitpbmRpY2F0ZXMgaG93IG1hbnkgZ3JhY2UgcGVyaW9kcyBiZWhpbmQgdGhlIENQVSBpcy4KKworVGhlICJpZGxlPSIgcG9ydGlvbiBvZiB0aGUgbWVzc2FnZSBwcmludHMgdGhlIGR5bnRpY2staWRsZSBzdGF0ZS4KK1RoZSBoZXggbnVtYmVyIGJlZm9yZSB0aGUgZmlyc3QgIi8iIGlzIHRoZSBsb3ctb3JkZXIgMTIgYml0cyBvZiB0aGUKK2R5bnRpY2tzIGNvdW50ZXIsIHdoaWNoIHdpbGwgaGF2ZSBhbiBldmVuLW51bWJlcmVkIHZhbHVlIGlmIHRoZSBDUFUgaXMKK2luIGR5bnRpY2staWRsZSBtb2RlIGFuZCBhbiBvZGQtbnVtYmVyZWQgdmFsdWUgb3RoZXJ3aXNlLiAgVGhlIGhleAorbnVtYmVyIGJldHdlZW4gdGhlIHR3byAiLyJzIGlzIHRoZSB2YWx1ZSBvZiB0aGUgbmVzdGluZywgd2hpY2ggd2lsbAorYmUgYSBzbWFsbCBwb3NpdGl2ZSBudW1iZXIgaWYgaW4gdGhlIGlkbGUgbG9vcCBhbmQgYSB2ZXJ5IGxhcmdlIHBvc2l0aXZlCitudW1iZXIgKGFzIHNob3duIGFib3ZlKSBvdGhlcndpc2UuCisKK1RoZSAic29mdGlycT0iIHBvcnRpb24gb2YgdGhlIG1lc3NhZ2UgdHJhY2tzIHRoZSBudW1iZXIgb2YgUkNVIHNvZnRpcnEKK2hhbmRsZXJzIHRoYXQgdGhlIHN0YWxsZWQgQ1BVIGhhcyBleGVjdXRlZC4gIFRoZSBudW1iZXIgYmVmb3JlIHRoZSAiLyIKK2lzIHRoZSBudW1iZXIgdGhhdCBoYWQgZXhlY3V0ZWQgc2luY2UgYm9vdCBhdCB0aGUgdGltZSB0aGF0IHRoaXMgQ1BVCitsYXN0IG5vdGVkIHRoZSBiZWdpbm5pbmcgb2YgYSBncmFjZSBwZXJpb2QsIHdoaWNoIG1pZ2h0IGJlIHRoZSBjdXJyZW50Cisoc3RhbGxlZCkgZ3JhY2UgcGVyaW9kLCBvciBpdCBtaWdodCBiZSBzb21lIGVhcmxpZXIgZ3JhY2UgcGVyaW9kIChmb3IKK2V4YW1wbGUsIGlmIHRoZSBDUFUgbWlnaHQgaGF2ZSBiZWVuIGluIGR5bnRpY2staWRsZSBtb2RlIGZvciBhbiBleHRlbmRlZAordGltZSBwZXJpb2QuICBUaGUgbnVtYmVyIGFmdGVyIHRoZSAiLyIgaXMgdGhlIG51bWJlciB0aGF0IGhhdmUgZXhlY3V0ZWQKK3NpbmNlIGJvb3QgdW50aWwgdGhlIGN1cnJlbnQgdGltZS4gIElmIHRoaXMgbGF0dGVyIG51bWJlciBzdGF5cyBjb25zdGFudAorYWNyb3NzIHJlcGVhdGVkIHN0YWxsLXdhcm5pbmcgbWVzc2FnZXMsIGl0IGlzIHBvc3NpYmxlIHRoYXQgUkNVJ3Mgc29mdGlycQoraGFuZGxlcnMgYXJlIG5vIGxvbmdlciBhYmxlIHRvIGV4ZWN1dGUgb24gdGhpcyBDUFUuICBUaGlzIGNhbiBoYXBwZW4gaWYKK3RoZSBzdGFsbGVkIENQVSBpcyBzcGlubmluZyB3aXRoIGludGVycnVwdHMgYXJlIGRpc2FibGVkLCBvciwgaW4gLXJ0CitrZXJuZWxzLCBpZiBhIGhpZ2gtcHJpb3JpdHkgcHJvY2VzcyBpcyBzdGFydmluZyBSQ1UncyBzb2Z0aXJxIGhhbmRsZXIuCisKK0ZvciBDT05GSUdfUkNVX0ZBU1RfTk9fSFoga2VybmVscywgdGhlICJsYXN0X2FjY2VsZXJhdGU6IiBwcmludHMgdGhlCitsb3ctb3JkZXIgMTYgYml0cyAoaW4gaGV4KSBvZiB0aGUgamlmZmllcyBjb3VudGVyIHdoZW4gdGhpcyBDUFUgbGFzdAoraW52b2tlZCByY3VfdHJ5X2FkdmFuY2VfYWxsX2NicygpIGZyb20gcmN1X25lZWRzX2NwdSgpIG9yIGxhc3QgaW52b2tlZAorcmN1X2FjY2VsZXJhdGVfY2JzKCkgZnJvbSByY3VfcHJlcGFyZV9mb3JfaWRsZSgpLiAgVGhlICJub25sYXp5X3Bvc3RlZDoiCitwcmludHMgdGhlIG51bWJlciBvZiBub24tbGF6eSBjYWxsYmFja3MgcG9zdGVkIHNpbmNlIHRoZSBsYXN0IGNhbGwgdG8KK3JjdV9uZWVkc19jcHUoKS4gIEZpbmFsbHksIGFuICJMIiBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBhcmUgY3VycmVudGx5CitubyBub24tbGF6eSBjYWxsYmFja3MgKCIuIiBpcyBwcmludGVkIG90aGVyd2lzZSwgYXMgc2hvd24gYWJvdmUpIGFuZAorIkQiIGluZGljYXRlcyB0aGF0IGR5bnRpY2staWRsZSBwcm9jZXNzaW5nIGlzIGVuYWJsZWQgKCIuIiBpcyBwcmludGVkCitvdGhlcndpc2UsIGZvciBleGFtcGxlLCBpZiBkaXNhYmxlZCB2aWEgdGhlICJub2h6PSIga2VybmVsIGJvb3QgcGFyYW1ldGVyKS4KKworSWYgdGhlIHJlbGV2YW50IGdyYWNlLXBlcmlvZCBrdGhyZWFkIGhhcyBiZWVuIHVuYWJsZSB0byBydW4gcHJpb3IgdG8KK3RoZSBzdGFsbCB3YXJuaW5nLCB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgbGluZSBpcyBwcmludGVkOgorCisJcmN1X3ByZWVtcHQga3RocmVhZCBzdGFydmVkIGZvciAyMDIzIGppZmZpZXMhCisKK1N0YXJ2aW5nIHRoZSBncmFjZS1wZXJpb2Qga3RocmVhZHMgb2YgQ1BVIHRpbWUgY2FuIG9mIGNvdXJzZSByZXN1bHQgaW4KK1JDVSBDUFUgc3RhbGwgd2FybmluZ3MgZXZlbiB3aGVuIGFsbCBDUFVzIGFuZCB0YXNrcyBoYXZlIHBhc3NlZCB0aHJvdWdoCit0aGUgcmVxdWlyZWQgcXVpZXNjZW50IHN0YXRlcy4KKworCitNdWx0aXBsZSBXYXJuaW5ncyBGcm9tIE9uZSBTdGFsbAorCitJZiBhIHN0YWxsIGxhc3RzIGxvbmcgZW5vdWdoLCBtdWx0aXBsZSBzdGFsbC13YXJuaW5nIG1lc3NhZ2VzIHdpbGwgYmUKK3ByaW50ZWQgZm9yIGl0LiAgVGhlIHNlY29uZCBhbmQgc3Vic2VxdWVudCBtZXNzYWdlcyBhcmUgcHJpbnRlZCBhdAorbG9uZ2VyIGludGVydmFscywgc28gdGhhdCB0aGUgdGltZSBiZXR3ZWVuIChzYXkpIHRoZSBmaXJzdCBhbmQgc2Vjb25kCittZXNzYWdlIHdpbGwgYmUgYWJvdXQgdGhyZWUgdGltZXMgdGhlIGludGVydmFsIGJldHdlZW4gdGhlIGJlZ2lubmluZworb2YgdGhlIHN0YWxsIGFuZCB0aGUgZmlyc3QgbWVzc2FnZS4KKworCitTdGFsbCBXYXJuaW5ncyBmb3IgRXhwZWRpdGVkIEdyYWNlIFBlcmlvZHMKKworSWYgYW4gZXhwZWRpdGVkIGdyYWNlIHBlcmlvZCBkZXRlY3RzIGEgc3RhbGwsIGl0IHdpbGwgcGxhY2UgYSBtZXNzYWdlCitsaWtlIHRoZSBmb2xsb3dpbmcgaW4gZG1lc2c6CisKKwlJTkZPOiByY3Vfc2NoZWQgZGV0ZWN0ZWQgZXhwZWRpdGVkIHN0YWxscyBvbiBDUFVzOiB7IDEgMiA2IH0gMjYwMDkgamlmZmllcyBzOiAxMDQzCisKK1RoaXMgaW5kaWNhdGVzIHRoYXQgQ1BVcyAxLCAyLCBhbmQgNiBoYXZlIGZhaWxlZCB0byByZXNwb25kIHRvIGEKK3Jlc2NoZWR1bGUgSVBJLCB0aGF0IHRoZSBleHBlZGl0ZWQgZ3JhY2UgcGVyaW9kIGhhcyBiZWVuIGdvaW5nIG9uIGZvcgorMjYsMDA5IGppZmZpZXMsIGFuZCB0aGF0IHRoZSBleHBlZGl0ZWQgZ3JhY2UtcGVyaW9kIHNlcXVlbmNlIGNvdW50ZXIgaXMKKzEwNDMuICBUaGUgZmFjdCB0aGF0IHRoaXMgbGFzdCB2YWx1ZSBpcyBvZGQgaW5kaWNhdGVzIHRoYXQgYW4gZXhwZWRpdGVkCitncmFjZSBwZXJpb2QgaXMgaW4gZmxpZ2h0LgorCitJdCBpcyBlbnRpcmVseSBwb3NzaWJsZSB0byBzZWUgc3RhbGwgd2FybmluZ3MgZnJvbSBub3JtYWwgYW5kIGZyb20KK2V4cGVkaXRlZCBncmFjZSBwZXJpb2RzIGF0IGFib3V0IHRoZSBzYW1lIHRpbWUgZnJvbSB0aGUgc2FtZSBydW4uCisKKworV2hhdCBDYXVzZXMgUkNVIENQVSBTdGFsbCBXYXJuaW5ncz8KKworU28geW91ciBrZXJuZWwgcHJpbnRlZCBhbiBSQ1UgQ1BVIHN0YWxsIHdhcm5pbmcuICBUaGUgbmV4dCBxdWVzdGlvbiBpcworIldoYXQgY2F1c2VkIGl0PyIgIFRoZSBmb2xsb3dpbmcgcHJvYmxlbXMgY2FuIHJlc3VsdCBpbiBSQ1UgQ1BVIHN0YWxsCit3YXJuaW5nczoKKworbwlBIENQVSBsb29waW5nIGluIGFuIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbi4KKwkKK28JQSBDUFUgbG9vcGluZyB3aXRoIGludGVycnVwdHMgZGlzYWJsZWQuICBUaGlzIGNvbmRpdGlvbiBjYW4KKwlyZXN1bHQgaW4gUkNVLXNjaGVkIGFuZCBSQ1UtYmggc3RhbGxzLgorCitvCUEgQ1BVIGxvb3Bpbmcgd2l0aCBwcmVlbXB0aW9uIGRpc2FibGVkLiAgVGhpcyBjb25kaXRpb24gY2FuCisJcmVzdWx0IGluIFJDVS1zY2hlZCBzdGFsbHMgYW5kLCBpZiBrc29mdGlycWQgaXMgaW4gdXNlLCBSQ1UtYmgKKwlzdGFsbHMuCisKK28JQSBDUFUgbG9vcGluZyB3aXRoIGJvdHRvbSBoYWx2ZXMgZGlzYWJsZWQuICBUaGlzIGNvbmRpdGlvbiBjYW4KKwlyZXN1bHQgaW4gUkNVLXNjaGVkIGFuZCBSQ1UtYmggc3RhbGxzLgorCitvCUZvciAhQ09ORklHX1BSRUVNUFQga2VybmVscywgYSBDUFUgbG9vcGluZyBhbnl3aGVyZSBpbiB0aGUKKwlrZXJuZWwgd2l0aG91dCBpbnZva2luZyBzY2hlZHVsZSgpLiAgTm90ZSB0aGF0IGNvbmRfcmVzY2hlZCgpCisJZG9lcyBub3QgbmVjZXNzYXJpbHkgcHJldmVudCBSQ1UgQ1BVIHN0YWxsIHdhcm5pbmdzLiAgVGhlcmVmb3JlLAorCWlmIHRoZSBsb29waW5nIGluIHRoZSBrZXJuZWwgaXMgcmVhbGx5IGV4cGVjdGVkIGFuZCBkZXNpcmFibGUKKwliZWhhdmlvciwgeW91IG1pZ2h0IG5lZWQgdG8gcmVwbGFjZSBzb21lIG9mIHRoZSBjb25kX3Jlc2NoZWQoKQorCWNhbGxzIHdpdGggY2FsbHMgdG8gY29uZF9yZXNjaGVkX3JjdV9xcygpLgorCitvCUJvb3RpbmcgTGludXggdXNpbmcgYSBjb25zb2xlIGNvbm5lY3Rpb24gdGhhdCBpcyB0b28gc2xvdyB0bworCWtlZXAgdXAgd2l0aCB0aGUgYm9vdC10aW1lIGNvbnNvbGUtbWVzc2FnZSByYXRlLiAgRm9yIGV4YW1wbGUsCisJYSAxMTVLYmF1ZCBzZXJpYWwgY29uc29sZSBjYW4gYmUgLXdheS0gdG9vIHNsb3cgdG8ga2VlcCB1cAorCXdpdGggYm9vdC10aW1lIG1lc3NhZ2UgcmF0ZXMsIGFuZCB3aWxsIGZyZXF1ZW50bHkgcmVzdWx0IGluCisJUkNVIENQVSBzdGFsbCB3YXJuaW5nIG1lc3NhZ2VzLiAgRXNwZWNpYWxseSBpZiB5b3UgaGF2ZSBhZGRlZAorCWRlYnVnIHByaW50aygpcy4KKworbwlBbnl0aGluZyB0aGF0IHByZXZlbnRzIFJDVSdzIGdyYWNlLXBlcmlvZCBrdGhyZWFkcyBmcm9tIHJ1bm5pbmcuCisJVGhpcyBjYW4gcmVzdWx0IGluIHRoZSAiQWxsIFFTZXMgc2VlbiIgY29uc29sZS1sb2cgbWVzc2FnZS4KKwlUaGlzIG1lc3NhZ2Ugd2lsbCBpbmNsdWRlIGluZm9ybWF0aW9uIG9uIHdoZW4gdGhlIGt0aHJlYWQgbGFzdAorCXJhbiBhbmQgaG93IG9mdGVuIGl0IHNob3VsZCBiZSBleHBlY3RlZCB0byBydW4uCisKK28JQSBDUFUtYm91bmQgcmVhbC10aW1lIHRhc2sgaW4gYSBDT05GSUdfUFJFRU1QVCBrZXJuZWwsIHdoaWNoIG1pZ2h0CisJaGFwcGVuIHRvIHByZWVtcHQgYSBsb3ctcHJpb3JpdHkgdGFzayBpbiB0aGUgbWlkZGxlIG9mIGFuIFJDVQorCXJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9uLiAgIFRoaXMgaXMgZXNwZWNpYWxseSBkYW1hZ2luZyBpZgorCXRoYXQgbG93LXByaW9yaXR5IHRhc2sgaXMgbm90IHBlcm1pdHRlZCB0byBydW4gb24gYW55IG90aGVyIENQVSwKKwlpbiB3aGljaCBjYXNlIHRoZSBuZXh0IFJDVSBncmFjZSBwZXJpb2QgY2FuIG5ldmVyIGNvbXBsZXRlLCB3aGljaAorCXdpbGwgZXZlbnR1YWxseSBjYXVzZSB0aGUgc3lzdGVtIHRvIHJ1biBvdXQgb2YgbWVtb3J5IGFuZCBoYW5nLgorCVdoaWxlIHRoZSBzeXN0ZW0gaXMgaW4gdGhlIHByb2Nlc3Mgb2YgcnVubmluZyBpdHNlbGYgb3V0IG9mCisJbWVtb3J5LCB5b3UgbWlnaHQgc2VlIHN0YWxsLXdhcm5pbmcgbWVzc2FnZXMuCisKK28JQSBDUFUtYm91bmQgcmVhbC10aW1lIHRhc2sgaW4gYSBDT05GSUdfUFJFRU1QVF9SVCBrZXJuZWwgdGhhdAorCWlzIHJ1bm5pbmcgYXQgYSBoaWdoZXIgcHJpb3JpdHkgdGhhbiB0aGUgUkNVIHNvZnRpcnEgdGhyZWFkcy4KKwlUaGlzIHdpbGwgcHJldmVudCBSQ1UgY2FsbGJhY2tzIGZyb20gZXZlciBiZWluZyBpbnZva2VkLAorCWFuZCBpbiBhIENPTkZJR19QUkVFTVBUX1JDVSBrZXJuZWwgd2lsbCBmdXJ0aGVyIHByZXZlbnQKKwlSQ1UgZ3JhY2UgcGVyaW9kcyBmcm9tIGV2ZXIgY29tcGxldGluZy4gIEVpdGhlciB3YXksIHRoZQorCXN5c3RlbSB3aWxsIGV2ZW50dWFsbHkgcnVuIG91dCBvZiBtZW1vcnkgYW5kIGhhbmcuICBJbiB0aGUKKwlDT05GSUdfUFJFRU1QVF9SQ1UgY2FzZSwgeW91IG1pZ2h0IHNlZSBzdGFsbC13YXJuaW5nCisJbWVzc2FnZXMuCisKK28JQSBoYXJkd2FyZSBvciBzb2Z0d2FyZSBpc3N1ZSBzaHV0cyBvZmYgdGhlIHNjaGVkdWxlci1jbG9jaworCWludGVycnVwdCBvbiBhIENQVSB0aGF0IGlzIG5vdCBpbiBkeW50aWNrLWlkbGUgbW9kZS4gIFRoaXMKKwlwcm9ibGVtIHJlYWxseSBoYXMgaGFwcGVuZWQsIGFuZCBzZWVtcyB0byBiZSBtb3N0IGxpa2VseSB0bworCXJlc3VsdCBpbiBSQ1UgQ1BVIHN0YWxsIHdhcm5pbmdzIGZvciBDT05GSUdfTk9fSFpfQ09NTU9OPW4ga2VybmVscy4KKworbwlBIGJ1ZyBpbiB0aGUgUkNVIGltcGxlbWVudGF0aW9uLgorCitvCUEgaGFyZHdhcmUgZmFpbHVyZS4gIFRoaXMgaXMgcXVpdGUgdW5saWtlbHksIGJ1dCBoYXMgb2NjdXJyZWQKKwlhdCBsZWFzdCBvbmNlIGluIHJlYWwgbGlmZS4gIEEgQ1BVIGZhaWxlZCBpbiBhIHJ1bm5pbmcgc3lzdGVtLAorCWJlY29taW5nIHVucmVzcG9uc2l2ZSwgYnV0IG5vdCBjYXVzaW5nIGFuIGltbWVkaWF0ZSBjcmFzaC4KKwlUaGlzIHJlc3VsdGVkIGluIGEgc2VyaWVzIG9mIFJDVSBDUFUgc3RhbGwgd2FybmluZ3MsIGV2ZW50dWFsbHkKKwlsZWFkaW5nIHRoZSByZWFsaXphdGlvbiB0aGF0IHRoZSBDUFUgaGFkIGZhaWxlZC4KKworVGhlIFJDVSwgUkNVLXNjaGVkLCBSQ1UtYmgsIGFuZCBSQ1UtdGFza3MgaW1wbGVtZW50YXRpb25zIGhhdmUgQ1BVIHN0YWxsCit3YXJuaW5nLiAgTm90ZSB0aGF0IFNSQ1UgZG9lcyAtbm90LSBoYXZlIENQVSBzdGFsbCB3YXJuaW5ncy4gIFBsZWFzZSBub3RlCit0aGF0IFJDVSBvbmx5IGRldGVjdHMgQ1BVIHN0YWxscyB3aGVuIHRoZXJlIGlzIGEgZ3JhY2UgcGVyaW9kIGluIHByb2dyZXNzLgorTm8gZ3JhY2UgcGVyaW9kLCBubyBDUFUgc3RhbGwgd2FybmluZ3MuCisKK1RvIGRpYWdub3NlIHRoZSBjYXVzZSBvZiB0aGUgc3RhbGwsIGluc3BlY3QgdGhlIHN0YWNrIHRyYWNlcy4KK1RoZSBvZmZlbmRpbmcgZnVuY3Rpb24gd2lsbCB1c3VhbGx5IGJlIG5lYXIgdGhlIHRvcCBvZiB0aGUgc3RhY2suCitJZiB5b3UgaGF2ZSBhIHNlcmllcyBvZiBzdGFsbCB3YXJuaW5ncyBmcm9tIGEgc2luZ2xlIGV4dGVuZGVkIHN0YWxsLAorY29tcGFyaW5nIHRoZSBzdGFjayB0cmFjZXMgY2FuIG9mdGVuIGhlbHAgZGV0ZXJtaW5lIHdoZXJlIHRoZSBzdGFsbAoraXMgb2NjdXJyaW5nLCB3aGljaCB3aWxsIHVzdWFsbHkgYmUgaW4gdGhlIGZ1bmN0aW9uIG5lYXJlc3QgdGhlIHRvcCBvZgordGhhdCBwb3J0aW9uIG9mIHRoZSBzdGFjayB3aGljaCByZW1haW5zIHRoZSBzYW1lIGZyb20gdHJhY2UgdG8gdHJhY2UuCitJZiB5b3UgY2FuIHJlbGlhYmx5IHRyaWdnZXIgdGhlIHN0YWxsLCBmdHJhY2UgY2FuIGJlIHF1aXRlIGhlbHBmdWwuCisKK1JDVSBidWdzIGNhbiBvZnRlbiBiZSBkZWJ1Z2dlZCB3aXRoIHRoZSBoZWxwIG9mIENPTkZJR19SQ1VfVFJBQ0UKK2FuZCB3aXRoIFJDVSdzIGV2ZW50IHRyYWNpbmcuICBGb3IgaW5mb3JtYXRpb24gb24gUkNVJ3MgZXZlbnQgdHJhY2luZywKK3NlZSBpbmNsdWRlL3RyYWNlL2V2ZW50cy9yY3UuaC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUkNVL3RvcnR1cmUudHh0IGIvRG9jdW1lbnRhdGlvbi9SQ1UvdG9ydHVyZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE4ZTdjMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUkNVL3RvcnR1cmUudHh0CkBAIC0wLDAgKzEsMzIxIEBACitSQ1UgVG9ydHVyZSBUZXN0IE9wZXJhdGlvbgorCisKK0NPTkZJR19SQ1VfVE9SVFVSRV9URVNUCisKK1RoZSBDT05GSUdfUkNVX1RPUlRVUkVfVEVTVCBjb25maWcgb3B0aW9uIGlzIGF2YWlsYWJsZSBmb3IgYWxsIFJDVQoraW1wbGVtZW50YXRpb25zLiAgSXQgY3JlYXRlcyBhbiByY3V0b3J0dXJlIGtlcm5lbCBtb2R1bGUgdGhhdCBjYW4KK2JlIGxvYWRlZCB0byBydW4gYSB0b3J0dXJlIHRlc3QuICBUaGUgdGVzdCBwZXJpb2RpY2FsbHkgb3V0cHV0cworc3RhdHVzIG1lc3NhZ2VzIHZpYSBwcmludGsoKSwgd2hpY2ggY2FuIGJlIGV4YW1pbmVkIHZpYSB0aGUgZG1lc2cKK2NvbW1hbmQgKHBlcmhhcHMgZ3JlcHBpbmcgZm9yICJ0b3J0dXJlIikuICBUaGUgdGVzdCBpcyBzdGFydGVkCit3aGVuIHRoZSBtb2R1bGUgaXMgbG9hZGVkLCBhbmQgc3RvcHMgd2hlbiB0aGUgbW9kdWxlIGlzIHVubG9hZGVkLgorCitDT05GSUdfUkNVX1RPUlRVUkVfVEVTVF9SVU5OQUJMRQorCitJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHNwZWNpZnkgQ09ORklHX1JDVV9UT1JUVVJFX1RFU1Q9eSwgd2hpY2ggd2lsbAorcmVzdWx0IGluIHRoZSB0ZXN0cyBiZWluZyBsb2FkZWQgaW50byB0aGUgYmFzZSBrZXJuZWwuICBJbiB0aGlzIGNhc2UsCit0aGUgQ09ORklHX1JDVV9UT1JUVVJFX1RFU1RfUlVOTkFCTEUgY29uZmlnIG9wdGlvbiBpcyB1c2VkIHRvIHNwZWNpZnkKK3doZXRoZXIgdGhlIFJDVSB0b3J0dXJlIHRlc3RzIGFyZSB0byBiZSBzdGFydGVkIGltbWVkaWF0ZWx5IGR1cmluZworYm9vdCBvciB3aGV0aGVyIHRoZSAvcHJvYy9zeXMva2VybmVsL3JjdXRvcnR1cmVfcnVubmFibGUgZmlsZSBpcyB1c2VkCit0byBlbmFibGUgdGhlbS4gIFRoaXMgL3Byb2MgZmlsZSBjYW4gYmUgdXNlZCB0byByZXBlYXRlZGx5IHBhdXNlIGFuZAorcmVzdGFydCB0aGUgdGVzdHMsIHJlZ2FyZGxlc3Mgb2YgdGhlIGluaXRpYWwgc3RhdGUgc3BlY2lmaWVkIGJ5IHRoZQorQ09ORklHX1JDVV9UT1JUVVJFX1RFU1RfUlVOTkFCTEUgY29uZmlnIG9wdGlvbi4KKworWW91IHdpbGwgbm9ybWFsbHkgLW5vdC0gd2FudCB0byBzdGFydCB0aGUgUkNVIHRvcnR1cmUgdGVzdHMgZHVyaW5nIGJvb3QKKyhhbmQgdGh1cyB0aGUgZGVmYXVsdCBpcyBDT05GSUdfUkNVX1RPUlRVUkVfVEVTVF9SVU5OQUJMRT1uKSwgYnV0IGRvaW5nCit0aGlzIGNhbiBzb21ldGltZXMgYmUgdXNlZnVsIGluIGZpbmRpbmcgYm9vdC10aW1lIGJ1Z3MuCisKKworTU9EVUxFIFBBUkFNRVRFUlMKKworVGhpcyBtb2R1bGUgaGFzIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczoKKworZnFzX2R1cmF0aW9uCUR1cmF0aW9uIChpbiBtaWNyb3NlY29uZHMpIG9mIGFydGlmaWNpYWxseSBpbmR1Y2VkIGJ1cnN0cworCQlvZiBmb3JjZV9xdWllc2NlbnRfc3RhdGUoKSBpbnZvY2F0aW9ucy4gIEluIFJDVQorCQlpbXBsZW1lbnRhdGlvbnMgaGF2aW5nIGZvcmNlX3F1aWVzY2VudF9zdGF0ZSgpLCB0aGVzZQorCQlidXJzdHMgaGVscCBmb3JjZSByYWNlcyBiZXR3ZWVuIGZvcmNpbmcgYSBnaXZlbiBncmFjZQorCQlwZXJpb2QgYW5kIHRoYXQgZ3JhY2UgcGVyaW9kIGVuZGluZyBvbiBpdHMgb3duLgorCitmcXNfaG9sZG9mZglIb2xkb2ZmIHRpbWUgKGluIG1pY3Jvc2Vjb25kcykgYmV0d2VlbiBjb25zZWN1dGl2ZSBjYWxscworCQl0byBmb3JjZV9xdWllc2NlbnRfc3RhdGUoKSB3aXRoaW4gYSBidXJzdC4KKworZnFzX3N0dXR0ZXIJV2FpdCB0aW1lIChpbiBzZWNvbmRzKSBiZXR3ZWVuIGNvbnNlY3V0aXZlIGJ1cnN0cworCQlvZiBjYWxscyB0byBmb3JjZV9xdWllc2NlbnRfc3RhdGUoKS4KKworZ3Bfbm9ybWFsCU1ha2UgdGhlIGZha2Ugd3JpdGVycyB1c2Ugbm9ybWFsIHN5bmNocm9ub3VzIGdyYWNlLXBlcmlvZAorCQlwcmltaXRpdmVzLgorCitncF9leHAJCU1ha2UgdGhlIGZha2Ugd3JpdGVycyB1c2UgZXhwZWRpdGVkIHN5bmNocm9ub3VzIGdyYWNlLXBlcmlvZAorCQlwcmltaXRpdmVzLiAgSWYgYm90aCBncF9ub3JtYWwgYW5kIGdwX2V4cCBhcmUgc2V0LCBvcgorCQlpZiBuZWl0aGVyIGdwX25vcm1hbCBub3IgZ3BfZXhwIGFyZSBzZXQsIHRoZW4gcmFuZG9tbHkKKwkJY2hvb3NlIHRoZSBwcmltaXRpdmUgc28gdGhhdCBhYm91dCA1MCUgYXJlIG5vcm1hbCBhbmQKKwkJNTAlIGV4cGVkaXRlZC4gIEJ5IGRlZmF1bHQsIG5laXRoZXIgYXJlIHNldCwgd2hpY2gKKwkJZ2l2ZXMgYmVzdCBvdmVyYWxsIHRlc3QgY292ZXJhZ2UuCisKK2lycXJlYWRlcglTYXlzIHRvIGludm9rZSBSQ1UgcmVhZGVycyBmcm9tIGlycSBsZXZlbC4gIFRoaXMgaXMgY3VycmVudGx5CisJCWRvbmUgdmlhIHRpbWVycy4gIERlZmF1bHRzIHRvICIxIiBmb3IgdmFyaWFudHMgb2YgUkNVIHRoYXQKKwkJcGVybWl0IHRoaXMuICAoT3IsIG1vcmUgYWNjdXJhdGVseSwgdmFyaWFudHMgb2YgUkNVIHRoYXQgZG8KKwkJLW5vdC0gcGVybWl0IHRoaXMga25vdyB0byBpZ25vcmUgdGhpcyB2YXJpYWJsZS4pCisKK25fYmFycmllcl9jYnMJSWYgdGhpcyBpcyBub256ZXJvLCBSQ1UgYmFycmllciB0ZXN0aW5nIHdpbGwgYmUgY29uZHVjdGVkLAorCQlpbiB3aGljaCBjYXNlIG5fYmFycmllcl9jYnMgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YKKwkJUkNVIGNhbGxiYWNrcyAoYW5kIGNvcnJlc3BvbmRpbmcga3RocmVhZHMpIHRvIHVzZSBmb3IKKwkJdGhpcyB0ZXN0aW5nLiAgVGhlIHZhbHVlIGNhbm5vdCBiZSBuZWdhdGl2ZS4gIElmIHlvdQorCQlzcGVjaWZ5IHRoaXMgdG8gYmUgbm9uLXplcm8gd2hlbiB0b3J0dXJlX3R5cGUgaW5kaWNhdGVzIGEKKwkJc3luY2hyb25vdXMgUkNVIGltcGxlbWVudGF0aW9uIChvbmUgZm9yIHdoaWNoIGEgbWVtYmVyIG9mCisJCXRoZSBzeW5jaHJvbml6ZV9yY3UoKSByYXRoZXIgdGhhbiB0aGUgY2FsbF9yY3UoKSBmYW1pbHkgaXMKKwkJdXNlZCAtLSBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRvcnR1cmVfdHlwZSBiZWxvdyksIGFuCisJCWVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYW5kIG5vIHRlc3Rpbmcgd2lsbCBiZSBjYXJyaWVkIG91dC4KKworbmZha2V3cml0ZXJzCVRoaXMgaXMgdGhlIG51bWJlciBvZiBSQ1UgZmFrZSB3cml0ZXIgdGhyZWFkcyB0byBydW4uICBGYWtlCisJCXdyaXRlciB0aHJlYWRzIHJlcGVhdGVkbHkgdXNlIHRoZSBzeW5jaHJvbm91cyAid2FpdCBmb3IKKwkJY3VycmVudCByZWFkZXJzIiBmdW5jdGlvbiBvZiB0aGUgaW50ZXJmYWNlIHNlbGVjdGVkIGJ5CisJCXRvcnR1cmVfdHlwZSwgd2l0aCBhIGRlbGF5IGJldHdlZW4gY2FsbHMgdG8gYWxsb3cgZm9yIHZhcmlvdXMKKwkJZGlmZmVyZW50IG51bWJlcnMgb2Ygd3JpdGVycyBydW5uaW5nIGluIHBhcmFsbGVsLgorCQluZmFrZXdyaXRlcnMgZGVmYXVsdHMgdG8gNCwgd2hpY2ggcHJvdmlkZXMgZW5vdWdoIHBhcmFsbGVsaXNtCisJCXRvIHRyaWdnZXIgc3BlY2lhbCBjYXNlcyBjYXVzZWQgYnkgbXVsdGlwbGUgd3JpdGVycywgc3VjaCBhcworCQl0aGUgc3luY2hyb25pemVfc3JjdSgpIGVhcmx5IHJldHVybiBvcHRpbWl6YXRpb24uCisKK25yZWFkZXJzCVRoaXMgaXMgdGhlIG51bWJlciBvZiBSQ1UgcmVhZGluZyB0aHJlYWRzIHN1cHBvcnRlZC4KKwkJVGhlIGRlZmF1bHQgaXMgdHdpY2UgdGhlIG51bWJlciBvZiBDUFVzLiAgV2h5IHR3aWNlPworCQlUbyBwcm9wZXJseSBleGVyY2lzZSBSQ1UgaW1wbGVtZW50YXRpb25zIHdpdGggcHJlZW1wdGlibGUKKwkJcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb25zLgorCitvbm9mZl9pbnRlcnZhbAorCQlUaGUgbnVtYmVyIG9mIHNlY29uZHMgYmV0d2VlbiBlYWNoIGF0dGVtcHQgdG8gZXhlY3V0ZSBhCisJCXJhbmRvbWx5IHNlbGVjdGVkIENQVS1ob3RwbHVnIG9wZXJhdGlvbi4gIERlZmF1bHRzIHRvCisJCXplcm8sIHdoaWNoIGRpc2FibGVzIENQVSBob3RwbHVnZ2luZy4gIEluIEhPVFBMVUdfQ1BVPW4KKwkJa2VybmVscywgcmN1dG9ydHVyZSB3aWxsIHNpbGVudGx5IHJlZnVzZSB0byBkbyBhbnkKKwkJQ1BVLWhvdHBsdWcgb3BlcmF0aW9ucyByZWdhcmRsZXNzIG9mIHdoYXQgdmFsdWUgaXMKKwkJc3BlY2lmaWVkIGZvciBvbm9mZl9pbnRlcnZhbC4KKworb25vZmZfaG9sZG9mZglUaGUgbnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCB1bnRpbCBzdGFydGluZyBDUFUtaG90cGx1ZworCQlvcGVyYXRpb25zLiAgVGhpcyB3b3VsZCBub3JtYWxseSBvbmx5IGJlIHVzZWQgd2hlbgorCQlyY3V0b3J0dXJlIHdhcyBidWlsdCBpbnRvIHRoZSBrZXJuZWwgYW5kIHN0YXJ0ZWQKKwkJYXV0b21hdGljYWxseSBhdCBib290IHRpbWUsIGluIHdoaWNoIGNhc2UgaXQgaXMgdXNlZnVsCisJCWluIG9yZGVyIHRvIGF2b2lkIGNvbmZ1c2luZyBib290LXRpbWUgY29kZSB3aXRoIENQVXMKKwkJY29taW5nIGFuZCBnb2luZy4KKworc2h1ZmZsZV9pbnRlcnZhbAorCQlUaGUgbnVtYmVyIG9mIHNlY29uZHMgdG8ga2VlcCB0aGUgdGVzdCB0aHJlYWRzIGFmZmluaXRpZWQKKwkJdG8gYSBwYXJ0aWN1bGFyIHN1YnNldCBvZiB0aGUgQ1BVcywgZGVmYXVsdHMgdG8gMyBzZWNvbmRzLgorCQlVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGVzdF9ub19pZGxlX2h6LgorCitzaHV0ZG93bl9zZWNzCVRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0byBydW4gdGhlIHRlc3QgYmVmb3JlIHRlcm1pbmF0aW5nCisJCXRoZSB0ZXN0IGFuZCBwb3dlcmluZyBvZmYgdGhlIHN5c3RlbS4gIFRoZSBkZWZhdWx0IGlzCisJCXplcm8sIHdoaWNoIGRpc2FibGVzIHRlc3QgdGVybWluYXRpb24gYW5kIHN5c3RlbSBzaHV0ZG93bi4KKwkJVGhpcyBjYXBhYmlsaXR5IGlzIHVzZWZ1bCBmb3IgYXV0b21hdGVkIHRlc3RpbmcuCisKK3N0YWxsX2NwdQlUaGUgbnVtYmVyIG9mIHNlY29uZHMgdGhhdCBhIENQVSBzaG91bGQgYmUgc3RhbGxlZCB3aGlsZQorCQl3aXRoaW4gYm90aCBhbiByY3VfcmVhZF9sb2NrKCkgYW5kIGEgcHJlZW1wdF9kaXNhYmxlKCkuCisJCVRoaXMgc3RhbGwgaGFwcGVucyBvbmx5IG9uY2UgcGVyIHJjdXRvcnR1cmUgcnVuLgorCQlJZiB5b3UgbmVlZCBtdWx0aXBsZSBzdGFsbHMsIHVzZSBtb2Rwcm9iZSBhbmQgcm1tb2QgdG8KKwkJcmVwZWF0ZWRseSBydW4gcmN1dG9ydHVyZS4gIFRoZSBkZWZhdWx0IGZvciBzdGFsbF9jcHUKKwkJaXMgemVybywgd2hpY2ggcHJldmVudHMgcmN1dG9ydHVyZSBmcm9tIHN0YWxsaW5nIGEgQ1BVLgorCisJCU5vdGUgdGhhdCBhdHRlbXB0cyB0byBybW1vZCByY3V0b3J0dXJlIHdoaWxlIHRoZSBzdGFsbAorCQlpcyBvbmdvaW5nIHdpbGwgaGFuZywgc28gYmUgY2FyZWZ1bCB3aGF0IHZhbHVlIHlvdQorCQljaG9vc2UgZm9yIHRoaXMgbW9kdWxlIHBhcmFtZXRlciEgIEluIGFkZGl0aW9uLCB0b28tbGFyZ2UKKwkJdmFsdWVzIGZvciBzdGFsbF9jcHUgbWlnaHQgd2VsbCBpbmR1Y2UgZmFpbHVyZXMgYW5kCisJCXdhcm5pbmdzIGluIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwuICBZb3UgaGF2ZSBiZWVuCisJCXdhcm5lZCEKKworc3RhbGxfY3B1X2hvbGRvZmYKKwkJVGhlIG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQgYWZ0ZXIgcmN1dG9ydHVyZSBzdGFydHMKKwkJYmVmb3JlIHN0YWxsaW5nIGEgQ1BVLiAgRGVmYXVsdHMgdG8gMTAgc2Vjb25kcy4KKworc3RhdF9pbnRlcnZhbAlUaGUgbnVtYmVyIG9mIHNlY29uZHMgYmV0d2VlbiBvdXRwdXQgb2YgdG9ydHVyZQorCQlzdGF0aXN0aWNzICh2aWEgcHJpbnRrKCkpLiAgUmVnYXJkbGVzcyBvZiB0aGUgaW50ZXJ2YWwsCisJCXN0YXRpc3RpY3MgYXJlIHByaW50ZWQgd2hlbiB0aGUgbW9kdWxlIGlzIHVubG9hZGVkLgorCQlTZXR0aW5nIHRoZSBpbnRlcnZhbCB0byB6ZXJvIGNhdXNlcyB0aGUgc3RhdGlzdGljcyB0bworCQliZSBwcmludGVkIC1vbmx5LSB3aGVuIHRoZSBtb2R1bGUgaXMgdW5sb2FkZWQsIGFuZCB0aGlzCisJCWlzIHRoZSBkZWZhdWx0LgorCitzdHV0dGVyCQlUaGUgbGVuZ3RoIG9mIHRpbWUgdG8gcnVuIHRoZSB0ZXN0IGJlZm9yZSBwYXVzaW5nIGZvciB0aGlzCisJCXNhbWUgcGVyaW9kIG9mIHRpbWUuICBEZWZhdWx0cyB0byAic3R1dHRlcj01Iiwgc28gYXMKKwkJdG8gcnVuIGFuZCBwYXVzZSBmb3IgKHJvdWdobHkpIGZpdmUtc2Vjb25kIGludGVydmFscy4KKwkJU3BlY2lmeWluZyAic3R1dHRlcj0wIiBjYXVzZXMgdGhlIHRlc3QgdG8gcnVuIGNvbnRpbnVvdXNseQorCQl3aXRob3V0IHBhdXNpbmcsIHdoaWNoIGlzIHRoZSBvbGQgZGVmYXVsdCBiZWhhdmlvci4KKwordGVzdF9ib29zdAlXaGV0aGVyIG9yIG5vdCB0byB0ZXN0IHRoZSBhYmlsaXR5IG9mIFJDVSB0byBkbyBwcmlvcml0eQorCQlib29zdGluZy4gIERlZmF1bHRzIHRvICJ0ZXN0X2Jvb3N0PTEiLCB3aGljaCBwZXJmb3JtcworCQlSQ1UgcHJpb3JpdHktaW52ZXJzaW9uIHRlc3Rpbmcgb25seSBpZiB0aGUgc2VsZWN0ZWQKKwkJUkNVIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIHByaW9yaXR5IGJvb3N0aW5nLiAgU3BlY2lmeWluZworCQkidGVzdF9ib29zdD0wIiBuZXZlciBwZXJmb3JtcyBSQ1UgcHJpb3JpdHktaW52ZXJzaW9uCisJCXRlc3RpbmcuICBTcGVjaWZ5aW5nICJ0ZXN0X2Jvb3N0PTIiIHBlcmZvcm1zIFJDVQorCQlwcmlvcml0eS1pbnZlcnNpb24gdGVzdGluZyBldmVuIGlmIHRoZSBzZWxlY3RlZCBSQ1UKKwkJaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBSQ1UgcHJpb3JpdHkgYm9vc3RpbmcsCisJCXdoaWNoIGNhbiBiZSB1c2VkIHRvIHRlc3QgcmN1dG9ydHVyZSdzIGFiaWxpdHkgdG8KKwkJY2Fycnkgb3V0IFJDVSBwcmlvcml0eS1pbnZlcnNpb24gdGVzdGluZy4KKwordGVzdF9ib29zdF9pbnRlcnZhbAorCQlUaGUgbnVtYmVyIG9mIHNlY29uZHMgaW4gYW4gUkNVIHByaW9yaXR5LWludmVyc2lvbiB0ZXN0CisJCWN5Y2xlLglEZWZhdWx0cyB0byAidGVzdF9ib29zdF9pbnRlcnZhbD03Ii4gIEl0IGlzCisJCXVzdWFsbHkgd2lzZSBmb3IgdGhpcyB2YWx1ZSB0byBiZSByZWxhdGl2ZWx5IHByaW1lIHRvCisJCXRoZSB2YWx1ZSBzZWxlY3RlZCBmb3IgInN0dXR0ZXIiLgorCit0ZXN0X2Jvb3N0X2R1cmF0aW9uCisJCVRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0byBkbyBSQ1UgcHJpb3JpdHktaW52ZXJzaW9uIHRlc3RpbmcKKwkJd2l0aGluIGFueSBnaXZlbiAidGVzdF9ib29zdF9pbnRlcnZhbCIuICBEZWZhdWx0cyB0bworCQkidGVzdF9ib29zdF9kdXJhdGlvbj00Ii4KKwordGVzdF9ub19pZGxlX2h6CVdoZXRoZXIgb3Igbm90IHRvIHRlc3QgdGhlIGFiaWxpdHkgb2YgUkNVIHRvIG9wZXJhdGUgaW4KKwkJYSBrZXJuZWwgdGhhdCBkaXNhYmxlcyB0aGUgc2NoZWR1bGluZy1jbG9jayBpbnRlcnJ1cHQgdG8KKwkJaWRsZSBDUFVzLiAgQm9vbGVhbiBwYXJhbWV0ZXIsICIxIiB0byB0ZXN0LCAiMCIgb3RoZXJ3aXNlLgorCQlEZWZhdWx0cyB0byBvbWl0dGluZyB0aGlzIHRlc3QuCisKK3RvcnR1cmVfdHlwZQlUaGUgdHlwZSBvZiBSQ1UgdG8gdGVzdCwgd2l0aCBzdHJpbmcgdmFsdWVzIGFzIGZvbGxvd3M6CisKKwkJInJjdSI6ICByY3VfcmVhZF9sb2NrKCksIHJjdV9yZWFkX3VubG9jaygpIGFuZCBjYWxsX3JjdSgpLAorCQkJYWxvbmcgd2l0aCBleHBlZGl0ZWQsIHN5bmNocm9ub3VzLCBhbmQgcG9sbGluZworCQkJdmFyaWFudHMuCisKKwkJInJjdV9iaCI6IHJjdV9yZWFkX2xvY2tfYmgoKSwgcmN1X3JlYWRfdW5sb2NrX2JoKCksIGFuZAorCQkJY2FsbF9yY3VfYmgoKSwgYWxvbmcgd2l0aCBleHBlZGl0ZWQgYW5kIHN5bmNocm9ub3VzCisJCQl2YXJpYW50cy4KKworCQkicmN1X2J1c3RlZCI6IFRoaXMgdGVzdHMgYW4gaW50ZW50aW9uYWxseSBpbmNvcnJlY3QgdmVyc2lvbgorCQkJb2YgUkNVIGluIG9yZGVyIHRvIGhlbHAgdGVzdCByY3V0b3J0dXJlIGl0c2VsZi4KKworCQkic3JjdSI6IHNyY3VfcmVhZF9sb2NrKCksIHNyY3VfcmVhZF91bmxvY2soKSBhbmQKKwkJCWNhbGxfc3JjdSgpLCBhbG9uZyB3aXRoIGV4cGVkaXRlZCBhbmQKKwkJCXN5bmNocm9ub3VzIHZhcmlhbnRzLgorCisJCSJzY2hlZCI6IHByZWVtcHRfZGlzYWJsZSgpLCBwcmVlbXB0X2VuYWJsZSgpLCBhbmQKKwkJCWNhbGxfcmN1X3NjaGVkKCksIGFsb25nIHdpdGggZXhwZWRpdGVkLAorCQkJc3luY2hyb25vdXMsIGFuZCBwb2xsaW5nIHZhcmlhbnRzLgorCisJCSJ0YXNrcyI6IHZvbHVudGFyeSBjb250ZXh0IHN3aXRjaCBhbmQgY2FsbF9yY3VfdGFza3MoKSwKKwkJCWFsb25nIHdpdGggZXhwZWRpdGVkIGFuZCBzeW5jaHJvbm91cyB2YXJpYW50cy4KKworCQlEZWZhdWx0cyB0byAicmN1Ii4KKwordmVyYm9zZQkJRW5hYmxlIGRlYnVnIHByaW50aygpcy4gIERlZmF1bHQgaXMgZGlzYWJsZWQuCisKKworT1VUUFVUCisKK1RoZSBzdGF0aXN0aWNzIG91dHB1dCBpcyBhcyBmb2xsb3dzOgorCisJcmN1LXRvcnR1cmU6LS0tIFN0YXJ0IG9mIHRlc3Q6IG5yZWFkZXJzPTE2IG5mYWtld3JpdGVycz00IHN0YXRfaW50ZXJ2YWw9MzAgdmVyYm9zZT0wIHRlc3Rfbm9faWRsZV9oej0xIHNodWZmbGVfaW50ZXJ2YWw9MyBzdHV0dGVyPTUgaXJxcmVhZGVyPTEgZnFzX2R1cmF0aW9uPTAgZnFzX2hvbGRvZmY9MCBmcXNfc3R1dHRlcj0zIHRlc3RfYm9vc3Q9MS8wIHRlc3RfYm9vc3RfaW50ZXJ2YWw9NyB0ZXN0X2Jvb3N0X2R1cmF0aW9uPTQKKwlyY3UtdG9ydHVyZTogcnRjOiAgICAgICAgICAgKG51bGwpIHZlcjogMTU1NDQxIHRmbGU6IDAgcnRhOiAxNTU0NDEgcnRhZjogODg4NCBydGY6IDE1NTQ0MCBydG1iZTogMCBydGJlOiAwIHJ0YmtlOiAwIHJ0YnJlOiAwIHJ0YmY6IDAgcnRiOiAwIG50OiAzMDU1NzY3CisJcmN1LXRvcnR1cmU6IFJlYWRlciBQaXBlOiAgNzI3ODYwNTM0IDM0MjEzIDAgMCAwIDAgMCAwIDAgMCAwCisJcmN1LXRvcnR1cmU6IFJlYWRlciBCYXRjaDogIDcyNzg3NzgzOCAxNzAwMyAwIDAgMCAwIDAgMCAwIDAgMAorCXJjdS10b3J0dXJlOiBGcmVlLUJsb2NrIENpcmN1bGF0aW9uOiAgMTU1NDQwIDE1NTQ0MCAxNTU0NDAgMTU1NDQwIDE1NTQ0MCAxNTU0NDAgMTU1NDQwIDE1NTQ0MCAxNTU0NDAgMTU1NDQwIDAKKwlyY3UtdG9ydHVyZTotLS0gRW5kIG9mIHRlc3Q6IFNVQ0NFU1M6IG5yZWFkZXJzPTE2IG5mYWtld3JpdGVycz00IHN0YXRfaW50ZXJ2YWw9MzAgdmVyYm9zZT0wIHRlc3Rfbm9faWRsZV9oej0xIHNodWZmbGVfaW50ZXJ2YWw9MyBzdHV0dGVyPTUgaXJxcmVhZGVyPTEgZnFzX2R1cmF0aW9uPTAgZnFzX2hvbGRvZmY9MCBmcXNfc3R1dHRlcj0zIHRlc3RfYm9vc3Q9MS8wIHRlc3RfYm9vc3RfaW50ZXJ2YWw9NyB0ZXN0X2Jvb3N0X2R1cmF0aW9uPTQKKworVGhlIGNvbW1hbmQgImRtZXNnIHwgZ3JlcCB0b3J0dXJlOiIgd2lsbCBleHRyYWN0IHRoaXMgaW5mb3JtYXRpb24gb24KK21vc3Qgc3lzdGVtcy4gIE9uIG1vcmUgZXNvdGVyaWMgY29uZmlndXJhdGlvbnMsIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8KK3VzZSBvdGhlciBjb21tYW5kcyB0byBhY2Nlc3MgdGhlIG91dHB1dCBvZiB0aGUgcHJpbnRrKClzIHVzZWQgYnkKK3RoZSBSQ1UgdG9ydHVyZSB0ZXN0LiAgVGhlIHByaW50aygpcyB1c2UgS0VSTl9BTEVSVCwgc28gdGhleSBzaG91bGQKK2JlIGV2aWRlbnQuICA7LSkKKworVGhlIGZpcnN0IGFuZCBsYXN0IGxpbmVzIHNob3cgdGhlIHJjdXRvcnR1cmUgbW9kdWxlIHBhcmFtZXRlcnMsIGFuZCB0aGUKK2xhc3QgbGluZSBzaG93cyBlaXRoZXIgIlNVQ0NFU1MiIG9yICJGQUlMVVJFIiwgYmFzZWQgb24gcmN1dG9ydHVyZSdzCithdXRvbWF0aWMgZGV0ZXJtaW5hdGlvbiBhcyB0byB3aGV0aGVyIFJDVSBvcGVyYXRlZCBjb3JyZWN0bHkuCisKK1RoZSBlbnRyaWVzIGFyZSBhcyBmb2xsb3dzOgorCitvCSJydGMiOiBUaGUgaGV4YWRlY2ltYWwgYWRkcmVzcyBvZiB0aGUgc3RydWN0dXJlIGN1cnJlbnRseSB2aXNpYmxlCisJdG8gcmVhZGVycy4KKworbwkidmVyIjogVGhlIG51bWJlciBvZiB0aW1lcyBzaW5jZSBib290IHRoYXQgdGhlIFJDVSB3cml0ZXIgdGFzaworCWhhcyBjaGFuZ2VkIHRoZSBzdHJ1Y3R1cmUgdmlzaWJsZSB0byByZWFkZXJzLgorCitvCSJ0ZmxlIjogSWYgbm9uLXplcm8sIGluZGljYXRlcyB0aGF0IHRoZSAidG9ydHVyZSBmcmVlbGlzdCIKKwljb250YWluaW5nIHN0cnVjdHVyZXMgdG8gYmUgcGxhY2VkIGludG8gdGhlICJydGMiIGFyZWEgaXMgZW1wdHkuCisJVGhpcyBjb25kaXRpb24gaXMgaW1wb3J0YW50LCBzaW5jZSBpdCBjYW4gZm9vbCB5b3UgaW50byB0aGlua2luZworCXRoYXQgUkNVIGlzIHdvcmtpbmcgd2hlbiBpdCBpcyBub3QuICA6LS8KKworbwkicnRhIjogTnVtYmVyIG9mIHN0cnVjdHVyZXMgYWxsb2NhdGVkIGZyb20gdGhlIHRvcnR1cmUgZnJlZWxpc3QuCisKK28JInJ0YWYiOiBOdW1iZXIgb2YgYWxsb2NhdGlvbnMgZnJvbSB0aGUgdG9ydHVyZSBmcmVlbGlzdCB0aGF0IGhhdmUKKwlmYWlsZWQgZHVlIHRvIHRoZSBsaXN0IGJlaW5nIGVtcHR5LiAgSXQgaXMgbm90IHVudXN1YWwgZm9yIHRoaXMKKwl0byBiZSBub24temVybywgYnV0IGl0IGlzIGJhZCBmb3IgaXQgdG8gYmUgYSBsYXJnZSBmcmFjdGlvbiBvZgorCXRoZSB2YWx1ZSBpbmRpY2F0ZWQgYnkgInJ0YSIuCisKK28JInJ0ZiI6IE51bWJlciBvZiBmcmVlcyBpbnRvIHRoZSB0b3J0dXJlIGZyZWVsaXN0LgorCitvCSJydG1iZSI6IEEgbm9uLXplcm8gdmFsdWUgaW5kaWNhdGVzIHRoYXQgcmN1dG9ydHVyZSBiZWxpZXZlcyB0aGF0CisJcmN1X2Fzc2lnbl9wb2ludGVyKCkgYW5kIHJjdV9kZXJlZmVyZW5jZSgpIGFyZSBub3Qgd29ya2luZworCWNvcnJlY3RseS4gIFRoaXMgdmFsdWUgc2hvdWxkIGJlIHplcm8uCisKK28JInJ0YmUiOiBBIG5vbi16ZXJvIHZhbHVlIGluZGljYXRlcyB0aGF0IG9uZSBvZiB0aGUgcmN1X2JhcnJpZXIoKQorCWZhbWlseSBvZiBmdW5jdGlvbnMgaXMgbm90IHdvcmtpbmcgY29ycmVjdGx5LgorCitvCSJydGJrZSI6IHJjdXRvcnR1cmUgd2FzIHVuYWJsZSB0byBjcmVhdGUgdGhlIHJlYWwtdGltZSBrdGhyZWFkcworCXVzZWQgdG8gZm9yY2UgUkNVIHByaW9yaXR5IGludmVyc2lvbi4gIFRoaXMgdmFsdWUgc2hvdWxkIGJlIHplcm8uCisKK28JInJ0YnJlIjogQWx0aG91Z2ggcmN1dG9ydHVyZSBzdWNjZXNzZnVsbHkgY3JlYXRlZCB0aGUga3RocmVhZHMKKwl1c2VkIHRvIGZvcmNlIFJDVSBwcmlvcml0eSBpbnZlcnNpb24sIGl0IHdhcyB1bmFibGUgdG8gc2V0IHRoZW0KKwl0byB0aGUgcmVhbC10aW1lIHByaW9yaXR5IGxldmVsIG9mIDEuICBUaGlzIHZhbHVlIHNob3VsZCBiZSB6ZXJvLgorCitvCSJydGJmIjogVGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IFJDVSBwcmlvcml0eSBib29zdGluZyBmYWlsZWQKKwl0byByZXNvbHZlIFJDVSBwcmlvcml0eSBpbnZlcnNpb24uCisKK28JInJ0YiI6IFRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCByY3V0b3J0dXJlIGF0dGVtcHRlZCB0byBmb3JjZQorCWFuIFJDVSBwcmlvcml0eSBpbnZlcnNpb24gY29uZGl0aW9uLiAgSWYgeW91IGFyZSB0ZXN0aW5nIFJDVQorCXByaW9yaXR5IGJvb3N0aW5nIHZpYSB0aGUgInRlc3RfYm9vc3QiIG1vZHVsZSBwYXJhbWV0ZXIsIHRoaXMKKwl2YWx1ZSBzaG91bGQgYmUgbm9uLXplcm8uCisKK28JIm50IjogVGhlIG51bWJlciBvZiB0aW1lcyByY3V0b3J0dXJlIHJhbiBSQ1UgcmVhZC1zaWRlIGNvZGUgZnJvbQorCXdpdGhpbiBhIHRpbWVyIGhhbmRsZXIuICBUaGlzIHZhbHVlIHNob3VsZCBiZSBub24temVybyBvbmx5CisJaWYgeW91IHNwZWNpZmllZCB0aGUgImlycXJlYWRlciIgbW9kdWxlIHBhcmFtZXRlci4KKworbwkiUmVhZGVyIFBpcGUiOiBIaXN0b2dyYW0gb2YgImFnZXMiIG9mIHN0cnVjdHVyZXMgc2VlbiBieSByZWFkZXJzLgorCUlmIGFueSBlbnRyaWVzIHBhc3QgdGhlIGZpcnN0IHR3byBhcmUgbm9uLXplcm8sIFJDVSBpcyBicm9rZW4uCisJQW5kIHJjdXRvcnR1cmUgcHJpbnRzIHRoZSBlcnJvciBmbGFnIHN0cmluZyAiISEhIiB0byBtYWtlIHN1cmUKKwl5b3Ugbm90aWNlLiAgVGhlIGFnZSBvZiBhIG5ld2x5IGFsbG9jYXRlZCBzdHJ1Y3R1cmUgaXMgemVybywKKwlpdCBiZWNvbWVzIG9uZSB3aGVuIHJlbW92ZWQgZnJvbSByZWFkZXIgdmlzaWJpbGl0eSwgYW5kIGlzCisJaW5jcmVtZW50ZWQgb25jZSBwZXIgZ3JhY2UgcGVyaW9kIHN1YnNlcXVlbnRseSAtLSBhbmQgaXMgZnJlZWQKKwlhZnRlciBwYXNzaW5nIHRocm91Z2ggKFJDVV9UT1JUVVJFX1BJUEVfTEVOLTIpIGdyYWNlIHBlcmlvZHMuCisKKwlUaGUgb3V0cHV0IGRpc3BsYXllZCBhYm92ZSB3YXMgdGFrZW4gZnJvbSBhIGNvcnJlY3RseSB3b3JraW5nCisJUkNVLiAgSWYgeW91IHdhbnQgdG8gc2VlIHdoYXQgaXQgbG9va3MgbGlrZSB3aGVuIGJyb2tlbiwgYnJlYWsKKwlpdCB5b3Vyc2VsZi4gIDstKQorCitvCSJSZWFkZXIgQmF0Y2giOiBBbm90aGVyIGhpc3RvZ3JhbSBvZiAiYWdlcyIgb2Ygc3RydWN0dXJlcyBzZWVuCisJYnkgcmVhZGVycywgYnV0IGluIHRlcm1zIG9mIGNvdW50ZXIgZmxpcHMgKG9yIGJhdGNoZXMpIHJhdGhlcgorCXRoYW4gaW4gdGVybXMgb2YgZ3JhY2UgcGVyaW9kcy4gIFRoZSBsZWdhbCBudW1iZXIgb2Ygbm9uLXplcm8KKwllbnRyaWVzIGlzIGFnYWluIHR3by4gIFRoZSByZWFzb24gZm9yIHRoaXMgc2VwYXJhdGUgdmlldyBpcyB0aGF0CisJaXQgaXMgc29tZXRpbWVzIGVhc2llciB0byBnZXQgdGhlIHRoaXJkIGVudHJ5IHRvIHNob3cgdXAgaW4gdGhlCisJIlJlYWRlciBCYXRjaCIgbGlzdCB0aGFuIGluIHRoZSAiUmVhZGVyIFBpcGUiIGxpc3QuCisKK28JIkZyZWUtQmxvY2sgQ2lyY3VsYXRpb24iOiBTaG93cyB0aGUgbnVtYmVyIG9mIHRvcnR1cmUgc3RydWN0dXJlcworCXRoYXQgaGF2ZSByZWFjaGVkIGEgZ2l2ZW4gcG9pbnQgaW4gdGhlIHBpcGVsaW5lLiAgVGhlIGZpcnN0IGVsZW1lbnQKKwlzaG91bGQgY2xvc2VseSBjb3JyZXNwb25kIHRvIHRoZSBudW1iZXIgb2Ygc3RydWN0dXJlcyBhbGxvY2F0ZWQsCisJdGhlIHNlY29uZCB0byB0aGUgbnVtYmVyIHRoYXQgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSByZWFkZXIgdmlldywKKwlhbmQgYWxsIGJ1dCB0aGUgbGFzdCByZW1haW5pbmcgdG8gdGhlIGNvcnJlc3BvbmRpbmcgbnVtYmVyIG9mCisJcGFzc2VzIHRocm91Z2ggYSBncmFjZSBwZXJpb2QuICBUaGUgbGFzdCBlbnRyeSBzaG91bGQgYmUgemVybywKKwlhcyBpdCBpcyBvbmx5IGluY3JlbWVudGVkIGlmIGEgdG9ydHVyZSBzdHJ1Y3R1cmUncyBjb3VudGVyCisJc29tZWhvdyBnZXRzIGluY3JlbWVudGVkIGZhcnRoZXIgdGhhbiBpdCBzaG91bGQuCisKK0RpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgb2YgUkNVIGNhbiBwcm92aWRlIGltcGxlbWVudGF0aW9uLXNwZWNpZmljCithZGRpdGlvbmFsIGluZm9ybWF0aW9uLiAgRm9yIGV4YW1wbGUsIFNSQ1UgcHJvdmlkZXMgdGhlIGZvbGxvd2luZworYWRkaXRpb25hbCBsaW5lOgorCisJc3JjdS10b3J0dXJlOiBwZXItQ1BVKGlkeD0xKTogMCgwLDEpIDEoMCwxKSAyKDAsMCkgMygwLDEpCisKK1RoaXMgbGluZSBzaG93cyB0aGUgcGVyLUNQVSBjb3VudGVyIHN0YXRlLiAgVGhlIG51bWJlcnMgaW4gcGFyZW50aGVzZXMgYXJlCit0aGUgdmFsdWVzIG9mIHRoZSAib2xkIiBhbmQgImN1cnJlbnQiIGNvdW50ZXJzIGZvciB0aGUgY29ycmVzcG9uZGluZyBDUFUuCitUaGUgImlkeCIgdmFsdWUgbWFwcyB0aGUgIm9sZCIgYW5kICJjdXJyZW50IiB2YWx1ZXMgdG8gdGhlIHVuZGVybHlpbmcKK2FycmF5LCBhbmQgaXMgdXNlZnVsIGZvciBkZWJ1Z2dpbmcuCisKKworVVNBR0UKKworVGhlIGZvbGxvd2luZyBzY3JpcHQgbWF5IGJlIHVzZWQgdG8gdG9ydHVyZSBSQ1U6CisKKwkjIS9iaW4vc2gKKworCW1vZHByb2JlIHJjdXRvcnR1cmUKKwlzbGVlcCAzNjAwCisJcm1tb2QgcmN1dG9ydHVyZQorCWRtZXNnIHwgZ3JlcCB0b3J0dXJlOgorCitUaGUgb3V0cHV0IGNhbiBiZSBtYW51YWxseSBpbnNwZWN0ZWQgZm9yIHRoZSBlcnJvciBmbGFnIG9mICIhISEiLgorT25lIGNvdWxkIG9mIGNvdXJzZSBjcmVhdGUgYSBtb3JlIGVsYWJvcmF0ZSBzY3JpcHQgdGhhdCBhdXRvbWF0aWNhbGx5CitjaGVja2VkIGZvciBzdWNoIGVycm9ycy4gIFRoZSAicm1tb2QiIGNvbW1hbmQgZm9yY2VzIGEgIlNVQ0NFU1MiLAorIkZBSUxVUkUiLCBvciAiUkNVX0hPVFBMVUciIGluZGljYXRpb24gdG8gYmUgcHJpbnRrKCllZC4gIFRoZSBmaXJzdAordHdvIGFyZSBzZWxmLWV4cGxhbmF0b3J5LCB3aGlsZSB0aGUgbGFzdCBpbmRpY2F0ZXMgdGhhdCB3aGlsZSB0aGVyZQord2VyZSBubyBSQ1UgZmFpbHVyZXMsIENQVS1ob3RwbHVnIHByb2JsZW1zIHdlcmUgZGV0ZWN0ZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JDVS90cmFjZS50eHQgYi9Eb2N1bWVudGF0aW9uL1JDVS90cmFjZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM2OTk4YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUkNVL3RyYWNlLnR4dApAQCAtMCwwICsxLDUzOCBAQAorQ09ORklHX1JDVV9UUkFDRSBkZWJ1Z2ZzIEZpbGVzIGFuZCBGb3JtYXRzCisKKworVGhlIHJjdXRyZWUgYW5kIHJjdXRpbnkgaW1wbGVtZW50YXRpb25zIG9mIFJDVSBwcm92aWRlIGRlYnVnZnMgdHJhY2UKK291dHB1dCB0aGF0IHN1bW1hcml6ZXMgY291bnRlcnMgYW5kIHN0YXRlLiAgVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VmdWwgZm9yCitkZWJ1Z2dpbmcgUkNVIGl0c2VsZiwgYW5kIGNhbiBzb21ldGltZXMgYWxzbyBoZWxwIHRvIGRlYnVnIGFidXNlcyBvZiBSQ1UuCitUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGRlc2NyaWJlIHRoZSBkZWJ1Z2ZzIGZpbGVzIGFuZCBmb3JtYXRzLCBmaXJzdAorZm9yIHJjdXRyZWUgYW5kIG5leHQgZm9yIHJjdXRpbnkuCisKKworQ09ORklHX1RSRUVfUkNVIGFuZCBDT05GSUdfUFJFRU1QVF9SQ1UgZGVidWdmcyBGaWxlcyBhbmQgRm9ybWF0cworCitUaGVzZSBpbXBsZW1lbnRhdGlvbnMgb2YgUkNVIHByb3ZpZGUgc2V2ZXJhbCBkZWJ1Z2ZzIGRpcmVjdG9yaWVzIHVuZGVyIHRoZQordG9wLWxldmVsIGRpcmVjdG9yeSAicmN1IjoKKworcmN1L3JjdV9iaAorcmN1L3JjdV9wcmVlbXB0CityY3UvcmN1X3NjaGVkCisKK0VhY2ggZGlyZWN0b3J5IGNvbnRhaW5zIGZpbGVzIGZvciB0aGUgY29ycmVzcG9uZGluZyBmbGF2b3Igb2YgUkNVLgorTm90ZSB0aGF0IHJjdS9yY3VfcHJlZW1wdCBpcyBvbmx5IHByZXNlbnQgZm9yIENPTkZJR19QUkVFTVBUX1JDVS4KK0ZvciBDT05GSUdfVFJFRV9SQ1UsIHRoZSBSQ1UgZmxhdm9yIG1hcHMgb250byB0aGUgUkNVLXNjaGVkIGZsYXZvciwKK3NvIHRoYXQgYWN0aXZpdHkgZm9yIGJvdGggYXBwZWFycyBpbiByY3UvcmN1X3NjaGVkLgorCitJbiBhZGRpdGlvbiwgdGhlIGZvbGxvd2luZyBmaWxlIGFwcGVhcnMgaW4gdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnk6CityY3UvcmN1dG9ydHVyZS4gIFRoaXMgZmlsZSBkaXNwbGF5cyByY3V0b3J0dXJlIHRlc3QgcHJvZ3Jlc3MuICBUaGUgb3V0cHV0CitvZiAiY2F0IHJjdS9yY3V0b3J0dXJlIiBsb29rcyBhcyBmb2xsb3dzOgorCityY3V0b3J0dXJlIHRlc3Qgc2VxdWVuY2U6IDAgKHRlc3QgaW4gcHJvZ3Jlc3MpCityY3V0b3J0dXJlIHVwZGF0ZSB2ZXJzaW9uIG51bWJlcjogNjE1CisKK1RoZSBmaXJzdCBsaW5lIHNob3dzIHRoZSBudW1iZXIgb2YgcmN1dG9ydHVyZSB0ZXN0cyB0aGF0IGhhdmUgY29tcGxldGVkCitzaW5jZSBib290LiAgSWYgYSB0ZXN0IGlzIGN1cnJlbnRseSBydW5uaW5nLCB0aGUgIih0ZXN0IGluIHByb2dyZXNzKSIKK3N0cmluZyB3aWxsIGFwcGVhciBhcyBzaG93biBhYm92ZS4gIFRoZSBzZWNvbmQgbGluZSBzaG93cyB0aGUgbnVtYmVyIG9mCit1cGRhdGUgY3ljbGVzIHRoYXQgdGhlIGN1cnJlbnQgdGVzdCBoYXMgc3RhcnRlZCwgb3IgemVybyBpZiB0aGVyZSBpcworbm8gdGVzdCBpbiBwcm9ncmVzcy4KKworCitXaXRoaW4gZWFjaCBmbGF2b3IgZGlyZWN0b3J5IChyY3UvcmN1X2JoLCByY3UvcmN1X3NjaGVkLCBhbmQgcG9zc2libHkKK2Fsc28gcmN1L3JjdV9wcmVlbXB0KSB0aGUgZm9sbG93aW5nIGZpbGVzIHdpbGwgYmUgcHJlc2VudDoKKworcmN1ZGF0YToKKwlEaXNwbGF5cyBmaWVsZHMgaW4gc3RydWN0IHJjdV9kYXRhLgorcmN1ZXhwOgorCURpc3BsYXlzIHN0YXRpc3RpY3MgZm9yIGV4cGVkaXRlZCBncmFjZSBwZXJpb2RzLgorcmN1Z3A6CisJRGlzcGxheXMgZ3JhY2UtcGVyaW9kIGNvdW50ZXJzLgorcmN1aGllcjoKKwlEaXNwbGF5cyB0aGUgc3RydWN0IHJjdV9ub2RlIGhpZXJhcmNoeS4KK3JjdV9wZW5kaW5nOgorCURpc3BsYXlzIGNvdW50cyBvZiB0aGUgcmVhc29ucyByY3VfcGVuZGluZygpIGRlY2lkZWQgdGhhdCBSQ1UgaGFkCisJd29yayB0byBkby4KK3JjdWJvb3N0OgorCURpc3BsYXlzIFJDVSBib29zdGluZyBzdGF0aXN0aWNzLiAgT25seSBwcmVzZW50IGlmCisJQ09ORklHX1JDVV9CT09TVD15LgorCitUaGUgb3V0cHV0IG9mICJjYXQgcmN1L3JjdV9wcmVlbXB0L3JjdWRhdGEiIGxvb2tzIGFzIGZvbGxvd3M6CisKKyAgMCFjPTMwNDU1IGc9MzA0NTYgY25xPTEvMDoxIGR0PTEyNjUzNS8xNDAwMDAwMDAwMDAwMDAvMCBkZj0yMDAyIG9mPTQgcWw9MC8wIHFzPU4uLi4gYj0xMCBjaT03NDU3MiBuY2k9MCBjbz0xMTMxIGNhPTcxNgorICAxIWM9MzA3MTkgZz0zMDcyMCBjbnE9MS8wOjAgZHQ9MTMyMDA3LzE0MDAwMDAwMDAwMDAwMC8wIGRmPTE4NzQgb2Y9MTAgcWw9MC8wIHFzPU4uLi4gYj0xMCBjaT0xMjMyMDkgbmNpPTAgY289Njg1IGNhPTk4MgorICAyIWM9MzAxNTAgZz0zMDE1MSBjbnE9MS8xOjEgZHQ9MTM4NTM3LzE0MDAwMDAwMDAwMDAwMC8wIGRmPTE3MDcgb2Y9OCBxbD0wLzAgcXM9Ti4uLiBiPTEwIGNpPTgwMTMyIG5jaT0wIGNvPTEzMjggY2E9MTQ1OAorICAzIGM9MzEyNDkgZz0zMTI1MCBjbnE9MS8xOjAgZHQ9MTA3MjU1LzE0MDAwMDAwMDAwMDAwMC8wIGRmPTE3NDkgb2Y9NiBxbD0wLzQ1MCBxcz1OUlcuIGI9MTAgY2k9MTUxNzAwIG5jaT0wIGNvPTUwOSBjYT02MjIKKyAgNCFjPTI5NTAyIGc9Mjk1MDMgY25xPTEvMDoxIGR0PTgzNjQ3LzE0MDAwMDAwMDAwMDAwMC8wIGRmPTk2NSBvZj01IHFsPTAvMCBxcz1OLi4uIGI9MTAgY2k9NjU2NDMgbmNpPTAgY289MTM3MyBjYT0xNTIxCisgIDUgYz0zMTIwMSBnPTMxMjAyIGNucT0xLzA6MSBkdD03MDQyMi8wLzAgZGY9NTM1IG9mPTcgcWw9MC8wIHFzPS4uLi4gYj0xMCBjaT01ODUwMCBuY2k9MCBjbz03NjQgY2E9Njk4CisgIDYhYz0zMDI1MyBnPTMwMjU0IGNucT0xLzA6MSBkdD05NTM2My8xNDAwMDAwMDAwMDAwMDAvMCBkZj03ODAgb2Y9NSBxbD0wLzAgcXM9Ti4uLiBiPTEwIGNpPTEwMDYwNyBuY2k9MCBjbz0xNDE0IGNhPTEzNTMKKyAgNyBjPTMxMTc4IGc9MzExNzggY25xPTEvMDowIGR0PTkxNTM2LzAvMCBkZj01NDcgb2Y9NCBxbD0wLzAgcXM9Li4uLiBiPTEwIGNpPTEwOTgxOSBuY2k9MCBjbz0xMTE1IGNhPTk2OQorCitUaGlzIGZpbGUgaGFzIG9uZSBsaW5lIHBlciBDUFUsIG9yIGVpZ2h0IGZvciB0aGlzIDgtQ1BVIHN5c3RlbS4KK1RoZSBmaWVsZHMgYXJlIGFzIGZvbGxvd3M6CisKK28JVGhlIG51bWJlciBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggbGluZSBpcyB0aGUgQ1BVIG51bWJlci4KKwlDUFVzIG51bWJlcnMgZm9sbG93ZWQgYnkgYW4gZXhjbGFtYXRpb24gbWFyayBhcmUgb2ZmbGluZSwKKwlidXQgaGF2ZSBiZWVuIG9ubGluZSBhdCBsZWFzdCBvbmNlIHNpbmNlIGJvb3QuCVRoZXJlIHdpbGwgYmUKKwlubyBvdXRwdXQgZm9yIENQVXMgdGhhdCBoYXZlIG5ldmVyIGJlZW4gb25saW5lLCB3aGljaCBjYW4gYmUKKwlhIGdvb2QgdGhpbmcgaW4gdGhlIHN1cnByaXNpbmdseSBjb21tb24gY2FzZSB3aGVyZSBOUl9DUFVTIGlzCisJc3Vic3RhbnRpYWxseSBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGFjdHVhbCBDUFVzLgorCitvCSJjIiBpcyB0aGUgY291bnQgb2YgZ3JhY2UgcGVyaW9kcyB0aGF0IHRoaXMgQ1BVIGJlbGlldmVzIGhhdmUKKwljb21wbGV0ZWQuICBPZmZsaW5lZCBDUFVzIGFuZCBDUFVzIGluIGR5bnRpY2tzIGlkbGUgbW9kZSBtYXkgbGFnCisJcXVpdGUgYSB3YXlzIGJlaGluZCwgZm9yIGV4YW1wbGUsIENQVSA0IHVuZGVyICJyY3Vfc2NoZWQiIGFib3ZlLAorCXdoaWNoIGhhcyBiZWVuIG9mZmxpbmUgdGhyb3VnaCAxNiBSQ1UgZ3JhY2UgcGVyaW9kcy4gIEl0IGlzIG5vdAorCXVudXN1YWwgdG8gc2VlIG9mZmxpbmUgQ1BVcyBsYWdnaW5nIGJ5IHRob3VzYW5kcyBvZiBncmFjZSBwZXJpb2RzLgorCU5vdGUgdGhhdCBhbHRob3VnaCB0aGUgZ3JhY2UtcGVyaW9kIG51bWJlciBpcyBhbiB1bnNpZ25lZCBsb25nLAorCWl0IGlzIHByaW50ZWQgb3V0IGFzIGEgc2lnbmVkIGxvbmcgdG8gYWxsb3cgbW9yZSBodW1hbi1mcmllbmRseQorCXJlcHJlc2VudGF0aW9uIG5lYXIgYm9vdCB0aW1lLgorCitvCSJnIiBpcyB0aGUgY291bnQgb2YgZ3JhY2UgcGVyaW9kcyB0aGF0IHRoaXMgQ1BVIGJlbGlldmVzIGhhdmUKKwlzdGFydGVkLiAgQWdhaW4sIG9mZmxpbmVkIENQVXMgYW5kIENQVXMgaW4gZHludGlja3MgaWRsZSBtb2RlCisJbWF5IGxhZyBiZWhpbmQuICBJZiB0aGUgImMiIGFuZCAiZyIgdmFsdWVzIGFyZSBlcXVhbCwgdGhpcyBDUFUKKwloYXMgYWxyZWFkeSByZXBvcnRlZCBhIHF1aWVzY2VudCBzdGF0ZSBmb3IgdGhlIGxhc3QgUkNVIGdyYWNlCisJcGVyaW9kIHRoYXQgaXQgaXMgYXdhcmUgb2YsIG90aGVyd2lzZSwgdGhlIENQVSBiZWxpZXZlcyB0aGF0IGl0CisJb3dlcyBSQ1UgYSBxdWllc2NlbnQgc3RhdGUuCisKK28JInBxIiBpbmRpY2F0ZXMgdGhhdCB0aGlzIENQVSBoYXMgcGFzc2VkIHRocm91Z2ggYSBxdWllc2NlbnQgc3RhdGUKKwlmb3IgdGhlIGN1cnJlbnQgZ3JhY2UgcGVyaW9kLiAgSXQgaXMgcG9zc2libGUgZm9yICJwcSIgdG8gYmUKKwkiMSIgYW5kICJjIiBkaWZmZXJlbnQgdGhhbiAiZyIsIHdoaWNoIGluZGljYXRlcyB0aGF0IGFsdGhvdWdoCisJdGhlIENQVSBoYXMgcGFzc2VkIHRocm91Z2ggYSBxdWllc2NlbnQgc3RhdGUsIGVpdGhlciAoMSkgdGhpcworCUNQVSBoYXMgbm90IHlldCByZXBvcnRlZCB0aGF0IGZhY3QsICgyKSBzb21lIG90aGVyIENQVSBoYXMgbm90CisJeWV0IHJlcG9ydGVkIGZvciB0aGlzIGdyYWNlIHBlcmlvZCwgb3IgKDMpIGJvdGguCisKK28JInFwIiBpbmRpY2F0ZXMgdGhhdCBSQ1Ugc3RpbGwgZXhwZWN0cyBhIHF1aWVzY2VudCBzdGF0ZSBmcm9tCisJdGhpcyBDUFUuICBPZmZsaW5lZCBDUFVzIGFuZCBDUFVzIGluIGR5bnRpY2sgaWRsZSBtb2RlIG1pZ2h0CisJd2VsbCBoYXZlIHFwPTEsIHdoaWNoIGlzIE9LOiBSQ1UgaXMgc3RpbGwgaWdub3JpbmcgdGhlbS4KKworbwkiZHQiIGlzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkeW50aWNrIGNvdW50ZXIgdGhhdCBpcyBpbmNyZW1lbnRlZAorCXdoZW4gZW50ZXJpbmcgb3IgbGVhdmluZyBpZGxlLCBlaXRoZXIgZHVlIHRvIGEgY29udGV4dCBzd2l0Y2ggb3IKKwlkdWUgdG8gYW4gaW50ZXJydXB0LiAgVGhpcyBudW1iZXIgaXMgZXZlbiBpZiB0aGUgQ1BVIGlzIGluIGlkbGUKKwlmcm9tIFJDVSdzIHZpZXdwb2ludCBhbmQgb2RkIG90aGVyd2lzZS4gIFRoZSBudW1iZXIgYWZ0ZXIgdGhlCisJZmlyc3QgIi8iIGlzIHRoZSBpbnRlcnJ1cHQgbmVzdGluZyBkZXB0aCB3aGVuIGluIGlkbGUgc3RhdGUsCisJb3IgYSBsYXJnZSBudW1iZXIgYWRkZWQgdG8gdGhlIGludGVycnVwdC1uZXN0aW5nIGRlcHRoIHdoZW4KKwlydW5uaW5nIGEgbm9uLWlkbGUgdGFzay4gIFNvbWUgYXJjaGl0ZWN0dXJlcyBkbyBub3QgYWNjdXJhdGVseQorCWNvdW50IGludGVycnVwdCBuZXN0aW5nIHdoZW4gcnVubmluZyBpbiBub24taWRsZSBrZXJuZWwgY29udGV4dCwKKwl3aGljaCBjYW4gcmVzdWx0IGluIGludGVyZXN0aW5nIGFub21hbGllcyBzdWNoIGFzIG5lZ2F0aXZlCisJaW50ZXJydXB0LW5lc3RpbmcgbGV2ZWxzLiAgVGhlIG51bWJlciBhZnRlciB0aGUgc2Vjb25kICIvIgorCWlzIHRoZSBOTUkgbmVzdGluZyBkZXB0aC4KKworbwkiZGYiIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBzb21lIG90aGVyIENQVSBoYXMgZm9yY2VkIGEKKwlxdWllc2NlbnQgc3RhdGUgb24gYmVoYWxmIG9mIHRoaXMgQ1BVIGR1ZSB0byB0aGlzIENQVSBiZWluZyBpbgorCWlkbGUgc3RhdGUuCisKK28JIm9mIiBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgc29tZSBvdGhlciBDUFUgaGFzIGZvcmNlZCBhCisJcXVpZXNjZW50IHN0YXRlIG9uIGJlaGFsZiBvZiB0aGlzIENQVSBkdWUgdG8gdGhpcyBDUFUgYmVpbmcKKwlvZmZsaW5lLiAgSW4gYSBwZXJmZWN0IHdvcmxkLCB0aGlzIG1pZ2h0IG5ldmVyIGhhcHBlbiwgYnV0IGl0CisJdHVybnMgb3V0IHRoYXQgb2ZmbGluaW5nIGFuZCBvbmxpbmluZyBhIENQVSBjYW4gdGFrZSBzZXZlcmFsIGdyYWNlCisJcGVyaW9kcywgYW5kIHNvIHRoZXJlIGlzIGxpa2VseSB0byBiZSBhbiBleHRlbmRlZCBwZXJpb2Qgb2YgdGltZQorCXdoZW4gUkNVIGJlbGlldmVzIHRoYXQgdGhlIENQVSBpcyBvbmxpbmUgd2hlbiBpdCByZWFsbHkgaXMgbm90LgorCVBsZWFzZSBub3RlIHRoYXQgZXJyaW5nIGluIHRoZSBvdGhlciBkaXJlY3Rpb24gKFJDVSBiZWxpZXZpbmcgYQorCUNQVSBpcyBvZmZsaW5lIHdoZW4gaXQgaXMgcmVhbGx5IGFsaXZlIGFuZCBraWNraW5nKSBpcyBhIGZhdGFsCisJZXJyb3IsIHNvIGl0IG1ha2VzIHNlbnNlIHRvIGVyciBjb25zZXJ2YXRpdmVseS4KKworbwkicWwiIGlzIHRoZSBudW1iZXIgb2YgUkNVIGNhbGxiYWNrcyBjdXJyZW50bHkgcmVzaWRpbmcgb24KKwl0aGlzIENQVS4gIFRoZSBmaXJzdCBudW1iZXIgaXMgdGhlIG51bWJlciBvZiAibGF6eSIgY2FsbGJhY2tzCisJdGhhdCBhcmUga25vd24gdG8gUkNVIHRvIG9ubHkgYmUgZnJlZWluZyBtZW1vcnksIGFuZCB0aGUgbnVtYmVyCisJYWZ0ZXIgdGhlICIvIiBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIGNhbGxiYWNrcywgbGF6eSBvciBub3QuCisJVGhlc2UgY291bnRlcnMgY291bnQgY2FsbGJhY2tzIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBwaGFzZSBvZgorCWdyYWNlLXBlcmlvZCBwcm9jZXNzaW5nIHRoYXQgdGhleSBhcmUgaW4gKG5ldywgd2FpdGluZyBmb3IKKwlncmFjZSBwZXJpb2QgdG8gc3RhcnQsIHdhaXRpbmcgZm9yIGdyYWNlIHBlcmlvZCB0byBlbmQsIHJlYWR5CisJdG8gaW52b2tlKS4KKworbwkicXMiIGdpdmVzIGFuIGluZGljYXRpb24gb2YgdGhlIHN0YXRlIG9mIHRoZSBjYWxsYmFjayBxdWV1ZQorCXdpdGggZm91ciBjaGFyYWN0ZXJzOgorCisJIk4iCUluZGljYXRlcyB0aGF0IHRoZXJlIGFyZSBjYWxsYmFja3MgcXVldWVkIHRoYXQgYXJlIG5vdAorCQlyZWFkeSB0byBiZSBoYW5kbGVkIGJ5IHRoZSBuZXh0IGdyYWNlIHBlcmlvZCwgYW5kIHRodXMKKwkJd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSBncmFjZSBwZXJpb2QgZm9sbG93aW5nIHRoZSBuZXh0CisJCW9uZS4KKworCSJSIglJbmRpY2F0ZXMgdGhhdCB0aGVyZSBhcmUgY2FsbGJhY2tzIHF1ZXVlZCB0aGF0IGFyZQorCQlyZWFkeSB0byBiZSBoYW5kbGVkIGJ5IHRoZSBuZXh0IGdyYWNlIHBlcmlvZC4KKworCSJXIglJbmRpY2F0ZXMgdGhhdCB0aGVyZSBhcmUgY2FsbGJhY2tzIHF1ZXVlZCB0aGF0IGFyZQorCQl3YWl0aW5nIG9uIHRoZSBjdXJyZW50IGdyYWNlIHBlcmlvZC4KKworCSJEIglJbmRpY2F0ZXMgdGhhdCB0aGVyZSBhcmUgY2FsbGJhY2tzIHF1ZXVlZCB0aGF0IGhhdmUKKwkJYWxyZWFkeSBiZWVuIGhhbmRsZWQgYnkgYSBwcmlvciBncmFjZSBwZXJpb2QsIGFuZCBhcmUKKwkJdGh1cyB3YWl0aW5nIHRvIGJlIGludm9rZWQuICBOb3RlIHRoYXQgY2FsbGJhY2tzIGluCisJCXRoZSBwcm9jZXNzIG9mIGJlaW5nIGludm9rZWQgYXJlIG5vdCBjb3VudGVkIGhlcmUuCisJCUNhbGxiYWNrcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBpbnZva2VkIGFyZSB0aG9zZQorCQl0aGF0IGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIHJjdV9kYXRhIHN0cnVjdHVyZXMKKwkJcXVldWVzIGJ5IHJjdV9kb19iYXRjaCgpLCBidXQgd2hpY2ggaGF2ZSBub3QgeWV0IGJlZW4KKwkJaW52b2tlZC4KKworCUlmIHRoZXJlIGFyZSBubyBjYWxsYmFja3MgaW4gYSBnaXZlbiBvbmUgb2YgdGhlIGFib3ZlIHN0YXRlcywKKwl0aGUgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIgaXMgcmVwbGFjZWQgYnkgIi4iLgorCitvCSJiIiBpcyB0aGUgYmF0Y2ggbGltaXQgZm9yIHRoaXMgQ1BVLiAgSWYgbW9yZSB0aGFuIHRoaXMgbnVtYmVyCisJb2YgUkNVIGNhbGxiYWNrcyBpcyByZWFkeSB0byBpbnZva2UsIHRoZW4gdGhlIHJlbWFpbmRlciB3aWxsCisJYmUgZGVmZXJyZWQuCisKK28JImNpIiBpcyB0aGUgbnVtYmVyIG9mIFJDVSBjYWxsYmFja3MgdGhhdCBoYXZlIGJlZW4gaW52b2tlZCBmb3IKKwl0aGlzIENQVS4gIE5vdGUgdGhhdCBjaStuY2krcWwgaXMgdGhlIG51bWJlciBvZiBjYWxsYmFja3MgdGhhdCBoYXZlCisJYmVlbiByZWdpc3RlcmVkIGluIGFic2VuY2Ugb2YgQ1BVLWhvdHBsdWcgYWN0aXZpdHkuCisKK28JIm5jaSIgaXMgdGhlIG51bWJlciBvZiBSQ1UgY2FsbGJhY2tzIHRoYXQgaGF2ZSBiZWVuIG9mZmxvYWRlZCBmcm9tCisJdGhpcyBDUFUuICBUaGlzIHdpbGwgYWx3YXlzIGJlIHplcm8gdW5sZXNzIHRoZSBrZXJuZWwgd2FzIGJ1aWx0CisJd2l0aCBDT05GSUdfUkNVX05PQ0JfQ1BVPXkgYW5kIHRoZSAicmN1X25vY2JzPSIga2VybmVsIGJvb3QKKwlwYXJhbWV0ZXIgd2FzIHNwZWNpZmllZC4KKworbwkiY28iIGlzIHRoZSBudW1iZXIgb2YgUkNVIGNhbGxiYWNrcyB0aGF0IGhhdmUgYmVlbiBvcnBoYW5lZCBkdWUgdG8KKwl0aGlzIENQVSBnb2luZyBvZmZsaW5lLiAgVGhlc2Ugb3JwaGFuZWQgY2FsbGJhY2tzIGhhdmUgYmVlbiBtb3ZlZAorCXRvIGFuIGFyYml0cmFyaWx5IGNob3NlbiBvbmxpbmUgQ1BVLgorCitvCSJjYSIgaXMgdGhlIG51bWJlciBvZiBSQ1UgY2FsbGJhY2tzIHRoYXQgaGF2ZSBiZWVuIGFkb3B0ZWQgYnkgdGhpcworCUNQVSBkdWUgdG8gb3RoZXIgQ1BVcyBnb2luZyBvZmZsaW5lLiAgTm90ZSB0aGF0IGNpK2NvLWNhK3FsIGlzCisJdGhlIG51bWJlciBvZiBSQ1UgY2FsbGJhY2tzIHJlZ2lzdGVyZWQgb24gdGhpcyBDUFUuCisKKworS2VybmVscyBjb21waWxlZCB3aXRoIENPTkZJR19SQ1VfQk9PU1Q9eSBkaXNwbGF5IHRoZSBmb2xsb3dpbmcgZnJvbQorL2RlYnVnL3JjdS9yY3VfcHJlZW1wdC9yY3VkYXRhOgorCisgIDAhYz0xMjg2NSBnPTEyODY2IGNucT0xLzA6MSBkdD04MzExMy8xNDAwMDAwMDAwMDAwMDAvMCBkZj0yODggb2Y9MTEgcWw9MC8wIHFzPU4uLi4ga3Q9MC9PIGt0bD05NDQgYj0xMCBjaT02MDcwOSBuY2k9MCBjbz03NDggY2E9ODcxCisgIDEgYz0xNDQwNyBnPTE0NDA4IGNucT0xLzA6MCBkdD0xMDA2NzkvMTQwMDAwMDAwMDAwMDAwLzAgZGY9Mzc4IG9mPTcgcWw9MC8xMTkgcXM9TlJXLiBrdD0wL1cga3RsPTliNiBiPTEwIGNpPTEwOTc0MCBuY2k9MCBjbz01ODkgY2E9NDg1CisgIDIgYz0xNDQwNyBnPTE0NDA4IGNucT0xLzA6MCBkdD0xMDU0ODYvMC8wIGRmPTkwIG9mPTkgcWw9MC84OSBxcz1OUlcuIGt0PTAvVyBrdGw9YzBjIGI9MTAgY2k9ODMxMTMgbmNpPTAgY289NTMzIGNhPTQ5MAorICAzIGM9MTQ0MDcgZz0xNDQwOCBjbnE9MS8wOjAgZHQ9MTA3MTM4LzAvMCBkZj0xNDIgb2Y9OCBxbD0wLzE4OCBxcz1OUlcuIGt0PTAvVyBrdGw9Yjk2IGI9MTAgY2k9MTIxMTE0IG5jaT0wIGNvPTQyNiBjYT0yOTAKKyAgNCBjPTE0NDA1IGc9MTQ0MDYgY25xPTEvMDoxIGR0PTUwMjM4LzAvMCBkZj03MDYgb2Y9NyBxbD0wLzAgcXM9Li4uLiBrdD0wL1cga3RsPTgxMiBiPTEwIGNpPTM0OTI5IG5jaT0wIGNvPTY0MyBjYT0xMTQKKyAgNSFjPTE0MTY4IGc9MTQxNjkgY25xPTEvMDowIGR0PTQ1NDY1LzE0MDAwMDAwMDAwMDAwMC8wIGRmPTE2MSBvZj0xMSBxbD0wLzAgcXM9Ti4uLiBrdD0wL08ga3RsPWI0ZCBiPTEwIGNpPTQ3NzEyIG5jaT0wIGNvPTY3NyBjYT03MjIKKyAgNiBjPTE0NDA0IGc9MTQ0MDUgY25xPTEvMDowIGR0PTU5NDU0LzAvMCBkZj05NCBvZj02IHFsPTAvMCBxcz0uLi4uIGt0PTAvVyBrdGw9ZTU3IGI9MTAgY2k9NTU1OTcgbmNpPTAgY289NzAxIGNhPTgxMQorICA3IGM9MTQ0MDcgZz0xNDQwOCBjbnE9MS8wOjEgZHQ9Njg4NTAvMC8wIGRmPTMxIG9mPTggcWw9MC8wIHFzPS4uLi4ga3Q9MC9XIGt0bD0xNGJkIGI9MTAgY2k9Nzc0NzUgbmNpPTAgY289NTA4IGNhPTEwNDIKKworVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBvdXRwdXQgZGlzY3Vzc2VkIGFib3ZlLCBidXQgY29udGFpbnMgdGhlIGZvbGxvd2luZworYWRkaXRpb25hbCBmaWVsZHM6CisKK28JImt0IiBpcyB0aGUgcGVyLUNQVSBrZXJuZWwtdGhyZWFkIHN0YXRlLiAgVGhlIGRpZ2l0IHByZWNlZGluZworCXRoZSBmaXJzdCBzbGFzaCBpcyB6ZXJvIGlmIHRoZXJlIGlzIG5vIHdvcmsgcGVuZGluZyBhbmQgMQorCW90aGVyd2lzZS4gIFRoZSBjaGFyYWN0ZXIgYmV0d2VlbiB0aGUgZmlyc3QgcGFpciBvZiBzbGFzaGVzIGlzCisJYXMgZm9sbG93czoKKworCSJTIglUaGUga2VybmVsIHRocmVhZCBpcyBzdG9wcGVkLCBpbiBvdGhlciB3b3JkcywgYWxsCisJCUNQVXMgY29ycmVzcG9uZGluZyB0byB0aGlzIHJjdV9ub2RlIHN0cnVjdHVyZSBhcmUKKwkJb2ZmbGluZS4KKworCSJSIglUaGUga2VybmVsIHRocmVhZCBpcyBydW5uaW5nLgorCisJIlciCVRoZSBrZXJuZWwgdGhyZWFkIGlzIHdhaXRpbmcgYmVjYXVzZSB0aGVyZSBpcyBubyB3b3JrCisJCWZvciBpdCB0byBkby4KKworCSJPIglUaGUga2VybmVsIHRocmVhZCBpcyB3YWl0aW5nIGJlY2F1c2UgaXQgaGFzIGJlZW4KKwkJZm9yY2VkIG9mZiBvZiBpdHMgZGVzaWduYXRlZCBDUFUgb3IgYmVjYXVzZSBpdHMKKwkJLT5jcHVzX2FsbG93ZWQgbWFzayBwZXJtaXRzIGl0IHRvIHJ1biBvbiBvdGhlciB0aGFuCisJCWl0cyBkZXNpZ25hdGVkIENQVS4KKworCSJZIglUaGUga2VybmVsIHRocmVhZCBpcyB5aWVsZGluZyB0byBhdm9pZCBob2dnaW5nIENQVS4KKworCSI/IglVbmtub3duIHZhbHVlLCBpbmRpY2F0ZXMgYSBidWcuCisKKwlUaGUgbnVtYmVyIGFmdGVyIHRoZSBmaW5hbCBzbGFzaCBpcyB0aGUgQ1BVIHRoYXQgdGhlIGt0aHJlYWQKKwlpcyBhY3R1YWxseSBydW5uaW5nIG9uLgorCisJVGhpcyBmaWVsZCBpcyBkaXNwbGF5ZWQgb25seSBmb3IgQ09ORklHX1JDVV9CT09TVCBrZXJuZWxzLgorCitvCSJrdGwiIGlzIHRoZSBsb3ctb3JkZXIgMTYgYml0cyAoaW4gaGV4YWRlY2ltYWwpIG9mIHRoZSBjb3VudCBvZgorCXRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCB0aGlzIENQVSdzIHBlci1DUFUga3RocmVhZCBoYXMgZ29uZQorCXRocm91Z2ggaXRzIGxvb3Agc2VydmljaW5nIGludm9rZV9yY3VfY3B1X2t0aHJlYWQoKSByZXF1ZXN0cy4KKworCVRoaXMgZmllbGQgaXMgZGlzcGxheWVkIG9ubHkgZm9yIENPTkZJR19SQ1VfQk9PU1Qga2VybmVscy4KKworCitUaGUgb3V0cHV0IG9mICJjYXQgcmN1L3JjdV9wcmVlbXB0L3JjdWV4cCIgbG9va3MgYXMgZm9sbG93czoKKworcz0yMTg3MiB3ZDA9MCB3ZDE9MCB3ZDI9MCB3ZDM9NSBuPTAgZW5xPTAgc2M9MjE4NzIKKworVGhlc2UgZmllbGRzIGFyZSBhcyBmb2xsb3dzOgorCitvCSJzIiBpcyB0aGUgc2VxdWVuY2UgbnVtYmVyLCB3aXRoIGFuIG9kZCBudW1iZXIgaW5kaWNhdGluZyB0aGF0CisJYW4gZXhwZWRpdGVkIGdyYWNlIHBlcmlvZCBpcyBpbiBwcm9ncmVzcy4KKworbwkid2QwIiwgIndkMSIsICJ3ZDIiLCBhbmQgIndkMyIgYXJlIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBhbgorCWF0dGVtcHQgdG8gc3RhcnQgYW4gZXhwZWRpdGVkIGdyYWNlIHBlcmlvZCBmb3VuZCB0aGF0IHNvbWVvbmUKKwllbHNlIGhhZCBjb21wbGV0ZWQgYW4gZXhwZWRpdGVkIGdyYWNlIHBlcmlvZCB0aGF0IHNhdGlzZmllcyB0aGUKKwlhdHRlbXB0ZWQgcmVxdWVzdC4gICJPdXIgd29yayBpcyBkb25lLiIKKworbwkibiIgaXMgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYSBjb25jdXJyZW50IENQVS1ob3RwbHVnIG9wZXJhdGlvbgorCWZvcmNlZCBhIGZhbGxiYWNrIHRvIGEgbm9ybWFsIGdyYWNlIHBlcmlvZC4KKworbwkiZW5xIiBpcyB0aGUgbnVtYmVyIG9mIHF1aWVzY2VudCBzdGF0ZXMgc3RpbGwgb3V0c3RhbmRpbmcuCisKK28JInNjIiBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgdGhlIGF0dGVtcHQgdG8gc3RhcnQgYQorCW5ldyBleHBlZGl0ZWQgZ3JhY2UgcGVyaW9kIHN1Y2NlZWRlZC4KKworCitUaGUgb3V0cHV0IG9mICJjYXQgcmN1L3JjdV9wcmVlbXB0L3JjdWdwIiBsb29rcyBhcyBmb2xsb3dzOgorCitjb21wbGV0ZWQ9MzEyNDkgIGdwbnVtPTMxMjUwICBhZ2U9MSAgbWF4PTE4CisKK1RoZXNlIGZpZWxkcyBhcmUgdGFrZW4gZnJvbSB0aGUgcmN1X3N0YXRlIHN0cnVjdHVyZSwgYW5kIGFyZSBhcyBmb2xsb3dzOgorCitvCSJjb21wbGV0ZWQiIGlzIHRoZSBudW1iZXIgb2YgZ3JhY2UgcGVyaW9kcyB0aGF0IGhhdmUgY29tcGxldGVkLgorCUl0IGlzIGNvbXBhcmFibGUgdG8gdGhlICJjIiBmaWVsZCBmcm9tIHJjdS9yY3VkYXRhIGluIHRoYXQgYQorCUNQVSB3aG9zZSAiYyIgZmllbGQgbWF0Y2hlcyB0aGUgdmFsdWUgb2YgImNvbXBsZXRlZCIgaXMgYXdhcmUKKwl0aGF0IHRoZSBjb3JyZXNwb25kaW5nIFJDVSBncmFjZSBwZXJpb2QgaGFzIGNvbXBsZXRlZC4KKworbwkiZ3BudW0iIGlzIHRoZSBudW1iZXIgb2YgZ3JhY2UgcGVyaW9kcyB0aGF0IGhhdmUgc3RhcnRlZC4gIEl0IGlzCisJc2ltaWxhcmx5IGNvbXBhcmFibGUgdG8gdGhlICJnIiBmaWVsZCBmcm9tIHJjdS9yY3VkYXRhIGluIHRoYXQKKwlhIENQVSB3aG9zZSAiZyIgZmllbGQgbWF0Y2hlcyB0aGUgdmFsdWUgb2YgImdwbnVtIiBpcyBhd2FyZSB0aGF0CisJdGhlIGNvcnJlc3BvbmRpbmcgUkNVIGdyYWNlIHBlcmlvZCBoYXMgc3RhcnRlZC4KKworCUlmIHRoZXNlIHR3byBmaWVsZHMgYXJlIGVxdWFsLCB0aGVuIHRoZXJlIGlzIG5vIGdyYWNlIHBlcmlvZAorCWluIHByb2dyZXNzLCBpbiBvdGhlciB3b3JkcywgUkNVIGlzIGlkbGUuICBPbiB0aGUgb3RoZXIgaGFuZCwKKwlpZiB0aGUgdHdvIGZpZWxkcyBkaWZmZXIgKGFzIHRoZXkgYXJlIGFib3ZlKSwgdGhlbiBhbiBSQ1UgZ3JhY2UKKwlwZXJpb2QgaXMgaW4gcHJvZ3Jlc3MuCisKK28JImFnZSIgaXMgdGhlIG51bWJlciBvZiBqaWZmaWVzIHRoYXQgdGhlIGN1cnJlbnQgZ3JhY2UgcGVyaW9kCisJaGFzIGV4dGVuZGVkIGZvciwgb3IgemVybyBpZiB0aGVyZSBpcyBubyBncmFjZSBwZXJpb2QgY3VycmVudGx5CisJaW4gZWZmZWN0LgorCitvCSJtYXgiIGlzIHRoZSBhZ2UgaW4gamlmZmllcyBvZiB0aGUgbG9uZ2VzdC1kdXJhdGlvbiBncmFjZSBwZXJpb2QKKwl0aHVzIGZhci4KKworVGhlIG91dHB1dCBvZiAiY2F0IHJjdS9yY3VfcHJlZW1wdC9yY3VoaWVyIiBsb29rcyBhcyBmb2xsb3dzOgorCitjPTE0NDA3IGc9MTQ0MDggcz0wIGpmcT0yIGo9Yzg2MyBuZnFzPTEyMDQwL25mcXNuZz0wKDEyMDQwKSBmcWxoPTEwNTEgb3FsZW49MC8wCiszLzMgLi4+LiAwOjcgXjAKK2UvZSAuLj4uIDA6MyBeMCAgICBkL2QgLi4+LiA0OjcgXjEKKworVGhlIGZpZWxkcyBhcmUgYXMgZm9sbG93czoKKworbwkiYyIgaXMgZXhhY3RseSB0aGUgc2FtZSBhcyAiY29tcGxldGVkIiB1bmRlciByY3UvcmN1X3ByZWVtcHQvcmN1Z3AuCisKK28JImciIGlzIGV4YWN0bHkgdGhlIHNhbWUgYXMgImdwbnVtIiB1bmRlciByY3UvcmN1X3ByZWVtcHQvcmN1Z3AuCisKK28JInMiIGlzIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBmb3JjZV9xdWllc2NlbnRfc3RhdGUoKQorCXN0YXRlIG1hY2hpbmUuCisKK28JImpmcSIgaXMgdGhlIG51bWJlciBvZiBqaWZmaWVzIHJlbWFpbmluZyBmb3IgdGhpcyBncmFjZSBwZXJpb2QKKwliZWZvcmUgZm9yY2VfcXVpZXNjZW50X3N0YXRlKCkgaXMgaW52b2tlZCB0byBoZWxwIHB1c2ggdGhpbmdzCisJYWxvbmcuCU5vdGUgdGhhdCBDUFVzIGluIGlkbGUgbW9kZSB0aHJvdWdob3V0IHRoZSBncmFjZSBwZXJpb2QKKwl3aWxsIG5vdCByZXBvcnQgb24gdGhlaXIgb3duLCBidXQgcmF0aGVyIG11c3QgYmUgY2hlY2sgYnkgc29tZQorCW90aGVyIENQVSB2aWEgZm9yY2VfcXVpZXNjZW50X3N0YXRlKCkuCisKK28JImoiIGlzIHRoZSBsb3ctb3JkZXIgZm91ciBoZXggZGlnaXRzIG9mIHRoZSBqaWZmaWVzIGNvdW50ZXIuCisJWWVzLCBQYXVsIGRpZCBydW4gaW50byBhIG51bWJlciBvZiBwcm9ibGVtcyB0aGF0IHR1cm5lZCBvdXQgdG8KKwliZSBkdWUgdG8gdGhlIGppZmZpZXMgY291bnRlciBubyBsb25nZXIgY291bnRpbmcuICBXaHkgZG8geW91IGFzaz8KKworbwkibmZxcyIgaXMgdGhlIG51bWJlciBvZiBjYWxscyB0byBmb3JjZV9xdWllc2NlbnRfc3RhdGUoKSBzaW5jZQorCWJvb3QuCisKK28JIm5mcXNuZyIgaXMgdGhlIG51bWJlciBvZiB1c2VsZXNzIGNhbGxzIHRvIGZvcmNlX3F1aWVzY2VudF9zdGF0ZSgpLAorCXdoZXJlIHRoZXJlIHdhc24ndCBhY3R1YWxseSBhIGdyYWNlIHBlcmlvZCBhY3RpdmUuICBUaGlzIGNhbgorCW5vIGxvbmdlciBoYXBwZW4gZHVlIHRvIGdyYWNlLXBlcmlvZCBwcm9jZXNzaW5nIGJlaW5nIHB1c2hlZAorCWludG8gYSBrdGhyZWFkLiAgVGhlIG51bWJlciBpbiBwYXJlbnRoZXNlcyBpcyB0aGUgZGlmZmVyZW5jZQorCWJldHdlZW4gIm5mcXMiIGFuZCAibmZxc25nIiwgb3IgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0CisJZm9yY2VfcXVpZXNjZW50X3N0YXRlKCkgYWN0dWFsbHkgZGlkIHNvbWUgcmVhbCB3b3JrLgorCitvCSJmcWxoIiBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGZvcmNlX3F1aWVzY2VudF9zdGF0ZSgpIHRoYXQKKwlleGl0ZWQgaW1tZWRpYXRlbHkgKHdpdGhvdXQgZXZlbiBiZWluZyBjb3VudGVkIGluIG5mcXMgYWJvdmUpCisJZHVlIHRvIGNvbnRlbnRpb24gb24gLT5mcXNsb2NrLgorCitvCUVhY2ggZWxlbWVudCBvZiB0aGUgZm9ybSAiMy8zIC4uPi4gMDo3IF4wIiByZXByZXNlbnRzIG9uZSByY3Vfbm9kZQorCXN0cnVjdHVyZS4gIEVhY2ggbGluZSByZXByZXNlbnRzIG9uZSBsZXZlbCBvZiB0aGUgaGllcmFyY2h5LAorCWZyb20gcm9vdCB0byBsZWF2ZXMuICBJdCBpcyBiZXN0IHRvIHRoaW5rIG9mIHRoZSByY3VfZGF0YQorCXN0cnVjdHVyZXMgYXMgZm9ybWluZyB5ZXQgYW5vdGhlciBsZXZlbCBhZnRlciB0aGUgbGVhdmVzLgorCU5vdGUgdGhhdCB0aGVyZSBtaWdodCBiZSBlaXRoZXIgb25lLCB0d28sIHRocmVlLCBvciBldmVuIGZvdXIKKwlsZXZlbHMgb2YgcmN1X25vZGUgc3RydWN0dXJlcywgZGVwZW5kaW5nIG9uIHRoZSByZWxhdGlvbnNoaXAKKwliZXR3ZWVuIENPTkZJR19SQ1VfRkFOT1VULCBDT05GSUdfUkNVX0ZBTk9VVF9MRUFGIChwb3NzaWJseQorCWFkanVzdGVkIHVzaW5nIHRoZSByY3VfZmFub3V0X2xlYWYga2VybmVsIGJvb3QgcGFyYW1ldGVyKSwgYW5kCisJQ09ORklHX05SX0NQVVMgKHBvc3NpYmx5IGFkanVzdGVkIHVzaW5nIHRoZSBucl9jcHVfaWRzIGNvdW50IG9mCisJcG9zc2libGUgQ1BVcyBmb3IgdGhlIGJvb3RpbmcgaGFyZHdhcmUpLgorCisJbwlUaGUgbnVtYmVycyBzZXBhcmF0ZWQgYnkgdGhlICIvIiBhcmUgdGhlIHFzbWFzayBmb2xsb3dlZAorCQlieSB0aGUgcXNtYXNraW5pdC4gIFRoZSBxc21hc2sgd2lsbCBoYXZlIG9uZSBiaXQKKwkJc2V0IGZvciBlYWNoIGVudGl0eSBpbiB0aGUgbmV4dCBsb3dlciBsZXZlbCB0aGF0IGhhcworCQlub3QgeWV0IGNoZWNrZWQgaW4gZm9yIHRoZSBjdXJyZW50IGdyYWNlIHBlcmlvZCAoImUiCisJCWluZGljYXRpbmcgQ1BVcyA1LCA2LCBhbmQgNyBpbiB0aGUgZXhhbXBsZSBhYm92ZSkuCisJCVRoZSBxc21hc2tpbml0IHdpbGwgaGF2ZSBvbmUgYml0IGZvciBlYWNoIGVudGl0eSB0aGF0IGlzCisJCWN1cnJlbnRseSBleHBlY3RlZCB0byBjaGVjayBpbiBkdXJpbmcgZWFjaCBncmFjZSBwZXJpb2QuCisJCVRoZSB2YWx1ZSBvZiBxc21hc2tpbml0IGlzIGFzc2lnbmVkIHRvIHRoYXQgb2YgcXNtYXNrCisJCWF0IHRoZSBiZWdpbm5pbmcgb2YgZWFjaCBncmFjZSBwZXJpb2QuCisKKwlvCVRoZSBjaGFyYWN0ZXJzIHNlcGFyYXRlZCBieSB0aGUgIj4iIGluZGljYXRlIHRoZSBzdGF0ZQorCQlvZiB0aGUgYmxvY2tlZC10YXNrcyBsaXN0cy4gIEEgIkciIHByZWNlZGluZyB0aGUgIj4iCisJCWluZGljYXRlcyB0aGF0IGF0IGxlYXN0IG9uZSB0YXNrIGJsb2NrZWQgaW4gYW4gUkNVCisJCXJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9uIGJsb2NrcyB0aGUgY3VycmVudCBncmFjZQorCQlwZXJpb2QsIHdoaWxlIGEgIkUiIHByZWNlZGluZyB0aGUgIj4iIGluZGljYXRlcyB0aGF0CisJCWF0IGxlYXN0IG9uZSB0YXNrIGJsb2NrZWQgaW4gYW4gUkNVIHJlYWQtc2lkZSBjcml0aWNhbAorCQlzZWN0aW9uIGJsb2NrcyB0aGUgY3VycmVudCBleHBlZGl0ZWQgZ3JhY2UgcGVyaW9kLgorCQlBICJUIiBjaGFyYWN0ZXIgZm9sbG93aW5nIHRoZSAiPiIgaW5kaWNhdGVzIHRoYXQgYXQKKwkJbGVhc3Qgb25lIHRhc2sgaXMgYmxvY2tlZCB3aXRoaW4gYW4gUkNVIHJlYWQtc2lkZQorCQljcml0aWNhbCBzZWN0aW9uLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgYW55IGN1cnJlbnQKKwkJZ3JhY2UgcGVyaW9kIChleHBlZGl0ZWQgb3Igbm9ybWFsKSBpcyBpbmNvbnZlbmllbmNlZC4KKwkJQSAiLiIgY2hhcmFjdGVyIGFwcGVhcnMgaWYgdGhlIGNvcnJlc3BvbmRpbmcgY29uZGl0aW9uCisJCWRvZXMgbm90IGhvbGQsIHNvIHRoYXQgIi4uPi4iIGluZGljYXRlcyB0aGF0IG5vIHRhc2tzCisJCWFyZSBibG9ja2VkLiAgSW4gY29udHJhc3QsICJHRT5UIiBpbmRpY2F0ZXMgbWF4aW1hbAorCQlpbmNvbnZlbmllbmNlIGZyb20gYmxvY2tlZCB0YXNrcy4gIENPTkZJR19UUkVFX1JDVQorCQlidWlsZHMgb2YgdGhlIGtlcm5lbCB3aWxsIGFsd2F5cyBzaG93ICIuLj4uIi4KKworCW8JVGhlIG51bWJlcnMgc2VwYXJhdGVkIGJ5IHRoZSAiOiIgYXJlIHRoZSByYW5nZSBvZiBDUFVzCisJCXNlcnZlZCBieSB0aGlzIHN0cnVjdCByY3Vfbm9kZS4gIFRoaXMgY2FuIGJlIGhlbHBmdWwKKwkJaW4gd29ya2luZyBvdXQgaG93IHRoZSBoaWVyYXJjaHkgaXMgd2lyZWQgdG9nZXRoZXIuCisKKwkJRm9yIGV4YW1wbGUsIHRoZSBleGFtcGxlIHJjdV9ub2RlIHN0cnVjdHVyZSBzaG93biBhYm92ZQorCQloYXMgIjA6NyIsIGluZGljYXRpbmcgdGhhdCBpdCBjb3ZlcnMgQ1BVcyAwIHRocm91Z2ggNy4KKworCW8JVGhlIG51bWJlciBhZnRlciB0aGUgIl4iIGluZGljYXRlcyB0aGUgYml0IGluIHRoZQorCQluZXh0IGhpZ2hlciBsZXZlbCByY3Vfbm9kZSBzdHJ1Y3R1cmUgdGhhdCB0aGlzIHJjdV9ub2RlCisJCXN0cnVjdHVyZSBjb3JyZXNwb25kcyB0by4gIEZvciBleGFtcGxlLCB0aGUgImQvZCAuLj4uIDQ6NworCQleMSIgaGFzIGEgIjEiIGluIHRoaXMgcG9zaXRpb24sIGluZGljYXRpbmcgdGhhdCBpdAorCQljb3JyZXNwb25kcyB0byB0aGUgIjEiIGJpdCBpbiB0aGUgIjMiIHNob3duIGluIHRoZQorCQkiMy8zIC4uPi4gMDo3IF4wIiBlbnRyeSBvbiB0aGUgbmV4dCBsZXZlbCB1cC4KKworCitUaGUgb3V0cHV0IG9mICJjYXQgcmN1L3JjdV9zY2hlZC9yY3VfcGVuZGluZyIgbG9va3MgYXMgZm9sbG93czoKKworICAwIW5wPTI2MTExIHFzcD0yOSBycHE9NTM4NiBjYnI9MSBjbmc9NTcwIGdwYz0zNjc0IGdwcz01Nzcgbm49MTU5MDMgbmR3PTAKKyAgMSFucD0yODkxMyBxc3A9MzUgcnBxPTYwOTcgY2JyPTEgY25nPTQ0OCBncGM9MzcwMCBncHM9NTU0IG5uPTE4MTEzIG5kdz0wCisgIDIhbnA9MzI3NDAgcXNwPTM3IHJwcT02MjAyIGNicj0wIGNuZz00NzYgZ3BjPTQ2MjcgZ3BzPTU0NiBubj0yMDg4OSBuZHc9MAorICAzIG5wPTIzNjc5IHFzcD0yMiBycHE9NTA0NCBjYnI9MSBjbmc9NDE1IGdwYz0zNDAzIGdwcz0zNDcgbm49MTQ0NjkgbmR3PTAKKyAgNCFucD0zMDcxNCBxc3A9NCBycHE9NTU3NCBjYnI9MCBjbmc9NTI4IGdwYz0zOTMxIGdwcz02Mzkgbm49MjAwNDIgbmR3PTAKKyAgNSBucD0yODkxMCBxc3A9MiBycHE9NTI0NiBjYnI9MCBjbmc9NDI4IGdwYz00MTA1IGdwcz03MDkgbm49MTg0MjIgbmR3PTAKKyAgNiFucD0zODY0OCBxc3A9NSBycHE9NzA3NiBjYnI9MCBjbmc9ODQwIGdwYz00MDcyIGdwcz05NjEgbm49MjU2OTkgbmR3PTAKKyAgNyBucD0zNzI3NSBxc3A9MiBycHE9Njg3MyBjYnI9MCBjbmc9ODY4IGdwYz0zNDE2IGdwcz05NzEgbm49MjUxNDcgbmR3PTAKKworVGhlIGZpZWxkcyBhcmUgYXMgZm9sbG93czoKKworbwlUaGUgbGVhZGluZyBudW1iZXIgaXMgdGhlIENQVSBudW1iZXIsIHdpdGggIiEiIGluZGljYXRpbmcKKwlhbiBvZmZsaW5lIENQVS4KKworbwkibnAiIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBfX3JjdV9wZW5kaW5nKCkgaGFzIGJlZW4gaW52b2tlZAorCWZvciB0aGUgY29ycmVzcG9uZGluZyBmbGF2b3Igb2YgUkNVLgorCitvCSJxc3AiIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCB0aGUgUkNVIHdhcyB3YWl0aW5nIGZvciBhCisJcXVpZXNjZW50IHN0YXRlIGZyb20gdGhpcyBDUFUuCisKK28JInJwcSIgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IHRoZSBDUFUgaGFkIHBhc3NlZCB0aHJvdWdoCisJYSBxdWllc2NlbnQgc3RhdGUsIGJ1dCBub3QgeWV0IHJlcG9ydGVkIGl0IHRvIFJDVS4KKworbwkiY2JyIiBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgdGhpcyBDUFUgaGFkIFJDVSBjYWxsYmFja3MKKwl0aGF0IGhhZCBwYXNzZWQgdGhyb3VnaCBhIGdyYWNlIHBlcmlvZCwgYW5kIHdlcmUgdGh1cyByZWFkeQorCXRvIGJlIGludm9rZWQuCisKK28JImNuZyIgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IHRoaXMgQ1BVIG5lZWRlZCBhbm90aGVyCisJZ3JhY2UgcGVyaW9kIHdoaWxlIFJDVSB3YXMgaWRsZS4KKworbwkiZ3BjIiBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYW4gb2xkIGdyYWNlIHBlcmlvZCBoYWQKKwljb21wbGV0ZWQsIGJ1dCB0aGlzIENQVSB3YXMgbm90IHlldCBhd2FyZSBvZiBpdC4KKworbwkiZ3BzIiBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYSBuZXcgZ3JhY2UgcGVyaW9kIGhhZCBzdGFydGVkLAorCWJ1dCB0aGlzIENQVSB3YXMgbm90IHlldCBhd2FyZSBvZiBpdC4KKworbwkibmR3IiBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYSB3YWtldXAgb2YgYW4gcmN1bworCWNhbGxiYWNrLW9mZmxvYWQga3RocmVhZCBoYWQgdG8gYmUgZGVmZXJyZWQgaW4gb3JkZXIgdG8gYXZvaWQKKwlkZWFkbG9jay4KKworbwkibm4iIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCB0aGlzIENQVSBuZWVkZWQgbm90aGluZy4KKworCitUaGUgb3V0cHV0IG9mICJjYXQgcmN1L3JjdWJvb3N0IiBsb29rcyBhcyBmb2xsb3dzOgorCiswOjMgdGFza3M9Li4uLiBrdD1XIG50Yj0wIG5lYj0wIG5uYj0wIGo9Yzg2NCBidD1jODk0CisgICAgYmFsazogbnQ9MCBlZ3Q9NDY5NSBidD0wIG5iPTAgbnk9NTYgbm9zPTAKKzQ6NyB0YXNrcz0uLi4uIGt0PVcgbnRiPTAgbmViPTAgbm5iPTAgaj1jODY0IGJ0PWM4OTQKKyAgICBiYWxrOiBudD0wIGVndD02NTQxIGJ0PTAgbmI9MCBueT0xMjYgbm9zPTAKKworVGhpcyBpbmZvcm1hdGlvbiBpcyBvdXRwdXQgb25seSBmb3IgcmN1X3ByZWVtcHQuICBFYWNoIHR3by1saW5lIGVudHJ5Citjb3JyZXNwb25kcyB0byBhIGxlYWYgcmN1X25vZGUgc3RydWN0dXJlLiAgVGhlIGZpZWxkcyBhcmUgYXMgZm9sbG93czoKKworbwkibjptIiBpcyB0aGUgQ1BVLW51bWJlciByYW5nZSBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgdHdvLWxpbmUKKwllbnRyeS4gIEluIHRoZSBzYW1wbGUgb3V0cHV0IGFib3ZlLCB0aGUgZmlyc3QgZW50cnkgY292ZXJzCisJQ1BVcyB6ZXJvIHRocm91Z2ggdGhyZWUgYW5kIHRoZSBzZWNvbmQgZW50cnkgY292ZXJzIENQVXMgZm91cgorCXRocm91Z2ggc2V2ZW4uCisKK28JInRhc2tzPVRORUIiIGdpdmVzIHRoZSBzdGF0ZSBvZiB0aGUgdmFyaW91cyBzZWdtZW50cyBvZiB0aGUKKwlybnAtPmJsb2NrZWRfdGFza3MgbGlzdDoKKworCSJUIglUaGlzIGluZGljYXRlcyB0aGF0IHRoZXJlIGFyZSBzb21lIHRhc2tzIHRoYXQgYmxvY2tlZAorCQl3aGlsZSBydW5uaW5nIG9uIG9uZSBvZiB0aGUgY29ycmVzcG9uZGluZyBDUFVzIHdoaWxlCisJCWluIGFuIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbi4KKworCSJOIglUaGlzIGluZGljYXRlcyB0aGF0IHNvbWUgb2YgdGhlIGJsb2NrZWQgdGFza3MgYXJlIHByZXZlbnRpbmcKKwkJdGhlIGN1cnJlbnQgbm9ybWFsIChub24tZXhwZWRpdGVkKSBncmFjZSBwZXJpb2QgZnJvbQorCQljb21wbGV0aW5nLgorCisJIkUiCVRoaXMgaW5kaWNhdGVzIHRoYXQgc29tZSBvZiB0aGUgYmxvY2tlZCB0YXNrcyBhcmUgcHJldmVudGluZworCQl0aGUgY3VycmVudCBleHBlZGl0ZWQgZ3JhY2UgcGVyaW9kIGZyb20gY29tcGxldGluZy4KKworCSJCIglUaGlzIGluZGljYXRlcyB0aGF0IHNvbWUgb2YgdGhlIGJsb2NrZWQgdGFza3MgYXJlIGluCisJCW5lZWQgb2YgUkNVIHByaW9yaXR5IGJvb3N0aW5nLgorCisJRWFjaCBjaGFyYWN0ZXIgaXMgcmVwbGFjZWQgd2l0aCAiLiIgaWYgdGhlIGNvcnJlc3BvbmRpbmcKKwljb25kaXRpb24gZG9lcyBub3QgaG9sZC4KKworbwkia3QiIGlzIHRoZSBzdGF0ZSBvZiB0aGUgUkNVIHByaW9yaXR5LWJvb3N0aW5nIGtlcm5lbAorCXRocmVhZCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgcmN1X25vZGUgc3RydWN0dXJlLgorCVRoZSBzdGF0ZSBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisKKwkiUyIJVGhlIGtlcm5lbCB0aHJlYWQgaXMgc3RvcHBlZCwgaW4gb3RoZXIgd29yZHMsIGFsbAorCQlDUFVzIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyByY3Vfbm9kZSBzdHJ1Y3R1cmUgYXJlCisJCW9mZmxpbmUuCisKKwkiUiIJVGhlIGtlcm5lbCB0aHJlYWQgaXMgcnVubmluZy4KKworCSJXIglUaGUga2VybmVsIHRocmVhZCBpcyB3YWl0aW5nIGJlY2F1c2UgdGhlcmUgaXMgbm8gd29yaworCQlmb3IgaXQgdG8gZG8uCisKKwkiWSIJVGhlIGtlcm5lbCB0aHJlYWQgaXMgeWllbGRpbmcgdG8gYXZvaWQgaG9nZ2luZyBDUFUuCisKKwkiPyIJVW5rbm93biB2YWx1ZSwgaW5kaWNhdGVzIGEgYnVnLgorCitvCSJudGIiIGlzIHRoZSBudW1iZXIgb2YgdGFza3MgYm9vc3RlZC4KKworbwkibmViIiBpcyB0aGUgbnVtYmVyIG9mIHRhc2tzIGJvb3N0ZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgYW4KKwlleHBlZGl0ZWQgZ3JhY2UgcGVyaW9kLgorCitvCSJubmIiIGlzIHRoZSBudW1iZXIgb2YgdGFza3MgYm9vc3RlZCBpbiBvcmRlciB0byBjb21wbGV0ZSBhCisJbm9ybWFsIChub24tZXhwZWRpdGVkKSBncmFjZSBwZXJpb2QuICBXaGVuIGJvb3N0aW5nIGEgdGFzaworCXRoYXQgd2FzIGJsb2NraW5nIGJvdGggYW4gZXhwZWRpdGVkIGFuZCBhIG5vcm1hbCBncmFjZSBwZXJpb2QsCisJaXQgaXMgY291bnRlZCBhZ2FpbnN0IHRoZSBleHBlZGl0ZWQgdG90YWwgYWJvdmUuCisKK28JImoiIGlzIHRoZSBsb3ctb3JkZXIgMTYgYml0cyBvZiB0aGUgamlmZmllcyBjb3VudGVyIGluCisJaGV4YWRlY2ltYWwuCisKK28JImJ0IiBpcyB0aGUgbG93LW9yZGVyIDE2IGJpdHMgb2YgdGhlIHZhbHVlIHRoYXQgdGhlIGppZmZpZXMKKwljb3VudGVyIHdpbGwgaGF2ZSB3aGVuIHdlIG5leHQgc3RhcnQgYm9vc3RpbmcsIGFzc3VtaW5nIHRoYXQKKwl0aGUgY3VycmVudCBncmFjZSBwZXJpb2QgZG9lcyBub3QgZW5kIGJlZm9yZWhhbmQuICBUaGlzIGlzCisJYWxzbyBpbiBoZXhhZGVjaW1hbC4KKworbwkiYmFsazogbnQiIGNvdW50cyB0aGUgbnVtYmVyIG9mIHRpbWVzIHdlIGRpZG4ndCBib29zdCAoaW4KKwlvdGhlciB3b3Jkcywgd2UgYmFsa2VkKSBldmVuIHRob3VnaCBpdCB3YXMgdGltZSB0byBib29zdCBiZWNhdXNlCisJdGhlcmUgd2VyZSBubyBibG9ja2VkIHRhc2tzIHRvIGJvb3N0LiAgVGhpcyBzaXR1YXRpb24gb2NjdXJzCisJd2hlbiB0aGVyZSBpcyBvbmUgYmxvY2tlZCB0YXNrIG9uIG9uZSByY3Vfbm9kZSBzdHJ1Y3R1cmUgYW5kCisJbm9uZSBvbiBzb21lIG90aGVyIHJjdV9ub2RlIHN0cnVjdHVyZS4KKworbwkiZWd0IiBjb3VudHMgdGhlIG51bWJlciBvZiB0aW1lcyB3ZSBiYWxrZWQgYmVjYXVzZSBhbHRob3VnaAorCXRoZXJlIHdlcmUgYmxvY2tlZCB0YXNrcywgbm9uZSBvZiB0aGVtIHdlcmUgYmxvY2tpbmcgdGhlCisJY3VycmVudCBncmFjZSBwZXJpb2QsIHdoZXRoZXIgZXhwZWRpdGVkIG9yIG90aGVyd2lzZS4KKworbwkiYnQiIGNvdW50cyB0aGUgbnVtYmVyIG9mIHRpbWVzIHdlIGJhbGtlZCBiZWNhdXNlIGJvb3N0aW5nCisJaGFkIGFscmVhZHkgYmVlbiBpbml0aWF0ZWQgZm9yIHRoZSBjdXJyZW50IGdyYWNlIHBlcmlvZC4KKworbwkibmIiIGNvdW50cyB0aGUgbnVtYmVyIG9mIHRpbWVzIHdlIGJhbGtlZCBiZWNhdXNlIHRoZXJlCisJd2FzIGF0IGxlYXN0IG9uZSB0YXNrIGJsb2NraW5nIHRoZSBjdXJyZW50IG5vbi1leHBlZGl0ZWQgZ3JhY2UKKwlwZXJpb2QgdGhhdCBuZXZlciBoYWQgYmxvY2tlZC4gIElmIGl0IGlzIGFscmVhZHkgcnVubmluZywgaXQKKwlqdXN0IHdvbid0IGhlbHAgdG8gYm9vc3QgaXRzIHByaW9yaXR5IQorCitvCSJueSIgY291bnRzIHRoZSBudW1iZXIgb2YgdGltZXMgd2UgYmFsa2VkIGJlY2F1c2UgaXQgd2FzCisJbm90IHlldCB0aW1lIHRvIHN0YXJ0IGJvb3N0aW5nLgorCitvCSJub3MiIGNvdW50cyB0aGUgbnVtYmVyIG9mIHRpbWVzIHdlIGJhbGtlZCBmb3Igb3RoZXIKKwlyZWFzb25zLCBlLmcuLCB0aGUgZ3JhY2UgcGVyaW9kIGVuZGVkIGZpcnN0LgorCisKK0NPTkZJR19USU5ZX1JDVSBkZWJ1Z2ZzIEZpbGVzIGFuZCBGb3JtYXRzCisKK1RoZXNlIGltcGxlbWVudGF0aW9ucyBvZiBSQ1UgcHJvdmlkZXMgYSBzaW5nbGUgZGVidWdmcyBmaWxlIHVuZGVyIHRoZQordG9wLWxldmVsIGRpcmVjdG9yeSBSQ1UsIG5hbWVseSByY3UvcmN1ZGF0YSwgd2hpY2ggZGlzcGxheXMgZmllbGRzIGluCityY3VfYmhfY3RybGJsayBhbmQgcmN1X3NjaGVkX2N0cmxibGsuCisKK1RoZSBvdXRwdXQgb2YgImNhdCByY3UvcmN1ZGF0YSIgaXMgYXMgZm9sbG93czoKKworcmN1X3NjaGVkOiBxbGVuOiAwCityY3VfYmg6IHFsZW46IDAKKworVGhpcyBpcyBzcGxpdCBpbnRvIHJjdV9zY2hlZCBhbmQgcmN1X2JoIHNlY3Rpb25zLiAgVGhlIGZpZWxkIGlzIGFzCitmb2xsb3dzOgorCitvCSJxbGVuIiBpcyB0aGUgbnVtYmVyIG9mIFJDVSBjYWxsYmFja3MgY3VycmVudGx5IHdhaXRpbmcgZWl0aGVyCisJZm9yIGFuIFJDVSBncmFjZSBwZXJpb2Qgb3Igd2FpdGluZyB0byBiZSBpbnZva2VkLiAgVGhpcyBpcyB0aGUKKwlvbmx5IGZpZWxkIHByZXNlbnQgZm9yIHJjdV9zY2hlZCBhbmQgcmN1X2JoLCBkdWUgdG8gdGhlCisJc2hvcnQtY2lyY3VpdGluZyBvZiBncmFjZSBwZXJpb2QgaW4gdGhvc2UgdHdvIGNhc2VzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SQ1Uvd2hhdGlzUkNVLnR4dCBiL0RvY3VtZW50YXRpb24vUkNVL3doYXRpc1JDVS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM0OWM2NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUkNVL3doYXRpc1JDVS50eHQKQEAgLTAsMCArMSwxMDMxIEBACitQbGVhc2Ugbm90ZSB0aGF0IHRoZSAiV2hhdCBpcyBSQ1U/IiBMV04gc2VyaWVzIGlzIGFuIGV4Y2VsbGVudCBwbGFjZQordG8gc3RhcnQgbGVhcm5pbmcgYWJvdXQgUkNVOgorCisxLglXaGF0IGlzIFJDVSwgRnVuZGFtZW50YWxseT8gIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzI2MjQ2NC8KKzIuCVdoYXQgaXMgUkNVPyBQYXJ0IDI6IFVzYWdlICAgaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvMjYzMTMwLworMy4JUkNVIHBhcnQgMzogdGhlIFJDVSBBUEkgICAgICBodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8yNjQwOTAvCis0LglUaGUgUkNVIEFQSSwgMjAxMCBFZGl0aW9uICAgIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzQxODg1My8KKworCitXaGF0IGlzIFJDVT8KKworUkNVIGlzIGEgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbSB0aGF0IHdhcyBhZGRlZCB0byB0aGUgTGludXgga2VybmVsCitkdXJpbmcgdGhlIDIuNSBkZXZlbG9wbWVudCBlZmZvcnQgdGhhdCBpcyBvcHRpbWl6ZWQgZm9yIHJlYWQtbW9zdGx5CitzaXR1YXRpb25zLiAgQWx0aG91Z2ggUkNVIGlzIGFjdHVhbGx5IHF1aXRlIHNpbXBsZSBvbmNlIHlvdSB1bmRlcnN0YW5kIGl0LAorZ2V0dGluZyB0aGVyZSBjYW4gc29tZXRpbWVzIGJlIGEgY2hhbGxlbmdlLiAgUGFydCBvZiB0aGUgcHJvYmxlbSBpcyB0aGF0Cittb3N0IG9mIHRoZSBwYXN0IGRlc2NyaXB0aW9ucyBvZiBSQ1UgaGF2ZSBiZWVuIHdyaXR0ZW4gd2l0aCB0aGUgbWlzdGFrZW4KK2Fzc3VtcHRpb24gdGhhdCB0aGVyZSBpcyAib25lIHRydWUgd2F5IiB0byBkZXNjcmliZSBSQ1UuICBJbnN0ZWFkLAordGhlIGV4cGVyaWVuY2UgaGFzIGJlZW4gdGhhdCBkaWZmZXJlbnQgcGVvcGxlIG11c3QgdGFrZSBkaWZmZXJlbnQgcGF0aHMKK3RvIGFycml2ZSBhdCBhbiB1bmRlcnN0YW5kaW5nIG9mIFJDVS4gIFRoaXMgZG9jdW1lbnQgcHJvdmlkZXMgc2V2ZXJhbAorZGlmZmVyZW50IHBhdGhzLCBhcyBmb2xsb3dzOgorCisxLglSQ1UgT1ZFUlZJRVcKKzIuCVdIQVQgSVMgUkNVJ1MgQ09SRSBBUEk/CiszLglXSEFUIEFSRSBTT01FIEVYQU1QTEUgVVNFUyBPRiBDT1JFIFJDVSBBUEk/Cis0LglXSEFUIElGIE1ZIFVQREFUSU5HIFRIUkVBRCBDQU5OT1QgQkxPQ0s/Cis1LglXSEFUIEFSRSBTT01FIFNJTVBMRSBJTVBMRU1FTlRBVElPTlMgT0YgUkNVPworNi4JQU5BTE9HWSBXSVRIIFJFQURFUi1XUklURVIgTE9DS0lORworNy4JRlVMTCBMSVNUIE9GIFJDVSBBUElzCis4LglBTlNXRVJTIFRPIFFVSUNLIFFVSVpaRVMKKworUGVvcGxlIHdobyBwcmVmZXIgc3RhcnRpbmcgd2l0aCBhIGNvbmNlcHR1YWwgb3ZlcnZpZXcgc2hvdWxkIGZvY3VzIG9uCitTZWN0aW9uIDEsIHRob3VnaCBtb3N0IHJlYWRlcnMgd2lsbCBwcm9maXQgYnkgcmVhZGluZyB0aGlzIHNlY3Rpb24gYXQKK3NvbWUgcG9pbnQuICBQZW9wbGUgd2hvIHByZWZlciB0byBzdGFydCB3aXRoIGFuIEFQSSB0aGF0IHRoZXkgY2FuIHRoZW4KK2V4cGVyaW1lbnQgd2l0aCBzaG91bGQgZm9jdXMgb24gU2VjdGlvbiAyLiAgUGVvcGxlIHdobyBwcmVmZXIgdG8gc3RhcnQKK3dpdGggZXhhbXBsZSB1c2VzIHNob3VsZCBmb2N1cyBvbiBTZWN0aW9ucyAzIGFuZCA0LiAgUGVvcGxlIHdobyBuZWVkIHRvCit1bmRlcnN0YW5kIHRoZSBSQ1UgaW1wbGVtZW50YXRpb24gc2hvdWxkIGZvY3VzIG9uIFNlY3Rpb24gNSwgdGhlbiBkaXZlCitpbnRvIHRoZSBrZXJuZWwgc291cmNlIGNvZGUuICBQZW9wbGUgd2hvIHJlYXNvbiBiZXN0IGJ5IGFuYWxvZ3kgc2hvdWxkCitmb2N1cyBvbiBTZWN0aW9uIDYuICBTZWN0aW9uIDcgc2VydmVzIGFzIGFuIGluZGV4IHRvIHRoZSBkb2Nib29rIEFQSQorZG9jdW1lbnRhdGlvbiwgYW5kIFNlY3Rpb24gOCBpcyB0aGUgdHJhZGl0aW9uYWwgYW5zd2VyIGtleS4KKworU28sIHN0YXJ0IHdpdGggdGhlIHNlY3Rpb24gdGhhdCBtYWtlcyB0aGUgbW9zdCBzZW5zZSB0byB5b3UgYW5kIHlvdXIKK3ByZWZlcnJlZCBtZXRob2Qgb2YgbGVhcm5pbmcuICBJZiB5b3UgbmVlZCB0byBrbm93IGV2ZXJ5dGhpbmcgYWJvdXQKK2V2ZXJ5dGhpbmcsIGZlZWwgZnJlZSB0byByZWFkIHRoZSB3aG9sZSB0aGluZyAtLSBidXQgaWYgeW91IGFyZSByZWFsbHkKK3RoYXQgdHlwZSBvZiBwZXJzb24sIHlvdSBoYXZlIHBlcnVzZWQgdGhlIHNvdXJjZSBjb2RlIGFuZCB3aWxsIHRoZXJlZm9yZQorbmV2ZXIgbmVlZCB0aGlzIGRvY3VtZW50IGFueXdheS4gIDstKQorCisKKzEuICBSQ1UgT1ZFUlZJRVcKKworVGhlIGJhc2ljIGlkZWEgYmVoaW5kIFJDVSBpcyB0byBzcGxpdCB1cGRhdGVzIGludG8gInJlbW92YWwiIGFuZAorInJlY2xhbWF0aW9uIiBwaGFzZXMuICBUaGUgcmVtb3ZhbCBwaGFzZSByZW1vdmVzIHJlZmVyZW5jZXMgdG8gZGF0YSBpdGVtcword2l0aGluIGEgZGF0YSBzdHJ1Y3R1cmUgKHBvc3NpYmx5IGJ5IHJlcGxhY2luZyB0aGVtIHdpdGggcmVmZXJlbmNlcyB0bworbmV3IHZlcnNpb25zIG9mIHRoZXNlIGRhdGEgaXRlbXMpLCBhbmQgY2FuIHJ1biBjb25jdXJyZW50bHkgd2l0aCByZWFkZXJzLgorVGhlIHJlYXNvbiB0aGF0IGl0IGlzIHNhZmUgdG8gcnVuIHRoZSByZW1vdmFsIHBoYXNlIGNvbmN1cnJlbnRseSB3aXRoCityZWFkZXJzIGlzIHRoZSBzZW1hbnRpY3Mgb2YgbW9kZXJuIENQVXMgZ3VhcmFudGVlIHRoYXQgcmVhZGVycyB3aWxsIHNlZQorZWl0aGVyIHRoZSBvbGQgb3IgdGhlIG5ldyB2ZXJzaW9uIG9mIHRoZSBkYXRhIHN0cnVjdHVyZSByYXRoZXIgdGhhbiBhCitwYXJ0aWFsbHkgdXBkYXRlZCByZWZlcmVuY2UuICBUaGUgcmVjbGFtYXRpb24gcGhhc2UgZG9lcyB0aGUgd29yayBvZiByZWNsYWltaW5nCisoZS5nLiwgZnJlZWluZykgdGhlIGRhdGEgaXRlbXMgcmVtb3ZlZCBmcm9tIHRoZSBkYXRhIHN0cnVjdHVyZSBkdXJpbmcgdGhlCityZW1vdmFsIHBoYXNlLiAgQmVjYXVzZSByZWNsYWltaW5nIGRhdGEgaXRlbXMgY2FuIGRpc3J1cHQgYW55IHJlYWRlcnMKK2NvbmN1cnJlbnRseSByZWZlcmVuY2luZyB0aG9zZSBkYXRhIGl0ZW1zLCB0aGUgcmVjbGFtYXRpb24gcGhhc2UgbXVzdAorbm90IHN0YXJ0IHVudGlsIHJlYWRlcnMgbm8gbG9uZ2VyIGhvbGQgcmVmZXJlbmNlcyB0byB0aG9zZSBkYXRhIGl0ZW1zLgorCitTcGxpdHRpbmcgdGhlIHVwZGF0ZSBpbnRvIHJlbW92YWwgYW5kIHJlY2xhbWF0aW9uIHBoYXNlcyBwZXJtaXRzIHRoZQordXBkYXRlciB0byBwZXJmb3JtIHRoZSByZW1vdmFsIHBoYXNlIGltbWVkaWF0ZWx5LCBhbmQgdG8gZGVmZXIgdGhlCityZWNsYW1hdGlvbiBwaGFzZSB1bnRpbCBhbGwgcmVhZGVycyBhY3RpdmUgZHVyaW5nIHRoZSByZW1vdmFsIHBoYXNlIGhhdmUKK2NvbXBsZXRlZCwgZWl0aGVyIGJ5IGJsb2NraW5nIHVudGlsIHRoZXkgZmluaXNoIG9yIGJ5IHJlZ2lzdGVyaW5nIGEKK2NhbGxiYWNrIHRoYXQgaXMgaW52b2tlZCBhZnRlciB0aGV5IGZpbmlzaC4gIE9ubHkgcmVhZGVycyB0aGF0IGFyZSBhY3RpdmUKK2R1cmluZyB0aGUgcmVtb3ZhbCBwaGFzZSBuZWVkIGJlIGNvbnNpZGVyZWQsIGJlY2F1c2UgYW55IHJlYWRlciBzdGFydGluZworYWZ0ZXIgdGhlIHJlbW92YWwgcGhhc2Ugd2lsbCBiZSB1bmFibGUgdG8gZ2FpbiBhIHJlZmVyZW5jZSB0byB0aGUgcmVtb3ZlZAorZGF0YSBpdGVtcywgYW5kIHRoZXJlZm9yZSBjYW5ub3QgYmUgZGlzcnVwdGVkIGJ5IHRoZSByZWNsYW1hdGlvbiBwaGFzZS4KKworU28gdGhlIHR5cGljYWwgUkNVIHVwZGF0ZSBzZXF1ZW5jZSBnb2VzIHNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmc6CisKK2EuCVJlbW92ZSBwb2ludGVycyB0byBhIGRhdGEgc3RydWN0dXJlLCBzbyB0aGF0IHN1YnNlcXVlbnQKKwlyZWFkZXJzIGNhbm5vdCBnYWluIGEgcmVmZXJlbmNlIHRvIGl0LgorCitiLglXYWl0IGZvciBhbGwgcHJldmlvdXMgcmVhZGVycyB0byBjb21wbGV0ZSB0aGVpciBSQ1UgcmVhZC1zaWRlCisJY3JpdGljYWwgc2VjdGlvbnMuCisKK2MuCUF0IHRoaXMgcG9pbnQsIHRoZXJlIGNhbm5vdCBiZSBhbnkgcmVhZGVycyB3aG8gaG9sZCByZWZlcmVuY2VzCisJdG8gdGhlIGRhdGEgc3RydWN0dXJlLCBzbyBpdCBub3cgbWF5IHNhZmVseSBiZSByZWNsYWltZWQKKwkoZS5nLiwga2ZyZWUoKWQpLgorCitTdGVwIChiKSBhYm92ZSBpcyB0aGUga2V5IGlkZWEgdW5kZXJseWluZyBSQ1UncyBkZWZlcnJlZCBkZXN0cnVjdGlvbi4KK1RoZSBhYmlsaXR5IHRvIHdhaXQgdW50aWwgYWxsIHJlYWRlcnMgYXJlIGRvbmUgYWxsb3dzIFJDVSByZWFkZXJzIHRvCit1c2UgbXVjaCBsaWdodGVyLXdlaWdodCBzeW5jaHJvbml6YXRpb24sIGluIHNvbWUgY2FzZXMsIGFic29sdXRlbHkgbm8KK3N5bmNocm9uaXphdGlvbiBhdCBhbGwuICBJbiBjb250cmFzdCwgaW4gbW9yZSBjb252ZW50aW9uYWwgbG9jay1iYXNlZAorc2NoZW1lcywgcmVhZGVycyBtdXN0IHVzZSBoZWF2eS13ZWlnaHQgc3luY2hyb25pemF0aW9uIGluIG9yZGVyIHRvCitwcmV2ZW50IGFuIHVwZGF0ZXIgZnJvbSBkZWxldGluZyB0aGUgZGF0YSBzdHJ1Y3R1cmUgb3V0IGZyb20gdW5kZXIgdGhlbS4KK1RoaXMgaXMgYmVjYXVzZSBsb2NrLWJhc2VkIHVwZGF0ZXJzIHR5cGljYWxseSB1cGRhdGUgZGF0YSBpdGVtcyBpbiBwbGFjZSwKK2FuZCBtdXN0IHRoZXJlZm9yZSBleGNsdWRlIHJlYWRlcnMuICBJbiBjb250cmFzdCwgUkNVLWJhc2VkIHVwZGF0ZXJzCit0eXBpY2FsbHkgdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGZhY3QgdGhhdCB3cml0ZXMgdG8gc2luZ2xlIGFsaWduZWQKK3BvaW50ZXJzIGFyZSBhdG9taWMgb24gbW9kZXJuIENQVXMsIGFsbG93aW5nIGF0b21pYyBpbnNlcnRpb24sIHJlbW92YWwsCithbmQgcmVwbGFjZW1lbnQgb2YgZGF0YSBpdGVtcyBpbiBhIGxpbmtlZCBzdHJ1Y3R1cmUgd2l0aG91dCBkaXNydXB0aW5nCityZWFkZXJzLiAgQ29uY3VycmVudCBSQ1UgcmVhZGVycyBjYW4gdGhlbiBjb250aW51ZSBhY2Nlc3NpbmcgdGhlIG9sZAordmVyc2lvbnMsIGFuZCBjYW4gZGlzcGVuc2Ugd2l0aCB0aGUgYXRvbWljIG9wZXJhdGlvbnMsIG1lbW9yeSBiYXJyaWVycywKK2FuZCBjb21tdW5pY2F0aW9ucyBjYWNoZSBtaXNzZXMgdGhhdCBhcmUgc28gZXhwZW5zaXZlIG9uIHByZXNlbnQtZGF5CitTTVAgY29tcHV0ZXIgc3lzdGVtcywgZXZlbiBpbiBhYnNlbmNlIG9mIGxvY2sgY29udGVudGlvbi4KKworSW4gdGhlIHRocmVlLXN0ZXAgcHJvY2VkdXJlIHNob3duIGFib3ZlLCB0aGUgdXBkYXRlciBpcyBwZXJmb3JtaW5nIGJvdGgKK3RoZSByZW1vdmFsIGFuZCB0aGUgcmVjbGFtYXRpb24gc3RlcCwgYnV0IGl0IGlzIG9mdGVuIGhlbHBmdWwgZm9yIGFuCitlbnRpcmVseSBkaWZmZXJlbnQgdGhyZWFkIHRvIGRvIHRoZSByZWNsYW1hdGlvbiwgYXMgaXMgaW4gZmFjdCB0aGUgY2FzZQoraW4gdGhlIExpbnV4IGtlcm5lbCdzIGRpcmVjdG9yeS1lbnRyeSBjYWNoZSAoZGNhY2hlKS4gIEV2ZW4gaWYgdGhlIHNhbWUKK3RocmVhZCBwZXJmb3JtcyBib3RoIHRoZSB1cGRhdGUgc3RlcCAoc3RlcCAoYSkgYWJvdmUpIGFuZCB0aGUgcmVjbGFtYXRpb24KK3N0ZXAgKHN0ZXAgKGMpIGFib3ZlKSwgaXQgaXMgb2Z0ZW4gaGVscGZ1bCB0byB0aGluayBvZiB0aGVtIHNlcGFyYXRlbHkuCitGb3IgZXhhbXBsZSwgUkNVIHJlYWRlcnMgYW5kIHVwZGF0ZXJzIG5lZWQgbm90IGNvbW11bmljYXRlIGF0IGFsbCwKK2J1dCBSQ1UgcHJvdmlkZXMgaW1wbGljaXQgbG93LW92ZXJoZWFkIGNvbW11bmljYXRpb24gYmV0d2VlbiByZWFkZXJzCithbmQgcmVjbGFpbWVycywgbmFtZWx5LCBpbiBzdGVwIChiKSBhYm92ZS4KKworU28gaG93IHRoZSBoZWNrIGNhbiBhIHJlY2xhaW1lciB0ZWxsIHdoZW4gYSByZWFkZXIgaXMgZG9uZSwgZ2l2ZW4KK3RoYXQgcmVhZGVycyBhcmUgbm90IGRvaW5nIGFueSBzb3J0IG9mIHN5bmNocm9uaXphdGlvbiBvcGVyYXRpb25zPz8/CitSZWFkIG9uIHRvIGxlYXJuIGFib3V0IGhvdyBSQ1UncyBBUEkgbWFrZXMgdGhpcyBlYXN5LgorCisKKzIuICBXSEFUIElTIFJDVSdTIENPUkUgQVBJPworCitUaGUgY29yZSBSQ1UgQVBJIGlzIHF1aXRlIHNtYWxsOgorCithLglyY3VfcmVhZF9sb2NrKCkKK2IuCXJjdV9yZWFkX3VubG9jaygpCitjLglzeW5jaHJvbml6ZV9yY3UoKSAvIGNhbGxfcmN1KCkKK2QuCXJjdV9hc3NpZ25fcG9pbnRlcigpCitlLglyY3VfZGVyZWZlcmVuY2UoKQorCitUaGVyZSBhcmUgbWFueSBvdGhlciBtZW1iZXJzIG9mIHRoZSBSQ1UgQVBJLCBidXQgdGhlIHJlc3QgY2FuIGJlCitleHByZXNzZWQgaW4gdGVybXMgb2YgdGhlc2UgZml2ZSwgdGhvdWdoIG1vc3QgaW1wbGVtZW50YXRpb25zIGluc3RlYWQKK2V4cHJlc3Mgc3luY2hyb25pemVfcmN1KCkgaW4gdGVybXMgb2YgdGhlIGNhbGxfcmN1KCkgY2FsbGJhY2sgQVBJLgorCitUaGUgZml2ZSBjb3JlIFJDVSBBUElzIGFyZSBkZXNjcmliZWQgYmVsb3csIHRoZSBvdGhlciAxOCB3aWxsIGJlIGVudW1lcmF0ZWQKK2xhdGVyLiAgU2VlIHRoZSBrZXJuZWwgZG9jYm9vayBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm8sIG9yIGxvb2sgZGlyZWN0bHkKK2F0IHRoZSBmdW5jdGlvbiBoZWFkZXIgY29tbWVudHMuCisKK3JjdV9yZWFkX2xvY2soKQorCisJdm9pZCByY3VfcmVhZF9sb2NrKHZvaWQpOworCisJVXNlZCBieSBhIHJlYWRlciB0byBpbmZvcm0gdGhlIHJlY2xhaW1lciB0aGF0IHRoZSByZWFkZXIgaXMKKwllbnRlcmluZyBhbiBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb24uICBJdCBpcyBpbGxlZ2FsCisJdG8gYmxvY2sgd2hpbGUgaW4gYW4gUkNVIHJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9uLCB0aG91Z2gKKwlrZXJuZWxzIGJ1aWx0IHdpdGggQ09ORklHX1BSRUVNUFRfUkNVIGNhbiBwcmVlbXB0IFJDVQorCXJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9ucy4gIEFueSBSQ1UtcHJvdGVjdGVkIGRhdGEgc3RydWN0dXJlCisJYWNjZXNzZWQgZHVyaW5nIGFuIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbiBpcyBndWFyYW50ZWVkIHRvCisJcmVtYWluIHVucmVjbGFpbWVkIGZvciB0aGUgZnVsbCBkdXJhdGlvbiBvZiB0aGF0IGNyaXRpY2FsIHNlY3Rpb24uCisJUmVmZXJlbmNlIGNvdW50cyBtYXkgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIFJDVSB0byBtYWludGFpbgorCWxvbmdlci10ZXJtIHJlZmVyZW5jZXMgdG8gZGF0YSBzdHJ1Y3R1cmVzLgorCityY3VfcmVhZF91bmxvY2soKQorCisJdm9pZCByY3VfcmVhZF91bmxvY2sodm9pZCk7CisKKwlVc2VkIGJ5IGEgcmVhZGVyIHRvIGluZm9ybSB0aGUgcmVjbGFpbWVyIHRoYXQgdGhlIHJlYWRlciBpcworCWV4aXRpbmcgYW4gUkNVIHJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9uLiAgTm90ZSB0aGF0IFJDVQorCXJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9ucyBtYXkgYmUgbmVzdGVkIGFuZC9vciBvdmVybGFwcGluZy4KKworc3luY2hyb25pemVfcmN1KCkKKworCXZvaWQgc3luY2hyb25pemVfcmN1KHZvaWQpOworCisJTWFya3MgdGhlIGVuZCBvZiB1cGRhdGVyIGNvZGUgYW5kIHRoZSBiZWdpbm5pbmcgb2YgcmVjbGFpbWVyCisJY29kZS4gIEl0IGRvZXMgdGhpcyBieSBibG9ja2luZyB1bnRpbCBhbGwgcHJlLWV4aXN0aW5nIFJDVQorCXJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9ucyBvbiBhbGwgQ1BVcyBoYXZlIGNvbXBsZXRlZC4KKwlOb3RlIHRoYXQgc3luY2hyb25pemVfcmN1KCkgd2lsbCAtbm90LSBuZWNlc3NhcmlseSB3YWl0IGZvcgorCWFueSBzdWJzZXF1ZW50IFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbnMgdG8gY29tcGxldGUuCisJRm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2Ugb2YgZXZlbnRzOgorCisJICAgICAgICAgQ1BVIDAgICAgICAgICAgICAgICAgICBDUFUgMSAgICAgICAgICAgICAgICAgQ1BVIDIKKwkgICAgIC0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tCisJIDEuICByY3VfcmVhZF9sb2NrKCkKKwkgMi4gICAgICAgICAgICAgICAgICAgIGVudGVycyBzeW5jaHJvbml6ZV9yY3UoKQorCSAzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmN1X3JlYWRfbG9jaygpCisJIDQuICByY3VfcmVhZF91bmxvY2soKQorCSA1LiAgICAgICAgICAgICAgICAgICAgIGV4aXRzIHN5bmNocm9uaXplX3JjdSgpCisJIDYuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjdV9yZWFkX3VubG9jaygpCisKKwlUbyByZWl0ZXJhdGUsIHN5bmNocm9uaXplX3JjdSgpIHdhaXRzIG9ubHkgZm9yIG9uZ29pbmcgUkNVCisJcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb25zIHRvIGNvbXBsZXRlLCBub3QgbmVjZXNzYXJpbHkgZm9yCisJYW55IHRoYXQgYmVnaW4gYWZ0ZXIgc3luY2hyb25pemVfcmN1KCkgaXMgaW52b2tlZC4KKworCU9mIGNvdXJzZSwgc3luY2hyb25pemVfcmN1KCkgZG9lcyBub3QgbmVjZXNzYXJpbHkgcmV0dXJuCisJLWltbWVkaWF0ZWx5LSBhZnRlciB0aGUgbGFzdCBwcmUtZXhpc3RpbmcgUkNVIHJlYWQtc2lkZSBjcml0aWNhbAorCXNlY3Rpb24gY29tcGxldGVzLiAgRm9yIG9uZSB0aGluZywgdGhlcmUgbWlnaHQgd2VsbCBiZSBzY2hlZHVsaW5nCisJZGVsYXlzLiAgRm9yIGFub3RoZXIgdGhpbmcsIG1hbnkgUkNVIGltcGxlbWVudGF0aW9ucyBwcm9jZXNzCisJcmVxdWVzdHMgaW4gYmF0Y2hlcyBpbiBvcmRlciB0byBpbXByb3ZlIGVmZmljaWVuY2llcywgd2hpY2ggY2FuCisJZnVydGhlciBkZWxheSBzeW5jaHJvbml6ZV9yY3UoKS4KKworCVNpbmNlIHN5bmNocm9uaXplX3JjdSgpIGlzIHRoZSBBUEkgdGhhdCBtdXN0IGZpZ3VyZSBvdXQgd2hlbgorCXJlYWRlcnMgYXJlIGRvbmUsIGl0cyBpbXBsZW1lbnRhdGlvbiBpcyBrZXkgdG8gUkNVLiAgRm9yIFJDVQorCXRvIGJlIHVzZWZ1bCBpbiBhbGwgYnV0IHRoZSBtb3N0IHJlYWQtaW50ZW5zaXZlIHNpdHVhdGlvbnMsCisJc3luY2hyb25pemVfcmN1KCkncyBvdmVyaGVhZCBtdXN0IGFsc28gYmUgcXVpdGUgc21hbGwuCisKKwlUaGUgY2FsbF9yY3UoKSBBUEkgaXMgYSBjYWxsYmFjayBmb3JtIG9mIHN5bmNocm9uaXplX3JjdSgpLAorCWFuZCBpcyBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gYSBsYXRlciBzZWN0aW9uLiAgSW5zdGVhZCBvZgorCWJsb2NraW5nLCBpdCByZWdpc3RlcnMgYSBmdW5jdGlvbiBhbmQgYXJndW1lbnQgd2hpY2ggYXJlIGludm9rZWQKKwlhZnRlciBhbGwgb25nb2luZyBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb25zIGhhdmUgY29tcGxldGVkLgorCVRoaXMgY2FsbGJhY2sgdmFyaWFudCBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGluIHNpdHVhdGlvbnMgd2hlcmUKKwlpdCBpcyBpbGxlZ2FsIHRvIGJsb2NrIG9yIHdoZXJlIHVwZGF0ZS1zaWRlIHBlcmZvcm1hbmNlIGlzCisJY3JpdGljYWxseSBpbXBvcnRhbnQuCisKKwlIb3dldmVyLCB0aGUgY2FsbF9yY3UoKSBBUEkgc2hvdWxkIG5vdCBiZSB1c2VkIGxpZ2h0bHksIGFzIHVzZQorCW9mIHRoZSBzeW5jaHJvbml6ZV9yY3UoKSBBUEkgZ2VuZXJhbGx5IHJlc3VsdHMgaW4gc2ltcGxlciBjb2RlLgorCUluIGFkZGl0aW9uLCB0aGUgc3luY2hyb25pemVfcmN1KCkgQVBJIGhhcyB0aGUgbmljZSBwcm9wZXJ0eQorCW9mIGF1dG9tYXRpY2FsbHkgbGltaXRpbmcgdXBkYXRlIHJhdGUgc2hvdWxkIGdyYWNlIHBlcmlvZHMKKwliZSBkZWxheWVkLiAgVGhpcyBwcm9wZXJ0eSByZXN1bHRzIGluIHN5c3RlbSByZXNpbGllbmNlIGluIGZhY2UKKwlvZiBkZW5pYWwtb2Ytc2VydmljZSBhdHRhY2tzLiAgQ29kZSB1c2luZyBjYWxsX3JjdSgpIHNob3VsZCBsaW1pdAorCXVwZGF0ZSByYXRlIGluIG9yZGVyIHRvIGdhaW4gdGhpcyBzYW1lIHNvcnQgb2YgcmVzaWxpZW5jZS4gIFNlZQorCWNoZWNrbGlzdC50eHQgZm9yIHNvbWUgYXBwcm9hY2hlcyB0byBsaW1pdGluZyB0aGUgdXBkYXRlIHJhdGUuCisKK3JjdV9hc3NpZ25fcG9pbnRlcigpCisKKwl0eXBlb2YocCkgcmN1X2Fzc2lnbl9wb2ludGVyKHAsIHR5cGVvZihwKSB2KTsKKworCVllcywgcmN1X2Fzc2lnbl9wb2ludGVyKCkgLWlzLSBpbXBsZW1lbnRlZCBhcyBhIG1hY3JvLCB0aG91Z2ggaXQKKwl3b3VsZCBiZSBjb29sIHRvIGJlIGFibGUgdG8gZGVjbGFyZSBhIGZ1bmN0aW9uIGluIHRoaXMgbWFubmVyLgorCShDb21waWxlciBleHBlcnRzIHdpbGwgbm8gZG91YnQgZGlzYWdyZWUuKQorCisJVGhlIHVwZGF0ZXIgdXNlcyB0aGlzIGZ1bmN0aW9uIHRvIGFzc2lnbiBhIG5ldyB2YWx1ZSB0byBhbgorCVJDVS1wcm90ZWN0ZWQgcG9pbnRlciwgaW4gb3JkZXIgdG8gc2FmZWx5IGNvbW11bmljYXRlIHRoZSBjaGFuZ2UKKwlpbiB2YWx1ZSBmcm9tIHRoZSB1cGRhdGVyIHRvIHRoZSByZWFkZXIuICBUaGlzIGZ1bmN0aW9uIHJldHVybnMKKwl0aGUgbmV3IHZhbHVlLCBhbmQgYWxzbyBleGVjdXRlcyBhbnkgbWVtb3J5LWJhcnJpZXIgaW5zdHJ1Y3Rpb25zCisJcmVxdWlyZWQgZm9yIGEgZ2l2ZW4gQ1BVIGFyY2hpdGVjdHVyZS4KKworCVBlcmhhcHMganVzdCBhcyBpbXBvcnRhbnQsIGl0IHNlcnZlcyB0byBkb2N1bWVudCAoMSkgd2hpY2gKKwlwb2ludGVycyBhcmUgcHJvdGVjdGVkIGJ5IFJDVSBhbmQgKDIpIHRoZSBwb2ludCBhdCB3aGljaCBhCisJZ2l2ZW4gc3RydWN0dXJlIGJlY29tZXMgYWNjZXNzaWJsZSB0byBvdGhlciBDUFVzLiAgVGhhdCBzYWlkLAorCXJjdV9hc3NpZ25fcG9pbnRlcigpIGlzIG1vc3QgZnJlcXVlbnRseSB1c2VkIGluZGlyZWN0bHksIHZpYQorCXRoZSBfcmN1IGxpc3QtbWFuaXB1bGF0aW9uIHByaW1pdGl2ZXMgc3VjaCBhcyBsaXN0X2FkZF9yY3UoKS4KKworcmN1X2RlcmVmZXJlbmNlKCkKKworCXR5cGVvZihwKSByY3VfZGVyZWZlcmVuY2UocCk7CisKKwlMaWtlIHJjdV9hc3NpZ25fcG9pbnRlcigpLCByY3VfZGVyZWZlcmVuY2UoKSBtdXN0IGJlIGltcGxlbWVudGVkCisJYXMgYSBtYWNyby4KKworCVRoZSByZWFkZXIgdXNlcyByY3VfZGVyZWZlcmVuY2UoKSB0byBmZXRjaCBhbiBSQ1UtcHJvdGVjdGVkCisJcG9pbnRlciwgd2hpY2ggcmV0dXJucyBhIHZhbHVlIHRoYXQgbWF5IHRoZW4gYmUgc2FmZWx5CisJZGVyZWZlcmVuY2VkLiAgTm90ZSB0aGF0IHJjdV9kZWZlcmVuY2UoKSBkb2VzIG5vdCBhY3R1YWxseQorCWRlcmVmZXJlbmNlIHRoZSBwb2ludGVyLCBpbnN0ZWFkLCBpdCBwcm90ZWN0cyB0aGUgcG9pbnRlciBmb3IKKwlsYXRlciBkZXJlZmVyZW5jaW5nLiAgSXQgYWxzbyBleGVjdXRlcyBhbnkgbmVlZGVkIG1lbW9yeS1iYXJyaWVyCisJaW5zdHJ1Y3Rpb25zIGZvciBhIGdpdmVuIENQVSBhcmNoaXRlY3R1cmUuICBDdXJyZW50bHksIG9ubHkgQWxwaGEKKwluZWVkcyBtZW1vcnkgYmFycmllcnMgd2l0aGluIHJjdV9kZXJlZmVyZW5jZSgpIC0tIG9uIG90aGVyIENQVXMsCisJaXQgY29tcGlsZXMgdG8gbm90aGluZywgbm90IGV2ZW4gYSBjb21waWxlciBkaXJlY3RpdmUuCisKKwlDb21tb24gY29kaW5nIHByYWN0aWNlIHVzZXMgcmN1X2RlcmVmZXJlbmNlKCkgdG8gY29weSBhbgorCVJDVS1wcm90ZWN0ZWQgcG9pbnRlciB0byBhIGxvY2FsIHZhcmlhYmxlLCB0aGVuIGRlcmVmZXJlbmNlcworCXRoaXMgbG9jYWwgdmFyaWFibGUsIGZvciBleGFtcGxlIGFzIGZvbGxvd3M6CisKKwkJcCA9IHJjdV9kZXJlZmVyZW5jZShoZWFkLm5leHQpOworCQlyZXR1cm4gcC0+ZGF0YTsKKworCUhvd2V2ZXIsIGluIHRoaXMgY2FzZSwgb25lIGNvdWxkIGp1c3QgYXMgZWFzaWx5IGNvbWJpbmUgdGhlc2UKKwlpbnRvIG9uZSBzdGF0ZW1lbnQ6CisKKwkJcmV0dXJuIHJjdV9kZXJlZmVyZW5jZShoZWFkLm5leHQpLT5kYXRhOworCisJSWYgeW91IGFyZSBnb2luZyB0byBiZSBmZXRjaGluZyBtdWx0aXBsZSBmaWVsZHMgZnJvbSB0aGUKKwlSQ1UtcHJvdGVjdGVkIHN0cnVjdHVyZSwgdXNpbmcgdGhlIGxvY2FsIHZhcmlhYmxlIGlzIG9mCisJY291cnNlIHByZWZlcnJlZC4gIFJlcGVhdGVkIHJjdV9kZXJlZmVyZW5jZSgpIGNhbGxzIGxvb2sKKwl1Z2x5LCBkbyBub3QgZ3VhcmFudGVlIHRoYXQgdGhlIHNhbWUgcG9pbnRlciB3aWxsIGJlIHJldHVybmVkCisJaWYgYW4gdXBkYXRlIGhhcHBlbmVkIHdoaWxlIGluIHRoZSBjcml0aWNhbCBzZWN0aW9uLCBhbmQgaW5jdXIKKwl1bm5lY2Vzc2FyeSBvdmVyaGVhZCBvbiBBbHBoYSBDUFVzLgorCisJTm90ZSB0aGF0IHRoZSB2YWx1ZSByZXR1cm5lZCBieSByY3VfZGVyZWZlcmVuY2UoKSBpcyB2YWxpZAorCW9ubHkgd2l0aGluIHRoZSBlbmNsb3NpbmcgUkNVIHJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9uLgorCUZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGlzIC1ub3QtIGxlZ2FsOgorCisJCXJjdV9yZWFkX2xvY2soKTsKKwkJcCA9IHJjdV9kZXJlZmVyZW5jZShoZWFkLm5leHQpOworCQlyY3VfcmVhZF91bmxvY2soKTsKKwkJeCA9IHAtPmFkZHJlc3M7CS8qIEJVRyEhISAqLworCQlyY3VfcmVhZF9sb2NrKCk7CisJCXkgPSBwLT5kYXRhOwkvKiBCVUchISEgKi8KKwkJcmN1X3JlYWRfdW5sb2NrKCk7CisKKwlIb2xkaW5nIGEgcmVmZXJlbmNlIGZyb20gb25lIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbgorCXRvIGFub3RoZXIgaXMganVzdCBhcyBpbGxlZ2FsIGFzIGhvbGRpbmcgYSByZWZlcmVuY2UgZnJvbQorCW9uZSBsb2NrLWJhc2VkIGNyaXRpY2FsIHNlY3Rpb24gdG8gYW5vdGhlciEgIFNpbWlsYXJseSwKKwl1c2luZyBhIHJlZmVyZW5jZSBvdXRzaWRlIG9mIHRoZSBjcml0aWNhbCBzZWN0aW9uIGluIHdoaWNoCisJaXQgd2FzIGFjcXVpcmVkIGlzIGp1c3QgYXMgaWxsZWdhbCBhcyBkb2luZyBzbyB3aXRoIG5vcm1hbAorCWxvY2tpbmcuCisKKwlBcyB3aXRoIHJjdV9hc3NpZ25fcG9pbnRlcigpLCBhbiBpbXBvcnRhbnQgZnVuY3Rpb24gb2YKKwlyY3VfZGVyZWZlcmVuY2UoKSBpcyB0byBkb2N1bWVudCB3aGljaCBwb2ludGVycyBhcmUgcHJvdGVjdGVkIGJ5CisJUkNVLCBpbiBwYXJ0aWN1bGFyLCBmbGFnZ2luZyBhIHBvaW50ZXIgdGhhdCBpcyBzdWJqZWN0IHRvIGNoYW5naW5nCisJYXQgYW55IHRpbWUsIGluY2x1ZGluZyBpbW1lZGlhdGVseSBhZnRlciB0aGUgcmN1X2RlcmVmZXJlbmNlKCkuCisJQW5kLCBhZ2FpbiBsaWtlIHJjdV9hc3NpZ25fcG9pbnRlcigpLCByY3VfZGVyZWZlcmVuY2UoKSBpcworCXR5cGljYWxseSB1c2VkIGluZGlyZWN0bHksIHZpYSB0aGUgX3JjdSBsaXN0LW1hbmlwdWxhdGlvbgorCXByaW1pdGl2ZXMsIHN1Y2ggYXMgbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoKS4KKworVGhlIGZvbGxvd2luZyBkaWFncmFtIHNob3dzIGhvdyBlYWNoIEFQSSBjb21tdW5pY2F0ZXMgYW1vbmcgdGhlCityZWFkZXIsIHVwZGF0ZXIsIGFuZCByZWNsYWltZXIuCisKKworCSAgICByY3VfYXNzaWduX3BvaW50ZXIoKQorCSAgICAJCQkgICAgKy0tLS0tLS0tKworCSAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT58IHJlYWRlciB8LS0tLS0tLS0tKworCSAgICB8ICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0rICAgICAgICAgfAorCSAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfAorCSAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCBQcm90ZWN0OgorCSAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCByY3VfcmVhZF9sb2NrKCkKKwkgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgcmN1X3JlYWRfdW5sb2NrKCkKKwkgICAgfCAgICAgICAgcmN1X2RlcmVmZXJlbmNlKCkgIHwgICAgICAgICAgICAgIHwKKyAgICAgICArLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8CisgICAgICAgfCB1cGRhdGVyIHw8LS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgfAorICAgICAgICstLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYKKwkgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLSsKKwkgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPnwgcmVjbGFpbWVyIHwKKwkgICAgCQkJCSAgICAgICAgICstLS0tLS0tLS0tLSsKKwkgICAgICBEZWZlcjoKKwkgICAgICBzeW5jaHJvbml6ZV9yY3UoKSAmIGNhbGxfcmN1KCkKKworCitUaGUgUkNVIGluZnJhc3RydWN0dXJlIG9ic2VydmVzIHRoZSB0aW1lIHNlcXVlbmNlIG9mIHJjdV9yZWFkX2xvY2soKSwKK3JjdV9yZWFkX3VubG9jaygpLCBzeW5jaHJvbml6ZV9yY3UoKSwgYW5kIGNhbGxfcmN1KCkgaW52b2NhdGlvbnMgaW4KK29yZGVyIHRvIGRldGVybWluZSB3aGVuICgxKSBzeW5jaHJvbml6ZV9yY3UoKSBpbnZvY2F0aW9ucyBtYXkgcmV0dXJuCit0byB0aGVpciBjYWxsZXJzIGFuZCAoMikgY2FsbF9yY3UoKSBjYWxsYmFja3MgbWF5IGJlIGludm9rZWQuICBFZmZpY2llbnQKK2ltcGxlbWVudGF0aW9ucyBvZiB0aGUgUkNVIGluZnJhc3RydWN0dXJlIG1ha2UgaGVhdnkgdXNlIG9mIGJhdGNoaW5nIGluCitvcmRlciB0byBhbW9ydGl6ZSB0aGVpciBvdmVyaGVhZCBvdmVyIG1hbnkgdXNlcyBvZiB0aGUgY29ycmVzcG9uZGluZyBBUElzLgorCitUaGVyZSBhcmUgbm8gZmV3ZXIgdGhhbiB0aHJlZSBSQ1UgbWVjaGFuaXNtcyBpbiB0aGUgTGludXgga2VybmVsOyB0aGUKK2RpYWdyYW0gYWJvdmUgc2hvd3MgdGhlIGZpcnN0IG9uZSwgd2hpY2ggaXMgYnkgZmFyIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQuCitUaGUgcmN1X2RlcmVmZXJlbmNlKCkgYW5kIHJjdV9hc3NpZ25fcG9pbnRlcigpIHByaW1pdGl2ZXMgYXJlIHVzZWQgZm9yCithbGwgdGhyZWUgbWVjaGFuaXNtcywgYnV0IGRpZmZlcmVudCBkZWZlciBhbmQgcHJvdGVjdCBwcmltaXRpdmVzIGFyZQordXNlZCBhcyBmb2xsb3dzOgorCisJRGVmZXIJCQlQcm90ZWN0CisKK2EuCXN5bmNocm9uaXplX3JjdSgpCXJjdV9yZWFkX2xvY2soKSAvIHJjdV9yZWFkX3VubG9jaygpCisJY2FsbF9yY3UoKQkJcmN1X2RlcmVmZXJlbmNlKCkKKworYi4Jc3luY2hyb25pemVfcmN1X2JoKCkJcmN1X3JlYWRfbG9ja19iaCgpIC8gcmN1X3JlYWRfdW5sb2NrX2JoKCkKKwljYWxsX3JjdV9iaCgpCQlyY3VfZGVyZWZlcmVuY2VfYmgoKQorCitjLglzeW5jaHJvbml6ZV9zY2hlZCgpCXJjdV9yZWFkX2xvY2tfc2NoZWQoKSAvIHJjdV9yZWFkX3VubG9ja19zY2hlZCgpCisJY2FsbF9yY3Vfc2NoZWQoKQlwcmVlbXB0X2Rpc2FibGUoKSAvIHByZWVtcHRfZW5hYmxlKCkKKwkJCQlsb2NhbF9pcnFfc2F2ZSgpIC8gbG9jYWxfaXJxX3Jlc3RvcmUoKQorCQkJCWhhcmRpcnEgZW50ZXIgLyBoYXJkaXJxIGV4aXQKKwkJCQlOTUkgZW50ZXIgLyBOTUkgZXhpdAorCQkJCXJjdV9kZXJlZmVyZW5jZV9zY2hlZCgpCisKK1RoZXNlIHRocmVlIG1lY2hhbmlzbXMgYXJlIHVzZWQgYXMgZm9sbG93czoKKworYS4JUkNVIGFwcGxpZWQgdG8gbm9ybWFsIGRhdGEgc3RydWN0dXJlcy4KKworYi4JUkNVIGFwcGxpZWQgdG8gbmV0d29ya2luZyBkYXRhIHN0cnVjdHVyZXMgdGhhdCBtYXkgYmUgc3ViamVjdGVkCisJdG8gcmVtb3RlIGRlbmlhbC1vZi1zZXJ2aWNlIGF0dGFja3MuCisKK2MuCVJDVSBhcHBsaWVkIHRvIHNjaGVkdWxlciBhbmQgaW50ZXJydXB0L05NSS1oYW5kbGVyIHRhc2tzLgorCitBZ2FpbiwgbW9zdCB1c2VzIHdpbGwgYmUgb2YgKGEpLiAgVGhlIChiKSBhbmQgKGMpIGNhc2VzIGFyZSBpbXBvcnRhbnQKK2ZvciBzcGVjaWFsaXplZCB1c2VzLCBidXQgYXJlIHJlbGF0aXZlbHkgdW5jb21tb24uCisKKworMy4gIFdIQVQgQVJFIFNPTUUgRVhBTVBMRSBVU0VTIE9GIENPUkUgUkNVIEFQST8KKworVGhpcyBzZWN0aW9uIHNob3dzIGEgc2ltcGxlIHVzZSBvZiB0aGUgY29yZSBSQ1UgQVBJIHRvIHByb3RlY3QgYQorZ2xvYmFsIHBvaW50ZXIgdG8gYSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgc3RydWN0dXJlLiAgTW9yZS10eXBpY2FsCit1c2VzIG9mIFJDVSBtYXkgYmUgZm91bmQgaW4gbGlzdFJDVS50eHQsIGFycmF5UkNVLnR4dCwgYW5kIE5NSS1SQ1UudHh0LgorCisJc3RydWN0IGZvbyB7CisJCWludCBhOworCQljaGFyIGI7CisJCWxvbmcgYzsKKwl9OworCURFRklORV9TUElOTE9DSyhmb29fbXV0ZXgpOworCisJc3RydWN0IGZvbyBfX3JjdSAqZ2JsX2ZvbzsKKworCS8qCisJICogQ3JlYXRlIGEgbmV3IHN0cnVjdCBmb28gdGhhdCBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIGN1cnJlbnRseQorCSAqIHBvaW50ZWQgdG8gYnkgZ2JsX2ZvbywgZXhjZXB0IHRoYXQgZmllbGQgImEiIGlzIHJlcGxhY2VkCisJICogd2l0aCAibmV3X2EiLiAgUG9pbnRzIGdibF9mb28gdG8gdGhlIG5ldyBzdHJ1Y3R1cmUsIGFuZAorCSAqIGZyZWVzIHVwIHRoZSBvbGQgc3RydWN0dXJlIGFmdGVyIGEgZ3JhY2UgcGVyaW9kLgorCSAqCisJICogVXNlcyByY3VfYXNzaWduX3BvaW50ZXIoKSB0byBlbnN1cmUgdGhhdCBjb25jdXJyZW50IHJlYWRlcnMKKwkgKiBzZWUgdGhlIGluaXRpYWxpemVkIHZlcnNpb24gb2YgdGhlIG5ldyBzdHJ1Y3R1cmUuCisJICoKKwkgKiBVc2VzIHN5bmNocm9uaXplX3JjdSgpIHRvIGVuc3VyZSB0aGF0IGFueSByZWFkZXJzIHRoYXQgbWlnaHQKKwkgKiBoYXZlIHJlZmVyZW5jZXMgdG8gdGhlIG9sZCBzdHJ1Y3R1cmUgY29tcGxldGUgYmVmb3JlIGZyZWVpbmcKKwkgKiB0aGUgb2xkIHN0cnVjdHVyZS4KKwkgKi8KKwl2b2lkIGZvb191cGRhdGVfYShpbnQgbmV3X2EpCisJeworCQlzdHJ1Y3QgZm9vICpuZXdfZnA7CisJCXN0cnVjdCBmb28gKm9sZF9mcDsKKworCQluZXdfZnAgPSBrbWFsbG9jKHNpemVvZigqbmV3X2ZwKSwgR0ZQX0tFUk5FTCk7CisJCXNwaW5fbG9jaygmZm9vX211dGV4KTsKKwkJb2xkX2ZwID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChnYmxfZm9vLCBsb2NrZGVwX2lzX2hlbGQoJmZvb19tdXRleCkpOworCQkqbmV3X2ZwID0gKm9sZF9mcDsKKwkJbmV3X2ZwLT5hID0gbmV3X2E7CisJCXJjdV9hc3NpZ25fcG9pbnRlcihnYmxfZm9vLCBuZXdfZnApOworCQlzcGluX3VubG9jaygmZm9vX211dGV4KTsKKwkJc3luY2hyb25pemVfcmN1KCk7CisJCWtmcmVlKG9sZF9mcCk7CisJfQorCisJLyoKKwkgKiBSZXR1cm4gdGhlIHZhbHVlIG9mIGZpZWxkICJhIiBvZiB0aGUgY3VycmVudCBnYmxfZm9vCisJICogc3RydWN0dXJlLiAgVXNlIHJjdV9yZWFkX2xvY2soKSBhbmQgcmN1X3JlYWRfdW5sb2NrKCkKKwkgKiB0byBlbnN1cmUgdGhhdCB0aGUgc3RydWN0dXJlIGRvZXMgbm90IGdldCBkZWxldGVkIG91dAorCSAqIGZyb20gdW5kZXIgdXMsIGFuZCB1c2UgcmN1X2RlcmVmZXJlbmNlKCkgdG8gZW5zdXJlIHRoYXQKKwkgKiB3ZSBzZWUgdGhlIGluaXRpYWxpemVkIHZlcnNpb24gb2YgdGhlIHN0cnVjdHVyZSAoaW1wb3J0YW50CisJICogZm9yIERFQyBBbHBoYSBhbmQgZm9yIHBlb3BsZSByZWFkaW5nIHRoZSBjb2RlKS4KKwkgKi8KKwlpbnQgZm9vX2dldF9hKHZvaWQpCisJeworCQlpbnQgcmV0dmFsOworCisJCXJjdV9yZWFkX2xvY2soKTsKKwkJcmV0dmFsID0gcmN1X2RlcmVmZXJlbmNlKGdibF9mb28pLT5hOworCQlyY3VfcmVhZF91bmxvY2soKTsKKwkJcmV0dXJuIHJldHZhbDsKKwl9CisKK1NvLCB0byBzdW0gdXA6CisKK28JVXNlIHJjdV9yZWFkX2xvY2soKSBhbmQgcmN1X3JlYWRfdW5sb2NrKCkgdG8gZ3VhcmQgUkNVCisJcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb25zLgorCitvCVdpdGhpbiBhbiBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb24sIHVzZSByY3VfZGVyZWZlcmVuY2UoKQorCXRvIGRlcmVmZXJlbmNlIFJDVS1wcm90ZWN0ZWQgcG9pbnRlcnMuCisKK28JVXNlIHNvbWUgc29saWQgc2NoZW1lIChzdWNoIGFzIGxvY2tzIG9yIHNlbWFwaG9yZXMpIHRvCisJa2VlcCBjb25jdXJyZW50IHVwZGF0ZXMgZnJvbSBpbnRlcmZlcmluZyB3aXRoIGVhY2ggb3RoZXIuCisKK28JVXNlIHJjdV9hc3NpZ25fcG9pbnRlcigpIHRvIHVwZGF0ZSBhbiBSQ1UtcHJvdGVjdGVkIHBvaW50ZXIuCisJVGhpcyBwcmltaXRpdmUgcHJvdGVjdHMgY29uY3VycmVudCByZWFkZXJzIGZyb20gdGhlIHVwZGF0ZXIsCisJLW5vdC0gY29uY3VycmVudCB1cGRhdGVzIGZyb20gZWFjaCBvdGhlciEgIFlvdSB0aGVyZWZvcmUgc3RpbGwKKwluZWVkIHRvIHVzZSBsb2NraW5nIChvciBzb21ldGhpbmcgc2ltaWxhcikgdG8ga2VlcCBjb25jdXJyZW50CisJcmN1X2Fzc2lnbl9wb2ludGVyKCkgcHJpbWl0aXZlcyBmcm9tIGludGVyZmVyaW5nIHdpdGggZWFjaCBvdGhlci4KKworbwlVc2Ugc3luY2hyb25pemVfcmN1KCkgLWFmdGVyLSByZW1vdmluZyBhIGRhdGEgZWxlbWVudCBmcm9tIGFuCisJUkNVLXByb3RlY3RlZCBkYXRhIHN0cnVjdHVyZSwgYnV0IC1iZWZvcmUtIHJlY2xhaW1pbmcvZnJlZWluZworCXRoZSBkYXRhIGVsZW1lbnQsIGluIG9yZGVyIHRvIHdhaXQgZm9yIHRoZSBjb21wbGV0aW9uIG9mIGFsbAorCVJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbnMgdGhhdCBtaWdodCBiZSByZWZlcmVuY2luZyB0aGF0CisJZGF0YSBpdGVtLgorCitTZWUgY2hlY2tsaXN0LnR4dCBmb3IgYWRkaXRpb25hbCBydWxlcyB0byBmb2xsb3cgd2hlbiB1c2luZyBSQ1UuCitBbmQgYWdhaW4sIG1vcmUtdHlwaWNhbCB1c2VzIG9mIFJDVSBtYXkgYmUgZm91bmQgaW4gbGlzdFJDVS50eHQsCithcnJheVJDVS50eHQsIGFuZCBOTUktUkNVLnR4dC4KKworCis0LiAgV0hBVCBJRiBNWSBVUERBVElORyBUSFJFQUQgQ0FOTk9UIEJMT0NLPworCitJbiB0aGUgZXhhbXBsZSBhYm92ZSwgZm9vX3VwZGF0ZV9hKCkgYmxvY2tzIHVudGlsIGEgZ3JhY2UgcGVyaW9kIGVsYXBzZXMuCitUaGlzIGlzIHF1aXRlIHNpbXBsZSwgYnV0IGluIHNvbWUgY2FzZXMgb25lIGNhbm5vdCBhZmZvcmQgdG8gd2FpdCBzbworbG9uZyAtLSB0aGVyZSBtaWdodCBiZSBvdGhlciBoaWdoLXByaW9yaXR5IHdvcmsgdG8gYmUgZG9uZS4KKworSW4gc3VjaCBjYXNlcywgb25lIHVzZXMgY2FsbF9yY3UoKSByYXRoZXIgdGhhbiBzeW5jaHJvbml6ZV9yY3UoKS4KK1RoZSBjYWxsX3JjdSgpIEFQSSBpcyBhcyBmb2xsb3dzOgorCisJdm9pZCBjYWxsX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKiBoZWFkLAorCQkgICAgICB2b2lkICgqZnVuYykoc3RydWN0IHJjdV9oZWFkICpoZWFkKSk7CisKK1RoaXMgZnVuY3Rpb24gaW52b2tlcyBmdW5jKGhlYWQpIGFmdGVyIGEgZ3JhY2UgcGVyaW9kIGhhcyBlbGFwc2VkLgorVGhpcyBpbnZvY2F0aW9uIG1pZ2h0IGhhcHBlbiBmcm9tIGVpdGhlciBzb2Z0aXJxIG9yIHByb2Nlc3MgY29udGV4dCwKK3NvIHRoZSBmdW5jdGlvbiBpcyBub3QgcGVybWl0dGVkIHRvIGJsb2NrLiAgVGhlIGZvbyBzdHJ1Y3QgbmVlZHMgdG8KK2hhdmUgYW4gcmN1X2hlYWQgc3RydWN0dXJlIGFkZGVkLCBwZXJoYXBzIGFzIGZvbGxvd3M6CisKKwlzdHJ1Y3QgZm9vIHsKKwkJaW50IGE7CisJCWNoYXIgYjsKKwkJbG9uZyBjOworCQlzdHJ1Y3QgcmN1X2hlYWQgcmN1OworCX07CisKK1RoZSBmb29fdXBkYXRlX2EoKSBmdW5jdGlvbiBtaWdodCB0aGVuIGJlIHdyaXR0ZW4gYXMgZm9sbG93czoKKworCS8qCisJICogQ3JlYXRlIGEgbmV3IHN0cnVjdCBmb28gdGhhdCBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIGN1cnJlbnRseQorCSAqIHBvaW50ZWQgdG8gYnkgZ2JsX2ZvbywgZXhjZXB0IHRoYXQgZmllbGQgImEiIGlzIHJlcGxhY2VkCisJICogd2l0aCAibmV3X2EiLiAgUG9pbnRzIGdibF9mb28gdG8gdGhlIG5ldyBzdHJ1Y3R1cmUsIGFuZAorCSAqIGZyZWVzIHVwIHRoZSBvbGQgc3RydWN0dXJlIGFmdGVyIGEgZ3JhY2UgcGVyaW9kLgorCSAqCisJICogVXNlcyByY3VfYXNzaWduX3BvaW50ZXIoKSB0byBlbnN1cmUgdGhhdCBjb25jdXJyZW50IHJlYWRlcnMKKwkgKiBzZWUgdGhlIGluaXRpYWxpemVkIHZlcnNpb24gb2YgdGhlIG5ldyBzdHJ1Y3R1cmUuCisJICoKKwkgKiBVc2VzIGNhbGxfcmN1KCkgdG8gZW5zdXJlIHRoYXQgYW55IHJlYWRlcnMgdGhhdCBtaWdodCBoYXZlCisJICogcmVmZXJlbmNlcyB0byB0aGUgb2xkIHN0cnVjdHVyZSBjb21wbGV0ZSBiZWZvcmUgZnJlZWluZyB0aGUKKwkgKiBvbGQgc3RydWN0dXJlLgorCSAqLworCXZvaWQgZm9vX3VwZGF0ZV9hKGludCBuZXdfYSkKKwl7CisJCXN0cnVjdCBmb28gKm5ld19mcDsKKwkJc3RydWN0IGZvbyAqb2xkX2ZwOworCisJCW5ld19mcCA9IGttYWxsb2Moc2l6ZW9mKCpuZXdfZnApLCBHRlBfS0VSTkVMKTsKKwkJc3Bpbl9sb2NrKCZmb29fbXV0ZXgpOworCQlvbGRfZnAgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKGdibF9mb28sIGxvY2tkZXBfaXNfaGVsZCgmZm9vX211dGV4KSk7CisJCSpuZXdfZnAgPSAqb2xkX2ZwOworCQluZXdfZnAtPmEgPSBuZXdfYTsKKwkJcmN1X2Fzc2lnbl9wb2ludGVyKGdibF9mb28sIG5ld19mcCk7CisJCXNwaW5fdW5sb2NrKCZmb29fbXV0ZXgpOworCQljYWxsX3JjdSgmb2xkX2ZwLT5yY3UsIGZvb19yZWNsYWltKTsKKwl9CisKK1RoZSBmb29fcmVjbGFpbSgpIGZ1bmN0aW9uIG1pZ2h0IGFwcGVhciBhcyBmb2xsb3dzOgorCisJdm9pZCBmb29fcmVjbGFpbShzdHJ1Y3QgcmN1X2hlYWQgKnJwKQorCXsKKwkJc3RydWN0IGZvbyAqZnAgPSBjb250YWluZXJfb2YocnAsIHN0cnVjdCBmb28sIHJjdSk7CisKKwkJZm9vX2NsZWFudXAoZnAtPmEpOworCisJCWtmcmVlKGZwKTsKKwl9CisKK1RoZSBjb250YWluZXJfb2YoKSBwcmltaXRpdmUgaXMgYSBtYWNybyB0aGF0LCBnaXZlbiBhIHBvaW50ZXIgaW50byBhCitzdHJ1Y3QsIHRoZSB0eXBlIG9mIHRoZSBzdHJ1Y3QsIGFuZCB0aGUgcG9pbnRlZC10byBmaWVsZCB3aXRoaW4gdGhlCitzdHJ1Y3QsIHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cnVjdC4KKworVGhlIHVzZSBvZiBjYWxsX3JjdSgpIHBlcm1pdHMgdGhlIGNhbGxlciBvZiBmb29fdXBkYXRlX2EoKSB0bworaW1tZWRpYXRlbHkgcmVnYWluIGNvbnRyb2wsIHdpdGhvdXQgbmVlZGluZyB0byB3b3JyeSBmdXJ0aGVyIGFib3V0IHRoZQorb2xkIHZlcnNpb24gb2YgdGhlIG5ld2x5IHVwZGF0ZWQgZWxlbWVudC4gIEl0IGFsc28gY2xlYXJseSBzaG93cyB0aGUKK1JDVSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHVwZGF0ZXIsIG5hbWVseSBmb29fdXBkYXRlX2EoKSwgYW5kIHJlY2xhaW1lciwKK25hbWVseSBmb29fcmVjbGFpbSgpLgorCitUaGUgc3VtbWFyeSBvZiBhZHZpY2UgaXMgdGhlIHNhbWUgYXMgZm9yIHRoZSBwcmV2aW91cyBzZWN0aW9uLCBleGNlcHQKK3RoYXQgd2UgYXJlIG5vdyB1c2luZyBjYWxsX3JjdSgpIHJhdGhlciB0aGFuIHN5bmNocm9uaXplX3JjdSgpOgorCitvCVVzZSBjYWxsX3JjdSgpIC1hZnRlci0gcmVtb3ZpbmcgYSBkYXRhIGVsZW1lbnQgZnJvbSBhbgorCVJDVS1wcm90ZWN0ZWQgZGF0YSBzdHJ1Y3R1cmUgaW4gb3JkZXIgdG8gcmVnaXN0ZXIgYSBjYWxsYmFjaworCWZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBpbnZva2VkIGFmdGVyIHRoZSBjb21wbGV0aW9uIG9mIGFsbCBSQ1UKKwlyZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbnMgdGhhdCBtaWdodCBiZSByZWZlcmVuY2luZyB0aGF0CisJZGF0YSBpdGVtLgorCitJZiB0aGUgY2FsbGJhY2sgZm9yIGNhbGxfcmN1KCkgaXMgbm90IGRvaW5nIGFueXRoaW5nIG1vcmUgdGhhbiBjYWxsaW5nCitrZnJlZSgpIG9uIHRoZSBzdHJ1Y3R1cmUsIHlvdSBjYW4gdXNlIGtmcmVlX3JjdSgpIGluc3RlYWQgb2YgY2FsbF9yY3UoKQordG8gYXZvaWQgaGF2aW5nIHRvIHdyaXRlIHlvdXIgb3duIGNhbGxiYWNrOgorCisJa2ZyZWVfcmN1KG9sZF9mcCwgcmN1KTsKKworQWdhaW4sIHNlZSBjaGVja2xpc3QudHh0IGZvciBhZGRpdGlvbmFsIHJ1bGVzIGdvdmVybmluZyB0aGUgdXNlIG9mIFJDVS4KKworCis1LiAgV0hBVCBBUkUgU09NRSBTSU1QTEUgSU1QTEVNRU5UQVRJT05TIE9GIFJDVT8KKworT25lIG9mIHRoZSBuaWNlIHRoaW5ncyBhYm91dCBSQ1UgaXMgdGhhdCBpdCBoYXMgZXh0cmVtZWx5IHNpbXBsZSAidG95IgoraW1wbGVtZW50YXRpb25zIHRoYXQgYXJlIGEgZ29vZCBmaXJzdCBzdGVwIHRvd2FyZHMgdW5kZXJzdGFuZGluZyB0aGUKK3Byb2R1Y3Rpb24tcXVhbGl0eSBpbXBsZW1lbnRhdGlvbnMgaW4gdGhlIExpbnV4IGtlcm5lbC4gIFRoaXMgc2VjdGlvbgorcHJlc2VudHMgdHdvIHN1Y2ggInRveSIgaW1wbGVtZW50YXRpb25zIG9mIFJDVSwgb25lIHRoYXQgaXMgaW1wbGVtZW50ZWQKK2luIHRlcm1zIG9mIGZhbWlsaWFyIGxvY2tpbmcgcHJpbWl0aXZlcywgYW5kIGFub3RoZXIgdGhhdCBtb3JlIGNsb3NlbHkKK3Jlc2VtYmxlcyAiY2xhc3NpYyIgUkNVLiAgQm90aCBhcmUgd2F5IHRvbyBzaW1wbGUgZm9yIHJlYWwtd29ybGQgdXNlLAorbGFja2luZyBib3RoIGZ1bmN0aW9uYWxpdHkgYW5kIHBlcmZvcm1hbmNlLiAgSG93ZXZlciwgdGhleSBhcmUgdXNlZnVsCitpbiBnZXR0aW5nIGEgZmVlbCBmb3IgaG93IFJDVSB3b3Jrcy4gIFNlZSBrZXJuZWwvcmN1cGRhdGUuYyBmb3IgYQorcHJvZHVjdGlvbi1xdWFsaXR5IGltcGxlbWVudGF0aW9uLCBhbmQgc2VlOgorCisJaHR0cDovL3d3dy5yZHJvcC5jb20vdXNlcnMvcGF1bG1jay9SQ1UKKworZm9yIHBhcGVycyBkZXNjcmliaW5nIHRoZSBMaW51eCBrZXJuZWwgUkNVIGltcGxlbWVudGF0aW9uLiAgVGhlIE9MUycwMQorYW5kIE9MUycwMiBwYXBlcnMgYXJlIGEgZ29vZCBpbnRyb2R1Y3Rpb24sIGFuZCB0aGUgZGlzc2VydGF0aW9uIHByb3ZpZGVzCittb3JlIGRldGFpbHMgb24gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gYXMgb2YgZWFybHkgMjAwNC4KKworCis1QS4gICJUT1kiIElNUExFTUVOVEFUSU9OICMxOiBMT0NLSU5HCisKK1RoaXMgc2VjdGlvbiBwcmVzZW50cyBhICJ0b3kiIFJDVSBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIGJhc2VkIG9uCitmYW1pbGlhciBsb2NraW5nIHByaW1pdGl2ZXMuICBJdHMgb3ZlcmhlYWQgbWFrZXMgaXQgYSBub24tc3RhcnRlciBmb3IKK3JlYWwtbGlmZSB1c2UsIGFzIGRvZXMgaXRzIGxhY2sgb2Ygc2NhbGFiaWxpdHkuICBJdCBpcyBhbHNvIHVuc3VpdGFibGUKK2ZvciByZWFsdGltZSB1c2UsIHNpbmNlIGl0IGFsbG93cyBzY2hlZHVsaW5nIGxhdGVuY3kgdG8gImJsZWVkIiBmcm9tCitvbmUgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb24gdG8gYW5vdGhlci4KKworSG93ZXZlciwgaXQgaXMgcHJvYmFibHkgdGhlIGVhc2llc3QgaW1wbGVtZW50YXRpb24gdG8gcmVsYXRlIHRvLCBzbyBpcworYSBnb29kIHN0YXJ0aW5nIHBvaW50LgorCitJdCBpcyBleHRyZW1lbHkgc2ltcGxlOgorCisJc3RhdGljIERFRklORV9SV0xPQ0socmN1X2dwX211dGV4KTsKKworCXZvaWQgcmN1X3JlYWRfbG9jayh2b2lkKQorCXsKKwkJcmVhZF9sb2NrKCZyY3VfZ3BfbXV0ZXgpOworCX0KKworCXZvaWQgcmN1X3JlYWRfdW5sb2NrKHZvaWQpCisJeworCQlyZWFkX3VubG9jaygmcmN1X2dwX211dGV4KTsKKwl9CisKKwl2b2lkIHN5bmNocm9uaXplX3JjdSh2b2lkKQorCXsKKwkJd3JpdGVfbG9jaygmcmN1X2dwX211dGV4KTsKKwkJd3JpdGVfdW5sb2NrKCZyY3VfZ3BfbXV0ZXgpOworCX0KKworW1lvdSBjYW4gaWdub3JlIHJjdV9hc3NpZ25fcG9pbnRlcigpIGFuZCByY3VfZGVyZWZlcmVuY2UoKSB3aXRob3V0CittaXNzaW5nIG11Y2guICBCdXQgaGVyZSB0aGV5IGFyZSBhbnl3YXkuICBBbmQgd2hhdGV2ZXIgeW91IGRvLCBkb24ndAorZm9yZ2V0IGFib3V0IHRoZW0gd2hlbiBzdWJtaXR0aW5nIHBhdGNoZXMgbWFraW5nIHVzZSBvZiBSQ1UhXQorCisJI2RlZmluZSByY3VfYXNzaWduX3BvaW50ZXIocCwgdikJKHsgXAorCQkJCQkJCXNtcF93bWIoKTsgXAorCQkJCQkJCShwKSA9ICh2KTsgXAorCQkJCQkJfSkKKworCSNkZWZpbmUgcmN1X2RlcmVmZXJlbmNlKHApICAgICAoeyBcCisJCQkJCXR5cGVvZihwKSBfX19fX19fX19wMSA9IHA7IFwKKwkJCQkJc21wX3JlYWRfYmFycmllcl9kZXBlbmRzKCk7IFwKKwkJCQkJKF9fX19fX19fX3AxKTsgXAorCQkJCQl9KQorCisKK1RoZSByY3VfcmVhZF9sb2NrKCkgYW5kIHJjdV9yZWFkX3VubG9jaygpIHByaW1pdGl2ZSByZWFkLWFjcXVpcmUKK2FuZCByZWxlYXNlIGEgZ2xvYmFsIHJlYWRlci13cml0ZXIgbG9jay4gIFRoZSBzeW5jaHJvbml6ZV9yY3UoKQorcHJpbWl0aXZlIHdyaXRlLWFjcXVpcmVzIHRoaXMgc2FtZSBsb2NrLCB0aGVuIGltbWVkaWF0ZWx5IHJlbGVhc2VzCitpdC4gIFRoaXMgbWVhbnMgdGhhdCBvbmNlIHN5bmNocm9uaXplX3JjdSgpIGV4aXRzLCBhbGwgUkNVIHJlYWQtc2lkZQorY3JpdGljYWwgc2VjdGlvbnMgdGhhdCB3ZXJlIGluIHByb2dyZXNzIGJlZm9yZSBzeW5jaHJvbml6ZV9yY3UoKSB3YXMKK2NhbGxlZCBhcmUgZ3VhcmFudGVlZCB0byBoYXZlIGNvbXBsZXRlZCAtLSB0aGVyZSBpcyBubyB3YXkgdGhhdAorc3luY2hyb25pemVfcmN1KCkgd291bGQgaGF2ZSBiZWVuIGFibGUgdG8gd3JpdGUtYWNxdWlyZSB0aGUgbG9jaworb3RoZXJ3aXNlLgorCitJdCBpcyBwb3NzaWJsZSB0byBuZXN0IHJjdV9yZWFkX2xvY2soKSwgc2luY2UgcmVhZGVyLXdyaXRlciBsb2NrcyBtYXkKK2JlIHJlY3Vyc2l2ZWx5IGFjcXVpcmVkLiAgTm90ZSBhbHNvIHRoYXQgcmN1X3JlYWRfbG9jaygpIGlzIGltbXVuZQorZnJvbSBkZWFkbG9jayAoYW4gaW1wb3J0YW50IHByb3BlcnR5IG9mIFJDVSkuICBUaGUgcmVhc29uIGZvciB0aGlzIGlzCit0aGF0IHRoZSBvbmx5IHRoaW5nIHRoYXQgY2FuIGJsb2NrIHJjdV9yZWFkX2xvY2soKSBpcyBhIHN5bmNocm9uaXplX3JjdSgpLgorQnV0IHN5bmNocm9uaXplX3JjdSgpIGRvZXMgbm90IGFjcXVpcmUgYW55IGxvY2tzIHdoaWxlIGhvbGRpbmcgcmN1X2dwX211dGV4LAorc28gdGhlcmUgY2FuIGJlIG5vIGRlYWRsb2NrIGN5Y2xlLgorCitRdWljayBRdWl6ICMxOglXaHkgaXMgdGhpcyBhcmd1bWVudCBuYWl2ZT8gIEhvdyBjb3VsZCBhIGRlYWRsb2NrCisJCW9jY3VyIHdoZW4gdXNpbmcgdGhpcyBhbGdvcml0aG0gaW4gYSByZWFsLXdvcmxkIExpbnV4CisJCWtlcm5lbD8gIEhvdyBjb3VsZCB0aGlzIGRlYWRsb2NrIGJlIGF2b2lkZWQ/CisKKworNUIuICAiVE9ZIiBFWEFNUExFICMyOiBDTEFTU0lDIFJDVQorCitUaGlzIHNlY3Rpb24gcHJlc2VudHMgYSAidG95IiBSQ1UgaW1wbGVtZW50YXRpb24gdGhhdCBpcyBiYXNlZCBvbgorImNsYXNzaWMgUkNVIi4gIEl0IGlzIGFsc28gc2hvcnQgb24gcGVyZm9ybWFuY2UgKGJ1dCBvbmx5IGZvciB1cGRhdGVzKSBhbmQKK29uIGZlYXR1cmVzIHN1Y2ggYXMgaG90cGx1ZyBDUFUgYW5kIHRoZSBhYmlsaXR5IHRvIHJ1biBpbiBDT05GSUdfUFJFRU1QVAora2VybmVscy4gIFRoZSBkZWZpbml0aW9ucyBvZiByY3VfZGVyZWZlcmVuY2UoKSBhbmQgcmN1X2Fzc2lnbl9wb2ludGVyKCkKK2FyZSB0aGUgc2FtZSBhcyB0aG9zZSBzaG93biBpbiB0aGUgcHJlY2VkaW5nIHNlY3Rpb24sIHNvIHRoZXkgYXJlIG9taXR0ZWQuCisKKwl2b2lkIHJjdV9yZWFkX2xvY2sodm9pZCkgeyB9CisKKwl2b2lkIHJjdV9yZWFkX3VubG9jayh2b2lkKSB7IH0KKworCXZvaWQgc3luY2hyb25pemVfcmN1KHZvaWQpCisJeworCQlpbnQgY3B1OworCisJCWZvcl9lYWNoX3Bvc3NpYmxlX2NwdShjcHUpCisJCQlydW5fb24oY3B1KTsKKwl9CisKK05vdGUgdGhhdCByY3VfcmVhZF9sb2NrKCkgYW5kIHJjdV9yZWFkX3VubG9jaygpIGRvIGFic29sdXRlbHkgbm90aGluZy4KK1RoaXMgaXMgdGhlIGdyZWF0IHN0cmVuZ3RoIG9mIGNsYXNzaWMgUkNVIGluIGEgbm9uLXByZWVtcHRpdmUga2VybmVsOgorcmVhZC1zaWRlIG92ZXJoZWFkIGlzIHByZWNpc2VseSB6ZXJvLCBhdCBsZWFzdCBvbiBub24tQWxwaGEgQ1BVcy4KK0FuZCB0aGVyZSBpcyBhYnNvbHV0ZWx5IG5vIHdheSB0aGF0IHJjdV9yZWFkX2xvY2soKSBjYW4gcG9zc2libHkKK3BhcnRpY2lwYXRlIGluIGEgZGVhZGxvY2sgY3ljbGUhCisKK1RoZSBpbXBsZW1lbnRhdGlvbiBvZiBzeW5jaHJvbml6ZV9yY3UoKSBzaW1wbHkgc2NoZWR1bGVzIGl0c2VsZiBvbiBlYWNoCitDUFUgaW4gdHVybi4gIFRoZSBydW5fb24oKSBwcmltaXRpdmUgY2FuIGJlIGltcGxlbWVudGVkIHN0cmFpZ2h0Zm9yd2FyZGx5CitpbiB0ZXJtcyBvZiB0aGUgc2NoZWRfc2V0YWZmaW5pdHkoKSBwcmltaXRpdmUuICBPZiBjb3Vyc2UsIGEgc29tZXdoYXQgbGVzcworInRveSIgaW1wbGVtZW50YXRpb24gd291bGQgcmVzdG9yZSB0aGUgYWZmaW5pdHkgdXBvbiBjb21wbGV0aW9uIHJhdGhlcgordGhhbiBqdXN0IGxlYXZpbmcgYWxsIHRhc2tzIHJ1bm5pbmcgb24gdGhlIGxhc3QgQ1BVLCBidXQgd2hlbiBJIHNhaWQKKyJ0b3kiLCBJIG1lYW50IC10b3ktIQorCitTbyBob3cgdGhlIGhlY2sgaXMgdGhpcyBzdXBwb3NlZCB0byB3b3JrPz8/CisKK1JlbWVtYmVyIHRoYXQgaXQgaXMgaWxsZWdhbCB0byBibG9jayB3aGlsZSBpbiBhbiBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsCitzZWN0aW9uLiAgVGhlcmVmb3JlLCBpZiBhIGdpdmVuIENQVSBleGVjdXRlcyBhIGNvbnRleHQgc3dpdGNoLCB3ZSBrbm93Cit0aGF0IGl0IG11c3QgaGF2ZSBjb21wbGV0ZWQgYWxsIHByZWNlZGluZyBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb25zLgorT25jZSAtYWxsLSBDUFVzIGhhdmUgZXhlY3V0ZWQgYSBjb250ZXh0IHN3aXRjaCwgdGhlbiAtYWxsLSBwcmVjZWRpbmcKK1JDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbnMgd2lsbCBoYXZlIGNvbXBsZXRlZC4KKworU28sIHN1cHBvc2UgdGhhdCB3ZSByZW1vdmUgYSBkYXRhIGl0ZW0gZnJvbSBpdHMgc3RydWN0dXJlIGFuZCB0aGVuIGludm9rZQorc3luY2hyb25pemVfcmN1KCkuICBPbmNlIHN5bmNocm9uaXplX3JjdSgpIHJldHVybnMsIHdlIGFyZSBndWFyYW50ZWVkCit0aGF0IHRoZXJlIGFyZSBubyBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb25zIGhvbGRpbmcgYSByZWZlcmVuY2UKK3RvIHRoYXQgZGF0YSBpdGVtLCBzbyB3ZSBjYW4gc2FmZWx5IHJlY2xhaW0gaXQuCisKK1F1aWNrIFF1aXogIzI6CUdpdmUgYW4gZXhhbXBsZSB3aGVyZSBDbGFzc2ljIFJDVSdzIHJlYWQtc2lkZQorCQlvdmVyaGVhZCBpcyAtbmVnYXRpdmUtLgorCitRdWljayBRdWl6ICMzOiAgSWYgaXQgaXMgaWxsZWdhbCB0byBibG9jayBpbiBhbiBSQ1UgcmVhZC1zaWRlCisJCWNyaXRpY2FsIHNlY3Rpb24sIHdoYXQgdGhlIGhlY2sgZG8geW91IGRvIGluCisJCVBSRUVNUFRfUlQsIHdoZXJlIG5vcm1hbCBzcGlubG9ja3MgY2FuIGJsb2NrPz8/CisKKworNi4gIEFOQUxPR1kgV0lUSCBSRUFERVItV1JJVEVSIExPQ0tJTkcKKworQWx0aG91Z2ggUkNVIGNhbiBiZSB1c2VkIGluIG1hbnkgZGlmZmVyZW50IHdheXMsIGEgdmVyeSBjb21tb24gdXNlIG9mCitSQ1UgaXMgYW5hbG9nb3VzIHRvIHJlYWRlci13cml0ZXIgbG9ja2luZy4gIFRoZSBmb2xsb3dpbmcgdW5pZmllZAorZGlmZiBzaG93cyBob3cgY2xvc2VseSByZWxhdGVkIFJDVSBhbmQgcmVhZGVyLXdyaXRlciBsb2NraW5nIGNhbiBiZS4KKworCUBAIC0xMywxNSArMTQsMTUgQEAKKwkJc3RydWN0IGxpc3RfaGVhZCAqbHA7CisJCXN0cnVjdCBlbCAqcDsKKworCS0JcmVhZF9sb2NrKCk7CisJLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHAsIGhlYWQsIGxwKSB7CisJKwlyY3VfcmVhZF9sb2NrKCk7CisJKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwLCBoZWFkLCBscCkgeworCQkJaWYgKHAtPmtleSA9PSBrZXkpIHsKKwkJCQkqcmVzdWx0ID0gcC0+ZGF0YTsKKwktCQkJcmVhZF91bmxvY2soKTsKKwkrCQkJcmN1X3JlYWRfdW5sb2NrKCk7CisJCQkJcmV0dXJuIDE7CisJCQl9CisJCX0KKwktCXJlYWRfdW5sb2NrKCk7CisJKwlyY3VfcmVhZF91bmxvY2soKTsKKwkJcmV0dXJuIDA7CisJIH0KKworCUBAIC0yOSwxNSArMzAsMTYgQEAKKwkgeworCQlzdHJ1Y3QgZWwgKnA7CisKKwktCXdyaXRlX2xvY2soJmxpc3RtdXRleCk7CisJKwlzcGluX2xvY2soJmxpc3RtdXRleCk7CisJCWxpc3RfZm9yX2VhY2hfZW50cnkocCwgaGVhZCwgbHApIHsKKwkJCWlmIChwLT5rZXkgPT0ga2V5KSB7CisJLQkJCWxpc3RfZGVsKCZwLT5saXN0KTsKKwktCQkJd3JpdGVfdW5sb2NrKCZsaXN0bXV0ZXgpOworCSsJCQlsaXN0X2RlbF9yY3UoJnAtPmxpc3QpOworCSsJCQlzcGluX3VubG9jaygmbGlzdG11dGV4KTsKKwkrCQkJc3luY2hyb25pemVfcmN1KCk7CisJCQkJa2ZyZWUocCk7CisJCQkJcmV0dXJuIDE7CisJCQl9CisJCX0KKwktCXdyaXRlX3VubG9jaygmbGlzdG11dGV4KTsKKwkrCXNwaW5fdW5sb2NrKCZsaXN0bXV0ZXgpOworCQlyZXR1cm4gMDsKKwkgfQorCitPciwgZm9yIHRob3NlIHdobyBwcmVmZXIgYSBzaWRlLWJ5LXNpZGUgbGlzdGluZzoKKworIDEgc3RydWN0IGVsIHsgICAgICAgICAgICAgICAgICAgICAgICAgIDEgc3RydWN0IGVsIHsKKyAyICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OyAgICAgICAgICAgICAyICAgc3RydWN0IGxpc3RfaGVhZCBsaXN0OworIDMgICBsb25nIGtleTsgICAgICAgICAgICAgICAgICAgICAgICAgIDMgICBsb25nIGtleTsKKyA0ICAgc3BpbmxvY2tfdCBtdXRleDsgICAgICAgICAgICAgICAgICA0ICAgc3BpbmxvY2tfdCBtdXRleDsKKyA1ICAgaW50IGRhdGE7ICAgICAgICAgICAgICAgICAgICAgICAgICA1ICAgaW50IGRhdGE7CisgNiAgIC8qIE90aGVyIGRhdGEgZmllbGRzICovICAgICAgICAgICAgNiAgIC8qIE90aGVyIGRhdGEgZmllbGRzICovCisgNyB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNyB9OworIDggc3BpbmxvY2tfdCBsaXN0bXV0ZXg7ICAgICAgICAgICAgICAgIDggc3BpbmxvY2tfdCBsaXN0bXV0ZXg7CisgOSBzdHJ1Y3QgZWwgaGVhZDsgICAgICAgICAgICAgICAgICAgICAgOSBzdHJ1Y3QgZWwgaGVhZDsKKworIDEgaW50IHNlYXJjaChsb25nIGtleSwgaW50ICpyZXN1bHQpICAgIDEgaW50IHNlYXJjaChsb25nIGtleSwgaW50ICpyZXN1bHQpCisgMiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiB7CisgMyAgIHN0cnVjdCBsaXN0X2hlYWQgKmxwOyAgICAgICAgICAgICAgMyAgIHN0cnVjdCBsaXN0X2hlYWQgKmxwOworIDQgICBzdHJ1Y3QgZWwgKnA7ICAgICAgICAgICAgICAgICAgICAgIDQgICBzdHJ1Y3QgZWwgKnA7CisgNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNQorIDYgICByZWFkX2xvY2soKTsgICAgICAgICAgICAgICAgICAgICAgIDYgICByY3VfcmVhZF9sb2NrKCk7CisgNyAgIGxpc3RfZm9yX2VhY2hfZW50cnkocCwgaGVhZCwgbHApIHsgNyAgIGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHAsIGhlYWQsIGxwKSB7CisgOCAgICAgaWYgKHAtPmtleSA9PSBrZXkpIHsgICAgICAgICAgICAgOCAgICAgaWYgKHAtPmtleSA9PSBrZXkpIHsKKyA5ICAgICAgICpyZXN1bHQgPSBwLT5kYXRhOyAgICAgICAgICAgICA5ICAgICAgICpyZXN1bHQgPSBwLT5kYXRhOworMTAgICAgICAgcmVhZF91bmxvY2soKTsgICAgICAgICAgICAgICAgMTAgICAgICAgcmN1X3JlYWRfdW5sb2NrKCk7CisxMSAgICAgICByZXR1cm4gMTsgICAgICAgICAgICAgICAgICAgICAxMSAgICAgICByZXR1cm4gMTsKKzEyICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyICAgICB9CisxMyAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMyAgIH0KKzE0ICAgcmVhZF91bmxvY2soKTsgICAgICAgICAgICAgICAgICAgIDE0ICAgcmN1X3JlYWRfdW5sb2NrKCk7CisxNSAgIHJldHVybiAwOyAgICAgICAgICAgICAgICAgICAgICAgICAxNSAgIHJldHVybiAwOworMTYgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYgfQorCisgMSBpbnQgZGVsZXRlKGxvbmcga2V5KSAgICAgICAgICAgICAgICAgMSBpbnQgZGVsZXRlKGxvbmcga2V5KQorIDIgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgeworIDMgICBzdHJ1Y3QgZWwgKnA7ICAgICAgICAgICAgICAgICAgICAgIDMgICBzdHJ1Y3QgZWwgKnA7CisgNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNAorIDUgICB3cml0ZV9sb2NrKCZsaXN0bXV0ZXgpOyAgICAgICAgICAgIDUgICBzcGluX2xvY2soJmxpc3RtdXRleCk7CisgNiAgIGxpc3RfZm9yX2VhY2hfZW50cnkocCwgaGVhZCwgbHApIHsgNiAgIGxpc3RfZm9yX2VhY2hfZW50cnkocCwgaGVhZCwgbHApIHsKKyA3ICAgICBpZiAocC0+a2V5ID09IGtleSkgeyAgICAgICAgICAgICA3ICAgICBpZiAocC0+a2V5ID09IGtleSkgeworIDggICAgICAgbGlzdF9kZWwoJnAtPmxpc3QpOyAgICAgICAgICAgIDggICAgICAgbGlzdF9kZWxfcmN1KCZwLT5saXN0KTsKKyA5ICAgICAgIHdyaXRlX3VubG9jaygmbGlzdG11dGV4KTsgICAgICA5ICAgICAgIHNwaW5fdW5sb2NrKCZsaXN0bXV0ZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAgICAgICAgc3luY2hyb25pemVfcmN1KCk7CisxMCAgICAgICBrZnJlZShwKTsgICAgICAgICAgICAgICAgICAgICAxMSAgICAgICBrZnJlZShwKTsKKzExICAgICAgIHJldHVybiAxOyAgICAgICAgICAgICAgICAgICAgIDEyICAgICAgIHJldHVybiAxOworMTIgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMgICAgIH0KKzEzICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0ICAgfQorMTQgICB3cml0ZV91bmxvY2soJmxpc3RtdXRleCk7ICAgICAgICAgMTUgICBzcGluX3VubG9jaygmbGlzdG11dGV4KTsKKzE1ICAgcmV0dXJuIDA7ICAgICAgICAgICAgICAgICAgICAgICAgIDE2ICAgcmV0dXJuIDA7CisxNiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNyB9CisKK0VpdGhlciB3YXksIHRoZSBkaWZmZXJlbmNlcyBhcmUgcXVpdGUgc21hbGwuICBSZWFkLXNpZGUgbG9ja2luZyBtb3ZlcwordG8gcmN1X3JlYWRfbG9jaygpIGFuZCByY3VfcmVhZF91bmxvY2ssIHVwZGF0ZS1zaWRlIGxvY2tpbmcgbW92ZXMgZnJvbQorYSByZWFkZXItd3JpdGVyIGxvY2sgdG8gYSBzaW1wbGUgc3BpbmxvY2ssIGFuZCBhIHN5bmNocm9uaXplX3JjdSgpCitwcmVjZWRlcyB0aGUga2ZyZWUoKS4KKworSG93ZXZlciwgdGhlcmUgaXMgb25lIHBvdGVudGlhbCBjYXRjaDogdGhlIHJlYWQtc2lkZSBhbmQgdXBkYXRlLXNpZGUKK2NyaXRpY2FsIHNlY3Rpb25zIGNhbiBub3cgcnVuIGNvbmN1cnJlbnRseS4gIEluIG1hbnkgY2FzZXMsIHRoaXMgd2lsbAorbm90IGJlIGEgcHJvYmxlbSwgYnV0IGl0IGlzIG5lY2Vzc2FyeSB0byBjaGVjayBjYXJlZnVsbHkgcmVnYXJkbGVzcy4KK0ZvciBleGFtcGxlLCBpZiBtdWx0aXBsZSBpbmRlcGVuZGVudCBsaXN0IHVwZGF0ZXMgbXVzdCBiZSBzZWVuIGFzCithIHNpbmdsZSBhdG9taWMgdXBkYXRlLCBjb252ZXJ0aW5nIHRvIFJDVSB3aWxsIHJlcXVpcmUgc3BlY2lhbCBjYXJlLgorCitBbHNvLCB0aGUgcHJlc2VuY2Ugb2Ygc3luY2hyb25pemVfcmN1KCkgbWVhbnMgdGhhdCB0aGUgUkNVIHZlcnNpb24gb2YKK2RlbGV0ZSgpIGNhbiBub3cgYmxvY2suICBJZiB0aGlzIGlzIGEgcHJvYmxlbSwgdGhlcmUgaXMgYSBjYWxsYmFjay1iYXNlZAorbWVjaGFuaXNtIHRoYXQgbmV2ZXIgYmxvY2tzLCBuYW1lbHkgY2FsbF9yY3UoKSBvciBrZnJlZV9yY3UoKSwgdGhhdCBjYW4KK2JlIHVzZWQgaW4gcGxhY2Ugb2Ygc3luY2hyb25pemVfcmN1KCkuCisKKworNy4gIEZVTEwgTElTVCBPRiBSQ1UgQVBJcworCitUaGUgUkNVIEFQSXMgYXJlIGRvY3VtZW50ZWQgaW4gZG9jYm9vay1mb3JtYXQgaGVhZGVyIGNvbW1lbnRzIGluIHRoZQorTGludXgta2VybmVsIHNvdXJjZSBjb2RlLCBidXQgaXQgaGVscHMgdG8gaGF2ZSBhIGZ1bGwgbGlzdCBvZiB0aGUKK0FQSXMsIHNpbmNlIHRoZXJlIGRvZXMgbm90IGFwcGVhciB0byBiZSBhIHdheSB0byBjYXRlZ29yaXplIHRoZW0KK2luIGRvY2Jvb2suICBIZXJlIGlzIHRoZSBsaXN0LCBieSBjYXRlZ29yeS4KKworUkNVIGxpc3QgdHJhdmVyc2FsOgorCisJbGlzdF9lbnRyeV9yY3UKKwlsaXN0X2ZpcnN0X2VudHJ5X3JjdQorCWxpc3RfbmV4dF9yY3UKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdQorCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmN1CisJaGxpc3RfZmlyc3RfcmN1CisJaGxpc3RfbmV4dF9yY3UKKwlobGlzdF9wcHJldl9yY3UKKwlobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UKKwlobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3VfYmgKKwlobGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3UKKwlobGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yY3VfYmgKKwlobGlzdF9udWxsc19maXJzdF9yY3UKKwlobGlzdF9udWxsc19mb3JfZWFjaF9lbnRyeV9yY3UKKwlobGlzdF9ibF9maXJzdF9yY3UKKwlobGlzdF9ibF9mb3JfZWFjaF9lbnRyeV9yY3UKKworUkNVIHBvaW50ZXIvbGlzdCB1cGRhdGU6CisKKwlyY3VfYXNzaWduX3BvaW50ZXIKKwlsaXN0X2FkZF9yY3UKKwlsaXN0X2FkZF90YWlsX3JjdQorCWxpc3RfZGVsX3JjdQorCWxpc3RfcmVwbGFjZV9yY3UKKwlobGlzdF9hZGRfYmVoaW5kX3JjdQorCWhsaXN0X2FkZF9iZWZvcmVfcmN1CisJaGxpc3RfYWRkX2hlYWRfcmN1CisJaGxpc3RfZGVsX3JjdQorCWhsaXN0X2RlbF9pbml0X3JjdQorCWhsaXN0X3JlcGxhY2VfcmN1CisJbGlzdF9zcGxpY2VfaW5pdF9yY3UoKQorCWhsaXN0X251bGxzX2RlbF9pbml0X3JjdQorCWhsaXN0X251bGxzX2RlbF9yY3UKKwlobGlzdF9udWxsc19hZGRfaGVhZF9yY3UKKwlobGlzdF9ibF9hZGRfaGVhZF9yY3UKKwlobGlzdF9ibF9kZWxfaW5pdF9yY3UKKwlobGlzdF9ibF9kZWxfcmN1CisJaGxpc3RfYmxfc2V0X2ZpcnN0X3JjdQorCitSQ1U6CUNyaXRpY2FsIHNlY3Rpb25zCUdyYWNlIHBlcmlvZAkJQmFycmllcgorCisJcmN1X3JlYWRfbG9jawkJc3luY2hyb25pemVfbmV0CQlyY3VfYmFycmllcgorCXJjdV9yZWFkX3VubG9jawkJc3luY2hyb25pemVfcmN1CisJcmN1X2RlcmVmZXJlbmNlCQlzeW5jaHJvbml6ZV9yY3VfZXhwZWRpdGVkCisJcmN1X3JlYWRfbG9ja19oZWxkCWNhbGxfcmN1CisJcmN1X2RlcmVmZXJlbmNlX2NoZWNrCWtmcmVlX3JjdQorCXJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQKKworYmg6CUNyaXRpY2FsIHNlY3Rpb25zCUdyYWNlIHBlcmlvZAkJQmFycmllcgorCisJcmN1X3JlYWRfbG9ja19iaAljYWxsX3JjdV9iaAkJcmN1X2JhcnJpZXJfYmgKKwlyY3VfcmVhZF91bmxvY2tfYmgJc3luY2hyb25pemVfcmN1X2JoCisJcmN1X2RlcmVmZXJlbmNlX2JoCXN5bmNocm9uaXplX3JjdV9iaF9leHBlZGl0ZWQKKwlyY3VfZGVyZWZlcmVuY2VfYmhfY2hlY2sKKwlyY3VfZGVyZWZlcmVuY2VfYmhfcHJvdGVjdGVkCisJcmN1X3JlYWRfbG9ja19iaF9oZWxkCisKK3NjaGVkOglDcml0aWNhbCBzZWN0aW9ucwlHcmFjZSBwZXJpb2QJCUJhcnJpZXIKKworCXJjdV9yZWFkX2xvY2tfc2NoZWQJc3luY2hyb25pemVfc2NoZWQJcmN1X2JhcnJpZXJfc2NoZWQKKwlyY3VfcmVhZF91bmxvY2tfc2NoZWQJY2FsbF9yY3Vfc2NoZWQKKwlbcHJlZW1wdF9kaXNhYmxlXQlzeW5jaHJvbml6ZV9zY2hlZF9leHBlZGl0ZWQKKwlbYW5kIGZyaWVuZHNdCisJcmN1X3JlYWRfbG9ja19zY2hlZF9ub3RyYWNlCisJcmN1X3JlYWRfdW5sb2NrX3NjaGVkX25vdHJhY2UKKwlyY3VfZGVyZWZlcmVuY2Vfc2NoZWQKKwlyY3VfZGVyZWZlcmVuY2Vfc2NoZWRfY2hlY2sKKwlyY3VfZGVyZWZlcmVuY2Vfc2NoZWRfcHJvdGVjdGVkCisJcmN1X3JlYWRfbG9ja19zY2hlZF9oZWxkCisKKworU1JDVToJQ3JpdGljYWwgc2VjdGlvbnMJR3JhY2UgcGVyaW9kCQlCYXJyaWVyCisKKwlzcmN1X3JlYWRfbG9jawkJc3luY2hyb25pemVfc3JjdQlzcmN1X2JhcnJpZXIKKwlzcmN1X3JlYWRfdW5sb2NrCWNhbGxfc3JjdQorCXNyY3VfZGVyZWZlcmVuY2UJc3luY2hyb25pemVfc3JjdV9leHBlZGl0ZWQKKwlzcmN1X2RlcmVmZXJlbmNlX2NoZWNrCisJc3JjdV9yZWFkX2xvY2tfaGVsZAorCitTUkNVOglJbml0aWFsaXphdGlvbi9jbGVhbnVwCisJaW5pdF9zcmN1X3N0cnVjdAorCWNsZWFudXBfc3JjdV9zdHJ1Y3QKKworQWxsOiAgbG9ja2RlcC1jaGVja2VkIFJDVS1wcm90ZWN0ZWQgcG9pbnRlciBhY2Nlc3MKKworCXJjdV9hY2Nlc3NfcG9pbnRlcgorCXJjdV9kZXJlZmVyZW5jZV9yYXcKKwlSQ1VfTE9DS0RFUF9XQVJOCisJcmN1X3NsZWVwX2NoZWNrCisJUkNVX05PTklETEUKKworU2VlIHRoZSBjb21tZW50IGhlYWRlcnMgaW4gdGhlIHNvdXJjZSBjb2RlIChvciB0aGUgZG9jYm9vayBnZW5lcmF0ZWQKK2Zyb20gdGhlbSkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKK0hvd2V2ZXIsIGdpdmVuIHRoYXQgdGhlcmUgYXJlIG5vIGZld2VyIHRoYW4gZm91ciBmYW1pbGllcyBvZiBSQ1UgQVBJcworaW4gdGhlIExpbnV4IGtlcm5lbCwgaG93IGRvIHlvdSBjaG9vc2Ugd2hpY2ggb25lIHRvIHVzZT8gIFRoZSBmb2xsb3dpbmcKK2xpc3QgY2FuIGJlIGhlbHBmdWw6CisKK2EuCVdpbGwgcmVhZGVycyBuZWVkIHRvIGJsb2NrPyAgSWYgc28sIHlvdSBuZWVkIFNSQ1UuCisKK2IuCVdoYXQgYWJvdXQgdGhlIC1ydCBwYXRjaHNldD8gIElmIHJlYWRlcnMgd291bGQgbmVlZCB0byBibG9jaworCWluIGFuIG5vbi1ydCBrZXJuZWwsIHlvdSBuZWVkIFNSQ1UuICBJZiByZWFkZXJzIHdvdWxkIGJsb2NrCisJaW4gYSAtcnQga2VybmVsLCBidXQgbm90IGluIGEgbm9uLXJ0IGtlcm5lbCwgU1JDVSBpcyBub3QKKwluZWNlc3NhcnkuCisKK2MuCURvIHlvdSBuZWVkIHRvIHRyZWF0IE5NSSBoYW5kbGVycywgaGFyZGlycSBoYW5kbGVycywKKwlhbmQgY29kZSBzZWdtZW50cyB3aXRoIHByZWVtcHRpb24gZGlzYWJsZWQgKHdoZXRoZXIKKwl2aWEgcHJlZW1wdF9kaXNhYmxlKCksIGxvY2FsX2lycV9zYXZlKCksIGxvY2FsX2JoX2Rpc2FibGUoKSwKKwlvciBzb21lIG90aGVyIG1lY2hhbmlzbSkgYXMgaWYgdGhleSB3ZXJlIGV4cGxpY2l0IFJDVSByZWFkZXJzPworCUlmIHNvLCBSQ1Utc2NoZWQgaXMgdGhlIG9ubHkgY2hvaWNlIHRoYXQgd2lsbCB3b3JrIGZvciB5b3UuCisKK2QuCURvIHlvdSBuZWVkIFJDVSBncmFjZSBwZXJpb2RzIHRvIGNvbXBsZXRlIGV2ZW4gaW4gdGhlIGZhY2UKKwlvZiBzb2Z0aXJxIG1vbm9wb2xpemF0aW9uIG9mIG9uZSBvciBtb3JlIG9mIHRoZSBDUFVzPyAgRm9yCisJZXhhbXBsZSwgaXMgeW91ciBjb2RlIHN1YmplY3QgdG8gbmV0d29yay1iYXNlZCBkZW5pYWwtb2Ytc2VydmljZQorCWF0dGFja3M/ICBJZiBzbywgeW91IG5lZWQgUkNVLWJoLgorCitlLglJcyB5b3VyIHdvcmtsb2FkIHRvbyB1cGRhdGUtaW50ZW5zaXZlIGZvciBub3JtYWwgdXNlIG9mCisJUkNVLCBidXQgaW5hcHByb3ByaWF0ZSBmb3Igb3RoZXIgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbXM/CisJSWYgc28sIGNvbnNpZGVyIFNMQUJfREVTVFJPWV9CWV9SQ1UuICBCdXQgcGxlYXNlIGJlIGNhcmVmdWwhCisKK2YuCURvIHlvdSBuZWVkIHJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9ucyB0aGF0IGFyZSByZXNwZWN0ZWQKKwlldmVuIHRob3VnaCB0aGV5IGFyZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBpZGxlIGxvb3AsIGR1cmluZworCXVzZXItbW9kZSBleGVjdXRpb24sIG9yIG9uIGFuIG9mZmxpbmVkIENQVT8gIElmIHNvLCBTUkNVIGlzIHRoZQorCW9ubHkgY2hvaWNlIHRoYXQgd2lsbCB3b3JrIGZvciB5b3UuCisKK2cuCU90aGVyd2lzZSwgdXNlIFJDVS4KKworT2YgY291cnNlLCB0aGlzIGFsbCBhc3N1bWVzIHRoYXQgeW91IGhhdmUgZGV0ZXJtaW5lZCB0aGF0IFJDVSBpcyBpbiBmYWN0Cit0aGUgcmlnaHQgdG9vbCBmb3IgeW91ciBqb2IuCisKKworOC4gIEFOU1dFUlMgVE8gUVVJQ0sgUVVJWlpFUworCitRdWljayBRdWl6ICMxOglXaHkgaXMgdGhpcyBhcmd1bWVudCBuYWl2ZT8gIEhvdyBjb3VsZCBhIGRlYWRsb2NrCisJCW9jY3VyIHdoZW4gdXNpbmcgdGhpcyBhbGdvcml0aG0gaW4gYSByZWFsLXdvcmxkIExpbnV4CisJCWtlcm5lbD8gIFtSZWZlcnJpbmcgdG8gdGhlIGxvY2stYmFzZWQgInRveSIgUkNVCisJCWFsZ29yaXRobS5dCisKK0Fuc3dlcjoJCUNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2Ugb2YgZXZlbnRzOgorCisJCTEuCUNQVSAwIGFjcXVpcmVzIHNvbWUgdW5yZWxhdGVkIGxvY2ssIGNhbGwgaXQKKwkJCSJwcm9ibGVtYXRpY19sb2NrIiwgZGlzYWJsaW5nIGlycSB2aWEKKwkJCXNwaW5fbG9ja19pcnFzYXZlKCkuCisKKwkJMi4JQ1BVIDEgZW50ZXJzIHN5bmNocm9uaXplX3JjdSgpLCB3cml0ZS1hY3F1aXJpbmcKKwkJCXJjdV9ncF9tdXRleC4KKworCQkzLglDUFUgMCBlbnRlcnMgcmN1X3JlYWRfbG9jaygpLCBidXQgbXVzdCB3YWl0CisJCQliZWNhdXNlIENQVSAxIGhvbGRzIHJjdV9ncF9tdXRleC4KKworCQk0LglDUFUgMSBpcyBpbnRlcnJ1cHRlZCwgYW5kIHRoZSBpcnEgaGFuZGxlcgorCQkJYXR0ZW1wdHMgdG8gYWNxdWlyZSBwcm9ibGVtYXRpY19sb2NrLgorCisJCVRoZSBzeXN0ZW0gaXMgbm93IGRlYWRsb2NrZWQuCisKKwkJT25lIHdheSB0byBhdm9pZCB0aGlzIGRlYWRsb2NrIGlzIHRvIHVzZSBhbiBhcHByb2FjaCBsaWtlCisJCXRoYXQgb2YgQ09ORklHX1BSRUVNUFRfUlQsIHdoZXJlIGFsbCBub3JtYWwgc3BpbmxvY2tzCisJCWJlY29tZSBibG9ja2luZyBsb2NrcywgYW5kIGFsbCBpcnEgaGFuZGxlcnMgZXhlY3V0ZSBpbgorCQl0aGUgY29udGV4dCBvZiBzcGVjaWFsIHRhc2tzLiAgSW4gdGhpcyBjYXNlLCBpbiBzdGVwIDQKKwkJYWJvdmUsIHRoZSBpcnEgaGFuZGxlciB3b3VsZCBibG9jaywgYWxsb3dpbmcgQ1BVIDEgdG8KKwkJcmVsZWFzZSByY3VfZ3BfbXV0ZXgsIGF2b2lkaW5nIHRoZSBkZWFkbG9jay4KKworCQlFdmVuIGluIHRoZSBhYnNlbmNlIG9mIGRlYWRsb2NrLCB0aGlzIFJDVSBpbXBsZW1lbnRhdGlvbgorCQlhbGxvd3MgbGF0ZW5jeSB0byAiYmxlZWQiIGZyb20gcmVhZGVycyB0byBvdGhlcgorCQlyZWFkZXJzIHRocm91Z2ggc3luY2hyb25pemVfcmN1KCkuICBUbyBzZWUgdGhpcywKKwkJY29uc2lkZXIgdGFzayBBIGluIGFuIFJDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbgorCQkodGh1cyByZWFkLWhvbGRpbmcgcmN1X2dwX211dGV4KSwgdGFzayBCIGJsb2NrZWQKKwkJYXR0ZW1wdGluZyB0byB3cml0ZS1hY3F1aXJlIHJjdV9ncF9tdXRleCwgYW5kCisJCXRhc2sgQyBibG9ja2VkIGluIHJjdV9yZWFkX2xvY2soKSBhdHRlbXB0aW5nIHRvCisJCXJlYWRfYWNxdWlyZSByY3VfZ3BfbXV0ZXguICBUYXNrIEEncyBSQ1UgcmVhZC1zaWRlCisJCWxhdGVuY3kgaXMgaG9sZGluZyB1cCB0YXNrIEMsIGFsYmVpdCBpbmRpcmVjdGx5IHZpYQorCQl0YXNrIEIuCisKKwkJUmVhbHRpbWUgUkNVIGltcGxlbWVudGF0aW9ucyB0aGVyZWZvcmUgdXNlIGEgY291bnRlci1iYXNlZAorCQlhcHByb2FjaCB3aGVyZSB0YXNrcyBpbiBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb25zCisJCWNhbm5vdCBiZSBibG9ja2VkIGJ5IHRhc2tzIGV4ZWN1dGluZyBzeW5jaHJvbml6ZV9yY3UoKS4KKworUXVpY2sgUXVpeiAjMjoJR2l2ZSBhbiBleGFtcGxlIHdoZXJlIENsYXNzaWMgUkNVJ3MgcmVhZC1zaWRlCisJCW92ZXJoZWFkIGlzIC1uZWdhdGl2ZS0uCisKK0Fuc3dlcjoJCUltYWdpbmUgYSBzaW5nbGUtQ1BVIHN5c3RlbSB3aXRoIGEgbm9uLUNPTkZJR19QUkVFTVBUCisJCWtlcm5lbCB3aGVyZSBhIHJvdXRpbmcgdGFibGUgaXMgdXNlZCBieSBwcm9jZXNzLWNvbnRleHQKKwkJY29kZSwgYnV0IGNhbiBiZSB1cGRhdGVkIGJ5IGlycS1jb250ZXh0IGNvZGUgKGZvciBleGFtcGxlLAorCQlieSBhbiAiSUNNUCBSRURJUkVDVCIgcGFja2V0KS4JVGhlIHVzdWFsIHdheSBvZiBoYW5kbGluZworCQl0aGlzIHdvdWxkIGJlIHRvIGhhdmUgdGhlIHByb2Nlc3MtY29udGV4dCBjb2RlIGRpc2FibGUKKwkJaW50ZXJydXB0cyB3aGlsZSBzZWFyY2hpbmcgdGhlIHJvdXRpbmcgdGFibGUuICBVc2Ugb2YKKwkJUkNVIGFsbG93cyBzdWNoIGludGVycnVwdC1kaXNhYmxpbmcgdG8gYmUgZGlzcGVuc2VkIHdpdGguCisJCVRodXMsIHdpdGhvdXQgUkNVLCB5b3UgcGF5IHRoZSBjb3N0IG9mIGRpc2FibGluZyBpbnRlcnJ1cHRzLAorCQlhbmQgd2l0aCBSQ1UgeW91IGRvbid0LgorCisJCU9uZSBjYW4gYXJndWUgdGhhdCB0aGUgb3ZlcmhlYWQgb2YgUkNVIGluIHRoaXMKKwkJY2FzZSBpcyBuZWdhdGl2ZSB3aXRoIHJlc3BlY3QgdG8gdGhlIHNpbmdsZS1DUFUKKwkJaW50ZXJydXB0LWRpc2FibGluZyBhcHByb2FjaC4gIE90aGVycyBtaWdodCBhcmd1ZSB0aGF0CisJCXRoZSBvdmVyaGVhZCBvZiBSQ1UgaXMgbWVyZWx5IHplcm8sIGFuZCB0aGF0IHJlcGxhY2luZworCQl0aGUgcG9zaXRpdmUgb3ZlcmhlYWQgb2YgdGhlIGludGVycnVwdC1kaXNhYmxpbmcgc2NoZW1lCisJCXdpdGggdGhlIHplcm8tb3ZlcmhlYWQgUkNVIHNjaGVtZSBkb2VzIG5vdCBjb25zdGl0dXRlCisJCW5lZ2F0aXZlIG92ZXJoZWFkLgorCisJCUluIHJlYWwgbGlmZSwgb2YgY291cnNlLCB0aGluZ3MgYXJlIG1vcmUgY29tcGxleC4gIEJ1dAorCQlldmVuIHRoZSB0aGVvcmV0aWNhbCBwb3NzaWJpbGl0eSBvZiBuZWdhdGl2ZSBvdmVyaGVhZCBmb3IKKwkJYSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlIGlzIGEgYml0IHVuZXhwZWN0ZWQuICA7LSkKKworUXVpY2sgUXVpeiAjMzogIElmIGl0IGlzIGlsbGVnYWwgdG8gYmxvY2sgaW4gYW4gUkNVIHJlYWQtc2lkZQorCQljcml0aWNhbCBzZWN0aW9uLCB3aGF0IHRoZSBoZWNrIGRvIHlvdSBkbyBpbgorCQlQUkVFTVBUX1JULCB3aGVyZSBub3JtYWwgc3BpbmxvY2tzIGNhbiBibG9jaz8/PworCitBbnN3ZXI6CQlKdXN0IGFzIFBSRUVNUFRfUlQgcGVybWl0cyBwcmVlbXB0aW9uIG9mIHNwaW5sb2NrCisJCWNyaXRpY2FsIHNlY3Rpb25zLCBpdCBwZXJtaXRzIHByZWVtcHRpb24gb2YgUkNVCisJCXJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9ucy4gIEl0IGFsc28gcGVybWl0cworCQlzcGlubG9ja3MgYmxvY2tpbmcgd2hpbGUgaW4gUkNVIHJlYWQtc2lkZSBjcml0aWNhbAorCQlzZWN0aW9ucy4KKworCQlXaHkgdGhlIGFwcGFyZW50IGluY29uc2lzdGVuY3k/ICBCZWNhdXNlIGl0IGlzIGl0CisJCXBvc3NpYmxlIHRvIHVzZSBwcmlvcml0eSBib29zdGluZyB0byBrZWVwIHRoZSBSQ1UKKwkJZ3JhY2UgcGVyaW9kcyBzaG9ydCBpZiBuZWVkIGJlIChmb3IgZXhhbXBsZSwgaWYgcnVubmluZworCQlzaG9ydCBvZiBtZW1vcnkpLiAgSW4gY29udHJhc3QsIGlmIGJsb2NraW5nIHdhaXRpbmcKKwkJZm9yIChzYXkpIG5ldHdvcmsgcmVjZXB0aW9uLCB0aGVyZSBpcyBubyB3YXkgdG8ga25vdworCQl3aGF0IHNob3VsZCBiZSBib29zdGVkLiAgRXNwZWNpYWxseSBnaXZlbiB0aGF0IHRoZQorCQlwcm9jZXNzIHdlIG5lZWQgdG8gYm9vc3QgbWlnaHQgd2VsbCBiZSBhIGh1bWFuIGJlaW5nCisJCXdobyBqdXN0IHdlbnQgb3V0IGZvciBhIHBpenphIG9yIHNvbWV0aGluZy4gIEFuZCBhbHRob3VnaAorCQlhIGNvbXB1dGVyLW9wZXJhdGVkIGNhdHRsZSBwcm9kIG1pZ2h0IGFyb3VzZSBzZXJpb3VzCisJCWludGVyZXN0LCBpdCBtaWdodCBhbHNvIHByb3Zva2Ugc2VyaW91cyBvYmplY3Rpb25zLgorCQlCZXNpZGVzLCBob3cgZG9lcyB0aGUgY29tcHV0ZXIga25vdyB3aGF0IHBpenphIHBhcmxvcgorCQl0aGUgaHVtYW4gYmVpbmcgd2VudCB0bz8/PworCisKK0FDS05PV0xFREdFTUVOVFMKKworTXkgdGhhbmtzIHRvIHRoZSBwZW9wbGUgd2hvIGhlbHBlZCBtYWtlIHRoaXMgaHVtYW4tcmVhZGFibGUsIGluY2x1ZGluZworSm9uIFdhbHBvbGUsIEpvc2ggVHJpcGxldHQsIFNlcmdlIEhhbGx5biwgU3V6YW5uZSBXb29kLCBhbmQgQWxhbiBTdGVybi4KKworCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cucmRyb3AuY29tL3VzZXJzL3BhdWxtY2svUkNVLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9TQUsudHh0IGIvRG9jdW1lbnRhdGlvbi9TQUsudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0YmUxNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1NBSy50eHQKQEAgLTAsMCArMSw4OCBAQAorTGludXggMi40LjIgU2VjdXJlIEF0dGVudGlvbiBLZXkgKFNBSykgaGFuZGxpbmcKKzE4IE1hcmNoIDIwMDEsIEFuZHJldyBNb3J0b24KKworQW4gb3BlcmF0aW5nIHN5c3RlbSdzIFNlY3VyZSBBdHRlbnRpb24gS2V5IGlzIGEgc2VjdXJpdHkgdG9vbCB3aGljaCBpcworcHJvdmlkZWQgYXMgcHJvdGVjdGlvbiBhZ2FpbnN0IHRyb2phbiBwYXNzd29yZCBjYXB0dXJpbmcgcHJvZ3JhbXMuICBJdAoraXMgYW4gdW5kZWZlYXRhYmxlIHdheSBvZiBraWxsaW5nIGFsbCBwcm9ncmFtcyB3aGljaCBjb3VsZCBiZQorbWFzcXVlcmFkaW5nIGFzIGxvZ2luIGFwcGxpY2F0aW9ucy4gIFVzZXJzIG5lZWQgdG8gYmUgdGF1Z2h0IHRvIGVudGVyCit0aGlzIGtleSBzZXF1ZW5jZSBiZWZvcmUgdGhleSBsb2cgaW4gdG8gdGhlIHN5c3RlbS4KKworRnJvbSB0aGUgUEMga2V5Ym9hcmQsIExpbnV4IGhhcyB0d28gc2ltaWxhciBidXQgZGlmZmVyZW50IHdheXMgb2YKK3Byb3ZpZGluZyBTQUsuICBPbmUgaXMgdGhlIEFMVC1TWVNSUS1LIHNlcXVlbmNlLiAgWW91IHNob3VsZG4ndCB1c2UKK3RoaXMgc2VxdWVuY2UuICBJdCBpcyBvbmx5IGF2YWlsYWJsZSBpZiB0aGUga2VybmVsIHdhcyBjb21waWxlZCB3aXRoCitzeXNycSBzdXBwb3J0LgorCitUaGUgcHJvcGVyIHdheSBvZiBnZW5lcmF0aW5nIGEgU0FLIGlzIHRvIGRlZmluZSB0aGUga2V5IHNlcXVlbmNlIHVzaW5nCitgbG9hZGtleXMnLiAgVGhpcyB3aWxsIHdvcmsgd2hldGhlciBvciBub3Qgc3lzcnEgc3VwcG9ydCBpcyBjb21waWxlZAoraW50byB0aGUga2VybmVsLgorCitTQUsgd29ya3MgY29ycmVjdGx5IHdoZW4gdGhlIGtleWJvYXJkIGlzIGluIHJhdyBtb2RlLiAgVGhpcyBtZWFucyB0aGF0CitvbmNlIGRlZmluZWQsIFNBSyB3aWxsIGtpbGwgYSBydW5uaW5nIFggc2VydmVyLiAgSWYgdGhlIHN5c3RlbSBpcyBpbgorcnVuIGxldmVsIDUsIHRoZSBYIHNlcnZlciB3aWxsIHJlc3RhcnQuICBUaGlzIGlzIHdoYXQgeW91IHdhbnQgdG8KK2hhcHBlbi4KKworV2hhdCBrZXkgc2VxdWVuY2Ugc2hvdWxkIHlvdSB1c2U/IFdlbGwsIENUUkwtQUxULURFTCBpcyB1c2VkIHRvIHJlYm9vdAordGhlIG1hY2hpbmUuICBDVFJMLUFMVC1CQUNLU1BBQ0UgaXMgbWFnaWNhbCB0byB0aGUgWCBzZXJ2ZXIuICBXZSdsbAorY2hvb3NlIENUUkwtQUxULVBBVVNFLgorCitJbiB5b3VyIHJjLnN5c2luaXQgKG9yIHJjLmxvY2FsKSBmaWxlLCBhZGQgdGhlIGNvbW1hbmQKKworCWVjaG8gImNvbnRyb2wgYWx0IGtleWNvZGUgMTAxID0gU0FLIiB8IC9iaW4vbG9hZGtleXMKKworQW5kIHRoYXQncyBpdCEgIE9ubHkgdGhlIHN1cGVydXNlciBtYXkgcmVwcm9ncmFtIHRoZSBTQUsga2V5LgorCisKK05PVEVTCis9PT09PQorCisxOiBMaW51eCBTQUsgaXMgc2FpZCB0byBiZSBub3QgYSAidHJ1ZSBTQUsiIGFzIGlzIHJlcXVpcmVkIGJ5CisgICBzeXN0ZW1zIHdoaWNoIGltcGxlbWVudCBDMiBsZXZlbCBzZWN1cml0eS4gIFRoaXMgYXV0aG9yIGRvZXMgbm90CisgICBrbm93IHdoeS4KKworCisyOiBPbiB0aGUgUEMga2V5Ym9hcmQsIFNBSyBraWxscyBhbGwgYXBwbGljYXRpb25zIHdoaWNoIGhhdmUKKyAgIC9kZXYvY29uc29sZSBvcGVuZWQuCisKKyAgIFVuZm9ydHVuYXRlbHkgdGhpcyBpbmNsdWRlcyBhIG51bWJlciBvZiB0aGluZ3Mgd2hpY2ggeW91IGRvbid0CisgICBhY3R1YWxseSB3YW50IGtpbGxlZC4gIFRoaXMgaXMgYmVjYXVzZSB0aGVzZSBhcHBsaWNhdGlvbnMgYXJlCisgICBpbmNvcnJlY3RseSBob2xkaW5nIC9kZXYvY29uc29sZSBvcGVuLiAgQmUgc3VyZSB0byBjb21wbGFpbiB0byB5b3VyCisgICBMaW51eCBkaXN0cmlidXRvciBhYm91dCB0aGlzIQorCisgICBZb3UgY2FuIGlkZW50aWZ5IHByb2Nlc3NlcyB3aGljaCB3aWxsIGJlIGtpbGxlZCBieSBTQUsgd2l0aCB0aGUKKyAgIGNvbW1hbmQKKworCSMgbHMgLWwgL3Byb2MvWzAtOV0qL2ZkLyogfCBncmVwIGNvbnNvbGUKKwlsLXd4LS0tLS0tICAgIDEgcm9vdCAgICAgcm9vdCAgICAgICAgICAgNjQgTWFyIDE4IDAwOjQ2IC9wcm9jLzU3OS9mZC8wIC0+IC9kZXYvY29uc29sZQorCisgICBUaGVuOgorCisJIyBwcyBhdXh8Z3JlcCA1NzkKKwlyb290ICAgICAgIDU3OSAgMC4wICAwLjEgIDEwODggIDQzNiA/ICAgICAgICBTICAgIDAwOjQzICAgMDowMCBncG0gLXQgcHMvMgorCisgICBTbyBgZ3BtJyB3aWxsIGJlIGtpbGxlZCBieSBTQUsuICBUaGlzIGlzIGEgYnVnIGluIGdwbS4gIEl0IHNob3VsZAorICAgYmUgY2xvc2luZyBzdGFuZGFyZCBpbnB1dC4gIFlvdSBjYW4gd29yayBhcm91bmQgdGhpcyBieSBmaW5kaW5nIHRoZQorICAgaW5pdHNjcmlwdCB3aGljaCBsYXVuY2hlcyBncG0gYW5kIGNoYW5naW5nIGl0IHRodXNseToKKworICAgT2xkOgorCisJZGFlbW9uIGdwbQorCisgICBOZXc6CisKKwlkYWVtb24gZ3BtIDwgL2Rldi9udWxsCisKKyAgIFZpeGllIGNyb24gYWxzbyBzZWVtcyB0byBoYXZlIHRoaXMgcHJvYmxlbSwgYW5kIG5lZWRzIHRoZSBzYW1lIHRyZWF0bWVudC4KKworICAgQWxzbywgb25lIHByb21pbmVudCBMaW51eCBkaXN0cmlidXRpb24gaGFzIHRoZSBmb2xsb3dpbmcgdGhyZWUKKyAgIGxpbmVzIGluIGl0cyByYy5zeXNpbml0IGFuZCByYyBzY3JpcHRzOgorCisJZXhlYyAzPCYwCisJZXhlYyA0PiYxCisJZXhlYyA1PiYyCisKKyAgIFRoZXNlIGNvbW1hbmRzIGNhdXNlICphbGwqIGRhZW1vbnMgd2hpY2ggYXJlIGxhdW5jaGVkIGJ5IHRoZQorICAgaW5pdHNjcmlwdHMgdG8gaGF2ZSBmaWxlIGRlc2NyaXB0b3JzIDMsIDQgYW5kIDUgYXR0YWNoZWQgdG8KKyAgIC9kZXYvY29uc29sZS4gIFNvIFNBSyBraWxscyB0aGVtIGFsbC4gIEEgd29ya2Fyb3VuZCBpcyB0byBzaW1wbHkKKyAgIGRlbGV0ZSB0aGVzZSBsaW5lcywgYnV0IHRoaXMgbWF5IGNhdXNlIHN5c3RlbSBtYW5hZ2VtZW50CisgICBhcHBsaWNhdGlvbnMgdG8gbWFsZnVuY3Rpb24gLSB0ZXN0IGV2ZXJ5dGhpbmcgd2VsbC4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9TTTUwMS50eHQgYi9Eb2N1bWVudGF0aW9uL1NNNTAxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjE4MjZmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9TTTUwMS50eHQKQEAgLTAsMCArMSw3MSBAQAorCQkJU001MDEgRHJpdmVyCisJCQk9PT09PT09PT09PT0KKworQ29weXJpZ2h0IDIwMDYsIDIwMDcgU2ltdGVjIEVsZWN0cm9uaWNzCisKK1RoZSBTaWxpY29uIE1vdGlvbiBTTTUwMSBtdWx0aW1lZGlhIGNvbXBhbmlvbiBjaGlwIGlzIGEgbXVsdGlmdW5jdGlvbiBkZXZpY2UKK3doaWNoIG1heSBwcm92aWRlIG51bWVyb3VzIGludGVyZmFjZXMgaW5jbHVkaW5nIFVTQiBob3N0IGNvbnRyb2xsZXIgVVNCIGdhZGdldCwKK2FzeW5jaHJvbm91cyBzZXJpYWwgcG9ydHMsIGF1ZGlvIGZ1bmN0aW9ucywgYW5kIGEgZHVhbCBkaXNwbGF5IHZpZGVvIGludGVyZmFjZS4KK1RoZSBkZXZpY2UgbWF5IGJlIGNvbm5lY3RlZCBieSBQQ0kgb3IgbG9jYWwgYnVzIHdpdGggdmFyeWluZyBmdW5jdGlvbnMgZW5hYmxlZC4KKworQ29yZQorLS0tLQorCitUaGUgY29yZSBkcml2ZXIgaW4gZHJpdmVycy9tZmQgcHJvdmlkZXMgY29tbW9uIHNlcnZpY2VzIGZvciB0aGUKK2RyaXZlcnMgd2hpY2ggbWFuYWdlIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSBibG9ja3MuIFRoZXNlIHNlcnZpY2VzCitpbmNsdWRlIGxvY2tpbmcgZm9yIGNvbW1vbiByZWdpc3RlcnMsIGNsb2NrIGNvbnRyb2wgYW5kIHJlc291cmNlCittYW5hZ2VtZW50LgorCitUaGUgY29yZSByZWdpc3RlcnMgZHJpdmVycyBmb3IgYm90aCBQQ0kgYW5kIGdlbmVyaWMgYnVzIGJhc2VkCitjaGlwcyB2aWEgdGhlIHBsYXRmb3JtIGRldmljZSBhbmQgZHJpdmVyIHN5c3RlbS4KKworT24gZGV0ZWN0aW9uIG9mIGEgZGV2aWNlLCB0aGUgY29yZSBpbml0aWFsaXNlcyB0aGUgY2hpcCAod2hpY2ggbWF5CitiZSBzcGVjaWZpZWQgYnkgdGhlIHBsYXRmb3JtIGRhdGEpIGFuZCB0aGVuIGV4cG9ydHMgdGhlIHNlbGVjdGVkCitwZXJpcGhlcmFsIHNldCBhcyBwbGF0Zm9ybSBkZXZpY2VzIGZvciB0aGUgc3BlY2lmaWMgZHJpdmVycy4KKworVGhlIGNvcmUgcmUtdXNlcyB0aGUgcGxhdGZvcm0gZGV2aWNlIHN5c3RlbSBhcyB0aGUgcGxhdGZvcm0gZGV2aWNlCitzeXN0ZW0gcHJvdmlkZXMgZW5vdWdoIGZlYXR1cmVzIHRvIHN1cHBvcnQgdGhlIGRyaXZlcnMgd2l0aG91dCB0aGUKK25lZWQgdG8gY3JlYXRlIGEgbmV3IGJ1cy10eXBlIGFuZCB0aGUgYXNzb2NpYXRlZCBjb2RlIHRvIGdvIHdpdGggaXQuCisKKworUmVzb3VyY2VzCistLS0tLS0tLS0KKworRWFjaCBwZXJpcGhlcmFsIGhhcyBhIHZpZXcgb2YgdGhlIGRldmljZSB3aGljaCBpcyBpbXBsaWNpdGx5IG5hcnJvd2VkIHRvCit0aGUgc3BlY2lmaWMgc2V0IG9mIHJlc291cmNlcyB0aGF0IHBlcmlwaGVyYWwgcmVxdWlyZXMgaW4gb3JkZXIgdG8KK2Z1bmN0aW9uIGNvcnJlY3RseS4KKworVGhlIGNlbnRyYWxpc2VkIG1lbW9yeSBhbGxvY2F0aW9uIGFsbG93cyB0aGUgZHJpdmVyIHRvIGVuc3VyZSB0aGF0IHRoZQorbWF4aW11bSBwb3NzaWJsZSByZXNvdXJjZSBhbGxvY2F0aW9uIGNhbiBiZSBtYWRlIHRvIHRoZSB2aWRlbyBzdWJzeXN0ZW0KK2FzIHRoaXMgaXMgYnktZmFyIHRoZSBtb3N0IHJlc291cmNlLXNlbnNpdGl2ZSBvZiB0aGUgb24tY2hpcCBmdW5jdGlvbnMuCisKK1RoZSBwcmltYXJ5IGlzc3VlIHdpdGggbWVtb3J5IGFsbG9jYXRpb24gaXMgdGhhdCBvZiBtb3ZpbmcgdGhlIHZpZGVvCitidWZmZXJzIG9uY2UgYSBkaXNwbGF5IG1vZGUgaXMgY2hvc2VuLiBJbmRlZWQgd2hlbiBhIHZpZGVvIG1vZGUgY2hhbmdlCitvY2N1cnMgdGhlIG1lbW9yeSBmb290cHJpbnQgb2YgdGhlIHZpZGVvIHN1YnN5c3RlbSBjaGFuZ2VzLgorCitTaW5jZSB2aWRlbyBtZW1vcnkgaXMgZGlmZmljdWx0IHRvIG1vdmUgd2l0aG91dCBjaGFuZ2luZyB0aGUgZGlzcGxheQorKHVubGVzcyBzdWZmaWNpZW50IGNvbnRpZ3VvdXMgbWVtb3J5IGNhbiBiZSBwcm92aWRlZCBmb3IgdGhlIG9sZCBhbmQgbmV3Cittb2RlcyBzaW11bHRhbmVvdXNseSkgdGhlIHZpZGVvIGRyaXZlciBmdWxseSB1dGlsaXNlcyB0aGUgbWVtb3J5IGFyZWEKK2dpdmVuIHRvIGl0IGJ5IGFsaWduaW5nIGZiMCB0byB0aGUgc3RhcnQgb2YgdGhlIGFyZWEgYW5kIGZiMSB0byB0aGUgZW5kCitvZiBpdC4gQW55IG1lbW9yeSBsZWZ0IG92ZXIgaW4gdGhlIG1pZGRsZSBpcyB1c2VkIGZvciB0aGUgYWNjZWxlcmF0aW9uCitmdW5jdGlvbnMsIHdoaWNoIGFyZSB0cmFuc2llbnQgYW5kIHRodXMgdGhlaXIgbG9jYXRpb24gaXMgbGVzcyBjcml0aWNhbAorYXMgaXQgY2FuIGJlIG1vdmVkLgorCisKK0NvbmZpZ3VyYXRpb24KKy0tLS0tLS0tLS0tLS0KKworVGhlIHBsYXRmb3JtIGRldmljZSBkcml2ZXIgdXNlcyBhIHNldCBvZiBwbGF0Zm9ybSBkYXRhIHRvIHBhc3MKK2NvbmZpZ3VyYXRpb25zIHRocm91Z2ggdG8gdGhlIGNvcmUgYW5kIHRoZSBzdWJzaWRpYXJ5IGRyaXZlcnMKK3NvIHRoYXQgdGhlcmUgY2FuIGJlIHN1cHBvcnQgZm9yIG1vcmUgdGhhbiBvbmUgc3lzdGVtIGNhcnJ5aW5nCithbiBTTTUwMSBidWlsdCBpbnRvIGEgc2luZ2xlIGtlcm5lbCBpbWFnZS4KKworVGhlIFBDSSBkcml2ZXIgYXNzdW1lcyB0aGF0IHRoZSBQQ0kgY2FyZCBiZWhhdmVzIGFzIHBlciB0aGUgU2lsaWNvbgorTW90aW9uIHJlZmVyZW5jZSBkZXNpZ24uCisKK1RoZXJlIGlzIGFuIGVycmF0YSAoQUItNSkgYWZmZWN0aW5nIHRoZSBzZWxlY3Rpb24gb2YgdGhlCitvZiB0aGUgTTFYQ0xLIGFuZCBNMUNMSyBmcmVxdWVuY2llcy4gVGhlc2UgdHdvIGNsb2NrcworbXVzdCBiZSBzb3VyY2VkIGZyb20gdGhlIHNhbWUgUExMLCBhbHRob3VnaCB0aGV5IGNhbiB0aGVuCitiZSBkaXZpZGVkIGRvd24gaW5kaXZpZHVhbGx5LiBJZiB0aGlzIGlzIG5vdCBzZXQsIHRoZW4gU001MDEgbWF5Citsb2NrIGFuZCBoYW5nIHRoZSB3aG9sZSBzeXN0ZW0uIFRoZSBkcml2ZXIgd2lsbCByZWZ1c2UgdG8KK2F0dGFjaCBpZiB0aGUgUExMIHNlbGVjdGlvbiBpcyBkaWZmZXJlbnQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1NlY3VyaXR5QnVncyBiL0RvY3VtZW50YXRpb24vU2VjdXJpdHlCdWdzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2NjBkNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1NlY3VyaXR5QnVncwpAQCAtMCwwICsxLDM4IEBACitMaW51eCBrZXJuZWwgZGV2ZWxvcGVycyB0YWtlIHNlY3VyaXR5IHZlcnkgc2VyaW91c2x5LiAgQXMgc3VjaCwgd2UnZAorbGlrZSB0byBrbm93IHdoZW4gYSBzZWN1cml0eSBidWcgaXMgZm91bmQgc28gdGhhdCBpdCBjYW4gYmUgZml4ZWQgYW5kCitkaXNjbG9zZWQgYXMgcXVpY2tseSBhcyBwb3NzaWJsZS4gIFBsZWFzZSByZXBvcnQgc2VjdXJpdHkgYnVncyB0byB0aGUKK0xpbnV4IGtlcm5lbCBzZWN1cml0eSB0ZWFtLgorCisxKSBDb250YWN0CisKK1RoZSBMaW51eCBrZXJuZWwgc2VjdXJpdHkgdGVhbSBjYW4gYmUgY29udGFjdGVkIGJ5IGVtYWlsIGF0Cis8c2VjdXJpdHlAa2VybmVsLm9yZz4uICBUaGlzIGlzIGEgcHJpdmF0ZSBsaXN0IG9mIHNlY3VyaXR5IG9mZmljZXJzCit3aG8gd2lsbCBoZWxwIHZlcmlmeSB0aGUgYnVnIHJlcG9ydCBhbmQgZGV2ZWxvcCBhbmQgcmVsZWFzZSBhIGZpeC4KK0l0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIHNlY3VyaXR5IHRlYW0gd2lsbCBicmluZyBpbiBleHRyYSBoZWxwIGZyb20KK2FyZWEgbWFpbnRhaW5lcnMgdG8gdW5kZXJzdGFuZCBhbmQgZml4IHRoZSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LgorCitBcyBpdCBpcyB3aXRoIGFueSBidWcsIHRoZSBtb3JlIGluZm9ybWF0aW9uIHByb3ZpZGVkIHRoZSBlYXNpZXIgaXQKK3dpbGwgYmUgdG8gZGlhZ25vc2UgYW5kIGZpeC4gIFBsZWFzZSByZXZpZXcgdGhlIHByb2NlZHVyZSBvdXRsaW5lZCBpbgorUkVQT1JUSU5HLUJVR1MgaWYgeW91IGFyZSB1bmNsZWFyIGFib3V0IHdoYXQgaW5mb3JtYXRpb24gaXMgaGVscGZ1bC4KK0FueSBleHBsb2l0IGNvZGUgaXMgdmVyeSBoZWxwZnVsIGFuZCB3aWxsIG5vdCBiZSByZWxlYXNlZCB3aXRob3V0Citjb25zZW50IGZyb20gdGhlIHJlcG9ydGVyIHVubGVzcyBpdCBoYXMgYWxyZWFkeSBiZWVuIG1hZGUgcHVibGljLgorCisyKSBEaXNjbG9zdXJlCisKK1RoZSBnb2FsIG9mIHRoZSBMaW51eCBrZXJuZWwgc2VjdXJpdHkgdGVhbSBpcyB0byB3b3JrIHdpdGggdGhlCitidWcgc3VibWl0dGVyIHRvIGJ1ZyByZXNvbHV0aW9uIGFzIHdlbGwgYXMgZGlzY2xvc3VyZS4gIFdlIHByZWZlcgordG8gZnVsbHkgZGlzY2xvc2UgdGhlIGJ1ZyBhcyBzb29uIGFzIHBvc3NpYmxlLiAgSXQgaXMgcmVhc29uYWJsZSB0bworZGVsYXkgZGlzY2xvc3VyZSB3aGVuIHRoZSBidWcgb3IgdGhlIGZpeCBpcyBub3QgeWV0IGZ1bGx5IHVuZGVyc3Rvb2QsCit0aGUgc29sdXRpb24gaXMgbm90IHdlbGwtdGVzdGVkIG9yIGZvciB2ZW5kb3IgY29vcmRpbmF0aW9uLiAgSG93ZXZlciwgd2UKK2V4cGVjdCB0aGVzZSBkZWxheXMgdG8gYmUgc2hvcnQsIG1lYXN1cmFibGUgaW4gZGF5cywgbm90IHdlZWtzIG9yIG1vbnRocy4KK0EgZGlzY2xvc3VyZSBkYXRlIGlzIG5lZ290aWF0ZWQgYnkgdGhlIHNlY3VyaXR5IHRlYW0gd29ya2luZyB3aXRoIHRoZQorYnVnIHN1Ym1pdHRlciBhcyB3ZWxsIGFzIHZlbmRvcnMuICBIb3dldmVyLCB0aGUga2VybmVsIHNlY3VyaXR5IHRlYW0KK2hvbGRzIHRoZSBmaW5hbCBzYXkgd2hlbiBzZXR0aW5nIGEgZGlzY2xvc3VyZSBkYXRlLiAgVGhlIHRpbWVmcmFtZSBmb3IKK2Rpc2Nsb3N1cmUgaXMgZnJvbSBpbW1lZGlhdGUgKGVzcC4gaWYgaXQncyBhbHJlYWR5IHB1YmxpY2x5IGtub3duKQordG8gYSBmZXcgd2Vla3MuICBBcyBhIGJhc2ljIGRlZmF1bHQgcG9saWN5LCB3ZSBleHBlY3QgcmVwb3J0IGRhdGUgdG8KK2Rpc2Nsb3N1cmUgZGF0ZSB0byBiZSBvbiB0aGUgb3JkZXIgb2YgNyBkYXlzLgorCiszKSBOb24tZGlzY2xvc3VyZSBhZ3JlZW1lbnRzCisKK1RoZSBMaW51eCBrZXJuZWwgc2VjdXJpdHkgdGVhbSBpcyBub3QgYSBmb3JtYWwgYm9keSBhbmQgdGhlcmVmb3JlIHVuYWJsZQordG8gZW50ZXIgYW55IG5vbi1kaXNjbG9zdXJlIGFncmVlbWVudHMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1N1Ym1pdENoZWNrbGlzdCBiL0RvY3VtZW50YXRpb24vU3VibWl0Q2hlY2tsaXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiN2UzMmQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL1N1Ym1pdENoZWNrbGlzdApAQCAtMCwwICsxLDEwOSBAQAorTGludXggS2VybmVsIHBhdGNoIHN1Ym1pc3Npb24gY2hlY2tsaXN0Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitIZXJlIGFyZSBzb21lIGJhc2ljIHRoaW5ncyB0aGF0IGRldmVsb3BlcnMgc2hvdWxkIGRvIGlmIHRoZXkgd2FudCB0byBzZWUgdGhlaXIKK2tlcm5lbCBwYXRjaCBzdWJtaXNzaW9ucyBhY2NlcHRlZCBtb3JlIHF1aWNrbHkuCisKK1RoZXNlIGFyZSBhbGwgYWJvdmUgYW5kIGJleW9uZCB0aGUgZG9jdW1lbnRhdGlvbiB0aGF0IGlzIHByb3ZpZGVkIGluCitEb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzIGFuZCBlbHNld2hlcmUgcmVnYXJkaW5nIHN1Ym1pdHRpbmcgTGludXgKK2tlcm5lbCBwYXRjaGVzLgorCisKKzE6IElmIHlvdSB1c2UgYSBmYWNpbGl0eSB0aGVuICNpbmNsdWRlIHRoZSBmaWxlIHRoYXQgZGVmaW5lcy9kZWNsYXJlcworICAgdGhhdCBmYWNpbGl0eS4gIERvbid0IGRlcGVuZCBvbiBvdGhlciBoZWFkZXIgZmlsZXMgcHVsbGluZyBpbiBvbmVzCisgICB0aGF0IHlvdSB1c2UuCisKKzI6IEJ1aWxkcyBjbGVhbmx5IHdpdGggYXBwbGljYWJsZSBvciBtb2RpZmllZCBDT05GSUcgb3B0aW9ucyA9eSwgPW0sIGFuZAorICAgPW4uICBObyBnY2Mgd2FybmluZ3MvZXJyb3JzLCBubyBsaW5rZXIgd2FybmluZ3MvZXJyb3JzLgorCisyYjogUGFzc2VzIGFsbG5vY29uZmlnLCBhbGxtb2Rjb25maWcKKworMmM6IEJ1aWxkcyBzdWNjZXNzZnVsbHkgd2hlbiB1c2luZyBPPWJ1aWxkZGlyCisKKzM6IEJ1aWxkcyBvbiBtdWx0aXBsZSBDUFUgYXJjaGl0ZWN0dXJlcyBieSB1c2luZyBsb2NhbCBjcm9zcy1jb21waWxlIHRvb2xzCisgICBvciBzb21lIG90aGVyIGJ1aWxkIGZhcm0uCisKKzQ6IHBwYzY0IGlzIGEgZ29vZCBhcmNoaXRlY3R1cmUgZm9yIGNyb3NzLWNvbXBpbGF0aW9uIGNoZWNraW5nIGJlY2F1c2UgaXQKKyAgIHRlbmRzIHRvIHVzZSBgdW5zaWduZWQgbG9uZycgZm9yIDY0LWJpdCBxdWFudGl0aWVzLgorCis1OiBDaGVjayB5b3VyIHBhdGNoIGZvciBnZW5lcmFsIHN0eWxlIGFzIGRldGFpbGVkIGluCisgICBEb2N1bWVudGF0aW9uL0NvZGluZ1N0eWxlLiAgQ2hlY2sgZm9yIHRyaXZpYWwgdmlvbGF0aW9ucyB3aXRoIHRoZQorICAgcGF0Y2ggc3R5bGUgY2hlY2tlciBwcmlvciB0byBzdWJtaXNzaW9uIChzY3JpcHRzL2NoZWNrcGF0Y2gucGwpLgorICAgWW91IHNob3VsZCBiZSBhYmxlIHRvIGp1c3RpZnkgYWxsIHZpb2xhdGlvbnMgdGhhdCByZW1haW4gaW4KKyAgIHlvdXIgcGF0Y2guCisKKzY6IEFueSBuZXcgb3IgbW9kaWZpZWQgQ09ORklHIG9wdGlvbnMgZG9uJ3QgbXVjayB1cCB0aGUgY29uZmlnIG1lbnUuCisKKzc6IEFsbCBuZXcgS2NvbmZpZyBvcHRpb25zIGhhdmUgaGVscCB0ZXh0LgorCis4OiBIYXMgYmVlbiBjYXJlZnVsbHkgcmV2aWV3ZWQgd2l0aCByZXNwZWN0IHRvIHJlbGV2YW50IEtjb25maWcKKyAgIGNvbWJpbmF0aW9ucy4gIFRoaXMgaXMgdmVyeSBoYXJkIHRvIGdldCByaWdodCB3aXRoIHRlc3RpbmcgLS0gYnJhaW5wb3dlcgorICAgcGF5cyBvZmYgaGVyZS4KKworOTogQ2hlY2sgY2xlYW5seSB3aXRoIHNwYXJzZS4KKworMTA6IFVzZSAnbWFrZSBjaGVja3N0YWNrJyBhbmQgJ21ha2UgbmFtZXNwYWNlY2hlY2snIGFuZCBmaXggYW55IHByb2JsZW1zCisgICAgdGhhdCB0aGV5IGZpbmQuICBOb3RlOiBjaGVja3N0YWNrIGRvZXMgbm90IHBvaW50IG91dCBwcm9ibGVtcyBleHBsaWNpdGx5LAorICAgIGJ1dCBhbnkgb25lIGZ1bmN0aW9uIHRoYXQgdXNlcyBtb3JlIHRoYW4gNTEyIGJ5dGVzIG9uIHRoZSBzdGFjayBpcyBhCisgICAgY2FuZGlkYXRlIGZvciBjaGFuZ2UuCisKKzExOiBJbmNsdWRlIGtlcm5lbC1kb2MgdG8gZG9jdW1lbnQgZ2xvYmFsIGtlcm5lbCBBUElzLiAgKE5vdCByZXF1aXJlZCBmb3IKKyAgICBzdGF0aWMgZnVuY3Rpb25zLCBidXQgT0sgdGhlcmUgYWxzby4pIFVzZSAnbWFrZSBodG1sZG9jcycgb3IgJ21ha2UKKyAgICBtYW5kb2NzJyB0byBjaGVjayB0aGUga2VybmVsLWRvYyBhbmQgZml4IGFueSBpc3N1ZXMuCisKKzEyOiBIYXMgYmVlbiB0ZXN0ZWQgd2l0aCBDT05GSUdfUFJFRU1QVCwgQ09ORklHX0RFQlVHX1BSRUVNUFQsCisgICAgQ09ORklHX0RFQlVHX1NMQUIsIENPTkZJR19ERUJVR19QQUdFQUxMT0MsIENPTkZJR19ERUJVR19NVVRFWEVTLAorICAgIENPTkZJR19ERUJVR19TUElOTE9DSywgQ09ORklHX0RFQlVHX0FUT01JQ19TTEVFUCwgQ09ORklHX1BST1ZFX1JDVQorICAgIGFuZCBDT05GSUdfREVCVUdfT0JKRUNUU19SQ1VfSEVBRCBhbGwgc2ltdWx0YW5lb3VzbHkgZW5hYmxlZC4KKworMTM6IEhhcyBiZWVuIGJ1aWxkLSBhbmQgcnVudGltZSB0ZXN0ZWQgd2l0aCBhbmQgd2l0aG91dCBDT05GSUdfU01QIGFuZAorICAgIENPTkZJR19QUkVFTVBULgorCisxNDogSWYgdGhlIHBhdGNoIGFmZmVjdHMgSU8vRGlzaywgZXRjOiBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCBhbmQgd2l0aG91dAorICAgIENPTkZJR19MQkRBRi4KKworMTU6IEFsbCBjb2RlcGF0aHMgaGF2ZSBiZWVuIGV4ZXJjaXNlZCB3aXRoIGFsbCBsb2NrZGVwIGZlYXR1cmVzIGVuYWJsZWQuCisKKzE2OiBBbGwgbmV3IC9wcm9jIGVudHJpZXMgYXJlIGRvY3VtZW50ZWQgdW5kZXIgRG9jdW1lbnRhdGlvbi8KKworMTc6IEFsbCBuZXcga2VybmVsIGJvb3QgcGFyYW1ldGVycyBhcmUgZG9jdW1lbnRlZCBpbgorICAgIERvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0LgorCisxODogQWxsIG5ldyBtb2R1bGUgcGFyYW1ldGVycyBhcmUgZG9jdW1lbnRlZCB3aXRoIE1PRFVMRV9QQVJNX0RFU0MoKQorCisxOTogQWxsIG5ldyB1c2Vyc3BhY2UgaW50ZXJmYWNlcyBhcmUgZG9jdW1lbnRlZCBpbiBEb2N1bWVudGF0aW9uL0FCSS8uCisgICAgU2VlIERvY3VtZW50YXRpb24vQUJJL1JFQURNRSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICBQYXRjaGVzIHRoYXQgY2hhbmdlIHVzZXJzcGFjZSBpbnRlcmZhY2VzIHNob3VsZCBiZSBDQ2VkIHRvCisgICAgbGludXgtYXBpQHZnZXIua2VybmVsLm9yZy4KKworMjA6IENoZWNrIHRoYXQgaXQgYWxsIHBhc3NlcyBgbWFrZSBoZWFkZXJzX2NoZWNrJy4KKworMjE6IEhhcyBiZWVuIGNoZWNrZWQgd2l0aCBpbmplY3Rpb24gb2YgYXQgbGVhc3Qgc2xhYiBhbmQgcGFnZS1hbGxvY2F0aW9uCisgICAgZmFpbHVyZXMuICBTZWUgRG9jdW1lbnRhdGlvbi9mYXVsdC1pbmplY3Rpb24vLgorCisgICAgSWYgdGhlIG5ldyBjb2RlIGlzIHN1YnN0YW50aWFsLCBhZGRpdGlvbiBvZiBzdWJzeXN0ZW0tc3BlY2lmaWMgZmF1bHQKKyAgICBpbmplY3Rpb24gbWlnaHQgYmUgYXBwcm9wcmlhdGUuCisKKzIyOiBOZXdseS1hZGRlZCBjb2RlIGhhcyBiZWVuIGNvbXBpbGVkIHdpdGggYGdjYyAtVycgKHVzZSAibWFrZQorICAgIEVYVFJBX0NGTEFHUz0tVyIpLiAgVGhpcyB3aWxsIGdlbmVyYXRlIGxvdHMgb2Ygbm9pc2UsIGJ1dCBpcyBnb29kIGZvcgorICAgIGZpbmRpbmcgYnVncyBsaWtlICJ3YXJuaW5nOiBjb21wYXJpc29uIGJldHdlZW4gc2lnbmVkIGFuZCB1bnNpZ25lZCIuCisKKzIzOiBUZXN0ZWQgYWZ0ZXIgaXQgaGFzIGJlZW4gbWVyZ2VkIGludG8gdGhlIC1tbSBwYXRjaHNldCB0byBtYWtlIHN1cmUKKyAgICB0aGF0IGl0IHN0aWxsIHdvcmtzIHdpdGggYWxsIG9mIHRoZSBvdGhlciBxdWV1ZWQgcGF0Y2hlcyBhbmQgdmFyaW91cworICAgIGNoYW5nZXMgaW4gdGhlIFZNLCBWRlMsIGFuZCBvdGhlciBzdWJzeXN0ZW1zLgorCisyNDogQWxsIG1lbW9yeSBiYXJyaWVycyB7ZS5nLiwgYmFycmllcigpLCBybWIoKSwgd21iKCl9IG5lZWQgYSBjb21tZW50IGluIHRoZQorICAgIHNvdXJjZSBjb2RlIHRoYXQgZXhwbGFpbnMgdGhlIGxvZ2ljIG9mIHdoYXQgdGhleSBhcmUgZG9pbmcgYW5kIHdoeS4KKworMjU6IElmIGFueSBpb2N0bCdzIGFyZSBhZGRlZCBieSB0aGUgcGF0Y2gsIHRoZW4gYWxzbyB1cGRhdGUKKyAgICBEb2N1bWVudGF0aW9uL2lvY3RsL2lvY3RsLW51bWJlci50eHQuCisKKzI2OiBJZiB5b3VyIG1vZGlmaWVkIHNvdXJjZSBjb2RlIGRlcGVuZHMgb24gb3IgdXNlcyBhbnkgb2YgdGhlIGtlcm5lbAorICAgIEFQSXMgb3IgZmVhdHVyZXMgdGhhdCBhcmUgcmVsYXRlZCB0byB0aGUgZm9sbG93aW5nIGtjb25maWcgc3ltYm9scywKKyAgICB0aGVuIHRlc3QgbXVsdGlwbGUgYnVpbGRzIHdpdGggdGhlIHJlbGF0ZWQga2NvbmZpZyBzeW1ib2xzIGRpc2FibGVkCisgICAgYW5kL29yID1tIChpZiB0aGF0IG9wdGlvbiBpcyBhdmFpbGFibGUpIFtub3QgYWxsIG9mIHRoZXNlIGF0IHRoZQorICAgIHNhbWUgdGltZSwganVzdCB2YXJpb3VzL3JhbmRvbSBjb21iaW5hdGlvbnMgb2YgdGhlbV06CisKKyAgICBDT05GSUdfU01QLCBDT05GSUdfU1lTRlMsIENPTkZJR19QUk9DX0ZTLCBDT05GSUdfSU5QVVQsIENPTkZJR19QQ0ksCisgICAgQ09ORklHX0JMT0NLLCBDT05GSUdfUE0sIENPTkZJR19NQUdJQ19TWVNSUSwKKyAgICBDT05GSUdfTkVULCBDT05GSUdfSU5FVD1uIChidXQgbGF0dGVyIHdpdGggQ09ORklHX05FVD15KQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nRHJpdmVycyBiL0RvY3VtZW50YXRpb24vU3VibWl0dGluZ0RyaXZlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFkMzcyNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vU3VibWl0dGluZ0RyaXZlcnMKQEAgLTAsMCArMSwxNjMgQEAKK1N1Ym1pdHRpbmcgRHJpdmVycyBGb3IgVGhlIExpbnV4IEtlcm5lbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZG9jdW1lbnQgaXMgaW50ZW5kZWQgdG8gZXhwbGFpbiBob3cgdG8gc3VibWl0IGRldmljZSBkcml2ZXJzIHRvIHRoZQordmFyaW91cyBrZXJuZWwgdHJlZXMuIE5vdGUgdGhhdCBpZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gdmlkZW8gY2FyZCBkcml2ZXJzCit5b3Ugc2hvdWxkIHByb2JhYmx5IHRhbGsgdG8gWEZyZWU4NiAoaHR0cDovL3d3dy54ZnJlZTg2Lm9yZy8pIGFuZC9vciBYLk9yZworKGh0dHA6Ly94Lm9yZy8pIGluc3RlYWQuCisKK0Fsc28gcmVhZCB0aGUgRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nUGF0Y2hlcyBkb2N1bWVudC4KKworCitBbGxvY2F0aW5nIERldmljZSBOdW1iZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01ham9yIGFuZCBtaW5vciBudW1iZXJzIGZvciBibG9jayBhbmQgY2hhcmFjdGVyIGRldmljZXMgYXJlIGFsbG9jYXRlZAorYnkgdGhlIExpbnV4IGFzc2lnbmVkIG5hbWUgYW5kIG51bWJlciBhdXRob3JpdHkgKGN1cnJlbnRseSB0aGlzIGlzCitUb3JiZW4gTWF0aGlhc2VuKS4gVGhlIHNpdGUgaXMgaHR0cDovL3d3dy5sYW5hbmEub3JnLy4gVGhpcworYWxzbyBkZWFscyB3aXRoIGFsbG9jYXRpbmcgbnVtYmVycyBmb3IgZGV2aWNlcyB0aGF0IGFyZSBub3QgZ29pbmcgdG8KK2JlIHN1Ym1pdHRlZCB0byB0aGUgbWFpbnN0cmVhbSBrZXJuZWwuCitTZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2VzLnR4dCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzLgorCitJZiB5b3UgZG9uJ3QgdXNlIGFzc2lnbmVkIG51bWJlcnMgdGhlbiB3aGVuIHlvdXIgZGV2aWNlIGlzIHN1Ym1pdHRlZCBpdCB3aWxsCitiZSBnaXZlbiBhbiBhc3NpZ25lZCBudW1iZXIgZXZlbiBpZiB0aGF0IGlzIGRpZmZlcmVudCBmcm9tIHZhbHVlcyB5b3UgbWF5CitoYXZlIHNoaXBwZWQgdG8gY3VzdG9tZXJzIGJlZm9yZS4KKworV2hvIFRvIFN1Ym1pdCBEcml2ZXJzIFRvCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTGludXggMi4wOgorCU5vIG5ldyBkcml2ZXJzIGFyZSBhY2NlcHRlZCBmb3IgdGhpcyBrZXJuZWwgdHJlZS4KKworTGludXggMi4yOgorCU5vIG5ldyBkcml2ZXJzIGFyZSBhY2NlcHRlZCBmb3IgdGhpcyBrZXJuZWwgdHJlZS4KKworTGludXggMi40OgorCUlmIHRoZSBjb2RlIGFyZWEgaGFzIGEgZ2VuZXJhbCBtYWludGFpbmVyIHRoZW4gcGxlYXNlIHN1Ym1pdCBpdCB0bworCXRoZSBtYWludGFpbmVyIGxpc3RlZCBpbiBNQUlOVEFJTkVSUyBpbiB0aGUga2VybmVsIGZpbGUuIElmIHRoZQorCW1haW50YWluZXIgZG9lcyBub3QgcmVzcG9uZCBvciB5b3UgY2Fubm90IGZpbmQgdGhlIGFwcHJvcHJpYXRlCisJbWFpbnRhaW5lciB0aGVuIHBsZWFzZSBjb250YWN0IFdpbGx5IFRhcnJlYXUgPHdAMXd0LmV1Pi4KKworTGludXggMi42OgorCVRoZSBzYW1lIHJ1bGVzIGFwcGx5IGFzIDIuNCBleGNlcHQgdGhhdCB5b3Ugc2hvdWxkIGZvbGxvdyBsaW51eC1rZXJuZWwKKwl0byB0cmFjayBjaGFuZ2VzIGluIEFQSSdzLiBUaGUgZmluYWwgY29udGFjdCBwb2ludCBmb3IgTGludXggMi42CisJc3VibWlzc2lvbnMgaXMgQW5kcmV3IE1vcnRvbi4KKworV2hhdCBDcml0ZXJpYSBEZXRlcm1pbmUgQWNjZXB0YW5jZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitMaWNlbnNpbmc6CVRoZSBjb2RlIG11c3QgYmUgcmVsZWFzZWQgdG8gdXMgdW5kZXIgdGhlCisJCUdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiBXZSBkb24ndCBpbnNpc3Qgb24gYW55IGtpbmQKKwkJb2YgZXhjbHVzaXZlIEdQTCBsaWNlbnNpbmcsIGFuZCBpZiB5b3Ugd2lzaCB0aGUgZHJpdmVyCisJCXRvIGJlIHVzZWZ1bCB0byBvdGhlciBjb21tdW5pdGllcyBzdWNoIGFzIEJTRCB5b3UgbWF5IHdlbGwKKwkJd2lzaCB0byByZWxlYXNlIHVuZGVyIG11bHRpcGxlIGxpY2Vuc2VzLgorCQlTZWUgYWNjZXB0ZWQgbGljZW5zZXMgYXQgaW5jbHVkZS9saW51eC9tb2R1bGUuaAorCitDb3B5cmlnaHQ6CVRoZSBjb3B5cmlnaHQgb3duZXIgbXVzdCBhZ3JlZSB0byB1c2Ugb2YgR1BMLgorCQlJdCdzIGJlc3QgaWYgdGhlIHN1Ym1pdHRlciBhbmQgY29weXJpZ2h0IG93bmVyCisJCWFyZSB0aGUgc2FtZSBwZXJzb24vZW50aXR5LiBJZiBub3QsIHRoZSBuYW1lIG9mCisJCXRoZSBwZXJzb24vZW50aXR5IGF1dGhvcml6aW5nIHVzZSBvZiBHUEwgc2hvdWxkIGJlCisJCWxpc3RlZCBpbiBjYXNlIGl0J3MgbmVjZXNzYXJ5IHRvIHZlcmlmeSB0aGUgd2lsbCBvZgorCQl0aGUgY29weXJpZ2h0IG93bmVyLgorCitJbnRlcmZhY2VzOglJZiB5b3VyIGRyaXZlciB1c2VzIGV4aXN0aW5nIGludGVyZmFjZXMgYW5kIGJlaGF2ZXMgbGlrZQorCQlvdGhlciBkcml2ZXJzIGluIHRoZSBzYW1lIGNsYXNzIGl0IHdpbGwgYmUgbXVjaCBtb3JlIGxpa2VseQorCQl0byBiZSBhY2NlcHRlZCB0aGFuIGlmIGl0IGludmVudHMgZ3JhdHVpdG91cyBuZXcgb25lcy4KKwkJSWYgeW91IG5lZWQgdG8gaW1wbGVtZW50IGEgY29tbW9uIEFQSSBvdmVyIExpbnV4IGFuZCBOVAorCQlkcml2ZXJzIGRvIGl0IGluIHVzZXJzcGFjZS4KKworQ29kZToJCVBsZWFzZSB1c2UgdGhlIExpbnV4IHN0eWxlIG9mIGNvZGUgZm9ybWF0dGluZyBhcyBkb2N1bWVudGVkCisJCWluIERvY3VtZW50YXRpb24vQ29kaW5nU3R5bGUuIElmIHlvdSBoYXZlIHNlY3Rpb25zIG9mIGNvZGUKKwkJdGhhdCBuZWVkIHRvIGJlIGluIG90aGVyIGZvcm1hdHMsIGZvciBleGFtcGxlIGJlY2F1c2UgdGhleQorCQlhcmUgc2hhcmVkIHdpdGggYSB3aW5kb3dzIGRyaXZlciBraXQgYW5kIHlvdSB3YW50IHRvCisJCW1haW50YWluIHRoZW0ganVzdCBvbmNlIHNlcGFyYXRlIHRoZW0gb3V0IG5pY2VseSBhbmQgbm90ZQorCQl0aGlzIGZhY3QuCisKK1BvcnRhYmlsaXR5OglQb2ludGVycyBhcmUgbm90IGFsd2F5cyAzMmJpdHMsIG5vdCBhbGwgY29tcHV0ZXJzIGFyZSBsaXR0bGUKKwkJZW5kaWFuLCBwZW9wbGUgZG8gbm90IGFsbCBoYXZlIGZsb2F0aW5nIHBvaW50IGFuZCB5b3UKKwkJc2hvdWxkbid0IHVzZSBpbmxpbmUgeDg2IGFzc2VtYmxlciBpbiB5b3VyIGRyaXZlciB3aXRob3V0CisJCWNhcmVmdWwgdGhvdWdodC4gUHVyZSB4ODYgZHJpdmVycyBnZW5lcmFsbHkgYXJlIG5vdCBwb3B1bGFyLgorCQlJZiB5b3Ugb25seSBoYXZlIHg4NiBoYXJkd2FyZSBpdCBpcyBoYXJkIHRvIHRlc3QgcG9ydGFiaWxpdHkKKwkJYnV0IGl0IGlzIGVhc3kgdG8gbWFrZSBzdXJlIHRoZSBjb2RlIGNhbiBlYXNpbHkgYmUgbWFkZQorCQlwb3J0YWJsZS4KKworQ2xhcml0eToJSXQgaGVscHMgaWYgYW55b25lIGNhbiBzZWUgaG93IHRvIGZpeCB0aGUgZHJpdmVyLiBJdCBoZWxwcworCQl5b3UgYmVjYXVzZSB5b3UgZ2V0IHBhdGNoZXMgbm90IGJ1ZyByZXBvcnRzLiBJZiB5b3Ugc3VibWl0IGEKKwkJZHJpdmVyIHRoYXQgaW50ZW50aW9uYWxseSBvYmZ1c2NhdGVzIGhvdyB0aGUgaGFyZHdhcmUgd29ya3MKKwkJaXQgd2lsbCBnbyBpbiB0aGUgYml0YnVja2V0LgorCitQTSBzdXBwb3J0OglTaW5jZSBMaW51eCBpcyB1c2VkIG9uIG1hbnkgcG9ydGFibGUgYW5kIGRlc2t0b3Agc3lzdGVtcywgeW91cgorCQlkcml2ZXIgaXMgbGlrZWx5IHRvIGJlIHVzZWQgb24gc3VjaCBhIHN5c3RlbSBhbmQgdGhlcmVmb3JlIGl0CisJCXNob3VsZCBzdXBwb3J0IGJhc2ljIHBvd2VyIG1hbmFnZW1lbnQgYnkgaW1wbGVtZW50aW5nLCBpZgorCQluZWNlc3NhcnksIHRoZSAuc3VzcGVuZCBhbmQgLnJlc3VtZSBtZXRob2RzIHVzZWQgZHVyaW5nIHRoZQorCQlzeXN0ZW0td2lkZSBzdXNwZW5kIGFuZCByZXN1bWUgdHJhbnNpdGlvbnMuICBZb3Ugc2hvdWxkIHZlcmlmeQorCQl0aGF0IHlvdXIgZHJpdmVyIGNvcnJlY3RseSBoYW5kbGVzIHRoZSBzdXNwZW5kIGFuZCByZXN1bWUsIGJ1dAorCQlpZiB5b3UgYXJlIHVuYWJsZSB0byBlbnN1cmUgdGhhdCwgcGxlYXNlIGF0IGxlYXN0IGRlZmluZSB0aGUKKwkJLnN1c3BlbmQgbWV0aG9kIHJldHVybmluZyB0aGUgLUVOT1NZUyAoIkZ1bmN0aW9uIG5vdAorCQlpbXBsZW1lbnRlZCIpIGVycm9yLiAgWW91IHNob3VsZCBhbHNvIHRyeSB0byBtYWtlIHN1cmUgdGhhdCB5b3VyCisJCWRyaXZlciB1c2VzIGFzIGxpdHRsZSBwb3dlciBhcyBwb3NzaWJsZSB3aGVuIGl0J3Mgbm90IGRvaW5nCisJCWFueXRoaW5nLiAgRm9yIHRoZSBkcml2ZXIgdGVzdGluZyBpbnN0cnVjdGlvbnMgc2VlCisJCURvY3VtZW50YXRpb24vcG93ZXIvZHJpdmVycy10ZXN0aW5nLnR4dCBhbmQgZm9yIGEgcmVsYXRpdmVseQorCQljb21wbGV0ZSBvdmVydmlldyBvZiB0aGUgcG93ZXIgbWFuYWdlbWVudCBpc3N1ZXMgcmVsYXRlZCB0bworCQlkcml2ZXJzIHNlZSBEb2N1bWVudGF0aW9uL3Bvd2VyL2RldmljZXMudHh0IC4KKworQ29udHJvbDoJSW4gZ2VuZXJhbCBpZiB0aGVyZSBpcyBhY3RpdmUgbWFpbnRlbmFuY2Ugb2YgYSBkcml2ZXIgYnkKKwkJdGhlIGF1dGhvciB0aGVuIHBhdGNoZXMgd2lsbCBiZSByZWRpcmVjdGVkIHRvIHRoZW0gdW5sZXNzCisJCXRoZXkgYXJlIHRvdGFsbHkgb2J2aW91cyBhbmQgd2l0aG91dCBuZWVkIG9mIGNoZWNraW5nLgorCQlJZiB5b3Ugd2FudCB0byBiZSB0aGUgY29udGFjdCBhbmQgdXBkYXRlIHBvaW50IGZvciB0aGUKKwkJZHJpdmVyIGl0IGlzIGEgZ29vZCBpZGVhIHRvIHN0YXRlIHRoaXMgaW4gdGhlIGNvbW1lbnRzLAorCQlhbmQgaW5jbHVkZSBhbiBlbnRyeSBpbiBNQUlOVEFJTkVSUyBmb3IgeW91ciBkcml2ZXIuCisKK1doYXQgQ3JpdGVyaWEgRG8gTm90IERldGVybWluZSBBY2NlcHRhbmNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitWZW5kb3I6CQlCZWluZyB0aGUgaGFyZHdhcmUgdmVuZG9yIGFuZCBtYWludGFpbmluZyB0aGUgZHJpdmVyIGlzCisJCW9mdGVuIGEgZ29vZCB0aGluZy4gSWYgdGhlcmUgaXMgYSBzdGFibGUgd29ya2luZyBkcml2ZXIgZnJvbQorCQlvdGhlciBwZW9wbGUgYWxyZWFkeSBpbiB0aGUgdHJlZSBkb24ndCBleHBlY3QgJ3dlIGFyZSB0aGUKKwkJdmVuZG9yJyB0byBnZXQgeW91ciBkcml2ZXIgY2hvc2VuLiBJZGVhbGx5IHdvcmsgd2l0aCB0aGUKKwkJZXhpc3RpbmcgZHJpdmVyIGF1dGhvciB0byBidWlsZCBhIHNpbmdsZSBwZXJmZWN0IGRyaXZlci4KKworQXV0aG9yOgkJSXQgZG9lc24ndCBtYXR0ZXIgaWYgYSBsYXJnZSBMaW51eCBjb21wYW55IHdyb3RlIHRoZSBkcml2ZXIsCisJCW9yIHlvdSBkaWQuIE5vYm9keSBoYXMgYW55IHNwZWNpYWwgYWNjZXNzIHRvIHRoZSBrZXJuZWwKKwkJdHJlZS4gQW55b25lIHdobyB0ZWxscyB5b3Ugb3RoZXJ3aXNlIGlzbid0IHRlbGxpbmcgdGhlCisJCXdob2xlIHN0b3J5LgorCisKK1Jlc291cmNlcworLS0tLS0tLS0tCisKK0xpbnV4IGtlcm5lbCBtYXN0ZXIgdHJlZToKKwlmdHAuPz8ua2VybmVsLm9yZzovcHViL2xpbnV4L2tlcm5lbC8uLi4KKwk/PyA9PSB5b3VyIGNvdW50cnkgY29kZSwgc3VjaCBhcyAidXMiLCAidWsiLCAiZnIiLCBldGMuCisKKwlodHRwOi8vZ2l0Lmtlcm5lbC5vcmcvP3A9bGludXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQKKworTGludXgga2VybmVsIG1haWxpbmcgbGlzdDoKKwlsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCisJW21haWwgbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZyB0byBzdWJzY3JpYmVdCisKK0xpbnV4IERldmljZSBEcml2ZXJzLCBUaGlyZCBFZGl0aW9uIChjb3ZlcnMgMi42LjEwKToKKwlodHRwOi8vbHduLm5ldC9LZXJuZWwvTEREMy8gIChmcmVlIHZlcnNpb24pCisKK0xXTi5uZXQ6CisJV2Vla2x5IHN1bW1hcnkgb2Yga2VybmVsIGRldmVsb3BtZW50IGFjdGl2aXR5IC0gaHR0cDovL2x3bi5uZXQvCisJMi42IEFQSSBjaGFuZ2VzOgorCQlodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8yLjYta2VybmVsLWFwaS8KKwlQb3J0aW5nIGRyaXZlcnMgZnJvbSBwcmlvciBrZXJuZWxzIHRvIDIuNjoKKwkJaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvZHJpdmVyLXBvcnRpbmcvCisKK0tlcm5lbE5ld2JpZXM6CisJRG9jdW1lbnRhdGlvbiBhbmQgYXNzaXN0YW5jZSBmb3IgbmV3IGtlcm5lbCBwcm9ncmFtbWVycworCWh0dHA6Ly9rZXJuZWxuZXdiaWVzLm9yZy8KKworTGludXggVVNCIHByb2plY3Q6CisJaHR0cDovL3d3dy5saW51eC11c2Iub3JnLworCitIb3cgdG8gTk9UIHdyaXRlIGtlcm5lbCBkcml2ZXIgYnkgQXJqYW4gdmFuIGRlIFZlbjoKKwlodHRwOi8vd3d3LmZlbnJ1cy5vcmcvaG93LXRvLW5vdC13cml0ZS1hLWRldmljZS1kcml2ZXItcGFwZXIucGRmCisKK0tlcm5lbCBKYW5pdG9yOgorCWh0dHA6Ly9rZXJuZWxuZXdiaWVzLm9yZy9LZXJuZWxKYW5pdG9ycworCitHSVQsIEZhc3QgVmVyc2lvbiBDb250cm9sIFN5c3RlbToKKwlodHRwOi8vZ2l0LXNjbS5jb20vCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzIGIvRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nUGF0Y2hlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjAzZmEwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nUGF0Y2hlcwpAQCAtMCwwICsxLDgyMSBAQAorCisJSG93IHRvIEdldCBZb3VyIENoYW5nZSBJbnRvIHRoZSBMaW51eCBLZXJuZWwKKwkJb3IKKwlDYXJlIEFuZCBPcGVyYXRpb24gT2YgWW91ciBMaW51cyBUb3J2YWxkcworCisKKworRm9yIGEgcGVyc29uIG9yIGNvbXBhbnkgd2hvIHdpc2hlcyB0byBzdWJtaXQgYSBjaGFuZ2UgdG8gdGhlIExpbnV4CitrZXJuZWwsIHRoZSBwcm9jZXNzIGNhbiBzb21ldGltZXMgYmUgZGF1bnRpbmcgaWYgeW91J3JlIG5vdCBmYW1pbGlhcgord2l0aCAidGhlIHN5c3RlbS4iICBUaGlzIHRleHQgaXMgYSBjb2xsZWN0aW9uIG9mIHN1Z2dlc3Rpb25zIHdoaWNoCitjYW4gZ3JlYXRseSBpbmNyZWFzZSB0aGUgY2hhbmNlcyBvZiB5b3VyIGNoYW5nZSBiZWluZyBhY2NlcHRlZC4KKworVGhpcyBkb2N1bWVudCBjb250YWlucyBhIGxhcmdlIG51bWJlciBvZiBzdWdnZXN0aW9ucyBpbiBhIHJlbGF0aXZlbHkgdGVyc2UKK2Zvcm1hdC4gIEZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIGtlcm5lbCBkZXZlbG9wbWVudCBwcm9jZXNzCit3b3Jrcywgc2VlIERvY3VtZW50YXRpb24vZGV2ZWxvcG1lbnQtcHJvY2Vzcy4gIEFsc28sIHJlYWQKK0RvY3VtZW50YXRpb24vU3VibWl0Q2hlY2tsaXN0IGZvciBhIGxpc3Qgb2YgaXRlbXMgdG8gY2hlY2sgYmVmb3JlCitzdWJtaXR0aW5nIGNvZGUuICBJZiB5b3UgYXJlIHN1Ym1pdHRpbmcgYSBkcml2ZXIsIGFsc28gcmVhZAorRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nRHJpdmVyczsgZm9yIGRldmljZSB0cmVlIGJpbmRpbmcgcGF0Y2hlcywgcmVhZAorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3N1Ym1pdHRpbmctcGF0Y2hlcy50eHQuCisKK01hbnkgb2YgdGhlc2Ugc3RlcHMgZGVzY3JpYmUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlIGdpdCB2ZXJzaW9uCitjb250cm9sIHN5c3RlbTsgaWYgeW91IHVzZSBnaXQgdG8gcHJlcGFyZSB5b3VyIHBhdGNoZXMsIHlvdSdsbCBmaW5kIG11Y2gKK29mIHRoZSBtZWNoYW5pY2FsIHdvcmsgZG9uZSBmb3IgeW91LCB0aG91Z2ggeW91J2xsIHN0aWxsIG5lZWQgdG8gcHJlcGFyZQorYW5kIGRvY3VtZW50IGEgc2Vuc2libGUgc2V0IG9mIHBhdGNoZXMuICBJbiBnZW5lcmFsLCB1c2Ugb2YgZ2l0IHdpbGwgbWFrZQoreW91ciBsaWZlIGFzIGEga2VybmVsIGRldmVsb3BlciBlYXNpZXIuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTRUNUSU9OIDEgLSBDUkVBVElORyBBTkQgU0VORElORyBZT1VSIENIQU5HRQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCiswKSBPYnRhaW4gYSBjdXJyZW50IHNvdXJjZSB0cmVlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHlvdSBkbyBub3QgaGF2ZSBhIHJlcG9zaXRvcnkgd2l0aCB0aGUgY3VycmVudCBrZXJuZWwgc291cmNlIGhhbmR5LCB1c2UKK2dpdCB0byBvYnRhaW4gb25lLiAgWW91J2xsIHdhbnQgdG8gc3RhcnQgd2l0aCB0aGUgbWFpbmxpbmUgcmVwb3NpdG9yeSwKK3doaWNoIGNhbiBiZSBncmFiYmVkIHdpdGg6CisKKyAgZ2l0IGNsb25lIGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQgCisKK05vdGUsIGhvd2V2ZXIsIHRoYXQgeW91IG1heSBub3Qgd2FudCB0byBkZXZlbG9wIGFnYWluc3QgdGhlIG1haW5saW5lIHRyZWUKK2RpcmVjdGx5LiAgTW9zdCBzdWJzeXN0ZW0gbWFpbnRhaW5lcnMgcnVuIHRoZWlyIG93biB0cmVlcyBhbmQgd2FudCB0byBzZWUKK3BhdGNoZXMgcHJlcGFyZWQgYWdhaW5zdCB0aG9zZSB0cmVlcy4gIFNlZSB0aGUgIlQ6IiBlbnRyeSBmb3IgdGhlIHN1YnN5c3RlbQoraW4gdGhlIE1BSU5UQUlORVJTIGZpbGUgdG8gZmluZCB0aGF0IHRyZWUsIG9yIHNpbXBseSBhc2sgdGhlIG1haW50YWluZXIgaWYKK3RoZSB0cmVlIGlzIG5vdCBsaXN0ZWQgdGhlcmUuCisKK0l0IGlzIHN0aWxsIHBvc3NpYmxlIHRvIGRvd25sb2FkIGtlcm5lbCByZWxlYXNlcyB2aWEgdGFyYmFsbHMgKGFzIGRlc2NyaWJlZAoraW4gdGhlIG5leHQgc2VjdGlvbiksIGJ1dCB0aGF0IGlzIHRoZSBoYXJkIHdheSB0byBkbyBrZXJuZWwgZGV2ZWxvcG1lbnQuCisKKzEpICJkaWZmIC11cCIKKy0tLS0tLS0tLS0tLQorCitJZiB5b3UgbXVzdCBnZW5lcmF0ZSB5b3VyIHBhdGNoZXMgYnkgaGFuZCwgdXNlICJkaWZmIC11cCIgb3IgImRpZmYgLXVwck4iCit0byBjcmVhdGUgcGF0Y2hlcy4gIEdpdCBnZW5lcmF0ZXMgcGF0Y2hlcyBpbiB0aGlzIGZvcm0gYnkgZGVmYXVsdDsgaWYKK3lvdSdyZSB1c2luZyBnaXQsIHlvdSBjYW4gc2tpcCB0aGlzIHNlY3Rpb24gZW50aXJlbHkuCisKK0FsbCBjaGFuZ2VzIHRvIHRoZSBMaW51eCBrZXJuZWwgb2NjdXIgaW4gdGhlIGZvcm0gb2YgcGF0Y2hlcywgYXMKK2dlbmVyYXRlZCBieSBkaWZmKDEpLiAgV2hlbiBjcmVhdGluZyB5b3VyIHBhdGNoLCBtYWtlIHN1cmUgdG8gY3JlYXRlIGl0CitpbiAidW5pZmllZCBkaWZmIiBmb3JtYXQsIGFzIHN1cHBsaWVkIGJ5IHRoZSAnLXUnIGFyZ3VtZW50IHRvIGRpZmYoMSkuCitBbHNvLCBwbGVhc2UgdXNlIHRoZSAnLXAnIGFyZ3VtZW50IHdoaWNoIHNob3dzIHdoaWNoIEMgZnVuY3Rpb24gZWFjaAorY2hhbmdlIGlzIGluIC0gdGhhdCBtYWtlcyB0aGUgcmVzdWx0YW50IGRpZmYgYSBsb3QgZWFzaWVyIHRvIHJlYWQuCitQYXRjaGVzIHNob3VsZCBiZSBiYXNlZCBpbiB0aGUgcm9vdCBrZXJuZWwgc291cmNlIGRpcmVjdG9yeSwKK25vdCBpbiBhbnkgbG93ZXIgc3ViZGlyZWN0b3J5LgorCitUbyBjcmVhdGUgYSBwYXRjaCBmb3IgYSBzaW5nbGUgZmlsZSwgaXQgaXMgb2Z0ZW4gc3VmZmljaWVudCB0byBkbzoKKworCVNSQ1RSRUU9IGxpbnV4CisJTVlGSUxFPSAgZHJpdmVycy9uZXQvbXlkcml2ZXIuYworCisJY2QgJFNSQ1RSRUUKKwljcCAkTVlGSUxFICRNWUZJTEUub3JpZworCXZpICRNWUZJTEUJIyBtYWtlIHlvdXIgY2hhbmdlCisJY2QgLi4KKwlkaWZmIC11cCAkU1JDVFJFRS8kTVlGSUxFey5vcmlnLH0gPiAvdG1wL3BhdGNoCisKK1RvIGNyZWF0ZSBhIHBhdGNoIGZvciBtdWx0aXBsZSBmaWxlcywgeW91IHNob3VsZCB1bnBhY2sgYSAidmFuaWxsYSIsCitvciB1bm1vZGlmaWVkIGtlcm5lbCBzb3VyY2UgdHJlZSwgYW5kIGdlbmVyYXRlIGEgZGlmZiBhZ2FpbnN0IHlvdXIKK293biBzb3VyY2UgdHJlZS4gIEZvciBleGFtcGxlOgorCisJTVlTUkM9IC9kZXZlbC9saW51eAorCisJdGFyIHh2ZnogbGludXgtMy4xOS50YXIuZ3oKKwltdiBsaW51eC0zLjE5IGxpbnV4LTMuMTktdmFuaWxsYQorCWRpZmYgLXVwck4gLVggbGludXgtMy4xOS12YW5pbGxhL0RvY3VtZW50YXRpb24vZG9udGRpZmYgXAorCQlsaW51eC0zLjE5LXZhbmlsbGEgJE1ZU1JDID4gL3RtcC9wYXRjaAorCisiZG9udGRpZmYiIGlzIGEgbGlzdCBvZiBmaWxlcyB3aGljaCBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBrZXJuZWwgZHVyaW5nCit0aGUgYnVpbGQgcHJvY2VzcywgYW5kIHNob3VsZCBiZSBpZ25vcmVkIGluIGFueSBkaWZmKDEpLWdlbmVyYXRlZAorcGF0Y2guCisKK01ha2Ugc3VyZSB5b3VyIHBhdGNoIGRvZXMgbm90IGluY2x1ZGUgYW55IGV4dHJhIGZpbGVzIHdoaWNoIGRvIG5vdAorYmVsb25nIGluIGEgcGF0Y2ggc3VibWlzc2lvbi4gIE1ha2Ugc3VyZSB0byByZXZpZXcgeW91ciBwYXRjaCAtYWZ0ZXItCitnZW5lcmF0aW5nIGl0IHdpdGggZGlmZigxKSwgdG8gZW5zdXJlIGFjY3VyYWN5LgorCitJZiB5b3VyIGNoYW5nZXMgcHJvZHVjZSBhIGxvdCBvZiBkZWx0YXMsIHlvdSBuZWVkIHRvIHNwbGl0IHRoZW0gaW50bworaW5kaXZpZHVhbCBwYXRjaGVzIHdoaWNoIG1vZGlmeSB0aGluZ3MgaW4gbG9naWNhbCBzdGFnZXM7IHNlZSBzZWN0aW9uCisjMy4gIFRoaXMgd2lsbCBmYWNpbGl0YXRlIHJldmlldyBieSBvdGhlciBrZXJuZWwgZGV2ZWxvcGVycywKK3ZlcnkgaW1wb3J0YW50IGlmIHlvdSB3YW50IHlvdXIgcGF0Y2ggYWNjZXB0ZWQuCisKK0lmIHlvdSdyZSB1c2luZyBnaXQsICJnaXQgcmViYXNlIC1pIiBjYW4gaGVscCB5b3Ugd2l0aCB0aGlzIHByb2Nlc3MuICBJZgoreW91J3JlIG5vdCB1c2luZyBnaXQsIHF1aWx0IDxodHRwOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9wcm9qZWN0cy9xdWlsdD4KK2lzIGFub3RoZXIgcG9wdWxhciBhbHRlcm5hdGl2ZS4KKworCisKKzIpIERlc2NyaWJlIHlvdXIgY2hhbmdlcy4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRGVzY3JpYmUgeW91ciBwcm9ibGVtLiAgV2hldGhlciB5b3VyIHBhdGNoIGlzIGEgb25lLWxpbmUgYnVnIGZpeCBvcgorNTAwMCBsaW5lcyBvZiBhIG5ldyBmZWF0dXJlLCB0aGVyZSBtdXN0IGJlIGFuIHVuZGVybHlpbmcgcHJvYmxlbSB0aGF0Cittb3RpdmF0ZWQgeW91IHRvIGRvIHRoaXMgd29yay4gIENvbnZpbmNlIHRoZSByZXZpZXdlciB0aGF0IHRoZXJlIGlzIGEKK3Byb2JsZW0gd29ydGggZml4aW5nIGFuZCB0aGF0IGl0IG1ha2VzIHNlbnNlIGZvciB0aGVtIHRvIHJlYWQgcGFzdCB0aGUKK2ZpcnN0IHBhcmFncmFwaC4KKworRGVzY3JpYmUgdXNlci12aXNpYmxlIGltcGFjdC4gIFN0cmFpZ2h0IHVwIGNyYXNoZXMgYW5kIGxvY2t1cHMgYXJlCitwcmV0dHkgY29udmluY2luZywgYnV0IG5vdCBhbGwgYnVncyBhcmUgdGhhdCBibGF0YW50LiAgRXZlbiBpZiB0aGUKK3Byb2JsZW0gd2FzIHNwb3R0ZWQgZHVyaW5nIGNvZGUgcmV2aWV3LCBkZXNjcmliZSB0aGUgaW1wYWN0IHlvdSB0aGluaworaXQgY2FuIGhhdmUgb24gdXNlcnMuICBLZWVwIGluIG1pbmQgdGhhdCB0aGUgbWFqb3JpdHkgb2YgTGludXgKK2luc3RhbGxhdGlvbnMgcnVuIGtlcm5lbHMgZnJvbSBzZWNvbmRhcnkgc3RhYmxlIHRyZWVzIG9yCit2ZW5kb3IvcHJvZHVjdC1zcGVjaWZpYyB0cmVlcyB0aGF0IGNoZXJyeS1waWNrIG9ubHkgc3BlY2lmaWMgcGF0Y2hlcworZnJvbSB1cHN0cmVhbSwgc28gaW5jbHVkZSBhbnl0aGluZyB0aGF0IGNvdWxkIGhlbHAgcm91dGUgeW91ciBjaGFuZ2UKK2Rvd25zdHJlYW06IHByb3Zva2luZyBjaXJjdW1zdGFuY2VzLCBleGNlcnB0cyBmcm9tIGRtZXNnLCBjcmFzaAorZGVzY3JpcHRpb25zLCBwZXJmb3JtYW5jZSByZWdyZXNzaW9ucywgbGF0ZW5jeSBzcGlrZXMsIGxvY2t1cHMsIGV0Yy4KKworUXVhbnRpZnkgb3B0aW1pemF0aW9ucyBhbmQgdHJhZGUtb2Zmcy4gIElmIHlvdSBjbGFpbSBpbXByb3ZlbWVudHMgaW4KK3BlcmZvcm1hbmNlLCBtZW1vcnkgY29uc3VtcHRpb24sIHN0YWNrIGZvb3RwcmludCwgb3IgYmluYXJ5IHNpemUsCitpbmNsdWRlIG51bWJlcnMgdGhhdCBiYWNrIHRoZW0gdXAuICBCdXQgYWxzbyBkZXNjcmliZSBub24tb2J2aW91cworY29zdHMuICBPcHRpbWl6YXRpb25zIHVzdWFsbHkgYXJlbid0IGZyZWUgYnV0IHRyYWRlLW9mZnMgYmV0d2VlbiBDUFUsCittZW1vcnksIGFuZCByZWFkYWJpbGl0eTsgb3IsIHdoZW4gaXQgY29tZXMgdG8gaGV1cmlzdGljcywgYmV0d2VlbgorZGlmZmVyZW50IHdvcmtsb2Fkcy4gIERlc2NyaWJlIHRoZSBleHBlY3RlZCBkb3duc2lkZXMgb2YgeW91cgorb3B0aW1pemF0aW9uIHNvIHRoYXQgdGhlIHJldmlld2VyIGNhbiB3ZWlnaCBjb3N0cyBhZ2FpbnN0IGJlbmVmaXRzLgorCitPbmNlIHRoZSBwcm9ibGVtIGlzIGVzdGFibGlzaGVkLCBkZXNjcmliZSB3aGF0IHlvdSBhcmUgYWN0dWFsbHkgZG9pbmcKK2Fib3V0IGl0IGluIHRlY2huaWNhbCBkZXRhaWwuICBJdCdzIGltcG9ydGFudCB0byBkZXNjcmliZSB0aGUgY2hhbmdlCitpbiBwbGFpbiBFbmdsaXNoIGZvciB0aGUgcmV2aWV3ZXIgdG8gdmVyaWZ5IHRoYXQgdGhlIGNvZGUgaXMgYmVoYXZpbmcKK2FzIHlvdSBpbnRlbmQgaXQgdG8uCisKK1RoZSBtYWludGFpbmVyIHdpbGwgdGhhbmsgeW91IGlmIHlvdSB3cml0ZSB5b3VyIHBhdGNoIGRlc2NyaXB0aW9uIGluIGEKK2Zvcm0gd2hpY2ggY2FuIGJlIGVhc2lseSBwdWxsZWQgaW50byBMaW51eCdzIHNvdXJjZSBjb2RlIG1hbmFnZW1lbnQKK3N5c3RlbSwgZ2l0LCBhcyBhICJjb21taXQgbG9nIi4gIFNlZSAjMTUsIGJlbG93LgorCitTb2x2ZSBvbmx5IG9uZSBwcm9ibGVtIHBlciBwYXRjaC4gIElmIHlvdXIgZGVzY3JpcHRpb24gc3RhcnRzIHRvIGdldAorbG9uZywgdGhhdCdzIGEgc2lnbiB0aGF0IHlvdSBwcm9iYWJseSBuZWVkIHRvIHNwbGl0IHVwIHlvdXIgcGF0Y2guCitTZWUgIzMsIG5leHQuCisKK1doZW4geW91IHN1Ym1pdCBvciByZXN1Ym1pdCBhIHBhdGNoIG9yIHBhdGNoIHNlcmllcywgaW5jbHVkZSB0aGUKK2NvbXBsZXRlIHBhdGNoIGRlc2NyaXB0aW9uIGFuZCBqdXN0aWZpY2F0aW9uIGZvciBpdC4gIERvbid0IGp1c3QKK3NheSB0aGF0IHRoaXMgaXMgdmVyc2lvbiBOIG9mIHRoZSBwYXRjaCAoc2VyaWVzKS4gIERvbid0IGV4cGVjdCB0aGUKK3N1YnN5c3RlbSBtYWludGFpbmVyIHRvIHJlZmVyIGJhY2sgdG8gZWFybGllciBwYXRjaCB2ZXJzaW9ucyBvciByZWZlcmVuY2VkCitVUkxzIHRvIGZpbmQgdGhlIHBhdGNoIGRlc2NyaXB0aW9uIGFuZCBwdXQgdGhhdCBpbnRvIHRoZSBwYXRjaC4KK0kuZS4sIHRoZSBwYXRjaCAoc2VyaWVzKSBhbmQgaXRzIGRlc2NyaXB0aW9uIHNob3VsZCBiZSBzZWxmLWNvbnRhaW5lZC4KK1RoaXMgYmVuZWZpdHMgYm90aCB0aGUgbWFpbnRhaW5lcnMgYW5kIHJldmlld2Vycy4gIFNvbWUgcmV2aWV3ZXJzCitwcm9iYWJseSBkaWRuJ3QgZXZlbiByZWNlaXZlIGVhcmxpZXIgdmVyc2lvbnMgb2YgdGhlIHBhdGNoLgorCitEZXNjcmliZSB5b3VyIGNoYW5nZXMgaW4gaW1wZXJhdGl2ZSBtb29kLCBlLmcuICJtYWtlIHh5enp5IGRvIGZyb3R6IgoraW5zdGVhZCBvZiAiW1RoaXMgcGF0Y2hdIG1ha2VzIHh5enp5IGRvIGZyb3R6IiBvciAiW0ldIGNoYW5nZWQgeHl6enkKK3RvIGRvIGZyb3R6IiwgYXMgaWYgeW91IGFyZSBnaXZpbmcgb3JkZXJzIHRvIHRoZSBjb2RlYmFzZSB0byBjaGFuZ2UKK2l0cyBiZWhhdmlvdXIuCisKK0lmIHRoZSBwYXRjaCBmaXhlcyBhIGxvZ2dlZCBidWcgZW50cnksIHJlZmVyIHRvIHRoYXQgYnVnIGVudHJ5IGJ5CitudW1iZXIgYW5kIFVSTC4gIElmIHRoZSBwYXRjaCBmb2xsb3dzIGZyb20gYSBtYWlsaW5nIGxpc3QgZGlzY3Vzc2lvbiwKK2dpdmUgYSBVUkwgdG8gdGhlIG1haWxpbmcgbGlzdCBhcmNoaXZlOyB1c2UgdGhlIGh0dHBzOi8vbGttbC5rZXJuZWwub3JnLworcmVkaXJlY3RvciB3aXRoIGEgTWVzc2FnZS1JZCwgdG8gZW5zdXJlIHRoYXQgdGhlIGxpbmtzIGNhbm5vdCBiZWNvbWUKK3N0YWxlLgorCitIb3dldmVyLCB0cnkgdG8gbWFrZSB5b3VyIGV4cGxhbmF0aW9uIHVuZGVyc3RhbmRhYmxlIHdpdGhvdXQgZXh0ZXJuYWwKK3Jlc291cmNlcy4gIEluIGFkZGl0aW9uIHRvIGdpdmluZyBhIFVSTCB0byBhIG1haWxpbmcgbGlzdCBhcmNoaXZlIG9yCitidWcsIHN1bW1hcml6ZSB0aGUgcmVsZXZhbnQgcG9pbnRzIG9mIHRoZSBkaXNjdXNzaW9uIHRoYXQgbGVkIHRvIHRoZQorcGF0Y2ggYXMgc3VibWl0dGVkLgorCitJZiB5b3Ugd2FudCB0byByZWZlciB0byBhIHNwZWNpZmljIGNvbW1pdCwgZG9uJ3QganVzdCByZWZlciB0byB0aGUKK1NIQS0xIElEIG9mIHRoZSBjb21taXQuIFBsZWFzZSBhbHNvIGluY2x1ZGUgdGhlIG9uZWxpbmUgc3VtbWFyeSBvZgordGhlIGNvbW1pdCwgdG8gbWFrZSBpdCBlYXNpZXIgZm9yIHJldmlld2VycyB0byBrbm93IHdoYXQgaXQgaXMgYWJvdXQuCitFeGFtcGxlOgorCisJQ29tbWl0IGUyMWQyMTcwZjM2NjAyYWUyNzA4ICgidmlkZW86IHJlbW92ZSB1bm5lY2Vzc2FyeQorCXBsYXRmb3JtX3NldF9kcnZkYXRhKCkiKSByZW1vdmVkIHRoZSB1bm5lY2Vzc2FyeQorCXBsYXRmb3JtX3NldF9kcnZkYXRhKCksIGJ1dCBsZWZ0IHRoZSB2YXJpYWJsZSAiZGV2IiB1bnVzZWQsCisJZGVsZXRlIGl0LgorCitZb3Ugc2hvdWxkIGFsc28gYmUgc3VyZSB0byB1c2UgYXQgbGVhc3QgdGhlIGZpcnN0IHR3ZWx2ZSBjaGFyYWN0ZXJzIG9mIHRoZQorU0hBLTEgSUQuICBUaGUga2VybmVsIHJlcG9zaXRvcnkgaG9sZHMgYSAqbG90KiBvZiBvYmplY3RzLCBtYWtpbmcKK2NvbGxpc2lvbnMgd2l0aCBzaG9ydGVyIElEcyBhIHJlYWwgcG9zc2liaWxpdHkuICBCZWFyIGluIG1pbmQgdGhhdCwgZXZlbiBpZgordGhlcmUgaXMgbm8gY29sbGlzaW9uIHdpdGggeW91ciBzaXgtY2hhcmFjdGVyIElEIG5vdywgdGhhdCBjb25kaXRpb24gbWF5CitjaGFuZ2UgZml2ZSB5ZWFycyBmcm9tIG5vdy4KKworSWYgeW91ciBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBhIHNwZWNpZmljIGNvbW1pdCwgZS5nLiB5b3UgZm91bmQgYW4gaXNzdWUgdXNpbmcKK2dpdC1iaXNlY3QsIHBsZWFzZSB1c2UgdGhlICdGaXhlczonIHRhZyB3aXRoIHRoZSBmaXJzdCAxMiBjaGFyYWN0ZXJzIG9mIHRoZQorU0hBLTEgSUQsIGFuZCB0aGUgb25lIGxpbmUgc3VtbWFyeS4gIEZvciBleGFtcGxlOgorCisJRml4ZXM6IGUyMWQyMTcwZjM2NiAoInZpZGVvOiByZW1vdmUgdW5uZWNlc3NhcnkgcGxhdGZvcm1fc2V0X2RydmRhdGEoKSIpCisKK1RoZSBmb2xsb3dpbmcgZ2l0LWNvbmZpZyBzZXR0aW5ncyBjYW4gYmUgdXNlZCB0byBhZGQgYSBwcmV0dHkgZm9ybWF0IGZvcgorb3V0cHV0dGluZyB0aGUgYWJvdmUgc3R5bGUgaW4gdGhlIGdpdCBsb2cgb3IgZ2l0IHNob3cgY29tbWFuZHMKKworCVtjb3JlXQorCQlhYmJyZXYgPSAxMgorCVtwcmV0dHldCisJCWZpeGVzID0gRml4ZXM6ICVoIChcIiVzXCIpCisKKzMpIFNlcGFyYXRlIHlvdXIgY2hhbmdlcy4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU2VwYXJhdGUgZWFjaCBfbG9naWNhbCBjaGFuZ2VfIGludG8gYSBzZXBhcmF0ZSBwYXRjaC4KKworRm9yIGV4YW1wbGUsIGlmIHlvdXIgY2hhbmdlcyBpbmNsdWRlIGJvdGggYnVnIGZpeGVzIGFuZCBwZXJmb3JtYW5jZQorZW5oYW5jZW1lbnRzIGZvciBhIHNpbmdsZSBkcml2ZXIsIHNlcGFyYXRlIHRob3NlIGNoYW5nZXMgaW50byB0d28KK29yIG1vcmUgcGF0Y2hlcy4gIElmIHlvdXIgY2hhbmdlcyBpbmNsdWRlIGFuIEFQSSB1cGRhdGUsIGFuZCBhIG5ldworZHJpdmVyIHdoaWNoIHVzZXMgdGhhdCBuZXcgQVBJLCBzZXBhcmF0ZSB0aG9zZSBpbnRvIHR3byBwYXRjaGVzLgorCitPbiB0aGUgb3RoZXIgaGFuZCwgaWYgeW91IG1ha2UgYSBzaW5nbGUgY2hhbmdlIHRvIG51bWVyb3VzIGZpbGVzLAorZ3JvdXAgdGhvc2UgY2hhbmdlcyBpbnRvIGEgc2luZ2xlIHBhdGNoLiAgVGh1cyBhIHNpbmdsZSBsb2dpY2FsIGNoYW5nZQoraXMgY29udGFpbmVkIHdpdGhpbiBhIHNpbmdsZSBwYXRjaC4KKworVGhlIHBvaW50IHRvIHJlbWVtYmVyIGlzIHRoYXQgZWFjaCBwYXRjaCBzaG91bGQgbWFrZSBhbiBlYXNpbHkgdW5kZXJzdG9vZAorY2hhbmdlIHRoYXQgY2FuIGJlIHZlcmlmaWVkIGJ5IHJldmlld2Vycy4gIEVhY2ggcGF0Y2ggc2hvdWxkIGJlIGp1c3RpZmlhYmxlCitvbiBpdHMgb3duIG1lcml0cy4KKworSWYgb25lIHBhdGNoIGRlcGVuZHMgb24gYW5vdGhlciBwYXRjaCBpbiBvcmRlciBmb3IgYSBjaGFuZ2UgdG8gYmUKK2NvbXBsZXRlLCB0aGF0IGlzIE9LLiAgU2ltcGx5IG5vdGUgInRoaXMgcGF0Y2ggZGVwZW5kcyBvbiBwYXRjaCBYIgoraW4geW91ciBwYXRjaCBkZXNjcmlwdGlvbi4KKworV2hlbiBkaXZpZGluZyB5b3VyIGNoYW5nZSBpbnRvIGEgc2VyaWVzIG9mIHBhdGNoZXMsIHRha2Ugc3BlY2lhbCBjYXJlIHRvCitlbnN1cmUgdGhhdCB0aGUga2VybmVsIGJ1aWxkcyBhbmQgcnVucyBwcm9wZXJseSBhZnRlciBlYWNoIHBhdGNoIGluIHRoZQorc2VyaWVzLiAgRGV2ZWxvcGVycyB1c2luZyAiZ2l0IGJpc2VjdCIgdG8gdHJhY2sgZG93biBhIHByb2JsZW0gY2FuIGVuZCB1cAorc3BsaXR0aW5nIHlvdXIgcGF0Y2ggc2VyaWVzIGF0IGFueSBwb2ludDsgdGhleSB3aWxsIG5vdCB0aGFuayB5b3UgaWYgeW91CitpbnRyb2R1Y2UgYnVncyBpbiB0aGUgbWlkZGxlLgorCitJZiB5b3UgY2Fubm90IGNvbmRlbnNlIHlvdXIgcGF0Y2ggc2V0IGludG8gYSBzbWFsbGVyIHNldCBvZiBwYXRjaGVzLAordGhlbiBvbmx5IHBvc3Qgc2F5IDE1IG9yIHNvIGF0IGEgdGltZSBhbmQgd2FpdCBmb3IgcmV2aWV3IGFuZCBpbnRlZ3JhdGlvbi4KKworCisKKzQpIFN0eWxlLWNoZWNrIHlvdXIgY2hhbmdlcy4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ2hlY2sgeW91ciBwYXRjaCBmb3IgYmFzaWMgc3R5bGUgdmlvbGF0aW9ucywgZGV0YWlscyBvZiB3aGljaCBjYW4gYmUKK2ZvdW5kIGluIERvY3VtZW50YXRpb24vQ29kaW5nU3R5bGUuICBGYWlsdXJlIHRvIGRvIHNvIHNpbXBseSB3YXN0ZXMKK3RoZSByZXZpZXdlcnMgdGltZSBhbmQgd2lsbCBnZXQgeW91ciBwYXRjaCByZWplY3RlZCwgcHJvYmFibHkKK3dpdGhvdXQgZXZlbiBiZWluZyByZWFkLgorCitPbmUgc2lnbmlmaWNhbnQgZXhjZXB0aW9uIGlzIHdoZW4gbW92aW5nIGNvZGUgZnJvbSBvbmUgZmlsZSB0bworYW5vdGhlciAtLSBpbiB0aGlzIGNhc2UgeW91IHNob3VsZCBub3QgbW9kaWZ5IHRoZSBtb3ZlZCBjb2RlIGF0IGFsbCBpbgordGhlIHNhbWUgcGF0Y2ggd2hpY2ggbW92ZXMgaXQuICBUaGlzIGNsZWFybHkgZGVsaW5lYXRlcyB0aGUgYWN0IG9mCittb3ZpbmcgdGhlIGNvZGUgYW5kIHlvdXIgY2hhbmdlcy4gIFRoaXMgZ3JlYXRseSBhaWRzIHJldmlldyBvZiB0aGUKK2FjdHVhbCBkaWZmZXJlbmNlcyBhbmQgYWxsb3dzIHRvb2xzIHRvIGJldHRlciB0cmFjayB0aGUgaGlzdG9yeSBvZgordGhlIGNvZGUgaXRzZWxmLgorCitDaGVjayB5b3VyIHBhdGNoZXMgd2l0aCB0aGUgcGF0Y2ggc3R5bGUgY2hlY2tlciBwcmlvciB0byBzdWJtaXNzaW9uCisoc2NyaXB0cy9jaGVja3BhdGNoLnBsKS4gIE5vdGUsIHRob3VnaCwgdGhhdCB0aGUgc3R5bGUgY2hlY2tlciBzaG91bGQgYmUKK3ZpZXdlZCBhcyBhIGd1aWRlLCBub3QgYXMgYSByZXBsYWNlbWVudCBmb3IgaHVtYW4ganVkZ21lbnQuICBJZiB5b3VyIGNvZGUKK2xvb2tzIGJldHRlciB3aXRoIGEgdmlvbGF0aW9uIHRoZW4gaXRzIHByb2JhYmx5IGJlc3QgbGVmdCBhbG9uZS4KKworVGhlIGNoZWNrZXIgcmVwb3J0cyBhdCB0aHJlZSBsZXZlbHM6CisgLSBFUlJPUjogdGhpbmdzIHRoYXQgYXJlIHZlcnkgbGlrZWx5IHRvIGJlIHdyb25nCisgLSBXQVJOSU5HOiB0aGluZ3MgcmVxdWlyaW5nIGNhcmVmdWwgcmV2aWV3CisgLSBDSEVDSzogdGhpbmdzIHJlcXVpcmluZyB0aG91Z2h0CisKK1lvdSBzaG91bGQgYmUgYWJsZSB0byBqdXN0aWZ5IGFsbCB2aW9sYXRpb25zIHRoYXQgcmVtYWluIGluIHlvdXIKK3BhdGNoLgorCisKKzUpIFNlbGVjdCB0aGUgcmVjaXBpZW50cyBmb3IgeW91ciBwYXRjaC4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWW91IHNob3VsZCBhbHdheXMgY29weSB0aGUgYXBwcm9wcmlhdGUgc3Vic3lzdGVtIG1haW50YWluZXIocykgb24gYW55IHBhdGNoCit0byBjb2RlIHRoYXQgdGhleSBtYWludGFpbjsgbG9vayB0aHJvdWdoIHRoZSBNQUlOVEFJTkVSUyBmaWxlIGFuZCB0aGUKK3NvdXJjZSBjb2RlIHJldmlzaW9uIGhpc3RvcnkgdG8gc2VlIHdobyB0aG9zZSBtYWludGFpbmVycyBhcmUuICBUaGUKK3NjcmlwdCBzY3JpcHRzL2dldF9tYWludGFpbmVyLnBsIGNhbiBiZSB2ZXJ5IHVzZWZ1bCBhdCB0aGlzIHN0ZXAuICBJZiB5b3UKK2Nhbm5vdCBmaW5kIGEgbWFpbnRhaW5lciBmb3IgdGhlIHN1YnN5c3RlbSB5b3UgYXJlIHdvcmtpbmcgb24sIEFuZHJldworTW9ydG9uIChha3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnKSBzZXJ2ZXMgYXMgYSBtYWludGFpbmVyIG9mIGxhc3QgcmVzb3J0LgorCitZb3Ugc2hvdWxkIGFsc28gbm9ybWFsbHkgY2hvb3NlIGF0IGxlYXN0IG9uZSBtYWlsaW5nIGxpc3QgdG8gcmVjZWl2ZSBhIGNvcHkKK29mIHlvdXIgcGF0Y2ggc2V0LiAgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZyBmdW5jdGlvbnMgYXMgYSBsaXN0IG9mCitsYXN0IHJlc29ydCwgYnV0IHRoZSB2b2x1bWUgb24gdGhhdCBsaXN0IGhhcyBjYXVzZWQgYSBudW1iZXIgb2YgZGV2ZWxvcGVycwordG8gdHVuZSBpdCBvdXQuICBMb29rIGluIHRoZSBNQUlOVEFJTkVSUyBmaWxlIGZvciBhIHN1YnN5c3RlbS1zcGVjaWZpYworbGlzdDsgeW91ciBwYXRjaCB3aWxsIHByb2JhYmx5IGdldCBtb3JlIGF0dGVudGlvbiB0aGVyZS4gIFBsZWFzZSBkbyBub3QKK3NwYW0gdW5yZWxhdGVkIGxpc3RzLCB0aG91Z2guCisKK01hbnkga2VybmVsLXJlbGF0ZWQgbGlzdHMgYXJlIGhvc3RlZCBvbiB2Z2VyLmtlcm5lbC5vcmc7IHlvdSBjYW4gZmluZCBhCitsaXN0IG9mIHRoZW0gYXQgaHR0cDovL3ZnZXIua2VybmVsLm9yZy92Z2VyLWxpc3RzLmh0bWwuICBUaGVyZSBhcmUKK2tlcm5lbC1yZWxhdGVkIGxpc3RzIGhvc3RlZCBlbHNld2hlcmUgYXMgd2VsbCwgdGhvdWdoLgorCitEbyBub3Qgc2VuZCBtb3JlIHRoYW4gMTUgcGF0Y2hlcyBhdCBvbmNlIHRvIHRoZSB2Z2VyIG1haWxpbmcgbGlzdHMhISEKKworTGludXMgVG9ydmFsZHMgaXMgdGhlIGZpbmFsIGFyYml0ZXIgb2YgYWxsIGNoYW5nZXMgYWNjZXB0ZWQgaW50byB0aGUKK0xpbnV4IGtlcm5lbC4gIEhpcyBlLW1haWwgYWRkcmVzcyBpcyA8dG9ydmFsZHNAbGludXgtZm91bmRhdGlvbi5vcmc+LgorSGUgZ2V0cyBhIGxvdCBvZiBlLW1haWwsIGFuZCwgYXQgdGhpcyBwb2ludCwgdmVyeSBmZXcgcGF0Y2hlcyBnbyB0aHJvdWdoCitMaW51cyBkaXJlY3RseSwgc28gdHlwaWNhbGx5IHlvdSBzaG91bGQgZG8geW91ciBiZXN0IHRvIC1hdm9pZC0KK3NlbmRpbmcgaGltIGUtbWFpbC4KKworSWYgeW91IGhhdmUgYSBwYXRjaCB0aGF0IGZpeGVzIGFuIGV4cGxvaXRhYmxlIHNlY3VyaXR5IGJ1Zywgc2VuZCB0aGF0IHBhdGNoCit0byBzZWN1cml0eUBrZXJuZWwub3JnLiAgRm9yIHNldmVyZSBidWdzLCBhIHNob3J0IGVtYmFyZ28gbWF5IGJlIGNvbnNpZGVyZWQKK3RvIGFsbG93IGRpc3RyaWJ1dG9ycyB0byBnZXQgdGhlIHBhdGNoIG91dCB0byB1c2VyczsgaW4gc3VjaCBjYXNlcywKK29idmlvdXNseSwgdGhlIHBhdGNoIHNob3VsZCBub3QgYmUgc2VudCB0byBhbnkgcHVibGljIGxpc3RzLgorCitQYXRjaGVzIHRoYXQgZml4IGEgc2V2ZXJlIGJ1ZyBpbiBhIHJlbGVhc2VkIGtlcm5lbCBzaG91bGQgYmUgZGlyZWN0ZWQKK3Rvd2FyZCB0aGUgc3RhYmxlIG1haW50YWluZXJzIGJ5IHB1dHRpbmcgYSBsaW5lIGxpa2UgdGhpczoKKworICBDYzogc3RhYmxlQHZnZXIua2VybmVsLm9yZworCitpbnRvIHRoZSBzaWduLW9mZiBhcmVhIG9mIHlvdXIgcGF0Y2ggKG5vdGUsIE5PVCBhbiBlbWFpbCByZWNpcGllbnQpLiAgWW91CitzaG91bGQgYWxzbyByZWFkIERvY3VtZW50YXRpb24vc3RhYmxlX2tlcm5lbF9ydWxlcy50eHQgaW4gYWRkaXRpb24gdG8gdGhpcworZmlsZS4KKworTm90ZSwgaG93ZXZlciwgdGhhdCBzb21lIHN1YnN5c3RlbSBtYWludGFpbmVycyB3YW50IHRvIGNvbWUgdG8gdGhlaXIgb3duCitjb25jbHVzaW9ucyBvbiB3aGljaCBwYXRjaGVzIHNob3VsZCBnbyB0byB0aGUgc3RhYmxlIHRyZWVzLiAgVGhlIG5ldHdvcmtpbmcKK21haW50YWluZXIsIGluIHBhcnRpY3VsYXIsIHdvdWxkIHJhdGhlciBub3Qgc2VlIGluZGl2aWR1YWwgZGV2ZWxvcGVycworYWRkaW5nIGxpbmVzIGxpa2UgdGhlIGFib3ZlIHRvIHRoZWlyIHBhdGNoZXMuCisKK0lmIGNoYW5nZXMgYWZmZWN0IHVzZXJsYW5kLWtlcm5lbCBpbnRlcmZhY2VzLCBwbGVhc2Ugc2VuZCB0aGUgTUFOLVBBR0VTCittYWludGFpbmVyIChhcyBsaXN0ZWQgaW4gdGhlIE1BSU5UQUlORVJTIGZpbGUpIGEgbWFuLXBhZ2VzIHBhdGNoLCBvciBhdAorbGVhc3QgYSBub3RpZmljYXRpb24gb2YgdGhlIGNoYW5nZSwgc28gdGhhdCBzb21lIGluZm9ybWF0aW9uIG1ha2VzIGl0cyB3YXkKK2ludG8gdGhlIG1hbnVhbCBwYWdlcy4gIFVzZXItc3BhY2UgQVBJIGNoYW5nZXMgc2hvdWxkIGFsc28gYmUgY29waWVkIHRvCitsaW51eC1hcGlAdmdlci5rZXJuZWwub3JnLiAKKworRm9yIHNtYWxsIHBhdGNoZXMgeW91IG1heSB3YW50IHRvIENDIHRoZSBUcml2aWFsIFBhdGNoIE1vbmtleQordHJpdmlhbEBrZXJuZWwub3JnIHdoaWNoIGNvbGxlY3RzICJ0cml2aWFsIiBwYXRjaGVzLiBIYXZlIGEgbG9vaworaW50byB0aGUgTUFJTlRBSU5FUlMgZmlsZSBmb3IgaXRzIGN1cnJlbnQgbWFuYWdlci4KK1RyaXZpYWwgcGF0Y2hlcyBtdXN0IHF1YWxpZnkgZm9yIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJ1bGVzOgorIFNwZWxsaW5nIGZpeGVzIGluIGRvY3VtZW50YXRpb24KKyBTcGVsbGluZyBmaXhlcyBmb3IgZXJyb3JzIHdoaWNoIGNvdWxkIGJyZWFrIGdyZXAoMSkKKyBXYXJuaW5nIGZpeGVzIChjbHV0dGVyaW5nIHdpdGggdXNlbGVzcyB3YXJuaW5ncyBpcyBiYWQpCisgQ29tcGlsYXRpb24gZml4ZXMgKG9ubHkgaWYgdGhleSBhcmUgYWN0dWFsbHkgY29ycmVjdCkKKyBSdW50aW1lIGZpeGVzIChvbmx5IGlmIHRoZXkgYWN0dWFsbHkgZml4IHRoaW5ncykKKyBSZW1vdmluZyB1c2Ugb2YgZGVwcmVjYXRlZCBmdW5jdGlvbnMvbWFjcm9zCisgQ29udGFjdCBkZXRhaWwgYW5kIGRvY3VtZW50YXRpb24gZml4ZXMKKyBOb24tcG9ydGFibGUgY29kZSByZXBsYWNlZCBieSBwb3J0YWJsZSBjb2RlIChldmVuIGluIGFyY2gtc3BlY2lmaWMsCisgc2luY2UgcGVvcGxlIGNvcHksIGFzIGxvbmcgYXMgaXQncyB0cml2aWFsKQorIEFueSBmaXggYnkgdGhlIGF1dGhvci9tYWludGFpbmVyIG9mIHRoZSBmaWxlIChpZS4gcGF0Y2ggbW9ua2V5CisgaW4gcmUtdHJhbnNtaXNzaW9uIG1vZGUpCisKKworCis2KSBObyBNSU1FLCBubyBsaW5rcywgbm8gY29tcHJlc3Npb24sIG5vIGF0dGFjaG1lbnRzLiAgSnVzdCBwbGFpbiB0ZXh0LgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTGludXMgYW5kIG90aGVyIGtlcm5lbCBkZXZlbG9wZXJzIG5lZWQgdG8gYmUgYWJsZSB0byByZWFkIGFuZCBjb21tZW50CitvbiB0aGUgY2hhbmdlcyB5b3UgYXJlIHN1Ym1pdHRpbmcuICBJdCBpcyBpbXBvcnRhbnQgZm9yIGEga2VybmVsCitkZXZlbG9wZXIgdG8gYmUgYWJsZSB0byAicXVvdGUiIHlvdXIgY2hhbmdlcywgdXNpbmcgc3RhbmRhcmQgZS1tYWlsCit0b29scywgc28gdGhhdCB0aGV5IG1heSBjb21tZW50IG9uIHNwZWNpZmljIHBvcnRpb25zIG9mIHlvdXIgY29kZS4KKworRm9yIHRoaXMgcmVhc29uLCBhbGwgcGF0Y2hlcyBzaG91bGQgYmUgc3VibWl0dGVkIGJ5IGUtbWFpbCAiaW5saW5lIi4KK1dBUk5JTkc6ICBCZSB3YXJ5IG9mIHlvdXIgZWRpdG9yJ3Mgd29yZC13cmFwIGNvcnJ1cHRpbmcgeW91ciBwYXRjaCwKK2lmIHlvdSBjaG9vc2UgdG8gY3V0LW4tcGFzdGUgeW91ciBwYXRjaC4KKworRG8gbm90IGF0dGFjaCB0aGUgcGF0Y2ggYXMgYSBNSU1FIGF0dGFjaG1lbnQsIGNvbXByZXNzZWQgb3Igbm90LgorTWFueSBwb3B1bGFyIGUtbWFpbCBhcHBsaWNhdGlvbnMgd2lsbCBub3QgYWx3YXlzIHRyYW5zbWl0IGEgTUlNRQorYXR0YWNobWVudCBhcyBwbGFpbiB0ZXh0LCBtYWtpbmcgaXQgaW1wb3NzaWJsZSB0byBjb21tZW50IG9uIHlvdXIKK2NvZGUuICBBIE1JTUUgYXR0YWNobWVudCBhbHNvIHRha2VzIExpbnVzIGEgYml0IG1vcmUgdGltZSB0byBwcm9jZXNzLAorZGVjcmVhc2luZyB0aGUgbGlrZWxpaG9vZCBvZiB5b3VyIE1JTUUtYXR0YWNoZWQgY2hhbmdlIGJlaW5nIGFjY2VwdGVkLgorCitFeGNlcHRpb246ICBJZiB5b3VyIG1haWxlciBpcyBtYW5nbGluZyBwYXRjaGVzIHRoZW4gc29tZW9uZSBtYXkgYXNrCit5b3UgdG8gcmUtc2VuZCB0aGVtIHVzaW5nIE1JTUUuCisKK1NlZSBEb2N1bWVudGF0aW9uL2VtYWlsLWNsaWVudHMudHh0IGZvciBoaW50cyBhYm91dCBjb25maWd1cmluZworeW91ciBlLW1haWwgY2xpZW50IHNvIHRoYXQgaXQgc2VuZHMgeW91ciBwYXRjaGVzIHVudG91Y2hlZC4KKworNykgRS1tYWlsIHNpemUuCistLS0tLS0tLS0tLS0tLS0KKworTGFyZ2UgY2hhbmdlcyBhcmUgbm90IGFwcHJvcHJpYXRlIGZvciBtYWlsaW5nIGxpc3RzLCBhbmQgc29tZQorbWFpbnRhaW5lcnMuICBJZiB5b3VyIHBhdGNoLCB1bmNvbXByZXNzZWQsIGV4Y2VlZHMgMzAwIGtCIGluIHNpemUsCitpdCBpcyBwcmVmZXJyZWQgdGhhdCB5b3Ugc3RvcmUgeW91ciBwYXRjaCBvbiBhbiBJbnRlcm5ldC1hY2Nlc3NpYmxlCitzZXJ2ZXIsIGFuZCBwcm92aWRlIGluc3RlYWQgYSBVUkwgKGxpbmspIHBvaW50aW5nIHRvIHlvdXIgcGF0Y2guICBCdXQgbm90ZQordGhhdCBpZiB5b3VyIHBhdGNoIGV4Y2VlZHMgMzAwIGtCLCBpdCBhbG1vc3QgY2VydGFpbmx5IG5lZWRzIHRvIGJlIGJyb2tlbiB1cAorYW55d2F5LgorCis4KSBSZXNwb25kIHRvIHJldmlldyBjb21tZW50cy4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitZb3VyIHBhdGNoIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBnZXQgY29tbWVudHMgZnJvbSByZXZpZXdlcnMgb24gd2F5cyBpbgord2hpY2ggdGhlIHBhdGNoIGNhbiBiZSBpbXByb3ZlZC4gIFlvdSBtdXN0IHJlc3BvbmQgdG8gdGhvc2UgY29tbWVudHM7CitpZ25vcmluZyByZXZpZXdlcnMgaXMgYSBnb29kIHdheSB0byBnZXQgaWdub3JlZCBpbiByZXR1cm4uICBSZXZpZXcgY29tbWVudHMKK29yIHF1ZXN0aW9ucyB0aGF0IGRvIG5vdCBsZWFkIHRvIGEgY29kZSBjaGFuZ2Ugc2hvdWxkIGFsbW9zdCBjZXJ0YWlubHkKK2JyaW5nIGFib3V0IGEgY29tbWVudCBvciBjaGFuZ2Vsb2cgZW50cnkgc28gdGhhdCB0aGUgbmV4dCByZXZpZXdlciBiZXR0ZXIKK3VuZGVyc3RhbmRzIHdoYXQgaXMgZ29pbmcgb24uCisKK0JlIHN1cmUgdG8gdGVsbCB0aGUgcmV2aWV3ZXJzIHdoYXQgY2hhbmdlcyB5b3UgYXJlIG1ha2luZyBhbmQgdG8gdGhhbmsgdGhlbQorZm9yIHRoZWlyIHRpbWUuICBDb2RlIHJldmlldyBpcyBhIHRpcmluZyBhbmQgdGltZS1jb25zdW1pbmcgcHJvY2VzcywgYW5kCityZXZpZXdlcnMgc29tZXRpbWVzIGdldCBncnVtcHkuICBFdmVuIGluIHRoYXQgY2FzZSwgdGhvdWdoLCByZXNwb25kCitwb2xpdGVseSBhbmQgYWRkcmVzcyB0aGUgcHJvYmxlbXMgdGhleSBoYXZlIHBvaW50ZWQgb3V0LgorCisKKzkpIERvbid0IGdldCBkaXNjb3VyYWdlZCAtIG9yIGltcGF0aWVudC4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWZ0ZXIgeW91IGhhdmUgc3VibWl0dGVkIHlvdXIgY2hhbmdlLCBiZSBwYXRpZW50IGFuZCB3YWl0LiAgUmV2aWV3ZXJzIGFyZQorYnVzeSBwZW9wbGUgYW5kIG1heSBub3QgZ2V0IHRvIHlvdXIgcGF0Y2ggcmlnaHQgYXdheS4KKworT25jZSB1cG9uIGEgdGltZSwgcGF0Y2hlcyB1c2VkIHRvIGRpc2FwcGVhciBpbnRvIHRoZSB2b2lkIHdpdGhvdXQgY29tbWVudCwKK2J1dCB0aGUgZGV2ZWxvcG1lbnQgcHJvY2VzcyB3b3JrcyBtb3JlIHNtb290aGx5IHRoYW4gdGhhdCBub3cuICBZb3Ugc2hvdWxkCityZWNlaXZlIGNvbW1lbnRzIHdpdGhpbiBhIHdlZWsgb3Igc287IGlmIHRoYXQgZG9lcyBub3QgaGFwcGVuLCBtYWtlIHN1cmUKK3RoYXQgeW91IGhhdmUgc2VudCB5b3VyIHBhdGNoZXMgdG8gdGhlIHJpZ2h0IHBsYWNlLiAgV2FpdCBmb3IgYSBtaW5pbXVtIG9mCitvbmUgd2VlayBiZWZvcmUgcmVzdWJtaXR0aW5nIG9yIHBpbmdpbmcgcmV2aWV3ZXJzIC0gcG9zc2libHkgbG9uZ2VyIGR1cmluZworYnVzeSB0aW1lcyBsaWtlIG1lcmdlIHdpbmRvd3MuCisKKworMTApIEluY2x1ZGUgUEFUQ0ggaW4gdGhlIHN1YmplY3QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0R1ZSB0byBoaWdoIGUtbWFpbCB0cmFmZmljIHRvIExpbnVzLCBhbmQgdG8gbGludXgta2VybmVsLCBpdCBpcyBjb21tb24KK2NvbnZlbnRpb24gdG8gcHJlZml4IHlvdXIgc3ViamVjdCBsaW5lIHdpdGggW1BBVENIXS4gIFRoaXMgbGV0cyBMaW51cworYW5kIG90aGVyIGtlcm5lbCBkZXZlbG9wZXJzIG1vcmUgZWFzaWx5IGRpc3Rpbmd1aXNoIHBhdGNoZXMgZnJvbSBvdGhlcgorZS1tYWlsIGRpc2N1c3Npb25zLgorCisKKworMTEpIFNpZ24geW91ciB3b3JrCistLS0tLS0tLS0tLS0tLS0tLS0KKworVG8gaW1wcm92ZSB0cmFja2luZyBvZiB3aG8gZGlkIHdoYXQsIGVzcGVjaWFsbHkgd2l0aCBwYXRjaGVzIHRoYXQgY2FuCitwZXJjb2xhdGUgdG8gdGhlaXIgZmluYWwgcmVzdGluZyBwbGFjZSBpbiB0aGUga2VybmVsIHRocm91Z2ggc2V2ZXJhbAorbGF5ZXJzIG9mIG1haW50YWluZXJzLCB3ZSd2ZSBpbnRyb2R1Y2VkIGEgInNpZ24tb2ZmIiBwcm9jZWR1cmUgb24KK3BhdGNoZXMgdGhhdCBhcmUgYmVpbmcgZW1haWxlZCBhcm91bmQuCisKK1RoZSBzaWduLW9mZiBpcyBhIHNpbXBsZSBsaW5lIGF0IHRoZSBlbmQgb2YgdGhlIGV4cGxhbmF0aW9uIGZvciB0aGUKK3BhdGNoLCB3aGljaCBjZXJ0aWZpZXMgdGhhdCB5b3Ugd3JvdGUgaXQgb3Igb3RoZXJ3aXNlIGhhdmUgdGhlIHJpZ2h0IHRvCitwYXNzIGl0IG9uIGFzIGFuIG9wZW4tc291cmNlIHBhdGNoLiAgVGhlIHJ1bGVzIGFyZSBwcmV0dHkgc2ltcGxlOiBpZiB5b3UKK2NhbiBjZXJ0aWZ5IHRoZSBiZWxvdzoKKworICAgICAgICBEZXZlbG9wZXIncyBDZXJ0aWZpY2F0ZSBvZiBPcmlnaW4gMS4xCisKKyAgICAgICAgQnkgbWFraW5nIGEgY29udHJpYnV0aW9uIHRvIHRoaXMgcHJvamVjdCwgSSBjZXJ0aWZ5IHRoYXQ6CisKKyAgICAgICAgKGEpIFRoZSBjb250cmlidXRpb24gd2FzIGNyZWF0ZWQgaW4gd2hvbGUgb3IgaW4gcGFydCBieSBtZSBhbmQgSQorICAgICAgICAgICAgaGF2ZSB0aGUgcmlnaHQgdG8gc3VibWl0IGl0IHVuZGVyIHRoZSBvcGVuIHNvdXJjZSBsaWNlbnNlCisgICAgICAgICAgICBpbmRpY2F0ZWQgaW4gdGhlIGZpbGU7IG9yCisKKyAgICAgICAgKGIpIFRoZSBjb250cmlidXRpb24gaXMgYmFzZWQgdXBvbiBwcmV2aW91cyB3b3JrIHRoYXQsIHRvIHRoZSBiZXN0CisgICAgICAgICAgICBvZiBteSBrbm93bGVkZ2UsIGlzIGNvdmVyZWQgdW5kZXIgYW4gYXBwcm9wcmlhdGUgb3BlbiBzb3VyY2UKKyAgICAgICAgICAgIGxpY2Vuc2UgYW5kIEkgaGF2ZSB0aGUgcmlnaHQgdW5kZXIgdGhhdCBsaWNlbnNlIHRvIHN1Ym1pdCB0aGF0CisgICAgICAgICAgICB3b3JrIHdpdGggbW9kaWZpY2F0aW9ucywgd2hldGhlciBjcmVhdGVkIGluIHdob2xlIG9yIGluIHBhcnQKKyAgICAgICAgICAgIGJ5IG1lLCB1bmRlciB0aGUgc2FtZSBvcGVuIHNvdXJjZSBsaWNlbnNlICh1bmxlc3MgSSBhbQorICAgICAgICAgICAgcGVybWl0dGVkIHRvIHN1Ym1pdCB1bmRlciBhIGRpZmZlcmVudCBsaWNlbnNlKSwgYXMgaW5kaWNhdGVkCisgICAgICAgICAgICBpbiB0aGUgZmlsZTsgb3IKKworICAgICAgICAoYykgVGhlIGNvbnRyaWJ1dGlvbiB3YXMgcHJvdmlkZWQgZGlyZWN0bHkgdG8gbWUgYnkgc29tZSBvdGhlcgorICAgICAgICAgICAgcGVyc29uIHdobyBjZXJ0aWZpZWQgKGEpLCAoYikgb3IgKGMpIGFuZCBJIGhhdmUgbm90IG1vZGlmaWVkCisgICAgICAgICAgICBpdC4KKworICAgICAgICAoZCkgSSB1bmRlcnN0YW5kIGFuZCBhZ3JlZSB0aGF0IHRoaXMgcHJvamVjdCBhbmQgdGhlIGNvbnRyaWJ1dGlvbgorICAgICAgICAgICAgYXJlIHB1YmxpYyBhbmQgdGhhdCBhIHJlY29yZCBvZiB0aGUgY29udHJpYnV0aW9uIChpbmNsdWRpbmcgYWxsCisgICAgICAgICAgICBwZXJzb25hbCBpbmZvcm1hdGlvbiBJIHN1Ym1pdCB3aXRoIGl0LCBpbmNsdWRpbmcgbXkgc2lnbi1vZmYpIGlzCisgICAgICAgICAgICBtYWludGFpbmVkIGluZGVmaW5pdGVseSBhbmQgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgY29uc2lzdGVudCB3aXRoCisgICAgICAgICAgICB0aGlzIHByb2plY3Qgb3IgdGhlIG9wZW4gc291cmNlIGxpY2Vuc2UocykgaW52b2x2ZWQuCisKK3RoZW4geW91IGp1c3QgYWRkIGEgbGluZSBzYXlpbmcKKworCVNpZ25lZC1vZmYtYnk6IFJhbmRvbSBKIERldmVsb3BlciA8cmFuZG9tQGRldmVsb3Blci5leGFtcGxlLm9yZz4KKwordXNpbmcgeW91ciByZWFsIG5hbWUgKHNvcnJ5LCBubyBwc2V1ZG9ueW1zIG9yIGFub255bW91cyBjb250cmlidXRpb25zLikKKworU29tZSBwZW9wbGUgYWxzbyBwdXQgZXh0cmEgdGFncyBhdCB0aGUgZW5kLiAgVGhleSdsbCBqdXN0IGJlIGlnbm9yZWQgZm9yCitub3csIGJ1dCB5b3UgY2FuIGRvIHRoaXMgdG8gbWFyayBpbnRlcm5hbCBjb21wYW55IHByb2NlZHVyZXMgb3IganVzdAorcG9pbnQgb3V0IHNvbWUgc3BlY2lhbCBkZXRhaWwgYWJvdXQgdGhlIHNpZ24tb2ZmLgorCitJZiB5b3UgYXJlIGEgc3Vic3lzdGVtIG9yIGJyYW5jaCBtYWludGFpbmVyLCBzb21ldGltZXMgeW91IG5lZWQgdG8gc2xpZ2h0bHkKK21vZGlmeSBwYXRjaGVzIHlvdSByZWNlaXZlIGluIG9yZGVyIHRvIG1lcmdlIHRoZW0sIGJlY2F1c2UgdGhlIGNvZGUgaXMgbm90CitleGFjdGx5IHRoZSBzYW1lIGluIHlvdXIgdHJlZSBhbmQgdGhlIHN1Ym1pdHRlcnMnLiBJZiB5b3Ugc3RpY2sgc3RyaWN0bHkgdG8KK3J1bGUgKGMpLCB5b3Ugc2hvdWxkIGFzayB0aGUgc3VibWl0dGVyIHRvIHJlZGlmZiwgYnV0IHRoaXMgaXMgYSB0b3RhbGx5Citjb3VudGVyLXByb2R1Y3RpdmUgd2FzdGUgb2YgdGltZSBhbmQgZW5lcmd5LiBSdWxlIChiKSBhbGxvd3MgeW91IHRvIGFkanVzdAordGhlIGNvZGUsIGJ1dCB0aGVuIGl0IGlzIHZlcnkgaW1wb2xpdGUgdG8gY2hhbmdlIG9uZSBzdWJtaXR0ZXIncyBjb2RlIGFuZAorbWFrZSBoaW0gZW5kb3JzZSB5b3VyIGJ1Z3MuIFRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgaXQgaXMgcmVjb21tZW5kZWQgdGhhdAoreW91IGFkZCBhIGxpbmUgYmV0d2VlbiB0aGUgbGFzdCBTaWduZWQtb2ZmLWJ5IGhlYWRlciBhbmQgeW91cnMsIGluZGljYXRpbmcKK3RoZSBuYXR1cmUgb2YgeW91ciBjaGFuZ2VzLiBXaGlsZSB0aGVyZSBpcyBub3RoaW5nIG1hbmRhdG9yeSBhYm91dCB0aGlzLCBpdAorc2VlbXMgbGlrZSBwcmVwZW5kaW5nIHRoZSBkZXNjcmlwdGlvbiB3aXRoIHlvdXIgbWFpbCBhbmQvb3IgbmFtZSwgYWxsCitlbmNsb3NlZCBpbiBzcXVhcmUgYnJhY2tldHMsIGlzIG5vdGljZWFibGUgZW5vdWdoIHRvIG1ha2UgaXQgb2J2aW91cyB0aGF0Cit5b3UgYXJlIHJlc3BvbnNpYmxlIGZvciBsYXN0LW1pbnV0ZSBjaGFuZ2VzLiBFeGFtcGxlIDoKKworCVNpZ25lZC1vZmYtYnk6IFJhbmRvbSBKIERldmVsb3BlciA8cmFuZG9tQGRldmVsb3Blci5leGFtcGxlLm9yZz4KKwlbbHVja3lAbWFpbnRhaW5lci5leGFtcGxlLm9yZzogc3RydWN0IGZvbyBtb3ZlZCBmcm9tIGZvby5jIHRvIGZvby5oXQorCVNpZ25lZC1vZmYtYnk6IEx1Y2t5IEsgTWFpbnRhaW5lciA8bHVja3lAbWFpbnRhaW5lci5leGFtcGxlLm9yZz4KKworVGhpcyBwcmFjdGljZSBpcyBwYXJ0aWN1bGFybHkgaGVscGZ1bCBpZiB5b3UgbWFpbnRhaW4gYSBzdGFibGUgYnJhbmNoIGFuZAord2FudCBhdCB0aGUgc2FtZSB0aW1lIHRvIGNyZWRpdCB0aGUgYXV0aG9yLCB0cmFjayBjaGFuZ2VzLCBtZXJnZSB0aGUgZml4LAorYW5kIHByb3RlY3QgdGhlIHN1Ym1pdHRlciBmcm9tIGNvbXBsYWludHMuIE5vdGUgdGhhdCB1bmRlciBubyBjaXJjdW1zdGFuY2VzCitjYW4geW91IGNoYW5nZSB0aGUgYXV0aG9yJ3MgaWRlbnRpdHkgKHRoZSBGcm9tIGhlYWRlciksIGFzIGl0IGlzIHRoZSBvbmUKK3doaWNoIGFwcGVhcnMgaW4gdGhlIGNoYW5nZWxvZy4KKworU3BlY2lhbCBub3RlIHRvIGJhY2stcG9ydGVyczogSXQgc2VlbXMgdG8gYmUgYSBjb21tb24gYW5kIHVzZWZ1bCBwcmFjdGljZQordG8gaW5zZXJ0IGFuIGluZGljYXRpb24gb2YgdGhlIG9yaWdpbiBvZiBhIHBhdGNoIGF0IHRoZSB0b3Agb2YgdGhlIGNvbW1pdAorbWVzc2FnZSAoanVzdCBhZnRlciB0aGUgc3ViamVjdCBsaW5lKSB0byBmYWNpbGl0YXRlIHRyYWNraW5nLiBGb3IgaW5zdGFuY2UsCitoZXJlJ3Mgd2hhdCB3ZSBzZWUgaW4gYSAzLngtc3RhYmxlIHJlbGVhc2U6CisKK0RhdGU6ICAgVHVlIE9jdCA3IDA3OjI2OjM4IDIwMTQgLTA0MDAKKworICAgIGxpYmF0YTogVW4tYnJlYWsgQVRBIGJsYWNrbGlzdAorCisgICAgY29tbWl0IDFjNDAyNzk5NjBiY2Q3ZDUyZGJkZjFkNDY2YjIwZDI0Yjk5MTc2YzggdXBzdHJlYW0uCisKK0FuZCBoZXJlJ3Mgd2hhdCBtaWdodCBhcHBlYXIgaW4gYW4gb2xkZXIga2VybmVsIG9uY2UgYSBwYXRjaCBpcyBiYWNrcG9ydGVkOgorCisgICAgRGF0ZTogICBUdWUgTWF5IDEzIDIyOjEyOjI3IDIwMDggKzAyMDAKKworICAgICAgICB3aXJlbGVzcywgYWlybzogd2FpdGJ1c3koKSB3b24ndCBkZWxheQorCisgICAgICAgIFtiYWNrcG9ydCBvZiAyLjYgY29tbWl0IGI3YWNiZGZiZDFmMjc3YzFlYjIzZjM0NGY4OTljZmE0Y2QwYmYzNmFdCisKK1doYXRldmVyIHRoZSBmb3JtYXQsIHRoaXMgaW5mb3JtYXRpb24gcHJvdmlkZXMgYSB2YWx1YWJsZSBoZWxwIHRvIHBlb3BsZQordHJhY2tpbmcgeW91ciB0cmVlcywgYW5kIHRvIHBlb3BsZSB0cnlpbmcgdG8gdHJvdWJsZXNob290IGJ1Z3MgaW4geW91cgordHJlZS4KKworCisxMikgV2hlbiB0byB1c2UgQWNrZWQtYnk6IGFuZCBDYzoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgU2lnbmVkLW9mZi1ieTogdGFnIGluZGljYXRlcyB0aGF0IHRoZSBzaWduZXIgd2FzIGludm9sdmVkIGluIHRoZQorZGV2ZWxvcG1lbnQgb2YgdGhlIHBhdGNoLCBvciB0aGF0IGhlL3NoZSB3YXMgaW4gdGhlIHBhdGNoJ3MgZGVsaXZlcnkgcGF0aC4KKworSWYgYSBwZXJzb24gd2FzIG5vdCBkaXJlY3RseSBpbnZvbHZlZCBpbiB0aGUgcHJlcGFyYXRpb24gb3IgaGFuZGxpbmcgb2YgYQorcGF0Y2ggYnV0IHdpc2hlcyB0byBzaWduaWZ5IGFuZCByZWNvcmQgdGhlaXIgYXBwcm92YWwgb2YgaXQgdGhlbiB0aGV5IGNhbgorYXNrIHRvIGhhdmUgYW4gQWNrZWQtYnk6IGxpbmUgYWRkZWQgdG8gdGhlIHBhdGNoJ3MgY2hhbmdlbG9nLgorCitBY2tlZC1ieTogaXMgb2Z0ZW4gdXNlZCBieSB0aGUgbWFpbnRhaW5lciBvZiB0aGUgYWZmZWN0ZWQgY29kZSB3aGVuIHRoYXQKK21haW50YWluZXIgbmVpdGhlciBjb250cmlidXRlZCB0byBub3IgZm9yd2FyZGVkIHRoZSBwYXRjaC4KKworQWNrZWQtYnk6IGlzIG5vdCBhcyBmb3JtYWwgYXMgU2lnbmVkLW9mZi1ieTouICBJdCBpcyBhIHJlY29yZCB0aGF0IHRoZSBhY2tlcgoraGFzIGF0IGxlYXN0IHJldmlld2VkIHRoZSBwYXRjaCBhbmQgaGFzIGluZGljYXRlZCBhY2NlcHRhbmNlLiAgSGVuY2UgcGF0Y2gKK21lcmdlcnMgd2lsbCBzb21ldGltZXMgbWFudWFsbHkgY29udmVydCBhbiBhY2tlcidzICJ5ZXAsIGxvb2tzIGdvb2QgdG8gbWUiCitpbnRvIGFuIEFja2VkLWJ5OiAoYnV0IG5vdGUgdGhhdCBpdCBpcyB1c3VhbGx5IGJldHRlciB0byBhc2sgZm9yIGFuCitleHBsaWNpdCBhY2spLgorCitBY2tlZC1ieTogZG9lcyBub3QgbmVjZXNzYXJpbHkgaW5kaWNhdGUgYWNrbm93bGVkZ2VtZW50IG9mIHRoZSBlbnRpcmUgcGF0Y2guCitGb3IgZXhhbXBsZSwgaWYgYSBwYXRjaCBhZmZlY3RzIG11bHRpcGxlIHN1YnN5c3RlbXMgYW5kIGhhcyBhbiBBY2tlZC1ieTogZnJvbQorb25lIHN1YnN5c3RlbSBtYWludGFpbmVyIHRoZW4gdGhpcyB1c3VhbGx5IGluZGljYXRlcyBhY2tub3dsZWRnZW1lbnQgb2YganVzdAordGhlIHBhcnQgd2hpY2ggYWZmZWN0cyB0aGF0IG1haW50YWluZXIncyBjb2RlLiAgSnVkZ2VtZW50IHNob3VsZCBiZSB1c2VkIGhlcmUuCitXaGVuIGluIGRvdWJ0IHBlb3BsZSBzaG91bGQgcmVmZXIgdG8gdGhlIG9yaWdpbmFsIGRpc2N1c3Npb24gaW4gdGhlIG1haWxpbmcKK2xpc3QgYXJjaGl2ZXMuCisKK0lmIGEgcGVyc29uIGhhcyBoYWQgdGhlIG9wcG9ydHVuaXR5IHRvIGNvbW1lbnQgb24gYSBwYXRjaCwgYnV0IGhhcyBub3QKK3Byb3ZpZGVkIHN1Y2ggY29tbWVudHMsIHlvdSBtYXkgb3B0aW9uYWxseSBhZGQgYSAiQ2M6IiB0YWcgdG8gdGhlIHBhdGNoLgorVGhpcyBpcyB0aGUgb25seSB0YWcgd2hpY2ggbWlnaHQgYmUgYWRkZWQgd2l0aG91dCBhbiBleHBsaWNpdCBhY3Rpb24gYnkgdGhlCitwZXJzb24gaXQgbmFtZXMgLSBidXQgaXQgc2hvdWxkIGluZGljYXRlIHRoYXQgdGhpcyBwZXJzb24gd2FzIGNvcGllZCBvbiB0aGUKK3BhdGNoLiAgVGhpcyB0YWcgZG9jdW1lbnRzIHRoYXQgcG90ZW50aWFsbHkgaW50ZXJlc3RlZCBwYXJ0aWVzCitoYXZlIGJlZW4gaW5jbHVkZWQgaW4gdGhlIGRpc2N1c3Npb24uCisKKworMTMpIFVzaW5nIFJlcG9ydGVkLWJ5OiwgVGVzdGVkLWJ5OiwgUmV2aWV3ZWQtYnk6LCBTdWdnZXN0ZWQtYnk6IGFuZCBGaXhlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBSZXBvcnRlZC1ieSB0YWcgZ2l2ZXMgY3JlZGl0IHRvIHBlb3BsZSB3aG8gZmluZCBidWdzIGFuZCByZXBvcnQgdGhlbSBhbmQgaXQKK2hvcGVmdWxseSBpbnNwaXJlcyB0aGVtIHRvIGhlbHAgdXMgYWdhaW4gaW4gdGhlIGZ1dHVyZS4gIFBsZWFzZSBub3RlIHRoYXQgaWYKK3RoZSBidWcgd2FzIHJlcG9ydGVkIGluIHByaXZhdGUsIHRoZW4gYXNrIGZvciBwZXJtaXNzaW9uIGZpcnN0IGJlZm9yZSB1c2luZyB0aGUKK1JlcG9ydGVkLWJ5IHRhZy4KKworQSBUZXN0ZWQtYnk6IHRhZyBpbmRpY2F0ZXMgdGhhdCB0aGUgcGF0Y2ggaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHRlc3RlZCAoaW4KK3NvbWUgZW52aXJvbm1lbnQpIGJ5IHRoZSBwZXJzb24gbmFtZWQuICBUaGlzIHRhZyBpbmZvcm1zIG1haW50YWluZXJzIHRoYXQKK3NvbWUgdGVzdGluZyBoYXMgYmVlbiBwZXJmb3JtZWQsIHByb3ZpZGVzIGEgbWVhbnMgdG8gbG9jYXRlIHRlc3RlcnMgZm9yCitmdXR1cmUgcGF0Y2hlcywgYW5kIGVuc3VyZXMgY3JlZGl0IGZvciB0aGUgdGVzdGVycy4KKworUmV2aWV3ZWQtYnk6LCBpbnN0ZWFkLCBpbmRpY2F0ZXMgdGhhdCB0aGUgcGF0Y2ggaGFzIGJlZW4gcmV2aWV3ZWQgYW5kIGZvdW5kCithY2NlcHRhYmxlIGFjY29yZGluZyB0byB0aGUgUmV2aWV3ZXIncyBTdGF0ZW1lbnQ6CisKKwlSZXZpZXdlcidzIHN0YXRlbWVudCBvZiBvdmVyc2lnaHQKKworCUJ5IG9mZmVyaW5nIG15IFJldmlld2VkLWJ5OiB0YWcsIEkgc3RhdGUgdGhhdDoKKworIAkgKGEpIEkgaGF2ZSBjYXJyaWVkIG91dCBhIHRlY2huaWNhbCByZXZpZXcgb2YgdGhpcyBwYXRjaCB0bworCSAgICAgZXZhbHVhdGUgaXRzIGFwcHJvcHJpYXRlbmVzcyBhbmQgcmVhZGluZXNzIGZvciBpbmNsdXNpb24gaW50bworCSAgICAgdGhlIG1haW5saW5lIGtlcm5lbC4KKworCSAoYikgQW55IHByb2JsZW1zLCBjb25jZXJucywgb3IgcXVlc3Rpb25zIHJlbGF0aW5nIHRvIHRoZSBwYXRjaAorCSAgICAgaGF2ZSBiZWVuIGNvbW11bmljYXRlZCBiYWNrIHRvIHRoZSBzdWJtaXR0ZXIuICBJIGFtIHNhdGlzZmllZAorCSAgICAgd2l0aCB0aGUgc3VibWl0dGVyJ3MgcmVzcG9uc2UgdG8gbXkgY29tbWVudHMuCisKKwkgKGMpIFdoaWxlIHRoZXJlIG1heSBiZSB0aGluZ3MgdGhhdCBjb3VsZCBiZSBpbXByb3ZlZCB3aXRoIHRoaXMKKwkgICAgIHN1Ym1pc3Npb24sIEkgYmVsaWV2ZSB0aGF0IGl0IGlzLCBhdCB0aGlzIHRpbWUsICgxKSBhCisJICAgICB3b3J0aHdoaWxlIG1vZGlmaWNhdGlvbiB0byB0aGUga2VybmVsLCBhbmQgKDIpIGZyZWUgb2Yga25vd24KKwkgICAgIGlzc3VlcyB3aGljaCB3b3VsZCBhcmd1ZSBhZ2FpbnN0IGl0cyBpbmNsdXNpb24uCisKKwkgKGQpIFdoaWxlIEkgaGF2ZSByZXZpZXdlZCB0aGUgcGF0Y2ggYW5kIGJlbGlldmUgaXQgdG8gYmUgc291bmQsIEkKKwkgICAgIGRvIG5vdCAodW5sZXNzIGV4cGxpY2l0bHkgc3RhdGVkIGVsc2V3aGVyZSkgbWFrZSBhbnkKKwkgICAgIHdhcnJhbnRpZXMgb3IgZ3VhcmFudGVlcyB0aGF0IGl0IHdpbGwgYWNoaWV2ZSBpdHMgc3RhdGVkCisJICAgICBwdXJwb3NlIG9yIGZ1bmN0aW9uIHByb3Blcmx5IGluIGFueSBnaXZlbiBzaXR1YXRpb24uCisKK0EgUmV2aWV3ZWQtYnkgdGFnIGlzIGEgc3RhdGVtZW50IG9mIG9waW5pb24gdGhhdCB0aGUgcGF0Y2ggaXMgYW4KK2FwcHJvcHJpYXRlIG1vZGlmaWNhdGlvbiBvZiB0aGUga2VybmVsIHdpdGhvdXQgYW55IHJlbWFpbmluZyBzZXJpb3VzCit0ZWNobmljYWwgaXNzdWVzLiAgQW55IGludGVyZXN0ZWQgcmV2aWV3ZXIgKHdobyBoYXMgZG9uZSB0aGUgd29yaykgY2FuCitvZmZlciBhIFJldmlld2VkLWJ5IHRhZyBmb3IgYSBwYXRjaC4gIFRoaXMgdGFnIHNlcnZlcyB0byBnaXZlIGNyZWRpdCB0bworcmV2aWV3ZXJzIGFuZCB0byBpbmZvcm0gbWFpbnRhaW5lcnMgb2YgdGhlIGRlZ3JlZSBvZiByZXZpZXcgd2hpY2ggaGFzIGJlZW4KK2RvbmUgb24gdGhlIHBhdGNoLiAgUmV2aWV3ZWQtYnk6IHRhZ3MsIHdoZW4gc3VwcGxpZWQgYnkgcmV2aWV3ZXJzIGtub3duIHRvCit1bmRlcnN0YW5kIHRoZSBzdWJqZWN0IGFyZWEgYW5kIHRvIHBlcmZvcm0gdGhvcm91Z2ggcmV2aWV3cywgd2lsbCBub3JtYWxseQoraW5jcmVhc2UgdGhlIGxpa2VsaWhvb2Qgb2YgeW91ciBwYXRjaCBnZXR0aW5nIGludG8gdGhlIGtlcm5lbC4KKworQSBTdWdnZXN0ZWQtYnk6IHRhZyBpbmRpY2F0ZXMgdGhhdCB0aGUgcGF0Y2ggaWRlYSBpcyBzdWdnZXN0ZWQgYnkgdGhlIHBlcnNvbgorbmFtZWQgYW5kIGVuc3VyZXMgY3JlZGl0IHRvIHRoZSBwZXJzb24gZm9yIHRoZSBpZGVhLiBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMKK3RhZyBzaG91bGQgbm90IGJlIGFkZGVkIHdpdGhvdXQgdGhlIHJlcG9ydGVyJ3MgcGVybWlzc2lvbiwgZXNwZWNpYWxseSBpZiB0aGUKK2lkZWEgd2FzIG5vdCBwb3N0ZWQgaW4gYSBwdWJsaWMgZm9ydW0uIFRoYXQgc2FpZCwgaWYgd2UgZGlsaWdlbnRseSBjcmVkaXQgb3VyCitpZGVhIHJlcG9ydGVycywgdGhleSB3aWxsLCBob3BlZnVsbHksIGJlIGluc3BpcmVkIHRvIGhlbHAgdXMgYWdhaW4gaW4gdGhlCitmdXR1cmUuCisKK0EgRml4ZXM6IHRhZyBpbmRpY2F0ZXMgdGhhdCB0aGUgcGF0Y2ggZml4ZXMgYW4gaXNzdWUgaW4gYSBwcmV2aW91cyBjb21taXQuIEl0CitpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSB0byBkZXRlcm1pbmUgd2hlcmUgYSBidWcgb3JpZ2luYXRlZCwgd2hpY2ggY2FuIGhlbHAKK3JldmlldyBhIGJ1ZyBmaXguIFRoaXMgdGFnIGFsc28gYXNzaXN0cyB0aGUgc3RhYmxlIGtlcm5lbCB0ZWFtIGluIGRldGVybWluaW5nCit3aGljaCBzdGFibGUga2VybmVsIHZlcnNpb25zIHNob3VsZCByZWNlaXZlIHlvdXIgZml4LiBUaGlzIGlzIHRoZSBwcmVmZXJyZWQKK21ldGhvZCBmb3IgaW5kaWNhdGluZyBhIGJ1ZyBmaXhlZCBieSB0aGUgcGF0Y2guIFNlZSAjMiBhYm92ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisKKzE0KSBUaGUgY2Fub25pY2FsIHBhdGNoIGZvcm1hdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IHRoZSBwYXRjaCBpdHNlbGYgc2hvdWxkIGJlIGZvcm1hdHRlZC4gIE5vdGUKK3RoYXQsIGlmIHlvdSBoYXZlIHlvdXIgcGF0Y2hlcyBzdG9yZWQgaW4gYSBnaXQgcmVwb3NpdG9yeSwgcHJvcGVyIHBhdGNoCitmb3JtYXR0aW5nIGNhbiBiZSBoYWQgd2l0aCAiZ2l0IGZvcm1hdC1wYXRjaCIuICBUaGUgdG9vbHMgY2Fubm90IGNyZWF0ZQordGhlIG5lY2Vzc2FyeSB0ZXh0LCB0aG91Z2gsIHNvIHJlYWQgdGhlIGluc3RydWN0aW9ucyBiZWxvdyBhbnl3YXkuCisKK1RoZSBjYW5vbmljYWwgcGF0Y2ggc3ViamVjdCBsaW5lIGlzOgorCisgICAgU3ViamVjdDogW1BBVENIIDAwMS8xMjNdIHN1YnN5c3RlbTogc3VtbWFyeSBwaHJhc2UKKworVGhlIGNhbm9uaWNhbCBwYXRjaCBtZXNzYWdlIGJvZHkgY29udGFpbnMgdGhlIGZvbGxvd2luZzoKKworICAtIEEgImZyb20iIGxpbmUgc3BlY2lmeWluZyB0aGUgcGF0Y2ggYXV0aG9yIChvbmx5IG5lZWRlZCBpZiB0aGUgcGVyc29uCisgICAgc2VuZGluZyB0aGUgcGF0Y2ggaXMgbm90IHRoZSBhdXRob3IpLgorCisgIC0gQW4gZW1wdHkgbGluZS4KKworICAtIFRoZSBib2R5IG9mIHRoZSBleHBsYW5hdGlvbiwgbGluZSB3cmFwcGVkIGF0IDc1IGNvbHVtbnMsIHdoaWNoIHdpbGwKKyAgICBiZSBjb3BpZWQgdG8gdGhlIHBlcm1hbmVudCBjaGFuZ2Vsb2cgdG8gZGVzY3JpYmUgdGhpcyBwYXRjaC4KKworICAtIFRoZSAiU2lnbmVkLW9mZi1ieToiIGxpbmVzLCBkZXNjcmliZWQgYWJvdmUsIHdoaWNoIHdpbGwKKyAgICBhbHNvIGdvIGluIHRoZSBjaGFuZ2Vsb2cuCisKKyAgLSBBIG1hcmtlciBsaW5lIGNvbnRhaW5pbmcgc2ltcGx5ICItLS0iLgorCisgIC0gQW55IGFkZGl0aW9uYWwgY29tbWVudHMgbm90IHN1aXRhYmxlIGZvciB0aGUgY2hhbmdlbG9nLgorCisgIC0gVGhlIGFjdHVhbCBwYXRjaCAoZGlmZiBvdXRwdXQpLgorCitUaGUgU3ViamVjdCBsaW5lIGZvcm1hdCBtYWtlcyBpdCB2ZXJ5IGVhc3kgdG8gc29ydCB0aGUgZW1haWxzCithbHBoYWJldGljYWxseSBieSBzdWJqZWN0IGxpbmUgLSBwcmV0dHkgbXVjaCBhbnkgZW1haWwgcmVhZGVyIHdpbGwKK3N1cHBvcnQgdGhhdCAtIHNpbmNlIGJlY2F1c2UgdGhlIHNlcXVlbmNlIG51bWJlciBpcyB6ZXJvLXBhZGRlZCwKK3RoZSBudW1lcmljYWwgYW5kIGFscGhhYmV0aWMgc29ydCBpcyB0aGUgc2FtZS4KKworVGhlICJzdWJzeXN0ZW0iIGluIHRoZSBlbWFpbCdzIFN1YmplY3Qgc2hvdWxkIGlkZW50aWZ5IHdoaWNoCithcmVhIG9yIHN1YnN5c3RlbSBvZiB0aGUga2VybmVsIGlzIGJlaW5nIHBhdGNoZWQuCisKK1RoZSAic3VtbWFyeSBwaHJhc2UiIGluIHRoZSBlbWFpbCdzIFN1YmplY3Qgc2hvdWxkIGNvbmNpc2VseQorZGVzY3JpYmUgdGhlIHBhdGNoIHdoaWNoIHRoYXQgZW1haWwgY29udGFpbnMuICBUaGUgInN1bW1hcnkKK3BocmFzZSIgc2hvdWxkIG5vdCBiZSBhIGZpbGVuYW1lLiAgRG8gbm90IHVzZSB0aGUgc2FtZSAic3VtbWFyeQorcGhyYXNlIiBmb3IgZXZlcnkgcGF0Y2ggaW4gYSB3aG9sZSBwYXRjaCBzZXJpZXMgKHdoZXJlIGEgInBhdGNoCitzZXJpZXMiIGlzIGFuIG9yZGVyZWQgc2VxdWVuY2Ugb2YgbXVsdGlwbGUsIHJlbGF0ZWQgcGF0Y2hlcykuCisKK0JlYXIgaW4gbWluZCB0aGF0IHRoZSAic3VtbWFyeSBwaHJhc2UiIG9mIHlvdXIgZW1haWwgYmVjb21lcyBhCitnbG9iYWxseS11bmlxdWUgaWRlbnRpZmllciBmb3IgdGhhdCBwYXRjaC4gIEl0IHByb3BhZ2F0ZXMgYWxsIHRoZSB3YXkKK2ludG8gdGhlIGdpdCBjaGFuZ2Vsb2cuICBUaGUgInN1bW1hcnkgcGhyYXNlIiBtYXkgbGF0ZXIgYmUgdXNlZCBpbgorZGV2ZWxvcGVyIGRpc2N1c3Npb25zIHdoaWNoIHJlZmVyIHRvIHRoZSBwYXRjaC4gIFBlb3BsZSB3aWxsIHdhbnQgdG8KK2dvb2dsZSBmb3IgdGhlICJzdW1tYXJ5IHBocmFzZSIgdG8gcmVhZCBkaXNjdXNzaW9uIHJlZ2FyZGluZyB0aGF0CitwYXRjaC4gIEl0IHdpbGwgYWxzbyBiZSB0aGUgb25seSB0aGluZyB0aGF0IHBlb3BsZSBtYXkgcXVpY2tseSBzZWUKK3doZW4sIHR3byBvciB0aHJlZSBtb250aHMgbGF0ZXIsIHRoZXkgYXJlIGdvaW5nIHRocm91Z2ggcGVyaGFwcwordGhvdXNhbmRzIG9mIHBhdGNoZXMgdXNpbmcgdG9vbHMgc3VjaCBhcyAiZ2l0ayIgb3IgImdpdCBsb2cKKy0tb25lbGluZSIuCisKK0ZvciB0aGVzZSByZWFzb25zLCB0aGUgInN1bW1hcnkiIG11c3QgYmUgbm8gbW9yZSB0aGFuIDcwLTc1CitjaGFyYWN0ZXJzLCBhbmQgaXQgbXVzdCBkZXNjcmliZSBib3RoIHdoYXQgdGhlIHBhdGNoIGNoYW5nZXMsIGFzIHdlbGwKK2FzIHdoeSB0aGUgcGF0Y2ggbWlnaHQgYmUgbmVjZXNzYXJ5LiAgSXQgaXMgY2hhbGxlbmdpbmcgdG8gYmUgYm90aAorc3VjY2luY3QgYW5kIGRlc2NyaXB0aXZlLCBidXQgdGhhdCBpcyB3aGF0IGEgd2VsbC13cml0dGVuIHN1bW1hcnkKK3Nob3VsZCBkby4KKworVGhlICJzdW1tYXJ5IHBocmFzZSIgbWF5IGJlIHByZWZpeGVkIGJ5IHRhZ3MgZW5jbG9zZWQgaW4gc3F1YXJlCiticmFja2V0czogIlN1YmplY3Q6IFtQQVRDSCA8dGFnPi4uLl0gPHN1bW1hcnkgcGhyYXNlPiIuICBUaGUgdGFncyBhcmUKK25vdCBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIHN1bW1hcnkgcGhyYXNlLCBidXQgZGVzY3JpYmUgaG93IHRoZSBwYXRjaAorc2hvdWxkIGJlIHRyZWF0ZWQuICBDb21tb24gdGFncyBtaWdodCBpbmNsdWRlIGEgdmVyc2lvbiBkZXNjcmlwdG9yIGlmCit0aGUgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIHBhdGNoIGhhdmUgYmVlbiBzZW50IG91dCBpbiByZXNwb25zZSB0bworY29tbWVudHMgKGkuZS4sICJ2MSwgdjIsIHYzIiksIG9yICJSRkMiIHRvIGluZGljYXRlIGEgcmVxdWVzdCBmb3IKK2NvbW1lbnRzLiAgSWYgdGhlcmUgYXJlIGZvdXIgcGF0Y2hlcyBpbiBhIHBhdGNoIHNlcmllcyB0aGUgaW5kaXZpZHVhbAorcGF0Y2hlcyBtYXkgYmUgbnVtYmVyZWQgbGlrZSB0aGlzOiAxLzQsIDIvNCwgMy80LCA0LzQuICBUaGlzIGFzc3VyZXMKK3RoYXQgZGV2ZWxvcGVycyB1bmRlcnN0YW5kIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgcGF0Y2hlcyBzaG91bGQgYmUKK2FwcGxpZWQgYW5kIHRoYXQgdGhleSBoYXZlIHJldmlld2VkIG9yIGFwcGxpZWQgYWxsIG9mIHRoZSBwYXRjaGVzIGluCit0aGUgcGF0Y2ggc2VyaWVzLgorCitBIGNvdXBsZSBvZiBleGFtcGxlIFN1YmplY3RzOgorCisgICAgU3ViamVjdDogW1BBVENIIDIvNV0gZXh0MjogaW1wcm92ZSBzY2FsYWJpbGl0eSBvZiBiaXRtYXAgc2VhcmNoaW5nCisgICAgU3ViamVjdDogW1BBVENIIHYyIDAxLzI3XSB4ODY6IGZpeCBlZmxhZ3MgdHJhY2tpbmcKKworVGhlICJmcm9tIiBsaW5lIG11c3QgYmUgdGhlIHZlcnkgZmlyc3QgbGluZSBpbiB0aGUgbWVzc2FnZSBib2R5LAorYW5kIGhhcyB0aGUgZm9ybToKKworICAgICAgICBGcm9tOiBPcmlnaW5hbCBBdXRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KKworVGhlICJmcm9tIiBsaW5lIHNwZWNpZmllcyB3aG8gd2lsbCBiZSBjcmVkaXRlZCBhcyB0aGUgYXV0aG9yIG9mIHRoZQorcGF0Y2ggaW4gdGhlIHBlcm1hbmVudCBjaGFuZ2Vsb2cuICBJZiB0aGUgImZyb20iIGxpbmUgaXMgbWlzc2luZywKK3RoZW4gdGhlICJGcm9tOiIgbGluZSBmcm9tIHRoZSBlbWFpbCBoZWFkZXIgd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZQordGhlIHBhdGNoIGF1dGhvciBpbiB0aGUgY2hhbmdlbG9nLgorCitUaGUgZXhwbGFuYXRpb24gYm9keSB3aWxsIGJlIGNvbW1pdHRlZCB0byB0aGUgcGVybWFuZW50IHNvdXJjZQorY2hhbmdlbG9nLCBzbyBzaG91bGQgbWFrZSBzZW5zZSB0byBhIGNvbXBldGVudCByZWFkZXIgd2hvIGhhcyBsb25nCitzaW5jZSBmb3Jnb3R0ZW4gdGhlIGltbWVkaWF0ZSBkZXRhaWxzIG9mIHRoZSBkaXNjdXNzaW9uIHRoYXQgbWlnaHQKK2hhdmUgbGVkIHRvIHRoaXMgcGF0Y2guICBJbmNsdWRpbmcgc3ltcHRvbXMgb2YgdGhlIGZhaWx1cmUgd2hpY2ggdGhlCitwYXRjaCBhZGRyZXNzZXMgKGtlcm5lbCBsb2cgbWVzc2FnZXMsIG9vcHMgbWVzc2FnZXMsIGV0Yy4pIGlzCitlc3BlY2lhbGx5IHVzZWZ1bCBmb3IgcGVvcGxlIHdobyBtaWdodCBiZSBzZWFyY2hpbmcgdGhlIGNvbW1pdCBsb2dzCitsb29raW5nIGZvciB0aGUgYXBwbGljYWJsZSBwYXRjaC4gIElmIGEgcGF0Y2ggZml4ZXMgYSBjb21waWxlIGZhaWx1cmUsCitpdCBtYXkgbm90IGJlIG5lY2Vzc2FyeSB0byBpbmNsdWRlIF9hbGxfIG9mIHRoZSBjb21waWxlIGZhaWx1cmVzOyBqdXN0Citlbm91Z2ggdGhhdCBpdCBpcyBsaWtlbHkgdGhhdCBzb21lb25lIHNlYXJjaGluZyBmb3IgdGhlIHBhdGNoIGNhbiBmaW5kCitpdC4gIEFzIGluIHRoZSAic3VtbWFyeSBwaHJhc2UiLCBpdCBpcyBpbXBvcnRhbnQgdG8gYmUgYm90aCBzdWNjaW5jdCBhcword2VsbCBhcyBkZXNjcmlwdGl2ZS4KKworVGhlICItLS0iIG1hcmtlciBsaW5lIHNlcnZlcyB0aGUgZXNzZW50aWFsIHB1cnBvc2Ugb2YgbWFya2luZyBmb3IgcGF0Y2gKK2hhbmRsaW5nIHRvb2xzIHdoZXJlIHRoZSBjaGFuZ2Vsb2cgbWVzc2FnZSBlbmRzLgorCitPbmUgZ29vZCB1c2UgZm9yIHRoZSBhZGRpdGlvbmFsIGNvbW1lbnRzIGFmdGVyIHRoZSAiLS0tIiBtYXJrZXIgaXMgZm9yCithIGRpZmZzdGF0LCB0byBzaG93IHdoYXQgZmlsZXMgaGF2ZSBjaGFuZ2VkLCBhbmQgdGhlIG51bWJlciBvZgoraW5zZXJ0ZWQgYW5kIGRlbGV0ZWQgbGluZXMgcGVyIGZpbGUuICBBIGRpZmZzdGF0IGlzIGVzcGVjaWFsbHkgdXNlZnVsCitvbiBiaWdnZXIgcGF0Y2hlcy4gIE90aGVyIGNvbW1lbnRzIHJlbGV2YW50IG9ubHkgdG8gdGhlIG1vbWVudCBvciB0aGUKK21haW50YWluZXIsIG5vdCBzdWl0YWJsZSBmb3IgdGhlIHBlcm1hbmVudCBjaGFuZ2Vsb2csIHNob3VsZCBhbHNvIGdvCitoZXJlLiAgQSBnb29kIGV4YW1wbGUgb2Ygc3VjaCBjb21tZW50cyBtaWdodCBiZSAicGF0Y2ggY2hhbmdlbG9ncyIKK3doaWNoIGRlc2NyaWJlIHdoYXQgaGFzIGNoYW5nZWQgYmV0d2VlbiB0aGUgdjEgYW5kIHYyIHZlcnNpb24gb2YgdGhlCitwYXRjaC4KKworSWYgeW91IGFyZSBnb2luZyB0byBpbmNsdWRlIGEgZGlmZnN0YXQgYWZ0ZXIgdGhlICItLS0iIG1hcmtlciwgcGxlYXNlCit1c2UgZGlmZnN0YXQgb3B0aW9ucyAiLXAgMSAtdyA3MCIgc28gdGhhdCBmaWxlbmFtZXMgYXJlIGxpc3RlZCBmcm9tCit0aGUgdG9wIG9mIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgYW5kIGRvbid0IHVzZSB0b28gbXVjaCBob3Jpem9udGFsCitzcGFjZSAoZWFzaWx5IGZpdCBpbiA4MCBjb2x1bW5zLCBtYXliZSB3aXRoIHNvbWUgaW5kZW50YXRpb24pLiAgKGdpdAorZ2VuZXJhdGVzIGFwcHJvcHJpYXRlIGRpZmZzdGF0cyBieSBkZWZhdWx0LikKKworU2VlIG1vcmUgZGV0YWlscyBvbiB0aGUgcHJvcGVyIHBhdGNoIGZvcm1hdCBpbiB0aGUgZm9sbG93aW5nCityZWZlcmVuY2VzLgorCisxNSkgRXhwbGljaXQgSW4tUmVwbHktVG8gaGVhZGVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSXQgY2FuIGJlIGhlbHBmdWwgdG8gbWFudWFsbHkgYWRkIEluLVJlcGx5LVRvOiBoZWFkZXJzIHRvIGEgcGF0Y2gKKyhlLmcuLCB3aGVuIHVzaW5nICJnaXQgc2VuZCBlbWFpbCIpIHRvIGFzc29jaWF0ZSB0aGUgcGF0Y2ggd2l0aAorcHJldmlvdXMgcmVsZXZhbnQgZGlzY3Vzc2lvbiwgZS5nLiB0byBsaW5rIGEgYnVnIGZpeCB0byB0aGUgZW1haWwgd2l0aAordGhlIGJ1ZyByZXBvcnQuICBIb3dldmVyLCBmb3IgYSBtdWx0aS1wYXRjaCBzZXJpZXMsIGl0IGlzIGdlbmVyYWxseQorYmVzdCB0byBhdm9pZCB1c2luZyBJbi1SZXBseS1UbzogdG8gbGluayB0byBvbGRlciB2ZXJzaW9ucyBvZiB0aGUKK3Nlcmllcy4gIFRoaXMgd2F5IG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBwYXRjaCBkb24ndCBiZWNvbWUgYW4KK3VubWFuYWdlYWJsZSBmb3Jlc3Qgb2YgcmVmZXJlbmNlcyBpbiBlbWFpbCBjbGllbnRzLiAgSWYgYSBsaW5rIGlzCitoZWxwZnVsLCB5b3UgY2FuIHVzZSB0aGUgaHR0cHM6Ly9sa21sLmtlcm5lbC5vcmcvIHJlZGlyZWN0b3IgKGUuZy4sIGluCit0aGUgY292ZXIgZW1haWwgdGV4dCkgdG8gbGluayB0byBhbiBlYXJsaWVyIHZlcnNpb24gb2YgdGhlIHBhdGNoIHNlcmllcy4KKworCisxNikgU2VuZGluZyAiZ2l0IHB1bGwiIHJlcXVlc3RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHlvdSBoYXZlIGEgc2VyaWVzIG9mIHBhdGNoZXMsIGl0IG1heSBiZSBtb3N0IGNvbnZlbmllbnQgdG8gaGF2ZSB0aGUKK21haW50YWluZXIgcHVsbCB0aGVtIGRpcmVjdGx5IGludG8gdGhlIHN1YnN5c3RlbSByZXBvc2l0b3J5IHdpdGggYQorImdpdCBwdWxsIiBvcGVyYXRpb24uICBOb3RlLCBob3dldmVyLCB0aGF0IHB1bGxpbmcgcGF0Y2hlcyBmcm9tIGEgZGV2ZWxvcGVyCityZXF1aXJlcyBhIGhpZ2hlciBkZWdyZWUgb2YgdHJ1c3QgdGhhbiB0YWtpbmcgcGF0Y2hlcyBmcm9tIGEgbWFpbGluZyBsaXN0LgorQXMgYSByZXN1bHQsIG1hbnkgc3Vic3lzdGVtIG1haW50YWluZXJzIGFyZSByZWx1Y3RhbnQgdG8gdGFrZSBwdWxsCityZXF1ZXN0cywgZXNwZWNpYWxseSBmcm9tIG5ldywgdW5rbm93biBkZXZlbG9wZXJzLiAgSWYgaW4gZG91YnQgeW91IGNhbiB1c2UKK3RoZSBwdWxsIHJlcXVlc3QgYXMgdGhlIGNvdmVyIGxldHRlciBmb3IgYSBub3JtYWwgcG9zdGluZyBvZiB0aGUgcGF0Y2gKK3NlcmllcywgZ2l2aW5nIHRoZSBtYWludGFpbmVyIHRoZSBvcHRpb24gb2YgdXNpbmcgZWl0aGVyLgorCitBIHB1bGwgcmVxdWVzdCBzaG91bGQgaGF2ZSBbR0lUXSBvciBbUFVMTF0gaW4gdGhlIHN1YmplY3QgbGluZS4gIFRoZQorcmVxdWVzdCBpdHNlbGYgc2hvdWxkIGluY2x1ZGUgdGhlIHJlcG9zaXRvcnkgbmFtZSBhbmQgdGhlIGJyYW5jaCBvZgoraW50ZXJlc3Qgb24gYSBzaW5nbGUgbGluZTsgaXQgc2hvdWxkIGxvb2sgc29tZXRoaW5nIGxpa2U6CisKKyAgUGxlYXNlIHB1bGwgZnJvbQorCisgICAgICBnaXQ6Ly9qZGVsdmFyZS5wY2submVyaW0ubmV0L2pkZWx2YXJlLTIuNiBpMmMtZm9yLWxpbnVzCisKKyAgdG8gZ2V0IHRoZXNlIGNoYW5nZXM6CisKK0EgcHVsbCByZXF1ZXN0IHNob3VsZCBhbHNvIGluY2x1ZGUgYW4gb3ZlcmFsbCBtZXNzYWdlIHNheWluZyB3aGF0IHdpbGwgYmUKK2luY2x1ZGVkIGluIHRoZSByZXF1ZXN0LCBhICJnaXQgc2hvcnRsb2ciIGxpc3Rpbmcgb2YgdGhlIHBhdGNoZXMKK3RoZW1zZWx2ZXMsIGFuZCBhIGRpZmZzdGF0IHNob3dpbmcgdGhlIG92ZXJhbGwgZWZmZWN0IG9mIHRoZSBwYXRjaCBzZXJpZXMuCitUaGUgZWFzaWVzdCB3YXkgdG8gZ2V0IGFsbCB0aGlzIGluZm9ybWF0aW9uIHRvZ2V0aGVyIGlzLCBvZiBjb3Vyc2UsIHRvIGxldAorZ2l0IGRvIGl0IGZvciB5b3Ugd2l0aCB0aGUgImdpdCByZXF1ZXN0LXB1bGwiIGNvbW1hbmQuCisKK1NvbWUgbWFpbnRhaW5lcnMgKGluY2x1ZGluZyBMaW51cykgd2FudCB0byBzZWUgcHVsbCByZXF1ZXN0cyBmcm9tIHNpZ25lZAorY29tbWl0czsgdGhhdCBpbmNyZWFzZXMgdGhlaXIgY29uZmlkZW5jZSB0aGF0IHRoZSByZXF1ZXN0IGFjdHVhbGx5IGNhbWUKK2Zyb20geW91LiAgTGludXMsIGluIHBhcnRpY3VsYXIsIHdpbGwgbm90IHB1bGwgZnJvbSBwdWJsaWMgaG9zdGluZyBzaXRlcworbGlrZSBHaXRIdWIgaW4gdGhlIGFic2VuY2Ugb2YgYSBzaWduZWQgdGFnLgorCitUaGUgZmlyc3Qgc3RlcCB0b3dhcmQgY3JlYXRpbmcgc3VjaCB0YWdzIGlzIHRvIG1ha2UgYSBHTlVQRyBrZXkgYW5kIGdldCBpdAorc2lnbmVkIGJ5IG9uZSBvciBtb3JlIGNvcmUga2VybmVsIGRldmVsb3BlcnMuICBUaGlzIHN0ZXAgY2FuIGJlIGhhcmQgZm9yCituZXcgZGV2ZWxvcGVycywgYnV0IHRoZXJlIGlzIG5vIHdheSBhcm91bmQgaXQuICBBdHRlbmRpbmcgY29uZmVyZW5jZXMgY2FuCitiZSBhIGdvb2Qgd2F5IHRvIGZpbmQgZGV2ZWxvcGVycyB3aG8gY2FuIHNpZ24geW91ciBrZXkuCisKK09uY2UgeW91IGhhdmUgcHJlcGFyZWQgYSBwYXRjaCBzZXJpZXMgaW4gZ2l0IHRoYXQgeW91IHdpc2ggdG8gaGF2ZSBzb21lYm9keQorcHVsbCwgY3JlYXRlIGEgc2lnbmVkIHRhZyB3aXRoICJnaXQgdGFnIC1zIi4gIFRoaXMgd2lsbCBjcmVhdGUgYSBuZXcgdGFnCitpZGVudGlmeWluZyB0aGUgbGFzdCBjb21taXQgaW4gdGhlIHNlcmllcyBhbmQgY29udGFpbmluZyBhIHNpZ25hdHVyZQorY3JlYXRlZCB3aXRoIHlvdXIgcHJpdmF0ZSBrZXkuICBZb3Ugd2lsbCBhbHNvIGhhdmUgdGhlIG9wcG9ydHVuaXR5IHRvIGFkZCBhCitjaGFuZ2Vsb2ctc3R5bGUgbWVzc2FnZSB0byB0aGUgdGFnOyB0aGlzIGlzIGFuIGlkZWFsIHBsYWNlIHRvIGRlc2NyaWJlIHRoZQorZWZmZWN0cyBvZiB0aGUgcHVsbCByZXF1ZXN0IGFzIGEgd2hvbGUuCisKK0lmIHRoZSB0cmVlIHRoZSBtYWludGFpbmVyIHdpbGwgYmUgcHVsbGluZyBmcm9tIGlzIG5vdCB0aGUgcmVwb3NpdG9yeSB5b3UKK2FyZSB3b3JraW5nIGZyb20sIGRvbid0IGZvcmdldCB0byBwdXNoIHRoZSBzaWduZWQgdGFnIGV4cGxpY2l0bHkgdG8gdGhlCitwdWJsaWMgdHJlZS4KKworV2hlbiBnZW5lcmF0aW5nIHlvdXIgcHVsbCByZXF1ZXN0LCB1c2UgdGhlIHNpZ25lZCB0YWcgYXMgdGhlIHRhcmdldC4gIEEKK2NvbW1hbmQgbGlrZSB0aGlzIHdpbGwgZG8gdGhlIHRyaWNrOgorCisgIGdpdCByZXF1ZXN0LXB1bGwgbWFzdGVyIGdpdDovL215LnB1YmxpYy50cmVlL2xpbnV4LmdpdCBteS1zaWduZWQtdGFnCisKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU0VDVElPTiAyIC0gUkVGRVJFTkNFUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbmRyZXcgTW9ydG9uLCAiVGhlIHBlcmZlY3QgcGF0Y2giICh0cHApLgorICA8aHR0cDovL3d3dy5vemxhYnMub3JnL35ha3BtL3N0dWZmL3RwcC50eHQ+CisKK0plZmYgR2FyemlrLCAiTGludXgga2VybmVsIHBhdGNoIHN1Ym1pc3Npb24gZm9ybWF0Ii4KKyAgPGh0dHA6Ly9saW51eC55eXoudXMvcGF0Y2gtZm9ybWF0Lmh0bWw+CisKK0dyZWcgS3JvYWgtSGFydG1hbiwgIkhvdyB0byBwaXNzIG9mZiBhIGtlcm5lbCBzdWJzeXN0ZW0gbWFpbnRhaW5lciIuCisgIDxodHRwOi8vd3d3Lmtyb2FoLmNvbS9sb2cvbGludXgvbWFpbnRhaW5lci5odG1sPgorICA8aHR0cDovL3d3dy5rcm9haC5jb20vbG9nL2xpbnV4L21haW50YWluZXItMDIuaHRtbD4KKyAgPGh0dHA6Ly93d3cua3JvYWguY29tL2xvZy9saW51eC9tYWludGFpbmVyLTAzLmh0bWw+CisgIDxodHRwOi8vd3d3Lmtyb2FoLmNvbS9sb2cvbGludXgvbWFpbnRhaW5lci0wNC5odG1sPgorICA8aHR0cDovL3d3dy5rcm9haC5jb20vbG9nL2xpbnV4L21haW50YWluZXItMDUuaHRtbD4KKyAgPGh0dHA6Ly93d3cua3JvYWguY29tL2xvZy9saW51eC9tYWludGFpbmVyLTA2Lmh0bWw+CisKK05PISEhISBObyBtb3JlIGh1Z2UgcGF0Y2ggYm9tYnMgdG8gbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZyBwZW9wbGUhCisgIDxodHRwczovL2xrbWwub3JnL2xrbWwvMjAwNS83LzExLzMzNj4KKworS2VybmVsIERvY3VtZW50YXRpb24vQ29kaW5nU3R5bGU6CisgIDxEb2N1bWVudGF0aW9uL0NvZGluZ1N0eWxlPgorCitMaW51cyBUb3J2YWxkcydzIG1haWwgb24gdGhlIGNhbm9uaWNhbCBwYXRjaCBmb3JtYXQ6CisgIDxodHRwOi8vbGttbC5vcmcvbGttbC8yMDA1LzQvNy8xODM+CisKK0FuZGkgS2xlZW4sICJPbiBzdWJtaXR0aW5nIGtlcm5lbCBwYXRjaGVzIgorICBTb21lIHN0cmF0ZWdpZXMgdG8gZ2V0IGRpZmZpY3VsdCBvciBjb250cm92ZXJzaWFsIGNoYW5nZXMgaW4uCisgIGh0dHA6Ly9oYWxvYmF0ZXMuZGUvb24tc3VibWl0dGluZy1wYXRjaGVzLnBkZgorCistLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9WR0Etc29mdGN1cnNvci50eHQgYi9Eb2N1bWVudGF0aW9uL1ZHQS1zb2Z0Y3Vyc29yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGFjZmJmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9WR0Etc29mdGN1cnNvci50eHQKQEAgLTAsMCArMSwzOSBAQAorU29mdHdhcmUgY3Vyc29yIGZvciBWR0EgICAgYnkgUGF2ZWwgTWFjaGVrIDxwYXZlbEBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+Cis9PT09PT09PT09PT09PT09PT09PT09PSAgICBhbmQgTWFydGluIE1hcmVzIDxtakBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+CisKKyAgIExpbnV4IG5vdyBoYXMgc29tZSBhYmlsaXR5IHRvIG1hbmlwdWxhdGUgY3Vyc29yIGFwcGVhcmFuY2UuIE5vcm1hbGx5LCB5b3UKK2NhbiBzZXQgdGhlIHNpemUgb2YgaGFyZHdhcmUgY3Vyc29yIChhbmQgYWxzbyB3b3JrIGFyb3VuZCBzb21lIHVnbHkgYnVncyBpbgordGhvc2UgbWlzZXJhYmxlIFRyaWRlbnQgY2FyZHMtLXNlZSAjZGVmaW5lIFRSSURFTlRfR0xJVENIIGluIGRyaXZlcnMvdmlkZW8vCit2Z2Fjb24uYykuIFlvdSBjYW4gbm93IHBsYXkgYSBmZXcgbmV3IHRyaWNrczogIHlvdSBjYW4gbWFrZSB5b3VyIGN1cnNvciBsb29rCitsaWtlIGEgbm9uLWJsaW5raW5nIHJlZCBibG9jaywgbWFrZSBpdCBpbnZlcnNlIGJhY2tncm91bmQgb2YgdGhlIGNoYXJhY3RlciBpdCdzCitvdmVyIG9yIHRvIGhpZ2hsaWdodCB0aGF0IGNoYXJhY3RlciBhbmQgc3RpbGwgY2hvb3NlIHdoZXRoZXIgdGhlIG9yaWdpbmFsCitoYXJkd2FyZSBjdXJzb3Igc2hvdWxkIHJlbWFpbiB2aXNpYmxlIG9yIG5vdC4gIFRoZXJlIG1heSBiZSBvdGhlciB0aGluZ3MgSSBoYXZlCituZXZlciB0aG91Z2h0IG9mLgorCisgICBUaGUgY3Vyc29yIGFwcGVhcmFuY2UgaXMgY29udHJvbGxlZCBieSBhICI8RVNDPls/MTsyOzNjIiBlc2NhcGUgc2VxdWVuY2UKK3doZXJlIDEsIDIgYW5kIDMgYXJlIHBhcmFtZXRlcnMgZGVzY3JpYmVkIGJlbG93LiBJZiB5b3Ugb21pdCBhbnkgb2YgdGhlbSwKK3RoZXkgd2lsbCBkZWZhdWx0IHRvIHplcm9lcy4KKworICAgUGFyYW1ldGVyIDEgc3BlY2lmaWVzIGN1cnNvciBzaXplICgwPWRlZmF1bHQsIDE9aW52aXNpYmxlLCAyPXVuZGVybGluZSwgLi4uLAorOD1mdWxsIGJsb2NrKSArIDE2IGlmIHlvdSB3YW50IHRoZSBzb2Z0d2FyZSBjdXJzb3IgdG8gYmUgYXBwbGllZCArIDMyIGlmIHlvdQord2FudCB0byBhbHdheXMgY2hhbmdlIHRoZSBiYWNrZ3JvdW5kIGNvbG9yICsgNjQgaWYgeW91IGRpc2xpa2UgaGF2aW5nIHRoZQorYmFja2dyb3VuZCB0aGUgc2FtZSBhcyB0aGUgZm9yZWdyb3VuZC4gIEhpZ2hsaWdodHMgYXJlIGlnbm9yZWQgZm9yIHRoZSBsYXN0IHR3bworZmxhZ3MuCisKKyAgIFRoZSBzZWNvbmQgcGFyYW1ldGVyIHNlbGVjdHMgY2hhcmFjdGVyIGF0dHJpYnV0ZSBiaXRzIHlvdSB3YW50IHRvIGNoYW5nZQorKGJ5IHNpbXBseSBYT1JpbmcgdGhlbSB3aXRoIHRoZSB2YWx1ZSBvZiB0aGlzIHBhcmFtZXRlcikuIE9uIHN0YW5kYXJkIFZHQSwKK3RoZSBoaWdoIGZvdXIgYml0cyBzcGVjaWZ5IGJhY2tncm91bmQgYW5kIHRoZSBsb3cgZm91ciB0aGUgZm9yZWdyb3VuZC4gSW4gYm90aAorZ3JvdXBzLCBsb3cgdGhyZWUgYml0cyBzZXQgY29sb3IgKGFzIGluIG5vcm1hbCBjb2xvciBjb2RlcyB1c2VkIGJ5IHRoZSBjb25zb2xlKQorYW5kIHRoZSBtb3N0IHNpZ25pZmljYW50IG9uZSB0dXJucyBvbiBoaWdobGlnaHQgKG9yIHNvbWV0aW1lcyBibGlua2luZy0taXQKK2RlcGVuZHMgb24gdGhlIGNvbmZpZ3VyYXRpb24gb2YgeW91ciBWR0EpLgorCisgICBUaGUgdGhpcmQgcGFyYW1ldGVyIGNvbnNpc3RzIG9mIGNoYXJhY3RlciBhdHRyaWJ1dGUgYml0cyB5b3Ugd2FudCB0byBzZXQuCitCaXQgc2V0dGluZyB0YWtlcyBwbGFjZSBiZWZvcmUgYml0IHRvZ2dsaW5nLCBzbyB5b3UgY2FuIHNpbXBseSBjbGVhciBhIGJpdCBieSAKK2luY2x1ZGluZyBpdCBpbiBib3RoIHRoZSBzZXQgbWFzayBhbmQgdGhlIHRvZ2dsZSBtYXNrLgorCitFeGFtcGxlczoKKz09PT09PT09PQorCitUbyBnZXQgbm9ybWFsIGJsaW5raW5nIHVuZGVybGluZSwgdXNlOiBlY2hvIC1lICdcMDMzWz8yYycKK1RvIGdldCBibGlua2luZyBibG9jaywgdXNlOiAgICAgICAgICAgIGVjaG8gLWUgJ1wwMzNbPzZjJworVG8gZ2V0IHJlZCBub24tYmxpbmtpbmcgYmxvY2ssIHVzZTogICAgZWNobyAtZSAnXDAzM1s/MTc7MDs2NGMnCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FjY291bnRpbmcvLmdpdGlnbm9yZSBiL0RvY3VtZW50YXRpb24vYWNjb3VudGluZy8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2NDg1MjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FjY291bnRpbmcvLmdpdGlnbm9yZQpAQCAtMCwwICsxIEBACitnZXRkZWxheXMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYWNjb3VudGluZy9NYWtlZmlsZSBiL0RvY3VtZW50YXRpb24vYWNjb3VudGluZy9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTIzMmNiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hY2NvdW50aW5nL01ha2VmaWxlCkBAIC0wLDAgKzEsNyBAQAorIyBMaXN0IG9mIHByb2dyYW1zIHRvIGJ1aWxkCitob3N0cHJvZ3MteSA6PSBnZXRkZWxheXMKKworIyBUZWxsIGtidWlsZCB0byBhbHdheXMgYnVpbGQgdGhlIHByb2dyYW1zCithbHdheXMgOj0gJChob3N0cHJvZ3MteSkKKworSE9TVENGTEFHU19nZXRkZWxheXMubyArPSAtSSQob2JqdHJlZSkvdXNyL2luY2x1ZGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYWNjb3VudGluZy9jZ3JvdXBzdGF0cy50eHQgYi9Eb2N1bWVudGF0aW9uL2FjY291bnRpbmcvY2dyb3Vwc3RhdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNmE5ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FjY291bnRpbmcvY2dyb3Vwc3RhdHMudHh0CkBAIC0wLDAgKzEsMjcgQEAKK0NvbnRyb2wgR3JvdXBzdGF0cyBpcyBpbnNwaXJlZCBieSB0aGUgZGlzY3Vzc2lvbiBhdAoraHR0cDovL2xrbWwub3JnL2xrbWwvMjAwNy80LzExLzE4NyBhbmQgaW1wbGVtZW50cyBwZXIgY2dyb3VwIHN0YXRpc3RpY3MgYXMKK3N1Z2dlc3RlZCBieSBBbmRyZXcgTW9ydG9uIGluIGh0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDcvNC8xMS8yNjMuCisKK1BlciBjZ3JvdXAgc3RhdGlzdGljcyBpbmZyYXN0cnVjdHVyZSByZS11c2VzIGNvZGUgZnJvbSB0aGUgdGFza3N0YXRzCitpbnRlcmZhY2UuIEEgbmV3IHNldCBvZiBjZ3JvdXAgb3BlcmF0aW9ucyBhcmUgcmVnaXN0ZXJlZCB3aXRoIGNvbW1hbmRzCithbmQgYXR0cmlidXRlcyBzcGVjaWZpYyB0byBjZ3JvdXBzLiBJdCBzaG91bGQgYmUgdmVyeSBlYXN5IHRvCitleHRlbmQgcGVyIGNncm91cCBzdGF0aXN0aWNzLCBieSBhZGRpbmcgbWVtYmVycyB0byB0aGUgY2dyb3Vwc3RhdHMKK3N0cnVjdHVyZS4KKworVGhlIGN1cnJlbnQgbW9kZWwgZm9yIGNncm91cHN0YXRzIGlzIGEgcHVsbCwgYSBwdXNoIG1vZGVsICh0byBwb3N0CitzdGF0aXN0aWNzIG9uIGludGVyZXN0aW5nIGV2ZW50cyksIHNob3VsZCBiZSB2ZXJ5IGVhc3kgdG8gYWRkLiBDdXJyZW50bHkKK3VzZXIgc3BhY2UgcmVxdWVzdHMgZm9yIHN0YXRpc3RpY3MgYnkgcGFzc2luZyB0aGUgY2dyb3VwIHBhdGguCitTdGF0aXN0aWNzIGFib3V0IHRoZSBzdGF0ZSBvZiBhbGwgdGhlIHRhc2tzIGluIHRoZSBjZ3JvdXAgaXMgcmV0dXJuZWQgdG8KK3VzZXIgc3BhY2UuCisKK05PVEU6IFdlIGN1cnJlbnRseSByZWx5IG9uIGRlbGF5IGFjY291bnRpbmcgZm9yIGV4dHJhY3RpbmcgaW5mb3JtYXRpb24KK2Fib3V0IHRhc2tzIGJsb2NrZWQgb24gSS9PLiBJZiBDT05GSUdfVEFTS19ERUxBWV9BQ0NUIGlzIGRpc2FibGVkLCB0aGlzCitpbmZvcm1hdGlvbiB3aWxsIG5vdCBiZSBhdmFpbGFibGUuCisKK1RvIGV4dHJhY3QgY2dyb3VwIHN0YXRpc3RpY3MgYSB1dGlsaXR5IHZlcnkgc2ltaWxhciB0byBnZXRkZWxheXMuYworaGFzIGJlZW4gZGV2ZWxvcGVkLCB0aGUgc2FtcGxlIG91dHB1dCBvZiB0aGUgdXRpbGl0eSBpcyBzaG93biBiZWxvdworCit+L2JhbGJpci9jZ3JvdXBzdGF0cyAjIC4vZ2V0ZGVsYXlzICAtQyAiL3N5cy9mcy9jZ3JvdXAvYSIKK3NsZWVwaW5nIDEsIGJsb2NrZWQgMCwgcnVubmluZyAxLCBzdG9wcGVkIDAsIHVuaW50ZXJydXB0aWJsZSAwCit+L2JhbGJpci9jZ3JvdXBzdGF0cyAjIC4vZ2V0ZGVsYXlzICAtQyAiL3N5cy9mcy9jZ3JvdXAiCitzbGVlcGluZyAxNTUsIGJsb2NrZWQgMCwgcnVubmluZyAxLCBzdG9wcGVkIDAsIHVuaW50ZXJydXB0aWJsZSAyCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FjY291bnRpbmcvZGVsYXktYWNjb3VudGluZy50eHQgYi9Eb2N1bWVudGF0aW9uL2FjY291bnRpbmcvZGVsYXktYWNjb3VudGluZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGExMmYwNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYWNjb3VudGluZy9kZWxheS1hY2NvdW50aW5nLnR4dApAQCAtMCwwICsxLDExNyBAQAorRGVsYXkgYWNjb3VudGluZworLS0tLS0tLS0tLS0tLS0tLQorCitUYXNrcyBlbmNvdW50ZXIgZGVsYXlzIGluIGV4ZWN1dGlvbiB3aGVuIHRoZXkgd2FpdAorZm9yIHNvbWUga2VybmVsIHJlc291cmNlIHRvIGJlY29tZSBhdmFpbGFibGUgZS5nLiBhCitydW5uYWJsZSB0YXNrIG1heSB3YWl0IGZvciBhIGZyZWUgQ1BVIHRvIHJ1biBvbi4KKworVGhlIHBlci10YXNrIGRlbGF5IGFjY291bnRpbmcgZnVuY3Rpb25hbGl0eSBtZWFzdXJlcwordGhlIGRlbGF5cyBleHBlcmllbmNlZCBieSBhIHRhc2sgd2hpbGUKKworYSkgd2FpdGluZyBmb3IgYSBDUFUgKHdoaWxlIGJlaW5nIHJ1bm5hYmxlKQorYikgY29tcGxldGlvbiBvZiBzeW5jaHJvbm91cyBibG9jayBJL08gaW5pdGlhdGVkIGJ5IHRoZSB0YXNrCitjKSBzd2FwcGluZyBpbiBwYWdlcworZCkgbWVtb3J5IHJlY2xhaW0KKworYW5kIG1ha2VzIHRoZXNlIHN0YXRpc3RpY3MgYXZhaWxhYmxlIHRvIHVzZXJzcGFjZSB0aHJvdWdoCit0aGUgdGFza3N0YXRzIGludGVyZmFjZS4KKworU3VjaCBkZWxheXMgcHJvdmlkZSBmZWVkYmFjayBmb3Igc2V0dGluZyBhIHRhc2sncyBjcHUgcHJpb3JpdHksCitpbyBwcmlvcml0eSBhbmQgcnNzIGxpbWl0IHZhbHVlcyBhcHByb3ByaWF0ZWx5LiBMb25nIGRlbGF5cyBmb3IKK2ltcG9ydGFudCB0YXNrcyBjb3VsZCBiZSBhIHRyaWdnZXIgZm9yIHJhaXNpbmcgaXRzIGNvcnJlc3BvbmRpbmcgcHJpb3JpdHkuCisKK1RoZSBmdW5jdGlvbmFsaXR5LCB0aHJvdWdoIGl0cyB1c2Ugb2YgdGhlIHRhc2tzdGF0cyBpbnRlcmZhY2UsIGFsc28gcHJvdmlkZXMKK2RlbGF5IHN0YXRpc3RpY3MgYWdncmVnYXRlZCBmb3IgYWxsIHRhc2tzIChvciB0aHJlYWRzKSBiZWxvbmdpbmcgdG8gYQordGhyZWFkIGdyb3VwIChjb3JyZXNwb25kaW5nIHRvIGEgdHJhZGl0aW9uYWwgVW5peCBwcm9jZXNzKS4gVGhpcyBpcyBhIGNvbW1vbmx5CituZWVkZWQgYWdncmVnYXRpb24gdGhhdCBpcyBtb3JlIGVmZmljaWVudGx5IGRvbmUgYnkgdGhlIGtlcm5lbC4KKworVXNlcnNwYWNlIHV0aWxpdGllcywgcGFydGljdWxhcmx5IHJlc291cmNlIG1hbmFnZW1lbnQgYXBwbGljYXRpb25zLCBjYW4gYWxzbworYWdncmVnYXRlIGRlbGF5IHN0YXRpc3RpY3MgaW50byBhcmJpdHJhcnkgZ3JvdXBzLiBUbyBlbmFibGUgdGhpcywgZGVsYXkKK3N0YXRpc3RpY3Mgb2YgYSB0YXNrIGFyZSBhdmFpbGFibGUgYm90aCBkdXJpbmcgaXRzIGxpZmV0aW1lIGFzIHdlbGwgYXMgb24gaXRzCitleGl0LCBlbnN1cmluZyBjb250aW51b3VzIGFuZCBjb21wbGV0ZSBtb25pdG9yaW5nIGNhbiBiZSBkb25lLgorCisKK0ludGVyZmFjZQorLS0tLS0tLS0tCisKK0RlbGF5IGFjY291bnRpbmcgdXNlcyB0aGUgdGFza3N0YXRzIGludGVyZmFjZSB3aGljaCBpcyBkZXNjcmliZWQKK2luIGRldGFpbCBpbiBhIHNlcGFyYXRlIGRvY3VtZW50IGluIHRoaXMgZGlyZWN0b3J5LiBUYXNrc3RhdHMgcmV0dXJucyBhCitnZW5lcmljIGRhdGEgc3RydWN0dXJlIHRvIHVzZXJzcGFjZSBjb3JyZXNwb25kaW5nIHRvIHBlci1waWQgYW5kIHBlci10Z2lkCitzdGF0aXN0aWNzLiBUaGUgZGVsYXkgYWNjb3VudGluZyBmdW5jdGlvbmFsaXR5IHBvcHVsYXRlcyBzcGVjaWZpYyBmaWVsZHMgb2YKK3RoaXMgc3RydWN0dXJlLiBTZWUKKyAgICAgaW5jbHVkZS9saW51eC90YXNrc3RhdHMuaAorZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZpZWxkcyBwZXJ0YWluaW5nIHRvIGRlbGF5IGFjY291bnRpbmcuCitJdCB3aWxsIGdlbmVyYWxseSBiZSBpbiB0aGUgZm9ybSBvZiBjb3VudGVycyByZXR1cm5pbmcgdGhlIGN1bXVsYXRpdmUKK2RlbGF5IHNlZW4gZm9yIGNwdSwgc3luYyBibG9jayBJL08sIHN3YXBpbiwgbWVtb3J5IHJlY2xhaW0gZXRjLgorCitUYWtpbmcgdGhlIGRpZmZlcmVuY2Ugb2YgdHdvIHN1Y2Nlc3NpdmUgcmVhZGluZ3Mgb2YgYSBnaXZlbgorY291bnRlciAoc2F5IGNwdV9kZWxheV90b3RhbCkgZm9yIGEgdGFzayB3aWxsIGdpdmUgdGhlIGRlbGF5CitleHBlcmllbmNlZCBieSB0aGUgdGFzayB3YWl0aW5nIGZvciB0aGUgY29ycmVzcG9uZGluZyByZXNvdXJjZQoraW4gdGhhdCBpbnRlcnZhbC4KKworV2hlbiBhIHRhc2sgZXhpdHMsIHJlY29yZHMgY29udGFpbmluZyB0aGUgcGVyLXRhc2sgc3RhdGlzdGljcworYXJlIHNlbnQgdG8gdXNlcnNwYWNlIHdpdGhvdXQgcmVxdWlyaW5nIGEgY29tbWFuZC4gSWYgaXQgaXMgdGhlIGxhc3QgZXhpdGluZwordGFzayBvZiBhIHRocmVhZCBncm91cCwgdGhlIHBlci10Z2lkIHN0YXRpc3RpY3MgYXJlIGFsc28gc2VudC4gTW9yZSBkZXRhaWxzCithcmUgZ2l2ZW4gaW4gdGhlIHRhc2tzdGF0cyBpbnRlcmZhY2UgZGVzY3JpcHRpb24uCisKK1RoZSBnZXRkZWxheXMuYyB1c2Vyc3BhY2UgdXRpbGl0eSBpbiB0aGlzIGRpcmVjdG9yeSBhbGxvd3Mgc2ltcGxlIGNvbW1hbmRzIHRvCitiZSBydW4gYW5kIHRoZSBjb3JyZXNwb25kaW5nIGRlbGF5IHN0YXRpc3RpY3MgdG8gYmUgZGlzcGxheWVkLiBJdCBhbHNvIHNlcnZlcworYXMgYW4gZXhhbXBsZSBvZiB1c2luZyB0aGUgdGFza3N0YXRzIGludGVyZmFjZS4KKworVXNhZ2UKKy0tLS0tCisKK0NvbXBpbGUgdGhlIGtlcm5lbCB3aXRoCisJQ09ORklHX1RBU0tfREVMQVlfQUNDVD15CisJQ09ORklHX1RBU0tTVEFUUz15CisKK0RlbGF5IGFjY291bnRpbmcgaXMgZW5hYmxlZCBieSBkZWZhdWx0IGF0IGJvb3QgdXAuCitUbyBkaXNhYmxlLCBhZGQKKyAgIG5vZGVsYXlhY2N0Cit0byB0aGUga2VybmVsIGJvb3Qgb3B0aW9ucy4gVGhlIHJlc3Qgb2YgdGhlIGluc3RydWN0aW9ucworYmVsb3cgYXNzdW1lIHRoaXMgaGFzIG5vdCBiZWVuIGRvbmUuCisKK0FmdGVyIHRoZSBzeXN0ZW0gaGFzIGJvb3RlZCB1cCwgdXNlIGEgdXRpbGl0eQorc2ltaWxhciB0byAgZ2V0ZGVsYXlzLmMgdG8gYWNjZXNzIHRoZSBkZWxheXMKK3NlZW4gYnkgYSBnaXZlbiB0YXNrIG9yIGEgdGFzayBncm91cCAodGdpZCkuCitUaGUgdXRpbGl0eSBhbHNvIGFsbG93cyBhIGdpdmVuIGNvbW1hbmQgdG8gYmUKK2V4ZWN1dGVkIGFuZCB0aGUgY29ycmVzcG9uZGluZyBkZWxheXMgdG8gYmUKK3NlZW4uCisKK0dlbmVyYWwgZm9ybWF0IG9mIHRoZSBnZXRkZWxheXMgY29tbWFuZAorCitnZXRkZWxheXMgWy10IHRnaWRdIFstcCBwaWRdIFstYyBjbWQuLi5dCisKKworR2V0IGRlbGF5cywgc2luY2Ugc3lzdGVtIGJvb3QsIGZvciBwaWQgMTAKKyMgLi9nZXRkZWxheXMgLXAgMTAKKyhvdXRwdXQgc2ltaWxhciB0byBuZXh0IGNhc2UpCisKK0dldCBzdW0gb2YgZGVsYXlzLCBzaW5jZSBzeXN0ZW0gYm9vdCwgZm9yIGFsbCBwaWRzIHdpdGggdGdpZCA1CisjIC4vZ2V0ZGVsYXlzIC10IDUKKworCitDUFUJY291bnQJcmVhbCB0b3RhbAl2aXJ0dWFsIHRvdGFsCWRlbGF5IHRvdGFsCisJNzg3Ngk5MjAwNTc1MAkxMDAwMDAwMDAJMjQwMDE1MDAKK0lPCWNvdW50CWRlbGF5IHRvdGFsCisJMAkwCitTV0FQCWNvdW50CWRlbGF5IHRvdGFsCisJMAkwCitSRUNMQUlNCWNvdW50CWRlbGF5IHRvdGFsCisJMAkwCisKK0dldCBkZWxheXMgc2VlbiBpbiBleGVjdXRpbmcgYSBnaXZlbiBzaW1wbGUgY29tbWFuZAorIyAuL2dldGRlbGF5cyAtYyBscyAvCisKK2JpbiAgIGRhdGExICBkYXRhMyAgZGF0YTUgIGRldiAgaG9tZSAgbWVkaWEgIG9wdCAgIHJvb3QgIHNydiAgICAgICAgc3lzICB1c3IKK2Jvb3QgIGRhdGEyICBkYXRhNCAgZGF0YTYgIGV0YyAgbGliICAgbW50ICAgIHByb2MgIHNiaW4gIHN1YmRvbWFpbiAgdG1wICB2YXIKKworCitDUFUJY291bnQJcmVhbCB0b3RhbAl2aXJ0dWFsIHRvdGFsCWRlbGF5IHRvdGFsCisJNgk0MDAwMjUwCQk0MDAwMDAwCQkwCitJTwljb3VudAlkZWxheSB0b3RhbAorCTAJMAorU1dBUAljb3VudAlkZWxheSB0b3RhbAorCTAJMAorUkVDTEFJTQljb3VudAlkZWxheSB0b3RhbAorCTAJMApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hY2NvdW50aW5nL2dldGRlbGF5cy5jIGIvRG9jdW1lbnRhdGlvbi9hY2NvdW50aW5nL2dldGRlbGF5cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MDU3ODAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FjY291bnRpbmcvZ2V0ZGVsYXlzLmMKQEAgLTAsMCArMSw1NDYgQEAKKy8qIGdldGRlbGF5cy5jCisgKgorICogVXRpbGl0eSB0byBnZXQgcGVyLXBpZCBhbmQgcGVyLXRnaWQgZGVsYXkgYWNjb3VudGluZyBzdGF0aXN0aWNzCisgKiBBbHNvIGlsbHVzdHJhdGVzIHVzYWdlIG9mIHRoZSB0YXNrc3RhdHMgaW50ZXJmYWNlCisgKgorICogQ29weXJpZ2h0IChDKSBTaGFpbGFiaCBOYWdhciwgSUJNIENvcnAuIDIwMDUKKyAqIENvcHlyaWdodCAoQykgQmFsYmlyIFNpbmdoLCBJQk0gQ29ycC4gMjAwNgorICogQ29weXJpZ2h0IChjKSBKYXkgTGFuLCBTR0kuIDIwMDYKKyAqCisgKiBDb21waWxlIHdpdGgKKyAqCWdjYyAtSS91c3Ivc3JjL2xpbnV4L2luY2x1ZGUgZ2V0ZGVsYXlzLmMgLW8gZ2V0ZGVsYXlzCisgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxwb2xsLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgorI2luY2x1ZGUgPHNpZ25hbC5oPgorCisjaW5jbHVkZSA8bGludXgvZ2VuZXRsaW5rLmg+CisjaW5jbHVkZSA8bGludXgvdGFza3N0YXRzLmg+CisjaW5jbHVkZSA8bGludXgvY2dyb3Vwc3RhdHMuaD4KKworLyoKKyAqIEdlbmVyaWMgbWFjcm9zIGZvciBkZWFsaW5nIHdpdGggbmV0bGluayBzb2NrZXRzLiBNaWdodCBiZSBkdXBsaWNhdGVkCisgKiBlbHNld2hlcmUuIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgY29tbWVyY2lhbCBncmFkZSBhcHBsaWNhdGlvbnMgdXNlCisgKiBsaWJubCBvciBsaWJuZXRsaW5rIGFuZCB1c2UgdGhlIGludGVyZmFjZXMgcHJvdmlkZWQgYnkgdGhlIGxpYnJhcnkKKyAqLworI2RlZmluZSBHRU5MTVNHX0RBVEEoZ2xoKQkoKHZvaWQgKikoTkxNU0dfREFUQShnbGgpICsgR0VOTF9IRFJMRU4pKQorI2RlZmluZSBHRU5MTVNHX1BBWUxPQUQoZ2xoKQkoTkxNU0dfUEFZTE9BRChnbGgsIDApIC0gR0VOTF9IRFJMRU4pCisjZGVmaW5lIE5MQV9EQVRBKG5hKQkJKCh2b2lkICopKChjaGFyKikobmEpICsgTkxBX0hEUkxFTikpCisjZGVmaW5lIE5MQV9QQVlMT0FEKGxlbikJKGxlbiAtIE5MQV9IRFJMRU4pCisKKyNkZWZpbmUgZXJyKGNvZGUsIGZtdCwgYXJnLi4uKQkJCVwKKwlkbyB7CQkJCQlcCisJCWZwcmludGYoc3RkZXJyLCBmbXQsICMjYXJnKTsJXAorCQlleGl0KGNvZGUpOwkJCVwKKwl9IHdoaWxlICgwKQorCitpbnQgZG9uZTsKK2ludCByY3ZidWZzejsKK2NoYXIgbmFtZVsxMDBdOworaW50IGRiZzsKK2ludCBwcmludF9kZWxheXM7CitpbnQgcHJpbnRfaW9fYWNjb3VudGluZzsKK2ludCBwcmludF90YXNrX2NvbnRleHRfc3dpdGNoX2NvdW50czsKKworI2RlZmluZSBQUklOVEYoZm10LCBhcmcuLi4pIHsJCQlcCisJICAgIGlmIChkYmcpIHsJCQkJXAorCQlwcmludGYoZm10LCAjI2FyZyk7CQlcCisJICAgIH0JCQkJCVwKKwl9CisKKy8qIE1heGltdW0gc2l6ZSBvZiByZXNwb25zZSByZXF1ZXN0ZWQgb3IgbWVzc2FnZSBzZW50ICovCisjZGVmaW5lIE1BWF9NU0dfU0laRQkxMDI0CisvKiBNYXhpbXVtIG51bWJlciBvZiBjcHVzIGV4cGVjdGVkIHRvIGJlIHNwZWNpZmllZCBpbiBhIGNwdW1hc2sgKi8KKyNkZWZpbmUgTUFYX0NQVVMJMzIKKworc3RydWN0IG1zZ3RlbXBsYXRlIHsKKwlzdHJ1Y3Qgbmxtc2doZHIgbjsKKwlzdHJ1Y3QgZ2VubG1zZ2hkciBnOworCWNoYXIgYnVmW01BWF9NU0dfU0laRV07Cit9OworCitjaGFyIGNwdW1hc2tbMTAwKzYqTUFYX0NQVVNdOworCitzdGF0aWMgdm9pZCB1c2FnZSh2b2lkKQoreworCWZwcmludGYoc3RkZXJyLCAiZ2V0ZGVsYXlzIFstZGlsdl0gWy13IGxvZ2ZpbGVdIFstciBidWZzaXplXSAiCisJCQkiWy1tIGNwdW1hc2tdIFstdCB0Z2lkXSBbLXAgcGlkXVxuIik7CisJZnByaW50ZihzdGRlcnIsICIgIC1kOiBwcmludCBkZWxheWFjY3Qgc3RhdHNcbiIpOworCWZwcmludGYoc3RkZXJyLCAiICAtaTogcHJpbnQgSU8gYWNjb3VudGluZyAod29ya3Mgb25seSB3aXRoIC1wKVxuIik7CisJZnByaW50ZihzdGRlcnIsICIgIC1sOiBsaXN0ZW4gZm9yZXZlclxuIik7CisJZnByaW50ZihzdGRlcnIsICIgIC12OiBkZWJ1ZyBvblxuIik7CisJZnByaW50ZihzdGRlcnIsICIgIC1DOiBjb250YWluZXIgcGF0aFxuIik7Cit9CisKKy8qCisgKiBDcmVhdGUgYSByYXcgbmV0bGluayBzb2NrZXQgYW5kIGJpbmQKKyAqLworc3RhdGljIGludCBjcmVhdGVfbmxfc29ja2V0KGludCBwcm90b2NvbCkKK3sKKwlpbnQgZmQ7CisJc3RydWN0IHNvY2thZGRyX25sIGxvY2FsOworCisJZmQgPSBzb2NrZXQoQUZfTkVUTElOSywgU09DS19SQVcsIHByb3RvY29sKTsKKwlpZiAoZmQgPCAwKQorCQlyZXR1cm4gLTE7CisKKwlpZiAocmN2YnVmc3opCisJCWlmIChzZXRzb2Nrb3B0KGZkLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsCisJCQkJJnJjdmJ1ZnN6LCBzaXplb2YocmN2YnVmc3opKSA8IDApIHsKKwkJCWZwcmludGYoc3RkZXJyLCAiVW5hYmxlIHRvIHNldCBzb2NrZXQgcmN2IGJ1ZiBzaXplIHRvICVkXG4iLAorCQkJCXJjdmJ1ZnN6KTsKKwkJCWdvdG8gZXJyb3I7CisJCX0KKworCW1lbXNldCgmbG9jYWwsIDAsIHNpemVvZihsb2NhbCkpOworCWxvY2FsLm5sX2ZhbWlseSA9IEFGX05FVExJTks7CisKKwlpZiAoYmluZChmZCwgKHN0cnVjdCBzb2NrYWRkciAqKSAmbG9jYWwsIHNpemVvZihsb2NhbCkpIDwgMCkKKwkJZ290byBlcnJvcjsKKworCXJldHVybiBmZDsKK2Vycm9yOgorCWNsb3NlKGZkKTsKKwlyZXR1cm4gLTE7Cit9CisKKworc3RhdGljIGludCBzZW5kX2NtZChpbnQgc2QsIF9fdTE2IG5sbXNnX3R5cGUsIF9fdTMyIG5sbXNnX3BpZCwKKwkgICAgIF9fdTggZ2VubF9jbWQsIF9fdTE2IG5sYV90eXBlLAorCSAgICAgdm9pZCAqbmxhX2RhdGEsIGludCBubGFfbGVuKQoreworCXN0cnVjdCBubGF0dHIgKm5hOworCXN0cnVjdCBzb2NrYWRkcl9ubCBubGFkZHI7CisJaW50IHIsIGJ1ZmxlbjsKKwljaGFyICpidWY7CisKKwlzdHJ1Y3QgbXNndGVtcGxhdGUgbXNnOworCisJbXNnLm4ubmxtc2dfbGVuID0gTkxNU0dfTEVOR1RIKEdFTkxfSERSTEVOKTsKKwltc2cubi5ubG1zZ190eXBlID0gbmxtc2dfdHlwZTsKKwltc2cubi5ubG1zZ19mbGFncyA9IE5MTV9GX1JFUVVFU1Q7CisJbXNnLm4ubmxtc2dfc2VxID0gMDsKKwltc2cubi5ubG1zZ19waWQgPSBubG1zZ19waWQ7CisJbXNnLmcuY21kID0gZ2VubF9jbWQ7CisJbXNnLmcudmVyc2lvbiA9IDB4MTsKKwluYSA9IChzdHJ1Y3QgbmxhdHRyICopIEdFTkxNU0dfREFUQSgmbXNnKTsKKwluYS0+bmxhX3R5cGUgPSBubGFfdHlwZTsKKwluYS0+bmxhX2xlbiA9IG5sYV9sZW4gKyAxICsgTkxBX0hEUkxFTjsKKwltZW1jcHkoTkxBX0RBVEEobmEpLCBubGFfZGF0YSwgbmxhX2xlbik7CisJbXNnLm4ubmxtc2dfbGVuICs9IE5MTVNHX0FMSUdOKG5hLT5ubGFfbGVuKTsKKworCWJ1ZiA9IChjaGFyICopICZtc2c7CisJYnVmbGVuID0gbXNnLm4ubmxtc2dfbGVuIDsKKwltZW1zZXQoJm5sYWRkciwgMCwgc2l6ZW9mKG5sYWRkcikpOworCW5sYWRkci5ubF9mYW1pbHkgPSBBRl9ORVRMSU5LOworCXdoaWxlICgociA9IHNlbmR0byhzZCwgYnVmLCBidWZsZW4sIDAsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJm5sYWRkciwKKwkJCSAgIHNpemVvZihubGFkZHIpKSkgPCBidWZsZW4pIHsKKwkJaWYgKHIgPiAwKSB7CisJCQlidWYgKz0gcjsKKwkJCWJ1ZmxlbiAtPSByOworCQl9IGVsc2UgaWYgKGVycm5vICE9IEVBR0FJTikKKwkJCXJldHVybiAtMTsKKwl9CisJcmV0dXJuIDA7Cit9CisKKworLyoKKyAqIFByb2JlIHRoZSBjb250cm9sbGVyIGluIGdlbmV0bGluayB0byBmaW5kIHRoZSBmYW1pbHkgaWQKKyAqIGZvciB0aGUgVEFTS1NUQVRTIGZhbWlseQorICovCitzdGF0aWMgaW50IGdldF9mYW1pbHlfaWQoaW50IHNkKQoreworCXN0cnVjdCB7CisJCXN0cnVjdCBubG1zZ2hkciBuOworCQlzdHJ1Y3QgZ2VubG1zZ2hkciBnOworCQljaGFyIGJ1ZlsyNTZdOworCX0gYW5zOworCisJaW50IGlkID0gMCwgcmM7CisJc3RydWN0IG5sYXR0ciAqbmE7CisJaW50IHJlcF9sZW47CisKKwlzdHJjcHkobmFtZSwgVEFTS1NUQVRTX0dFTkxfTkFNRSk7CisJcmMgPSBzZW5kX2NtZChzZCwgR0VOTF9JRF9DVFJMLCBnZXRwaWQoKSwgQ1RSTF9DTURfR0VURkFNSUxZLAorCQkJQ1RSTF9BVFRSX0ZBTUlMWV9OQU1FLCAodm9pZCAqKW5hbWUsCisJCQlzdHJsZW4oVEFTS1NUQVRTX0dFTkxfTkFNRSkrMSk7CisJaWYgKHJjIDwgMCkKKwkJcmV0dXJuIDA7CS8qIHNlbmR0bygpIGZhaWx1cmU/ICovCisKKwlyZXBfbGVuID0gcmVjdihzZCwgJmFucywgc2l6ZW9mKGFucyksIDApOworCWlmIChhbnMubi5ubG1zZ190eXBlID09IE5MTVNHX0VSUk9SIHx8CisJICAgIChyZXBfbGVuIDwgMCkgfHwgIU5MTVNHX09LKCgmYW5zLm4pLCByZXBfbGVuKSkKKwkJcmV0dXJuIDA7CisKKwluYSA9IChzdHJ1Y3QgbmxhdHRyICopIEdFTkxNU0dfREFUQSgmYW5zKTsKKwluYSA9IChzdHJ1Y3QgbmxhdHRyICopICgoY2hhciAqKSBuYSArIE5MQV9BTElHTihuYS0+bmxhX2xlbikpOworCWlmIChuYS0+bmxhX3R5cGUgPT0gQ1RSTF9BVFRSX0ZBTUlMWV9JRCkgeworCQlpZCA9ICooX191MTYgKikgTkxBX0RBVEEobmEpOworCX0KKwlyZXR1cm4gaWQ7Cit9CisKKyNkZWZpbmUgYXZlcmFnZV9tcyh0LCBjKSAodCAvIDEwMDAwMDBVTEwgLyAoYyA/IGMgOiAxKSkKKworc3RhdGljIHZvaWQgcHJpbnRfZGVsYXlhY2N0KHN0cnVjdCB0YXNrc3RhdHMgKnQpCit7CisJcHJpbnRmKCJcblxuQ1BVICAgJTE1cyUxNXMlMTVzJTE1cyUxNXNcbiIKKwkgICAgICAgIiAgICAgICUxNWxsdSUxNWxsdSUxNWxsdSUxNWxsdSUxNS4zZm1zXG4iCisJICAgICAgICJJTyAgICAlMTVzJTE1cyUxNXNcbiIKKwkgICAgICAgIiAgICAgICUxNWxsdSUxNWxsdSUxNWxsdW1zXG4iCisJICAgICAgICJTV0FQICAlMTVzJTE1cyUxNXNcbiIKKwkgICAgICAgIiAgICAgICUxNWxsdSUxNWxsdSUxNWxsdW1zXG4iCisJICAgICAgICJSRUNMQUlNICAlMTJzJTE1cyUxNXNcbiIKKwkgICAgICAgIiAgICAgICUxNWxsdSUxNWxsdSUxNWxsdW1zXG4iLAorCSAgICAgICAiY291bnQiLCAicmVhbCB0b3RhbCIsICJ2aXJ0dWFsIHRvdGFsIiwKKwkgICAgICAgImRlbGF5IHRvdGFsIiwgImRlbGF5IGF2ZXJhZ2UiLAorCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKXQtPmNwdV9jb3VudCwKKwkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZyl0LT5jcHVfcnVuX3JlYWxfdG90YWwsCisJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpdC0+Y3B1X3J1bl92aXJ0dWFsX3RvdGFsLAorCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKXQtPmNwdV9kZWxheV90b3RhbCwKKwkgICAgICAgYXZlcmFnZV9tcygoZG91YmxlKXQtPmNwdV9kZWxheV90b3RhbCwgdC0+Y3B1X2NvdW50KSwKKwkgICAgICAgImNvdW50IiwgImRlbGF5IHRvdGFsIiwgImRlbGF5IGF2ZXJhZ2UiLAorCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKXQtPmJsa2lvX2NvdW50LAorCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKXQtPmJsa2lvX2RlbGF5X3RvdGFsLAorCSAgICAgICBhdmVyYWdlX21zKHQtPmJsa2lvX2RlbGF5X3RvdGFsLCB0LT5ibGtpb19jb3VudCksCisJICAgICAgICJjb3VudCIsICJkZWxheSB0b3RhbCIsICJkZWxheSBhdmVyYWdlIiwKKwkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZyl0LT5zd2FwaW5fY291bnQsCisJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpdC0+c3dhcGluX2RlbGF5X3RvdGFsLAorCSAgICAgICBhdmVyYWdlX21zKHQtPnN3YXBpbl9kZWxheV90b3RhbCwgdC0+c3dhcGluX2NvdW50KSwKKwkgICAgICAgImNvdW50IiwgImRlbGF5IHRvdGFsIiwgImRlbGF5IGF2ZXJhZ2UiLAorCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKXQtPmZyZWVwYWdlc19jb3VudCwKKwkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZyl0LT5mcmVlcGFnZXNfZGVsYXlfdG90YWwsCisJICAgICAgIGF2ZXJhZ2VfbXModC0+ZnJlZXBhZ2VzX2RlbGF5X3RvdGFsLCB0LT5mcmVlcGFnZXNfY291bnQpKTsKK30KKworc3RhdGljIHZvaWQgdGFza19jb250ZXh0X3N3aXRjaF9jb3VudHMoc3RydWN0IHRhc2tzdGF0cyAqdCkKK3sKKwlwcmludGYoIlxuXG5UYXNrICAgJTE1cyUxNXNcbiIKKwkgICAgICAgIiAgICAgICAlMTVsbHUlMTVsbHVcbiIsCisJICAgICAgICJ2b2x1bnRhcnkiLCAibm9udm9sdW50YXJ5IiwKKwkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZyl0LT5udmNzdywgKHVuc2lnbmVkIGxvbmcgbG9uZyl0LT5uaXZjc3cpOworfQorCitzdGF0aWMgdm9pZCBwcmludF9jZ3JvdXBzdGF0cyhzdHJ1Y3QgY2dyb3Vwc3RhdHMgKmMpCit7CisJcHJpbnRmKCJzbGVlcGluZyAlbGx1LCBibG9ja2VkICVsbHUsIHJ1bm5pbmcgJWxsdSwgc3RvcHBlZCAlbGx1LCAiCisJCSJ1bmludGVycnVwdGlibGUgJWxsdVxuIiwgKHVuc2lnbmVkIGxvbmcgbG9uZyljLT5ucl9zbGVlcGluZywKKwkJKHVuc2lnbmVkIGxvbmcgbG9uZyljLT5ucl9pb193YWl0LAorCQkodW5zaWduZWQgbG9uZyBsb25nKWMtPm5yX3J1bm5pbmcsCisJCSh1bnNpZ25lZCBsb25nIGxvbmcpYy0+bnJfc3RvcHBlZCwKKwkJKHVuc2lnbmVkIGxvbmcgbG9uZyljLT5ucl91bmludGVycnVwdGlibGUpOworfQorCisKK3N0YXRpYyB2b2lkIHByaW50X2lvYWNjdChzdHJ1Y3QgdGFza3N0YXRzICp0KQoreworCXByaW50ZigiJXM6IHJlYWQ9JWxsdSwgd3JpdGU9JWxsdSwgY2FuY2VsbGVkX3dyaXRlPSVsbHVcbiIsCisJCXQtPmFjX2NvbW0sCisJCSh1bnNpZ25lZCBsb25nIGxvbmcpdC0+cmVhZF9ieXRlcywKKwkJKHVuc2lnbmVkIGxvbmcgbG9uZyl0LT53cml0ZV9ieXRlcywKKwkJKHVuc2lnbmVkIGxvbmcgbG9uZyl0LT5jYW5jZWxsZWRfd3JpdGVfYnl0ZXMpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWludCBjLCByYywgcmVwX2xlbiwgYWdncl9sZW4sIGxlbjI7CisJaW50IGNtZF90eXBlID0gVEFTS1NUQVRTX0NNRF9BVFRSX1VOU1BFQzsKKwlfX3UxNiBpZDsKKwlfX3UzMiBteXBpZDsKKworCXN0cnVjdCBubGF0dHIgKm5hOworCWludCBubF9zZCA9IC0xOworCWludCBsZW4gPSAwOworCXBpZF90IHRpZCA9IDA7CisJcGlkX3QgcnRpZCA9IDA7CisKKwlpbnQgZmQgPSAwOworCWludCBjb3VudCA9IDA7CisJaW50IHdyaXRlX2ZpbGUgPSAwOworCWludCBtYXNrc2V0ID0gMDsKKwljaGFyICpsb2dmaWxlID0gTlVMTDsKKwlpbnQgbG9vcCA9IDA7CisJaW50IGNvbnRhaW5lcnNldCA9IDA7CisJY2hhciAqY29udGFpbmVycGF0aCA9IE5VTEw7CisJaW50IGNmZCA9IDA7CisJaW50IGZvcmtpbmcgPSAwOworCXNpZ3NldF90IHNpZ3NldDsKKworCXN0cnVjdCBtc2d0ZW1wbGF0ZSBtc2c7CisKKwl3aGlsZSAoIWZvcmtpbmcpIHsKKwkJYyA9IGdldG9wdChhcmdjLCBhcmd2LCAicWRpdzpyOm06dDpwOnZsQzpjOiIpOworCQlpZiAoYyA8IDApCisJCQlicmVhazsKKworCQlzd2l0Y2ggKGMpIHsKKwkJY2FzZSAnZCc6CisJCQlwcmludGYoInByaW50IGRlbGF5YWNjdCBzdGF0cyBPTlxuIik7CisJCQlwcmludF9kZWxheXMgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ2knOgorCQkJcHJpbnRmKCJwcmludGluZyBJTyBhY2NvdW50aW5nXG4iKTsKKwkJCXByaW50X2lvX2FjY291bnRpbmcgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ3EnOgorCQkJcHJpbnRmKCJwcmludGluZyB0YXNrL3Byb2Nlc3MgY29udGV4dCBzd2l0Y2ggcmF0ZXNcbiIpOworCQkJcHJpbnRfdGFza19jb250ZXh0X3N3aXRjaF9jb3VudHMgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ0MnOgorCQkJY29udGFpbmVyc2V0ID0gMTsKKwkJCWNvbnRhaW5lcnBhdGggPSBvcHRhcmc7CisJCQlicmVhazsKKwkJY2FzZSAndyc6CisJCQlsb2dmaWxlID0gc3RyZHVwKG9wdGFyZyk7CisJCQlwcmludGYoIndyaXRlIHRvIGZpbGUgJXNcbiIsIGxvZ2ZpbGUpOworCQkJd3JpdGVfZmlsZSA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAncic6CisJCQlyY3ZidWZzeiA9IGF0b2kob3B0YXJnKTsKKwkJCXByaW50ZigicmVjZWl2ZSBidWYgc2l6ZSAlZFxuIiwgcmN2YnVmc3opOworCQkJaWYgKHJjdmJ1ZnN6IDwgMCkKKwkJCQllcnIoMSwgIkludmFsaWQgcmN2IGJ1ZiBzaXplXG4iKTsKKwkJCWJyZWFrOworCQljYXNlICdtJzoKKwkJCXN0cm5jcHkoY3B1bWFzaywgb3B0YXJnLCBzaXplb2YoY3B1bWFzaykpOworCQkJY3B1bWFza1tzaXplb2YoY3B1bWFzaykgLSAxXSA9ICdcMCc7CisJCQltYXNrc2V0ID0gMTsKKwkJCXByaW50ZigiY3B1bWFzayAlcyBtYXNrc2V0ICVkXG4iLCBjcHVtYXNrLCBtYXNrc2V0KTsKKwkJCWJyZWFrOworCQljYXNlICd0JzoKKwkJCXRpZCA9IGF0b2kob3B0YXJnKTsKKwkJCWlmICghdGlkKQorCQkJCWVycigxLCAiSW52YWxpZCB0Z2lkXG4iKTsKKwkJCWNtZF90eXBlID0gVEFTS1NUQVRTX0NNRF9BVFRSX1RHSUQ7CisJCQlicmVhazsKKwkJY2FzZSAncCc6CisJCQl0aWQgPSBhdG9pKG9wdGFyZyk7CisJCQlpZiAoIXRpZCkKKwkJCQllcnIoMSwgIkludmFsaWQgcGlkXG4iKTsKKwkJCWNtZF90eXBlID0gVEFTS1NUQVRTX0NNRF9BVFRSX1BJRDsKKwkJCWJyZWFrOworCQljYXNlICdjJzoKKworCQkJLyogQmxvY2sgU0lHQ0hMRCBmb3Igc2lnd2FpdCgpIGxhdGVyICovCisJCQlpZiAoc2lnZW1wdHlzZXQoJnNpZ3NldCkgPT0gLTEpCisJCQkJZXJyKDEsICJGYWlsZWQgdG8gZW1wdHkgc2lnc2V0Iik7CisJCQlpZiAoc2lnYWRkc2V0KCZzaWdzZXQsIFNJR0NITEQpKQorCQkJCWVycigxLCAiRmFpbGVkIHRvIHNldCBzaWdjaGxkIGluIHNpZ3NldCIpOworCQkJc2lncHJvY21hc2soU0lHX0JMT0NLLCAmc2lnc2V0LCBOVUxMKTsKKworCQkJLyogZm9yay9leGVjIGEgY2hpbGQgKi8KKwkJCXRpZCA9IGZvcmsoKTsKKwkJCWlmICh0aWQgPCAwKQorCQkJCWVycigxLCAiRm9yayBmYWlsZWRcbiIpOworCQkJaWYgKHRpZCA9PSAwKQorCQkJCWlmIChleGVjdnAoYXJndltvcHRpbmQgLSAxXSwKKwkJCQkgICAgJmFyZ3Zbb3B0aW5kIC0gMV0pIDwgMCkKKwkJCQkJZXhpdCgtMSk7CisKKwkJCS8qIFNldCB0aGUgY29tbWFuZCB0eXBlIGFuZCBhdm9pZCBmdXJ0aGVyIHByb2Nlc3NpbmcgKi8KKwkJCWNtZF90eXBlID0gVEFTS1NUQVRTX0NNRF9BVFRSX1BJRDsKKwkJCWZvcmtpbmcgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ3YnOgorCQkJcHJpbnRmKCJkZWJ1ZyBvblxuIik7CisJCQlkYmcgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ2wnOgorCQkJcHJpbnRmKCJsaXN0ZW4gZm9yZXZlclxuIik7CisJCQlsb29wID0gMTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJdXNhZ2UoKTsKKwkJCWV4aXQoLTEpOworCQl9CisJfQorCisJaWYgKHdyaXRlX2ZpbGUpIHsKKwkJZmQgPSBvcGVuKGxvZ2ZpbGUsIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fVFJVTkMsCisJCQkgIFNfSVJVU1IgfCBTX0lXVVNSIHwgU19JUkdSUCB8IFNfSVJPVEgpOworCQlpZiAoZmQgPT0gLTEpIHsKKwkJCXBlcnJvcigiQ2Fubm90IG9wZW4gb3V0cHV0IGZpbGVcbiIpOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKworCWlmICgobmxfc2QgPSBjcmVhdGVfbmxfc29ja2V0KE5FVExJTktfR0VORVJJQykpIDwgMCkKKwkJZXJyKDEsICJlcnJvciBjcmVhdGluZyBOZXRsaW5rIHNvY2tldFxuIik7CisKKworCW15cGlkID0gZ2V0cGlkKCk7CisJaWQgPSBnZXRfZmFtaWx5X2lkKG5sX3NkKTsKKwlpZiAoIWlkKSB7CisJCWZwcmludGYoc3RkZXJyLCAiRXJyb3IgZ2V0dGluZyBmYW1pbHkgaWQsIGVycm5vICVkXG4iLCBlcnJubyk7CisJCWdvdG8gZXJyOworCX0KKwlQUklOVEYoImZhbWlseSBpZCAlZFxuIiwgaWQpOworCisJaWYgKG1hc2tzZXQpIHsKKwkJcmMgPSBzZW5kX2NtZChubF9zZCwgaWQsIG15cGlkLCBUQVNLU1RBVFNfQ01EX0dFVCwKKwkJCSAgICAgIFRBU0tTVEFUU19DTURfQVRUUl9SRUdJU1RFUl9DUFVNQVNLLAorCQkJICAgICAgJmNwdW1hc2ssIHN0cmxlbihjcHVtYXNrKSArIDEpOworCQlQUklOVEYoIlNlbnQgcmVnaXN0ZXIgY3B1bWFzaywgcmV0dmFsICVkXG4iLCByYyk7CisJCWlmIChyYyA8IDApIHsKKwkJCWZwcmludGYoc3RkZXJyLCAiZXJyb3Igc2VuZGluZyByZWdpc3RlciBjcHVtYXNrXG4iKTsKKwkJCWdvdG8gZXJyOworCQl9CisJfQorCisJaWYgKHRpZCAmJiBjb250YWluZXJzZXQpIHsKKwkJZnByaW50ZihzdGRlcnIsICJTZWxlY3QgZWl0aGVyIC10IG9yIC1DLCBub3QgYm90aFxuIik7CisJCWdvdG8gZXJyOworCX0KKworCS8qCisJICogSWYgd2UgZm9ya2VkIGEgY2hpbGQsIHdhaXQgZm9yIGl0IHRvIGV4aXQuIENhbm5vdCB1c2Ugd2FpdHBpZCgpCisJICogYXMgYWxsIHRoZSBkZWxpY2lvdXMgZGF0YSB3b3VsZCBiZSByZWFwZWQgYXMgcGFydCBvZiB0aGUgd2FpdAorCSAqLworCWlmICh0aWQgJiYgZm9ya2luZykgeworCQlpbnQgc2lnX3JlY2VpdmVkOworCQlzaWd3YWl0KCZzaWdzZXQsICZzaWdfcmVjZWl2ZWQpOworCX0KKworCWlmICh0aWQpIHsKKwkJcmMgPSBzZW5kX2NtZChubF9zZCwgaWQsIG15cGlkLCBUQVNLU1RBVFNfQ01EX0dFVCwKKwkJCSAgICAgIGNtZF90eXBlLCAmdGlkLCBzaXplb2YoX191MzIpKTsKKwkJUFJJTlRGKCJTZW50IHBpZC90Z2lkLCByZXR2YWwgJWRcbiIsIHJjKTsKKwkJaWYgKHJjIDwgMCkgeworCQkJZnByaW50ZihzdGRlcnIsICJlcnJvciBzZW5kaW5nIHRpZC90Z2lkIGNtZFxuIik7CisJCQlnb3RvIGRvbmU7CisJCX0KKwl9CisKKwlpZiAoY29udGFpbmVyc2V0KSB7CisJCWNmZCA9IG9wZW4oY29udGFpbmVycGF0aCwgT19SRE9OTFkpOworCQlpZiAoY2ZkIDwgMCkgeworCQkJcGVycm9yKCJlcnJvciBvcGVuaW5nIGNvbnRhaW5lciBmaWxlIik7CisJCQlnb3RvIGVycjsKKwkJfQorCQlyYyA9IHNlbmRfY21kKG5sX3NkLCBpZCwgbXlwaWQsIENHUk9VUFNUQVRTX0NNRF9HRVQsCisJCQkgICAgICBDR1JPVVBTVEFUU19DTURfQVRUUl9GRCwgJmNmZCwgc2l6ZW9mKF9fdTMyKSk7CisJCWlmIChyYyA8IDApIHsKKwkJCXBlcnJvcigiZXJyb3Igc2VuZGluZyBjZ3JvdXBzdGF0cyBjb21tYW5kIik7CisJCQlnb3RvIGVycjsKKwkJfQorCX0KKwlpZiAoIW1hc2tzZXQgJiYgIXRpZCAmJiAhY29udGFpbmVyc2V0KSB7CisJCXVzYWdlKCk7CisJCWdvdG8gZXJyOworCX0KKworCWRvIHsKKwkJcmVwX2xlbiA9IHJlY3Yobmxfc2QsICZtc2csIHNpemVvZihtc2cpLCAwKTsKKwkJUFJJTlRGKCJyZWNlaXZlZCAlZCBieXRlc1xuIiwgcmVwX2xlbik7CisKKwkJaWYgKHJlcF9sZW4gPCAwKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgIm5vbmZhdGFsIHJlcGx5IGVycm9yOiBlcnJubyAlZFxuIiwKKwkJCQllcnJubyk7CisJCQljb250aW51ZTsKKwkJfQorCQlpZiAobXNnLm4ubmxtc2dfdHlwZSA9PSBOTE1TR19FUlJPUiB8fAorCQkgICAgIU5MTVNHX09LKCgmbXNnLm4pLCByZXBfbGVuKSkgeworCQkJc3RydWN0IG5sbXNnZXJyICplcnIgPSBOTE1TR19EQVRBKCZtc2cpOworCQkJZnByaW50ZihzdGRlcnIsICJmYXRhbCByZXBseSBlcnJvciwgIGVycm5vICVkXG4iLAorCQkJCWVyci0+ZXJyb3IpOworCQkJZ290byBkb25lOworCQl9CisKKwkJUFJJTlRGKCJubG1zZ2hkciBzaXplPSV6dSwgbmxtc2dfbGVuPSVkLCByZXBfbGVuPSVkXG4iLAorCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBubG1zZ2hkciksIG1zZy5uLm5sbXNnX2xlbiwgcmVwX2xlbik7CisKKworCQlyZXBfbGVuID0gR0VOTE1TR19QQVlMT0FEKCZtc2cubik7CisKKwkJbmEgPSAoc3RydWN0IG5sYXR0ciAqKSBHRU5MTVNHX0RBVEEoJm1zZyk7CisJCWxlbiA9IDA7CisJCXdoaWxlIChsZW4gPCByZXBfbGVuKSB7CisJCQlsZW4gKz0gTkxBX0FMSUdOKG5hLT5ubGFfbGVuKTsKKwkJCXN3aXRjaCAobmEtPm5sYV90eXBlKSB7CisJCQljYXNlIFRBU0tTVEFUU19UWVBFX0FHR1JfVEdJRDoKKwkJCQkvKiBGYWxsIHRocm91Z2ggKi8KKwkJCWNhc2UgVEFTS1NUQVRTX1RZUEVfQUdHUl9QSUQ6CisJCQkJYWdncl9sZW4gPSBOTEFfUEFZTE9BRChuYS0+bmxhX2xlbik7CisJCQkJbGVuMiA9IDA7CisJCQkJLyogRm9yIG5lc3RlZCBhdHRyaWJ1dGVzLCBuYSBmb2xsb3dzICovCisJCQkJbmEgPSAoc3RydWN0IG5sYXR0ciAqKSBOTEFfREFUQShuYSk7CisJCQkJZG9uZSA9IDA7CisJCQkJd2hpbGUgKGxlbjIgPCBhZ2dyX2xlbikgeworCQkJCQlzd2l0Y2ggKG5hLT5ubGFfdHlwZSkgeworCQkJCQljYXNlIFRBU0tTVEFUU19UWVBFX1BJRDoKKwkJCQkJCXJ0aWQgPSAqKGludCAqKSBOTEFfREFUQShuYSk7CisJCQkJCQlpZiAocHJpbnRfZGVsYXlzKQorCQkJCQkJCXByaW50ZigiUElEXHQlZFxuIiwgcnRpZCk7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBUQVNLU1RBVFNfVFlQRV9UR0lEOgorCQkJCQkJcnRpZCA9ICooaW50ICopIE5MQV9EQVRBKG5hKTsKKwkJCQkJCWlmIChwcmludF9kZWxheXMpCisJCQkJCQkJcHJpbnRmKCJUR0lEXHQlZFxuIiwgcnRpZCk7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBUQVNLU1RBVFNfVFlQRV9TVEFUUzoKKwkJCQkJCWNvdW50Kys7CisJCQkJCQlpZiAocHJpbnRfZGVsYXlzKQorCQkJCQkJCXByaW50X2RlbGF5YWNjdCgoc3RydWN0IHRhc2tzdGF0cyAqKSBOTEFfREFUQShuYSkpOworCQkJCQkJaWYgKHByaW50X2lvX2FjY291bnRpbmcpCisJCQkJCQkJcHJpbnRfaW9hY2N0KChzdHJ1Y3QgdGFza3N0YXRzICopIE5MQV9EQVRBKG5hKSk7CisJCQkJCQlpZiAocHJpbnRfdGFza19jb250ZXh0X3N3aXRjaF9jb3VudHMpCisJCQkJCQkJdGFza19jb250ZXh0X3N3aXRjaF9jb3VudHMoKHN0cnVjdCB0YXNrc3RhdHMgKikgTkxBX0RBVEEobmEpKTsKKwkJCQkJCWlmIChmZCkgeworCQkJCQkJCWlmICh3cml0ZShmZCwgTkxBX0RBVEEobmEpLCBuYS0+bmxhX2xlbikgPCAwKSB7CisJCQkJCQkJCWVycigxLCJ3cml0ZSBlcnJvclxuIik7CisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQkJaWYgKCFsb29wKQorCQkJCQkJCWdvdG8gZG9uZTsKKwkJCQkJCWJyZWFrOworCQkJCQlkZWZhdWx0OgorCQkJCQkJZnByaW50ZihzdGRlcnIsICJVbmtub3duIG5lc3RlZCIKKwkJCQkJCQkiIG5sYV90eXBlICVkXG4iLAorCQkJCQkJCW5hLT5ubGFfdHlwZSk7CisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJCQlsZW4yICs9IE5MQV9BTElHTihuYS0+bmxhX2xlbik7CisJCQkJCW5hID0gKHN0cnVjdCBubGF0dHIgKikgKChjaGFyICopIG5hICsgbGVuMik7CisJCQkJfQorCQkJCWJyZWFrOworCisJCQljYXNlIENHUk9VUFNUQVRTX1RZUEVfQ0dST1VQX1NUQVRTOgorCQkJCXByaW50X2Nncm91cHN0YXRzKE5MQV9EQVRBKG5hKSk7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWZwcmludGYoc3RkZXJyLCAiVW5rbm93biBubGFfdHlwZSAlZFxuIiwKKwkJCQkJbmEtPm5sYV90eXBlKTsKKwkJCWNhc2UgVEFTS1NUQVRTX1RZUEVfTlVMTDoKKwkJCQlicmVhazsKKwkJCX0KKwkJCW5hID0gKHN0cnVjdCBubGF0dHIgKikgKEdFTkxNU0dfREFUQSgmbXNnKSArIGxlbik7CisJCX0KKwl9IHdoaWxlIChsb29wKTsKK2RvbmU6CisJaWYgKG1hc2tzZXQpIHsKKwkJcmMgPSBzZW5kX2NtZChubF9zZCwgaWQsIG15cGlkLCBUQVNLU1RBVFNfQ01EX0dFVCwKKwkJCSAgICAgIFRBU0tTVEFUU19DTURfQVRUUl9ERVJFR0lTVEVSX0NQVU1BU0ssCisJCQkgICAgICAmY3B1bWFzaywgc3RybGVuKGNwdW1hc2spICsgMSk7CisJCXByaW50ZigiU2VudCBkZXJlZ2lzdGVyIG1hc2ssIHJldHZhbCAlZFxuIiwgcmMpOworCQlpZiAocmMgPCAwKQorCQkJZXJyKHJjLCAiZXJyb3Igc2VuZGluZyBkZXJlZ2lzdGVyIGNwdW1hc2tcbiIpOworCX0KK2VycjoKKwljbG9zZShubF9zZCk7CisJaWYgKGZkKQorCQljbG9zZShmZCk7CisJaWYgKGNmZCkKKwkJY2xvc2UoY2ZkKTsKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYWNjb3VudGluZy90YXNrc3RhdHMtc3RydWN0LnR4dCBiL0RvY3VtZW50YXRpb24vYWNjb3VudGluZy90YXNrc3RhdHMtc3RydWN0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzUxMmMwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hY2NvdW50aW5nL3Rhc2tzdGF0cy1zdHJ1Y3QudHh0CkBAIC0wLDAgKzEsMTgwIEBACitUaGUgc3RydWN0IHRhc2tzdGF0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBkb2N1bWVudCBjb250YWlucyBhbiBleHBsYW5hdGlvbiBvZiB0aGUgc3RydWN0IHRhc2tzdGF0cyBmaWVsZHMuCisKK1RoZXJlIGFyZSB0aHJlZSBkaWZmZXJlbnQgZ3JvdXBzIG9mIGZpZWxkcyBpbiB0aGUgc3RydWN0IHRhc2tzdGF0czoKKworMSkgQ29tbW9uIGFuZCBiYXNpYyBhY2NvdW50aW5nIGZpZWxkcworICAgIElmIENPTkZJR19UQVNLU1RBVFMgaXMgc2V0LCB0aGUgdGFza3N0YXRzIGludGVyZmFjZSBpcyBlbmFibGVkIGFuZAorICAgIHRoZSBjb21tb24gZmllbGRzIGFuZCBiYXNpYyBhY2NvdW50aW5nIGZpZWxkcyBhcmUgY29sbGVjdGVkIGZvcgorICAgIGRlbGl2ZXJ5IGF0IGRvX2V4aXQoKSBvZiBhIHRhc2suCisyKSBEZWxheSBhY2NvdW50aW5nIGZpZWxkcworICAgIFRoZXNlIGZpZWxkcyBhcmUgcGxhY2VkIGJldHdlZW4KKyAgICAvKiBEZWxheSBhY2NvdW50aW5nIGZpZWxkcyBzdGFydCAqLworICAgIGFuZAorICAgIC8qIERlbGF5IGFjY291bnRpbmcgZmllbGRzIGVuZCAqLworICAgIFRoZWlyIHZhbHVlcyBhcmUgY29sbGVjdGVkIGlmIENPTkZJR19UQVNLX0RFTEFZX0FDQ1QgaXMgc2V0LgorMykgRXh0ZW5kZWQgYWNjb3VudGluZyBmaWVsZHMKKyAgICBUaGVzZSBmaWVsZHMgYXJlIHBsYWNlZCBiZXR3ZWVuCisgICAgLyogRXh0ZW5kZWQgYWNjb3VudGluZyBmaWVsZHMgc3RhcnQgKi8KKyAgICBhbmQKKyAgICAvKiBFeHRlbmRlZCBhY2NvdW50aW5nIGZpZWxkcyBlbmQgKi8KKyAgICBUaGVpciB2YWx1ZXMgYXJlIGNvbGxlY3RlZCBpZiBDT05GSUdfVEFTS19YQUNDVCBpcyBzZXQuCisKKzQpIFBlci10YXNrIGFuZCBwZXItdGhyZWFkIGNvbnRleHQgc3dpdGNoIGNvdW50IHN0YXRpc3RpY3MKKworNSkgVGltZSBhY2NvdW50aW5nIGZvciBTTVQgbWFjaGluZXMKKworNikgRXh0ZW5kZWQgZGVsYXkgYWNjb3VudGluZyBmaWVsZHMgZm9yIG1lbW9yeSByZWNsYWltCisKK0Z1dHVyZSBleHRlbnNpb24gc2hvdWxkIGFkZCBmaWVsZHMgdG8gdGhlIGVuZCBvZiB0aGUgdGFza3N0YXRzIHN0cnVjdCwgYW5kCitzaG91bGQgbm90IGNoYW5nZSB0aGUgcmVsYXRpdmUgcG9zaXRpb24gb2YgZWFjaCBmaWVsZCB3aXRoaW4gdGhlIHN0cnVjdC4KKworCitzdHJ1Y3QgdGFza3N0YXRzIHsKKworMSkgQ29tbW9uIGFuZCBiYXNpYyBhY2NvdW50aW5nIGZpZWxkczoKKwkvKiBUaGUgdmVyc2lvbiBudW1iZXIgb2YgdGhpcyBzdHJ1Y3QuIFRoaXMgZmllbGQgaXMgYWx3YXlzIHNldCB0bworCSAqIFRBS1NUQVRTX1ZFUlNJT04sIHdoaWNoIGlzIGRlZmluZWQgaW4gPGxpbnV4L3Rhc2tzdGF0cy5oPi4KKwkgKiBFYWNoIHRpbWUgdGhlIHN0cnVjdCBpcyBjaGFuZ2VkLCB0aGUgdmFsdWUgc2hvdWxkIGJlIGluY3JlbWVudGVkLgorCSAqLworCV9fdTE2CXZlcnNpb247CisKKyAgCS8qIFRoZSBleGl0IGNvZGUgb2YgYSB0YXNrLiAqLworCV9fdTMyCWFjX2V4aXRjb2RlOwkJLyogRXhpdCBzdGF0dXMgKi8KKworICAJLyogVGhlIGFjY291bnRpbmcgZmxhZ3Mgb2YgYSB0YXNrIGFzIGRlZmluZWQgaW4gPGxpbnV4L2FjY3QuaD4KKwkgKiBEZWZpbmVkIHZhbHVlcyBhcmUgQUZPUkssIEFTVSwgQUNPTVBBVCwgQUNPUkUsIGFuZCBBWFNJRy4KKwkgKi8KKwlfX3U4CWFjX2ZsYWc7CQkvKiBSZWNvcmQgZmxhZ3MgKi8KKworICAJLyogVGhlIHZhbHVlIG9mIHRhc2tfbmljZSgpIG9mIGEgdGFzay4gKi8KKwlfX3U4CWFjX25pY2U7CQkvKiB0YXNrX25pY2UgKi8KKworICAJLyogVGhlIG5hbWUgb2YgdGhlIGNvbW1hbmQgdGhhdCBzdGFydGVkIHRoaXMgdGFzay4gKi8KKwljaGFyCWFjX2NvbW1bVFNfQ09NTV9MRU5dOwkvKiBDb21tYW5kIG5hbWUgKi8KKworICAJLyogVGhlIHNjaGVkdWxpbmcgZGlzY2lwbGluZSBhcyBzZXQgaW4gdGFzay0+cG9saWN5IGZpZWxkLiAqLworCV9fdTgJYWNfc2NoZWQ7CQkvKiBTY2hlZHVsaW5nIGRpc2NpcGxpbmUgKi8KKworCV9fdTgJYWNfcGFkWzNdOworCV9fdTMyCWFjX3VpZDsJCQkvKiBVc2VyIElEICovCisJX191MzIJYWNfZ2lkOwkJCS8qIEdyb3VwIElEICovCisJX191MzIJYWNfcGlkOwkJCS8qIFByb2Nlc3MgSUQgKi8KKwlfX3UzMglhY19wcGlkOwkJLyogUGFyZW50IHByb2Nlc3MgSUQgKi8KKworICAJLyogVGhlIHRpbWUgd2hlbiBhIHRhc2sgYmVnaW5zLCBpbiBbc2Vjc10gc2luY2UgMTk3MC4gKi8KKwlfX3UzMglhY19idGltZTsJCS8qIEJlZ2luIHRpbWUgW3NlYyBzaW5jZSAxOTcwXSAqLworCisgIAkvKiBUaGUgZWxhcHNlZCB0aW1lIG9mIGEgdGFzaywgaW4gW3VzZWNdLiAqLworCV9fdTY0CWFjX2V0aW1lOwkJLyogRWxhcHNlZCB0aW1lIFt1c2VjXSAqLworCisgIAkvKiBUaGUgdXNlciBDUFUgdGltZSBvZiBhIHRhc2ssIGluIFt1c2VjXS4gKi8KKwlfX3U2NAlhY191dGltZTsJCS8qIFVzZXIgQ1BVIHRpbWUgW3VzZWNdICovCisKKyAgCS8qIFRoZSBzeXN0ZW0gQ1BVIHRpbWUgb2YgYSB0YXNrLCBpbiBbdXNlY10uICovCisJX191NjQJYWNfc3RpbWU7CQkvKiBTeXN0ZW0gQ1BVIHRpbWUgW3VzZWNdICovCisKKyAgCS8qIFRoZSBtaW5vciBwYWdlIGZhdWx0IGNvdW50IG9mIGEgdGFzaywgYXMgc2V0IGluIHRhc2stPm1pbl9mbHQuICovCisJX191NjQJYWNfbWluZmx0OwkJLyogTWlub3IgUGFnZSBGYXVsdCBDb3VudCAqLworCisJLyogVGhlIG1ham9yIHBhZ2UgZmF1bHQgY291bnQgb2YgYSB0YXNrLCBhcyBzZXQgaW4gdGFzay0+bWFqX2ZsdC4gKi8KKwlfX3U2NAlhY19tYWpmbHQ7CQkvKiBNYWpvciBQYWdlIEZhdWx0IENvdW50ICovCisKKworMikgRGVsYXkgYWNjb3VudGluZyBmaWVsZHM6CisJLyogRGVsYXkgYWNjb3VudGluZyBmaWVsZHMgc3RhcnQKKwkgKgorCSAqIEFsbCB2YWx1ZXMsIHVudGlsIHRoZSBjb21tZW50ICJEZWxheSBhY2NvdW50aW5nIGZpZWxkcyBlbmQiIGFyZQorCSAqIGF2YWlsYWJsZSBvbmx5IGlmIGRlbGF5IGFjY291bnRpbmcgaXMgZW5hYmxlZCwgZXZlbiB0aG91Z2ggdGhlIGxhc3QKKwkgKiBmZXcgZmllbGRzIGFyZSBub3QgZGVsYXlzCisJICoKKwkgKiB4eHhfY291bnQgaXMgdGhlIG51bWJlciBvZiBkZWxheSB2YWx1ZXMgcmVjb3JkZWQKKwkgKiB4eHhfZGVsYXlfdG90YWwgaXMgdGhlIGNvcnJlc3BvbmRpbmcgY3VtdWxhdGl2ZSBkZWxheSBpbiBuYW5vc2Vjb25kcworCSAqCisJICogeHh4X2RlbGF5X3RvdGFsIHdyYXBzIGFyb3VuZCB0byB6ZXJvIG9uIG92ZXJmbG93CisJICogeHh4X2NvdW50IGluY3JlbWVudGVkIHJlZ2FyZGxlc3Mgb2Ygb3ZlcmZsb3cKKwkgKi8KKworCS8qIERlbGF5IHdhaXRpbmcgZm9yIGNwdSwgd2hpbGUgcnVubmFibGUKKwkgKiBjb3VudCwgZGVsYXlfdG90YWwgTk9UIHVwZGF0ZWQgYXRvbWljYWxseQorCSAqLworCV9fdTY0CWNwdV9jb3VudDsKKwlfX3U2NAljcHVfZGVsYXlfdG90YWw7CisKKwkvKiBGb2xsb3dpbmcgZm91ciBmaWVsZHMgYXRvbWljYWxseSB1cGRhdGVkIHVzaW5nIHRhc2stPmRlbGF5cy0+bG9jayAqLworCisJLyogRGVsYXkgd2FpdGluZyBmb3Igc3luY2hyb25vdXMgYmxvY2sgSS9PIHRvIGNvbXBsZXRlCisJICogZG9lcyBub3QgYWNjb3VudCBmb3IgZGVsYXlzIGluIEkvTyBzdWJtaXNzaW9uCisJICovCisJX191NjQJYmxraW9fY291bnQ7CisJX191NjQJYmxraW9fZGVsYXlfdG90YWw7CisKKwkvKiBEZWxheSB3YWl0aW5nIGZvciBwYWdlIGZhdWx0IEkvTyAoc3dhcCBpbiBvbmx5KSAqLworCV9fdTY0CXN3YXBpbl9jb3VudDsKKwlfX3U2NAlzd2FwaW5fZGVsYXlfdG90YWw7CisKKwkvKiBjcHUgIndhbGwtY2xvY2siIHJ1bm5pbmcgdGltZQorCSAqIE9uIHNvbWUgYXJjaGl0ZWN0dXJlcywgdmFsdWUgd2lsbCBhZGp1c3QgZm9yIGNwdSB0aW1lIHN0b2xlbgorCSAqIGZyb20gdGhlIGtlcm5lbCBpbiBpbnZvbHVudGFyeSB3YWl0cyBkdWUgdG8gdmlydHVhbGl6YXRpb24uCisJICogVmFsdWUgaXMgY3VtdWxhdGl2ZSwgaW4gbmFub3NlY29uZHMsIHdpdGhvdXQgYSBjb3JyZXNwb25kaW5nIGNvdW50CisJICogYW5kIHdyYXBzIGFyb3VuZCB0byB6ZXJvIHNpbGVudGx5IG9uIG92ZXJmbG93CisJICovCisJX191NjQJY3B1X3J1bl9yZWFsX3RvdGFsOworCisJLyogY3B1ICJ2aXJ0dWFsIiBydW5uaW5nIHRpbWUKKwkgKiBVc2VzIHRpbWUgaW50ZXJ2YWxzIHNlZW4gYnkgdGhlIGtlcm5lbCBpLmUuIG5vIGFkanVzdG1lbnQKKwkgKiBmb3Iga2VybmVsJ3MgaW52b2x1bnRhcnkgd2FpdHMgZHVlIHRvIHZpcnR1YWxpemF0aW9uLgorCSAqIFZhbHVlIGlzIGN1bXVsYXRpdmUsIGluIG5hbm9zZWNvbmRzLCB3aXRob3V0IGEgY29ycmVzcG9uZGluZyBjb3VudAorCSAqIGFuZCB3cmFwcyBhcm91bmQgdG8gemVybyBzaWxlbnRseSBvbiBvdmVyZmxvdworCSAqLworCV9fdTY0CWNwdV9ydW5fdmlydHVhbF90b3RhbDsKKwkvKiBEZWxheSBhY2NvdW50aW5nIGZpZWxkcyBlbmQgKi8KKwkvKiB2ZXJzaW9uIDEgZW5kcyBoZXJlICovCisKKworMykgRXh0ZW5kZWQgYWNjb3VudGluZyBmaWVsZHMKKwkvKiBFeHRlbmRlZCBhY2NvdW50aW5nIGZpZWxkcyBzdGFydCAqLworCisJLyogQWNjdW11bGF0ZWQgUlNTIHVzYWdlIGluIGR1cmF0aW9uIG9mIGEgdGFzaywgaW4gTUJ5dGVzLXVzZWNzLgorCSAqIFRoZSBjdXJyZW50IHJzcyB1c2FnZSBpcyBhZGRlZCB0byB0aGlzIGNvdW50ZXIgZXZlcnkgdGltZQorCSAqIGEgdGljayBpcyBjaGFyZ2VkIHRvIGEgdGFzaydzIHN5c3RlbSB0aW1lLiBTbywgYXQgdGhlIGVuZCB3ZQorCSAqIHdpbGwgaGF2ZSBtZW1vcnkgdXNhZ2UgbXVsdGlwbGllZCBieSBzeXN0ZW0gdGltZS4gVGh1cyBhbgorCSAqIGF2ZXJhZ2UgdXNhZ2UgcGVyIHN5c3RlbSB0aW1lIHVuaXQgY2FuIGJlIGNhbGN1bGF0ZWQuCisJICovCisJX191NjQJY29yZW1lbTsJCS8qIGFjY3VtdWxhdGVkIFJTUyB1c2FnZSBpbiBNQi11c2VjICovCisKKyAgCS8qIEFjY3VtdWxhdGVkIHZpcnR1YWwgbWVtb3J5IHVzYWdlIGluIGR1cmF0aW9uIG9mIGEgdGFzay4KKwkgKiBTYW1lIGFzIGFjY3RfcnNzX21lbTEgYWJvdmUgZXhjZXB0IHRoYXQgd2Uga2VlcCB0cmFjayBvZiBWTSB1c2FnZS4KKwkgKi8KKwlfX3U2NAl2aXJ0bWVtOwkJLyogYWNjdW11bGF0ZWQgVk0gdXNhZ2UgaW4gTUItdXNlYyAqLworCisgIAkvKiBIaWdoIHdhdGVybWFyayBvZiBSU1MgdXNhZ2UgaW4gZHVyYXRpb24gb2YgYSB0YXNrLCBpbiBLQnl0ZXMuICovCisJX191NjQJaGl3YXRlcl9yc3M7CQkvKiBIaWdoLXdhdGVybWFyayBvZiBSU1MgdXNhZ2UgKi8KKworICAJLyogSGlnaCB3YXRlcm1hcmsgb2YgVk0gIHVzYWdlIGluIGR1cmF0aW9uIG9mIGEgdGFzaywgaW4gS0J5dGVzLiAqLworCV9fdTY0CWhpd2F0ZXJfdm07CQkvKiBIaWdoLXdhdGVyIHZpcnR1YWwgbWVtb3J5IHVzYWdlICovCisKKwkvKiBUaGUgZm9sbG93aW5nIGZvdXIgZmllbGRzIGFyZSBJL08gc3RhdGlzdGljcyBvZiBhIHRhc2suICovCisJX191NjQJcmVhZF9jaGFyOwkJLyogYnl0ZXMgcmVhZCAqLworCV9fdTY0CXdyaXRlX2NoYXI7CQkvKiBieXRlcyB3cml0dGVuICovCisJX191NjQJcmVhZF9zeXNjYWxsczsJCS8qIHJlYWQgc3lzY2FsbHMgKi8KKwlfX3U2NAl3cml0ZV9zeXNjYWxsczsJCS8qIHdyaXRlIHN5c2NhbGxzICovCisKKwkvKiBFeHRlbmRlZCBhY2NvdW50aW5nIGZpZWxkcyBlbmQgKi8KKworNCkgUGVyLXRhc2sgYW5kIHBlci10aHJlYWQgc3RhdGlzdGljcworCV9fdTY0CW52Y3N3OwkJCS8qIENvbnRleHQgdm9sdW50YXJ5IHN3aXRjaCBjb3VudGVyICovCisJX191NjQJbml2Y3N3OwkJCS8qIENvbnRleHQgaW52b2x1bnRhcnkgc3dpdGNoIGNvdW50ZXIgKi8KKworNSkgVGltZSBhY2NvdW50aW5nIGZvciBTTVQgbWFjaGluZXMKKwlfX3U2NAlhY191dGltZXNjYWxlZDsJCS8qIHV0aW1lIHNjYWxlZCBvbiBmcmVxdWVuY3kgZXRjICovCisJX191NjQJYWNfc3RpbWVzY2FsZWQ7CQkvKiBzdGltZSBzY2FsZWQgb24gZnJlcXVlbmN5IGV0YyAqLworCV9fdTY0CWNwdV9zY2FsZWRfcnVuX3JlYWxfdG90YWw7IC8qIHNjYWxlZCBjcHVfcnVuX3JlYWxfdG90YWwgKi8KKworNikgRXh0ZW5kZWQgZGVsYXkgYWNjb3VudGluZyBmaWVsZHMgZm9yIG1lbW9yeSByZWNsYWltCisJLyogRGVsYXkgd2FpdGluZyBmb3IgbWVtb3J5IHJlY2xhaW0gKi8KKwlfX3U2NAlmcmVlcGFnZXNfY291bnQ7CisJX191NjQJZnJlZXBhZ2VzX2RlbGF5X3RvdGFsOworfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hY2NvdW50aW5nL3Rhc2tzdGF0cy50eHQgYi9Eb2N1bWVudGF0aW9uL2FjY291bnRpbmcvdGFza3N0YXRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjA2YjczCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hY2NvdW50aW5nL3Rhc2tzdGF0cy50eHQKQEAgLTAsMCArMSwxODEgQEAKK1Blci10YXNrIHN0YXRpc3RpY3MgaW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK1Rhc2tzdGF0cyBpcyBhIG5ldGxpbmstYmFzZWQgaW50ZXJmYWNlIGZvciBzZW5kaW5nIHBlci10YXNrIGFuZAorcGVyLXByb2Nlc3Mgc3RhdGlzdGljcyBmcm9tIHRoZSBrZXJuZWwgdG8gdXNlcnNwYWNlLgorCitUYXNrc3RhdHMgd2FzIGRlc2lnbmVkIGZvciB0aGUgZm9sbG93aW5nIGJlbmVmaXRzOgorCistIGVmZmljaWVudGx5IHByb3ZpZGUgc3RhdGlzdGljcyBkdXJpbmcgbGlmZXRpbWUgb2YgYSB0YXNrIGFuZCBvbiBpdHMgZXhpdAorLSB1bmlmaWVkIGludGVyZmFjZSBmb3IgbXVsdGlwbGUgYWNjb3VudGluZyBzdWJzeXN0ZW1zCistIGV4dGVuc2liaWxpdHkgZm9yIHVzZSBieSBmdXR1cmUgYWNjb3VudGluZyBwYXRjaGVzCisKK1Rlcm1pbm9sb2d5CistLS0tLS0tLS0tLQorCisicGlkIiwgInRpZCIgYW5kICJ0YXNrIiBhcmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgYW5kIHJlZmVyIHRvIHRoZSBzdGFuZGFyZAorTGludXggdGFzayBkZWZpbmVkIGJ5IHN0cnVjdCB0YXNrX3N0cnVjdC4gIHBlci1waWQgc3RhdHMgYXJlIHRoZSBzYW1lIGFzCitwZXItdGFzayBzdGF0cy4KKworInRnaWQiLCAicHJvY2VzcyIgYW5kICJ0aHJlYWQgZ3JvdXAiIGFyZSB1c2VkIGludGVyY2hhbmdlYWJseSBhbmQgcmVmZXIgdG8gdGhlCit0YXNrcyB0aGF0IHNoYXJlIGFuIG1tX3N0cnVjdCBpLmUuIHRoZSB0cmFkaXRpb25hbCBVbml4IHByb2Nlc3MuIERlc3BpdGUgdGhlCit1c2Ugb2YgdGdpZCwgdGhlcmUgaXMgbm8gc3BlY2lhbCB0cmVhdG1lbnQgZm9yIHRoZSB0YXNrIHRoYXQgaXMgdGhyZWFkIGdyb3VwCitsZWFkZXIgLSBhIHByb2Nlc3MgaXMgZGVlbWVkIGFsaXZlIGFzIGxvbmcgYXMgaXQgaGFzIGFueSB0YXNrIGJlbG9uZ2luZyB0byBpdC4KKworVXNhZ2UKKy0tLS0tCisKK1RvIGdldCBzdGF0aXN0aWNzIGR1cmluZyBhIHRhc2sncyBsaWZldGltZSwgdXNlcnNwYWNlIG9wZW5zIGEgdW5pY2FzdCBuZXRsaW5rCitzb2NrZXQgKE5FVExJTktfR0VORVJJQyBmYW1pbHkpIGFuZCBzZW5kcyBjb21tYW5kcyBzcGVjaWZ5aW5nIGEgcGlkIG9yIGEgdGdpZC4KK1RoZSByZXNwb25zZSBjb250YWlucyBzdGF0aXN0aWNzIGZvciBhIHRhc2sgKGlmIHBpZCBpcyBzcGVjaWZpZWQpIG9yIHRoZSBzdW0gb2YKK3N0YXRpc3RpY3MgZm9yIGFsbCB0YXNrcyBvZiB0aGUgcHJvY2VzcyAoaWYgdGdpZCBpcyBzcGVjaWZpZWQpLgorCitUbyBvYnRhaW4gc3RhdGlzdGljcyBmb3IgdGFza3Mgd2hpY2ggYXJlIGV4aXRpbmcsIHRoZSB1c2Vyc3BhY2UgbGlzdGVuZXIKK3NlbmRzIGEgcmVnaXN0ZXIgY29tbWFuZCBhbmQgc3BlY2lmaWVzIGEgY3B1bWFzay4gV2hlbmV2ZXIgYSB0YXNrIGV4aXRzIG9uCitvbmUgb2YgdGhlIGNwdXMgaW4gdGhlIGNwdW1hc2ssIGl0cyBwZXItcGlkIHN0YXRpc3RpY3MgYXJlIHNlbnQgdG8gdGhlCityZWdpc3RlcmVkIGxpc3RlbmVyLiBVc2luZyBjcHVtYXNrcyBhbGxvd3MgdGhlIGRhdGEgcmVjZWl2ZWQgYnkgb25lIGxpc3RlbmVyCit0byBiZSBsaW1pdGVkIGFuZCBhc3Npc3RzIGluIGZsb3cgY29udHJvbCBvdmVyIHRoZSBuZXRsaW5rIGludGVyZmFjZSBhbmQgaXMKK2V4cGxhaW5lZCBpbiBtb3JlIGRldGFpbCBiZWxvdy4KKworSWYgdGhlIGV4aXRpbmcgdGFzayBpcyB0aGUgbGFzdCB0aHJlYWQgZXhpdGluZyBpdHMgdGhyZWFkIGdyb3VwLAorYW4gYWRkaXRpb25hbCByZWNvcmQgY29udGFpbmluZyB0aGUgcGVyLXRnaWQgc3RhdHMgaXMgYWxzbyBzZW50IHRvIHVzZXJzcGFjZS4KK1RoZSBsYXR0ZXIgY29udGFpbnMgdGhlIHN1bSBvZiBwZXItcGlkIHN0YXRzIGZvciBhbGwgdGhyZWFkcyBpbiB0aGUgdGhyZWFkCitncm91cCwgYm90aCBwYXN0IGFuZCBwcmVzZW50LgorCitnZXRkZWxheXMuYyBpcyBhIHNpbXBsZSB1dGlsaXR5IGRlbW9uc3RyYXRpbmcgdXNhZ2Ugb2YgdGhlIHRhc2tzdGF0cyBpbnRlcmZhY2UKK2ZvciByZXBvcnRpbmcgZGVsYXkgYWNjb3VudGluZyBzdGF0aXN0aWNzLiBVc2VycyBjYW4gcmVnaXN0ZXIgY3B1bWFza3MsCitzZW5kIGNvbW1hbmRzIGFuZCBwcm9jZXNzIHJlc3BvbnNlcywgbGlzdGVuIGZvciBwZXItdGlkL3RnaWQgZXhpdCBkYXRhLAord3JpdGUgdGhlIGRhdGEgcmVjZWl2ZWQgdG8gYSBmaWxlIGFuZCBkbyBiYXNpYyBmbG93IGNvbnRyb2wgYnkgaW5jcmVhc2luZworcmVjZWl2ZSBidWZmZXIgc2l6ZXMuCisKK0ludGVyZmFjZQorLS0tLS0tLS0tCisKK1RoZSB1c2VyLWtlcm5lbCBpbnRlcmZhY2UgaXMgZW5jYXBzdWxhdGVkIGluIGluY2x1ZGUvbGludXgvdGFza3N0YXRzLmgKKworVG8gYXZvaWQgdGhpcyBkb2N1bWVudGF0aW9uIGJlY29taW5nIG9ic29sZXRlIGFzIHRoZSBpbnRlcmZhY2UgZXZvbHZlcywgb25seQorYW4gb3V0bGluZSBvZiB0aGUgY3VycmVudCB2ZXJzaW9uIGlzIGdpdmVuLiB0YXNrc3RhdHMuaCBhbHdheXMgb3ZlcnJpZGVzIHRoZQorZGVzY3JpcHRpb24gaGVyZS4KKworc3RydWN0IHRhc2tzdGF0cyBpcyB0aGUgY29tbW9uIGFjY291bnRpbmcgc3RydWN0dXJlIGZvciBib3RoIHBlci1waWQgYW5kCitwZXItdGdpZCBkYXRhLiBJdCBpcyB2ZXJzaW9uZWQgYW5kIGNhbiBiZSBleHRlbmRlZCBieSBlYWNoIGFjY291bnRpbmcgc3Vic3lzdGVtCit0aGF0IGlzIGFkZGVkIHRvIHRoZSBrZXJuZWwuIFRoZSBmaWVsZHMgYW5kIHRoZWlyIHNlbWFudGljcyBhcmUgZGVmaW5lZCBpbiB0aGUKK3Rhc2tzdGF0cy5oIGZpbGUuCisKK1RoZSBkYXRhIGV4Y2hhbmdlZCBiZXR3ZWVuIHVzZXIgYW5kIGtlcm5lbCBzcGFjZSBpcyBhIG5ldGxpbmsgbWVzc2FnZSBiZWxvbmdpbmcKK3RvIHRoZSBORVRMSU5LX0dFTkVSSUMgZmFtaWx5IGFuZCB1c2luZyB0aGUgbmV0bGluayBhdHRyaWJ1dGVzIGludGVyZmFjZS4KK1RoZSBtZXNzYWdlcyBhcmUgaW4gdGhlIGZvcm1hdAorCisgICAgKy0tLS0tLS0tLS0rLSAtIC0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKworICAgIHwgbmxtc2doZHIgfCBQYWQgfCAgZ2VubG1zZ2hkciB8IHRhc2tzdGF0cyBwYXlsb2FkIHwKKyAgICArLS0tLS0tLS0tLSstIC0gLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKworVGhlIHRhc2tzdGF0cyBwYXlsb2FkIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nIHRocmVlIGtpbmRzOgorCisxLiBDb21tYW5kczogU2VudCBmcm9tIHVzZXIgdG8ga2VybmVsLiBDb21tYW5kcyB0byBnZXQgZGF0YSBvbgorYSBwaWQvdGdpZCBjb25zaXN0IG9mIG9uZSBhdHRyaWJ1dGUsIG9mIHR5cGUgVEFTS1NUQVRTX0NNRF9BVFRSX1BJRC9UR0lELAorY29udGFpbmluZyBhIHUzMiBwaWQgb3IgdGdpZCBpbiB0aGUgYXR0cmlidXRlIHBheWxvYWQuIFRoZSBwaWQvdGdpZCBkZW5vdGVzCit0aGUgdGFzay9wcm9jZXNzIGZvciB3aGljaCB1c2Vyc3BhY2Ugd2FudHMgc3RhdGlzdGljcy4KKworQ29tbWFuZHMgdG8gcmVnaXN0ZXIvZGVyZWdpc3RlciBpbnRlcmVzdCBpbiBleGl0IGRhdGEgZnJvbSBhIHNldCBvZiBjcHVzCitjb25zaXN0IG9mIG9uZSBhdHRyaWJ1dGUsIG9mIHR5cGUKK1RBU0tTVEFUU19DTURfQVRUUl9SRUdJU1RFUi9ERVJFR0lTVEVSX0NQVU1BU0sgYW5kIGNvbnRhaW4gYSBjcHVtYXNrIGluIHRoZQorYXR0cmlidXRlIHBheWxvYWQuIFRoZSBjcHVtYXNrIGlzIHNwZWNpZmllZCBhcyBhbiBhc2NpaSBzdHJpbmcgb2YKK2NvbW1hLXNlcGFyYXRlZCBjcHUgcmFuZ2VzIGUuZy4gdG8gbGlzdGVuIHRvIGV4aXQgZGF0YSBmcm9tIGNwdXMgMSwyLDMsNSw3LDgKK3RoZSBjcHVtYXNrIHdvdWxkIGJlICIxLTMsNSw3LTgiLiBJZiB1c2Vyc3BhY2UgZm9yZ2V0cyB0byBkZXJlZ2lzdGVyIGludGVyZXN0CitpbiBjcHVzIGJlZm9yZSBjbG9zaW5nIHRoZSBsaXN0ZW5pbmcgc29ja2V0LCB0aGUga2VybmVsIGNsZWFucyB1cCBpdHMgaW50ZXJlc3QKK3NldCBvdmVyIHRpbWUuIEhvd2V2ZXIsIGZvciB0aGUgc2FrZSBvZiBlZmZpY2llbmN5LCBhbiBleHBsaWNpdCBkZXJlZ2lzdHJhdGlvbgoraXMgYWR2aXNhYmxlLgorCisyLiBSZXNwb25zZSBmb3IgYSBjb21tYW5kOiBzZW50IGZyb20gdGhlIGtlcm5lbCBpbiByZXNwb25zZSB0byBhIHVzZXJzcGFjZQorY29tbWFuZC4gVGhlIHBheWxvYWQgaXMgYSBzZXJpZXMgb2YgdGhyZWUgYXR0cmlidXRlcyBvZiB0eXBlOgorCithKSBUQVNLU1RBVFNfVFlQRV9BR0dSX1BJRC9UR0lEIDogYXR0cmlidXRlIGNvbnRhaW5pbmcgbm8gcGF5bG9hZCBidXQgaW5kaWNhdGVzCithIHBpZC90Z2lkIHdpbGwgYmUgZm9sbG93ZWQgYnkgc29tZSBzdGF0cy4KKworYikgVEFTS1NUQVRTX1RZUEVfUElEL1RHSUQ6IGF0dHJpYnV0ZSB3aG9zZSBwYXlsb2FkIGlzIHRoZSBwaWQvdGdpZCB3aG9zZSBzdGF0cworYXJlIGJlaW5nIHJldHVybmVkLgorCitjKSBUQVNLU1RBVFNfVFlQRV9TVEFUUzogYXR0cmlidXRlIHdpdGggYSBzdHJ1Y3QgdGFza3N0YXRzIGFzIHBheWxvYWQuIFRoZQorc2FtZSBzdHJ1Y3R1cmUgaXMgdXNlZCBmb3IgYm90aCBwZXItcGlkIGFuZCBwZXItdGdpZCBzdGF0cy4KKworMy4gTmV3IG1lc3NhZ2Ugc2VudCBieSBrZXJuZWwgd2hlbmV2ZXIgYSB0YXNrIGV4aXRzLiBUaGUgcGF5bG9hZCBjb25zaXN0cyBvZiBhCisgICBzZXJpZXMgb2YgYXR0cmlidXRlcyBvZiB0aGUgZm9sbG93aW5nIHR5cGU6CisKK2EpIFRBU0tTVEFUU19UWVBFX0FHR1JfUElEOiBpbmRpY2F0ZXMgbmV4dCB0d28gYXR0cmlidXRlcyB3aWxsIGJlIHBpZCtzdGF0cworYikgVEFTS1NUQVRTX1RZUEVfUElEOiBjb250YWlucyBleGl0aW5nIHRhc2sncyBwaWQKK2MpIFRBU0tTVEFUU19UWVBFX1NUQVRTOiBjb250YWlucyB0aGUgZXhpdGluZyB0YXNrJ3MgcGVyLXBpZCBzdGF0cworZCkgVEFTS1NUQVRTX1RZUEVfQUdHUl9UR0lEOiBpbmRpY2F0ZXMgbmV4dCB0d28gYXR0cmlidXRlcyB3aWxsIGJlIHRnaWQrc3RhdHMKK2UpIFRBU0tTVEFUU19UWVBFX1RHSUQ6IGNvbnRhaW5zIHRnaWQgb2YgcHJvY2VzcyB0byB3aGljaCB0YXNrIGJlbG9uZ3MKK2YpIFRBU0tTVEFUU19UWVBFX1NUQVRTOiBjb250YWlucyB0aGUgcGVyLXRnaWQgc3RhdHMgZm9yIGV4aXRpbmcgdGFzaydzIHByb2Nlc3MKKworCitwZXItdGdpZCBzdGF0cworLS0tLS0tLS0tLS0tLS0KKworVGFza3N0YXRzIHByb3ZpZGVzIHBlci1wcm9jZXNzIHN0YXRzLCBpbiBhZGRpdGlvbiB0byBwZXItdGFzayBzdGF0cywgc2luY2UKK3Jlc291cmNlIG1hbmFnZW1lbnQgaXMgb2Z0ZW4gZG9uZSBhdCBhIHByb2Nlc3MgZ3JhbnVsYXJpdHkgYW5kIGFnZ3JlZ2F0aW5nIHRhc2sKK3N0YXRzIGluIHVzZXJzcGFjZSBhbG9uZSBpcyBpbmVmZmljaWVudCBhbmQgcG90ZW50aWFsbHkgaW5hY2N1cmF0ZSAoZHVlIHRvIGxhY2sKK29mIGF0b21pY2l0eSkuCisKK0hvd2V2ZXIsIG1haW50YWluaW5nIHBlci1wcm9jZXNzLCBpbiBhZGRpdGlvbiB0byBwZXItdGFzayBzdGF0cywgd2l0aGluIHRoZQora2VybmVsIGhhcyBzcGFjZSBhbmQgdGltZSBvdmVyaGVhZHMuIFRvIGFkZHJlc3MgdGhpcywgdGhlIHRhc2tzdGF0cyBjb2RlCithY2N1bXVsYXRlcyBlYWNoIGV4aXRpbmcgdGFzaydzIHN0YXRpc3RpY3MgaW50byBhIHByb2Nlc3Mtd2lkZSBkYXRhIHN0cnVjdHVyZS4KK1doZW4gdGhlIGxhc3QgdGFzayBvZiBhIHByb2Nlc3MgZXhpdHMsIHRoZSBwcm9jZXNzIGxldmVsIGRhdGEgYWNjdW11bGF0ZWQgYWxzbworZ2V0cyBzZW50IHRvIHVzZXJzcGFjZSAoYWxvbmcgd2l0aCB0aGUgcGVyLXRhc2sgZGF0YSkuCisKK1doZW4gYSB1c2VyIHF1ZXJpZXMgdG8gZ2V0IHBlci10Z2lkIGRhdGEsIHRoZSBzdW0gb2YgYWxsIG90aGVyIGxpdmUgdGhyZWFkcyBpbgordGhlIGdyb3VwIGlzIGFkZGVkIHVwIGFuZCBhZGRlZCB0byB0aGUgYWNjdW11bGF0ZWQgdG90YWwgZm9yIHByZXZpb3VzbHkgZXhpdGVkCit0aHJlYWRzIG9mIHRoZSBzYW1lIHRocmVhZCBncm91cC4KKworRXh0ZW5kaW5nIHRhc2tzdGF0cworLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGVyZSBhcmUgdHdvIHdheXMgdG8gZXh0ZW5kIHRoZSB0YXNrc3RhdHMgaW50ZXJmYWNlIHRvIGV4cG9ydCBtb3JlCitwZXItdGFzay9wcm9jZXNzIHN0YXRzIGFzIHBhdGNoZXMgdG8gY29sbGVjdCB0aGVtIGdldCBhZGRlZCB0byB0aGUga2VybmVsCitpbiBmdXR1cmU6CisKKzEuIEFkZGluZyBtb3JlIGZpZWxkcyB0byB0aGUgZW5kIG9mIHRoZSBleGlzdGluZyBzdHJ1Y3QgdGFza3N0YXRzLiBCYWNrd2FyZAorICAgY29tcGF0aWJpbGl0eSBpcyBlbnN1cmVkIGJ5IHRoZSB2ZXJzaW9uIG51bWJlciB3aXRoaW4gdGhlCisgICBzdHJ1Y3R1cmUuIFVzZXJzcGFjZSB3aWxsIHVzZSBvbmx5IHRoZSBmaWVsZHMgb2YgdGhlIHN0cnVjdCB0aGF0IGNvcnJlc3BvbmQKKyAgIHRvIHRoZSB2ZXJzaW9uIGl0cyB1c2luZy4KKworMi4gRGVmaW5pbmcgc2VwYXJhdGUgc3RhdGlzdGljIHN0cnVjdHMgYW5kIHVzaW5nIHRoZSBuZXRsaW5rIGF0dHJpYnV0ZXMKKyAgIGludGVyZmFjZSB0byByZXR1cm4gdGhlbS4gU2luY2UgdXNlcnNwYWNlIHByb2Nlc3NlcyBlYWNoIG5ldGxpbmsgYXR0cmlidXRlCisgICBpbmRlcGVuZGVudGx5LCBpdCBjYW4gYWx3YXlzIGlnbm9yZSBhdHRyaWJ1dGVzIHdob3NlIHR5cGUgaXQgZG9lcyBub3QKKyAgIHVuZGVyc3RhbmQgKGJlY2F1c2UgaXQgaXMgdXNpbmcgYW4gb2xkZXIgdmVyc2lvbiBvZiB0aGUgaW50ZXJmYWNlKS4KKworCitDaG9vc2luZyBiZXR3ZWVuIDEuIGFuZCAyLiBpcyBhIG1hdHRlciBvZiB0cmFkaW5nIG9mZiBmbGV4aWJpbGl0eSBhbmQKK292ZXJoZWFkLiBJZiBvbmx5IGEgZmV3IGZpZWxkcyBuZWVkIHRvIGJlIGFkZGVkLCB0aGVuIDEuIGlzIHRoZSBwcmVmZXJhYmxlCitwYXRoIHNpbmNlIHRoZSBrZXJuZWwgYW5kIHVzZXJzcGFjZSBkb24ndCBuZWVkIHRvIGluY3VyIHRoZSBvdmVyaGVhZCBvZgorcHJvY2Vzc2luZyBuZXcgbmV0bGluayBhdHRyaWJ1dGVzLiBCdXQgaWYgdGhlIG5ldyBmaWVsZHMgZXhwYW5kIHRoZSBleGlzdGluZworc3RydWN0IHRvbyBtdWNoLCByZXF1aXJpbmcgZGlzcGFyYXRlIHVzZXJzcGFjZSBhY2NvdW50aW5nIHV0aWxpdGllcyB0bwordW5uZWNlc3NhcmlseSByZWNlaXZlIGxhcmdlIHN0cnVjdHVyZXMgd2hvc2UgZmllbGRzIGFyZSBvZiBubyBpbnRlcmVzdCwgdGhlbgorZXh0ZW5kaW5nIHRoZSBhdHRyaWJ1dGVzIHN0cnVjdHVyZSB3b3VsZCBiZSB3b3J0aHdoaWxlLgorCitGbG93IGNvbnRyb2wgZm9yIHRhc2tzdGF0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hlbiB0aGUgcmF0ZSBvZiB0YXNrIGV4aXRzIGJlY29tZXMgbGFyZ2UsIGEgbGlzdGVuZXIgbWF5IG5vdCBiZSBhYmxlIHRvIGtlZXAKK3VwIHdpdGggdGhlIGtlcm5lbCdzIHJhdGUgb2Ygc2VuZGluZyBwZXItdGlkL3RnaWQgZXhpdCBkYXRhIGxlYWRpbmcgdG8gZGF0YQorbG9zcy4gVGhpcyBwb3NzaWJpbGl0eSBnZXRzIGNvbXBvdW5kZWQgd2hlbiB0aGUgdGFza3N0YXRzIHN0cnVjdHVyZSBnZXRzCitleHRlbmRlZCBhbmQgdGhlIG51bWJlciBvZiBjcHVzIGdyb3dzIGxhcmdlLgorCitUbyBhdm9pZCBsb3Npbmcgc3RhdGlzdGljcywgdXNlcnNwYWNlIHNob3VsZCBkbyBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nOgorCistIGluY3JlYXNlIHRoZSByZWNlaXZlIGJ1ZmZlciBzaXplcyBmb3IgdGhlIG5ldGxpbmsgc29ja2V0cyBvcGVuZWQgYnkKK2xpc3RlbmVycyB0byByZWNlaXZlIGV4aXQgZGF0YS4KKworLSBjcmVhdGUgbW9yZSBsaXN0ZW5lcnMgYW5kIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGNwdXMgYmVpbmcgbGlzdGVuZWQgdG8gYnkKK2VhY2ggbGlzdGVuZXIuIEluIHRoZSBleHRyZW1lIGNhc2UsIHRoZXJlIGNvdWxkIGJlIG9uZSBsaXN0ZW5lciBmb3IgZWFjaCBjcHUuCitVc2VycyBtYXkgYWxzbyBjb25zaWRlciBzZXR0aW5nIHRoZSBjcHUgYWZmaW5pdHkgb2YgdGhlIGxpc3RlbmVyIHRvIHRoZSBzdWJzZXQKK29mIGNwdXMgdG8gd2hpY2ggaXQgbGlzdGVucywgZXNwZWNpYWxseSBpZiB0aGV5IGFyZSBsaXN0ZW5pbmcgdG8ganVzdCBvbmUgY3B1LgorCitEZXNwaXRlIHRoZXNlIG1lYXN1cmVzLCBpZiB0aGUgdXNlcnNwYWNlIHJlY2VpdmVzIEVOT0JVRlMgZXJyb3IgbWVzc2FnZXMKK2luZGljYXRlZCBvdmVyZmxvdyBvZiByZWNlaXZlIGJ1ZmZlcnMsIGl0IHNob3VsZCB0YWtlIG1lYXN1cmVzIHRvIGhhbmRsZSB0aGUKK2xvc3Mgb2YgZGF0YS4KKworLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hY3BpL2FwZWkvZWluai50eHQgYi9Eb2N1bWVudGF0aW9uL2FjcGkvYXBlaS9laW5qLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTUwYzhiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hY3BpL2FwZWkvZWluai50eHQKQEAgLTAsMCArMSwxNzcgQEAKKwkJCUFQRUkgRXJyb3IgSU5KZWN0aW9uCisJCQl+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitFSU5KIHByb3ZpZGVzIGEgaGFyZHdhcmUgZXJyb3IgaW5qZWN0aW9uIG1lY2hhbmlzbS4gSXQgaXMgdmVyeSB1c2VmdWwKK2ZvciBkZWJ1Z2dpbmcgYW5kIHRlc3RpbmcgQVBFSSBhbmQgUkFTIGZlYXR1cmVzIGluIGdlbmVyYWwuCisKK1lvdSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgeW91ciBCSU9TIHN1cHBvcnRzIEVJTkogZmlyc3QuIEZvciB0aGF0LCBsb29rCitmb3IgZWFybHkgYm9vdCBtZXNzYWdlcyBzaW1pbGFyIHRvIHRoaXMgb25lOgorCitBQ1BJOiBFSU5KIDB4MDAwMDAwMDA3MzcwQTAwMCAwMDAxNTAgKHYwMSBJTlRFTCAgICAgICAgICAgMDAwMDAwMDEgSU5UTCAwMDAwMDAwMSkKKword2hpY2ggc2hvd3MgdGhhdCB0aGUgQklPUyBpcyBleHBvc2luZyBhbiBFSU5KIHRhYmxlIC0gaXQgaXMgdGhlCittZWNoYW5pc20gdGhyb3VnaCB3aGljaCB0aGUgaW5qZWN0aW9uIGlzIGRvbmUuCisKK0FsdGVybmF0aXZlbHksIGxvb2sgaW4gL3N5cy9maXJtd2FyZS9hY3BpL3RhYmxlcyBmb3IgYW4gIkVJTkoiIGZpbGUsCit3aGljaCBpcyBhIGRpZmZlcmVudCByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2FtZSB0aGluZy4KKworSXQgZG9lc24ndCBuZWNlc3NhcmlseSBtZWFuIHRoYXQgRUlOSiBpcyBub3Qgc3VwcG9ydGVkIGlmIHRob3NlIGFib3ZlCitkb24ndCBleGlzdDogYmVmb3JlIHlvdSBnaXZlIHVwLCBnbyBpbnRvIEJJT1Mgc2V0dXAgdG8gc2VlIGlmIHRoZSBCSU9TCitoYXMgYW4gb3B0aW9uIHRvIGVuYWJsZSBlcnJvciBpbmplY3Rpb24uIExvb2sgZm9yIHNvbWV0aGluZyBjYWxsZWQgV0hFQQorb3Igc2ltaWxhci4gT2Z0ZW4sIHlvdSBuZWVkIHRvIGVuYWJsZSBhbiBBQ1BJNSBzdXBwb3J0IG9wdGlvbiBwcmlvciwgaW4KK29yZGVyIHRvIHNlZSB0aGUgQVBFSSxFSU5KLC4uLiBmdW5jdGlvbmFsaXR5IHN1cHBvcnRlZCBhbmQgZXhwb3NlZCBieQordGhlIEJJT1MgbWVudS4KKworVG8gdXNlIEVJTkosIG1ha2Ugc3VyZSB0aGUgZm9sbG93aW5nIGFyZSBvcHRpb25zIGVuYWJsZWQgaW4geW91ciBrZXJuZWwKK2NvbmZpZ3VyYXRpb246CisKK0NPTkZJR19ERUJVR19GUworQ09ORklHX0FDUElfQVBFSQorQ09ORklHX0FDUElfQVBFSV9FSU5KCisKK1RoZSBFSU5KIHVzZXIgaW50ZXJmYWNlIGlzIGluIDxkZWJ1Z2ZzIG1vdW50IHBvaW50Pi9hcGVpL2VpbmouCisKK1RoZSBmb2xsb3dpbmcgZmlsZXMgYmVsb25nIHRvIGl0OgorCistIGF2YWlsYWJsZV9lcnJvcl90eXBlCisKKyAgVGhpcyBmaWxlIHNob3dzIHdoaWNoIGVycm9yIHR5cGVzIGFyZSBzdXBwb3J0ZWQ6CisKKyAgRXJyb3IgVHlwZSBWYWx1ZQlFcnJvciBEZXNjcmlwdGlvbgorICA9PT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PT09CisgIDB4MDAwMDAwMDEJCVByb2Nlc3NvciBDb3JyZWN0YWJsZQorICAweDAwMDAwMDAyCQlQcm9jZXNzb3IgVW5jb3JyZWN0YWJsZSBub24tZmF0YWwKKyAgMHgwMDAwMDAwNAkJUHJvY2Vzc29yIFVuY29ycmVjdGFibGUgZmF0YWwKKyAgMHgwMDAwMDAwOAkJTWVtb3J5IENvcnJlY3RhYmxlCisgIDB4MDAwMDAwMTAJCU1lbW9yeSBVbmNvcnJlY3RhYmxlIG5vbi1mYXRhbAorICAweDAwMDAwMDIwCQlNZW1vcnkgVW5jb3JyZWN0YWJsZSBmYXRhbAorICAweDAwMDAwMDQwCQlQQ0kgRXhwcmVzcyBDb3JyZWN0YWJsZQorICAweDAwMDAwMDgwCQlQQ0kgRXhwcmVzcyBVbmNvcnJlY3RhYmxlIGZhdGFsCisgIDB4MDAwMDAxMDAJCVBDSSBFeHByZXNzIFVuY29ycmVjdGFibGUgbm9uLWZhdGFsCisgIDB4MDAwMDAyMDAJCVBsYXRmb3JtIENvcnJlY3RhYmxlCisgIDB4MDAwMDA0MDAJCVBsYXRmb3JtIFVuY29ycmVjdGFibGUgbm9uLWZhdGFsCisgIDB4MDAwMDA4MDAJCVBsYXRmb3JtIFVuY29ycmVjdGFibGUgZmF0YWwKKworICBUaGUgZm9ybWF0IG9mIHRoZSBmaWxlIGNvbnRlbnRzIGFyZSBhcyBhYm92ZSwgZXhjZXB0IHByZXNlbnQgYXJlIG9ubHkKKyAgdGhlIGF2YWlsYWJsZSBlcnJvciB0eXBlcy4KKworLSBlcnJvcl90eXBlCisKKyAgU2V0IHRoZSB2YWx1ZSBvZiB0aGUgZXJyb3IgdHlwZSBiZWluZyBpbmplY3RlZC4gUG9zc2libGUgZXJyb3IgdHlwZXMKKyAgYXJlIGRlZmluZWQgaW4gdGhlIGZpbGUgYXZhaWxhYmxlX2Vycm9yX3R5cGUgYWJvdmUuCisKKy0gZXJyb3JfaW5qZWN0CisKKyAgV3JpdGUgYW55IGludGVnZXIgdG8gdGhpcyBmaWxlIHRvIHRyaWdnZXIgdGhlIGVycm9yIGluamVjdGlvbi4gTWFrZQorICBzdXJlIHlvdSBoYXZlIHNwZWNpZmllZCBhbGwgbmVjZXNzYXJ5IGVycm9yIHBhcmFtZXRlcnMsIGkuZS4gdGhpcworICB3cml0ZSBzaG91bGQgYmUgdGhlIGxhc3Qgc3RlcCB3aGVuIGluamVjdGluZyBlcnJvcnMuCisKKy0gZmxhZ3MKKworICBQcmVzZW50IGZvciBrZXJuZWwgdmVyc2lvbnMgMy4xMyBhbmQgYWJvdmUuIFVzZWQgdG8gc3BlY2lmeSB3aGljaAorICBvZiBwYXJhbXsxLi40fSBhcmUgdmFsaWQgYW5kIHNob3VsZCBiZSB1c2VkIGJ5IHRoZSBmaXJtd2FyZSBkdXJpbmcKKyAgaW5qZWN0aW9uLiBWYWx1ZSBpcyBhIGJpdG1hc2sgYXMgc3BlY2lmaWVkIGluIEFDUEk1LjAgc3BlYyBmb3IgdGhlCisgIFNFVF9FUlJPUl9UWVBFX1dJVEhfQUREUkVTUyBkYXRhIHN0cnVjdHVyZToKKworCUJpdCAwIC0gUHJvY2Vzc29yIEFQSUMgZmllbGQgdmFsaWQgKHNlZSBwYXJhbTMgYmVsb3cpLgorCUJpdCAxIC0gTWVtb3J5IGFkZHJlc3MgYW5kIG1hc2sgdmFsaWQgKHBhcmFtMSBhbmQgcGFyYW0yKS4KKwlCaXQgMiAtIFBDSWUgKHNlZyxidXMsZGV2LGZuKSB2YWxpZCAoc2VlIHBhcmFtNCBiZWxvdykuCisKKyAgSWYgc2V0IHRvIHplcm8sIGxlZ2FjeSBiZWhhdmlvciBpcyBtaW1pY2tlZCB3aGVyZSB0aGUgdHlwZSBvZgorICBpbmplY3Rpb24gc3BlY2lmaWVzIGp1c3Qgb25lIGJpdCBzZXQsIGFuZCBwYXJhbTEgaXMgbXVsdGlwbGV4ZWQuCisKKy0gcGFyYW0xCisKKyAgVGhpcyBmaWxlIGlzIHVzZWQgdG8gc2V0IHRoZSBmaXJzdCBlcnJvciBwYXJhbWV0ZXIgdmFsdWUuIEl0cyBlZmZlY3QKKyAgZGVwZW5kcyBvbiB0aGUgZXJyb3IgdHlwZSBzcGVjaWZpZWQgaW4gZXJyb3JfdHlwZS4gRm9yIGV4YW1wbGUsIGlmCisgIGVycm9yIHR5cGUgaXMgbWVtb3J5IHJlbGF0ZWQgdHlwZSwgdGhlIHBhcmFtMSBzaG91bGQgYmUgYSB2YWxpZAorICBwaHlzaWNhbCBtZW1vcnkgYWRkcmVzcy4gW1VubGVzcyAiZmxhZyIgaXMgc2V0IC0gc2VlIGFib3ZlXQorCistIHBhcmFtMgorCisgIFNhbWUgdXNlIGFzIHBhcmFtMSBhYm92ZS4gRm9yIGV4YW1wbGUsIGlmIGVycm9yIHR5cGUgaXMgb2YgbWVtb3J5CisgIHJlbGF0ZWQgdHlwZSwgdGhlbiBwYXJhbTIgc2hvdWxkIGJlIGEgcGh5c2ljYWwgbWVtb3J5IGFkZHJlc3MgbWFzay4KKyAgTGludXggcmVxdWlyZXMgcGFnZSBvciBuYXJyb3dlciBncmFudWxhcml0eSwgc2F5LCAweGZmZmZmZmZmZmZmZmYwMDAuCisKKy0gcGFyYW0zCisKKyAgVXNlZCB3aGVuIHRoZSAweDEgYml0IGlzIHNldCBpbiAiZmxhZ3MiIHRvIHNwZWNpZnkgdGhlIEFQSUMgaWQKKworLSBwYXJhbTQKKyAgVXNlZCB3aGVuIHRoZSAweDQgYml0IGlzIHNldCBpbiAiZmxhZ3MiIHRvIHNwZWNpZnkgdGFyZ2V0IFBDSWUgZGV2aWNlCisKKy0gbm90cmlnZ2VyCisKKyAgVGhlIGVycm9yIGluamVjdGlvbiBtZWNoYW5pc20gaXMgYSB0d28tc3RlcCBwcm9jZXNzLiBGaXJzdCBpbmplY3QgdGhlCisgIGVycm9yLCB0aGVuIHBlcmZvcm0gc29tZSBhY3Rpb25zIHRvIHRyaWdnZXIgaXQuIFNldHRpbmcgIm5vdHJpZ2dlciIKKyAgdG8gMSBza2lwcyB0aGUgdHJpZ2dlciBwaGFzZSwgd2hpY2ggKm1heSogYWxsb3cgdGhlIHVzZXIgdG8gY2F1c2UgdGhlCisgIGVycm9yIGluIHNvbWUgb3RoZXIgY29udGV4dCBieSBhIHNpbXBsZSBhY2Nlc3MgdG8gdGhlIENQVSwgbWVtb3J5CisgIGxvY2F0aW9uLCBvciBkZXZpY2UgdGhhdCBpcyB0aGUgdGFyZ2V0IG9mIHRoZSBlcnJvciBpbmplY3Rpb24uIFdoZXRoZXIKKyAgdGhpcyBhY3R1YWxseSB3b3JrcyBkZXBlbmRzIG9uIHdoYXQgb3BlcmF0aW9ucyB0aGUgQklPUyBhY3R1YWxseQorICBpbmNsdWRlcyBpbiB0aGUgdHJpZ2dlciBwaGFzZS4KKworQklPUyB2ZXJzaW9ucyBiYXNlZCBvbiB0aGUgQUNQSSA0LjAgc3BlY2lmaWNhdGlvbiBoYXZlIGxpbWl0ZWQgb3B0aW9ucworaW4gY29udHJvbGxpbmcgd2hlcmUgdGhlIGVycm9ycyBhcmUgaW5qZWN0ZWQuIFlvdXIgQklPUyBtYXkgc3VwcG9ydCBhbgorZXh0ZW5zaW9uIChlbmFibGVkIHdpdGggdGhlIHBhcmFtX2V4dGVuc2lvbj0xIG1vZHVsZSBwYXJhbWV0ZXIsIG9yIGJvb3QKK2NvbW1hbmQgbGluZSBlaW5qLnBhcmFtX2V4dGVuc2lvbj0xKS4gVGhpcyBhbGxvd3MgdGhlIGFkZHJlc3MgYW5kIG1hc2sKK2ZvciBtZW1vcnkgaW5qZWN0aW9ucyB0byBiZSBzcGVjaWZpZWQgYnkgdGhlIHBhcmFtMSBhbmQgcGFyYW0yIGZpbGVzIGluCithcGVpL2VpbmouCisKK0JJT1MgdmVyc2lvbnMgYmFzZWQgb24gdGhlIEFDUEkgNS4wIHNwZWNpZmljYXRpb24gaGF2ZSBtb3JlIGNvbnRyb2wgb3ZlcgordGhlIHRhcmdldCBvZiB0aGUgaW5qZWN0aW9uLiBGb3IgcHJvY2Vzc29yLXJlbGF0ZWQgZXJyb3JzICh0eXBlIDB4MSwgMHgyCithbmQgMHg0KSwgeW91IGNhbiBzZXQgZmxhZ3MgdG8gMHgzIChwYXJhbTMgZm9yIGJpdCAwLCBhbmQgcGFyYW0xIGFuZAorcGFyYW0yIGZvciBiaXQgMSkgc28gdGhhdCB5b3UgaGF2ZSBtb3JlIGluZm9ybWF0aW9uIGFkZGVkIHRvIHRoZSBlcnJvcgorc2lnbmF0dXJlIGJlaW5nIGluamVjdGVkLiBUaGUgYWN0dWFsIGRhdGEgcGFzc2VkIGlzIHRoaXM6CisKKwltZW1vcnlfYWRkcmVzcyA9IHBhcmFtMTsKKwltZW1vcnlfYWRkcmVzc19yYW5nZSA9IHBhcmFtMjsKKwlhcGljaWQgPSBwYXJhbTM7CisJcGNpZV9zYmRmID0gcGFyYW00OworCitGb3IgbWVtb3J5IGVycm9ycyAodHlwZSAweDgsIDB4MTAgYW5kIDB4MjApIHRoZSBhZGRyZXNzIGlzIHNldCB1c2luZworcGFyYW0xIHdpdGggYSBtYXNrIGluIHBhcmFtMiAoMHgwIGlzIGVxdWl2YWxlbnQgdG8gYWxsIG9uZXMpLiBGb3IgUENJCitleHByZXNzIGVycm9ycyAodHlwZSAweDQwLCAweDgwIGFuZCAweDEwMCkgdGhlIHNlZ21lbnQsIGJ1cywgZGV2aWNlIGFuZAorZnVuY3Rpb24gYXJlIHNwZWNpZmllZCB1c2luZyBwYXJhbTE6CisKKyAgICAgICAgIDMxICAgICAyNCAyMyAgICAxNiAxNSAgICAxMSAxMCAgICAgIDggIDcgICAgICAgIDAKKwkrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKwl8IHNlZ21lbnQgfCAgIGJ1cyAgfCBkZXZpY2UgfCBmdW5jdGlvbiB8IHJlc2VydmVkIHwKKwkrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworQW55d2F5LCB5b3UgZ2V0IHRoZSBpZGVhLCBpZiB0aGVyZSdzIGRvdWJ0IGp1c3QgdGFrZSBhIGxvb2sgYXQgdGhlIGNvZGUKK2luIGRyaXZlcnMvYWNwaS9hcGVpL2VpbmouYy4KKworQW4gQUNQSSA1LjAgQklPUyBtYXkgYWxzbyBhbGxvdyB2ZW5kb3Itc3BlY2lmaWMgZXJyb3JzIHRvIGJlIGluamVjdGVkLgorSW4gdGhpcyBjYXNlIGEgZmlsZSBuYW1lZCB2ZW5kb3Igd2lsbCBjb250YWluIGlkZW50aWZ5aW5nIGluZm9ybWF0aW9uCitmcm9tIHRoZSBCSU9TIHRoYXQgaG9wZWZ1bGx5IHdpbGwgYWxsb3cgYW4gYXBwbGljYXRpb24gd2lzaGluZyB0byB1c2UKK3RoZSB2ZW5kb3Itc3BlY2lmaWMgZXh0ZW5zaW9uIHRvIHRlbGwgdGhhdCB0aGV5IGFyZSBydW5uaW5nIG9uIGEgQklPUwordGhhdCBzdXBwb3J0cyBpdC4gQWxsIHZlbmRvciBleHRlbnNpb25zIGhhdmUgdGhlIDB4ODAwMDAwMDAgYml0IHNldCBpbgorZXJyb3JfdHlwZS4gQSBmaWxlIHZlbmRvcl9mbGFncyBjb250cm9scyB0aGUgaW50ZXJwcmV0YXRpb24gb2YgcGFyYW0xCithbmQgcGFyYW0yICgxID0gUFJPQ0VTU09SLCAyID0gTUVNT1JZLCA0ID0gUENJKS4gU2VlIHlvdXIgQklPUyB2ZW5kb3IKK2RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMgKGFuZCBleHBlY3QgY2hhbmdlcyB0byB0aGlzIEFQSSBpZiB2ZW5kb3JzCitjcmVhdGl2aXR5IGluIHVzaW5nIHRoaXMgZmVhdHVyZSBleHBhbmRzIGJleW9uZCBvdXIgZXhwZWN0YXRpb25zKS4KKworCitBbiBlcnJvciBpbmplY3Rpb24gZXhhbXBsZToKKworIyBjZCAvc3lzL2tlcm5lbC9kZWJ1Zy9hcGVpL2VpbmoKKyMgY2F0IGF2YWlsYWJsZV9lcnJvcl90eXBlCQkjIFNlZSB3aGljaCBlcnJvcnMgY2FuIGJlIGluamVjdGVkCisweDAwMDAwMDAyCVByb2Nlc3NvciBVbmNvcnJlY3RhYmxlIG5vbi1mYXRhbAorMHgwMDAwMDAwOAlNZW1vcnkgQ29ycmVjdGFibGUKKzB4MDAwMDAwMTAJTWVtb3J5IFVuY29ycmVjdGFibGUgbm9uLWZhdGFsCisjIGVjaG8gMHgxMjM0NTAwMCA+IHBhcmFtMQkJIyBTZXQgbWVtb3J5IGFkZHJlc3MgZm9yIGluamVjdGlvbgorIyBlY2hvICQoKC0xIDw8IDEyKSkgPiBwYXJhbTIJCSMgTWFzayAweGZmZmZmZmZmZmZmZmYwMDAgLSBhbnl3aGVyZSBpbiB0aGlzIHBhZ2UKKyMgZWNobyAweDggPiBlcnJvcl90eXBlCQkJIyBDaG9vc2UgY29ycmVjdGFibGUgbWVtb3J5IGVycm9yCisjIGVjaG8gMSA+IGVycm9yX2luamVjdAkJCSMgSW5qZWN0IG5vdworCitZb3Ugc2hvdWxkIHNlZSBzb21ldGhpbmcgbGlrZSB0aGlzIGluIGRtZXNnOgorCitbMjI3MTUuODMwODAxXSBFREFDIHNicmlkZ2UgTUMzOiBIQU5ETElORyBNQ0UgTUVNT1JZIEVSUk9SCitbMjI3MTUuODM0NzU5XSBFREFDIHNicmlkZ2UgTUMzOiBDUFUgMDogTWFjaGluZSBDaGVjayBFdmVudDogMCBCYW5rIDc6IDhjMDAwMDQwMDAwMTAwOTAKK1syMjcxNS44MzQ3NTldIEVEQUMgc2JyaWRnZSBNQzM6IFRTQyAwCitbMjI3MTUuODM0NzU5XSBFREFDIHNicmlkZ2UgTUMzOiBBRERSIDEyMzQ1MDAwIEVEQUMgc2JyaWRnZSBNQzM6IE1JU0MgMTQ0NzgwYzg2CitbMjI3MTUuODM0NzU5XSBFREFDIHNicmlkZ2UgTUMzOiBQUk9DRVNTT1IgMDozMDZlNyBUSU1FIDE0MjI1NTM0MDQgU09DS0VUIDAgQVBJQyAwCitbMjI3MTYuNjE2MTczXSBFREFDIE1DMzogMSBDRSBtZW1vcnkgcmVhZCBlcnJvciBvbiBDUFVfU3JjSUQjMF9DaGFubmVsIzBfRElNTSMwIChjaGFubmVsOjAgc2xvdDowIHBhZ2U6MHgxMjM0NSBvZmZzZXQ6MHgwIGdyYWluOjMyIHN5bmRyb21lOjB4MCAtICBhcmVhOkRSQU0gZXJyX2NvZGU6MDAwMTowMDkwIHNvY2tldDowIGNoYW5uZWxfbWFzazoxIHJhbms6MCkKKworRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgRUlOSiwgcGxlYXNlIHJlZmVyIHRvIEFDUEkgc3BlY2lmaWNhdGlvbgordmVyc2lvbiA0LjAsIHNlY3Rpb24gMTcuNSBhbmQgQUNQSSA1LjAsIHNlY3Rpb24gMTguNi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYWNwaS9hcGVpL291dHB1dF9mb3JtYXQudHh0IGIvRG9jdW1lbnRhdGlvbi9hY3BpL2FwZWkvb3V0cHV0X2Zvcm1hdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM0OWMxOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYWNwaS9hcGVpL291dHB1dF9mb3JtYXQudHh0CkBAIC0wLDAgKzEsMTQ3IEBACisgICAgICAgICAgICAgICAgICAgICBBUEVJIG91dHB1dCBmb3JtYXQKKyAgICAgICAgICAgICAgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fgorCitBUEVJIHVzZXMgcHJpbnRrIGFzIGhhcmR3YXJlIGVycm9yIHJlcG9ydGluZyBpbnRlcmZhY2UsIHRoZSBvdXRwdXQKK2Zvcm1hdCBpcyBhcyBmb2xsb3cuCisKKzxlcnJvciByZWNvcmQ+IDo9CitBUEVJIGdlbmVyaWMgaGFyZHdhcmUgZXJyb3Igc3RhdHVzCitzZXZlcml0eTogPGludGVnZXI+LCA8c2V2ZXJpdHkgc3RyaW5nPgorc2VjdGlvbjogPGludGVnZXI+LCBzZXZlcml0eTogPGludGVnZXI+LCA8c2V2ZXJpdHkgc3RyaW5nPgorZmxhZ3M6IDxpbnRlZ2VyPgorPHNlY3Rpb24gZmxhZ3Mgc3RyaW5ncz4KK2ZydV9pZDogPHV1aWQgc3RyaW5nPgorZnJ1X3RleHQ6IDxzdHJpbmc+CitzZWN0aW9uX3R5cGU6IDxzZWN0aW9uIHR5cGUgc3RyaW5nPgorPHNlY3Rpb24gZGF0YT4KKworPHNldmVyaXR5IHN0cmluZz4qIDo9IHJlY292ZXJhYmxlIHwgZmF0YWwgfCBjb3JyZWN0ZWQgfCBpbmZvCisKKzxzZWN0aW9uIGZsYWdzIHN0cmluZ3M+IyA6PQorW3ByaW1hcnldWywgY29udGFpbm1lbnQgd2FybmluZ11bLCByZXNldF1bLCB0aHJlc2hvbGQgZXhjZWVkZWRdXAorWywgcmVzb3VyY2Ugbm90IGFjY2Vzc2libGVdWywgbGF0ZW50IGVycm9yXQorCis8c2VjdGlvbiB0eXBlIHN0cmluZz4gOj0gZ2VuZXJpYyBwcm9jZXNzb3IgZXJyb3IgfCBtZW1vcnkgZXJyb3IgfCBcCitQQ0llIGVycm9yIHwgdW5rbm93biwgPHV1aWQgc3RyaW5nPgorCis8c2VjdGlvbiBkYXRhPiA6PQorPGdlbmVyaWMgcHJvY2Vzc29yIHNlY3Rpb24gZGF0YT4gfCA8bWVtb3J5IHNlY3Rpb24gZGF0YT4gfCBcCis8cGNpZSBzZWN0aW9uIGRhdGE+IHwgPG51bGw+CisKKzxnZW5lcmljIHByb2Nlc3NvciBzZWN0aW9uIGRhdGE+IDo9CitbcHJvY2Vzc29yX3R5cGU6IDxpbnRlZ2VyPiwgPHByb2MgdHlwZSBzdHJpbmc+XQorW3Byb2Nlc3Nvcl9pc2E6IDxpbnRlZ2VyPiwgPHByb2MgaXNhIHN0cmluZz5dCitbZXJyb3JfdHlwZTogPGludGVnZXI+Cis8cHJvYyBlcnJvciB0eXBlIHN0cmluZ3M+XQorW29wZXJhdGlvbjogPGludGVnZXI+LCA8cHJvYyBvcGVyYXRpb24gc3RyaW5nPl0KK1tmbGFnczogPGludGVnZXI+Cis8cHJvYyBmbGFncyBzdHJpbmdzPl0KK1tsZXZlbDogPGludGVnZXI+XQorW3ZlcnNpb25faW5mbzogPGludGVnZXI+XQorW3Byb2Nlc3Nvcl9pZDogPGludGVnZXI+XQorW3RhcmdldF9hZGRyZXNzOiA8aW50ZWdlcj5dCitbcmVxdWVzdG9yX2lkOiA8aW50ZWdlcj5dCitbcmVzcG9uZGVyX2lkOiA8aW50ZWdlcj5dCitbSVA6IDxpbnRlZ2VyPl0KKworPHByb2MgdHlwZSBzdHJpbmc+KiA6PSBJQTMyL1g2NCB8IElBNjQKKworPHByb2MgaXNhIHN0cmluZz4qIDo9IElBMzIgfCBJQTY0IHwgWDY0CisKKzxwcm9jZXNzb3IgZXJyb3IgdHlwZSBzdHJpbmdzPiMgOj0KK1tjYWNoZSBlcnJvcl1bLCBUTEIgZXJyb3JdWywgYnVzIGVycm9yXVssIG1pY3JvLWFyY2hpdGVjdHVyYWwgZXJyb3JdCisKKzxwcm9jIG9wZXJhdGlvbiBzdHJpbmc+KiA6PSB1bmtub3duIG9yIGdlbmVyaWMgfCBkYXRhIHJlYWQgfCBkYXRhIHdyaXRlIHwgXAoraW5zdHJ1Y3Rpb24gZXhlY3V0aW9uCisKKzxwcm9jIGZsYWdzIHN0cmluZ3M+IyA6PQorW3Jlc3RhcnRhYmxlXVssIHByZWNpc2UgSVBdWywgb3ZlcmZsb3ddWywgY29ycmVjdGVkXQorCis8bWVtb3J5IHNlY3Rpb24gZGF0YT4gOj0KK1tlcnJvcl9zdGF0dXM6IDxpbnRlZ2VyPl0KK1twaHlzaWNhbF9hZGRyZXNzOiA8aW50ZWdlcj5dCitbcGh5c2ljYWxfYWRkcmVzc19tYXNrOiA8aW50ZWdlcj5dCitbbm9kZTogPGludGVnZXI+XQorW2NhcmQ6IDxpbnRlZ2VyPl0KK1ttb2R1bGU6IDxpbnRlZ2VyPl0KK1tiYW5rOiA8aW50ZWdlcj5dCitbZGV2aWNlOiA8aW50ZWdlcj5dCitbcm93OiA8aW50ZWdlcj5dCitbY29sdW1uOiA8aW50ZWdlcj5dCitbYml0X3Bvc2l0aW9uOiA8aW50ZWdlcj5dCitbcmVxdWVzdG9yX2lkOiA8aW50ZWdlcj5dCitbcmVzcG9uZGVyX2lkOiA8aW50ZWdlcj5dCitbdGFyZ2V0X2lkOiA8aW50ZWdlcj5dCitbZXJyb3JfdHlwZTogPGludGVnZXI+LCA8bWVtIGVycm9yIHR5cGUgc3RyaW5nPl0KKworPG1lbSBlcnJvciB0eXBlIHN0cmluZz4qIDo9Cit1bmtub3duIHwgbm8gZXJyb3IgfCBzaW5nbGUtYml0IEVDQyB8IG11bHRpLWJpdCBFQ0MgfCBcCitzaW5nbGUtc3ltYm9sIGNoaXBraWxsIEVDQyB8IG11bHRpLXN5bWJvbCBjaGlwa2lsbCBFQ0MgfCBtYXN0ZXIgYWJvcnQgfCBcCit0YXJnZXQgYWJvcnQgfCBwYXJpdHkgZXJyb3IgfCB3YXRjaGRvZyB0aW1lb3V0IHwgaW52YWxpZCBhZGRyZXNzIHwgXAorbWlycm9yIEJyb2tlbiB8IG1lbW9yeSBzcGFyaW5nIHwgc2NydWIgY29ycmVjdGVkIGVycm9yIHwgXAorc2NydWIgdW5jb3JyZWN0ZWQgZXJyb3IKKworPHBjaWUgc2VjdGlvbiBkYXRhPiA6PQorW3BvcnRfdHlwZTogPGludGVnZXI+LCA8cGNpZSBwb3J0IHR5cGUgc3RyaW5nPl0KK1t2ZXJzaW9uOiA8aW50ZWdlcj4uPGludGVnZXI+XQorW2NvbW1hbmQ6IDxpbnRlZ2VyPiwgc3RhdHVzOiA8aW50ZWdlcj5dCitbZGV2aWNlX2lkOiA8aW50ZWdlcj46PGludGVnZXI+OjxpbnRlZ2VyPi48aW50ZWdlcj4KK3Nsb3Q6IDxpbnRlZ2VyPgorc2Vjb25kYXJ5X2J1czogPGludGVnZXI+Cit2ZW5kb3JfaWQ6IDxpbnRlZ2VyPiwgZGV2aWNlX2lkOiA8aW50ZWdlcj4KK2NsYXNzX2NvZGU6IDxpbnRlZ2VyPl0KK1tzZXJpYWwgbnVtYmVyOiA8aW50ZWdlcj4sIDxpbnRlZ2VyPl0KK1ticmlkZ2U6IHNlY29uZGFyeV9zdGF0dXM6IDxpbnRlZ2VyPiwgY29udHJvbDogPGludGVnZXI+XQorW2Flcl9zdGF0dXM6IDxpbnRlZ2VyPiwgYWVyX21hc2s6IDxpbnRlZ2VyPgorPGFlciBzdGF0dXMgc3RyaW5nPgorW2Flcl91bmNvcl9zZXZlcml0eTogPGludGVnZXI+XQorYWVyX2xheWVyPTxhZXIgbGF5ZXIgc3RyaW5nPiwgYWVyX2FnZW50PTxhZXIgYWdlbnQgc3RyaW5nPgorYWVyX3RscF9oZWFkZXI6IDxpbnRlZ2VyPiA8aW50ZWdlcj4gPGludGVnZXI+IDxpbnRlZ2VyPl0KKworPHBjaWUgcG9ydCB0eXBlIHN0cmluZz4qIDo9IFBDSWUgZW5kIHBvaW50IHwgbGVnYWN5IFBDSSBlbmQgcG9pbnQgfCBcCit1bmtub3duIHwgdW5rbm93biB8IHJvb3QgcG9ydCB8IHVwc3RyZWFtIHN3aXRjaCBwb3J0IHwgXAorZG93bnN0cmVhbSBzd2l0Y2ggcG9ydCB8IFBDSWUgdG8gUENJL1BDSS1YIGJyaWRnZSB8IFwKK1BDSS9QQ0ktWCB0byBQQ0llIGJyaWRnZSB8IHJvb3QgY29tcGxleCBpbnRlZ3JhdGVkIGVuZHBvaW50IGRldmljZSB8IFwKK3Jvb3QgY29tcGxleCBldmVudCBjb2xsZWN0b3IKKworaWYgc2VjdGlvbiBzZXZlcml0eSBpcyBmYXRhbCBvciByZWNvdmVyYWJsZQorPGFlciBzdGF0dXMgc3RyaW5nPiMgOj0KK3Vua25vd24gfCB1bmtub3duIHwgdW5rbm93biB8IHVua25vd24gfCBEYXRhIExpbmsgUHJvdG9jb2wgfCBcCit1bmtub3duIHwgdW5rbm93biB8IHVua25vd24gfCB1bmtub3duIHwgdW5rbm93biB8IHVua25vd24gfCB1bmtub3duIHwgXAorUG9pc29uZWQgVExQIHwgRmxvdyBDb250cm9sIFByb3RvY29sIHwgQ29tcGxldGlvbiBUaW1lb3V0IHwgXAorQ29tcGxldGVyIEFib3J0IHwgVW5leHBlY3RlZCBDb21wbGV0aW9uIHwgUmVjZWl2ZXIgT3ZlcmZsb3cgfCBcCitNYWxmb3JtZWQgVExQIHwgRUNSQyB8IFVuc3VwcG9ydGVkIFJlcXVlc3QKK2Vsc2UKKzxhZXIgc3RhdHVzIHN0cmluZz4jIDo9CitSZWNlaXZlciBFcnJvciB8IHVua25vd24gfCB1bmtub3duIHwgdW5rbm93biB8IHVua25vd24gfCB1bmtub3duIHwgXAorQmFkIFRMUCB8IEJhZCBETExQIHwgUkVMQVlfTlVNIFJvbGxvdmVyIHwgdW5rbm93biB8IHVua25vd24gfCB1bmtub3duIHwgXAorUmVwbGF5IFRpbWVyIFRpbWVvdXQgfCBBZHZpc29yeSBOb24tRmF0YWwKK2ZpCisKKzxhZXIgbGF5ZXIgc3RyaW5nPiA6PQorUGh5c2ljYWwgTGF5ZXIgfCBEYXRhIExpbmsgTGF5ZXIgfCBUcmFuc2FjdGlvbiBMYXllcgorCis8YWVyIGFnZW50IHN0cmluZz4gOj0KK1JlY2VpdmVyIElEIHwgUmVxdWVzdGVyIElEIHwgQ29tcGxldGVyIElEIHwgVHJhbnNtaXR0ZXIgSUQKKworV2hlcmUsIFtdIGRlc2lnbmF0ZSBjb3JyZXNwb25kaW5nIGNvbnRlbnQgaXMgb3B0aW9uYWwKKworQWxsIDxmaWVsZCBzdHJpbmc+IGRlc2NyaXB0aW9uIHdpdGggKiBoYXMgdGhlIGZvbGxvd2luZyBmb3JtYXQ6CisKK2ZpZWxkOiA8aW50ZWdlcj4sIDxmaWVsZCBzdHJpbmc+CisKK1doZXJlIHZhbHVlIG9mIDxpbnRlZ2VyPiBzaG91bGQgYmUgdGhlIHBvc2l0aW9uIG9mICJzdHJpbmciIGluIDxmaWVsZAorc3RyaW5nPiBkZXNjcmlwdGlvbi4gT3RoZXJ3aXNlLCA8ZmllbGQgc3RyaW5nPiB3aWxsIGJlICJ1bmtub3duIi4KKworQWxsIDxmaWVsZCBzdHJpbmdzPiBkZXNjcmlwdGlvbiB3aXRoICMgaGFzIHRoZSBmb2xsb3dpbmcgZm9ybWF0OgorCitmaWVsZDogPGludGVnZXI+Cis8ZmllbGQgc3RyaW5ncz4KKworV2hlcmUgZWFjaCBzdHJpbmcgaW4gPGZpZWxkcyBzdHJpbmdzPiBjb3JyZXNwb25kaW5nIHRvIG9uZSBzZXQgYml0IG9mCis8aW50ZWdlcj4uIFRoZSBiaXQgcG9zaXRpb24gaXMgdGhlIHBvc2l0aW9uIG9mICJzdHJpbmciIGluIDxmaWVsZAorc3RyaW5ncz4gZGVzY3JpcHRpb24uCisKK0ZvciBtb3JlIGRldGFpbGVkIGV4cGxhbmF0aW9uIG9mIGV2ZXJ5IGZpZWxkLCBwbGVhc2UgcmVmZXIgdG8gVUVGSQorc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIDIuMyBvciBsYXRlciwgc2VjdGlvbiBBcHBlbmRpeCBOOiBDb21tb24KK1BsYXRmb3JtIEVycm9yIFJlY29yZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYWNwaS9kZWJ1Zy50eHQgYi9Eb2N1bWVudGF0aW9uL2FjcGkvZGVidWcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1YmY0N2MKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FjcGkvZGVidWcudHh0CkBAIC0wLDAgKzEsMTQ4IEBACisJCQlBQ1BJIERlYnVnIE91dHB1dAorCisKK1RoZSBBQ1BJIENBLCB0aGUgTGludXggQUNQSSBjb3JlLCBhbmQgc29tZSBBQ1BJIGRyaXZlcnMgY2FuIGdlbmVyYXRlIGRlYnVnCitvdXRwdXQuICBUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyBob3cgdG8gdXNlIHRoaXMgZmFjaWxpdHkuCisKK0NvbXBpbGUtdGltZSBjb25maWd1cmF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBQ1BJIGRlYnVnIG91dHB1dCBpcyBnbG9iYWxseSBlbmFibGVkIGJ5IENPTkZJR19BQ1BJX0RFQlVHLiAgSWYgdGhpcyBjb25maWcKK29wdGlvbiBpcyB0dXJuZWQgb2ZmLCB0aGUgZGVidWcgbWVzc2FnZXMgYXJlIG5vdCBldmVuIGJ1aWx0IGludG8gdGhlCitrZXJuZWwuCisKK0Jvb3QtIGFuZCBydW4tdGltZSBjb25maWd1cmF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaGVuIENPTkZJR19BQ1BJX0RFQlVHPXksIHlvdSBjYW4gc2VsZWN0IHRoZSBjb21wb25lbnQgYW5kIGxldmVsIG9mIG1lc3NhZ2VzCit5b3UncmUgaW50ZXJlc3RlZCBpbi4gIEF0IGJvb3QtdGltZSwgdXNlIHRoZSBhY3BpLmRlYnVnX2xheWVyIGFuZAorYWNwaS5kZWJ1Z19sZXZlbCBrZXJuZWwgY29tbWFuZCBsaW5lIG9wdGlvbnMuICBBZnRlciBib290LCB5b3UgY2FuIHVzZSB0aGUKK2RlYnVnX2xheWVyIGFuZCBkZWJ1Z19sZXZlbCBmaWxlcyBpbiAvc3lzL21vZHVsZS9hY3BpL3BhcmFtZXRlcnMvIHRvIGNvbnRyb2wKK3RoZSBkZWJ1ZyBtZXNzYWdlcy4KKworZGVidWdfbGF5ZXIgKGNvbXBvbmVudCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSAiZGVidWdfbGF5ZXIiIGlzIGEgbWFzayB0aGF0IHNlbGVjdHMgY29tcG9uZW50cyBvZiBpbnRlcmVzdCwgZS5nLiwgYQorc3BlY2lmaWMgZHJpdmVyIG9yIHBhcnQgb2YgdGhlIEFDUEkgaW50ZXJwcmV0ZXIuICBUbyBidWlsZCB0aGUgZGVidWdfbGF5ZXIKK2JpdG1hc2ssIGxvb2sgZm9yIHRoZSAiI2RlZmluZSBfQ09NUE9ORU5UIiBpbiBhbiBBQ1BJIHNvdXJjZSBmaWxlLgorCitZb3UgY2FuIHNldCB0aGUgZGVidWdfbGF5ZXIgbWFzayBhdCBib290LXRpbWUgdXNpbmcgdGhlIGFjcGkuZGVidWdfbGF5ZXIKK2NvbW1hbmQgbGluZSBhcmd1bWVudCwgYW5kIHlvdSBjYW4gY2hhbmdlIGl0IGFmdGVyIGJvb3QgYnkgd3JpdGluZyB2YWx1ZXMKK3RvIC9zeXMvbW9kdWxlL2FjcGkvcGFyYW1ldGVycy9kZWJ1Z19sYXllci4KKworVGhlIHBvc3NpYmxlIGNvbXBvbmVudHMgYXJlIGRlZmluZWQgaW4gaW5jbHVkZS9hY3BpL2Fjb3V0cHV0LmggYW5kCitpbmNsdWRlL2FjcGkvYWNwaV9kcml2ZXJzLmguICBSZWFkaW5nIC9zeXMvbW9kdWxlL2FjcGkvcGFyYW1ldGVycy9kZWJ1Z19sYXllcgorc2hvd3MgdGhlIHN1cHBvcnRlZCBtYXNrIHZhbHVlcywgY3VycmVudGx5IHRoZXNlOgorCisgICAgQUNQSV9VVElMSVRJRVMgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisgICAgQUNQSV9IQVJEV0FSRSAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisgICAgQUNQSV9FVkVOVFMgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0CisgICAgQUNQSV9UQUJMRVMgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4CisgICAgQUNQSV9OQU1FU1BBQ0UgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwCisgICAgQUNQSV9QQVJTRVIgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCisgICAgQUNQSV9ESVNQQVRDSEVSICAgICAgICAgICAgICAgICAweDAwMDAwMDQwCisgICAgQUNQSV9FWEVDVVRFUiAgICAgICAgICAgICAgICAgICAweDAwMDAwMDgwCisgICAgQUNQSV9SRVNPVVJDRVMgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwCisgICAgQUNQSV9DQV9ERUJVR0dFUiAgICAgICAgICAgICAgICAweDAwMDAwMjAwCisgICAgQUNQSV9PU19TRVJWSUNFUyAgICAgICAgICAgICAgICAweDAwMDAwNDAwCisgICAgQUNQSV9DQV9ESVNBU1NFTUJMRVIgICAgICAgICAgICAweDAwMDAwODAwCisgICAgQUNQSV9DT01QSUxFUiAgICAgICAgICAgICAgICAgICAweDAwMDAxMDAwCisgICAgQUNQSV9UT09MUyAgICAgICAgICAgICAgICAgICAgICAweDAwMDAyMDAwCisgICAgQUNQSV9CVVNfQ09NUE9ORU5UICAgICAgICAgICAgICAweDAwMDEwMDAwCisgICAgQUNQSV9BQ19DT01QT05FTlQgICAgICAgICAgICAgICAweDAwMDIwMDAwCisgICAgQUNQSV9CQVRURVJZX0NPTVBPTkVOVCAgICAgICAgICAweDAwMDQwMDAwCisgICAgQUNQSV9CVVRUT05fQ09NUE9ORU5UICAgICAgICAgICAweDAwMDgwMDAwCisgICAgQUNQSV9TQlNfQ09NUE9ORU5UICAgICAgICAgICAgICAweDAwMTAwMDAwCisgICAgQUNQSV9GQU5fQ09NUE9ORU5UICAgICAgICAgICAgICAweDAwMjAwMDAwCisgICAgQUNQSV9QQ0lfQ09NUE9ORU5UICAgICAgICAgICAgICAweDAwNDAwMDAwCisgICAgQUNQSV9QT1dFUl9DT01QT05FTlQgICAgICAgICAgICAweDAwODAwMDAwCisgICAgQUNQSV9DT05UQUlORVJfQ09NUE9ORU5UICAgICAgICAweDAxMDAwMDAwCisgICAgQUNQSV9TWVNURU1fQ09NUE9ORU5UICAgICAgICAgICAweDAyMDAwMDAwCisgICAgQUNQSV9USEVSTUFMX0NPTVBPTkVOVCAgICAgICAgICAweDA0MDAwMDAwCisgICAgQUNQSV9NRU1PUllfREVWSUNFX0NPTVBPTkVOVCAgICAweDA4MDAwMDAwCisgICAgQUNQSV9WSURFT19DT01QT05FTlQgICAgICAgICAgICAweDEwMDAwMDAwCisgICAgQUNQSV9QUk9DRVNTT1JfQ09NUE9ORU5UICAgICAgICAweDIwMDAwMDAwCisKK2RlYnVnX2xldmVsCistLS0tLS0tLS0tLQorCitUaGUgImRlYnVnX2xldmVsIiBpcyBhIG1hc2sgdGhhdCBzZWxlY3RzIGRpZmZlcmVudCB0eXBlcyBvZiBtZXNzYWdlcywgZS5nLiwKK3Rob3NlIHJlbGF0ZWQgdG8gaW5pdGlhbGl6YXRpb24sIG1ldGhvZCBleGVjdXRpb24sIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMsIGV0Yy4KK1RvIGJ1aWxkIGRlYnVnX2xldmVsLCBsb29rIGF0IHRoZSBsZXZlbCBzcGVjaWZpZWQgaW4gYW4gQUNQSV9ERUJVR19QUklOVCgpCitzdGF0ZW1lbnQuCisKK1RoZSBBQ1BJIGludGVycHJldGVyIHVzZXMgc2V2ZXJhbCBkaWZmZXJlbnQgbGV2ZWxzLCBidXQgdGhlIExpbnV4CitBQ1BJIGNvcmUgYW5kIEFDUEkgZHJpdmVycyBnZW5lcmFsbHkgb25seSB1c2UgQUNQSV9MVl9JTkZPLgorCitZb3UgY2FuIHNldCB0aGUgZGVidWdfbGV2ZWwgbWFzayBhdCBib290LXRpbWUgdXNpbmcgdGhlIGFjcGkuZGVidWdfbGV2ZWwKK2NvbW1hbmQgbGluZSBhcmd1bWVudCwgYW5kIHlvdSBjYW4gY2hhbmdlIGl0IGFmdGVyIGJvb3QgYnkgd3JpdGluZyB2YWx1ZXMKK3RvIC9zeXMvbW9kdWxlL2FjcGkvcGFyYW1ldGVycy9kZWJ1Z19sZXZlbC4KKworVGhlIHBvc3NpYmxlIGxldmVscyBhcmUgZGVmaW5lZCBpbiBpbmNsdWRlL2FjcGkvYWNvdXRwdXQuaC4gIFJlYWRpbmcKKy9zeXMvbW9kdWxlL2FjcGkvcGFyYW1ldGVycy9kZWJ1Z19sZXZlbCBzaG93cyB0aGUgc3VwcG9ydGVkIG1hc2sgdmFsdWVzLAorY3VycmVudGx5IHRoZXNlOgorCisgICAgQUNQSV9MVl9JTklUICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxCisgICAgQUNQSV9MVl9ERUJVR19PQkpFQ1QgICAgICAgICAgICAweDAwMDAwMDAyCisgICAgQUNQSV9MVl9JTkZPICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0CisgICAgQUNQSV9MVl9JTklUX05BTUVTICAgICAgICAgICAgICAweDAwMDAwMDIwCisgICAgQUNQSV9MVl9QQVJTRSAgICAgICAgICAgICAgICAgICAweDAwMDAwMDQwCisgICAgQUNQSV9MVl9MT0FEICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDgwCisgICAgQUNQSV9MVl9ESVNQQVRDSCAgICAgICAgICAgICAgICAweDAwMDAwMTAwCisgICAgQUNQSV9MVl9FWEVDICAgICAgICAgICAgICAgICAgICAweDAwMDAwMjAwCisgICAgQUNQSV9MVl9OQU1FUyAgICAgICAgICAgICAgICAgICAweDAwMDAwNDAwCisgICAgQUNQSV9MVl9PUFJFR0lPTiAgICAgICAgICAgICAgICAweDAwMDAwODAwCisgICAgQUNQSV9MVl9CRklFTEQgICAgICAgICAgICAgICAgICAweDAwMDAxMDAwCisgICAgQUNQSV9MVl9UQUJMRVMgICAgICAgICAgICAgICAgICAweDAwMDAyMDAwCisgICAgQUNQSV9MVl9WQUxVRVMgICAgICAgICAgICAgICAgICAweDAwMDA0MDAwCisgICAgQUNQSV9MVl9PQkpFQ1RTICAgICAgICAgICAgICAgICAweDAwMDA4MDAwCisgICAgQUNQSV9MVl9SRVNPVVJDRVMgICAgICAgICAgICAgICAweDAwMDEwMDAwCisgICAgQUNQSV9MVl9VU0VSX1JFUVVFU1RTICAgICAgICAgICAweDAwMDIwMDAwCisgICAgQUNQSV9MVl9QQUNLQUdFICAgICAgICAgICAgICAgICAweDAwMDQwMDAwCisgICAgQUNQSV9MVl9BTExPQ0FUSU9OUyAgICAgICAgICAgICAweDAwMTAwMDAwCisgICAgQUNQSV9MVl9GVU5DVElPTlMgICAgICAgICAgICAgICAweDAwMjAwMDAwCisgICAgQUNQSV9MVl9PUFRJTUlaQVRJT05TICAgICAgICAgICAweDAwNDAwMDAwCisgICAgQUNQSV9MVl9NVVRFWCAgICAgICAgICAgICAgICAgICAweDAxMDAwMDAwCisgICAgQUNQSV9MVl9USFJFQURTICAgICAgICAgICAgICAgICAweDAyMDAwMDAwCisgICAgQUNQSV9MVl9JTyAgICAgICAgICAgICAgICAgICAgICAweDA0MDAwMDAwCisgICAgQUNQSV9MVl9JTlRFUlJVUFRTICAgICAgICAgICAgICAweDA4MDAwMDAwCisgICAgQUNQSV9MVl9BTUxfRElTQVNTRU1CTEUgICAgICAgICAweDEwMDAwMDAwCisgICAgQUNQSV9MVl9WRVJCT1NFX0lORk8gICAgICAgICAgICAweDIwMDAwMDAwCisgICAgQUNQSV9MVl9GVUxMX1RBQkxFUyAgICAgICAgICAgICAweDQwMDAwMDAwCisgICAgQUNQSV9MVl9FVkVOVFMgICAgICAgICAgICAgICAgICAweDgwMDAwMDAwCisKK0V4YW1wbGVzCistLS0tLS0tLQorCitGb3IgZXhhbXBsZSwgZHJpdmVycy9hY3BpL2J1cy5jIGNvbnRhaW5zIHRoaXM6CisKKyAgICAjZGVmaW5lIF9DT01QT05FTlQgICAgICAgICAgICAgIEFDUElfQlVTX0NPTVBPTkVOVAorICAgIC4uLgorICAgIEFDUElfREVCVUdfUFJJTlQoKEFDUElfREJfSU5GTywgIkRldmljZSBpbnNlcnRpb24gZGV0ZWN0ZWRcbiIpKTsKKworVG8gdHVybiBvbiB0aGlzIG1lc3NhZ2UsIHNldCB0aGUgQUNQSV9CVVNfQ09NUE9ORU5UIGJpdCBpbiBhY3BpLmRlYnVnX2xheWVyCithbmQgdGhlIEFDUElfTFZfSU5GTyBiaXQgaW4gYWNwaS5kZWJ1Z19sZXZlbC4gIChUaGUgQUNQSV9ERUJVR19QUklOVAorc3RhdGVtZW50IHVzZXMgQUNQSV9EQl9JTkZPLCB3aGljaCBpcyBtYWNybyBiYXNlZCBvbiB0aGUgQUNQSV9MVl9JTkZPCitkZWZpbml0aW9uLikKKworRW5hYmxlIGFsbCBBTUwgIkRlYnVnIiBvdXRwdXQgKHN0b3JlcyB0byB0aGUgRGVidWcgb2JqZWN0IHdoaWxlIGludGVycHJldGluZworQU1MKSBkdXJpbmcgYm9vdDoKKworICAgIGFjcGkuZGVidWdfbGF5ZXI9MHhmZmZmZmZmZiBhY3BpLmRlYnVnX2xldmVsPTB4MgorCitFbmFibGUgUENJIGFuZCBQQ0kgaW50ZXJydXB0IHJvdXRpbmcgZGVidWcgbWVzc2FnZXM6CisKKyAgICBhY3BpLmRlYnVnX2xheWVyPTB4NDAwMDAwIGFjcGkuZGVidWdfbGV2ZWw9MHg0CisKK0VuYWJsZSBhbGwgQUNQSSBoYXJkd2FyZS1yZWxhdGVkIG1lc3NhZ2VzOgorCisgICAgYWNwaS5kZWJ1Z19sYXllcj0weDIgYWNwaS5kZWJ1Z19sZXZlbD0weGZmZmZmZmZmCisKK0VuYWJsZSBhbGwgQUNQSV9EQl9JTkZPIG1lc3NhZ2VzIGFmdGVyIGJvb3Q6CisKKyAgICAjIGVjaG8gMHg0ID4gL3N5cy9tb2R1bGUvYWNwaS9wYXJhbWV0ZXJzL2RlYnVnX2xldmVsCisKK1Nob3cgYWxsIHZhbGlkIGNvbXBvbmVudCB2YWx1ZXM6CisKKyAgICAjIGNhdCAvc3lzL21vZHVsZS9hY3BpL3BhcmFtZXRlcnMvZGVidWdfbGF5ZXIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYWNwaS9kc2R0LW92ZXJyaWRlLnR4dCBiL0RvY3VtZW50YXRpb24vYWNwaS9kc2R0LW92ZXJyaWRlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODQ4NDFjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hY3BpL2RzZHQtb3ZlcnJpZGUudHh0CkBAIC0wLDAgKzEsNyBAQAorTGludXggc3VwcG9ydHMgYSBtZXRob2Qgb2Ygb3ZlcnJpZGluZyB0aGUgQklPUyBEU0RUOgorCitDT05GSUdfQUNQSV9DVVNUT01fRFNEVCBidWlsZHMgdGhlIGltYWdlIGludG8gdGhlIGtlcm5lbC4KKworV2hlbiB0byB1c2UgdGhpcyBtZXRob2QgaXMgZGVzY3JpYmVkIGluIGRldGFpbCBvbiB0aGUKK0xpbnV4L0FDUEkgaG9tZSBwYWdlOgoraHR0cHM6Ly8wMS5vcmcvbGludXgtYWNwaS9kb2N1bWVudGF0aW9uL292ZXJyaWRpbmctZHNkdApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hY3BpL2VudW1lcmF0aW9uLnR4dCBiL0RvY3VtZW50YXRpb24vYWNwaS9lbnVtZXJhdGlvbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTkxZWM1YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYWNwaS9lbnVtZXJhdGlvbi50eHQKQEAgLTAsMCArMSw0MTcgQEAKK0FDUEkgYmFzZWQgZGV2aWNlIGVudW1lcmF0aW9uCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorQUNQSSA1IGludHJvZHVjZWQgYSBzZXQgb2YgbmV3IHJlc291cmNlcyAoVWFydFRTZXJpYWxCdXMsIEkyY1NlcmlhbEJ1cywKK1NwaVNlcmlhbEJ1cywgR3Bpb0lvIGFuZCBHcGlvSW50KSB3aGljaCBjYW4gYmUgdXNlZCBpbiBlbnVtZXJhdGluZyBzbGF2ZQorZGV2aWNlcyBiZWhpbmQgc2VyaWFsIGJ1cyBjb250cm9sbGVycy4KKworSW4gYWRkaXRpb24gd2UgYXJlIHN0YXJ0aW5nIHRvIHNlZSBwZXJpcGhlcmFscyBpbnRlZ3JhdGVkIGluIHRoZQorU29DL0NoaXBzZXQgdG8gYXBwZWFyIG9ubHkgaW4gQUNQSSBuYW1lc3BhY2UuIFRoZXNlIGFyZSB0eXBpY2FsbHkgZGV2aWNlcwordGhhdCBhcmUgYWNjZXNzZWQgdGhyb3VnaCBtZW1vcnktbWFwcGVkIHJlZ2lzdGVycy4KKworSW4gb3JkZXIgdG8gc3VwcG9ydCB0aGlzIGFuZCByZS11c2UgdGhlIGV4aXN0aW5nIGRyaXZlcnMgYXMgbXVjaCBhcworcG9zc2libGUgd2UgZGVjaWRlZCB0byBkbyBmb2xsb3dpbmc6CisKKwlvIERldmljZXMgdGhhdCBoYXZlIG5vIGJ1cyBjb25uZWN0b3IgcmVzb3VyY2UgYXJlIHJlcHJlc2VudGVkIGFzCisJICBwbGF0Zm9ybSBkZXZpY2VzLgorCisJbyBEZXZpY2VzIGJlaGluZCByZWFsIGJ1c3NlcyB3aGVyZSB0aGVyZSBpcyBhIGNvbm5lY3RvciByZXNvdXJjZQorCSAgYXJlIHJlcHJlc2VudGVkIGFzIHN0cnVjdCBzcGlfZGV2aWNlIG9yIHN0cnVjdCBpMmNfZGV2aWNlCisJICAoc3RhbmRhcmQgVUFSVHMgYXJlIG5vdCBidXNzZXMgc28gdGhlcmUgaXMgbm8gc3RydWN0IHVhcnRfZGV2aWNlKS4KKworQXMgYm90aCBBQ1BJIGFuZCBEZXZpY2UgVHJlZSByZXByZXNlbnQgYSB0cmVlIG9mIGRldmljZXMgKGFuZCB0aGVpcgorcmVzb3VyY2VzKSB0aGlzIGltcGxlbWVudGF0aW9uIGZvbGxvd3MgdGhlIERldmljZSBUcmVlIHdheSBhcyBtdWNoIGFzCitwb3NzaWJsZS4KKworVGhlIEFDUEkgaW1wbGVtZW50YXRpb24gZW51bWVyYXRlcyBkZXZpY2VzIGJlaGluZCBidXNzZXMgKHBsYXRmb3JtLCBTUEkgYW5kCitJMkMpLCBjcmVhdGVzIHRoZSBwaHlzaWNhbCBkZXZpY2VzIGFuZCBiaW5kcyB0aGVtIHRvIHRoZWlyIEFDUEkgaGFuZGxlIGluCit0aGUgQUNQSSBuYW1lc3BhY2UuCisKK1RoaXMgbWVhbnMgdGhhdCB3aGVuIEFDUElfSEFORExFKGRldikgcmV0dXJucyBub24tTlVMTCB0aGUgZGV2aWNlIHdhcworZW51bWVyYXRlZCBmcm9tIEFDUEkgbmFtZXNwYWNlLiBUaGlzIGhhbmRsZSBjYW4gYmUgdXNlZCB0byBleHRyYWN0IG90aGVyCitkZXZpY2Utc3BlY2lmaWMgY29uZmlndXJhdGlvbi4gVGhlcmUgaXMgYW4gZXhhbXBsZSBvZiB0aGlzIGJlbG93LgorCitQbGF0Zm9ybSBidXMgc3VwcG9ydAorfn5+fn5+fn5+fn5+fn5+fn5+fn4KK1NpbmNlIHdlIGFyZSB1c2luZyBwbGF0Zm9ybSBkZXZpY2VzIHRvIHJlcHJlc2VudCBkZXZpY2VzIHRoYXQgYXJlIG5vdAorY29ubmVjdGVkIHRvIGFueSBwaHlzaWNhbCBidXMgd2Ugb25seSBuZWVkIHRvIGltcGxlbWVudCBhIHBsYXRmb3JtIGRyaXZlcgorZm9yIHRoZSBkZXZpY2UgYW5kIGFkZCBzdXBwb3J0ZWQgQUNQSSBJRHMuIElmIHRoaXMgc2FtZSBJUC1ibG9jayBpcyB1c2VkIG9uCitzb21lIG90aGVyIG5vbi1BQ1BJIHBsYXRmb3JtLCB0aGUgZHJpdmVyIG1pZ2h0IHdvcmsgb3V0IG9mIHRoZSBib3ggb3IgbmVlZHMKK3NvbWUgbWlub3IgY2hhbmdlcy4KKworQWRkaW5nIEFDUEkgc3VwcG9ydCBmb3IgYW4gZXhpc3RpbmcgZHJpdmVyIHNob3VsZCBiZSBwcmV0dHkKK3N0cmFpZ2h0Zm9yd2FyZC4gSGVyZSBpcyB0aGUgc2ltcGxlc3QgZXhhbXBsZToKKworCSNpZmRlZiBDT05GSUdfQUNQSQorCXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgbXlkcnZfYWNwaV9tYXRjaFtdID0geworCQkvKiBBQ1BJIElEcyBoZXJlICovCisJCXsgfQorCX07CisJTU9EVUxFX0RFVklDRV9UQUJMRShhY3BpLCBteWRydl9hY3BpX21hdGNoKTsKKwkjZW5kaWYKKworCXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG15X2RyaXZlciA9IHsKKwkJLi4uCisJCS5kcml2ZXIgPSB7CisJCQkuYWNwaV9tYXRjaF90YWJsZSA9IEFDUElfUFRSKG15ZHJ2X2FjcGlfbWF0Y2gpLAorCQl9LAorCX07CisKK0lmIHRoZSBkcml2ZXIgbmVlZHMgdG8gcGVyZm9ybSBtb3JlIGNvbXBsZXggaW5pdGlhbGl6YXRpb24gbGlrZSBnZXR0aW5nIGFuZAorY29uZmlndXJpbmcgR1BJT3MgaXQgY2FuIGdldCBpdHMgQUNQSSBoYW5kbGUgYW5kIGV4dHJhY3QgdGhpcyBpbmZvcm1hdGlvbgorZnJvbSBBQ1BJIHRhYmxlcy4KKworRE1BIHN1cHBvcnQKK35+fn5+fn5+fn5+CitETUEgY29udHJvbGxlcnMgZW51bWVyYXRlZCB2aWEgQUNQSSBzaG91bGQgYmUgcmVnaXN0ZXJlZCBpbiB0aGUgc3lzdGVtIHRvCitwcm92aWRlIGdlbmVyaWMgYWNjZXNzIHRvIHRoZWlyIHJlc291cmNlcy4gRm9yIGV4YW1wbGUsIGEgZHJpdmVyIHRoYXQgd291bGQKK2xpa2UgdG8gYmUgYWNjZXNzaWJsZSB0byBzbGF2ZSBkZXZpY2VzIHZpYSBnZW5lcmljIEFQSSBjYWxsCitkbWFfcmVxdWVzdF9zbGF2ZV9jaGFubmVsKCkgbXVzdCByZWdpc3RlciBpdHNlbGYgYXQgdGhlIGVuZCBvZiB0aGUgcHJvYmUKK2Z1bmN0aW9uIGxpa2UgdGhpczoKKworCWVyciA9IGRldm1fYWNwaV9kbWFfY29udHJvbGxlcl9yZWdpc3RlcihkZXYsIHhsYXRlX2Z1bmMsIGR3KTsKKwkvKiBIYW5kbGUgdGhlIGVycm9yIGlmIGl0J3Mgbm90IGEgY2FzZSBvZiAhQ09ORklHX0FDUEkgKi8KKworYW5kIGltcGxlbWVudCBjdXN0b20geGxhdGUgZnVuY3Rpb24gaWYgbmVlZGVkICh1c3VhbGx5IGFjcGlfZG1hX3NpbXBsZV94bGF0ZSgpCitpcyBlbm91Z2gpIHdoaWNoIGNvbnZlcnRzIHRoZSBGaXhlZERNQSByZXNvdXJjZSBwcm92aWRlZCBieSBzdHJ1Y3QKK2FjcGlfZG1hX3NwZWMgaW50byB0aGUgY29ycmVzcG9uZGluZyBETUEgY2hhbm5lbC4gQSBwaWVjZSBvZiBjb2RlIGZvciB0aGF0IGNhc2UKK2NvdWxkIGxvb2sgbGlrZToKKworCSNpZmRlZiBDT05GSUdfQUNQSQorCXN0cnVjdCBmaWx0ZXJfYXJncyB7CisJCS8qIFByb3ZpZGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZvciB0aGUgZmlsdGVyX2Z1bmMgKi8KKwkJLi4uCisJfTsKKworCXN0YXRpYyBib29sIGZpbHRlcl9mdW5jKHN0cnVjdCBkbWFfY2hhbiAqY2hhbiwgdm9pZCAqcGFyYW0pCisJeworCQkvKiBDaG9vc2UgdGhlIHByb3BlciBjaGFubmVsICovCisJCS4uLgorCX0KKworCXN0YXRpYyBzdHJ1Y3QgZG1hX2NoYW4gKnhsYXRlX2Z1bmMoc3RydWN0IGFjcGlfZG1hX3NwZWMgKmRtYV9zcGVjLAorCQkJc3RydWN0IGFjcGlfZG1hICphZG1hKQorCXsKKwkJZG1hX2NhcF9tYXNrX3QgY2FwOworCQlzdHJ1Y3QgZmlsdGVyX2FyZ3MgYXJnczsKKworCQkvKiBQcmVwYXJlIGFyZ3VtZW50cyBmb3IgZmlsdGVyX2Z1bmMgKi8KKwkJLi4uCisJCXJldHVybiBkbWFfcmVxdWVzdF9jaGFubmVsKGNhcCwgZmlsdGVyX2Z1bmMsICZhcmdzKTsKKwl9CisJI2Vsc2UKKwlzdGF0aWMgc3RydWN0IGRtYV9jaGFuICp4bGF0ZV9mdW5jKHN0cnVjdCBhY3BpX2RtYV9zcGVjICpkbWFfc3BlYywKKwkJCXN0cnVjdCBhY3BpX2RtYSAqYWRtYSkKKwl7CisJCXJldHVybiBOVUxMOworCX0KKwkjZW5kaWYKKworZG1hX3JlcXVlc3Rfc2xhdmVfY2hhbm5lbCgpIHdpbGwgY2FsbCB4bGF0ZV9mdW5jKCkgZm9yIGVhY2ggcmVnaXN0ZXJlZCBETUEKK2NvbnRyb2xsZXIuIEluIHRoZSB4bGF0ZSBmdW5jdGlvbiB0aGUgcHJvcGVyIGNoYW5uZWwgbXVzdCBiZSBjaG9zZW4gYmFzZWQgb24KK2luZm9ybWF0aW9uIGluIHN0cnVjdCBhY3BpX2RtYV9zcGVjIGFuZCB0aGUgcHJvcGVydGllcyBvZiB0aGUgY29udHJvbGxlcgorcHJvdmlkZWQgYnkgc3RydWN0IGFjcGlfZG1hLgorCitDbGllbnRzIG11c3QgY2FsbCBkbWFfcmVxdWVzdF9zbGF2ZV9jaGFubmVsKCkgd2l0aCB0aGUgc3RyaW5nIHBhcmFtZXRlciB0aGF0Citjb3JyZXNwb25kcyB0byBhIHNwZWNpZmljIEZpeGVkRE1BIHJlc291cmNlLiBCeSBkZWZhdWx0ICJ0eCIgbWVhbnMgdGhlIGZpcnN0CitlbnRyeSBvZiB0aGUgRml4ZWRETUEgcmVzb3VyY2UgYXJyYXksICJyeCIgbWVhbnMgdGhlIHNlY29uZCBlbnRyeS4gVGhlIHRhYmxlCitiZWxvdyBzaG93cyBhIGxheW91dDoKKworCURldmljZSAoSTJDMCkKKwl7CisJCS4uLgorCQlNZXRob2QgKF9DUlMsIDAsIE5vdFNlcmlhbGl6ZWQpCisJCXsKKwkJCU5hbWUgKERCVUYsIFJlc291cmNlVGVtcGxhdGUgKCkKKwkJCXsKKwkJCQlGaXhlZERNQSAoMHgwMDE4LCAweDAwMDQsIFdpZHRoMzJiaXQsIF9ZNDgpCisJCQkJRml4ZWRETUEgKDB4MDAxOSwgMHgwMDA1LCBXaWR0aDMyYml0LCApCisJCQl9KQorCQkuLi4KKwkJfQorCX0KKworU28sIHRoZSBGaXhlZERNQSB3aXRoIHJlcXVlc3QgbGluZSAweDAwMTggaXMgInR4IiBhbmQgbmV4dCBvbmUgaXMgInJ4IiBpbgordGhpcyBleGFtcGxlLgorCitJbiByb2J1c3QgY2FzZXMgdGhlIGNsaWVudCB1bmZvcnR1bmF0ZWx5IG5lZWRzIHRvIGNhbGwKK2FjcGlfZG1hX3JlcXVlc3Rfc2xhdmVfY2hhbl9ieV9pbmRleCgpIGRpcmVjdGx5IGFuZCB0aGVyZWZvcmUgY2hvb3NlIHRoZQorc3BlY2lmaWMgRml4ZWRETUEgcmVzb3VyY2UgYnkgaXRzIGluZGV4LgorCitTUEkgc2VyaWFsIGJ1cyBzdXBwb3J0Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitTbGF2ZSBkZXZpY2VzIGJlaGluZCBTUEkgYnVzIGhhdmUgU3BpU2VyaWFsQnVzIHJlc291cmNlIGF0dGFjaGVkIHRvIHRoZW0uCitUaGlzIGlzIGV4dHJhY3RlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBTUEkgY29yZSBhbmQgdGhlIHNsYXZlIGRldmljZXMgYXJlCitlbnVtZXJhdGVkIG9uY2Ugc3BpX3JlZ2lzdGVyX21hc3RlcigpIGlzIGNhbGxlZCBieSB0aGUgYnVzIGRyaXZlci4KKworSGVyZSBpcyB3aGF0IHRoZSBBQ1BJIG5hbWVzcGFjZSBmb3IgYSBTUEkgc2xhdmUgbWlnaHQgbG9vayBsaWtlOgorCisJRGV2aWNlIChFRVAwKQorCXsKKwkJTmFtZSAoX0FEUiwgMSkKKwkJTmFtZSAoX0NJRCwgUGFja2FnZSgpIHsKKwkJCSJBVE1MMDAyNSIsCisJCQkiQVQyNSIsCisJCX0pCisJCS4uLgorCQlNZXRob2QgKF9DUlMsIDAsIE5vdFNlcmlhbGl6ZWQpCisJCXsKKwkJCVNQSVNlcmlhbEJ1cygxLCBQb2xhcml0eUxvdywgRm91cldpcmVNb2RlLCA4LAorCQkJCUNvbnRyb2xsZXJJbml0aWF0ZWQsIDEwMDAwMDAsIENsb2NrUG9sYXJpdHlMb3csCisJCQkJQ2xvY2tQaGFzZUZpcnN0LCAiXFxfU0IuUENJMC5TUEkxIiwpCisJCX0KKwkJLi4uCisKK1RoZSBTUEkgZGV2aWNlIGRyaXZlcnMgb25seSBuZWVkIHRvIGFkZCBBQ1BJIElEcyBpbiBhIHNpbWlsYXIgd2F5IHRoYW4gd2l0aAordGhlIHBsYXRmb3JtIGRldmljZSBkcml2ZXJzLiBCZWxvdyBpcyBhbiBleGFtcGxlIHdoZXJlIHdlIGFkZCBBQ1BJIHN1cHBvcnQKK3RvIGF0MjUgU1BJIGVlcHJvbSBkcml2ZXIgKHRoaXMgaXMgbWVhbnQgZm9yIHRoZSBhYm92ZSBBQ1BJIHNuaXBwZXQpOgorCisJI2lmZGVmIENPTkZJR19BQ1BJCisJc3RhdGljIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCBhdDI1X2FjcGlfbWF0Y2hbXSA9IHsKKwkJeyAiQVQyNSIsIDAgfSwKKwkJeyB9LAorCX07CisJTU9EVUxFX0RFVklDRV9UQUJMRShhY3BpLCBhdDI1X2FjcGlfbWF0Y2gpOworCSNlbmRpZgorCisJc3RhdGljIHN0cnVjdCBzcGlfZHJpdmVyIGF0MjVfZHJpdmVyID0geworCQkuZHJpdmVyID0geworCQkJLi4uCisJCQkuYWNwaV9tYXRjaF90YWJsZSA9IEFDUElfUFRSKGF0MjVfYWNwaV9tYXRjaCksCisJCX0sCisJfTsKKworTm90ZSB0aGF0IHRoaXMgZHJpdmVyIGFjdHVhbGx5IG5lZWRzIG1vcmUgaW5mb3JtYXRpb24gbGlrZSBwYWdlIHNpemUgb2YgdGhlCitlZXByb20gZXRjLiBidXQgYXQgdGhlIHRpbWUgd3JpdGluZyB0aGlzIHRoZXJlIGlzIG5vIHN0YW5kYXJkIHdheSBvZgorcGFzc2luZyB0aG9zZS4gT25lIGlkZWEgaXMgdG8gcmV0dXJuIHRoaXMgaW4gX0RTTSBtZXRob2QgbGlrZToKKworCURldmljZSAoRUVQMCkKKwl7CisJCS4uLgorCQlNZXRob2QgKF9EU00sIDQsIE5vdFNlcmlhbGl6ZWQpCisJCXsKKwkJCVN0b3JlIChQYWNrYWdlICg2KQorCQkJeworCQkJCSJieXRlLWxlbiIsIDEwMjQsCisJCQkJImFkZHItbW9kZSIsIDIsCisJCQkJInBhZ2Utc2l6ZSwgMzIKKwkJCX0sIExvY2FsMCkKKworCQkJLy8gQ2hlY2sgVVVJRHMgZXRjLgorCisJCQlSZXR1cm4gKExvY2FsMCkKKwkJfQorCitUaGVuIHRoZSBhdDI1IFNQSSBkcml2ZXIgY2FuIGdldCB0aGlzIGNvbmZpZ3VyYXRpb24gYnkgY2FsbGluZyBfRFNNIG9uIGl0cworQUNQSSBoYW5kbGUgbGlrZToKKworCXN0cnVjdCBhY3BpX2J1ZmZlciBvdXRwdXQgPSB7IEFDUElfQUxMT0NBVEVfQlVGRkVSLCBOVUxMIH07CisJc3RydWN0IGFjcGlfb2JqZWN0X2xpc3QgaW5wdXQ7CisJYWNwaV9zdGF0dXMgc3RhdHVzOworCisJLyogRmlsbCBpbiB0aGUgaW5wdXQgYnVmZmVyICovCisKKwlzdGF0dXMgPSBhY3BpX2V2YWx1YXRlX29iamVjdChBQ1BJX0hBTkRMRSgmc3BpLT5kZXYpLCAiX0RTTSIsCisJCQkJICAgICAgJmlucHV0LCAmb3V0cHV0KTsKKwlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpCisJCS8qIEhhbmRsZSB0aGUgZXJyb3IgKi8KKworCS8qIEV4dHJhY3QgdGhlIGRhdGEgaGVyZSAqLworCisJa2ZyZWUob3V0cHV0LnBvaW50ZXIpOworCitJMkMgc2VyaWFsIGJ1cyBzdXBwb3J0Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitUaGUgc2xhdmVzIGJlaGluZCBJMkMgYnVzIGNvbnRyb2xsZXIgb25seSBuZWVkIHRvIGFkZCB0aGUgQUNQSSBJRHMgbGlrZQord2l0aCB0aGUgcGxhdGZvcm0gYW5kIFNQSSBkcml2ZXJzLiBUaGUgSTJDIGNvcmUgYXV0b21hdGljYWxseSBlbnVtZXJhdGVzCithbnkgc2xhdmUgZGV2aWNlcyBiZWhpbmQgdGhlIGNvbnRyb2xsZXIgZGV2aWNlIG9uY2UgdGhlIGFkYXB0ZXIgaXMKK3JlZ2lzdGVyZWQuCisKK0JlbG93IGlzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGFkZCBBQ1BJIHN1cHBvcnQgdG8gdGhlIGV4aXN0aW5nIG1wdTMwNTAKK2lucHV0IGRyaXZlcjoKKworCSNpZmRlZiBDT05GSUdfQUNQSQorCXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgbXB1MzA1MF9hY3BpX21hdGNoW10gPSB7CisJCXsgIk1QVTMwNTAiLCAwIH0sCisJCXsgfSwKKwl9OworCU1PRFVMRV9ERVZJQ0VfVEFCTEUoYWNwaSwgbXB1MzA1MF9hY3BpX21hdGNoKTsKKwkjZW5kaWYKKworCXN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBtcHUzMDUwX2kyY19kcml2ZXIgPSB7CisJCS5kcml2ZXIJPSB7CisJCQkubmFtZQk9ICJtcHUzMDUwIiwKKwkJCS5vd25lcgk9IFRISVNfTU9EVUxFLAorCQkJLnBtCT0gJm1wdTMwNTBfcG0sCisJCQkub2ZfbWF0Y2hfdGFibGUgPSBtcHUzMDUwX29mX21hdGNoLAorCQkJLmFjcGlfbWF0Y2hfdGFibGUgPSBBQ1BJX1BUUihtcHUzMDUwX2FjcGlfbWF0Y2gpLAorCQl9LAorCQkucHJvYmUJCT0gbXB1MzA1MF9wcm9iZSwKKwkJLnJlbW92ZQkJPSBtcHUzMDUwX3JlbW92ZSwKKwkJLmlkX3RhYmxlCT0gbXB1MzA1MF9pZHMsCisJfTsKKworR1BJTyBzdXBwb3J0Cit+fn5+fn5+fn5+fn4KK0FDUEkgNSBpbnRyb2R1Y2VkIHR3byBuZXcgcmVzb3VyY2VzIHRvIGRlc2NyaWJlIEdQSU8gY29ubmVjdGlvbnM6IEdwaW9JbworYW5kIEdwaW9JbnQuIFRoZXNlIHJlc291cmNlcyBjYW4gYmUgdXNlZCB0byBwYXNzIEdQSU8gbnVtYmVycyB1c2VkIGJ5Cit0aGUgZGV2aWNlIHRvIHRoZSBkcml2ZXIuIEFDUEkgNS4xIGV4dGVuZGVkIHRoaXMgd2l0aCBfRFNEIChEZXZpY2UKK1NwZWNpZmljIERhdGEpIHdoaWNoIG1hZGUgaXQgcG9zc2libGUgdG8gbmFtZSB0aGUgR1BJT3MgYW1vbmcgb3RoZXIgdGhpbmdzLgorCitGb3IgZXhhbXBsZToKKworRGV2aWNlIChERVYpCit7CisJTWV0aG9kIChfQ1JTLCAwLCBOb3RTZXJpYWxpemVkKQorCXsKKwkJTmFtZSAoU0JVRiwgUmVzb3VyY2VUZW1wbGF0ZSgpCisJCXsKKwkJCS4uLgorCQkJLy8gVXNlZCB0byBwb3dlciBvbi9vZmYgdGhlIGRldmljZQorCQkJR3Bpb0lvIChFeGNsdXNpdmUsIFB1bGxEZWZhdWx0LCAweDAwMDAsIDB4MDAwMCwKKwkJCQlJb1Jlc3RyaWN0aW9uT3V0cHV0T25seSwgIlxcX1NCLlBDSTAuR1BJMCIsCisJCQkJMHgwMCwgUmVzb3VyY2VDb25zdW1lciwsKQorCQkJeworCQkJCS8vIFBpbiBMaXN0CisJCQkJMHgwMDU1CisJCQl9CisKKwkJCS8vIEludGVycnVwdCBmb3IgdGhlIGRldmljZQorCQkJR3Bpb0ludCAoRWRnZSwgQWN0aXZlSGlnaCwgRXhjbHVzaXZlQW5kV2FrZSwgUHVsbE5vbmUsCisJCQkJIDB4MDAwMCwgIlxcX1NCLlBDSTAuR1BJMCIsIDB4MDAsIFJlc291cmNlQ29uc3VtZXIsLCkKKwkJCXsKKwkJCQkvLyBQaW4gbGlzdAorCQkJCTB4MDA1OAorCQkJfQorCisJCQkuLi4KKworCQl9CisKKwkJUmV0dXJuIChTQlVGKQorCX0KKworCS8vIEFDUEkgNS4xIF9EU0QgdXNlZCBmb3IgbmFtaW5nIHRoZSBHUElPcworCU5hbWUgKF9EU0QsIFBhY2thZ2UgKCkKKwl7CisJCVRvVVVJRCgiZGFmZmQ4MTQtNmViYS00ZDhjLThhOTEtYmM5YmJmNGFhMzAxIiksCisJCVBhY2thZ2UgKCkKKwkJeworCQkJUGFja2FnZSAoKSB7InBvd2VyLWdwaW9zIiwgUGFja2FnZSgpIHteREVWLCAwLCAwLCAwIH19LAorCQkJUGFja2FnZSAoKSB7ImlycS1ncGlvcyIsIFBhY2thZ2UoKSB7XkRFViwgMSwgMCwgMCB9fSwKKwkJfQorCX0pCisJLi4uCisKK1RoZXNlIEdQSU8gbnVtYmVycyBhcmUgY29udHJvbGxlciByZWxhdGl2ZSBhbmQgcGF0aCAiXFxfU0IuUENJMC5HUEkwIgorc3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBjb250cm9sbGVyLiBJbiBvcmRlciB0byB1c2UgdGhlc2UgR1BJT3MgaW4gTGludXgKK3dlIG5lZWQgdG8gdHJhbnNsYXRlIHRoZW0gdG8gdGhlIGNvcnJlc3BvbmRpbmcgTGludXggR1BJTyBkZXNjcmlwdG9ycy4KKworVGhlcmUgaXMgYSBzdGFuZGFyZCBHUElPIEFQSSBmb3IgdGhhdCBhbmQgaXMgZG9jdW1lbnRlZCBpbgorRG9jdW1lbnRhdGlvbi9ncGlvLy4KKworSW4gdGhlIGFib3ZlIGV4YW1wbGUgd2UgY2FuIGdldCB0aGUgY29ycmVzcG9uZGluZyB0d28gR1BJTyBkZXNjcmlwdG9ycyB3aXRoCithIGNvZGUgbGlrZSB0aGlzOgorCisJI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KKwkuLi4KKworCXN0cnVjdCBncGlvX2Rlc2MgKmlycV9kZXNjLCAqcG93ZXJfZGVzYzsKKworCWlycV9kZXNjID0gZ3Bpb2RfZ2V0KGRldiwgImlycSIpOworCWlmIChJU19FUlIoaXJxX2Rlc2MpKQorCQkvKiBoYW5kbGUgZXJyb3IgKi8KKworCXBvd2VyX2Rlc2MgPSBncGlvZF9nZXQoZGV2LCAicG93ZXIiKTsKKwlpZiAoSVNfRVJSKHBvd2VyX2Rlc2MpKQorCQkvKiBoYW5kbGUgZXJyb3IgKi8KKworCS8qIE5vdyB3ZSBjYW4gdXNlIHRoZSBHUElPIGRlc2NyaXB0b3JzICovCisKK1RoZXJlIGFyZSBhbHNvIGRldm1fKiB2ZXJzaW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMgd2hpY2ggcmVsZWFzZSB0aGUKK2Rlc2NyaXB0b3JzIG9uY2UgdGhlIGRldmljZSBpcyByZWxlYXNlZC4KKworU2VlIERvY3VtZW50YXRpb24vYWNwaS9ncGlvLXByb3BlcnRpZXMudHh0IGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZQorX0RTRCBiaW5kaW5nIHJlbGF0ZWQgdG8gR1BJT3MuCisKK01GRCBkZXZpY2VzCit+fn5+fn5+fn5+fgorVGhlIE1GRCBkZXZpY2VzIHJlZ2lzdGVyIHRoZWlyIGNoaWxkcmVuIGFzIHBsYXRmb3JtIGRldmljZXMuIEZvciB0aGUgY2hpbGQKK2RldmljZXMgdGhlcmUgbmVlZHMgdG8gYmUgYW4gQUNQSSBoYW5kbGUgdGhhdCB0aGV5IGNhbiB1c2UgdG8gcmVmZXJlbmNlCitwYXJ0cyBvZiB0aGUgQUNQSSBuYW1lc3BhY2UgdGhhdCByZWxhdGUgdG8gdGhlbS4gSW4gdGhlIExpbnV4IE1GRCBzdWJzeXN0ZW0KK3dlIHByb3ZpZGUgdHdvIHdheXM6CisKKwlvIFRoZSBjaGlsZHJlbiBzaGFyZSB0aGUgcGFyZW50IEFDUEkgaGFuZGxlLgorCW8gVGhlIE1GRCBjZWxsIGNhbiBzcGVjaWZ5IHRoZSBBQ1BJIGlkIG9mIHRoZSBkZXZpY2UuCisKK0ZvciB0aGUgZmlyc3QgY2FzZSwgdGhlIE1GRCBkcml2ZXJzIGRvIG5vdCBuZWVkIHRvIGRvIGFueXRoaW5nLiBUaGUKK3Jlc3VsdGluZyBjaGlsZCBwbGF0Zm9ybSBkZXZpY2Ugd2lsbCBoYXZlIGl0cyBBQ1BJX0NPTVBBTklPTigpIHNldCB0byBwb2ludAordG8gdGhlIHBhcmVudCBkZXZpY2UuCisKK0lmIHRoZSBBQ1BJIG5hbWVzcGFjZSBoYXMgYSBkZXZpY2UgdGhhdCB3ZSBjYW4gbWF0Y2ggdXNpbmcgYW4gQUNQSSBpZCBvciBBQ1BJCithZHIsIHRoZSBjZWxsIHNob3VsZCBiZSBzZXQgbGlrZToKKworCXN0YXRpYyBzdHJ1Y3QgbWZkX2NlbGxfYWNwaV9tYXRjaCBteV9zdWJkZXZpY2VfY2VsbF9hY3BpX21hdGNoID0geworCQkucG5waWQgPSAiWFlaMDAwMSIsCisJCS5hZHIgPSAwLAorCX07CisKKwlzdGF0aWMgc3RydWN0IG1mZF9jZWxsIG15X3N1YmRldmljZV9jZWxsID0geworCQkubmFtZSA9ICJteV9zdWJkZXZpY2UiLAorCQkvKiBzZXQgdGhlIHJlc291cmNlcyByZWxhdGl2ZSB0byB0aGUgcGFyZW50ICovCisJCS5hY3BpX21hdGNoID0gJm15X3N1YmRldmljZV9jZWxsX2FjcGlfbWF0Y2gsCisJfTsKKworVGhlIEFDUEkgaWQgIlhZWjAwMDEiIGlzIHRoZW4gdXNlZCB0byBsb29rdXAgYW4gQUNQSSBkZXZpY2UgZGlyZWN0bHkgdW5kZXIKK3RoZSBNRkQgZGV2aWNlIGFuZCBpZiBmb3VuZCwgdGhhdCBBQ1BJIGNvbXBhbmlvbiBkZXZpY2UgaXMgYm91bmQgdG8gdGhlCityZXN1bHRpbmcgY2hpbGQgcGxhdGZvcm0gZGV2aWNlLgorCitEZXZpY2UgVHJlZSBuYW1lc3BhY2UgbGluayBkZXZpY2UgSUQKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorVGhlIERldmljZSBUcmVlIHByb3RvY29sIHVzZXMgZGV2aWNlIGluZGVudGlmaWNhdGlvbiBiYXNlZCBvbiB0aGUgImNvbXBhdGlibGUiCitwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyBhIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzIHJlY29nbml6ZWQgYXMgZGV2aWNlCitpZGVudGlmaWVycyBieSBkcml2ZXJzIGFuZCB0aGUgZHJpdmVyIGNvcmUuICBUaGUgc2V0IG9mIGFsbCB0aG9zZSBzdHJpbmdzIG1heSBiZQorcmVnYXJkZWQgYXMgYSBkZXZpY2UgaW5kZW50aWZpY2F0aW9uIG5hbWVzcGFjZSBhbmFsb2dvdXMgdG8gdGhlIEFDUEkvUE5QIGRldmljZQorSUQgbmFtZXNwYWNlLiAgQ29uc2VxdWVudGx5LCBpbiBwcmluY2lwbGUgaXQgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkgdG8gYWxsb2NhdGUKK2EgbmV3IChhbmQgYXJndWFibHkgcmVkdW5kYW50KSBBQ1BJL1BOUCBkZXZpY2UgSUQgZm9yIGEgZGV2aWNlcyB3aXRoIGFuIGV4aXN0aW5nCitpZGVudGlmaWNhdGlvbiBzdHJpbmcgaW4gdGhlIERldmljZSBUcmVlIChEVCkgbmFtZXNwYWNlLCBlc3BlY2lhbGx5IGlmIHRoYXQgSUQKK2lzIG9ubHkgbmVlZGVkIHRvIGluZGljYXRlIHRoYXQgYSBnaXZlbiBkZXZpY2UgaXMgY29tcGF0aWJsZSB3aXRoIGFub3RoZXIgb25lLAorcHJlc3VtYWJseSBoYXZpbmcgYSBtYXRjaGluZyBkcml2ZXIgaW4gdGhlIGtlcm5lbCBhbHJlYWR5LgorCitJbiBBQ1BJLCB0aGUgZGV2aWNlIGlkZW50aWZpY2F0aW9uIG9iamVjdCBjYWxsZWQgX0NJRCAoQ29tcGF0aWJsZSBJRCkgaXMgdXNlZCB0bworbGlzdCB0aGUgSURzIG9mIGRldmljZXMgdGhlIGdpdmVuIG9uZSBpcyBjb21wYXRpYmxlIHdpdGgsIGJ1dCB0aG9zZSBJRHMgbXVzdAorYmVsb25nIHRvIG9uZSBvZiB0aGUgbmFtZXNwYWNlcyBwcmVzY3JpYmVkIGJ5IHRoZSBBQ1BJIHNwZWNpZmljYXRpb24gKHNlZQorU2VjdGlvbiA2LjEuMiBvZiBBQ1BJIDYuMCBmb3IgZGV0YWlscykgYW5kIHRoZSBEVCBuYW1lc3BhY2UgaXMgbm90IG9uZSBvZiB0aGVtLgorTW9yZW92ZXIsIHRoZSBzcGVjaWZpY2F0aW9uIG1hbmRhdGVzIHRoYXQgZWl0aGVyIGEgX0hJRCBvciBhbiBfQURSIGlkZW50aWZpY2Fpb24KK29iamVjdCBiZSBwcmVzZW50IGZvciBhbGwgQUNQSSBvYmplY3RzIHJlcHJlc2VudGluZyBkZXZpY2VzIChTZWN0aW9uIDYuMSBvZiBBQ1BJCis2LjApLiAgRm9yIG5vbi1lbnVtZXJhYmxlIGJ1cyB0eXBlcyB0aGF0IG9iamVjdCBtdXN0IGJlIF9ISUQgYW5kIGl0cyB2YWx1ZSBtdXN0CitiZSBhIGRldmljZSBJRCBmcm9tIG9uZSBvZiB0aGUgbmFtZXNwYWNlcyBwcmVzY3JpYmVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uIHRvby4KKworVGhlIHNwZWNpYWwgRFQgbmFtZXNwYWNlIGxpbmsgZGV2aWNlIElELCBQUlAwMDAxLCBwcm92aWRlcyBhIG1lYW5zIHRvIHVzZSB0aGUKK2V4aXN0aW5nIERULWNvbXBhdGlibGUgZGV2aWNlIGlkZW50aWZpY2F0aW9uIGluIEFDUEkgYW5kIHRvIHNhdGlzZnkgdGhlIGFib3ZlCityZXF1aXJlbWVudHMgZm9sbG93aW5nIGZyb20gdGhlIEFDUEkgc3BlY2lmaWNhdGlvbiBhdCB0aGUgc2FtZSB0aW1lLiAgTmFtZWx5LAoraWYgUFJQMDAwMSBpcyByZXR1cm5lZCBieSBfSElELCB0aGUgQUNQSSBzdWJzeXN0ZW0gd2lsbCBsb29rIGZvciB0aGUKKyJjb21wYXRpYmxlIiBwcm9wZXJ0eSBpbiB0aGUgZGV2aWNlIG9iamVjdCdzIF9EU0QgYW5kIHdpbGwgdXNlIHRoZSB2YWx1ZSBvZiB0aGF0Citwcm9wZXJ0eSB0byBpZGVudGlmeSB0aGUgY29ycmVzcG9uZGluZyBkZXZpY2UgaW4gYW5hbG9neSB3aXRoIHRoZSBvcmlnaW5hbCBEVAorZGV2aWNlIGlkZW50aWZpY2F0aW9uIGFsZ29yaXRobS4gIElmIHRoZSAiY29tcGF0aWJsZSIgcHJvcGVydHkgaXMgbm90IHByZXNlbnQKK29yIGl0cyB2YWx1ZSBpcyBub3QgdmFsaWQsIHRoZSBkZXZpY2Ugd2lsbCBub3QgYmUgZW51bWVyYXRlZCBieSB0aGUgQUNQSQorc3Vic3lzdGVtLiAgT3RoZXJ3aXNlLCBpdCB3aWxsIGJlIGVudW1lcmF0ZWQgYXV0b21hdGljYWxseSBhcyBhIHBsYXRmb3JtIGRldmljZQorKGV4Y2VwdCB3aGVuIGFuIEkyQyBvciBTUEkgbGluayBmcm9tIHRoZSBkZXZpY2UgdG8gaXRzIHBhcmVudCBpcyBwcmVzZW50LCBpbgord2hpY2ggY2FzZSB0aGUgQUNQSSBjb3JlIHdpbGwgbGVhdmUgdGhlIGRldmljZSBlbnVtZXJhdGlvbiB0byB0aGUgcGFyZW50J3MKK2RyaXZlcikgYW5kIHRoZSBpZGVudGlmaWNhdGlvbiBzdHJpbmdzIGZyb20gdGhlICJjb21wYXRpYmxlIiBwcm9wZXJ0eSB2YWx1ZSB3aWxsCitiZSB1c2VkIHRvIGZpbmQgYSBkcml2ZXIgZm9yIHRoZSBkZXZpY2UgYWxvbmcgd2l0aCB0aGUgZGV2aWNlIElEcyBsaXN0ZWQgYnkgX0NJRAorKGlmIHByZXNlbnQpLgorCitBbmFsb2dvdXNseSwgaWYgUFJQMDAwMSBpcyBwcmVzZW50IGluIHRoZSBsaXN0IG9mIGRldmljZSBJRHMgcmV0dXJuZWQgYnkgX0NJRCwKK3RoZSBpZGVudGlmaWNhdGlvbiBzdHJpbmdzIGxpc3RlZCBieSB0aGUgImNvbXBhdGlibGUiIHByb3BlcnR5IHZhbHVlIChpZiBwcmVzZW50CithbmQgdmFsaWQpIHdpbGwgYmUgdXNlZCB0byBsb29rIGZvciBhIGRyaXZlciBtYXRjaGluZyB0aGUgZGV2aWNlLCBidXQgaW4gdGhhdAorY2FzZSB0aGVpciByZWxhdGl2ZSBwcmlvcml0eSB3aXRoIHJlc3BlY3QgdG8gdGhlIG90aGVyIGRldmljZSBJRHMgbGlzdGVkIGJ5CitfSElEIGFuZCBfQ0lEIGRlcGVuZHMgb24gdGhlIHBvc2l0aW9uIG9mIFBSUDAwMDEgaW4gdGhlIF9DSUQgcmV0dXJuIHBhY2thZ2UuCitTcGVjaWZpY2FsbHksIHRoZSBkZXZpY2UgSURzIHJldHVybmVkIGJ5IF9ISUQgYW5kIHByZWNlZGluZyBQUlAwMDAxIGluIHRoZSBfQ0lECityZXR1cm4gcGFja2FnZSB3aWxsIGJlIGNoZWNrZWQgZmlyc3QuICBBbHNvIGluIHRoYXQgY2FzZSB0aGUgYnVzIHR5cGUgdGhlIGRldmljZQord2lsbCBiZSBlbnVtZXJhdGVkIHRvIGRlcGVuZHMgb24gdGhlIGRldmljZSBJRCByZXR1cm5lZCBieSBfSElELgorCitJdCBpcyB2YWxpZCB0byBkZWZpbmUgZGV2aWNlIG9iamVjdHMgd2l0aCBhIF9ISUQgcmV0dXJuaW5nIFBSUDAwMDEgYW5kIHdpdGhvdXQKK3RoZSAiY29tcGF0aWJsZSIgcHJvcGVydHkgaW4gdGhlIF9EU0Qgb3IgYSBfQ0lEIGFzIGxvbmcgYXMgb25lIG9mIHRoZWlyCithbmNlc3RvcnMgcHJvdmlkZXMgYSBfRFNEIHdpdGggYSB2YWxpZCAiY29tcGF0aWJsZSIgcHJvcGVydHkuICBTdWNoIGRldmljZQorb2JqZWN0cyBhcmUgdGhlbiBzaW1wbHkgcmVnYXJkZWQgYXMgYWRkaXRpb25hbCAiYmxvY2tzIiBwcm92aWRpbmcgaGllcmFyY2hpY2FsCitjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIHRvIHRoZSBkcml2ZXIgb2YgdGhlIGNvbXBvc2l0ZSBhbmNlc3RvciBkZXZpY2UuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FjcGkvZ3Bpby1wcm9wZXJ0aWVzLnR4dCBiL0RvY3VtZW50YXRpb24vYWNwaS9ncGlvLXByb3BlcnRpZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNWRhZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FjcGkvZ3Bpby1wcm9wZXJ0aWVzLnR4dApAQCAtMCwwICsxLDk2IEBACitfRFNEIERldmljZSBQcm9wZXJ0aWVzIFJlbGF0ZWQgdG8gR1BJTworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2l0aCB0aGUgcmVsZWFzZSBvZiBBQ1BJIDUuMSwgdGhlIF9EU0QgY29uZmlndXJhdGlvbiBvYmplY3QgZmluYWxseQorYWxsb3dzIG5hbWVzIHRvIGJlIGdpdmVuIHRvIEdQSU9zIChhbmQgb3RoZXIgdGhpbmdzIGFzIHdlbGwpIHJldHVybmVkCitieSBfQ1JTLiAgUHJldmlvdXNseSwgd2Ugd2VyZSBvbmx5IGFibGUgdG8gdXNlIGFuIGludGVnZXIgaW5kZXggdG8gZmluZAordGhlIGNvcnJlc3BvbmRpbmcgR1BJTywgd2hpY2ggaXMgcHJldHR5IGVycm9yIHByb25lIChpdCBkZXBlbmRzIG9uCit0aGUgX0NSUyBvdXRwdXQgb3JkZXJpbmcsIGZvciBleGFtcGxlKS4KKworV2l0aCBfRFNEIHdlIGNhbiBub3cgcXVlcnkgR1BJT3MgdXNpbmcgYSBuYW1lIGluc3RlYWQgb2YgYW4gaW50ZWdlcgoraW5kZXgsIGxpa2UgdGhlIEFTTCBleGFtcGxlIGJlbG93IHNob3dzOgorCisgIC8vIEJsdWV0b290aCBkZXZpY2Ugd2l0aCByZXNldCBhbmQgc2h1dGRvd24gR1BJT3MKKyAgRGV2aWNlIChCVEgpCisgIHsKKyAgICAgIE5hbWUgKF9ISUQsIC4uLikKKworICAgICAgTmFtZSAoX0NSUywgUmVzb3VyY2VUZW1wbGF0ZSAoKQorICAgICAgeworICAgICAgICAgIEdwaW9JbyAoRXhjbHVzaXZlLCBQdWxsVXAsIDAsIDAsIElvUmVzdHJpY3Rpb25JbnB1dE9ubHksCisgICAgICAgICAgICAgICAgICAiXFxfU0IuR1BPMCIsIDAsIFJlc291cmNlQ29uc3VtZXIpIHsxNX0KKyAgICAgICAgICBHcGlvSW8gKEV4Y2x1c2l2ZSwgUHVsbFVwLCAwLCAwLCBJb1Jlc3RyaWN0aW9uSW5wdXRPbmx5LAorICAgICAgICAgICAgICAgICAgIlxcX1NCLkdQTzAiLCAwLCBSZXNvdXJjZUNvbnN1bWVyKSB7MjcsIDMxfQorICAgICAgfSkKKworICAgICAgTmFtZSAoX0RTRCwgUGFja2FnZSAoKQorICAgICAgeworICAgICAgICAgIFRvVVVJRCgiZGFmZmQ4MTQtNmViYS00ZDhjLThhOTEtYmM5YmJmNGFhMzAxIiksCisgICAgICAgICAgUGFja2FnZSAoKQorCSAgeworICAgICAgICAgICAgICBQYWNrYWdlICgpIHsicmVzZXQtZ3BpbyIsIFBhY2thZ2UoKSB7XkJUSCwgMSwgMSwgMCB9fSwKKyAgICAgICAgICAgICAgUGFja2FnZSAoKSB7InNodXRkb3duLWdwaW8iLCBQYWNrYWdlKCkge15CVEgsIDAsIDAsIDAgfX0sCisgICAgICAgICAgfQorICAgICAgfSkKKyAgfQorCitUaGUgZm9ybWF0IG9mIHRoZSBzdXBwb3J0ZWQgR1BJTyBwcm9wZXJ0eSBpczoKKworICBQYWNrYWdlICgpIHsgIm5hbWUiLCBQYWNrYWdlICgpIHsgcmVmLCBpbmRleCwgcGluLCBhY3RpdmVfbG93IH19CisKKyAgcmVmIC0gVGhlIGRldmljZSB0aGF0IGhhcyBfQ1JTIGNvbnRhaW5pbmcgR3Bpb0lvKCkvR3Bpb0ludCgpIHJlc291cmNlcywKKyAgICAgICAgdHlwaWNhbGx5IHRoaXMgaXMgdGhlIGRldmljZSBpdHNlbGYgKEJUSCBpbiBvdXIgY2FzZSkuCisgIGluZGV4IC0gSW5kZXggb2YgdGhlIEdwaW9JbygpL0dwaW9JbnQoKSByZXNvdXJjZSBpbiBfQ1JTIHN0YXJ0aW5nIGZyb20gemVyby4KKyAgcGluIC0gUGluIGluIHRoZSBHcGlvSW8oKS9HcGlvSW50KCkgcmVzb3VyY2UuIFR5cGljYWxseSB0aGlzIGlzIHplcm8uCisgIGFjdGl2ZV9sb3cgLSBJZiAxIHRoZSBHUElPIGlzIG1hcmtlZCBhcyBhY3RpdmVfbG93LgorCitTaW5jZSBBQ1BJIEdwaW9JbygpIHJlc291cmNlIGRvZXMgbm90IGhhdmUgYSBmaWVsZCBzYXlpbmcgd2hldGhlciBpdCBpcworYWN0aXZlIGxvdyBvciBoaWdoLCB0aGUgImFjdGl2ZV9sb3ciIGFyZ3VtZW50IGNhbiBiZSB1c2VkIGhlcmUuICBTZXR0aW5nCitpdCB0byAxIG1hcmtzIHRoZSBHUElPIGFzIGFjdGl2ZSBsb3cuCisKK0luIG91ciBCbHVldG9vdGggZXhhbXBsZSB0aGUgInJlc2V0LWdwaW8iIHJlZmVycyB0byB0aGUgc2Vjb25kIEdwaW9JbygpCityZXNvdXJjZSwgc2Vjb25kIHBpbiBpbiB0aGF0IHJlc291cmNlIHdpdGggdGhlIEdQSU8gbnVtYmVyIG9mIDMxLgorCitBQ1BJIEdQSU8gTWFwcGluZ3MgUHJvdmlkZWQgYnkgRHJpdmVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgYXJlIHN5c3RlbXMgaW4gd2hpY2ggdGhlIEFDUEkgdGFibGVzIGRvIG5vdCBjb250YWluIF9EU0QgYnV0IHByb3ZpZGUgX0NSUword2l0aCBHcGlvSW8oKS9HcGlvSW50KCkgcmVzb3VyY2VzIGFuZCBkZXZpY2UgZHJpdmVycyBzdGlsbCBuZWVkIHRvIHdvcmsgd2l0aAordGhlbS4KKworSW4gdGhvc2UgY2FzZXMgQUNQSSBkZXZpY2UgaWRlbnRpZmljYXRpb24gb2JqZWN0cywgX0hJRCwgX0NJRCwgX0NMUywgX1NVQiwgX0hSViwKK2F2YWlsYWJsZSB0byB0aGUgZHJpdmVyIGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IHRoZSBkZXZpY2UgYW5kIHRoYXQgaXMgc3VwcG9zZWQKK3RvIGJlIHN1ZmZpY2llbnQgdG8gZGV0ZXJtaW5lIHRoZSBtZWFuaW5nIGFuZCBwdXJwb3NlIG9mIGFsbCBvZiB0aGUgR1BJTyBsaW5lcworbGlzdGVkIGJ5IHRoZSBHcGlvSW8oKS9HcGlvSW50KCkgcmVzb3VyY2VzIHJldHVybmVkIGJ5IF9DUlMuICBJbiBvdGhlciB3b3JkcywKK3RoZSBkcml2ZXIgaXMgc3VwcG9zZWQgdG8ga25vdyB3aGF0IHRvIHVzZSB0aGUgR3Bpb0lvKCkvR3Bpb0ludCgpIHJlc291cmNlcyBmb3IKK29uY2UgaXQgaGFzIGlkZW50aWZpZWQgdGhlIGRldmljZS4gIEhhdmluZyBkb25lIHRoYXQsIGl0IGNhbiBzaW1wbHkgYXNzaWduIG5hbWVzCit0byB0aGUgR1BJTyBsaW5lcyBpdCBpcyBnb2luZyB0byB1c2UgYW5kIHByb3ZpZGUgdGhlIEdQSU8gc3Vic3lzdGVtIHdpdGggYQorbWFwcGluZyBiZXR3ZWVuIHRob3NlIG5hbWVzIGFuZCB0aGUgQUNQSSBHUElPIHJlc291cmNlcyBjb3JyZXNwb25kaW5nIHRvIHRoZW0uCisKK1RvIGRvIHRoYXQsIHRoZSBkcml2ZXIgbmVlZHMgdG8gZGVmaW5lIGEgbWFwcGluZyB0YWJsZSBhcyBhIE5VTEwtdGVybWluYXRlZAorYXJyYXkgb2Ygc3RydWN0IGFjcGlfZ3Bpb19tYXBwaW5nIG9iamVjdHMgdGhhdCBlYWNoIGNvbnRhaW4gYSBuYW1lLCBhIHBvaW50ZXIKK3RvIGFuIGFycmF5IG9mIGxpbmUgZGF0YSAoc3RydWN0IGFjcGlfZ3Bpb19wYXJhbXMpIG9iamVjdHMgYW5kIHRoZSBzaXplIG9mIHRoYXQKK2FycmF5LiAgRWFjaCBzdHJ1Y3QgYWNwaV9ncGlvX3BhcmFtcyBvYmplY3QgY29uc2lzdHMgb2YgdGhyZWUgZmllbGRzLAorY3JzX2VudHJ5X2luZGV4LCBsaW5lX2luZGV4LCBhY3RpdmVfbG93LCByZXByZXNlbnRpbmcgdGhlIGluZGV4IG9mIHRoZSB0YXJnZXQKK0dwaW9JbygpL0dwaW9JbnQoKSByZXNvdXJjZSBpbiBfQ1JTIHN0YXJ0aW5nIGZyb20gemVybywgdGhlIGluZGV4IG9mIHRoZSB0YXJnZXQKK2xpbmUgaW4gdGhhdCByZXNvdXJjZSBzdGFydGluZyBmcm9tIHplcm8sIGFuZCB0aGUgYWN0aXZlLWxvdyBmbGFnIGZvciB0aGF0IGxpbmUsCityZXNwZWN0aXZlbHksIGluIGFuYWxvZ3kgd2l0aCB0aGUgX0RTRCBHUElPIHByb3BlcnR5IGZvcm1hdCBzcGVjaWZpZWQgYWJvdmUuCisKK0ZvciB0aGUgZXhhbXBsZSBCbHVldG9vdGggZGV2aWNlIGRpc2N1c3NlZCBwcmV2aW91c2x5IHRoZSBkYXRhIHN0cnVjdHVyZXMgaW4KK3F1ZXN0aW9uIHdvdWxkIGxvb2sgbGlrZSB0aGlzOgorCitzdGF0aWMgY29uc3Qgc3RydWN0IGFjcGlfZ3Bpb19wYXJhbXMgcmVzZXRfZ3BpbyA9IHsgMSwgMSwgZmFsc2UgfTsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYWNwaV9ncGlvX3BhcmFtcyBzaHV0ZG93bl9ncGlvID0geyAwLCAwLCBmYWxzZSB9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGFjcGlfZ3Bpb19tYXBwaW5nIGJsdWV0b290aF9hY3BpX2dwaW9zW10gPSB7CisgIHsgInJlc2V0LWdwaW8iLCAmcmVzZXRfZ3BpbywgMSB9LAorICB7ICJzaHV0ZG93bi1ncGlvIiwgJnNodXRkb3duX2dwaW8sIDEgfSwKKyAgeyB9LAorfTsKKworTmV4dCwgdGhlIG1hcHBpbmcgdGFibGUgbmVlZHMgdG8gYmUgcGFzc2VkIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8KK2FjcGlfZGV2X2FkZF9kcml2ZXJfZ3Bpb3MoKSB0aGF0IHdpbGwgcmVnaXN0ZXIgaXQgd2l0aCB0aGUgQUNQSSBkZXZpY2Ugb2JqZWN0Citwb2ludGVkIHRvIGJ5IGl0cyBmaXJzdCBhcmd1bWVudC4gIFRoYXQgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIGRyaXZlcidzIC5wcm9iZSgpCityb3V0aW5lLiAgT24gcmVtb3ZhbCwgdGhlIGRyaXZlciBzaG91bGQgdW5yZWdpc3RlciBpdHMgR1BJTyBtYXBwaW5nIHRhYmxlIGJ5CitjYWxsaW5nIGFjcGlfZGV2X3JlbW92ZV9kcml2ZXJfZ3Bpb3MoKSBvbiB0aGUgQUNQSSBkZXZpY2Ugb2JqZWN0IHdoZXJlIHRoYXQKK3RhYmxlIHdhcyBwcmV2aW91c2x5IHJlZ2lzdGVyZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FjcGkvaTJjLW11eGVzLnR4dCBiL0RvY3VtZW50YXRpb24vYWNwaS9pMmMtbXV4ZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmY2M0ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FjcGkvaTJjLW11eGVzLnR4dApAQCAtMCwwICsxLDU4IEBACitBQ1BJIEkyQyBNdXhlcworLS0tLS0tLS0tLS0tLS0KKworRGVzY3JpYmluZyBhbiBJMkMgZGV2aWNlIGhpZXJhcmNoeSB0aGF0IGluY2x1ZGVzIEkyQyBtdXhlcyByZXF1aXJlcyBhbiBBQ1BJCitEZXZpY2UgKCkgc2NvcGUgcGVyIG11eCBjaGFubmVsLgorCitDb25zaWRlciB0aGlzIHRvcG9sb2d5OgorCisrLS0tLS0tKyAgICstLS0tLS0rCit8IFNNQjEgfC0tPnwgTVVYMCB8LS1DSDAwLS0+IGkyYyBjbGllbnQgQSAoMHg1MCkKK3wgICAgICB8ICAgfCAweDcwIHwtLUNIMDEtLT4gaTJjIGNsaWVudCBCICgweDUwKQorKy0tLS0tLSsgICArLS0tLS0tKworCit3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgZm9sbG93aW5nIEFTTDoKKworRGV2aWNlIChTTUIxKQoreworICAgIE5hbWUgKF9ISUQsIC4uLikKKyAgICBEZXZpY2UgKE1VWDApCisgICAgeworICAgICAgICBOYW1lIChfSElELCAuLi4pCisgICAgICAgIE5hbWUgKF9DUlMsIFJlc291cmNlVGVtcGxhdGUgKCkgeworICAgICAgICAgICAgSTJjU2VyaWFsQnVzICgweDcwLCBDb250cm9sbGVySW5pdGlhdGVkLCBJMkNfU1BFRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3NpbmdNb2RlN0JpdCwgIl5TTUIxIiwgMHgwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VDb25zdW1lciwsKQorICAgICAgICB9CisKKyAgICAgICAgRGV2aWNlIChDSDAwKQorICAgICAgICB7CisgICAgICAgICAgICBOYW1lIChfQURSLCAwKQorCisgICAgICAgICAgICBEZXZpY2UgKENMSUEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgTmFtZSAoX0hJRCwgLi4uKQorICAgICAgICAgICAgICAgIE5hbWUgKF9DUlMsIFJlc291cmNlVGVtcGxhdGUgKCkgeworICAgICAgICAgICAgICAgICAgICBJMmNTZXJpYWxCdXMgKDB4NTAsIENvbnRyb2xsZXJJbml0aWF0ZWQsIEkyQ19TUEVFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzaW5nTW9kZTdCaXQsICJeQ0gwMCIsIDB4MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VDb25zdW1lciwsKQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIERldmljZSAoQ0gwMSkKKyAgICAgICAgeworICAgICAgICAgICAgTmFtZSAoX0FEUiwgMSkKKworICAgICAgICAgICAgRGV2aWNlIChDTElCKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIE5hbWUgKF9ISUQsIC4uLikKKyAgICAgICAgICAgICAgICBOYW1lIChfQ1JTLCBSZXNvdXJjZVRlbXBsYXRlICgpIHsKKyAgICAgICAgICAgICAgICAgICAgSTJjU2VyaWFsQnVzICgweDUwLCBDb250cm9sbGVySW5pdGlhdGVkLCBJMkNfU1BFRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzc2luZ01vZGU3Qml0LCAiXkNIMDEiLCAweDAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlQ29uc3VtZXIsLCkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FjcGkvaW5pdHJkX3RhYmxlX292ZXJyaWRlLnR4dCBiL0RvY3VtZW50YXRpb24vYWNwaS9pbml0cmRfdGFibGVfb3ZlcnJpZGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1YzNmNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FjcGkvaW5pdHJkX3RhYmxlX292ZXJyaWRlLnR4dApAQCAtMCwwICsxLDk0IEBACitPdmVycmlkaW5nIEFDUEkgdGFibGVzIHZpYSBpbml0cmQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisxKSBJbnRyb2R1Y3Rpb24gKFdoYXQgaXMgdGhpcyBhYm91dCkKKzIpIFdoYXQgaXMgdGhpcyBmb3IKKzMpIEhvdyBkb2VzIGl0IHdvcmsKKzQpIFJlZmVyZW5jZXMgKFdoZXJlIHRvIHJldHJpZXZlIHVzZXJzcGFjZSB0b29scykKKworMSkgV2hhdCBpcyB0aGlzIGFib3V0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgdGhlIEFDUElfSU5JVFJEX1RBQkxFX09WRVJSSURFIGNvbXBpbGUgb3B0aW9uIGlzIHRydWUsIGl0IGlzIHBvc3NpYmxlIHRvCitvdmVycmlkZSBuZWFybHkgYW55IEFDUEkgdGFibGUgcHJvdmlkZWQgYnkgdGhlIEJJT1Mgd2l0aCBhbiBpbnN0cnVtZW50ZWQsCittb2RpZmllZCBvbmUuCisKK0ZvciBhIGZ1bGwgbGlzdCBvZiBBQ1BJIHRhYmxlcyB0aGF0IGNhbiBiZSBvdmVycmlkZGVuLCB0YWtlIGEgbG9vayBhdAordGhlIGNoYXIgKnRhYmxlX3NpZ3NbTUFYX0FDUElfU0lHTkFUVVJFXTsgZGVmaW5pdGlvbiBpbiBkcml2ZXJzL2FjcGkvb3NsLmMKK0FsbCBBQ1BJIHRhYmxlcyBpYXNsIChJbnRlbCdzIEFDUEkgY29tcGlsZXIgYW5kIGRpc2Fzc2VtYmxlcikga25vd3Mgc2hvdWxkCitiZSBvdmVycmlkYWJsZSwgZXhjZXB0OgorICAgLSBBQ1BJX1NJR19SU0RQIChoYXMgYSBzaWduYXR1cmUgb2YgNiBieXRlcykKKyAgIC0gQUNQSV9TSUdfRkFDUyAoZG9lcyBub3QgaGF2ZSBhbiBvcmRpbmFyeSBBQ1BJIHRhYmxlIGhlYWRlcikKK0JvdGggY291bGQgZ2V0IGltcGxlbWVudGVkIGFzIHdlbGwuCisKKworMikgV2hhdCBpcyB0aGlzIGZvcgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQbGVhc2Uga2VlcCBpbiBtaW5kIHRoYXQgdGhpcyBpcyBhIGRlYnVnIG9wdGlvbi4KK0FDUEkgdGFibGVzIHNob3VsZCBub3QgZ2V0IG92ZXJyaWRkZW4gZm9yIHByb2R1Y3RpdmUgdXNlLgorSWYgQklPUyBBQ1BJIHRhYmxlcyBhcmUgb3ZlcnJpZGRlbiB0aGUga2VybmVsIHdpbGwgZ2V0IHRhaW50ZWQgd2l0aCB0aGUKK1RBSU5UX09WRVJSSURERU5fQUNQSV9UQUJMRSBmbGFnLgorQ29tcGxhaW4gdG8geW91ciBwbGF0Zm9ybS9CSU9TIHZlbmRvciBpZiB5b3UgZmluZCBhIGJ1ZyB3aGljaCBpcyBzbyBzZXZlcgordGhhdCBhIHdvcmthcm91bmQgaXMgbm90IGFjY2VwdGVkIGluIHRoZSBMaW51eCBrZXJuZWwuCisKK1N0aWxsLCBpdCBjYW4gYW5kIHNob3VsZCBiZSBlbmFibGVkIGluIGFueSBrZXJuZWwsIGJlY2F1c2U6CisgIC0gVGhlcmUgaXMgbm8gZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aCBub3QgaW5zdHJ1bWVudGVkIGluaXRyZHMKKyAgLSBJdCBwcm92aWRlcyBhIHBvd2VyZnVsIGZlYXR1cmUgdG8gZWFzaWx5IGRlYnVnIGFuZCB0ZXN0IEFDUEkgQklPUyB0YWJsZQorICAgIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgTGludXgga2VybmVsLgorCisKKzMpIEhvdyBkb2VzIGl0IHdvcmsKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBFeHRyYWN0IHRoZSBtYWNoaW5lJ3MgQUNQSSB0YWJsZXM6CitjZCAvdG1wCithY3BpZHVtcCA+YWNwaWR1bXAKK2FjcGl4dHJhY3QgLWEgYWNwaWR1bXAKKyMgRGlzYXNzZW1ibGUsIG1vZGlmeSBhbmQgcmVjb21waWxlIHRoZW06CitpYXNsIC1kICouZGF0CisjIEZvciBleGFtcGxlIGFkZCB0aGlzIHN0YXRlbWVudCBpbnRvIGEgX1BSVCAoUENJIFJvdXRpbmcgVGFibGUpIGZ1bmN0aW9uCisjIG9mIHRoZSBEU0RUOgorU3RvcmUoIkhFTExPIFdPUkxEIiwgZGVidWcpCitpYXNsIC1zYSBkc2R0LmRzbAorIyBBZGQgdGhlIHJhdyBBQ1BJIHRhYmxlcyB0byBhbiB1bmNvbXByZXNzZWQgY3BpbyBhcmNoaXZlLgorIyBUaGV5IG11c3QgYmUgcHV0IGludG8gYSAva2VybmVsL2Zpcm13YXJlL2FjcGkgZGlyZWN0b3J5IGluc2lkZSB0aGUKKyMgY3BpbyBhcmNoaXZlLgorIyBUaGUgdW5jb21wcmVzc2VkIGNwaW8gYXJjaGl2ZSBtdXN0IGJlIHRoZSBmaXJzdC4KKyMgT3RoZXIsIHR5cGljYWxseSBjb21wcmVzc2VkIGNwaW8gYXJjaGl2ZXMsIG11c3QgYmUKKyMgY29uY2F0ZW5hdGVkIG9uIHRvcCBvZiB0aGUgdW5jb21wcmVzc2VkIG9uZS4KK21rZGlyIC1wIGtlcm5lbC9maXJtd2FyZS9hY3BpCitjcCBkc2R0LmFtbCBrZXJuZWwvZmlybXdhcmUvYWNwaQorIyBBIG1heGltdW0gb2Y6ICNkZWZpbmUgQUNQSV9PVkVSUklERV9UQUJMRVMgMTAKKyMgdGFibGVzIGFyZSAgY3VycmVudGx5IGFsbG93ZWQgKHNlZSBvc2wuYyk6CitpYXNsIC1zYSBmYWNwLmRzbAoraWFzbCAtc2Egc3NkdDEuZHNsCitjcCBmYWNwLmFtbCBrZXJuZWwvZmlybXdhcmUvYWNwaQorY3Agc3NkdDEuYW1sIGtlcm5lbC9maXJtd2FyZS9hY3BpCisjIENyZWF0ZSB0aGUgdW5jb21wcmVzc2VkIGNwaW8gYXJjaGl2ZSBhbmQgY29uY2F0ZW5hdGUgdGhlIG9yaWdpbmFsIGluaXRyZAorIyBvbiB0b3A6CitmaW5kIGtlcm5lbCB8IGNwaW8gLUggbmV3YyAtLWNyZWF0ZSA+IC9ib290L2luc3RydW1lbnRlZF9pbml0cmQKK2NhdCAvYm9vdC9pbml0cmQgPj4vYm9vdC9pbnN0cnVtZW50ZWRfaW5pdHJkCisjIHJlYm9vdCB3aXRoIGluY3JlYXNlZCBhY3BpIGRlYnVnIGxldmVsLCBlLmcuIGJvb3QgcGFyYW1zOgorYWNwaS5kZWJ1Z19sZXZlbD0weDIgYWNwaS5kZWJ1Z19sYXllcj0weEZGRkZGRkZGCisjIGFuZCBjaGVjayB5b3VyIHN5c2xvZzoKK1sgICAgMS4yNjgwODldIEFDUEk6IFBDSSBJbnRlcnJ1cHQgUm91dGluZyBUYWJsZSBbXF9TQl8uUENJMC5fUFJUXQorWyAgICAxLjI3MjA5MV0gW0FDUEkgRGVidWddICBTdHJpbmcgWzB4MEJdICJIRUxMTyBXT1JMRCIKKworaWFzbCBpcyBhYmxlIHRvIGRpc2Fzc2VtYmxlIGFuZCByZWNvbXBpbGUgcXVpdGUgYSBsb3QgZGlmZmVyZW50LAorYWxzbyBzdGF0aWMgQUNQSSB0YWJsZXMuCisKKworNCkgV2hlcmUgdG8gcmV0cmlldmUgdXNlcnNwYWNlIHRvb2xzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaWFzbCBhbmQgYWNwaXh0cmFjdCBhcmUgcGFydCBvZiBJbnRlbCdzIEFDUElDQSBwcm9qZWN0OgoraHR0cDovL2FjcGljYS5vcmcvCithbmQgc2hvdWxkIGJlIHBhY2thZ2VkIGJ5IGRpc3RyaWJ1dGlvbnMgKGZvciBleGFtcGxlIGluIHRoZSBhY3BpY2EgcGFja2FnZQorb24gU1VTRSkuCisKK2FjcGlkdW1wIGNhbiBiZSBmb3VuZCBpbiBMZW4gQnJvd25zIHBtdG9vbHM6CitmdHA6Ly9rZXJuZWwub3JnL3B1Yi9saW51eC9rZXJuZWwvcGVvcGxlL2xlbmIvYWNwaS91dGlscy9wbXRvb2xzL2FjcGlkdW1wCitUaGlzIHRvb2wgaXMgYWxzbyBwYXJ0IG9mIHRoZSBhY3BpY2EgcGFja2FnZSBvbiBTVVNFLgorQWx0ZXJuYXRpdmVseSwgdXNlZCBBQ1BJIHRhYmxlcyBjYW4gYmUgcmV0cmlldmVkIHZpYSBzeXNmcyBpbiBsYXRlc3Qga2VybmVsczoKKy9zeXMvZmlybXdhcmUvYWNwaS90YWJsZXMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYWNwaS9tZXRob2QtY3VzdG9taXppbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9hY3BpL21ldGhvZC1jdXN0b21pemluZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY1NTM3MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYWNwaS9tZXRob2QtY3VzdG9taXppbmcudHh0CkBAIC0wLDAgKzEsNzMgQEAKK0xpbnV4IEFDUEkgQ3VzdG9tIENvbnRyb2wgTWV0aG9kIEhvdyBUbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1dyaXR0ZW4gYnkgWmhhbmcgUnVpIDxydWkuemhhbmdAaW50ZWwuY29tPgorCisKK0xpbnV4IHN1cHBvcnRzIGN1c3RvbWl6aW5nIEFDUEkgY29udHJvbCBtZXRob2RzIGF0IHJ1bnRpbWUuCisKK1VzZXJzIGNhbiB1c2UgdGhpcyB0bworMS4gb3ZlcnJpZGUgYW4gZXhpc3RpbmcgbWV0aG9kIHdoaWNoIG1heSBub3Qgd29yayBjb3JyZWN0bHksCisgICBvciBqdXN0IGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuCisyLiBpbnNlcnQgYSBjb21wbGV0ZWx5IG5ldyBtZXRob2QgaW4gb3JkZXIgdG8gY3JlYXRlIGEgbWlzc2luZworICAgbWV0aG9kIHN1Y2ggYXMgX09GRiwgX09OLCBfU1RBLCBfSU5JLCBldGMuCitGb3IgdGhlc2UgY2FzZXMsIGl0IGlzIGZhciBzaW1wbGVyIHRvIGR5bmFtaWNhbGx5IGluc3RhbGwgYSBzaW5nbGUKK2NvbnRyb2wgbWV0aG9kIHJhdGhlciB0aGFuIG92ZXJyaWRlIHRoZSBlbnRpcmUgRFNEVCwgYmVjYXVzZSBrZXJuZWwKK3JlYnVpbGQvcmVib290IGlzIG5vdCBuZWVkZWQgYW5kIHRlc3QgcmVzdWx0IGNhbiBiZSBnb3QgaW4gbWludXRlcy4KKworTm90ZTogT25seSBBQ1BJIE1FVEhPRCBjYW4gYmUgb3ZlcnJpZGRlbiwgYW55IG90aGVyIG9iamVjdCB0eXBlcyBsaWtlCisgICAgICAiRGV2aWNlIiwgIk9wZXJhdGlvblJlZ2lvbiIsIGFyZSBub3QgcmVjb2duaXplZC4KK05vdGU6IFRoZSBzYW1lIEFDUEkgY29udHJvbCBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gZm9yIG1hbnkgdGltZXMsCisgICAgICBhbmQgaXQncyBhbHdheXMgdGhlIGxhdGVzdCBvbmUgdGhhdCB1c2VkIGJ5IExpbnV4L2tlcm5lbC4KK05vdGU6IFRvIGdldCB0aGUgQUNQSSBkZWJ1ZyBvYmplY3Qgb3V0cHV0IChTdG9yZSAoQUFBQSwgRGVidWcpKSwKKyAgICAgIHBsZWFzZSBydW4gImVjaG8gMSA+IC9zeXMvbW9kdWxlL2FjcGkvcGFyYW1ldGVycy9hbWxfZGVidWdfb3V0cHV0Ii4KKworMS4gb3ZlcnJpZGUgYW4gZXhpc3RpbmcgbWV0aG9kCisgICBhKSBnZXQgdGhlIEFDUEkgdGFibGUgdmlhIEFDUEkgc3lzZnMgSS9GLiBlLmcuIHRvIGdldCB0aGUgRFNEVCwKKyAgICAgIGp1c3QgcnVuICJjYXQgL3N5cy9maXJtd2FyZS9hY3BpL3RhYmxlcy9EU0RUID4gL3RtcC9kc2R0LmRhdCIKKyAgIGIpIGRpc2Fzc2VtYmxlIHRoZSB0YWJsZSBieSBydW5uaW5nICJpYXNsIC1kIGRzZHQuZGF0Ii4KKyAgIGMpIHJld3JpdGUgdGhlIEFTTCBjb2RlIG9mIHRoZSBtZXRob2QgYW5kIHNhdmUgaXQgaW4gYSBuZXcgZmlsZSwKKyAgIGQpIHBhY2thZ2UgdGhlIG5ldyBmaWxlIChwc3IuYXNsKSB0byBhbiBBQ1BJIHRhYmxlIGZvcm1hdC4KKyAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIGN1c3RvbWl6ZWQgXF9TQi5fQUMuX1BTUiBtZXRob2QsCisKKyAgICAgIERlZmluaXRpb25CbG9jayAoIiIsICJTU0RUIiwgMSwgIiIsICIiLCAweDIwMDgwNzE1KQorICAgICAgeworCUV4dGVybmFsIChBQ09OKQorCisJTWV0aG9kIChcX1NCXy5BQy5fUFNSLCAwLCBOb3RTZXJpYWxpemVkKQorCXsKKwkJU3RvcmUgKCJJbiBBQyBfUFNSIiwgRGVidWcpCisJCVJldHVybiAoQUNPTikKKwl9CisgICAgICB9CisgICAgICBOb3RlIHRoYXQgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIG1ldGhvZCBpbiBBQ1BJIG5hbWVzcGFjZQorICAgICAgc2hvdWxkIGJlIHVzZWQuCisgICAgICBBbmQgcmVtZW1iZXIgdG8gdXNlICJFeHRlcm5hbCIgdG8gZGVjbGFyZSBleHRlcm5hbCBvYmplY3RzLgorICAgZSkgYXNzZW1ibGUgdGhlIGZpbGUgdG8gZ2VuZXJhdGUgdGhlIEFNTCBjb2RlIG9mIHRoZSBtZXRob2QuCisgICAgICBlLmcuICJpYXNsIHBzci5hc2wiIChwc3IuYW1sIGlzIGdlbmVyYXRlZCBhcyBhIHJlc3VsdCkKKyAgIGYpIG1vdW50IGRlYnVnZnMgYnkgIm1vdW50IC10IGRlYnVnZnMgbm9uZSAvc3lzL2tlcm5lbC9kZWJ1ZyIKKyAgIGcpIG92ZXJyaWRlIHRoZSBvbGQgbWV0aG9kIHZpYSB0aGUgZGVidWdmcyBieSBydW5uaW5nCisgICAgICAiY2F0IC90bXAvcHNyLmFtbCA+IC9zeXMva2VybmVsL2RlYnVnL2FjcGkvY3VzdG9tX21ldGhvZCIKKworMi4gaW5zZXJ0IGEgbmV3IG1ldGhvZAorICAgVGhpcyBpcyBlYXNpZXIgdGhhbiBvdmVycmlkaW5nIGFuIGV4aXN0aW5nIG1ldGhvZC4KKyAgIFdlIGp1c3QgbmVlZCB0byBjcmVhdGUgdGhlIEFTTCBjb2RlIG9mIHRoZSBtZXRob2Qgd2Ugd2FudCB0bworICAgaW5zZXJ0IGFuZCB0aGVuIGZvbGxvdyB0aGUgc3RlcCBjKSB+IGcpIGluIHNlY3Rpb24gMS4KKworMy4gdW5kbyB5b3VyIGNoYW5nZXMKKyAgIFRoZSAidW5kbyIgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGEgbmV3IGluc2VydGVkIG1ldGhvZAorICAgcmlnaHQgbm93LCBpLmUuIHdlIGNhbiBub3QgcmVtb3ZlIGEgbWV0aG9kIGN1cnJlbnRseS4KKyAgIEZvciBhbiBvdmVycmlkZWQgbWV0aG9kLCBpbiBvcmRlciB0byB1bmRvIHlvdXIgY2hhbmdlcywgcGxlYXNlCisgICBzYXZlIGEgY29weSBvZiB0aGUgbWV0aG9kIG9yaWdpbmFsIEFTTCBjb2RlIGluIHN0ZXAgYykgc2VjdGlvbiAxLAorICAgYW5kIHJlZG8gc3RlcCBjKSB+IGcpIHRvIG92ZXJyaWRlIHRoZSBtZXRob2Qgd2l0aCB0aGUgb3JpZ2luYWwgb25lLgorCisKK05vdGU6IFdlIGNhbiB1c2UgYSBrZXJuZWwgd2l0aCBtdWx0aXBsZSBjdXN0b20gQUNQSSBtZXRob2QgcnVubmluZywKKyAgICAgIEJ1dCBlYWNoIGluZGl2aWR1YWwgd3JpdGUgdG8gZGVidWdmcyBjYW4gaW1wbGVtZW50IGEgU0lOR0xFCisgICAgICBtZXRob2Qgb3ZlcnJpZGUuIGkuZS4gaWYgd2Ugd2FudCB0byBpbnNlcnQvb3ZlcnJpZGUgbXVsdGlwbGUKKyAgICAgIEFDUEkgbWV0aG9kcywgd2UgbmVlZCB0byByZWRvIHN0ZXAgYykgfiBnKSBmb3IgbXVsdGlwbGUgdGltZXMuCisKK05vdGU6IEJlIGF3YXJlIHRoYXQgcm9vdCBjYW4gbWlzLXVzZSB0aGlzIGRyaXZlciB0byBtb2RpZnkgYXJiaXRyYXJ5CisgICAgICBtZW1vcnkgYW5kIGdhaW4gYWRkaXRpb25hbCByaWdodHMsIGlmIHJvb3QncyBwcml2aWxlZ2VzIGdvdAorICAgICAgcmVzdHJpY3RlZCAoZm9yIGV4YW1wbGUgaWYgcm9vdCBpcyBub3QgYWxsb3dlZCB0byBsb2FkIGFkZGl0aW9uYWwKKyAgICAgIG1vZHVsZXMgYWZ0ZXIgYm9vdCkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FjcGkvbWV0aG9kLXRyYWNpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9hY3BpL21ldGhvZC10cmFjaW5nLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjUwNWVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hY3BpL21ldGhvZC10cmFjaW5nLnR4dApAQCAtMCwwICsxLDE5MiBAQAorQUNQSUNBIFRyYWNlIEZhY2lsaXR5CisKK0NvcHlyaWdodCAoQykgMjAxNSwgSW50ZWwgQ29ycG9yYXRpb24KK0F1dGhvcjogTHYgWmhlbmcgPGx2LnpoZW5nQGludGVsLmNvbT4KKworCitBYnN0cmFjdDoKKworVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIGZ1bmN0aW9ucyBhbmQgdGhlIGludGVyZmFjZXMgb2YgdGhlIG1ldGhvZAordHJhY2luZyBmYWNpbGl0eS4KKworMS4gRnVuY3Rpb25hbGl0aWVzIGFuZCB1c2FnZSBleGFtcGxlczoKKworICAgQUNQSUNBIHByb3ZpZGVzIG1ldGhvZCB0cmFjaW5nIGNhcGFiaWxpdHkuIEFuZCB0d28gZnVuY3Rpb25zIGFyZQorICAgY3VycmVudGx5IGltcGxlbWVudGVkIHVzaW5nIHRoaXMgY2FwYWJpbGl0eS4KKworICAgQS4gTG9nIHJlZHVjZXIKKyAgIEFDUElDQSBzdWJzeXN0ZW0gcHJvdmlkZXMgZGVidWdnaW5nIG91dHB1dHMgd2hlbiBDT05GSUdfQUNQSV9ERUJVRyBpcworICAgZW5hYmxlZC4gVGhlIGRlYnVnZ2luZyBtZXNzYWdlcyB3aGljaCBhcmUgZGVwbG95ZWQgdmlhCisgICBBQ1BJX0RFQlVHX1BSSU5UKCkgbWFjcm8gY2FuIGJlIHJlZHVjZWQgYXQgMiBsZXZlbHMgLSBwZXItY29tcG9uZW50CisgICBsZXZlbCAoa25vd24gYXMgZGVidWcgbGF5ZXIsIGNvbmZpZ3VyZWQgdmlhCisgICAvc3lzL21vZHVsZS9hY3BpL3BhcmFtZXRlcnMvZGVidWdfbGF5ZXIpIGFuZCBwZXItdHlwZSBsZXZlbCAoa25vd24gYXMKKyAgIGRlYnVnIGxldmVsLCBjb25maWd1cmVkIHZpYSAvc3lzL21vZHVsZS9hY3BpL3BhcmFtZXRlcnMvZGVidWdfbGV2ZWwpLgorCisgICBCdXQgd2hlbiB0aGUgcGFydGljdWxhciBsYXllci9sZXZlbCBpcyBhcHBsaWVkIHRvIHRoZSBjb250cm9sIG1ldGhvZAorICAgZXZhbHVhdGlvbnMsIHRoZSBxdWFudGl0eSBvZiB0aGUgZGVidWdnaW5nIG91dHB1dHMgbWF5IHN0aWxsIGJlIHRvbworICAgbGFyZ2UgdG8gYmUgcHV0IGludG8gdGhlIGtlcm5lbCBsb2cgYnVmZmVyLiBUaGUgaWRlYSB0aHVzIGlzIHdvcmtlZCBvdXQKKyAgIHRvIG9ubHkgZW5hYmxlIHRoZSBwYXJ0aWN1bGFyIGRlYnVnIGxheWVyL2xldmVsIChub3JtYWxseSBtb3JlIGRldGFpbGVkKQorICAgbG9ncyB3aGVuIHRoZSBjb250cm9sIG1ldGhvZCBldmFsdWF0aW9uIGlzIHN0YXJ0ZWQsIGFuZCBkaXNhYmxlIHRoZQorICAgZGV0YWlsZWQgbG9nZ2luZyB3aGVuIHRoZSBjb250cm9sIG1ldGhvZCBldmFsdWF0aW9uIGlzIHN0b3BwZWQuCisKKyAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBleGFtcGxlcyBpbGx1c3RyYXRlIHRoZSB1c2FnZSBvZiB0aGUgImxvZyByZWR1Y2VyIgorICAgZnVuY3Rpb25hbGl0eToKKyAgIGEuIEZpbHRlciBvdXQgdGhlIGRlYnVnIGxheWVyL2xldmVsIG1hdGNoZWQgbG9ncyB3aGVuIGNvbnRyb2wgbWV0aG9kcworICAgICAgYXJlIGJlaW5nIGV2YWx1YXRlZDoKKyAgICAgICMgY2QgL3N5cy9tb2R1bGUvYWNwaS9wYXJhbWV0ZXJzCisgICAgICAjIGVjaG8gIjB4WFhYWFhYWFgiID4gdHJhY2VfZGVidWdfbGF5ZXIKKyAgICAgICMgZWNobyAiMHhZWVlZWVlZWSIgPiB0cmFjZV9kZWJ1Z19sZXZlbAorICAgICAgIyBlY2hvICJlbmFibGUiID4gdHJhY2Vfc3RhdGUKKyAgIGIuIEZpbHRlciBvdXQgdGhlIGRlYnVnIGxheWVyL2xldmVsIG1hdGNoZWQgbG9ncyB3aGVuIHRoZSBzcGVjaWZpZWQKKyAgICAgIGNvbnRyb2wgbWV0aG9kIGlzIGJlaW5nIGV2YWx1YXRlZDoKKyAgICAgICMgY2QgL3N5cy9tb2R1bGUvYWNwaS9wYXJhbWV0ZXJzCisgICAgICAjIGVjaG8gIjB4WFhYWFhYWFgiID4gdHJhY2VfZGVidWdfbGF5ZXIKKyAgICAgICMgZWNobyAiMHhZWVlZWVlZWSIgPiB0cmFjZV9kZWJ1Z19sZXZlbAorICAgICAgIyBlY2hvICJcUFBQUC5BQUFBLlRUVFQuSEhISCIgPiB0cmFjZV9tZXRob2RfbmFtZQorICAgICAgIyBlY2hvICJtZXRob2QiID4gL3N5cy9tb2R1bGUvYWNwaS9wYXJhbWV0ZXJzL3RyYWNlX3N0YXRlCisgICBjLiBGaWx0ZXIgb3V0IHRoZSBkZWJ1ZyBsYXllci9sZXZlbCBtYXRjaGVkIGxvZ3Mgd2hlbiB0aGUgc3BlY2lmaWVkCisgICAgICBjb250cm9sIG1ldGhvZCBpcyBiZWluZyBldmFsdWF0ZWQgZm9yIHRoZSBmaXJzdCB0aW1lOgorICAgICAgIyBjZCAvc3lzL21vZHVsZS9hY3BpL3BhcmFtZXRlcnMKKyAgICAgICMgZWNobyAiMHhYWFhYWFhYWCIgPiB0cmFjZV9kZWJ1Z19sYXllcgorICAgICAgIyBlY2hvICIweFlZWVlZWVlZIiA+IHRyYWNlX2RlYnVnX2xldmVsCisgICAgICAjIGVjaG8gIlxQUFBQLkFBQUEuVFRUVC5ISEhIIiA+IHRyYWNlX21ldGhvZF9uYW1lCisgICAgICAjIGVjaG8gIm1ldGhvZC1vbmNlIiA+IC9zeXMvbW9kdWxlL2FjcGkvcGFyYW1ldGVycy90cmFjZV9zdGF0ZQorICAgV2hlcmU6CisgICAgICAweFhYWFhYWFhYLzB4WVlZWVlZWVk6IFJlZmVyIHRvIERvY3VtZW50YXRpb24vYWNwaS9kZWJ1Zy50eHQgZm9yCisJCQkgICAgIHBvc3NpYmxlIGRlYnVnIGxheWVyL2xldmVsIG1hc2tpbmcgdmFsdWVzLgorICAgICAgXFBQUFAuQUFBQS5UVFRULkhISEg6IEZ1bGwgcGF0aCBvZiBhIGNvbnRyb2wgbWV0aG9kIHRoYXQgY2FuIGJlIGZvdW5kCisJCQkgICAgaW4gdGhlIEFDUEkgbmFtZXNwYWNlLiBJdCBuZWVkbid0IGJlIGFuIGVudHJ5CisJCQkgICAgb2YgYSBjb250cm9sIG1ldGhvZCBldmFsdWF0aW9uLgorCisgICBCLiBBTUwgdHJhY2VyCisKKyAgIFRoZXJlIGFyZSBzcGVjaWFsIGxvZyBlbnRyaWVzIGFkZGVkIGJ5IHRoZSBtZXRob2QgdHJhY2luZyBmYWNpbGl0eSBhdAorICAgdGhlICJ0cmFjZSBwb2ludHMiIHRoZSBBTUwgaW50ZXJwcmV0ZXIgc3RhcnRzL3N0b3BzIHRvIGV4ZWN1dGUgYSBjb250cm9sCisgICBtZXRob2QsIG9yIGFuIEFNTCBvcGNvZGUuIE5vdGUgdGhhdCB0aGUgZm9ybWF0IG9mIHRoZSBsb2cgZW50cmllcyBhcmUKKyAgIHN1YmplY3QgdG8gY2hhbmdlOgorICAgICBbICAgIDAuMTg2NDI3XSAgIGV4ZGVidWctMDM5OCBleF90cmFjZV9wb2ludCAgICAgICAgOiBNZXRob2QgQmVnaW4gWzB4ZjU4Mzk0ZDg6XF9TQi5QQ0kwLkxQQ0IuRUNPS10gZXhlY3V0aW9uLgorICAgICBbICAgIDAuMTg2NjMwXSAgIGV4ZGVidWctMDM5OCBleF90cmFjZV9wb2ludCAgICAgICAgOiBPcGNvZGUgQmVnaW4gWzB4ZjU5MDVjODg6SWZdIGV4ZWN1dGlvbi4KKyAgICAgWyAgICAwLjE4NjgyMF0gICBleGRlYnVnLTAzOTggZXhfdHJhY2VfcG9pbnQgICAgICAgIDogT3Bjb2RlIEJlZ2luIFsweGY1OTA1Y2MwOkxFcXVhbF0gZXhlY3V0aW9uLgorICAgICBbICAgIDAuMTg3MDEwXSAgIGV4ZGVidWctMDM5OCBleF90cmFjZV9wb2ludCAgICAgICAgOiBPcGNvZGUgQmVnaW4gWzB4ZjU5MDVhMjA6LU5hbWVQYXRoLV0gZXhlY3V0aW9uLgorICAgICBbICAgIDAuMTg3MjE0XSAgIGV4ZGVidWctMDM5OCBleF90cmFjZV9wb2ludCAgICAgICAgOiBPcGNvZGUgRW5kIFsweGY1OTA1YTIwOi1OYW1lUGF0aC1dIGV4ZWN1dGlvbi4KKyAgICAgWyAgICAwLjE4NzQwN10gICBleGRlYnVnLTAzOTggZXhfdHJhY2VfcG9pbnQgICAgICAgIDogT3Bjb2RlIEJlZ2luIFsweGY1OTA1ZjYwOk9uZV0gZXhlY3V0aW9uLgorICAgICBbICAgIDAuMTg3NTk0XSAgIGV4ZGVidWctMDM5OCBleF90cmFjZV9wb2ludCAgICAgICAgOiBPcGNvZGUgRW5kIFsweGY1OTA1ZjYwOk9uZV0gZXhlY3V0aW9uLgorICAgICBbICAgIDAuMTg3Nzg5XSAgIGV4ZGVidWctMDM5OCBleF90cmFjZV9wb2ludCAgICAgICAgOiBPcGNvZGUgRW5kIFsweGY1OTA1Y2MwOkxFcXVhbF0gZXhlY3V0aW9uLgorICAgICBbICAgIDAuMTg3OTgwXSAgIGV4ZGVidWctMDM5OCBleF90cmFjZV9wb2ludCAgICAgICAgOiBPcGNvZGUgQmVnaW4gWzB4ZjU5MDVjYzA6UmV0dXJuXSBleGVjdXRpb24uCisgICAgIFsgICAgMC4xODgxNDZdICAgZXhkZWJ1Zy0wMzk4IGV4X3RyYWNlX3BvaW50ICAgICAgICA6IE9wY29kZSBCZWdpbiBbMHhmNTkwNWY2MDpPbmVdIGV4ZWN1dGlvbi4KKyAgICAgWyAgICAwLjE4ODMzNF0gICBleGRlYnVnLTAzOTggZXhfdHJhY2VfcG9pbnQgICAgICAgIDogT3Bjb2RlIEVuZCBbMHhmNTkwNWY2MDpPbmVdIGV4ZWN1dGlvbi4KKyAgICAgWyAgICAwLjE4ODUyNF0gICBleGRlYnVnLTAzOTggZXhfdHJhY2VfcG9pbnQgICAgICAgIDogT3Bjb2RlIEVuZCBbMHhmNTkwNWNjMDpSZXR1cm5dIGV4ZWN1dGlvbi4KKyAgICAgWyAgICAwLjE4ODcxMl0gICBleGRlYnVnLTAzOTggZXhfdHJhY2VfcG9pbnQgICAgICAgIDogT3Bjb2RlIEVuZCBbMHhmNTkwNWM4ODpJZl0gZXhlY3V0aW9uLgorICAgICBbICAgIDAuMTg4OTAzXSAgIGV4ZGVidWctMDM5OCBleF90cmFjZV9wb2ludCAgICAgICAgOiBNZXRob2QgRW5kIFsweGY1ODM5NGQ4OlxfU0IuUENJMC5MUENCLkVDT0tdIGV4ZWN1dGlvbi4KKworICAgRGV2ZWxvcGVycyBjYW4gdXRpbGl6ZSB0aGVzZSBzcGVjaWFsIGxvZyBlbnRyaWVzIHRvIHRyYWNrIHRoZSBBTUwKKyAgIGludGVycHJldGlvbiwgdGh1cyBjYW4gYWlkIGlzc3VlIGRlYnVnZ2luZyBhbmQgcGVyZm9ybWFuY2UgdHVuaW5nLiBOb3RlCisgICB0aGF0LCBhcyB0aGUgIkFNTCB0cmFjZXIiIGxvZ3MgYXJlIGltcGxlbWVudGVkIHZpYSBBQ1BJX0RFQlVHX1BSSU5UKCkKKyAgIG1hY3JvLCBDT05GSUdfQUNQSV9ERUJVRyBpcyBhbHNvIHJlcXVpcmVkIHRvIGJlIGVuYWJsZWQgZm9yIGVuYWJsaW5nCisgICAiQU1MIHRyYWNlciIgbG9ncy4KKworICAgVGhlIGZvbGxvd2luZyBjb21tYW5kIGV4YW1wbGVzIGlsbHVzdHJhdGUgdGhlIHVzYWdlIG9mIHRoZSAiQU1MIHRyYWNlciIKKyAgIGZ1bmN0aW9uYWxpdHk6CisgICBhLiBGaWx0ZXIgb3V0IHRoZSBtZXRob2Qgc3RhcnQvc3RvcCAiQU1MIHRyYWNlciIgbG9ncyB3aGVuIGNvbnRyb2wKKyAgICAgIG1ldGhvZHMgYXJlIGJlaW5nIGV2YWx1YXRlZDoKKyAgICAgICMgY2QgL3N5cy9tb2R1bGUvYWNwaS9wYXJhbWV0ZXJzCisgICAgICAjIGVjaG8gIjB4ODAiID4gdHJhY2VfZGVidWdfbGF5ZXIKKyAgICAgICMgZWNobyAiMHgxMCIgPiB0cmFjZV9kZWJ1Z19sZXZlbAorICAgICAgIyBlY2hvICJlbmFibGUiID4gdHJhY2Vfc3RhdGUKKyAgIGIuIEZpbHRlciBvdXQgdGhlIG1ldGhvZCBzdGFydC9zdG9wICJBTUwgdHJhY2VyIiB3aGVuIHRoZSBzcGVjaWZpZWQKKyAgICAgIGNvbnRyb2wgbWV0aG9kIGlzIGJlaW5nIGV2YWx1YXRlZDoKKyAgICAgICMgY2QgL3N5cy9tb2R1bGUvYWNwaS9wYXJhbWV0ZXJzCisgICAgICAjIGVjaG8gIjB4ODAiID4gdHJhY2VfZGVidWdfbGF5ZXIKKyAgICAgICMgZWNobyAiMHgxMCIgPiB0cmFjZV9kZWJ1Z19sZXZlbAorICAgICAgIyBlY2hvICJcUFBQUC5BQUFBLlRUVFQuSEhISCIgPiB0cmFjZV9tZXRob2RfbmFtZQorICAgICAgIyBlY2hvICJtZXRob2QiID4gdHJhY2Vfc3RhdGUKKyAgIGMuIEZpbHRlciBvdXQgdGhlIG1ldGhvZCBzdGFydC9zdG9wICJBTUwgdHJhY2VyIiBsb2dzIHdoZW4gdGhlIHNwZWNpZmllZAorICAgICAgY29udHJvbCBtZXRob2QgaXMgYmVpbmcgZXZhbHVhdGVkIGZvciB0aGUgZmlyc3QgdGltZToKKyAgICAgICMgY2QgL3N5cy9tb2R1bGUvYWNwaS9wYXJhbWV0ZXJzCisgICAgICAjIGVjaG8gIjB4ODAiID4gdHJhY2VfZGVidWdfbGF5ZXIKKyAgICAgICMgZWNobyAiMHgxMCIgPiB0cmFjZV9kZWJ1Z19sZXZlbAorICAgICAgIyBlY2hvICJcUFBQUC5BQUFBLlRUVFQuSEhISCIgPiB0cmFjZV9tZXRob2RfbmFtZQorICAgICAgIyBlY2hvICJtZXRob2Qtb25jZSIgPiB0cmFjZV9zdGF0ZQorICAgZC4gRmlsdGVyIG91dCB0aGUgbWV0aG9kL29wY29kZSBzdGFydC9zdG9wICJBTUwgdHJhY2VyIiB3aGVuIHRoZQorICAgICAgc3BlY2lmaWVkIGNvbnRyb2wgbWV0aG9kIGlzIGJlaW5nIGV2YWx1YXRlZDoKKyAgICAgICMgY2QgL3N5cy9tb2R1bGUvYWNwaS9wYXJhbWV0ZXJzCisgICAgICAjIGVjaG8gIjB4ODAiID4gdHJhY2VfZGVidWdfbGF5ZXIKKyAgICAgICMgZWNobyAiMHgxMCIgPiB0cmFjZV9kZWJ1Z19sZXZlbAorICAgICAgIyBlY2hvICJcUFBQUC5BQUFBLlRUVFQuSEhISCIgPiB0cmFjZV9tZXRob2RfbmFtZQorICAgICAgIyBlY2hvICJvcGNvZGUiID4gdHJhY2Vfc3RhdGUKKyAgIGUuIEZpbHRlciBvdXQgdGhlIG1ldGhvZC9vcGNvZGUgc3RhcnQvc3RvcCAiQU1MIHRyYWNlciIgd2hlbiB0aGUKKyAgICAgIHNwZWNpZmllZCBjb250cm9sIG1ldGhvZCBpcyBiZWluZyBldmFsdWF0ZWQgZm9yIHRoZSBmaXJzdCB0aW1lOgorICAgICAgIyBjZCAvc3lzL21vZHVsZS9hY3BpL3BhcmFtZXRlcnMKKyAgICAgICMgZWNobyAiMHg4MCIgPiB0cmFjZV9kZWJ1Z19sYXllcgorICAgICAgIyBlY2hvICIweDEwIiA+IHRyYWNlX2RlYnVnX2xldmVsCisgICAgICAjIGVjaG8gIlxQUFBQLkFBQUEuVFRUVC5ISEhIIiA+IHRyYWNlX21ldGhvZF9uYW1lCisgICAgICAjIGVjaG8gIm9wY29kZS1vcGNvZGUiID4gdHJhY2Vfc3RhdGUKKworICBOb3RlIHRoYXQgYWxsIGFib3ZlIG1ldGhvZCB0cmFjaW5nIGZhY2lsaXR5IHJlbGF0ZWQgbW9kdWxlIHBhcmFtZXRlcnMgY2FuCisgIGJlIHVzZWQgYXMgdGhlIGJvb3QgcGFyYW1ldGVycywgZm9yIGV4YW1wbGU6CisgICAgICBhY3BpLnRyYWNlX2RlYnVnX2xheWVyPTB4ODAgYWNwaS50cmFjZV9kZWJ1Z19sZXZlbD0weDEwIFwKKyAgICAgIGFjcGkudHJhY2VfbWV0aG9kX25hbWU9XF9TQi5MSUQwLl9MSUQgYWNwaS50cmFjZV9zdGF0ZT1vcGNvZGUtb25jZQorCisyLiBJbnRlcmZhY2UgZGVzY3JpcHRpb25zOgorCisgICBBbGwgbWV0aG9kIHRyYWNpbmcgZnVuY3Rpb25zIGNhbiBiZSBjb25maWd1cmVkIHZpYSBBQ1BJIG1vZHVsZQorICAgcGFyYW1ldGVycyB0aGF0IGFyZSBhY2Nlc3NpYmxlIGF0IC9zeXMvbW9kdWxlL2FjcGkvcGFyYW1ldGVycy86CisKKyAgIHRyYWNlX21ldGhvZF9uYW1lCisJVGhlIGZ1bGwgcGF0aCBvZiB0aGUgQU1MIG1ldGhvZCB0aGF0IHRoZSB1c2VyIHdhbnRzIHRvIHRyYWNlLgorCU5vdGUgdGhhdCB0aGUgZnVsbCBwYXRoIHNob3VsZG4ndCBjb250YWluIHRoZSB0cmFpbGluZyAiXyJzIGluIGl0cworCW5hbWUgc2VnbWVudHMgYnV0IG1heSBjb250YWluICJcIiB0byBmb3JtIGFuIGFic29sdXRlIHBhdGguCisKKyAgIHRyYWNlX2RlYnVnX2xheWVyCisJVGhlIHRlbXBvcmFyeSBkZWJ1Z19sYXllciB1c2VkIHdoZW4gdGhlIHRyYWNpbmcgZmVhdHVyZSBpcyBlbmFibGVkLgorCVVzaW5nIEFDUElfRVhFQ1VURVIgKDB4ODApIGJ5IGRlZmF1bHQsIHdoaWNoIGlzIHRoZSBkZWJ1Z19sYXllcgorCXVzZWQgdG8gbWF0Y2ggYWxsICJBTUwgdHJhY2VyIiBsb2dzLgorCisgICB0cmFjZV9kZWJ1Z19sZXZlbAorCVRoZSB0ZW1wb3JhcnkgZGVidWdfbGV2ZWwgdXNlZCB3aGVuIHRoZSB0cmFjaW5nIGZlYXR1cmUgaXMgZW5hYmxlZC4KKwlVc2luZyBBQ1BJX0xWX1RSQUNFX1BPSU5UICgweDEwKSBieSBkZWZhdWx0LCB3aGljaCBpcyB0aGUKKwlkZWJ1Z19sZXZlbCB1c2VkIHRvIG1hdGNoIGFsbCAiQU1MIHRyYWNlciIgbG9ncy4KKworICAgdHJhY2Vfc3RhdGUKKwlUaGUgc3RhdHVzIG9mIHRoZSB0cmFjaW5nIGZlYXR1cmUuCisJVXNlcnMgY2FuIGVuYWJsZS9kaXNhYmxlIHRoaXMgZGVidWcgdHJhY2luZyBmZWF0dXJlIGJ5IGV4ZWN1dGluZworCXRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKwkgICAgIyBlY2hvIHN0cmluZyA+IC9zeXMvbW9kdWxlL2FjcGkvcGFyYW1ldGVycy90cmFjZV9zdGF0ZQorCVdoZXJlICJzdHJpbmciIHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZ3M6CisJImRpc2FibGUiCisJICAgIERpc2FibGUgdGhlIG1ldGhvZCB0cmFjaW5nIGZlYXR1cmUuCisJImVuYWJsZSIKKwkgICAgRW5hYmxlIHRoZSBtZXRob2QgdHJhY2luZyBmZWF0dXJlLgorCSAgICBBQ1BJQ0EgZGVidWdnaW5nIG1lc3NhZ2VzIG1hdGNoaW5nCisJICAgICJ0cmFjZV9kZWJ1Z19sYXllci90cmFjZV9kZWJ1Z19sZXZlbCIgZHVyaW5nIGFueSBtZXRob2QKKwkgICAgZXhlY3V0aW9uIHdpbGwgYmUgbG9nZ2VkLgorCSJtZXRob2QiCisJICAgIEVuYWJsZSB0aGUgbWV0aG9kIHRyYWNpbmcgZmVhdHVyZS4KKwkgICAgQUNQSUNBIGRlYnVnZ2luZyBtZXNzYWdlcyBtYXRjaGluZworCSAgICAidHJhY2VfZGVidWdfbGF5ZXIvdHJhY2VfZGVidWdfbGV2ZWwiIGR1cmluZyBtZXRob2QgZXhlY3V0aW9uCisJICAgIG9mICJ0cmFjZV9tZXRob2RfbmFtZSIgd2lsbCBiZSBsb2dnZWQuCisJIm1ldGhvZC1vbmNlIgorCSAgICBFbmFibGUgdGhlIG1ldGhvZCB0cmFjaW5nIGZlYXR1cmUuCisJICAgIEFDUElDQSBkZWJ1Z2dpbmcgbWVzc2FnZXMgbWF0Y2hpbmcKKwkgICAgInRyYWNlX2RlYnVnX2xheWVyL3RyYWNlX2RlYnVnX2xldmVsIiBkdXJpbmcgbWV0aG9kIGV4ZWN1dGlvbgorCSAgICBvZiAidHJhY2VfbWV0aG9kX25hbWUiIHdpbGwgYmUgbG9nZ2VkIG9ubHkgb25jZS4KKwkib3Bjb2RlIgorCSAgICBFbmFibGUgdGhlIG1ldGhvZCB0cmFjaW5nIGZlYXR1cmUuCisJICAgIEFDUElDQSBkZWJ1Z2dpbmcgbWVzc2FnZXMgbWF0Y2hpbmcKKwkgICAgInRyYWNlX2RlYnVnX2xheWVyL3RyYWNlX2RlYnVnX2xldmVsIiBkdXJpbmcgbWV0aG9kL29wY29kZQorCSAgICBleGVjdXRpb24gb2YgInRyYWNlX21ldGhvZF9uYW1lIiB3aWxsIGJlIGxvZ2dlZC4KKwkib3Bjb2RlLW9uY2UiCisJICAgIEVuYWJsZSB0aGUgbWV0aG9kIHRyYWNpbmcgZmVhdHVyZS4KKwkgICAgQUNQSUNBIGRlYnVnZ2luZyBtZXNzYWdlcyBtYXRjaGluZworCSAgICAidHJhY2VfZGVidWdfbGF5ZXIvdHJhY2VfZGVidWdfbGV2ZWwiIGR1cmluZyBtZXRob2Qvb3Bjb2RlCisJICAgIGV4ZWN1dGlvbiBvZiAidHJhY2VfbWV0aG9kX25hbWUiIHdpbGwgYmUgbG9nZ2VkIG9ubHkgb25jZS4KKwlOb3RlIHRoYXQsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlICJlbmFibGUiIGFuZCBvdGhlciBmZWF0dXJlCisgICAgICAgIGVuYWJsaW5nIG9wdGlvbnMgYXJlOgorCTEuIFdoZW4gImVuYWJsZSIgaXMgc3BlY2lmaWVkLCBzaW5jZQorCSAgICJ0cmFjZV9kZWJ1Z19sYXllci90cmFjZV9kZWJ1Z19sZXZlbCIgc2hhbGwgYXBwbHkgdG8gYWxsIGNvbnRyb2wKKwkgICBtZXRob2QgZXZhbHVhdGlvbnMsIGFmdGVyIGNvbmZpZ3VyaW5nICJ0cmFjZV9zdGF0ZSIgdG8gImVuYWJsZSIsCisJICAgInRyYWNlX21ldGhvZF9uYW1lIiB3aWxsIGJlIHJlc2V0IHRvIE5VTEwuCisJMi4gV2hlbiAibWV0aG9kL29wY29kZSIgaXMgc3BlY2lmaWVkLCBpZgorCSAgICJ0cmFjZV9tZXRob2RfbmFtZSIgaXMgTlVMTCB3aGVuICJ0cmFjZV9zdGF0ZSIgaXMgY29uZmlndXJlZCB0bworCSAgIHRoZXNlIG9wdGlvbnMsIHRoZSAidHJhY2VfZGVidWdfbGF5ZXIvdHJhY2VfZGVidWdfbGV2ZWwiIHdpbGwKKwkgICBhcHBseSB0byBhbGwgY29udHJvbCBtZXRob2QgZXZhbHVhdGlvbnMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FjcGkvbmFtZXNwYWNlLnR4dCBiL0RvY3VtZW50YXRpb24vYWNwaS9uYW1lc3BhY2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4NjBjYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FjcGkvbmFtZXNwYWNlLnR4dApAQCAtMCwwICsxLDM4OCBAQAorQUNQSSBEZXZpY2UgVHJlZSAtIFJlcHJlc2VudGF0aW9uIG9mIEFDUEkgTmFtZXNwYWNlCisKK0NvcHlyaWdodCAoQykgMjAxMywgSW50ZWwgQ29ycG9yYXRpb24KK0F1dGhvcjogTHYgWmhlbmcgPGx2LnpoZW5nQGludGVsLmNvbT4KKworCitBYnN0cmFjdDoKKworVGhlIExpbnV4IEFDUEkgc3Vic3lzdGVtIGNvbnZlcnRzIEFDUEkgbmFtZXNwYWNlIG9iamVjdHMgaW50byBhIExpbnV4CitkZXZpY2UgdHJlZSB1bmRlciB0aGUgL3N5cy9kZXZpY2VzL0xOWFNZU1RFTTowMCBhbmQgdXBkYXRlcyBpdCB1cG9uCityZWNlaXZpbmcgQUNQSSBob3RwbHVnIG5vdGlmaWNhdGlvbiBldmVudHMuICBGb3IgZWFjaCBkZXZpY2Ugb2JqZWN0IGluIHRoaXMKK2hpZXJhcmNoeSB0aGVyZSBpcyBhIGNvcnJlc3BvbmRpbmcgc3ltYm9saWMgbGluayBpbiB0aGUKKy9zeXMvYnVzL2FjcGkvZGV2aWNlcy4KK1RoaXMgZG9jdW1lbnQgaWxsdXN0cmF0ZXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgQUNQSSBkZXZpY2UgdHJlZS4KKworCitDcmVkaXQ6CisKK1RoYW5rcyBmb3IgdGhlIGhlbHAgZnJvbSBaaGFuZyBSdWkgPHJ1aS56aGFuZ0BpbnRlbC5jb20+IGFuZCBSYWZhZWwgSi4KK1d5c29ja2kgPHJhZmFlbC5qLnd5c29ja2lAaW50ZWwuY29tPi4KKworCisxLiBBQ1BJIERlZmluaXRpb24gQmxvY2tzCisKKyAgIFRoZSBBQ1BJIGZpcm13YXJlIHNldHMgdXAgUlNEUCAoUm9vdCBTeXN0ZW0gRGVzY3JpcHRpb24gUG9pbnRlcikgaW4gdGhlCisgICBzeXN0ZW0gbWVtb3J5IGFkZHJlc3Mgc3BhY2UgcG9pbnRpbmcgdG8gdGhlIFhTRFQgKEV4dGVuZGVkIFN5c3RlbQorICAgRGVzY3JpcHRpb24gVGFibGUpLiAgVGhlIFhTRFQgYWx3YXlzIHBvaW50cyB0byB0aGUgRkFEVCAoRml4ZWQgQUNQSQorICAgRGVzY3JpcHRpb24gVGFibGUpIHVzaW5nIGl0cyBmaXJzdCBlbnRyeSwgdGhlIGRhdGEgd2l0aGluIHRoZSBGQURUCisgICBpbmNsdWRlcyB2YXJpb3VzIGZpeGVkLWxlbmd0aCBlbnRyaWVzIHRoYXQgZGVzY3JpYmUgZml4ZWQgQUNQSSBmZWF0dXJlcworICAgb2YgdGhlIGhhcmR3YXJlLiAgVGhlIEZBRFQgY29udGFpbnMgYSBwb2ludGVyIHRvIHRoZSBEU0RUCisgICAoRGlmZmVyZW50aWF0ZWQgU3lzdGVtIERlc2NyaXBpdGlvbiBUYWJsZSkuICBUaGUgWFNEVCBhbHNvIGNvbnRhaW5zCisgICBlbnRyaWVzIHBvaW50aW5nIHRvIHBvc3NpYmx5IG11bHRpcGxlIFNTRFRzIChTZWNvbmRhcnkgU3lzdGVtCisgICBEZXNjcmlwdGlvbiBUYWJsZSkuCisKKyAgIFRoZSBEU0RUIGFuZCBTU0RUIGRhdGEgaXMgb3JnYW5pemVkIGluIGRhdGEgc3RydWN0dXJlcyBjYWxsZWQgZGVmaW5pdGlvbgorICAgYmxvY2tzIHRoYXQgY29udGFpbiBkZWZpbml0aW9ucyBvZiB2YXJpb3VzIG9iamVjdHMsIGluY2x1ZGluZyBBQ1BJCisgICBjb250cm9sIG1ldGhvZHMsIGVuY29kZWQgaW4gQU1MIChBQ1BJIE1hY2hpbmUgTGFuZ3VhZ2UpLiAgVGhlIGRhdGEgYmxvY2sKKyAgIG9mIHRoZSBEU0RUIGFsb25nIHdpdGggdGhlIGNvbnRlbnRzIG9mIFNTRFRzIHJlcHJlc2VudHMgYSBoaWVyYXJjaGljYWwKKyAgIGRhdGEgc3RydWN0dXJlIGNhbGxlZCB0aGUgQUNQSSBuYW1lc3BhY2Ugd2hvc2UgdG9wb2xvZ3kgcmVmbGVjdHMgdGhlCisgICBzdHJ1Y3R1cmUgb2YgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgcGxhdGZvcm0uCisKKyAgIFRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gQUNQSSBTeXN0ZW0gRGVmaW5pdGlvbiBUYWJsZXMgZGVzY3JpYmVkIGFib3ZlCisgICBhcmUgaWxsdXN0cmF0ZWQgaW4gdGhlIGZvbGxvd2luZyBkaWFncmFtLgorCisgICAgICstLS0tLS0tLS0rICAgICstLS0tLS0tKyAgICArLS0tLS0tLS0rICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgIHwgIFJTRFAgICB8ICstPnwgWFNEVCAgfCArLT58ICBGQURUICB8ICAgIHwgICstLS0tLS0tLS0tLS0tLS0tLS0tKyB8CisgICAgICstLS0tLS0tLS0rIHwgICstLS0tLS0tKyB8ICArLS0tLS0tLS0rICArLXwtPnwgICAgICAgRFNEVCAgICAgICAgfCB8CisgICAgIHwgUG9pbnRlciB8IHwgIHwgRW50cnkgfC0rICB8IC4uLi4uLiB8ICB8IHwgICstLS0tLS0tLS0tLS0tLS0tLS0tKyB8CisgICAgICstLS0tLS0tLS0rIHwgICstLS0tLS0tKyAgICB8IFhfRFNEVCB8LS0rIHwgIHwgRGVmaW5pdGlvbiBCbG9ja3MgfCB8CisgICAgIHwgUG9pbnRlciB8LSsgIHwgLi4uLi4gfCAgICB8IC4uLi4uLiB8ICAgIHwgICstLS0tLS0tLS0tLS0tLS0tLS0tKyB8CisgICAgICstLS0tLS0tLS0rICAgICstLS0tLS0tKyAgICArLS0tLS0tLS0rICAgIHwgICstLS0tLS0tLS0tLS0tLS0tLS0tKyB8CisgICAgICAgICAgICAgICAgICAgIHwgRW50cnkgfC0tLS0tLS0tLS0tLS0tLS0tLXwtPnwgICAgICAgU1NEVCAgICAgICAgfCB8CisgICAgICAgICAgICAgICAgICAgICstIC0gLSAtKyAgICAgICAgICAgICAgICAgIHwgICstLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICAgICAgICAgICAgICAgICAgIHwgRW50cnkgfCAtIC0gLSAtIC0gLSAtIC0rIHwgIHwgRGVmaW5pdGlvbiBCbG9ja3MgfCB8CisgICAgICAgICAgICAgICAgICAgICstIC0gLSAtKyAgICAgICAgICAgICAgICB8IHwgICstLS0tLS0tLS0tLS0tLS0tLS0tKyB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgICstIC0gLSAtIC0gLSAtIC0gLSAtKyB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLXwtPnwgICAgICAgU1NEVCAgICAgICAgfCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICstLS0tLS0tLS0tLS0tLS0tLS0tKyB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwgRGVmaW5pdGlvbiBCbG9ja3MgfCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICstIC0gLSAtIC0gLSAtIC0gLSAtKyB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPU1BNIExvYWRpbmcgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx8LworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQUNQSSBOYW1lc3BhY2UgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tKworCisgICAgICAgICAgICAgICAgICAgICBGaWd1cmUgMS4gQUNQSSBEZWZpbml0aW9uIEJsb2NrcworCisgICBOT1RFOiBSU0RQIGNhbiBhbHNvIGNvbnRhaW4gYSBwb2ludGVyIHRvIHRoZSBSU0RUIChSb290IFN5c3RlbQorICAgICAgICAgRGVzY3JpcHRpb24gVGFibGUpLiAgUGxhdGZvcm1zIHByb3ZpZGUgUlNEVCB0byBlbmFibGUKKyAgICAgICAgIGNvbXBhdGliaWxpdHkgd2l0aCBBQ1BJIDEuMCBvcGVyYXRpbmcgc3lzdGVtcy4gIFRoZSBPUyBpcyBleHBlY3RlZAorICAgICAgICAgdG8gdXNlIFhTRFQsIGlmIHByZXNlbnQuCisKKworMi4gRXhhbXBsZSBBQ1BJIE5hbWVzcGFjZQorCisgICBBbGwgZGVmaW5pdGlvbiBibG9ja3MgYXJlIGxvYWRlZCBpbnRvIGEgc2luZ2xlIG5hbWVzcGFjZS4gIFRoZSBuYW1lc3BhY2UKKyAgIGlzIGEgaGllcmFyY2h5IG9mIG9iamVjdHMgaWRlbnRpZmllZCBieSBuYW1lcyBhbmQgcGF0aHMuCisgICBUaGUgZm9sbG93aW5nIG5hbWluZyBjb252ZW50aW9ucyBhcHBseSB0byBvYmplY3QgbmFtZXMgaW4gdGhlIEFDUEkKKyAgIG5hbWVzcGFjZToKKyAgIDEuIEFsbCBuYW1lcyBhcmUgMzIgYml0cyBsb25nLgorICAgMi4gVGhlIGZpcnN0IGJ5dGUgb2YgYSBuYW1lIG11c3QgYmUgb25lIG9mICdBJyAtICdaJywgJ18nLgorICAgMy4gRWFjaCBvZiB0aGUgcmVtYWluaW5nIGJ5dGVzIG9mIGEgbmFtZSBtdXN0IGJlIG9uZSBvZiAnQScgLSAnWicsICcwJworICAgICAgLSAnOScsICdfJy4KKyAgIDQuIE5hbWVzIHN0YXJ0aW5nIHdpdGggJ18nIGFyZSByZXNlcnZlZCBieSB0aGUgQUNQSSBzcGVjaWZpY2F0aW9uLgorICAgNS4gVGhlICdcJyBzeW1ib2wgcmVwcmVzZW50cyB0aGUgcm9vdCBvZiB0aGUgbmFtZXNwYWNlIChpLmUuIG5hbWVzCisgICAgICBwcmVwZW5kZWQgd2l0aCAnXCcgYXJlIHJlbGF0aXZlIHRvIHRoZSBuYW1lc3BhY2Ugcm9vdCkuCisgICA2LiBUaGUgJ14nIHN5bWJvbCByZXByZXNlbnRzIHRoZSBwYXJlbnQgb2YgdGhlIGN1cnJlbnQgbmFtZXNwYWNlIG5vZGUKKyAgICAgIChpLmUuIG5hbWVzIHByZXBlbmRlZCB3aXRoICdeJyBhcmUgcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBvZiB0aGUKKyAgICAgIGN1cnJlbnQgbmFtZXNwYWNlIG5vZGUpLgorCisgICBUaGUgZmlndXJlIGJlbG93IHNob3dzIGFuIGV4YW1wbGUgQUNQSSBuYW1lc3BhY2UuCisKKyAgICstLS0tLS0rCisgICB8IFwgICAgfCAgICAgICAgICAgICAgICAgICAgIFJvb3QKKyAgICstLS0tLS0rCisgICAgIHwKKyAgICAgfCArLS0tLS0tKworICAgICArLXwgX1BSICB8ICAgICAgICAgICAgICAgICBTY29wZShfUFIpOiB0aGUgcHJvY2Vzc29yIG5hbWVzcGFjZQorICAgICB8ICstLS0tLS0rCisgICAgIHwgICB8CisgICAgIHwgICB8ICstLS0tLS0rCisgICAgIHwgICArLXwgQ1BVMCB8ICAgICAgICAgICAgIFByb2Nlc3NvcihDUFUwKTogdGhlIGZpcnN0IHByb2Nlc3NvcgorICAgICB8ICAgICArLS0tLS0tKworICAgICB8CisgICAgIHwgKy0tLS0tLSsKKyAgICAgKy18IF9TQiAgfCAgICAgICAgICAgICAgICAgU2NvcGUoX1NCKTogdGhlIHN5c3RlbSBidXMgbmFtZXNwYWNlCisgICAgIHwgKy0tLS0tLSsKKyAgICAgfCAgIHwKKyAgICAgfCAgIHwgKy0tLS0tLSsKKyAgICAgfCAgICstfCBMSUQwIHwgICAgICAgICAgICAgRGV2aWNlKExJRDApOyB0aGUgbGlkIGRldmljZQorICAgICB8ICAgfCArLS0tLS0tKworICAgICB8ICAgfCAgIHwKKyAgICAgfCAgIHwgICB8ICstLS0tLS0rCisgICAgIHwgICB8ICAgKy18IF9ISUQgfCAgICAgICAgIE5hbWUoX0hJRCwgIlBOUDBDMEQiKTogdGhlIGhhcmR3YXJlIElECisgICAgIHwgICB8ICAgfCArLS0tLS0tKworICAgICB8ICAgfCAgIHwKKyAgICAgfCAgIHwgICB8ICstLS0tLS0rCisgICAgIHwgICB8ICAgKy18IF9TVEEgfCAgICAgICAgIE1ldGhvZChfU1RBKTogdGhlIHN0YXR1cyBjb250cm9sIG1ldGhvZAorICAgICB8ICAgfCAgICAgKy0tLS0tLSsKKyAgICAgfCAgIHwKKyAgICAgfCAgIHwgKy0tLS0tLSsKKyAgICAgfCAgICstfCBQQ0kwIHwgICAgICAgICAgICAgRGV2aWNlKFBDSTApOyB0aGUgUENJIHJvb3QgYnJpZGdlCisgICAgIHwgICAgICstLS0tLS0rCisgICAgIHwgICAgICAgfAorICAgICB8ICAgICAgIHwgKy0tLS0tLSsKKyAgICAgfCAgICAgICArLXwgX0hJRCB8ICAgICAgICAgTmFtZShfSElELCAiUE5QMEEwOCIpOiB0aGUgaGFyZHdhcmUgSUQKKyAgICAgfCAgICAgICB8ICstLS0tLS0rCisgICAgIHwgICAgICAgfAorICAgICB8ICAgICAgIHwgKy0tLS0tLSsKKyAgICAgfCAgICAgICArLXwgX0NJRCB8ICAgICAgICAgTmFtZShfQ0lELCAiUE5QMEEwMyIpOiB0aGUgY29tcGF0aWJsZSBJRAorICAgICB8ICAgICAgIHwgKy0tLS0tLSsKKyAgICAgfCAgICAgICB8CisgICAgIHwgICAgICAgfCArLS0tLS0tKworICAgICB8ICAgICAgICstfCBSUDAzIHwgICAgICAgICBTY29wZShSUDAzKTogdGhlIFBDSTAgcG93ZXIgc2NvcGUKKyAgICAgfCAgICAgICB8ICstLS0tLS0rCisgICAgIHwgICAgICAgfCAgIHwKKyAgICAgfCAgICAgICB8ICAgfCArLS0tLS0tKworICAgICB8ICAgICAgIHwgICArLXwgUFhQMyB8ICAgICBQb3dlclJlc291cmNlKFBYUDMpOiB0aGUgUENJMCBwb3dlciByZXNvdXJjZQorICAgICB8ICAgICAgIHwgICAgICstLS0tLS0rCisgICAgIHwgICAgICAgfAorICAgICB8ICAgICAgIHwgKy0tLS0tLSsKKyAgICAgfCAgICAgICArLXwgR0ZYMCB8ICAgICAgICAgRGV2aWNlKEdGWDApOiB0aGUgZ3JhcGhpY3MgYWRhcHRlcgorICAgICB8ICAgICAgICAgKy0tLS0tLSsKKyAgICAgfCAgICAgICAgICAgfAorICAgICB8ICAgICAgICAgICB8ICstLS0tLS0rCisgICAgIHwgICAgICAgICAgICstfCBfQURSIHwgICAgIE5hbWUoX0FEUiwgMHgwMDAyMDAwMCk6IHRoZSBQQ0kgYnVzIGFkZHJlc3MKKyAgICAgfCAgICAgICAgICAgfCArLS0tLS0tKworICAgICB8ICAgICAgICAgICB8CisgICAgIHwgICAgICAgICAgIHwgKy0tLS0tLSsKKyAgICAgfCAgICAgICAgICAgKy18IEREMDEgfCAgICAgRGV2aWNlKEREMDEpOiB0aGUgTENEIG91dHB1dCBkZXZpY2UKKyAgICAgfCAgICAgICAgICAgICArLS0tLS0tKworICAgICB8ICAgICAgICAgICAgICAgfAorICAgICB8ICAgICAgICAgICAgICAgfCArLS0tLS0tKworICAgICB8ICAgICAgICAgICAgICAgKy18IF9CQ0wgfCBNZXRob2QoX0JDTCk6IHRoZSBiYWNrbGlnaHQgY29udHJvbCBtZXRob2QKKyAgICAgfCAgICAgICAgICAgICAgICAgKy0tLS0tLSsKKyAgICAgfAorICAgICB8ICstLS0tLS0rCisgICAgICstfCBfVFogIHwgICAgICAgICAgICAgICAgIFNjb3BlKF9UWik6IHRoZSB0aGVybWFsIHpvbmUgbmFtZXNwYWNlCisgICAgIHwgKy0tLS0tLSsKKyAgICAgfCAgIHwKKyAgICAgfCAgIHwgKy0tLS0tLSsKKyAgICAgfCAgICstfCBGTjAwIHwgICAgICAgICAgICAgUG93ZXJSZXNvdXJjZShGTjAwKTogdGhlIEZBTjAgcG93ZXIgcmVzb3VyY2UKKyAgICAgfCAgIHwgKy0tLS0tLSsKKyAgICAgfCAgIHwKKyAgICAgfCAgIHwgKy0tLS0tLSsKKyAgICAgfCAgICstfCBGQU4wIHwgICAgICAgICAgICAgRGV2aWNlKEZBTjApOiB0aGUgRkFOMCBjb29saW5nIGRldmljZQorICAgICB8ICAgfCArLS0tLS0tKworICAgICB8ICAgfCAgIHwKKyAgICAgfCAgIHwgICB8ICstLS0tLS0rCisgICAgIHwgICB8ICAgKy18IF9ISUQgfCAgICAgICAgIE5hbWUoX0hJRCwgIlBOUDBBMEIiKTogdGhlIGhhcmR3YXJlIElECisgICAgIHwgICB8ICAgICArLS0tLS0tKworICAgICB8ICAgfAorICAgICB8ICAgfCArLS0tLS0tKworICAgICB8ICAgKy18IFRaMDAgfCAgICAgICAgICAgICBUaGVybWFsWm9uZShUWjAwKTsgdGhlIEZBTiB0aGVybWFsIHpvbmUKKyAgICAgfCAgICAgKy0tLS0tLSsKKyAgICAgfAorICAgICB8ICstLS0tLS0rCisgICAgICstfCBfR1BFIHwgICAgICAgICAgICAgICAgIFNjb3BlKF9HUEUpOiB0aGUgR1BFIG5hbWVzcGFjZQorICAgICAgICstLS0tLS0rCisKKyAgICAgICAgICAgICAgICAgICAgIEZpZ3VyZSAyLiBFeGFtcGxlIEFDUEkgTmFtZXNwYWNlCisKKworMy4gTGludXggQUNQSSBEZXZpY2UgT2JqZWN0cworCisgICBUaGUgTGludXgga2VybmVsJ3MgY29yZSBBQ1BJIHN1YnN5c3RlbSBjcmVhdGVzIHN0cnVjdCBhY3BpX2RldmljZQorICAgb2JqZWN0cyBmb3IgQUNQSSBuYW1lc3BhY2Ugb2JqZWN0cyByZXByZXNlbnRpbmcgZGV2aWNlcywgcG93ZXIgcmVzb3VyY2VzCisgICBwcm9jZXNzb3JzLCB0aGVybWFsIHpvbmVzLiAgVGhvc2Ugb2JqZWN0cyBhcmUgZXhwb3J0ZWQgdG8gdXNlciBzcGFjZSB2aWEKKyAgIHN5c2ZzIGFzIGRpcmVjdG9yaWVzIGluIHRoZSBzdWJ0cmVlIHVuZGVyIC9zeXMvZGV2aWNlcy9MTlhTWVNUTTowMC4gIFRoZQorICAgZm9ybWF0IG9mIHRoZWlyIG5hbWVzIGlzIDxidXNfaWQ6aW5zdGFuY2U+LCB3aGVyZSAnYnVzX2lkJyByZWZlcnMgdG8gdGhlCisgICBBQ1BJIG5hbWVzcGFjZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gb2JqZWN0IGFuZCAnaW5zdGFuY2UnIGlzIHVzZWQKKyAgIGZvciBkaXN0aW5ndWlzaGluZyBkaWZmZXJlbnQgb2JqZWN0IG9mIHRoZSBzYW1lICdidXNfaWQnIChpdCBpcworICAgdHdvLWRpZ2l0IGRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgYW4gdW5zaWduZWQgaW50ZWdlcikuCisKKyAgIFRoZSB2YWx1ZSBvZiAnYnVzX2lkJyBkZXBlbmRzIG9uIHRoZSB0eXBlIG9mIHRoZSBvYmplY3Qgd2hvc2UgbmFtZSBpdCBpcworICAgcGFydCBvZiBhcyBsaXN0ZWQgaW4gdGhlIHRhYmxlIGJlbG93LgorCisgICAgICAgICAgICAgICAgKy0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgfCAgIHwgT2JqZWN0L0ZlYXR1cmUgIHwgVGFibGUgfCBidXNfaWQgICB8CisgICAgICAgICAgICAgICAgKy0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgfCBOIHwgUm9vdCAgICAgICAgICAgIHwgeFNEVCAgfCBMTlhTWVNUTSB8CisgICAgICAgICAgICAgICAgKy0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgfCBOIHwgRGV2aWNlICAgICAgICAgIHwgeFNEVCAgfCBfSElEICAgICB8CisgICAgICAgICAgICAgICAgKy0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgfCBOIHwgUHJvY2Vzc29yICAgICAgIHwgeFNEVCAgfCBMTlhDUFUgICB8CisgICAgICAgICAgICAgICAgKy0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgfCBOIHwgVGhlcm1hbFpvbmUgICAgIHwgeFNEVCAgfCBMTlhUSEVSTSB8CisgICAgICAgICAgICAgICAgKy0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgfCBOIHwgUG93ZXJSZXNvdXJjZSAgIHwgeFNEVCAgfCBMTlhQT1dFUiB8CisgICAgICAgICAgICAgICAgKy0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgfCBOIHwgT3RoZXIgRGV2aWNlcyAgIHwgeFNEVCAgfCBkZXZpY2UgICB8CisgICAgICAgICAgICAgICAgKy0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgfCBGIHwgUFdSX0JVVFRPTiAgICAgIHwgRkFEVCAgfCBMTlhQV1JCTiB8CisgICAgICAgICAgICAgICAgKy0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgfCBGIHwgU0xQX0JVVFRPTiAgICAgIHwgRkFEVCAgfCBMTlhTTFBCTiB8CisgICAgICAgICAgICAgICAgKy0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgfCBNIHwgVmlkZW8gRXh0ZW5zaW9uIHwgeFNEVCAgfCBMTlhWSURFTyB8CisgICAgICAgICAgICAgICAgKy0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgfCBNIHwgQVRBIENvbnRyb2xsZXIgIHwgeFNEVCAgfCBMTlhJT0JBWSB8CisgICAgICAgICAgICAgICAgKy0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgfCBNIHwgRG9ja2luZyBTdGF0aW9uIHwgeFNEVCAgfCBMTlhET0NLICB8CisgICAgICAgICAgICAgICAgKy0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0rCisKKyAgICAgICAgICAgICAgICAgVGFibGUgMS4gQUNQSSBOYW1lc3BhY2UgT2JqZWN0cyBNYXBwaW5nCisKKyAgIFRoZSBmb2xsb3dpbmcgcnVsZXMgYXBwbHkgd2hlbiBjcmVhdGluZyBzdHJ1Y3QgYWNwaV9kZXZpY2Ugb2JqZWN0cyBvbgorICAgdGhlIGJhc2lzIG9mIHRoZSBjb250ZW50cyBvZiBBQ1BJIFN5c3RlbSBEZXNjcmlwdGlvbiBUYWJsZXMgKGFzCisgICBpbmRpY2F0ZWQgYnkgdGhlIGxldHRlciBpbiB0aGUgZmlyc3QgY29sdW1uIGFuZCB0aGUgbm90YXRpb24gaW4gdGhlCisgICBzZWNvbmQgY29sdW1uIG9mIHRoZSB0YWJsZSBhYm92ZSk6CisgICBOOgorICAgICAgVGhlIG9iamVjdCdzIHNvdXJjZSBpcyBhbiBBQ1BJIG5hbWVzcGFjZSBub2RlIChhcyBpbmRpY2F0ZWQgYnkgdGhlCisgICAgICBuYW1lZCBvYmplY3QncyB0eXBlIGluIHRoZSBzZWNvbmQgY29sdW1uKS4gIEluIHRoYXQgY2FzZSB0aGUgb2JqZWN0J3MKKyAgICAgIGRpcmVjdG9yeSBpbiBzeXNmcyB3aWxsIGNvbnRhaW4gdGhlICdwYXRoJyBhdHRyaWJ1dGUgd2hvc2UgdmFsdWUgaXMKKyAgICAgIHRoZSBmdWxsIHBhdGggdG8gdGhlIG5vZGUgZnJvbSB0aGUgbmFtZXNwYWNlIHJvb3QuCisgICBGOgorICAgICAgVGhlIHN0cnVjdCBhY3BpX2RldmljZSBvYmplY3QgaXMgY3JlYXRlZCBmb3IgYSBmaXhlZCBoYXJkd2FyZQorICAgICAgZmVhdHVyZSAoYXMgaW5kaWNhdGVkIGJ5IHRoZSBmaXhlZCBmZWF0dXJlIGZsYWcncyBuYW1lIGluIHRoZSBzZWNvbmQKKyAgICAgIGNvbHVtbiksIHNvIGl0cyBzeXNmcyBkaXJlY3Rvcnkgd2lsbCBub3QgY29udGFpbiB0aGUgJ3BhdGgnCisgICAgICBhdHRyaWJ1dGUuCisgICBNOgorICAgICAgVGhlIHN0cnVjdCBhY3BpX2RldmljZSBvYmplY3QgaXMgY3JlYXRlZCBmb3IgYW4gQUNQSSBuYW1lc3BhY2Ugbm9kZQorICAgICAgd2l0aCBzcGVjaWZpYyBjb250cm9sIG1ldGhvZHMgKGFzIGluZGljYXRlZCBieSB0aGUgQUNQSSBkZWZpbmVkCisgICAgICBkZXZpY2UncyB0eXBlIGluIHRoZSBzZWNvbmQgY29sdW1uKS4gIFRoZSAncGF0aCcgYXR0cmlidXRlIGNvbnRhaW5pbmcKKyAgICAgIGl0cyBuYW1lc3BhY2UgcGF0aCB3aWxsIGJlIHByZXNlbnQgaW4gaXRzIHN5c2ZzIGRpcmVjdG9yeS4gIEZvcgorICAgICAgZXhhbXBsZSwgaWYgdGhlIF9CQ0wgbWV0aG9kIGlzIHByZXNlbnQgZm9yIGFuIEFDUEkgbmFtZXNwYWNlIG5vZGUsIGEKKyAgICAgIHN0cnVjdCBhY3BpX2RldmljZSBvYmplY3Qgd2l0aCBMTlhWSURFTyAnYnVzX2lkJyB3aWxsIGJlIGNyZWF0ZWQgZm9yCisgICAgICBpdC4KKworICAgVGhlIHRoaXJkIGNvbHVtbiBvZiB0aGUgYWJvdmUgdGFibGUgaW5kaWNhdGVzIHdoaWNoIEFDUEkgU3lzdGVtCisgICBEZXNjcmlwdGlvbiBUYWJsZXMgY29udGFpbiBpbmZvcm1hdGlvbiB1c2VkIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlCisgICBzdHJ1Y3QgYWNwaV9kZXZpY2Ugb2JqZWN0cyByZXByZXNlbnRlZCBieSB0aGUgZ2l2ZW4gcm93ICh4U0RUIG1lYW5zIERTRFQKKyAgIG9yIFNTRFQpLgorCisgICBUaGUgZm9ydGggY29sdW1uIG9mIHRoZSBhYm92ZSB0YWJsZSBpbmRpY2F0ZXMgdGhlICdidXNfaWQnIGdlbmVyYXRpb24KKyAgIHJ1bGUgb2YgdGhlIHN0cnVjdCBhY3BpX2RldmljZSBvYmplY3Q6CisgICBfSElEOgorICAgICAgX0hJRCBpbiB0aGUgbGFzdCBjb2x1bW4gb2YgdGhlIHRhYmxlIG1lYW5zIHRoYXQgdGhlIG9iamVjdCdzIGJ1c19pZAorICAgICAgaXMgZGVyaXZlZCBmcm9tIHRoZSBfSElEL19DSUQgaWRlbnRpZmljYXRpb24gb2JqZWN0cyBwcmVzZW50IHVuZGVyCisgICAgICB0aGUgY29ycmVzcG9uZGluZyBBQ1BJIG5hbWVzcGFjZSBub2RlLiBUaGUgb2JqZWN0J3Mgc3lzZnMgZGlyZWN0b3J5CisgICAgICB3aWxsIHRoZW4gY29udGFpbiB0aGUgJ2hpZCcgYW5kICdtb2RhbGlhcycgYXR0cmlidXRlcyB0aGF0IGNhbiBiZQorICAgICAgdXNlZCB0byByZXRyaWV2ZSB0aGUgX0hJRCBhbmQgX0NJRHMgb2YgdGhhdCBvYmplY3QuCisgICBMTlh4eHh4eDoKKyAgICAgIFRoZSAnbW9kYWxpYXMnIGF0dHJpYnV0ZSBpcyBhbHNvIHByZXNlbnQgZm9yIHN0cnVjdCBhY3BpX2RldmljZQorICAgICAgb2JqZWN0cyBoYXZpbmcgYnVzX2lkIG9mIHRoZSAiTE5YeHh4eHgiIGZvcm0gKHBzZXVkbyBkZXZpY2VzKSwgaW4KKyAgICAgIHdoaWNoIGNhc2VzIGl0IGNvbnRhaW5zIHRoZSBidXNfaWQgc3RyaW5nIGl0c2VsZi4KKyAgIGRldmljZToKKyAgICAgICdkZXZpY2UnIGluIHRoZSBsYXN0IGNvbHVtbiBvZiB0aGUgdGFibGUgaW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCdzCisgICAgICBidXNfaWQgY2Fubm90IGJlIGRldGVybWluZWQgZnJvbSBfSElEL19DSUQgb2YgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgIEFDUEkgbmFtZXNwYWNlIG5vZGUsIGFsdGhvdWdoIHRoYXQgb2JqZWN0IHJlcHJlc2VudHMgYSBkZXZpY2UgKGZvcgorICAgICAgZXhhbXBsZSwgaXQgbWF5IGJlIGEgUENJIGRldmljZSB3aXRoIF9BRFIgZGVmaW5lZCBhbmQgd2l0aG91dCBfSElECisgICAgICBvciBfQ0lEKS4gIEluIHRoYXQgY2FzZSB0aGUgc3RyaW5nICdkZXZpY2UnIHdpbGwgYmUgdXNlZCBhcyB0aGUKKyAgICAgIG9iamVjdCdzIGJ1c19pZC4KKworCis0LiBMaW51eCBBQ1BJIFBoeXNpY2FsIERldmljZSBHbHVlCisKKyAgIEFDUEkgZGV2aWNlIChpLmUuIHN0cnVjdCBhY3BpX2RldmljZSkgb2JqZWN0cyBtYXkgYmUgbGlua2VkIHRvIG90aGVyCisgICBvYmplY3RzIGluIHRoZSBMaW51eCcgZGV2aWNlIGhpZXJhcmNoeSB0aGF0IHJlcHJlc2VudCAicGh5c2ljYWwiIGRldmljZXMKKyAgIChmb3IgZXhhbXBsZSwgZGV2aWNlcyBvbiB0aGUgUENJIGJ1cykuICBJZiB0aGF0IGhhcHBlbnMsIGl0IG1lYW5zIHRoYXQKKyAgIHRoZSBBQ1BJIGRldmljZSBvYmplY3QgaXMgYSAiY29tcGFuaW9uIiBvZiBhIGRldmljZSBvdGhlcndpc2UKKyAgIHJlcHJlc2VudGVkIGluIGEgZGlmZmVyZW50IHdheSBhbmQgaXMgdXNlZCAoMSkgdG8gcHJvdmlkZSBjb25maWd1cmF0aW9uCisgICBpbmZvcm1hdGlvbiBvbiB0aGF0IGRldmljZSB3aGljaCBjYW5ub3QgYmUgb2J0YWluZWQgYnkgb3RoZXIgbWVhbnMgYW5kCisgICAoMikgdG8gZG8gc3BlY2lmaWMgdGhpbmdzIHRvIHRoZSBkZXZpY2Ugd2l0aCB0aGUgaGVscCBvZiBpdHMgQUNQSQorICAgY29udHJvbCBtZXRob2RzLiAgT25lIEFDUEkgZGV2aWNlIG9iamVjdCBtYXkgYmUgbGlua2VkIHRoaXMgd2F5IHRvCisgICBtdWx0aXBsZSAicGh5c2ljYWwiIGRldmljZXMuCisKKyAgIElmIGFuIEFDUEkgZGV2aWNlIG9iamVjdCBpcyBsaW5rZWQgdG8gYSAicGh5c2ljYWwiIGRldmljZSwgaXRzIHN5c2ZzCisgICBkaXJlY3RvcnkgY29udGFpbnMgdGhlICJwaHlzaWNhbF9ub2RlIiBzeW1ib2xpYyBsaW5rIHRvIHRoZSBzeXNmcworICAgZGlyZWN0b3J5IG9mIHRoZSB0YXJnZXQgZGV2aWNlIG9iamVjdC4gIEluIHR1cm4sIHRoZSB0YXJnZXQgZGV2aWNlJ3MKKyAgIHN5c2ZzIGRpcmVjdG9yeSB3aWxsIHRoZW4gY29udGFpbiB0aGUgImZpcm13YXJlX25vZGUiIHN5bWJvbGljIGxpbmsgdG8KKyAgIHRoZSBzeXNmcyBkaXJlY3Rvcnkgb2YgdGhlIGNvbXBhbmlvbiBBQ1BJIGRldmljZSBvYmplY3QuCisgICBUaGUgbGlua2luZyBtZWNoYW5pc20gcmVsaWVzIG9uIGRldmljZSBpZGVudGlmaWNhdGlvbiBwcm92aWRlZCBieSB0aGUKKyAgIEFDUEkgbmFtZXNwYWNlLiAgRm9yIGV4YW1wbGUsIGlmIHRoZXJlJ3MgYW4gQUNQSSBuYW1lc3BhY2Ugb2JqZWN0CisgICByZXByZXNlbnRpbmcgYSBQQ0kgZGV2aWNlIChpLmUuIGEgZGV2aWNlIG9iamVjdCB1bmRlciBhbiBBQ1BJIG5hbWVzcGFjZQorICAgb2JqZWN0IHJlcHJlc2VudGluZyBhIFBDSSBicmlkZ2UpIHdob3NlIF9BRFIgcmV0dXJucyAweDAwMDIwMDAwIGFuZCB0aGUKKyAgIGJ1cyBudW1iZXIgb2YgdGhlIHBhcmVudCBQQ0kgYnJpZGdlIGlzIDAsIHRoZSBzeXNmcyBkaXJlY3RvcnkKKyAgIHJlcHJlc2VudGluZyB0aGUgc3RydWN0IGFjcGlfZGV2aWNlIG9iamVjdCBjcmVhdGVkIGZvciB0aGF0IEFDUEkKKyAgIG5hbWVzcGFjZSBvYmplY3Qgd2lsbCBjb250YWluIHRoZSAncGh5c2ljYWxfbm9kZScgc3ltYm9saWMgbGluayB0byB0aGUKKyAgIC9zeXMvZGV2aWNlcy9wY2kwMDAwOjAwLzAwMDA6MDA6MDI6MC8gc3lzZnMgZGlyZWN0b3J5IG9mIHRoZQorICAgY29ycmVzcG9uZGluZyBQQ0kgZGV2aWNlLgorCisgICBUaGUgbGlua2luZyBtZWNoYW5pc20gaXMgZ2VuZXJhbGx5IGJ1cy1zcGVjaWZpYy4gIFRoZSBjb3JlIG9mIGl0cworICAgaW1wbGVtZW50YXRpb24gaXMgbG9jYXRlZCBpbiB0aGUgZHJpdmVycy9hY3BpL2dsdWUuYyBmaWxlLCBidXQgdGhlcmUgYXJlCisgICBjb21wbGVtZW50YXJ5IHBhcnRzIGRlcGVuZGluZyBvbiB0aGUgYnVzIHR5cGVzIGluIHF1ZXN0aW9uIGxvY2F0ZWQKKyAgIGVsc2V3aGVyZS4gIEZvciBleGFtcGxlLCB0aGUgUENJLXNwZWNpZmljIHBhcnQgb2YgaXQgaXMgbG9jYXRlZCBpbgorICAgZHJpdmVycy9wY2kvcGNpLWFjcGkuYy4KKworCis1LiBFeGFtcGxlIExpbnV4IEFDUEkgRGV2aWNlIFRyZWUKKworICAgVGhlIHN5c2ZzIGhpZXJhcmNoeSBvZiBzdHJ1Y3QgYWNwaV9kZXZpY2Ugb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZQorICAgZXhhbXBsZSBBQ1BJIG5hbWVzcGFjZSBpbGx1c3RyYXRlZCBpbiBGaWd1cmUgMiB3aXRoIHRoZSBhZGRpdGlvbiBvZgorICAgZml4ZWQgUFdSX0JVVFRPTi9TTFBfQlVUVE9OIGRldmljZXMgaXMgc2hvd24gYmVsb3cuCisKKyAgICstLS0tLS0tLS0tLS0tLSstLS0rLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IExOWFNZU1RFTTowMCB8IFwgfCBhY3BpOkxOWFNZU1RFTTogfAorICAgKy0tLS0tLS0tLS0tLS0tKy0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgfAorICAgICB8ICstLS0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgICAgICstfCBMTlhQV1JCTjowMCB8IE4vQSB8IGFjcGk6TE5YUFdSQk46IHwKKyAgICAgfCArLS0tLS0tLS0tLS0tLSstLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICAgICB8CisgICAgIHwgKy0tLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgKy18IExOWFNMUEJOOjAwIHwgTi9BIHwgYWNwaTpMTlhTTFBCTjogfAorICAgICB8ICstLS0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgICAgIHwKKyAgICAgfCArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKworICAgICArLXwgTE5YQ1BVOjAwIHwgXF9QUl8uQ1BVMCB8IGFjcGk6TE5YQ1BVOiB8CisgICAgIHwgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSsKKyAgICAgfAorICAgICB8ICstLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgKy18IExOWFNZQlVTOjAwIHwgXF9TQl8gfCBhY3BpOkxOWFNZQlVTOiB8CisgICAgIHwgKy0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICAgICB8ICAgfAorICAgICB8ICAgfCArLSAtIC0gLSAtIC0gLSArLSAtIC0gLSAtIC0gKy0gLSAtIC0gLSAtIC0gLSsKKyAgICAgfCAgICstfCBQTlAwQzBEOjAwIHwgXF9TQl8uTElEMCB8IGFjcGk6UE5QMEMwRDogfAorICAgICB8ICAgfCArLSAtIC0gLSAtIC0gLSArLSAtIC0gLSAtIC0gKy0gLSAtIC0gLSAtIC0gLSsKKyAgICAgfCAgIHwKKyAgICAgfCAgIHwgKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgIHwgICArLXwgUE5QMEEwODowMCB8IFxfU0JfLlBDSTAgfCBhY3BpOlBOUDBBMDg6UE5QMEEwMzogfAorICAgICB8ICAgICArLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgfCAgICAgICB8CisgICAgIHwgICAgICAgfCArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisgICAgIHwgICAgICAgKy18IGRldmljZTowMCB8IFxfU0JfLlBDSTAuUlAwMyB8IE4vQSB8CisgICAgIHwgICAgICAgfCArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisgICAgIHwgICAgICAgfCAgIHwKKyAgICAgfCAgICAgICB8ICAgfCArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgICAgIHwgICAgICAgfCAgICstfCBMTlhQT1dFUjowMCB8IFxfU0JfLlBDSTAuUlAwMy5QWFAzIHwgYWNwaTpMTlhQT1dFUjogfAorICAgICB8ICAgICAgIHwgICAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgfCAgICAgICB8CisgICAgIHwgICAgICAgfCArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICAgICB8ICAgICAgICstfCBMTlhWSURFTzowMCB8IFxfU0JfLlBDSTAuR0ZYMCB8IGFjcGk6TE5YVklERU86IHwKKyAgICAgfCAgICAgICAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgICAgIHwgICAgICAgICAgIHwKKyAgICAgfCAgICAgICAgICAgfCArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisgICAgIHwgICAgICAgICAgICstfCBkZXZpY2U6MDEgfCBcX1NCXy5QQ0kwLkREMDEgfCBOL0EgfAorICAgICB8ICAgICAgICAgICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKyAgICAgfAorICAgICB8ICstLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgKy18IExOWFNZQlVTOjAxIHwgXF9UWl8gfCBhY3BpOkxOWFNZQlVTOiB8CisgICAgICAgKy0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgfAorICAgICAgICAgfCArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICstfCBMTlhQT1dFUjowYSB8IFxfVFpfLkZOMDAgfCBhY3BpOkxOWFBPV0VSOiB8CisgICAgICAgICB8ICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgfAorICAgICAgICAgfCArLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICArLXwgUE5QMEMwQjowMCB8IFxfVFpfLkZBTjAgfCBhY3BpOlBOUDBDMEI6IHwKKyAgICAgICAgIHwgKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgfAorICAgICAgICAgfCArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICstfCBMTlhUSEVSTTowMCB8IFxfVFpfLlRaMDAgfCBhY3BpOkxOWFRIRVJNOiB8CisgICAgICAgICAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworCisgICAgICAgICAgICAgICAgICBGaWd1cmUgMy4gRXhhbXBsZSBMaW51eCBBQ1BJIERldmljZSBUcmVlCisKKyAgIE5PVEU6IEVhY2ggbm9kZSBpcyByZXByZXNlbnRlZCBhcyAib2JqZWN0L3BhdGgvbW9kYWxpYXMiLCB3aGVyZToKKyAgICAgICAgIDEuICdvYmplY3QnIGlzIHRoZSBuYW1lIG9mIHRoZSBvYmplY3QncyBkaXJlY3RvcnkgaW4gc3lzZnMuCisgICAgICAgICAyLiAncGF0aCcgaXMgdGhlIEFDUEkgbmFtZXNwYWNlIHBhdGggb2YgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgIEFDUEkgbmFtZXNwYWNlIG9iamVjdCwgYXMgcmV0dXJuZWQgYnkgdGhlIG9iamVjdCdzICdwYXRoJworICAgICAgICAgICAgc3lzZnMgYXR0cmlidXRlLgorICAgICAgICAgMy4gJ21vZGFsaWFzJyBpcyB0aGUgdmFsdWUgb2YgdGhlIG9iamVjdCdzICdtb2RhbGlhcycgc3lzZnMKKyAgICAgICAgICAgIGF0dHJpYnV0ZSAoYXMgZGVzY3JpYmVkIGVhcmxpZXIgaW4gdGhpcyBkb2N1bWVudCkuCisgICBOT1RFOiBOL0EgaW5kaWNhdGVzIHRoZSBkZXZpY2Ugb2JqZWN0IGRvZXMgbm90IGhhdmUgdGhlICdwYXRoJyBvciB0aGUKKyAgICAgICAgICdtb2RhbGlhcycgYXR0cmlidXRlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hY3BpL3NjYW5faGFuZGxlcnMudHh0IGIvRG9jdW1lbnRhdGlvbi9hY3BpL3NjYW5faGFuZGxlcnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNDZjY2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FjcGkvc2Nhbl9oYW5kbGVycy50eHQKQEAgLTAsMCArMSw3NyBAQAorQUNQSSBTY2FuIEhhbmRsZXJzCisKK0NvcHlyaWdodCAoQykgMjAxMiwgSW50ZWwgQ29ycG9yYXRpb24KK0F1dGhvcjogUmFmYWVsIEouIFd5c29ja2kgPHJhZmFlbC5qLnd5c29ja2lAaW50ZWwuY29tPgorCitEdXJpbmcgc3lzdGVtIGluaXRpYWxpemF0aW9uIGFuZCBBQ1BJLWJhc2VkIGRldmljZSBob3QtYWRkLCB0aGUgQUNQSSBuYW1lc3BhY2UKK2lzIHNjYW5uZWQgaW4gc2VhcmNoIG9mIGRldmljZSBvYmplY3RzIHRoYXQgZ2VuZXJhbGx5IHJlcHJlc2VudCB2YXJpb3VzIHBpZWNlcworb2YgaGFyZHdhcmUuICBUaGlzIGNhdXNlcyBhIHN0cnVjdCBhY3BpX2RldmljZSBvYmplY3QgdG8gYmUgY3JlYXRlZCBhbmQKK3JlZ2lzdGVyZWQgd2l0aCB0aGUgZHJpdmVyIGNvcmUgZm9yIGV2ZXJ5IGRldmljZSBvYmplY3QgaW4gdGhlIEFDUEkgbmFtZXNwYWNlCithbmQgdGhlIGhpZXJhcmNoeSBvZiB0aG9zZSBzdHJ1Y3QgYWNwaV9kZXZpY2Ugb2JqZWN0cyByZWZsZWN0cyB0aGUgbmFtZXNwYWNlCitsYXlvdXQgKGkuZS4gcGFyZW50IGRldmljZSBvYmplY3RzIGluIHRoZSBuYW1lc3BhY2UgYXJlIHJlcHJlc2VudGVkIGJ5IHBhcmVudAorc3RydWN0IGFjcGlfZGV2aWNlIG9iamVjdHMgYW5kIGFuYWxvZ291c2x5IGZvciB0aGVpciBjaGlsZHJlbikuICBUaG9zZSBzdHJ1Y3QKK2FjcGlfZGV2aWNlIG9iamVjdHMgYXJlIHJlZmVycmVkIHRvIGFzICJkZXZpY2Ugbm9kZXMiIGluIHdoYXQgZm9sbG93cywgYnV0IHRoZXkKK3Nob3VsZCBub3QgYmUgY29uZnVzZWQgd2l0aCBzdHJ1Y3QgZGV2aWNlX25vZGUgb2JqZWN0cyB1c2VkIGJ5IHRoZSBEZXZpY2UgVHJlZXMKK3BhcnNpbmcgY29kZSAoYWx0aG91Z2ggdGhlaXIgcm9sZSBpcyBhbmFsb2dvdXMgdG8gdGhlIHJvbGUgb2YgdGhvc2Ugb2JqZWN0cykuCisKK0R1cmluZyBBQ1BJLWJhc2VkIGRldmljZSBob3QtcmVtb3ZlIGRldmljZSBub2RlcyByZXByZXNlbnRpbmcgcGllY2VzIG9mIGhhcmR3YXJlCitiZWluZyByZW1vdmVkIGFyZSB1bnJlZ2lzdGVyZWQgYW5kIGRlbGV0ZWQuCisKK1RoZSBjb3JlIEFDUEkgbmFtZXNwYWNlIHNjYW5uaW5nIGNvZGUgaW4gZHJpdmVycy9hY3BpL3NjYW4uYyBjYXJyaWVzIG91dCBiYXNpYworaW5pdGlhbGl6YXRpb24gb2YgZGV2aWNlIG5vZGVzLCBzdWNoIGFzIHJldHJpZXZpbmcgY29tbW9uIGNvbmZpZ3VyYXRpb24KK2luZm9ybWF0aW9uIGZyb20gdGhlIGRldmljZSBvYmplY3RzIHJlcHJlc2VudGVkIGJ5IHRoZW0gYW5kIHBvcHVsYXRpbmcgdGhlbSB3aXRoCithcHByb3ByaWF0ZSBkYXRhLCBidXQgc29tZSBvZiB0aGVtIHJlcXVpcmUgYWRkaXRpb25hbCBoYW5kbGluZyBhZnRlciB0aGV5IGhhdmUKK2JlZW4gcmVnaXN0ZXJlZC4gIEZvciBleGFtcGxlLCBpZiB0aGUgZ2l2ZW4gZGV2aWNlIG5vZGUgcmVwcmVzZW50cyBhIFBDSSBob3N0CiticmlkZ2UsIGl0cyByZWdpc3RyYXRpb24gc2hvdWxkIGNhdXNlIHRoZSBQQ0kgYnVzIHVuZGVyIHRoYXQgYnJpZGdlIHRvIGJlCitlbnVtZXJhdGVkIGFuZCBQQ0kgZGV2aWNlcyBvbiB0aGF0IGJ1cyB0byBiZSByZWdpc3RlcmVkIHdpdGggdGhlIGRyaXZlciBjb3JlLgorU2ltaWxhcmx5LCBpZiB0aGUgZGV2aWNlIG5vZGUgcmVwcmVzZW50cyBhIFBDSSBpbnRlcnJ1cHQgbGluaywgaXQgaXMgbmVjZXNzYXJ5Cit0byBjb25maWd1cmUgdGhhdCBsaW5rIHNvIHRoYXQgdGhlIGtlcm5lbCBjYW4gdXNlIGl0LgorCitUaG9zZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gdGFza3MgdXN1YWxseSBkZXBlbmQgb24gdGhlIHR5cGUgb2YgdGhlIGhhcmR3YXJlCitjb21wb25lbnQgcmVwcmVzZW50ZWQgYnkgdGhlIGdpdmVuIGRldmljZSBub2RlIHdoaWNoIGNhbiBiZSBkZXRlcm1pbmVkIG9uIHRoZQorYmFzaXMgb2YgdGhlIGRldmljZSBub2RlJ3MgaGFyZHdhcmUgSUQgKEhJRCkuICBUaGV5IGFyZSBwZXJmb3JtZWQgYnkgb2JqZWN0cworY2FsbGVkIEFDUEkgc2NhbiBoYW5kbGVycyByZXByZXNlbnRlZCBieSB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKKworc3RydWN0IGFjcGlfc2Nhbl9oYW5kbGVyIHsKKwljb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgKmlkczsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Rfbm9kZTsKKwlpbnQgKCphdHRhY2gpKHN0cnVjdCBhY3BpX2RldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgKmlkKTsKKwl2b2lkICgqZGV0YWNoKShzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldik7Cit9OworCit3aGVyZSBpZHMgaXMgdGhlIGxpc3Qgb2YgSURzIG9mIGRldmljZSBub2RlcyB0aGUgZ2l2ZW4gaGFuZGxlciBpcyBzdXBwb3NlZCB0bwordGFrZSBjYXJlIG9mLCBsaXN0X25vZGUgaXMgdGhlIGhvb2sgdG8gdGhlIGdsb2JhbCBsaXN0IG9mIEFDUEkgc2NhbiBoYW5kbGVycworbWFpbnRhaW5lZCBieSB0aGUgQUNQSSBjb3JlIGFuZCB0aGUgLmF0dGFjaCgpIGFuZCAuZGV0YWNoKCkgY2FsbGJhY2tzIGFyZQorZXhlY3V0ZWQsIHJlc3BlY3RpdmVseSwgYWZ0ZXIgcmVnaXN0cmF0aW9uIG9mIG5ldyBkZXZpY2Ugbm9kZXMgYW5kIGJlZm9yZQordW5yZWdpc3RyYXRpb24gb2YgZGV2aWNlIG5vZGVzIHRoZSBoYW5kbGVyIGF0dGFjaGVkIHRvIHByZXZpb3VzbHkuCisKK1RoZSBuYW1lc3BhY2Ugc2Nhbm5pbmcgZnVuY3Rpb24sIGFjcGlfYnVzX3NjYW4oKSwgZmlyc3QgcmVnaXN0ZXJzIGFsbCBvZiB0aGUKK2RldmljZSBub2RlcyBpbiB0aGUgZ2l2ZW4gbmFtZXNwYWNlIHNjb3BlIHdpdGggdGhlIGRyaXZlciBjb3JlLiAgVGhlbiwgaXQgdHJpZXMKK3RvIG1hdGNoIGEgc2NhbiBoYW5kbGVyIGFnYWluc3QgZWFjaCBvZiB0aGVtIHVzaW5nIHRoZSBpZHMgYXJyYXlzIG9mIHRoZQorYXZhaWxhYmxlIHNjYW4gaGFuZGxlcnMuICBJZiBhIG1hdGNoaW5nIHNjYW4gaGFuZGxlciBpcyBmb3VuZCwgaXRzIC5hdHRhY2goKQorY2FsbGJhY2sgaXMgZXhlY3V0ZWQgZm9yIHRoZSBnaXZlbiBkZXZpY2Ugbm9kZS4gIElmIHRoYXQgY2FsbGJhY2sgcmV0dXJucyAxLAordGhhdCBtZWFucyB0aGF0IHRoZSBoYW5kbGVyIGhhcyBjbGFpbWVkIHRoZSBkZXZpY2Ugbm9kZSBhbmQgaXMgbm93IHJlc3BvbnNpYmxlCitmb3IgY2Fycnlpbmcgb3V0IGFueSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gdGFza3MgcmVsYXRlZCB0byBpdC4gIEl0IGFsc28gd2lsbAorYmUgcmVzcG9uc2libGUgZm9yIHByZXBhcmluZyB0aGUgZGV2aWNlIG5vZGUgZm9yIHVucmVnaXN0cmF0aW9uIGluIHRoYXQgY2FzZS4KK1RoZSBkZXZpY2Ugbm9kZSdzIGhhbmRsZXIgZmllbGQgaXMgdGhlbiBwb3B1bGF0ZWQgd2l0aCB0aGUgYWRkcmVzcyBvZiB0aGUgc2NhbgoraGFuZGxlciB0aGF0IGhhcyBjbGFpbWVkIGl0LgorCitJZiB0aGUgLmF0dGFjaCgpIGNhbGxiYWNrIHJldHVybnMgMCwgaXQgbWVhbnMgdGhhdCB0aGUgZGV2aWNlIG5vZGUgaXMgbm90CitpbnRlcmVzdGluZyB0byB0aGUgZ2l2ZW4gc2NhbiBoYW5kbGVyIGFuZCBtYXkgYmUgbWF0Y2hlZCBhZ2FpbnN0IHRoZSBuZXh0IHNjYW4KK2hhbmRsZXIgaW4gdGhlIGxpc3QuICBJZiBpdCByZXR1cm5zIGEgKG5lZ2F0aXZlKSBlcnJvciBjb2RlLCB0aGF0IG1lYW5zIHRoYXQKK3RoZSBuYW1lc3BhY2Ugc2NhbiBzaG91bGQgYmUgdGVybWluYXRlZCBkdWUgdG8gYSBzZXJpb3VzIGVycm9yLiAgVGhlIGVycm9yIGNvZGUKK3JldHVybmVkIHNob3VsZCB0aGVuIHJlZmxlY3QgdGhlIHR5cGUgb2YgdGhlIGVycm9yLgorCitUaGUgbmFtZXNwYWNlIHRyaW1taW5nIGZ1bmN0aW9uLCBhY3BpX2J1c190cmltKCksIGZpcnN0IGV4ZWN1dGVzIC5kZXRhY2goKQorY2FsbGJhY2tzIGZyb20gdGhlIHNjYW4gaGFuZGxlcnMgb2YgYWxsIGRldmljZSBub2RlcyBpbiB0aGUgZ2l2ZW4gbmFtZXNwYWNlCitzY29wZSAoaWYgdGhleSBoYXZlIHNjYW4gaGFuZGxlcnMpLiAgTmV4dCwgaXQgdW5yZWdpc3RlcnMgYWxsIG9mIHRoZSBkZXZpY2UKK25vZGVzIGluIHRoYXQgc2NvcGUuCisKK0FDUEkgc2NhbiBoYW5kbGVycyBjYW4gYmUgYWRkZWQgdG8gdGhlIGxpc3QgbWFpbnRhaW5lZCBieSB0aGUgQUNQSSBjb3JlIHdpdGggdGhlCitoZWxwIG9mIHRoZSBhY3BpX3NjYW5fYWRkX2hhbmRsZXIoKSBmdW5jdGlvbiB0YWtpbmcgYSBwb2ludGVyIHRvIHRoZSBuZXcgc2NhbgoraGFuZGxlciBhcyBhbiBhcmd1bWVudC4gIFRoZSBvcmRlciBpbiB3aGljaCBzY2FuIGhhbmRsZXJzIGFyZSBhZGRlZCB0byB0aGUgbGlzdAoraXMgdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXJlIG1hdGNoZWQgYWdhaW5zdCBkZXZpY2Ugbm9kZXMgZHVyaW5nIG5hbWVzcGFjZQorc2NhbnMuCisKK0FsbCBzY2FuIGhhbmRsZXMgbXVzdCBiZSBhZGRlZCB0byB0aGUgbGlzdCBiZWZvcmUgYWNwaV9idXNfc2NhbigpIGlzIHJ1biBmb3IgdGhlCitmaXJzdCB0aW1lIGFuZCB0aGV5IGNhbm5vdCBiZSByZW1vdmVkIGZyb20gaXQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FjcGkvdmlkZW9fZXh0ZW5zaW9uLnR4dCBiL0RvY3VtZW50YXRpb24vYWNwaS92aWRlb19leHRlbnNpb24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4YjMyYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FjcGkvdmlkZW9fZXh0ZW5zaW9uLnR4dApAQCAtMCwwICsxLDEwNiBAQAorQUNQSSB2aWRlbyBleHRlbnNpb25zCit+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworVGhpcyBkcml2ZXIgaW1wbGVtZW50IHRoZSBBQ1BJIEV4dGVuc2lvbnMgRm9yIERpc3BsYXkgQWRhcHRlcnMgZm9yCitpbnRlZ3JhdGVkIGdyYXBoaWNzIGRldmljZXMgb24gbW90aGVyYm9hcmQsIGFzIHNwZWNpZmllZCBpbiBBQ1BJIDIuMAorU3BlY2lmaWNhdGlvbiwgQXBwZW5kaXggQiwgYWxsb3dpbmcgdG8gcGVyZm9ybSBzb21lIGJhc2ljIGNvbnRyb2wgbGlrZQorZGVmaW5pbmcgdGhlIHZpZGVvIFBPU1QgZGV2aWNlLCByZXRyaWV2aW5nIEVESUQgaW5mb3JtYXRpb24gb3IgdG8KK3NldHVwIGEgdmlkZW8gb3V0cHV0LCBldGMuICBOb3RlIHRoYXQgdGhpcyBpcyBhbiByZWYuIGltcGxlbWVudGF0aW9uCitvbmx5LiAgSXQgbWF5IG9yIG1heSBub3Qgd29yayBmb3IgeW91ciBpbnRlZ3JhdGVkIHZpZGVvIGRldmljZS4KKworVGhlIEFDUEkgdmlkZW8gZHJpdmVyIGRvZXMgMyB0aGluZ3MgcmVnYXJkaW5nIGJhY2tsaWdodCBjb250cm9sOgorCisxIEV4cG9ydCBhIHN5c2ZzIGludGVyZmFjZSBmb3IgdXNlciBzcGFjZSB0byBjb250cm9sIGJhY2tsaWdodCBsZXZlbAorCitJZiB0aGUgQUNQSSB0YWJsZSBoYXMgYSB2aWRlbyBkZXZpY2UsIGFuZCBhY3BpX2JhY2tsaWdodD12ZW5kb3Iga2VybmVsCitjb21tYW5kIGxpbmUgaXMgbm90IHByZXNlbnQsIHRoZSBkcml2ZXIgd2lsbCByZWdpc3RlciBhIGJhY2tsaWdodCBkZXZpY2UKK2FuZCBzZXQgdGhlIHJlcXVpcmVkIGJhY2tsaWdodCBvcGVyYXRpb24gc3RydWN0dXJlIGZvciBpdCBmb3IgdGhlIHN5c2ZzCitpbnRlcmZhY2UgY29udHJvbC4gRm9yIGV2ZXJ5IHJlZ2lzdGVyZWQgY2xhc3MgZGV2aWNlLCB0aGVyZSB3aWxsIGJlIGEKK2RpcmVjdG9yeSBuYW1lZCBhY3BpX3ZpZGVvWCB1bmRlciAvc3lzL2NsYXNzL2JhY2tsaWdodC4KKworVGhlIGJhY2tsaWdodCBzeXNmcyBpbnRlcmZhY2UgaGFzIGEgc3RhbmRhcmQgZGVmaW5pdGlvbiBoZXJlOgorRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWNsYXNzLWJhY2tsaWdodC4KKworQW5kIHdoYXQgQUNQSSB2aWRlbyBkcml2ZXIgZG9lcyBpczoKK2FjdHVhbF9icmlnaHRuZXNzOiBvbiByZWFkLCBjb250cm9sIG1ldGhvZCBfQlFDIHdpbGwgYmUgZXZhbHVhdGVkIHRvCitnZXQgdGhlIGJyaWdodG5lc3MgbGV2ZWwgdGhlIGZpcm13YXJlIHRoaW5rcyBpdCBpcyBhdDsKK2JsX3Bvd2VyOiBub3QgaW1wbGVtZW50ZWQsIHdpbGwgc2V0IHRoZSBjdXJyZW50IGJyaWdodG5lc3MgaW5zdGVhZDsKK2JyaWdodG5lc3M6IG9uIHdyaXRlLCBjb250cm9sIG1ldGhvZCBfQkNNIHdpbGwgcnVuIHRvIHNldCB0aGUgcmVxdWVzdGVkCiticmlnaHRuZXNzIGxldmVsOworbWF4X2JyaWdodG5lc3M6IERlcml2ZWQgZnJvbSB0aGUgX0JDTCBwYWNrYWdlKHNlZSBiZWxvdyk7Cit0eXBlOiBmaXJtd2FyZQorCitOb3RlIHRoYXQgQUNQSSB2aWRlbyBiYWNrbGlnaHQgZHJpdmVyIHdpbGwgYWx3YXlzIHVzZSBpbmRleCBmb3IKK2JyaWdodG5lc3MsIGFjdHVhbF9icmlnaHRuZXNzIGFuZCBtYXhfYnJpZ2h0bmVzcy4gU28gaWYgd2UgaGF2ZQordGhlIGZvbGxvd2luZyBfQkNMIHBhY2thZ2U6CisKK01ldGhvZCAoX0JDTCwgMCwgTm90U2VyaWFsaXplZCkKK3sKKwlSZXR1cm4gKFBhY2thZ2UgKDB4MEMpCisJeworCQkweDY0LAorCQkweDMyLAorCQkweDBBLAorCQkweDE0LAorCQkweDFFLAorCQkweDI4LAorCQkweDMyLAorCQkweDNDLAorCQkweDQ2LAorCQkweDUwLAorCQkweDVBLAorCQkweDY0CisJfSkKK30KKworVGhlIGZpcnN0IHR3byBsZXZlbHMgYXJlIGZvciB3aGVuIGxhcHRvcCBhcmUgb24gQUMgb3Igb24gYmF0dGVyeSBhbmQgYXJlCitub3QgdXNlZCBieSBMaW51eCBjdXJyZW50bHkuIFRoZSByZW1haW5pbmcgMTAgbGV2ZWxzIGFyZSBzdXBwb3J0ZWQgbGV2ZWxzCit0aGF0IHdlIGNhbiBjaG9vc2UgZnJvbS4gVGhlIGFwcGxpY2FibGUgaW5kZXggdmFsdWVzIGFyZSBmcm9tIDAgKHRoYXQKK2NvcnJlc3BvbmRzIHRvIHRoZSAweDBBIGJyaWdodG5lc3MgdmFsdWUpIHRvIDkgKHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlCisweDY0IGJyaWdodG5lc3MgdmFsdWUpIGluY2x1c2l2ZS4gRWFjaCBvZiB0aG9zZSBpbmRleCB2YWx1ZXMgaXMgcmVnYXJkZWQKK2FzIGEgImJyaWdodG5lc3MgbGV2ZWwiIGluZGljYXRvci4gVGh1cyBmcm9tIHRoZSB1c2VyIHNwYWNlIHBlcnNwZWN0aXZlCit0aGUgcmFuZ2Ugb2YgYXZhaWxhYmxlIGJyaWdodG5lc3MgbGV2ZWxzIGlzIGZyb20gMCB0byA5IChtYXhfYnJpZ2h0bmVzcykKK2luY2x1c2l2ZS4KKworMiBOb3RpZnkgdXNlciBzcGFjZSBhYm91dCBob3RrZXkgZXZlbnQKKworVGhlcmUgYXJlIGdlbmVyYWxseSB0d28gY2FzZXMgZm9yIGhvdGtleSBldmVudCByZXBvcnRpbmc6CitpKSBGb3Igc29tZSBsYXB0b3BzLCB3aGVuIHVzZXIgcHJlc3NlcyB0aGUgaG90a2V5LCBhIHNjYW5jb2RlIHdpbGwgYmUKKyAgIGdlbmVyYXRlZCBhbmQgc2VudCB0byB1c2VyIHNwYWNlIHRocm91Z2ggdGhlIGlucHV0IGRldmljZSBjcmVhdGVkIGJ5CisgICB0aGUga2V5Ym9hcmQgZHJpdmVyIGFzIGEga2V5IHR5cGUgaW5wdXQgZXZlbnQsIHdpdGggcHJvcGVyIHJlbWFwLCB0aGUKKyAgIGZvbGxvd2luZyBrZXkgY29kZSB3aWxsIGFwcGVhciB0byB1c2VyIHNwYWNlOgorCisJRVZfS0VZLCBLRVlfQlJJR0hUTkVTU1VQCisJRVZfS0VZLCBLRVlfQlJJR0hUTkVTU0RPV04KKwlldGMuCisKK0ZvciB0aGlzIGNhc2UsIEFDUEkgdmlkZW8gZHJpdmVyIGRvZXMgbm90IG5lZWQgdG8gZG8gYW55dGhpbmcoYWN0dWFsbHksCitpdCBkb2Vzbid0IGV2ZW4ga25vdyB0aGlzIGhhcHBlbmVkKS4KKworaWkpIEZvciBzb21lIGxhcHRvcHMsIHRoZSBwcmVzcyBvZiB0aGUgaG90a2V5IHdpbGwgbm90IGdlbmVyYXRlIHRoZQorICAgIHNjYW5jb2RlLCBpbnN0ZWFkLCBmaXJtd2FyZSB3aWxsIG5vdGlmeSB0aGUgdmlkZW8gZGV2aWNlIEFDUEkgbm9kZQorICAgIGFib3V0IHRoZSBldmVudC4gVGhlIGV2ZW50IHZhbHVlIGlzIGRlZmluZWQgaW4gdGhlIEFDUEkgc3BlYy4gQUNQSQorICAgIHZpZGVvIGRyaXZlciB3aWxsIGdlbmVyYXRlIGFuIGtleSB0eXBlIGlucHV0IGV2ZW50IGFjY29yZGluZyB0byB0aGUKKyAgICBub3RpZnkgdmFsdWUgaXQgcmVjZWl2ZWQgYW5kIHNlbmQgdGhlIGV2ZW50IHRvIHVzZXIgc3BhY2UgdGhyb3VnaCB0aGUKKyAgICBpbnB1dCBkZXZpY2UgaXQgY3JlYXRlZDoKKworCWV2ZW50CQlrZXljb2RlCisJMHg4NgkJS0VZX0JSSUdIVE5FU1NVUAorCTB4ODcJCUtFWV9CUklHSFRORVNTRE9XTgorCWV0Yy4KKworc28gdGhpcyB3b3VsZCBsZWFkIHRvIHRoZSBzYW1lIGVmZmVjdCBhcyBjYXNlIGkpIG5vdy4KKworT25jZSB1c2VyIHNwYWNlIHRvb2wgcmVjZWl2ZXMgdGhpcyBldmVudCwgaXQgY2FuIG1vZGlmeSB0aGUgYmFja2xpZ2h0CitsZXZlbCB0aHJvdWdoIHRoZSBzeXNmcyBpbnRlcmZhY2UuCisKKzMgQ2hhbmdlIGJhY2tsaWdodCBsZXZlbCBpbiB0aGUga2VybmVsCisKK1RoaXMgd29ya3MgZm9yIG1hY2hpbmVzIGNvdmVyZWQgYnkgY2FzZSBpaSkgaW4gU2VjdGlvbiAyLiBPbmNlIHRoZSBkcml2ZXIKK3JlY2VpdmVkIGEgbm90aWZpY2F0aW9uLCBpdCB3aWxsIHNldCB0aGUgYmFja2xpZ2h0IGxldmVsIGFjY29yZGluZ2x5LiBUaGlzIGRvZXMKK25vdCBhZmZlY3QgdGhlIHNlbmRpbmcgb2YgZXZlbnQgdG8gdXNlciBzcGFjZSwgdGhleSBhcmUgYWx3YXlzIHNlbnQgdG8gdXNlcgorc3BhY2UgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgdmlkZW8gbW9kdWxlIGNvbnRyb2xzIHRoZSBiYWNrbGlnaHQgbGV2ZWwKK2RpcmVjdGx5LiBUaGlzIGJlaGF2aW91ciBjYW4gYmUgY29udHJvbGxlZCB0aHJvdWdoIHRoZSBicmlnaHRuZXNzX3N3aXRjaF9lbmFibGVkCittb2R1bGUgcGFyYW1ldGVyIGFzIGRvY3VtZW50ZWQgaW4ga2VybmVsLXBhcmFtZXRlcnMudHh0LiBJdCBpcyByZWNvbW1lbmRlZCB0bworZGlzYWJsZSB0aGlzIGJlaGF2aW91ciBvbmNlIGEgR1VJIGVudmlyb25tZW50IHN0YXJ0cyB1cCBhbmQgd2FudHMgdG8gaGF2ZSBmdWxsCitjb250cm9sIG9mIHRoZSBiYWNrbGlnaHQgbGV2ZWwuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FkZGluZy1zeXNjYWxscy50eHQgYi9Eb2N1bWVudGF0aW9uL2FkZGluZy1zeXNjYWxscy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MyZDRhYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYWRkaW5nLXN5c2NhbGxzLnR4dApAQCAtMCwwICsxLDUyNyBAQAorQWRkaW5nIGEgTmV3IFN5c3RlbSBDYWxsCis9PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgd2hhdCdzIGludm9sdmVkIGluIGFkZGluZyBhIG5ldyBzeXN0ZW0gY2FsbCB0byB0aGUKK0xpbnV4IGtlcm5lbCwgb3ZlciBhbmQgYWJvdmUgdGhlIG5vcm1hbCBzdWJtaXNzaW9uIGFkdmljZSBpbgorRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nUGF0Y2hlcy4KKworCitTeXN0ZW0gQ2FsbCBBbHRlcm5hdGl2ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZmlyc3QgdGhpbmcgdG8gY29uc2lkZXIgd2hlbiBhZGRpbmcgYSBuZXcgc3lzdGVtIGNhbGwgaXMgd2hldGhlciBvbmUgb2YKK3RoZSBhbHRlcm5hdGl2ZXMgbWlnaHQgYmUgc3VpdGFibGUgaW5zdGVhZC4gIEFsdGhvdWdoIHN5c3RlbSBjYWxscyBhcmUgdGhlCittb3N0IHRyYWRpdGlvbmFsIGFuZCBtb3N0IG9idmlvdXMgaW50ZXJhY3Rpb24gcG9pbnRzIGJldHdlZW4gdXNlcnNwYWNlIGFuZCB0aGUKK2tlcm5lbCwgdGhlcmUgYXJlIG90aGVyIHBvc3NpYmlsaXRpZXMgLS0gY2hvb3NlIHdoYXQgZml0cyBiZXN0IGZvciB5b3VyCitpbnRlcmZhY2UuCisKKyAtIElmIHRoZSBvcGVyYXRpb25zIGludm9sdmVkIGNhbiBiZSBtYWRlIHRvIGxvb2sgbGlrZSBhIGZpbGVzeXN0ZW0tbGlrZQorICAgb2JqZWN0LCBpdCBtYXkgbWFrZSBtb3JlIHNlbnNlIHRvIGNyZWF0ZSBhIG5ldyBmaWxlc3lzdGVtIG9yIGRldmljZS4gIFRoaXMKKyAgIGFsc28gbWFrZXMgaXQgZWFzaWVyIHRvIGVuY2Fwc3VsYXRlIHRoZSBuZXcgZnVuY3Rpb25hbGl0eSBpbiBhIGtlcm5lbCBtb2R1bGUKKyAgIHJhdGhlciB0aGFuIHJlcXVpcmluZyBpdCB0byBiZSBidWlsdCBpbnRvIHRoZSBtYWluIGtlcm5lbC4KKyAgICAgLSBJZiB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkgaW52b2x2ZXMgb3BlcmF0aW9ucyB3aGVyZSB0aGUga2VybmVsIG5vdGlmaWVzCisgICAgICAgdXNlcnNwYWNlIHRoYXQgc29tZXRoaW5nIGhhcyBoYXBwZW5lZCwgdGhlbiByZXR1cm5pbmcgYSBuZXcgZmlsZQorICAgICAgIGRlc2NyaXB0b3IgZm9yIHRoZSByZWxldmFudCBvYmplY3QgYWxsb3dzIHVzZXJzcGFjZSB0byB1c2UKKyAgICAgICBwb2xsL3NlbGVjdC9lcG9sbCB0byByZWNlaXZlIHRoYXQgbm90aWZpY2F0aW9uLgorICAgICAtIEhvd2V2ZXIsIG9wZXJhdGlvbnMgdGhhdCBkb24ndCBtYXAgdG8gcmVhZCgyKS93cml0ZSgyKS1saWtlIG9wZXJhdGlvbnMKKyAgICAgICBoYXZlIHRvIGJlIGltcGxlbWVudGVkIGFzIGlvY3RsKDIpIHJlcXVlc3RzLCB3aGljaCBjYW4gbGVhZCB0byBhCisgICAgICAgc29tZXdoYXQgb3BhcXVlIEFQSS4KKyAtIElmIHlvdSdyZSBqdXN0IGV4cG9zaW5nIHJ1bnRpbWUgc3lzdGVtIGluZm9ybWF0aW9uLCBhIG5ldyBub2RlIGluIHN5c2ZzCisgICAoc2VlIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvc3lzZnMudHh0KSBvciB0aGUgL3Byb2MgZmlsZXN5c3RlbSBtYXkgYmUKKyAgIG1vcmUgYXBwcm9wcmlhdGUuICBIb3dldmVyLCBhY2Nlc3MgdG8gdGhlc2UgbWVjaGFuaXNtcyByZXF1aXJlcyB0aGF0IHRoZQorICAgcmVsZXZhbnQgZmlsZXN5c3RlbSBpcyBtb3VudGVkLCB3aGljaCBtaWdodCBub3QgYWx3YXlzIGJlIHRoZSBjYXNlIChlLmcuCisgICBpbiBhIG5hbWVzcGFjZWQvc2FuZGJveGVkL2Nocm9vdGVkIGVudmlyb25tZW50KS4gIEF2b2lkIGFkZGluZyBhbnkgQVBJIHRvCisgICBkZWJ1Z2ZzLCBhcyB0aGlzIGlzIG5vdCBjb25zaWRlcmVkIGEgJ3Byb2R1Y3Rpb24nIGludGVyZmFjZSB0byB1c2Vyc3BhY2UuCisgLSBJZiB0aGUgb3BlcmF0aW9uIGlzIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBmaWxlIG9yIGZpbGUgZGVzY3JpcHRvciwgdGhlbgorICAgYW4gYWRkaXRpb25hbCBmY250bCgyKSBjb21tYW5kIG9wdGlvbiBtYXkgYmUgbW9yZSBhcHByb3ByaWF0ZS4gIEhvd2V2ZXIsCisgICBmY250bCgyKSBpcyBhIG11bHRpcGxleGluZyBzeXN0ZW0gY2FsbCB0aGF0IGhpZGVzIGEgbG90IG9mIGNvbXBsZXhpdHksIHNvCisgICB0aGlzIG9wdGlvbiBpcyBiZXN0IGZvciB3aGVuIHRoZSBuZXcgZnVuY3Rpb24gaXMgY2xvc2VseSBhbmFsb2dvdXMgdG8KKyAgIGV4aXN0aW5nIGZjbnRsKDIpIGZ1bmN0aW9uYWxpdHksIG9yIHRoZSBuZXcgZnVuY3Rpb25hbGl0eSBpcyB2ZXJ5IHNpbXBsZQorICAgKGZvciBleGFtcGxlLCBnZXR0aW5nL3NldHRpbmcgYSBzaW1wbGUgZmxhZyByZWxhdGVkIHRvIGEgZmlsZSBkZXNjcmlwdG9yKS4KKyAtIElmIHRoZSBvcGVyYXRpb24gaXMgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIHRhc2sgb3IgcHJvY2VzcywgdGhlbiBhbgorICAgYWRkaXRpb25hbCBwcmN0bCgyKSBjb21tYW5kIG9wdGlvbiBtYXkgYmUgbW9yZSBhcHByb3ByaWF0ZS4gIEFzIHdpdGgKKyAgIGZjbnRsKDIpLCB0aGlzIHN5c3RlbSBjYWxsIGlzIGEgY29tcGxpY2F0ZWQgbXVsdGlwbGV4b3Igc28gaXMgYmVzdCByZXNlcnZlZAorICAgZm9yIG5lYXItYW5hbG9ncyBvZiBleGlzdGluZyBwcmN0bCgpIGNvbW1hbmRzIG9yIGdldHRpbmcvc2V0dGluZyBhIHNpbXBsZQorICAgZmxhZyByZWxhdGVkIHRvIGEgcHJvY2Vzcy4KKworCitEZXNpZ25pbmcgdGhlIEFQSTogUGxhbm5pbmcgZm9yIEV4dGVuc2lvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSBuZXcgc3lzdGVtIGNhbGwgZm9ybXMgcGFydCBvZiB0aGUgQVBJIG9mIHRoZSBrZXJuZWwsIGFuZCBoYXMgdG8gYmUgc3VwcG9ydGVkCitpbmRlZmluaXRlbHkuICBBcyBzdWNoLCBpdCdzIGEgdmVyeSBnb29kIGlkZWEgdG8gZXhwbGljaXRseSBkaXNjdXNzIHRoZQoraW50ZXJmYWNlIG9uIHRoZSBrZXJuZWwgbWFpbGluZyBsaXN0LCBhbmQgaXQncyBpbXBvcnRhbnQgdG8gcGxhbiBmb3IgZnV0dXJlCitleHRlbnNpb25zIG9mIHRoZSBpbnRlcmZhY2UuCisKKyhUaGUgc3lzY2FsbCB0YWJsZSBpcyBsaXR0ZXJlZCB3aXRoIGhpc3RvcmljYWwgZXhhbXBsZXMgd2hlcmUgdGhpcyB3YXNuJ3QgZG9uZSwKK3RvZ2V0aGVyIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZm9sbG93LXVwIHN5c3RlbSBjYWxscyAtLSBldmVudGZkL2V2ZW50ZmQyLAorZHVwMi9kdXAzLCBpbm90aWZ5X2luaXQvaW5vdGlmeV9pbml0MSwgIHBpcGUvcGlwZTIsIHJlbmFtZWF0L3JlbmFtZWF0MiAtLSBzbworbGVhcm4gZnJvbSB0aGUgaGlzdG9yeSBvZiB0aGUga2VybmVsIGFuZCBwbGFuIGZvciBleHRlbnNpb25zIGZyb20gdGhlIHN0YXJ0LikKKworRm9yIHNpbXBsZXIgc3lzdGVtIGNhbGxzIHRoYXQgb25seSB0YWtlIGEgY291cGxlIG9mIGFyZ3VtZW50cywgdGhlIHByZWZlcnJlZAord2F5IHRvIGFsbG93IGZvciBmdXR1cmUgZXh0ZW5zaWJpbGl0eSBpcyB0byBpbmNsdWRlIGEgZmxhZ3MgYXJndW1lbnQgdG8gdGhlCitzeXN0ZW0gY2FsbC4gIFRvIG1ha2Ugc3VyZSB0aGF0IHVzZXJzcGFjZSBwcm9ncmFtcyBjYW4gc2FmZWx5IHVzZSBmbGFncworYmV0d2VlbiBrZXJuZWwgdmVyc2lvbnMsIGNoZWNrIHdoZXRoZXIgdGhlIGZsYWdzIHZhbHVlIGhvbGRzIGFueSB1bmtub3duCitmbGFncywgYW5kIHJlamVjdCB0aGUgc3lzdGVtIGNhbGwgKHdpdGggRUlOVkFMKSBpZiBpdCBkb2VzOgorCisgICAgaWYgKGZsYWdzICYgfihUSElOR19GTEFHMSB8IFRISU5HX0ZMQUcyIHwgVEhJTkdfRkxBRzMpKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworKElmIG5vIGZsYWdzIHZhbHVlcyBhcmUgdXNlZCB5ZXQsIGNoZWNrIHRoYXQgdGhlIGZsYWdzIGFyZ3VtZW50IGlzIHplcm8uKQorCitGb3IgbW9yZSBzb3BoaXN0aWNhdGVkIHN5c3RlbSBjYWxscyB0aGF0IGludm9sdmUgYSBsYXJnZXIgbnVtYmVyIG9mIGFyZ3VtZW50cywKK2l0J3MgcHJlZmVycmVkIHRvIGVuY2Fwc3VsYXRlIHRoZSBtYWpvcml0eSBvZiB0aGUgYXJndW1lbnRzIGludG8gYSBzdHJ1Y3R1cmUKK3RoYXQgaXMgcGFzc2VkIGluIGJ5IHBvaW50ZXIuICBTdWNoIGEgc3RydWN0dXJlIGNhbiBjb3BlIHdpdGggZnV0dXJlIGV4dGVuc2lvbgorYnkgaW5jbHVkaW5nIGEgc2l6ZSBhcmd1bWVudCBpbiB0aGUgc3RydWN0dXJlOgorCisgICAgc3RydWN0IHh5enp5X3BhcmFtcyB7CisgICAgICAgIHUzMiBzaXplOyAvKiB1c2Vyc3BhY2Ugc2V0cyBwLT5zaXplID0gc2l6ZW9mKHN0cnVjdCB4eXp6eV9wYXJhbXMpICovCisgICAgICAgIHUzMiBwYXJhbV8xOworICAgICAgICB1NjQgcGFyYW1fMjsKKyAgICAgICAgdTY0IHBhcmFtXzM7CisgICAgfTsKKworQXMgbG9uZyBhcyBhbnkgc3Vic2VxdWVudGx5IGFkZGVkIGZpZWxkLCBzYXkgcGFyYW1fNCwgaXMgZGVzaWduZWQgc28gdGhhdCBhCit6ZXJvIHZhbHVlIGdpdmVzIHRoZSBwcmV2aW91cyBiZWhhdmlvdXIsIHRoZW4gdGhpcyBhbGxvd3MgYm90aCBkaXJlY3Rpb25zIG9mCit2ZXJzaW9uIG1pc21hdGNoOgorCisgLSBUbyBjb3BlIHdpdGggYSBsYXRlciB1c2Vyc3BhY2UgcHJvZ3JhbSBjYWxsaW5nIGFuIG9sZGVyIGtlcm5lbCwgdGhlIGtlcm5lbAorICAgY29kZSBzaG91bGQgY2hlY2sgdGhhdCBhbnkgbWVtb3J5IGJleW9uZCB0aGUgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIHRoYXQgaXQKKyAgIGV4cGVjdHMgaXMgemVybyAoZWZmZWN0aXZlbHkgY2hlY2tpbmcgdGhhdCBwYXJhbV80ID09IDApLgorIC0gVG8gY29wZSB3aXRoIGFuIG9sZGVyIHVzZXJzcGFjZSBwcm9ncmFtIGNhbGxpbmcgYSBuZXdlciBrZXJuZWwsIHRoZSBrZXJuZWwKKyAgIGNvZGUgY2FuIHplcm8tZXh0ZW5kIGEgc21hbGxlciBpbnN0YW5jZSBvZiB0aGUgc3RydWN0dXJlIChlZmZlY3RpdmVseQorICAgc2V0dGluZyBwYXJhbV80ID0gMCkuCisKK1NlZSBwZXJmX2V2ZW50X29wZW4oMikgYW5kIHRoZSBwZXJmX2NvcHlfYXR0cigpIGZ1bmN0aW9uIChpbgora2VybmVsL2V2ZW50cy9jb3JlLmMpIGZvciBhbiBleGFtcGxlIG9mIHRoaXMgYXBwcm9hY2guCisKKworRGVzaWduaW5nIHRoZSBBUEk6IE90aGVyIENvbnNpZGVyYXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgeW91ciBuZXcgc3lzdGVtIGNhbGwgYWxsb3dzIHVzZXJzcGFjZSB0byByZWZlciB0byBhIGtlcm5lbCBvYmplY3QsIGl0CitzaG91bGQgdXNlIGEgZmlsZSBkZXNjcmlwdG9yIGFzIHRoZSBoYW5kbGUgZm9yIHRoYXQgb2JqZWN0IC0tIGRvbid0IGludmVudCBhCituZXcgdHlwZSBvZiB1c2Vyc3BhY2Ugb2JqZWN0IGhhbmRsZSB3aGVuIHRoZSBrZXJuZWwgYWxyZWFkeSBoYXMgbWVjaGFuaXNtcyBhbmQKK3dlbGwtZGVmaW5lZCBzZW1hbnRpY3MgZm9yIHVzaW5nIGZpbGUgZGVzY3JpcHRvcnMuCisKK0lmIHlvdXIgbmV3IHh5enp5KDIpIHN5c3RlbSBjYWxsIGRvZXMgcmV0dXJuIGEgbmV3IGZpbGUgZGVzY3JpcHRvciwgdGhlbiB0aGUKK2ZsYWdzIGFyZ3VtZW50IHNob3VsZCBpbmNsdWRlIGEgdmFsdWUgdGhhdCBpcyBlcXVpdmFsZW50IHRvIHNldHRpbmcgT19DTE9FWEVDCitvbiB0aGUgbmV3IEZELiAgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgdXNlcnNwYWNlIHRvIGNsb3NlIHRoZSB0aW1pbmcKK3dpbmRvdyBiZXR3ZWVuIHh5enp5KCkgYW5kIGNhbGxpbmcgZmNudGwoZmQsIEZfU0VURkQsIEZEX0NMT0VYRUMpLCB3aGVyZSBhbgordW5leHBlY3RlZCBmb3JrKCkgYW5kIGV4ZWN2ZSgpIGluIGFub3RoZXIgdGhyZWFkIGNvdWxkIGxlYWsgYSBkZXNjcmlwdG9yIHRvCit0aGUgZXhlYydlZCBwcm9ncmFtLiAoSG93ZXZlciwgcmVzaXN0IHRoZSB0ZW1wdGF0aW9uIHRvIHJlLXVzZSB0aGUgYWN0dWFsIHZhbHVlCitvZiB0aGUgT19DTE9FWEVDIGNvbnN0YW50LCBhcyBpdCBpcyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgYW5kIGlzIHBhcnQgb2YgYQorbnVtYmVyaW5nIHNwYWNlIG9mIE9fKiBmbGFncyB0aGF0IGlzIGZhaXJseSBmdWxsLikKKworSWYgeW91ciBzeXN0ZW0gY2FsbCByZXR1cm5zIGEgbmV3IGZpbGUgZGVzY3JpcHRvciwgeW91IHNob3VsZCBhbHNvIGNvbnNpZGVyCit3aGF0IGl0IG1lYW5zIHRvIHVzZSB0aGUgcG9sbCgyKSBmYW1pbHkgb2Ygc3lzdGVtIGNhbGxzIG9uIHRoYXQgZmlsZQorZGVzY3JpcHRvci4gTWFraW5nIGEgZmlsZSBkZXNjcmlwdG9yIHJlYWR5IGZvciByZWFkaW5nIG9yIHdyaXRpbmcgaXMgdGhlCitub3JtYWwgd2F5IGZvciB0aGUga2VybmVsIHRvIGluZGljYXRlIHRvIHVzZXJzcGFjZSB0aGF0IGFuIGV2ZW50IGhhcworb2NjdXJyZWQgb24gdGhlIGNvcnJlc3BvbmRpbmcga2VybmVsIG9iamVjdC4KKworSWYgeW91ciBuZXcgeHl6enkoMikgc3lzdGVtIGNhbGwgaW52b2x2ZXMgYSBmaWxlbmFtZSBhcmd1bWVudDoKKworICAgIGludCBzeXNfeHl6enkoY29uc3QgY2hhciBfX3VzZXIgKnBhdGgsIC4uLiwgdW5zaWduZWQgaW50IGZsYWdzKTsKKworeW91IHNob3VsZCBhbHNvIGNvbnNpZGVyIHdoZXRoZXIgYW4geHl6enlhdCgyKSB2ZXJzaW9uIGlzIG1vcmUgYXBwcm9wcmlhdGU6CisKKyAgICBpbnQgc3lzX3h5enp5YXQoaW50IGRmZCwgY29uc3QgY2hhciBfX3VzZXIgKnBhdGgsIC4uLiwgdW5zaWduZWQgaW50IGZsYWdzKTsKKworVGhpcyBhbGxvd3MgbW9yZSBmbGV4aWJpbGl0eSBmb3IgaG93IHVzZXJzcGFjZSBzcGVjaWZpZXMgdGhlIGZpbGUgaW4gcXVlc3Rpb247CitpbiBwYXJ0aWN1bGFyIGl0IGFsbG93cyB1c2Vyc3BhY2UgdG8gcmVxdWVzdCB0aGUgZnVuY3Rpb25hbGl0eSBmb3IgYW4KK2FscmVhZHktb3BlbmVkIGZpbGUgZGVzY3JpcHRvciB1c2luZyB0aGUgQVRfRU1QVFlfUEFUSCBmbGFnLCBlZmZlY3RpdmVseSBnaXZpbmcKK2FuIGZ4eXp6eSgzKSBvcGVyYXRpb24gZm9yIGZyZWU6CisKKyAtIHh5enp5YXQoQVRfRkRDV0QsIHBhdGgsIC4uLiwgMCkgaXMgZXF1aXZhbGVudCB0byB4eXp6eShwYXRoLC4uLikKKyAtIHh5enp5YXQoZmQsICIiLCAuLi4sIEFUX0VNUFRZX1BBVEgpIGlzIGVxdWl2YWxlbnQgdG8gZnh5enp5KGZkLCAuLi4pCisKKyhGb3IgbW9yZSBkZXRhaWxzIG9uIHRoZSByYXRpb25hbGUgb2YgdGhlICphdCgpIGNhbGxzLCBzZWUgdGhlIG9wZW5hdCgyKSBtYW4KK3BhZ2U7IGZvciBhbiBleGFtcGxlIG9mIEFUX0VNUFRZX1BBVEgsIHNlZSB0aGUgc3RhdGF0KDIpIG1hbiBwYWdlLikKKworSWYgeW91ciBuZXcgeHl6enkoMikgc3lzdGVtIGNhbGwgaW52b2x2ZXMgYSBwYXJhbWV0ZXIgZGVzY3JpYmluZyBhbiBvZmZzZXQKK3dpdGhpbiBhIGZpbGUsIG1ha2UgaXRzIHR5cGUgbG9mZl90IHNvIHRoYXQgNjQtYml0IG9mZnNldHMgY2FuIGJlIHN1cHBvcnRlZAorZXZlbiBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4KKworSWYgeW91ciBuZXcgeHl6enkoMikgc3lzdGVtIGNhbGwgaW52b2x2ZXMgcHJpdmlsZWdlZCBmdW5jdGlvbmFsaXR5LCBpdCBuZWVkcwordG8gYmUgZ292ZXJuZWQgYnkgdGhlIGFwcHJvcHJpYXRlIExpbnV4IGNhcGFiaWxpdHkgYml0IChjaGVja2VkIHdpdGggYSBjYWxsIHRvCitjYXBhYmxlKCkpLCBhcyBkZXNjcmliZWQgaW4gdGhlIGNhcGFiaWxpdGllcyg3KSBtYW4gcGFnZS4gIENob29zZSBhbiBleGlzdGluZworY2FwYWJpbGl0eSBiaXQgdGhhdCBnb3Zlcm5zIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eSwgYnV0IHRyeSB0byBhdm9pZCBjb21iaW5pbmcKK2xvdHMgb2Ygb25seSB2YWd1ZWx5IHJlbGF0ZWQgZnVuY3Rpb25zIHRvZ2V0aGVyIHVuZGVyIHRoZSBzYW1lIGJpdCwgYXMgdGhpcworZ29lcyBhZ2FpbnN0IGNhcGFiaWxpdGllcycgcHVycG9zZSBvZiBzcGxpdHRpbmcgdGhlIHBvd2VyIG9mIHJvb3QuICBJbgorcGFydGljdWxhciwgYXZvaWQgYWRkaW5nIG5ldyB1c2VzIG9mIHRoZSBhbHJlYWR5IG92ZXJseS1nZW5lcmFsIENBUF9TWVNfQURNSU4KK2NhcGFiaWxpdHkuCisKK0lmIHlvdXIgbmV3IHh5enp5KDIpIHN5c3RlbSBjYWxsIG1hbmlwdWxhdGVzIGEgcHJvY2VzcyBvdGhlciB0aGFuIHRoZSBjYWxsaW5nCitwcm9jZXNzLCBpdCBzaG91bGQgYmUgcmVzdHJpY3RlZCAodXNpbmcgYSBjYWxsIHRvIHB0cmFjZV9tYXlfYWNjZXNzKCkpIHNvIHRoYXQKK29ubHkgYSBjYWxsaW5nIHByb2Nlc3Mgd2l0aCB0aGUgc2FtZSBwZXJtaXNzaW9ucyBhcyB0aGUgdGFyZ2V0IHByb2Nlc3MsIG9yCit3aXRoIHRoZSBuZWNlc3NhcnkgY2FwYWJpbGl0aWVzLCBjYW4gbWFuaXB1bGF0ZSB0aGUgdGFyZ2V0IHByb2Nlc3MuCisKK0ZpbmFsbHksIGJlIGF3YXJlIHRoYXQgc29tZSBub24teDg2IGFyY2hpdGVjdHVyZXMgaGF2ZSBhbiBlYXNpZXIgdGltZSBpZgorc3lzdGVtIGNhbGwgcGFyYW1ldGVycyB0aGF0IGFyZSBleHBsaWNpdGx5IDY0LWJpdCBmYWxsIG9uIG9kZC1udW1iZXJlZAorYXJndW1lbnRzIChpLmUuIHBhcmFtZXRlciAxLCAzLCA1KSwgdG8gYWxsb3cgdXNlIG9mIGNvbnRpZ3VvdXMgcGFpcnMgb2YgMzItYml0CityZWdpc3RlcnMuICAoVGhpcyBjb25jZXJuIGRvZXMgbm90IGFwcGx5IGlmIHRoZSBhcmd1bWVudHMgYXJlIHBhcnQgb2YgYQorc3RydWN0dXJlIHRoYXQncyBwYXNzZWQgaW4gYnkgcG9pbnRlci4pCisKKworUHJvcG9zaW5nIHRoZSBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RvIG1ha2UgbmV3IHN5c3RlbSBjYWxscyBlYXN5IHRvIHJldmlldywgaXQncyBiZXN0IHRvIGRpdmlkZSB1cCB0aGUgcGF0Y2hzZXQKK2ludG8gc2VwYXJhdGUgY2h1bmtzLiAgVGhlc2Ugc2hvdWxkIGluY2x1ZGUgYXQgbGVhc3QgdGhlIGZvbGxvd2luZyBpdGVtcyBhcworZGlzdGluY3QgY29tbWl0cyAoZWFjaCBvZiB3aGljaCBpcyBkZXNjcmliZWQgZnVydGhlciBiZWxvdyk6CisKKyAtIFRoZSBjb3JlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzeXN0ZW0gY2FsbCwgdG9nZXRoZXIgd2l0aCBwcm90b3R5cGVzLAorICAgZ2VuZXJpYyBudW1iZXJpbmcsIEtjb25maWcgY2hhbmdlcyBhbmQgZmFsbGJhY2sgc3R1YiBpbXBsZW1lbnRhdGlvbi4KKyAtIFdpcmluZyB1cCBvZiB0aGUgbmV3IHN5c3RlbSBjYWxsIGZvciBvbmUgcGFydGljdWxhciBhcmNoaXRlY3R1cmUsIHVzdWFsbHkKKyAgIHg4NiAoaW5jbHVkaW5nIGFsbCBvZiB4ODZfNjQsIHg4Nl8zMiBhbmQgeDMyKS4KKyAtIEEgZGVtb25zdHJhdGlvbiBvZiB0aGUgdXNlIG9mIHRoZSBuZXcgc3lzdGVtIGNhbGwgaW4gdXNlcnNwYWNlIHZpYSBhCisgICBzZWxmdGVzdCBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8uCisgLSBBIGRyYWZ0IG1hbi1wYWdlIGZvciB0aGUgbmV3IHN5c3RlbSBjYWxsLCBlaXRoZXIgYXMgcGxhaW4gdGV4dCBpbiB0aGUKKyAgIGNvdmVyIGxldHRlciwgb3IgYXMgYSBwYXRjaCB0byB0aGUgKHNlcGFyYXRlKSBtYW4tcGFnZXMgcmVwb3NpdG9yeS4KKworTmV3IHN5c3RlbSBjYWxsIHByb3Bvc2FscywgbGlrZSBhbnkgY2hhbmdlIHRvIHRoZSBrZXJuZWwncyBBUEksIHNob3VsZCBhbHdheXMKK2JlIGNjJ2VkIHRvIGxpbnV4LWFwaUB2Z2VyLmtlcm5lbC5vcmcuCisKKworR2VuZXJpYyBTeXN0ZW0gQ2FsbCBJbXBsZW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgeW91ciBuZXcgeHl6enkoMikgc3lzdGVtIGNhbGwgd2lsbCBiZSBjYWxsZWQKK3N5c194eXp6eSgpLCBidXQgeW91IGFkZCB0aGlzIGVudHJ5IHBvaW50IHdpdGggdGhlIGFwcHJvcHJpYXRlCitTWVNDQUxMX0RFRklORW4oKSBtYWNybyByYXRoZXIgdGhhbiBleHBsaWNpdGx5LiAgVGhlICduJyBpbmRpY2F0ZXMgdGhlIG51bWJlcgorb2YgYXJndW1lbnRzIHRvIHRoZSBzeXN0ZW0gY2FsbCwgYW5kIHRoZSBtYWNybyB0YWtlcyB0aGUgc3lzdGVtIGNhbGwgbmFtZQorZm9sbG93ZWQgYnkgdGhlICh0eXBlLCBuYW1lKSBwYWlycyBmb3IgdGhlIHBhcmFtZXRlcnMgYXMgYXJndW1lbnRzLiAgVXNpbmcKK3RoaXMgbWFjcm8gYWxsb3dzIG1ldGFkYXRhIGFib3V0IHRoZSBuZXcgc3lzdGVtIGNhbGwgdG8gYmUgbWFkZSBhdmFpbGFibGUgZm9yCitvdGhlciB0b29scy4KKworVGhlIG5ldyBlbnRyeSBwb2ludCBhbHNvIG5lZWRzIGEgY29ycmVzcG9uZGluZyBmdW5jdGlvbiBwcm90b3R5cGUsIGluCitpbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmgsIG1hcmtlZCBhcyBhc21saW5rYWdlIHRvIG1hdGNoIHRoZSB3YXkgdGhhdCBzeXN0ZW0KK2NhbGxzIGFyZSBpbnZva2VkOgorCisgICAgYXNtbGlua2FnZSBsb25nIHN5c194eXp6eSguLi4pOworCitTb21lIGFyY2hpdGVjdHVyZXMgKGUuZy4geDg2KSBoYXZlIHRoZWlyIG93biBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgc3lzY2FsbAordGFibGVzLCBidXQgc2V2ZXJhbCBvdGhlciBhcmNoaXRlY3R1cmVzIHNoYXJlIGEgZ2VuZXJpYyBzeXNjYWxsIHRhYmxlLiBBZGQgeW91cgorbmV3IHN5c3RlbSBjYWxsIHRvIHRoZSBnZW5lcmljIGxpc3QgYnkgYWRkaW5nIGFuIGVudHJ5IHRvIHRoZSBsaXN0IGluCitpbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6CisKKyAgICAjZGVmaW5lIF9fTlJfeHl6enkgMjkyCisgICAgX19TWVNDQUxMKF9fTlJfeHl6enksIHN5c194eXp6eSkKKworQWxzbyB1cGRhdGUgdGhlIF9fTlJfc3lzY2FsbHMgY291bnQgdG8gcmVmbGVjdCB0aGUgYWRkaXRpb25hbCBzeXN0ZW0gY2FsbCwgYW5kCitub3RlIHRoYXQgaWYgbXVsdGlwbGUgbmV3IHN5c3RlbSBjYWxscyBhcmUgYWRkZWQgaW4gdGhlIHNhbWUgbWVyZ2Ugd2luZG93LAoreW91ciBuZXcgc3lzY2FsbCBudW1iZXIgbWF5IGdldCBhZGp1c3RlZCB0byByZXNvbHZlIGNvbmZsaWN0cy4KKworVGhlIGZpbGUga2VybmVsL3N5c19uaS5jIHByb3ZpZGVzIGEgZmFsbGJhY2sgc3R1YiBpbXBsZW1lbnRhdGlvbiBvZiBlYWNoIHN5c3RlbQorY2FsbCwgcmV0dXJuaW5nIC1FTk9TWVMuICBBZGQgeW91ciBuZXcgc3lzdGVtIGNhbGwgaGVyZSB0b286CisKKyAgICBjb25kX3N5c2NhbGwoc3lzX3h5enp5KTsKKworWW91ciBuZXcga2VybmVsIGZ1bmN0aW9uYWxpdHksIGFuZCB0aGUgc3lzdGVtIGNhbGwgdGhhdCBjb250cm9scyBpdCwgc2hvdWxkCitub3JtYWxseSBiZSBvcHRpb25hbCwgc28gYWRkIGEgQ09ORklHIG9wdGlvbiAodHlwaWNhbGx5IHRvIGluaXQvS2NvbmZpZykgZm9yCitpdC4gQXMgdXN1YWwgZm9yIG5ldyBDT05GSUcgb3B0aW9uczoKKworIC0gSW5jbHVkZSBhIGRlc2NyaXB0aW9uIG9mIHRoZSBuZXcgZnVuY3Rpb25hbGl0eSBhbmQgc3lzdGVtIGNhbGwgY29udHJvbGxlZAorICAgYnkgdGhlIG9wdGlvbi4KKyAtIE1ha2UgdGhlIG9wdGlvbiBkZXBlbmQgb24gRVhQRVJUIGlmIGl0IHNob3VsZCBiZSBoaWRkZW4gZnJvbSBub3JtYWwgdXNlcnMuCisgLSBNYWtlIGFueSBuZXcgc291cmNlIGZpbGVzIGltcGxlbWVudGluZyB0aGUgZnVuY3Rpb24gZGVwZW5kZW50IG9uIHRoZSBDT05GSUcKKyAgIG9wdGlvbiBpbiB0aGUgTWFrZWZpbGUgKGUuZy4gIm9iai0kKENPTkZJR19YWVpaWV9TWVNDQUxMKSArPSB4eXp6eS5jIikuCisgLSBEb3VibGUgY2hlY2sgdGhhdCB0aGUga2VybmVsIHN0aWxsIGJ1aWxkcyB3aXRoIHRoZSBuZXcgQ09ORklHIG9wdGlvbiB0dXJuZWQKKyAgIG9mZi4KKworVG8gc3VtbWFyaXplLCB5b3UgbmVlZCBhIGNvbW1pdCB0aGF0IGluY2x1ZGVzOgorCisgLSBDT05GSUcgb3B0aW9uIGZvciB0aGUgbmV3IGZ1bmN0aW9uLCBub3JtYWxseSBpbiBpbml0L0tjb25maWcKKyAtIFNZU0NBTExfREVGSU5Fbih4eXp6eSwgLi4uKSBmb3IgdGhlIGVudHJ5IHBvaW50CisgLSBjb3JyZXNwb25kaW5nIHByb3RvdHlwZSBpbiBpbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmgKKyAtIGdlbmVyaWMgdGFibGUgZW50cnkgaW4gaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oCisgLSBmYWxsYmFjayBzdHViIGluIGtlcm5lbC9zeXNfbmkuYworCisKK3g4NiBTeXN0ZW0gQ2FsbCBJbXBsZW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RvIHdpcmUgdXAgeW91ciBuZXcgc3lzdGVtIGNhbGwgZm9yIHg4NiBwbGF0Zm9ybXMsIHlvdSBuZWVkIHRvIHVwZGF0ZSB0aGUKK21hc3RlciBzeXNjYWxsIHRhYmxlcy4gIEFzc3VtaW5nIHlvdXIgbmV3IHN5c3RlbSBjYWxsIGlzbid0IHNwZWNpYWwgaW4gc29tZQord2F5IChzZWUgYmVsb3cpLCB0aGlzIGludm9sdmVzIGEgImNvbW1vbiIgZW50cnkgKGZvciB4ODZfNjQgYW5kIHgzMikgaW4KK2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsOgorCisgICAgMzMzICAgY29tbW9uICAgeHl6enkgICAgIHN5c194eXp6eQorCithbmQgYW4gImkzODYiIGVudHJ5IGluIGFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOgorCisgICAgMzgwICAgaTM4NiAgICAgeHl6enkgICAgIHN5c194eXp6eQorCitBZ2FpbiwgdGhlc2UgbnVtYmVycyBhcmUgbGlhYmxlIHRvIGJlIGNoYW5nZWQgaWYgdGhlcmUgYXJlIGNvbmZsaWN0cyBpbiB0aGUKK3JlbGV2YW50IG1lcmdlIHdpbmRvdy4KKworCitDb21wYXRpYmlsaXR5IFN5c3RlbSBDYWxscyAoR2VuZXJpYykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGb3IgbW9zdCBzeXN0ZW0gY2FsbHMgdGhlIHNhbWUgNjQtYml0IGltcGxlbWVudGF0aW9uIGNhbiBiZSBpbnZva2VkIGV2ZW4gd2hlbgordGhlIHVzZXJzcGFjZSBwcm9ncmFtIGlzIGl0c2VsZiAzMi1iaXQ7IGV2ZW4gaWYgdGhlIHN5c3RlbSBjYWxsJ3MgcGFyYW1ldGVycworaW5jbHVkZSBhbiBleHBsaWNpdCBwb2ludGVyLCB0aGlzIGlzIGhhbmRsZWQgdHJhbnNwYXJlbnRseS4KKworSG93ZXZlciwgdGhlcmUgYXJlIGEgY291cGxlIG9mIHNpdHVhdGlvbnMgd2hlcmUgYSBjb21wYXRpYmlsaXR5IGxheWVyIGlzCituZWVkZWQgdG8gY29wZSB3aXRoIHNpemUgZGlmZmVyZW5jZXMgYmV0d2VlbiAzMi1iaXQgYW5kIDY0LWJpdC4KKworVGhlIGZpcnN0IGlzIGlmIHRoZSA2NC1iaXQga2VybmVsIGFsc28gc3VwcG9ydHMgMzItYml0IHVzZXJzcGFjZSBwcm9ncmFtcywgYW5kCitzbyBuZWVkcyB0byBwYXJzZSBhcmVhcyBvZiAoX191c2VyKSBtZW1vcnkgdGhhdCBjb3VsZCBob2xkIGVpdGhlciAzMi1iaXQgb3IKKzY0LWJpdCB2YWx1ZXMuICBJbiBwYXJ0aWN1bGFyLCB0aGlzIGlzIG5lZWRlZCB3aGVuZXZlciBhIHN5c3RlbSBjYWxsIGFyZ3VtZW50CitpczoKKworIC0gYSBwb2ludGVyIHRvIGEgcG9pbnRlcgorIC0gYSBwb2ludGVyIHRvIGEgc3RydWN0IGNvbnRhaW5pbmcgYSBwb2ludGVyIChlLmcuIHN0cnVjdCBpb3ZlYyBfX3VzZXIgKikKKyAtIGEgcG9pbnRlciB0byBhIHZhcnlpbmcgc2l6ZWQgaW50ZWdyYWwgdHlwZSAodGltZV90LCBvZmZfdCwgbG9uZywgLi4uKQorIC0gYSBwb2ludGVyIHRvIGEgc3RydWN0IGNvbnRhaW5pbmcgYSB2YXJ5aW5nIHNpemVkIGludGVncmFsIHR5cGUuCisKK1RoZSBzZWNvbmQgc2l0dWF0aW9uIHRoYXQgcmVxdWlyZXMgYSBjb21wYXRpYmlsaXR5IGxheWVyIGlzIGlmIG9uZSBvZiB0aGUKK3N5c3RlbSBjYWxsJ3MgYXJndW1lbnRzIGhhcyBhIHR5cGUgdGhhdCBpcyBleHBsaWNpdGx5IDY0LWJpdCBldmVuIG9uIGEgMzItYml0CithcmNoaXRlY3R1cmUsIGZvciBleGFtcGxlIGxvZmZfdCBvciBfX3U2NC4gIEluIHRoaXMgY2FzZSwgYSB2YWx1ZSB0aGF0IGFycml2ZXMKK2F0IGEgNjQtYml0IGtlcm5lbCBmcm9tIGEgMzItYml0IGFwcGxpY2F0aW9uIHdpbGwgYmUgc3BsaXQgaW50byB0d28gMzItYml0Cit2YWx1ZXMsIHdoaWNoIHRoZW4gbmVlZCB0byBiZSByZS1hc3NlbWJsZWQgaW4gdGhlIGNvbXBhdGliaWxpdHkgbGF5ZXIuCisKKyhOb3RlIHRoYXQgYSBzeXN0ZW0gY2FsbCBhcmd1bWVudCB0aGF0J3MgYSBwb2ludGVyIHRvIGFuIGV4cGxpY2l0IDY0LWJpdCB0eXBlCitkb2VzICpub3QqIG5lZWQgYSBjb21wYXRpYmlsaXR5IGxheWVyOyBmb3IgZXhhbXBsZSwgc3BsaWNlKDIpJ3MgYXJndW1lbnRzIG9mCit0eXBlIGxvZmZfdCBfX3VzZXIgKiBkbyBub3QgdHJpZ2dlciB0aGUgbmVlZCBmb3IgYSBjb21wYXRfIHN5c3RlbSBjYWxsLikKKworVGhlIGNvbXBhdGliaWxpdHkgdmVyc2lvbiBvZiB0aGUgc3lzdGVtIGNhbGwgaXMgY2FsbGVkIGNvbXBhdF9zeXNfeHl6enkoKSwgYW5kCitpcyBhZGRlZCB3aXRoIHRoZSBDT01QQVRfU1lTQ0FMTF9ERUZJTkVuKCkgbWFjcm8sIGFuYWxvZ291c2x5IHRvCitTWVNDQUxMX0RFRklORW4uICBUaGlzIHZlcnNpb24gb2YgdGhlIGltcGxlbWVudGF0aW9uIHJ1bnMgYXMgcGFydCBvZiBhIDY0LWJpdAora2VybmVsLCBidXQgZXhwZWN0cyB0byByZWNlaXZlIDMyLWJpdCBwYXJhbWV0ZXIgdmFsdWVzIGFuZCBkb2VzIHdoYXRldmVyIGlzCituZWVkZWQgdG8gZGVhbCB3aXRoIHRoZW0uICAoVHlwaWNhbGx5LCB0aGUgY29tcGF0X3N5c18gdmVyc2lvbiBjb252ZXJ0cyB0aGUKK3ZhbHVlcyB0byA2NC1iaXQgdmVyc2lvbnMgYW5kIGVpdGhlciBjYWxscyBvbiB0byB0aGUgc3lzXyB2ZXJzaW9uLCBvciBib3RoIG9mCit0aGVtIGNhbGwgYSBjb21tb24gaW5uZXIgaW1wbGVtZW50YXRpb24gZnVuY3Rpb24uKQorCitUaGUgY29tcGF0IGVudHJ5IHBvaW50IGFsc28gbmVlZHMgYSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9uIHByb3RvdHlwZSwgaW4KK2luY2x1ZGUvbGludXgvY29tcGF0LmgsIG1hcmtlZCBhcyBhc21saW5rYWdlIHRvIG1hdGNoIHRoZSB3YXkgdGhhdCBzeXN0ZW0KK2NhbGxzIGFyZSBpbnZva2VkOgorCisgICAgYXNtbGlua2FnZSBsb25nIGNvbXBhdF9zeXNfeHl6enkoLi4uKTsKKworSWYgdGhlIHN5c3RlbSBjYWxsIGludm9sdmVzIGEgc3RydWN0dXJlIHRoYXQgaXMgbGFpZCBvdXQgZGlmZmVyZW50bHkgb24gMzItYml0CithbmQgNjQtYml0IHN5c3RlbXMsIHNheSBzdHJ1Y3QgeHl6enlfYXJncywgdGhlbiB0aGUgaW5jbHVkZS9saW51eC9jb21wYXQuaAoraGVhZGVyIGZpbGUgc2hvdWxkIGFsc28gaW5jbHVkZSBhIGNvbXBhdCB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgKHN0cnVjdAorY29tcGF0X3h5enp5X2FyZ3MpIHdoZXJlIGVhY2ggdmFyaWFibGUtc2l6ZSBmaWVsZCBoYXMgdGhlIGFwcHJvcHJpYXRlIGNvbXBhdF8KK3R5cGUgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgdHlwZSBpbiBzdHJ1Y3QgeHl6enlfYXJncy4gIFRoZQorY29tcGF0X3N5c194eXp6eSgpIHJvdXRpbmUgY2FuIHRoZW4gdXNlIHRoaXMgY29tcGF0XyBzdHJ1Y3R1cmUgdG8gcGFyc2UgdGhlCithcmd1bWVudHMgZnJvbSBhIDMyLWJpdCBpbnZvY2F0aW9uLgorCitGb3IgZXhhbXBsZSwgaWYgdGhlcmUgYXJlIGZpZWxkczoKKworICAgIHN0cnVjdCB4eXp6eV9hcmdzIHsKKyAgICAgICAgY29uc3QgY2hhciBfX3VzZXIgKnB0cjsKKyAgICAgICAgX19rZXJuZWxfbG9uZ190IHZhcnlpbmdfdmFsOworICAgICAgICB1NjQgZml4ZWRfdmFsOworICAgICAgICAvKiAuLi4gKi8KKyAgICB9OworCitpbiBzdHJ1Y3QgeHl6enlfYXJncywgdGhlbiBzdHJ1Y3QgY29tcGF0X3h5enp5X2FyZ3Mgd291bGQgaGF2ZToKKworICAgIHN0cnVjdCBjb21wYXRfeHl6enlfYXJncyB7CisgICAgICAgIGNvbXBhdF91cHRyX3QgcHRyOworICAgICAgICBjb21wYXRfbG9uZ190IHZhcnlpbmdfdmFsOworICAgICAgICB1NjQgZml4ZWRfdmFsOworICAgICAgICAvKiAuLi4gKi8KKyAgICB9OworCitUaGUgZ2VuZXJpYyBzeXN0ZW0gY2FsbCBsaXN0IGFsc28gbmVlZHMgYWRqdXN0aW5nIHRvIGFsbG93IGZvciB0aGUgY29tcGF0Cit2ZXJzaW9uOyB0aGUgZW50cnkgaW4gaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oIHNob3VsZCB1c2UKK19fU0NfQ09NUCByYXRoZXIgdGhhbiBfX1NZU0NBTEw6CisKKyAgICAjZGVmaW5lIF9fTlJfeHl6enkgMjkyCisgICAgX19TQ19DT01QKF9fTlJfeHl6enksIHN5c194eXp6eSwgY29tcGF0X3N5c194eXp6eSkKKworVG8gc3VtbWFyaXplLCB5b3UgbmVlZDoKKworIC0gYSBDT01QQVRfU1lTQ0FMTF9ERUZJTkVuKHh5enp5LCAuLi4pIGZvciB0aGUgY29tcGF0IGVudHJ5IHBvaW50CisgLSBjb3JyZXNwb25kaW5nIHByb3RvdHlwZSBpbiBpbmNsdWRlL2xpbnV4L2NvbXBhdC5oCisgLSAoaWYgbmVlZGVkKSAzMi1iaXQgbWFwcGluZyBzdHJ1Y3QgaW4gaW5jbHVkZS9saW51eC9jb21wYXQuaAorIC0gaW5zdGFuY2Ugb2YgX19TQ19DT01QIG5vdCBfX1NZU0NBTEwgaW4gaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oCisKKworQ29tcGF0aWJpbGl0eSBTeXN0ZW0gQ2FsbHMgKHg4NikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RvIHdpcmUgdXAgdGhlIHg4NiBhcmNoaXRlY3R1cmUgb2YgYSBzeXN0ZW0gY2FsbCB3aXRoIGEgY29tcGF0aWJpbGl0eSB2ZXJzaW9uLAordGhlIGVudHJpZXMgaW4gdGhlIHN5c2NhbGwgdGFibGVzIG5lZWQgdG8gYmUgYWRqdXN0ZWQuCisKK0ZpcnN0LCB0aGUgZW50cnkgaW4gYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwgZ2V0cyBhbiBleHRyYQorY29sdW1uIHRvIGluZGljYXRlIHRoYXQgYSAzMi1iaXQgdXNlcnNwYWNlIHByb2dyYW0gcnVubmluZyBvbiBhIDY0LWJpdCBrZXJuZWwKK3Nob3VsZCBoaXQgdGhlIGNvbXBhdCBlbnRyeSBwb2ludDoKKworICAgIDM4MCAgIGkzODYgICAgIHh5enp5ICAgICBzeXNfeHl6enkgICAgY29tcGF0X3N5c194eXp6eQorCitTZWNvbmQsIHlvdSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBzaG91bGQgaGFwcGVuIGZvciB0aGUgeDMyIEFCSSB2ZXJzaW9uIG9mCit0aGUgbmV3IHN5c3RlbSBjYWxsLiAgVGhlcmUncyBhIGNob2ljZSBoZXJlOiB0aGUgbGF5b3V0IG9mIHRoZSBhcmd1bWVudHMKK3Nob3VsZCBlaXRoZXIgbWF0Y2ggdGhlIDY0LWJpdCB2ZXJzaW9uIG9yIHRoZSAzMi1iaXQgdmVyc2lvbi4KKworSWYgdGhlcmUncyBhIHBvaW50ZXItdG8tYS1wb2ludGVyIGludm9sdmVkLCB0aGUgZGVjaXNpb24gaXMgZWFzeTogeDMyIGlzCitJTFAzMiwgc28gdGhlIGxheW91dCBzaG91bGQgbWF0Y2ggdGhlIDMyLWJpdCB2ZXJzaW9uLCBhbmQgdGhlIGVudHJ5IGluCithcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibCBpcyBzcGxpdCBzbyB0aGF0IHgzMiBwcm9ncmFtcyBoaXQgdGhlCitjb21wYXRpYmlsaXR5IHdyYXBwZXI6CisKKyAgICAzMzMgICA2NCAgICAgICB4eXp6eSAgICAgc3lzX3h5enp5CisgICAgLi4uCisgICAgNTU1ICAgeDMyICAgICAgeHl6enkgICAgIGNvbXBhdF9zeXNfeHl6enkKKworSWYgbm8gcG9pbnRlcnMgYXJlIGludm9sdmVkLCB0aGVuIGl0IGlzIHByZWZlcmFibGUgdG8gcmUtdXNlIHRoZSA2NC1iaXQgc3lzdGVtCitjYWxsIGZvciB0aGUgeDMyIEFCSSAoYW5kIGNvbnNlcXVlbnRseSB0aGUgZW50cnkgaW4KK2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsIGlzIHVuY2hhbmdlZCkuCisKK0luIGVpdGhlciBjYXNlLCB5b3Ugc2hvdWxkIGNoZWNrIHRoYXQgdGhlIHR5cGVzIGludm9sdmVkIGluIHlvdXIgYXJndW1lbnQKK2xheW91dCBkbyBpbmRlZWQgbWFwIGV4YWN0bHkgZnJvbSB4MzIgKC1teDMyKSB0byBlaXRoZXIgdGhlIDMyLWJpdCAoLW0zMikgb3IKKzY0LWJpdCAoLW02NCkgZXF1aXZhbGVudHMuCisKKworU3lzdGVtIENhbGxzIFJldHVybmluZyBFbHNld2hlcmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZvciBtb3N0IHN5c3RlbSBjYWxscywgb25jZSB0aGUgc3lzdGVtIGNhbGwgaXMgY29tcGxldGUgdGhlIHVzZXIgcHJvZ3JhbQorY29udGludWVzIGV4YWN0bHkgd2hlcmUgaXQgbGVmdCBvZmYgLS0gYXQgdGhlIG5leHQgaW5zdHJ1Y3Rpb24sIHdpdGggdGhlCitzdGFjayB0aGUgc2FtZSBhbmQgbW9zdCBvZiB0aGUgcmVnaXN0ZXJzIHRoZSBzYW1lIGFzIGJlZm9yZSB0aGUgc3lzdGVtIGNhbGwsCithbmQgd2l0aCB0aGUgc2FtZSB2aXJ0dWFsIG1lbW9yeSBzcGFjZS4KKworSG93ZXZlciwgYSBmZXcgc3lzdGVtIGNhbGxzIGRvIHRoaW5ncyBkaWZmZXJlbnRseS4gIFRoZXkgbWlnaHQgcmV0dXJuIHRvIGEKK2RpZmZlcmVudCBsb2NhdGlvbiAocnRfc2lncmV0dXJuKSBvciBjaGFuZ2UgdGhlIG1lbW9yeSBzcGFjZSAoZm9yay92Zm9yay9jbG9uZSkKK29yIGV2ZW4gYXJjaGl0ZWN0dXJlIChleGVjdmUvZXhlY3ZlYXQpIG9mIHRoZSBwcm9ncmFtLgorCitUbyBhbGxvdyBmb3IgdGhpcywgdGhlIGtlcm5lbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3lzdGVtIGNhbGwgbWF5IG5lZWQgdG8KK3NhdmUgYW5kIHJlc3RvcmUgYWRkaXRpb25hbCByZWdpc3RlcnMgdG8gdGhlIGtlcm5lbCBzdGFjaywgYWxsb3dpbmcgY29tcGxldGUKK2NvbnRyb2wgb2Ygd2hlcmUgYW5kIGhvdyBleGVjdXRpb24gY29udGludWVzIGFmdGVyIHRoZSBzeXN0ZW0gY2FsbC4KKworVGhpcyBpcyBhcmNoLXNwZWNpZmljLCBidXQgdHlwaWNhbGx5IGludm9sdmVzIGRlZmluaW5nIGFzc2VtYmx5IGVudHJ5IHBvaW50cwordGhhdCBzYXZlL3Jlc3RvcmUgYWRkaXRpb25hbCByZWdpc3RlcnMgYW5kIGludm9rZSB0aGUgcmVhbCBzeXN0ZW0gY2FsbCBlbnRyeQorcG9pbnQuCisKK0ZvciB4ODZfNjQsIHRoaXMgaXMgaW1wbGVtZW50ZWQgYXMgYSBzdHViX3h5enp5IGVudHJ5IHBvaW50IGluCithcmNoL3g4Ni9lbnRyeS9lbnRyeV82NC5TLCBhbmQgdGhlIGVudHJ5IGluIHRoZSBzeXNjYWxsIHRhYmxlCisoYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwpIGlzIGFkanVzdGVkIHRvIG1hdGNoOgorCisgICAgMzMzICAgY29tbW9uICAgeHl6enkgICAgIHN0dWJfeHl6enkKKworVGhlIGVxdWl2YWxlbnQgZm9yIDMyLWJpdCBwcm9ncmFtcyBydW5uaW5nIG9uIGEgNjQtYml0IGtlcm5lbCBpcyBub3JtYWxseQorY2FsbGVkIHN0dWIzMl94eXp6eSBhbmQgaW1wbGVtZW50ZWQgaW4gYXJjaC94ODYvZW50cnkvZW50cnlfNjRfY29tcGF0LlMsCit3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHN5c2NhbGwgdGFibGUgYWRqdXN0bWVudCBpbgorYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50Ymw6CisKKyAgICAzODAgICBpMzg2ICAgICB4eXp6eSAgICAgc3lzX3h5enp5ICAgIHN0dWIzMl94eXp6eQorCitJZiB0aGUgc3lzdGVtIGNhbGwgbmVlZHMgYSBjb21wYXRpYmlsaXR5IGxheWVyIChhcyBpbiB0aGUgcHJldmlvdXMgc2VjdGlvbikKK3RoZW4gdGhlIHN0dWIzMl8gdmVyc2lvbiBuZWVkcyB0byBjYWxsIG9uIHRvIHRoZSBjb21wYXRfc3lzXyB2ZXJzaW9uIG9mIHRoZQorc3lzdGVtIGNhbGwgcmF0aGVyIHRoYW4gdGhlIG5hdGl2ZSA2NC1iaXQgdmVyc2lvbi4gIEFsc28sIGlmIHRoZSB4MzIgQUJJCitpbXBsZW1lbnRhdGlvbiBpcyBub3QgY29tbW9uIHdpdGggdGhlIHg4Nl82NCB2ZXJzaW9uLCB0aGVuIGl0cyBzeXNjYWxsCit0YWJsZSB3aWxsIGFsc28gbmVlZCB0byBpbnZva2UgYSBzdHViIHRoYXQgY2FsbHMgb24gdG8gdGhlIGNvbXBhdF9zeXNfCit2ZXJzaW9uLgorCitGb3IgY29tcGxldGVuZXNzLCBpdCdzIGFsc28gbmljZSB0byBzZXQgdXAgYSBtYXBwaW5nIHNvIHRoYXQgdXNlci1tb2RlIExpbnV4CitzdGlsbCB3b3JrcyAtLSBpdHMgc3lzY2FsbCB0YWJsZSB3aWxsIHJlZmVyZW5jZSBzdHViX3h5enp5LCBidXQgdGhlIFVNTCBidWlsZAorZG9lc24ndCBpbmNsdWRlIGFyY2gveDg2L2VudHJ5L2VudHJ5XzY0LlMgaW1wbGVtZW50YXRpb24gKGJlY2F1c2UgVU1MCitzaW11bGF0ZXMgcmVnaXN0ZXJzIGV0YykuICBGaXhpbmcgdGhpcyBpcyBhcyBzaW1wbGUgYXMgYWRkaW5nIGEgI2RlZmluZSB0bworYXJjaC94ODYvdW0vc3lzX2NhbGxfdGFibGVfNjQuYzoKKworICAgICNkZWZpbmUgc3R1Yl94eXp6eSBzeXNfeHl6enkKKworCitPdGhlciBEZXRhaWxzCistLS0tLS0tLS0tLS0tCisKK01vc3Qgb2YgdGhlIGtlcm5lbCB0cmVhdHMgc3lzdGVtIGNhbGxzIGluIGEgZ2VuZXJpYyB3YXksIGJ1dCB0aGVyZSBpcyB0aGUKK29jY2FzaW9uYWwgZXhjZXB0aW9uIHRoYXQgbWF5IG5lZWQgdXBkYXRpbmcgZm9yIHlvdXIgcGFydGljdWxhciBzeXN0ZW0gY2FsbC4KKworVGhlIGF1ZGl0IHN1YnN5c3RlbSBpcyBvbmUgc3VjaCBzcGVjaWFsIGNhc2U7IGl0IGluY2x1ZGVzIChhcmNoLXNwZWNpZmljKQorZnVuY3Rpb25zIHRoYXQgY2xhc3NpZnkgc29tZSBzcGVjaWFsIHR5cGVzIG9mIHN5c3RlbSBjYWxsIC0tIHNwZWNpZmljYWxseQorZmlsZSBvcGVuIChvcGVuL29wZW5hdCksIHByb2dyYW0gZXhlY3V0aW9uIChleGVjdmUvZXhldmVhdCkgb3Igc29ja2V0CittdWx0aXBsZXhvciAoc29ja2V0Y2FsbCkgb3BlcmF0aW9ucy4gSWYgeW91ciBuZXcgc3lzdGVtIGNhbGwgaXMgYW5hbG9nb3VzIHRvCitvbmUgb2YgdGhlc2UsIHRoZW4gdGhlIGF1ZGl0IHN5c3RlbSBzaG91bGQgYmUgdXBkYXRlZC4KKworTW9yZSBnZW5lcmFsbHksIGlmIHRoZXJlIGlzIGFuIGV4aXN0aW5nIHN5c3RlbSBjYWxsIHRoYXQgaXMgYW5hbG9nb3VzIHRvIHlvdXIKK25ldyBzeXN0ZW0gY2FsbCwgaXQncyB3b3J0aCBkb2luZyBhIGtlcm5lbC13aWRlIGdyZXAgZm9yIHRoZSBleGlzdGluZyBzeXN0ZW0KK2NhbGwgdG8gY2hlY2sgdGhlcmUgYXJlIG5vIG90aGVyIHNwZWNpYWwgY2FzZXMuCisKKworVGVzdGluZworLS0tLS0tLQorCitBIG5ldyBzeXN0ZW0gY2FsbCBzaG91bGQgb2J2aW91c2x5IGJlIHRlc3RlZDsgaXQgaXMgYWxzbyB1c2VmdWwgdG8gcHJvdmlkZQorcmV2aWV3ZXJzIHdpdGggYSBkZW1vbnN0cmF0aW9uIG9mIGhvdyB1c2VyIHNwYWNlIHByb2dyYW1zIHdpbGwgdXNlIHRoZSBzeXN0ZW0KK2NhbGwuICBBIGdvb2Qgd2F5IHRvIGNvbWJpbmUgdGhlc2UgYWltcyBpcyB0byBpbmNsdWRlIGEgc2ltcGxlIHNlbGYtdGVzdAorcHJvZ3JhbSBpbiBhIG5ldyBkaXJlY3RvcnkgdW5kZXIgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvLgorCitGb3IgYSBuZXcgc3lzdGVtIGNhbGwsIHRoZXJlIHdpbGwgb2J2aW91c2x5IGJlIG5vIGxpYmMgd3JhcHBlciBmdW5jdGlvbiBhbmQgc28KK3RoZSB0ZXN0IHdpbGwgbmVlZCB0byBpbnZva2UgaXQgdXNpbmcgc3lzY2FsbCgpOyBhbHNvLCBpZiB0aGUgc3lzdGVtIGNhbGwKK2ludm9sdmVzIGEgbmV3IHVzZXJzcGFjZS12aXNpYmxlIHN0cnVjdHVyZSwgdGhlIGNvcnJlc3BvbmRpbmcgaGVhZGVyIHdpbGwgbmVlZAordG8gYmUgaW5zdGFsbGVkIHRvIGNvbXBpbGUgdGhlIHRlc3QuCisKK01ha2Ugc3VyZSB0aGUgc2VsZnRlc3QgcnVucyBzdWNjZXNzZnVsbHkgb24gYWxsIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzLiAgRm9yCitleGFtcGxlLCBjaGVjayB0aGF0IGl0IHdvcmtzIHdoZW4gY29tcGlsZWQgYXMgYW4geDg2XzY0ICgtbTY0KSwgeDg2XzMyICgtbTMyKQorYW5kIHgzMiAoLW14MzIpIEFCSSBwcm9ncmFtLgorCitGb3IgbW9yZSBleHRlbnNpdmUgYW5kIHRob3JvdWdoIHRlc3Rpbmcgb2YgbmV3IGZ1bmN0aW9uYWxpdHksIHlvdSBzaG91bGQgYWxzbworY29uc2lkZXIgYWRkaW5nIHRlc3RzIHRvIHRoZSBMaW51eCBUZXN0IFByb2plY3QsIG9yIHRvIHRoZSB4ZnN0ZXN0cyBwcm9qZWN0Citmb3IgZmlsZXN5c3RlbS1yZWxhdGVkIGNoYW5nZXMuCisgLSBodHRwczovL2xpbnV4LXRlc3QtcHJvamVjdC5naXRodWIuaW8vCisgLSBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2ZzL3hmcy94ZnN0ZXN0cy1kZXYuZ2l0CisKKworTWFuIFBhZ2UKKy0tLS0tLS0tCisKK0FsbCBuZXcgc3lzdGVtIGNhbGxzIHNob3VsZCBjb21lIHdpdGggYSBjb21wbGV0ZSBtYW4gcGFnZSwgaWRlYWxseSB1c2luZyBncm9mZgorbWFya3VwLCBidXQgcGxhaW4gdGV4dCB3aWxsIGRvLiAgSWYgZ3JvZmYgaXMgdXNlZCwgaXQncyBoZWxwZnVsIHRvIGluY2x1ZGUgYQorcHJlLXJlbmRlcmVkIEFTQ0lJIHZlcnNpb24gb2YgdGhlIG1hbiBwYWdlIGluIHRoZSBjb3ZlciBlbWFpbCBmb3IgdGhlCitwYXRjaHNldCwgZm9yIHRoZSBjb252ZW5pZW5jZSBvZiByZXZpZXdlcnMuCisKK1RoZSBtYW4gcGFnZSBzaG91bGQgYmUgY2MnZWQgdG8gbGludXgtbWFuQHZnZXIua2VybmVsLm9yZworRm9yIG1vcmUgZGV0YWlscywgc2VlIGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL21hbi1wYWdlcy9wYXRjaGVzLmh0bWwKKworUmVmZXJlbmNlcyBhbmQgU291cmNlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgLSBMV04gYXJ0aWNsZSBmcm9tIE1pY2hhZWwgS2VycmlzayBvbiB1c2Ugb2YgZmxhZ3MgYXJndW1lbnQgaW4gc3lzdGVtIGNhbGxzOgorICAgaHR0cHM6Ly9sd24ubmV0L0FydGljbGVzLzU4NTQxNS8KKyAtIExXTiBhcnRpY2xlIGZyb20gTWljaGFlbCBLZXJyaXNrIG9uIGhvdyB0byBoYW5kbGUgdW5rbm93biBmbGFncyBpbiBhIHN5c3RlbQorICAgY2FsbDogaHR0cHM6Ly9sd24ubmV0L0FydGljbGVzLzU4ODQ0NC8KKyAtIExXTiBhcnRpY2xlIGZyb20gSmFrZSBFZGdlIGRlc2NyaWJpbmcgY29uc3RyYWludHMgb24gNjQtYml0IHN5c3RlbSBjYWxsCisgICBhcmd1bWVudHM6IGh0dHBzOi8vbHduLm5ldC9BcnRpY2xlcy8zMTE2MzAvCisgLSBQYWlyIG9mIExXTiBhcnRpY2xlcyBmcm9tIERhdmlkIERyeXNkYWxlIHRoYXQgZGVzY3JpYmUgdGhlIHN5c3RlbSBjYWxsCisgICBpbXBsZW1lbnRhdGlvbiBwYXRocyBpbiBkZXRhaWwgZm9yIHYzLjE0OgorICAgIC0gaHR0cHM6Ly9sd24ubmV0L0FydGljbGVzLzYwNDI4Ny8KKyAgICAtIGh0dHBzOi8vbHduLm5ldC9BcnRpY2xlcy82MDQ1MTUvCisgLSBBcmNoaXRlY3R1cmUtc3BlY2lmaWMgcmVxdWlyZW1lbnRzIGZvciBzeXN0ZW0gY2FsbHMgYXJlIGRpc2N1c3NlZCBpbiB0aGUKKyAgIHN5c2NhbGwoMikgbWFuLXBhZ2U6CisgICBodHRwOi8vbWFuNy5vcmcvbGludXgvbWFuLXBhZ2VzL21hbjIvc3lzY2FsbC4yLmh0bWwjTk9URVMKKyAtIENvbGxhdGVkIGVtYWlscyBmcm9tIExpbnVzIFRvcnZhbGRzIGRpc2N1c3NpbmcgdGhlIHByb2JsZW1zIHdpdGggaW9jdGwoKToKKyAgIGh0dHA6Ly95YXJjaGl2ZS5uZXQvY29tcC9saW51eC9pb2N0bC5odG1sCisgLSAiSG93IHRvIG5vdCBpbnZlbnQga2VybmVsIGludGVyZmFjZXMiLCBBcm5kIEJlcmdtYW5uLAorICAgaHR0cDovL3d3dy51a3V1Zy5vcmcvZXZlbnRzL2xpbnV4MjAwNy8yMDA3L3BhcGVycy9CZXJnbWFubi5wZGYKKyAtIExXTiBhcnRpY2xlIGZyb20gTWljaGFlbCBLZXJyaXNrIG9uIGF2b2lkaW5nIG5ldyB1c2VzIG9mIENBUF9TWVNfQURNSU46CisgICBodHRwczovL2x3bi5uZXQvQXJ0aWNsZXMvNDg2MzA2LworIC0gUmVjb21tZW5kYXRpb24gZnJvbSBBbmRyZXcgTW9ydG9uIHRoYXQgYWxsIHJlbGF0ZWQgaW5mb3JtYXRpb24gZm9yIGEgbmV3CisgICBzeXN0ZW0gY2FsbCBzaG91bGQgY29tZSBpbiB0aGUgc2FtZSBlbWFpbCB0aHJlYWQ6CisgICBodHRwczovL2xrbWwub3JnL2xrbWwvMjAxNC83LzI0LzY0MQorIC0gUmVjb21tZW5kYXRpb24gZnJvbSBNaWNoYWVsIEtlcnJpc2sgdGhhdCBhIG5ldyBzeXN0ZW0gY2FsbCBzaG91bGQgY29tZSB3aXRoCisgICBhIG1hbiBwYWdlOiBodHRwczovL2xrbWwub3JnL2xrbWwvMjAxNC82LzEzLzMwOQorIC0gU3VnZ2VzdGlvbiBmcm9tIFRob21hcyBHbGVpeG5lciB0aGF0IHg4NiB3aXJlLXVwIHNob3VsZCBiZSBpbiBhIHNlcGFyYXRlCisgICBjb21taXQ6IGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDE0LzExLzE5LzI1NAorIC0gU3VnZ2VzdGlvbiBmcm9tIEdyZWcgS3JvYWgtSGFydG1hbiB0aGF0IGl0J3MgZ29vZCBmb3IgbmV3IHN5c3RlbSBjYWxscyB0bworICAgY29tZSB3aXRoIGEgbWFuLXBhZ2UgJiBzZWxmdGVzdDogaHR0cHM6Ly9sa21sLm9yZy9sa21sLzIwMTQvMy8xOS83MTAKKyAtIERpc2N1c3Npb24gZnJvbSBNaWNoYWVsIEtlcnJpc2sgb2YgbmV3IHN5c3RlbSBjYWxsIHZzLiBwcmN0bCgyKSBleHRlbnNpb246CisgICBodHRwczovL2xrbWwub3JnL2xrbWwvMjAxNC82LzMvNDExCisgLSBTdWdnZXN0aW9uIGZyb20gSW5nbyBNb2xuYXIgdGhhdCBzeXN0ZW0gY2FsbHMgdGhhdCBpbnZvbHZlIG11bHRpcGxlCisgICBhcmd1bWVudHMgc2hvdWxkIGVuY2Fwc3VsYXRlIHRob3NlIGFyZ3VtZW50cyBpbiBhIHN0cnVjdCwgd2hpY2ggaW5jbHVkZXMgYQorICAgc2l6ZSBmaWVsZCBmb3IgZnV0dXJlIGV4dGVuc2liaWxpdHk6IGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDE1LzcvMzAvMTE3CisgLSBOdW1iZXJpbmcgb2RkaXRpZXMgYXJpc2luZyBmcm9tIChyZS0pdXNlIG9mIE9fKiBudW1iZXJpbmcgc3BhY2UgZmxhZ3M6CisgICAgLSBjb21taXQgNzUwNjlmMmI1YmZiICgidmZzOiByZW51bWJlciBGTU9ERV9OT05PVElGWSBhbmQgYWRkIHRvIHVuaXF1ZW5lc3MKKyAgICAgIGNoZWNrIikKKyAgICAtIGNvbW1pdCAxMmVkMmUzNmM5OGEgKCJmYW5vdGlmeTogRk1PREVfTk9OT1RJRlkgYW5kIF9fT19TWU5DIGluIHNwYXJjCisgICAgICBjb25mbGljdCIpCisgICAgLSBjb21taXQgYmI0NThjNjQ0YTU5ICgiU2FmZXIgQUJJIGZvciBPX1RNUEZJTEUiKQorIC0gRGlzY3Vzc2lvbiBmcm9tIE1hdHRoZXcgV2lsY294IGFib3V0IHJlc3RyaWN0aW9ucyBvbiA2NC1iaXQgYXJndW1lbnRzOgorICAgaHR0cHM6Ly9sa21sLm9yZy9sa21sLzIwMDgvMTIvMTIvMTg3CisgLSBSZWNvbW1lbmRhdGlvbiBmcm9tIEdyZWcgS3JvYWgtSGFydG1hbiB0aGF0IHVua25vd24gZmxhZ3Mgc2hvdWxkIGJlCisgICBwb2xpY2VkOiBodHRwczovL2xrbWwub3JnL2xrbWwvMjAxNC83LzE3LzU3NworIC0gUmVjb21tZW5kYXRpb24gZnJvbSBMaW51cyBUb3J2YWxkcyB0aGF0IHgzMiBzeXN0ZW0gY2FsbHMgc2hvdWxkIHByZWZlcgorICAgY29tcGF0aWJpbGl0eSB3aXRoIDY0LWJpdCB2ZXJzaW9ucyByYXRoZXIgdGhhbiAzMi1iaXQgdmVyc2lvbnM6CisgICBodHRwczovL2xrbWwub3JnL2xrbWwvMjAxMS84LzMxLzI0NApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hb2UvYW9lLnR4dCBiL0RvY3VtZW50YXRpb24vYW9lL2FvZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzcxNDg3ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYW9lL2FvZS50eHQKQEAgLTAsMCArMSwxNDMgQEAKK0FUQSBvdmVyIEV0aGVybmV0IGlzIGEgbmV0d29yayBwcm90b2NvbCB0aGF0IHByb3ZpZGVzIHNpbXBsZSBhY2Nlc3MgdG8KK2Jsb2NrIHN0b3JhZ2Ugb24gdGhlIExBTi4KKworICBodHRwOi8vc3VwcG9ydC5jb3JhaWQuY29tL2RvY3VtZW50cy9Bb0VyMTEudHh0CisKK1RoZSBFdGhlckRyaXZlIChSKSBIT1dUTyBmb3IgMi42IGFuZCAzLngga2VybmVscyBpcyBmb3VuZCBhdCAuLi4KKworICBodHRwOi8vc3VwcG9ydC5jb3JhaWQuY29tL3N1cHBvcnQvbGludXgvRXRoZXJEcml2ZS0yLjYtSE9XVE8uaHRtbAorCitJdCBoYXMgbWFueSB0aXBzIGFuZCBoaW50cyEgIFBsZWFzZSBzZWUsIGVzcGVjaWFsbHksIHJlY29tbWVuZGVkCit0dW5pbmdzIGZvciB2aXJ0dWFsIG1lbW9yeToKKworICBodHRwOi8vc3VwcG9ydC5jb3JhaWQuY29tL3N1cHBvcnQvbGludXgvRXRoZXJEcml2ZS0yLjYtSE9XVE8tNS5odG1sI3NzNS4xOQorCitUaGUgYW9ldG9vbHMgYXJlIHVzZXJsYW5kIHByb2dyYW1zIHRoYXQgYXJlIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCB0aGlzCitkcml2ZXIuICBUaGUgYW9ldG9vbHMgYXJlIG9uIHNvdXJjZWZvcmdlLgorCisgIGh0dHA6Ly9hb2V0b29scy5zb3VyY2Vmb3JnZS5uZXQvCisKK1RoZSBzY3JpcHRzIGluIHRoaXMgRG9jdW1lbnRhdGlvbi9hb2UgZGlyZWN0b3J5IGFyZSBpbnRlbmRlZCB0bworZG9jdW1lbnQgdGhlIHVzZSBvZiB0aGUgZHJpdmVyIGFuZCBhcmUgbm90IG5lY2Vzc2FyeSBpZiB5b3UgaW5zdGFsbAordGhlIGFvZXRvb2xzLgorCisKK0NSRUFUSU5HIERFVklDRSBOT0RFUworCisgIFVzZXJzIG9mIHVkZXYgc2hvdWxkIGZpbmQgdGhlIGJsb2NrIGRldmljZSBub2RlcyBjcmVhdGVkCisgIGF1dG9tYXRpY2FsbHksIGJ1dCB0byBjcmVhdGUgYWxsIHRoZSBuZWNlc3NhcnkgZGV2aWNlIG5vZGVzLCB1c2UgdGhlCisgIHVkZXYgY29uZmlndXJhdGlvbiBydWxlcyBwcm92aWRlZCBpbiB1ZGV2LnR4dCAoaW4gdGhpcyBkaXJlY3RvcnkpLgorCisgIFRoZXJlIGlzIGEgdWRldi1pbnN0YWxsLnNoIHNjcmlwdCB0aGF0IHNob3dzIGhvdyB0byBpbnN0YWxsIHRoZXNlCisgIHJ1bGVzIG9uIHlvdXIgc3lzdGVtLgorCisgIFRoZXJlIGlzIGFsc28gYW4gYXV0b2xvYWQgc2NyaXB0IHRoYXQgc2hvd3MgaG93IHRvIGVkaXQKKyAgL2V0Yy9tb2Rwcm9iZS5kL2FvZS5jb25mIHRvIGVuc3VyZSB0aGF0IHRoZSBhb2UgbW9kdWxlIGlzIGxvYWRlZCB3aGVuCisgIG5lY2Vzc2FyeS4gIFByZWxvYWRpbmcgdGhlIGFvZSBtb2R1bGUgaXMgcHJlZmVyYWJsZSB0byBhdXRvbG9hZGluZywKKyAgaG93ZXZlciwgYmVjYXVzZSBBb0UgZGlzY292ZXJ5IHRha2VzIGEgZmV3IHNlY29uZHMuICBJdCBjYW4gYmUKKyAgY29uZnVzaW5nIHdoZW4gYW4gQW9FIGRldmljZSBpcyBub3QgcHJlc2VudCB0aGUgZmlyc3QgdGltZSB0aGUgYQorICBjb21tYW5kIGlzIHJ1biBidXQgYXBwZWFycyBhIHNlY29uZCBsYXRlci4KKworVVNJTkcgREVWSUNFIE5PREVTCisKKyAgImNhdCAvZGV2L2V0aGVyZC9lcnIiIGJsb2Nrcywgd2FpdGluZyBmb3IgZXJyb3IgZGlhZ25vc3RpYyBvdXRwdXQsCisgIGxpa2UgYW55IHJldHJhbnNtaXR0ZWQgcGFja2V0cy4KKworICAiZWNobyBldGgyIGV0aDQgPiAvZGV2L2V0aGVyZC9pbnRlcmZhY2VzIiB0ZWxscyB0aGUgYW9lIGRyaXZlciB0bworICBsaW1pdCBBVEEgb3ZlciBFdGhlcm5ldCB0cmFmZmljIHRvIGV0aDIgYW5kIGV0aDQuICBBb0UgdHJhZmZpYyBmcm9tCisgIHVudHJ1c3RlZCBuZXR3b3JrcyBzaG91bGQgYmUgaWdub3JlZCBhcyBhIG1hdHRlciBvZiBzZWN1cml0eS4gIFNlZQorICBhbHNvIHRoZSBhb2VfaWZsaXN0IGRyaXZlciBvcHRpb24gZGVzY3JpYmVkIGJlbG93LgorCisgICJlY2hvID4gL2Rldi9ldGhlcmQvZGlzY292ZXIiIHRlbGxzIHRoZSBkcml2ZXIgdG8gZmluZCBvdXQgd2hhdCBBb0UKKyAgZGV2aWNlcyBhcmUgYXZhaWxhYmxlLgorCisgIEluIHRoZSBmdXR1cmUgdGhlc2UgY2hhcmFjdGVyIGRldmljZXMgbWF5IGRpc2FwcGVhciBhbmQgYmUgcmVwbGFjZWQKKyAgYnkgc3lzZnMgY291bnRlcnBhcnRzLiAgVXNpbmcgdGhlIGNvbW1hbmRzIGluIGFvZXRvb2xzIGluc3VsYXRlcworICB1c2VycyBmcm9tIHRoZXNlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuCisKKyAgVGhlIGJsb2NrIGRldmljZXMgYXJlIG5hbWVkIGxpa2UgdGhpczoKKworCWV7c2hlbGZ9LntzbG90fQorCWV7c2hlbGZ9LntzbG90fXB7cGFydH0KKworICAuLi4gc28gdGhhdCAiZTAuMiIgaXMgdGhlIHRoaXJkIGJsYWRlIGZyb20gdGhlIGxlZnQgKHNsb3QgMikgaW4gdGhlCisgIGZpcnN0IHNoZWxmIChzaGVsZiBhZGRyZXNzIHplcm8pLiAgVGhhdCdzIHRoZSB3aG9sZSBkaXNrLiAgVGhlIGZpcnN0CisgIHBhcnRpdGlvbiBvbiB0aGF0IGRpc2sgd291bGQgYmUgImUwLjJwMSIuCisKK1VTSU5HIFNZU0ZTCisKKyAgRWFjaCBhb2UgYmxvY2sgZGV2aWNlIGluIC9zeXMvYmxvY2sgaGFzIHRoZSBleHRyYSBhdHRyaWJ1dGVzIG9mCisgIHN0YXRlLCBtYWMsIGFuZCBuZXRpZi4gIFRoZSBzdGF0ZSBhdHRyaWJ1dGUgaXMgInVwIiB3aGVuIHRoZSBkZXZpY2UKKyAgaXMgcmVhZHkgZm9yIEkvTyBhbmQgImRvd24iIGlmIGRldGVjdGVkIGJ1dCB1bnVzYWJsZS4gIFRoZQorICAiZG93bixjbG9zZXdhaXQiIHN0YXRlIHNob3dzIHRoYXQgdGhlIGRldmljZSBpcyBzdGlsbCBvcGVuIGFuZAorICBjYW5ub3QgY29tZSB1cCBhZ2FpbiB1bnRpbCBpdCBoYXMgYmVlbiBjbG9zZWQuCisKKyAgVGhlIG1hYyBhdHRyaWJ1dGUgaXMgdGhlIGV0aGVybmV0IGFkZHJlc3Mgb2YgdGhlIHJlbW90ZSBBb0UgZGV2aWNlLgorICBUaGUgbmV0aWYgYXR0cmlidXRlIGlzIHRoZSBuZXR3b3JrIGludGVyZmFjZSBvbiB0aGUgbG9jYWxob3N0CisgIHRocm91Z2ggd2hpY2ggd2UgYXJlIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgcmVtb3RlIEFvRSBkZXZpY2UuCisKKyAgVGhlcmUgaXMgYSBzY3JpcHQgaW4gdGhpcyBkaXJlY3RvcnkgdGhhdCBmb3JtYXRzIHRoaXMgaW5mb3JtYXRpb24gaW4KKyAgYSBjb252ZW5pZW50IHdheS4gIFVzZXJzIHdpdGggYW9ldG9vbHMgc2hvdWxkIHVzZSB0aGUgYW9lLXN0YXQKKyAgY29tbWFuZC4KKworICByb290QG1ha2tpIHJvb3QjIHNoIERvY3VtZW50YXRpb24vYW9lL3N0YXR1cy5zaCAKKyAgICAgZTEwLjAgICAgICAgICAgICBldGgzICAgICAgICAgICAgICB1cAorICAgICBlMTAuMSAgICAgICAgICAgIGV0aDMgICAgICAgICAgICAgIHVwCisgICAgIGUxMC4yICAgICAgICAgICAgZXRoMyAgICAgICAgICAgICAgdXAKKyAgICAgZTEwLjMgICAgICAgICAgICBldGgzICAgICAgICAgICAgICB1cAorICAgICBlMTAuNCAgICAgICAgICAgIGV0aDMgICAgICAgICAgICAgIHVwCisgICAgIGUxMC41ICAgICAgICAgICAgZXRoMyAgICAgICAgICAgICAgdXAKKyAgICAgZTEwLjYgICAgICAgICAgICBldGgzICAgICAgICAgICAgICB1cAorICAgICBlMTAuNyAgICAgICAgICAgIGV0aDMgICAgICAgICAgICAgIHVwCisgICAgIGUxMC44ICAgICAgICAgICAgZXRoMyAgICAgICAgICAgICAgdXAKKyAgICAgZTEwLjkgICAgICAgICAgICBldGgzICAgICAgICAgICAgICB1cAorICAgICAgZTQuMCAgICAgICAgICAgIGV0aDEgICAgICAgICAgICAgIHVwCisgICAgICBlNC4xICAgICAgICAgICAgZXRoMSAgICAgICAgICAgICAgdXAKKyAgICAgIGU0LjIgICAgICAgICAgICBldGgxICAgICAgICAgICAgICB1cAorICAgICAgZTQuMyAgICAgICAgICAgIGV0aDEgICAgICAgICAgICAgIHVwCisgICAgICBlNC40ICAgICAgICAgICAgZXRoMSAgICAgICAgICAgICAgdXAKKyAgICAgIGU0LjUgICAgICAgICAgICBldGgxICAgICAgICAgICAgICB1cAorICAgICAgZTQuNiAgICAgICAgICAgIGV0aDEgICAgICAgICAgICAgIHVwCisgICAgICBlNC43ICAgICAgICAgICAgZXRoMSAgICAgICAgICAgICAgdXAKKyAgICAgIGU0LjggICAgICAgICAgICBldGgxICAgICAgICAgICAgICB1cAorICAgICAgZTQuOSAgICAgICAgICAgIGV0aDEgICAgICAgICAgICAgIHVwCisKKyAgVXNlIC9zeXMvbW9kdWxlL2FvZS9wYXJhbWV0ZXJzL2FvZV9pZmxpc3QgKG9yIGJldHRlciwgdGhlIGRyaXZlcgorICBvcHRpb24gZGlzY3Vzc2VkIGJlbG93KSBpbnN0ZWFkIG9mIC9kZXYvZXRoZXJkL2ludGVyZmFjZXMgdG8gbGltaXQKKyAgQW9FIHRyYWZmaWMgdG8gdGhlIG5ldHdvcmsgaW50ZXJmYWNlcyBpbiB0aGUgZ2l2ZW4KKyAgd2hpdGVzcGFjZS1zZXBhcmF0ZWQgbGlzdC4gIFVubGlrZSB0aGUgb2xkIGNoYXJhY3RlciBkZXZpY2UsIHRoZQorICBzeXNmcyBlbnRyeSBjYW4gYmUgcmVhZCBmcm9tIGFzIHdlbGwgYXMgd3JpdHRlbiB0by4KKworICBJdCdzIGhlbHBmdWwgdG8gdHJpZ2dlciBkaXNjb3ZlcnkgYWZ0ZXIgc2V0dGluZyB0aGUgbGlzdCBvZiBhbGxvd2VkCisgIGludGVyZmFjZXMuICBUaGUgYW9ldG9vbHMgcGFja2FnZSBwcm92aWRlcyBhbiBhb2UtZGlzY292ZXIgc2NyaXB0CisgIGZvciB0aGlzIHB1cnBvc2UuICBZb3UgY2FuIGFsc28gZGlyZWN0bHkgdXNlIHRoZQorICAvZGV2L2V0aGVyZC9kaXNjb3ZlciBzcGVjaWFsIGZpbGUgZGVzY3JpYmVkIGFib3ZlLgorCitEUklWRVIgT1BUSU9OUworCisgIFRoZXJlIGlzIGEgYm9vdCBvcHRpb24gZm9yIHRoZSBidWlsdC1pbiBhb2UgZHJpdmVyIGFuZCBhCisgIGNvcnJlc3BvbmRpbmcgbW9kdWxlIHBhcmFtZXRlciwgYW9lX2lmbGlzdC4gIFdpdGhvdXQgdGhpcyBvcHRpb24sCisgIGFsbCBuZXR3b3JrIGludGVyZmFjZXMgbWF5IGJlIHVzZWQgZm9yIEFUQSBvdmVyIEV0aGVybmV0LiAgSGVyZSBpcyBhCisgIHVzYWdlIGV4YW1wbGUgZm9yIHRoZSBtb2R1bGUgcGFyYW1ldGVyLgorCisgICAgbW9kcHJvYmUgYW9lX2lmbGlzdD0iZXRoMSBldGgzIgorCisgIFRoZSBhb2VfZGVhZHNlY3MgbW9kdWxlIHBhcmFtZXRlciBkZXRlcm1pbmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZgorICBzZWNvbmRzIHRoYXQgdGhlIGRyaXZlciB3aWxsIHdhaXQgZm9yIGFuIEFvRSBkZXZpY2UgdG8gcHJvdmlkZSBhCisgIHJlc3BvbnNlIHRvIGFuIEFvRSBjb21tYW5kLiAgQWZ0ZXIgYW9lX2RlYWRzZWNzIHNlY29uZHMgaGF2ZQorICBlbGFwc2VkLCB0aGUgQW9FIGRldmljZSB3aWxsIGJlIG1hcmtlZCBhcyAiZG93biIuICBBIHZhbHVlIG9mIHplcm8KKyAgaXMgc3VwcG9ydGVkIGZvciB0ZXN0aW5nIHB1cnBvc2VzIGFuZCBtYWtlcyB0aGUgYW9lIGRyaXZlciBrZWVwCisgIHRyeWluZyBBb0UgY29tbWFuZHMgZm9yZXZlci4KKworICBUaGUgYW9lX21heG91dCBtb2R1bGUgcGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQgb2YgMTI4LiAgVGhpcyBpcyB0aGUKKyAgbWF4aW11bSBudW1iZXIgb2YgdW5yZXNwb25kZWQgcGFja2V0cyB0aGF0IHdpbGwgYmUgc2VudCB0byBhbiBBb0UKKyAgdGFyZ2V0IGF0IG9uZSB0aW1lLgorCisgIFRoZSBhb2VfZHluZGV2cyBtb2R1bGUgcGFyYW1ldGVyIGRlZmF1bHRzIHRvIDEsIG1lYW5pbmcgdGhhdCB0aGUKKyAgZHJpdmVyIHdpbGwgYXNzaWduIGEgYmxvY2sgZGV2aWNlIG1pbm9yIG51bWJlciB0byBhIGRpc2NvdmVyZWQgQW9FCisgIHRhcmdldCBiYXNlZCBvbiB0aGUgb3JkZXIgb2YgaXRzIGRpc2NvdmVyeS4gIFdpdGggZHluYW1pYyBtaW5vcgorICBkZXZpY2UgbnVtYmVycyBpbiB1c2UsIGEgZ3JlYXRlciByYW5nZSBvZiBBb0Ugc2hlbGYgYW5kIHNsb3QKKyAgYWRkcmVzc2VzIGNhbiBiZSBzdXBwb3J0ZWQuICBVc2VycyB3aXRoIHVkZXYgd2lsbCBuZXZlciBoYXZlIHRvCisgIHRoaW5rIGFib3V0IG1pbm9yIG51bWJlcnMuICBVc2luZyBhb2VfZHluZGV2cz0wIGFsbG93cyBkZXZpY2Ugbm9kZXMKKyAgdG8gYmUgcHJlLWNyZWF0ZWQgdXNpbmcgYSBzdGF0aWMgbWlub3ItbnVtYmVyIHNjaGVtZSB3aXRoIHRoZQorICBhb2UtbWtzaGVsZiBzY3JpcHQgaW4gdGhlIGFvZXRvb2xzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hb2UvYXV0b2xvYWQuc2ggYi9Eb2N1bWVudGF0aW9uL2FvZS9hdXRvbG9hZC5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTVkZmY0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hb2UvYXV0b2xvYWQuc2gKQEAgLTAsMCArMSwxNyBAQAorIyEvYmluL3NoCisjIHNldCBhb2UgdG8gYXV0b2xvYWQgYnkgaW5zdGFsbGluZyB0aGUKKyMgYWxpYXNlcyBpbiAvZXRjL21vZHByb2JlLmQvCisKK2Y9L2V0Yy9tb2Rwcm9iZS5kL2FvZS5jb25mCisKK2lmIHRlc3QgISAtciAkZiB8fCB0ZXN0ICEgLXcgJGY7IHRoZW4KKwllY2hvICJjYW5ub3QgY29uZmlndXJlICRmIGZvciBtb2R1bGUgYXV0b2xvYWRpbmciIDE+JjIKKwlleGl0IDEKK2ZpCisKK2dyZXAgbWFqb3ItMTUyICRmID4vZGV2L251bGwKK2lmIFsgJD8gPSAxIF07IHRoZW4KKwllY2hvIGFsaWFzIGJsb2NrLW1ham9yLTE1MiBhb2UgPj4gJGYKKwllY2hvIGFsaWFzIGNoYXItbWFqb3ItMTUyIGFvZSA+PiAkZgorZmkKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hb2Uvc3RhdHVzLnNoIGIvRG9jdW1lbnRhdGlvbi9hb2Uvc3RhdHVzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlZWM3YmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FvZS9zdGF0dXMuc2gKQEAgLTAsMCArMSwzMCBAQAorIyEgL2Jpbi9zaAorIyBjb2xsYXRlIGFuZCBwcmVzZW50IHN5c2ZzIGluZm9ybWF0aW9uIGFib3V0IEFvRSBzdG9yYWdlCisjCisjIEEgbW9yZSBjb21wbGV0ZSB2ZXJzaW9uIG9mIHRoaXMgc2NyaXB0IGlzIGFvZS1zdGF0LCBpbiB0aGUKKyMgYW9ldG9vbHMuCisKK3NldCAtZQorZm9ybWF0PSIlOHNcdCU4c1x0JThzXG4iCittZT1gYmFzZW5hbWUgJDBgCitzeXNkPSR7c3lzZnNfZGlyOi0vc3lzfQorCisjIHByaW50ZiAiJGZvcm1hdCIgZGV2aWNlIG1hYyBuZXRpZiBzdGF0ZQorCisjIFN1c2UgOS4xIFBybyBkb2Vzbid0IHB1dCAvc3lzIGluIC9ldGMvbXRhYgorI3Rlc3QgLXogImBtb3VudCB8IGdyZXAgc3lzZnNgIiAmJiB7Cit0ZXN0ICEgLWQgIiRzeXNkL2Jsb2NrIiAmJiB7CisJZWNobyAiJG1lIEVycm9yOiBzeXNmcyBpcyBub3QgbW91bnRlZCIgMT4mMgorCWV4aXQgMQorfQorCitmb3IgZCBpbiBgbHMgLWQgJHN5c2QvYmxvY2svZXRoZXJkKiAyPi9kZXYvbnVsbCB8IGdyZXAgLXYgcGAgZW5kOyBkbworCSMgbWF5YmUgbHMgY29tZXMgdXAgZW1wdHksIHNvIHdlIHVzZSAiZW5kIgorCXRlc3QgJGQgPSBlbmQgJiYgY29udGludWUKKworCWRldj1gZWNobyAiJGQiIHwgc2VkICdzLy4qIS8vJ2AKKwlwcmludGYgIiRmb3JtYXQiIFwKKwkJIiRkZXYiIFwKKwkJImBjYXQgXCIkZC9uZXRpZlwiYCIgXAorCQkiYGNhdCBcIiRkL3N0YXRlXCJgIgorZG9uZSB8IHNvcnQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYW9lL3RvZG8udHh0IGIvRG9jdW1lbnRhdGlvbi9hb2UvdG9kby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA5ZGZhZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYW9lL3RvZG8udHh0CkBAIC0wLDAgKzEsMTQgQEAKK1RoZXJlIGlzIGEgcG90ZW50aWFsIGZvciBkZWFkbG9jayB3aGVuIGFsbG9jYXRpbmcgYSBzdHJ1Y3Qgc2tfYnVmZiBmb3IKK2RhdGEgdGhhdCBuZWVkcyB0byBiZSB3cml0dGVuIG91dCB0byBhb2Ugc3RvcmFnZS4gIElmIHRoZSBkYXRhIGlzCitiZWluZyB3cml0dGVuIGZyb20gYSBkaXJ0eSBwYWdlIGluIG9yZGVyIHRvIGZyZWUgdGhhdCBwYWdlLCBhbmQgaWYKK3RoZXJlIGFyZSBubyBvdGhlciBwYWdlcyBhdmFpbGFibGUsIHRoZW4gZGVhZGxvY2sgbWF5IG9jY3VyIHdoZW4gYQorZnJlZSBwYWdlIGlzIG5lZWRlZCBmb3IgdGhlIHNrX2J1ZmYgYWxsb2NhdGlvbi4gIFRoaXMgc2l0dWF0aW9uIGhhcworbm90IGJlZW4gb2JzZXJ2ZWQsIGJ1dCBpdCB3b3VsZCBiZSBuaWNlIHRvIGVsaW1pbmF0ZSBhbnkgcG90ZW50aWFsIGZvcgorZGVhZGxvY2sgdW5kZXIgbWVtb3J5IHByZXNzdXJlLgorCitCZWNhdXNlIEFUQSBvdmVyIEV0aGVybmV0IGlzIG5vdCBmcmFnbWVudGVkIGJ5IHRoZSBrZXJuZWwncyBJUCBjb2RlLAordGhlIGRlc3RydWN0b3IgbWVtYmVyIG9mIHRoZSBzdHJ1Y3Qgc2tfYnVmZiBpcyBhdmFpbGFibGUgdG8gdGhlIGFvZQorZHJpdmVyLiAgQnkgdXNpbmcgYSBtZW1wb29sIGZvciBhbGxvY2F0aW5nIGFsbCBidXQgdGhlIGZpcnN0IGZldworc2tfYnVmZnMsIGFuZCBieSByZWdpc3RlcmluZyBhIGRlc3RydWN0b3IsIHdlIHNob3VsZCBiZSBhYmxlIHRvCitlZmZpY2llbnRseSBhbGxvY2F0ZSBza19idWZmcyB3aXRob3V0IGludHJvZHVjaW5nIGFueSBwb3RlbnRpYWwgZm9yCitkZWFkbG9jay4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYW9lL3VkZXYtaW5zdGFsbC5zaCBiL0RvY3VtZW50YXRpb24vYW9lL3VkZXYtaW5zdGFsbC5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWU4NmY1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hb2UvdWRldi1pbnN0YWxsLnNoCkBAIC0wLDAgKzEsMzMgQEAKKyMgaW5zdGFsbCB0aGUgYW9lLXNwZWNpZmljIHVkZXYgcnVsZXMgZnJvbSB1ZGV2LnR4dCBpbnRvIAorIyB0aGUgc3lzdGVtJ3MgdWRldiBjb25maWd1cmF0aW9uCisjIAorCittZT0iYGJhc2VuYW1lICQwYCIKKworIyBmaW5kIHVkZXYuY29uZiwgb2Z0ZW4gL2V0Yy91ZGV2L3VkZXYuY29uZgorIyAob3IgZW52aXJvbm1lbnQgY2FuIHNwZWNpZnkgd2hlcmUgdG8gZmluZCB1ZGV2LmNvbmYpCisjCitpZiB0ZXN0IC16ICIkY29uZiI7IHRoZW4KKwlpZiB0ZXN0IC1yIC9ldGMvdWRldi91ZGV2LmNvbmY7IHRoZW4KKwkJY29uZj0vZXRjL3VkZXYvdWRldi5jb25mCisJZWxzZQorCQljb25mPSJgZmluZCAvZXRjIC10eXBlIGYgLW5hbWUgdWRldi5jb25mIDI+IC9kZXYvbnVsbGAiCisJCWlmIHRlc3QgLXogIiRjb25mIiB8fCB0ZXN0ICEgLXIgIiRjb25mIjsgdGhlbgorCQkJZWNobyAiJG1lIEVycm9yOiBubyB1ZGV2LmNvbmYgZm91bmQiIDE+JjIKKwkJCWV4aXQgMQorCQlmaQorCWZpCitmaQorCisjIGZpbmQgdGhlIGRpcmVjdG9yeSB3aGVyZSB1ZGV2IHJ1bGVzIGFyZSBzdG9yZWQsIG9mdGVuCisjIC9ldGMvdWRldi9ydWxlcy5kCisjCitydWxlc19kPSJgc2VkIC1uICcvXnVkZXZfcnVsZXM9L3sgcyF1ZGV2X3J1bGVzPSEhOyBzIVwiISFnOyBwOyB9JyAkY29uZmAiCitpZiB0ZXN0IC16ICIkcnVsZXNfZCIgOyB0aGVuCisJcnVsZXNfZD0vZXRjL3VkZXYvcnVsZXMuZAorZmkKK2lmIHRlc3QgISAtZCAiJHJ1bGVzX2QiOyB0aGVuCisJZWNobyAiJG1lIEVycm9yOiBjYW5ub3QgZmluZCB1ZGV2IHJ1bGVzIGRpcmVjdG9yeSIgMT4mMgorCWV4aXQgMQorZmkKK3NoIC14YyAiY3AgYGRpcm5hbWUgJDBgL3VkZXYudHh0ICRydWxlc19kLzYwLWFvZS5ydWxlcyIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYW9lL3VkZXYudHh0IGIvRG9jdW1lbnRhdGlvbi9hb2UvdWRldi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYwNmRhZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYW9lL3VkZXYudHh0CkBAIC0wLDAgKzEsMjYgQEAKKyMgVGhlc2UgcnVsZXMgdGVsbCB1ZGV2IHdoYXQgZGV2aWNlIG5vZGVzIHRvIGNyZWF0ZSBmb3IgYW9lIHN1cHBvcnQuCisjIFRoZXkgbWF5IGJlIGluc3RhbGxlZCBhbG9uZyB0aGUgZm9sbG93aW5nIGxpbmVzLiAgQ2hlY2sgdGhlIHNlY3Rpb24KKyMgOCB1ZGV2IG1hbnBhZ2UgdG8gc2VlIHdoZXRoZXIgeW91ciB1ZGV2IHN1cHBvcnRzIFNVQlNZU1RFTSwgYW5kCisjIHdoZXRoZXIgaXQgdXNlcyBvbmUgb3IgdHdvIGVxdWFsIHNpZ25zIGZvciBTVUJTWVNURU0gYW5kIEtFUk5FTC4KKyMgCisjICAgZWNhc2hpbkBtYWtraSB+JCBzdQorIyAgIFBhc3N3b3JkOgorIyAgIGJhc2gjIGZpbmQgL2V0YyAtdHlwZSBmIC1uYW1lIHVkZXYuY29uZgorIyAgIC9ldGMvdWRldi91ZGV2LmNvbmYKKyMgICBiYXNoIyBncmVwIHVkZXZfcnVsZXM9IC9ldGMvdWRldi91ZGV2LmNvbmYKKyMgICB1ZGV2X3J1bGVzPSIvZXRjL3VkZXYvcnVsZXMuZC8iCisjICAgYmFzaCMgbHMgL2V0Yy91ZGV2L3J1bGVzLmQvCisjICAgMTAtd2Fjb20ucnVsZXMgIDUwLXVkZXYucnVsZXMKKyMgICBiYXNoIyBjcCAvcGF0aC90by9saW51eC0yLjYueHgvRG9jdW1lbnRhdGlvbi9hb2UvdWRldi50eHQgXAorIyAgICAgICAgICAgL2V0Yy91ZGV2L3J1bGVzLmQvNjAtYW9lLnJ1bGVzCisjICAKKworIyBhb2UgY2hhciBkZXZpY2VzCitTVUJTWVNURU09PSJhb2UiLCBLRVJORUw9PSJkaXNjb3ZlciIsCU5BTUU9ImV0aGVyZC8layIsIEdST1VQPSJkaXNrIiwgTU9ERT0iMDIyMCIKK1NVQlNZU1RFTT09ImFvZSIsIEtFUk5FTD09ImVyciIsCU5BTUU9ImV0aGVyZC8layIsIEdST1VQPSJkaXNrIiwgTU9ERT0iMDQ0MCIKK1NVQlNZU1RFTT09ImFvZSIsIEtFUk5FTD09ImludGVyZmFjZXMiLAlOQU1FPSJldGhlcmQvJWsiLCBHUk9VUD0iZGlzayIsIE1PREU9IjAyMjAiCitTVUJTWVNURU09PSJhb2UiLCBLRVJORUw9PSJyZXZhbGlkYXRlIiwJTkFNRT0iZXRoZXJkLyVrIiwgR1JPVVA9ImRpc2siLCBNT0RFPSIwMjIwIgorU1VCU1lTVEVNPT0iYW9lIiwgS0VSTkVMPT0iZmx1c2giLAlOQU1FPSJldGhlcmQvJWsiLCBHUk9VUD0iZGlzayIsIE1PREU9IjAyMjAiCisKKyMgYW9lIGJsb2NrIGRldmljZXMgICAgIAorS0VSTkVMPT0iZXRoZXJkKiIsICAgICAgIEdST1VQPSJkaXNrIgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcHBseWluZy1wYXRjaGVzLnR4dCBiL0RvY3VtZW50YXRpb24vYXBwbHlpbmctcGF0Y2hlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdkZjU1YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXBwbHlpbmctcGF0Y2hlcy50eHQKQEAgLTAsMCArMSw0NTQgQEAKKworCUFwcGx5aW5nIFBhdGNoZXMgVG8gVGhlIExpbnV4IEtlcm5lbAorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJT3JpZ2luYWwgYnk6IEplc3BlciBKdWhsLCBBdWd1c3QgMjAwNQorCUxhc3QgdXBkYXRlOiAyMDA2LTAxLTA1CisKKworQSBmcmVxdWVudGx5IGFza2VkIHF1ZXN0aW9uIG9uIHRoZSBMaW51eCBLZXJuZWwgTWFpbGluZyBMaXN0IGlzIGhvdyB0byBhcHBseQorYSBwYXRjaCB0byB0aGUga2VybmVsIG9yLCBtb3JlIHNwZWNpZmljYWxseSwgd2hhdCBiYXNlIGtlcm5lbCBhIHBhdGNoIGZvcgorb25lIG9mIHRoZSBtYW55IHRyZWVzL2JyYW5jaGVzIHNob3VsZCBiZSBhcHBsaWVkIHRvLiBIb3BlZnVsbHkgdGhpcyBkb2N1bWVudAord2lsbCBleHBsYWluIHRoaXMgdG8geW91LgorCitJbiBhZGRpdGlvbiB0byBleHBsYWluaW5nIGhvdyB0byBhcHBseSBhbmQgcmV2ZXJ0IHBhdGNoZXMsIGEgYnJpZWYKK2Rlc2NyaXB0aW9uIG9mIHRoZSBkaWZmZXJlbnQga2VybmVsIHRyZWVzIChhbmQgZXhhbXBsZXMgb2YgaG93IHRvIGFwcGx5Cit0aGVpciBzcGVjaWZpYyBwYXRjaGVzKSBpcyBhbHNvIHByb3ZpZGVkLgorCisKK1doYXQgaXMgYSBwYXRjaD8KKy0tLQorIEEgcGF0Y2ggaXMgYSBzbWFsbCB0ZXh0IGRvY3VtZW50IGNvbnRhaW5pbmcgYSBkZWx0YSBvZiBjaGFuZ2VzIGJldHdlZW4gdHdvCitkaWZmZXJlbnQgdmVyc2lvbnMgb2YgYSBzb3VyY2UgdHJlZS4gUGF0Y2hlcyBhcmUgY3JlYXRlZCB3aXRoIHRoZSBgZGlmZicKK3Byb2dyYW0uCitUbyBjb3JyZWN0bHkgYXBwbHkgYSBwYXRjaCB5b3UgbmVlZCB0byBrbm93IHdoYXQgYmFzZSBpdCB3YXMgZ2VuZXJhdGVkIGZyb20KK2FuZCB3aGF0IG5ldyB2ZXJzaW9uIHRoZSBwYXRjaCB3aWxsIGNoYW5nZSB0aGUgc291cmNlIHRyZWUgaW50by4gVGhlc2UKK3Nob3VsZCBib3RoIGJlIHByZXNlbnQgaW4gdGhlIHBhdGNoIGZpbGUgbWV0YWRhdGEgb3IgYmUgcG9zc2libGUgdG8gZGVkdWNlCitmcm9tIHRoZSBmaWxlbmFtZS4KKworCitIb3cgZG8gSSBhcHBseSBvciByZXZlcnQgYSBwYXRjaD8KKy0tLQorIFlvdSBhcHBseSBhIHBhdGNoIHdpdGggdGhlIGBwYXRjaCcgcHJvZ3JhbS4gVGhlIHBhdGNoIHByb2dyYW0gcmVhZHMgYSBkaWZmCisob3IgcGF0Y2gpIGZpbGUgYW5kIG1ha2VzIHRoZSBjaGFuZ2VzIHRvIHRoZSBzb3VyY2UgdHJlZSBkZXNjcmliZWQgaW4gaXQuCisKK1BhdGNoZXMgZm9yIHRoZSBMaW51eCBrZXJuZWwgYXJlIGdlbmVyYXRlZCByZWxhdGl2ZSB0byB0aGUgcGFyZW50IGRpcmVjdG9yeQoraG9sZGluZyB0aGUga2VybmVsIHNvdXJjZSBkaXIuCisKK1RoaXMgbWVhbnMgdGhhdCBwYXRocyB0byBmaWxlcyBpbnNpZGUgdGhlIHBhdGNoIGZpbGUgY29udGFpbiB0aGUgbmFtZSBvZiB0aGUKK2tlcm5lbCBzb3VyY2UgZGlyZWN0b3JpZXMgaXQgd2FzIGdlbmVyYXRlZCBhZ2FpbnN0IChvciBzb21lIG90aGVyIGRpcmVjdG9yeQorbmFtZXMgbGlrZSAiYS8iIGFuZCAiYi8iKS4KK1NpbmNlIHRoaXMgaXMgdW5saWtlbHkgdG8gbWF0Y2ggdGhlIG5hbWUgb2YgdGhlIGtlcm5lbCBzb3VyY2UgZGlyIG9uIHlvdXIKK2xvY2FsIG1hY2hpbmUgKGJ1dCBpcyBvZnRlbiB1c2VmdWwgaW5mbyB0byBzZWUgd2hhdCB2ZXJzaW9uIGFuIG90aGVyd2lzZQordW5sYWJlbGVkIHBhdGNoIHdhcyBnZW5lcmF0ZWQgYWdhaW5zdCkgeW91IHNob3VsZCBjaGFuZ2UgaW50byB5b3VyIGtlcm5lbAorc291cmNlIGRpcmVjdG9yeSBhbmQgdGhlbiBzdHJpcCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBmcm9tIGZpbGVuYW1lcworaW4gdGhlIHBhdGNoIGZpbGUgd2hlbiBhcHBseWluZyBpdCAodGhlIC1wMSBhcmd1bWVudCB0byBgcGF0Y2gnIGRvZXMgdGhpcykuCisKK1RvIHJldmVydCBhIHByZXZpb3VzbHkgYXBwbGllZCBwYXRjaCwgdXNlIHRoZSAtUiBhcmd1bWVudCB0byBwYXRjaC4KK1NvLCBpZiB5b3UgYXBwbGllZCBhIHBhdGNoIGxpa2UgdGhpczoKKwlwYXRjaCAtcDEgPCAuLi9wYXRjaC14LnkuegorCitZb3UgY2FuIHJldmVydCAodW5kbykgaXQgbGlrZSB0aGlzOgorCXBhdGNoIC1SIC1wMSA8IC4uL3BhdGNoLXgueS56CisKKworSG93IGRvIEkgZmVlZCBhIHBhdGNoL2RpZmYgZmlsZSB0byBgcGF0Y2gnPworLS0tCisgVGhpcyAoYXMgdXN1YWwgd2l0aCBMaW51eCBhbmQgb3RoZXIgVU5JWCBsaWtlIG9wZXJhdGluZyBzeXN0ZW1zKSBjYW4gYmUKK2RvbmUgaW4gc2V2ZXJhbCBkaWZmZXJlbnQgd2F5cy4KK0luIGFsbCB0aGUgZXhhbXBsZXMgYmVsb3cgSSBmZWVkIHRoZSBmaWxlIChpbiB1bmNvbXByZXNzZWQgZm9ybSkgdG8gcGF0Y2gKK3ZpYSBzdGRpbiB1c2luZyB0aGUgZm9sbG93aW5nIHN5bnRheDoKKwlwYXRjaCAtcDEgPCBwYXRoL3RvL3BhdGNoLXgueS56CisKK0lmIHlvdSBqdXN0IHdhbnQgdG8gYmUgYWJsZSB0byBmb2xsb3cgdGhlIGV4YW1wbGVzIGJlbG93IGFuZCBkb24ndCB3YW50IHRvCitrbm93IG9mIG1vcmUgdGhhbiBvbmUgd2F5IHRvIHVzZSBwYXRjaCwgdGhlbiB5b3UgY2FuIHN0b3AgcmVhZGluZyB0aGlzCitzZWN0aW9uIGhlcmUuCisKK1BhdGNoIGNhbiBhbHNvIGdldCB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0byB1c2UgdmlhIHRoZSAtaSBhcmd1bWVudCwgbGlrZQordGhpczoKKwlwYXRjaCAtcDEgLWkgcGF0aC90by9wYXRjaC14LnkuegorCitJZiB5b3VyIHBhdGNoIGZpbGUgaXMgY29tcHJlc3NlZCB3aXRoIGd6aXAgb3IgYnppcDIgYW5kIHlvdSBkb24ndCB3YW50IHRvCit1bmNvbXByZXNzIGl0IGJlZm9yZSBhcHBseWluZyBpdCwgdGhlbiB5b3UgY2FuIGZlZWQgaXQgdG8gcGF0Y2ggbGlrZSB0aGlzCitpbnN0ZWFkOgorCXpjYXQgcGF0aC90by9wYXRjaC14Lnkuei5neiB8IHBhdGNoIC1wMQorCWJ6Y2F0IHBhdGgvdG8vcGF0Y2gteC55LnouYnoyIHwgcGF0Y2ggLXAxCisKK0lmIHlvdSB3aXNoIHRvIHVuY29tcHJlc3MgdGhlIHBhdGNoIGZpbGUgYnkgaGFuZCBmaXJzdCBiZWZvcmUgYXBwbHlpbmcgaXQKKyh3aGF0IEkgYXNzdW1lIHlvdSd2ZSBkb25lIGluIHRoZSBleGFtcGxlcyBiZWxvdyksIHRoZW4geW91IHNpbXBseSBydW4KK2d1bnppcCBvciBidW56aXAyIG9uIHRoZSBmaWxlIC0tIGxpa2UgdGhpczoKKwlndW56aXAgcGF0Y2gteC55LnouZ3oKKwlidW56aXAyIHBhdGNoLXgueS56LmJ6MgorCitXaGljaCB3aWxsIGxlYXZlIHlvdSB3aXRoIGEgcGxhaW4gdGV4dCBwYXRjaC14LnkueiBmaWxlIHRoYXQgeW91IGNhbiBmZWVkIHRvCitwYXRjaCB2aWEgc3RkaW4gb3IgdGhlIC1pIGFyZ3VtZW50LCBhcyB5b3UgcHJlZmVyLgorCitBIGZldyBvdGhlciBuaWNlIGFyZ3VtZW50cyBmb3IgcGF0Y2ggYXJlIC1zIHdoaWNoIGNhdXNlcyBwYXRjaCB0byBiZSBzaWxlbnQKK2V4Y2VwdCBmb3IgZXJyb3JzIHdoaWNoIGlzIG5pY2UgdG8gcHJldmVudCBlcnJvcnMgZnJvbSBzY3JvbGxpbmcgb3V0IG9mIHRoZQorc2NyZWVuIHRvbyBmYXN0LCBhbmQgLS1kcnktcnVuIHdoaWNoIGNhdXNlcyBwYXRjaCB0byBqdXN0IHByaW50IGEgbGlzdGluZyBvZgord2hhdCB3b3VsZCBoYXBwZW4sIGJ1dCBkb2Vzbid0IGFjdHVhbGx5IG1ha2UgYW55IGNoYW5nZXMuIEZpbmFsbHkgLS12ZXJib3NlCit0ZWxscyBwYXRjaCB0byBwcmludCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB3b3JrIGJlaW5nIGRvbmUuCisKKworQ29tbW9uIGVycm9ycyB3aGVuIHBhdGNoaW5nCistLS0KKyBXaGVuIHBhdGNoIGFwcGxpZXMgYSBwYXRjaCBmaWxlIGl0IGF0dGVtcHRzIHRvIHZlcmlmeSB0aGUgc2FuaXR5IG9mIHRoZQorZmlsZSBpbiBkaWZmZXJlbnQgd2F5cy4KK0NoZWNraW5nIHRoYXQgdGhlIGZpbGUgbG9va3MgbGlrZSBhIHZhbGlkIHBhdGNoIGZpbGUgYW5kIGNoZWNraW5nIHRoZSBjb2RlCithcm91bmQgdGhlIGJpdHMgYmVpbmcgbW9kaWZpZWQgbWF0Y2hlcyB0aGUgY29udGV4dCBwcm92aWRlZCBpbiB0aGUgcGF0Y2ggYXJlCitqdXN0IHR3byBvZiB0aGUgYmFzaWMgc2FuaXR5IGNoZWNrcyBwYXRjaCBkb2VzLgorCitJZiBwYXRjaCBlbmNvdW50ZXJzIHNvbWV0aGluZyB0aGF0IGRvZXNuJ3QgbG9vayBxdWl0ZSByaWdodCBpdCBoYXMgdHdvCitvcHRpb25zLiBJdCBjYW4gZWl0aGVyIHJlZnVzZSB0byBhcHBseSB0aGUgY2hhbmdlcyBhbmQgYWJvcnQgb3IgaXQgY2FuIHRyeQordG8gZmluZCBhIHdheSB0byBtYWtlIHRoZSBwYXRjaCBhcHBseSB3aXRoIGEgZmV3IG1pbm9yIGNoYW5nZXMuCisKK09uZSBleGFtcGxlIG9mIHNvbWV0aGluZyB0aGF0J3Mgbm90ICdxdWl0ZSByaWdodCcgdGhhdCBwYXRjaCB3aWxsIGF0dGVtcHQgdG8KK2ZpeCB1cCBpcyBpZiBhbGwgdGhlIGNvbnRleHQgbWF0Y2hlcywgdGhlIGxpbmVzIGJlaW5nIGNoYW5nZWQgbWF0Y2gsIGJ1dCB0aGUKK2xpbmUgbnVtYmVycyBhcmUgZGlmZmVyZW50LiBUaGlzIGNhbiBoYXBwZW4sIGZvciBleGFtcGxlLCBpZiB0aGUgcGF0Y2ggbWFrZXMKK2EgY2hhbmdlIGluIHRoZSBtaWRkbGUgb2YgdGhlIGZpbGUgYnV0IGZvciBzb21lIHJlYXNvbnMgYSBmZXcgbGluZXMgaGF2ZQorYmVlbiBhZGRlZCBvciByZW1vdmVkIG5lYXIgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4gSW4gdGhhdCBjYXNlCitldmVyeXRoaW5nIGxvb2tzIGdvb2QgaXQgaGFzIGp1c3QgbW92ZWQgdXAgb3IgZG93biBhIGJpdCwgYW5kIHBhdGNoIHdpbGwKK3VzdWFsbHkgYWRqdXN0IHRoZSBsaW5lIG51bWJlcnMgYW5kIGFwcGx5IHRoZSBwYXRjaC4KKworV2hlbmV2ZXIgcGF0Y2ggYXBwbGllcyBhIHBhdGNoIHRoYXQgaXQgaGFkIHRvIG1vZGlmeSBhIGJpdCB0byBtYWtlIGl0IGZpdAoraXQnbGwgdGVsbCB5b3UgYWJvdXQgaXQgYnkgc2F5aW5nIHRoZSBwYXRjaCBhcHBsaWVkIHdpdGggJ2Z1enonLgorWW91IHNob3VsZCBiZSB3YXJ5IG9mIHN1Y2ggY2hhbmdlcyBzaW5jZSBldmVuIHRob3VnaCBwYXRjaCBwcm9iYWJseSBnb3QgaXQKK3JpZ2h0IGl0IGRvZXNuJ3QgL2Fsd2F5cy8gZ2V0IGl0IHJpZ2h0LCBhbmQgdGhlIHJlc3VsdCB3aWxsIHNvbWV0aW1lcyBiZQord3JvbmcuCisKK1doZW4gcGF0Y2ggZW5jb3VudGVycyBhIGNoYW5nZSB0aGF0IGl0IGNhbid0IGZpeCB1cCB3aXRoIGZ1enogaXQgcmVqZWN0cyBpdAorb3V0cmlnaHQgYW5kIGxlYXZlcyBhIGZpbGUgd2l0aCBhIC5yZWogZXh0ZW5zaW9uIChhIHJlamVjdCBmaWxlKS4gWW91IGNhbgorcmVhZCB0aGlzIGZpbGUgdG8gc2VlIGV4YWN0bHkgd2hhdCBjaGFuZ2UgY291bGRuJ3QgYmUgYXBwbGllZCwgc28geW91IGNhbgorZ28gZml4IGl0IHVwIGJ5IGhhbmQgaWYgeW91IHdpc2guCisKK0lmIHlvdSBkb24ndCBoYXZlIGFueSB0aGlyZC1wYXJ0eSBwYXRjaGVzIGFwcGxpZWQgdG8geW91ciBrZXJuZWwgc291cmNlLCBidXQKK29ubHkgcGF0Y2hlcyBmcm9tIGtlcm5lbC5vcmcgYW5kIHlvdSBhcHBseSB0aGUgcGF0Y2hlcyBpbiB0aGUgY29ycmVjdCBvcmRlciwKK2FuZCBoYXZlIG1hZGUgbm8gbW9kaWZpY2F0aW9ucyB5b3Vyc2VsZiB0byB0aGUgc291cmNlIGZpbGVzLCB0aGVuIHlvdSBzaG91bGQKK25ldmVyIHNlZSBhIGZ1enogb3IgcmVqZWN0IG1lc3NhZ2UgZnJvbSBwYXRjaC4gSWYgeW91IGRvIHNlZSBzdWNoIG1lc3NhZ2VzCithbnl3YXksIHRoZW4gdGhlcmUncyBhIGhpZ2ggcmlzayB0aGF0IGVpdGhlciB5b3VyIGxvY2FsIHNvdXJjZSB0cmVlIG9yIHRoZQorcGF0Y2ggZmlsZSBpcyBjb3JydXB0ZWQgaW4gc29tZSB3YXkuIEluIHRoYXQgY2FzZSB5b3Ugc2hvdWxkIHByb2JhYmx5IHRyeQorcmUtZG93bmxvYWRpbmcgdGhlIHBhdGNoIGFuZCBpZiB0aGluZ3MgYXJlIHN0aWxsIG5vdCBPSyB0aGVuIHlvdSdkIGJlIGFkdmlzZWQKK3RvIHN0YXJ0IHdpdGggYSBmcmVzaCB0cmVlIGRvd25sb2FkZWQgaW4gZnVsbCBmcm9tIGtlcm5lbC5vcmcuCisKK0xldCdzIGxvb2sgYSBiaXQgbW9yZSBhdCBzb21lIG9mIHRoZSBtZXNzYWdlcyBwYXRjaCBjYW4gcHJvZHVjZS4KKworSWYgcGF0Y2ggc3RvcHMgYW5kIHByZXNlbnRzIGEgIkZpbGUgdG8gcGF0Y2g6IiBwcm9tcHQsIHRoZW4gcGF0Y2ggY291bGQgbm90CitmaW5kIGEgZmlsZSB0byBiZSBwYXRjaGVkLiBNb3N0IGxpa2VseSB5b3UgZm9yZ290IHRvIHNwZWNpZnkgLXAxIG9yIHlvdSBhcmUKK2luIHRoZSB3cm9uZyBkaXJlY3RvcnkuIExlc3Mgb2Z0ZW4sIHlvdSdsbCBmaW5kIHBhdGNoZXMgdGhhdCBuZWVkIHRvIGJlCithcHBsaWVkIHdpdGggLXAwIGluc3RlYWQgb2YgLXAxIChyZWFkaW5nIHRoZSBwYXRjaCBmaWxlIHNob3VsZCByZXZlYWwgaWYKK3RoaXMgaXMgdGhlIGNhc2UgLS0gaWYgc28sIHRoZW4gdGhpcyBpcyBhbiBlcnJvciBieSB0aGUgcGVyc29uIHdobyBjcmVhdGVkCit0aGUgcGF0Y2ggYnV0IGlzIG5vdCBmYXRhbCkuCisKK0lmIHlvdSBnZXQgIkh1bmsgIzIgc3VjY2VlZGVkIGF0IDE4ODcgd2l0aCBmdXp6IDIgKG9mZnNldCA3IGxpbmVzKS4iIG9yIGEKK21lc3NhZ2Ugc2ltaWxhciB0byB0aGF0LCB0aGVuIGl0IG1lYW5zIHRoYXQgcGF0Y2ggaGFkIHRvIGFkanVzdCB0aGUgbG9jYXRpb24KK29mIHRoZSBjaGFuZ2UgKGluIHRoaXMgZXhhbXBsZSBpdCBuZWVkZWQgdG8gbW92ZSA3IGxpbmVzIGZyb20gd2hlcmUgaXQKK2V4cGVjdGVkIHRvIG1ha2UgdGhlIGNoYW5nZSB0byBtYWtlIGl0IGZpdCkuCitUaGUgcmVzdWx0aW5nIGZpbGUgbWF5IG9yIG1heSBub3QgYmUgT0ssIGRlcGVuZGluZyBvbiB0aGUgcmVhc29uIHRoZSBmaWxlCit3YXMgZGlmZmVyZW50IHRoYW4gZXhwZWN0ZWQuCitUaGlzIG9mdGVuIGhhcHBlbnMgaWYgeW91IHRyeSB0byBhcHBseSBhIHBhdGNoIHRoYXQgd2FzIGdlbmVyYXRlZCBhZ2FpbnN0IGEKK2RpZmZlcmVudCBrZXJuZWwgdmVyc2lvbiB0aGFuIHRoZSBvbmUgeW91IGFyZSB0cnlpbmcgdG8gcGF0Y2guCisKK0lmIHlvdSBnZXQgYSBtZXNzYWdlIGxpa2UgIkh1bmsgIzMgRkFJTEVEIGF0IDIzODcuIiwgdGhlbiBpdCBtZWFucyB0aGF0IHRoZQorcGF0Y2ggY291bGQgbm90IGJlIGFwcGxpZWQgY29ycmVjdGx5IGFuZCB0aGUgcGF0Y2ggcHJvZ3JhbSB3YXMgdW5hYmxlIHRvCitmdXp6IGl0cyB3YXkgdGhyb3VnaC4gVGhpcyB3aWxsIGdlbmVyYXRlIGEgLnJlaiBmaWxlIHdpdGggdGhlIGNoYW5nZSB0aGF0CitjYXVzZWQgdGhlIHBhdGNoIHRvIGZhaWwgYW5kIGFsc28gYSAub3JpZyBmaWxlIHNob3dpbmcgeW91IHRoZSBvcmlnaW5hbAorY29udGVudCB0aGF0IGNvdWxkbid0IGJlIGNoYW5nZWQuCisKK0lmIHlvdSBnZXQgIlJldmVyc2VkIChvciBwcmV2aW91c2x5IGFwcGxpZWQpIHBhdGNoIGRldGVjdGVkISAgQXNzdW1lIC1SPyBbbl0iCit0aGVuIHBhdGNoIGRldGVjdGVkIHRoYXQgdGhlIGNoYW5nZSBjb250YWluZWQgaW4gdGhlIHBhdGNoIHNlZW1zIHRvIGhhdmUKK2FscmVhZHkgYmVlbiBtYWRlLgorSWYgeW91IGFjdHVhbGx5IGRpZCBhcHBseSB0aGlzIHBhdGNoIHByZXZpb3VzbHkgYW5kIHlvdSBqdXN0IHJlLWFwcGxpZWQgaXQKK2luIGVycm9yLCB0aGVuIGp1c3Qgc2F5IFtuXW8gYW5kIGFib3J0IHRoaXMgcGF0Y2guIElmIHlvdSBhcHBsaWVkIHRoaXMgcGF0Y2gKK3ByZXZpb3VzbHkgYW5kIGFjdHVhbGx5IGludGVuZGVkIHRvIHJldmVydCBpdCwgYnV0IGZvcmdvdCB0byBzcGVjaWZ5IC1SLAordGhlbiB5b3UgY2FuIHNheSBbeV1lcyBoZXJlIHRvIG1ha2UgcGF0Y2ggcmV2ZXJ0IGl0IGZvciB5b3UuCitUaGlzIGNhbiBhbHNvIGhhcHBlbiBpZiB0aGUgY3JlYXRvciBvZiB0aGUgcGF0Y2ggcmV2ZXJzZWQgdGhlIHNvdXJjZSBhbmQKK2Rlc3RpbmF0aW9uIGRpcmVjdG9yaWVzIHdoZW4gY3JlYXRpbmcgdGhlIHBhdGNoLCBhbmQgaW4gdGhhdCBjYXNlIHJldmVydGluZwordGhlIHBhdGNoIHdpbGwgaW4gZmFjdCBhcHBseSBpdC4KKworQSBtZXNzYWdlIHNpbWlsYXIgdG8gInBhdGNoOiAqKioqIHVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUgaW4gcGF0Y2giIG9yICJwYXRjaAordW5leHBlY3RlZGx5IGVuZHMgaW4gbWlkZGxlIG9mIGxpbmUiIG1lYW5zIHRoYXQgcGF0Y2ggY291bGQgbWFrZSBubyBzZW5zZSBvZgordGhlIGZpbGUgeW91IGZlZCB0byBpdC4gRWl0aGVyIHlvdXIgZG93bmxvYWQgaXMgYnJva2VuLCB5b3UgdHJpZWQgdG8gZmVlZAorcGF0Y2ggYSBjb21wcmVzc2VkIHBhdGNoIGZpbGUgd2l0aG91dCB1bmNvbXByZXNzaW5nIGl0IGZpcnN0LCBvciB0aGUgcGF0Y2gKK2ZpbGUgdGhhdCB5b3UgYXJlIHVzaW5nIGhhcyBiZWVuIG1hbmdsZWQgYnkgYSBtYWlsIGNsaWVudCBvciBtYWlsIHRyYW5zZmVyCithZ2VudCBhbG9uZyB0aGUgd2F5IHNvbWV3aGVyZSwgZS5nLiwgYnkgc3BsaXR0aW5nIGEgbG9uZyBsaW5lIGludG8gdHdvIGxpbmVzLgorT2Z0ZW4gdGhlc2Ugd2FybmluZ3MgY2FuIGVhc2lseSBiZSBmaXhlZCBieSBqb2luaW5nIChjb25jYXRlbmF0aW5nKSB0aGUKK3R3byBsaW5lcyB0aGF0IGhhZCBiZWVuIHNwbGl0LgorCitBcyBJIGFscmVhZHkgbWVudGlvbmVkIGFib3ZlLCB0aGVzZSBlcnJvcnMgc2hvdWxkIG5ldmVyIGhhcHBlbiBpZiB5b3UgYXBwbHkKK2EgcGF0Y2ggZnJvbSBrZXJuZWwub3JnIHRvIHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgYW4gdW5tb2RpZmllZCBzb3VyY2UgdHJlZS4KK1NvIGlmIHlvdSBnZXQgdGhlc2UgZXJyb3JzIHdpdGgga2VybmVsLm9yZyBwYXRjaGVzIHRoZW4geW91IHNob3VsZCBwcm9iYWJseQorYXNzdW1lIHRoYXQgZWl0aGVyIHlvdXIgcGF0Y2ggZmlsZSBvciB5b3VyIHRyZWUgaXMgYnJva2VuIGFuZCBJJ2QgYWR2aXNlIHlvdQordG8gc3RhcnQgb3ZlciB3aXRoIGEgZnJlc2ggZG93bmxvYWQgb2YgYSBmdWxsIGtlcm5lbCB0cmVlIGFuZCB0aGUgcGF0Y2ggeW91Cit3aXNoIHRvIGFwcGx5LgorCisKK0FyZSB0aGVyZSBhbnkgYWx0ZXJuYXRpdmVzIHRvIGBwYXRjaCc/CistLS0KKyBZZXMgdGhlcmUgYXJlIGFsdGVybmF0aXZlcy4KKworIFlvdSBjYW4gdXNlIHRoZSBgaW50ZXJkaWZmJyBwcm9ncmFtIChodHRwOi8vY3liZXJlbGsubmV0L3RpbS9wYXRjaHV0aWxzLykgdG8KK2dlbmVyYXRlIGEgcGF0Y2ggcmVwcmVzZW50aW5nIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHR3byBwYXRjaGVzIGFuZCB0aGVuCithcHBseSB0aGUgcmVzdWx0LgorVGhpcyB3aWxsIGxldCB5b3UgbW92ZSBmcm9tIHNvbWV0aGluZyBsaWtlIDIuNi4xMi4yIHRvIDIuNi4xMi4zIGluIGEgc2luZ2xlCitzdGVwLiBUaGUgLXogZmxhZyB0byBpbnRlcmRpZmYgd2lsbCBldmVuIGxldCB5b3UgZmVlZCBpdCBwYXRjaGVzIGluIGd6aXAgb3IKK2J6aXAyIGNvbXByZXNzZWQgZm9ybSBkaXJlY3RseSB3aXRob3V0IHRoZSB1c2Ugb2YgemNhdCBvciBiemNhdCBvciBtYW51YWwKK2RlY29tcHJlc3Npb24uCisKK0hlcmUncyBob3cgeW91J2QgZ28gZnJvbSAyLjYuMTIuMiB0byAyLjYuMTIuMyBpbiBhIHNpbmdsZSBzdGVwOgorCWludGVyZGlmZiAteiAuLi9wYXRjaC0yLjYuMTIuMi5iejIgLi4vcGF0Y2gtMi42LjEyLjMuZ3ogfCBwYXRjaCAtcDEKKworQWx0aG91Z2ggaW50ZXJkaWZmIG1heSBzYXZlIHlvdSBhIHN0ZXAgb3IgdHdvIHlvdSBhcmUgZ2VuZXJhbGx5IGFkdmlzZWQgdG8KK2RvIHRoZSBhZGRpdGlvbmFsIHN0ZXBzIHNpbmNlIGludGVyZGlmZiBjYW4gZ2V0IHRoaW5ncyB3cm9uZyBpbiBzb21lIGNhc2VzLgorCisgQW5vdGhlciBhbHRlcm5hdGl2ZSBpcyBga2V0Y2h1cCcsIHdoaWNoIGlzIGEgcHl0aG9uIHNjcmlwdCBmb3IgYXV0b21hdGljCitkb3dubG9hZGluZyBhbmQgYXBwbHlpbmcgb2YgcGF0Y2hlcyAoaHR0cDovL3d3dy5zZWxlbmljLmNvbS9rZXRjaHVwLykuCisKKyBPdGhlciBuaWNlIHRvb2xzIGFyZSBkaWZmc3RhdCwgd2hpY2ggc2hvd3MgYSBzdW1tYXJ5IG9mIGNoYW5nZXMgbWFkZSBieSBhCitwYXRjaDsgbHNkaWZmLCB3aGljaCBkaXNwbGF5cyBhIHNob3J0IGxpc3Rpbmcgb2YgYWZmZWN0ZWQgZmlsZXMgaW4gYSBwYXRjaAorZmlsZSwgYWxvbmcgd2l0aCAob3B0aW9uYWxseSkgdGhlIGxpbmUgbnVtYmVycyBvZiB0aGUgc3RhcnQgb2YgZWFjaCBwYXRjaDsKK2FuZCBncmVwZGlmZiwgd2hpY2ggZGlzcGxheXMgYSBsaXN0IG9mIHRoZSBmaWxlcyBtb2RpZmllZCBieSBhIHBhdGNoIHdoZXJlCit0aGUgcGF0Y2ggY29udGFpbnMgYSBnaXZlbiByZWd1bGFyIGV4cHJlc3Npb24uCisKKworV2hlcmUgY2FuIEkgZG93bmxvYWQgdGhlIHBhdGNoZXM/CistLS0KKyBUaGUgcGF0Y2hlcyBhcmUgYXZhaWxhYmxlIGF0IGh0dHA6Ly9rZXJuZWwub3JnLworTW9zdCByZWNlbnQgcGF0Y2hlcyBhcmUgbGlua2VkIGZyb20gdGhlIGZyb250IHBhZ2UsIGJ1dCB0aGV5IGFsc28gaGF2ZQorc3BlY2lmaWMgaG9tZXMuCisKK1RoZSAyLjYueC55ICgtc3RhYmxlKSBhbmQgMi42LnggcGF0Y2hlcyBsaXZlIGF0CisgZnRwOi8vZnRwLmtlcm5lbC5vcmcvcHViL2xpbnV4L2tlcm5lbC92Mi42LworCitUaGUgLXJjIHBhdGNoZXMgbGl2ZSBhdAorIGZ0cDovL2Z0cC5rZXJuZWwub3JnL3B1Yi9saW51eC9rZXJuZWwvdjIuNi90ZXN0aW5nLworCitUaGUgLWdpdCBwYXRjaGVzIGxpdmUgYXQKKyBmdHA6Ly9mdHAua2VybmVsLm9yZy9wdWIvbGludXgva2VybmVsL3YyLjYvc25hcHNob3RzLworCitUaGUgLW1tIGtlcm5lbHMgbGl2ZSBhdAorIGZ0cDovL2Z0cC5rZXJuZWwub3JnL3B1Yi9saW51eC9rZXJuZWwvcGVvcGxlL2FrcG0vcGF0Y2hlcy8yLjYvCisKK0luIHBsYWNlIG9mIGZ0cC5rZXJuZWwub3JnIHlvdSBjYW4gdXNlIGZ0cC5jYy5rZXJuZWwub3JnLCB3aGVyZSBjYyBpcyBhCitjb3VudHJ5IGNvZGUuIFRoaXMgd2F5IHlvdSdsbCBiZSBkb3dubG9hZGluZyBmcm9tIGEgbWlycm9yIHNpdGUgdGhhdCdzIG1vc3QKK2xpa2VseSBnZW9ncmFwaGljYWxseSBjbG9zZXIgdG8geW91LCByZXN1bHRpbmcgaW4gZmFzdGVyIGRvd25sb2FkcyBmb3IgeW91LAorbGVzcyBiYW5kd2lkdGggdXNlZCBnbG9iYWxseSBhbmQgbGVzcyBsb2FkIG9uIHRoZSBtYWluIGtlcm5lbC5vcmcgc2VydmVycyAtLQordGhlc2UgYXJlIGdvb2QgdGhpbmdzLCBzbyBkbyB1c2UgbWlycm9ycyB3aGVuIHBvc3NpYmxlLgorCisKK1RoZSAyLjYueCBrZXJuZWxzCistLS0KKyBUaGVzZSBhcmUgdGhlIGJhc2Ugc3RhYmxlIHJlbGVhc2VzIHJlbGVhc2VkIGJ5IExpbnVzLiBUaGUgaGlnaGVzdCBudW1iZXJlZAorcmVsZWFzZSBpcyB0aGUgbW9zdCByZWNlbnQuCisKK0lmIHJlZ3Jlc3Npb25zIG9yIG90aGVyIHNlcmlvdXMgZmxhd3MgYXJlIGZvdW5kLCB0aGVuIGEgLXN0YWJsZSBmaXggcGF0Y2gKK3dpbGwgYmUgcmVsZWFzZWQgKHNlZSBiZWxvdykgb24gdG9wIG9mIHRoaXMgYmFzZS4gT25jZSBhIG5ldyAyLjYueCBiYXNlCitrZXJuZWwgaXMgcmVsZWFzZWQsIGEgcGF0Y2ggaXMgbWFkZSBhdmFpbGFibGUgdGhhdCBpcyBhIGRlbHRhIGJldHdlZW4gdGhlCitwcmV2aW91cyAyLjYueCBrZXJuZWwgYW5kIHRoZSBuZXcgb25lLgorCitUbyBhcHBseSBhIHBhdGNoIG1vdmluZyBmcm9tIDIuNi4xMSB0byAyLjYuMTIsIHlvdSdkIGRvIHRoZSBmb2xsb3dpbmcgKG5vdGUKK3RoYXQgc3VjaCBwYXRjaGVzIGRvICpOT1QqIGFwcGx5IG9uIHRvcCBvZiAyLjYueC55IGtlcm5lbHMgYnV0IG9uIHRvcCBvZiB0aGUKK2Jhc2UgMi42Lngga2VybmVsIC0tIGlmIHlvdSBuZWVkIHRvIG1vdmUgZnJvbSAyLjYueC55IHRvIDIuNi54KzEgeW91IG5lZWQgdG8KK2ZpcnN0IHJldmVydCB0aGUgMi42LngueSBwYXRjaCkuCisKK0hlcmUgYXJlIHNvbWUgZXhhbXBsZXM6CisKKyMgbW92aW5nIGZyb20gMi42LjExIHRvIDIuNi4xMgorJCBjZCB+L2xpbnV4LTIuNi4xMQkJCSMgY2hhbmdlIHRvIGtlcm5lbCBzb3VyY2UgZGlyCiskIHBhdGNoIC1wMSA8IC4uL3BhdGNoLTIuNi4xMgkJIyBhcHBseSB0aGUgMi42LjEyIHBhdGNoCiskIGNkIC4uCiskIG12IGxpbnV4LTIuNi4xMSBsaW51eC0yLjYuMTIJCSMgcmVuYW1lIHNvdXJjZSBkaXIKKworIyBtb3ZpbmcgZnJvbSAyLjYuMTEuMSB0byAyLjYuMTIKKyQgY2Qgfi9saW51eC0yLjYuMTEuMQkJCSMgY2hhbmdlIHRvIGtlcm5lbCBzb3VyY2UgZGlyCiskIHBhdGNoIC1wMSAtUiA8IC4uL3BhdGNoLTIuNi4xMS4xCSMgcmV2ZXJ0IHRoZSAyLjYuMTEuMSBwYXRjaAorCQkJCQkjIHNvdXJjZSBkaXIgaXMgbm93IDIuNi4xMQorJCBwYXRjaCAtcDEgPCAuLi9wYXRjaC0yLjYuMTIJCSMgYXBwbHkgbmV3IDIuNi4xMiBwYXRjaAorJCBjZCAuLgorJCBtdiBsaW51eC0yLjYuMTEuMSBsaW51eC0yLjYuMTIJCSMgcmVuYW1lIHNvdXJjZSBkaXIKKworCitUaGUgMi42LngueSBrZXJuZWxzCistLS0KKyBLZXJuZWxzIHdpdGggNC1kaWdpdCB2ZXJzaW9ucyBhcmUgLXN0YWJsZSBrZXJuZWxzLiBUaGV5IGNvbnRhaW4gc21hbGwoaXNoKQorY3JpdGljYWwgZml4ZXMgZm9yIHNlY3VyaXR5IHByb2JsZW1zIG9yIHNpZ25pZmljYW50IHJlZ3Jlc3Npb25zIGRpc2NvdmVyZWQKK2luIGEgZ2l2ZW4gMi42Lngga2VybmVsLgorCitUaGlzIGlzIHRoZSByZWNvbW1lbmRlZCBicmFuY2ggZm9yIHVzZXJzIHdobyB3YW50IHRoZSBtb3N0IHJlY2VudCBzdGFibGUKK2tlcm5lbCBhbmQgYXJlIG5vdCBpbnRlcmVzdGVkIGluIGhlbHBpbmcgdGVzdCBkZXZlbG9wbWVudC9leHBlcmltZW50YWwKK3ZlcnNpb25zLgorCitJZiBubyAyLjYueC55IGtlcm5lbCBpcyBhdmFpbGFibGUsIHRoZW4gdGhlIGhpZ2hlc3QgbnVtYmVyZWQgMi42Lngga2VybmVsIGlzCit0aGUgY3VycmVudCBzdGFibGUga2VybmVsLgorCisgbm90ZTogdGhlIC1zdGFibGUgdGVhbSB1c3VhbGx5IGRvIG1ha2UgaW5jcmVtZW50YWwgcGF0Y2hlcyBhdmFpbGFibGUgYXMgd2VsbAorIGFzIHBhdGNoZXMgYWdhaW5zdCB0aGUgbGF0ZXN0IG1haW5saW5lIHJlbGVhc2UsIGJ1dCBJIG9ubHkgY292ZXIgdGhlCisgbm9uLWluY3JlbWVudGFsIG9uZXMgYmVsb3cuIFRoZSBpbmNyZW1lbnRhbCBvbmVzIGNhbiBiZSBmb3VuZCBhdAorIGZ0cDovL2Z0cC5rZXJuZWwub3JnL3B1Yi9saW51eC9rZXJuZWwvdjIuNi9pbmNyLworCitUaGVzZSBwYXRjaGVzIGFyZSBub3QgaW5jcmVtZW50YWwsIG1lYW5pbmcgdGhhdCBmb3IgZXhhbXBsZSB0aGUgMi42LjEyLjMKK3BhdGNoIGRvZXMgbm90IGFwcGx5IG9uIHRvcCBvZiB0aGUgMi42LjEyLjIga2VybmVsIHNvdXJjZSwgYnV0IHJhdGhlciBvbiB0b3AKK29mIHRoZSBiYXNlIDIuNi4xMiBrZXJuZWwgc291cmNlIC4KK1NvLCBpbiBvcmRlciB0byBhcHBseSB0aGUgMi42LjEyLjMgcGF0Y2ggdG8geW91ciBleGlzdGluZyAyLjYuMTIuMiBrZXJuZWwKK3NvdXJjZSB5b3UgaGF2ZSB0byBmaXJzdCBiYWNrIG91dCB0aGUgMi42LjEyLjIgcGF0Y2ggKHNvIHlvdSBhcmUgbGVmdCB3aXRoIGEKK2Jhc2UgMi42LjEyIGtlcm5lbCBzb3VyY2UpIGFuZCB0aGVuIGFwcGx5IHRoZSBuZXcgMi42LjEyLjMgcGF0Y2guCisKK0hlcmUncyBhIHNtYWxsIGV4YW1wbGU6CisKKyQgY2Qgfi9saW51eC0yLjYuMTIuMgkJCSMgY2hhbmdlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgZGlyCiskIHBhdGNoIC1wMSAtUiA8IC4uL3BhdGNoLTIuNi4xMi4yCSMgcmV2ZXJ0IHRoZSAyLjYuMTIuMiBwYXRjaAorJCBwYXRjaCAtcDEgPCAuLi9wYXRjaC0yLjYuMTIuMwkJIyBhcHBseSB0aGUgbmV3IDIuNi4xMi4zIHBhdGNoCiskIGNkIC4uCiskIG12IGxpbnV4LTIuNi4xMi4yIGxpbnV4LTIuNi4xMi4zCSMgcmVuYW1lIHRoZSBrZXJuZWwgc291cmNlIGRpcgorCisKK1RoZSAtcmMga2VybmVscworLS0tCisgVGhlc2UgYXJlIHJlbGVhc2UtY2FuZGlkYXRlIGtlcm5lbHMuIFRoZXNlIGFyZSBkZXZlbG9wbWVudCBrZXJuZWxzIHJlbGVhc2VkCitieSBMaW51cyB3aGVuZXZlciBoZSBkZWVtcyB0aGUgY3VycmVudCBnaXQgKHRoZSBrZXJuZWwncyBzb3VyY2UgbWFuYWdlbWVudAordG9vbCkgdHJlZSB0byBiZSBpbiBhIHJlYXNvbmFibHkgc2FuZSBzdGF0ZSBhZGVxdWF0ZSBmb3IgdGVzdGluZy4KKworVGhlc2Uga2VybmVscyBhcmUgbm90IHN0YWJsZSBhbmQgeW91IHNob3VsZCBleHBlY3Qgb2NjYXNpb25hbCBicmVha2FnZSBpZgoreW91IGludGVuZCB0byBydW4gdGhlbS4gVGhpcyBpcyBob3dldmVyIHRoZSBtb3N0IHN0YWJsZSBvZiB0aGUgbWFpbgorZGV2ZWxvcG1lbnQgYnJhbmNoZXMgYW5kIGlzIGFsc28gd2hhdCB3aWxsIGV2ZW50dWFsbHkgdHVybiBpbnRvIHRoZSBuZXh0CitzdGFibGUga2VybmVsLCBzbyBpdCBpcyBpbXBvcnRhbnQgdGhhdCBpdCBiZSB0ZXN0ZWQgYnkgYXMgbWFueSBwZW9wbGUgYXMKK3Bvc3NpYmxlLgorCitUaGlzIGlzIGEgZ29vZCBicmFuY2ggdG8gcnVuIGZvciBwZW9wbGUgd2hvIHdhbnQgdG8gaGVscCBvdXQgdGVzdGluZworZGV2ZWxvcG1lbnQga2VybmVscyBidXQgZG8gbm90IHdhbnQgdG8gcnVuIHNvbWUgb2YgdGhlIHJlYWxseSBleHBlcmltZW50YWwKK3N0dWZmIChzdWNoIHBlb3BsZSBzaG91bGQgc2VlIHRoZSBzZWN0aW9ucyBhYm91dCAtZ2l0IGFuZCAtbW0ga2VybmVscyBiZWxvdykuCisKK1RoZSAtcmMgcGF0Y2hlcyBhcmUgbm90IGluY3JlbWVudGFsLCB0aGV5IGFwcGx5IHRvIGEgYmFzZSAyLjYueCBrZXJuZWwsIGp1c3QKK2xpa2UgdGhlIDIuNi54LnkgcGF0Y2hlcyBkZXNjcmliZWQgYWJvdmUuIFRoZSBrZXJuZWwgdmVyc2lvbiBiZWZvcmUgdGhlIC1yY04KK3N1ZmZpeCBkZW5vdGVzIHRoZSB2ZXJzaW9uIG9mIHRoZSBrZXJuZWwgdGhhdCB0aGlzIC1yYyBrZXJuZWwgd2lsbCBldmVudHVhbGx5Cit0dXJuIGludG8uCitTbywgMi42LjEzLXJjNSBtZWFucyB0aGF0IHRoaXMgaXMgdGhlIGZpZnRoIHJlbGVhc2UgY2FuZGlkYXRlIGZvciB0aGUgMi42LjEzCitrZXJuZWwgYW5kIHRoZSBwYXRjaCBzaG91bGQgYmUgYXBwbGllZCBvbiB0b3Agb2YgdGhlIDIuNi4xMiBrZXJuZWwgc291cmNlLgorCitIZXJlIGFyZSAzIGV4YW1wbGVzIG9mIGhvdyB0byBhcHBseSB0aGVzZSBwYXRjaGVzOgorCisjIGZpcnN0IGFuIGV4YW1wbGUgb2YgbW92aW5nIGZyb20gMi42LjEyIHRvIDIuNi4xMy1yYzMKKyQgY2Qgfi9saW51eC0yLjYuMTIJCQkjIGNoYW5nZSBpbnRvIHRoZSAyLjYuMTIgc291cmNlIGRpcgorJCBwYXRjaCAtcDEgPCAuLi9wYXRjaC0yLjYuMTMtcmMzCSMgYXBwbHkgdGhlIDIuNi4xMy1yYzMgcGF0Y2gKKyQgY2QgLi4KKyQgbXYgbGludXgtMi42LjEyIGxpbnV4LTIuNi4xMy1yYzMJIyByZW5hbWUgdGhlIHNvdXJjZSBkaXIKKworIyBub3cgbGV0J3MgbW92ZSBmcm9tIDIuNi4xMy1yYzMgdG8gMi42LjEzLXJjNQorJCBjZCB+L2xpbnV4LTIuNi4xMy1yYzMJCQkjIGNoYW5nZSBpbnRvIHRoZSAyLjYuMTMtcmMzIGRpcgorJCBwYXRjaCAtcDEgLVIgPCAuLi9wYXRjaC0yLjYuMTMtcmMzCSMgcmV2ZXJ0IHRoZSAyLjYuMTMtcmMzIHBhdGNoCiskIHBhdGNoIC1wMSA8IC4uL3BhdGNoLTIuNi4xMy1yYzUJIyBhcHBseSB0aGUgbmV3IDIuNi4xMy1yYzUgcGF0Y2gKKyQgY2QgLi4KKyQgbXYgbGludXgtMi42LjEzLXJjMyBsaW51eC0yLjYuMTMtcmM1CSMgcmVuYW1lIHRoZSBzb3VyY2UgZGlyCisKKyMgZmluYWxseSBsZXQncyB0cnkgYW5kIG1vdmUgZnJvbSAyLjYuMTIuMyB0byAyLjYuMTMtcmM1CiskIGNkIH4vbGludXgtMi42LjEyLjMJCQkjIGNoYW5nZSB0byB0aGUga2VybmVsIHNvdXJjZSBkaXIKKyQgcGF0Y2ggLXAxIC1SIDwgLi4vcGF0Y2gtMi42LjEyLjMJIyByZXZlcnQgdGhlIDIuNi4xMi4zIHBhdGNoCiskIHBhdGNoIC1wMSA8IC4uL3BhdGNoLTIuNi4xMy1yYzUJIyBhcHBseSBuZXcgMi42LjEzLXJjNSBwYXRjaAorJCBjZCAuLgorJCBtdiBsaW51eC0yLjYuMTIuMyBsaW51eC0yLjYuMTMtcmM1CSMgcmVuYW1lIHRoZSBrZXJuZWwgc291cmNlIGRpcgorCisKK1RoZSAtZ2l0IGtlcm5lbHMKKy0tLQorIFRoZXNlIGFyZSBkYWlseSBzbmFwc2hvdHMgb2YgTGludXMnIGtlcm5lbCB0cmVlIChtYW5hZ2VkIGluIGEgZ2l0CityZXBvc2l0b3J5LCBoZW5jZSB0aGUgbmFtZSkuCisKK1RoZXNlIHBhdGNoZXMgYXJlIHVzdWFsbHkgcmVsZWFzZWQgZGFpbHkgYW5kIHJlcHJlc2VudCB0aGUgY3VycmVudCBzdGF0ZSBvZgorTGludXMncyB0cmVlLiBUaGV5IGFyZSBtb3JlIGV4cGVyaW1lbnRhbCB0aGFuIC1yYyBrZXJuZWxzIHNpbmNlIHRoZXkgYXJlCitnZW5lcmF0ZWQgYXV0b21hdGljYWxseSB3aXRob3V0IGV2ZW4gYSBjdXJzb3J5IGdsYW5jZSB0byBzZWUgaWYgdGhleSBhcmUKK3NhbmUuCisKKy1naXQgcGF0Y2hlcyBhcmUgbm90IGluY3JlbWVudGFsIGFuZCBhcHBseSBlaXRoZXIgdG8gYSBiYXNlIDIuNi54IGtlcm5lbCBvcgorYSBiYXNlIDIuNi54LXJjIGtlcm5lbCAtLSB5b3UgY2FuIHNlZSB3aGljaCBmcm9tIHRoZWlyIG5hbWUuCitBIHBhdGNoIG5hbWVkIDIuNi4xMi1naXQxIGFwcGxpZXMgdG8gdGhlIDIuNi4xMiBrZXJuZWwgc291cmNlIGFuZCBhIHBhdGNoCituYW1lZCAyLjYuMTMtcmMzLWdpdDIgYXBwbGllcyB0byB0aGUgc291cmNlIG9mIHRoZSAyLjYuMTMtcmMzIGtlcm5lbC4KKworSGVyZSBhcmUgc29tZSBleGFtcGxlcyBvZiBob3cgdG8gYXBwbHkgdGhlc2UgcGF0Y2hlczoKKworIyBtb3ZpbmcgZnJvbSAyLjYuMTIgdG8gMi42LjEyLWdpdDEKKyQgY2Qgfi9saW51eC0yLjYuMTIJCQkjIGNoYW5nZSB0byB0aGUga2VybmVsIHNvdXJjZSBkaXIKKyQgcGF0Y2ggLXAxIDwgLi4vcGF0Y2gtMi42LjEyLWdpdDEJIyBhcHBseSB0aGUgMi42LjEyLWdpdDEgcGF0Y2gKKyQgY2QgLi4KKyQgbXYgbGludXgtMi42LjEyIGxpbnV4LTIuNi4xMi1naXQxCSMgcmVuYW1lIHRoZSBrZXJuZWwgc291cmNlIGRpcgorCisjIG1vdmluZyBmcm9tIDIuNi4xMi1naXQxIHRvIDIuNi4xMy1yYzItZ2l0MworJCBjZCB+L2xpbnV4LTIuNi4xMi1naXQxCQkjIGNoYW5nZSB0byB0aGUga2VybmVsIHNvdXJjZSBkaXIKKyQgcGF0Y2ggLXAxIC1SIDwgLi4vcGF0Y2gtMi42LjEyLWdpdDEJIyByZXZlcnQgdGhlIDIuNi4xMi1naXQxIHBhdGNoCisJCQkJCSMgd2Ugbm93IGhhdmUgYSAyLjYuMTIga2VybmVsCiskIHBhdGNoIC1wMSA8IC4uL3BhdGNoLTIuNi4xMy1yYzIJIyBhcHBseSB0aGUgMi42LjEzLXJjMiBwYXRjaAorCQkJCQkjIHRoZSBrZXJuZWwgaXMgbm93IDIuNi4xMy1yYzIKKyQgcGF0Y2ggLXAxIDwgLi4vcGF0Y2gtMi42LjEzLXJjMi1naXQzCSMgYXBwbHkgdGhlIDIuNi4xMy1yYzItZ2l0MyBwYXRjaAorCQkJCQkjIHRoZSBrZXJuZWwgaXMgbm93IDIuNi4xMy1yYzItZ2l0MworJCBjZCAuLgorJCBtdiBsaW51eC0yLjYuMTItZ2l0MSBsaW51eC0yLjYuMTMtcmMyLWdpdDMJIyByZW5hbWUgc291cmNlIGRpcgorCisKK1RoZSAtbW0ga2VybmVscworLS0tCisgVGhlc2UgYXJlIGV4cGVyaW1lbnRhbCBrZXJuZWxzIHJlbGVhc2VkIGJ5IEFuZHJldyBNb3J0b24uCisKK1RoZSAtbW0gdHJlZSBzZXJ2ZXMgYXMgYSBzb3J0IG9mIHByb3ZpbmcgZ3JvdW5kIGZvciBuZXcgZmVhdHVyZXMgYW5kIG90aGVyCitleHBlcmltZW50YWwgcGF0Y2hlcy4KK09uY2UgYSBwYXRjaCBoYXMgcHJvdmVkIGl0cyB3b3J0aCBpbiAtbW0gZm9yIGEgd2hpbGUgQW5kcmV3IHB1c2hlcyBpdCBvbiB0bworTGludXMgZm9yIGluY2x1c2lvbiBpbiBtYWlubGluZS4KKworQWx0aG91Z2ggaXQncyBlbmNvdXJhZ2VkIHRoYXQgcGF0Y2hlcyBmbG93IHRvIExpbnVzIHZpYSB0aGUgLW1tIHRyZWUsIHRoaXMKK2lzIG5vdCBhbHdheXMgZW5mb3JjZWQuCitTdWJzeXN0ZW0gbWFpbnRhaW5lcnMgKG9yIGluZGl2aWR1YWxzKSBzb21ldGltZXMgcHVzaCB0aGVpciBwYXRjaGVzIGRpcmVjdGx5Cit0byBMaW51cywgZXZlbiB0aG91Z2ggKG9yIGFmdGVyKSB0aGV5IGhhdmUgYmVlbiBtZXJnZWQgYW5kIHRlc3RlZCBpbiAtbW0gKG9yCitzb21ldGltZXMgZXZlbiB3aXRob3V0IHByaW9yIHRlc3RpbmcgaW4gLW1tKS4KKworWW91IHNob3VsZCBnZW5lcmFsbHkgc3RyaXZlIHRvIGdldCB5b3VyIHBhdGNoZXMgaW50byBtYWlubGluZSB2aWEgLW1tIHRvCitlbnN1cmUgbWF4aW11bSB0ZXN0aW5nLgorCitUaGlzIGJyYW5jaCBpcyBpbiBjb25zdGFudCBmbHV4IGFuZCBjb250YWlucyBtYW55IGV4cGVyaW1lbnRhbCBmZWF0dXJlcywgYQorbG90IG9mIGRlYnVnZ2luZyBwYXRjaGVzIG5vdCBhcHByb3ByaWF0ZSBmb3IgbWFpbmxpbmUgZXRjLiwgYW5kIGlzIHRoZSBtb3N0CitleHBlcmltZW50YWwgb2YgdGhlIGJyYW5jaGVzIGRlc2NyaWJlZCBpbiB0aGlzIGRvY3VtZW50LgorCitUaGVzZSBrZXJuZWxzIGFyZSBub3QgYXBwcm9wcmlhdGUgZm9yIHVzZSBvbiBzeXN0ZW1zIHRoYXQgYXJlIHN1cHBvc2VkIHRvIGJlCitzdGFibGUgYW5kIHRoZXkgYXJlIG1vcmUgcmlza3kgdG8gcnVuIHRoYW4gYW55IG9mIHRoZSBvdGhlciBicmFuY2hlcyAobWFrZQorc3VyZSB5b3UgaGF2ZSB1cC10by1kYXRlIGJhY2t1cHMgLS0gdGhhdCBnb2VzIGZvciBhbnkgZXhwZXJpbWVudGFsIGtlcm5lbCBidXQKK2V2ZW4gbW9yZSBzbyBmb3IgLW1tIGtlcm5lbHMpLgorCitUaGVzZSBrZXJuZWxzIGluIGFkZGl0aW9uIHRvIGFsbCB0aGUgb3RoZXIgZXhwZXJpbWVudGFsIHBhdGNoZXMgdGhleSBjb250YWluCit1c3VhbGx5IGFsc28gY29udGFpbiBhbnkgY2hhbmdlcyBpbiB0aGUgbWFpbmxpbmUgLWdpdCBrZXJuZWxzIGF2YWlsYWJsZSBhdAordGhlIHRpbWUgb2YgcmVsZWFzZS4KKworVGVzdGluZyBvZiAtbW0ga2VybmVscyBpcyBncmVhdGx5IGFwcHJlY2lhdGVkIHNpbmNlIHRoZSB3aG9sZSBwb2ludCBvZiB0aGUKK3RyZWUgaXMgdG8gd2VlZCBvdXQgcmVncmVzc2lvbnMsIGNyYXNoZXMsIGRhdGEgY29ycnVwdGlvbiBidWdzLCBidWlsZAorYnJlYWthZ2UgKGFuZCBhbnkgb3RoZXIgYnVnIGluIGdlbmVyYWwpIGJlZm9yZSBjaGFuZ2VzIGFyZSBtZXJnZWQgaW50byB0aGUKK21vcmUgc3RhYmxlIG1haW5saW5lIExpbnVzIHRyZWUuCitCdXQgdGVzdGVycyBvZiAtbW0gc2hvdWxkIGJlIGF3YXJlIHRoYXQgYnJlYWthZ2UgaW4gdGhpcyB0cmVlIGlzIG1vcmUgY29tbW9uCit0aGFuIGluIGFueSBvdGhlciB0cmVlLgorCitUaGUgLW1tIGtlcm5lbHMgYXJlIG5vdCByZWxlYXNlZCBvbiBhIGZpeGVkIHNjaGVkdWxlLCBidXQgdXN1YWxseSBhIGZldyAtbW0KK2tlcm5lbHMgYXJlIHJlbGVhc2VkIGluIGJldHdlZW4gZWFjaCAtcmMga2VybmVsICgxIHRvIDMgaXMgY29tbW9uKS4KK1RoZSAtbW0ga2VybmVscyBhcHBseSB0byBlaXRoZXIgYSBiYXNlIDIuNi54IGtlcm5lbCAod2hlbiBubyAtcmMga2VybmVscworaGF2ZSBiZWVuIHJlbGVhc2VkIHlldCkgb3IgdG8gYSBMaW51cyAtcmMga2VybmVsLgorCitIZXJlIGFyZSBzb21lIGV4YW1wbGVzIG9mIGFwcGx5aW5nIHRoZSAtbW0gcGF0Y2hlczoKKworIyBtb3ZpbmcgZnJvbSAyLjYuMTIgdG8gMi42LjEyLW1tMQorJCBjZCB+L2xpbnV4LTIuNi4xMgkJCSMgY2hhbmdlIHRvIHRoZSAyLjYuMTIgc291cmNlIGRpcgorJCBwYXRjaCAtcDEgPCAuLi8yLjYuMTItbW0xCQkjIGFwcGx5IHRoZSAyLjYuMTItbW0xIHBhdGNoCiskIGNkIC4uCiskIG12IGxpbnV4LTIuNi4xMiBsaW51eC0yLjYuMTItbW0xCSMgcmVuYW1lIHRoZSBzb3VyY2UgYXBwcm9wcmlhdGVseQorCisjIG1vdmluZyBmcm9tIDIuNi4xMi1tbTEgdG8gMi42LjEzLXJjMy1tbTMKKyQgY2Qgfi9saW51eC0yLjYuMTItbW0xCiskIHBhdGNoIC1wMSAtUiA8IC4uLzIuNi4xMi1tbTEJCSMgcmV2ZXJ0IHRoZSAyLjYuMTItbW0xIHBhdGNoCisJCQkJCSMgd2Ugbm93IGhhdmUgYSAyLjYuMTIgc291cmNlCiskIHBhdGNoIC1wMSA8IC4uL3BhdGNoLTIuNi4xMy1yYzMJIyBhcHBseSB0aGUgMi42LjEzLXJjMyBwYXRjaAorCQkJCQkjIHdlIG5vdyBoYXZlIGEgMi42LjEzLXJjMyBzb3VyY2UKKyQgcGF0Y2ggLXAxIDwgLi4vMi42LjEzLXJjMy1tbTMJCSMgYXBwbHkgdGhlIDIuNi4xMy1yYzMtbW0zIHBhdGNoCiskIGNkIC4uCiskIG12IGxpbnV4LTIuNi4xMi1tbTEgbGludXgtMi42LjEzLXJjMy1tbTMJIyByZW5hbWUgdGhlIHNvdXJjZSBkaXIKKworCitUaGlzIGNvbmNsdWRlcyB0aGlzIGxpc3Qgb2YgZXhwbGFuYXRpb25zIG9mIHRoZSB2YXJpb3VzIGtlcm5lbCB0cmVlcy4KK0kgaG9wZSB5b3UgYXJlIG5vdyBjbGVhciBvbiBob3cgdG8gYXBwbHkgdGhlIHZhcmlvdXMgcGF0Y2hlcyBhbmQgaGVscCB0ZXN0aW5nCit0aGUga2VybmVsLgorCitUaGFuayB5b3UncyB0byBSYW5keSBEdW5sYXAsIFJvbGYgRWlrZSBCZWVyLCBMaW51cyBUb3J2YWxkcywgQm9kbyBFZ2dlcnQsCitKb2hhbm5lcyBTdGV6ZW5iYWNoLCBHcmFudCBDb2FkeSwgUGF2ZWwgTWFjaGVrIGFuZCBvdGhlcnMgdGhhdCBJIG1heSBoYXZlCitmb3Jnb3R0ZW4gZm9yIHRoZWlyIHJldmlld3MgYW5kIGNvbnRyaWJ1dGlvbnMgdG8gdGhpcyBkb2N1bWVudC4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vMDAtSU5ERVggYi9Eb2N1bWVudGF0aW9uL2FybS8wMC1JTkRFWApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWEwMTFjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vMDAtSU5ERVgKQEAgLTAsMCArMSw1MiBAQAorMDAtSU5ERVgKKwktIHRoaXMgZmlsZQorQm9vdGluZworCS0gcmVxdWlyZW1lbnRzIGZvciBib290aW5nCitDQ04udHh0CisJLSBDYWNoZSBDb2hlcmVudCBOZXR3b3JrIHJpbmctYnVzIGFuZCBwZXJmIFBNVSBkcml2ZXIuCitJbnRlcnJ1cHRzCisJLSBBUk0gSW50ZXJydXB0IHN1YnN5c3RlbSBkb2N1bWVudGF0aW9uCitJWFA0eHgKKwktIEludGVsIElYUDR4eCBOZXR3b3JrIHByb2Nlc3Nvci4KK01ha2VmaWxlCisJLSBCdWlsZCBzb3VyY2VmaWxlcyBhcyBwYXJ0IG9mIHRoZSBEb2N1bWVudGF0aW9uLWJ1aWxkIGZvciBhcm0KK05ldHdpbmRlcgorCS0gTmV0d2luZGVyIHNwZWNpZmljIGRvY3VtZW50YXRpb24KK1BvcnRpbmcKKyAgICAgICAtIFN5bWJvbCBkZWZpbml0aW9ucyBmb3IgcG9ydGluZyBMaW51eCB0byBhIG5ldyBBUk0gbWFjaGluZS4KK1NldHVwCisgICAgICAgLSBLZXJuZWwgaW5pdGlhbGl6YXRpb24gcGFyYW1ldGVycyBvbiBBUk0gTGludXgKK1JFQURNRQorCS0gR2VuZXJhbCBBUk0gZG9jdW1lbnRhdGlvbgorU0ExMTAwLworCS0gU0ExMTAwIGRvY3VtZW50YXRpb24KK1NhbXN1bmctUzNDMjRYWC8KKwktIFMzQzI0WFggQVJNIExpbnV4IE92ZXJ2aWV3CitTUEVBci8KKwktIFNUIFNQRUFyIHBsYXRmb3JtIExpbnV4IE92ZXJ2aWV3CitWRlAvCisJLSBSZWxlYXNlIG5vdGVzIGZvciBMaW51eCBLZXJuZWwgVmVjdG9yIEZsb2F0aW5nIFBvaW50IHN1cHBvcnQgY29kZQorY2x1c3Rlci1wbS1yYWNlLWF2b2lkYW5jZS50eHQKKwktIEFsZ29yaXRobSBmb3IgQ1BVIGFuZCBDbHVzdGVyIHNldHVwL3RlYXJkb3duCitlbXBlZy8KKwktIEx0ZCdzIEVtcGVnIE1QMyBDYXIgQXVkaW8gUGxheWVyCitmaXJtd2FyZS50eHQKKwktIFNlY3VyZSBmaXJtd2FyZSByZWdpc3RyYXRpb24gYW5kIGNhbGxpbmcuCitrZXJuZWxfbW9kZV9uZW9uLnR4dAorCS0gSG93IHRvIHVzZSBORU9OIGluc3RydWN0aW9ucyBpbiBrZXJuZWwgbW9kZQora2VybmVsX3VzZXJfaGVscGVycy50eHQKKwktIEhlbHBlciBmdW5jdGlvbnMgaW4ga2VybmVsIHNwYWNlIG1hZGUgYXZhaWxhYmxlIGZvciB1c2Vyc3BhY2UuCittZW1fYWxpZ25tZW50CisJLSBhbGlnbm1lbnQgYWJvcnQgaGFuZGxlciBkb2N1bWVudGF0aW9uCittZW1vcnkudHh0CisJLSBkZXNjcmlwdGlvbiBvZiB0aGUgdmlydHVhbCBtZW1vcnkgbGF5b3V0Citud2ZwZS8KKwktIE5XRlBFIGZsb2F0aW5nIHBvaW50IGVtdWxhdG9yIGRvY3VtZW50YXRpb24KK3N3cF9lbXVsYXRpb24KKwktIFNXUC9TV1BCIGVtdWxhdGlvbiBoYW5kbGVyL2xvZ2dpbmcgZGVzY3JpcHRpb24KK3RjbS50eHQKKwktIEFSTSBUaWdodGx5IENvdXBsZWQgTWVtb3J5Cit1ZWZpLnR4dAorCS0gW1VdRUZJIGNvbmZpZ3VyYXRpb24gYW5kIHJ1bnRpbWUgc2VydmljZXMgZG9jdW1lbnRhdGlvbgordmxvY2tzLnR4dAorCS0gVm90aW5nIGxvY2tzLCBsb3ctbGV2ZWwgbWVjaGFuaXNtIHJlbHlpbmcgb24gbWVtb3J5IHN5c3RlbSBhdG9taWMgd3JpdGVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vQXRtZWwvUkVBRE1FIGIvRG9jdW1lbnRhdGlvbi9hcm0vQXRtZWwvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5MzFjZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9BdG1lbC9SRUFETUUKQEAgLTAsMCArMSwxMjkgQEAKK0FSTSBBdG1lbCBTb0NzIChha2EgQVQ5MSkKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLQorVGhpcyBkb2N1bWVudCBnaXZlcyB1c2VmdWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEFSTSBBdG1lbCBTb0NzIHRoYXQgYXJlCitjdXJyZW50bHkgc3VwcG9ydGVkIGluIExpbnV4IE1haW5saW5lICh5b3Uga25vdywgdGhlIG9uZSBvbiBrZXJuZWwub3JnKS4KKworSXQgaXMgaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGUgQXRtZWwgfCBTTUFSVCBBUk0tYmFzZWQgTVBVIHByb2R1Y3QgbGluZSBpcworaGlzdG9yaWNhbGx5IG5hbWVkICJBVDkxIiBvciAiYXQ5MSIgdGhyb3VnaG91dCB0aGUgTGludXgga2VybmVsIGRldmVsb3BtZW50Citwcm9jZXNzIGV2ZW4gaWYgdGhpcyBwcm9kdWN0IHByZWZpeCBoYXMgY29tcGxldGVseSBkaXNhcHBlYXJlZCBmcm9tIHRoZQorb2ZmaWNpYWwgQXRtZWwgcHJvZHVjdCBuYW1lLiBBbnl3YXksIGZpbGVzLCBkaXJlY3RvcmllcywgZ2l0IHRyZWVzLAorZ2l0IGJyYW5jaGVzL3RhZ3MgYW5kIGVtYWlsIHN1YmplY3QgYWx3YXlzIGNvbnRhaW4gdGhpcyAiYXQ5MSIgc3ViLXN0cmluZy4KKworCitBVDkxIFNvQ3MKKy0tLS0tLS0tLQorRG9jdW1lbnRhdGlvbiBhbmQgZGV0YWlsbGVkIGRhdGFzaGVldCBmb3IgZWFjaCBwcm9kdWN0IGFyZSBhdmFpbGFibGUgb24KK3RoZSBBdG1lbCB3ZWJzaXRlOiBodHRwOi8vd3d3LmF0bWVsLmNvbS4KKworICBGbGF2b3JzOgorICAgICogQVJNIDkyMCBiYXNlZCBTb0MKKyAgICAgIC0gYXQ5MXJtOTIwMAorICAgICAgICArIERhdGFzaGVldAorICAgICAgICAgIGh0dHA6Ly93d3cuYXRtZWwuY29tL0ltYWdlcy9kb2MxNzY4LnBkZgorCisgICAgKiBBUk0gOTI2IGJhc2VkIFNvQ3MKKyAgICAgIC0gYXQ5MXNhbTkyNjAKKyAgICAgICAgKyBEYXRhc2hlZXQKKyAgICAgICAgICBodHRwOi8vd3d3LmF0bWVsLmNvbS9JbWFnZXMvZG9jNjIyMS5wZGYKKworICAgICAgLSBhdDkxc2FtOXhlCisgICAgICAgICsgRGF0YXNoZWV0CisgICAgICAgICAgaHR0cDovL3d3dy5hdG1lbC5jb20vSW1hZ2VzL0F0bWVsLTYyNTQtMzItYml0LUFSTTkyNkVKLVMtRW1iZWRkZWQtTWljcm9wcm9jZXNzb3ItU0FNOVhFX0RhdGFzaGVldC5wZGYKKworICAgICAgLSBhdDkxc2FtOTI2MQorICAgICAgICArIERhdGFzaGVldAorICAgICAgICAgIGh0dHA6Ly93d3cuYXRtZWwuY29tL0ltYWdlcy9kb2M2MDYyLnBkZgorCisgICAgICAtIGF0OTFzYW05MjYzCisgICAgICAgICsgRGF0YXNoZWV0CisgICAgICAgICAgaHR0cDovL3d3dy5hdG1lbC5jb20vSW1hZ2VzL0F0bWVsXzYyNDlfMzItYml0LUFSTTkyNkVKLVMtTWljcm9jb250cm9sbGVyX1NBTTkyNjNfRGF0YXNoZWV0LnBkZgorCisgICAgICAtIGF0OTFzYW05cmwKKyAgICAgICAgKyBEYXRhc2hlZXQKKyAgICAgICAgICBodHRwOi8vd3d3LmF0bWVsLmNvbS9JbWFnZXMvZG9jNjI4OS5wZGYKKworICAgICAgLSBhdDkxc2FtOWcyMAorICAgICAgICArIERhdGFzaGVldAorICAgICAgICAgIGh0dHA6Ly93d3cuYXRtZWwuY29tL0ltYWdlcy9kb2M2Mzg0LnBkZgorCisgICAgICAtIGF0OTFzYW05ZzQ1IGZhbWlseQorICAgICAgICAtIGF0OTFzYW05ZzQ1CisgICAgICAgIC0gYXQ5MXNhbTlnNDYKKyAgICAgICAgLSBhdDkxc2FtOW0xMAorICAgICAgICAtIGF0OTFzYW05bTExIChkZXZpY2Ugc3VwZXJzZXQpCisgICAgICAgICsgRGF0YXNoZWV0CisgICAgICAgICAgaHR0cDovL3d3dy5hdG1lbC5jb20vSW1hZ2VzL0F0bWVsLTY0MzctMzItYml0LUFSTTkyNi1FbWJlZGRlZC1NaWNyb3Byb2Nlc3Nvci1TQU05TTExX0RhdGFzaGVldC5wZGYKKworICAgICAgLSBhdDkxc2FtOXg1IGZhbWlseSAoYWthICJUaGUgNSBzZXJpZXMiKQorICAgICAgICAtIGF0OTFzYW05ZzE1CisgICAgICAgIC0gYXQ5MXNhbTlnMjUKKyAgICAgICAgLSBhdDkxc2FtOWczNQorICAgICAgICAtIGF0OTFzYW05eDI1CisgICAgICAgIC0gYXQ5MXNhbTl4MzUKKyAgICAgICAgKyBEYXRhc2hlZXQgKGNhbiBiZSBjb25zaWRlcmVkIGFzIGNvdmVyaW5nIHRoZSB3aG9sZSBmYW1pbHkpCisgICAgICAgICAgaHR0cDovL3d3dy5hdG1lbC5jb20vSW1hZ2VzL0F0bWVsXzExMDU1XzMyLWJpdC1BUk05MjZFSi1TLU1pY3JvY29udHJvbGxlcl9TQU05WDM1X0RhdGFzaGVldC5wZGYKKworICAgICAgLSBhdDkxc2FtOW4xMgorICAgICAgICArIERhdGFzaGVldAorICAgICAgICAgIGh0dHA6Ly93d3cuYXRtZWwuY29tL0ltYWdlcy9BdG1lbF8xMTA2M18zMi1iaXQtQVJNOTI2RUotUy1NaWNyb2NvbnRyb2xsZXJfU0FNOU4xMkNOMTFDTjEyX0RhdGFzaGVldC5wZGYKKworICAgICogQVJNIENvcnRleC1BNSBiYXNlZCBTb0NzCisgICAgICAtIHNhbWE1ZDMgZmFtaWx5CisgICAgICAgIC0gc2FtYTVkMzEKKyAgICAgICAgLSBzYW1hNWQzMworICAgICAgICAtIHNhbWE1ZDM0CisgICAgICAgIC0gc2FtYTVkMzUKKyAgICAgICAgLSBzYW1hNWQzNiAoZGV2aWNlIHN1cGVyc2V0KQorICAgICAgICArIERhdGFzaGVldAorICAgICAgICAgIGh0dHA6Ly93d3cuYXRtZWwuY29tL0ltYWdlcy9BdG1lbC0xMTEyMS0zMi1iaXQtQ29ydGV4LUE1LU1pY3JvY29udHJvbGxlci1TQU1BNUQzX0RhdGFzaGVldC5wZGYKKworICAgICogQVJNIENvcnRleC1BNSArIE5FT04gYmFzZWQgU29DcworICAgICAgLSBzYW1hNWQ0IGZhbWlseQorICAgICAgICAtIHNhbWE1ZDQxCisgICAgICAgIC0gc2FtYTVkNDIKKyAgICAgICAgLSBzYW1hNWQ0MworICAgICAgICAtIHNhbWE1ZDQ0IChkZXZpY2Ugc3VwZXJzZXQpCisgICAgICAgICsgRGF0YXNoZWV0CisgICAgICAgICAgaHR0cDovL3d3dy5hdG1lbC5jb20vSW1hZ2VzL0F0bWVsLTExMjM4LTMyLWJpdC1Db3J0ZXgtQTUtTWljcm9jb250cm9sbGVyLVNBTUE1RDRfRGF0YXNoZWV0LnBkZgorCisgICAgICAtIHNhbWE1ZDIgZmFtaWx5CisgICAgICAgIC0gc2FtYTVkMjcKKyAgICAgICAgKyBEYXRhc2hlZXQKKyAgICAgICAgICBDb21pbmcgc29vbgorCisKK0xpbnV4IGtlcm5lbCBpbmZvcm1hdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaW51eCBrZXJuZWwgbWFjaCBkaXJlY3Rvcnk6IGFyY2gvYXJtL21hY2gtYXQ5MQorTUFJTlRBSU5FUlMgZW50cnkgaXM6ICJBUk0vQVRNRUwgQVQ5MVJNOTIwMCBBTkQgQVQ5MVNBTSBBUk0gQVJDSElURUNUVVJFUyIKKworCitEZXZpY2UgVHJlZSBmb3IgQVQ5MSBTb0NzIGFuZCBib2FyZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQWxsIEFUOTEgU29DcyBhcmUgY29udmVydGVkIHRvIERldmljZSBUcmVlLiBTaW5jZSBMaW51eCAzLjE5LCB0aGVzZSBwcm9kdWN0cworbXVzdCB1c2UgdGhpcyBtZXRob2QgdG8gYm9vdCB0aGUgTGludXgga2VybmVsLgorCitXb3JrIEluIFByb2dyZXNzIHN0YXRlbWVudDoKK0RldmljZSBUcmVlIGZpbGVzIGFuZCBEZXZpY2UgVHJlZSBiaW5kaW5ncyB0aGF0IGFwcGx5IHRvIEFUOTEgU29DcyBhbmQgYm9hcmRzIGFyZQorY29uc2lkZXJlZCBhcyAiVW5zdGFibGUiLiBUbyBiZSBjb21wbGV0ZWx5IGNsZWFyLCBhbnkgYXQ5MSBiaW5kaW5nIGNhbiBjaGFuZ2UgYXQKK2FueSB0aW1lLiBTbywgYmUgc3VyZSB0byB1c2UgYSBEZXZpY2UgVHJlZSBCaW5hcnkgYW5kIGEgS2VybmVsIEltYWdlIGdlbmVyYXRlZCBmcm9tCit0aGUgc2FtZSBzb3VyY2UgdHJlZS4KK1BsZWFzZSByZWZlciB0byB0aGUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL0FCSS50eHQgZmlsZSBmb3IgYQorZGVmaW5pdGlvbiBvZiBhICJTdGFibGUiIGJpbmRpbmcvQUJJLgorVGhpcyBzdGF0ZW1lbnQgd2lsbCBiZSByZW1vdmVkIGJ5IEFUOTEgTUFJTlRBSU5FUlMgd2hlbiBhcHByb3ByaWF0ZS4KKworTmFtaW5nIGNvbnZlbnRpb25zIGFuZCBiZXN0IHByYWN0aWNlOgorLSBTb0NzIERldmljZSBUcmVlIFNvdXJjZSBJbmNsdWRlIGZpbGVzIGFyZSBuYW1lZCBhZnRlciB0aGUgb2ZmaWNpYWwgbmFtZSBvZgorICB0aGUgcHJvZHVjdCAoYXQ5MXNhbTlnMjAuZHRzaSBvciBzYW1hNWQzMy5kdHNpIGZvciBpbnN0YW5jZSkuCistIERldmljZSBUcmVlIFNvdXJjZSBJbmNsdWRlIGZpbGVzICguZHRzaSkgYXJlIHVzZWQgdG8gY29sbGVjdCBjb21tb24gbm9kZXMgdGhhdCBjYW4gYmUKKyAgc2hhcmVkIGFjcm9zcyBTb0NzIG9yIGJvYXJkcyAoc2FtYTVkMy5kdHNpIG9yIGF0OTFzYW05eDVjbS5kdHNpIGZvciBpbnN0YW5jZSkuCisgIFdoZW4gY29sbGVjdGluZyBub2RlcyBmb3IgYSBwYXJ0aWN1bGFyIHBlcmlwaGVyYWwgb3IgdG9waWMsIHRoZSBpZGVudGlmaWVyIGhhdmUgdG8KKyAgYmUgcGxhY2VkIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUgbmFtZSwgc2VwYXJhdGVkIHdpdGggYSAiXyIgKGF0OTFzYW05eDVfY2FuLmR0c2kKKyAgb3Igc2FtYTVkM19nbWFjLmR0c2kgZm9yIGV4YW1wbGUpLgorLSBib2FyZCBEZXZpY2UgVHJlZSBTb3VyY2UgZmlsZXMgKC5kdHMpIGFyZSBwcmVmaXhlZCBieSB0aGUgc3RyaW5nICJhdDkxLSIgc28KKyAgdGhhdCB0aGV5IGNhbiBiZSBpZGVudGlmaWVkIGVhc2lseS4gTm90ZSB0aGF0IHNvbWUgZmlsZXMgYXJlIGhpc3RvcmljYWwgZXhjZXB0aW9ucworICB0byB0aGlzIHJ1bGUgKHNhbWE1ZDNbMTM0NTZdZWsuZHRzLCB1c2JfYTlnMjAuZHRzIG9yIGFuaW1lb19pcC5kdHMgZm9yIGV4YW1wbGUpLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vQm9vdGluZyBiL0RvY3VtZW50YXRpb24vYXJtL0Jvb3RpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNjMWRmMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL0Jvb3RpbmcKQEAgLTAsMCArMSwyMTggQEAKKwkJCUJvb3RpbmcgQVJNIExpbnV4CisJCQk9PT09PT09PT09PT09PT09PQorCitBdXRob3I6CVJ1c3NlbGwgS2luZworRGF0ZSAgOiAxOCBNYXkgMjAwMgorCitUaGUgZm9sbG93aW5nIGRvY3VtZW50YXRpb24gaXMgcmVsZXZhbnQgdG8gMi40LjE4LXJtazYgYW5kIGJleW9uZC4KKworSW4gb3JkZXIgdG8gYm9vdCBBUk0gTGludXgsIHlvdSByZXF1aXJlIGEgYm9vdCBsb2FkZXIsIHdoaWNoIGlzIGEgc21hbGwKK3Byb2dyYW0gdGhhdCBydW5zIGJlZm9yZSB0aGUgbWFpbiBrZXJuZWwuICBUaGUgYm9vdCBsb2FkZXIgaXMgZXhwZWN0ZWQKK3RvIGluaXRpYWxpc2UgdmFyaW91cyBkZXZpY2VzLCBhbmQgZXZlbnR1YWxseSBjYWxsIHRoZSBMaW51eCBrZXJuZWwsCitwYXNzaW5nIGluZm9ybWF0aW9uIHRvIHRoZSBrZXJuZWwuCisKK0Vzc2VudGlhbGx5LCB0aGUgYm9vdCBsb2FkZXIgc2hvdWxkIHByb3ZpZGUgKGFzIGEgbWluaW11bSkgdGhlCitmb2xsb3dpbmc6CisKKzEuIFNldHVwIGFuZCBpbml0aWFsaXNlIHRoZSBSQU0uCisyLiBJbml0aWFsaXNlIG9uZSBzZXJpYWwgcG9ydC4KKzMuIERldGVjdCB0aGUgbWFjaGluZSB0eXBlLgorNC4gU2V0dXAgdGhlIGtlcm5lbCB0YWdnZWQgbGlzdC4KKzUuIExvYWQgaW5pdHJhbWZzLgorNi4gQ2FsbCB0aGUga2VybmVsIGltYWdlLgorCisKKzEuIFNldHVwIGFuZCBpbml0aWFsaXNlIFJBTQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0V4aXN0aW5nIGJvb3QgbG9hZGVyczoJCU1BTkRBVE9SWQorTmV3IGJvb3QgbG9hZGVyczoJCU1BTkRBVE9SWQorCitUaGUgYm9vdCBsb2FkZXIgaXMgZXhwZWN0ZWQgdG8gZmluZCBhbmQgaW5pdGlhbGlzZSBhbGwgUkFNIHRoYXQgdGhlCitrZXJuZWwgd2lsbCB1c2UgZm9yIHZvbGF0aWxlIGRhdGEgc3RvcmFnZSBpbiB0aGUgc3lzdGVtLiAgSXQgcGVyZm9ybXMKK3RoaXMgaW4gYSBtYWNoaW5lIGRlcGVuZGVudCBtYW5uZXIuICAoSXQgbWF5IHVzZSBpbnRlcm5hbCBhbGdvcml0aG1zCit0byBhdXRvbWF0aWNhbGx5IGxvY2F0ZSBhbmQgc2l6ZSBhbGwgUkFNLCBvciBpdCBtYXkgdXNlIGtub3dsZWRnZSBvZgordGhlIFJBTSBpbiB0aGUgbWFjaGluZSwgb3IgYW55IG90aGVyIG1ldGhvZCB0aGUgYm9vdCBsb2FkZXIgZGVzaWduZXIKK3NlZXMgZml0LikKKworCisyLiBJbml0aWFsaXNlIG9uZSBzZXJpYWwgcG9ydAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRXhpc3RpbmcgYm9vdCBsb2FkZXJzOgkJT1BUSU9OQUwsIFJFQ09NTUVOREVECitOZXcgYm9vdCBsb2FkZXJzOgkJT1BUSU9OQUwsIFJFQ09NTUVOREVECisKK1RoZSBib290IGxvYWRlciBzaG91bGQgaW5pdGlhbGlzZSBhbmQgZW5hYmxlIG9uZSBzZXJpYWwgcG9ydCBvbiB0aGUKK3RhcmdldC4gIFRoaXMgYWxsb3dzIHRoZSBrZXJuZWwgc2VyaWFsIGRyaXZlciB0byBhdXRvbWF0aWNhbGx5IGRldGVjdAord2hpY2ggc2VyaWFsIHBvcnQgaXQgc2hvdWxkIHVzZSBmb3IgdGhlIGtlcm5lbCBjb25zb2xlIChnZW5lcmFsbHkKK3VzZWQgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcywgb3IgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSB0YXJnZXQuKQorCitBcyBhbiBhbHRlcm5hdGl2ZSwgdGhlIGJvb3QgbG9hZGVyIGNhbiBwYXNzIHRoZSByZWxldmFudCAnY29uc29sZT0nCitvcHRpb24gdG8gdGhlIGtlcm5lbCB2aWEgdGhlIHRhZ2dlZCBsaXN0cyBzcGVjaWZ5aW5nIHRoZSBwb3J0LCBhbmQKK3NlcmlhbCBmb3JtYXQgb3B0aW9ucyBhcyBkZXNjcmliZWQgaW4KKworICAgICAgIERvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0LgorCisKKzMuIERldGVjdCB0aGUgbWFjaGluZSB0eXBlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFeGlzdGluZyBib290IGxvYWRlcnM6CQlPUFRJT05BTAorTmV3IGJvb3QgbG9hZGVyczoJCU1BTkRBVE9SWSBleGNlcHQgZm9yIERULW9ubHkgcGxhdGZvcm1zCisKK1RoZSBib290IGxvYWRlciBzaG91bGQgZGV0ZWN0IHRoZSBtYWNoaW5lIHR5cGUgaXRzIHJ1bm5pbmcgb24gYnkgc29tZQorbWV0aG9kLiAgV2hldGhlciB0aGlzIGlzIGEgaGFyZCBjb2RlZCB2YWx1ZSBvciBzb21lIGFsZ29yaXRobSB0aGF0Citsb29rcyBhdCB0aGUgY29ubmVjdGVkIGhhcmR3YXJlIGlzIGJleW9uZCB0aGUgc2NvcGUgb2YgdGhpcyBkb2N1bWVudC4KK1RoZSBib290IGxvYWRlciBtdXN0IHVsdGltYXRlbHkgYmUgYWJsZSB0byBwcm92aWRlIGEgTUFDSF9UWVBFX3h4eAordmFsdWUgdG8gdGhlIGtlcm5lbC4gKHNlZSBsaW51eC9hcmNoL2FybS90b29scy9tYWNoLXR5cGVzKS4gIFRoaXMKK3Nob3VsZCBiZSBwYXNzZWQgdG8gdGhlIGtlcm5lbCBpbiByZWdpc3RlciByMS4KKworRm9yIERULW9ubHkgcGxhdGZvcm1zLCB0aGUgbWFjaGluZSB0eXBlIHdpbGwgYmUgZGV0ZXJtaW5lZCBieSBkZXZpY2UKK3RyZWUuICBzZXQgdGhlIG1hY2hpbmUgdHlwZSB0byBhbGwgb25lcyAofjApLiAgVGhpcyBpcyBub3Qgc3RyaWN0bHkKK25lY2Vzc2FyeSwgYnV0IGFzc3VyZXMgdGhhdCBpdCB3aWxsIG5vdCBtYXRjaCBhbnkgZXhpc3RpbmcgdHlwZXMuCisKKzQuIFNldHVwIGJvb3QgZGF0YQorLS0tLS0tLS0tLS0tLS0tLS0tCisKK0V4aXN0aW5nIGJvb3QgbG9hZGVyczoJCU9QVElPTkFMLCBISUdITFkgUkVDT01NRU5ERUQKK05ldyBib290IGxvYWRlcnM6CQlNQU5EQVRPUlkKKworVGhlIGJvb3QgbG9hZGVyIG11c3QgcHJvdmlkZSBlaXRoZXIgYSB0YWdnZWQgbGlzdCBvciBhIGR0YiBpbWFnZSBmb3IKK3Bhc3NpbmcgY29uZmlndXJhdGlvbiBkYXRhIHRvIHRoZSBrZXJuZWwuICBUaGUgcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUKK2Jvb3QgZGF0YSBpcyBwYXNzZWQgdG8gdGhlIGtlcm5lbCBpbiByZWdpc3RlciByMi4KKworNGEuIFNldHVwIHRoZSBrZXJuZWwgdGFnZ2VkIGxpc3QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBib290IGxvYWRlciBtdXN0IGNyZWF0ZSBhbmQgaW5pdGlhbGlzZSB0aGUga2VybmVsIHRhZ2dlZCBsaXN0LgorQSB2YWxpZCB0YWdnZWQgbGlzdCBzdGFydHMgd2l0aCBBVEFHX0NPUkUgYW5kIGVuZHMgd2l0aCBBVEFHX05PTkUuCitUaGUgQVRBR19DT1JFIHRhZyBtYXkgb3IgbWF5IG5vdCBiZSBlbXB0eS4gIEFuIGVtcHR5IEFUQUdfQ09SRSB0YWcKK2hhcyB0aGUgc2l6ZSBmaWVsZCBzZXQgdG8gJzInICgweDAwMDAwMDAyKS4gIFRoZSBBVEFHX05PTkUgbXVzdCBzZXQKK3RoZSBzaXplIGZpZWxkIHRvIHplcm8uCisKK0FueSBudW1iZXIgb2YgdGFncyBjYW4gYmUgcGxhY2VkIGluIHRoZSBsaXN0LiAgSXQgaXMgdW5kZWZpbmVkCit3aGV0aGVyIGEgcmVwZWF0ZWQgdGFnIGFwcGVuZHMgdG8gdGhlIGluZm9ybWF0aW9uIGNhcnJpZWQgYnkgdGhlCitwcmV2aW91cyB0YWcsIG9yIHdoZXRoZXIgaXQgcmVwbGFjZXMgdGhlIGluZm9ybWF0aW9uIGluIGl0cworZW50aXJldHk7IHNvbWUgdGFncyBiZWhhdmUgYXMgdGhlIGZvcm1lciwgb3RoZXJzIHRoZSBsYXR0ZXIuCisKK1RoZSBib290IGxvYWRlciBtdXN0IHBhc3MgYXQgYSBtaW5pbXVtIHRoZSBzaXplIGFuZCBsb2NhdGlvbiBvZgordGhlIHN5c3RlbSBtZW1vcnksIGFuZCByb290IGZpbGVzeXN0ZW0gbG9jYXRpb24uICBUaGVyZWZvcmUsIHRoZQorbWluaW11bSB0YWdnZWQgbGlzdCBzaG91bGQgbG9vazoKKworCSstLS0tLS0tLS0tLSsKK2Jhc2UgLT4JfCBBVEFHX0NPUkUgfCAgfAorCSstLS0tLS0tLS0tLSsgIHwKKwl8IEFUQUdfTUVNICB8ICB8IGluY3JlYXNpbmcgYWRkcmVzcworCSstLS0tLS0tLS0tLSsgIHwKKwl8IEFUQUdfTk9ORSB8ICB8CisJKy0tLS0tLS0tLS0tKyAgdgorCitUaGUgdGFnZ2VkIGxpc3Qgc2hvdWxkIGJlIHN0b3JlZCBpbiBzeXN0ZW0gUkFNLgorCitUaGUgdGFnZ2VkIGxpc3QgbXVzdCBiZSBwbGFjZWQgaW4gYSByZWdpb24gb2YgbWVtb3J5IHdoZXJlIG5laXRoZXIKK3RoZSBrZXJuZWwgZGVjb21wcmVzc29yIG5vciBpbml0cmQgJ2Jvb3RwJyBwcm9ncmFtIHdpbGwgb3ZlcndyaXRlCitpdC4gIFRoZSByZWNvbW1lbmRlZCBwbGFjZW1lbnQgaXMgaW4gdGhlIGZpcnN0IDE2S2lCIG9mIFJBTS4KKworNGIuIFNldHVwIHRoZSBkZXZpY2UgdHJlZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgYm9vdCBsb2FkZXIgbXVzdCBsb2FkIGEgZGV2aWNlIHRyZWUgaW1hZ2UgKGR0YikgaW50byBzeXN0ZW0gcmFtCithdCBhIDY0Yml0IGFsaWduZWQgYWRkcmVzcyBhbmQgaW5pdGlhbGl6ZSBpdCB3aXRoIHRoZSBib290IGRhdGEuICBUaGUKK2R0YiBmb3JtYXQgaXMgZG9jdW1lbnRlZCBpbiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYm9vdGluZy13aXRob3V0LW9mLnR4dC4KK1RoZSBrZXJuZWwgd2lsbCBsb29rIGZvciB0aGUgZHRiIG1hZ2ljIHZhbHVlIG9mIDB4ZDAwZGZlZWQgYXQgdGhlIGR0YgorcGh5c2ljYWwgYWRkcmVzcyB0byBkZXRlcm1pbmUgaWYgYSBkdGIgaGFzIGJlZW4gcGFzc2VkIGluc3RlYWQgb2YgYQordGFnZ2VkIGxpc3QuCisKK1RoZSBib290IGxvYWRlciBtdXN0IHBhc3MgYXQgYSBtaW5pbXVtIHRoZSBzaXplIGFuZCBsb2NhdGlvbiBvZiB0aGUKK3N5c3RlbSBtZW1vcnksIGFuZCB0aGUgcm9vdCBmaWxlc3lzdGVtIGxvY2F0aW9uLiAgVGhlIGR0YiBtdXN0IGJlCitwbGFjZWQgaW4gYSByZWdpb24gb2YgbWVtb3J5IHdoZXJlIHRoZSBrZXJuZWwgZGVjb21wcmVzc29yIHdpbGwgbm90CitvdmVyd3JpdGUgaXQsIHdoaWxzdCByZW1haW5pbmcgd2l0aGluIHRoZSByZWdpb24gd2hpY2ggd2lsbCBiZSBjb3ZlcmVkCitieSB0aGUga2VybmVsJ3MgbG93LW1lbW9yeSBtYXBwaW5nLgorCitBIHNhZmUgbG9jYXRpb24gaXMganVzdCBhYm92ZSB0aGUgMTI4TWlCIGJvdW5kYXJ5IGZyb20gc3RhcnQgb2YgUkFNLgorCis1LiBMb2FkIGluaXRyYW1mcy4KKy0tLS0tLS0tLS0tLS0tLS0tLQorCitFeGlzdGluZyBib290IGxvYWRlcnM6CQlPUFRJT05BTAorTmV3IGJvb3QgbG9hZGVyczoJCU9QVElPTkFMCisKK0lmIGFuIGluaXRyYW1mcyBpcyBpbiB1c2UgdGhlbiwgYXMgd2l0aCB0aGUgZHRiLCBpdCBtdXN0IGJlIHBsYWNlZCBpbgorYSByZWdpb24gb2YgbWVtb3J5IHdoZXJlIHRoZSBrZXJuZWwgZGVjb21wcmVzc29yIHdpbGwgbm90IG92ZXJ3cml0ZSBpdAord2hpbGUgYWxzbyB3aXRoIHRoZSByZWdpb24gd2hpY2ggd2lsbCBiZSBjb3ZlcmVkIGJ5IHRoZSBrZXJuZWwncworbG93LW1lbW9yeSBtYXBwaW5nLgorCitBIHNhZmUgbG9jYXRpb24gaXMganVzdCBhYm92ZSB0aGUgZGV2aWNlIHRyZWUgYmxvYiB3aGljaCBpdHNlbGYgd2lsbAorYmUgbG9hZGVkIGp1c3QgYWJvdmUgdGhlIDEyOE1pQiBib3VuZGFyeSBmcm9tIHRoZSBzdGFydCBvZiBSQU0gYXMKK3JlY29tbWVuZGVkIGFib3ZlLgorCis2LiBDYWxsaW5nIHRoZSBrZXJuZWwgaW1hZ2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFeGlzdGluZyBib290IGxvYWRlcnM6CQlNQU5EQVRPUlkKK05ldyBib290IGxvYWRlcnM6CQlNQU5EQVRPUlkKKworVGhlcmUgYXJlIHR3byBvcHRpb25zIGZvciBjYWxsaW5nIHRoZSBrZXJuZWwgekltYWdlLiAgSWYgdGhlIHpJbWFnZQoraXMgc3RvcmVkIGluIGZsYXNoLCBhbmQgaXMgbGlua2VkIGNvcnJlY3RseSB0byBiZSBydW4gZnJvbSBmbGFzaCwKK3RoZW4gaXQgaXMgbGVnYWwgZm9yIHRoZSBib290IGxvYWRlciB0byBjYWxsIHRoZSB6SW1hZ2UgaW4gZmxhc2gKK2RpcmVjdGx5LgorCitUaGUgekltYWdlIG1heSBhbHNvIGJlIHBsYWNlZCBpbiBzeXN0ZW0gUkFNIGFuZCBjYWxsZWQgdGhlcmUuICBUaGUKK2tlcm5lbCBzaG91bGQgYmUgcGxhY2VkIGluIHRoZSBmaXJzdCAxMjhNaUIgb2YgUkFNLiAgSXQgaXMgcmVjb21tZW5kZWQKK3RoYXQgaXQgaXMgbG9hZGVkIGFib3ZlIDMyTWlCIGluIG9yZGVyIHRvIGF2b2lkIHRoZSBuZWVkIHRvIHJlbG9jYXRlCitwcmlvciB0byBkZWNvbXByZXNzaW9uLCB3aGljaCB3aWxsIG1ha2UgdGhlIGJvb3QgcHJvY2VzcyBzbGlnaHRseQorZmFzdGVyLgorCitXaGVuIGJvb3RpbmcgYSByYXcgKG5vbi16SW1hZ2UpIGtlcm5lbCB0aGUgY29uc3RyYWludHMgYXJlIHRpZ2h0ZXIuCitJbiB0aGlzIGNhc2UgdGhlIGtlcm5lbCBtdXN0IGJlIGxvYWRlZCBhdCBhbiBvZmZzZXQgaW50byBzeXN0ZW0gZXF1YWwKK3RvIFRFWFRfT0ZGU0VUIC0gUEFHRV9PRkZTRVQuCisKK0luIGFueSBjYXNlLCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgbXVzdCBiZSBtZXQ6CisKKy0gUXVpZXNjZSBhbGwgRE1BIGNhcGFibGUgZGV2aWNlcyBzbyB0aGF0IG1lbW9yeSBkb2VzIG5vdCBnZXQKKyAgY29ycnVwdGVkIGJ5IGJvZ3VzIG5ldHdvcmsgcGFja2V0cyBvciBkaXNrIGRhdGEuIFRoaXMgd2lsbCBzYXZlCisgIHlvdSBtYW55IGhvdXJzIG9mIGRlYnVnLgorCistIENQVSByZWdpc3RlciBzZXR0aW5ncworICByMCA9IDAsCisgIHIxID0gbWFjaGluZSB0eXBlIG51bWJlciBkaXNjb3ZlcmVkIGluICgzKSBhYm92ZS4KKyAgcjIgPSBwaHlzaWNhbCBhZGRyZXNzIG9mIHRhZ2dlZCBsaXN0IGluIHN5c3RlbSBSQU0sIG9yCisgICAgICAgcGh5c2ljYWwgYWRkcmVzcyBvZiBkZXZpY2UgdHJlZSBibG9jayAoZHRiKSBpbiBzeXN0ZW0gUkFNCisKKy0gQ1BVIG1vZGUKKyAgQWxsIGZvcm1zIG9mIGludGVycnVwdHMgbXVzdCBiZSBkaXNhYmxlZCAoSVJRcyBhbmQgRklRcykKKworICBGb3IgQ1BVcyB3aGljaCBkbyBub3QgaW5jbHVkZSB0aGUgQVJNIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMsIHRoZQorICBDUFUgbXVzdCBiZSBpbiBTVkMgbW9kZS4gIChBIHNwZWNpYWwgZXhjZXB0aW9uIGV4aXN0cyBmb3IgQW5nZWwpCisKKyAgQ1BVcyB3aGljaCBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zIGNhbiBiZQorICBlbnRlcmVkIGluIEhZUCBtb2RlIGluIG9yZGVyIHRvIGVuYWJsZSB0aGUga2VybmVsIHRvIG1ha2UgZnVsbCB1c2Ugb2YKKyAgdGhlc2UgZXh0ZW5zaW9ucy4gIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIGJvb3QgbWV0aG9kIGZvciBzdWNoIENQVXMsCisgIHVubGVzcyB0aGUgdmlydHVhbGlzYXRpb25zIGFyZSBhbHJlYWR5IGluIHVzZSBieSBhIHByZS1pbnN0YWxsZWQKKyAgaHlwZXJ2aXNvci4KKworICBJZiB0aGUga2VybmVsIGlzIG5vdCBlbnRlcmVkIGluIEhZUCBtb2RlIGZvciBhbnkgcmVhc29uLCBpdCBtdXN0IGJlCisgIGVudGVyZWQgaW4gU1ZDIG1vZGUuCisKKy0gQ2FjaGVzLCBNTVVzCisgIFRoZSBNTVUgbXVzdCBiZSBvZmYuCisgIEluc3RydWN0aW9uIGNhY2hlIG1heSBiZSBvbiBvciBvZmYuCisgIERhdGEgY2FjaGUgbXVzdCBiZSBvZmYuCisKKyAgSWYgdGhlIGtlcm5lbCBpcyBlbnRlcmVkIGluIEhZUCBtb2RlLCB0aGUgYWJvdmUgcmVxdWlyZW1lbnRzIGFwcGx5IHRvCisgIHRoZSBIWVAgbW9kZSBjb25maWd1cmF0aW9uIGluIGFkZGl0aW9uIHRvIHRoZSBvcmRpbmFyeSBQTDEgKHByaXZpbGVnZWQKKyAga2VybmVsIG1vZGVzKSBjb25maWd1cmF0aW9uLiAgSW4gYWRkaXRpb24sIGFsbCB0cmFwcyBpbnRvIHRoZQorICBoeXBlcnZpc29yIG11c3QgYmUgZGlzYWJsZWQsIGFuZCBQTDEgYWNjZXNzIG11c3QgYmUgZ3JhbnRlZCBmb3IgYWxsCisgIHBlcmlwaGVyYWxzIGFuZCBDUFUgcmVzb3VyY2VzIGZvciB3aGljaCB0aGlzIGlzIGFyY2hpdGVjdHVyYWxseQorICBwb3NzaWJsZS4gIEV4Y2VwdCBmb3IgZW50ZXJpbmcgaW4gSFlQIG1vZGUsIHRoZSBzeXN0ZW0gY29uZmlndXJhdGlvbgorICBzaG91bGQgYmUgc3VjaCB0aGF0IGEga2VybmVsIHdoaWNoIGRvZXMgbm90IGluY2x1ZGUgc3VwcG9ydCBmb3IgdGhlCisgIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMgY2FuIGJvb3QgY29ycmVjdGx5IHdpdGhvdXQgZXh0cmEgaGVscC4KKworLSBUaGUgYm9vdCBsb2FkZXIgaXMgZXhwZWN0ZWQgdG8gY2FsbCB0aGUga2VybmVsIGltYWdlIGJ5IGp1bXBpbmcKKyAgZGlyZWN0bHkgdG8gdGhlIGZpcnN0IGluc3RydWN0aW9uIG9mIHRoZSBrZXJuZWwgaW1hZ2UuCisKKyAgT24gQ1BVcyBzdXBwb3J0aW5nIHRoZSBBUk0gaW5zdHJ1Y3Rpb24gc2V0LCB0aGUgZW50cnkgbXVzdCBiZQorICBtYWRlIGluIEFSTSBzdGF0ZSwgZXZlbiBmb3IgYSBUaHVtYi0yIGtlcm5lbC4KKworICBPbiBDUFVzIHN1cHBvcnRpbmcgb25seSB0aGUgVGh1bWIgaW5zdHJ1Y3Rpb24gc2V0IHN1Y2ggYXMKKyAgQ29ydGV4LU0gY2xhc3MgQ1BVcywgdGhlIGVudHJ5IG11c3QgYmUgbWFkZSBpbiBUaHVtYiBzdGF0ZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJtL0NDTi50eHQgYi9Eb2N1bWVudGF0aW9uL2FybS9DQ04udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmY2E0NDMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9DQ04udHh0CkBAIC0wLDAgKzEsNTUgQEAKK0FSTSBDYWNoZSBDb2hlcmVudCBOZXR3b3JrCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitDQ04tNTA0IGlzIGEgcmluZy1idXMgaW50ZXJjb25uZWN0IGNvbnNpc3Rpbmcgb2YgMTEgY3Jvc3Nwb2ludHMKKyhYUHMpLCB3aXRoIGVhY2ggY3Jvc3Nwb2ludCBzdXBwb3J0aW5nIHVwIHRvIHR3byBkZXZpY2UgcG9ydHMsCitzbyBub2RlcyAoZGV2aWNlcykgMCBhbmQgMSBhcmUgY29ubmVjdGVkIHRvIGNyb3NzcG9pbnQgMCwKK25vZGVzIDIgYW5kIDMgdG8gY3Jvc3Nwb2ludCAxIGV0Yy4KKworUE1VIChwZXJmKSBkcml2ZXIKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBDQ04gZHJpdmVyIHJlZ2lzdGVycyBhIHBlcmYgUE1VIGRyaXZlciwgd2hpY2ggcHJvdmlkZXMKK2Rlc2NyaXB0aW9uIG9mIGF2YWlsYWJsZSBldmVudHMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucworaW4gc3lzZnMsIHNlZSAvc3lzL2J1cy9ldmVudF9zb3VyY2UvZGV2aWNlcy9jY24qLgorCitUaGUgImZvcm1hdCIgZGlyZWN0b3J5IGRlc2NyaWJlcyBmb3JtYXQgb2YgdGhlIGNvbmZpZywgY29uZmlnMQorYW5kIGNvbmZpZzIgZmllbGRzIG9mIHRoZSBwZXJmX2V2ZW50X2F0dHIgc3RydWN0dXJlLiBUaGUgImV2ZW50cyIKK2RpcmVjdG9yeSBwcm92aWRlcyBjb25maWd1cmF0aW9uIHRlbXBsYXRlcyBmb3IgYWxsIGRvY3VtZW50ZWQKK2V2ZW50cywgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIHBlcmYgdG9vbC4gRm9yIGV4YW1wbGUgInhwX3ZhbGlkX2ZsaXQiCitpcyBhbiBlcXVpdmFsZW50IG9mICJ0eXBlPTB4OCxldmVudD0weDQiLiBPdGhlciBwYXJhbWV0ZXJzIG11c3QgYmUKK2V4cGxpY2l0bHkgc3BlY2lmaWVkLiBGb3IgZXZlbnRzIG9yaWdpbmF0aW5nIGZyb20gZGV2aWNlLCAibm9kZSIKK2RlZmluZXMgaXRzIGluZGV4LiBBbGwgY3Jvc3Nwb2ludCBldmVudHMgcmVxdWlyZSAieHAiIChpbmRleCksCisicG9ydCIgKGRldmljZSBwb3J0IG51bWJlcikgYW5kICJ2YyIgKHZpcnR1YWwgY2hhbm5lbCBJRCkgYW5kCisiZGlyIiAoZGlyZWN0aW9uKS4gV2F0Y2hwb2ludHMgKHNwZWNpYWwgImV2ZW50IiB2YWx1ZSAweGZlKSBhbHNvCityZXF1aXJlIGNvbXBhcmF0b3IgdmFsdWVzICgiY21wX2wiIGFuZCAiY21wX2giKSBhbmQgIm1hc2siLCBiZWluZworaW5kZXggb2YgdGhlIGNvbXBhcmF0b3IgbWFzay4KKworTWFza3MgYXJlIGRlZmluZWQgc2VwYXJhdGVseSBmcm9tIHRoZSBldmVudCBkZXNjcmlwdGlvbgorKGR1ZSB0byBsaW1pdGVkIG51bWJlciBvZiB0aGUgY29uZmlnIHZhbHVlcykgaW4gdGhlICJjbXBfbWFzayIKK2RpcmVjdG9yeSwgd2l0aCBmaXJzdCA4IGNvbmZpZ3VyYWJsZSBieSB1c2VyIGFuZCBhZGRpdGlvbmFsCis0IGhhcmRjb2RlZCBmb3IgdGhlIG1vc3QgZnJlcXVlbnQgdXNlIGNhc2VzLgorCitDeWNsZSBjb3VudGVyIGlzIGRlc2NyaWJlZCBieSBhICJ0eXBlIiB2YWx1ZSAweGZmIGFuZCBkb2VzCitub3QgcmVxdWlyZSBhbnkgb3RoZXIgc2V0dGluZ3MuCisKK1RoZSBkcml2ZXIgYWxzbyBwcm92aWRlcyBhICJjcHVtYXNrIiBzeXNmcyBhdHRyaWJ1dGUsIHdoaWNoIGNvbnRhaW5zCithIHNpbmdsZSBDUFUgSUQsIG9mIHRoZSBwcm9jZXNzb3Igd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGhhbmRsZSBhbGwKK3RoZSBDQ04gUE1VIGV2ZW50cy4gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGUgdXNlciBzcGFjZSB0b29scworcmVxdWVzdCB0aGUgZXZlbnRzIG9uIHRoaXMgcHJvY2Vzc29yIChpZiBub3QsIHRoZSBwZXJmX2V2ZW50LT5jcHUgdmFsdWUKK3dpbGwgYmUgb3ZlcndyaXR0ZW4gYW55d2F5KS4gSW4gY2FzZSBvZiB0aGlzIHByb2Nlc3NvciBiZWluZyBvZmZsaW5lZCwKK3RoZSBldmVudHMgYXJlIG1pZ3JhdGVkIHRvIGFub3RoZXIgb25lIGFuZCB0aGUgYXR0cmlidXRlIGlzIHVwZGF0ZWQuCisKK0V4YW1wbGUgb2YgcGVyZiB0b29sIHVzZToKKworLyAjIHBlcmYgbGlzdCB8IGdyZXAgY2NuCisgIGNjbi9jeWNsZXMvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtLZXJuZWwgUE1VIGV2ZW50XQorPC4uLj4KKyAgY2NuL3hwX3ZhbGlkX2ZsaXQseHA9Pyxwb3J0PT8sdmM9PyxkaXI9Py8gICAgICAgICAgW0tlcm5lbCBQTVUgZXZlbnRdCis8Li4uPgorCisvICMgcGVyZiBzdGF0IC1hIC1lIGNjbi9jeWNsZXMvLGNjbi94cF92YWxpZF9mbGl0LHhwPTEscG9ydD0wLHZjPTEsZGlyPTEvIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xlZXAgMQorCitUaGUgZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQgc2FtcGxpbmcsIHRoZXJlZm9yZSAicGVyZiByZWNvcmQiIHdpbGwKK25vdCB3b3JrLiBQZXItdGFzayAod2l0aG91dCAiLWEiKSBwZXJmIHNlc3Npb25zIGFyZSBub3Qgc3VwcG9ydGVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vSVhQNHh4IGIvRG9jdW1lbnRhdGlvbi9hcm0vSVhQNHh4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0OGI3NGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9JWFA0eHgKQEAgLTAsMCArMSwxNzIgQEAKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUmVsZWFzZSBOb3RlcyBmb3IgTGludXggb24gSW50ZWwncyBJWFA0eHggTmV0d29yayBQcm9jZXNzb3IKKworTWFpbnRhaW5lZCBieSBEZWVwYWsgU2F4ZW5hIDxkc2F4ZW5hQHBsZXhpdHkubmV0PgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisxLiBPdmVydmlldworCitJbnRlbCdzIElYUDR4eCBuZXR3b3JrIHByb2Nlc3NvciBpcyBhIGhpZ2hseSBpbnRlZ3JhdGVkIFNPQyB0aGF0CitpcyB0YXJnZXRlZCBmb3IgbmV0d29yayBhcHBsaWNhdGlvbnMsIHRob3VnaCBpdCBoYXMgYmVjb21lIHBvcHVsYXIgCitpbiBpbmR1c3RyaWFsIGNvbnRyb2wgYW5kIG90aGVyIGFyZWFzIGR1ZSB0byBsb3cgY29zdCBhbmQgcG93ZXIKK2NvbnN1bXB0aW9uLiBUaGUgSVhQNHh4IGZhbWlseSBjdXJyZW50bHkgY29uc2lzdHMgb2Ygc2V2ZXJhbCBwcm9jZXNzb3JzCit0aGF0IHN1cHBvcnQgZGlmZmVyZW50IG5ldHdvcmsgb2ZmbG9hZCBmdW5jdGlvbnMgc3VjaCBhcyBlbmNyeXB0aW9uLAorcm91dGluZywgZmlyZXdhbGxpbmcsIGV0Yy4gVGhlIElYUDQ2eCBmYW1pbHkgaXMgYW4gdXBkYXRlZCB2ZXJzaW9uIHdoaWNoCitzdXBwb3J0cyBmYXN0ZXIgc3BlZWRzLCBuZXcgbWVtb3J5IGFuZCBmbGFzaCBjb25maWd1cmF0aW9ucywgYW5kIG1vcmUKK2ludGVncmF0aW9uIHN1Y2ggYXMgYW4gb24tY2hpcCBJMkMgY29udHJvbGxlci4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHZhcmlvdXMgdmVyc2lvbnMgb2YgdGhlIENQVSwgc2VlOgorCisgICBodHRwOi8vZGV2ZWxvcGVyLmludGVsLmNvbS9kZXNpZ24vbmV0d29yay9wcm9kdWN0cy9ucGZhbWlseS9peHA0eHguaHRtCisKK0ludGVsIGFsc28gbWFkZSB0aGUgSVhDUDExMDAgQ1BVIGZvciBzb21ldGltZSB3aGljaCBpcyBhbiBJWFA0eHggCitzdHJpcHBlZCBvZiBtdWNoIG9mIHRoZSBuZXR3b3JrIGludGVsbGlnZW5jZS4KKworMi4gTGludXggU3VwcG9ydAorCitMaW51eCBjdXJyZW50bHkgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBmZWF0dXJlcyBvbiB0aGUgSVhQNHh4IGNoaXBzOgorCistIER1YWwgc2VyaWFsIHBvcnRzCistIFBDSSBpbnRlcmZhY2UKKy0gRmxhc2ggYWNjZXNzIChNVEQvSkZGUykKKy0gSTJDIHRocm91Z2ggR1BJTyBvbiBJWFA0MngKKy0gR1BJTyBmb3IgaW5wdXQvb3V0cHV0L2ludGVycnVwdHMgCisgIFNlZSBhcmNoL2FybS9tYWNoLWl4cDR4eC9pbmNsdWRlL21hY2gvcGxhdGZvcm0uaCBmb3IgYWNjZXNzIGZ1bmN0aW9ucy4KKy0gVGltZXJzICh3YXRjaGRvZywgT1MpCisKK1RoZSBmb2xsb3dpbmcgY29tcG9uZW50cyBvZiB0aGUgY2hpcHMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgTGludXggYW5kCityZXF1aXJlIHRoZSB1c2Ugb2YgSW50ZWwncyBwcm9wcmlldGFyeSBDU1Igc29mdHdhcmU6CisKKy0gVVNCIGRldmljZSBpbnRlcmZhY2UKKy0gTmV0d29yayBpbnRlcmZhY2VzIChIU1MsIFV0b3BpYSwgTlBFcywgZXRjKQorLSBOZXR3b3JrIG9mZmxvYWQgZnVuY3Rpb25hbGl0eQorCitJZiB5b3UgbmVlZCB0byB1c2UgYW55IG9mIHRoZSBhYm92ZSwgeW91IG5lZWQgdG8gZG93bmxvYWQgSW50ZWwncworc29mdHdhcmUgZnJvbToKKworICAgaHR0cDovL2RldmVsb3Blci5pbnRlbC5jb20vZGVzaWduL25ldHdvcmsvcHJvZHVjdHMvbnBmYW1pbHkvaXhwNDI1Lmh0bSAgICAKKworRE8gTk9UIFBPU1QgUVVFU1RJT05TIFRPIFRIRSBMSU5VWCBNQUlMSU5HIExJU1RTIFJFR0FSRElORyBUSEUgUFJPUFJJRVRBUlkKK1NPRlRXQVJFLgorCitUaGVyZSBhcmUgc2V2ZXJhbCB3ZWJzaXRlcyB0aGF0IHByb3ZpZGUgZGlyZWN0aW9ucy9wb2ludGVycyBvbiB1c2luZworSW50ZWwncyBzb2Z0d2FyZToKKworICAgaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9peHA0eHgtb3NkZy8KKyAgIE9wZW4gU291cmNlIERldmVsb3BlcidzIEd1aWRlIGZvciB1c2luZyB1Q2xpbnV4IGFuZCB0aGUgSW50ZWwgbGlicmFyaWVzIAorCitodHRwOi8vZ2F0ZXdheW1ha2VyLnNvdXJjZWZvcmdlLm5ldC8gCisgICBTaW1wbGUgb25lIHBhZ2Ugc3VtbWFyeSBvZiBidWlsZGluZyBhIGdhdGV3YXkgdXNpbmcgYW4gSVhQNDI1IGFuZCBMaW51eAorCitodHRwOi8vaXhwNDI1LnNvdXJjZWZvcmdlLm5ldC8KKyAgIEFUTSBkZXZpY2UgZHJpdmVyIGZvciBJWFA0MjUgdGhhdCByZWxpZXMgb24gSW50ZWwncyBsaWJyYXJpZXMKKworMy4gS25vd24gSXNzdWVzL0xpbWl0YXRpb25zCisKKzNhLiBMaW1pdGVkIGluYm91bmQgUENJIHdpbmRvdworCitUaGUgSVhQNHh4IGZhbWlseSBhbGxvd3MgZm9yIHVwIHRvIDI1Nk1CIG9mIG1lbW9yeSBidXQgdGhlIFBDSSBpbnRlcmZhY2UKK2NhbiBvbmx5IGV4cG9zZSA2NE1CIG9mIHRoYXQgbWVtb3J5IHRvIHRoZSBQQ0kgYnVzLiBUaGlzIG1lYW5zIHRoYXQgaWYKK3lvdSBhcmUgcnVubmluZyB3aXRoID4gNjRNQiwgYWxsIFBDSSBidWZmZXJzIG91dHNpZGUgb2YgdGhlIGFjY2Vzc2libGUKK3JhbmdlIHdpbGwgYmUgYm91bmNlZCB1c2luZyB0aGUgcm91dGluZXMgaW4gYXJjaC9hcm0vY29tbW9uL2RtYWJvdW5jZS5jLgorICAgCiszYi4gTGltaXRlZCBvdXRib3VuZCBQQ0kgd2luZG93CisKK0lYUDR4eCBwcm92aWRlcyB0d28gbWV0aG9kcyBvZiBhY2Nlc3NpbmcgUENJIG1lbW9yeSBzcGFjZToKKworMSkgQSBkaXJlY3QgbWFwcGVkIHdpbmRvdyBmcm9tIDB4NDgwMDAwMDAgdG8gMHg0YmZmZmZmZiAoNjRNQikuCisgICBUbyBhY2Nlc3MgUENJIHZpYSB0aGlzIHNwYWNlLCB3ZSBzaW1wbHkgaW9yZW1hcCgpIHRoZSBCQVIKKyAgIGludG8gdGhlIGtlcm5lbCBhbmQgd2UgY2FuIHVzZSB0aGUgc3RhbmRhcmQgcmVhZFtid2xdL3dyaXRlW2J3bF0KKyAgIG1hY3Jvcy4gVGhpcyBpcyB0aGUgcHJlZmZlcmVkIG1ldGhvZCBkdWUgdG8gc3BlZWQgYnV0IGl0CisgICBsaW1pdHMgdGhlIHN5c3RlbSB0byBqdXN0IDY0TUIgb2YgUENJIG1lbW9yeS4gVGhpcyBjYW4gYmUgCisgICBwcm9ibGFtYXRpYyBpZiB1c2luZyB2aWRlbyBjYXJkcyBhbmQgb3RoZXIgbWVtb3J5LWhlYXZ5IGRldmljZXMuCisgICAgICAgICAgCisyKSBJZiA+IDY0TUIgb2YgbWVtb3J5IHNwYWNlIGlzIHJlcXVpcmVkLCB0aGUgSVhQNHh4IGNhbiBiZSAKKyAgIGNvbmZpZ3VyZWQgdG8gdXNlIGluZGlyZWN0IHJlZ2lzdGVycyB0byBhY2Nlc3MgUENJIFRoaXMgYWxsb3dzIAorICAgZm9yIHVwIHRvIDEyOE1CICgweDQ4MDAwMDAwIHRvIDB4NGZmZmZmZmYpIG9mIG1lbW9yeSBvbiB0aGUgYnVzLiAKKyAgIFRoZSBkaXNhZHZhbnRhZ2Ugb2YgdGhpcyBpcyB0aGF0IGV2ZXJ5IFBDSSBhY2Nlc3MgcmVxdWlyZXMgCisgICB0aHJlZSBsb2NhbCByZWdpc3RlciBhY2Nlc3NlcyBwbHVzIGEgc3BpbmxvY2ssIGJ1dCBpbiBzb21lIAorICAgY2FzZXMgdGhlIHBlcmZvcm1hbmNlIGhpdCBpcyBhY2NlcHRhYmxlLiBJbiBhZGRpdGlvbiwgeW91IGNhbm5vdCAKKyAgIG1tYXAoKSBQQ0kgZGV2aWNlcyBpbiB0aGlzIGNhc2UgZHVlIHRvIHRoZSBpbmRpcmVjdCBuYXR1cmUKKyAgIG9mIHRoZSBQQ0kgd2luZG93LgorCitCeSBkZWZhdWx0LCB0aGUgZGlyZWN0IG1ldGhvZCBpcyB1c2VkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiBJZgoreW91IG5lZWQgbW9yZSBQQ0kgbWVtb3J5LCBlbmFibGUgdGhlIElYUDRYWF9JTkRJUkVDVF9QQ0kgY29uZmlnIG9wdGlvbi4KKworM2MuIEdQSU8gYXMgSW50ZXJydXB0cworCitDdXJyZW50bHkgdGhlIGNvZGUgb25seSBoYW5kbGVzIGxldmVsLXNlbnNpdGl2ZSBHUElPIGludGVycnVwdHMgCisKKzQuIFN1cHBvcnRlZCBwbGF0Zm9ybXMKKworQURJIEVuZ2luZWVyaW5nIENveW90ZSBHYXRld2F5IFJlZmVyZW5jZSBQbGF0Zm9ybQoraHR0cDovL3d3dy5hZGllbmdpbmVlcmluZy5jb20vcHJvZHVjdHNDb3lvdGUuaHRtbAorCisgICBUaGUgQURJIENveW90ZSBwbGF0Zm9ybSBpcyByZWZlcmVuY2UgZGVzaWduIGZvciB0aG9zZSBidWlsZGluZyAKKyAgIHNtYWxsIHJlc2lkZW50aWFsL29mZmljZSBnYXRld2F5cy4gT25lIE5QRSBpcyBjb25uZWN0ZWQgdG8gYSAxMC8xMDAKKyAgIGludGVyZmFjZSwgb25lIHRvIDQtcG9ydCAxMC8xMDAgc3dpdGNoLCBhbmQgdGhlIHRoaXJkIHRvIGFuZCBBRFNMCisgICBpbnRlcmZhY2UuIEluIGFkZGl0aW9uLCBpdCBhbHNvIHN1cHBvcnRzIHRvIFBPVHMgaW50ZXJmYWNlcyBjb25uZWN0ZWQKKyAgIHZpYSBTTElDcy4gTm90ZSB0aGF0IHRob3NlIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IExpbnV4IEFUTS4gRmluYWxseSwKKyAgIHRoZSBwbGF0Zm9ybSBoYXMgdHdvIG1pbmktUENJIHNsb3RzIHVzZWQgZm9yIDgwMi4xMVtiZ2FdIGNhcmRzLgorICAgRmluYWxseSwgdGhlcmUgaXMgYW4gSURFIHBvcnQgaGFuZ2luZyBvZmYgdGhlIGV4cGFuc2lvbiBidXMuCisKK0dhdGV3b3JrcyBBdmlsYSBOZXR3b3JrIFBsYXRmb3JtCitodHRwOi8vd3d3LmdhdGV3b3Jrcy5jb20vc3VwcG9ydC9vdmVydmlldy5waHAKKworICAgVGhlIEF2aWxhIHBsYXRmb3JtIGlzIGJhc2ljYWxseSBhbmQgSVhEUDQyNSB3aXRoIHRoZSA0IFBDSSBzbG90cworICAgcmVwbGFjZWQgd2l0aCBtaW5pLVBDSSBzbG90cyBhbmQgYSBDRiBJREUgaW50ZXJmYWNlIGhhbmdpbmcgb2ZmCisgICB0aGUgZXhwYW5zaW9uIGJ1cy4KKworSW50ZWwgSVhEUDQyNSBEZXZlbG9wbWVudCBQbGF0Zm9ybQoraHR0cDovL3d3dy5pbnRlbC5jb20vZGVzaWduL25ldHdvcmsvcHJvZHVjdHMvbnBmYW1pbHkvaXhkcGc0MjUuaHRtICAKKworICAgVGhpcyBpcyBJbnRlbCdzIHN0YW5kYXJkIHJlZmVyZW5jZSBwbGF0Zm9ybSBmb3IgdGhlIElYRFA0MjUgYW5kIGlzIAorICAgYWxzbyBrbm93biBhcyB0aGUgUmljaGZpZWxkIGJvYXJkLiBJdCBjb250YWlucyA0IFBDSSBzbG90cywgMTZNQgorICAgb2YgZmxhc2gsIHR3byAxMC8xMDAgcG9ydHMgYW5kIG9uZSBBRFNMIHBvcnQuCisKK0ludGVsIElYRFA0NjUgRGV2ZWxvcG1lbnQgUGxhdGZvcm0KK2h0dHA6Ly93d3cuaW50ZWwuY29tL2Rlc2lnbi9uZXR3b3JrL3Byb2R1Y3RzL25wZmFtaWx5L2l4ZHA0NjUuaHRtCisKKyAgIFRoaXMgaXMgYmFzaWNhbGx5IGFuIElYRFA0MjUgd2l0aCBhbiBJWFA0NjUgYW5kIDMyTSBvZiBmbGFzaCBpbnN0ZWFkCisgICBvZiBqdXN0IDE2LgorCitJbnRlbCBJWERQRzQyNSBEZXZlbG9wbWVudCBQbGF0Zm9ybQorCisgICBUaGlzIGlzIGJhc2ljYWxseSBhbmQgQURJIENveW90ZSBib2FyZCB3aXRoIGEgTkVDIEVIQ0kgY29udHJvbGxlcgorICAgYWRkZWQuIE9uZSBpc3N1ZSB3aXRoIHRoaXMgYm9hcmQgaXMgdGhhdCB0aGUgbWluaS1QQ0kgc2xvdHMgb25seQorICAgaGF2ZSB0aGUgMy4zdiBsaW5lIGNvbm5lY3RlZCwgc28geW91IGNhbid0IHVzZSBhIFBDSSB0byBtaW5pLVBDSQorICAgYWRhcHRlciB3aXRoIGFuIEUxMDAgY2FyZC4gU28gdG8gTkZTIHJvb3QgeW91IG5lZWQgdG8gdXNlIGVpdGhlcgorICAgdGhlIENTUiBvciBhIFdpRmkgY2FyZCBhbmQgYSByYW1kaXNrIHRoYXQgQk9PVFBzIGFuZCB0aGVuIGRvZXMKKyAgIGEgcGl2b3Rfcm9vdCB0byBORlMuCisKK01vdG9yb2xhIFByUE1DMTEwMCBQcm9jZXNzb3IgTWV6YW5pbmUgQ2FyZAoraHR0cDovL3d3dy5mb3VudGFpbnN5cy5jb20KKworICAgVGhlIFByUE1DMTEwMCBpcyBiYXNlZCBvbiB0aGUgSVhDUDExMDAgYW5kIGlzIG1lYW50IHRvIHBsdWcgaW50bworICAgYW5kIElYUDI0MDAvMjgwMCBzeXN0ZW0gdG8gYWN0IGFzIHRoZSBzeXN0ZW0gY29udHJvbGxlci4gSXQgc2ltcGx5CisgICBjb250YWlucyBhIENQVSBhbmQgMTZNQiBvZiBmbGFzaCBvbiB0aGUgYm9hcmQgYW5kIG5lZWRzIHRvIGJlCisgICBwbHVnZ2VkIGludG8gYSBjYXJyaWVyIGJvYXJkIHRvIGZ1bmN0aW9uLiBDdXJyZW50bHkgTGludXggb25seQorICAgc3VwcG9ydHMgdGhlIE1vdG9yb2xhIFByUE1DIGNhcnJpZXIgYm9hcmQgZm9yIHRoaXMgcGxhdGZvcm0uCisKKzUuIFRPRE8gTElTVAorCistIEFkZCBzdXBwb3J0IGZvciBDb3lvdGUgSURFCistIEFkZCBzdXBwb3J0IGZvciBlZGdlLWJhc2VkIEdQSU8gaW50ZXJydXB0cworLSBBZGQgc3VwcG9ydCBmb3IgQ0YgSURFIG9uIGV4cGFuc2lvbiBidXMKKworNi4gVGhhbmtzCisKK1RoZSBJWFA0eHggd29yayBoYXMgYmVlbiBmdW5kZWQgYnkgSW50ZWwgQ29ycC4gYW5kIE1vbnRhVmlzdGEgU29mdHdhcmUsIEluYy4KKworVGhlIGZvbGxvd2luZyBwZW9wbGUgaGF2ZSBjb250cmlidXRlZCBwYXRjaGVzL2NvbW1lbnRzL2V0YzoKKworTGVubmVydHkgQnV5dGVuaGVrCitMdXR6IEphZW5pY2tlCitKdXN0aW4gTWF5ZmllbGQKK1JvYmVydCBFLiBSYW5zbGFtCitbSSBrbm93IEkndmUgZm9yZ290dGVuIG90aGVycywgcGxlYXNlIGVtYWlsIG1lIHRvIGJlIGFkZGVkXSAKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitMYXN0IFVwZGF0ZTogMDEvMDQvMjAwNQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vSW50ZXJydXB0cyBiL0RvY3VtZW50YXRpb24vYXJtL0ludGVycnVwdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA5YWIxYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL0ludGVycnVwdHMKQEAgLTAsMCArMSwxNjcgQEAKKzIuNS4yLXJtazUKKy0tLS0tLS0tLS0KKworVGhpcyBpcyB0aGUgZmlyc3Qga2VybmVsIHRoYXQgY29udGFpbnMgYSBtYWpvciBzaGFrZSB1cCBvZiBzb21lIG9mIHRoZQorbWFqb3IgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHN1YnN5c3RlbXMuCisKK0ZpcnN0bHksIGl0IGNvbnRhaW5zIHNvbWUgcHJldHR5IG1ham9yIGNoYW5nZXMgdG8gdGhlIHdheSB3ZSBoYW5kbGUgdGhlCitNTVUgVExCLiAgRWFjaCBNTVUgVExCIHZhcmlhbnQgaXMgbm93IGhhbmRsZWQgY29tcGxldGVseSBzZXBhcmF0ZWx5IC0KK3dlIGhhdmUgVExCIHYzLCBUTEIgdjQgKHdpdGhvdXQgd3JpdGUgYnVmZmVyKSwgVExCIHY0ICh3aXRoIHdyaXRlIGJ1ZmZlciksCithbmQgZmluYWxseSBUTEIgdjQgKHdpdGggd3JpdGUgYnVmZmVyLCB3aXRoIEkgVExCIGludmFsaWRhdGUgZW50cnkpLgorVGhlcmUgaXMgbW9yZSBhc3NlbWJseSBjb2RlIGluc2lkZSBlYWNoIG9mIHRoZXNlIGZ1bmN0aW9ucywgbWFpbmx5IHRvCithbGxvdyBtb3JlIGZsZXhpYmxlIFRMQiBoYW5kbGluZyBmb3IgdGhlIGZ1dHVyZS4KKworU2Vjb25kbHksIHRoZSBJUlEgc3Vic3lzdGVtLgorCitUaGUgMi41IGtlcm5lbHMgd2lsbCBiZSBoYXZpbmcgbWFqb3IgY2hhbmdlcyB0byB0aGUgd2F5IElSUXMgYXJlIGhhbmRsZWQuCitVbmZvcnR1bmF0ZWx5LCB0aGlzIG1lYW5zIHRoYXQgbWFjaGluZSB0eXBlcyB0aGF0IHRvdWNoIHRoZSBpcnFfZGVzY1tdCithcnJheSAoYmFzaWNhbGx5IGFsbCBtYWNoaW5lIHR5cGVzKSB3aWxsIGJyZWFrLCBhbmQgdGhpcyBtZWFucyBldmVyeQorbWFjaGluZSB0eXBlIHRoYXQgd2UgY3VycmVudGx5IGhhdmUuCisKK0xldHMgdGFrZSBhbiBleGFtcGxlLiAgT24gdGhlIEFzc2FiZXQgd2l0aCBOZXBvbnNldCwgd2UgaGF2ZToKKworICAgICAgICAgICAgICAgICAgR1BJTzI1ICAgICAgICAgICAgICAgICBJUlI6MgorICAgICAgICBTQTExMDAgLS0tLS0tLS0tLS0tPiBOZXBvbnNldCAtLS0tLS0tLS0tLT4gU0ExMTExCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElJUjoxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tPiBVU0FSCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElJUjowCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tPiBTTUM5MTk2CisKK1RoZSB3YXkgc3R1ZmYgY3VycmVudGx5IHdvcmtzLCBhbGwgU0ExMTExIGludGVycnVwdHMgYXJlIG11dHVhbGx5CitleGNsdXNpdmUgb2YgZWFjaCBvdGhlciAtIGlmIHlvdSdyZSBwcm9jZXNzaW5nIG9uZSBpbnRlcnJ1cHQgZnJvbSB0aGUKK1NBMTExMSBhbmQgYW5vdGhlciBjb21lcyBpbiwgeW91IGhhdmUgdG8gd2FpdCBmb3IgdGhhdCBpbnRlcnJ1cHQgdG8KK2ZpbmlzaCBwcm9jZXNzaW5nIGJlZm9yZSB5b3UgY2FuIHNlcnZpY2UgdGhlIG5ldyBpbnRlcnJ1cHQuICBFZywgYW4KK0lERSBQSU8tYmFzZWQgaW50ZXJydXB0IG9uIHRoZSBTQTExMTEgZXhjbHVkZXMgYWxsIG90aGVyIFNBMTExMSBhbmQKK1NNQzkxOTYgaW50ZXJydXB0cyB1bnRpbCBpdCBoYXMgZmluaXNoZWQgdHJhbnNmZXJyaW5nIGl0cyBtdWx0aS1zZWN0b3IKK2RhdGEsIHdoaWNoIGNhbiBiZSBhIGxvbmcgdGltZS4gIE5vdGUgYWxzbyB0aGF0IHNpbmNlIHdlIGxvb3AgaW4gdGhlCitTQTExMTEgSVJRIGhhbmRsZXIsIFNBMTExMSBJUlFzIGNhbiBob2xkIG9mZiBTTUM5MTk2IElSUXMgaW5kZWZpbml0ZWx5LgorCisKK1RoZSBuZXcgYXBwcm9hY2ggYnJpbmdzIHNldmVyYWwgbmV3IGlkZWFzLi4uCisKK1dlIGludHJvZHVjZSB0aGUgY29uY2VwdCBvZiBhICJwYXJlbnQiIGFuZCBhICJjaGlsZCIuICBGb3IgZXhhbXBsZSwKK3RvIHRoZSBOZXBvbnNldCBoYW5kbGVyLCB0aGUgInBhcmVudCIgaXMgR1BJTzI1LCBhbmQgdGhlICJjaGlsZHJlbiJkCithcmUgU0ExMTExLCBTTUM5MTk2IGFuZCBVU0FSLgorCitXZSBhbHNvIGJyaW5nIHRoZSBpZGVhIG9mIGFuIElSUSAiY2hpcCIgKG1haW5seSB0byByZWR1Y2UgdGhlIHNpemUgb2YKK3RoZSBpcnFkZXNjIGFycmF5KS4gIFRoaXMgZG9lc24ndCBoYXZlIHRvIGJlIGEgcmVhbCAiSUMiOyBpbmRlZWQgdGhlCitTQTExeDAgSVJRcyBhcmUgaGFuZGxlZCBieSB0d28gc2VwYXJhdGUgImNoaXAiIHN0cnVjdHVyZXMsIG9uZSBmb3IKK0dQSU8wLTEwLCBhbmQgYW5vdGhlciBmb3IgYWxsIHRoZSByZXN0LiAgSXQgaXMganVzdCBhIGNvbnRhaW5lciBmb3IKK3RoZSB2YXJpb3VzIG9wZXJhdGlvbnMgKG1heWJlIHRoaXMnbGwgY2hhbmdlIHRvIGEgYmV0dGVyIG5hbWUpLgorVGhpcyBzdHJ1Y3R1cmUgaGFzIHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9uczoKKworc3RydWN0IGlycWNoaXAgeworICAgICAgICAvKgorICAgICAgICAgKiBBY2tub3dsZWRnZSB0aGUgSVJRLgorICAgICAgICAgKiBJZiB0aGlzIGlzIGEgbGV2ZWwtYmFzZWQgSVJRLCB0aGVuIGl0IGlzIGV4cGVjdGVkIHRvIG1hc2sgdGhlIElSUQorICAgICAgICAgKiBhcyB3ZWxsLgorICAgICAgICAgKi8KKyAgICAgICAgdm9pZCAoKmFjaykodW5zaWduZWQgaW50IGlycSk7CisgICAgICAgIC8qCisgICAgICAgICAqIE1hc2sgdGhlIElSUSBpbiBoYXJkd2FyZS4KKyAgICAgICAgICovCisgICAgICAgIHZvaWQgKCptYXNrKSh1bnNpZ25lZCBpbnQgaXJxKTsKKyAgICAgICAgLyoKKyAgICAgICAgICogVW5tYXNrIHRoZSBJUlEgaW4gaGFyZHdhcmUuCisgICAgICAgICAqLworICAgICAgICB2b2lkICgqdW5tYXNrKSh1bnNpZ25lZCBpbnQgaXJxKTsKKyAgICAgICAgLyoKKyAgICAgICAgICogUmUtcnVuIHRoZSBJUlEKKyAgICAgICAgICovCisgICAgICAgIHZvaWQgKCpyZXJ1bikodW5zaWduZWQgaW50IGlycSk7CisgICAgICAgIC8qCisgICAgICAgICAqIFNldCB0aGUgdHlwZSBvZiB0aGUgSVJRLgorICAgICAgICAgKi8KKyAgICAgICAgaW50ICgqdHlwZSkodW5zaWduZWQgaW50IGlycSwgdW5zaWduZWQgaW50LCB0eXBlKTsKK307CisKK2FjayAgICAtIHJlcXVpcmVkLiAgTWF5IGJlIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIG1hc2sgZm9yIElSUXMKKyAgICAgICAgIGhhbmRsZWQgYnkgZG9fbGV2ZWxfSVJRLgorbWFzayAgIC0gcmVxdWlyZWQuCit1bm1hc2sgLSByZXF1aXJlZC4KK3JlcnVuICAtIG9wdGlvbmFsLiAgTm90IHJlcXVpcmVkIGlmIHlvdSdyZSB1c2luZyBkb19sZXZlbF9JUlEgZm9yIGFsbAorICAgICAgICAgSVJRcyB0aGF0IHVzZSB0aGlzICdpcnFjaGlwJy4gIEdlbmVyYWxseSBleHBlY3RlZCB0byByZS10cmlnZ2VyCisgICAgICAgICB0aGUgaGFyZHdhcmUgSVJRIGlmIHBvc3NpYmxlLiAgSWYgbm90LCBtYXkgY2FsbCB0aGUgaGFuZGxlcgorCSBkaXJlY3RseS4KK3R5cGUgICAtIG9wdGlvbmFsLiAgSWYgeW91IGRvbid0IHN1cHBvcnQgY2hhbmdpbmcgdGhlIHR5cGUgb2YgYW4gSVJRLAorICAgICAgICAgaXQgc2hvdWxkIGJlIG51bGwgc28gcGVvcGxlIGNhbiBkZXRlY3QgaWYgdGhleSBhcmUgdW5hYmxlIHRvCisgICAgICAgICBzZXQgdGhlIElSUSB0eXBlLgorCitGb3IgZWFjaCBJUlEsIHdlIGtlZXAgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjoKKworICAgICAgICAtICJkaXNhYmxlIiBkZXB0aCAobnVtYmVyIG9mIGRpc2FibGVfaXJxKClzIHdpdGhvdXQgZW5hYmxlX2lycSgpcykKKyAgICAgICAgLSBmbGFncyBpbmRpY2F0aW5nIHdoYXQgd2UgY2FuIGRvIHdpdGggdGhpcyBJUlEgKHZhbGlkLCBwcm9iZSwKKyAgICAgICAgICBub2F1dG91bm1hc2spIGFzIGJlZm9yZQorICAgICAgICAtIHN0YXR1cyBvZiB0aGUgSVJRIChwcm9iaW5nLCBlbmFibGUsIGV0YykKKyAgICAgICAgLSBjaGlwCisgICAgICAgIC0gcGVyLUlSUSBoYW5kbGVyCisgICAgICAgIC0gaXJxYWN0aW9uIHN0cnVjdHVyZSBsaXN0CisKK1RoZSBoYW5kbGVyIGNhbiBiZSBvbmUgb2YgdGhlIDMgc3RhbmRhcmQgaGFuZGxlcnMgLSAibGV2ZWwiLCAiZWRnZSIgYW5kCisic2ltcGxlIiwgb3IgeW91ciBvd24gc3BlY2lmaWMgaGFuZGxlciBpZiB5b3UgbmVlZCB0byBkbyBzb21ldGhpbmcgc3BlY2lhbC4KKworVGhlICJsZXZlbCIgaGFuZGxlciBpcyB3aGF0IHdlIGN1cnJlbnRseSBoYXZlIC0gaXRzIHByZXR0eSBzaW1wbGUuCisiZWRnZSIga25vd3MgYWJvdXQgdGhlIGJyb2tlbm5lc3Mgb2Ygc3VjaCBJUlEgaW1wbGVtZW50YXRpb25zIC0gdGhhdCB5b3UKK25lZWQgdG8gbGVhdmUgdGhlIGhhcmR3YXJlIElSUSBlbmFibGVkIHdoaWxlIHByb2Nlc3NpbmcgaXQsIGFuZCBxdWV1ZWluZworZnVydGhlciBJUlEgZXZlbnRzIHNob3VsZCB0aGUgSVJRIGhhcHBlbiBhZ2FpbiB3aGlsZSBwcm9jZXNzaW5nLiAgVGhlCisic2ltcGxlIiBoYW5kbGVyIGlzIHZlcnkgYmFzaWMsIGFuZCBkb2VzIG5vdCBwZXJmb3JtIGFueSBoYXJkd2FyZQorbWFuaXB1bGF0aW9uLCBub3Igc3RhdGUgdHJhY2tpbmcuICBUaGlzIGlzIHVzZWZ1bCBmb3IgdGhpbmdzIGxpa2UgdGhlCitTTUM5MTk2IGFuZCBVU0FSIGFib3ZlLgorCitTbywgd2hhdCdzIGNoYW5nZWQ/CisKKzEuIE1hY2hpbmUgaW1wbGVtZW50YXRpb25zIG11c3Qgbm90IHdyaXRlIHRvIHRoZSBpcnFkZXNjIGFycmF5LgorCisyLiBOZXcgZnVuY3Rpb25zIHRvIG1hbmlwdWxhdGUgdGhlIGlycWRlc2MgYXJyYXkuICBUaGUgZmlyc3QgNCBhcmUgZXhwZWN0ZWQKKyAgIHRvIGJlIHVzZWZ1bCBvbmx5IHRvIG1hY2hpbmUgc3BlY2lmaWMgY29kZS4gIFRoZSBsYXN0IGlzIHJlY29tbWVuZGVkIHRvCisgICBvbmx5IGJlIHVzZWQgYnkgbWFjaGluZSBzcGVjaWZpYyBjb2RlLCBidXQgbWF5IGJlIHVzZWQgaW4gZHJpdmVycyBpZgorICAgYWJzb2x1dGVseSBuZWNlc3NhcnkuCisKKyAgICAgICAgc2V0X2lycV9jaGlwKGlycSxjaGlwKQorCisgICAgICAgICAgICAgICAgU2V0IHRoZSBtYXNrL3VubWFzayBtZXRob2RzIGZvciBoYW5kbGluZyB0aGlzIElSUQorCisgICAgICAgIHNldF9pcnFfaGFuZGxlcihpcnEsaGFuZGxlcikKKworICAgICAgICAgICAgICAgIFNldCB0aGUgaGFuZGxlciBmb3IgdGhpcyBJUlEgKGxldmVsLCBlZGdlLCBzaW1wbGUpCisKKyAgICAgICAgc2V0X2lycV9jaGFpbmVkX2hhbmRsZXIoaXJxLGhhbmRsZXIpCisKKyAgICAgICAgICAgICAgICBTZXQgYSAiY2hhaW5lZCIgaGFuZGxlciBmb3IgdGhpcyBJUlEgLSBhdXRvbWF0aWNhbGx5CisgICAgICAgICAgICAgICAgZW5hYmxlcyB0aGlzIElSUSAoZWcsIE5lcG9uc2V0IGFuZCBTQTExMTEgaGFuZGxlcnMpLgorCisgICAgICAgIHNldF9pcnFfZmxhZ3MoaXJxLGZsYWdzKQorCisgICAgICAgICAgICAgICAgU2V0IHRoZSB2YWxpZC9wcm9iZS9ub2F1dG9lbmFibGUgZmxhZ3MuCisKKyAgICAgICAgc2V0X2lycV90eXBlKGlycSx0eXBlKQorCisgICAgICAgICAgICAgICAgU2V0IGFjdGl2ZSB0aGUgSVJRIGVkZ2UocykvbGV2ZWwuICBUaGlzIHJlcGxhY2VzIHRoZQorICAgICAgICAgICAgICAgIFNBMTExMSBJTlRQT0wgbWFuaXB1bGF0aW9uLCBhbmQgdGhlIHNldF9HUElPX0lSUV9lZGdlKCkKKyAgICAgICAgICAgICAgICBmdW5jdGlvbi4gIFR5cGUgc2hvdWxkIGJlIG9uZSBvZiBJUlFfVFlQRV94eHggZGVmaW5lZCBpbgorCQk8bGludXgvaXJxLmg+CisKKzMuIHNldF9HUElPX0lSUV9lZGdlKCkgaXMgb2Jzb2xldGUsIGFuZCBzaG91bGQgYmUgcmVwbGFjZWQgYnkgc2V0X2lycV90eXBlLgorCis0LiBEaXJlY3QgYWNjZXNzIHRvIFNBMTExMSBJTlRQT0wgaXMgZGVwcmVjYXRlZC4gIFVzZSBzZXRfaXJxX3R5cGUgaW5zdGVhZC4KKworNS4gQSBoYW5kbGVyIGlzIGV4cGVjdGVkIHRvIHBlcmZvcm0gYW55IG5lY2Vzc2FyeSBhY2tub3dsZWRnZW1lbnQgb2YgdGhlCisgICBwYXJlbnQgSVJRIHZpYSB0aGUgY29ycmVjdCBjaGlwIHNwZWNpZmljIGZ1bmN0aW9uLiAgRm9yIGluc3RhbmNlLCBpZgorICAgdGhlIFNBMTExMSBpcyBkaXJlY3RseSBjb25uZWN0ZWQgdG8gYSBTQTExMTAgR1BJTywgdGhlbiB5b3Ugc2hvdWxkCisgICBhY2tub3dsZWRnZSB0aGUgU0ExMTEwIElSUSBlYWNoIHRpbWUgeW91IHJlLXJlYWQgdGhlIFNBMTExMSBJUlEgc3RhdHVzLgorCis2LiBGb3IgYW55IGNoaWxkIHdoaWNoIGRvZXNuJ3QgaGF2ZSBpdHMgb3duIElSUSBlbmFibGUvZGlzYWJsZSBjb250cm9scworICAgKGVnLCBTTUM5MTk2KSwgdGhlIGhhbmRsZXIgbXVzdCBtYXNrIG9yIGFja25vd2xlZGdlIHRoZSBwYXJlbnQgSVJRCisgICB3aGlsZSB0aGUgY2hpbGQgaGFuZGxlciBpcyBjYWxsZWQsIGFuZCB0aGUgY2hpbGQgaGFuZGxlciBzaG91bGQgYmUgdGhlCisgICAic2ltcGxlIiBoYW5kbGVyIChub3QgImVkZ2UiIG5vciAibGV2ZWwiKS4gIEFmdGVyIHRoZSBoYW5kbGVyIGNvbXBsZXRlcywKKyAgIHRoZSBwYXJlbnQgSVJRIHNob3VsZCBiZSB1bm1hc2tlZCwgYW5kIHRoZSBzdGF0dXMgb2YgYWxsIGNoaWxkcmVuIG11c3QKKyAgIGJlIHJlLWNoZWNrZWQgZm9yIHBlbmRpbmcgZXZlbnRzLiAgKHNlZSB0aGUgTmVwb25zZXQgSVJRIGhhbmRsZXIgZm9yCisgICBkZXRhaWxzKS4KKworNy4gZml4dXBfaXJxKCkgaXMgZ29uZSwgYXMgaXMgYXJjaC9hcm0vbWFjaC0qL2luY2x1ZGUvbWFjaC9pcnEuaAorCitQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgd2lsbCBub3Qgc29sdmUgYWxsIHByb2JsZW1zIC0gc29tZSBvZiB0aGVtIGFyZQoraGFyZHdhcmUgYmFzZWQuICBNaXhpbmcgbGV2ZWwtYmFzZWQgYW5kIGVkZ2UtYmFzZWQgSVJRcyBvbiB0aGUgc2FtZQorcGFyZW50IHNpZ25hbCAoZWcgbmVwb25zZXQpIGlzIG9uZSBzdWNoIGFyZWEgd2hlcmUgYSBzb2Z0d2FyZSBiYXNlZAorc29sdXRpb24gY2FuJ3QgcHJvdmlkZSB0aGUgZnVsbCBhbnN3ZXIgdG8gbG93IElSUSBsYXRlbmN5LgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS9NYXJ2ZWxsL1JFQURNRSBiL0RvY3VtZW50YXRpb24vYXJtL01hcnZlbGwvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4YTc3NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9NYXJ2ZWxsL1JFQURNRQpAQCAtMCwwICsxLDI4NCBAQAorQVJNIE1hcnZlbGwgU29DcworPT09PT09PT09PT09PT09PQorCitUaGlzIGRvY3VtZW50IGxpc3RzIGFsbCB0aGUgQVJNIE1hcnZlbGwgU29DcyB0aGF0IGFyZSBjdXJyZW50bHkKK3N1cHBvcnRlZCBpbiBtYWlubGluZSBieSB0aGUgTGludXgga2VybmVsLiBBcyB0aGUgTWFydmVsbCBmYW1pbGllcyBvZgorU29DcyBhcmUgbGFyZ2UgYW5kIGNvbXBsZXgsIGl0IGlzIGhhcmQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGUgc3VwcG9ydAorZm9yIGEgcGFydGljdWxhciBTb0MgaXMgYXZhaWxhYmxlIGluIHRoZSBMaW51eCBrZXJuZWwuIFRoaXMgZG9jdW1lbnQKK3RyaWVzIHRvIGhlbHAgaW4gdW5kZXJzdGFuZGluZyB3aGVyZSB0aG9zZSBTb0NzIGFyZSBzdXBwb3J0ZWQsIGFuZCB0bworbWF0Y2ggdGhlbSB3aXRoIHRoZWlyIGNvcnJlc3BvbmRpbmcgcHVibGljIGRhdGFzaGVldCwgd2hlbiBhdmFpbGFibGUuCisKK09yaW9uIGZhbWlseQorLS0tLS0tLS0tLS0tCisKKyAgRmxhdm9yczoKKyAgICAgICAgODhGNTA4MgorICAgICAgICA4OEY1MTgxCisgICAgICAgIDg4RjUxODFMCisgICAgICAgIDg4RjUxODIKKyAgICAgICAgICAgICAgIERhdGFzaGVldCAgICAgICAgICAgICAgIDogaHR0cDovL3d3dy5lbWJlZGRlZGFybS5jb20vZG9jdW1lbnRhdGlvbi90aGlyZC1wYXJ0eS9NVjg4RjUxODItZGF0YXNoZWV0LnBkZgorICAgICAgICAgICAgICAgUHJvZ3JhbW1lcidzIFVzZXIgR3VpZGUgOiBodHRwOi8vd3d3LmVtYmVkZGVkYXJtLmNvbS9kb2N1bWVudGF0aW9uL3RoaXJkLXBhcnR5L01WODhGNTE4Mi1vcGVuc291cmNlLW1hbnVhbC5wZGYKKyAgICAgICAgICAgICAgIFVzZXIgTWFudWFsICAgICAgICAgICAgIDogaHR0cDovL3d3dy5lbWJlZGRlZGFybS5jb20vZG9jdW1lbnRhdGlvbi90aGlyZC1wYXJ0eS9NVjg4RjUxODItdXNlcm1hbnVhbC5wZGYKKyAgICAgICAgODhGNTI4MQorICAgICAgICAgICAgICAgRGF0YXNoZWV0ICAgICAgICAgICAgICAgOiBodHRwOi8vd3d3Lm9jbW9kc2hvcC5jb20vaW1hZ2VzL3Jldmlld3MvbmV0d29ya2luZy9xbmFwX3RzNDA5dS9tYXJ2ZWxfODhmNTI4MV9kYXRhX3NoZWV0LnBkZgorICAgICAgICA4OEY2MTgzCisgIENvcmU6IEZlcm9jZW9uIEFSTXY1IGNvbXBhdGlibGUKKyAgTGludXgga2VybmVsIG1hY2ggZGlyZWN0b3J5OiBhcmNoL2FybS9tYWNoLW9yaW9uNXgKKyAgTGludXgga2VybmVsIHBsYXQgZGlyZWN0b3J5OiBhcmNoL2FybS9wbGF0LW9yaW9uCisKK0tpcmt3b29kIGZhbWlseQorLS0tLS0tLS0tLS0tLS0tCisKKyAgRmxhdm9yczoKKyAgICAgICAgODhGNjI4MiBhLmsuYSBBcm1hZGEgMzAwCisgICAgICAgICAgICAgICAgUHJvZHVjdCBCcmllZiAgOiBodHRwOi8vd3d3Lm1hcnZlbGwuY29tL2VtYmVkZGVkLXByb2Nlc3NvcnMvYXJtYWRhLTMwMC9hc3NldHMvYXJtYWRhXzMxMC5wZGYKKyAgICAgICAgODhGNjI4MyBhLmsuYSBBcm1hZGEgMzEwCisgICAgICAgICAgICAgICAgUHJvZHVjdCBCcmllZiAgOiBodHRwOi8vd3d3Lm1hcnZlbGwuY29tL2VtYmVkZGVkLXByb2Nlc3NvcnMvYXJtYWRhLTMwMC9hc3NldHMvYXJtYWRhXzMxMC5wZGYKKyAgICAgICAgODhGNjE5MAorICAgICAgICAgICAgICAgIFByb2R1Y3QgQnJpZWYgIDogaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbS9lbWJlZGRlZC1wcm9jZXNzb3JzL2tpcmt3b29kL2Fzc2V0cy84OEY2MTkwLTAwM19XRUIucGRmCisgICAgICAgICAgICAgICAgSGFyZHdhcmUgU3BlYyAgOiBodHRwOi8vd3d3Lm1hcnZlbGwuY29tL2VtYmVkZGVkLXByb2Nlc3NvcnMva2lya3dvb2QvYXNzZXRzL0hXXzg4RjYxOXhfT3BlblNvdXJjZS5wZGYKKyAgICAgICAgICAgICAgICBGdW5jdGlvbmFsIFNwZWM6IGh0dHA6Ly93d3cubWFydmVsbC5jb20vZW1iZWRkZWQtcHJvY2Vzc29ycy9raXJrd29vZC9hc3NldHMvRlNfODhGNjE4MF85eF82MjgxX09wZW5Tb3VyY2UucGRmCisgICAgICAgIDg4RjYxOTIKKyAgICAgICAgICAgICAgICBQcm9kdWN0IEJyaWVmICA6IGh0dHA6Ly93d3cubWFydmVsbC5jb20vZW1iZWRkZWQtcHJvY2Vzc29ycy9raXJrd29vZC9hc3NldHMvODhGNjE5Mi0wMDNfdmVyMS5wZGYKKyAgICAgICAgICAgICAgICBIYXJkd2FyZSBTcGVjICA6IGh0dHA6Ly93d3cubWFydmVsbC5jb20vZW1iZWRkZWQtcHJvY2Vzc29ycy9raXJrd29vZC9hc3NldHMvSFdfODhGNjE5eF9PcGVuU291cmNlLnBkZgorICAgICAgICAgICAgICAgIEZ1bmN0aW9uYWwgU3BlYzogaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbS9lbWJlZGRlZC1wcm9jZXNzb3JzL2tpcmt3b29kL2Fzc2V0cy9GU184OEY2MTgwXzl4XzYyODFfT3BlblNvdXJjZS5wZGYKKyAgICAgICAgODhGNjE4MgorICAgICAgICA4OEY2MTgwCisgICAgICAgICAgICAgICAgUHJvZHVjdCBCcmllZiAgOiBodHRwOi8vd3d3Lm1hcnZlbGwuY29tL2VtYmVkZGVkLXByb2Nlc3NvcnMva2lya3dvb2QvYXNzZXRzLzg4RjYxODAtMDAzX3ZlcjEucGRmCisgICAgICAgICAgICAgICAgSGFyZHdhcmUgU3BlYyAgOiBodHRwOi8vd3d3Lm1hcnZlbGwuY29tL2VtYmVkZGVkLXByb2Nlc3NvcnMva2lya3dvb2QvYXNzZXRzL0hXXzg4RjYxODBfT3BlblNvdXJjZS5wZGYKKyAgICAgICAgICAgICAgICBGdW5jdGlvbmFsIFNwZWM6IGh0dHA6Ly93d3cubWFydmVsbC5jb20vZW1iZWRkZWQtcHJvY2Vzc29ycy9raXJrd29vZC9hc3NldHMvRlNfODhGNjE4MF85eF82MjgxX09wZW5Tb3VyY2UucGRmCisgICAgICAgIDg4RjYyODEKKyAgICAgICAgICAgICAgICBQcm9kdWN0IEJyaWVmICA6IGh0dHA6Ly93d3cubWFydmVsbC5jb20vZW1iZWRkZWQtcHJvY2Vzc29ycy9raXJrd29vZC9hc3NldHMvODhGNjI4MS0wMDRfdmVyMS5wZGYKKyAgICAgICAgICAgICAgICBIYXJkd2FyZSBTcGVjICA6IGh0dHA6Ly93d3cubWFydmVsbC5jb20vZW1iZWRkZWQtcHJvY2Vzc29ycy9raXJrd29vZC9hc3NldHMvSFdfODhGNjI4MV9PcGVuU291cmNlLnBkZgorICAgICAgICAgICAgICAgIEZ1bmN0aW9uYWwgU3BlYzogaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbS9lbWJlZGRlZC1wcm9jZXNzb3JzL2tpcmt3b29kL2Fzc2V0cy9GU184OEY2MTgwXzl4XzYyODFfT3BlblNvdXJjZS5wZGYKKyAgSG9tZXBhZ2U6IGh0dHA6Ly93d3cubWFydmVsbC5jb20vZW1iZWRkZWQtcHJvY2Vzc29ycy9raXJrd29vZC8KKyAgQ29yZTogRmVyb2Nlb24gQVJNdjUgY29tcGF0aWJsZQorICBMaW51eCBrZXJuZWwgbWFjaCBkaXJlY3Rvcnk6IGFyY2gvYXJtL21hY2gtbXZlYnUKKyAgTGludXgga2VybmVsIHBsYXQgZGlyZWN0b3J5OiBub25lCisKK0Rpc2NvdmVyeSBmYW1pbHkKKy0tLS0tLS0tLS0tLS0tLS0KKworICBGbGF2b3JzOgorICAgICAgICBNVjc4MTAwCisgICAgICAgICAgICAgICAgUHJvZHVjdCBCcmllZiAgOiBodHRwOi8vd3d3Lm1hcnZlbGwuY29tL2VtYmVkZGVkLXByb2Nlc3NvcnMvZGlzY292ZXJ5LWlubm92YXRpb24vYXNzZXRzL01WNzgxMDAtMDAzX1dFQi5wZGYKKyAgICAgICAgICAgICAgICBIYXJkd2FyZSBTcGVjICA6IGh0dHA6Ly93d3cubWFydmVsbC5jb20vZW1iZWRkZWQtcHJvY2Vzc29ycy9kaXNjb3ZlcnktaW5ub3ZhdGlvbi9hc3NldHMvSFdfTVY3ODEwMF9PcGVuU291cmNlLnBkZgorICAgICAgICAgICAgICAgIEZ1bmN0aW9uYWwgU3BlYzogaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbS9lbWJlZGRlZC1wcm9jZXNzb3JzL2Rpc2NvdmVyeS1pbm5vdmF0aW9uL2Fzc2V0cy9GU19NVjc2MTAwXzc4MTAwXzc4MjAwX09wZW5Tb3VyY2UucGRmCisgICAgICAgIE1WNzgyMDAKKyAgICAgICAgICAgICAgICBQcm9kdWN0IEJyaWVmICA6IGh0dHA6Ly93d3cubWFydmVsbC5jb20vZW1iZWRkZWQtcHJvY2Vzc29ycy9kaXNjb3ZlcnktaW5ub3ZhdGlvbi9hc3NldHMvTVY3ODIwMC0wMDJfV0VCLnBkZgorICAgICAgICAgICAgICAgIEhhcmR3YXJlIFNwZWMgIDogaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbS9lbWJlZGRlZC1wcm9jZXNzb3JzL2Rpc2NvdmVyeS1pbm5vdmF0aW9uL2Fzc2V0cy9IV19NVjc4MjAwX09wZW5Tb3VyY2UucGRmCisgICAgICAgICAgICAgICAgRnVuY3Rpb25hbCBTcGVjOiBodHRwOi8vd3d3Lm1hcnZlbGwuY29tL2VtYmVkZGVkLXByb2Nlc3NvcnMvZGlzY292ZXJ5LWlubm92YXRpb24vYXNzZXRzL0ZTX01WNzYxMDBfNzgxMDBfNzgyMDBfT3BlblNvdXJjZS5wZGYKKyAgICAgICAgTVY3NjEwMAorICAgICAgICAgICAgICAgIE5vdCBzdXBwb3J0ZWQgYnkgdGhlIExpbnV4IGtlcm5lbC4KKworICBDb3JlOiBGZXJvY2VvbiBBUk12NSBjb21wYXRpYmxlCisKKyAgTGludXgga2VybmVsIG1hY2ggZGlyZWN0b3J5OiBhcmNoL2FybS9tYWNoLW12Nzh4eDAKKyAgTGludXgga2VybmVsIHBsYXQgZGlyZWN0b3J5OiBhcmNoL2FybS9wbGF0LW9yaW9uCisKK0VCVSBBcm1hZGEgZmFtaWx5CistLS0tLS0tLS0tLS0tLS0tLQorCisgIEFybWFkYSAzNzAgRmxhdm9yczoKKyAgICAgICAgODhGNjcxMAorICAgICAgICA4OEY2NzA3CisgICAgICAgIDg4RjZXMTEKKyAgICBQcm9kdWN0IEJyaWVmOiAgIGh0dHA6Ly93d3cubWFydmVsbC5jb20vZW1iZWRkZWQtcHJvY2Vzc29ycy9hcm1hZGEtMzAwL2Fzc2V0cy9NYXJ2ZWxsX0FSTUFEQV8zNzBfU29DLnBkZgorICAgIEhhcmR3YXJlIFNwZWM6ICAgaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbS9lbWJlZGRlZC1wcm9jZXNzb3JzL2FybWFkYS0zMDAvYXNzZXRzL0FSTUFEQTM3MC1kYXRhc2hlZXQucGRmCisgICAgRnVuY3Rpb25hbCBTcGVjOiBodHRwOi8vd3d3Lm1hcnZlbGwuY29tL2VtYmVkZGVkLXByb2Nlc3NvcnMvYXJtYWRhLTMwMC9hc3NldHMvQVJNQURBMzcwLUZ1bmN0aW9uYWxTcGVjLWRhdGFzaGVldC5wZGYKKworICBBcm1hZGEgMzc1IEZsYXZvcnM6CisJODhGNjcyMAorICAgIFByb2R1Y3QgQnJpZWY6IGh0dHA6Ly93d3cubWFydmVsbC5jb20vZW1iZWRkZWQtcHJvY2Vzc29ycy9hcm1hZGEtMzAwL2Fzc2V0cy9BUk1BREFfMzc1X1NvQy0wMV9wcm9kdWN0X2JyaWVmLnBkZgorCisgIEFybWFkYSAzODAvMzg1IEZsYXZvcnM6CisJODhGNjgxMAorCTg4RjY4MjAKKwk4OEY2ODI4CisKKyAgQXJtYWRhIDM5MC8zOTggRmxhdm9yczoKKwk4OEY2OTIwCisJODhGNjkyOAorICAgIFByb2R1Y3QgaW5mb3M6IGh0dHA6Ly93d3cubWFydmVsbC5jb20vZW1iZWRkZWQtcHJvY2Vzc29ycy9hcm1hZGEtMzl4LworCisgIEFybWFkYSBYUCBGbGF2b3JzOgorICAgICAgICBNVjc4MjMwCisgICAgICAgIE1WNzgyNjAKKyAgICAgICAgTVY3ODQ2MAorICAgIE5PVEU6IG5vdCB0byBiZSBjb25mdXNlZCB3aXRoIHRoZSBub24tU01QIDc4eHgwIFNvQ3MKKyAgICBQcm9kdWN0IEJyaWVmOiBodHRwOi8vd3d3Lm1hcnZlbGwuY29tL2VtYmVkZGVkLXByb2Nlc3NvcnMvYXJtYWRhLXhwL2Fzc2V0cy9NYXJ2ZWxsLUFybWFkYVhQLVNvQy1wcm9kdWN0JTIwYnJpZWYucGRmCisgICAgRnVuY3Rpb25hbCBTcGVjOiBodHRwOi8vd3d3Lm1hcnZlbGwuY29tL2VtYmVkZGVkLXByb2Nlc3NvcnMvYXJtYWRhLXhwL2Fzc2V0cy9BUk1BREEtWFAtRnVuY3Rpb25hbC1TcGVjRGF0YXNoZWV0LnBkZgorICAgIEhhcmR3YXJlIFNwZWNzOgorICAgICAgaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbS9lbWJlZGRlZC1wcm9jZXNzb3JzL2FybWFkYS14cC9hc3NldHMvSFdfTVY3ODIzMF9PUy5QREYKKyAgICAgIGh0dHA6Ly93d3cubWFydmVsbC5jb20vZW1iZWRkZWQtcHJvY2Vzc29ycy9hcm1hZGEteHAvYXNzZXRzL0hXX01WNzgyNjBfT1MuUERGCisgICAgICBodHRwOi8vd3d3Lm1hcnZlbGwuY29tL2VtYmVkZGVkLXByb2Nlc3NvcnMvYXJtYWRhLXhwL2Fzc2V0cy9IV19NVjc4NDYwX09TLlBERgorCisgIENvcmU6IFNoZWV2YSBBUk12NyBjb21wYXRpYmxlCisKKyAgTGludXgga2VybmVsIG1hY2ggZGlyZWN0b3J5OiBhcmNoL2FybS9tYWNoLW12ZWJ1CisgIExpbnV4IGtlcm5lbCBwbGF0IGRpcmVjdG9yeTogbm9uZQorCitBdmFudGEgZmFtaWx5CistLS0tLS0tLS0tLS0tCisKKyAgRmxhdm9yczoKKyAgICAgICA4OEY2NTEwCisgICAgICAgODhGNjUzMFAKKyAgICAgICA4OEY2NTUwCisgICAgICAgODhGNjU2MAorICBIb21lcGFnZSAgICAgOiBodHRwOi8vd3d3Lm1hcnZlbGwuY29tL2Jyb2FkYmFuZC8KKyAgUHJvZHVjdCBCcmllZjogaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbS9icm9hZGJhbmQvYXNzZXRzL01hcnZlbGxfQXZhbnRhXzg4RjY1MTBfMzA1XzA2MC0wMDFfcHJvZHVjdF9icmllZi5wZGYKKyAgTm8gcHVibGljIGRhdGFzaGVldCBhdmFpbGFibGUuCisKKyAgQ29yZTogQVJNdjUgY29tcGF0aWJsZQorCisgIExpbnV4IGtlcm5lbCBtYWNoIGRpcmVjdG9yeTogbm8gY29kZSBpbiBtYWlubGluZSB5ZXQsIHBsYW5uZWQgZm9yIHRoZSBmdXR1cmUKKyAgTGludXgga2VybmVsIHBsYXQgZGlyZWN0b3J5OiBubyBjb2RlIGluIG1haW5saW5lIHlldCwgcGxhbm5lZCBmb3IgdGhlIGZ1dHVyZQorCitEb3ZlIGZhbWlseSAoYXBwbGljYXRpb24gcHJvY2Vzc29yKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBGbGF2b3JzOgorICAgICAgICA4OEFQNTEwIGEuay5hIEFybWFkYSA1MTAKKyAgICAgICAgICAgICAgICBQcm9kdWN0IEJyaWVmICAgOiBodHRwOi8vd3d3Lm1hcnZlbGwuY29tL2FwcGxpY2F0aW9uLXByb2Nlc3NvcnMvYXJtYWRhLTUwMC9hc3NldHMvTWFydmVsbF9Bcm1hZGE1MTBfU29DLnBkZgorICAgICAgICAgICAgICAgIEhhcmR3YXJlIFNwZWMgICA6IGh0dHA6Ly93d3cubWFydmVsbC5jb20vYXBwbGljYXRpb24tcHJvY2Vzc29ycy9hcm1hZGEtNTAwL2Fzc2V0cy9Bcm1hZGEtNTEwLUhhcmR3YXJlLVNwZWMucGRmCisgICAgICAgICAgICAgICAgRnVuY3Rpb25hbCBTcGVjIDogaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbS9hcHBsaWNhdGlvbi1wcm9jZXNzb3JzL2FybWFkYS01MDAvYXNzZXRzL0FybWFkYS01MTAtRnVuY3Rpb25hbC1TcGVjLnBkZgorICBIb21lcGFnZTogaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbS9hcHBsaWNhdGlvbi1wcm9jZXNzb3JzL2FybWFkYS01MDAvCisgIENvcmU6IEFSTXY3IGNvbXBhdGlibGUKKworICBEaXJlY3Rvcnk6IGFyY2gvYXJtL21hY2gtbXZlYnUgKERUIGVuYWJsZWQgcGxhdGZvcm1zKQorICAgICAgICAgICAgIGFyY2gvYXJtL21hY2gtZG92ZSAobm9uLURUIGVuYWJsZWQgcGxhdGZvcm1zKQorCitQWEEgMnh4LzN4eC85M3gvOTV4IGZhbWlseQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBGbGF2b3JzOgorICAgICAgICBQWEEyMXgsIFBYQTI1eCwgUFhBMjZ4CisgICAgICAgICAgICAgQXBwbGljYXRpb24gcHJvY2Vzc29yIG9ubHkKKyAgICAgICAgICAgICBDb3JlOiBBUk12NSBYU2NhbGUgY29yZQorICAgICAgICBQWEEyNzAsIFBYQTI3MSwgUFhBMjcyCisgICAgICAgICAgICAgUHJvZHVjdCBCcmllZiAgICAgICAgIDogaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbS9hcHBsaWNhdGlvbi1wcm9jZXNzb3JzL3B4YS1mYW1pbHkvYXNzZXRzL3B4YV8yN3hfcGIucGRmCisgICAgICAgICAgICAgRGVzaWduIGd1aWRlICAgICAgICAgIDogaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbS9hcHBsaWNhdGlvbi1wcm9jZXNzb3JzL3B4YS1mYW1pbHkvYXNzZXRzL3B4YV8yN3hfZGVzaWduX2d1aWRlLnBkZgorICAgICAgICAgICAgIERldmVsb3BlcnMgbWFudWFsICAgICA6IGh0dHA6Ly93d3cubWFydmVsbC5jb20vYXBwbGljYXRpb24tcHJvY2Vzc29ycy9weGEtZmFtaWx5L2Fzc2V0cy9weGFfMjd4X2Rldl9tYW4ucGRmCisgICAgICAgICAgICAgU3BlY2lmaWNhdGlvbiAgICAgICAgIDogaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbS9hcHBsaWNhdGlvbi1wcm9jZXNzb3JzL3B4YS1mYW1pbHkvYXNzZXRzL3B4YV8yN3hfZW10cy5wZGYKKyAgICAgICAgICAgICBTcGVjaWZpY2F0aW9uIHVwZGF0ZSAgOiBodHRwOi8vd3d3Lm1hcnZlbGwuY29tL2FwcGxpY2F0aW9uLXByb2Nlc3NvcnMvcHhhLWZhbWlseS9hc3NldHMvcHhhXzI3eF9zcGVjX3VwZGF0ZS5wZGYKKyAgICAgICAgICAgICBBcHBsaWNhdGlvbiBwcm9jZXNzb3Igb25seQorICAgICAgICAgICAgIENvcmU6IEFSTXY1IFhTY2FsZSBjb3JlCisgICAgICAgIFBYQTMwMCwgUFhBMzEwLCBQWEEzMjAKKyAgICAgICAgICAgICBQWEEgMzAwIFByb2R1Y3QgQnJpZWYgOiBodHRwOi8vd3d3Lm1hcnZlbGwuY29tL2FwcGxpY2F0aW9uLXByb2Nlc3NvcnMvcHhhLWZhbWlseS9hc3NldHMvUFhBMzAwX1BCX1I0LnBkZgorICAgICAgICAgICAgIFBYQSAzMTAgUHJvZHVjdCBCcmllZiA6IGh0dHA6Ly93d3cubWFydmVsbC5jb20vYXBwbGljYXRpb24tcHJvY2Vzc29ycy9weGEtZmFtaWx5L2Fzc2V0cy9QWEEzMTBfUEJfUjQucGRmCisgICAgICAgICAgICAgUFhBIDMyMCBQcm9kdWN0IEJyaWVmIDogaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbS9hcHBsaWNhdGlvbi1wcm9jZXNzb3JzL3B4YS1mYW1pbHkvYXNzZXRzL1BYQTMyMF9QQl9SNC5wZGYKKyAgICAgICAgICAgICBEZXNpZ24gZ3VpZGUgICAgICAgICAgOiBodHRwOi8vd3d3Lm1hcnZlbGwuY29tL2FwcGxpY2F0aW9uLXByb2Nlc3NvcnMvcHhhLWZhbWlseS9hc3NldHMvUFhBM3h4X0Rlc2lnbl9HdWlkZS5wZGYKKyAgICAgICAgICAgICBEZXZlbG9wZXJzIG1hbnVhbCAgICAgOiBodHRwOi8vd3d3Lm1hcnZlbGwuY29tL2FwcGxpY2F0aW9uLXByb2Nlc3NvcnMvcHhhLWZhbWlseS9hc3NldHMvUFhBM3h4X0RldmVsb3BlcnNfTWFudWFsLnppcAorICAgICAgICAgICAgIFNwZWNpZmljYXRpb25zICAgICAgICA6IGh0dHA6Ly93d3cubWFydmVsbC5jb20vYXBwbGljYXRpb24tcHJvY2Vzc29ycy9weGEtZmFtaWx5L2Fzc2V0cy9QWEEzeHhfRU1UUy5wZGYKKyAgICAgICAgICAgICBTcGVjaWZpY2F0aW9uIFVwZGF0ZSAgOiBodHRwOi8vd3d3Lm1hcnZlbGwuY29tL2FwcGxpY2F0aW9uLXByb2Nlc3NvcnMvcHhhLWZhbWlseS9hc3NldHMvUFhBM3h4X1NwZWNfVXBkYXRlLnppcAorICAgICAgICAgICAgIFJlZmVyZW5jZSBNYW51YWwgICAgICA6IGh0dHA6Ly93d3cubWFydmVsbC5jb20vYXBwbGljYXRpb24tcHJvY2Vzc29ycy9weGEtZmFtaWx5L2Fzc2V0cy9QWEEzeHhfVGF2b3JQX0Jvb3RST01fUmVmX01hbnVhbC5wZGYKKyAgICAgICAgICAgICBBcHBsaWNhdGlvbiBwcm9jZXNzb3Igb25seQorICAgICAgICAgICAgIENvcmU6IEFSTXY1IFhTY2FsZSBjb3JlCisgICAgICAgIFBYQTkzMCwgUFhBOTM1CisgICAgICAgICAgICAgQXBwbGljYXRpb24gcHJvY2Vzc29yIHdpdGggQ29tbXVuaWNhdGlvbiBwcm9jZXNzb3IKKyAgICAgICAgICAgICBDb3JlOiBBUk12NSBYU2NhbGUgY29yZQorICAgICAgICBQWEE5NTUKKyAgICAgICAgICAgICBBcHBsaWNhdGlvbiBwcm9jZXNzb3Igd2l0aCBDb21tdW5pY2F0aW9uIHByb2Nlc3NvcgorICAgICAgICAgICAgIENvcmU6IEFSTXY3IGNvbXBhdGlibGUgU2hlZXZhIFBKNCBjb3JlCisKKyAgIENvbW1lbnRzOgorCisgICAgKiBUaGlzIGxpbmUgb2YgU29DcyBvcmlnaW5hdGVzIGZyb20gdGhlIFhTY2FsZSBmYW1pbHkgZGV2ZWxvcGVkIGJ5CisgICAgICBJbnRlbCBhbmQgYWNxdWlyZWQgYnkgTWFydmVsbCBpbiB+MjAwNi4gVGhlIFBYQTIxeCwgUFhBMjV4LAorICAgICAgUFhBMjZ4LCBQWEEyN3gsIFBYQTN4eCBhbmQgUFhBOTN4IHdlcmUgZGV2ZWxvcGVkIGJ5IEludGVsLCB3aGlsZQorICAgICAgdGhlIGxhdGVyIFBYQTk1eCB3ZXJlIGRldmVsb3BlZCBieSBNYXJ2ZWxsLgorCisgICAgKiBEdWUgdG8gdGhlaXIgWFNjYWxlIG9yaWdpbiwgdGhlc2UgU29DcyBoYXZlIHZpcnR1YWxseSBub3RoaW5nIGluCisgICAgICBjb21tb24gd2l0aCB0aGUgb3RoZXIgKEtpcmt3b29kLCBEb3ZlLCBldGMuKSBmYW1pbGllcyBvZiBNYXJ2ZWxsCisgICAgICBTb0NzLCBleGNlcHQgd2l0aCB0aGUgTU1QL01NUDIgZmFtaWx5IG9mIFNvQ3MuCisKKyAgIExpbnV4IGtlcm5lbCBtYWNoIGRpcmVjdG9yeTogYXJjaC9hcm0vbWFjaC1weGEKKyAgIExpbnV4IGtlcm5lbCBwbGF0IGRpcmVjdG9yeTogYXJjaC9hcm0vcGxhdC1weGEKKworTU1QL01NUDIgZmFtaWx5IChjb21tdW5pY2F0aW9uIHByb2Nlc3NvcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgIEZsYXZvcnM6CisgICAgICAgIFBYQTE2OCwgYS5rLmEgQXJtYWRhIDE2OAorICAgICAgICAgICAgIEhvbWVwYWdlICAgICAgICAgICAgIDogaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbS9hcHBsaWNhdGlvbi1wcm9jZXNzb3JzL2FybWFkYS0xMDAvYXJtYWRhLTE2OC5qc3AKKyAgICAgICAgICAgICBQcm9kdWN0IGJyaWVmICAgICAgICA6IGh0dHA6Ly93d3cubWFydmVsbC5jb20vYXBwbGljYXRpb24tcHJvY2Vzc29ycy9hcm1hZGEtMTAwL2Fzc2V0cy9weGFfMTY4X3BiLnBkZgorICAgICAgICAgICAgIEhhcmR3YXJlIG1hbnVhbCAgICAgIDogaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbS9hcHBsaWNhdGlvbi1wcm9jZXNzb3JzL2FybWFkYS0xMDAvYXNzZXRzL2FybWFkYV8xNnhfZGF0YXNoZWV0LnBkZgorICAgICAgICAgICAgIFNvZnR3YXJlIG1hbnVhbCAgICAgIDogaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbS9hcHBsaWNhdGlvbi1wcm9jZXNzb3JzL2FybWFkYS0xMDAvYXNzZXRzL2FybWFkYV8xNnhfc29mdHdhcmVfbWFudWFsLnBkZgorICAgICAgICAgICAgIFNwZWNpZmljYXRpb24gdXBkYXRlIDogaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbS9hcHBsaWNhdGlvbi1wcm9jZXNzb3JzL2FybWFkYS0xMDAvYXNzZXRzL0FSTUFEQTE2eF9TcGVjX3VwZGF0ZS5wZGYKKyAgICAgICAgICAgICBCb290IFJPTSBtYW51YWwgICAgICA6IGh0dHA6Ly93d3cubWFydmVsbC5jb20vYXBwbGljYXRpb24tcHJvY2Vzc29ycy9hcm1hZGEtMTAwL2Fzc2V0cy9hcm1hZGFfMTZ4X3JlZl9tYW51YWwucGRmCisgICAgICAgICAgICAgQXBwIG5vZGUgcGFja2FnZSAgICAgOiBodHRwOi8vd3d3Lm1hcnZlbGwuY29tL2FwcGxpY2F0aW9uLXByb2Nlc3NvcnMvYXJtYWRhLTEwMC9hc3NldHMvYXJtYWRhXzE2eF9hcHBfbm90ZV9wYWNrYWdlLnBkZgorICAgICAgICAgICAgIEFwcGxpY2F0aW9uIHByb2Nlc3NvciBvbmx5CisgICAgICAgICAgICAgQ29yZTogQVJNdjUgY29tcGF0aWJsZSBNYXJ2ZWxsIFBKMSAoTW9oYXdrKQorICAgICAgICBQWEE5MTAKKyAgICAgICAgICAgICBIb21lcGFnZSAgICAgICAgICAgICA6IGh0dHA6Ly93d3cubWFydmVsbC5jb20vY29tbXVuaWNhdGlvbi1wcm9jZXNzb3JzL3B4YTkxMC8KKyAgICAgICAgICAgICBQcm9kdWN0IEJyaWVmICAgICAgICA6IGh0dHA6Ly93d3cubWFydmVsbC5jb20vY29tbXVuaWNhdGlvbi1wcm9jZXNzb3JzL3B4YTkxMC9hc3NldHMvTWFydmVsbF9QWEE5MTBfUGxhdGZvcm0tMDAxX1BCX2ZpbmFsLnBkZgorICAgICAgICAgICAgIEFwcGxpY2F0aW9uIHByb2Nlc3NvciB3aXRoIENvbW11bmljYXRpb24gcHJvY2Vzc29yCisgICAgICAgICAgICAgQ29yZTogQVJNdjUgY29tcGF0aWJsZSBNYXJ2ZWxsIFBKMSAoTW9oYXdrKQorICAgICAgICBNTVAyLCBhLmsuYSBBcm1hZGEgNjEwCisgICAgICAgICAgICAgUHJvZHVjdCBCcmllZiAgICAgICAgOiBodHRwOi8vd3d3Lm1hcnZlbGwuY29tL2FwcGxpY2F0aW9uLXByb2Nlc3NvcnMvYXJtYWRhLTYwMC9hc3NldHMvYXJtYWRhNjEwX3BiLnBkZgorICAgICAgICAgICAgIEFwcGxpY2F0aW9uIHByb2Nlc3NvciBvbmx5CisgICAgICAgICAgICAgQ29yZTogQVJNdjcgY29tcGF0aWJsZSBTaGVldmEgUEo0IGNvcmUKKworICAgQ29tbWVudHM6CisKKyAgICAqIFRoaXMgbGluZSBvZiBTb0NzIG9yaWdpbmF0ZXMgZnJvbSB0aGUgWFNjYWxlIGZhbWlseSBkZXZlbG9wZWQgYnkKKyAgICAgIEludGVsIGFuZCBhY3F1aXJlZCBieSBNYXJ2ZWxsIGluIH4yMDA2LiBBbGwgdGhlIHByb2Nlc3NvcnMgb2YKKyAgICAgIHRoaXMgTU1QL01NUDIgZmFtaWx5IHdlcmUgZGV2ZWxvcGVkIGJ5IE1hcnZlbGwuCisKKyAgICAqIER1ZSB0byB0aGVpciBYU2NhbGUgb3JpZ2luLCB0aGVzZSBTb0NzIGhhdmUgdmlydHVhbGx5IG5vdGhpbmcgaW4KKyAgICAgIGNvbW1vbiB3aXRoIHRoZSBvdGhlciAoS2lya3dvb2QsIERvdmUsIGV0Yy4pIGZhbWlsaWVzIG9mIE1hcnZlbGwKKyAgICAgIFNvQ3MsIGV4Y2VwdCB3aXRoIHRoZSBQWEEgZmFtaWx5IG9mIFNvQ3MgbGlzdGVkIGFib3ZlLgorCisgICBMaW51eCBrZXJuZWwgbWFjaCBkaXJlY3Rvcnk6IGFyY2gvYXJtL21hY2gtbW1wCisgICBMaW51eCBrZXJuZWwgcGxhdCBkaXJlY3Rvcnk6IGFyY2gvYXJtL3BsYXQtcHhhCisKK0JlcmxpbiBmYW1pbHkgKERpZ2l0YWwgRW50ZXJ0YWlubWVudCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBGbGF2b3JzOgorCTg4REUzMDA1LCBBcm1hZGEgMTUwMC1taW5pCisJCURlc2lnbiBuYW1lOglCRzJDRAorCQlDb3JlOgkJQVJNIENvcnRleC1BOSwgUEwzMTAgTDJDQworCQlIb21lcGFnZToJaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbS9kaWdpdGFsLWVudGVydGFpbm1lbnQvYXJtYWRhLTE1MDAtbWluaS8KKwk4OERFMzEwMCwgQXJtYWRhIDE1MDAKKwkJRGVzaWduIG5hbWU6CUJHMgorCQlDb3JlOgkJTWFydmVsbCBQSjRCIChBUk12NyksIFRhdXJvczMgTDJDQworCQlIb21lcGFnZToJaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbS9kaWdpdGFsLWVudGVydGFpbm1lbnQvYXJtYWRhLTE1MDAvCisJCVByb2R1Y3QgQnJpZWY6CWh0dHA6Ly93d3cubWFydmVsbC5jb20vZGlnaXRhbC1lbnRlcnRhaW5tZW50L2FybWFkYS0xNTAwL2Fzc2V0cy9NYXJ2ZWxsLUFSTUFEQS0xNTAwLVByb2R1Y3QtQnJpZWYucGRmCisJODhERTMxMTQsIEFybWFkYSAxNTAwIFBybworCQlEZXNpZ24gbmFtZToJQkcyLVEKKwkJQ29yZToJCVF1YWQgQ29yZSBBUk0gQ29ydGV4LUE5LCBQTDMxMCBMMkNDCisJCUhvbWVwYWdlOglodHRwOi8vd3d3Lm1hcnZlbGwuY29tL2RpZ2l0YWwtZW50ZXJ0YWlubWVudC9hcm1hZGEtMTUwMC1wcm8vCisJCVByb2R1Y3QgQnJpZWY6CWh0dHA6Ly93d3cubWFydmVsbC5jb20vZGlnaXRhbC1lbnRlcnRhaW5tZW50L2FybWFkYS0xNTAwLXByby9hc3NldHMvTWFydmVsbF9BUk1BREFfMTUwMF9QUk8tMDFfcHJvZHVjdF9icmllZi5wZGYKKwk4OERFPz8/PworCQlEZXNpZ24gbmFtZToJQkczCisJCUNvcmU6CQlBUk0gQ29ydGV4LUExNSwgQ0ExNSBpbnRlZ3JhdGVkIEwyQ0MKKworICBIb21lcGFnZTogaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbS9kaWdpdGFsLWVudGVydGFpbm1lbnQvCisgIERpcmVjdG9yeTogYXJjaC9hcm0vbWFjaC1iZXJsaW4KKworICBDb21tZW50czoKKyAgICogVGhpcyBsaW5lIG9mIFNvQ3MgaXMgYmFzZWQgb24gTWFydmVsbCBTaGVldmEgb3IgQVJNIENvcnRleCBDUFVzCisgICAgIHdpdGggU3lub3BzeXMgRGVzaWduV2FyZSAoSVJRLCBHUElPLCBUaW1lcnMsIC4uLikgYW5kIFBYQSBJUCAoU0RIQ0ksIFVTQiwgRVRILCAuLi4pLgorCitMb25nLXRlcm0gcGxhbnMKKy0tLS0tLS0tLS0tLS0tLQorCisgKiBVbmlmeSB0aGUgbWFjaC1kb3ZlLywgbWFjaC1tdjc4eHgwLywgbWFjaC1vcmlvbjV4LyBpbnRvIHRoZQorICAgbWFjaC1tdmVidS8gdG8gc3VwcG9ydCBhbGwgU29DcyBmcm9tIHRoZSBNYXJ2ZWxsIEVCVSAoRW5naW5lZXJpbmcKKyAgIEJ1c2luZXNzIFVuaXQpIGluIGEgc2luZ2xlIG1hY2gtPGZvbz4gZGlyZWN0b3J5LiBUaGUgcGxhdC1vcmlvbi8KKyAgIHdvdWxkIHRoZXJlZm9yZSBkaXNhcHBlYXIuCisKKyAqIFVuaWZ5IHRoZSBtYWNoLW1tcC8gYW5kIG1hY2gtcHhhLyBpbnRvIHRoZSBzYW1lIG1hY2gtcHhhCisgICBkaXJlY3RvcnkuIFRoZSBwbGF0LXB4YS8gd291bGQgdGhlcmVmb3JlIGRpc2FwcGVhci4KKworQ3JlZGl0cworLS0tLS0tLQorCisgTWFlbiBTdWxlaW1hbiA8bWFlbkBtYXJ2ZWxsLmNvbT4KKyBMaW9yIEFtc2FsZW0gPGFsaW9yQG1hcnZlbGwuY29tPgorIFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAZnJlZS1lbGVjdHJvbnMuY29tPgorIEFuZHJldyBMdW5uIDxhbmRyZXdAbHVubi5jaD4KKyBOaWNvbGFzIFBpdHJlIDxuaWNvQGZsdXhuaWMubmV0PgorIEVyaWMgTWlhbyA8ZXJpYy55Lm1pYW9AZ21haWwuY29tPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vTmV0d2luZGVyIGIvRG9jdW1lbnRhdGlvbi9hcm0vTmV0d2luZGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxYjQ1N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9OZXR3aW5kZXIKQEAgLTAsMCArMSw3OCBAQAorTmV0V2luZGVyIHNwZWNpZmljIGRvY3VtZW50YXRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBOZXRXaW5kZXIgaXMgYSBzbWFsbCBsb3ctcG93ZXIgY29tcHV0ZXIsIHByaW1hcmlseSBkZXNpZ25lZAordG8gcnVuIExpbnV4LiAgSXQgaXMgYmFzZWQgYXJvdW5kIHRoZSBTdHJvbmdBUk0gUklTQyBwcm9jZXNzb3IsCitEQzIxMjg1IFBDSSBicmlkZ2UsIHdpdGggUEMtdHlwZSBoYXJkd2FyZSBnbHVlZCBhcm91bmQgaXQuCisKK1BvcnQgdXNhZ2UKKz09PT09PT09PT0KKworTWluICAgIC0gTWF4CURlc2NyaXB0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzB4MDAwMCAtIDB4MDAwZglETUExCisweDAwMjAgLSAweDAwMjEJUElDMQorMHgwMDYwIC0gMHgwMDZmCUtleWJvYXJkCisweDAwNzAgLSAweDAwN2YJUlRDCisweDAwODAgLSAweDAwODcJRE1BMQorMHgwMDg4IC0gMHgwMDhmCURNQTIKKzB4MDBhMCAtIDB4MDBhMwlQSUMyCisweDAwYzAgLSAweDAwZGYJRE1BMgorMHgwMTgwIC0gMHgwMTg3CUlSREEKKzB4MDFmMCAtIDB4MDFmNglpZGUwCisweDAyMDEJCUdhbWUgcG9ydAorMHgwMjAzCQlSV0EwMTAgY29uZmlndXJhdGlvbiByZWFkCisweDAyMjAgLSA/CVNvdW5kQmxhc3RlcgorMHgwMjUwIC0gPwlXYXZlQXJ0aXN0CisweDAyNzkJCVJXQTAxMCBjb25maWd1cmF0aW9uIGluZGV4CisweDAyZjggLSAweDAyZmYJU2VyaWFsIHR0eVMxCisweDAzMDAgLSAweDAzMWYJRXRoZXIxMAorMHgwMzM4CQlHUElPMQorMHgwMzNhCQlHUElPMgorMHgwMzcwIC0gMHgwMzcxCVc4Mzk3N0YgY29uZmlndXJhdGlvbiByZWdpc3RlcnMKKzB4MDM4OCAtID8JQWRMaWIKKzB4MDNjMCAtIDB4MDNkZglWR0EKKzB4MDNmNgkJaWRlMAorMHgwM2Y4IC0gMHgwM2ZmCVNlcmlhbCB0dHlTMAorMHgwNDAwIC0gMHgwNDA4CURDMjExNDMKKzB4MDQ4MCAtIDB4MDQ4NwlETUExCisweDA0ODggLSAweDA0OGYJRE1BMgorMHgwYTc5CQlSV0EwMTAgY29uZmlndXJhdGlvbiB3cml0ZQorMHhlODAwIC0gMHhlODBmCWlkZTAvaWRlMSBCTSBETUEKKworCitJbnRlcnJ1cHQgdXNhZ2UKKz09PT09PT09PT09PT09PQorCitJUlEJdHlwZQlEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMAlJU0EJMTAwSHogdGltZXIKKyAxCUlTQQlLZXlib2FyZAorIDIJSVNBCWNhc2NhZGUKKyAzCUlTQQlTZXJpYWwgdHR5UzEKKyA0CUlTQQlTZXJpYWwgdHR5UzAKKyA1CUlTQQlQUy8yIG1vdXNlCisgNglJU0EJSVJEQQorIDcJSVNBCVByaW50ZXIKKyA4CUlTQQlSVEMgYWxhcm0KKyA5CUlTQQorMTAJSVNBCUdQMTAgKE9yYW5nZSByZXNldCBidXR0b24pCisxMQlJU0EKKzEyCUlTQQlXYXZlQXJ0aXN0CisxMwlJU0EKKzE0CUlTQQloZGExCisxNQlJU0EKKworRE1BIHVzYWdlCis9PT09PT09PT0KKworRE1BCXR5cGUJRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDAJSVNBCUlSREEKKyAxCUlTQQorIDIJSVNBCWNhc2NhZGUKKyAzCUlTQQlXYXZlQXJ0aXN0CisgNAlJU0EKKyA1CUlTQQorIDYJSVNBCisgNwlJU0EJV2F2ZUFydGlzdApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vT01BUC9EU1MgYi9Eb2N1bWVudGF0aW9uL2FybS9PTUFQL0RTUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDg0ZTAyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vT01BUC9EU1MKQEAgLTAsMCArMSwzNjIgQEAKK09NQVAyLzMgRGlzcGxheSBTdWJzeXN0ZW0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBpcyBhbiBhbG1vc3QgdG90YWwgcmV3cml0ZSBvZiB0aGUgT01BUCBGQiBkcml2ZXIgaW4gZHJpdmVycy92aWRlby9vbWFwCisobGV0J3MgY2FsbCBpdCBEU1MxKS4gVGhlIG1haW4gZGlmZmVyZW5jZXMgYmV0d2VlbiBEU1MxIGFuZCBEU1MyIGFyZSBEU0ksCitUVi1vdXQgYW5kIG11bHRpcGxlIGRpc3BsYXkgc3VwcG9ydCwgYnV0IHRoZXJlIGFyZSBsb3RzIG9mIHNtYWxsIGltcHJvdmVtZW50cworYWxzby4KKworVGhlIERTUzIgZHJpdmVyIChvbWFwZHNzIG1vZHVsZSkgaXMgaW4gYXJjaC9hcm0vcGxhdC1vbWFwL2Rzcy8sIGFuZCB0aGUgRkIsCitwYW5lbCBhbmQgY29udHJvbGxlciBkcml2ZXJzIGFyZSBpbiBkcml2ZXJzL3ZpZGVvL29tYXAyLy4gRFNTMSBhbmQgRFNTMiBsaXZlCitjdXJyZW50bHkgc2lkZSBieSBzaWRlLCB5b3UgY2FuIGNob29zZSB3aGljaCBvbmUgdG8gdXNlLgorCitGZWF0dXJlcworLS0tLS0tLS0KKworV29ya2luZyBhbmQgdGVzdGVkIGZlYXR1cmVzIGluY2x1ZGU6CisKKy0gTUlQSSBEUEkgKHBhcmFsbGVsKSBvdXRwdXQKKy0gTUlQSSBEU0kgb3V0cHV0IGluIGNvbW1hbmQgbW9kZQorLSBNSVBJIERCSSAoUkZCSSkgb3V0cHV0CistIFNESSBvdXRwdXQKKy0gVFYgb3V0cHV0CistIEFsbCBwaWVjZXMgY2FuIGJlIGNvbXBpbGVkIGFzIGEgbW9kdWxlIG9yIGluc2lkZSBrZXJuZWwKKy0gVXNlIERJU1BDIHRvIHVwZGF0ZSBhbnkgb2YgdGhlIG91dHB1dHMKKy0gVXNlIENQVSB0byB1cGRhdGUgUkZCSSBvciBEU0kgb3V0cHV0CistIE9NQVAgRElTUEMgcGxhbmVzCistIFJHQjE2LCBSR0IyNCBwYWNrZWQsIFJHQjI0IHVucGFja2VkCistIFlVVjIsIFVZVlkKKy0gU2NhbGluZworLSBBZGp1c3RpbmcgRFNTIEZDSyB0byBmaW5kIGEgZ29vZCBwaXhlbCBjbG9jaworLSBVc2UgRFNJIERQTEwgdG8gY3JlYXRlIERTUyBGQ0sKKworVGVzdGVkIGJvYXJkcyBpbmNsdWRlOgorLSBPTUFQMyBTRFAgYm9hcmQKKy0gQmVhZ2xlIGJvYXJkCistIE44MTAKKworb21hcGRzcyBkcml2ZXIKKy0tLS0tLS0tLS0tLS0tCisKK1RoZSBEU1MgZHJpdmVyIGRvZXMgbm90IGl0c2VsZiBoYXZlIGFueSBzdXBwb3J0IGZvciBMaW51eCBmcmFtZWJ1ZmZlciwgVjRMIG9yCitzdWNoIGxpa2UgdGhlIGN1cnJlbnQgb25lcywgYnV0IGl0IGhhcyBhbiBpbnRlcm5hbCBrZXJuZWwgQVBJIHRoYXQgdXBwZXIgbGV2ZWwKK2RyaXZlcnMgY2FuIHVzZS4KKworVGhlIERTUyBkcml2ZXIgbW9kZWxzIE9NQVAncyBvdmVybGF5cywgb3ZlcmxheSBtYW5hZ2VycyBhbmQgZGlzcGxheXMgaW4gYQorZmxleGlibGUgd2F5IHRvIGVuYWJsZSBub24tY29tbW9uIG11bHRpLWRpc3BsYXkgY29uZmlndXJhdGlvbi4gSW4gYWRkaXRpb24gdG8KK21vZGVsbGluZyB0aGUgaGFyZHdhcmUgb3ZlcmxheXMsIG9tYXBkc3Mgc3VwcG9ydHMgdmlydHVhbCBvdmVybGF5cyBhbmQgb3ZlcmxheQorbWFuYWdlcnMuIFRoZXNlIGNhbiBiZSB1c2VkIHdoZW4gdXBkYXRpbmcgYSBkaXNwbGF5IHdpdGggQ1BVIG9yIHN5c3RlbSBETUEuCisKK29tYXBkc3MgZHJpdmVyIHN1cHBvcnQgZm9yIGF1ZGlvCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlcmUgZXhpc3Qgc2V2ZXJhbCBkaXNwbGF5IHRlY2hub2xvZ2llcyBhbmQgc3RhbmRhcmRzIHRoYXQgc3VwcG9ydCBhdWRpbyBhcword2VsbC4gSGVuY2UsIGl0IGlzIHJlbGV2YW50IHRvIHVwZGF0ZSB0aGUgRFNTIGRldmljZSBkcml2ZXIgdG8gcHJvdmlkZSBhbiBhdWRpbworaW50ZXJmYWNlIHRoYXQgbWF5IGJlIHVzZWQgYnkgYW4gYXVkaW8gZHJpdmVyIG9yIGFueSBvdGhlciBkcml2ZXIgaW50ZXJlc3RlZCBpbgordGhlIGZ1bmN0aW9uYWxpdHkuCisKK1RoZSBhdWRpb19lbmFibGUgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gcHJlcGFyZSB0aGUgcmVsZXZhbnQKK0lQIGZvciBwbGF5YmFjayAoZS5nLiwgZW5hYmxpbmcgYW4gYXVkaW8gRklGTywgdGFraW5nIGluL291dCBvZiByZXNldAorc29tZSBJUCwgZW5hYmxpbmcgY29tcGFuaW9uIGNoaXBzLCBldGMpLiBJdCBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgYmVmb3JlCithdWRpb19zdGFydC4gVGhlIGF1ZGlvX2Rpc2FibGUgZnVuY3Rpb24gcGVyZm9ybXMgdGhlIHJldmVyc2Ugb3BlcmF0aW9uIGFuZCBpcworaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGFmdGVyIGF1ZGlvX3N0b3AuCisKK1doaWxlIGEgZ2l2ZW4gRFNTIGRldmljZSBkcml2ZXIgbWF5IHN1cHBvcnQgYXVkaW8sIGl0IGlzIHBvc3NpYmxlIHRoYXQgZm9yCitjZXJ0YWluIGNvbmZpZ3VyYXRpb25zIGF1ZGlvIGlzIG5vdCBzdXBwb3J0ZWQgKGUuZy4sIGFuIEhETUkgZGlzcGxheSB1c2luZyBhCitWRVNBIHZpZGVvIHRpbWluZykuIFRoZSBhdWRpb19zdXBwb3J0ZWQgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gcXVlcnkgd2hldGhlcgordGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBvZiB0aGUgZGlzcGxheSBzdXBwb3J0cyBhdWRpby4KKworVGhlIGF1ZGlvX2NvbmZpZyBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBjb25maWd1cmUgYWxsIHRoZSByZWxldmFudCBhdWRpbworcGFyYW1ldGVycyBvZiB0aGUgZGlzcGxheS4gSW4gb3JkZXIgdG8gbWFrZSB0aGUgZnVuY3Rpb24gaW5kZXBlbmRlbnQgb2YgYW55CitzcGVjaWZpYyBEU1MgZGV2aWNlIGRyaXZlciwgYSBzdHJ1Y3Qgb21hcF9kc3NfYXVkaW8gaXMgZGVmaW5lZC4gSXRzIHB1cnBvc2UKK2lzIHRvIGNvbnRhaW4gYWxsIHRoZSByZXF1aXJlZCBwYXJhbWV0ZXJzIGZvciBhdWRpbyBjb25maWd1cmF0aW9uLiBBdCB0aGUKK21vbWVudCwgc3VjaCBzdHJ1Y3R1cmUgY29udGFpbnMgcG9pbnRlcnMgdG8gSUVDLTYwOTU4IGNoYW5uZWwgc3RhdHVzIHdvcmQKK2FuZCBDRUEtODYxIGF1ZGlvIGluZm9mcmFtZSBzdHJ1Y3R1cmVzLiBUaGlzIHNob3VsZCBiZSBlbm91Z2ggdG8gc3VwcG9ydAorSERNSSBhbmQgRGlzcGxheVBvcnQsIGFzIGJvdGggYXJlIGJhc2VkIG9uIENFQS04NjEgYW5kIElFQy02MDk1OC4KKworVGhlIGF1ZGlvX2VuYWJsZS9kaXNhYmxlLCBhdWRpb19jb25maWcgYW5kIGF1ZGlvX3N1cHBvcnRlZCBmdW5jdGlvbnMgY291bGQgYmUKK2ltcGxlbWVudGVkIGFzIGZ1bmN0aW9ucyB0aGF0IG1heSBzbGVlcC4gSGVuY2UsIHRoZXkgc2hvdWxkIG5vdCBiZSBjYWxsZWQKK3doaWxlIGhvbGRpbmcgYSBzcGlubG9jayBvciBhIHJlYWRsb2NrLgorCitUaGUgYXVkaW9fc3RhcnQvYXVkaW9fc3RvcCBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBlZmZlY3RpdmVseSBzdGFydC9zdG9wIGF1ZGlvCitwbGF5YmFjayBhZnRlciB0aGUgY29uZmlndXJhdGlvbiBoYXMgdGFrZW4gcGxhY2UuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZGVzaWduZWQKK3RvIGJlIHVzZWQgaW4gYW4gYXRvbWljIGNvbnRleHQuIEhlbmNlLCBhdWRpb19zdGFydCBzaG91bGQgcmV0dXJuIHF1aWNrbHkgYW5kIGJlCitjYWxsZWQgb25seSBhZnRlciBhbGwgdGhlIG5lZWRlZCByZXNvdXJjZXMgZm9yIGF1ZGlvIHBsYXliYWNrIChhdWRpbyBGSUZPcywKK0RNQSBjaGFubmVscywgY29tcGFuaW9uIGNoaXBzLCBldGMpIGhhdmUgYmVlbiBlbmFibGVkIHRvIGJlZ2luIGRhdGEgdHJhbnNmZXJzLgorYXVkaW9fc3RvcCBpcyBkZXNpZ25lZCB0byBvbmx5IHN0b3AgdGhlIGF1ZGlvIHRyYW5zZmVycy4gVGhlIHJlc291cmNlcyB1c2VkCitmb3IgcGxheWJhY2sgYXJlIHJlbGVhc2VkIHVzaW5nIGF1ZGlvX2Rpc2FibGUuCisKK1RoZSBlbnVtIG9tYXBfZHNzX2F1ZGlvX3N0YXRlIG1heSBiZSB1c2VkIHRvIGhlbHAgdGhlIGltcGxlbWVudGF0aW9ucyBvZgordGhlIGludGVyZmFjZSB0byBrZWVwIHRyYWNrIG9mIHRoZSBhdWRpbyBzdGF0ZS4gVGhlIGluaXRpYWwgc3RhdGUgaXMgX0RJU0FCTEVEOwordGhlbiwgdGhlIHN0YXRlIHRyYW5zaXRpb25zIHRvIF9DT05GSUdVUkVELCBhbmQgdGhlbiwgd2hlbiBpdCBpcyByZWFkeSB0bworcGxheSBhdWRpbywgdG8gX0VOQUJMRUQuIFRoZSBzdGF0ZSBfUExBWUlORyBpcyB1c2VkIHdoZW4gdGhlIGF1ZGlvIGlzIGJlaW5nCityZW5kZXJlZC4KKworCitQYW5lbCBhbmQgY29udHJvbGxlciBkcml2ZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBkcml2ZXJzIGltcGxlbWVudCBwYW5lbCBvciBjb250cm9sbGVyIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgYW5kIGFyZSBub3QKK3VzdWFsbHkgdmlzaWJsZSB0byB1c2VycyBleGNlcHQgdGhyb3VnaCBvbWFwZmIgZHJpdmVyLiAgVGhleSByZWdpc3RlcgordGhlbXNlbHZlcyB0byB0aGUgRFNTIGRyaXZlci4KKworb21hcGZiIGRyaXZlcgorLS0tLS0tLS0tLS0tLQorCitUaGUgb21hcGZiIGRyaXZlciBpbXBsZW1lbnRzIGFyYml0cmFyeSBudW1iZXIgb2Ygc3RhbmRhcmQgbGludXggZnJhbWVidWZmZXJzLgorVGhlc2UgZnJhbWVidWZmZXJzIGNhbiBiZSByb3V0ZWQgZmxleGlibHkgdG8gYW55IG92ZXJsYXlzLCB0aHVzIGFsbG93aW5nIHZlcnkKK2R5bmFtaWMgZGlzcGxheSBhcmNoaXRlY3R1cmUuCisKK1RoZSBkcml2ZXIgZXhwb3J0cyBzb21lIG9tYXBmYiBzcGVjaWZpYyBpb2N0bHMsIHdoaWNoIGFyZSBjb21wYXRpYmxlIHdpdGggdGhlCitpb2N0bHMgaW4gdGhlIG9sZCBkcml2ZXIuCisKK1RoZSByZXN0IG9mIHRoZSBub24gc3RhbmRhcmQgZmVhdHVyZXMgYXJlIGV4cG9ydGVkIHZpYSBzeXNmcy4gV2hldGhlciB0aGUgZmluYWwKK2ltcGxlbWVudGF0aW9uIHdpbGwgdXNlIHN5c2ZzLCBvciBpb2N0bHMsIGlzIHN0aWxsIG9wZW4uCisKK1Y0TDIgZHJpdmVycworLS0tLS0tLS0tLS0tCisKK1Y0TDIgaXMgYmVpbmcgaW1wbGVtZW50ZWQgaW4gVEkuCisKK0Zyb20gb21hcGRzcyBwb2ludCBvZiB2aWV3IHRoZSBWNEwyIGRyaXZlcnMgc2hvdWxkIGJlIHNpbWlsYXIgdG8gZnJhbWVidWZmZXIKK2RyaXZlci4KKworQXJjaGl0ZWN0dXJlCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTb21lIGNsYXJpZmljYXRpb24gd2hhdCB0aGUgZGlmZmVyZW50IGNvbXBvbmVudHMgZG86CisKKyAgICAtIEZyYW1lYnVmZmVyIGlzIGEgbWVtb3J5IGFyZWEgaW5zaWRlIE9NQVAncyBTUkFNL1NEUkFNIHRoYXQgY29udGFpbnMgdGhlCisgICAgICBwaXhlbCBkYXRhIGZvciB0aGUgaW1hZ2UuIEZyYW1lYnVmZmVyIGhhcyB3aWR0aCBhbmQgaGVpZ2h0IGFuZCBjb2xvcgorICAgICAgZGVwdGguCisgICAgLSBPdmVybGF5IGRlZmluZXMgd2hlcmUgdGhlIHBpeGVscyBhcmUgcmVhZCBmcm9tIGFuZCB3aGVyZSB0aGV5IGdvIG9uIHRoZQorICAgICAgc2NyZWVuLiBUaGUgb3ZlcmxheSBtYXkgYmUgc21hbGxlciB0aGFuIGZyYW1lYnVmZmVyLCB0aHVzIGRpc3BsYXlpbmcgb25seQorICAgICAgcGFydCBvZiB0aGUgZnJhbWVidWZmZXIuIFRoZSBwb3NpdGlvbiBvZiB0aGUgb3ZlcmxheSBtYXkgYmUgY2hhbmdlZCBpZgorICAgICAgdGhlIG92ZXJsYXkgaXMgc21hbGxlciB0aGFuIHRoZSBkaXNwbGF5LgorICAgIC0gT3ZlcmxheSBtYW5hZ2VyIGNvbWJpbmVzIHRoZSBvdmVybGF5cyBpbiB0byBvbmUgaW1hZ2UgYW5kIGZlZWRzIHRoZW0gdG8KKyAgICAgIGRpc3BsYXkuCisgICAgLSBEaXNwbGF5IGlzIHRoZSBhY3R1YWwgcGh5c2ljYWwgZGlzcGxheSBkZXZpY2UuCisKK0EgZnJhbWVidWZmZXIgY2FuIGJlIGNvbm5lY3RlZCB0byBtdWx0aXBsZSBvdmVybGF5cyB0byBzaG93IHRoZSBzYW1lIHBpeGVsIGRhdGEKK29uIGFsbCBvZiB0aGUgb3ZlcmxheXMuIE5vdGUgdGhhdCBpbiB0aGlzIGNhc2UgdGhlIG92ZXJsYXkgaW5wdXQgc2l6ZXMgbXVzdCBiZQordGhlIHNhbWUsIGJ1dCwgaW4gY2FzZSBvZiB2aWRlbyBvdmVybGF5cywgdGhlIG91dHB1dCBzaXplIGNhbiBiZSBkaWZmZXJlbnQuIEFueQorZnJhbWVidWZmZXIgY2FuIGJlIGNvbm5lY3RlZCB0byBhbnkgb3ZlcmxheS4KKworQW4gb3ZlcmxheSBjYW4gYmUgY29ubmVjdGVkIHRvIG9uZSBvdmVybGF5IG1hbmFnZXIuIEFsc28gRElTUEMgb3ZlcmxheXMgY2FuIGJlCitjb25uZWN0ZWQgb25seSB0byBESVNQQyBvdmVybGF5IG1hbmFnZXJzLCBhbmQgdmlydHVhbCBvdmVybGF5cyBjYW4gYmUgb25seQorY29ubmVjdGVkIHRvIHZpcnR1YWwgb3ZlcmxheXMuCisKK0FuIG92ZXJsYXkgbWFuYWdlciBjYW4gYmUgY29ubmVjdGVkIHRvIG9uZSBkaXNwbGF5LiBUaGVyZSBhcmUgY2VydGFpbgorcmVzdHJpY3Rpb25zIHdoaWNoIGtpbmRzIG9mIGRpc3BsYXlzIGFuIG92ZXJsYXkgbWFuYWdlciBjYW4gYmUgY29ubmVjdGVkOgorCisgICAgLSBESVNQQyBUViBvdmVybGF5IG1hbmFnZXIgY2FuIGJlIG9ubHkgY29ubmVjdGVkIHRvIFRWIGRpc3BsYXkuCisgICAgLSBWaXJ0dWFsIG92ZXJsYXkgbWFuYWdlcnMgY2FuIG9ubHkgYmUgY29ubmVjdGVkIHRvIERCSSBvciBEU0kgZGlzcGxheXMuCisgICAgLSBESVNQQyBMQ0Qgb3ZlcmxheSBtYW5hZ2VyIGNhbiBiZSBjb25uZWN0ZWQgdG8gYWxsIGRpc3BsYXlzLCBleGNlcHQgVFYKKyAgICAgIGRpc3BsYXkuCisKK1N5c2ZzCistLS0tLQorVGhlIHN5c2ZzIGludGVyZmFjZSBpcyBtYWlubHkgdXNlZCBmb3IgdGVzdGluZy4gSSBkb24ndCB0aGluayBzeXNmcworaW50ZXJmYWNlIGlzIHRoZSBiZXN0IGZvciB0aGlzIGluIHRoZSBmaW5hbCB2ZXJzaW9uLCBidXQgSSBkb24ndCBxdWl0ZSBrbm93Cit3aGF0IHdvdWxkIGJlIHRoZSBiZXN0IGludGVyZmFjZXMgZm9yIHRoZXNlIHRoaW5ncy4KKworVGhlIHN5c2ZzIGludGVyZmFjZSBpcyBkaXZpZGVkIHRvIHR3byBwYXJ0czogRFNTIGFuZCBGQi4KKworL3N5cy9jbGFzcy9ncmFwaGljcy9mYj8gZGlyZWN0b3J5OgorbWlycm9yCQkwPW9mZiwgMT1vbgorcm90YXRlCQlSb3RhdGlvbiAwLTMgZm9yIDAsIDkwLCAxODAsIDI3MCBkZWdyZWVzCityb3RhdGVfdHlwZQkwID0gRE1BIHJvdGF0aW9uLCAxID0gVlJGQiByb3RhdGlvbgorb3ZlcmxheXMJTGlzdCBvZiBvdmVybGF5IG51bWJlcnMgdG8gd2hpY2ggZnJhbWVidWZmZXIgcGl4ZWxzIGdvCitwaHlzX2FkZHIJUGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgZnJhbWVidWZmZXIKK3ZpcnRfYWRkcglWaXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIGZyYW1lYnVmZmVyCitzaXplCQlTaXplIG9mIHRoZSBmcmFtZWJ1ZmZlcgorCisvc3lzL2RldmljZXMvcGxhdGZvcm0vb21hcGRzcy9vdmVybGF5PyBkaXJlY3Rvcnk6CitlbmFibGVkCQkwPW9mZiwgMT1vbgoraW5wdXRfc2l6ZQl3aWR0aCxoZWlnaHQgKGllLiB0aGUgZnJhbWVidWZmZXIgc2l6ZSkKK21hbmFnZXIJCURlc3RpbmF0aW9uIG92ZXJsYXkgbWFuYWdlciBuYW1lCituYW1lCitvdXRwdXRfc2l6ZQl3aWR0aCxoZWlnaHQKK3Bvc2l0aW9uCXgseQorc2NyZWVuX3dpZHRoCXdpZHRoCitnbG9iYWxfYWxwaGEgICAJZ2xvYmFsIGFscGhhIDAtMjU1IDA9dHJhbnNwYXJlbnQgMjU1PW9wYXF1ZQorCisvc3lzL2RldmljZXMvcGxhdGZvcm0vb21hcGRzcy9tYW5hZ2VyPyBkaXJlY3Rvcnk6CitkaXNwbGF5CQkJCURlc3RpbmF0aW9uIGRpc3BsYXkKK25hbWUKK2FscGhhX2JsZW5kaW5nX2VuYWJsZWQJCTA9b2ZmLCAxPW9uCit0cmFuc19rZXlfZW5hYmxlZAkJMD1vZmYsIDE9b24KK3RyYW5zX2tleV90eXBlCQkJZ2Z4LWRlc3RpbmF0aW9uLCB2aWRlby1zb3VyY2UKK3RyYW5zX2tleV92YWx1ZQkJCXRyYW5zcGFyZW5jeSBjb2xvciBrZXkgKFJHQjI0KQorZGVmYXVsdF9jb2xvcgkJCWRlZmF1bHQgYmFja2dyb3VuZCBjb2xvciAoUkdCMjQpCisKKy9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9vbWFwZHNzL2Rpc3BsYXk/IGRpcmVjdG9yeToKK2N0cmxfbmFtZQlDb250cm9sbGVyIG5hbWUKK21pcnJvcgkJMD1vZmYsIDE9b24KK3VwZGF0ZV9tb2RlCTA9b2ZmLCAxPWF1dG8sIDI9bWFudWFsCitlbmFibGVkCQkwPW9mZiwgMT1vbgorbmFtZQorcm90YXRlCQlSb3RhdGlvbiAwLTMgZm9yIDAsIDkwLCAxODAsIDI3MCBkZWdyZWVzCit0aW1pbmdzCQlEaXNwbGF5IHRpbWluZ3MgKHBpeGNsb2NrLHhyZXMvaGZwL2hicC9oc3cseXJlcy92ZnAvdmJwL3ZzdykKKwkJV2hlbiB3cml0aW5nLCB0d28gc3BlY2lhbCB0aW1pbmdzIGFyZSBhY2NlcHRlZCBmb3IgdHYtb3V0OgorCQkicGFsIiBhbmQgIm50c2MiCitwYW5lbF9uYW1lCit0ZWFyX2VsaW0JVGVhcmluZyBlbGltaW5hdGlvbiAwPW9mZiwgMT1vbgorb3V0cHV0X3R5cGUJT3V0cHV0IHR5cGUgKHZpZGVvIGVuY29kZXIgb25seSk6ICJjb21wb3NpdGUiIG9yICJzdmlkZW8iCisKK1RoZXJlIGFyZSBhbHNvIHNvbWUgZGVidWdmcyBmaWxlcyBhdCA8ZGVidWdmcz4vb21hcGRzcy8gd2hpY2ggc2hvdyBpbmZvcm1hdGlvbgorYWJvdXQgY2xvY2tzIGFuZCByZWdpc3RlcnMuCisKK0V4YW1wbGVzCistLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIGRlZmluaXRpb25zIGhhdmUgYmVlbiBtYWRlIGZvciB0aGUgZXhhbXBsZXMgYmVsb3c6CisKK292bDA9L3N5cy9kZXZpY2VzL3BsYXRmb3JtL29tYXBkc3Mvb3ZlcmxheTAKK292bDE9L3N5cy9kZXZpY2VzL3BsYXRmb3JtL29tYXBkc3Mvb3ZlcmxheTEKK292bDI9L3N5cy9kZXZpY2VzL3BsYXRmb3JtL29tYXBkc3Mvb3ZlcmxheTIKKworbWdyMD0vc3lzL2RldmljZXMvcGxhdGZvcm0vb21hcGRzcy9tYW5hZ2VyMAorbWdyMT0vc3lzL2RldmljZXMvcGxhdGZvcm0vb21hcGRzcy9tYW5hZ2VyMQorCitsY2Q9L3N5cy9kZXZpY2VzL3BsYXRmb3JtL29tYXBkc3MvZGlzcGxheTAKK2R2aT0vc3lzL2RldmljZXMvcGxhdGZvcm0vb21hcGRzcy9kaXNwbGF5MQordHY9L3N5cy9kZXZpY2VzL3BsYXRmb3JtL29tYXBkc3MvZGlzcGxheTIKKworZmIwPS9zeXMvY2xhc3MvZ3JhcGhpY3MvZmIwCitmYjE9L3N5cy9jbGFzcy9ncmFwaGljcy9mYjEKK2ZiMj0vc3lzL2NsYXNzL2dyYXBoaWNzL2ZiMgorCitEZWZhdWx0IHNldHVwIG9uIE9NQVAzIFNEUAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSGVyZSdzIHRoZSBkZWZhdWx0IHNldHVwIG9uIE9NQVAzIFNEUCBib2FyZC4gQWxsIHBsYW5lcyBnbyB0byBMQ0QuIERWSQorYW5kIFRWLW91dCBhcmUgbm90IGluIHVzZS4gVGhlIGNvbHVtbnMgZnJvbSBsZWZ0IHRvIHJpZ2h0IGFyZToKK2ZyYW1lYnVmZmVycywgb3ZlcmxheXMsIG92ZXJsYXkgbWFuYWdlcnMsIGRpc3BsYXlzLiBGcmFtZWJ1ZmZlcnMgYXJlCitoYW5kbGVkIGJ5IG9tYXBmYiwgYW5kIHRoZSByZXN0IGJ5IHRoZSBEU1MuCisKK0ZCMCAtLS0gR0ZYICAtXCAgICAgICAgICAgIERWSQorRkIxIC0tLSBWSUQxIC0tKy0gTENEIC0tLS0gTENECitGQjIgLS0tIFZJRDIgLS8gICBUViAtLS0tLSBUVgorCitFeGFtcGxlOiBTd2l0Y2ggZnJvbSBMQ0QgdG8gRFZJCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3c9YGNhdCAkZHZpL3RpbWluZ3MgfCBjdXQgLWQgIiwiIC1mIDIgfCBjdXQgLWQgIi8iIC1mIDFgCitoPWBjYXQgJGR2aS90aW1pbmdzIHwgY3V0IC1kICIsIiAtZiAzIHwgY3V0IC1kICIvIiAtZiAxYAorCitlY2hvICIwIiA+ICRsY2QvZW5hYmxlZAorZWNobyAiIiA+ICRtZ3IwL2Rpc3BsYXkKK2Zic2V0IC1mYiAvZGV2L2ZiMCAteHJlcyAkdyAteXJlcyAkaCAtdnhyZXMgJHcgLXZ5cmVzICRoCisjIGF0IHRoaXMgcG9pbnQgeW91IGhhdmUgdG8gc3dpdGNoIHRoZSBkdmkvbGNkIGRpcC1zd2l0Y2ggZnJvbSB0aGUgb21hcCBib2FyZAorZWNobyAiZHZpIiA+ICRtZ3IwL2Rpc3BsYXkKK2VjaG8gIjEiID4gJGR2aS9lbmFibGVkCisKK0FmdGVyIHRoaXMgdGhlIGNvbmZpZ3VyYXRpb24gbG9va3MgbGlrZToKKworRkIwIC0tLSBHRlggIC1cICAgICAgICAgLS0gRFZJCitGQjEgLS0tIFZJRDEgLS0rLSBMQ0QgLS8gICBMQ0QKK0ZCMiAtLS0gVklEMiAtLyAgIFRWIC0tLS0tIFRWCisKK0V4YW1wbGU6IENsb25lIEdGWCBvdmVybGF5IHRvIExDRCBhbmQgVFYKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordz1gY2F0ICR0di90aW1pbmdzIHwgY3V0IC1kICIsIiAtZiAyIHwgY3V0IC1kICIvIiAtZiAxYAoraD1gY2F0ICR0di90aW1pbmdzIHwgY3V0IC1kICIsIiAtZiAzIHwgY3V0IC1kICIvIiAtZiAxYAorCitlY2hvICIwIiA+ICRvdmwwL2VuYWJsZWQKK2VjaG8gIjAiID4gJG92bDEvZW5hYmxlZAorCitlY2hvICIiID4gJGZiMS9vdmVybGF5cworZWNobyAiMCwxIiA+ICRmYjAvb3ZlcmxheXMKKworZWNobyAiJHcsJGgiID4gJG92bDEvb3V0cHV0X3NpemUKK2VjaG8gInR2IiA+ICRvdmwxL21hbmFnZXIKKworZWNobyAiMSIgPiAkb3ZsMC9lbmFibGVkCitlY2hvICIxIiA+ICRvdmwxL2VuYWJsZWQKKworZWNobyAiMSIgPiAkdHYvZW5hYmxlZAorCitBZnRlciB0aGlzIHRoZSBjb25maWd1cmF0aW9uIGxvb2tzIGxpa2UgKG9ubHkgcmVsZXZhbnQgcGFydHMgc2hvd24pOgorCitGQjAgKy0tIEdGWCAgLS0tLSBMQ0QgLS0tLSBMQ0QKKyAgICAgXC0gVklEMSAtLS0tIFRWICAtLS0tIFRWCisKK01pc2Mgbm90ZXMKKy0tLS0tLS0tLS0KKworT01BUCBGQiBhbGxvY2F0ZXMgdGhlIGZyYW1lYnVmZmVyIG1lbW9yeSB1c2luZyB0aGUgc3RhbmRhcmQgZG1hIGFsbG9jYXRvci4gWW91CitjYW4gZW5hYmxlIENvbnRpZ3VvdXMgTWVtb3J5IEFsbG9jYXRvciAoQ09ORklHX0NNQSkgdG8gaW1wcm92ZSB0aGUgZG1hCithbGxvY2F0b3IsIGFuZCBpZiBDTUEgaXMgZW5hYmxlZCwgeW91IHVzZSAiY21hPSIga2VybmVsIHBhcmFtZXRlciB0byBpbmNyZWFzZQordGhlIGdsb2JhbCBtZW1vcnkgYXJlYSBmb3IgQ01BLgorCitVc2luZyBEU0kgRFBMTCB0byBnZW5lcmF0ZSBwaXhlbCBjbG9jayBpdCBpcyBwb3NzaWJsZSBwcm9kdWNlIHRoZSBwaXhlbCBjbG9jaworb2YgODYuNU1IeiAobWF4IHBvc3NpYmxlKSwgYW5kIHdpdGggdGhhdCB5b3UgZ2V0IDEyODB4MTAyNEA1NyBvdXRwdXQgZnJvbSBEVkkuCisKK1JvdGF0aW9uIGFuZCBtaXJyb3JpbmcgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgUkdCNTY1IGFuZCBSR0I4ODg4IG1vZGVzLiBWUkZCCitkb2VzIG5vdCBzdXBwb3J0IG1pcnJvcmluZy4KKworVlJGQiByb3RhdGlvbiByZXF1aXJlcyBtdWNoIG1vcmUgbWVtb3J5IHRoYW4gbm9uLXJvdGF0ZWQgZnJhbWVidWZmZXIsIHNvIHlvdQorcHJvYmFibHkgbmVlZCB0byBpbmNyZWFzZSB5b3VyIHZyYW0gc2V0dGluZyBiZWZvcmUgdXNpbmcgVlJGQiByb3RhdGlvbi4gQWxzbywKK21hbnkgYXBwbGljYXRpb25zIG1heSBub3Qgd29yayB3aXRoIFZSRkIgaWYgdGhleSBkbyBub3QgcGF5IGF0dGVudGlvbiB0byBhbGwKK2ZyYW1lYnVmZmVyIHBhcmFtZXRlcnMuCisKK0tlcm5lbCBib290IGFyZ3VtZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK29tYXBmYi5tb2RlPTxkaXNwbGF5Pjo8bW9kZT5bLC4uLl0KKwktIERlZmF1bHQgdmlkZW8gbW9kZSBmb3Igc3BlY2lmaWVkIGRpc3BsYXlzLiBGb3IgZXhhbXBsZSwKKwkgICJkdmk6ODAweDQwME1SLTI0QDYwIi4gIFNlZSBkcml2ZXJzL3ZpZGVvL21vZGVkYi5jLgorCSAgVGhlcmUgYXJlIGFsc28gdHdvIHNwZWNpYWwgbW9kZXM6ICJwYWwiIGFuZCAibnRzYyIgdGhhdAorCSAgY2FuIGJlIHVzZWQgdG8gdHYgb3V0LgorCitvbWFwZmIudnJhbT08ZmJudW0+OjxzaXplPltAPHBoeXNhZGRyPl1bLC4uLl0KKwktIFZSQU0gYWxsb2NhdGVkIGZvciBhIGZyYW1lYnVmZmVyLiBOb3JtYWxseSBvbWFwZmIgYWxsb2NhdGVzIHZyYW0KKwkgIGRlcGVuZGluZyBvbiB0aGUgZGlzcGxheSBzaXplLiBXaXRoIHRoaXMgeW91IGNhbiBtYW51YWxseSBhbGxvY2F0ZQorCSAgbW9yZSBvciBkZWZpbmUgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgZWFjaCBmcmFtZWJ1ZmZlci4gRm9yIGV4YW1wbGUsCisJICAiMTo0TSIgdG8gYWxsb2NhdGUgNE0gZm9yIGZiMS4KKworb21hcGZiLmRlYnVnPTx5fG4+CisJLSBFbmFibGUgZGVidWcgcHJpbnRpbmcuIFlvdSBoYXZlIHRvIGhhdmUgT01BUEZCIGRlYnVnIHN1cHBvcnQgZW5hYmxlZAorCSAgaW4ga2VybmVsIGNvbmZpZy4KKworb21hcGZiLnRlc3Q9PHl8bj4KKwktIERyYXcgdGVzdCBwYXR0ZXJuIHRvIGZyYW1lYnVmZmVyIHdoZW5ldmVyIGZyYW1lYnVmZmVyIHNldHRpbmdzIGNoYW5nZS4KKwkgIFlvdSBuZWVkIHRvIGhhdmUgT01BUEZCIGRlYnVnIHN1cHBvcnQgZW5hYmxlZCBpbiBrZXJuZWwgY29uZmlnLgorCitvbWFwZmIudnJmYj08eXxuPgorCS0gVXNlIFZSRkIgcm90YXRpb24gZm9yIGFsbCBmcmFtZWJ1ZmZlcnMuCisKK29tYXBmYi5yb3RhdGU9PGFuZ2xlPgorCS0gRGVmYXVsdCByb3RhdGlvbiBhcHBsaWVkIHRvIGFsbCBmcmFtZWJ1ZmZlcnMuCisJICAwIC0gMCBkZWdyZWUgcm90YXRpb24KKwkgIDEgLSA5MCBkZWdyZWUgcm90YXRpb24KKwkgIDIgLSAxODAgZGVncmVlIHJvdGF0aW9uCisJICAzIC0gMjcwIGRlZ3JlZSByb3RhdGlvbgorCitvbWFwZmIubWlycm9yPTx5fG4+CisJLSBEZWZhdWx0IG1pcnJvciBmb3IgYWxsIGZyYW1lYnVmZmVycy4gT25seSB3b3JrcyB3aXRoIERNQSByb3RhdGlvbi4KKworb21hcGRzcy5kZWZfZGlzcD08ZGlzcGxheT4KKwktIE5hbWUgb2YgZGVmYXVsdCBkaXNwbGF5LCB0byB3aGljaCBhbGwgb3ZlcmxheXMgd2lsbCBiZSBjb25uZWN0ZWQuCisJICBDb21tb24gZXhhbXBsZXMgYXJlICJsY2QiIG9yICJ0diIuCisKK29tYXBkc3MuZGVidWc9PHl8bj4KKwktIEVuYWJsZSBkZWJ1ZyBwcmludGluZy4gWW91IGhhdmUgdG8gaGF2ZSBEU1MgZGVidWcgc3VwcG9ydCBlbmFibGVkIGluCisJICBrZXJuZWwgY29uZmlnLgorCitUT0RPCistLS0tCisKK0RTUyBsb2NraW5nCisKK0Vycm9yIGNoZWNraW5nCistIExvdHMgb2YgY2hlY2tzIGFyZSBtaXNzaW5nIG9yIGltcGxlbWVudGVkIGp1c3QgYXMgQlVHKCkKKworU3lzdGVtIERNQSB1cGRhdGUgZm9yIERTSQorLSBDYW4gYmUgdXNlZCBmb3IgUkdCMTYgYW5kIFJHQjI0UCBtb2Rlcy4gUHJvYmFibHkgbm90IGZvciBSR0IyNFUgKGhvdworICB0byBza2lwIHRoZSBlbXB0eSBieXRlPykKKworT01BUDEgc3VwcG9ydAorLSBOb3Qgc3VyZSBpZiBuZWVkZWQKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vT01BUC9SRUFETUUgYi9Eb2N1bWVudGF0aW9uL2FybS9PTUFQL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTY0NWM0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vT01BUC9SRUFETUUKQEAgLTAsMCArMSw3IEBACitUaGlzIGZpbGUgY29udGFpbnMgZG9jdW1lbnRhdGlvbiBmb3IgcnVubmluZyBtYWlubGluZQora2VybmVsIG9uIG9tYXBzLgorCitLRVJORUwJCU5FVyBERVBFTkRFTkNJRVMKK3Y0LjMrCQlVcGRhdGUgaXMgbmVlZGVkIGZvciBjdXN0b20gLmNvbmZpZyBmaWxlcyB0byBtYWtlIHN1cmUKKwkJQ09ORklHX1JFR1VMQVRPUl9QQklBUyBpcyBlbmFibGVkIGZvciBNTUMxIHRvIHdvcmsKKwkJcHJvcGVybHkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS9PTUFQL29tYXBfcG0gYi9Eb2N1bWVudGF0aW9uL2FybS9PTUFQL29tYXBfcG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFlOTE1YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL09NQVAvb21hcF9wbQpAQCAtMCwwICsxLDE1NCBAQAorCitUaGUgT01BUCBQTSBpbnRlcmZhY2UKKz09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgdGVtcG9yYXJ5IE9NQVAgUE0gaW50ZXJmYWNlLiAgRHJpdmVyCithdXRob3JzIHVzZSB0aGVzZSBmdW5jdGlvbnMgdG8gY29tbXVuaWNhdGUgbWluaW11bSBsYXRlbmN5IG9yCit0aHJvdWdocHV0IGNvbnN0cmFpbnRzIHRvIHRoZSBrZXJuZWwgcG93ZXIgbWFuYWdlbWVudCBjb2RlLgorT3ZlciB0aW1lLCB0aGUgaW50ZW50aW9uIGlzIHRvIG1lcmdlIGZlYXR1cmVzIGZyb20gdGhlIE9NQVAgUE0KK2ludGVyZmFjZSBpbnRvIHRoZSBMaW51eCBQTSBRb1MgY29kZS4KKworRHJpdmVycyBuZWVkIHRvIGV4cHJlc3MgUE0gcGFyYW1ldGVycyB3aGljaDoKKworLSBzdXBwb3J0IHRoZSByYW5nZSBvZiBwb3dlciBtYW5hZ2VtZW50IHBhcmFtZXRlcnMgcHJlc2VudCBpbiB0aGUgVEkgU1JGOworCistIHNlcGFyYXRlIHRoZSBkcml2ZXJzIGZyb20gdGhlIHVuZGVybHlpbmcgUE0gcGFyYW1ldGVyCisgIGltcGxlbWVudGF0aW9uLCB3aGV0aGVyIGl0IGlzIHRoZSBUSSBTUkYgb3IgTGludXggUE0gUW9TIG9yIExpbnV4CisgIGxhdGVuY3kgZnJhbWV3b3JrIG9yIHNvbWV0aGluZyBlbHNlOworCistIHNwZWNpZnkgUE0gcGFyYW1ldGVycyBpbiB0ZXJtcyBvZiBmdW5kYW1lbnRhbCB1bml0cywgc3VjaCBhcworICBsYXRlbmN5IGFuZCB0aHJvdWdocHV0LCByYXRoZXIgdGhhbiB1bml0cyB3aGljaCBhcmUgc3BlY2lmaWMgdG8gT01BUAorICBvciB0byBwYXJ0aWN1bGFyIE9NQVAgdmFyaWFudHM7CisKKy0gYWxsb3cgZHJpdmVycyB3aGljaCBhcmUgc2hhcmVkIHdpdGggb3RoZXIgYXJjaGl0ZWN0dXJlcyAoZS5nLiwKKyAgRGFWaW5jaSkgdG8gYWRkIHRoZXNlIGNvbnN0cmFpbnRzIGluIGEgd2F5IHdoaWNoIHdvbid0IGFmZmVjdCBub24tT01BUAorICBzeXN0ZW1zLAorCistIGNhbiBiZSBpbXBsZW1lbnRlZCBpbW1lZGlhdGVseSB3aXRoIG1pbmltYWwgZGlzcnVwdGlvbiBvZiBvdGhlcgorICBhcmNoaXRlY3R1cmVzLgorCisKK1RoaXMgZG9jdW1lbnQgcHJvcG9zZXMgdGhlIE9NQVAgUE0gaW50ZXJmYWNlLCBpbmNsdWRpbmcgdGhlIGZvbGxvd2luZworZml2ZSBwb3dlciBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBmb3IgZHJpdmVyIGNvZGU6CisKKzEuIFNldCB0aGUgbWF4aW11bSBNUFUgd2FrZXVwIGxhdGVuY3k6CisgICAoKnBkYXRhLT5zZXRfbWF4X21wdV93YWtldXBfbGF0KShzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgdCkKKworMi4gU2V0IHRoZSBtYXhpbXVtIGRldmljZSB3YWtldXAgbGF0ZW5jeToKKyAgICgqcGRhdGEtPnNldF9tYXhfZGV2X3dha2V1cF9sYXQpKHN0cnVjdCBkZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyB0KQorCiszLiBTZXQgdGhlIG1heGltdW0gc3lzdGVtIERNQSB0cmFuc2ZlciBzdGFydCBsYXRlbmN5IChDT1JFIHB3cmRtKToKKyAgICgqcGRhdGEtPnNldF9tYXhfc2RtYV9sYXQpKHN0cnVjdCBkZXZpY2UgKmRldiwgbG9uZyB0KQorCis0LiBTZXQgdGhlIG1pbmltdW0gYnVzIHRocm91Z2hwdXQgbmVlZGVkIGJ5IGEgZGV2aWNlOgorICAgKCpwZGF0YS0+c2V0X21pbl9idXNfdHB1dCkoc3RydWN0IGRldmljZSAqZGV2LCB1OCBhZ2VudF9pZCwgdW5zaWduZWQgbG9uZyByKQorCis1LiBSZXR1cm4gdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgZGV2aWNlIGhhcyBsb3N0IGNvbnRleHQKKyAgICgqcGRhdGEtPmdldF9kZXZfY29udGV4dF9sb3NzX2NvdW50KShzdHJ1Y3QgZGV2aWNlICpkZXYpCisKKworRnVydGhlciBkb2N1bWVudGF0aW9uIGZvciBhbGwgT01BUCBQTSBpbnRlcmZhY2UgZnVuY3Rpb25zIGNhbiBiZQorZm91bmQgaW4gYXJjaC9hcm0vcGxhdC1vbWFwL2luY2x1ZGUvbWFjaC9vbWFwLXBtLmguCisKKworVGhlIE9NQVAgUE0gbGF5ZXIgaXMgaW50ZW5kZWQgdG8gYmUgdGVtcG9yYXJ5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGludGVudGlvbiBpcyB0aGF0IGV2ZW50dWFsbHkgdGhlIExpbnV4IFBNIFFvUyBsYXllciBzaG91bGQgc3VwcG9ydAordGhlIHJhbmdlIG9mIHBvd2VyIG1hbmFnZW1lbnQgZmVhdHVyZXMgcHJlc2VudCBpbiBPTUFQMy4gIEFzIHRoaXMKK2hhcHBlbnMsIGV4aXN0aW5nIGRyaXZlcnMgdXNpbmcgdGhlIE9NQVAgUE0gaW50ZXJmYWNlIGNhbiBiZSBtb2RpZmllZAordG8gdXNlIHRoZSBMaW51eCBQTSBRb1MgY29kZTsgYW5kIHRoZSBPTUFQIFBNIGludGVyZmFjZSBjYW4gZGlzYXBwZWFyLgorCisKK0RyaXZlciB1c2FnZSBvZiB0aGUgT01BUCBQTSBmdW5jdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQXMgdGhlICdwZGF0YScgaW4gdGhlIGFib3ZlIGV4YW1wbGVzIGluZGljYXRlcywgdGhlc2UgZnVuY3Rpb25zIGFyZQorZXhwb3NlZCB0byBkcml2ZXJzIHRocm91Z2ggZnVuY3Rpb24gcG9pbnRlcnMgaW4gZHJpdmVyIC5wbGF0Zm9ybV9kYXRhCitzdHJ1Y3R1cmVzLiAgVGhlIGZ1bmN0aW9uIHBvaW50ZXJzIGFyZSBpbml0aWFsaXplZCBieSB0aGUgYm9hcmQtKi5jCitmaWxlcyB0byBwb2ludCB0byB0aGUgY29ycmVzcG9uZGluZyBPTUFQIFBNIGZ1bmN0aW9uczoKKy5zZXRfbWF4X2Rldl93YWtldXBfbGF0IHdpbGwgcG9pbnQgdG8KK29tYXBfcG1fc2V0X21heF9kZXZfd2FrZXVwX2xhdCgpLCBldGMuICBPdGhlciBhcmNoaXRlY3R1cmVzIHdoaWNoIGRvCitub3Qgc3VwcG9ydCB0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIGxlYXZlIHRoZXNlIGZ1bmN0aW9uIHBvaW50ZXJzIHNldAordG8gTlVMTC4gIERyaXZlcnMgc2hvdWxkIHVzZSB0aGUgZm9sbG93aW5nIGlkaW9tOgorCisgICAgICAgIGlmIChwZGF0YS0+c2V0X21heF9kZXZfd2FrZXVwX2xhdCkKKyAgICAgICAgICAgICgqcGRhdGEtPnNldF9tYXhfZGV2X3dha2V1cF9sYXQpKGRldiwgdCk7CisKK1RoZSBtb3N0IGNvbW1vbiB1c2FnZSBvZiB0aGVzZSBmdW5jdGlvbnMgd2lsbCBwcm9iYWJseSBiZSB0byBzcGVjaWZ5Cit0aGUgbWF4aW11bSB0aW1lIGZyb20gd2hlbiBhbiBpbnRlcnJ1cHQgb2NjdXJzLCB0byB3aGVuIHRoZSBkZXZpY2UKK2JlY29tZXMgYWNjZXNzaWJsZS4gIFRvIGFjY29tcGxpc2ggdGhpcywgZHJpdmVyIHdyaXRlcnMgc2hvdWxkIHVzZSB0aGUKK3NldF9tYXhfbXB1X3dha2V1cF9sYXQoKSBmdW5jdGlvbiB0byBjb25zdHJhaW4gdGhlIE1QVSB3YWtldXAKK2xhdGVuY3ksIGFuZCB0aGUgc2V0X21heF9kZXZfd2FrZXVwX2xhdCgpIGZ1bmN0aW9uIHRvIGNvbnN0cmFpbiB0aGUKK2RldmljZSB3YWtldXAgbGF0ZW5jeSAoZnJvbSBjbGtfZW5hYmxlKCkgdG8gYWNjZXNzaWJpbGl0eSkuICBGb3IKK2V4YW1wbGUsCisKKyAgICAgICAgLyogTGltaXQgTVBVIHdha2V1cCBsYXRlbmN5ICovCisgICAgICAgIGlmIChwZGF0YS0+c2V0X21heF9tcHVfd2FrZXVwX2xhdCkKKyAgICAgICAgICAgICgqcGRhdGEtPnNldF9tYXhfbXB1X3dha2V1cF9sYXQpKGRldiwgdGMpOworCisgICAgICAgIC8qIExpbWl0IGRldmljZSBwb3dlcmRvbWFpbiB3YWtldXAgbGF0ZW5jeSAqLworICAgICAgICBpZiAocGRhdGEtPnNldF9tYXhfZGV2X3dha2V1cF9sYXQpCisgICAgICAgICAgICAoKnBkYXRhLT5zZXRfbWF4X2Rldl93YWtldXBfbGF0KShkZXYsIHRkKTsKKworICAgICAgICAvKiB0b3RhbCB3YWtldXAgbGF0ZW5jeSBpbiB0aGlzIGV4YW1wbGU6ICh0YyArIHRkKSAqLworCitUaGUgUE0gcGFyYW1ldGVycyBjYW4gYmUgb3ZlcndyaXR0ZW4gYnkgY2FsbGluZyB0aGUgZnVuY3Rpb24gYWdhaW4KK3dpdGggdGhlIG5ldyB2YWx1ZS4gIFRoZSBzZXR0aW5ncyBjYW4gYmUgcmVtb3ZlZCBieSBjYWxsaW5nIHRoZQorZnVuY3Rpb24gd2l0aCBhIHQgYXJndW1lbnQgb2YgLTEgKGV4Y2VwdCBpbiB0aGUgY2FzZSBvZgorc2V0X21heF9idXNfdHB1dCgpLCB3aGljaCBzaG91bGQgYmUgY2FsbGVkIHdpdGggYW4gciBhcmd1bWVudCBvZiAwKS4KKworVGhlIGZpZnRoIGZ1bmN0aW9uIGFib3ZlLCBvbWFwX3BtX2dldF9kZXZfY29udGV4dF9sb3NzX2NvdW50KCksCitpcyBpbnRlbmRlZCBhcyBhbiBvcHRpbWl6YXRpb24gdG8gYWxsb3cgZHJpdmVycyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUKK2RldmljZSBoYXMgbG9zdCBpdHMgaW50ZXJuYWwgY29udGV4dC4gIElmIGNvbnRleHQgaGFzIGJlZW4gbG9zdCwgdGhlCitkcml2ZXIgbXVzdCByZXN0b3JlIGl0cyBpbnRlcm5hbCBjb250ZXh0IGJlZm9yZSBwcm9jZWVkaW5nLgorCisKK090aGVyIHNwZWNpYWxpemVkIGludGVyZmFjZSBmdW5jdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZpdmUgZnVuY3Rpb25zIGxpc3RlZCBhYm92ZSBhcmUgaW50ZW5kZWQgdG8gYmUgdXNhYmxlIGJ5IGFueQorZGV2aWNlIGRyaXZlci4gIERTUEJyaWRnZSBhbmQgQ1BVRnJlcSBoYXZlIGEgZmV3IHNwZWNpYWwgcmVxdWlyZW1lbnRzLgorRFNQQnJpZGdlIGV4cHJlc3NlcyB0YXJnZXQgRFNQIHBlcmZvcm1hbmNlIGxldmVscyBpbiB0ZXJtcyBvZiBPUFAgSURzLgorQ1BVRnJlcSBleHByZXNzZXMgdGFyZ2V0IE1QVSBwZXJmb3JtYW5jZSBsZXZlbHMgaW4gdGVybXMgb2YgTVBVCitmcmVxdWVuY3kuICBUaGUgT01BUCBQTSBpbnRlcmZhY2UgY29udGFpbnMgZnVuY3Rpb25zIGZvciB0aGVzZQorc3BlY2lhbGl6ZWQgY2FzZXMgdG8gY29udmVydCB0aGF0IGlucHV0IGluZm9ybWF0aW9uIChPUFBzL01QVQorZnJlcXVlbmN5KSBpbnRvIHRoZSBmb3JtIHRoYXQgdGhlIHVuZGVybHlpbmcgcG93ZXIgbWFuYWdlbWVudAoraW1wbGVtZW50YXRpb24gbmVlZHM6CisKKzYuICgqcGRhdGEtPmRzcF9nZXRfb3BwX3RhYmxlKSh2b2lkKQorCis3LiAoKnBkYXRhLT5kc3Bfc2V0X21pbl9vcHApKHU4IG9wcF9pZCkKKworOC4gKCpwZGF0YS0+ZHNwX2dldF9vcHApKHZvaWQpCisKKzkuICgqcGRhdGEtPmNwdV9nZXRfZnJlcV90YWJsZSkodm9pZCkKKworMTAuICgqcGRhdGEtPmNwdV9zZXRfZnJlcSkodW5zaWduZWQgbG9uZyBmKQorCisxMS4gKCpwZGF0YS0+Y3B1X2dldF9mcmVxKSh2b2lkKQorCitDdXN0b21pemluZyBPUFAgZm9yIHBsYXRmb3JtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CitEZWZpbmluZyBDT05GSUdfUE0gc2hvdWxkIGVuYWJsZSBPUFAgbGF5ZXIgZm9yIHRoZSBzaWxpY29uCithbmQgdGhlIHJlZ2lzdHJhdGlvbiBvZiBPUFAgdGFibGUgc2hvdWxkIHRha2UgcGxhY2UgYXV0b21hdGljYWxseS4KK0hvd2V2ZXIsIGluIHNwZWNpYWwgY2FzZXMsIHRoZSBkZWZhdWx0IE9QUCB0YWJsZSBtYXkgbmVlZCB0byBiZQordHdlYWtlZCwgZm9yIGUuZy46CisgKiBlbmFibGUgZGVmYXVsdCBPUFBzIHdoaWNoIGFyZSBkaXNhYmxlZCBieSBkZWZhdWx0LCBidXQgd2hpY2gKKyAgIGNvdWxkIGJlIGVuYWJsZWQgb24gYSBwbGF0Zm9ybQorICogRGlzYWJsZSBhbiB1bnN1cHBvcnRlZCBPUFAgb24gdGhlIHBsYXRmb3JtCisgKiBEZWZpbmUgYW5kIGFkZCBhIGN1c3RvbSBvcHAgdGFibGUgZW50cnkKK2luIHRoZXNlIGNhc2VzLCB0aGUgYm9hcmQgZmlsZSBuZWVkcyB0byBkbyBhZGRpdGlvbmFsIHN0ZXBzIGFzIGZvbGxvd3M6CithcmNoL2FybS9tYWNoLW9tYXB4L2JvYXJkLXh5ei5jCisJI2luY2x1ZGUgInBtLmgiCisJLi4uLgorCXN0YXRpYyB2b2lkIF9faW5pdCBvbWFwX3h5el9pbml0X2lycSh2b2lkKQorCXsKKwkJLi4uLgorCQkvKiBJbml0aWFsaXplIHRoZSBkZWZhdWx0IHRhYmxlICovCisJCW9tYXB4X29wcF9pbml0KCk7CisJCS8qIERvIGN1c3RvbWl6YXRpb24gdG8gdGhlIGRlZmF1bHRzICovCisJCS4uLi4KKwl9CitOT1RFOiBvbWFweF9vcHBfaW5pdCB3aWxsIGJlIG9tYXAzX29wcF9pbml0IG9yIGFzIHJlcXVpcmVkCitiYXNlZCBvbiB0aGUgb21hcCBmYW1pbHkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS9Qb3J0aW5nIGIvRG9jdW1lbnRhdGlvbi9hcm0vUG9ydGluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDkyMjMzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vUG9ydGluZwpAQCAtMCwwICsxLDEzNSBAQAorVGFrZW4gZnJvbSBsaXN0IGFyY2hpdmUgYXQgaHR0cDovL2xpc3RzLmFybS5saW51eC5vcmcudWsvcGlwZXJtYWlsL2xpbnV4LWFybS1rZXJuZWwvMjAwMS1KdWx5LzAwNDA2NC5odG1sCisKK0luaXRpYWwgZGVmaW5pdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZvbGxvd2luZyBzeW1ib2wgZGVmaW5pdGlvbnMgcmVseSBvbiB5b3Uga25vd2luZyB0aGUgdHJhbnNsYXRpb24gdGhhdAorX192aXJ0X3RvX3BoeXMoKSBkb2VzIGZvciB5b3VyIG1hY2hpbmUuICBUaGlzIG1hY3JvIGNvbnZlcnRzIHRoZSBwYXNzZWQKK3ZpcnR1YWwgYWRkcmVzcyB0byBhIHBoeXNpY2FsIGFkZHJlc3MuICBOb3JtYWxseSwgaXQgaXMgc2ltcGx5OgorCisJCXBoeXMgPSB2aXJ0IC0gUEFHRV9PRkZTRVQgKyBQSFlTX09GRlNFVAorCisKK0RlY29tcHJlc3NvciBTeW1ib2xzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitaVEVYVEFERFIKKwlTdGFydCBhZGRyZXNzIG9mIGRlY29tcHJlc3Nvci4gIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gdGFsa2luZyBhYm91dAorCXZpcnR1YWwgb3IgcGh5c2ljYWwgYWRkcmVzc2VzIGhlcmUsIHNpbmNlIHRoZSBNTVUgd2lsbCBiZSBvZmYgYXQKKwl0aGUgdGltZSB3aGVuIHlvdSBjYWxsIHRoZSBkZWNvbXByZXNzb3IgY29kZS4gIFlvdSBub3JtYWxseSBjYWxsCisJdGhlIGtlcm5lbCBhdCB0aGlzIGFkZHJlc3MgdG8gc3RhcnQgaXQgYm9vdGluZy4gIFRoaXMgZG9lc24ndCBoYXZlCisJdG8gYmUgbG9jYXRlZCBpbiBSQU0sIGl0IGNhbiBiZSBpbiBmbGFzaCBvciBvdGhlciByZWFkLW9ubHkgb3IKKwlyZWFkLXdyaXRlIGFkZHJlc3NhYmxlIG1lZGl1bS4KKworWkJTU0FERFIKKwlTdGFydCBhZGRyZXNzIG9mIHplcm8taW5pdGlhbGlzZWQgd29yayBhcmVhIGZvciB0aGUgZGVjb21wcmVzc29yLgorCVRoaXMgbXVzdCBiZSBwb2ludGluZyBhdCBSQU0uICBUaGUgZGVjb21wcmVzc29yIHdpbGwgemVybyBpbml0aWFsaXNlCisJdGhpcyBmb3IgeW91LiAgQWdhaW4sIHRoZSBNTVUgd2lsbCBiZSBvZmYuCisKK1pSRUxBRERSCisJVGhpcyBpcyB0aGUgYWRkcmVzcyB3aGVyZSB0aGUgZGVjb21wcmVzc2VkIGtlcm5lbCB3aWxsIGJlIHdyaXR0ZW4sCisJYW5kIGV2ZW50dWFsbHkgZXhlY3V0ZWQuICBUaGUgZm9sbG93aW5nIGNvbnN0cmFpbnQgbXVzdCBiZSB2YWxpZDoKKworCQlfX3ZpcnRfdG9fcGh5cyhURVhUQUREUikgPT0gWlJFTEFERFIKKworCVRoZSBpbml0aWFsIHBhcnQgb2YgdGhlIGtlcm5lbCBpcyBjYXJlZnVsbHkgY29kZWQgdG8gYmUgcG9zaXRpb24KKwlpbmRlcGVuZGVudC4KKworSU5JVFJEX1BIWVMKKwlQaHlzaWNhbCBhZGRyZXNzIHRvIHBsYWNlIHRoZSBpbml0aWFsIFJBTSBkaXNrLiAgT25seSByZWxldmFudCBpZgorCXlvdSBhcmUgdXNpbmcgdGhlIGJvb3RwSW1hZ2Ugc3R1ZmYgKHdoaWNoIG9ubHkgd29ya3Mgb24gdGhlIG9sZAorCXN0cnVjdCBwYXJhbV9zdHJ1Y3QpLgorCitJTklUUkRfVklSVAorCVZpcnR1YWwgYWRkcmVzcyBvZiB0aGUgaW5pdGlhbCBSQU0gZGlzay4gIFRoZSBmb2xsb3dpbmcgIGNvbnN0cmFpbnQKKwltdXN0IGJlIHZhbGlkOgorCisJCV9fdmlydF90b19waHlzKElOSVRSRF9WSVJUKSA9PSBJTklUUkRfUEhZUworCitQQVJBTVNfUEhZUworCVBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIHN0cnVjdCBwYXJhbV9zdHJ1Y3Qgb3IgdGFnIGxpc3QsIGdpdmluZyB0aGUKKwlrZXJuZWwgdmFyaW91cyBwYXJhbWV0ZXJzIGFib3V0IGl0cyBleGVjdXRpb24gZW52aXJvbm1lbnQuCisKKworS2VybmVsIFN5bWJvbHMKKy0tLS0tLS0tLS0tLS0tCisKK1BIWVNfT0ZGU0VUCisJUGh5c2ljYWwgc3RhcnQgYWRkcmVzcyBvZiB0aGUgZmlyc3QgYmFuayBvZiBSQU0uCisKK1BBR0VfT0ZGU0VUCisJVmlydHVhbCBzdGFydCBhZGRyZXNzIG9mIHRoZSBmaXJzdCBiYW5rIG9mIFJBTS4gIER1cmluZyB0aGUga2VybmVsCisJYm9vdCBwaGFzZSwgdmlydHVhbCBhZGRyZXNzIFBBR0VfT0ZGU0VUIHdpbGwgYmUgbWFwcGVkIHRvIHBoeXNpY2FsCisJYWRkcmVzcyBQSFlTX09GRlNFVCwgYWxvbmcgd2l0aCBhbnkgb3RoZXIgbWFwcGluZ3MgeW91IHN1cHBseS4KKwlUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSB2YWx1ZSBhcyBUQVNLX1NJWkUuCisKK1RBU0tfU0laRQorCVRoZSBtYXhpbXVtIHNpemUgb2YgYSB1c2VyIHByb2Nlc3MgaW4gYnl0ZXMuICBTaW5jZSB1c2VyIHNwYWNlCisJYWx3YXlzIHN0YXJ0cyBhdCB6ZXJvLCB0aGlzIGlzIHRoZSBtYXhpbXVtIGFkZHJlc3MgdGhhdCBhIHVzZXIKKwlwcm9jZXNzIGNhbiBhY2Nlc3MrMS4gIFRoZSB1c2VyIHNwYWNlIHN0YWNrIGdyb3dzIGRvd24gZnJvbSB0aGlzCisJYWRkcmVzcy4KKworCUFueSB2aXJ0dWFsIGFkZHJlc3MgYmVsb3cgVEFTS19TSVpFIGlzIGRlZW1lZCB0byBiZSB1c2VyIHByb2Nlc3MKKwlhcmVhLCBhbmQgdGhlcmVmb3JlIG1hbmFnZWQgZHluYW1pY2FsbHkgb24gYSBwcm9jZXNzIGJ5IHByb2Nlc3MKKwliYXNpcyBieSB0aGUga2VybmVsLiAgSSdsbCBjYWxsIHRoaXMgdGhlIHVzZXIgc2VnbWVudC4KKworCUFueXRoaW5nIGFib3ZlIFRBU0tfU0laRSBpcyBjb21tb24gdG8gYWxsIHByb2Nlc3Nlcy4gIEknbGwgY2FsbAorCXRoaXMgdGhlIGtlcm5lbCBzZWdtZW50LgorCisJKEluIG90aGVyIHdvcmRzLCB5b3UgY2FuJ3QgcHV0IElPIG1hcHBpbmdzIGJlbG93IFRBU0tfU0laRSwgYW5kCisJaGVuY2UgUEFHRV9PRkZTRVQpLgorCitURVhUQUREUgorCVZpcnR1YWwgc3RhcnQgYWRkcmVzcyBvZiBrZXJuZWwsIG5vcm1hbGx5IFBBR0VfT0ZGU0VUICsgMHg4MDAwLgorCVRoaXMgaXMgd2hlcmUgdGhlIGtlcm5lbCBpbWFnZSBlbmRzIHVwLiAgV2l0aCB0aGUgbGF0ZXN0IGtlcm5lbHMsCisJaXQgbXVzdCBiZSBsb2NhdGVkIGF0IDMyNzY4IGJ5dGVzIGludG8gYSAxMjhNQiByZWdpb24uICBQcmV2aW91cworCWtlcm5lbHMgcGxhY2VkIGEgcmVzdHJpY3Rpb24gb2YgMjU2TUIgaGVyZS4KKworREFUQUFERFIKKwlWaXJ0dWFsIGFkZHJlc3MgZm9yIHRoZSBrZXJuZWwgZGF0YSBzZWdtZW50LiAgTXVzdCBub3QgYmUgZGVmaW5lZAorCXdoZW4gdXNpbmcgdGhlIGRlY29tcHJlc3Nvci4KKworVk1BTExPQ19TVEFSVAorVk1BTExPQ19FTkQKKwlWaXJ0dWFsIGFkZHJlc3NlcyBib3VuZGluZyB0aGUgdm1hbGxvYygpIGFyZWEuICBUaGVyZSBtdXN0IG5vdCBiZQorCWFueSBzdGF0aWMgbWFwcGluZ3MgaW4gdGhpcyBhcmVhOyB2bWFsbG9jIHdpbGwgb3ZlcndyaXRlIHRoZW0uCisJVGhlIGFkZHJlc3NlcyBtdXN0IGFsc28gYmUgaW4gdGhlIGtlcm5lbCBzZWdtZW50IChzZWUgYWJvdmUpLgorCU5vcm1hbGx5LCB0aGUgdm1hbGxvYygpIGFyZWEgc3RhcnRzIFZNQUxMT0NfT0ZGU0VUIGJ5dGVzIGFib3ZlIHRoZQorCWxhc3QgdmlydHVhbCBSQU0gYWRkcmVzcyAoZm91bmQgdXNpbmcgdmFyaWFibGUgaGlnaF9tZW1vcnkpLgorCitWTUFMTE9DX09GRlNFVAorCU9mZnNldCBub3JtYWxseSBpbmNvcnBvcmF0ZWQgaW50byBWTUFMTE9DX1NUQVJUIHRvIHByb3ZpZGUgYSBob2xlCisJYmV0d2VlbiB2aXJ0dWFsIFJBTSBhbmQgdGhlIHZtYWxsb2MgYXJlYS4gIFdlIGRvIHRoaXMgdG8gYWxsb3cKKwlvdXQgb2YgYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyAoZWcsIHNvbWV0aGluZyB3cml0aW5nIG9mZiB0aGUgZW5kCisJb2YgdGhlIG1hcHBlZCBtZW1vcnkgbWFwKSB0byBiZSBjYXVnaHQuICBOb3JtYWxseSBzZXQgdG8gOE1CLgorCitBcmNoaXRlY3R1cmUgU3BlY2lmaWMgTWFjcm9zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JPT1RfTUVNKHByYW0scGlvLHZpbykKKwlgcHJhbScgc3BlY2lmaWVzIHRoZSBwaHlzaWNhbCBzdGFydCBhZGRyZXNzIG9mIFJBTS4gIE11c3QgYWx3YXlzCisJYmUgcHJlc2VudCwgYW5kIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBQSFlTX09GRlNFVC4KKworCWBwaW8nIGlzIHRoZSBwaHlzaWNhbCBhZGRyZXNzIG9mIGFuIDhNQiByZWdpb24gY29udGFpbmluZyBJTyBmb3IKKwl1c2Ugd2l0aCB0aGUgZGVidWdnaW5nIG1hY3JvcyBpbiBhcmNoL2FybS9rZXJuZWwvZGVidWctYXJtdi5TLgorCisJYHZpbycgaXMgdGhlIHZpcnR1YWwgYWRkcmVzcyBvZiB0aGUgOE1CIGRlYnVnZ2luZyByZWdpb24uCisKKwlJdCBpcyBleHBlY3RlZCB0aGF0IHRoZSBkZWJ1Z2dpbmcgcmVnaW9uIHdpbGwgYmUgcmUtaW5pdGlhbGlzZWQKKwlieSB0aGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGNvZGUgbGF0ZXIgaW4gdGhlIGNvZGUgKHZpYSB0aGUKKwlNQVBJTyBmdW5jdGlvbikuCisKK0JPT1RfUEFSQU1TCisJU2FtZSBhcywgYW5kIHNlZSBQQVJBTVNfUEhZUy4KKworRklYVVAoZnVuYykKKwlNYWNoaW5lIHNwZWNpZmljIGZpeHVwcywgcnVuIGJlZm9yZSBtZW1vcnkgc3Vic3lzdGVtcyBoYXZlIGJlZW4KKwlpbml0aWFsaXNlZC4KKworTUFQSU8oZnVuYykKKwlNYWNoaW5lIHNwZWNpZmljIGZ1bmN0aW9uIHRvIG1hcCBJTyBhcmVhcyAoaW5jbHVkaW5nIHRoZSBkZWJ1ZworCXJlZ2lvbiBhYm92ZSkuCisKK0lOSVRJUlEoZnVuYykKKwlNYWNoaW5lIHNwZWNpZmljIGZ1bmN0aW9uIHRvIGluaXRpYWxpc2UgaW50ZXJydXB0cy4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vUkVBRE1FIGIvRG9jdW1lbnRhdGlvbi9hcm0vUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkMWU1YjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9SRUFETUUKQEAgLTAsMCArMSwyMDQgQEAKKwkJCSAgIEFSTSBMaW51eCAyLjYKKwkJCSAgID09PT09PT09PT09PT0KKworICAgIFBsZWFzZSBjaGVjayA8ZnRwOi8vZnRwLmFybS5saW51eC5vcmcudWsvcHViL2FybWxpbnV4PiBmb3IKKyAgICB1cGRhdGVzLgorCitDb21waWxhdGlvbiBvZiBrZXJuZWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEluIG9yZGVyIHRvIGNvbXBpbGUgQVJNIExpbnV4LCB5b3Ugd2lsbCBuZWVkIGEgY29tcGlsZXIgY2FwYWJsZSBvZgorICBnZW5lcmF0aW5nIEFSTSBFTEYgY29kZSB3aXRoIEdOVSBleHRlbnNpb25zLiAgR0NDIDMuMyBpcyBrbm93biB0byBiZQorICBhIGdvb2QgY29tcGlsZXIuICBGb3J0dW5hdGVseSwgeW91IG5lZWRuJ3QgZ3Vlc3MuICBUaGUga2VybmVsIHdpbGwgcmVwb3J0CisgIGFuIGVycm9yIGlmIHlvdXIgY29tcGlsZXIgaXMgYSByZWNvZ25pemVkIG9mZmVuZGVyLgorCisgIFRvIGJ1aWxkIEFSTSBMaW51eCBuYXRpdmVseSwgeW91IHNob3VsZG4ndCBoYXZlIHRvIGFsdGVyIHRoZSBBUkNIID0gbGluZQorICBpbiB0aGUgdG9wIGxldmVsIE1ha2VmaWxlLiAgSG93ZXZlciwgaWYgeW91IGRvbid0IGhhdmUgdGhlIEFSTSBMaW51eCBFTEYKKyAgdG9vbHMgaW5zdGFsbGVkIGFzIGRlZmF1bHQsIHRoZW4geW91IHNob3VsZCBjaGFuZ2UgdGhlIENST1NTX0NPTVBJTEUKKyAgbGluZSBhcyBkZXRhaWxlZCBiZWxvdy4KKworICBJZiB5b3Ugd2lzaCB0byBjcm9zcy1jb21waWxlLCB0aGVuIGFsdGVyIHRoZSBmb2xsb3dpbmcgbGluZXMgaW4gdGhlIHRvcAorICBsZXZlbCBtYWtlIGZpbGU6CisKKyAgICBBUkNIID0gPHdoYXRldmVyPgorCXdpdGgKKyAgICBBUkNIID0gYXJtCisKKwlhbmQKKworICAgIENST1NTX0NPTVBJTEU9CisJdG8KKyAgICBDUk9TU19DT01QSUxFPTx5b3VyLXBhdGgtdG8teW91ci1jb21waWxlci13aXRob3V0LWdjYz4KKwllZy4KKyAgICBDUk9TU19DT01QSUxFPWFybS1saW51eC0KKworICBEbyBhICdtYWtlIGNvbmZpZycsIGZvbGxvd2VkIGJ5ICdtYWtlIEltYWdlJyB0byBidWlsZCB0aGUga2VybmVsIAorICAoYXJjaC9hcm0vYm9vdC9JbWFnZSkuICBBIGNvbXByZXNzZWQgaW1hZ2UgY2FuIGJlIGJ1aWx0IGJ5IGRvaW5nIGEgCisgICdtYWtlIHpJbWFnZScgaW5zdGVhZCBvZiAnbWFrZSBJbWFnZScuCisKKworQnVnIHJlcG9ydHMgZXRjCistLS0tLS0tLS0tLS0tLS0KKworICBQbGVhc2Ugc2VuZCBwYXRjaGVzIHRvIHRoZSBwYXRjaCBzeXN0ZW0uICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlCisgIGh0dHA6Ly93d3cuYXJtLmxpbnV4Lm9yZy51ay9kZXZlbG9wZXIvcGF0Y2hlcy9pbmZvLnBocCBBbHdheXMgaW5jbHVkZSBzb21lCisgIGV4cGxhbmF0aW9uIGFzIHRvIHdoYXQgdGhlIHBhdGNoIGRvZXMgYW5kIHdoeSBpdCBpcyBuZWVkZWQuCisKKyAgQnVnIHJlcG9ydHMgc2hvdWxkIGJlIHNlbnQgdG8gbGludXgtYXJtLWtlcm5lbEBsaXN0cy5hcm0ubGludXgub3JnLnVrLAorICBvciBzdWJtaXR0ZWQgdGhyb3VnaCB0aGUgd2ViIGZvcm0gYXQKKyAgaHR0cDovL3d3dy5hcm0ubGludXgub3JnLnVrL2RldmVsb3Blci8gCisKKyAgV2hlbiBzZW5kaW5nIGJ1ZyByZXBvcnRzLCBwbGVhc2UgZW5zdXJlIHRoYXQgdGhleSBjb250YWluIGFsbCByZWxldmFudAorICBpbmZvcm1hdGlvbiwgZWcuIHRoZSBrZXJuZWwgbWVzc2FnZXMgdGhhdCB3ZXJlIHByaW50ZWQgYmVmb3JlL2R1cmluZworICB0aGUgcHJvYmxlbSwgd2hhdCB5b3Ugd2VyZSBkb2luZywgZXRjLgorCisKK0luY2x1ZGUgZmlsZXMKKy0tLS0tLS0tLS0tLS0KKworICBTZXZlcmFsIG5ldyBpbmNsdWRlIGRpcmVjdG9yaWVzIGhhdmUgYmVlbiBjcmVhdGVkIHVuZGVyIGluY2x1ZGUvYXNtLWFybSwKKyAgd2hpY2ggYXJlIHRoZXJlIHRvIHJlZHVjZSB0aGUgY2x1dHRlciBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4gIFRoZXNlCisgIGRpcmVjdG9yaWVzLCBhbmQgdGhlaXIgcHVycG9zZSBpcyBsaXN0ZWQgYmVsb3c6CisKKyAgIGFyY2gtKgltYWNoaW5lL3BsYXRmb3JtIHNwZWNpZmljIGhlYWRlciBmaWxlcworICAgaGFyZHdhcmUJZHJpdmVyLWludGVybmFsIEFSTSBzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZXMvZGVmaW5pdGlvbnMKKyAgIG1hY2gJCWRlc2NyaXB0aW9ucyBvZiBnZW5lcmljIEFSTSB0byBzcGVjaWZpYyBtYWNoaW5lIGludGVyZmFjZXMKKyAgIHByb2MtKglwcm9jZXNzb3IgZGVwZW5kZW50IGhlYWRlciBmaWxlcyAoY3VycmVudGx5IG9ubHkgdHdvCisJCWNhdGVnb3JpZXMpCisKKworTWFjaGluZS9QbGF0Zm9ybSBzdXBwb3J0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGUgQVJNIHRyZWUgY29udGFpbnMgc3VwcG9ydCBmb3IgYSBsb3Qgb2YgZGlmZmVyZW50IG1hY2hpbmUgdHlwZXMuICBUbworICBjb250aW51ZSBzdXBwb3J0aW5nIHRoZXNlIGRpZmZlcmVuY2VzLCBpdCBoYXMgYmVjb21lIG5lY2Vzc2FyeSB0byBzcGxpdAorICBtYWNoaW5lLXNwZWNpZmljIHBhcnRzIGJ5IGRpcmVjdG9yeS4gIEZvciB0aGlzLCB0aGUgbWFjaGluZSBjYXRlZ29yeSBpcworICB1c2VkIHRvIHNlbGVjdCB3aGljaCBkaXJlY3RvcmllcyBhbmQgZmlsZXMgZ2V0IGluY2x1ZGVkICh3ZSB3aWxsIHVzZQorICAkKE1BQ0hJTkUpIHRvIHJlZmVyIHRvIHRoZSBjYXRlZ29yeSkKKworICBUbyB0aGlzIGVuZCwgd2Ugbm93IGhhdmUgYXJjaC9hcm0vbWFjaC0kKE1BQ0hJTkUpIGRpcmVjdG9yaWVzIHdoaWNoIGFyZQorICBkZXNpZ25lZCB0byBob3VzZSB0aGUgbm9uLWRyaXZlciBmaWxlcyBmb3IgYSBwYXJ0aWN1bGFyIG1hY2hpbmUgKGVnLCBQQ0ksCisgIG1lbW9yeSBtYW5hZ2VtZW50LCBhcmNoaXRlY3R1cmUgZGVmaW5pdGlvbnMgZXRjKS4gIEZvciBhbGwgZnV0dXJlCisgIG1hY2hpbmVzLCB0aGVyZSBzaG91bGQgYmUgYSBjb3JyZXNwb25kaW5nIGFyY2gvYXJtL21hY2gtJChNQUNISU5FKS9pbmNsdWRlL21hY2gKKyAgZGlyZWN0b3J5LgorCisKK01vZHVsZXMKKy0tLS0tLS0KKworICBBbHRob3VnaCBtb2R1bGFyaXNhdGlvbiBpcyBzdXBwb3J0ZWQgKGFuZCByZXF1aXJlZCBmb3IgdGhlIEZQIGVtdWxhdG9yKSwKKyAgZWFjaCBtb2R1bGUgb24gYW4gQVJNMi9BUk0yNTAvQVJNMyBtYWNoaW5lIHdoZW4gaXMgbG9hZGVkIHdpbGwgdGFrZQorICBtZW1vcnkgdXAgdG8gdGhlIG5leHQgMzJrIGJvdW5kYXJ5IGR1ZSB0byB0aGUgc2l6ZSBvZiB0aGUgcGFnZXMuCisgIFRoZXJlZm9yZSwgaXMgbW9kdWxhcmlzYXRpb24gb24gdGhlc2UgbWFjaGluZXMgcmVhbGx5IHdvcnRoIGl0PworCisgIEhvd2V2ZXIsIEFSTTYgYW5kIHVwIG1hY2hpbmVzIGFsbG93IG1vZHVsZXMgdG8gdGFrZSBtdWx0aXBsZXMgb2YgNGssIGFuZAorICBhcyBzdWNoIEFjb3JuIFJpc2NQQ3MgYW5kIG90aGVyIGFyY2hpdGVjdHVyZXMgdXNpbmcgdGhlc2UgcHJvY2Vzc29ycyBjYW4KKyAgbWFrZSBnb29kIHVzZSBvZiBtb2R1bGFyaXNhdGlvbi4KKworCitBREZTIEltYWdlIGZpbGVzCistLS0tLS0tLS0tLS0tLS0tCisKKyAgWW91IGNhbiBhY2Nlc3MgaW1hZ2UgZmlsZXMgb24geW91ciBBREZTIHBhcnRpdGlvbnMgYnkgbW91bnRpbmcgdGhlIEFERlMKKyAgcGFydGl0aW9uLCBhbmQgdGhlbiB1c2luZyB0aGUgbG9vcGJhY2sgZGV2aWNlIGRyaXZlci4gIFlvdSBtdXN0IGhhdmUKKyAgbG9zZXR1cCBpbnN0YWxsZWQuCisKKyAgUGxlYXNlIG5vdGUgdGhhdCB0aGUgUENFbXVsYXRvciBET1MgcGFydGl0aW9ucyBoYXZlIGEgcGFydGl0aW9uIHRhYmxlIGF0CisgIHRoZSBzdGFydCwgYW5kIGFzIHN1Y2gsIHlvdSB3aWxsIGhhdmUgdG8gZ2l2ZSAnLW8gb2Zmc2V0JyB0byBsb3NldHVwLgorCisKK1JlcXVlc3QgdG8gZGV2ZWxvcGVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgV2hlbiB3cml0aW5nIGRldmljZSBkcml2ZXJzIHdoaWNoIGluY2x1ZGUgYSBzZXBhcmF0ZSBhc3NlbWJsZXIgZmlsZSwgcGxlYXNlCisgIGluY2x1ZGUgaXQgaW4gd2l0aCB0aGUgQyBmaWxlLCBhbmQgbm90IHRoZSBhcmNoL2FybS9saWIgZGlyZWN0b3J5LiAgVGhpcworICBhbGxvd3MgdGhlIGRyaXZlciB0byBiZSBjb21waWxlZCBhcyBhIGxvYWRhYmxlIG1vZHVsZSB3aXRob3V0IHJlcXVpcmluZworICBoYWxmIHRoZSBjb2RlIHRvIGJlIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCBpbWFnZS4KKworICBJbiBnZW5lcmFsLCB0cnkgdG8gYXZvaWQgdXNpbmcgYXNzZW1ibGVyIHVubGVzcyBpdCBpcyByZWFsbHkgbmVjZXNzYXJ5LiAgSXQKKyAgbWFrZXMgZHJpdmVycyBmYXIgbGVzcyBlYXN5IHRvIHBvcnQgdG8gb3RoZXIgaGFyZHdhcmUuCisKKworU1Q1MDYgaGFyZCBkcml2ZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlIFNUNTA2IGhhcmQgZHJpdmUgY29udHJvbGxlcnMgc2VlbSB0byBiZSB3b3JraW5nIGZpbmUgKGlmIGEgbGl0dGxlCisgIHNsb3dseSkuICBBdCB0aGUgbW9tZW50IHRoZXkgd2lsbCBvbmx5IHdvcmsgb2ZmIHRoZSBjb250cm9sbGVycyBvbiBhbgorICBBNHgwJ3MgbW90aGVyYm9hcmQsIGJ1dCBmb3IgaXQgdG8gd29yayBvZmYgYSBQb2R1bGUganVzdCByZXF1aXJlcworICBzb21lb25lIHdpdGggYSBwb2R1bGUgdG8gYWRkIHRoZSBhZGRyZXNzZXMgZm9yIHRoZSBJUlEgbWFzayBhbmQgdGhlCisgIEhEQyBiYXNlIHRvIHRoZSBzb3VyY2UuCisKKyAgQXMgb2YgMzEvMy85NiBpdCB3b3JrcyB3aXRoIHR3byBkcml2ZXMgKHlvdSBzaG91bGQgZ2V0IHRoZSBBREZTCisgICpjb25maWd1cmUgaGFyZGRyaXZlIHNldCB0byAyKS4gSSd2ZSBnb3QgYW4gaW50ZXJuYWwgMjBNQiBhbmQgYSBncmVhdAorICBiaWcgZXh0ZXJuYWwgNS4yNSIgRkggNjRNQiBkcml2ZSAod2hvIGNvdWxkIGV2ZXIgd2FudCBtb3JlIDotKSApLgorCisgIEkndmUganVzdCBnb3QgMjQwSy9zIG9mZiBpdCAoYSBkZCB3aXRoIGJzPTEyOGspOyB0aGF0cyBhYm91dCBoYWxmIG9mIHdoYXQKKyAgUmlzY09TIGdldHM7IGJ1dCBpdCdzIGEgaGVjayBvZiBhIGxvdCBiZXR0ZXIgdGhhbiB0aGUgNTBLL3MgSSB3YXMgZ2V0dGluZworICBsYXN0IHdlZWsgOi0pCisKKyAgS25vd24gYnVnOiBEcml2ZSBkYXRhIGVycm9ycyBjYW4gY2F1c2UgYSBoYW5nOyBpbmNsdWRpbmcgY2FzZXMgd2hlcmUKKyAgdGhlIGNvbnRyb2xsZXIgaGFzIGZpeGVkIHRoZSBlcnJvciB1c2luZyBFQ0MuIChQb3NzaWJseSBPTkxZCisgIGluIHRoYXQgY2FzZS4uLmhtbSkuCisKKworMTc3MiBGbG9wcHkKKy0tLS0tLS0tLS0tCisgIFRoaXMgYWxzbyBzZWVtcyB0byB3b3JrIE9LLCBidXQgaGFzbid0IGJlZW4gc3RyZXNzZWQgbXVjaCBsYXRlbHkuICBJdAorICBoYXNuJ3QgZ290IGFueSBjb2RlIGZvciBkaXNjIGNoYW5nZSBkZXRlY3Rpb24gaW4gdGhlcmUgYXQgdGhlIG1vbWVudCB3aGljaAorICBjb3VsZCBiZSBhIGJpdCBvZiBhIHByb2JsZW0hICBTdWdnZXN0aW9ucyBvbiB0aGUgY29ycmVjdCB3YXkgdG8gZG8gdGhpcworICBhcmUgd2VsY29tZS4KKworCitDT05GSUdfTUFDSF8gYW5kIENPTkZJR19BUkNIXworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgQSBjaGFuZ2Ugd2FzIG1hZGUgaW4gMjAwMyB0byB0aGUgbWFjcm8gbmFtZXMgZm9yIG5ldyBtYWNoaW5lcy4KKyAgSGlzdG9yaWNhbGx5LCBDT05GSUdfQVJDSF8gd2FzIHVzZWQgZm9yIHRoZSBib25hZmlkZSBhcmNoaXRlY3R1cmUsCisgIGUuZy4gU0ExMTAwLCBhcyB3ZWxsIGFzIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgYXJjaGl0ZWN0dXJlLAorICBlLmcuIEFzc2FiZXQuICBJdCB3YXMgZGVjaWRlZCB0byBjaGFuZ2UgdGhlIGltcGxlbWVudGF0aW9uIG1hY3JvcworICB0byByZWFkIENPTkZJR19NQUNIXyBmb3IgY2xhcml0eS4gIE1vcmVvdmVyLCBhIHJldHJvYWN0aXZlIGZpeHVwIGhhcworICBub3QgYmVlbiBtYWRlIGJlY2F1c2UgaXQgd291bGQgY29tcGxpY2F0ZSBwYXRjaGluZy4KKworICBQcmV2aW91cyByZWdpc3RyYXRpb25zIG1heSBiZSBmb3VuZCBvbmxpbmUuCisKKyAgICA8aHR0cDovL3d3dy5hcm0ubGludXgub3JnLnVrL2RldmVsb3Blci9tYWNoaW5lcy8+CisKK0tlcm5lbCBlbnRyeSAoaGVhZC5TKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgVGhlIGluaXRpYWwgZW50cnkgaW50byB0aGUga2VybmVsIGlzIHZpYSBoZWFkLlMsIHdoaWNoIHVzZXMgbWFjaGluZQorICBpbmRlcGVuZGVudCBjb2RlLiAgVGhlIG1hY2hpbmUgaXMgc2VsZWN0ZWQgYnkgdGhlIHZhbHVlIG9mICdyMScgb24KKyAgZW50cnksIHdoaWNoIG11c3QgYmUga2VwdCB1bmlxdWUuCisKKyAgRHVlIHRvIHRoZSBsYXJnZSBudW1iZXIgb2YgbWFjaGluZXMgd2hpY2ggdGhlIEFSTSBwb3J0IG9mIExpbnV4IHByb3ZpZGVzCisgIGZvciwgd2UgaGF2ZSBhIG1ldGhvZCB0byBtYW5hZ2UgdGhpcyB3aGljaCBlbnN1cmVzIHRoYXQgd2UgZG9uJ3QgZW5kIHVwCisgIGR1cGxpY2F0aW5nIGxhcmdlIGFtb3VudHMgb2YgY29kZS4KKworICBXZSBncm91cCBtYWNoaW5lIChvciBwbGF0Zm9ybSkgc3VwcG9ydCBjb2RlIGludG8gbWFjaGluZSBjbGFzc2VzLiAgQQorICBjbGFzcyB0eXBpY2FsbHkgYmFzZWQgYXJvdW5kIG9uZSBvciBtb3JlIHN5c3RlbSBvbiBhIGNoaXAgZGV2aWNlcywgYW5kCisgIGFjdHMgYXMgYSBuYXR1cmFsIGNvbnRhaW5lciBhcm91bmQgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbnMuICBUaGVzZQorICBjbGFzc2VzIGFyZSBnaXZlbiBkaXJlY3RvcmllcyAtIGFyY2gvYXJtL21hY2gtPGNsYXNzPiBhbmQKKyAgYXJjaC9hcm0vbWFjaC08Y2xhc3M+IC0gd2hpY2ggY29udGFpbiB0aGUgc291cmNlIGZpbGVzIHRvL2luY2x1ZGUvbWFjaAorICBzdXBwb3J0IHRoZSBtYWNoaW5lIGNsYXNzLiAgVGhpcyBkaXJlY3RvcmllcyBhbHNvIGNvbnRhaW4gYW55IG1hY2hpbmUKKyAgc3BlY2lmaWMgc3VwcG9ydGluZyBjb2RlLgorCisgIEZvciBleGFtcGxlLCB0aGUgU0ExMTAwIGNsYXNzIGlzIGJhc2VkIHVwb24gdGhlIFNBMTEwMCBhbmQgU0ExMTEwIFNvQworICBkZXZpY2VzLCBhbmQgY29udGFpbnMgdGhlIGNvZGUgdG8gc3VwcG9ydCB0aGUgd2F5IHRoZSBvbi1ib2FyZCBhbmQgb2ZmLQorICBib2FyZCBkZXZpY2VzIGFyZSB1c2VkLCBvciB0aGUgZGV2aWNlIGlzIHNldHVwLCBhbmQgcHJvdmlkZXMgdGhhdAorICBtYWNoaW5lIHNwZWNpZmljICJwZXJzb25hbGl0eS4iCisKKyAgRm9yIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgZGV2aWNlIHRyZWUgKERUKSwgdGhlIG1hY2hpbmUgc2VsZWN0aW9uIGlzCisgIGNvbnRyb2xsZWQgYXQgcnVudGltZSBieSBwYXNzaW5nIHRoZSBkZXZpY2UgdHJlZSBibG9iIHRvIHRoZSBrZXJuZWwuICBBdAorICBjb21waWxlLXRpbWUsIHN1cHBvcnQgZm9yIHRoZSBtYWNoaW5lIHR5cGUgbXVzdCBiZSBzZWxlY3RlZC4gIFRoaXMgYWxsb3dzIGZvcgorICBhIHNpbmdsZSBtdWx0aXBsYXRmb3JtIGtlcm5lbCBidWlsZCB0byBiZSB1c2VkIGZvciBzZXZlcmFsIG1hY2hpbmUgdHlwZXMuCisKKyAgRm9yIHBsYXRmb3JtcyB0aGF0IGRvIG5vdCB1c2UgZGV2aWNlIHRyZWUsIHRoaXMgbWFjaGluZSBzZWxlY3Rpb24gaXMKKyAgY29udHJvbGxlZCBieSB0aGUgbWFjaGluZSB0eXBlIElELCB3aGljaCBhY3RzIGJvdGggYXMgYSBydW4tdGltZSBhbmQgYQorICBjb21waWxlLXRpbWUgY29kZSBzZWxlY3Rpb24gbWV0aG9kLiAgWW91IGNhbiByZWdpc3RlciBhIG5ldyBtYWNoaW5lIHZpYSB0aGUKKyAgd2ViIHNpdGUgYXQ6CisKKyAgICA8aHR0cDovL3d3dy5hcm0ubGludXgub3JnLnVrL2RldmVsb3Blci9tYWNoaW5lcy8+CisKKyAgTm90ZTogUGxlYXNlIGRvIG5vdCByZWdpc3RlciBhIG1hY2hpbmUgdHlwZSBmb3IgRFQtb25seSBwbGF0Zm9ybXMuICBJZiB5b3VyCisgIHBsYXRmb3JtIGlzIERULW9ubHksIHlvdSBkbyBub3QgbmVlZCBhIHJlZ2lzdGVyZWQgbWFjaGluZSB0eXBlLgorCistLS0KK1J1c3NlbGwgS2luZyAoMTUvMDMvMjAwNCkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJtL1NBMTEwMC9BRFNCaXRzeSBiL0RvY3VtZW50YXRpb24vYXJtL1NBMTEwMC9BRFNCaXRzeQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWY2MmU4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vU0ExMTAwL0FEU0JpdHN5CkBAIC0wLDAgKzEsNDMgQEAKK0FEUyBCaXRzeSBTaW5nbGUgQm9hcmQgQ29tcHV0ZXIKKyhJdCBpcyBkaWZmZXJlbnQgZnJvbSBCaXRzeShpUEFRKSBvZiBDb21wYXEpCisKK0ZvciBtb3JlIGRldGFpbHMsIGNvbnRhY3QgQXBwbGllZCBEYXRhIFN5c3RlbXMgb3Igc2VlCitodHRwOi8vd3d3LmFwcGxpZWRkYXRhLm5ldC9wcm9kdWN0cy5odG1sCisKK1RoZSBMaW51eCBzdXBwb3J0IGZvciB0aGlzIHByb2R1Y3QgaGFzIGJlZW4gcHJvdmlkZWQgYnkKK1dvb2p1bmcgSHVoIDx3aHVoQGFwcGxpZWRkYXRhLm5ldD4KKworVXNlICdtYWtlIGFkc2JpdHN5X2NvbmZpZycgYmVmb3JlIGFueSAnbWFrZSBjb25maWcnLgorVGhpcyB3aWxsIHNldCB1cCBkZWZhdWx0cyBmb3IgQURTIEJpdHN5IHN1cHBvcnQuCisKK1RoZSBrZXJuZWwgekltYWdlIGlzIGxpbmtlZCB0byBiZSBsb2FkZWQgYW5kIGV4ZWN1dGVkIGF0IDB4YzA0MDAwMDAuCisKK0xpbnV4IGNhbiAgYmUgdXNlZCB3aXRoIHRoZSBBRFMgQm9vdExvYWRlciB0aGF0IHNoaXBzIHdpdGggdGhlCituZXdlciByZXYgYm9hcmRzLiBTZWUgdGhlaXIgZG9jdW1lbnRhdGlvbiBvbiBob3cgdG8gbG9hZCBMaW51eC4KKworU3VwcG9ydGVkIHBlcmlwaGVyYWxzOgorLSBTQTExMDAgTENEIGZyYW1lIGJ1ZmZlciAoOC8xNmJwcC4uLnNvcnQgb2YpCistIFNBMTExMSBVU0IgTWFzdGVyCistIFNBMTEwMCBzZXJpYWwgcG9ydAorLSBwY21jaWEsIGNvbXBhY3QgZmxhc2gKKy0gdG91Y2hzY3JlZW4odWNiMTIwMCkKKy0gY29uc29sZSBvbiBMQ0Qgc2NyZWVuCistIHNlcmlhbCBwb3J0cyAodHR5U1swLTJdKQorICAtIHR0eVMwIGlzIGRlZmF1bHQgZm9yIHNlcmlhbCBjb25zb2xlCisKK1RvIGRvOgorLSBldmVyeXRoaW5nIGVsc2UhICA6LSkKKworTm90ZXM6CisKKy0gVGhlIGZsYXNoIG9uIGJvYXJkIGlzIGRpdmlkZWQgaW50byAzIHBhcnRpdGlvbnMuCisgIFlvdSBzaG91bGQgYmUgY2FyZWZ1bCB0byB1c2UgZmxhc2ggb24gYm9hcmQuCisgIEl0cyBwYXJ0aXRpb24gaXMgZGlmZmVyZW50IGZyb20gR3JhcGhpY3NDbGllbnQgUGx1cyBhbmQgR3JhcGhpY3NNYXN0ZXIKKworLSAxNmJwcCBtb2RlIHJlcXVpcmVzIGEgZGlmZmVyZW50IGNhYmxlIHRoYW4gd2hhdCBzaGlwcyB3aXRoIHRoZSBib2FyZC4KKyAgQ29udGFjdCBBRFMgb3IgbG9vayB0aHJvdWdoIHRoZSBtYW51YWwgdG8gd2lyZSB5b3VyIG93bi4gQ3VycmVudGx5LAorICBpZiB5b3UgY29tcGlsZSB3aXRoIDE2Yml0IG1vZGUgc3VwcG9ydCBhbmQgc3dpdGNoIGludG8gYSBsb3dlciBicHAKKyAgbW9kZSwgdGhlIHRpbWluZyBpcyBvZmYgc28gdGhlIGltYWdlIGlzIGNvcnJ1cHRlZC4gIFRoaXMgd2lsbCBiZQorICBmaXhlZCBzb29uLgorCitBbnkgY29udHJpYnV0aW9uIGNhbiBiZSBzZW50IHRvIG5pY29AZmx1eG5pYy5uZXQgYW5kIHdpbGwgYmUgZ3JlYXRseSB3ZWxjb21lIQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vU0ExMTAwL0Fzc2FiZXQgYi9Eb2N1bWVudGF0aW9uL2FybS9TQTExMDAvQXNzYWJldApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGI4ODVkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vU0ExMTAwL0Fzc2FiZXQKQEAgLTAsMCArMSwzMDAgQEAKK1RoZSBJbnRlbCBBc3NhYmV0IChTQS0xMTEwIGV2YWx1YXRpb24pIGJvYXJkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQbGVhc2Ugc2VlOgoraHR0cDovL2RldmVsb3Blci5pbnRlbC5jb20KKworQWxzbyBzb21lIG5vdGVzIGZyb20gSm9obiBHIERvcnNleSA8amQ1cUBhbmRyZXcuY211LmVkdT46CitodHRwOi8vd3d3LmNzLmNtdS5lZHUvfndlYXJhYmxlL3NvZnR3YXJlL2Fzc2FiZXQuaHRtbAorCisKK0J1aWxkaW5nIHRoZSBrZXJuZWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVG8gYnVpbGQgdGhlIGtlcm5lbCB3aXRoIGN1cnJlbnQgZGVmYXVsdHM6CisKKwltYWtlIGFzc2FiZXRfY29uZmlnCisJbWFrZSBvbGRjb25maWcKKwltYWtlIHpJbWFnZQorCitUaGUgcmVzdWx0aW5nIGtlcm5lbCBpbWFnZSBzaG91bGQgYmUgYXZhaWxhYmxlIGluIGxpbnV4L2FyY2gvYXJtL2Jvb3QvekltYWdlLgorCisKK0luc3RhbGxpbmcgYSBib290bG9hZGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBIGNvdXBsZSBvZiBib290bG9hZGVycyBhYmxlIHRvIGJvb3QgTGludXggb24gQXNzYWJldCBhcmUgYXZhaWxhYmxlOgorCitCTE9CIChodHRwOi8vd3d3LmxhcnRtYWtlci5ubC9sYXJ0d2FyZS9ibG9iLykKKworICAgQkxPQiBpcyBhIGJvb3Rsb2FkZXIgdXNlZCB3aXRoaW4gdGhlIExBUlQgcHJvamVjdC4gIFNvbWUgY29udHJpYnV0ZWQKKyAgIHBhdGNoZXMgd2VyZSBtZXJnZWQgaW50byBCTE9CIHRvIGFkZCBzdXBwb3J0IGZvciBBc3NhYmV0LgorCitDb21wYXEncyBCb290bGRyICsgSm9obiBEb3JzZXkncyBwYXRjaCBmb3IgQXNzYWJldCBzdXBwb3J0CisoaHR0cDovL3d3dy5oYW5kaGVsZHMub3JnL0NvbXBhcS9ib290bGRyLmh0bWwpCisoaHR0cDovL3d3dy53ZWFyYWJsZWdyb3VwLm9yZy9zb2Z0d2FyZS9ib290bGRyLykKKworICAgQm9vdGxkciBpcyB0aGUgYm9vdGxvYWRlciBkZXZlbG9wZWQgYnkgQ29tcGFxIGZvciB0aGUgaVBBUSBQb2NrZXQgUEMuCisgICBKb2huIERvcnNleSBoYXMgcHJvZHVjZWQgYWRkLW9uIHBhdGNoZXMgdG8gYWRkIHN1cHBvcnQgZm9yIEFzc2FiZXQgYW5kCisgICB0aGUgSkZGUyBmaWxlc3lzdGVtLgorCitSZWRCb290IChodHRwOi8vc291cmNlcy5yZWRoYXQuY29tL3JlZGJvb3QvKQorCisgICBSZWRCb290IGlzIGEgYm9vdGxvYWRlciBkZXZlbG9wZWQgYnkgUmVkIEhhdCBiYXNlZCBvbiB0aGUgZUNvcyBSVE9TCisgICBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllci4gIEl0IHN1cHBvcnRzIEFzc2FiZXQgYW1vbmdzdCBtYW55IG90aGVyCisgICBoYXJkd2FyZSBwbGF0Zm9ybXMuCisKK1JlZEJvb3QgaXMgY3VycmVudGx5IHRoZSByZWNvbW1lbmRlZCBjaG9pY2Ugc2luY2UgaXQncyB0aGUgb25seSBvbmUgdG8gaGF2ZQorbmV0d29ya2luZyBzdXBwb3J0LCBhbmQgaXMgdGhlIG1vc3QgYWN0aXZlbHkgbWFpbnRhaW5lZC4KKworQnJpZWYgZXhhbXBsZXMgb24gaG93IHRvIGJvb3QgTGludXggd2l0aCBSZWRCb290IGFyZSBzaG93biBiZWxvdy4gIEJ1dCBmaXJzdAoreW91IG5lZWQgdG8gaGF2ZSBSZWRCb290IGluc3RhbGxlZCBpbiB5b3VyIGZsYXNoIG1lbW9yeS4gIEEga25vd24gdG8gd29yaworcHJlY29tcGlsZWQgUmVkQm9vdCBiaW5hcnkgaXMgYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZyBsb2NhdGlvbjoKKworZnRwOi8vZnRwLm5ldHdpbmRlci5vcmcvdXNlcnMvbi9uaWNvLworZnRwOi8vZnRwLmFybS5saW51eC5vcmcudWsvcHViL2xpbnV4L2FybS9wZW9wbGUvbmljby8KK2Z0cDovL2Z0cC5oYW5kaGVsZHMub3JnL3B1Yi9saW51eC9hcm0vc2EtMTEwMC1wYXRjaGVzLworCitMb29rIGZvciByZWRib290LWFzc2FiZXQqLnRnei4gIFNvbWUgaW5zdGFsbGF0aW9uIGluZm9zIGFyZSBwcm92aWRlZCBpbgorcmVkYm9vdC1hc3NhYmV0Ki50eHQuCisKKworSW5pdGlhbCBSZWRCb290IGNvbmZpZ3VyYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBjb21tYW5kcyB1c2VkIGhlcmUgYXJlIGV4cGxhaW5lZCBpbiBUaGUgUmVkQm9vdCBVc2VyJ3MgR3VpZGUgYXZhaWxhYmxlCitvbi1saW5lIGF0IGh0dHA6Ly9zb3VyY2VzLnJlZGhhdC5jb20vZWNvcy9kb2NzLmh0bWwuCitQbGVhc2UgcmVmZXIgdG8gaXQgZm9yIGV4cGxhbmF0aW9ucy4KKworSWYgeW91IGhhdmUgYSBDRiBuZXR3b3JrIGNhcmQgKG15IEFzc2FiZXQga2l0IGNvbnRhaW5lZCBhIENGKyBMUC1FIGZyb20KK1NvY2tldCBDb21tdW5pY2F0aW9ucyBJbmMuKSwgeW91IHNob3VsZCBzdHJvbmdseSBjb25zaWRlciB1c2luZyBpdCBmb3IgVEZUUAorZmlsZSB0cmFuc2ZlcnMuICBZb3UgbXVzdCBpbnNlcnQgaXQgYmVmb3JlIFJlZEJvb3QgcnVucyBzaW5jZSBpdCBjYW4ndCBkZXRlY3QKK2l0IGR5bmFtaWNhbGx5LgorCitUbyBpbml0aWFsaXplIHRoZSBmbGFzaCBkaXJlY3Rvcnk6CisKKwlmaXMgaW5pdCAtZgorCitUbyBpbml0aWFsaXplIHRoZSBub24tdm9sYXRpbGUgc2V0dGluZ3MsIGxpa2Ugd2hldGhlciB5b3Ugd2FudCB0byB1c2UgQk9PVFAgb3IKK2Egc3RhdGljIElQIGFkZHJlc3MsIGV0YywgdXNlIHRoaXMgY29tbWFuZDoKKworCWZjb25maWcgLWkKKworCitXcml0aW5nIGEga2VybmVsIGltYWdlIGludG8gZmxhc2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGaXJzdCwgdGhlIGtlcm5lbCBpbWFnZSBtdXN0IGJlIGxvYWRlZCBpbnRvIFJBTS4gIElmIHlvdSBoYXZlIHRoZSB6SW1hZ2UgZmlsZQorYXZhaWxhYmxlIG9uIGEgVEZUUCBzZXJ2ZXI6CisKKwlsb2FkIHpJbWFnZSAtciAtYiAweDEwMDAwMAorCitJZiB5b3UgcmF0aGVyIHdhbnQgdG8gdXNlIFktTW9kZW0gdXBsb2FkIG92ZXIgdGhlIHNlcmlhbCBwb3J0OgorCisJbG9hZCAtbSB5bW9kZW0gLXIgLWIgMHgxMDAwMDAKKworVG8gd3JpdGUgaXQgdG8gZmxhc2g6CisKKwlmaXMgY3JlYXRlICJMaW51eCBrZXJuZWwiIC1iIDB4MTAwMDAwIC1sIDB4YzAwMDAKKworCitCb290aW5nIHRoZSBrZXJuZWwKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUga2VybmVsIHN0aWxsIHJlcXVpcmVzIGEgZmlsZXN5c3RlbSB0byBib290LiAgQSByYW1kaXNrIGltYWdlIGNhbiBiZSBsb2FkZWQKK2FzIGZvbGxvd3M6CisKKwlsb2FkIHJhbWRpc2tfaW1hZ2UuZ3ogLXIgLWIgMHg4MDAwMDAKKworQWdhaW4sIFktTW9kZW0gdXBsb2FkIGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgVEZUUCBieSByZXBsYWNpbmcgdGhlIGZpbGUgbmFtZQorYnkgJy15IHltb2RlbScuCisKK05vdyB0aGUga2VybmVsIGNhbiBiZSByZXRyaWV2ZWQgZnJvbSBmbGFzaCBsaWtlIHRoaXM6CisKKwlmaXMgbG9hZCAiTGludXgga2VybmVsIgorCitvciBsb2FkZWQgYXMgZGVzY3JpYmVkIHByZXZpb3VzbHkuICBUbyBib290IHRoZSBrZXJuZWw6CisKKwlleGVjIC1iIDB4MTAwMDAwIC1sIDB4YzAwMDAKKworVGhlIHJhbWRpc2sgaW1hZ2UgY291bGQgYmUgc3RvcmVkIGludG8gZmxhc2ggYXMgd2VsbCwgYnV0IHRoZXJlIGFyZSBiZXR0ZXIKK3NvbHV0aW9ucyBmb3Igb24tZmxhc2ggZmlsZXN5c3RlbXMgYXMgbWVudGlvbmVkIGJlbG93LgorCisKK1VzaW5nIEpGRlMyCistLS0tLS0tLS0tLQorCitVc2luZyBKRkZTMiAodGhlIFNlY29uZCBKb3VybmFsbGluZyBGbGFzaCBGaWxlIFN5c3RlbSkgaXMgcHJvYmFibHkgdGhlIG1vc3QKK2NvbnZlbmllbnQgd2F5IHRvIHN0b3JlIGEgd3JpdGFibGUgZmlsZXN5c3RlbSBpbnRvIGZsYXNoLiAgSkZGUzIgaXMgdXNlZCBpbgorY29uanVuY3Rpb24gd2l0aCB0aGUgTVREIGxheWVyIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBsb3ctbGV2ZWwgZmxhc2gKK21hbmFnZW1lbnQuICBNb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBMaW51eCBNVEQgY2FuIGJlIGZvdW5kIG9uLWxpbmUgYXQ6CitodHRwOi8vd3d3LmxpbnV4LW10ZC5pbmZyYWRlYWQub3JnLy4gIEEgSkZGUyBob3d0byB3aXRoIHNvbWUgaW5mb3MgYWJvdXQKK2NyZWF0aW5nIEpGRlMvSkZGUzIgaW1hZ2VzIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBzYW1lIHNpdGUuCisKK0ZvciBpbnN0YW5jZSwgYSBzYW1wbGUgSkZGUzIgaW1hZ2UgY2FuIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBzYW1lIEZUUCBzaXRlcworbWVudGlvbmVkIGJlbG93IGZvciB0aGUgcHJlY29tcGlsZWQgUmVkQm9vdCBpbWFnZS4KKworVG8gbG9hZCB0aGlzIGZpbGU6CisKKwlsb2FkIHNhbXBsZV9pbWcuamZmczIgLXIgLWIgMHgxMDAwMDAKKworVGhlIHJlc3VsdCBzaG91bGQgbG9vayBsaWtlOgorCitSZWRCb290PiBsb2FkIHNhbXBsZV9pbWcuamZmczIgLXIgLWIgMHgxMDAwMDAKK1JhdyBmaWxlIGxvYWRlZCAweDAwMTAwMDAwLTB4MDAzNzc0MjQKKworTm93IHdlIG11c3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUgdW5hbGxvY2F0ZWQgZmxhc2g6CisKKwlmaXMgZnJlZQorCitSZXN1bHQ6CisKK1JlZEJvb3Q+IGZpcyBmcmVlCisgIDB4NTAwRTAwMDAgLi4gMHg1MDNDMDAwMAorCitUaGUgdmFsdWVzIGFib3ZlIG1heSBiZSBkaWZmZXJlbnQgZGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mIHRoZSBmaWxlc3lzdGVtIGFuZAordGhlIHR5cGUgb2YgZmxhc2guICBTZWUgdGhlaXIgdXNhZ2UgYmVsb3cgYXMgYW4gZXhhbXBsZSBhbmQgdGFrZSBjYXJlIG9mCitzdWJzdGl0dXRpbmcgeW91cnMgYXBwcm9wcmlhdGVseS4KKworV2UgbXVzdCBkZXRlcm1pbmUgc29tZSB2YWx1ZXM6CisKK3NpemUgb2YgdW5hbGxvY2F0ZWQgZmxhc2g6CTB4NTAzYzAwMDAgLSAweDUwMGUwMDAwID0gMHgyZTAwMDAKK3NpemUgb2YgdGhlIGZpbGVzeXN0ZW0gaW1hZ2U6CTB4MDAzNzc0MjQgLSAweDAwMTAwMDAwID0gMHgyNzc0MjQKKworV2Ugd2FudCB0byBmaXQgdGhlIGZpbGVzeXN0ZW0gaW1hZ2Ugb2YgY291cnNlLCBidXQgd2UgYWxzbyB3YW50IHRvIGdpdmUgaXQgYWxsCit0aGUgcmVtYWluaW5nIGZsYXNoIHNwYWNlIGFzIHdlbGwuICBUbyB3cml0ZSBpdDoKKworCWZpcyB1bmxvY2sgLWYgMHg1MDBFMDAwMCAtbCAweDJlMDAwMAorCWZpcyBlcmFzZSAtZiAweDUwMEUwMDAwIC1sIDB4MmUwMDAwCisJZmlzIHdyaXRlIC1iIDB4MTAwMDAwIC1sIDB4Mjc3NDI0IC1mIDB4NTAwRTAwMDAKKwlmaXMgY3JlYXRlICJKRkZTMiIgLW4gLWYgMHg1MDBFMDAwMCAtbCAweDJlMDAwMAorCitOb3cgdGhlIGZpbGVzeXN0ZW0gaXMgYXNzb2NpYXRlZCB0byBhIE1URCAicGFydGl0aW9uIiBvbmNlIExpbnV4IGhhcyBkaXNjb3ZlcmVkCit3aGF0IHRoZXkgYXJlIGluIHRoZSBib290IHByb2Nlc3MuICBGcm9tIFJlZGJvb3QsIHRoZSAnZmlzIGxpc3QnIGNvbW1hbmQKK2Rpc3BsYXlzIHRoZW06CisKK1JlZEJvb3Q+IGZpcyBsaXN0CitOYW1lICAgICAgICAgICAgICBGTEFTSCBhZGRyICBNZW0gYWRkciAgICBMZW5ndGggICAgICBFbnRyeSBwb2ludAorUmVkQm9vdCAgICAgICAgICAgMHg1MDAwMDAwMCAgMHg1MDAwMDAwMCAgMHgwMDAyMDAwMCAgMHgwMDAwMDAwMAorUmVkQm9vdCBjb25maWcgICAgMHg1MDNDMDAwMCAgMHg1MDNDMDAwMCAgMHgwMDAyMDAwMCAgMHgwMDAwMDAwMAorRklTIGRpcmVjdG9yeSAgICAgMHg1MDNFMDAwMCAgMHg1MDNFMDAwMCAgMHgwMDAyMDAwMCAgMHgwMDAwMDAwMAorTGludXgga2VybmVsICAgICAgMHg1MDAyMDAwMCAgMHgwMDEwMDAwMCAgMHgwMDBDMDAwMCAgMHgwMDAwMDAwMAorSkZGUzIgICAgICAgICAgICAgMHg1MDBFMDAwMCAgMHg1MDBFMDAwMCAgMHgwMDJFMDAwMCAgMHgwMDAwMDAwMAorCitIb3dldmVyIExpbnV4IHNob3VsZCBkaXNwbGF5IHNvbWV0aGluZyBsaWtlOgorCitTQTExMDAgZmxhc2g6IHByb2JpbmcgMzItYml0IGZsYXNoIGJ1cworU0ExMTAwIGZsYXNoOiBGb3VuZCAyIHgxNiBkZXZpY2VzIGF0IDB4MCBpbiAzMi1iaXQgbW9kZQorVXNpbmcgUmVkQm9vdCBwYXJ0aXRpb24gZGVmaW5pdGlvbgorQ3JlYXRpbmcgNSBNVEQgcGFydGl0aW9ucyBvbiAiU0ExMTAwIGZsYXNoIjoKKzB4MDAwMDAwMDAtMHgwMDAyMDAwMCA6ICJSZWRCb290IgorMHgwMDAyMDAwMC0weDAwMGUwMDAwIDogIkxpbnV4IGtlcm5lbCIKKzB4MDAwZTAwMDAtMHgwMDNjMDAwMCA6ICJKRkZTMiIKKzB4MDAzYzAwMDAtMHgwMDNlMDAwMCA6ICJSZWRCb290IGNvbmZpZyIKKzB4MDAzZTAwMDAtMHgwMDQwMDAwMCA6ICJGSVMgZGlyZWN0b3J5IgorCitXaGF0J3MgaW1wb3J0YW50IGhlcmUgaXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBwYXJ0aXRpb24gd2UgYXJlIGludGVyZXN0ZWQgaW4sCit3aGljaCBpcyB0aGUgdGhpcmQgb25lLiAgV2l0aGluIExpbnV4LCB0aGlzIGNvcnJlc3BvbmQgdG8gL2Rldi9tdGRibG9jazIuCitUaGVyZWZvcmUgdG8gYm9vdCBMaW51eCB3aXRoIHRoZSBrZXJuZWwgYW5kIGl0cyByb290IGZpbGVzeXN0ZW0gaW4gZmxhc2gsIHdlCituZWVkIHRoaXMgUmVkQm9vdCBjb21tYW5kOgorCisJZmlzIGxvYWQgIkxpbnV4IGtlcm5lbCIKKwlleGVjIC1iIDB4MTAwMDAwIC1sIDB4YzAwMDAgLWMgInJvb3Q9L2Rldi9tdGRibG9jazIiCisKK09mIGNvdXJzZSBvdGhlciBmaWxlc3lzdGVtcyB0aGFuIEpGRlMgbWlnaHQgYmUgdXNlZCwgbGlrZSBjcmFtZnMgZm9yIGV4YW1wbGUuCitZb3UgbWlnaHQgd2FudCB0byBib290IHdpdGggYSByb290IGZpbGVzeXN0ZW0gb3ZlciBORlMsIGV0Yy4gIEl0IGlzIGFsc28KK3Bvc3NpYmxlLCBhbmQgc29tZXRpbWVzIG1vcmUgY29udmVuaWVudCwgdG8gZmxhc2ggYSBmaWxlc3lzdGVtIGRpcmVjdGx5IGZyb20KK3dpdGhpbiBMaW51eCB3aGlsZSBib290ZWQgZnJvbSBhIHJhbWRpc2sgb3IgTkZTLiAgVGhlIExpbnV4IE1URCByZXBvc2l0b3J5IGhhcworbWFueSB0b29scyB0byBkZWFsIHdpdGggZmxhc2ggbWVtb3J5IGFzIHdlbGwsIHRvIGVyYXNlIGl0IGZvciBleGFtcGxlLiAgSkZGUzIKK2NhbiB0aGVuIGJlIG1vdW50ZWQgZGlyZWN0bHkgb24gYSBmcmVzaGx5IGVyYXNlZCBwYXJ0aXRpb24gYW5kIGZpbGVzIGNhbiBiZQorY29waWVkIG92ZXIgZGlyZWN0bHkuICBFdGMuLi4KKworCitSZWRCb290IHNjcmlwdGluZworLS0tLS0tLS0tLS0tLS0tLS0KKworQWxsIHRoZSBjb21tYW5kcyBhYm92ZSBhcmVuJ3Qgc28gdXNlZnVsIGlmIHRoZXkgaGF2ZSB0byBiZSB0eXBlZCBpbiBldmVyeQordGltZSB0aGUgQXNzYWJldCBpcyByZWJvb3RlZC4gIFRoZXJlZm9yZSBpdCdzIHBvc3NpYmxlIHRvIGF1dG9tYXRpemUgdGhlIGJvb3QKK3Byb2Nlc3MgdXNpbmcgUmVkQm9vdCdzIHNjcmlwdGluZyBjYXBhYmlsaXR5LgorCitGb3IgZXhhbXBsZSwgSSB1c2UgdGhpcyB0byBib290IExpbnV4IHdpdGggYm90aCB0aGUga2VybmVsIGFuZCB0aGUgcmFtZGlzaworaW1hZ2VzIHJldHJpZXZlZCBmcm9tIGEgVEZUUCBzZXJ2ZXIgb24gdGhlIG5ldHdvcms6CisKK1JlZEJvb3Q+IGZjb25maWcKK1J1biBzY3JpcHQgYXQgYm9vdDogZmFsc2UgdHJ1ZQorQm9vdCBzY3JpcHQ6CitFbnRlciBzY3JpcHQsIHRlcm1pbmF0ZSB3aXRoIGVtcHR5IGxpbmUKKz4+IGxvYWQgekltYWdlIC1yIC1iIDB4MTAwMDAwCis+PiBsb2FkIHJhbWRpc2tfa3MuZ3ogLXIgLWIgMHg4MDAwMDAKKz4+IGV4ZWMgLWIgMHgxMDAwMDAgLWwgMHhjMDAwMAorPj4KK0Jvb3Qgc2NyaXB0IHRpbWVvdXQgKDEwMDBtcyByZXNvbHV0aW9uKTogMworVXNlIEJPT1RQIGZvciBuZXR3b3JrIGNvbmZpZ3VyYXRpb246IHRydWUKK0dEQiBjb25uZWN0aW9uIHBvcnQ6IDkwMDAKK05ldHdvcmsgZGVidWcgYXQgYm9vdCB0aW1lOiBmYWxzZQorVXBkYXRlIFJlZEJvb3Qgbm9uLXZvbGF0aWxlIGNvbmZpZ3VyYXRpb24gLSBhcmUgeW91IHN1cmUgKHkvbik/IHkKKworVGhlbiwgcmVib290aW5nIHRoZSBBc3NhYmV0IGlzIGp1c3QgYSBtYXR0ZXIgb2Ygd2FpdGluZyBmb3IgdGhlIGxvZ2luIHByb21wdC4KKworCisKK05pY29sYXMgUGl0cmUKK25pY29AZmx1eG5pYy5uZXQKK0p1bmUgMTIsIDIwMDEKKworCitTdGF0dXMgb2YgcGVyaXBoZXJhbHMgaW4gLXJtayB0cmVlICh1cGRhdGVkIDE0LzEwLzIwMDEpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Fzc2FiZXQ6CisgU2VyaWFsIHBvcnRzOgorICBSYWRpbzoJCVRYLCBSWCwgQ1RTLCBEU1IsIERDRCwgUkkKKyAgIFBNOgkJCU5vdCB0ZXN0ZWQuCisgIENPTToJCQlUWCwgUlgsIENUUywgRFNSLCBEQ0QsIFJUUywgRFRSLCBQTQorICAgUE06CQkJTm90IHRlc3RlZC4KKyAgSTJDOgkJCUltcGxlbWVudGVkLCBub3QgZnVsbHkgdGVzdGVkLgorICBMMzoJCQlGdWxseSB0ZXN0ZWQsIHBhc3MuCisgICBQTToJCQlOb3QgdGVzdGVkLgorCisgVmlkZW86CisgIExDRDoJCQlGdWxseSB0ZXN0ZWQuICBQTQorCQkJKExDRCBkb2Vzbid0IGxpa2UgYmVpbmcgYmxhbmtlZCB3aXRoCisJCQkgbmVwb25zZXQgY29ubmVjdGVkKQorICBWaWRlbyBvdXQ6CQlOb3QgZnVsbHkKKworIEF1ZGlvOgorICBVREExMzQxOgorICAgUGxheWJhY2s6CQlGdWxseSB0ZXN0ZWQsIHBhc3MuCisgICBSZWNvcmQ6CQlJbXBsZW1lbnRlZCwgbm90IHRlc3RlZC4KKyAgIFBNOgkJCU5vdCB0ZXN0ZWQuCisKKyAgVUNCMTIwMDoKKyAgIEF1ZGlvIHBsYXk6CQlJbXBsZW1lbnRlZCwgbm90IGhlYXZpbHkgdGVzdGVkLgorICAgQXVkaW8gcmVjOgkJSW1wbGVtZW50ZWQsIG5vdCBoZWF2aWx5IHRlc3RlZC4KKyAgIFRlbGNvIGF1ZGlvIHBsYXk6CUltcGxlbWVudGVkLCBub3QgaGVhdmlseSB0ZXN0ZWQuCisgICBUZWxjbyBhdWRpbyByZWM6CUltcGxlbWVudGVkLCBub3QgaGVhdmlseSB0ZXN0ZWQuCisgICBQT1RTIGNvbnRyb2w6CU5vCisgICBUb3VjaHNjcmVlbjoJCVllcworICAgUE06CQkJTm90IHRlc3RlZC4KKworIE90aGVyOgorICBQQ01DSUE6CisgICBMUEU6CQkJRnVsbHkgdGVzdGVkLCBwYXNzLgorICBVU0I6CQkJTm8KKyAgSVJEQToKKyAgIFNJUjoJCQlGdWxseSB0ZXN0ZWQsIHBhc3MuCisgICBGSVI6CQkJRnVsbHkgdGVzdGVkLCBwYXNzLgorICAgUE06CQkJTm90IHRlc3RlZC4KKworTmVwb25zZXQ6CisgU2VyaWFsIHBvcnRzOgorICBDT00xLDI6CVRYLCBSWCwgQ1RTLCBEU1IsIERDRCwgUlRTLCBEVFIKKyAgIFBNOgkJCU5vdCB0ZXN0ZWQuCisgIFVTQjoJCQlJbXBsZW1lbnRlZCwgbm90IGhlYXZpbHkgdGVzdGVkLgorICBQQ01DSUE6CQlJbXBsZW1lbnRlZCwgbm90IGhlYXZpbHkgdGVzdGVkLgorICAgUE06CQkJTm90IHRlc3RlZC4KKyAgQ0Y6CQkJSW1wbGVtZW50ZWQsIG5vdCBoZWF2aWx5IHRlc3RlZC4KKyAgIFBNOgkJCU5vdCB0ZXN0ZWQuCisKK01vcmUgc3R1ZmYgY2FuIGJlIGZvdW5kIGluIHRoZSAtbnAgKE5pY29sYXMgUGl0cmUncykgdHJlZS4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vU0ExMTAwL0JydXR1cyBiL0RvY3VtZW50YXRpb24vYXJtL1NBMTEwMC9CcnV0dXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmEzYWE5NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL1NBMTEwMC9CcnV0dXMKQEAgLTAsMCArMSw2NiBAQAorQnJ1dHVzIGlzIGFuIGV2YWx1YXRpb24gcGxhdGZvcm0gZm9yIHRoZSBTQTExMDAgbWFudWZhY3R1cmVkIGJ5IEludGVsLiAgCitGb3IgbW9yZSBkZXRhaWxzLCBzZWU6CisKK2h0dHA6Ly9kZXZlbG9wZXIuaW50ZWwuY29tCisKK1RvIGNvbXBpbGUgZm9yIEJydXR1cywgeW91IG11c3QgaXNzdWUgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKKworCW1ha2UgYnJ1dHVzX2NvbmZpZworCW1ha2UgY29uZmlnCisJW2FjY2VwdCBhbGwgdGhlIGRlZmF1bHRzXQorCW1ha2UgekltYWdlCisKK1RoZSByZXN1bHRpbmcga2VybmVsIHdpbGwgZW5kIHVwIGluIGxpbnV4L2FyY2gvYXJtL2Jvb3QvekltYWdlLiAgVGhpcyBmaWxlCittdXN0IGJlIGxvYWRlZCBhdCAweGMwMDA4MDAwIGluIEJydXR1cydzIG1lbW9yeSBhbmQgZXhlY3V0aW9uIHN0YXJ0ZWQgYXQKKzB4YzAwMDgwMDAgYXMgd2VsbCB3aXRoIHRoZSB2YWx1ZSBvZiByZWdpc3RlcnMgcjAgPSAwIGFuZCByMSA9IDE2IHVwb24KK2VudHJ5LgorCitCdXQgcHJpb3IgdG8gZXhlY3V0ZSB0aGUga2VybmVsLCBhIHJhbWRpc2sgaW1hZ2UgbXVzdCBhbHNvIGJlIGxvYWRlZCBpbgorbWVtb3J5LiAgVXNlIG1lbW9yeSBhZGRyZXNzIDB4ZDgwMDAwMDAgZm9yIHRoaXMuICBOb3RlIHRoYXQgdGhlIGZpbGUgCitjb250YWluaW5nIHRoZSAoY29tcHJlc3NlZCkgcmFtZGlzayBpbWFnZSBtdXN0IG5vdCBleGNlZWQgNCBNQi4KKworVHlwaWNhbGx5LCB5b3UnbGwgbmVlZCBhbmdlbGJvb3QgdG8gbG9hZCB0aGUga2VybmVsLgorVGhlIGZvbGxvd2luZyBhbmdlbGJvb3Qub3B0IGZpbGUgc2hvdWxkIGJlIHVzZWQ6CisKKy0tLS0tIGJlZ2luIGFuZ2VsYm9vdC5vcHQgLS0tLS0KK2Jhc2UgMHhjMDAwODAwMAorZW50cnkgMHhjMDAwODAwMAorcjAgMHgwMDAwMDAwMAorcjEgMHgwMDAwMDAxMAorZGV2aWNlIC9kZXYvdHR5UzAKK29wdGlvbnMgIjk2MDAgOE4xIgorYmF1ZCAxMTUyMDAKK290aGVyZmlsZSByYW1kaXNrX2ltZy5negorb3RoZXJiYXNlIDB4ZDgwMDAwMDAKKy0tLS0tIGVuZCBhbmdlbGJvb3Qub3B0IC0tLS0tCisKK1RoZW4gbG9hZCB0aGUga2VybmVsIGFuZCByYW1kaXNrIHdpdGg6CisKKwlhbmdlbGJvb3QgLWYgYW5nZWxib290Lm9wdCB6SW1hZ2UKKworVGhlIGZpcnN0IEJydXR1cyBzZXJpYWwgcG9ydCAoYXNzdW1lZCB0byBiZSBsaW5rZWQgdG8gL2Rldi90dHlTMCBvbiB5b3VyCitob3N0IFBDKSBpcyB1c2VkIGJ5IGFuZ2VsIHRvIGxvYWQgdGhlIGtlcm5lbCBhbmQgcmFtZGlzayBpbWFnZS4gVGhlIHNlcmlhbAorY29uc29sZSBpcyBwcm92aWRlZCB0aHJvdWdoIHRoZSBzZWNvbmQgQnJ1dHVzIHNlcmlhbCBwb3J0LiBUbyBhY2Nlc3MgaXQsCit5b3UgbWF5IHVzZSBtaW5pY29tIGNvbmZpZ3VyZWQgd2l0aCAvZGV2L3R0eVMxLCA5NjAwIGJhdWQsIDhOMSwgbm8gZmxvdworY29udHJvbC4KKworQ3VycmVudGx5IHN1cHBvcnRlZDoKKwktIFJTMjMyIHNlcmlhbCBwb3J0cworCS0gYXVkaW8gb3V0cHV0CisJLSBMQ0Qgc2NyZWVuCisJLSBrZXlib2FyZAorCQorVGhlIGFjdHVhbCBCcnV0dXMgc3VwcG9ydCBtYXkgbm90IGJlIGNvbXBsZXRlIHdpdGhvdXQgZXh0cmEgcGF0Y2hlcy4gCitJZiBzdWNoIHBhdGNoZXMgZXhpc3QsIHRoZXkgc2hvdWxkIGJlIGZvdW5kIGZyb20gCitmdHAubmV0d2luZGVyLm9yZy91c2Vycy9uL25pY28uCisKK0EgZnVsbCBQQ01DSUEgc3VwcG9ydCBpcyBzdGlsbCBtaXNzaW5nLCBhbHRob3VnaCBpdCdzIHBvc3NpYmxlIHRvIGhhY2sKK3NvbWUgZHJpdmVycyBpbiBvcmRlciB0byBkcml2ZSBhbHJlYWR5IGluc2VydGVkIGNhcmRzIGF0IGJvb3QgdGltZSB3aXRoCitsaXR0bGUgbW9kaWZpY2F0aW9ucy4KKworQW55IGNvbnRyaWJ1dGlvbiBpcyB3ZWxjb21lLgorCitQbGVhc2Ugc2VuZCBwYXRjaGVzIHRvIG5pY29AZmx1eG5pYy5uZXQKKworSGF2ZSBGdW4gIQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS9TQTExMDAvQ0VSRiBiL0RvY3VtZW50YXRpb24vYXJtL1NBMTEwMC9DRVJGCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZDg0NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9TQTExMDAvQ0VSRgpAQCAtMCwwICsxLDI5IEBACisqKiogVGhlIFN0cm9uZ0FSTSB2ZXJzaW9uIG9mIHRoZSBDZXJmQm9hcmQvQ3ViZSBoYXMgYmVlbiBkaXNjb250aW51ZWQgKioqCisKK1RoZSBJbnRyaW5zeWMgQ2VyZkJvYXJkIGlzIGEgU3Ryb25nQVJNIDExMTAtYmFzZWQgY29tcHV0ZXIgb24gYSBib2FyZAordGhhdCBtZWFzdXJlcyBhcHByb3hpbWF0ZWx5IDIiIHNxdWFyZS4gSXQgaW5jbHVkZXMgYW4gRXRoZXJuZXQKK2NvbnRyb2xsZXIsIGFuIFJTMjMyLWNvbXBhdGlibGUgc2VyaWFsIHBvcnQsIGEgVVNCIGZ1bmN0aW9uIHBvcnQsIGFuZAorb25lIENvbXBhY3RGbGFzaCsgc2xvdCBvbiB0aGUgYmFjay4gUGljdHVyZXMgY2FuIGJlIGZvdW5kIGF0IHRoZQorSW50cmluc3ljIHdlYnNpdGUsIGh0dHA6Ly93d3cuaW50cmluc3ljLmNvbS4KKworVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIHN1cHBvcnQgaW4gdGhlIExpbnV4IGtlcm5lbCBmb3IgdGhlCitJbnRyaW5zeWMgQ2VyZkJvYXJkLgorCitTdXBwb3J0ZWQgaW4gdGhpcyB2ZXJzaW9uOgorICAgLSBDb21wYWN0Rmxhc2grIHNsb3QgKHNlbGVjdCBQQ01DSUEgaW4gR2VuZXJhbCBTZXR1cCBhbmQgYW55IG9wdGlvbnMKKyAgICAgdGhhdCBtYXkgYmUgcmVxdWlyZWQpCisgICAtIE9uYm9hcmQgQ3J5c3RhbCBDUzg5MDAgRXRoZXJuZXQgY29udHJvbGxlciAoQ2VyZiBDUzg5MDBBIHN1cHBvcnQgaW4KKyAgICAgTmV0d29yayBEZXZpY2VzKQorICAgLSBTZXJpYWwgcG9ydHMgd2l0aCBhIHNlcmlhbCBjb25zb2xlIChoYXJkY29kZWQgdG8gMzg0MDAgOE4xKQorCitJbiBvcmRlciB0byBnZXQgdGhpcyBrZXJuZWwgb250byB5b3VyIENlcmYsIHlvdSBuZWVkIGEgc2VydmVyIHRoYXQgcnVucworYm90aCBCT09UUCBhbmQgVEZUUC4gRGV0YWlsZWQgaW5zdHJ1Y3Rpb25zIHNob3VsZCBoYXZlIGNvbWUgd2l0aCB5b3VyCitldmFsdWF0aW9uIGtpdCBvbiBob3cgdG8gdXNlIHRoZSBib290bG9hZGVyLiBUaGlzIHNlcmllcyBvZiBjb21tYW5kcword2lsbCBzdWZmaWNlOgorCisgICBtYWtlIEFSQ0g9YXJtIENST1NTX0NPTVBJTEU9YXJtLWxpbnV4LSBjZXJmY3ViZV9kZWZjb25maWcKKyAgIG1ha2UgQVJDSD1hcm0gQ1JPU1NfQ09NUElMRT1hcm0tbGludXgtIHpJbWFnZQorICAgbWFrZSBBUkNIPWFybSBDUk9TU19DT01QSUxFPWFybS1saW51eC0gbW9kdWxlcworICAgY3AgYXJjaC9hcm0vYm9vdC96SW1hZ2UgPFRGVFAgZGlyZWN0b3J5PgorCitzdXBwb3J0QGludHJpbnN5Yy5jb20KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJtL1NBMTEwMC9GcmVlQmlyZCBiL0RvY3VtZW50YXRpb24vYXJtL1NBMTEwMC9GcmVlQmlyZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjkxOTM2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vU0ExMTAwL0ZyZWVCaXJkCkBAIC0wLDAgKzEsMjEgQEAKK0ZyZWViaXJkLTEuMSBpcyBwcm9kdWNlZCBieSBMZWdlbmQoQyksIEluYy4KK2h0dHA6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLyovaHR0cDovL3d3dy5sZWdlbmQuY29tLmNuCithbmQgc29mdHdhcmUvbGludXggbWFpbnRhaW5lZCBieSBDb3ZlbnRpdmUoQyksIEluYy4KKyhodHRwOi8vd3d3LmNvdmVudGl2ZS5jb20pCisKK0Jhc2VkIG9uIHRoZSBOaWNvbGFzJ3Mgc3Ryb25nYXJtIGtlcm5lbCB0cmVlLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK01haW50YWluZXI6CisKK0NoZXN0ZXIgS3VvIDxjaGVzdGVyQGNvdmVudGl2ZS5jb20+CisJICAgIDxjaGVzdGVyQGxpbnV4Lm9yZy50dz4KKworQXV0aG9yIDoKK1RpbSB3dSA8dGltd3VAY292ZW50aXZlLmNvbT4KK0NJSCA8Y2loQGNvdmVudGl2ZS5jb20+CitFcmljIFBlbmcgPGVyaWNwZW5nQGNvdmVudGl2ZS5jb20+CitKZWZmIExlZSA8amVmZl9sZWVAY292ZW50aXZlLmNvbT4KK0FsbGVuIENoZW5nCitUb255IExpdSA8dG9ueWxpdUBjb3ZlbnRpdmUuY29tPgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS9TQTExMDAvR3JhcGhpY3NDbGllbnQgYi9Eb2N1bWVudGF0aW9uL2FybS9TQTExMDAvR3JhcGhpY3NDbGllbnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY3YmIzNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL1NBMTEwMC9HcmFwaGljc0NsaWVudApAQCAtMCwwICsxLDk4IEBACitBRFMgR3JhcGhpY3NDbGllbnQgUGx1cyBTaW5nbGUgQm9hcmQgQ29tcHV0ZXIKKworRm9yIG1vcmUgZGV0YWlscywgY29udGFjdCBBcHBsaWVkIERhdGEgU3lzdGVtcyBvciBzZWUKK2h0dHA6Ly93d3cuYXBwbGllZGRhdGEubmV0L3Byb2R1Y3RzLmh0bWwKKworVGhlIG9yaWdpbmFsIExpbnV4IHN1cHBvcnQgZm9yIHRoaXMgcHJvZHVjdCBoYXMgYmVlbiBwcm92aWRlZCBieSAKK05pY29sYXMgUGl0cmUgPG5pY29AZmx1eG5pYy5uZXQ+LiBDb250aW51ZWQgZGV2ZWxvcG1lbnQgd29yayBieQorV29vanVuZyBIdWggPHdodWhAYXBwbGllZGRhdGEubmV0PgorCitJdCdzIGN1cnJlbnRseSBwb3NzaWJsZSB0byBtb3VudCBhIHJvb3QgZmlsZXN5c3RlbSB2aWEgTkZTIHByb3ZpZGluZyBhCitjb21wbGV0ZSBMaW51eCBlbnZpcm9ubWVudC4gIE90aGVyd2lzZSBhIHJhbWRpc2sgaW1hZ2UgbWF5IGJlIHVzZWQuICBUaGUKK2JvYXJkIHN1cHBvcnRzIE1URC9KRkZTLCBzbyB5b3UgY291bGQgYWxzbyBtb3VudCBzb21ldGhpbmcgb24gdGhlcmUuCisKK1VzZSAnbWFrZSBncmFwaGljc2NsaWVudF9jb25maWcnIGJlZm9yZSBhbnkgJ21ha2UgY29uZmlnJy4gIFRoaXMgd2lsbCBzZXQgdXAKK2RlZmF1bHRzIGZvciBHcmFwaGljc0NsaWVudCBQbHVzIHN1cHBvcnQuCisKK1RoZSBrZXJuZWwgekltYWdlIGlzIGxpbmtlZCB0byBiZSBsb2FkZWQgYW5kIGV4ZWN1dGVkIGF0IDB4YzAyMDAwMDAuICAKK0Fsc28gdGhlIGZvbGxvd2luZyByZWdpc3RlcnMgc2hvdWxkIGhhdmUgdGhlIHNwZWNpZmllZCB2YWx1ZXMgdXBvbiBlbnRyeToKKworCXIwID0gMAorCXIxID0gMjkJKHRoaXMgaXMgdGhlIEdyYXBoaWNzQ2xpZW50IGFyY2hpdGVjdHVyZSBudW1iZXIpCisKK0xpbnV4IGNhbiAgYmUgdXNlZCB3aXRoIHRoZSBBRFMgQm9vdExvYWRlciB0aGF0IHNoaXBzIHdpdGggdGhlCituZXdlciByZXYgYm9hcmRzLiBTZWUgdGhlaXIgZG9jdW1lbnRhdGlvbiBvbiBob3cgdG8gbG9hZCBMaW51eC4KK0FuZ2VsIGlzIG5vdCBhdmFpbGFibGUgZm9yIHRoZSBHcmFwaGljc0NsaWVudCBQbHVzIEFGQUlLLgorCitUaGVyZSBpcyBhICBib2FyZCBrbm93biBhcyBqdXN0IHRoZSBHcmFwaGljc0NsaWVudCB0aGF0IEFEUyB1c2VkIHRvCitwcm9kdWNlIGJ1dCBoYXMgZW5kIG9mIGxpZmVkLiBUaGlzIGNvZGUgd2lsbCBub3Qgd29yayBvbiB0aGUgb2xkZXIKK2JvYXJkIHdpdGggdGhlIEFEUyBib290bG9hZGVyLCBidXQgc2hvdWxkIHN0aWxsIHdvcmsgd2l0aCBBbmdlbCwKK2FzIG91dGxpbmVkIGJlbG93LiAgSW4gYW55IGNhc2UsIGlmIHlvdSdyZSBwbGFubmluZyBvbiBkZXBsb3lpbmcKK3NvbWV0aGluZyBlbiBtYXNzZSwgeW91IHNob3VsZCBwcm9iYWJseSBnZXQgdGhlIG5ld2VyIGJvYXJkLgorCitJZiB1c2luZyBBbmdlbCBvbiB0aGUgb2xkZXIgYm9hcmRzLCBoZXJlIGlzIGEgdHlwaWNhbCBhbmdlbC5vcHQgb3B0aW9uIGZpbGUKK2lmIHRoZSBrZXJuZWwgaXMgbG9hZGVkIHRocm91Z2ggdGhlIEFuZ2VsIERlYnVnIE1vbml0b3I6CisKKy0tLS0tIGJlZ2luIGFuZ2VsYm9vdC5vcHQgLS0tLS0KK2Jhc2UgMHhjMDIwMDAwMAorZW50cnkgMHhjMDIwMDAwMAorcjAgMHgwMDAwMDAwMAorcjEgMHgwMDAwMDAxZAorZGV2aWNlIC9kZXYvdHR5UzEKK29wdGlvbnMgIjM4NDAwIDhOMSIKK2JhdWQgMTE1MjAwCisjb3RoZXJmaWxlIHJhbWRpc2suZ3oKKyNvdGhlcmJhc2UgMHhjMDgwMDAwMAorZXhlYyBtaW5pY29tCistLS0tLSBlbmQgYW5nZWxib290Lm9wdCAtLS0tLQorCitUaGVuIHRoZSBrZXJuZWwgKGFuZCByYW1kaXNrIGlmIG90aGVyZmlsZS9vdGhlcmJhc2UgbGluZXMgYWJvdmUgYXJlCit1bmNvbW1lbnRlZCkgd291bGQgYmUgbG9hZGVkIHdpdGg6CisKKwlhbmdlbGJvb3QgLWYgYW5nZWxib290Lm9wdCB6SW1hZ2UKKworSGVyZSBpdCBpcyBhc3N1bWVkIHRoYXQgdGhlIGJvYXJkIGlzIGNvbm5lY3RlZCB0byB0dHlTMSBvbiB5b3VyIFBDCithbmQgdGhhdCBtaW5pY29tIGlzIHByZWNvbmZpZ3VyZWQgd2l0aCAvZGV2L3R0eVMxLCAzODQwMCBiYXVkLCA4TjEsIG5vIGZsb3cKK2NvbnRyb2wgYnkgZGVmYXVsdC4KKworSWYgYW55IG90aGVyIGJvb3Rsb2FkZXIgaXMgdXNlZCwgZW5zdXJlIGl0IGFjY29tcGxpc2ggdGhlIHNhbWUsIGVzcGVjaWFsbHkKK2ZvciByMC9yMSByZWdpc3RlciB2YWx1ZXMgYmVmb3JlIGp1bXBpbmcgaW50byB0aGUga2VybmVsLgorCisKK1N1cHBvcnRlZCBwZXJpcGhlcmFsczoKKy0gU0ExMTAwIExDRCBmcmFtZSBidWZmZXIgKDgvMTZicHAuLi5zb3J0IG9mKQorLSBvbi1ib2FyZCBTTUMgOTJDOTYgZXRoZXJuZXQgTklDCistIFNBMTEwMCBzZXJpYWwgcG9ydAorLSBmbGFzaCBtZW1vcnkgYWNjZXNzIChNVEQvSkZGUykKKy0gcGNtY2lhCistIHRvdWNoc2NyZWVuKHVjYjEyMDApCistIHBzLzIga2V5Ym9hcmQKKy0gY29uc29sZSBvbiBMQ0Qgc2NyZWVuCistIHNlcmlhbCBwb3J0cyAodHR5U1swLTJdKQorICAtIHR0eVMwIGlzIGRlZmF1bHQgZm9yIHNlcmlhbCBjb25zb2xlCistIFNtYXJ0IEkvTyAoQURDLCBrZXlwYWQsIGRpZ2l0YWwgaW5wdXRzLCBldGMpCisgIFNlZSBodHRwOi8vd3d3LmV1cm90ZWNoLWluYy5jb20vbGludXgtc2JjLmFzcCBmb3IgSU9DVEwgZG9jdW1lbnRhdGlvbgorICBhbmQgZXhhbXBsZSB1c2VyIHNwYWNlIGNvZGUuIHBzLzIga2V5YmQgaXMgbXVsdGlwbGV4ZWQgdGhyb3VnaCB0aGlzIGRyaXZlcgorCitUbyBkbzoKKy0gVUNCMTIwMCBhdWRpbyB3aXRoIG5ldyB1Y2JfZ2VuZXJpYyBsYXllcgorLSBldmVyeXRoaW5nIGVsc2UhICA6LSkKKworTm90ZXM6CisKKy0gVGhlIGZsYXNoIG9uIGJvYXJkIGlzIGRpdmlkZWQgaW50byAzIHBhcnRpdGlvbnMuICBtdGQwIGlzIHdoZXJlCisgIHRoZSBBRFMgYm9vdCBST00gYW5kIHpJbWFnZSBpcyBzdG9yZWQuICBJdCdzIGJlZW4gbWFya2VkIGFzCisgIHJlYWQtb25seSB0byBrZWVwIHlvdSBmcm9tIGJsYXN0aW5nIG92ZXIgdGhlIGJvb3Rsb2FkZXIuIDopICBtdGQxIGlzCisgIGZvciB0aGUgcmFtZGlzay5neiBpbWFnZS4gIG10ZDIgaXMgdXNlciBmbGFzaCBzcGFjZSBhbmQgY2FuIGJlCisgIHV0aWxpemVkIGZvciBlaXRoZXIgSkZGUyBvciBpZiB5b3UncmUgZmVlbGluZyBjcmF6eSwgcnVubmluZyBleHQyCisgIG9uIHRvcCBvZiBpdC4gSWYgeW91J3JlIG5vdCB1c2luZyB0aGUgQURTIGJvb3Rsb2FkZXIsIHlvdSdyZQorICB3ZWxjb21lIHRvIGJsYXN0IG92ZXIgdGhlIG10ZDEgcGFydGl0aW9uIGFsc28uCisKKy0gMTZicHAgbW9kZSByZXF1aXJlcyBhIGRpZmZlcmVudCBjYWJsZSB0aGFuIHdoYXQgc2hpcHMgd2l0aCB0aGUgYm9hcmQuCisgIENvbnRhY3QgQURTIG9yIGxvb2sgdGhyb3VnaCB0aGUgbWFudWFsIHRvIHdpcmUgeW91ciBvd24uIEN1cnJlbnRseSwKKyAgaWYgeW91IGNvbXBpbGUgd2l0aCAxNmJpdCBtb2RlIHN1cHBvcnQgYW5kIHN3aXRjaCBpbnRvIGEgbG93ZXIgYnBwCisgIG1vZGUsIHRoZSB0aW1pbmcgaXMgb2ZmIHNvIHRoZSBpbWFnZSBpcyBjb3JydXB0ZWQuICBUaGlzIHdpbGwgYmUKKyAgZml4ZWQgc29vbi4KKworQW55IGNvbnRyaWJ1dGlvbiBjYW4gYmUgc2VudCB0byBuaWNvQGZsdXhuaWMubmV0IGFuZCB3aWxsIGJlIGdyZWF0bHkgd2VsY29tZSEKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vU0ExMTAwL0dyYXBoaWNzTWFzdGVyIGIvRG9jdW1lbnRhdGlvbi9hcm0vU0ExMTAwL0dyYXBoaWNzTWFzdGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNDUwODgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9TQTExMDAvR3JhcGhpY3NNYXN0ZXIKQEAgLTAsMCArMSw1MyBAQAorQURTIEdyYXBoaWNzTWFzdGVyIFNpbmdsZSBCb2FyZCBDb21wdXRlcgorCitGb3IgbW9yZSBkZXRhaWxzLCBjb250YWN0IEFwcGxpZWQgRGF0YSBTeXN0ZW1zIG9yIHNlZQoraHR0cDovL3d3dy5hcHBsaWVkZGF0YS5uZXQvcHJvZHVjdHMuaHRtbAorCitUaGUgb3JpZ2luYWwgTGludXggc3VwcG9ydCBmb3IgdGhpcyBwcm9kdWN0IGhhcyBiZWVuIHByb3ZpZGVkIGJ5CitOaWNvbGFzIFBpdHJlIDxuaWNvQGZsdXhuaWMubmV0Pi4gQ29udGludWVkIGRldmVsb3BtZW50IHdvcmsgYnkKK1dvb2p1bmcgSHVoIDx3aHVoQGFwcGxpZWRkYXRhLm5ldD4KKworVXNlICdtYWtlIGdyYXBoaWNzbWFzdGVyX2NvbmZpZycgYmVmb3JlIGFueSAnbWFrZSBjb25maWcnLgorVGhpcyB3aWxsIHNldCB1cCBkZWZhdWx0cyBmb3IgR3JhcGhpY3NNYXN0ZXIgc3VwcG9ydC4KKworVGhlIGtlcm5lbCB6SW1hZ2UgaXMgbGlua2VkIHRvIGJlIGxvYWRlZCBhbmQgZXhlY3V0ZWQgYXQgMHhjMDQwMDAwMC4KKworTGludXggY2FuICBiZSB1c2VkIHdpdGggdGhlIEFEUyBCb290TG9hZGVyIHRoYXQgc2hpcHMgd2l0aCB0aGUKK25ld2VyIHJldiBib2FyZHMuIFNlZSB0aGVpciBkb2N1bWVudGF0aW9uIG9uIGhvdyB0byBsb2FkIExpbnV4LgorCitTdXBwb3J0ZWQgcGVyaXBoZXJhbHM6CistIFNBMTEwMCBMQ0QgZnJhbWUgYnVmZmVyICg4LzE2YnBwLi4uc29ydCBvZikKKy0gU0ExMTExIFVTQiBNYXN0ZXIKKy0gb24tYm9hcmQgU01DIDkyQzk2IGV0aGVybmV0IE5JQworLSBTQTExMDAgc2VyaWFsIHBvcnQKKy0gZmxhc2ggbWVtb3J5IGFjY2VzcyAoTVREL0pGRlMpCistIHBjbWNpYSwgY29tcGFjdCBmbGFzaAorLSB0b3VjaHNjcmVlbih1Y2IxMjAwKQorLSBwcy8yIGtleWJvYXJkCistIGNvbnNvbGUgb24gTENEIHNjcmVlbgorLSBzZXJpYWwgcG9ydHMgKHR0eVNbMC0yXSkKKyAgLSB0dHlTMCBpcyBkZWZhdWx0IGZvciBzZXJpYWwgY29uc29sZQorLSBTbWFydCBJL08gKEFEQywga2V5cGFkLCBkaWdpdGFsIGlucHV0cywgZXRjKQorICBTZWUgaHR0cDovL3d3dy5ldXJvdGVjaC1pbmMuY29tL2xpbnV4LXNiYy5hc3AgZm9yIElPQ1RMIGRvY3VtZW50YXRpb24KKyAgYW5kIGV4YW1wbGUgdXNlciBzcGFjZSBjb2RlLiBwcy8yIGtleWJkIGlzIG11bHRpcGxleGVkIHRocm91Z2ggdGhpcyBkcml2ZXIKKworVG8gZG86CistIGV2ZXJ5dGhpbmcgZWxzZSEgIDotKQorCitOb3RlczoKKworLSBUaGUgZmxhc2ggb24gYm9hcmQgaXMgZGl2aWRlZCBpbnRvIDMgcGFydGl0aW9ucy4gIG10ZDAgaXMgd2hlcmUKKyAgdGhlIHpJbWFnZSBpcyBzdG9yZWQuICBJdCdzIGJlZW4gbWFya2VkIGFzIHJlYWQtb25seSB0byBrZWVwIHlvdQorICBmcm9tIGJsYXN0aW5nIG92ZXIgdGhlIGJvb3Rsb2FkZXIuIDopICBtdGQxIGlzCisgIGZvciB0aGUgcmFtZGlzay5neiBpbWFnZS4gIG10ZDIgaXMgdXNlciBmbGFzaCBzcGFjZSBhbmQgY2FuIGJlCisgIHV0aWxpemVkIGZvciBlaXRoZXIgSkZGUyBvciBpZiB5b3UncmUgZmVlbGluZyBjcmF6eSwgcnVubmluZyBleHQyCisgIG9uIHRvcCBvZiBpdC4gSWYgeW91J3JlIG5vdCB1c2luZyB0aGUgQURTIGJvb3Rsb2FkZXIsIHlvdSdyZQorICB3ZWxjb21lIHRvIGJsYXN0IG92ZXIgdGhlIG10ZDEgcGFydGl0aW9uIGFsc28uCisKKy0gMTZicHAgbW9kZSByZXF1aXJlcyBhIGRpZmZlcmVudCBjYWJsZSB0aGFuIHdoYXQgc2hpcHMgd2l0aCB0aGUgYm9hcmQuCisgIENvbnRhY3QgQURTIG9yIGxvb2sgdGhyb3VnaCB0aGUgbWFudWFsIHRvIHdpcmUgeW91ciBvd24uIEN1cnJlbnRseSwKKyAgaWYgeW91IGNvbXBpbGUgd2l0aCAxNmJpdCBtb2RlIHN1cHBvcnQgYW5kIHN3aXRjaCBpbnRvIGEgbG93ZXIgYnBwCisgIG1vZGUsIHRoZSB0aW1pbmcgaXMgb2ZmIHNvIHRoZSBpbWFnZSBpcyBjb3JydXB0ZWQuICBUaGlzIHdpbGwgYmUKKyAgZml4ZWQgc29vbi4KKworQW55IGNvbnRyaWJ1dGlvbiBjYW4gYmUgc2VudCB0byBuaWNvQGZsdXhuaWMubmV0IGFuZCB3aWxsIGJlIGdyZWF0bHkgd2VsY29tZSEKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJtL1NBMTEwMC9IVVdfV0VCUEFORUwgYi9Eb2N1bWVudGF0aW9uL2FybS9TQTExMDAvSFVXX1dFQlBBTkVMCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkNTZiNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9TQTExMDAvSFVXX1dFQlBBTkVMCkBAIC0wLDAgKzEsMTcgQEAKK1RoZSBIVVdfV0VCUEFORUwgaXMgYSBwcm9kdWN0IG9mIHRoZSBnZXJtYW4gY29tcGFueSBIb2VmdCAmIFdlc3NlbCBBRworCitJZiB5b3Ugd2FudCBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlzaXQKK2h0dHA6Ly93d3cuaG9lZnQtd2Vzc2VsLmRlCisKK1RvIGJ1aWxkIHRoZSBrZXJuZWw6CisJbWFrZSBodXdfd2VicGFuZWxfY29uZmlnCisJbWFrZSBvbGRjb25maWcKKwlbYWNjZXB0IGFsbCBkZWZhdWx0c10KKwltYWtlIHpJbWFnZQorCitNb3N0bHkgb2YgdGhlIHdvcmsgaXMgZG9uZSBieToKK1JvbWFuIEpvcmRhbiAgICAgICAgIGpvckBob2VmdC13ZXNzZWwuZGUKK0NocmlzdG9waCBTY2h1bHogICAgc2NodUBob2VmdC13ZXNzZWwuZGUKKworMjAwMC8xMi8xOC8KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vU0ExMTAwL0l0c3kgYi9Eb2N1bWVudGF0aW9uL2FybS9TQTExMDAvSXRzeQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGI5NDk5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vU0ExMTAwL0l0c3kKQEAgLTAsMCArMSwzOSBAQAorSXRzeSBpcyBhIHJlc2VhcmNoIHByb2plY3QgZG9uZSBieSB0aGUgV2VzdGVybiBSZXNlYXJjaCBMYWIsIGFuZCBTeXN0ZW1zCitSZXNlYXJjaCBDZW50ZXIgaW4gUGFsbyBBbHRvLCBDQS4gVGhlIEl0c3kgcHJvamVjdCBpcyBvbmUgb2Ygc2V2ZXJhbAorcmVzZWFyY2ggcHJvamVjdHMgYXQgQ29tcGFxIHRoYXQgYXJlIHJlbGF0ZWQgdG8gcG9ja2V0IGNvbXB1dGluZy4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZToKKworCWh0dHA6Ly93d3cuaHBsLmhwLmNvbS9kb3dubG9hZHMvY3JsL2l0c3kvCisKK05vdGVzIG9uIGluaXRpYWwgMi40IEl0c3kgc3VwcG9ydCAoOC8yNy8yMDAwKSA6CitUaGUgcG9ydCB3YXMgZG9uZSBvbiBhbiBJdHN5IHZlcnNpb24gMS41IG1hY2hpbmUgd2l0aCBhIGRhdWdodGVyY2FyZCB3aXRoCis2NCBNZWcgb2YgRFJBTSBhbmQgMzIgTWVnIG9mIEZsYXNoLiBUaGUgaW5pdGlhbCB3b3JrIGluY2x1ZGVzIHN1cHBvcnQgZm9yCitzZXJpYWwgY29uc29sZSAodG8gc2VlIHdoYXQgeW91J3JlIGRvaW5nKS4gIE5vIG90aGVyIGRldmljZXMgaGF2ZSBiZWVuCitlbmFibGVkLgorCitUbyBidWlsZCwgZG8gYSAibWFrZSBtZW51Y29uZmlnIiAob3IgeG1lbnVjb25maWcpIGFuZCBzZWxlY3QgSXRzeSBzdXBwb3J0LgorRGlzYWJsZSBGbGFzaCBhbmQgTENEIHN1cHBvcnQuIGFuZCB0aGVuIGRvIGEgbWFrZSB6SW1hZ2UuCitGaW5hbGx5LCB5b3Ugd2lsbCBuZWVkIHRvIGNkIHRvIGFyY2gvYXJtL2Jvb3QvdG9vbHMgYW5kIGV4ZWN1dGUgYSBtYWtlIHRoZXJlCit0byBidWlsZCB0aGUgcGFyYW1zLWl0c3kgcHJvZ3JhbSB1c2VkIHRvIGJvb3QgdGhlIGtlcm5lbC4KKworSW4gb3JkZXIgdG8gaW5zdGFsbCB0aGUgcG9ydCBvZiAyLjQgdG8gdGhlIGl0c3ksIFlvdSB3aWxsIG5lZWQgdG8gc2V0IHRoZQorY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGluIHRoZSBtb25pdG9yIGFzIGZvbGxvd3M6CitBcmcgMToweDA4MzQwMDAwLCBBcmcyOiAweEMwMDAwMDAwLCBBcmczOjE4ICgweDEyKSwgQXJnNDowCitNYWtlIHN1cmUgdGhlIHN0YXJ0LXJvdXRpbmUgYWRkcmVzcyBpcyBzZXQgdG8gMHgwMDA2MDAwMC4KKworTmV4dCwgZmxhc2ggdGhlIHBhcmFtcy1pdHN5IHByb2dyYW0gdG8gMHgwMDA2MDAwMCAoInAgMSAweDAwMDYwMDAwIiBpbiB0aGUKK2ZsYXNoIG1lbnUpICBGbGFzaCB0aGUga2VybmVsIGluIGFyY2gvYXJtL2Jvb3QvekltYWdlIGludG8gMHgwODM0MDAwMAorKCJwIDEgMHgwMDM0MDAwMCIpLiAgRmluYWxseSBmbGFzaCBhbiBpbml0aWFsIHJhbWRpc2sgaW50byAweEM4MDAwMDAwCisoInAgMiAweDAiKSAgV2UgdXNlZCByYW1kaXNrLTItMzAuZ3ogZnJvbSB0aGUgMC4xMSB2ZXJzaW9uIGRpcmVjdG9yeSBvbgoraGFuZGhlbGRzLm9yZy4KKworVGhlIHNlcmlhbCBjb25uZWN0aW9uIHdlIGVzdGFibGlzaGVkIHdhcyBhdDoKKyA4LWJpdCBkYXRhLCBubyBwYXJpdHksIDEgc3RvcCBiaXQocyksIDExNTIwMC4wMCBiL3MuIGluIHRoZSBtb25pdG9yLCBpbiB0aGUKK3BhcmFtcy1pdHN5IHByb2dyYW0sIGFuZCBpbiB0aGUga2VybmVsIGl0c2VsZi4gIFRoaXMgY2FuIGJlIGNoYW5nZWQsIGJ1dAorbm90IGVhc2lseS4gVGhlIG1vbml0b3IgcGFyYW1ldGVycyBhcmUgZWFzaWx5IGNoYW5nZWQsIHRoZSBwYXJhbXMgcHJvZ3JhbQorc2V0dXAgaXMgYXNzZW1ibHkgb3V0bCdzLCBhbmQgdGhlIGtlcm5lbCBpcyBhIGNvbmZpZ3VyYXRpb24gaXRlbSBzcGVjaWZpYyB0bwordGhlIGl0c3kuIChpLmUuIGdyZXAgZm9yIENPTkZJR19TQTExMDBfSVRTWSBhbmQgeW91J2xsIGZpbmQgd2hlcmUgaXQgaXMuKQorCisKK1RoaXMgc2hvdWxkIGdldCB5b3UgYSBwcm9wZXJseSBib290aW5nIDIuNCBrZXJuZWwgb24gdGhlIGl0c3kuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS9TQTExMDAvTEFSVCBiL0RvY3VtZW50YXRpb24vYXJtL1NBMTEwMC9MQVJUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkNDEyYjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9TQTExMDAvTEFSVApAQCAtMCwwICsxLDE0IEBACitMaW51eCBBZHZhbmNlZCBSYWRpbyBUZXJtaW5hbCAoTEFSVCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgTEFSVCBpcyBhIHNtYWxsICg3LjUgeCAxMGNtKSBTQS0xMTAwIGJvYXJkLCBkZXNpZ25lZCBmb3IgZW1iZWRkZWQKK2FwcGxpY2F0aW9ucy4gSXQgaGFzIDMyIE1CIERSQU0sIDRNQiBGbGFzaCBST00sIGRvdWJsZSBSUzIzMiBhbmQgYWxsCitvdGhlciBTdHJvbmdBUk0tZ2FkZ2V0cy4gQWxtb3N0IGFsbCBTQSBzaWduYWxzIGFyZSBkaXJlY3RseSBhY2Nlc3NpYmxlCit0aHJvdWdoIGEgbnVtYmVyIG9mIGNvbm5lY3RvcnMuIFRoZSBwb3dlcnN1cHBseSBhY2NlcHRzIHZvbHRhZ2VzCitiZXR3ZWVuIDMuNVYgYW5kIDE2ViBhbmQgaXMgb3ZlcmRpbWVuc2lvbmVkIHRvIHN1cHBvcnQgYSByYW5nZSBvZgorZGF1Z2h0ZXJib2FyZHMuIEEgcXVhZCBFdGhlcm5ldCAvIElERSAvIFBTMiAvIHNvdW5kIGRhdWdodGVyYm9hcmQKK2lzIHVuZGVyIGRldmVsb3BtZW50LCB3aXRoIHBsZW50eSBvZiBvdGhlcnMgaW4gZGlmZmVyZW50IHN0YWdlcyBvZgorcGxhbm5pbmcuCisKK1RoZSBoYXJkd2FyZSBkZXNpZ25zIGZvciB0aGlzIGJvYXJkIGhhdmUgYmVlbiByZWxlYXNlZCB1bmRlciBhbiBvcGVuIGxpY2Vuc2U7CitzZWUgdGhlIExBUlQgcGFnZSBhdCBodHRwOi8vd3d3LmxhcnRtYWtlci5ubC8gZm9yIG1vcmUgaW5mb3JtYXRpb24uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS9TQTExMDAvUExFQiBiL0RvY3VtZW50YXRpb24vYXJtL1NBMTEwMC9QTEVCCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5YzhhNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9TQTExMDAvUExFQgpAQCAtMCwwICsxLDExIEBACitUaGUgUExFQiBwcm9qZWN0IHdhcyBzdGFydGVkIGFzIGEgc3R1ZGVudCBpbml0aWF0aXZlIGF0IHRoZSBTY2hvb2wgb2YKK0NvbXB1dGVyIFNjaWVuY2UgYW5kIEVuZ2luZWVyaW5nLCBVbml2ZXJzaXR5IG9mIE5ldyBTb3V0aCBXYWxlcyB0byBtYWtlIGEKK3BvY2tldCBjb21wdXRlciBjYXBhYmxlIG9mIHJ1bm5pbmcgdGhlIExpbnV4IEtlcm5lbC4KKworUExFQiBzdXBwb3J0IGhhcyB5ZXQgdG8gYmUgZnVsbHkgaW50ZWdyYXRlZC4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZToKKworCWh0dHA6Ly93d3cuY3NlLnVuc3cuZWR1LmF1CisKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vU0ExMTAwL1BhbmdvbGluIGIvRG9jdW1lbnRhdGlvbi9hcm0vU0ExMTAwL1BhbmdvbGluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3N2E2MTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9TQTExMDAvUGFuZ29saW4KQEAgLTAsMCArMSwyMyBAQAorUGFuZ29saW4gaXMgYSBTdHJvbmdBUk0gMTExMC1iYXNlZCBldmFsdWF0aW9uIHBsYXRmb3JtIHByb2R1Y2VkCitieSBEaWFsb2d1ZSBUZWNobm9sb2d5IChodHRwOi8vd3d3LmRpYWxvZ3VlLmNvbS50dy8pLgorSXQgaGFzIEVJU0Egc2xvdHMgZm9yIGVhc2Ugb2YgY29uZmlndXJhdGlvbiB3aXRoIFNEUkFNL0ZsYXNoCittZW1vcnkgY2FyZCwgVVNCL1NlcmlhbC9BdWRpbyBjYXJkLCBDb21wYWN0IEZsYXNoIGNhcmQsCitQQ01DSUEvSURFIGNhcmQgYW5kIFRGVC1MQ0QgY2FyZC4KKworVG8gY29tcGlsZSBmb3IgUGFuZ29saW4sIHlvdSBtdXN0IGlzc3VlIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CisKKwltYWtlIHBhbmdvbGluX2NvbmZpZworCW1ha2Ugb2xkY29uZmlnCisJbWFrZSB6SW1hZ2UKKworU3VwcG9ydGVkIHBlcmlwaGVyYWxzOgorLSBTQTExMTAgc2VyaWFsIHBvcnQgKFVBUlQxL1VBUlQyL1VBUlQzKQorLSBmbGFzaCBtZW1vcnkgYWNjZXNzCistIGNvbXBhY3QgZmxhc2ggZHJpdmVyCistIFVEQTEzNDEgc291bmQgZHJpdmVyCistIFNBMTEwMCBMQ0QgY29udHJvbGxlciBmb3IgODAweDYwMCAxNmJwcCBURlQtTENECistIE1RLTIwMCBkcml2ZXIgZm9yIDgwMHg2MDAgMTZicHAgVEZULUxDRAorLSBQZW5tb3VudCh0b3VjaCBwYW5lbCkgZHJpdmVyCistIFBDTUNJQSBkcml2ZXIKKy0gU01DOTFDOTQgTEFOIGRyaXZlcgorLSBJREUgZHJpdmVyIChleHBlcmltZW50YWwpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS9TQTExMDAvVGlmb24gYi9Eb2N1bWVudGF0aW9uL2FybS9TQTExMDAvVGlmb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQxOTM0ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL1NBMTEwMC9UaWZvbgpAQCAtMCwwICsxLDcgQEAKK1RpZm9uCistLS0tLQorCitNb3JlIGluZm8gaGFzIHRvIGNvbWUuLi4KKworQ29udGFjdDogUGV0ZXIgRGFuaWVsc3NvbiA8cGV0ZXIuZGFuaWVsc3NvbkBlcmEtdC5lcmljc3Nvbi5zZT4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vU0ExMTAwL1lvcHkgYi9Eb2N1bWVudGF0aW9uL2FybS9TQTExMDAvWW9weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTRmMTZkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vU0ExMTAwL1lvcHkKQEAgLTAsMCArMSwyIEBACitTZWUgaHR0cDovL3d3dy55b3B5ZGV2ZWxvcGVyLm9yZyBmb3IgbW9yZS4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vU0ExMTAwL2VtcGVnIGIvRG9jdW1lbnRhdGlvbi9hcm0vU0ExMTAwL2VtcGVnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlY2U0ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9TQTExMDAvZW1wZWcKQEAgLTAsMCArMSwyIEBACitTZWUgLi4vZW1wZWcvUkVBRE1FCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJtL1NBMTEwMC9uYW5vRW5naW5lIGIvRG9jdW1lbnRhdGlvbi9hcm0vU0ExMTAwL25hbm9FbmdpbmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhhNzkzNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL1NBMTEwMC9uYW5vRW5naW5lCkBAIC0wLDAgKzEsMTEgQEAKK25hbm9FbmdpbmUKKy0tLS0tLS0tLS0KKworIm5hbm9FbmdpbmUiIGlzIGEgU0ExMTEwIGJhc2VkIHNpbmdsZSBib2FyZCBjb21wdXRlciBmcm9tIAorQnJpZ2h0IFN0YXIgRW5naW5lZXJpbmcgSW5jLiAgU2VlIHd3dy5icmlnaHRzdGFyZW5nLmNvbS9hcm0KK2ZvciBtb3JlIGluZm8uCisoUmVmOiBTdHVhcnQgQWRhbXMgPHNqYUBicmlnaHRzdGFyZW5nLmNvbT4pCisKK0Fsc28gdmlzaXQgTGFycnkgRG9vbGl0dGxlJ3MgIkxpbnV4IGZvciB0aGUgbmFub0VuZ2luZSIgc2l0ZToKK2h0dHA6Ly93d3cuYnJpZ2h0c3RhcmVuZy5jb20vYXJtL25hbm9lbmcuaHRtCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJtL1NBMTEwMC9zZXJpYWxfVUFSVCBiL0RvY3VtZW50YXRpb24vYXJtL1NBMTEwMC9zZXJpYWxfVUFSVApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjM5NjZmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vU0ExMTAwL3NlcmlhbF9VQVJUCkBAIC0wLDAgKzEsNDcgQEAKK1RoZSBTQTExMDAgc2VyaWFsIHBvcnQgaGFkIGl0cyBtYWpvci9taW5vciBudW1iZXJzIG9mZmljaWFsbHkgYXNzaWduZWQ6CisKKz4gRGF0ZTogU3VuLCAyNCBTZXAgMjAwMCAyMTo0MDoyNyAtMDcwMAorPiBGcm9tOiBILiBQZXRlciBBbnZpbiA8aHBhQHRyYW5zbWV0YS5jb20+Cis+IFRvOiBOaWNvbGFzIFBpdHJlIDxuaWNvQENBTS5PUkc+Cis+IENjOiBEZXZpY2UgTGlzdCBNYWludGFpbmVyIDxkZXZpY2VAbGFuYW5hLm9yZz4KKz4gU3ViamVjdDogUmU6IGRldmljZQorPiAKKz4gT2theS4gIE5vdGUgdGhhdCBkZXZpY2UgbnVtYmVycyAyMDQgYW5kIDIwNSBhcmUgdXNlZCBmb3IgImxvdyBkZW5zaXR5Cis+IHNlcmlhbCBkZXZpY2VzIiwgc28geW91IHdpbGwgaGF2ZSBhIHJhbmdlIG9mIG1pbm9ycyBvbiB0aG9zZSBtYWpvcnMgKHRoZQorPiB0dHkgZGV2aWNlIGxheWVyIGhhbmRsZXMgdGhpcyBqdXN0IGZpbmUsIHNvIHlvdSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0Cis+IGRvaW5nIGFueXRoaW5nIHNwZWNpYWwuKQorPiAKKz4gU28geW91ciBhc3NpZ25tZW50cyBhcmU6Cis+IAorPiAyMDQgY2hhciAgICAgICAgTG93LWRlbnNpdHkgc2VyaWFsIHBvcnRzCis+ICAgICAgICAgICAgICAgICAgIDUgPSAvZGV2L3R0eVNBMCAgICAgICAgICAgICAgIFNBMTEwMCBidWlsdGluIHNlcmlhbCBwb3J0IDAKKz4gICAgICAgICAgICAgICAgICAgNiA9IC9kZXYvdHR5U0ExICAgICAgICAgICAgICAgU0ExMTAwIGJ1aWx0aW4gc2VyaWFsIHBvcnQgMQorPiAgICAgICAgICAgICAgICAgICA3ID0gL2Rldi90dHlTQTIgICAgICAgICAgICAgICBTQTExMDAgYnVpbHRpbiBzZXJpYWwgcG9ydCAyCis+IAorPiAyMDUgY2hhciAgICAgICAgTG93LWRlbnNpdHkgc2VyaWFsIHBvcnRzIChhbHRlcm5hdGUgZGV2aWNlKQorPiAgICAgICAgICAgICAgICAgICA1ID0gL2Rldi9jdXNhMCAgICAgICAgICAgICAgICBDYWxsb3V0IGRldmljZSBmb3IgdHR5U0EwCis+ICAgICAgICAgICAgICAgICAgIDYgPSAvZGV2L2N1c2ExICAgICAgICAgICAgICAgIENhbGxvdXQgZGV2aWNlIGZvciB0dHlTQTEKKz4gICAgICAgICAgICAgICAgICAgNyA9IC9kZXYvY3VzYTIgICAgICAgICAgICAgICAgQ2FsbG91dCBkZXZpY2UgZm9yIHR0eVNBMgorPgorCitZb3UgbXVzdCBjcmVhdGUgdGhvc2UgaW5vZGVzIGluIC9kZXYgb24gdGhlIHJvb3QgZmlsZXN5c3RlbSB1c2VkCitieSB5b3VyIFNBMTEwMC1iYXNlZCBkZXZpY2U6CisKKwlta25vZCB0dHlTQTAgYyAyMDQgNQorCW1rbm9kIHR0eVNBMSBjIDIwNCA2CisJbWtub2QgdHR5U0EyIGMgMjA0IDcKKwlta25vZCBjdXNhMCBjIDIwNSA1CisJbWtub2QgY3VzYTEgYyAyMDUgNgorCW1rbm9kIGN1c2EyIGMgMjA1IDcKKworSW4gYWRkaXRpb24gdG8gdGhlIGNyZWF0aW9uIG9mIHRoZSBhcHByb3ByaWF0ZSBkZXZpY2Ugbm9kZXMgYWJvdmUsIHlvdQorbXVzdCBlbnN1cmUgeW91ciB1c2VyIHNwYWNlIGFwcGxpY2F0aW9ucyBtYWtlIHVzZSBvZiB0aGUgY29ycmVjdCBkZXZpY2UKK25hbWUuIFRoZSBjbGFzc2ljIGV4YW1wbGUgaXMgdGhlIGNvbnRlbnQgb2YgdGhlIC9ldGMvaW5pdHRhYiBmaWxlIHdoZXJlCit5b3UgbWlnaHQgaGF2ZSBhIGdldHR5IHByb2Nlc3Mgc3RhcnRlZCBvbiB0dHlTMC4gIEluIHRoaXMgY2FzZToKKworLSByZXBsYWNlIG9jY3VycmVuY2VzIG9mIHR0eVMwIHdpdGggdHR5U0EwLCB0dHlTMSB3aXRoIHR0eVNBMSwgZXRjLgorCistIGRvbid0IGZvcmdldCB0byBhZGQgJ3R0eVNBMCcsICdjb25zb2xlJywgb3IgdGhlIGFwcHJvcHJpYXRlIHR0eSBuYW1lCisgIGluIC9ldGMvc2VjdXJldHR5IGZvciByb290IHRvIGJlIGFsbG93ZWQgdG8gbG9naW4gYXMgd2VsbC4KKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS9TSC1Nb2JpbGUvLmdpdGlnbm9yZSBiL0RvY3VtZW50YXRpb24vYXJtL1NILU1vYmlsZS8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5MjhkYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9TSC1Nb2JpbGUvLmdpdGlnbm9yZQpAQCAtMCwwICsxIEBACit2cmw0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS9TUEVBci9vdmVydmlldy50eHQgYi9Eb2N1bWVudGF0aW9uL2FybS9TUEVBci9vdmVydmlldy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIwNDliZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL1NQRUFyL292ZXJ2aWV3LnR4dApAQCAtMCwwICsxLDYzIEBACisJCQlTUEVBciBBUk0gTGludXggT3ZlcnZpZXcKKwkJCT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ludHJvZHVjdGlvbgorLS0tLS0tLS0tLS0tCisKKyAgU1BFQXIgKFN0cnVjdHVyZWQgUHJvY2Vzc29yIEVuaGFuY2VkIEFyY2hpdGVjdHVyZSkuCisgIHdlYmxpbmsgOiBodHRwOi8vd3d3LnN0LmNvbS9zcGVhcgorCisgIFRoZSBTVCBNaWNyb2VsZWN0cm9uaWNzIFNQRUFyIHJhbmdlIG9mIEFSTTkvQ29ydGV4QTkgU3lzdGVtLW9uLUNoaXAgQ1BVcyBhcmUKKyAgc3VwcG9ydGVkIGJ5IHRoZSAnc3BlYXInIHBsYXRmb3JtIG9mIEFSTSBMaW51eC4gQ3VycmVudGx5IFNQRUFyMTMxMCwKKyAgU1BFQXIxMzQwLCBTUEVBcjMwMCwgU1BFQXIzMTAsIFNQRUFyMzIwIGFuZCBTUEVBcjYwMCBTT0NzIGFyZSBzdXBwb3J0ZWQuCisKKyAgSGllcmFyY2h5IGluIFNQRUFyIGlzIGFzIGZvbGxvd3M6CisKKyAgU1BFQXIgKFBsYXRmb3JtKQorCS0gU1BFQXIzWFggKDNYWCBTT0Mgc2VyaWVzLCBiYXNlZCBvbiBBUk05KQorCQktIFNQRUFyMzAwIChTT0MpCisJCQktIFNQRUFyMzAwIEV2YWx1YXRpb24gQm9hcmQKKwkJLSBTUEVBcjMxMCAoU09DKQorCQkJLSBTUEVBcjMxMCBFdmFsdWF0aW9uIEJvYXJkCisJCS0gU1BFQXIzMjAgKFNPQykKKwkJCS0gU1BFQXIzMjAgRXZhbHVhdGlvbiBCb2FyZAorCS0gU1BFQXI2WFggKDZYWCBTT0Mgc2VyaWVzLCBiYXNlZCBvbiBBUk05KQorCQktIFNQRUFyNjAwIChTT0MpCisJCQktIFNQRUFyNjAwIEV2YWx1YXRpb24gQm9hcmQKKwktIFNQRUFyMTNYWCAoMTNYWCBTT0Mgc2VyaWVzLCBiYXNlZCBvbiBBUk0gQ09SVEVYQTkpCisJCS0gU1BFQXIxMzEwIChTT0MpCisJCQktIFNQRUFyMTMxMCBFdmFsdWF0aW9uIEJvYXJkCisJCS0gU1BFQXIxMzQwIChTT0MpCisJCQktIFNQRUFyMTM0MCBFdmFsdWF0aW9uIEJvYXJkCisKKyAgQ29uZmlndXJhdGlvbgorICAtLS0tLS0tLS0tLS0tCisKKyAgQSBnZW5lcmljIGNvbmZpZ3VyYXRpb24gaXMgcHJvdmlkZWQgZm9yIGVhY2ggbWFjaGluZSwgYW5kIGNhbiBiZSB1c2VkIGFzIHRoZQorICBkZWZhdWx0IGJ5CisJbWFrZSBzcGVhcjEzeHhfZGVmY29uZmlnCisJbWFrZSBzcGVhcjN4eF9kZWZjb25maWcKKwltYWtlIHNwZWFyNnh4X2RlZmNvbmZpZworCisgIExheW91dAorICAtLS0tLS0KKworICBUaGUgY29tbW9uIGZpbGVzIGZvciBtdWx0aXBsZSBtYWNoaW5lIGZhbWlsaWVzIChTUEVBcjN4eCwgU1BFQXI2eHggYW5kCisgIFNQRUFyMTN4eCkgYXJlIGxvY2F0ZWQgaW4gdGhlIHBsYXRmb3JtIGNvZGUgY29udGFpbmVkIGluIGFyY2gvYXJtL3BsYXQtc3BlYXIKKyAgd2l0aCBoZWFkZXJzIGluIHBsYXQvLgorCisgIEVhY2ggbWFjaGluZSBzZXJpZXMgaGF2ZSBhIGRpcmVjdG9yeSB3aXRoIG5hbWUgYXJjaC9hcm0vbWFjaC1zcGVhciBmb2xsb3dlZCBieQorICBzZXJpZXMgbmFtZS4gTGlrZSBtYWNoLXNwZWFyM3h4LCBtYWNoLXNwZWFyNnh4IGFuZCBtYWNoLXNwZWFyMTN4eC4KKworICBDb21tb24gZmlsZSBmb3IgbWFjaGluZXMgb2Ygc3BlYXIzeHggZmFtaWx5IGlzIG1hY2gtc3BlYXIzeHgvc3BlYXIzeHguYywgZm9yCisgIHNwZWFyNnh4IGlzIG1hY2gtc3BlYXI2eHgvc3BlYXI2eHguYyBhbmQgZm9yIHNwZWFyMTN4eCBmYW1pbHkgaXMKKyAgbWFjaC1zcGVhcjEzeHgvc3BlYXIxM3h4LmMuIG1hY2gtc3BlYXIqIGFsc28gY29udGFpbiBzb2MvbWFjaGluZSBzcGVjaWZpYworICBmaWxlcywgbGlrZSBzcGVhcjEzMTAuYywgc3BlYXIxMzQwLmMgc3BlYXIzMDAuYywgc3BlYXIzMTAuYywgc3BlYXIzMjAuYyBhbmQKKyAgc3BlYXI2MDAuYy4gIG1hY2gtc3BlYXIqIGRvZXNuJ3QgY29udGFpbnMgYm9hcmQgc3BlY2lmaWMgZmlsZXMgYXMgdGhleSBmdWxseQorICBzdXBwb3J0IEZsYXR0ZW5lZCBEZXZpY2UgVHJlZS4KKworCisgIERvY3VtZW50IEF1dGhvcgorICAtLS0tLS0tLS0tLS0tLS0KKworICBWaXJlc2ggS3VtYXIgPHZpcmVzaGtAa2VybmVsLm9yZz4sIChjKSAyMDEwLTIwMTIgU1QgTWljcm9lbGVjdHJvbmljcwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy1TM0MyNFhYL0NQVWZyZXEudHh0IGIvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy1TM0MyNFhYL0NQVWZyZXEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhOTY4YWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nLVMzQzI0WFgvQ1BVZnJlcS50eHQKQEAgLTAsMCArMSw3NSBAQAorCQlTM0MyNFhYIENQVWZyZXEgc3VwcG9ydAorCQk9PT09PT09PT09PT09PT09PT09PT09PQorCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLQorCisgVGhlIFMzQzI0WFggc2VyaWVzIHN1cHBvcnQgYSBudW1iZXIgb2YgcG93ZXIgc2F2aW5nIHN5c3RlbXMsIHN1Y2ggYXMKKyB0aGUgYWJpbGl0eSB0byBjaGFuZ2UgdGhlIGNvcmUsIG1lbW9yeSBhbmQgcGVyaXBoZXJhbCBvcGVyYXRpbmcKKyBmcmVxdWVuY2llcy4gVGhlIGNvcmUgY29udHJvbCBpcyBleHBvcnRlZCB2aWEgdGhlIENQVUZyZXEgZHJpdmVyCisgd2hpY2ggaGFzIGEgbnVtYmVyIG9mIGRpZmZlcmVudCBtYW51YWwgb3IgYXV0b21hdGljIGNvbnRyb2xzIG92ZXIgdGhlCisgcmF0ZSB0aGUgY29yZSBpcyBydW5uaW5nIGF0LgorCisgVGhlcmUgYXJlIHR3byBmb3JtcyBvZiB0aGUgZHJpdmVyIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWMgQ1BVIGFuZAorIGhvdyB0aGUgY2xvY2tzIGFyZSBhcnJhbmdlZC4gVGhlIGZpcnN0IGltcGxlbWVudGF0aW9uIHVzZWQgYXMgc2luZ2xlCisgUExMIHRvIGZlZWQgdGhlIEFSTSwgbWVtb3J5IGFuZCBwZXJpcGhlcmFscyB2aWEgYSBzZXJpZXMgb2YgZGl2aWRlcnMKKyBhbmQgbXV4ZXMgYW5kIHRoaXMgaXMgdGhlIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgZG9jdW1lbnRlZCBoZXJlLiBBCisgbmV3ZXIgdmVyc2lvbiB3aGVyZSB0aGVyZSBpcyBhIHNlcGFyYXRlIFBMTCBhbmQgY2xvY2sgZGl2aWRlciBmb3IgdGhlCisgQVJNIGNvcmUgaXMgYXZhaWxhYmxlIGFzIGEgc2VwYXJhdGUgZHJpdmVyLgorCisKK0xheW91dAorLS0tLS0tCisKKyBUaGUgY29kZSBjb3JlIG1hbmFnZXMgdGhlIENQVSBzcGVjaWZpYyBkcml2ZXJzLCBhbnkgZGF0YSB0aGF0IHRoZXkKKyBuZWVkIHRvIHJlZ2lzdGVyIGFuZCB0aGUgaW50ZXJmYWNlIHRvIHRoZSBnZW5lcmljIGRyaXZlcnMvY3B1ZnJlcQorIHN5c3RlbS4gRWFjaCBDUFUgcmVnaXN0ZXJzIGEgZHJpdmVyIHRvIGNvbnRyb2wgdGhlIFBMTCwgY2xvY2sgZGl2aWRlcnMKKyBhbmQgYW55dGhpbmcgZWxzZSBhc3NvY2lhdGVkIHdpdGggaXQuIEFueSBib2FyZCB0aGF0IHdhbnRzIHRvIHVzZSB0aGlzCisgZnJhbWV3b3JrIG5lZWRzIHRvIHN1cHBseSBhdCBsZWFzdCBiYXNpYyBkZXRhaWxzIG9mIHdoYXQgaXMgcmVxdWlyZWQuCisKKyBUaGUgY29yZSByZWdpc3RlcnMgd2l0aCBkcml2ZXJzL2NwdWZyZXEgYXQgaW5pdCB0aW1lIGlmIGFsbCB0aGUgZGF0YQorIG5lY2Vzc2FyeSBoYXMgYmVlbiBzdXBwbGllZC4KKworCitDUFUgc3VwcG9ydAorLS0tLS0tLS0tLS0KKworIFRoZSBzdXBwb3J0IGZvciBlYWNoIENQVSBkZXBlbmRzIG9uIHRoZSBmYWNpbGl0aWVzIHByb3ZpZGVkIGJ5IHRoZQorIFNvQyBhbmQgdGhlIGRyaXZlciBhcyBlYWNoIGRldmljZSBoYXMgZGlmZmVyZW50IFBMTCBhbmQgY2xvY2sgY2hhaW5zCisgYXNzb2NpYXRlZCB3aXRoIGl0LgorCisKK1Nsb3cgTW9kZQorLS0tLS0tLS0tCisKKyBUaGUgU0xPVyBtb2RlIHdoZXJlIHRoZSBQTEwgaXMgdHVybmVkIG9mZiBhbHRvZ2V0aGVyIGFuZCB0aGUKKyBzeXN0ZW0gaXMgZmVkIGJ5IHRoZSBleHRlcm5hbCBjcnlzdGFsIGlucHV0IGlzIGN1cnJlbnRseSBub3QKKyBzdXBwb3J0ZWQuCisKKworc3lzZnMKKy0tLS0tCisKKyBUaGUgY29yZSBjb2RlIGV4cG9ydHMgZXh0cmEgaW5mb3JtYXRpb24gdmlhIHN5c2ZzIGluIHRoZSBkaXJlY3RvcnkKKyBkZXZpY2VzL3N5c3RlbS9jcHUvY3B1MC9hcmNoLWZyZXEuCisKKworQm9hcmQgU3VwcG9ydAorLS0tLS0tLS0tLS0tLQorCisgRWFjaCBib2FyZCB0aGF0IHdhbnRzIHRvIHVzZSB0aGUgY3B1ZnJlcSBjb2RlIG11c3QgcmVnaXN0ZXIgc29tZSBiYXNpYworIGluZm9ybWF0aW9uIHdpdGggdGhlIGNvcmUgZHJpdmVyIHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCB0aGUKKyBib2FyZCByZXF1aXJlcyBhbmQgYW55IHJlc3RyaWN0aW9ucyBiZWluZyBwbGFjZWQgb24gaXQuCisKKyBUaGUgYm9hcmQgbmVlZHMgdG8gc3VwcGx5IGluZm9ybWF0aW9uIGFib3V0IHdoZXRoZXIgaXQgbmVlZHMgdGhlIElPIGJhbmsKKyB0aW1pbmdzIGNoYW5naW5nLCBhbnkgbWF4aW11bSBmcmVxdWVuY3kgbGltaXRzIGFuZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyBTRFJBTSByZWZyZXNoIHJhdGUuCisKKworCisKK0RvY3VtZW50IEF1dGhvcgorLS0tLS0tLS0tLS0tLS0tCisKK0JlbiBEb29rcywgQ29weXJpZ2h0IDIwMDkgU2ltdGVjIEVsZWN0cm9uaWNzCitMaWNlbnNlZCB1bmRlciBHUEx2MgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy1TM0MyNFhYL0VCMjQxMElUWC50eHQgYi9Eb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nLVMzQzI0WFgvRUIyNDEwSVRYLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODcyOTJlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy1TM0MyNFhYL0VCMjQxMElUWC50eHQKQEAgLTAsMCArMSw1OCBAQAorCQlTaW10ZWMgRWxlY3Ryb25pY3MgRUIyNDEwSVRYIChCQVNUKQorCQk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisJaHR0cDovL3d3dy5zaW10ZWMuY28udWsvcHJvZHVjdHMvRUIyNDEwSVRYLworCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLQorCisgIFRoZSBFQjI0MTBJVFggaXMgYSBTM0MyNDEwIGJhc2VkIGRldmVsb3BtZW50IGJvYXJkIHdpdGggYSB2YXJpZXR5IG9mCisgIHBlcmlwaGVyYWxzIGFuZCBleHBhbnNpb24gY29ubmVjdG9ycy4gVGhpcyBib2FyZCBpcyBhbHNvIGtub3duIGJ5CisgIHRoZSBzaG9ydGVuZWQgbmFtZSBvZiBCYXN0LgorCisKK0NvbmZpZ3VyYXRpb24KKy0tLS0tLS0tLS0tLS0KKworICBUbyBzZXQgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiwgdXNlIGBtYWtlIGJhc3RfZGVmY29uZmlnYCB3aGljaAorICBzdXBwb3J0cyB0aGUgY29tbW9ubHkgdXNlZCBmZWF0dXJlcyBvZiB0aGlzIGJvYXJkLgorCisKK1N1cHBvcnQKKy0tLS0tLS0KKworICBPZmZpY2lhbCBzdXBwb3J0IGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBvbiB0aGUgU2ltdGVjIEVsZWN0cm9uaWNzCisgIHdlYnNpdGUsIGF0IHRoZSBwcm9kdWN0IHBhZ2UgaHR0cDovL3d3dy5zaW10ZWMuY28udWsvcHJvZHVjdHMvRUIyNDEwSVRYLworCisgIFVzZWZ1bCBsaW5rczoKKworICAgIC0gUmVzb3VyY2VzIFBhZ2UgaHR0cDovL3d3dy5zaW10ZWMuY28udWsvcHJvZHVjdHMvRUIyNDEwSVRYL3Jlc291cmNlcy5odG1sCisKKyAgICAtIEJvYXJkIEZBUSBhdCBodHRwOi8vd3d3LnNpbXRlYy5jby51ay9wcm9kdWN0cy9FQjI0MTBJVFgvZmFxLmh0bWwKKworICAgIC0gQm9vdGxvYWRlciBpbmZvIGh0dHA6Ly93d3cuc2ltdGVjLmNvLnVrL3Byb2R1Y3RzL1NXQUJMRS9yZXNvdXJjZXMuaHRtbAorICAgICAgYW5kIEZBUSBodHRwOi8vd3d3LnNpbXRlYy5jby51ay9wcm9kdWN0cy9TV0FCTEUvZmFxLmh0bWwKKworCitNVEQKKy0tLQorCisgIFRoZSBOQU5EIGFuZCBOT1Igc3VwcG9ydCBoYXMgYmVlbiBtZXJnZWQgZnJvbSB0aGUgbGludXgtbXRkIHByb2plY3QuCisgIEFueSBwcm9ibGVtcywgc2VlIGh0dHA6Ly93d3cubGludXgtbXRkLmluZnJhZGVhZC5vcmcvIGZvciBtb3JlCisgIGluZm9ybWF0aW9uIG9yIHVwLXRvLWRhdGUgdmVyc2lvbnMgb2YgbGludXgtbXRkLgorCisKK0lERQorLS0tCisKKyAgQm90aCBvbmJvYXJkIElERSBwb3J0cyBhcmUgc3VwcG9ydGVkLCBob3dldmVyIHRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yCisgIGNoYW5naW5nIHNwZWVkIG9mIGRldmljZXMsIFBJTyBNb2RlIDQgY2FwYWJsZSBkcml2ZXMgc2hvdWxkIGJlIHVzZWQuCisKKworTWFpbnRhaW5lcnMKKy0tLS0tLS0tLS0tCisKKyAgVGhpcyBib2FyZCBpcyBtYWludGFpbmVkIGJ5IFNpbXRlYyBFbGVjdHJvbmljcy4KKworCitDb3B5cmlnaHQgMjAwNCBCZW4gRG9va3MsIFNpbXRlYyBFbGVjdHJvbmljcwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy1TM0MyNFhYL0dQSU8udHh0IGIvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy1TM0MyNFhYL0dQSU8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlYmQ3ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nLVMzQzI0WFgvR1BJTy50eHQKQEAgLTAsMCArMSwxNzEgQEAKKwkJCVMzQzI0WFggR1BJTyBDb250cm9sCisJCQk9PT09PT09PT09PT09PT09PT09PQorCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLQorCisgIFRoZSBzM2MyNDEwIGtlcm5lbCBwcm92aWRlcyBhbiBpbnRlcmZhY2UgdG8gY29uZmlndXJlIGFuZAorICBtYW5pcHVsYXRlIHRoZSBzdGF0ZSBvZiB0aGUgR1BJTyBwaW5zLCBhbmQgZmluZCBvdXQgb3RoZXIKKyAgaW5mb3JtYXRpb24gYWJvdXQgdGhlbS4KKworICBUaGVyZSBhcmUgYSBudW1iZXIgb2YgY29uZGl0aW9ucyBhdHRhY2hlZCB0byB0aGUgY29uZmlndXJhdGlvbgorICBvZiB0aGUgczNjMjQxMCBHUElPIHN5c3RlbSwgcGxlYXNlIHJlYWQgdGhlIFNhbXN1bmcgcHJvdmlkZWQKKyAgZGF0YS1zaGVldC91c2VycyBtYW51YWwgdG8gZmluZCBvdXQgdGhlIGNvbXBsZXRlIGxpc3QuCisKKyAgU2VlIERvY3VtZW50YXRpb24vYXJtL1NhbXN1bmcvR1BJTy50eHQgZm9yIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uLgorCisKK0dQSU9MSUIKKy0tLS0tLS0KKworICBXaXRoIHRoZSBldmVudCBvZiB0aGUgR1BJT0xJQiBpbiBkcml2ZXJzL2dwaW8sIHN1cHBvcnQgZm9yIHNvbWUKKyAgb2YgdGhlIEdQSU8gZnVuY3Rpb25zIHN1Y2ggYXMgcmVhZGluZyBhbmQgd3JpdGluZyBhIHBpbiB3aWxsCisgIGJlIHJlbW92ZWQgaW4gZmF2b3VyIG9mIHRoaXMgY29tbW9uIGFjY2VzcyBtZXRob2QuCisKKyAgT25jZSBhbGwgdGhlIGV4dGFudCBkcml2ZXJzIGhhdmUgYmVlbiBjb252ZXJ0ZWQsIHRoZSBmdW5jdGlvbnMKKyAgbGlzdGVkIGJlbG93IHdpbGwgYmUgcmVtb3ZlZCAodGhleSBtYXkgYmUgbWFya2VkIGFzIF9fZGVwcmVjYXRlZAorICBpbiB0aGUgbmVhciBmdXR1cmUpLgorCisgIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG5vdyBlaXRoZXIgaGF2ZSBhIHMzY18gc3BlY2lmaWMgdmFyaWFudAorICBvciBhcmUgbWVyZ2VkIGludG8gZ3Bpb2xpYi4gU2VlIHRoZSBkZWZpbml0aW9ucyBpbgorICBhcmNoL2FybS9wbGF0LXNhbXN1bmcvaW5jbHVkZS9wbGF0L2dwaW8tY2ZnLmg6CisKKyAgczNjMjQxMF9ncGlvX3NldHBpbigpCQlncGlvX3NldF92YWx1ZSgpIG9yIGdwaW9fZGlyZWN0aW9uX291dHB1dCgpCisgIHMzYzI0MTBfZ3Bpb19nZXRwaW4oKQkJZ3Bpb19nZXRfdmFsdWUoKSBvciBncGlvX2RpcmVjdGlvbl9pbnB1dCgpCisgIHMzYzI0MTBfZ3Bpb19nZXRpcnEoKQkJZ3Bpb190b19pcnEoKQorICBzM2MyNDEwX2dwaW9fY2ZncGluKCkJCXMzY19ncGlvX2NmZ3BpbigpCisgIHMzYzI0MTBfZ3Bpb19nZXRjZmcoKQkJczNjX2dwaW9fZ2V0Y2ZnKCkKKyAgczNjMjQxMF9ncGlvX3B1bGx1cCgpCQlzM2NfZ3Bpb19zZXRwdWxsKCkKKworCitHUElPTElCIGNvbnZlcnNpb24KKy0tLS0tLS0tLS0tLS0tLS0tLQorCitJZiB5b3UgbmVlZCB0byBjb252ZXJ0IHlvdXIgYm9hcmQgb3IgZHJpdmVyIHRvIHVzZSBncGlvbGliIGZyb20gdGhlIHBoYXNlZAorb3V0IHMzYzI0MTAgQVBJLCB0aGVuIGhlcmUgYXJlIHNvbWUgbm90ZXMgb24gdGhlIHByb2Nlc3MuCisKKzEpIElmIHlvdXIgYm9hcmQgaXMgZXhjbHVzaXZlbHkgdXNpbmcgYW4gR1BJTywgc2F5IHRvIGNvbnRyb2wgcGVyaXBoZXJhbAorICAgcG93ZXIsIHRoZW4gaXQgd2lsbCByZXF1aXJlIHRvIGNsYWltIHRoZSBncGlvIHdpdGggZ3Bpb19yZXF1ZXN0KCkgYmVmb3JlCisgICBpdCBjYW4gdXNlIGl0LgorCisgICBJdCBpcyByZWNvbW1lbmRlZCB0byBjaGVjayB0aGUgcmV0dXJuIHZhbHVlLCB3aXRoIGF0IGxlYXN0IFdBUk5fT04oKQorICAgZHVyaW5nIGluaXRpYWxpc2F0aW9uLgorCisyKSBUaGUgczNjMjQxMF9ncGlvX2NmZ3BpbigpIGNhbiBiZSBkaXJlY3RseSByZXBsYWNlZCB3aXRoIHMzY19ncGlvX2NmZ3BpbigpCisgICBhcyB0aGV5IGhhdmUgdGhlIHNhbWUgYXJndW1lbnRzLCBhbmQgY2FuIGVpdGhlciB0YWtlIHRoZSBwaW4gc3BlY2lmaWMKKyAgIHZhbHVlcywgb3IgdGhlIG1vcmUgZ2VuZXJpYyBzcGVjaWFsLWZ1bmN0aW9uLW51bWJlciBhcmd1bWVudHMuCisKKzMpIHMzYzI0MTBfZ3Bpb19wdWxsdXAoKSBjaGFuZ2VzIGhhdmUgdGhlIHByb2JsZW0gdGhhdCB3aGlsc3QgdGhlCisgICBzM2MyNDEwX2dwaW9fcHVsbHVwKHgsIDEpIGNhbiBiZSBlYXNpbHkgdHJhbnNsYXRlZCB0byB0aGUKKyAgIHMzY19ncGlvX3NldHB1bGwoeCwgUzNDX0dQSU9fUFVMTF9OT05FKSwgdGhlIHMzYzI0MTBfZ3Bpb19wdWxsdXAoeCwgMCkKKyAgIGFyZSBub3Qgc28gZWFzeS4KKworICAgVGhlIHMzYzI0MTBfZ3Bpb19wdWxsdXAoeCwgMCkgY2FzZSBlbmFibGVzIHRoZSBwdWxsLXVwIChvciBpbiB0aGUgY2FzZQorICAgb2Ygc29tZSBvZiB0aGUgZGV2aWNlcywgYSBwdWxsLWRvd24pIGFuZCBhcyBzdWNoIHRoZSBuZXcgQVBJIGRpc3Rpbmd1aXNoZXMKKyAgIGJldHdlZW4gdGhlIFVQIGFuZCBET1dOIGNhc2UuIFRoZXJlIGlzIGN1cnJlbnRseSBubyAnanVzdCB0dXJuIG9uJyBzZXR0aW5nCisgICB3aGljaCBtYXkgYmUgcmVxdWlyZWQgaWYgdGhpcyBiZWNvbWVzIGEgcHJvYmxlbS4KKworNCkgczNjMjQxMF9ncGlvX3NldHBpbigpIGNhbiBiZSByZXBsYWNlZCBieSBncGlvX3NldF92YWx1ZSgpLCB0aGUgb2xkIGNhbGwKKyAgIGRvZXMgbm90IGltcGxpY2l0bHkgY29uZmlndXJlIHRoZSByZWxldmFudCBncGlvIHRvIG91dHB1dC4gVGhlIGdwaW8KKyAgIGRpcmVjdGlvbiBzaG91bGQgYmUgY2hhbmdlZCBiZWZvcmUgdXNpbmcgZ3Bpb19zZXRfdmFsdWUoKS4KKworNSkgczNjMjQxMF9ncGlvX2dldHBpbigpIGlzIHJlcGxhY2VhYmxlIGJ5IGdwaW9fZ2V0X3ZhbHVlKCkgaWYgdGhlIHBpbgorICAgaGFzIGJlZW4gc2V0IHRvIGlucHV0LiBJdCBpcyBjdXJyZW50bHkgdW5rbm93biB3aGF0IHRoZSBiZWhhdmlvdXIgaXMKKyAgIHdoZW4gdXNpbmcgZ3Bpb19nZXRfdmFsdWUoKSBvbiBhbiBvdXRwdXQgcGluIChzM2MyNDEwX2dwaW9fZ2V0cGluCisgICB3b3VsZCByZXR1cm4gdGhlIHZhbHVlIHRoZSBwaW4gaXMgc3VwcG9zZWQgdG8gYmUgb3V0cHV0dGluZykuCisKKzYpIHMzYzI0MTBfZ3Bpb19nZXRpcnEoKSBzaG91bGQgYmUgZGlyZWN0bHkgcmVwbGFjZWFibGUgd2l0aCB0aGUKKyAgIGdwaW9fdG9faXJxKCkgY2FsbC4KKworVGhlIHMzYzI0MTBfZ3BpbyBhbmQgZ3Bpb18gY2FsbHMgaGF2ZSBhbHdheXMgb3BlcmF0ZWQgb24gdGhlIHNhbWUgZ3BpbworbnVtYmVyc3BhY2UsIHNvIHRoZXJlIGlzIG5vIHByb2JsZW0gd2l0aCBjb252ZXJ0aW5nIHRoZSBncGlvIG51bWJlcmluZworYmV0d2VlbiB0aGUgY2FsbHMuCisKKworSGVhZGVycworLS0tLS0tLQorCisgIFNlZSBhcmNoL2FybS9tYWNoLXMzYzI0eHgvaW5jbHVkZS9tYWNoL3JlZ3MtZ3Bpby5oIGZvciB0aGUgbGlzdAorICBvZiBHUElPIHBpbnMsIGFuZCB0aGUgY29uZmlndXJhdGlvbiB2YWx1ZXMgZm9yIHRoZW0uIFRoaXMKKyAgaXMgaW5jbHVkZWQgYnkgdXNpbmcgI2luY2x1ZGUgPG1hY2gvcmVncy1ncGlvLmg+CisKKworUElOIE51bWJlcnMKKy0tLS0tLS0tLS0tCisKKyAgRWFjaCBwaW4gaGFzIGFuIHVuaXF1ZSBudW1iZXIgYXNzb2NpYXRlZCB3aXRoIGl0IGluIHJlZ3MtZ3Bpby5oLAorICBlLmcuIFMzQzI0MTBfR1BBKDApIG9yIFMzQzI0MTBfR1BGKDEpLiBUaGVzZSBkZWZpbmVzIGFyZSB1c2VkIHRvIHRlbGwKKyAgdGhlIEdQSU8gZnVuY3Rpb25zIHdoaWNoIHBpbiBpcyB0byBiZSB1c2VkLgorCisgIFdpdGggdGhlIGNvbnZlcnNpb24gdG8gZ3Bpb2xpYiwgdGhlcmUgaXMgbm8gbG9uZ2VyIGEgZGlyZWN0IGNvbnZlcnNpb24KKyAgZnJvbSBncGlvIHBpbiBudW1iZXIgdG8gcmVnaXN0ZXIgYmFzZSBhZGRyZXNzIGFzIGluIGVhcmxpZXIga2VybmVscy4gVGhpcworICBpcyBkdWUgdG8gdGhlIG51bWJlciBzcGFjZSByZXF1aXJlZCBmb3IgbmV3ZXIgU29DcyB3aGVyZSB0aGUgbGF0ZXIKKyAgR1BJT3MgYXJlIG5vdCBjb250aWd1b3VzLgorCisKK0NvbmZpZ3VyaW5nIGEgcGluCistLS0tLS0tLS0tLS0tLS0tLQorCisgIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gYWxsb3dzIHRoZSBjb25maWd1cmF0aW9uIG9mIGEgZ2l2ZW4gcGluIHRvCisgIGJlIGNoYW5nZWQuCisKKyAgICB2b2lkIHMzY19ncGlvX2NmZ3Bpbih1bnNpZ25lZCBpbnQgcGluLCB1bnNpZ25lZCBpbnQgZnVuY3Rpb24pOworCisgIGUuZy46CisKKyAgICAgczNjX2dwaW9fY2ZncGluKFMzQzI0MTBfR1BBKDApLCBTM0NfR1BJT19TRk4oMSkpOworICAgICBzM2NfZ3Bpb19jZmdwaW4oUzNDMjQxMF9HUEUoOCksIFMzQ19HUElPX1NGTigyKSk7CisKKyAgIHdoaWNoIHdvdWxkIHR1cm4gR1BBKDApIGludG8gdGhlIGxvd2VzdCBBZGRyZXNzIGxpbmUgQTAsIGFuZCBzZXQKKyAgIEdQRSg4KSB0byBiZSBjb25uZWN0ZWQgdG8gdGhlIFNESU8vTU1DIGNvbnRyb2xsZXIncyBTRERBVDEgbGluZS4KKworCitSZWFkaW5nIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gb2YgYSBwaW4gY2FuIGJlIHJlYWQgYnkgdXNpbmcgc3RhbmRhcmQKKyAgZ3Bpb2xpYiBmdW5jdGlvbjoKKworICBzM2NfZ3Bpb19nZXRjZmcodW5zaWduZWQgaW50IHBpbik7CisKKyAgVGhlIHJldHVybiB2YWx1ZSB3aWxsIGJlIGZyb20gdGhlIHNhbWUgc2V0IG9mIHZhbHVlcyB3aGljaCBjYW4gYmUKKyAgcGFzc2VkIHRvIHMzY19ncGlvX2NmZ3BpbigpLgorCisKK0NvbmZpZ3VyaW5nIGEgcHVsbC11cCByZXNpc3RvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgQSBsYXJnZSBwcm9wb3J0aW9uIG9mIHRoZSBHUElPIHBpbnMgb24gdGhlIFMzQzI0MTAgY2FuIGhhdmUgd2VhaworICBwdWxsLXVwIHJlc2lzdG9ycyBlbmFibGVkLiBUaGlzIGNhbiBiZSBjb25maWd1cmVkIGJ5IHRoZSBmb2xsb3dpbmcKKyAgZnVuY3Rpb246CisKKyAgICB2b2lkIHMzY19ncGlvX3NldHB1bGwodW5zaWduZWQgaW50IHBpbiwgdW5zaWduZWQgaW50IHRvKTsKKworICBXaGVyZSB0aGUgdG8gdmFsdWUgaXMgUzNDX0dQSU9fUFVMTF9OT05FIHRvIHNldCB0aGUgcHVsbC11cCBvZmYsCisgIGFuZCBTM0NfR1BJT19QVUxMX1VQIHRvIGVuYWJsZSB0aGUgc3BlY2lmaWVkIHB1bGwtdXAuIEFueSBvdGhlcgorICB2YWx1ZXMgYXJlIGN1cnJlbnRseSB1bmRlZmluZWQuCisKKworR2V0dGluZyBhbmQgc2V0dGluZyB0aGUgc3RhdGUgb2YgYSBQSU4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlc2UgY2FsbHMgYXJlIG5vdyBpbXBsZW1lbnRlZCBieSB0aGUgcmVsZXZhbnQgZ3Bpb2xpYiBjYWxscywgY29udmVydAorICB5b3VyIGJvYXJkIG9yIGRyaXZlciB0byB1c2UgZ3Bpb2xpYi4KKworCitHZXR0aW5nIHRoZSBJUlEgbnVtYmVyIGFzc29jaWF0ZWQgd2l0aCBhIFBJTgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBBIHN0YW5kYXJkIGdwaW9saWIgZnVuY3Rpb24gY2FuIG1hcCB0aGUgZ2l2ZW4gcGluIG51bWJlciB0byBhbiBJUlEKKyAgbnVtYmVyIHRvIHBhc3MgdG8gdGhlIElSUSBzeXN0ZW0uCisKKyAgIGludCBncGlvX3RvX2lycSh1bnNpZ25lZCBpbnQgcGluKTsKKworICBOb3RlLCBub3QgYWxsIHBpbnMgaGF2ZSBhbiBJUlEuCisKKworQXV0aG9yCistLS0tLS0tCisKK0JlbiBEb29rcywgMDMgT2N0b2JlciAyMDA0CitDb3B5cmlnaHQgMjAwNCBCZW4gRG9va3MsIFNpbXRlYyBFbGVjdHJvbmljcwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy1TM0MyNFhYL0gxOTQwLnR4dCBiL0RvY3VtZW50YXRpb24vYXJtL1NhbXN1bmctUzNDMjRYWC9IMTk0MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjczODg1OQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL1NhbXN1bmctUzNDMjRYWC9IMTk0MC50eHQKQEAgLTAsMCArMSw0MCBAQAorCQlIUCBJUEFRIEgxOTQwCisJCT09PT09PT09PT09PT0KKworaHR0cDovL3d3dy5oYW5kaGVsZHMub3JnL3Byb2plY3RzL2gxOTQwLmh0bWwKKworSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0KKworICBUaGUgSFAgSDE5NDAgaXMgYSBTM0MyNDEwIGJhc2VkIGhhbmRoZWxkIGRldmljZSwgd2l0aAorICBibHVldG9vdGggY29ubmVjdGl2aXR5LgorCisKK1N1cHBvcnQKKy0tLS0tLS0KKworICBBIHZhcmlldHkgb2YgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlCisKKyAgaGFuZGhlbGRzLm9yZyBwcm9qZWN0IHBhZ2U6CisKKyAgICBodHRwOi8vd3d3LmhhbmRoZWxkcy5vcmcvcHJvamVjdHMvaDE5NDAuaHRtbAorCisgIGhhbmRoZWxkcy5vcmcgd2lraSBwYWdlOgorCisgICAgaHR0cDovL2hhbmRoZWxkcy5vcmcvbW9pbi9tb2luLmNnaS9IcElwYXFIMTk0MAorCisgIEhlcmJlcnQgUMO2dHpsIHBhZ2VzOgorCisgICAgaHR0cDovL3ZzZXJ2ZXIuMTN0aGZsb29yLmF0L0gxOTQwLworCisKK01haW50YWluZXJzCistLS0tLS0tLS0tLQorCisgIFRoaXMgcHJvamVjdCBpcyBiZWluZyBtYWludGFpbmVkIGFuZCBkZXZlbG9wZWQgYnkgYSB2YXJpZXR5CisgIG9mIHBlb3BsZSwgaW5jbHVkaW5nIEJlbiBEb29rcywgQXJuYXVkIFBhdGFyZCwgYW5kIEhlcmJlcnQgUMO2dHpsLgorCisgIFRoYW5rcyB0byB0aGUgbWFueSBvdGhlcnMgd2hvIGhhdmUgYWxzbyBwcm92aWRlZCBzdXBwb3J0LgorCisKKyhjKSAyMDA1IEJlbiBEb29rcwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy1TM0MyNFhYL05BTkQudHh0IGIvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy1TM0MyNFhYL05BTkQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNDc4YTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nLVMzQzI0WFgvTkFORC50eHQKQEAgLTAsMCArMSwzMCBAQAorCQkJUzNDMjRYWCBOQU5EIFN1cHBvcnQKKwkJCT09PT09PT09PT09PT09PT09PT09CisKK0ludHJvZHVjdGlvbgorLS0tLS0tLS0tLS0tCisKK1NtYWxsIFBhZ2UgTkFORAorLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBkcml2ZXIgdXNlcyBhIDUxMiBieXRlICgxIHBhZ2UpIEVDQyBjb2RlIGZvciB0aGlzIHNldHVwLiBUaGUKK0VDQyBjb2RlIGlzIG5vdCBkaXJlY3RseSBjb21wYXRpYmxlIHdpdGggdGhlIGRlZmF1bHQga2VybmVsIEVDQworY29kZSwgc28gdGhlIGRyaXZlciBlbmZvcmNlcyBpdHMgb3duIE9PQiBsYXlvdXQgYW5kIEVDQyBwYXJhbWV0ZXJzCisKK0xhcmdlIFBhZ2UgTkFORAorLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBkcml2ZXIgaXMgY2FwYWJsZSBvZiBoYW5kbGluZyBOQU5EIGZsYXNoIHdpdGggYSAyS2lCIHBhZ2UKK3NpemUsIHdpdGggc3VwcG9ydCBmb3IgaGFyZHdhcmUgRUNDIGdlbmVyYXRpb24gYW5kIGNvcnJlY3Rpb24uCisKK1VubGlrZSB0aGUgNTEyYnl0ZSBwYWdlIG1vZGUsIHRoZSBkcml2ZXIgZ2VuZXJhdGVzIEVDQyBkYXRhIGZvcgorZWFjaCAyNTYgYnl0ZSBibG9jayBpbiBhbiAyS2lCIHBhZ2UuIFRoaXMgbWVhbnMgdGhhdCBtb3JlIHRoYW4KK29uZSBlcnJvciBpbiBhIHBhZ2UgY2FuIGJlIHJlY3RpZmllZC4gSXQgYWxzbyBtZWFucyB0aGF0IHRoZQorT09CIGxheW91dCByZW1haW5zIHRoZSBkZWZhdWx0IGtlcm5lbCBsYXlvdXQgZm9yIHRoZXNlIGZsYXNoZXMuCisKKworRG9jdW1lbnQgQXV0aG9yCistLS0tLS0tLS0tLS0tLS0KKworQmVuIERvb2tzLCBDb3B5cmlnaHQgMjAwNyBTaW10ZWMgRWxlY3Ryb25pY3MKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy1TM0MyNFhYL092ZXJ2aWV3LnR4dCBiL0RvY3VtZW50YXRpb24vYXJtL1NhbXN1bmctUzNDMjRYWC9PdmVydmlldy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU5NTg3YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL1NhbXN1bmctUzNDMjRYWC9PdmVydmlldy50eHQKQEAgLTAsMCArMSwzMTggQEAKKwkJCVMzQzI0WFggQVJNIExpbnV4IE92ZXJ2aWV3CisJCQk9PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKKworSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0KKworICBUaGUgU2Ftc3VuZyBTM0MyNFhYIHJhbmdlIG9mIEFSTTkgU3lzdGVtLW9uLUNoaXAgQ1BVcyBhcmUgc3VwcG9ydGVkCisgIGJ5IHRoZSAnczNjMjQxMCcgYXJjaGl0ZWN0dXJlIG9mIEFSTSBMaW51eC4gQ3VycmVudGx5IHRoZSBTM0MyNDEwLAorICBTM0MyNDEyLCBTM0MyNDEzLCBTM0MyNDE2LCBTM0MyNDQwLCBTM0MyNDQyLCBTM0MyNDQzIGFuZCBTM0MyNDUwIGRldmljZXMKKyAgYXJlIHN1cHBvcnRlZC4KKworICBTdXBwb3J0IGZvciB0aGUgUzNDMjQwMCBhbmQgUzNDMjRBMCBzZXJpZXMgd2FzIG5ldmVyIGNvbXBsZXRlZCBhbmQgdGhlCisgIGNvcnJlc3BvbmRpbmcgY29kZSBoYXMgYmVlbiByZW1vdmVkIGFmdGVyIGEgd2hpbGUuICBJZiBzb21lb25lIHdpc2hlcyB0bworICByZXZpdmUgdGhpcyBlZmZvcnQsIHBhcnRpYWwgc3VwcG9ydCBjYW4gYmUgcmV0cmlldmVkIGZyb20gZWFybGllciBMaW51eAorICB2ZXJzaW9ucy4KKworICBUaGUgUzNDMjQxNiBhbmQgUzNDMjQ1MCBkZXZpY2VzIGFyZSB2ZXJ5IHNpbWlsYXIgYW5kIFMzQzI0NTAgc3VwcG9ydCBpcworICBpbmNsdWRlZCB1bmRlciB0aGUgYXJjaC9hcm0vbWFjaC1zM2MyNDE2IGRpcmVjdG9yeS4gTm90ZSwgd2hpbHN0IGNvcmUKKyAgc3VwcG9ydCBmb3IgdGhlc2UgU29DcyBpcyBpbiwgd29yayBvbiBzb21lIG9mIHRoZSBleHRyYSBwZXJpcGhlcmFscworICBhbmQgZXh0cmEgaW50ZXJydXB0cyBpcyBzdGlsbCBvbmdvaW5nLgorCisKK0NvbmZpZ3VyYXRpb24KKy0tLS0tLS0tLS0tLS0KKworICBBIGdlbmVyaWMgUzNDMjQxMCBjb25maWd1cmF0aW9uIGlzIHByb3ZpZGVkLCBhbmQgY2FuIGJlIHVzZWQgYXMgdGhlCisgIGRlZmF1bHQgYnkgYG1ha2UgczNjMjQxMF9kZWZjb25maWdgLiBUaGlzIGNvbmZpZ3VyYXRpb24gaGFzIHN1cHBvcnQKKyAgZm9yIGFsbCB0aGUgbWFjaGluZXMsIGFuZCB0aGUgY29tbW9ubHkgdXNlZCBmZWF0dXJlcyBvbiB0aGVtLgorCisgIENlcnRhaW4gbWFjaGluZXMgbWF5IGhhdmUgdGhlaXIgb3duIGRlZmF1bHQgY29uZmlndXJhdGlvbnMgYXMgd2VsbCwKKyAgcGxlYXNlIGNoZWNrIHRoZSBtYWNoaW5lIHNwZWNpZmljIGRvY3VtZW50YXRpb24uCisKKworTGF5b3V0CistLS0tLS0KKworICBUaGUgY29yZSBzdXBwb3J0IGZpbGVzIGFyZSBsb2NhdGVkIGluIHRoZSBwbGF0Zm9ybSBjb2RlIGNvbnRhaW5lZCBpbgorICBhcmNoL2FybS9wbGF0LXMzYzI0eHggd2l0aCBoZWFkZXJzIGluIGluY2x1ZGUvYXNtLWFybS9wbGF0LXMzYzI0eHguCisgIFRoaXMgZGlyZWN0b3J5IHNob3VsZCBiZSBrZXB0IHRvIGl0ZW1zIHNoYXJlZCBiZXR3ZWVuIHRoZSBwbGF0Zm9ybQorICBjb2RlIChhcmNoL2FybS9wbGF0LXMzYzI0eHgpIGFuZCB0aGUgYXJjaC9hcm0vbWFjaC1zM2MyNCogY29kZS4KKworICBFYWNoIGNwdSBoYXMgYSBkaXJlY3Rvcnkgd2l0aCB0aGUgc3VwcG9ydCBmaWxlcyBmb3IgaXQsIGFuZCB0aGUKKyAgbWFjaGluZXMgdGhhdCBjYXJyeSB0aGUgZGV2aWNlLiBGb3IgZXhhbXBsZSBTM0MyNDEwIGlzIGNvbnRhaW5lZAorICBpbiBhcmNoL2FybS9tYWNoLXMzYzI0MTAgYW5kIFMzQzI0NDAgaW4gYXJjaC9hcm0vbWFjaC1zM2MyNDQwCisKKyAgUmVnaXN0ZXIsIGtlcm5lbCBhbmQgcGxhdGZvcm0gZGF0YSBkZWZpbml0aW9ucyBhcmUgaGVsZCBpbiB0aGUKKyAgYXJjaC9hcm0vbWFjaC1zM2MyNDEwIGRpcmVjdG9yeS4vaW5jbHVkZS9tYWNoCisKK2FyY2gvYXJtL3BsYXQtczNjMjR4eDoKKworICBGaWxlcyBpbiBoZXJlIGFyZSBlaXRoZXIgY29tbW9uIHRvIGFsbCB0aGUgczNjMjR4eCBmYW1pbHksCisgIG9yIGFyZSBjb21tb24gdG8gb25seSBzb21lIG9mIHRoZW0gd2l0aCBuYW1lcyB0byBpbmRpY2F0ZSB0aGlzCisgIHN0YXR1cy4gVGhlIGZpbGVzIHRoYXQgYXJlIG5vdCBjb21tb24gdG8gYWxsIGFyZSBnZW5lcmFsbHkgbmFtZWQKKyAgd2l0aCB0aGUgaW5pdGlhbCBjcHUgdGhleSBzdXBwb3J0IGluIHRoZSBzZXJpZXMgdG8gZW5zdXJlIGEgc2hvcnQKKyAgbmFtZSB3aXRob3V0IGFueSBwb3NzaWJpbGl0eSBvZiBjb25mdXNpb24gd2l0aCBuZXdlciBkZXZpY2VzLgorCisgIEFzIGFuIGV4YW1wbGUsIGluaXRpYWxseSBzM2MyNDR4IHdvdWxkIGNvdmVyIHMzYzI0NDAgYW5kIHMzYzI0NDIsIGJ1dAorICB3aXRoIHRoZSBzM2MyNDQzIHdoaWNoIGRvZXMgbm90IHNoYXJlIG1hbnkgb2YgdGhlIHNhbWUgZHJpdmVycyBpbgorICB0aGlzIGRpcmVjdG9yeSwgdGhlIG5hbWUgYmVjb21lcyBpbnZhbGlkLiBXZSBzdGljayB0byBzM2MyNDQwLTx4PgorICB0byBpbmRpY2F0ZSBhIGRyaXZlciB0aGF0IGlzIHMzYzI0NDAgYW5kIHMzYzI0NDIgY29tcGF0aWJsZS4KKworICBUaGlzIGRvZXMgbWVhbiB0aGF0IHRvIGZpbmQgdGhlIHN0YXR1cyBvZiBhbnkgZ2l2ZW4gU29DLCBhIG51bWJlcgorICBvZiBkaXJlY3RvcmllcyBtYXkgbmVlZCB0byBiZSBzZWFyY2hlZC4KKworCitNYWNoaW5lcworLS0tLS0tLS0KKworICBUaGUgY3VycmVudGx5IHN1cHBvcnRlZCBtYWNoaW5lcyBhcmUgYXMgZm9sbG93czoKKworICBTaW10ZWMgRWxlY3Ryb25pY3MgRUIyNDEwSVRYIChCQVNUKQorCisgICAgQSBnZW5lcmFsIHB1cnBvc2UgZGV2ZWxvcG1lbnQgYm9hcmQsIHNlZSBFQjI0MTBJVFgudHh0IGZvciBmdXJ0aGVyCisgICAgZGV0YWlscworCisgIFNpbXRlYyBFbGVjdHJvbmljcyBJTTI0NDBEMjAgKE9zaXJpcykKKworICAgIENQVSBNb2R1bGUgZnJvbSBTaW10ZWMgRWxlY3Ryb25pY3MsIHdpdGggYSBTM0MyNDQwQSBDUFUsIG5hbmQgZmxhc2gKKyAgICBhbmQgYSBQQ01DSUEgY29udHJvbGxlci4KKworICBTYW1zdW5nIFNNREsyNDEwCisKKyAgICBTYW1zdW5nJ3Mgb3duIGRldmVsb3BtZW50IGJvYXJkLCBnZWFyZWQgZm9yIFBEQSB3b3JrLgorCisgIFNhbXN1bmcvQWlqaSBTTURLMjQxMgorCisgICAgVGhlIFMzQzI0MTIgdmVyc2lvbiBvZiB0aGUgU01ESzI0NDAuCisKKyAgU2Ftc3VuZy9BaWppIFNNREsyNDEzCisKKyAgICBUaGUgUzNDMjQxMiB2ZXJzaW9uIG9mIHRoZSBTTURLMjQ0MC4KKworICBTYW1zdW5nL01lcml0ZWNoIFNNREsyNDQwCisKKyAgICBUaGUgUzNDMjQ0MCBjb21wYXRpYmxlIHZlcnNpb24gb2YgdGhlIFNNREsyNDQwLCB3aGljaCBoYXMgdGhlCisgICAgb3B0aW9uIG9mIGFuIFMzQzI0NDAgb3IgUzNDMjQ0MiBDUFUgbW9kdWxlLgorCisgIFRob3Jjb20gVlIxMDAwCisKKyAgICBDdXN0b20gZW1iZWRkZWQgYm9hcmQKKworICBIUCBJUEFRIDE5NDAKKworICAgIEhhbmRoZWxkIChJUEFRKSwgYXZhaWxhYmxlIGluIHNldmVyYWwgdmFyaWV0aWVzCisKKyAgSFAgaVBBUSByeDM3MTUKKworICAgIFMzQzI0NDAgYmFzZWQgSVBBUSwgd2l0aCBhIG51bWJlciBvZiB2YXJpYXRpb25zIGRlcGVuZGluZyBvbgorICAgIGZlYXR1cmVzIHNoaXBwZWQuCisKKyAgQWNlciBOMzAKKworICAgIEEgUzNDMjQxMCBiYXNlZCBQREEgZnJvbSBBY2VyLiAgVGhlcmUgaXMgYSBXaWtpIHBhZ2UgYXQKKyAgICBodHRwOi8vaGFuZGhlbGRzLm9yZy9tb2luL21vaW4uY2dpL0FjZXJOMzBEb2N1bWVudGF0aW9uIC4KKworICBBTUwgTTU5MDAKKworICAgIEFtZXJpY2FuIE1pY3Jvc3lzdGVtcycgTTU5MDAKKworICBOZXggVmlzaW9uIE5leGNvZGVyCisgIE5leCBWaXNpb24gT3RvbQorCisgICAgVHdvIG1hY2hpbmVzIGJ5IE5leCBWaXNpb24KKworCitBZGRpbmcgTmV3IE1hY2hpbmVzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlIGFyY2hpdGVjdHVyZSBoYXMgYmVlbiBkZXNpZ25lZCB0byBzdXBwb3J0IGFzIG1hbnkgbWFjaGluZXMgYXMgY2FuCisgIGJlIGNvbmZpZ3VyZWQgZm9yIGl0IGluIG9uZSBrZXJuZWwgYnVpbGQsIGFuZCBhbnkgZnV0dXJlIGFkZGl0aW9ucworICBzaG91bGQga2VlcCB0aGlzIGluIG1pbmQgYmVmb3JlIGFsdGVyaW5nIGl0ZW1zIG91dHNpZGUgb2YgdGhlaXIgb3duCisgIG1hY2hpbmUgZmlsZXMuCisKKyAgTWFjaGluZSBkZWZpbml0aW9ucyBzaG91bGQgYmUga2VwdCBpbiBsaW51eC9hcmNoL2FybS9tYWNoLXMzYzI0MTAsCisgIGFuZCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgZXhhbXBsZXMgdGhhdCBjYW4gYmUgbG9va2VkIGF0LgorCisgIFJlYWQgdGhlIGtlcm5lbCBwYXRjaCBzdWJtaXNzaW9uIHBvbGljaWVzIGFzIHdlbGwgYXMgdGhlCisgIERvY3VtZW50YXRpb24vYXJtIGRpcmVjdG9yeSBiZWZvcmUgc3VibWl0dGluZyBwYXRjaGVzLiBUaGUKKyAgQVJNIGtlcm5lbCBzZXJpZXMgaXMgbWFuYWdlZCBieSBSdXNzZWxsIEtpbmcsIGFuZCBoYXMgYSBwYXRjaCBzeXN0ZW0KKyAgbG9jYXRlZCBhdCBodHRwOi8vd3d3LmFybS5saW51eC5vcmcudWsvZGV2ZWxvcGVyL3BhdGNoZXMvCisgIGFzIHdlbGwgYXMgbWFpbGluZyBsaXN0cyB0aGF0IGNhbiBiZSBmb3VuZCBmcm9tIHRoZSBzYW1lIHNpdGUuCisKKyAgQXMgYSBjb3VydGVzeSwgcGxlYXNlIG5vdGlmeSA8YmVuLWxpbnV4QGZsdWZmLm9yZz4gb2YgYW55IG5ldworICBtYWNoaW5lcyBvciBvdGhlciBtb2RpZmljYXRpb25zLgorCisgIEFueSBsYXJnZSBzY2FsZSBtb2RpZmljYXRpb25zLCBvciBuZXcgZHJpdmVycyBzaG91bGQgYmUgZGlzY3Vzc2VkCisgIG9uIHRoZSBBUk0ga2VybmVsIG1haWxpbmcgbGlzdCAobGludXgtYXJtLWtlcm5lbCkgYmVmb3JlIGJlaW5nCisgIGF0dGVtcHRlZC4gU2VlIGh0dHA6Ly93d3cuYXJtLmxpbnV4Lm9yZy51ay9tYWlsaW5nbGlzdHMvIGZvciB0aGUKKyAgbWFpbGluZyBsaXN0IGluZm9ybWF0aW9uLgorCisKK0kyQworLS0tCisKKyAgVGhlIGhhcmR3YXJlIEkyQyBjb3JlIGluIHRoZSBDUFUgaXMgc3VwcG9ydGVkIGluIHNpbmdsZSBtYXN0ZXIKKyAgbW9kZSwgYW5kIGNhbiBiZSBjb25maWd1cmVkIHZpYSBwbGF0Zm9ybSBkYXRhLgorCisKK1JUQworLS0tCisKKyAgU3VwcG9ydCBmb3IgdGhlIG9uYm9hcmQgUlRDIHVuaXQsIGluY2x1ZGluZyBhbGFybSBmdW5jdGlvbi4KKworICBUaGlzIGhhcyByZWNlbnRseSBiZWVuIHVwZ3JhZGVkIHRvIHVzZSB0aGUgbmV3IFJUQyBjb3JlLAorICBhbmQgdGhlIG1vZHVsZSBoYXMgYmVlbiByZW5hbWVkIHRvIHJ0Yy1zM2MgdG8gZml0IGluIHdpdGgKKyAgdGhlIG5ldyBydGMgbmFtaW5nIHNjaGVtZS4KKworCitXYXRjaGRvZworLS0tLS0tLS0KKworICBUaGUgb25jaGlwIHdhdGNoZG9nIGlzIGF2YWlsYWJsZSB2aWEgdGhlIHN0YW5kYXJkIHdhdGNoZG9nCisgIGludGVyZmFjZS4KKworCitOQU5ECistLS0tCisKKyAgVGhlIGN1cnJlbnQga2VybmVscyBub3cgaGF2ZSBzdXBwb3J0IGZvciB0aGUgczNjMjQxMCBOQU5ECisgIGNvbnRyb2xsZXIuIElmIHRoZXJlIGFyZSBhbnkgcHJvYmxlbXMgdGhlIGxhdGVzdCBsaW51eC1tdGQKKyAgY29kZSBjYW4gYmUgZm91bmQgZnJvbSBodHRwOi8vd3d3LmxpbnV4LW10ZC5pbmZyYWRlYWQub3JnLworCisgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBEb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nLVMzQzI0WFgvTkFORC50eHQKKworCitTRC9NTUMKKy0tLS0tLQorCisgIFRoZSBTRC9NTUMgaGFyZHdhcmUgcHJlIFMzQzI0NDMgaXMgc3VwcG9ydGVkIGluIHRoZSBjdXJyZW50CisgIGtlcm5lbCwgdGhlIGRyaXZlciBpcyBkcml2ZXJzL21tYy9ob3N0L3MzY21jaS5jIGFuZCBzdXBwb3J0cworICAxIGFuZCA0IGJpdCBTRCBvciBNTUMgY2FyZHMuCisKKyAgVGhlIFNESU8gYmVoYXZpb3VyIG9mIHRoaXMgZHJpdmVyIGhhcyBub3QgYmVlbiBmdWxseSB0ZXN0ZWQuIFRoZXJlIGlzIG5vCisgIGN1cnJlbnQgc3VwcG9ydCBmb3IgaGFyZHdhcmUgU0RJTyBpbnRlcnJ1cHRzLgorCisKK1NlcmlhbAorLS0tLS0tCisKKyAgVGhlIHMzYzI0MTAgc2VyaWFsIGRyaXZlciBwcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgaW50ZXJuYWwKKyAgc2VyaWFsIHBvcnRzLiBUaGVzZSBkZXZpY2VzIGFwcGVhciBhcyAvZGV2L3R0eVNBQzAgdGhyb3VnaCAzLgorCisgIFRvIGNyZWF0ZSBkZXZpY2Ugbm9kZXMgZm9yIHRoZXNlLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kcworCisgICAgbWtub2QgdHR5U0FDMCBjIDIwNCA2NAorICAgIG1rbm9kIHR0eVNBQzEgYyAyMDQgNjUKKyAgICBta25vZCB0dHlTQUMyIGMgMjA0IDY2CisKKworR1BJTworLS0tLQorCisgIFRoZSBjb3JlIGNvbnRhaW5zIHN1cHBvcnQgZm9yIG1hbmlwdWxhdGluZyB0aGUgR1BJTywgc2VlIHRoZQorICBkb2N1bWVudGF0aW9uIGluIEdQSU8udHh0IGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGlzIGZpbGUuCisKKyAgTmV3ZXIga2VybmVscyBjYXJyeSBHUElPTElCLCBhbmQgc3VwcG9ydCBpcyBiZWluZyBtb3ZlZCB0b3dhcmRzCisgIHRoaXMgd2l0aCBzb21lIG9mIHRoZSBvbGRlciBzdXBwb3J0IGluIGxpbmUgdG8gYmUgcmVtb3ZlZC4KKworICBBcyBvZiB2Mi42LjM0LCB0aGUgbW92ZSB0b3dhcmRzIHVzaW5nIGdwaW9saWIgc3VwcG9ydCBpcyBhbG1vc3QKKyAgY29tcGxldGUsIGFuZCB2ZXJ5IGxpdHRsZSBvZiB0aGUgb2xkIGNhbGxzIGFyZSBsZWZ0LgorCisgIFNlZSBEb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nLVMzQzI0WFgvR1BJTy50eHQgZm9yIHRoZSBTM0MyNFhYIHNwZWNpZmljCisgIHN1cHBvcnQgYW5kIERvY3VtZW50YXRpb24vYXJtL1NhbXN1bmcvR1BJTy50eHQgZm9yIHRoZSBjb3JlIFNhbXN1bmcKKyAgaW1wbGVtZW50YXRpb24uCisKKworQ2xvY2sgTWFuYWdlbWVudAorLS0tLS0tLS0tLS0tLS0tLQorCisgIFRoZSBjb3JlIHByb3ZpZGVzIHRoZSBpbnRlcmZhY2UgZGVmaW5lZCBpbiB0aGUgaGVhZGVyIGZpbGUKKyAgaW5jbHVkZS9hc20tYXJtL2hhcmR3YXJlL2Nsb2NrLmgsIHRvIGFsbG93IGNvbnRyb2wgb3ZlciB0aGUKKyAgdmFyaW91cyBjbG9jayB1bml0cworCisKK1N1c3BlbmQgdG8gUkFNCistLS0tLS0tLS0tLS0tLQorCisgIEZvciBib2FyZHMgdGhhdCBwcm92aWRlIHN1cHBvcnQgZm9yIHN1c3BlbmQgdG8gUkFNLCB0aGUKKyAgc3lzdGVtIGNhbiBiZSBwbGFjZWQgaW50byBsb3cgcG93ZXIgc3VzcGVuZC4KKworICBTZWUgU3VzcGVuZC50eHQgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKworU1BJCistLS0KKworICBTUEkgZHJpdmVycyBhcmUgYXZhaWxhYmxlIGZvciBib3RoIHRoZSBpbi1idWlsdCBoYXJkd2FyZQorICAoYWx0aG91Z2ggdGhlcmUgaXMgbm8gRE1BIHN1cHBvcnQgeWV0KSBhbmQgYSBnZW5lcmljCisgIEdQSU8gYmFzZWQgc29sdXRpb24uCisKKworTEVEcworLS0tLQorCisgIFRoZXJlIGlzIHN1cHBvcnQgZm9yIEdQSU8gYmFzZWQgTEVEcyB2aWEgYSBwbGF0Zm9ybSBkcml2ZXIKKyAgaW4gdGhlIExFRCBzdWJzeXN0ZW0uCisKKworUGxhdGZvcm0gRGF0YQorLS0tLS0tLS0tLS0tLQorCisgIFdoZW5ldmVyIGEgZGV2aWNlIGhhcyBwbGF0Zm9ybSBzcGVjaWZpYyBkYXRhIHRoYXQgaXMgc3BlY2lmaWVkCisgIG9uIGEgcGVyLW1hY2hpbmUgYmFzaXMsIGNhcmUgc2hvdWxkIGJlIHRha2VuIHRvIGVuc3VyZSB0aGUKKyAgZm9sbG93aW5nOgorCisgICAgMSkgdGhhdCBkZWZhdWx0IGRhdGEgaXMgbm90IGxlZnQgaW4gdGhlIGRldmljZSB0byBjb25mdXNlIHRoZQorICAgICAgIGRyaXZlciBpZiBhIG1hY2hpbmUgZG9lcyBub3Qgc2V0IGl0IGF0IHN0YXJ0dXAKKworICAgIDIpIHRoZSBkYXRhIHNob3VsZCAoaWYgcG9zc2libGUpIGJlIG1hcmtlZCBhcyBfX2luaXRkYXRhLAorICAgICAgIHRvIGVuc3VyZSB0aGF0IHRoZSBkYXRhIGlzIHRocm93biBhd2F5IGlmIHRoZSBtYWNoaW5lIGlzCisgICAgICAgbm90IHRoZSBvbmUgY3VycmVudGx5IGluIHVzZS4KKworICAgICAgIFRoZSBiZXN0IHdheSBvZiBkb2luZyB0aGlzIGlzIHRvIG1ha2UgYSBmdW5jdGlvbiB0aGF0CisgICAgICAga21hbGxvYygpcyBhbiBhcmVhIG9mIG1lbW9yeSwgYW5kIGNvcGllcyB0aGUgX19pbml0ZGF0YQorICAgICAgIGFuZCB0aGVuIHNldHMgdGhlIHJlbGV2YW50IGRldmljZSdzIHBsYXRmb3JtIGRhdGEuIE1ha2luZworICAgICAgIHRoZSBmdW5jdGlvbiBgX19pbml0YCB0YWtlcyBjYXJlIG9mIGVuc3VyaW5nIGl0IGlzIGRpc2NhcmRlZAorICAgICAgIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGluaXRpYWxpc2F0aW9uIGNvZGUKKworICAgICAgIHN0YXRpYyBfX2luaXQgdm9pZCBzM2MyNHh4X3h4eF9zZXRfcGxhdGRhdGEoc3RydWN0IHh4eF9kYXRhICpwZCkKKyAgICAgICB7CisgICAgICAgICAgIHN0cnVjdCBzM2MyNDEwX3h4eF9tYWNoX2luZm8gKm5wZDsKKworCSAgIG5wZCA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBzM2MyNDEwX3h4eF9tYWNoX2luZm8pLCBHRlBfS0VSTkVMKTsKKwkgICBpZiAobnBkKSB7CisJICAgICAgbWVtY3B5KG5wZCwgcGQsIHNpemVvZihzdHJ1Y3QgczNjMjQxMF94eHhfbWFjaF9pbmZvKSk7CisJICAgICAgczNjX2RldmljZV94eHguZGV2LnBsYXRmb3JtX2RhdGEgPSBucGQ7CisJICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgcHJpbnRrKEtFUk5fRVJSICJubyBtZW1vcnkgZm9yIHh4eCBwbGF0Zm9ybSBkYXRhXG4iKTsKKwkgICB9CisJfQorCisJTm90ZSwgc2luY2UgdGhlIGNvZGUgaXMgbWFya2VkIGFzIF9faW5pdCwgaXQgc2hvdWxkIG5vdCBiZQorCWV4cG9ydGVkIG91dHNpZGUgYXJjaC9hcm0vbWFjaC1zM2MyNDEwLywgb3IgZXhwb3J0ZWQgdG8KKwltb2R1bGVzIHZpYSBFWFBPUlRfU1lNQk9MKCkgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLgorCisKK1BvcnQgQ29udHJpYnV0b3JzCistLS0tLS0tLS0tLS0tLS0tLQorCisgIEJlbiBEb29rcyAoQkpEKQorICBWaW5jZW50IFNhbmRlcnMKKyAgSGVyYmVydCBQb3R6bAorICBBcm5hdWQgUGF0YXJkIChSVFApCisgIFJvYyBXdQorICBLbGF1cyBGZXRzY2hlcgorICBEaW1pdHJ5IEFuZHJpYworICBTaGFubm9uIEhvbGxhbmQKKyAgR3VpbGxhdW1lIEdvdXJhdCAoTmV4VmlzaW9uKQorICBDaHJpc3RlciBXZWluaWdlbCAod2luZ2VsKSAoQWNlciBOMzApCisgIEx1Y2FzIENvcnJlaWEgVmlsbGEgUmVhbCAoUzNDMjQwMCBwb3J0KQorCisKK0RvY3VtZW50IEF1dGhvcgorLS0tLS0tLS0tLS0tLS0tCisKK0JlbiBEb29rcywgQ29weXJpZ2h0IDIwMDQtMjAwNiBTaW10ZWMgRWxlY3Ryb25pY3MKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJtL1NhbXN1bmctUzNDMjRYWC9TM0MyNDEyLnR4dCBiL0RvY3VtZW50YXRpb24vYXJtL1NhbXN1bmctUzNDMjRYWC9TM0MyNDEyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDU3ODc2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy1TM0MyNFhYL1MzQzI0MTIudHh0CkBAIC0wLDAgKzEsMTIwIEBACisJCVMzQzI0MTIgQVJNIExpbnV4IE92ZXJ2aWV3CisJCT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ludHJvZHVjdGlvbgorLS0tLS0tLS0tLS0tCisKKyAgVGhlIFMzQzI0MTIgaXMgcGFydCBvZiB0aGUgUzNDMjRYWCByYW5nZSBvZiBBUk05IFN5c3RlbS1vbi1DaGlwIENQVXMKKyAgZnJvbSBTYW1zdW5nLiBUaGlzIHBhcnQgaGFzIGFuIEFSTTkyNi1FSlMgY29yZSwgY2FwYWJsZSBvZiBydW5uaW5nIHVwCisgIHRvIDI2Nk1IeiAoc2VlIGRhdGEtc2hlZXQgZm9yIG1vcmUgaW5mb3JtYXRpb24pCisKKworQ2xvY2sKKy0tLS0tCisKKyAgVGhlIGNvcmUgY2xvY2sgY29kZSBwcm92aWRlcyBhIHNldCBvZiBjbG9ja3MgdG8gdGhlIGRyaXZlcnMsIGFuZCBhbGxvd3MKKyAgZm9yIHNvdXJjZSBzZWxlY3Rpb24gYW5kIGEgbnVtYmVyIG9mIG90aGVyIGZlYXR1cmVzLgorCisKK1Bvd2VyCistLS0tLQorCisgIE5vIHN1cHBvcnQgZm9yIHN1c3BlbmQvcmVzdW1lIHRvIFJBTSBpbiB0aGUgY3VycmVudCBzeXN0ZW0uCisKKworRE1BCistLS0KKworICBObyBjdXJyZW50IHN1cHBvcnQgZm9yIERNQS4KKworCitHUElPCistLS0tCisKKyAgVGhlcmUgaXMgc3VwcG9ydCBmb3Igc2V0dGluZyB0aGUgR1BJTyB0byBpbnB1dC9vdXRwdXQvc3BlY2lhbCBmdW5jdGlvbgorICBhbmQgcmVhZGluZyBvciB3cml0aW5nIHRvIHRoZW0uCisKKworVUFSVAorLS0tLQorCisgIFRoZSBVQVJUIGhhcmR3YXJlIGlzIHNpbWlsYXIgdG8gdGhlIFMzQzI0NDAsIGFuZCBpcyBzdXBwb3J0ZWQgYnkgdGhlCisgIHMzYzI0MTAgZHJpdmVyIGluIHRoZSBkcml2ZXJzL3NlcmlhbCBkaXJlY3RvcnkuCisKKworTkFORAorLS0tLQorCisgIFRoZSBOQU5EIGhhcmR3YXJlIGlzIHNpbWlsYXIgdG8gdGhlIFMzQzI0NDAsIGFuZCBpcyBzdXBwb3J0ZWQgYnkgdGhlCisgIHMzYzI0MTAgZHJpdmVyIGluIHRoZSBkcml2ZXJzL210ZC9uYW5kIGRpcmVjdG9yeS4KKworCitVU0IgSG9zdAorLS0tLS0tLS0KKworICBUaGUgVVNCIGhhcmR3YXJlIGlzIHNpbWlsYXIgdG8gdGhlIFMzQzI0MTAsIHdpdGggZXh0ZW5kZWQgY2xvY2sgc291cmNlCisgIGNvbnRyb2wuIFRoZSBPSENJIHBvcnRpb24gaXMgc3VwcG9ydGVkIGJ5IHRoZSBvaGNpLXMzYzI0MTAgZHJpdmVyLCBhbmQKKyAgdGhlIGNsb2NrIGNvbnRyb2wgc2VsZWN0aW9uIGlzIHN1cHBvcnRlZCBieSB0aGUgY29yZSBjbG9jayBjb2RlLgorCisKK1VTQiBEZXZpY2UKKy0tLS0tLS0tLS0KKworICBObyBjdXJyZW50IHN1cHBvcnQgaW4gdGhlIGtlcm5lbAorCisKK0lSUXMKKy0tLS0KKworICBBbGwgdGhlIHN0YW5kYXJkLCBhbmQgZXh0ZXJuYWwgaW50ZXJydXB0IHNvdXJjZXMgYXJlIHN1cHBvcnRlZC4gVGhlCisgIGV4dHJhIHN1Yi1zb3VyY2VzIGFyZSBub3QgeWV0IHN1cHBvcnRlZC4KKworCitSVEMKKy0tLQorCisgIFRoZSBSVEMgaGFyZHdhcmUgaXMgc2ltaWxhciB0byB0aGUgUzNDMjQxMCwgYW5kIGlzIHN1cHBvcnRlZCBieSB0aGUKKyAgczNjMjQxMC1ydGMgZHJpdmVyLgorCisKK1dhdGNoZG9nCistLS0tLS0tLQorCisgIFRoZSB3YXRjaGRvZyBoYXJkd2FyZSBpcyB0aGUgc2FtZSBhcyB0aGUgUzNDMjQxMCwgYW5kIGlzIHN1cHBvcnRlZCBieQorICB0aGUgczNjMjQxMF93ZHQgZHJpdmVyLgorCisKK01NQy9TRC9TRElPCistLS0tLS0tLS0tLQorCisgIE5vIGN1cnJlbnQgc3VwcG9ydCBmb3IgdGhlIE1NQy9TRC9TRElPIGJsb2NrLgorCitJSUMKKy0tLQorCisgIFRoZSBJSUMgaGFyZHdhcmUgaXMgdGhlIHNhbWUgYXMgdGhlIFMzQzI0MTAsIGFuZCBpcyBzdXBwb3J0ZWQgYnkgdGhlCisgIGkyYy1zM2MyNHh4IGRyaXZlci4KKworCitJSVMKKy0tLQorCisgIE5vIGN1cnJlbnQgc3VwcG9ydCBmb3IgdGhlIElJUyBpbnRlcmZhY2UuCisKKworU1BJCistLS0KKworICBObyBjdXJyZW50IHN1cHBvcnQgZm9yIHRoZSBTUEkgaW50ZXJmYWNlcy4KKworCitBVEEKKy0tLQorCisgIE5vIGN1cnJlbnQgc3VwcG9ydCBmb3IgdGhlIG9uLWJvYXJkIEFUQSBibG9jay4KKworCitEb2N1bWVudCBBdXRob3IKKy0tLS0tLS0tLS0tLS0tLQorCitCZW4gRG9va3MsIENvcHlyaWdodCAyMDA2IFNpbXRlYyBFbGVjdHJvbmljcwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy1TM0MyNFhYL1MzQzI0MTMudHh0IGIvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy1TM0MyNFhYL1MzQzI0MTMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwOWJkYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nLVMzQzI0WFgvUzNDMjQxMy50eHQKQEAgLTAsMCArMSwyMSBAQAorCQlTM0MyNDEzIEFSTSBMaW51eCBPdmVydmlldworCQk9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLQorCisgIFRoZSBTM0MyNDEzIGlzIGFuIGV4dGVuZGVkIHZlcnNpb24gb2YgdGhlIFMzQzI0MTIsIHdpdGggYW4gY2FtZXJhCisgIGludGVyZmFjZSBhbmQgbW9iaWxlIEREUiBtZW1vcnkgc3VwcG9ydC4gU2VlIHRoZSBTM0MyNDEyIHN1cHBvcnQKKyAgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworCitDYW1lcmEgSW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0KKworICBUaGlzIGJsb2NrIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLgorCisKK0RvY3VtZW50IEF1dGhvcgorLS0tLS0tLS0tLS0tLS0tCisKK0JlbiBEb29rcywgQ29weXJpZ2h0IDIwMDYgU2ltdGVjIEVsZWN0cm9uaWNzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nLVMzQzI0WFgvU01ESzI0NDAudHh0IGIvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy1TM0MyNFhYL1NNREsyNDQwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjkzOTBiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy1TM0MyNFhYL1NNREsyNDQwLnR4dApAQCAtMCwwICsxLDU2IEBACisJCVNhbXN1bmcvTWVyaXRlY2ggU01ESzI0NDAKKwkJPT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLQorCisgIFRoZSBTTURLMjQ0MCBpcyBhIHR3byBwYXJ0IGV2YWx1YXRpb24gYm9hcmQgZm9yIHRoZSBTYW1zdW5nIFMzQzI0NDAKKyAgcHJvY2Vzc29yLiBJdCBpbmNsdWRlcyBzdXBwb3J0IGZvciBMQ0QsIFNtYXJ0TWVkaWEsIEF1ZGlvLCBTRCBhbmQKKyAgMTBNQml0IEV0aGVybmV0LCBhbmQgZXhwYW5zaW9uIGhlYWRlcnMgZm9yIHZhcmlvdXMgc2lnbmFscywgaW5jbHVkaW5nCisgIHRoZSBjYW1lcmEgYW5kIHVudXNlZCBHUElPLgorCisKK0NvbmZpZ3VyYXRpb24KKy0tLS0tLS0tLS0tLS0KKworICBUbyBzZXQgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiwgdXNlIGBtYWtlIHNtZGsyNDQwX2RlZmNvbmZpZ2Agd2hpY2gKKyAgd2lsbCBjb25maWd1cmUgdGhlIGNvbW1vbiBmZWF0dXJlcyBvZiB0aGlzIGJvYXJkLCBvciB1c2UKKyAgYG1ha2UgczNjMjQxMF9jb25maWdgIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgYWxsIHMzYzI0MTAvczNjMjQ0MCBtYWNoaW5lcworCisKK1N1cHBvcnQKKy0tLS0tLS0KKworICBCZW4gRG9va3MnIFNNREsyNDQwIHNpdGUgYXQgaHR0cDovL3d3dy5mbHVmZi5vcmcvYmVuL3NtZGsyNDQwLyB3aGljaAorICBpbmNsdWRlcyBsaW51eCBiYXNlZCBVU0IgZG93bmxvYWQgdG9vbHMuCisKKyAgU29tZSBvZiB0aGUgaDE5NDAgcGF0Y2hlcyB0aGF0IGNhbiBiZSBmb3VuZCBmcm9tIHRoZSBIMTk0MCBwcm9qZWN0CisgIHNpdGUgYXQgaHR0cDovL3d3dy5oYW5kaGVsZHMub3JnL3Byb2plY3RzL2gxOTQwLmh0bWwgY2FuIGFsc28gYmUKKyAgYXBwbGllZCB0byB0aGlzIGJvYXJkLgorCisKK1BlcmlwaGVyYWxzCistLS0tLS0tLS0tLQorCisgIFRoZXJlIGlzIG5vIGN1cnJlbnQgc3VwcG9ydCBmb3IgYW55IG9mIHRoZSBleHRyYSBwZXJpcGhlcmFscyBvbiB0aGUKKyAgYmFzZS1ib2FyZCBpdHNlbGYuCisKKworTVRECistLS0KKworICBUaGUgTkFORCBmbGFzaCBzaG91bGQgYmUgc3VwcG9ydGVkIGJ5IHRoZSBpbiBrZXJuZWwgTVREIE5BTkQgc3VwcG9ydCwKKyAgTk9SIGZsYXNoIHdpbGwgYmUgYWRkZWQgbGF0ZXIuCisKKworTWFpbnRhaW5lcnMKKy0tLS0tLS0tLS0tCisKKyAgVGhpcyBib2FyZCBpcyBiZWluZyBtYWludGFpbmVkIGJ5IEJlbiBEb29rcywgZm9yIG1vcmUgaW5mbywgc2VlCisgIGh0dHA6Ly93d3cuZmx1ZmYub3JnL2Jlbi9zbWRrMjQ0MC8KKworICBNYW55IHRoYW5rcyB0byBEaW1pdHJ5IEFuZHJpYyBvZiBUb21Ub20gZm9yIHRoZSBsb2FuIG9mIHRoZSBTTURLMjQ0MCwKKyAgYW5kIHRvIFNpbXRlYyBFbGVjdHJvbmljcyBmb3IgYWxsb3dpbmcgbWUgdGltZSB0byB3b3JrIG9uIHRoaXMuCisKKworKGMpIDIwMDQgQmVuIERvb2tzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nLVMzQzI0WFgvU3VzcGVuZC50eHQgYi9Eb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nLVMzQzI0WFgvU3VzcGVuZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNhNjNiMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL1NhbXN1bmctUzNDMjRYWC9TdXNwZW5kLnR4dApAQCAtMCwwICsxLDEzNyBAQAorCQkJUzNDMjRYWCBTdXNwZW5kIFN1cHBvcnQKKwkJCT09PT09PT09PT09PT09PT09PT09PT09CisKKworSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0KKworICBUaGUgUzNDMjRYWCBzdXBwb3J0cyBhIGxvdy1wb3dlciBzdXNwZW5kIG1vZGUsIHdoZXJlIHRoZSBTRFJBTSBpcyBrZXB0CisgIGluIFNlbGYtUmVmcmVzaCBtb2RlLCBhbmQgYWxsIGJ1dCB0aGUgZXNzZW50aWFsIHBlcmlwaGVyYWwgYmxvY2tzIGFyZQorICBwb3dlcmVkIGRvd24uIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGlzIHdvcmtzLCBwbGVhc2UgbG9vaworICBhdCB0aGUgcmVsZXZhbnQgQ1BVIGRhdGFzaGVldCBmcm9tIFNhbXN1bmcuCisKKworUmVxdWlyZW1lbnRzCistLS0tLS0tLS0tLS0KKworICAxKSBBIGJvb3Rsb2FkZXIgdGhhdCBjYW4gc3VwcG9ydCB0aGUgbmVjZXNzYXJ5IHJlc3VtZSBvcGVyYXRpb24KKworICAyKSBTdXBwb3J0IGZvciBhdCBsZWFzdCAxIHNvdXJjZSBmb3IgcmVzdW1lCisKKyAgMykgQ09ORklHX1BNIGVuYWJsZWQgaW4gdGhlIGtlcm5lbAorCisgIDQpIEFueSBwZXJpcGhlcmFscyB0aGF0IGFyZSBnb2luZyB0byBiZSBwb3dlcmVkIGRvd24gYXQgdGhlIHNhbWUKKyAgICAgdGltZSByZXF1aXJlIHN1c3BlbmQvcmVzdW1lIHN1cHBvcnQuCisKKworUmVzdW1pbmcKKy0tLS0tLS0tCisKKyAgVGhlIFMzQzI0MTAgdXNlciBtYW51YWwgZGVmaW5lcyB0aGUgcHJvY2VzcyBvZiBzZW5kaW5nIHRoZSBDUFUgdG8KKyAgc2xlZXAgYW5kIGhvdyBpdCByZXN1bWVzLiBUaGUgZGVmYXVsdCBiZWhhdmlvdXIgb2YgdGhlIExpbnV4IGNvZGUKKyAgaXMgdG8gc2V0IHRoZSBHU1RBVFVTMyByZWdpc3RlciB0byB0aGUgcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUKKyAgY29kZSB0byByZXN1bWUgTGludXggb3BlcmF0aW9uLgorCisgIEdTVEFUVVM0IGlzIGN1cnJlbnRseSBsZWZ0IGFsb25lIGJ5IHRoZSBzbGVlcCBjb2RlLCBhbmQgaXMgZnJlZSB0bworICB1c2UgZm9yIGFueSBvdGhlciBwdXJwb3NlcyAoZm9yIGV4YW1wbGUsIHRoZSBFQjI0MTBJVFggdXNlcyB0aGlzIHRvCisgIHNhdmUgbWVtb3J5IGNvbmZpZ3VyYXRpb24gaW4pLgorCisKK01hY2hpbmUgU3VwcG9ydAorLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlIG1hY2hpbmUgc3BlY2lmaWMgZnVuY3Rpb25zIG11c3QgY2FsbCB0aGUgczNjX3BtX2luaXQoKSBmdW5jdGlvbgorICB0byBzYXkgdGhhdCBpdHMgYm9vdGxvYWRlciBpcyBjYXBhYmxlIG9mIHJlc3VtaW5nLiBUaGlzIGNhbiBiZSBhcworICBzaW1wbGUgYXMgYWRkaW5nIHRoZSBmb2xsb3dpbmcgdG8gdGhlIG1hY2hpbmUncyBkZWZpbml0aW9uOgorCisgIElOSVRNQUNISU5FKHMzY19wbV9pbml0KQorCisgIEEgYm9hcmQgY2FuIGRvIGl0cyBvd24gc2V0dXAgYmVmb3JlIGNhbGxpbmcgczNjX3BtX2luaXQsIGlmIGl0CisgIG5lZWRzIHRvIHNldHVwIGFueXRoaW5nIGVsc2UgZm9yIHBvd2VyIG1hbmFnZW1lbnQgc3VwcG9ydC4KKworICBUaGVyZSBpcyBjdXJyZW50bHkgbm8gc3VwcG9ydCBmb3Igb3Zlci1yaWRpbmcgdGhlIGRlZmF1bHQgbWV0aG9kIG9mCisgIHNhdmluZyB0aGUgcmVzdW1lIGFkZHJlc3MsIGlmIHlvdXIgYm9hcmQgcmVxdWlyZXMgaXQsIHRoZW4gY29udGFjdAorICB0aGUgbWFpbnRhaW5lciBhbmQgZGlzY3VzcyB3aGF0IGlzIHJlcXVpcmVkLgorCisgIE5vdGUsIHRoZSBvcmlnaW5hbCBtZXRob2Qgb2YgYWRkaW5nIGFuIGxhdGVfaW5pdGNhbGwoKSBpcyB3cm9uZywKKyAgYW5kIHdpbGwgZW5kIHVwIGluaXRpYWxpc2luZyBhbGwgY29tcGlsZWQgbWFjaGluZXMnIHBtIGluaXQhCisKKyAgVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIGNvZGUgdXNlZCBmb3IgdGVzdGluZyB3YWtldXAgZnJvbQorICBhbiBmYWxsaW5nIGVkZ2Ugb24gSVJRX0VJTlQwOgorCisKK3N0YXRpYyBpcnFyZXR1cm5fdCBidXR0b25faXJxKGludCBpcnEsIHZvaWQgKnB3KQoreworCXJldHVybiBJUlFfSEFORExFRDsKK30KKworc3RhdHVjIHZvaWQgX19pbml0IG1hY2hpbmVfaW5pdCh2b2lkKQoreworCS4uLgorCisJcmVxdWVzdF9pcnEoSVJRX0VJTlQwLCBidXR0b25faXJxLCBJUlFGX1RSSUdHRVJfRkFMTElORywKKwkJICAgImJ1dHRvbi1pcnEtZWludDAiLCBOVUxMKTsKKworCWVuYWJsZV9pcnFfd2FrZShJUlFfRUlOVDApOworCisJczNjX3BtX2luaXQoKTsKK30KKworCitEZWJ1Z2dpbmcKKy0tLS0tLS0tLQorCisgIFRoZXJlIGFyZSBzZXZlcmFsIGltcG9ydGFudCB0aGluZ3MgdG8gcmVtZW1iZXIgd2hlbiB1c2luZyBQTSBzdXNwZW5kOgorCisgIDEpIFRoZSB1YXJ0IGRyaXZlcnMgd2lsbCBkaXNhYmxlIHRoZSBjbG9ja3MgdG8gdGhlIFVBUlQgYmxvY2tzIHdoZW4KKyAgICAgc3VzcGVuZGluZywgd2hpY2ggbWVhbnMgdGhhdCB1c2Ugb2YgcHJpbnRhc2NpaSgpIG9yIHNpbWlsYXIgZGlyZWN0CisgICAgIGFjY2VzcyB0byB0aGUgVUFSVHMgd2lsbCBjYXVzZSB0aGUgZGVidWcgdG8gc3RvcC4KKworICAyKSBXaGlsc3QgdGhlIHBtIGNvZGUgaXRzZWxmIHdpbGwgYXR0ZW1wdCB0byByZS1lbmFibGUgdGhlIFVBUlQgY2xvY2tzLAorICAgICBjYXJlIHNob3VsZCBiZSB0YWtlbiB0aGF0IGFueSBleHRlcm5hbCBjbG9jayBzb3VyY2VzIHRoYXQgdGhlIFVBUlRzCisgICAgIHJlbHkgb24gYXJlIHN0aWxsIGVuYWJsZWQgYXQgdGhhdCBwb2ludC4KKworICAzKSBJZiBhbnkgZGVidWdnaW5nIGlzIHBsYWNlZCBpbiB0aGUgcmVzdW1lIHBhdGgsIHRoZW4gaXQgbXVzdCBoYXZlIHRoZQorICAgICByZWxldmFudCBjbG9ja3MgYW5kIHBlcmlwaGVyYWxzIHNldHVwIGJlZm9yZSB1c2UgKGllLCBib290bG9hZGVyKS4KKworICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IHRyYW5zbWl0IGEgY2hhcmFjdGVyIGZyb20gdGhlIFVBUlQsIHRoZSBiYXVkCisgICAgIHJhdGUgYW5kIHVhcnQgY29udHJvbHMgbXVzdCBiZSBzZXR1cCBiZWZvcmVoYW5kLgorCisKK0NvbmZpZ3VyYXRpb24KKy0tLS0tLS0tLS0tLS0KKworICBUaGUgUzNDMjQxMCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGluIGBTeXN0ZW0gVHlwZWAgZGVmaW5lcyB2YXJpb3VzCisgIGFzcGVjdHMgb2YgaG93IHRoZSBTM0MyNDEwIHN1c3BlbmQgYW5kIHJlc3VtZSBzdXBwb3J0IGlzIGNvbmZpZ3VyZWQKKworICBgUzNDMjQxMCBQTSBTdXNwZW5kIGRlYnVnYAorCisgICAgVGhpcyBvcHRpb24gcHJpbnRzIG1lc3NhZ2VzIHRvIHRoZSBzZXJpYWwgY29uc29sZSBiZWZvcmUgYW5kIGFmdGVyCisgICAgdGhlIGFjdHVhbCBzdXNwZW5kLCBnaXZpbmcgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gd2hhdCBpcworICAgIGhhcHBlbmluZworCisKKyAgYFMzQzI0MTAgUE0gU3VzcGVuZCBNZW1vcnkgQ1JDYAorCisgICAgQWxsb3dzIHRoZSBlbnRpcmUgbWVtb3J5IHRvIGJlIGNoZWNrc3VtbWVkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlCisgICAgc3VzcGVuZCB0byBzZWUgaWYgdGhlcmUgaGFzIGJlZW4gYW55IGNvcnJ1cHRpb24gb2YgdGhlIGNvbnRlbnRzLgorCisgICAgTm90ZSwgdGhlIHRpbWUgdG8gY2FsY3VsYXRlIHRoZSBDUkMgaXMgZGVwZW5kZW50IG9uIHRoZSBDUFUgc3BlZWQKKyAgICBhbmQgdGhlIHNpemUgb2YgbWVtb3J5LiBGb3IgYW4gNjRNYnl0ZSBSQU0gYXJlYSBvbiBhbiAyMDBNSHoKKyAgICBTM0MyNDEwLCB0aGlzIGNhbiB0YWtlIGFwcHJveGltYXRlbHkgNCBzZWNvbmRzIHRvIGNvbXBsZXRlLgorCisgICAgVGhpcyBzdXBwb3J0IHJlcXVpcmVzIHRoZSBDUkMzMiBmdW5jdGlvbiB0byBiZSBlbmFibGVkLgorCisKKyAgYFMzQzI0MTAgUE0gU3VzcGVuZCBDUkMgQ2h1bmtzaXplIChLaUIpYAorCisgICAgRGVmaW5lcyB0aGUgc2l6ZSBvZiBtZW1vcnkgZWFjaCBDUkMgY2h1bmsgY292ZXJzLiBBIHNtYWxsZXIgdmFsdWUKKyAgICB3aWxsIG1lYW4gdGhhdCB0aGUgQ1JDIGRhdGEgYmxvY2sgd2lsbCB0YWtlIG1vcmUgbWVtb3J5LCBidXQgd2lsbAorICAgIGlkZW50aWZ5IGFueSBmYXVsdHMgd2l0aCBiZXR0ZXIgcHJlY2lzaW9uCisKKworRG9jdW1lbnQgQXV0aG9yCistLS0tLS0tLS0tLS0tLS0KKworQmVuIERvb2tzLCBDb3B5cmlnaHQgMjAwNCBTaW10ZWMgRWxlY3Ryb25pY3MKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy1TM0MyNFhYL1VTQi1Ib3N0LnR4dCBiL0RvY3VtZW50YXRpb24vYXJtL1NhbXN1bmctUzNDMjRYWC9VU0ItSG9zdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgyYjFmYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL1NhbXN1bmctUzNDMjRYWC9VU0ItSG9zdC50eHQKQEAgLTAsMCArMSw5MyBAQAorCQkJUzNDMjRYWCBVU0IgSG9zdCBzdXBwb3J0CisJCQk9PT09PT09PT09PT09PT09PT09PT09PT0KKworCisKK0ludHJvZHVjdGlvbgorLS0tLS0tLS0tLS0tCisKKyAgVGhpcyBkb2N1bWVudCBkZXRhaWxzIHRoZSBTM0MyNDEwL1MzQzI0NDAgaW4tYnVpbHQgT0hDSSBVU0IgaG9zdCBzdXBwb3J0LgorCitDb25maWd1cmF0aW9uCistLS0tLS0tLS0tLS0tCisKKyAgRW5hYmxlIGF0IGxlYXN0IHRoZSBmb2xsb3dpbmcga2VybmVsIG9wdGlvbnM6CisKKyAgbWVudWNvbmZpZzoKKworICAgRGV2aWNlIERyaXZlcnMgIC0tLT4KKyAgICAgVVNCIHN1cHBvcnQgIC0tLT4KKyAgICAgICA8Kj4gU3VwcG9ydCBmb3IgSG9zdC1zaWRlIFVTQgorICAgICAgIDwqPiAgIE9IQ0kgSENEIHN1cHBvcnQKKworCisgIC5jb25maWc6CisgICAgQ09ORklHX1VTQgorICAgIENPTkZJR19VU0JfT0hDSV9IQ0QKKworCisgIE9uY2UgdGhlc2Ugb3B0aW9ucyBhcmUgY29uZmlndXJlZCwgdGhlIHN0YW5kYXJkIHNldCBvZiBVU0IgZGV2aWNlCisgIGRyaXZlcnMgY2FuIGJlIGNvbmZpZ3VyZWQgYW5kIHVzZWQuCisKKworQm9hcmQgU3VwcG9ydAorLS0tLS0tLS0tLS0tLQorCisgIFRoZSBkcml2ZXIgYXR0YWNoZXMgdG8gYSBwbGF0Zm9ybSBkZXZpY2UsIHdoaWNoIHdpbGwgbmVlZCB0byBiZQorICBhZGRlZCBieSB0aGUgYm9hcmQgc3BlY2lmaWMgc3VwcG9ydCBmaWxlIGluIGxpbnV4L2FyY2gvYXJtL21hY2gtczNjMjQxMCwKKyAgc3VjaCBhcyBtYWNoLWJhc3QuYyBvciBtYWNoLXNtZGsyNDEwLmMKKworICBUaGUgcGxhdGZvcm0gZGV2aWNlJ3MgcGxhdGZvcm1fZGF0YSBmaWVsZCBpcyBvbmx5IG5lZWRlZCBpZiB0aGUKKyAgYm9hcmQgaW1wbGVtZW50cyBleHRyYSBwb3dlciBjb250cm9sIG9yIG92ZXItY3VycmVudCBtb25pdG9yaW5nLgorCisgIFRoZSBPSENJIGRyaXZlciBkb2VzIG5vdCBlbnN1cmUgdGhlIHN0YXRlIG9mIHRoZSBTM0MyNDEwJ3MgTUlTQ0NUUkwKKyAgcmVnaXN0ZXIsIHNvIGlmIGJvdGggcG9ydHMgYXJlIHRvIGJlIHVzZWQgZm9yIHRoZSBob3N0LCB0aGVuIGl0IGlzCisgIHRoZSBib2FyZCBzdXBwb3J0IGZpbGUncyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCB0aGUgc2Vjb25kCisgIHBvcnQgaXMgY29uZmlndXJlZCB0byBiZSBjb25uZWN0ZWQgdG8gdGhlIE9IQ0kgY29yZS4KKworCitQbGF0Zm9ybSBEYXRhCistLS0tLS0tLS0tLS0tCisKKyAgU2VlIGFyY2gvYXJtL21hY2gtczNjMjQxMC9pbmNsdWRlL21hY2gvdXNiLWNvbnRyb2wuaCBmb3IgdGhlCisgIGRlc2NyaXB0aW9ucyBvZiB0aGUgcGxhdGZvcm0gZGV2aWNlIGRhdGEuIEFuIGltcGxlbWVudGF0aW9uCisgIGNhbiBiZSBmb3VuZCBpbiBsaW51eC9hcmNoL2FybS9tYWNoLXMzYzI0MTAvdXNiLXNpbXRlYy5jIC4KKworICBUaGUgYHN0cnVjdCBzM2MyNDEwX2hjZF9pbmZvYCBjb250YWlucyBhIHBhaXIgb2YgZnVuY3Rpb25zCisgIHRoYXQgZ2V0IGNhbGxlZCB0byBlbmFibGUgb3Zlci1jdXJyZW50IGRldGVjdGlvbiwgYW5kIHRvCisgIGNvbnRyb2wgdGhlIHBvcnQgcG93ZXIgc3RhdHVzLgorCisgIFRoZSBwb3J0cyBhcmUgbnVtYmVyZWQgMCBhbmQgMS4KKworICBwb3dlcl9jb250cm9sOgorCisgICAgQ2FsbGVkIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBwb3dlciBvbiB0aGUgcG9ydC4KKworICBlbmFibGVfb2M6CisKKyAgICBDYWxsZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIG92ZXItY3VycmVudCBtb25pdG9yaW5nLgorICAgIFRoaXMgc2hvdWxkIGNsYWltIG9yIHJlbGVhc2UgdGhlIHJlc291cmNlcyBiZWluZyB1c2VkIHRvCisgICAgY2hlY2sgdGhlIHBvd2VyIGNvbmRpdGlvbiBvbiB0aGUgcG9ydCwgc3VjaCBhcyBhbiBJUlEuCisKKyAgcmVwb3J0X29jOgorCisgICAgVGhlIE9IQ0kgZHJpdmVyIGZpbGxzIHRoaXMgZmllbGQgaW4gZm9yIHRoZSBvdmVyLWN1cnJlbnQgY29kZQorICAgIHRvIGNhbGwgd2hlbiB0aGVyZSBpcyBhIGNoYW5nZSB0byB0aGUgb3Zlci1jdXJyZW50IHN0YXRlIG9uCisgICAgYW4gcG9ydC4gVGhlIHBvcnRzIGFyZ3VtZW50IGlzIGEgYml0bWFzayBvZiAxIGJpdCBwZXIgcG9ydCwKKyAgICB3aXRoIGJpdCBYIGJlaW5nIDEgZm9yIGFuIG92ZXItY3VycmVudCBvbiBwb3J0IFguCisKKyAgICBUaGUgZnVuY3Rpb24gczNjMjQxMF91c2JfcmVwb3J0X29jKCkgaGFzIGJlZW4gcHJvdmlkZWQgdG8KKyAgICBlbnN1cmUgdGhpcyBpcyBjYWxsZWQgY29ycmVjdGx5LgorCisgIHBvcnRbeF06CisKKyAgICBUaGlzIGlzIHN0cnVjdCBkZXNjcmliZXMgZWFjaCBwb3J0LCAwIG9yIDEuIFRoZSBwbGF0Zm9ybSBkcml2ZXIKKyAgICBzaG91bGQgc2V0IHRoZSBmbGFncyBmaWVsZCBvZiBlYWNoIHBvcnQgdG8gUzNDX0hDREZMR19VU0VEIGlmCisgICAgdGhlIHBvcnQgaXMgZW5hYmxlZC4KKworCisKK0RvY3VtZW50IEF1dGhvcgorLS0tLS0tLS0tLS0tLS0tCisKK0JlbiBEb29rcywgQ29weXJpZ2h0IDIwMDUgU2ltdGVjIEVsZWN0cm9uaWNzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nL0Jvb3Rsb2FkZXItaW50ZXJmYWNlLnR4dCBiL0RvY3VtZW50YXRpb24vYXJtL1NhbXN1bmcvQm9vdGxvYWRlci1pbnRlcmZhY2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkNDk0YWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nL0Jvb3Rsb2FkZXItaW50ZXJmYWNlLnR4dApAQCAtMCwwICsxLDY3IEBACisgICAgICBJbnRlcmZhY2UgYmV0d2VlbiBrZXJuZWwgYW5kIGJvb3QgbG9hZGVycyBvbiBFeHlub3MgYm9hcmRzCisgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0F1dGhvcjogS3J6eXN6dG9mIEtvemxvd3NraQorRGF0ZSAgOiA2IEp1bmUgMjAxNQorCitUaGUgZG9jdW1lbnQgdHJpZXMgdG8gZGVzY3JpYmUgY3VycmVudGx5IHVzZWQgaW50ZXJmYWNlIGJldHdlZW4gTGludXgga2VybmVsCithbmQgYm9vdCBsb2FkZXJzIG9uIFNhbXN1bmcgRXh5bm9zIGJhc2VkIGJvYXJkcy4gVGhpcyBpcyBub3QgYSBkZWZpbml0aW9uCitvZiBpbnRlcmZhY2UgYnV0IHJhdGhlciBhIGRlc2NyaXB0aW9uIG9mIGV4aXN0aW5nIHN0YXRlLCBhIHJlZmVyZW5jZQorZm9yIGluZm9ybWF0aW9uIHB1cnBvc2Ugb25seS4KKworSW4gdGhlIGRvY3VtZW50ICJib290IGxvYWRlciIgbWVhbnMgYW55IG9mIGZvbGxvd2luZzogVS1ib290LCBwcm9wcmlldGFyeQorU0JPT1Qgb3IgYW55IG90aGVyIGZpcm13YXJlIGZvciBBUk12NyBhbmQgQVJNdjggaW5pdGlhbGl6aW5nIHRoZSBib2FyZCBiZWZvcmUKK2V4ZWN1dGluZyBrZXJuZWwuCisKKworMS4gTm9uLVNlY3VyZSBtb2RlCisKK0FkZHJlc3M6ICAgICAgc3lzcmFtX25zX2Jhc2VfYWRkcgorT2Zmc2V0ICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdXJwb3NlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorMHgwOCAgICAgICAgICBleHlub3NfY3B1X3Jlc3VtZV9ucywgbWNwbV9lbnRyeV9wb2ludCAgICAgICBTeXN0ZW0gc3VzcGVuZAorMHgwYyAgICAgICAgICAweDAwMDAwYmFkIChNYWdpYyBjb29raWUpICAgICAgICAgICAgICAgICAgICBTeXN0ZW0gc3VzcGVuZAorMHgxYyAgICAgICAgICBleHlub3M0X3NlY29uZGFyeV9zdGFydHVwICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgQ1BVIGJvb3QKKzB4MWMgKyA0KmNwdSAgZXh5bm9zNF9zZWNvbmRhcnlfc3RhcnR1cCAoRXh5bm9zNDQxMikgICAgICAgU2Vjb25kYXJ5IENQVSBib290CisweDIwICAgICAgICAgIDB4ZmNiYTBkMTAgKE1hZ2ljIGNvb2tpZSkgICAgICAgICAgICAgICAgICAgIEFGVFIKKzB4MjQgICAgICAgICAgZXh5bm9zX2NwdV9yZXN1bWVfbnMgICAgICAgICAgICAgICAgICAgICAgICAgQUZUUgorMHgyOCArIDQqY3B1ICAweDggKE1hZ2ljIGNvb2tpZSwgRXh5bm9zMzI1MCkgICAgICAgICAgICAgICBBRlRSCisKKworMi4gU2VjdXJlIG1vZGUKKworQWRkcmVzczogICAgICBzeXNyYW1fYmFzZV9hZGRyCitPZmZzZXQgICAgICAgIFZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1cnBvc2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisweDAwICAgICAgICAgIGV4eW5vczRfc2Vjb25kYXJ5X3N0YXJ0dXAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSBDUFUgYm9vdAorMHgwNCAgICAgICAgICBleHlub3M0X3NlY29uZGFyeV9zdGFydHVwIChFeHlub3M1NDJ4KSAgICAgICBTZWNvbmRhcnkgQ1BVIGJvb3QKKzQqY3B1ICAgICAgICAgZXh5bm9zNF9zZWNvbmRhcnlfc3RhcnR1cCAoRXh5bm9zNDQxMikgICAgICAgU2Vjb25kYXJ5IENQVSBib290CisweDIwICAgICAgICAgIGV4eW5vc19jcHVfcmVzdW1lIChFeHlub3M0MjEwIHIxLjApICAgICAgICAgIEFGVFIKKzB4MjQgICAgICAgICAgMHhmY2JhMGQxMCAoTWFnaWMgY29va2llLCBFeHlub3M0MjEwIHIxLjApICAgQUZUUgorCitBZGRyZXNzOiAgICAgIHBtdV9iYXNlX2FkZHIKK09mZnNldCAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVycG9zZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzB4MDgwMCAgICAgICAgZXh5bm9zX2NwdV9yZXN1bWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUZUUiwgc3VzcGVuZAorMHgwODAwICAgICAgICBtY3BtX2VudHJ5X3BvaW50IChFeHlub3M1NDJ4IHdpdGggTUNQTSkgICAgICBBRlRSLCBzdXNwZW5kCisweDA4MDQgICAgICAgIDB4ZmNiYTBkMTAgKE1hZ2ljIGNvb2tpZSkgICAgICAgICAgICAgICAgICAgIEFGVFIKKzB4MDgwNCAgICAgICAgMHgwMDAwMGJhZCAoTWFnaWMgY29va2llKSAgICAgICAgICAgICAgICAgICAgU3lzdGVtIHN1c3BlbmQKKzB4MDgxNCAgICAgICAgZXh5bm9zNF9zZWNvbmRhcnlfc3RhcnR1cCAoRXh5bm9zNDIxMCByMS4xKSAgU2Vjb25kYXJ5IENQVSBib290CisweDA4MTggICAgICAgIDB4ZmNiYTBkMTAgKE1hZ2ljIGNvb2tpZSwgRXh5bm9zNDIxMCByMS4xKSAgIEFGVFIKKzB4MDgxQyAgICAgICAgZXh5bm9zX2NwdV9yZXN1bWUgKEV4eW5vczQyMTAgcjEuMSkgICAgICAgICAgQUZUUgorCisKKzMuIE90aGVyIChyZWdhcmRsZXNzIG9mIHNlY3VyZS9ub24tc2VjdXJlIG1vZGUpCisKK0FkZHJlc3M6ICAgICAgcG11X2Jhc2VfYWRkcgorT2Zmc2V0ICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1cnBvc2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisweDA5MDggICAgICAgIE5vbi16ZXJvICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IENQVSBib290IHVwIGluZGljYXRvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIEV4eW5vczMyNTAgYW5kIEV4eW5vczU0MngKKworCis0LiBHbG9zc2FyeQorCitBRlRSIC0gQVJNIE9mZiBUb3AgUnVubmluZywgYSBsb3cgcG93ZXIgbW9kZSwgQ29ydGV4IGNvcmVzIGFuZCBtYW55IG90aGVyCittb2R1bGVzIGFyZSBwb3dlciBnYXRlZCwgZXhjZXB0IHRoZSBUT1AgbW9kdWxlcworTUNQTSAtIE11bHRpLUNsdXN0ZXIgUG93ZXIgTWFuYWdlbWVudApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy9HUElPLnR4dCBiL0RvY3VtZW50YXRpb24vYXJtL1NhbXN1bmcvR1BJTy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk1YWRmZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL1NhbXN1bmcvR1BJTy50eHQKQEAgLTAsMCArMSw0MCBAQAorCQlTYW1zdW5nIEdQSU8gaW1wbGVtZW50YXRpb24KKwkJPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ludHJvZHVjdGlvbgorLS0tLS0tLS0tLS0tCisKK1RoaXMgb3V0bGluZXMgdGhlIFNhbXN1bmcgR1BJTyBpbXBsZW1lbnRhdGlvbiBhbmQgdGhlIGFyY2hpdGVjdHVyZQorc3BlY2lmaWMgY2FsbHMgcHJvdmlkZWQgYWxvbmdzaWRlIHRoZSBkcml2ZXJzL2dwaW8gY29yZS4KKworCitTM0MyNFhYIChMZWdhY3kpCistLS0tLS0tLS0tLS0tLS0tCisKK1NlZSBEb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nLVMzQzI0WFgvR1BJTy50eHQgZm9yIG1vcmUgaW5mb3JtYXRpb24KK2Fib3V0IHRoZXNlIGRldmljZXMuIFRoZWlyIGltcGxlbWVudGF0aW9uIGhhcyBiZWVuIGJyb3VnaHQgaW50byBsaW5lCit3aXRoIHRoZSBjb3JlIHNhbXN1bmcgaW1wbGVtZW50YXRpb24gZGVzY3JpYmVkIGluIHRoaXMgZG9jdW1lbnQuCisKKworR1BJT0xJQiBpbnRlZ3JhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZ3BpbyBpbXBsZW1lbnRhdGlvbiB1c2VzIGdwaW9saWIgYXMgbXVjaCBhcyBwb3NzaWJsZSwgb25seSBwcm92aWRpbmcKK3NwZWNpZmljIGNhbGxzIGZvciB0aGUgaXRlbXMgdGhhdCByZXF1aXJlIFNhbXN1bmcgc3BlY2lmaWMgaGFuZGxpbmcsIHN1Y2gKK2FzIHBpbiBzcGVjaWFsLWZ1bmN0aW9uIG9yIHB1bGwgcmVzaXN0b3IgY29udHJvbC4KKworR1BJTyBudW1iZXJpbmcgaXMgc3luY2hyb25pc2VkIGJldHdlZW4gdGhlIFNhbXN1bmcgYW5kIGdwaW9saWIgc3lzdGVtLgorCisKK1BJTiBjb25maWd1cmF0aW9uCistLS0tLS0tLS0tLS0tLS0tLQorCitQaW4gY29uZmlndXJhdGlvbiBpcyBzcGVjaWZpYyB0byB0aGUgU2Ftc3VuZyBhcmNoaXRlY3R1cmUsIHdpdGggZWFjaCBTb0MKK3JlZ2lzdGVyaW5nIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gZm9yIHRoZSBjb3JlIGdwaW8gY29uZmlndXJhdGlvbgoraW1wbGVtZW50YXRpb24gdG8gY29uZmlndXJlIHBpbnMgYXMgbmVjZXNzYXJ5LgorCitUaGUgczNjX2dwaW9fY2ZncGluKCkgYW5kIHMzY19ncGlvX3NldHB1bGwoKSBwcm92aWRlIHRoZSBtZWFucyBmb3IgYQorZHJpdmVyIG9yIG1hY2hpbmUgdG8gY2hhbmdlIGdwaW8gY29uZmlndXJhdGlvbi4KKworU2VlIGFyY2gvYXJtL3BsYXQtc2Ftc3VuZy9pbmNsdWRlL3BsYXQvZ3Bpby1jZmcuaCBmb3IgbW9yZSBpbmZvcm1hdGlvbgorb24gdGhlc2UgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy9PdmVydmlldy50eHQgYi9Eb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nL092ZXJ2aWV3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjczMDliCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy9PdmVydmlldy50eHQKQEAgLTAsMCArMSw4NiBAQAorCQlTYW1zdW5nIEFSTSBMaW51eCBPdmVydmlldworCQk9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLQorCisgIFRoZSBTYW1zdW5nIHJhbmdlIG9mIEFSTSBTb0NzIHNwYW5zIG1hbnkgc2ltaWxhciBkZXZpY2VzLCBmcm9tIHRoZSBpbml0aWFsCisgIEFSTTkgdGhyb3VnaCB0byB0aGUgbmV3ZXN0IEFSTSBjb3Jlcy4gVGhpcyBkb2N1bWVudCBzaG93cyBhbiBvdmVydmlldyBvZgorICB0aGUgY3VycmVudCBrZXJuZWwgc3VwcG9ydCwgaG93IHRvIHVzZSBpdCBhbmQgd2hlcmUgdG8gZmluZCB0aGUgY29kZQorICB0aGF0IHN1cHBvcnRzIHRoaXMuCisKKyAgVGhlIGN1cnJlbnRseSBzdXBwb3J0ZWQgU29DcyBhcmU6CisKKyAgLSBTM0MyNFhYOiBTZWUgRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy1TM0MyNFhYL092ZXJ2aWV3LnR4dCBmb3IgZnVsbCBsaXN0CisgIC0gUzNDNjRYWDogUzNDNjQwMCBhbmQgUzNDNjQxMAorICAtIFM1UEMxMTAgLyBTNVBWMjEwCisKKworUzNDMjRYWCBTeXN0ZW1zCistLS0tLS0tLS0tLS0tLS0KKworICBUaGVyZSBpcyBzdGlsbCBkb2N1bWVudGF0aW9uIGluIERvY3VtbmV0YXRpb24vYXJtL1NhbXN1bmctUzNDMjRYWC8gd2hpY2gKKyAgZGVhbHMgd2l0aCB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBkcml2ZXJzIHNwZWNpZmljIHRvIHRoZXNlIGRldmljZXMuCisKKyAgU2VlIERvY3VtZW50YXRpb24vYXJtL1NhbXN1bmctUzNDMjRYWC9PdmVydmlldy50eHQgZm9yIG1vcmUgaW5mb3JtYXRpb24KKyAgb24gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kIHNwZWNpZmljIHN1cHBvcnQuCisKKworQ29uZmlndXJhdGlvbgorLS0tLS0tLS0tLS0tLQorCisgIEEgbnVtYmVyIG9mIGNvbmZpZ3VyYXRpb25zIGFyZSBzdXBwbGllZCwgYXMgdGhlcmUgaXMgbm8gY3VycmVudCB3YXkgb2YKKyAgdW5pZnlpbmcgYWxsIHRoZSBTb0NzIGludG8gb25lIGtlcm5lbC4KKworICBzNXBjMTEwX2RlZmNvbmZpZyAtIFM1UEMxMTAgc3BlY2lmaWMgZGVmYXVsdCBjb25maWd1cmF0aW9uCisgIHM1cHYyMTBfZGVmY29uZmlnIC0gUzVQVjIxMCBzcGVjaWZpYyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24KKworCitMYXlvdXQKKy0tLS0tLQorCisgIFRoZSBkaXJlY3RvcnkgbGF5b3V0IGlzIGN1cnJlbnRseSBiZWluZyByZXN0cnVjdHVyZWQsIGFuZCBjb25zaXN0cyBvZgorICBzZXZlcmFsIHBsYXRmb3JtIGRpcmVjdG9yaWVzIGFuZCB0aGVuIHRoZSBtYWNoaW5lIHNwZWNpZmljIGRpcmVjdG9yaWVzCisgIG9mIHRoZSBDUFVzIGJlaW5nIGJ1aWx0IGZvci4KKworICBwbGF0LXNhbXN1bmcgcHJvdmlkZXMgdGhlIGJhc2UgZm9yIGFsbCB0aGUgaW1wbGVtZW50YXRpb25zLCBhbmQgaXMgdGhlCisgIGxhc3QgaW4gdGhlIGxpbmUgb2YgaW5jbHVkZSBkaXJlY3RvcmllcyB0aGF0IGFyZSBwcm9jZXNzZWQgZm9yIHRoZSBidWlsZAorICBzcGVjaWZpYyBpbmZvcm1hdGlvbi4gSXQgY29udGFpbnMgdGhlIGJhc2UgY2xvY2ssIEdQSU8gYW5kIGRldmljZSBkZWZpbml0aW9ucworICB0byBnZXQgdGhlIHN5c3RlbSBydW5uaW5nLgorCisgIHBsYXQtczNjMjR4eCBpcyBmb3IgczNjMjR4eCBzcGVjaWZpYyBidWlsZHMsIHNlZSB0aGUgUzNDMjRYWCBkb2NzLgorCisgIHBsYXQtczVwIGlzIGZvciBzNXAgc3BlY2lmaWMgYnVpbGRzLCBhbmQgY29udGFpbnMgY29tbW9uIHN1cHBvcnQgZm9yIHRoZQorICBTNVAgc3BlY2lmaWMgc3lzdGVtcy4gTm90IGFsbCBTNVBzIHVzZSBhbGwgdGhlIGZlYXR1cmVzIGluIHRoaXMgZGlyZWN0b3J5CisgIGR1ZSB0byBkaWZmZXJlbmNlcyBpbiB0aGUgaGFyZHdhcmUuCisKKworTGF5b3V0IGNoYW5nZXMKKy0tLS0tLS0tLS0tLS0tCisKKyAgVGhlIG9sZCBwbGF0LXMzYyBhbmQgcGxhdC1zNXBjMXh4IGRpcmVjdG9yaWVzIGhhdmUgYmVlbiByZW1vdmVkLCB3aXRoCisgIHN1cHBvcnQgbW92ZWQgdG8gZWl0aGVyIHBsYXQtc2Ftc3VuZyBvciBwbGF0LXM1cCBhcyBuZWNlc3NhcnkuIFRoZXNlIG1vdmVzCisgIHdoZXJlIHRvIHNpbXBsaWZ5IHRoZSBpbmNsdWRlIGFuZCBkZXBlbmRlbmN5IGlzc3VlcyBpbnZvbHZlZCB3aXRoIGhhdmluZworICBzbyBtYW55IGRpZmZlcmVudCBwbGF0Zm9ybSBkaXJlY3Rvcmllcy4KKworCitQb3J0IENvbnRyaWJ1dG9ycworLS0tLS0tLS0tLS0tLS0tLS0KKworICBCZW4gRG9va3MgKEJKRCkKKyAgVmluY2VudCBTYW5kZXJzCisgIEhlcmJlcnQgUG90emwKKyAgQXJuYXVkIFBhdGFyZCAoUlRQKQorICBSb2MgV3UKKyAgS2xhdXMgRmV0c2NoZXIKKyAgRGltaXRyeSBBbmRyaWMKKyAgU2hhbm5vbiBIb2xsYW5kCisgIEd1aWxsYXVtZSBHb3VyYXQgKE5leFZpc2lvbikKKyAgQ2hyaXN0ZXIgV2VpbmlnZWwgKHdpbmdlbCkgKEFjZXIgTjMwKQorICBMdWNhcyBDb3JyZWlhIFZpbGxhIFJlYWwgKFMzQzI0MDAgcG9ydCkKKworCitEb2N1bWVudCBBdXRob3IKKy0tLS0tLS0tLS0tLS0tLQorCitDb3B5cmlnaHQgMjAwOS0yMDEwIEJlbiBEb29rcyA8YmVuLWxpbnV4QGZsdWZmLm9yZz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJtL1NhbXN1bmcvY2xrc3JjLWNoYW5nZS1yZWdpc3RlcnMuYXdrIGIvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy9jbGtzcmMtY2hhbmdlLXJlZ2lzdGVycy5hd2sKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDkxNzRmYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL1NhbXN1bmcvY2xrc3JjLWNoYW5nZS1yZWdpc3RlcnMuYXdrCkBAIC0wLDAgKzEsMTY2IEBACisjIS91c3IvYmluL2F3ayAtZgorIworIyBDb3B5cmlnaHQgMjAxMCBCZW4gRG9va3MgPGJlbi1saW51eEBmbHVmZi5vcmc+CisjCisjIFJlbGVhc2VkIHVuZGVyIEdQTHYyCisKKyMgZXhhbXBsZSB1c2FnZQorIyAuL2Nsa3NyYy1jaGFuZ2UtcmVnaXN0ZXJzLmF3ayBhcmNoL2FybS9wbGF0LXM1cGMxeHgvaW5jbHVkZS9wbGF0L3JlZ3MtY2xvY2suaCA8IHNyYyA+IGRzdAorCitmdW5jdGlvbiBleHRyYWN0X3ZhbHVlKHMpCit7CisgICAgZXFhdCA9IGluZGV4KHMsICI9IikKKyAgICBjb21hdCA9IGluZGV4KHMsICIsIikKKyAgICByZXR1cm4gc3Vic3RyKHMsIGVxYXQrMiwgKGNvbWF0LWVxYXQpLTIpCit9CisKK2Z1bmN0aW9uIHJlbW92ZV9icmFja2V0cyhiKQoreworICAgIHJldHVybiBzdWJzdHIoYiwgMiwgbGVuZ3RoKGIpLTIpCit9CisKK2Z1bmN0aW9uIHNwbGl0ZGVmaW5lKGwsIHApCit7CisgICAgciA9IHNwbGl0KGwsIHRwKQorCisgICAgcFswXSA9IHRwWzJdCisgICAgcFsxXSA9IHJlbW92ZV9icmFja2V0cyh0cFszXSkKK30KKworZnVuY3Rpb24gZmluZF9sZW5ndGgoZikKK3sKKyAgICBpZiAoMCkKKwlwcmludGYgImZpbmRfbGVuZ3RoICIgZiAiXG4iID4gIi9kZXYvc3RkZXJyIgorCisgICAgaWYgKGYgfiAvMHgxLykKKwlyZXR1cm4gMQorICAgIGVsc2UgaWYgKGYgfiAvMHgzLykKKwlyZXR1cm4gMgorICAgIGVsc2UgaWYgKGYgfiAvMHg3LykKKwlyZXR1cm4gMworICAgIGVsc2UgaWYgKGYgfiAvMHhmLykKKwlyZXR1cm4gNAorCisgICAgcHJpbnRmICJ1bmtub3duIGxlZ250aCAiIGYgIlxuIiA+ICIvZGV2L3N0ZGVyciIKKyAgICBleGl0Cit9CisKK2Z1bmN0aW9uIGZpbmRfc2hpZnQocykKK3sKKyAgICBpZCA9IGluZGV4KHMsICI8IikKKyAgICBpZiAoaWQgPD0gMCkgeworCXByaW50ZiAiY2Fubm90IGZpbmQgc2hpZnQgIiBzICJcbiIgPiAiL2Rldi9zdGRlcnIiCisJZXhpdAorICAgIH0KKworICAgIHJldHVybiBzdWJzdHIocywgaWQrMikKK30KKworCitCRUdJTiB7CisgICAgaWYgKEFSR0MgPCAyKSB7CisJcHJpbnQgInRvbyBmZXcgYXJndW1lbnRzIiA+ICIvZGV2L3N0ZGVyciIKKwlleGl0CisgICAgfQorCisjIHJlYWQgdGhlIGhlYWRlciBmaWxlIGFuZCBmaW5kIHRoZSBtYXNrIHZhbHVlcyB0aGF0IHdlIHdpbGwgbmVlZAorIyB0byByZXBsYWNlIGFuZCBjcmVhdGUgYW4gYXNzb2NpYXRpdmUgYXJyYXkgb2YgdmFsdWVzCisKKyAgICB3aGlsZSAoZ2V0bGluZSBsaW5lIDwgQVJHVlsxXSA+IDApIHsKKwlpZiAobGluZSB+IC9cI2RlZmluZS4qX01BU0svICYmCisJICAgICEobGluZSB+IC9VU0JfU0lHX01BU0svKSkgeworCSAgICBzcGxpdGRlZmluZShsaW5lLCBmaWVsZHMpCisJICAgIG5hbWUgPSBmaWVsZHNbMF0KKwkgICAgaWYgKDApCisJCXByaW50ZiAiTUFTSyAiIGxpbmUgIlxuIiA+ICIvZGV2L3N0ZGVyciIKKwkgICAgZG1hc2tbbmFtZSwwXSA9IGZpbmRfbGVuZ3RoKGZpZWxkc1sxXSkKKwkgICAgZG1hc2tbbmFtZSwxXSA9IGZpbmRfc2hpZnQoZmllbGRzWzFdKQorCSAgICBpZiAoMCkKKwkJcHJpbnRmICI9PiAnIiBuYW1lICInIExFTkdUSD0iIGRtYXNrW25hbWUsMF0gIiBTSElGVD0iIGRtYXNrW25hbWUsMV0gIlxuIiA+ICIvZGV2L3N0ZGVyciIKKwl9IGVsc2UgeworCX0KKyAgICB9CisKKyAgICBkZWxldGUgQVJHVlsxXQorfQorCisvY2xrc3JjX2Nsay4qPS4qey8geworICAgIHNoaWZ0PSIiCisgICAgbWFzaz0iIgorICAgIGRpdnNoaWZ0PSIiCisgICAgcmVnX2Rpdj0iIgorICAgIHJlZ19zcmM9IiIKKyAgICBpbmRlbnQ9MQorCisgICAgcHJpbnQgJDAKKworICAgIGZvcig7IGluZGVudCA+PSAxOykgeworCWlmICgoZ2V0bGluZSBsaW5lKSA8PSAwKSB7CisJICAgIHByaW50ZiAidW5leHBlY3RlZCBlbmQgb2YgZmlsZSIgPiAiL2Rldi9zdGRlcnIiCisJICAgIGV4aXQgMTsKKwl9CisKKwlpZiAobGluZSB+IC9cLnNoaWZ0LykgeworCSAgICBzaGlmdCA9IGV4dHJhY3RfdmFsdWUobGluZSkKKwl9IGVsc2UgaWYgKGxpbmUgfiAvXC5tYXNrLykgeworCSAgICBtYXNrID0gZXh0cmFjdF92YWx1ZShsaW5lKQorCX0gZWxzZSBpZiAobGluZSB+IC9cLnJlZ19kaXZpZGVyLykgeworCSAgICByZWdfZGl2ID0gZXh0cmFjdF92YWx1ZShsaW5lKQorCX0gZWxzZSBpZiAobGluZSB+IC9cLnJlZ19zb3VyY2UvKSB7CisJICAgIHJlZ19zcmMgPSBleHRyYWN0X3ZhbHVlKGxpbmUpCisJfSBlbHNlIGlmIChsaW5lIH4gL1wuZGl2aWRlcl9zaGlmdC8pIHsKKwkgICAgZGl2c2hpZnQgPSBleHRyYWN0X3ZhbHVlKGxpbmUpCisJfSBlbHNlIGlmIChsaW5lIH4gL3svKSB7CisJCWluZGVudCsrCisJCXByaW50IGxpbmUKKwkgICAgfSBlbHNlIGlmIChsaW5lIH4gL30vKSB7CisJICAgIGluZGVudC0tCisKKwkgICAgaWYgKGluZGVudCA9PSAwKSB7CisJCWlmICgwKSB7CisJCSAgICBwcmludGYgInNoaWZ0ICciIHNoaWZ0ICAgIicgPSciIGRtYXNrW3NoaWZ0LDBdICInXG4iID4gIi9kZXYvc3RkZXJyIgorCQkgICAgcHJpbnRmICJtYXNrICAnIiBtYXNrICAgICInXG4iID4gIi9kZXYvc3RkZXJyIgorCQkgICAgcHJpbnRmICJkc2hmdCAnIiBkaXZzaGlmdCAiJ1xuIiA+ICIvZGV2L3N0ZGVyciIKKwkJICAgIHByaW50ZiAicmRpdiAgJyIgcmVnX2RpdiAiJ1xuIiA+ICIvZGV2L3N0ZGVyciIKKwkJICAgIHByaW50ZiAicnNyYyAgJyIgcmVnX3NyYyAiJ1xuIiA+ICIvZGV2L3N0ZGVyciIKKwkJfQorCisJCWdlbmVyYXRlZCA9IG1hc2sKKwkJc3ViKHJlZ19zcmMsIHJlZ19kaXYsIGdlbmVyYXRlZCkKKworCQlpZiAoMCkgeworCQkgICAgcHJpbnRmICIvKiByc3JjICIgcmVnX3NyYyAiICovXG4iCisJCSAgICBwcmludGYgIi8qIHJkaXYgIiByZWdfZGl2ICIgKi9cbiIKKwkJICAgIHByaW50ZiAiLyogc2hpZnQgIiBzaGlmdCAiICovXG4iCisJCSAgICBwcmludGYgIi8qIG1hc2sgIiBtYXNrICIgKi9cbiIKKwkJICAgIHByaW50ZiAiLyogZ2VuZXJhdGVkICIgZ2VuZXJhdGVkICIgKi9cbiIKKwkJfQorCisJCWlmIChyZWdfZGl2ICE9ICIiKSB7CisJCSAgICBwcmludGYgIlx0LnJlZ19kaXYgPSB7ICIKKwkJICAgIHByaW50ZiAiLnJlZyA9ICIgcmVnX2RpdiAiLCAiCisJCSAgICBwcmludGYgIi5zaGlmdCA9ICIgZG1hc2tbZ2VuZXJhdGVkLDFdICIsICIKKwkJICAgIHByaW50ZiAiLnNpemUgPSAiIGRtYXNrW2dlbmVyYXRlZCwwXSAiLCAiCisJCSAgICBwcmludGYgIn0sXG4iCisJCX0KKworCQlwcmludGYgIlx0LnJlZ19zcmMgPSB7ICIKKwkJcHJpbnRmICIucmVnID0gIiByZWdfc3JjICIsICIKKwkJcHJpbnRmICIuc2hpZnQgPSAiIGRtYXNrW21hc2ssMV0gIiwgIgorCQlwcmludGYgIi5zaXplID0gIiBkbWFza1ttYXNrLDBdICIsICIKKworCQlwcmludGYgIn0sXG4iCisKKwkgICAgfQorCisJICAgIHByaW50IGxpbmUKKwl9IGVsc2UgeworCSAgICBwcmludCBsaW5lCisJfQorCisJaWYgKDApCisJICAgIHByaW50ZiBpbmRlbnQgIjoiIGxpbmUgIlxuIiA+ICIvZGV2L3N0ZGVyciIKKyAgICB9Cit9CisKKy8vICYmICEgL2Nsa3NyY19jbGsuKj0uKnsvIHsgcHJpbnQgJDAgfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vU2V0dXAgYi9Eb2N1bWVudGF0aW9uL2FybS9TZXR1cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2IxZTY0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vU2V0dXAKQEAgLTAsMCArMSwxMjkgQEAKK0tlcm5lbCBpbml0aWFsaXNhdGlvbiBwYXJhbWV0ZXJzIG9uIEFSTSBMaW51eAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBmb2xsb3dpbmcgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBrZXJuZWwgaW5pdGlhbGlzYXRpb24gcGFyYW1ldGVyCitzdHJ1Y3R1cmUsIG90aGVyd2lzZSBrbm93biBhcyAnc3RydWN0IHBhcmFtX3N0cnVjdCcgd2hpY2ggaXMgdXNlZAorZm9yIG1vc3QgQVJNIExpbnV4IGFyY2hpdGVjdHVyZXMuCisKK1RoaXMgc3RydWN0dXJlIGlzIHVzZWQgdG8gcGFzcyBpbml0aWFsaXNhdGlvbiBwYXJhbWV0ZXJzIGZyb20gdGhlCitrZXJuZWwgbG9hZGVyIHRvIHRoZSBMaW51eCBrZXJuZWwgcHJvcGVyLCBhbmQgbWF5IGJlIHNob3J0IGxpdmVkCit0aHJvdWdoIHRoZSBrZXJuZWwgaW5pdGlhbGlzYXRpb24gcHJvY2Vzcy4gIEFzIGEgZ2VuZXJhbCBydWxlLCBpdAorc2hvdWxkIG5vdCBiZSByZWZlcmVuY2VkIG91dHNpZGUgb2YgYXJjaC9hcm0va2VybmVsL3NldHVwLmM6c2V0dXBfYXJjaCgpLgorCitUaGVyZSBhcmUgYSBsb3Qgb2YgcGFyYW1ldGVycyBsaXN0ZWQgaW4gdGhlcmUsIGFuZCB0aGV5IGFyZSBkZXNjcmliZWQKK2JlbG93OgorCisgcGFnZV9zaXplCisKKyAgIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgc2V0IHRvIHRoZSBwYWdlIHNpemUgb2YgdGhlIG1hY2hpbmUsIGFuZAorICAgd2lsbCBiZSBjaGVja2VkIGJ5IHRoZSBrZXJuZWwuCisKKyBucl9wYWdlcworCisgICBUaGlzIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgcGFnZXMgb2YgbWVtb3J5IGluIHRoZSBzeXN0ZW0uICBJZgorICAgdGhlIG1lbW9yeSBpcyBiYW5rZWQsIHRoZW4gdGhpcyBzaG91bGQgY29udGFpbiB0aGUgdG90YWwgbnVtYmVyCisgICBvZiBwYWdlcyBpbiB0aGUgc3lzdGVtLgorCisgICBJZiB0aGUgc3lzdGVtIGNvbnRhaW5zIHNlcGFyYXRlIFZSQU0sIHRoaXMgdmFsdWUgc2hvdWxkIG5vdAorICAgaW5jbHVkZSB0aGlzIGluZm9ybWF0aW9uLgorCisgcmFtZGlza19zaXplCisKKyAgIFRoaXMgaXMgbm93IG9ic29sZXRlLCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLgorCisgZmxhZ3MKKworICAgVmFyaW91cyBrZXJuZWwgZmxhZ3MsIGluY2x1ZGluZzoKKyAgICBiaXQgMCAtIDEgPSBtb3VudCByb290IHJlYWQgb25seQorICAgIGJpdCAxIC0gdW51c2VkCisgICAgYml0IDIgLSAwID0gbG9hZCByYW1kaXNrCisgICAgYml0IDMgLSAwID0gcHJvbXB0IGZvciByYW1kaXNrCisKKyByb290ZGV2CisKKyAgIG1ham9yL21pbm9yIG51bWJlciBwYWlyIG9mIGRldmljZSB0byBtb3VudCBhcyB0aGUgcm9vdCBmaWxlc3lzdGVtLgorCisgdmlkZW9fbnVtX2NvbHMKKyB2aWRlb19udW1fcm93cworCisgICBUaGVzZSB0d28gdG9nZXRoZXIgZGVzY3JpYmUgdGhlIGNoYXJhY3RlciBzaXplIG9mIHRoZSBkdW1teSBjb25zb2xlLAorICAgb3IgVkdBIGNvbnNvbGUgY2hhcmFjdGVyIHNpemUuICBUaGV5IHNob3VsZCBub3QgYmUgdXNlZCBmb3IgYW55IG90aGVyCisgICBwdXJwb3NlLgorCisgICBJdCdzIGdlbmVyYWxseSBhIGdvb2QgaWRlYSB0byBzZXQgdGhlc2UgdG8gYmUgZWl0aGVyIHN0YW5kYXJkIFZHQSwgb3IKKyAgIHRoZSBlcXVpdmFsZW50IGNoYXJhY3RlciBzaXplIG9mIHlvdXIgZmJjb24gZGlzcGxheS4gIFRoaXMgdGhlbiBhbGxvd3MKKyAgIGFsbCB0aGUgYm9vdHVwIG1lc3NhZ2VzIHRvIGJlIGRpc3BsYXllZCBjb3JyZWN0bHkuCisKKyB2aWRlb194CisgdmlkZW9feQorCisgICBUaGlzIGRlc2NyaWJlcyB0aGUgY2hhcmFjdGVyIHBvc2l0aW9uIG9mIGN1cnNvciBvbiBWR0EgY29uc29sZSwgYW5kCisgICBpcyBvdGhlcndpc2UgdW51c2VkLiAoc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBvdGhlciBjb25zb2xlIHR5cGVzLCBhbmQKKyAgIHNob3VsZCBub3QgYmUgdXNlZCBmb3Igb3RoZXIgcHVycG9zZXMpLgorCisgbWVtY19jb250cm9sX3JlZworCisgICBNRU1DIGNoaXAgY29udHJvbCByZWdpc3RlciBmb3IgQWNvcm4gQXJjaGltZWRlcyBhbmQgQWNvcm4gQTUwMDAKKyAgIGJhc2VkIG1hY2hpbmVzLiAgTWF5IGJlIHVzZWQgZGlmZmVyZW50bHkgYnkgZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMuCisKKyBzb3VuZGRlZmF1bHQKKworICAgRGVmYXVsdCBzb3VuZCBzZXR0aW5nIG9uIEFjb3JuIG1hY2hpbmVzLiAgTWF5IGJlIHVzZWQgZGlmZmVyZW50bHkgYnkKKyAgIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzLgorCisgYWRmc2RyaXZlcworCisgICBOdW1iZXIgb2YgQURGUy9NRk0gZGlza3MuICBNYXkgYmUgdXNlZCBkaWZmZXJlbnRseSBieSBkaWZmZXJlbnQKKyAgIGFyY2hpdGVjdHVyZXMuCisKKyBieXRlc19wZXJfY2hhcl9oCisgYnl0ZXNfcGVyX2NoYXJfdgorCisgICBUaGVzZSBhcmUgbm93IG9ic29sZXRlLCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLgorCisgcGFnZXNfaW5fYmFua1s0XQorCisgICBOdW1iZXIgb2YgcGFnZXMgaW4gZWFjaCBiYW5rIG9mIHRoZSBzeXN0ZW1zIG1lbW9yeSAodXNlZCBmb3IgUmlzY1BDKS4KKyAgIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBvbiBzeXN0ZW1zIHdoZXJlIHRoZSBwaHlzaWNhbCBtZW1vcnkKKyAgIGlzIG5vbi1jb250aWd1b3VzIGZyb20gdGhlIHByb2Nlc3NvcnMgcG9pbnQgb2Ygdmlldy4KKworIHBhZ2VzX2luX3ZyYW0KKworICAgTnVtYmVyIG9mIHBhZ2VzIGluIFZSQU0gKHVzZWQgb24gQWNvcm4gUmlzY1BDKS4gIFRoaXMgdmFsdWUgbWF5IGFsc28KKyAgIGJlIHVzZWQgYnkgbG9hZGVycyBpZiB0aGUgc2l6ZSBvZiB0aGUgdmlkZW8gUkFNIGNhbid0IGJlIG9idGFpbmVkCisgICBmcm9tIHRoZSBoYXJkd2FyZS4KKworIGluaXRyZF9zdGFydAorIGluaXRyZF9zaXplCisKKyAgIFRoaXMgZGVzY3JpYmVzIHRoZSBrZXJuZWwgdmlydHVhbCBzdGFydCBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZQorICAgaW5pdGlhbCByYW1kaXNrLgorCisgcmRfc3RhcnQKKworICAgU3RhcnQgYWRkcmVzcyBpbiBzZWN0b3JzIG9mIHRoZSByYW1kaXNrIGltYWdlIG9uIGEgZmxvcHB5IGRpc2suCisKKyBzeXN0ZW1fcmV2CisKKyAgIHN5c3RlbSByZXZpc2lvbiBudW1iZXIuCisKKyBzeXN0ZW1fc2VyaWFsX2xvdworIHN5c3RlbV9zZXJpYWxfaGlnaAorCisgICBzeXN0ZW0gNjQtYml0IHNlcmlhbCBudW1iZXIKKworIG1lbV9mY2xrXzIxMjg1CisKKyAgIFRoZSBzcGVlZCBvZiB0aGUgZXh0ZXJuYWwgb3NjaWxsYXRvciB0byB0aGUgMjEyODUgKGZvb3RicmlkZ2UpLAorICAgd2hpY2ggY29udHJvbCdzIHRoZSBzcGVlZCBvZiB0aGUgbWVtb3J5IGJ1cywgdGltZXIgJiBzZXJpYWwgcG9ydC4KKyAgIERlcGVuZGluZyB1cG9uIHRoZSBzcGVlZCBvZiB0aGUgY3B1IGl0cyB2YWx1ZSBjYW4gYmUgYmV0d2VlbgorICAgMC02NiBNSHouIElmIG5vIHBhcmFtcyBhcmUgcGFzc2VkIG9yIGEgdmFsdWUgb2YgemVybyBpcyBwYXNzZWQsCisgICB0aGVuIGEgdmFsdWUgb2YgNTAgTWh6IGlzIHRoZSBkZWZhdWx0IG9uIDIxMjg1IGFyY2hpdGVjdHVyZXMuCisKKyBwYXRoc1s4XVsxMjhdCisKKyAgIFRoZXNlIGFyZSBub3cgb2Jzb2xldGUsIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuCisKKyBjb21tYW5kbGluZQorCisgICBLZXJuZWwgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMuICBEZXRhaWxzIGNhbiBiZSBmb3VuZCBlbHNld2hlcmUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS9WRlAvcmVsZWFzZS1ub3Rlcy50eHQgYi9Eb2N1bWVudGF0aW9uL2FybS9WRlAvcmVsZWFzZS1ub3Rlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhhMjc5NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL1ZGUC9yZWxlYXNlLW5vdGVzLnR4dApAQCAtMCwwICsxLDU1IEBACitSZWxlYXNlIG5vdGVzIGZvciBMaW51eCBLZXJuZWwgVkZQIHN1cHBvcnQgY29kZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRGF0ZTogCTIwIE1heSAyMDA0CitBdXRob3I6CVJ1c3NlbGwgS2luZworCitUaGlzIGlzIHRoZSBmaXJzdCByZWxlYXNlIG9mIHRoZSBMaW51eCBLZXJuZWwgVkZQIHN1cHBvcnQgY29kZS4gIEl0Citwcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgZXhjZXB0aW9ucyBib3VuY2VkIGZyb20gVkZQIGhhcmR3YXJlIGZvdW5kCitvbiBBUk05MjZFSi1TLgorCitUaGlzIHJlbGVhc2UgaGFzIGJlZW4gdmFsaWRhdGVkIGFnYWluc3QgdGhlIFNvZnRGbG9hdC0yYiBsaWJyYXJ5IGJ5CitKb2huIFIuIEhhdXNlciB1c2luZyB0aGUgVGVzdEZsb2F0LTJhIHRlc3Qgc3VpdGUuICBEZXRhaWxzIG9mIHRoaXMKK2xpYnJhcnkgYW5kIHRlc3Qgc3VpdGUgY2FuIGJlIGZvdW5kIGF0OgorCisgICBodHRwOi8vd3d3LmpoYXVzZXIudXMvYXJpdGhtZXRpYy9Tb2Z0RmxvYXQuaHRtbAorCitUaGUgb3BlcmF0aW9ucyB3aGljaCBoYXZlIGJlZW4gdGVzdGVkIHdpdGggdGhpcyBwYWNrYWdlIGFyZToKKworIC0gZmRpdgorIC0gZnN1YgorIC0gZmFkZAorIC0gZm11bAorIC0gZmNtcAorIC0gZmNtcGUKKyAtIGZjdnRkCisgLSBmY3Z0cworIC0gZnNpdG8KKyAtIGZ0b3NpCisgLSBmc3FydAorCitBbGwgdGhlIGFib3ZlIHBhc3Mgc29mdGZsb2F0IHRlc3RzIHdpdGggdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgorCistIGZhZGQvZnN1YiBzaG93cyBzb21lIGRpZmZlcmVuY2VzIGluIHRoZSBoYW5kbGluZyBvZiArMCAvIC0wIHJlc3VsdHMKKyAgd2hlbiBpbnB1dCBvcGVyYW5kcyBkaWZmZXIgaW4gc2lnbnMuCistIHRoZSBoYW5kbGluZyBvZiB1bmRlcmZsb3cgZXhjZXB0aW9ucyBpcyBzbGlnaHRseSBkaWZmZXJlbnQuICBJZiBhCisgIHJlc3VsdCB1bmRlcmZsb3dzIGJlZm9yZSByb3VuZGluZywgYnV0IGJlY29tZXMgYSBub3JtYWxpc2VkIG51bWJlcgorICBhZnRlciByb3VuZGluZywgd2UgZG8gbm90IHNpZ25hbCBhbiB1bmRlcmZsb3cgZXhjZXB0aW9uLgorCitPdGhlciBvcGVyYXRpb25zIHdoaWNoIGhhdmUgYmVlbiB0ZXN0ZWQgYnkgYmFzaWMgYXNzZW1ibHktb25seSB0ZXN0cworYXJlOgorCisgLSBmY3B5CisgLSBmYWJzCisgLSBmbmVnCisgLSBmdG91aQorIC0gZnRvc2l6CisgLSBmdG91aXoKKworVGhlIGNvbWJpbmF0aW9uIG9wZXJhdGlvbnMgaGF2ZSBub3QgYmVlbiB0ZXN0ZWQ6CisKKyAtIGZtYWMKKyAtIGZubWFjCisgLSBmbXNjCisgLSBmbm1zYworIC0gZm5tdWwKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJtL2NsdXN0ZXItcG0tcmFjZS1hdm9pZGFuY2UudHh0IGIvRG9jdW1lbnRhdGlvbi9hcm0vY2x1c3Rlci1wbS1yYWNlLWF2b2lkYW5jZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUwYjZmYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL2NsdXN0ZXItcG0tcmFjZS1hdm9pZGFuY2UudHh0CkBAIC0wLDAgKzEsNDk4IEBACitDbHVzdGVyLXdpZGUgUG93ZXItdXAvcG93ZXItZG93biByYWNlIGF2b2lkYW5jZSBhbGdvcml0aG0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGZpbGUgZG9jdW1lbnRzIHRoZSBhbGdvcml0aG0gd2hpY2ggaXMgdXNlZCB0byBjb29yZGluYXRlIENQVSBhbmQKK2NsdXN0ZXIgc2V0dXAgYW5kIHRlYXJkb3duIG9wZXJhdGlvbnMgYW5kIHRvIG1hbmFnZSBoYXJkd2FyZSBjb2hlcmVuY3kKK2NvbnRyb2xzIHNhZmVseS4KKworVGhlIHNlY3Rpb24gIlJhdGlvbmFsZSIgZXhwbGFpbnMgd2hhdCB0aGUgYWxnb3JpdGhtIGlzIGZvciBhbmQgd2h5IGl0IGlzCituZWVkZWQuICAiQmFzaWMgbW9kZWwiIGV4cGxhaW5zIGdlbmVyYWwgY29uY2VwdHMgdXNpbmcgYSBzaW1wbGlmaWVkIHZpZXcKK29mIHRoZSBzeXN0ZW0uICBUaGUgb3RoZXIgc2VjdGlvbnMgZXhwbGFpbiB0aGUgYWN0dWFsIGRldGFpbHMgb2YgdGhlCithbGdvcml0aG0gaW4gdXNlLgorCisKK1JhdGlvbmFsZQorLS0tLS0tLS0tCisKK0luIGEgc3lzdGVtIGNvbnRhaW5pbmcgbXVsdGlwbGUgQ1BVcywgaXQgaXMgZGVzaXJhYmxlIHRvIGhhdmUgdGhlCithYmlsaXR5IHRvIHR1cm4gb2ZmIGluZGl2aWR1YWwgQ1BVcyB3aGVuIHRoZSBzeXN0ZW0gaXMgaWRsZSwgcmVkdWNpbmcKK3Bvd2VyIGNvbnN1bXB0aW9uIGFuZCB0aGVybWFsIGRpc3NpcGF0aW9uLgorCitJbiBhIHN5c3RlbSBjb250YWluaW5nIG11bHRpcGxlIGNsdXN0ZXJzIG9mIENQVXMsIGl0IGlzIGFsc28gZGVzaXJhYmxlCit0byBoYXZlIHRoZSBhYmlsaXR5IHRvIHR1cm4gb2ZmIGVudGlyZSBjbHVzdGVycy4KKworVHVybmluZyBlbnRpcmUgY2x1c3RlcnMgb2ZmIGFuZCBvbiBpcyBhIHJpc2t5IGJ1c2luZXNzLCBiZWNhdXNlIGl0CitpbnZvbHZlcyBwZXJmb3JtaW5nIHBvdGVudGlhbGx5IGRlc3RydWN0aXZlIG9wZXJhdGlvbnMgYWZmZWN0aW5nIGEgZ3JvdXAKK29mIGluZGVwZW5kZW50bHkgcnVubmluZyBDUFVzLCB3aGlsZSB0aGUgT1MgY29udGludWVzIHRvIHJ1bi4gIFRoaXMKK21lYW5zIHRoYXQgd2UgbmVlZCBzb21lIGNvb3JkaW5hdGlvbiBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCBjcml0aWNhbAorY2x1c3Rlci1sZXZlbCBvcGVyYXRpb25zIGFyZSBvbmx5IHBlcmZvcm1lZCB3aGVuIGl0IGlzIHRydWx5IHNhZmUgdG8gZG8KK3NvLgorCitTaW1wbGUgbG9ja2luZyBtYXkgbm90IGJlIHN1ZmZpY2llbnQgdG8gc29sdmUgdGhpcyBwcm9ibGVtLCBiZWNhdXNlCittZWNoYW5pc21zIGxpa2UgTGludXggc3BpbmxvY2tzIG1heSByZWx5IG9uIGNvaGVyZW5jeSBtZWNoYW5pc21zIHdoaWNoCithcmUgbm90IGltbWVkaWF0ZWx5IGVuYWJsZWQgd2hlbiBhIGNsdXN0ZXIgcG93ZXJzIHVwLiAgU2luY2UgZW5hYmxpbmcgb3IKK2Rpc2FibGluZyB0aG9zZSBtZWNoYW5pc21zIG1heSBpdHNlbGYgYmUgYSBub24tYXRvbWljIG9wZXJhdGlvbiAoc3VjaCBhcword3JpdGluZyBzb21lIGhhcmR3YXJlIHJlZ2lzdGVycyBhbmQgaW52YWxpZGF0aW5nIGxhcmdlIGNhY2hlcyksIG90aGVyCittZXRob2RzIG9mIGNvb3JkaW5hdGlvbiBhcmUgcmVxdWlyZWQgaW4gb3JkZXIgdG8gZ3VhcmFudGVlIHNhZmUKK3Bvd2VyLWRvd24gYW5kIHBvd2VyLXVwIGF0IHRoZSBjbHVzdGVyIGxldmVsLgorCitUaGUgbWVjaGFuaXNtIHByZXNlbnRlZCBpbiB0aGlzIGRvY3VtZW50IGRlc2NyaWJlcyBhIGNvaGVyZW50IG1lbW9yeQorYmFzZWQgcHJvdG9jb2wgZm9yIHBlcmZvcm1pbmcgdGhlIG5lZWRlZCBjb29yZGluYXRpb24uICBJdCBhaW1zIHRvIGJlIGFzCitsaWdodHdlaWdodCBhcyBwb3NzaWJsZSwgd2hpbGUgcHJvdmlkaW5nIHRoZSByZXF1aXJlZCBzYWZldHkgcHJvcGVydGllcy4KKworCitCYXNpYyBtb2RlbAorLS0tLS0tLS0tLS0KKworRWFjaCBjbHVzdGVyIGFuZCBDUFUgaXMgYXNzaWduZWQgYSBzdGF0ZSwgYXMgZm9sbG93czoKKworCURPV04KKwlDT01JTkdfVVAKKwlVUAorCUdPSU5HX0RPV04KKworCSAgICArLS0tLS0tLS0tPiBVUCAtLS0tLS0tLS0tKworCSAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdgorCisJQ09NSU5HX1VQICAgICAgICAgICAgICAgIEdPSU5HX0RPV04KKworCSAgICBeICAgICAgICAgICAgICAgICAgICAgICAgfAorCSAgICArLS0tLS0tLS0tIERPV04gPC0tLS0tLS0tKworCisKK0RPV046CVRoZSBDUFUgb3IgY2x1c3RlciBpcyBub3QgY29oZXJlbnQsIGFuZCBpcyBlaXRoZXIgcG93ZXJlZCBvZmYgb3IKKwlzdXNwZW5kZWQsIG9yIGlzIHJlYWR5IHRvIGJlIHBvd2VyZWQgb2ZmIG9yIHN1c3BlbmRlZC4KKworQ09NSU5HX1VQOiBUaGUgQ1BVIG9yIGNsdXN0ZXIgaGFzIGNvbW1pdHRlZCB0byBtb3ZpbmcgdG8gdGhlIFVQIHN0YXRlLgorCUl0IG1heSBiZSBwYXJ0IHdheSB0aHJvdWdoIHRoZSBwcm9jZXNzIG9mIGluaXRpYWxpc2F0aW9uIGFuZAorCWVuYWJsaW5nIGNvaGVyZW5jeS4KKworVVA6CVRoZSBDUFUgb3IgY2x1c3RlciBpcyBhY3RpdmUgYW5kIGNvaGVyZW50IGF0IHRoZSBoYXJkd2FyZQorCWxldmVsLiAgQSBDUFUgaW4gdGhpcyBzdGF0ZSBpcyBub3QgbmVjZXNzYXJpbHkgYmVpbmcgdXNlZAorCWFjdGl2ZWx5IGJ5IHRoZSBrZXJuZWwuCisKK0dPSU5HX0RPV046IFRoZSBDUFUgb3IgY2x1c3RlciBoYXMgY29tbWl0dGVkIHRvIG1vdmluZyB0byB0aGUgRE9XTgorCXN0YXRlLiAgSXQgbWF5IGJlIHBhcnQgd2F5IHRocm91Z2ggdGhlIHByb2Nlc3Mgb2YgdGVhcmRvd24gYW5kCisJY29oZXJlbmN5IGV4aXQuCisKKworRWFjaCBDUFUgaGFzIG9uZSBvZiB0aGVzZSBzdGF0ZXMgYXNzaWduZWQgdG8gaXQgYXQgYW55IHBvaW50IGluIHRpbWUuCitUaGUgQ1BVIHN0YXRlcyBhcmUgZGVzY3JpYmVkIGluIHRoZSAiQ1BVIHN0YXRlIiBzZWN0aW9uLCBiZWxvdy4KKworRWFjaCBjbHVzdGVyIGlzIGFsc28gYXNzaWduZWQgYSBzdGF0ZSwgYnV0IGl0IGlzIG5lY2Vzc2FyeSB0byBzcGxpdCB0aGUKK3N0YXRlIHZhbHVlIGludG8gdHdvIHBhcnRzICh0aGUgImNsdXN0ZXIiIHN0YXRlIGFuZCAiaW5ib3VuZCIgc3RhdGUpIGFuZAordG8gaW50cm9kdWNlIGFkZGl0aW9uYWwgc3RhdGVzIGluIG9yZGVyIHRvIGF2b2lkIHJhY2VzIGJldHdlZW4gZGlmZmVyZW50CitDUFVzIGluIHRoZSBjbHVzdGVyIHNpbXVsdGFuZW91c2x5IG1vZGlmeWluZyB0aGUgc3RhdGUuICBUaGUgY2x1c3Rlci0KK2xldmVsIHN0YXRlcyBhcmUgZGVzY3JpYmVkIGluIHRoZSAiQ2x1c3RlciBzdGF0ZSIgc2VjdGlvbi4KKworVG8gaGVscCBkaXN0aW5ndWlzaCB0aGUgQ1BVIHN0YXRlcyBmcm9tIGNsdXN0ZXIgc3RhdGVzIGluIHRoaXMKK2Rpc2N1c3Npb24sIHRoZSBzdGF0ZSBuYW1lcyBhcmUgZ2l2ZW4gYSBDUFVfIHByZWZpeCBmb3IgdGhlIENQVSBzdGF0ZXMsCithbmQgYSBDTFVTVEVSXyBvciBJTkJPVU5EXyBwcmVmaXggZm9yIHRoZSBjbHVzdGVyIHN0YXRlcy4KKworCitDUFUgc3RhdGUKKy0tLS0tLS0tLQorCitJbiB0aGlzIGFsZ29yaXRobSwgZWFjaCBpbmRpdmlkdWFsIGNvcmUgaW4gYSBtdWx0aS1jb3JlIHByb2Nlc3NvciBpcworcmVmZXJyZWQgdG8gYXMgYSAiQ1BVIi4gIENQVXMgYXJlIGFzc3VtZWQgdG8gYmUgc2luZ2xlLXRocmVhZGVkOgordGhlcmVmb3JlLCBhIENQVSBjYW4gb25seSBiZSBkb2luZyBvbmUgdGhpbmcgYXQgYSBzaW5nbGUgcG9pbnQgaW4gdGltZS4KKworVGhpcyBtZWFucyB0aGF0IENQVXMgZml0IHRoZSBiYXNpYyBtb2RlbCBjbG9zZWx5LgorCitUaGUgYWxnb3JpdGhtIGRlZmluZXMgdGhlIGZvbGxvd2luZyBzdGF0ZXMgZm9yIGVhY2ggQ1BVIGluIHRoZSBzeXN0ZW06CisKKwlDUFVfRE9XTgorCUNQVV9DT01JTkdfVVAKKwlDUFVfVVAKKwlDUFVfR09JTkdfRE9XTgorCisJIGNsdXN0ZXIgc2V0dXAgYW5kCisJQ1BVIHNldHVwIGNvbXBsZXRlICAgICAgICAgIHBvbGljeSBkZWNpc2lvbgorCSAgICAgICstLS0tLS0tLS0tLT4gQ1BVX1VQIC0tLS0tLS0tLS0tLSsKKwkgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CisKKwlDUFVfQ09NSU5HX1VQICAgICAgICAgICAgICAgICAgIENQVV9HT0lOR19ET1dOCisKKwkgICAgICBeICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisJICAgICAgKy0tLS0tLS0tLS0tIENQVV9ET1dOIDwtLS0tLS0tLS0tKworCSBwb2xpY3kgZGVjaXNpb24gICAgICAgICAgIENQVSB0ZWFyZG93biBjb21wbGV0ZQorCW9yIGhhcmR3YXJlIGV2ZW50CisKKworVGhlIGRlZmluaXRpb25zIG9mIHRoZSBmb3VyIHN0YXRlcyBjb3JyZXNwb25kIGNsb3NlbHkgdG8gdGhlIHN0YXRlcyBvZgordGhlIGJhc2ljIG1vZGVsLgorCitUcmFuc2l0aW9ucyBiZXR3ZWVuIHN0YXRlcyBvY2N1ciBhcyBmb2xsb3dzLgorCitBIHRyaWdnZXIgZXZlbnQgKHNwb250YW5lb3VzKSBtZWFucyB0aGF0IHRoZSBDUFUgY2FuIHRyYW5zaXRpb24gdG8gdGhlCituZXh0IHN0YXRlIGFzIGEgcmVzdWx0IG9mIG1ha2luZyBsb2NhbCBwcm9ncmVzcyBvbmx5LCB3aXRoIG5vCityZXF1aXJlbWVudCBmb3IgYW55IGV4dGVybmFsIGV2ZW50IHRvIGhhcHBlbi4KKworCitDUFVfRE9XTjoKKworCUEgQ1BVIHJlYWNoZXMgdGhlIENQVV9ET1dOIHN0YXRlIHdoZW4gaXQgaXMgcmVhZHkgZm9yCisJcG93ZXItZG93bi4gIE9uIHJlYWNoaW5nIHRoaXMgc3RhdGUsIHRoZSBDUFUgd2lsbCB0eXBpY2FsbHkKKwlwb3dlciBpdHNlbGYgZG93biBvciBzdXNwZW5kIGl0c2VsZiwgdmlhIGEgV0ZJIGluc3RydWN0aW9uIG9yIGEKKwlmaXJtd2FyZSBjYWxsLgorCisJTmV4dCBzdGF0ZToJQ1BVX0NPTUlOR19VUAorCUNvbmRpdGlvbnM6CW5vbmUKKworCVRyaWdnZXIgZXZlbnRzOgorCisJCWEpIGFuIGV4cGxpY2l0IGhhcmR3YXJlIHBvd2VyLXVwIG9wZXJhdGlvbiwgcmVzdWx0aW5nCisJCSAgIGZyb20gYSBwb2xpY3kgZGVjaXNpb24gb24gYW5vdGhlciBDUFU7CisKKwkJYikgYSBoYXJkd2FyZSBldmVudCwgc3VjaCBhcyBhbiBpbnRlcnJ1cHQuCisKKworQ1BVX0NPTUlOR19VUDoKKworCUEgQ1BVIGNhbm5vdCBzdGFydCBwYXJ0aWNpcGF0aW5nIGluIGhhcmR3YXJlIGNvaGVyZW5jeSB1bnRpbCB0aGUKKwljbHVzdGVyIGlzIHNldCB1cCBhbmQgY29oZXJlbnQuICBJZiB0aGUgY2x1c3RlciBpcyBub3QgcmVhZHksCisJdGhlbiB0aGUgQ1BVIHdpbGwgd2FpdCBpbiB0aGUgQ1BVX0NPTUlOR19VUCBzdGF0ZSB1bnRpbCB0aGUKKwljbHVzdGVyIGhhcyBiZWVuIHNldCB1cC4KKworCU5leHQgc3RhdGU6CUNQVV9VUAorCUNvbmRpdGlvbnM6CVRoZSBDUFUncyBwYXJlbnQgY2x1c3RlciBtdXN0IGJlIGluIENMVVNURVJfVVAuCisJVHJpZ2dlciBldmVudHM6CVRyYW5zaXRpb24gb2YgdGhlIHBhcmVudCBjbHVzdGVyIHRvIENMVVNURVJfVVAuCisKKwlSZWZlciB0byB0aGUgIkNsdXN0ZXIgc3RhdGUiIHNlY3Rpb24gZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlCisJQ0xVU1RFUl9VUCBzdGF0ZS4KKworCitDUFVfVVA6CisJV2hlbiBhIENQVSByZWFjaGVzIHRoZSBDUFVfVVAgc3RhdGUsIGl0IGlzIHNhZmUgZm9yIHRoZSBDUFUgdG8KKwlzdGFydCBwYXJ0aWNpcGF0aW5nIGluIGxvY2FsIGNvaGVyZW5jeS4KKworCVRoaXMgaXMgZG9uZSBieSBqdW1waW5nIHRvIHRoZSBrZXJuZWwncyBDUFUgcmVzdW1lIGNvZGUuCisKKwlOb3RlIHRoYXQgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBzdGF0ZSBpcyBzbGlnaHRseSBkaWZmZXJlbnQKKwlmcm9tIHRoZSBiYXNpYyBtb2RlbCBkZWZpbml0aW9uOiBDUFVfVVAgZG9lcyBub3QgbWVhbiB0aGF0IHRoZQorCUNQVSBpcyBjb2hlcmVudCB5ZXQsIGJ1dCBpdCBkb2VzIG1lYW4gdGhhdCBpdCBpcyBzYWZlIHRvIHJlc3VtZQorCXRoZSBrZXJuZWwuICBUaGUga2VybmVsIGhhbmRsZXMgdGhlIHJlc3Qgb2YgdGhlIHJlc3VtZQorCXByb2NlZHVyZSwgc28gdGhlIHJlbWFpbmluZyBzdGVwcyBhcmUgbm90IHZpc2libGUgYXMgcGFydCBvZiB0aGUKKwlyYWNlIGF2b2lkYW5jZSBhbGdvcml0aG0uCisKKwlUaGUgQ1BVIHJlbWFpbnMgaW4gdGhpcyBzdGF0ZSB1bnRpbCBhbiBleHBsaWNpdCBwb2xpY3kgZGVjaXNpb24KKwlpcyBtYWRlIHRvIHNodXQgZG93biBvciBzdXNwZW5kIHRoZSBDUFUuCisKKwlOZXh0IHN0YXRlOglDUFVfR09JTkdfRE9XTgorCUNvbmRpdGlvbnM6CW5vbmUKKwlUcmlnZ2VyIGV2ZW50czoJZXhwbGljaXQgcG9saWN5IGRlY2lzaW9uCisKKworQ1BVX0dPSU5HX0RPV046CisKKwlXaGlsZSBpbiB0aGlzIHN0YXRlLCB0aGUgQ1BVIGV4aXRzIGNvaGVyZW5jeSwgaW5jbHVkaW5nIGFueQorCW9wZXJhdGlvbnMgcmVxdWlyZWQgdG8gYWNoaWV2ZSB0aGlzIChzdWNoIGFzIGNsZWFuaW5nIGRhdGEKKwljYWNoZXMpLgorCisJTmV4dCBzdGF0ZToJQ1BVX0RPV04KKwlDb25kaXRpb25zOglsb2NhbCBDUFUgdGVhcmRvd24gY29tcGxldGUKKwlUcmlnZ2VyIGV2ZW50czoJKHNwb250YW5lb3VzKQorCisKK0NsdXN0ZXIgc3RhdGUKKy0tLS0tLS0tLS0tLS0KKworQSBjbHVzdGVyIGlzIGEgZ3JvdXAgb2YgY29ubmVjdGVkIENQVXMgd2l0aCBzb21lIGNvbW1vbiByZXNvdXJjZXMuCitCZWNhdXNlIGEgY2x1c3RlciBjb250YWlucyBtdWx0aXBsZSBDUFVzLCBpdCBjYW4gYmUgZG9pbmcgbXVsdGlwbGUKK3RoaW5ncyBhdCB0aGUgc2FtZSB0aW1lLiAgVGhpcyBoYXMgc29tZSBpbXBsaWNhdGlvbnMuICBJbiBwYXJ0aWN1bGFyLCBhCitDUFUgY2FuIHN0YXJ0IHVwIHdoaWxlIGFub3RoZXIgQ1BVIGlzIHRlYXJpbmcgdGhlIGNsdXN0ZXIgZG93bi4KKworSW4gdGhpcyBkaXNjdXNzaW9uLCB0aGUgIm91dGJvdW5kIHNpZGUiIGlzIHRoZSB2aWV3IG9mIHRoZSBjbHVzdGVyIHN0YXRlCithcyBzZWVuIGJ5IGEgQ1BVIHRlYXJpbmcgdGhlIGNsdXN0ZXIgZG93bi4gIFRoZSAiaW5ib3VuZCBzaWRlIiBpcyB0aGUKK3ZpZXcgb2YgdGhlIGNsdXN0ZXIgc3RhdGUgYXMgc2VlbiBieSBhIENQVSBzZXR0aW5nIHRoZSBDUFUgdXAuCisKK0luIG9yZGVyIHRvIGVuYWJsZSBzYWZlIGNvb3JkaW5hdGlvbiBpbiBzdWNoIHNpdHVhdGlvbnMsIGl0IGlzIGltcG9ydGFudAordGhhdCBhIENQVSB3aGljaCBpcyBzZXR0aW5nIHVwIHRoZSBjbHVzdGVyIGNhbiBhZHZlcnRpc2UgaXRzIHN0YXRlCitpbmRlcGVuZGVudGx5IG9mIHRoZSBDUFUgd2hpY2ggaXMgdGVhcmluZyBkb3duIHRoZSBjbHVzdGVyLiAgRm9yIHRoaXMKK3JlYXNvbiwgdGhlIGNsdXN0ZXIgc3RhdGUgaXMgc3BsaXQgaW50byB0d28gcGFydHM6CisKKwkiY2x1c3RlciIgc3RhdGU6IFRoZSBnbG9iYWwgc3RhdGUgb2YgdGhlIGNsdXN0ZXI7IG9yIHRoZSBzdGF0ZQorCQlvbiB0aGUgb3V0Ym91bmQgc2lkZToKKworCQlDTFVTVEVSX0RPV04KKwkJQ0xVU1RFUl9VUAorCQlDTFVTVEVSX0dPSU5HX0RPV04KKworCSJpbmJvdW5kIiBzdGF0ZTogVGhlIHN0YXRlIG9mIHRoZSBjbHVzdGVyIG9uIHRoZSBpbmJvdW5kIHNpZGUuCisKKwkJSU5CT1VORF9OT1RfQ09NSU5HX1VQCisJCUlOQk9VTkRfQ09NSU5HX1VQCisKKworCVRoZSBkaWZmZXJlbnQgcGFpcmluZ3Mgb2YgdGhlc2Ugc3RhdGVzIHJlc3VsdHMgaW4gc2l4IHBvc3NpYmxlCisJc3RhdGVzIGZvciB0aGUgY2x1c3RlciBhcyBhIHdob2xlOgorCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMVVNURVJfVVAKKwkgICAgICAgICAgKz09PT09PT09PT0+IElOQk9VTkRfTk9UX0NPTUlOR19VUCAtLS0tLS0tLS0tLS0tKworCSAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKwkgICAgIENMVVNURVJfVVAgICAgIDwtLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCSAgSU5CT1VORF9DT01JTkdfVVAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CisKKwkgICAgICAgICAgXiAgICAgICAgICAgICBDTFVTVEVSX0dPSU5HX0RPV04gICAgICAgQ0xVU1RFUl9HT0lOR19ET1dOCisJICAgICAgICAgICMgICAgICAgICAgICAgIElOQk9VTkRfQ09NSU5HX1VQIDw9PT0gSU5CT1VORF9OT1RfQ09NSU5HX1VQCisKKwkgICAgQ0xVU1RFUl9ET1dOICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCSAgSU5CT1VORF9DT01JTkdfVVAgPC0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKwkgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCSAgICAgICAgICArPT09PT09PT09PT0gICAgIENMVVNURVJfRE9XTiAgICAgIDwtLS0tLS0tLS0tLS0rCisJICAgICAgICAgICAgICAgICAgICAgICBJTkJPVU5EX05PVF9DT01JTkdfVVAKKworCVRyYW5zaXRpb25zIC0tLS0tPiBjYW4gb25seSBiZSBtYWRlIGJ5IHRoZSBvdXRib3VuZCBDUFUsIGFuZAorCW9ubHkgaW52b2x2ZSBjaGFuZ2VzIHRvIHRoZSAiY2x1c3RlciIgc3RhdGUuCisKKwlUcmFuc2l0aW9ucyA9PT0jIz4gY2FuIG9ubHkgYmUgbWFkZSBieSB0aGUgaW5ib3VuZCBDUFUsIGFuZCBvbmx5CisJaW52b2x2ZSBjaGFuZ2VzIHRvIHRoZSAiaW5ib3VuZCIgc3RhdGUsIGV4Y2VwdCB3aGVyZSB0aGVyZSBpcyBubworCWZ1cnRoZXIgdHJhbnNpdGlvbiBwb3NzaWJsZSBvbiB0aGUgb3V0Ym91bmQgc2lkZSAoaS5lLiwgdGhlCisJb3V0Ym91bmQgQ1BVIGhhcyBwdXQgdGhlIGNsdXN0ZXIgaW50byB0aGUgQ0xVU1RFUl9ET1dOIHN0YXRlKS4KKworCVRoZSByYWNlIGF2b2lkYW5jZSBhbGdvcml0aG0gZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0byBkZXRlcm1pbmUKKwl3aGljaCBleGFjdCBDUFVzIHdpdGhpbiB0aGUgY2x1c3RlciBwbGF5IHRoZXNlIHJvbGVzLiAgVGhpcyBtdXN0CisJYmUgZGVjaWRlZCBpbiBhZHZhbmNlIGJ5IHNvbWUgb3RoZXIgbWVhbnMuICBSZWZlciB0byB0aGUgc2VjdGlvbgorCSJMYXN0IG1hbiBhbmQgZmlyc3QgbWFuIHNlbGVjdGlvbiIgZm9yIG1vcmUgZXhwbGFuYXRpb24uCisKKworCUNMVVNURVJfRE9XTi9JTkJPVU5EX05PVF9DT01JTkdfVVAgaXMgdGhlIG9ubHkgc3RhdGUgd2hlcmUgdGhlCisJY2x1c3RlciBjYW4gYWN0dWFsbHkgYmUgcG93ZXJlZCBkb3duLgorCisJVGhlIHBhcmFsbGVsaXNtIG9mIHRoZSBpbmJvdW5kIGFuZCBvdXRib3VuZCBDUFVzIGlzIG9ic2VydmVkIGJ5CisJdGhlIGV4aXN0ZW5jZSBvZiB0d28gZGlmZmVyZW50IHBhdGhzIGZyb20gQ0xVU1RFUl9HT0lOR19ET1dOLworCUlOQk9VTkRfTk9UX0NPTUlOR19VUCAoY29ycmVzcG9uZGluZyB0byBHT0lOR19ET1dOIGluIHRoZSBiYXNpYworCW1vZGVsKSB0byBDTFVTVEVSX0RPV04vSU5CT1VORF9DT01JTkdfVVAgKGNvcnJlc3BvbmRpbmcgdG8KKwlDT01JTkdfVVAgaW4gdGhlIGJhc2ljIG1vZGVsKS4gIFRoZSBzZWNvbmQgcGF0aCBhdm9pZHMgY2x1c3RlcgorCXRlYXJkb3duIGNvbXBsZXRlbHkuCisKKwlDTFVTVEVSX1VQL0lOQk9VTkRfQ09NSU5HX1VQIGlzIGVxdWl2YWxlbnQgdG8gVVAgaW4gdGhlIGJhc2ljCisJbW9kZWwuICBUaGUgZmluYWwgdHJhbnNpdGlvbiB0byBDTFVTVEVSX1VQL0lOQk9VTkRfTk9UX0NPTUlOR19VUAorCWlzIHRyaXZpYWwgYW5kIG1lcmVseSByZXNldHMgdGhlIHN0YXRlIG1hY2hpbmUgcmVhZHkgZm9yIHRoZQorCW5leHQgY3ljbGUuCisKKwlEZXRhaWxzIG9mIHRoZSBhbGxvd2FibGUgdHJhbnNpdGlvbnMgZm9sbG93LgorCisJVGhlIG5leHQgc3RhdGUgaW4gZWFjaCBjYXNlIGlzIG5vdGF0ZWQKKworCQk8Y2x1c3RlciBzdGF0ZT4vPGluYm91bmQgc3RhdGU+ICg8dHJhbnNpdGlvbmVyPikKKworCXdoZXJlIHRoZSA8dHJhbnNpdGlvbmVyPiBpcyB0aGUgc2lkZSBvbiB3aGljaCB0aGUgdHJhbnNpdGlvbgorCWNhbiBvY2N1cjsgZWl0aGVyIHRoZSBpbmJvdW5kIG9yIHRoZSBvdXRib3VuZCBzaWRlLgorCisKK0NMVVNURVJfRE9XTi9JTkJPVU5EX05PVF9DT01JTkdfVVA6CisKKwlOZXh0IHN0YXRlOglDTFVTVEVSX0RPV04vSU5CT1VORF9DT01JTkdfVVAgKGluYm91bmQpCisJQ29uZGl0aW9uczoJbm9uZQorCVRyaWdnZXIgZXZlbnRzOgorCisJCWEpIGFuIGV4cGxpY2l0IGhhcmR3YXJlIHBvd2VyLXVwIG9wZXJhdGlvbiwgcmVzdWx0aW5nCisJCSAgIGZyb20gYSBwb2xpY3kgZGVjaXNpb24gb24gYW5vdGhlciBDUFU7CisKKwkJYikgYSBoYXJkd2FyZSBldmVudCwgc3VjaCBhcyBhbiBpbnRlcnJ1cHQuCisKKworQ0xVU1RFUl9ET1dOL0lOQk9VTkRfQ09NSU5HX1VQOgorCisJSW4gdGhpcyBzdGF0ZSwgYW4gaW5ib3VuZCBDUFUgc2V0cyB1cCB0aGUgY2x1c3RlciwgaW5jbHVkaW5nCisJZW5hYmxpbmcgb2YgaGFyZHdhcmUgY29oZXJlbmN5IGF0IHRoZSBjbHVzdGVyIGxldmVsIGFuZCBhbnkKKwlvdGhlciBvcGVyYXRpb25zIChzdWNoIGFzIGNhY2hlIGludmFsaWRhdGlvbikgd2hpY2ggYXJlIHJlcXVpcmVkCisJaW4gb3JkZXIgdG8gYWNoaWV2ZSB0aGlzLgorCisJVGhlIHB1cnBvc2Ugb2YgdGhpcyBzdGF0ZSBpcyB0byBkbyBzdWZmaWNpZW50IGNsdXN0ZXItbGV2ZWwKKwlzZXR1cCB0byBlbmFibGUgb3RoZXIgQ1BVcyBpbiB0aGUgY2x1c3RlciB0byBlbnRlciBjb2hlcmVuY3kKKwlzYWZlbHkuCisKKwlOZXh0IHN0YXRlOglDTFVTVEVSX1VQL0lOQk9VTkRfQ09NSU5HX1VQIChpbmJvdW5kKQorCUNvbmRpdGlvbnM6CWNsdXN0ZXItbGV2ZWwgc2V0dXAgYW5kIGhhcmR3YXJlIGNvaGVyZW5jeSBjb21wbGV0ZQorCVRyaWdnZXIgZXZlbnRzOgkoc3BvbnRhbmVvdXMpCisKKworQ0xVU1RFUl9VUC9JTkJPVU5EX0NPTUlOR19VUDoKKworCUNsdXN0ZXItbGV2ZWwgc2V0dXAgaXMgY29tcGxldGUgYW5kIGhhcmR3YXJlIGNvaGVyZW5jeSBpcworCWVuYWJsZWQgZm9yIHRoZSBjbHVzdGVyLiAgT3RoZXIgQ1BVcyBpbiB0aGUgY2x1c3RlciBjYW4gc2FmZWx5CisJZW50ZXIgY29oZXJlbmN5LgorCisJVGhpcyBpcyBhIHRyYW5zaWVudCBzdGF0ZSwgbGVhZGluZyBpbW1lZGlhdGVseSB0bworCUNMVVNURVJfVVAvSU5CT1VORF9OT1RfQ09NSU5HX1VQLiAgQWxsIG90aGVyIENQVXMgb24gdGhlIGNsdXN0ZXIKKwlzaG91bGQgY29uc2lkZXIgdHJlYXQgdGhlc2UgdHdvIHN0YXRlcyBhcyBlcXVpdmFsZW50LgorCisJTmV4dCBzdGF0ZToJQ0xVU1RFUl9VUC9JTkJPVU5EX05PVF9DT01JTkdfVVAgKGluYm91bmQpCisJQ29uZGl0aW9uczoJbm9uZQorCVRyaWdnZXIgZXZlbnRzOgkoc3BvbnRhbmVvdXMpCisKKworQ0xVU1RFUl9VUC9JTkJPVU5EX05PVF9DT01JTkdfVVA6CisKKwlDbHVzdGVyLWxldmVsIHNldHVwIGlzIGNvbXBsZXRlIGFuZCBoYXJkd2FyZSBjb2hlcmVuY3kgaXMKKwllbmFibGVkIGZvciB0aGUgY2x1c3Rlci4gIE90aGVyIENQVXMgaW4gdGhlIGNsdXN0ZXIgY2FuIHNhZmVseQorCWVudGVyIGNvaGVyZW5jeS4KKworCVRoZSBjbHVzdGVyIHdpbGwgcmVtYWluIGluIHRoaXMgc3RhdGUgdW50aWwgYSBwb2xpY3kgZGVjaXNpb24gaXMKKwltYWRlIHRvIHBvd2VyIHRoZSBjbHVzdGVyIGRvd24uCisKKwlOZXh0IHN0YXRlOglDTFVTVEVSX0dPSU5HX0RPV04vSU5CT1VORF9OT1RfQ09NSU5HX1VQIChvdXRib3VuZCkKKwlDb25kaXRpb25zOglub25lCisJVHJpZ2dlciBldmVudHM6CXBvbGljeSBkZWNpc2lvbiB0byBwb3dlciBkb3duIHRoZSBjbHVzdGVyCisKKworQ0xVU1RFUl9HT0lOR19ET1dOL0lOQk9VTkRfTk9UX0NPTUlOR19VUDoKKworCUFuIG91dGJvdW5kIENQVSBpcyB0ZWFyaW5nIHRoZSBjbHVzdGVyIGRvd24uICBUaGUgc2VsZWN0ZWQgQ1BVCisJbXVzdCB3YWl0IGluIHRoaXMgc3RhdGUgdW50aWwgYWxsIENQVXMgaW4gdGhlIGNsdXN0ZXIgYXJlIGluIHRoZQorCUNQVV9ET1dOIHN0YXRlLgorCisJV2hlbiBhbGwgQ1BVcyBhcmUgaW4gdGhlIENQVV9ET1dOIHN0YXRlLCB0aGUgY2x1c3RlciBjYW4gYmUgdG9ybgorCWRvd24sIGZvciBleGFtcGxlIGJ5IGNsZWFuaW5nIGRhdGEgY2FjaGVzIGFuZCBleGl0aW5nCisJY2x1c3Rlci1sZXZlbCBjb2hlcmVuY3kuCisKKwlUbyBhdm9pZCB3YXN0ZWZ1bCB1bm5lY2Vzc2FyeSB0ZWFyZG93biBvcGVyYXRpb25zLCB0aGUgb3V0Ym91bmQKKwlzaG91bGQgY2hlY2sgdGhlIGluYm91bmQgY2x1c3RlciBzdGF0ZSBmb3IgYXN5bmNocm9ub3VzCisJdHJhbnNpdGlvbnMgdG8gSU5CT1VORF9DT01JTkdfVVAuICBBbHRlcm5hdGl2ZWx5LCBpbmRpdmlkdWFsCisJQ1BVcyBjYW4gYmUgY2hlY2tlZCBmb3IgZW50cnkgaW50byBDUFVfQ09NSU5HX1VQIG9yIENQVV9VUC4KKworCisJTmV4dCBzdGF0ZXM6CisKKwlDTFVTVEVSX0RPV04vSU5CT1VORF9OT1RfQ09NSU5HX1VQIChvdXRib3VuZCkKKwkJQ29uZGl0aW9uczoJY2x1c3RlciB0b3JuIGRvd24gYW5kIHJlYWR5IHRvIHBvd2VyIG9mZgorCQlUcmlnZ2VyIGV2ZW50czoJKHNwb250YW5lb3VzKQorCisJQ0xVU1RFUl9HT0lOR19ET1dOL0lOQk9VTkRfQ09NSU5HX1VQIChpbmJvdW5kKQorCQlDb25kaXRpb25zOglub25lCisJCVRyaWdnZXIgZXZlbnRzOgorCisJCQlhKSBhbiBleHBsaWNpdCBoYXJkd2FyZSBwb3dlci11cCBvcGVyYXRpb24sCisJCQkgICByZXN1bHRpbmcgZnJvbSBhIHBvbGljeSBkZWNpc2lvbiBvbiBhbm90aGVyCisJCQkgICBDUFU7CisKKwkJCWIpIGEgaGFyZHdhcmUgZXZlbnQsIHN1Y2ggYXMgYW4gaW50ZXJydXB0LgorCisKK0NMVVNURVJfR09JTkdfRE9XTi9JTkJPVU5EX0NPTUlOR19VUDoKKworCVRoZSBjbHVzdGVyIGlzIChvciB3YXMpIGJlaW5nIHRvcm4gZG93biwgYnV0IGFub3RoZXIgQ1BVIGhhcworCWNvbWUgb25saW5lIGluIHRoZSBtZWFudGltZSBhbmQgaXMgdHJ5aW5nIHRvIHNldCB1cCB0aGUgY2x1c3RlcgorCWFnYWluLgorCisJSWYgdGhlIG91dGJvdW5kIENQVSBvYnNlcnZlcyB0aGlzIHN0YXRlLCBpdCBoYXMgdHdvIGNob2ljZXM6CisKKwkJYSkgYmFjayBvdXQgb2YgdGVhcmRvd24sIHJlc3RvcmluZyB0aGUgY2x1c3RlciB0byB0aGUKKwkJICAgQ0xVU1RFUl9VUCBzdGF0ZTsKKworCQliKSBmaW5pc2ggdGVhcmluZyB0aGUgY2x1c3RlciBkb3duIGFuZCBwdXQgdGhlIGNsdXN0ZXIKKwkJICAgaW4gdGhlIENMVVNURVJfRE9XTiBzdGF0ZTsgdGhlIGluYm91bmQgQ1BVIHdpbGwKKwkJICAgc2V0IHVwIHRoZSBjbHVzdGVyIGFnYWluIGZyb20gdGhlcmUuCisKKwlDaG9pY2UgKGEpIHBlcm1pdHMgdGhlIHJlbW92YWwgb2Ygc29tZSBsYXRlbmN5IGJ5IGF2b2lkaW5nCisJdW5uZWNlc3NhcnkgdGVhcmRvd24gYW5kIHNldHVwIG9wZXJhdGlvbnMgaW4gc2l0dWF0aW9ucyB3aGVyZQorCXRoZSBjbHVzdGVyIGlzIG5vdCByZWFsbHkgZ29pbmcgdG8gYmUgcG93ZXJlZCBkb3duLgorCisKKwlOZXh0IHN0YXRlczoKKworCUNMVVNURVJfVVAvSU5CT1VORF9DT01JTkdfVVAgKG91dGJvdW5kKQorCQlDb25kaXRpb25zOgljbHVzdGVyLWxldmVsIHNldHVwIGFuZCBoYXJkd2FyZQorCQkJCWNvaGVyZW5jeSBjb21wbGV0ZQorCQlUcmlnZ2VyIGV2ZW50czoJKHNwb250YW5lb3VzKQorCisJQ0xVU1RFUl9ET1dOL0lOQk9VTkRfQ09NSU5HX1VQIChvdXRib3VuZCkKKwkJQ29uZGl0aW9uczoJY2x1c3RlciB0b3JuIGRvd24gYW5kIHJlYWR5IHRvIHBvd2VyIG9mZgorCQlUcmlnZ2VyIGV2ZW50czoJKHNwb250YW5lb3VzKQorCisKK0xhc3QgbWFuIGFuZCBGaXJzdCBtYW4gc2VsZWN0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgQ1BVIHdoaWNoIHBlcmZvcm1zIGNsdXN0ZXIgdGVhci1kb3duIG9wZXJhdGlvbnMgb24gdGhlIG91dGJvdW5kIHNpZGUKK2lzIGNvbW1vbmx5IHJlZmVycmVkIHRvIGFzIHRoZSAibGFzdCBtYW4iLgorCitUaGUgQ1BVIHdoaWNoIHBlcmZvcm1zIGNsdXN0ZXIgc2V0dXAgb24gdGhlIGluYm91bmQgc2lkZSBpcyBjb21tb25seQorcmVmZXJyZWQgdG8gYXMgdGhlICJmaXJzdCBtYW4iLgorCitUaGUgcmFjZSBhdm9pZGFuY2UgYWxnb3JpdGhtIGRvY3VtZW50ZWQgYWJvdmUgZG9lcyBub3QgcHJvdmlkZSBhCittZWNoYW5pc20gdG8gY2hvb3NlIHdoaWNoIENQVXMgc2hvdWxkIHBsYXkgdGhlc2Ugcm9sZXMuCisKKworTGFzdCBtYW46CisKK1doZW4gc2h1dHRpbmcgZG93biB0aGUgY2x1c3RlciwgYWxsIHRoZSBDUFVzIGludm9sdmVkIGFyZSBpbml0aWFsbHkKK2V4ZWN1dGluZyBMaW51eCBhbmQgaGVuY2UgY29oZXJlbnQuICBUaGVyZWZvcmUsIG9yZGluYXJ5IHNwaW5sb2NrcyBjYW4KK2JlIHVzZWQgdG8gc2VsZWN0IGEgbGFzdCBtYW4gc2FmZWx5LCBiZWZvcmUgdGhlIENQVXMgYmVjb21lCitub24tY29oZXJlbnQuCisKKworRmlyc3QgbWFuOgorCitCZWNhdXNlIENQVXMgbWF5IHBvd2VyIHVwIGFzeW5jaHJvbm91c2x5IGluIHJlc3BvbnNlIHRvIGV4dGVybmFsIHdha2UtdXAKK2V2ZW50cywgYSBkeW5hbWljIG1lY2hhbmlzbSBpcyBuZWVkZWQgdG8gbWFrZSBzdXJlIHRoYXQgb25seSBvbmUgQ1BVCithdHRlbXB0cyB0byBwbGF5IHRoZSBmaXJzdCBtYW4gcm9sZSBhbmQgZG8gdGhlIGNsdXN0ZXItbGV2ZWwKK2luaXRpYWxpc2F0aW9uOiBhbnkgb3RoZXIgQ1BVcyBtdXN0IHdhaXQgZm9yIHRoaXMgdG8gY29tcGxldGUgYmVmb3JlCitwcm9jZWVkaW5nLgorCitDbHVzdGVyLWxldmVsIGluaXRpYWxpc2F0aW9uIG1heSBpbnZvbHZlIGFjdGlvbnMgc3VjaCBhcyBjb25maWd1cmluZworY29oZXJlbmN5IGNvbnRyb2xzIGluIHRoZSBidXMgZmFicmljLgorCitUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBpbiBtY3BtX2hlYWQuUyB1c2VzIGEgc2VwYXJhdGUgbXV0dWFsIGV4Y2x1c2lvbgorbWVjaGFuaXNtIHRvIGRvIHRoaXMgYXJiaXRyYXRpb24uICBUaGlzIG1lY2hhbmlzbSBpcyBkb2N1bWVudGVkIGluCitkZXRhaWwgaW4gdmxvY2tzLnR4dC4KKworCitGZWF0dXJlcyBhbmQgTGltaXRhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbXBsZW1lbnRhdGlvbjoKKworCVRoZSBjdXJyZW50IEFSTS1iYXNlZCBpbXBsZW1lbnRhdGlvbiBpcyBzcGxpdCBiZXR3ZWVuCisJYXJjaC9hcm0vY29tbW9uL21jcG1faGVhZC5TIChsb3ctbGV2ZWwgaW5ib3VuZCBDUFUgb3BlcmF0aW9ucykgYW5kCisJYXJjaC9hcm0vY29tbW9uL21jcG1fZW50cnkuYyAoZXZlcnl0aGluZyBlbHNlKToKKworCV9fbWNwbV9jcHVfZ29pbmdfZG93bigpIHNpZ25hbHMgdGhlIHRyYW5zaXRpb24gb2YgYSBDUFUgdG8gdGhlCisJCUNQVV9HT0lOR19ET1dOIHN0YXRlLgorCisJX19tY3BtX2NwdV9kb3duKCkgc2lnbmFscyB0aGUgdHJhbnNpdGlvbiBvZiBhIENQVSB0byB0aGUgQ1BVX0RPV04KKwkJc3RhdGUuCisKKwlBIENQVSB0cmFuc2l0aW9ucyB0byBDUFVfQ09NSU5HX1VQIGFuZCB0aGVuIHRvIENQVV9VUCB2aWEgdGhlCisJCWxvdy1sZXZlbCBwb3dlci11cCBjb2RlIGluIG1jcG1faGVhZC5TLiAgVGhpcyBjb3VsZAorCQlpbnZvbHZlIENQVS1zcGVjaWZpYyBzZXR1cCBjb2RlLCBidXQgaW4gdGhlIGN1cnJlbnQKKwkJaW1wbGVtZW50YXRpb24gaXQgZG9lcyBub3QuCisKKwlfX21jcG1fb3V0Ym91bmRfZW50ZXJfY3JpdGljYWwoKSBhbmQgX19tY3BtX291dGJvdW5kX2xlYXZlX2NyaXRpY2FsKCkKKwkJaGFuZGxlIHRyYW5zaXRpb25zIGZyb20gQ0xVU1RFUl9VUCB0byBDTFVTVEVSX0dPSU5HX0RPV04KKwkJYW5kIGZyb20gdGhlcmUgdG8gQ0xVU1RFUl9ET1dOIG9yIGJhY2sgdG8gQ0xVU1RFUl9VUCAoaW4KKwkJdGhlIGNhc2Ugb2YgYW4gYWJvcnRlZCBjbHVzdGVyIHBvd2VyLWRvd24pLgorCisJCVRoZXNlIGZ1bmN0aW9ucyBhcmUgbW9yZSBjb21wbGV4IHRoYW4gdGhlIF9fbWNwbV9jcHVfKigpCisJCWZ1bmN0aW9ucyBkdWUgdG8gdGhlIGV4dHJhIGludGVyLUNQVSBjb29yZGluYXRpb24gd2hpY2gKKwkJaXMgbmVlZGVkIGZvciBzYWZlIHRyYW5zaXRpb25zIGF0IHRoZSBjbHVzdGVyIGxldmVsLgorCisJQSBjbHVzdGVyIHRyYW5zaXRpb25zIGZyb20gQ0xVU1RFUl9ET1dOIGJhY2sgdG8gQ0xVU1RFUl9VUCB2aWEKKwkJdGhlIGxvdy1sZXZlbCBwb3dlci11cCBjb2RlIGluIG1jcG1faGVhZC5TLiAgVGhpcworCQl0eXBpY2FsbHkgaW52b2x2ZXMgcGxhdGZvcm0tc3BlY2lmaWMgc2V0dXAgY29kZSwKKwkJcHJvdmlkZWQgYnkgdGhlIHBsYXRmb3JtLXNwZWNpZmljIHBvd2VyX3VwX3NldHVwCisJCWZ1bmN0aW9uIHJlZ2lzdGVyZWQgdmlhIG1jcG1fc3luY19pbml0LgorCitEZWVwIHRvcG9sb2dpZXM6CisKKwlBcyBjdXJyZW50bHkgZGVzY3JpYmVkIGFuZCBpbXBsZW1lbnRlZCwgdGhlIGFsZ29yaXRobSBkb2VzIG5vdAorCXN1cHBvcnQgQ1BVIHRvcG9sb2dpZXMgaW52b2x2aW5nIG1vcmUgdGhhbiB0d28gbGV2ZWxzIChpLmUuLAorCWNsdXN0ZXJzIG9mIGNsdXN0ZXJzIGFyZSBub3Qgc3VwcG9ydGVkKS4gIFRoZSBhbGdvcml0aG0gY291bGQgYmUKKwlleHRlbmRlZCBieSByZXBsaWNhdGluZyB0aGUgY2x1c3Rlci1sZXZlbCBzdGF0ZXMgZm9yIHRoZQorCWFkZGl0aW9uYWwgdG9wb2xvZ2ljYWwgbGV2ZWxzLCBhbmQgbW9kaWZ5aW5nIHRoZSB0cmFuc2l0aW9uCisJcnVsZXMgZm9yIHRoZSBpbnRlcm1lZGlhdGUgKG5vbi1vdXRlcm1vc3QpIGNsdXN0ZXIgbGV2ZWxzLgorCisKK0NvbG9waG9uCistLS0tLS0tLQorCitPcmlnaW5hbGx5IGNyZWF0ZWQgYW5kIGRvY3VtZW50ZWQgYnkgRGF2ZSBNYXJ0aW4gZm9yIExpbmFybyBMaW1pdGVkLCBpbgorY29sbGFib3JhdGlvbiB3aXRoIE5pY29sYXMgUGl0cmUgYW5kIEFjaGluIEd1cHRhLgorCitDb3B5cmlnaHQgKEMpIDIwMTItMjAxMyAgTGluYXJvIExpbWl0ZWQKK0Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBWZXJzaW9uIDIgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworTGljZW5zZSwgYXMgZGVmaW5lZCBpbiBsaW51eC9DT1BZSU5HLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vZmlybXdhcmUudHh0IGIvRG9jdW1lbnRhdGlvbi9hcm0vZmlybXdhcmUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNjcxM2EKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9maXJtd2FyZS50eHQKQEAgLTAsMCArMSw3MCBAQAorSW50ZXJmYWNlIGZvciByZWdpc3RlcmluZyBhbmQgY2FsbGluZyBmaXJtd2FyZS1zcGVjaWZpYyBvcGVyYXRpb25zIGZvciBBUk0uCistLS0tCitXcml0dGVuIGJ5IFRvbWFzeiBGaWdhIDx0LmZpZ2FAc2Ftc3VuZy5jb20+CisKK1NvbWUgYm9hcmRzIGFyZSBydW5uaW5nIHdpdGggc2VjdXJlIGZpcm13YXJlIHJ1bm5pbmcgaW4gVHJ1c3Rab25lIHNlY3VyZQord29ybGQsIHdoaWNoIGNoYW5nZXMgdGhlIHdheSBzb21lIHRoaW5ncyBoYXZlIHRvIGJlIGluaXRpYWxpemVkLiBUaGlzIG1ha2VzCithIG5lZWQgdG8gcHJvdmlkZSBhbiBpbnRlcmZhY2UgZm9yIHN1Y2ggcGxhdGZvcm1zIHRvIHNwZWNpZnkgYXZhaWxhYmxlIGZpcm13YXJlCitvcGVyYXRpb25zIGFuZCBjYWxsIHRoZW0gd2hlbiBuZWVkZWQuCisKK0Zpcm13YXJlIG9wZXJhdGlvbnMgY2FuIGJlIHNwZWNpZmllZCBieSBmaWxsaW5nIGluIGEgc3RydWN0IGZpcm13YXJlX29wcword2l0aCBhcHByb3ByaWF0ZSBjYWxsYmFja3MgYW5kIHRoZW4gcmVnaXN0ZXJpbmcgaXQgd2l0aCByZWdpc3Rlcl9maXJtd2FyZV9vcHMoKQorZnVuY3Rpb24uCisKKwl2b2lkIHJlZ2lzdGVyX2Zpcm13YXJlX29wcyhjb25zdCBzdHJ1Y3QgZmlybXdhcmVfb3BzICpvcHMpCisKK1RoZSBvcHMgcG9pbnRlciBtdXN0IGJlIG5vbi1OVUxMLiBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHN0cnVjdCBmaXJtd2FyZV9vcHMKK2FuZCBpdHMgbWVtYmVycyBjYW4gYmUgZm91bmQgaW4gYXJjaC9hcm0vaW5jbHVkZS9hc20vZmlybXdhcmUuaCBoZWFkZXIuCisKK1RoZXJlIGlzIGEgZGVmYXVsdCwgZW1wdHkgc2V0IG9mIG9wZXJhdGlvbnMgcHJvdmlkZWQsIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8KK3NldCBhbnl0aGluZyBpZiBwbGF0Zm9ybSBkb2VzIG5vdCByZXF1aXJlIGZpcm13YXJlIG9wZXJhdGlvbnMuCisKK1RvIGNhbGwgYSBmaXJtd2FyZSBvcGVyYXRpb24sIGEgaGVscGVyIG1hY3JvIGlzIHByb3ZpZGVkCisKKwkjZGVmaW5lIGNhbGxfZmlybXdhcmVfb3Aob3AsIC4uLikJCQkJXAorCQkoKGZpcm13YXJlX29wcy0+b3ApID8gZmlybXdhcmVfb3BzLT5vcChfX1ZBX0FSR1NfXykgOiAoLUVOT1NZUykpCisKK3RoZSBtYWNybyBjaGVja3MgaWYgdGhlIG9wZXJhdGlvbiBpcyBwcm92aWRlZCBhbmQgY2FsbHMgaXQgb3Igb3RoZXJ3aXNlIHJldHVybnMKKy1FTk9TWVMgdG8gc2lnbmFsIHRoYXQgZ2l2ZW4gb3BlcmF0aW9uIGlzIG5vdCBhdmFpbGFibGUgKGZvciBleGFtcGxlLCB0byBhbGxvdworZmFsbGJhY2sgdG8gbGVnYWN5IG9wZXJhdGlvbikuCisKK0V4YW1wbGUgb2YgcmVnaXN0ZXJpbmcgZmlybXdhcmUgb3BlcmF0aW9uczoKKworCS8qIGJvYXJkIGZpbGUgKi8KKworCXN0YXRpYyBpbnQgcGxhdGZvcm1YX2RvX2lkbGUodm9pZCkKKwl7CisJCS8qIHRlbGwgcGxhdGZvcm1YIGZpcm13YXJlIHRvIGVudGVyIGlkbGUgKi8KKwkJcmV0dXJuIDA7CisJfQorCisJc3RhdGljIGludCBwbGF0Zm9ybVhfY3B1X2Jvb3QoaW50IGkpCisJeworCQkvKiB0ZWxsIHBsYXRmb3JtWCBmaXJtd2FyZSB0byBib290IENQVSBpICovCisJCXJldHVybiAwOworCX0KKworCXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlybXdhcmVfb3BzIHBsYXRmb3JtWF9maXJtd2FyZV9vcHMgPSB7CisJCS5kb19pZGxlICAgICAgICA9IGV4eW5vc19kb19pZGxlLAorCQkuY3B1X2Jvb3QgICAgICAgPSBleHlub3NfY3B1X2Jvb3QsCisJCS8qIG90aGVyIG9wZXJhdGlvbnMgbm90IGF2YWlsYWJsZSBvbiBwbGF0Zm9ybVggKi8KKwl9OworCisJLyogaW5pdF9lYXJseSBjYWxsYmFjayBvZiBtYWNoaW5lIGRlc2NyaXB0b3IgKi8KKwlzdGF0aWMgdm9pZCBfX2luaXQgYm9hcmRfaW5pdF9lYXJseSh2b2lkKQorCXsKKwkJcmVnaXN0ZXJfZmlybXdhcmVfb3BzKCZwbGF0Zm9ybVhfZmlybXdhcmVfb3BzKTsKKwl9CisKK0V4YW1wbGUgb2YgdXNpbmcgYSBmaXJtd2FyZSBvcGVyYXRpb246CisKKwkvKiBzb21lIHBsYXRmb3JtIGNvZGUsIGUuZy4gU01QIGluaXRpYWxpemF0aW9uICovCisKKwlfX3Jhd193cml0ZWwodmlydF90b19waHlzKGV4eW5vczRfc2Vjb25kYXJ5X3N0YXJ0dXApLAorCQlDUFUxX0JPT1RfUkVHKTsKKworCS8qIENhbGwgRXh5bm9zIHNwZWNpZmljIHNtYyBjYWxsICovCisJaWYgKGNhbGxfZmlybXdhcmVfb3AoY3B1X2Jvb3QsIGNwdSkgPT0gLUVOT1NZUykKKwkJY3B1X2Jvb3RfbGVnYWN5KC4uLik7IC8qIFRyeSBsZWdhY3kgd2F5ICovCisKKwlnaWNfcmFpc2Vfc29mdGlycShjcHVtYXNrX29mKGNwdSksIDEpOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0va2VybmVsX21vZGVfbmVvbi50eHQgYi9Eb2N1bWVudGF0aW9uL2FybS9rZXJuZWxfbW9kZV9uZW9uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjU0NTI3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0va2VybmVsX21vZGVfbmVvbi50eHQKQEAgLTAsMCArMSwxMjEgQEAKK0tlcm5lbCBtb2RlIE5FT04KKz09PT09PT09PT09PT09PT0KKworVEw7RFIgc3VtbWFyeQorLS0tLS0tLS0tLS0tLQorKiBVc2Ugb25seSBORU9OIGluc3RydWN0aW9ucywgb3IgVkZQIGluc3RydWN0aW9ucyB0aGF0IGRvbid0IHJlbHkgb24gc3VwcG9ydAorICBjb2RlCisqIElzb2xhdGUgeW91ciBORU9OIGNvZGUgaW4gYSBzZXBhcmF0ZSBjb21waWxhdGlvbiB1bml0LCBhbmQgY29tcGlsZSBpdCB3aXRoCisgICctbWZwdT1uZW9uIC1tZmxvYXQtYWJpPXNvZnRmcCcKKyogUHV0IGtlcm5lbF9uZW9uX2JlZ2luKCkgYW5kIGtlcm5lbF9uZW9uX2VuZCgpIGNhbGxzIGFyb3VuZCB0aGUgY2FsbHMgaW50byB5b3VyCisgIE5FT04gY29kZQorKiBEb24ndCBzbGVlcCBpbiB5b3VyIE5FT04gY29kZSwgYW5kIGJlIGF3YXJlIHRoYXQgaXQgd2lsbCBiZSBleGVjdXRlZCB3aXRoCisgIHByZWVtcHRpb24gZGlzYWJsZWQKKworCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLQorSXQgaXMgcG9zc2libGUgdG8gdXNlIE5FT04gaW5zdHJ1Y3Rpb25zIChhbmQgaW4gc29tZSBjYXNlcywgVkZQIGluc3RydWN0aW9ucykgaW4KK2NvZGUgdGhhdCBydW5zIGluIGtlcm5lbCBtb2RlLiBIb3dldmVyLCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhlIE5FT04vVkZQCityZWdpc3RlciBmaWxlIGlzIG5vdCBwcmVzZXJ2ZWQgYW5kIHJlc3RvcmVkIGF0IGV2ZXJ5IGNvbnRleHQgc3dpdGNoIG9yIHRha2VuCitleGNlcHRpb24gbGlrZSB0aGUgbm9ybWFsIHJlZ2lzdGVyIGZpbGUgaXMsIHNvIHNvbWUgbWFudWFsIGludGVydmVudGlvbiBpcworcmVxdWlyZWQuIEZ1cnRoZXJtb3JlLCBzcGVjaWFsIGNhcmUgaXMgcmVxdWlyZWQgZm9yIGNvZGUgdGhhdCBtYXkgc2xlZXAgW2kuZS4sCittYXkgY2FsbCBzY2hlZHVsZSgpXSwgYXMgTkVPTiBvciBWRlAgaW5zdHJ1Y3Rpb25zIHdpbGwgYmUgZXhlY3V0ZWQgaW4gYQorbm9uLXByZWVtcHRpYmxlIHNlY3Rpb24gZm9yIHJlYXNvbnMgb3V0bGluZWQgYmVsb3cuCisKKworTGF6eSBwcmVzZXJ2ZSBhbmQgcmVzdG9yZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIE5FT04vVkZQIHJlZ2lzdGVyIGZpbGUgaXMgbWFuYWdlZCB1c2luZyBsYXp5IHByZXNlcnZlIChvbiBVUCBzeXN0ZW1zKSBhbmQKK2xhenkgcmVzdG9yZSAob24gYm90aCBTTVAgYW5kIFVQIHN5c3RlbXMpLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHJlZ2lzdGVyIGZpbGUgaXMKK2tlcHQgJ2xpdmUnLCBhbmQgaXMgb25seSBwcmVzZXJ2ZWQgYW5kIHJlc3RvcmVkIHdoZW4gbXVsdGlwbGUgdGFza3MgYXJlCitjb250ZW5kaW5nIGZvciB0aGUgTkVPTi9WRlAgdW5pdCAob3IsIGluIHRoZSBTTVAgY2FzZSwgd2hlbiBhIHRhc2sgbWlncmF0ZXMgdG8KK2Fub3RoZXIgY29yZSkuIExhenkgcmVzdG9yZSBpcyBpbXBsZW1lbnRlZCBieSBkaXNhYmxpbmcgdGhlIE5FT04vVkZQIHVuaXQgYWZ0ZXIKK2V2ZXJ5IGNvbnRleHQgc3dpdGNoLCByZXN1bHRpbmcgaW4gYSB0cmFwIHdoZW4gc3Vic2VxdWVudGx5IGEgTkVPTi9WRlAKK2luc3RydWN0aW9uIGlzIGlzc3VlZCwgYWxsb3dpbmcgdGhlIGtlcm5lbCB0byBzdGVwIGluIGFuZCBwZXJmb3JtIHRoZSByZXN0b3JlIGlmCituZWNlc3NhcnkuCisKK0FueSB1c2Ugb2YgdGhlIE5FT04vVkZQIHVuaXQgaW4ga2VybmVsIG1vZGUgc2hvdWxkIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGlzLCBzbworaXQgaXMgcmVxdWlyZWQgdG8gZG8gYW4gJ2VhZ2VyJyBwcmVzZXJ2ZSBvZiB0aGUgTkVPTi9WRlAgcmVnaXN0ZXIgZmlsZSwgYW5kCitlbmFibGUgdGhlIE5FT04vVkZQIHVuaXQgZXhwbGljaXRseSBzbyBubyBleGNlcHRpb25zIGFyZSBnZW5lcmF0ZWQgb24gZmlyc3QKK3N1YnNlcXVlbnQgdXNlLiBUaGlzIGlzIGhhbmRsZWQgYnkgdGhlIGZ1bmN0aW9uIGtlcm5lbF9uZW9uX2JlZ2luKCksIHdoaWNoCitzaG91bGQgYmUgY2FsbGVkIGJlZm9yZSBhbnkga2VybmVsIG1vZGUgTkVPTiBvciBWRlAgaW5zdHJ1Y3Rpb25zIGFyZSBpc3N1ZWQuCitMaWtld2lzZSwgdGhlIE5FT04vVkZQIHVuaXQgc2hvdWxkIGJlIGRpc2FibGVkIGFnYWluIGFmdGVyIHVzZSB0byBtYWtlIHN1cmUgdXNlcgorbW9kZSB3aWxsIGhpdCB0aGUgbGF6eSByZXN0b3JlIHRyYXAgdXBvbiBuZXh0IHVzZS4gVGhpcyBpcyBoYW5kbGVkIGJ5IHRoZQorZnVuY3Rpb24ga2VybmVsX25lb25fZW5kKCkuCisKKworSW50ZXJydXB0aW9ucyBpbiBrZXJuZWwgbW9kZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRm9yIHJlYXNvbnMgb2YgcGVyZm9ybWFuY2UgYW5kIHNpbXBsaWNpdHksIGl0IHdhcyBkZWNpZGVkIHRoYXQgdGhlcmUgc2hhbGwgYmUgbm8KK3ByZXNlcnZlL3Jlc3RvcmUgbWVjaGFuaXNtIGZvciB0aGUga2VybmVsIG1vZGUgTkVPTi9WRlAgcmVnaXN0ZXIgY29udGVudHMuIFRoaXMKK2ltcGxpZXMgdGhhdCBpbnRlcnJ1cHRpb25zIG9mIGEga2VybmVsIG1vZGUgTkVPTiBzZWN0aW9uIGNhbiBvbmx5IGJlIGFsbG93ZWQgaWYKK3RoZXkgYXJlIGd1YXJhbnRlZWQgbm90IHRvIHRvdWNoIHRoZSBORU9OL1ZGUCByZWdpc3RlcnMuIEZvciB0aGlzIHJlYXNvbiwgdGhlCitmb2xsb3dpbmcgcnVsZXMgYW5kIHJlc3RyaWN0aW9ucyBhcHBseSBpbiB0aGUga2VybmVsOgorKiBORU9OL1ZGUCBjb2RlIGlzIG5vdCBhbGxvd2VkIGluIGludGVycnVwdCBjb250ZXh0OworKiBORU9OL1ZGUCBjb2RlIGlzIG5vdCBhbGxvd2VkIHRvIHNsZWVwOworKiBORU9OL1ZGUCBjb2RlIGlzIGV4ZWN1dGVkIHdpdGggcHJlZW1wdGlvbiBkaXNhYmxlZC4KKworSWYgbGF0ZW5jeSBpcyBhIGNvbmNlcm4sIGl0IGlzIHBvc3NpYmxlIHRvIHB1dCBiYWNrIHRvIGJhY2sgY2FsbHMgdG8KK2tlcm5lbF9uZW9uX2VuZCgpIGFuZCBrZXJuZWxfbmVvbl9iZWdpbigpIGluIHBsYWNlcyBpbiB5b3VyIGNvZGUgd2hlcmUgbm9uZSBvZgordGhlIE5FT04gcmVnaXN0ZXJzIGFyZSBsaXZlLiAoQWRkaXRpb25hbCBjYWxscyB0byBrZXJuZWxfbmVvbl9iZWdpbigpIHNob3VsZCBiZQorcmVhc29uYWJseSBjaGVhcCBpZiBubyBjb250ZXh0IHN3aXRjaCBvY2N1cnJlZCBpbiB0aGUgbWVhbnRpbWUpCisKKworVkZQIGFuZCBzdXBwb3J0IGNvZGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCitFYXJsaWVyIHZlcnNpb25zIG9mIFZGUCAocHJpb3IgdG8gdmVyc2lvbiAzKSByZWx5IG9uIHNvZnR3YXJlIHN1cHBvcnQgZm9yIHRoaW5ncworbGlrZSBJRUVFLTc1NCBjb21wbGlhbnQgdW5kZXJmbG93IGhhbmRsaW5nIGV0Yy4gV2hlbiB0aGUgVkZQIHVuaXQgbmVlZHMgc3VjaAorc29mdHdhcmUgYXNzaXN0YW5jZSwgaXQgc2lnbmFscyB0aGUga2VybmVsIGJ5IHJhaXNpbmcgYW4gdW5kZWZpbmVkIGluc3RydWN0aW9uCitleGNlcHRpb24uIFRoZSBrZXJuZWwgcmVzcG9uZHMgYnkgaW5zcGVjdGluZyB0aGUgVkZQIGNvbnRyb2wgcmVnaXN0ZXJzIGFuZCB0aGUKK2N1cnJlbnQgaW5zdHJ1Y3Rpb24gYW5kIGFyZ3VtZW50cywgYW5kIGVtdWxhdGVzIHRoZSBpbnN0cnVjdGlvbiBpbiBzb2Z0d2FyZS4KKworU3VjaCBzb2Z0d2FyZSBhc3Npc3RhbmNlIGlzIGN1cnJlbnRseSBub3QgaW1wbGVtZW50ZWQgZm9yIFZGUCBpbnN0cnVjdGlvbnMKK2V4ZWN1dGVkIGluIGtlcm5lbCBtb2RlLiBJZiBzdWNoIGEgY29uZGl0aW9uIGlzIGVuY291bnRlcmVkLCB0aGUga2VybmVsIHdpbGwKK2ZhaWwgYW5kIGdlbmVyYXRlIGFuIE9PUFMuCisKKworU2VwYXJhdGluZyBORU9OIGNvZGUgZnJvbSBvcmRpbmFyeSBjb2RlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBjb21waWxlciBpcyBub3QgYXdhcmUgb2YgdGhlIHNwZWNpYWwgc2lnbmlmaWNhbmNlIG9mIGtlcm5lbF9uZW9uX2JlZ2luKCkgYW5kCitrZXJuZWxfbmVvbl9lbmQoKSwgaS5lLiwgdGhhdCBpdCBpcyBvbmx5IGFsbG93ZWQgdG8gaXNzdWUgTkVPTi9WRlAgaW5zdHJ1Y3Rpb25zCitiZXR3ZWVuIGNhbGxzIHRvIHRoZXNlIHJlc3BlY3RpdmUgZnVuY3Rpb25zLiBGdXJ0aGVybW9yZSwgR0NDIG1heSBnZW5lcmF0ZSBORU9OCitpbnN0cnVjdGlvbnMgb2YgaXRzIG93biBhdCAtTzMgbGV2ZWwgaWYgLW1mcHU9bmVvbiBpcyBzZWxlY3RlZCwgYW5kIGV2ZW4gaWYgdGhlCitrZXJuZWwgaXMgY3VycmVudGx5IGNvbXBpbGVkIGF0IC1PMiwgZnV0dXJlIGNoYW5nZXMgbWF5IHJlc3VsdCBpbiBORU9OL1ZGUAoraW5zdHJ1Y3Rpb25zIGFwcGVhcmluZyBpbiB1bmV4cGVjdGVkIHBsYWNlcyBpZiBubyBzcGVjaWFsIGNhcmUgaXMgdGFrZW4uCisKK1RoZXJlZm9yZSwgdGhlIHJlY29tbWVuZGVkIGFuZCBvbmx5IHN1cHBvcnRlZCB3YXkgb2YgdXNpbmcgTkVPTi9WRlAgaW4gdGhlCitrZXJuZWwgaXMgYnkgYWRoZXJpbmcgdG8gdGhlIGZvbGxvd2luZyBydWxlczoKKyogaXNvbGF0ZSB0aGUgTkVPTiBjb2RlIGluIGEgc2VwYXJhdGUgY29tcGlsYXRpb24gdW5pdCBhbmQgY29tcGlsZSBpdCB3aXRoCisgICctbWZwdT1uZW9uIC1tZmxvYXQtYWJpPXNvZnRmcCc7CisqIGlzc3VlIHRoZSBjYWxscyB0byBrZXJuZWxfbmVvbl9iZWdpbigpLCBrZXJuZWxfbmVvbl9lbmQoKSBhcyB3ZWxsIGFzIHRoZSBjYWxscworICBpbnRvIHRoZSB1bml0IGNvbnRhaW5pbmcgdGhlIE5FT04gY29kZSBmcm9tIGEgY29tcGlsYXRpb24gdW5pdCB3aGljaCBpcyAqbm90KgorICBidWlsdCB3aXRoIHRoZSBHQ0MgZmxhZyAnLW1mcHU9bmVvbicgc2V0LgorCitBcyB0aGUga2VybmVsIGlzIGNvbXBpbGVkIHdpdGggJy1tc29mdC1mbG9hdCcsIHRoZSBhYm92ZSB3aWxsIGd1YXJhbnRlZSB0aGF0Citib3RoIE5FT04gYW5kIFZGUCBpbnN0cnVjdGlvbnMgd2lsbCBvbmx5IGV2ZXIgYXBwZWFyIGluIGRlc2lnbmF0ZWQgY29tcGlsYXRpb24KK3VuaXRzIGF0IGFueSBvcHRpbWl6YXRpb24gbGV2ZWwuCisKKworTkVPTiBhc3NlbWJsZXIKKy0tLS0tLS0tLS0tLS0tCitORU9OIGFzc2VtYmxlciBpcyBzdXBwb3J0ZWQgd2l0aCBubyBhZGRpdGlvbmFsIGNhdmVhdHMgYXMgbG9uZyBhcyB0aGUgcnVsZXMKK2Fib3ZlIGFyZSBmb2xsb3dlZC4KKworCitORU9OIGNvZGUgZ2VuZXJhdGVkIGJ5IEdDQworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBHQ0Mgb3B0aW9uIC1mdHJlZS12ZWN0b3JpemUgKGltcGxpZWQgYnkgLU8zKSB0cmllcyB0byBleHBsb2l0IGltcGxpY2l0CitwYXJhbGxlbGlzbSwgYW5kIGdlbmVyYXRlcyBORU9OIGNvZGUgZnJvbSBvcmRpbmFyeSBDIHNvdXJjZSBjb2RlLiBUaGlzIGlzIGZ1bGx5CitzdXBwb3J0ZWQgYXMgbG9uZyBhcyB0aGUgcnVsZXMgYWJvdmUgYXJlIGZvbGxvd2VkLgorCisKK05FT04gaW50cmluc2ljcworLS0tLS0tLS0tLS0tLS0tCitORU9OIGludHJpbnNpY3MgYXJlIGFsc28gc3VwcG9ydGVkLiBIb3dldmVyLCBhcyBjb2RlIHVzaW5nIE5FT04gaW50cmluc2ljcworcmVsaWVzIG9uIHRoZSBHQ0MgaGVhZGVyIDxhcm1fbmVvbi5oPiwgKHdoaWNoICNpbmNsdWRlcyA8c3RkaW50Lmg+KSwgeW91IHNob3VsZAorb2JzZXJ2ZSB0aGUgZm9sbG93aW5nIGluIGFkZGl0aW9uIHRvIHRoZSBydWxlcyBhYm92ZToKKyogQ29tcGlsZSB0aGUgdW5pdCBjb250YWluaW5nIHRoZSBORU9OIGludHJpbnNpY3Mgd2l0aCAnLWZmcmVlc3RhbmRpbmcnIHNvIEdDQworICB1c2VzIGl0cyBidWlsdGluIHZlcnNpb24gb2YgPHN0ZGludC5oPiAodGhpcyBpcyBhIEM5OSBoZWFkZXIgd2hpY2ggdGhlIGtlcm5lbAorICBkb2VzIG5vdCBzdXBwbHkpOworKiBJbmNsdWRlIDxhcm1fbmVvbi5oPiBsYXN0LCBvciBhdCBsZWFzdCBhZnRlciA8bGludXgvdHlwZXMuaD4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJtL2tlcm5lbF91c2VyX2hlbHBlcnMudHh0IGIvRG9jdW1lbnRhdGlvbi9hcm0va2VybmVsX3VzZXJfaGVscGVycy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY3MzU5NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL2tlcm5lbF91c2VyX2hlbHBlcnMudHh0CkBAIC0wLDAgKzEsMjY3IEBACitLZXJuZWwtcHJvdmlkZWQgVXNlciBIZWxwZXJzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZXNlIGFyZSBzZWdtZW50IG9mIGtlcm5lbCBwcm92aWRlZCB1c2VyIGNvZGUgcmVhY2hhYmxlIGZyb20gdXNlciBzcGFjZQorYXQgYSBmaXhlZCBhZGRyZXNzIGluIGtlcm5lbCBtZW1vcnkuICBUaGlzIGlzIHVzZWQgdG8gcHJvdmlkZSB1c2VyIHNwYWNlCit3aXRoIHNvbWUgb3BlcmF0aW9ucyB3aGljaCByZXF1aXJlIGtlcm5lbCBoZWxwIGJlY2F1c2Ugb2YgdW5pbXBsZW1lbnRlZAorbmF0aXZlIGZlYXR1cmUgYW5kL29yIGluc3RydWN0aW9ucyBpbiBtYW55IEFSTSBDUFVzLiBUaGUgaWRlYSBpcyBmb3IgdGhpcworY29kZSB0byBiZSBleGVjdXRlZCBkaXJlY3RseSBpbiB1c2VyIG1vZGUgZm9yIGJlc3QgZWZmaWNpZW5jeSBidXQgd2hpY2ggaXMKK3RvbyBpbnRpbWF0ZSB3aXRoIHRoZSBrZXJuZWwgY291bnRlciBwYXJ0IHRvIGJlIGxlZnQgdG8gdXNlciBsaWJyYXJpZXMuCitJbiBmYWN0IHRoaXMgY29kZSBtaWdodCBldmVuIGRpZmZlciBmcm9tIG9uZSBDUFUgdG8gYW5vdGhlciBkZXBlbmRpbmcgb24KK3RoZSBhdmFpbGFibGUgaW5zdHJ1Y3Rpb24gc2V0LCBvciB3aGV0aGVyIGl0IGlzIGEgU01QIHN5c3RlbXMuIEluIG90aGVyCit3b3JkcywgdGhlIGtlcm5lbCByZXNlcnZlcyB0aGUgcmlnaHQgdG8gY2hhbmdlIHRoaXMgY29kZSBhcyBuZWVkZWQgd2l0aG91dAord2FybmluZy4gT25seSB0aGUgZW50cnkgcG9pbnRzIGFuZCB0aGVpciByZXN1bHRzIGFzIGRvY3VtZW50ZWQgaGVyZSBhcmUKK2d1YXJhbnRlZWQgdG8gYmUgc3RhYmxlLgorCitUaGlzIGlzIGRpZmZlcmVudCBmcm9tIChidXQgZG9lc24ndCBwcmVjbHVkZSkgYSBmdWxsIGJsb3duIFZEU08KK2ltcGxlbWVudGF0aW9uLCBob3dldmVyIGEgVkRTTyB3b3VsZCBwcmV2ZW50IHNvbWUgYXNzZW1ibHkgdHJpY2tzIHdpdGgKK2NvbnN0YW50cyB0aGF0IGFsbG93cyBmb3IgZWZmaWNpZW50IGJyYW5jaGluZyB0byB0aG9zZSBjb2RlIHNlZ21lbnRzLiBBbmQKK3NpbmNlIHRob3NlIGNvZGUgc2VnbWVudHMgb25seSB1c2UgYSBmZXcgY3ljbGVzIGJlZm9yZSByZXR1cm5pbmcgdG8gdXNlcgorY29kZSwgdGhlIG92ZXJoZWFkIG9mIGEgVkRTTyBpbmRpcmVjdCBmYXIgY2FsbCB3b3VsZCBhZGQgYSBtZWFzdXJhYmxlCitvdmVyaGVhZCB0byBzdWNoIG1pbmltYWxpc3RpYyBvcGVyYXRpb25zLgorCitVc2VyIHNwYWNlIGlzIGV4cGVjdGVkIHRvIGJ5cGFzcyB0aG9zZSBoZWxwZXJzIGFuZCBpbXBsZW1lbnQgdGhvc2UgdGhpbmdzCitpbmxpbmUgKGVpdGhlciBpbiB0aGUgY29kZSBlbWl0dGVkIGRpcmVjdGx5IGJ5IHRoZSBjb21waWxlciwgb3IgcGFydCBvZgordGhlIGltcGxlbWVudGF0aW9uIG9mIGEgbGlicmFyeSBjYWxsKSB3aGVuIG9wdGltaXppbmcgZm9yIGEgcmVjZW50IGVub3VnaAorcHJvY2Vzc29yIHRoYXQgaGFzIHRoZSBuZWNlc3NhcnkgbmF0aXZlIHN1cHBvcnQsIGJ1dCBvbmx5IGlmIHJlc3VsdGluZworYmluYXJpZXMgYXJlIGFscmVhZHkgdG8gYmUgaW5jb21wYXRpYmxlIHdpdGggZWFybGllciBBUk0gcHJvY2Vzc29ycyBkdWUgdG8KK3VzYWdlIG9mIHNpbWlsYXIgbmF0aXZlIGluc3RydWN0aW9ucyBmb3Igb3RoZXIgdGhpbmdzLiAgSW4gb3RoZXIgd29yZHMKK2Rvbid0IG1ha2UgYmluYXJpZXMgdW5hYmxlIHRvIHJ1biBvbiBlYXJsaWVyIHByb2Nlc3NvcnMganVzdCBmb3IgdGhlIHNha2UKK29mIG5vdCB1c2luZyB0aGVzZSBrZXJuZWwgaGVscGVycyBpZiB5b3VyIGNvbXBpbGVkIGNvZGUgaXMgbm90IGdvaW5nIHRvCit1c2UgbmV3IGluc3RydWN0aW9ucyBmb3Igb3RoZXIgcHVycG9zZS4KKworTmV3IGhlbHBlcnMgbWF5IGJlIGFkZGVkIG92ZXIgdGltZSwgc28gYW4gb2xkZXIga2VybmVsIG1heSBiZSBtaXNzaW5nIHNvbWUKK2hlbHBlcnMgcHJlc2VudCBpbiBhIG5ld2VyIGtlcm5lbC4gIEZvciB0aGlzIHJlYXNvbiwgcHJvZ3JhbXMgbXVzdCBjaGVjawordGhlIHZhbHVlIG9mIF9fa3VzZXJfaGVscGVyX3ZlcnNpb24gKHNlZSBiZWxvdykgYmVmb3JlIGFzc3VtaW5nIHRoYXQgaXQgaXMKK3NhZmUgdG8gY2FsbCBhbnkgcGFydGljdWxhciBoZWxwZXIuICBUaGlzIGNoZWNrIHNob3VsZCBpZGVhbGx5IGJlCitwZXJmb3JtZWQgb25seSBvbmNlIGF0IHByb2Nlc3Mgc3RhcnR1cCB0aW1lLCBhbmQgZXhlY3V0aW9uIGFib3J0ZWQgZWFybHkKK2lmIHRoZSByZXF1aXJlZCBoZWxwZXJzIGFyZSBub3QgcHJvdmlkZWQgYnkgdGhlIGtlcm5lbCB2ZXJzaW9uIHRoYXQKK3Byb2Nlc3MgaXMgcnVubmluZyBvbi4KKwora3VzZXJfaGVscGVyX3ZlcnNpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0xvY2F0aW9uOgkweGZmZmYwZmZjCisKK1JlZmVyZW5jZSBkZWNsYXJhdGlvbjoKKworICBleHRlcm4gaW50MzJfdCBfX2t1c2VyX2hlbHBlcl92ZXJzaW9uOworCitEZWZpbml0aW9uOgorCisgIFRoaXMgZmllbGQgY29udGFpbnMgdGhlIG51bWJlciBvZiBoZWxwZXJzIGJlaW5nIGltcGxlbWVudGVkIGJ5IHRoZQorICBydW5uaW5nIGtlcm5lbC4gIFVzZXIgc3BhY2UgbWF5IHJlYWQgdGhpcyB0byBkZXRlcm1pbmUgdGhlIGF2YWlsYWJpbGl0eQorICBvZiBhIHBhcnRpY3VsYXIgaGVscGVyLgorCitVc2FnZSBleGFtcGxlOgorCisjZGVmaW5lIF9fa3VzZXJfaGVscGVyX3ZlcnNpb24gKCooaW50MzJfdCAqKTB4ZmZmZjBmZmMpCisKK3ZvaWQgY2hlY2tfa3VzZXJfdmVyc2lvbih2b2lkKQoreworCWlmIChfX2t1c2VyX2hlbHBlcl92ZXJzaW9uIDwgMikgeworCQlmcHJpbnRmKHN0ZGVyciwgImNhbid0IGRvIGF0b21pYyBvcGVyYXRpb25zLCBrZXJuZWwgdG9vIG9sZFxuIik7CisJCWFib3J0KCk7CisJfQorfQorCitOb3RlczoKKworICBVc2VyIHNwYWNlIG1heSBhc3N1bWUgdGhhdCB0aGUgdmFsdWUgb2YgdGhpcyBmaWVsZCBuZXZlciBjaGFuZ2VzCisgIGR1cmluZyB0aGUgbGlmZXRpbWUgb2YgYW55IHNpbmdsZSBwcm9jZXNzLiAgVGhpcyBtZWFucyB0aGF0IHRoaXMKKyAgZmllbGQgY2FuIGJlIHJlYWQgb25jZSBkdXJpbmcgdGhlIGluaXRpYWxpc2F0aW9uIG9mIGEgbGlicmFyeSBvcgorICBzdGFydHVwIHBoYXNlIG9mIGEgcHJvZ3JhbS4KKwora3VzZXJfZ2V0X3RscworLS0tLS0tLS0tLS0tLQorCitMb2NhdGlvbjoJMHhmZmZmMGZlMAorCitSZWZlcmVuY2UgcHJvdG90eXBlOgorCisgIHZvaWQgKiBfX2t1c2VyX2dldF90bHModm9pZCk7CisKK0lucHV0OgorCisgIGxyID0gcmV0dXJuIGFkZHJlc3MKKworT3V0cHV0OgorCisgIHIwID0gVExTIHZhbHVlCisKK0Nsb2JiZXJlZCByZWdpc3RlcnM6CisKKyAgbm9uZQorCitEZWZpbml0aW9uOgorCisgIEdldCB0aGUgVExTIHZhbHVlIGFzIHByZXZpb3VzbHkgc2V0IHZpYSB0aGUgX19BUk1fTlJfc2V0X3RscyBzeXNjYWxsLgorCitVc2FnZSBleGFtcGxlOgorCit0eXBlZGVmIHZvaWQgKiAoX19rdXNlcl9nZXRfdGxzX3QpKHZvaWQpOworI2RlZmluZSBfX2t1c2VyX2dldF90bHMgKCooX19rdXNlcl9nZXRfdGxzX3QgKikweGZmZmYwZmUwKQorCit2b2lkIGZvbygpCit7CisJdm9pZCAqdGxzID0gX19rdXNlcl9nZXRfdGxzKCk7CisJcHJpbnRmKCJUTFMgPSAlcFxuIiwgdGxzKTsKK30KKworTm90ZXM6CisKKyAgLSBWYWxpZCBvbmx5IGlmIF9fa3VzZXJfaGVscGVyX3ZlcnNpb24gPj0gMSAoZnJvbSBrZXJuZWwgdmVyc2lvbiAyLjYuMTIpLgorCitrdXNlcl9jbXB4Y2hnCistLS0tLS0tLS0tLS0tCisKK0xvY2F0aW9uOgkweGZmZmYwZmMwCisKK1JlZmVyZW5jZSBwcm90b3R5cGU6CisKKyAgaW50IF9fa3VzZXJfY21weGNoZyhpbnQzMl90IG9sZHZhbCwgaW50MzJfdCBuZXd2YWwsIHZvbGF0aWxlIGludDMyX3QgKnB0cik7CisKK0lucHV0OgorCisgIHIwID0gb2xkdmFsCisgIHIxID0gbmV3dmFsCisgIHIyID0gcHRyCisgIGxyID0gcmV0dXJuIGFkZHJlc3MKKworT3V0cHV0OgorCisgIHIwID0gc3VjY2VzcyBjb2RlICh6ZXJvIG9yIG5vbi16ZXJvKQorICBDIGZsYWcgPSBzZXQgaWYgcjAgPT0gMCwgY2xlYXIgaWYgcjAgIT0gMAorCitDbG9iYmVyZWQgcmVnaXN0ZXJzOgorCisgIHIzLCBpcCwgZmxhZ3MKKworRGVmaW5pdGlvbjoKKworICBBdG9taWNhbGx5IHN0b3JlIG5ld3ZhbCBpbiAqcHRyIG9ubHkgaWYgKnB0ciBpcyBlcXVhbCB0byBvbGR2YWwuCisgIFJldHVybiB6ZXJvIGlmICpwdHIgd2FzIGNoYW5nZWQgb3Igbm9uLXplcm8gaWYgbm8gZXhjaGFuZ2UgaGFwcGVuZWQuCisgIFRoZSBDIGZsYWcgaXMgYWxzbyBzZXQgaWYgKnB0ciB3YXMgY2hhbmdlZCB0byBhbGxvdyBmb3IgYXNzZW1ibHkKKyAgb3B0aW1pemF0aW9uIGluIHRoZSBjYWxsaW5nIGNvZGUuCisKK1VzYWdlIGV4YW1wbGU6CisKK3R5cGVkZWYgaW50IChfX2t1c2VyX2NtcHhjaGdfdCkoaW50IG9sZHZhbCwgaW50IG5ld3ZhbCwgdm9sYXRpbGUgaW50ICpwdHIpOworI2RlZmluZSBfX2t1c2VyX2NtcHhjaGcgKCooX19rdXNlcl9jbXB4Y2hnX3QgKikweGZmZmYwZmMwKQorCitpbnQgYXRvbWljX2FkZCh2b2xhdGlsZSBpbnQgKnB0ciwgaW50IHZhbCkKK3sKKwlpbnQgb2xkLCBuZXc7CisKKwlkbyB7CisJCW9sZCA9ICpwdHI7CisJCW5ldyA9IG9sZCArIHZhbDsKKwl9IHdoaWxlKF9fa3VzZXJfY21weGNoZyhvbGQsIG5ldywgcHRyKSk7CisKKwlyZXR1cm4gbmV3OworfQorCitOb3RlczoKKworICAtIFRoaXMgcm91dGluZSBhbHJlYWR5IGluY2x1ZGVzIG1lbW9yeSBiYXJyaWVycyBhcyBuZWVkZWQuCisKKyAgLSBWYWxpZCBvbmx5IGlmIF9fa3VzZXJfaGVscGVyX3ZlcnNpb24gPj0gMiAoZnJvbSBrZXJuZWwgdmVyc2lvbiAyLjYuMTIpLgorCitrdXNlcl9tZW1vcnlfYmFycmllcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTG9jYXRpb246CTB4ZmZmZjBmYTAKKworUmVmZXJlbmNlIHByb3RvdHlwZToKKworICB2b2lkIF9fa3VzZXJfbWVtb3J5X2JhcnJpZXIodm9pZCk7CisKK0lucHV0OgorCisgIGxyID0gcmV0dXJuIGFkZHJlc3MKKworT3V0cHV0OgorCisgIG5vbmUKKworQ2xvYmJlcmVkIHJlZ2lzdGVyczoKKworICBub25lCisKK0RlZmluaXRpb246CisKKyAgQXBwbHkgYW55IG5lZWRlZCBtZW1vcnkgYmFycmllciB0byBwcmVzZXJ2ZSBjb25zaXN0ZW5jeSB3aXRoIGRhdGEgbW9kaWZpZWQKKyAgbWFudWFsbHkgYW5kIF9fa3VzZXJfY21weGNoZyB1c2FnZS4KKworVXNhZ2UgZXhhbXBsZToKKwordHlwZWRlZiB2b2lkIChfX2t1c2VyX2RtYl90KSh2b2lkKTsKKyNkZWZpbmUgX19rdXNlcl9kbWIgKCooX19rdXNlcl9kbWJfdCAqKTB4ZmZmZjBmYTApCisKK05vdGVzOgorCisgIC0gVmFsaWQgb25seSBpZiBfX2t1c2VyX2hlbHBlcl92ZXJzaW9uID49IDMgKGZyb20ga2VybmVsIHZlcnNpb24gMi42LjE1KS4KKwora3VzZXJfY21weGNoZzY0CistLS0tLS0tLS0tLS0tLS0KKworTG9jYXRpb246CTB4ZmZmZjBmNjAKKworUmVmZXJlbmNlIHByb3RvdHlwZToKKworICBpbnQgX19rdXNlcl9jbXB4Y2hnNjQoY29uc3QgaW50NjRfdCAqb2xkdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCAqbmV3dmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgdm9sYXRpbGUgaW50NjRfdCAqcHRyKTsKKworSW5wdXQ6CisKKyAgcjAgPSBwb2ludGVyIHRvIG9sZHZhbAorICByMSA9IHBvaW50ZXIgdG8gbmV3dmFsCisgIHIyID0gcG9pbnRlciB0byB0YXJnZXQgdmFsdWUKKyAgbHIgPSByZXR1cm4gYWRkcmVzcworCitPdXRwdXQ6CisKKyAgcjAgPSBzdWNjZXNzIGNvZGUgKHplcm8gb3Igbm9uLXplcm8pCisgIEMgZmxhZyA9IHNldCBpZiByMCA9PSAwLCBjbGVhciBpZiByMCAhPSAwCisKK0Nsb2JiZXJlZCByZWdpc3RlcnM6CisKKyAgcjMsIGxyLCBmbGFncworCitEZWZpbml0aW9uOgorCisgIEF0b21pY2FsbHkgc3RvcmUgdGhlIDY0LWJpdCB2YWx1ZSBwb2ludGVkIGJ5ICpuZXd2YWwgaW4gKnB0ciBvbmx5IGlmICpwdHIKKyAgaXMgZXF1YWwgdG8gdGhlIDY0LWJpdCB2YWx1ZSBwb2ludGVkIGJ5ICpvbGR2YWwuICBSZXR1cm4gemVybyBpZiAqcHRyIHdhcworICBjaGFuZ2VkIG9yIG5vbi16ZXJvIGlmIG5vIGV4Y2hhbmdlIGhhcHBlbmVkLgorCisgIFRoZSBDIGZsYWcgaXMgYWxzbyBzZXQgaWYgKnB0ciB3YXMgY2hhbmdlZCB0byBhbGxvdyBmb3IgYXNzZW1ibHkKKyAgb3B0aW1pemF0aW9uIGluIHRoZSBjYWxsaW5nIGNvZGUuCisKK1VzYWdlIGV4YW1wbGU6CisKK3R5cGVkZWYgaW50IChfX2t1c2VyX2NtcHhjaGc2NF90KShjb25zdCBpbnQ2NF90ICpvbGR2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50NjRfdCAqbmV3dmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvbGF0aWxlIGludDY0X3QgKnB0cik7CisjZGVmaW5lIF9fa3VzZXJfY21weGNoZzY0ICgqKF9fa3VzZXJfY21weGNoZzY0X3QgKikweGZmZmYwZjYwKQorCitpbnQ2NF90IGF0b21pY19hZGQ2NCh2b2xhdGlsZSBpbnQ2NF90ICpwdHIsIGludDY0X3QgdmFsKQoreworCWludDY0X3Qgb2xkLCBuZXc7CisKKwlkbyB7CisJCW9sZCA9ICpwdHI7CisJCW5ldyA9IG9sZCArIHZhbDsKKwl9IHdoaWxlKF9fa3VzZXJfY21weGNoZzY0KCZvbGQsICZuZXcsIHB0cikpOworCisJcmV0dXJuIG5ldzsKK30KKworTm90ZXM6CisKKyAgLSBUaGlzIHJvdXRpbmUgYWxyZWFkeSBpbmNsdWRlcyBtZW1vcnkgYmFycmllcnMgYXMgbmVlZGVkLgorCisgIC0gRHVlIHRvIHRoZSBsZW5ndGggb2YgdGhpcyBzZXF1ZW5jZSwgdGhpcyBzcGFucyAyIGNvbnZlbnRpb25hbCBrdXNlcgorICAgICJzbG90cyIsIHRoZXJlZm9yZSAweGZmZmYwZjgwIGlzIG5vdCB1c2VkIGFzIGEgdmFsaWQgZW50cnkgcG9pbnQuCisKKyAgLSBWYWxpZCBvbmx5IGlmIF9fa3VzZXJfaGVscGVyX3ZlcnNpb24gPj0gNSAoZnJvbSBrZXJuZWwgdmVyc2lvbiAzLjEpLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0va2V5c3RvbmUvT3ZlcnZpZXcudHh0IGIvRG9jdW1lbnRhdGlvbi9hcm0va2V5c3RvbmUvT3ZlcnZpZXcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwMGMwYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9rZXlzdG9uZS9PdmVydmlldy50eHQKQEAgLTAsMCArMSw1NSBAQAorCQlUSSBLZXlzdG9uZSBMaW51eCBPdmVydmlldworCQktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLQorS2V5c3RvbmUgcmFuZ2Ugb2YgU29DcyBhcmUgYmFzZWQgb24gQVJNIENvcnRleC1BMTUgTVBDb3JlIFByb2Nlc3NvcnMKK2FuZCBjNjZ4IERTUCBjb3Jlcy4gVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgZXNzZW50aWFsIGluZm9ybWF0aW9uIHJlcXVpcmVkCitmb3IgdXNlcnMgdG8gcnVuIExpbnV4IG9uIEtleXN0b25lIGJhc2VkIEVWTXMgZnJvbSBUZXhhcyBJbnN0cnVtZW50cy4KKworRm9sbG93aW5nIFNvQ3MgICYgRVZNcyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZDotCisKKy0tLS0tLS0tLS0tLSBLMkhLIFNvQyBhbmQgRVZNIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Euay5hIEtleXN0b25lIDIgSGF3a2luZy9LZXBsZXIgU29DCitUQ0k2NjM2SzJIICYgVENJNjYzNksySzogU2VlIGRvY3VtZW50YXRpb24gYXQKKwlodHRwOi8vd3d3LnRpLmNvbS9wcm9kdWN0L3RjaTY2MzhrMmsKKwlodHRwOi8vd3d3LnRpLmNvbS9wcm9kdWN0L3RjaTY2MzhrMmgKKworRVZNOgoraHR0cDovL3d3dy5hZHZhbnRlY2guY29tL1N1cHBvcnQvVEktRVZNL0VWTUsySFhfc2QuYXNweAorCistLS0tLS0tLS0tLS0gSzJFIFNvQyBhbmQgRVZNIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCithLmsuYSBLZXlzdG9uZSAyIEVkaXNvbiBTb0MKK0syRSAgLSAgNjZBSzJFMDU6IFNlZSBkb2N1bWVudGF0aW9uIGF0CisJaHR0cDovL3d3dy50aS5jb20vcHJvZHVjdC82NkFLMkUwNS90ZWNobmljYWxkb2N1bWVudHMKKworRVZNOgoraHR0cHM6Ly93d3cuZWluZm9jaGlwcy5jb20vaW5kZXgucGhwL3BhcnRuZXJzaGlwcy90ZXhhcy1pbnN0cnVtZW50cy9rMmUtZXZtLmh0bWwKKworLS0tLS0tLS0tLS0tIEsyTCBTb0MgYW5kIEVWTSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYS5rLmEgS2V5c3RvbmUgMiBMYW1hcnIgU29DCitLMkwgIC0gIFRDSTY2MzBLMkw6IFNlZSBkb2N1bWVudGF0aW9uIGF0CisJaHR0cDovL3d3dy50aS5jb20vcHJvZHVjdC9UQ0k2NjMwSzJML3RlY2huaWNhbGRvY3VtZW50cworRVZNOgoraHR0cHM6Ly93d3cuZWluZm9jaGlwcy5jb20vaW5kZXgucGhwL3BhcnRuZXJzaGlwcy90ZXhhcy1pbnN0cnVtZW50cy9rMmwtZXZtLmh0bWwKKworQ29uZmlndXJhdGlvbgorLS0tLS0tLS0tLS0tLQorCitBbGwgb2YgdGhlIEsyIFNvQ3MvRVZNcyBzaGFyZSBhIGNvbW1vbiBkZWZjb25maWcsIGtleXN0b25lX2RlZmNvbmZpZyBhbmQgc2FtZQoraW1hZ2UgaXMgdXNlZCB0byBib290IG9uIGluZGl2aWR1YWwgRVZNcy4gVGhlIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gaXMKK3NwZWNpZmllZCB0aHJvdWdoIERUUy4gRm9sbG93aW5nIGFyZSB0aGUgRFRTIHVzZWQ6LQorCUsySEsgRVZNIDogazJoay1ldm0uZHRzCisJSzJFIEVWTSAgOiBrMmUtZXZtLmR0cworCUsyTCBFVk0gIDogazJsLWV2bS5kdHMKKworVGhlIGRldmljZSB0cmVlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBrZXlzdG9uZSBtYWNoaW5lcyBhcmUgbG9jYXRlZCBhdAorICAgICAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2tleXN0b25lL2tleXN0b25lLnR4dAorCitEb2N1bWVudCBBdXRob3IKKy0tLS0tLS0tLS0tLS0tLQorTXVyYWxpIEthcmljaGVyaSA8bS1rYXJpY2hlcmkyQHRpLmNvbT4KK0NvcHlyaWdodCAyMDE1IFRleGFzIEluc3RydW1lbnRzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS9rZXlzdG9uZS9rbmF2LXFtc3MudHh0IGIvRG9jdW1lbnRhdGlvbi9hcm0va2V5c3RvbmUva25hdi1xbXNzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2RiOWZkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0va2V5c3RvbmUva25hdi1xbXNzLnR4dApAQCAtMCwwICsxLDU2IEBACisqIFRleGFzIEluc3RydW1lbnRzIEtleXN0b25lIE5hdmlnYXRvciBRdWV1ZSBNYW5hZ2VtZW50IFN1YlN5c3RlbSBkcml2ZXIKKworRHJpdmVyIHNvdXJjZSBjb2RlIHBhdGgKKyAgZHJpdmVycy9zb2MvdGkva25hdl9xbXNzLmMKKyAgZHJpdmVycy9zb2MvdGkva25hdl9xbXNzX2FjYy5jCisKK1RoZSBRTVNTIChRdWV1ZSBNYW5hZ2VyIFN1YiBTeXN0ZW0pIGZvdW5kIG9uIEtleXN0b25lIFNPQ3MgaXMgb25lIG9mCit0aGUgbWFpbiBoYXJkd2FyZSBzdWIgc3lzdGVtIHdoaWNoIGZvcm1zIHRoZSBiYWNrYm9uZSBvZiB0aGUgS2V5c3RvbmUKK211bHRpLWNvcmUgTmF2aWdhdG9yLiBRTVNTIGNvbnNpc3Qgb2YgcXVldWUgbWFuYWdlcnMsIHBhY2tlZC1kYXRhIHN0cnVjdHVyZQorcHJvY2Vzc29ycyhQRFNQKSwgbGlua2luZyBSQU0sIGRlc2NyaXB0b3IgcG9vbHMgYW5kIGluZnJhc3RydWN0dXJlCitQYWNrZXQgRE1BLgorVGhlIFF1ZXVlIE1hbmFnZXIgaXMgYSBoYXJkd2FyZSBtb2R1bGUgdGhhdCBpcyByZXNwb25zaWJsZSBmb3IgYWNjZWxlcmF0aW5nCittYW5hZ2VtZW50IG9mIHRoZSBwYWNrZXQgcXVldWVzLiBQYWNrZXRzIGFyZSBxdWV1ZWQvZGUtcXVldWVkIGJ5IHdyaXRpbmcgb3IKK3JlYWRpbmcgZGVzY3JpcHRvciBhZGRyZXNzIHRvIGEgcGFydGljdWxhciBtZW1vcnkgbWFwcGVkIGxvY2F0aW9uLiBUaGUgUERTUHMKK3BlcmZvcm0gUU1TUyByZWxhdGVkIGZ1bmN0aW9ucyBsaWtlIGFjY3VtdWxhdGlvbiwgUW9TLCBvciBldmVudCBtYW5hZ2VtZW50LgorTGlua2luZyBSQU0gcmVnaXN0ZXJzIGFyZSB1c2VkIHRvIGxpbmsgdGhlIGRlc2NyaXB0b3JzIHdoaWNoIGFyZSBzdG9yZWQgaW4KK2Rlc2NyaXB0b3IgUkFNLiBEZXNjcmlwdG9yIFJBTSBpcyBjb25maWd1cmFibGUgYXMgaW50ZXJuYWwgb3IgZXh0ZXJuYWwgbWVtb3J5LgorVGhlIFFNU1MgZHJpdmVyIG1hbmFnZXMgdGhlIFBEU1Agc2V0dXBzLCBsaW5raW5nIFJBTSByZWdpb25zLAorcXVldWUgcG9vbCBtYW5hZ2VtZW50IChhbGxvY2F0aW9uLCBwdXNoLCBwb3AgYW5kIG5vdGlmeSkgYW5kIGRlc2NyaXB0b3IKK3Bvb2wgbWFuYWdlbWVudC4KKwora25hdiBxbXNzIGRyaXZlciBwcm92aWRlcyBhIHNldCBvZiBBUElzIHRvIGRyaXZlcnMgdG8gb3Blbi9jbG9zZSBxbXNzIHF1ZXVlcywKK2FsbG9jYXRlIGRlc2NyaXB0b3IgcG9vbHMsIG1hcCB0aGUgZGVzY3JpcHRvcnMsIHB1c2gvcG9wIHRvIHF1ZXVlcyBldGMuIEZvcgorZGV0YWlscyBvZiB0aGUgYXZhaWxhYmxlIEFQSXMsIHBsZWFzZSByZWZlcnMgdG8gaW5jbHVkZS9saW51eC9zb2MvdGkva25hdl9xbXNzLmgKKworRFQgZG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgYXQKK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2MvdGkva2V5c3RvbmUtbmF2aWdhdG9yLXFtc3MudHh0CisKK0FjY3VtdWxhdG9yIFFNU1MgcXVldWVzIHVzaW5nIFBEU1AgZmlybXdhcmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitUaGUgUU1TUyBQRFNQIGZpcm13YXJlIHN1cHBvcnQgYWNjdW11bGF0b3IgY2hhbm5lbCB0aGF0IGNhbiBtb25pdG9yIGEgc2luZ2xlCitxdWV1ZSBvciBtdWx0aXBsZSBjb250aWd1b3VzIHF1ZXVlcy4gZHJpdmVycy9zb2MvdGkva25hdl9xbXNzX2FjYy5jIGlzIHRoZQorZHJpdmVyIHRoYXQgaW50ZXJmYWNlIHdpdGggdGhlIGFjY3VtdWxhdG9yIFBEU1AuIFRoaXMgY29uZmlndXJlcworYWNjdW11bGF0b3IgY2hhbm5lbHMgZGVmaW5lZCBpbiBEVFMgKGV4YW1wbGUgaW4gRFQgZG9jdW1lbnRhdGlvbikgdG8gbW9uaXRvcgorMSBvciAzMiBxdWV1ZXMgcGVyIGNoYW5uZWwuIE1vcmUgZGVzY3JpcHRpb24gb24gdGhlIGZpcm13YXJlIGlzIGF2YWlsYWJsZSBpbgorQ1BQSS9RTVNTIExvdyBMZXZlbCBEcml2ZXIgZG9jdW1lbnQgKGRvY3MvQ1BQSV9RTVNTX0xMRF9TRFMucGRmKSBhdAorCWdpdDovL2dpdC50aS5jb20va2V5c3RvbmUtcnRvcy9xbXNzLWxsZC5naXQKKworazJfcW1zc19wZHNwX2FjYzQ4X2syX2xlXzFfMF8wXzkuYmluIGZpcm13YXJlIHN1cHBvcnRzIHVwdG8gNDggYWNjdW11bGF0b3IKK2NoYW5uZWxzLiBUaGlzIGZpcm13YXJlIGlzIGF2YWlsYWJsZSB1bmRlciB0aS1rZXlzdG9uZSBmb2xkZXIgb2YKK2Zpcm13YXJlLmdpdCBhdAorICAgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2Zpcm13YXJlL2xpbnV4LWZpcm13YXJlLmdpdAorCitUbyB1c2UgY29weSB0aGUgZmlybXdhcmUgaW1hZ2UgdG8gbGliL2Zpcm13YXJlIGZvbGRlciBvZiB0aGUgaW5pdHJhbWZzIG9yCit1YmlmcyBmaWxlIHN5c3RlbSBhbmQgcHJvdmlkZSBhIHN5bSBsaW5rIHRvIGsyX3Ftc3NfcGRzcF9hY2M0OF9rMl9sZV8xXzBfMF85LmJpbgoraW4gdGhlIGZpbGUgc3lzdGVtIGFuZCBib290IHVwIHRoZSBrZXJuZWwuIFVzZXIgd291bGQgc2VlCisKKyAiZmlybXdhcmUgZmlsZSBrczJfcW1zc19wZHNwX2FjYzQ4LmJpbiBkb3dubG9hZGVkIGZvciBQRFNQIgorCitpbiB0aGUgYm9vdCB1cCBsb2cgaWYgbG9hZGluZyBvZiBmaXJtd2FyZSB0byBQRFNQIGlzIHN1Y2Nlc3NmdWwuCisKK1VzZSBvZiBhY2N1bXVsYXRlZCBxdWV1ZXMgcmVxdWlyZXMgdGhlIGZpcm13YXJlIGltYWdlIHRvIGJlIHByZXNlbnQgaW4gdGhlCitmaWxlIHN5c3RlbS4gVGhlIGRyaXZlciBkb2Vzbid0IGFjYyBxdWV1ZXMgdG8gdGhlIHN1cHBvcnRlZCBxdWV1ZSByYW5nZSBpZgorUERTUCBpcyBub3QgcnVubmluZyBpbiB0aGUgU29DLiBUaGUgQVBJIGNhbGwgZmFpbHMgaWYgdGhlcmUgaXMgYSBxdWV1ZSBvcGVuCityZXF1ZXN0IHRvIGFuIGFjYyBxdWV1ZSBhbmQgUERTUCBpcyBub3QgcnVubmluZy4gU28gbWFrZSBzdXJlIHRvIGNvcHkgZmlybXdhcmUKK3RvIGZpbGUgc3lzdGVtIGJlZm9yZSB1c2luZyB0aGVzZSBxdWV1ZSB0eXBlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJtL21lbV9hbGlnbm1lbnQgYi9Eb2N1bWVudGF0aW9uL2FybS9tZW1fYWxpZ25tZW50Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3YzdhMTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9tZW1fYWxpZ25tZW50CkBAIC0wLDAgKzEsNTggQEAKK1RvbyBtYW55IHByb2JsZW1zIHBvcGVkIHVwIGJlY2F1c2Ugb2YgdW5ub3RpY2VkIG1pc2FsaWduZWQgbWVtb3J5IGFjY2VzcyBpbgora2VybmVsIGNvZGUgbGF0ZWx5LiAgVGhlcmVmb3JlIHRoZSBhbGlnbm1lbnQgZml4dXAgaXMgbm93IHVuY29uZGl0aW9uYWxseQorY29uZmlndXJlZCBpbiBmb3IgU0ExMXgwIGJhc2VkIHRhcmdldHMuICBBY2NvcmRpbmcgdG8gQWxhbiBDb3gsIHRoaXMgaXMgYQorYmFkIGlkZWEgdG8gY29uZmlndXJlIGl0IG91dCwgYnV0IFJ1c3NlbGwgS2luZyBoYXMgc29tZSBnb29kIHJlYXNvbnMgZm9yCitkb2luZyBzbyBvbiBzb21lIGYqKiplZCB1cCBBUk0gYXJjaGl0ZWN0dXJlcyBsaWtlIHRoZSBFQlNBMTEwLiAgSG93ZXZlcgordGhpcyBpcyBub3QgdGhlIGNhc2Ugb24gbWFueSBkZXNpZ24gSSdtIGF3YXJlIG9mLCBsaWtlIGFsbCBTQTExeDAgYmFzZWQKK29uZXMuCisKK09mIGNvdXJzZSB0aGlzIGlzIGEgYmFkIGlkZWEgdG8gcmVseSBvbiB0aGUgYWxpZ25tZW50IHRyYXAgdG8gcGVyZm9ybQordW5hbGlnbmVkIG1lbW9yeSBhY2Nlc3MgaW4gZ2VuZXJhbC4gIElmIHRob3NlIGFjY2VzcyBhcmUgcHJlZGljdGFibGUsIHlvdQorYXJlIGJldHRlciB0byB1c2UgdGhlIG1hY3JvcyBwcm92aWRlZCBieSBpbmNsdWRlL2FzbS91bmFsaWduZWQuaC4gIFRoZQorYWxpZ25tZW50IHRyYXAgY2FuIGZpeHVwIG1pc2FsaWduZWQgYWNjZXNzIGZvciB0aGUgZXhjZXB0aW9uIGNhc2VzLCBidXQgYXQKK2EgaGlnaCBwZXJmb3JtYW5jZSBjb3N0LiAgSXQgYmV0dGVyIGJlIHJhcmUuCisKK05vdyBmb3IgdXNlciBzcGFjZSBhcHBsaWNhdGlvbnMsIGl0IGlzIHBvc3NpYmxlIHRvIGNvbmZpZ3VyZSB0aGUgYWxpZ25tZW50Cit0cmFwIHRvIFNJR0JVUyBhbnkgY29kZSBwZXJmb3JtaW5nIHVuYWxpZ25lZCBhY2Nlc3MgKGdvb2QgZm9yIGRlYnVnZ2luZyBiYWQKK2NvZGUpLCBvciBldmVuIGZpeHVwIHRoZSBhY2Nlc3MgYnkgc29mdHdhcmUgbGlrZSBmb3Iga2VybmVsIGNvZGUuICBUaGUgbGF0ZXIKK21vZGUgaXNuJ3QgcmVjb21tZW5kZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKGp1c3QgdGhpbmsgYWJvdXQgdGhlCitmbG9hdGluZyBwb2ludCBlbXVsYXRpb24gdGhhdCB3b3JrcyBhYm91dCB0aGUgc2FtZSB3YXkpLiAgRml4IHlvdXIgY29kZQoraW5zdGVhZCEKKworUGxlYXNlIG5vdGUgdGhhdCByYW5kb21seSBjaGFuZ2luZyB0aGUgYmVoYXZpb3VyIHdpdGhvdXQgZ29vZCB0aG91Z2h0IGlzCityZWFsIGJhZCAtIGl0IGNoYW5nZXMgdGhlIGJlaGF2aW91ciBvZiBhbGwgdW5hbGlnbmVkIGluc3RydWN0aW9ucyBpbiB1c2VyCitzcGFjZSwgYW5kIG1pZ2h0IGNhdXNlIHByb2dyYW1zIHRvIGZhaWwgdW5leHBlY3RlZGx5LgorCitUbyBjaGFuZ2UgdGhlIGFsaWdubWVudCB0cmFwIGJlaGF2aW9yLCBzaW1wbHkgZWNobyBhIG51bWJlciBpbnRvCisvcHJvYy9jcHUvYWxpZ25tZW50LiAgVGhlIG51bWJlciBpcyBtYWRlIHVwIGZyb20gdmFyaW91cyBiaXRzOgorCitiaXQJCWJlaGF2aW9yIHdoZW4gc2V0CistLS0JCS0tLS0tLS0tLS0tLS0tLS0tCisKKzAJCUEgdXNlciBwcm9jZXNzIHBlcmZvcm1pbmcgYW4gdW5hbGlnbmVkIG1lbW9yeSBhY2Nlc3MKKwkJd2lsbCBjYXVzZSB0aGUga2VybmVsIHRvIHByaW50IGEgbWVzc2FnZSBpbmRpY2F0aW5nCisJCXByb2Nlc3MgbmFtZSwgcGlkLCBwYywgaW5zdHJ1Y3Rpb24sIGFkZHJlc3MsIGFuZCB0aGUKKwkJZmF1bHQgY29kZS4KKworMQkJVGhlIGtlcm5lbCB3aWxsIGF0dGVtcHQgdG8gZml4IHVwIHRoZSB1c2VyIHByb2Nlc3MKKwkJcGVyZm9ybWluZyB0aGUgdW5hbGlnbmVkIGFjY2Vzcy4gIFRoaXMgaXMgb2YgY291cnNlCisJCXNsb3cgKHRoaW5rIGFib3V0IHRoZSBmbG9hdGluZyBwb2ludCBlbXVsYXRvcikgYW5kCisJCW5vdCByZWNvbW1lbmRlZCBmb3IgcHJvZHVjdGlvbiB1c2UuCisKKzIJCVRoZSBrZXJuZWwgd2lsbCBzZW5kIGEgU0lHQlVTIHNpZ25hbCB0byB0aGUgdXNlciBwcm9jZXNzCisJCXBlcmZvcm1pbmcgdGhlIHVuYWxpZ25lZCBhY2Nlc3MuCisKK05vdGUgdGhhdCBub3QgYWxsIGNvbWJpbmF0aW9ucyBhcmUgc3VwcG9ydGVkIC0gb25seSB2YWx1ZXMgMCB0aHJvdWdoIDUuCisoNiBhbmQgNyBkb24ndCBtYWtlIHNlbnNlKS4KKworRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgd2lsbCB0dXJuIG9uIHRoZSB3YXJuaW5ncywgYnV0IHdpdGhvdXQKK2ZpeGluZyB1cCBvciBzZW5kaW5nIFNJR0JVUyBzaWduYWxzOgorCisJZWNobyAxID4gL3Byb2Mvc3lzL2RlYnVnL2FsaWdubWVudAorCitZb3UgY2FuIGFsc28gcmVhZCB0aGUgY29udGVudCBvZiB0aGUgc2FtZSBmaWxlIHRvIGdldCBzdGF0aXN0aWNhbAoraW5mb3JtYXRpb24gb24gdW5hbGlnbmVkIGFjY2VzcyBvY2N1cnJlbmNlcyBwbHVzIHRoZSBjdXJyZW50IG1vZGUgb2YKK29wZXJhdGlvbiBmb3IgdXNlciBzcGFjZSBjb2RlLgorCisKK05pY29sYXMgUGl0cmUsIE1hciAxMywgMjAwMS4gIE1vZGlmaWVkIFJ1c3NlbGwgS2luZywgTm92IDMwLCAyMDAxLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vbWVtb3J5LnR4dCBiL0RvY3VtZW50YXRpb24vYXJtL21lbW9yeS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ2YTM5MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL21lbW9yeS50eHQKQEAgLTAsMCArMSw4OCBAQAorCQlLZXJuZWwgTWVtb3J5IExheW91dCBvbiBBUk0gTGludXgKKworCQlSdXNzZWxsIEtpbmcgPHJta0Bhcm0ubGludXgub3JnLnVrPgorCQkgICAgIE5vdmVtYmVyIDE3LCAyMDA1ICgyLjYuMTUpCisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSB2aXJ0dWFsIG1lbW9yeSBsYXlvdXQgd2hpY2ggdGhlIExpbnV4CitrZXJuZWwgdXNlcyBmb3IgQVJNIHByb2Nlc3NvcnMuICBJdCBpbmRpY2F0ZXMgd2hpY2ggcmVnaW9ucyBhcmUKK2ZyZWUgZm9yIHBsYXRmb3JtcyB0byB1c2UsIGFuZCB3aGljaCBhcmUgdXNlZCBieSBnZW5lcmljIGNvZGUuCisKK1RoZSBBUk0gQ1BVIGlzIGNhcGFibGUgb2YgYWRkcmVzc2luZyBhIG1heGltdW0gb2YgNEdCIHZpcnR1YWwgbWVtb3J5CitzcGFjZSwgYW5kIHRoaXMgbXVzdCBiZSBzaGFyZWQgYmV0d2VlbiB1c2VyIHNwYWNlIHByb2Nlc3NlcywgdGhlCitrZXJuZWwsIGFuZCBoYXJkd2FyZSBkZXZpY2VzLgorCitBcyB0aGUgQVJNIGFyY2hpdGVjdHVyZSBtYXR1cmVzLCBpdCBiZWNvbWVzIG5lY2Vzc2FyeSB0byByZXNlcnZlCitjZXJ0YWluIHJlZ2lvbnMgb2YgVk0gc3BhY2UgZm9yIHVzZSBmb3IgbmV3IGZhY2lsaXRpZXM7IHRoZXJlZm9yZQordGhpcyBkb2N1bWVudCBtYXkgcmVzZXJ2ZSBtb3JlIFZNIHNwYWNlIG92ZXIgdGltZS4KKworU3RhcnQJCUVuZAkJVXNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZmZmZjgwMDAJZmZmZmZmZmYJY29weV91c2VyX3BhZ2UgLyBjbGVhcl91c2VyX3BhZ2UgdXNlLgorCQkJCUZvciBTQTExeHggYW5kIFhzY2FsZSwgdGhpcyBpcyB1c2VkIHRvCisJCQkJc2V0dXAgYSBtaW5pY2FjaGUgbWFwcGluZy4KKworZmZmZjQwMDAJZmZmZmZmZmYJY2FjaGUgYWxpYXNpbmcgb24gQVJNdjYgYW5kIGxhdGVyIENQVXMuCisKK2ZmZmYxMDAwCWZmZmY3ZmZmCVJlc2VydmVkLgorCQkJCVBsYXRmb3JtcyBtdXN0IG5vdCB1c2UgdGhpcyBhZGRyZXNzIHJhbmdlLgorCitmZmZmMDAwMAlmZmZmMGZmZglDUFUgdmVjdG9yIHBhZ2UuCisJCQkJVGhlIENQVSB2ZWN0b3JzIGFyZSBtYXBwZWQgaGVyZSBpZiB0aGUKKwkJCQlDUFUgc3VwcG9ydHMgdmVjdG9yIHJlbG9jYXRpb24gKGNvbnRyb2wKKwkJCQlyZWdpc3RlciBWIGJpdC4pCisKK2ZmZmUwMDAwCWZmZmVmZmZmCVhTY2FsZSBjYWNoZSBmbHVzaCBhcmVhLiAgVGhpcyBpcyB1c2VkCisJCQkJaW4gcHJvYy14c2NhbGUuUyB0byBmbHVzaCB0aGUgd2hvbGUgZGF0YQorCQkJCWNhY2hlLiAoWFNjYWxlIGRvZXMgbm90IGhhdmUgVENNLikKKworZmZmZTgwMDAJZmZmZWZmZmYJRFRDTSBtYXBwaW5nIGFyZWEgZm9yIHBsYXRmb3JtcyB3aXRoCisJCQkJRFRDTSBtb3VudGVkIGluc2lkZSB0aGUgQ1BVLgorCitmZmZlMDAwMAlmZmZlN2ZmZglJVENNIG1hcHBpbmcgYXJlYSBmb3IgcGxhdGZvcm1zIHdpdGgKKwkJCQlJVENNIG1vdW50ZWQgaW5zaWRlIHRoZSBDUFUuCisKK2ZmYzAwMDAwCWZmZWZmZmZmCUZpeG1hcCBtYXBwaW5nIHJlZ2lvbi4gIEFkZHJlc3NlcyBwcm92aWRlZAorCQkJCWJ5IGZpeF90b192aXJ0KCkgd2lsbCBiZSBsb2NhdGVkIGhlcmUuCisKK2ZlZTAwMDAwCWZlZmZmZmZmCU1hcHBpbmcgb2YgUENJIEkvTyBzcGFjZS4gVGhpcyBpcyBhIHN0YXRpYworCQkJCW1hcHBpbmcgd2l0aGluIHRoZSB2bWFsbG9jIHNwYWNlLgorCitWTUFMTE9DX1NUQVJUCVZNQUxMT0NfRU5ELTEJdm1hbGxvYygpIC8gaW9yZW1hcCgpIHNwYWNlLgorCQkJCU1lbW9yeSByZXR1cm5lZCBieSB2bWFsbG9jL2lvcmVtYXAgd2lsbAorCQkJCWJlIGR5bmFtaWNhbGx5IHBsYWNlZCBpbiB0aGlzIHJlZ2lvbi4KKwkJCQlNYWNoaW5lIHNwZWNpZmljIHN0YXRpYyBtYXBwaW5ncyBhcmUgYWxzbworCQkJCWxvY2F0ZWQgaGVyZSB0aHJvdWdoIGlvdGFibGVfaW5pdCgpLgorCQkJCVZNQUxMT0NfU1RBUlQgaXMgYmFzZWQgdXBvbiB0aGUgdmFsdWUKKwkJCQlvZiB0aGUgaGlnaF9tZW1vcnkgdmFyaWFibGUsIGFuZCBWTUFMTE9DX0VORAorCQkJCWlzIGVxdWFsIHRvIDB4ZmY4MDAwMDAuCisKK1BBR0VfT0ZGU0VUCWhpZ2hfbWVtb3J5LTEJS2VybmVsIGRpcmVjdC1tYXBwZWQgUkFNIHJlZ2lvbi4KKwkJCQlUaGlzIG1hcHMgdGhlIHBsYXRmb3JtcyBSQU0sIGFuZCB0eXBpY2FsbHkKKwkJCQltYXBzIGFsbCBwbGF0Zm9ybSBSQU0gaW4gYSAxOjEgcmVsYXRpb25zaGlwLgorCitQS01BUF9CQVNFCVBBR0VfT0ZGU0VULTEJUGVybWFuZW50IGtlcm5lbCBtYXBwaW5ncworCQkJCU9uZSB3YXkgb2YgbWFwcGluZyBISUdITUVNIHBhZ2VzIGludG8ga2VybmVsCisJCQkJc3BhY2UuCisKK01PRFVMRVNfVkFERFIJTU9EVUxFU19FTkQtMQlLZXJuZWwgbW9kdWxlIHNwYWNlCisJCQkJS2VybmVsIG1vZHVsZXMgaW5zZXJ0ZWQgdmlhIGluc21vZCBhcmUKKwkJCQlwbGFjZWQgaGVyZSB1c2luZyBkeW5hbWljIG1hcHBpbmdzLgorCiswMDAwMTAwMAlUQVNLX1NJWkUtMQlVc2VyIHNwYWNlIG1hcHBpbmdzCisJCQkJUGVyLXRocmVhZCBtYXBwaW5ncyBhcmUgcGxhY2VkIGhlcmUgdmlhCisJCQkJdGhlIG1tYXAoKSBzeXN0ZW0gY2FsbC4KKworMDAwMDAwMDAJMDAwMDBmZmYJQ1BVIHZlY3RvciBwYWdlIC8gbnVsbCBwb2ludGVyIHRyYXAKKwkJCQlDUFVzIHdoaWNoIGRvIG5vdCBzdXBwb3J0IHZlY3RvciByZW1hcHBpbmcKKwkJCQlwbGFjZSB0aGVpciB2ZWN0b3IgcGFnZSBoZXJlLiAgTlVMTCBwb2ludGVyCisJCQkJZGVyZWZlcmVuY2VzIGJ5IGJvdGggdGhlIGtlcm5lbCBhbmQgdXNlcgorCQkJCXNwYWNlIGFyZSBhbHNvIGNhdWdodCB2aWEgdGhpcyBtYXBwaW5nLgorCitQbGVhc2Ugbm90ZSB0aGF0IG1hcHBpbmdzIHdoaWNoIGNvbGxpZGUgd2l0aCB0aGUgYWJvdmUgYXJlYXMgbWF5IHJlc3VsdAoraW4gYSBub24tYm9vdGFibGUga2VybmVsLCBvciBtYXkgY2F1c2UgdGhlIGtlcm5lbCB0byAoZXZlbnR1YWxseSkgcGFuaWMKK2F0IHJ1biB0aW1lLgorCitTaW5jZSBmdXR1cmUgQ1BVcyBtYXkgaW1wYWN0IHRoZSBrZXJuZWwgbWFwcGluZyBsYXlvdXQsIHVzZXIgcHJvZ3JhbXMKK211c3Qgbm90IGFjY2VzcyBhbnkgbWVtb3J5IHdoaWNoIGlzIG5vdCBtYXBwZWQgaW5zaWRlIHRoZWlyIDB4MDAwMTAwMAordG8gVEFTS19TSVpFIGFkZHJlc3MgcmFuZ2UuICBJZiB0aGV5IHdpc2ggdG8gYWNjZXNzIHRoZXNlIGFyZWFzLCB0aGV5CittdXN0IHNldCB1cCB0aGVpciBvd24gbWFwcGluZ3MgdXNpbmcgb3BlbigpIGFuZCBtbWFwKCkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS9ud2ZwZS9OT1RFUyBiL0RvY3VtZW50YXRpb24vYXJtL253ZnBlL05PVEVTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwNTc3YjUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9ud2ZwZS9OT1RFUwpAQCAtMCwwICsxLDI5IEBACitUaGVyZSBzZWVtcyB0byBiZSBhIHByb2JsZW0gd2l0aCBleHAoZG91YmxlKSBhbmQgb3VyIGVtdWxhdG9yLiAgSSBoYXZlbid0CitiZWVuIGFibGUgdG8gdHJhY2sgaXQgZG93biB5ZXQuICBUaGlzIGRvZXMgbm90IG9jY3VyIHdpdGggdGhlIGVtdWxhdG9yCitzdXBwbGllZCBieSBSdXNzZWxsIEtpbmcuCisKK0kgYWxzbyBmb3VuZCBvbmUgb2RkaXR5IGluIHRoZSBlbXVsYXRvci4gIEkgZG9uJ3QgdGhpbmsgaXQgaXMgc2VyaW91cyBidXQKK3dpbGwgcG9pbnQgaXQgb3V0LiAgVGhlIEFSTSBjYWxsaW5nIGNvbnZlbnRpb25zIHJlcXVpcmUgZmxvYXRpbmcgcG9pbnQKK3JlZ2lzdGVycyBmNC1mNyB0byBiZSBwcmVzZXJ2ZWQgb3ZlciBhIGZ1bmN0aW9uIGNhbGwuICBUaGUgY29tcGlsZXIgcXVpdGUKK29mdGVuIHVzZXMgYW4gc3RmZSBpbnN0cnVjdGlvbiB0byBzYXZlIGY0IG9uIHRoZSBzdGFjayB1cG9uIGVudHJ5IHRvIGEKK2Z1bmN0aW9uLCBhbmQgYW4gbGRmZSBpbnN0cnVjdGlvbiB0byByZXN0b3JlIGl0IGJlZm9yZSByZXR1cm5pbmcuCisKK0kgd2FzIGxvb2tpbmcgYXQgc29tZSBjb2RlLCB0aGF0IGNhbGN1bGF0ZWQgYSBkb3VibGUgcmVzdWx0LCBzdG9yZWQgaXQgaW4gZjQKK3RoZW4gbWFkZSBhIGZ1bmN0aW9uIGNhbGwuIFVwb24gcmV0dXJuIGZyb20gdGhlIGZ1bmN0aW9uIGNhbGwgdGhlIG51bWJlciBpbgorZjQgaGFkIGJlZW4gY29udmVydGVkIHRvIGFuIGV4dGVuZGVkIHZhbHVlIGluIHRoZSBlbXVsYXRvci4KKworVGhpcyBpcyBhIHNpZGUgZWZmZWN0IG9mIHRoZSBzdGZlIGluc3RydWN0aW9uLiAgVGhlIGRvdWJsZSBpbiBmNCBoYWQgdG8gYmUKK2NvbnZlcnRlZCB0byBleHRlbmRlZCwgdGhlbiBzdG9yZWQuICBJZiBhbiBsZm0vc2ZtIGNvbWJpbmF0aW9uIGhhZCBiZWVuIHVzZWQsCit0aGVuIG5vIGNvbnZlcnNpb24gd291bGQgb2NjdXIuICBUaGlzIGhhcyBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucy4gIFRoZQorcmVzdWx0IGZyb20gdGhlIGZ1bmN0aW9uIGNhbGwgYW5kIGY0IHdlcmUgdXNlZCBpbiBhIG11bHRpcGxpY2F0aW9uLiAgSWYgdGhlCitlbXVsYXRvciBzZWVzIGEgbXVsdGlwbHkgb2YgYSBkb3VibGUgYW5kIGV4dGVuZGVkLCBpdCBwcm9tb3RlcyB0aGUgZG91YmxlIHRvCitleHRlbmRlZCwgdGhlbiBkb2VzIHRoZSBtdWx0aXBseSBpbiBleHRlbmRlZCBwcmVjaXNpb24uCisKK1RoaXMgY29kZSB3aWxsIGNhdXNlIHRoaXMgcHJvYmxlbToKKworZG91YmxlIHgsIHksIHo7Cit6ID0gbG9nKHgpL2xvZyh5KTsKKworVGhlIHJlc3VsdCBvZiBsb2coeCkgKGEgZG91YmxlKSB3aWxsIGJlIGNhbGN1bGF0ZWQsIHJldHVybmVkIGluIGYwLCB0aGVuCittb3ZlZCB0byBmNCB0byBwcmVzZXJ2ZSBpdCBvdmVyIHRoZSBsb2coeSkgY2FsbC4gIFRoZSBkaXZpc2lvbiB3aWxsIGJlIGRvbmUKK2luIGV4dGVuZGVkIHByZWNpc2lvbiwgZHVlIHRvIHRoZSBzdGZlIGluc3RydWN0aW9uIHVzZWQgdG8gc2F2ZSBmNCBpbiBsb2coeSkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS9ud2ZwZS9SRUFETUUgYi9Eb2N1bWVudGF0aW9uL2FybS9ud2ZwZS9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzcxODcxZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL253ZnBlL1JFQURNRQpAQCAtMCwwICsxLDcwIEBACitUaGlzIGRpcmVjdG9yeSBjb250YWlucyB0aGUgdmVyc2lvbiAwLjkyIHRlc3QgcmVsZWFzZSBvZiB0aGUgTmV0V2luZGVyIAorRmxvYXRpbmcgUG9pbnQgRW11bGF0b3IuCisKK1RoZSBtYWpvcml0eSBvZiB0aGUgY29kZSB3YXMgd3JpdHRlbiBieSBtZSwgU2NvdHQgQmFtYnJvdWdoIEl0IGlzCit3cml0dGVuIGluIEMsIHdpdGggYSBzbWFsbCBudW1iZXIgb2Ygcm91dGluZXMgaW4gaW5saW5lIGFzc2VtYmxlcgord2hlcmUgcmVxdWlyZWQuICBJdCB3YXMgd3JpdHRlbiBxdWlja2x5LCB3aXRoIGEgZ29hbCBvZiBpbXBsZW1lbnRpbmcgYQord29ya2luZyB2ZXJzaW9uIG9mIGFsbCB0aGUgZmxvYXRpbmcgcG9pbnQgaW5zdHJ1Y3Rpb25zIHRoZSBjb21waWxlcgorZW1pdHMgYXMgdGhlIGZpcnN0IHRhcmdldC4gIEkgaGF2ZSBhdHRlbXB0ZWQgdG8gYmUgYXMgb3B0aW1hbCBhcworcG9zc2libGUsIGJ1dCB0aGVyZSByZW1haW5zIG11Y2ggcm9vbSBmb3IgaW1wcm92ZW1lbnQuCisKK0kgaGF2ZSBhdHRlbXB0ZWQgdG8gbWFrZSB0aGUgZW11bGF0b3IgYXMgcG9ydGFibGUgYXMgcG9zc2libGUuICBPbmUgb2YKK3RoZSBwcm9ibGVtcyBpcyB3aXRoIGxlYWRpbmcgdW5kZXJzY29yZXMgb24ga2VybmVsIHN5bWJvbHMuICBFbGYKK2tlcm5lbHMgaGF2ZSBubyBsZWFkaW5nIHVuZGVyc2NvcmVzLCBhLm91dCBjb21waWxlZCBrZXJuZWxzIGRvLiAgSQoraGF2ZSBhdHRlbXB0ZWQgdG8gdXNlIHRoZSBDX1NZTUJPTF9OQU1FIG1hY3JvIHdoZXJldmVyIHRoaXMgbWF5IGJlCitpbXBvcnRhbnQuCisKK0Fub3RoZXIgY2hvaWNlIEkgbWFkZSB3YXMgaW4gdGhlIGZpbGUgc3RydWN0dXJlLiAgSSBoYXZlIGF0dGVtcHRlZCB0bworY29udGFpbiBhbGwgb3BlcmF0aW5nIHN5c3RlbSBzcGVjaWZpYyBjb2RlIGluIG9uZSBtb2R1bGUgKGZwbW9kdWxlLiopLgorQWxsIHRoZSBvdGhlciBmaWxlcyBjb250YWluIGVtdWxhdG9yIHNwZWNpZmljIGNvZGUuICBUaGlzIHNob3VsZCBhbGxvdworb3RoZXJzIHRvIHBvcnQgdGhlIGVtdWxhdG9yIHRvIE5ldEJTRCBmb3IgaW5zdGFuY2UgcmVsYXRpdmVseSBlYXNpbHkuCisKK1RoZSBmbG9hdGluZyBwb2ludCBvcGVyYXRpb25zIGFyZSBiYXNlZCBvbiBTb2Z0RmxvYXQgUmVsZWFzZSAyLCBieQorSm9obiBIYXVzZXIuICBTb2Z0RmxvYXQgaXMgYSBzb2Z0d2FyZSBpbXBsZW1lbnRhdGlvbiBvZiBmbG9hdGluZy1wb2ludAordGhhdCBjb25mb3JtcyB0byB0aGUgSUVDL0lFRUUgU3RhbmRhcmQgZm9yIEJpbmFyeSBGbG9hdGluZy1wb2ludAorQXJpdGhtZXRpYy4gIEFzIG1hbnkgYXMgZm91ciBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQ6IHNpbmdsZSBwcmVjaXNpb24sCitkb3VibGUgcHJlY2lzaW9uLCBleHRlbmRlZCBkb3VibGUgcHJlY2lzaW9uLCBhbmQgcXVhZHJ1cGxlIHByZWNpc2lvbi4KK0FsbCBvcGVyYXRpb25zIHJlcXVpcmVkIGJ5IHRoZSBzdGFuZGFyZCBhcmUgaW1wbGVtZW50ZWQsIGV4Y2VwdCBmb3IKK2NvbnZlcnNpb25zIHRvIGFuZCBmcm9tIGRlY2ltYWwuICBXZSB1c2Ugb25seSB0aGUgc2luZ2xlIHByZWNpc2lvbiwKK2RvdWJsZSBwcmVjaXNpb24gYW5kIGV4dGVuZGVkIGRvdWJsZSBwcmVjaXNpb24gZm9ybWF0cy4gIFRoZSBwb3J0IG9mCitTb2Z0RmxvYXQgdG8gdGhlIEFSTSB3YXMgZG9uZSBieSBQaGlsIEJsdW5kZWxsLCBiYXNlZCBvbiBhbiBlYXJsaWVyCitwb3J0IG9mIFNvZnRGbG9hdCB2ZXJzaW9uIDEgYnkgTmVpbCBDYXJzb24gZm9yIE5ldEJTRC9hcm0zMi4KKworVGhlIGZpbGUgUkVBRE1FLkZQRSBjb250YWlucyBhIGRlc2NyaXB0aW9uIG9mIHdoYXQgaGFzIGJlZW4gaW1wbGVtZW50ZWQKK3NvIGZhciBpbiB0aGUgZW11bGF0b3IuICBUaGUgZmlsZSBUT0RPIGNvbnRhaW5zIGEgaW5mb3JtYXRpb24gb24gd2hhdCAKK3JlbWFpbnMgdG8gYmUgZG9uZSwgYW5kIG90aGVyIGlkZWFzIGZvciB0aGUgZW11bGF0b3IuCisKK0J1ZyByZXBvcnRzLCBjb21tZW50cywgc3VnZ2VzdGlvbnMgc2hvdWxkIGJlIGRpcmVjdGVkIHRvIG1lIGF0Cis8c2NvdHRiQG5ldHdpbmRlci5vcmc+LiAgR2VuZXJhbCByZXBvcnRzIG9mICJ0aGlzIHByb2dyYW0gZG9lc24ndAord29yayBjb3JyZWN0bHkgd2hlbiB5b3VyIGVtdWxhdG9yIGlzIGluc3RhbGxlZCIgYXJlIHVzZWZ1bCBmb3IKK2RldGVybWluaW5nIHRoYXQgYnVncyBzdGlsbCBleGlzdDsgYnV0IGFyZSB2aXJ0dWFsbHkgdXNlbGVzcyB3aGVuCithdHRlbXB0aW5nIHRvIGlzb2xhdGUgdGhlIHByb2JsZW0uICBQbGVhc2UgcmVwb3J0IHRoZW0sIGJ1dCBkb24ndAorZXhwZWN0IHF1aWNrIGFjdGlvbi4gIEJ1Z3Mgc3RpbGwgZXhpc3QuICBUaGUgcHJvYmxlbSByZW1haW5zIGluIGlzb2xhdGluZword2hpY2ggaW5zdHJ1Y3Rpb24gY29udGFpbnMgdGhlIGJ1Zy4gIFNtYWxsIHByb2dyYW1zIGlsbHVzdHJhdGluZyBhIHNwZWNpZmljCitwcm9ibGVtIGFyZSBhIGdvZHNlbmQuCisKK0xlZ2FsIE5vdGljZXMKKy0tLS0tLS0tLS0tLS0KKworVGhlIE5ldFdpbmRlciBGbG9hdGluZyBQb2ludCBFbXVsYXRvciBpcyBmcmVlIHNvZnR3YXJlLiAgRXZlcnl0aGluZyBSZWJlbC5jb20KK2hhcyB3cml0dGVuIGlzIHByb3ZpZGVkIHVuZGVyIHRoZSBHTlUgR1BMLiAgU2VlIHRoZSBmaWxlIENPUFlJTkcgZm9yIGNvcHlpbmcKK2NvbmRpdGlvbnMuICBFeGNsdWRlZCBmcm9tIHRoZSBhYm92ZSBpcyB0aGUgU29mdEZsb2F0IGNvZGUuICBKb2huIEhhdXNlcidzIAorbGVnYWwgbm90aWNlIGZvciBTb2Z0RmxvYXQgaXMgaW5jbHVkZWQgYmVsb3cuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1NvZnRGbG9hdCBMZWdhbCBOb3RpY2UKKworU29mdEZsb2F0IHdhcyB3cml0dGVuIGJ5IEpvaG4gUi4gSGF1c2VyLiAgVGhpcyB3b3JrIHdhcyBtYWRlIHBvc3NpYmxlIGluCitwYXJ0IGJ5IHRoZSBJbnRlcm5hdGlvbmFsIENvbXB1dGVyIFNjaWVuY2UgSW5zdGl0dXRlLCBsb2NhdGVkIGF0IFN1aXRlIDYwMCwKKzE5NDcgQ2VudGVyIFN0cmVldCwgQmVya2VsZXksIENhbGlmb3JuaWEgOTQ3MDQuICBGdW5kaW5nIHdhcyBwYXJ0aWFsbHkKK3Byb3ZpZGVkIGJ5IHRoZSBOYXRpb25hbCBTY2llbmNlIEZvdW5kYXRpb24gdW5kZXIgZ3JhbnQgTUlQLTkzMTE5ODAuICBUaGUKK29yaWdpbmFsIHZlcnNpb24gb2YgdGhpcyBjb2RlIHdhcyB3cml0dGVuIGFzIHBhcnQgb2YgYSBwcm9qZWN0IHRvIGJ1aWxkCithIGZpeGVkLXBvaW50IHZlY3RvciBwcm9jZXNzb3IgaW4gY29sbGFib3JhdGlvbiB3aXRoIHRoZSBVbml2ZXJzaXR5IG9mCitDYWxpZm9ybmlhIGF0IEJlcmtlbGV5LCBvdmVyc2VlbiBieSBQcm9mcy4gTmVsc29uIE1vcmdhbiBhbmQgSm9obiBXYXdyenluZWsuCisKK1RISVMgU09GVFdBUkUgSVMgRElTVFJJQlVURUQgQVMgSVMsIEZPUiBGUkVFLiAgQWx0aG91Z2ggcmVhc29uYWJsZSBlZmZvcnQKK2hhcyBiZWVuIG1hZGUgdG8gYXZvaWQgaXQsIFRISVMgU09GVFdBUkUgTUFZIENPTlRBSU4gRkFVTFRTIFRIQVQgV0lMTCBBVAorVElNRVMgUkVTVUxUIElOIElOQ09SUkVDVCBCRUhBVklPUi4gIFVTRSBPRiBUSElTIFNPRlRXQVJFIElTIFJFU1RSSUNURUQgVE8KK1BFUlNPTlMgQU5EIE9SR0FOSVpBVElPTlMgV0hPIENBTiBBTkQgV0lMTCBUQUtFIEZVTEwgUkVTUE9OU0lCSUxJVFkgRk9SIEFOWQorQU5EIEFMTCBMT1NTRVMsIENPU1RTLCBPUiBPVEhFUiBQUk9CTEVNUyBBUklTSU5HIEZST00gSVRTIFVTRS4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJtL253ZnBlL1JFQURNRS5GUEUgYi9Eb2N1bWVudGF0aW9uL2FybS9ud2ZwZS9SRUFETUUuRlBFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ZjVkN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9ud2ZwZS9SRUFETUUuRlBFCkBAIC0wLDAgKzEsMTU2IEBACitUaGUgZm9sbG93aW5nIGRlc2NyaWJlcyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgTmV0V2luZGVyJ3MgZmxvYXRpbmcgcG9pbnQKK2VtdWxhdG9yLgorCitJbiB0aGUgZm9sbG93aW5nIG5vbWVuY2xhdHVyZSBpcyB1c2VkIHRvIGRlc2NyaWJlIHRoZSBmbG9hdGluZyBwb2ludAoraW5zdHJ1Y3Rpb25zLiAgSXQgZm9sbG93cyB0aGUgY29udmVudGlvbnMgaW4gdGhlIEFSTSBtYW51YWwuCisKKzxTfER8RT4gPSA8c2luZ2xlfGRvdWJsZXxleHRlbmRlZD4sIG5vIGRlZmF1bHQKK3tQfE18Wn0gPSB7cm91bmQgdG8gK2luZmluaXR5LHJvdW5kIHRvIC1pbmZpbml0eSxyb3VuZCB0byB6ZXJvfSwKKyAgICAgICAgICBkZWZhdWx0ID0gcm91bmQgdG8gbmVhcmVzdAorCitOb3RlOiBpdGVtcyBlbmNsb3NlZCBpbiB7fSBhcmUgb3B0aW9uYWwuCisKK0Zsb2F0aW5nIFBvaW50IENvcHJvY2Vzc29yIERhdGEgVHJhbnNmZXIgSW5zdHJ1Y3Rpb25zIChDUERUKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0xERi9TVEYgLSBsb2FkIGFuZCBzdG9yZSBmbG9hdGluZworCis8TERGfFNURj57Y29uZH08U3xEfEU+IEZkLCBSbgorPExERnxTVEY+e2NvbmR9PFN8RHxFPiBGZCwgW1JuLCAjPGV4cHJlc3Npb24+XXshfQorPExERnxTVEY+e2NvbmR9PFN8RHxFPiBGZCwgW1JuXSwgIzxleHByZXNzaW9uPgorCitUaGVzZSBpbnN0cnVjdGlvbnMgYXJlIGZ1bGx5IGltcGxlbWVudGVkLgorCitMRk0vU0ZNIC0gbG9hZCBhbmQgc3RvcmUgbXVsdGlwbGUgZmxvYXRpbmcKKworRm9ybSAxIHN5bnRheDoKKzxMRk18U0ZNPntjb25kfTxTfER8RT4gRmQsIDxjb3VudD4sIFtSbl0KKzxMRk18U0ZNPntjb25kfTxTfER8RT4gRmQsIDxjb3VudD4sIFtSbiwgIzxleHByZXNzaW9uPl17IX0KKzxMRk18U0ZNPntjb25kfTxTfER8RT4gRmQsIDxjb3VudD4sIFtSbl0sICM8ZXhwcmVzc2lvbj4KKworRm9ybSAyIHN5bnRheDoKKzxMRk18U0ZNPntjb25kfTxGRCxFQT4gRmQsIDxjb3VudD4sIFtSbl17IX0KKworVGhlc2UgaW5zdHJ1Y3Rpb25zIGFyZSBmdWxseSBpbXBsZW1lbnRlZC4gIFRoZXkgc3RvcmUvbG9hZCB0aHJlZSB3b3JkcworZm9yIGVhY2ggZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXIgaW50byB0aGUgbWVtb3J5IGxvY2F0aW9uIGdpdmVuIGluIHRoZSAKK2luc3RydWN0aW9uLiAgVGhlIGZvcm1hdCBpbiBtZW1vcnkgaXMgdW5saWtlbHkgdG8gYmUgY29tcGF0aWJsZSB3aXRoCitvdGhlciBpbXBsZW1lbnRhdGlvbnMsIGluIHBhcnRpY3VsYXIgdGhlIGFjdHVhbCBoYXJkd2FyZS4gIFNwZWNpZmljCittZW50aW9uIG9mIHRoaXMgaXMgbWFkZSBpbiB0aGUgQVJNIG1hbnVhbHMuICAKKworRmxvYXRpbmcgUG9pbnQgQ29wcm9jZXNzb3IgUmVnaXN0ZXIgVHJhbnNmZXIgSW5zdHJ1Y3Rpb25zIChDUFJUKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb252ZXJzaW9ucywgcmVhZC93cml0ZSBzdGF0dXMvY29udHJvbCByZWdpc3RlciBpbnN0cnVjdGlvbnMKKworRkxUe2NvbmR9PFMsRCxFPntQLE0sWn0gRm4sIFJkICAgICAgICAgIENvbnZlcnQgaW50ZWdlciB0byBmbG9hdGluZyBwb2ludAorRklYe2NvbmR9e1AsTSxafSBSZCwgRm4gICAgICAgICAgICAgICAgIENvbnZlcnQgZmxvYXRpbmcgcG9pbnQgdG8gaW50ZWdlcgorV0ZTe2NvbmR9IFJkICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlIGZsb2F0aW5nIHBvaW50IHN0YXR1cyByZWdpc3RlcgorUkZTe2NvbmR9IFJkICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWQgZmxvYXRpbmcgcG9pbnQgc3RhdHVzIHJlZ2lzdGVyCitXRkN7Y29uZH0gUmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUgZmxvYXRpbmcgcG9pbnQgY29udHJvbCByZWdpc3RlcgorUkZDe2NvbmR9IFJkICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWQgZmxvYXRpbmcgcG9pbnQgY29udHJvbCByZWdpc3RlcgorCitGTFQvRklYIGFyZSBmdWxseSBpbXBsZW1lbnRlZC4KKworUkZTL1dGUyBhcmUgZnVsbHkgaW1wbGVtZW50ZWQuCisKK1JGQy9XRkMgYXJlIGZ1bGx5IGltcGxlbWVudGVkLiAgUkZDL1dGQyBhcmUgc3VwZXJ2aXNvciBvbmx5IGluc3RydWN0aW9ucywgYW5kCitwcmVzZW50bHkgY2hlY2sgdGhlIENQVSBtb2RlLCBhbmQgZG8gYW4gaW52YWxpZCBpbnN0cnVjdGlvbiB0cmFwIGlmIG5vdCBjYWxsZWQKK2Zyb20gc3VwZXJ2aXNvciBtb2RlLgorCitDb21wYXJlIGluc3RydWN0aW9ucworCitDTUZ7Y29uZH0gRm4sIEZtICAgICAgICBDb21wYXJlIGZsb2F0aW5nCitDTUZFe2NvbmR9IEZuLCBGbSAgICAgICBDb21wYXJlIGZsb2F0aW5nIHdpdGggZXhjZXB0aW9uCitDTkZ7Y29uZH0gRm4sIEZtICAgICAgICBDb21wYXJlIG5lZ2F0ZWQgZmxvYXRpbmcKK0NORkV7Y29uZH0gRm4sIEZtICAgICAgIENvbXBhcmUgbmVnYXRlZCBmbG9hdGluZyB3aXRoIGV4Y2VwdGlvbgorCitUaGVzZSBhcmUgZnVsbHkgaW1wbGVtZW50ZWQuCisKK0Zsb2F0aW5nIFBvaW50IENvcHJvY2Vzc29yIERhdGEgSW5zdHJ1Y3Rpb25zIChDUERUKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0R5YWRpYyBvcGVyYXRpb25zOgorCitBREZ7Y29uZH08U3xEfEU+e1AsTSxafSBGZCwgRm4sIDxGbSwjdmFsdWU+IC0gYWRkCitTVUZ7Y29uZH08U3xEfEU+e1AsTSxafSBGZCwgRm4sIDxGbSwjdmFsdWU+IC0gc3VidHJhY3QKK1JTRntjb25kfTxTfER8RT57UCxNLFp9IEZkLCBGbiwgPEZtLCN2YWx1ZT4gLSByZXZlcnNlIHN1YnRyYWN0CitNVUZ7Y29uZH08U3xEfEU+e1AsTSxafSBGZCwgRm4sIDxGbSwjdmFsdWU+IC0gbXVsdGlwbHkKK0RWRntjb25kfTxTfER8RT57UCxNLFp9IEZkLCBGbiwgPEZtLCN2YWx1ZT4gLSBkaXZpZGUKK1JEVntjb25kfTxTfER8RT57UCxNLFp9IEZkLCBGbiwgPEZtLCN2YWx1ZT4gLSByZXZlcnNlIGRpdmlkZQorCitUaGVzZSBhcmUgZnVsbHkgaW1wbGVtZW50ZWQuCisKK0ZNTHtjb25kfTxTfER8RT57UCxNLFp9IEZkLCBGbiwgPEZtLCN2YWx1ZT4gLSBmYXN0IG11bHRpcGx5CitGRFZ7Y29uZH08U3xEfEU+e1AsTSxafSBGZCwgRm4sIDxGbSwjdmFsdWU+IC0gZmFzdCBkaXZpZGUKK0ZSRHtjb25kfTxTfER8RT57UCxNLFp9IEZkLCBGbiwgPEZtLCN2YWx1ZT4gLSBmYXN0IHJldmVyc2UgZGl2aWRlCisKK1RoZXNlIGFyZSBmdWxseSBpbXBsZW1lbnRlZCBhcyB3ZWxsLiAgVGhleSB1c2UgdGhlIHNhbWUgYWxnb3JpdGhtIGFzIHRoZQorbm9uLWZhc3QgdmVyc2lvbnMuICBIZW5jZSwgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbiB0aGVpciBwZXJmb3JtYW5jZSBpcworZXF1aXZhbGVudCB0byB0aGUgTVVGL0RWRi9SRFYgaW5zdHJ1Y3Rpb25zLiAgVGhpcyBpcyBhY2NlcHRhYmxlIGFjY29yZGluZwordG8gdGhlIEFSTSBtYW51YWwuICBUaGUgbWFudWFsIG5vdGVzIHRoZXNlIGFyZSBkZWZpbmVkIG9ubHkgZm9yIHNpbmdsZQorb3BlcmFuZHMsIG9uIHRoZSBhY3R1YWwgRlBBMTEgaGFyZHdhcmUgdGhleSBkbyBub3Qgd29yayBmb3IgZG91YmxlIG9yCitleHRlbmRlZCBwcmVjaXNpb24gb3BlcmFuZHMuICBUaGUgZW11bGF0b3IgY3VycmVudGx5IGRvZXMgbm90IGNoZWNrCit0aGUgcmVxdWVzdGVkIHBlcm1pc3Npb25zIGNvbmRpdGlvbnMsIGFuZCBwZXJmb3JtcyB0aGUgcmVxdWVzdGVkIG9wZXJhdGlvbi4KKworUk1Ge2NvbmR9PFN8RHxFPntQLE0sWn0gRmQsIEZuLCA8Rm0sI3ZhbHVlPiAtIElFRUUgcmVtYWluZGVyCisKK1RoaXMgaXMgZnVsbHkgaW1wbGVtZW50ZWQuCisKK01vbmFkaWMgb3BlcmF0aW9uczoKKworTVZGe2NvbmR9PFN8RHxFPntQLE0sWn0gRmQsIDxGbSwjdmFsdWU+IC0gbW92ZQorTU5Ge2NvbmR9PFN8RHxFPntQLE0sWn0gRmQsIDxGbSwjdmFsdWU+IC0gbW92ZSBuZWdhdGVkCisKK1RoZXNlIGFyZSBmdWxseSBpbXBsZW1lbnRlZC4KKworQUJTe2NvbmR9PFN8RHxFPntQLE0sWn0gRmQsIDxGbSwjdmFsdWU+IC0gYWJzb2x1dGUgdmFsdWUKK1NRVHtjb25kfTxTfER8RT57UCxNLFp9IEZkLCA8Rm0sI3ZhbHVlPiAtIHNxdWFyZSByb290CitSTkR7Y29uZH08U3xEfEU+e1AsTSxafSBGZCwgPEZtLCN2YWx1ZT4gLSByb3VuZAorCitUaGVzZSBhcmUgZnVsbHkgaW1wbGVtZW50ZWQuCisKK1VSRHtjb25kfTxTfER8RT57UCxNLFp9IEZkLCA8Rm0sI3ZhbHVlPiAtIHVubm9ybWFsaXplZCByb3VuZAorTlJNe2NvbmR9PFN8RHxFPntQLE0sWn0gRmQsIDxGbSwjdmFsdWU+IC0gbm9ybWFsaXplCisKK1RoZXNlIGFyZSBpbXBsZW1lbnRlZC4gIFVSRCBpcyBpbXBsZW1lbnRlZCB1c2luZyB0aGUgc2FtZSBjb2RlIGFzIHRoZSBSTkQKK2luc3RydWN0aW9uLiAgU2luY2UgVVJEIGNhbm5vdCByZXR1cm4gYSB1bm5vcm1hbGl6ZWQgbnVtYmVyLCBOUk0gYmVjb21lcworYSBOT1AuCisKK0xpYnJhcnkgY2FsbHM6CisKK1BPV3tjb25kfTxTfER8RT57UCxNLFp9IEZkLCBGbiwgPEZtLCN2YWx1ZT4gLSBwb3dlcgorUlBXe2NvbmR9PFN8RHxFPntQLE0sWn0gRmQsIEZuLCA8Rm0sI3ZhbHVlPiAtIHJldmVyc2UgcG93ZXIKK1BPTHtjb25kfTxTfER8RT57UCxNLFp9IEZkLCBGbiwgPEZtLCN2YWx1ZT4gLSBwb2xhciBhbmdsZSAoYXJjdGFuMikKKworTE9He2NvbmR9PFN8RHxFPntQLE0sWn0gRmQsIDxGbSwjdmFsdWU+IC0gbG9nYXJpdGhtIHRvIGJhc2UgMTAKK0xHTntjb25kfTxTfER8RT57UCxNLFp9IEZkLCA8Rm0sI3ZhbHVlPiAtIGxvZ2FyaXRobSB0byBiYXNlIGUgCitFWFB7Y29uZH08U3xEfEU+e1AsTSxafSBGZCwgPEZtLCN2YWx1ZT4gLSBleHBvbmVudAorU0lOe2NvbmR9PFN8RHxFPntQLE0sWn0gRmQsIDxGbSwjdmFsdWU+IC0gc2luZQorQ09Te2NvbmR9PFN8RHxFPntQLE0sWn0gRmQsIDxGbSwjdmFsdWU+IC0gY29zaW5lCitUQU57Y29uZH08U3xEfEU+e1AsTSxafSBGZCwgPEZtLCN2YWx1ZT4gLSB0YW5nZW50CitBU057Y29uZH08U3xEfEU+e1AsTSxafSBGZCwgPEZtLCN2YWx1ZT4gLSBhcmNzaW5lCitBQ1N7Y29uZH08U3xEfEU+e1AsTSxafSBGZCwgPEZtLCN2YWx1ZT4gLSBhcmNjb3NpbmUKK0FUTntjb25kfTxTfER8RT57UCxNLFp9IEZkLCA8Rm0sI3ZhbHVlPiAtIGFyY3RhbmdlbnQKKworVGhlc2UgYXJlIG5vdCBpbXBsZW1lbnRlZC4gIFRoZXkgYXJlIG5vdCBjdXJyZW50bHkgaXNzdWVkIGJ5IHRoZSBjb21waWxlciwKK2FuZCBhcmUgaGFuZGxlZCBieSByb3V0aW5lcyBpbiBsaWJjLiAgVGhlc2UgYXJlIG5vdCBpbXBsZW1lbnRlZCBieSB0aGUgRlBBMTEKK2hhcmR3YXJlLCBidXQgYXJlIGhhbmRsZWQgYnkgdGhlIGZsb2F0aW5nIHBvaW50IHN1cHBvcnQgY29kZS4gIFRoZXkgc2hvdWxkIAorYmUgaW1wbGVtZW50ZWQgaW4gZnV0dXJlIHZlcnNpb25zLgorCitTaWduYWxsaW5nOgorCitTaWduYWxzIGFyZSBpbXBsZW1lbnRlZC4gIEhvd2V2ZXIgY3VycmVudCBFTEYga2VybmVscyBwcm9kdWNlZCBieSBSZWJlbC5jb20KK2hhdmUgYSBidWcgaW4gdGhlbSB0aGF0IHByZXZlbnRzIHRoZSBtb2R1bGUgZnJvbSBnZW5lcmF0aW5nIGEgU0lHRlBFLiAgVGhpcworaXMgY2F1c2VkIGJ5IGEgZmFpbHVyZSB0byBhbGlhcyBmcF9jdXJyZW50IHRvIHRoZSBrZXJuZWwgdmFyaWFibGUKK2N1cnJlbnRfc2V0WzBdIGNvcnJlY3RseS4KKworVGhlIGtlcm5lbCBwcm92aWRlZCB3aXRoIHRoaXMgZGlzdHJpYnV0aW9uICh2bWxpbnV4LW53ZnBlLTAuOTMpIGNvbnRhaW5zCithIGZpeCBmb3IgdGhpcyBwcm9ibGVtIGFuZCBhbHNvIGluY29ycG9yYXRlcyB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZQorZW11bGF0b3IgZGlyZWN0bHkuICBJdCBpcyBwb3NzaWJsZSB0byBydW4gd2l0aCBubyBmbG9hdGluZyBwb2ludCBtb2R1bGUKK2xvYWRlZCB3aXRoIHRoaXMga2VybmVsLiAgSXQgaXMgcHJvdmlkZWQgYXMgYSBkZW1vbnN0cmF0aW9uIG9mIHRoZSAKK3RlY2hub2xvZ3kgYW5kIGZvciB0aG9zZSB3aG8gd2FudCB0byBkbyBmbG9hdGluZyBwb2ludCB3b3JrIHRoYXQgZGVwZW5kcworb24gc2lnbmFscy4gIEl0IGlzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnkgdG8gdXNlIHRoZSBtb2R1bGUuCisKK0EgbW9kdWxlIChlaXRoZXIgdGhlIG9uZSBwcm92aWRlZCBieSBSdXNzZWxsIEtpbmcsIG9yIHRoZSBvbmUgaW4gdGhpcyAKK2Rpc3RyaWJ1dGlvbikgY2FuIGJlIGxvYWRlZCB0byByZXBsYWNlIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBlbXVsYXRvcgorYnVpbHQgaW50byB0aGUga2VybmVsLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vbndmcGUvVE9ETyBiL0RvY3VtZW50YXRpb24vYXJtL253ZnBlL1RPRE8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODAyNzA2MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL253ZnBlL1RPRE8KQEAgLTAsMCArMSw2NyBAQAorVE9ETyBMSVNUCistLS0tLS0tLS0KKworUE9Xe2NvbmR9PFN8RHxFPntQLE0sWn0gRmQsIEZuLCA8Rm0sI3ZhbHVlPiAtIHBvd2VyCitSUFd7Y29uZH08U3xEfEU+e1AsTSxafSBGZCwgRm4sIDxGbSwjdmFsdWU+IC0gcmV2ZXJzZSBwb3dlcgorUE9Me2NvbmR9PFN8RHxFPntQLE0sWn0gRmQsIEZuLCA8Rm0sI3ZhbHVlPiAtIHBvbGFyIGFuZ2xlIChhcmN0YW4yKQorCitMT0d7Y29uZH08U3xEfEU+e1AsTSxafSBGZCwgPEZtLCN2YWx1ZT4gLSBsb2dhcml0aG0gdG8gYmFzZSAxMAorTEdOe2NvbmR9PFN8RHxFPntQLE0sWn0gRmQsIDxGbSwjdmFsdWU+IC0gbG9nYXJpdGhtIHRvIGJhc2UgZSAKK0VYUHtjb25kfTxTfER8RT57UCxNLFp9IEZkLCA8Rm0sI3ZhbHVlPiAtIGV4cG9uZW50CitTSU57Y29uZH08U3xEfEU+e1AsTSxafSBGZCwgPEZtLCN2YWx1ZT4gLSBzaW5lCitDT1N7Y29uZH08U3xEfEU+e1AsTSxafSBGZCwgPEZtLCN2YWx1ZT4gLSBjb3NpbmUKK1RBTntjb25kfTxTfER8RT57UCxNLFp9IEZkLCA8Rm0sI3ZhbHVlPiAtIHRhbmdlbnQKK0FTTntjb25kfTxTfER8RT57UCxNLFp9IEZkLCA8Rm0sI3ZhbHVlPiAtIGFyY3NpbmUKK0FDU3tjb25kfTxTfER8RT57UCxNLFp9IEZkLCA8Rm0sI3ZhbHVlPiAtIGFyY2Nvc2luZQorQVROe2NvbmR9PFN8RHxFPntQLE0sWn0gRmQsIDxGbSwjdmFsdWU+IC0gYXJjdGFuZ2VudAorCitUaGVzZSBhcmUgbm90IGltcGxlbWVudGVkLiAgVGhleSBhcmUgbm90IGN1cnJlbnRseSBpc3N1ZWQgYnkgdGhlIGNvbXBpbGVyLAorYW5kIGFyZSBoYW5kbGVkIGJ5IHJvdXRpbmVzIGluIGxpYmMuICBUaGVzZSBhcmUgbm90IGltcGxlbWVudGVkIGJ5IHRoZSBGUEExMQoraGFyZHdhcmUsIGJ1dCBhcmUgaGFuZGxlZCBieSB0aGUgZmxvYXRpbmcgcG9pbnQgc3VwcG9ydCBjb2RlLiAgVGhleSBzaG91bGQgCitiZSBpbXBsZW1lbnRlZCBpbiBmdXR1cmUgdmVyc2lvbnMuCisKK1RoZXJlIGFyZSBhIGNvdXBsZSBvZiB3YXlzIHRvIGFwcHJvYWNoIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGVzZS4gIE9uZQorbWV0aG9kIHdvdWxkIGJlIHRvIHVzZSBhY2N1cmF0ZSB0YWJsZSBtZXRob2RzIGZvciB0aGVzZSByb3V0aW5lcy4gIEkgaGF2ZSAKK2EgY291cGxlIG9mIHBhcGVycyBieSBTLiBHYWwgZnJvbSBJQk0ncyByZXNlYXJjaCBsYWJzIGluIEhhaWZhLCBJc3JhZWwgdGhhdAorc2VlbSB0byBwcm9taXNlIGV4dHJlbWUgYWNjdXJhY3kgKGluIHRoZSBvcmRlciBvZiA5OS44JSkgYW5kIHJlYXNvbmFibGUgc3BlZWQuCitUaGVzZSBtZXRob2RzIGFyZSB1c2VkIGluIEdMSUJDIGZvciBzb21lIG9mIHRoZSB0cmFuc2NlbmRlbnRhbCBmdW5jdGlvbnMuCisKK0Fub3RoZXIgYXBwcm9hY2gsIHdoaWNoIEkga25vdyBsaXR0bGUgYWJvdXQgaXMgQ09SRElDLiAgVGhpcyBzdGFuZHMgZm9yCitDb29yZGluYXRlIFJvdGF0aW9uIERpZ2l0YWwgQ29tcHV0ZXIsIGFuZCBpcyBhIG1ldGhvZCBvZiBjb21wdXRpbmcgCit0cmFuc2NlbmRlbnRhbCBmdW5jdGlvbnMgdXNpbmcgbW9zdGx5IHNoaWZ0cyBhbmQgYWRkcyBhbmQgYSBmZXcKK211bHRpcGxpY2F0aW9ucyBhbmQgZGl2aXNpb25zLiAgVGhlIEFSTSBleGNlbHMgYXQgc2hpZnRzIGFuZCBhZGRzLAorc28gc3VjaCBhIG1ldGhvZCBjb3VsZCBiZSBwcm9taXNpbmcsIGJ1dCByZXF1aXJlcyBtb3JlIHJlc2VhcmNoIHRvIAorZGV0ZXJtaW5lIGlmIGl0IGlzIGZlYXNpYmxlLgorCitSb3VuZGluZyBNZXRob2RzCisKK1RoZSBJRUVFIHN0YW5kYXJkIGRlZmluZXMgNCByb3VuZGluZyBtb2Rlcy4gIFJvdW5kIHRvIG5lYXJlc3QgaXMgdGhlCitkZWZhdWx0LCBidXQgcm91bmRpbmcgdG8gKyBvciAtIGluZmluaXR5IG9yIHJvdW5kIHRvIHplcm8gYXJlIGFsc28gYWxsb3dlZC4KK01hbnkgYXJjaGl0ZWN0dXJlcyBhbGxvdyB0aGUgcm91bmRpbmcgbW9kZSB0byBiZSBzcGVjaWZpZWQgYnkgbW9kaWZ5aW5nIGJpdHMKK2luIGEgY29udHJvbCByZWdpc3Rlci4gIE5vdCBzbyB3aXRoIHRoZSBBUk0gRlBBMTEgYXJjaGl0ZWN0dXJlLiAgVG8gY2hhbmdlCit0aGUgcm91bmRpbmcgbW9kZSBvbmUgbXVzdCBzcGVjaWZ5IGl0IHdpdGggZWFjaCBpbnN0cnVjdGlvbi4KKworVGhpcyBoYXMgbWFkZSBwb3J0aW5nIHNvbWUgYmVuY2htYXJrcyBkaWZmaWN1bHQuICBJdCBpcyBwb3NzaWJsZSB0bworaW50cm9kdWNlIHN1Y2ggYSBjYXBhYmlsaXR5IGludG8gdGhlIGVtdWxhdG9yLiAgVGhlIEZQQ1IgY29udGFpbnMgCitiaXRzIGRlc2NyaWJpbmcgdGhlIHJvdW5kaW5nIG1vZGUuICBUaGUgZW11bGF0b3IgY291bGQgYmUgYWx0ZXJlZCB0byAKK2V4YW1pbmUgYSBmbGFnLCB3aGljaCBpZiBzZXQgZm9yY2VkIGl0IHRvIGlnbm9yZSB0aGUgcm91bmRpbmcgbW9kZSBpbgordGhlIGluc3RydWN0aW9uLCBhbmQgdXNlIHRoZSBtb2RlIHNwZWNpZmllZCBpbiB0aGUgYml0cyBpbiB0aGUgRlBDUi4KKworVGhpcyB3b3VsZCByZXF1aXJlIGEgbWV0aG9kIG9mIGdldHRpbmcvc2V0dGluZyB0aGUgZmxhZywgYW5kIHRoZSBiaXRzCitpbiB0aGUgRlBDUi4gIFRoaXMgcmVxdWlyZXMgYSBrZXJuZWwgY2FsbCBpbiBBcm1MaW51eCwgYXMgV0ZDL1JGQyBhcmUKK3N1cGVydmlzb3Igb25seSBpbnN0cnVjdGlvbnMuICBJZiBhbnlvbmUgaGFzIGFueSBpZGVhcyBvciBjb21tZW50cyBJCit3b3VsZCBsaWtlIHRvIGhlYXIgdGhlbS4KKworW05PVEU6IHB1bGxlZCBvdXQgZnJvbSBzb21lIGRvY3Mgb24gQVJNIGZsb2F0aW5nIHBvaW50LCBzcGVjaWZpY2FsbHkKKyBmb3IgdGhlIEFjb3JuIEZQRSwgYnV0IG5vdCBsaW1pdGVkIHRvIGl0OgorCisgVGhlIGZsb2F0aW5nIHBvaW50IGNvbnRyb2wgcmVnaXN0ZXIgKEZQQ1IpIG1heSBvbmx5IGJlIHByZXNlbnQgaW4gc29tZQorIGltcGxlbWVudGF0aW9uczogaXQgaXMgdGhlcmUgdG8gY29udHJvbCB0aGUgaGFyZHdhcmUgaW4gYW4gaW1wbGVtZW50YXRpb24tCisgc3BlY2lmaWMgbWFubmVyLCBmb3IgZXhhbXBsZSB0byBkaXNhYmxlIHRoZSBmbG9hdGluZyBwb2ludCBzeXN0ZW0uICBUaGUgdXNlcgorIG1vZGUgb2YgdGhlIEFSTSBpcyBub3QgcGVybWl0dGVkIHRvIHVzZSB0aGlzIHJlZ2lzdGVyIChzaW5jZSB0aGUgcmlnaHQgaXMKKyByZXNlcnZlZCB0byBhbHRlciBpdCBiZXR3ZWVuIGltcGxlbWVudGF0aW9ucykgYW5kIHRoZSBXRkMgYW5kIFJGQworIGluc3RydWN0aW9ucyB3aWxsIHRyYXAgaWYgdHJpZWQgaW4gdXNlciBtb2RlLgorCisgSGVuY2UsIHRoZSBhbnN3ZXIgaXMgeWVzLCB5b3UgY291bGQgZG8gdGhpcywgYnV0IHRoZW4geW91IHdpbGwgcnVuIGEgaGlnaAorIHJpc2sgb2YgYmVjb21pbmcgaXNvbGF0ZWQgaWYgYW5kIHdoZW4gaGFyZHdhcmUgRlAgZW11bGF0aW9uIGNvbWVzIG91dAorCQktLSBSdXNzZWxsXS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJtL3B4YS9tZnAudHh0IGIvRG9jdW1lbnRhdGlvbi9hcm0vcHhhL21mcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE3OWU1YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL3B4YS9tZnAudHh0CkBAIC0wLDAgKzEsMjg2IEBACisgICAgICAgICAgICAgICAgIE1GUCBDb25maWd1cmF0aW9uIGZvciBQWEEyeHgvUFhBM3h4IFByb2Nlc3NvcnMKKworCQkJRXJpYyBNaWFvIDxlcmljLm1pYW9AbWFydmVsbC5jb20+CisKK01GUCBzdGFuZHMgZm9yIE11bHRpLUZ1bmN0aW9uIFBpbiwgd2hpY2ggaXMgdGhlIHBpbi1tdXggbG9naWMgb24gUFhBM3h4IGFuZAorbGF0ZXIgUFhBIHNlcmllcyBwcm9jZXNzb3JzLiAgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIGV4aXN0aW5nIE1GUCBBUEksCithbmQgaG93IGJvYXJkL3BsYXRmb3JtIGRyaXZlciBhdXRob3JzIGNvdWxkIG1ha2UgdXNlIG9mIGl0LgorCisgQmFzaWMgQ29uY2VwdAorPT09PT09PT09PT09PT09CisKK1VubGlrZSB0aGUgR1BJTyBhbHRlcm5hdGUgZnVuY3Rpb24gc2V0dGluZ3Mgb24gUFhBMjV4IGFuZCBQWEEyN3gsIGEgbmV3IE1GUAorbWVjaGFuaXNtIGlzIGludHJvZHVjZWQgZnJvbSBQWEEzeHggdG8gY29tcGxldGVseSBtb3ZlIHRoZSBwaW4tbXV4IGZ1bmN0aW9ucworb3V0IG9mIHRoZSBHUElPIGNvbnRyb2xsZXIuIEluIGFkZGl0aW9uIHRvIHBpbi1tdXggY29uZmlndXJhdGlvbnMsIHRoZSBNRlAKK2Fsc28gY29udHJvbHMgdGhlIGxvdyBwb3dlciBzdGF0ZSwgZHJpdmluZyBzdHJlbmd0aCwgcHVsbC11cC9kb3duIGFuZCBldmVudAorZGV0ZWN0aW9uIG9mIGVhY2ggcGluLiAgQmVsb3cgaXMgYSBkaWFncmFtIG9mIGludGVybmFsIGNvbm5lY3Rpb25zIGJldHdlZW4KK3RoZSBNRlAgbG9naWMgYW5kIHRoZSByZW1haW5pbmcgU29DIHBlcmlwaGVyYWxzOgorCisgKy0tLS0tLS0tKworIHwgICAgICAgIHwtLShHUElPMTkpLS0rCisgfCAgR1BJTyAgfCAgICAgICAgICAgIHwKKyB8ICAgICAgICB8LS0oR1BJTy4uLikgfAorICstLS0tLS0tLSsgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgKy0tLS0tLS0tLSsKKyArLS0tLS0tLS0rICAgICAgICAgICAgKy0tLS0tLT58ICAgICAgICAgfAorIHwgIFBXTTIgIHwtLShQV01fT1VUKS0tLS0tLS0tPnwgICBNRlAgICB8CisgKy0tLS0tLS0tKyAgICAgICAgICAgICstLS0tLS0+fCAgICAgICAgIHwtLS0tLS0tPiB0byBleHRlcm5hbCBQQUQKKyAgICAgICAgICAgICAgICAgICAgICAgfCArLS0tLT58ICAgICAgICAgfAorICstLS0tLS0tLSsgICAgICAgICAgICB8IHwgKy0tPnwgICAgICAgICB8CisgfCAgU1NQMiAgfC0tLShUWEQpLS0tLSsgfCB8ICAgKy0tLS0tLS0tLSsKKyArLS0tLS0tLS0rICAgICAgICAgICAgICB8IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKKyArLS0tLS0tLS0rICAgICAgICAgICAgICB8IHwKKyB8IEtleXBhZCB8LS0oTUtPVVQ0KS0tLS0rIHwKKyArLS0tLS0tLS0rICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyArLS0tLS0tLS0rICAgICAgICAgICAgICAgIHwKKyB8ICBVQVJUMiB8LS0tKFRYRCktLS0tLS0tLSsKKyArLS0tLS0tLS0rCisKK05PVEU6IHRoZSBleHRlcm5hbCBwYWQgaXMgbmFtZWQgYXMgTUZQX1BJTl9HUElPMTksIGl0IGRvZXNuJ3QgbmVjZXNzYXJpbHkKK21lYW4gaXQncyBkZWRpY2F0ZWQgZm9yIEdQSU8xOSwgb25seSBhcyBhIGhpbnQgdGhhdCBpbnRlcm5hbGx5IHRoaXMgcGluCitjYW4gYmUgcm91dGVkIGZyb20gR1BJTzE5IG9mIHRoZSBHUElPIGNvbnRyb2xsZXIuCisKK1RvIGJldHRlciB1bmRlcnN0YW5kIHRoZSBjaGFuZ2UgZnJvbSBQWEEyNXgvUFhBMjd4IEdQSU8gYWx0ZXJuYXRlIGZ1bmN0aW9uCit0byB0aGlzIG5ldyBNRlAgbWVjaGFuaXNtLCBoZXJlIGFyZSBzZXZlcmFsIGtleSBwb2ludHM6CisKKyAgMS4gR1BJTyBjb250cm9sbGVyIG9uIFBYQTN4eCBpcyBub3cgYSBkZWRpY2F0ZWQgY29udHJvbGxlciwgc2FtZSBhcyBvdGhlcgorICAgICBpbnRlcm5hbCBjb250cm9sbGVycyBsaWtlIFBXTSwgU1NQIGFuZCBVQVJULCB3aXRoIDEyOCBpbnRlcm5hbCBzaWduYWxzCisgICAgIHdoaWNoIGNhbiBiZSByb3V0ZWQgdG8gZXh0ZXJuYWwgdGhyb3VnaCBvbmUgb3IgbW9yZSBNRlBzIChlLmcuIEdQSU88MD4KKyAgICAgY2FuIGJlIHJvdXRlZCB0aHJvdWdoIGVpdGhlciBNRlBfUElOX0dQSU8wIGFzIHdlbGwgYXMgTUZQX1BJTl9HUElPMF8yLAorICAgICBzZWUgYXJjaC9hcm0vbWFjaC1weGEvbWFjaC9pbmNsdWRlL21mcC1weGEzMDAuaCkKKworICAyLiBBbHRlcm5hdGUgZnVuY3Rpb24gY29uZmlndXJhdGlvbiBpcyByZW1vdmVkIGZyb20gdGhpcyBHUElPIGNvbnRyb2xsZXIsCisgICAgIHRoZSByZW1haW5pbmcgZnVuY3Rpb25zIGFyZSBwdXJlIEdQSU8tc3BlY2lmaWMsIGkuZS4KKworICAgICAgIC0gR1BJTyBzaWduYWwgbGV2ZWwgY29udHJvbAorICAgICAgIC0gR1BJTyBkaXJlY3Rpb24gY29udHJvbAorICAgICAgIC0gR1BJTyBsZXZlbCBjaGFuZ2UgZGV0ZWN0aW9uCisKKyAgMy4gTG93IHBvd2VyIHN0YXRlIGZvciBlYWNoIHBpbiBpcyBub3cgY29udHJvbGxlZCBieSBNRlAsIHRoaXMgbWVhbnMgdGhlCisgICAgIFBHU1J4IHJlZ2lzdGVycyBvbiBQWEEyeHggYXJlIG5vdyB1c2VsZXNzIG9uIFBYQTN4eAorCisgIDQuIFdha2V1cCBkZXRlY3Rpb24gaXMgbm93IGNvbnRyb2xsZWQgYnkgTUZQLCBQV0VSIGRvZXMgbm90IGNvbnRyb2wgdGhlCisgICAgIHdha2V1cCBmcm9tIEdQSU8ocykgYW55IG1vcmUsIGRlcGVuZGluZyBvbiB0aGUgc2xlZXBpbmcgc3RhdGUsIEFEeEVSCisgICAgIChhcyBkZWZpbmVkIGluIHB4YTN4eC1yZWdzLmgpIGNvbnRyb2xzIHRoZSB3YWtldXAgZnJvbSBNRlAKKworTk9URTogd2l0aCBzdWNoIGEgY2xlYXIgc2VwYXJhdGlvbiBvZiBNRlAgYW5kIEdQSU8sIGJ5IEdQSU88eHg+IHdlIG5vcm1hbGx5CittZWFuIGl0IGlzIGEgR1BJTyBzaWduYWwsIGFuZCBieSBNRlA8eHh4PiBvciBwaW4geHh4LCB3ZSBtZWFuIGEgcGh5c2ljYWwKK3BhZCAob3IgYmFsbCkuCisKKyBNRlAgQVBJIFVzYWdlCis9PT09PT09PT09PT09PT0KKworRm9yIGJvYXJkIGNvZGUgd3JpdGVycywgaGVyZSBhcmUgc29tZSBndWlkZWxpbmVzOgorCisxLiBpbmNsdWRlIE9ORSBvZiB0aGUgZm9sbG93aW5nIGhlYWRlciBmaWxlcyBpbiB5b3VyIDxib2FyZD4uYzoKKworICAgLSAjaW5jbHVkZSA8bWFjaC9tZnAtcHhhMjV4Lmg+CisgICAtICNpbmNsdWRlIDxtYWNoL21mcC1weGEyN3guaD4KKyAgIC0gI2luY2x1ZGUgPG1hY2gvbWZwLXB4YTMwMC5oPgorICAgLSAjaW5jbHVkZSA8bWFjaC9tZnAtcHhhMzIwLmg+CisgICAtICNpbmNsdWRlIDxtYWNoL21mcC1weGE5MzAuaD4KKworICAgTk9URTogb25seSBvbmUgZmlsZSBpbiB5b3VyIDxib2FyZD4uYywgZGVwZW5kaW5nIG9uIHRoZSBwcm9jZXNzb3JzIHVzZWQsCisgICBiZWNhdXNlIHBpbiBjb25maWd1cmF0aW9uIGRlZmluaXRpb25zIG1heSBjb25mbGljdCBpbiB0aGVzZSBmaWxlIChpLmUuCisgICBzYW1lIG5hbWUsIGRpZmZlcmVudCBtZWFuaW5nIGFuZCBzZXR0aW5ncyBvbiBkaWZmZXJlbnQgcHJvY2Vzc29ycykuIEUuZy4KKyAgIGZvciB6eWxvbml0ZSBwbGF0Zm9ybSwgd2hpY2ggc3VwcG9ydCBib3RoIFBYQTMwMC9QWEEzMTAgYW5kIFBYQTMyMCwgdHdvCisgICBzZXBhcmF0ZSBmaWxlcyBhcmUgaW50cm9kdWNlZDogenlsb25pdGVfcHhhMzAwLmMgYW5kIHp5bG9uaXRlX3B4YTMyMC5jCisgICAoaW4gYWRkaXRpb24gdG8gaGFuZGxlIE1GUCBjb25maWd1cmF0aW9uIGRpZmZlcmVuY2VzLCB0aGV5IGFsc28gaGFuZGxlCisgICB0aGUgb3RoZXIgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdHdvIGNvbWJpbmF0aW9ucykuCisKKyAgIE5PVEU6IFBYQTMwMCBhbmQgUFhBMzEwIGFyZSBhbG1vc3QgaWRlbnRpY2FsIGluIHBpbiBjb25maWd1cmF0aW9ucyAod2l0aAorICAgUFhBMzEwIHN1cHBvcnRpbmcgc29tZSBhZGRpdGlvbmFsIG9uZXMpLCB0aHVzIHRoZSBkaWZmZXJlbmNlIGlzIGFjdHVhbGx5CisgICBjb3ZlcmVkIGluIGEgc2luZ2xlIG1mcC1weGEzMDAuaC4KKworMi4gcHJlcGFyZSBhbiBhcnJheSBmb3IgdGhlIGluaXRpYWwgcGluIGNvbmZpZ3VyYXRpb25zLCBlLmcuOgorCisgICBzdGF0aWMgdW5zaWduZWQgbG9uZyBtYWluc3RvbmVfcGluX2NvbmZpZ1tdIF9faW5pdGRhdGEgPSB7CisJLyogQ2hpcCBTZWxlY3QgKi8KKwlHUElPMTVfbkNTXzEsCisKKwkvKiBMQ0QgLSAxNmJwcCBBY3RpdmUgVEZUICovCisJR1BJT3h4X1RGVF9MQ0RfMTZCUFAsCisJR1BJTzE2X1BXTTBfT1VULAkvKiBCYWNrbGlnaHQgKi8KKworCS8qIE1NQyAqLworCUdQSU8zMl9NTUNfQ0xLLAorCUdQSU8xMTJfTU1DX0NNRCwKKwlHUElPOTJfTU1DX0RBVF8wLAorCUdQSU8xMDlfTU1DX0RBVF8xLAorCUdQSU8xMTBfTU1DX0RBVF8yLAorCUdQSU8xMTFfTU1DX0RBVF8zLAorCisJLi4uCisKKwkvKiBHUElPICovCisJR1BJTzFfR1BJTyB8IFdBS0VVUF9PTl9FREdFX0JPVEgsCisgICB9OworCisgICBhKSBvbmNlIHRoZSBwaW4gY29uZmlndXJhdGlvbnMgYXJlIHBhc3NlZCB0byBweGF7Mnh4LDN4eH1fbWZwX2NvbmZpZygpLAorICAgYW5kIHdyaXR0ZW4gdG8gdGhlIGFjdHVhbCByZWdpc3RlcnMsIHRoZXkgYXJlIHVzZWxlc3MgYW5kIG1heSBkaXNjYXJkLAorICAgYWRkaW5nICdfX2luaXRkYXRhJyB3aWxsIGhlbHAgc2F2ZSBzb21lIGFkZGl0aW9uYWwgYnl0ZXMgaGVyZS4KKworICAgYikgd2hlbiB0aGVyZSBpcyBvbmx5IG9uZSBwb3NzaWJsZSBwaW4gY29uZmlndXJhdGlvbnMgZm9yIGEgY29tcG9uZW50LAorICAgc29tZSBzaW1wbGlmaWVkIGRlZmluaXRpb25zIGNhbiBiZSB1c2VkLCBlLmcuIEdQSU94eF9URlRfTENEXzE2QlBQIG9uCisgICBQWEEyNXggYW5kIFBYQTI3eCBwcm9jZXNzb3JzCisKKyAgIGMpIGlmIGJ5IGJvYXJkIGRlc2lnbiwgYSBwaW4gY2FuIGJlIGNvbmZpZ3VyZWQgdG8gd2FrZSB1cCB0aGUgc3lzdGVtCisgICBmcm9tIGxvdyBwb3dlciBzdGF0ZSwgaXQgY2FuIGJlICdPUidlZCB3aXRoIGFueSBvZjoKKworICAgICAgV0FLRVVQX09OX0VER0VfQk9USAorICAgICAgV0FLRVVQX09OX0VER0VfUklTRQorICAgICAgV0FLRVVQX09OX0VER0VfRkFMTAorICAgICAgV0FLRVVQX09OX0xFVkVMX0hJR0ggLSBzcGVjaWZpY2FsbHkgZm9yIGVuYWJsaW5nIG9mIGtleXBhZCBHUElPcywKKworICAgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIHBpbiBoYXMgdGhlIGNhcGFiaWxpdHkgb2Ygd2FrZS11cCB0aGUgc3lzdGVtLAorICAgYW5kIG9uIHdoaWNoIGVkZ2UocykuIFRoaXMsIGhvd2V2ZXIsIGRvZXNuJ3QgbmVjZXNzYXJpbHkgbWVhbiB0aGUKKyAgIHBpbiBfd2lsbF8gd2FrZXVwIHRoZSBzeXN0ZW0sIGl0IHdpbGwgb25seSB3aGVuIHNldF9pcnFfd2FrZSgpIGlzCisgICBpbnZva2VkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgR1BJTyBJUlEgKEdQSU9fSVJRKHh4KSBvciBncGlvX3RvX2lycSgpKQorICAgYW5kIGV2ZW50dWFsbHkgY2FsbHMgZ3Bpb19zZXRfd2FrZSgpIGZvciB0aGUgYWN0dWFsIHJlZ2lzdGVyIHNldHRpbmcuCisKKyAgIGQpIGFsdGhvdWdoIFBYQTN4eCBNRlAgc3VwcG9ydHMgZWRnZSBkZXRlY3Rpb24gb24gZWFjaCBwaW4sIHRoZQorICAgaW50ZXJuYWwgbG9naWMgd2lsbCBvbmx5IHdha2V1cCB0aGUgc3lzdGVtIHdoZW4gdGhvc2Ugc3BlY2lmaWMgYml0cworICAgaW4gQUR4RVIgcmVnaXN0ZXJzIGFyZSBzZXQsIHdoaWNoIGNhbiBiZSB3ZWxsIG1hcHBlZCB0byB0aGUKKyAgIGNvcnJlc3BvbmRpbmcgcGVyaXBoZXJhbCwgdGh1cyBzZXRfaXJxX3dha2UoKSBjYW4gYmUgY2FsbGVkIHdpdGggCisgICB0aGUgcGVyaXBoZXJhbCBJUlEgdG8gZW5hYmxlIHRoZSB3YWtldXAuCisKKworIE1GUCBvbiBQWEEzeHgKKz09PT09PT09PT09PT09PQorCitFdmVyeSBleHRlcm5hbCBJL08gcGFkIG9uIFBYQTN4eCAoZXhjbHVkaW5nIHRob3NlIGZvciBzcGVjaWFsIHB1cnBvc2UpIGhhcworb25lIE1GUCBsb2dpYyBhc3NvY2lhdGVkLCBhbmQgaXMgY29udHJvbGxlZCBieSBvbmUgTUZQIHJlZ2lzdGVyIChNRlBSKS4KKworVGhlIE1GUFIgaGFzIHRoZSBmb2xsb3dpbmcgYml0IGRlZmluaXRpb25zIChmb3IgUFhBMzAwL1BYQTMxMC9QWEEzMjApOgorCisgMzEgICAgICAgICAgICAgICAgICAgICAgICAxNiAxNSAxNCAxMyAxMiAxMSAxMCAgOSAgOCAgNyAgNiAgNSAgNCAgMyAgMiAgMSAgMAorICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLSstLSstLSstLSstLSstLSstLSstLSstLSstLSstLSstLSstLSstLSstLSstLSsKKyAgfCAgICAgICAgIFJFU0VSVkVEICAgICAgICB8UFN8UFV8UER8ICBEUklWRSB8U1N8U0R8U098RUN8RUZ8RVJ8LS18IEFGX1NFTCB8CisgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKy0tKworCisgIEJpdCAzOiAgIFJFU0VSVkVECisgIEJpdCA0OiAgIEVER0VfUklTRV9FTiAtIGVuYWJsZSBkZXRlY3Rpb24gb2YgcmlzaW5nIGVkZ2Ugb24gdGhpcyBwaW4KKyAgQml0IDU6ICAgRURHRV9GQUxMX0VOIC0gZW5hYmxlIGRldGVjdGlvbiBvZiBmYWxsaW5nIGVkZ2Ugb24gdGhpcyBwaW4KKyAgQml0IDY6ICAgRURHRV9DTEVBUiAgIC0gZGlzYWJsZSBlZGdlIGRldGVjdGlvbiBvbiB0aGlzIHBpbgorICBCaXQgNzogICBTTEVFUF9PRV9OICAgLSBlbmFibGUgb3V0cHV0cyBkdXJpbmcgbG93IHBvd2VyIG1vZGVzCisgIEJpdCA4OiAgIFNMRUVQX0RBVEEgICAtIG91dHB1dCBkYXRhIG9uIHRoZSBwaW4gZHVyaW5nIGxvdyBwb3dlciBtb2RlcworICBCaXQgOTogICBTTEVFUF9TRUwgICAgLSBzZWxlY3Rpb24gY29udHJvbCBmb3IgbG93IHBvd2VyIG1vZGVzIHNpZ25hbHMKKyAgQml0IDEzOiAgUFVMTERPV05fRU4gIC0gZW5hYmxlIHRoZSBpbnRlcm5hbCBwdWxsLWRvd24gcmVzaXN0b3Igb24gdGhpcyBwaW4KKyAgQml0IDE0OiAgUFVMTFVQX0VOICAgIC0gZW5hYmxlIHRoZSBpbnRlcm5hbCBwdWxsLXVwIHJlc2lzdG9yIG9uIHRoaXMgcGluCisgIEJpdCAxNTogIFBVTExfU0VMICAgICAtIHB1bGwgc3RhdGUgY29udHJvbGxlZCBieSBzZWxlY3RlZCBhbHRlcm5hdGUgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKDApIG9yIGJ5IFBVTEx7VVAsRE9XTn1fRU4gYml0cyAoMSkKKworICBCaXQgMCAtIDI6IEFGX1NFTCAtIGFsdGVybmF0ZSBmdW5jdGlvbiBzZWxlY3Rpb24sIDggcG9zc2liaWxpdGllcywgZnJvbSAwLTcKKyAgQml0IDEwLTEyOiBEUklWRSAgLSBkcml2ZSBzdHJlbmd0aCBhbmQgc2xldyByYXRlCisJCQkwYjAwMCAtIGZhc3QgMW1BCisJCQkwYjAwMSAtIGZhc3QgMm1BCisJCQkwYjAwMiAtIGZhc3QgM21BCisJCQkwYjAwMyAtIGZhc3QgNG1BCisJCQkwYjAwNCAtIHNsb3cgNm1BCisJCQkwYjAwNSAtIGZhc3QgNm1BCisJCQkwYjAwNiAtIHNsb3cgMTBtQQorCQkJMGIwMDcgLSBmYXN0IDEwbUEKKworIE1GUCBEZXNpZ24gZm9yIFBYQTJ4eC9QWEEzeHgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitEdWUgdG8gdGhlIGRpZmZlcmVuY2Ugb2YgcGluLW11eCBoYW5kbGluZyBiZXR3ZWVuIFBYQTJ4eCBhbmQgUFhBM3h4LCBhIHVuaWZpZWQKK01GUCBBUEkgaXMgaW50cm9kdWNlZCB0byBjb3ZlciBib3RoIHNlcmllcyBvZiBwcm9jZXNzb3JzLgorCitUaGUgYmFzaWMgaWRlYSBvZiB0aGlzIGRlc2lnbiBpcyB0byBpbnRyb2R1Y2UgZGVmaW5pdGlvbnMgZm9yIGFsbCBwb3NzaWJsZSBwaW4KK2NvbmZpZ3VyYXRpb25zLCB0aGVzZSBkZWZpbml0aW9ucyBhcmUgcHJvY2Vzc29yIGFuZCBwbGF0Zm9ybSBpbmRlcGVuZGVudCwgYW5kCit0aGUgYWN0dWFsIEFQSSBpbnZva2VkIHRvIGNvbnZlcnQgdGhlc2UgZGVmaW5pdGlvbnMgaW50byByZWdpc3RlciBzZXR0aW5ncyBhbmQKK21ha2UgdGhlbSBlZmZlY3RpdmUgdGhlcmUtYWZ0ZXIuCisKKyAgRmlsZXMgSW52b2x2ZWQKKyAgLS0tLS0tLS0tLS0tLS0KKworICAtIGFyY2gvYXJtL21hY2gtcHhhL2luY2x1ZGUvbWFjaC9tZnAuaAorICAKKyAgZm9yCisgICAgMS4gVW5pZmllZCBwaW4gZGVmaW5pdGlvbnMgLSBlbnVtIGNvbnN0YW50cyBmb3IgYWxsIGNvbmZpZ3VyYWJsZSBwaW5zCisgICAgMi4gcHJvY2Vzc29yLW5ldXRyYWwgYml0IGRlZmluaXRpb25zIGZvciBhIHBvc3NpYmxlIE1GUCBjb25maWd1cmF0aW9uCisKKyAgLSBhcmNoL2FybS9tYWNoLXB4YS9pbmNsdWRlL21hY2gvbWZwLXB4YTN4eC5oCisKKyAgZm9yIFBYQTN4eCBzcGVjaWZpYyBNRlBSIHJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucyBhbmQgUFhBM3h4IGNvbW1vbiBwaW4KKyAgY29uZmlndXJhdGlvbnMKKworICAtIGFyY2gvYXJtL21hY2gtcHhhL2luY2x1ZGUvbWFjaC9tZnAtcHhhMnh4LmgKKworICBmb3IgUFhBMnh4IHNwZWNpZmljIGRlZmluaXRpb25zIGFuZCBQWEEyNXgvUFhBMjd4IGNvbW1vbiBwaW4gY29uZmlndXJhdGlvbnMKKworICAtIGFyY2gvYXJtL21hY2gtcHhhL2luY2x1ZGUvbWFjaC9tZnAtcHhhMjV4LmgKKyAgICBhcmNoL2FybS9tYWNoLXB4YS9pbmNsdWRlL21hY2gvbWZwLXB4YTI3eC5oCisgICAgYXJjaC9hcm0vbWFjaC1weGEvaW5jbHVkZS9tYWNoL21mcC1weGEzMDAuaAorICAgIGFyY2gvYXJtL21hY2gtcHhhL2luY2x1ZGUvbWFjaC9tZnAtcHhhMzIwLmgKKyAgICBhcmNoL2FybS9tYWNoLXB4YS9pbmNsdWRlL21hY2gvbWZwLXB4YTkzMC5oCisKKyAgZm9yIHByb2Nlc3NvciBzcGVjaWZpYyBkZWZpbml0aW9ucworCisgIC0gYXJjaC9hcm0vbWFjaC1weGEvbWZwLXB4YTN4eC5jCisgIC0gYXJjaC9hcm0vbWFjaC1weGEvbWZwLXB4YTJ4eC5jCisKKyAgZm9yIGltcGxlbWVudGF0aW9uIG9mIHRoZSBwaW4gY29uZmlndXJhdGlvbiB0byB0YWtlIGVmZmVjdCBmb3IgdGhlIGFjdHVhbAorICBwcm9jZXNzb3IuCisKKyAgUGluIENvbmZpZ3VyYXRpb24KKyAgLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGUgZm9sbG93aW5nIGNvbW1lbnRzIGFyZSBjb3BpZWQgZnJvbSBtZnAuaCAoc2VlIHRoZSBhY3R1YWwgc291cmNlIGNvZGUKKyAgZm9yIG1vc3QgdXBkYXRlZCBpbmZvKQorICAKKyAgLyoKKyAgICogYSBwb3NzaWJsZSBNRlAgY29uZmlndXJhdGlvbiBpcyByZXByZXNlbnRlZCBieSBhIDMyLWJpdCBpbnRlZ2VyCisgICAqCisgICAqIGJpdCAgMC4uIDkgLSBNRlAgUGluIE51bWJlciAoMTAyNCBQaW5zIE1heGltdW0pCisgICAqIGJpdCAxMC4uMTIgLSBBbHRlcm5hdGUgRnVuY3Rpb24gU2VsZWN0aW9uCisgICAqIGJpdCAxMy4uMTUgLSBEcml2ZSBTdHJlbmd0aAorICAgKiBiaXQgMTYuLjE4IC0gTG93IFBvd2VyIE1vZGUgU3RhdGUKKyAgICogYml0IDE5Li4yMCAtIExvdyBQb3dlciBNb2RlIEVkZ2UgRGV0ZWN0aW9uCisgICAqIGJpdCAyMS4uMjIgLSBSdW4gTW9kZSBQdWxsIFN0YXRlCisgICAqCisgICAqIHRvIGZhY2lsaXRhdGUgdGhlIGRlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgbWFjcm9zIGFyZSBwcm92aWRlZAorICAgKgorICAgKiBNRlBfQ0ZHX0RFRkFVTFQgLSBkZWZhdWx0IE1GUCBjb25maWd1cmF0aW9uIHZhbHVlLCB3aXRoCisgICAqIAkJICBhbHRlcm5hdGUgZnVuY3Rpb24gPSAwLAorICAgKiAJCSAgZHJpdmUgc3RyZW5ndGggPSBmYXN0IDNtQSAoTUZQX0RTMDNYKQorICAgKiAJCSAgbG93IHBvd2VyIG1vZGUgPSBkZWZhdWx0CisgICAqIAkJICBlZGdlIGRldGVjdGlvbiA9IG5vbmUKKyAgICoKKyAgICogTUZQX0NGRwktIGRlZmF1bHQgTUZQUiB2YWx1ZSB3aXRoIGFsdGVybmF0ZSBmdW5jdGlvbgorICAgKiBNRlBfQ0ZHX0RSVgktIGRlZmF1bHQgTUZQUiB2YWx1ZSB3aXRoIGFsdGVybmF0ZSBmdW5jdGlvbiBhbmQKKyAgICogCQkgIHBpbiBkcml2ZSBzdHJlbmd0aAorICAgKiBNRlBfQ0ZHX0xQTQktIGRlZmF1bHQgTUZQUiB2YWx1ZSB3aXRoIGFsdGVybmF0ZSBmdW5jdGlvbiBhbmQKKyAgICogCQkgIGxvdyBwb3dlciBtb2RlCisgICAqIE1GUF9DRkdfWAktIGRlZmF1bHQgTUZQUiB2YWx1ZSB3aXRoIGFsdGVybmF0ZSBmdW5jdGlvbiwKKyAgICogCQkgIHBpbiBkcml2ZSBzdHJlbmd0aCBhbmQgbG93IHBvd2VyIG1vZGUKKyAgICovCisKKyAgIEV4YW1wbGVzIG9mIHBpbiBjb25maWd1cmF0aW9ucyBhcmU6CisKKyAgICNkZWZpbmUgR1BJTzk0X1NTUDNfUlhECQlNRlBfQ0ZHX1goR1BJTzk0LCBBRjEsIERTMDhYLCBGTE9BVCkKKworICAgd2hpY2ggcmVhZHMgR1BJTzk0IGNhbiBiZSBjb25maWd1cmVkIGFzIFNTUDNfUlhELCB3aXRoIGFsdGVybmF0ZSBmdW5jdGlvbgorICAgc2VsZWN0aW9uIG9mIDEsIGRyaXZpbmcgc3RyZW5ndGggb2YgMGIxMDEsIGFuZCBhIGZsb2F0IHN0YXRlIGluIGxvdyBwb3dlcgorICAgbW9kZXMuCisKKyAgIE5PVEU6IHRoaXMgaXMgdGhlIGRlZmF1bHQgc2V0dGluZyBvZiB0aGlzIHBpbiBiZWluZyBjb25maWd1cmVkIGFzIFNTUDNfUlhECisgICB3aGljaCBjYW4gYmUgbW9kaWZpZWQgYSBiaXQgaW4gYm9hcmQgY29kZSwgdGhvdWdoIGl0IGlzIG5vdCByZWNvbW1lbmRlZCB0bworICAgZG8gc28sIHNpbXBseSBiZWNhdXNlIHRoaXMgZGVmYXVsdCBzZXR0aW5nIGlzIHVzdWFsbHkgY2FyZWZ1bGx5IGVuY29kZWQsCisgICBhbmQgaXMgc3VwcG9zZWQgdG8gd29yayBpbiBtb3N0IGNhc2VzLgorCisgIFJlZ2lzdGVyIFNldHRpbmdzCisgIC0tLS0tLS0tLS0tLS0tLS0tCisKKyAgIFJlZ2lzdGVyIHNldHRpbmdzIG9uIFBYQTN4eCBmb3IgYSBwaW4gY29uZmlndXJhdGlvbiBpcyBhY3R1YWxseSB2ZXJ5CisgICBzdHJhaWdodC1mb3J3YXJkLCBtb3N0IGJpdHMgY2FuIGJlIGNvbnZlcnRlZCBkaXJlY3RseSBpbnRvIE1GUFIgdmFsdWUKKyAgIGluIGEgZWFzaWVyIHdheS4gVHdvIHNldHMgb2YgTUZQUiB2YWx1ZXMgYXJlIGNhbGN1bGF0ZWQ6IHRoZSBydW4tdGltZQorICAgb25lcyBhbmQgdGhlIGxvdyBwb3dlciBtb2RlIG9uZXMsIHRvIGFsbG93IGRpZmZlcmVudCBzZXR0aW5ncy4KKworICAgVGhlIGNvbnZlcnNpb24gZnJvbSBhIGdlbmVyaWMgcGluIGNvbmZpZ3VyYXRpb24gdG8gdGhlIGFjdHVhbCByZWdpc3RlcgorICAgc2V0dGluZ3Mgb24gUFhBMnh4IGlzIGEgYml0IGNvbXBsaWNhdGVkOiBtYW55IHJlZ2lzdGVycyBhcmUgaW52b2x2ZWQsCisgICBpbmNsdWRpbmcgR0FGUngsIEdQRFJ4LCBQR1NSeCwgUFdFUiwgUEtXUiwgUEZFUiBhbmQgUFJFUi4gUGxlYXNlIHNlZQorICAgbWZwLXB4YTJ4eC5jIGZvciBob3cgdGhlIGNvbnZlcnNpb24gaXMgbWFkZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJtL3N0aS9vdmVydmlldy50eHQgYi9Eb2N1bWVudGF0aW9uL2FybS9zdGkvb3ZlcnZpZXcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNGU5M2QKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9zdGkvb3ZlcnZpZXcudHh0CkBAIC0wLDAgKzEsMzMgQEAKKwkJCVNUaSBBUk0gTGludXggT3ZlcnZpZXcKKwkJCT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ludHJvZHVjdGlvbgorLS0tLS0tLS0tLS0tCisKKyAgVGhlIFNUIE1pY3JvZWxlY3Ryb25pY3MgTXVsdGltZWRpYSBhbmQgQXBwbGljYXRpb24gUHJvY2Vzc29ycyByYW5nZSBvZgorICBDb3J0ZXhBOSBTeXN0ZW0tb24tQ2hpcCBhcmUgc3VwcG9ydGVkIGJ5IHRoZSAnU1RpJyBwbGF0Zm9ybSBvZgorICBBUk0gTGludXguIEN1cnJlbnRseSBTVGlINDE1LCBTVGlINDE2IFNPQ3MgYXJlIHN1cHBvcnRlZCB3aXRoIGJvdGgKKyAgQjIwMDAgYW5kIEIyMDIwIFJlZmVyZW5jZSBib2FyZHMuCisKKworICBjb25maWd1cmF0aW9uCisgIC0tLS0tLS0tLS0tLS0KKworICBBIGdlbmVyaWMgY29uZmlndXJhdGlvbiBpcyBwcm92aWRlZCBmb3IgYm90aCBTVGlINDE1LzQxNiwgYW5kIGNhbiBiZSB1c2VkIGFzIHRoZQorICBkZWZhdWx0IGJ5CisJbWFrZSBzdGloNDF4X2RlZmNvbmZpZworCisgIExheW91dAorICAtLS0tLS0KKyAgQWxsIHRoZSBmaWxlcyBmb3IgbXVsdGlwbGUgbWFjaGluZSBmYW1pbGllcyAoU1RpSDQxNSwgU1RpSDQxNiwgYW5kIFNUaUcxMjUpCisgIGFyZSBsb2NhdGVkIGluIHRoZSBwbGF0Zm9ybSBjb2RlIGNvbnRhaW5lZCBpbiBhcmNoL2FybS9tYWNoLXN0aQorCisgIFRoZXJlIGlzIGEgZ2VuZXJpYyBib2FyZCBib2FyZC1kdC5jIGluIHRoZSBtYWNoIGZvbGRlciB3aGljaCBzdXBwb3J0CisgIEZsYXR0ZW5lZCBEZXZpY2UgVHJlZSwgd2hpY2ggbWVhbnMsIEl0IHdvcmtzIHdpdGggYW55IGNvbXBhdGlibGUgYm9hcmQgd2l0aAorICBEZXZpY2UgVHJlZXMuCisKKworICBEb2N1bWVudCBBdXRob3IKKyAgLS0tLS0tLS0tLS0tLS0tCisKKyAgU3Jpbml2YXMgS2FuZGFnYXRsYSA8c3Jpbml2YXMua2FuZGFnYXRsYUBzdC5jb20+LCAoYykgMjAxMyBTVCBNaWNyb2VsZWN0cm9uaWNzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS9zdGkvc3RpaDQwNy1vdmVydmlldy50eHQgYi9Eb2N1bWVudGF0aW9uL2FybS9zdGkvc3RpaDQwNy1vdmVydmlldy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM0M2YzMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL3N0aS9zdGloNDA3LW92ZXJ2aWV3LnR4dApAQCAtMCwwICsxLDE4IEBACisJCQlTVGlINDA3IE92ZXJ2aWV3CisJCQk9PT09PT09PT09PT09PT09CisKK0ludHJvZHVjdGlvbgorLS0tLS0tLS0tLS0tCisKKyAgICBUaGUgU1RpSDQwNyBpcyB0aGUgbmV3IGdlbmVyYXRpb24gb2YgU29DIGZvciBNdWx0aS1IRCwgQVZDIHNldC10b3AgYm94ZXMKKyAgICBhbmQgc2VydmVyL2Nvbm5lY3RlZCBjbGllbnQgYXBwbGljYXRpb24gZm9yIHNhdGVsbGl0ZSwgY2FibGUsIHRlcnJlc3RyaWFsCisgICAgYW5kIElQLVNUQiBtYXJrZXRzLgorCisgICAgRmVhdHVyZXMKKyAgICAtIEFSTSBDb3J0ZXgtQTkgMS41IEdIeiBkdWFsIGNvcmUgQ1BVICgyOG5tKQorICAgIC0gU0FUQTIsIFVTQiAzLjAsIFBDSWUsIEdiaXQgRXRoZXJuZXQKKworICBEb2N1bWVudCBBdXRob3IKKyAgLS0tLS0tLS0tLS0tLS0tCisKKyAgTWF4aW1lIENvcXVlbGluIDxtYXhpbWUuY29xdWVsaW5Ac3QuY29tPiwgKGMpIDIwMTQgU1QgTWljcm9lbGVjdHJvbmljcwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vc3RpL3N0aWg0MTUtb3ZlcnZpZXcudHh0IGIvRG9jdW1lbnRhdGlvbi9hcm0vc3RpL3N0aWg0MTUtb3ZlcnZpZXcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzODNlMzMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9zdGkvc3RpaDQxNS1vdmVydmlldy50eHQKQEAgLTAsMCArMSwxMiBAQAorCQkJU1RpSDQxNSBPdmVydmlldworCQkJPT09PT09PT09PT09PT09PQorCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLQorCisgICAgVGhlIFNUaUg0MTUgaXMgdGhlIG5leHQgZ2VuZXJhdGlvbiBvZiBIRCwgQVZDIHNldC10b3AgYm94IHByb2Nlc3NvcnMKKyAgICBmb3Igc2F0ZWxsaXRlLCBjYWJsZSwgdGVycmVzdHJpYWwgYW5kIElQLVNUQiBtYXJrZXRzLgorCisgICAgRmVhdHVyZXMKKyAgICAtIEFSTSBDb3J0ZXgtQTkgMS4wIEdIeiwgZHVhbC1jb3JlIENQVQorICAgIC0gU0FUQTJ4MixVU0IgMi4weDMsIFBDSWUsIEdiaXQgRXRoZXJuZXQgTUFDeDIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJtL3N0aS9zdGloNDE2LW92ZXJ2aWV3LnR4dCBiL0RvY3VtZW50YXRpb24vYXJtL3N0aS9zdGloNDE2LW92ZXJ2aWV3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTg0NDRjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vc3RpL3N0aWg0MTYtb3ZlcnZpZXcudHh0CkBAIC0wLDAgKzEsMTIgQEAKKwkJCVNUaUg0MTYgT3ZlcnZpZXcKKwkJCT09PT09PT09PT09PT09PT0KKworSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0KKworICAgIFRoZSBTVGlINDE2IGlzIHRoZSBuZXh0IGdlbmVyYXRpb24gb2YgSEQsIEFWQyBzZXQtdG9wIGJveCBwcm9jZXNzb3JzCisgICAgZm9yIHNhdGVsbGl0ZSwgY2FibGUsIHRlcnJlc3RyaWFsIGFuZCBJUC1TVEIgbWFya2V0cy4KKworICAgIEZlYXR1cmVzCisgICAgLSBBUk0gQ29ydGV4LUE5IDEuMiBHSHogZHVhbCBjb3JlIENQVQorICAgIC0gU0FUQTJ4MixVU0IgMi4weDMsIFBDSWUsIEdiaXQgRXRoZXJuZXQgTUFDeDIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJtL3N0aS9zdGloNDE4LW92ZXJ2aWV3LnR4dCBiL0RvY3VtZW50YXRpb24vYXJtL3N0aS9zdGloNDE4LW92ZXJ2aWV3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2Q4ZmM4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vc3RpL3N0aWg0MTgtb3ZlcnZpZXcudHh0CkBAIC0wLDAgKzEsMjAgQEAKKwkJCVNUaUg0MTggT3ZlcnZpZXcKKwkJCT09PT09PT09PT09PT09PT0KKworSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0KKworICAgIFRoZSBTVGlINDE4IGlzIHRoZSBuZXcgZ2VuZXJhdGlvbiBvZiBTb0MgZm9yIFVIRHA2MCBzZXQtdG9wIGJveGVzCisgICAgYW5kIHNlcnZlci9jb25uZWN0ZWQgY2xpZW50IGFwcGxpY2F0aW9uIGZvciBzYXRlbGxpdGUsIGNhYmxlLCB0ZXJyZXN0cmlhbAorICAgIGFuZCBJUC1TVEIgbWFya2V0cy4KKworICAgIEZlYXR1cmVzCisgICAgLSBBUk0gQ29ydGV4LUE5IDEuNSBHSHogcXVhZCBjb3JlIENQVSAoMjhubSkKKyAgICAtIFNBVEEyLCBVU0IgMy4wLCBQQ0llLCBHYml0IEV0aGVybmV0CisgICAgLSBIRVZDIEw1LjEgTWFpbiAxMAorICAgIC0gVlA5CisKKyAgRG9jdW1lbnQgQXV0aG9yCisgIC0tLS0tLS0tLS0tLS0tLQorCisgIE1heGltZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHN0LmNvbT4sIChjKSAyMDE1IFNUIE1pY3JvZWxlY3Ryb25pY3MKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJtL3N0bTMyL292ZXJ2aWV3LnR4dCBiL0RvY3VtZW50YXRpb24vYXJtL3N0bTMyL292ZXJ2aWV3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWFlZDU1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vc3RtMzIvb3ZlcnZpZXcudHh0CkBAIC0wLDAgKzEsMzIgQEAKKwkJCVNUTTMyIEFSTSBMaW51eCBPdmVydmlldworCQkJPT09PT09PT09PT09PT09PT09PT09PT09CisKK0ludHJvZHVjdGlvbgorLS0tLS0tLS0tLS0tCisKKyAgVGhlIFNUTWljcm9lbGVjdHJvbmljcyBmYW1pbHkgb2YgQ29ydGV4LU0gYmFzZWQgTUNVcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZQorICAnU1RNMzInIHBsYXRmb3JtIG9mIEFSTSBMaW51eC4gQ3VycmVudGx5IG9ubHkgdGhlIFNUTTMyRjQyOSBpcyBzdXBwb3J0ZWQuCisKKworQ29uZmlndXJhdGlvbgorLS0tLS0tLS0tLS0tLQorCisgIEEgZ2VuZXJpYyBjb25maWd1cmF0aW9uIGlzIHByb3ZpZGVkIGZvciBTVE0zMiBmYW1pbHksIGFuZCBjYW4gYmUgdXNlZCBhcyB0aGUKKyAgZGVmYXVsdCBieQorCW1ha2Ugc3RtMzJfZGVmY29uZmlnCisKK0xheW91dAorLS0tLS0tCisKKyAgQWxsIHRoZSBmaWxlcyBmb3IgbXVsdGlwbGUgbWFjaGluZSBmYW1pbGllcyBhcmUgbG9jYXRlZCBpbiB0aGUgcGxhdGZvcm0gY29kZQorICBjb250YWluZWQgaW4gYXJjaC9hcm0vbWFjaC1zdG0zMgorCisgIFRoZXJlIGlzIGEgZ2VuZXJpYyBib2FyZCBib2FyZC1kdC5jIGluIHRoZSBtYWNoIGZvbGRlciB3aGljaCBzdXBwb3J0CisgIEZsYXR0ZW5lZCBEZXZpY2UgVHJlZSwgd2hpY2ggbWVhbnMsIGl0IHdvcmtzIHdpdGggYW55IGNvbXBhdGlibGUgYm9hcmQgd2l0aAorICBEZXZpY2UgVHJlZXMuCisKKworRG9jdW1lbnQgQXV0aG9yCistLS0tLS0tLS0tLS0tLS0KKworICBNYXhpbWUgQ29xdWVsaW4gPG1jb3F1ZWxpbi5zdG0zMkBnbWFpbC5jb20+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS9zdG0zMi9zdG0zMmY0Mjktb3ZlcnZpZXcudHh0IGIvRG9jdW1lbnRhdGlvbi9hcm0vc3RtMzIvc3RtMzJmNDI5LW92ZXJ2aWV3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjA2ODIyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vc3RtMzIvc3RtMzJmNDI5LW92ZXJ2aWV3LnR4dApAQCAtMCwwICsxLDIyIEBACisJCQlTVE0zMkY0MjkgT3ZlcnZpZXcKKwkJCT09PT09PT09PT09PT09PT09PQorCisgIEludHJvZHVjdGlvbgorICAtLS0tLS0tLS0tLS0KKwlUaGUgU1RNMzJGNDI5IGlzIGEgQ29ydGV4LU00IE1DVSBhaW1lZCBhdCB2YXJpb3VzIGFwcGxpY2F0aW9ucy4KKwlJdCBmZWF0dXJlczoKKwktIEFSTSBDb3J0ZXgtTTQgdXAgdG8gMTgwTUh6IHdpdGggRlBVCisJLSAyTUIgaW50ZXJuYWwgRmxhc2ggTWVtb3J5CisJLSBFeHRlcm5hbCBtZW1vcnkgc3VwcG9ydCB0aHJvdWdoIEZNQyBjb250cm9sbGVyIChQU1JBTSwgU0RSQU0sIE5PUiwgTkFORCkKKwktIEkyQywgU1BJLCBTQUksIENBTiwgVVNCIE9URywgRXRoZXJuZXQgY29udHJvbGxlcnMKKwktIExDRCBjb250cm9sbGVyICYgQ2FtZXJhIGludGVyZmFjZQorCS0gQ3J5cHRvZ3JhcGhpYyBwcm9jZXNzb3IKKworICBSZXNvdXJjZXMKKyAgLS0tLS0tLS0tCisJRGF0YXNoZWV0IGFuZCByZWZlcmVuY2UgbWFudWFsIGFyZSBwdWJsaWNseSBhdmFpbGFibGUgb24gU1Qgd2Vic2l0ZToKKwktIGh0dHA6Ly93d3cuc3QuY29tL3dlYi9lbi9jYXRhbG9nL21tYy9GTTE0MS9TQzExNjkvU1MxNTc3L0xOMTgwNj9lY21wPXN0bTMyZjQyOS00MzlfcHJvbl9wci1jZXMyMDE0X25vdjIwMTMKKworICBEb2N1bWVudCBBdXRob3IKKyAgLS0tLS0tLS0tLS0tLS0tCisJTWF4aW1lIENvcXVlbGluIDxtY29xdWVsaW4uc3RtMzJAZ21haWwuY29tPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vc3VueGkvUkVBRE1FIGIvRG9jdW1lbnRhdGlvbi9hcm0vc3VueGkvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMGQyNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9zdW54aS9SRUFETUUKQEAgLTAsMCArMSw3NyBAQAorQVJNIEFsbHdpbm5lciBTb0NzCis9PT09PT09PT09PT09PT09PT0KKworVGhpcyBkb2N1bWVudCBsaXN0cyBhbGwgdGhlIEFSTSBBbGx3aW5uZXIgU29DcyB0aGF0IGFyZSBjdXJyZW50bHkKK3N1cHBvcnRlZCBpbiBtYWlubGluZSBieSB0aGUgTGludXgga2VybmVsLiBUaGlzIGRvY3VtZW50IHdpbGwgYWxzbworcHJvdmlkZSBsaW5rcyB0byBkb2N1bWVudGF0aW9uIGFuZC9vciBkYXRhc2hlZXQgZm9yIHRoZXNlIFNvQ3MuCisKK1N1blhpIGZhbWlseQorLS0tLS0tLS0tLS0tCisgIExpbnV4IGtlcm5lbCBtYWNoIGRpcmVjdG9yeTogYXJjaC9hcm0vbWFjaC1zdW54aQorCisgIEZsYXZvcnM6CisgICAgKiBBUk05MjYgYmFzZWQgU29DcworICAgICAgLSBBbGx3aW5uZXIgRjIwIChzdW4zaSkKKyAgICAgICAgKyBOb3QgU3VwcG9ydGVkCisKKyAgICAqIEFSTSBDb3J0ZXgtQTggYmFzZWQgU29DcworICAgICAgLSBBbGx3aW5uZXIgQTEwIChzdW40aSkKKyAgICAgICAgKyBEYXRhc2hlZXQKKwkgIGh0dHA6Ly9kbC5saW51eC1zdW54aS5vcmcvQTEwL0ExMCUyMERhdGFzaGVldCUyMC0lMjB2MS4yMSUyMCUyODIwMTItMDQtMDYlMjkucGRmCisJKyBVc2VyIE1hbnVhbAorCSAgaHR0cDovL2RsLmxpbnV4LXN1bnhpLm9yZy9BMTAvQTEwJTIwVXNlciUyME1hbnVhbCUyMC0lMjB2MS4yMCUyMCUyODIwMTItMDQtMDklMmMlMjBERUNSWVBURUQlMjkucGRmCisKKyAgICAgIC0gQWxsd2lubmVyIEExMHMgKHN1bjVpKQorICAgICAgICArIERhdGFzaGVldAorICAgICAgICAgIGh0dHA6Ly9kbC5saW51eC1zdW54aS5vcmcvQTEwcy9BMTBzJTIwRGF0YXNoZWV0JTIwLSUyMHYxLjIwJTIwJTI4MjAxMi0wMy0yNyUyOS5wZGYKKworICAgICAgLSBBbGx3aW5uZXIgQTEzIC8gUjggKHN1bjVpKQorICAgICAgICArIERhdGFzaGVldAorCSAgaHR0cDovL2RsLmxpbnV4LXN1bnhpLm9yZy9BMTMvQTEzJTIwRGF0YXNoZWV0JTIwLSUyMHYxLjEyJTIwJTI4MjAxMi0wMy0yOSUyOS5wZGYKKyAgICAgICAgKyBVc2VyIE1hbnVhbAorICAgICAgICAgIGh0dHA6Ly9kbC5saW51eC1zdW54aS5vcmcvQTEzL0ExMyUyMFVzZXIlMjBNYW51YWwlMjAtJTIwdjEuMiUyMCUyODIwMTMtMDEtMDglMjkucGRmCisKKyAgICAqIER1YWwgQVJNIENvcnRleC1BNyBiYXNlZCBTb0NzCisgICAgICAtIEFsbHdpbm5lciBBMjAgKHN1bjdpKQorICAgICAgICArIFVzZXIgTWFudWFsCisgICAgICAgICAgaHR0cDovL2RsLmxpbnV4LXN1bnhpLm9yZy9BMjAvQTIwJTIwVXNlciUyME1hbnVhbCUyMDIwMTMtMDMtMjIucGRmCisKKyAgICAgIC0gQWxsd2lubmVyIEEyMyAoc3VuOGkpCisgICAgICAgICsgRGF0YXNoZWV0CisgICAgICAgICAgaHR0cDovL2RsLmxpbnV4LXN1bnhpLm9yZy9BMjMvQTIzJTIwRGF0YXNoZWV0JTIwVjEuMCUyMDIwMTMwODMwLnBkZgorICAgICAgICArIFVzZXIgTWFudWFsCisgICAgICAgICAgaHR0cDovL2RsLmxpbnV4LXN1bnhpLm9yZy9BMjMvQTIzJTIwVXNlciUyME1hbnVhbCUyMFYxLjAlMjAyMDEzMDgzMC5wZGYKKworICAgICogUXVhZCBBUk0gQ29ydGV4LUE3IGJhc2VkIFNvQ3MKKyAgICAgIC0gQWxsd2lubmVyIEEzMSAoc3VuNmkpCisgICAgICAgICsgRGF0YXNoZWV0CisgICAgICAgICAgaHR0cDovL2RsLmxpbnV4LXN1bnhpLm9yZy9BMzEvQTN4X3JlbGVhc2VfZG9jdW1lbnQvQTMxL0lDL0EzMSUyMGRhdGFzaGVldCUyMFYxLjMlMjAyMDEzMTEwNi5wZGYKKyAgICAgICAgKyBVc2VyIE1hbnVhbAorICAgICAgICAgIGh0dHA6Ly9kbC5saW51eC1zdW54aS5vcmcvQTMxL0EzeF9yZWxlYXNlX2RvY3VtZW50L0EzMS9JQy9BMzElMjB1c2VyJTIwbWFudWFsJTIwVjEuMSUyMDIwMTMwNjMwLnBkZgorCisgICAgICAtIEFsbHdpbm5lciBBMzFzIChzdW42aSkKKyAgICAgICAgKyBEYXRhc2hlZXQKKyAgICAgICAgICBodHRwOi8vZGwubGludXgtc3VueGkub3JnL0EzMS9BM3hfcmVsZWFzZV9kb2N1bWVudC9BMzFzL0lDL0EzMXMlMjBkYXRhc2hlZXQlMjBWMS4zJTIwMjAxMzExMDYucGRmCisgICAgICAgICsgVXNlciBNYW51YWwKKyAgICAgICAgICBodHRwOi8vZGwubGludXgtc3VueGkub3JnL0EzMS9BM3hfcmVsZWFzZV9kb2N1bWVudC9BMzFzL0lDL0EzMXMlMjBVc2VyJTIwTWFudWFsJTIwJTIwVjEuMCUyMDIwMTMwMzIyLnBkZgorCisgICAgICAtIEFsbHdpbm5lciBBMzMgKHN1bjhpKQorICAgICAgICArIERhdGFzaGVldAorICAgICAgICAgIGh0dHA6Ly9kbC5saW51eC1zdW54aS5vcmcvQTMzL0EzMyUyMERhdGFzaGVldCUyMHJlbGVhc2UlMjAxLjEucGRmCisgICAgICAgICsgVXNlciBNYW51YWwKKyAgICAgICAgICBodHRwOi8vZGwubGludXgtc3VueGkub3JnL0EzMy9BMzMlMjB1c2VyJTIwbWFudWFsJTIwcmVsZWFzZSUyMDEuMS5wZGYKKworICAgICAgLSBBbGx3aW5uZXIgSDMgKHN1bjhpKQorICAgICAgICArIERhdGFzaGVldAorICAgICAgICAgIGh0dHA6Ly9kbC5saW51eC1zdW54aS5vcmcvSDMvQWxsd2lubmVyX0gzX0RhdGFzaGVldF9WMS4wLnBkZgorCisgICAgKiBRdWFkIEFSTSBDb3J0ZXgtQTE1LCBRdWFkIEFSTSBDb3J0ZXgtQTcgYmFzZWQgU29DcworICAgICAgLSBBbGx3aW5uZXIgQTgwCisgICAgICAgICsgRGF0YXNoZWV0CisJICBodHRwOi8vZGwubGludXgtc3VueGkub3JnL0E4MC9BODBfRGF0YXNoZWV0X1JldmlzaW9uXzEuMF8wNDA0LnBkZgorCisgICAgKiBPY3RhIEFSTSBDb3J0ZXgtQTcgYmFzZWQgU29DcworICAgICAgLSBBbGx3aW5uZXIgQTgzVAorICAgICAgICArIE5vdCBTdXBwb3J0ZWQKKyAgICAgICAgKyBEYXRhc2hlZXQKKyAgICAgICAgICBodHRwOi8vZGwubGludXgtc3VueGkub3JnL0E4M1QvQTgzVF9kYXRhc2hlZXRfUmV2aXNpb25fMS4xLnBkZgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vc3VueGkvY2xvY2tzLnR4dCBiL0RvY3VtZW50YXRpb24vYXJtL3N1bnhpL2Nsb2Nrcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA5YTg4YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL3N1bnhpL2Nsb2Nrcy50eHQKQEAgLTAsMCArMSw1NiBAQAorRnJlcXVlbnRseSBhc2tlZCBxdWVzdGlvbnMgYWJvdXQgdGhlIHN1bnhpIGNsb2NrIHN5c3RlbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGRvY3VtZW50IGNvbnRhaW5zIHVzZWZ1bCBiaXRzIG9mIGluZm9ybWF0aW9uIHRoYXQgcGVvcGxlIHRlbmQgdG8gYXNrCithYm91dCB0aGUgc3VueGkgY2xvY2sgc3lzdGVtLCBhcyB3ZWxsIGFzIGFjY29tcGFueWluZyBBU0NJSSBhcnQgd2hlbiBhZGVxdWF0ZS4KKworUTogV2h5IGlzIHRoZSBtYWluIDI0TUh6IG9zY2lsbGF0b3IgZ2F0YWJsZT8gV291bGRuJ3QgdGhhdCBicmVhayB0aGUKKyAgIHN5c3RlbT8KKworQTogVGhlIDI0TUh6IG9zY2lsbGF0b3IgYWxsb3dzIGdhdGluZyB0byBzYXZlIHBvd2VyLiBJbmRlZWQsIGlmIGdhdGVkCisgICBjYXJlbGVzc2x5IHRoZSBzeXN0ZW0gd291bGQgc3RvcCBmdW5jdGlvbmluZywgYnV0IHdpdGggdGhlIHJpZ2h0CisgICBzdGVwcywgb25lIGNhbiBnYXRlIGl0IGFuZCBrZWVwIHRoZSBzeXN0ZW0gcnVubmluZy4gQ29uc2lkZXIgdGhpcworICAgc2ltcGxpZmllZCBzdXNwZW5kIGV4YW1wbGU6CisKKyAgIFdoaWxlIHRoZSBzeXN0ZW0gaXMgb3BlcmF0aW9uYWwsIHlvdSB3b3VsZCBzZWUgc29tZXRoaW5nIGxpa2UKKworICAgICAgMjRNSHogICAgICAgICAzMmtIegorICAgICAgIHwKKyAgICAgIFBMTDEKKyAgICAgICBcCisgICAgICAgIFxfIENQVSBNdXgKKyAgICAgICAgICAgICB8CisgICAgICAgICAgIFtDUFVdCisKKyAgIFdoZW4geW91IGFyZSBhYm91dCB0byBzdXNwZW5kLCB5b3Ugc3dpdGNoIHRoZSBDUFUgTXV4IHRvIHRoZSAzMmtIegorICAgb3NjaWxsYXRvcjoKKworICAgICAgMjRNaHogICAgICAgICAzMmtIegorICAgICAgIHwgICAgICAgICAgICAgIHwKKyAgICAgIFBMTDEgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAvCisgICAgICAgICAgIENQVSBNdXggXy8KKyAgICAgICAgICAgICB8CisgICAgICAgICAgIFtDUFVdCisKKyAgICBGaW5hbGx5IHlvdSBjYW4gZ2F0ZSB0aGUgbWFpbiBvc2NpbGxhdG9yCisKKyAgICAgICAgICAgICAgICAgICAgMzJrSHoKKyAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgLworICAgICAgICAgICBDUFUgTXV4IF8vCisgICAgICAgICAgICAgfAorICAgICAgICAgICBbQ1BVXQorCitROiBXZXJlIGNhbiBJIGxlYXJuIG1vcmUgYWJvdXQgdGhlIHN1bnhpIGNsb2Nrcz8KKworQTogVGhlIGxpbnV4LXN1bnhpIHdpa2kgY29udGFpbnMgYSBwYWdlIGRvY3VtZW50aW5nIHRoZSBjbG9jayByZWdpc3RlcnMsCisgICB5b3UgY2FuIGZpbmQgaXQgYXQKKworICAgICAgICBodHRwOi8vbGludXgtc3VueGkub3JnL0ExMC9DQ00KKworICAgVGhlIGF1dGhvcml0YXRpdmUgc291cmNlIGZvciBpbmZvcm1hdGlvbiBhdCB0aGlzIHRpbWUgaXMgdGhlIGNjbXUgZHJpdmVyCisgICByZWxlYXNlZCBieSBBbGx3aW5uZXIsIHlvdSBjYW4gZmluZCBpdCBhdAorCisgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9saW51eC1zdW54aS9saW51eC1zdW54aS90cmVlL3N1bnhpLTMuMC9hcmNoL2FybS9tYWNoLXN1bjRpL2Nsb2NrL2NjbXUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJtL3N3cF9lbXVsYXRpb24gYi9Eb2N1bWVudGF0aW9uL2FybS9zd3BfZW11bGF0aW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmOTAzZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9zd3BfZW11bGF0aW9uCkBAIC0wLDAgKzEsMjcgQEAKK1NvZnR3YXJlIGVtdWxhdGlvbiBvZiBkZXByZWNhdGVkIFNXUCBpbnN0cnVjdGlvbiAoQ09ORklHX1NXUF9FTVVMQVRFKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FSTXY2IGFyY2hpdGVjdHVyZSBkZXByZWNhdGVzIHVzZSBvZiB0aGUgU1dQL1NXUEIgaW5zdHJ1Y3Rpb25zLCBhbmQgcmVjb21tZWRzCittb3ZpbmcgdG8gdGhlIGxvYWQtbG9ja2VkL3N0b3JlLWNvbmRpdGlvbmFsIGluc3RydWN0aW9ucyBMRFJFWCBhbmQgU1RSRVguCisKK0FSTXY3IG11bHRpcHJvY2Vzc2luZyBleHRlbnNpb25zIGludHJvZHVjZSB0aGUgYWJpbGl0eSB0byBkaXNhYmxlIHRoZXNlCitpbnN0cnVjdGlvbnMsIHRyaWdnZXJpbmcgYW4gdW5kZWZpbmVkIGluc3RydWN0aW9uIGV4Y2VwdGlvbiB3aGVuIGV4ZWN1dGVkLgorVHJhcHBlZCBpbnN0cnVjdGlvbnMgYXJlIGVtdWxhdGVkIHVzaW5nIGFuIExEUkVYL1NUUkVYIG9yIExEUkVYQi9TVFJFWEIKK3NlcXVlbmNlLiBJZiBhIG1lbW9yeSBhY2Nlc3MgZmF1bHQgKGFuIGFib3J0KSBvY2N1cnMsIGEgc2VnbWVudGF0aW9uIGZhdWx0IGlzCitzaWduYWxsZWQgdG8gdGhlIHRyaWdnZXJpbmcgcHJvY2Vzcy4KKworL3Byb2MvY3B1L3N3cF9lbXVsYXRpb24gaG9sZHMgc29tZSBzdGF0aXN0aWNzL2luZm9ybWF0aW9uLCBpbmNsdWRpbmcgdGhlIFBJRCBvZgordGhlIGxhc3QgcHJvY2VzcyB0byB0cmlnZ2VyIHRoZSBlbXVsYXRpb24gdG8gYmUgaW52b2NhdGVkLiBGb3IgZXhhbXBsZToKKy0tLQorRW11bGF0ZWQgU1dQOgkJMTIKK0VtdWxhdGVkIFNXUEI6CQkwCitBYm9ydGVkIFNXUHtCfToJCTEKK0xhc3QgcHJvY2VzczoJCTMxNAorLS0tCisKK05PVEU6IHdoZW4gYWNjZXNzaW5nIHVuY2FjaGVkIHNoYXJlZCByZWdpb25zLCBMRFJFWC9TVFJFWCByZWx5IG9uIGFuIGV4dGVybmFsCit0cmFuc2FjdGlvbiBtb25pdG9yaW5nIGJsb2NrIGNhbGxlZCBhIGdsb2JhbCBtb25pdG9yIHRvIG1haW50YWluIHVwZGF0ZQorYXRvbWljaXR5LiBJZiB5b3VyIHN5c3RlbSBkb2VzIG5vdCBpbXBsZW1lbnQgYSBnbG9iYWwgbW9uaXRvciwgdGhpcyBvcHRpb24gY2FuCitjYXVzZSBwcm9ncmFtcyB0aGF0IHBlcmZvcm0gU1dQIG9wZXJhdGlvbnMgdG8gdW5jYWNoZWQgbWVtb3J5IHRvIGRlYWRsb2NrLCBhcwordGhlIFNUUkVYIG9wZXJhdGlvbiB3aWxsIGFsd2F5cyBmYWlsLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS90Y20udHh0IGIvRG9jdW1lbnRhdGlvbi9hcm0vdGNtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzE1ODcxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vdGNtLnR4dApAQCAtMCwwICsxLDE1NSBAQAorQVJNIFRDTSAoVGlnaHRseS1Db3VwbGVkIE1lbW9yeSkgaGFuZGxpbmcgaW4gTGludXgKKy0tLS0KK1dyaXR0ZW4gYnkgTGludXMgV2FsbGVpaiA8bGludXMud2FsbGVpakBzdGVyaWNzc29uLmNvbT4KKworU29tZSBBUk0gU29DOnMgaGF2ZSBhIHNvLWNhbGxlZCBUQ00gKFRpZ2h0bHktQ291cGxlZCBNZW1vcnkpLgorVGhpcyBpcyB1c3VhbGx5IGp1c3QgYSBmZXcgKDQtNjQpIEtpQiBvZiBSQU0gaW5zaWRlIHRoZSBBUk0KK3Byb2Nlc3Nvci4KKworRHVlIHRvIGJlaW5nIGVtYmVkZGVkIGluc2lkZSB0aGUgQ1BVIFRoZSBUQ00gaGFzIGEKK0hhcnZhcmQtYXJjaGl0ZWN0dXJlLCBzbyB0aGVyZSBpcyBhbiBJVENNIChpbnN0cnVjdGlvbiBUQ00pCithbmQgYSBEVENNIChkYXRhIFRDTSkuIFRoZSBEVENNIGNhbiBub3QgY29udGFpbiBhbnkKK2luc3RydWN0aW9ucywgYnV0IHRoZSBJVENNIGNhbiBhY3R1YWxseSBjb250YWluIGRhdGEuCitUaGUgc2l6ZSBvZiBEVENNIG9yIElUQ00gaXMgbWluaW11bSA0S2lCIHNvIHRoZSB0eXBpY2FsCittaW5pbXVtIGNvbmZpZ3VyYXRpb24gaXMgNEtpQiBJVENNIGFuZCA0S2lCIERUQ00uCisKK0FSTSBDUFU6cyBoYXZlIHNwZWNpYWwgcmVnaXN0ZXJzIHRvIHJlYWQgb3V0IHN0YXR1cywgcGh5c2ljYWwKK2xvY2F0aW9uIGFuZCBzaXplIG9mIFRDTSBtZW1vcmllcy4gYXJjaC9hcm0vaW5jbHVkZS9hc20vY3B1dHlwZS5oCitkZWZpbmVzIGEgQ1BVSURfVENNIHJlZ2lzdGVyIHRoYXQgeW91IGNhbiByZWFkIG91dCBmcm9tIHRoZQorc3lzdGVtIGNvbnRyb2wgY29wcm9jZXNzb3IuIERvY3VtZW50YXRpb24gZnJvbSBBUk0gY2FuIGJlIGZvdW5kCithdCBodHRwOi8vaW5mb2NlbnRlci5hcm0uY29tLCBzZWFyY2ggZm9yICJUQ00gU3RhdHVzIFJlZ2lzdGVyIgordG8gc2VlIGRvY3VtZW50cyBmb3IgYWxsIENQVXMuIFJlYWRpbmcgdGhpcyByZWdpc3RlciB5b3UgY2FuCitkZXRlcm1pbmUgaWYgSVRDTSAoYml0cyAxLTApIGFuZC9vciBEVENNIChiaXQgMTctMTYpIGlzIHByZXNlbnQKK2luIHRoZSBtYWNoaW5lLgorCitUaGVyZSBpcyBmdXJ0aGVyIGEgVENNIHJlZ2lvbiByZWdpc3RlciAoc2VhcmNoIGZvciAiVENNIFJlZ2lvbgorUmVnaXN0ZXJzIiBhdCB0aGUgQVJNIHNpdGUpIHRoYXQgY2FuIHJlcG9ydCBhbmQgbW9kaWZ5IHRoZSBsb2NhdGlvbgorc2l6ZSBvZiBUQ00gbWVtb3JpZXMgYXQgcnVudGltZS4gVGhpcyBpcyB1c2VkIHRvIHJlYWQgb3V0IGFuZCBtb2RpZnkKK1RDTSBsb2NhdGlvbiBhbmQgc2l6ZS4gTm90aWNlIHRoYXQgdGhpcyBpcyBub3QgYSBNTVUgdGFibGU6IHlvdQorYWN0dWFsbHkgbW92ZSB0aGUgcGh5c2ljYWwgbG9jYXRpb24gb2YgdGhlIFRDTSBhcm91bmQuIEF0IHRoZQorcGxhY2UgeW91IHB1dCBpdCwgaXQgd2lsbCBtYXNrIGFueSB1bmRlcmx5aW5nIFJBTSBmcm9tIHRoZQorQ1BVIHNvIGl0IGlzIHVzdWFsbHkgd2lzZSBub3QgdG8gb3ZlcmxhcCBhbnkgcGh5c2ljYWwgUkFNIHdpdGgKK3RoZSBUQ00uCisKK1RoZSBUQ00gbWVtb3J5IGNhbiB0aGVuIGJlIHJlbWFwcGVkIHRvIGFub3RoZXIgYWRkcmVzcyBhZ2FpbiB1c2luZwordGhlIE1NVSwgYnV0IG5vdGljZSB0aGF0IHRoZSBUQ00gaWYgb2Z0ZW4gdXNlZCBpbiBzaXR1YXRpb25zIHdoZXJlCit0aGUgTU1VIGlzIHR1cm5lZCBvZmYuIFRvIGF2b2lkIGNvbmZ1c2lvbiB0aGUgY3VycmVudCBMaW51eAoraW1wbGVtZW50YXRpb24gd2lsbCBtYXAgdGhlIFRDTSAxIHRvIDEgZnJvbSBwaHlzaWNhbCB0byB2aXJ0dWFsCittZW1vcnkgaW4gdGhlIGxvY2F0aW9uIHNwZWNpZmllZCBieSB0aGUga2VybmVsLiBDdXJyZW50bHkgTGludXgKK3dpbGwgbWFwIElUQ00gdG8gMHhmZmZlMDAwMCBhbmQgb24sIGFuZCBEVENNIHRvIDB4ZmZmZTgwMDAgYW5kCitvbiwgc3VwcG9ydGluZyBhIG1heGltdW0gb2YgMzJLaUIgb2YgSVRDTSBhbmQgMzJLaUIgb2YgRFRDTS4KKworTmV3ZXIgdmVyc2lvbnMgb2YgdGhlIHJlZ2lvbiByZWdpc3RlcnMgYWxzbyBzdXBwb3J0IGRpdmlkaW5nIHRoZXNlCitUQ01zIGluIHR3byBzZXBhcmF0ZSBiYW5rcywgc28gZm9yIGV4YW1wbGUgYW4gOEtpQiBJVENNIGlzIGRpdmlkZWQKK2ludG8gdHdvIDRLaUIgYmFua3Mgd2l0aCBpdHMgb3duIGNvbnRyb2wgcmVnaXN0ZXJzLiBUaGUgaWRlYSBpcyB0bworYmUgYWJsZSB0byBsb2NrIGFuZCBoaWRlIG9uZSBvZiB0aGUgYmFua3MgZm9yIHVzZSBieSB0aGUgc2VjdXJlCit3b3JsZCAoVHJ1c3Rab25lKS4KKworVENNIGlzIHVzZWQgZm9yIGEgZmV3IHRoaW5nczoKKworLSBGSVEgYW5kIG90aGVyIGludGVycnVwdCBoYW5kbGVycyB0aGF0IG5lZWQgZGV0ZXJtaW5pc3RpYworICB0aW1pbmcgYW5kIGNhbm5vdCB3YWl0IGZvciBjYWNoZSBtaXNzZXMuCisKKy0gSWRsZSBsb29wcyB3aGVyZSBhbGwgZXh0ZXJuYWwgUkFNIGlzIHNldCB0byBzZWxmLXJlZnJlc2gKKyAgcmV0ZW50aW9uIG1vZGUsIHNvIG9ubHkgb24tY2hpcCBSQU0gaXMgYWNjZXNzaWJsZSBieQorICB0aGUgQ1BVIGFuZCB0aGVuIHdlIGhhbmcgaW5zaWRlIElUQ00gd2FpdGluZyBmb3IgYW4KKyAgaW50ZXJydXB0LgorCistIE90aGVyIG9wZXJhdGlvbnMgd2hpY2ggaW1wbGllcyBzaHV0dGluZyBvZmYgb3IgcmVjb25maWd1cmluZworICB0aGUgZXh0ZXJuYWwgUkFNIGNvbnRyb2xsZXIuCisKK1RoZXJlIGlzIGFuIGludGVyZmFjZSBmb3IgdXNpbmcgVENNIG9uIHRoZSBBUk0gYXJjaGl0ZWN0dXJlCitpbiA8YXNtL3RjbS5oPi4gVXNpbmcgdGhpcyBpbnRlcmZhY2UgaXQgaXMgcG9zc2libGUgdG86CisKKy0gRGVmaW5lIHRoZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBzaXplIG9mIElUQ00gYW5kIERUQ00uCisKKy0gVGFnIGZ1bmN0aW9ucyB0byBiZSBjb21waWxlZCBpbnRvIElUQ00uCisKKy0gVGFnIGRhdGEgYW5kIGNvbnN0YW50cyB0byBiZSBhbGxvY2F0ZWQgdG8gRFRDTSBhbmQgSVRDTS4KKworLSBIYXZlIHRoZSByZW1haW5pbmcgVENNIFJBTSBhZGRlZCB0byBhIHNwZWNpYWwKKyAgYWxsb2NhdGlvbiBwb29sIHdpdGggZ2VuX3Bvb2xfY3JlYXRlKCkgYW5kIGdlbl9wb29sX2FkZCgpCisgIGFuZCBwcm92aWNlIHRjbV9hbGxvYygpIGFuZCB0Y21fZnJlZSgpIGZvciB0aGlzCisgIG1lbW9yeS4gU3VjaCBhIGhlYXAgaXMgZ3JlYXQgZm9yIHRoaW5ncyBsaWtlIHNhdmluZworICBkZXZpY2Ugc3RhdGUgd2hlbiBzaHV0dGluZyBvZmYgZGV2aWNlIHBvd2VyIGRvbWFpbnMuCisKK0EgbWFjaGluZSB0aGF0IGhhcyBUQ00gbWVtb3J5IHNoYWxsIHNlbGVjdCBIQVZFX1RDTSBmcm9tCithcmNoL2FybS9LY29uZmlnIGZvciBpdHNlbGYuIENvZGUgdGhhdCBuZWVkcyB0byB1c2UgVENNIHNoYWxsCisjaW5jbHVkZSA8YXNtL3RjbS5oPgorCitGdW5jdGlvbnMgdG8gZ28gaW50byBpdGNtIGNhbiBiZSB0YWdnZWQgbGlrZSB0aGlzOgoraW50IF9fdGNtZnVuYyBmb28oaW50IGJhcik7CisKK1NpbmNlIHRoZXNlIGFyZSBtYXJrZWQgdG8gYmVjb21lIGxvbmdfY2FsbHMgYW5kIHlvdSBtYXkgd2FudAordG8gaGF2ZSBmdW5jdGlvbnMgY2FsbGVkIGxvY2FsbHkgaW5zaWRlIHRoZSBUQ00gd2l0aG91dAord2FzdGluZyBzcGFjZSwgdGhlcmUgaXMgYWxzbyB0aGUgX190Y21sb2NhbGZ1bmMgcHJlZml4IHRoYXQKK3dpbGwgbWFrZSB0aGUgY2FsbCByZWxhdGl2ZS4KKworVmFyaWFibGVzIHRvIGdvIGludG8gZHRjbSBjYW4gYmUgdGFnZ2VkIGxpa2UgdGhpczoKK2ludCBfX3RjbWRhdGEgZm9vOworCitDb25zdGFudHMgY2FuIGJlIHRhZ2dlZCBsaWtlIHRoaXM6CitpbnQgX190Y21jb25zdCBmb287CisKK1RvIHB1dCBhc3NlbWJsZXIgaW50byBUQ00ganVzdCB1c2UKKy5zZWN0aW9uICIudGNtLnRleHQiIG9yIC5zZWN0aW9uICIudGNtLmRhdGEiCityZXNwZWN0aXZlbHkuCisKK0V4YW1wbGUgY29kZToKKworI2luY2x1ZGUgPGFzbS90Y20uaD4KKworLyogVW5pbml0aWFsaXplZCBkYXRhICovCitzdGF0aWMgdTMyIF9fdGNtZGF0YSB0Y212YXI7CisvKiBJbml0aWFsaXplZCBkYXRhICovCitzdGF0aWMgdTMyIF9fdGNtZGF0YSB0Y21hc3NpZ25lZCA9IDB4MkJBREJBQkVVOworLyogQ29uc3RhbnQgKi8KK3N0YXRpYyBjb25zdCB1MzIgX190Y21jb25zdCB0Y21jb25zdCA9IDB4Q0FGRUJBQkVVOworCitzdGF0aWMgdm9pZCBfX3RjbWxvY2FsZnVuYyB0Y21fdG9fdGNtKHZvaWQpCit7CisJaW50IGk7CisJZm9yIChpID0gMDsgaSA8IDEwMDsgaSsrKQorCQl0Y212YXIgKys7Cit9CisKK3N0YXRpYyB2b2lkIF9fdGNtZnVuYyBoZWxsb190Y20odm9pZCkKK3sKKwkvKiBTb21lIGFic3RyYWN0IGNvZGUgdGhhdCBydW5zIGluIElUQ00gKi8KKwlpbnQgaTsKKwlmb3IgKGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKKwkJdGNtdmFyICsrOworCX0KKwl0Y21fdG9fdGNtKCk7Cit9CisKK3N0YXRpYyB2b2lkIF9faW5pdCB0ZXN0X3RjbSh2b2lkKQoreworCXUzMiAqdGNtZW07CisJaW50IGk7CisKKwloZWxsb190Y20oKTsKKwlwcmludGsoIkhlbGxvIFRDTSBleGVjdXRlZCBmcm9tIElUQ00gUkFNXG4iKTsKKworCXByaW50aygiVENNIHZhcmlhYmxlIGZyb20gdGVzdHJ1bjogJXUgQCAlcFxuIiwgdGNtdmFyLCAmdGNtdmFyKTsKKwl0Y212YXIgPSAweERFQURCRUVGVTsKKwlwcmludGsoIlRDTSB2YXJpYWJsZTogMHgleCBAICVwXG4iLCB0Y212YXIsICZ0Y212YXIpOworCisJcHJpbnRrKCJUQ00gYXNzaWduZWQgdmFyaWFibGU6IDB4JXggQCAlcFxuIiwgdGNtYXNzaWduZWQsICZ0Y21hc3NpZ25lZCk7CisKKwlwcmludGsoIlRDTSBjb25zdGFudDogMHgleCBAICVwXG4iLCB0Y21jb25zdCwgJnRjbWNvbnN0KTsKKworCS8qIEFsbG9jYXRlIHNvbWUgVENNIG1lbW9yeSBmcm9tIHRoZSBwb29sICovCisJdGNtZW0gPSB0Y21fYWxsb2MoMjApOworCWlmICh0Y21lbSkgeworCQlwcmludGsoIlRDTSBBbGxvY2F0ZWQgMjAgYnl0ZXMgb2YgVENNIEAgJXBcbiIsIHRjbWVtKTsKKwkJdGNtZW1bMF0gPSAweERFQURCRUVGVTsKKwkJdGNtZW1bMV0gPSAweDJCQURCQUJFVTsKKwkJdGNtZW1bMl0gPSAweENBRkVCQUJFVTsKKwkJdGNtZW1bM10gPSAweERFQURCRUVGVTsKKwkJdGNtZW1bNF0gPSAweDJCQURCQUJFVTsKKwkJZm9yIChpID0gMDsgaSA8IDU7IGkrKykKKwkJCXByaW50aygiVENNIHRjbWVtWyVkXSA9ICUwOHhcbiIsIGksIHRjbWVtW2ldKTsKKwkJdGNtX2ZyZWUodGNtZW0sIDIwKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS91ZWZpLnR4dCBiL0RvY3VtZW50YXRpb24vYXJtL3VlZmkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1NDNhMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS91ZWZpLnR4dApAQCAtMCwwICsxLDYwIEBACitVRUZJLCB0aGUgVW5pZmllZCBFeHRlbnNpYmxlIEZpcm13YXJlIEludGVyZmFjZSwgaXMgYSBzcGVjaWZpY2F0aW9uCitnb3Zlcm5pbmcgdGhlIGJlaGF2aW91cnMgb2YgY29tcGF0aWJsZSBmaXJtd2FyZSBpbnRlcmZhY2VzLiBJdCBpcworbWFpbnRhaW5lZCBieSB0aGUgVUVGSSBGb3J1bSAtIGh0dHA6Ly93d3cudWVmaS5vcmcvLgorCitVRUZJIGlzIGFuIGV2b2x1dGlvbiBvZiBpdHMgcHJlZGVjZXNzb3IgJ0VGSScsIHNvIHRoZSB0ZXJtcyBFRkkgYW5kCitVRUZJIGFyZSB1c2VkIHNvbWV3aGF0IGludGVyY2hhbmdlYWJseSBpbiB0aGlzIGRvY3VtZW50IGFuZCBhc3NvY2lhdGVkCitzb3VyY2UgY29kZS4gQXMgYSBydWxlLCBhbnl0aGluZyBuZXcgdXNlcyAnVUVGSScsIHdoZXJlYXMgJ0VGSScgcmVmZXJzCit0byBsZWdhY3kgY29kZSBvciBzcGVjaWZpY2F0aW9ucy4KKworVUVGSSBzdXBwb3J0IGluIExpbnV4Cis9PT09PT09PT09PT09PT09PT09PT0KK0Jvb3Rpbmcgb24gYSBwbGF0Zm9ybSB3aXRoIGZpcm13YXJlIGNvbXBsaWFudCB3aXRoIHRoZSBVRUZJIHNwZWNpZmljYXRpb24KK21ha2VzIGl0IHBvc3NpYmxlIGZvciB0aGUga2VybmVsIHRvIHN1cHBvcnQgYWRkaXRpb25hbCBmZWF0dXJlczoKKy0gVUVGSSBSdW50aW1lIFNlcnZpY2VzCistIFJldHJpZXZpbmcgdmFyaW91cyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIHRocm91Z2ggdGhlIHN0YW5kYXJkaXNlZAorICBpbnRlcmZhY2Ugb2YgVUVGSSBjb25maWd1cmF0aW9uIHRhYmxlcy4gKEFDUEksIFNNQklPUywgLi4uKQorCitGb3IgYWN0dWFsbHkgZW5hYmxpbmcgW1VdRUZJIHN1cHBvcnQsIGVuYWJsZToKKy0gQ09ORklHX0VGST15CistIENPTkZJR19FRklfVkFSUz15IG9yIG0KKworVGhlIGltcGxlbWVudGF0aW9uIGRlcGVuZHMgb24gcmVjZWl2aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBVRUZJIGVudmlyb25tZW50CitpbiBhIEZsYXR0ZW5lZCBEZXZpY2UgVHJlZSAoRkRUKSAtIHNvIGlzIG9ubHkgYXZhaWxhYmxlIHdpdGggQ09ORklHX09GLgorCitVRUZJIHN0dWIKKz09PT09PT09PQorVGhlICJzdHViIiBpcyBhIGZlYXR1cmUgdGhhdCBleHRlbmRzIHRoZSBJbWFnZS96SW1hZ2UgaW50byBhIHZhbGlkIFVFRkkKK1BFL0NPRkYgZXhlY3V0YWJsZSwgaW5jbHVkaW5nIGEgbG9hZGVyIGFwcGxpY2F0aW9uIHRoYXQgbWFrZXMgaXQgcG9zc2libGUgdG8KK2xvYWQgdGhlIGtlcm5lbCBkaXJlY3RseSBmcm9tIHRoZSBVRUZJIHNoZWxsLCBib290IG1lbnUsIG9yIG9uZSBvZiB0aGUKK2xpZ2h0d2VpZ2h0IGJvb3Rsb2FkZXJzIGxpa2UgR3VtbWlib290IG9yIHJFRkluZC4KKworVGhlIGtlcm5lbCBpbWFnZSBidWlsdCB3aXRoIHN0dWIgc3VwcG9ydCByZW1haW5zIGEgdmFsaWQga2VybmVsIGltYWdlIGZvcgorYm9vdGluZyBpbiBub24tVUVGSSBlbnZpcm9ubWVudHMuCisKK1VFRkkga2VybmVsIHN1cHBvcnQgb24gQVJNCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorVUVGSSBrZXJuZWwgc3VwcG9ydCBvbiB0aGUgQVJNIGFyY2hpdGVjdHVyZXMgKGFybSBhbmQgYXJtNjQpIGlzIG9ubHkgYXZhaWxhYmxlCit3aGVuIGJvb3QgaXMgcGVyZm9ybWVkIHRocm91Z2ggdGhlIHN0dWIuCisKK1doZW4gYm9vdGluZyBpbiBVRUZJIG1vZGUsIHRoZSBzdHViIGRlbGV0ZXMgYW55IG1lbW9yeSBub2RlcyBmcm9tIGEgcHJvdmlkZWQgRFQuCitJbnN0ZWFkLCB0aGUga2VybmVsIHJlYWRzIHRoZSBVRUZJIG1lbW9yeSBtYXAuCisKK1RoZSBzdHViIHBvcHVsYXRlcyB0aGUgRkRUIC9jaG9zZW4gbm9kZSB3aXRoIChhbmQgdGhlIGtlcm5lbCBzY2FucyBmb3IpIHRoZQorZm9sbG93aW5nIHBhcmFtZXRlcnM6CitfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworTmFtZSAgICAgICAgICAgICAgICAgICAgICB8IFNpemUgICB8IERlc2NyaXB0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorbGludXgsdWVmaS1zeXN0ZW0tdGFibGUgICB8IDY0LWJpdCB8IFBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIFVFRkkgU3lzdGVtIFRhYmxlLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2xpbnV4LHVlZmktbW1hcC1zdGFydCAgICAgfCA2NC1iaXQgfCBQaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBVRUZJIG1lbW9yeSBtYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgIHwgcG9wdWxhdGVkIGJ5IHRoZSBVRUZJIEdldE1lbW9yeU1hcCgpIGNhbGwuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbGludXgsdWVmaS1tbWFwLXNpemUgICAgICB8IDMyLWJpdCB8IFNpemUgaW4gYnl0ZXMgb2YgdGhlIFVFRkkgbWVtb3J5IG1hcAorICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICB8IHBvaW50ZWQgdG8gaW4gcHJldmlvdXMgZW50cnkuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbGludXgsdWVmaS1tbWFwLWRlc2Mtc2l6ZSB8IDMyLWJpdCB8IFNpemUgaW4gYnl0ZXMgb2YgZWFjaCBlbnRyeSBpbiB0aGUgVUVGSQorICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICB8IG1lbW9yeSBtYXAuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbGludXgsdWVmaS1tbWFwLWRlc2MtdmVyICB8IDMyLWJpdCB8IFZlcnNpb24gb2YgdGhlIG1tYXAgZGVzY3JpcHRvciBmb3JtYXQuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vdmxvY2tzLnR4dCBiL0RvY3VtZW50YXRpb24vYXJtL3Zsb2Nrcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU3MzE2NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtL3Zsb2Nrcy50eHQKQEAgLTAsMCArMSwyMTEgQEAKK3Zsb2NrcyBmb3IgQmFyZS1NZXRhbCBNdXR1YWwgRXhjbHVzaW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitWb3RpbmcgTG9ja3MsIG9yICJ2bG9ja3MiIHByb3ZpZGUgYSBzaW1wbGUgbG93LWxldmVsIG11dHVhbCBleGNsdXNpb24KK21lY2hhbmlzbSwgd2l0aCByZWFzb25hYmxlIGJ1dCBtaW5pbWFsIHJlcXVpcmVtZW50cyBvbiB0aGUgbWVtb3J5CitzeXN0ZW0uCisKK1RoZXNlIGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIGNvb3JkaW5hdGUgY3JpdGljYWwgYWN0aXZpdHkgYW1vbmcgQ1BVcword2hpY2ggYXJlIG90aGVyd2lzZSBub24tY29oZXJlbnQsIGluIHNpdHVhdGlvbnMgd2hlcmUgdGhlIGhhcmR3YXJlCitwcm92aWRlcyBubyBvdGhlciBtZWNoYW5pc20gdG8gc3VwcG9ydCB0aGlzIGFuZCBvcmRpbmFyeSBzcGlubG9ja3MKK2Nhbm5vdCBiZSB1c2VkLgorCisKK3Zsb2NrcyBtYWtlIHVzZSBvZiB0aGUgYXRvbWljaXR5IHByb3ZpZGVkIGJ5IHRoZSBtZW1vcnkgc3lzdGVtIGZvcgord3JpdGVzIHRvIGEgc2luZ2xlIG1lbW9yeSBsb2NhdGlvbi4gIFRvIGFyYml0cmF0ZSwgZXZlcnkgQ1BVICJ2b3RlcyBmb3IKK2l0c2VsZiIsIGJ5IHN0b3JpbmcgYSB1bmlxdWUgbnVtYmVyIHRvIGEgY29tbW9uIG1lbW9yeSBsb2NhdGlvbi4gIFRoZQorZmluYWwgdmFsdWUgc2VlbiBpbiB0aGF0IG1lbW9yeSBsb2NhdGlvbiB3aGVuIGFsbCB0aGUgdm90ZXMgaGF2ZSBiZWVuCitjYXN0IGlkZW50aWZpZXMgdGhlIHdpbm5lci4KKworSW4gb3JkZXIgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGVsZWN0aW9uIHByb2R1Y2VzIGFuIHVuYW1iaWd1b3VzIHJlc3VsdAoraW4gZmluaXRlIHRpbWUsIGEgQ1BVIHdpbGwgb25seSBlbnRlciB0aGUgZWxlY3Rpb24gaW4gdGhlIGZpcnN0IHBsYWNlIGlmCitubyB3aW5uZXIgaGFzIGJlZW4gY2hvc2VuIGFuZCB0aGUgZWxlY3Rpb24gZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUKK3N0YXJ0ZWQgeWV0LgorCisKK0FsZ29yaXRobQorLS0tLS0tLS0tCisKK1RoZSBlYXNpZXN0IHdheSB0byBleHBsYWluIHRoZSB2bG9ja3MgYWxnb3JpdGhtIGlzIHdpdGggc29tZSBwc2V1ZG8tY29kZToKKworCisJaW50IGN1cnJlbnRseV92b3RpbmdbTlJfQ1BVU10gPSB7IDAsIH07CisJaW50IGxhc3Rfdm90ZSA9IC0xOyAvKiBubyB2b3RlcyB5ZXQgKi8KKworCWJvb2wgdmxvY2tfdHJ5bG9jayhpbnQgdGhpc19jcHUpCisJeworCQkvKiBzaWduYWwgb3VyIGRlc2lyZSB0byB2b3RlICovCisJCWN1cnJlbnRseV92b3RpbmdbdGhpc19jcHVdID0gMTsKKwkJaWYgKGxhc3Rfdm90ZSAhPSAtMSkgeworCQkJLyogc29tZW9uZSBhbHJlYWR5IHZvbHVudGVlcmVkIGhpbXNlbGYgKi8KKwkJCWN1cnJlbnRseV92b3RpbmdbdGhpc19jcHVdID0gMDsKKwkJCXJldHVybiBmYWxzZTsgLyogbm90IG91cnNlbGYgKi8KKwkJfQorCisJCS8qIGxldCdzIHN1Z2dlc3Qgb3Vyc2VsZiAqLworCQlsYXN0X3ZvdGUgPSB0aGlzX2NwdTsKKwkJY3VycmVudGx5X3ZvdGluZ1t0aGlzX2NwdV0gPSAwOworCisJCS8qIHRoZW4gd2FpdCB1bnRpbCBldmVyeW9uZSBlbHNlIGlzIGRvbmUgdm90aW5nICovCisJCWZvcl9lYWNoX2NwdShpKSB7CisJCQl3aGlsZSAoY3VycmVudGx5X3ZvdGluZ1tpXSAhPSAwKQorCQkJCS8qIHdhaXQgKi87CisJCX0KKworCQkvKiByZXN1bHQgKi8KKwkJaWYgKGxhc3Rfdm90ZSA9PSB0aGlzX2NwdSkKKwkJCXJldHVybiB0cnVlOyAvKiB3ZSB3b24gKi8KKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWJvb2wgdmxvY2tfdW5sb2NrKHZvaWQpCisJeworCQlsYXN0X3ZvdGUgPSAtMTsKKwl9CisKKworVGhlIGN1cnJlbnRseV92b3RpbmdbXSBhcnJheSBwcm92aWRlcyBhIHdheSBmb3IgdGhlIENQVXMgdG8gZGV0ZXJtaW5lCit3aGV0aGVyIGFuIGVsZWN0aW9uIGlzIGluIHByb2dyZXNzLCBhbmQgcGxheXMgYSByb2xlIGFuYWxvZ291cyB0byB0aGUKKyJlbnRlcmluZyIgYXJyYXkgaW4gTGFtcG9ydCdzIGJha2VyeSBhbGdvcml0aG0gWzFdLgorCitIb3dldmVyLCBvbmNlIHRoZSBlbGVjdGlvbiBoYXMgc3RhcnRlZCwgdGhlIHVuZGVybHlpbmcgbWVtb3J5IHN5c3RlbQorYXRvbWljaXR5IGlzIHVzZWQgdG8gcGljayB0aGUgd2lubmVyLiAgVGhpcyBhdm9pZHMgdGhlIG5lZWQgZm9yIGEgc3RhdGljCitwcmlvcml0eSBydWxlIHRvIGFjdCBhcyBhIHRpZS1icmVha2VyLCBvciBhbnkgY291bnRlcnMgd2hpY2ggY291bGQKK292ZXJmbG93LgorCitBcyBsb25nIGFzIHRoZSBsYXN0X3ZvdGUgdmFyaWFibGUgaXMgZ2xvYmFsbHkgdmlzaWJsZSB0byBhbGwgQ1BVcywgaXQKK3dpbGwgY29udGFpbiBvbmx5IG9uZSB2YWx1ZSB0aGF0IHdvbid0IGNoYW5nZSBvbmNlIGV2ZXJ5IENQVSBoYXMgY2xlYXJlZAoraXRzIGN1cnJlbnRseV92b3RpbmcgZmxhZy4KKworCitGZWF0dXJlcyBhbmQgbGltaXRhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgKiB2bG9ja3MgYXJlIG5vdCBpbnRlbmRlZCB0byBiZSBmYWlyLiAgSW4gdGhlIGNvbnRlbmRlZCBjYXNlLCBpdCBpcyB0aGUKKyAgIF9sYXN0XyBDUFUgd2hpY2ggYXR0ZW1wdHMgdG8gZ2V0IHRoZSBsb2NrIHdoaWNoIHdpbGwgYmUgbW9zdCBsaWtlbHkKKyAgIHRvIHdpbi4KKworICAgdmxvY2tzIGFyZSB0aGVyZWZvcmUgYmVzdCBzdWl0ZWQgdG8gc2l0dWF0aW9ucyB3aGVyZSBpdCBpcyBuZWNlc3NhcnkKKyAgIHRvIHBpY2sgYSB1bmlxdWUgd2lubmVyLCBidXQgaXQgZG9lcyBub3QgbWF0dGVyIHdoaWNoIENQVSBhY3R1YWxseQorICAgd2lucy4KKworICogTGlrZSBvdGhlciBzaW1pbGFyIG1lY2hhbmlzbXMsIHZsb2NrcyB3aWxsIG5vdCBzY2FsZSB3ZWxsIHRvIGEgbGFyZ2UKKyAgIG51bWJlciBvZiBDUFVzLgorCisgICB2bG9ja3MgY2FuIGJlIGNhc2NhZGVkIGluIGEgdm90aW5nIGhpZXJhcmNoeSB0byBwZXJtaXQgYmV0dGVyIHNjYWxpbmcKKyAgIGlmIG5lY2Vzc2FyeSwgYXMgaW4gdGhlIGZvbGxvd2luZyBoeXBvdGhldGljYWwgZXhhbXBsZSBmb3IgNDA5NiBDUFVzOgorCisJLyogZmlyc3QgbGV2ZWw6IGxvY2FsIGVsZWN0aW9uICovCisJbXlfdG93biA9IHRvd25zWyh0aGlzX2NwdSA+PiA0KSAmIDB4Zl07CisJSV93b24gPSB2bG9ja190cnlsb2NrKG15X3Rvd24sIHRoaXNfY3B1ICYgMHhmKTsKKwlpZiAoSV93b24pIHsKKwkJLyogd2Ugd29uIHRoZSB0b3duIGVsZWN0aW9uLCBsZXQncyBnbyBmb3IgdGhlIHN0YXRlICovCisJCW15X3N0YXRlID0gc3RhdGVzWyh0aGlzX2NwdSA+PiA4KSAmIDB4Zl07CisJCUlfd29uID0gdmxvY2tfbG9jayhteV9zdGF0ZSwgdGhpc19jcHUgJiAweGYpKTsKKwkJaWYgKElfd29uKSB7CisJCQkvKiBhbmQgc28gb24gKi8KKwkJCUlfd29uID0gdmxvY2tfbG9jayh0aGVfd2hvbGVfY291bnRyeSwgdGhpc19jcHUgJiAweGZdOworCQkJaWYgKElfd29uKSB7CisJCQkJLyogLi4uICovCisJCQl9CisJCQl2bG9ja191bmxvY2sodGhlX3dob2xlX2NvdW50cnkpOworCQl9CisJCXZsb2NrX3VubG9jayhteV9zdGF0ZSk7CisJfQorCXZsb2NrX3VubG9jayhteV90b3duKTsKKworCitBUk0gaW1wbGVtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgY3VycmVudCBBUk0gaW1wbGVtZW50YXRpb24gWzJdIGNvbnRhaW5zIHNvbWUgb3B0aW1pc2F0aW9ucyBiZXlvbmQKK3RoZSBiYXNpYyBhbGdvcml0aG06CisKKyAqIEJ5IHBhY2tpbmcgdGhlIG1lbWJlcnMgb2YgdGhlIGN1cnJlbnRseV92b3RpbmcgYXJyYXkgY2xvc2UgdG9nZXRoZXIsCisgICB3ZSBjYW4gcmVhZCB0aGUgd2hvbGUgYXJyYXkgaW4gb25lIHRyYW5zYWN0aW9uIChwcm92aWRpbmcgdGhlIG51bWJlcgorICAgb2YgQ1BVcyBwb3RlbnRpYWxseSBjb250ZW5kaW5nIHRoZSBsb2NrIGlzIHNtYWxsIGVub3VnaCkuICBUaGlzCisgICByZWR1Y2VzIHRoZSBudW1iZXIgb2Ygcm91bmQtdHJpcHMgcmVxdWlyZWQgdG8gZXh0ZXJuYWwgbWVtb3J5LgorCisgICBJbiB0aGUgQVJNIGltcGxlbWVudGF0aW9uLCB0aGlzIG1lYW5zIHRoYXQgd2UgY2FuIHVzZSBhIHNpbmdsZSBsb2FkCisgICBhbmQgY29tcGFyaXNvbjoKKworCUxEUglSdCwgW1JuXQorCUNNUAlSdCwgIzAKKworICAgLi4uaW4gcGxhY2Ugb2YgY29kZSBlcXVpdmFsZW50IHRvOgorCisJTERSQglSdCwgW1JuXQorCUNNUAlSdCwgIzAKKwlMRFJCRVEJUnQsIFtSbiwgIzFdCisJQ01QRVEJUnQsICMwCisJTERSQkVRCVJ0LCBbUm4sICMyXQorCUNNUEVRCVJ0LCAjMAorCUxEUkJFUQlSdCwgW1JuLCAjM10KKwlDTVBFUQlSdCwgIzAKKworICAgVGhpcyBjdXRzIGRvd24gb24gdGhlIGZhc3QtcGF0aCBsYXRlbmN5LCBhcyB3ZWxsIGFzIHBvdGVudGlhbGx5CisgICByZWR1Y2luZyBidXMgY29udGVudGlvbiBpbiBjb250ZW5kZWQgY2FzZXMuCisKKyAgIFRoZSBvcHRpbWlzYXRpb24gcmVsaWVzIG9uIHRoZSBmYWN0IHRoYXQgdGhlIEFSTSBtZW1vcnkgc3lzdGVtCisgICBndWFyYW50ZWVzIGNvaGVyZW5jeSBiZXR3ZWVuIG92ZXJsYXBwaW5nIG1lbW9yeSBhY2Nlc3NlcyBvZgorICAgZGlmZmVyZW50IHNpemVzLCBzaW1pbGFybHkgdG8gbWFueSBvdGhlciBhcmNoaXRlY3R1cmVzLiAgTm90ZSB0aGF0CisgICB3ZSBkbyBub3QgY2FyZSB3aGljaCBlbGVtZW50IG9mIGN1cnJlbnRseV92b3RpbmcgYXBwZWFycyBpbiB3aGljaAorICAgYml0cyBvZiBSdCwgc28gdGhlcmUgaXMgbm8gbmVlZCB0byB3b3JyeSBhYm91dCBlbmRpYW5uZXNzIGluIHRoaXMKKyAgIG9wdGltaXNhdGlvbi4KKworICAgSWYgdGhlcmUgYXJlIHRvbyBtYW55IENQVXMgdG8gcmVhZCB0aGUgY3VycmVudGx5X3ZvdGluZyBhcnJheSBpbgorICAgb25lIHRyYW5zYWN0aW9uIHRoZW4gbXVsdGlwbGUgdHJhbnNhdGlvbnMgYXJlIHN0aWxsIHJlcXVpcmVkLiAgVGhlCisgICBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgc2ltcGxlIGxvb3Agb2Ygd29yZC1zaXplZCBsb2FkcyBmb3IgdGhpcworICAgY2FzZS4gIFRoZSBudW1iZXIgb2YgdHJhbnNhY3Rpb25zIGlzIHN0aWxsIGZld2VyIHRoYW4gd291bGQgYmUKKyAgIHJlcXVpcmVkIGlmIGJ5dGVzIHdlcmUgbG9hZGVkIGluZGl2aWR1YWxseS4KKworCisgICBJbiBwcmluY2lwbGUsIHdlIGNvdWxkIGFnZ3JlZ2F0ZSBmdXJ0aGVyIGJ5IHVzaW5nIExEUkQgb3IgTERNLCBidXQKKyAgIHRvIGtlZXAgdGhlIGNvZGUgc2ltcGxlIHRoaXMgd2FzIG5vdCBhdHRlbXB0ZWQgaW4gdGhlIGluaXRpYWwKKyAgIGltcGxlbWVudGF0aW9uLgorCisKKyAqIHZsb2NrcyBhcmUgY3VycmVudGx5IG9ubHkgdXNlZCB0byBjb29yZGluYXRlIGJldHdlZW4gQ1BVcyB3aGljaCBhcmUKKyAgIHVuYWJsZSB0byBlbmFibGUgdGhlaXIgY2FjaGVzIHlldC4gIFRoaXMgbWVhbnMgdGhhdCB0aGUKKyAgIGltcGxlbWVudGF0aW9uIHJlbW92ZXMgbWFueSBvZiB0aGUgYmFycmllcnMgd2hpY2ggd291bGQgYmUgcmVxdWlyZWQKKyAgIHdoZW4gZXhlY3V0aW5nIHRoZSBhbGdvcml0aG0gaW4gY2FjaGVkIG1lbW9yeS4KKworICAgcGFja2luZyBvZiB0aGUgY3VycmVudGx5X3ZvdGluZyBhcnJheSBkb2VzIG5vdCB3b3JrIHdpdGggY2FjaGVkCisgICBtZW1vcnkgdW5sZXNzIGFsbCBDUFVzIGNvbnRlbmRpbmcgdGhlIGxvY2sgYXJlIGNhY2hlLWNvaGVyZW50LCBkdWUKKyAgIHRvIGNhY2hlIHdyaXRlYmFja3MgZnJvbSBvbmUgQ1BVIGNsb2JiZXJpbmcgdmFsdWVzIHdyaXR0ZW4gYnkgb3RoZXIKKyAgIENQVXMuICAoVGhvdWdoIGlmIGFsbCB0aGUgQ1BVcyBhcmUgY2FjaGUtY29oZXJlbnQsIHlvdSBzaG91bGQgYmUKKyAgIHByb2JhYmx5IGJlIHVzaW5nIHByb3BlciBzcGlubG9ja3MgaW5zdGVhZCBhbnl3YXkpLgorCisKKyAqIFRoZSAibm8gdm90ZXMgeWV0IiB2YWx1ZSB1c2VkIGZvciB0aGUgbGFzdF92b3RlIHZhcmlhYmxlIGlzIDAgKG5vdAorICAgLTEgYXMgaW4gdGhlIHBzZXVkb2NvZGUpLiAgVGhpcyBhbGxvd3Mgc3RhdGljYWxseS1hbGxvY2F0ZWQgdmxvY2tzCisgICB0byBiZSBpbXBsaWNpdGx5IGluaXRpYWxpc2VkIHRvIGFuIHVubG9ja2VkIHN0YXRlIHNpbXBseSBieSBwdXR0aW5nCisgICB0aGVtIGluIC5ic3MuCisKKyAgIEFuIG9mZnNldCBpcyBhZGRlZCB0byBlYWNoIENQVSdzIElEIGZvciB0aGUgcHVycG9zZSBvZiBzZXR0aW5nIHRoaXMKKyAgIHZhcmlhYmxlLCBzbyB0aGF0IG5vIENQVSB1c2VzIHRoZSB2YWx1ZSAwIGZvciBpdHMgSUQuCisKKworQ29sb3Bob24KKy0tLS0tLS0tCisKK09yaWdpbmFsbHkgY3JlYXRlZCBhbmQgZG9jdW1lbnRlZCBieSBEYXZlIE1hcnRpbiBmb3IgTGluYXJvIExpbWl0ZWQsIGZvcgordXNlIGluIEFSTS1iYXNlZCBiaWcuTElUVExFIHBsYXRmb3Jtcywgd2l0aCByZXZpZXcgYW5kIGlucHV0IGdyYXRlZnVsbHkKK3JlY2VpdmVkIGZyb20gTmljb2xhcyBQaXRyZSBhbmQgQWNoaW4gR3VwdGEuICBUaGFua3MgdG8gTmljb2xhcyBmb3IKK2dyYWJiaW5nIG1vc3Qgb2YgdGhpcyB0ZXh0IG91dCBvZiB0aGUgcmVsZXZhbnQgbWFpbCB0aHJlYWQgYW5kIHdyaXRpbmcKK3VwIHRoZSBwc2V1ZG9jb2RlLgorCitDb3B5cmlnaHQgKEMpIDIwMTItMjAxMyAgTGluYXJvIExpbWl0ZWQKK0Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBWZXJzaW9uIDIgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworTGljZW5zZSwgYXMgZGVmaW5lZCBpbiBsaW51eC9DT1BZSU5HLgorCisKK1JlZmVyZW5jZXMKKy0tLS0tLS0tLS0KKworWzFdIExhbXBvcnQsIEwuICJBIE5ldyBTb2x1dGlvbiBvZiBEaWprc3RyYSdzIENvbmN1cnJlbnQgUHJvZ3JhbW1pbmcKKyAgICBQcm9ibGVtIiwgQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTSAxNywgOCAoQXVndXN0IDE5NzQpLCA0NTMtNDU1LgorCisgICAgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGFtcG9ydCUyN3NfYmFrZXJ5X2FsZ29yaXRobQorCitbMl0gbGludXgvYXJjaC9hcm0vY29tbW9uL3Zsb2NrLlMsIHd3dy5rZXJuZWwub3JnLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm02NC9hY3BpX29iamVjdF91c2FnZS50eHQgYi9Eb2N1bWVudGF0aW9uL2FybTY0L2FjcGlfb2JqZWN0X3VzYWdlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNmUxYTE4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm02NC9hY3BpX29iamVjdF91c2FnZS50eHQKQEAgLTAsMCArMSw1OTMgQEAKK0FDUEkgVGFibGVzCistLS0tLS0tLS0tLQorVGhlIGV4cGVjdGF0aW9ucyBvZiBpbmRpdmlkdWFsIEFDUEkgdGFibGVzIGFyZSBkaXNjdXNzZWQgaW4gdGhlIGxpc3QgdGhhdAorZm9sbG93cy4KKworSWYgYSBzZWN0aW9uIG51bWJlciBpcyB1c2VkLCBpdCByZWZlcnMgdG8gYSBzZWN0aW9uIG51bWJlciBpbiB0aGUgQUNQSQorc3BlY2lmaWNhdGlvbiB3aGVyZSB0aGUgb2JqZWN0IGlzIGRlZmluZWQuICBJZiAiU2lnbmF0dXJlIFJlc2VydmVkIiBpcyB1c2VkLAordGhlIHRhYmxlIHNpZ25hdHVyZSAodGhlIGZpcnN0IGZvdXIgYnl0ZXMgb2YgdGhlIHRhYmxlKSBpcyB0aGUgb25seSBwb3J0aW9uCitvZiB0aGUgdGFibGUgcmVjb2duaXplZCBieSB0aGUgc3BlY2lmaWNhdGlvbiwgYW5kIHRoZSBhY3R1YWwgdGFibGUgaXMgZGVmaW5lZAorb3V0c2lkZSBvZiB0aGUgVUVGSSBGb3J1bSAoc2VlIFNlY3Rpb24gNS4yLjYgb2YgdGhlIHNwZWNpZmljYXRpb24pLgorCitGb3IgQUNQSSBvbiBhcm02NCwgdGFibGVzIGFsc28gZmFsbCBpbnRvIHRoZSBmb2xsb3dpbmcgY2F0ZWdvcmllczoKKworICAgICAgIC0tIFJlcXVpcmVkOiBEU0RULCBGQURULCBHVERULCBNQURULCBNQ0ZHLCBSU0RQLCBTUENSLCBYU0RUCisKKyAgICAgICAtLSBSZWNvbW1lbmRlZDogQkVSVCwgRUlOSiwgRVJTVCwgSEVTVCwgU1NEVAorCisgICAgICAgLS0gT3B0aW9uYWw6IEJHUlQsIENQRVAsIENTUlQsIERSVE0sIEVDRFQsIEZBQ1MsIEZQRFQsIE1DSEksIE1QU1QsCisgICAgICAgICAgTVNDVCwgUkFTRiwgU0JTVCwgU0xJVCwgU1BNSSwgU1JBVCwgVENQQSwgVFBNMiwgVUVGSQorCisgICAgICAgLS0gTm90IHN1cHBvcnRlZDogQk9PVCwgREJHMiwgREJHUCwgRE1BUiwgRVREVCwgSFBFVCwgSUJGVCwgSVZSUywKKyAgICAgICAgICBMUElULCBNU0RNLCBSU0RULCBTTElDLCBXQUVULCBXREFULCBXRFJULCBXUEJUCisKKworVGFibGUgIFVzYWdlIGZvciBBUk12OCBMaW51eAorLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0JFUlQgICBTZWN0aW9uIDE4LjMgKHNpZ25hdHVyZSA9PSAiQkVSVCIpCisgICAgICAgPT0gQm9vdCBFcnJvciBSZWNvcmQgVGFibGUgPT0KKyAgICAgICBNdXN0IGJlIHN1cHBsaWVkIGlmIFJBUyBzdXBwb3J0IGlzIHByb3ZpZGVkIGJ5IHRoZSBwbGF0Zm9ybS4gIEl0CisgICAgICAgaXMgcmVjb21tZW5kZWQgdGhpcyB0YWJsZSBiZSBzdXBwbGllZC4KKworQk9PVCAgIFNpZ25hdHVyZSBSZXNlcnZlZCAoc2lnbmF0dXJlID09ICJCT09UIikKKyAgICAgICA9PSBzaW1wbGUgQk9PVCBmbGFnIHRhYmxlID09CisgICAgICAgTWljcm9zb2Z0IG9ubHkgdGFibGUsIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4KKworQkdSVCAgIFNlY3Rpb24gNS4yLjIyIChzaWduYXR1cmUgPT0gIkJHUlQiKQorICAgICAgID09IEJvb3QgR3JhcGhpY3MgUmVzb3VyY2UgVGFibGUgPT0KKyAgICAgICBPcHRpb25hbCwgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQsIHdpdGggbm8gcmVhbCB1c2UtY2FzZSBmb3IgYW4KKyAgICAgICBBUk0gc2VydmVyLgorCitDUEVQICAgU2VjdGlvbiA1LjIuMTggKHNpZ25hdHVyZSA9PSAiQ1BFUCIpCisgICAgICAgPT0gQ29ycmVjdGVkIFBsYXRmb3JtIEVycm9yIFBvbGxpbmcgdGFibGUgPT0KKyAgICAgICBPcHRpb25hbCwgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQsIGFuZCBub3QgcmVjb21tZW5kZWQgdW50aWwgc3VjaAorICAgICAgIHRpbWUgYXMgQVJNLWNvbXBhdGlibGUgaGFyZHdhcmUgaXMgYXZhaWxhYmxlLCBhbmQgdGhlIHNwZWNpZmljYXRpb24KKyAgICAgICBzdWl0YWJseSBtb2RpZmllZC4KKworQ1NSVCAgIFNpZ25hdHVyZSBSZXNlcnZlZCAoc2lnbmF0dXJlID09ICJDU1JUIikKKyAgICAgICA9PSBDb3JlIFN5c3RlbSBSZXNvdXJjZXMgVGFibGUgPT0KKyAgICAgICBPcHRpb25hbCwgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuCisKK0RCRzIgICBTaWduYXR1cmUgUmVzZXJ2ZWQgKHNpZ25hdHVyZSA9PSAiREJHMiIpCisgICAgICAgPT0gRGVCdUcgcG9ydCB0YWJsZSAyID09CisgICAgICAgTWljcm9zb2Z0IG9ubHkgdGFibGUsIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4KKworREJHUCAgIFNpZ25hdHVyZSBSZXNlcnZlZCAoc2lnbmF0dXJlID09ICJEQkdQIikKKyAgICAgICA9PSBEZUJ1RyBQb3J0IHRhYmxlID09CisgICAgICAgTWljcm9zb2Z0IG9ubHkgdGFibGUsIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4KKworRFNEVCAgIFNlY3Rpb24gNS4yLjExLjEgKHNpZ25hdHVyZSA9PSAiRFNEVCIpCisgICAgICAgPT0gRGlmZmVyZW50aWF0ZWQgU3lzdGVtIERlc2NyaXB0aW9uIFRhYmxlID09CisgICAgICAgQSBEU0RUIGlzIHJlcXVpcmVkOyBzZWUgYWxzbyBTU0RULgorCisgICAgICAgQUNQSSB0YWJsZXMgY29udGFpbiBvbmx5IG9uZSBEU0RUIGJ1dCBjYW4gY29udGFpbiBvbmUgb3IgbW9yZSBTU0RUcywKKyAgICAgICB3aGljaCBhcmUgb3B0aW9uYWwuICBFYWNoIFNTRFQgY2FuIG9ubHkgYWRkIHRvIHRoZSBBQ1BJIG5hbWVzcGFjZSwKKyAgICAgICBidXQgY2Fubm90IG1vZGlmeSBvciByZXBsYWNlIGFueXRoaW5nIGluIHRoZSBEU0RULgorCitETUFSICAgU2lnbmF0dXJlIFJlc2VydmVkIChzaWduYXR1cmUgPT0gIkRNQVIiKQorICAgICAgID09IERNQSBSZW1hcHBpbmcgdGFibGUgPT0KKyAgICAgICB4ODYgb25seSB0YWJsZSwgd2lsbCBub3QgYmUgc3VwcG9ydGVkLgorCitEUlRNICAgU2lnbmF0dXJlIFJlc2VydmVkIChzaWduYXR1cmUgPT0gIkRSVE0iKQorICAgICAgID09IER5bmFtaWMgUm9vdCBvZiBUcnVzdCBmb3IgTWVhc3VyZW1lbnQgdGFibGUgPT0KKyAgICAgICBPcHRpb25hbCwgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuCisKK0VDRFQgICBTZWN0aW9uIDUuMi4xNiAoc2lnbmF0dXJlID09ICJFQ0RUIikKKyAgICAgICA9PSBFbWJlZGRlZCBDb250cm9sbGVyIERlc2NyaXB0aW9uIFRhYmxlID09CisgICAgICAgT3B0aW9uYWwsIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLCBidXQgY291bGQgYmUgdXNlZCBvbiBBUk0gaWYgYW5kCisgICAgICAgb25seSBpZiBvbmUgdXNlcyB0aGUgR1BFX0JJVCBmaWVsZCB0byByZXByZXNlbnQgYW4gSVJRIG51bWJlciwgc2luY2UKKyAgICAgICB0aGVyZSBhcmUgbm8gR1BFIGJsb2NrcyBkZWZpbmVkIGluIGhhcmR3YXJlIHJlZHVjZWQgbW9kZS4gIFRoaXMgd291bGQKKyAgICAgICBuZWVkIHRvIGJlIG1vZGlmaWVkIGluIHRoZSBBQ1BJIHNwZWNpZmljYXRpb24uCisKK0VJTkogICBTZWN0aW9uIDE4LjYgKHNpZ25hdHVyZSA9PSAiRUlOSiIpCisgICAgICAgPT0gRXJyb3IgSW5qZWN0aW9uIHRhYmxlID09CisgICAgICAgVGhpcyB0YWJsZSBpcyB2ZXJ5IHVzZWZ1bCBmb3IgdGVzdGluZyBwbGF0Zm9ybSByZXNwb25zZSB0byBlcnJvcgorICAgICAgIGNvbmRpdGlvbnM7IGl0IGFsbG93cyBvbmUgdG8gaW5qZWN0IGFuIGVycm9yIGludG8gdGhlIHN5c3RlbSBhcworICAgICAgIGlmIGl0IGhhZCBhY3R1YWxseSBvY2N1cnJlZC4gIEhvd2V2ZXIsIHRoaXMgdGFibGUgc2hvdWxkIG5vdCBiZQorICAgICAgIHNoaXBwZWQgd2l0aCBhIHByb2R1Y3Rpb24gc3lzdGVtOyBpdCBzaG91bGQgYmUgZHluYW1pY2FsbHkgbG9hZGVkCisgICAgICAgYW5kIGV4ZWN1dGVkIHdpdGggdGhlIEFDUElDQSB0b29scyBvbmx5IGR1cmluZyB0ZXN0aW5nLgorCitFUlNUICAgU2VjdGlvbiAxOC41IChzaWduYXR1cmUgPT0gIkVSU1QiKQorICAgICAgID09IEVycm9yIFJlY29yZCBTZXJpYWxpemF0aW9uIFRhYmxlID09CisgICAgICAgT24gYSBwbGF0Zm9ybSBzdXBwb3J0cyBSQVMsIHRoaXMgdGFibGUgbXVzdCBiZSBzdXBwbGllZCBpZiBpdCBpcyBub3QKKyAgICAgICBVRUZJLWJhc2VkOyBpZiBpdCBpcyBVRUZJLWJhc2VkLCB0aGlzIHRhYmxlIG1heSBiZSBzdXBwbGllZC4gV2hlbiB0aGlzCisgICAgICAgdGFibGUgaXMgbm90IHByZXNlbnQsIFVFRkkgcnVuIHRpbWUgc2VydmljZSB3aWxsIGJlIHV0aWxpemVkIHRvIHNhdmUKKyAgICAgICBhbmQgcmV0cmlldmUgaGFyZHdhcmUgZXJyb3IgaW5mb3JtYXRpb24gdG8gYW5kIGZyb20gYSBwZXJzaXN0ZW50IHN0b3JlLgorCitFVERUICAgU2lnbmF0dXJlIFJlc2VydmVkIChzaWduYXR1cmUgPT0gIkVURFQiKQorICAgICAgID09IEV2ZW50IFRpbWVyIERlc2NyaXB0aW9uIFRhYmxlID09CisgICAgICAgT2Jzb2xldGUgdGFibGUsIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4KKworRkFDUyAgIFNlY3Rpb24gNS4yLjEwIChzaWduYXR1cmUgPT0gIkZBQ1MiKQorICAgICAgID09IEZpcm13YXJlIEFDUEkgQ29udHJvbCBTdHJ1Y3R1cmUgPT0KKyAgICAgICBJdCBpcyB1bmxpa2VseSB0aGF0IHRoaXMgdGFibGUgd2lsbCBiZSB0ZXJyaWJseSB1c2VmdWwuICBJZiBpdCBpcworICAgICAgIHByb3ZpZGVkLCB0aGUgR2xvYmFsIExvY2sgd2lsbCBOT1QgYmUgdXNlZCBzaW5jZSBpdCBpcyBub3QgcGFydCBvZgorICAgICAgIHRoZSBoYXJkd2FyZSByZWR1Y2VkIHByb2ZpbGUsIGFuZCBvbmx5IDY0LWJpdCBhZGRyZXNzIGZpZWxkcyB3aWxsCisgICAgICAgYmUgY29uc2lkZXJlZCB2YWxpZC4KKworRkFEVCAgIFNlY3Rpb24gNS4yLjkgKHNpZ25hdHVyZSA9PSAiRkFDUCIpCisgICAgICAgPT0gRml4ZWQgQUNQSSBEZXNjcmlwdGlvbiBUYWJsZSA9PQorICAgICAgIFJlcXVpcmVkIGZvciBhcm02NC4KKworICAgICAgIFRoZSBIV19SRURVQ0VEX0FDUEkgZmxhZyBtdXN0IGJlIHNldC4gIEFsbCBvZiB0aGUgZmllbGRzIHRoYXQgYXJlCisgICAgICAgdG8gYmUgaWdub3JlZCB3aGVuIEhXX1JFRFVDRURfQUNQSSBpcyBzZXQgYXJlIGV4cGVjdGVkIHRvIGJlIHNldCB0bworICAgICAgIHplcm8uCisKKyAgICAgICBJZiBhbiBGQUNTIHRhYmxlIGlzIHByb3ZpZGVkLCB0aGUgWF9GSVJNV0FSRV9DVFJMIGZpZWxkIGlzIHRvIGJlCisgICAgICAgdXNlZCwgbm90IEZJUk1XQVJFX0NUUkwuCisKKyAgICAgICBJZiBQU0NJIGlzIHVzZWQgKGFzIGlzIHJlY29tbWVuZGVkKSwgbWFrZSBzdXJlIHRoYXQgQVJNX0JPT1RfQVJDSCBpcworICAgICAgIGZpbGxlZCBpbiBwcm9wZXJseSAtLSB0aGF0IHRoZSBQU0NJX0NPTVBMSUFOVCBmbGFnIGlzIHNldCBhbmQgdGhhdAorICAgICAgIFBTQ0lfVVNFX0hWQyBpcyBzZXQgb3IgdW5zZXQgYXMgbmVlZGVkIChzZWUgdGFibGUgNS0zNykuCisKKyAgICAgICBGb3IgdGhlIERTRFQgdGhhdCBpcyBhbHNvIHJlcXVpcmVkLCB0aGUgWF9EU0RUIGZpZWxkIGlzIHRvIGJlIHVzZWQsCisgICAgICAgbm90IHRoZSBEU0RUIGZpZWxkLgorCitGUERUICAgU2VjdGlvbiA1LjIuMjMgKHNpZ25hdHVyZSA9PSAiRlBEVCIpCisgICAgICAgPT0gRmlybXdhcmUgUGVyZm9ybWFuY2UgRGF0YSBUYWJsZSA9PQorICAgICAgIE9wdGlvbmFsLCBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4KKworR1REVCAgIFNlY3Rpb24gNS4yLjI0IChzaWduYXR1cmUgPT0gIkdURFQiKQorICAgICAgID09IEdlbmVyaWMgVGltZXIgRGVzY3JpcHRpb24gVGFibGUgPT0KKyAgICAgICBSZXF1aXJlZCBmb3IgYXJtNjQuCisKK0hFU1QgICBTZWN0aW9uIDE4LjMuMiAoc2lnbmF0dXJlID09ICJIRVNUIikKKyAgICAgICA9PSBIYXJkd2FyZSBFcnJvciBTb3VyY2UgVGFibGUgPT0KKyAgICAgICBVbnRpbCBmdXJ0aGVyIGVycm9yIHNvdXJjZSB0eXBlcyBhcmUgZGVmaW5lZCwgdXNlIG9ubHkgdHlwZXMgNiAoQUVSCisgICAgICAgUm9vdCBQb3J0KSwgNyAoQUVSIEVuZHBvaW50KSwgOCAoQUVSIEJyaWRnZSksIG9yIDkgKEdlbmVyaWMgSGFyZHdhcmUKKyAgICAgICBFcnJvciBTb3VyY2UpLiAgRmlybXdhcmUgZmlyc3QgZXJyb3IgaGFuZGxpbmcgaXMgcG9zc2libGUgaWYgYW5kIG9ubHkKKyAgICAgICBpZiBUcnVzdGVkIEZpcm13YXJlIGlzIGJlaW5nIHVzZWQgb24gYXJtNjQuCisKKyAgICAgICBNdXN0IGJlIHN1cHBsaWVkIGlmIFJBUyBzdXBwb3J0IGlzIHByb3ZpZGVkIGJ5IHRoZSBwbGF0Zm9ybS4gIEl0CisgICAgICAgaXMgcmVjb21tZW5kZWQgdGhpcyB0YWJsZSBiZSBzdXBwbGllZC4KKworSFBFVCAgIFNpZ25hdHVyZSBSZXNlcnZlZCAoc2lnbmF0dXJlID09ICJIUEVUIikKKyAgICAgICA9PSBIaWdoIFByZWNpc2lvbiBFdmVudCB0aW1lciBUYWJsZSA9PQorICAgICAgIHg4NiBvbmx5IHRhYmxlLCB3aWxsIG5vdCBiZSBzdXBwb3J0ZWQuCisKK0lCRlQgICBTaWduYXR1cmUgUmVzZXJ2ZWQgKHNpZ25hdHVyZSA9PSAiSUJGVCIpCisgICAgICAgPT0gaVNDU0kgQm9vdCBGaXJtd2FyZSBUYWJsZSA9PQorICAgICAgIE1pY3Jvc29mdCBkZWZpbmVkIHRhYmxlLCBzdXBwb3J0IFRCRC4KKworSVZSUyAgIFNpZ25hdHVyZSBSZXNlcnZlZCAoc2lnbmF0dXJlID09ICJJVlJTIikKKyAgICAgICA9PSBJL08gVmlydHVhbGl6YXRpb24gUmVwb3J0aW5nIFN0cnVjdHVyZSA9PQorICAgICAgIHg4Nl82NCAoQU1EKSBvbmx5IHRhYmxlLCB3aWxsIG5vdCBiZSBzdXBwb3J0ZWQuCisKK0xQSVQgICBTaWduYXR1cmUgUmVzZXJ2ZWQgKHNpZ25hdHVyZSA9PSAiTFBJVCIpCisgICAgICAgPT0gTG93IFBvd2VyIElkbGUgVGFibGUgPT0KKyAgICAgICB4ODYgb25seSB0YWJsZSBhcyBvZiBBQ1BJIDUuMTsgZnV0dXJlIHZlcnNpb25zIGhhdmUgYmVlbiBhZGFwdGVkIGZvcgorICAgICAgIHVzZSB3aXRoIEFSTSBhbmQgd2lsbCBiZSByZWNvbW1lbmRlZCBpbiBvcmRlciB0byBzdXBwb3J0IEFDUEkgcG93ZXIKKyAgICAgICBtYW5hZ2VtZW50LgorCitNQURUICAgU2VjdGlvbiA1LjIuMTIgKHNpZ25hdHVyZSA9PSAiQVBJQyIpCisgICAgICAgPT0gTXVsdGlwbGUgQVBJQyBEZXNjcmlwdGlvbiBUYWJsZSA9PQorICAgICAgIFJlcXVpcmVkIGZvciBhcm02NC4gIE9ubHkgdGhlIEdJQyBpbnRlcnJ1cHQgY29udHJvbGxlciBzdHJ1Y3R1cmVzCisgICAgICAgc2hvdWxkIGJlIHVzZWQgKHR5cGVzIDB4QSAtIDB4RSkuCisKK01DRkcgICBTaWduYXR1cmUgUmVzZXJ2ZWQgKHNpZ25hdHVyZSA9PSAiTUNGRyIpCisgICAgICAgPT0gTWVtb3J5LW1hcHBlZCBDb25GaUd1cmF0aW9uIHNwYWNlID09CisgICAgICAgSWYgdGhlIHBsYXRmb3JtIHN1cHBvcnRzIFBDSS9QQ0llLCBhbiBNQ0ZHIHRhYmxlIGlzIHJlcXVpcmVkLgorCitNQ0hJICAgU2lnbmF0dXJlIFJlc2VydmVkIChzaWduYXR1cmUgPT0gIk1DSEkiKQorICAgICAgID09IE1hbmFnZW1lbnQgQ29udHJvbGxlciBIb3N0IEludGVyZmFjZSB0YWJsZSA9PQorICAgICAgIE9wdGlvbmFsLCBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4KKworTVBTVCAgIFNlY3Rpb24gNS4yLjIxIChzaWduYXR1cmUgPT0gIk1QU1QiKQorICAgICAgID09IE1lbW9yeSBQb3dlciBTdGF0ZSBUYWJsZSA9PQorICAgICAgIE9wdGlvbmFsLCBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4KKworTVNETSAgIFNpZ25hdHVyZSBSZXNlcnZlZCAoc2lnbmF0dXJlID09ICJNU0RNIikKKyAgICAgICA9PSBNaWNyb3NvZnQgRGF0YSBNYW5hZ2VtZW50IHRhYmxlID09CisgICAgICAgTWljcm9zb2Z0IG9ubHkgdGFibGUsIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4KKworTVNDVCAgIFNlY3Rpb24gNS4yLjE5IChzaWduYXR1cmUgPT0gIk1TQ1QiKQorICAgICAgID09IE1heGltdW0gU3lzdGVtIENoYXJhY3RlcmlzdGljIFRhYmxlID09CisgICAgICAgT3B0aW9uYWwsIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLgorCitSQVNGICAgU2VjdGlvbiA1LjIuMjAgKHNpZ25hdHVyZSA9PSAiUkFTRiIpCisgICAgICAgPT0gUkFTIEZlYXR1cmUgdGFibGUgPT0KKyAgICAgICBPcHRpb25hbCwgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuCisKK1JTRFAgICBTZWN0aW9uIDUuMi41IChzaWduYXR1cmUgPT0gIlJTRCBQVFIiKQorICAgICAgID09IFJvb3QgU3lzdGVtIERlc2NyaXB0aW9uIFBvaW5UZVIgPT0KKyAgICAgICBSZXF1aXJlZCBmb3IgYXJtNjQuCisKK1JTRFQgICBTZWN0aW9uIDUuMi43IChzaWduYXR1cmUgPT0gIlJTRFQiKQorICAgICAgID09IFJvb3QgU3lzdGVtIERlc2NyaXB0aW9uIFRhYmxlID09CisgICAgICAgU2luY2UgdGhpcyB0YWJsZSBjYW4gb25seSBwcm92aWRlIDMyLWJpdCBhZGRyZXNzZXMsIGl0IGlzIGRlcHJlY2F0ZWQKKyAgICAgICBvbiBhcm02NCwgYW5kIHdpbGwgbm90IGJlIHVzZWQuCisKK1NCU1QgICBTZWN0aW9uIDUuMi4xNCAoc2lnbmF0dXJlID09ICJTQlNUIikKKyAgICAgICA9PSBTbWFydCBCYXR0ZXJ5IFN1YnN5c3RlbSBUYWJsZSA9PQorICAgICAgIE9wdGlvbmFsLCBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4KKworU0xJQyAgIFNpZ25hdHVyZSBSZXNlcnZlZCAoc2lnbmF0dXJlID09ICJTTElDIikKKyAgICAgICA9PSBTb2Z0d2FyZSBMSWNlbnNpbmcgdGFibGUgPT0KKyAgICAgICBNaWNyb3NvZnQgb25seSB0YWJsZSwgd2lsbCBub3QgYmUgc3VwcG9ydGVkLgorCitTTElUICAgU2VjdGlvbiA1LjIuMTcgKHNpZ25hdHVyZSA9PSAiU0xJVCIpCisgICAgICAgPT0gU3lzdGVtIExvY2FsaXR5IGRpc3RhbmNlIEluZm9ybWF0aW9uIFRhYmxlID09CisgICAgICAgT3B0aW9uYWwgaW4gZ2VuZXJhbCwgYnV0IHJlcXVpcmVkIGZvciBOVU1BIHN5c3RlbXMuCisKK1NQQ1IgICBTaWduYXR1cmUgUmVzZXJ2ZWQgKHNpZ25hdHVyZSA9PSAiU1BDUiIpCisgICAgICAgPT0gU2VyaWFsIFBvcnQgQ29uc29sZSBSZWRpcmVjdGlvbiB0YWJsZSA9PQorICAgICAgIFJlcXVpcmVkIGZvciBhcm02NC4KKworU1BNSSAgIFNpZ25hdHVyZSBSZXNlcnZlZCAoc2lnbmF0dXJlID09ICJTUE1JIikKKyAgICAgICA9PSBTZXJ2ZXIgUGxhdGZvcm0gTWFuYWdlbWVudCBJbnRlcmZhY2UgdGFibGUgPT0KKyAgICAgICBPcHRpb25hbCwgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuCisKK1NSQVQgICBTZWN0aW9uIDUuMi4xNiAoc2lnbmF0dXJlID09ICJTUkFUIikKKyAgICAgICA9PSBTeXN0ZW0gUmVzb3VyY2UgQWZmaW5pdHkgVGFibGUgPT0KKyAgICAgICBPcHRpb25hbCwgYnV0IGlmIHVzZWQsIG9ubHkgdGhlIEdJQ0MgQWZmaW5pdHkgc3RydWN0dXJlcyBhcmUgcmVhZC4KKyAgICAgICBUbyBzdXBwb3J0IE5VTUEsIHRoaXMgdGFibGUgaXMgcmVxdWlyZWQuCisKK1NTRFQgICBTZWN0aW9uIDUuMi4xMS4yIChzaWduYXR1cmUgPT0gIlNTRFQiKQorICAgICAgID09IFNlY29uZGFyeSBTeXN0ZW0gRGVzY3JpcHRpb24gVGFibGUgPT0KKyAgICAgICBUaGVzZSB0YWJsZXMgYXJlIGEgY29udGludWF0aW9uIG9mIHRoZSBEU0RUOyB0aGVzZSBhcmUgcmVjb21tZW5kZWQKKyAgICAgICBmb3IgdXNlIHdpdGggZGV2aWNlcyB0aGF0IGNhbiBiZSBhZGRlZCB0byBhIHJ1bm5pbmcgc3lzdGVtLCBidXQgY2FuCisgICAgICAgYWxzbyBzZXJ2ZSB0aGUgcHVycG9zZSBvZiBkaXZpZGluZyB1cCBkZXZpY2UgZGVzY3JpcHRpb25zIGludG8gbW9yZQorICAgICAgIG1hbmFnZWFibGUgcGllY2VzLgorCisgICAgICAgQW4gU1NEVCBjYW4gb25seSBBREQgdG8gdGhlIEFDUEkgbmFtZXNwYWNlLiAgSXQgY2Fubm90IG1vZGlmeSBvcgorICAgICAgIHJlcGxhY2UgZXhpc3RpbmcgZGV2aWNlIGRlc2NyaXB0aW9ucyBhbHJlYWR5IGluIHRoZSBuYW1lc3BhY2UuCisKKyAgICAgICBUaGVzZSB0YWJsZXMgYXJlIG9wdGlvbmFsLCBob3dldmVyLiAgQUNQSSB0YWJsZXMgc2hvdWxkIGNvbnRhaW4gb25seQorICAgICAgIG9uZSBEU0RUIGJ1dCBjYW4gY29udGFpbiBtYW55IFNTRFRzLgorCitUQ1BBICAgU2lnbmF0dXJlIFJlc2VydmVkIChzaWduYXR1cmUgPT0gIlRDUEEiKQorICAgICAgID09IFRydXN0ZWQgQ29tcHV0aW5nIFBsYXRmb3JtIEFsbGlhbmNlIHRhYmxlID09CisgICAgICAgT3B0aW9uYWwsIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLCBhbmQgbWF5IG5lZWQgY2hhbmdlcyB0byBmdWxseQorICAgICAgIGludGVyb3BlcmF0ZSB3aXRoIGFybTY0LgorCitUUE0yICAgU2lnbmF0dXJlIFJlc2VydmVkIChzaWduYXR1cmUgPT0gIlRQTTIiKQorICAgICAgID09IFRydXN0ZWQgUGxhdGZvcm0gTW9kdWxlIDIgdGFibGUgPT0KKyAgICAgICBPcHRpb25hbCwgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQsIGFuZCBtYXkgbmVlZCBjaGFuZ2VzIHRvIGZ1bGx5CisgICAgICAgaW50ZXJvcGVyYXRlIHdpdGggYXJtNjQuCisKK1VFRkkgICBTaWduYXR1cmUgUmVzZXJ2ZWQgKHNpZ25hdHVyZSA9PSAiVUVGSSIpCisgICAgICAgPT0gVUVGSSBBQ1BJIGRhdGEgdGFibGUgPT0KKyAgICAgICBPcHRpb25hbCwgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuICBObyBrbm93biB1c2UgY2FzZSBmb3IgYXJtNjQsCisgICAgICAgYXQgcHJlc2VudC4KKworV0FFVCAgIFNpZ25hdHVyZSBSZXNlcnZlZCAoc2lnbmF0dXJlID09ICJXQUVUIikKKyAgICAgICA9PSBXaW5kb3dzIEFDUEkgRW11bGF0ZWQgZGV2aWNlcyBUYWJsZSA9PQorICAgICAgIE1pY3Jvc29mdCBvbmx5IHRhYmxlLCB3aWxsIG5vdCBiZSBzdXBwb3J0ZWQuCisKK1dEQVQgICBTaWduYXR1cmUgUmVzZXJ2ZWQgKHNpZ25hdHVyZSA9PSAiV0RBVCIpCisgICAgICAgPT0gV2F0Y2ggRG9nIEFjdGlvbiBUYWJsZSA9PQorICAgICAgIE1pY3Jvc29mdCBvbmx5IHRhYmxlLCB3aWxsIG5vdCBiZSBzdXBwb3J0ZWQuCisKK1dEUlQgICBTaWduYXR1cmUgUmVzZXJ2ZWQgKHNpZ25hdHVyZSA9PSAiV0RSVCIpCisgICAgICAgPT0gV2F0Y2ggRG9nIFJlc291cmNlIFRhYmxlID09CisgICAgICAgTWljcm9zb2Z0IG9ubHkgdGFibGUsIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4KKworV1BCVCAgIFNpZ25hdHVyZSBSZXNlcnZlZCAoc2lnbmF0dXJlID09ICJXUEJUIikKKyAgICAgICA9PSBXaW5kb3dzIFBsYXRmb3JtIEJpbmFyeSBUYWJsZSA9PQorICAgICAgIE1pY3Jvc29mdCBvbmx5IHRhYmxlLCB3aWxsIG5vdCBiZSBzdXBwb3J0ZWQuCisKK1hTRFQgICBTZWN0aW9uIDUuMi44IChzaWduYXR1cmUgPT0gIlhTRFQiKQorICAgICAgID09IGVYdGVuZGVkIFN5c3RlbSBEZXNjcmlwdGlvbiBUYWJsZSA9PQorICAgICAgIFJlcXVpcmVkIGZvciBhcm02NC4KKworCitBQ1BJIE9iamVjdHMKKy0tLS0tLS0tLS0tLQorVGhlIGV4cGVjdGF0aW9ucyBvbiBpbmRpdmlkdWFsIEFDUEkgb2JqZWN0cyBhcmUgZGlzY3Vzc2VkIGluIHRoZSBsaXN0IHRoYXQKK2ZvbGxvd3M6CisKK05hbWUgICBTZWN0aW9uICAgICAgICAgVXNhZ2UgZm9yIEFSTXY4IExpbnV4CistLS0tICAgLS0tLS0tLS0tLS0tICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK19BRFIgICA2LjEuMSAgICAgICAgICAgVXNlIGFzIG5lZWRlZC4KKworX0JCTiAgIDYuNS41ICAgICAgICAgICBVc2UgYXMgbmVlZGVkOyBQQ0ktc3BlY2lmaWMuCisKK19CRE4gICA2LjUuMyAgICAgICAgICAgT3B0aW9uYWw7IG5vdCBsaWtlbHkgdG8gYmUgdXNlZCBvbiBhcm02NC4KKworX0NDQSAgIDYuMi4xNyAgICAgICAgICBUaGlzIG1ldGhvZCBzaG91bGQgYmUgZGVmaW5lZCBmb3IgYWxsIGJ1cyBtYXN0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgIG9uIGFybTY0LiAgV2hpbGUgY2FjaGUgY29oZXJlbmN5IGlzIGFzc3VtZWQsIG1ha2luZworICAgICAgICAgICAgICAgICAgICAgICBpdCBleHBsaWNpdCBlbnN1cmVzIHRoZSBrZXJuZWwgd2lsbCBzZXQgdXAgRE1BIGFzCisgICAgICAgICAgICAgICAgICAgICAgIGl0IHNob3VsZC4KKworX0NETSAgIDYuMi4xICAgICAgICAgICBPcHRpb25hbCwgdG8gYmUgdXNlZCBvbmx5IGZvciBwcm9jZXNzb3IgZGV2aWNlcy4KKworX0NJRCAgIDYuMS4yICAgICAgICAgICBVc2UgYXMgbmVlZGVkLgorCitfQ0xTICAgNi4xLjMgICAgICAgICAgIFVzZSBhcyBuZWVkZWQuCisKK19DUlMgICA2LjIuMiAgICAgICAgICAgUmVxdWlyZWQgb24gYXJtNjQuCisKK19EQ0sgICA2LjUuMiAgICAgICAgICAgT3B0aW9uYWw7IG5vdCBsaWtlbHkgdG8gYmUgdXNlZCBvbiBhcm02NC4KKworX0RETiAgIDYuMS40ICAgICAgICAgICBUaGlzIGZpZWxkIGNhbiBiZSB1c2VkIGZvciBhIGRldmljZSBuYW1lLiAgSG93ZXZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgaXQgaXMgbWVhbnQgZm9yIERPUyBkZXZpY2UgbmFtZXMgKGUuZy4sIENPTTEpLCBzbyBiZQorICAgICAgICAgICAgICAgICAgICAgICBjYXJlZnVsIG9mIGl0cyB1c2UgYWNyb3NzIE9TZXMuCisKK19ERVAgICA2LjUuOCAgICAgICAgICAgVXNlIGFzIG5lZWRlZC4KKworX0RJUyAgIDYuMi4zICAgICAgICAgICBPcHRpb25hbCwgZm9yIHBvd2VyIG1hbmFnZW1lbnQgdXNlLgorCitfRExNICAgNS43LjUgICAgICAgICAgIE9wdGlvbmFsLgorCitfRE1BICAgNi4yLjQgICAgICAgICAgIE9wdGlvbmFsLgorCitfRFNEICAgNi4yLjUgICAgICAgICAgIFRvIGJlIHVzZWQgd2l0aCBjYXV0aW9uLiAgSWYgdGhpcyBvYmplY3QgaXMgdXNlZCwgdHJ5CisgICAgICAgICAgICAgICAgICAgICAgIHRvIHVzZSBpdCB3aXRoaW4gdGhlIGNvbnN0cmFpbnRzIGFscmVhZHkgZGVmaW5lZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgRGV2aWNlIFByb3BlcnRpZXMgVVVJRC4gIE9ubHkgaW4gcmFyZSBjaXJjdW1zdGFuY2VzCisgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBpdCBiZSBuZWNlc3NhcnkgdG8gY3JlYXRlIGEgbmV3IF9EU0QgVVVJRC4KKworICAgICAgICAgICAgICAgICAgICAgICBJbiBlaXRoZXIgY2FzZSwgc3VibWl0IHRoZSBfRFNEIGRlZmluaXRpb24gYWxvbmcgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICBhbnkgZHJpdmVyIHBhdGNoZXMgZm9yIGRpc2N1c3Npb24sIGVzcGVjaWFsbHkgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UgcHJvcGVydGllcyBhcmUgdXNlZC4gIEEgZHJpdmVyIHdpbGwgbm90IGJlCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnNpZGVyZWQgY29tcGxldGUgd2l0aG91dCBhIGNvcnJlc3BvbmRpbmcgX0RTRAorICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbi4gIE9uY2UgYXBwcm92ZWQgYnkga2VybmVsIG1haW50YWluZXJzLAorICAgICAgICAgICAgICAgICAgICAgICB0aGUgVVVJRCBvciBkZXZpY2UgcHJvcGVydGllcyBtdXN0IHRoZW4gYmUgcmVnaXN0ZXJlZAorICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBVRUZJIEZvcnVtOyB0aGlzIG1heSBjYXVzZSBzb21lIGl0ZXJhdGlvbiBhcworICAgICAgICAgICAgICAgICAgICAgICBtb3JlIHRoYW4gb25lIE9TIHdpbGwgYmUgcmVnaXN0ZXJpbmcgZW50cmllcy4KKworX0RTTSAgICAgICAgICAgICAgICAgICBEbyBub3QgdXNlIHRoaXMgbWV0aG9kLiAgSXQgaXMgbm90IHN0YW5kYXJkaXplZCwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZXMgYXJlIG5vdCB3ZWxsIGRvY3VtZW50ZWQsIGFuZCBpdCBpcworICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50bHkgYSBmcmVxdWVudCBzb3VyY2Ugb2YgZXJyb3IuCisKK19EU1cgICA3LjIuMSAgICAgICAgICAgVXNlIGFzIG5lZWRlZDsgcG93ZXIgbWFuYWdlbWVudCBzcGVjaWZpYy4KKworX0VETCAgIDYuMy4xICAgICAgICAgICBPcHRpb25hbC4KKworX0VKRCAgIDYuMy4yICAgICAgICAgICBPcHRpb25hbC4KKworX0VKeCAgIDYuMy4zICAgICAgICAgICBPcHRpb25hbC4KKworX0ZJWCAgIDYuMi43ICAgICAgICAgICB4ODYgc3BlY2lmaWMsIG5vdCB1c2VkIG9uIGFybTY0LgorCitcX0dMICAgNS43LjEgICAgICAgICAgIFRoaXMgb2JqZWN0IGlzIG5vdCB0byBiZSB1c2VkIGluIGhhcmR3YXJlIHJlZHVjZWQKKyAgICAgICAgICAgICAgICAgICAgICAgbW9kZSwgYW5kIHRoZXJlZm9yZSBzaG91bGQgbm90IGJlIHVzZWQgb24gYXJtNjQuCisKK19HTEsgICA2LjUuNyAgICAgICAgICAgVGhpcyBvYmplY3QgcmVxdWlyZXMgYSBnbG9iYWwgbG9jayBiZSBkZWZpbmVkOyB0aGVyZQorICAgICAgICAgICAgICAgICAgICAgICBpcyBubyBnbG9iYWwgbG9jayBvbiBhcm02NCBzaW5jZSBpdCBydW5zIGluIGhhcmR3YXJlCisgICAgICAgICAgICAgICAgICAgICAgIHJlZHVjZWQgbW9kZS4gIEhlbmNlLCBkbyBub3QgdXNlIHRoaXMgb2JqZWN0IG9uIGFybTY0LgorCitcX0dQRSAgNS4zLjEgICAgICAgICAgIFRoaXMgbmFtZXNwYWNlIGlzIGZvciB4ODYgdXNlIG9ubHkuICBEbyBub3QgdXNlIGl0CisgICAgICAgICAgICAgICAgICAgICAgIG9uIGFybTY0LgorCitfR1NCICAgNi4yLjcgICAgICAgICAgIE9wdGlvbmFsLgorCitfSElEICAgNi4xLjUgICAgICAgICAgIFVzZSBhcyBuZWVkZWQuICBUaGlzIGlzIHRoZSBwcmltYXJ5IG9iamVjdCB0byB1c2UgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlIHByb2JpbmcsIHRob3VnaCBfQ0lEIGFuZCBfQ0xTIG1heSBhbHNvIGJlIHVzZWQuCisKK19IUFAgICA2LjIuOCAgICAgICAgICAgT3B0aW9uYWwsIFBDSSBzcGVjaWZpYy4KKworX0hQWCAgIDYuMi45ICAgICAgICAgICBPcHRpb25hbCwgUENJIHNwZWNpZmljLgorCitfSFJWICAgNi4xLjYgICAgICAgICAgIE9wdGlvbmFsLCB1c2UgYXMgbmVlZGVkIHRvIGNsYXJpZnkgZGV2aWNlIGJlaGF2aW9yOyBpbgorICAgICAgICAgICAgICAgICAgICAgICBzb21lIGNhc2VzLCB0aGlzIG1heSBiZSBlYXNpZXIgdG8gdXNlIHRoYW4gX0RTRC4KKworX0lOSSAgIDYuNS4xICAgICAgICAgICBOb3QgcmVxdWlyZWQsIGJ1dCBjYW4gYmUgdXNlZnVsIGluIHNldHRpbmcgdXAgZGV2aWNlcworICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFVFRkkgbGVhdmVzIHRoZW0gaW4gYSBzdGF0ZSB0aGF0IG1heSBub3QgYmUgd2hhdAorICAgICAgICAgICAgICAgICAgICAgICB0aGUgZHJpdmVyIGV4cGVjdHMgYmVmb3JlIGl0IHN0YXJ0cyBwcm9iaW5nLgorCitfSVJDICAgNy4yLjE1ICAgICAgICAgIFVzZSBhcyBuZWVkZWQ7IHBvd2VyIG1hbmFnZW1lbnQgc3BlY2lmaWMuCisKK19MQ0sgICA2LjMuNCAgICAgICAgICAgT3B0aW9uYWwuCisKK19NQVQgICA2LjIuMTAgICAgICAgICAgT3B0aW9uYWw7IHNlZSBhbHNvIHRoZSBNQURULgorCitfTUxTICAgNi4xLjcgICAgICAgICAgIE9wdGlvbmFsLCBidXQgaGlnaGx5IHJlY29tbWVuZGVkIGZvciB1c2UgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYXRpb25hbGl6YXRpb24uCisKK19PRkYgICA3LjEuMiAgICAgICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdG8gZGVmaW5lIHRoaXMgbWV0aG9kIGZvciBhbnkgZGV2aWNlCisgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgY2FuIGJlIHR1cm5lZCBvbiBvciBvZmYuCisKK19PTiAgICA3LjEuMyAgICAgICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdG8gZGVmaW5lIHRoaXMgbWV0aG9kIGZvciBhbnkgZGV2aWNlCisgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgY2FuIGJlIHR1cm5lZCBvbiBvciBvZmYuCisKK1xfT1MgICA1LjcuMyAgICAgICAgICAgVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gIkxpbnV4IiBieSBkZWZhdWx0ICh0aGlzIGlzCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSB2YWx1ZSBvZiB0aGUgbWFjcm8gQUNQSV9PU19OQU1FIG9uIExpbnV4KS4gIFRoZQorICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIGxpbmUgcGFyYW1ldGVyIGFjcGlfb3M9PHN0cmluZz4gY2FuIGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgdG8gc2V0IGl0IHRvIHNvbWUgb3RoZXIgdmFsdWUuCisKK19PU0MgICA2LjIuMTEgICAgICAgICAgVGhpcyBtZXRob2QgY2FuIGJlIGEgZ2xvYmFsIG1ldGhvZCBpbiBBQ1BJIChpLmUuLAorICAgICAgICAgICAgICAgICAgICAgICBcX1NCLl9PU0MpLCBvciBpdCBtYXkgYmUgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlIChlLmcuLCBcX1NCLkRFVjAuX09TQyksIG9yIGJvdGguICBXaGVuIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgYXMgYSBnbG9iYWwgbWV0aG9kLCBvbmx5IGNhcGFiaWxpdGllcyBwdWJsaXNoZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIEFDUEkgc3BlY2lmaWNhdGlvbiBhcmUgYWxsb3dlZC4gIFdoZW4gdXNlZCBhcworICAgICAgICAgICAgICAgICAgICAgICBhIGRldmljZS1zcGVjaWZpYyBtZXRob2QsIHRoZSBwcm9jZXNzIGRlc2NyaWJlZCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgX0RTRCBNVVNUIGJlIHVzZWQgdG8gY3JlYXRlIGFuIF9PU0MgZGVmaW5pdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgb3V0LW9mLXByb2Nlc3MgdXNlIG9mIF9PU0MgaXMgbm90IGFsbG93ZWQuICBUaGF0IGlzLAorICAgICAgICAgICAgICAgICAgICAgICBzdWJtaXQgdGhlIGRldmljZS1zcGVjaWZpYyBfT1NDIHVzYWdlIGRlc2NyaXB0aW9uIGFzCisgICAgICAgICAgICAgICAgICAgICAgIHBhcnQgb2YgdGhlIGtlcm5lbCBkcml2ZXIgc3VibWlzc2lvbiwgZ2V0IGl0IGFwcHJvdmVkCisgICAgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSBrZXJuZWwgY29tbXVuaXR5LCB0aGVuIHJlZ2lzdGVyIGl0IHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgIFVFRkkgRm9ydW0uCisKK1xfT1NJICA1LjcuMiAgICAgICAgICAgRGVwcmVjYXRlZCBvbiBBUk02NC4gIEFueSBpbnZvY2F0aW9uIG9mIHRoaXMgbWV0aG9kCisgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgcHJpbnQgYSB3YXJuaW5nIG9uIHRoZSBjb25zb2xlIGFuZCByZXR1cm4gZmFsc2UuCisgICAgICAgICAgICAgICAgICAgICAgIFRoYXQgaXMsIGFzIGZhciBhcyBBQ1BJIGZpcm13YXJlIGlzIGNvbmNlcm5lZCwgX09TSQorICAgICAgICAgICAgICAgICAgICAgICBjYW5ub3QgYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBzb3J0IG9mIHN5c3RlbSBpcworICAgICAgICAgICAgICAgICAgICAgICBiZWluZyB1c2VkIG9yIHdoYXQgZnVuY3Rpb25hbGl0eSBpcyBwcm92aWRlZC4gIFRoZQorICAgICAgICAgICAgICAgICAgICAgICBfT1NDIG1ldGhvZCBpcyB0byBiZSB1c2VkIGluc3RlYWQuCisKK19PU1QgICA2LjMuNSAgICAgICAgICAgT3B0aW9uYWwuCisKK19QREMgICA4LjQuMSAgICAgICAgICAgRGVwcmVjYXRlZCwgZG8gbm90IHVzZSBvbiBhcm02NC4KKworXF9QSUMgIDUuOC4xICAgICAgICAgICBUaGUgbWV0aG9kIHNob3VsZCBub3QgYmUgdXNlZC4gIE9uIGFybTY0LCB0aGUgb25seQorICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHQgbW9kZWwgYXZhaWxhYmxlIGlzIEdJQy4KKworX1BMRCAgIDYuMS44ICAgICAgICAgICBPcHRpb25hbC4KKworXF9QUiAgIDUuMy4xICAgICAgICAgICBUaGlzIG5hbWVzcGFjZSBpcyBmb3IgeDg2IHVzZSBvbmx5IG9uIGxlZ2FjeSBzeXN0ZW1zLgorICAgICAgICAgICAgICAgICAgICAgICBEbyBub3QgdXNlIGl0IG9uIGFybTY0LgorCitfUFJTICAgNi4yLjEyICAgICAgICAgIE9wdGlvbmFsLgorCitfUFJUICAgNi4yLjEzICAgICAgICAgIFJlcXVpcmVkIGFzIHBhcnQgb2YgdGhlIGRlZmluaXRpb24gb2YgYWxsIFBDSSByb290CisgICAgICAgICAgICAgICAgICAgICAgIGRldmljZXMuCisKK19QUlcgICA3LjIuMTMgICAgICAgICAgVXNlIGFzIG5lZWRlZDsgcG93ZXIgbWFuYWdlbWVudCBzcGVjaWZpYy4KKworX1BSeCAgIDcuMi44LTExICAgICAgICBVc2UgYXMgbmVlZGVkOyBwb3dlciBtYW5hZ2VtZW50IHNwZWNpZmljLiAgSWYgX1BSMCBpcworICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkLCBfUFIzIG11c3QgYWxzbyBiZSBkZWZpbmVkLgorCitfUFNDICAgNy4yLjYgICAgICAgICAgIFVzZSBhcyBuZWVkZWQ7IHBvd2VyIG1hbmFnZW1lbnQgc3BlY2lmaWMuCisKK19QU0UgICA3LjIuNyAgICAgICAgICAgVXNlIGFzIG5lZWRlZDsgcG93ZXIgbWFuYWdlbWVudCBzcGVjaWZpYy4KKworX1BTVyAgIDcuMi4xNCAgICAgICAgICBVc2UgYXMgbmVlZGVkOyBwb3dlciBtYW5hZ2VtZW50IHNwZWNpZmljLgorCitfUFN4ICAgNy4yLjItNSAgICAgICAgIFVzZSBhcyBuZWVkZWQ7IHBvd2VyIG1hbmFnZW1lbnQgc3BlY2lmaWMuICBJZiBfUFMwIGlzCisgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQsIF9QUzMgbXVzdCBhbHNvIGJlIGRlZmluZWQuICBJZiBjbG9ja3Mgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgcmVndWxhdG9ycyBuZWVkIGFkanVzdGluZyB0byBiZSBjb25zaXN0ZW50IHdpdGggcG93ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2UsIGNoYW5nZSB0aGVtIGluIHRoZXNlIG1ldGhvZHMuCisKK1xfUFRTICA3LjMuMSAgICAgICAgICAgVXNlIGFzIG5lZWRlZDsgcG93ZXIgbWFuYWdlbWVudCBzcGVjaWZpYy4KKworX1BYTSAgIDYuMi4xNCAgICAgICAgICBPcHRpb25hbC4KKworX1JFRyAgIDYuNS40ICAgICAgICAgICBVc2UgYXMgbmVlZGVkLgorCitcX1JFViAgNS43LjQgICAgICAgICAgIEFsd2F5cyByZXR1cm5zIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBBQ1BJIHN1cHBvcnRlZC4KKworX1JNViAgIDYuMy42ICAgICAgICAgICBPcHRpb25hbC4KKworXF9TQiAgIDUuMy4xICAgICAgICAgICBSZXF1aXJlZCBvbiBhcm02NDsgYWxsIGRldmljZXMgbXVzdCBiZSBkZWZpbmVkIGluIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlLgorCitfU0VHICAgNi41LjYgICAgICAgICAgIFVzZSBhcyBuZWVkZWQ7IFBDSS1zcGVjaWZpYy4KKworXF9TSSAgIDUuMy4xLCAgICAgICAgICBPcHRpb25hbC4KKyAgICAgICA5LjEKKworX1NMSSAgIDYuMi4xNSAgICAgICAgICBPcHRpb25hbDsgcmVjb21tZW5kZWQgd2hlbiBTTElUIHRhYmxlIGlzIGluIHVzZS4KKworX1NUQSAgIDYuMy43LCAgICAgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0byBkZWZpbmUgdGhpcyBtZXRob2QgZm9yIGFueSBkZXZpY2UKKyAgICAgICA3LjEuNCAgICAgICAgICAgdGhhdCBjYW4gYmUgdHVybmVkIG9uIG9yIG9mZi4KKworX1NSUyAgIDYuMi4xNiAgICAgICAgICBPcHRpb25hbDsgc2VlIGFsc28gX1BSUy4KKworX1NUUiAgIDYuMS4xMCAgICAgICAgICBSZWNvbW1lbmRlZCBmb3IgY29udmV5aW5nIGRldmljZSBuYW1lcyB0byBlbmQgdXNlcnM7CisgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgaXMgcHJlZmVycmVkIG92ZXIgdXNpbmcgX0RETi4KKworX1NVQiAgIDYuMS45ICAgICAgICAgICBVc2UgYXMgbmVlZGVkOyBfSElEIG9yIF9DSUQgYXJlIHByZWZlcnJlZC4KKworX1NVTiAgIDYuMS4xMSAgICAgICAgICBPcHRpb25hbC4KKworXF9TeCAgIDcuMy4yICAgICAgICAgICBVc2UgYXMgbmVlZGVkOyBwb3dlciBtYW5hZ2VtZW50IHNwZWNpZmljLgorCitfU3hEICAgNy4yLjE2LTE5ICAgICAgIFVzZSBhcyBuZWVkZWQ7IHBvd2VyIG1hbmFnZW1lbnQgc3BlY2lmaWMuCisKK19TeFcgICA3LjIuMjAtMjQgICAgICAgVXNlIGFzIG5lZWRlZDsgcG93ZXIgbWFuYWdlbWVudCBzcGVjaWZpYy4KKworX1NXUyAgIDcuMy4zICAgICAgICAgICBVc2UgYXMgbmVlZGVkOyBwb3dlciBtYW5hZ2VtZW50IHNwZWNpZmljOyB0aGlzIG1heQorICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlIHNwZWNpZmljYXRpb24gY2hhbmdlcyBmb3IgdXNlIG9uIGFybTY0LgorCitcX1RUUyAgNy4zLjQgICAgICAgICAgIFVzZSBhcyBuZWVkZWQ7IHBvd2VyIG1hbmFnZW1lbnQgc3BlY2lmaWMuCisKK1xfVFogICA1LjMuMSAgICAgICAgICAgT3B0aW9uYWwuCisKK19VSUQgICA2LjEuMTIgICAgICAgICAgUmVjb21tZW5kZWQgZm9yIGRpc3Rpbmd1aXNoaW5nIGRldmljZXMgb2YgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M7IGRlZmluZSBpdCBpZiBhdCBhbGwgcG9zc2libGUuCisKK1xfV0FLICA3LjMuNSAgICAgICAgICAgVXNlIGFzIG5lZWRlZDsgcG93ZXIgbWFuYWdlbWVudCBzcGVjaWZpYy4KKworCitBQ1BJIEV2ZW50IE1vZGVsCistLS0tLS0tLS0tLS0tLS0tCitEbyBub3QgdXNlIEdQRSBibG9jayBkZXZpY2VzOyB0aGVzZSBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGUgaGFyZHdhcmUgcmVkdWNlZAorcHJvZmlsZSB1c2VkIGJ5IGFybTY0LiAgU2luY2UgdGhlcmUgYXJlIG5vIEdQRSBibG9ja3MgZGVmaW5lZCBmb3IgdXNlIG9uIEFSTQorcGxhdGZvcm1zLCBHUElPLXNpZ25hbGVkIGludGVycnVwdHMgc2hvdWxkIGJlIHVzZWQgZm9yIGNyZWF0aW5nIHN5c3RlbSBldmVudHMuCisKKworQUNQSSBQcm9jZXNzb3IgQ29udHJvbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU2VjdGlvbiA4IG9mIHRoZSBBQ1BJIHNwZWNpZmljYXRpb24gaXMgY3VycmVudGx5IHVuZGVyZ29pbmcgY2hhbmdlIHRoYXQKK3Nob3VsZCBiZSBjb21wbGV0ZWQgaW4gdGhlIDYuMCB2ZXJzaW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLiAgUHJvY2Vzc29yCitwZXJmb3JtYW5jZSBjb250cm9sIHdpbGwgYmUgaGFuZGxlZCBkaWZmZXJlbnRseSBmb3IgYXJtNjQgYXQgdGhhdCBwb2ludAoraW4gdGltZS4gIFByb2Nlc3NvciBhZ2dyZWdhdG9yIGRldmljZXMgKHNlY3Rpb24gOC41KSB3aWxsIG5vdCBiZSB1c2VkLAorZm9yIGV4YW1wbGUsIGJ1dCBhbm90aGVyIHNpbWlsYXIgbWVjaGFuaXNtIGluc3RlYWQuCisKK1doaWxlIFVFRkkgY29uc3RyYWlucyB3aGF0IHdlIGNhbiBzYXkgdW50aWwgdGhlIHJlbGVhc2Ugb2YgNi4wLCBpdCBpcworcmVjb21tZW5kZWQgdGhhdCBDUFBDICg4LjQuNSkgYmUgdXNlZCBhcyB0aGUgcHJpbWFyeSBtb2RlbC4gIFRoaXMgd2lsbAorc3RpbGwgYmUgdXNlZnVsIGludG8gdGhlIGZ1dHVyZS4gIEMtc3RhdGVzIGFuZCBQLXN0YXRlcyB3aWxsIHN0aWxsIGJlCitwcm92aWRlZCwgYnV0IG1vc3Qgb2YgdGhlIGN1cnJlbnQgZGVzaWduIHdvcmsgYXBwZWFycyB0byBmYXZvciBDUFBDLgorCitGdXJ0aGVyLCBpdCBpcyBlc3NlbnRpYWwgdGhhdCB0aGUgQVJNdjggU29DIHByb3ZpZGUgYSBmdWxseSBmdW5jdGlvbmFsCitpbXBsZW1lbnRhdGlvbiBvZiBQU0NJOyB0aGlzIHdpbGwgYmUgdGhlIG9ubHkgbWVjaGFuaXNtIHN1cHBvcnRlZCBieSBBQ1BJCit0byBjb250cm9sIENQVSBwb3dlciBzdGF0ZSAoaW5jbHVkaW5nIHNlY29uZGFyeSBDUFUgYm9vdGluZykuCisKK01vcmUgZGV0YWlscyB3aWxsIGJlIHByb3ZpZGVkIG9uIHRoZSByZWxlYXNlIG9mIHRoZSBBQ1BJIDYuMCBzcGVjaWZpY2F0aW9uLgorCisKK0FDUEkgU3lzdGVtIEFkZHJlc3MgTWFwIEludGVyZmFjZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0luIFNlY3Rpb24gMTUgb2YgdGhlIEFDUEkgc3BlY2lmaWNhdGlvbiwgc2V2ZXJhbCBtZXRob2RzIGFyZSBtZW50aW9uZWQgYXMKK3Bvc3NpYmxlIG1lY2hhbmlzbXMgZm9yIGNvbnZleWluZyBtZW1vcnkgcmVzb3VyY2UgaW5mb3JtYXRpb24gdG8gdGhlIGtlcm5lbC4KK0ZvciBhcm02NCwgd2Ugd2lsbCBvbmx5IHN1cHBvcnQgVUVGSSBmb3IgYm9vdGluZyB3aXRoIEFDUEksIGhlbmNlIHRoZSBVRUZJCitHZXRNZW1vcnlNYXAoKSBib290IHNlcnZpY2UgaXMgdGhlIG9ubHkgbWVjaGFuaXNtIHRoYXQgd2lsbCBiZSB1c2VkLgorCisKK0FDUEkgUGxhdGZvcm0gRXJyb3IgSW50ZXJmYWNlcyAoQVBFSSkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBBUEVJIHRhYmxlcyBzdXBwb3J0ZWQgYXJlIGRlc2NyaWJlZCBhYm92ZS4KKworQVBFSSByZXF1aXJlcyB0aGUgZXF1aXZhbGVudCBvZiBhbiBTQ0kgYW5kIGFuIE5NSSBvbiBBUk12OC4gIFRoZSBTQ0kgaXMgdXNlZAordG8gbm90aWZ5IHRoZSBPU1BNIG9mIGVycm9ycyB0aGF0IGhhdmUgb2NjdXJyZWQgYnV0IGNhbiBiZSBjb3JyZWN0ZWQgYW5kIHRoZQorc3lzdGVtIGNhbiBjb250aW51ZSBjb3JyZWN0IG9wZXJhdGlvbiwgZXZlbiBpZiBwb3NzaWJseSBkZWdyYWRlZC4gIFRoZSBOTUkgaXMKK3VzZWQgdG8gaW5kaWNhdGUgZmF0YWwgZXJyb3JzIHRoYXQgY2Fubm90IGJlIGNvcnJlY3RlZCwgYW5kIHJlcXVpcmUgaW1tZWRpYXRlCithdHRlbnRpb24uCisKK1NpbmNlIHRoZXJlIGlzIG5vIGRpcmVjdCBlcXVpdmFsZW50IG9mIHRoZSB4ODYgU0NJIG9yIE5NSSwgYXJtNjQgaGFuZGxlcwordGhlc2Ugc2xpZ2h0bHkgZGlmZmVyZW50bHkuICBUaGUgU0NJIGlzIGhhbmRsZWQgYXMgYSBub3JtYWwgR1BJTy1zaWduYWxlZAoraW50ZXJydXB0OyBnaXZlbiB0aGF0IHRoZXNlIGFyZSBjb3JyZWN0ZWQgKG9yIGNvcnJlY3RhYmxlKSBlcnJvcnMgYmVpbmcKK3JlcG9ydGVkLCB0aGlzIGlzIHN1ZmZpY2llbnQuICBUaGUgTk1JIGlzIGVtdWxhdGVkIGFzIHRoZSBoaWdoZXN0IHByaW9yaXR5CitHUElPLXNpZ25hbGVkIGludGVycnVwdCBwb3NzaWJsZS4gIFRoaXMgaW1wbGllcyBzb21lIGNhdXRpb24gbXVzdCBiZSB1c2VkCitzaW5jZSB0aGVyZSBjb3VsZCBiZSBpbnRlcnJ1cHRzIGF0IGhpZ2hlciBwcml2aWxlZ2UgbGV2ZWxzIG9yIGV2ZW4gaW50ZXJydXB0cworYXQgdGhlIHNhbWUgcHJpb3JpdHkgYXMgdGhlIGVtdWxhdGVkIE5NSS4gIEluIExpbnV4LCB0aGlzIHNob3VsZCBub3QgYmUgdGhlCitjYXNlIGJ1dCBvbmUgc2hvdWxkIGJlIGF3YXJlIGl0IGNvdWxkIGhhcHBlbi4KKworCitBQ1BJIE9iamVjdHMgTm90IFN1cHBvcnRlZCBvbiBBUk02NAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1doaWxlIHRoaXMgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLCB0aGVyZSBhcmUgc2V2ZXJhbCBjbGFzc2VzIG9mIG9iamVjdHMKK3RoYXQgY2FuIGJlIGRlZmluZWQsIGJ1dCBhcmUgbm90IGN1cnJlbnRseSBvZiBnZW5lcmFsIGludGVyZXN0IHRvIEFSTSBzZXJ2ZXJzLgorCitUaGVzZSBhcmUgbm90IHN1cHBvcnRlZDoKKworICAgICAgIC0tIFNlY3Rpb24gOS4yOiBhbWJpZW50IGxpZ2h0IHNlbnNvciBkZXZpY2VzCisKKyAgICAgICAtLSBTZWN0aW9uIDkuMzogYmF0dGVyeSBkZXZpY2VzCisKKyAgICAgICAtLSBTZWN0aW9uIDkuNDogbGlkcyAoZS5nLiwgbGFwdG9wIGxpZHMpCisKKyAgICAgICAtLSBTZWN0aW9uIDkuOC4yOiBJREUgY29udHJvbGxlcnMKKworICAgICAgIC0tIFNlY3Rpb24gOS45OiBmbG9wcHkgY29udHJvbGxlcnMKKworICAgICAgIC0tIFNlY3Rpb24gOS4xMDogR1BFIGJsb2NrIGRldmljZXMKKworICAgICAgIC0tIFNlY3Rpb24gOS4xNTogUEMvQVQgUlRDL0NNT1MgZGV2aWNlcworCisgICAgICAgLS0gU2VjdGlvbiA5LjE2OiB1c2VyIHByZXNlbmNlIGRldGVjdGlvbiBkZXZpY2VzCisKKyAgICAgICAtLSBTZWN0aW9uIDkuMTc6IEkvTyBBUElDIGRldmljZXM7IGFsbCBHSUNzIG11c3QgYmUgZW51bWVyYWJsZSB2aWEgTUFEVAorCisgICAgICAgLS0gU2VjdGlvbiA5LjE4OiB0aW1lIGFuZCBhbGFybSBkZXZpY2VzIChzZWUgOS4xNSkKKworCitBQ1BJIE9iamVjdHMgTm90IFlldCBJbXBsZW1lbnRlZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1doaWxlIHRoZXNlIG9iamVjdHMgaGF2ZSB4ODYgZXF1aXZhbGVudHMsIGFuZCB0aGV5IGRvIG1ha2Ugc29tZSBzZW5zZSBpbiBBUk0KK3NlcnZlcnMsIHRoZXJlIGlzIGVpdGhlciBubyBoYXJkd2FyZSBhdmFpbGFibGUgYXQgcHJlc2VudCwgb3IgaW4gc29tZSBjYXNlcwordGhlcmUgbWF5IG5vdCB5ZXQgYmUgYSBub24tQVJNIGltcGxlbWVudGF0aW9uLiAgSGVuY2UsIHRoZXkgYXJlIGN1cnJlbnRseSBub3QKK2ltcGxlbWVudGVkIHRob3VnaCB0aGF0IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4KKworTm90IHlldCBpbXBsZW1lbnRlZCBhcmU6CisKKyAgICAgICAtLSBTZWN0aW9uIDEwOiBwb3dlciBzb3VyY2UgYW5kIHBvd2VyIG1ldGVyIGRldmljZXMKKworICAgICAgIC0tIFNlY3Rpb24gMTE6IHRoZXJtYWwgbWFuYWdlbWVudAorCisgICAgICAgLS0gU2VjdGlvbiAxMjogZW1iZWRkZWQgY29udHJvbGxlcnMgaW50ZXJmYWNlCisKKyAgICAgICAtLSBTZWN0aW9uIDEzOiBTTUJ1cyBpbnRlcmZhY2VzCisKKyAgICAgICAtLSBTZWN0aW9uIDE3OiBOVU1BIHN1cHBvcnQgKHByb3RvdHlwZXMgaGF2ZSBiZWVuIHN1Ym1pdHRlZCBmb3IKKyAgICAgICAgICByZXZpZXcpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybTY0L2FybS1hY3BpLnR4dCBiL0RvY3VtZW50YXRpb24vYXJtNjQvYXJtLWFjcGkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MGE0ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybTY0L2FybS1hY3BpLnR4dApAQCAtMCwwICsxLDUwNSBAQAorQUNQSSBvbiBBUk12OCBTZXJ2ZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FDUEkgY2FuIGJlIHVzZWQgZm9yIEFSTXY4IGdlbmVyYWwgcHVycG9zZSBzZXJ2ZXJzIGRlc2lnbmVkIHRvIGZvbGxvdwordGhlIEFSTSBTQlNBIChTZXJ2ZXIgQmFzZSBTeXN0ZW0gQXJjaGl0ZWN0dXJlKSBbMF0gYW5kIFNCQlIgKFNlcnZlcgorQmFzZSBCb290IFJlcXVpcmVtZW50cykgWzFdIHNwZWNpZmljYXRpb25zLiAgUGxlYXNlIG5vdGUgdGhhdCB0aGUgU0JCUgorY2FuIGJlIHJldHJpZXZlZCBzaW1wbHkgYnkgdmlzaXRpbmcgWzFdLCBidXQgdGhlIFNCU0EgaXMgY3VycmVudGx5IG9ubHkKK2F2YWlsYWJsZSB0byB0aG9zZSB3aXRoIGFuIEFSTSBsb2dpbiBkdWUgdG8gQVJNIElQIGxpY2Vuc2luZyBjb25jZXJucy4KKworVGhlIEFSTXY4IGtlcm5lbCBpbXBsZW1lbnRzIHRoZSByZWR1Y2VkIGhhcmR3YXJlIG1vZGVsIG9mIEFDUEkgdmVyc2lvbgorNS4xIG9yIGxhdGVyLiAgTGlua3MgdG8gdGhlIHNwZWNpZmljYXRpb24gYW5kIGFsbCBleHRlcm5hbCBkb2N1bWVudHMKK2l0IHJlZmVycyB0byBhcmUgbWFuYWdlZCBieSB0aGUgVUVGSSBGb3J1bS4gIFRoZSBzcGVjaWZpY2F0aW9uIGlzCithdmFpbGFibGUgYXQgaHR0cDovL3d3dy51ZWZpLm9yZy9zcGVjaWZpY2F0aW9ucyBhbmQgZG9jdW1lbnRzIHJlZmVyZW5jZWQKK2J5IHRoZSBzcGVjaWZpY2F0aW9uIGNhbiBiZSBmb3VuZCB2aWEgaHR0cDovL3d3dy51ZWZpLm9yZy9hY3BpLgorCitJZiBhbiBBUk12OCBzeXN0ZW0gZG9lcyBub3QgbWVldCB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoZSBTQlNBIGFuZCBTQkJSLAorb3IgY2Fubm90IGJlIGRlc2NyaWJlZCB1c2luZyB0aGUgbWVjaGFuaXNtcyBkZWZpbmVkIGluIHRoZSByZXF1aXJlZCBBQ1BJCitzcGVjaWZpY2F0aW9ucywgdGhlbiBBQ1BJIG1heSBub3QgYmUgYSBnb29kIGZpdCBmb3IgdGhlIGhhcmR3YXJlLgorCitXaGlsZSB0aGUgZG9jdW1lbnRzIG1lbnRpb25lZCBhYm92ZSBzZXQgb3V0IHRoZSByZXF1aXJlbWVudHMgZm9yIGJ1aWxkaW5nCitpbmR1c3RyeS1zdGFuZGFyZCBBUk12OCBzZXJ2ZXJzLCB0aGV5IGFsc28gYXBwbHkgdG8gbW9yZSB0aGFuIG9uZSBvcGVyYXRpbmcKK3N5c3RlbS4gIFRoZSBwdXJwb3NlIG9mIHRoaXMgZG9jdW1lbnQgaXMgdG8gZGVzY3JpYmUgdGhlIGludGVyYWN0aW9uIGJldHdlZW4KK0FDUEkgYW5kIExpbnV4IG9ubHksIG9uIGFuIEFSTXY4IHN5c3RlbSAtLSB0aGF0IGlzLCB3aGF0IExpbnV4IGV4cGVjdHMgb2YKK0FDUEkgYW5kIHdoYXQgQUNQSSBjYW4gZXhwZWN0IG9mIExpbnV4LgorCisKK1doeSBBQ1BJIG9uIEFSTT8KKy0tLS0tLS0tLS0tLS0tLS0KK0JlZm9yZSBleGFtaW5pbmcgdGhlIGRldGFpbHMgb2YgdGhlIGludGVyZmFjZSBiZXR3ZWVuIEFDUEkgYW5kIExpbnV4LCBpdCBpcwordXNlZnVsIHRvIHVuZGVyc3RhbmQgd2h5IEFDUEkgaXMgYmVpbmcgdXNlZC4gIFNldmVyYWwgdGVjaG5vbG9naWVzIGFscmVhZHkKK2V4aXN0IGluIExpbnV4IGZvciBkZXNjcmliaW5nIG5vbi1lbnVtZXJhYmxlIGhhcmR3YXJlLCBhZnRlciBhbGwuICBJbiB0aGlzCitzZWN0aW9uIHdlIHN1bW1hcml6ZSBhIGJsb2cgcG9zdCBbMl0gZnJvbSBHcmFudCBMaWtlbHkgdGhhdCBvdXRsaW5lcyB0aGUKK3JlYXNvbmluZyBiZWhpbmQgQUNQSSBvbiBBUk12OCBzZXJ2ZXJzLiAgQWN0dWFsbHksIHdlIHNuaXRjaCBhIGdvb2QgcG9ydGlvbgorb2YgdGhlIHN1bW1hcnkgdGV4dCBhbG1vc3QgZGlyZWN0bHksIHRvIGJlIGhvbmVzdC4KKworVGhlIHNob3J0IGZvcm0gb2YgdGhlIHJhdGlvbmFsZSBmb3IgQUNQSSBvbiBBUk0gaXM6CisKKy0tIEFDUEnigJlzIGJ5dGVjb2RlIChBTUwpIGFsbG93cyB0aGUgcGxhdGZvcm0gdG8gZW5jb2RlIGhhcmR3YXJlIGJlaGF2aW9yLAorICAgd2hpbGUgRFQgZXhwbGljaXRseSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMuICBGb3IgaGFyZHdhcmUgdmVuZG9ycywgYmVpbmcKKyAgIGFibGUgdG8gZW5jb2RlIGJlaGF2aW9yIGlzIGEga2V5IHRvb2wgdXNlZCBpbiBzdXBwb3J0aW5nIG9wZXJhdGluZworICAgc3lzdGVtIHJlbGVhc2VzIG9uIG5ldyBoYXJkd2FyZS4KKworLS0gQUNQSeKAmXMgT1NQTSBkZWZpbmVzIGEgcG93ZXIgbWFuYWdlbWVudCBtb2RlbCB0aGF0IGNvbnN0cmFpbnMgd2hhdCB0aGUKKyAgIHBsYXRmb3JtIGlzIGFsbG93ZWQgdG8gZG8gaW50byBhIHNwZWNpZmljIG1vZGVsLCB3aGlsZSBzdGlsbCBwcm92aWRpbmcKKyAgIGZsZXhpYmlsaXR5IGluIGhhcmR3YXJlIGRlc2lnbi4KKworLS0gSW4gdGhlIGVudGVycHJpc2Ugc2VydmVyIGVudmlyb25tZW50LCBBQ1BJIGhhcyBlc3RhYmxpc2hlZCBiaW5kaW5ncyAoc3VjaAorICAgYXMgZm9yIFJBUykgd2hpY2ggYXJlIGN1cnJlbnRseSB1c2VkIGluIHByb2R1Y3Rpb24gc3lzdGVtcy4gIERUIGRvZXMgbm90LgorICAgU3VjaCBiaW5kaW5ncyBjb3VsZCBiZSBkZWZpbmVkIGluIERUIGF0IHNvbWUgcG9pbnQsIGJ1dCBkb2luZyBzbyBtZWFucyBBUk0KKyAgIGFuZCB4ODYgd291bGQgZW5kIHVwIHVzaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50IGNvZGUgcGF0aHMgaW4gYm90aCBmaXJtd2FyZQorICAgYW5kIHRoZSBrZXJuZWwuCisKKy0tIENob29zaW5nIGEgc2luZ2xlIGludGVyZmFjZSB0byBkZXNjcmliZSB0aGUgYWJzdHJhY3Rpb24gYmV0d2VlbiBhIHBsYXRmb3JtCisgICBhbmQgYW4gT1MgaXMgaW1wb3J0YW50LiAgSGFyZHdhcmUgdmVuZG9ycyB3b3VsZCBub3QgYmUgcmVxdWlyZWQgdG8gaW1wbGVtZW50CisgICBib3RoIERUIGFuZCBBQ1BJIGlmIHRoZXkgd2FudCB0byBzdXBwb3J0IG11bHRpcGxlIG9wZXJhdGluZyBzeXN0ZW1zLiAgQW5kLAorICAgYWdyZWVpbmcgb24gYSBzaW5nbGUgaW50ZXJmYWNlIGluc3RlYWQgb2YgYmVpbmcgZnJhZ21lbnRlZCBpbnRvIHBlciBPUworICAgaW50ZXJmYWNlcyBtYWtlcyBmb3IgYmV0dGVyIGludGVyb3BlcmFiaWxpdHkgb3ZlcmFsbC4KKworLS0gVGhlIG5ldyBBQ1BJIGdvdmVybmFuY2UgcHJvY2VzcyB3b3JrcyB3ZWxsIGFuZCBMaW51eCBpcyBub3cgYXQgdGhlIHNhbWUKKyAgIHRhYmxlIGFzIGhhcmR3YXJlIHZlbmRvcnMgYW5kIG90aGVyIE9TIHZlbmRvcnMuICBJbiBmYWN0LCB0aGVyZSBpcyBubworICAgbG9uZ2VyIGFueSByZWFzb24gdG8gZmVlbCB0aGF0IEFDUEkgaXMgb25seSBiZWxvbmdzIHRvIFdpbmRvd3Mgb3IgdGhhdAorICAgTGludXggaXMgaW4gYW55IHdheSBzZWNvbmRhcnkgdG8gTWljcm9zb2Z0IGluIHRoaXMgYXJlbmEuICBUaGUgbW92ZSBvZgorICAgQUNQSSBnb3Zlcm5hbmNlIGludG8gdGhlIFVFRkkgZm9ydW0gaGFzIHNpZ25pZmljYW50bHkgb3BlbmVkIHVwIHRoZQorICAgc3BlY2lmaWNhdGlvbiBkZXZlbG9wbWVudCBwcm9jZXNzLCBhbmQgY3VycmVudGx5LCBhIGxhcmdlIHBvcnRpb24gb2YgdGhlCisgICBjaGFuZ2VzIGJlaW5nIG1hZGUgdG8gQUNQSSBpcyBiZWluZyBkcml2ZW4gYnkgTGludXguCisKK0tleSB0byB0aGUgdXNlIG9mIEFDUEkgaXMgdGhlIHN1cHBvcnQgbW9kZWwuICBGb3Igc2VydmVycyBpbiBnZW5lcmFsLCB0aGUKK3Jlc3BvbnNpYmlsaXR5IGZvciBoYXJkd2FyZSBiZWhhdmlvdXIgY2Fubm90IHNvbGVseSBiZSB0aGUgZG9tYWluIG9mIHRoZQora2VybmVsLCBidXQgcmF0aGVyIG11c3QgYmUgc3BsaXQgYmV0d2VlbiB0aGUgcGxhdGZvcm0gYW5kIHRoZSBrZXJuZWwsIGluCitvcmRlciB0byBhbGxvdyBmb3Igb3JkZXJseSBjaGFuZ2Ugb3ZlciB0aW1lLiAgQUNQSSBmcmVlcyB0aGUgT1MgZnJvbSBuZWVkaW5nCit0byB1bmRlcnN0YW5kIGFsbCB0aGUgbWludXRlIGRldGFpbHMgb2YgdGhlIGhhcmR3YXJlIHNvIHRoYXQgdGhlIE9TIGRvZXNu4oCZdAorbmVlZCB0byBiZSBwb3J0ZWQgdG8gZWFjaCBhbmQgZXZlcnkgZGV2aWNlIGluZGl2aWR1YWxseS4gIEl0IGFsbG93cyB0aGUKK2hhcmR3YXJlIHZlbmRvcnMgdG8gdGFrZSByZXNwb25zaWJpbGl0eSBmb3IgcG93ZXIgbWFuYWdlbWVudCBiZWhhdmlvdXIgd2l0aG91dAorZGVwZW5kaW5nIG9uIGFuIE9TIHJlbGVhc2UgY3ljbGUgd2hpY2ggaXMgbm90IHVuZGVyIHRoZWlyIGNvbnRyb2wuCisKK0FDUEkgaXMgYWxzbyBpbXBvcnRhbnQgYmVjYXVzZSBoYXJkd2FyZSBhbmQgT1MgdmVuZG9ycyBoYXZlIGFscmVhZHkgd29ya2VkCitvdXQgdGhlIG1lY2hhbmlzbXMgZm9yIHN1cHBvcnRpbmcgYSBnZW5lcmFsIHB1cnBvc2UgY29tcHV0aW5nIGVjb3N5c3RlbS4gIFRoZQoraW5mcmFzdHJ1Y3R1cmUgaXMgaW4gcGxhY2UsIHRoZSBiaW5kaW5ncyBhcmUgaW4gcGxhY2UsIGFuZCB0aGUgcHJvY2Vzc2VzIGFyZQoraW4gcGxhY2UuICBEVCBkb2VzIGV4YWN0bHkgd2hhdCBMaW51eCBuZWVkcyBpdCB0byB3aGVuIHdvcmtpbmcgd2l0aCB2ZXJ0aWNhbGx5CitpbnRlZ3JhdGVkIGRldmljZXMsIGJ1dCB0aGVyZSBhcmUgbm8gZ29vZCBwcm9jZXNzZXMgZm9yIHN1cHBvcnRpbmcgd2hhdCB0aGUKK3NlcnZlciB2ZW5kb3JzIG5lZWQuICBMaW51eCBjb3VsZCBwb3RlbnRpYWxseSBnZXQgdGhlcmUgd2l0aCBEVCwgYnV0IGRvaW5nIHNvCityZWFsbHkganVzdCBkdXBsaWNhdGVzIHNvbWV0aGluZyB0aGF0IGFscmVhZHkgd29ya3MuICBBQ1BJIGFscmVhZHkgZG9lcyB3aGF0Cit0aGUgaGFyZHdhcmUgdmVuZG9ycyBuZWVkLCBNaWNyb3NvZnQgd29u4oCZdCBjb2xsYWJvcmF0ZSBvbiBEVCwgYW5kIGhhcmR3YXJlCit2ZW5kb3JzIHdvdWxkIHN0aWxsIGVuZCB1cCBwcm92aWRpbmcgdHdvIGNvbXBsZXRlbHkgc2VwYXJhdGUgZmlybXdhcmUKK2ludGVyZmFjZXMgLS0gb25lIGZvciBMaW51eCBhbmQgb25lIGZvciBXaW5kb3dzLgorCisKK0tlcm5lbCBDb21wYXRpYmlsaXR5CistLS0tLS0tLS0tLS0tLS0tLS0tLQorT25lIG9mIHRoZSBwcmltYXJ5IG1vdGl2YXRpb25zIGZvciBBQ1BJIGlzIHN0YW5kYXJkaXphdGlvbiwgYW5kIHVzaW5nIHRoYXQKK3RvIHByb3ZpZGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBmb3IgTGludXgga2VybmVscy4gIEluIHRoZSBzZXJ2ZXIgbWFya2V0LAorc29mdHdhcmUgYW5kIGhhcmR3YXJlIGFyZSBvZnRlbiB1c2VkIGZvciBsb25nIHBlcmlvZHMuICBBQ1BJIGFsbG93cyB0aGUKK2tlcm5lbCBhbmQgZmlybXdhcmUgdG8gYWdyZWUgb24gYSBjb25zaXN0ZW50IGFic3RyYWN0aW9uIHRoYXQgY2FuIGJlCittYWludGFpbmVkIG92ZXIgdGltZSwgZXZlbiBhcyBoYXJkd2FyZSBvciBzb2Z0d2FyZSBjaGFuZ2UuICBBcyBsb25nIGFzIHRoZQorYWJzdHJhY3Rpb24gaXMgc3VwcG9ydGVkLCBzeXN0ZW1zIGNhbiBiZSB1cGRhdGVkIHdpdGhvdXQgbmVjZXNzYXJpbHkgaGF2aW5nCit0byByZXBsYWNlIHRoZSBrZXJuZWwuCisKK1doZW4gYSBMaW51eCBkcml2ZXIgb3Igc3Vic3lzdGVtIGlzIGZpcnN0IGltcGxlbWVudGVkIHVzaW5nIEFDUEksIGl0IGJ5CitkZWZpbml0aW9uIGVuZHMgdXAgcmVxdWlyaW5nIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgQUNQSSBzcGVjaWZpY2F0aW9uCistLSBpdCdzIGJhc2VsaW5lLiAgQUNQSSBmaXJtd2FyZSBtdXN0IGNvbnRpbnVlIHRvIHdvcmssIGV2ZW4gdGhvdWdoIGl0IG1heQorbm90IGJlIG9wdGltYWwsIHdpdGggdGhlIGVhcmxpZXN0IGtlcm5lbCB2ZXJzaW9uIHRoYXQgZmlyc3QgcHJvdmlkZXMgc3VwcG9ydAorZm9yIHRoYXQgYmFzZWxpbmUgdmVyc2lvbiBvZiBBQ1BJLiAgVGhlcmUgbWF5IGJlIGEgbmVlZCBmb3IgYWRkaXRpb25hbCBkcml2ZXJzLAorYnV0IGFkZGluZyBuZXcgZnVuY3Rpb25hbGl0eSAoZS5nLiwgQ1BVIHBvd2VyIG1hbmFnZW1lbnQpIHNob3VsZCBub3QgYnJlYWsKK29sZGVyIGtlcm5lbCB2ZXJzaW9ucy4gIEZ1cnRoZXIsIEFDUEkgZmlybXdhcmUgbXVzdCBhbHNvIHdvcmsgd2l0aCB0aGUgbW9zdAorcmVjZW50IHZlcnNpb24gb2YgdGhlIGtlcm5lbC4KKworCitSZWxhdGlvbnNoaXAgd2l0aCBEZXZpY2UgVHJlZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FDUEkgc3VwcG9ydCBpbiBkcml2ZXJzIGFuZCBzdWJzeXN0ZW1zIGZvciBBUk12OCBzaG91bGQgbmV2ZXIgYmUgbXV0dWFsbHkKK2V4Y2x1c2l2ZSB3aXRoIERUIHN1cHBvcnQgYXQgY29tcGlsZSB0aW1lLgorCitBdCBib290IHRpbWUgdGhlIGtlcm5lbCB3aWxsIG9ubHkgdXNlIG9uZSBkZXNjcmlwdGlvbiBtZXRob2QgZGVwZW5kaW5nIG9uCitwYXJhbWV0ZXJzIHBhc3NlZCBmcm9tIHRoZSBib290bG9hZGVyIChpbmNsdWRpbmcga2VybmVsIGJvb3RhcmdzKS4KKworUmVnYXJkbGVzcyBvZiB3aGV0aGVyIERUIG9yIEFDUEkgaXMgdXNlZCwgdGhlIGtlcm5lbCBtdXN0IGFsd2F5cyBiZSBjYXBhYmxlCitvZiBib290aW5nIHdpdGggZWl0aGVyIHNjaGVtZSAoaW4ga2VybmVscyB3aXRoIGJvdGggc2NoZW1lcyBlbmFibGVkIGF0IGNvbXBpbGUKK3RpbWUpLgorCisKK0Jvb3RpbmcgdXNpbmcgQUNQSSB0YWJsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBvbmx5IGRlZmluZWQgbWV0aG9kIGZvciBwYXNzaW5nIEFDUEkgdGFibGVzIHRvIHRoZSBrZXJuZWwgb24gQVJNdjgKK2lzIHZpYSB0aGUgVUVGSSBzeXN0ZW0gY29uZmlndXJhdGlvbiB0YWJsZS4gIEp1c3Qgc28gaXQgaXMgZXhwbGljaXQsIHRoaXMKK21lYW5zIHRoYXQgQUNQSSBpcyBvbmx5IHN1cHBvcnRlZCBvbiBwbGF0Zm9ybXMgdGhhdCBib290IHZpYSBVRUZJLgorCitXaGVuIGFuIEFSTXY4IHN5c3RlbSBib290cywgaXQgY2FuIGVpdGhlciBoYXZlIERUIGluZm9ybWF0aW9uLCBBQ1BJIHRhYmxlcywKK29yIGluIHNvbWUgdmVyeSB1bnVzdWFsIGNhc2VzLCBib3RoLiAgSWYgbm8gY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMgYXJlIHVzZWQsCit0aGUga2VybmVsIHdpbGwgdHJ5IHRvIHVzZSBEVCBmb3IgZGV2aWNlIGVudW1lcmF0aW9uOyBpZiB0aGVyZSBpcyBubyBEVAorcHJlc2VudCwgdGhlIGtlcm5lbCB3aWxsIHRyeSB0byB1c2UgQUNQSSB0YWJsZXMsIGJ1dCBvbmx5IGlmIHRoZXkgYXJlIHByZXNlbnQuCitJbiBuZWl0aGVyIGlzIGF2YWlsYWJsZSwgdGhlIGtlcm5lbCB3aWxsIG5vdCBib290LiAgSWYgYWNwaT1mb3JjZSBpcyB1c2VkCitvbiB0aGUgY29tbWFuZCBsaW5lLCB0aGUga2VybmVsIHdpbGwgYXR0ZW1wdCB0byB1c2UgQUNQSSB0YWJsZXMgZmlyc3QsIGJ1dAorZmFsbCBiYWNrIHRvIERUIGlmIHRoZXJlIGFyZSBubyBBQ1BJIHRhYmxlcyBwcmVzZW50LiAgVGhlIGJhc2ljIGlkZWEgaXMgdGhhdAordGhlIGtlcm5lbCB3aWxsIG5vdCBmYWlsIHRvIGJvb3QgdW5sZXNzIGl0IGFic29sdXRlbHkgaGFzIG5vIG90aGVyIGNob2ljZS4KKworUHJvY2Vzc2luZyBvZiBBQ1BJIHRhYmxlcyBtYXkgYmUgZGlzYWJsZWQgYnkgcGFzc2luZyBhY3BpPW9mZiBvbiB0aGUga2VybmVsCitjb21tYW5kIGxpbmU7IHRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IuCisKK0luIG9yZGVyIGZvciB0aGUga2VybmVsIHRvIGxvYWQgYW5kIHVzZSBBQ1BJIHRhYmxlcywgdGhlIFVFRkkgaW1wbGVtZW50YXRpb24KK01VU1Qgc2V0IHRoZSBBQ1BJXzIwX1RBQkxFX0dVSUQgdG8gcG9pbnQgdG8gdGhlIFJTRFAgdGFibGUgKHRoZSB0YWJsZSB3aXRoCit0aGUgQUNQSSBzaWduYXR1cmUgIlJTRCBQVFIgIikuICBJZiB0aGlzIHBvaW50ZXIgaXMgaW5jb3JyZWN0IGFuZCBhY3BpPWZvcmNlCitpcyB1c2VkLCB0aGUga2VybmVsIHdpbGwgZGlzYWJsZSBBQ1BJIGFuZCB0cnkgdG8gdXNlIERUIHRvIGJvb3QgaW5zdGVhZDsgdGhlCitrZXJuZWwgaGFzLCBpbiBlZmZlY3QsIGRldGVybWluZWQgdGhhdCBBQ1BJIHRhYmxlcyBhcmUgbm90IHByZXNlbnQgYXQgdGhhdAorcG9pbnQuCisKK0lmIHRoZSBwb2ludGVyIHRvIHRoZSBSU0RQIHRhYmxlIGlzIGNvcnJlY3QsIHRoZSB0YWJsZSB3aWxsIGJlIG1hcHBlZCBpbnRvCit0aGUga2VybmVsIGJ5IHRoZSBBQ1BJIGNvcmUsIHVzaW5nIHRoZSBhZGRyZXNzIHByb3ZpZGVkIGJ5IFVFRkkuCisKK1RoZSBBQ1BJIGNvcmUgd2lsbCB0aGVuIGxvY2F0ZSBhbmQgbWFwIGluIGFsbCBvdGhlciBBQ1BJIHRhYmxlcyBwcm92aWRlZCBieQordXNpbmcgdGhlIGFkZHJlc3NlcyBpbiB0aGUgUlNEUCB0YWJsZSB0byBmaW5kIHRoZSBYU0RUIChlWHRlbmRlZCBTeXN0ZW0KK0Rlc2NyaXB0aW9uIFRhYmxlKS4gIFRoZSBYU0RUIGluIHR1cm4gcHJvdmlkZXMgdGhlIGFkZHJlc3NlcyB0byBhbGwgb3RoZXIKK0FDUEkgdGFibGVzIHByb3ZpZGVkIGJ5IHRoZSBzeXN0ZW0gZmlybXdhcmU7IHRoZSBBQ1BJIGNvcmUgd2lsbCB0aGVuIHRyYXZlcnNlCit0aGlzIHRhYmxlIGFuZCBtYXAgaW4gdGhlIHRhYmxlcyBsaXN0ZWQuCisKK1RoZSBBQ1BJIGNvcmUgd2lsbCBpZ25vcmUgYW55IHByb3ZpZGVkIFJTRFQgKFJvb3QgU3lzdGVtIERlc2NyaXB0aW9uIFRhYmxlKS4KK1JTRFRzIGhhdmUgYmVlbiBkZXByZWNhdGVkIGFuZCBhcmUgaWdub3JlZCBvbiBhcm02NCBzaW5jZSB0aGV5IG9ubHkgYWxsb3cKK2ZvciAzMi1iaXQgYWRkcmVzc2VzLgorCitGdXJ0aGVyLCB0aGUgQUNQSSBjb3JlIHdpbGwgb25seSB1c2UgdGhlIDY0LWJpdCBhZGRyZXNzIGZpZWxkcyBpbiB0aGUgRkFEVAorKEZpeGVkIEFDUEkgRGVzY3JpcHRpb24gVGFibGUpLiAgQW55IDMyLWJpdCBhZGRyZXNzIGZpZWxkcyBpbiB0aGUgRkFEVCB3aWxsCitiZSBpZ25vcmVkIG9uIGFybTY0LgorCitIYXJkd2FyZSByZWR1Y2VkIG1vZGUgKHNlZSBTZWN0aW9uIDQuMSBvZiB0aGUgQUNQSSA1LjEgc3BlY2lmaWNhdGlvbikgd2lsbAorYmUgZW5mb3JjZWQgYnkgdGhlIEFDUEkgY29yZSBvbiBhcm02NC4gIERvaW5nIHNvIGFsbG93cyB0aGUgQUNQSSBjb3JlIHRvCitydW4gbGVzcyBjb21wbGV4IGNvZGUgc2luY2UgaXQgbm8gbG9uZ2VyIGhhcyB0byBwcm92aWRlIHN1cHBvcnQgZm9yIGxlZ2FjeQoraGFyZHdhcmUgZnJvbSBvdGhlciBhcmNoaXRlY3R1cmVzLiAgQW55IGZpZWxkcyB0aGF0IGFyZSBub3QgdG8gYmUgdXNlZCBmb3IKK2hhcmR3YXJlIHJlZHVjZWQgbW9kZSBtdXN0IGJlIHNldCB0byB6ZXJvLgorCitGb3IgdGhlIEFDUEkgY29yZSB0byBvcGVyYXRlIHByb3Blcmx5LCBhbmQgaW4gdHVybiBwcm92aWRlIHRoZSBpbmZvcm1hdGlvbgordGhlIGtlcm5lbCBuZWVkcyB0byBjb25maWd1cmUgZGV2aWNlcywgaXQgZXhwZWN0cyB0byBmaW5kIHRoZSBmb2xsb3dpbmcKK3RhYmxlcyAoYWxsIHNlY3Rpb24gbnVtYmVycyByZWZlciB0byB0aGUgQUNQSSA1LjEgc3BlY2ZpY2F0aW9uKToKKworICAgIC0tIFJTRFAgKFJvb3QgU3lzdGVtIERlc2NyaXB0aW9uIFBvaW50ZXIpLCBzZWN0aW9uIDUuMi41CisKKyAgICAtLSBYU0RUIChlWHRlbmRlZCBTeXN0ZW0gRGVzY3JpcHRpb24gVGFibGUpLCBzZWN0aW9uIDUuMi44CisKKyAgICAtLSBGQURUIChGaXhlZCBBQ1BJIERlc2NyaXB0aW9uIFRhYmxlKSwgc2VjdGlvbiA1LjIuOQorCisgICAgLS0gRFNEVCAoRGlmZmVyZW50aWF0ZWQgU3lzdGVtIERlc2NyaXB0aW9uIFRhYmxlKSwgc2VjdGlvbgorICAgICAgIDUuMi4xMS4xCisKKyAgICAtLSBNQURUIChNdWx0aXBsZSBBUElDIERlc2NyaXB0aW9uIFRhYmxlKSwgc2VjdGlvbiA1LjIuMTIKKworICAgIC0tIEdURFQgKEdlbmVyaWMgVGltZXIgRGVzY3JpcHRpb24gVGFibGUpLCBzZWN0aW9uIDUuMi4yNAorCisgICAgLS0gSWYgUENJIGlzIHN1cHBvcnRlZCwgdGhlIE1DRkcgKE1lbW9yeSBtYXBwZWQgQ29uRmlHdXJhdGlvbgorICAgICAgIFRhYmxlKSwgc2VjdGlvbiA1LjIuNiwgc3BlY2lmaWNhbGx5IFRhYmxlIDUtMzEuCisKK0lmIHRoZSBhYm92ZSB0YWJsZXMgYXJlIG5vdCBhbGwgcHJlc2VudCwgdGhlIGtlcm5lbCBtYXkgb3IgbWF5IG5vdCBiZQorYWJsZSB0byBib290IHByb3Blcmx5IHNpbmNlIGl0IG1heSBub3QgYmUgYWJsZSB0byBjb25maWd1cmUgYWxsIG9mIHRoZQorZGV2aWNlcyBhdmFpbGFibGUuCisKKworQUNQSSBEZXRlY3Rpb24KKy0tLS0tLS0tLS0tLS0tCitEcml2ZXJzIHNob3VsZCBkZXRlcm1pbmUgdGhlaXIgcHJvYmUoKSB0eXBlIGJ5IGNoZWNraW5nIGZvciBhIG51bGwKK3ZhbHVlIGZvciBBQ1BJX0hBTkRMRSwgb3IgY2hlY2tpbmcgLm9mX25vZGUsIG9yIG90aGVyIGluZm9ybWF0aW9uIGluCit0aGUgZGV2aWNlIHN0cnVjdHVyZS4gIFRoaXMgaXMgZGV0YWlsZWQgZnVydGhlciBpbiB0aGUgIkRyaXZlcgorUmVjb21tZW5kYXRpb25zIiBzZWN0aW9uLgorCitJbiBub24tZHJpdmVyIGNvZGUsIGlmIHRoZSBwcmVzZW5jZSBvZiBBQ1BJIG5lZWRzIHRvIGJlIGRldGVjdGVkIGF0CitydW50aW1lLCB0aGVuIGNoZWNrIHRoZSB2YWx1ZSBvZiBhY3BpX2Rpc2FibGVkLiBJZiBDT05GSUdfQUNQSSBpcyBub3QKK3NldCwgYWNwaV9kaXNhYmxlZCB3aWxsIGFsd2F5cyBiZSAxLgorCisKK0RldmljZSBFbnVtZXJhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tCitEZXZpY2UgZGVzY3JpcHRpb25zIGluIEFDUEkgc2hvdWxkIHVzZSBzdGFuZGFyZCByZWNvZ25pemVkIEFDUEkgaW50ZXJmYWNlcy4KK1RoZXNlIG1heSBjb250YWluIGxlc3MgaW5mb3JtYXRpb24gdGhhbiBpcyB0eXBpY2FsbHkgcHJvdmlkZWQgdmlhIGEgRGV2aWNlCitUcmVlIGRlc2NyaXB0aW9uIGZvciB0aGUgc2FtZSBkZXZpY2UuICBUaGlzIGlzIGFsc28gb25lIG9mIHRoZSByZWFzb25zIHRoYXQKK0FDUEkgY2FuIGJlIHVzZWZ1bCAtLSB0aGUgZHJpdmVyIHRha2VzIGludG8gYWNjb3VudCB0aGF0IGl0IG1heSBoYXZlIGxlc3MKK2RldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkZXZpY2UgYW5kIHVzZXMgc2Vuc2libGUgZGVmYXVsdHMgaW5zdGVhZC4KK0lmIGRvbmUgcHJvcGVybHkgaW4gdGhlIGRyaXZlciwgdGhlIGhhcmR3YXJlIGNhbiBjaGFuZ2UgYW5kIGltcHJvdmUgb3ZlcgordGltZSB3aXRob3V0IHRoZSBkcml2ZXIgaGF2aW5nIHRvIGNoYW5nZSBhdCBhbGwuCisKK0Nsb2NrcyBwcm92aWRlIGFuIGV4Y2VsbGVudCBleGFtcGxlLiAgSW4gRFQsIGNsb2NrcyBuZWVkIHRvIGJlIHNwZWNpZmllZAorYW5kIHRoZSBkcml2ZXJzIG5lZWQgdG8gdGFrZSB0aGVtIGludG8gYWNjb3VudC4gIEluIEFDUEksIHRoZSBhc3N1bXB0aW9uCitpcyB0aGF0IFVFRkkgd2lsbCBsZWF2ZSB0aGUgZGV2aWNlIGluIGEgcmVhc29uYWJsZSBkZWZhdWx0IHN0YXRlLCBpbmNsdWRpbmcKK2FueSBjbG9jayBzZXR0aW5ncy4gIElmIGZvciBzb21lIHJlYXNvbiB0aGUgZHJpdmVyIG5lZWRzIHRvIGNoYW5nZSBhIGNsb2NrCit2YWx1ZSwgdGhpcyBjYW4gYmUgZG9uZSBpbiBhbiBBQ1BJIG1ldGhvZDsgYWxsIHRoZSBkcml2ZXIgbmVlZHMgdG8gZG8gaXMKK2ludm9rZSB0aGUgbWV0aG9kIGFuZCBub3QgY29uY2VybiBpdHNlbGYgd2l0aCB3aGF0IHRoZSBtZXRob2QgbmVlZHMgdG8gZG8KK3RvIGNoYW5nZSB0aGUgY2xvY2suICBDaGFuZ2luZyB0aGUgaGFyZHdhcmUgY2FuIHRoZW4gdGFrZSBwbGFjZSBvdmVyIHRpbWUKK2J5IGNoYW5naW5nIHdoYXQgdGhlIEFDUEkgbWV0aG9kIGRvZXMsIGFuZCBub3QgdGhlIGRyaXZlci4KKworSW4gRFQsIHRoZSBwYXJhbWV0ZXJzIG5lZWRlZCBieSB0aGUgZHJpdmVyIHRvIHNldCB1cCBjbG9ja3MgYXMgaW4gdGhlIGV4YW1wbGUKK2Fib3ZlIGFyZSBrbm93biBhcyAiYmluZGluZ3MiOyBpbiBBQ1BJLCB0aGVzZSBhcmUga25vd24gYXMgIkRldmljZSBQcm9wZXJ0aWVzIgorYW5kIHByb3ZpZGVkIHRvIGEgZHJpdmVyIHZpYSB0aGUgX0RTRCBvYmplY3QuCisKK0FDUEkgdGFibGVzIGFyZSBkZXNjcmliZWQgd2l0aCBhIGZvcm1hbCBsYW5ndWFnZSBjYWxsZWQgQVNMLCB0aGUgQUNQSQorU291cmNlIExhbmd1YWdlIChzZWN0aW9uIDE5IG9mIHRoZSBzcGVjaWZpY2F0aW9uKS4gIFRoaXMgbWVhbnMgdGhhdCB0aGVyZQorYXJlIGFsd2F5cyBtdWx0aXBsZSB3YXlzIHRvIGRlc2NyaWJlIHRoZSBzYW1lIHRoaW5nIC0tIGluY2x1ZGluZyBkZXZpY2UKK3Byb3BlcnRpZXMuICBGb3IgZXhhbXBsZSwgZGV2aWNlIHByb3BlcnRpZXMgY291bGQgdXNlIGFuIEFTTCBjb25zdHJ1Y3QKK3RoYXQgbG9va3MgbGlrZSB0aGlzOiBOYW1lKEtFWTAsICJ2YWx1ZTAiKS4gIEFuIEFDUEkgZGV2aWNlIGRyaXZlciB3b3VsZAordGhlbiByZXRyaWV2ZSB0aGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGJ5IGV2YWx1YXRpbmcgdGhlIEtFWTAgb2JqZWN0LgorSG93ZXZlciwgdXNpbmcgTmFtZSgpIHRoaXMgd2F5IGhhcyBtdWx0aXBsZSBwcm9ibGVtczogKDEpIEFDUEkgbGltaXRzCituYW1lcyAoIktFWTAiKSB0byBmb3VyIGNoYXJhY3RlcnMgdW5saWtlIERUOyAoMikgdGhlcmUgaXMgbm8gaW5kdXN0cnkKK3dpZGUgcmVnaXN0cnkgdGhhdCBtYWludGFpbnMgYSBsaXN0IG9mIG5hbWVzLCBtaW5pbXppbmcgcmUtdXNlOyAoMykKK3RoZXJlIGlzIGFsc28gbm8gcmVnaXN0cnkgZm9yIHRoZSBkZWZpbml0aW9uIG9mIHByb3BlcnR5IHZhbHVlcyAoInZhbHVlMCIpLAorYWdhaW4gbWFraW5nIHJlLXVzZSBkaWZmaWN1bHQ7IGFuZCAoNCkgaG93IGRvZXMgb25lIG1haW50YWluIGJhY2t3YXJkCitjb21wYXRpYmlsaXR5IGFzIG5ldyBoYXJkd2FyZSBjb21lcyBvdXQ/ICBUaGUgX0RTRCBtZXRob2Qgd2FzIGNyZWF0ZWQKK3RvIHNvbHZlIHByZWNpc2VseSB0aGVzZSBzb3J0cyBvZiBwcm9ibGVtczsgTGludXggZHJpdmVycyBzaG91bGQgQUxXQVlTCit1c2UgdGhlIF9EU0QgbWV0aG9kIGZvciBkZXZpY2UgcHJvcGVydGllcyBhbmQgbm90aGluZyBlbHNlLgorCitUaGUgX0RTTSBvYmplY3QgKEFDUEkgU2VjdGlvbiA5LjE0LjEpIGNvdWxkIGFsc28gYmUgdXNlZCBmb3IgY29udmV5aW5nCitkZXZpY2UgcHJvcGVydGllcyB0byBhIGRyaXZlci4gIExpbnV4IGRyaXZlcnMgc2hvdWxkIG9ubHkgZXhwZWN0IGl0IHRvCitiZSB1c2VkIGlmIF9EU0QgY2Fubm90IHJlcHJlc2VudCB0aGUgZGF0YSByZXF1aXJlZCwgYW5kIHRoZXJlIGlzIG5vIHdheQordG8gY3JlYXRlIGEgbmV3IFVVSUQgZm9yIHRoZSBfRFNEIG9iamVjdC4gIE5vdGUgdGhhdCB0aGVyZSBpcyBldmVuIGxlc3MKK3JlZ3VsYXRpb24gb2YgdGhlIHVzZSBvZiBfRFNNIHRoYW4gdGhlcmUgaXMgb2YgX0RTRC4gIERyaXZlcnMgdGhhdCBkZXBlbmQKK29uIHRoZSBjb250ZW50cyBvZiBfRFNNIG9iamVjdHMgd2lsbCBiZSBtb3JlIGRpZmZpY3VsdCB0byBtYWludGFpbiBvdmVyCit0aW1lIGJlY2F1c2Ugb2YgdGhpczsgYXMgb2YgdGhpcyB3cml0aW5nLCB0aGUgdXNlIG9mIF9EU00gaXMgdGhlIGNhdXNlCitvZiBxdWl0ZSBhIGZldyBmaXJtd2FyZSBwcm9ibGVtcyBhbmQgaXMgbm90IHJlY29tbWVuZGVkLgorCitEcml2ZXJzIHNob3VsZCBsb29rIGZvciBkZXZpY2UgcHJvcGVydGllcyBpbiB0aGUgX0RTRCBvYmplY3QgT05MWTsgdGhlIF9EU0QKK29iamVjdCBpcyBkZXNjcmliZWQgaW4gdGhlIEFDUEkgc3BlY2lmaWNhdGlvbiBzZWN0aW9uIDYuMi41LCBidXQgdGhpcyBvbmx5CitkZXNjcmliZXMgaG93IHRvIGRlZmluZSB0aGUgc3RydWN0dXJlIG9mIGFuIG9iamVjdCByZXR1cm5lZCB2aWEgX0RTRCwgYW5kCitob3cgc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBkZWZpbmVkIGJ5IHNwZWNpZmljIFVVSURzLiAgTGludXggc2hvdWxkCitvbmx5IHVzZSB0aGUgX0RTRCBEZXZpY2UgUHJvcGVydGllcyBVVUlEIFs1XToKKworICAgLS0gVVVJRDogZGFmZmQ4MTQtNmViYS00ZDhjLThhOTEtYmM5YmJmNGFhMzAxCisKKyAgIC0tIGh0dHA6Ly93d3cudWVmaS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9yZXNvdXJjZXMvX0RTRC1kZXZpY2UtcHJvcGVydGllcy1VVUlELnBkZgorCitUaGUgVUVGSSBGb3J1bSBwcm92aWRlcyBhIG1lY2hhbmlzbSBmb3IgcmVnaXN0ZXJpbmcgZGV2aWNlIHByb3BlcnRpZXMgWzRdCitzbyB0aGF0IHRoZXkgbWF5IGJlIHVzZWQgYWNyb3NzIGFsbCBvcGVyYXRpbmcgc3lzdGVtcyBzdXBwb3J0aW5nIEFDUEkuCitEZXZpY2UgcHJvcGVydGllcyB0aGF0IGhhdmUgbm90IGJlZW4gcmVnaXN0ZXJlZCB3aXRoIHRoZSBVRUZJIEZvcnVtIHNob3VsZAorbm90IGJlIHVzZWQuCisKK0JlZm9yZSBjcmVhdGluZyBuZXcgZGV2aWNlIHByb3BlcnRpZXMsIGNoZWNrIHRvIGJlIHN1cmUgdGhhdCB0aGV5IGhhdmUgbm90CitiZWVuIGRlZmluZWQgYmVmb3JlIGFuZCBlaXRoZXIgcmVnaXN0ZXJlZCBpbiB0aGUgTGludXgga2VybmVsIGRvY3VtZW50YXRpb24KK2FzIERUIGJpbmRpbmdzLCBvciB0aGUgVUVGSSBGb3J1bSBhcyBkZXZpY2UgcHJvcGVydGllcy4gIFdoaWxlIHdlIGRvIG5vdCB3YW50Cit0byBzaW1wbHkgbW92ZSBhbGwgRFQgYmluZGluZ3MgaW50byBBQ1BJIGRldmljZSBwcm9wZXJ0aWVzLCB3ZSBjYW4gbGVhcm4gZnJvbQord2hhdCBoYXMgYmVlbiBwcmV2aW91c2x5IGRlZmluZWQuCisKK0lmIGl0IGlzIG5lY2Vzc2FyeSB0byBkZWZpbmUgYSBuZXcgZGV2aWNlIHByb3BlcnR5LCBvciBpZiBpdCBtYWtlcyBzZW5zZSB0bworc3ludGhlc2l6ZSB0aGUgZGVmaW5pdGlvbiBvZiBhIGJpbmRpbmcgc28gaXQgY2FuIGJlIHVzZWQgaW4gYW55IGZpcm13YXJlLAorYm90aCBEVCBiaW5kaW5ncyBhbmQgQUNQSSBkZXZpY2UgcHJvcGVydGllcyBmb3IgZGV2aWNlIGRyaXZlcnMgaGF2ZSByZXZpZXcKK3Byb2Nlc3Nlcy4gIFVzZSB0aGVtIGJvdGguICBXaGVuIHRoZSBkcml2ZXIgaXRzZWxmIGlzIHN1Ym1pdHRlZCBmb3IgcmV2aWV3Cit0byB0aGUgTGludXggbWFpbGluZyBsaXN0cywgdGhlIGRldmljZSBwcm9wZXJ0eSBkZWZpbml0aW9ucyBuZWVkZWQgbXVzdCBiZQorc3VibWl0dGVkIGF0IHRoZSBzYW1lIHRpbWUuICBBIGRyaXZlciB0aGF0IHN1cHBvcnRzIEFDUEkgYW5kIHVzZXMgZGV2aWNlCitwcm9wZXJ0aWVzIHdpbGwgbm90IGJlIGNvbnNpZGVyZWQgY29tcGxldGUgd2l0aG91dCB0aGVpciBkZWZpbml0aW9ucy4gIE9uY2UKK3RoZSBkZXZpY2UgcHJvcGVydHkgaGFzIGJlZW4gYWNjZXB0ZWQgYnkgdGhlIExpbnV4IGNvbW11bml0eSwgaXQgbXVzdCBiZQorcmVnaXN0ZXJlZCB3aXRoIHRoZSBVRUZJIEZvcnVtIFs0XSwgd2hpY2ggd2lsbCByZXZpZXcgaXQgYWdhaW4gZm9yIGNvbnNpc3RlbmN5Cit3aXRoaW4gdGhlIHJlZ2lzdHJ5LiAgVGhpcyBtYXkgcmVxdWlyZSBpdGVyYXRpb24uICBUaGUgVUVGSSBGb3J1bSwgdGhvdWdoLAord2lsbCBhbHdheXMgYmUgdGhlIGNhbm9uaWNhbCBzaXRlIGZvciBkZXZpY2UgcHJvcGVydHkgZGVmaW5pdGlvbnMuCisKK0l0IG1heSBtYWtlIHNlbnNlIHRvIHByb3ZpZGUgbm90aWNlIHRvIHRoZSBVRUZJIEZvcnVtIHRoYXQgdGhlcmUgaXMgdGhlCitpbnRlbnQgdG8gcmVnaXN0ZXIgYSBwcmV2aW91c2x5IHVudXNlZCBkZXZpY2UgcHJvcGVydHkgbmFtZSBhcyBhIG1lYW5zIG9mCityZXNlcnZpbmcgdGhlIG5hbWUgZm9yIGxhdGVyIHVzZS4gIE90aGVyIG9wZXJhdGluZyBzeXN0ZW0gdmVuZG9ycyB3aWxsCithbHNvIGJlIHN1Ym1pdHRpbmcgcmVnaXN0cmF0aW9uIHJlcXVlc3RzIGFuZCB0aGlzIG1heSBoZWxwIHNtb290aCB0aGUKK3Byb2Nlc3MuCisKK09uY2UgcmVnaXN0cmF0aW9uIGFuZCByZXZpZXcgaGF2ZSBiZWVuIGNvbXBsZXRlZCwgdGhlIGtlcm5lbCBwcm92aWRlcyBhbgoraW50ZXJmYWNlIGZvciBsb29raW5nIHVwIGRldmljZSBwcm9wZXJ0aWVzIGluIGEgbWFubmVyIGluZGVwZW5kZW50IG9mCit3aGV0aGVyIERUIG9yIEFDUEkgaXMgYmVpbmcgdXNlZC4gIFRoaXMgQVBJIHNob3VsZCBiZSB1c2VkIFs2XTsgaXQgY2FuCitlbGltaW5hdGUgc29tZSBkdXBsaWNhdGlvbiBvZiBjb2RlIHBhdGhzIGluIGRyaXZlciBwcm9iaW5nIGZ1bmN0aW9ucyBhbmQKK2Rpc2NvdXJhZ2UgZGl2ZXJnZW5jZSBiZXR3ZWVuIERUIGJpbmRpbmdzIGFuZCBBQ1BJIGRldmljZSBwcm9wZXJ0aWVzLgorCisKK1Byb2dyYW1tYWJsZSBQb3dlciBDb250cm9sIFJlc291cmNlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcm9ncmFtbWFibGUgcG93ZXIgY29udHJvbCByZXNvdXJjZXMgaW5jbHVkZSBzdWNoIHJlc291cmNlcyBhcyB2b2x0YWdlL2N1cnJlbnQKK3Byb3ZpZGVycyAocmVndWxhdG9ycykgYW5kIGNsb2NrIHNvdXJjZXMuCisKK1dpdGggQUNQSSwgdGhlIGtlcm5lbCBjbG9jayBhbmQgcmVndWxhdG9yIGZyYW1ld29yayBpcyBub3QgZXhwZWN0ZWQgdG8gYmUgdXNlZAorYXQgYWxsLgorCitUaGUga2VybmVsIGFzc3VtZXMgdGhhdCBwb3dlciBjb250cm9sIG9mIHRoZXNlIHJlc291cmNlcyBpcyByZXByZXNlbnRlZCB3aXRoCitQb3dlciBSZXNvdXJjZSBPYmplY3RzIChBQ1BJIHNlY3Rpb24gNy4xKS4gIFRoZSBBQ1BJIGNvcmUgd2lsbCB0aGVuIGhhbmRsZQorY29ycmVjdGx5IGVuYWJsaW5nIGFuZCBkaXNhYmxpbmcgcmVzb3VyY2VzIGFzIHRoZXkgYXJlIG5lZWRlZC4gIEluIG9yZGVyIHRvCitnZXQgdGhhdCB0byB3b3JrLCBBQ1BJIGFzc3VtZXMgZWFjaCBkZXZpY2UgaGFzIGRlZmluZWQgRC1zdGF0ZXMgYW5kIHRoYXQgdGhlc2UKK2NhbiBiZSBjb250cm9sbGVkIHRocm91Z2ggdGhlIG9wdGlvbmFsIEFDUEkgbWV0aG9kcyBfUFMwLCBfUFMxLCBfUFMyLCBhbmQgX1BTMzsKK2luIEFDUEksIF9QUzAgaXMgdGhlIG1ldGhvZCB0byBpbnZva2UgdG8gdHVybiBhIGRldmljZSBmdWxsIG9uLCBhbmQgX1BTMyBpcyBmb3IKK3R1cm5pbmcgYSBkZXZpY2UgZnVsbCBvZmYuCisKK1RoZXJlIGFyZSB0d28gb3B0aW9ucyBmb3IgdXNpbmcgdGhvc2UgUG93ZXIgUmVzb3VyY2VzLiAgVGhleSBjYW46CisKKyAgIC0tIGJlIG1hbmFnZWQgaW4gYSBfUFN4IG1ldGhvZCB3aGljaCBnZXRzIGNhbGxlZCBvbiBlbnRyeSB0byBwb3dlcgorICAgICAgc3RhdGUgRHguCisKKyAgIC0tIGJlIGRlY2xhcmVkIHNlcGFyYXRlbHkgYXMgcG93ZXIgcmVzb3VyY2VzIHdpdGggdGhlaXIgb3duIF9PTiBhbmQgX09GRgorICAgICAgbWV0aG9kcy4gIFRoZXkgYXJlIHRoZW4gdGllZCBiYWNrIHRvIEQtc3RhdGVzIGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlCisgICAgICB2aWEgX1BSeCB3aGljaCBzcGVjaWZpZXMgd2hpY2ggcG93ZXIgcmVzb3VyY2VzIGEgZGV2aWNlIG5lZWRzIHRvIGJlIG9uCisgICAgICB3aGlsZSBpbiBEeC4gIEtlcm5lbCB0aGVuIHRyYWNrcyBudW1iZXIgb2YgZGV2aWNlcyB1c2luZyBhIHBvd2VyIHJlc291cmNlCisgICAgICBhbmQgY2FsbHMgX09OL19PRkYgYXMgbmVlZGVkLgorCitUaGUga2VybmVsIEFDUEkgY29kZSB3aWxsIGFsc28gYXNzdW1lIHRoYXQgdGhlIF9QU3ggbWV0aG9kcyBmb2xsb3cgdGhlIG5vcm1hbAorQUNQSSBydWxlcyBmb3Igc3VjaCBtZXRob2RzOgorCisgICAtLSBJZiBlaXRoZXIgX1BTMCBvciBfUFMzIGlzIGltcGxlbWVudGVkLCB0aGVuIHRoZSBvdGhlciBtZXRob2QgbXVzdCBhbHNvCisgICAgICBiZSBpbXBsZW1lbnRlZC4KKworICAgLS0gSWYgYSBkZXZpY2UgcmVxdWlyZXMgdXNhZ2Ugb3Igc2V0dXAgb2YgYSBwb3dlciByZXNvdXJjZSB3aGVuIG9uLCB0aGUgQVNMCisgICAgICBzaG91bGQgb3JnYW5pemUgdGhhdCBpdCBpcyBhbGxvY2F0ZWQvZW5hYmxlZCB1c2luZyB0aGUgX1BTMCBtZXRob2QuCisKKyAgIC0tIFJlc291cmNlcyBhbGxvY2F0ZWQgb3IgZW5hYmxlZCBpbiB0aGUgX1BTMCBtZXRob2Qgc2hvdWxkIGJlIGRpc2FibGVkCisgICAgICBvciBkZS1hbGxvY2F0ZWQgaW4gdGhlIF9QUzMgbWV0aG9kLgorCisgICAtLSBGaXJtd2FyZSB3aWxsIGxlYXZlIHRoZSByZXNvdXJjZXMgaW4gYSByZWFzb25hYmxlIHN0YXRlIGJlZm9yZSBoYW5kaW5nCisgICAgICBvdmVyIGNvbnRyb2wgdG8gdGhlIGtlcm5lbC4KKworU3VjaCBjb2RlIGluIF9QU3ggbWV0aG9kcyB3aWxsIG9mIGNvdXJzZSBiZSB2ZXJ5IHBsYXRmb3JtIHNwZWNpZmljLiAgQnV0LAordGhpcyBhbGxvd3MgdGhlIGRyaXZlciB0byBhYnN0cmFjdCBvdXQgdGhlIGludGVyZmFjZSBmb3Igb3BlcmF0aW5nIHRoZSBkZXZpY2UKK2FuZCBhdm9pZCBoYXZpbmcgdG8gcmVhZCBzcGVjaWFsIG5vbi1zdGFuZGFyZCB2YWx1ZXMgZnJvbSBBQ1BJIHRhYmxlcy4gRnVydGhlciwKK2Fic3RyYWN0aW5nIHRoZSB1c2Ugb2YgdGhlc2UgcmVzb3VyY2VzIGFsbG93cyB0aGUgaGFyZHdhcmUgdG8gY2hhbmdlIG92ZXIgdGltZQord2l0aG91dCByZXF1aXJpbmcgdXBkYXRlcyB0byB0aGUgZHJpdmVyLgorCisKK0Nsb2NrcworLS0tLS0tCitBQ1BJIG1ha2VzIHRoZSBhc3N1bXB0aW9uIHRoYXQgY2xvY2tzIGFyZSBpbml0aWFsaXplZCBieSB0aGUgZmlybXdhcmUgLS0KK1VFRkksIGluIHRoaXMgY2FzZSAtLSB0byBzb21lIHdvcmtpbmcgdmFsdWUgYmVmb3JlIGNvbnRyb2wgaXMgaGFuZGVkIG92ZXIKK3RvIHRoZSBrZXJuZWwuICBUaGlzIGhhcyBpbXBsaWNhdGlvbnMgZm9yIGRldmljZXMgc3VjaCBhcyBVQVJUcywgb3IgU29DLWRyaXZlbgorTENEIGRpc3BsYXlzLCBmb3IgZXhhbXBsZS4KKworV2hlbiB0aGUga2VybmVsIGJvb3RzLCB0aGUgY2xvY2tzIGFyZSBhc3N1bWVkIHRvIGJlIHNldCB0byByZWFzb25hYmxlCit3b3JraW5nIHZhbHVlcy4gIElmIGZvciBzb21lIHJlYXNvbiB0aGUgZnJlcXVlbmN5IG5lZWRzIHRvIGNoYW5nZSAtLSBlLmcuLAordGhyb3R0bGluZyBmb3IgcG93ZXIgbWFuYWdlbWVudCAtLSB0aGUgZGV2aWNlIGRyaXZlciBzaG91bGQgZXhwZWN0IHRoYXQKK3Byb2Nlc3MgdG8gYmUgYWJzdHJhY3RlZCBvdXQgaW50byBzb21lIEFDUEkgbWV0aG9kIHRoYXQgY2FuIGJlIGludm9rZWQKKyhwbGVhc2Ugc2VlIHRoZSBBQ1BJIHNwZWNpZmljYXRpb24gZm9yIGZ1cnRoZXIgcmVjb21tZW5kYXRpb25zIG9uIHN0YW5kYXJkCittZXRob2RzIHRvIGJlIGV4cGVjdGVkKS4gIFRoZSBvbmx5IGV4Y2VwdGlvbnMgdG8gdGhpcyBhcmUgQ1BVIGNsb2NrcyB3aGVyZQorQ1BQQyBwcm92aWRlcyBhIG11Y2ggcmljaGVyIGludGVyZmFjZSB0aGFuIEFDUEkgbWV0aG9kcy4gIElmIHRoZSBjbG9ja3MKK2FyZSBub3Qgc2V0LCB0aGVyZSBpcyBubyBkaXJlY3Qgd2F5IGZvciBMaW51eCB0byBjb250cm9sIHRoZW0uCisKK0lmIGFuIFNvQyB2ZW5kb3Igd2FudHMgdG8gcHJvdmlkZSBmaW5lLWdyYWluZWQgY29udHJvbCBvZiB0aGUgc3lzdGVtIGNsb2NrcywKK3RoZXkgY291bGQgZG8gc28gYnkgcHJvdmlkaW5nIEFDUEkgbWV0aG9kcyB0aGF0IGNvdWxkIGJlIGludm9rZWQgYnkgTGludXgKK2RyaXZlcnMuICBIb3dldmVyLCB0aGlzIGlzIE5PVCByZWNvbW1lbmRlZCBhbmQgTGludXggZHJpdmVycyBzaG91bGQgTk9UIHVzZQorc3VjaCBtZXRob2RzLCBldmVuIGlmIHRoZXkgYXJlIHByb3ZpZGVkLiAgU3VjaCBtZXRob2RzIGFyZSBub3QgY3VycmVudGx5CitzdGFuZGFyZGl6ZWQgaW4gdGhlIEFDUEkgc3BlY2lmaWNhdGlvbiwgYW5kIHVzaW5nIHRoZW0gY291bGQgdGllIGEga2VybmVsCit0byBhIHZlcnkgc3BlY2lmaWMgU29DLCBvciB0aWUgYW4gU29DIHRvIGEgdmVyeSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZQora2VybmVsLCBib3RoIG9mIHdoaWNoIHdlIGFyZSB0cnlpbmcgdG8gYXZvaWQuCisKKworRHJpdmVyIFJlY29tbWVuZGF0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRE8gTk9UIHJlbW92ZSBhbnkgRFQgaGFuZGxpbmcgd2hlbiBhZGRpbmcgQUNQSSBzdXBwb3J0IGZvciBhIGRyaXZlci4gIFRoZQorc2FtZSBkZXZpY2UgbWF5IGJlIHVzZWQgb24gbWFueSBkaWZmZXJlbnQgc3lzdGVtcy4KKworRE8gdHJ5IHRvIHN0cnVjdHVyZSB0aGUgZHJpdmVyIHNvIHRoYXQgaXQgaXMgZGF0YS1kcml2ZW4uICBUaGF0IGlzLCBzZXQgdXAKK2Egc3RydWN0IGNvbnRhaW5pbmcgaW50ZXJuYWwgcGVyLWRldmljZSBzdGF0ZSBiYXNlZCBvbiBkZWZhdWx0cyBhbmQgd2hhdGV2ZXIKK2Vsc2UgbXVzdCBiZSBkaXNjb3ZlcmVkIGJ5IHRoZSBkcml2ZXIgcHJvYmUgZnVuY3Rpb24uICBUaGVuLCBoYXZlIHRoZSByZXN0CitvZiB0aGUgZHJpdmVyIG9wZXJhdGUgb2ZmIG9mIHRoZSBjb250ZW50cyBvZiB0aGF0IHN0cnVjdC4gIERvaW5nIHNvIHNob3VsZAorYWxsb3cgbW9zdCBkaXZlcmdlbmNlIGJldHdlZW4gQUNQSSBhbmQgRFQgZnVuY3Rpb25hbGl0eSB0byBiZSBrZXB0IGxvY2FsIHRvCit0aGUgcHJvYmUgZnVuY3Rpb24gaW5zdGVhZCBvZiBiZWluZyBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGUgZHJpdmVyLiAgRm9yCitleGFtcGxlOgorCitzdGF0aWMgaW50IGRldmljZV9wcm9iZV9kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworICAgICAgIC8qIERUIHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgKi8KKyAgICAgICAuLi4KK30KKworc3RhdGljIGludCBkZXZpY2VfcHJvYmVfYWNwaShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworICAgICAgIC8qIEFDUEkgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSAqLworICAgICAgIC4uLgorfQorCitzdGF0aWMgaW50IGRldmljZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworICAgICAgIC4uLgorICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSBub2RlID0gcGRldi0+ZGV2Lm9mX25vZGU7CisgICAgICAgLi4uCisKKyAgICAgICBpZiAobm9kZSkKKyAgICAgICAgICAgICAgIHJldCA9IGRldmljZV9wcm9iZV9kdChwZGV2KTsKKyAgICAgICBlbHNlIGlmIChBQ1BJX0hBTkRMRSgmcGRldi0+ZGV2KSkKKyAgICAgICAgICAgICAgIHJldCA9IGRldmljZV9wcm9iZV9hY3BpKHBkZXYpOworICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgIC8qIG90aGVyIGluaXRpYWxpemF0aW9uICovCisgICAgICAgICAgICAgICAuLi4KKyAgICAgICAvKiBDb250aW51ZSB3aXRoIGFueSBnZW5lcmljIHByb2JlIG9wZXJhdGlvbnMgKi8KKyAgICAgICAuLi4KK30KKworRE8ga2VlcCB0aGUgTU9EVUxFX0RFVklDRV9UQUJMRSBlbnRyaWVzIHRvZ2V0aGVyIGluIHRoZSBkcml2ZXIgdG8gbWFrZSBpdAorY2xlYXIgdGhlIGRpZmZlcmVudCBuYW1lcyB0aGUgZHJpdmVyIGlzIHByb2JlZCBmb3IsIGJvdGggZnJvbSBEVCBhbmQgZnJvbQorQUNQSToKKworc3RhdGljIHN0cnVjdCBvZl9kZXZpY2VfaWQgdmlydGlvX21taW9fbWF0Y2hbXSA9IHsKKyAgICAgICAgeyAuY29tcGF0aWJsZSA9ICJ2aXJ0aW8sbW1pbyIsIH0sCisgICAgICAgIHsgfQorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHZpcnRpb19tbWlvX21hdGNoKTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCB2aXJ0aW9fbW1pb19hY3BpX21hdGNoW10gPSB7CisgICAgICAgIHsgIkxOUk8wMDA1IiwgfSwKKyAgICAgICAgeyB9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShhY3BpLCB2aXJ0aW9fbW1pb19hY3BpX21hdGNoKTsKKworCitBU1dHCistLS0tCitUaGUgQUNQSSBzcGVjaWZpY2F0aW9uIGNoYW5nZXMgcmVndWxhcmx5LiAgRHVyaW5nIHRoZSB5ZWFyIDIwMTQsIGZvciBpbnN0YW5jZSwKK3ZlcnNpb24gNS4xIHdhcyByZWxlYXNlZCBhbmQgdmVyc2lvbiA2LjAgc3Vic3RhbnRpYWxseSBjb21wbGV0ZWQsIHdpdGggbW9zdCBvZgordGhlIGNoYW5nZXMgYmVpbmcgZHJpdmVuIGJ5IEFSTS1zcGVjaWZpYyByZXF1aXJlbWVudHMuICBQcm9wb3NlZCBjaGFuZ2VzIGFyZQorcHJlc2VudGVkIGFuZCBkaXNjdXNzZWQgaW4gdGhlIEFTV0cgKEFDUEkgU3BlY2lmaWNhdGlvbiBXb3JraW5nIEdyb3VwKSB3aGljaAoraXMgYSBwYXJ0IG9mIHRoZSBVRUZJIEZvcnVtLgorCitQYXJ0aWNpcGF0aW9uIGluIHRoaXMgZ3JvdXAgaXMgb3BlbiB0byBhbGwgVUVGSSBtZW1iZXJzLiAgUGxlYXNlIHNlZQoraHR0cDovL3d3dy51ZWZpLm9yZy93b3JraW5nZ3JvdXAgZm9yIGRldGFpbHMgb24gZ3JvdXAgbWVtYmVyc2hpcC4KKworSXQgaXMgdGhlIGludGVudCBvZiB0aGUgQVJNdjggQUNQSSBrZXJuZWwgY29kZSB0byBmb2xsb3cgdGhlIEFDUEkgc3BlY2lmaWNhdGlvbgorYXMgY2xvc2VseSBhcyBwb3NzaWJsZSwgYW5kIHRvIG9ubHkgaW1wbGVtZW50IGZ1bmN0aW9uYWxpdHkgdGhhdCBjb21wbGllcyB3aXRoCit0aGUgcmVsZWFzZWQgc3RhbmRhcmRzIGZyb20gVUVGSSBBU1dHLiAgQXMgYSBwcmFjdGljYWwgbWF0dGVyLCB0aGVyZSB3aWxsIGJlCit2ZW5kb3JzIHRoYXQgcHJvdmlkZSBiYWQgQUNQSSB0YWJsZXMgb3IgdmlvbGF0ZSB0aGUgc3RhbmRhcmRzIGluIHNvbWUgd2F5LgorSWYgdGhpcyBpcyBiZWNhdXNlIG9mIGVycm9ycywgcXVpcmtzIGFuZCBmaXh1cHMgbWF5IGJlIG5lY2Vzc2FyeSwgYnV0IHdpbGwKK2JlIGF2b2lkZWQgaWYgcG9zc2libGUuICBJZiB0aGVyZSBhcmUgZmVhdHVyZXMgbWlzc2luZyBmcm9tIEFDUEkgdGhhdCBwcmVjbHVkZQoraXQgZnJvbSBiZWluZyB1c2VkIG9uIGEgcGxhdGZvcm0sIEVDUnMgKEVuZ2luZWVyaW5nIENoYW5nZSBSZXF1ZXN0cykgc2hvdWxkIGJlCitzdWJtaXR0ZWQgdG8gQVNXRyBhbmQgZ28gdGhyb3VnaCB0aGUgbm9ybWFsIGFwcHJvdmFsIHByb2Nlc3M7IGZvciB0aG9zZSB0aGF0CithcmUgbm90IFVFRkkgbWVtYmVycywgbWFueSBvdGhlciBtZW1iZXJzIG9mIHRoZSBMaW51eCBjb21tdW5pdHkgYXJlIGFuZCB3b3VsZAorbGlrZWx5IGJlIHdpbGxpbmcgdG8gYXNzaXN0IGluIHN1Ym1pdHRpbmcgRUNScy4KKworCitMaW51eCBDb2RlCistLS0tLS0tLS0tCitJbmRpdmlkdWFsIGl0ZW1zIHNwZWNpZmljIHRvIExpbnV4IG9uIEFSTSwgY29udGFpbmVkIGluIHRoZSB0aGUgTGludXgKK3NvdXJjZSBjb2RlLCBhcmUgaW4gdGhlIGxpc3QgdGhhdCBmb2xsb3dzOgorCitBQ1BJX09TX05BTUUgICAgICAgICAgIFRoaXMgbWFjcm8gZGVmaW5lcyB0aGUgc3RyaW5nIHRvIGJlIHJldHVybmVkIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgYW4gQUNQSSBtZXRob2QgaW52b2tlcyB0aGUgX09TIG1ldGhvZC4gIE9uIEFSTTY0CisgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbXMsIHRoaXMgbWFjcm8gd2lsbCBiZSAiTGludXgiIGJ5IGRlZmF1bHQuCisgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kIGxpbmUgcGFyYW1ldGVyIGFjcGlfb3M9PHN0cmluZz4KKyAgICAgICAgICAgICAgICAgICAgICAgY2FuIGJlIHVzZWQgdG8gc2V0IGl0IHRvIHNvbWUgb3RoZXIgdmFsdWUuICBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCB2YWx1ZSBmb3Igb3RoZXIgYXJjaGl0ZWN0dXJlcyBpcyAiTWljcm9zb2Z0CisgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvd3MgTlQiLCBmb3IgZXhhbXBsZS4KKworQUNQSSBPYmplY3RzCistLS0tLS0tLS0tLS0KK0RldGFpbGVkIGV4cGVjdGF0aW9ucyBmb3IgQUNQSSB0YWJsZXMgYW5kIG9iamVjdCBhcmUgbGlzdGVkIGluIHRoZSBmaWxlCitEb2N1bWVudGF0aW9uL2FybTY0L2FjcGlfb2JqZWN0X3VzYWdlLnR4dC4KKworCitSZWZlcmVuY2VzCistLS0tLS0tLS0tCitbMF0gaHR0cDovL3NpbHZlci5hcm0uY29tIC0tIGRvY3VtZW50IEFSTS1ERU4tMDAyOSwgb3IgbmV3ZXIKKyAgICAiU2VydmVyIEJhc2UgU3lzdGVtIEFyY2hpdGVjdHVyZSIsIHZlcnNpb24gMi4zLCBkYXRlZCAyNyBNYXIgMjAxNAorCitbMV0gaHR0cDovL2luZm9jZW50ZXIuYXJtLmNvbS9oZWxwL3RvcGljL2NvbS5hcm0uZG9jLmRlbjAwNDRhL1NlcnZlcl9CYXNlX0Jvb3RfUmVxdWlyZW1lbnRzLnBkZgorICAgIERvY3VtZW50IEFSTS1ERU4tMDA0NEEsIG9yIG5ld2VyOiAiU2VydmVyIEJhc2UgQm9vdCBSZXF1aXJlbWVudHMsIFN5c3RlbQorICAgIFNvZnR3YXJlIG9uIEFSTSBQbGF0Zm9ybXMiLCBkYXRlZCAxNiBBdWcgMjAxNAorCitbMl0gaHR0cDovL3d3dy5zZWNyZXRsYWIuY2EvYXJjaGl2ZXMvMTUxLCAxMCBKYW4gMjAxNSwgQ29weXJpZ2h0IChjKSAyMDE1LAorICAgIExpbmFybyBMdGQuLCB3cml0dGVuIGJ5IEdyYW50IExpa2VseS4gIEEgY29weSBvZiB0aGUgdmVyYmF0aW0gdGV4dCAoYXBhcnQKKyAgICBmcm9tIGZvcm1hdHRpbmcpIGlzIGFsc28gaW4gRG9jdW1lbnRhdGlvbi9hcm02NC93aHlfdXNlX2FjcGkudHh0LgorCitbM10gQU1EIEFDUEkgZm9yIFNlYXR0bGUgcGxhdGZvcm0gZG9jdW1lbnRhdGlvbjoKKyAgICBodHRwOi8vYW1kLWRldi53cGVuZ2luZS5uZXRkbmEtY2RuLmNvbS93b3JkcHJlc3MvbWVkaWEvMjAxMi8xMC9TZWF0dGxlX0FDUElfR3VpZGUucGRmCisKK1s0XSBodHRwOi8vd3d3LnVlZmkub3JnL2FjcGkgLS0gcGxlYXNlIHNlZSB0aGUgbGluayBmb3IgdGhlICJBQ1BJIF9EU0QgRGV2aWNlCisgICAgUHJvcGVydHkgUmVnaXN0cnkgSW5zdHJ1Y3Rpb25zIgorCitbNV0gaHR0cDovL3d3dy51ZWZpLm9yZy9hY3BpIC0tIHBsZWFzZSBzZWUgdGhlIGxpbmsgZm9yIHRoZSAiX0RTRCAoRGV2aWNlCisgICAgU3BlY2lmaWMgRGF0YSkgSW1wbGVtZW50YXRpb24gR3VpZGUiCisKK1s2XSBLZXJuZWwgY29kZSBmb3IgdGhlIHVuaWZpZWQgZGV2aWNlIHByb3BlcnR5IGludGVyZmFjZSBjYW4gYmUgZm91bmQgaW4KKyAgICBpbmNsdWRlL2xpbnV4L3Byb3BlcnR5LmggYW5kIGRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLgorCisKK0F1dGhvcnMKKy0tLS0tLS0KK0FsIFN0b25lIDxhbC5zdG9uZUBsaW5hcm8ub3JnPgorR3JhZW1lIEdyZWdvcnkgPGdyYWVtZS5ncmVnb3J5QGxpbmFyby5vcmc+CitIYW5qdW4gR3VvIDxoYW5qdW4uZ3VvQGxpbmFyby5vcmc+CisKK0dyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QGxpbmFyby5vcmc+LCBmb3IgdGhlICJXaHkgQUNQSSBvbiBBUk0/IiBzZWN0aW9uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybTY0L2Jvb3RpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9hcm02NC9ib290aW5nLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDFkMzlkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm02NC9ib290aW5nLnR4dApAQCAtMCwwICsxLDI0MyBAQAorCQkJQm9vdGluZyBBQXJjaDY0IExpbnV4CisJCQk9PT09PT09PT09PT09PT09PT09PT0KKworQXV0aG9yOiBXaWxsIERlYWNvbiA8d2lsbC5kZWFjb25AYXJtLmNvbT4KK0RhdGUgIDogMDcgU2VwdGVtYmVyIDIwMTIKKworVGhpcyBkb2N1bWVudCBpcyBiYXNlZCBvbiB0aGUgQVJNIGJvb3RpbmcgZG9jdW1lbnQgYnkgUnVzc2VsbCBLaW5nIGFuZAoraXMgcmVsZXZhbnQgdG8gYWxsIHB1YmxpYyByZWxlYXNlcyBvZiB0aGUgQUFyY2g2NCBMaW51eCBrZXJuZWwuCisKK1RoZSBBQXJjaDY0IGV4Y2VwdGlvbiBtb2RlbCBpcyBtYWRlIHVwIG9mIGEgbnVtYmVyIG9mIGV4Y2VwdGlvbiBsZXZlbHMKKyhFTDAgLSBFTDMpLCB3aXRoIEVMMCBhbmQgRUwxIGhhdmluZyBhIHNlY3VyZSBhbmQgYSBub24tc2VjdXJlCitjb3VudGVycGFydC4gIEVMMiBpcyB0aGUgaHlwZXJ2aXNvciBsZXZlbCBhbmQgZXhpc3RzIG9ubHkgaW4gbm9uLXNlY3VyZQorbW9kZS4gRUwzIGlzIHRoZSBoaWdoZXN0IHByaW9yaXR5IGxldmVsIGFuZCBleGlzdHMgb25seSBpbiBzZWN1cmUgbW9kZS4KKworRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRvY3VtZW50LCB3ZSB3aWxsIHVzZSB0aGUgdGVybSBgYm9vdCBsb2FkZXInCitzaW1wbHkgdG8gZGVmaW5lIGFsbCBzb2Z0d2FyZSB0aGF0IGV4ZWN1dGVzIG9uIHRoZSBDUFUocykgYmVmb3JlIGNvbnRyb2wKK2lzIHBhc3NlZCB0byB0aGUgTGludXgga2VybmVsLiAgVGhpcyBtYXkgaW5jbHVkZSBzZWN1cmUgbW9uaXRvciBhbmQKK2h5cGVydmlzb3IgY29kZSwgb3IgaXQgbWF5IGp1c3QgYmUgYSBoYW5kZnVsIG9mIGluc3RydWN0aW9ucyBmb3IKK3ByZXBhcmluZyBhIG1pbmltYWwgYm9vdCBlbnZpcm9ubWVudC4KKworRXNzZW50aWFsbHksIHRoZSBib290IGxvYWRlciBzaG91bGQgcHJvdmlkZSAoYXMgYSBtaW5pbXVtKSB0aGUKK2ZvbGxvd2luZzoKKworMS4gU2V0dXAgYW5kIGluaXRpYWxpc2UgdGhlIFJBTQorMi4gU2V0dXAgdGhlIGRldmljZSB0cmVlCiszLiBEZWNvbXByZXNzIHRoZSBrZXJuZWwgaW1hZ2UKKzQuIENhbGwgdGhlIGtlcm5lbCBpbWFnZQorCisKKzEuIFNldHVwIGFuZCBpbml0aWFsaXNlIFJBTQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVtZW50OiBNQU5EQVRPUlkKKworVGhlIGJvb3QgbG9hZGVyIGlzIGV4cGVjdGVkIHRvIGZpbmQgYW5kIGluaXRpYWxpc2UgYWxsIFJBTSB0aGF0IHRoZQora2VybmVsIHdpbGwgdXNlIGZvciB2b2xhdGlsZSBkYXRhIHN0b3JhZ2UgaW4gdGhlIHN5c3RlbS4gIEl0IHBlcmZvcm1zCit0aGlzIGluIGEgbWFjaGluZSBkZXBlbmRlbnQgbWFubmVyLiAgKEl0IG1heSB1c2UgaW50ZXJuYWwgYWxnb3JpdGhtcwordG8gYXV0b21hdGljYWxseSBsb2NhdGUgYW5kIHNpemUgYWxsIFJBTSwgb3IgaXQgbWF5IHVzZSBrbm93bGVkZ2Ugb2YKK3RoZSBSQU0gaW4gdGhlIG1hY2hpbmUsIG9yIGFueSBvdGhlciBtZXRob2QgdGhlIGJvb3QgbG9hZGVyIGRlc2lnbmVyCitzZWVzIGZpdC4pCisKKworMi4gU2V0dXAgdGhlIGRldmljZSB0cmVlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVtZW50OiBNQU5EQVRPUlkKKworVGhlIGRldmljZSB0cmVlIGJsb2IgKGR0YikgbXVzdCBiZSBwbGFjZWQgb24gYW4gOC1ieXRlIGJvdW5kYXJ5IGFuZCBtdXN0Citub3QgZXhjZWVkIDIgbWVnYWJ5dGVzIGluIHNpemUuIFNpbmNlIHRoZSBkdGIgd2lsbCBiZSBtYXBwZWQgY2FjaGVhYmxlCit1c2luZyBibG9ja3Mgb2YgdXAgdG8gMiBtZWdhYnl0ZXMgaW4gc2l6ZSwgaXQgbXVzdCBub3QgYmUgcGxhY2VkIHdpdGhpbgorYW55IDJNIHJlZ2lvbiB3aGljaCBtdXN0IGJlIG1hcHBlZCB3aXRoIGFueSBzcGVjaWZpYyBhdHRyaWJ1dGVzLgorCitOT1RFOiB2ZXJzaW9ucyBwcmlvciB0byB2NC4yIGFsc28gcmVxdWlyZSB0aGF0IHRoZSBEVEIgYmUgcGxhY2VkIHdpdGhpbgordGhlIDUxMiBNQiByZWdpb24gc3RhcnRpbmcgYXQgdGV4dF9vZmZzZXQgYnl0ZXMgYmVsb3cgdGhlIGtlcm5lbCBJbWFnZS4KKworMy4gRGVjb21wcmVzcyB0aGUga2VybmVsIGltYWdlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZW1lbnQ6IE9QVElPTkFMCisKK1RoZSBBQXJjaDY0IGtlcm5lbCBkb2VzIG5vdCBjdXJyZW50bHkgcHJvdmlkZSBhIGRlY29tcHJlc3NvciBhbmQKK3RoZXJlZm9yZSByZXF1aXJlcyBkZWNvbXByZXNzaW9uIChnemlwIGV0Yy4pIHRvIGJlIHBlcmZvcm1lZCBieSB0aGUgYm9vdAorbG9hZGVyIGlmIGEgY29tcHJlc3NlZCBJbWFnZSB0YXJnZXQgKGUuZy4gSW1hZ2UuZ3opIGlzIHVzZWQuICBGb3IKK2Jvb3Rsb2FkZXJzIHRoYXQgZG8gbm90IGltcGxlbWVudCB0aGlzIHJlcXVpcmVtZW50LCB0aGUgdW5jb21wcmVzc2VkCitJbWFnZSB0YXJnZXQgaXMgYXZhaWxhYmxlIGluc3RlYWQuCisKKworNC4gQ2FsbCB0aGUga2VybmVsIGltYWdlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZW1lbnQ6IE1BTkRBVE9SWQorCitUaGUgZGVjb21wcmVzc2VkIGtlcm5lbCBpbWFnZSBjb250YWlucyBhIDY0LWJ5dGUgaGVhZGVyIGFzIGZvbGxvd3M6CisKKyAgdTMyIGNvZGUwOwkJCS8qIEV4ZWN1dGFibGUgY29kZSAqLworICB1MzIgY29kZTE7CQkJLyogRXhlY3V0YWJsZSBjb2RlICovCisgIHU2NCB0ZXh0X29mZnNldDsJCS8qIEltYWdlIGxvYWQgb2Zmc2V0LCBsaXR0bGUgZW5kaWFuICovCisgIHU2NCBpbWFnZV9zaXplOwkJLyogRWZmZWN0aXZlIEltYWdlIHNpemUsIGxpdHRsZSBlbmRpYW4gKi8KKyAgdTY0IGZsYWdzOwkJCS8qIGtlcm5lbCBmbGFncywgbGl0dGxlIGVuZGlhbiAqLworICB1NjQgcmVzMgk9IDA7CQkvKiByZXNlcnZlZCAqLworICB1NjQgcmVzMwk9IDA7CQkvKiByZXNlcnZlZCAqLworICB1NjQgcmVzNAk9IDA7CQkvKiByZXNlcnZlZCAqLworICB1MzIgbWFnaWMJPSAweDY0NGQ1MjQxOwkvKiBNYWdpYyBudW1iZXIsIGxpdHRsZSBlbmRpYW4sICJBUk1ceDY0IiAqLworICB1MzIgcmVzNTsJCQkvKiByZXNlcnZlZCAodXNlZCBmb3IgUEUgQ09GRiBvZmZzZXQpICovCisKKworSGVhZGVyIG5vdGVzOgorCistIEFzIG9mIHYzLjE3LCBhbGwgZmllbGRzIGFyZSBsaXR0bGUgZW5kaWFuIHVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlLgorCistIGNvZGUwL2NvZGUxIGFyZSByZXNwb25zaWJsZSBmb3IgYnJhbmNoaW5nIHRvIHN0ZXh0LgorCistIHdoZW4gYm9vdGluZyB0aHJvdWdoIEVGSSwgY29kZTAvY29kZTEgYXJlIGluaXRpYWxseSBza2lwcGVkLgorICByZXM1IGlzIGFuIG9mZnNldCB0byB0aGUgUEUgaGVhZGVyIGFuZCB0aGUgUEUgaGVhZGVyIGhhcyB0aGUgRUZJCisgIGVudHJ5IHBvaW50IChlZmlfc3R1Yl9lbnRyeSkuICBXaGVuIHRoZSBzdHViIGhhcyBkb25lIGl0cyB3b3JrLCBpdAorICBqdW1wcyB0byBjb2RlMCB0byByZXN1bWUgdGhlIG5vcm1hbCBib290IHByb2Nlc3MuCisKKy0gUHJpb3IgdG8gdjMuMTcsIHRoZSBlbmRpYW5uZXNzIG9mIHRleHRfb2Zmc2V0IHdhcyBub3Qgc3BlY2lmaWVkLiAgSW4KKyAgdGhlc2UgY2FzZXMgaW1hZ2Vfc2l6ZSBpcyB6ZXJvIGFuZCB0ZXh0X29mZnNldCBpcyAweDgwMDAwIGluIHRoZQorICBlbmRpYW5uZXNzIG9mIHRoZSBrZXJuZWwuICBXaGVyZSBpbWFnZV9zaXplIGlzIG5vbi16ZXJvIGltYWdlX3NpemUgaXMKKyAgbGl0dGxlLWVuZGlhbiBhbmQgbXVzdCBiZSByZXNwZWN0ZWQuICBXaGVyZSBpbWFnZV9zaXplIGlzIHplcm8sCisgIHRleHRfb2Zmc2V0IGNhbiBiZSBhc3N1bWVkIHRvIGJlIDB4ODAwMDAuCisKKy0gVGhlIGZsYWdzIGZpZWxkIChpbnRyb2R1Y2VkIGluIHYzLjE3KSBpcyBhIGxpdHRsZS1lbmRpYW4gNjQtYml0IGZpZWxkCisgIGNvbXBvc2VkIGFzIGZvbGxvd3M6CisgIEJpdCAwOglLZXJuZWwgZW5kaWFubmVzcy4gIDEgaWYgQkUsIDAgaWYgTEUuCisgIEJpdCAxLTI6CUtlcm5lbCBQYWdlIHNpemUuCisJCQkwIC0gVW5zcGVjaWZpZWQuCisJCQkxIC0gNEsKKwkJCTIgLSAxNksKKwkJCTMgLSA2NEsKKyAgQml0cyAzLTYzOglSZXNlcnZlZC4KKworLSBXaGVuIGltYWdlX3NpemUgaXMgemVybywgYSBib290bG9hZGVyIHNob3VsZCBhdHRlbXB0IHRvIGtlZXAgYXMgbXVjaAorICBtZW1vcnkgYXMgcG9zc2libGUgZnJlZSBmb3IgdXNlIGJ5IHRoZSBrZXJuZWwgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlCisgIGVuZCBvZiB0aGUga2VybmVsIGltYWdlLiBUaGUgYW1vdW50IG9mIHNwYWNlIHJlcXVpcmVkIHdpbGwgdmFyeQorICBkZXBlbmRpbmcgb24gc2VsZWN0ZWQgZmVhdHVyZXMsIGFuZCBpcyBlZmZlY3RpdmVseSB1bmJvdW5kLgorCitUaGUgSW1hZ2UgbXVzdCBiZSBwbGFjZWQgdGV4dF9vZmZzZXQgYnl0ZXMgZnJvbSBhIDJNQiBhbGlnbmVkIGJhc2UKK2FkZHJlc3MgbmVhciB0aGUgc3RhcnQgb2YgdXNhYmxlIHN5c3RlbSBSQU0gYW5kIGNhbGxlZCB0aGVyZS4gTWVtb3J5CitiZWxvdyB0aGF0IGJhc2UgYWRkcmVzcyBpcyBjdXJyZW50bHkgdW51c2FibGUgYnkgTGludXgsIGFuZCB0aGVyZWZvcmUgaXQKK2lzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgdGhpcyBsb2NhdGlvbiBpcyB0aGUgc3RhcnQgb2Ygc3lzdGVtIFJBTS4KK1RoZSByZWdpb24gYmV0d2VlbiB0aGUgMiBNQiBhbGlnbmVkIGJhc2UgYWRkcmVzcyBhbmQgdGhlIHN0YXJ0IG9mIHRoZQoraW1hZ2UgaGFzIG5vIHNwZWNpYWwgc2lnbmlmaWNhbmNlIHRvIHRoZSBrZXJuZWwsIGFuZCBtYXkgYmUgdXNlZCBmb3IKK290aGVyIHB1cnBvc2VzLgorQXQgbGVhc3QgaW1hZ2Vfc2l6ZSBieXRlcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUgaW1hZ2UgbXVzdCBiZSBmcmVlIGZvcgordXNlIGJ5IHRoZSBrZXJuZWwuCisKK0FueSBtZW1vcnkgZGVzY3JpYmVkIHRvIHRoZSBrZXJuZWwgKGV2ZW4gdGhhdCBiZWxvdyB0aGUgc3RhcnQgb2YgdGhlCitpbWFnZSkgd2hpY2ggaXMgbm90IG1hcmtlZCBhcyByZXNlcnZlZCBmcm9tIHRoZSBrZXJuZWwgKGUuZy4sIHdpdGggYQorbWVtcmVzZXJ2ZSByZWdpb24gaW4gdGhlIGRldmljZSB0cmVlKSB3aWxsIGJlIGNvbnNpZGVyZWQgYXMgYXZhaWxhYmxlIHRvCit0aGUga2VybmVsLgorCitCZWZvcmUganVtcGluZyBpbnRvIHRoZSBrZXJuZWwsIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBtdXN0IGJlIG1ldDoKKworLSBRdWllc2NlIGFsbCBETUEgY2FwYWJsZSBkZXZpY2VzIHNvIHRoYXQgbWVtb3J5IGRvZXMgbm90IGdldAorICBjb3JydXB0ZWQgYnkgYm9ndXMgbmV0d29yayBwYWNrZXRzIG9yIGRpc2sgZGF0YS4gIFRoaXMgd2lsbCBzYXZlCisgIHlvdSBtYW55IGhvdXJzIG9mIGRlYnVnLgorCistIFByaW1hcnkgQ1BVIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlciBzZXR0aW5ncworICB4MCA9IHBoeXNpY2FsIGFkZHJlc3Mgb2YgZGV2aWNlIHRyZWUgYmxvYiAoZHRiKSBpbiBzeXN0ZW0gUkFNLgorICB4MSA9IDAgKHJlc2VydmVkIGZvciBmdXR1cmUgdXNlKQorICB4MiA9IDAgKHJlc2VydmVkIGZvciBmdXR1cmUgdXNlKQorICB4MyA9IDAgKHJlc2VydmVkIGZvciBmdXR1cmUgdXNlKQorCistIENQVSBtb2RlCisgIEFsbCBmb3JtcyBvZiBpbnRlcnJ1cHRzIG11c3QgYmUgbWFza2VkIGluIFBTVEFURS5EQUlGIChEZWJ1ZywgU0Vycm9yLAorICBJUlEgYW5kIEZJUSkuCisgIFRoZSBDUFUgbXVzdCBiZSBpbiBlaXRoZXIgRUwyIChSRUNPTU1FTkRFRCBpbiBvcmRlciB0byBoYXZlIGFjY2VzcyB0bworICB0aGUgdmlydHVhbGlzYXRpb24gZXh0ZW5zaW9ucykgb3Igbm9uLXNlY3VyZSBFTDEuCisKKy0gQ2FjaGVzLCBNTVVzCisgIFRoZSBNTVUgbXVzdCBiZSBvZmYuCisgIEluc3RydWN0aW9uIGNhY2hlIG1heSBiZSBvbiBvciBvZmYuCisgIFRoZSBhZGRyZXNzIHJhbmdlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGxvYWRlZCBrZXJuZWwgaW1hZ2UgbXVzdCBiZQorICBjbGVhbmVkIHRvIHRoZSBQb0MuIEluIHRoZSBwcmVzZW5jZSBvZiBhIHN5c3RlbSBjYWNoZSBvciBvdGhlcgorICBjb2hlcmVudCBtYXN0ZXJzIHdpdGggY2FjaGVzIGVuYWJsZWQsIHRoaXMgd2lsbCB0eXBpY2FsbHkgcmVxdWlyZQorICBjYWNoZSBtYWludGVuYW5jZSBieSBWQSByYXRoZXIgdGhhbiBzZXQvd2F5IG9wZXJhdGlvbnMuCisgIFN5c3RlbSBjYWNoZXMgd2hpY2ggcmVzcGVjdCB0aGUgYXJjaGl0ZWN0ZWQgY2FjaGUgbWFpbnRlbmFuY2UgYnkgVkEKKyAgb3BlcmF0aW9ucyBtdXN0IGJlIGNvbmZpZ3VyZWQgYW5kIG1heSBiZSBlbmFibGVkLgorICBTeXN0ZW0gY2FjaGVzIHdoaWNoIGRvIG5vdCByZXNwZWN0IGFyY2hpdGVjdGVkIGNhY2hlIG1haW50ZW5hbmNlIGJ5IFZBCisgIG9wZXJhdGlvbnMgKG5vdCByZWNvbW1lbmRlZCkgbXVzdCBiZSBjb25maWd1cmVkIGFuZCBkaXNhYmxlZC4KKworLSBBcmNoaXRlY3RlZCB0aW1lcnMKKyAgQ05URlJRIG11c3QgYmUgcHJvZ3JhbW1lZCB3aXRoIHRoZSB0aW1lciBmcmVxdWVuY3kgYW5kIENOVFZPRkYgbXVzdAorICBiZSBwcm9ncmFtbWVkIHdpdGggYSBjb25zaXN0ZW50IHZhbHVlIG9uIGFsbCBDUFVzLiAgSWYgZW50ZXJpbmcgdGhlCisgIGtlcm5lbCBhdCBFTDEsIENOVEhDVExfRUwyIG11c3QgaGF2ZSBFTDFQQ1RFTiAoYml0IDApIHNldCB3aGVyZQorICBhdmFpbGFibGUuCisKKy0gQ29oZXJlbmN5CisgIEFsbCBDUFVzIHRvIGJlIGJvb3RlZCBieSB0aGUga2VybmVsIG11c3QgYmUgcGFydCBvZiB0aGUgc2FtZSBjb2hlcmVuY3kKKyAgZG9tYWluIG9uIGVudHJ5IHRvIHRoZSBrZXJuZWwuICBUaGlzIG1heSByZXF1aXJlIElNUExFTUVOVEFUSU9OIERFRklORUQKKyAgaW5pdGlhbGlzYXRpb24gdG8gZW5hYmxlIHRoZSByZWNlaXZpbmcgb2YgbWFpbnRlbmFuY2Ugb3BlcmF0aW9ucyBvbgorICBlYWNoIENQVS4KKworLSBTeXN0ZW0gcmVnaXN0ZXJzCisgIEFsbCB3cml0YWJsZSBhcmNoaXRlY3RlZCBzeXN0ZW0gcmVnaXN0ZXJzIGF0IHRoZSBleGNlcHRpb24gbGV2ZWwgd2hlcmUKKyAgdGhlIGtlcm5lbCBpbWFnZSB3aWxsIGJlIGVudGVyZWQgbXVzdCBiZSBpbml0aWFsaXNlZCBieSBzb2Z0d2FyZSBhdCBhCisgIGhpZ2hlciBleGNlcHRpb24gbGV2ZWwgdG8gcHJldmVudCBleGVjdXRpb24gaW4gYW4gVU5LTk9XTiBzdGF0ZS4KKworICBGb3Igc3lzdGVtcyB3aXRoIGEgR0lDdjMgaW50ZXJydXB0IGNvbnRyb2xsZXIgdG8gYmUgdXNlZCBpbiB2MyBtb2RlOgorICAtIElmIEVMMyBpcyBwcmVzZW50OgorICAgIElDQ19TUkVfRUwzLkVuYWJsZSAoYml0IDMpIG11c3QgYmUgaW5pdGlhbGlhc2VkIHRvIDBiMS4KKyAgICBJQ0NfU1JFX0VMMy5TUkUgKGJpdCAwKSBtdXN0IGJlIGluaXRpYWxpc2VkIHRvIDBiMS4KKyAgLSBJZiB0aGUga2VybmVsIGlzIGVudGVyZWQgYXQgRUwxOgorICAgIElDQy5TUkVfRUwyLkVuYWJsZSAoYml0IDMpIG11c3QgYmUgaW5pdGlhbGlzZWQgdG8gMGIxCisgICAgSUNDX1NSRV9FTDIuU1JFIChiaXQgMCkgbXVzdCBiZSBpbml0aWFsaXNlZCB0byAwYjEuCisgIC0gVGhlIERUIG9yIEFDUEkgdGFibGVzIG11c3QgZGVzY3JpYmUgYSBHSUN2MyBpbnRlcnJ1cHQgY29udHJvbGxlci4KKworICBGb3Igc3lzdGVtcyB3aXRoIGEgR0lDdjMgaW50ZXJydXB0IGNvbnRyb2xsZXIgdG8gYmUgdXNlZCBpbgorICBjb21wYXRpYmlsaXR5ICh2MikgbW9kZToKKyAgLSBJZiBFTDMgaXMgcHJlc2VudDoKKyAgICBJQ0NfU1JFX0VMMy5TUkUgKGJpdCAwKSBtdXN0IGJlIGluaXRpYWxpc2VkIHRvIDBiMC4KKyAgLSBJZiB0aGUga2VybmVsIGlzIGVudGVyZWQgYXQgRUwxOgorICAgIElDQ19TUkVfRUwyLlNSRSAoYml0IDApIG11c3QgYmUgaW5pdGlhbGlzZWQgdG8gMGIwLgorICAtIFRoZSBEVCBvciBBQ1BJIHRhYmxlcyBtdXN0IGRlc2NyaWJlIGEgR0lDdjIgaW50ZXJydXB0IGNvbnRyb2xsZXIuCisKK1RoZSByZXF1aXJlbWVudHMgZGVzY3JpYmVkIGFib3ZlIGZvciBDUFUgbW9kZSwgY2FjaGVzLCBNTVVzLCBhcmNoaXRlY3RlZAordGltZXJzLCBjb2hlcmVuY3kgYW5kIHN5c3RlbSByZWdpc3RlcnMgYXBwbHkgdG8gYWxsIENQVXMuICBBbGwgQ1BVcyBtdXN0CitlbnRlciB0aGUga2VybmVsIGluIHRoZSBzYW1lIGV4Y2VwdGlvbiBsZXZlbC4KKworVGhlIGJvb3QgbG9hZGVyIGlzIGV4cGVjdGVkIHRvIGVudGVyIHRoZSBrZXJuZWwgb24gZWFjaCBDUFUgaW4gdGhlCitmb2xsb3dpbmcgbWFubmVyOgorCistIFRoZSBwcmltYXJ5IENQVSBtdXN0IGp1bXAgZGlyZWN0bHkgdG8gdGhlIGZpcnN0IGluc3RydWN0aW9uIG9mIHRoZQorICBrZXJuZWwgaW1hZ2UuICBUaGUgZGV2aWNlIHRyZWUgYmxvYiBwYXNzZWQgYnkgdGhpcyBDUFUgbXVzdCBjb250YWluCisgIGFuICdlbmFibGUtbWV0aG9kJyBwcm9wZXJ0eSBmb3IgZWFjaCBjcHUgbm9kZS4gIFRoZSBzdXBwb3J0ZWQKKyAgZW5hYmxlLW1ldGhvZHMgYXJlIGRlc2NyaWJlZCBiZWxvdy4KKworICBJdCBpcyBleHBlY3RlZCB0aGF0IHRoZSBib290bG9hZGVyIHdpbGwgZ2VuZXJhdGUgdGhlc2UgZGV2aWNlIHRyZWUKKyAgcHJvcGVydGllcyBhbmQgaW5zZXJ0IHRoZW0gaW50byB0aGUgYmxvYiBwcmlvciB0byBrZXJuZWwgZW50cnkuCisKKy0gQ1BVcyB3aXRoIGEgInNwaW4tdGFibGUiIGVuYWJsZS1tZXRob2QgbXVzdCBoYXZlIGEgJ2NwdS1yZWxlYXNlLWFkZHInCisgIHByb3BlcnR5IGluIHRoZWlyIGNwdSBub2RlLiAgVGhpcyBwcm9wZXJ0eSBpZGVudGlmaWVzIGEKKyAgbmF0dXJhbGx5LWFsaWduZWQgNjQtYml0IHplcm8taW5pdGFsaXNlZCBtZW1vcnkgbG9jYXRpb24uCisKKyAgVGhlc2UgQ1BVcyBzaG91bGQgc3BpbiBvdXRzaWRlIG9mIHRoZSBrZXJuZWwgaW4gYSByZXNlcnZlZCBhcmVhIG9mCisgIG1lbW9yeSAoY29tbXVuaWNhdGVkIHRvIHRoZSBrZXJuZWwgYnkgYSAvbWVtcmVzZXJ2ZS8gcmVnaW9uIGluIHRoZQorICBkZXZpY2UgdHJlZSkgcG9sbGluZyB0aGVpciBjcHUtcmVsZWFzZS1hZGRyIGxvY2F0aW9uLCB3aGljaCBtdXN0IGJlCisgIGNvbnRhaW5lZCBpbiB0aGUgcmVzZXJ2ZWQgcmVnaW9uLiAgQSB3ZmUgaW5zdHJ1Y3Rpb24gbWF5IGJlIGluc2VydGVkCisgIHRvIHJlZHVjZSB0aGUgb3ZlcmhlYWQgb2YgdGhlIGJ1c3ktbG9vcCBhbmQgYSBzZXYgd2lsbCBiZSBpc3N1ZWQgYnkKKyAgdGhlIHByaW1hcnkgQ1BVLiAgV2hlbiBhIHJlYWQgb2YgdGhlIGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkgdGhlCisgIGNwdS1yZWxlYXNlLWFkZHIgcmV0dXJucyBhIG5vbi16ZXJvIHZhbHVlLCB0aGUgQ1BVIG11c3QganVtcCB0byB0aGlzCisgIHZhbHVlLiAgVGhlIHZhbHVlIHdpbGwgYmUgd3JpdHRlbiBhcyBhIHNpbmdsZSA2NC1iaXQgbGl0dGxlLWVuZGlhbgorICB2YWx1ZSwgc28gQ1BVcyBtdXN0IGNvbnZlcnQgdGhlIHJlYWQgdmFsdWUgdG8gdGhlaXIgbmF0aXZlIGVuZGlhbm5lc3MKKyAgYmVmb3JlIGp1bXBpbmcgdG8gaXQuCisKKy0gQ1BVcyB3aXRoIGEgInBzY2kiIGVuYWJsZSBtZXRob2Qgc2hvdWxkIHJlbWFpbiBvdXRzaWRlIG9mCisgIHRoZSBrZXJuZWwgKGkuZS4gb3V0c2lkZSBvZiB0aGUgcmVnaW9ucyBvZiBtZW1vcnkgZGVzY3JpYmVkIHRvIHRoZQorICBrZXJuZWwgaW4gdGhlIG1lbW9yeSBub2RlLCBvciBpbiBhIHJlc2VydmVkIGFyZWEgb2YgbWVtb3J5IGRlc2NyaWJlZAorICB0byB0aGUga2VybmVsIGJ5IGEgL21lbXJlc2VydmUvIHJlZ2lvbiBpbiB0aGUgZGV2aWNlIHRyZWUpLiAgVGhlCisgIGtlcm5lbCB3aWxsIGlzc3VlIENQVV9PTiBjYWxscyBhcyBkZXNjcmliZWQgaW4gQVJNIGRvY3VtZW50IG51bWJlciBBUk0KKyAgREVOIDAwMjJBICgiUG93ZXIgU3RhdGUgQ29vcmRpbmF0aW9uIEludGVyZmFjZSBTeXN0ZW0gU29mdHdhcmUgb24gQVJNCisgIHByb2Nlc3NvcnMiKSB0byBicmluZyBDUFVzIGludG8gdGhlIGtlcm5lbC4KKworICBUaGUgZGV2aWNlIHRyZWUgc2hvdWxkIGNvbnRhaW4gYSAncHNjaScgbm9kZSwgYXMgZGVzY3JpYmVkIGluCisgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vcHNjaS50eHQuCisKKy0gU2Vjb25kYXJ5IENQVSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgc2V0dGluZ3MKKyAgeDAgPSAwIChyZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSkKKyAgeDEgPSAwIChyZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSkKKyAgeDIgPSAwIChyZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSkKKyAgeDMgPSAwIChyZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJtNjQvbGVnYWN5X2luc3RydWN0aW9ucy50eHQgYi9Eb2N1bWVudGF0aW9uL2FybTY0L2xlZ2FjeV9pbnN0cnVjdGlvbnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxYmYzZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybTY0L2xlZ2FjeV9pbnN0cnVjdGlvbnMudHh0CkBAIC0wLDAgKzEsNTcgQEAKK1RoZSBhcm02NCBwb3J0IG9mIHRoZSBMaW51eCBrZXJuZWwgcHJvdmlkZXMgaW5mcmFzdHJ1Y3R1cmUgdG8gc3VwcG9ydAorZW11bGF0aW9uIG9mIGluc3RydWN0aW9ucyB3aGljaCBoYXZlIGJlZW4gZGVwcmVjYXRlZCwgb3Igb2Jzb2xldGVkIGluCit0aGUgYXJjaGl0ZWN0dXJlLiBUaGUgaW5mcmFzdHJ1Y3R1cmUgY29kZSB1c2VzIHVuZGVmaW5lZCBpbnN0cnVjdGlvbgoraG9va3MgdG8gc3VwcG9ydCBlbXVsYXRpb24uIFdoZXJlIGF2YWlsYWJsZSBpdCBhbHNvIGFsbG93cyB0dXJuaW5nIG9uCit0aGUgaW5zdHJ1Y3Rpb24gZXhlY3V0aW9uIGluIGhhcmR3YXJlLgorCitUaGUgZW11bGF0aW9uIG1vZGUgY2FuIGJlIGNvbnRyb2xsZWQgYnkgd3JpdGluZyB0byBzeXNjdGwgbm9kZXMKKygvcHJvYy9zeXMvYWJpKS4gVGhlIGZvbGxvd2luZyBleHBsYWlucyB0aGUgZGlmZmVyZW50IGV4ZWN1dGlvbgorYmVoYXZpb3VycyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWVzIG9mIHRoZSBzeXNjdGwgbm9kZXMgLQorCisqIFVuZGVmCisgIFZhbHVlOiAwCisgIEdlbmVyYXRlcyB1bmRlZmluZWQgaW5zdHJ1Y3Rpb24gYWJvcnQuIERlZmF1bHQgZm9yIGluc3RydWN0aW9ucyB0aGF0CisgIGhhdmUgYmVlbiBvYnNvbGV0ZWQgaW4gdGhlIGFyY2hpdGVjdHVyZSwgZS5nLiwgU1dQCisKKyogRW11bGF0ZQorICBWYWx1ZTogMQorICBVc2VzIHNvZnR3YXJlIGVtdWxhdGlvbi4gVG8gYWlkIG1pZ3JhdGlvbiBvZiBzb2Z0d2FyZSwgaW4gdGhpcyBtb2RlCisgIHVzYWdlIG9mIGVtdWxhdGVkIGluc3RydWN0aW9uIGlzIHRyYWNlZCBhcyB3ZWxsIGFzIHJhdGUgbGltaXRlZAorICB3YXJuaW5ncyBhcmUgaXNzdWVkLiBUaGlzIGlzIHRoZSBkZWZhdWx0IGZvciBkZXByZWNhdGVkCisgIGluc3RydWN0aW9ucywgLmUuZy4sIENQMTUgYmFycmllcnMKKworKiBIYXJkd2FyZSBFeGVjdXRpb24KKyAgVmFsdWU6IDIKKyAgQWx0aG91Z2ggbWFya2VkIGFzIGRlcHJlY2F0ZWQsIHNvbWUgaW1wbGVtZW50YXRpb25zIG1heSBzdXBwb3J0IHRoZQorICBlbmFibGluZy9kaXNhYmxpbmcgb2YgaGFyZHdhcmUgc3VwcG9ydCBmb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGVzZQorICBpbnN0cnVjdGlvbnMuIFVzaW5nIGhhcmR3YXJlIGV4ZWN1dGlvbiBnZW5lcmFsbHkgcHJvdmlkZXMgYmV0dGVyCisgIHBlcmZvcm1hbmNlLCBidXQgYXQgdGhlIGxvc3Mgb2YgYWJpbGl0eSB0byBnYXRoZXIgcnVudGltZSBzdGF0aXN0aWNzCisgIGFib3V0IHRoZSB1c2Ugb2YgdGhlIGRlcHJlY2F0ZWQgaW5zdHJ1Y3Rpb25zLgorCitUaGUgZGVmYXVsdCBtb2RlIGRlcGVuZHMgb24gdGhlIHN0YXR1cyBvZiB0aGUgaW5zdHJ1Y3Rpb24gaW4gdGhlCithcmNoaXRlY3R1cmUuIERlcHJlY2F0ZWQgaW5zdHJ1Y3Rpb25zIHNob3VsZCBkZWZhdWx0IHRvIGVtdWxhdGlvbgord2hpbGUgb2Jzb2xldGUgaW5zdHJ1Y3Rpb25zIG11c3QgYmUgdW5kZWZpbmVkIGJ5IGRlZmF1bHQuCisKK05vdGU6IEluc3RydWN0aW9uIGVtdWxhdGlvbiBtYXkgbm90IGJlIHBvc3NpYmxlIGluIGFsbCBjYXNlcy4gU2VlCitpbmRpdmlkdWFsIGluc3RydWN0aW9uIG5vdGVzIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgorCitTdXBwb3J0ZWQgbGVnYWN5IGluc3RydWN0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogU1dQe0J9CitOb2RlOiAvcHJvYy9zeXMvYWJpL3N3cAorU3RhdHVzOiBPYnNvbGV0ZQorRGVmYXVsdDogVW5kZWYgKDApCisKKyogQ1AxNSBCYXJyaWVycworTm9kZTogL3Byb2Mvc3lzL2FiaS9jcDE1X2JhcnJpZXIKK1N0YXR1czogRGVwcmVjYXRlZAorRGVmYXVsdDogRW11bGF0ZSAoMSkKKworKiBTRVRFTkQKK05vZGU6IC9wcm9jL3N5cy9hYmkvc2V0ZW5kCitTdGF0dXM6IERlcHJlY2F0ZWQKK0RlZmF1bHQ6IEVtdWxhdGUgKDEpKgorTm90ZTogQWxsIHRoZSBjcHVzIG9uIHRoZSBzeXN0ZW0gbXVzdCBoYXZlIG1peGVkIGVuZGlhbiBzdXBwb3J0IGF0IEVMMAorZm9yIHRoaXMgZmVhdHVyZSB0byBiZSBlbmFibGVkLiBJZiBhIG5ldyBDUFUgLSB3aGljaCBkb2Vzbid0IHN1cHBvcnQgbWl4ZWQKK2VuZGlhbiAtIGlzIGhvdHBsdWdnZWQgaW4gYWZ0ZXIgdGhpcyBmZWF0dXJlIGhhcyBiZWVuIGVuYWJsZWQsIHRoZXJlIGNvdWxkCitiZSB1bmV4cGVjdGVkIHJlc3VsdHMgaW4gdGhlIGFwcGxpY2F0aW9uLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm02NC9tZW1vcnkudHh0IGIvRG9jdW1lbnRhdGlvbi9hcm02NC9tZW1vcnkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MjczYTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2FybTY0L21lbW9yeS50eHQKQEAgLTAsMCArMSw5NCBAQAorCQkgICAgIE1lbW9yeSBMYXlvdXQgb24gQUFyY2g2NCBMaW51eAorCQkgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBdXRob3I6IENhdGFsaW4gTWFyaW5hcyA8Y2F0YWxpbi5tYXJpbmFzQGFybS5jb20+CisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSB2aXJ0dWFsIG1lbW9yeSBsYXlvdXQgdXNlZCBieSB0aGUgQUFyY2g2NAorTGludXgga2VybmVsLiBUaGUgYXJjaGl0ZWN0dXJlIGFsbG93cyB1cCB0byA0IGxldmVscyBvZiB0cmFuc2xhdGlvbgordGFibGVzIHdpdGggYSA0S0IgcGFnZSBzaXplIGFuZCB1cCB0byAzIGxldmVscyB3aXRoIGEgNjRLQiBwYWdlIHNpemUuCisKK0FBcmNoNjQgTGludXggdXNlcyBlaXRoZXIgMyBsZXZlbHMgb3IgNCBsZXZlbHMgb2YgdHJhbnNsYXRpb24gdGFibGVzCit3aXRoIHRoZSA0S0IgcGFnZSBjb25maWd1cmF0aW9uLCBhbGxvd2luZyAzOS1iaXQgKDUxMkdCKSBvciA0OC1iaXQKKygyNTZUQikgdmlydHVhbCBhZGRyZXNzZXMsIHJlc3BlY3RpdmVseSwgZm9yIGJvdGggdXNlciBhbmQga2VybmVsLiBXaXRoCis2NEtCIHBhZ2VzLCBvbmx5IDIgbGV2ZWxzIG9mIHRyYW5zbGF0aW9uIHRhYmxlcywgYWxsb3dpbmcgNDItYml0ICg0VEIpCit2aXJ0dWFsIGFkZHJlc3MsIGFyZSB1c2VkIGJ1dCB0aGUgbWVtb3J5IGxheW91dCBpcyB0aGUgc2FtZS4KKworVXNlciBhZGRyZXNzZXMgaGF2ZSBiaXRzIDYzOjQ4IHNldCB0byAwIHdoaWxlIHRoZSBrZXJuZWwgYWRkcmVzc2VzIGhhdmUKK3RoZSBzYW1lIGJpdHMgc2V0IHRvIDEuIFRUQlJ4IHNlbGVjdGlvbiBpcyBnaXZlbiBieSBiaXQgNjMgb2YgdGhlCit2aXJ0dWFsIGFkZHJlc3MuIFRoZSBzd2FwcGVyX3BnX2RpciBjb250YWlucyBvbmx5IGtlcm5lbCAoZ2xvYmFsKQorbWFwcGluZ3Mgd2hpbGUgdGhlIHVzZXIgcGdkIGNvbnRhaW5zIG9ubHkgdXNlciAobm9uLWdsb2JhbCkgbWFwcGluZ3MuCitUaGUgc3dhcHBlcl9wZ19kaXIgYWRkcmVzcyBpcyB3cml0dGVuIHRvIFRUQlIxIGFuZCBuZXZlciB3cml0dGVuIHRvCitUVEJSMC4KKworCitBQXJjaDY0IExpbnV4IG1lbW9yeSBsYXlvdXQgd2l0aCA0S0IgcGFnZXMgKyAzIGxldmVsczoKKworU3RhcnQJCQlFbmQJCQlTaXplCQlVc2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiswMDAwMDAwMDAwMDAwMDAwCTAwMDAwMDdmZmZmZmZmZmYJIDUxMkdCCQl1c2VyCitmZmZmZmY4MDAwMDAwMDAwCWZmZmZmZmZmZmZmZmZmZmYJIDUxMkdCCQlrZXJuZWwKKworCitBQXJjaDY0IExpbnV4IG1lbW9yeSBsYXlvdXQgd2l0aCA0S0IgcGFnZXMgKyA0IGxldmVsczoKKworU3RhcnQJCQlFbmQJCQlTaXplCQlVc2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiswMDAwMDAwMDAwMDAwMDAwCTAwMDBmZmZmZmZmZmZmZmYJIDI1NlRCCQl1c2VyCitmZmZmMDAwMDAwMDAwMDAwCWZmZmZmZmZmZmZmZmZmZmYJIDI1NlRCCQlrZXJuZWwKKworCitBQXJjaDY0IExpbnV4IG1lbW9yeSBsYXlvdXQgd2l0aCA2NEtCIHBhZ2VzICsgMiBsZXZlbHM6CisKK1N0YXJ0CQkJRW5kCQkJU2l6ZQkJVXNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMDAwMDAwMDAwMDAwMDAwMAkwMDAwMDNmZmZmZmZmZmZmCSAgIDRUQgkJdXNlcgorZmZmZmZjMDAwMDAwMDAwMAlmZmZmZmZmZmZmZmZmZmZmCSAgIDRUQgkJa2VybmVsCisKKworQUFyY2g2NCBMaW51eCBtZW1vcnkgbGF5b3V0IHdpdGggNjRLQiBwYWdlcyArIDMgbGV2ZWxzOgorCitTdGFydAkJCUVuZAkJCVNpemUJCVVzZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzAwMDAwMDAwMDAwMDAwMDAJMDAwMGZmZmZmZmZmZmZmZgkgMjU2VEIJCXVzZXIKK2ZmZmYwMDAwMDAwMDAwMDAJZmZmZmZmZmZmZmZmZmZmZgkgMjU2VEIJCWtlcm5lbAorCisKK0ZvciBkZXRhaWxzIG9mIHRoZSB2aXJ0dWFsIGtlcm5lbCBtZW1vcnkgbGF5b3V0IHBsZWFzZSBzZWUgdGhlIGtlcm5lbAorYm9vdGluZyBsb2cuCisKKworVHJhbnNsYXRpb24gdGFibGUgbG9va3VwIHdpdGggNEtCIHBhZ2VzOgorCisrLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rCit8NjMgICAgNTZ8NTUgICAgNDh8NDcgICAgNDB8MzkgICAgMzJ8MzEgICAgMjR8MjMgICAgMTZ8MTUgICAgIDh8NyAgICAgIDB8CisrLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rCisgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwKKyB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgdgorIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgICBbMTE6MF0gIGluLXBhZ2Ugb2Zmc2V0CisgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgKy0+IFsyMDoxMl0gTDMgaW5kZXgKKyB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICstLS0tLS0tLS0tLT4gWzI5OjIxXSBMMiBpbmRleAorIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiBbMzg6MzBdIEwxIGluZGV4CisgfCAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+IFs0NzozOV0gTDAgaW5kZXgKKyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4gWzYzXSBUVEJSMC8xCisKKworVHJhbnNsYXRpb24gdGFibGUgbG9va3VwIHdpdGggNjRLQiBwYWdlczoKKworKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKworfDYzICAgIDU2fDU1ICAgIDQ4fDQ3ICAgIDQwfDM5ICAgIDMyfDMxICAgIDI0fDIzICAgIDE2fDE1ICAgICA4fDcgICAgICAwfAorKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKworIHwgICAgICAgICAgICAgICAgIHwgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwKKyB8ICAgICAgICAgICAgICAgICB8ICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB2CisgfCAgICAgICAgICAgICAgICAgfCAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgIFsxNTowXSAgaW4tcGFnZSBvZmZzZXQKKyB8ICAgICAgICAgICAgICAgICB8ICAgIHwgICAgICAgICAgICAgICArLS0tLS0tLS0tLT4gWzI4OjE2XSBMMyBpbmRleAorIHwgICAgICAgICAgICAgICAgIHwgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiBbNDE6MjldIEwyIGluZGV4CisgfCAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+IFs0Nzo0Ml0gTDEgaW5kZXgKKyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4gWzYzXSBUVEJSMC8xCisKKworV2hlbiB1c2luZyBLVk0sIHRoZSBoeXBlcnZpc29yIG1hcHMga2VybmVsIHBhZ2VzIGluIEVMMiwgYXQgYSBmaXhlZAorb2Zmc2V0IGZyb20gdGhlIGtlcm5lbCBWQSAodG9wIDI0Yml0cyBvZiB0aGUga2VybmVsIFZBIHNldCB0byB6ZXJvKToKKworU3RhcnQJCQlFbmQJCQlTaXplCQlVc2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiswMDAwMDA0MDAwMDAwMDAwCTAwMDAwMDdmZmZmZmZmZmYJIDI1NkdCCQlrZXJuZWwgb2JqZWN0cyBtYXBwZWQgaW4gSFlQCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybTY0L3RhZ2dlZC1wb2ludGVycy50eHQgYi9Eb2N1bWVudGF0aW9uL2FybTY0L3RhZ2dlZC1wb2ludGVycy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI1YTk5ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXJtNjQvdGFnZ2VkLXBvaW50ZXJzLnR4dApAQCAtMCwwICsxLDY2IEBACisJCVRhZ2dlZCB2aXJ0dWFsIGFkZHJlc3NlcyBpbiBBQXJjaDY0IExpbnV4CisJCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0F1dGhvcjogV2lsbCBEZWFjb24gPHdpbGwuZGVhY29uQGFybS5jb20+CitEYXRlICA6IDEyIEp1bmUgMjAxMworCitUaGlzIGRvY3VtZW50IGJyaWVmbHkgZGVzY3JpYmVzIHRoZSBwcm92aXNpb24gb2YgdGFnZ2VkIHZpcnR1YWwKK2FkZHJlc3NlcyBpbiB0aGUgQUFyY2g2NCB0cmFuc2xhdGlvbiBzeXN0ZW0gYW5kIHRoZWlyIHBvdGVudGlhbCB1c2VzCitpbiBBQXJjaDY0IExpbnV4LgorCitUaGUga2VybmVsIGNvbmZpZ3VyZXMgdGhlIHRyYW5zbGF0aW9uIHRhYmxlcyBzbyB0aGF0IHRyYW5zbGF0aW9ucyBtYWRlCit2aWEgVFRCUjAgKGkuZS4gdXNlcnNwYWNlIG1hcHBpbmdzKSBoYXZlIHRoZSB0b3AgYnl0ZSAoYml0cyA2Mzo1Nikgb2YKK3RoZSB2aXJ0dWFsIGFkZHJlc3MgaWdub3JlZCBieSB0aGUgdHJhbnNsYXRpb24gaGFyZHdhcmUuIFRoaXMgZnJlZXMgdXAKK3RoaXMgYnl0ZSBmb3IgYXBwbGljYXRpb24gdXNlLgorCisKK1Bhc3NpbmcgdGFnZ2VkIGFkZHJlc3NlcyB0byB0aGUga2VybmVsCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbGwgaW50ZXJwcmV0YXRpb24gb2YgdXNlcnNwYWNlIG1lbW9yeSBhZGRyZXNzZXMgYnkgdGhlIGtlcm5lbCBhc3N1bWVzCithbiBhZGRyZXNzIHRhZyBvZiAweDAwLgorCitUaGlzIGluY2x1ZGVzLCBidXQgaXMgbm90IGxpbWl0ZWQgdG8sIGFkZHJlc3NlcyBmb3VuZCBpbjoKKworIC0gcG9pbnRlciBhcmd1bWVudHMgdG8gc3lzdGVtIGNhbGxzLCBpbmNsdWRpbmcgcG9pbnRlcnMgaW4gc3RydWN0dXJlcworICAgcGFzc2VkIHRvIHN5c3RlbSBjYWxscywKKworIC0gdGhlIHN0YWNrIHBvaW50ZXIgKHNwKSwgZS5nLiB3aGVuIGludGVycHJldGluZyBpdCB0byBkZWxpdmVyIGEKKyAgIHNpZ25hbCwKKworIC0gdGhlIGZyYW1lIHBvaW50ZXIgKHgyOSkgYW5kIGZyYW1lIHJlY29yZHMsIGUuZy4gd2hlbiBpbnRlcnByZXRpbmcKKyAgIHRoZW0gdG8gZ2VuZXJhdGUgYSBiYWNrdHJhY2Ugb3IgY2FsbCBncmFwaC4KKworVXNpbmcgbm9uLXplcm8gYWRkcmVzcyB0YWdzIGluIGFueSBvZiB0aGVzZSBsb2NhdGlvbnMgbWF5IHJlc3VsdCBpbiBhbgorZXJyb3IgY29kZSBiZWluZyByZXR1cm5lZCwgYSAoZmF0YWwpIHNpZ25hbCBiZWluZyByYWlzZWQsIG9yIG90aGVyIG1vZGVzCitvZiBmYWlsdXJlLgorCitGb3IgdGhlc2UgcmVhc29ucywgcGFzc2luZyBub24temVybyBhZGRyZXNzIHRhZ3MgdG8gdGhlIGtlcm5lbCB2aWEKK3N5c3RlbSBjYWxscyBpcyBmb3JiaWRkZW4sIGFuZCB1c2luZyBhIG5vbi16ZXJvIGFkZHJlc3MgdGFnIGZvciBzcCBpcworc3Ryb25nbHkgZGlzY291cmFnZWQuCisKK1Byb2dyYW1zIG1haW50YWluaW5nIGEgZnJhbWUgcG9pbnRlciBhbmQgZnJhbWUgcmVjb3JkcyB0aGF0IHVzZSBub24temVybworYWRkcmVzcyB0YWdzIG1heSBzdWZmZXIgaW1wYWlyZWQgb3IgaW5hY2N1cmF0ZSBkZWJ1ZyBhbmQgcHJvZmlsaW5nCit2aXNpYmlsaXR5LgorCisKK1ByZXNlcnZpbmcgdGFncworLS0tLS0tLS0tLS0tLS0tCisKK05vbi16ZXJvIHRhZ3MgYXJlIG5vdCBwcmVzZXJ2ZWQgd2hlbiBkZWxpdmVyaW5nIHNpZ25hbHMuIFRoaXMgbWVhbnMgdGhhdAorc2lnbmFsIGhhbmRsZXJzIGluIGFwcGxpY2F0aW9ucyBtYWtpbmcgdXNlIG9mIHRhZ3MgY2Fubm90IHJlbHkgb24gdGhlCit0YWcgaW5mb3JtYXRpb24gZm9yIHVzZXIgdmlydHVhbCBhZGRyZXNzZXMgYmVpbmcgbWFpbnRhaW5lZCBmb3IgZmllbGRzCitpbnNpZGUgc2lnaW5mb190LiBPbmUgZXhjZXB0aW9uIHRvIHRoaXMgcnVsZSBpcyBmb3Igc2lnbmFscyByYWlzZWQgaW4KK3Jlc3BvbnNlIHRvIHdhdGNocG9pbnQgZGVidWcgZXhjZXB0aW9ucywgd2hlcmUgdGhlIHRhZyBpbmZvcm1hdGlvbiB3aWxsCitiZSBwcmVzZXJ2ZWQuCisKK1RoZSBhcmNoaXRlY3R1cmUgcHJldmVudHMgdGhlIHVzZSBvZiBhIHRhZ2dlZCBQQywgc28gdGhlIHVwcGVyIGJ5dGUgd2lsbAorYmUgc2V0IHRvIGEgc2lnbi1leHRlbnNpb24gb2YgYml0IDU1IG9uIGV4Y2VwdGlvbiByZXR1cm4uCisKKworT3RoZXIgY29uc2lkZXJhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NwZWNpYWwgY2FyZSBzaG91bGQgYmUgdGFrZW4gd2hlbiB1c2luZyB0YWdnZWQgcG9pbnRlcnMsIHNpbmNlIGl0IGlzCitsaWtlbHkgdGhhdCBDIGNvbXBpbGVycyB3aWxsIG5vdCBoYXphcmQgdHdvIHZpcnR1YWwgYWRkcmVzc2VzIGRpZmZlcmluZworb25seSBpbiB0aGUgdXBwZXIgYnl0ZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXNzb2NfYXJyYXkudHh0IGIvRG9jdW1lbnRhdGlvbi9hc3NvY19hcnJheS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmYyYzZjZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXNzb2NfYXJyYXkudHh0CkBAIC0wLDAgKzEsNTc0IEBACisJCSAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwkJICAgR0VORVJJQyBBU1NPQ0lBVElWRSBBUlJBWSBJTVBMRU1FTlRBVElPTgorCQkgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0NvbnRlbnRzOgorCisgLSBPdmVydmlldy4KKworIC0gVGhlIHB1YmxpYyBBUEkuCisgICAtIEVkaXQgc2NyaXB0LgorICAgLSBPcGVyYXRpb25zIHRhYmxlLgorICAgLSBNYW5pcHVsYXRpb24gZnVuY3Rpb25zLgorICAgLSBBY2Nlc3MgZnVuY3Rpb25zLgorICAgLSBJbmRleCBrZXkgZm9ybS4KKworIC0gSW50ZXJuYWwgd29ya2luZ3MuCisgICAtIEJhc2ljIGludGVybmFsIHRyZWUgbGF5b3V0LgorICAgLSBTaG9ydGN1dHMuCisgICAtIFNwbGl0dGluZyBhbmQgY29sbGFwc2luZyBub2Rlcy4KKyAgIC0gTm9uLXJlY3Vyc2l2ZSBpdGVyYXRpb24uCisgICAtIFNpbXVsdGFuZW91cyBhbHRlcmF0aW9uIGFuZCBpdGVyYXRpb24uCisKKworPT09PT09PT0KK09WRVJWSUVXCis9PT09PT09PQorCitUaGlzIGFzc29jaWF0aXZlIGFycmF5IGltcGxlbWVudGF0aW9uIGlzIGFuIG9iamVjdCBjb250YWluZXIgd2l0aCB0aGUgZm9sbG93aW5nCitwcm9wZXJ0aWVzOgorCisgKDEpIE9iamVjdHMgYXJlIG9wYXF1ZSBwb2ludGVycy4gIFRoZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBjYXJlIHdoZXJlIHRoZXkKKyAgICAgcG9pbnQgKGlmIGFueXdoZXJlKSBvciB3aGF0IHRoZXkgcG9pbnQgdG8gKGlmIGFueXRoaW5nKS4KKworICAgICBbIV0gTk9URTogUG9pbnRlcnMgdG8gb2JqZWN0cyBfbXVzdF8gYmUgemVybyBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0LgorCisgKDIpIE9iamVjdHMgZG8gbm90IG5lZWQgdG8gY29udGFpbiBsaW5rYWdlIGJsb2NrcyBmb3IgdXNlIGJ5IHRoZSBhcnJheS4gIFRoaXMKKyAgICAgcGVybWl0cyBhbiBvYmplY3QgdG8gYmUgbG9jYXRlZCBpbiBtdWx0aXBsZSBhcnJheXMgc2ltdWx0YW5lb3VzbHkuCisgICAgIFJhdGhlciwgdGhlIGFycmF5IGlzIG1hZGUgdXAgb2YgbWV0YWRhdGEgYmxvY2tzIHRoYXQgcG9pbnQgdG8gb2JqZWN0cy4KKworICgzKSBPYmplY3RzIHJlcXVpcmUgaW5kZXgga2V5cyB0byBsb2NhdGUgdGhlbSB3aXRoaW4gdGhlIGFycmF5LgorCisgKDQpIEluZGV4IGtleXMgbXVzdCBiZSB1bmlxdWUuICBJbnNlcnRpbmcgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUga2V5IGFzIG9uZQorICAgICBhbHJlYWR5IGluIHRoZSBhcnJheSB3aWxsIHJlcGxhY2UgdGhlIG9sZCBvYmplY3QuCisKKyAoNSkgSW5kZXgga2V5cyBjYW4gYmUgb2YgYW55IGxlbmd0aCBhbmQgY2FuIGJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLgorCisgKDYpIEluZGV4IGtleXMgc2hvdWxkIGVuY29kZSB0aGUgbGVuZ3RoIGVhcmx5IG9uLCBiZWZvcmUgYW55IHZhcmlhdGlvbiBkdWUgdG8KKyAgICAgbGVuZ3RoIGlzIHNlZW4uCisKKyAoNykgSW5kZXgga2V5cyBjYW4gaW5jbHVkZSBhIGhhc2ggdG8gc2NhdHRlciBvYmplY3RzIHRocm91Z2hvdXQgdGhlIGFycmF5LgorCisgKDgpIFRoZSBhcnJheSBjYW4gaXRlcmF0ZWQgb3Zlci4gIFRoZSBvYmplY3RzIHdpbGwgbm90IG5lY2Vzc2FyaWx5IGNvbWUgb3V0IGluCisgICAgIGtleSBvcmRlci4KKworICg5KSBUaGUgYXJyYXkgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgd2hpbHN0IGl0IGlzIGJlaW5nIG1vZGlmaWVkLCBwcm92aWRlZCB0aGUKKyAgICAgUkNVIHJlYWRsb2NrIGlzIGJlaW5nIGhlbGQgYnkgdGhlIGl0ZXJhdG9yLiAgTm90ZSwgaG93ZXZlciwgdW5kZXIgdGhlc2UKKyAgICAgY2lyY3Vtc3RhbmNlcywgc29tZSBvYmplY3RzIG1heSBiZSBzZWVuIG1vcmUgdGhhbiBvbmNlLiAgSWYgdGhpcyBpcyBhCisgICAgIHByb2JsZW0sIHRoZSBpdGVyYXRvciBzaG91bGQgbG9jayBhZ2FpbnN0IG1vZGlmaWNhdGlvbi4gIE9iamVjdHMgd2lsbCBub3QKKyAgICAgYmUgbWlzc2VkLCBob3dldmVyLCB1bmxlc3MgZGVsZXRlZC4KKworKDEwKSBPYmplY3RzIGluIHRoZSBhcnJheSBjYW4gYmUgbG9va2VkIHVwIGJ5IG1lYW5zIG9mIHRoZWlyIGluZGV4IGtleS4KKworKDExKSBPYmplY3RzIGNhbiBiZSBsb29rZWQgdXAgd2hpbHN0IHRoZSBhcnJheSBpcyBiZWluZyBtb2RpZmllZCwgcHJvdmlkZWQgdGhlCisgICAgIFJDVSByZWFkbG9jayBpcyBiZWluZyBoZWxkIGJ5IHRoZSB0aHJlYWQgZG9pbmcgdGhlIGxvb2sgdXAuCisKK1RoZSBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgdHJlZSBvZiAxNi1wb2ludGVyIG5vZGVzIGludGVybmFsbHkgdGhhdCBhcmUgaW5kZXhlZAorb24gZWFjaCBsZXZlbCBieSBuaWJibGVzIGZyb20gdGhlIGluZGV4IGtleSBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgaW4gYSByYWRpeAordHJlZS4gIFRvIGltcHJvdmUgbWVtb3J5IGVmZmljaWVuY3ksIHNob3J0Y3V0cyBjYW4gYmUgZW1wbGFjZWQgdG8gc2tpcCBvdmVyCit3aGF0IHdvdWxkIG90aGVyd2lzZSBiZSBhIHNlcmllcyBvZiBzaW5nbGUtb2NjdXBhbmN5IG5vZGVzLiAgRnVydGhlciwgbm9kZXMKK3BhY2sgbGVhZiBvYmplY3QgcG9pbnRlcnMgaW50byBzcGFyZSBzcGFjZSBpbiB0aGUgbm9kZSByYXRoZXIgdGhhbiBtYWtpbmcgYW4KK2V4dHJhIGJyYW5jaCB1bnRpbCBhcyBzdWNoIHRpbWUgYW4gb2JqZWN0IG5lZWRzIHRvIGJlIGFkZGVkIHRvIGEgZnVsbCBub2RlLgorCisKKz09PT09PT09PT09PT09CitUSEUgUFVCTElDIEFQSQorPT09PT09PT09PT09PT0KKworVGhlIHB1YmxpYyBBUEkgY2FuIGJlIGZvdW5kIGluIDxsaW51eC9hc3NvY19hcnJheS5oPi4gIFRoZSBhc3NvY2lhdGl2ZSBhcnJheSBpcworcm9vdGVkIG9uIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOgorCisJc3RydWN0IGFzc29jX2FycmF5IHsKKwkJLi4uCisJfTsKKworVGhlIGNvZGUgaXMgc2VsZWN0ZWQgYnkgZW5hYmxpbmcgQ09ORklHX0FTU09DSUFUSVZFX0FSUkFZLgorCisKK0VESVQgU0NSSVBUCistLS0tLS0tLS0tLQorCitUaGUgaW5zZXJ0aW9uIGFuZCBkZWxldGlvbiBmdW5jdGlvbnMgcHJvZHVjZSBhbiAnZWRpdCBzY3JpcHQnIHRoYXQgY2FuIGxhdGVyIGJlCithcHBsaWVkIHRvIGVmZmVjdCB0aGUgY2hhbmdlcyB3aXRob3V0IHJpc2tpbmcgRU5PTUVNLiAgVGhpcyByZXRhaW5zIHRoZQorcHJlYWxsb2NhdGVkIG1ldGFkYXRhIGJsb2NrcyB0aGF0IHdpbGwgYmUgaW5zdGFsbGVkIGluIHRoZSBpbnRlcm5hbCB0cmVlIGFuZAora2VlcHMgdHJhY2sgb2YgdGhlIG1ldGFkYXRhIGJsb2NrcyB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSB0cmVlIHdoZW4gdGhlCitzY3JpcHQgaXMgYXBwbGllZC4KKworVGhpcyBpcyBhbHNvIHVzZWQgdG8ga2VlcCB0cmFjayBvZiBkZWFkIGJsb2NrcyBhbmQgZGVhZCBvYmplY3RzIGFmdGVyIHRoZQorc2NyaXB0IGhhcyBiZWVuIGFwcGxpZWQgc28gdGhhdCB0aGV5IGNhbiBiZSBmcmVlZCBsYXRlci4gIFRoZSBmcmVlaW5nIGlzIGRvbmUKK2FmdGVyIGFuIFJDVSBncmFjZSBwZXJpb2QgaGFzIHBhc3NlZCAtIHRodXMgYWxsb3dpbmcgYWNjZXNzIGZ1bmN0aW9ucyB0bworcHJvY2VlZCB1bmRlciB0aGUgUkNVIHJlYWQgbG9jay4KKworVGhlIHNjcmlwdCBhcHBlYXJzIGFzIG91dHNpZGUgb2YgdGhlIEFQSSBhcyBhIHBvaW50ZXIgb2YgdGhlIHR5cGU6CisKKwlzdHJ1Y3QgYXNzb2NfYXJyYXlfZWRpdDsKKworVGhlcmUgYXJlIHR3byBmdW5jdGlvbnMgZm9yIGRlYWxpbmcgd2l0aCB0aGUgc2NyaXB0OgorCisgKDEpIEFwcGx5IGFuIGVkaXQgc2NyaXB0LgorCisJdm9pZCBhc3NvY19hcnJheV9hcHBseV9lZGl0KHN0cnVjdCBhc3NvY19hcnJheV9lZGl0ICplZGl0KTsKKworICAgICBUaGlzIHdpbGwgcGVyZm9ybSB0aGUgZWRpdCBmdW5jdGlvbnMsIGludGVycG9sYXRpbmcgdmFyaW91cyB3cml0ZSBiYXJyaWVycworICAgICB0byBwZXJtaXQgYWNjZXNzZXMgdW5kZXIgdGhlIFJDVSByZWFkIGxvY2sgdG8gY29udGludWUuICBUaGUgZWRpdCBzY3JpcHQKKyAgICAgd2lsbCB0aGVuIGJlIHBhc3NlZCB0byBjYWxsX3JjdSgpIHRvIGZyZWUgaXQgYW5kIGFueSBkZWFkIHN0dWZmIGl0IHBvaW50cworICAgICB0by4KKworICgyKSBDYW5jZWwgYW4gZWRpdCBzY3JpcHQuCisKKwl2b2lkIGFzc29jX2FycmF5X2NhbmNlbF9lZGl0KHN0cnVjdCBhc3NvY19hcnJheV9lZGl0ICplZGl0KTsKKworICAgICBUaGlzIGZyZWVzIHRoZSBlZGl0IHNjcmlwdCBhbmQgYWxsIHByZWFsbG9jYXRlZCBtZW1vcnkgaW1tZWRpYXRlbHkuICBJZgorICAgICB0aGlzIHdhcyBmb3IgaW5zZXJ0aW9uLCB0aGUgbmV3IG9iamVjdCBpcyBfbm90XyByZWxlYXNlZCBieSB0aGlzIGZ1bmN0aW9uLAorICAgICBidXQgbXVzdCByYXRoZXIgYmUgcmVsZWFzZWQgYnkgdGhlIGNhbGxlci4KKworVGhlc2UgZnVuY3Rpb25zIGFyZSBndWFyYW50ZWVkIG5vdCB0byBmYWlsLgorCisKK09QRVJBVElPTlMgVEFCTEUKKy0tLS0tLS0tLS0tLS0tLS0KKworVmFyaW91cyBmdW5jdGlvbnMgdGFrZSBhIHRhYmxlIG9mIG9wZXJhdGlvbnM6CisKKwlzdHJ1Y3QgYXNzb2NfYXJyYXlfb3BzIHsKKwkJLi4uCisJfTsKKworVGhpcyBwb2ludHMgdG8gYSBudW1iZXIgb2YgbWV0aG9kcywgYWxsIG9mIHdoaWNoIG5lZWQgdG8gYmUgcHJvdmlkZWQ6CisKKyAoMSkgR2V0IGEgY2h1bmsgb2YgaW5kZXgga2V5IGZyb20gY2FsbGVyIGRhdGE6CisKKwl1bnNpZ25lZCBsb25nICgqZ2V0X2tleV9jaHVuaykoY29uc3Qgdm9pZCAqaW5kZXhfa2V5LCBpbnQgbGV2ZWwpOworCisgICAgIFRoaXMgc2hvdWxkIHJldHVybiBhIGNodW5rIG9mIGNhbGxlci1zdXBwbGllZCBpbmRleCBrZXkgc3RhcnRpbmcgYXQgdGhlCisgICAgICpiaXQqIHBvc2l0aW9uIGdpdmVuIGJ5IHRoZSBsZXZlbCBhcmd1bWVudC4gIFRoZSBsZXZlbCBhcmd1bWVudCB3aWxsIGJlIGEKKyAgICAgbXVsdGlwbGUgb2YgQVNTT0NfQVJSQVlfS0VZX0NIVU5LX1NJWkUgYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuCisgICAgIEFTU09DX0FSUkFZX0tFWV9DSFVOS19TSVpFIGJpdHMuICBObyBlcnJvciBpcyBwb3NzaWJsZS4KKworCisgKDIpIEdldCBhIGNodW5rIG9mIGFuIG9iamVjdCdzIGluZGV4IGtleS4KKworCXVuc2lnbmVkIGxvbmcgKCpnZXRfb2JqZWN0X2tleV9jaHVuaykoY29uc3Qgdm9pZCAqb2JqZWN0LCBpbnQgbGV2ZWwpOworCisgICAgIEFzIHRoZSBwcmV2aW91cyBmdW5jdGlvbiwgYnV0IGdldHMgaXRzIGRhdGEgZnJvbSBhbiBvYmplY3QgaW4gdGhlIGFycmF5CisgICAgIHJhdGhlciB0aGFuIGZyb20gYSBjYWxsZXItc3VwcGxpZWQgaW5kZXgga2V5LgorCisKKyAoMykgU2VlIGlmIHRoaXMgaXMgdGhlIG9iamVjdCB3ZSdyZSBsb29raW5nIGZvci4KKworCWJvb2wgKCpjb21wYXJlX29iamVjdCkoY29uc3Qgdm9pZCAqb2JqZWN0LCBjb25zdCB2b2lkICppbmRleF9rZXkpOworCisgICAgIENvbXBhcmUgdGhlIG9iamVjdCBhZ2FpbnN0IGFuIGluZGV4IGtleSBhbmQgcmV0dXJuIHRydWUgaWYgaXQgbWF0Y2hlcyBhbmQKKyAgICAgZmFsc2UgaWYgaXQgZG9lc24ndC4KKworCisgKDQpIERpZmYgdGhlIGluZGV4IGtleXMgb2YgdHdvIG9iamVjdHMuCisKKwlpbnQgKCpkaWZmX29iamVjdHMpKGNvbnN0IHZvaWQgKm9iamVjdCwgY29uc3Qgdm9pZCAqaW5kZXhfa2V5KTsKKworICAgICBSZXR1cm4gdGhlIGJpdCBwb3NpdGlvbiBhdCB3aGljaCB0aGUgaW5kZXgga2V5IG9mIHRoZSBzcGVjaWZpZWQgb2JqZWN0CisgICAgIGRpZmZlcnMgZnJvbSB0aGUgZ2l2ZW4gaW5kZXgga2V5IG9yIC0xIGlmIHRoZXkgYXJlIHRoZSBzYW1lLgorCisKKyAoNSkgRnJlZSBhbiBvYmplY3QuCisKKwl2b2lkICgqZnJlZV9vYmplY3QpKHZvaWQgKm9iamVjdCk7CisKKyAgICAgRnJlZSB0aGUgc3BlY2lmaWVkIG9iamVjdC4gIE5vdGUgdGhhdCB0aGlzIG1heSBiZSBjYWxsZWQgYW4gUkNVIGdyYWNlCisgICAgIHBlcmlvZCBhZnRlciBhc3NvY19hcnJheV9hcHBseV9lZGl0KCkgd2FzIGNhbGxlZCwgc28gc3luY2hyb25pemVfcmN1KCkgbWF5CisgICAgIGJlIG5lY2Vzc2FyeSBvbiBtb2R1bGUgdW5sb2FkaW5nLgorCisKK01BTklQVUxBVElPTiBGVU5DVElPTlMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGZ1bmN0aW9ucyBmb3IgbWFuaXB1bGF0aW5nIGFuIGFzc29jaWF0aXZlIGFycmF5OgorCisgKDEpIEluaXRpYWxpc2UgYW4gYXNzb2NpYXRpdmUgYXJyYXkuCisKKwl2b2lkIGFzc29jX2FycmF5X2luaXQoc3RydWN0IGFzc29jX2FycmF5ICphcnJheSk7CisKKyAgICAgVGhpcyBpbml0aWFsaXNlcyB0aGUgYmFzZSBzdHJ1Y3R1cmUgZm9yIGFuIGFzc29jaWF0aXZlIGFycmF5LiAgSXQgY2FuJ3QKKyAgICAgZmFpbC4KKworCisgKDIpIEluc2VydC9yZXBsYWNlIGFuIG9iamVjdCBpbiBhbiBhc3NvY2lhdGl2ZSBhcnJheS4KKworCXN0cnVjdCBhc3NvY19hcnJheV9lZGl0ICoKKwlhc3NvY19hcnJheV9pbnNlcnQoc3RydWN0IGFzc29jX2FycmF5ICphcnJheSwKKwkJCSAgIGNvbnN0IHN0cnVjdCBhc3NvY19hcnJheV9vcHMgKm9wcywKKwkJCSAgIGNvbnN0IHZvaWQgKmluZGV4X2tleSwKKwkJCSAgIHZvaWQgKm9iamVjdCk7CisKKyAgICAgVGhpcyBpbnNlcnRzIHRoZSBnaXZlbiBvYmplY3QgaW50byB0aGUgYXJyYXkuICBOb3RlIHRoYXQgdGhlIGxlYXN0CisgICAgIHNpZ25pZmljYW50IGJpdCBvZiB0aGUgcG9pbnRlciBtdXN0IGJlIHplcm8gYXMgaXQncyB1c2VkIHRvIHR5cGUtbWFyaworICAgICBwb2ludGVycyBpbnRlcm5hbGx5LgorCisgICAgIElmIGFuIG9iamVjdCBhbHJlYWR5IGV4aXN0cyBmb3IgdGhhdCBrZXkgdGhlbiBpdCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlCisgICAgIG5ldyBvYmplY3QgYW5kIHRoZSBvbGQgb25lIHdpbGwgYmUgZnJlZWQgYXV0b21hdGljYWxseS4KKworICAgICBUaGUgaW5kZXhfa2V5IGFyZ3VtZW50IHNob3VsZCBob2xkIGluZGV4IGtleSBpbmZvcm1hdGlvbiBhbmQgaXMKKyAgICAgcGFzc2VkIHRvIHRoZSBtZXRob2RzIGluIHRoZSBvcHMgdGFibGUgd2hlbiB0aGV5IGFyZSBjYWxsZWQuCisKKyAgICAgVGhpcyBmdW5jdGlvbiBtYWtlcyBubyBhbHRlcmF0aW9uIHRvIHRoZSBhcnJheSBpdHNlbGYsIGJ1dCByYXRoZXIgcmV0dXJucworICAgICBhbiBlZGl0IHNjcmlwdCB0aGF0IG11c3QgYmUgYXBwbGllZC4gIC1FTk9NRU0gaXMgcmV0dXJuZWQgaW4gdGhlIGNhc2Ugb2YKKyAgICAgYW4gb3V0LW9mLW1lbW9yeSBlcnJvci4KKworICAgICBUaGUgY2FsbGVyIHNob3VsZCBsb2NrIGV4Y2x1c2l2ZWx5IGFnYWluc3Qgb3RoZXIgbW9kaWZpZXJzIG9mIHRoZSBhcnJheS4KKworCisgKDMpIERlbGV0ZSBhbiBvYmplY3QgZnJvbSBhbiBhc3NvY2lhdGl2ZSBhcnJheS4KKworCXN0cnVjdCBhc3NvY19hcnJheV9lZGl0ICoKKwlhc3NvY19hcnJheV9kZWxldGUoc3RydWN0IGFzc29jX2FycmF5ICphcnJheSwKKwkJCSAgIGNvbnN0IHN0cnVjdCBhc3NvY19hcnJheV9vcHMgKm9wcywKKwkJCSAgIGNvbnN0IHZvaWQgKmluZGV4X2tleSk7CisKKyAgICAgVGhpcyBkZWxldGVzIGFuIG9iamVjdCB0aGF0IG1hdGNoZXMgdGhlIHNwZWNpZmllZCBkYXRhIGZyb20gdGhlIGFycmF5LgorCisgICAgIFRoZSBpbmRleF9rZXkgYXJndW1lbnQgc2hvdWxkIGhvbGQgaW5kZXgga2V5IGluZm9ybWF0aW9uIGFuZCBpcworICAgICBwYXNzZWQgdG8gdGhlIG1ldGhvZHMgaW4gdGhlIG9wcyB0YWJsZSB3aGVuIHRoZXkgYXJlIGNhbGxlZC4KKworICAgICBUaGlzIGZ1bmN0aW9uIG1ha2VzIG5vIGFsdGVyYXRpb24gdG8gdGhlIGFycmF5IGl0c2VsZiwgYnV0IHJhdGhlciByZXR1cm5zCisgICAgIGFuIGVkaXQgc2NyaXB0IHRoYXQgbXVzdCBiZSBhcHBsaWVkLiAgLUVOT01FTSBpcyByZXR1cm5lZCBpbiB0aGUgY2FzZSBvZgorICAgICBhbiBvdXQtb2YtbWVtb3J5IGVycm9yLiAgTlVMTCB3aWxsIGJlIHJldHVybmVkIGlmIHRoZSBzcGVjaWZpZWQgb2JqZWN0IGlzCisgICAgIG5vdCBmb3VuZCB3aXRoaW4gdGhlIGFycmF5LgorCisgICAgIFRoZSBjYWxsZXIgc2hvdWxkIGxvY2sgZXhjbHVzaXZlbHkgYWdhaW5zdCBvdGhlciBtb2RpZmllcnMgb2YgdGhlIGFycmF5LgorCisKKyAoNCkgRGVsZXRlIGFsbCBvYmplY3RzIGZyb20gYW4gYXNzb2NpYXRpdmUgYXJyYXkuCisKKwlzdHJ1Y3QgYXNzb2NfYXJyYXlfZWRpdCAqCisJYXNzb2NfYXJyYXlfY2xlYXIoc3RydWN0IGFzc29jX2FycmF5ICphcnJheSwKKwkJCSAgY29uc3Qgc3RydWN0IGFzc29jX2FycmF5X29wcyAqb3BzKTsKKworICAgICBUaGlzIGRlbGV0ZXMgYWxsIHRoZSBvYmplY3RzIGZyb20gYW4gYXNzb2NpYXRpdmUgYXJyYXkgYW5kIGxlYXZlcyBpdAorICAgICBjb21wbGV0ZWx5IGVtcHR5LgorCisgICAgIFRoaXMgZnVuY3Rpb24gbWFrZXMgbm8gYWx0ZXJhdGlvbiB0byB0aGUgYXJyYXkgaXRzZWxmLCBidXQgcmF0aGVyIHJldHVybnMKKyAgICAgYW4gZWRpdCBzY3JpcHQgdGhhdCBtdXN0IGJlIGFwcGxpZWQuICAtRU5PTUVNIGlzIHJldHVybmVkIGluIHRoZSBjYXNlIG9mCisgICAgIGFuIG91dC1vZi1tZW1vcnkgZXJyb3IuCisKKyAgICAgVGhlIGNhbGxlciBzaG91bGQgbG9jayBleGNsdXNpdmVseSBhZ2FpbnN0IG90aGVyIG1vZGlmaWVycyBvZiB0aGUgYXJyYXkuCisKKworICg1KSBEZXN0cm95IGFuIGFzc29jaWF0aXZlIGFycmF5LCBkZWxldGluZyBhbGwgb2JqZWN0cy4KKworCXZvaWQgYXNzb2NfYXJyYXlfZGVzdHJveShzdHJ1Y3QgYXNzb2NfYXJyYXkgKmFycmF5LAorCQkJCSBjb25zdCBzdHJ1Y3QgYXNzb2NfYXJyYXlfb3BzICpvcHMpOworCisgICAgIFRoaXMgZGVzdHJveXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBhc3NvY2lhdGl2ZSBhcnJheSBhbmQgbGVhdmVzIGl0CisgICAgIGNvbXBsZXRlbHkgZW1wdHkuICBJdCBpcyBub3QgcGVybWl0dGVkIGZvciBhbm90aGVyIHRocmVhZCB0byBiZSB0cmF2ZXJzaW5nCisgICAgIHRoZSBhcnJheSB1bmRlciB0aGUgUkNVIHJlYWQgbG9jayBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoaXMgZnVuY3Rpb24gaXMKKyAgICAgZGVzdHJveWluZyBpdCBhcyBubyBSQ1UgZGVmZXJyYWwgaXMgcGVyZm9ybWVkIG9uIG1lbW9yeSByZWxlYXNlIC0KKyAgICAgc29tZXRoaW5nIHRoYXQgd291bGQgcmVxdWlyZSBtZW1vcnkgdG8gYmUgYWxsb2NhdGVkLgorCisgICAgIFRoZSBjYWxsZXIgc2hvdWxkIGxvY2sgZXhjbHVzaXZlbHkgYWdhaW5zdCBvdGhlciBtb2RpZmllcnMgYW5kIGFjY2Vzc29ycworICAgICBvZiB0aGUgYXJyYXkuCisKKworICg2KSBHYXJiYWdlIGNvbGxlY3QgYW4gYXNzb2NpYXRpdmUgYXJyYXkuCisKKwlpbnQgYXNzb2NfYXJyYXlfZ2Moc3RydWN0IGFzc29jX2FycmF5ICphcnJheSwKKwkJCSAgIGNvbnN0IHN0cnVjdCBhc3NvY19hcnJheV9vcHMgKm9wcywKKwkJCSAgIGJvb2wgKCppdGVyYXRvcikodm9pZCAqb2JqZWN0LCB2b2lkICppdGVyYXRvcl9kYXRhKSwKKwkJCSAgIHZvaWQgKml0ZXJhdG9yX2RhdGEpOworCisgICAgIFRoaXMgaXRlcmF0ZXMgb3ZlciB0aGUgb2JqZWN0cyBpbiBhbiBhc3NvY2lhdGl2ZSBhcnJheSBhbmQgcGFzc2VzIGVhY2ggb25lCisgICAgIHRvIGl0ZXJhdG9yKCkuICBJZiBpdGVyYXRvcigpIHJldHVybnMgdHJ1ZSwgdGhlIG9iamVjdCBpcyBrZXB0LiAgSWYgaXQKKyAgICAgcmV0dXJucyBmYWxzZSwgdGhlIG9iamVjdCB3aWxsIGJlIGZyZWVkLiAgSWYgdGhlIGl0ZXJhdG9yKCkgZnVuY3Rpb24KKyAgICAgcmV0dXJucyB0cnVlLCBpdCBtdXN0IHBlcmZvcm0gYW55IGFwcHJvcHJpYXRlIHJlZmNvdW50IGluY3JlbWVudGluZyBvbiB0aGUKKyAgICAgb2JqZWN0IGJlZm9yZSByZXR1cm5pbmcuCisKKyAgICAgVGhlIGludGVybmFsIHRyZWUgd2lsbCBiZSBwYWNrZWQgZG93biBpZiBwb3NzaWJsZSBhcyBwYXJ0IG9mIHRoZSBpdGVyYXRpb24KKyAgICAgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2Ygbm9kZXMgaW4gaXQuCisKKyAgICAgVGhlIGl0ZXJhdG9yX2RhdGEgaXMgcGFzc2VkIGRpcmVjdGx5IHRvIGl0ZXJhdG9yKCkgYW5kIGlzIG90aGVyd2lzZQorICAgICBpZ25vcmVkIGJ5IHRoZSBmdW5jdGlvbi4KKworICAgICBUaGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gMCBpZiBzdWNjZXNzZnVsIGFuZCAtRU5PTUVNIGlmIHRoZXJlIHdhc24ndAorICAgICBlbm91Z2ggbWVtb3J5LgorCisgICAgIEl0IGlzIHBvc3NpYmxlIGZvciBvdGhlciB0aHJlYWRzIHRvIGl0ZXJhdGUgb3ZlciBvciBzZWFyY2ggdGhlIGFycmF5IHVuZGVyCisgICAgIHRoZSBSQ1UgcmVhZCBsb2NrIHdoaWxzdCB0aGlzIGZ1bmN0aW9uIGlzIGluIHByb2dyZXNzLiAgVGhlIGNhbGxlciBzaG91bGQKKyAgICAgbG9jayBleGNsdXNpdmVseSBhZ2FpbnN0IG90aGVyIG1vZGlmaWVycyBvZiB0aGUgYXJyYXkuCisKKworQUNDRVNTIEZVTkNUSU9OUworLS0tLS0tLS0tLS0tLS0tLQorCitUaGVyZSBhcmUgdHdvIGZ1bmN0aW9ucyBmb3IgYWNjZXNzaW5nIGFuIGFzc29jaWF0aXZlIGFycmF5OgorCisgKDEpIEl0ZXJhdGUgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gYW4gYXNzb2NpYXRpdmUgYXJyYXkuCisKKwlpbnQgYXNzb2NfYXJyYXlfaXRlcmF0ZShjb25zdCBzdHJ1Y3QgYXNzb2NfYXJyYXkgKmFycmF5LAorCQkJCWludCAoKml0ZXJhdG9yKShjb25zdCB2b2lkICpvYmplY3QsCisJCQkJCQl2b2lkICppdGVyYXRvcl9kYXRhKSwKKwkJCQl2b2lkICppdGVyYXRvcl9kYXRhKTsKKworICAgICBUaGlzIHBhc3NlcyBlYWNoIG9iamVjdCBpbiB0aGUgYXJyYXkgdG8gdGhlIGl0ZXJhdG9yIGNhbGxiYWNrIGZ1bmN0aW9uLgorICAgICBpdGVyYXRvcl9kYXRhIGlzIHByaXZhdGUgZGF0YSBmb3IgdGhhdCBmdW5jdGlvbi4KKworICAgICBUaGlzIG1heSBiZSB1c2VkIG9uIGFuIGFycmF5IGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlIGFycmF5IGlzIGJlaW5nCisgICAgIG1vZGlmaWVkLCBwcm92aWRlZCB0aGUgUkNVIHJlYWQgbG9jayBpcyBoZWxkLiAgVW5kZXIgc3VjaCBjaXJjdW1zdGFuY2VzLAorICAgICBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIGl0ZXJhdGlvbiBmdW5jdGlvbiB0byBzZWUgc29tZSBvYmplY3RzIHR3aWNlLiAgSWYKKyAgICAgdGhpcyBpcyBhIHByb2JsZW0sIHRoZW4gbW9kaWZpY2F0aW9uIHNob3VsZCBiZSBsb2NrZWQgYWdhaW5zdC4gIFRoZQorICAgICBpdGVyYXRpb24gYWxnb3JpdGhtIHNob3VsZCBub3QsIGhvd2V2ZXIsIG1pc3MgYW55IG9iamVjdHMuCisKKyAgICAgVGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIDAgaWYgbm8gb2JqZWN0cyB3ZXJlIGluIHRoZSBhcnJheSBvciBlbHNlIGl0IHdpbGwKKyAgICAgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgaXRlcmF0b3IgZnVuY3Rpb24gY2FsbGVkLiAgSXRlcmF0aW9uIHN0b3BzCisgICAgIGltbWVkaWF0ZWx5IGlmIGFueSBjYWxsIHRvIHRoZSBpdGVyYXRpb24gZnVuY3Rpb24gcmVzdWx0cyBpbiBhIG5vbi16ZXJvCisgICAgIHJldHVybi4KKworCisgKDIpIEZpbmQgYW4gb2JqZWN0IGluIGFuIGFzc29jaWF0aXZlIGFycmF5LgorCisJdm9pZCAqYXNzb2NfYXJyYXlfZmluZChjb25zdCBzdHJ1Y3QgYXNzb2NfYXJyYXkgKmFycmF5LAorCQkJICAgICAgIGNvbnN0IHN0cnVjdCBhc3NvY19hcnJheV9vcHMgKm9wcywKKwkJCSAgICAgICBjb25zdCB2b2lkICppbmRleF9rZXkpOworCisgICAgIFRoaXMgd2Fsa3MgdGhyb3VnaCB0aGUgYXJyYXkncyBpbnRlcm5hbCB0cmVlIGRpcmVjdGx5IHRvIHRoZSBvYmplY3QKKyAgICAgc3BlY2lmaWVkIGJ5IHRoZSBpbmRleCBrZXkuLgorCisgICAgIFRoaXMgbWF5IGJlIHVzZWQgb24gYW4gYXJyYXkgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgYXJyYXkgaXMgYmVpbmcKKyAgICAgbW9kaWZpZWQsIHByb3ZpZGVkIHRoZSBSQ1UgcmVhZCBsb2NrIGlzIGhlbGQuCisKKyAgICAgVGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSBvYmplY3QgaWYgZm91bmQgKGFuZCBzZXQgKl90eXBlIHRvIHRoZSBvYmplY3QKKyAgICAgdHlwZSkgb3Igd2lsbCByZXR1cm4gTlVMTCBpZiB0aGUgb2JqZWN0IHdhcyBub3QgZm91bmQuCisKKworSU5ERVggS0VZIEZPUk0KKy0tLS0tLS0tLS0tLS0tCisKK1RoZSBpbmRleCBrZXkgY2FuIGJlIG9mIGFueSBmb3JtLCBidXQgc2luY2UgdGhlIGFsZ29yaXRobXMgYXJlbid0IHRvbGQgaG93IGxvbmcKK3RoZSBrZXkgaXMsIGl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgdGhlIGluZGV4IGtleSBpbmNsdWRlcyBpdHMgbGVuZ3RoCit2ZXJ5IGVhcmx5IG9uIGJlZm9yZSBhbnkgdmFyaWF0aW9uIGR1ZSB0byB0aGUgbGVuZ3RoIHdvdWxkIGhhdmUgYW4gZWZmZWN0IG9uCitjb21wYXJpc29ucy4KKworVGhpcyB3aWxsIGNhdXNlIGxlYXZlcyB3aXRoIGRpZmZlcmVudCBsZW5ndGgga2V5cyB0byBzY2F0dGVyIGF3YXkgZnJvbSBlYWNoCitvdGhlciAtIGFuZCB0aG9zZSB3aXRoIHRoZSBzYW1lIGxlbmd0aCBrZXlzIHRvIGNsdXN0ZXIgdG9nZXRoZXIuCisKK0l0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCB0aGUgaW5kZXgga2V5IGJlZ2luIHdpdGggYSBoYXNoIG9mIHRoZSByZXN0IG9mIHRoZQora2V5IHRvIG1heGltaXNlIHNjYXR0ZXJpbmcgdGhyb3VnaG91dCBrZXlzcGFjZS4KKworVGhlIGJldHRlciB0aGUgc2NhdHRlcmluZywgdGhlIHdpZGVyIGFuZCBsb3dlciB0aGUgaW50ZXJuYWwgdHJlZSB3aWxsIGJlLgorCitQb29yIHNjYXR0ZXJpbmcgaXNuJ3QgdG9vIG11Y2ggb2YgYSBwcm9ibGVtIGFzIHRoZXJlIGFyZSBzaG9ydGN1dHMgYW5kIG5vZGVzCitjYW4gY29udGFpbiBtaXh0dXJlcyBvZiBsZWF2ZXMgYW5kIG1ldGFkYXRhIHBvaW50ZXJzLgorCitUaGUgaW5kZXgga2V5IGlzIHJlYWQgaW4gY2h1bmtzIG9mIG1hY2hpbmUgd29yZC4gIEVhY2ggY2h1bmsgaXMgc3ViZGl2aWRlZCBpbnRvCitvbmUgbmliYmxlICg0IGJpdHMpIHBlciBsZXZlbCwgc28gb24gYSAzMi1iaXQgQ1BVIHRoaXMgaXMgZ29vZCBmb3IgOCBsZXZlbHMgYW5kCitvbiBhIDY0LWJpdCBDUFUsIDE2IGxldmVscy4gIFVubGVzcyB0aGUgc2NhdHRlcmluZyBpcyByZWFsbHkgcG9vciwgaXQgaXMKK3VubGlrZWx5IHRoYXQgbW9yZSB0aGFuIG9uZSB3b3JkIG9mIGFueSBwYXJ0aWN1bGFyIGluZGV4IGtleSB3aWxsIGhhdmUgdG8gYmUKK3VzZWQuCisKKworPT09PT09PT09PT09PT09PT0KK0lOVEVSTkFMIFdPUktJTkdTCis9PT09PT09PT09PT09PT09PQorCitUaGUgYXNzb2NpYXRpdmUgYXJyYXkgZGF0YSBzdHJ1Y3R1cmUgaGFzIGFuIGludGVybmFsIHRyZWUuICBUaGlzIHRyZWUgaXMKK2NvbnN0cnVjdGVkIG9mIHR3byB0eXBlcyBvZiBtZXRhZGF0YSBibG9ja3M6IG5vZGVzIGFuZCBzaG9ydGN1dHMuCisKK0Egbm9kZSBpcyBhbiBhcnJheSBvZiBzbG90cy4gIEVhY2ggc2xvdCBjYW4gY29udGFpbiBvbmUgb2YgZm91ciB0aGluZ3M6CisKKyAoKikgQSBOVUxMIHBvaW50ZXIsIGluZGljYXRpbmcgdGhhdCB0aGUgc2xvdCBpcyBlbXB0eS4KKworICgqKSBBIHBvaW50ZXIgdG8gYW4gb2JqZWN0IChhIGxlYWYpLgorCisgKCopIEEgcG9pbnRlciB0byBhIG5vZGUgYXQgdGhlIG5leHQgbGV2ZWwuCisKKyAoKikgQSBwb2ludGVyIHRvIGEgc2hvcnRjdXQuCisKKworQkFTSUMgSU5URVJOQUwgVFJFRSBMQVlPVVQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lnbm9yaW5nIHNob3J0Y3V0cyBmb3IgdGhlIG1vbWVudCwgdGhlIG5vZGVzIGZvcm0gYSBtdWx0aWxldmVsIHRyZWUuICBUaGUgaW5kZXgKK2tleSBzcGFjZSBpcyBzdHJpY3RseSBzdWJkaXZpZGVkIGJ5IHRoZSBub2RlcyBpbiB0aGUgdHJlZSBhbmQgbm9kZXMgb2NjdXIgb24KK2ZpeGVkIGxldmVscy4gIEZvciBleGFtcGxlOgorCisgTGV2ZWw6CTAJCTEJCTIJCTMKKwk9PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PQk9PT09PT09PT09PT09PT0KKwkJCQkJCQlOT0RFIEQKKwkJCU5PREUgQgkJTk9ERSBDCSstLS0tLS0+Ky0tLSsKKwkJKy0tLS0tLT4rLS0tKwkrLS0tLS0tPistLS0rCXwJfCAwIHwKKwlOT0RFIEEJfAl8IDAgfAl8CXwgMCB8CXwJKy0tLSsKKwkrLS0tKwl8CSstLS0rCXwJKy0tLSsJfAk6ICAgOgorCXwgMCB8CXwJOiAgIDoJfAk6ICAgOgl8CSstLS0rCisJKy0tLSsJfAkrLS0tKwl8CSstLS0rCXwJfCBmIHwKKwl8IDEgfC0tLSsJfCAzIHwtLS0rCXwgNyB8LS0tKwkrLS0tKworCSstLS0rCQkrLS0tKwkJKy0tLSsKKwk6ICAgOgkJOiAgIDoJCXwgOCB8LS0tKworCSstLS0rCQkrLS0tKwkJKy0tLSsJfAlOT0RFIEUKKwl8IGUgfC0tLSsJfCBmIHwJCTogICA6ICAgKy0tLS0tLT4rLS0tKworCSstLS0rCXwJKy0tLSsJCSstLS0rCQl8IDAgfAorCXwgZiB8CXwJCQl8IGYgfAkJKy0tLSsKKwkrLS0tKwl8CQkJKy0tLSsJCTogICA6CisJCXwJTk9ERSBGCQkJCSstLS0rCisJCSstLS0tLS0+Ky0tLSsJCQkJfCBmIHwKKwkJCXwgMCB8CQlOT0RFIEcJCSstLS0rCisJCQkrLS0tKwkrLS0tLS0tPistLS0rCisJCQk6ICAgOgl8CXwgMCB8CisJCQkrLS0tKwl8CSstLS0rCisJCQl8IDYgfC0tLSsJOiAgIDoKKwkJCSstLS0rCQkrLS0tKworCQkJOiAgIDoJCXwgZiB8CisJCQkrLS0tKwkJKy0tLSsKKwkJCXwgZiB8CisJCQkrLS0tKworCitJbiB0aGUgYWJvdmUgZXhhbXBsZSwgdGhlcmUgYXJlIDcgbm9kZXMgKEEtRyksIGVhY2ggd2l0aCAxNiBzbG90cyAoMC1mKS4KK0Fzc3VtaW5nIG5vIG90aGVyIG1ldGEgZGF0YSBub2RlcyBpbiB0aGUgdHJlZSwgdGhlIGtleSBzcGFjZSBpcyBkaXZpZGVkIHRodXNseToKKworCUtFWSBQUkVGSVgJTk9ERQorCT09PT09PT09PT0JPT09PQorCTEzNyoJCUQKKwkxMzgqCQlFCisJMTNbMC02OS1mXSoJQworCTFbMC0yNC1mXSoJQgorCWU2KgkJRworCWVbMC01Ny1mXSoJRgorCVswMi1kZl0qCUEKKworU28sIGZvciBpbnN0YW5jZSwga2V5cyB3aXRoIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSBpbmRleCBrZXlzIHdpbGwgYmUgZm91bmQgaW4KK3RoZSBhcHByb3ByaWF0ZSBub2RlczoKKworCUlOREVYIEtFWQlQUkVGSVgJTk9ERQorCT09PT09PT09PT09PT09PQk9PT09PT09CT09PT0KKwkxMzY5NDg5Mjg5MjQ4OQkxMwlDCisJMTM3OTUyODkwMjU4OTcJMTM3CUQKKwkxMzg4OWRkZTg4NzkzCTEzOAlFCisJMTM4YmJiODkwMDMwOTMJMTM4CUUKKwkxMzk0ODc5NTI0Nzg5CTEyCUMKKwkxNDU4OTUyNDg5CTEJQgorCTk0MzE4MDlkZTk5M2JhCS0JQQorCWI0NTQyOTEwODA5Y2QJLQlBCisJZTUyODQzMTBkZWY5OAllCUYKKwllNjg0Mjg5NzQyMzcJZTYJRworCWU3ZmZmY2JkNDQzCWUJRgorCWYzODQyMjM5MDgyCS0JQQorCitUbyBzYXZlIG1lbW9yeSwgaWYgYSBub2RlIGNhbiBob2xkIGFsbCB0aGUgbGVhdmVzIGluIGl0cyBwb3J0aW9uIG9mIGtleXNwYWNlLAordGhlbiB0aGUgbm9kZSB3aWxsIGhhdmUgYWxsIHRob3NlIGxlYXZlcyBpbiBpdCBhbmQgd2lsbCBub3QgaGF2ZSBhbnkgbWV0YWRhdGEKK3BvaW50ZXJzIC0gZXZlbiBpZiBzb21lIG9mIHRob3NlIGxlYXZlcyB3b3VsZCBsaWtlIHRvIGJlIGluIHRoZSBzYW1lIHNsb3QuCisKK0Egbm9kZSBjYW4gY29udGFpbiBhIGhldGVyb2dlbmVvdXMgbWl4IG9mIGxlYXZlcyBhbmQgbWV0YWRhdGEgcG9pbnRlcnMuCitNZXRhZGF0YSBwb2ludGVycyBtdXN0IGJlIGluIHRoZSBzbG90cyB0aGF0IG1hdGNoIHRoZWlyIHN1YmRpdmlzaW9ucyBvZiBrZXkKK3NwYWNlLiAgVGhlIGxlYXZlcyBjYW4gYmUgaW4gYW55IHNsb3Qgbm90IG9jY3VwaWVkIGJ5IGEgbWV0YWRhdGEgcG9pbnRlci4gIEl0CitpcyBndWFyYW50ZWVkIHRoYXQgbm9uZSBvZiB0aGUgbGVhdmVzIGluIGEgbm9kZSB3aWxsIG1hdGNoIGEgc2xvdCBvY2N1cGllZCBieSBhCittZXRhZGF0YSBwb2ludGVyLiAgSWYgdGhlIG1ldGFkYXRhIHBvaW50ZXIgaXMgdGhlcmUsIGFueSBsZWFmIHdob3NlIGtleSBtYXRjaGVzCit0aGUgbWV0YWRhdGEga2V5IHByZWZpeCBtdXN0IGJlIGluIHRoZSBzdWJ0cmVlIHRoYXQgdGhlIG1ldGFkYXRhIHBvaW50ZXIgcG9pbnRzCit0by4KKworSW4gdGhlIGFib3ZlIGV4YW1wbGUgbGlzdCBvZiBpbmRleCBrZXlzLCBub2RlIEEgd2lsbCBjb250YWluOgorCisJU0xPVAlDT05URU5UCQlJTkRFWCBLRVkgKFBSRUZJWCkKKwk9PT09CT09PT09PT09PT09PT09PQk9PT09PT09PT09PT09PT09PT0KKwkxCVBUUiBUTyBOT0RFIEIJMSoKKwlhbnkJTEVBRgkJOTQzMTgwOWRlOTkzYmEKKwlhbnkJTEVBRgkJYjQ1NDI5MTA4MDljZAorCWUJUFRSIFRPIE5PREUgRgllKgorCWFueQlMRUFGCQlmMzg0MjIzOTA4MgorCithbmQgbm9kZSBCOgorCisJMwlQVFIgVE8gTk9ERSBDCTEzKgorCWFueQlMRUFGCQkxNDU4OTUyNDg5CisKKworU0hPUlRDVVRTCistLS0tLS0tLS0KKworU2hvcnRjdXRzIGFyZSBtZXRhZGF0YSByZWNvcmRzIHRoYXQganVtcCBvdmVyIGEgcGllY2Ugb2Yga2V5c3BhY2UuICBBIHNob3J0Y3V0CitpcyBhIHJlcGxhY2VtZW50IGZvciBhIHNlcmllcyBvZiBzaW5nbGUtb2NjdXBhbmN5IG5vZGVzIGFzY2VuZGluZyB0aHJvdWdoIHRoZQorbGV2ZWxzLiAgU2hvcnRjdXRzIGV4aXN0IHRvIHNhdmUgbWVtb3J5IGFuZCB0byBzcGVlZCB1cCB0cmF2ZXJzYWwuCisKK0l0IGlzIHBvc3NpYmxlIGZvciB0aGUgcm9vdCBvZiB0aGUgdHJlZSB0byBiZSBhIHNob3J0Y3V0IC0gc2F5LCBmb3IgZXhhbXBsZSwKK3RoZSB0cmVlIGNvbnRhaW5zIGF0IGxlYXN0IDE3IG5vZGVzIGFsbCB3aXRoIGtleSBwcmVmaXggJzExMTEnLiAgVGhlIGluc2VydGlvbgorYWxnb3JpdGhtIHdpbGwgaW5zZXJ0IGEgc2hvcnRjdXQgdG8gc2tpcCBvdmVyIHRoZSAnMTExMScga2V5c3BhY2UgaW4gYSBzaW5nbGUKK2JvdW5kIGFuZCBnZXQgdG8gdGhlIGZvdXJ0aCBsZXZlbCB3aGVyZSB0aGVzZSBhY3R1YWxseSBiZWNvbWUgZGlmZmVyZW50LgorCisKK1NQTElUVElORyBBTkQgQ09MTEFQU0lORyBOT0RFUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0VhY2ggbm9kZSBoYXMgYSBtYXhpbXVtIGNhcGFjaXR5IG9mIDE2IGxlYXZlcyBhbmQgbWV0YWRhdGEgcG9pbnRlcnMuICBJZiB0aGUKK2luc2VydGlvbiBhbGdvcml0aG0gZmluZHMgdGhhdCBpdCBpcyB0cnlpbmcgdG8gaW5zZXJ0IGEgMTd0aCBvYmplY3QgaW50byBhCitub2RlLCB0aGF0IG5vZGUgd2lsbCBiZSBzcGxpdCBzdWNoIHRoYXQgYXQgbGVhc3QgdHdvIGxlYXZlcyB0aGF0IGhhdmUgYSBjb21tb24KK2tleSBzZWdtZW50IGF0IHRoYXQgbGV2ZWwgZW5kIHVwIGluIGEgc2VwYXJhdGUgbm9kZSByb290ZWQgb24gdGhhdCBzbG90IGZvcgordGhhdCBjb21tb24ga2V5IHNlZ21lbnQuCisKK0lmIHRoZSBsZWF2ZXMgaW4gYSBmdWxsIG5vZGUgYW5kIHRoZSBsZWFmIHRoYXQgaXMgYmVpbmcgaW5zZXJ0ZWQgYXJlCitzdWZmaWNpZW50bHkgc2ltaWxhciwgdGhlbiBhIHNob3J0Y3V0IHdpbGwgYmUgaW5zZXJ0ZWQgaW50byB0aGUgdHJlZS4KKworV2hlbiB0aGUgbnVtYmVyIG9mIG9iamVjdHMgaW4gdGhlIHN1YnRyZWUgcm9vdGVkIGF0IGEgbm9kZSBmYWxscyB0byAxNiBvcgorZmV3ZXIsIHRoZW4gdGhlIHN1YnRyZWUgd2lsbCBiZSBjb2xsYXBzZWQgZG93biB0byBhIHNpbmdsZSBub2RlIC0gYW5kIHRoaXMgd2lsbAorcmlwcGxlIHRvd2FyZHMgdGhlIHJvb3QgaWYgcG9zc2libGUuCisKKworTk9OLVJFQ1VSU0lWRSBJVEVSQVRJT04KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0VhY2ggbm9kZSBhbmQgc2hvcnRjdXQgY29udGFpbnMgYSBiYWNrIHBvaW50ZXIgdG8gaXRzIHBhcmVudCBhbmQgdGhlIG51bWJlciBvZgorc2xvdCBpbiB0aGF0IHBhcmVudCB0aGF0IHBvaW50cyB0byBpdC4gIE5vbmUtcmVjdXJzaXZlIGl0ZXJhdGlvbiB1c2VzIHRoZXNlIHRvCitwcm9jZWVkIHJvb3R3YXJkcyB0aHJvdWdoIHRoZSB0cmVlLCBnb2luZyB0byB0aGUgcGFyZW50IG5vZGUsIHNsb3QgTiArIDEgdG8KK21ha2Ugc3VyZSBwcm9ncmVzcyBpcyBtYWRlIHdpdGhvdXQgdGhlIG5lZWQgZm9yIGEgc3RhY2suCisKK1RoZSBiYWNrcG9pbnRlcnMsIGhvd2V2ZXIsIG1ha2Ugc2ltdWx0YW5lb3VzIGFsdGVyYXRpb24gYW5kIGl0ZXJhdGlvbiB0cmlja3kuCisKKworU0lNVUxUQU5FT1VTIEFMVEVSQVRJT04gQU5EIElURVJBVElPTgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGVyZSBhcmUgYSBudW1iZXIgb2YgY2FzZXMgdG8gY29uc2lkZXI6CisKKyAoMSkgU2ltcGxlIGluc2VydC9yZXBsYWNlLiAgVGhpcyBpbnZvbHZlcyBzaW1wbHkgcmVwbGFjaW5nIGEgTlVMTCBvciBvbGQKKyAgICAgbWF0Y2hpbmcgbGVhZiBwb2ludGVyIHdpdGggdGhlIHBvaW50ZXIgdG8gdGhlIG5ldyBsZWFmIGFmdGVyIGEgYmFycmllci4KKyAgICAgVGhlIG1ldGFkYXRhIGJsb2NrcyBkb24ndCBjaGFuZ2Ugb3RoZXJ3aXNlLiAgQW4gb2xkIGxlYWYgd29uJ3QgYmUgZnJlZWQKKyAgICAgdW50aWwgYWZ0ZXIgdGhlIFJDVSBncmFjZSBwZXJpb2QuCisKKyAoMikgU2ltcGxlIGRlbGV0ZS4gIFRoaXMgaW52b2x2ZXMganVzdCBjbGVhcmluZyBhbiBvbGQgbWF0Y2hpbmcgbGVhZi4gIFRoZQorICAgICBtZXRhZGF0YSBibG9ja3MgZG9uJ3QgY2hhbmdlIG90aGVyd2lzZS4gIFRoZSBvbGQgbGVhZiB3b24ndCBiZSBmcmVlZCB1bnRpbAorICAgICBhZnRlciB0aGUgUkNVIGdyYWNlIHBlcmlvZC4KKworICgzKSBJbnNlcnRpb24gcmVwbGFjaW5nIHBhcnQgb2YgYSBzdWJ0cmVlIHRoYXQgd2UgaGF2ZW4ndCB5ZXQgZW50ZXJlZC4gIFRoaXMKKyAgICAgbWF5IGludm9sdmUgcmVwbGFjZW1lbnQgb2YgcGFydCBvZiB0aGF0IHN1YnRyZWUgLSBidXQgdGhhdCB3b24ndCBhZmZlY3QKKyAgICAgdGhlIGl0ZXJhdGlvbiBhcyB3ZSB3b24ndCBoYXZlIHJlYWNoZWQgdGhlIHBvaW50ZXIgdG8gaXQgeWV0IGFuZCB0aGUKKyAgICAgYW5jZXN0cnkgYmxvY2tzIGFyZSBub3QgcmVwbGFjZWQgKHRoZSBsYXlvdXQgb2YgdGhvc2UgZG9lcyBub3QgY2hhbmdlKS4KKworICg0KSBJbnNlcnRpb24gcmVwbGFjaW5nIG5vZGVzIHRoYXQgd2UncmUgYWN0aXZlbHkgcHJvY2Vzc2luZy4gIFRoaXMgaXNuJ3QgYQorICAgICBwcm9ibGVtIGFzIHdlJ3ZlIHBhc3NlZCB0aGUgYW5jaG9yaW5nIHBvaW50ZXIgYW5kIHdvbid0IHN3aXRjaCBvbnRvIHRoZQorICAgICBuZXcgbGF5b3V0IHVudGlsIHdlIGZvbGxvdyB0aGUgYmFjayBwb2ludGVycyAtIGF0IHdoaWNoIHBvaW50IHdlJ3ZlCisgICAgIGFscmVhZHkgZXhhbWluZWQgdGhlIGxlYXZlcyBpbiB0aGUgcmVwbGFjZWQgbm9kZSAod2UgaXRlcmF0ZSBvdmVyIGFsbCB0aGUKKyAgICAgbGVhdmVzIGluIGEgbm9kZSBiZWZvcmUgZm9sbG93aW5nIGFueSBvZiBpdHMgbWV0YWRhdGEgcG9pbnRlcnMpLgorCisgICAgIFdlIG1pZ2h0LCBob3dldmVyLCByZS1zZWUgc29tZSBsZWF2ZXMgdGhhdCBoYXZlIGJlZW4gc3BsaXQgb3V0IGludG8gYSBuZXcKKyAgICAgYnJhbmNoIHRoYXQncyBpbiBhIHNsb3QgZnVydGhlciBhbG9uZyB0aGFuIHdlIHdlcmUgYXQuCisKKyAoNSkgSW5zZXJ0aW9uIHJlcGxhY2luZyBub2RlcyB0aGF0IHdlJ3JlIHByb2Nlc3NpbmcgYSBkZXBlbmRlbnQgYnJhbmNoIG9mLgorICAgICBUaGlzIHdvbid0IGFmZmVjdCB1cyB1bnRpbCB3ZSBmb2xsb3cgdGhlIGJhY2sgcG9pbnRlcnMuICBTaW1pbGFyIHRvICg0KS4KKworICg2KSBEZWxldGlvbiBjb2xsYXBzaW5nIGEgYnJhbmNoIHVuZGVyIHVzLiAgVGhpcyBkb2Vzbid0IGFmZmVjdCB1cyBiZWNhdXNlIHRoZQorICAgICBiYWNrIHBvaW50ZXJzIHdpbGwgZ2V0IHVzIGJhY2sgdG8gdGhlIHBhcmVudCBvZiB0aGUgbmV3IG5vZGUgYmVmb3JlIHdlCisgICAgIGNvdWxkIHNlZSB0aGUgbmV3IG5vZGUuICBUaGUgZW50aXJlIGNvbGxhcHNlZCBzdWJ0cmVlIGlzIHRocm93biBhd2F5CisgICAgIHVuY2hhbmdlZCAtIGFuZCB3aWxsIHN0aWxsIGJlIHJvb3RlZCBvbiB0aGUgc2FtZSBzbG90LCBzbyB3ZSBzaG91bGRuJ3QKKyAgICAgcHJvY2VzcyBpdCBhIHNlY29uZCB0aW1lIGFzIHdlJ2xsIGdvIGJhY2sgdG8gc2xvdCArIDEuCisKK05vdGU6CisKKyAoKikgVW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzLCB3ZSBuZWVkIHRvIHNpbXVsdGFuZW91c2x5IGNoYW5nZSB0aGUgcGFyZW50CisgICAgIHBvaW50ZXIgYW5kIHRoZSBwYXJlbnQgc2xvdCBwb2ludGVyIG9uIGEgbm9kZSAoc2F5LCBmb3IgZXhhbXBsZSwgd2UKKyAgICAgaW5zZXJ0ZWQgYW5vdGhlciBub2RlIGJlZm9yZSBpdCBhbmQgbW92ZWQgaXQgdXAgYSBsZXZlbCkuICBXZSBjYW5ub3QgZG8KKyAgICAgdGhpcyB3aXRob3V0IGxvY2tpbmcgYWdhaW5zdCBhIHJlYWQgLSBzbyB3ZSBoYXZlIHRvIHJlcGxhY2UgdGhhdCBub2RlIHRvby4KKworICAgICBIb3dldmVyLCB3aGVuIHdlJ3JlIGNoYW5naW5nIGEgc2hvcnRjdXQgaW50byBhIG5vZGUgdGhpcyBpc24ndCBhIHByb2JsZW0KKyAgICAgYXMgc2hvcnRjdXRzIG9ubHkgaGF2ZSBvbmUgc2xvdCBhbmQgc28gdGhlIHBhcmVudCBzbG90IG51bWJlciBpc24ndCB1c2VkCisgICAgIHdoZW4gdHJhdmVyc2luZyBiYWNrd2FyZHMgb3ZlciBvbmUuICBUaGlzIG1lYW5zIHRoYXQgaXQncyBva2F5IHRvIGNoYW5nZQorICAgICB0aGUgc2xvdCBudW1iZXIgZmlyc3QgLSBwcm92aWRlZCBzdWl0YWJsZSBiYXJyaWVycyBhcmUgdXNlZCB0byBtYWtlIHN1cmUKKyAgICAgdGhlIHBhcmVudCBzbG90IG51bWJlciBpcyByZWFkIGFmdGVyIHRoZSBiYWNrIHBvaW50ZXIuCisKK09ic29sZXRlIGJsb2NrcyBhbmQgbGVhdmVzIGFyZSBmcmVlZCB1cCBhZnRlciBhbiBSQ1UgZ3JhY2UgcGVyaW9kIGhhcyBwYXNzZWQsCitzbyBhcyBsb25nIGFzIGFueW9uZSBkb2luZyB3YWxraW5nIG9yIGl0ZXJhdGlvbiBob2xkcyB0aGUgUkNVIHJlYWQgbG9jaywgdGhlCitvbGQgc3VwZXJzdHJ1Y3R1cmUgc2hvdWxkIG5vdCBnbyBhd2F5IG9uIHRoZW0uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2F0b21pY19vcHMudHh0IGIvRG9jdW1lbnRhdGlvbi9hdG9taWNfb3BzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWQxY2FjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hdG9taWNfb3BzLnR4dApAQCAtMCwwICsxLDY0MCBAQAorCQlTZW1hbnRpY3MgYW5kIEJlaGF2aW9yIG9mIEF0b21pYyBhbmQKKwkJICAgICAgICAgQml0bWFzayBPcGVyYXRpb25zCisKKwkJCSAgRGF2aWQgUy4gTWlsbGVyCSAKKworCVRoaXMgZG9jdW1lbnQgaXMgaW50ZW5kZWQgdG8gc2VydmUgYXMgYSBndWlkZSB0byBMaW51eCBwb3J0CittYWludGFpbmVycyBvbiBob3cgdG8gaW1wbGVtZW50IGF0b21pYyBjb3VudGVyLCBiaXRvcHMsIGFuZCBzcGlubG9jaworaW50ZXJmYWNlcyBwcm9wZXJseS4KKworCVRoZSBhdG9taWNfdCB0eXBlIHNob3VsZCBiZSBkZWZpbmVkIGFzIGEgc2lnbmVkIGludGVnZXIgYW5kCit0aGUgYXRvbWljX2xvbmdfdCB0eXBlIGFzIGEgc2lnbmVkIGxvbmcgaW50ZWdlci4gIEFsc28sIHRoZXkgc2hvdWxkCitiZSBtYWRlIG9wYXF1ZSBzdWNoIHRoYXQgYW55IGtpbmQgb2YgY2FzdCB0byBhIG5vcm1hbCBDIGludGVnZXIgdHlwZQord2lsbCBmYWlsLiAgU29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZyBzaG91bGQgc3VmZmljZToKKworCXR5cGVkZWYgc3RydWN0IHsgaW50IGNvdW50ZXI7IH0gYXRvbWljX3Q7CisJdHlwZWRlZiBzdHJ1Y3QgeyBsb25nIGNvdW50ZXI7IH0gYXRvbWljX2xvbmdfdDsKKworSGlzdG9yaWNhbGx5LCBjb3VudGVyIGhhcyBiZWVuIGRlY2xhcmVkIHZvbGF0aWxlLiAgVGhpcyBpcyBub3cgZGlzY291cmFnZWQuCitTZWUgRG9jdW1lbnRhdGlvbi92b2xhdGlsZS1jb25zaWRlcmVkLWhhcm1mdWwudHh0IGZvciB0aGUgY29tcGxldGUgcmF0aW9uYWxlLgorCitsb2NhbF90IGlzIHZlcnkgc2ltaWxhciB0byBhdG9taWNfdC4gSWYgdGhlIGNvdW50ZXIgaXMgcGVyIENQVSBhbmQgb25seQordXBkYXRlZCBieSBvbmUgQ1BVLCBsb2NhbF90IGlzIHByb2JhYmx5IG1vcmUgYXBwcm9wcmlhdGUuIFBsZWFzZSBzZWUKK0RvY3VtZW50YXRpb24vbG9jYWxfb3BzLnR4dCBmb3IgdGhlIHNlbWFudGljcyBvZiBsb2NhbF90LgorCitUaGUgZmlyc3Qgb3BlcmF0aW9ucyB0byBpbXBsZW1lbnQgZm9yIGF0b21pY190J3MgYXJlIHRoZSBpbml0aWFsaXplcnMgYW5kCitwbGFpbiByZWFkcy4KKworCSNkZWZpbmUgQVRPTUlDX0lOSVQoaSkJCXsgKGkpIH0KKwkjZGVmaW5lIGF0b21pY19zZXQodiwgaSkJKCh2KS0+Y291bnRlciA9IChpKSkKKworVGhlIGZpcnN0IG1hY3JvIGlzIHVzZWQgaW4gZGVmaW5pdGlvbnMsIHN1Y2ggYXM6CisKK3N0YXRpYyBhdG9taWNfdCBteV9jb3VudGVyID0gQVRPTUlDX0lOSVQoMSk7CisKK1RoZSBpbml0aWFsaXplciBpcyBhdG9taWMgaW4gdGhhdCB0aGUgcmV0dXJuIHZhbHVlcyBvZiB0aGUgYXRvbWljIG9wZXJhdGlvbnMKK2FyZSBndWFyYW50ZWVkIHRvIGJlIGNvcnJlY3QgcmVmbGVjdGluZyB0aGUgaW5pdGlhbGl6ZWQgdmFsdWUgaWYgdGhlCitpbml0aWFsaXplciBpcyB1c2VkIGJlZm9yZSBydW50aW1lLiAgSWYgdGhlIGluaXRpYWxpemVyIGlzIHVzZWQgYXQgcnVudGltZSwgYQorcHJvcGVyIGltcGxpY2l0IG9yIGV4cGxpY2l0IHJlYWQgbWVtb3J5IGJhcnJpZXIgaXMgbmVlZGVkIGJlZm9yZSByZWFkaW5nIHRoZQordmFsdWUgd2l0aCBhdG9taWNfcmVhZCBmcm9tIGFub3RoZXIgdGhyZWFkLgorCitBcyB3aXRoIGFsbCBvZiB0aGUgYXRvbWljXyBpbnRlcmZhY2VzLCByZXBsYWNlIHRoZSBsZWFkaW5nICJhdG9taWNfIgord2l0aCAiYXRvbWljX2xvbmdfIiB0byBvcGVyYXRlIG9uIGF0b21pY19sb25nX3QuCisKK1RoZSBzZWNvbmQgaW50ZXJmYWNlIGNhbiBiZSB1c2VkIGF0IHJ1bnRpbWUsIGFzIGluOgorCisJc3RydWN0IGZvbyB7IGF0b21pY190IGNvdW50ZXI7IH07CisJLi4uCisKKwlzdHJ1Y3QgZm9vICprOworCisJayA9IGttYWxsb2Moc2l6ZW9mKCprKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFrKQorCQlyZXR1cm4gLUVOT01FTTsKKwlhdG9taWNfc2V0KCZrLT5jb3VudGVyLCAwKTsKKworVGhlIHNldHRpbmcgaXMgYXRvbWljIGluIHRoYXQgdGhlIHJldHVybiB2YWx1ZXMgb2YgdGhlIGF0b21pYyBvcGVyYXRpb25zIGJ5CithbGwgdGhyZWFkcyBhcmUgZ3VhcmFudGVlZCB0byBiZSBjb3JyZWN0IHJlZmxlY3RpbmcgZWl0aGVyIHRoZSB2YWx1ZSB0aGF0IGhhcworYmVlbiBzZXQgd2l0aCB0aGlzIG9wZXJhdGlvbiBvciBzZXQgd2l0aCBhbm90aGVyIG9wZXJhdGlvbi4gIEEgcHJvcGVyIGltcGxpY2l0CitvciBleHBsaWNpdCBtZW1vcnkgYmFycmllciBpcyBuZWVkZWQgYmVmb3JlIHRoZSB2YWx1ZSBzZXQgd2l0aCB0aGUgb3BlcmF0aW9uCitpcyBndWFyYW50ZWVkIHRvIGJlIHJlYWRhYmxlIHdpdGggYXRvbWljX3JlYWQgZnJvbSBhbm90aGVyIHRocmVhZC4KKworTmV4dCwgd2UgaGF2ZToKKworCSNkZWZpbmUgYXRvbWljX3JlYWQodikJKCh2KS0+Y291bnRlcikKKword2hpY2ggc2ltcGx5IHJlYWRzIHRoZSBjb3VudGVyIHZhbHVlIGN1cnJlbnRseSB2aXNpYmxlIHRvIHRoZSBjYWxsaW5nIHRocmVhZC4KK1RoZSByZWFkIGlzIGF0b21pYyBpbiB0aGF0IHRoZSByZXR1cm4gdmFsdWUgaXMgZ3VhcmFudGVlZCB0byBiZSBvbmUgb2YgdGhlCit2YWx1ZXMgaW5pdGlhbGl6ZWQgb3IgbW9kaWZpZWQgd2l0aCB0aGUgaW50ZXJmYWNlIG9wZXJhdGlvbnMgaWYgYSBwcm9wZXIKK2ltcGxpY2l0IG9yIGV4cGxpY2l0IG1lbW9yeSBiYXJyaWVyIGlzIHVzZWQgYWZ0ZXIgcG9zc2libGUgcnVudGltZQoraW5pdGlhbGl6YXRpb24gYnkgYW55IG90aGVyIHRocmVhZCBhbmQgdGhlIHZhbHVlIGlzIG1vZGlmaWVkIG9ubHkgd2l0aCB0aGUKK2ludGVyZmFjZSBvcGVyYXRpb25zLiAgYXRvbWljX3JlYWQgZG9lcyBub3QgZ3VhcmFudGVlIHRoYXQgdGhlIHJ1bnRpbWUKK2luaXRpYWxpemF0aW9uIGJ5IGFueSBvdGhlciB0aHJlYWQgaXMgdmlzaWJsZSB5ZXQsIHNvIHRoZSB1c2VyIG9mIHRoZQoraW50ZXJmYWNlIG11c3QgdGFrZSBjYXJlIG9mIHRoYXQgd2l0aCBhIHByb3BlciBpbXBsaWNpdCBvciBleHBsaWNpdCBtZW1vcnkKK2JhcnJpZXIuCisKKyoqKiBXQVJOSU5HOiBhdG9taWNfcmVhZCgpIGFuZCBhdG9taWNfc2V0KCkgRE8gTk9UIElNUExZIEJBUlJJRVJTISAqKioKKworU29tZSBhcmNoaXRlY3R1cmVzIG1heSBjaG9vc2UgdG8gdXNlIHRoZSB2b2xhdGlsZSBrZXl3b3JkLCBiYXJyaWVycywgb3IgaW5saW5lCithc3NlbWJseSB0byBndWFyYW50ZWUgc29tZSBkZWdyZWUgb2YgaW1tZWRpYWN5IGZvciBhdG9taWNfcmVhZCgpIGFuZAorYXRvbWljX3NldCgpLiAgVGhpcyBpcyBub3QgdW5pZm9ybWx5IGd1YXJhbnRlZWQsIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUsCitzbyBhbGwgdXNlcnMgb2YgYXRvbWljX3Qgc2hvdWxkIHRyZWF0IGF0b21pY19yZWFkKCkgYW5kIGF0b21pY19zZXQoKSBhcyBzaW1wbGUKK0Mgc3RhdGVtZW50cyB0aGF0IG1heSBiZSByZW9yZGVyZWQgb3Igb3B0aW1pemVkIGF3YXkgZW50aXJlbHkgYnkgdGhlIGNvbXBpbGVyCitvciBwcm9jZXNzb3IsIGFuZCBleHBsaWNpdGx5IGludm9rZSB0aGUgYXBwcm9wcmlhdGUgY29tcGlsZXIgYW5kL29yIG1lbW9yeQorYmFycmllciBmb3IgZWFjaCB1c2UgY2FzZS4gIEZhaWx1cmUgdG8gZG8gc28gd2lsbCByZXN1bHQgaW4gY29kZSB0aGF0IG1heQorc3VkZGVubHkgYnJlYWsgd2hlbiB1c2VkIHdpdGggZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMgb3IgY29tcGlsZXIKK29wdGltaXphdGlvbnMsIG9yIGV2ZW4gY2hhbmdlcyBpbiB1bnJlbGF0ZWQgY29kZSB3aGljaCBjaGFuZ2VzIGhvdyB0aGUKK2NvbXBpbGVyIG9wdGltaXplcyB0aGUgc2VjdGlvbiBhY2Nlc3NpbmcgYXRvbWljX3QgdmFyaWFibGVzLgorCisqKiogWU9VIEhBVkUgQkVFTiBXQVJORUQhICoqKgorCitQcm9wZXJseSBhbGlnbmVkIHBvaW50ZXJzLCBsb25ncywgaW50cywgYW5kIGNoYXJzIChhbmQgdW5zaWduZWQKK2VxdWl2YWxlbnRzKSBtYXkgYmUgYXRvbWljYWxseSBsb2FkZWQgZnJvbSBhbmQgc3RvcmVkIHRvIGluIHRoZSBzYW1lCitzZW5zZSBhcyBkZXNjcmliZWQgZm9yIGF0b21pY19yZWFkKCkgYW5kIGF0b21pY19zZXQoKS4gIFRoZSBBQ0NFU1NfT05DRSgpCittYWNybyBzaG91bGQgYmUgdXNlZCB0byBwcmV2ZW50IHRoZSBjb21waWxlciBmcm9tIHVzaW5nIG9wdGltaXphdGlvbnMKK3RoYXQgbWlnaHQgb3RoZXJ3aXNlIG9wdGltaXplIGFjY2Vzc2VzIG91dCBvZiBleGlzdGVuY2Ugb24gdGhlIG9uZSBoYW5kLAorb3IgdGhhdCBtaWdodCBjcmVhdGUgdW5zb2xpY2l0ZWQgYWNjZXNzZXMgb24gdGhlIG90aGVyLgorCitGb3IgZXhhbXBsZSBjb25zaWRlciB0aGUgZm9sbG93aW5nIGNvZGU6CisKKwl3aGlsZSAoYSA+IDApCisJCWRvX3NvbWV0aGluZygpOworCitJZiB0aGUgY29tcGlsZXIgY2FuIHByb3ZlIHRoYXQgZG9fc29tZXRoaW5nKCkgZG9lcyBub3Qgc3RvcmUgdG8gdGhlCit2YXJpYWJsZSBhLCB0aGVuIHRoZSBjb21waWxlciBpcyB3aXRoaW4gaXRzIHJpZ2h0cyB0cmFuc2Zvcm1pbmcgdGhpcyB0bwordGhlIGZvbGxvd2luZzoKKworCXRtcCA9IGE7CisJaWYgKGEgPiAwKQorCQlmb3IgKDs7KQorCQkJZG9fc29tZXRoaW5nKCk7CisKK0lmIHlvdSBkb24ndCB3YW50IHRoZSBjb21waWxlciB0byBkbyB0aGlzIChhbmQgeW91IHByb2JhYmx5IGRvbid0KSwgdGhlbgoreW91IHNob3VsZCB1c2Ugc29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZzoKKworCXdoaWxlIChBQ0NFU1NfT05DRShhKSA8IDApCisJCWRvX3NvbWV0aGluZygpOworCitBbHRlcm5hdGl2ZWx5LCB5b3UgY291bGQgcGxhY2UgYSBiYXJyaWVyKCkgY2FsbCBpbiB0aGUgbG9vcC4KKworRm9yIGFub3RoZXIgZXhhbXBsZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBjb2RlOgorCisJdG1wX2EgPSBhOworCWRvX3NvbWV0aGluZ193aXRoKHRtcF9hKTsKKwlkb19zb21ldGhpbmdfZWxzZV93aXRoKHRtcF9hKTsKKworSWYgdGhlIGNvbXBpbGVyIGNhbiBwcm92ZSB0aGF0IGRvX3NvbWV0aGluZ193aXRoKCkgZG9lcyBub3Qgc3RvcmUgdG8gdGhlCit2YXJpYWJsZSBhLCB0aGVuIHRoZSBjb21waWxlciBpcyB3aXRoaW4gaXRzIHJpZ2h0cyB0byBtYW51ZmFjdHVyZSBhbgorYWRkaXRpb25hbCBsb2FkIGFzIGZvbGxvd3M6CisKKwl0bXBfYSA9IGE7CisJZG9fc29tZXRoaW5nX3dpdGgodG1wX2EpOworCXRtcF9hID0gYTsKKwlkb19zb21ldGhpbmdfZWxzZV93aXRoKHRtcF9hKTsKKworVGhpcyBjb3VsZCBmYXRhbGx5IGNvbmZ1c2UgeW91ciBjb2RlIGlmIGl0IGV4cGVjdGVkIHRoZSBzYW1lIHZhbHVlCit0byBiZSBwYXNzZWQgdG8gZG9fc29tZXRoaW5nX3dpdGgoKSBhbmQgZG9fc29tZXRoaW5nX2Vsc2Vfd2l0aCgpLgorCitUaGUgY29tcGlsZXIgd291bGQgYmUgbGlrZWx5IHRvIG1hbnVmYWN0dXJlIHRoaXMgYWRkaXRpb25hbCBsb2FkIGlmCitkb19zb21ldGhpbmdfd2l0aCgpIHdhcyBhbiBpbmxpbmUgZnVuY3Rpb24gdGhhdCBtYWRlIHZlcnkgaGVhdnkgdXNlCitvZiByZWdpc3RlcnM6IHJlbG9hZGluZyBmcm9tIHZhcmlhYmxlIGEgY291bGQgc2F2ZSBhIGZsdXNoIHRvIHRoZQorc3RhY2sgYW5kIGxhdGVyIHJlbG9hZC4gIFRvIHByZXZlbnQgdGhlIGNvbXBpbGVyIGZyb20gYXR0YWNraW5nIHlvdXIKK2NvZGUgaW4gdGhpcyBtYW5uZXIsIHdyaXRlIHRoZSBmb2xsb3dpbmc6CisKKwl0bXBfYSA9IEFDQ0VTU19PTkNFKGEpOworCWRvX3NvbWV0aGluZ193aXRoKHRtcF9hKTsKKwlkb19zb21ldGhpbmdfZWxzZV93aXRoKHRtcF9hKTsKKworRm9yIGEgZmluYWwgZXhhbXBsZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBjb2RlLCBhc3N1bWluZyB0aGF0IHRoZQordmFyaWFibGUgYSBpcyBzZXQgYXQgYm9vdCB0aW1lIGJlZm9yZSB0aGUgc2Vjb25kIENQVSBpcyBicm91Z2h0IG9ubGluZQorYW5kIG5ldmVyIGNoYW5nZWQgbGF0ZXIsIHNvIHRoYXQgbWVtb3J5IGJhcnJpZXJzIGFyZSBub3QgbmVlZGVkOgorCisJaWYgKGEpCisJCWIgPSA5OworCWVsc2UKKwkJYiA9IDQyOworCitUaGUgY29tcGlsZXIgaXMgd2l0aGluIGl0cyByaWdodHMgdG8gbWFudWZhY3R1cmUgYW4gYWRkaXRpb25hbCBzdG9yZQorYnkgdHJhbnNmb3JtaW5nIHRoZSBhYm92ZSBjb2RlIGludG8gdGhlIGZvbGxvd2luZzoKKworCWIgPSA0MjsKKwlpZiAoYSkKKwkJYiA9IDk7CisKK1RoaXMgY291bGQgY29tZSBhcyBhIGZhdGFsIHN1cnByaXNlIHRvIG90aGVyIGNvZGUgcnVubmluZyBjb25jdXJyZW50bHkKK3RoYXQgZXhwZWN0ZWQgYiB0byBuZXZlciBoYXZlIHRoZSB2YWx1ZSA0MiBpZiBhIHdhcyB6ZXJvLiAgVG8gcHJldmVudAordGhlIGNvbXBpbGVyIGZyb20gZG9pbmcgdGhpcywgd3JpdGUgc29tZXRoaW5nIGxpa2U6CisKKwlpZiAoYSkKKwkJQUNDRVNTX09OQ0UoYikgPSA5OworCWVsc2UKKwkJQUNDRVNTX09OQ0UoYikgPSA0MjsKKworRG9uJ3QgZXZlbiAtdGhpbmstIGFib3V0IGRvaW5nIHRoaXMgd2l0aG91dCBwcm9wZXIgdXNlIG9mIG1lbW9yeSBiYXJyaWVycywKK2xvY2tzLCBvciBhdG9taWMgb3BlcmF0aW9ucyBpZiB2YXJpYWJsZSBhIGNhbiBjaGFuZ2UgYXQgcnVudGltZSEKKworKioqIFdBUk5JTkc6IEFDQ0VTU19PTkNFKCkgRE9FUyBOT1QgSU1QTFkgQSBCQVJSSUVSISAqKioKKworTm93LCB3ZSBtb3ZlIG9udG8gdGhlIGF0b21pYyBvcGVyYXRpb24gaW50ZXJmYWNlcyB0eXBpY2FsbHkgaW1wbGVtZW50ZWQgd2l0aAordGhlIGhlbHAgb2YgYXNzZW1ibHkgY29kZS4KKworCXZvaWQgYXRvbWljX2FkZChpbnQgaSwgYXRvbWljX3QgKnYpOworCXZvaWQgYXRvbWljX3N1YihpbnQgaSwgYXRvbWljX3QgKnYpOworCXZvaWQgYXRvbWljX2luYyhhdG9taWNfdCAqdik7CisJdm9pZCBhdG9taWNfZGVjKGF0b21pY190ICp2KTsKKworVGhlc2UgZm91ciByb3V0aW5lcyBhZGQgYW5kIHN1YnRyYWN0IGludGVncmFsIHZhbHVlcyB0by9mcm9tIHRoZSBnaXZlbgorYXRvbWljX3QgdmFsdWUuICBUaGUgZmlyc3QgdHdvIHJvdXRpbmVzIHBhc3MgZXhwbGljaXQgaW50ZWdlcnMgYnkKK3doaWNoIHRvIG1ha2UgdGhlIGFkanVzdG1lbnQsIHdoZXJlYXMgdGhlIGxhdHRlciB0d28gdXNlIGFuIGltcGxpY2l0CithZGp1c3RtZW50IHZhbHVlIG9mICIxIi4KKworT25lIHZlcnkgaW1wb3J0YW50IGFzcGVjdCBvZiB0aGVzZSB0d28gcm91dGluZXMgaXMgdGhhdCB0aGV5IERPIE5PVAorcmVxdWlyZSBhbnkgZXhwbGljaXQgbWVtb3J5IGJhcnJpZXJzLiAgVGhleSBuZWVkIG9ubHkgcGVyZm9ybSB0aGUKK2F0b21pY190IGNvdW50ZXIgdXBkYXRlIGluIGFuIFNNUCBzYWZlIG1hbm5lci4KKworTmV4dCwgd2UgaGF2ZToKKworCWludCBhdG9taWNfaW5jX3JldHVybihhdG9taWNfdCAqdik7CisJaW50IGF0b21pY19kZWNfcmV0dXJuKGF0b21pY190ICp2KTsKKworVGhlc2Ugcm91dGluZXMgYWRkIDEgYW5kIHN1YnRyYWN0IDEsIHJlc3BlY3RpdmVseSwgZnJvbSB0aGUgZ2l2ZW4KK2F0b21pY190IGFuZCByZXR1cm4gdGhlIG5ldyBjb3VudGVyIHZhbHVlIGFmdGVyIHRoZSBvcGVyYXRpb24gaXMKK3BlcmZvcm1lZC4KKworVW5saWtlIHRoZSBhYm92ZSByb3V0aW5lcywgaXQgaXMgcmVxdWlyZWQgdGhhdCB0aGVzZSBwcmltaXRpdmVzCitpbmNsdWRlIGV4cGxpY2l0IG1lbW9yeSBiYXJyaWVycyB0aGF0IGFyZSBwZXJmb3JtZWQgYmVmb3JlIGFuZCBhZnRlcgordGhlIG9wZXJhdGlvbi4gIEl0IG11c3QgYmUgZG9uZSBzdWNoIHRoYXQgYWxsIG1lbW9yeSBvcGVyYXRpb25zIGJlZm9yZQorYW5kIGFmdGVyIHRoZSBhdG9taWMgb3BlcmF0aW9uIGNhbGxzIGFyZSBzdHJvbmdseSBvcmRlcmVkIHdpdGggcmVzcGVjdAordG8gdGhlIGF0b21pYyBvcGVyYXRpb24gaXRzZWxmLgorCitGb3IgZXhhbXBsZSwgaXQgc2hvdWxkIGJlaGF2ZSBhcyBpZiBhIHNtcF9tYigpIGNhbGwgZXhpc3RlZCBib3RoCitiZWZvcmUgYW5kIGFmdGVyIHRoZSBhdG9taWMgb3BlcmF0aW9uLgorCitJZiB0aGUgYXRvbWljIGluc3RydWN0aW9ucyB1c2VkIGluIGFuIGltcGxlbWVudGF0aW9uIHByb3ZpZGUgZXhwbGljaXQKK21lbW9yeSBiYXJyaWVyIHNlbWFudGljcyB3aGljaCBzYXRpc2Z5IHRoZSBhYm92ZSByZXF1aXJlbWVudHMsIHRoYXQgaXMKK2ZpbmUgYXMgd2VsbC4KKworTGV0J3MgbW92ZSBvbjoKKworCWludCBhdG9taWNfYWRkX3JldHVybihpbnQgaSwgYXRvbWljX3QgKnYpOworCWludCBhdG9taWNfc3ViX3JldHVybihpbnQgaSwgYXRvbWljX3QgKnYpOworCitUaGVzZSBiZWhhdmUganVzdCBsaWtlIGF0b21pY197aW5jLGRlY31fcmV0dXJuKCkgZXhjZXB0IHRoYXQgYW4KK2V4cGxpY2l0IGNvdW50ZXIgYWRqdXN0bWVudCBpcyBnaXZlbiBpbnN0ZWFkIG9mIHRoZSBpbXBsaWNpdCAiMSIuCitUaGlzIG1lYW5zIHRoYXQgbGlrZSBhdG9taWNfe2luYyxkZWN9X3JldHVybigpLCB0aGUgbWVtb3J5IGJhcnJpZXIKK3NlbWFudGljcyBhcmUgcmVxdWlyZWQuCisKK05leHQ6CisKKwlpbnQgYXRvbWljX2luY19hbmRfdGVzdChhdG9taWNfdCAqdik7CisJaW50IGF0b21pY19kZWNfYW5kX3Rlc3QoYXRvbWljX3QgKnYpOworCitUaGVzZSB0d28gcm91dGluZXMgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnkgMSwgcmVzcGVjdGl2ZWx5LCB0aGUKK2dpdmVuIGF0b21pYyBjb3VudGVyLiAgVGhleSByZXR1cm4gYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUKK3Jlc3VsdGluZyBjb3VudGVyIHZhbHVlIHdhcyB6ZXJvIG9yIG5vdC4KKworQWdhaW4sIHRoZXNlIHByaW1pdGl2ZXMgcHJvdmlkZSBleHBsaWNpdCBtZW1vcnkgYmFycmllciBzZW1hbnRpY3MgYXJvdW5kCit0aGUgYXRvbWljIG9wZXJhdGlvbi4KKworCWludCBhdG9taWNfc3ViX2FuZF90ZXN0KGludCBpLCBhdG9taWNfdCAqdik7CisKK1RoaXMgaXMgaWRlbnRpY2FsIHRvIGF0b21pY19kZWNfYW5kX3Rlc3QoKSBleGNlcHQgdGhhdCBhbiBleHBsaWNpdAorZGVjcmVtZW50IGlzIGdpdmVuIGluc3RlYWQgb2YgdGhlIGltcGxpY2l0ICIxIi4gIFRoaXMgcHJpbWl0aXZlIG11c3QKK3Byb3ZpZGUgZXhwbGljaXQgbWVtb3J5IGJhcnJpZXIgc2VtYW50aWNzIGFyb3VuZCB0aGUgb3BlcmF0aW9uLgorCisJaW50IGF0b21pY19hZGRfbmVnYXRpdmUoaW50IGksIGF0b21pY190ICp2KTsKKworVGhlIGdpdmVuIGluY3JlbWVudCBpcyBhZGRlZCB0byB0aGUgZ2l2ZW4gYXRvbWljIGNvdW50ZXIgdmFsdWUuICBBIGJvb2xlYW4KK2lzIHJldHVybiB3aGljaCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgcmVzdWx0aW5nIGNvdW50ZXIgdmFsdWUgaXMgbmVnYXRpdmUuCitUaGlzIHByaW1pdGl2ZSBtdXN0IHByb3ZpZGUgZXhwbGljaXQgbWVtb3J5IGJhcnJpZXIgc2VtYW50aWNzIGFyb3VuZAordGhlIG9wZXJhdGlvbi4KKworVGhlbjoKKworCWludCBhdG9taWNfeGNoZyhhdG9taWNfdCAqdiwgaW50IG5ldyk7CisKK1RoaXMgcGVyZm9ybXMgYW4gYXRvbWljIGV4Y2hhbmdlIG9wZXJhdGlvbiBvbiB0aGUgYXRvbWljIHZhcmlhYmxlIHYsIHNldHRpbmcKK3RoZSBnaXZlbiBuZXcgdmFsdWUuICBJdCByZXR1cm5zIHRoZSBvbGQgdmFsdWUgdGhhdCB0aGUgYXRvbWljIHZhcmlhYmxlIHYgaGFkCitqdXN0IGJlZm9yZSB0aGUgb3BlcmF0aW9uLgorCithdG9taWNfeGNoZyBtdXN0IHByb3ZpZGUgZXhwbGljaXQgbWVtb3J5IGJhcnJpZXJzIGFyb3VuZCB0aGUgb3BlcmF0aW9uLgorCisJaW50IGF0b21pY19jbXB4Y2hnKGF0b21pY190ICp2LCBpbnQgb2xkLCBpbnQgbmV3KTsKKworVGhpcyBwZXJmb3JtcyBhbiBhdG9taWMgY29tcGFyZSBleGNoYW5nZSBvcGVyYXRpb24gb24gdGhlIGF0b21pYyB2YWx1ZSB2LAord2l0aCB0aGUgZ2l2ZW4gb2xkIGFuZCBuZXcgdmFsdWVzLiBMaWtlIGFsbCBhdG9taWNfeHh4IG9wZXJhdGlvbnMsCithdG9taWNfY21weGNoZyB3aWxsIG9ubHkgc2F0aXNmeSBpdHMgYXRvbWljaXR5IHNlbWFudGljcyBhcyBsb25nIGFzIGFsbAorb3RoZXIgYWNjZXNzZXMgb2YgKnYgYXJlIHBlcmZvcm1lZCB0aHJvdWdoIGF0b21pY194eHggb3BlcmF0aW9ucy4KKworYXRvbWljX2NtcHhjaGcgbXVzdCBwcm92aWRlIGV4cGxpY2l0IG1lbW9yeSBiYXJyaWVycyBhcm91bmQgdGhlIG9wZXJhdGlvbiwKK2FsdGhvdWdoIGlmIHRoZSBjb21wYXJpc29uIGZhaWxzIHRoZW4gbm8gbWVtb3J5IG9yZGVyaW5nIGd1YXJhbnRlZXMgYXJlCityZXF1aXJlZC4KKworVGhlIHNlbWFudGljcyBmb3IgYXRvbWljX2NtcHhjaGcgYXJlIHRoZSBzYW1lIGFzIHRob3NlIGRlZmluZWQgZm9yICdjYXMnCitiZWxvdy4KKworRmluYWxseToKKworCWludCBhdG9taWNfYWRkX3VubGVzcyhhdG9taWNfdCAqdiwgaW50IGEsIGludCB1KTsKKworSWYgdGhlIGF0b21pYyB2YWx1ZSB2IGlzIG5vdCBlcXVhbCB0byB1LCB0aGlzIGZ1bmN0aW9uIGFkZHMgYSB0byB2LCBhbmQKK3JldHVybnMgbm9uIHplcm8uIElmIHYgaXMgZXF1YWwgdG8gdSB0aGVuIGl0IHJldHVybnMgemVyby4gVGhpcyBpcyBkb25lIGFzCithbiBhdG9taWMgb3BlcmF0aW9uLgorCithdG9taWNfYWRkX3VubGVzcyBtdXN0IHByb3ZpZGUgZXhwbGljaXQgbWVtb3J5IGJhcnJpZXJzIGFyb3VuZCB0aGUKK29wZXJhdGlvbiB1bmxlc3MgaXQgZmFpbHMgKHJldHVybnMgMCkuCisKK2F0b21pY19pbmNfbm90X3plcm8sIGVxdWl2YWxlbnQgdG8gYXRvbWljX2FkZF91bmxlc3ModiwgMSwgMCkKKworCitJZiBhIGNhbGxlciByZXF1aXJlcyBtZW1vcnkgYmFycmllciBzZW1hbnRpY3MgYXJvdW5kIGFuIGF0b21pY190CitvcGVyYXRpb24gd2hpY2ggZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUsIGEgc2V0IG9mIGludGVyZmFjZXMgYXJlCitkZWZpbmVkIHdoaWNoIGFjY29tcGxpc2ggdGhpczoKKworCXZvaWQgc21wX21iX19iZWZvcmVfYXRvbWljKHZvaWQpOworCXZvaWQgc21wX21iX19hZnRlcl9hdG9taWModm9pZCk7CisKK0ZvciBleGFtcGxlLCBzbXBfbWJfX2JlZm9yZV9hdG9taWMoKSBjYW4gYmUgdXNlZCBsaWtlIHNvOgorCisJb2JqLT5kZWFkID0gMTsKKwlzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTsKKwlhdG9taWNfZGVjKCZvYmotPnJlZl9jb3VudCk7CisKK0l0IG1ha2VzIHN1cmUgdGhhdCBhbGwgbWVtb3J5IG9wZXJhdGlvbnMgcHJlY2VkaW5nIHRoZSBhdG9taWNfZGVjKCkKK2NhbGwgYXJlIHN0cm9uZ2x5IG9yZGVyZWQgd2l0aCByZXNwZWN0IHRvIHRoZSBhdG9taWMgY291bnRlcgorb3BlcmF0aW9uLiAgSW4gdGhlIGFib3ZlIGV4YW1wbGUsIGl0IGd1YXJhbnRlZXMgdGhhdCB0aGUgYXNzaWdubWVudCBvZgorIjEiIHRvIG9iai0+ZGVhZCB3aWxsIGJlIGdsb2JhbGx5IHZpc2libGUgdG8gb3RoZXIgY3B1cyBiZWZvcmUgdGhlCithdG9taWMgY291bnRlciBkZWNyZW1lbnQuCisKK1dpdGhvdXQgdGhlIGV4cGxpY2l0IHNtcF9tYl9fYmVmb3JlX2F0b21pYygpIGNhbGwsIHRoZQoraW1wbGVtZW50YXRpb24gY291bGQgbGVnYWxseSBhbGxvdyB0aGUgYXRvbWljIGNvdW50ZXIgdXBkYXRlIHZpc2libGUKK3RvIG90aGVyIGNwdXMgYmVmb3JlIHRoZSAib2JqLT5kZWFkID0gMTsiIGFzc2lnbm1lbnQuCisKK0EgbWlzc2luZyBtZW1vcnkgYmFycmllciBpbiB0aGUgY2FzZXMgd2hlcmUgdGhleSBhcmUgcmVxdWlyZWQgYnkgdGhlCithdG9taWNfdCBpbXBsZW1lbnRhdGlvbiBhYm92ZSBjYW4gaGF2ZSBkaXNhc3Ryb3VzIHJlc3VsdHMuICBIZXJlIGlzCithbiBleGFtcGxlLCB3aGljaCBmb2xsb3dzIGEgcGF0dGVybiBvY2N1cnJpbmcgZnJlcXVlbnRseSBpbiB0aGUgTGludXgKK2tlcm5lbC4gIEl0IGlzIHRoZSB1c2Ugb2YgYXRvbWljIGNvdW50ZXJzIHRvIGltcGxlbWVudCByZWZlcmVuY2UKK2NvdW50aW5nLCBhbmQgaXQgd29ya3Mgc3VjaCB0aGF0IG9uY2UgdGhlIGNvdW50ZXIgZmFsbHMgdG8gemVybyBpdCBjYW4KK2JlIGd1YXJhbnRlZWQgdGhhdCBubyBvdGhlciBlbnRpdHkgY2FuIGJlIGFjY2Vzc2luZyB0aGUgb2JqZWN0OgorCitzdGF0aWMgdm9pZCBvYmpfbGlzdF9hZGQoc3RydWN0IG9iaiAqb2JqLCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQoreworCW9iai0+YWN0aXZlID0gMTsKKwlsaXN0X2FkZCgmb2JqLT5saXN0LCBoZWFkKTsKK30KKworc3RhdGljIHZvaWQgb2JqX2xpc3RfZGVsKHN0cnVjdCBvYmogKm9iaikKK3sKKwlsaXN0X2RlbCgmb2JqLT5saXN0KTsKKwlvYmotPmFjdGl2ZSA9IDA7Cit9CisKK3N0YXRpYyB2b2lkIG9ial9kZXN0cm95KHN0cnVjdCBvYmogKm9iaikKK3sKKwlCVUdfT04ob2JqLT5hY3RpdmUpOworCWtmcmVlKG9iaik7Cit9CisKK3N0cnVjdCBvYmogKm9ial9saXN0X3BlZWsoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKK3sKKwlpZiAoIWxpc3RfZW1wdHkoaGVhZCkpIHsKKwkJc3RydWN0IG9iaiAqb2JqOworCisJCW9iaiA9IGxpc3RfZW50cnkoaGVhZC0+bmV4dCwgc3RydWN0IG9iaiwgbGlzdCk7CisJCWF0b21pY19pbmMoJm9iai0+cmVmY250KTsKKwkJcmV0dXJuIG9iajsKKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQgb2JqX3Bva2Uodm9pZCkKK3sKKwlzdHJ1Y3Qgb2JqICpvYmo7CisKKwlzcGluX2xvY2soJmdsb2JhbF9saXN0X2xvY2spOworCW9iaiA9IG9ial9saXN0X3BlZWsoJmdsb2JhbF9saXN0KTsKKwlzcGluX3VubG9jaygmZ2xvYmFsX2xpc3RfbG9jayk7CisKKwlpZiAob2JqKSB7CisJCW9iai0+b3BzLT5wb2tlKG9iaik7CisJCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZvYmotPnJlZmNudCkpCisJCQlvYmpfZGVzdHJveShvYmopOworCX0KK30KKwordm9pZCBvYmpfdGltZW91dChzdHJ1Y3Qgb2JqICpvYmopCit7CisJc3Bpbl9sb2NrKCZnbG9iYWxfbGlzdF9sb2NrKTsKKwlvYmpfbGlzdF9kZWwob2JqKTsKKwlzcGluX3VubG9jaygmZ2xvYmFsX2xpc3RfbG9jayk7CisKKwlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmb2JqLT5yZWZjbnQpKQorCQlvYmpfZGVzdHJveShvYmopOworfQorCisoVGhpcyBpcyBhIHNpbXBsaWZpY2F0aW9uIG9mIHRoZSBBUlAgcXVldWUgbWFuYWdlbWVudCBpbiB0aGUKKyBnZW5lcmljIG5laWdoYm91ciBkaXNjb3ZlciBjb2RlIG9mIHRoZSBuZXR3b3JraW5nLiAgT2xhZiBLaXJjaAorIGZvdW5kIGEgYnVnIHdydC4gbWVtb3J5IGJhcnJpZXJzIGluIGtmcmVlX3NrYigpIHRoYXQgZXhwb3NlZAorIHRoZSBhdG9taWNfdCBtZW1vcnkgYmFycmllciByZXF1aXJlbWVudHMgcXVpdGUgY2xlYXJseS4pCisKK0dpdmVuIHRoZSBhYm92ZSBzY2hlbWUsIGl0IG11c3QgYmUgdGhlIGNhc2UgdGhhdCB0aGUgb2JqLT5hY3RpdmUKK3VwZGF0ZSBkb25lIGJ5IHRoZSBvYmogbGlzdCBkZWxldGlvbiBiZSB2aXNpYmxlIHRvIG90aGVyIHByb2Nlc3NvcnMKK2JlZm9yZSB0aGUgYXRvbWljIGNvdW50ZXIgZGVjcmVtZW50IGlzIHBlcmZvcm1lZC4KKworT3RoZXJ3aXNlLCB0aGUgY291bnRlciBjb3VsZCBmYWxsIHRvIHplcm8sIHlldCBvYmotPmFjdGl2ZSB3b3VsZCBzdGlsbAorYmUgc2V0LCB0aHVzIHRyaWdnZXJpbmcgdGhlIGFzc2VydGlvbiBpbiBvYmpfZGVzdHJveSgpLiAgVGhlIGVycm9yCitzZXF1ZW5jZSBsb29rcyBsaWtlIHRoaXM6CisKKwljcHUgMAkJCQljcHUgMQorCW9ial9wb2tlKCkJCQlvYmpfdGltZW91dCgpCisJb2JqID0gb2JqX2xpc3RfcGVlaygpOworCS4uLiBnYWlucyByZWYgdG8gb2JqLCByZWZjbnQ9MgorCQkJCQlvYmpfbGlzdF9kZWwob2JqKTsKKwkJCQkJb2JqLT5hY3RpdmUgPSAwIC4uLgorCQkJCQkuLi4gdmlzaWJpbGl0eSBkZWxheWVkIC4uLgorCQkJCQlhdG9taWNfZGVjX2FuZF90ZXN0KCkKKwkJCQkJLi4uIHJlZmNudCBkcm9wcyB0byAxIC4uLgorCWF0b21pY19kZWNfYW5kX3Rlc3QoKQorCS4uLiByZWZjb3VudCBkcm9wcyB0byAwIC4uLgorCW9ial9kZXN0cm95KCkKKwlCVUcoKSB0cmlnZ2VycyBzaW5jZSBvYmotPmFjdGl2ZQorCXN0aWxsIHNlZW4gYXMgb25lCisJCQkJCW9iai0+YWN0aXZlIHVwZGF0ZSB2aXNpYmlsaXR5IG9jY3VycworCitXaXRoIHRoZSBtZW1vcnkgYmFycmllciBzZW1hbnRpY3MgcmVxdWlyZWQgb2YgdGhlIGF0b21pY190IG9wZXJhdGlvbnMKK3doaWNoIHJldHVybiB2YWx1ZXMsIHRoZSBhYm92ZSBzZXF1ZW5jZSBvZiBtZW1vcnkgdmlzaWJpbGl0eSBjYW4gbmV2ZXIKK2hhcHBlbi4gIFNwZWNpZmljYWxseSwgaW4gdGhlIGFib3ZlIGNhc2UgdGhlIGF0b21pY19kZWNfYW5kX3Rlc3QoKQorY291bnRlciBkZWNyZW1lbnQgd291bGQgbm90IGJlY29tZSBnbG9iYWxseSB2aXNpYmxlIHVudGlsIHRoZQorb2JqLT5hY3RpdmUgdXBkYXRlIGRvZXMuCisKK0FzIGEgaGlzdG9yaWNhbCBub3RlLCAzMi1iaXQgU3BhcmMgdXNlZCB0byBvbmx5IGFsbG93IHVzYWdlIG9mCisyNC1iaXRzIG9mIGl0cyBhdG9taWNfdCB0eXBlLiAgVGhpcyB3YXMgYmVjYXVzZSBpdCB1c2VkIDggYml0cworYXMgYSBzcGlubG9jayBmb3IgU01QIHNhZmV0eS4gIFNwYXJjMzIgbGFja2VkIGEgImNvbXBhcmUgYW5kIHN3YXAiCit0eXBlIGluc3RydWN0aW9uLiAgSG93ZXZlciwgMzItYml0IFNwYXJjIGhhcyBzaW5jZSBiZWVuIG1vdmVkIG92ZXIKK3RvIGEgImhhc2ggdGFibGUgb2Ygc3BpbmxvY2tzIiBzY2hlbWUsIHRoYXQgYWxsb3dzIHRoZSBmdWxsIDMyLWJpdAorY291bnRlciB0byBiZSByZWFsaXplZC4gIEVzc2VudGlhbGx5LCBhbiBhcnJheSBvZiBzcGlubG9ja3MgYXJlCitpbmRleGVkIGludG8gYmFzZWQgdXBvbiB0aGUgYWRkcmVzcyBvZiB0aGUgYXRvbWljX3QgYmVpbmcgb3BlcmF0ZWQKK29uLCBhbmQgdGhhdCBsb2NrIHByb3RlY3RzIHRoZSBhdG9taWMgb3BlcmF0aW9uLiAgUGFyaXNjIHVzZXMgdGhlCitzYW1lIHNjaGVtZS4KKworQW5vdGhlciBub3RlIGlzIHRoYXQgdGhlIGF0b21pY190IG9wZXJhdGlvbnMgcmV0dXJuaW5nIHZhbHVlcyBhcmUKK2V4dHJlbWVseSBzbG93IG9uIGFuIG9sZCAzODYuCisKK1dlIHdpbGwgbm93IGNvdmVyIHRoZSBhdG9taWMgYml0bWFzayBvcGVyYXRpb25zLiAgWW91IHdpbGwgZmluZCB0aGF0Cit0aGVpciBTTVAgYW5kIG1lbW9yeSBiYXJyaWVyIHNlbWFudGljcyBhcmUgc2ltaWxhciBpbiBzaGFwZSBhbmQgc2NvcGUKK3RvIHRoZSBhdG9taWNfdCBvcHMgYWJvdmUuCisKK05hdGl2ZSBhdG9taWMgYml0IG9wZXJhdGlvbnMgYXJlIGRlZmluZWQgdG8gb3BlcmF0ZSBvbiBvYmplY3RzIGFsaWduZWQKK3RvIHRoZSBzaXplIG9mIGFuICJ1bnNpZ25lZCBsb25nIiBDIGRhdGEgdHlwZSwgYW5kIGFyZSBsZWFzdCBvZiB0aGF0CitzaXplLiAgVGhlIGVuZGlhbm5lc3Mgb2YgdGhlIGJpdHMgd2l0aGluIGVhY2ggInVuc2lnbmVkIGxvbmciIGFyZSB0aGUKK25hdGl2ZSBlbmRpYW5uZXNzIG9mIHRoZSBjcHUuCisKKwl2b2lkIHNldF9iaXQodW5zaWduZWQgbG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcik7CisJdm9pZCBjbGVhcl9iaXQodW5zaWduZWQgbG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcik7CisJdm9pZCBjaGFuZ2VfYml0KHVuc2lnbmVkIGxvbmcgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpOworCitUaGVzZSByb3V0aW5lcyBzZXQsIGNsZWFyLCBhbmQgY2hhbmdlLCByZXNwZWN0aXZlbHksIHRoZSBiaXQgbnVtYmVyCitpbmRpY2F0ZWQgYnkgIm5yIiBvbiB0aGUgYml0IG1hc2sgcG9pbnRlZCB0byBieSAiQUREUiIuCisKK1RoZXkgbXVzdCBleGVjdXRlIGF0b21pY2FsbHksIHlldCB0aGVyZSBhcmUgbm8gaW1wbGljaXQgbWVtb3J5IGJhcnJpZXIKK3NlbWFudGljcyByZXF1aXJlZCBvZiB0aGVzZSBpbnRlcmZhY2VzLgorCisJaW50IHRlc3RfYW5kX3NldF9iaXQodW5zaWduZWQgbG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcik7CisJaW50IHRlc3RfYW5kX2NsZWFyX2JpdCh1bnNpZ25lZCBsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKTsKKwlpbnQgdGVzdF9hbmRfY2hhbmdlX2JpdCh1bnNpZ25lZCBsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKTsKKworTGlrZSB0aGUgYWJvdmUsIGV4Y2VwdCB0aGF0IHRoZXNlIHJvdXRpbmVzIHJldHVybiBhIGJvb2xlYW4gd2hpY2gKK2luZGljYXRlcyB3aGV0aGVyIHRoZSBjaGFuZ2VkIGJpdCB3YXMgc2V0IF9CRUZPUkVfIHRoZSBhdG9taWMgYml0CitvcGVyYXRpb24uCisKK1dBUk5JTkchIEl0IGlzIGluY3JlZGlibHkgaW1wb3J0YW50IHRoYXQgdGhlIHZhbHVlIGJlIGEgYm9vbGVhbiwKK2llLiAiMCIgb3IgIjEiLiAgRG8gbm90IHRyeSB0byBiZSBmYW5jeSBhbmQgc2F2ZSBhIGZldyBpbnN0cnVjdGlvbnMgYnkKK2RlY2xhcmluZyB0aGUgYWJvdmUgdG8gcmV0dXJuICJsb25nIiBhbmQganVzdCByZXR1cm5pbmcgc29tZXRoaW5nIGxpa2UKKyJvbGRfdmFsICYgbWFzayIgYmVjYXVzZSB0aGF0IHdpbGwgbm90IHdvcmsuCisKK0ZvciBvbmUgdGhpbmcsIHRoaXMgcmV0dXJuIHZhbHVlIGdldHMgdHJ1bmNhdGVkIHRvIGludCBpbiBtYW55IGNvZGUKK3BhdGhzIHVzaW5nIHRoZXNlIGludGVyZmFjZXMsIHNvIG9uIDY0LWJpdCBpZiB0aGUgYml0IGlzIHNldCBpbiB0aGUKK3VwcGVyIDMyLWJpdHMgdGhlbiB0ZXN0ZXJzIHdpbGwgbmV2ZXIgc2VlIHRoYXQuCisKK09uZSBncmVhdCBleGFtcGxlIG9mIHdoZXJlIHRoaXMgcHJvYmxlbSBjcm9wcyB1cCBhcmUgdGhlIHRocmVhZF9pbmZvCitmbGFnIG9wZXJhdGlvbnMuICBSb3V0aW5lcyBzdWNoIGFzIHRlc3RfYW5kX3NldF90aV90aHJlYWRfZmxhZygpIGNob3AKK3RoZSByZXR1cm4gdmFsdWUgaW50byBhbiBpbnQuICBUaGVyZSBhcmUgb3RoZXIgcGxhY2VzIHdoZXJlIHRoaW5ncworbGlrZSB0aGlzIG9jY3VyIGFzIHdlbGwuCisKK1RoZXNlIHJvdXRpbmVzLCBsaWtlIHRoZSBhdG9taWNfdCBjb3VudGVyIG9wZXJhdGlvbnMgcmV0dXJuaW5nIHZhbHVlcywKK211c3QgcHJvdmlkZSBleHBsaWNpdCBtZW1vcnkgYmFycmllciBzZW1hbnRpY3MgYXJvdW5kIHRoZWlyIGV4ZWN1dGlvbi4KK0FsbCBtZW1vcnkgb3BlcmF0aW9ucyBiZWZvcmUgdGhlIGF0b21pYyBiaXQgb3BlcmF0aW9uIGNhbGwgbXVzdCBiZQorbWFkZSB2aXNpYmxlIGdsb2JhbGx5IGJlZm9yZSB0aGUgYXRvbWljIGJpdCBvcGVyYXRpb24gaXMgbWFkZSB2aXNpYmxlLgorTGlrZXdpc2UsIHRoZSBhdG9taWMgYml0IG9wZXJhdGlvbiBtdXN0IGJlIHZpc2libGUgZ2xvYmFsbHkgYmVmb3JlIGFueQorc3Vic2VxdWVudCBtZW1vcnkgb3BlcmF0aW9uIGlzIG1hZGUgdmlzaWJsZS4gIEZvciBleGFtcGxlOgorCisJb2JqLT5kZWFkID0gMTsKKwlpZiAodGVzdF9hbmRfc2V0X2JpdCgwLCAmb2JqLT5mbGFncykpCisJCS8qIC4uLiAqLzsKKwlvYmotPmtpbGxlZCA9IDE7CisKK1RoZSBpbXBsZW1lbnRhdGlvbiBvZiB0ZXN0X2FuZF9zZXRfYml0KCkgbXVzdCBndWFyYW50ZWUgdGhhdAorIm9iai0+ZGVhZCA9IDE7IiBpcyB2aXNpYmxlIHRvIGNwdXMgYmVmb3JlIHRoZSBhdG9taWMgbWVtb3J5IG9wZXJhdGlvbgorZG9uZSBieSB0ZXN0X2FuZF9zZXRfYml0KCkgYmVjb21lcyB2aXNpYmxlLiAgTGlrZXdpc2UsIHRoZSBhdG9taWMKK21lbW9yeSBvcGVyYXRpb24gZG9uZSBieSB0ZXN0X2FuZF9zZXRfYml0KCkgbXVzdCBiZWNvbWUgdmlzaWJsZSBiZWZvcmUKKyJvYmotPmtpbGxlZCA9IDE7IiBpcyB2aXNpYmxlLgorCitGaW5hbGx5IHRoZXJlIGlzIHRoZSBiYXNpYyBvcGVyYXRpb246CisKKwlpbnQgdGVzdF9iaXQodW5zaWduZWQgbG9uZyBuciwgX19jb25zdF9fIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpOworCitXaGljaCByZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIGJpdCAibnIiIGlzIHNldCBpbiB0aGUgYml0bWFzaworcG9pbnRlZCB0byBieSAiYWRkciIuCisKK0lmIGV4cGxpY2l0IG1lbW9yeSBiYXJyaWVycyBhcmUgcmVxdWlyZWQgYXJvdW5kIHtzZXQsY2xlYXJ9X2JpdCgpICh3aGljaCBkbworbm90IHJldHVybiBhIHZhbHVlLCBhbmQgdGh1cyBkb2VzIG5vdCBuZWVkIHRvIHByb3ZpZGUgbWVtb3J5IGJhcnJpZXIKK3NlbWFudGljcyksIHR3byBpbnRlcmZhY2VzIGFyZSBwcm92aWRlZDoKKworCXZvaWQgc21wX21iX19iZWZvcmVfYXRvbWljKHZvaWQpOworCXZvaWQgc21wX21iX19hZnRlcl9hdG9taWModm9pZCk7CisKK1RoZXkgYXJlIHVzZWQgYXMgZm9sbG93cywgYW5kIGFyZSBha2luIHRvIHRoZWlyIGF0b21pY190IG9wZXJhdGlvbgorYnJvdGhlcnM6CisKKwkvKiBBbGwgbWVtb3J5IG9wZXJhdGlvbnMgYmVmb3JlIHRoaXMgY2FsbCB3aWxsCisJICogYmUgZ2xvYmFsbHkgdmlzaWJsZSBiZWZvcmUgdGhlIGNsZWFyX2JpdCgpLgorCSAqLworCXNtcF9tYl9fYmVmb3JlX2F0b21pYygpOworCWNsZWFyX2JpdCggLi4uICk7CisKKwkvKiBUaGUgY2xlYXJfYml0KCkgd2lsbCBiZSB2aXNpYmxlIGJlZm9yZSBhbGwKKwkgKiBzdWJzZXF1ZW50IG1lbW9yeSBvcGVyYXRpb25zLgorCSAqLworCSBzbXBfbWJfX2FmdGVyX2F0b21pYygpOworCitUaGVyZSBhcmUgdHdvIHNwZWNpYWwgYml0b3BzIHdpdGggbG9jayBiYXJyaWVyIHNlbWFudGljcyAoYWNxdWlyZS9yZWxlYXNlLAorc2FtZSBhcyBzcGlubG9ja3MpLiBUaGVzZSBvcGVyYXRlIGluIHRoZSBzYW1lIHdheSBhcyB0aGVpciBub24tX2xvY2svdW5sb2NrCitwb3N0Zml4ZWQgdmFyaWFudHMsIGV4Y2VwdCB0aGF0IHRoZXkgYXJlIHRvIHByb3ZpZGUgYWNxdWlyZS9yZWxlYXNlIHNlbWFudGljcywKK3Jlc3BlY3RpdmVseS4gVGhpcyBtZWFucyB0aGV5IGNhbiBiZSB1c2VkIGZvciBiaXRfc3Bpbl90cnlsb2NrIGFuZAorYml0X3NwaW5fdW5sb2NrIHR5cGUgb3BlcmF0aW9ucyB3aXRob3V0IHNwZWNpZnlpbmcgYW55IG1vcmUgYmFycmllcnMuCisKKwlpbnQgdGVzdF9hbmRfc2V0X2JpdF9sb2NrKHVuc2lnbmVkIGxvbmcgbnIsIHVuc2lnbmVkIGxvbmcgKmFkZHIpOworCXZvaWQgY2xlYXJfYml0X3VubG9jayh1bnNpZ25lZCBsb25nIG5yLCB1bnNpZ25lZCBsb25nICphZGRyKTsKKwl2b2lkIF9fY2xlYXJfYml0X3VubG9jayh1bnNpZ25lZCBsb25nIG5yLCB1bnNpZ25lZCBsb25nICphZGRyKTsKKworVGhlIF9fY2xlYXJfYml0X3VubG9jayB2ZXJzaW9uIGlzIG5vbi1hdG9taWMsIGhvd2V2ZXIgaXQgc3RpbGwgaW1wbGVtZW50cwordW5sb2NrIGJhcnJpZXIgc2VtYW50aWNzLiBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgdGhlIGxvY2sgaXRzZWxmIGlzIHByb3RlY3RpbmcKK3RoZSBvdGhlciBiaXRzIGluIHRoZSB3b3JkLgorCitGaW5hbGx5LCB0aGVyZSBhcmUgbm9uLWF0b21pYyB2ZXJzaW9ucyBvZiB0aGUgYml0bWFzayBvcGVyYXRpb25zCitwcm92aWRlZC4gIFRoZXkgYXJlIHVzZWQgaW4gY29udGV4dHMgd2hlcmUgc29tZSBvdGhlciBoaWdoZXItbGV2ZWwgU01QCitsb2NraW5nIHNjaGVtZSBpcyBiZWluZyB1c2VkIHRvIHByb3RlY3QgdGhlIGJpdG1hc2ssIGFuZCB0aHVzIGxlc3MKK2V4cGVuc2l2ZSBub24tYXRvbWljIG9wZXJhdGlvbnMgbWF5IGJlIHVzZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uLgorVGhleSBoYXZlIG5hbWVzIHNpbWlsYXIgdG8gdGhlIGFib3ZlIGJpdG1hc2sgb3BlcmF0aW9uIGludGVyZmFjZXMsCitleGNlcHQgdGhhdCB0d28gdW5kZXJzY29yZXMgYXJlIHByZWZpeGVkIHRvIHRoZSBpbnRlcmZhY2UgbmFtZS4KKworCXZvaWQgX19zZXRfYml0KHVuc2lnbmVkIGxvbmcgbnIsIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKmFkZHIpOworCXZvaWQgX19jbGVhcl9iaXQodW5zaWduZWQgbG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcik7CisJdm9pZCBfX2NoYW5nZV9iaXQodW5zaWduZWQgbG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcik7CisJaW50IF9fdGVzdF9hbmRfc2V0X2JpdCh1bnNpZ25lZCBsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKTsKKwlpbnQgX190ZXN0X2FuZF9jbGVhcl9iaXQodW5zaWduZWQgbG9uZyBuciwgdm9sYXRpbGUgdW5zaWduZWQgbG9uZyAqYWRkcik7CisJaW50IF9fdGVzdF9hbmRfY2hhbmdlX2JpdCh1bnNpZ25lZCBsb25nIG5yLCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICphZGRyKTsKKworVGhlc2Ugbm9uLWF0b21pYyB2YXJpYW50cyBhbHNvIGRvIG5vdCByZXF1aXJlIGFueSBzcGVjaWFsIG1lbW9yeQorYmFycmllciBzZW1hbnRpY3MuCisKK1RoZSByb3V0aW5lcyB4Y2hnKCkgYW5kIGNtcHhjaGcoKSBtdXN0IHByb3ZpZGUgdGhlIHNhbWUgZXhhY3QKK21lbW9yeS1iYXJyaWVyIHNlbWFudGljcyBhcyB0aGUgYXRvbWljIGFuZCBiaXQgb3BlcmF0aW9ucyByZXR1cm5pbmcKK3ZhbHVlcy4KKworTm90ZTogSWYgc29tZW9uZSB3YW50cyB0byB1c2UgeGNoZygpLCBjbXB4Y2hnKCkgYW5kIHRoZWlyIHZhcmlhbnRzLAorbGludXgvYXRvbWljLmggc2hvdWxkIGJlIGluY2x1ZGVkIHJhdGhlciB0aGFuIGFzbS9jbXB4Y2hnLmgsIHVubGVzcwordGhlIGNvZGUgaXMgaW4gYXJjaC8qIGFuZCBjYW4gdGFrZSBjYXJlIG9mIGl0c2VsZi4KKworU3BpbmxvY2tzIGFuZCByd2xvY2tzIGhhdmUgbWVtb3J5IGJhcnJpZXIgZXhwZWN0YXRpb25zIGFzIHdlbGwuCitUaGUgcnVsZSB0byBmb2xsb3cgaXMgc2ltcGxlOgorCisxKSBXaGVuIGFjcXVpcmluZyBhIGxvY2ssIHRoZSBpbXBsZW1lbnRhdGlvbiBtdXN0IG1ha2UgaXQgZ2xvYmFsbHkKKyAgIHZpc2libGUgYmVmb3JlIGFueSBzdWJzZXF1ZW50IG1lbW9yeSBvcGVyYXRpb24uCisKKzIpIFdoZW4gcmVsZWFzaW5nIGEgbG9jaywgdGhlIGltcGxlbWVudGF0aW9uIG11c3QgbWFrZSBpdCBzdWNoIHRoYXQKKyAgIGFsbCBwcmV2aW91cyBtZW1vcnkgb3BlcmF0aW9ucyBhcmUgZ2xvYmFsbHkgdmlzaWJsZSBiZWZvcmUgdGhlCisgICBsb2NrIHJlbGVhc2UuCisKK1doaWNoIGZpbmFsbHkgYnJpbmdzIHVzIHRvIF9hdG9taWNfZGVjX2FuZF9sb2NrKCkuICBUaGVyZSBpcyBhbgorYXJjaGl0ZWN0dXJlLW5ldXRyYWwgdmVyc2lvbiBpbXBsZW1lbnRlZCBpbiBsaWIvZGVjX2FuZF9sb2NrLmMsCitidXQgbW9zdCBwbGF0Zm9ybXMgd2lsbCB3aXNoIHRvIG9wdGltaXplIHRoaXMgaW4gYXNzZW1ibGVyLgorCisJaW50IF9hdG9taWNfZGVjX2FuZF9sb2NrKGF0b21pY190ICphdG9taWMsIHNwaW5sb2NrX3QgKmxvY2spOworCitBdG9taWNhbGx5IGRlY3JlbWVudCB0aGUgZ2l2ZW4gY291bnRlciwgYW5kIGlmIHdpbGwgZHJvcCB0byB6ZXJvCithdG9taWNhbGx5IGFjcXVpcmUgdGhlIGdpdmVuIHNwaW5sb2NrIGFuZCBwZXJmb3JtIHRoZSBkZWNyZW1lbnQKK29mIHRoZSBjb3VudGVyIHRvIHplcm8uICBJZiBpdCBkb2VzIG5vdCBkcm9wIHRvIHplcm8sIGRvIG5vdGhpbmcKK3dpdGggdGhlIHNwaW5sb2NrLgorCitJdCBpcyBhY3R1YWxseSBwcmV0dHkgc2ltcGxlIHRvIGdldCB0aGUgbWVtb3J5IGJhcnJpZXIgY29ycmVjdC4KK1NpbXBseSBzYXRpc2Z5IHRoZSBzcGlubG9jayBncmFiIHJlcXVpcmVtZW50cywgd2hpY2ggaXMgbWFrZQorc3VyZSB0aGUgc3BpbmxvY2sgb3BlcmF0aW9uIGlzIGdsb2JhbGx5IHZpc2libGUgYmVmb3JlIGFueQorc3Vic2VxdWVudCBtZW1vcnkgb3BlcmF0aW9uLgorCitXZSBjYW4gZGVtb25zdHJhdGUgdGhpcyBvcGVyYXRpb24gbW9yZSBjbGVhcmx5IGlmIHdlIGRlZmluZQorYW4gYWJzdHJhY3QgYXRvbWljIG9wZXJhdGlvbjoKKworCWxvbmcgY2FzKGxvbmcgKm1lbSwgbG9uZyBvbGQsIGxvbmcgbmV3KTsKKworImNhcyIgc3RhbmRzIGZvciAiY29tcGFyZSBhbmQgc3dhcCIuICBJdCBhdG9taWNhbGx5OgorCisxKSBDb21wYXJlcyAib2xkIiB3aXRoIHRoZSB2YWx1ZSBjdXJyZW50bHkgYXQgIm1lbSIuCisyKSBJZiB0aGV5IGFyZSBlcXVhbCwgIm5ldyIgaXMgd3JpdHRlbiB0byAibWVtIi4KKzMpIFJlZ2FyZGxlc3MsIHRoZSBjdXJyZW50IHZhbHVlIGF0ICJtZW0iIGlzIHJldHVybmVkLgorCitBcyBhbiBleGFtcGxlIHVzYWdlLCBoZXJlIGlzIHdoYXQgYW4gYXRvbWljIGNvdW50ZXIgdXBkYXRlCittaWdodCBsb29rIGxpa2U6CisKK3ZvaWQgZXhhbXBsZV9hdG9taWNfaW5jKGxvbmcgKmNvdW50ZXIpCit7CisJbG9uZyBvbGQsIG5ldywgcmV0OworCisJd2hpbGUgKDEpIHsKKwkJb2xkID0gKmNvdW50ZXI7CisJCW5ldyA9IG9sZCArIDE7CisKKwkJcmV0ID0gY2FzKGNvdW50ZXIsIG9sZCwgbmV3KTsKKwkJaWYgKHJldCA9PSBvbGQpCisJCQlicmVhazsKKwl9Cit9CisKK0xldCdzIHVzZSBjYXMoKSBpbiBvcmRlciB0byBidWlsZCBhIHBzZXVkby1DIGF0b21pY19kZWNfYW5kX2xvY2soKToKKworaW50IF9hdG9taWNfZGVjX2FuZF9sb2NrKGF0b21pY190ICphdG9taWMsIHNwaW5sb2NrX3QgKmxvY2spCit7CisJbG9uZyBvbGQsIG5ldywgcmV0OworCWludCB3ZW50X3RvX3plcm87CisKKwl3ZW50X3RvX3plcm8gPSAwOworCXdoaWxlICgxKSB7CisJCW9sZCA9IGF0b21pY19yZWFkKGF0b21pYyk7CisJCW5ldyA9IG9sZCAtIDE7CisJCWlmIChuZXcgPT0gMCkgeworCQkJd2VudF90b196ZXJvID0gMTsKKwkJCXNwaW5fbG9jayhsb2NrKTsKKwkJfQorCQlyZXQgPSBjYXMoYXRvbWljLCBvbGQsIG5ldyk7CisJCWlmIChyZXQgPT0gb2xkKQorCQkJYnJlYWs7CisJCWlmICh3ZW50X3RvX3plcm8pIHsKKwkJCXNwaW5fdW5sb2NrKGxvY2spOworCQkJd2VudF90b196ZXJvID0gMDsKKwkJfQorCX0KKworCXJldHVybiB3ZW50X3RvX3plcm87Cit9CisKK05vdywgYXMgZmFyIGFzIG1lbW9yeSBiYXJyaWVycyBnbywgYXMgbG9uZyBhcyBzcGluX2xvY2soKQorc3RyaWN0bHkgb3JkZXJzIGFsbCBzdWJzZXF1ZW50IG1lbW9yeSBvcGVyYXRpb25zIChpbmNsdWRpbmcKK3RoZSBjYXMoKSkgd2l0aCByZXNwZWN0IHRvIGl0c2VsZiwgdGhpbmdzIHdpbGwgYmUgZmluZS4KKworU2FpZCBhbm90aGVyIHdheSwgX2F0b21pY19kZWNfYW5kX2xvY2soKSBtdXN0IGd1YXJhbnRlZSB0aGF0CithIGNvdW50ZXIgZHJvcHBpbmcgdG8gemVybyBpcyBuZXZlciBtYWRlIHZpc2libGUgYmVmb3JlIHRoZQorc3BpbmxvY2sgYmVpbmcgYWNxdWlyZWQuCisKK05vdGUgdGhhdCB0aGlzIGFsc28gbWVhbnMgdGhhdCBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIGNvdW50ZXIKK2lzIG5vdCBkcm9wcGluZyB0byB6ZXJvLCB0aGVyZSBhcmUgbm8gbWVtb3J5IG9yZGVyaW5nCityZXF1aXJlbWVudHMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2F1eGRpc3BsYXkvLmdpdGlnbm9yZSBiL0RvY3VtZW50YXRpb24vYXV4ZGlzcGxheS8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZjIyMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2F1eGRpc3BsYXkvLmdpdGlnbm9yZQpAQCAtMCwwICsxIEBACitjZmFnMTI4NjRiLWV4YW1wbGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXV4ZGlzcGxheS9NYWtlZmlsZSBiL0RvY3VtZW50YXRpb24vYXV4ZGlzcGxheS9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGE0ZGFjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hdXhkaXNwbGF5L01ha2VmaWxlCkBAIC0wLDAgKzEsNyBAQAorIyBMaXN0IG9mIHByb2dyYW1zIHRvIGJ1aWxkCitob3N0cHJvZ3MteSA6PSBjZmFnMTI4NjRiLWV4YW1wbGUKKworIyBUZWxsIGtidWlsZCB0byBhbHdheXMgYnVpbGQgdGhlIHByb2dyYW1zCithbHdheXMgOj0gJChob3N0cHJvZ3MteSkKKworSE9TVENGTEFHU19jZmFnMTI4NjRiLWV4YW1wbGUubyArPSAtSSQob2JqdHJlZSkvdXNyL2luY2x1ZGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXV4ZGlzcGxheS9jZmFnMTI4NjRiIGIvRG9jdW1lbnRhdGlvbi9hdXhkaXNwbGF5L2NmYWcxMjg2NGIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI3YmUzOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXV4ZGlzcGxheS9jZmFnMTI4NjRiCkBAIC0wLDAgKzEsMTA1IEBACisJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwljZmFnMTI4NjRiIExDRCBEcml2ZXIgRG9jdW1lbnRhdGlvbgorCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0xpY2Vuc2U6CQlHUEx2MgorQXV0aG9yICYgTWFpbnRhaW5lcjoJTWlndWVsIE9qZWRhIFNhbmRvbmlzCitEYXRlOgkJCTIwMDYtMTAtMjcKKworCisKKy0tLS0tLS0tCiswLiBJTkRFWAorLS0tLS0tLS0KKworCTEuIERSSVZFUiBJTkZPUk1BVElPTgorCTIuIERFVklDRSBJTkZPUk1BVElPTgorCTMuIFdJUklORworCTQuIFVTRVJTUEFDRSBQUk9HUkFNTUlORworCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMS4gRFJJVkVSIElORk9STUFUSU9OCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgc3VwcG9ydHMgYSBjZmFnMTI4NjRiIExDRC4KKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzIuIERFVklDRSBJTkZPUk1BVElPTgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01hbnVmYWN0dXJlcjoJQ3J5c3RhbGZvbnR6CitEZXZpY2UgTmFtZToJQ3J5c3RhbGZvbnR6IDEyODY0YiBMQ0QgU2VyaWVzCitEZXZpY2UgQ29kZToJY2ZhZzEyODY0YgorV2VicGFnZToJaHR0cDovL3d3dy5jcnlzdGFsZm9udHouY29tCitEZXZpY2UgV2VicGFnZToJaHR0cDovL3d3dy5jcnlzdGFsZm9udHouY29tL3Byb2R1Y3RzLzEyODY0Yi8KK1R5cGU6CQlMQ0QgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpCitXaWR0aDoJCTEyOAorSGVpZ2h0OgkJNjQKK0NvbG9yczoJCTIgKEIvTikKK0NvbnRyb2xsZXI6CWtzMDEwOAorQ29udHJvbGxlcnM6CTIKK1BhZ2VzOgkJOCBlYWNoIGNvbnRyb2xsZXIKK0FkZHJlc3NlczoJNjQgZWFjaCBwYWdlCitEYXRhIHNpemU6CTEgYnl0ZSBlYWNoIGFkZHJlc3MKK01lbW9yeSBzaXplOgkyICogOCAqIDY0ICogMSA9IDEwMjQgYnl0ZXMgPSAxIEtieXRlCisKKworLS0tLS0tLS0tCiszLiBXSVJJTkcKKy0tLS0tLS0tLQorCitUaGUgY2ZhZzEyODY0YiBMQ0QgU2VyaWVzIGRvbid0IGhhdmUgb2ZmaWNpYWwgd2lyaW5nLgorCitUaGUgY29tbW9uIHdpcmluZyBpcyBkb25lIHRvIHRoZSBwYXJhbGxlbCBwb3J0IGFzIHNob3duOgorCitQYXJhbGxlbCBQb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICBjZmFnMTI4NjRiCisKKyAgTmFtZSBQaW4jICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBpbiMgTmFtZQorCitTdHJvYmUgKCAxKS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSgxNykgRW5hYmxlCitEYXRhIDAgKCAyKS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSggNCkgRGF0YSAwCitEYXRhIDEgKCAzKS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSggNSkgRGF0YSAxCitEYXRhIDIgKCA0KS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSggNikgRGF0YSAyCitEYXRhIDMgKCA1KS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSggNykgRGF0YSAzCitEYXRhIDQgKCA2KS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSggOCkgRGF0YSA0CitEYXRhIDUgKCA3KS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSggOSkgRGF0YSA1CitEYXRhIDYgKCA4KS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSgxMCkgRGF0YSA2CitEYXRhIDcgKCA5KS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSgxMSkgRGF0YSA3CisgICAgICAgKDEwKSAgICAgICAgICAgICAgICAgICAgICBbKzV2XS0tLSggMSkgVmRkCisgICAgICAgKDExKSAgICAgICAgICAgICAgICAgICAgICBbR05EXS0tLSggMikgR3JvdW5kCisgICAgICAgKDEyKSAgICAgICAgICAgICAgICAgICAgICBbKzV2XS0tLSgxNCkgUmVzZXQKKyAgICAgICAoMTMpICAgICAgICAgICAgICAgICAgICAgIFtHTkRdLS0tKDE1KSBSZWFkIC8gV3JpdGUKKyAgTGluZSAoMTQpLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKDEzKSBDb250cm9sbGVyIFNlbGVjdCAxCisgICAgICAgKDE1KQorICBJbml0ICgxNiktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0oMTIpIENvbnRyb2xsZXIgU2VsZWN0IDIKK1NlbGVjdCAoMTcpLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKDE2KSBEYXRhIC8gSW5zdHJ1Y3Rpb24KK0dyb3VuZCAoMTgpLS0tW0dORF0gICAgICAgICAgICAgIFsrNXZdLS0tKDE5KSBMRUQgKworR3JvdW5kICgxOSktLS1bR05EXQorR3JvdW5kICgyMCktLS1bR05EXSAgICAgICAgICAgICAgRSAgICBBICAgICAgICAgICAgIFZhbHVlczoKK0dyb3VuZCAoMjEpLS0tW0dORF0gICAgICAgW0dORF0tLS1bUDFdLS0tKDE4KSBWZWUgICAgLSBSID0gUmVzaXN0b3IgPSAyMiBvaG0KK0dyb3VuZCAoMjIpLS0tW0dORF0gICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgLSBQMSA9IFByZXNldCA9IDEwIEtvaG0KK0dyb3VuZCAoMjMpLS0tW0dORF0gICAgICAgLS0tLSAgIFMgLS0tLS0tKCAzKSBWMCAgICAgLSBQMiA9IFByZXNldCA9IDEgS29obQorR3JvdW5kICgyNCktLS1bR05EXSAgICAgICB8ICB8CitHcm91bmQgKDI1KS0tLVtHTkRdIFtHTkRdLS0tW1AyXS0tLVtSXS0tLSgyMCkgTEVEIC0KKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzQuIFVTRVJTUEFDRSBQUk9HUkFNTUlORworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBjZmFnMTI4NjRiZmIgZGVzY3JpYmVzIGEgZnJhbWVidWZmZXIgZGV2aWNlICgvZGV2L2ZiWCkuCisKK0l0IGhhcyBhIHNpemUgb2YgMTAyNCBieXRlcyA9IDEgS2J5dGUuCitFYWNoIGJpdCByZXByZXNlbnRzIG9uZSBwaXhlbC4gSWYgdGhlIGJpdCBpcyBoaWdoLCB0aGUgcGl4ZWwgd2lsbAordHVybiBvbi4gSWYgdGhlIHBpeGVsIGlzIGxvdywgdGhlIHBpeGVsIHdpbGwgdHVybiBvZmYuCisKK1lvdSBjYW4gdXNlIHRoZSBmcmFtZWJ1ZmZlciBhcyBhIGZpbGU6IGZvcGVuLCBmd3JpdGUsIGZjbG9zZS4uLgorQWx0aG91Z2ggdGhlIExDRCB3b24ndCBnZXQgdXBkYXRlZCB1bnRpbCB0aGUgbmV4dCByZWZyZXNoIHRpbWUgYXJyaXZlcy4KKworQWxzbywgeW91IGNhbiBtbWFwIHRoZSBmcmFtZWJ1ZmZlcjogb3BlbiAmIG1tYXAsIG11bm1hcCAmIGNsb3NlLi4uCit3aGljaCBpcyB0aGUgYmVzdCBvcHRpb24gZm9yIG1vc3QgdXNlcy4KKworQ2hlY2sgRG9jdW1lbnRhdGlvbi9hdXhkaXNwbGF5L2NmYWcxMjg2NGItZXhhbXBsZS5jCitmb3IgYSByZWFsIHdvcmtpbmcgdXNlcnNwYWNlIGNvbXBsZXRlIHByb2dyYW0gd2l0aCB1c2FnZSBleGFtcGxlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXV4ZGlzcGxheS9jZmFnMTI4NjRiLWV4YW1wbGUuYyBiL0RvY3VtZW50YXRpb24vYXV4ZGlzcGxheS9jZmFnMTI4NjRiLWV4YW1wbGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzgyM2ZmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9hdXhkaXNwbGF5L2NmYWcxMjg2NGItZXhhbXBsZS5jCkBAIC0wLDAgKzEsMjgxIEBACisvKgorICogICAgRmlsZW5hbWU6IGNmYWcxMjg2NGItZXhhbXBsZS5jCisgKiAgICAgVmVyc2lvbjogMC4xLjAKKyAqIERlc2NyaXB0aW9uOiBjZmFnMTI4NjRiIExDRCB1c2Vyc3BhY2UgZXhhbXBsZSBwcm9ncmFtCisgKiAgICAgTGljZW5zZTogR1BMdjIKKyAqCisgKiAgICAgIEF1dGhvcjogQ29weXJpZ2h0IChDKSBNaWd1ZWwgT2plZGEgU2FuZG9uaXMKKyAqICAgICAgICBEYXRlOiAyMDA2LTEwLTMxCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqCisgKi8KKworLyoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogc3RhcnQgb2YgY2ZhZzEyODY0YiBjb2RlCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisKKyNkZWZpbmUgQ0ZBRzEyODY0Ql9XSURUSAkJKDEyOCkKKyNkZWZpbmUgQ0ZBRzEyODY0Ql9IRUlHSFQJCSg2NCkKKyNkZWZpbmUgQ0ZBRzEyODY0Ql9TSVpFCQkJKDEyOCAqIDY0IC8gOCkKKyNkZWZpbmUgQ0ZBRzEyODY0Ql9CUEIJCQkoOCkKKyNkZWZpbmUgQ0ZBRzEyODY0Ql9BRERSRVNTKHgsIHkpCSgoeSkgKiBDRkFHMTI4NjRCX1dJRFRIIC8gXAorCQkJCQlDRkFHMTI4NjRCX0JQQiArICh4KSAvIENGQUcxMjg2NEJfQlBCKQorI2RlZmluZSBDRkFHMTI4NjRCX0JJVChuKQkJKCgodW5zaWduZWQgY2hhcikgMSkgPDwgKG4pKQorCisjdW5kZWYgQ0ZBRzEyODY0Ql9ET0NIRUNLCisjaWZkZWYgQ0ZBRzEyODY0Ql9ET0NIRUNLCisJI2RlZmluZSBDRkFHMTI4NjRCX0NIRUNLKHgsIHkpCQkoKHgpIDwgQ0ZBRzEyODY0Ql9XSURUSCAmJiBcCisJCQkJCQkoeSkgPCBDRkFHMTI4NjRCX0hFSUdIVCkKKyNlbHNlCisJI2RlZmluZSBDRkFHMTI4NjRCX0NIRUNLKHgsIHkpCQkoMSkKKyNlbmRpZgorCitpbnQgY2ZhZzEyODY0Yl9mZDsKK3Vuc2lnbmVkIGNoYXIgKiBjZmFnMTI4NjRiX21lbTsKK3Vuc2lnbmVkIGNoYXIgY2ZhZzEyODY0Yl9idWZmZXJbQ0ZBRzEyODY0Ql9TSVpFXTsKKworLyoKKyAqIGluaXQgYSBjZmFnMTI4NjRiIGZyYW1lYnVmZmVyIGRldmljZQorICoKKyAqIE5vIGVycm9yOiAgICAgICByZXR1cm4gPSAwCisgKiBVbmFibGUgdG8gb3BlbjogcmV0dXJuID0gLTEKKyAqIFVuYWJsZSB0byBtbWFwOiByZXR1cm4gPSAtMgorICovCitzdGF0aWMgaW50IGNmYWcxMjg2NGJfaW5pdChjaGFyICpwYXRoKQoreworCWNmYWcxMjg2NGJfZmQgPSBvcGVuKHBhdGgsIE9fUkRXUik7CisJaWYgKGNmYWcxMjg2NGJfZmQgPT0gLTEpCisJCXJldHVybiAtMTsKKworCWNmYWcxMjg2NGJfbWVtID0gbW1hcCgwLCBDRkFHMTI4NjRCX1NJWkUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCisJCU1BUF9TSEFSRUQsIGNmYWcxMjg2NGJfZmQsIDApOworCWlmIChjZmFnMTI4NjRiX21lbSA9PSBNQVBfRkFJTEVEKSB7CisJCWNsb3NlKGNmYWcxMjg2NGJfZmQpOworCQlyZXR1cm4gLTI7CisJfQorCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBleGl0IGEgY2ZhZzEyODY0YiBmcmFtZWJ1ZmZlciBkZXZpY2UKKyAqLworc3RhdGljIHZvaWQgY2ZhZzEyODY0Yl9leGl0KHZvaWQpCit7CisJbXVubWFwKGNmYWcxMjg2NGJfbWVtLCBDRkFHMTI4NjRCX1NJWkUpOworCWNsb3NlKGNmYWcxMjg2NGJfZmQpOworfQorCisvKgorICogc2V0ICh4LCB5KSBwaXhlbAorICovCitzdGF0aWMgdm9pZCBjZmFnMTI4NjRiX3NldCh1bnNpZ25lZCBjaGFyIHgsIHVuc2lnbmVkIGNoYXIgeSkKK3sKKwlpZiAoQ0ZBRzEyODY0Ql9DSEVDSyh4LCB5KSkKKwkJY2ZhZzEyODY0Yl9idWZmZXJbQ0ZBRzEyODY0Ql9BRERSRVNTKHgsIHkpXSB8PQorCQkJQ0ZBRzEyODY0Ql9CSVQoeCAlIENGQUcxMjg2NEJfQlBCKTsKK30KKworLyoKKyAqIHVuc2V0ICh4LCB5KSBwaXhlbAorICovCitzdGF0aWMgdm9pZCBjZmFnMTI4NjRiX3Vuc2V0KHVuc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgY2hhciB5KQoreworCWlmIChDRkFHMTI4NjRCX0NIRUNLKHgsIHkpKQorCQljZmFnMTI4NjRiX2J1ZmZlcltDRkFHMTI4NjRCX0FERFJFU1MoeCwgeSldICY9CisJCQl+Q0ZBRzEyODY0Ql9CSVQoeCAlIENGQUcxMjg2NEJfQlBCKTsKK30KKworLyoKKyAqIGlzIHNldCAoeCwgeSkgcGl4ZWw/CisgKgorICogUGl4ZWwgb2ZmOiByZXR1cm4gPSAwCisgKiBQaXhlbCBvbjogIHJldHVybiA9IDEKKyAqLworc3RhdGljIHVuc2lnbmVkIGNoYXIgY2ZhZzEyODY0Yl9pc3NldCh1bnNpZ25lZCBjaGFyIHgsIHVuc2lnbmVkIGNoYXIgeSkKK3sKKwlpZiAoQ0ZBRzEyODY0Ql9DSEVDSyh4LCB5KSkKKwkJaWYgKGNmYWcxMjg2NGJfYnVmZmVyW0NGQUcxMjg2NEJfQUREUkVTUyh4LCB5KV0gJgorCQkJQ0ZBRzEyODY0Ql9CSVQoeCAlIENGQUcxMjg2NEJfQlBCKSkKKwkJCXJldHVybiAxOworCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBub3QgKHgsIHkpIHBpeGVsCisgKi8KK3N0YXRpYyB2b2lkIGNmYWcxMjg2NGJfbm90KHVuc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgY2hhciB5KQoreworCWlmIChjZmFnMTI4NjRiX2lzc2V0KHgsIHkpKQorCQljZmFnMTI4NjRiX3Vuc2V0KHgsIHkpOworCWVsc2UKKwkJY2ZhZzEyODY0Yl9zZXQoeCwgeSk7Cit9CisKKy8qCisgKiBmaWxsIChzZXQgYWxsIHBpeGVscykKKyAqLworc3RhdGljIHZvaWQgY2ZhZzEyODY0Yl9maWxsKHZvaWQpCit7CisJdW5zaWduZWQgc2hvcnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBDRkFHMTI4NjRCX1NJWkU7IGkrKykKKwkJY2ZhZzEyODY0Yl9idWZmZXJbaV0gPSAweEZGOworfQorCisvKgorICogY2xlYXIgKHVuc2V0IGFsbCBwaXhlbHMpCisgKi8KK3N0YXRpYyB2b2lkIGNmYWcxMjg2NGJfY2xlYXIodm9pZCkKK3sKKwl1bnNpZ25lZCBzaG9ydCBpOworCisJZm9yIChpID0gMDsgaSA8IENGQUcxMjg2NEJfU0laRTsgaSsrKQorCQljZmFnMTI4NjRiX2J1ZmZlcltpXSA9IDA7Cit9CisKKy8qCisgKiBmb3JtYXQgYSBbMTI4KjY0XSBtYXRyaXgKKyAqCisgKiBQaXhlbCBvZmY6IHNyY1tpXSA9IDAKKyAqIFBpeGVsIG9uOiAgc3JjW2ldID4gMAorICovCitzdGF0aWMgdm9pZCBjZmFnMTI4NjRiX2Zvcm1hdCh1bnNpZ25lZCBjaGFyICogbWF0cml4KQoreworCXVuc2lnbmVkIGNoYXIgaSwgaiwgbjsKKworCWZvciAoaSA9IDA7IGkgPCBDRkFHMTI4NjRCX0hFSUdIVDsgaSsrKQorCWZvciAoaiA9IDA7IGogPCBDRkFHMTI4NjRCX1dJRFRIIC8gQ0ZBRzEyODY0Ql9CUEI7IGorKykgeworCQljZmFnMTI4NjRiX2J1ZmZlcltpICogQ0ZBRzEyODY0Ql9XSURUSCAvIENGQUcxMjg2NEJfQlBCICsKKwkJCWpdID0gMDsKKwkJZm9yIChuID0gMDsgbiA8IENGQUcxMjg2NEJfQlBCOyBuKyspCisJCQlpZiAobWF0cml4W2kgKiBDRkFHMTI4NjRCX1dJRFRIICsKKwkJCQlqICogQ0ZBRzEyODY0Ql9CUEIgKyBuXSkKKwkJCQljZmFnMTI4NjRiX2J1ZmZlcltpICogQ0ZBRzEyODY0Ql9XSURUSCAvCisJCQkJCUNGQUcxMjg2NEJfQlBCICsgal0gfD0KKwkJCQkJQ0ZBRzEyODY0Ql9CSVQobik7CisJfQorfQorCisvKgorICogYmxpdCBidWZmZXIgdG8gbGNkCisgKi8KK3N0YXRpYyB2b2lkIGNmYWcxMjg2NGJfYmxpdCh2b2lkKQoreworCW1lbWNweShjZmFnMTI4NjRiX21lbSwgY2ZhZzEyODY0Yl9idWZmZXIsIENGQUcxMjg2NEJfU0laRSk7Cit9CisKKy8qCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBlbmQgb2YgY2ZhZzEyODY0YiBjb2RlCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNkZWZpbmUgRVhBTVBMRVMJNgorCitzdGF0aWMgdm9pZCBleGFtcGxlKHVuc2lnbmVkIGNoYXIgbikKK3sKKwl1bnNpZ25lZCBzaG9ydCBpLCBqOworCXVuc2lnbmVkIGNoYXIgbWF0cml4W0NGQUcxMjg2NEJfV0lEVEggKiBDRkFHMTI4NjRCX0hFSUdIVF07CisKKwlpZiAobiA+IEVYQU1QTEVTKQorCQlyZXR1cm47CisKKwlwcmludGYoIkV4YW1wbGUgJWkvJWkgLSAiLCBuLCBFWEFNUExFUyk7CisKKwlzd2l0Y2ggKG4pIHsKKwljYXNlIDE6CisJCXByaW50ZigiRHJhdyBwb2ludHMgc2V0dGluZyBiaXRzIik7CisJCWNmYWcxMjg2NGJfY2xlYXIoKTsKKwkJZm9yIChpID0gMDsgaSA8IENGQUcxMjg2NEJfV0lEVEg7IGkgKz0gMikKKwkJCWZvciAoaiA9IDA7IGogPCBDRkFHMTI4NjRCX0hFSUdIVDsgaiArPSAyKQorCQkJCWNmYWcxMjg2NGJfc2V0KGksIGopOworCQlicmVhazsKKworCWNhc2UgMjoKKwkJcHJpbnRmKCJDbGVhciB0aGUgTENEIik7CisJCWNmYWcxMjg2NGJfY2xlYXIoKTsKKwkJYnJlYWs7CisKKwljYXNlIDM6CisJCXByaW50ZigiRHJhdyByb3dzIGZvcm1hdHRpbmcgYSBbMTI4KjY0XSBtYXRyaXgiKTsKKwkJbWVtc2V0KG1hdHJpeCwgMCwgQ0ZBRzEyODY0Ql9XSURUSCAqIENGQUcxMjg2NEJfSEVJR0hUKTsKKwkJZm9yIChpID0gMDsgaSA8IENGQUcxMjg2NEJfV0lEVEg7IGkrKykKKwkJCWZvciAoaiA9IDA7IGogPCBDRkFHMTI4NjRCX0hFSUdIVDsgaiArPSAyKQorCQkJCW1hdHJpeFtqICogQ0ZBRzEyODY0Ql9XSURUSCArIGldID0gMTsKKwkJY2ZhZzEyODY0Yl9mb3JtYXQobWF0cml4KTsKKwkJYnJlYWs7CisKKwljYXNlIDQ6CisJCXByaW50ZigiRmlsbCB0aGUgbGNkIik7CisJCWNmYWcxMjg2NGJfZmlsbCgpOworCQlicmVhazsKKworCWNhc2UgNToKKwkJcHJpbnRmKCJEcmF3IGNvbHVtbnMgdW5zZXR0aW5nIGJpdHMiKTsKKwkJZm9yIChpID0gMDsgaSA8IENGQUcxMjg2NEJfV0lEVEg7IGkgKz0gMikKKwkJCWZvciAoaiA9IDA7IGogPCBDRkFHMTI4NjRCX0hFSUdIVDsgaisrKQorCQkJCWNmYWcxMjg2NGJfdW5zZXQoaSwgaik7CisJCWJyZWFrOworCisJY2FzZSA2OgorCQlwcmludGYoIkRvIG5lZ2F0aXZlIG5vdC1pbmcgYWxsIGJpdHMiKTsKKwkJZm9yIChpID0gMDsgaSA8IENGQUcxMjg2NEJfV0lEVEg7IGkrKykKKwkJCWZvciAoaiA9IDA7IGogPCBDRkFHMTI4NjRCX0hFSUdIVDsgaiArKykKKwkJCQljZmFnMTI4NjRiX25vdChpLCBqKTsKKwkJYnJlYWs7CisJfQorCisJcHV0cygiIC0gW1ByZXNzIEVudGVyXSIpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCXVuc2lnbmVkIGNoYXIgbjsKKworCWlmIChhcmdjICE9IDIpIHsKKwkJcHJpbnRmKAorCQkJIlNpbnRheDogICVzIGZiZGV2XG4iCisJCQkiVXN1YWxseTogL2Rldi9mYjAsIC9kZXYvZmIxLi4uXG4iLCBhcmd2WzBdKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWlmIChjZmFnMTI4NjRiX2luaXQoYXJndlsxXSkpIHsKKwkJcHJpbnRmKCJDYW4ndCBpbml0ICVzIGZiZGV2XG4iLCBhcmd2WzFdKTsKKwkJcmV0dXJuIC0yOworCX0KKworCWZvciAobiA9IDE7IG4gPD0gRVhBTVBMRVM7IG4rKykgeworCQlleGFtcGxlKG4pOworCQljZmFnMTI4NjRiX2JsaXQoKTsKKwkJd2hpbGUgKGdldGNoYXIoKSAhPSAnXG4nKTsKKwl9CisKKwljZmFnMTI4NjRiX2V4aXQoKTsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hdXhkaXNwbGF5L2tzMDEwOCBiL0RvY3VtZW50YXRpb24vYXV4ZGlzcGxheS9rczAxMDgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRkZGEwYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYXV4ZGlzcGxheS9rczAxMDgKQEAgLTAsMCArMSw1NSBAQAorCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCWtzMDEwOCBMQ0QgQ29udHJvbGxlciBEcml2ZXIgRG9jdW1lbnRhdGlvbgorCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitMaWNlbnNlOgkJR1BMdjIKK0F1dGhvciAmIE1haW50YWluZXI6CU1pZ3VlbCBPamVkYSBTYW5kb25pcworRGF0ZToJCQkyMDA2LTEwLTI3CisKKworCistLS0tLS0tLQorMC4gSU5ERVgKKy0tLS0tLS0tCisKKwkxLiBEUklWRVIgSU5GT1JNQVRJT04KKwkyLiBERVZJQ0UgSU5GT1JNQVRJT04KKwkzLiBXSVJJTkcKKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzEuIERSSVZFUiBJTkZPUk1BVElPTgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBrczAxMDggTENEIGNvbnRyb2xsZXIuCisKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyLiBERVZJQ0UgSU5GT1JNQVRJT04KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitNYW51ZmFjdHVyZXI6CVNhbXN1bmcKK0RldmljZSBOYW1lOglLUzAxMDggTENEIENvbnRyb2xsZXIKK0RldmljZSBDb2RlOglrczAxMDgKK1dlYnBhZ2U6CS0KK0RldmljZSBXZWJwYWdlOgktCitUeXBlOgkJTENEIENvbnRyb2xsZXIgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkgQ29udHJvbGxlcikKK1dpZHRoOgkJNjQKK0hlaWdodDoJCTY0CitDb2xvcnM6CQkyIChCL04pCitQYWdlczoJCTgKK0FkZHJlc3NlczoJNjQgZWFjaCBwYWdlCitEYXRhIHNpemU6CTEgYnl0ZSBlYWNoIGFkZHJlc3MKK01lbW9yeSBzaXplOgk4ICogNjQgKiAxID0gNTEyIGJ5dGVzCisKKworLS0tLS0tLS0tCiszLiBXSVJJTkcKKy0tLS0tLS0tLQorCitUaGUgZHJpdmVyIHN1cHBvcnRzIGRhdGEgcGFyYWxsZWwgcG9ydCB3aXJpbmcuCisKK0lmIHlvdSBhcmVuJ3QgYnVpbGRpbmcgTENEIHJlbGF0ZWQgaGFyZHdhcmUsIHlvdSBzaG91bGQgY2hlY2sKK3lvdXIgTENEIHNwZWNpZmljIHdpcmluZyBpbmZvcm1hdGlvbiBpbiB0aGUgc2FtZSBmb2xkZXIuCisKK0ZvciBleGFtcGxlLCBjaGVjayBEb2N1bWVudGF0aW9uL2F1eGRpc3BsYXkvY2ZhZzEyODY0Yi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYmFja2xpZ2h0L2xwODU1eC1kcml2ZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9iYWNrbGlnaHQvbHA4NTV4LWRyaXZlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFiY2UyNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYmFja2xpZ2h0L2xwODU1eC1kcml2ZXIudHh0CkBAIC0wLDAgKzEsNjYgQEAKK0tlcm5lbCBkcml2ZXIgbHA4NTV4Cis9PT09PT09PT09PT09PT09PT09PQorCitCYWNrbGlnaHQgZHJpdmVyIGZvciBMUDg1NXggSUNzCisKK1N1cHBvcnRlZCBjaGlwczoKKwlUZXhhcyBJbnN0cnVtZW50cyBMUDg1NTAsIExQODU1MSwgTFA4NTUyLCBMUDg1NTMsIExQODU1NSwgTFA4NTU2IGFuZAorCUxQODU1NworCitBdXRob3I6IE1pbG8oV29vZ3lvbSkgS2ltIDxtaWxvLmtpbUB0aS5jb20+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCisqIEJyaWdodG5lc3MgY29udHJvbAorCitCcmlnaHRuZXNzIGNhbiBiZSBjb250cm9sbGVkIGJ5IHRoZSBwd20gaW5wdXQgb3IgdGhlIGkyYyBjb21tYW5kLgorVGhlIGxwODU1eCBkcml2ZXIgc3VwcG9ydHMgYm90aCBjYXNlcy4KKworKiBEZXZpY2UgYXR0cmlidXRlcworCisxKSBibF9jdGxfbW9kZQorQmFja2xpZ2h0IGNvbnRyb2wgbW9kZS4KK1ZhbHVlIDogcHdtIGJhc2VkIG9yIHJlZ2lzdGVyIGJhc2VkCisKKzIpIGNoaXBfaWQKK1RoZSBscDg1NXggY2hpcCBpZC4KK1ZhbHVlIDogbHA4NTUwL2xwODU1MS9scDg1NTIvbHA4NTUzL2xwODU1NS9scDg1NTYvbHA4NTU3CisKK1BsYXRmb3JtIGRhdGEgZm9yIGxwODU1eAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZvciBzdXBwb3J0aW5nIHBsYXRmb3JtIHNwZWNpZmljIGRhdGEsIHRoZSBscDg1NXggcGxhdGZvcm0gZGF0YSBjYW4gYmUgdXNlZC4KKworKiBuYW1lIDogQmFja2xpZ2h0IGRyaXZlciBuYW1lLiBJZiBpdCBpcyBub3QgZGVmaW5lZCwgZGVmYXVsdCBuYW1lIGlzIHNldC4KKyogZGV2aWNlX2NvbnRyb2wgOiBWYWx1ZSBvZiBERVZJQ0UgQ09OVFJPTCByZWdpc3Rlci4KKyogaW5pdGlhbF9icmlnaHRuZXNzIDogSW5pdGlhbCB2YWx1ZSBvZiBiYWNrbGlnaHQgYnJpZ2h0bmVzcy4KKyogcGVyaW9kX25zIDogUGxhdGZvcm0gc3BlY2lmaWMgUFdNIHBlcmlvZCB2YWx1ZS4gdW5pdCBpcyBuYW5vLgorCSAgICAgT25seSB2YWxpZCB3aGVuIGJyaWdodG5lc3MgaXMgcHdtIGlucHV0IG1vZGUuCisqIHNpemVfcHJvZ3JhbSA6IFRvdGFsIHNpemUgb2YgbHA4NTV4X3JvbV9kYXRhLgorKiByb21fZGF0YSA6IExpc3Qgb2YgbmV3IGVlcHJvbS9lcHJvbSByZWdpc3RlcnMuCisKK2V4YW1wbGUgMSkgbHA4NTUyIHBsYXRmb3JtIGRhdGEgOiBpMmMgcmVnaXN0ZXIgbW9kZSB3aXRoIG5ldyBlZXByb20gZGF0YQorCisjZGVmaW5lIEVFUFJPTV9BNV9BRERSCTB4QTUKKyNkZWZpbmUgRUVQUk9NX0E1X1ZBTAkweDRmCS8qIEVOX1ZTWU5DPTAgKi8KKworc3RhdGljIHN0cnVjdCBscDg1NXhfcm9tX2RhdGEgbHA4NTUyX2VlcHJvbV9hcnJbXSA9IHsKKwl7RUVQUk9NX0E1X0FERFIsIEVFUFJPTV9BNV9WQUx9LAorfTsKKworc3RhdGljIHN0cnVjdCBscDg1NXhfcGxhdGZvcm1fZGF0YSBscDg1NTJfcGRhdGEgPSB7CisJLm5hbWUgPSAibGNkLWJsIiwKKwkuZGV2aWNlX2NvbnRyb2wgPSBJMkNfQ09ORklHKExQODU1MiksCisJLmluaXRpYWxfYnJpZ2h0bmVzcyA9IElOSVRJQUxfQlJULAorCS5zaXplX3Byb2dyYW0gPSBBUlJBWV9TSVpFKGxwODU1Ml9lZXByb21fYXJyKSwKKwkucm9tX2RhdGEgPSBscDg1NTJfZWVwcm9tX2FyciwKK307CisKK2V4YW1wbGUgMikgbHA4NTU2IHBsYXRmb3JtIGRhdGEgOiBwd20gaW5wdXQgbW9kZSB3aXRoIGRlZmF1bHQgcm9tIGRhdGEKKworc3RhdGljIHN0cnVjdCBscDg1NXhfcGxhdGZvcm1fZGF0YSBscDg1NTZfcGRhdGEgPSB7CisJLmRldmljZV9jb250cm9sID0gUFdNX0NPTkZJRyhMUDg1NTYpLAorCS5pbml0aWFsX2JyaWdodG5lc3MgPSBJTklUSUFMX0JSVCwKKwkucGVyaW9kX25zID0gMTAwMDAwMCwKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2JhZF9tZW1vcnkudHh0IGIvRG9jdW1lbnRhdGlvbi9iYWRfbWVtb3J5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjg0MTYyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9iYWRfbWVtb3J5LnR4dApAQCAtMCwwICsxLDQ1IEBACitNYXJjaCAyMDA4CitKYW4tU2ltb24gTW9lbGxlciwgZGw5cGZAZ214LmRlCisKKworSG93IHRvIGRlYWwgd2l0aCBiYWQgbWVtb3J5IGUuZy4gcmVwb3J0ZWQgYnkgbWVtdGVzdDg2KyA/CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworVGhlcmUgYXJlIHRocmVlIHBvc3NpYmlsaXRpZXMgSSBrbm93IG9mOgorCisxKSBSZWluc2VydC9zd2FwIHRoZSBtZW1vcnkgbW9kdWxlcworCisyKSBCdXkgbmV3IG1vZHVsZXMgKGJlc3QhKSBvciB0cnkgdG8gZXhjaGFuZ2UgdGhlIG1lbW9yeQorICAgaWYgeW91IGhhdmUgc3BhcmUtcGFydHMKKworMykgVXNlIEJhZFJBTSBvciBtZW1tYXAKKworVGhpcyBIb3d0byBpcyBhYm91dCBudW1iZXIgMykgLgorCisKK0JhZFJBTQorIyMjIyMjCitCYWRSQU0gaXMgdGhlIGFjdGl2ZWx5IGRldmVsb3BlZCBhbmQgYXZhaWxhYmxlIGFzIGtlcm5lbC1wYXRjaAoraGVyZTogIGh0dHA6Ly9yaWNrLnZhbnJlaW4ub3JnL2xpbnV4L2JhZHJhbS8KKworRm9yIG1vcmUgZGV0YWlscyBzZWUgdGhlIEJhZFJBTSBkb2N1bWVudGF0aW9uLgorCittZW1tYXAKKyMjIyMjIworCittZW1tYXAgaXMgYWxyZWFkeSBpbiB0aGUga2VybmVsIGFuZCB1c2FibGUgYXMga2VybmVsLXBhcmFtZXRlciBhdAorYm9vdC10aW1lLiAgSXRzIHN5bnRheCBpcyBzbGlnaHRseSBzdHJhbmdlIGFuZCB5b3UgbWF5IG5lZWQgdG8KK2NhbGN1bGF0ZSB0aGUgdmFsdWVzIGJ5IHlvdXJzZWxmIQorCitTeW50YXggdG8gZXhjbHVkZSBhIG1lbW9yeSBhcmVhIChzZWUga2VybmVsLXBhcmFtZXRlcnMudHh0IGZvciBkZXRhaWxzKToKK21lbW1hcD08c2l6ZT4kPGFkZHJlc3M+CisKK0V4YW1wbGU6IG1lbXRlc3Q4NisgcmVwb3J0ZWQgaGVyZSBlcnJvcnMgYXQgYWRkcmVzcyAweDE4NjkxNDU4LCAweDE4Njk4NDI0IGFuZAorICAgICAgICAgc29tZSBvdGhlcnMuIEFsbCBoYWQgMHgxODY5eHh4eCBpbiBjb21tb24sIHNvIEkgY2hvc2UgYSBwYXR0ZXJuIG9mCisgICAgICAgICAweDE4NjkwMDAwLDB4ZmZmZjAwMDAuCisKK1dpdGggdGhlIG51bWJlcnMgb2YgdGhlIGV4YW1wbGUgYWJvdmU6CittZW1tYXA9NjRLJDB4MTg2OTAwMDAKKyBvcgorbWVtbWFwPTB4MTAwMDAkMHgxODY5MDAwMAorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Jhc2ljX3Byb2ZpbGluZy50eHQgYi9Eb2N1bWVudGF0aW9uL2Jhc2ljX3Byb2ZpbGluZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc2NGU5ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYmFzaWNfcHJvZmlsaW5nLnR4dApAQCAtMCwwICsxLDU2IEBACitUaGVzZSBpbnN0cnVjdGlvbnMgYXJlIGRlbGliZXJhdGVseSB2ZXJ5IGJhc2ljLiBJZiB5b3Ugd2FudCBzb21ldGhpbmcgY2xldmVyLAorZ28gcmVhZCB0aGUgcmVhbCBkb2NzIDstKSBQbGVhc2UgZG9uJ3QgYWRkIG1vcmUgc3R1ZmYsIGJ1dCBmZWVsIGZyZWUgdG8gCitjb3JyZWN0IG15IG1pc3Rha2VzIDstKSAgICAobWJsaWdoQGFyYWNuZXQuY29tKQorVGhhbmtzIHRvIEpvaG4gTGV2b24sIERhdmUgSGFuc2VuLCBldCBhbC4gZm9yIGhlbHAgd3JpdGluZyB0aGlzLgorCis8dGVzdD4gaXMgdGhlIHRoaW5nIHlvdSdyZSB0cnlpbmcgdG8gbWVhc3VyZS4KK01ha2Ugc3VyZSB5b3UgaGF2ZSB0aGUgY29ycmVjdCBTeXN0ZW0ubWFwIC8gdm1saW51eCByZWZlcmVuY2VkIQorCitJdCBpcyBwcm9iYWJseSBlYXNpZXN0IHRvIHVzZSAibWFrZSBpbnN0YWxsIiBmb3IgbGludXggYW5kIGhhY2sKKy9zYmluL2luc3RhbGxrZXJuZWwgdG8gY29weSB2bWxpbnV4IHRvIC9ib290LCBpbiBhZGRpdGlvbiB0byB2bWxpbnV6LAorY29uZmlnLCBTeXN0ZW0ubWFwLCB3aGljaCBhcmUgdXN1YWxseSBpbnN0YWxsZWQgYnkgZGVmYXVsdC4KKworUmVhZHByb2ZpbGUKKy0tLS0tLS0tLS0tCitBIHJlY2VudCByZWFkcHJvZmlsZSBjb21tYW5kIGlzIG5lZWRlZCBmb3IgMi42LCBzdWNoIGFzIGZvdW5kIGluIHV0aWwtbGludXgKKzIuMTJhLCB3aGljaCBjYW4gYmUgZG93bmxvYWRlZCBmcm9tOgorCitodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvCisKK01vc3QgZGlzdHJpYnV0aW9ucyB3aWxsIHNoaXAgaXQgYWxyZWFkeS4KKworQWRkICJwcm9maWxlPTIiIHRvIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lLgorCitjbGVhcgkJcmVhZHByb2ZpbGUgLXIKKwkJPHRlc3Q+CitkdW1wIG91dHB1dAlyZWFkcHJvZmlsZSAtbSAvYm9vdC9TeXN0ZW0ubWFwID4gY2FwdHVyZWRfcHJvZmlsZQorCitPcHJvZmlsZQorLS0tLS0tLS0KKworR2V0IHRoZSBzb3VyY2UgKHNlZSBDaGFuZ2VzIGZvciByZXF1aXJlZCB2ZXJzaW9uKSBmcm9tCitodHRwOi8vb3Byb2ZpbGUuc291cmNlZm9yZ2UubmV0LyBhbmQgYWRkICJpZGxlPXBvbGwiIHRvIHRoZSBrZXJuZWwgY29tbWFuZAorbGluZS4KKworQ29uZmlndXJlIHdpdGggQ09ORklHX1BST0ZJTElORz15IGFuZCBDT05GSUdfT1BST0ZJTEU9eSAmIHJlYm9vdCBvbiBuZXcga2VybmVsCisKKy4vY29uZmlndXJlIC0td2l0aC1rZXJuZWwtc3VwcG9ydAorbWFrZSBpbnN0YWxsCisKK0ZvciBzdXBlcmlvciByZXN1bHRzLCBiZSBzdXJlIHRvIGVuYWJsZSB0aGUgbG9jYWwgQVBJQy4gSWYgb3ByZXBvcnQgc2VlcworYSAwSHogQ1BVLCBBUElDIHdhcyBub3Qgb24uIEJlIGF3YXJlIHRoYXQgaWRsZT1wb2xsIG1heSBtZWFuIGEgcGVyZm9ybWFuY2UKK3BlbmFsdHkuCisKK09uZSB0aW1lIHNldHVwOgorCQlvcGNvbnRyb2wgLS1zZXR1cCAtLXZtbGludXg9L2Jvb3Qvdm1saW51eAorCitjbGVhcgkJb3Bjb250cm9sIC0tcmVzZXQKK3N0YXJ0CQlvcGNvbnRyb2wgLS1zdGFydAorCQk8dGVzdD4KK3N0b3AJCW9wY29udHJvbCAtLXN0b3AKK2R1bXAgb3V0cHV0CW9wcmVwb3J0ID4gIG91dHB1dF9maWxlCisKK1RvIG9ubHkgcmVwb3J0IG9uIHRoZSBrZXJuZWwsIHJ1biBvcHJlcG9ydCAtbCAvYm9vdC92bWxpbnV4ID4gb3V0cHV0X2ZpbGUKKworQSByZXNldCBpcyBuZWVkZWQgdG8gY2xlYXIgb2xkIHN0YXRpc3RpY3MsIHdoaWNoIHN1cnZpdmUgYSByZWJvb3QuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYmNhY2hlLnR4dCBiL0RvY3VtZW50YXRpb24vYmNhY2hlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmI2YzMxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9iY2FjaGUudHh0CkBAIC0wLDAgKzEsNDQ4IEBACitTYXkgeW91J3ZlIGdvdCBhIGJpZyBzbG93IHJhaWQgNiwgYW5kIGFuIFgtMjVFIG9yIHRocmVlLiBXb3VsZG4ndCBpdCBiZQorbmljZSBpZiB5b3UgY291bGQgdXNlIHRoZW0gYXMgY2FjaGUuLi4gSGVuY2UgYmNhY2hlLgorCitXaWtpIGFuZCBnaXQgcmVwb3NpdG9yaWVzIGFyZSBhdDoKKyAgaHR0cDovL2JjYWNoZS5ldmlscGllcGlyYXRlLm9yZworICBodHRwOi8vZXZpbHBpZXBpcmF0ZS5vcmcvZ2l0L2xpbnV4LWJjYWNoZS5naXQKKyAgaHR0cDovL2V2aWxwaWVwaXJhdGUub3JnL2dpdC9iY2FjaGUtdG9vbHMuZ2l0CisKK0l0J3MgZGVzaWduZWQgYXJvdW5kIHRoZSBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgU1NEcyAtIGl0IG9ubHkgYWxsb2NhdGVzCitpbiBlcmFzZSBibG9jayBzaXplZCBidWNrZXRzLCBhbmQgaXQgdXNlcyBhIGh5YnJpZCBidHJlZS9sb2cgdG8gdHJhY2sgY2FjaGVkCitleHRhbnRzICh3aGljaCBjYW4gYmUgYW55d2hlcmUgZnJvbSBhIHNpbmdsZSBzZWN0b3IgdG8gdGhlIGJ1Y2tldCBzaXplKS4gSXQncworZGVzaWduZWQgdG8gYXZvaWQgcmFuZG9tIHdyaXRlcyBhdCBhbGwgY29zdHM7IGl0IGZpbGxzIHVwIGFuIGVyYXNlIGJsb2NrCitzZXF1ZW50aWFsbHksIHRoZW4gaXNzdWVzIGEgZGlzY2FyZCBiZWZvcmUgcmV1c2luZyBpdC4KKworQm90aCB3cml0ZXRocm91Z2ggYW5kIHdyaXRlYmFjayBjYWNoaW5nIGFyZSBzdXBwb3J0ZWQuIFdyaXRlYmFjayBkZWZhdWx0cyB0bworb2ZmLCBidXQgY2FuIGJlIHN3aXRjaGVkIG9uIGFuZCBvZmYgYXJiaXRyYXJpbHkgYXQgcnVudGltZS4gQmNhY2hlIGdvZXMgdG8KK2dyZWF0IGxlbmd0aHMgdG8gcHJvdGVjdCB5b3VyIGRhdGEgLSBpdCByZWxpYWJseSBoYW5kbGVzIHVuY2xlYW4gc2h1dGRvd24uIChJdAorZG9lc24ndCBldmVuIGhhdmUgYSBub3Rpb24gb2YgYSBjbGVhbiBzaHV0ZG93bjsgYmNhY2hlIHNpbXBseSBkb2Vzbid0IHJldHVybgord3JpdGVzIGFzIGNvbXBsZXRlZCB1bnRpbCB0aGV5J3JlIG9uIHN0YWJsZSBzdG9yYWdlKS4KKworV3JpdGViYWNrIGNhY2hpbmcgY2FuIHVzZSBtb3N0IG9mIHRoZSBjYWNoZSBmb3IgYnVmZmVyaW5nIHdyaXRlcyAtIHdyaXRpbmcKK2RpcnR5IGRhdGEgdG8gdGhlIGJhY2tpbmcgZGV2aWNlIGlzIGFsd2F5cyBkb25lIHNlcXVlbnRpYWxseSwgc2Nhbm5pbmcgZnJvbSB0aGUKK3N0YXJ0IHRvIHRoZSBlbmQgb2YgdGhlIGluZGV4LgorCitTaW5jZSByYW5kb20gSU8gaXMgd2hhdCBTU0RzIGV4Y2VsIGF0LCB0aGVyZSBnZW5lcmFsbHkgd29uJ3QgYmUgbXVjaCBiZW5lZml0Cit0byBjYWNoaW5nIGxhcmdlIHNlcXVlbnRpYWwgSU8uIEJjYWNoZSBkZXRlY3RzIHNlcXVlbnRpYWwgSU8gYW5kIHNraXBzIGl0OworaXQgYWxzbyBrZWVwcyBhIHJvbGxpbmcgYXZlcmFnZSBvZiB0aGUgSU8gc2l6ZXMgcGVyIHRhc2ssIGFuZCBhcyBsb25nIGFzIHRoZQorYXZlcmFnZSBpcyBhYm92ZSB0aGUgY3V0b2ZmIGl0IHdpbGwgc2tpcCBhbGwgSU8gZnJvbSB0aGF0IHRhc2sgLSBpbnN0ZWFkIG9mCitjYWNoaW5nIHRoZSBmaXJzdCA1MTJrIGFmdGVyIGV2ZXJ5IHNlZWsuIEJhY2t1cHMgYW5kIGxhcmdlIGZpbGUgY29waWVzIHNob3VsZAordGh1cyBlbnRpcmVseSBieXBhc3MgdGhlIGNhY2hlLgorCitJbiB0aGUgZXZlbnQgb2YgYSBkYXRhIElPIGVycm9yIG9uIHRoZSBmbGFzaCBpdCB3aWxsIHRyeSB0byByZWNvdmVyIGJ5IHJlYWRpbmcKK2Zyb20gZGlzayBvciBpbnZhbGlkYXRpbmcgY2FjaGUgZW50cmllcy4gIEZvciB1bnJlY292ZXJhYmxlIGVycm9ycyAobWV0YSBkYXRhCitvciBkaXJ0eSBkYXRhKSwgY2FjaGluZyBpcyBhdXRvbWF0aWNhbGx5IGRpc2FibGVkOyBpZiBkaXJ0eSBkYXRhIHdhcyBwcmVzZW50CitpbiB0aGUgY2FjaGUgaXQgZmlyc3QgZGlzYWJsZXMgd3JpdGViYWNrIGNhY2hpbmcgYW5kIHdhaXRzIGZvciBhbGwgZGlydHkgZGF0YQordG8gYmUgZmx1c2hlZC4KKworR2V0dGluZyBzdGFydGVkOgorWW91J2xsIG5lZWQgbWFrZS1iY2FjaGUgZnJvbSB0aGUgYmNhY2hlLXRvb2xzIHJlcG9zaXRvcnkuIEJvdGggdGhlIGNhY2hlIGRldmljZQorYW5kIGJhY2tpbmcgZGV2aWNlIG11c3QgYmUgZm9ybWF0dGVkIGJlZm9yZSB1c2UuCisgIG1ha2UtYmNhY2hlIC1CIC9kZXYvc2RiCisgIG1ha2UtYmNhY2hlIC1DIC9kZXYvc2RjCisKK21ha2UtYmNhY2hlIGhhcyB0aGUgYWJpbGl0eSB0byBmb3JtYXQgbXVsdGlwbGUgZGV2aWNlcyBhdCB0aGUgc2FtZSB0aW1lIC0gaWYKK3lvdSBmb3JtYXQgeW91ciBiYWNraW5nIGRldmljZXMgYW5kIGNhY2hlIGRldmljZSBhdCB0aGUgc2FtZSB0aW1lLCB5b3Ugd29uJ3QKK2hhdmUgdG8gbWFudWFsbHkgYXR0YWNoOgorICBtYWtlLWJjYWNoZSAtQiAvZGV2L3NkYSAvZGV2L3NkYiAtQyAvZGV2L3NkYworCitiY2FjaGUtdG9vbHMgbm93IHNoaXBzIHVkZXYgcnVsZXMsIGFuZCBiY2FjaGUgZGV2aWNlcyBhcmUga25vd24gdG8gdGhlIGtlcm5lbAoraW1tZWRpYXRlbHkuICBXaXRob3V0IHVkZXYsIHlvdSBjYW4gbWFudWFsbHkgcmVnaXN0ZXIgZGV2aWNlcyBsaWtlIHRoaXM6CisKKyAgZWNobyAvZGV2L3NkYiA+IC9zeXMvZnMvYmNhY2hlL3JlZ2lzdGVyCisgIGVjaG8gL2Rldi9zZGMgPiAvc3lzL2ZzL2JjYWNoZS9yZWdpc3RlcgorCitSZWdpc3RlcmluZyB0aGUgYmFja2luZyBkZXZpY2UgbWFrZXMgdGhlIGJjYWNoZSBkZXZpY2Ugc2hvdyB1cCBpbiAvZGV2OyB5b3UgY2FuCitub3cgZm9ybWF0IGl0IGFuZCB1c2UgaXQgYXMgbm9ybWFsLiBCdXQgdGhlIGZpcnN0IHRpbWUgdXNpbmcgYSBuZXcgYmNhY2hlCitkZXZpY2UsIGl0J2xsIGJlIHJ1bm5pbmcgaW4gcGFzc3Rocm91Z2ggbW9kZSB1bnRpbCB5b3UgYXR0YWNoIGl0IHRvIGEgY2FjaGUuCitTZWUgdGhlIHNlY3Rpb24gb24gYXR0YWNoaW5nLgorCitUaGUgZGV2aWNlcyBzaG93IHVwIGFzOgorCisgIC9kZXYvYmNhY2hlPE4+CisKK0FzIHdlbGwgYXMgKHdpdGggdWRldik6CisKKyAgL2Rldi9iY2FjaGUvYnktdXVpZC88dXVpZD4KKyAgL2Rldi9iY2FjaGUvYnktbGFiZWwvPGxhYmVsPgorCitUbyBnZXQgc3RhcnRlZDoKKworICBta2ZzLmV4dDQgL2Rldi9iY2FjaGUwCisgIG1vdW50IC9kZXYvYmNhY2hlMCAvbW50CisKK1lvdSBjYW4gY29udHJvbCBiY2FjaGUgZGV2aWNlcyB0aHJvdWdoIHN5c2ZzIGF0IC9zeXMvYmxvY2svYmNhY2hlPE4+L2JjYWNoZSAuCisKK0NhY2hlIGRldmljZXMgYXJlIG1hbmFnZWQgYXMgc2V0czsgbXVsdGlwbGUgY2FjaGVzIHBlciBzZXQgaXNuJ3Qgc3VwcG9ydGVkIHlldAorYnV0IHdpbGwgYWxsb3cgZm9yIG1pcnJvcmluZyBvZiBtZXRhZGF0YSBhbmQgZGlydHkgZGF0YSBpbiB0aGUgZnV0dXJlLiBZb3VyIG5ldworY2FjaGUgc2V0IHNob3dzIHVwIGFzIC9zeXMvZnMvYmNhY2hlLzxVVUlEPgorCitBVFRBQ0hJTkc6CisKK0FmdGVyIHlvdXIgY2FjaGUgZGV2aWNlIGFuZCBiYWNraW5nIGRldmljZSBhcmUgcmVnaXN0ZXJlZCwgdGhlIGJhY2tpbmcgZGV2aWNlCittdXN0IGJlIGF0dGFjaGVkIHRvIHlvdXIgY2FjaGUgc2V0IHRvIGVuYWJsZSBjYWNoaW5nLiBBdHRhY2hpbmcgYSBiYWNraW5nCitkZXZpY2UgdG8gYSBjYWNoZSBzZXQgaXMgZG9uZSB0aHVzbHksIHdpdGggdGhlIFVVSUQgb2YgdGhlIGNhY2hlIHNldCBpbgorL3N5cy9mcy9iY2FjaGU6CisKKyAgZWNobyA8Q1NFVC1VVUlEPiA+IC9zeXMvYmxvY2svYmNhY2hlMC9iY2FjaGUvYXR0YWNoCisKK1RoaXMgb25seSBoYXMgdG8gYmUgZG9uZSBvbmNlLiBUaGUgbmV4dCB0aW1lIHlvdSByZWJvb3QsIGp1c3QgcmVyZWdpc3RlciBhbGwKK3lvdXIgYmNhY2hlIGRldmljZXMuIElmIGEgYmFja2luZyBkZXZpY2UgaGFzIGRhdGEgaW4gYSBjYWNoZSBzb21ld2hlcmUsIHRoZQorL2Rldi9iY2FjaGU8Tj4gZGV2aWNlIHdvbid0IGJlIGNyZWF0ZWQgdW50aWwgdGhlIGNhY2hlIHNob3dzIHVwIC0gcGFydGljdWxhcmx5CitpbXBvcnRhbnQgaWYgeW91IGhhdmUgd3JpdGViYWNrIGNhY2hpbmcgdHVybmVkIG9uLgorCitJZiB5b3UncmUgYm9vdGluZyB1cCBhbmQgeW91ciBjYWNoZSBkZXZpY2UgaXMgZ29uZSBhbmQgbmV2ZXIgY29taW5nIGJhY2ssIHlvdQorY2FuIGZvcmNlIHJ1biB0aGUgYmFja2luZyBkZXZpY2U6CisKKyAgZWNobyAxID4gL3N5cy9ibG9jay9zZGIvYmNhY2hlL3J1bm5pbmcKKworKFlvdSBuZWVkIHRvIHVzZSAvc3lzL2Jsb2NrL3NkYiAob3Igd2hhdGV2ZXIgeW91ciBiYWNraW5nIGRldmljZSBpcyBjYWxsZWQpLCBub3QKKy9zeXMvYmxvY2svYmNhY2hlMCwgYmVjYXVzZSBiY2FjaGUwIGRvZXNuJ3QgZXhpc3QgeWV0LiBJZiB5b3UncmUgdXNpbmcgYQorcGFydGl0aW9uLCB0aGUgYmNhY2hlIGRpcmVjdG9yeSB3b3VsZCBiZSBhdCAvc3lzL2Jsb2NrL3NkYi9zZGIyL2JjYWNoZSkKKworVGhlIGJhY2tpbmcgZGV2aWNlIHdpbGwgc3RpbGwgdXNlIHRoYXQgY2FjaGUgc2V0IGlmIGl0IHNob3dzIHVwIGluIHRoZSBmdXR1cmUsCitidXQgYWxsIHRoZSBjYWNoZWQgZGF0YSB3aWxsIGJlIGludmFsaWRhdGVkLiBJZiB0aGVyZSB3YXMgZGlydHkgZGF0YSBpbiB0aGUKK2NhY2hlLCBkb24ndCBleHBlY3QgdGhlIGZpbGVzeXN0ZW0gdG8gYmUgcmVjb3ZlcmFibGUgLSB5b3Ugd2lsbCBoYXZlIG1hc3NpdmUKK2ZpbGVzeXN0ZW0gY29ycnVwdGlvbiwgdGhvdWdoIGV4dDQncyBmc2NrIGRvZXMgd29yayBtaXJhY2xlcy4KKworRVJST1IgSEFORExJTkc6CisKK0JjYWNoZSB0cmllcyB0byB0cmFuc3BhcmVudGx5IGhhbmRsZSBJTyBlcnJvcnMgdG8vZnJvbSB0aGUgY2FjaGUgZGV2aWNlIHdpdGhvdXQKK2FmZmVjdGluZyBub3JtYWwgb3BlcmF0aW9uOyBpZiBpdCBzZWVzIHRvbyBtYW55IGVycm9ycyAodGhlIHRocmVzaG9sZCBpcworY29uZmlndXJhYmxlLCBhbmQgZGVmYXVsdHMgdG8gMCkgaXQgc2h1dHMgZG93biB0aGUgY2FjaGUgZGV2aWNlIGFuZCBzd2l0Y2hlcyBhbGwKK3RoZSBiYWNraW5nIGRldmljZXMgdG8gcGFzc3Rocm91Z2ggbW9kZS4KKworIC0gRm9yIHJlYWRzIGZyb20gdGhlIGNhY2hlLCBpZiB0aGV5IGVycm9yIHdlIGp1c3QgcmV0cnkgdGhlIHJlYWQgZnJvbSB0aGUKKyAgIGJhY2tpbmcgZGV2aWNlLgorCisgLSBGb3Igd3JpdGV0aHJvdWdoIHdyaXRlcywgaWYgdGhlIHdyaXRlIHRvIHRoZSBjYWNoZSBlcnJvcnMgd2UganVzdCBzd2l0Y2ggdG8KKyAgIGludmFsaWRhdGluZyB0aGUgZGF0YSBhdCB0aGF0IGxiYSBpbiB0aGUgY2FjaGUgKGkuZS4gdGhlIHNhbWUgdGhpbmcgd2UgZG8gZm9yCisgICBhIHdyaXRlIHRoYXQgYnlwYXNzZXMgdGhlIGNhY2hlKQorCisgLSBGb3Igd3JpdGViYWNrIHdyaXRlcywgd2UgY3VycmVudGx5IHBhc3MgdGhhdCBlcnJvciBiYWNrIHVwIHRvIHRoZQorICAgZmlsZXN5c3RlbS91c2Vyc3BhY2UuIFRoaXMgY291bGQgYmUgaW1wcm92ZWQgLSB3ZSBjb3VsZCByZXRyeSBpdCBhcyBhIHdyaXRlCisgICB0aGF0IHNraXBzIHRoZSBjYWNoZSBzbyB3ZSBkb24ndCBoYXZlIHRvIGVycm9yIHRoZSB3cml0ZS4KKworIC0gV2hlbiB3ZSBkZXRhY2gsIHdlIGZpcnN0IHRyeSB0byBmbHVzaCBhbnkgZGlydHkgZGF0YSAoaWYgd2Ugd2VyZSBydW5uaW5nIGluCisgICB3cml0ZWJhY2sgbW9kZSkuIEl0IGN1cnJlbnRseSBkb2Vzbid0IGRvIGFueXRoaW5nIGludGVsbGlnZW50IGlmIGl0IGZhaWxzIHRvCisgICByZWFkIHNvbWUgb2YgdGhlIGRpcnR5IGRhdGEsIHRob3VnaC4KKworVFJPVUJMRVNIT09USU5HIFBFUkZPUk1BTkNFOgorCitCY2FjaGUgaGFzIGEgYnVuY2ggb2YgY29uZmlnIG9wdGlvbnMgYW5kIHR1bmFibGVzLiBUaGUgZGVmYXVsdHMgYXJlIGludGVuZGVkIHRvCitiZSByZWFzb25hYmxlIGZvciB0eXBpY2FsIGRlc2t0b3AgYW5kIHNlcnZlciB3b3JrbG9hZHMsIGJ1dCB0aGV5J3JlIG5vdCB3aGF0IHlvdQord2FudCBmb3IgZ2V0dGluZyB0aGUgYmVzdCBwb3NzaWJsZSBudW1iZXJzIHdoZW4gYmVuY2htYXJraW5nLgorCisgLSBCYWQgd3JpdGUgcGVyZm9ybWFuY2UKKworICAgSWYgd3JpdGUgcGVyZm9ybWFuY2UgaXMgbm90IHdoYXQgeW91IGV4cGVjdGVkLCB5b3UgcHJvYmFibHkgd2FudGVkIHRvIGJlCisgICBydW5uaW5nIGluIHdyaXRlYmFjayBtb2RlLCB3aGljaCBpc24ndCB0aGUgZGVmYXVsdCAobm90IGR1ZSB0byBhIGxhY2sgb2YKKyAgIG1hdHVyaXR5LCBidXQgc2ltcGx5IGJlY2F1c2UgaW4gd3JpdGViYWNrIG1vZGUgeW91J2xsIGxvc2UgZGF0YSBpZiBzb21ldGhpbmcKKyAgIGhhcHBlbnMgdG8geW91ciBTU0QpCisKKyAgICMgZWNobyB3cml0ZWJhY2sgPiAvc3lzL2Jsb2NrL2JjYWNoZTAvY2FjaGVfbW9kZQorCisgLSBCYWQgcGVyZm9ybWFuY2UsIG9yIHRyYWZmaWMgbm90IGdvaW5nIHRvIHRoZSBTU0QgdGhhdCB5b3UnZCBleHBlY3QKKworICAgQnkgZGVmYXVsdCwgYmNhY2hlIGRvZXNuJ3QgY2FjaGUgZXZlcnl0aGluZy4gSXQgdHJpZXMgdG8gc2tpcCBzZXF1ZW50aWFsIElPIC0KKyAgIGJlY2F1c2UgeW91IHJlYWxseSB3YW50IHRvIGJlIGNhY2hpbmcgdGhlIHJhbmRvbSBJTywgYW5kIGlmIHlvdSBjb3B5IGEgMTAKKyAgIGdpZ2FieXRlIGZpbGUgeW91IHByb2JhYmx5IGRvbid0IHdhbnQgdGhhdCBwdXNoaW5nIDEwIGdpZ2FieXRlcyBvZiByYW5kb21seQorICAgYWNjZXNzZWQgZGF0YSBvdXQgb2YgeW91ciBjYWNoZS4KKworICAgQnV0IGlmIHlvdSB3YW50IHRvIGJlbmNobWFyayByZWFkcyBmcm9tIGNhY2hlLCBhbmQgeW91IHN0YXJ0IG91dCB3aXRoIGZpbworICAgd3JpdGluZyBhbiA4IGdpZ2FieXRlIHRlc3QgZmlsZSAtIHNvIHlvdSB3YW50IHRvIGRpc2FibGUgdGhhdC4KKworICAgIyBlY2hvIDAgPiAvc3lzL2Jsb2NrL2JjYWNoZTAvYmNhY2hlL3NlcXVlbnRpYWxfY3V0b2ZmCisKKyAgIFRvIHNldCBpdCBiYWNrIHRvIHRoZSBkZWZhdWx0ICg0IG1iKSwgZG8KKworICAgIyBlY2hvIDRNID4gL3N5cy9ibG9jay9iY2FjaGUwL2JjYWNoZS9zZXF1ZW50aWFsX2N1dG9mZgorCisgLSBUcmFmZmljJ3Mgc3RpbGwgZ29pbmcgdG8gdGhlIHNwaW5kbGUvc3RpbGwgZ2V0dGluZyBjYWNoZSBtaXNzZXMKKworICAgSW4gdGhlIHJlYWwgd29ybGQsIFNTRHMgZG9uJ3QgYWx3YXlzIGtlZXAgdXAgd2l0aCBkaXNrcyAtIHBhcnRpY3VsYXJseSB3aXRoCisgICBzbG93ZXIgU1NEcywgbWFueSBkaXNrcyBiZWluZyBjYWNoZWQgYnkgb25lIFNTRCwgb3IgbW9zdGx5IHNlcXVlbnRpYWwgSU8uIFNvCisgICB5b3Ugd2FudCB0byBhdm9pZCBiZWluZyBib3R0bGVuZWNrZWQgYnkgdGhlIFNTRCBhbmQgaGF2aW5nIGl0IHNsb3cgZXZlcnl0aGluZworICAgZG93bi4KKworICAgVG8gYXZvaWQgdGhhdCBiY2FjaGUgdHJhY2tzIGxhdGVuY3kgdG8gdGhlIGNhY2hlIGRldmljZSwgYW5kIGdyYWR1YWxseQorICAgdGhyb3R0bGVzIHRyYWZmaWMgaWYgdGhlIGxhdGVuY3kgZXhjZWVkcyBhIHRocmVzaG9sZCAoaXQgZG9lcyB0aGlzIGJ5CisgICBjcmFua2luZyBkb3duIHRoZSBzZXF1ZW50aWFsIGJ5cGFzcykuCisKKyAgIFlvdSBjYW4gZGlzYWJsZSB0aGlzIGlmIHlvdSBuZWVkIHRvIGJ5IHNldHRpbmcgdGhlIHRocmVzaG9sZHMgdG8gMDoKKworICAgIyBlY2hvIDAgPiAvc3lzL2ZzL2JjYWNoZS88Y2FjaGUgc2V0Pi9jb25nZXN0ZWRfcmVhZF90aHJlc2hvbGRfdXMKKyAgICMgZWNobyAwID4gL3N5cy9mcy9iY2FjaGUvPGNhY2hlIHNldD4vY29uZ2VzdGVkX3dyaXRlX3RocmVzaG9sZF91cworCisgICBUaGUgZGVmYXVsdCBpcyAyMDAwIHVzICgyIG1pbGxpc2Vjb25kcykgZm9yIHJlYWRzLCBhbmQgMjAwMDAgZm9yIHdyaXRlcy4KKworIC0gU3RpbGwgZ2V0dGluZyBjYWNoZSBtaXNzZXMsIG9mIHRoZSBzYW1lIGRhdGEKKworICAgT25lIGxhc3QgaXNzdWUgdGhhdCBzb21ldGltZXMgdHJpcHMgcGVvcGxlIHVwIGlzIGFjdHVhbGx5IGFuIG9sZCBidWcsIGR1ZSB0bworICAgdGhlIHdheSBjYWNoZSBjb2hlcmVuY3kgaXMgaGFuZGxlZCBmb3IgY2FjaGUgbWlzc2VzLiBJZiBhIGJ0cmVlIG5vZGUgaXMgZnVsbCwKKyAgIGEgY2FjaGUgbWlzcyB3b24ndCBiZSBhYmxlIHRvIGluc2VydCBhIGtleSBmb3IgdGhlIG5ldyBkYXRhIGFuZCB0aGUgZGF0YQorICAgd29uJ3QgYmUgd3JpdHRlbiB0byB0aGUgY2FjaGUuCisKKyAgIEluIHByYWN0aWNlIHRoaXMgaXNuJ3QgYW4gaXNzdWUgYmVjYXVzZSBhcyBzb29uIGFzIGEgd3JpdGUgY29tZXMgYWxvbmcgaXQnbGwKKyAgIGNhdXNlIHRoZSBidHJlZSBub2RlIHRvIGJlIHNwbGl0LCBhbmQgeW91IG5lZWQgYWxtb3N0IG5vIHdyaXRlIHRyYWZmaWMgZm9yCisgICB0aGlzIHRvIG5vdCBzaG93IHVwIGVub3VnaCB0byBiZSBub3RpY2VhYmxlIChlc3BlY2lhbGx5IHNpbmNlIGJjYWNoZSdzIGJ0cmVlCisgICBub2RlcyBhcmUgaHVnZSBhbmQgaW5kZXggbGFyZ2UgcmVnaW9ucyBvZiB0aGUgZGV2aWNlKS4gQnV0IHdoZW4geW91J3JlCisgICBiZW5jaG1hcmtpbmcsIGlmIHlvdSdyZSB0cnlpbmcgdG8gd2FybSB0aGUgY2FjaGUgYnkgcmVhZGluZyBhIGJ1bmNoIG9mIGRhdGEKKyAgIGFuZCB0aGVyZSdzIG5vIG90aGVyIHRyYWZmaWMgLSB0aGF0IGNhbiBiZSBhIHByb2JsZW0uCisKKyAgIFNvbHV0aW9uOiB3YXJtIHRoZSBjYWNoZSBieSBkb2luZyB3cml0ZXMsIG9yIHVzZSB0aGUgdGVzdGluZyBicmFuY2ggKHRoZXJlJ3MKKyAgIGEgZml4IGZvciB0aGUgaXNzdWUgdGhlcmUpLgorCitTWVNGUyAtIEJBQ0tJTkcgREVWSUNFOgorCitBdmFpbGFibGUgYXQgL3N5cy9ibG9jay88YmRldj4vYmNhY2hlLCAvc3lzL2Jsb2NrL2JjYWNoZSovYmNhY2hlIGFuZAorKGlmIGF0dGFjaGVkKSAvc3lzL2ZzL2JjYWNoZS88Y3NldC11dWlkPi9iZGV2KgorCithdHRhY2gKKyAgRWNobyB0aGUgVVVJRCBvZiBhIGNhY2hlIHNldCB0byB0aGlzIGZpbGUgdG8gZW5hYmxlIGNhY2hpbmcuCisKK2NhY2hlX21vZGUKKyAgQ2FuIGJlIG9uZSBvZiBlaXRoZXIgd3JpdGV0aHJvdWdoLCB3cml0ZWJhY2ssIHdyaXRlYXJvdW5kIG9yIG5vbmUuCisKK2NsZWFyX3N0YXRzCisgIFdyaXRpbmcgdG8gdGhpcyBmaWxlIHJlc2V0cyB0aGUgcnVubmluZyB0b3RhbCBzdGF0cyAobm90IHRoZSBkYXkvaG91ci81IG1pbnV0ZQorICBkZWNheWluZyB2ZXJzaW9ucykuCisKK2RldGFjaAorICBXcml0ZSB0byB0aGlzIGZpbGUgdG8gZGV0YWNoIGZyb20gYSBjYWNoZSBzZXQuIElmIHRoZXJlIGlzIGRpcnR5IGRhdGEgaW4gdGhlCisgIGNhY2hlLCBpdCB3aWxsIGJlIGZsdXNoZWQgZmlyc3QuCisKK2RpcnR5X2RhdGEKKyAgQW1vdW50IG9mIGRpcnR5IGRhdGEgZm9yIHRoaXMgYmFja2luZyBkZXZpY2UgaW4gdGhlIGNhY2hlLiBDb250aW51b3VzbHkKKyAgdXBkYXRlZCB1bmxpa2UgdGhlIGNhY2hlIHNldCdzIHZlcnNpb24sIGJ1dCBtYXkgYmUgc2xpZ2h0bHkgb2ZmLgorCitsYWJlbAorICBOYW1lIG9mIHVuZGVybHlpbmcgZGV2aWNlLgorCityZWFkYWhlYWQKKyAgU2l6ZSBvZiByZWFkYWhlYWQgdGhhdCBzaG91bGQgYmUgcGVyZm9ybWVkLiAgRGVmYXVsdHMgdG8gMC4gIElmIHNldCB0byBlLmcuCisgIDFNLCBpdCB3aWxsIHJvdW5kIGNhY2hlIG1pc3MgcmVhZHMgdXAgdG8gdGhhdCBzaXplLCBidXQgd2l0aG91dCBvdmVybGFwcGluZworICBleGlzdGluZyBjYWNoZSBlbnRyaWVzLgorCitydW5uaW5nCisgIDEgaWYgYmNhY2hlIGlzIHJ1bm5pbmcgKGkuZS4gd2hldGhlciB0aGUgL2Rldi9iY2FjaGUgZGV2aWNlIGV4aXN0cywgd2hldGhlcgorICBpdCdzIGluIHBhc3N0aHJvdWdoIG1vZGUgb3IgY2FjaGluZykuCisKK3NlcXVlbnRpYWxfY3V0b2ZmCisgIEEgc2VxdWVudGlhbCBJTyB3aWxsIGJ5cGFzcyB0aGUgY2FjaGUgb25jZSBpdCBwYXNzZXMgdGhpcyB0aHJlc2hvbGQ7IHRoZQorICBtb3N0IHJlY2VudCAxMjggSU9zIGFyZSB0cmFja2VkIHNvIHNlcXVlbnRpYWwgSU8gY2FuIGJlIGRldGVjdGVkIGV2ZW4gd2hlbgorICBpdCBpc24ndCBhbGwgZG9uZSBhdCBvbmNlLgorCitzZXF1ZW50aWFsX21lcmdlCisgIElmIG5vbiB6ZXJvLCBiY2FjaGUga2VlcHMgYSBsaXN0IG9mIHRoZSBsYXN0IDEyOCByZXF1ZXN0cyBzdWJtaXR0ZWQgdG8gY29tcGFyZQorICBhZ2FpbnN0IGFsbCBuZXcgcmVxdWVzdHMgdG8gZGV0ZXJtaW5lIHdoaWNoIG5ldyByZXF1ZXN0cyBhcmUgc2VxdWVudGlhbAorICBjb250aW51YXRpb25zIG9mIHByZXZpb3VzIHJlcXVlc3RzIGZvciB0aGUgcHVycG9zZSBvZiBkZXRlcm1pbmluZyBzZXF1ZW50aWFsCisgIGN1dG9mZi4gVGhpcyBpcyBuZWNlc3NhcnkgaWYgdGhlIHNlcXVlbnRpYWwgY3V0b2ZmIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGUKKyAgbWF4aW11bSBhY2NlcHRhYmxlIHNlcXVlbnRpYWwgc2l6ZSBmb3IgYW55IHNpbmdsZSByZXF1ZXN0LiAKKworc3RhdGUKKyAgVGhlIGJhY2tpbmcgZGV2aWNlIGNhbiBiZSBpbiBvbmUgb2YgZm91ciBkaWZmZXJlbnQgc3RhdGVzOgorCisgIG5vIGNhY2hlOiBIYXMgbmV2ZXIgYmVlbiBhdHRhY2hlZCB0byBhIGNhY2hlIHNldC4KKworICBjbGVhbjogUGFydCBvZiBhIGNhY2hlIHNldCwgYW5kIHRoZXJlIGlzIG5vIGNhY2hlZCBkaXJ0eSBkYXRhLgorCisgIGRpcnR5OiBQYXJ0IG9mIGEgY2FjaGUgc2V0LCBhbmQgdGhlcmUgaXMgY2FjaGVkIGRpcnR5IGRhdGEuCisKKyAgaW5jb25zaXN0ZW50OiBUaGUgYmFja2luZyBkZXZpY2Ugd2FzIGZvcmNpYmx5IHJ1biBieSB0aGUgdXNlciB3aGVuIHRoZXJlIHdhcworICBkaXJ0eSBkYXRhIGNhY2hlZCBidXQgdGhlIGNhY2hlIHNldCB3YXMgdW5hdmFpbGFibGU7IHdoYXRldmVyIGRhdGEgd2FzIG9uIHRoZQorICBiYWNraW5nIGRldmljZSBoYXMgbGlrZWx5IGJlZW4gY29ycnVwdGVkLgorCitzdG9wCisgIFdyaXRlIHRvIHRoaXMgZmlsZSB0byBzaHV0IGRvd24gdGhlIGJjYWNoZSBkZXZpY2UgYW5kIGNsb3NlIHRoZSBiYWNraW5nCisgIGRldmljZS4KKword3JpdGViYWNrX2RlbGF5CisgIFdoZW4gZGlydHkgZGF0YSBpcyB3cml0dGVuIHRvIHRoZSBjYWNoZSBhbmQgaXQgcHJldmlvdXNseSBkaWQgbm90IGNvbnRhaW4KKyAgYW55LCB3YWl0cyBzb21lIG51bWJlciBvZiBzZWNvbmRzIGJlZm9yZSBpbml0aWF0aW5nIHdyaXRlYmFjay4gRGVmYXVsdHMgdG8KKyAgMzAuCisKK3dyaXRlYmFja19wZXJjZW50CisgIElmIG5vbnplcm8sIGJjYWNoZSB0cmllcyB0byBrZWVwIGFyb3VuZCB0aGlzIHBlcmNlbnRhZ2Ugb2YgdGhlIGNhY2hlIGRpcnR5IGJ5CisgIHRocm90dGxpbmcgYmFja2dyb3VuZCB3cml0ZWJhY2sgYW5kIHVzaW5nIGEgUEQgY29udHJvbGxlciB0byBzbW9vdGhseSBhZGp1c3QKKyAgdGhlIHJhdGUuCisKK3dyaXRlYmFja19yYXRlCisgIFJhdGUgaW4gc2VjdG9ycyBwZXIgc2Vjb25kIC0gaWYgd3JpdGViYWNrX3BlcmNlbnQgaXMgbm9uemVybywgYmFja2dyb3VuZAorICB3cml0ZWJhY2sgaXMgdGhyb3R0bGVkIHRvIHRoaXMgcmF0ZS4gQ29udGludW91c2x5IGFkanVzdGVkIGJ5IGJjYWNoZSBidXQgbWF5CisgIGFsc28gYmUgc2V0IGJ5IHRoZSB1c2VyLgorCit3cml0ZWJhY2tfcnVubmluZworICBJZiBvZmYsIHdyaXRlYmFjayBvZiBkaXJ0eSBkYXRhIHdpbGwgbm90IHRha2UgcGxhY2UgYXQgYWxsLiBEaXJ0eSBkYXRhIHdpbGwKKyAgc3RpbGwgYmUgYWRkZWQgdG8gdGhlIGNhY2hlIHVudGlsIGl0IGlzIG1vc3RseSBmdWxsOyBvbmx5IG1lYW50IGZvcgorICBiZW5jaG1hcmtpbmcuIERlZmF1bHRzIHRvIG9uLgorCitTWVNGUyAtIEJBQ0tJTkcgREVWSUNFIFNUQVRTOgorCitUaGVyZSBhcmUgZGlyZWN0b3JpZXMgd2l0aCB0aGVzZSBudW1iZXJzIGZvciBhIHJ1bm5pbmcgdG90YWwsIGFzIHdlbGwgYXMKK3ZlcnNpb25zIHRoYXQgZGVjYXkgb3ZlciB0aGUgcGFzdCBkYXksIGhvdXIgYW5kIDUgbWludXRlczsgdGhleSdyZSBhbHNvCithZ2dyZWdhdGVkIGluIHRoZSBjYWNoZSBzZXQgZGlyZWN0b3J5IGFzIHdlbGwuCisKK2J5cGFzc2VkCisgIEFtb3VudCBvZiBJTyAoYm90aCByZWFkcyBhbmQgd3JpdGVzKSB0aGF0IGhhcyBieXBhc3NlZCB0aGUgY2FjaGUKKworY2FjaGVfaGl0cworY2FjaGVfbWlzc2VzCitjYWNoZV9oaXRfcmF0aW8KKyAgSGl0cyBhbmQgbWlzc2VzIGFyZSBjb3VudGVkIHBlciBpbmRpdmlkdWFsIElPIGFzIGJjYWNoZSBzZWVzIHRoZW07IGEKKyAgcGFydGlhbCBoaXQgaXMgY291bnRlZCBhcyBhIG1pc3MuCisKK2NhY2hlX2J5cGFzc19oaXRzCitjYWNoZV9ieXBhc3NfbWlzc2VzCisgIEhpdHMgYW5kIG1pc3NlcyBmb3IgSU8gdGhhdCBpcyBpbnRlbmRlZCB0byBza2lwIHRoZSBjYWNoZSBhcmUgc3RpbGwgY291bnRlZCwKKyAgYnV0IGJyb2tlbiBvdXQgaGVyZS4KKworY2FjaGVfbWlzc19jb2xsaXNpb25zCisgIENvdW50cyBpbnN0YW5jZXMgd2hlcmUgZGF0YSB3YXMgZ29pbmcgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgY2FjaGUgZnJvbSBhCisgIGNhY2hlIG1pc3MsIGJ1dCByYWNlZCB3aXRoIGEgd3JpdGUgYW5kIGRhdGEgd2FzIGFscmVhZHkgcHJlc2VudCAodXN1YWxseSAwCisgIHNpbmNlIHRoZSBzeW5jaHJvbml6YXRpb24gZm9yIGNhY2hlIG1pc3NlcyB3YXMgcmV3cml0dGVuKQorCitjYWNoZV9yZWFkYWhlYWRzCisgIENvdW50IG9mIHRpbWVzIHJlYWRhaGVhZCBvY2N1cnJlZC4KKworU1lTRlMgLSBDQUNIRSBTRVQ6CisKK0F2YWlsYWJsZSBhdCAvc3lzL2ZzL2JjYWNoZS88Y3NldC11dWlkPgorCithdmVyYWdlX2tleV9zaXplCisgIEF2ZXJhZ2UgZGF0YSBwZXIga2V5IGluIHRoZSBidHJlZS4KKworYmRldjwwLi5uPgorICBTeW1saW5rIHRvIGVhY2ggb2YgdGhlIGF0dGFjaGVkIGJhY2tpbmcgZGV2aWNlcy4KKworYmxvY2tfc2l6ZQorICBCbG9jayBzaXplIG9mIHRoZSBjYWNoZSBkZXZpY2VzLgorCitidHJlZV9jYWNoZV9zaXplCisgIEFtb3VudCBvZiBtZW1vcnkgY3VycmVudGx5IHVzZWQgYnkgdGhlIGJ0cmVlIGNhY2hlCisKK2J1Y2tldF9zaXplCisgIFNpemUgb2YgYnVja2V0cworCitjYWNoZTwwLi5uPgorICBTeW1saW5rIHRvIGVhY2ggb2YgdGhlIGNhY2hlIGRldmljZXMgY29tcHJpc2luZyB0aGlzIGNhY2hlIHNldC4gCisKK2NhY2hlX2F2YWlsYWJsZV9wZXJjZW50CisgIFBlcmNlbnRhZ2Ugb2YgY2FjaGUgZGV2aWNlIHdoaWNoIGRvZXNuJ3QgY29udGFpbiBkaXJ0eSBkYXRhLCBhbmQgY291bGQKKyAgcG90ZW50aWFsbHkgYmUgdXNlZCBmb3Igd3JpdGViYWNrLiAgVGhpcyBkb2Vzbid0IG1lYW4gdGhpcyBzcGFjZSBpc24ndCB1c2VkCisgIGZvciBjbGVhbiBjYWNoZWQgZGF0YTsgdGhlIHVudXNlZCBzdGF0aXN0aWMgKGluIHByaW9yaXR5X3N0YXRzKSBpcyB0eXBpY2FsbHkKKyAgbXVjaCBsb3dlci4KKworY2xlYXJfc3RhdHMKKyAgQ2xlYXJzIHRoZSBzdGF0aXN0aWNzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNhY2hlCisKK2RpcnR5X2RhdGEKKyAgQW1vdW50IG9mIGRpcnR5IGRhdGEgaXMgaW4gdGhlIGNhY2hlICh1cGRhdGVkIHdoZW4gZ2FyYmFnZSBjb2xsZWN0aW9uIHJ1bnMpLgorCitmbGFzaF92b2xfY3JlYXRlCisgIEVjaG9pbmcgYSBzaXplIHRvIHRoaXMgZmlsZSAoaW4gaHVtYW4gcmVhZGFibGUgdW5pdHMsIGsvTS9HKSBjcmVhdGVzIGEgdGhpbmx5CisgIHByb3Zpc2lvbmVkIHZvbHVtZSBiYWNrZWQgYnkgdGhlIGNhY2hlIHNldC4KKworaW9fZXJyb3JfaGFsZmxpZmUKK2lvX2Vycm9yX2xpbWl0CisgIFRoZXNlIGRldGVybWluZXMgaG93IG1hbnkgZXJyb3JzIHdlIGFjY2VwdCBiZWZvcmUgZGlzYWJsaW5nIHRoZSBjYWNoZS4KKyAgRWFjaCBlcnJvciBpcyBkZWNheWVkIGJ5IHRoZSBoYWxmIGxpZmUgKGluICMgaW9zKS4gIElmIHRoZSBkZWNheWluZyBjb3VudAorICByZWFjaGVzIGlvX2Vycm9yX2xpbWl0IGRpcnR5IGRhdGEgaXMgd3JpdHRlbiBvdXQgYW5kIHRoZSBjYWNoZSBpcyBkaXNhYmxlZC4KKworam91cm5hbF9kZWxheV9tcworICBKb3VybmFsIHdyaXRlcyB3aWxsIGRlbGF5IGZvciB1cCB0byB0aGlzIG1hbnkgbWlsbGlzZWNvbmRzLCB1bmxlc3MgYSBjYWNoZQorICBmbHVzaCBoYXBwZW5zIHNvb25lci4gRGVmYXVsdHMgdG8gMTAwLgorCityb290X3VzYWdlX3BlcmNlbnQKKyAgUGVyY2VudGFnZSBvZiB0aGUgcm9vdCBidHJlZSBub2RlIGluIHVzZS4gIElmIHRoaXMgZ2V0cyB0b28gaGlnaCB0aGUgbm9kZQorICB3aWxsIHNwbGl0LCBpbmNyZWFzaW5nIHRoZSB0cmVlIGRlcHRoLgorCitzdG9wCisgIFdyaXRlIHRvIHRoaXMgZmlsZSB0byBzaHV0IGRvd24gdGhlIGNhY2hlIHNldCAtIHdhaXRzIHVudGlsIGFsbCBhdHRhY2hlZAorICBiYWNraW5nIGRldmljZXMgaGF2ZSBiZWVuIHNodXQgZG93bi4KKwordHJlZV9kZXB0aAorICBEZXB0aCBvZiB0aGUgYnRyZWUgKEEgc2luZ2xlIG5vZGUgYnRyZWUgaGFzIGRlcHRoIDApLgorCit1bnJlZ2lzdGVyCisgIERldGFjaGVzIGFsbCBiYWNraW5nIGRldmljZXMgYW5kIGNsb3NlcyB0aGUgY2FjaGUgZGV2aWNlczsgaWYgZGlydHkgZGF0YSBpcworICBwcmVzZW50IGl0IHdpbGwgZGlzYWJsZSB3cml0ZWJhY2sgY2FjaGluZyBhbmQgd2FpdCBmb3IgaXQgdG8gYmUgZmx1c2hlZC4KKworU1lTRlMgLSBDQUNIRSBTRVQgSU5URVJOQUw6CisKK1RoaXMgZGlyZWN0b3J5IGFsc28gZXhwb3NlcyB0aW1pbmdzIGZvciBhIG51bWJlciBvZiBpbnRlcm5hbCBvcGVyYXRpb25zLCB3aXRoCitzZXBhcmF0ZSBmaWxlcyBmb3IgYXZlcmFnZSBkdXJhdGlvbiwgYXZlcmFnZSBmcmVxdWVuY3ksIGxhc3Qgb2NjdXJyZW5jZSBhbmQgbWF4CitkdXJhdGlvbjogZ2FyYmFnZSBjb2xsZWN0aW9uLCBidHJlZSByZWFkLCBidHJlZSBub2RlIHNvcnRzIGFuZCBidHJlZSBzcGxpdHMuCisKK2FjdGl2ZV9qb3VybmFsX2VudHJpZXMKKyAgTnVtYmVyIG9mIGpvdXJuYWwgZW50cmllcyB0aGF0IGFyZSBuZXdlciB0aGFuIHRoZSBpbmRleC4KKworYnRyZWVfbm9kZXMKKyAgVG90YWwgbm9kZXMgaW4gdGhlIGJ0cmVlLgorCitidHJlZV91c2VkX3BlcmNlbnQKKyAgQXZlcmFnZSBmcmFjdGlvbiBvZiBidHJlZSBpbiB1c2UuCisKK2JzZXRfdHJlZV9zdGF0cworICBTdGF0aXN0aWNzIGFib3V0IHRoZSBhdXhpbGlhcnkgc2VhcmNoIHRyZWVzCisKK2J0cmVlX2NhY2hlX21heF9jaGFpbgorICBMb25nZXN0IGNoYWluIGluIHRoZSBidHJlZSBub2RlIGNhY2hlJ3MgaGFzaCB0YWJsZQorCitjYWNoZV9yZWFkX3JhY2VzCisgIENvdW50cyBpbnN0YW5jZXMgd2hlcmUgd2hpbGUgZGF0YSB3YXMgYmVpbmcgcmVhZCBmcm9tIHRoZSBjYWNoZSwgdGhlIGJ1Y2tldAorICB3YXMgcmV1c2VkIGFuZCBpbnZhbGlkYXRlZCAtIGkuZS4gd2hlcmUgdGhlIHBvaW50ZXIgd2FzIHN0YWxlIGFmdGVyIHRoZSByZWFkCisgIGNvbXBsZXRlZC4gV2hlbiB0aGlzIG9jY3VycyB0aGUgZGF0YSBpcyByZXJlYWQgZnJvbSB0aGUgYmFja2luZyBkZXZpY2UuCisKK3RyaWdnZXJfZ2MKKyAgV3JpdGluZyB0byB0aGlzIGZpbGUgZm9yY2VzIGdhcmJhZ2UgY29sbGVjdGlvbiB0byBydW4uCisKK1NZU0ZTIC0gQ0FDSEUgREVWSUNFOgorCitBdmFpbGFibGUgYXQgL3N5cy9ibG9jay88Y2Rldj4vYmNhY2hlCisKK2Jsb2NrX3NpemUKKyAgTWluaW11bSBncmFudWxhcml0eSBvZiB3cml0ZXMgLSBzaG91bGQgbWF0Y2ggaGFyZHdhcmUgc2VjdG9yIHNpemUuCisKK2J0cmVlX3dyaXR0ZW4KKyAgU3VtIG9mIGFsbCBidHJlZSB3cml0ZXMsIGluIChraWxvL21lZ2EvZ2lnYSkgYnl0ZXMKKworYnVja2V0X3NpemUKKyAgU2l6ZSBvZiBidWNrZXRzCisKK2NhY2hlX3JlcGxhY2VtZW50X3BvbGljeQorICBPbmUgb2YgZWl0aGVyIGxydSwgZmlmbyBvciByYW5kb20uCisKK2Rpc2NhcmQKKyAgQm9vbGVhbjsgaWYgb24gYSBkaXNjYXJkL1RSSU0gd2lsbCBiZSBpc3N1ZWQgdG8gZWFjaCBidWNrZXQgYmVmb3JlIGl0IGlzCisgIHJldXNlZC4gRGVmYXVsdHMgdG8gb2ZmLCBzaW5jZSBTQVRBIFRSSU0gaXMgYW4gdW5xdWV1ZWQgY29tbWFuZCAoYW5kIHRodXMKKyAgc2xvdykuCisKK2ZyZWVsaXN0X3BlcmNlbnQKKyAgU2l6ZSBvZiB0aGUgZnJlZWxpc3QgYXMgYSBwZXJjZW50YWdlIG9mIG5idWNrZXRzLiBDYW4gYmUgd3JpdHRlbiB0byB0bworICBpbmNyZWFzZSB0aGUgbnVtYmVyIG9mIGJ1Y2tldHMga2VwdCBvbiB0aGUgZnJlZWxpc3QsIHdoaWNoIGxldHMgeW91CisgIGFydGlmaWNpYWxseSByZWR1Y2UgdGhlIHNpemUgb2YgdGhlIGNhY2hlIGF0IHJ1bnRpbWUuIE1vc3RseSBmb3IgdGVzdGluZworICBwdXJwb3NlcyAoaS5lLiB0ZXN0aW5nIGhvdyBkaWZmZXJlbnQgc2l6ZSBjYWNoZXMgYWZmZWN0IHlvdXIgaGl0IHJhdGUpLCBidXQKKyAgc2luY2UgYnVja2V0cyBhcmUgZGlzY2FyZGVkIHdoZW4gdGhleSBtb3ZlIG9uIHRvIHRoZSBmcmVlbGlzdCB3aWxsIGFsc28gbWFrZQorICB0aGUgU1NEJ3MgZ2FyYmFnZSBjb2xsZWN0aW9uIGVhc2llciBieSBlZmZlY3RpdmVseSBnaXZpbmcgaXQgbW9yZSByZXNlcnZlZAorICBzcGFjZS4KKworaW9fZXJyb3JzCisgIE51bWJlciBvZiBlcnJvcnMgdGhhdCBoYXZlIG9jY3VycmVkLCBkZWNheWVkIGJ5IGlvX2Vycm9yX2hhbGZsaWZlLgorCittZXRhZGF0YV93cml0dGVuCisgIFN1bSBvZiBhbGwgbm9uIGRhdGEgd3JpdGVzIChidHJlZSB3cml0ZXMgYW5kIGFsbCBvdGhlciBtZXRhZGF0YSkuCisKK25idWNrZXRzCisgIFRvdGFsIGJ1Y2tldHMgaW4gdGhpcyBjYWNoZQorCitwcmlvcml0eV9zdGF0cworICBTdGF0aXN0aWNzIGFib3V0IGhvdyByZWNlbnRseSBkYXRhIGluIHRoZSBjYWNoZSBoYXMgYmVlbiBhY2Nlc3NlZC4KKyAgVGhpcyBjYW4gcmV2ZWFsIHlvdXIgd29ya2luZyBzZXQgc2l6ZS4gIFVudXNlZCBpcyB0aGUgcGVyY2VudGFnZSBvZgorICB0aGUgY2FjaGUgdGhhdCBkb2Vzbid0IGNvbnRhaW4gYW55IGRhdGEuICBNZXRhZGF0YSBpcyBiY2FjaGUncworICBtZXRhZGF0YSBvdmVyaGVhZC4gIEF2ZXJhZ2UgaXMgdGhlIGF2ZXJhZ2UgcHJpb3JpdHkgb2YgY2FjaGUgYnVja2V0cy4KKyAgTmV4dCBpcyBhIGxpc3Qgb2YgcXVhbnRpbGVzIHdpdGggdGhlIHByaW9yaXR5IHRocmVzaG9sZCBvZiBlYWNoLgorCit3cml0dGVuCisgIFN1bSBvZiBhbGwgZGF0YSB0aGF0IGhhcyBiZWVuIHdyaXR0ZW4gdG8gdGhlIGNhY2hlOyBjb21wYXJpc29uIHdpdGgKKyAgYnRyZWVfd3JpdHRlbiBnaXZlcyB0aGUgYW1vdW50IG9mIHdyaXRlIGluZmxhdGlvbiBpbiBiY2FjaGUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2JpbmZtdF9taXNjLnR4dCBiL0RvY3VtZW50YXRpb24vYmluZm10X21pc2MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMWRlNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2JpbmZtdF9taXNjLnR4dApAQCAtMCwwICsxLDEyNCBAQAorICAgICBLZXJuZWwgU3VwcG9ydCBmb3IgbWlzY2VsbGFuZW91cyAoeW91ciBmYXZvdXJpdGUpIEJpbmFyeSBGb3JtYXRzIHYxLjEKKyAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgS2VybmVsIGZlYXR1cmUgYWxsb3dzIHlvdSB0byBpbnZva2UgYWxtb3N0IChmb3IgcmVzdHJpY3Rpb25zIHNlZSBiZWxvdykKK2V2ZXJ5IHByb2dyYW0gYnkgc2ltcGx5IHR5cGluZyBpdHMgbmFtZSBpbiB0aGUgc2hlbGwuCitUaGlzIGluY2x1ZGVzIGZvciBleGFtcGxlIGNvbXBpbGVkIEphdmEoVE0pLCBQeXRob24gb3IgRW1hY3MgcHJvZ3JhbXMuCisKK1RvIGFjaGlldmUgdGhpcyB5b3UgbXVzdCB0ZWxsIGJpbmZtdF9taXNjIHdoaWNoIGludGVycHJldGVyIGhhcyB0byBiZSBpbnZva2VkCit3aXRoIHdoaWNoIGJpbmFyeS4gQmluZm10X21pc2MgcmVjb2duaXNlcyB0aGUgYmluYXJ5LXR5cGUgYnkgbWF0Y2hpbmcgc29tZSBieXRlcworYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSB3aXRoIGEgbWFnaWMgYnl0ZSBzZXF1ZW5jZSAobWFza2luZyBvdXQgc3BlY2lmaWVkCitiaXRzKSB5b3UgaGF2ZSBzdXBwbGllZC4gQmluZm10X21pc2MgY2FuIGFsc28gcmVjb2duaXNlIGEgZmlsZW5hbWUgZXh0ZW5zaW9uCitha2EgJy5jb20nIG9yICcuZXhlJy4KKworRmlyc3QgeW91IG11c3QgbW91bnQgYmluZm10X21pc2M6CisJbW91bnQgYmluZm10X21pc2MgLXQgYmluZm10X21pc2MgL3Byb2Mvc3lzL2ZzL2JpbmZtdF9taXNjIAorCitUbyBhY3R1YWxseSByZWdpc3RlciBhIG5ldyBiaW5hcnkgdHlwZSwgeW91IGhhdmUgdG8gc2V0IHVwIGEgc3RyaW5nIGxvb2tpbmcgbGlrZQorOm5hbWU6dHlwZTpvZmZzZXQ6bWFnaWM6bWFzazppbnRlcnByZXRlcjpmbGFncyAod2hlcmUgeW91IGNhbiBjaG9vc2UgdGhlICc6JwordXBvbiB5b3VyIG5lZWRzKSBhbmQgZWNobyBpdCB0byAvcHJvYy9zeXMvZnMvYmluZm10X21pc2MvcmVnaXN0ZXIuCisKK0hlcmUgaXMgd2hhdCB0aGUgZmllbGRzIG1lYW46CisgLSAnbmFtZScgaXMgYW4gaWRlbnRpZmllciBzdHJpbmcuIEEgbmV3IC9wcm9jIGZpbGUgd2lsbCBiZSBjcmVhdGVkIHdpdGggdGhpcworICAgbmFtZSBiZWxvdyAvcHJvYy9zeXMvZnMvYmluZm10X21pc2M7IGNhbm5vdCBjb250YWluIHNsYXNoZXMgJy8nIGZvciBvYnZpb3VzCisgICByZWFzb25zLgorIC0gJ3R5cGUnIGlzIHRoZSB0eXBlIG9mIHJlY29nbml0aW9uLiBHaXZlICdNJyBmb3IgbWFnaWMgYW5kICdFJyBmb3IgZXh0ZW5zaW9uLgorIC0gJ29mZnNldCcgaXMgdGhlIG9mZnNldCBvZiB0aGUgbWFnaWMvbWFzayBpbiB0aGUgZmlsZSwgY291bnRlZCBpbiBieXRlcy4gVGhpcworICAgZGVmYXVsdHMgdG8gMCBpZiB5b3Ugb21pdCBpdCAoaS5lLiB5b3Ugd3JpdGUgJzpuYW1lOnR5cGU6Om1hZ2ljLi4uJykuIElnbm9yZWQKKyAgIHdoZW4gdXNpbmcgZmlsZW5hbWUgZXh0ZW5zaW9uIG1hdGNoaW5nLgorIC0gJ21hZ2ljJyBpcyB0aGUgYnl0ZSBzZXF1ZW5jZSBiaW5mbXRfbWlzYyBpcyBtYXRjaGluZyBmb3IuIFRoZSBtYWdpYyBzdHJpbmcKKyAgIG1heSBjb250YWluIGhleC1lbmNvZGVkIGNoYXJhY3RlcnMgbGlrZSBceDBhIG9yIFx4QTQuIE5vdGUgdGhhdCB5b3UgbXVzdAorICAgZXNjYXBlIGFueSBOVUwgYnl0ZXM7IHBhcnNpbmcgaGFsdHMgYXQgdGhlIGZpcnN0IG9uZS4gSW4gYSBzaGVsbCBlbnZpcm9ubWVudAorICAgeW91IG1pZ2h0IGhhdmUgdG8gd3JpdGUgXFx4MGEgdG8gcHJldmVudCB0aGUgc2hlbGwgZnJvbSBlYXRpbmcgeW91ciBcLgorICAgSWYgeW91IGNob3NlIGZpbGVuYW1lIGV4dGVuc2lvbiBtYXRjaGluZywgdGhpcyBpcyB0aGUgZXh0ZW5zaW9uIHRvIGJlCisgICByZWNvZ25pc2VkICh3aXRob3V0IHRoZSAnLicsIHRoZSBceDBhIHNwZWNpYWxzIGFyZSBub3QgYWxsb3dlZCkuIEV4dGVuc2lvbgorICAgbWF0Y2hpbmcgaXMgY2FzZSBzZW5zaXRpdmUsIGFuZCBzbGFzaGVzICcvJyBhcmUgbm90IGFsbG93ZWQhCisgLSAnbWFzaycgaXMgYW4gKG9wdGlvbmFsLCBkZWZhdWx0cyB0byBhbGwgMHhmZikgbWFzay4gWW91IGNhbiBtYXNrIG91dCBzb21lCisgICBiaXRzIGZyb20gbWF0Y2hpbmcgYnkgc3VwcGx5aW5nIGEgc3RyaW5nIGxpa2UgbWFnaWMgYW5kIGFzIGxvbmcgYXMgbWFnaWMuCisgICBUaGUgbWFzayBpcyBhbmRlZCB3aXRoIHRoZSBieXRlIHNlcXVlbmNlIG9mIHRoZSBmaWxlLiBOb3RlIHRoYXQgeW91IG11c3QKKyAgIGVzY2FwZSBhbnkgTlVMIGJ5dGVzOyBwYXJzaW5nIGhhbHRzIGF0IHRoZSBmaXJzdCBvbmUuIElnbm9yZWQgd2hlbiB1c2luZworICAgZmlsZW5hbWUgZXh0ZW5zaW9uIG1hdGNoaW5nLgorIC0gJ2ludGVycHJldGVyJyBpcyB0aGUgcHJvZ3JhbSB0aGF0IHNob3VsZCBiZSBpbnZva2VkIHdpdGggdGhlIGJpbmFyeSBhcyBmaXJzdAorICAgYXJndW1lbnQgKHNwZWNpZnkgdGhlIGZ1bGwgcGF0aCkKKyAtICdmbGFncycgaXMgYW4gb3B0aW9uYWwgZmllbGQgdGhhdCBjb250cm9scyBzZXZlcmFsIGFzcGVjdHMgb2YgdGhlIGludm9jYXRpb24KKyAgIG9mIHRoZSBpbnRlcnByZXRlci4gSXQgaXMgYSBzdHJpbmcgb2YgY2FwaXRhbCBsZXR0ZXJzLCBlYWNoIGNvbnRyb2xzIGEKKyAgIGNlcnRhaW4gYXNwZWN0LiBUaGUgZm9sbG93aW5nIGZsYWdzIGFyZSBzdXBwb3J0ZWQgLQorICAgICAgJ1AnIC0gcHJlc2VydmUtYXJndlswXS4gTGVnYWN5IGJlaGF2aW9yIG9mIGJpbmZtdF9taXNjIGlzIHRvIG92ZXJ3cml0ZQorICAgICAgICAgICAgdGhlIG9yaWdpbmFsIGFyZ3ZbMF0gd2l0aCB0aGUgZnVsbCBwYXRoIHRvIHRoZSBiaW5hcnkuIFdoZW4gdGhpcworICAgICAgICAgICAgZmxhZyBpcyBpbmNsdWRlZCwgYmluZm10X21pc2Mgd2lsbCBhZGQgYW4gYXJndW1lbnQgdG8gdGhlIGFyZ3VtZW50CisgICAgICAgICAgICB2ZWN0b3IgZm9yIHRoaXMgcHVycG9zZSwgdGh1cyBwcmVzZXJ2aW5nIHRoZSBvcmlnaW5hbCBhcmd2WzBdLgorICAgICAgICAgICAgZS5nLiBJZiB5b3VyIGludGVycCBpcyBzZXQgdG8gL2Jpbi9mb28gYW5kIHlvdSBydW4gYGJsYWhgICh3aGljaCBpcworICAgICAgICAgICAgaW4gL3Vzci9sb2NhbC9iaW4pLCB0aGVuIHRoZSBrZXJuZWwgd2lsbCBleGVjdXRlIC9iaW4vZm9vIHdpdGgKKyAgICAgICAgICAgIGFyZ3ZbXSBzZXQgdG8gWyIvYmluL2ZvbyIsICIvdXNyL2xvY2FsL2Jpbi9ibGFoIiwgImJsYWgiXS4gIFRoZQorICAgICAgICAgICAgaW50ZXJwIGhhcyB0byBiZSBhd2FyZSBvZiB0aGlzIHNvIGl0IGNhbiBleGVjdXRlIC91c3IvbG9jYWwvYmluL2JsYWgKKyAgICAgICAgICAgIHdpdGggYXJndltdIHNldCB0byBbImJsYWgiXS4KKyAgICAgICdPJyAtIG9wZW4tYmluYXJ5LiBMZWdhY3kgYmVoYXZpb3Igb2YgYmluZm10X21pc2MgaXMgdG8gcGFzcyB0aGUgZnVsbCBwYXRoCisgICAgICAgICAgICBvZiB0aGUgYmluYXJ5IHRvIHRoZSBpbnRlcnByZXRlciBhcyBhbiBhcmd1bWVudC4gV2hlbiB0aGlzIGZsYWcgaXMKKyAgICAgICAgICAgIGluY2x1ZGVkLCBiaW5mbXRfbWlzYyB3aWxsIG9wZW4gdGhlIGZpbGUgZm9yIHJlYWRpbmcgYW5kIHBhc3MgaXRzCisgICAgICAgICAgICBkZXNjcmlwdG9yIGFzIGFuIGFyZ3VtZW50LCBpbnN0ZWFkIG9mIHRoZSBmdWxsIHBhdGgsIHRodXMgYWxsb3dpbmcKKyAgICAgICAgICAgIHRoZSBpbnRlcnByZXRlciB0byBleGVjdXRlIG5vbi1yZWFkYWJsZSBiaW5hcmllcy4gVGhpcyBmZWF0dXJlCisgICAgICAgICAgICBzaG91bGQgYmUgdXNlZCB3aXRoIGNhcmUgLSB0aGUgaW50ZXJwcmV0ZXIgaGFzIHRvIGJlIHRydXN0ZWQgbm90IHRvCisgICAgICAgICAgICBlbWl0IHRoZSBjb250ZW50cyBvZiB0aGUgbm9uLXJlYWRhYmxlIGJpbmFyeS4KKyAgICAgICdDJyAtIGNyZWRlbnRpYWxzLiBDdXJyZW50bHksIHRoZSBiZWhhdmlvciBvZiBiaW5mbXRfbWlzYyBpcyB0byBjYWxjdWxhdGUKKyAgICAgICAgICAgIHRoZSBjcmVkZW50aWFscyBhbmQgc2VjdXJpdHkgdG9rZW4gb2YgdGhlIG5ldyBwcm9jZXNzIGFjY29yZGluZyB0bworICAgICAgICAgICAgdGhlIGludGVycHJldGVyLiBXaGVuIHRoaXMgZmxhZyBpcyBpbmNsdWRlZCwgdGhlc2UgYXR0cmlidXRlcyBhcmUKKyAgICAgICAgICAgIGNhbGN1bGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBiaW5hcnkuIEl0IGFsc28gaW1wbGllcyB0aGUgJ08nIGZsYWcuCisgICAgICAgICAgICBUaGlzIGZlYXR1cmUgc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXJlIGFzIHRoZSBpbnRlcnByZXRlcgorICAgICAgICAgICAgd2lsbCBydW4gd2l0aCByb290IHBlcm1pc3Npb25zIHdoZW4gYSBzZXR1aWQgYmluYXJ5IG93bmVkIGJ5IHJvb3QKKyAgICAgICAgICAgIGlzIHJ1biB3aXRoIGJpbmZtdF9taXNjLgorCisKK1RoZXJlIGFyZSBzb21lIHJlc3RyaWN0aW9uczoKKyAtIHRoZSB3aG9sZSByZWdpc3RlciBzdHJpbmcgbWF5IG5vdCBleGNlZWQgMTkyMCBjaGFyYWN0ZXJzCisgLSB0aGUgbWFnaWMgbXVzdCByZXNpZGUgaW4gdGhlIGZpcnN0IDEyOCBieXRlcyBvZiB0aGUgZmlsZSwgaS5lLgorICAgb2Zmc2V0K3NpemUobWFnaWMpIGhhcyB0byBiZSBsZXNzIHRoYW4gMTI4CisgLSB0aGUgaW50ZXJwcmV0ZXIgc3RyaW5nIG1heSBub3QgZXhjZWVkIDEyNyBjaGFyYWN0ZXJzCisKK1RvIHVzZSBiaW5mbXRfbWlzYyB5b3UgaGF2ZSB0byBtb3VudCBpdCBmaXJzdC4gWW91IGNhbiBtb3VudCBpdCB3aXRoCisibW91bnQgLXQgYmluZm10X21pc2Mgbm9uZSAvcHJvYy9zeXMvZnMvYmluZm10X21pc2MiIGNvbW1hbmQsIG9yIHlvdSBjYW4gYWRkCithIGxpbmUgIm5vbmUgIC9wcm9jL3N5cy9mcy9iaW5mbXRfbWlzYyBiaW5mbXRfbWlzYyBkZWZhdWx0cyAwIDAiIHRvIHlvdXIKKy9ldGMvZnN0YWIgc28gaXQgYXV0byBtb3VudHMgb24gYm9vdC4KKworWW91IG1heSB3YW50IHRvIGFkZCB0aGUgYmluYXJ5IGZvcm1hdHMgaW4gb25lIG9mIHlvdXIgL2V0Yy9yYyBzY3JpcHRzIGR1cmluZworYm9vdC11cC4gUmVhZCB0aGUgbWFudWFsIG9mIHlvdXIgaW5pdCBwcm9ncmFtIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGRvIHRoaXMKK3JpZ2h0LgorCitUaGluayBhYm91dCB0aGUgb3JkZXIgb2YgYWRkaW5nIGVudHJpZXMhIExhdGVyIGFkZGVkIGVudHJpZXMgYXJlIG1hdGNoZWQgZmlyc3QhCisKKworQSBmZXcgZXhhbXBsZXMgKGFzc3VtZWQgeW91IGFyZSBpbiAvcHJvYy9zeXMvZnMvYmluZm10X21pc2MpOgorCistIGVuYWJsZSBzdXBwb3J0IGZvciBlbTg2IChsaWtlIGJpbmZtdF9lbTg2LCBmb3IgQWxwaGEgQVhQIG9ubHkpOgorICBlY2hvICc6aTM4NjpNOjpceDdmRUxGXHgwMVx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMlx4MDBceDAzOlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZVx4ZmVceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZiXHhmZlx4ZmY6L2Jpbi9lbTg2OicgPiByZWdpc3RlcgorICBlY2hvICc6aTQ4NjpNOjpceDdmRUxGXHgwMVx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMlx4MDBceDA2Olx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZVx4ZmVceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZiXHhmZlx4ZmY6L2Jpbi9lbTg2OicgPiByZWdpc3RlcgorCistIGVuYWJsZSBzdXBwb3J0IGZvciBwYWNrZWQgRE9TIGFwcGxpY2F0aW9ucyAocHJlLWNvbmZpZ3VyZWQgZG9zZW11IGhkaW1hZ2VzKToKKyAgZWNobyAnOkRFWEU6TTo6XHgwZURFWDo6L3Vzci9iaW4vZG9zZXhlYzonID4gcmVnaXN0ZXIKKworLSBlbmFibGUgc3VwcG9ydCBmb3IgV2luZG93cyBleGVjdXRhYmxlcyB1c2luZyB3aW5lOgorICBlY2hvICc6RE9TV2luOk06Ok1aOjovdXNyL2xvY2FsL2Jpbi93aW5lOicgPiByZWdpc3RlcgorCitGb3IgamF2YSBzdXBwb3J0IHNlZSBEb2N1bWVudGF0aW9uL2phdmEudHh0CisKKworWW91IGNhbiBlbmFibGUvZGlzYWJsZSBiaW5mbXRfbWlzYyBvciBvbmUgYmluYXJ5IHR5cGUgYnkgZWNob2luZyAwICh0byBkaXNhYmxlKQorb3IgMSAodG8gZW5hYmxlKSB0byAvcHJvYy9zeXMvZnMvYmluZm10X21pc2Mvc3RhdHVzIG9yIC9wcm9jLy4uLi90aGVfbmFtZS4KK0NhdHRpbmcgdGhlIGZpbGUgdGVsbHMgeW91IHRoZSBjdXJyZW50IHN0YXR1cyBvZiBiaW5mbXRfbWlzYy90aGUgZW50cnkuCisKK1lvdSBjYW4gcmVtb3ZlIG9uZSBlbnRyeSBvciBhbGwgZW50cmllcyBieSBlY2hvaW5nIC0xIHRvIC9wcm9jLy4uLi90aGVfbmFtZQorb3IgL3Byb2Mvc3lzL2ZzL2JpbmZtdF9taXNjL3N0YXR1cy4KKworCitISU5UUzoKKz09PT09PQorCitJZiB5b3Ugd2FudCB0byBwYXNzIHNwZWNpYWwgYXJndW1lbnRzIHRvIHlvdXIgaW50ZXJwcmV0ZXIsIHlvdSBjYW4KK3dyaXRlIGEgd3JhcHBlciBzY3JpcHQgZm9yIGl0LiBTZWUgRG9jdW1lbnRhdGlvbi9qYXZhLnR4dCBmb3IgYW4KK2V4YW1wbGUuCisKK1lvdXIgaW50ZXJwcmV0ZXIgc2hvdWxkIE5PVCBsb29rIGluIHRoZSBQQVRIIGZvciB0aGUgZmlsZW5hbWU7IHRoZSBrZXJuZWwKK3Bhc3NlcyBpdCB0aGUgZnVsbCBmaWxlbmFtZSAob3IgdGhlIGZpbGUgZGVzY3JpcHRvcikgdG8gdXNlLiAgVXNpbmcgJFBBVEggY2FuCitjYXVzZSB1bmV4cGVjdGVkIGJlaGF2aW91ciBhbmQgY2FuIGJlIGEgc2VjdXJpdHkgaGF6YXJkLgorCisKK1JpY2hhcmQgR8O8bnRoZXIgPHJndWVudGhAdGF0LnBoeXNpay51bmktdHVlYmluZ2VuLmRlPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibGFja2Zpbi8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vYmxhY2tmaW4vMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU0ZmNkZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYmxhY2tmaW4vMDAtSU5ERVgKQEAgLTAsMCArMSwxMCBAQAorMDAtSU5ERVgKKwktIFRoaXMgZmlsZQorTWFrZWZpbGUKKwktIE1ha2VmaWxlIGZvciBncHRpbWVycyBleGFtcGxlIGZpbGUuCitiZmluLWdwaW8tbm90ZXMudHh0CisJLSBOb3RlcyBpbiBkZXZlbG9waW5nL3VzaW5nIGJmaW4tZ3BpbyBkcml2ZXIuCitiZmluLXNwaS1ub3Rlcy50eHQKKwktIE5vdGVzIGZvciB1c2luZyBiZmluIHNwaSBidXMgZHJpdmVyLgorZ3B0aW1lcnMtZXhhbXBsZS5jCisJLSBncHRpbWVycyBleGFtcGxlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2JsYWNrZmluL01ha2VmaWxlIGIvRG9jdW1lbnRhdGlvbi9ibGFja2Zpbi9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzgyYzU4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9ibGFja2Zpbi9NYWtlZmlsZQpAQCAtMCwwICsxLDUgQEAKK2lmbmVxICgkKENPTkZJR19CTEFDS0ZJTiksKQoraWZuZXEgKCQoQ09ORklHX0JGSU5fR1BUSU1FUlMpLCkKK29iai1tIDo9IGdwdGltZXJzLWV4YW1wbGUubworZW5kaWYKK2VuZGlmCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2JsYWNrZmluL2JmaW4tZ3Bpby1ub3Rlcy50eHQgYi9Eb2N1bWVudGF0aW9uL2JsYWNrZmluL2JmaW4tZ3Bpby1ub3Rlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI0NWYzOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYmxhY2tmaW4vYmZpbi1ncGlvLW5vdGVzLnR4dApAQCAtMCwwICsxLDcxIEBACisvKgorICogRmlsZTogICAgICAgICBEb2N1bWVudGF0aW9uL2JsYWNrZmluL2JmaW4tZ3Bpby1ub3Rlcy50eHQKKyAqIEJhc2VkIG9uOgorICogQXV0aG9yOgorICoKKyAqIENyZWF0ZWQ6ICAgICAgJElkOiBiZmluLWdwaW8tbm90ZS50eHQgMjAwOC0xMS0yNCAxNjo0MiBncmFmeWFuZyAkCisgKiBEZXNjcmlwdGlvbjogIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbm90ZXMgaW4gZGV2ZWxvcGluZy91c2luZyBiZmluLWdwaW8uCisgKgorICoKKyAqIFJldjoKKyAqCisgKiBNb2RpZmllZDoKKyAqICAgICAgICAgICAgICAgQ29weXJpZ2h0IDIwMDQtMjAwOCBBbmFsb2cgRGV2aWNlcyBJbmMuCisgKgorICogQnVnczogICAgICAgICBFbnRlciBidWdzIGF0IGh0dHA6Ly9ibGFja2Zpbi51Y2xpbnV4Lm9yZy8KKyAqCisgKi8KKworCisxLiBCbGFja2ZpbiBHUElPIGludHJvZHVjdGlvbgorCisgICAgVGhlcmUgYXJlIG1hbnkgR1BJTyBwaW5zIG9uIEJsYWNrZmluLiBNb3N0IG9mIHRoZXNlIHBpbnMgYXJlIG11eGVkIHRvCisgICAgbXVsdGktZnVuY3Rpb25zLiBUaGV5IGNhbiBiZSBjb25maWd1cmVkIGFzIHBlcmlwaGVyYWwsIG9yIGp1c3QgYXMgR1BJTywKKyAgICBjb25maWd1cmVkIHRvIGlucHV0IHdpdGggaW50ZXJydXB0IGVuYWJsZWQsIG9yIG91dHB1dC4KKworICAgIEZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbiwgcGxlYXNlIHNlZSAiYXJjaC9ibGFja2Zpbi9rZXJuZWwvYmZpbl9ncGlvLmMiLAorICAgIG9yIHRoZSByZWxldmFudCBIUk0uCisKKworMi4gQXZvaWRpbmcgcmVzb3VyY2UgY29uZmxpY3QKKworICAgIEZvbGxvd2VkIGZ1bmN0aW9uIGdyb3VwcyBhcmUgdXNlZCB0byBhdm9pZGluZyByZXNvdXJjZSBjb25mbGljdCwKKyAgICAtIFVzZSB0aGUgcGluIGFzIHBlcmlwaGVyYWwsCisJaW50IHBlcmlwaGVyYWxfcmVxdWVzdCh1bnNpZ25lZCBzaG9ydCBwZXIsIGNvbnN0IGNoYXIgKmxhYmVsKTsKKwlpbnQgcGVyaXBoZXJhbF9yZXF1ZXN0X2xpc3QoY29uc3QgdW5zaWduZWQgc2hvcnQgcGVyW10sIGNvbnN0IGNoYXIgKmxhYmVsKTsKKwl2b2lkIHBlcmlwaGVyYWxfZnJlZSh1bnNpZ25lZCBzaG9ydCBwZXIpOworCXZvaWQgcGVyaXBoZXJhbF9mcmVlX2xpc3QoY29uc3QgdW5zaWduZWQgc2hvcnQgcGVyW10pOworICAgIC0gVXNlIHRoZSBwaW4gYXMgR1BJTywKKwlpbnQgYmZpbl9ncGlvX3JlcXVlc3QodW5zaWduZWQgZ3BpbywgY29uc3QgY2hhciAqbGFiZWwpOworCXZvaWQgYmZpbl9ncGlvX2ZyZWUodW5zaWduZWQgZ3Bpbyk7CisgICAgLSBVc2UgdGhlIHBpbiBhcyBHUElPIGludGVycnVwdCwKKwlpbnQgYmZpbl9ncGlvX2lycV9yZXF1ZXN0KHVuc2lnbmVkIGdwaW8sIGNvbnN0IGNoYXIgKmxhYmVsKTsKKwl2b2lkIGJmaW5fZ3Bpb19pcnFfZnJlZSh1bnNpZ25lZCBncGlvKTsKKworICAgIFRoZSByZXF1ZXN0IGZ1bmN0aW9ucyB3aWxsIHJlY29yZCB0aGUgZnVuY3Rpb24gc3RhdGUgZm9yIGEgY2VydGFpbiBwaW4sCisgICAgdGhlIGZyZWUgZnVuY3Rpb25zIHdpbGwgY2xlYXIgaXRzIGZ1bmN0aW9uIHN0YXRlLgorICAgIE9uY2UgYSBwaW4gaXMgcmVxdWVzdGVkLCBpdCBjYW4ndCBiZSByZXF1ZXN0ZWQgYWdhaW4gYmVmb3JlIGl0IGlzIGZyZWVkIGJ5CisgICAgcHJldmlvdXMgY2FsbGVyLCBvdGhlcndpc2Uga2VybmVsIHdpbGwgZHVtcCBzdGFja3MsIGFuZCB0aGUgcmVxdWVzdAorICAgIGZ1bmN0aW9uIGZhaWwuCisgICAgVGhlc2UgZnVuY3Rpb25zIGFyZSB3cmFwcGVkIGJ5IG90aGVyIGZ1bmN0aW9ucywgbW9zdCBvZiB0aGUgdXNlcnMgbmVlZCBub3QKKyAgICBjYXJlLgorCisKKzMuIEJ1dCB0aGVyZSBhcmUgc29tZSBleGNlcHRpb25zCisgICAgLSBLZXJuZWwgcGVybWl0IHRoZSBpZGVudGljYWwgR1BJTyBiZSByZXF1ZXN0ZWQgYm90aCBhcyBHUElPIGFuZCBHUElPCisgICAgaW50ZXJydXB0LgorICAgIFNvbWUgZHJpdmVycywgbGlrZSBncGlvLWtleXMsIG5lZWQgdGhpcyBiZWhhdmlvci4gS2VybmVsIG9ubHkgcHJpbnQgb3V0CisgICAgd2FybmluZyBtZXNzYWdlcyBsaWtlLAorCWJmaW4tZ3BpbzogR1BJTyAyNCBpcyBhbHJlYWR5IHJlc2VydmVkIGJ5IGdwaW8ta2V5czogQlROMCwgYW5kIHlvdSBhcmUKK2NvbmZpZ3VyaW5nIGl0IGFzIElSUSEKKworICAgICAgICBOb3RlOiBDb25zaWRlciB0aGUgY2FzZSB0aGF0LCBpZiB0aGVyZSBhcmUgdHdvIGRyaXZlcnMgbmVlZCB0aGUKKwlpZGVudGljYWwgR1BJTywgb25lIG9mIHRoZW0gdXNlIGl0IGFzIEdQSU8sIHRoZSBvdGhlciB1c2UgaXQgYXMKKwlHUElPIGludGVycnVwdC4gVGhpcyB3aWxsIHJlYWxseSBjYXVzZSByZXNvdXJjZSBjb25mbGljdC4gU28gaWYKKwl0aGVyZSBpcyBhbnkgYWJub3JtYWwgZHJpdmVyIGJlaGF2aW9yLCBwbGVhc2UgY2hlY2sgdGhlIGJmaW4tZ3BpbworCXdhcm5pbmcgbWVzc2FnZXMuCisKKyAgICAtIEtlcm5lbCBwZXJtaXQgdGhlIGlkZW50aWNhbCBHUElPIGJlIHJlcXVlc3RlZCBmcm9tIHRoZSBzYW1lIGRyaXZlciB0d2ljZS4KKworCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYmxhY2tmaW4vYmZpbi1zcGktbm90ZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9ibGFja2Zpbi9iZmluLXNwaS1ub3Rlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFlNmVhZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYmxhY2tmaW4vYmZpbi1zcGktbm90ZXMudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1NQSSBDaGlwIFNlbGVjdCBiZWhhdmlvcjoKKworV2l0aCB0aGUgQmxhY2tmaW4gb24tY2hpcCBTUEkgcGVyaXBoZXJhbCwgdGhlcmUgaXMgc29tZSBsb2dpYyB0aWVkIHRvIHRoZSBDUEhBCitiaXQgd2hldGhlciB0aGUgU2xhdmUgU2VsZWN0IExpbmUgaXMgY29udHJvbGxlZCBieSBoYXJkd2FyZSAoQ1BIQT0wKSBvcgorY29udHJvbGxlZCBieSBzb2Z0d2FyZSAoQ1BIQT0xKS4gSG93ZXZlciwgdGhlIExpbnV4IFNQSSBidXMgZHJpdmVyIGFzc3VtZXMgdGhhdAordGhlIFNsYXZlIFNlbGVjdCBpcyBhbHdheXMgdW5kZXIgc29mdHdhcmUgY29udHJvbCBhbmQgYmVpbmcgYXNzZXJ0ZWQgZHVyaW5nCit0aGUgZW50aXJlIFNQSSB0cmFuc2Zlci4gLSBBbmQgbm90IGp1c3QgYml0c19wZXJfd29yZCBkdXJhdGlvbi4KKworSW4gbW9zdCBjYXNlcyB5b3UgY2FuIHV0aWxpemUgU1BJIE1PREVfMyBpbnN0ZWFkIG9mIE1PREVfMCB0byB3b3JrLWFyb3VuZCB0aGlzCitiZWhhdmlvci4gSWYgeW91ciBTUEkgc2xhdmUgZGV2aWNlIGluIHF1ZXN0aW9uIHJlcXVpcmVzIFNQSSBNT0RFXzAgb3IgTU9ERV8yCit0aW1pbmcsIHlvdSBjYW4gdXRpbGl6ZSB0aGUgR1BJTyBjb250cm9sbGVkIFNQSSBTbGF2ZSBTZWxlY3Qgb3B0aW9uIGluc3RlYWQuCitJbiB0aGlzIGNhc2UsIHlvdSBzaG91bGQgdXNlIEdQSU8gYmFzZWQgQ1MgZm9yIGFsbCBvZiB5b3VyIHNsYXZlcyBhbmQgbm90IGp1c3QKK3RoZSBvbmVzIHVzaW5nIG1vZGUgMCBvciAyIGluIG9yZGVyIHRvIGd1YXJhbnRlZSBjb3JyZWN0IENTIHRvZ2dsaW5nIGJlaGF2aW9yLgorCitZb3UgY2FuIGV2ZW4gdXNlIHRoZSBzYW1lIHBpbiB3aG9zZSBwZXJpcGhlcmFsIHJvbGUgaXMgYSBTU0VMLAorYnV0IHVzZSBpdCBhcyBhIEdQSU8gaW5zdGVhZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYmxhY2tmaW4vZ3B0aW1lcnMtZXhhbXBsZS5jIGIvRG9jdW1lbnRhdGlvbi9ibGFja2Zpbi9ncHRpbWVycy1leGFtcGxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgzZWJhOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYmxhY2tmaW4vZ3B0aW1lcnMtZXhhbXBsZS5jCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBTaW1wbGUgZ3B0aW1lcnMgZXhhbXBsZQorICoJaHR0cDovL2RvY3MuYmxhY2tmaW4udWNsaW51eC5vcmcvZG9rdS5waHA/aWQ9bGludXgta2VybmVsOmRyaXZlcnM6Z3B0aW1lcnMKKyAqCisgKiBDb3B5cmlnaHQgMjAwNy0yMDA5IEFuYWxvZyBEZXZpY2VzIEluYy4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgR1BMLTIgb3IgbGF0ZXIuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorCisjaW5jbHVkZSA8YXNtL2dwdGltZXJzLmg+CisjaW5jbHVkZSA8YXNtL3BvcnRtdXguaD4KKworLyogLi4uIHJhbmRvbSBkcml2ZXIgaW5jbHVkZXMgLi4uICovCisKKyNkZWZpbmUgRFJJVkVSX05BTUUgImdwdGltZXJfZXhhbXBsZSIKKworI2lmZGVmIElSUV9USU1FUjUKKyNkZWZpbmUgU0FNUExFX0lSUV9USU1FUiBJUlFfVElNRVI1CisjZWxzZQorI2RlZmluZSBTQU1QTEVfSVJRX1RJTUVSIElSUV9USU1FUjIKKyNlbmRpZgorCitzdHJ1Y3QgZ3B0aW1lcl9kYXRhIHsKKwl1aW50MzJfdCBwZXJpb2QsIHdpZHRoOworfTsKK3N0YXRpYyBzdHJ1Y3QgZ3B0aW1lcl9kYXRhIGRhdGE7CisKKy8qIC4uLiByYW5kb20gZHJpdmVyIHN0YXRlIC4uLiAqLworCitzdGF0aWMgaXJxcmV0dXJuX3QgZ3B0aW1lcl9leGFtcGxlX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpCit7CisJc3RydWN0IGdwdGltZXJfZGF0YSAqZGF0YSA9IGRldl9pZDsKKworCS8qIG1ha2Ugc3VyZSBpdCB3YXMgb3VyIHRpbWVyIHdoaWNoIGNhdXNlZCB0aGUgaW50ZXJydXB0ICovCisJaWYgKCFnZXRfZ3B0aW1lcl9pbnRyKFRJTUVSNV9pZCkpCisJCXJldHVybiBJUlFfTk9ORTsKKworCS8qIHJlYWQgdGhlIHdpZHRoL3BlcmlvZCB2YWx1ZXMgdGhhdCB3ZXJlIGNhcHR1cmVkIGZvciB0aGUgd2F2ZWZvcm0gKi8KKwlkYXRhLT53aWR0aCA9IGdldF9ncHRpbWVyX3B3aWR0aChUSU1FUjVfaWQpOworCWRhdGEtPnBlcmlvZCA9IGdldF9ncHRpbWVyX3BlcmlvZChUSU1FUjVfaWQpOworCisJLyogYWNrbm93bGVkZ2UgdGhlIGludGVycnVwdCAqLworCWNsZWFyX2dwdGltZXJfaW50cihUSU1FUjVfaWQpOworCisJLyogdGVsbCB0aGUgdXBwZXIgbGF5ZXJzIHdlIHRvb2sgY2FyZSBvZiB0aGluZ3MgKi8KKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKKy8qIC4uLiByYW5kb20gZHJpdmVyIGNvZGUgLi4uICovCisKK3N0YXRpYyBpbnQgX19pbml0IGdwdGltZXJfZXhhbXBsZV9pbml0KHZvaWQpCit7CisJaW50IHJldDsKKworCS8qIGdyYWIgdGhlIHBlcmlwaGVyYWwgcGlucyAqLworCXJldCA9IHBlcmlwaGVyYWxfcmVxdWVzdChQX1RNUjUsIERSSVZFUl9OQU1FKTsKKwlpZiAocmV0KSB7CisJCXByaW50ayhLRVJOX05PVElDRSBEUklWRVJfTkFNRSAiOiBwZXJpcGhlcmFsIHJlcXVlc3QgZmFpbGVkXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwkvKiBncmFiIHRoZSBJUlEgZm9yIHRoZSB0aW1lciAqLworCXJldCA9IHJlcXVlc3RfaXJxKFNBTVBMRV9JUlFfVElNRVIsIGdwdGltZXJfZXhhbXBsZV9pcnEsCisJCQlJUlFGX1NIQVJFRCwgRFJJVkVSX05BTUUsICZkYXRhKTsKKwlpZiAocmV0KSB7CisJCXByaW50ayhLRVJOX05PVElDRSBEUklWRVJfTkFNRSAiOiBJUlEgcmVxdWVzdCBmYWlsZWRcbiIpOworCQlwZXJpcGhlcmFsX2ZyZWUoUF9UTVI1KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwkvKiBzZXR1cCB0aGUgdGltZXIgYW5kIGVuYWJsZSBpdCAqLworCXNldF9ncHRpbWVyX2NvbmZpZyhUSU1FUjVfaWQsCisJCQlXRFRIX0NBUCB8IFBVTFNFX0hJIHwgUEVSSU9EX0NOVCB8IElSUV9FTkEpOworCWVuYWJsZV9ncHRpbWVycyhUSU1FUjViaXQpOworCisJcmV0dXJuIDA7Cit9Cittb2R1bGVfaW5pdChncHRpbWVyX2V4YW1wbGVfaW5pdCk7CisKK3N0YXRpYyB2b2lkIF9fZXhpdCBncHRpbWVyX2V4YW1wbGVfZXhpdCh2b2lkKQoreworCWRpc2FibGVfZ3B0aW1lcnMoVElNRVI1Yml0KTsKKwlmcmVlX2lycShTQU1QTEVfSVJRX1RJTUVSLCAmZGF0YSk7CisJcGVyaXBoZXJhbF9mcmVlKFBfVE1SNSk7Cit9Cittb2R1bGVfZXhpdChncHRpbWVyX2V4YW1wbGVfZXhpdCk7CisKK01PRFVMRV9MSUNFTlNFKCJCU0QiKTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYmxvY2svMDAtSU5ERVggYi9Eb2N1bWVudGF0aW9uL2Jsb2NrLzAwLUlOREVYCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NDBiNDcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrLzAwLUlOREVYCkBAIC0wLDAgKzEsMjggQEAKKzAwLUlOREVYCisJLSBUaGlzIGZpbGUKK2Jpb2RvYy50eHQKKwktIE5vdGVzIG9uIHRoZSBHZW5lcmljIEJsb2NrIExheWVyIFJld3JpdGUgaW4gTGludXggMi41CitjYXBhYmlsaXR5LnR4dAorCS0gR2VuZXJpYyBCbG9jayBEZXZpY2UgQ2FwYWJpbGl0eSAoL3N5cy9ibG9jay88ZGV2aWNlPi9jYXBhYmlsaXR5KQorY2ZxLWlvc2NoZWQudHh0CisJLSBDRlEgSU8gc2NoZWR1bGVyIHR1bmFibGVzCitjbWRsaW5lLXBhcnRpdGlvbi50eHQKKwktIGhvdyB0byBzcGVjaWZ5IGJsb2NrIGRldmljZSBwYXJ0aXRpb25zIG9uIGtlcm5lbCBjb21tYW5kIGxpbmUKK2RhdGEtaW50ZWdyaXR5LnR4dAorCS0gQmxvY2sgZGF0YSBpbnRlZ3JpdHkKK2RlYWRsaW5lLWlvc2NoZWQudHh0CisJLSBEZWFkbGluZSBJTyBzY2hlZHVsZXIgdHVuYWJsZXMKK2lvcHJpby50eHQKKwktIEJsb2NrIGlvIHByaW9yaXRpZXMgKGluIENGUSBzY2hlZHVsZXIpCitudWxsX2Jsay50eHQKKwktIE51bGwgYmxvY2sgZm9yIGJsb2NrLWxheWVyIGJlbmNobWFya2luZy4KK3F1ZXVlLXN5c2ZzLnR4dAorCS0gUXVldWUncyBzeXNmcyBlbnRyaWVzCityZXF1ZXN0LnR4dAorCS0gVGhlIG1lbWJlcnMgb2Ygc3RydWN0IHJlcXVlc3QgKGluIGluY2x1ZGUvbGludXgvYmxrZGV2LmgpCitzdGF0LnR4dAorCS0gQmxvY2sgbGF5ZXIgc3RhdGlzdGljcyBpbiAvc3lzL2Jsb2NrLzxkZXZpY2U+L3N0YXQKK3N3aXRjaGluZy1zY2hlZC50eHQKKwktIFN3aXRjaGluZyBJL08gc2NoZWR1bGVycyBhdCBydW50aW1lCit3cml0ZWJhY2tfY2FjaGVfY29udHJvbC50eHQKKwktIENvbnRyb2wgb2Ygdm9sYXRpbGUgd3JpdGUgYmFjayBjYWNoZXMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYmxvY2svYmlvZG9jLnR4dCBiL0RvY3VtZW50YXRpb24vYmxvY2svYmlvZG9jLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmU4YTdmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9ibG9jay9iaW9kb2MudHh0CkBAIC0wLDAgKzEsMTE4MCBAQAorCU5vdGVzIG9uIHRoZSBHZW5lcmljIEJsb2NrIExheWVyIFJld3JpdGUgaW4gTGludXggMi41CisJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworTm90ZXMgV3JpdHRlbiBvbiBKYW4gMTUsIDIwMDI6CisJSmVucyBBeGJvZSA8amVucy5heGJvZUBvcmFjbGUuY29tPgorCVN1cGFybmEgQmhhdHRhY2hhcnlhIDxzdXBhcm5hQGluLmlibS5jb20+CisKK0xhc3QgVXBkYXRlZCBNYXkgMiwgMjAwMgorU2VwdGVtYmVyIDIwMDM6IFVwZGF0ZWQgSS9PIFNjaGVkdWxlciBwb3J0aW9ucworCU5pY2sgUGlnZ2luIDxucGlnZ2luQGtlcm5lbC5kaz4KKworSW50cm9kdWN0aW9uOgorCitUaGVzZSBhcmUgc29tZSBub3RlcyBkZXNjcmliaW5nIHNvbWUgYXNwZWN0cyBvZiB0aGUgMi41IGJsb2NrIGxheWVyIGluIHRoZQorY29udGV4dCBvZiB0aGUgYmlvIHJld3JpdGUuIFRoZSBpZGVhIGlzIHRvIGJyaW5nIG91dCBzb21lIG9mIHRoZSBrZXkKK2NoYW5nZXMgYW5kIGEgZ2xpbXBzZSBvZiB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aG9zZSBjaGFuZ2VzLgorCitQbGVhc2UgbWFpbCBjb3JyZWN0aW9ucyAmIHN1Z2dlc3Rpb25zIHRvIHN1cGFybmFAaW4uaWJtLmNvbS4KKworQ3JlZGl0czoKKy0tLS0tLS0tLQorCisyLjUgYmlvIHJld3JpdGU6CisJSmVucyBBeGJvZSA8amVucy5heGJvZUBvcmFjbGUuY29tPgorCitNYW55IGFzcGVjdHMgb2YgdGhlIGdlbmVyaWMgYmxvY2sgbGF5ZXIgcmVkZXNpZ24gd2VyZSBkcml2ZW4gYnkgYW5kIGV2b2x2ZWQKK292ZXIgZGlzY3Vzc2lvbnMsIHByaW9yIHBhdGNoZXMgYW5kIHRoZSBjb2xsZWN0aXZlIGV4cGVyaWVuY2Ugb2Ygc2V2ZXJhbAorcGVvcGxlLiBTZWUgc2VjdGlvbnMgOCBhbmQgOSBmb3IgYSBsaXN0IG9mIHNvbWUgcmVsYXRlZCByZWZlcmVuY2VzLgorCitUaGUgZm9sbG93aW5nIHBlb3BsZSBoZWxwZWQgd2l0aCByZXZpZXcgY29tbWVudHMgYW5kIGlucHV0cyBmb3IgdGhpcworZG9jdW1lbnQ6CisJQ2hyaXN0b3BoIEhlbGx3aWcgPGhjaEBpbmZyYWRlYWQub3JnPgorCUFyamFuIHZhbiBkZSBWZW4gPGFyamFudkByZWRoYXQuY29tPgorCVJhbmR5IER1bmxhcCA8cmR1bmxhcEB4ZW5vdGltZS5uZXQ+CisJQW5kcmUgSGVkcmljayA8YW5kcmVAbGludXgtaWRlLm9yZz4KKworVGhlIGZvbGxvd2luZyBwZW9wbGUgaGVscGVkIHdpdGggZml4ZXMvY29udHJpYnV0aW9ucyB0byB0aGUgYmlvIHBhdGNoZXMKK3doaWxlIGl0IHdhcyBzdGlsbCB3b3JrLWluLXByb2dyZXNzOgorCURhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AcmVkaGF0LmNvbT4KKworCitEZXNjcmlwdGlvbiBvZiBDb250ZW50czoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisxLiBTY29wZSBmb3IgdHVuaW5nIG9mIGxvZ2ljIHRvIHZhcmlvdXMgbmVlZHMKKyAgMS4xIFR1bmluZyBiYXNlZCBvbiBkZXZpY2Ugb3IgbG93IGxldmVsIGRyaXZlciBjYXBhYmlsaXRpZXMKKwktIFBlci1xdWV1ZSBwYXJhbWV0ZXJzCisJLSBIaWdobWVtIEkvTyBzdXBwb3J0CisJLSBJL08gc2NoZWR1bGVyIG1vZHVsYXJpemF0aW9uCisgIDEuMiBUdW5pbmcgYmFzZWQgb24gaGlnaCBsZXZlbCByZXF1aXJlbWVudHMvY2FwYWJpbGl0aWVzCisJMS4yLjEgUmVxdWVzdCBQcmlvcml0eS9MYXRlbmN5CisgIDEuMyBEaXJlY3QgYWNjZXNzL2J5cGFzcyB0byBsb3dlciBsYXllcnMgZm9yIGRpYWdub3N0aWNzIGFuZCBzcGVjaWFsCisgICAgICBkZXZpY2Ugb3BlcmF0aW9ucworCTEuMy4xIFByZS1idWlsdCBjb21tYW5kcworMi4gTmV3IGZsZXhpYmxlIGFuZCBnZW5lcmljIGJ1dCBtaW5pbWFsaXN0IGkvbyBzdHJ1Y3R1cmUgb3IgZGVzY3JpcHRvcgorICAgKGluc3RlYWQgb2YgdXNpbmcgYnVmZmVyIGhlYWRzIGF0IHRoZSBpL28gbGF5ZXIpCisgIDIuMSBSZXF1aXJlbWVudHMvR29hbHMgYWRkcmVzc2VkCisgIDIuMiBUaGUgYmlvIHN0cnVjdCBpbiBkZXRhaWwgKG11bHRpLXBhZ2UgaW8gdW5pdCkKKyAgMi4zIENoYW5nZXMgaW4gdGhlIHJlcXVlc3Qgc3RydWN0dXJlCiszLiBVc2luZyBiaW9zCisgIDMuMSBTZXR1cC90ZWFyZG93biAoYWxsb2NhdGlvbiwgc3BsaXR0aW5nKQorICAzLjIgR2VuZXJpYyBiaW8gaGVscGVyIHJvdXRpbmVzCisgICAgMy4yLjEgVHJhdmVyc2luZyBzZWdtZW50cyBhbmQgY29tcGxldGlvbiB1bml0cyBpbiBhIHJlcXVlc3QKKyAgICAzLjIuMiBTZXR0aW5nIHVwIERNQSBzY2F0dGVybGlzdHMKKyAgICAzLjIuMyBJL08gY29tcGxldGlvbgorICAgIDMuMi40IEltcGxpY2F0aW9ucyBmb3IgZHJpdmVycyB0aGF0IGRvIG5vdCBpbnRlcnByZXQgYmlvcyAoZG9uJ3QgaGFuZGxlCisgCSAgbXVsdGlwbGUgc2VnbWVudHMpCisgICAgMy4yLjUgUmVxdWVzdCBjb21tYW5kIHRhZ2dpbmcKKyAgMy4zIEkvTyBzdWJtaXNzaW9uCis0LiBUaGUgSS9PIHNjaGVkdWxlcgorNS4gU2NhbGFiaWxpdHkgcmVsYXRlZCBjaGFuZ2VzCisgIDUuMSBHcmFudWxhciBsb2NraW5nOiBSZW1vdmFsIG9mIGlvX3JlcXVlc3RfbG9jaworICA1LjIgUHJlcGFyZSBmb3IgdHJhbnNpdGlvbiB0byA2NCBiaXQgc2VjdG9yX3QKKzYuIE90aGVyIENoYW5nZXMvSW1wbGljYXRpb25zCisgIDYuMSBQYXJ0aXRpb24gcmUtbWFwcGluZyBoYW5kbGVkIGJ5IHRoZSBnZW5lcmljIGJsb2NrIGxheWVyCis3LiBBIGZldyB0aXBzIG9uIG1pZ3JhdGlvbiBvZiBvbGRlciBkcml2ZXJzCis4LiBBIGxpc3Qgb2YgcHJpb3IvcmVsYXRlZC9pbXBhY3RlZCBwYXRjaGVzL2lkZWFzCis5LiBPdGhlciBSZWZlcmVuY2VzL0Rpc2N1c3Npb24gVGhyZWFkcworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQmlvIE5vdGVzCistLS0tLS0tLQorCitMZXQgdXMgZGlzY3VzcyB0aGUgY2hhbmdlcyBpbiB0aGUgY29udGV4dCBvZiBob3cgc29tZSBvdmVyYWxsIGdvYWxzIGZvciB0aGUKK2Jsb2NrIGxheWVyIGFyZSBhZGRyZXNzZWQuCisKKzEuIFNjb3BlIGZvciB0dW5pbmcgdGhlIGdlbmVyaWMgbG9naWMgdG8gc2F0aXNmeSB2YXJpb3VzIHJlcXVpcmVtZW50cworCitUaGUgYmxvY2sgbGF5ZXIgZGVzaWduIHN1cHBvcnRzIGFkYXB0YWJsZSBhYnN0cmFjdGlvbnMgdG8gaGFuZGxlIGNvbW1vbgorcHJvY2Vzc2luZyB3aXRoIHRoZSBhYmlsaXR5IHRvIHR1bmUgdGhlIGxvZ2ljIHRvIGFuIGFwcHJvcHJpYXRlIGV4dGVudAorZGVwZW5kaW5nIG9uIHRoZSBuYXR1cmUgb2YgdGhlIGRldmljZSBhbmQgdGhlIHJlcXVpcmVtZW50cyBvZiB0aGUgY2FsbGVyLgorT25lIG9mIHRoZSBvYmplY3RpdmVzIG9mIHRoZSByZXdyaXRlIHdhcyB0byBpbmNyZWFzZSB0aGUgZGVncmVlIG9mIHR1bmFiaWxpdHkKK2FuZCB0byBlbmFibGUgaGlnaGVyIGxldmVsIGNvZGUgdG8gdXRpbGl6ZSB1bmRlcmx5aW5nIGRldmljZS9kcml2ZXIKK2NhcGFiaWxpdGllcyB0byB0aGUgbWF4aW11bSBleHRlbnQgZm9yIGJldHRlciBpL28gcGVyZm9ybWFuY2UuIFRoaXMgaXMKK2ltcG9ydGFudCBlc3BlY2lhbGx5IGluIHRoZSBsaWdodCBvZiBldmVyIGltcHJvdmluZyBoYXJkd2FyZSBjYXBhYmlsaXRpZXMKK2FuZCBhcHBsaWNhdGlvbi9taWRkbGV3YXJlIHNvZnR3YXJlIGRlc2lnbmVkIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZXNlCitjYXBhYmlsaXRpZXMuCisKKzEuMSBUdW5pbmcgYmFzZWQgb24gbG93IGxldmVsIGRldmljZSAvIGRyaXZlciBjYXBhYmlsaXRpZXMKKworU29waGlzdGljYXRlZCBkZXZpY2VzIHdpdGggbGFyZ2UgYnVpbHQtaW4gY2FjaGVzLCBpbnRlbGxpZ2VudCBpL28gc2NoZWR1bGluZworb3B0aW1pemF0aW9ucywgaGlnaCBtZW1vcnkgRE1BIHN1cHBvcnQsIGV0YyBtYXkgZmluZCBzb21lIG9mIHRoZQorZ2VuZXJpYyBwcm9jZXNzaW5nIGFuIG92ZXJoZWFkLCB3aGlsZSBmb3IgbGVzcyBjYXBhYmxlIGRldmljZXMgdGhlCitnZW5lcmljIGZ1bmN0aW9uYWxpdHkgaXMgZXNzZW50aWFsIGZvciBwZXJmb3JtYW5jZSBvciBjb3JyZWN0bmVzcyByZWFzb25zLgorS25vd2xlZGdlIG9mIHNvbWUgb2YgdGhlIGNhcGFiaWxpdGllcyBvciBwYXJhbWV0ZXJzIG9mIHRoZSBkZXZpY2Ugc2hvdWxkIGJlCit1c2VkIGF0IHRoZSBnZW5lcmljIGJsb2NrIGxheWVyIHRvIHRha2UgdGhlIHJpZ2h0IGRlY2lzaW9ucyBvbgorYmVoYWxmIG9mIHRoZSBkcml2ZXIuCisKK0hvdyBpcyB0aGlzIGFjaGlldmVkID8KKworVHVuaW5nIGF0IGEgcGVyLXF1ZXVlIGxldmVsOgorCitpLiBQZXItcXVldWUgbGltaXRzL3ZhbHVlcyBleHBvcnRlZCB0byB0aGUgZ2VuZXJpYyBsYXllciBieSB0aGUgZHJpdmVyCisKK1ZhcmlvdXMgcGFyYW1ldGVycyB0aGF0IHRoZSBnZW5lcmljIGkvbyBzY2hlZHVsZXIgbG9naWMgdXNlcyBhcmUgc2V0IGF0CithIHBlci1xdWV1ZSBsZXZlbCAoZS5nIG1heGltdW0gcmVxdWVzdCBzaXplLCBtYXhpbXVtIG51bWJlciBvZiBzZWdtZW50cyBpbgorYSBzY2F0dGVyLWdhdGhlciBsaXN0LCBoYXJkc2VjdCBzaXplKQorCitTb21lIHBhcmFtZXRlcnMgdGhhdCB3ZXJlIGVhcmxpZXIgYXZhaWxhYmxlIGFzIGdsb2JhbCBhcnJheXMgaW5kZXhlZCBieQorbWFqb3IvbWlub3IgYXJlIG5vdyBkaXJlY3RseSBhc3NvY2lhdGVkIHdpdGggdGhlIHF1ZXVlLiBTb21lIG9mIHRoZXNlIG1heQorbW92ZSBpbnRvIHRoZSBibG9jayBkZXZpY2Ugc3RydWN0dXJlIGluIHRoZSBmdXR1cmUuIFNvbWUgY2hhcmFjdGVyaXN0aWNzCitoYXZlIGJlZW4gaW5jb3Jwb3JhdGVkIGludG8gYSBxdWV1ZSBmbGFncyBmaWVsZCByYXRoZXIgdGhhbiBzZXBhcmF0ZSBmaWVsZHMKK2luIHRoZW1zZWx2ZXMuICBUaGVyZSBhcmUgYmxrX3F1ZXVlX3h4eCBmdW5jdGlvbnMgdG8gc2V0IHRoZSBwYXJhbWV0ZXJzLAorcmF0aGVyIHRoYW4gdXBkYXRlIHRoZSBmaWVsZHMgZGlyZWN0bHkKKworU29tZSBuZXcgcXVldWUgcHJvcGVydHkgc2V0dGluZ3M6CisKKwlibGtfcXVldWVfYm91bmNlX2xpbWl0KHEsIHU2NCBkbWFfYWRkcmVzcykKKwkJRW5hYmxlIEkvTyB0byBoaWdobWVtIHBhZ2VzLCBkbWFfYWRkcmVzcyBiZWluZyB0aGUKKwkJbGltaXQuIE5vIGhpZ2htZW0gZGVmYXVsdC4KKworCWJsa19xdWV1ZV9tYXhfc2VjdG9ycyhxLCBtYXhfc2VjdG9ycykKKwkJU2V0cyB0d28gdmFyaWFibGVzIHRoYXQgbGltaXQgdGhlIHNpemUgb2YgdGhlIHJlcXVlc3QuCisKKwkJLSBUaGUgcmVxdWVzdCBxdWV1ZSdzIG1heF9zZWN0b3JzLCB3aGljaCBpcyBhIHNvZnQgc2l6ZSBpbgorCQl1bml0cyBvZiA1MTIgYnl0ZSBzZWN0b3JzLCBhbmQgY291bGQgYmUgZHluYW1pY2FsbHkgdmFyaWVkCisJCWJ5IHRoZSBjb3JlIGtlcm5lbC4KKworCQktIFRoZSByZXF1ZXN0IHF1ZXVlJ3MgbWF4X2h3X3NlY3RvcnMsIHdoaWNoIGlzIGEgaGFyZCBsaW1pdAorCQlhbmQgcmVmbGVjdHMgdGhlIG1heGltdW0gc2l6ZSByZXF1ZXN0IGEgZHJpdmVyIGNhbiBoYW5kbGUKKwkJaW4gdW5pdHMgb2YgNTEyIGJ5dGUgc2VjdG9ycy4KKworCQlUaGUgZGVmYXVsdCBmb3IgYm90aCBtYXhfc2VjdG9ycyBhbmQgbWF4X2h3X3NlY3RvcnMgaXMKKwkJMjU1LiBUaGUgdXBwZXIgbGltaXQgb2YgbWF4X3NlY3RvcnMgaXMgMTAyNC4KKworCWJsa19xdWV1ZV9tYXhfcGh5c19zZWdtZW50cyhxLCBtYXhfc2VnbWVudHMpCisJCU1heGltdW0gcGh5c2ljYWwgc2VnbWVudHMgeW91IGNhbiBoYW5kbGUgaW4gYSByZXF1ZXN0LiAxMjgKKwkJZGVmYXVsdCAoZHJpdmVyIGxpbWl0KS4gKFNlZSAzLjIuMikKKworCWJsa19xdWV1ZV9tYXhfaHdfc2VnbWVudHMocSwgbWF4X3NlZ21lbnRzKQorCQlNYXhpbXVtIGRtYSBzZWdtZW50cyB0aGUgaGFyZHdhcmUgY2FuIGhhbmRsZSBpbiBhIHJlcXVlc3QuIDEyOAorCQlkZWZhdWx0IChob3N0IGFkYXB0ZXIgbGltaXQsIGFmdGVyIGRtYSByZW1hcHBpbmcpLgorCQkoU2VlIDMuMi4yKQorCisJYmxrX3F1ZXVlX21heF9zZWdtZW50X3NpemUocSwgbWF4X3NlZ19zaXplKQorCQlNYXhpbXVtIHNpemUgb2YgYSBjbHVzdGVyZWQgc2VnbWVudCwgNjRrQiBkZWZhdWx0LgorCisJYmxrX3F1ZXVlX2hhcmRzZWN0X3NpemUocSwgaGFyZHNlY3Rfc2l6ZSkKKwkJTG93ZXN0IHBvc3NpYmxlIHNlY3RvciBzaXplIHRoYXQgdGhlIGhhcmR3YXJlIGNhbiBvcGVyYXRlCisJCW9uLCA1MTIgYnl0ZXMgZGVmYXVsdC4KKworTmV3IHF1ZXVlIGZsYWdzOgorCisJUVVFVUVfRkxBR19DTFVTVEVSIChzZWUgMy4yLjIpCisJUVVFVUVfRkxBR19RVUVVRUQgKHNlZSAzLjIuNCkKKworCitpaS4gSGlnaC1tZW0gaS9vIGNhcGFiaWxpdGllcyBhcmUgbm93IGNvbnNpZGVyZWQgdGhlIGRlZmF1bHQKKworVGhlIGdlbmVyaWMgYm91bmNlIGJ1ZmZlciBsb2dpYywgcHJlc2VudCBpbiAyLjQsIHdoZXJlIHRoZSBibG9jayBsYXllciB3b3VsZAorYnkgZGVmYXVsdCBjb3B5aW4vb3V0IGkvbyByZXF1ZXN0cyBvbiBoaWdoLW1lbW9yeSBidWZmZXJzIHRvIGxvdy1tZW1vcnkgYnVmZmVycworYXNzdW1pbmcgdGhhdCB0aGUgZHJpdmVyIHdvdWxkbid0IGJlIGFibGUgdG8gaGFuZGxlIGl0IGRpcmVjdGx5LCBoYXMgYmVlbgorY2hhbmdlZCBpbiAyLjUuIFRoZSBib3VuY2UgbG9naWMgaXMgbm93IGFwcGxpZWQgb25seSBmb3IgbWVtb3J5IHJhbmdlcworZm9yIHdoaWNoIHRoZSBkZXZpY2UgY2Fubm90IGhhbmRsZSBpL28uIEEgZHJpdmVyIGNhbiBzcGVjaWZ5IHRoaXMgYnkKK3NldHRpbmcgdGhlIHF1ZXVlIGJvdW5jZSBsaW1pdCBmb3IgdGhlIHJlcXVlc3QgcXVldWUgZm9yIHRoZSBkZXZpY2UKKyhibGtfcXVldWVfYm91bmNlX2xpbWl0KCkpLiBUaGlzIGF2b2lkcyB0aGUgaW5lZmZpY2llbmNpZXMgb2YgdGhlIGNvcHlpbi9vdXQKK3doZXJlIGEgZGV2aWNlIGlzIGNhcGFibGUgb2YgaGFuZGxpbmcgaGlnaCBtZW1vcnkgaS9vLgorCitJbiBvcmRlciB0byBlbmFibGUgaGlnaC1tZW1vcnkgaS9vIHdoZXJlIHRoZSBkZXZpY2UgaXMgY2FwYWJsZSBvZiBzdXBwb3J0aW5nCitpdCwgdGhlIHBjaSBkbWEgbWFwcGluZyByb3V0aW5lcyBhbmQgYXNzb2NpYXRlZCBkYXRhIHN0cnVjdHVyZXMgaGF2ZSBub3cgYmVlbgorbW9kaWZpZWQgdG8gYWNjb21wbGlzaCBhIGRpcmVjdCBwYWdlIC0+IGJ1cyB0cmFuc2xhdGlvbiwgd2l0aG91dCByZXF1aXJpbmcKK2EgdmlydHVhbCBhZGRyZXNzIG1hcHBpbmcgKHVubGlrZSB0aGUgZWFybGllciBzY2hlbWUgb2YgdmlydHVhbCBhZGRyZXNzCistPiBidXMgdHJhbnNsYXRpb24pLiBTbyB0aGlzIHdvcmtzIHVuaWZvcm1seSBmb3IgaGlnaC1tZW1vcnkgcGFnZXMgKHdoaWNoCitkbyBub3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcga2VybmVsIHZpcnR1YWwgYWRkcmVzcyBzcGFjZSBtYXBwaW5nKSBhbmQKK2xvdy1tZW1vcnkgcGFnZXMuCisKK05vdGU6IFBsZWFzZSByZWZlciB0byBEb2N1bWVudGF0aW9uL0RNQS1BUEktSE9XVE8udHh0IGZvciBhIGRpc2N1c3Npb24KK29uIFBDSSBoaWdoIG1lbSBETUEgYXNwZWN0cyBhbmQgbWFwcGluZyBvZiBzY2F0dGVyIGdhdGhlciBsaXN0cywgYW5kIHN1cHBvcnQKK2ZvciA2NCBiaXQgUENJLgorCitTcGVjaWFsIGhhbmRsaW5nIGlzIHJlcXVpcmVkIG9ubHkgZm9yIGNhc2VzIHdoZXJlIGkvbyBuZWVkcyB0byBoYXBwZW4gb24KK3BhZ2VzIGF0IHBoeXNpY2FsIG1lbW9yeSBhZGRyZXNzZXMgYmV5b25kIHdoYXQgdGhlIGRldmljZSBjYW4gc3VwcG9ydC4gSW4gdGhlc2UKK2Nhc2VzLCBhIGJvdW5jZSBiaW8gcmVwcmVzZW50aW5nIGEgYnVmZmVyIGZyb20gdGhlIHN1cHBvcnRlZCBtZW1vcnkgcmFuZ2UKK2lzIHVzZWQgZm9yIHBlcmZvcm1pbmcgdGhlIGkvbyB3aXRoIGNvcHlpbi9jb3B5b3V0IGFzIG5lZWRlZCBkZXBlbmRpbmcgb24KK3RoZSB0eXBlIG9mIHRoZSBvcGVyYXRpb24uICBGb3IgZXhhbXBsZSwgaW4gY2FzZSBvZiBhIHJlYWQgb3BlcmF0aW9uLCB0aGUKK2RhdGEgcmVhZCBoYXMgdG8gYmUgY29waWVkIHRvIHRoZSBvcmlnaW5hbCBidWZmZXIgb24gaS9vIGNvbXBsZXRpb24sIHNvIGEKK2NhbGxiYWNrIHJvdXRpbmUgaXMgc2V0IHVwIHRvIGRvIHRoaXMsIHdoaWxlIGZvciB3cml0ZSwgdGhlIGRhdGEgaXMgY29waWVkCitmcm9tIHRoZSBvcmlnaW5hbCBidWZmZXIgdG8gdGhlIGJvdW5jZSBidWZmZXIgcHJpb3IgdG8gaXNzdWluZyB0aGUKK29wZXJhdGlvbi4gU2luY2UgYW4gb3JpZ2luYWwgYnVmZmVyIG1heSBiZSBpbiBhIGhpZ2ggbWVtb3J5IGFyZWEgdGhhdCdzIG5vdAorbWFwcGVkIGluIGtlcm5lbCB2aXJ0dWFsIGFkZHIsIGEga21hcCBvcGVyYXRpb24gbWF5IGJlIHJlcXVpcmVkIGZvcgorcGVyZm9ybWluZyB0aGUgY29weSwgYW5kIHNwZWNpYWwgY2FyZSBtYXkgYmUgbmVlZGVkIGluIHRoZSBjb21wbGV0aW9uIHBhdGgKK2FzIGl0IG1heSBub3QgYmUgaW4gaXJxIGNvbnRleHQuIFNwZWNpYWwgY2FyZSBpcyBhbHNvIHJlcXVpcmVkIChieSB3YXkgb2YKK0dGUCBmbGFncykgd2hlbiBhbGxvY2F0aW5nIGJvdW5jZSBidWZmZXJzLCB0byBhdm9pZCBjZXJ0YWluIGhpZ2htZW0KK2RlYWRsb2NrIHBvc3NpYmlsaXRpZXMuCisKK0l0IGlzIGFsc28gcG9zc2libGUgdGhhdCBhIGJvdW5jZSBidWZmZXIgbWF5IGJlIGFsbG9jYXRlZCBmcm9tIGhpZ2gtbWVtb3J5CithcmVhIHRoYXQncyBub3QgbWFwcGVkIGluIGtlcm5lbCB2aXJ0dWFsIGFkZHIsIGJ1dCB3aXRoaW4gdGhlIHJhbmdlIHRoYXQgdGhlCitkZXZpY2UgY2FuIHVzZSBkaXJlY3RseTsgc28gdGhlIGJvdW5jZSBwYWdlIG1heSBuZWVkIHRvIGJlIGttYXBwZWQgZHVyaW5nCitjb3B5IG9wZXJhdGlvbnMuIFtOb3RlOiBUaGlzIGRvZXMgbm90IGhvbGQgaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sCit0aG91Z2hdCisKK1RoZXJlIGFyZSBzb21lIHNpdHVhdGlvbnMgd2hlbiBwYWdlcyBmcm9tIGhpZ2ggbWVtb3J5IG1heSBuZWVkIHRvCitiZSBrbWFwcGVkLCBldmVuIGlmIGJvdW5jZSBidWZmZXJzIGFyZSBub3QgbmVjZXNzYXJ5LiBGb3IgZXhhbXBsZSBhIGRldmljZQorbWF5IG5lZWQgdG8gYWJvcnQgRE1BIG9wZXJhdGlvbnMgYW5kIHJldmVydCB0byBQSU8gZm9yIHRoZSB0cmFuc2ZlciwgaW4KK3doaWNoIGNhc2UgYSB2aXJ0dWFsIG1hcHBpbmcgb2YgdGhlIHBhZ2UgaXMgcmVxdWlyZWQuIEZvciBTQ1NJIGl0IGlzIGFsc28KK2RvbmUgaW4gc29tZSBzY2VuYXJpb3Mgd2hlcmUgdGhlIGxvdyBsZXZlbCBkcml2ZXIgY2Fubm90IGJlIHRydXN0ZWQgdG8KK2hhbmRsZSBhIHNpbmdsZSBzZyBlbnRyeSBjb3JyZWN0bHkuIFRoZSBkcml2ZXIgaXMgZXhwZWN0ZWQgdG8gcGVyZm9ybSB0aGUKK2ttYXBzIGFzIG5lZWRlZCBvbiBzdWNoIG9jY2FzaW9ucyB1c2luZyB0aGUgX19iaW9fa21hcF9hdG9taWMgYW5kIGJpb19rbWFwX2lycQorcm91dGluZXMgYXMgYXBwcm9wcmlhdGUuIEEgZHJpdmVyIGNvdWxkIGFsc28gdXNlIHRoZSBibGtfcXVldWVfYm91bmNlKCkKK3JvdXRpbmUgb24gaXRzIG93biB0byBib3VuY2UgaGlnaG1lbSBpL28gdG8gbG93IG1lbW9yeSBmb3Igc3BlY2lmaWMgcmVxdWVzdHMKK2lmIHNvIGRlc2lyZWQuCisKK2lpaS4gVGhlIGkvbyBzY2hlZHVsZXIgYWxnb3JpdGhtIGl0c2VsZiBjYW4gYmUgcmVwbGFjZWQvc2V0IGFzIGFwcHJvcHJpYXRlCisKK0FzIGluIDIuNCwgaXQgaXMgcG9zc2libGUgdG8gcGx1Z2luIGEgYnJhbmQgbmV3IGkvbyBzY2hlZHVsZXIgZm9yIGEgcGFydGljdWxhcgorcXVldWUgb3IgcGljayBmcm9tIChjb3B5KSBleGlzdGluZyBnZW5lcmljIHNjaGVkdWxlcnMgYW5kIHJlcGxhY2Uvb3ZlcnJpZGUKK2NlcnRhaW4gcG9ydGlvbnMgb2YgaXQuIFRoZSAyLjUgcmV3cml0ZSBwcm92aWRlcyBpbXByb3ZlZCBtb2R1bGFyaXphdGlvbgorb2YgdGhlIGkvbyBzY2hlZHVsZXIuIFRoZXJlIGFyZSBtb3JlIHBsdWdnYWJsZSBjYWxsYmFja3MsIGUuZyBmb3IgaW5pdCwKK2FkZCByZXF1ZXN0LCBleHRyYWN0IHJlcXVlc3QsIHdoaWNoIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGFic3RyYWN0IHNwZWNpZmljCitpL28gc2NoZWR1bGluZyBhbGdvcml0aG0gYXNwZWN0cyBhbmQgZGV0YWlscyBvdXRzaWRlIG9mIHRoZSBnZW5lcmljIGxvb3AuCitJdCBhbHNvIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGNvbXBsZXRlbHkgaGlkZSB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZgordGhlIGkvbyBzY2hlZHVsZXIgZnJvbSBibG9jayBkcml2ZXJzLgorCitJL08gc2NoZWR1bGVyIHdyYXBwZXJzIGFyZSB0byBiZSB1c2VkIGluc3RlYWQgb2YgYWNjZXNzaW5nIHRoZSBxdWV1ZSBkaXJlY3RseS4KK1NlZSBzZWN0aW9uIDQuIFRoZSBJL08gc2NoZWR1bGVyIGZvciBkZXRhaWxzLgorCisxLjIgVHVuaW5nIEJhc2VkIG9uIEhpZ2ggbGV2ZWwgY29kZSBjYXBhYmlsaXRpZXMKKworaS4gQXBwbGljYXRpb24gY2FwYWJpbGl0aWVzIGZvciByYXcgaS9vCisKK1RoaXMgY29tZXMgZnJvbSBzb21lIG9mIHRoZSBoaWdoLXBlcmZvcm1hbmNlIGRhdGFiYXNlL21pZGRsZXdhcmUKK3JlcXVpcmVtZW50cyB3aGVyZSBhbiBhcHBsaWNhdGlvbiBwcmVmZXJzIHRvIG1ha2UgaXRzIG93biBpL28gc2NoZWR1bGluZworZGVjaXNpb25zIGJhc2VkIG9uIGFuIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGFjY2VzcyBwYXR0ZXJucyBhbmQgaS9vCitjaGFyYWN0ZXJpc3RpY3MKKworaWkuIEhpZ2ggcGVyZm9ybWFuY2UgZmlsZXN5c3RlbXMgb3Igb3RoZXIgaGlnaGVyIGxldmVsIGtlcm5lbCBjb2RlJ3MKK2NhcGFiaWxpdGllcworCitLZXJuZWwgY29tcG9uZW50cyBsaWtlIGZpbGVzeXN0ZW1zIGNvdWxkIGFsc28gdGFrZSB0aGVpciBvd24gaS9vIHNjaGVkdWxpbmcKK2RlY2lzaW9ucyBmb3Igb3B0aW1pemluZyBwZXJmb3JtYW5jZS4gSm91cm5hbGxpbmcgZmlsZXN5c3RlbXMgbWF5IG5lZWQKK3NvbWUgY29udHJvbCBvdmVyIGkvbyBvcmRlcmluZy4KKworV2hhdCBraW5kIG9mIHN1cHBvcnQgZXhpc3RzIGF0IHRoZSBnZW5lcmljIGJsb2NrIGxheWVyIGZvciB0aGlzID8KKworVGhlIGZsYWdzIGFuZCBydyBmaWVsZHMgaW4gdGhlIGJpbyBzdHJ1Y3R1cmUgY2FuIGJlIHVzZWQgZm9yIHNvbWUgdHVuaW5nCitmcm9tIGFib3ZlIGUuZyBpbmRpY2F0aW5nIHRoYXQgYW4gaS9vIGlzIGp1c3QgYSByZWFkYWhlYWQgcmVxdWVzdCwgb3IgcHJpb3JpdHkKK3NldHRpbmdzIChjdXJyZW50bHkgdW51c2VkKS4gQXMgZmFyIGFzIHVzZXIgYXBwbGljYXRpb25zIGFyZSBjb25jZXJuZWQgdGhleQord291bGQgbmVlZCBhbiBhZGRpdGlvbmFsIG1lY2hhbmlzbSBlaXRoZXIgdmlhIG9wZW4gZmxhZ3Mgb3IgaW9jdGxzLCBvciBzb21lCitvdGhlciB1cHBlciBsZXZlbCBtZWNoYW5pc20gdG8gY29tbXVuaWNhdGUgc3VjaCBzZXR0aW5ncyB0byBibG9jay4KKworMS4yLjEgUmVxdWVzdCBQcmlvcml0eS9MYXRlbmN5CisKK1RvZG8vVW5kZXIgZGlzY3Vzc2lvbjoKK0FyamFuJ3MgcHJvcG9zZWQgcmVxdWVzdCBwcmlvcml0eSBzY2hlbWUgYWxsb3dzIGhpZ2hlciBsZXZlbHMgc29tZSBicm9hZAorICBjb250cm9sIChoaWdoL21lZC9sb3cpIG92ZXIgdGhlIHByaW9yaXR5ICBvZiBhbiBpL28gcmVxdWVzdCB2cyBvdGhlciBwZW5kaW5nCisgIHJlcXVlc3RzIGluIHRoZSBxdWV1ZS4gRm9yIGV4YW1wbGUgaXQgYWxsb3dzIHJlYWRzIGZvciBicmluZ2luZyBpbiBhbgorICBleGVjdXRhYmxlIHBhZ2Ugb24gZGVtYW5kIHRvIGJlIGdpdmVuIGEgaGlnaGVyIHByaW9yaXR5IG92ZXIgcGVuZGluZyB3cml0ZQorICByZXF1ZXN0cyB3aGljaCBoYXZlbid0IGFnZWQgdG9vIG11Y2ggb24gdGhlIHF1ZXVlLiBQb3RlbnRpYWxseSB0aGlzIHByaW9yaXR5CisgIGNvdWxkIGV2ZW4gYmUgZXhwb3NlZCB0byBhcHBsaWNhdGlvbnMgaW4gc29tZSBtYW5uZXIsIHByb3ZpZGluZyBoaWdoZXIgbGV2ZWwKKyAgdHVuYWJpbGl0eS4gVGltZSBiYXNlZCBhZ2luZyBhdm9pZHMgc3RhcnZhdGlvbiBvZiBsb3dlciBwcmlvcml0eQorICByZXF1ZXN0cy4gU29tZSBiaXRzIGluIHRoZSBiaV9ydyBmbGFncyBmaWVsZCBpbiB0aGUgYmlvIHN0cnVjdHVyZSBhcmUKKyAgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdGhpcyBwcmlvcml0eSBpbmZvcm1hdGlvbi4KKworCisxLjMgRGlyZWN0IEFjY2VzcyB0byBMb3cgbGV2ZWwgRGV2aWNlL0RyaXZlciBDYXBhYmlsaXRpZXMgKEJ5cGFzcyBtb2RlKQorICAgIChlLmcgRGlhZ25vc3RpY3MsIFN5c3RlbXMgTWFuYWdlbWVudCkKKworVGhlcmUgYXJlIHNpdHVhdGlvbnMgd2hlcmUgaGlnaC1sZXZlbCBjb2RlIG5lZWRzIHRvIGhhdmUgZGlyZWN0IGFjY2VzcyB0bwordGhlIGxvdyBsZXZlbCBkZXZpY2UgY2FwYWJpbGl0aWVzIG9yIHJlcXVpcmVzIHRoZSBhYmlsaXR5IHRvIGlzc3VlIGNvbW1hbmRzCit0byB0aGUgZGV2aWNlIGJ5cGFzc2luZyBzb21lIG9mIHRoZSBpbnRlcm1lZGlhdGUgaS9vIGxheWVycy4KK1RoZXNlIGNvdWxkLCBmb3IgZXhhbXBsZSwgYmUgc3BlY2lhbCBjb250cm9sIGNvbW1hbmRzIGlzc3VlZCB0aHJvdWdoIGlvY3RsCitpbnRlcmZhY2VzLCBvciBjb3VsZCBiZSByYXcgcmVhZC93cml0ZSBjb21tYW5kcyB0aGF0IHN0cmVzcyB0aGUgZHJpdmUncworY2FwYWJpbGl0aWVzIGZvciBjZXJ0YWluIGtpbmRzIG9mIGZpdG5lc3MgdGVzdHMuIEhhdmluZyBkaXJlY3QgaW50ZXJmYWNlcyBhdAorbXVsdGlwbGUgbGV2ZWxzIHdpdGhvdXQgaGF2aW5nIHRvIHBhc3MgdGhyb3VnaCB1cHBlciBsYXllcnMgbWFrZXMKK2l0IHBvc3NpYmxlIHRvIHBlcmZvcm0gYm90dG9tIHVwIHZhbGlkYXRpb24gb2YgdGhlIGkvbyBwYXRoLCBsYXllciBieQorbGF5ZXIsIHN0YXJ0aW5nIGZyb20gdGhlIG1lZGlhLgorCitUaGUgbm9ybWFsIGkvbyBzdWJtaXNzaW9uIGludGVyZmFjZXMsIGUuZyBzdWJtaXRfYmlvLCBjb3VsZCBiZSBieXBhc3NlZAorZm9yIHNwZWNpYWxseSBjcmFmdGVkIHJlcXVlc3RzIHdoaWNoIHN1Y2ggaW9jdGwgb3IgZGlhZ25vc3RpY3MKK2ludGVyZmFjZXMgd291bGQgdHlwaWNhbGx5IHVzZSwgYW5kIHRoZSBlbGV2YXRvciBhZGRfcmVxdWVzdCByb3V0aW5lCitjYW4gaW5zdGVhZCBiZSB1c2VkIHRvIGRpcmVjdGx5IGluc2VydCBzdWNoIHJlcXVlc3RzIGluIHRoZSBxdWV1ZSBvciBwcmVmZXJhYmx5Cit0aGUgYmxrX2RvX3JxIHJvdXRpbmUgY2FuIGJlIHVzZWQgdG8gcGxhY2UgdGhlIHJlcXVlc3Qgb24gdGhlIHF1ZXVlIGFuZAord2FpdCBmb3IgY29tcGxldGlvbi4gQWx0ZXJuYXRpdmVseSwgc29tZXRpbWVzIHRoZSBjYWxsZXIgbWlnaHQganVzdAoraW52b2tlIGEgbG93ZXIgbGV2ZWwgZHJpdmVyIHNwZWNpZmljIGludGVyZmFjZSB3aXRoIHRoZSByZXF1ZXN0IGFzIGEKK3BhcmFtZXRlci4KKworSWYgdGhlIHJlcXVlc3QgaXMgYSBtZWFucyBmb3IgcGFzc2luZyBvbiBzcGVjaWFsIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aAordGhlIGNvbW1hbmQsIHRoZW4gc3VjaCBpbmZvcm1hdGlvbiBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVlc3QtPnNwZWNpYWwKK2ZpZWxkIChyYXRoZXIgdGhhbiBtaXN1c2UgdGhlIHJlcXVlc3QtPmJ1ZmZlciBmaWVsZCB3aGljaCBpcyBtZWFudCBmb3IgdGhlCityZXF1ZXN0IGRhdGEgYnVmZmVyJ3MgdmlydHVhbCBtYXBwaW5nKS4KKworRm9yIHBhc3NpbmcgcmVxdWVzdCBkYXRhLCB0aGUgY2FsbGVyIG11c3QgYnVpbGQgdXAgYSBiaW8gZGVzY3JpcHRvcgorcmVwcmVzZW50aW5nIHRoZSBjb25jZXJuZWQgbWVtb3J5IGJ1ZmZlciBpZiB0aGUgdW5kZXJseWluZyBkcml2ZXIgaW50ZXJwcmV0cworYmlvIHNlZ21lbnRzIG9yIHVzZXMgdGhlIGJsb2NrIGxheWVyIGVuZCpyZXF1ZXN0KiBmdW5jdGlvbnMgZm9yIGkvbworY29tcGxldGlvbi4gQWx0ZXJuYXRpdmVseSBvbmUgY291bGQgZGlyZWN0bHkgdXNlIHRoZSByZXF1ZXN0LT5idWZmZXIgZmllbGQgdG8KK3NwZWNpZnkgdGhlIHZpcnR1YWwgYWRkcmVzcyBvZiB0aGUgYnVmZmVyLCBpZiB0aGUgZHJpdmVyIGV4cGVjdHMgYnVmZmVyCithZGRyZXNzZXMgcGFzc2VkIGluIHRoaXMgd2F5IGFuZCBpZ25vcmVzIGJpbyBlbnRyaWVzIGZvciB0aGUgcmVxdWVzdCB0eXBlCitpbnZvbHZlZC4gSW4gdGhlIGxhdHRlciBjYXNlLCB0aGUgZHJpdmVyIHdvdWxkIG1vZGlmeSBhbmQgbWFuYWdlIHRoZQorcmVxdWVzdC0+YnVmZmVyLCByZXF1ZXN0LT5zZWN0b3IgYW5kIHJlcXVlc3QtPm5yX3NlY3RvcnMgb3IKK3JlcXVlc3QtPmN1cnJlbnRfbnJfc2VjdG9ycyBmaWVsZHMgaXRzZWxmIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBibG9jayBsYXllcgorZW5kX3JlcXVlc3Qgb3IgZW5kX3RoYXRfcmVxdWVzdF9maXJzdCBjb21wbGV0aW9uIGludGVyZmFjZXMuCisoU2VlIDIuMyBvciBEb2N1bWVudGF0aW9uL2Jsb2NrL3JlcXVlc3QudHh0IGZvciBhIGJyaWVmIGV4cGxhbmF0aW9uIG9mCit0aGUgcmVxdWVzdCBzdHJ1Y3R1cmUgZmllbGRzKQorCitbVEJEOiBlbmRfdGhhdF9yZXF1ZXN0X2xhc3Qgc2hvdWxkIGJlIHVzYWJsZSBldmVuIGluIHRoaXMgY2FzZTsKK1BlcmhhcHMgYW4gZW5kX3RoYXRfZGlyZWN0X3JlcXVlc3RfZmlyc3Qgcm91dGluZSBjb3VsZCBiZSBpbXBsZW1lbnRlZCB0byBtYWtlCitoYW5kbGluZyBkaXJlY3QgcmVxdWVzdHMgZWFzaWVyIGZvciBzdWNoIGRyaXZlcnM7IEFsc28gZm9yIGRyaXZlcnMgdGhhdAorZXhwZWN0IGJpb3MsIGEgaGVscGVyIGZ1bmN0aW9uIGNvdWxkIGJlIHByb3ZpZGVkIGZvciBzZXR0aW5nIHVwIGEgYmlvCitjb3JyZXNwb25kaW5nIHRvIGEgZGF0YSBidWZmZXJdCisKKzxKRU5TOiBJIGRvbnQgdW5kZXJzdGFuZCB0aGUgYWJvdmUsIHdoeSBpcyBlbmRfdGhhdF9yZXF1ZXN0X2ZpcnN0KCkgbm90Cit1c2FibGU/IE9yIF9sYXN0IGZvciB0aGF0IG1hdHRlci4gSSBtdXN0IGJlIG1pc3Npbmcgc29tZXRoaW5nPgorPFNVUDogV2hhdCBJIG1lYW50IGhlcmUgd2FzIHRoYXQgaWYgdGhlIHJlcXVlc3QgZG9lc24ndCBoYXZlIGEgYmlvLCB0aGVuCisgZW5kX3RoYXRfcmVxdWVzdF9maXJzdCBkb2Vzbid0IG1vZGlmeSBucl9zZWN0b3JzIG9yIGN1cnJlbnRfbnJfc2VjdG9ycywKKyBhbmQgaGVuY2UgY2FuJ3QgYmUgdXNlZCBmb3IgYWR2YW5jaW5nIHJlcXVlc3Qgc3RhdGUgc2V0dGluZ3Mgb24gdGhlCisgY29tcGxldGlvbiBvZiBwYXJ0aWFsIHRyYW5zZmVycy4gVGhlIGRyaXZlciBoYXMgdG8gbW9kaWZ5IHRoZXNlIGZpZWxkcyAKKyBkaXJlY3RseSBieSBoYW5kLgorIFRoaXMgaXMgYmVjYXVzZSBlbmRfdGhhdF9yZXF1ZXN0X2ZpcnN0IG9ubHkgaXRlcmF0ZXMgb3ZlciB0aGUgYmlvIGxpc3QsCisgYW5kIGFsd2F5cyByZXR1cm5zIDAgaWYgdGhlcmUgYXJlIG5vbmUgYXNzb2NpYXRlZCB3aXRoIHRoZSByZXF1ZXN0LgorIF9sYXN0IHdvcmtzIE9LIGluIHRoaXMgY2FzZSwgYW5kIGlzIG5vdCBhIHByb2JsZW0sIGFzIEkgbWVudGlvbmVkIGVhcmxpZXIKKz4KKworMS4zLjEgUHJlLWJ1aWx0IENvbW1hbmRzCisKK0EgcmVxdWVzdCBjYW4gYmUgY3JlYXRlZCB3aXRoIGEgcHJlLWJ1aWx0IGN1c3RvbSBjb21tYW5kICB0byBiZSBzZW50IGRpcmVjdGx5Cit0byB0aGUgZGV2aWNlLiBUaGUgY21kIGJsb2NrIGluIHRoZSByZXF1ZXN0IHN0cnVjdHVyZSBoYXMgcm9vbSBmb3IgZmlsbGluZworaW4gdGhlIGNvbW1hbmQgYnl0ZXMuIChpLmUgcnEtPmNtZCBpcyBub3cgMTYgYnl0ZXMgaW4gc2l6ZSwgYW5kIG1lYW50IGZvcgorY29tbWFuZCBwcmUtYnVpbGRpbmcsIGFuZCB0aGUgdHlwZSBvZiB0aGUgcmVxdWVzdCBpcyBub3cgaW5kaWNhdGVkCit0aHJvdWdoIHJxLT5mbGFncyBpbnN0ZWFkIG9mIHZpYSBycS0+Y21kKQorCitUaGUgcmVxdWVzdCBzdHJ1Y3R1cmUgZmxhZ3MgY2FuIGJlIHNldCB1cCB0byBpbmRpY2F0ZSB0aGUgdHlwZSBvZiByZXF1ZXN0CitpbiBzdWNoIGNhc2VzIChSRVFfUEM6IGRpcmVjdCBwYWNrZXQgY29tbWFuZCBwYXNzZWQgdG8gZHJpdmVyLCBSRVFfQkxPQ0tfUEM6CitwYWNrZXQgY29tbWFuZCBpc3N1ZWQgdmlhIGJsa19kb19ycSwgUkVRX1NQRUNJQUw6IHNwZWNpYWwgcmVxdWVzdCkuCisKK0l0IGNhbiBoZWxwIHRvIHByZS1idWlsZCBkZXZpY2UgY29tbWFuZHMgZm9yIHJlcXVlc3RzIGluIGFkdmFuY2UuCitEcml2ZXJzIGNhbiBub3cgc3BlY2lmeSBhIHJlcXVlc3QgcHJlcGFyZSBmdW5jdGlvbiAocS0+cHJlcF9ycV9mbikgdGhhdCB0aGUKK2Jsb2NrIGxheWVyIHdvdWxkIGludm9rZSB0byBwcmUtYnVpbGQgZGV2aWNlIGNvbW1hbmRzIGZvciBhIGdpdmVuIHJlcXVlc3QsCitvciBwZXJmb3JtIG90aGVyIHByZXBhcmF0b3J5IHByb2Nlc3NpbmcgZm9yIHRoZSByZXF1ZXN0LiBUaGlzIGlzIHJvdXRpbmUgaXMKK2NhbGxlZCBieSBlbHZfbmV4dF9yZXF1ZXN0KCksIGkuZS4gdHlwaWNhbGx5IGp1c3QgYmVmb3JlIHNlcnZpY2luZyBhIHJlcXVlc3QuCisoVGhlIHByZXBhcmUgZnVuY3Rpb24gd291bGQgbm90IGJlIGNhbGxlZCBmb3IgcmVxdWVzdHMgdGhhdCBoYXZlIFJFUV9ET05UUFJFUAorZW5hYmxlZCkKKworQXNpZGU6CisgIFByZS1idWlsZGluZyBjb3VsZCBwb3NzaWJseSBldmVuIGJlIGRvbmUgZWFybHksIGkuZSBiZWZvcmUgcGxhY2luZyB0aGUKKyAgcmVxdWVzdCBvbiB0aGUgcXVldWUsIHJhdGhlciB0aGFuIGNvbnN0cnVjdCB0aGUgY29tbWFuZCBvbiB0aGUgZmx5IGluIHRoZQorICBkcml2ZXIgd2hpbGUgc2VydmljaW5nIHRoZSByZXF1ZXN0IHF1ZXVlIHdoZW4gaXQgbWF5IGFmZmVjdCBsYXRlbmNpZXMgaW4KKyAgaW50ZXJydXB0IGNvbnRleHQgb3IgcmVzcG9uc2l2ZW5lc3MgaW4gZ2VuZXJhbC4gT25lIHdheSB0byBhZGQgZWFybHkKKyAgcHJlLWJ1aWxkaW5nIHdvdWxkIGJlIHRvIGRvIGl0IHdoZW5ldmVyIHdlIGZhaWwgdG8gbWVyZ2Ugb24gYSByZXF1ZXN0LgorICBOb3cgUkVRX05PTUVSR0UgaXMgc2V0IGluIHRoZSByZXF1ZXN0IGZsYWdzIHRvIHNraXAgdGhpcyBvbmUgaW4gdGhlIGZ1dHVyZSwKKyAgd2hpY2ggbWVhbnMgdGhhdCBpdCB3aWxsIG5vdCBjaGFuZ2UgYmVmb3JlIHdlIGZlZWQgaXQgdG8gdGhlIGRldmljZS4gU28KKyAgdGhlIHByZS1idWlsZGVyIGhvb2sgY2FuIGJlIGludm9rZWQgdGhlcmUuCisKKworMi4gRmxleGlibGUgYW5kIGdlbmVyaWMgYnV0IG1pbmltYWxpc3QgaS9vIHN0cnVjdHVyZS9kZXNjcmlwdG9yLgorCisyLjEgUmVhc29uIGZvciBhIG5ldyBzdHJ1Y3R1cmUgYW5kIHJlcXVpcmVtZW50cyBhZGRyZXNzZWQKKworUHJpb3IgdG8gMi41LCBidWZmZXIgaGVhZHMgd2VyZSB1c2VkIGFzIHRoZSB1bml0IG9mIGkvbyBhdCB0aGUgZ2VuZXJpYyBibG9jaworbGF5ZXIsIGFuZCB0aGUgbG93IGxldmVsIHJlcXVlc3Qgc3RydWN0dXJlIHdhcyBhc3NvY2lhdGVkIHdpdGggYSBjaGFpbiBvZgorYnVmZmVyIGhlYWRzIGZvciBhIGNvbnRpZ3VvdXMgaS9vIHJlcXVlc3QuIFRoaXMgbGVkIHRvIGNlcnRhaW4gaW5lZmZpY2llbmNpZXMKK3doZW4gaXQgY2FtZSB0byBsYXJnZSBpL28gcmVxdWVzdHMgYW5kIHJlYWR2L3dyaXRldiBzdHlsZSBvcGVyYXRpb25zLCBhcyBpdAorZm9yY2VkIHN1Y2ggcmVxdWVzdHMgdG8gYmUgYnJva2VuIHVwIGludG8gc21hbGwgY2h1bmtzIGJlZm9yZSBiZWluZyBwYXNzZWQKK29uIHRvIHRoZSBnZW5lcmljIGJsb2NrIGxheWVyLCBvbmx5IHRvIGJlIG1lcmdlZCBieSB0aGUgaS9vIHNjaGVkdWxlcgord2hlbiB0aGUgdW5kZXJseWluZyBkZXZpY2Ugd2FzIGNhcGFibGUgb2YgaGFuZGxpbmcgdGhlIGkvbyBpbiBvbmUgc2hvdC4KK0Fsc28sIHVzaW5nIHRoZSBidWZmZXIgaGVhZCBhcyBhbiBpL28gc3RydWN0dXJlIGZvciBpL29zIHRoYXQgZGlkbid0IG9yaWdpbmF0ZQorZnJvbSB0aGUgYnVmZmVyIGNhY2hlIHVubmVjZXNzYXJpbHkgYWRkZWQgdG8gdGhlIHdlaWdodCBvZiB0aGUgZGVzY3JpcHRvcnMKK3doaWNoIHdlcmUgZ2VuZXJhdGVkIGZvciBlYWNoIHN1Y2ggY2h1bmsuCisKK1RoZSBmb2xsb3dpbmcgd2VyZSBzb21lIG9mIHRoZSBnb2FscyBhbmQgZXhwZWN0YXRpb25zIGNvbnNpZGVyZWQgaW4gdGhlCityZWRlc2lnbiBvZiB0aGUgYmxvY2sgaS9vIGRhdGEgc3RydWN0dXJlIGluIDIuNS4KKworaS4gIFNob3VsZCBiZSBhcHByb3ByaWF0ZSBhcyBhIGRlc2NyaXB0b3IgZm9yIGJvdGggcmF3IGFuZCBidWZmZXJlZCBpL28gIC0KKyAgICBhdm9pZCBjYWNoZSByZWxhdGVkIGZpZWxkcyB3aGljaCBhcmUgaXJyZWxldmFudCBpbiB0aGUgZGlyZWN0L3BhZ2UgaS9vIHBhdGgsCisgICAgb3IgZmlsZXN5c3RlbSBibG9jayBzaXplIGFsaWdubWVudCByZXN0cmljdGlvbnMgd2hpY2ggbWF5IG5vdCBiZSByZWxldmFudAorICAgIGZvciByYXcgaS9vLgoraWkuIEFiaWxpdHkgdG8gcmVwcmVzZW50IGhpZ2gtbWVtb3J5IGJ1ZmZlcnMgKHdoaWNoIGRvIG5vdCBoYXZlIGEgdmlydHVhbAorICAgIGFkZHJlc3MgbWFwcGluZyBpbiBrZXJuZWwgYWRkcmVzcyBzcGFjZSkuCitpaWkuQWJpbGl0eSB0byByZXByZXNlbnQgbGFyZ2UgaS9vcyB3L28gdW5uZWNlc3NhcmlseSBicmVha2luZyB0aGVtIHVwIChpLmUKKyAgICBncmVhdGVyIHRoYW4gUEFHRV9TSVpFIGNodW5rcyBpbiBvbmUgc2hvdCkKK2l2LiBBdCB0aGUgc2FtZSB0aW1lLCBhYmlsaXR5IHRvIHJldGFpbiBpbmRlcGVuZGVudCBpZGVudGl0eSBvZiBpL29zIGZyb20KKyAgICBkaWZmZXJlbnQgc291cmNlcyBvciBpL28gdW5pdHMgcmVxdWlyaW5nIGluZGl2aWR1YWwgY29tcGxldGlvbiAoZS5nLiBmb3IKKyAgICBsYXRlbmN5IHJlYXNvbnMpCit2LiAgQWJpbGl0eSB0byByZXByZXNlbnQgYW4gaS9vIGludm9sdmluZyBtdWx0aXBsZSBwaHlzaWNhbCBtZW1vcnkgc2VnbWVudHMKKyAgICAoaW5jbHVkaW5nIG5vbi1wYWdlIGFsaWduZWQgcGFnZSBmcmFnbWVudHMsIGFzIHNwZWNpZmllZCB2aWEgcmVhZHYvd3JpdGV2KQorICAgIHdpdGhvdXQgdW5uZWNlc3NhcmlseSBicmVha2luZyBpdCB1cCwgaWYgdGhlIHVuZGVybHlpbmcgZGV2aWNlIGlzIGNhcGFibGUgb2YKKyAgICBoYW5kbGluZyBpdC4KK3ZpLiBQcmVmZXJhYmx5IHNob3VsZCBiZSBiYXNlZCBvbiBhIG1lbW9yeSBkZXNjcmlwdG9yIHN0cnVjdHVyZSB0aGF0IGNhbiBiZQorICAgIHBhc3NlZCBhcm91bmQgZGlmZmVyZW50IHR5cGVzIG9mIHN1YnN5c3RlbXMgb3IgbGF5ZXJzLCBtYXliZSBldmVuCisgICAgbmV0d29ya2luZywgd2l0aG91dCBkdXBsaWNhdGlvbiBvciBleHRyYSBjb3BpZXMgb2YgZGF0YS9kZXNjcmlwdG9yIGZpZWxkcworICAgIHRoZW1zZWx2ZXMgaW4gdGhlIHByb2Nlc3MKK3ZpaS5BYmlsaXR5IHRvIGhhbmRsZSB0aGUgcG9zc2liaWxpdHkgb2Ygc3BsaXRzL21lcmdlcyBhcyB0aGUgc3RydWN0dXJlIHBhc3NlcworICAgIHRocm91Z2ggbGF5ZXJlZCBkcml2ZXJzIChsdm0sIG1kLCBldm1zKSwgd2l0aCBtaW5pbWFsIG92ZXJoZWFkLgorCitUaGUgc29sdXRpb24gd2FzIHRvIGRlZmluZSBhIG5ldyBzdHJ1Y3R1cmUgKGJpbykgIGZvciB0aGUgYmxvY2sgbGF5ZXIsCitpbnN0ZWFkIG9mIHVzaW5nIHRoZSBidWZmZXIgaGVhZCBzdHJ1Y3R1cmUgKGJoKSBkaXJlY3RseSwgdGhlIGlkZWEgYmVpbmcKK2F2b2lkYW5jZSBvZiBzb21lIGFzc29jaWF0ZWQgYmFnZ2FnZSBhbmQgbGltaXRhdGlvbnMuIFRoZSBiaW8gc3RydWN0dXJlCitpcyB1bmlmb3JtbHkgdXNlZCBmb3IgYWxsIGkvbyBhdCB0aGUgYmxvY2sgbGF5ZXIgOyBpdCBmb3JtcyBhIHBhcnQgb2YgdGhlCitiaCBzdHJ1Y3R1cmUgZm9yIGJ1ZmZlcmVkIGkvbywgYW5kIGluIHRoZSBjYXNlIG9mIHJhdy9kaXJlY3QgaS9vIGtpb2J1ZnMgYXJlCittYXBwZWQgdG8gYmlvIHN0cnVjdHVyZXMuCisKKzIuMiBUaGUgYmlvIHN0cnVjdAorCitUaGUgYmlvIHN0cnVjdHVyZSB1c2VzIGEgdmVjdG9yIHJlcHJlc2VudGF0aW9uIHBvaW50aW5nIHRvIGFuIGFycmF5IG9mIHR1cGxlcworb2YgPHBhZ2UsIG9mZnNldCwgbGVuPiB0byBkZXNjcmliZSB0aGUgaS9vIGJ1ZmZlciwgYW5kIGhhcyB2YXJpb3VzIG90aGVyCitmaWVsZHMgZGVzY3JpYmluZyBpL28gcGFyYW1ldGVycyBhbmQgc3RhdGUgdGhhdCBuZWVkcyB0byBiZSBtYWludGFpbmVkIGZvcgorcGVyZm9ybWluZyB0aGUgaS9vLgorCitOb3RpY2UgdGhhdCB0aGlzIHJlcHJlc2VudGF0aW9uIG1lYW5zIHRoYXQgYSBiaW8gaGFzIG5vIHZpcnR1YWwgYWRkcmVzcworbWFwcGluZyBhdCBhbGwgKHVubGlrZSBidWZmZXIgaGVhZHMpLgorCitzdHJ1Y3QgYmlvX3ZlYyB7CisgICAgICAgc3RydWN0IHBhZ2UgICAgICpidl9wYWdlOworICAgICAgIHVuc2lnbmVkIHNob3J0ICBidl9sZW47CisgICAgICAgdW5zaWduZWQgc2hvcnQgIGJ2X29mZnNldDsKK307CisKKy8qCisgKiBtYWluIHVuaXQgb2YgSS9PIGZvciB0aGUgYmxvY2sgbGF5ZXIgYW5kIGxvd2VyIGxheWVycyAoaWUgZHJpdmVycykKKyAqLworc3RydWN0IGJpbyB7CisgICAgICAgc3RydWN0IGJpbyAgICAgICAgICAqYmlfbmV4dDsgICAgLyogcmVxdWVzdCBxdWV1ZSBsaW5rICovCisgICAgICAgc3RydWN0IGJsb2NrX2RldmljZSAqYmlfYmRldjsJLyogdGFyZ2V0IGRldmljZSAqLworICAgICAgIHVuc2lnbmVkIGxvbmcgICAgICAgYmlfZmxhZ3M7ICAgIC8qIHN0YXR1cywgY29tbWFuZCwgZXRjICovCisgICAgICAgdW5zaWduZWQgbG9uZyAgICAgICBiaV9ydzsgICAgICAgLyogbG93IGJpdHM6IHIvdywgaGlnaDogcHJpb3JpdHkgKi8KKworICAgICAgIHVuc2lnbmVkIGludAliaV92Y250OyAgICAgLyogaG93IG1heSBiaW9fdmVjJ3MgKi8KKyAgICAgICBzdHJ1Y3QgYnZlY19pdGVyCWJpX2l0ZXI7CS8qIGN1cnJlbnQgaW5kZXggaW50byBiaW9fdmVjIGFycmF5ICovCisKKyAgICAgICB1bnNpZ25lZCBpbnQJYmlfc2l6ZTsgICAgIC8qIHRvdGFsIHNpemUgaW4gYnl0ZXMgKi8KKyAgICAgICB1bnNpZ25lZCBzaG9ydCAJYmlfcGh5c19zZWdtZW50czsgLyogc2VnbWVudHMgYWZ0ZXIgcGh5c2FkZHIgY29hbGVzY2UqLworICAgICAgIHVuc2lnbmVkIHNob3J0CWJpX2h3X3NlZ21lbnRzOyAvKiBzZWdtZW50cyBhZnRlciBETUEgcmVtYXBwaW5nICovCisgICAgICAgdW5zaWduZWQgaW50CWJpX21heDsJICAgICAvKiBtYXggYmlvX3ZlY3Mgd2UgY2FuIGhvbGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIGFzIGluZGV4IGludG8gcG9vbCAqLworICAgICAgIHN0cnVjdCBiaW9fdmVjICAgKmJpX2lvX3ZlYzsgIC8qIHRoZSBhY3R1YWwgdmVjIGxpc3QgKi8KKyAgICAgICBiaW9fZW5kX2lvX3QJKmJpX2VuZF9pbzsgIC8qIGJpX2VuZF9pbyAoYmlvKSAqLworICAgICAgIGF0b21pY190CQliaV9jbnQ7CSAgICAgLyogcGluIGNvdW50OiBmcmVlIHdoZW4gaXQgaGl0cyB6ZXJvICovCisgICAgICAgdm9pZCAgICAgICAgICAgICAqYmlfcHJpdmF0ZTsKK307CisKK1dpdGggdGhpcyBtdWx0aXBhZ2UgYmlvIGRlc2lnbjoKKworLSBMYXJnZSBpL29zIGNhbiBiZSBzZW50IGRvd24gaW4gb25lIGdvIHVzaW5nIGEgYmlvX3ZlYyBsaXN0IGNvbnNpc3RpbmcKKyAgb2YgYW4gYXJyYXkgb2YgPHBhZ2UsIG9mZnNldCwgbGVuPiBmcmFnbWVudHMgKHNpbWlsYXIgdG8gdGhlIHdheSBmcmFnbWVudHMKKyAgYXJlIHJlcHJlc2VudGVkIGluIHRoZSB6ZXJvLWNvcHkgbmV0d29yayBjb2RlKQorLSBTcGxpdHRpbmcgb2YgYW4gaS9vIHJlcXVlc3QgYWNyb3NzIG11bHRpcGxlIGRldmljZXMgKGFzIGluIHRoZSBjYXNlIG9mCisgIGx2bSBvciByYWlkKSBpcyBhY2hpZXZlZCBieSBjbG9uaW5nIHRoZSBiaW8gKHdoZXJlIHRoZSBjbG9uZSBwb2ludHMgdG8KKyAgdGhlIHNhbWUgYmlfaW9fdmVjIGFycmF5LCBidXQgd2l0aCB0aGUgaW5kZXggYW5kIHNpemUgYWNjb3JkaW5nbHkgbW9kaWZpZWQpCistIEEgbGlua2VkIGxpc3Qgb2YgYmlvcyBpcyB1c2VkIGFzIGJlZm9yZSBmb3IgdW5yZWxhdGVkIG1lcmdlcyAoKikgLSB0aGlzCisgIGF2b2lkcyByZWFsbG9jcyBhbmQgbWFrZXMgaW5kZXBlbmRlbnQgY29tcGxldGlvbnMgZWFzaWVyIHRvIGhhbmRsZS4KKy0gQ29kZSB0aGF0IHRyYXZlcnNlcyB0aGUgcmVxIGxpc3QgY2FuIGZpbmQgYWxsIHRoZSBzZWdtZW50cyBvZiBhIGJpbworICBieSB1c2luZyBycV9mb3JfZWFjaF9zZWdtZW50LiAgVGhpcyBoYW5kbGVzIHRoZSBmYWN0IHRoYXQgYSByZXF1ZXN0CisgIGhhcyBtdWx0aXBsZSBiaW9zLCBlYWNoIG9mIHdoaWNoIGNhbiBoYXZlIG11bHRpcGxlIHNlZ21lbnRzLgorLSBEcml2ZXJzIHdoaWNoIGNhbid0IHByb2Nlc3MgYSBsYXJnZSBiaW8gaW4gb25lIHNob3QgY2FuIHVzZSB0aGUgYmlfaXRlcgorICBmaWVsZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBuZXh0IGJpb192ZWMgZW50cnkgdG8gcHJvY2Vzcy4KKyAgKGUuZyBhIDFNQiBiaW9fdmVjIG5lZWRzIHRvIGJlIGhhbmRsZWQgaW4gbWF4IDEyOGtCIGNodW5rcyBmb3IgSURFKQorICBbVEJEOiBTaG91bGQgcHJlZmVyYWJseSBhbHNvIGhhdmUgYSBiaV92b2Zmc2V0IGFuZCBiaV92bGVuIHRvIGF2b2lkIG1vZGlmeWluZworICAgYmlfb2Zmc2V0IGFuIGxlbiBmaWVsZHNdCisKKygqKSB1bnJlbGF0ZWQgbWVyZ2VzIC0tIGEgcmVxdWVzdCBlbmRzIHVwIGNvbnRhaW5pbmcgdHdvIG9yIG1vcmUgYmlvcyB0aGF0CisgICAgZGlkbid0IG9yaWdpbmF0ZSBmcm9tIHRoZSBzYW1lIHBsYWNlLgorCitiaV9lbmRfaW8oKSBpL28gY2FsbGJhY2sgZ2V0cyBjYWxsZWQgb24gaS9vIGNvbXBsZXRpb24gb2YgdGhlIGVudGlyZSBiaW8uCisKK0F0IGEgbG93ZXIgbGV2ZWwsIGRyaXZlcnMgYnVpbGQgYSBzY2F0dGVyIGdhdGhlciBsaXN0IGZyb20gdGhlIG1lcmdlZCBiaW9zLgorVGhlIHNjYXR0ZXIgZ2F0aGVyIGxpc3QgaXMgaW4gdGhlIGZvcm0gb2YgYW4gYXJyYXkgb2YgPHBhZ2UsIG9mZnNldCwgbGVuPgorZW50cmllcyB3aXRoIHRoZWlyIGNvcnJlc3BvbmRpbmcgZG1hIGFkZHJlc3MgbWFwcGluZ3MgZmlsbGVkIGluIGF0IHRoZQorYXBwcm9wcmlhdGUgdGltZS4gQXMgYW4gb3B0aW1pemF0aW9uLCBjb250aWd1b3VzIHBoeXNpY2FsIHBhZ2VzIGNhbiBiZQorY292ZXJlZCBieSBhIHNpbmdsZSBlbnRyeSB3aGVyZSA8cGFnZT4gcmVmZXJzIHRvIHRoZSBmaXJzdCBwYWdlIGFuZCA8bGVuPgorY292ZXJzIHRoZSByYW5nZSBvZiBwYWdlcyAodXAgdG8gMTYgY29udGlndW91cyBwYWdlcyBjb3VsZCBiZSBjb3ZlcmVkIHRoaXMKK3dheSkuIFRoZXJlIGlzIGEgaGVscGVyIHJvdXRpbmUgKGJsa19ycV9tYXBfc2cpIHdoaWNoIGRyaXZlcnMgY2FuIHVzZSB0byBidWlsZAordGhlIHNnIGxpc3QuCisKK05vdGU6IFJpZ2h0IG5vdyB0aGUgb25seSB1c2VyIG9mIGJpb3Mgd2l0aCBtb3JlIHRoYW4gb25lIHBhZ2UgaXMgbGxfcndfa2lvLAord2hpY2ggaW4gdHVybiBtZWFucyB0aGF0IG9ubHkgcmF3IEkvTyB1c2VzIGl0IChkaXJlY3QgaS9vIG1heSBub3Qgd29yaworcmlnaHQgbm93KS4gVGhlIGludGVudCBob3dldmVyIGlzIHRvIGVuYWJsZSBjbHVzdGVyaW5nIG9mIHBhZ2VzIGV0YyB0bworYmVjb21lIHBvc3NpYmxlLiBUaGUgcGFnZWJ1ZiBhYnN0cmFjdGlvbiBsYXllciBmcm9tIFNHSSBhbHNvIHVzZXMgbXVsdGktcGFnZQorYmlvcywgYnV0IHRoYXQgaXMgY3VycmVudGx5IG5vdCBpbmNsdWRlZCBpbiB0aGUgc3RvY2sgZGV2ZWxvcG1lbnQga2VybmVscy4KK1RoZSBzYW1lIGlzIHRydWUgb2YgQW5kcmV3IE1vcnRvbidzIHdvcmstaW4tcHJvZ3Jlc3MgbXVsdGlwYWdlIGJpbyB3cml0ZW91dCAKK2FuZCByZWFkYWhlYWQgcGF0Y2hlcy4KKworMi4zIENoYW5nZXMgaW4gdGhlIFJlcXVlc3QgU3RydWN0dXJlCisKK1RoZSByZXF1ZXN0IHN0cnVjdHVyZSBpcyB0aGUgc3RydWN0dXJlIHRoYXQgZ2V0cyBwYXNzZWQgZG93biB0byBsb3cgbGV2ZWwKK2RyaXZlcnMuIFRoZSBibG9jayBsYXllciBtYWtlX3JlcXVlc3QgZnVuY3Rpb24gYnVpbGRzIHVwIGEgcmVxdWVzdCBzdHJ1Y3R1cmUsCitwbGFjZXMgaXQgb24gdGhlIHF1ZXVlIGFuZCBpbnZva2VzIHRoZSBkcml2ZXJzIHJlcXVlc3RfZm4uIFRoZSBkcml2ZXIgbWFrZXMKK3VzZSBvZiBibG9jayBsYXllciBoZWxwZXIgcm91dGluZSBlbHZfbmV4dF9yZXF1ZXN0IHRvIHB1bGwgdGhlIG5leHQgcmVxdWVzdAorb2ZmIHRoZSBxdWV1ZS4gQ29udHJvbCBvciBkaWFnbm9zdGljIGZ1bmN0aW9ucyBtaWdodCBieXBhc3MgYmxvY2sgYW5kIGRpcmVjdGx5CitpbnZva2UgdW5kZXJseWluZyBkcml2ZXIgZW50cnkgcG9pbnRzIHBhc3NpbmcgaW4gYSBzcGVjaWFsbHkgY29uc3RydWN0ZWQKK3JlcXVlc3Qgc3RydWN0dXJlLgorCitPbmx5IHNvbWUgcmVsZXZhbnQgZmllbGRzIChtYWlubHkgdGhvc2Ugd2hpY2ggY2hhbmdlZCBvciBtYXkgYmUgcmVmZXJyZWQKK3RvIGluIHNvbWUgb2YgdGhlIGRpc2N1c3Npb24gaGVyZSkgYXJlIGxpc3RlZCBiZWxvdywgbm90IG5lY2Vzc2FyaWx5IGluCit0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBvY2N1ciBpbiB0aGUgc3RydWN0dXJlIChzZWUgaW5jbHVkZS9saW51eC9ibGtkZXYuaCkKK1JlZmVyIHRvIERvY3VtZW50YXRpb24vYmxvY2svcmVxdWVzdC50eHQgZm9yIGRldGFpbHMgYWJvdXQgYWxsIHRoZSByZXF1ZXN0CitzdHJ1Y3R1cmUgZmllbGRzIGFuZCBhIHF1aWNrIHJlZmVyZW5jZSBhYm91dCB0aGUgbGF5ZXJzIHdoaWNoIGFyZQorc3VwcG9zZWQgdG8gdXNlIG9yIG1vZGlmeSB0aG9zZSBmaWVsZHMuCisKK3N0cnVjdCByZXF1ZXN0IHsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHF1ZXVlbGlzdDsgIC8qIE5vdCBtZWFudCB0byBiZSBkaXJlY3RseSBhY2Nlc3NlZCBieQorCQkJCQl0aGUgZHJpdmVyLgorCQkJCQlVc2VkIGJ5IHEtPmVsdl9uZXh0X3JlcXVlc3RfZm4KKwkJCQkJcnEtPnF1ZXVlIGlzIGdvbmUKKwkJCQkJKi8KKwkuCisJLgorCXVuc2lnbmVkIGNoYXIgY21kWzE2XTsgLyogcHJlYnVpbHQgY29tbWFuZCBkYXRhIGJsb2NrICovCisJdW5zaWduZWQgbG9uZyBmbGFnczsgICAvKiBhbHNvIGluY2x1ZGVzIGVhcmxpZXIgcnEtPmNtZCBzZXR0aW5ncyAqLworCS4KKwkuCisJc2VjdG9yX3Qgc2VjdG9yOyAvKiB0aGlzIGZpZWxkIGlzIG5vdyBvZiB0eXBlIHNlY3Rvcl90IGluc3RlYWQgb2YgaW50CisJCQkgICAgcHJlcGFyYXRpb24gZm9yIDY0IGJpdCBzZWN0b3JzICovCisJLgorCS4KKworCS8qIE51bWJlciBvZiBzY2F0dGVyLWdhdGhlciBETUEgYWRkcitsZW4gcGFpcnMgYWZ0ZXIKKwkgKiBwaHlzaWNhbCBhZGRyZXNzIGNvYWxlc2NpbmcgaXMgcGVyZm9ybWVkLgorCSAqLworCXVuc2lnbmVkIHNob3J0IG5yX3BoeXNfc2VnbWVudHM7CisKKwkvKiBOdW1iZXIgb2Ygc2NhdHRlci1nYXRoZXIgYWRkcitsZW4gcGFpcnMgYWZ0ZXIKKwkgKiBwaHlzaWNhbCBhbmQgRE1BIHJlbWFwcGluZyBoYXJkd2FyZSBjb2FsZXNjaW5nIGlzIHBlcmZvcm1lZC4KKwkgKiBUaGlzIGlzIHRoZSBudW1iZXIgb2Ygc2NhdHRlci1nYXRoZXIgZW50cmllcyB0aGUgZHJpdmVyCisJICogd2lsbCBhY3R1YWxseSBoYXZlIHRvIGRlYWwgd2l0aCBhZnRlciBETUEgbWFwcGluZyBpcyBkb25lLgorCSAqLworCXVuc2lnbmVkIHNob3J0IG5yX2h3X3NlZ21lbnRzOworCisJLyogVmFyaW91cyBzZWN0b3IgY291bnRzICovCisJdW5zaWduZWQgbG9uZyBucl9zZWN0b3JzOyAgLyogbm8uIG9mIHNlY3RvcnMgbGVmdDogZHJpdmVyIG1vZGlmaWFibGUgKi8KKwl1bnNpZ25lZCBsb25nIGhhcmRfbnJfc2VjdG9yczsgIC8qIGJsb2NrIGludGVybmFsIGNvcHkgb2YgYWJvdmUgKi8KKwl1bnNpZ25lZCBpbnQgY3VycmVudF9ucl9zZWN0b3JzOyAvKiBuby4gb2Ygc2VjdG9ycyBsZWZ0IGluIHRoZQorCQkJCQkgICBjdXJyZW50IHNlZ21lbnQ6ZHJpdmVyIG1vZGlmaWFibGUgKi8KKwl1bnNpZ25lZCBsb25nIGhhcmRfY3VyX3NlY3RvcnM7IC8qIGJsb2NrIGludGVybmFsIGNvcHkgb2YgdGhlIGFib3ZlICovCisJLgorCS4KKwlpbnQgdGFnOwkvKiBjb21tYW5kIHRhZyBhc3NvY2lhdGVkIHdpdGggcmVxdWVzdCAqLworCXZvaWQgKnNwZWNpYWw7ICAvKiBzYW1lIGFzIGJlZm9yZSAqLworCWNoYXIgKmJ1ZmZlcjsgICAvKiB2YWxpZCBvbmx5IGZvciBsb3cgbWVtb3J5IGJ1ZmZlcnMgdXAgdG8KKwkJCSBjdXJyZW50X25yX3NlY3RvcnMgKi8KKwkuCisJLgorCXN0cnVjdCBiaW8gKmJpbywgKmJpb3RhaWw7ICAvKiBiaW8gbGlzdCBpbnN0ZWFkIG9mIGJoICovCisJc3RydWN0IHJlcXVlc3RfbGlzdCAqcmw7Cit9CisJCitTZWUgdGhlIHJxX2ZsYWdfYml0cyBkZWZpbml0aW9ucyBmb3IgYW4gZXhwbGFuYXRpb24gb2YgdGhlIHZhcmlvdXMgZmxhZ3MKK2F2YWlsYWJsZS4gU29tZSBiaXRzIGFyZSB1c2VkIGJ5IHRoZSBibG9jayBsYXllciBvciBpL28gc2NoZWR1bGVyLgorCQorVGhlIGJlaGF2aW91ciBvZiB0aGUgdmFyaW91cyBzZWN0b3IgY291bnRzIGFyZSBhbG1vc3QgdGhlIHNhbWUgYXMgYmVmb3JlLAorZXhjZXB0IHRoYXQgc2luY2Ugd2UgaGF2ZSBtdWx0aS1zZWdtZW50IGJpb3MsIGN1cnJlbnRfbnJfc2VjdG9ycyByZWZlcnMKK3RvIHRoZSBudW1iZXJzIG9mIHNlY3RvcnMgaW4gdGhlIGN1cnJlbnQgc2VnbWVudCBiZWluZyBwcm9jZXNzZWQgd2hpY2ggY291bGQKK2JlIG9uZSBvZiB0aGUgbWFueSBzZWdtZW50cyBpbiB0aGUgY3VycmVudCBiaW8gKGkuZSBpL28gY29tcGxldGlvbiB1bml0KS4KK1RoZSBucl9zZWN0b3JzIHZhbHVlIHJlZmVycyB0byB0aGUgdG90YWwgbnVtYmVyIG9mIHNlY3RvcnMgaW4gdGhlIHdob2xlCityZXF1ZXN0IHRoYXQgcmVtYWluIHRvIGJlIHRyYW5zZmVycmVkIChubyBjaGFuZ2UpLiBUaGUgcHVycG9zZSBvZiB0aGUKK2hhcmRfeHh4IHZhbHVlcyBpcyBmb3IgYmxvY2sgdG8gcmVtZW1iZXIgdGhlc2UgY291bnRzIGV2ZXJ5IHRpbWUgaXQgaGFuZHMKK292ZXIgdGhlIHJlcXVlc3QgdG8gdGhlIGRyaXZlci4gVGhlc2UgdmFsdWVzIGFyZSB1cGRhdGVkIGJ5IGJsb2NrIG9uCitlbmRfdGhhdF9yZXF1ZXN0X2ZpcnN0LCBpLmUuIGV2ZXJ5IHRpbWUgdGhlIGRyaXZlciBjb21wbGV0ZXMgYSBwYXJ0IG9mIHRoZQordHJhbnNmZXIgYW5kIGludm9rZXMgYmxvY2sgZW5kKnJlcXVlc3QgaGVscGVycyB0byBtYXJrIHRoaXMuIFRoZQorZHJpdmVyIHNob3VsZCBub3QgbW9kaWZ5IHRoZXNlIHZhbHVlcy4gVGhlIGJsb2NrIGxheWVyIHNldHMgdXAgdGhlCitucl9zZWN0b3JzIGFuZCBjdXJyZW50X25yX3NlY3RvcnMgZmllbGRzIChiYXNlZCBvbiB0aGUgY29ycmVzcG9uZGluZworaGFyZF94eHggdmFsdWVzIGFuZCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRyYW5zZmVycmVkKSBhbmQgdXBkYXRlcyBpdCBvbgorZXZlcnkgdHJhbnNmZXIgdGhhdCBpbnZva2VzIGVuZF90aGF0X3JlcXVlc3RfZmlyc3QuIEl0IGRvZXMgdGhlIHNhbWUgZm9yIHRoZQorYnVmZmVyLCBiaW8sIGJpby0+YmlfaXRlciBmaWVsZHMgdG9vLgorCitUaGUgYnVmZmVyIGZpZWxkIGlzIGp1c3QgYSB2aXJ0dWFsIGFkZHJlc3MgbWFwcGluZyBvZiB0aGUgY3VycmVudCBzZWdtZW50CitvZiB0aGUgaS9vIGJ1ZmZlciBpbiBjYXNlcyB3aGVyZSB0aGUgYnVmZmVyIHJlc2lkZXMgaW4gbG93LW1lbW9yeS4gRm9yIGhpZ2gKK21lbW9yeSBpL28sIHRoaXMgZmllbGQgaXMgbm90IHZhbGlkIGFuZCBtdXN0IG5vdCBiZSB1c2VkIGJ5IGRyaXZlcnMuCisKK0NvZGUgdGhhdCBzZXRzIHVwIGl0cyBvd24gcmVxdWVzdCBzdHJ1Y3R1cmVzIGFuZCBwYXNzZXMgdGhlbSBkb3duIHRvCithIGRyaXZlciBuZWVkcyB0byBiZSBjYXJlZnVsIGFib3V0IGludGVyb3BlcmF0aW9uIHdpdGggdGhlIGJsb2NrIGxheWVyIGhlbHBlcgorZnVuY3Rpb25zIHdoaWNoIHRoZSBkcml2ZXIgdXNlcy4gKFNlY3Rpb24gMS4zKQorCiszLiBVc2luZyBiaW9zCisKKzMuMSBTZXR1cC9UZWFyZG93bgorCitUaGVyZSBhcmUgcm91dGluZXMgZm9yIG1hbmFnaW5nIHRoZSBhbGxvY2F0aW9uLCBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLCBhbmQKK2ZyZWVpbmcgb2YgYmlvcyAoYmlvX2FsbG9jLCBiaW9fZ2V0LCBiaW9fcHV0KS4KKworVGhpcyBtYWtlcyB1c2Ugb2YgSW5nbyBNb2xuYXIncyBtZW1wb29sIGltcGxlbWVudGF0aW9uLCB3aGljaCBlbmFibGVzCitzdWJzeXN0ZW1zIGxpa2UgYmlvIHRvIG1haW50YWluIHRoZWlyIG93biByZXNlcnZlIG1lbW9yeSBwb29scyBmb3IgZ3VhcmFudGVlZAorZGVhZGxvY2stZnJlZSBhbGxvY2F0aW9ucyBkdXJpbmcgZXh0cmVtZSBWTSBsb2FkLiBGb3IgZXhhbXBsZSwgdGhlIFZNCitzdWJzeXN0ZW0gbWFrZXMgdXNlIG9mIHRoZSBibG9jayBsYXllciB0byB3cml0ZW91dCBkaXJ0eSBwYWdlcyBpbiBvcmRlciB0byBiZQorYWJsZSB0byBmcmVlIHVwIG1lbW9yeSBzcGFjZSwgYSBjYXNlIHdoaWNoIG5lZWRzIGNhcmVmdWwgaGFuZGxpbmcuIFRoZQorYWxsb2NhdGlvbiBsb2dpYyBkcmF3cyBmcm9tIHRoZSBwcmVhbGxvY2F0ZWQgZW1lcmdlbmN5IHJlc2VydmUgaW4gc2l0dWF0aW9ucword2hlcmUgaXQgY2Fubm90IGFsbG9jYXRlIHRocm91Z2ggbm9ybWFsIG1lYW5zLiBJZiB0aGUgcG9vbCBpcyBlbXB0eSBhbmQgaXQKK2NhbiB3YWl0LCB0aGVuIGl0IHdvdWxkIHRyaWdnZXIgYWN0aW9uIHRoYXQgd291bGQgaGVscCBmcmVlIHVwIG1lbW9yeSBvcgorcmVwbGVuaXNoIHRoZSBwb29sICh3aXRob3V0IGRlYWRsb2NraW5nKSBhbmQgd2FpdCBmb3IgYXZhaWxhYmlsaXR5IGluIHRoZSBwb29sLgorSWYgaXQgaXMgaW4gSVJRIGNvbnRleHQsIGFuZCBoZW5jZSBub3QgaW4gYSBwb3NpdGlvbiB0byBkbyB0aGlzLCBhbGxvY2F0aW9uCitjb3VsZCBmYWlsIGlmIHRoZSBwb29sIGlzIGVtcHR5LiBJbiBnZW5lcmFsIG1lbXBvb2wgYWx3YXlzIGZpcnN0IHRyaWVzIHRvCitwZXJmb3JtIGFsbG9jYXRpb24gd2l0aG91dCBoYXZpbmcgdG8gd2FpdCwgZXZlbiBpZiBpdCBtZWFucyBkaWdnaW5nIGludG8gdGhlCitwb29sIGFzIGxvbmcgaXQgaXMgbm90IGxlc3MgdGhhdCA1MCUgZnVsbC4KKworT24gYSBmcmVlLCBtZW1vcnkgaXMgcmVsZWFzZWQgdG8gdGhlIHBvb2wgb3IgZGlyZWN0bHkgZnJlZWQgZGVwZW5kaW5nIG9uCit0aGUgY3VycmVudCBhdmFpbGFiaWxpdHkgaW4gdGhlIHBvb2wuIFRoZSBtZW1wb29sIGludGVyZmFjZSBsZXRzIHRoZQorc3Vic3lzdGVtIHNwZWNpZnkgdGhlIHJvdXRpbmVzIHRvIGJlIHVzZWQgZm9yIG5vcm1hbCBhbGxvYyBhbmQgZnJlZS4gSW4gdGhlCitjYXNlIG9mIGJpbywgdGhlc2Ugcm91dGluZXMgbWFrZSB1c2Ugb2YgdGhlIHN0YW5kYXJkIHNsYWIgYWxsb2NhdG9yLgorCitUaGUgY2FsbGVyIG9mIGJpb19hbGxvYyBpcyBleHBlY3RlZCB0byB0YWtlbiBjZXJ0YWluIHN0ZXBzIHRvIGF2b2lkCitkZWFkbG9ja3MsIGUuZy4gYXZvaWQgdHJ5aW5nIHRvIGFsbG9jYXRlIG1vcmUgbWVtb3J5IGZyb20gdGhlIHBvb2wgd2hpbGUKK2FscmVhZHkgaG9sZGluZyBtZW1vcnkgb2J0YWluZWQgZnJvbSB0aGUgcG9vbC4KK1tUQkQ6IFRoaXMgaXMgYSBwb3RlbnRpYWwgaXNzdWUsIHRob3VnaCBhIHJhcmUgcG9zc2liaWxpdHkKKyBpbiB0aGUgYm91bmNlIGJpbyBhbGxvY2F0aW9uIHRoYXQgaGFwcGVucyBpbiB0aGUgY3VycmVudCBjb2RlLCBzaW5jZQorIGl0IGVuZHMgdXAgYWxsb2NhdGluZyBhIHNlY29uZCBiaW8gZnJvbSB0aGUgc2FtZSBwb29sIHdoaWxlCisgaG9sZGluZyB0aGUgb3JpZ2luYWwgYmlvIF0KKworTWVtb3J5IGFsbG9jYXRlZCBmcm9tIHRoZSBwb29sIHNob3VsZCBiZSByZWxlYXNlZCBiYWNrIHdpdGhpbiBhIGxpbWl0ZWQKK2Ftb3VudCBvZiB0aW1lIChpbiB0aGUgY2FzZSBvZiBiaW8sIHRoYXQgd291bGQgYmUgYWZ0ZXIgdGhlIGkvbyBpcyBjb21wbGV0ZWQpLgorVGhpcyBlbnN1cmVzIHRoYXQgaWYgcGFydCBvZiB0aGUgcG9vbCBoYXMgYmVlbiB1c2VkIHVwLCBzb21lIHdvcmsgKGluIHRoaXMKK2Nhc2UgaS9vKSBtdXN0IGFscmVhZHkgYmUgaW4gcHJvZ3Jlc3MgYW5kIG1lbW9yeSB3b3VsZCBiZSBhdmFpbGFibGUgd2hlbiBpdAoraXMgb3Zlci4gSWYgYWxsb2NhdGluZyBmcm9tIG11bHRpcGxlIHBvb2xzIGluIHRoZSBzYW1lIGNvZGUgcGF0aCwgdGhlIG9yZGVyCitvciBoaWVyYXJjaHkgb2YgYWxsb2NhdGlvbiBuZWVkcyB0byBiZSBjb25zaXN0ZW50LCBqdXN0IHRoZSB3YXkgb25lIGRlYWxzCit3aXRoIG11bHRpcGxlIGxvY2tzLgorCitUaGUgYmlvX2FsbG9jIHJvdXRpbmUgYWxzbyBuZWVkcyB0byBhbGxvY2F0ZSB0aGUgYmlvX3ZlY19saXN0IChidmVjX2FsbG9jKCkpCitmb3IgYSBub24tY2xvbmUgYmlvLiBUaGVyZSBhcmUgdGhlIDYgcG9vbHMgc2V0dXAgZm9yIGRpZmZlcmVudCBzaXplIGJpb3ZlY3MsCitzbyBiaW9fYWxsb2MoZ2ZwX21hc2ssIG5yX2lvdmVjcykgd2lsbCBhbGxvY2F0ZSBhIHZlY19saXN0IG9mIHRoZQorZ2l2ZW4gc2l6ZSBmcm9tIHRoZXNlIHNsYWJzLgorCitUaGUgYmlvX2dldCgpIHJvdXRpbmUgbWF5IGJlIHVzZWQgdG8gaG9sZCBhbiBleHRyYSByZWZlcmVuY2Ugb24gYSBiaW8gcHJpb3IKK3RvIGkvbyBzdWJtaXNzaW9uLCBpZiB0aGUgYmlvIGZpZWxkcyBhcmUgbGlrZWx5IHRvIGJlIGFjY2Vzc2VkIGFmdGVyIHRoZQoraS9vIGlzIGlzc3VlZCAoc2luY2UgdGhlIGJpbyBtYXkgb3RoZXJ3aXNlIGdldCBmcmVlZCBpbiBjYXNlIGkvbyBjb21wbGV0aW9uCitoYXBwZW5zIGluIHRoZSBtZWFudGltZSkuCisKK1RoZSBiaW9fY2xvbmUoKSByb3V0aW5lIG1heSBiZSB1c2VkIHRvIGR1cGxpY2F0ZSBhIGJpbywgd2hlcmUgdGhlIGNsb25lCitzaGFyZXMgdGhlIGJpb192ZWNfbGlzdCB3aXRoIHRoZSBvcmlnaW5hbCBiaW8gKGkuZS4gYm90aCBwb2ludCB0byB0aGUKK3NhbWUgYmlvX3ZlY19saXN0KS4gVGhpcyB3b3VsZCB0eXBpY2FsbHkgYmUgdXNlZCBmb3Igc3BsaXR0aW5nIGkvbyByZXF1ZXN0cworaW4gbHZtIG9yIG1kLgorCiszLjIgR2VuZXJpYyBiaW8gaGVscGVyIFJvdXRpbmVzCisKKzMuMi4xIFRyYXZlcnNpbmcgc2VnbWVudHMgYW5kIGNvbXBsZXRpb24gdW5pdHMgaW4gYSByZXF1ZXN0CisKK1RoZSBtYWNybyBycV9mb3JfZWFjaF9zZWdtZW50KCkgc2hvdWxkIGJlIHVzZWQgZm9yIHRyYXZlcnNpbmcgdGhlIGJpb3MKK2luIHRoZSByZXF1ZXN0IGxpc3QgKGRyaXZlcnMgc2hvdWxkIGF2b2lkIGRpcmVjdGx5IHRyeWluZyB0byBkbyBpdAordGhlbXNlbHZlcykuIFVzaW5nIHRoZXNlIGhlbHBlcnMgc2hvdWxkIGFsc28gbWFrZSBpdCBlYXNpZXIgdG8gY29wZQord2l0aCBibG9jayBjaGFuZ2VzIGluIHRoZSBmdXR1cmUuCisKKwlzdHJ1Y3QgcmVxX2l0ZXJhdG9yIGl0ZXI7CisJcnFfZm9yX2VhY2hfc2VnbWVudChiaW9fdmVjLCBycSwgaXRlcikKKwkJLyogYmlvX3ZlYyBpcyBub3cgY3VycmVudCBzZWdtZW50ICovCisKK0kvTyBjb21wbGV0aW9uIGNhbGxiYWNrcyBhcmUgcGVyLWJpbyByYXRoZXIgdGhhbiBwZXItc2VnbWVudCwgc28gZHJpdmVycwordGhhdCB0cmF2ZXJzZSBiaW8gY2hhaW5zIG9uIGNvbXBsZXRpb24gbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZC4gRHJpdmVycword2hpY2ggZG9uJ3QgbWFrZSBhIGRpc3RpbmN0aW9uIGJldHdlZW4gc2VnbWVudHMgYW5kIGNvbXBsZXRpb24gdW5pdHMgd291bGQKK25lZWQgdG8gYmUgcmVvcmdhbml6ZWQgdG8gc3VwcG9ydCBtdWx0aS1zZWdtZW50IGJpb3MuCisKKzMuMi4yIFNldHRpbmcgdXAgRE1BIHNjYXR0ZXJsaXN0cworCitUaGUgYmxrX3JxX21hcF9zZygpIGhlbHBlciByb3V0aW5lIHdvdWxkIGJlIHVzZWQgZm9yIHNldHRpbmcgdXAgc2NhdHRlcgorZ2F0aGVyIGxpc3RzIGZyb20gYSByZXF1ZXN0LCBzbyBhIGRyaXZlciBuZWVkIG5vdCBkbyBpdCBvbiBpdHMgb3duLgorCisJbnJfc2VnbWVudHMgPSBibGtfcnFfbWFwX3NnKHEsIHJxLCBzY2F0dGVybGlzdCk7CisKK1RoZSBoZWxwZXIgcm91dGluZSBwcm92aWRlcyBhIGxldmVsIG9mIGFic3RyYWN0aW9uIHdoaWNoIG1ha2VzIGl0IGVhc2llcgordG8gbW9kaWZ5IHRoZSBpbnRlcm5hbHMgb2YgcmVxdWVzdCB0byBzY2F0dGVybGlzdCBjb252ZXJzaW9uIGRvd24gdGhlIGxpbmUKK3dpdGhvdXQgYnJlYWtpbmcgZHJpdmVycy4gVGhlIGJsa19ycV9tYXBfc2cgcm91dGluZSB0YWtlcyBjYXJlIG9mIHNldmVyYWwKK3RoaW5ncyBsaWtlIGNvbGxhcHNpbmcgcGh5c2ljYWxseSBjb250aWd1b3VzIHNlZ21lbnRzIChpZiBRVUVVRV9GTEFHX0NMVVNURVIKK2lzIHNldCkgYW5kIGNvcnJlY3Qgc2VnbWVudCBhY2NvdW50aW5nIHRvIGF2b2lkIGV4Y2VlZGluZyB0aGUgbGltaXRzIHdoaWNoCit0aGUgaS9vIGhhcmR3YXJlIGNhbiBoYW5kbGUsIGJhc2VkIG9uIHZhcmlvdXMgcXVldWUgcHJvcGVydGllcy4KKworLSBQcmV2ZW50cyBhIGNsdXN0ZXJlZCBzZWdtZW50IGZyb20gY3Jvc3NpbmcgYSA0R0IgbWVtIGJvdW5kYXJ5CistIEF2b2lkcyBidWlsZGluZyBzZWdtZW50cyB0aGF0IHdvdWxkIGV4Y2VlZCB0aGUgbnVtYmVyIG9mIHBoeXNpY2FsCisgIG1lbW9yeSBzZWdtZW50cyB0aGF0IHRoZSBkcml2ZXIgY2FuIGhhbmRsZSAocGh5c19zZWdtZW50cykgYW5kIHRoZQorICBudW1iZXIgdGhhdCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBjYW4gaGFuZGxlIGF0IG9uY2UsIGFjY291bnRpbmcgZm9yCisgIERNQSByZW1hcHBpbmcgKGh3X3NlZ21lbnRzKSAgKGkuZS4gSU9NTVUgYXdhcmUgbGltaXRzKS4KKworUm91dGluZXMgd2hpY2ggdGhlIGxvdyBsZXZlbCBkcml2ZXIgY2FuIHVzZSB0byBzZXQgdXAgdGhlIHNlZ21lbnQgbGltaXRzOgorCitibGtfcXVldWVfbWF4X2h3X3NlZ21lbnRzKCkgOiBTZXRzIGFuIHVwcGVyIGxpbWl0IG9mIHRoZSBtYXhpbXVtIG51bWJlciBvZgoraHcgZGF0YSBzZWdtZW50cyBpbiBhIHJlcXVlc3QgKGkuZS4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGFkZHJlc3MvbGVuZ3RoCitwYWlycyB0aGUgaG9zdCBhZGFwdGVyIGNhbiBhY3R1YWxseSBoYW5kIHRvIHRoZSBkZXZpY2UgYXQgb25jZSkKKworYmxrX3F1ZXVlX21heF9waHlzX3NlZ21lbnRzKCkgOiBTZXRzIGFuIHVwcGVyIGxpbWl0IG9uIHRoZSBtYXhpbXVtIG51bWJlcgorb2YgcGh5c2ljYWwgZGF0YSBzZWdtZW50cyBpbiBhIHJlcXVlc3QgKGkuZS4gdGhlIGxhcmdlc3Qgc2l6ZWQgc2NhdHRlciBsaXN0CithIGRyaXZlciBjb3VsZCBoYW5kbGUpCisKKzMuMi4zIEkvTyBjb21wbGV0aW9uCisKK1RoZSBleGlzdGluZyBnZW5lcmljIGJsb2NrIGxheWVyIGhlbHBlciByb3V0aW5lcyBlbmRfcmVxdWVzdCwKK2VuZF90aGF0X3JlcXVlc3RfZmlyc3QgYW5kIGVuZF90aGF0X3JlcXVlc3RfbGFzdCBjYW4gYmUgdXNlZCBmb3IgaS9vCitjb21wbGV0aW9uIChhbmQgc2V0dGluZyB0aGluZ3MgdXAgc28gdGhlIHJlc3Qgb2YgdGhlIGkvbyBvciB0aGUgbmV4dAorcmVxdWVzdCBjYW4gYmUga2lja2VkIG9mKSBhcyBiZWZvcmUuIFdpdGggdGhlIGludHJvZHVjdGlvbiBvZiBtdWx0aS1wYWdlCitiaW8gc3VwcG9ydCwgZW5kX3RoYXRfcmVxdWVzdF9maXJzdCByZXF1aXJlcyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IGluZGljYXRpbmcKK3RoZSBudW1iZXIgb2Ygc2VjdG9ycyBjb21wbGV0ZWQuCisKKzMuMi40IEltcGxpY2F0aW9ucyBmb3IgZHJpdmVycyB0aGF0IGRvIG5vdCBpbnRlcnByZXQgYmlvcyAoZG9uJ3QgaGFuZGxlCisgbXVsdGlwbGUgc2VnbWVudHMpCisKK0RyaXZlcnMgdGhhdCBkbyBub3QgaW50ZXJwcmV0IGJpb3MgZS5nIHRob3NlIHdoaWNoIGRvIG5vdCBoYW5kbGUgbXVsdGlwbGUKK3NlZ21lbnRzIGFuZCBkbyBub3Qgc3VwcG9ydCBpL28gaW50byBoaWdoIG1lbW9yeSBhZGRyZXNzZXMgKHJlcXVpcmUgYm91bmNlCitidWZmZXJzKSBhbmQgZXhwZWN0IG9ubHkgdmlydHVhbGx5IG1hcHBlZCBidWZmZXJzLCBjYW4gYWNjZXNzIHRoZSBycS0+YnVmZmVyCitmaWVsZC4gQXMgYmVmb3JlIHRoZSBkcml2ZXIgc2hvdWxkIHVzZSBjdXJyZW50X25yX3NlY3RvcnMgdG8gZGV0ZXJtaW5lIHRoZQorc2l6ZSBvZiByZW1haW5pbmcgZGF0YSBpbiB0aGUgY3VycmVudCBzZWdtZW50ICh0aGF0IGlzIHRoZSBtYXhpbXVtIGl0IGNhbgordHJhbnNmZXIgaW4gb25lIGdvIHVubGVzcyBpdCBpbnRlcnByZXRzIHNlZ21lbnRzKSwgYW5kIHJlbHkgb24gdGhlIGJsb2NrIGxheWVyCitlbmRfcmVxdWVzdCwgb3IgZW5kX3RoYXRfcmVxdWVzdF9maXJzdC9sYXN0IHRvIHRha2UgY2FyZSBvZiBhbGwgYWNjb3VudGluZworYW5kIHRyYW5zcGFyZW50IG1hcHBpbmcgb2YgdGhlIG5leHQgYmlvIHNlZ21lbnQgd2hlbiBhIHNlZ21lbnQgYm91bmRhcnkKK2lzIGNyb3NzZWQgb24gY29tcGxldGlvbiBvZiBhIHRyYW5zZmVyLiAoVGhlIGVuZCpyZXF1ZXN0KiBmdW5jdGlvbnMgc2hvdWxkCitiZSB1c2VkIGlmIG9ubHkgaWYgdGhlIHJlcXVlc3QgaGFzIGNvbWUgZG93biBmcm9tIGJsb2NrL2JpbyBwYXRoLCBub3QgZm9yCitkaXJlY3QgYWNjZXNzIHJlcXVlc3RzIHdoaWNoIG9ubHkgc3BlY2lmeSBycS0+YnVmZmVyIHdpdGhvdXQgYSB2YWxpZCBycS0+YmlvKQorCiszLjIuNSBHZW5lcmljIHJlcXVlc3QgY29tbWFuZCB0YWdnaW5nCisKKzMuMi41LjEgVGFnIGhlbHBlcnMKKworQmxvY2sgbm93IG9mZmVycyBzb21lIHNpbXBsZSBnZW5lcmljIGZ1bmN0aW9uYWxpdHkgdG8gaGVscCBzdXBwb3J0IGNvbW1hbmQKK3F1ZXVlaW5nICh0eXBpY2FsbHkga25vd24gYXMgdGFnZ2VkIGNvbW1hbmQgcXVldWVpbmcpLCBpZSBtYW5hZ2UgbW9yZSB0aGFuCitvbmUgb3V0c3RhbmRpbmcgY29tbWFuZCBvbiBhIHF1ZXVlIGF0IGFueSBnaXZlbiB0aW1lLgorCisJYmxrX3F1ZXVlX2luaXRfdGFncyhzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgaW50IGRlcHRoKQorCisJSW5pdGlhbGl6ZSBpbnRlcm5hbCBjb21tYW5kIHRhZ2dpbmcgc3RydWN0dXJlcyBmb3IgYSBtYXhpbXVtCisJZGVwdGggb2YgJ2RlcHRoJy4KKworCWJsa19xdWV1ZV9mcmVlX3RhZ3MoKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKQorCisJVGVhcmRvd24gdGFnIGluZm8gYXNzb2NpYXRlZCB3aXRoIHRoZSBxdWV1ZS4gVGhpcyB3aWxsIGJlIGRvbmUKKwlhdXRvbWF0aWNhbGx5IGJ5IGJsb2NrIGlmIGJsa19xdWV1ZV9jbGVhbnVwKCkgaXMgY2FsbGVkIG9uIGEgcXVldWUKKwl0aGF0IGlzIHVzaW5nIHRhZ2dpbmcuCisKK1RoZSBhYm92ZSBhcmUgaW5pdGlhbGl6YXRpb24gYW5kIGV4aXQgbWFuYWdlbWVudCwgdGhlIG1haW4gaGVscGVycyBkdXJpbmcKK25vcm1hbCBvcGVyYXRpb25zIGFyZToKKworCWJsa19xdWV1ZV9zdGFydF90YWcoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsIHN0cnVjdCByZXF1ZXN0ICpycSkKKworCVN0YXJ0IHRhZ2dlZCBvcGVyYXRpb24gZm9yIHRoaXMgcmVxdWVzdC4gQSBmcmVlIHRhZyBudW1iZXIgYmV0d2VlbgorCTAgYW5kICdkZXB0aCcgaXMgYXNzaWduZWQgdG8gdGhlIHJlcXVlc3QgKHJxLT50YWcgaG9sZHMgdGhpcyBudW1iZXIpLAorCWFuZCAncnEnIGlzIGFkZGVkIHRvIHRoZSBpbnRlcm5hbCB0YWcgbWFuYWdlbWVudC4gSWYgdGhlIG1heGltdW0gZGVwdGgKKwlmb3IgdGhpcyBxdWV1ZSBpcyBhbHJlYWR5IGFjaGlldmVkIChvciBpZiB0aGUgdGFnIHdhc24ndCBzdGFydGVkIGZvcgorCXNvbWUgb3RoZXIgcmVhc29uKSwgMSBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlIDAgaXMgcmV0dXJuZWQuCisKKwlibGtfcXVldWVfZW5kX3RhZyhzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSwgc3RydWN0IHJlcXVlc3QgKnJxKQorCisJRW5kIHRhZ2dlZCBvcGVyYXRpb24gb24gdGhpcyByZXF1ZXN0LiAncnEnIGlzIHJlbW92ZWQgZnJvbSB0aGUgaW50ZXJuYWwKKwlib29rIGtlZXBpbmcgc3RydWN0dXJlcy4KKworVG8gbWluaW1pemUgc3RydWN0IHJlcXVlc3QgYW5kIHF1ZXVlIG92ZXJoZWFkLCB0aGUgdGFnIGhlbHBlcnMgdXRpbGl6ZSBzb21lCitvZiB0aGUgc2FtZSByZXF1ZXN0IG1lbWJlcnMgdGhhdCBhcmUgdXNlZCBmb3Igbm9ybWFsIHJlcXVlc3QgcXVldWUgbWFuYWdlbWVudC4KK1RoaXMgbWVhbnMgdGhhdCBhIHJlcXVlc3QgY2Fubm90IGJvdGggYmUgYW4gYWN0aXZlIHRhZyBhbmQgYmUgb24gdGhlIHF1ZXVlCitsaXN0IGF0IHRoZSBzYW1lIHRpbWUuIGJsa19xdWV1ZV9zdGFydF90YWcoKSB3aWxsIHJlbW92ZSB0aGUgcmVxdWVzdCwgYnV0Cit0aGUgZHJpdmVyIG11c3QgcmVtZW1iZXIgdG8gY2FsbCBibGtfcXVldWVfZW5kX3RhZygpIGJlZm9yZSBzaWduYWxsaW5nCitjb21wbGV0aW9uIG9mIHRoZSByZXF1ZXN0IHRvIHRoZSBibG9jayBsYXllci4gVGhpcyBtZWFucyBlbmRpbmcgdGFnCitvcGVyYXRpb25zIGJlZm9yZSBjYWxsaW5nIGVuZF90aGF0X3JlcXVlc3RfbGFzdCgpISBGb3IgYW4gZXhhbXBsZSBvZiBhIHVzZXIKK29mIHRoZXNlIGhlbHBlcnMsIHNlZSB0aGUgSURFIHRhZ2dlZCBjb21tYW5kIHF1ZXVlaW5nIHN1cHBvcnQuCisKK0NlcnRhaW4gaGFyZHdhcmUgY29uZGl0aW9ucyBtYXkgZGljdGF0ZSBhIG5lZWQgdG8gaW52YWxpZGF0ZSB0aGUgYmxvY2sgdGFnCitxdWV1ZS4gRm9yIGluc3RhbmNlLCBvbiBJREUgYW55IHRhZ2dlZCByZXF1ZXN0IGVycm9yIG5lZWRzIHRvIGNsZWFyIGJvdGgKK3RoZSBoYXJkd2FyZSBhbmQgc29mdHdhcmUgYmxvY2sgcXVldWUgYW5kIGVuYWJsZSB0aGUgZHJpdmVyIHRvIHNhbmVseSByZXN0YXJ0CithbGwgdGhlIG91dHN0YW5kaW5nIHJlcXVlc3RzLiBUaGVyZSdzIGEgdGhpcmQgaGVscGVyIHRvIGRvIHRoYXQ6CisKKwlibGtfcXVldWVfaW52YWxpZGF0ZV90YWdzKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxKQorCisJQ2xlYXIgdGhlIGludGVybmFsIGJsb2NrIHRhZyBxdWV1ZSBhbmQgcmUtYWRkIGFsbCB0aGUgcGVuZGluZyByZXF1ZXN0cworCXRvIHRoZSByZXF1ZXN0IHF1ZXVlLiBUaGUgZHJpdmVyIHdpbGwgcmVjZWl2ZSB0aGVtIGFnYWluIG9uIHRoZQorCW5leHQgcmVxdWVzdF9mbiBydW4sIGp1c3QgbGlrZSBpdCBkaWQgdGhlIGZpcnN0IHRpbWUgaXQgZW5jb3VudGVyZWQKKwl0aGVtLgorCiszLjIuNS4yIFRhZyBpbmZvCisKK1NvbWUgYmxvY2sgZnVuY3Rpb25zIGV4aXN0IHRvIHF1ZXJ5IGN1cnJlbnQgdGFnIHN0YXR1cyBvciB0byBnbyBmcm9tIGEKK3RhZyBudW1iZXIgdG8gdGhlIGFzc29jaWF0ZWQgcmVxdWVzdC4gVGhlc2UgYXJlLCBpbiBubyBwYXJ0aWN1bGFyIG9yZGVyOgorCisJYmxrX3F1ZXVlX3RhZ2dlZChxKQorCisJUmV0dXJucyAxIGlmIHRoZSBxdWV1ZSAncScgaXMgdXNpbmcgdGFnZ2luZywgMCBpZiBub3QuCisKKwlibGtfcXVldWVfdGFnX3JlcXVlc3QocSwgdGFnKQorCisJUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHJlcXVlc3QgYXNzb2NpYXRlZCB3aXRoIHRhZyAndGFnJy4KKworCWJsa19xdWV1ZV90YWdfZGVwdGgocSkKKwkKKwlSZXR1cm4gY3VycmVudCBxdWV1ZSBkZXB0aC4KKworCWJsa19xdWV1ZV90YWdfcXVldWUocSkKKworCVJldHVybnMgMSBpZiB0aGUgcXVldWUgY2FuIGFjY2VwdCBhIG5ldyBxdWV1ZWQgY29tbWFuZCwgMCBpZiB3ZSBhcmUKKwlhdCB0aGUgbWF4aW11bSBkZXB0aCBhbHJlYWR5LgorCisJYmxrX3F1ZXVlX3JxX3RhZ2dlZChycSkKKworCVJldHVybnMgMSBpZiB0aGUgcmVxdWVzdCAncnEnIGlzIHRhZ2dlZC4KKworMy4yLjUuMiBJbnRlcm5hbCBzdHJ1Y3R1cmUKKworSW50ZXJuYWxseSwgYmxvY2sgbWFuYWdlcyB0YWdzIGluIHRoZSBibGtfcXVldWVfdGFnIHN0cnVjdHVyZToKKworCXN0cnVjdCBibGtfcXVldWVfdGFnIHsKKwkJc3RydWN0IHJlcXVlc3QgKip0YWdfaW5kZXg7CS8qIGFycmF5IG9yIHBvaW50ZXJzIHRvIHJxICovCisJCXVuc2lnbmVkIGxvbmcgKnRhZ19tYXA7CQkvKiBiaXRtYXAgb2YgZnJlZSB0YWdzICovCisJCXN0cnVjdCBsaXN0X2hlYWQgYnVzeV9saXN0OwkvKiBmaWZvIGxpc3Qgb2YgYnVzeSB0YWdzICovCisJCWludCBidXN5OwkJCS8qIHF1ZXVlIGRlcHRoICovCisJCWludCBtYXhfZGVwdGg7CQkJLyogbWF4IHF1ZXVlIGRlcHRoICovCisJfTsKKworTW9zdCBvZiB0aGUgYWJvdmUgaXMgc2ltcGxlIGFuZCBzdHJhaWdodCBmb3J3YXJkLCBob3dldmVyIGJ1c3lfbGlzdCBtYXkgbmVlZAorYSBiaXQgb2YgZXhwbGFpbmluZy4gTm9ybWFsbHkgd2UgZG9uJ3QgY2FyZSB0b28gbXVjaCBhYm91dCByZXF1ZXN0IG9yZGVyaW5nLAorYnV0IGluIHRoZSBldmVudCBvZiBhbnkgYmFycmllciByZXF1ZXN0cyBpbiB0aGUgdGFnIHF1ZXVlIHdlIG5lZWQgdG8gZW5zdXJlCit0aGF0IHJlcXVlc3RzIGFyZSByZXN0YXJ0ZWQgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSBxdWV1ZS4gVGhpcyBtYXkgaGFwcGVuCitpZiB0aGUgZHJpdmVyIG5lZWRzIHRvIHVzZSBibGtfcXVldWVfaW52YWxpZGF0ZV90YWdzKCkuCisKKzMuMyBJL08gU3VibWlzc2lvbgorCitUaGUgcm91dGluZSBzdWJtaXRfYmlvKCkgaXMgdXNlZCB0byBzdWJtaXQgYSBzaW5nbGUgaW8uIEhpZ2hlciBsZXZlbCBpL28KK3JvdXRpbmVzIG1ha2UgdXNlIG9mIHRoaXM6CisKKyhhKSBCdWZmZXJlZCBpL286CitUaGUgcm91dGluZSBzdWJtaXRfYmgoKSBpbnZva2VzIHN1Ym1pdF9iaW8oKSBvbiBhIGJpbyBjb3JyZXNwb25kaW5nIHRvIHRoZQorYmgsIGFsbG9jYXRpbmcgdGhlIGJpbyBpZiByZXF1aXJlZC4gbGxfcndfYmxvY2soKSB1c2VzIHN1Ym1pdF9iaCgpIGFzIGJlZm9yZS4KKworKGIpIEtpb2J1ZiBpL28gKGZvciByYXcvZGlyZWN0IGkvbyk6CitUaGUgbGxfcndfa2lvKCkgcm91dGluZSBicmVha3MgdXAgdGhlIGtpb2J1ZiBpbnRvIHBhZ2Ugc2l6ZWQgY2h1bmtzIGFuZAorbWFwcyB0aGUgYXJyYXkgdG8gb25lIG9yIG1vcmUgbXVsdGktcGFnZSBiaW9zLCBpc3N1aW5nIHN1Ym1pdF9iaW8oKSB0bworcGVyZm9ybSB0aGUgaS9vIG9uIGVhY2ggb2YgdGhlc2UuCisKK1RoZSBlbWJlZGRlZCBiaCBhcnJheSBpbiB0aGUga2lvYnVmIHN0cnVjdHVyZSBoYXMgYmVlbiByZW1vdmVkIGFuZCBubworcHJlYWxsb2NhdGlvbiBvZiBiaW9zIGlzIGRvbmUgZm9yIGtpb2J1ZnMuIFtUaGUgaW50ZW50IGlzIHRvIHJlbW92ZSB0aGUKK2Jsb2NrcyBhcnJheSBhcyB3ZWxsLCBidXQgaXQncyBjdXJyZW50bHkgaW4gdGhlcmUgdG8ga2x1ZGdlIGFyb3VuZCBkaXJlY3QgaS9vLl0KK1RodXMga2lvYnVmIGFsbG9jYXRpb24gaGFzIHN3aXRjaGVkIGJhY2sgdG8gdXNpbmcga21hbGxvYyByYXRoZXIgdGhhbiB2bWFsbG9jLgorCitUb2RvL09ic2VydmF0aW9uOgorCisgQSBzaW5nbGUga2lvYnVmIHN0cnVjdHVyZSBpcyBhc3N1bWVkIHRvIGNvcnJlc3BvbmQgdG8gYSBjb250aWd1b3VzIHJhbmdlCisgb2YgZGF0YSwgc28gYnJ3X2tpb3ZlYygpIGludm9rZXMgbGxfcndfa2lvIGZvciBlYWNoIGtpb2J1ZiBpbiBhIGtpb3ZlYy4KKyBTbyByaWdodCBub3cgaXQgd291bGRuJ3Qgd29yayBmb3IgZGlyZWN0IGkvbyBvbiBub24tY29udGlndW91cyBibG9ja3MuCisgVGhpcyBpcyB0byBiZSByZXNvbHZlZC4gIFRoZSBldmVudHVhbCBkaXJlY3Rpb24gaXMgdG8gcmVwbGFjZSBraW9idWYKKyBieSBrdmVjJ3MuCisKKyBCYWRhcmkgUHVsYXZhcnR5IGhhcyBhIHBhdGNoIHRvIGltcGxlbWVudCBkaXJlY3QgaS9vIGNvcnJlY3RseSB1c2luZworIGJpbyBhbmQga3ZlYy4KKworCisoYykgUGFnZSBpL286CitUb2RvL1VuZGVyIGRpc2N1c3Npb246CisKKyBBbmRyZXcgTW9ydG9uJ3MgbXVsdGktcGFnZSBiaW8gcGF0Y2hlcyBhdHRlbXB0IHRvIGlzc3VlIG11bHRpLXBhZ2UKKyB3cml0ZW91dHMgKGFuZCByZWFkcykgZnJvbSB0aGUgcGFnZSBjYWNoZSwgYnkgZGlyZWN0bHkgYnVpbGRpbmcgdXAKKyBsYXJnZSBiaW9zIGZvciBzdWJtaXNzaW9uIGNvbXBsZXRlbHkgYnlwYXNzaW5nIHRoZSB1c2FnZSBvZiBidWZmZXIKKyBoZWFkcy4gVGhpcyB3b3JrIGlzIHN0aWxsIGluIHByb2dyZXNzLgorCisgQ2hyaXN0b3BoIEhlbGx3aWcgaGFkIHNvbWUgY29kZSB0aGF0IHVzZXMgYmlvcyBmb3IgcGFnZS1pbyAocmF0aGVyIHRoYW4KKyBiaCkuIFRoaXMgaXNuJ3QgaW5jbHVkZWQgaW4gYmlvIGFzIHlldC4gQ2hyaXN0b3BoIHdhcyBhbHNvIHdvcmtpbmcgb24gYQorIGRlc2lnbiBmb3IgcmVwcmVzZW50aW5nIHZpcnR1YWwvcmVhbCBleHRlbnRzIGFzIGFuIGVudGl0eSBhbmQgbW9kaWZ5aW5nCisgc29tZSBvZiB0aGUgYWRkcmVzcyBzcGFjZSBvcHMgaW50ZXJmYWNlcyB0byB1dGlsaXplIHRoaXMgYWJzdHJhY3Rpb24gcmF0aGVyCisgdGhhbiBidWZmZXJfaGVhZHMuIChUaGlzIGlzIHNvbWV3aGF0IGFsb25nIHRoZSBsaW5lcyBvZiB0aGUgU0dJIFhGUyBwYWdlYnVmCisgYWJzdHJhY3Rpb24sIGJ1dCBpbnRlbmRlZCB0byBiZSBhcyBsaWdodHdlaWdodCBhcyBwb3NzaWJsZSkuCisKKyhkKSBEaXJlY3QgYWNjZXNzIGkvbzoKK0RpcmVjdCBhY2Nlc3MgcmVxdWVzdHMgdGhhdCBkbyBub3QgY29udGFpbiBiaW9zIHdvdWxkIGJlIHN1Ym1pdHRlZCBkaWZmZXJlbnRseQorYXMgZGlzY3Vzc2VkIGVhcmxpZXIgaW4gc2VjdGlvbiAxLjMuCisKK0FzaWRlOgorCisgIEt2ZWMgaS9vOgorCisgIEJlbiBMYUhhaXNlJ3MgYWlvIGNvZGUgdXNlcyBhIHNsaWdodGx5IGRpZmZlcmVudCBzdHJ1Y3R1cmUgaW5zdGVhZAorICBvZiBraW9idWZzLCBjYWxsZWQgYSBrdmVjX2NiLiBUaGlzIGNvbnRhaW5zIGFuIGFycmF5IG9mIDxwYWdlLCBvZmZzZXQsIGxlbj4KKyAgdHVwbGVzICh2ZXJ5IG11Y2ggbGlrZSB0aGUgbmV0d29ya2luZyBjb2RlKSwgdG9nZXRoZXIgd2l0aCBhIGNhbGxiYWNrIGZ1bmN0aW9uCisgIGFuZCBkYXRhIHBvaW50ZXIuIFRoaXMgaXMgZW1iZWRkZWQgaW50byBhIGJyd19jYiBzdHJ1Y3R1cmUgd2hlbiBwYXNzZWQKKyAgdG8gYnJ3X2t2ZWNfYXN5bmMoKS4KKworICBOb3cgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGRpcmVjdGx5IG1hcCB0aGVzZSBrdmVjcyB0byBhIGJpby4gSnVzdCBhcyB3aGlsZQorICBjbG9uaW5nLCBpbiB0aGlzIGNhc2UgcmF0aGVyIHRoYW4gUFJFX0JVSUxUIGJpb192ZWNzLCB3ZSBzZXQgdGhlIGJpX2lvX3ZlYworICBhcnJheSBwb2ludGVyIHRvIHBvaW50IHRvIHRoZSB2ZWNsZXQgYXJyYXkgaW4ga3ZlY3MuCisKKyAgVEJEOiBJbiBvcmRlciBmb3IgdGhpcyB0byB3b3JrLCBzb21lIGNoYW5nZXMgYXJlIG5lZWRlZCBpbiB0aGUgd2F5IG11bHRpLXBhZ2UKKyAgYmlvcyBhcmUgaGFuZGxlZCB0b2RheS4gVGhlIHZhbHVlcyBvZiB0aGUgdHVwbGVzIGluIHN1Y2ggYSB2ZWN0b3IgcGFzc2VkIGluCisgIGZyb20gaGlnaGVyIGxldmVsIGNvZGUgc2hvdWxkIG5vdCBiZSBtb2RpZmllZCBieSB0aGUgYmxvY2sgbGF5ZXIgaW4gdGhlIGNvdXJzZQorICBvZiBpdHMgcmVxdWVzdCBwcm9jZXNzaW5nLCBzaW5jZSB0aGF0IHdvdWxkIG1ha2UgaXQgaGFyZCBmb3IgdGhlIGhpZ2hlciBsYXllcgorICB0byBjb250aW51ZSB0byB1c2UgdGhlIHZlY3RvciBkZXNjcmlwdG9yIChrdmVjKSBhZnRlciBpL28gY29tcGxldGVzLiBJbnN0ZWFkLAorICBhbGwgc3VjaCB0cmFuc2llbnQgc3RhdGUgc2hvdWxkIGVpdGhlciBiZSBtYWludGFpbmVkIGluIHRoZSByZXF1ZXN0IHN0cnVjdHVyZSwKKyAgYW5kIHBhc3NlZCBvbiBpbiBzb21lIHdheSB0byB0aGUgZW5kaW8gY29tcGxldGlvbiByb3V0aW5lLgorCisKKzQuIFRoZSBJL08gc2NoZWR1bGVyCitJL08gc2NoZWR1bGVyLCBhLmsuYS4gZWxldmF0b3IsIGlzIGltcGxlbWVudGVkIGluIHR3byBsYXllcnMuICBHZW5lcmljIGRpc3BhdGNoCitxdWV1ZSBhbmQgc3BlY2lmaWMgSS9PIHNjaGVkdWxlcnMuICBVbmxlc3Mgc3RhdGVkIG90aGVyd2lzZSwgZWxldmF0b3IgaXMgdXNlZAordG8gcmVmZXIgdG8gYm90aCBwYXJ0cyBhbmQgSS9PIHNjaGVkdWxlciB0byBzcGVjaWZpYyBJL08gc2NoZWR1bGVycy4KKworQmxvY2sgbGF5ZXIgaW1wbGVtZW50cyBnZW5lcmljIGRpc3BhdGNoIHF1ZXVlIGluIGJsb2NrLyouYy4KK1RoZSBnZW5lcmljIGRpc3BhdGNoIHF1ZXVlIGlzIHJlc3BvbnNpYmxlIGZvciByZXF1ZXVlaW5nLCBoYW5kbGluZyBub24tZnMKK3JlcXVlc3RzIGFuZCBhbGwgb3RoZXIgc3VidGxldGllcy4KKworU3BlY2lmaWMgSS9PIHNjaGVkdWxlcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBvcmRlcmluZyBub3JtYWwgZmlsZXN5c3RlbQorcmVxdWVzdHMuICBUaGV5IGNhbiBhbHNvIGNob29zZSB0byBkZWxheSBjZXJ0YWluIHJlcXVlc3RzIHRvIGltcHJvdmUKK3Rocm91Z2hwdXQgb3Igd2hhdGV2ZXIgcHVycG9zZS4gIEFzIHRoZSBwbHVyYWwgZm9ybSBpbmRpY2F0ZXMsIHRoZXJlIGFyZQorbXVsdGlwbGUgSS9PIHNjaGVkdWxlcnMuICBUaGV5IGNhbiBiZSBidWlsdCBhcyBtb2R1bGVzIGJ1dCBhdCBsZWFzdCBvbmUgc2hvdWxkCitiZSBidWlsdCBpbnNpZGUgdGhlIGtlcm5lbC4gIEVhY2ggcXVldWUgY2FuIGNob29zZSBkaWZmZXJlbnQgb25lIGFuZCBjYW4gYWxzbworY2hhbmdlIHRvIGFub3RoZXIgb25lIGR5bmFtaWNhbGx5LgorCitBIGJsb2NrIGxheWVyIGNhbGwgdG8gdGhlIGkvbyBzY2hlZHVsZXIgZm9sbG93cyB0aGUgY29udmVudGlvbiBlbHZfeHh4KCkuIFRoaXMKK2NhbGxzIGVsZXZhdG9yX3h4eF9mbiBpbiB0aGUgZWxldmF0b3Igc3dpdGNoIChibG9jay9lbGV2YXRvci5jKS4gT2gsIHh4eAorYW5kIHh4eCBtaWdodCBub3QgbWF0Y2ggZXhhY3RseSwgYnV0IHVzZSB5b3VyIGltYWdpbmF0aW9uLiBJZiBhbiBlbGV2YXRvcgorZG9lc24ndCBpbXBsZW1lbnQgYSBmdW5jdGlvbiwgdGhlIHN3aXRjaCBkb2VzIG5vdGhpbmcgb3Igc29tZSBtaW5pbWFsIGhvdXNlCitrZWVwaW5nIHdvcmsuCisKKzQuMS4gSS9PIHNjaGVkdWxlciBBUEkKKworVGhlIGZ1bmN0aW9ucyBhbiBlbGV2YXRvciBtYXkgaW1wbGVtZW50IGFyZTogKCogYXJlIG1hbmRhdG9yeSkKK2VsZXZhdG9yX21lcmdlX2ZuCQljYWxsZWQgdG8gcXVlcnkgcmVxdWVzdHMgZm9yIG1lcmdlIHdpdGggYSBiaW8KKworZWxldmF0b3JfbWVyZ2VfcmVxX2ZuCQljYWxsZWQgd2hlbiB0d28gcmVxdWVzdHMgZ2V0IG1lcmdlZC4gdGhlIG9uZQorCQkJCXdoaWNoIGdldHMgbWVyZ2VkIGludG8gdGhlIG90aGVyIG9uZSB3aWxsIGJlCisJCQkJbmV2ZXIgc2VlbiBieSBJL08gc2NoZWR1bGVyIGFnYWluLiBJT1csIGFmdGVyCisJCQkJYmVpbmcgbWVyZ2VkLCB0aGUgcmVxdWVzdCBpcyBnb25lLgorCitlbGV2YXRvcl9tZXJnZWRfZm4JCWNhbGxlZCB3aGVuIGEgcmVxdWVzdCBpbiB0aGUgc2NoZWR1bGVyIGhhcyBiZWVuCisJCQkJaW52b2x2ZWQgaW4gYSBtZXJnZS4gSXQgaXMgdXNlZCBpbiB0aGUgZGVhZGxpbmUKKwkJCQlzY2hlZHVsZXIgZm9yIGV4YW1wbGUsIHRvIHJlcG9zaXRpb24gdGhlIHJlcXVlc3QKKwkJCQlpZiBpdHMgc29ydGluZyBvcmRlciBoYXMgY2hhbmdlZC4KKworZWxldmF0b3JfYWxsb3dfbWVyZ2VfZm4JCWNhbGxlZCB3aGVuZXZlciB0aGUgYmxvY2sgbGF5ZXIgZGV0ZXJtaW5lcworCQkJCXRoYXQgYSBiaW8gY2FuIGJlIG1lcmdlZCBpbnRvIGFuIGV4aXN0aW5nCisJCQkJcmVxdWVzdCBzYWZlbHkuIFRoZSBpbyBzY2hlZHVsZXIgbWF5IHN0aWxsCisJCQkJd2FudCB0byBzdG9wIGEgbWVyZ2UgYXQgdGhpcyBwb2ludCBpZiBpdAorCQkJCXJlc3VsdHMgaW4gc29tZSBzb3J0IG9mIGNvbmZsaWN0IGludGVybmFsbHksCisJCQkJdGhpcyBob29rIGFsbG93cyBpdCB0byBkbyB0aGF0LiBOb3RlIGhvd2V2ZXIKKwkJCQl0aGF0IHR3byAqcmVxdWVzdHMqIGNhbiBzdGlsbCBiZSBtZXJnZWQgYXQgbGF0ZXIKKwkJCQl0aW1lLiBDdXJyZW50bHkgdGhlIGlvIHNjaGVkdWxlciBoYXMgbm8gd2F5IHRvCisJCQkJcHJldmVudCB0aGF0LiBJdCBjYW4gb25seSBsZWFybiBhYm91dCB0aGUgZmFjdAorCQkJCWZyb20gZWxldmF0b3JfbWVyZ2VfcmVxX2ZuIGNhbGxiYWNrLgorCitlbGV2YXRvcl9kaXNwYXRjaF9mbioJCWZpbGxzIHRoZSBkaXNwYXRjaCBxdWV1ZSB3aXRoIHJlYWR5IHJlcXVlc3RzLgorCQkJCUkvTyBzY2hlZHVsZXJzIGFyZSBmcmVlIHRvIHBvc3Rwb25lIHJlcXVlc3RzIGJ5CisJCQkJbm90IGZpbGxpbmcgdGhlIGRpc3BhdGNoIHF1ZXVlIHVubGVzcyBAZm9yY2UKKwkJCQlpcyBub24temVyby4gIE9uY2UgZGlzcGF0Y2hlZCwgSS9PIHNjaGVkdWxlcnMKKwkJCQlhcmUgbm90IGFsbG93ZWQgdG8gbWFuaXB1bGF0ZSB0aGUgcmVxdWVzdHMgLQorCQkJCXRoZXkgYmVsb25nIHRvIGdlbmVyaWMgZGlzcGF0Y2ggcXVldWUuCisKK2VsZXZhdG9yX2FkZF9yZXFfZm4qCQljYWxsZWQgdG8gYWRkIGEgbmV3IHJlcXVlc3QgaW50byB0aGUgc2NoZWR1bGVyCisKK2VsZXZhdG9yX2Zvcm1lcl9yZXFfZm4KK2VsZXZhdG9yX2xhdHRlcl9yZXFfZm4JCVRoZXNlIHJldHVybiB0aGUgcmVxdWVzdCBiZWZvcmUgb3IgYWZ0ZXIgdGhlCisJCQkJb25lIHNwZWNpZmllZCBpbiBkaXNrIHNvcnQgb3JkZXIuIFVzZWQgYnkgdGhlCisJCQkJYmxvY2sgbGF5ZXIgdG8gZmluZCBtZXJnZSBwb3NzaWJpbGl0aWVzLgorCitlbGV2YXRvcl9jb21wbGV0ZWRfcmVxX2ZuCWNhbGxlZCB3aGVuIGEgcmVxdWVzdCBpcyBjb21wbGV0ZWQuCisKK2VsZXZhdG9yX21heV9xdWV1ZV9mbgkJcmV0dXJucyB0cnVlIGlmIHRoZSBzY2hlZHVsZXIgd2FudHMgdG8gYWxsb3cgdGhlCisJCQkJY3VycmVudCBjb250ZXh0IHRvIHF1ZXVlIGEgbmV3IHJlcXVlc3QgZXZlbiBpZgorCQkJCWl0IGlzIG92ZXIgdGhlIHF1ZXVlIGxpbWl0LiBUaGlzIG11c3QgYmUgdXNlZAorCQkJCXZlcnkgY2FyZWZ1bGx5ISEKKworZWxldmF0b3Jfc2V0X3JlcV9mbgorZWxldmF0b3JfcHV0X3JlcV9mbgkJTXVzdCBiZSB1c2VkIHRvIGFsbG9jYXRlIGFuZCBmcmVlIGFueSBlbGV2YXRvcgorCQkJCXNwZWNpZmljIHN0b3JhZ2UgZm9yIGEgcmVxdWVzdC4KKworZWxldmF0b3JfYWN0aXZhdGVfcmVxX2ZuCUNhbGxlZCB3aGVuIGRldmljZSBkcml2ZXIgZmlyc3Qgc2VlcyBhIHJlcXVlc3QuCisJCQkJSS9PIHNjaGVkdWxlcnMgY2FuIHVzZSB0aGlzIGNhbGxiYWNrIHRvCisJCQkJZGV0ZXJtaW5lIHdoZW4gYWN0dWFsIGV4ZWN1dGlvbiBvZiBhIHJlcXVlc3QKKwkJCQlzdGFydHMuCitlbGV2YXRvcl9kZWFjdGl2YXRlX3JlcV9mbglDYWxsZWQgd2hlbiBkZXZpY2UgZHJpdmVyIGRlY2lkZXMgdG8gZGVsYXkKKwkJCQlhIHJlcXVlc3QgYnkgcmVxdWV1ZWluZyBpdC4KKworZWxldmF0b3JfaW5pdF9mbioKK2VsZXZhdG9yX2V4aXRfZm4JCUFsbG9jYXRlIGFuZCBmcmVlIGFueSBlbGV2YXRvciBzcGVjaWZpYyBzdG9yYWdlCisJCQkJZm9yIGEgcXVldWUuCisKKzQuMiBSZXF1ZXN0IGZsb3dzIHNlZW4gYnkgSS9PIHNjaGVkdWxlcnMKK0FsbCByZXF1ZXN0cyBzZWVuIGJ5IEkvTyBzY2hlZHVsZXJzIHN0cmljdGx5IGZvbGxvdyBvbmUgb2YgdGhlIGZvbGxvd2luZyB0aHJlZQorZmxvd3MuCisKKyBzZXRfcmVxX2ZuIC0+CisKKyBpLiAgIGFkZF9yZXFfZm4gLT4gKG1lcmdlZF9mbiAtPikqIC0+IGRpc3BhdGNoX2ZuIC0+IGFjdGl2YXRlX3JlcV9mbiAtPgorICAgICAgKGRlYWN0aXZhdGVfcmVxX2ZuIC0+IGFjdGl2YXRlX3JlcV9mbiAtPikqIC0+IGNvbXBsZXRlZF9yZXFfZm4KKyBpaS4gIGFkZF9yZXFfZm4gLT4gKG1lcmdlZF9mbiAtPikqIC0+IG1lcmdlX3JlcV9mbgorIGlpaS4gW25vbmVdCisKKyAtPiBwdXRfcmVxX2ZuCisKKzQuMyBJL08gc2NoZWR1bGVyIGltcGxlbWVudGF0aW9uCitUaGUgZ2VuZXJpYyBpL28gc2NoZWR1bGVyIGFsZ29yaXRobSBhdHRlbXB0cyB0byBzb3J0L21lcmdlL2JhdGNoIHJlcXVlc3RzIGZvcgorb3B0aW1hbCBkaXNrIHNjYW4gYW5kIHJlcXVlc3Qgc2VydmljaW5nIHBlcmZvcm1hbmNlIChiYXNlZCBvbiBnZW5lcmljCitwcmluY2lwbGVzIGFuZCBkZXZpY2UgY2FwYWJpbGl0aWVzKSwgb3B0aW1pemVkIGZvcjoKK2kuICAgaW1wcm92ZWQgdGhyb3VnaHB1dAoraWkuICBpbXByb3ZlZCBsYXRlbmN5CitpaWkuIGJldHRlciB1dGlsaXphdGlvbiBvZiBoL3cgJiBDUFUgdGltZQorCitDaGFyYWN0ZXJpc3RpY3M6CisKK2kuIEJpbmFyeSB0cmVlCitBUyBhbmQgZGVhZGxpbmUgaS9vIHNjaGVkdWxlcnMgdXNlIHJlZCBibGFjayBiaW5hcnkgdHJlZXMgZm9yIGRpc2sgcG9zaXRpb24KK3NvcnRpbmcgYW5kIHNlYXJjaGluZywgYW5kIGEgZmlmbyBsaW5rZWQgbGlzdCBmb3IgdGltZS1iYXNlZCBzZWFyY2hpbmcuIFRoaXMKK2dpdmVzIGdvb2Qgc2NhbGFiaWxpdHkgYW5kIGdvb2QgYXZhaWxhYmlsaXR5IG9mIGluZm9ybWF0aW9uLiBSZXF1ZXN0cyBhcmUKK2FsbW9zdCBhbHdheXMgZGlzcGF0Y2hlZCBpbiBkaXNrIHNvcnQgb3JkZXIsIHNvIGEgY2FjaGUgaXMga2VwdCBvZiB0aGUgbmV4dAorcmVxdWVzdCBpbiBzb3J0IG9yZGVyIHRvIHByZXZlbnQgYmluYXJ5IHRyZWUgbG9va3Vwcy4KKworVGhpcyBhcnJhbmdlbWVudCBpcyBub3QgYSBnZW5lcmljIGJsb2NrIGxheWVyIGNoYXJhY3RlcmlzdGljIGhvd2V2ZXIsIHNvCitlbGV2YXRvcnMgbWF5IGltcGxlbWVudCBxdWV1ZXMgYXMgdGhleSBwbGVhc2UuCisKK2lpLiBNZXJnZSBoYXNoCitBUyBhbmQgZGVhZGxpbmUgdXNlIGEgaGFzaCB0YWJsZSBpbmRleGVkIGJ5IHRoZSBsYXN0IHNlY3RvciBvZiBhIHJlcXVlc3QuIFRoaXMKK2VuYWJsZXMgbWVyZ2luZyBjb2RlIHRvIHF1aWNrbHkgbG9vayB1cCAiYmFjayBtZXJnZSIgY2FuZGlkYXRlcywgZXZlbiB3aGVuCittdWx0aXBsZSBJL08gc3RyZWFtcyBhcmUgYmVpbmcgcGVyZm9ybWVkIGF0IG9uY2Ugb24gb25lIGRpc2suCisKKyJGcm9udCBtZXJnZXMiLCBhIG5ldyByZXF1ZXN0IGJlaW5nIG1lcmdlZCBhdCB0aGUgZnJvbnQgb2YgYW4gZXhpc3RpbmcgcmVxdWVzdCwKK2FyZSBmYXIgbGVzcyBjb21tb24gdGhhbiAiYmFjayBtZXJnZXMiIGR1ZSB0byB0aGUgbmF0dXJlIG9mIG1vc3QgSS9PIHBhdHRlcm5zLgorRnJvbnQgbWVyZ2VzIGFyZSBoYW5kbGVkIGJ5IHRoZSBiaW5hcnkgdHJlZXMgaW4gQVMgYW5kIGRlYWRsaW5lIHNjaGVkdWxlcnMuCisKK2lpaS4gUGx1Z2dpbmcgdGhlIHF1ZXVlIHRvIGJhdGNoIHJlcXVlc3RzIGluIGFudGljaXBhdGlvbiBvZiBvcHBvcnR1bml0aWVzIGZvcgorICAgICBtZXJnZS9zb3J0IG9wdGltaXphdGlvbnMKKworUGx1Z2dpbmcgaXMgYW4gYXBwcm9hY2ggdGhhdCB0aGUgY3VycmVudCBpL28gc2NoZWR1bGluZyBhbGdvcml0aG0gcmVzb3J0cyB0byBzbwordGhhdCBpdCBjb2xsZWN0cyB1cCBlbm91Z2ggcmVxdWVzdHMgaW4gdGhlIHF1ZXVlIHRvIGJlIGFibGUgdG8gdGFrZQorYWR2YW50YWdlIG9mIHRoZSBzb3J0aW5nL21lcmdpbmcgbG9naWMgaW4gdGhlIGVsZXZhdG9yLiBJZiB0aGUKK3F1ZXVlIGlzIGVtcHR5IHdoZW4gYSByZXF1ZXN0IGNvbWVzIGluLCB0aGVuIGl0IHBsdWdzIHRoZSByZXF1ZXN0IHF1ZXVlCisoc29ydCBvZiBsaWtlIHBsdWdnaW5nIHRoZSBiYXRoIHR1YiBvZiBhIHZlc3NlbCB0byBnZXQgZmx1aWQgdG8gYnVpbGQgdXApCit0aWxsIGl0IGZpbGxzIHVwIHdpdGggYSBmZXcgbW9yZSByZXF1ZXN0cywgYmVmb3JlIHN0YXJ0aW5nIHRvIHNlcnZpY2UKK3RoZSByZXF1ZXN0cy4gVGhpcyBwcm92aWRlcyBhbiBvcHBvcnR1bml0eSB0byBtZXJnZS9zb3J0IHRoZSByZXF1ZXN0cyBiZWZvcmUKK3Bhc3NpbmcgdGhlbSBkb3duIHRvIHRoZSBkZXZpY2UuIFRoZXJlIGFyZSB2YXJpb3VzIGNvbmRpdGlvbnMgd2hlbiB0aGUgcXVldWUgaXMKK3VucGx1Z2dlZCAodG8gb3BlbiB1cCB0aGUgZmxvdyBhZ2FpbiksIGVpdGhlciB0aHJvdWdoIGEgc2NoZWR1bGVkIHRhc2sgb3IKK2NvdWxkIGJlIG9uIGRlbWFuZC4gRm9yIGV4YW1wbGUgd2FpdF9vbl9idWZmZXIgc2V0cyB0aGUgdW5wbHVnZ2luZyBnb2luZwordGhyb3VnaCBzeW5jX2J1ZmZlcigpIHJ1bm5pbmcgYmxrX3J1bl9hZGRyZXNzX3NwYWNlKG1hcHBpbmcpLiBPciB0aGUgY2FsbGVyCitjYW4gZG8gaXQgZXhwbGljaXR5IHRocm91Z2ggYmxrX3VucGx1ZyhiZGV2KS4gU28gaW4gdGhlIHJlYWQgY2FzZSwKK3RoZSBxdWV1ZSBnZXRzIGV4cGxpY2l0bHkgdW5wbHVnZ2VkIGFzIHBhcnQgb2Ygd2FpdGluZyBmb3IgY29tcGxldGlvbiBvbiB0aGF0CitidWZmZXIuIEZvciBwYWdlIGRyaXZlbiBJTywgdGhlIGFkZHJlc3Mgc3BhY2UgLT5zeW5jX3BhZ2UoKSB0YWtlcyBjYXJlIG9mCitkb2luZyB0aGUgYmxrX3J1bl9hZGRyZXNzX3NwYWNlKCkuCisKK0FzaWRlOgorICBUaGlzIGlzIGtpbmQgb2YgY29udHJvdmVyc2lhbCB0ZXJyaXRvcnksIGFzIGl0J3Mgbm90IGNsZWFyIGlmIHBsdWdnaW5nIGlzCisgIGFsd2F5cyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8uIERldmljZXMgdHlwaWNhbGx5IGhhdmUgdGhlaXIgb3duIHF1ZXVlcywKKyAgYW5kIGFsbG93aW5nIGEgYmlnIHF1ZXVlIHRvIGJ1aWxkIHVwIGluIHNvZnR3YXJlLCB3aGlsZSBsZXR0aW5nIHRoZSBkZXZpY2UgYmUKKyAgaWRsZSBmb3IgYSB3aGlsZSBtYXkgbm90IGFsd2F5cyBtYWtlIHNlbnNlLiBUaGUgdHJpY2sgaXMgdG8gaGFuZGxlIHRoZSBmaW5lCisgIGJhbGFuY2UgYmV0d2VlbiB3aGVuIHRvIHBsdWcgYW5kIHdoZW4gdG8gb3BlbiB1cC4gQWxzbyBub3cgdGhhdCB3ZSBoYXZlCisgIG11bHRpLXBhZ2UgYmlvcyBiZWluZyBxdWV1ZWQgaW4gb25lIHNob3QsIHdlIG1heSBub3QgbmVlZCB0byB3YWl0IHRvIG1lcmdlCisgIGEgYmlnIHJlcXVlc3QgZnJvbSB0aGUgYnJva2VuIHVwIHBpZWNlcyBjb21pbmcgYnkuCisKKzQuNCBJL08gY29udGV4dHMKK0kvTyBjb250ZXh0cyBwcm92aWRlIGEgZHluYW1pY2FsbHkgYWxsb2NhdGVkIHBlciBwcm9jZXNzIGRhdGEgYXJlYS4gVGhleSBtYXkKK2JlIHVzZWQgaW4gSS9PIHNjaGVkdWxlcnMsIGFuZCBpbiB0aGUgYmxvY2sgbGF5ZXIgKGNvdWxkIGJlIHVzZWQgZm9yIElPIHN0YXRpcywKK3ByaW9yaXRpZXMgZm9yIGV4YW1wbGUpLiBTZWUgKmlvX2NvbnRleHQgaW4gYmxvY2svbGxfcndfYmxrLmMsIGFuZCBhcy1pb3NjaGVkLmMKK2ZvciBhbiBleGFtcGxlIG9mIHVzYWdlIGluIGFuIGkvbyBzY2hlZHVsZXIuCisKKworNS4gU2NhbGFiaWxpdHkgcmVsYXRlZCBjaGFuZ2VzCisKKzUuMSBHcmFudWxhciBMb2NraW5nOiBpb19yZXF1ZXN0X2xvY2sgcmVwbGFjZWQgYnkgYSBwZXItcXVldWUgbG9jaworCitUaGUgZ2xvYmFsIGlvX3JlcXVlc3RfbG9jayBoYXMgYmVlbiByZW1vdmVkIGFzIG9mIDIuNSwgdG8gYXZvaWQKK3RoZSBzY2FsYWJpbGl0eSBib3R0bGVuZWNrIGl0IHdhcyBjYXVzaW5nLCBhbmQgaGFzIGJlZW4gcmVwbGFjZWQgYnkgbW9yZQorZ3JhbnVsYXIgbG9ja2luZy4gVGhlIHJlcXVlc3QgcXVldWUgc3RydWN0dXJlIGhhcyBhIHBvaW50ZXIgdG8gdGhlCitsb2NrIHRvIGJlIHVzZWQgZm9yIHRoYXQgcXVldWUuIEFzIGEgcmVzdWx0LCBsb2NraW5nIGNhbiBub3cgYmUKK3Blci1xdWV1ZSwgd2l0aCBhIHByb3Zpc2lvbiBmb3Igc2hhcmluZyBhIGxvY2sgYWNyb3NzIHF1ZXVlcyBpZgorbmVjZXNzYXJ5IChlLmcgdGhlIHNjc2kgbGF5ZXIgc2V0cyB0aGUgcXVldWUgbG9jayBwb2ludGVycyB0byB0aGUKK2NvcnJlc3BvbmRpbmcgYWRhcHRlciBsb2NrLCB3aGljaCByZXN1bHRzIGluIGEgcGVyIGhvc3QgbG9ja2luZworZ3JhbnVsYXJpdHkpLiBUaGUgbG9ja2luZyBzZW1hbnRpY3MgYXJlIHRoZSBzYW1lLCBpLmUuIGxvY2tpbmcgaXMKK3N0aWxsIGltcG9zZWQgYnkgdGhlIGJsb2NrIGxheWVyLCBncmFiYmluZyB0aGUgbG9jayBiZWZvcmUKK3JlcXVlc3RfZm4gZXhlY3V0aW9uIHdoaWNoIGl0IG1lYW5zIHRoYXQgbG90cyBvZiBvbGRlciBkcml2ZXJzCitzaG91bGQgc3RpbGwgYmUgU01QIHNhZmUuIERyaXZlcnMgYXJlIGZyZWUgdG8gZHJvcCB0aGUgcXVldWUKK2xvY2sgdGhlbXNlbHZlcywgaWYgcmVxdWlyZWQuIERyaXZlcnMgdGhhdCBleHBsaWNpdGx5IHVzZWQgdGhlCitpb19yZXF1ZXN0X2xvY2sgZm9yIHNlcmlhbGl6YXRpb24gbmVlZCB0byBiZSBtb2RpZmllZCBhY2NvcmRpbmdseS4KK1VzdWFsbHkgaXQncyBhcyBlYXN5IGFzIGFkZGluZyBhIGdsb2JhbCBsb2NrOgorCisJc3RhdGljIERFRklORV9TUElOTE9DSyhteV9kcml2ZXJfbG9jayk7CisKK2FuZCBwYXNzaW5nIHRoZSBhZGRyZXNzIHRvIHRoYXQgbG9jayB0byBibGtfaW5pdF9xdWV1ZSgpLgorCis1LjIgNjQgYml0IHNlY3RvciBudW1iZXJzIChzZWN0b3JfdCBwcmVwYXJlcyBmb3IgNjQgYml0IHN1cHBvcnQpCisKK1RoZSBzZWN0b3IgbnVtYmVyIHVzZWQgaW4gdGhlIGJpbyBzdHJ1Y3R1cmUgaGFzIGJlZW4gY2hhbmdlZCB0byBzZWN0b3JfdCwKK3doaWNoIGNvdWxkIGJlIGRlZmluZWQgYXMgNjQgYml0IGluIHByZXBhcmF0aW9uIGZvciA2NCBiaXQgc2VjdG9yIHN1cHBvcnQuCisKKzYuIE90aGVyIENoYW5nZXMvSW1wbGljYXRpb25zCisKKzYuMSBQYXJ0aXRpb24gcmUtbWFwcGluZyBoYW5kbGVkIGJ5IHRoZSBnZW5lcmljIGJsb2NrIGxheWVyCisKK0luIDIuNSBzb21lIG9mIHRoZSBnZW5kaXNrL3BhcnRpdGlvbiByZWxhdGVkIGNvZGUgaGFzIGJlZW4gcmVvcmdhbml6ZWQuCitOb3cgdGhlIGdlbmVyaWMgYmxvY2sgbGF5ZXIgcGVyZm9ybXMgcGFydGl0aW9uLXJlbWFwcGluZyBlYXJseSBhbmQgdGh1cworcHJvdmlkZXMgZHJpdmVycyB3aXRoIGEgc2VjdG9yIG51bWJlciByZWxhdGl2ZSB0byB3aG9sZSBkZXZpY2UsIHJhdGhlciB0aGFuCitoYXZpbmcgdG8gdGFrZSBwYXJ0aXRpb24gbnVtYmVyIGludG8gYWNjb3VudCBpbiBvcmRlciB0byBhcnJpdmUgYXQgdGhlIHRydWUKK3NlY3RvciBudW1iZXIuIFRoZSByb3V0aW5lIGJsa19wYXJ0aXRpb25fcmVtYXAoKSBpcyBpbnZva2VkIGJ5CitnZW5lcmljX21ha2VfcmVxdWVzdCBldmVuIGJlZm9yZSBpbnZva2luZyB0aGUgcXVldWUgc3BlY2lmaWMgbWFrZV9yZXF1ZXN0X2ZuLAorc28gdGhlIGkvbyBzY2hlZHVsZXIgYWxzbyBnZXRzIHRvIG9wZXJhdGUgb24gd2hvbGUgZGlzayBzZWN0b3IgbnVtYmVycy4gVGhpcworc2hvdWxkIHR5cGljYWxseSBub3QgcmVxdWlyZSBjaGFuZ2VzIHRvIGJsb2NrIGRyaXZlcnMsIGl0IGp1c3QgbmV2ZXIgZ2V0cwordG8gaW52b2tlIGl0cyBvd24gcGFydGl0aW9uIHNlY3RvciBvZmZzZXQgY2FsY3VsYXRpb25zIHNpbmNlIGFsbCBiaW9zCitzZW50IGFyZSBvZmZzZXQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkZXZpY2UuCisKKworNy4gQSBGZXcgVGlwcyBvbiBNaWdyYXRpb24gb2Ygb2xkZXIgZHJpdmVycworCitPbGQtc3R5bGUgZHJpdmVycyB0aGF0IGp1c3QgdXNlIENVUlJFTlQgYW5kIGlnbm9yZXMgY2x1c3RlcmVkIHJlcXVlc3RzLAorbWF5IG5vdCBuZWVkIG11Y2ggY2hhbmdlLiAgVGhlIGdlbmVyaWMgbGF5ZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGhhbmRsZQorY2x1c3RlcmVkIHJlcXVlc3RzLCBtdWx0aS1wYWdlIGJpb3MsIGV0YyBmb3IgdGhlIGRyaXZlci4KKworRm9yIGEgbG93IHBlcmZvcm1hbmNlIGRyaXZlciBvciBoYXJkd2FyZSB0aGF0IGlzIFBJTyBkcml2ZW4gb3IganVzdCBkb2Vzbid0CitzdXBwb3J0IHNjYXR0ZXItZ2F0aGVyIGNoYW5nZXMgc2hvdWxkIGJlIG1pbmltYWwgdG9vLgorCitUaGUgZm9sbG93aW5nIGFyZSBzb21lIHBvaW50cyB0byBrZWVwIGluIG1pbmQgd2hlbiBjb252ZXJ0aW5nIG9sZCBkcml2ZXJzCit0byBiaW8uCisKK0RyaXZlcnMgc2hvdWxkIHVzZSBlbHZfbmV4dF9yZXF1ZXN0IHRvIHBpY2sgdXAgcmVxdWVzdHMgYW5kIGFyZSBubyBsb25nZXIKK3N1cHBvc2VkIHRvIGhhbmRsZSBsb29waW5nIGRpcmVjdGx5IG92ZXIgdGhlIHJlcXVlc3QgbGlzdC4KKyhzdHJ1Y3QgcmVxdWVzdC0+cXVldWUgaGFzIGJlZW4gcmVtb3ZlZCkKKworTm93IGVuZF90aGF0X3JlcXVlc3RfZmlyc3QgdGFrZXMgYW4gYWRkaXRpb25hbCBudW1iZXJfb2Zfc2VjdG9ycyBhcmd1bWVudC4KK0l0IHVzZWQgdG8gaGFuZGxlIGFsd2F5cyBqdXN0IHRoZSBmaXJzdCBidWZmZXJfaGVhZCBpbiBhIHJlcXVlc3QsIG5vdworaXQgd2lsbCBsb29wIGFuZCBoYW5kbGUgYXMgbWFueSBzZWN0b3JzIChvbiBhIGJpby1zZWdtZW50IGdyYW51bGFyaXR5KQorYXMgc3BlY2lmaWVkLgorCitOb3cgYmgtPmJfZW5kX2lvIGlzIHJlcGxhY2VkIGJ5IGJpby0+YmlfZW5kX2lvLCBidXQgbW9zdCBvZiB0aGUgdGltZSB0aGUKK3JpZ2h0IHRoaW5nIHRvIHVzZSBpcyBiaW9fZW5kaW8oYmlvKSBpbnN0ZWFkLgorCitJZiB0aGUgZHJpdmVyIGlzIGRyb3BwaW5nIHRoZSBpb19yZXF1ZXN0X2xvY2sgZnJvbSBpdHMgcmVxdWVzdF9mbiBzdHJhdGVneSwKK3RoZW4gaXQganVzdCBuZWVkcyB0byByZXBsYWNlIHRoYXQgd2l0aCBxLT5xdWV1ZV9sb2NrIGluc3RlYWQuCisKK0FzIGRlc2NyaWJlZCBpbiBTZWMgMS4xLCBkcml2ZXJzIGNhbiBzZXQgbWF4IHNlY3RvciBzaXplLCBtYXggc2VnbWVudCBzaXplCitldGMgcGVyIHF1ZXVlIG5vdy4gRHJpdmVycyB0aGF0IHVzZWQgdG8gZGVmaW5lIHRoZWlyIG93biBtZXJnZSBmdW5jdGlvbnMgaQordG8gaGFuZGxlIHRoaW5ncyBsaWtlIHRoaXMgY2FuIG5vdyBqdXN0IHVzZSB0aGUgYmxrX3F1ZXVlXyogZnVuY3Rpb25zIGF0CitibGtfaW5pdF9xdWV1ZSB0aW1lLgorCitEcml2ZXJzIG5vIGxvbmdlciBoYXZlIHRvIG1hcCBhIHtwYXJ0aXRpb24sIHNlY3RvciBvZmZzZXR9IGludG8gdGhlCitjb3JyZWN0IGFic29sdXRlIGxvY2F0aW9uIGFueW1vcmUsIHRoaXMgaXMgZG9uZSBieSB0aGUgYmxvY2sgbGF5ZXIsIHNvCit3aGVyZSBhIGRyaXZlciByZWNlaXZlZCBhIHJlcXVlc3QgYWxhIHRoaXMgYmVmb3JlOgorCisJcnEtPnJxX2RldiA9IG1rX2tkZXYoMywgNSk7CS8qIC9kZXYvaGRhNSAqLworCXJxLT5zZWN0b3IgPSAwOwkJCS8qIGZpcnN0IHNlY3RvciBvbiBoZGE1ICovCisKKyAgaXQgd2lsbCBub3cgc2VlCisKKwlycS0+cnFfZGV2ID0gbWtfa2RldigzLCAwKTsJLyogL2Rldi9oZGEgKi8KKwlycS0+c2VjdG9yID0gMTIzMTI4OwkJLyogb2Zmc2V0IGZyb20gc3RhcnQgb2YgZGlzayAqLworCitBcyBtZW50aW9uZWQsIHRoZXJlIGlzIG5vIHZpcnR1YWwgbWFwcGluZyBvZiBhIGJpby4gRm9yIERNQSwgdGhpcyBpcworbm90IGEgcHJvYmxlbSBhcyB0aGUgZHJpdmVyIHByb2JhYmx5IG5ldmVyIHdpbGwgbmVlZCBhIHZpcnR1YWwgbWFwcGluZy4KK0luc3RlYWQgaXQgbmVlZHMgYSBidXMgbWFwcGluZyAoZG1hX21hcF9wYWdlIGZvciBhIHNpbmdsZSBzZWdtZW50IG9yCit1c2UgZG1hX21hcF9zZyBmb3Igc2NhdHRlciBnYXRoZXIpIHRvIGJlIGFibGUgdG8gc2hpcCBpdCB0byB0aGUgZHJpdmVyLiBGb3IKK1BJTyBkcml2ZXJzIChvciBkcml2ZXJzIHRoYXQgbmVlZCB0byByZXZlcnQgdG8gUElPIHRyYW5zZmVyIG9uY2UgaW4gYQord2hpbGUgKElERSBmb3IgZXhhbXBsZSkpLCB3aGVyZSB0aGUgQ1BVIGlzIGRvaW5nIHRoZSBhY3R1YWwgZGF0YQordHJhbnNmZXIgYSB2aXJ0dWFsIG1hcHBpbmcgaXMgbmVlZGVkLiBJZiB0aGUgZHJpdmVyIHN1cHBvcnRzIGhpZ2htZW0gSS9PLAorKFNlYyAxLjEsIChpaSkgKSBpdCBuZWVkcyB0byB1c2UgX19iaW9fa21hcF9hdG9taWMgYW5kIGJpb19rbWFwX2lycSB0bwordGVtcG9yYXJpbHkgbWFwIGEgYmlvIGludG8gdGhlIHZpcnR1YWwgYWRkcmVzcyBzcGFjZS4KKworCis4LiBQcmlvci9SZWxhdGVkL0ltcGFjdGVkIHBhdGNoZXMKKworOC4xLiBFYXJsaWVyIGtpb2J1ZiBwYXRjaGVzIChzY3QvYXhib2UvY2hhaXQvaGNoL21rcCkKKy0gb3JpZyBraW9idWYgJiByYXcgaS9vIHBhdGNoZXMgKG5vdyBpbiAyLjQgdHJlZSkKKy0gZGlyZWN0IGtpb2J1ZiBiYXNlZCBpL28gdG8gZGV2aWNlcyAobm8gaW50ZXJtZWRpYXRlIGJoJ3MpCistIHBhZ2UgaS9vIHVzaW5nIGtpb2J1ZgorLSBraW9idWYgc3BsaXR0aW5nIGZvciBsdm0gKG1rcCkKKy0gZWxldmF0b3Igc3VwcG9ydCBmb3Iga2lvYnVmIHJlcXVlc3QgbWVyZ2luZyAoYXhib2UpCis4LjIuIFplcm8tY29weSBuZXR3b3JraW5nIChEYXZlIE1pbGxlcikKKzguMy4gU0dJIFhGUyAtIHBhZ2VidWYgcGF0Y2hlcyAtIHVzZSBvZiBraW9idWZzCis4LjQuIE11bHRpLXBhZ2UgcGlvZW50IHBhdGNoIGZvciBiaW8gKENocmlzdG9waCBIZWxsd2lnKQorOC41LiBEaXJlY3QgaS9vIGltcGxlbWVudGF0aW9uIChBbmRyZWEgQXJjYW5nZWxpKSBzaW5jZSAyLjQuMTAtcHJlMTEKKzguNi4gQXN5bmMgaS9vIGltcGxlbWVudGF0aW9uIHBhdGNoIChCZW4gTGFIYWlzZSkKKzguNy4gRVZNUyBsYXllcmluZyBkZXNpZ24gKElCTSBFVk1TIHRlYW0pCis4LjguIExhcmdlciBwYWdlIGNhY2hlIHNpemUgcGF0Y2ggKEJlbiBMYUhhaXNlKSBhbmQKKyAgICAgTGFyZ2UgcGFnZSBzaXplIChEYW5pZWwgUGhpbGxpcHMpCisgICAgPT4gbGFyZ2VyIGNvbnRpZ3VvdXMgcGh5c2ljYWwgbWVtb3J5IGJ1ZmZlcnMKKzguOS4gVk0gcmVzZXJ2YXRpb25zIHBhdGNoIChCZW4gTGFIYWlzZSkKKzguMTAuIFdyaXRlIGNsdXN0ZXJpbmcgcGF0Y2hlcyA/IChNYXJjZWxvL1F1aW50ZWxhL1JpZWwgPykKKzguMTEuIEJsb2NrIGRldmljZSBpbiBwYWdlIGNhY2hlIHBhdGNoIChBbmRyZWEgQXJjaGFuZ2VsaSkgLSBub3cgaW4gMi40LjEwKworOC4xMi4gTXVsdGlwbGUgYmxvY2stc2l6ZSB0cmFuc2ZlcnMgZm9yIGZhc3RlciByYXcgaS9vIChTaGFpbGFiaCBOYWdhciwKKyAgICAgIEJhZGFyaSkKKzguMTMgIFByaW9yaXR5IGJhc2VkIGkvbyBzY2hlZHVsZXIgLSBwcmVwYXRjaGVzIChBcmphbiB2YW4gZGUgVmVuKQorOC4xNCAgSURFIFRhc2tmaWxlIGkvbyBwYXRjaCAoQW5kcmUgSGVkcmljaykKKzguMTUgIE11bHRpLXBhZ2Ugd3JpdGVvdXQgYW5kIHJlYWRhaGVhZCBwYXRjaGVzIChBbmRyZXcgTW9ydG9uKQorOC4xNiAgRGlyZWN0IGkvbyBwYXRjaGVzIGZvciAyLjUgdXNpbmcga3ZlYyBhbmQgYmlvIChCYWRhcmkgUHVsYXZhcnRoeSkKKworOS4gT3RoZXIgUmVmZXJlbmNlczoKKworOS4xIFRoZSBTcGxpY2UgSS9PIE1vZGVsIC0gTGFycnkgTWNWb3kgKGFuZCBzdWJzZXF1ZW50IGRpc2N1c3Npb25zIG9uIGxrbWwsCithbmQgTGludXMnIGNvbW1lbnRzIC0gSmFuIDIwMDEpCis5LjIgRGlzY3Vzc2lvbnMgYWJvdXQga2lvYnVmIGFuZCBiaCBkZXNpZ24gb24gbGttbCBiZXR3ZWVuIHNjdCwgbGludXMsIGFsYW4KK2V0IGFsIC0gRmViLU1hcmNoIDIwMDEgKG1hbnkgb2YgdGhlIGluaXRpYWwgdGhvdWdodHMgdGhhdCBsZWQgdG8gYmlvIHdlcmUKK2Jyb3VnaHQgdXAgaW4gdGhpcyBkaXNjdXNzaW9uIHRocmVhZCkKKzkuMyBEaXNjdXNzaW9ucyBvbiBtZW1wb29sIG9uIGxrbWwgLSBEZWMgMjAwMS4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibG9jay9iaW92ZWNzLnR4dCBiL0RvY3VtZW50YXRpb24vYmxvY2svYmlvdmVjcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU2ODk1OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYmxvY2svYmlvdmVjcy50eHQKQEAgLTAsMCArMSwxMTkgQEAKKworSW1tdXRhYmxlIGJpb3ZlY3MgYW5kIGJpb3ZlYyBpdGVyYXRvcnM6Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworS2VudCBPdmVyc3RyZWV0IDxrbW9AZGF0ZXJhaW5jLmNvbT4KKworQXMgb2YgMy4xMywgYmlvdmVjcyBzaG91bGQgbmV2ZXIgYmUgbW9kaWZpZWQgYWZ0ZXIgYSBiaW8gaGFzIGJlZW4gc3VibWl0dGVkLgorSW5zdGVhZCwgd2UgaGF2ZSBhIG5ldyBzdHJ1Y3QgYnZlY19pdGVyIHdoaWNoIHJlcHJlc2VudHMgYSByYW5nZSBvZiBhIGJpb3ZlYyAtCit0aGUgaXRlcmF0b3Igd2lsbCBiZSBtb2RpZmllZCBhcyB0aGUgYmlvIGlzIGNvbXBsZXRlZCwgbm90IHRoZSBiaW92ZWMuCisKK01vcmUgc3BlY2lmaWNhbGx5LCBvbGQgY29kZSB0aGF0IG5lZWRlZCB0byBwYXJ0aWFsbHkgY29tcGxldGUgYSBiaW8gd291bGQKK3VwZGF0ZSBiaV9zZWN0b3IgYW5kIGJpX3NpemUsIGFuZCBhZHZhbmNlIGJpX2lkeCB0byB0aGUgbmV4dCBiaW92ZWMuIElmIGl0CitlbmRlZCB1cCBwYXJ0d2F5IHRocm91Z2ggYSBiaW92ZWMsIGl0IHdvdWxkIGluY3JlbWVudCBidl9vZmZzZXQgYW5kIGRlY3JlbWVudAorYnZfbGVuIGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXMgY29tcGxldGVkIGluIHRoYXQgYmlvdmVjLgorCitJbiB0aGUgbmV3IHNjaGVtZSBvZiB0aGluZ3MsIGV2ZXJ5dGhpbmcgdGhhdCBtdXN0IGJlIG11dGF0ZWQgaW4gb3JkZXIgdG8KK3BhcnRpYWxseSBjb21wbGV0ZSBhIGJpbyBpcyBzZWdyZWdhdGVkIGludG8gc3RydWN0IGJ2ZWNfaXRlcjogYmlfc2VjdG9yLAorYmlfc2l6ZSBhbmQgYmlfaWR4IGhhdmUgYmVlbiBtb3ZlZCB0aGVyZTsgYW5kIGluc3RlYWQgb2YgbW9kaWZ5aW5nIGJ2X29mZnNldAorYW5kIGJ2X2xlbiwgc3RydWN0IGJ2ZWNfaXRlciBoYXMgYmlfYnZlY19kb25lLCB3aGljaCByZXByZXNlbnRzIHRoZSBudW1iZXIgb2YKK2J5dGVzIGNvbXBsZXRlZCBpbiB0aGUgY3VycmVudCBidmVjLgorCitUaGVyZSBhcmUgYSBidW5jaCBvZiBuZXcgaGVscGVyIG1hY3JvcyBmb3IgaGlkaW5nIHRoZSBnb3J5IGRldGFpbHMgLSBpbgorcGFydGljdWxhciwgcHJlc2VudGluZyB0aGUgaWxsdXNpb24gb2YgcGFydGlhbGx5IGNvbXBsZXRlZCBiaW92ZWNzIHNvIHRoYXQKK25vcm1hbCBjb2RlIGRvZXNuJ3QgaGF2ZSB0byBkZWFsIHdpdGggYmlfYnZlY19kb25lLgorCisgKiBEcml2ZXIgY29kZSBzaG91bGQgbm8gbG9uZ2VyIHJlZmVyIHRvIGJpb3ZlY3MgZGlyZWN0bHk7IHdlIG5vdyBoYXZlCisgICBiaW9faW92ZWMoKSBhbmQgYmlvX2l0ZXJfaW92ZWMoKSBtYWNyb3MgdGhhdCByZXR1cm4gbGl0ZXJhbCBzdHJ1Y3QgYmlvdmVjcywKKyAgIGNvbnN0cnVjdGVkIGZyb20gdGhlIHJhdyBiaW92ZWNzIGJ1dCB0YWtpbmcgaW50byBhY2NvdW50IGJpX2J2ZWNfZG9uZSBhbmQKKyAgIGJpX3NpemUuCisKKyAgIGJpb19mb3JfZWFjaF9zZWdtZW50KCkgaGFzIGJlZW4gdXBkYXRlZCB0byB0YWtlIGEgYnZlY19pdGVyIGFyZ3VtZW50CisgICBpbnN0ZWFkIG9mIGFuIGludGVnZXIgKHRoYXQgY29ycmVzcG9uZGVkIHRvIGJpX2lkeCk7IGZvciBhIGxvdCBvZiBjb2RlIHRoZQorICAgY29udmVyc2lvbiBqdXN0IHJlcXVpcmVkIGNoYW5naW5nIHRoZSB0eXBlcyBvZiB0aGUgYXJndW1lbnRzIHRvCisgICBiaW9fZm9yX2VhY2hfc2VnbWVudCgpLgorCisgKiBBZHZhbmNpbmcgYSBidmVjX2l0ZXIgaXMgZG9uZSB3aXRoIGJpb19hZHZhbmNlX2l0ZXIoKTsgYmlvX2FkdmFuY2UoKSBpcyBhCisgICB3cmFwcGVyIGFyb3VuZCBiaW9fYWR2YW5jZV9pdGVyKCkgdGhhdCBvcGVyYXRlcyBvbiBiaW8tPmJpX2l0ZXIsIGFuZCBhbHNvCisgICBhZHZhbmNlcyB0aGUgYmlvIGludGVncml0eSdzIGl0ZXIgaWYgcHJlc2VudC4KKworICAgVGhlcmUgaXMgYSBsb3dlciBsZXZlbCBhZHZhbmNlIGZ1bmN0aW9uIC0gYnZlY19pdGVyX2FkdmFuY2UoKSAtIHdoaWNoIHRha2VzCisgICBhIHBvaW50ZXIgdG8gYSBiaW92ZWMsIG5vdCBhIGJpbzsgdGhpcyBpcyB1c2VkIGJ5IHRoZSBiaW8gaW50ZWdyaXR5IGNvZGUuCisKK1doYXQncyBhbGwgdGhpcyBnZXQgdXM/Cis9PT09PT09PT09PT09PT09PT09PT09PQorCitIYXZpbmcgYSByZWFsIGl0ZXJhdG9yLCBhbmQgbWFraW5nIGJpb3ZlY3MgaW1tdXRhYmxlLCBoYXMgYSBudW1iZXIgb2YKK2FkdmFudGFnZXM6CisKKyAqIEJlZm9yZSwgaXRlcmF0aW5nIG92ZXIgYmlvcyB3YXMgdmVyeSBhd2t3YXJkIHdoZW4geW91IHdlcmVuJ3QgcHJvY2Vzc2luZworICAgZXhhY3RseSBvbmUgYnZlYyBhdCBhIHRpbWUgLSBmb3IgZXhhbXBsZSwgYmlvX2NvcHlfZGF0YSgpIGluIGZzL2Jpby5jLAorICAgd2hpY2ggY29waWVzIHRoZSBjb250ZW50cyBvZiBvbmUgYmlvIGludG8gYW5vdGhlci4gQmVjYXVzZSB0aGUgYmlvdmVjcworICAgd291bGRuJ3QgbmVjZXNzYXJpbHkgYmUgdGhlIHNhbWUgc2l6ZSwgdGhlIG9sZCBjb2RlIHdhcyB0cmlja3kgY29udm9sdXRlZCAtCisgICBpdCBoYWQgdG8gd2FsayB0d28gZGlmZmVyZW50IGJpb3MgYXQgdGhlIHNhbWUgdGltZSwga2VlcGluZyBib3RoIGJpX2lkeCBhbmQKKyAgIGFuZCBvZmZzZXQgaW50byB0aGUgY3VycmVudCBiaW92ZWMgZm9yIGVhY2guCisKKyAgIFRoZSBuZXcgY29kZSBpcyBtdWNoIG1vcmUgc3RyYWlnaHRmb3J3YXJkIC0gaGF2ZSBhIGxvb2suIFRoaXMgc29ydCBvZgorICAgcGF0dGVybiBjb21lcyB1cCBpbiBhIGxvdCBvZiBwbGFjZXM7IGEgbG90IG9mIGRyaXZlcnMgd2VyZSBlc3NlbnRpYWxseSBvcGVuCisgICBjb2RpbmcgYnZlYyBpdGVyYXRvcnMgYmVmb3JlLCBhbmQgaGF2aW5nIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBjb25zaWRlcmFibHkKKyAgIHNpbXBsaWZpZXMgYSBsb3Qgb2YgY29kZS4KKworICogQmVmb3JlLCBhbnkgY29kZSB0aGF0IG1pZ2h0IG5lZWQgdG8gdXNlIHRoZSBiaW92ZWMgYWZ0ZXIgdGhlIGJpbyBoYWQgYmVlbgorICAgY29tcGxldGVkIChwZXJoYXBzIHRvIGNvcHkgdGhlIGRhdGEgc29tZXdoZXJlIGVsc2UsIG9yIHBlcmhhcHMgdG8gcmVzdWJtaXQKKyAgIGl0IHNvbWV3aGVyZSBlbHNlIGlmIHRoZXJlIHdhcyBhbiBlcnJvcikgaGFkIHRvIHNhdmUgdGhlIGVudGlyZSBidmVjIGFycmF5CisgICAtIGFnYWluLCB0aGlzIHdhcyBiZWluZyBkb25lIGluIGEgZmFpciBudW1iZXIgb2YgcGxhY2VzLgorCisgKiBCaW92ZWNzIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBtdWx0aXBsZSBiaW9zIC0gYSBidmVjIGl0ZXIgY2FuIHJlcHJlc2VudCBhbgorICAgYXJiaXRyYXJ5IHJhbmdlIG9mIGFuIGV4aXN0aW5nIGJpb3ZlYywgYm90aCBzdGFydGluZyBhbmQgZW5kaW5nIG1pZHdheQorICAgdGhyb3VnaCBiaW92ZWNzLiBUaGlzIGlzIHdoYXQgZW5hYmxlcyBlZmZpY2llbnQgc3BsaXR0aW5nIG9mIGFyYml0cmFyeQorICAgYmlvcy4gTm90ZSB0aGF0IHRoaXMgbWVhbnMgd2UgX29ubHlfIHVzZSBiaV9zaXplIHRvIGRldGVybWluZSB3aGVuIHdlJ3ZlCisgICByZWFjaGVkIHRoZSBlbmQgb2YgYSBiaW8sIG5vdCBiaV92Y250IC0gYW5kIHRoZSBiaW9faW92ZWMoKSBtYWNybyB0YWtlcworICAgYmlfc2l6ZSBpbnRvIGFjY291bnQgd2hlbiBjb25zdHJ1Y3RpbmcgYmlvdmVjcy4KKworICogU3BsaXR0aW5nIGJpb3MgaXMgbm93IG11Y2ggc2ltcGxlci4gVGhlIG9sZCBiaW9fc3BsaXQoKSBkaWRuJ3QgZXZlbiB3b3JrIG9uCisgICBiaW9zIHdpdGggbW9yZSB0aGFuIGEgc2luZ2xlIGJ2ZWMhIE5vdywgd2UgY2FuIGVmZmljaWVudGx5IHNwbGl0IGFyYml0cmFyeQorICAgc2l6ZSBiaW9zIC0gYmVjYXVzZSB0aGUgbmV3IGJpbyBjYW4gc2hhcmUgdGhlIG9sZCBiaW8ncyBiaW92ZWMuCisKKyAgIENhcmUgbXVzdCBiZSB0YWtlbiB0byBlbnN1cmUgdGhlIGJpb3ZlYyBpc24ndCBmcmVlZCB3aGlsZSB0aGUgc3BsaXQgYmlvIGlzCisgICBzdGlsbCB1c2luZyBpdCwgaW4gY2FzZSB0aGUgb3JpZ2luYWwgYmlvIGNvbXBsZXRlcyBmaXJzdCwgdGhvdWdoLiBVc2luZworICAgYmlvX2NoYWluKCkgd2hlbiBzcGxpdHRpbmcgYmlvcyBoZWxwcyB3aXRoIHRoaXMuCisKKyAqIFN1Ym1pdHRpbmcgcGFydGlhbGx5IGNvbXBsZXRlZCBiaW9zIGlzIG5vdyBwZXJmZWN0bHkgZmluZSAtIHRoaXMgY29tZXMgdXAKKyAgIG9jY2FzaW9uYWxseSBpbiBzdGFja2luZyBibG9jayBkcml2ZXJzIGFuZCB2YXJpb3VzIGNvZGUgKGUuZy4gbWQgYW5kCisgICBiY2FjaGUpIGhhZCBzb21lIHVnbHkgd29ya2Fyb3VuZHMgZm9yIHRoaXMuCisKKyAgIEl0IHVzZWQgdG8gYmUgdGhlIGNhc2UgdGhhdCBzdWJtaXR0aW5nIGEgcGFydGlhbGx5IGNvbXBsZXRlZCBiaW8gd291bGQgd29yaworICAgZmluZSB0byBfbW9zdF8gZGV2aWNlcywgYnV0IHNpbmNlIGFjY2Vzc2luZyB0aGUgcmF3IGJ2ZWMgYXJyYXkgd2FzIHRoZQorICAgbm9ybSwgbm90IGFsbCBkcml2ZXJzIHdvdWxkIHJlc3BlY3QgYmlfaWR4IGFuZCB0aG9zZSB3b3VsZCBicmVhay4gTm93LAorICAgc2luY2UgYWxsIGRyaXZlcnMgX211c3RfIGdvIHRocm91Z2ggdGhlIGJ2ZWMgaXRlcmF0b3IgLSBhbmQgaGF2ZSBiZWVuCisgICBhdWRpdGVkIHRvIG1ha2Ugc3VyZSB0aGV5IGFyZSAtIHN1Ym1pdHRpbmcgcGFydGlhbGx5IGNvbXBsZXRlZCBiaW9zIGlzCisgICBwZXJmZWN0bHkgZmluZS4KKworT3RoZXIgaW1wbGljYXRpb25zOgorPT09PT09PT09PT09PT09PT09PQorCisgKiBBbG1vc3QgYWxsIHVzYWdlIG9mIGJpX2lkeCBpcyBub3cgaW5jb3JyZWN0IGFuZCBoYXMgYmVlbiByZW1vdmVkOyBpbnN0ZWFkLAorICAgd2hlcmUgcHJldmlvdXNseSB5b3Ugd291bGQgaGF2ZSB1c2VkIGJpX2lkeCB5b3UnZCBub3cgdXNlIGEgYnZlY19pdGVyLAorICAgcHJvYmFibHkgcGFzc2luZyBpdCB0byBvbmUgb2YgdGhlIGhlbHBlciBtYWNyb3MuCisKKyAgIEkuZS4gaW5zdGVhZCBvZiB1c2luZyBiaW9faW92ZWNfaWR4KCkgKG9yIGJpby0+YmlfaW92ZWNbYmlvLT5iaV9pZHhdKSwgeW91CisgICBub3cgdXNlIGJpb19pdGVyX2lvdmVjKCksIHdoaWNoIHRha2VzIGEgYnZlY19pdGVyIGFuZCByZXR1cm5zIGEKKyAgIGxpdGVyYWwgc3RydWN0IGJpb192ZWMgLSBjb25zdHJ1Y3RlZCBvbiB0aGUgZmx5IGZyb20gdGhlIHJhdyBiaW92ZWMgYnV0CisgICB0YWtpbmcgaW50byBhY2NvdW50IGJpX2J2ZWNfZG9uZSAoYW5kIGJpX3NpemUpLgorCisgKiBiaV92Y250IGNhbid0IGJlIHRydXN0ZWQgb3IgcmVsaWVkIHVwb24gYnkgZHJpdmVyIGNvZGUgLSBpLmUuIGFueXRoaW5nIHRoYXQKKyAgIGRvZXNuJ3QgYWN0dWFsbHkgb3duIHRoZSBiaW8uIFRoZSByZWFzb24gaXMgdHdvZm9sZDogZmlyc3RseSwgaXQncyBub3QKKyAgIGFjdHVhbGx5IG5lZWRlZCBmb3IgaXRlcmF0aW5nIG92ZXIgdGhlIGJpbyBhbnltb3JlIC0gd2Ugb25seSB1c2UgYmlfc2l6ZS4KKyAgIFNlY29uZGx5LCB3aGVuIGNsb25pbmcgYSBiaW8gYW5kIHJldXNpbmcgKGEgcG9ydGlvbiBvZikgdGhlIG9yaWdpbmFsIGJpbydzCisgICBiaW92ZWMsIGluIG9yZGVyIHRvIGNhbGN1bGF0ZSBiaV92Y250IGZvciB0aGUgbmV3IGJpbyB3ZSdkIGhhdmUgdG8gaXRlcmF0ZQorICAgb3ZlciBhbGwgdGhlIGJpb3ZlY3MgaW4gdGhlIG5ldyBiaW8gLSB3aGljaCBpcyBzaWxseSBhcyBpdCdzIG5vdCBuZWVkZWQuCisKKyAgIFNvLCBkb24ndCB1c2UgYmlfdmNudCBhbnltb3JlLgorCisgKiBUaGUgY3VycmVudCBpbnRlcmZhY2UgYWxsb3dzIHRoZSBibG9jayBsYXllciB0byBzcGxpdCBiaW9zIGFzIG5lZWRlZCwgc28gd2UKKyAgIGNvdWxkIGVsaW1pbmF0ZSBhIGxvdCBvZiBjb21wbGV4aXR5IHBhcnRpY3VsYXJseSBpbiBzdGFja2VkIGRyaXZlcnMuIENvZGUKKyAgIHRoYXQgY3JlYXRlcyBiaW9zIGNhbiB0aGVuIGNyZWF0ZSB3aGF0ZXZlciBzaXplIGJpb3MgYXJlIGNvbnZlbmllbnQsIGFuZAorICAgbW9yZSBpbXBvcnRhbnRseSBzdGFja2VkIGRyaXZlcnMgZG9uJ3QgaGF2ZSB0byBkZWFsIHdpdGggYm90aCB0aGVpciBvd24gYmlvCisgICBzaXplIGxpbWl0YXRpb25zIGFuZCB0aGUgbGltaXRhdGlvbnMgb2YgdGhlIHVuZGVybHlpbmcgZGV2aWNlcy4gVGh1cworICAgdGhlcmUncyBubyBuZWVkIHRvIGRlZmluZSAtPm1lcmdlX2J2ZWNfZm4oKSBjYWxsYmFja3MgZm9yIGluZGl2aWR1YWwgYmxvY2sKKyAgIGRyaXZlcnMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Jsb2NrL2NhcGFiaWxpdHkudHh0IGIvRG9jdW1lbnRhdGlvbi9ibG9jay9jYXBhYmlsaXR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjE3Mjk0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9ibG9jay9jYXBhYmlsaXR5LnR4dApAQCAtMCwwICsxLDE1IEBACitHZW5lcmljIEJsb2NrIERldmljZSBDYXBhYmlsaXR5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitUaGlzIGZpbGUgZG9jdW1lbnRzIHRoZSBzeXNmcyBmaWxlIGJsb2NrLzxkaXNrPi9jYXBhYmlsaXR5CisKK2NhcGFiaWxpdHkgaXMgYSBoZXggd29yZCBpbmRpY2F0aW5nIHdoaWNoIGNhcGFiaWxpdGllcyBhIHNwZWNpZmljIGRpc2sKK3N1cHBvcnRzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gYml0cyBub3QgbGlzdGVkIGhlcmUsIHNlZQoraW5jbHVkZS9saW51eC9nZW5oZC5oCisKK0NhcGFiaWxpdHkJCQkJVmFsdWUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0dFTkhEX0ZMX01FRElBX0NIQU5HRV9OT1RJRlkJCTQKKwlXaGVuIHRoaXMgYml0IGlzIHNldCwgdGhlIGRpc2sgc3VwcG9ydHMgQXN5bmNocm9ub3VzIE5vdGlmaWNhdGlvbgorCW9mIG1lZGlhIGNoYW5nZSBldmVudHMuICBUaGVzZSBldmVudHMgd2lsbCBiZSBicm9hZGNhc3QgdG8gdXNlcgorCXNwYWNlIHZpYSBrZXJuZWwgdWV2ZW50LgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Jsb2NrL2NmcS1pb3NjaGVkLnR4dCBiL0RvY3VtZW50YXRpb24vYmxvY2svY2ZxLWlvc2NoZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzYmM3MjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrL2NmcS1pb3NjaGVkLnR4dApAQCAtMCwwICsxLDI5MiBAQAorQ0ZRIChDb21wbGV0ZSBGYWlybmVzcyBRdWV1ZWluZykKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIG1haW4gYWltIG9mIENGUSBzY2hlZHVsZXIgaXMgdG8gcHJvdmlkZSBhIGZhaXIgYWxsb2NhdGlvbiBvZiB0aGUgZGlzaworSS9PIGJhbmR3aWR0aCBmb3IgYWxsIHRoZSBwcm9jZXNzZXMgd2hpY2ggcmVxdWVzdHMgYW4gSS9PIG9wZXJhdGlvbi4KKworQ0ZRIG1haW50YWlucyB0aGUgcGVyIHByb2Nlc3MgcXVldWUgZm9yIHRoZSBwcm9jZXNzZXMgd2hpY2ggcmVxdWVzdCBJL08KK29wZXJhdGlvbihzeW5jaHJvbm91cyByZXF1ZXN0cykuIEluIGNhc2Ugb2YgYXN5bmNocm9ub3VzIHJlcXVlc3RzLCBhbGwgdGhlCityZXF1ZXN0cyBmcm9tIGFsbCB0aGUgcHJvY2Vzc2VzIGFyZSBiYXRjaGVkIHRvZ2V0aGVyIGFjY29yZGluZyB0byB0aGVpcgorcHJvY2VzcydzIEkvTyBwcmlvcml0eS4KKworQ0ZRIGlvc2NoZWR1bGVyIHR1bmFibGVzCis9PT09PT09PT09PT09PT09PT09PT09PT0KKworc2xpY2VfaWRsZQorLS0tLS0tLS0tLQorVGhpcyBzcGVjaWZpZXMgaG93IGxvbmcgQ0ZRIHNob3VsZCBpZGxlIGZvciBuZXh0IHJlcXVlc3Qgb24gY2VydGFpbiBjZnEgcXVldWVzCisoZm9yIHNlcXVlbnRpYWwgd29ya2xvYWRzKSBhbmQgc2VydmljZSB0cmVlcyAoZm9yIHJhbmRvbSB3b3JrbG9hZHMpIGJlZm9yZQorcXVldWUgaXMgZXhwaXJlZCBhbmQgQ0ZRIHNlbGVjdHMgbmV4dCBxdWV1ZSB0byBkaXNwYXRjaCBmcm9tLgorCitCeSBkZWZhdWx0IHNsaWNlX2lkbGUgaXMgYSBub24temVybyB2YWx1ZS4gVGhhdCBtZWFucyBieSBkZWZhdWx0IHdlIGlkbGUgb24KK3F1ZXVlcy9zZXJ2aWNlIHRyZWVzLiBUaGlzIGNhbiBiZSB2ZXJ5IGhlbHBmdWwgb24gaGlnaGx5IHNlZWt5IG1lZGlhIGxpa2UKK3NpbmdsZSBzcGluZGxlIFNBVEEvU0FTIGRpc2tzIHdoZXJlIHdlIGNhbiBjdXQgZG93biBvbiBvdmVyYWxsIG51bWJlciBvZgorc2Vla3MgYW5kIHNlZSBpbXByb3ZlZCB0aHJvdWdocHV0LgorCitTZXR0aW5nIHNsaWNlX2lkbGUgdG8gMCB3aWxsIHJlbW92ZSBhbGwgdGhlIGlkbGluZyBvbiBxdWV1ZXMvc2VydmljZSB0cmVlCitsZXZlbCBhbmQgb25lIHNob3VsZCBzZWUgYW4gb3ZlcmFsbCBpbXByb3ZlZCB0aHJvdWdocHV0IG9uIGZhc3RlciBzdG9yYWdlCitkZXZpY2VzIGxpa2UgbXVsdGlwbGUgU0FUQS9TQVMgZGlza3MgaW4gaGFyZHdhcmUgUkFJRCBjb25maWd1cmF0aW9uLiBUaGUgZG93bgorc2lkZSBpcyB0aGF0IGlzb2xhdGlvbiBwcm92aWRlZCBmcm9tIFdSSVRFUyBhbHNvIGdvZXMgZG93biBhbmQgbm90aW9uIG9mCitJTyBwcmlvcml0eSBiZWNvbWVzIHdlYWtlci4KKworU28gZGVwZW5kaW5nIG9uIHN0b3JhZ2UgYW5kIHdvcmtsb2FkLCBpdCBtaWdodCBiZSB1c2VmdWwgdG8gc2V0IHNsaWNlX2lkbGU9MC4KK0luIGdlbmVyYWwgSSB0aGluayBmb3IgU0FUQS9TQVMgZGlza3MgYW5kIHNvZnR3YXJlIFJBSUQgb2YgU0FUQS9TQVMgZGlza3MKK2tlZXBpbmcgc2xpY2VfaWRsZSBlbmFibGVkIHNob3VsZCBiZSB1c2VmdWwuIEZvciBhbnkgY29uZmlndXJhdGlvbnMgd2hlcmUKK3RoZXJlIGFyZSBtdWx0aXBsZSBzcGluZGxlcyBiZWhpbmQgc2luZ2xlIExVTiAoSG9zdCBiYXNlZCBoYXJkd2FyZSBSQUlECitjb250cm9sbGVyIG9yIGZvciBzdG9yYWdlIGFycmF5cyksIHNldHRpbmcgc2xpY2VfaWRsZT0wIG1pZ2h0IGVuZCB1cCBpbiBiZXR0ZXIKK3Rocm91Z2hwdXQgYW5kIGFjY2VwdGFibGUgbGF0ZW5jaWVzLgorCitiYWNrX3NlZWtfbWF4CistLS0tLS0tLS0tLS0tCitUaGlzIHNwZWNpZmllcywgZ2l2ZW4gaW4gS2J5dGVzLCB0aGUgbWF4aW11bSAiZGlzdGFuY2UiIGZvciBiYWNrd2FyZCBzZWVraW5nLgorVGhlIGRpc3RhbmNlIGlzIHRoZSBhbW91bnQgb2Ygc3BhY2UgZnJvbSB0aGUgY3VycmVudCBoZWFkIGxvY2F0aW9uIHRvIHRoZQorc2VjdG9ycyB0aGF0IGFyZSBiYWNrd2FyZCBpbiB0ZXJtcyBvZiBkaXN0YW5jZS4KKworVGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHRoZSBzY2hlZHVsZXIgdG8gYW50aWNpcGF0ZSByZXF1ZXN0cyBpbiB0aGUgImJhY2t3YXJkIgorZGlyZWN0aW9uIGFuZCBjb25zaWRlciB0aGVtIGFzIGJlaW5nIHRoZSAibmV4dCIgaWYgdGhleSBhcmUgd2l0aGluIHRoaXMKK2Rpc3RhbmNlIGZyb20gdGhlIGN1cnJlbnQgaGVhZCBsb2NhdGlvbi4KKworYmFja19zZWVrX3BlbmFsdHkKKy0tLS0tLS0tLS0tLS0tLS0tCitUaGlzIHBhcmFtZXRlciBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlIGNvc3Qgb2YgYmFja3dhcmQgc2Vla2luZy4gSWYgdGhlCitiYWNrd2FyZCBkaXN0YW5jZSBvZiByZXF1ZXN0IGlzIGp1c3QgMS9iYWNrX3NlZWtfcGVuYWx0eSBmcm9tIGEgImZyb250IgorcmVxdWVzdCwgdGhlbiB0aGUgc2Vla2luZyBjb3N0IG9mIHR3byByZXF1ZXN0cyBpcyBjb25zaWRlcmVkIGVxdWl2YWxlbnQuCisKK1NvIHNjaGVkdWxlciB3aWxsIG5vdCBiaWFzIHRvd2FyZCBvbmUgb3IgdGhlIG90aGVyIHJlcXVlc3QgKG90aGVyd2lzZSBzY2hlZHVsZXIKK3dpbGwgYmlhcyB0b3dhcmQgZnJvbnQgcmVxdWVzdCkuIERlZmF1bHQgdmFsdWUgb2YgYmFja19zZWVrX3BlbmFsdHkgaXMgMi4KKworZmlmb19leHBpcmVfYXN5bmMKKy0tLS0tLS0tLS0tLS0tLS0tCitUaGlzIHBhcmFtZXRlciBpcyB1c2VkIHRvIHNldCB0aGUgdGltZW91dCBvZiBhc3luY2hyb25vdXMgcmVxdWVzdHMuIERlZmF1bHQKK3ZhbHVlIG9mIHRoaXMgaXMgMjQ4bXMuCisKK2ZpZm9fZXhwaXJlX3N5bmMKKy0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgcGFyYW1ldGVyIGlzIHVzZWQgdG8gc2V0IHRoZSB0aW1lb3V0IG9mIHN5bmNocm9ub3VzIHJlcXVlc3RzLiBEZWZhdWx0Cit2YWx1ZSBvZiB0aGlzIGlzIDEyNG1zLiBJbiBjYXNlIHRvIGZhdm9yIHN5bmNocm9ub3VzIHJlcXVlc3RzIG92ZXIgYXN5bmNocm9ub3VzCitvbmUsIHRoaXMgdmFsdWUgc2hvdWxkIGJlIGRlY3JlYXNlZCByZWxhdGl2ZSB0byBmaWZvX2V4cGlyZV9hc3luYy4KKworZ3JvdXBfaWRsZQorLS0tLS0tLS0tLS0KK1RoaXMgcGFyYW1ldGVyIGZvcmNlcyBpZGxpbmcgYXQgdGhlIENGUSBncm91cCBsZXZlbCBpbnN0ZWFkIG9mIENGUQorcXVldWUgbGV2ZWwuIFRoaXMgd2FzIGludHJvZHVjZWQgYWZ0ZXIgYSBib3R0bGVuZWNrIHdhcyBvYnNlcnZlZAoraW4gaGlnaGVyIGVuZCBzdG9yYWdlIGR1ZSB0byBpZGxlIG9uIHNlcXVlbnRpYWwgcXVldWUgYW5kIGFsbG93IGRpc3BhdGNoCitmcm9tIGEgc2luZ2xlIHF1ZXVlLiBUaGUgaWRlYSB3aXRoIHRoaXMgcGFyYW1ldGVyIGlzIHRoYXQgaXQgY2FuIGJlIHJ1biB3aXRoCitzbGljZV9pZGxlPTAgYW5kIGdyb3VwX2lkbGU9OCwgc28gdGhhdCBpZGxpbmcgZG9lcyBub3QgaGFwcGVuIG9uIGluZGl2aWR1YWwKK3F1ZXVlcyBpbiB0aGUgZ3JvdXAgYnV0IGhhcHBlbnMgb3ZlcmFsbCBvbiB0aGUgZ3JvdXAgYW5kIHRodXMgc3RpbGwga2VlcHMgdGhlCitJTyBjb250cm9sbGVyIHdvcmtpbmcuCitOb3QgaWRsaW5nIG9uIGluZGl2aWR1YWwgcXVldWVzIGluIHRoZSBncm91cCB3aWxsIGRpc3BhdGNoIHJlcXVlc3RzIGZyb20KK211bHRpcGxlIHF1ZXVlcyBpbiB0aGUgZ3JvdXAgYXQgdGhlIHNhbWUgdGltZSBhbmQgYWNoaWV2ZSBoaWdoZXIgdGhyb3VnaHB1dAorb24gaGlnaGVyIGVuZCBzdG9yYWdlLgorCitEZWZhdWx0IHZhbHVlIGZvciB0aGlzIHBhcmFtZXRlciBpcyA4bXMuCisKK2xhdGVuY3kKKy0tLS0tLS0KK1RoaXMgcGFyYW1ldGVyIGlzIHVzZWQgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIGxhdGVuY3kgbW9kZSBvZiB0aGUgQ0ZRCitzY2hlZHVsZXIuIElmIGxhdGVuY3kgbW9kZSAoY2FsbGVkIGxvd19sYXRlbmN5KSBpcyBlbmFibGVkLCBDRlEgdHJpZXMKK3RvIHJlY29tcHV0ZSB0aGUgc2xpY2UgdGltZSBmb3IgZWFjaCBwcm9jZXNzIGJhc2VkIG9uIHRoZSB0YXJnZXRfbGF0ZW5jeSBzZXQKK2ZvciB0aGUgc3lzdGVtLiBUaGlzIGZhdm9ycyBmYWlybmVzcyBvdmVyIHRocm91Z2hwdXQuIERpc2FibGluZyBsb3cKK2xhdGVuY3kgKHNldHRpbmcgaXQgdG8gMCkgaWdub3JlcyB0YXJnZXQgbGF0ZW5jeSwgYWxsb3dpbmcgZWFjaCBwcm9jZXNzIGluIHRoZQorc3lzdGVtIHRvIGdldCBhIGZ1bGwgdGltZSBzbGljZS4KKworQnkgZGVmYXVsdCBsb3cgbGF0ZW5jeSBtb2RlIGlzIGVuYWJsZWQuCisKK3RhcmdldF9sYXRlbmN5CistLS0tLS0tLS0tLS0tLQorVGhpcyBwYXJhbWV0ZXIgaXMgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHRpbWUgc2xpY2UgZm9yIGEgcHJvY2VzcyBpZiBjZnEncworbGF0ZW5jeSBtb2RlIGlzIGVuYWJsZWQuIEl0IHdpbGwgZW5zdXJlIHRoYXQgc3luYyByZXF1ZXN0cyBoYXZlIGFuIGVzdGltYXRlZAorbGF0ZW5jeS4gQnV0IGlmIHNlcXVlbnRpYWwgd29ya2xvYWQgaXMgaGlnaGVyKGUuZy4gc2VxdWVudGlhbCByZWFkKSwKK3RoZW4gdG8gbWVldCB0aGUgbGF0ZW5jeSBjb25zdHJhaW50cywgdGhyb3VnaHB1dCBtYXkgZGVjcmVhc2UgYmVjYXVzZSBvZiBsZXNzCit0aW1lIGZvciBlYWNoIHByb2Nlc3MgdG8gaXNzdWUgSS9PIHJlcXVlc3QgYmVmb3JlIHRoZSBjZnEgcXVldWUgaXMgc3dpdGNoZWQuCisKK1Rob3VnaCB0aGlzIGNhbiBiZSBvdmVyY29tZSBieSBkaXNhYmxpbmcgdGhlIGxhdGVuY3lfbW9kZSwgaXQgbWF5IGluY3JlYXNlCit0aGUgcmVhZCBsYXRlbmN5IGZvciBzb21lIGFwcGxpY2F0aW9ucy4gVGhpcyBwYXJhbWV0ZXIgYWxsb3dzIGZvciBjaGFuZ2luZwordGFyZ2V0X2xhdGVuY3kgdGhyb3VnaCB0aGUgc3lzZnMgaW50ZXJmYWNlIHdoaWNoIGNhbiBwcm92aWRlIHRoZSBiYWxhbmNlZAordGhyb3VnaHB1dCBhbmQgcmVhZCBsYXRlbmN5LgorCitEZWZhdWx0IHZhbHVlIGZvciB0YXJnZXRfbGF0ZW5jeSBpcyAzMDBtcy4KKworc2xpY2VfYXN5bmMKKy0tLS0tLS0tLS0tCitUaGlzIHBhcmFtZXRlciBpcyBzYW1lIGFzIG9mIHNsaWNlX3N5bmMgYnV0IGZvciBhc3luY2hyb25vdXMgcXVldWUuIFRoZQorZGVmYXVsdCB2YWx1ZSBpcyA0MG1zLgorCitzbGljZV9hc3luY19ycQorLS0tLS0tLS0tLS0tLS0KK1RoaXMgcGFyYW1ldGVyIGlzIHVzZWQgdG8gbGltaXQgdGhlIGRpc3BhdGNoaW5nIG9mIGFzeW5jaHJvbm91cyByZXF1ZXN0IHRvCitkZXZpY2UgcmVxdWVzdCBxdWV1ZSBpbiBxdWV1ZSdzIHNsaWNlIHRpbWUuIFRoZSBtYXhpbXVtIG51bWJlciBvZiByZXF1ZXN0IHRoYXQKK2FyZSBhbGxvd2VkIHRvIGJlIGRpc3BhdGNoZWQgYWxzbyBkZXBlbmRzIHVwb24gdGhlIGlvIHByaW9yaXR5LiBEZWZhdWx0IHZhbHVlCitmb3IgdGhpcyBpcyAyLgorCitzbGljZV9zeW5jCistLS0tLS0tLS0tCitXaGVuIGEgcXVldWUgaXMgc2VsZWN0ZWQgZm9yIGV4ZWN1dGlvbiwgdGhlIHF1ZXVlcyBJTyByZXF1ZXN0cyBhcmUgb25seQorZXhlY3V0ZWQgZm9yIGEgY2VydGFpbiBhbW91bnQgb2YgdGltZSh0aW1lX3NsaWNlKSBiZWZvcmUgc3dpdGNoaW5nIHRvIGFub3RoZXIKK3F1ZXVlLiBUaGlzIHBhcmFtZXRlciBpcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgdGltZSBzbGljZSBvZiBzeW5jaHJvbm91cworcXVldWUuCisKK3RpbWVfc2xpY2UgaXMgY29tcHV0ZWQgdXNpbmcgdGhlIGJlbG93IGVxdWF0aW9uOi0KK3RpbWVfc2xpY2UgPSBzbGljZV9zeW5jICsgKHNsaWNlX3N5bmMvNSAqICg0IC0gcHJpbykpLiBUbyBpbmNyZWFzZSB0aGUKK3RpbWVfc2xpY2Ugb2Ygc3luY2hyb25vdXMgcXVldWUsIGluY3JlYXNlIHRoZSB2YWx1ZSBvZiBzbGljZV9zeW5jLiBEZWZhdWx0Cit2YWx1ZSBpcyAxMDBtcy4KKworcXVhbnR1bQorLS0tLS0tLQorVGhpcyBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiByZXF1ZXN0IGRpc3BhdGNoZWQgdG8gdGhlIGRldmljZSBxdWV1ZS4gSW4gYQorcXVldWUncyB0aW1lIHNsaWNlLCBhIHJlcXVlc3Qgd2lsbCBub3QgYmUgZGlzcGF0Y2hlZCBpZiB0aGUgbnVtYmVyIG9mIHJlcXVlc3QKK2luIHRoZSBkZXZpY2UgZXhjZWVkcyB0aGlzIHBhcmFtZXRlci4gVGhpcyBwYXJhbWV0ZXIgaXMgdXNlZCBmb3Igc3luY2hyb25vdXMKK3JlcXVlc3QuCisKK0luIGNhc2Ugb2Ygc3RvcmFnZSB3aXRoIHNldmVyYWwgZGlzaywgdGhpcyBzZXR0aW5nIGNhbiBsaW1pdCB0aGUgcGFyYWxsZWwKK3Byb2Nlc3Npbmcgb2YgcmVxdWVzdC4gVGhlcmVmb3JlLCBpbmNyZWFzaW5nIHRoZSB2YWx1ZSBjYW4gaW1wcm92ZSB0aGUKK3BlcmZvcm1hbmNlIGFsdGhvdWdoIHRoaXMgY2FuIGNhdXNlIHRoZSBsYXRlbmN5IG9mIHNvbWUgSS9PIHRvIGluY3JlYXNlIGR1ZQordG8gbW9yZSBudW1iZXIgb2YgcmVxdWVzdHMuCisKK0NGUSBHcm91cCBzY2hlZHVsaW5nCis9PT09PT09PT09PT09PT09PT09PQorCitDRlEgc3VwcG9ydHMgYmxraW8gY2dyb3VwIGFuZCBoYXMgImJsa2lvLiIgcHJlZml4ZWQgZmlsZXMgaW4gZWFjaAorYmxraW8gY2dyb3VwIGRpcmVjdG9yeS4gSXQgaXMgd2VpZ2h0LWJhc2VkIGFuZCB0aGVyZSBhcmUgZm91ciBrbm9icworZm9yIGNvbmZpZ3VyYXRpb24gLSB3ZWlnaHRbX2RldmljZV0gYW5kIGxlYWZfd2VpZ2h0W19kZXZpY2VdLgorSW50ZXJuYWwgY2dyb3VwIG5vZGVzICh0aGUgb25lcyB3aXRoIGNoaWxkcmVuKSBjYW4gYWxzbyBoYXZlIHRhc2tzIGluCit0aGVtLCBzbyB0aGUgZm9ybWVyIHR3byBjb25maWd1cmUgaG93IG11Y2ggcHJvcG9ydGlvbiB0aGUgY2dyb3VwIGFzIGEKK3dob2xlIGlzIGVudGl0bGVkIHRvIGF0IGl0cyBwYXJlbnQncyBsZXZlbCB3aGlsZSB0aGUgbGF0dGVyIHR3bworY29uZmlndXJlIGhvdyBtdWNoIHByb3BvcnRpb24gdGhlIHRhc2tzIGluIHRoZSBjZ3JvdXAgaGF2ZSBjb21wYXJlZCB0bworaXRzIGRpcmVjdCBjaGlsZHJlbi4KKworQW5vdGhlciB3YXkgdG8gdGhpbmsgYWJvdXQgaXQgaXMgYXNzdW1pbmcgdGhhdCBlYWNoIGludGVybmFsIG5vZGUgaGFzCithbiBpbXBsaWNpdCBsZWFmIGNoaWxkIG5vZGUgd2hpY2ggaG9zdHMgYWxsIHRoZSB0YXNrcyB3aG9zZSB3ZWlnaHQgaXMKK2NvbmZpZ3VyZWQgYnkgbGVhZl93ZWlnaHRbX2RldmljZV0uIExldCdzIGFzc3VtZSBhIGJsa2lvIGhpZXJhcmNoeQorY29tcG9zZWQgb2YgZml2ZSBjZ3JvdXBzIC0gcm9vdCwgQSwgQiwgQUEgYW5kIEFCIC0gd2l0aCB0aGUgZm9sbG93aW5nCit3ZWlnaHRzIHdoZXJlIHRoZSBuYW1lcyByZXByZXNlbnQgdGhlIGhpZXJhcmNoeS4KKworICAgICAgICB3ZWlnaHQgbGVhZl93ZWlnaHQKKyByb290IDogIDEyNSAgICAxMjUKKyBBICAgIDogIDUwMCAgICA3NTAKKyBCICAgIDogIDI1MCAgICA1MDAKKyBBQSAgIDogIDUwMCAgICA1MDAKKyBBQiAgIDogMTAwMCAgICA1MDAKKworcm9vdCBuZXZlciBoYXMgYSBwYXJlbnQgbWFraW5nIGl0cyB3ZWlnaHQgaXMgbWVhbmluZ2xlc3MuIEZvciBiYWNrd2FyZAorY29tcGF0aWJpbGl0eSwgd2VpZ2h0IGlzIGFsd2F5cyBrZXB0IGluIHN5bmMgd2l0aCBsZWFmX3dlaWdodC4gQiwgQUEKK2FuZCBBQiBoYXZlIG5vIGNoaWxkIGFuZCB0aHVzIGl0cyB0YXNrcyBoYXZlIG5vIGNoaWxkcmVuIGNncm91cCB0bworY29tcGV0ZSB3aXRoLiBUaGV5IGFsd2F5cyBnZXQgMTAwJSBvZiB3aGF0IHRoZSBjZ3JvdXAgd29uIGF0IHRoZQorcGFyZW50IGxldmVsLiBDb25zaWRlcmluZyBvbmx5IHRoZSB3ZWlnaHRzIHdoaWNoIG1hdHRlciwgdGhlIGhpZXJhcmNoeQorbG9va3MgbGlrZSB0aGUgZm9sbG93aW5nLgorCisgICAgICAgICAgcm9vdAorICAgICAgIC8gICAgfCAgIFwKKyAgICAgIEEgICAgIEIgICAgbGVhZgorICAgICA1MDAgICAyNTAgICAxMjUKKyAgIC8gIHwgIFwKKyAgQUEgIEFCICBsZWFmCisgNTAwIDEwMDAgNzUwCisKK0lmIGFsbCBjZ3JvdXBzIGhhdmUgYWN0aXZlIElPcyBhbmQgY29tcGV0aW5nIHdpdGggZWFjaCBvdGhlciwgZGlzawordGltZSB3aWxsIGJlIGRpc3RyaWJ1dGVkIGxpa2UgdGhlIGZvbGxvd2luZy4KKworRGlzdHJpYnV0aW9uIGJlbG93IHJvb3QuIFRoZSB0b3RhbCBhY3RpdmUgd2VpZ2h0IGF0IHRoaXMgbGV2ZWwgaXMKK0E6NTAwICsgQjoyNTAgKyBDOjEyNSA9IDg3NS4KKworIHJvb3QtbGVhZiA6ICAgMTI1IC8gIDg3NSAgICAgID1+IDE0JQorIEEgICAgICAgICA6ICAgNTAwIC8gIDg3NSAgICAgID1+IDU3JQorIEIoLWxlYWYpICA6ICAgMjUwIC8gIDg3NSAgICAgID1+IDI4JQorCitBIGhhcyBjaGlsZHJlbiBhbmQgZnVydGhlciBkaXN0cmlidXRlcyBpdHMgNTclIGFtb25nIHRoZSBjaGlsZHJlbiBhbmQKK3RoZSBpbXBsaWNpdCBsZWFmIG5vZGUuIFRoZSB0b3RhbCBhY3RpdmUgd2VpZ2h0IGF0IHRoaXMgbGV2ZWwgaXMKK0FBOjUwMCArIEFCOjEwMDAgKyBBLWxlYWY6NzUwID0gMjI1MC4KKworIEEtbGVhZiAgICA6ICggNzUwIC8gMjI1MCkgKiBBID1+IDE5JQorIEFBKC1sZWFmKSA6ICggNTAwIC8gMjI1MCkgKiBBID1+IDEyJQorIEFCKC1sZWFmKSA6ICgxMDAwIC8gMjI1MCkgKiBBID1+IDI1JQorCitDRlEgSU9QUyBNb2RlIGZvciBncm91cCBzY2hlZHVsaW5nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQmFzaWMgQ0ZRIGRlc2lnbiBpcyB0byBwcm92aWRlIHByaW9yaXR5IGJhc2VkIHRpbWUgc2xpY2VzLiBIaWdoZXIgcHJpb3JpdHkKK3Byb2Nlc3MgZ2V0cyBiaWdnZXIgdGltZSBzbGljZSBhbmQgbG93ZXIgcHJpb3JpdHkgcHJvY2VzcyBnZXRzIHNtYWxsZXIgdGltZQorc2xpY2UuIE1lYXN1cmluZyB0aW1lIGJlY29tZXMgaGFyZGVyIGlmIHN0b3JhZ2UgaXMgZmFzdCBhbmQgc3VwcG9ydHMgTkNRIGFuZAoraXQgd291bGQgYmUgYmV0dGVyIHRvIGRpc3BhdGNoIG11bHRpcGxlIHJlcXVlc3RzIGZyb20gbXVsdGlwbGUgY2ZxIHF1ZXVlcyBpbgorcmVxdWVzdCBxdWV1ZSBhdCBhIHRpbWUuIEluIHN1Y2ggc2NlbmFyaW8sIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBtZWFzdXJlIHRpbWUKK2NvbnN1bWVkIGJ5IHNpbmdsZSBxdWV1ZSBhY2N1cmF0ZWx5LgorCitXaGF0IGlzIHBvc3NpYmxlIHRob3VnaCBpcyB0byBtZWFzdXJlIG51bWJlciBvZiByZXF1ZXN0cyBkaXNwYXRjaGVkIGZyb20gYQorc2luZ2xlIHF1ZXVlIGFuZCBhbHNvIGFsbG93IGRpc3BhdGNoIGZyb20gbXVsdGlwbGUgY2ZxIHF1ZXVlIGF0IHRoZSBzYW1lIHRpbWUuCitUaGlzIGVmZmVjdGl2ZWx5IGJlY29tZXMgdGhlIGZhaXJuZXNzIGluIHRlcm1zIG9mIElPUFMgKElPIG9wZXJhdGlvbnMgcGVyCitzZWNvbmQpLgorCitJZiBvbmUgc2V0cyBzbGljZV9pZGxlPTAgYW5kIGlmIHN0b3JhZ2Ugc3VwcG9ydHMgTkNRLCBDRlEgaW50ZXJuYWxseSBzd2l0Y2hlcwordG8gSU9QUyBtb2RlIGFuZCBzdGFydHMgcHJvdmlkaW5nIGZhaXJuZXNzIGluIHRlcm1zIG9mIG51bWJlciBvZiByZXF1ZXN0cworZGlzcGF0Y2hlZC4gTm90ZSB0aGF0IHRoaXMgbW9kZSBzd2l0Y2hpbmcgdGFrZXMgZWZmZWN0IG9ubHkgZm9yIGdyb3VwCitzY2hlZHVsaW5nLiBGb3Igbm9uLWNncm91cCB1c2VycyBub3RoaW5nIHNob3VsZCBjaGFuZ2UuCisKK0NGUSBJTyBzY2hlZHVsZXIgSWRsaW5nIFRoZW9yeQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorSWRsaW5nIG9uIGEgcXVldWUgaXMgcHJpbWFyaWx5IGFib3V0IHdhaXRpbmcgZm9yIHRoZSBuZXh0IHJlcXVlc3QgdG8gY29tZQorb24gc2FtZSBxdWV1ZSBhZnRlciBjb21wbGV0aW9uIG9mIGEgcmVxdWVzdC4gSW4gdGhpcyBwcm9jZXNzIENGUSB3aWxsIG5vdAorZGlzcGF0Y2ggcmVxdWVzdHMgZnJvbSBvdGhlciBjZnEgcXVldWVzIGV2ZW4gaWYgcmVxdWVzdHMgYXJlIHBlbmRpbmcgdGhlcmUuCisKK1RoZSByYXRpb25hbGUgYmVoaW5kIGlkbGluZyBpcyB0aGF0IGl0IGNhbiBjdXQgZG93biBvbiBudW1iZXIgb2Ygc2Vla3MKK29uIHJvdGF0aW9uYWwgbWVkaWEuIEZvciBleGFtcGxlLCBpZiBhIHByb2Nlc3MgaXMgZG9pbmcgZGVwZW5kZW50CitzZXF1ZW50aWFsIHJlYWRzIChuZXh0IHJlYWQgd2lsbCBjb21lIG9uIG9ubHkgYWZ0ZXIgY29tcGxldGlvbiBvZiBwcmV2aW91cworb25lKSwgdGhlbiBub3QgZGlzcGF0Y2hpbmcgcmVxdWVzdCBmcm9tIG90aGVyIHF1ZXVlIHNob3VsZCBoZWxwIGFzIHdlCitkaWQgbm90IG1vdmUgdGhlIGRpc2sgaGVhZCBhbmQga2VwdCBvbiBkaXNwYXRjaGluZyBzZXF1ZW50aWFsIElPIGZyb20KK29uZSBxdWV1ZS4KKworQ0ZRIGhhcyBmb2xsb3dpbmcgc2VydmljZSB0cmVlcyBhbmQgdmFyaW91cyBxdWV1ZXMgYXJlIHB1dCBvbiB0aGVzZSB0cmVlcy4KKworCXN5bmMtaWRsZQlzeW5jLW5vaWRsZQlhc3luYworCitBbGwgY2ZxIHF1ZXVlcyBkb2luZyBzeW5jaHJvbm91cyBzZXF1ZW50aWFsIElPIGdvIG9uIHRvIHN5bmMtaWRsZSB0cmVlLgorT24gdGhpcyB0cmVlIHdlIGlkbGUgb24gZWFjaCBxdWV1ZSBpbmRpdmlkdWFsbHkuCisKK0FsbCBzeW5jaHJvbm91cyBub24tc2VxdWVudGlhbCBxdWV1ZXMgZ28gb24gc3luYy1ub2lkbGUgdHJlZS4gQWxzbyBhbnkKK3JlcXVlc3Qgd2hpY2ggYXJlIG1hcmtlZCB3aXRoIFJFUV9OT0lETEUgZ28gb24gdGhpcyBzZXJ2aWNlIHRyZWUuIE9uIHRoaXMKK3RyZWUgd2UgZG8gbm90IGlkbGUgb24gaW5kaXZpZHVhbCBxdWV1ZXMgaW5zdGVhZCBpZGxlIG9uIHRoZSB3aG9sZSBncm91cAorb2YgcXVldWVzIG9yIHRoZSB0cmVlLiBTbyBpZiB0aGVyZSBhcmUgNCBxdWV1ZXMgd2FpdGluZyBmb3IgSU8gdG8gZGlzcGF0Y2gKK3dlIHdpbGwgaWRsZSBvbmx5IG9uY2UgbGFzdCBxdWV1ZSBoYXMgZGlzcGF0Y2hlZCB0aGUgSU8gYW5kIHRoZXJlIGlzCitubyBtb3JlIElPIG9uIHRoaXMgc2VydmljZSB0cmVlLgorCitBbGwgYXN5bmMgd3JpdGVzIGdvIG9uIGFzeW5jIHNlcnZpY2UgdHJlZS4gVGhlcmUgaXMgbm8gaWRsaW5nIG9uIGFzeW5jCitxdWV1ZXMuCisKK0NGUSBoYXMgc29tZSBvcHRpbWl6YXRpb25zIGZvciBTU0RzIGFuZCBpZiBpdCBkZXRlY3RzIGEgbm9uLXJvdGF0aW9uYWwKK21lZGlhIHdoaWNoIGNhbiBzdXBwb3J0IGhpZ2hlciBxdWV1ZSBkZXB0aCAobXVsdGlwbGUgcmVxdWVzdHMgYXQgaW4KK2ZsaWdodCBhdCBhIHRpbWUpLCB0aGVuIGl0IGN1dHMgZG93biBvbiBpZGxpbmcgb2YgaW5kaXZpZHVhbCBxdWV1ZXMgYW5kCithbGwgdGhlIHF1ZXVlcyBtb3ZlIHRvIHN5bmMtbm9pZGxlIHRyZWUgYW5kIG9ubHkgdHJlZSBpZGxlIHJlbWFpbnMuIFRoaXMKK3RyZWUgaWRsaW5nIHByb3ZpZGVzIGlzb2xhdGlvbiB3aXRoIGJ1ZmZlcmVkIHdyaXRlIHF1ZXVlcyBvbiBhc3luYyB0cmVlLgorCitGQVEKKz09PQorUTEuIFdoeSB0byBpZGxlIGF0IGFsbCBvbiBxdWV1ZXMgbWFya2VkIHdpdGggUkVRX05PSURMRS4KKworQTEuIFdlIG9ubHkgZG8gdHJlZSBpZGxlIChhbGwgcXVldWVzIG9uIHN5bmMtbm9pZGxlIHRyZWUpIG9uIHF1ZXVlcyBtYXJrZWQKKyAgICB3aXRoIFJFUV9OT0lETEUuIFRoaXMgaGVscHMgaW4gcHJvdmlkaW5nIGlzb2xhdGlvbiB3aXRoIGFsbCB0aGUgc3luYy1pZGxlCisgICAgcXVldWVzLiBPdGhlcndpc2UgaW4gcHJlc2VuY2Ugb2YgbWFueSBzZXF1ZW50aWFsIHJlYWRlcnMsIG90aGVyCisgICAgc3luY2hyb25vdXMgSU8gbWlnaHQgbm90IGdldCBmYWlyIHNoYXJlIG9mIGRpc2suCisKKyAgICBGb3IgZXhhbXBsZSwgaWYgdGhlcmUgYXJlIDEwIHNlcXVlbnRpYWwgcmVhZGVycyBkb2luZyBJTyBhbmQgdGhleSBnZXQKKyAgICAxMDBtcyBlYWNoLiBJZiBhIFJFUV9OT0lETEUgcmVxdWVzdCBjb21lcyBpbiwgaXQgd2lsbCBiZSBzY2hlZHVsZWQKKyAgICByb3VnaGx5IGFmdGVyIDEgc2Vjb25kLiBJZiBhZnRlciBjb21wbGV0aW9uIG9mIFJFUV9OT0lETEUgcmVxdWVzdCB3ZQorICAgIGRvIG5vdCBpZGxlLCBhbmQgYWZ0ZXIgYSBjb3VwbGUgb2YgbWlsbGkgc2Vjb25kcyBhIGFub3RoZXIgUkVRX05PSURMRQorICAgIHJlcXVlc3QgY29tZXMgaW4sIGFnYWluIGl0IHdpbGwgYmUgc2NoZWR1bGVkIGFmdGVyIDFzZWNvbmQuIFJlcGVhdCBpdAorICAgIGFuZCBub3RpY2UgaG93IGEgd29ya2xvYWQgY2FuIGxvc2UgaXRzIGRpc2sgc2hhcmUgYW5kIHN1ZmZlciBkdWUgdG8KKyAgICBtdWx0aXBsZSBzZXF1ZW50aWFsIHJlYWRlcnMuCisKKyAgICBmc3luYyBjYW4gZ2VuZXJhdGUgZGVwZW5kZW50IElPIHdoZXJlIGJ1bmNoIG9mIGRhdGEgaXMgd3JpdHRlbiBpbiB0aGUKKyAgICBjb250ZXh0IG9mIGZzeW5jLCBhbmQgbGF0ZXIgc29tZSBqb3VybmFsaW5nIGRhdGEgaXMgd3JpdHRlbi4gSm91cm5hbGluZworICAgIGRhdGEgY29tZXMgaW4gb25seSBhZnRlciBmc3luYyBoYXMgZmluaXNoZWQgaXRzIElPIChhdGxlYXN0IGZvciBleHQ0CisgICAgdGhhdCBzZWVtZWQgdG8gYmUgdGhlIGNhc2UpLiBOb3cgaWYgb25lIGRlY2lkZXMgbm90IHRvIGlkbGUgb24gZnN5bmMKKyAgICB0aHJlYWQgZHVlIHRvIFJFUV9OT0lETEUsIHRoZW4gbmV4dCBqb3VybmFsaW5nIHdyaXRlIHdpbGwgbm90IGdldAorICAgIHNjaGVkdWxlZCBmb3IgYW5vdGhlciBzZWNvbmQuIEEgcHJvY2VzcyBkb2luZyBzbWFsbCBmc3luYywgd2lsbCBzdWZmZXIKKyAgICBiYWRseSBpbiBwcmVzZW5jZSBvZiBtdWx0aXBsZSBzZXF1ZW50aWFsIHJlYWRlcnMuCisKKyAgICBIZW5jZSBkb2luZyB0cmVlIGlkbGluZyBvbiB0aHJlYWRzIHVzaW5nIFJFUV9OT0lETEUgZmxhZyBvbiByZXF1ZXN0cworICAgIHByb3ZpZGVzIGlzb2xhdGlvbiBmcm9tIG11bHRpcGxlIHNlcXVlbnRpYWwgcmVhZGVycyBhbmQgYXQgdGhlIHNhbWUKKyAgICB0aW1lIHdlIGRvIG5vdCBpZGxlIG9uIGluZGl2aWR1YWwgdGhyZWFkcy4KKworUTIuIFdoZW4gdG8gc3BlY2lmeSBSRVFfTk9JRExFCitBMi4gSSB3b3VsZCB0aGluayB3aGVuZXZlciBvbmUgaXMgZG9pbmcgc3luY2hyb25vdXMgd3JpdGUgYW5kIG5vdCBleHBlY3RpbmcKKyAgICBtb3JlIHdyaXRlcyB0byBiZSBkaXNwYXRjaGVkIGZyb20gc2FtZSBjb250ZXh0IHNvb24sIHNob3VsZCBiZSBhYmxlCisgICAgdG8gc3BlY2lmeSBSRVFfTk9JRExFIG9uIHdyaXRlcyBhbmQgdGhhdCBwcm9iYWJseSBzaG91bGQgd29yayB3ZWxsIGZvcgorICAgIG1vc3Qgb2YgdGhlIGNhc2VzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibG9jay9jbWRsaW5lLXBhcnRpdGlvbi50eHQgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrL2NtZGxpbmUtcGFydGl0aW9uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjViOWY2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9ibG9jay9jbWRsaW5lLXBhcnRpdGlvbi50eHQKQEAgLTAsMCArMSwzOSBAQAorRW1iZWRkZWQgZGV2aWNlIGNvbW1hbmQgbGluZSBwYXJ0aXRpb24gcGFyc2luZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnQgZm9yIHJlYWRpbmcgdGhlIGJsb2NrIGRldmljZSBwYXJ0aXRpb24gdGFibGUgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgorSXQgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGZpeGVkIGJsb2NrIChlTU1DKSBlbWJlZGRlZCBkZXZpY2VzLgorSXQgaGFzIG5vIE1CUiwgc28gc2F2ZXMgc3RvcmFnZSBzcGFjZS4gQm9vdGxvYWRlciBjYW4gYmUgZWFzaWx5IGFjY2Vzc2VkCitieSBhYnNvbHV0ZSBhZGRyZXNzIG9mIGRhdGEgb24gdGhlIGJsb2NrIGRldmljZS4KK1VzZXJzIGNhbiBlYXNpbHkgY2hhbmdlIHRoZSBwYXJ0aXRpb24uCisKK1RoZSBmb3JtYXQgZm9yIHRoZSBjb21tYW5kIGxpbmUgaXMganVzdCBsaWtlIG10ZHBhcnRzOgorCitibGtkZXZwYXJ0cz08YmxrZGV2LWRlZj5bOzxibGtkZXYtZGVmPl0KKyAgPGJsa2Rldi1kZWY+IDo9IDxibGtkZXYtaWQ+OjxwYXJ0ZGVmPlssPHBhcnRkZWY+XQorICAgIDxwYXJ0ZGVmPiA6PSA8c2l6ZT5bQDxvZmZzZXQ+XShwYXJ0LW5hbWUpCisKKzxibGtkZXYtaWQ+CisgICAgYmxvY2sgZGV2aWNlIGRpc2sgbmFtZSwgZW1iZWRkZWQgZGV2aWNlIHVzZWQgZml4ZWQgYmxvY2sgZGV2aWNlLAorICAgIGl0J3MgZGlzayBuYW1lIGFsc28gZml4ZWQuIHN1Y2ggYXM6IG1tY2JsazAsIG1tY2JsazEsIG1tY2JsazBib290MC4KKworPHNpemU+CisgICAgcGFydGl0aW9uIHNpemUsIGluIGJ5dGVzLCBzdWNoIGFzOiA1MTIsIDFtLCAxRy4KKworPG9mZnNldD4KKyAgICBwYXJ0aXRpb24gc3RhcnQgYWRkcmVzcywgaW4gYnl0ZXMuCisKKyhwYXJ0LW5hbWUpCisgICAgcGFydGl0aW9uIG5hbWUsIGtlcm5lbCBzZW5kIHVldmVudCB3aXRoICJQQVJUTkFNRSIuIGFwcGxpY2F0aW9uIGNhbiBjcmVhdGUKKyAgICBhIGxpbmsgdG8gYmxvY2sgZGV2aWNlIHBhcnRpdGlvbiB3aXRoIHRoZSBuYW1lICJQQVJUTkFNRSIuCisgICAgdXNlciBzcGFjZSBhcHBsaWNhdGlvbiBjYW4gYWNjZXNzIHBhcnRpdGlvbiBieSBwYXJ0aXRpb24gbmFtZS4KKworRXhhbXBsZToKKyAgICBlTU1DIGRpc2sgbmFtZSBpcyAibW1jYmxrMCIgYW5kICJtbWNibGswYm9vdDAiCisKKyAgYm9vdGFyZ3M6CisgICAgJ2Jsa2RldnBhcnRzPW1tY2JsazA6MUcoZGF0YTApLDFHKGRhdGExKSwtO21tY2JsazBib290MDoxbShib290KSwtKGtlcm5lbCknCisKKyAgZG1lc2c6CisgICAgbW1jYmxrMDogcDEoZGF0YTApIHAyKGRhdGExKSBwMygpCisgICAgbW1jYmxrMGJvb3QwOiBwMShib290KSBwMihrZXJuZWwpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Jsb2NrL2RhdGEtaW50ZWdyaXR5LnR4dCBiL0RvY3VtZW50YXRpb24vYmxvY2svZGF0YS1pbnRlZ3JpdHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1NmVjOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrL2RhdGEtaW50ZWdyaXR5LnR4dApAQCAtMCwwICsxLDI4MyBAQAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMS4gSU5UUk9EVUNUSU9OCisKK01vZGVybiBmaWxlc3lzdGVtcyBmZWF0dXJlIGNoZWNrc3VtbWluZyBvZiBkYXRhIGFuZCBtZXRhZGF0YSB0bworcHJvdGVjdCBhZ2FpbnN0IGRhdGEgY29ycnVwdGlvbi4gIEhvd2V2ZXIsIHRoZSBkZXRlY3Rpb24gb2YgdGhlCitjb3JydXB0aW9uIGlzIGRvbmUgYXQgcmVhZCB0aW1lIHdoaWNoIGNvdWxkIHBvdGVudGlhbGx5IGJlIG1vbnRocworYWZ0ZXIgdGhlIGRhdGEgd2FzIHdyaXR0ZW4uICBBdCB0aGF0IHBvaW50IHRoZSBvcmlnaW5hbCBkYXRhIHRoYXQgdGhlCithcHBsaWNhdGlvbiB0cmllZCB0byB3cml0ZSBpcyBtb3N0IGxpa2VseSBsb3N0LgorCitUaGUgc29sdXRpb24gaXMgdG8gZW5zdXJlIHRoYXQgdGhlIGRpc2sgaXMgYWN0dWFsbHkgc3RvcmluZyB3aGF0IHRoZQorYXBwbGljYXRpb24gbWVhbnQgaXQgdG8uICBSZWNlbnQgYWRkaXRpb25zIHRvIGJvdGggdGhlIFNDU0kgZmFtaWx5Citwcm90b2NvbHMgKFNCQyBEYXRhIEludGVncml0eSBGaWVsZCwgU0NDIHByb3RlY3Rpb24gcHJvcG9zYWwpIGFzIHdlbGwKK2FzIFNBVEEvVDEzIChFeHRlcm5hbCBQYXRoIFByb3RlY3Rpb24pIHRyeSB0byByZW1lZHkgdGhpcyBieSBhZGRpbmcKK3N1cHBvcnQgZm9yIGFwcGVuZGluZyBpbnRlZ3JpdHkgbWV0YWRhdGEgdG8gYW4gSS9PLiAgVGhlIGludGVncml0eQorbWV0YWRhdGEgKG9yIHByb3RlY3Rpb24gaW5mb3JtYXRpb24gaW4gU0NTSSB0ZXJtaW5vbG9neSkgaW5jbHVkZXMgYQorY2hlY2tzdW0gZm9yIGVhY2ggc2VjdG9yIGFzIHdlbGwgYXMgYW4gaW5jcmVtZW50aW5nIGNvdW50ZXIgdGhhdAorZW5zdXJlcyB0aGUgaW5kaXZpZHVhbCBzZWN0b3JzIGFyZSB3cml0dGVuIGluIHRoZSByaWdodCBvcmRlci4gIEFuZAorZm9yIHNvbWUgcHJvdGVjdGlvbiBzY2hlbWVzIGFsc28gdGhhdCB0aGUgSS9PIGlzIHdyaXR0ZW4gdG8gdGhlIHJpZ2h0CitwbGFjZSBvbiBkaXNrLgorCitDdXJyZW50IHN0b3JhZ2UgY29udHJvbGxlcnMgYW5kIGRldmljZXMgaW1wbGVtZW50IHZhcmlvdXMgcHJvdGVjdGl2ZQorbWVhc3VyZXMsIGZvciBpbnN0YW5jZSBjaGVja3N1bW1pbmcgYW5kIHNjcnViYmluZy4gIEJ1dCB0aGVzZQordGVjaG5vbG9naWVzIGFyZSB3b3JraW5nIGluIHRoZWlyIG93biBpc29sYXRlZCBkb21haW5zIG9yIGF0IGJlc3QKK2JldHdlZW4gYWRqYWNlbnQgbm9kZXMgaW4gdGhlIEkvTyBwYXRoLiAgVGhlIGludGVyZXN0aW5nIHRoaW5nIGFib3V0CitESUYgYW5kIHRoZSBvdGhlciBpbnRlZ3JpdHkgZXh0ZW5zaW9ucyBpcyB0aGF0IHRoZSBwcm90ZWN0aW9uIGZvcm1hdAoraXMgd2VsbCBkZWZpbmVkIGFuZCBldmVyeSBub2RlIGluIHRoZSBJL08gcGF0aCBjYW4gdmVyaWZ5IHRoZQoraW50ZWdyaXR5IG9mIHRoZSBJL08gYW5kIHJlamVjdCBpdCBpZiBjb3JydXB0aW9uIGlzIGRldGVjdGVkLiAgVGhpcworYWxsb3dzIG5vdCBvbmx5IGNvcnJ1cHRpb24gcHJldmVudGlvbiBidXQgYWxzbyBpc29sYXRpb24gb2YgdGhlIHBvaW50CitvZiBmYWlsdXJlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyLiBUSEUgREFUQSBJTlRFR1JJVFkgRVhURU5TSU9OUworCitBcyB3cml0dGVuLCB0aGUgcHJvdG9jb2wgZXh0ZW5zaW9ucyBvbmx5IHByb3RlY3QgdGhlIHBhdGggYmV0d2VlbgorY29udHJvbGxlciBhbmQgc3RvcmFnZSBkZXZpY2UuICBIb3dldmVyLCBtYW55IGNvbnRyb2xsZXJzIGFjdHVhbGx5CithbGxvdyB0aGUgb3BlcmF0aW5nIHN5c3RlbSB0byBpbnRlcmFjdCB3aXRoIHRoZSBpbnRlZ3JpdHkgbWV0YWRhdGEKKyhJTUQpLiAgV2UgaGF2ZSBiZWVuIHdvcmtpbmcgd2l0aCBzZXZlcmFsIEZDL1NBUyBIQkEgdmVuZG9ycyB0byBlbmFibGUKK3RoZSBwcm90ZWN0aW9uIGluZm9ybWF0aW9uIHRvIGJlIHRyYW5zZmVycmVkIHRvIGFuZCBmcm9tIHRoZWlyCitjb250cm9sbGVycy4KKworVGhlIFNDU0kgRGF0YSBJbnRlZ3JpdHkgRmllbGQgd29ya3MgYnkgYXBwZW5kaW5nIDggYnl0ZXMgb2YgcHJvdGVjdGlvbgoraW5mb3JtYXRpb24gdG8gZWFjaCBzZWN0b3IuICBUaGUgZGF0YSArIGludGVncml0eSBtZXRhZGF0YSBpcyBzdG9yZWQKK2luIDUyMCBieXRlIHNlY3RvcnMgb24gZGlzay4gIERhdGEgKyBJTUQgYXJlIGludGVybGVhdmVkIHdoZW4KK3RyYW5zZmVycmVkIGJldHdlZW4gdGhlIGNvbnRyb2xsZXIgYW5kIHRhcmdldC4gIFRoZSBUMTMgcHJvcG9zYWwgaXMKK3NpbWlsYXIuCisKK0JlY2F1c2UgaXQgaXMgaGlnaGx5IGluY29udmVuaWVudCBmb3Igb3BlcmF0aW5nIHN5c3RlbXMgdG8gZGVhbCB3aXRoCis1MjAgKGFuZCA0MTA0KSBieXRlIHNlY3RvcnMsIHdlIGFwcHJvYWNoZWQgc2V2ZXJhbCBIQkEgdmVuZG9ycyBhbmQKK2VuY291cmFnZWQgdGhlbSB0byBhbGxvdyBzZXBhcmF0aW9uIG9mIHRoZSBkYXRhIGFuZCBpbnRlZ3JpdHkgbWV0YWRhdGEKK3NjYXR0ZXItZ2F0aGVyIGxpc3RzLgorCitUaGUgY29udHJvbGxlciB3aWxsIGludGVybGVhdmUgdGhlIGJ1ZmZlcnMgb24gd3JpdGUgYW5kIHNwbGl0IHRoZW0gb24KK3JlYWQuICBUaGlzIG1lYW5zIHRoYXQgTGludXggY2FuIERNQSB0aGUgZGF0YSBidWZmZXJzIHRvIGFuZCBmcm9tCitob3N0IG1lbW9yeSB3aXRob3V0IGNoYW5nZXMgdG8gdGhlIHBhZ2UgY2FjaGUuCisKK0Fsc28sIHRoZSAxNi1iaXQgQ1JDIGNoZWNrc3VtIG1hbmRhdGVkIGJ5IGJvdGggdGhlIFNDU0kgYW5kIFNBVEEgc3BlY3MKK2lzIHNvbWV3aGF0IGhlYXZ5IHRvIGNvbXB1dGUgaW4gc29mdHdhcmUuICBCZW5jaG1hcmtzIGZvdW5kIHRoYXQKK2NhbGN1bGF0aW5nIHRoaXMgY2hlY2tzdW0gaGFkIGEgc2lnbmlmaWNhbnQgaW1wYWN0IG9uIHN5c3RlbQorcGVyZm9ybWFuY2UgZm9yIGEgbnVtYmVyIG9mIHdvcmtsb2Fkcy4gIFNvbWUgY29udHJvbGxlcnMgYWxsb3cgYQorbGlnaHRlci13ZWlnaHQgY2hlY2tzdW0gdG8gYmUgdXNlZCB3aGVuIGludGVyZmFjaW5nIHdpdGggdGhlIG9wZXJhdGluZworc3lzdGVtLiAgRW11bGV4LCBmb3IgaW5zdGFuY2UsIHN1cHBvcnRzIHRoZSBUQ1AvSVAgY2hlY2tzdW0gaW5zdGVhZC4KK1RoZSBJUCBjaGVja3N1bSByZWNlaXZlZCBmcm9tIHRoZSBPUyBpcyBjb252ZXJ0ZWQgdG8gdGhlIDE2LWJpdCBDUkMKK3doZW4gd3JpdGluZyBhbmQgdmljZSB2ZXJzYS4gIFRoaXMgYWxsb3dzIHRoZSBpbnRlZ3JpdHkgbWV0YWRhdGEgdG8gYmUKK2dlbmVyYXRlZCBieSBMaW51eCBvciB0aGUgYXBwbGljYXRpb24gYXQgdmVyeSBsb3cgY29zdCAoY29tcGFyYWJsZSB0bworc29mdHdhcmUgUkFJRDUpLgorCitUaGUgSVAgY2hlY2tzdW0gaXMgd2Vha2VyIHRoYW4gdGhlIENSQyBpbiB0ZXJtcyBvZiBkZXRlY3RpbmcgYml0CitlcnJvcnMuICBIb3dldmVyLCB0aGUgc3RyZW5ndGggaXMgcmVhbGx5IGluIHRoZSBzZXBhcmF0aW9uIG9mIHRoZSBkYXRhCitidWZmZXJzIGFuZCB0aGUgaW50ZWdyaXR5IG1ldGFkYXRhLiAgVGhlc2UgdHdvIGRpc3RpbmN0IGJ1ZmZlcnMgbXVzdAorbWF0Y2ggdXAgZm9yIGFuIEkvTyB0byBjb21wbGV0ZS4KKworVGhlIHNlcGFyYXRpb24gb2YgdGhlIGRhdGEgYW5kIGludGVncml0eSBtZXRhZGF0YSBidWZmZXJzIGFzIHdlbGwgYXMKK3RoZSBjaG9pY2UgaW4gY2hlY2tzdW1zIGlzIHJlZmVycmVkIHRvIGFzIHRoZSBEYXRhIEludGVncml0eQorRXh0ZW5zaW9ucy4gIEFzIHRoZXNlIGV4dGVuc2lvbnMgYXJlIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoZSBwcm90b2NvbAorYm9kaWVzIChUMTAsIFQxMyksIE9yYWNsZSBhbmQgaXRzIHBhcnRuZXJzIGFyZSB0cnlpbmcgdG8gc3RhbmRhcmRpemUKK3RoZW0gd2l0aGluIHRoZSBTdG9yYWdlIE5ldHdvcmtpbmcgSW5kdXN0cnkgQXNzb2NpYXRpb24uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzMuIEtFUk5FTCBDSEFOR0VTCisKK1RoZSBkYXRhIGludGVncml0eSBmcmFtZXdvcmsgaW4gTGludXggZW5hYmxlcyBwcm90ZWN0aW9uIGluZm9ybWF0aW9uCit0byBiZSBwaW5uZWQgdG8gSS9PcyBhbmQgc2VudCB0by9yZWNlaXZlZCBmcm9tIGNvbnRyb2xsZXJzIHRoYXQKK3N1cHBvcnQgaXQuCisKK1RoZSBhZHZhbnRhZ2UgdG8gdGhlIGludGVncml0eSBleHRlbnNpb25zIGluIFNDU0kgYW5kIFNBVEEgaXMgdGhhdAordGhleSBlbmFibGUgdXMgdG8gcHJvdGVjdCB0aGUgZW50aXJlIHBhdGggZnJvbSBhcHBsaWNhdGlvbiB0byBzdG9yYWdlCitkZXZpY2UuICBIb3dldmVyLCBhdCB0aGUgc2FtZSB0aW1lIHRoaXMgaXMgYWxzbyB0aGUgYmlnZ2VzdAorZGlzYWR2YW50YWdlLiBJdCBtZWFucyB0aGF0IHRoZSBwcm90ZWN0aW9uIGluZm9ybWF0aW9uIG11c3QgYmUgaW4gYQorZm9ybWF0IHRoYXQgY2FuIGJlIHVuZGVyc3Rvb2QgYnkgdGhlIGRpc2suCisKK0dlbmVyYWxseSBMaW51eC9QT1NJWCBhcHBsaWNhdGlvbnMgYXJlIGFnbm9zdGljIHRvIHRoZSBpbnRyaWNhY2llcyBvZgordGhlIHN0b3JhZ2UgZGV2aWNlcyB0aGV5IGFyZSBhY2Nlc3NpbmcuICBUaGUgdmlydHVhbCBmaWxlc3lzdGVtIHN3aXRjaAorYW5kIHRoZSBibG9jayBsYXllciBtYWtlIHRoaW5ncyBsaWtlIGhhcmR3YXJlIHNlY3RvciBzaXplIGFuZAordHJhbnNwb3J0IHByb3RvY29scyBjb21wbGV0ZWx5IHRyYW5zcGFyZW50IHRvIHRoZSBhcHBsaWNhdGlvbi4KKworSG93ZXZlciwgdGhpcyBsZXZlbCBvZiBkZXRhaWwgaXMgcmVxdWlyZWQgd2hlbiBwcmVwYXJpbmcgdGhlCitwcm90ZWN0aW9uIGluZm9ybWF0aW9uIHRvIHNlbmQgdG8gYSBkaXNrLiAgQ29uc2VxdWVudGx5LCB0aGUgdmVyeQorY29uY2VwdCBvZiBhbiBlbmQtdG8tZW5kIHByb3RlY3Rpb24gc2NoZW1lIGlzIGEgbGF5ZXJpbmcgdmlvbGF0aW9uLgorSXQgaXMgY29tcGxldGVseSB1bnJlYXNvbmFibGUgZm9yIGFuIGFwcGxpY2F0aW9uIHRvIGJlIGF3YXJlIHdoZXRoZXIKK2l0IGlzIGFjY2Vzc2luZyBhIFNDU0kgb3IgU0FUQSBkaXNrLgorCitUaGUgZGF0YSBpbnRlZ3JpdHkgc3VwcG9ydCBpbXBsZW1lbnRlZCBpbiBMaW51eCBhdHRlbXB0cyB0byBoaWRlIHRoaXMKK2Zyb20gdGhlIGFwcGxpY2F0aW9uLiAgQXMgZmFyIGFzIHRoZSBhcHBsaWNhdGlvbiAoYW5kIHRvIHNvbWUgZXh0ZW50Cit0aGUga2VybmVsKSBpcyBjb25jZXJuZWQsIHRoZSBpbnRlZ3JpdHkgbWV0YWRhdGEgaXMgb3BhcXVlIGluZm9ybWF0aW9uCit0aGF0J3MgYXR0YWNoZWQgdG8gdGhlIEkvTy4KKworVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gYWxsb3dzIHRoZSBibG9jayBsYXllciB0byBhdXRvbWF0aWNhbGx5CitnZW5lcmF0ZSB0aGUgcHJvdGVjdGlvbiBpbmZvcm1hdGlvbiBmb3IgYW55IEkvTy4gIEV2ZW50dWFsbHkgdGhlCitpbnRlbnQgaXMgdG8gbW92ZSB0aGUgaW50ZWdyaXR5IG1ldGFkYXRhIGNhbGN1bGF0aW9uIHRvIHVzZXJzcGFjZSBmb3IKK3VzZXIgZGF0YS4gIE1ldGFkYXRhIGFuZCBvdGhlciBJL08gdGhhdCBvcmlnaW5hdGVzIHdpdGhpbiB0aGUga2VybmVsCit3aWxsIHN0aWxsIHVzZSB0aGUgYXV0b21hdGljIGdlbmVyYXRpb24gaW50ZXJmYWNlLgorCitTb21lIHN0b3JhZ2UgZGV2aWNlcyBhbGxvdyBlYWNoIGhhcmR3YXJlIHNlY3RvciB0byBiZSB0YWdnZWQgd2l0aCBhCisxNi1iaXQgdmFsdWUuICBUaGUgb3duZXIgb2YgdGhpcyB0YWcgc3BhY2UgaXMgdGhlIG93bmVyIG9mIHRoZSBibG9jaworZGV2aWNlLiAgSS5lLiB0aGUgZmlsZXN5c3RlbSBpbiBtb3N0IGNhc2VzLiAgVGhlIGZpbGVzeXN0ZW0gY2FuIHVzZQordGhpcyBleHRyYSBzcGFjZSB0byB0YWcgc2VjdG9ycyBhcyB0aGV5IHNlZSBmaXQuICBCZWNhdXNlIHRoZSB0YWcKK3NwYWNlIGlzIGxpbWl0ZWQsIHRoZSBibG9jayBpbnRlcmZhY2UgYWxsb3dzIHRhZ2dpbmcgYmlnZ2VyIGNodW5rcyBieQord2F5IG9mIGludGVybGVhdmluZy4gIFRoaXMgd2F5LCA4KjE2IGJpdHMgb2YgaW5mb3JtYXRpb24gY2FuIGJlCithdHRhY2hlZCB0byBhIHR5cGljYWwgNEtCIGZpbGVzeXN0ZW0gYmxvY2suCisKK1RoaXMgYWxzbyBtZWFucyB0aGF0IGFwcGxpY2F0aW9ucyBzdWNoIGFzIGZzY2sgYW5kIG1rZnMgd2lsbCBuZWVkCithY2Nlc3MgdG8gbWFuaXB1bGF0ZSB0aGUgdGFncyBmcm9tIHVzZXIgc3BhY2UuICBBIHBhc3N0aHJvdWdoCitpbnRlcmZhY2UgZm9yIHRoaXMgaXMgYmVpbmcgd29ya2VkIG9uLgorCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzQuIEJMT0NLIExBWUVSIElNUExFTUVOVEFUSU9OIERFVEFJTFMKKworNC4xIEJJTworCitUaGUgZGF0YSBpbnRlZ3JpdHkgcGF0Y2hlcyBhZGQgYSBuZXcgZmllbGQgdG8gc3RydWN0IGJpbyB3aGVuCitDT05GSUdfQkxLX0RFVl9JTlRFR1JJVFkgaXMgZW5hYmxlZC4gIGJpb19pbnRlZ3JpdHkoYmlvKSByZXR1cm5zIGEKK3BvaW50ZXIgdG8gYSBzdHJ1Y3QgYmlwIHdoaWNoIGNvbnRhaW5zIHRoZSBiaW8gaW50ZWdyaXR5IHBheWxvYWQuCitFc3NlbnRpYWxseSBhIGJpcCBpcyBhIHRyaW1tZWQgZG93biBzdHJ1Y3QgYmlvIHdoaWNoIGhvbGRzIGEgYmlvX3ZlYworY29udGFpbmluZyB0aGUgaW50ZWdyaXR5IG1ldGFkYXRhIGFuZCB0aGUgcmVxdWlyZWQgaG91c2VrZWVwaW5nCitpbmZvcm1hdGlvbiAoYnZlYyBwb29sLCB2ZWN0b3IgY291bnQsIGV0Yy4pCisKK0Ega2VybmVsIHN1YnN5c3RlbSBjYW4gZW5hYmxlIGRhdGEgaW50ZWdyaXR5IHByb3RlY3Rpb24gb24gYSBiaW8gYnkKK2NhbGxpbmcgYmlvX2ludGVncml0eV9hbGxvYyhiaW8pLiAgVGhpcyB3aWxsIGFsbG9jYXRlIGFuZCBhdHRhY2ggdGhlCitiaXAgdG8gdGhlIGJpby4KKworSW5kaXZpZHVhbCBwYWdlcyBjb250YWluaW5nIGludGVncml0eSBtZXRhZGF0YSBjYW4gc3Vic2VxdWVudGx5IGJlCithdHRhY2hlZCB1c2luZyBiaW9faW50ZWdyaXR5X2FkZF9wYWdlKCkuCisKK2Jpb19mcmVlKCkgd2lsbCBhdXRvbWF0aWNhbGx5IGZyZWUgdGhlIGJpcC4KKworCis0LjIgQkxPQ0sgREVWSUNFCisKK0JlY2F1c2UgdGhlIGZvcm1hdCBvZiB0aGUgcHJvdGVjdGlvbiBkYXRhIGlzIHRpZWQgdG8gdGhlIHBoeXNpY2FsCitkaXNrLCBlYWNoIGJsb2NrIGRldmljZSBoYXMgYmVlbiBleHRlbmRlZCB3aXRoIGEgYmxvY2sgaW50ZWdyaXR5Citwcm9maWxlIChzdHJ1Y3QgYmxrX2ludGVncml0eSkuICBUaGlzIG9wdGlvbmFsIHByb2ZpbGUgaXMgcmVnaXN0ZXJlZAord2l0aCB0aGUgYmxvY2sgbGF5ZXIgdXNpbmcgYmxrX2ludGVncml0eV9yZWdpc3RlcigpLgorCitUaGUgcHJvZmlsZSBjb250YWlucyBjYWxsYmFjayBmdW5jdGlvbnMgZm9yIGdlbmVyYXRpbmcgYW5kIHZlcmlmeWluZwordGhlIHByb3RlY3Rpb24gZGF0YSwgYXMgd2VsbCBhcyBnZXR0aW5nIGFuZCBzZXR0aW5nIGFwcGxpY2F0aW9uIHRhZ3MuCitUaGUgcHJvZmlsZSBhbHNvIGNvbnRhaW5zIGEgZmV3IGNvbnN0YW50cyB0byBhaWQgaW4gY29tcGxldGluZywKK21lcmdpbmcgYW5kIHNwbGl0dGluZyB0aGUgaW50ZWdyaXR5IG1ldGFkYXRhLgorCitMYXllcmVkIGJsb2NrIGRldmljZXMgd2lsbCBuZWVkIHRvIHBpY2sgYSBwcm9maWxlIHRoYXQncyBhcHByb3ByaWF0ZQorZm9yIGFsbCBzdWJkZXZpY2VzLiAgYmxrX2ludGVncml0eV9jb21wYXJlKCkgY2FuIGhlbHAgd2l0aCB0aGF0LiAgRE0KK2FuZCBNRCBsaW5lYXIsIFJBSUQwIGFuZCBSQUlEMSBhcmUgY3VycmVudGx5IHN1cHBvcnRlZC4gIFJBSUQ0LzUvNgord2lsbCByZXF1aXJlIGV4dHJhIHdvcmsgZHVlIHRvIHRoZSBhcHBsaWNhdGlvbiB0YWcuCisKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorNS4wIEJMT0NLIExBWUVSIElOVEVHUklUWSBBUEkKKworNS4xIE5PUk1BTCBGSUxFU1lTVEVNCisKKyAgICBUaGUgbm9ybWFsIGZpbGVzeXN0ZW0gaXMgdW5hd2FyZSB0aGF0IHRoZSB1bmRlcmx5aW5nIGJsb2NrIGRldmljZQorICAgIGlzIGNhcGFibGUgb2Ygc2VuZGluZy9yZWNlaXZpbmcgaW50ZWdyaXR5IG1ldGFkYXRhLiAgVGhlIElNRCB3aWxsCisgICAgYmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgdGhlIGJsb2NrIGxheWVyIGF0IHN1Ym1pdF9iaW8oKSB0aW1lCisgICAgaW4gY2FzZSBvZiBhIFdSSVRFLiAgQSBSRUFEIHJlcXVlc3Qgd2lsbCBjYXVzZSB0aGUgSS9PIGludGVncml0eQorICAgIHRvIGJlIHZlcmlmaWVkIHVwb24gY29tcGxldGlvbi4KKworICAgIElNRCBnZW5lcmF0aW9uIGFuZCB2ZXJpZmljYXRpb24gY2FuIGJlIHRvZ2dsZWQgdXNpbmcgdGhlCisKKyAgICAgIC9zeXMvYmxvY2svPGJkZXY+L2ludGVncml0eS93cml0ZV9nZW5lcmF0ZQorCisgICAgYW5kCisKKyAgICAgIC9zeXMvYmxvY2svPGJkZXY+L2ludGVncml0eS9yZWFkX3ZlcmlmeQorCisgICAgZmxhZ3MuCisKKworNS4yIElOVEVHUklUWS1BV0FSRSBGSUxFU1lTVEVNCisKKyAgICBBIGZpbGVzeXN0ZW0gdGhhdCBpcyBpbnRlZ3JpdHktYXdhcmUgY2FuIHByZXBhcmUgSS9PcyB3aXRoIElNRAorICAgIGF0dGFjaGVkLiAgSXQgY2FuIGFsc28gdXNlIHRoZSBhcHBsaWNhdGlvbiB0YWcgc3BhY2UgaWYgdGhpcyBpcworICAgIHN1cHBvcnRlZCBieSB0aGUgYmxvY2sgZGV2aWNlLgorCisKKyAgICBpbnQgYmlvX2ludGVncml0eV9wcmVwKGJpbyk7CisKKyAgICAgIFRvIGdlbmVyYXRlIElNRCBmb3IgV1JJVEUgYW5kIHRvIHNldCB1cCBidWZmZXJzIGZvciBSRUFELCB0aGUKKyAgICAgIGZpbGVzeXN0ZW0gbXVzdCBjYWxsIGJpb19pbnRlZ3JpdHlfcHJlcChiaW8pLgorCisgICAgICBQcmlvciB0byBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIHRoZSBiaW8gZGF0YSBkaXJlY3Rpb24gYW5kIHN0YXJ0CisgICAgICBzZWN0b3IgbXVzdCBiZSBzZXQsIGFuZCB0aGUgYmlvIHNob3VsZCBoYXZlIGFsbCBkYXRhIHBhZ2VzCisgICAgICBhZGRlZC4gIEl0IGlzIHVwIHRvIHRoZSBjYWxsZXIgdG8gZW5zdXJlIHRoYXQgdGhlIGJpbyBkb2VzIG5vdAorICAgICAgY2hhbmdlIHdoaWxlIEkvTyBpcyBpbiBwcm9ncmVzcy4KKworICAgICAgYmlvX2ludGVncml0eV9wcmVwKCkgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmCisgICAgICBiaW9faW50ZWdyaXR5X2VuYWJsZWQoKSByZXR1cm5lZCAxLgorCisKKzUuMyBQQVNTSU5HIEVYSVNUSU5HIElOVEVHUklUWSBNRVRBREFUQQorCisgICAgRmlsZXN5c3RlbXMgdGhhdCBlaXRoZXIgZ2VuZXJhdGUgdGhlaXIgb3duIGludGVncml0eSBtZXRhZGF0YSBvcgorICAgIGFyZSBjYXBhYmxlIG9mIHRyYW5zZmVycmluZyBJTUQgZnJvbSB1c2VyIHNwYWNlIGNhbiB1c2UgdGhlCisgICAgZm9sbG93aW5nIGNhbGxzOgorCisKKyAgICBzdHJ1Y3QgYmlwICogYmlvX2ludGVncml0eV9hbGxvYyhiaW8sIGdmcF9tYXNrLCBucl9wYWdlcyk7CisKKyAgICAgIEFsbG9jYXRlcyB0aGUgYmlvIGludGVncml0eSBwYXlsb2FkIGFuZCBoYW5ncyBpdCBvZmYgb2YgdGhlIGJpby4KKyAgICAgIG5yX3BhZ2VzIGluZGljYXRlIGhvdyBtYW55IHBhZ2VzIG9mIHByb3RlY3Rpb24gZGF0YSBuZWVkIHRvIGJlCisgICAgICBzdG9yZWQgaW4gdGhlIGludGVncml0eSBiaW9fdmVjIGxpc3QgKHNpbWlsYXIgdG8gYmlvX2FsbG9jKCkpLgorCisgICAgICBUaGUgaW50ZWdyaXR5IHBheWxvYWQgd2lsbCBiZSBmcmVlZCBhdCBiaW9fZnJlZSgpIHRpbWUuCisKKworICAgIGludCBiaW9faW50ZWdyaXR5X2FkZF9wYWdlKGJpbywgcGFnZSwgbGVuLCBvZmZzZXQpOworCisgICAgICBBdHRhY2hlcyBhIHBhZ2UgY29udGFpbmluZyBpbnRlZ3JpdHkgbWV0YWRhdGEgdG8gYW4gZXhpc3RpbmcKKyAgICAgIGJpby4gIFRoZSBiaW8gbXVzdCBoYXZlIGFuIGV4aXN0aW5nIGJpcCwKKyAgICAgIGkuZS4gYmlvX2ludGVncml0eV9hbGxvYygpIG11c3QgaGF2ZSBiZWVuIGNhbGxlZC4gIEZvciBhIFdSSVRFLAorICAgICAgdGhlIGludGVncml0eSBtZXRhZGF0YSBpbiB0aGUgcGFnZXMgbXVzdCBiZSBpbiBhIGZvcm1hdAorICAgICAgdW5kZXJzdG9vZCBieSB0aGUgdGFyZ2V0IGRldmljZSB3aXRoIHRoZSBub3RhYmxlIGV4Y2VwdGlvbiB0aGF0CisgICAgICB0aGUgc2VjdG9yIG51bWJlcnMgd2lsbCBiZSByZW1hcHBlZCBhcyB0aGUgcmVxdWVzdCB0cmF2ZXJzZXMgdGhlCisgICAgICBJL08gc3RhY2suICBUaGlzIGltcGxpZXMgdGhhdCB0aGUgcGFnZXMgYWRkZWQgdXNpbmcgdGhpcyBjYWxsCisgICAgICB3aWxsIGJlIG1vZGlmaWVkIGR1cmluZyBJL08hICBUaGUgZmlyc3QgcmVmZXJlbmNlIHRhZyBpbiB0aGUKKyAgICAgIGludGVncml0eSBtZXRhZGF0YSBtdXN0IGhhdmUgYSB2YWx1ZSBvZiBiaXAtPmJpcF9zZWN0b3IuCisKKyAgICAgIFBhZ2VzIGNhbiBiZSBhZGRlZCB1c2luZyBiaW9faW50ZWdyaXR5X2FkZF9wYWdlKCkgYXMgbG9uZyBhcworICAgICAgdGhlcmUgaXMgcm9vbSBpbiB0aGUgYmlwIGJpb192ZWMgYXJyYXkgKG5yX3BhZ2VzKS4KKworICAgICAgVXBvbiBjb21wbGV0aW9uIG9mIGEgUkVBRCBvcGVyYXRpb24sIHRoZSBhdHRhY2hlZCBwYWdlcyB3aWxsCisgICAgICBjb250YWluIHRoZSBpbnRlZ3JpdHkgbWV0YWRhdGEgcmVjZWl2ZWQgZnJvbSB0aGUgc3RvcmFnZSBkZXZpY2UuCisgICAgICBJdCBpcyB1cCB0byB0aGUgcmVjZWl2ZXIgdG8gcHJvY2VzcyB0aGVtIGFuZCB2ZXJpZnkgZGF0YQorICAgICAgaW50ZWdyaXR5IHVwb24gY29tcGxldGlvbi4KKworCis1LjQgUkVHSVNURVJJTkcgQSBCTE9DSyBERVZJQ0UgQVMgQ0FQQUJMRSBPRiBFWENIQU5HSU5HIElOVEVHUklUWQorICAgIE1FVEFEQVRBCisKKyAgICBUbyBlbmFibGUgaW50ZWdyaXR5IGV4Y2hhbmdlIG9uIGEgYmxvY2sgZGV2aWNlIHRoZSBnZW5kaXNrIG11c3QgYmUKKyAgICByZWdpc3RlcmVkIGFzIGNhcGFibGU6CisKKyAgICBpbnQgYmxrX2ludGVncml0eV9yZWdpc3RlcihnZW5kaXNrLCBibGtfaW50ZWdyaXR5KTsKKworICAgICAgVGhlIGJsa19pbnRlZ3JpdHkgc3RydWN0IGlzIGEgdGVtcGxhdGUgYW5kIHNob3VsZCBjb250YWluIHRoZQorICAgICAgZm9sbG93aW5nOgorCisgICAgICAgIHN0YXRpYyBzdHJ1Y3QgYmxrX2ludGVncml0eSBteV9wcm9maWxlID0geworICAgICAgICAgICAgLm5hbWUgICAgICAgICAgICAgICAgICAgPSAiU1RBTkRBUkRTQk9EWS1UWVBFLVZBUklBTlQtQ1NVTSIsCisgICAgICAgICAgICAuZ2VuZXJhdGVfZm4gICAgICAgICAgICA9IG15X2dlbmVyYXRlX2ZuLAorICAgICAgIAkgICAgLnZlcmlmeV9mbiAgICAgICAgICAgICAgPSBteV92ZXJpZnlfZm4sCisJICAgIC50dXBsZV9zaXplICAgICAgICAgICAgID0gc2l6ZW9mKHN0cnVjdCBteV90dXBsZV9zaXplKSwKKwkgICAgLnRhZ19zaXplICAgICAgICAgICAgICAgPSA8dGFnIGJ5dGVzIHBlciBodyBzZWN0b3I+LAorICAgICAgICB9OworCisgICAgICAnbmFtZScgaXMgYSB0ZXh0IHN0cmluZyB3aGljaCB3aWxsIGJlIHZpc2libGUgaW4gc3lzZnMuICBUaGlzIGlzCisgICAgICBwYXJ0IG9mIHRoZSB1c2VybGFuZCBBUEkgc28gY2hvc2UgaXQgY2FyZWZ1bGx5IGFuZCBuZXZlciBjaGFuZ2UKKyAgICAgIGl0LiAgVGhlIGZvcm1hdCBpcyBzdGFuZGFyZHMgYm9keS10eXBlLXZhcmlhbnQuCisgICAgICBFLmcuIFQxMC1ESUYtVFlQRTEtSVAgb3IgVDEzLUVQUC0wLUNSQy4KKworICAgICAgJ2dlbmVyYXRlX2ZuJyBnZW5lcmF0ZXMgYXBwcm9wcmlhdGUgaW50ZWdyaXR5IG1ldGFkYXRhIChmb3IgV1JJVEUpLgorCisgICAgICAndmVyaWZ5X2ZuJyB2ZXJpZmllcyB0aGF0IHRoZSBkYXRhIGJ1ZmZlciBtYXRjaGVzIHRoZSBpbnRlZ3JpdHkKKyAgICAgIG1ldGFkYXRhLgorCisgICAgICAndHVwbGVfc2l6ZScgbXVzdCBiZSBzZXQgdG8gbWF0Y2ggdGhlIHNpemUgb2YgdGhlIGludGVncml0eQorICAgICAgbWV0YWRhdGEgcGVyIHNlY3Rvci4gIEkuZS4gOCBmb3IgRElGIGFuZCBFUFAuCisKKyAgICAgICd0YWdfc2l6ZScgbXVzdCBiZSBzZXQgdG8gaWRlbnRpZnkgaG93IG1hbnkgYnl0ZXMgb2YgdGFnIHNwYWNlCisgICAgICBhcmUgYXZhaWxhYmxlIHBlciBoYXJkd2FyZSBzZWN0b3IuICBGb3IgRElGIHRoaXMgaXMgZWl0aGVyIDIgb3IKKyAgICAgIDAgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiB0aGUgQ29udHJvbCBNb2RlIFBhZ2UgQVRPIGJpdC4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjAwNy0xMi0yNCBNYXJ0aW4gSy4gUGV0ZXJzZW4gPG1hcnRpbi5wZXRlcnNlbkBvcmFjbGUuY29tPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibG9jay9kZWFkbGluZS1pb3NjaGVkLnR4dCBiL0RvY3VtZW50YXRpb24vYmxvY2svZGVhZGxpbmUtaW9zY2hlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ4MmM4MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYmxvY2svZGVhZGxpbmUtaW9zY2hlZC50eHQKQEAgLTAsMCArMSw3NSBAQAorRGVhZGxpbmUgSU8gc2NoZWR1bGVyIHR1bmFibGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBsaXR0bGUgZmlsZSBhdHRlbXB0cyB0byBkb2N1bWVudCBob3cgdGhlIGRlYWRsaW5lIGlvIHNjaGVkdWxlciB3b3Jrcy4KK0luIHBhcnRpY3VsYXIsIGl0IHdpbGwgY2xhcmlmeSB0aGUgbWVhbmluZyBvZiB0aGUgZXhwb3NlZCB0dW5hYmxlcyB0aGF0IG1heSBiZQorb2YgaW50ZXJlc3QgdG8gcG93ZXIgdXNlcnMuCisKK1NlbGVjdGluZyBJTyBzY2hlZHVsZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUmVmZXIgdG8gRG9jdW1lbnRhdGlvbi9ibG9jay9zd2l0Y2hpbmctc2NoZWQudHh0IGZvciBpbmZvcm1hdGlvbiBvbgorc2VsZWN0aW5nIGFuIGlvIHNjaGVkdWxlciBvbiBhIHBlci1kZXZpY2UgYmFzaXMuCisKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworCityZWFkX2V4cGlyZQkoaW4gbXMpCistLS0tLS0tLS0tLQorCitUaGUgZ29hbCBvZiB0aGUgZGVhZGxpbmUgaW8gc2NoZWR1bGVyIGlzIHRvIGF0dGVtcHQgdG8gZ3VhcmFudGVlIGEgc3RhcnQKK3NlcnZpY2UgdGltZSBmb3IgYSByZXF1ZXN0LiBBcyB3ZSBmb2N1cyBtYWlubHkgb24gcmVhZCBsYXRlbmNpZXMsIHRoaXMgaXMKK3R1bmFibGUuIFdoZW4gYSByZWFkIHJlcXVlc3QgZmlyc3QgZW50ZXJzIHRoZSBpbyBzY2hlZHVsZXIsIGl0IGlzIGFzc2lnbmVkCithIGRlYWRsaW5lIHRoYXQgaXMgdGhlIGN1cnJlbnQgdGltZSArIHRoZSByZWFkX2V4cGlyZSB2YWx1ZSBpbiB1bml0cyBvZgorbWlsbGlzZWNvbmRzLgorCisKK3dyaXRlX2V4cGlyZQkoaW4gbXMpCistLS0tLS0tLS0tLQorCitTaW1pbGFyIHRvIHJlYWRfZXhwaXJlIG1lbnRpb25lZCBhYm92ZSwgYnV0IGZvciB3cml0ZXMuCisKKworZmlmb19iYXRjaAkobnVtYmVyIG9mIHJlcXVlc3RzKQorLS0tLS0tLS0tLQorCitSZXF1ZXN0cyBhcmUgZ3JvdXBlZCBpbnRvIGBgYmF0Y2hlcycnIG9mIGEgcGFydGljdWxhciBkYXRhIGRpcmVjdGlvbiAocmVhZCBvcgord3JpdGUpIHdoaWNoIGFyZSBzZXJ2aWNlZCBpbiBpbmNyZWFzaW5nIHNlY3RvciBvcmRlci4gIFRvIGxpbWl0IGV4dHJhIHNlZWtpbmcsCitkZWFkbGluZSBleHBpcmllcyBhcmUgb25seSBjaGVja2VkIGJldHdlZW4gYmF0Y2hlcy4gIGZpZm9fYmF0Y2ggY29udHJvbHMgdGhlCittYXhpbXVtIG51bWJlciBvZiByZXF1ZXN0cyBwZXIgYmF0Y2guCisKK1RoaXMgcGFyYW1ldGVyIHR1bmVzIHRoZSBiYWxhbmNlIGJldHdlZW4gcGVyLXJlcXVlc3QgbGF0ZW5jeSBhbmQgYWdncmVnYXRlCit0aHJvdWdocHV0LiAgV2hlbiBsb3cgbGF0ZW5jeSBpcyB0aGUgcHJpbWFyeSBjb25jZXJuLCBzbWFsbGVyIGlzIGJldHRlciAod2hlcmUKK2EgdmFsdWUgb2YgMSB5aWVsZHMgZmlyc3QtY29tZSBmaXJzdC1zZXJ2ZWQgYmVoYXZpb3VyKS4gIEluY3JlYXNpbmcgZmlmb19iYXRjaAorZ2VuZXJhbGx5IGltcHJvdmVzIHRocm91Z2hwdXQsIGF0IHRoZSBjb3N0IG9mIGxhdGVuY3kgdmFyaWF0aW9uLgorCisKK3dyaXRlc19zdGFydmVkCShudW1iZXIgb2YgZGlzcGF0Y2hlcykKKy0tLS0tLS0tLS0tLS0tCisKK1doZW4gd2UgaGF2ZSB0byBtb3ZlIHJlcXVlc3RzIGZyb20gdGhlIGlvIHNjaGVkdWxlciBxdWV1ZSB0byB0aGUgYmxvY2sKK2RldmljZSBkaXNwYXRjaCBxdWV1ZSwgd2UgYWx3YXlzIGdpdmUgYSBwcmVmZXJlbmNlIHRvIHJlYWRzLiBIb3dldmVyLCB3ZQorZG9uJ3Qgd2FudCB0byBzdGFydmUgd3JpdGVzIGluZGVmaW5pdGVseSBlaXRoZXIuIFNvIHdyaXRlc19zdGFydmVkIGNvbnRyb2xzCitob3cgbWFueSB0aW1lcyB3ZSBnaXZlIHByZWZlcmVuY2UgdG8gcmVhZHMgb3ZlciB3cml0ZXMuIFdoZW4gdGhhdCBoYXMgYmVlbgorZG9uZSB3cml0ZXNfc3RhcnZlZCBudW1iZXIgb2YgdGltZXMsIHdlIGRpc3BhdGNoIHNvbWUgd3JpdGVzIGJhc2VkIG9uIHRoZQorc2FtZSBjcml0ZXJpYSBhcyByZWFkcy4KKworCitmcm9udF9tZXJnZXMJKGJvb2wpCistLS0tLS0tLS0tLS0KKworU29tZXRpbWVzIGl0IGhhcHBlbnMgdGhhdCBhIHJlcXVlc3QgZW50ZXJzIHRoZSBpbyBzY2hlZHVsZXIgdGhhdCBpcyBjb250aWd1b3VzCit3aXRoIGEgcmVxdWVzdCB0aGF0IGlzIGFscmVhZHkgb24gdGhlIHF1ZXVlLiBFaXRoZXIgaXQgZml0cyBpbiB0aGUgYmFjayBvZiB0aGF0CityZXF1ZXN0LCBvciBpdCBmaXRzIGF0IHRoZSBmcm9udC4gVGhhdCBpcyBjYWxsZWQgZWl0aGVyIGEgYmFjayBtZXJnZSBjYW5kaWRhdGUKK29yIGEgZnJvbnQgbWVyZ2UgY2FuZGlkYXRlLiBEdWUgdG8gdGhlIHdheSBmaWxlcyBhcmUgdHlwaWNhbGx5IGxhaWQgb3V0LAorYmFjayBtZXJnZXMgYXJlIG11Y2ggbW9yZSBjb21tb24gdGhhbiBmcm9udCBtZXJnZXMuIEZvciBzb21lIHdvcmsgbG9hZHMsIHlvdQorbWF5IGV2ZW4ga25vdyB0aGF0IGl0IGlzIGEgd2FzdGUgb2YgdGltZSB0byBzcGVuZCBhbnkgdGltZSBhdHRlbXB0aW5nIHRvCitmcm9udCBtZXJnZSByZXF1ZXN0cy4gU2V0dGluZyBmcm9udF9tZXJnZXMgdG8gMCBkaXNhYmxlcyB0aGlzIGZ1bmN0aW9uYWxpdHkuCitGcm9udCBtZXJnZXMgbWF5IHN0aWxsIG9jY3VyIGR1ZSB0byB0aGUgY2FjaGVkIGxhc3RfbWVyZ2UgaGludCwgYnV0IHNpbmNlCit0aGF0IGNvbWVzIGF0IGJhc2ljYWxseSAwIGNvc3Qgd2UgbGVhdmUgdGhhdCBvbi4gV2Ugc2ltcGx5IGRpc2FibGUgdGhlCityYnRyZWUgZnJvbnQgc2VjdG9yIGxvb2t1cCB3aGVuIHRoZSBpbyBzY2hlZHVsZXIgbWVyZ2UgZnVuY3Rpb24gaXMgY2FsbGVkLgorCisKK05vdiAxMSAyMDAyLCBKZW5zIEF4Ym9lIDxqZW5zLmF4Ym9lQG9yYWNsZS5jb20+CisKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibG9jay9pb3ByaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9ibG9jay9pb3ByaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlZDhjNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrL2lvcHJpby50eHQKQEAgLTAsMCArMSwxODMgQEAKK0Jsb2NrIGlvIHByaW9yaXRpZXMKKz09PT09PT09PT09PT09PT09PT0KKworCitJbnRybworLS0tLS0KKworV2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIGNmcSB2MyAoYWthIGNmcS10cyBvciB0aW1lIHNsaWNlZCBjZnEpLCBiYXNpYyBpbworcHJpb3JpdGllcyBhcmUgc3VwcG9ydGVkIGZvciByZWFkcyBvbiBmaWxlcy4gIFRoaXMgZW5hYmxlcyB1c2VycyB0byBpbyBuaWNlCitwcm9jZXNzZXMgb3IgcHJvY2VzcyBncm91cHMsIHNpbWlsYXIgdG8gd2hhdCBoYXMgYmVlbiBwb3NzaWJsZSB3aXRoIGNwdQorc2NoZWR1bGluZyBmb3IgYWdlcy4gIFRoaXMgZG9jdW1lbnQgbWFpbmx5IGRldGFpbHMgdGhlIGN1cnJlbnQgcG9zc2liaWxpdGllcword2l0aCBjZnE7IG90aGVyIGlvIHNjaGVkdWxlcnMgZG8gbm90IHN1cHBvcnQgaW8gcHJpb3JpdGllcyB0aHVzIGZhci4KKworU2NoZWR1bGluZyBjbGFzc2VzCistLS0tLS0tLS0tLS0tLS0tLS0KKworQ0ZRIGltcGxlbWVudHMgdGhyZWUgZ2VuZXJpYyBzY2hlZHVsaW5nIGNsYXNzZXMgdGhhdCBkZXRlcm1pbmUgaG93IGlvIGlzCitzZXJ2ZWQgZm9yIGEgcHJvY2Vzcy4KKworSU9QUklPX0NMQVNTX1JUOiBUaGlzIGlzIHRoZSByZWFsdGltZSBpbyBjbGFzcy4gVGhpcyBzY2hlZHVsaW5nIGNsYXNzIGlzIGdpdmVuCitoaWdoZXIgcHJpb3JpdHkgdGhhbiBhbnkgb3RoZXIgaW4gdGhlIHN5c3RlbSwgcHJvY2Vzc2VzIGZyb20gdGhpcyBjbGFzcyBhcmUKK2dpdmVuIGZpcnN0IGFjY2VzcyB0byB0aGUgZGlzayBldmVyeSB0aW1lLiBUaHVzIGl0IG5lZWRzIHRvIGJlIHVzZWQgd2l0aCBzb21lCitjYXJlLCBvbmUgaW8gUlQgcHJvY2VzcyBjYW4gc3RhcnZlIHRoZSBlbnRpcmUgc3lzdGVtLiBXaXRoaW4gdGhlIFJUIGNsYXNzLAordGhlcmUgYXJlIDggbGV2ZWxzIG9mIGNsYXNzIGRhdGEgdGhhdCBkZXRlcm1pbmUgZXhhY3RseSBob3cgbXVjaCB0aW1lIHRoaXMKK3Byb2Nlc3MgbmVlZHMgdGhlIGRpc2sgZm9yIG9uIGVhY2ggc2VydmljZS4gSW4gdGhlIGZ1dHVyZSB0aGlzIG1pZ2h0IGNoYW5nZQordG8gYmUgbW9yZSBkaXJlY3RseSBtYXBwYWJsZSB0byBwZXJmb3JtYW5jZSwgYnkgcGFzc2luZyBpbiBhIHdhbnRlZCBkYXRhCityYXRlIGluc3RlYWQuCisKK0lPUFJJT19DTEFTU19CRTogVGhpcyBpcyB0aGUgYmVzdC1lZmZvcnQgc2NoZWR1bGluZyBjbGFzcywgd2hpY2ggaXMgdGhlIGRlZmF1bHQKK2ZvciBhbnkgcHJvY2VzcyB0aGF0IGhhc24ndCBzZXQgYSBzcGVjaWZpYyBpbyBwcmlvcml0eS4gVGhlIGNsYXNzIGRhdGEKK2RldGVybWluZXMgaG93IG11Y2ggaW8gYmFuZHdpZHRoIHRoZSBwcm9jZXNzIHdpbGwgZ2V0LCBpdCdzIGRpcmVjdGx5IG1hcHBhYmxlCit0byB0aGUgY3B1IG5pY2UgbGV2ZWxzIGp1c3QgbW9yZSBjb2Fyc2VseSBpbXBsZW1lbnRlZC4gMCBpcyB0aGUgaGlnaGVzdAorQkUgcHJpbyBsZXZlbCwgNyBpcyB0aGUgbG93ZXN0LiBUaGUgbWFwcGluZyBiZXR3ZWVuIGNwdSBuaWNlIGxldmVsIGFuZCBpbworbmljZSBsZXZlbCBpcyBkZXRlcm1pbmVkIGFzOiBpb19uaWNlID0gKGNwdV9uaWNlICsgMjApIC8gNS4KKworSU9QUklPX0NMQVNTX0lETEU6IFRoaXMgaXMgdGhlIGlkbGUgc2NoZWR1bGluZyBjbGFzcywgcHJvY2Vzc2VzIHJ1bm5pbmcgYXQgdGhpcworbGV2ZWwgb25seSBnZXQgaW8gdGltZSB3aGVuIG5vIG9uZSBlbHNlIG5lZWRzIHRoZSBkaXNrLiBUaGUgaWRsZSBjbGFzcyBoYXMgbm8KK2NsYXNzIGRhdGEsIHNpbmNlIGl0IGRvZXNuJ3QgcmVhbGx5IGFwcGx5IGhlcmUuCisKK1Rvb2xzCistLS0tLQorCitTZWUgYmVsb3cgZm9yIGEgc2FtcGxlIGlvbmljZSB0b29sLiBVc2FnZToKKworIyBpb25pY2UgLWM8Y2xhc3M+IC1uPGxldmVsPiAtcDxwaWQ+CisKK0lmIHBpZCBpc24ndCBnaXZlbiwgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBhc3N1bWVkLiBJTyBwcmlvcml0eSBzZXR0aW5ncworYXJlIGluaGVyaXRlZCBvbiBmb3JrLCBzbyB5b3UgY2FuIHVzZSBpb25pY2UgdG8gc3RhcnQgdGhlIHByb2Nlc3MgYXQgYSBnaXZlbgorbGV2ZWw6CisKKyMgaW9uaWNlIC1jMiAtbjAgL2Jpbi9scworCit3aWxsIHJ1biBscyBhdCB0aGUgYmVzdC1lZmZvcnQgc2NoZWR1bGluZyBjbGFzcyBhdCB0aGUgaGlnaGVzdCBwcmlvcml0eS4KK0ZvciBhIHJ1bm5pbmcgcHJvY2VzcywgeW91IGNhbiBnaXZlIHRoZSBwaWQgaW5zdGVhZDoKKworIyBpb25pY2UgLWMxIC1uMiAtcDEwMAorCit3aWxsIGNoYW5nZSBwaWQgMTAwIHRvIHJ1biBhdCB0aGUgcmVhbHRpbWUgc2NoZWR1bGluZyBjbGFzcywgYXQgcHJpb3JpdHkgMi4KKworLS0tPiBzbmlwIGlvbmljZS5jIHRvb2wgPC0tLQorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGdldG9wdC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy9wdHJhY2UuaD4KKyNpbmNsdWRlIDxhc20vdW5pc3RkLmg+CisKK2V4dGVybiBpbnQgc3lzX2lvcHJpb19zZXQoaW50LCBpbnQsIGludCk7CitleHRlcm4gaW50IHN5c19pb3ByaW9fZ2V0KGludCwgaW50KTsKKworI2lmIGRlZmluZWQoX19pMzg2X18pCisjZGVmaW5lIF9fTlJfaW9wcmlvX3NldAkJMjg5CisjZGVmaW5lIF9fTlJfaW9wcmlvX2dldAkJMjkwCisjZWxpZiBkZWZpbmVkKF9fcHBjX18pCisjZGVmaW5lIF9fTlJfaW9wcmlvX3NldAkJMjczCisjZGVmaW5lIF9fTlJfaW9wcmlvX2dldAkJMjc0CisjZWxpZiBkZWZpbmVkKF9feDg2XzY0X18pCisjZGVmaW5lIF9fTlJfaW9wcmlvX3NldAkJMjUxCisjZGVmaW5lIF9fTlJfaW9wcmlvX2dldAkJMjUyCisjZWxpZiBkZWZpbmVkKF9faWE2NF9fKQorI2RlZmluZSBfX05SX2lvcHJpb19zZXQJCTEyNzQKKyNkZWZpbmUgX19OUl9pb3ByaW9fZ2V0CQkxMjc1CisjZWxzZQorI2Vycm9yICJVbnN1cHBvcnRlZCBhcmNoIgorI2VuZGlmCisKK3N0YXRpYyBpbmxpbmUgaW50IGlvcHJpb19zZXQoaW50IHdoaWNoLCBpbnQgd2hvLCBpbnQgaW9wcmlvKQoreworCXJldHVybiBzeXNjYWxsKF9fTlJfaW9wcmlvX3NldCwgd2hpY2gsIHdobywgaW9wcmlvKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgaW9wcmlvX2dldChpbnQgd2hpY2gsIGludCB3aG8pCit7CisJcmV0dXJuIHN5c2NhbGwoX19OUl9pb3ByaW9fZ2V0LCB3aGljaCwgd2hvKTsKK30KKworZW51bSB7CisJSU9QUklPX0NMQVNTX05PTkUsCisJSU9QUklPX0NMQVNTX1JULAorCUlPUFJJT19DTEFTU19CRSwKKwlJT1BSSU9fQ0xBU1NfSURMRSwKK307CisKK2VudW0geworCUlPUFJJT19XSE9fUFJPQ0VTUyA9IDEsCisJSU9QUklPX1dIT19QR1JQLAorCUlPUFJJT19XSE9fVVNFUiwKK307CisKKyNkZWZpbmUgSU9QUklPX0NMQVNTX1NISUZUCTEzCisKK2NvbnN0IGNoYXIgKnRvX3ByaW9bXSA9IHsgIm5vbmUiLCAicmVhbHRpbWUiLCAiYmVzdC1lZmZvcnQiLCAiaWRsZSIsIH07CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJaW50IGlvcHJpbyA9IDQsIHNldCA9IDAsIGlvcHJpb19jbGFzcyA9IElPUFJJT19DTEFTU19CRTsKKwlpbnQgYywgcGlkID0gMDsKKworCXdoaWxlICgoYyA9IGdldG9wdChhcmdjLCBhcmd2LCAiK246YzpwOiIpKSAhPSBFT0YpIHsKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ24nOgorCQkJaW9wcmlvID0gc3RydG9sKG9wdGFyZywgTlVMTCwgMTApOworCQkJc2V0ID0gMTsKKwkJCWJyZWFrOworCQljYXNlICdjJzoKKwkJCWlvcHJpb19jbGFzcyA9IHN0cnRvbChvcHRhcmcsIE5VTEwsIDEwKTsKKwkJCXNldCA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAncCc6CisJCQlwaWQgPSBzdHJ0b2wob3B0YXJnLCBOVUxMLCAxMCk7CisJCQlicmVhazsKKwkJfQorCX0KKworCXN3aXRjaCAoaW9wcmlvX2NsYXNzKSB7CisJCWNhc2UgSU9QUklPX0NMQVNTX05PTkU6CisJCQlpb3ByaW9fY2xhc3MgPSBJT1BSSU9fQ0xBU1NfQkU7CisJCQlicmVhazsKKwkJY2FzZSBJT1BSSU9fQ0xBU1NfUlQ6CisJCWNhc2UgSU9QUklPX0NMQVNTX0JFOgorCQkJYnJlYWs7CisJCWNhc2UgSU9QUklPX0NMQVNTX0lETEU6CisJCQlpb3ByaW8gPSA3OworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlwcmludGYoImJhZCBwcmlvIGNsYXNzICVkXG4iLCBpb3ByaW9fY2xhc3MpOworCQkJcmV0dXJuIDE7CisJfQorCisJaWYgKCFzZXQpIHsKKwkJaWYgKCFwaWQgJiYgYXJndltvcHRpbmRdKQorCQkJcGlkID0gc3RydG9sKGFyZ3Zbb3B0aW5kXSwgTlVMTCwgMTApOworCisJCWlvcHJpbyA9IGlvcHJpb19nZXQoSU9QUklPX1dIT19QUk9DRVNTLCBwaWQpOworCisJCXByaW50ZigicGlkPSVkLCAlZFxuIiwgcGlkLCBpb3ByaW8pOworCisJCWlmIChpb3ByaW8gPT0gLTEpCisJCQlwZXJyb3IoImlvcHJpb19nZXQiKTsKKwkJZWxzZSB7CisJCQlpb3ByaW9fY2xhc3MgPSBpb3ByaW8gPj4gSU9QUklPX0NMQVNTX1NISUZUOworCQkJaW9wcmlvID0gaW9wcmlvICYgMHhmZjsKKwkJCXByaW50ZigiJXM6IHByaW8gJWRcbiIsIHRvX3ByaW9baW9wcmlvX2NsYXNzXSwgaW9wcmlvKTsKKwkJfQorCX0gZWxzZSB7CisJCWlmIChpb3ByaW9fc2V0KElPUFJJT19XSE9fUFJPQ0VTUywgcGlkLCBpb3ByaW8gfCBpb3ByaW9fY2xhc3MgPDwgSU9QUklPX0NMQVNTX1NISUZUKSA9PSAtMSkgeworCQkJcGVycm9yKCJpb3ByaW9fc2V0Iik7CisJCQlyZXR1cm4gMTsKKwkJfQorCisJCWlmIChhcmd2W29wdGluZF0pCisJCQlleGVjdnAoYXJndltvcHRpbmRdLCAmYXJndltvcHRpbmRdKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworLS0tPiBzbmlwIGlvbmljZS5jIHRvb2wgPC0tLQorCisKK01hcmNoIDExIDIwMDUsIEplbnMgQXhib2UgPGplbnMuYXhib2VAb3JhY2xlLmNvbT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYmxvY2svbnVsbF9ibGsudHh0IGIvRG9jdW1lbnRhdGlvbi9ibG9jay9udWxsX2Jsay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg4ODBjYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYmxvY2svbnVsbF9ibGsudHh0CkBAIC0wLDAgKzEsNzUgQEAKK051bGwgYmxvY2sgZGV2aWNlIGRyaXZlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSS4gT3ZlcnZpZXcKKworVGhlIG51bGwgYmxvY2sgZGV2aWNlICgvZGV2L251bGxiKikgaXMgdXNlZCBmb3IgYmVuY2htYXJraW5nIHRoZSB2YXJpb3VzCitibG9jay1sYXllciBpbXBsZW1lbnRhdGlvbnMuIEl0IGVtdWxhdGVzIGEgYmxvY2sgZGV2aWNlIG9mIFggZ2lnYWJ5dGVzIGluIHNpemUuCitUaGUgZm9sbG93aW5nIGluc3RhbmNlcyBhcmUgcG9zc2libGU6CisKKyAgU2luZ2xlLXF1ZXVlIGJsb2NrLWxheWVyCisgICAgLSBSZXF1ZXN0LWJhc2VkLgorICAgIC0gU2luZ2xlIHN1Ym1pc3Npb24gcXVldWUgcGVyIGRldmljZS4KKyAgICAtIEltcGxlbWVudHMgSU8gc2NoZWR1bGluZyBhbGdvcml0aG1zIChDRlEsIERlYWRsaW5lLCBub29wKS4KKyAgTXVsdGktcXVldWUgYmxvY2stbGF5ZXIKKyAgICAtIFJlcXVlc3QtYmFzZWQuCisgICAgLSBDb25maWd1cmFibGUgc3VibWlzc2lvbiBxdWV1ZXMgcGVyIGRldmljZS4KKyAgTm8gYmxvY2stbGF5ZXIgKEtub3duIGFzIGJpby1iYXNlZCkKKyAgICAtIEJpby1iYXNlZC4gSU8gcmVxdWVzdHMgYXJlIHN1Ym1pdHRlZCBkaXJlY3RseSB0byB0aGUgZGV2aWNlIGRyaXZlci4KKyAgICAtIERpcmVjdGx5IGFjY2VwdHMgYmlvIGRhdGEgc3RydWN0dXJlIGFuZCByZXR1cm5zIHRoZW0uCisKK0FsbCBvZiB0aGVtIGhhdmUgYSBjb21wbGV0aW9uIHF1ZXVlIGZvciBlYWNoIGNvcmUgaW4gdGhlIHN5c3RlbS4KKworSUkuIE1vZHVsZSBwYXJhbWV0ZXJzIGFwcGxpY2FibGUgZm9yIGFsbCBpbnN0YW5jZXM6CisKK3F1ZXVlX21vZGU9WzAtMl06IERlZmF1bHQ6IDItTXVsdGktcXVldWUKKyAgU2VsZWN0cyB3aGljaCBibG9jay1sYXllciB0aGUgbW9kdWxlIHNob3VsZCBpbnN0YW50aWF0ZSB3aXRoLgorCisgIDA6IEJpby1iYXNlZC4KKyAgMTogU2luZ2xlLXF1ZXVlLgorICAyOiBNdWx0aS1xdWV1ZS4KKworaG9tZV9ub2RlPVswLS1ucl9ub2Rlc106IERlZmF1bHQ6IE5VTUFfTk9fTk9ERQorICBTZWxlY3RzIHdoYXQgQ1BVIG5vZGUgdGhlIGRhdGEgc3RydWN0dXJlcyBhcmUgYWxsb2NhdGVkIGZyb20uCisKK2diPVtTaXplIGluIEdCXTogRGVmYXVsdDogMjUwR0IKKyAgVGhlIHNpemUgb2YgdGhlIGRldmljZSByZXBvcnRlZCB0byB0aGUgc3lzdGVtLgorCiticz1bQmxvY2sgc2l6ZSAoaW4gYnl0ZXMpXTogRGVmYXVsdDogNTEyIGJ5dGVzCisgIFRoZSBibG9jayBzaXplIHJlcG9ydGVkIHRvIHRoZSBzeXN0ZW0uCisKK25yX2RldmljZXM9W051bWJlciBvZiBkZXZpY2VzXTogRGVmYXVsdDogMgorICBOdW1iZXIgb2YgYmxvY2sgZGV2aWNlcyBpbnN0YW50aWF0ZWQuIFRoZXkgYXJlIGluc3RhbnRpYXRlZCBhcyAvZGV2L251bGxiMCwKKyAgZXRjLgorCitpcnFtb2RlPVswLTJdOiBEZWZhdWx0OiAxLVNvZnQtaXJxCisgIFRoZSBjb21wbGV0aW9uIG1vZGUgdXNlZCBmb3IgY29tcGxldGluZyBJT3MgdG8gdGhlIGJsb2NrLWxheWVyLgorCisgIDA6IE5vbmUuCisgIDE6IFNvZnQtaXJxLiBVc2VzIElQSSB0byBjb21wbGV0ZSBJT3MgYWNyb3NzIENQVSBub2Rlcy4gU2ltdWxhdGVzIHRoZSBvdmVyaGVhZAorICAgICB3aGVuIElPcyBhcmUgaXNzdWVkIGZyb20gYW5vdGhlciBDUFUgbm9kZSB0aGFuIHRoZSBob21lIHRoZSBkZXZpY2UgaXMKKyAgICAgY29ubmVjdGVkIHRvLgorICAyOiBUaW1lcjogV2FpdHMgYSBzcGVjaWZpYyBwZXJpb2QgKGNvbXBsZXRpb25fbnNlYykgZm9yIGVhY2ggSU8gYmVmb3JlCisgICAgIGNvbXBsZXRpb24uCisKK2NvbXBsZXRpb25fbnNlYz1bbnNdOiBEZWZhdWx0OiAxMC4wMDBucworICBDb21iaW5lZCB3aXRoIGlycW1vZGU9MiAodGltZXIpLiBUaGUgdGltZSBlYWNoIGNvbXBsZXRpb24gZXZlbnQgbXVzdCB3YWl0LgorCitzdWJtaXRfcXVldWVzPVswLi5ucl9jcHVzXToKKyAgVGhlIG51bWJlciBvZiBzdWJtaXNzaW9uIHF1ZXVlcyBhdHRhY2hlZCB0byB0aGUgZGV2aWNlIGRyaXZlci4gSWYgdW5zZXQsIGl0CisgIGRlZmF1bHRzIHRvIDEgb24gc2luZ2xlLXF1ZXVlIGFuZCBiaW8tYmFzZWQgaW5zdGFuY2VzLiBGb3IgbXVsdGktcXVldWUsCisgIGl0IGlzIGlnbm9yZWQgd2hlbiB1c2VfcGVyX25vZGVfaGN0eCBtb2R1bGUgcGFyYW1ldGVyIGlzIDEuCisKK2h3X3F1ZXVlX2RlcHRoPVswLi5xZGVwdGhdOiBEZWZhdWx0OiA2NAorICBUaGUgaGFyZHdhcmUgcXVldWUgZGVwdGggb2YgdGhlIGRldmljZS4KKworSUlJOiBNdWx0aS1xdWV1ZSBzcGVjaWZpYyBwYXJhbWV0ZXJzCisKK3VzZV9wZXJfbm9kZV9oY3R4PVswLzFdOiBEZWZhdWx0OiAwCisgIDA6IFRoZSBudW1iZXIgb2Ygc3VibWl0IHF1ZXVlcyBhcmUgc2V0IHRvIHRoZSB2YWx1ZSBvZiB0aGUgc3VibWl0X3F1ZXVlcworICAgICBwYXJhbWV0ZXIuCisgIDE6IFRoZSBtdWx0aS1xdWV1ZSBibG9jayBsYXllciBpcyBpbnN0YW50aWF0ZWQgd2l0aCBhIGhhcmR3YXJlIGRpc3BhdGNoCisgICAgIHF1ZXVlIGZvciBlYWNoIENQVSBub2RlIGluIHRoZSBzeXN0ZW0uCisKK3VzZV9saWdodG52bT1bMC8xXTogRGVmYXVsdDogMAorICBSZWdpc3RlciBkZXZpY2Ugd2l0aCBMaWdodE5WTS4gUmVxdWlyZXMgYmxrLW1xIHRvIGJlIHVzZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Jsb2NrL3ByLnR4dCBiL0RvY3VtZW50YXRpb24vYmxvY2svcHIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzZWIxY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrL3ByLnR4dApAQCAtMCwwICsxLDExOSBAQAorCitCbG9jayBsYXllciBzdXBwb3J0IGZvciBQZXJzaXN0ZW50IFJlc2VydmF0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIExpbnV4IGtlcm5lbCBzdXBwb3J0cyBhIHVzZXIgc3BhY2UgaW50ZXJmYWNlIGZvciBzaW1wbGlmaWVkCitQZXJzaXN0ZW50IFJlc2VydmF0aW9ucyB3aGljaCBtYXAgdG8gYmxvY2sgZGV2aWNlcyB0aGF0IHN1cHBvcnQKK3RoZXNlIChsaWtlIFNDU0kpLiBQZXJzaXN0ZW50IFJlc2VydmF0aW9ucyBhbGxvdyByZXN0cmljdGluZworYWNjZXNzIHRvIGJsb2NrIGRldmljZXMgdG8gc3BlY2lmaWMgaW5pdGlhdG9ycyBpbiBhIHNoYXJlZCBzdG9yYWdlCitzZXR1cC4KKworVGhpcyBkb2N1bWVudCBnaXZlcyBhIGdlbmVyYWwgb3ZlcnZpZXcgb2YgdGhlIHN1cHBvcnQgaW9jdGwgY29tbWFuZHMuCitGb3IgYSBtb3JlIGRldGFpbGVkIHJlZmVyZW5jZSBwbGVhc2UgcmVmZXIgdGhlIHRoZSBTQ1NJIFByaW1hcnkKK0NvbW1hbmRzIHN0YW5kYXJkLCBzcGVjaWZpY2FsbHkgdGhlIHNlY3Rpb24gb24gUmVzZXJ2YXRpb25zIGFuZCB0aGUKKyJQRVJTSVNURU5UIFJFU0VSVkUgSU4iIGFuZCAiUEVSU0lTVEVOVCBSRVNFUlZFIE9VVCIgY29tbWFuZHMuCisKK0FsbCBpbXBsZW1lbnRhdGlvbnMgYXJlIGV4cGVjdGVkIHRvIGVuc3VyZSB0aGUgcmVzZXJ2YXRpb25zIHN1cnZpdmUKK2EgcG93ZXIgbG9zcyBhbmQgY292ZXIgYWxsIGNvbm5lY3Rpb25zIGluIGEgbXVsdGkgcGF0aCBlbnZpcm9ubWVudC4KK1RoZXNlIGJlaGF2aW9ycyBhcmUgb3B0aW9uYWwgaW4gU1BDIGJ1dCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgYXBwbGllZAorYnkgTGludXguCisKKworVGhlIGZvbGxvd2luZyB0eXBlcyBvZiByZXNlcnZhdGlvbnMgYXJlIHN1cHBvcnRlZDoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAtIFBSX1dSSVRFX0VYQ0xVU0lWRQorCisJT25seSB0aGUgaW5pdGlhdG9yIHRoYXQgb3ducyB0aGUgcmVzZXJ2YXRpb24gY2FuIHdyaXRlIHRvIHRoZQorCWRldmljZS4gIEFueSBpbml0aWF0b3IgY2FuIHJlYWQgZnJvbSB0aGUgZGV2aWNlLgorCisgLSBQUl9FWENMVVNJVkVfQUNDRVNTCisKKwlPbmx5IHRoZSBpbml0aWF0b3IgdGhhdCBvd25zIHRoZSByZXNlcnZhdGlvbiBjYW4gYWNjZXNzIHRoZQorCWRldmljZS4KKworIC0gUFJfV1JJVEVfRVhDTFVTSVZFX1JFR19PTkxZCisKKwlPbmx5IGluaXRpYXRvcnMgd2l0aCBhIHJlZ2lzdGVyZWQga2V5IGNhbiB3cml0ZSB0byB0aGUgZGV2aWNlLAorCUFueSBpbml0aWF0b3IgY2FuIHJlYWQgZnJvbSB0aGUgZGV2aWNlLgorCisgLSBQUl9FWENMVVNJVkVfQUNDRVNTX1JFR19PTkxZCisKKwlPbmx5IGluaXRpYXRvcnMgd2l0aCBhIHJlZ2lzdGVyZWQga2V5IGNhbiBhY2Nlc3MgdGhlIGRldmljZS4KKworIC0gUFJfV1JJVEVfRVhDTFVTSVZFX0FMTF9SRUdTCisKKwlPbmx5IGluaXRpYXRvcnMgd2l0aCBhIHJlZ2lzdGVyZWQga2V5IGNhbiB3cml0ZSB0byB0aGUgZGV2aWNlLAorCUFueSBpbml0aWF0b3IgY2FuIHJlYWQgZnJvbSB0aGUgZGV2aWNlLgorCUFsbCBpbml0aWF0b3JzIHdpdGggYSByZWdpc3RlcmVkIGtleSBhcmUgY29uc2lkZXJlZCByZXNlcnZhdGlvbgorCWhvbGRlcnMuCisJUGxlYXNlIHJlZmVyZW5jZSB0aGUgU1BDIHNwZWMgb24gdGhlIG1lYW5pbmcgb2YgYSByZXNlcnZhdGlvbgorCWhvbGRlciBpZiB5b3Ugd2FudCB0byB1c2UgdGhpcyB0eXBlLiAKKworIC0gUFJfRVhDTFVTSVZFX0FDQ0VTU19BTExfUkVHUworCisJT25seSBpbml0aWF0b3JzIHdpdGggYSByZWdpc3RlcmVkIGtleSBjYW4gYWNjZXNzIHRoZSBkZXZpY2UuCisJQWxsIGluaXRpYXRvcnMgd2l0aCBhIHJlZ2lzdGVyZWQga2V5IGFyZSBjb25zaWRlcmVkIHJlc2VydmF0aW9uCisJaG9sZGVycy4KKwlQbGVhc2UgcmVmZXJlbmNlIHRoZSBTUEMgc3BlYyBvbiB0aGUgbWVhbmluZyBvZiBhIHJlc2VydmF0aW9uCisJaG9sZGVyIGlmIHlvdSB3YW50IHRvIHVzZSB0aGlzIHR5cGUuIAorCisKK1RoZSBmb2xsb3dpbmcgaW9jdGwgYXJlIHN1cHBvcnRlZDoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworMS4gSU9DX1BSX1JFR0lTVEVSCisKK1RoaXMgaW9jdGwgY29tbWFuZCByZWdpc3RlcnMgYSBuZXcgcmVzZXJ2YXRpb24gaWYgdGhlIG5ld19rZXkgYXJndW1lbnQKK2lzIG5vbi1udWxsLiAgSWYgbm8gZXhpc3RpbmcgcmVzZXJ2YXRpb24gZXhpc3RzIG9sZF9rZXkgbXVzdCBiZSB6ZXJvLAoraWYgYW4gZXhpc3RpbmcgcmVzZXJ2YXRpb24gc2hvdWxkIGJlIHJlcGxhY2VkIG9sZF9rZXkgbXVzdCBjb250YWluCit0aGUgb2xkIHJlc2VydmF0aW9uIGtleS4KKworSWYgdGhlIG5ld19rZXkgYXJndW1lbnQgaXMgMCBpdCB1bnJlZ2lzdGVycyB0aGUgZXhpc3RpbmcgcmVzZXJ2YXRpb24gcGFzc2VkCitpbiBvbGRfa2V5LgorCisKKzIuIElPQ19QUl9SRVNFUlZFCisKK1RoaXMgaW9jdGwgY29tbWFuZCByZXNlcnZlcyB0aGUgZGV2aWNlIGFuZCB0aHVzIHJlc3RyaWN0cyBhY2Nlc3MgZm9yIG90aGVyCitkZXZpY2VzIGJhc2VkIG9uIHRoZSB0eXBlIGFyZ3VtZW50LiAgVGhlIGtleSBhcmd1bWVudCBtdXN0IGJlIHRoZSBleGlzdGluZworcmVzZXJ2YXRpb24ga2V5IGZvciB0aGUgZGV2aWNlIGFzIGFjcXVpcmVkIGJ5IHRoZSBJT0NfUFJfUkVHSVNURVIsCitJT0NfUFJfUkVHSVNURVJfSUdOT1JFLCBJT0NfUFJfUFJFRU1QVCBvciBJT0NfUFJfUFJFRU1QVF9BQk9SVCBjb21tYW5kcy4KKworCiszLiBJT0NfUFJfUkVMRUFTRQorCitUaGlzIGlvY3RsIGNvbW1hbmQgcmVsZWFzZXMgdGhlIHJlc2VydmF0aW9uIHNwZWNpZmllZCBieSBrZXkgYW5kIGZsYWdzCithbmQgdGh1cyByZW1vdmVzIGFueSBhY2Nlc3MgcmVzdHJpY3Rpb24gaW1wbGllZCBieSBpdC4KKworCis0LiBJT0NfUFJfUFJFRU1QVAorCitUaGlzIGlvY3RsIGNvbW1hbmQgcmVsZWFzZXMgdGhlIGV4aXN0aW5nIHJlc2VydmF0aW9uIHJlZmVycmVkIHRvIGJ5CitvbGRfa2V5IGFuZCByZXBsYWNlcyBpdCB3aXRoIGEgYSBuZXcgcmVzZXJ2YXRpb24gb2YgdHlwZSBmb3IgdGhlCityZXNlcnZhdGlvbiBrZXkgbmV3X2tleS4KKworCis1LiBJT0NfUFJfUFJFRU1QVF9BQk9SVAorCitUaGlzIGlvY3RsIGNvbW1hbmQgd29ya3MgbGlrZSBJT0NfUFJfUFJFRU1QVCBleGNlcHQgdGhhdCBpdCBhbHNvIGFib3J0cworYW55IG91dHN0YW5kaW5nIGNvbW1hbmQgc2VudCBvdmVyIGEgY29ubmVjdGlvbiBpZGVudGlmaWVkIGJ5IG9sZF9rZXkuCisKKzYuIElPQ19QUl9DTEVBUgorCitUaGlzIGlvY3RsIGNvbW1hbmQgdW5yZWdpc3RlcnMgYm90aCBrZXkgYW5kIGFueSBvdGhlciByZXNlcnZhdGlvbiBrZXkKK3JlZ2lzdGVyZWQgd2l0aCB0aGUgZGV2aWNlIGFuZCBkcm9wcyBhbnkgZXhpc3RpbmcgcmVzZXJ2YXRpb24uCisKKworRmxhZ3MKKy0tLS0tCisKK0FsbCB0aGUgaW9jdGxzIGhhdmUgYSBmbGFnIGZpZWxkLiAgQ3VycmVudGx5IG9ubHkgb25lIGZsYWcgaXMgc3VwcG9ydGVkOgorCisgLSBQUl9GTF9JR05PUkVfS0VZCisKKwlJZ25vcmUgdGhlIGV4aXN0aW5nIHJlc2VydmF0aW9uIGtleS4gIFRoaXMgaXMgY29tbW9ubHkgc3VwcG9ydGVkIGZvcgorCUlPQ19QUl9SRUdJU1RFUiwgYW5kIHNvbWUgaW1wbGVtZW50YXRpb24gbWF5IHN1cHBvcnQgdGhlIGZsYWcgZm9yCisJSU9DX1BSX1JFU0VSVkUuCisKK0ZvciBhbGwgdW5rbm93biBmbGFncyB0aGUga2VybmVsIHdpbGwgcmV0dXJuIC1FT1BOT1RTVVBQLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibG9jay9xdWV1ZS1zeXNmcy50eHQgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrL3F1ZXVlLXN5c2ZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWQ5MTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9ibG9jay9xdWV1ZS1zeXNmcy50eHQKQEAgLTAsMCArMSwxNDYgQEAKK1F1ZXVlIHN5c2ZzIGZpbGVzCis9PT09PT09PT09PT09PT09PQorCitUaGlzIHRleHQgZmlsZSB3aWxsIGRldGFpbCB0aGUgcXVldWUgZmlsZXMgdGhhdCBhcmUgbG9jYXRlZCBpbiB0aGUgc3lzZnMgdHJlZQorZm9yIGVhY2ggYmxvY2sgZGV2aWNlLiBOb3RlIHRoYXQgc3RhY2tlZCBkZXZpY2VzIHR5cGljYWxseSBkbyBub3QgZXhwb3J0Cithbnkgc2V0dGluZ3MsIHNpbmNlIHRoZWlyIHF1ZXVlIG1lcmVseSBmdW5jdGlvbnMgYXJlIGEgcmVtYXBwaW5nIHRhcmdldC4KK1RoZXNlIGZpbGVzIGFyZSB0aGUgb25lcyBmb3VuZCBpbiB0aGUgL3N5cy9ibG9jay94eHgvcXVldWUvIGRpcmVjdG9yeS4KKworRmlsZXMgZGVub3RlZCB3aXRoIGEgUk8gcG9zdGZpeCBhcmUgcmVhZG9ubHkgYW5kIHRoZSBSVyBwb3N0Zml4IG1lYW5zCityZWFkLXdyaXRlLgorCithZGRfcmFuZG9tIChSVykKKy0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgZmlsZSBhbGxvd3MgdG8gdHVybiBvZmYgdGhlIGRpc2sgZW50cm9weSBjb250cmlidXRpb24uIERlZmF1bHQKK3ZhbHVlIG9mIHRoaXMgZmlsZSBpcyAnMScob24pLgorCitkaXNjYXJkX2dyYW51bGFyaXR5IChSTykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGlzIHNob3dzIHRoZSBzaXplIG9mIGludGVybmFsIGFsbG9jYXRpb24gb2YgdGhlIGRldmljZSBpbiBieXRlcywgaWYKK3JlcG9ydGVkIGJ5IHRoZSBkZXZpY2UuIEEgdmFsdWUgb2YgJzAnIG1lYW5zIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0Cit0aGUgZGlzY2FyZCBmdW5jdGlvbmFsaXR5LgorCitkaXNjYXJkX21heF9od19ieXRlcyAoUk8pCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEZXZpY2VzIHRoYXQgc3VwcG9ydCBkaXNjYXJkIGZ1bmN0aW9uYWxpdHkgbWF5IGhhdmUgaW50ZXJuYWwgbGltaXRzIG9uCit0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgY2FuIGJlIHRyaW1tZWQgb3IgdW5tYXBwZWQgaW4gYSBzaW5nbGUgb3BlcmF0aW9uLgorVGhlIGRpc2NhcmRfbWF4X2J5dGVzIHBhcmFtZXRlciBpcyBzZXQgYnkgdGhlIGRldmljZSBkcml2ZXIgdG8gdGhlIG1heGltdW0KK251bWJlciBvZiBieXRlcyB0aGF0IGNhbiBiZSBkaXNjYXJkZWQgaW4gYSBzaW5nbGUgb3BlcmF0aW9uLiBEaXNjYXJkCityZXF1ZXN0cyBpc3N1ZWQgdG8gdGhlIGRldmljZSBtdXN0IG5vdCBleGNlZWQgdGhpcyBsaW1pdC4gQSBkaXNjYXJkX21heF9ieXRlcwordmFsdWUgb2YgMCBtZWFucyB0aGF0IHRoZSBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBkaXNjYXJkIGZ1bmN0aW9uYWxpdHkuCisKK2Rpc2NhcmRfbWF4X2J5dGVzIChSVykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1doaWxlIGRpc2NhcmRfbWF4X2h3X2J5dGVzIGlzIHRoZSBoYXJkd2FyZSBsaW1pdCBmb3IgdGhlIGRldmljZSwgdGhpcworc2V0dGluZyBpcyB0aGUgc29mdHdhcmUgbGltaXQuIFNvbWUgZGV2aWNlcyBleGhpYml0IGxhcmdlIGxhdGVuY2llcyB3aGVuCitsYXJnZSBkaXNjYXJkcyBhcmUgaXNzdWVkLCBzZXR0aW5nIHRoaXMgdmFsdWUgbG93ZXIgd2lsbCBtYWtlIExpbnV4IGlzc3VlCitzbWFsbGVyIGRpc2NhcmRzIGFuZCBwb3RlbnRpYWxseSBoZWxwIHJlZHVjZSBsYXRlbmNpZXMgaW5kdWNlZCBieSBsYXJnZQorZGlzY2FyZCBvcGVyYXRpb25zLgorCitkaXNjYXJkX3plcm9lc19kYXRhIChSTykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorV2hlbiByZWFkLCB0aGlzIGZpbGUgd2lsbCBzaG93IGlmIHRoZSBkaXNjYXJkZWQgYmxvY2sgYXJlIHplcm9lZCBieSB0aGUKK2RldmljZSBvciBub3QuIElmIGl0cyB2YWx1ZSBpcyAnMScgdGhlIGJsb2NrcyBhcmUgemVyb2VkIG90aGVyd2lzZSBub3QuCisKK2h3X3NlY3Rvcl9zaXplIChSTykKKy0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgaXMgdGhlIGhhcmR3YXJlIHNlY3RvciBzaXplIG9mIHRoZSBkZXZpY2UsIGluIGJ5dGVzLgorCitpb3N0YXRzIChSVykKKy0tLS0tLS0tLS0tLS0KK1RoaXMgZmlsZSBpcyB1c2VkIHRvIGNvbnRyb2wgKG9uL29mZikgdGhlIGlvc3RhdHMgYWNjb3VudGluZyBvZiB0aGUKK2Rpc2suCisKK2xvZ2ljYWxfYmxvY2tfc2l6ZSAoUk8pCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhpcyBpcyB0aGUgbG9nY2FsIGJsb2NrIHNpemUgb2YgdGhlIGRldmljZSwgaW4gYnl0ZXMuCisKK21heF9od19zZWN0b3JzX2tiIChSTykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgaXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGtpbG9ieXRlcyBzdXBwb3J0ZWQgaW4gYSBzaW5nbGUgZGF0YSB0cmFuc2Zlci4KKworbWF4X2ludGVncml0eV9zZWdtZW50cyAoUk8pCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1doZW4gcmVhZCwgdGhpcyBmaWxlIHNob3dzIHRoZSBtYXggbGltaXQgb2YgaW50ZWdyaXR5IHNlZ21lbnRzIGFzCitzZXQgYnkgYmxvY2sgbGF5ZXIgd2hpY2ggYSBoYXJkd2FyZSBjb250cm9sbGVyIGNhbiBoYW5kbGUuCisKK21heF9zZWN0b3JzX2tiIChSVykKKy0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgaXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGtpbG9ieXRlcyB0aGF0IHRoZSBibG9jayBsYXllciB3aWxsIGFsbG93Citmb3IgYSBmaWxlc3lzdGVtIHJlcXVlc3QuIE11c3QgYmUgc21hbGxlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBtYXhpbXVtCitzaXplIGFsbG93ZWQgYnkgdGhlIGhhcmR3YXJlLgorCittYXhfc2VnbWVudHMgKFJPKQorLS0tLS0tLS0tLS0tLS0tLS0KK01heGltdW0gbnVtYmVyIG9mIHNlZ21lbnRzIG9mIHRoZSBkZXZpY2UuCisKK21heF9zZWdtZW50X3NpemUgKFJPKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitNYXhpbXVtIHNlZ21lbnQgc2l6ZSBvZiB0aGUgZGV2aWNlLgorCittaW5pbXVtX2lvX3NpemUgKFJPKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgaXMgdGhlIHNtYWxsZXN0IHByZWZlcnJlZCBJTyBzaXplIHJlcG9ydGVkIGJ5IHRoZSBkZXZpY2UuCisKK25vbWVyZ2VzIChSVykKKy0tLS0tLS0tLS0tLS0KK1RoaXMgZW5hYmxlcyB0aGUgdXNlciB0byBkaXNhYmxlIHRoZSBsb29rdXAgbG9naWMgaW52b2x2ZWQgd2l0aCBJTworbWVyZ2luZyByZXF1ZXN0cyBpbiB0aGUgYmxvY2sgbGF5ZXIuIEJ5IGRlZmF1bHQgKDApIGFsbCBtZXJnZXMgYXJlCitlbmFibGVkLiBXaGVuIHNldCB0byAxIG9ubHkgc2ltcGxlIG9uZS1oaXQgbWVyZ2VzIHdpbGwgYmUgdHJpZWQuIFdoZW4KK3NldCB0byAyIG5vIG1lcmdlIGFsZ29yaXRobXMgd2lsbCBiZSB0cmllZCAoaW5jbHVkaW5nIG9uZS1oaXQgb3IgbW9yZQorY29tcGxleCB0cmVlL2hhc2ggbG9va3VwcykuCisKK25yX3JlcXVlc3RzIChSVykKKy0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgY29udHJvbHMgaG93IG1hbnkgcmVxdWVzdHMgbWF5IGJlIGFsbG9jYXRlZCBpbiB0aGUgYmxvY2sgbGF5ZXIgZm9yCityZWFkIG9yIHdyaXRlIHJlcXVlc3RzLiBOb3RlIHRoYXQgdGhlIHRvdGFsIGFsbG9jYXRlZCBudW1iZXIgbWF5IGJlIHR3aWNlCit0aGlzIGFtb3VudCwgc2luY2UgaXQgYXBwbGllcyBvbmx5IHRvIHJlYWRzIG9yIHdyaXRlcyAobm90IHRoZSBhY2N1bXVsYXRlZAorc3VtKS4KKworVG8gYXZvaWQgcHJpb3JpdHkgaW52ZXJzaW9uIHRocm91Z2ggcmVxdWVzdCBzdGFydmF0aW9uLCBhIHJlcXVlc3QKK3F1ZXVlIG1haW50YWlucyBhIHNlcGFyYXRlIHJlcXVlc3QgcG9vbCBwZXIgZWFjaCBjZ3JvdXAgd2hlbgorQ09ORklHX0JMS19DR1JPVVAgaXMgZW5hYmxlZCwgYW5kIHRoaXMgcGFyYW1ldGVyIGFwcGxpZXMgdG8gZWFjaCBzdWNoCitwZXItYmxvY2stY2dyb3VwIHJlcXVlc3QgcG9vbC4gIElPVywgaWYgdGhlcmUgYXJlIE4gYmxvY2sgY2dyb3VwcywKK2VhY2ggcmVxdWVzdCBxdWV1ZSBtYXkgaGF2ZSB1cCB0byBOIHJlcXVlc3QgcG9vbHMsIGVhY2ggaW5kZXBlbmRlbnRseQorcmVndWxhdGVkIGJ5IG5yX3JlcXVlc3RzLgorCitvcHRpbWFsX2lvX3NpemUgKFJPKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgaXMgdGhlIG9wdGltYWwgSU8gc2l6ZSByZXBvcnRlZCBieSB0aGUgZGV2aWNlLgorCitwaHlzaWNhbF9ibG9ja19zaXplIChSTykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhpcyBpcyB0aGUgcGh5c2ljYWwgYmxvY2sgc2l6ZSBvZiBkZXZpY2UsIGluIGJ5dGVzLgorCityZWFkX2FoZWFkX2tiIChSVykKKy0tLS0tLS0tLS0tLS0tLS0tLQorTWF4aW11bSBudW1iZXIgb2Yga2lsb2J5dGVzIHRvIHJlYWQtYWhlYWQgZm9yIGZpbGVzeXN0ZW1zIG9uIHRoaXMgYmxvY2sKK2RldmljZS4KKworcm90YXRpb25hbCAoUlcpCistLS0tLS0tLS0tLS0tLS0KK1RoaXMgZmlsZSBpcyB1c2VkIHRvIHN0YXQgaWYgdGhlIGRldmljZSBpcyBvZiByb3RhdGlvbmFsIHR5cGUgb3IKK25vbi1yb3RhdGlvbmFsIHR5cGUuCisKK3JxX2FmZmluaXR5IChSVykKKy0tLS0tLS0tLS0tLS0tLS0KK0lmIHRoaXMgb3B0aW9uIGlzICcxJywgdGhlIGJsb2NrIGxheWVyIHdpbGwgbWlncmF0ZSByZXF1ZXN0IGNvbXBsZXRpb25zIHRvIHRoZQorY3B1ICJncm91cCIgdGhhdCBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0aGUgcmVxdWVzdC4gRm9yIHNvbWUgd29ya2xvYWRzIHRoaXMKK3Byb3ZpZGVzIGEgc2lnbmlmaWNhbnQgcmVkdWN0aW9uIGluIENQVSBjeWNsZXMgZHVlIHRvIGNhY2hpbmcgZWZmZWN0cy4KKworRm9yIHN0b3JhZ2UgY29uZmlndXJhdGlvbnMgdGhhdCBuZWVkIHRvIG1heGltaXplIGRpc3RyaWJ1dGlvbiBvZiBjb21wbGV0aW9uCitwcm9jZXNzaW5nIHNldHRpbmcgdGhpcyBvcHRpb24gdG8gJzInIGZvcmNlcyB0aGUgY29tcGxldGlvbiB0byBydW4gb24gdGhlCityZXF1ZXN0aW5nIGNwdSAoYnlwYXNzaW5nIHRoZSAiZ3JvdXAiIGFnZ3JlZ2F0aW9uIGxvZ2ljKS4KKworc2NoZWR1bGVyIChSVykKKy0tLS0tLS0tLS0tLS0tCitXaGVuIHJlYWQsIHRoaXMgZmlsZSB3aWxsIGRpc3BsYXkgdGhlIGN1cnJlbnQgYW5kIGF2YWlsYWJsZSBJTyBzY2hlZHVsZXJzCitmb3IgdGhpcyBibG9jayBkZXZpY2UuIFRoZSBjdXJyZW50bHkgYWN0aXZlIElPIHNjaGVkdWxlciB3aWxsIGJlIGVuY2xvc2VkCitpbiBbXSBicmFja2V0cy4gV3JpdGluZyBhbiBJTyBzY2hlZHVsZXIgbmFtZSB0byB0aGlzIGZpbGUgd2lsbCBzd2l0Y2gKK2NvbnRyb2wgb2YgdGhpcyBibG9jayBkZXZpY2UgdG8gdGhhdCBuZXcgSU8gc2NoZWR1bGVyLiBOb3RlIHRoYXQgd3JpdGluZworYW4gSU8gc2NoZWR1bGVyIG5hbWUgdG8gdGhpcyBmaWxlIHdpbGwgYXR0ZW1wdCB0byBsb2FkIHRoYXQgSU8gc2NoZWR1bGVyCittb2R1bGUsIGlmIGl0IGlzbid0IGFscmVhZHkgcHJlc2VudCBpbiB0aGUgc3lzdGVtLgorCisKKworSmVucyBBeGJvZSA8amVucy5heGJvZUBvcmFjbGUuY29tPiwgRmVicnVhcnkgMjAwOQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibG9jay9yZXF1ZXN0LnR4dCBiL0RvY3VtZW50YXRpb24vYmxvY2svcmVxdWVzdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU0ZTEwNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYmxvY2svcmVxdWVzdC50eHQKQEAgLTAsMCArMSw4OCBAQAorCitzdHJ1Y3QgcmVxdWVzdCBkb2N1bWVudGF0aW9uCisKK0plbnMgQXhib2UgPGplbnMuYXhib2VAb3JhY2xlLmNvbT4gMjcvMDUvMDIKKworMS4wCitJbmRleAorCisyLjAgU3RydWN0IHJlcXVlc3QgbWVtYmVycyBjbGFzc2lmaWNhdGlvbgorCisJMi4xIHN0cnVjdCByZXF1ZXN0IG1lbWJlcnMgZXhwbGFuYXRpb24KKworMy4wCisKKworMi4wCitTaG9ydCBleHBsYW5hdGlvbiBvZiByZXF1ZXN0IG1lbWJlcnMKKworQ2xhc3NpZmljYXRpb24gZmxhZ3M6CisKKwlECWRyaXZlciBtZW1iZXIKKwlCCWJsb2NrIGxheWVyIG1lbWJlcgorCUkJSS9PIHNjaGVkdWxlciBtZW1iZXIKKworVW5sZXNzIGFuIGVudHJ5IGNvbnRhaW5zIGEgRCBjbGFzc2lmaWNhdGlvbiwgYSBkZXZpY2UgZHJpdmVyIG11c3Qgbm90IGFjY2VzcwordGhpcyBtZW1iZXIuIFNvbWUgbWVtYmVycyBtYXkgY29udGFpbiBEIGNsYXNzaWZpY2F0aW9ucywgYnV0IHNob3VsZCBvbmx5IGJlCithY2Nlc3MgdGhyb3VnaCBjZXJ0YWluIG1hY3JvcyBvciBmdW5jdGlvbnMgKGVnIC0+ZmxhZ3MpLgorCis8bGludXgvYmxrZGV2Lmg+CisKKzIuMQorTWVtYmVyCQkJCUZsYWcJQ29tbWVudAorLS0tLS0tCQkJCS0tLS0JLS0tLS0tLQorCitzdHJ1Y3QgbGlzdF9oZWFkIHF1ZXVlbGlzdAlCSQlPcmdhbml6YXRpb24gb24gdmFyaW91cyBpbnRlcm5hbAorCQkJCQlxdWV1ZXMKKwordm9pZCAqZWxldmF0b3JfcHJpdmF0ZQkJSQlJL08gc2NoZWR1bGVyIHByaXZhdGUgZGF0YQorCit1bnNpZ25lZCBjaGFyIGNtZFsxNl0JCUQJRHJpdmVyIGNhbiB1c2UgdGhpcyBmb3Igc2V0dGluZyB1cAorCQkJCQlhIGNkYiBiZWZvcmUgZXhlY3V0aW9uLCBzZWUKKwkJCQkJYmxrX3F1ZXVlX3ByZXBfcnEKKwordW5zaWduZWQgbG9uZyBmbGFncwkJREJJCUNvbnRhaW5zIGluZm8gYWJvdXQgZGF0YSBkaXJlY3Rpb24sCisJCQkJCXJlcXVlc3QgdHlwZSwgZXRjLgorCitpbnQgcnFfc3RhdHVzCQkJRAlSZXF1ZXN0IHN0YXR1cyBiaXRzCisKK2tkZXZfdCBycV9kZXYJCQlEQkkJVGFyZ2V0IGRldmljZQorCitpbnQgZXJyb3JzCQkJREIJRXJyb3IgY291bnRzCisKK3NlY3Rvcl90IHNlY3RvcgkJCURCSQlUYXJnZXQgbG9jYXRpb24KKwordW5zaWduZWQgbG9uZyBoYXJkX25yX3NlY3RvcnMJQglVc2VkIHRvIGtlZXAgc2VjdG9yIHNhbmUKKwordW5zaWduZWQgbG9uZyBucl9zZWN0b3JzCURCSQlUb3RhbCBudW1iZXIgb2Ygc2VjdG9ycyBpbiByZXF1ZXN0CisKK3Vuc2lnbmVkIGxvbmcgaGFyZF9ucl9zZWN0b3JzCUIJVXNlZCB0byBrZWVwIG5yX3NlY3RvcnMgc2FuZQorCit1bnNpZ25lZCBzaG9ydCBucl9waHlzX3NlZ21lbnRzCURCCU51bWJlciBvZiBwaHlzaWNhbCBzY2F0dGVyIGdhdGhlcgorCQkJCQlzZWdtZW50cyBpbiBhIHJlcXVlc3QKKwordW5zaWduZWQgc2hvcnQgbnJfaHdfc2VnbWVudHMJREIJTnVtYmVyIG9mIGhhcmR3YXJlIHNjYXR0ZXIgZ2F0aGVyCisJCQkJCXNlZ21lbnRzIGluIGEgcmVxdWVzdAorCit1bnNpZ25lZCBpbnQgY3VycmVudF9ucl9zZWN0b3JzCURCCU51bWJlciBvZiBzZWN0b3JzIGluIGZpcnN0IHNlZ21lbnQKKwkJCQkJb2YgcmVxdWVzdAorCit1bnNpZ25lZCBpbnQgaGFyZF9jdXJfc2VjdG9ycwlCCVVzZWQgdG8ga2VlcCBjdXJyZW50X25yX3NlY3RvcnMgc2FuZQorCitpbnQgdGFnCQkJCURCCVRDUSB0YWcsIGlmIGFzc2lnbmVkCisKK3ZvaWQgKnNwZWNpYWwJCQlECUZyZWUgdG8gYmUgdXNlZCBieSBkcml2ZXIKKworY2hhciAqYnVmZmVyCQkJRAlNYXAgb2YgZmlyc3Qgc2VnbWVudCwgYWxzbyBzZWUKKwkJCQkJc2VjdGlvbiBvbiBib3VuY2luZyBTRUNUSU9OCisKK3N0cnVjdCBjb21wbGV0aW9uICp3YWl0aW5nCUQJQ2FuIGJlIHVzZWQgYnkgZHJpdmVyIHRvIGdldCBzaWduYWxsZWQKKwkJCQkJb24gcmVxdWVzdCBjb21wbGV0aW9uCisKK3N0cnVjdCBiaW8gKmJpbwkJCURCSQlGaXJzdCBiaW8gaW4gcmVxdWVzdAorCitzdHJ1Y3QgYmlvICpiaW90YWlsCQlEQkkJTGFzdCBiaW8gaW4gcmVxdWVzdAorCitzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcQkJREIJUmVxdWVzdCBxdWV1ZSB0aGlzIHJlcXVlc3QgYmVsb25ncyB0bworCitzdHJ1Y3QgcmVxdWVzdF9saXN0ICpybAkJQglSZXF1ZXN0IGxpc3QgdGhpcyByZXF1ZXN0IGNhbWUgZnJvbQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibG9jay9zdGF0LnR4dCBiL0RvY3VtZW50YXRpb24vYmxvY2svc3RhdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRiYzk0NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYmxvY2svc3RhdC50eHQKQEAgLTAsMCArMSw4MiBAQAorQmxvY2sgbGF5ZXIgc3RhdGlzdGljcyBpbiAvc3lzL2Jsb2NrLzxkZXY+L3N0YXQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgZmlsZSBkb2N1bWVudHMgdGhlIGNvbnRlbnRzIG9mIHRoZSAvc3lzL2Jsb2NrLzxkZXY+L3N0YXQgZmlsZS4KKworVGhlIHN0YXQgZmlsZSBwcm92aWRlcyBzZXZlcmFsIHN0YXRpc3RpY3MgYWJvdXQgdGhlIHN0YXRlIG9mIGJsb2NrCitkZXZpY2UgPGRldj4uCisKK1EuIFdoeSBhcmUgdGhlcmUgbXVsdGlwbGUgc3RhdGlzdGljcyBpbiBhIHNpbmdsZSBmaWxlPyAgRG9lc24ndCBzeXNmcworICAgbm9ybWFsbHkgY29udGFpbiBhIHNpbmdsZSB2YWx1ZSBwZXIgZmlsZT8KK0EuIEJ5IGhhdmluZyBhIHNpbmdsZSBmaWxlLCB0aGUga2VybmVsIGNhbiBndWFyYW50ZWUgdGhhdCB0aGUgc3RhdGlzdGljcworICAgcmVwcmVzZW50IGEgY29uc2lzdGVudCBzbmFwc2hvdCBvZiB0aGUgc3RhdGUgb2YgdGhlIGRldmljZS4gIElmIHRoZQorICAgc3RhdGlzdGljcyB3ZXJlIGV4cG9ydGVkIGFzIG11bHRpcGxlIGZpbGVzIGNvbnRhaW5pbmcgb25lIHN0YXRpc3RpYworICAgZWFjaCwgaXQgd291bGQgYmUgaW1wb3NzaWJsZSB0byBndWFyYW50ZWUgdGhhdCBhIHNldCBvZiByZWFkaW5ncworICAgcmVwcmVzZW50IGEgc2luZ2xlIHBvaW50IGluIHRpbWUuCisKK1RoZSBzdGF0IGZpbGUgY29uc2lzdHMgb2YgYSBzaW5nbGUgbGluZSBvZiB0ZXh0IGNvbnRhaW5pbmcgMTEgZGVjaW1hbAordmFsdWVzIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlLiAgVGhlIGZpZWxkcyBhcmUgc3VtbWFyaXplZCBpbiB0aGUKK2ZvbGxvd2luZyB0YWJsZSwgYW5kIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBiZWxvdy4KKworTmFtZSAgICAgICAgICAgIHVuaXRzICAgICAgICAgZGVzY3JpcHRpb24KKy0tLS0gICAgICAgICAgICAtLS0tLSAgICAgICAgIC0tLS0tLS0tLS0tCityZWFkIEkvT3MgICAgICAgcmVxdWVzdHMgICAgICBudW1iZXIgb2YgcmVhZCBJL09zIHByb2Nlc3NlZAorcmVhZCBtZXJnZXMgICAgIHJlcXVlc3RzICAgICAgbnVtYmVyIG9mIHJlYWQgSS9PcyBtZXJnZWQgd2l0aCBpbi1xdWV1ZSBJL08KK3JlYWQgc2VjdG9ycyAgICBzZWN0b3JzICAgICAgIG51bWJlciBvZiBzZWN0b3JzIHJlYWQKK3JlYWQgdGlja3MgICAgICBtaWxsaXNlY29uZHMgIHRvdGFsIHdhaXQgdGltZSBmb3IgcmVhZCByZXF1ZXN0cword3JpdGUgSS9PcyAgICAgIHJlcXVlc3RzICAgICAgbnVtYmVyIG9mIHdyaXRlIEkvT3MgcHJvY2Vzc2VkCit3cml0ZSBtZXJnZXMgICAgcmVxdWVzdHMgICAgICBudW1iZXIgb2Ygd3JpdGUgSS9PcyBtZXJnZWQgd2l0aCBpbi1xdWV1ZSBJL08KK3dyaXRlIHNlY3RvcnMgICBzZWN0b3JzICAgICAgIG51bWJlciBvZiBzZWN0b3JzIHdyaXR0ZW4KK3dyaXRlIHRpY2tzICAgICBtaWxsaXNlY29uZHMgIHRvdGFsIHdhaXQgdGltZSBmb3Igd3JpdGUgcmVxdWVzdHMKK2luX2ZsaWdodCAgICAgICByZXF1ZXN0cyAgICAgIG51bWJlciBvZiBJL09zIGN1cnJlbnRseSBpbiBmbGlnaHQKK2lvX3RpY2tzICAgICAgICBtaWxsaXNlY29uZHMgIHRvdGFsIHRpbWUgdGhpcyBibG9jayBkZXZpY2UgaGFzIGJlZW4gYWN0aXZlCit0aW1lX2luX3F1ZXVlICAgbWlsbGlzZWNvbmRzICB0b3RhbCB3YWl0IHRpbWUgZm9yIGFsbCByZXF1ZXN0cworCityZWFkIEkvT3MsIHdyaXRlIEkvT3MKKz09PT09PT09PT09PT09PT09PT09PQorCitUaGVzZSB2YWx1ZXMgaW5jcmVtZW50IHdoZW4gYW4gSS9PIHJlcXVlc3QgY29tcGxldGVzLgorCityZWFkIG1lcmdlcywgd3JpdGUgbWVyZ2VzCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZXNlIHZhbHVlcyBpbmNyZW1lbnQgd2hlbiBhbiBJL08gcmVxdWVzdCBpcyBtZXJnZWQgd2l0aCBhbgorYWxyZWFkeS1xdWV1ZWQgSS9PIHJlcXVlc3QuCisKK3JlYWQgc2VjdG9ycywgd3JpdGUgc2VjdG9ycworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZXNlIHZhbHVlcyBjb3VudCB0aGUgbnVtYmVyIG9mIHNlY3RvcnMgcmVhZCBmcm9tIG9yIHdyaXR0ZW4gdG8gdGhpcworYmxvY2sgZGV2aWNlLiAgVGhlICJzZWN0b3JzIiBpbiBxdWVzdGlvbiBhcmUgdGhlIHN0YW5kYXJkIFVOSVggNTEyLWJ5dGUKK3NlY3RvcnMsIG5vdCBhbnkgZGV2aWNlLSBvciBmaWxlc3lzdGVtLXNwZWNpZmljIGJsb2NrIHNpemUuICBUaGUKK2NvdW50ZXJzIGFyZSBpbmNyZW1lbnRlZCB3aGVuIHRoZSBJL08gY29tcGxldGVzLgorCityZWFkIHRpY2tzLCB3cml0ZSB0aWNrcworPT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlc2UgdmFsdWVzIGNvdW50IHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgSS9PIHJlcXVlc3RzIGhhdmUKK3dhaXRlZCBvbiB0aGlzIGJsb2NrIGRldmljZS4gIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBJL08gcmVxdWVzdHMgd2FpdGluZywKK3RoZXNlIHZhbHVlcyB3aWxsIGluY3JlYXNlIGF0IGEgcmF0ZSBncmVhdGVyIHRoYW4gMTAwMC9zZWNvbmQ7IGZvcgorZXhhbXBsZSwgaWYgNjAgcmVhZCByZXF1ZXN0cyB3YWl0IGZvciBhbiBhdmVyYWdlIG9mIDMwIG1zLCB0aGUgcmVhZF90aWNrcworZmllbGQgd2lsbCBpbmNyZWFzZSBieSA2MCozMCA9IDE4MDAuCisKK2luX2ZsaWdodAorPT09PT09PT09CisKK1RoaXMgdmFsdWUgY291bnRzIHRoZSBudW1iZXIgb2YgSS9PIHJlcXVlc3RzIHRoYXQgaGF2ZSBiZWVuIGlzc3VlZCB0bwordGhlIGRldmljZSBkcml2ZXIgYnV0IGhhdmUgbm90IHlldCBjb21wbGV0ZWQuICBJdCBkb2VzIG5vdCBpbmNsdWRlIEkvTworcmVxdWVzdHMgdGhhdCBhcmUgaW4gdGhlIHF1ZXVlIGJ1dCBub3QgeWV0IGlzc3VlZCB0byB0aGUgZGV2aWNlIGRyaXZlci4KKworaW9fdGlja3MKKz09PT09PT09CisKK1RoaXMgdmFsdWUgY291bnRzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGR1cmluZyB3aGljaCB0aGUgZGV2aWNlIGhhcworaGFkIEkvTyByZXF1ZXN0cyBxdWV1ZWQuCisKK3RpbWVfaW5fcXVldWUKKz09PT09PT09PT09PT0KKworVGhpcyB2YWx1ZSBjb3VudHMgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdGhhdCBJL08gcmVxdWVzdHMgaGF2ZSB3YWl0ZWQKK29uIHRoaXMgYmxvY2sgZGV2aWNlLiAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIEkvTyByZXF1ZXN0cyB3YWl0aW5nLCB0aGlzCit2YWx1ZSB3aWxsIGluY3JlYXNlIGFzIHRoZSBwcm9kdWN0IG9mIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRpbWVzIHRoZQorbnVtYmVyIG9mIHJlcXVlc3RzIHdhaXRpbmcgKHNlZSAicmVhZCB0aWNrcyIgYWJvdmUgZm9yIGFuIGV4YW1wbGUpLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibG9jay9zd2l0Y2hpbmctc2NoZWQudHh0IGIvRG9jdW1lbnRhdGlvbi9ibG9jay9zd2l0Y2hpbmctc2NoZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiMjYxMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrL3N3aXRjaGluZy1zY2hlZC50eHQKQEAgLTAsMCArMSwzNyBAQAorVG8gY2hvb3NlIElPIHNjaGVkdWxlcnMgYXQgYm9vdCB0aW1lLCB1c2UgdGhlIGFyZ3VtZW50ICdlbGV2YXRvcj1kZWFkbGluZScuCisnbm9vcCcgYW5kICdjZnEnICh0aGUgZGVmYXVsdCkgYXJlIGFsc28gYXZhaWxhYmxlLiBJTyBzY2hlZHVsZXJzIGFyZSBhc3NpZ25lZAorZ2xvYmFsbHkgYXQgYm9vdCB0aW1lIG9ubHkgcHJlc2VudGx5LgorCitFYWNoIGlvIHF1ZXVlIGhhcyBhIHNldCBvZiBpbyBzY2hlZHVsZXIgdHVuYWJsZXMgYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGVzZQordHVuYWJsZXMgY29udHJvbCBob3cgdGhlIGlvIHNjaGVkdWxlciB3b3Jrcy4gWW91IGNhbiBmaW5kIHRoZXNlIGVudHJpZXMKK2luOgorCisvc3lzL2Jsb2NrLzxkZXZpY2U+L3F1ZXVlL2lvc2NoZWQKKworYXNzdW1pbmcgdGhhdCB5b3UgaGF2ZSBzeXNmcyBtb3VudGVkIG9uIC9zeXMuIElmIHlvdSBkb24ndCBoYXZlIHN5c2ZzIG1vdW50ZWQsCit5b3UgY2FuIGRvIHNvIGJ5IHR5cGluZzoKKworIyBtb3VudCBub25lIC9zeXMgLXQgc3lzZnMKKworQXMgb2YgdGhlIExpbnV4IDIuNi4xMCBrZXJuZWwsIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBjaGFuZ2UgdGhlCitJTyBzY2hlZHVsZXIgZm9yIGEgZ2l2ZW4gYmxvY2sgZGV2aWNlIG9uIHRoZSBmbHkgKHRodXMgbWFraW5nIGl0IHBvc3NpYmxlLAorZm9yIGluc3RhbmNlLCB0byBzZXQgdGhlIENGUSBzY2hlZHVsZXIgZm9yIHRoZSBzeXN0ZW0gZGVmYXVsdCwgYnV0CitzZXQgYSBzcGVjaWZpYyBkZXZpY2UgdG8gdXNlIHRoZSBkZWFkbGluZSBvciBub29wIHNjaGVkdWxlcnMgLSB3aGljaAorY2FuIGltcHJvdmUgdGhhdCBkZXZpY2UncyB0aHJvdWdocHV0KS4KKworVG8gc2V0IGEgc3BlY2lmaWMgc2NoZWR1bGVyLCBzaW1wbHkgZG8gdGhpczoKKworZWNobyBTQ0hFRE5BTUUgPiAvc3lzL2Jsb2NrL0RFVi9xdWV1ZS9zY2hlZHVsZXIKKword2hlcmUgU0NIRUROQU1FIGlzIHRoZSBuYW1lIG9mIGEgZGVmaW5lZCBJTyBzY2hlZHVsZXIsIGFuZCBERVYgaXMgdGhlCitkZXZpY2UgbmFtZSAoaGRhLCBoZGIsIHNnYSwgb3Igd2hhdGV2ZXIgeW91IGhhcHBlbiB0byBoYXZlKS4KKworVGhlIGxpc3Qgb2YgZGVmaW5lZCBzY2hlZHVsZXJzIGNhbiBiZSBmb3VuZCBieSBzaW1wbHkgZG9pbmcKK2EgImNhdCAvc3lzL2Jsb2NrL0RFVi9xdWV1ZS9zY2hlZHVsZXIiIC0gdGhlIGxpc3Qgb2YgdmFsaWQgbmFtZXMKK3dpbGwgYmUgZGlzcGxheWVkLCB3aXRoIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgc2NoZWR1bGVyIGluIGJyYWNrZXRzOgorCisjIGNhdCAvc3lzL2Jsb2NrL2hkYS9xdWV1ZS9zY2hlZHVsZXIKK25vb3AgZGVhZGxpbmUgW2NmcV0KKyMgZWNobyBkZWFkbGluZSA+IC9zeXMvYmxvY2svaGRhL3F1ZXVlL3NjaGVkdWxlcgorIyBjYXQgL3N5cy9ibG9jay9oZGEvcXVldWUvc2NoZWR1bGVyCitub29wIFtkZWFkbGluZV0gY2ZxCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Jsb2NrL3dyaXRlYmFja19jYWNoZV9jb250cm9sLnR4dCBiL0RvY3VtZW50YXRpb24vYmxvY2svd3JpdGViYWNrX2NhY2hlX2NvbnRyb2wudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNDA3ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrL3dyaXRlYmFja19jYWNoZV9jb250cm9sLnR4dApAQCAtMCwwICsxLDg2IEBACisKK0V4cGxpY2l0IHZvbGF0aWxlIHdyaXRlIGJhY2sgY2FjaGUgY29udHJvbAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLQorCitNYW55IHN0b3JhZ2UgZGV2aWNlcywgZXNwZWNpYWxseSBpbiB0aGUgY29uc3VtZXIgbWFya2V0LCBjb21lIHdpdGggdm9sYXRpbGUKK3dyaXRlIGJhY2sgY2FjaGVzLiAgVGhhdCBtZWFucyB0aGUgZGV2aWNlcyBzaWduYWwgSS9PIGNvbXBsZXRpb24gdG8gdGhlCitvcGVyYXRpbmcgc3lzdGVtIGJlZm9yZSBkYXRhIGFjdHVhbGx5IGhhcyBoaXQgdGhlIG5vbi12b2xhdGlsZSBzdG9yYWdlLiAgVGhpcworYmVoYXZpb3Igb2J2aW91c2x5IHNwZWVkcyB1cCB2YXJpb3VzIHdvcmtsb2FkcywgYnV0IGl0IG1lYW5zIHRoZSBvcGVyYXRpbmcKK3N5c3RlbSBuZWVkcyB0byBmb3JjZSBkYXRhIG91dCB0byB0aGUgbm9uLXZvbGF0aWxlIHN0b3JhZ2Ugd2hlbiBpdCBwZXJmb3JtcworYSBkYXRhIGludGVncml0eSBvcGVyYXRpb24gbGlrZSBmc3luYywgc3luYyBvciBhbiB1bm1vdW50LgorCitUaGUgTGludXggYmxvY2sgbGF5ZXIgcHJvdmlkZXMgdHdvIHNpbXBsZSBtZWNoYW5pc21zIHRoYXQgbGV0IGZpbGVzeXN0ZW1zCitjb250cm9sIHRoZSBjYWNoaW5nIGJlaGF2aW9yIG9mIHRoZSBzdG9yYWdlIGRldmljZS4gIFRoZXNlIG1lY2hhbmlzbXMgYXJlCithIGZvcmNlZCBjYWNoZSBmbHVzaCwgYW5kIHRoZSBGb3JjZSBVbml0IEFjY2VzcyAoRlVBKSBmbGFnIGZvciByZXF1ZXN0cy4KKworCitFeHBsaWNpdCBjYWNoZSBmbHVzaGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBSRVFfRkxVU0ggZmxhZyBjYW4gYmUgT1IgZWQgaW50byB0aGUgci93IGZsYWdzIG9mIGEgYmlvIHN1Ym1pdHRlZCBmcm9tCit0aGUgZmlsZXN5c3RlbSBhbmQgd2lsbCBtYWtlIHN1cmUgdGhlIHZvbGF0aWxlIGNhY2hlIG9mIHRoZSBzdG9yYWdlIGRldmljZQoraGFzIGJlZW4gZmx1c2hlZCBiZWZvcmUgdGhlIGFjdHVhbCBJL08gb3BlcmF0aW9uIGlzIHN0YXJ0ZWQuICBUaGlzIGV4cGxpY2l0bHkKK2d1YXJhbnRlZXMgdGhhdCBwcmV2aW91c2x5IGNvbXBsZXRlZCB3cml0ZSByZXF1ZXN0cyBhcmUgb24gbm9uLXZvbGF0aWxlCitzdG9yYWdlIGJlZm9yZSB0aGUgZmxhZ2dlZCBiaW8gc3RhcnRzLiBJbiBhZGRpdGlvbiB0aGUgUkVRX0ZMVVNIIGZsYWcgY2FuIGJlCitzZXQgb24gYW4gb3RoZXJ3aXNlIGVtcHR5IGJpbyBzdHJ1Y3R1cmUsIHdoaWNoIGNhdXNlcyBvbmx5IGFuIGV4cGxpY2l0IGNhY2hlCitmbHVzaCB3aXRob3V0IGFueSBkZXBlbmRlbnQgSS9PLiAgSXQgaXMgcmVjb21tZW5kIHRvIHVzZQordGhlIGJsa2Rldl9pc3N1ZV9mbHVzaCgpIGhlbHBlciBmb3IgYSBwdXJlIGNhY2hlIGZsdXNoLgorCisKK0ZvcmNlZCBVbml0IEFjY2VzcworLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIFJFUV9GVUEgZmxhZyBjYW4gYmUgT1IgZWQgaW50byB0aGUgci93IGZsYWdzIG9mIGEgYmlvIHN1Ym1pdHRlZCBmcm9tIHRoZQorZmlsZXN5c3RlbSBhbmQgd2lsbCBtYWtlIHN1cmUgdGhhdCBJL08gY29tcGxldGlvbiBmb3IgdGhpcyByZXF1ZXN0IGlzIG9ubHkKK3NpZ25hbGVkIGFmdGVyIHRoZSBkYXRhIGhhcyBiZWVuIGNvbW1pdHRlZCB0byBub24tdm9sYXRpbGUgc3RvcmFnZS4KKworCitJbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGZvciBmaWxlc3lzdGVtcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRmlsZXN5c3RlbXMgY2FuIHNpbXBseSBzZXQgdGhlIFJFUV9GTFVTSCBhbmQgUkVRX0ZVQSBiaXRzIGFuZCBkbyBub3QgaGF2ZSB0bword29ycnkgaWYgdGhlIHVuZGVybHlpbmcgZGV2aWNlcyBuZWVkIGFueSBleHBsaWNpdCBjYWNoZSBmbHVzaGluZyBhbmQgaG93Cit0aGUgRm9yY2VkIFVuaXQgQWNjZXNzIGlzIGltcGxlbWVudGVkLiAgVGhlIFJFUV9GTFVTSCBhbmQgUkVRX0ZVQSBmbGFncworbWF5IGJvdGggYmUgc2V0IG9uIGEgc2luZ2xlIGJpby4KKworCitJbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGZvciBtYWtlX3JlcXVlc3RfZm4gYmFzZWQgYmxvY2sgZHJpdmVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlc2UgZHJpdmVycyB3aWxsIGFsd2F5cyBzZWUgdGhlIFJFUV9GTFVTSCBhbmQgUkVRX0ZVQSBiaXRzIGFzIHRoZXkgc2l0CitkaXJlY3RseSBiZWxvdyB0aGUgc3VibWl0X2JpbyBpbnRlcmZhY2UuICBGb3IgcmVtYXBwaW5nIGRyaXZlcnMgdGhlIFJFUV9GVUEKK2JpdHMgbmVlZCB0byBiZSBwcm9wYWdhdGVkIHRvIHVuZGVybHlpbmcgZGV2aWNlcywgYW5kIGEgZ2xvYmFsIGZsdXNoIG5lZWRzCit0byBiZSBpbXBsZW1lbnRlZCBmb3IgYmlvcyB3aXRoIHRoZSBSRVFfRkxVU0ggYml0IHNldC4gIEZvciByZWFsIGRldmljZQorZHJpdmVycyB0aGF0IGRvIG5vdCBoYXZlIGEgdm9sYXRpbGUgY2FjaGUgdGhlIFJFUV9GTFVTSCBhbmQgUkVRX0ZVQSBiaXRzCitvbiBub24tZW1wdHkgYmlvcyBjYW4gc2ltcGx5IGJlIGlnbm9yZWQsIGFuZCBSRVFfRkxVU0ggcmVxdWVzdHMgd2l0aG91dAorZGF0YSBjYW4gYmUgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSB3aXRob3V0IGRvaW5nIGFueSB3b3JrLiAgRHJpdmVycyBmb3IKK2RldmljZXMgd2l0aCB2b2xhdGlsZSBjYWNoZXMgbmVlZCB0byBpbXBsZW1lbnQgdGhlIHN1cHBvcnQgZm9yIHRoZXNlCitmbGFncyB0aGVtc2VsdmVzIHdpdGhvdXQgYW55IGhlbHAgZnJvbSB0aGUgYmxvY2sgbGF5ZXIuCisKKworSW1wbGVtZW50YXRpb24gZGV0YWlscyBmb3IgcmVxdWVzdF9mbiBiYXNlZCBibG9jayBkcml2ZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGb3IgZGV2aWNlcyB0aGF0IGRvIG5vdCBzdXBwb3J0IHZvbGF0aWxlIHdyaXRlIGNhY2hlcyB0aGVyZSBpcyBubyBkcml2ZXIKK3N1cHBvcnQgcmVxdWlyZWQsIHRoZSBibG9jayBsYXllciBjb21wbGV0ZXMgZW1wdHkgUkVRX0ZMVVNIIHJlcXVlc3RzIGJlZm9yZQorZW50ZXJpbmcgdGhlIGRyaXZlciBhbmQgc3RyaXBzIG9mZiB0aGUgUkVRX0ZMVVNIIGFuZCBSRVFfRlVBIGJpdHMgZnJvbQorcmVxdWVzdHMgdGhhdCBoYXZlIGEgcGF5bG9hZC4gIEZvciBkZXZpY2VzIHdpdGggdm9sYXRpbGUgd3JpdGUgY2FjaGVzIHRoZQorZHJpdmVyIG5lZWRzIHRvIHRlbGwgdGhlIGJsb2NrIGxheWVyIHRoYXQgaXQgc3VwcG9ydHMgZmx1c2hpbmcgY2FjaGVzIGJ5Citkb2luZzoKKworCWJsa19xdWV1ZV9mbHVzaChzZGtwLT5kaXNrLT5xdWV1ZSwgUkVRX0ZMVVNIKTsKKworYW5kIGhhbmRsZSBlbXB0eSBSRVFfRkxVU0ggcmVxdWVzdHMgaW4gaXRzIHByZXBfZm4vcmVxdWVzdF9mbi4gIE5vdGUgdGhhdAorUkVRX0ZMVVNIIHJlcXVlc3RzIHdpdGggYSBwYXlsb2FkIGFyZSBhdXRvbWF0aWNhbGx5IHR1cm5lZCBpbnRvIGEgc2VxdWVuY2UKK29mIGFuIGVtcHR5IFJFUV9GTFVTSCByZXF1ZXN0IGZvbGxvd2VkIGJ5IHRoZSBhY3R1YWwgd3JpdGUgYnkgdGhlIGJsb2NrCitsYXllci4gIEZvciBkZXZpY2VzIHRoYXQgYWxzbyBzdXBwb3J0IHRoZSBGVUEgYml0IHRoZSBibG9jayBsYXllciBuZWVkcwordG8gYmUgdG9sZCB0byBwYXNzIHRocm91Z2ggdGhlIFJFUV9GVUEgYml0IHVzaW5nOgorCisJYmxrX3F1ZXVlX2ZsdXNoKHNka3AtPmRpc2stPnF1ZXVlLCBSRVFfRkxVU0ggfCBSRVFfRlVBKTsKKworYW5kIHRoZSBkcml2ZXIgbXVzdCBoYW5kbGUgd3JpdGUgcmVxdWVzdHMgdGhhdCBoYXZlIHRoZSBSRVFfRlVBIGJpdCBzZXQKK2luIHByZXBfZm4vcmVxdWVzdF9mbi4gIElmIHRoZSBGVUEgYml0IGlzIG5vdCBuYXRpdmVseSBzdXBwb3J0ZWQgdGhlIGJsb2NrCitsYXllciB0dXJucyBpdCBpbnRvIGFuIGVtcHR5IFJFUV9GTFVTSCByZXF1ZXN0IGFmdGVyIHRoZSBhY3R1YWwgd3JpdGUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2LzAwLUlOREVYIGIvRG9jdW1lbnRhdGlvbi9ibG9ja2Rldi8wMC1JTkRFWApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDhkZjU2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9ibG9ja2Rldi8wMC1JTkRFWApAQCAtMCwwICsxLDE4IEBACiswMC1JTkRFWAorCS0gdGhpcyBmaWxlCitSRUFETUUuREFDOTYwCisJLSBpbmZvIG9uIE15bGV4IERBQzk2MC9EQUMxMTAwIFBDSSBSQUlEIENvbnRyb2xsZXIgRHJpdmVyIGZvciBMaW51eC4KK2NjaXNzLnR4dAorCS0gaW5mbywgbWFqb3IvbWlub3IgIydzIGZvciBDb21wYXEncyBTTUFSVCBBcnJheSBDb250cm9sbGVycy4KK2NwcWFycmF5LnR4dAorCS0gaW5mbyBvbiB1c2luZyBDb21wYXEncyBTTUFSVDIgSW50ZWxsaWdlbnQgRGlzayBBcnJheSBDb250cm9sbGVycy4KK2Zsb3BweS50eHQKKwktIG5vdGVzIGFuZCBkcml2ZXIgb3B0aW9ucyBmb3IgdGhlIGZsb3BweSBkaXNrIGRyaXZlci4KK21mbGFzaC50eHQKKwktIGluZm8gb24gbUdpbmUgbShnKWZsYXNoIGRyaXZlciBmb3IgbGludXguCituYmQudHh0CisJLSBpbmZvIG9uIGEgVENQIGltcGxlbWVudGF0aW9uIG9mIGEgbmV0d29yayBibG9jayBkZXZpY2UuCitwYXJpZGUudHh0CisJLSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFyYWxsZWwgcG9ydCBJREUgc3Vic3lzdGVtLgorcmFtZGlzay50eHQKKwktIHNob3J0IGd1aWRlIG9uIGhvdyB0byBzZXQgdXAgYW5kIHVzZSB0aGUgUkFNIGRpc2suCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L1JFQURNRS5EQUM5NjAgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L1JFQURNRS5EQUM5NjAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ4NWZiOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYmxvY2tkZXYvUkVBRE1FLkRBQzk2MApAQCAtMCwwICsxLDc1NiBAQAorICAgTGludXggRHJpdmVyIGZvciBNeWxleCBEQUM5NjAvQWNjZWxlUkFJRC9lWHRyZW1lUkFJRCBQQ0kgUkFJRCBDb250cm9sbGVycworCisJCQlWZXJzaW9uIDIuMi4xMSBmb3IgTGludXggMi4yLjE5CisJCQlWZXJzaW9uIDIuNC4xMSBmb3IgTGludXggMi40LjEyCisKKwkJCSAgICAgIFBST0RVQ1RJT04gUkVMRUFTRQorCisJCQkJMTEgT2N0b2JlciAyMDAxCisKKwkJCSAgICAgICBMZW9uYXJkIE4uIFp1YmtvZmYKKwkJCSAgICAgICBEYW5kZWxpb24gRGlnaXRhbAorCQkJICAgICAgIGxuekBkYW5kZWxpb24uY29tCisKKwkgQ29weXJpZ2h0IDE5OTgtMjAwMSBieSBMZW9uYXJkIE4uIFp1YmtvZmYgPGxuekBkYW5kZWxpb24uY29tPgorCisKKwkJCQkgSU5UUk9EVUNUSU9OCisKK015bGV4LCBJbmMuIGRlc2lnbnMgYW5kIG1hbnVmYWN0dXJlcyBhIHZhcmlldHkgb2YgaGlnaCBwZXJmb3JtYW5jZSBQQ0kgUkFJRAorY29udHJvbGxlcnMuICBNeWxleCBDb3Jwb3JhdGlvbiBpcyBsb2NhdGVkIGF0IDM0NTUxIEFyZGVud29vZCBCbHZkLiwgRnJlbW9udCwKK0NhbGlmb3JuaWEgOTQ1NTUsIFVTQSBhbmQgY2FuIGJlIHJlYWNoZWQgYXQgNTEwLjc5Ni42MTAwIG9yIG9uIHRoZSBXb3JsZCBXaWRlCitXZWIgYXQgaHR0cDovL3d3dy5teWxleC5jb20uICBNeWxleCBUZWNobmljYWwgU3VwcG9ydCBjYW4gYmUgcmVhY2hlZCBieQorZWxlY3Ryb25pYyBtYWlsIGF0IG15bGV4c3VwQHVzLmlibS5jb20sIGJ5IHZvaWNlIGF0IDUxMC42MDguMjQwMCwgb3IgYnkgRkFYIGF0Cis1MTAuNzQ1Ljc3MTUuICBDb250YWN0IGluZm9ybWF0aW9uIGZvciBvZmZpY2VzIGluIEV1cm9wZSBhbmQgSmFwYW4gaXMgYXZhaWxhYmxlCitvbiB0aGVpciBXZWIgc2l0ZS4KKworVGhlIGxhdGVzdCBpbmZvcm1hdGlvbiBvbiBMaW51eCBzdXBwb3J0IGZvciBEQUM5NjAgUENJIFJBSUQgQ29udHJvbGxlcnMsIGFzCit3ZWxsIGFzIHRoZSBtb3N0IHJlY2VudCByZWxlYXNlIG9mIHRoaXMgZHJpdmVyLCB3aWxsIGFsd2F5cyBiZSBhdmFpbGFibGUgZnJvbQorbXkgTGludXggSG9tZSBQYWdlIGF0IFVSTCAiaHR0cDovL3d3dy5kYW5kZWxpb24uY29tL0xpbnV4LyIuICBUaGUgTGludXggREFDOTYwCitkcml2ZXIgc3VwcG9ydHMgYWxsIGN1cnJlbnQgTXlsZXggUENJIFJBSUQgY29udHJvbGxlcnMgaW5jbHVkaW5nIHRoZSBuZXcKK2VYdHJlbWVSQUlEIDIwMDAvMzAwMCBhbmQgQWNjZWxlUkFJRCAzNTIvMTcwLzE2MCBtb2RlbHMgd2hpY2ggaGF2ZSBhbiBlbnRpcmVseQorbmV3IGZpcm13YXJlIGludGVyZmFjZSBmcm9tIHRoZSBvbGRlciBlWHRyZW1lUkFJRCAxMTAwLCBBY2NlbGVSQUlEIDE1MC8yMDAvMjUwLAorYW5kIERBQzk2MFBKL1BHL1BVL1BEL1BMLiAgU2VlIGJlbG93IGZvciBhIGNvbXBsZXRlIGNvbnRyb2xsZXIgbGlzdCBhcyB3ZWxsIGFzCittaW5pbXVtIGZpcm13YXJlIHZlcnNpb24gcmVxdWlyZW1lbnRzLiAgRm9yIHNpbXBsaWNpdHksIGluIG1vc3QgcGxhY2VzIHRoaXMKK2RvY3VtZW50YXRpb24gcmVmZXJzIHRvIERBQzk2MCBnZW5lcmljYWxseSByYXRoZXIgdGhhbiBleHBsaWNpdGx5IGxpc3RpbmcgYWxsCit0aGUgc3VwcG9ydGVkIG1vZGVscy4KKworRHJpdmVyIGJ1ZyByZXBvcnRzIHNob3VsZCBiZSBzZW50IHZpYSBlbGVjdHJvbmljIG1haWwgdG8gImxuekBkYW5kZWxpb24uY29tIi4KK1BsZWFzZSBpbmNsdWRlIHdpdGggdGhlIGJ1ZyByZXBvcnQgdGhlIGNvbXBsZXRlIGNvbmZpZ3VyYXRpb24gbWVzc2FnZXMgcmVwb3J0ZWQKK2J5IHRoZSBkcml2ZXIgYXQgc3RhcnR1cCwgYWxvbmcgd2l0aCBhbnkgc3Vic2VxdWVudCBzeXN0ZW0gbWVzc2FnZXMgcmVsZXZhbnQgdG8KK3RoZSBjb250cm9sbGVyJ3Mgb3BlcmF0aW9uLCBhbmQgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB5b3VyIHN5c3RlbSdzCitoYXJkd2FyZSBjb25maWd1cmF0aW9uLiAgRHJpdmVyIGJ1Z3MgYXJlIGFjdHVhbGx5IHF1aXRlIHJhcmU7IGlmIHlvdSBlbmNvdW50ZXIKK3Byb2JsZW1zIHdpdGggZGlza3MgYmVpbmcgbWFya2VkIG9mZmxpbmUsIGZvciBleGFtcGxlLCBwbGVhc2UgY29udGFjdCBNeWxleAorVGVjaG5pY2FsIFN1cHBvcnQgYXMgdGhlIHByb2JsZW0gaXMgcmVsYXRlZCB0byB0aGUgaGFyZHdhcmUgY29uZmlndXJhdGlvbgorcmF0aGVyIHRoYW4gdGhlIExpbnV4IGRyaXZlci4KKworUGxlYXNlIGNvbnN1bHQgdGhlIFJBSUQgY29udHJvbGxlciBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbgorcmVnYXJkaW5nIGluc3RhbGxhdGlvbiBhbmQgY29uZmlndXJhdGlvbiBvZiB0aGUgY29udHJvbGxlcnMuICBUaGlzIGRvY3VtZW50CitwcmltYXJpbHkgcHJvdmlkZXMgaW5mb3JtYXRpb24gc3BlY2lmaWMgdG8gdGhlIExpbnV4IHN1cHBvcnQuCisKKworCQkJCURSSVZFUiBGRUFUVVJFUworCitUaGUgREFDOTYwIFJBSUQgY29udHJvbGxlcnMgYXJlIHN1cHBvcnRlZCBzb2xlbHkgYXMgaGlnaCBwZXJmb3JtYW5jZSBSQUlECitjb250cm9sbGVycywgbm90IGFzIGludGVyZmFjZXMgdG8gYXJiaXRyYXJ5IFNDU0kgZGV2aWNlcy4gIFRoZSBMaW51eCBEQUM5NjAKK2RyaXZlciBvcGVyYXRlcyBhdCB0aGUgYmxvY2sgZGV2aWNlIGxldmVsLCB0aGUgc2FtZSBsZXZlbCBhcyB0aGUgU0NTSSBhbmQgSURFCitkcml2ZXJzLiAgVW5saWtlIG90aGVyIFJBSUQgY29udHJvbGxlcnMgY3VycmVudGx5IHN1cHBvcnRlZCBvbiBMaW51eCwgdGhlCitEQUM5NjAgZHJpdmVyIGlzIG5vdCBkZXBlbmRlbnQgb24gdGhlIFNDU0kgc3Vic3lzdGVtLCBhbmQgaGVuY2UgYXZvaWRzIGFsbCB0aGUKK2NvbXBsZXhpdHkgYW5kIHVubmVjZXNzYXJ5IGNvZGUgdGhhdCB3b3VsZCBiZSBhc3NvY2lhdGVkIHdpdGggYW4gaW1wbGVtZW50YXRpb24KK2FzIGEgU0NTSSBkcml2ZXIuICBUaGUgREFDOTYwIGRyaXZlciBpcyBkZXNpZ25lZCBmb3IgYXMgaGlnaCBhIHBlcmZvcm1hbmNlIGFzCitwb3NzaWJsZSB3aXRoIG5vIGNvbXByb21pc2VzIG9yIGV4dHJhIGNvZGUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBsb3dlcgorcGVyZm9ybWFuY2UgZGV2aWNlcy4gIFRoZSBEQUM5NjAgZHJpdmVyIGluY2x1ZGVzIGV4dGVuc2l2ZSBlcnJvciBsb2dnaW5nIGFuZAorb25saW5lIGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudCBjYXBhYmlsaXRpZXMuICBFeGNlcHQgZm9yIGluaXRpYWwgY29uZmlndXJhdGlvbgorb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGFkZGluZyBuZXcgZGlzayBkcml2ZXMsIG1vc3QgZXZlcnl0aGluZyBjYW4gYmUgaGFuZGxlZAorZnJvbSBMaW51eCB3aGlsZSB0aGUgc3lzdGVtIGlzIG9wZXJhdGlvbmFsLgorCitUaGUgREFDOTYwIGRyaXZlciBpcyBhcmNoaXRlY3RlZCB0byBzdXBwb3J0IHVwIHRvIDggY29udHJvbGxlcnMgcGVyIHN5c3RlbS4KK0VhY2ggREFDOTYwIHBhcmFsbGVsIFNDU0kgY29udHJvbGxlciBjYW4gc3VwcG9ydCB1cCB0byAxNSBkaXNrIGRyaXZlcyBwZXIKK2NoYW5uZWwsIGZvciBhIG1heGltdW0gb2YgNjAgZHJpdmVzIG9uIGEgZm91ciBjaGFubmVsIGNvbnRyb2xsZXI7IHRoZSBmaWJyZQorY2hhbm5lbCBlWHRyZW1lUkFJRCAzMDAwIGNvbnRyb2xsZXIgc3VwcG9ydHMgdXAgdG8gMTI1IGRpc2sgZHJpdmVzIHBlciBsb29wIGZvcgorYSB0b3RhbCBvZiAyNTAgZHJpdmVzLiAgVGhlIGRyaXZlcyBpbnN0YWxsZWQgb24gYSBjb250cm9sbGVyIGFyZSBkaXZpZGVkIGludG8KK29uZSBvciBtb3JlICJEcml2ZSBHcm91cHMiLCBhbmQgdGhlbiBlYWNoIERyaXZlIEdyb3VwIGlzIHN1YmRpdmlkZWQgZnVydGhlcgoraW50byAxIHRvIDMyICJMb2dpY2FsIERyaXZlcyIuICBFYWNoIExvZ2ljYWwgRHJpdmUgaGFzIGEgc3BlY2lmaWMgUkFJRCBMZXZlbAorYW5kIGNhY2hpbmcgcG9saWN5IGFzc29jaWF0ZWQgd2l0aCBpdCwgYW5kIGl0IGFwcGVhcnMgdG8gTGludXggYXMgYSBzaW5nbGUKK2Jsb2NrIGRldmljZS4gIExvZ2ljYWwgRHJpdmVzIGFyZSBmdXJ0aGVyIHN1YmRpdmlkZWQgaW50byB1cCB0byA3IHBhcnRpdGlvbnMKK3Rocm91Z2ggdGhlIG5vcm1hbCBMaW51eCBhbmQgUEMgZGlzayBwYXJ0aXRpb25pbmcgc2NoZW1lcy4gIExvZ2ljYWwgRHJpdmVzIGFyZQorYWxzbyBrbm93biBhcyAiU3lzdGVtIERyaXZlcyIsIGFuZCBEcml2ZSBHcm91cHMgYXJlIGFsc28gY2FsbGVkICJQYWNrcyIuICBCb3RoCit0ZXJtcyBhcmUgaW4gdXNlIGluIHRoZSBNeWxleCBkb2N1bWVudGF0aW9uOyBJIGhhdmUgY2hvc2VuIHRvIHN0YW5kYXJkaXplIG9uCit0aGUgbW9yZSBnZW5lcmljICJMb2dpY2FsIERyaXZlIiBhbmQgIkRyaXZlIEdyb3VwIi4KKworREFDOTYwIFJBSUQgZGlzayBkZXZpY2VzIGFyZSBuYW1lZCBpbiB0aGUgc3R5bGUgb2YgdGhlIG9ic29sZXRlIERldmljZSBGaWxlCitTeXN0ZW0gKERFVkZTKS4gIFRoZSBkZXZpY2UgY29ycmVzcG9uZGluZyB0byBMb2dpY2FsIERyaXZlIEQgb24gQ29udHJvbGxlciBDCitpcyByZWZlcnJlZCB0byBhcyAvZGV2L3JkL2NDZEQsIGFuZCB0aGUgcGFydGl0aW9ucyBhcmUgY2FsbGVkIC9kZXYvcmQvY0NkRHAxCit0aHJvdWdoIC9kZXYvcmQvY0NkRHA3LiAgRm9yIGV4YW1wbGUsIHBhcnRpdGlvbiAzIG9mIExvZ2ljYWwgRHJpdmUgNSBvbgorQ29udHJvbGxlciAyIGlzIHJlZmVycmVkIHRvIGFzIC9kZXYvcmQvYzJkNXAzLiAgTm90ZSB0aGF0IHVubGlrZSB3aXRoIFNDU0kKK2Rpc2tzIHRoZSBkZXZpY2UgbmFtZXMgd2lsbCBub3QgY2hhbmdlIGluIHRoZSBldmVudCBvZiBhIGRpc2sgZHJpdmUgZmFpbHVyZS4KK1RoZSBEQUM5NjAgZHJpdmVyIGlzIGFzc2lnbmVkIG1ham9yIG51bWJlcnMgNDggLSA1NSB3aXRoIG9uZSBtYWpvciBudW1iZXIgcGVyCitjb250cm9sbGVyLiAgVGhlIDggYml0cyBvZiBtaW5vciBudW1iZXIgYXJlIGRpdmlkZWQgaW50byA1IGJpdHMgZm9yIHRoZSBMb2dpY2FsCitEcml2ZSBhbmQgMyBiaXRzIGZvciB0aGUgcGFydGl0aW9uLgorCisKKwkgIFNVUFBPUlRFRCBEQUM5NjAvQWNjZWxlUkFJRC9lWHRyZW1lUkFJRCBQQ0kgUkFJRCBDT05UUk9MTEVSUworCitUaGUgZm9sbG93aW5nIGxpc3QgY29tcHJpc2VzIHRoZSBzdXBwb3J0ZWQgREFDOTYwLCBBY2NlbGVSQUlELCBhbmQgZVh0cmVtZVJBSUQKK1BDSSBSQUlEIENvbnRyb2xsZXJzIGFzIG9mIHRoZSBkYXRlIG9mIHRoaXMgZG9jdW1lbnQuICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0CithbnlvbmUgcHVyY2hhc2luZyBhIE15bGV4IFBDSSBSQUlEIENvbnRyb2xsZXIgbm90IGluIHRoZSBmb2xsb3dpbmcgdGFibGUKK2NvbnRhY3QgdGhlIGF1dGhvciBiZWZvcmVoYW5kIHRvIHZlcmlmeSB0aGF0IGl0IGlzIG9yIHdpbGwgYmUgc3VwcG9ydGVkLgorCitlWHRyZW1lUkFJRCAzMDAwCisJICAgIDEgV2lkZSBVbHRyYS0yL0xWRCBTQ1NJIGNoYW5uZWwKKwkgICAgMiBFeHRlcm5hbCBGaWJyZSBGQy1BTCBjaGFubmVscworCSAgICAyMzNNSHogU3Ryb25nQVJNIFNBIDExMCBQcm9jZXNzb3IKKwkgICAgNjQgQml0IDMzTUh6IFBDSSAoYmFja3dhcmQgY29tcGF0aWJsZSB3aXRoIDMyIEJpdCBQQ0kgc2xvdHMpCisJICAgIDMyTUIvNjRNQiBFQ0MgU0RSQU0gTWVtb3J5CisKK2VYdHJlbWVSQUlEIDIwMDAKKwkgICAgNCBXaWRlIFVsdHJhLTE2MCBMVkQgU0NTSSBjaGFubmVscworCSAgICAyMzNNSHogU3Ryb25nQVJNIFNBIDExMCBQcm9jZXNzb3IKKwkgICAgNjQgQml0IDMzTUh6IFBDSSAoYmFja3dhcmQgY29tcGF0aWJsZSB3aXRoIDMyIEJpdCBQQ0kgc2xvdHMpCisJICAgIDMyTUIvNjRNQiBFQ0MgU0RSQU0gTWVtb3J5CisKK0FjY2VsZVJBSUQgMzUyCisJICAgIDIgV2lkZSBVbHRyYS0xNjAgTFZEIFNDU0kgY2hhbm5lbHMKKwkgICAgMTAwTUh6IEludGVsIGk5NjBSTiBSSVNDIFByb2Nlc3NvcgorCSAgICA2NCBCaXQgMzNNSHogUENJIChiYWNrd2FyZCBjb21wYXRpYmxlIHdpdGggMzIgQml0IFBDSSBzbG90cykKKwkgICAgMzJNQi82NE1CIEVDQyBTRFJBTSBNZW1vcnkKKworQWNjZWxlUkFJRCAxNzAKKwkgICAgMSBXaWRlIFVsdHJhLTE2MCBMVkQgU0NTSSBjaGFubmVsCisJICAgIDEwME1IeiBJbnRlbCBpOTYwUk0gUklTQyBQcm9jZXNzb3IKKwkgICAgMTZNQi8zMk1CLzY0TUIgRUNDIFNEUkFNIE1lbW9yeQorCitBY2NlbGVSQUlEIDE2MCAoQWNjZWxlUkFJRCAxNzBMUCkKKwkgICAgMSBXaWRlIFVsdHJhLTE2MCBMVkQgU0NTSSBjaGFubmVsCisJICAgIDEwME1IeiBJbnRlbCBpOTYwUlMgUklTQyBQcm9jZXNzb3IKKwkgICAgQnVpbHQgaW4gMTZNIEVDQyBTRFJBTSBNZW1vcnkKKwkgICAgUENJIExvdyBQcm9maWxlIEZvcm0gRmFjdG9yIC0gZml0IGZvciAyVSBoZWlnaHQKKworZVh0cmVtZVJBSUQgMTEwMCAoREFDMTE2NFApCisJICAgIDMgV2lkZSBVbHRyYS0yL0xWRCBTQ1NJIGNoYW5uZWxzCisJICAgIDIzM01IeiBTdHJvbmdBUk0gU0EgMTEwIFByb2Nlc3NvcgorCSAgICA2NCBCaXQgMzNNSHogUENJIChiYWNrd2FyZCBjb21wYXRpYmxlIHdpdGggMzIgQml0IFBDSSBzbG90cykKKwkgICAgMTZNQi8zMk1CLzY0TUIgUGFyaXR5IFNEUkFNIE1lbW9yeSB3aXRoIEJhdHRlcnkgQmFja3VwCisKK0FjY2VsZVJBSUQgMjUwIChEQUM5NjBQVEwxKQorCSAgICBVc2VzIG9uYm9hcmQgU3ltYmlvcyBTQ1NJIGNoaXBzIG9uIGNlcnRhaW4gbW90aGVyYm9hcmRzCisJICAgIEFsc28gaW5jbHVkZXMgb25lIG9uYm9hcmQgV2lkZSBVbHRyYS0yL0xWRCBTQ1NJIENoYW5uZWwKKwkgICAgNjZNSHogSW50ZWwgaTk2MFJEIFJJU0MgUHJvY2Vzc29yCisJICAgIDRNQi84TUIvMTZNQi8zMk1CLzY0TUIvMTI4TUIgRUNDIEVETyBNZW1vcnkKKworQWNjZWxlUkFJRCAyMDAgKERBQzk2MFBUTDApCisJICAgIFVzZXMgb25ib2FyZCBTeW1iaW9zIFNDU0kgY2hpcHMgb24gY2VydGFpbiBtb3RoZXJib2FyZHMKKwkgICAgSW5jbHVkZXMgbm8gb25ib2FyZCBTQ1NJIENoYW5uZWxzCisJICAgIDY2TUh6IEludGVsIGk5NjBSRCBSSVNDIFByb2Nlc3NvcgorCSAgICA0TUIvOE1CLzE2TUIvMzJNQi82NE1CLzEyOE1CIEVDQyBFRE8gTWVtb3J5CisKK0FjY2VsZVJBSUQgMTUwIChEQUM5NjBQUkwpCisJICAgIFVzZXMgb25ib2FyZCBTeW1iaW9zIFNDU0kgY2hpcHMgb24gY2VydGFpbiBtb3RoZXJib2FyZHMKKwkgICAgQWxzbyBpbmNsdWRlcyBvbmUgb25ib2FyZCBXaWRlIFVsdHJhLTIvTFZEIFNDU0kgQ2hhbm5lbAorCSAgICAzM01IeiBJbnRlbCBpOTYwUlAgUklTQyBQcm9jZXNzb3IKKwkgICAgNE1CIFBhcml0eSBFRE8gTWVtb3J5CisKK0RBQzk2MFBKICAgIDEvMi8zIFdpZGUgVWx0cmEgU0NTSS0zIENoYW5uZWxzCisJICAgIDY2TUh6IEludGVsIGk5NjBSRCBSSVNDIFByb2Nlc3NvcgorCSAgICA0TUIvOE1CLzE2TUIvMzJNQi82NE1CLzEyOE1CIEVDQyBFRE8gTWVtb3J5CisKK0RBQzk2MFBHICAgIDEvMi8zIFdpZGUgVWx0cmEgU0NTSS0zIENoYW5uZWxzCisJICAgIDMzTUh6IEludGVsIGk5NjBSUCBSSVNDIFByb2Nlc3NvcgorCSAgICA0TUIvOE1CIEVDQyBFRE8gTWVtb3J5CisKK0RBQzk2MFBVICAgIDEvMi8zIFdpZGUgVWx0cmEgU0NTSS0zIENoYW5uZWxzCisJICAgIEludGVsIGk5NjBDRiBSSVNDIFByb2Nlc3NvcgorCSAgICA0TUIvOE1CIEVEUkFNIG9yIDJNQi80TUIvOE1CLzE2TUIvMzJNQiBEUkFNIE1lbW9yeQorCitEQUM5NjBQRCAgICAxLzIvMyBXaWRlIEZhc3QgU0NTSS0yIENoYW5uZWxzCisJICAgIEludGVsIGk5NjBDRiBSSVNDIFByb2Nlc3NvcgorCSAgICA0TUIvOE1CIEVEUkFNIG9yIDJNQi80TUIvOE1CLzE2TUIvMzJNQiBEUkFNIE1lbW9yeQorCitEQUM5NjBQTCAgICAxLzIvMyBXaWRlIEZhc3QgU0NTSS0yIENoYW5uZWxzCisJICAgIEludGVsIGk5NjAgUklTQyBQcm9jZXNzb3IKKwkgICAgMk1CLzRNQi84TUIvMTZNQi8zMk1CIERSQU0gTWVtb3J5CisKK0RBQzk2MFAJICAgIDEvMi8zIFdpZGUgRmFzdCBTQ1NJLTIgQ2hhbm5lbHMKKwkgICAgSW50ZWwgaTk2MCBSSVNDIFByb2Nlc3NvcgorCSAgICAyTUIvNE1CLzhNQi8xNk1CLzMyTUIgRFJBTSBNZW1vcnkKKworRm9yIHRoZSBlWHRyZW1lUkFJRCAyMDAwLzMwMDAgYW5kIEFjY2VsZVJBSUQgMzUyLzE3MC8xNjAsIGZpcm13YXJlIHZlcnNpb24KKzYuMDAtMDEgb3IgYWJvdmUgaXMgcmVxdWlyZWQuCisKK0ZvciB0aGUgZVh0cmVtZVJBSUQgMTEwMCwgZmlybXdhcmUgdmVyc2lvbiA1LjA2LTAtNTIgb3IgYWJvdmUgaXMgcmVxdWlyZWQuCisKK0ZvciB0aGUgQWNjZWxlUkFJRCAyNTAsIDIwMCwgYW5kIDE1MCwgZmlybXdhcmUgdmVyc2lvbiA0LjA2LTAtNTcgb3IgYWJvdmUgaXMKK3JlcXVpcmVkLgorCitGb3IgdGhlIERBQzk2MFBKIGFuZCBEQUM5NjBQRywgZmlybXdhcmUgdmVyc2lvbiA0LjA2LTAtMDAgb3IgYWJvdmUgaXMgcmVxdWlyZWQuCisKK0ZvciB0aGUgREFDOTYwUFUsIERBQzk2MFBELCBEQUM5NjBQTCwgYW5kIERBQzk2MFAsIGVpdGhlciBmaXJtd2FyZSB2ZXJzaW9uCiszLjUxLTAtMDQgb3IgYWJvdmUgaXMgcmVxdWlyZWQgKGZvciBkdWFsIEZsYXNoIFJPTSBjb250cm9sbGVycyksIG9yIGZpcm13YXJlCit2ZXJzaW9uIDIuNzMtMC0wMCBvciBhYm92ZSBpcyByZXF1aXJlZCAoZm9yIHNpbmdsZSBGbGFzaCBST00gY29udHJvbGxlcnMpCisKK1BsZWFzZSBub3RlIHRoYXQgbm90IGFsbCBTQ1NJIGRpc2sgZHJpdmVzIGFyZSBzdWl0YWJsZSBmb3IgdXNlIHdpdGggREFDOTYwCitjb250cm9sbGVycywgYW5kIG9ubHkgcGFydGljdWxhciBmaXJtd2FyZSB2ZXJzaW9ucyBvZiBhbnkgZ2l2ZW4gbW9kZWwgbWF5CithY3R1YWxseSBmdW5jdGlvbiBjb3JyZWN0bHkuICBTaW1pbGFybHksIG5vdCBhbGwgbW90aGVyYm9hcmRzIGhhdmUgYSBCSU9TIHRoYXQKK3Byb3Blcmx5IGluaXRpYWxpemVzIHRoZSBBY2NlbGVSQUlEIDI1MCwgQWNjZWxlUkFJRCAyMDAsIEFjY2VsZVJBSUQgMTUwLAorREFDOTYwUEosIGFuZCBEQUM5NjBQRyBiZWNhdXNlIHRoZSBJbnRlbCBpOTYwUkQvUlAgaXMgYSBtdWx0aS1mdW5jdGlvbiBkZXZpY2UuCitJZiBpbiBkb3VidCwgY29udGFjdCBNeWxleCBSQUlEIFRlY2huaWNhbCBTdXBwb3J0IChteWxleHN1cEB1cy5pYm0uY29tKSB0bwordmVyaWZ5IGNvbXBhdGliaWxpdHkuICBNeWxleCBtYWtlcyBhdmFpbGFibGUgYSBoYXJkIGRpc2sgY29tcGF0aWJpbGl0eSBsaXN0IGF0CitodHRwOi8vd3d3Lm15bGV4LmNvbS9zdXBwb3J0L2hkY29tcC9oZC1saXN0cy5odG1sLgorCisKKwkJCSAgICAgIERSSVZFUiBJTlNUQUxMQVRJT04KKworVGhpcyBkaXN0cmlidXRpb24gd2FzIHByZXBhcmVkIGZvciBMaW51eCBrZXJuZWwgdmVyc2lvbiAyLjIuMTkgb3IgMi40LjEyLgorCitUbyBpbnN0YWxsIHRoZSBEQUM5NjAgUkFJRCBkcml2ZXIsIHlvdSBtYXkgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMsCityZXBsYWNpbmcgIi91c3Ivc3JjIiB3aXRoIHdoZXJldmVyIHlvdSBrZWVwIHlvdXIgTGludXgga2VybmVsIHNvdXJjZSB0cmVlOgorCisgIGNkIC91c3Ivc3JjCisgIHRhciAteHZ6ZiBEQUM5NjAtMi4yLjExLnRhci5neiAob3IgREFDOTYwLTIuNC4xMS50YXIuZ3opCisgIG12IFJFQURNRS5EQUM5NjAgbGludXgvRG9jdW1lbnRhdGlvbgorICBtdiBEQUM5NjAuW2NoXSBsaW51eC9kcml2ZXJzL2Jsb2NrCisgIHBhdGNoIC1wMCA8IERBQzk2MC5wYXRjaCAoaWYgREFDOTYwLnBhdGNoIGlzIGluY2x1ZGVkKQorICBjZCBsaW51eAorICBtYWtlIGNvbmZpZworICBtYWtlIGJ6SW1hZ2UgKG9yIHpJbWFnZSkKKworVGhlbiBpbnN0YWxsICJhcmNoL3g4Ni9ib290L2J6SW1hZ2UiIG9yICJhcmNoL3g4Ni9ib290L3pJbWFnZSIgYXMgeW91cgorc3RhbmRhcmQga2VybmVsLCBydW4gbGlsbyBpZiBhcHByb3ByaWF0ZSwgYW5kIHJlYm9vdC4KKworVG8gY3JlYXRlIHRoZSBuZWNlc3NhcnkgZGV2aWNlcyBpbiAvZGV2LCB0aGUgIm1ha2VfcmQiIHNjcmlwdCBpbmNsdWRlZCBpbgorIkRBQzk2MC1VdGlsaXRpZXMudGFyLmd6IiBmcm9tIGh0dHA6Ly93d3cuZGFuZGVsaW9uLmNvbS9MaW51eC8gbWF5IGJlIHVzZWQuCitMSUxPIDIxIGFuZCBGRElTSyB2Mi45IGluY2x1ZGUgREFDOTYwIHN1cHBvcnQ7IGFsc28gaW5jbHVkZWQgaW4gdGhpcyBhcmNoaXZlCithcmUgcGF0Y2hlcyB0byBMSUxPIDIwIGFuZCBGRElTSyB2Mi44IHRoYXQgYWRkIERBQzk2MCBzdXBwb3J0LCBhbG9uZyB3aXRoCitzdGF0aWNhbGx5IGxpbmtlZCBleGVjdXRhYmxlcyBvZiBMSUxPIGFuZCBGRElTSy4gIFRoaXMgbW9kaWZpZWQgdmVyc2lvbiBvZiBMSUxPCit3aWxsIGFsbG93IGJvb3RpbmcgZnJvbSBhIERBQzk2MCBjb250cm9sbGVyIGFuZC9vciBtb3VudGluZyB0aGUgcm9vdCBmaWxlCitzeXN0ZW0gZnJvbSBhIERBQzk2MC4KKworUmVkIEhhdCBMaW51eCA2LjAgYW5kIFN1U0UgTGludXggNi4xIGluY2x1ZGUgc3VwcG9ydCBmb3IgTXlsZXggUENJIFJBSUQKK2NvbnRyb2xsZXJzLiAgSW5zdGFsbGluZyBkaXJlY3RseSBvbnRvIGEgREFDOTYwIG1heSBiZSBwcm9ibGVtYXRpYyBmcm9tIG90aGVyCitMaW51eCBkaXN0cmlidXRpb25zIHVudGlsIHRoZWlyIGluc3RhbGxhdGlvbiB1dGlsaXRpZXMgYXJlIHVwZGF0ZWQuCisKKworCQkJICAgICAgSU5TVEFMTEFUSU9OIE5PVEVTCisKK0JlZm9yZSBpbnN0YWxsaW5nIExpbnV4IG9yIGFkZGluZyBEQUM5NjAgbG9naWNhbCBkcml2ZXMgdG8gYW4gZXhpc3RpbmcgTGludXgKK3N5c3RlbSwgdGhlIGNvbnRyb2xsZXIgbXVzdCBmaXJzdCBiZSBjb25maWd1cmVkIHRvIHByb3ZpZGUgb25lIG9yIG1vcmUgbG9naWNhbAorZHJpdmVzIHVzaW5nIHRoZSBCSU9TIENvbmZpZ3VyYXRpb24gVXRpbGl0eSBvciBEQUNDRi4gIFBsZWFzZSBub3RlIHRoYXQgc2luY2UKK3RoZXJlIGFyZSBvbmx5IGF0IG1vc3QgNiB1c2FibGUgcGFydGl0aW9ucyBvbiBlYWNoIGxvZ2ljYWwgZHJpdmUsIHN5c3RlbXMKK3JlcXVpcmluZyBtb3JlIHBhcnRpdGlvbnMgc2hvdWxkIHN1YmRpdmlkZSBhIGRyaXZlIGdyb3VwIGludG8gbXVsdGlwbGUgbG9naWNhbAorZHJpdmVzLCBlYWNoIG9mIHdoaWNoIGNhbiBoYXZlIHVwIHRvIDYgdXNhYmxlIHBhcnRpdGlvbnMuICBBbHNvLCBub3RlIHRoYXQgd2l0aAorbGFyZ2UgZGlzayBhcnJheXMgaXQgaXMgYWR2aXNhYmxlIHRvIGVuYWJsZSB0aGUgOEdCIEJJT1MgR2VvbWV0cnkgKDI1NS82MykKK3JhdGhlciB0aGFuIGFjY2VwdGluZyB0aGUgZGVmYXVsdCAyR0IgQklPUyBHZW9tZXRyeSAoMTI4LzMyKTsgZmFpbGluZyB0byBzbyBkbword2lsbCBjYXVzZSB0aGUgbG9naWNhbCBkcml2ZSBnZW9tZXRyeSB0byBoYXZlIG1vcmUgdGhhbiA2NTUzNSBjeWxpbmRlcnMgd2hpY2gKK3dpbGwgbWFrZSBpdCBpbXBvc3NpYmxlIGZvciBGRElTSyB0byBiZSB1c2VkIHByb3Blcmx5LiAgVGhlIDhHQiBCSU9TIEdlb21ldHJ5CitjYW4gYmUgZW5hYmxlZCBieSBjb25maWd1cmluZyB0aGUgREFDOTYwIEJJT1MsIHdoaWNoIGlzIGFjY2Vzc2libGUgdmlhIEFsdC1NCitkdXJpbmcgdGhlIEJJT1MgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuCisKK0ZvciBtYXhpbXVtIHBlcmZvcm1hbmNlIGFuZCB0aGUgbW9zdCBlZmZpY2llbnQgRTJGU0NLIHBlcmZvcm1hbmNlLCBpdCBpcworcmVjb21tZW5kZWQgdGhhdCBFWFQyIGZpbGUgc3lzdGVtcyBiZSBidWlsdCB3aXRoIGEgNEtCIGJsb2NrIHNpemUgYW5kIDE2IGJsb2NrCitzdHJpZGUgdG8gbWF0Y2ggdGhlIERBQzk2MCBjb250cm9sbGVyJ3MgNjRLQiBkZWZhdWx0IHN0cmlwZSBzaXplLiAgVGhlIGNvbW1hbmQKKyJta2UyZnMgLWIgNDA5NiAtUiBzdHJpZGU9MTYgPGRldmljZT4iIGlzIGFwcHJvcHJpYXRlLiAgVW5sZXNzIHRoZXJlIHdpbGwgYmUgYQorbGFyZ2UgbnVtYmVyIG9mIHNtYWxsIGZpbGVzIG9uIHRoZSBmaWxlIHN5c3RlbXMsIGl0IGlzIGFsc28gYmVuZWZpY2lhbCB0byBhZGQKK3RoZSAiLWkgMTYzODQiIG9wdGlvbiB0byBpbmNyZWFzZSB0aGUgYnl0ZXMgcGVyIGlub2RlIHBhcmFtZXRlciB0aGVyZWJ5CityZWR1Y2luZyB0aGUgZmlsZSBzeXN0ZW0gbWV0YWRhdGEuICBGaW5hbGx5LCBvbiBzeXN0ZW1zIHRoYXQgd2lsbCBvbmx5IGJlIHJ1bgord2l0aCBMaW51eCAyLjIgb3IgbGF0ZXIga2VybmVscyBpdCBpcyBiZW5lZmljaWFsIHRvIGVuYWJsZSBzcGFyc2Ugc3VwZXJibG9ja3MKK3dpdGggdGhlICItcyAxIiBvcHRpb24uCisKKworCQkgICAgICBEQUM5NjAgQU5OT1VOQ0VNRU5UUyBNQUlMSU5HIExJU1QKKworVGhlIERBQzk2MCBBbm5vdW5jZW1lbnRzIE1haWxpbmcgTGlzdCBwcm92aWRlcyBhIGZvcnVtIGZvciBpbmZvcm1pbmcgTGludXgKK3VzZXJzIG9mIG5ldyBkcml2ZXIgcmVsZWFzZXMgYW5kIG90aGVyIGFubm91bmNlbWVudHMgcmVnYXJkaW5nIExpbnV4IHN1cHBvcnQKK2ZvciBEQUM5NjAgUENJIFJBSUQgQ29udHJvbGxlcnMuICBUbyBqb2luIHRoZSBtYWlsaW5nIGxpc3QsIHNlbmQgYSBtZXNzYWdlIHRvCisiZGFjOTYwLWFubm91bmNlLXJlcXVlc3RAZGFuZGVsaW9uLmNvbSIgd2l0aCB0aGUgbGluZSAic3Vic2NyaWJlIiBpbiB0aGUKK21lc3NhZ2UgYm9keS4KKworCisJCUNPTlRST0xMRVIgQ09ORklHVVJBVElPTiBBTkQgU1RBVFVTIE1PTklUT1JJTkcKKworVGhlIERBQzk2MCBSQUlEIGNvbnRyb2xsZXJzIHJ1bm5pbmcgZmlybXdhcmUgNC4wNiBvciBhYm92ZSBpbmNsdWRlIGEgQmFja2dyb3VuZAorSW5pdGlhbGl6YXRpb24gZmFjaWxpdHkgc28gdGhhdCBzeXN0ZW0gZG93bnRpbWUgaXMgbWluaW1pemVkIGJvdGggZm9yIGluaXRpYWwKK2luc3RhbGxhdGlvbiBhbmQgc3Vic2VxdWVudCBjb25maWd1cmF0aW9uIG9mIGFkZGl0aW9uYWwgc3RvcmFnZS4gIFRoZSBCSU9TCitDb25maWd1cmF0aW9uIFV0aWxpdHkgKGFjY2Vzc2libGUgdmlhIEFsdC1SIGR1cmluZyB0aGUgQklPUyBpbml0aWFsaXphdGlvbgorc2VxdWVuY2UpIGlzIHVzZWQgdG8gcXVpY2tseSBjb25maWd1cmUgdGhlIGNvbnRyb2xsZXIsIGFuZCB0aGVuIHRoZSBsb2dpY2FsCitkcml2ZXMgdGhhdCBoYXZlIGJlZW4gY3JlYXRlZCBhcmUgYXZhaWxhYmxlIGZvciBpbW1lZGlhdGUgdXNlIGV2ZW4gd2hpbGUgdGhleQorYXJlIHN0aWxsIGJlaW5nIGluaXRpYWxpemVkIGJ5IHRoZSBjb250cm9sbGVyLiAgVGhlIHByaW1hcnkgbmVlZCBmb3Igb25saW5lCitjb25maWd1cmF0aW9uIGFuZCBzdGF0dXMgbW9uaXRvcmluZyBpcyB0aGVuIHRvIGF2b2lkIHN5c3RlbSBkb3dudGltZSB3aGVuIGRpc2sKK2RyaXZlcyBmYWlsIGFuZCBtdXN0IGJlIHJlcGxhY2VkLiAgTXlsZXgncyBvbmxpbmUgbW9uaXRvcmluZyBhbmQgY29uZmlndXJhdGlvbgordXRpbGl0aWVzIGFyZSBiZWluZyBwb3J0ZWQgdG8gTGludXggYW5kIHdpbGwgYmVjb21lIGF2YWlsYWJsZSBhdCBzb21lIHBvaW50IGluCit0aGUgZnV0dXJlLiAgTm90ZSB0aGF0IHdpdGggYSBTQUYtVEUgKFNDU0kgQWNjZXNzZWQgRmF1bHQtVG9sZXJhbnQgRW5jbG9zdXJlKQorZW5jbG9zdXJlLCB0aGUgY29udHJvbGxlciBpcyBhYmxlIHRvIHJlYnVpbGQgZmFpbGVkIGRyaXZlcyBhdXRvbWF0aWNhbGx5IGFzCitzb29uIGFzIGEgZHJpdmUgcmVwbGFjZW1lbnQgaXMgbWFkZSBhdmFpbGFibGUuCisKK1RoZSBwcmltYXJ5IGludGVyZmFjZXMgZm9yIGNvbnRyb2xsZXIgY29uZmlndXJhdGlvbiBhbmQgc3RhdHVzIG1vbml0b3JpbmcgYXJlCitzcGVjaWFsIGZpbGVzIGNyZWF0ZWQgaW4gdGhlIC9wcm9jL3JkLy4uLiBoaWVyYXJjaHkgYWxvbmcgd2l0aCB0aGUgbm9ybWFsCitzeXN0ZW0gY29uc29sZSBsb2dnaW5nIG1lY2hhbmlzbS4gIFdoZW5ldmVyIHRoZSBzeXN0ZW0gaXMgb3BlcmF0aW5nLCB0aGUgREFDOTYwCitkcml2ZXIgcXVlcmllcyBlYWNoIGNvbnRyb2xsZXIgZm9yIHN0YXR1cyBpbmZvcm1hdGlvbiBldmVyeSAxMCBzZWNvbmRzLCBhbmQKK2NoZWNrcyBmb3IgYWRkaXRpb25hbCBjb25kaXRpb25zIGV2ZXJ5IDYwIHNlY29uZHMuICBUaGUgaW5pdGlhbCBzdGF0dXMgb2YgZWFjaAorY29udHJvbGxlciBpcyBhbHdheXMgYXZhaWxhYmxlIGZvciBjb250cm9sbGVyIE4gaW4gL3Byb2MvcmQvY04vaW5pdGlhbF9zdGF0dXMsCithbmQgdGhlIGN1cnJlbnQgc3RhdHVzIGFzIG9mIHRoZSBsYXN0IHN0YXR1cyBtb25pdG9yaW5nIHF1ZXJ5IGlzIGF2YWlsYWJsZSBpbgorL3Byb2MvcmQvY04vY3VycmVudF9zdGF0dXMuICBJbiBhZGRpdGlvbiwgc3RhdHVzIGNoYW5nZXMgYXJlIGFsc28gbG9nZ2VkIGJ5IHRoZQorZHJpdmVyIHRvIHRoZSBzeXN0ZW0gY29uc29sZSBhbmQgd2lsbCBhcHBlYXIgaW4gdGhlIGxvZyBmaWxlcyBtYWludGFpbmVkIGJ5CitzeXNsb2cuICBUaGUgcHJvZ3Jlc3Mgb2YgYXN5bmNocm9ub3VzIHJlYnVpbGQgb3IgY29uc2lzdGVuY3kgY2hlY2sgb3BlcmF0aW9ucworaXMgYWxzbyBhdmFpbGFibGUgaW4gL3Byb2MvcmQvY04vY3VycmVudF9zdGF0dXMsIGFuZCBwcm9ncmVzcyBtZXNzYWdlcyBhcmUKK2xvZ2dlZCB0byB0aGUgc3lzdGVtIGNvbnNvbGUgYXQgbW9zdCBldmVyeSA2MCBzZWNvbmRzLgorCitTdGFydGluZyB3aXRoIHRoZSAyLjIuMy8yLjAuMyB2ZXJzaW9ucyBvZiB0aGUgZHJpdmVyLCB0aGUgc3RhdHVzIGluZm9ybWF0aW9uCithdmFpbGFibGUgaW4gL3Byb2MvcmQvY04vaW5pdGlhbF9zdGF0dXMgYW5kIC9wcm9jL3JkL2NOL2N1cnJlbnRfc3RhdHVzIGhhcyBiZWVuCithdWdtZW50ZWQgdG8gaW5jbHVkZSB0aGUgdmVuZG9yLCBtb2RlbCwgcmV2aXNpb24sIGFuZCBzZXJpYWwgbnVtYmVyIChpZgorYXZhaWxhYmxlKSBmb3IgZWFjaCBwaHlzaWNhbCBkZXZpY2UgZm91bmQgY29ubmVjdGVkIHRvIHRoZSBjb250cm9sbGVyOgorCisqKioqKiBEQUM5NjAgUkFJRCBEcml2ZXIgVmVyc2lvbiAyLjIuMyBvZiAxOSBBdWd1c3QgMTk5OSAqKioqKgorQ29weXJpZ2h0IDE5OTgtMTk5OSBieSBMZW9uYXJkIE4uIFp1YmtvZmYgPGxuekBkYW5kZWxpb24uY29tPgorQ29uZmlndXJpbmcgTXlsZXggREFDOTYwUFJMIFBDSSBSQUlEIENvbnRyb2xsZXIKKyAgRmlybXdhcmUgVmVyc2lvbjogNC4wNy0wLTA3LCBDaGFubmVsczogMSwgTWVtb3J5IFNpemU6IDE2TUIKKyAgUENJIEJ1czogMSwgRGV2aWNlOiA0LCBGdW5jdGlvbjogMSwgSS9PIEFkZHJlc3M6IFVuYXNzaWduZWQKKyAgUENJIEFkZHJlc3M6IDB4RkUzMDAwMDAgbWFwcGVkIGF0IDB4QTA4MDAwMDAsIElSUSBDaGFubmVsOiAyMQorICBDb250cm9sbGVyIFF1ZXVlIERlcHRoOiAxMjgsIE1heGltdW0gQmxvY2tzIHBlciBDb21tYW5kOiAxMjgKKyAgRHJpdmVyIFF1ZXVlIERlcHRoOiAxMjcsIE1heGltdW0gU2NhdHRlci9HYXRoZXIgU2VnbWVudHM6IDMzCisgIFN0cmlwZSBTaXplOiA2NEtCLCBTZWdtZW50IFNpemU6IDhLQiwgQklPUyBHZW9tZXRyeTogMjU1LzYzCisgIFNBRi1URSBFbmNsb3N1cmUgTWFuYWdlbWVudCBFbmFibGVkCisgIFBoeXNpY2FsIERldmljZXM6CisgICAgMDowICBWZW5kb3I6IElCTSAgICAgICBNb2RlbDogRFJWUzA5RCAgICAgICAgICAgUmV2aXNpb246IDAyNzAKKyAgICAgICAgIFNlcmlhbCBOdW1iZXI6ICAgICAgIDY4MDE2Nzc1SEEKKyAgICAgICAgIERpc2sgU3RhdHVzOiBPbmxpbmUsIDE3OTI4MTkyIGJsb2NrcworICAgIDA6MSAgVmVuZG9yOiBJQk0gICAgICAgTW9kZWw6IERSVlMwOUQgICAgICAgICAgIFJldmlzaW9uOiAwMjcwCisgICAgICAgICBTZXJpYWwgTnVtYmVyOiAgICAgICA2ODAwNEU1M0hBCisgICAgICAgICBEaXNrIFN0YXR1czogT25saW5lLCAxNzkyODE5MiBibG9ja3MKKyAgICAwOjIgIFZlbmRvcjogSUJNICAgICAgIE1vZGVsOiBEUlZTMDlEICAgICAgICAgICBSZXZpc2lvbjogMDI3MAorICAgICAgICAgU2VyaWFsIE51bWJlcjogICAgICAgMTMwMTM5MzVIQQorICAgICAgICAgRGlzayBTdGF0dXM6IE9ubGluZSwgMTc5MjgxOTIgYmxvY2tzCisgICAgMDozICBWZW5kb3I6IElCTSAgICAgICBNb2RlbDogRFJWUzA5RCAgICAgICAgICAgUmV2aXNpb246IDAyNzAKKyAgICAgICAgIFNlcmlhbCBOdW1iZXI6ICAgICAgIDEzMDE2ODk3SEEKKyAgICAgICAgIERpc2sgU3RhdHVzOiBPbmxpbmUsIDE3OTI4MTkyIGJsb2NrcworICAgIDA6NCAgVmVuZG9yOiBJQk0gICAgICAgTW9kZWw6IERSVlMwOUQgICAgICAgICAgIFJldmlzaW9uOiAwMjcwCisgICAgICAgICBTZXJpYWwgTnVtYmVyOiAgICAgICA2ODAxOTkwNUhBCisgICAgICAgICBEaXNrIFN0YXR1czogT25saW5lLCAxNzkyODE5MiBibG9ja3MKKyAgICAwOjUgIFZlbmRvcjogSUJNICAgICAgIE1vZGVsOiBEUlZTMDlEICAgICAgICAgICBSZXZpc2lvbjogMDI3MAorICAgICAgICAgU2VyaWFsIE51bWJlcjogICAgICAgNjgwMTI3NTNIQQorICAgICAgICAgRGlzayBTdGF0dXM6IE9ubGluZSwgMTc5MjgxOTIgYmxvY2tzCisgICAgMDo2ICBWZW5kb3I6IEVTRy1TSFYgICBNb2RlbDogU0NBIEhTQlAgTTYgICAgICAgUmV2aXNpb246IDAuNjEKKyAgTG9naWNhbCBEcml2ZXM6CisgICAgL2Rldi9yZC9jMGQwOiBSQUlELTUsIE9ubGluZSwgODk2NDA5NjAgYmxvY2tzLCBXcml0ZSBUaHJ1CisgIE5vIFJlYnVpbGQgb3IgQ29uc2lzdGVuY3kgQ2hlY2sgaW4gUHJvZ3Jlc3MKKworVG8gc2ltcGxpZnkgdGhlIG1vbml0b3JpbmcgcHJvY2VzcyBmb3IgY3VzdG9tIHNvZnR3YXJlLCB0aGUgc3BlY2lhbCBmaWxlCisvcHJvYy9yZC9zdGF0dXMgcmV0dXJucyAiT0siIHdoZW4gYWxsIERBQzk2MCBjb250cm9sbGVycyBpbiB0aGUgc3lzdGVtIGFyZQorb3BlcmF0aW5nIG5vcm1hbGx5IGFuZCBubyBmYWlsdXJlcyBoYXZlIG9jY3VycmVkLCBvciAiQUxFUlQiIGlmIGFueSBsb2dpY2FsCitkcml2ZXMgYXJlIG9mZmxpbmUgb3IgY3JpdGljYWwgb3IgYW55IG5vbi1zdGFuZGJ5IHBoeXNpY2FsIGRyaXZlcyBhcmUgZGVhZC4KKworQ29uZmlndXJhdGlvbiBjb21tYW5kcyBmb3IgY29udHJvbGxlciBOIGFyZSBhdmFpbGFibGUgdmlhIHRoZSBzcGVjaWFsIGZpbGUKKy9wcm9jL3JkL2NOL3VzZXJfY29tbWFuZC4gIEEgaHVtYW4gcmVhZGFibGUgY29tbWFuZCBjYW4gYmUgd3JpdHRlbiB0byB0aGlzCitzcGVjaWFsIGZpbGUgdG8gaW5pdGlhdGUgYSBjb25maWd1cmF0aW9uIG9wZXJhdGlvbiwgYW5kIHRoZSByZXN1bHRzIG9mIHRoZQorb3BlcmF0aW9uIGNhbiB0aGVuIGJlIHJlYWQgYmFjayBmcm9tIHRoZSBzcGVjaWFsIGZpbGUgaW4gYWRkaXRpb24gdG8gYmVpbmcKK2xvZ2dlZCB0byB0aGUgc3lzdGVtIGNvbnNvbGUuICBUaGUgc2hlbGwgY29tbWFuZCBzZXF1ZW5jZQorCisgIGVjaG8gIjxjb25maWd1cmF0aW9uLWNvbW1hbmQ+IiA+IC9wcm9jL3JkL2MwL3VzZXJfY29tbWFuZAorICBjYXQgL3Byb2MvcmQvYzAvdXNlcl9jb21tYW5kCisKK2lzIHR5cGljYWxseSB1c2VkIHRvIGV4ZWN1dGUgY29uZmlndXJhdGlvbiBjb21tYW5kcy4gIFRoZSBjb25maWd1cmF0aW9uCitjb21tYW5kcyBhcmU6CisKKyAgZmx1c2gtY2FjaGUKKworICAgIFRoZSAiZmx1c2gtY2FjaGUiIGNvbW1hbmQgZmx1c2hlcyB0aGUgY29udHJvbGxlcidzIGNhY2hlLiAgVGhlIHN5c3RlbQorICAgIGF1dG9tYXRpY2FsbHkgZmx1c2hlcyB0aGUgY2FjaGUgYXQgc2h1dGRvd24gb3IgaWYgdGhlIGRyaXZlciBtb2R1bGUgaXMKKyAgICB1bmxvYWRlZCwgc28gdGhpcyBjb21tYW5kIGlzIG9ubHkgbmVlZGVkIHRvIGJlIGNlcnRhaW4gYSB3cml0ZSBiYWNrIGNhY2hlCisgICAgaXMgZmx1c2hlZCB0byBkaXNrIGJlZm9yZSB0aGUgc3lzdGVtIGlzIHBvd2VyZWQgb2ZmIGJ5IGEgY29tbWFuZCB0byBhIFVQUy4KKyAgICBOb3RlIHRoYXQgdGhlIGZsdXNoLWNhY2hlIGNvbW1hbmQgYWxzbyBzdG9wcyBhbiBhc3luY2hyb25vdXMgcmVidWlsZCBvcgorICAgIGNvbnNpc3RlbmN5IGNoZWNrLCBzbyBpdCBzaG91bGQgbm90IGJlIHVzZWQgZXhjZXB0IHdoZW4gdGhlIHN5c3RlbSBpcyBiZWluZworICAgIGhhbHRlZC4KKworICBraWxsIDxjaGFubmVsPjo8dGFyZ2V0LWlkPgorCisgICAgVGhlICJraWxsIiBjb21tYW5kIG1hcmtzIHRoZSBwaHlzaWNhbCBkcml2ZSA8Y2hhbm5lbD46PHRhcmdldC1pZD4gYXMgREVBRC4KKyAgICBUaGlzIGNvbW1hbmQgaXMgcHJvdmlkZWQgcHJpbWFyaWx5IGZvciB0ZXN0aW5nLCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkCisgICAgZHVyaW5nIG5vcm1hbCBzeXN0ZW0gb3BlcmF0aW9uLgorCisgIG1ha2Utb25saW5lIDxjaGFubmVsPjo8dGFyZ2V0LWlkPgorCisgICAgVGhlICJtYWtlLW9ubGluZSIgY29tbWFuZCBjaGFuZ2VzIHRoZSBwaHlzaWNhbCBkcml2ZSA8Y2hhbm5lbD46PHRhcmdldC1pZD4KKyAgICBmcm9tIHN0YXR1cyBERUFEIHRvIHN0YXR1cyBPTkxJTkUuICBJbiBjYXNlcyB3aGVyZSBtdWx0aXBsZSBwaHlzaWNhbCBkcml2ZXMKKyAgICBoYXZlIGJlZW4ga2lsbGVkIHNpbXVsdGFuZW91c2x5LCB0aGlzIGNvbW1hbmQgbWF5IGJlIHVzZWQgdG8gYnJpbmcgYWxsIGJ1dAorICAgIG9uZSBvZiB0aGVtIGJhY2sgb25saW5lLCBhZnRlciB3aGljaCBhIHJlYnVpbGQgdG8gdGhlIGZpbmFsIGRyaXZlIGlzCisgICAgbmVjZXNzYXJ5LgorCisgICAgV2FybmluZzogbWFrZS1vbmxpbmUgc2hvdWxkIG9ubHkgYmUgdXNlZCBvbiBhIGRlYWQgcGh5c2ljYWwgZHJpdmUgdGhhdCBpcworICAgIGFuIGFjdGl2ZSBwYXJ0IG9mIGEgZHJpdmUgZ3JvdXAsIG5ldmVyIG9uIGEgc3RhbmRieSBkcml2ZS4gIFRoZSBjb21tYW5kCisgICAgc2hvdWxkIG5ldmVyIGJlIHVzZWQgb24gYSBkZWFkIGRyaXZlIHRoYXQgaXMgcGFydCBvZiBhIGNyaXRpY2FsIGxvZ2ljYWwKKyAgICBkcml2ZTsgcmVidWlsZCBzaG91bGQgYmUgdXNlZCBpZiBvbmx5IGEgc2luZ2xlIGRyaXZlIGlzIGRlYWQuCisKKyAgbWFrZS1zdGFuZGJ5IDxjaGFubmVsPjo8dGFyZ2V0LWlkPgorCisgICAgVGhlICJtYWtlLXN0YW5kYnkiIGNvbW1hbmQgY2hhbmdlcyBwaHlzaWNhbCBkcml2ZSA8Y2hhbm5lbD46PHRhcmdldC1pZD4KKyAgICBmcm9tIHN0YXR1cyBERUFEIHRvIHN0YXR1cyBTVEFOREJZLiAgSXQgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiBjYXNlcyB3aGVyZQorICAgIGEgZGVhZCBkcml2ZSB3YXMgcmVwbGFjZWQgYWZ0ZXIgYW4gYXV0b21hdGljIHJlYnVpbGQgd2FzIHBlcmZvcm1lZCBvbnRvIGEKKyAgICBzdGFuZGJ5IGRyaXZlLiAgSXQgY2Fubm90IGJlIHVzZWQgdG8gYWRkIGEgc3RhbmRieSBkcml2ZSB0byB0aGUgY29udHJvbGxlcgorICAgIGNvbmZpZ3VyYXRpb24gaWYgb25lIHdhcyBub3QgY3JlYXRlZCBpbml0aWFsbHk7IHRoZSBCSU9TIENvbmZpZ3VyYXRpb24KKyAgICBVdGlsaXR5IG11c3QgYmUgdXNlZCBmb3IgdGhhdCBjdXJyZW50bHkuCisKKyAgcmVidWlsZCA8Y2hhbm5lbD46PHRhcmdldC1pZD4KKworICAgIFRoZSAicmVidWlsZCIgY29tbWFuZCBpbml0aWF0ZXMgYW4gYXN5bmNocm9ub3VzIHJlYnVpbGQgb250byBwaHlzaWNhbCBkcml2ZQorICAgIDxjaGFubmVsPjo8dGFyZ2V0LWlkPi4gIEl0IHNob3VsZCBvbmx5IGJlIHVzZWQgd2hlbiBhIGRlYWQgZHJpdmUgaGFzIGJlZW4KKyAgICByZXBsYWNlZC4KKworICBjaGVjay1jb25zaXN0ZW5jeSA8bG9naWNhbC1kcml2ZS1udW1iZXI+CisKKyAgICBUaGUgImNoZWNrLWNvbnNpc3RlbmN5IiBjb21tYW5kIGluaXRpYXRlcyBhbiBhc3luY2hyb25vdXMgY29uc2lzdGVuY3kgY2hlY2sKKyAgICBvZiA8bG9naWNhbC1kcml2ZS1udW1iZXI+IHdpdGggYXV0b21hdGljIHJlc3RvcmF0aW9uLiAgSXQgY2FuIGJlIHVzZWQKKyAgICB3aGVuZXZlciBpdCBpcyBkZXNpcmVkIHRvIHZlcmlmeSB0aGUgY29uc2lzdGVuY3kgb2YgdGhlIHJlZHVuZGFuY3kKKyAgICBpbmZvcm1hdGlvbi4KKworICBjYW5jZWwtcmVidWlsZAorICBjYW5jZWwtY29uc2lzdGVuY3ktY2hlY2sKKworICAgIFRoZSAiY2FuY2VsLXJlYnVpbGQiIGFuZCAiY2FuY2VsLWNvbnNpc3RlbmN5LWNoZWNrIiBjb21tYW5kcyBjYW5jZWwgYW55CisgICAgcmVidWlsZCBvciBjb25zaXN0ZW5jeSBjaGVjayBvcGVyYXRpb25zIHByZXZpb3VzbHkgaW5pdGlhdGVkLgorCisKKwkgICAgICAgRVhBTVBMRSBJIC0gRFJJVkUgRkFJTFVSRSBXSVRIT1VUIEEgU1RBTkRCWSBEUklWRQorCitUaGUgZm9sbG93aW5nIGFubm90YXRlZCBsb2dzIGRlbW9uc3RyYXRlIHRoZSBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb24gYW5kIGFuZAorb25saW5lIHN0YXR1cyBtb25pdG9yaW5nIGNhcGFiaWxpdGllcyBvZiB0aGUgTGludXggREFDOTYwIERyaXZlci4gIFRoZSB0ZXN0Citjb25maWd1cmF0aW9uIGNvbXByaXNlcyA2IDFHQiBRdWFudHVtIEF0bGFzIEkgZGlzayBkcml2ZXMgb24gdHdvIGNoYW5uZWxzIG9mIGEKK0RBQzk2MFBKIGNvbnRyb2xsZXIuICBUaGUgcGh5c2ljYWwgZHJpdmVzIGFyZSBjb25maWd1cmVkIGludG8gYSBzaW5nbGUgZHJpdmUKK2dyb3VwIHdpdGhvdXQgYSBzdGFuZGJ5IGRyaXZlLCBhbmQgdGhlIGRyaXZlIGdyb3VwIGhhcyBiZWVuIGNvbmZpZ3VyZWQgaW50byB0d28KK2xvZ2ljYWwgZHJpdmVzLCBvbmUgUkFJRC01IGFuZCBvbmUgUkFJRC02LiAgTm90ZSB0aGF0IHRoZXNlIGxvZ3MgYXJlIGZyb20gYW4KK2VhcmxpZXIgdmVyc2lvbiBvZiB0aGUgZHJpdmVyIGFuZCB0aGUgbWVzc2FnZXMgaGF2ZSBjaGFuZ2VkIHNvbWV3aGF0IHdpdGggbmV3ZXIKK3JlbGVhc2VzLCBidXQgdGhlIGZ1bmN0aW9uYWxpdHkgcmVtYWlucyBzaW1pbGFyLiAgRmlyc3QsIGhlcmUgaXMgdGhlIGN1cnJlbnQKK3N0YXR1cyBvZiB0aGUgUkFJRCBjb25maWd1cmF0aW9uOgorCitnd3luZWRkOi91L2xueiMgY2F0IC9wcm9jL3JkL2MwL2N1cnJlbnRfc3RhdHVzCisqKioqKiBEQUM5NjAgUkFJRCBEcml2ZXIgVmVyc2lvbiAyLjAuMCBvZiAyMyBNYXJjaCAxOTk5ICoqKioqCitDb3B5cmlnaHQgMTk5OC0xOTk5IGJ5IExlb25hcmQgTi4gWnVia29mZiA8bG56QGRhbmRlbGlvbi5jb20+CitDb25maWd1cmluZyBNeWxleCBEQUM5NjBQSiBQQ0kgUkFJRCBDb250cm9sbGVyCisgIEZpcm13YXJlIFZlcnNpb246IDQuMDYtMC0wOCwgQ2hhbm5lbHM6IDMsIE1lbW9yeSBTaXplOiA4TUIKKyAgUENJIEJ1czogMCwgRGV2aWNlOiAxOSwgRnVuY3Rpb246IDEsIEkvTyBBZGRyZXNzOiBVbmFzc2lnbmVkCisgIFBDSSBBZGRyZXNzOiAweEZENEZDMDAwIG1hcHBlZCBhdCAweDg4MDcwMDAsIElSUSBDaGFubmVsOiA5CisgIENvbnRyb2xsZXIgUXVldWUgRGVwdGg6IDEyOCwgTWF4aW11bSBCbG9ja3MgcGVyIENvbW1hbmQ6IDEyOAorICBEcml2ZXIgUXVldWUgRGVwdGg6IDEyNywgTWF4aW11bSBTY2F0dGVyL0dhdGhlciBTZWdtZW50czogMzMKKyAgU3RyaXBlIFNpemU6IDY0S0IsIFNlZ21lbnQgU2l6ZTogOEtCLCBCSU9TIEdlb21ldHJ5OiAyNTUvNjMKKyAgUGh5c2ljYWwgRGV2aWNlczoKKyAgICAwOjEgLSBEaXNrOiBPbmxpbmUsIDIyMDE2MDAgYmxvY2tzCisgICAgMDoyIC0gRGlzazogT25saW5lLCAyMjAxNjAwIGJsb2NrcworICAgIDA6MyAtIERpc2s6IE9ubGluZSwgMjIwMTYwMCBibG9ja3MKKyAgICAxOjEgLSBEaXNrOiBPbmxpbmUsIDIyMDE2MDAgYmxvY2tzCisgICAgMToyIC0gRGlzazogT25saW5lLCAyMjAxNjAwIGJsb2NrcworICAgIDE6MyAtIERpc2s6IE9ubGluZSwgMjIwMTYwMCBibG9ja3MKKyAgTG9naWNhbCBEcml2ZXM6CisgICAgL2Rldi9yZC9jMGQwOiBSQUlELTUsIE9ubGluZSwgNTQ5ODg4MCBibG9ja3MsIFdyaXRlIFRocnUKKyAgICAvZGV2L3JkL2MwZDE6IFJBSUQtNiwgT25saW5lLCAzMzA1NDcyIGJsb2NrcywgV3JpdGUgVGhydQorICBObyBSZWJ1aWxkIG9yIENvbnNpc3RlbmN5IENoZWNrIGluIFByb2dyZXNzCisKK2d3eW5lZGQ6L3UvbG56IyBjYXQgL3Byb2MvcmQvc3RhdHVzCitPSworCitUaGUgYWJvdmUgbWVzc2FnZXMgaW5kaWNhdGUgdGhhdCBldmVyeXRoaW5nIGlzIGhlYWx0aHksIGFuZCAvcHJvYy9yZC9zdGF0dXMKK3JldHVybnMgIk9LIiBpbmRpY2F0aW5nIHRoYXQgdGhlcmUgYXJlIG5vIHByb2JsZW1zIHdpdGggYW55IERBQzk2MCBjb250cm9sbGVyCitpbiB0aGUgc3lzdGVtLiAgRm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXMsIHdoaWxlIEkvTyBpcyBhY3RpdmUgUGh5c2ljYWwgRHJpdmUKKzE6MSBpcyBub3cgZGlzY29ubmVjdGVkLCBzaW11bGF0aW5nIGEgZHJpdmUgZmFpbHVyZS4gIFRoZSBmYWlsdXJlIGlzIG5vdGVkIGJ5Cit0aGUgZHJpdmVyIHdpdGhpbiAxMCBzZWNvbmRzIG9mIHRoZSBjb250cm9sbGVyJ3MgaGF2aW5nIGRldGVjdGVkIGl0LCBhbmQgdGhlCitkcml2ZXIgbG9ncyB0aGUgZm9sbG93aW5nIGNvbnNvbGUgc3RhdHVzIG1lc3NhZ2VzIGluZGljYXRpbmcgdGhhdCBMb2dpY2FsCitEcml2ZXMgMCBhbmQgMSBhcmUgbm93IENSSVRJQ0FMIGFzIGEgcmVzdWx0IG9mIFBoeXNpY2FsIERyaXZlIDE6MSBiZWluZyBERUFEOgorCitEQUM5NjAjMDogUGh5c2ljYWwgRHJpdmUgMToyIEVycm9yIExvZzogU2Vuc2UgS2V5ID0gNiwgQVNDID0gMjksIEFTQ1EgPSAwMgorREFDOTYwIzA6IFBoeXNpY2FsIERyaXZlIDE6MyBFcnJvciBMb2c6IFNlbnNlIEtleSA9IDYsIEFTQyA9IDI5LCBBU0NRID0gMDIKK0RBQzk2MCMwOiBQaHlzaWNhbCBEcml2ZSAxOjEga2lsbGVkIGJlY2F1c2Ugb2YgdGltZW91dCBvbiBTQ1NJIGNvbW1hbmQKK0RBQzk2MCMwOiBQaHlzaWNhbCBEcml2ZSAxOjEgaXMgbm93IERFQUQKK0RBQzk2MCMwOiBMb2dpY2FsIERyaXZlIDAgKC9kZXYvcmQvYzBkMCkgaXMgbm93IENSSVRJQ0FMCitEQUM5NjAjMDogTG9naWNhbCBEcml2ZSAxICgvZGV2L3JkL2MwZDEpIGlzIG5vdyBDUklUSUNBTAorCitUaGUgU2Vuc2UgS2V5cyBsb2dnZWQgaGVyZSBhcmUganVzdCBDaGVjayBDb25kaXRpb24gLyBVbml0IEF0dGVudGlvbiBjb25kaXRpb25zCithcmlzaW5nIGZyb20gYSBTQ1NJIGJ1cyByZXNldCB0aGF0IGlzIGZvcmNlZCBieSB0aGUgY29udHJvbGxlciBkdXJpbmcgaXRzIGVycm9yCityZWNvdmVyeSBwcm9jZWR1cmVzLiAgQ29uY3VycmVudGx5IHdpdGggdGhlIGFib3ZlLCB0aGUgZHJpdmVyIHN0YXR1cyBhdmFpbGFibGUKK2Zyb20gL3Byb2MvcmQgYWxzbyByZWZsZWN0cyB0aGUgZHJpdmUgZmFpbHVyZS4gIFRoZSBzdGF0dXMgbWVzc2FnZSBpbgorL3Byb2MvcmQvc3RhdHVzIGhhcyBjaGFuZ2VkIGZyb20gIk9LIiB0byAiQUxFUlQiOgorCitnd3luZWRkOi91L2xueiMgY2F0IC9wcm9jL3JkL3N0YXR1cworQUxFUlQKKworYW5kIC9wcm9jL3JkL2MwL2N1cnJlbnRfc3RhdHVzIGhhcyBiZWVuIHVwZGF0ZWQ6CisKK2d3eW5lZGQ6L3UvbG56IyBjYXQgL3Byb2MvcmQvYzAvY3VycmVudF9zdGF0dXMKKyAgLi4uCisgIFBoeXNpY2FsIERldmljZXM6CisgICAgMDoxIC0gRGlzazogT25saW5lLCAyMjAxNjAwIGJsb2NrcworICAgIDA6MiAtIERpc2s6IE9ubGluZSwgMjIwMTYwMCBibG9ja3MKKyAgICAwOjMgLSBEaXNrOiBPbmxpbmUsIDIyMDE2MDAgYmxvY2tzCisgICAgMToxIC0gRGlzazogRGVhZCwgMjIwMTYwMCBibG9ja3MKKyAgICAxOjIgLSBEaXNrOiBPbmxpbmUsIDIyMDE2MDAgYmxvY2tzCisgICAgMTozIC0gRGlzazogT25saW5lLCAyMjAxNjAwIGJsb2NrcworICBMb2dpY2FsIERyaXZlczoKKyAgICAvZGV2L3JkL2MwZDA6IFJBSUQtNSwgQ3JpdGljYWwsIDU0OTg4ODAgYmxvY2tzLCBXcml0ZSBUaHJ1CisgICAgL2Rldi9yZC9jMGQxOiBSQUlELTYsIENyaXRpY2FsLCAzMzA1NDcyIGJsb2NrcywgV3JpdGUgVGhydQorICBObyBSZWJ1aWxkIG9yIENvbnNpc3RlbmN5IENoZWNrIGluIFByb2dyZXNzCisKK1NpbmNlIHRoZXJlIGFyZSBubyBzdGFuZGJ5IGRyaXZlcyBjb25maWd1cmVkLCB0aGUgc3lzdGVtIGNhbiBjb250aW51ZSB0byBhY2Nlc3MKK3RoZSBsb2dpY2FsIGRyaXZlcyBpbiBhIHBlcmZvcm1hbmNlIGRlZ3JhZGVkIG1vZGUgdW50aWwgdGhlIGZhaWxlZCBkcml2ZSBpcworcmVwbGFjZWQgYW5kIGEgcmVidWlsZCBvcGVyYXRpb24gY29tcGxldGVkIHRvIHJlc3RvcmUgdGhlIHJlZHVuZGFuY3kgb2YgdGhlCitsb2dpY2FsIGRyaXZlcy4gIE9uY2UgUGh5c2ljYWwgRHJpdmUgMToxIGlzIHJlcGxhY2VkIHdpdGggYSBwcm9wZXJseQorZnVuY3Rpb25pbmcgZHJpdmUsIG9yIGlmIHRoZSBwaHlzaWNhbCBkcml2ZSB3YXMga2lsbGVkIHdpdGhvdXQgaGF2aW5nIGZhaWxlZAorKGUuZy4sIGR1ZSB0byBlbGVjdHJpY2FsIHByb2JsZW1zIG9uIHRoZSBTQ1NJIGJ1cyksIHRoZSB1c2VyIGNhbiBpbnN0cnVjdCB0aGUKK2NvbnRyb2xsZXIgdG8gaW5pdGlhdGUgYSByZWJ1aWxkIG9wZXJhdGlvbiBvbnRvIHRoZSBuZXdseSByZXBsYWNlZCBkcml2ZToKKworZ3d5bmVkZDovdS9sbnojIGVjaG8gInJlYnVpbGQgMToxIiA+IC9wcm9jL3JkL2MwL3VzZXJfY29tbWFuZAorZ3d5bmVkZDovdS9sbnojIGNhdCAvcHJvYy9yZC9jMC91c2VyX2NvbW1hbmQKK1JlYnVpbGQgb2YgUGh5c2ljYWwgRHJpdmUgMToxIEluaXRpYXRlZAorCitUaGUgZWNobyBjb21tYW5kIGluc3RydWN0cyB0aGUgY29udHJvbGxlciB0byBpbml0aWF0ZSBhbiBhc3luY2hyb25vdXMgcmVidWlsZAorb3BlcmF0aW9uIG9udG8gUGh5c2ljYWwgRHJpdmUgMToxLCBhbmQgdGhlIHN0YXR1cyBtZXNzYWdlIHRoYXQgcmVzdWx0cyBmcm9tIHRoZQorb3BlcmF0aW9uIGlzIHRoZW4gYXZhaWxhYmxlIGZvciByZWFkaW5nIGZyb20gL3Byb2MvcmQvYzAvdXNlcl9jb21tYW5kLCBhcyB3ZWxsCithcyBiZWluZyBsb2dnZWQgdG8gdGhlIGNvbnNvbGUgYnkgdGhlIGRyaXZlci4KKworV2l0aGluIDEwIHNlY29uZHMgb2YgdGhpcyBjb21tYW5kIHRoZSBkcml2ZXIgbG9ncyB0aGUgaW5pdGlhdGlvbiBvZiB0aGUKK2FzeW5jaHJvbm91cyByZWJ1aWxkIG9wZXJhdGlvbjoKKworREFDOTYwIzA6IFJlYnVpbGQgb2YgUGh5c2ljYWwgRHJpdmUgMToxIEluaXRpYXRlZAorREFDOTYwIzA6IFBoeXNpY2FsIERyaXZlIDE6MSBFcnJvciBMb2c6IFNlbnNlIEtleSA9IDYsIEFTQyA9IDI5LCBBU0NRID0gMDEKK0RBQzk2MCMwOiBQaHlzaWNhbCBEcml2ZSAxOjEgaXMgbm93IFdSSVRFLU9OTFkKK0RBQzk2MCMwOiBSZWJ1aWxkIGluIFByb2dyZXNzOiBMb2dpY2FsIERyaXZlIDAgKC9kZXYvcmQvYzBkMCkgMSUgY29tcGxldGVkCisKK2FuZCAvcHJvYy9yZC9jMC9jdXJyZW50X3N0YXR1cyBpcyB1cGRhdGVkOgorCitnd3luZWRkOi91L2xueiMgY2F0IC9wcm9jL3JkL2MwL2N1cnJlbnRfc3RhdHVzCisgIC4uLgorICBQaHlzaWNhbCBEZXZpY2VzOgorICAgIDA6MSAtIERpc2s6IE9ubGluZSwgMjIwMTYwMCBibG9ja3MKKyAgICAwOjIgLSBEaXNrOiBPbmxpbmUsIDIyMDE2MDAgYmxvY2tzCisgICAgMDozIC0gRGlzazogT25saW5lLCAyMjAxNjAwIGJsb2NrcworICAgIDE6MSAtIERpc2s6IFdyaXRlLU9ubHksIDIyMDE2MDAgYmxvY2tzCisgICAgMToyIC0gRGlzazogT25saW5lLCAyMjAxNjAwIGJsb2NrcworICAgIDE6MyAtIERpc2s6IE9ubGluZSwgMjIwMTYwMCBibG9ja3MKKyAgTG9naWNhbCBEcml2ZXM6CisgICAgL2Rldi9yZC9jMGQwOiBSQUlELTUsIENyaXRpY2FsLCA1NDk4ODgwIGJsb2NrcywgV3JpdGUgVGhydQorICAgIC9kZXYvcmQvYzBkMTogUkFJRC02LCBDcml0aWNhbCwgMzMwNTQ3MiBibG9ja3MsIFdyaXRlIFRocnUKKyAgUmVidWlsZCBpbiBQcm9ncmVzczogTG9naWNhbCBEcml2ZSAwICgvZGV2L3JkL2MwZDApIDYlIGNvbXBsZXRlZAorCitBcyB0aGUgcmVidWlsZCBwcm9ncmVzc2VzLCB0aGUgY3VycmVudCBzdGF0dXMgaW4gL3Byb2MvcmQvYzAvY3VycmVudF9zdGF0dXMgaXMKK3VwZGF0ZWQgZXZlcnkgMTAgc2Vjb25kczoKKworZ3d5bmVkZDovdS9sbnojIGNhdCAvcHJvYy9yZC9jMC9jdXJyZW50X3N0YXR1cworICAuLi4KKyAgUGh5c2ljYWwgRGV2aWNlczoKKyAgICAwOjEgLSBEaXNrOiBPbmxpbmUsIDIyMDE2MDAgYmxvY2tzCisgICAgMDoyIC0gRGlzazogT25saW5lLCAyMjAxNjAwIGJsb2NrcworICAgIDA6MyAtIERpc2s6IE9ubGluZSwgMjIwMTYwMCBibG9ja3MKKyAgICAxOjEgLSBEaXNrOiBXcml0ZS1Pbmx5LCAyMjAxNjAwIGJsb2NrcworICAgIDE6MiAtIERpc2s6IE9ubGluZSwgMjIwMTYwMCBibG9ja3MKKyAgICAxOjMgLSBEaXNrOiBPbmxpbmUsIDIyMDE2MDAgYmxvY2tzCisgIExvZ2ljYWwgRHJpdmVzOgorICAgIC9kZXYvcmQvYzBkMDogUkFJRC01LCBDcml0aWNhbCwgNTQ5ODg4MCBibG9ja3MsIFdyaXRlIFRocnUKKyAgICAvZGV2L3JkL2MwZDE6IFJBSUQtNiwgQ3JpdGljYWwsIDMzMDU0NzIgYmxvY2tzLCBXcml0ZSBUaHJ1CisgIFJlYnVpbGQgaW4gUHJvZ3Jlc3M6IExvZ2ljYWwgRHJpdmUgMCAoL2Rldi9yZC9jMGQwKSAxNSUgY29tcGxldGVkCisKK2FuZCBldmVyeSBtaW51dGUgYSBwcm9ncmVzcyBtZXNzYWdlIGlzIGxvZ2dlZCB0byB0aGUgY29uc29sZSBieSB0aGUgZHJpdmVyOgorCitEQUM5NjAjMDogUmVidWlsZCBpbiBQcm9ncmVzczogTG9naWNhbCBEcml2ZSAwICgvZGV2L3JkL2MwZDApIDMyJSBjb21wbGV0ZWQKK0RBQzk2MCMwOiBSZWJ1aWxkIGluIFByb2dyZXNzOiBMb2dpY2FsIERyaXZlIDAgKC9kZXYvcmQvYzBkMCkgNjMlIGNvbXBsZXRlZAorREFDOTYwIzA6IFJlYnVpbGQgaW4gUHJvZ3Jlc3M6IExvZ2ljYWwgRHJpdmUgMCAoL2Rldi9yZC9jMGQwKSA5NCUgY29tcGxldGVkCitEQUM5NjAjMDogUmVidWlsZCBpbiBQcm9ncmVzczogTG9naWNhbCBEcml2ZSAxICgvZGV2L3JkL2MwZDEpIDk0JSBjb21wbGV0ZWQKKworRmluYWxseSwgdGhlIHJlYnVpbGQgY29tcGxldGVzIHN1Y2Nlc3NmdWxseS4gIFRoZSBkcml2ZXIgbG9ncyB0aGUgc3RhdHVzIG9mIHRoZSAKK2xvZ2ljYWwgYW5kIHBoeXNpY2FsIGRyaXZlcyBhbmQgdGhlIHJlYnVpbGQgY29tcGxldGlvbjoKKworREFDOTYwIzA6IFJlYnVpbGQgQ29tcGxldGVkIFN1Y2Nlc3NmdWxseQorREFDOTYwIzA6IFBoeXNpY2FsIERyaXZlIDE6MSBpcyBub3cgT05MSU5FCitEQUM5NjAjMDogTG9naWNhbCBEcml2ZSAwICgvZGV2L3JkL2MwZDApIGlzIG5vdyBPTkxJTkUKK0RBQzk2MCMwOiBMb2dpY2FsIERyaXZlIDEgKC9kZXYvcmQvYzBkMSkgaXMgbm93IE9OTElORQorCisvcHJvYy9yZC9jMC9jdXJyZW50X3N0YXR1cyBpcyB1cGRhdGVkOgorCitnd3luZWRkOi91L2xueiMgY2F0IC9wcm9jL3JkL2MwL2N1cnJlbnRfc3RhdHVzCisgIC4uLgorICBQaHlzaWNhbCBEZXZpY2VzOgorICAgIDA6MSAtIERpc2s6IE9ubGluZSwgMjIwMTYwMCBibG9ja3MKKyAgICAwOjIgLSBEaXNrOiBPbmxpbmUsIDIyMDE2MDAgYmxvY2tzCisgICAgMDozIC0gRGlzazogT25saW5lLCAyMjAxNjAwIGJsb2NrcworICAgIDE6MSAtIERpc2s6IE9ubGluZSwgMjIwMTYwMCBibG9ja3MKKyAgICAxOjIgLSBEaXNrOiBPbmxpbmUsIDIyMDE2MDAgYmxvY2tzCisgICAgMTozIC0gRGlzazogT25saW5lLCAyMjAxNjAwIGJsb2NrcworICBMb2dpY2FsIERyaXZlczoKKyAgICAvZGV2L3JkL2MwZDA6IFJBSUQtNSwgT25saW5lLCA1NDk4ODgwIGJsb2NrcywgV3JpdGUgVGhydQorICAgIC9kZXYvcmQvYzBkMTogUkFJRC02LCBPbmxpbmUsIDMzMDU0NzIgYmxvY2tzLCBXcml0ZSBUaHJ1CisgIFJlYnVpbGQgQ29tcGxldGVkIFN1Y2Nlc3NmdWxseQorCithbmQgL3Byb2MvcmQvc3RhdHVzIGluZGljYXRlcyB0aGF0IGV2ZXJ5dGhpbmcgaXMgaGVhbHRoeSBvbmNlIGFnYWluOgorCitnd3luZWRkOi91L2xueiMgY2F0IC9wcm9jL3JkL3N0YXR1cworT0sKKworCisJCUVYQU1QTEUgSUkgLSBEUklWRSBGQUlMVVJFIFdJVEggQSBTVEFOREJZIERSSVZFCisKK1RoZSBmb2xsb3dpbmcgYW5ub3RhdGVkIGxvZ3MgZGVtb25zdHJhdGUgdGhlIGNvbnRyb2xsZXIgY29uZmlndXJhdGlvbiBhbmQgYW5kCitvbmxpbmUgc3RhdHVzIG1vbml0b3JpbmcgY2FwYWJpbGl0aWVzIG9mIHRoZSBMaW51eCBEQUM5NjAgRHJpdmVyLiAgVGhlIHRlc3QKK2NvbmZpZ3VyYXRpb24gY29tcHJpc2VzIDYgMUdCIFF1YW50dW0gQXRsYXMgSSBkaXNrIGRyaXZlcyBvbiB0d28gY2hhbm5lbHMgb2YgYQorREFDOTYwUEogY29udHJvbGxlci4gIFRoZSBwaHlzaWNhbCBkcml2ZXMgYXJlIGNvbmZpZ3VyZWQgaW50byBhIHNpbmdsZSBkcml2ZQorZ3JvdXAgd2l0aCBhIHN0YW5kYnkgZHJpdmUsIGFuZCB0aGUgZHJpdmUgZ3JvdXAgaGFzIGJlZW4gY29uZmlndXJlZCBpbnRvIHR3bworbG9naWNhbCBkcml2ZXMsIG9uZSBSQUlELTUgYW5kIG9uZSBSQUlELTYuICBOb3RlIHRoYXQgdGhlc2UgbG9ncyBhcmUgZnJvbSBhbgorZWFybGllciB2ZXJzaW9uIG9mIHRoZSBkcml2ZXIgYW5kIHRoZSBtZXNzYWdlcyBoYXZlIGNoYW5nZWQgc29tZXdoYXQgd2l0aCBuZXdlcgorcmVsZWFzZXMsIGJ1dCB0aGUgZnVuY3Rpb25hbGl0eSByZW1haW5zIHNpbWlsYXIuICBGaXJzdCwgaGVyZSBpcyB0aGUgY3VycmVudAorc3RhdHVzIG9mIHRoZSBSQUlEIGNvbmZpZ3VyYXRpb246CisKK2d3eW5lZGQ6L3UvbG56IyBjYXQgL3Byb2MvcmQvYzAvY3VycmVudF9zdGF0dXMKKyoqKioqIERBQzk2MCBSQUlEIERyaXZlciBWZXJzaW9uIDIuMC4wIG9mIDIzIE1hcmNoIDE5OTkgKioqKioKK0NvcHlyaWdodCAxOTk4LTE5OTkgYnkgTGVvbmFyZCBOLiBadWJrb2ZmIDxsbnpAZGFuZGVsaW9uLmNvbT4KK0NvbmZpZ3VyaW5nIE15bGV4IERBQzk2MFBKIFBDSSBSQUlEIENvbnRyb2xsZXIKKyAgRmlybXdhcmUgVmVyc2lvbjogNC4wNi0wLTA4LCBDaGFubmVsczogMywgTWVtb3J5IFNpemU6IDhNQgorICBQQ0kgQnVzOiAwLCBEZXZpY2U6IDE5LCBGdW5jdGlvbjogMSwgSS9PIEFkZHJlc3M6IFVuYXNzaWduZWQKKyAgUENJIEFkZHJlc3M6IDB4RkQ0RkMwMDAgbWFwcGVkIGF0IDB4ODgwNzAwMCwgSVJRIENoYW5uZWw6IDkKKyAgQ29udHJvbGxlciBRdWV1ZSBEZXB0aDogMTI4LCBNYXhpbXVtIEJsb2NrcyBwZXIgQ29tbWFuZDogMTI4CisgIERyaXZlciBRdWV1ZSBEZXB0aDogMTI3LCBNYXhpbXVtIFNjYXR0ZXIvR2F0aGVyIFNlZ21lbnRzOiAzMworICBTdHJpcGUgU2l6ZTogNjRLQiwgU2VnbWVudCBTaXplOiA4S0IsIEJJT1MgR2VvbWV0cnk6IDI1NS82MworICBQaHlzaWNhbCBEZXZpY2VzOgorICAgIDA6MSAtIERpc2s6IE9ubGluZSwgMjIwMTYwMCBibG9ja3MKKyAgICAwOjIgLSBEaXNrOiBPbmxpbmUsIDIyMDE2MDAgYmxvY2tzCisgICAgMDozIC0gRGlzazogT25saW5lLCAyMjAxNjAwIGJsb2NrcworICAgIDE6MSAtIERpc2s6IE9ubGluZSwgMjIwMTYwMCBibG9ja3MKKyAgICAxOjIgLSBEaXNrOiBPbmxpbmUsIDIyMDE2MDAgYmxvY2tzCisgICAgMTozIC0gRGlzazogU3RhbmRieSwgMjIwMTYwMCBibG9ja3MKKyAgTG9naWNhbCBEcml2ZXM6CisgICAgL2Rldi9yZC9jMGQwOiBSQUlELTUsIE9ubGluZSwgNDM5OTEwNCBibG9ja3MsIFdyaXRlIFRocnUKKyAgICAvZGV2L3JkL2MwZDE6IFJBSUQtNiwgT25saW5lLCAyNzU0NTYwIGJsb2NrcywgV3JpdGUgVGhydQorICBObyBSZWJ1aWxkIG9yIENvbnNpc3RlbmN5IENoZWNrIGluIFByb2dyZXNzCisKK2d3eW5lZGQ6L3UvbG56IyBjYXQgL3Byb2MvcmQvc3RhdHVzCitPSworCitUaGUgYWJvdmUgbWVzc2FnZXMgaW5kaWNhdGUgdGhhdCBldmVyeXRoaW5nIGlzIGhlYWx0aHksIGFuZCAvcHJvYy9yZC9zdGF0dXMKK3JldHVybnMgIk9LIiBpbmRpY2F0aW5nIHRoYXQgdGhlcmUgYXJlIG5vIHByb2JsZW1zIHdpdGggYW55IERBQzk2MCBjb250cm9sbGVyCitpbiB0aGUgc3lzdGVtLiAgRm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXMsIHdoaWxlIEkvTyBpcyBhY3RpdmUgUGh5c2ljYWwgRHJpdmUKKzE6MiBpcyBub3cgZGlzY29ubmVjdGVkLCBzaW11bGF0aW5nIGEgZHJpdmUgZmFpbHVyZS4gIFRoZSBmYWlsdXJlIGlzIG5vdGVkIGJ5Cit0aGUgZHJpdmVyIHdpdGhpbiAxMCBzZWNvbmRzIG9mIHRoZSBjb250cm9sbGVyJ3MgaGF2aW5nIGRldGVjdGVkIGl0LCBhbmQgdGhlCitkcml2ZXIgbG9ncyB0aGUgZm9sbG93aW5nIGNvbnNvbGUgc3RhdHVzIG1lc3NhZ2VzOgorCitEQUM5NjAjMDogUGh5c2ljYWwgRHJpdmUgMToxIEVycm9yIExvZzogU2Vuc2UgS2V5ID0gNiwgQVNDID0gMjksIEFTQ1EgPSAwMgorREFDOTYwIzA6IFBoeXNpY2FsIERyaXZlIDE6MyBFcnJvciBMb2c6IFNlbnNlIEtleSA9IDYsIEFTQyA9IDI5LCBBU0NRID0gMDIKK0RBQzk2MCMwOiBQaHlzaWNhbCBEcml2ZSAxOjIga2lsbGVkIGJlY2F1c2Ugb2YgdGltZW91dCBvbiBTQ1NJIGNvbW1hbmQKK0RBQzk2MCMwOiBQaHlzaWNhbCBEcml2ZSAxOjIgaXMgbm93IERFQUQKK0RBQzk2MCMwOiBQaHlzaWNhbCBEcml2ZSAxOjIga2lsbGVkIGJlY2F1c2UgaXQgd2FzIHJlbW92ZWQKK0RBQzk2MCMwOiBMb2dpY2FsIERyaXZlIDAgKC9kZXYvcmQvYzBkMCkgaXMgbm93IENSSVRJQ0FMCitEQUM5NjAjMDogTG9naWNhbCBEcml2ZSAxICgvZGV2L3JkL2MwZDEpIGlzIG5vdyBDUklUSUNBTAorCitTaW5jZSBhIHN0YW5kYnkgZHJpdmUgaXMgY29uZmlndXJlZCwgdGhlIGNvbnRyb2xsZXIgYXV0b21hdGljYWxseSBiZWdpbnMKK3JlYnVpbGRpbmcgb250byB0aGUgc3RhbmRieSBkcml2ZToKKworREFDOTYwIzA6IFBoeXNpY2FsIERyaXZlIDE6MyBpcyBub3cgV1JJVEUtT05MWQorREFDOTYwIzA6IFJlYnVpbGQgaW4gUHJvZ3Jlc3M6IExvZ2ljYWwgRHJpdmUgMCAoL2Rldi9yZC9jMGQwKSA0JSBjb21wbGV0ZWQKKworQ29uY3VycmVudGx5IHdpdGggdGhlIGFib3ZlLCB0aGUgZHJpdmVyIHN0YXR1cyBhdmFpbGFibGUgZnJvbSAvcHJvYy9yZCBhbHNvCityZWZsZWN0cyB0aGUgZHJpdmUgZmFpbHVyZSBhbmQgYXV0b21hdGljIHJlYnVpbGQuICBUaGUgc3RhdHVzIG1lc3NhZ2UgaW4KKy9wcm9jL3JkL3N0YXR1cyBoYXMgY2hhbmdlZCBmcm9tICJPSyIgdG8gIkFMRVJUIjoKKworZ3d5bmVkZDovdS9sbnojIGNhdCAvcHJvYy9yZC9zdGF0dXMKK0FMRVJUCisKK2FuZCAvcHJvYy9yZC9jMC9jdXJyZW50X3N0YXR1cyBoYXMgYmVlbiB1cGRhdGVkOgorCitnd3luZWRkOi91L2xueiMgY2F0IC9wcm9jL3JkL2MwL2N1cnJlbnRfc3RhdHVzCisgIC4uLgorICBQaHlzaWNhbCBEZXZpY2VzOgorICAgIDA6MSAtIERpc2s6IE9ubGluZSwgMjIwMTYwMCBibG9ja3MKKyAgICAwOjIgLSBEaXNrOiBPbmxpbmUsIDIyMDE2MDAgYmxvY2tzCisgICAgMDozIC0gRGlzazogT25saW5lLCAyMjAxNjAwIGJsb2NrcworICAgIDE6MSAtIERpc2s6IE9ubGluZSwgMjIwMTYwMCBibG9ja3MKKyAgICAxOjIgLSBEaXNrOiBEZWFkLCAyMjAxNjAwIGJsb2NrcworICAgIDE6MyAtIERpc2s6IFdyaXRlLU9ubHksIDIyMDE2MDAgYmxvY2tzCisgIExvZ2ljYWwgRHJpdmVzOgorICAgIC9kZXYvcmQvYzBkMDogUkFJRC01LCBDcml0aWNhbCwgNDM5OTEwNCBibG9ja3MsIFdyaXRlIFRocnUKKyAgICAvZGV2L3JkL2MwZDE6IFJBSUQtNiwgQ3JpdGljYWwsIDI3NTQ1NjAgYmxvY2tzLCBXcml0ZSBUaHJ1CisgIFJlYnVpbGQgaW4gUHJvZ3Jlc3M6IExvZ2ljYWwgRHJpdmUgMCAoL2Rldi9yZC9jMGQwKSA0JSBjb21wbGV0ZWQKKworQXMgdGhlIHJlYnVpbGQgcHJvZ3Jlc3NlcywgdGhlIGN1cnJlbnQgc3RhdHVzIGluIC9wcm9jL3JkL2MwL2N1cnJlbnRfc3RhdHVzIGlzCit1cGRhdGVkIGV2ZXJ5IDEwIHNlY29uZHM6CisKK2d3eW5lZGQ6L3UvbG56IyBjYXQgL3Byb2MvcmQvYzAvY3VycmVudF9zdGF0dXMKKyAgLi4uCisgIFBoeXNpY2FsIERldmljZXM6CisgICAgMDoxIC0gRGlzazogT25saW5lLCAyMjAxNjAwIGJsb2NrcworICAgIDA6MiAtIERpc2s6IE9ubGluZSwgMjIwMTYwMCBibG9ja3MKKyAgICAwOjMgLSBEaXNrOiBPbmxpbmUsIDIyMDE2MDAgYmxvY2tzCisgICAgMToxIC0gRGlzazogT25saW5lLCAyMjAxNjAwIGJsb2NrcworICAgIDE6MiAtIERpc2s6IERlYWQsIDIyMDE2MDAgYmxvY2tzCisgICAgMTozIC0gRGlzazogV3JpdGUtT25seSwgMjIwMTYwMCBibG9ja3MKKyAgTG9naWNhbCBEcml2ZXM6CisgICAgL2Rldi9yZC9jMGQwOiBSQUlELTUsIENyaXRpY2FsLCA0Mzk5MTA0IGJsb2NrcywgV3JpdGUgVGhydQorICAgIC9kZXYvcmQvYzBkMTogUkFJRC02LCBDcml0aWNhbCwgMjc1NDU2MCBibG9ja3MsIFdyaXRlIFRocnUKKyAgUmVidWlsZCBpbiBQcm9ncmVzczogTG9naWNhbCBEcml2ZSAwICgvZGV2L3JkL2MwZDApIDQwJSBjb21wbGV0ZWQKKworYW5kIGV2ZXJ5IG1pbnV0ZSBhIHByb2dyZXNzIG1lc3NhZ2UgaXMgbG9nZ2VkIG9uIHRoZSBjb25zb2xlIGJ5IHRoZSBkcml2ZXI6CisKK0RBQzk2MCMwOiBSZWJ1aWxkIGluIFByb2dyZXNzOiBMb2dpY2FsIERyaXZlIDAgKC9kZXYvcmQvYzBkMCkgNDAlIGNvbXBsZXRlZAorREFDOTYwIzA6IFJlYnVpbGQgaW4gUHJvZ3Jlc3M6IExvZ2ljYWwgRHJpdmUgMCAoL2Rldi9yZC9jMGQwKSA3NiUgY29tcGxldGVkCitEQUM5NjAjMDogUmVidWlsZCBpbiBQcm9ncmVzczogTG9naWNhbCBEcml2ZSAxICgvZGV2L3JkL2MwZDEpIDY2JSBjb21wbGV0ZWQKK0RBQzk2MCMwOiBSZWJ1aWxkIGluIFByb2dyZXNzOiBMb2dpY2FsIERyaXZlIDEgKC9kZXYvcmQvYzBkMSkgODQlIGNvbXBsZXRlZAorCitGaW5hbGx5LCB0aGUgcmVidWlsZCBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5LiAgVGhlIGRyaXZlciBsb2dzIHRoZSBzdGF0dXMgb2YgdGhlIAorbG9naWNhbCBhbmQgcGh5c2ljYWwgZHJpdmVzIGFuZCB0aGUgcmVidWlsZCBjb21wbGV0aW9uOgorCitEQUM5NjAjMDogUmVidWlsZCBDb21wbGV0ZWQgU3VjY2Vzc2Z1bGx5CitEQUM5NjAjMDogUGh5c2ljYWwgRHJpdmUgMTozIGlzIG5vdyBPTkxJTkUKK0RBQzk2MCMwOiBMb2dpY2FsIERyaXZlIDAgKC9kZXYvcmQvYzBkMCkgaXMgbm93IE9OTElORQorREFDOTYwIzA6IExvZ2ljYWwgRHJpdmUgMSAoL2Rldi9yZC9jMGQxKSBpcyBub3cgT05MSU5FCisKKy9wcm9jL3JkL2MwL2N1cnJlbnRfc3RhdHVzIGlzIHVwZGF0ZWQ6CisKKyoqKioqIERBQzk2MCBSQUlEIERyaXZlciBWZXJzaW9uIDIuMC4wIG9mIDIzIE1hcmNoIDE5OTkgKioqKioKK0NvcHlyaWdodCAxOTk4LTE5OTkgYnkgTGVvbmFyZCBOLiBadWJrb2ZmIDxsbnpAZGFuZGVsaW9uLmNvbT4KK0NvbmZpZ3VyaW5nIE15bGV4IERBQzk2MFBKIFBDSSBSQUlEIENvbnRyb2xsZXIKKyAgRmlybXdhcmUgVmVyc2lvbjogNC4wNi0wLTA4LCBDaGFubmVsczogMywgTWVtb3J5IFNpemU6IDhNQgorICBQQ0kgQnVzOiAwLCBEZXZpY2U6IDE5LCBGdW5jdGlvbjogMSwgSS9PIEFkZHJlc3M6IFVuYXNzaWduZWQKKyAgUENJIEFkZHJlc3M6IDB4RkQ0RkMwMDAgbWFwcGVkIGF0IDB4ODgwNzAwMCwgSVJRIENoYW5uZWw6IDkKKyAgQ29udHJvbGxlciBRdWV1ZSBEZXB0aDogMTI4LCBNYXhpbXVtIEJsb2NrcyBwZXIgQ29tbWFuZDogMTI4CisgIERyaXZlciBRdWV1ZSBEZXB0aDogMTI3LCBNYXhpbXVtIFNjYXR0ZXIvR2F0aGVyIFNlZ21lbnRzOiAzMworICBTdHJpcGUgU2l6ZTogNjRLQiwgU2VnbWVudCBTaXplOiA4S0IsIEJJT1MgR2VvbWV0cnk6IDI1NS82MworICBQaHlzaWNhbCBEZXZpY2VzOgorICAgIDA6MSAtIERpc2s6IE9ubGluZSwgMjIwMTYwMCBibG9ja3MKKyAgICAwOjIgLSBEaXNrOiBPbmxpbmUsIDIyMDE2MDAgYmxvY2tzCisgICAgMDozIC0gRGlzazogT25saW5lLCAyMjAxNjAwIGJsb2NrcworICAgIDE6MSAtIERpc2s6IE9ubGluZSwgMjIwMTYwMCBibG9ja3MKKyAgICAxOjIgLSBEaXNrOiBEZWFkLCAyMjAxNjAwIGJsb2NrcworICAgIDE6MyAtIERpc2s6IE9ubGluZSwgMjIwMTYwMCBibG9ja3MKKyAgTG9naWNhbCBEcml2ZXM6CisgICAgL2Rldi9yZC9jMGQwOiBSQUlELTUsIE9ubGluZSwgNDM5OTEwNCBibG9ja3MsIFdyaXRlIFRocnUKKyAgICAvZGV2L3JkL2MwZDE6IFJBSUQtNiwgT25saW5lLCAyNzU0NTYwIGJsb2NrcywgV3JpdGUgVGhydQorICBSZWJ1aWxkIENvbXBsZXRlZCBTdWNjZXNzZnVsbHkKKworYW5kIC9wcm9jL3JkL3N0YXR1cyBpbmRpY2F0ZXMgdGhhdCBldmVyeXRoaW5nIGlzIGhlYWx0aHkgb25jZSBhZ2FpbjoKKworZ3d5bmVkZDovdS9sbnojIGNhdCAvcHJvYy9yZC9zdGF0dXMKK09LCisKK05vdGUgdGhhdCB0aGUgYWJzZW5jZSBvZiBhIHZpYWJsZSBzdGFuZGJ5IGRyaXZlIGRvZXMgbm90IGNyZWF0ZSBhbiAiQUxFUlQiCitzdGF0dXMuICBPbmNlIGRlYWQgUGh5c2ljYWwgRHJpdmUgMToyIGhhcyBiZWVuIHJlcGxhY2VkLCB0aGUgY29udHJvbGxlciBtdXN0IGJlCit0b2xkIHRoYXQgdGhpcyBoYXMgb2NjdXJyZWQgYW5kIHRoYXQgdGhlIG5ld2x5IHJlcGxhY2VkIGRyaXZlIHNob3VsZCBiZWNvbWUgdGhlCituZXcgc3RhbmRieSBkcml2ZToKKworZ3d5bmVkZDovdS9sbnojIGVjaG8gIm1ha2Utc3RhbmRieSAxOjIiID4gL3Byb2MvcmQvYzAvdXNlcl9jb21tYW5kCitnd3luZWRkOi91L2xueiMgY2F0IC9wcm9jL3JkL2MwL3VzZXJfY29tbWFuZAorTWFrZSBTdGFuZGJ5IG9mIFBoeXNpY2FsIERyaXZlIDE6MiBTdWNjZWVkZWQKKworVGhlIGVjaG8gY29tbWFuZCBpbnN0cnVjdHMgdGhlIGNvbnRyb2xsZXIgdG8gbWFrZSBQaHlzaWNhbCBEcml2ZSAxOjIgaW50byBhCitzdGFuZGJ5IGRyaXZlLCBhbmQgdGhlIHN0YXR1cyBtZXNzYWdlIHRoYXQgcmVzdWx0cyBmcm9tIHRoZSBvcGVyYXRpb24gaXMgdGhlbgorYXZhaWxhYmxlIGZvciByZWFkaW5nIGZyb20gL3Byb2MvcmQvYzAvdXNlcl9jb21tYW5kLCBhcyB3ZWxsIGFzIGJlaW5nIGxvZ2dlZCB0bwordGhlIGNvbnNvbGUgYnkgdGhlIGRyaXZlci4gIFdpdGhpbiA2MCBzZWNvbmRzIG9mIHRoaXMgY29tbWFuZCB0aGUgZHJpdmVyIGxvZ3M6CisKK0RBQzk2MCMwOiBQaHlzaWNhbCBEcml2ZSAxOjIgRXJyb3IgTG9nOiBTZW5zZSBLZXkgPSA2LCBBU0MgPSAyOSwgQVNDUSA9IDAxCitEQUM5NjAjMDogUGh5c2ljYWwgRHJpdmUgMToyIGlzIG5vdyBTVEFOREJZCitEQUM5NjAjMDogTWFrZSBTdGFuZGJ5IG9mIFBoeXNpY2FsIERyaXZlIDE6MiBTdWNjZWVkZWQKKworYW5kIC9wcm9jL3JkL2MwL2N1cnJlbnRfc3RhdHVzIGlzIHVwZGF0ZWQ6CisKK2d3eW5lZGQ6L3UvbG56IyBjYXQgL3Byb2MvcmQvYzAvY3VycmVudF9zdGF0dXMKKyAgLi4uCisgIFBoeXNpY2FsIERldmljZXM6CisgICAgMDoxIC0gRGlzazogT25saW5lLCAyMjAxNjAwIGJsb2NrcworICAgIDA6MiAtIERpc2s6IE9ubGluZSwgMjIwMTYwMCBibG9ja3MKKyAgICAwOjMgLSBEaXNrOiBPbmxpbmUsIDIyMDE2MDAgYmxvY2tzCisgICAgMToxIC0gRGlzazogT25saW5lLCAyMjAxNjAwIGJsb2NrcworICAgIDE6MiAtIERpc2s6IFN0YW5kYnksIDIyMDE2MDAgYmxvY2tzCisgICAgMTozIC0gRGlzazogT25saW5lLCAyMjAxNjAwIGJsb2NrcworICBMb2dpY2FsIERyaXZlczoKKyAgICAvZGV2L3JkL2MwZDA6IFJBSUQtNSwgT25saW5lLCA0Mzk5MTA0IGJsb2NrcywgV3JpdGUgVGhydQorICAgIC9kZXYvcmQvYzBkMTogUkFJRC02LCBPbmxpbmUsIDI3NTQ1NjAgYmxvY2tzLCBXcml0ZSBUaHJ1CisgIFJlYnVpbGQgQ29tcGxldGVkIFN1Y2Nlc3NmdWxseQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibG9ja2Rldi9jY2lzcy50eHQgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L2NjaXNzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzlkMGExCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9ibG9ja2Rldi9jY2lzcy50eHQKQEAgLTAsMCArMSwxOTQgQEAKK1RoaXMgZHJpdmVyIGlzIGZvciBDb21wYXEncyBTTUFSVCBBcnJheSBDb250cm9sbGVycy4KKworU3VwcG9ydGVkIENhcmRzOgorLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpcyBrbm93biB0byB3b3JrIHdpdGggdGhlIGZvbGxvd2luZyBjYXJkczoKKworCSogU0EgNTMwMAorCSogU0EgNWkgCisJKiBTQSA1MzIKKwkqIFNBIDUzMTIKKwkqIFNBIDY0MQorCSogU0EgNjQyCisJKiBTQSA2NDAwCisJKiBTQSA2NDAwIFUzMjAgRXhwYW5zaW9uIE1vZHVsZQorCSogU0EgNmkKKwkqIFNBIFA2MDAKKwkqIFNBIFA4MDAKKwkqIFNBIEU0MDAKKwkqIFNBIFA0MDBpCisJKiBTQSBFMjAwCisJKiBTQSBFMjAwaQorCSogU0EgRTUwMAorCSogU0EgUDcwMG0KKwkqIFNBIFAyMTIKKwkqIFNBIFA0MTAKKwkqIFNBIFA0MTBpCisJKiBTQSBQNDExCisJKiBTQSBQODEyCisJKiBTQSBQNzEybQorCSogU0EgUDcxMW0KKworRGV0ZWN0aW5nIGRyaXZlIGZhaWx1cmVzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUbyBnZXQgdGhlIHN0YXR1cyBvZiBsb2dpY2FsIHZvbHVtZXMgYW5kIHRvIGRldGVjdCBwaHlzaWNhbCBkcml2ZQorZmFpbHVyZXMsIHlvdSBjYW4gdXNlIHRoZSBjY2lzc192b2xfc3RhdHVzIHByb2dyYW0gZm91bmQgaGVyZToKK2h0dHA6Ly9jY2lzcy5zb3VyY2Vmb3JnZS5uZXQvI2NjaXNzX3V0aWxzCisKK0RldmljZSBOYW1pbmc6CistLS0tLS0tLS0tLS0tLQorCitJZiBub2RlcyBhcmUgbm90IGFscmVhZHkgY3JlYXRlZCBpbiB0aGUgL2Rldi9jY2lzcyBkaXJlY3RvcnksIHJ1biBhcyByb290OgorCisjIGNkIC9kZXYKKyMgLi9NQUtFREVWIGNjaXNzCisKK1lvdSBuZWVkIHNvbWUgZW50cmllcyBpbiAvZGV2IGZvciB0aGUgY2Npc3MgZGV2aWNlLiAgVGhlIE1BS0VERVYgc2NyaXB0CitjYW4gbWFrZSBkZXZpY2Ugbm9kZXMgZm9yIHlvdSBhdXRvbWF0aWNhbGx5LiAgQ3VycmVudGx5IHRoZSBkZXZpY2Ugc2V0dXAKK2lzIGFzIGZvbGxvd3M6CisKK01ham9yIG51bWJlcnM6CisJMTA0CWNjaXNzMAkKKwkxMDUJY2Npc3MxCQorCTEwNgljY2lzczIKKwkxMDUJY2Npc3MzCisJMTA4CWNjaXNzNAorCTEwOQljY2lzczUKKwkxMTAJY2Npc3M2CisJMTExCWNjaXNzNworCitNaW5vciBudW1iZXJzOgorICAgICAgICBiNyBiNiBiNSBiNCBiMyBiMiBiMSBiMAorICAgICAgICB8LS0tLSstLS0tfCB8LS0tLSstLS0tfAorICAgICAgICAgICAgIHwgICAgICAgICAgIHwKKyAgICAgICAgICAgICB8ICAgICAgICAgICArLS0tLS0tLS0gUGFydGl0aW9uIElEICgwPXdob2xlZGV2LCAxLTE1IHBhcnRpdGlvbikKKyAgICAgICAgICAgICB8CisgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tIExvZ2ljYWwgVm9sdW1lIG51bWJlcgorCitUaGUgZGV2aWNlIG5hbWluZyBzY2hlbWUgaXM6CisvZGV2L2NjaXNzL2MwZDAJCQlDb250cm9sbGVyIDAsIGRpc2sgMCwgd2hvbGUgZGV2aWNlCisvZGV2L2NjaXNzL2MwZDBwMQkJQ29udHJvbGxlciAwLCBkaXNrIDAsIHBhcnRpdGlvbiAxCisvZGV2L2NjaXNzL2MwZDBwMgkJQ29udHJvbGxlciAwLCBkaXNrIDAsIHBhcnRpdGlvbiAyCisvZGV2L2NjaXNzL2MwZDBwMwkJQ29udHJvbGxlciAwLCBkaXNrIDAsIHBhcnRpdGlvbiAzCisKKy9kZXYvY2Npc3MvYzFkMQkJCUNvbnRyb2xsZXIgMSwgZGlzayAxLCB3aG9sZSBkZXZpY2UKKy9kZXYvY2Npc3MvYzFkMXAxCQlDb250cm9sbGVyIDEsIGRpc2sgMSwgcGFydGl0aW9uIDEKKy9kZXYvY2Npc3MvYzFkMXAyCQlDb250cm9sbGVyIDEsIGRpc2sgMSwgcGFydGl0aW9uIDIKKy9kZXYvY2Npc3MvYzFkMXAzCQlDb250cm9sbGVyIDEsIGRpc2sgMSwgcGFydGl0aW9uIDMKKworQ0NJU1Mgc2ltcGxlIG1vZGUgc3VwcG9ydAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgImNjaXNzX3NpbXBsZV9tb2RlPTEiIGJvb3QgcGFyYW1ldGVyIG1heSBiZSB1c2VkIHRvIHByZXZlbnQgdGhlIGRyaXZlcgorZnJvbSBwdXR0aW5nIHRoZSBjb250cm9sbGVyIGludG8gInBlcmZvcm1hbnQiIG1vZGUuIFRoZSBkaWZmZXJlbmNlIGlzIHRoYXQKK3dpdGggc2ltcGxlIG1vZGUsIGVhY2ggY29tbWFuZCBjb21wbGV0aW9uIHJlcXVpcmVzIGFuIGludGVycnVwdCwgd2hpbGUgd2l0aAorInBlcmZvcm1hbnQgbW9kZSIgKHRoZSBkZWZhdWx0LCBhbmQgb3JkaW5hcmlseSBiZXR0ZXIgcGVyZm9ybWluZykgaXQgaXMKK3Bvc3NpYmxlIHRvIGhhdmUgbXVsdGlwbGUgY29tbWFuZCBjb21wbGV0aW9ucyBpbmRpY2F0ZWQgYnkgYSBzaW5nbGUKK2ludGVycnVwdC4KKworU0NTSSB0YXBlIGRyaXZlIGFuZCBtZWRpdW0gY2hhbmdlciBzdXBwb3J0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU0NTSSBzZXF1ZW50aWFsIGFjY2VzcyBkZXZpY2VzIGFuZCBtZWRpdW0gY2hhbmdlciBkZXZpY2VzIGFyZSBzdXBwb3J0ZWQgYW5kIAorYXBwcm9wcmlhdGUgZGV2aWNlIG5vZGVzIGFyZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQuICAoZS5nLiAgCisvZGV2L3N0MCwgL2Rldi9zdDEsIGV0Yy4gIFNlZSB0aGUgInN0IiBtYW4gcGFnZSBmb3IgbW9yZSBkZXRhaWxzLikgCitZb3UgbXVzdCBlbmFibGUgIlNDU0kgdGFwZSBkcml2ZSBzdXBwb3J0IGZvciBTbWFydCBBcnJheSA1eHh4IiBhbmQgCisiU0NTSSBzdXBwb3J0IiBpbiB5b3VyIGtlcm5lbCBjb25maWd1cmF0aW9uIHRvIGJlIGFibGUgdG8gdXNlIFNDU0kKK3RhcGUgZHJpdmVzIHdpdGggeW91ciBTbWFydCBBcnJheSA1eHh4IGNvbnRyb2xsZXIuCisKK0FkZGl0aW9uYWxseSwgbm90ZSB0aGF0IHRoZSBkcml2ZXIgd2lsbCBlbmdhZ2UgdGhlIFNDU0kgY29yZSBhdCBpbml0Cit0aW1lIGlmIGFueSB0YXBlIGRyaXZlcyBvciBtZWRpdW0gY2hhbmdlcnMgYXJlIGRldGVjdGVkLiAgVGhlIGRyaXZlciBtYXkKK2Fsc28gYmUgZGlyZWN0ZWQgdG8gZHluYW1pY2FsbHkgZW5nYWdlIHRoZSBTQ1NJIGNvcmUgdmlhIHRoZSAvcHJvYyBmaWxlc3lzdGVtCitlbnRyeSB3aGljaCB0aGUgImJsb2NrIiBzaWRlIG9mIHRoZSBkcml2ZXIgY3JlYXRlcyBhcworL3Byb2MvZHJpdmVyL2NjaXNzL2NjaXNzKiBhdCBydW50aW1lLiAgVGhpcyBpcyBiZXN0IGRvbmUgdmlhIGEgc2NyaXB0LgorCitGb3IgZXhhbXBsZToKKworCWZvciB4IGluIC9wcm9jL2RyaXZlci9jY2lzcy9jY2lzc1swLTldKgorCWRvCisJCWVjaG8gImVuZ2FnZSBzY3NpIiA+ICR4CisJZG9uZQorCitPbmNlIHRoZSBTQ1NJIGNvcmUgaXMgZW5nYWdlZCBieSB0aGUgZHJpdmVyLCBpdCBjYW5ub3QgYmUgZGlzZW5nYWdlZCAKKyhleGNlcHQgYnkgdW5sb2FkaW5nIHRoZSBkcml2ZXIsIGlmIGl0IGhhcHBlbnMgdG8gYmUgbGlua2VkIGFzIGEgbW9kdWxlLikKKworTm90ZSBhbHNvIHRoYXQgaWYgbm8gc2VxdWVudGlhbCBhY2Nlc3MgZGV2aWNlcyBvciBtZWRpdW0gY2hhbmdlcnMgYXJlCitkZXRlY3RlZCwgdGhlIFNDU0kgY29yZSB3aWxsIG5vdCBiZSBlbmdhZ2VkIGJ5IHRoZSBhY3Rpb24gb2YgdGhlIGFib3ZlCitzY3JpcHQuCisKK0hvdCBwbHVnIHN1cHBvcnQgZm9yIFNDU0kgdGFwZSBkcml2ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSG90IHBsdWdnaW5nIG9mIFNDU0kgdGFwZSBkcml2ZXMgaXMgc3VwcG9ydGVkLCB3aXRoIHNvbWUgY2F2ZWF0cy4KK1RoZSBjY2lzcyBkcml2ZXIgbXVzdCBiZSBpbmZvcm1lZCB0aGF0IGNoYW5nZXMgdG8gdGhlIFNDU0kgYnVzCitoYXZlIGJlZW4gbWFkZS4gIFRoaXMgbWF5IGJlIGRvbmUgdmlhIHRoZSAvcHJvYyBmaWxlc3lzdGVtLgorRm9yIGV4YW1wbGU6CisKKwllY2hvICJyZXNjYW4iID4gL3Byb2Mvc2NzaS9jY2lzczAvMQorCitUaGlzIGNhdXNlcyB0aGUgZHJpdmVyIHRvIHF1ZXJ5IHRoZSBhZGFwdGVyIGFib3V0IGNoYW5nZXMgdG8gdGhlCitwaHlzaWNhbCBTQ1NJIGJ1c2VzIGFuZC9vciBmaWJyZSBjaGFubmVsIGFyYml0cmF0ZWQgbG9vcCBhbmQgdGhlCitkcml2ZXIgdG8gbWFrZSBub3RlIG9mIGFueSBuZXcgb3IgcmVtb3ZlZCBzZXF1ZW50aWFsIGFjY2VzcyBkZXZpY2VzCitvciBtZWRpdW0gY2hhbmdlcnMuICBUaGUgZHJpdmVyIHdpbGwgb3V0cHV0IG1lc3NhZ2VzIGluZGljYXRpbmcgd2hhdCAKK2RldmljZXMgaGF2ZSBiZWVuIGFkZGVkIG9yIHJlbW92ZWQgYW5kIHRoZSBjb250cm9sbGVyLCBidXMsIHRhcmdldCBhbmQgCitsdW4gdXNlZCB0byBhZGRyZXNzIHRoZSBkZXZpY2UuICBJdCB0aGVuIG5vdGlmaWVzIHRoZSBTQ1NJIG1pZCBsYXllcgorb2YgdGhlc2UgY2hhbmdlcy4KKworTm90ZSB0aGF0IHRoZSBuYW1pbmcgY29udmVudGlvbiBvZiB0aGUgL3Byb2MgZmlsZXN5c3RlbSBlbnRyaWVzIAorY29udGFpbnMgYSBudW1iZXIgaW4gYWRkaXRpb24gdG8gdGhlIGRyaXZlciBuYW1lLiAgKEUuZy4gImNjaXNzMCIgCitpbnN0ZWFkIG9mIGp1c3QgImNjaXNzIiB3aGljaCB5b3UgbWlnaHQgZXhwZWN0LikKKworTm90ZTogT05MWSBzZXF1ZW50aWFsIGFjY2VzcyBkZXZpY2VzIGFuZCBtZWRpdW0gY2hhbmdlcnMgYXJlIHByZXNlbnRlZCAKK2FzIFNDU0kgZGV2aWNlcyB0byB0aGUgU0NTSSBtaWQgbGF5ZXIgYnkgdGhlIGNjaXNzIGRyaXZlci4gIFNwZWNpZmljYWxseSwgCitwaHlzaWNhbCBTQ1NJIGRpc2sgZHJpdmVzIGFyZSBOT1QgcHJlc2VudGVkIHRvIHRoZSBTQ1NJIG1pZCBsYXllci4gIFRoZSAKK3BoeXNpY2FsIFNDU0kgZGlzayBkcml2ZXMgYXJlIGNvbnRyb2xsZWQgZGlyZWN0bHkgYnkgdGhlIGFycmF5IGNvbnRyb2xsZXIgCitoYXJkd2FyZSBhbmQgaXQgaXMgaW1wb3J0YW50IHRvIHByZXZlbnQgdGhlIGtlcm5lbCBmcm9tIGF0dGVtcHRpbmcgdG8gZGlyZWN0bHkKK2FjY2VzcyB0aGVzZSBkZXZpY2VzIHRvbywgYXMgaWYgdGhlIGFycmF5IGNvbnRyb2xsZXIgd2VyZSBtZXJlbHkgYSBTQ1NJIAorY29udHJvbGxlciBpbiB0aGUgc2FtZSB3YXkgdGhhdCB3ZSBhcmUgYWxsb3dpbmcgaXQgdG8gYWNjZXNzIFNDU0kgdGFwZSBkcml2ZXMuCisKK1NDU0kgZXJyb3IgaGFuZGxpbmcgZm9yIHRhcGUgZHJpdmVzIGFuZCBtZWRpdW0gY2hhbmdlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGxpbnV4IFNDU0kgbWlkIGxheWVyIHByb3ZpZGVzIGFuIGVycm9yIGhhbmRsaW5nIHByb3RvY29sIHdoaWNoCitraWNrcyBpbnRvIGdlYXIgd2hlbmV2ZXIgYSBTQ1NJIGNvbW1hbmQgZmFpbHMgdG8gY29tcGxldGUgd2l0aGluIGEKK2NlcnRhaW4gYW1vdW50IG9mIHRpbWUgKHdoaWNoIGNhbiB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgY29tbWFuZCkuCitUaGUgY2Npc3MgZHJpdmVyIHBhcnRpY2lwYXRlcyBpbiB0aGlzIHByb3RvY29sIHRvIHNvbWUgZXh0ZW50LiAgVGhlCitub3JtYWwgcHJvdG9jb2wgaXMgYSBmb3VyIHN0ZXAgcHJvY2Vzcy4gIEZpcnN0IHRoZSBkZXZpY2UgaXMgdG9sZAordG8gYWJvcnQgdGhlIGNvbW1hbmQuICBJZiB0aGF0IGRvZXNuJ3Qgd29yaywgdGhlIGRldmljZSBpcyByZXNldC4KK0lmIHRoYXQgZG9lc24ndCB3b3JrLCB0aGUgU0NTSSBidXMgaXMgcmVzZXQuICBJZiB0aGF0IGRvZXNuJ3Qgd29yawordGhlIGhvc3QgYnVzIGFkYXB0ZXIgaXMgcmVzZXQuICBCZWNhdXNlIHRoZSBjY2lzcyBkcml2ZXIgaXMgYSBibG9jaworZHJpdmVyIGFzIHdlbGwgYXMgYSBTQ1NJIGRyaXZlciBhbmQgb25seSB0aGUgdGFwZSBkcml2ZXMgYW5kIG1lZGl1bQorY2hhbmdlcnMgYXJlIHByZXNlbnRlZCB0byB0aGUgU0NTSSBtaWQgbGF5ZXIsIGFuZCB1bmxpa2UgbW9yZSAKK3N0cmFpZ2h0Zm9yd2FyZCBTQ1NJIGRyaXZlcnMsIGRpc2sgaS9vIGNvbnRpbnVlcyB0aHJvdWdoIHRoZSBibG9jaworc2lkZSBkdXJpbmcgdGhlIFNDU0kgZXJyb3IgcmVjb3ZlcnkgcHJvY2VzcywgdGhlIGNjaXNzIGRyaXZlciBvbmx5CitpbXBsZW1lbnRzIHRoZSBmaXJzdCB0d28gb2YgdGhlc2UgYWN0aW9ucywgYWJvcnRpbmcgdGhlIGNvbW1hbmQsIGFuZAorcmVzZXR0aW5nIHRoZSBkZXZpY2UuICBBZGRpdGlvbmFsbHksIG1vc3QgdGFwZSBkcml2ZXMgd2lsbCBub3Qgb2JsaWdlIAoraW4gYWJvcnRpbmcgY29tbWFuZHMsIGFuZCBzb21ldGltZXMgaXQgYXBwZWFycyB0aGV5IHdpbGwgbm90IGV2ZW4gCitvYmV5IGEgcmVzZXQgY29tbWFuZCwgdGhvdWdoIGluIG1vc3QgY2lyY3Vtc3RhbmNlcyB0aGV5IHdpbGwuICBJbgordGhlIGNhc2UgdGhhdCB0aGUgY29tbWFuZCBjYW5ub3QgYmUgYWJvcnRlZCBhbmQgdGhlIGRldmljZSBjYW5ub3QgYmUgCityZXNldCwgdGhlIGRldmljZSB3aWxsIGJlIHNldCBvZmZsaW5lLgorCitJbiB0aGUgZXZlbnQgdGhlIGVycm9yIGhhbmRsaW5nIGNvZGUgaXMgdHJpZ2dlcmVkIGFuZCBhIHRhcGUgZHJpdmUgaXMKK3N1Y2Nlc3NmdWxseSByZXNldCBvciB0aGUgdGFyZHkgY29tbWFuZCBpcyBzdWNjZXNzZnVsbHkgYWJvcnRlZCwgdGhlIAordGFwZSBkcml2ZSBtYXkgc3RpbGwgbm90IGFsbG93IGkvbyB0byBjb250aW51ZSB1bnRpbCBzb21lIGNvbW1hbmQKK2lzIGlzc3VlZCB3aGljaCBwb3NpdGlvbnMgdGhlIHRhcGUgdG8gYSBrbm93biBwb3NpdGlvbi4gIFR5cGljYWxseSB5b3UKK211c3QgcmV3aW5kIHRoZSB0YXBlIChieSBpc3N1aW5nICJtdCAtZiAvZGV2L3N0MCByZXdpbmQiIGZvciBleGFtcGxlKQorYmVmb3JlIGkvbyBjYW4gcHJvY2VlZCBhZ2FpbiB0byBhIHRhcGUgZHJpdmUgd2hpY2ggd2FzIHJlc2V0LgorCitUaGVyZSBpcyBhIGNjaXNzX3RhcGVfY21kcyBtb2R1bGUgcGFyYW1ldGVyIHdoaWNoIGNhbiBiZSB1c2VkIHRvIG1ha2UgY2Npc3MKK2FsbG9jYXRlIG1vcmUgY29tbWFuZHMgZm9yIHVzZSBieSB0YXBlIGRyaXZlcy4gIE9yZGluYXJpbHkgb25seSBhIGZldyBjb21tYW5kcworKDYpIGFyZSBhbGxvY2F0ZWQgZm9yIHRhcGUgZHJpdmVzIGJlY2F1c2UgdGFwZSBkcml2ZXMgYXJlIHNsb3cgYW5kCitpbmZyZXF1ZW50bHkgdXNlZCBhbmQgdGhlIHByaW1hcnkgcHVycG9zZSBvZiBTbWFydCBBcnJheSBjb250cm9sbGVycyBpcyB0bworYWN0IGFzIGEgUkFJRCBjb250cm9sbGVyIGZvciBkaXNrIGRyaXZlcywgc28gdGhlIHZhc3QgbWFqb3JpdHkgb2YgY29tbWFuZHMKK2FyZSBhbGxvY2F0ZWQgZm9yIGRpc2sgZGV2aWNlcy4gIEhvd2V2ZXIsIGlmIHlvdSBoYXZlIG1vcmUgdGhhbiBhIGZldyB0YXBlCitkcml2ZXMgYXR0YWNoZWQgdG8gYSBzbWFydCBhcnJheSwgdGhlIGRlZmF1bHQgbnVtYmVyIG9mIGNvbW1hbmRzIG1heSBub3QgYmUKK2Vub3VnaHQgKGZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSA4IHRhcGUgZHJpdmVzLCB5b3UgY291bGQgb25seSByZXdpbmQgNgorYXQgb25lIHRpbWUgd2l0aCB0aGUgZGVmYXVsdCBudW1iZXIgb2YgY29tbWFuZHMuKSAgVGhlIGNjaXNzX3RhcGVfY21kcyBtb2R1bGUKK3BhcmFtZXRlciBhbGxvd3MgbW9yZSBjb21tYW5kcyAodXAgdG8gMTYgbW9yZSkgdG8gYmUgYWxsb2NhdGVkIGZvciB1c2UgYnkKK3RhcGUgZHJpdmVzLiAgRm9yIGV4YW1wbGU6CisKKyAgICAgICAgaW5zbW9kIGNjaXNzLmtvIGNjaXNzX3RhcGVfY21kcz0xNgorCitPciwgYXMgYSBrZXJuZWwgYm9vdCBwYXJhbWV0ZXIgcGFzc2VkIGluIHZpYSBncnViOiAgY2Npc3MuY2Npc3NfdGFwZV9jbWRzPTgKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYmxvY2tkZXYvY3BxYXJyYXkudHh0IGIvRG9jdW1lbnRhdGlvbi9ibG9ja2Rldi9jcHFhcnJheS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzcxNTRlMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYmxvY2tkZXYvY3BxYXJyYXkudHh0CkBAIC0wLDAgKzEsOTMgQEAKK1RoaXMgZHJpdmVyIGlzIGZvciBDb21wYXEncyBTTUFSVDIgSW50ZWxsaWdlbnQgRGlzayBBcnJheSBDb250cm9sbGVycy4KKworU3VwcG9ydGVkIENhcmRzOgorLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpcyBrbm93biB0byB3b3JrIHdpdGggdGhlIGZvbGxvd2luZyBjYXJkczoKKworCSogU01BUlQgKEVJU0EpCisJKiBTTUFSVC0yL0UgKEVJU0EpCisJKiBTTUFSVC0yL1AKKwkqIFNNQVJULTJESAorCSogU01BUlQtMlNMCisJKiBTTUFSVC0yMjEKKwkqIFNNQVJULTMxMDBFUworCSogU01BUlQtMzIwMAorCSogSW50ZWdyYXRlZCBTbWFydCBBcnJheSBDb250cm9sbGVyCisJKiBTQSA0MjAwCisJKiBTQSA0MjUwRVMKKwkqIFNBIDQzMQorCSogUkFJRCBMQzIgQ29udHJvbGxlcgorCitJdCBzaG91bGQgYWxzbyB3b3JrIHdpdGggc29tZSByZWFsbHkgb2xkIERpc2sgYXJyYXkgYWRhcHRlcnMsIGJ1dCBJIGFtCit1bmFibGUgdG8gdGVzdCBhZ2FpbnN0IHRoZXNlIGNhcmRzOgorCisJKiBJREEKKwkqIElEQS0yCisJKiBJQUVTCisKKworRUlTQSBDb250cm9sbGVyczoKKy0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHlvdSB3YW50IHRvIHVzZSBhbiBFSVNBIGNvbnRyb2xsZXIgeW91J2xsIGhhdmUgdG8gc3VwcGx5IHNvbWUKK21vZHByb2JlL2xpbG8gcGFyYW1ldGVycy4gIElmIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgaW50byB0aGUga2VybmVsLCBtdXN0CitnaXZlIGl0IHRoZSBjb250cm9sbGVyJ3MgSU8gcG9ydCBhZGRyZXNzIGF0IGJvb3QgdGltZSAoaXQgaXMgbm90CituZWNlc3NhcnkgdG8gc3BlY2lmeSB0aGUgSVJRKS4gIEZvciBleGFtcGxlLCBpZiB5b3UgaGFkIHR3byBTTUFSVC0yL0UKK2NvbnRyb2xsZXJzLCBpbiBFSVNBIHNsb3RzIDEgYW5kIDIgeW91J2QgZ2l2ZSBpdCBhIGJvb3QgYXJndW1lbnQgbGlrZQordGhpczoKKworCXNtYXJ0Mj0weDEwMDAsMHgyMDAwCisKK0lmIHlvdSB3ZXJlIGxvYWRpbmcgdGhlIGRyaXZlciBhcyBhIG1vZHVsZSwgeW91J2QgZ2l2ZSBsb2FkIGl0IGxpa2UgdGhpczoKKworCW1vZHByb2JlIGNwcWFycmF5IGVpc2E9MHgxMDAwLDB4MjAwMAorCitZb3UgY2FuIHVzZSBFSVNBIGFuZCBQQ0kgYWRhcHRlcnMgYXQgdGhlIHNhbWUgdGltZS4KKworCitEZXZpY2UgTmFtaW5nOgorLS0tLS0tLS0tLS0tLS0KKworWW91IG5lZWQgc29tZSBlbnRyaWVzIGluIC9kZXYgZm9yIHRoZSBpZGEgZGV2aWNlLiAgTUFLRURFViBpbiB0aGUgL2RldgorZGlyZWN0b3J5IGNhbiBtYWtlIGRldmljZSBub2RlcyBmb3IgeW91IGF1dG9tYXRpY2FsbHkuICBUaGUgZGV2aWNlIHNldHVwIGlzCithcyBmb2xsb3dzOgorCitNYWpvciBudW1iZXJzOgorCTcyCWlkYTAKKwk3MwlpZGExCisJNzQJaWRhMgorCTc1CWlkYTMKKwk3NglpZGE0CisJNzcJaWRhNQorCTc4CWlkYTYKKwk3OQlpZGE3CisKK01pbm9yIG51bWJlcnM6CisgICAgICAgIGI3IGI2IGI1IGI0IGIzIGIyIGIxIGIwCisgICAgICAgIHwtLS0tKy0tLS18IHwtLS0tKy0tLS18CisgICAgICAgICAgICAgfCAgICAgICAgICAgfAorICAgICAgICAgICAgIHwgICAgICAgICAgICstLS0tLS0tLSBQYXJ0aXRpb24gSUQgKDA9d2hvbGVkZXYsIDEtMTUgcGFydGl0aW9uKQorICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0gTG9naWNhbCBWb2x1bWUgbnVtYmVyCisKK1RoZSBkZXZpY2UgbmFtaW5nIHNjaGVtZSBpczoKKy9kZXYvaWRhL2MwZDAJCUNvbnRyb2xsZXIgMCwgZGlzayAwLCB3aG9sZSBkZXZpY2UKKy9kZXYvaWRhL2MwZDBwMQkJQ29udHJvbGxlciAwLCBkaXNrIDAsIHBhcnRpdGlvbiAxCisvZGV2L2lkYS9jMGQwcDIJCUNvbnRyb2xsZXIgMCwgZGlzayAwLCBwYXJ0aXRpb24gMgorL2Rldi9pZGEvYzBkMHAzCQlDb250cm9sbGVyIDAsIGRpc2sgMCwgcGFydGl0aW9uIDMKKworL2Rldi9pZGEvYzFkMQkJQ29udHJvbGxlciAxLCBkaXNrIDEsIHdob2xlIGRldmljZQorL2Rldi9pZGEvYzFkMXAxCQlDb250cm9sbGVyIDEsIGRpc2sgMSwgcGFydGl0aW9uIDEKKy9kZXYvaWRhL2MxZDFwMgkJQ29udHJvbGxlciAxLCBkaXNrIDEsIHBhcnRpdGlvbiAyCisvZGV2L2lkYS9jMWQxcDMJCUNvbnRyb2xsZXIgMSwgZGlzayAxLCBwYXJ0aXRpb24gMworCisKK0NoYW5nZWxvZzoKKz09PT09PT09PT0KKworMTAtMjgtMjAwNCA6CUdlbmVyYWwgY2xlYW51cCwgc3ludGF4IGZpeGVzIGZvciBpbi1rZXJuZWwgZHJpdmVyIHZlcnNpb24uCisJCUphbWVzIE5lbHNvbiA8amFtZXM0NzY1QGdtYWlsLmNvbT4KKworCisxOTk5IDoJCU9yaWdpbmFsIERvY3VtZW50CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L2RyYmQvRFJCRC04LjMtZGF0YS1wYWNrZXRzLnN2ZyBiL0RvY3VtZW50YXRpb24vYmxvY2tkZXYvZHJiZC9EUkJELTguMy1kYXRhLXBhY2tldHMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4N2NmYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L2RyYmQvRFJCRC04LjMtZGF0YS1wYWNrZXRzLnN2ZwpAQCAtMCwwICsxLDU4OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cis8IS0tIENyZWF0ZWQgd2l0aCBJbmtzY2FwZSAoaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvKSAtLT4KKzxzdmcKKyAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCisgICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCisgICB2ZXJzaW9uPSIxLjAiCisgICB3aWR0aD0iMjEwbW0iCisgICBoZWlnaHQ9IjI5N21tIgorICAgdmlld0JveD0iMCAwIDIxMDAwIDI5NzAwIgorICAgaWQ9InN2ZzIiCisgICBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQiPgorICA8ZGVmcworICAgICBpZD0iZGVmczQiIC8+CisgIDxnCisgICAgIGlkPSJEZWZhdWx0IgorICAgICBzdHlsZT0idmlzaWJpbGl0eTp2aXNpYmxlIj4KKyAgICA8ZGVzYworICAgICAgIGlkPSJkZXNjMTgwIj5NYXN0ZXIgc2xpZGU8L2Rlc2M+CisgIDwvZz4KKyAgPHBhdGgKKyAgICAgZD0iTSAxMTk5OSw4NjAxIEwgMTE4OTksODMwMSBMIDEyMDk5LDgzMDEgTCAxMTk5OSw4NjAxIHoiCisgICAgIGlkPSJwYXRoMTkzIgorICAgICBzdHlsZT0iZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZSIgLz4KKyAgPHBhdGgKKyAgICAgZD0iTSAxMTk5OSw3ODAxIEwgMTE5OTksODM2MSIKKyAgICAgaWQ9InBhdGgxOTciCisgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlIiAvPgorICA8cGF0aAorICAgICBkPSJNIDc5OTksMTA0MDEgTCA3ODk5LDEwMTAxIEwgODA5OSwxMDEwMSBMIDc5OTksMTA0MDEgeiIKKyAgICAgaWQ9InBhdGgyMDkiCisgICAgIHN0eWxlPSJmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlIiAvPgorICA8cGF0aAorICAgICBkPSJNIDc5OTksOTYwMSBMIDc5OTksMTAxNjEiCisgICAgIGlkPSJwYXRoMjEzIgorICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZSIgLz4KKyAgPHBhdGgKKyAgICAgZD0iTSAxMTk5OSw3ODAxIEwgMTE2ODUsNzg0MCBMIDExNzI0LDc2NDQgTCAxMTk5OSw3ODAxIHoiCisgICAgIGlkPSJwYXRoMjI1IgorICAgICBzdHlsZT0iZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZSIgLz4KKyAgPHBhdGgKKyAgICAgZD0iTSA3OTk5LDcwMDEgTCAxMTc2NCw3NzU0IgorICAgICBpZD0icGF0aDIyOSIKKyAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxnCisgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuOTg5NTI1OCwtMC4xNDQzNTYyLDAuMTQ0MzU2MiwwLjk4OTUyNTgsLTEyNDQuNDc5MiwxNDE2LjUxMzkpIgorICAgICBpZD0iZzI0NSIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0ZXh0CisgICAgICAgaWQ9InRleHQyNDciPgorICAgICAgPHRzcGFuCisgICAgICAgICB4PSI5MTM5IDkzNjggOTU3OSA5ODA4IDk5ODYgMTAwNzUgMTAyNTIgMTA0ODEgMTA2NTkgMTA4MzcgMTA5MDkiCisgICAgICAgICB5PSI5Mjg0IgorICAgICAgICAgaWQ9InRzcGFuMjQ5Ij5SU0RhdGFSZXBseTwvdHNwYW4+CisgICAgPC90ZXh0PgorICA8L2c+CisgIDxwYXRoCisgICAgIGQ9Ik0gNzk5OSw5NjAxIEwgODI4MSw5NDU4IEwgODMxMSw5NjU1IEwgNzk5OSw5NjAxIHoiCisgICAgIGlkPSJwYXRoMjU5IgorICAgICBzdHlsZT0iZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZSIgLz4KKyAgPHBhdGgKKyAgICAgZD0iTSAxMTk5OSw5MDAxIEwgODIzNiw5NTY1IgorICAgICBpZD0icGF0aDI2MyIKKyAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxnCisgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuOTc4ODY3NCwwLjIwNDQ5NjEsLTAuMjA0NDk2MSwwLjk3ODg2NzQsMTYyMC45MzgyLC0xNjM5LjQ5NDcpIgorICAgICBpZD0iZzI3OSIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0ZXh0CisgICAgICAgaWQ9InRleHQyODEiPgorICAgICAgPHRzcGFuCisgICAgICAgICB4PSI4NzQzIDg5NzIgOTEzMiA5MzEwIDk1NzMgOTgwMSAxMDAxMyAxMDI0MiAxMDQxOSAxMDU5NyAxMDc3NSAxMDk1MyAxMTExNCIKKyAgICAgICAgIHk9IjcwMjMiCisgICAgICAgICBpZD0idHNwYW4yODMiPkNzdW1SU1JlcXVlc3Q8L3RzcGFuPgorICAgIDwvdGV4dD4KKyAgPC9nPgorICA8dGV4dAorICAgICBpZD0idGV4dDI5NyIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjQwMzQgNDI2MyA0NDQwIDQ3MDMgNDg4MSA1MDQyIDUyMTkgNTM5NyA1NTAzIDU2ODEgNTg0MiA2MDAzIDYxODAgNjM0MSA2NTE5IDY2MjUgNjgwMyA2OTgwIDcxNTggNzMzNiA3NDk3IDc1ODYgNzY5MiIKKyAgICAgICB5PSI1NzA3IgorICAgICAgIGlkPSJ0c3BhbjI5OSI+d19tYWtlX3Jlc3luY19yZXF1ZXN0KCk8L3RzcGFuPgorICA8L3RleHQ+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0MzEzIgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iMTIxOTkgMTIzMDUgMTI0ODMgMTI2NDQgMTI4MjEgMTI4OTMgMTMwNTQgMTMyMzIgMTM0MTAgMTM2MzggMTM4MTYgMTM5MDUgMTQwODMgMTQzMTEgMTQ0ODkgMTQ2NjcgMTQ4NDUgMTUwMjMgMTUxODQgMTUyNzIgMTUzNzgiCisgICAgICAgeT0iNzgwNiIKKyAgICAgICBpZD0idHNwYW4zMTUiPnJlY2VpdmVfRGF0YVJlcXVlc3QoKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQzMjkiCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSIxMjE5OSAxMjM3NyAxMjQ4MyAxMjY2MCAxMjgzOCAxMzAxNiAxMzE5NCAxMzM3MiAxMzU0OSAxMzYyMSAxMzc5OSAxMzk3NyAxNDA4MyAxNDI2MSAxNDQzOCAxNDYxNiAxNDc5NCAxNDk1NSAxNTEzMyAxNTI5NCAxNTM5OSIKKyAgICAgICB5PSI4NjA2IgorICAgICAgIGlkPSJ0c3BhbjMzMSI+ZHJiZF9lbmRpb19yZWFkX3NlYygpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dAorICAgICBpZD0idGV4dDM0NSIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjEyMTkxIDEyNDIwIDEyNTk3IDEyNzc1IDEyOTUzIDEzMTMxIDEzMzA5IDEzNDg2IDEzNjY0IDEzODI1IDEzOTg2IDE0MTY0IDE0NDI2IDE0NjA0IDE0NzEwIDE0ODcxIDE1MDQ5IDE1MTU0IDE1MzMyIDE1NTEwIDE1NjE2IgorICAgICAgIHk9IjkwMDciCisgICAgICAgaWQ9InRzcGFuMzQ3Ij53X2VfZW5kX2NzdW1fcnNfcmVxKCk8L3RzcGFuPgorICA8L3RleHQ+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0MzYxIgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iNDQ0NCA0NTUwIDQ3MjggNDg4OSA1MDY2IDUxMzggNTI5OSA1NDc3IDU2NTUgNTg4MyA2MDk1IDYzMjQgNjUwMSA2NTkwIDY3NjggNjk5NyA3MTc1IDczNTIgNzQyNCA3NTg1IDc2OTEiCisgICAgICAgeT0iOTUwNyIKKyAgICAgICBpZD0idHNwYW4zNjMiPnJlY2VpdmVfUlNEYXRhUmVwbHkoKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQzNzciCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSI0NDU3IDQ2MzUgNDc0MSA0OTE4IDUwOTYgNTI3NCA1NDUyIDU2MzAgNTgwNyA1ODc5IDYwNTcgNjIzNSA2NDY0IDY1NjkgNjY0MSA2NzMwIDY5MDggNzA4NiA3MjQ3IDc0MjUgNzU4NSA3NjkxIgorICAgICAgIHk9IjEwNDA3IgorICAgICAgIGlkPSJ0c3BhbjM3OSI+ZHJiZF9lbmRpb193cml0ZV9zZWMoKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQzOTMiCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSI0NjQ3IDQ4MjUgNTAwMyA1MTgwIDUzNTggNTUzNiA1NzE0IDU4MjAgNTk5NyA2MTU4IDYzMTkgNjQ5NyA2NjU4IDY4MzYgNzAxMyA3MDg1IDcyNjMgNzQyNCA3NTg1IDc2OTEiCisgICAgICAgeT0iMTA5MDciCisgICAgICAgaWQ9InRzcGFuMzk1Ij5lX2VuZF9yZXN5bmNfYmxvY2soKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHBhdGgKKyAgICAgZD0iTSAxMTk5OSwxMTYwMSBMIDExNjg1LDExNjQwIEwgMTE3MjQsMTE0NDQgTCAxMTk5OSwxMTYwMSB6IgorICAgICBpZD0icGF0aDQwNSIKKyAgICAgc3R5bGU9ImZpbGw6IzAwMDA4MDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxwYXRoCisgICAgIGQ9Ik0gNzk5OSwxMDgwMSBMIDExNzY0LDExNTU0IgorICAgICBpZD0icGF0aDQwOSIKKyAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDA4MDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxnCisgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuOTc4ODY3NCwwLjIwNDQ5NjEsLTAuMjA0NDk2MSwwLjk3ODg2NzQsMjQzNC43NTYyLC0xNjc0LjY0OSkiCisgICAgIGlkPSJnNDI1IgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDAwODA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRleHQKKyAgICAgICBpZD0idGV4dDQyNyI+CisgICAgICA8dHNwYW4KKyAgICAgICAgIHg9IjkzMjAgOTYyMSA5NzI2IDk3OTggOTg4NyAxMDA2NSAxMDI3NyAxMDQzOCIKKyAgICAgICAgIHk9IjEwOTQzIgorICAgICAgICAgaWQ9InRzcGFuNDI5Ij5Xcml0ZUFjazwvdHNwYW4+CisgICAgPC90ZXh0PgorICA8L2c+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0NDQzIgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDAwODA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iMTIxOTkgMTIzNzcgMTI1NTUgMTI2NDQgMTI4MjEgMTMwMzMgMTMxMDUgMTMyODMgMTM0NDQgMTM2MDQgMTM4MTYgMTM5NzcgMTQxMzggMTQyNDQiCisgICAgICAgeT0iMTE1NTkiCisgICAgICAgaWQ9InRzcGFuNDQ1Ij5nb3RfQmxvY2tBY2soKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQ0NTkiCisgICAgIHN0eWxlPSJmb250LXNpemU6NDIzcHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwMDAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSI3OTk5IDgzMDQgODU0MSA4Nzc4IDg5OTAgOTIwMSA5NDEzIDk2NTAgMTAwMDEgMTAxMjAgMTAzNTcgMTA1OTQgMTA4MDYgMTEwNDMgMTEyODAgMTEzOTggMTE3MDMgMTE5NDAgMTIxNTIgMTIzNjQgMTI2MDEgMTI4MTIgMTI5MzEgMTMwNDkgMTMyNjEgMTM0OTggMTM3MTAgMTM5NDcgMTQwNjUgMTQzMDIgMTQ1NDAgMTQ2NTggMTQ3NzcgMTQ4NzAgMTUxMDcgMTUyMjUgMTU0MzcgMTU2NDkgMTU4ODYiCisgICAgICAgeT0iNDg3NyIKKyAgICAgICBpZD0idHNwYW40NjEiPkNoZWNrc3VtIGJhc2VkIFJlc3luYywgY2FzZSBub3QgaW4gc3luYzwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQ0NzUiCisgICAgIHN0eWxlPSJmb250LXNpemU6NDIzcHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwMDAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSI2OTYxIDcyNjYgNzU3MSA3ODU0IDgxNTkgODI5OSA4NTM2IDg2NTQgODg5MSA5MDEwIDkyNDcgOTQ4NCA5NjAzIDk4NDAgOTk1OCAxMDA3NyAxMDE3MCAxMDQwNyIKKyAgICAgICB5PSIyODA2IgorICAgICAgIGlkPSJ0c3BhbjQ3NyI+RFJCRC04LjMgZGF0YSBmbG93PC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dAorICAgICBpZD0idGV4dDQ5MSIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjUxOTAgNTQxOSA1NTk2IDU3NzQgNTk1MiA2MTEzIDYyOTEgNjQ2OCA2NjQ2IDY4MjQgNjk4NSA3MTQ2IDczMjQgNzU4NiA3NjkyIgorICAgICAgIHk9IjcwMDUiCisgICAgICAgaWQ9InRzcGFuNDkzIj53X2Vfc2VuZF9jc3VtKCk8L3RzcGFuPgorICA8L3RleHQ+CisgIDxwYXRoCisgICAgIGQ9Ik0gMTE5OTksMTc2MDEgTCAxMTg5OSwxNzMwMSBMIDEyMDk5LDE3MzAxIEwgMTE5OTksMTc2MDEgeiIKKyAgICAgaWQ9InBhdGg1MDMiCisgICAgIHN0eWxlPSJmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlIiAvPgorICA8cGF0aAorICAgICBkPSJNIDExOTk5LDE2ODAxIEwgMTE5OTksMTczNjEiCisgICAgIGlkPSJwYXRoNTA3IgorICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZSIgLz4KKyAgPHBhdGgKKyAgICAgZD0iTSAxMTk5OSwxNjgwMSBMIDExNjg1LDE2ODQwIEwgMTE3MjQsMTY2NDQgTCAxMTk5OSwxNjgwMSB6IgorICAgICBpZD0icGF0aDUxOSIKKyAgICAgc3R5bGU9ImZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxwYXRoCisgICAgIGQ9Ik0gNzk5OSwxNjAwMSBMIDExNzY0LDE2NzU0IgorICAgICBpZD0icGF0aDUyMyIKKyAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxnCisgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuOTg5NTI1OCwtMC4xNDQzNTYyLDAuMTQ0MzU2MiwwLjk4OTUyNTgsLTI1MzkuNTgwNiwxNTI5LjM0OTEpIgorICAgICBpZD0iZzUzOSIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDAwMDgwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0ZXh0CisgICAgICAgaWQ9InRleHQ1NDEiPgorICAgICAgPHRzcGFuCisgICAgICAgICB4PSI5MjY5IDk0OTggOTcwOSA5Nzk4IDk5NTkgMTAwNDggMTAyMjYgMTA0MzcgMTA1OTggMTA3NzYiCisgICAgICAgICB5PSIxODI2NSIKKyAgICAgICAgIGlkPSJ0c3BhbjU0MyI+UlNJc0luU3luYzwvdHNwYW4+CisgICAgPC90ZXh0PgorICA8L2c+CisgIDxwYXRoCisgICAgIGQ9Ik0gNzk5OSwxODYwMSBMIDgyODEsMTg0NTggTCA4MzExLDE4NjU1IEwgNzk5OSwxODYwMSB6IgorICAgICBpZD0icGF0aDU1MyIKKyAgICAgc3R5bGU9ImZpbGw6IzAwMDA4MDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxwYXRoCisgICAgIGQ9Ik0gMTE5OTksMTgwMDEgTCA4MjM2LDE4NTY1IgorICAgICBpZD0icGF0aDU1NyIKKyAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDA4MDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxnCisgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuOTc4ODY3NCwwLjIwNDQ5NjEsLTAuMjA0NDk2MSwwLjk3ODg2NzQsMzQ2MS40MDI3LC0xNDQ5LjMwMTIpIgorICAgICBpZD0iZzU3MyIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0ZXh0CisgICAgICAgaWQ9InRleHQ1NzUiPgorICAgICAgPHRzcGFuCisgICAgICAgICB4PSI4NzQzIDg5NzIgOTEzMiA5MzEwIDk1NzMgOTgwMSAxMDAxMyAxMDI0MiAxMDQxOSAxMDU5NyAxMDc3NSAxMDk1MyAxMTExNCIKKyAgICAgICAgIHk9IjE2MDIzIgorICAgICAgICAgaWQ9InRzcGFuNTc3Ij5Dc3VtUlNSZXF1ZXN0PC90c3Bhbj4KKyAgICA8L3RleHQ+CisgIDwvZz4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQ1OTEiCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSIxMjE5OSAxMjMwNSAxMjQ4MyAxMjY0NCAxMjgyMSAxMjg5MyAxMzA1NCAxMzIzMiAxMzQxMCAxMzYzOCAxMzgxNiAxMzkwNSAxNDA4MyAxNDMxMSAxNDQ4OSAxNDY2NyAxNDg0NSAxNTAyMyAxNTE4NCAxNTI3MiAxNTM3OCIKKyAgICAgICB5PSIxNjgwNiIKKyAgICAgICBpZD0idHNwYW41OTMiPnJlY2VpdmVfRGF0YVJlcXVlc3QoKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQ2MDciCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSIxMjE5OSAxMjM3NyAxMjQ4MyAxMjY2MCAxMjgzOCAxMzAxNiAxMzE5NCAxMzM3MiAxMzU0OSAxMzYyMSAxMzc5OSAxMzk3NyAxNDA4MyAxNDI2MSAxNDQzOCAxNDYxNiAxNDc5NCAxNDk1NSAxNTEzMyAxNTI5NCAxNTM5OSIKKyAgICAgICB5PSIxNzYwNiIKKyAgICAgICBpZD0idHNwYW42MDkiPmRyYmRfZW5kaW9fcmVhZF9zZWMoKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQ2MjMiCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSIxMjE5MSAxMjQyMCAxMjU5NyAxMjc3NSAxMjk1MyAxMzEzMSAxMzMwOSAxMzQ4NiAxMzY2NCAxMzgyNSAxMzk4NiAxNDE2NCAxNDQyNiAxNDYwNCAxNDcxMCAxNDg3MSAxNTA0OSAxNTE1NCAxNTMzMiAxNTUxMCAxNTYxNiIKKyAgICAgICB5PSIxODAwNyIKKyAgICAgICBpZD0idHNwYW42MjUiPndfZV9lbmRfY3N1bV9yc19yZXEoKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQ2MzkiCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwMDA4MDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSI1NzM1IDU5MTMgNjA5MSA2MTgwIDYzNTcgNjQ0NiA2NjA3IDY2OTYgNjg3NCA3MDg1IDcyNDYgNzQyNCA3NTg1IDc2OTEiCisgICAgICAgeT0iMTg1MDciCisgICAgICAgaWQ9InRzcGFuNjQxIj5nb3RfSXNJblN5bmMoKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQ2NTUiCisgICAgIHN0eWxlPSJmb250LXNpemU6NDIzcHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwMDAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSI3OTk5IDgzMDQgODU0MSA4Nzc4IDg5OTAgOTIwMSA5NDEzIDk2NTAgMTAwMDEgMTAxMjAgMTAzNTcgMTA1OTQgMTA4MDYgMTEwNDMgMTEyODAgMTEzOTggMTE3MDMgMTE5NDAgMTIxNTIgMTIzNjQgMTI2MDEgMTI4MTIgMTI5MzEgMTMwNDkgMTMyNjEgMTM0OTggMTM3MTAgMTM5NDcgMTQwNjUgMTQxNTkgMTQzOTYgMTQ1MTQgMTQ3MjYgMTQ5MzcgMTUxNzUiCisgICAgICAgeT0iMTM4NzciCisgICAgICAgaWQ9InRzcGFuNjU3Ij5DaGVja3N1bSBiYXNlZCBSZXN5bmMsIGNhc2UgaW4gc3luYzwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHBhdGgKKyAgICAgZD0iTSAxMjAwMCwyNDYwMSBMIDExOTAwLDI0MzAxIEwgMTIxMDAsMjQzMDEgTCAxMjAwMCwyNDYwMSB6IgorICAgICBpZD0icGF0aDY2NyIKKyAgICAgc3R5bGU9ImZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxwYXRoCisgICAgIGQ9Ik0gMTIwMDAsMjM4MDEgTCAxMjAwMCwyNDM2MSIKKyAgICAgaWQ9InBhdGg2NzEiCisgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlIiAvPgorICA8cGF0aAorICAgICBkPSJNIDgwMDAsMjY0MDEgTCA3OTAwLDI2MTAxIEwgODEwMCwyNjEwMSBMIDgwMDAsMjY0MDEgeiIKKyAgICAgaWQ9InBhdGg2ODMiCisgICAgIHN0eWxlPSJmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlIiAvPgorICA8cGF0aAorICAgICBkPSJNIDgwMDAsMjU2MDEgTCA4MDAwLDI2MTYxIgorICAgICBpZD0icGF0aDY4NyIKKyAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxwYXRoCisgICAgIGQ9Ik0gMTIwMDAsMjM4MDEgTCAxMTY4NiwyMzg0MCBMIDExNzI1LDIzNjQ0IEwgMTIwMDAsMjM4MDEgeiIKKyAgICAgaWQ9InBhdGg2OTkiCisgICAgIHN0eWxlPSJmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlIiAvPgorICA8cGF0aAorICAgICBkPSJNIDgwMDAsMjMwMDEgTCAxMTc2NSwyMzc1NCIKKyAgICAgaWQ9InBhdGg3MDMiCisgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlIiAvPgorICA8ZworICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjk4OTUyNTgsLTAuMTQ0MzU2MiwwLjE0NDM1NjIsMC45ODk1MjU4LC0zNTQzLjg0NTIsMTYzMC41MTQzKSIKKyAgICAgaWQ9Imc3MTkiCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dGV4dAorICAgICAgIGlkPSJ0ZXh0NzIxIj4KKyAgICAgIDx0c3BhbgorICAgICAgICAgeD0iOTQ2NCA5NzEwIDk5MjEgMTAxNTAgMTAzMjggMTA1MDUgMTA1NzciCisgICAgICAgICB5PSIyNTIzNiIKKyAgICAgICAgIGlkPSJ0c3BhbjcyMyI+T1ZSZXBseTwvdHNwYW4+CisgICAgPC90ZXh0PgorICA8L2c+CisgIDxwYXRoCisgICAgIGQ9Ik0gODAwMCwyNTYwMSBMIDgyODIsMjU0NTggTCA4MzEyLDI1NjU1IEwgODAwMCwyNTYwMSB6IgorICAgICBpZD0icGF0aDczMyIKKyAgICAgc3R5bGU9ImZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxwYXRoCisgICAgIGQ9Ik0gMTIwMDAsMjUwMDEgTCA4MjM3LDI1NTY1IgorICAgICBpZD0icGF0aDczNyIKKyAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxnCisgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuOTc4ODY3NCwwLjIwNDQ5NjEsLTAuMjA0NDk2MSwwLjk3ODg2NzQsNDkxOC4yODAxLC0xMzgxLjIxMjgpIgorICAgICBpZD0iZzc1MyIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0ZXh0CisgICAgICAgaWQ9InRleHQ3NTUiPgorICAgICAgPHRzcGFuCisgICAgICAgICB4PSI5MTQyIDkzODggOTU5OSA5ODI4IDEwMDA2IDEwMTgzIDEwMzYxIDEwNTM5IDEwNzAwIgorICAgICAgICAgeT0iMjMxMDYiCisgICAgICAgICBpZD0idHNwYW43NTciPk9WUmVxdWVzdDwvdHNwYW4+CisgICAgPC90ZXh0PgorICA8L2c+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0NzcxIgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iMTIyMDAgMTIzMDYgMTI0ODQgMTI2NDUgMTI4MjIgMTI4OTQgMTMwNTUgMTMyMzMgMTM0MTEgMTM2NTYgMTM4NjggMTQwOTcgMTQyNzQgMTQ0NTIgMTQ2MzAgMTQ4MDggMTQ5NjkgMTUwNTggMTUxNjMiCisgICAgICAgeT0iMjM4MDYiCisgICAgICAgaWQ9InRzcGFuNzczIj5yZWNlaXZlX09WUmVxdWVzdCgpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dAorICAgICBpZD0idGV4dDc4NyIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjEyMjAwIDEyMzc4IDEyNDg0IDEyNjYxIDEyODM5IDEzMDE3IDEzMTk1IDEzMzczIDEzNTUwIDEzNjIyIDEzODAwIDEzOTc4IDE0MDg0IDE0MjYyIDE0NDM5IDE0NjE3IDE0Nzk1IDE0OTU2IDE1MTM0IDE1Mjk1IDE1NDAwIgorICAgICAgIHk9IjI0NjA2IgorICAgICAgIGlkPSJ0c3Bhbjc4OSI+ZHJiZF9lbmRpb19yZWFkX3NlYygpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dAorICAgICBpZD0idGV4dDgwMyIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjEyMTkyIDEyNDIxIDEyNTk4IDEyNzc2IDEyOTU0IDEzMTMyIDEzMzEwIDEzNDg3IDEzNjY1IDEzODQzIDE0MDA0IDE0MTgyIDE0Mjg4IDE0NDY1IDE0NjQzIDE0NzQ5IgorICAgICAgIHk9IjI1MDA3IgorICAgICAgIGlkPSJ0c3BhbjgwNSI+d19lX2VuZF9vdl9yZXEoKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQ4MTkiCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSI1MTAxIDUyMDcgNTM4NSA1NTQ2IDU3MjMgNTc5NSA1OTU2IDYxMzQgNjMxMiA2NTU3IDY3NjkgNjk5OCA3MTc1IDczNTMgNzQyNSA3NTg2IDc2OTIiCisgICAgICAgeT0iMjU1MDciCisgICAgICAgaWQ9InRzcGFuODIxIj5yZWNlaXZlX09WUmVwbHkoKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQ4MzUiCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSI0NDkyIDQ2NzAgNDc3NiA0OTUzIDUxMzEgNTMwOSA1NDg3IDU2NjUgNTg0MiA1OTE0IDYwOTIgNjI3MCA2Mzc2IDY1NTQgNjczMSA2OTA5IDcwODcgNzI0OCA3NDI2IDc1ODcgNzY5MiIKKyAgICAgICB5PSIyNjQwNyIKKyAgICAgICBpZD0idHNwYW44MzciPmRyYmRfZW5kaW9fcmVhZF9zZWMoKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQ4NTEiCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSI0OTAyIDUxMzEgNTMwOCA1NDg2IDU2NjQgNTg0MiA2MDIwIDYxOTcgNjM3NSA2NTUzIDY3MTQgNjg5MiA2OTk4IDcxNzUgNzM1MyA3NDI1IDc1ODYgNzY5MiIKKyAgICAgICB5PSIyNjkwNyIKKyAgICAgICBpZD0idHNwYW44NTMiPndfZV9lbmRfb3ZfcmVwbHkoKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHBhdGgKKyAgICAgZD0iTSAxMjAwMCwyNzYwMSBMIDExNjg2LDI3NjQwIEwgMTE3MjUsMjc0NDQgTCAxMjAwMCwyNzYwMSB6IgorICAgICBpZD0icGF0aDg2MyIKKyAgICAgc3R5bGU9ImZpbGw6IzAwMDA4MDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxwYXRoCisgICAgIGQ9Ik0gODAwMCwyNjgwMSBMIDExNzY1LDI3NTU0IgorICAgICBpZD0icGF0aDg2NyIKKyAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDA4MDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxnCisgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuOTc4ODY3NCwwLjIwNDQ5NjEsLTAuMjA0NDk2MSwwLjk3ODg2NzQsNTcwNC4xOTA3LC0xMzI4LjMxMikiCisgICAgIGlkPSJnODgzIgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDAwODA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRleHQKKyAgICAgICBpZD0idGV4dDg4NSI+CisgICAgICA8dHNwYW4KKyAgICAgICAgIHg9IjkyNzkgOTUyNSA5NzM2IDk5NjUgMTAxNDMgMTAzMDMgMTA0ODEgMTA1NTMiCisgICAgICAgICB5PSIyNjkzNSIKKyAgICAgICAgIGlkPSJ0c3Bhbjg4NyI+T1ZSZXN1bHQ8L3RzcGFuPgorICAgIDwvdGV4dD4KKyAgPC9nPgorICA8dGV4dAorICAgICBpZD0idGV4dDkwMSIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDAwMDgwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjEyMjAwIDEyMzc4IDEyNTU2IDEyNjQ1IDEyODIyIDEzMDY4IDEzMjgwIDEzNTA4IDEzNjg2IDEzODQ3IDE0MDI1IDE0MDk3IDE0MTg1IDE0MjkxIgorICAgICAgIHk9IjI3NTU5IgorICAgICAgIGlkPSJ0c3BhbjkwMyI+Z290X09WUmVzdWx0KCk8L3RzcGFuPgorICA8L3RleHQ+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0OTE3IgorICAgICBzdHlsZT0iZm9udC1zaXplOjQyM3B4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDAwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iODAwMCA4MzMwIDg1NjcgODY2MCA4NzU0IDg5OTEgOTIyOCA5MzQ2IDk1NTggOTc5NSA5OTM1IDEwMDI4IDEwMTQ2IgorICAgICAgIHk9IjIxODc3IgorICAgICAgIGlkPSJ0c3BhbjkxOSI+T25saW5lIHZlcmlmeTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQ5MzMiCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSI0NjQxIDQ4NzAgNTA0NyA1MzEwIDU0ODggNTY0OSA1ODI2IDYwMDQgNjE4MiA2MzQzIDY1MjEgNjYyNiA2ODA0IDY5ODIgNzE2MCA3MzM4IDc0OTkgNzU4NyA3NjkzIgorICAgICAgIHk9IjIzMDA1IgorICAgICAgIGlkPSJ0c3BhbjkzNSI+d19tYWtlX292X3JlcXVlc3QoKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHBhdGgKKyAgICAgZD0iTSA4MDAwLDY1MDAgTCA3OTAwLDYyMDAgTCA4MTAwLDYyMDAgTCA4MDAwLDY1MDAgeiIKKyAgICAgaWQ9InBhdGg5NDUiCisgICAgIHN0eWxlPSJmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlIiAvPgorICA8cGF0aAorICAgICBkPSJNIDgwMDAsNTcwMCBMIDgwMDAsNjI2MCIKKyAgICAgaWQ9InBhdGg5NDkiCisgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlIiAvPgorICA8cGF0aAorICAgICBkPSJNIDM5MDAsNTUwMCBMIDM3MDAsNTUwMCBMIDM3MDAsMTEwMDAgTCAzOTAwLDExMDAwIgorICAgICBpZD0icGF0aDk2MSIKKyAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxwYXRoCisgICAgIGQ9Ik0gMzkwMCwxNDUwMCBMIDM3MDAsMTQ1MDAgTCAzNzAwLDE4NjAwIEwgMzkwMCwxODYwMCIKKyAgICAgaWQ9InBhdGg5NzMiCisgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7dmlzaWJpbGl0eTp2aXNpYmxlIiAvPgorICA8cGF0aAorICAgICBkPSJNIDM5MDAsMjI4MDAgTCAzNzAwLDIyODAwIEwgMzcwMCwyNjkwMCBMIDM5MDAsMjY5MDAiCisgICAgIGlkPSJwYXRoOTg1IgorICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3Zpc2liaWxpdHk6dmlzaWJsZSIgLz4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQxMDAxIgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iNDQ5MiA0NjcwIDQ3NzYgNDk1MyA1MTMxIDUzMDkgNTQ4NyA1NjY1IDU4NDIgNTkxNCA2MDkyIDYyNzAgNjM3NiA2NTU0IDY3MzEgNjkwOSA3MDg3IDcyNDggNzQyNiA3NTg3IDc2OTIiCisgICAgICAgeT0iNjUwNiIKKyAgICAgICBpZD0idHNwYW4xMDAzIj5kcmJkX2VuZGlvX3JlYWRfc2VjKCk8L3RzcGFuPgorICA8L3RleHQ+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0MTAxNyIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjQwMzQgNDI2MyA0NDQwIDQ3MDMgNDg4MSA1MDQyIDUyMTkgNTM5NyA1NTAzIDU2ODEgNTg0MiA2MDAzIDYxODAgNjM0MSA2NTE5IDY2MjUgNjgwMyA2OTgwIDcxNTggNzMzNiA3NDk3IDc1ODYgNzY5MiIKKyAgICAgICB5PSIxNDcwOCIKKyAgICAgICBpZD0idHNwYW4xMDE5Ij53X21ha2VfcmVzeW5jX3JlcXVlc3QoKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQxMDMzIgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iNTE5MCA1NDE5IDU1OTYgNTc3NCA1OTUyIDYxMTMgNjI5MSA2NDY4IDY2NDYgNjgyNCA2OTg1IDcxNDYgNzMyNCA3NTg2IDc2OTIiCisgICAgICAgeT0iMTYwMDYiCisgICAgICAgaWQ9InRzcGFuMTAzNSI+d19lX3NlbmRfY3N1bSgpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8cGF0aAorICAgICBkPSJNIDgwMDAsMTU1MDEgTCA3OTAwLDE1MjAxIEwgODEwMCwxNTIwMSBMIDgwMDAsMTU1MDEgeiIKKyAgICAgaWQ9InBhdGgxMDQ1IgorICAgICBzdHlsZT0iZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZSIgLz4KKyAgPHBhdGgKKyAgICAgZD0iTSA4MDAwLDE0NzAxIEwgODAwMCwxNTI2MSIKKyAgICAgaWQ9InBhdGgxMDQ5IgorICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZSIgLz4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQxMDY1IgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iNDQ5MiA0NjcwIDQ3NzYgNDk1MyA1MTMxIDUzMDkgNTQ4NyA1NjY1IDU4NDIgNTkxNCA2MDkyIDYyNzAgNjM3NiA2NTU0IDY3MzEgNjkwOSA3MDg3IDcyNDggNzQyNiA3NTg3IDc2OTIiCisgICAgICAgeT0iMTU1MDciCisgICAgICAgaWQ9InRzcGFuMTA2NyI+ZHJiZF9lbmRpb19yZWFkX3NlYygpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8cGF0aAorICAgICBkPSJNIDE2MTAwLDkwMDAgTCAxNjMwMCw5MDAwIEwgMTYzMDAsNzUwMCBMIDE2MTAwLDc1MDAiCisgICAgIGlkPSJwYXRoMTA3NyIKKyAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxwYXRoCisgICAgIGQ9Ik0gMTYxMDAsMTgwMDAgTCAxNjMwMCwxODAwMCBMIDE2MzAwLDE2NTAwIEwgMTYxMDAsMTY1MDAiCisgICAgIGlkPSJwYXRoMTA4OSIKKyAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxwYXRoCisgICAgIGQ9Ik0gMTYxMDAsMjUwMDAgTCAxNjMwMCwyNTAwMCBMIDE2MzAwLDIzNTAwIEwgMTYxMDAsMjM1MDAiCisgICAgIGlkPSJwYXRoMTEwMSIKKyAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0MTExNyIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDAwMDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjIwMjYgMjEzMiAyMjkzIDI0NzEgMjY0OCAyODI2IDMwMDQgMzA3NiAzMjU0IDM0MzEgMzUwMyAzNjgxIDM3ODciCisgICAgICAgeT0iNTQwMiIKKyAgICAgICBpZD0idHNwYW4xMTE5Ij5yc19iZWdpbl9pbygpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dAorICAgICBpZD0idGV4dDExMzMiCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwMDAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSIyMDI3IDIxMzMgMjI5NCAyNDcyIDI2NDkgMjgyNyAzMDA1IDMwNzcgMzI1NSAzNDMyIDM1MDQgMzY4MiAzNzg4IgorICAgICAgIHk9IjE0NDAyIgorICAgICAgIGlkPSJ0c3BhbjExMzUiPnJzX2JlZ2luX2lvKCk8L3RzcGFuPgorICA8L3RleHQ+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0MTE0OSIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDAwMDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjIwMjYgMjEzMiAyMjkzIDI0NzEgMjY0OCAyODI2IDMwMDQgMzA3NiAzMjU0IDM0MzEgMzUwMyAzNjgxIDM3ODciCisgICAgICAgeT0iMjI2MDIiCisgICAgICAgaWQ9InRzcGFuMTE1MSI+cnNfYmVnaW5faW8oKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQxMTY1IgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDAwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iMTQyNiAxNTMyIDE2OTMgMTg3MSAyMDMxIDIyMDkgMjQ3MiAyNjQ5IDI3MjEgMjg5OSAyOTg4IDMxNjYgMzM0NCAzNDE2IDM1OTMgMzY5OSIKKyAgICAgICB5PSIxMTMwMiIKKyAgICAgICBpZD0idHNwYW4xMTY3Ij5yc19jb21wbGV0ZV9pbygpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dAorICAgICBpZD0idGV4dDExODEiCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwMDAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSIxNTI2IDE2MzIgMTc5MyAxOTcxIDIxMzEgMjMwOSAyNTcyIDI3NDkgMjgyMSAyOTk5IDMwODggMzI2NiAzNDQ0IDM1MTYgMzY5MyAzNzk5IgorICAgICAgIHk9IjE4OTMxIgorICAgICAgIGlkPSJ0c3BhbjExODMiPnJzX2NvbXBsZXRlX2lvKCk8L3RzcGFuPgorICA8L3RleHQ+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0MTE5NyIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDAwMDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjE1MjYgMTYzMiAxNzkzIDE5NzEgMjEzMSAyMzA5IDI1NzIgMjc0OSAyODIxIDI5OTkgMzA4OCAzMjY2IDM0NDQgMzUxNiAzNjkzIDM3OTkiCisgICAgICAgeT0iMjcyMzEiCisgICAgICAgaWQ9InRzcGFuMTE5OSI+cnNfY29tcGxldGVfaW8oKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQxMjEzIgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDAwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iMTYxMjYgMTYyMzIgMTYzOTMgMTY1NzEgMTY3NDggMTY5MjYgMTcxMDQgMTcxNzYgMTczNTQgMTc1MzEgMTc2MDMgMTc3ODEgMTc4ODciCisgICAgICAgeT0iNzQwMiIKKyAgICAgICBpZD0idHNwYW4xMjE1Ij5yc19iZWdpbl9pbygpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dAorICAgICBpZD0idGV4dDEyMjkiCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwMDAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSIxNjEyNyAxNjIzMyAxNjM5NCAxNjU3MiAxNjc0OSAxNjkyNyAxNzEwNSAxNzE3NyAxNzM1NSAxNzUzMiAxNzYwNCAxNzc4MiAxNzg4OCIKKyAgICAgICB5PSIxNjMzMSIKKyAgICAgICBpZD0idHNwYW4xMjMxIj5yc19iZWdpbl9pbygpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dAorICAgICBpZD0idGV4dDEyNDUiCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwMDAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSIxNjEyNyAxNjIzMyAxNjM5NCAxNjU3MiAxNjc0OSAxNjkyNyAxNzEwNSAxNzE3NyAxNzM1NSAxNzUzMiAxNzYwNCAxNzc4MiAxNzg4OCIKKyAgICAgICB5PSIyMzMwMiIKKyAgICAgICBpZD0idHNwYW4xMjQ3Ij5yc19iZWdpbl9pbygpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dAorICAgICBpZD0idGV4dDEyNjEiCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwMDAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSIxNjExNSAxNjIyMSAxNjM4MiAxNjU2MCAxNjcyMCAxNjg5OCAxNzE2MSAxNzMzOCAxNzQxMCAxNzU4OCAxNzY3NyAxNzg1NSAxODAzMyAxODEwNSAxODI4MiAxODM4OCIKKyAgICAgICB5PSI5MzAyIgorICAgICAgIGlkPSJ0c3BhbjEyNjMiPnJzX2NvbXBsZXRlX2lvKCk8L3RzcGFuPgorICA8L3RleHQ+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0MTI3NyIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDAwMDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjE2MTE1IDE2MjIxIDE2MzgyIDE2NTYwIDE2NzIwIDE2ODk4IDE3MTYxIDE3MzM4IDE3NDEwIDE3NTg4IDE3Njc3IDE3ODU1IDE4MDMzIDE4MTA1IDE4MjgyIDE4Mzg4IgorICAgICAgIHk9IjE4MzMxIgorICAgICAgIGlkPSJ0c3BhbjEyNzkiPnJzX2NvbXBsZXRlX2lvKCk8L3RzcGFuPgorICA8L3RleHQ+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0MTI5MyIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDAwMDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjE2MTI2IDE2MjMyIDE2MzkzIDE2NTcxIDE2NzMxIDE2OTA5IDE3MTcyIDE3MzQ5IDE3NDIxIDE3NTk5IDE3Njg4IDE3ODY2IDE4MDQ0IDE4MTE2IDE4MjkzIDE4Mzk5IgorICAgICAgIHk9IjI1MzAyIgorICAgICAgIGlkPSJ0c3BhbjEyOTUiPnJzX2NvbXBsZXRlX2lvKCk8L3RzcGFuPgorICA8L3RleHQ+Cis8L3N2Zz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYmxvY2tkZXYvZHJiZC9EUkJELWRhdGEtcGFja2V0cy5zdmcgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L2RyYmQvRFJCRC1kYXRhLXBhY2tldHMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4YTFlMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L2RyYmQvRFJCRC1kYXRhLXBhY2tldHMuc3ZnCkBAIC0wLDAgKzEsNDU5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz4KKzwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgorPHN2ZworICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKKyAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKKyAgIHZlcnNpb249IjEuMCIKKyAgIHdpZHRoPSIyMTBtbSIKKyAgIGhlaWdodD0iMjk3bW0iCisgICB2aWV3Qm94PSIwIDAgMjEwMDAgMjk3MDAiCisgICBpZD0ic3ZnMiIKKyAgIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZCI+CisgIDxkZWZzCisgICAgIGlkPSJkZWZzNCIgLz4KKyAgPGcKKyAgICAgaWQ9IkRlZmF1bHQiCisgICAgIHN0eWxlPSJ2aXNpYmlsaXR5OnZpc2libGUiPgorICAgIDxkZXNjCisgICAgICAgaWQ9ImRlc2MxNzYiPk1hc3RlciBzbGlkZTwvZGVzYz4KKyAgPC9nPgorICA8cGF0aAorICAgICBkPSJNIDExOTk5LDE5NjAxIEwgMTE4OTksMTkzMDEgTCAxMjA5OSwxOTMwMSBMIDExOTk5LDE5NjAxIHoiCisgICAgIGlkPSJwYXRoMTg5IgorICAgICBzdHlsZT0iZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZSIgLz4KKyAgPHBhdGgKKyAgICAgZD0iTSAxMTk5OSwxODgwMSBMIDExOTk5LDE5MzYxIgorICAgICBpZD0icGF0aDE5MyIKKyAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxwYXRoCisgICAgIGQ9Ik0gNzk5OSwyMTQwMSBMIDc4OTksMjExMDEgTCA4MDk5LDIxMTAxIEwgNzk5OSwyMTQwMSB6IgorICAgICBpZD0icGF0aDIwNSIKKyAgICAgc3R5bGU9ImZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxwYXRoCisgICAgIGQ9Ik0gNzk5OSwyMDYwMSBMIDc5OTksMjExNjEiCisgICAgIGlkPSJwYXRoMjA5IgorICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZSIgLz4KKyAgPHBhdGgKKyAgICAgZD0iTSAxMTk5OSwxODgwMSBMIDExNjg1LDE4ODQwIEwgMTE3MjQsMTg2NDQgTCAxMTk5OSwxODgwMSB6IgorICAgICBpZD0icGF0aDIyMSIKKyAgICAgc3R5bGU9ImZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxwYXRoCisgICAgIGQ9Ik0gNzk5OSwxODAwMSBMIDExNzY0LDE4NzU0IgorICAgICBpZD0icGF0aDIyNSIKKyAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDx0ZXh0CisgICAgIHg9Ii0zMDIzLjg0NSIKKyAgICAgeT0iMTEwNi44MTI0IgorICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjk4OTUyNTgsLTAuMTQ0MzU2MiwwLjE0NDM1NjIsMC45ODk1MjU4LDAsMCkiCisgICAgIGlkPSJ0ZXh0MjQzIgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iNjExNS4xNTUzIDYzNDQuMTU1MyA2NTU1LjE1NTMgNjc4NC4xNTUzIDY5NjIuMTU1MyA3MDUxLjE1NTMgNzIyOC4xNTUzIDc0NTcuMTU1MyA3NjM1LjE1NTMgNzgxMy4xNTUzIDc4ODUuMTU1MyIKKyAgICAgICB5PSIyMTM5MC44MTIiCisgICAgICAgaWQ9InRzcGFuMjQ1Ij5SU0RhdGFSZXBseTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHBhdGgKKyAgICAgZD0iTSA3OTk5LDIwNjAxIEwgODI4MSwyMDQ1OCBMIDgzMTEsMjA2NTUgTCA3OTk5LDIwNjAxIHoiCisgICAgIGlkPSJwYXRoMjU1IgorICAgICBzdHlsZT0iZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZSIgLz4KKyAgPHBhdGgKKyAgICAgZD0iTSAxMTk5OSwyMDAwMSBMIDgyMzYsMjA1NjUiCisgICAgIGlkPSJwYXRoMjU5IgorICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZSIgLz4KKyAgPHRleHQKKyAgICAgeD0iMzUwMi41MzU2IgorICAgICB5PSItMjE4NC42NjIxIgorICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjk3ODg2NzQsMC4yMDQ0OTYxLC0wLjIwNDQ5NjEsMC45Nzg4Njc0LDAsMCkiCisgICAgIGlkPSJ0ZXh0Mjc3IgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iMTIzMjEuNTM2IDEyNTUwLjUzNiAxMjc2MS41MzYgMTI5OTAuNTM2IDEzMTY4LjUzNiAxMzI1Ny41MzYgMTM0MzQuNTM2IDEzNjYzLjUzNiAxMzg0MS41MzYgMTQwMTkuNTM2IDE0MTk2LjUzNiAxNDM3NC41MzYgMTQ1MzUuNTM2IgorICAgICAgIHk9IjE1ODU0LjMzOCIKKyAgICAgICBpZD0idHNwYW4yNzkiPlJTRGF0YVJlcXVlc3Q8L3RzcGFuPgorICA8L3RleHQ+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0MjkzIgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iNDAzNCA0MjYzIDQ0NDAgNDcwMyA0ODgxIDUwNDIgNTIxOSA1Mzk3IDU1MDMgNTY4MSA1ODQyIDYwMDMgNjE4MCA2MzQxIDY1MTkgNjYyNSA2ODAzIDY5ODAgNzE1OCA3MzM2IDc0OTcgNzU4NiA3NjkyIgorICAgICAgIHk9IjE3ODA3IgorICAgICAgIGlkPSJ0c3BhbjI5NSI+d19tYWtlX3Jlc3luY19yZXF1ZXN0KCk8L3RzcGFuPgorICA8L3RleHQ+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0MzA5IgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iMTIxOTkgMTIzMDUgMTI0ODMgMTI2NDQgMTI4MjEgMTI4OTMgMTMwNTQgMTMyMzIgMTM0MTAgMTM2MzggMTM4MTYgMTM5MDUgMTQwODMgMTQzMTEgMTQ0ODkgMTQ2NjcgMTQ4NDUgMTUwMjMgMTUxODQgMTUyNzIgMTUzNzgiCisgICAgICAgeT0iMTg4MDYiCisgICAgICAgaWQ9InRzcGFuMzExIj5yZWNlaXZlX0RhdGFSZXF1ZXN0KCk8L3RzcGFuPgorICA8L3RleHQ+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0MzI1IgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iMTIxOTkgMTIzNzcgMTI0ODMgMTI2NjAgMTI4MzggMTMwMTYgMTMxOTQgMTMzNzIgMTM1NDkgMTM2MjEgMTM3OTkgMTM5NzcgMTQwODMgMTQyNjEgMTQ0MzggMTQ2MTYgMTQ3OTQgMTQ5NTUgMTUxMzMgMTUyOTQgMTUzOTkiCisgICAgICAgeT0iMTk2MDYiCisgICAgICAgaWQ9InRzcGFuMzI3Ij5kcmJkX2VuZGlvX3JlYWRfc2VjKCk8L3RzcGFuPgorICA8L3RleHQ+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0MzQxIgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iMTIxOTEgMTI0MjAgMTI1OTcgMTI3NzUgMTI5NTMgMTMxMzEgMTMzMDkgMTM0ODYgMTM2NjQgMTM3NzAgMTM5MzEgMTQxMDkgMTQyODcgMTQzNzUgMTQ1NTMgMTQ3MzEgMTQ4MzcgMTUwMTUgMTUxOTIgMTUyOTgiCisgICAgICAgeT0iMjAwMDciCisgICAgICAgaWQ9InRzcGFuMzQzIj53X2VfZW5kX3JzZGF0YV9yZXEoKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQzNTciCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSI0NDQ0IDQ1NTAgNDcyOCA0ODg5IDUwNjYgNTEzOCA1Mjk5IDU0NzcgNTY1NSA1ODgzIDYwOTUgNjMyNCA2NTAxIDY1OTAgNjc2OCA2OTk3IDcxNzUgNzM1MiA3NDI0IDc1ODUgNzY5MSIKKyAgICAgICB5PSIyMDUwNyIKKyAgICAgICBpZD0idHNwYW4zNTkiPnJlY2VpdmVfUlNEYXRhUmVwbHkoKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQzNzMiCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSI0NDU3IDQ2MzUgNDc0MSA0OTE4IDUwOTYgNTI3NCA1NDUyIDU2MzAgNTgwNyA1ODc5IDYwNTcgNjIzNSA2NDY0IDY1NjkgNjY0MSA2NzMwIDY5MDggNzA4NiA3MjQ3IDc0MjUgNzU4NSA3NjkxIgorICAgICAgIHk9IjIxNDA3IgorICAgICAgIGlkPSJ0c3BhbjM3NSI+ZHJiZF9lbmRpb193cml0ZV9zZWMoKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQzODkiCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSI0NjQ3IDQ4MjUgNTAwMyA1MTgwIDUzNTggNTUzNiA1NzE0IDU4MjAgNTk5NyA2MTU4IDYzMTkgNjQ5NyA2NjU4IDY4MzYgNzAxMyA3MDg1IDcyNjMgNzQyNCA3NTg1IDc2OTEiCisgICAgICAgeT0iMjE5MDciCisgICAgICAgaWQ9InRzcGFuMzkxIj5lX2VuZF9yZXN5bmNfYmxvY2soKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHBhdGgKKyAgICAgZD0iTSAxMTk5OSwyMjYwMSBMIDExNjg1LDIyNjQwIEwgMTE3MjQsMjI0NDQgTCAxMTk5OSwyMjYwMSB6IgorICAgICBpZD0icGF0aDQwMSIKKyAgICAgc3R5bGU9ImZpbGw6IzAwMDA4MDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxwYXRoCisgICAgIGQ9Ik0gNzk5OSwyMTgwMSBMIDExNzY0LDIyNTU0IgorICAgICBpZD0icGF0aDQwNSIKKyAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDA4MDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDx0ZXh0CisgICAgIHg9IjQyOTAuMzAwOCIKKyAgICAgeT0iLTIzNjkuNjE2MiIKKyAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC45Nzg4Njc0LDAuMjA0NDk2MSwtMC4yMDQ0OTYxLDAuOTc4ODY3NCwwLDApIgorICAgICBpZD0idGV4dDQyMyIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDAwMDgwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjEzNjEwLjMwMSAxMzkxMS4zMDEgMTQwMTYuMzAxIDE0MDg4LjMwMSAxNDE3Ny4zMDEgMTQzNTUuMzAxIDE0NTY3LjMwMSAxNDcyOC4zMDEiCisgICAgICAgeT0iMTk1NzMuMzg1IgorICAgICAgIGlkPSJ0c3BhbjQyNSI+V3JpdGVBY2s8L3RzcGFuPgorICA8L3RleHQ+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0NDM5IgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDAwODA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iMTIxOTkgMTIzNzcgMTI1NTUgMTI2NDQgMTI4MjEgMTMwMzMgMTMxMDUgMTMyODMgMTM0NDQgMTM2MDQgMTM4MTYgMTM5NzcgMTQxMzggMTQyNDQiCisgICAgICAgeT0iMjI1NTkiCisgICAgICAgaWQ9InRzcGFuNDQxIj5nb3RfQmxvY2tBY2soKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQ0NTUiCisgICAgIHN0eWxlPSJmb250LXNpemU6NDIzcHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwMDAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSI3OTk5IDgzMDQgODU0MSA4NzUzIDg5NjQgOTIwMSA5NDEzIDk1MzEgOTc2OSA5ODYyIDEwMDk5IDEwMzEwIDEwNTIyIDEwNzM0IDEwODUyIDEwOTcxIDExMjA4IDExMzQ4IDExNTg1IDExODIyIgorICAgICAgIHk9IjE2ODc3IgorICAgICAgIGlkPSJ0c3BhbjQ1NyI+UmVzeW5jIGJsb2NrcywgNC0zMks8L3RzcGFuPgorICA8L3RleHQ+CisgIDxwYXRoCisgICAgIGQ9Ik0gMTIwMDAsNzYwMSBMIDExOTAwLDczMDEgTCAxMjEwMCw3MzAxIEwgMTIwMDAsNzYwMSB6IgorICAgICBpZD0icGF0aDQ2NyIKKyAgICAgc3R5bGU9ImZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxwYXRoCisgICAgIGQ9Ik0gMTIwMDAsNjgwMSBMIDEyMDAwLDczNjEiCisgICAgIGlkPSJwYXRoNDcxIgorICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZSIgLz4KKyAgPHBhdGgKKyAgICAgZD0iTSAxMjAwMCw2ODAxIEwgMTE2ODYsNjg0MCBMIDExNzI1LDY2NDQgTCAxMjAwMCw2ODAxIHoiCisgICAgIGlkPSJwYXRoNDgzIgorICAgICBzdHlsZT0iZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZSIgLz4KKyAgPHBhdGgKKyAgICAgZD0iTSA4MDAwLDYwMDEgTCAxMTc2NSw2NzU0IgorICAgICBpZD0icGF0aDQ4NyIKKyAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDx0ZXh0CisgICAgIHg9Ii0xMjg4LjE3OTYiCisgICAgIHk9IjEyNzkuNzY2NiIKKyAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC45ODk1MjU4LC0wLjE0NDM1NjIsMC4xNDQzNTYyLDAuOTg5NTI1OCwwLDApIgorICAgICBpZD0idGV4dDUwNSIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDAwMDgwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjgxNzQuODIwOCA4NDc1LjgyMDMgODU4MC44MjAzIDg2NTIuODIwMyA4NzQxLjgyMDMgODkxOS44MjAzIDkxMzEuODIwMyA5MjkyLjgyMDMiCisgICAgICAgeT0iOTUxNi43NjY2IgorICAgICAgIGlkPSJ0c3BhbjUwNyI+V3JpdGVBY2s8L3RzcGFuPgorICA8L3RleHQ+CisgIDxwYXRoCisgICAgIGQ9Ik0gODAwMCw4NjAxIEwgODI4Miw4NDU4IEwgODMxMiw4NjU1IEwgODAwMCw4NjAxIHoiCisgICAgIGlkPSJwYXRoNTE3IgorICAgICBzdHlsZT0iZmlsbDojMDAwMDgwO3Zpc2liaWxpdHk6dmlzaWJsZSIgLz4KKyAgPHBhdGgKKyAgICAgZD0iTSAxMjAwMCw4MDAxIEwgODIzNyw4NTY1IgorICAgICBpZD0icGF0aDUyMSIKKyAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDA4MDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDx0ZXh0CisgICAgIHg9IjEwNjUuNjY1NSIKKyAgICAgeT0iLTIwOTcuNzY2NCIKKyAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC45Nzg4Njc0LDAuMjA0NDk2MSwtMC4yMDQ0OTYxLDAuOTc4ODY3NCwwLDApIgorICAgICBpZD0idGV4dDUzOSIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjEwNjgyLjY2NiAxMDkxMS42NjYgMTEwODguNjY2IDExMTc3LjY2NiIKKyAgICAgICB5PSI0MTA3LjIzMzkiCisgICAgICAgaWQ9InRzcGFuNTQxIj5EYXRhPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dAorICAgICBpZD0idGV4dDU1NSIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjQ3NDYgNDkyNCA1MDMwIDUyMDcgNTM4NSA1NTYzIDU4MjYgNjAwMyA2MTY0IDYzNDIgNjUyMCA2NjI2IDY4MDMgNjk4MSA3MTU5IDczMzcgNzQ5OCA3NTg3IDc2OTIiCisgICAgICAgeT0iNTUwNSIKKyAgICAgICBpZD0idHNwYW41NTciPmRyYmRfbWFrZV9yZXF1ZXN0KCk8L3RzcGFuPgorICA8L3RleHQ+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0NTcxIgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iMTIyMDAgMTIzMDYgMTI0ODQgMTI2NDUgMTI4MjIgMTI4OTQgMTMwNTUgMTMyMzMgMTM0MTEgMTM2MzkgMTM4MTcgMTM5MDYgMTQwODQgMTQxOTAiCisgICAgICAgeT0iNjgwNiIKKyAgICAgICBpZD0idHNwYW41NzMiPnJlY2VpdmVfRGF0YSgpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dAorICAgICBpZD0idGV4dDU4NyIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjEyMjAwIDEyMzc4IDEyNDg0IDEyNjYxIDEyODM5IDEzMDE3IDEzMTk1IDEzMzczIDEzNTUwIDEzNjIyIDEzODAwIDEzOTc4IDE0MjA3IDE0MzEyIDE0Mzg0IDE0NDczIDE0NjUxIDE0ODI5IDE0OTkwIDE1MTY4IDE1MzI4IDE1NDM0IgorICAgICAgIHk9Ijc2MDYiCisgICAgICAgaWQ9InRzcGFuNTg5Ij5kcmJkX2VuZGlvX3dyaXRlX3NlYygpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dAorICAgICBpZD0idGV4dDYwMyIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjEyMTkyIDEyMzcwIDEyNTQ4IDEyNzI1IDEyOTAzIDEzMDgxIDEzMjU5IDEzNDM3IDEzNTA5IDEzNjg2IDEzODQ3IDE0MDA4IDE0MTE0IgorICAgICAgIHk9IjgwMDciCisgICAgICAgaWQ9InRzcGFuNjA1Ij5lX2VuZF9ibG9jaygpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dAorICAgICBpZD0idGV4dDYxOSIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDAwMDgwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjU2NDcgNTgyNSA2MDAzIDYwOTIgNjI2OSA2NDgxIDY1NTMgNjczMSA2ODkyIDcwNTIgNzI2NCA3NDI1IDc1ODYgNzY5MiIKKyAgICAgICB5PSI4NjA2IgorICAgICAgIGlkPSJ0c3BhbjYyMSI+Z290X0Jsb2NrQWNrKCk8L3RzcGFuPgorICA8L3RleHQ+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0NjM1IgorICAgICBzdHlsZT0iZm9udC1zaXplOjQyM3B4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDAwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iODAwMCA4MzA1IDg1NDIgODc3OSA5MDE2IDkxMDkgOTM0NiA5NDg2IDk2MDQgOTk1NiAxMDA0OSAxMDE4OSAxMDMyOCAxMDU2NSAxMDcwNSAxMDk0MiAxMTE3OSAxMTI5OCAxMTYwMyAxMTc0MiAxMTgzNSAxMTk1NCAxMjE5MSAxMjMxMCAxMjQyOCAxMjY2NSAxMjkwMiAxMzEzOSAxMzI3OSAxMzUxNiAxMzc1MyIKKyAgICAgICB5PSI0ODc3IgorICAgICAgIGlkPSJ0c3BhbjYzNyI+UmVndWxhciBtaXJyb3JlZCB3cml0ZSwgNTEyLTMySzwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQ2NTEiCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSI1MzgxIDU2MTAgNTc4NyA1OTQ4IDYxMjYgNjMwNCA2NDgyIDY2NTkgNjgzNyA3MDE1IDcwODcgNzI2NSA3NDI2IDc1ODcgNzY5MiIKKyAgICAgICB5PSI2MDAzIgorICAgICAgIGlkPSJ0c3BhbjY1MyI+d19zZW5kX2RibG9jaygpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8cGF0aAorICAgICBkPSJNIDgwMDAsNjgwMCBMIDc5MDAsNjUwMCBMIDgxMDAsNjUwMCBMIDgwMDAsNjgwMCB6IgorICAgICBpZD0icGF0aDY2MyIKKyAgICAgc3R5bGU9ImZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxwYXRoCisgICAgIGQ9Ik0gODAwMCw2MDAwIEwgODAwMCw2NTYwIgorICAgICBpZD0icGF0aDY2NyIKKyAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0NjgzIgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iNDYwMiA0NzgwIDQ4ODYgNTA2MyA1MjQxIDU0MTkgNTU5NyA1Nzc1IDU5NTIgNjAyNCA2MjAyIDYzODAgNjYwOSA2NzE0IDY3ODYgNjg3NSA3MDUzIDcyMzEgNzQwOSA3NTE1IDc1ODcgNzY5MiIKKyAgICAgICB5PSI2OTA1IgorICAgICAgIGlkPSJ0c3BhbjY4NSI+ZHJiZF9lbmRpb193cml0ZV9wcmkoKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHBhdGgKKyAgICAgZD0iTSAxMjAwMCwxMzYwMiBMIDExOTAwLDEzMzAyIEwgMTIxMDAsMTMzMDIgTCAxMjAwMCwxMzYwMiB6IgorICAgICBpZD0icGF0aDY5NSIKKyAgICAgc3R5bGU9ImZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxwYXRoCisgICAgIGQ9Ik0gMTIwMDAsMTI4MDIgTCAxMjAwMCwxMzM2MiIKKyAgICAgaWQ9InBhdGg2OTkiCisgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlIiAvPgorICA8cGF0aAorICAgICBkPSJNIDEyMDAwLDEyODAyIEwgMTE2ODYsMTI4NDEgTCAxMTcyNSwxMjY0NSBMIDEyMDAwLDEyODAyIHoiCisgICAgIGlkPSJwYXRoNzExIgorICAgICBzdHlsZT0iZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZSIgLz4KKyAgPHBhdGgKKyAgICAgZD0iTSA4MDAwLDEyMDAyIEwgMTE3NjUsMTI3NTUiCisgICAgIGlkPSJwYXRoNzE1IgorICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZSIgLz4KKyAgPHRleHQKKyAgICAgeD0iLTIxNTUuNTI2NiIKKyAgICAgeT0iMTIwMS41OTY0IgorICAgICB0cmFuc2Zvcm09Im1hdHJpeCgwLjk4OTUyNTgsLTAuMTQ0MzU2MiwwLjE0NDM1NjIsMC45ODk1MjU4LDAsMCkiCisgICAgIGlkPSJ0ZXh0NzMzIgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iNzIwMi40NzM2IDc0MzEuNDczNiA3NjA4LjQ3MzYgNzY5Ny40NzM2IDc4NzUuNDczNiA4MTA0LjQ3MzYgODI4Mi40NzM2IDg0NTkuNDczNiA4NTMxLjQ3MzYiCisgICAgICAgeT0iMTU0NTQuNTk3IgorICAgICAgIGlkPSJ0c3BhbjczNSI+RGF0YVJlcGx5PC90c3Bhbj4KKyAgPC90ZXh0PgorICA8cGF0aAorICAgICBkPSJNIDgwMDAsMTQ2MDIgTCA4MjgyLDE0NDU5IEwgODMxMiwxNDY1NiBMIDgwMDAsMTQ2MDIgeiIKKyAgICAgaWQ9InBhdGg3NDUiCisgICAgIHN0eWxlPSJmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlIiAvPgorICA8cGF0aAorICAgICBkPSJNIDEyMDAwLDE0MDAyIEwgODIzNywxNDU2NiIKKyAgICAgaWQ9InBhdGg3NDkiCisgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlIiAvPgorICA8dGV4dAorICAgICB4PSIyMjgwLjM4MDQiCisgICAgIHk9Ii0yMTAzLjIxNDEiCisgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAuOTc4ODY3NCwwLjIwNDQ5NjEsLTAuMjA0NDk2MSwwLjk3ODg2NzQsMCwwKSIKKyAgICAgaWQ9InRleHQ3NjciCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwODAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSIxMTMxNi4zODEgMTE1NDUuMzgxIDExNzIyLjM4MSAxMTgxMS4zODEgMTE5ODkuMzgxIDEyMjE4LjM4MSAxMjM5Ni4zODEgMTI1NzMuMzgxIDEyNzUxLjM4MSAxMjkyOS4zODEgMTMwOTAuMzgxIgorICAgICAgIHk9Ijk5ODEuNzg2MSIKKyAgICAgICBpZD0idHNwYW43NjkiPkRhdGFSZXF1ZXN0PC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dAorICAgICBpZD0idGV4dDc4MyIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjQ3NDYgNDkyNCA1MDMwIDUyMDcgNTM4NSA1NTYzIDU4MjYgNjAwMyA2MTY0IDYzNDIgNjUyMCA2NjI2IDY4MDMgNjk4MSA3MTU5IDczMzcgNzQ5OCA3NTg3IDc2OTIiCisgICAgICAgeT0iMTE1MDYiCisgICAgICAgaWQ9InRzcGFuNzg1Ij5kcmJkX21ha2VfcmVxdWVzdCgpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dAorICAgICBpZD0idGV4dDc5OSIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjEyMjAwIDEyMzA2IDEyNDg0IDEyNjQ1IDEyODIyIDEyODk0IDEzMDU1IDEzMjMzIDEzNDExIDEzNjM5IDEzODE3IDEzOTA2IDE0MDg0IDE0MzEyIDE0NDkwIDE0NjY4IDE0ODQ2IDE1MDI0IDE1MTg1IDE1MjczIDE1Mzc5IgorICAgICAgIHk9IjEyODA3IgorICAgICAgIGlkPSJ0c3BhbjgwMSI+cmVjZWl2ZV9EYXRhUmVxdWVzdCgpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dAorICAgICBpZD0idGV4dDgxNSIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjEyMjAwIDEyMzc4IDEyNDg0IDEyNjYxIDEyODM5IDEzMDE3IDEzMTk1IDEzMzczIDEzNTUwIDEzNjIyIDEzODAwIDEzOTc4IDE0MDg0IDE0MjYyIDE0NDM5IDE0NjE3IDE0Nzk1IDE0OTU2IDE1MTM0IDE1Mjk1IDE1NDAwIgorICAgICAgIHk9IjEzNjA3IgorICAgICAgIGlkPSJ0c3BhbjgxNyI+ZHJiZF9lbmRpb19yZWFkX3NlYygpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dAorICAgICBpZD0idGV4dDgzMSIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDA4MDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjEyMTkyIDEyNDIxIDEyNTk4IDEyNzc2IDEyOTU0IDEzMTMyIDEzMzEwIDEzNDg3IDEzNjY1IDEzODQzIDE0MDIxIDE0MTEwIDE0Mjg4IDE0NDY1IDE0NTcxIDE0NzQ5IDE0OTI3IDE1MDMzIgorICAgICAgIHk9IjE0MDA4IgorICAgICAgIGlkPSJ0c3BhbjgzMyI+d19lX2VuZF9kYXRhX3JlcSgpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8ZworICAgICBpZD0iZzgzNSIKKyAgICAgc3R5bGU9InZpc2liaWxpdHk6dmlzaWJsZSI+CisgICAgPGRlc2MKKyAgICAgICBpZD0iZGVzYzgzNyI+RHJhd2luZzwvZGVzYz4KKyAgICA8dGV4dAorICAgICAgIGlkPSJ0ZXh0ODQ3IgorICAgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwODAwMDtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgICAgPHRzcGFuCisgICAgICAgICB4PSI0ODg1IDQ5OTEgNTE2OSA1MzMwIDU1MDcgNTU3OSA1NzQwIDU5MTggNjA5NiA2MzI0IDY1MDIgNjU5MSA2NzY5IDY5OTcgNzE3NSA3MzUzIDc0MjUgNzU4NiA3NjkyIgorICAgICAgICAgeT0iMTQ2MDciCisgICAgICAgICBpZD0idHNwYW44NDkiPnJlY2VpdmVfRGF0YVJlcGx5KCk8L3RzcGFuPgorICAgIDwvdGV4dD4KKyAgPC9nPgorICA8dGV4dAorICAgICBpZD0idGV4dDg2MyIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTo0MjNweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDAwMDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjgwMDAgODMwNSA4Mzk4IDg2MTAgODgyMSA4OTE0IDkxNTEgOTM2MyA5NTc1IDk2OTMgOTgzMyAxMDA3MCAxMDMwNyAxMDU0NCAxMDY2MyAxMDc4MSAxMTAxOCAxMTI1NSAxMTQ5MyAxMTYzMiAxMTg2OSAxMjEwNiIKKyAgICAgICB5PSIxMDg3OCIKKyAgICAgICBpZD0idHNwYW44NjUiPkRpc2tsZXNzIHJlYWQsIDUxMi0zMks8L3RzcGFuPgorICA8L3RleHQ+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0ODc5IgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDgwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iNTAyOSA1MjU4IDU0MzUgNTU5NiA1Nzc0IDU5NTIgNjEzMCA2MzA3IDY0MTMgNjU5MSA2NzY5IDY5NDcgNzEyNSA3MjMwIDc0MDggNzU4NiA3NjkyIgorICAgICAgIHk9IjEyMDA0IgorICAgICAgIGlkPSJ0c3Bhbjg4MSI+d19zZW5kX3JlYWRfcmVxKCk8L3RzcGFuPgorICA8L3RleHQ+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0ODk1IgorICAgICBzdHlsZT0iZm9udC1zaXplOjQyM3B4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDAwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iNjk2MSA3MjY2IDc1NzEgNzg1NCA4MTU5IDgyNzggODUxNSA4NjMzIDg4NzAgOTEwNyA5MjI2IDk0NjMgOTU4MSA5NzAwIDk3OTMgMTAwMzAiCisgICAgICAgeT0iMjgwNiIKKyAgICAgICBpZD0idHNwYW44OTciPkRSQkQgOCBkYXRhIGZsb3c8L3RzcGFuPgorICA8L3RleHQ+CisgIDxwYXRoCisgICAgIGQ9Ik0gMzkwMCw1MzAwIEwgMzcwMCw1MzAwIEwgMzcwMCw3MDAwIEwgMzkwMCw3MDAwIgorICAgICBpZD0icGF0aDkwNyIKKyAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDxwYXRoCisgICAgIGQ9Ik0gMzkwMCwxNzYwMCBMIDM3MDAsMTc2MDAgTCAzNzAwLDIyMDAwIEwgMzkwMCwyMjAwMCIKKyAgICAgaWQ9InBhdGg5MTkiCisgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7dmlzaWJpbGl0eTp2aXNpYmxlIiAvPgorICA8cGF0aAorICAgICBkPSJNIDE2MTAwLDIwMDAwIEwgMTYzMDAsMjAwMDAgTCAxNjMwMCwxODUwMCBMIDE2MTAwLDE4NTAwIgorICAgICBpZD0icGF0aDkzMSIKKyAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDt2aXNpYmlsaXR5OnZpc2libGUiIC8+CisgIDx0ZXh0CisgICAgIGlkPSJ0ZXh0OTQ3IgorICAgICBzdHlsZT0iZm9udC1zaXplOjMxOHB4O2ZvbnQtd2VpZ2h0OjQwMDtmaWxsOiMwMDAwMDA7dmlzaWJpbGl0eTp2aXNpYmxlO2ZvbnQtZmFtaWx5OkhlbHZldGljYSBlbWJlZGRlZCI+CisgICAgPHRzcGFuCisgICAgICAgeD0iMjEyNiAyMzA0IDIzNzYgMjU1NCAyNzMxIDI5MDkgMzA4NyAzMTU5IDMzMzcgMzUxNSAzNTg3IDM3NjQgMzg3MCIKKyAgICAgICB5PSI1MjAyIgorICAgICAgIGlkPSJ0c3Bhbjk0OSI+YWxfYmVnaW5faW8oKTwvdHNwYW4+CisgIDwvdGV4dD4KKyAgPHRleHQKKyAgICAgaWQ9InRleHQ5NjMiCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwMDAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSIxNjMyIDE4MTAgMTg4MiAyMDYwIDIyMjAgMjM5OCAyNjYxIDI4MzkgMjkxMCAzMDg4IDMxNzcgMzM1NSAzNTMzIDM2MDUgMzc4MyAzODg4IgorICAgICAgIHk9IjczMzEiCisgICAgICAgaWQ9InRzcGFuOTY1Ij5hbF9jb21wbGV0ZV9pbygpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dAorICAgICBpZD0idGV4dDk3OSIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDAwMDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjIxMjYgMjIzMiAyMzkzIDI1NzEgMjc0OCAyOTI2IDMxMDQgMzE3NiAzMzU0IDM1MzEgMzYwMyAzNzgxIDM4ODciCisgICAgICAgeT0iMTc0MzEiCisgICAgICAgaWQ9InRzcGFuOTgxIj5yc19iZWdpbl9pbygpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dAorICAgICBpZD0idGV4dDk5NSIKKyAgICAgc3R5bGU9ImZvbnQtc2l6ZTozMThweDtmb250LXdlaWdodDo0MDA7ZmlsbDojMDAwMDAwO3Zpc2liaWxpdHk6dmlzaWJsZTtmb250LWZhbWlseTpIZWx2ZXRpY2EgZW1iZWRkZWQiPgorICAgIDx0c3BhbgorICAgICAgIHg9IjE2MjYgMTczMiAxODkzIDIwNzEgMjIzMSAyNDA5IDI2NzIgMjg0OSAyOTIxIDMwOTkgMzE4OCAzMzY2IDM1NDQgMzYxNiAzNzkzIDM4OTkiCisgICAgICAgeT0iMjIzMzEiCisgICAgICAgaWQ9InRzcGFuOTk3Ij5yc19jb21wbGV0ZV9pbygpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dAorICAgICBpZD0idGV4dDEwMTEiCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwMDAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSIxNjAyNyAxNjEzMyAxNjI5NCAxNjQ3MiAxNjY0OSAxNjgyNyAxNzAwNSAxNzA3NyAxNzI1NSAxNzQzMiAxNzUwNCAxNzY4MiAxNzc4OCIKKyAgICAgICB5PSIxODQwMiIKKyAgICAgICBpZD0idHNwYW4xMDEzIj5yc19iZWdpbl9pbygpPC90c3Bhbj4KKyAgPC90ZXh0PgorICA8dGV4dAorICAgICBpZD0idGV4dDEwMjciCisgICAgIHN0eWxlPSJmb250LXNpemU6MzE4cHg7Zm9udC13ZWlnaHQ6NDAwO2ZpbGw6IzAwMDAwMDt2aXNpYmlsaXR5OnZpc2libGU7Zm9udC1mYW1pbHk6SGVsdmV0aWNhIGVtYmVkZGVkIj4KKyAgICA8dHNwYW4KKyAgICAgICB4PSIxNjExNSAxNjIyMSAxNjM4MiAxNjU2MCAxNjcyMCAxNjg5OCAxNzE2MSAxNzMzOCAxNzQxMCAxNzU4OCAxNzY3NyAxNzg1NSAxODAzMyAxODEwNSAxODI4MiAxODM4OCIKKyAgICAgICB5PSIyMDMzMSIKKyAgICAgICBpZD0idHNwYW4xMDI5Ij5yc19jb21wbGV0ZV9pbygpPC90c3Bhbj4KKyAgPC90ZXh0PgorPC9zdmc+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L2RyYmQvUkVBRE1FLnR4dCBiL0RvY3VtZW50YXRpb24vYmxvY2tkZXYvZHJiZC9SRUFETUUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyN2IwYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L2RyYmQvUkVBRE1FLnR4dApAQCAtMCwwICsxLDE2IEBACitEZXNjcmlwdGlvbgorCisgIERSQkQgaXMgYSBzaGFyZWQtbm90aGluZywgc3luY2hyb25vdXNseSByZXBsaWNhdGVkIGJsb2NrIGRldmljZS4gSXQKKyAgaXMgZGVzaWduZWQgdG8gc2VydmUgYXMgYSBidWlsZGluZyBibG9jayBmb3IgaGlnaCBhdmFpbGFiaWxpdHkKKyAgY2x1c3RlcnMgYW5kIGluIHRoaXMgY29udGV4dCwgaXMgYSAiZHJvcC1pbiIgcmVwbGFjZW1lbnQgZm9yIHNoYXJlZAorICBzdG9yYWdlLiBTaW1wbGlzdGljYWxseSwgeW91IGNvdWxkIHNlZSBpdCBhcyBhIG5ldHdvcmsgUkFJRCAxLgorCisgIFBsZWFzZSB2aXNpdCBodHRwOi8vd3d3LmRyYmQub3JnIHRvIGZpbmQgb3V0IG1vcmUuCisKK1RoZSBoZXJlIGluY2x1ZGVkIGZpbGVzIGFyZSBpbnRlbmRlZCB0byBoZWxwIHVuZGVyc3RhbmQgdGhlIGltcGxlbWVudGF0aW9uCisKK0RSQkQtOC4zLWRhdGEtcGFja2V0cy5zdmcsIERSQkQtZGF0YS1wYWNrZXRzLnN2ZyAgCisgIHJlbGF0ZXMgc29tZSBmdW5jdGlvbnMsIGFuZCB3cml0ZSBwYWNrZXRzLgorCitjb25uLXN0YXRlcy04LmRvdCwgZGlzay1zdGF0ZXMtOC5kb3QsIG5vZGUtc3RhdGVzLTguZG90CisgIFRoZSBzdWIgZ3JhcGhzIG9mIERSQkQncyBzdGF0ZSB0cmFuc2l0aW9ucwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibG9ja2Rldi9kcmJkL2Nvbm4tc3RhdGVzLTguZG90IGIvRG9jdW1lbnRhdGlvbi9ibG9ja2Rldi9kcmJkL2Nvbm4tc3RhdGVzLTguZG90Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNWU4Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L2RyYmQvY29ubi1zdGF0ZXMtOC5kb3QKQEAgLTAsMCArMSwxOCBAQAorZGlncmFwaCBjb25uX3N0YXRlcyB7CisJU3RhbmRBbGxvbmUgIC0+IFdGQ29ubmVjdGlvbiAgIFsgbGFiZWwgPSAiaW9jdGxfc2V0X25ldCgpIiBdCisJV0ZDb25uZWN0aW9uIC0+IFVuY29ubmVjdGVkICAgIFsgbGFiZWwgPSAidW5hYmxlIHRvIGJpbmQoKSIgXQorCVdGQ29ubmVjdGlvbiAtPiBXRlJlcG9ydFBhcmFtcyBbIGxhYmVsID0gImluIGNvbm5lY3QoKSBhZnRlciBhY2NlcHQiIF0KKwlXRlJlcG9ydFBhcmFtcyAtPiBTdGFuZEFsbG9uZSAgWyBsYWJlbCA9ICJjaGVja3MgaW4gcmVjZWl2ZV9wYXJhbSgpIiBdCisJV0ZSZXBvcnRQYXJhbXMgLT4gQ29ubmVjdGVkICAgIFsgbGFiZWwgPSAiaW4gcmVjZWl2ZV9wYXJhbSgpIiBdCisJV0ZSZXBvcnRQYXJhbXMgLT4gV0ZCaXRNYXBTICAgIFsgbGFiZWwgPSAic3luY19oYW5kc2hha2UoKSIgXQorCVdGUmVwb3J0UGFyYW1zIC0+IFdGQml0TWFwVCAgICBbIGxhYmVsID0gInN5bmNfaGFuZHNoYWtlKCkiIF0KKwlXRkJpdE1hcFMgLT4gU3luY1NvdXJjZSAgICAgICAgWyBsYWJlbCA9ICJyZWNlaXZlX2JpdG1hcCgpIiBdCisJV0ZCaXRNYXBUIC0+IFN5bmNUYXJnZXQgICAgICAgIFsgbGFiZWwgPSAicmVjZWl2ZV9iaXRtYXAoKSIgXQorCVN5bmNTb3VyY2UgLT4gQ29ubmVjdGVkCisJU3luY1RhcmdldCAtPiBDb25uZWN0ZWQKKwlTeW5jU291cmNlIC0+IFBhdXNlZFN5bmNTCisJU3luY1RhcmdldCAtPiBQYXVzZWRTeW5jVAorCVBhdXNlZFN5bmNTIC0+IFN5bmNTb3VyY2UKKwlQYXVzZWRTeW5jVCAtPiBTeW5jVGFyZ2V0CisJQ29ubmVjdGVkICAgLT4gV0ZDb25uZWN0aW9uICAgIFsgbGFiZWwgPSAiKiBvbiBuZXR3b3JrIGVycm9yIiBdCit9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L2RyYmQvZGF0YS1zdHJ1Y3R1cmUtdjkudHh0IGIvRG9jdW1lbnRhdGlvbi9ibG9ja2Rldi9kcmJkL2RhdGEtc3RydWN0dXJlLXY5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTUyYTBlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9ibG9ja2Rldi9kcmJkL2RhdGEtc3RydWN0dXJlLXY5LnR4dApAQCAtMCwwICsxLDM4IEBACitUaGlzIGRlc2NyaWJlcyB0aGUgaW4ga2VybmVsIGRhdGEgc3RydWN0dXJlIGZvciBEUkJELTkuIFN0YXJ0aW5nIHdpdGgKK0xpbnV4IHYzLjE0IHdlIGFyZSByZW9yZ2FuaXppbmcgRFJCRCB0byB1c2UgdGhpcyBkYXRhIHN0cnVjdHVyZS4KKworQmFzaWMgRGF0YSBTdHJ1Y3R1cmUKKz09PT09PT09PT09PT09PT09PT09CisKK0Egbm9kZSBoYXMgYSBudW1iZXIgb2YgRFJCRCByZXNvdXJjZXMuICBFYWNoIHN1Y2ggcmVzb3VyY2UgaGFzIGEgbnVtYmVyIG9mCitkZXZpY2VzIChha2Egdm9sdW1lcykgYW5kIGNvbm5lY3Rpb25zIHRvIG90aGVyIG5vZGVzICgicGVlciBub2RlcyIpLiBFYWNoIERSQkQKK2RldmljZSBpcyByZXByZXNlbnRlZCBieSBhIGJsb2NrIGRldmljZSBsb2NhbGx5LgorCitUaGUgRFJCRCBvYmplY3RzIGFyZSBpbnRlcmNvbm5lY3RlZCB0byBmb3JtIGEgbWF0cml4IGFzIGRlcGljdGVkIGJlbG93OyBhCitkcmJkX3BlZXJfZGV2aWNlIG9iamVjdCBzaXRzIGF0IGVhY2ggaW50ZXJzZWN0aW9uIGJldHdlZW4gYSBkcmJkX2RldmljZSBhbmQgYQorZHJiZF9jb25uZWN0aW9uOgorCisgIC8tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLi4uLi4rLS0tLS0tLS0tLS0tLS0tXAorICB8ICAgcmVzb3VyY2UgICB8ICAgIGRldmljZSAgICAgfCAgICAgfCAgICBkZXZpY2UgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsuLi4uListLS0tLS0tLS0tLS0tLS0rCisgIHwgIGNvbm5lY3Rpb24gIHwgIHBlZXJfZGV2aWNlICB8ICAgICB8ICBwZWVyX2RldmljZSAgfAorICArLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy4uLi4uKy0tLS0tLS0tLS0tLS0tLSsKKyAgOiAgICAgICAgICAgICAgOiAgICAgICAgICAgICAgIDogICAgIDogICAgICAgICAgICAgICA6CisgIDogICAgICAgICAgICAgIDogICAgICAgICAgICAgICA6ICAgICA6ICAgICAgICAgICAgICAgOgorICArLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy4uLi4uKy0tLS0tLS0tLS0tLS0tLSsKKyAgfCAgY29ubmVjdGlvbiAgfCAgcGVlcl9kZXZpY2UgIHwgICAgIHwgIHBlZXJfZGV2aWNlICB8CisgIFwtLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLi4uLi4rLS0tLS0tLS0tLS0tLS0tLworCitJbiB0aGlzIHRhYmxlLCBob3Jpem9udGFsbHksIGRldmljZXMgY2FuIGJlIGFjY2Vzc2VkIGZyb20gcmVzb3VyY2VzIGJ5IHRoZWlyCit2b2x1bWUgbnVtYmVyLiAgTGlrZXdpc2UsIHBlZXJfZGV2aWNlcyBjYW4gYmUgYWNjZXNzZWQgZnJvbSBjb25uZWN0aW9ucyBieQordGhlaXIgdm9sdW1lIG51bWJlci4gIE9iamVjdHMgaW4gdGhlIHZlcnRpY2FsIGRpcmVjdGlvbiBhcmUgY29ubmVjdGVkIGJ5IGRvdWJsZQorbGlua2VkIGxpc3RzLiAgVGhlcmUgYXJlIGJhY2sgcG9pbnRlcnMgZnJvbSBwZWVyX2RldmljZXMgdG8gdGhlaXIgY29ubmVjdGlvbnMgYQorZGV2aWNlcywgYW5kIGZyb20gY29ubmVjdGlvbnMgYW5kIGRldmljZXMgdG8gdGhlaXIgcmVzb3VyY2UuCisKK0FsbCByZXNvdXJjZXMgYXJlIGluIHRoZSBkcmJkX3Jlc291cmNlcyBkb3VibGUtbGlua2VkIGxpc3QuICBJbiBhZGRpdGlvbiwgYWxsCitkZXZpY2VzIGNhbiBiZSBhY2Nlc3NlZCBieSB0aGVpciBtaW5vciBkZXZpY2UgbnVtYmVyIHZpYSB0aGUgZHJiZF9kZXZpY2VzIGlkci4KKworVGhlIGRyYmRfcmVzb3VyY2UsIGRyYmRfY29ubmVjdGlvbiwgYW5kIGRyYmRfZGV2aWNlIG9iamVjdHMgYXJlIHJlZmVyZW5jZQorY291bnRlZC4gIFRoZSBwZWVyX2RldmljZSBvYmplY3RzIG9ubHkgc2VydmUgdG8gZXN0YWJsaXNoIHRoZSBsaW5rcyBiZXR3ZWVuCitkZXZpY2VzIGFuZCBjb25uZWN0aW9uczsgdGhlaXIgbGlmZXRpbWUgaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGlmZXRpbWUgb2YgdGhlCitkZXZpY2UgYW5kIGNvbm5lY3Rpb24gd2hpY2ggdGhleSByZWZlcmVuY2UuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L2RyYmQvZGlzay1zdGF0ZXMtOC5kb3QgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L2RyYmQvZGlzay1zdGF0ZXMtOC5kb3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA2Y2ZiNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYmxvY2tkZXYvZHJiZC9kaXNrLXN0YXRlcy04LmRvdApAQCAtMCwwICsxLDE2IEBACitkaWdyYXBoIGRpc2tfc3RhdGVzIHsKKwlEaXNrbGVzcyAtPiBJbmNvbnNpc3RlbnQgICAgICAgWyBsYWJlbCA9ICJpb2N0bF9zZXRfZGlzaygpIiBdCisJRGlza2xlc3MgLT4gQ29uc2lzdGVudCAgICAgICAgIFsgbGFiZWwgPSAiaW9jdGxfc2V0X2Rpc2soKSIgXQorCURpc2tsZXNzIC0+IE91dGRhdGVkICAgICAgICAgICBbIGxhYmVsID0gImlvY3RsX3NldF9kaXNrKCkiIF0KKwlDb25zaXN0ZW50IC0+IE91dGRhdGVkICAgICAgICAgWyBsYWJlbCA9ICJyZWNlaXZlX3BhcmFtKCkiIF0KKwlDb25zaXN0ZW50IC0+IFVwVG9EYXRlICAgICAgICAgWyBsYWJlbCA9ICJyZWNlaXZlX3BhcmFtKCkiIF0KKwlDb25zaXN0ZW50IC0+IEluY29uc2lzdGVudCAgICAgWyBsYWJlbCA9ICJzdGFydCByZXN5bmMiIF0KKwlPdXRkYXRlZCAgIC0+IEluY29uc2lzdGVudCAgICAgWyBsYWJlbCA9ICJzdGFydCByZXN5bmMiIF0KKwlVcFRvRGF0ZSAgIC0+IEluY29uc2lzdGVudCAgICAgWyBsYWJlbCA9ICJpb2N0bF9yZXBsaWNhdGUiIF0KKwlJbmNvbnNpc3RlbnQgLT4gVXBUb0RhdGUgICAgICAgWyBsYWJlbCA9ICJyZXN5bmMgY29tcGxldGVkIiBdCisJQ29uc2lzdGVudCAtPiBGYWlsZWQgICAgICAgICAgIFsgbGFiZWwgPSAiaW8gY29tcGxldGlvbiBlcnJvciIgXQorCU91dGRhdGVkICAgLT4gRmFpbGVkICAgICAgICAgICBbIGxhYmVsID0gImlvIGNvbXBsZXRpb24gZXJyb3IiIF0KKwlVcFRvRGF0ZSAgIC0+IEZhaWxlZCAgICAgICAgICAgWyBsYWJlbCA9ICJpbyBjb21wbGV0aW9uIGVycm9yIiBdCisJSW5jb25zaXN0ZW50IC0+IEZhaWxlZCAgICAgICAgIFsgbGFiZWwgPSAiaW8gY29tcGxldGlvbiBlcnJvciIgXQorCUZhaWxlZCAtPiBEaXNrbGVzcyAgICAgICAgICAgICBbIGxhYmVsID0gInNlbmRpbmcgbm90aWZ5IHRvIHBlZXIiIF0KK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYmxvY2tkZXYvZHJiZC9kcmJkLWNvbm5lY3Rpb24tc3RhdGUtb3ZlcnZpZXcuZG90IGIvRG9jdW1lbnRhdGlvbi9ibG9ja2Rldi9kcmJkL2RyYmQtY29ubmVjdGlvbi1zdGF0ZS1vdmVydmlldy5kb3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ5Y2YwYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYmxvY2tkZXYvZHJiZC9kcmJkLWNvbm5lY3Rpb24tc3RhdGUtb3ZlcnZpZXcuZG90CkBAIC0wLDAgKzEsODUgQEAKKy8vIHZpbTogc2V0IHN3PTIgc3RzPTIgOgorZGlncmFwaCB7CisgIHJhbmtkaXI9QlQKKyAgYmdjb2xvcj13aGl0ZQorCisgIG5vZGUgW3NoYXBlPXBsYWludGV4dF0KKyAgbm9kZSBbZm9udGNvbG9yPWJsYWNrXQorCisgIFN0YW5kQWxvbmUgICAgIFsgc3R5bGU9ZmlsbGVkLGZpbGxjb2xvcj1ncmF5LGxhYmVsPVN0YW5kQWxvbmUgXQorCisgIG5vZGUgW2ZvbnRjb2xvcj1saWdodGdyYXldCisKKyAgVW5jb25uZWN0ZWQgICAgWyBsYWJlbD1VbmNvbm5lY3RlZCBdCisKKyAgQ29tbVRyb3VibGUgWyBzaGFwZT1yZWNvcmQsCisgICAgbGFiZWw9Intjb21tdW5pY2F0aW9uIGxvc3N8e1RpbWVvdXR8QnJva2VuUGlwZXxOZXR3b3JrRmFpbHVyZX19IiBdCisKKyAgbm9kZSBbZm9udGNvbG9yPWdyYXldCisKKyAgc3ViZ3JhcGggY2x1c3Rlcl90cnlfY29ubmVjdCB7CisgICAgbGFiZWw9InRyeSB0byBjb25uZWN0LCBoYW5kc2hha2UiCisgICAgcmFuaz1tYXgKKyAgICBXRkNvbm5lY3Rpb24gICBbIGxhYmVsPVdGQ29ubmVjdGlvbiBdCisgICAgV0ZSZXBvcnRQYXJhbXMgWyBsYWJlbD1XRlJlcG9ydFBhcmFtcyBdCisgIH0KKworICBUZWFyRG93biAgICAgICBbIGxhYmVsPVRlYXJEb3duIF0KKworICBDb25uZWN0ZWQgICAgICBbIGxhYmVsPUNvbm5lY3RlZCxzdHlsZT1maWxsZWQsZmlsbGNvbG9yPWdyZWVuLGZvbnRjb2xvcj1ibGFjayBdCisKKyAgbm9kZSBbZm9udGNvbG9yPWxpZ2h0Ymx1ZV0KKworICBTdGFydGluZ1N5bmNTICBbIGxhYmVsPVN0YXJ0aW5nU3luY1MgXQorICBTdGFydGluZ1N5bmNUICBbIGxhYmVsPVN0YXJ0aW5nU3luY1QgXQorCisgIHN1YmdyYXBoIGNsdXN0ZXJfYml0bWFwX2V4Y2hhbmdlIHsKKyAgICBub2RlIFtmb250Y29sb3I9cmVkXQorICAgIGZvbnRjb2xvcj1yZWQKKyAgICBsYWJlbD0ibmV3IGFwcGxpY2F0aW9uIChXUklURT8pIHJlcXVlc3RzIGJsb2NrZWRcbHdoaWxlIGJpdG1hcCBpcyBleGNoYW5nZWQiCisKKyAgICBXRkJpdE1hcFQgICAgICBbIGxhYmVsPVdGQml0TWFwVCBdCisgICAgV0ZTeW5jVVVJRCAgICAgWyBsYWJlbD1XRlN5bmNVVUlEIF0KKyAgICBXRkJpdE1hcFMgICAgICBbIGxhYmVsPVdGQml0TWFwUyBdCisgIH0KKworICBub2RlIFtmb250Y29sb3I9Ymx1ZV0KKworICBjbHVzdGVyX3Jlc3luYyBbIHNoYXBlPXJlY29yZCxsYWJlbD0iezxhbnk+cmVzeW5jaHJvbmlzYXRpb24gcHJvY2VzcyBydW5uaW5nXGwnY29uY3VycmVudCcgYXBwbGljYXRpb24gcmVxdWVzdHMgYWxsb3dlZHx7ezxUPlBhdXNlZFN5bmNUXG5TeW5jVGFyZ2V0fXx7PFM+UGF1c2VkU3luY1NcblN5bmNTb3VyY2V9fX0iIF0KKworICBub2RlIFtzaGFwZT1ib3gsZm9udGNvbG9yPWJsYWNrXQorCisgIC8vIGRyYmRhZG0gW2xhYmVsPSJkcmJkYWRtIGNvbm5lY3QiXQorICAvLyBoYW5kc2hha2UgW2xhYmVsPSJkcmJkX2Nvbm5lY3QoKVxuZHJiZF9kb19oYW5kc2hha2VcbmRyYmRfc3luY19oYW5kc2hha2UoKSBldGMuIl0KKyAgLy8gY29tbV9lcnJvciBbbGFiZWw9ImNvbW11bmljYXRpb24gdHJvdWJsZSJdCisKKyAgLy8KKyAgLy8gZWRnZXMKKyAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBTdGFuZEFsb25lIC0+IFVuY29ubmVjdGVkIFsgbGFiZWw9ImRyYmRhZG0gY29ubmVjdCIgXQorICBVbmNvbm5lY3RlZCAtPiBTdGFuZEFsb25lICBbIGxhYmVsPSJkcmJkYWRtIGRpc2Nvbm5lY3RcbG9yIHNlcmlvdXMgY29tbXVuaWNhdGlvbiB0cm91YmxlIiBdCisgIFVuY29ubmVjdGVkIC0+IFdGQ29ubmVjdGlvbiBbIGxhYmVsPSJyZWNlaXZlciB0aHJlYWQgaXMgc3RhcnRlZCIgXQorICBXRkNvbm5lY3Rpb24gLT4gV0ZSZXBvcnRQYXJhbXMgWyBoZWFkbGFiZWw9ImFjY2VwdCgpXGxhbmQvb3IgICAgICAgICAgICAgICAgICAgICAgICBcbGNvbm5lY3QoKVxsIiBdCisKKyAgV0ZSZXBvcnRQYXJhbXMgLT4gU3RhbmRBbG9uZSBbIGxhYmVsPSJkdXJpbmcgaGFuZHNoYWtlXGxwZWVycyBkbyBub3QgYWdyZWVcbGFib3V0IHNvbWV0aGluZyBlc3NlbnRpYWwiIF0KKyAgV0ZSZXBvcnRQYXJhbXMgLT4gQ29ubmVjdGVkIFsgbGFiZWw9ImRhdGEgaWRlbnRpY2FsXGxubyBzeW5jIG5lZWRlZCIsY29sb3I9Z3JlZW4sZm9udGNvbG9yPWdyZWVuIF0KKworICAgIFdGUmVwb3J0UGFyYW1zIC0+IFdGQml0TWFwUworICAgIFdGUmVwb3J0UGFyYW1zIC0+IFdGQml0TWFwVAorICAgIFdGQml0TWFwVCAtPiBXRlN5bmNVVUlEIFttaW5sZW49MC4xLGNvbnN0cmFpbnQ9ZmFsc2VdCisKKyAgICAgIFdGQml0TWFwUyAtPiBjbHVzdGVyX3Jlc3luYzpTCisgICAgICBXRlN5bmNVVUlEIC0+IGNsdXN0ZXJfcmVzeW5jOlQKKworICBlZGdlIFtjb2xvcj1ncmVlbl0KKyAgY2x1c3Rlcl9yZXN5bmM6YW55IC0+IENvbm5lY3RlZCBbIGxhYmVsPSJyZXNueWMgZG9uZSIsZm9udGNvbG9yPWdyZWVuIF0KKworICBlZGdlIFtjb2xvcj1yZWRdCisgIFdGUmVwb3J0UGFyYW1zIC0+IENvbW1Ucm91YmxlCisgIENvbm5lY3RlZCAtPiBDb21tVHJvdWJsZQorICBjbHVzdGVyX3Jlc3luYzphbnkgLT4gQ29tbVRyb3VibGUKKyAgZWRnZSBbY29sb3I9YmxhY2tdCisgIENvbW1Ucm91YmxlIC0+IFVuY29ubmVjdGVkIFtsYWJlbD0icmVjZWl2ZXIgdGhyZWFkIGlzIHN0b3BwZWQiIF0KKworfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibG9ja2Rldi9kcmJkL25vZGUtc3RhdGVzLTguZG90IGIvRG9jdW1lbnRhdGlvbi9ibG9ja2Rldi9kcmJkL25vZGUtc3RhdGVzLTguZG90Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhMmIwMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L2RyYmQvbm9kZS1zdGF0ZXMtOC5kb3QKQEAgLTAsMCArMSwxNCBAQAorZGlncmFwaCBub2RlX3N0YXRlcyB7CisJU2Vjb25kYXJ5IC0+IFByaW1hcnkgICAgICAgICAgIFsgbGFiZWwgPSAiaW9jdGxfc2V0X3N0YXRlKCkiIF0KKwlQcmltYXJ5ICAgLT4gU2Vjb25kYXJ5IAkgICAgICAgWyBsYWJlbCA9ICJpb2N0bF9zZXRfc3RhdGUoKSIgXQorfQorCitkaWdyYXBoIHBlZXJfc3RhdGVzIHsKKwlTZWNvbmRhcnkgLT4gUHJpbWFyeSAgICAgICAgICAgWyBsYWJlbCA9ICJyZWN2IHN0YXRlIHBhY2tldCIgXQorCVByaW1hcnkgICAtPiBTZWNvbmRhcnkgCSAgICAgICBbIGxhYmVsID0gInJlY3Ygc3RhdGUgcGFja2V0IiBdCisJUHJpbWFyeSAgIC0+IFVua25vd24gCSAgICAgICBbIGxhYmVsID0gImNvbm5lY3Rpb24gbG9zdCIgXQorCVNlY29uZGFyeSAgLT4gVW5rbm93biAgCSAgICAgICBbIGxhYmVsID0gImNvbm5lY3Rpb24gbG9zdCIgXQorCVVua25vd24gICAtPiBQcmltYXJ5ICAgICAgICAgICBbIGxhYmVsID0gImNvbm5lY3RlZCIgXQorCVVua25vd24gICAtPiBTZWNvbmRhcnkgICAgICAgICBbIGxhYmVsID0gImNvbm5lY3RlZCIgXQorfQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L2Zsb3BweS50eHQgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L2Zsb3BweS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIyNDBmNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYmxvY2tkZXYvZmxvcHB5LnR4dApAQCAtMCwwICsxLDI0NSBAQAorVGhpcyBmaWxlIGRlc2NyaWJlcyB0aGUgZmxvcHB5IGRyaXZlci4KKworRkFRIGxpc3Q6Cis9PT09PT09PT0KKworIEEgRkFRIGxpc3QgbWF5IGJlIGZvdW5kIGluIHRoZSBmZHV0aWxzIHBhY2thZ2UgKHNlZSBiZWxvdyksIGFuZCBhbHNvCithdCA8aHR0cDovL2ZkdXRpbHMubGludXgubHUvZmFxLmh0bWw+LgorCisKK0xJTE8gY29uZmlndXJhdGlvbiBvcHRpb25zIChUaGlua3BhZCB1c2VycywgcmVhZCB0aGlzKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyBUaGUgZmxvcHB5IGRyaXZlciBpcyBjb25maWd1cmVkIHVzaW5nIHRoZSAnZmxvcHB5PScgb3B0aW9uIGluCitsaWxvLiBUaGlzIG9wdGlvbiBjYW4gYmUgdHlwZWQgYXQgdGhlIGJvb3QgcHJvbXB0LCBvciBlbnRlcmVkIGluIHRoZQorbGlsbyBjb25maWd1cmF0aW9uIGZpbGUuCisKKyBFeGFtcGxlOiBJZiB5b3VyIGtlcm5lbCBpcyBjYWxsZWQgbGludXgtMi42LjksIHR5cGUgdGhlIGZvbGxvd2luZyBsaW5lCithdCB0aGUgbGlsbyBib290IHByb21wdCAoaWYgeW91IGhhdmUgYSB0aGlua3BhZCk6CisKKyBsaW51eC0yLjYuOSBmbG9wcHk9dGhpbmtwYWQKKworWW91IG1heSBhbHNvIGVudGVyIHRoZSBmb2xsb3dpbmcgbGluZSBpbiAvZXRjL2xpbG8uY29uZiwgaW4gdGhlIGRlc2NyaXB0aW9uCitvZiBsaW51eC0yLjYuOToKKworIGFwcGVuZCA9ICJmbG9wcHk9dGhpbmtwYWQiCisKKyBTZXZlcmFsIGZsb3BweSByZWxhdGVkIG9wdGlvbnMgbWF5IGJlIGdpdmVuLCBleGFtcGxlOgorCisgbGludXgtMi42LjkgZmxvcHB5PWRhcmluZyBmbG9wcHk9dHdvX2ZkYworIGFwcGVuZCA9ICJmbG9wcHk9ZGFyaW5nIGZsb3BweT10d29fZmRjIgorCisgSWYgeW91IGdpdmUgb3B0aW9ucyBib3RoIGluIHRoZSBsaWxvIGNvbmZpZyBmaWxlIGFuZCBvbiB0aGUgYm9vdAorcHJvbXB0LCB0aGUgb3B0aW9uIHN0cmluZ3Mgb2YgYm90aCBwbGFjZXMgYXJlIGNvbmNhdGVuYXRlZCwgdGhlIGJvb3QKK3Byb21wdCBvcHRpb25zIGNvbWluZyBsYXN0LiBUaGF0J3Mgd2h5IHRoZXJlIGFyZSBhbHNvIG9wdGlvbnMgdG8KK3Jlc3RvcmUgdGhlIGRlZmF1bHQgYmVoYXZpb3IuCisKKworTW9kdWxlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgSWYgeW91IHVzZSB0aGUgZmxvcHB5IGRyaXZlciBhcyBhIG1vZHVsZSwgdXNlIHRoZSBmb2xsb3dpbmcgc3ludGF4OgorbW9kcHJvYmUgZmxvcHB5IGZsb3BweT0iPG9wdGlvbnM+IgorCitFeGFtcGxlOgorIG1vZHByb2JlIGZsb3BweSBmbG9wcHk9Im9tbmlib29rIG1lc3NhZ2VzIgorCisgSWYgeW91IG5lZWQgY2VydGFpbiBvcHRpb25zIGVuYWJsZWQgZXZlcnkgdGltZSB5b3UgbG9hZCB0aGUgZmxvcHB5IGRyaXZlciwKK3lvdSBjYW4gcHV0OgorCisgb3B0aW9ucyBmbG9wcHkgZmxvcHB5PSJvbW5pYm9vayBtZXNzYWdlcyIKKworaW4gYSBjb25maWd1cmF0aW9uIGZpbGUgaW4gL2V0Yy9tb2Rwcm9iZS5kLy4KKworCisgVGhlIGZsb3BweSBkcml2ZXIgcmVsYXRlZCBvcHRpb25zIGFyZToKKworIGZsb3BweT1hc3VzX3BjaQorCVNldHMgdGhlIGJpdCBtYXNrIHRvIGFsbG93IG9ubHkgdW5pdHMgMCBhbmQgMS4gKGRlZmF1bHQpCisKKyBmbG9wcHk9ZGFyaW5nCisJVGVsbHMgdGhlIGZsb3BweSBkcml2ZXIgdGhhdCB5b3UgaGF2ZSBhIHdlbGwgYmVoYXZlZCBmbG9wcHkgY29udHJvbGxlci4KKwlUaGlzIGFsbG93cyBtb3JlIGVmZmljaWVudCBhbmQgc21vb3RoZXIgb3BlcmF0aW9uLCBidXQgbWF5IGZhaWwgb24KKwljZXJ0YWluIGNvbnRyb2xsZXJzLiBUaGlzIG1heSBzcGVlZCB1cCBjZXJ0YWluIG9wZXJhdGlvbnMuCisKKyBmbG9wcHk9MCxkYXJpbmcKKwlUZWxscyB0aGUgZmxvcHB5IGRyaXZlciB0aGF0IHlvdXIgZmxvcHB5IGNvbnRyb2xsZXIgc2hvdWxkIGJlIHVzZWQKKwl3aXRoIGNhdXRpb24uCisKKyBmbG9wcHk9b25lX2ZkYworCVRlbGxzIHRoZSBmbG9wcHkgZHJpdmVyIHRoYXQgeW91IGhhdmUgb25seSBvbmUgZmxvcHB5IGNvbnRyb2xsZXIuCisJKGRlZmF1bHQpCisKKyBmbG9wcHk9dHdvX2ZkYworIGZsb3BweT08YWRkcmVzcz4sdHdvX2ZkYworCVRlbGxzIHRoZSBmbG9wcHkgZHJpdmVyIHRoYXQgeW91IGhhdmUgdHdvIGZsb3BweSBjb250cm9sbGVycy4KKwlUaGUgc2Vjb25kIGZsb3BweSBjb250cm9sbGVyIGlzIGFzc3VtZWQgdG8gYmUgYXQgPGFkZHJlc3M+LgorCVRoaXMgb3B0aW9uIGlzIG5vdCBuZWVkZWQgaWYgdGhlIHNlY29uZCBjb250cm9sbGVyIGlzIGF0IGFkZHJlc3MKKwkweDM3MCwgYW5kIGlmIHlvdSB1c2UgdGhlICdjbW9zJyBvcHRpb24uCisKKyBmbG9wcHk9dGhpbmtwYWQKKwlUZWxscyB0aGUgZmxvcHB5IGRyaXZlciB0aGF0IHlvdSBoYXZlIGEgVGhpbmtwYWQuIFRoaW5rcGFkcyB1c2UgYW4KKwlpbnZlcnRlZCBjb252ZW50aW9uIGZvciB0aGUgZGlzayBjaGFuZ2UgbGluZS4KKworIGZsb3BweT0wLHRoaW5rcGFkCisJVGVsbHMgdGhlIGZsb3BweSBkcml2ZXIgdGhhdCB5b3UgZG9uJ3QgaGF2ZSBhIFRoaW5rcGFkLgorCisgZmxvcHB5PW9tbmlib29rCisgZmxvcHB5PW5vZG1hCisJVGVsbHMgdGhlIGZsb3BweSBkcml2ZXIgbm90IHRvIHVzZSBEbWEgZm9yIGRhdGEgdHJhbnNmZXJzLgorCVRoaXMgaXMgbmVlZGVkIG9uIEhQIE9tbmlib29rcywgd2hpY2ggZG9uJ3QgaGF2ZSBhIHdvcmthYmxlCisJRE1BIGNoYW5uZWwgZm9yIHRoZSBmbG9wcHkgZHJpdmVyLiBUaGlzIG9wdGlvbiBpcyBhbHNvIHVzZWZ1bAorCWlmIHlvdSBmcmVxdWVudGx5IGdldCAiVW5hYmxlIHRvIGFsbG9jYXRlIERNQSBtZW1vcnkiIG1lc3NhZ2VzLgorCUluZGVlZCwgZG1hIG1lbW9yeSBuZWVkcyB0byBiZSBjb250aW51b3VzIGluIHBoeXNpY2FsIG1lbW9yeSwKKwlhbmQgaXMgdGh1cyBoYXJkZXIgdG8gZmluZCwgd2hlcmVhcyBub24tZG1hIGJ1ZmZlcnMgbWF5IGJlCisJYWxsb2NhdGVkIGluIHZpcnR1YWwgbWVtb3J5LiBIb3dldmVyLCBJIGFkdmlzZSBhZ2FpbnN0IHRoaXMgaWYKKwl5b3UgaGF2ZSBhbiBGREMgd2l0aG91dCBhIEZJRk8gKDgyNzJBIG9yIDgyMDcyKS4gODIwNzJBIGFuZAorCWxhdGVyIGFyZSBPSy4gWW91IGFsc28gbmVlZCBhdCBsZWFzdCBhIDQ4NiB0byB1c2Ugbm9kbWEuCisJSWYgeW91IHVzZSBub2RtYSBtb2RlLCBJIHN1Z2dlc3QgeW91IGFsc28gc2V0IHRoZSBGSUZPCisJdGhyZXNob2xkIHRvIDEwIG9yIGxvd2VyLCBpbiBvcmRlciB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIGRhdGEKKwl0cmFuc2ZlciBpbnRlcnJ1cHRzLgorCisJSWYgeW91IGhhdmUgYSBGSUZPLWFibGUgRkRDLCB0aGUgZmxvcHB5IGRyaXZlciBhdXRvbWF0aWNhbGx5CisJZmFsbHMgYmFjayBvbiBub24gRE1BIG1vZGUgaWYgbm8gRE1BLWFibGUgbWVtb3J5IGNhbiBiZSBmb3VuZC4KKwlJZiB5b3Ugd2FudCB0byBhdm9pZCB0aGlzLCBleHBsaWNpdGx5IGFzayBmb3IgJ3llc2RtYScuCisKKyBmbG9wcHk9eWVzZG1hCisJVGVsbHMgdGhlIGZsb3BweSBkcml2ZXIgdGhhdCBhIHdvcmthYmxlIERNQSBjaGFubmVsIGlzIGF2YWlsYWJsZS4KKwkoZGVmYXVsdCkKKworIGZsb3BweT1ub2ZpZm8KKwlEaXNhYmxlcyB0aGUgRklGTyBlbnRpcmVseS4gVGhpcyBpcyBuZWVkZWQgaWYgeW91IGdldCAiQnVzCisJbWFzdGVyIGFyYml0cmF0aW9uIGVycm9yIiBtZXNzYWdlcyBmcm9tIHlvdXIgRXRoZXJuZXQgY2FyZCAob3IKKwlmcm9tIG90aGVyIGRldmljZXMpIHdoaWxlIGFjY2Vzc2luZyB0aGUgZmxvcHB5LgorCisgZmxvcHB5PXVzZWZpZm8KKwlFbmFibGVzIHRoZSBGSUZPLiAoZGVmYXVsdCkKKworIGZsb3BweT08dGhyZXNob2xkPixmaWZvX2RlcHRoCisJU2V0cyB0aGUgRklGTyB0aHJlc2hvbGQuIFRoaXMgaXMgbW9zdGx5IHJlbGV2YW50IGluIERNQQorCW1vZGUuIElmIHRoaXMgaXMgaGlnaGVyLCB0aGUgZmxvcHB5IGRyaXZlciB0b2xlcmF0ZXMgbW9yZQorCWludGVycnVwdCBsYXRlbmN5LCBidXQgaXQgdHJpZ2dlcnMgbW9yZSBpbnRlcnJ1cHRzIChpLmUuIGl0CisJaW1wb3NlcyBtb3JlIGxvYWQgb24gdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSkuIElmIHRoaXMgaXMKKwlsb3dlciwgdGhlIGludGVycnVwdCBsYXRlbmN5IHNob3VsZCBiZSBsb3dlciB0b28gKGZhc3RlcgorCXByb2Nlc3NvcikuIFRoZSBiZW5lZml0IG9mIGEgbG93ZXIgdGhyZXNob2xkIGlzIGxlc3MKKwlpbnRlcnJ1cHRzLgorCisJVG8gdHVuZSB0aGUgZmlmbyB0aHJlc2hvbGQsIHN3aXRjaCBvbiBvdmVyL3VuZGVycnVuIG1lc3NhZ2VzCisJdXNpbmcgJ2Zsb3BweWNvbnRyb2wgLS1tZXNzYWdlcycuIFRoZW4gYWNjZXNzIGEgZmxvcHB5CisJZGlzay4gSWYgeW91IGdldCBhIGh1Z2UgYW1vdW50IG9mICJPdmVyL1VuZGVycnVuIC0gcmV0cnlpbmciCisJbWVzc2FnZXMsIHRoZW4gdGhlIGZpZm8gdGhyZXNob2xkIGlzIHRvbyBsb3cuIFRyeSB3aXRoIGEKKwloaWdoZXIgdmFsdWUsIHVudGlsIHlvdSBvbmx5IGdldCBhbiBvY2Nhc2lvbmFsIE92ZXIvVW5kZXJydW4uCisJSXQgaXMgYSBnb29kIGlkZWEgdG8gY29tcGlsZSB0aGUgZmxvcHB5IGRyaXZlciBhcyBhIG1vZHVsZQorCXdoZW4gZG9pbmcgdGhpcyB0dW5pbmcuIEluZGVlZCwgaXQgYWxsb3dzIHRvIHRyeSBkaWZmZXJlbnQKKwlmaWZvIHZhbHVlcyB3aXRob3V0IHJlYm9vdGluZyB0aGUgbWFjaGluZSBmb3IgZWFjaCB0ZXN0LiBOb3RlCisJdGhhdCB5b3UgbmVlZCB0byBkbyAnZmxvcHB5Y29udHJvbCAtLW1lc3NhZ2VzJyBldmVyeSB0aW1lIHlvdQorCXJlLWluc2VydCB0aGUgbW9kdWxlLgorCisJVXN1YWxseSwgdHVuaW5nIHRoZSBmaWZvIHRocmVzaG9sZCBzaG91bGQgbm90IGJlIG5lZWRlZCwgYXMKKwl0aGUgZGVmYXVsdCAoMHhhKSBpcyByZWFzb25hYmxlLgorCisgZmxvcHB5PTxkcml2ZT4sPHR5cGU+LGNtb3MKKwlTZXRzIHRoZSBDTU9TIHR5cGUgb2YgPGRyaXZlPiB0byA8dHlwZT4uIFRoaXMgaXMgbWFuZGF0b3J5IGlmCisJeW91IGhhdmUgbW9yZSB0aGFuIHR3byBmbG9wcHkgZHJpdmVzIChvbmx5IHR3byBjYW4gYmUKKwlkZXNjcmliZWQgaW4gdGhlIHBoeXNpY2FsIENNT1MpLCBvciBpZiB5b3VyIEJJT1MgdXNlcworCW5vbi1zdGFuZGFyZCBDTU9TIHR5cGVzLiBUaGUgQ01PUyB0eXBlcyBhcmU6CisKKwkJMCAtIFVzZSB0aGUgdmFsdWUgb2YgdGhlIHBoeXNpY2FsIENNT1MKKwkJMSAtIDUgMS80IERECisJCTIgLSA1IDEvNCBIRAorCQkzIC0gMyAxLzIgREQKKwkJNCAtIDMgMS8yIEhECisJCTUgLSAzIDEvMiBFRAorCQk2IC0gMyAxLzIgRUQKKwkgICAgICAgMTYgLSB1bmtub3duIG9yIG5vdCBpbnN0YWxsZWQKKworCShOb3RlOiB0aGVyZSBhcmUgdHdvIHZhbGlkIHR5cGVzIGZvciBFRCBkcml2ZXMuIFRoaXMgaXMgYmVjYXVzZSA1IHdhcworCWluaXRpYWxseSBjaG9zZW4gdG8gcmVwcmVzZW50IGZsb3BweSAqdGFwZXMqLCBhbmQgNiBmb3IgRUQgZHJpdmVzLgorCUFNSSBpZ25vcmVkIHRoaXMsIGFuZCB1c2VkIDUgZm9yIEVEIGRyaXZlcy4gVGhhdCdzIHdoeSB0aGUgZmxvcHB5CisJZHJpdmVyIGhhbmRsZXMgYm90aC4pCisKKyBmbG9wcHk9dW5leHBlY3RlZF9pbnRlcnJ1cHRzCisJUHJpbnQgYSB3YXJuaW5nIG1lc3NhZ2Ugd2hlbiBhbiB1bmV4cGVjdGVkIGludGVycnVwdCBpcyByZWNlaXZlZC4KKwkoZGVmYXVsdCkKKworIGZsb3BweT1ub191bmV4cGVjdGVkX2ludGVycnVwdHMKKyBmbG9wcHk9TDQwU1gKKwlEb24ndCBwcmludCBhIG1lc3NhZ2Ugd2hlbiBhbiB1bmV4cGVjdGVkIGludGVycnVwdCBpcyByZWNlaXZlZC4gVGhpcworCWlzIG5lZWRlZCBvbiBJQk0gTDQwU1ggbGFwdG9wcyBpbiBjZXJ0YWluIHZpZGVvIG1vZGVzLiAoVGhlcmUgc2VlbXMKKwl0byBiZSBhbiBpbnRlcmFjdGlvbiBiZXR3ZWVuIHZpZGVvIGFuZCBmbG9wcHkuIFRoZSB1bmV4cGVjdGVkCisJaW50ZXJydXB0cyBhZmZlY3Qgb25seSBwZXJmb3JtYW5jZSwgYW5kIGNhbiBiZSBzYWZlbHkgaWdub3JlZC4pCisKKyBmbG9wcHk9YnJva2VuX2RjbAorCURvbid0IHVzZSB0aGUgZGlzayBjaGFuZ2UgbGluZSwgYnV0IGFzc3VtZSB0aGF0IHRoZSBkaXNrIHdhcworCWNoYW5nZWQgd2hlbmV2ZXIgdGhlIGRldmljZSBub2RlIGlzIHJlb3BlbmVkLiBOZWVkZWQgb24gc29tZQorCWJveGVzIHdoZXJlIHRoZSBkaXNrIGNoYW5nZSBsaW5lIGlzIGJyb2tlbiBvciB1bnN1cHBvcnRlZC4KKwlUaGlzIHNob3VsZCBiZSByZWdhcmRlZCBhcyBhIHN0b3BnYXAgbWVhc3VyZSwgaW5kZWVkIGl0IG1ha2VzCisJZmxvcHB5IG9wZXJhdGlvbiBsZXNzIGVmZmljaWVudCBkdWUgdG8gdW5uZWVkZWQgY2FjaGUKKwlmbHVzaGluZ3MsIGFuZCBzbGlnaHRseSBtb3JlIHVucmVsaWFibGUuIFBsZWFzZSB2ZXJpZnkgeW91cgorCWNhYmxlLCBjb25uZWN0aW9uIGFuZCBqdW1wZXIgc2V0dGluZ3MgaWYgeW91IGhhdmUgYW55IERDTAorCXByb2JsZW1zLiBIb3dldmVyLCBzb21lIG9sZGVyIGRyaXZlcywgYW5kIGFsc28gc29tZSBsYXB0b3BzCisJYXJlIGtub3duIG5vdCB0byBoYXZlIGEgRENMLgorCisgZmxvcHB5PWRlYnVnCisJUHJpbnQgZGVidWdnaW5nIG1lc3NhZ2VzLgorCisgZmxvcHB5PW1lc3NhZ2VzCisJUHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcyBmb3Igc29tZSBvcGVyYXRpb25zIChkaXNrIGNoYW5nZQorCW5vdGlmaWNhdGlvbnMsIHdhcm5pbmdzIGFib3V0IG92ZXIgYW5kIHVuZGVycnVucywgYW5kIGFib3V0CisJYXV0b2RldGVjdGlvbikuCisKKyBmbG9wcHk9c2lsZW50X2RjbF9jbGVhcgorCVVzZXMgYSBsZXNzIG5vaXN5IHdheSB0byBjbGVhciB0aGUgZGlzayBjaGFuZ2UgbGluZSAod2hpY2gKKwlkb2Vzbid0IGludm9sdmUgc2Vla3MpLiBJbXBsaWVkIGJ5ICdkYXJpbmcnIG9wdGlvbi4KKworIGZsb3BweT08bnI+LGlycQorCVNldHMgdGhlIGZsb3BweSBJUlEgdG8gPG5yPiBpbnN0ZWFkIG9mIDYuCisKKyBmbG9wcHk9PG5yPixkbWEKKwlTZXRzIHRoZSBmbG9wcHkgRE1BIGNoYW5uZWwgdG8gPG5yPiBpbnN0ZWFkIG9mIDIuCisKKyBmbG9wcHk9c2xvdworCVVzZSBQUy8yIHN0ZXBwaW5nIHJhdGU6CisJICIgUFMvMiBmbG9wcGllcyBoYXZlIG11Y2ggc2xvd2VyIHN0ZXAgcmF0ZXMgdGhhbiByZWd1bGFyIGZsb3BwaWVzLgorCSAgIEl0J3MgYmVlbiByZWNvbW1lbmRlZCB0aGF0IHRha2UgYWJvdXQgMS80IG9mIHRoZSBkZWZhdWx0IHNwZWVkCisJICAgaW4gc29tZSBtb3JlIGV4dHJlbWUgY2FzZXMuIgorCisKK1N1cHBvcnRpbmcgdXRpbGl0aWVzIGFuZCBhZGRpdGlvbmFsIGRvY3VtZW50YXRpb246Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgQWRkaXRpb25hbCBwYXJhbWV0ZXJzIG9mIHRoZSBmbG9wcHkgZHJpdmVyIGNhbiBiZSBjb25maWd1cmVkIGF0CitydW50aW1lLiBVdGlsaXRpZXMgd2hpY2ggZG8gdGhpcyBjYW4gYmUgZm91bmQgaW4gdGhlIGZkdXRpbHMgcGFja2FnZS4KK1RoaXMgcGFja2FnZSBhbHNvIGNvbnRhaW5zIGEgbmV3IHZlcnNpb24gb2YgbXRvb2xzIHdoaWNoIGFsbG93cyB0bworYWNjZXNzIGhpZ2ggY2FwYWNpdHkgZGlza3MgKHVwIHRvIDE5OTJLIG9uIGEgaGlnaCBkZW5zaXR5IDMgMS8yIGRpc2shKS4KK0l0IGFsc28gY29udGFpbnMgYWRkaXRpb25hbCBkb2N1bWVudGF0aW9uIGFib3V0IHRoZSBmbG9wcHkgZHJpdmVyLgorCitUaGUgbGF0ZXN0IHZlcnNpb24gY2FuIGJlIGZvdW5kIGF0IGZkdXRpbHMgaG9tZXBhZ2U6CisgaHR0cDovL2ZkdXRpbHMubGludXgubHUKKworVGhlIGZkdXRpbHMgcmVsZWFzZXMgY2FuIGJlIGZvdW5kIGF0OgorIGh0dHA6Ly9mZHV0aWxzLmxpbnV4Lmx1L2Rvd25sb2FkLmh0bWwKKyBodHRwOi8vd3d3LnR1eC5vcmcvcHViL2tuYWZmL2ZkdXRpbHMvCisgZnRwOi8vbWV0YWxhYi51bmMuZWR1L3B1Yi9MaW51eC91dGlscy9kaXNrLW1hbmFnZW1lbnQvCisKK1JlcG9ydGluZyBwcm9ibGVtcyBhYm91dCB0aGUgZmxvcHB5IGRyaXZlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyBJZiB5b3UgaGF2ZSBhIHF1ZXN0aW9uIG9yIGEgYnVnIHJlcG9ydCBhYm91dCB0aGUgZmxvcHB5IGRyaXZlciwgbWFpbAorbWUgYXQgQWxhaW4uS25hZmZAcG9ib3hlcy5jb20gLiBJZiB5b3UgcG9zdCB0byBVc2VuZXQsIHByZWZlcmFibHkgdXNlCitjb21wLm9zLmxpbnV4LmhhcmR3YXJlLiBBcyB0aGUgdm9sdW1lIGluIHRoZXNlIGdyb3VwcyBpcyByYXRoZXIgaGlnaCwKK2JlIHN1cmUgdG8gaW5jbHVkZSB0aGUgd29yZCAiZmxvcHB5IiAob3IgIkZMT1BQWSIpIGluIHRoZSBzdWJqZWN0CitsaW5lLiAgSWYgdGhlIHJlcG9ydGVkIHByb2JsZW0gaGFwcGVucyB3aGVuIG1vdW50aW5nIGZsb3BweSBkaXNrcywgYmUKK3N1cmUgdG8gbWVudGlvbiBhbHNvIHRoZSB0eXBlIG9mIHRoZSBmaWxlc3lzdGVtIGluIHRoZSBzdWJqZWN0IGxpbmUuCisKKyBCZSBzdXJlIHRvIHJlYWQgdGhlIEZBUSBiZWZvcmUgbWFpbGluZy9wb3N0aW5nIGFueSBidWcgcmVwb3J0cyEKKworIEFsYWluCisKK0NoYW5nZWxvZworPT09PT09PT09CisKKzEwLTMwLTIwMDQgOglDbGVhbnVwLCB1cGRhdGluZywgYWRkIHJlZmVyZW5jZSB0byBtb2R1bGUgY29uZmlndXJhdGlvbi4KKwkJSmFtZXMgTmVsc29uIDxqYW1lczQ3NjVAZ21haWwuY29tPgorCis2LTMtMjAwMCA6CU9yaWdpbmFsIERvY3VtZW50CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L21mbGFzaC50eHQgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L21mbGFzaC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY2MTBlYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYmxvY2tkZXYvbWZsYXNoLnR4dApAQCAtMCwwICsxLDg0IEBACitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyBtW2ddZmxhc2ggc3VwcG9ydCBpbiBsaW51eC4KKworQ29udGVudHMKKyAgMS4gT3ZlcnZpZXcKKyAgMi4gUmVzZXJ2ZWQgYXJlYSBjb25maWd1cmF0aW9uCisgIDMuIEV4YW1wbGUgb2YgbWZsYXNoIHBsYXRmb3JtIGRyaXZlciByZWdpc3RyYXRpb24KKworMS4gT3ZlcnZpZXcKKworTWZsYXNoIGFuZCBnZmxhc2ggYXJlIGVtYmVkZGVkIGZsYXNoIGRyaXZlLiBUaGUgb25seSBkaWZmZXJlbmNlIGlzIG1mbGFzaCBpcworTUNQKE11bHRpIENoaXAgUGFja2FnZSkgZGV2aWNlLiBUaGVzZSB0d28gZGV2aWNlIG9wZXJhdGUgZXhhY3RseSBzYW1lIHdheS4KK1NvIHRoZSByZXN0IG1mbGFzaCByZXBlcnNlbnRzIG1mbGFzaCBhbmQgZ2ZsYXNoIGFsdG9nZXRoZXIuCisKK0ludGVybmFsbHksIG1mbGFzaCBoYXMgbmFuZCBmbGFzaCBhbmQgb3RoZXIgaGFyZHdhcmUgbG9naWNzIGFuZCBzdXBwb3J0cworMiBkaWZmZXJlbnQgb3BlcmF0aW9uIChBVEEsIElPKSBtb2Rlcy4gQVRBIG1vZGUgZG9lc24ndCBuZWVkIGFueSBuZXcKK2RyaXZlciBhbmQgY3VycmVudGx5IHdvcmtzIHdlbGwgdW5kZXIgc3RhbmRhcmQgSURFIHN1YnN5c3RlbS4gQWN0dWFsbHkgaXQncworb25lIGNoaXAgU1NELiBJTyBtb2RlIGlzIEFUQS1saWtlIGN1c3RvbSBtb2RlIGZvciB0aGUgaG9zdCB0aGF0IGRvZXNuJ3QgaGF2ZQorSURFIGludGVyZmFjZS4KKworRm9sbG93aW5ncyBhcmUgYnJpZWYgZGVzY3JpcHRpb25zIGFib3V0IElPIG1vZGUuCitBLiBJTyBtb2RlIGJhc2VkIG9uIEFUQSBwcm90b2NvbCBhbmQgdXNlcyBzb21lIGN1c3RvbSBjb21tYW5kLiAocmVhZCBjb25maXJtLAord3JpdGUgY29uZmlybSkKK0IuIElPIG1vZGUgdXNlcyBTUkFNIGJ1cyBpbnRlcmZhY2UuCitDLiBJTyBtb2RlIHN1cHBvcnRzIDRrQiBib290IGFyZWEsIHNvIGhvc3QgY2FuIGJvb3QgZnJvbSBtZmxhc2guCisKKzIuIFJlc2VydmVkIGFyZWEgY29uZmlndXJhdGlvbgorSWYgaG9zdCBib290IGZyb20gbWZsYXNoLCB1c3VhbGx5IG5lZWRzIHJhdyBhcmVhIGZvciBib290IGxvYWRlciBpbWFnZS4gQWxsIG9mCit0aGUgbWZsYXNoJ3MgYmxvY2sgZGV2aWNlIG9wZXJhdGlvbiB3aWxsIGJlIHRha2VuIHRoaXMgdmFsdWUgYXMgc3RhcnQgb2Zmc2V0LgorTm90ZSB0aGF0IGJvb3QgbG9hZGVyJ3Mgc2l6ZSBvZiByZXNlcnZlZCBhcmVhIGFuZCBrZXJuZWwgY29uZmlndXJhdGlvbiB2YWx1ZQorbXVzdCBiZSBzYW1lLgorCiszLiBFeGFtcGxlIG9mIG1mbGFzaCBwbGF0Zm9ybSBkcml2ZXIgcmVnaXN0cmF0aW9uCitXb3JraW5nIG1mbGFzaCBpcyB2ZXJ5IHN0cmFpZ2h0IGZvcndhcmQuIEFkZGluZyBwbGF0Zm9ybSBkZXZpY2Ugc3R1ZmYgdG8gYm9hcmQKK2NvbmZpZ3VyYXRpb24gZmlsZSBpcyBhbGwuIEhlcmUgaXMgc29tZSBwc2V1ZG8gZXhhbXBsZS4KKworc3RhdGljIHN0cnVjdCBtZ19kcnZfZGF0YSBtZmxhc2hfZHJ2X2RhdGEgPSB7CisJLyogSWYgeW91IHdhbnQgdG8gcG9sbGluZyBkcml2ZXIgc2V0IHRvIDEgKi8KKwkudXNlX3BvbGxpbmcgPSAwLAorCS8qIGRldmljZSBhdHRyaWJ1dGlvbiAqLworCS5kZXZfYXR0ciA9IE1HX0JPT1RfREVWCit9OworCitzdGF0aWMgc3RydWN0IHJlc291cmNlIG1nX21mbGFzaF9yc2NbXSA9IHsKKwkvKiBCYXNlIGFkZHJlc3Mgb2YgbWZsYXNoICovCisJWzBdID0geworCQkuc3RhcnQgPSAweDA4MDAwMDAwLAorCQkuZW5kID0gMHgwODAwMDAwMCArIFNaXzY0SyAtIDEsCisJCS5mbGFncyA9IElPUkVTT1VSQ0VfTUVNCisJfSwKKwkvKiBtZmxhc2ggaW50ZXJydXB0IHBpbiAqLworCVsxXSA9IHsKKwkJLnN0YXJ0ID0gSVJRX0dQSU8oODQpLAorCQkuZW5kID0gSVJRX0dQSU8oODQpLAorCQkuZmxhZ3MgPSBJT1JFU09VUkNFX0lSUQorCX0sCisJLyogbWZsYXNoIHJlc2V0IHBpbiAqLworCVsyXSA9IHsKKwkJLnN0YXJ0ID0gNDMsCisJCS5lbmQgPSA0MywKKwkJLm5hbWUgPSBNR19SU1RfUElOLAorCQkuZmxhZ3MgPSBJT1JFU09VUkNFX0lPCisJfSwKKwkvKiBtZmxhc2ggcmVzZXQtb3V0IHBpbgorCSAqIElmIHlvdSB1c2UgbWZsYXNoIGFzIHN0b3JhZ2UgZGV2aWNlIChpLmUuIG90aGVyIHRoYW4gTUdfQk9PVF9ERVYpLAorCSAqIHNob3VsZCBhc3NpZ24gdGhpcyAqLworCVszXSA9IHsKKwkJLnN0YXJ0ID0gNTEsCisJCS5lbmQgPSA1MSwKKwkJLm5hbWUgPSBNR19SU1RPVVRfUElOLAorCQkuZmxhZ3MgPSBJT1JFU09VUkNFX0lPCisJfQorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgbWZsYXNoX2RldiA9IHsKKwkubmFtZSA9IE1HX0RFVl9OQU1FLAorCS5pZCA9IC0xLAorCS5kZXYgPSB7CisJCS5wbGF0Zm9ybV9kYXRhID0gJm1mbGFzaF9kcnZfZGF0YSwKKwl9LAorCS5udW1fcmVzb3VyY2VzID0gQVJSQVlfU0laRShtZ19tZmxhc2hfcnNjKSwKKwkucmVzb3VyY2UgPSBtZ19tZmxhc2hfcnNjCit9OworCitwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJm1mbGFzaF9kZXYpOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibG9ja2Rldi9uYmQudHh0IGIvRG9jdW1lbnRhdGlvbi9ibG9ja2Rldi9uYmQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiMjQyZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L25iZC50eHQKQEAgLTAsMCArMSwzMSBAQAorTmV0d29yayBCbG9jayBEZXZpY2UgKFRDUCB2ZXJzaW9uKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisxKSBPdmVydmlldworLS0tLS0tLS0tLS0KKworV2hhdCBpcyBpdDogV2l0aCB0aGlzIGNvbXBpbGVkIGluIHRoZSBrZXJuZWwgKG9yIGFzIGEgbW9kdWxlKSwgTGludXgKK2NhbiB1c2UgYSByZW1vdGUgc2VydmVyIGFzIG9uZSBvZiBpdHMgYmxvY2sgZGV2aWNlcy4gU28gZXZlcnkgdGltZQordGhlIGNsaWVudCBjb21wdXRlciB3YW50cyB0byByZWFkLCBlLmcuLCAvZGV2L25iMCwgaXQgc2VuZHMgYQorcmVxdWVzdCBvdmVyIFRDUCB0byB0aGUgc2VydmVyLCB3aGljaCB3aWxsIHJlcGx5IHdpdGggdGhlIGRhdGEgcmVhZC4KK1RoaXMgY2FuIGJlIHVzZWQgZm9yIHN0YXRpb25zIHdpdGggbG93IGRpc2sgc3BhY2UgKG9yIGV2ZW4gZGlza2xlc3MpCit0byBib3Jyb3cgZGlzayBzcGFjZSBmcm9tIGFub3RoZXIgY29tcHV0ZXIuCitVbmxpa2UgTkZTLCBpdCBpcyBwb3NzaWJsZSB0byBwdXQgYW55IGZpbGVzeXN0ZW0gb24gaXQsIGV0Yy4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIG9yIHRvIGRvd25sb2FkIHRoZSBuYmQtY2xpZW50IGFuZCBuYmQtc2VydmVyCit0b29scywgZ28gdG8gaHR0cDovL25iZC5zZi5uZXQvLgorCitUaGUgbmJkIGtlcm5lbCBtb2R1bGUgbmVlZCBvbmx5IGJlIGluc3RhbGxlZCBvbiB0aGUgY2xpZW50CitzeXN0ZW0sIGFzIHRoZSBuYmQtc2VydmVyIGlzIGNvbXBsZXRlbHkgaW4gdXNlcnNwYWNlLiBJbiBmYWN0LAordGhlIG5iZC1zZXJ2ZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHBvcnRlZCB0byBvdGhlciBvcGVyYXRpbmcKK3N5c3RlbXMsIGluY2x1ZGluZyBXaW5kb3dzLgorCitBKSBOQkQgcGFyYW1ldGVycworLS0tLS0tLS0tLS0tLS0tLS0KKworbWF4X3BhcnQKKwlOdW1iZXIgb2YgcGFydGl0aW9ucyBwZXIgZGV2aWNlIChkZWZhdWx0OiAwKS4KKworbmJkc19tYXgKKwlOdW1iZXIgb2YgYmxvY2sgZGV2aWNlcyB0aGF0IHNob3VsZCBiZSBpbml0aWFsaXplZCAoZGVmYXVsdDogMTYpLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L3BhcmlkZS50eHQgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L3BhcmlkZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU2NzE3ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYmxvY2tkZXYvcGFyaWRlLnR4dApAQCAtMCwwICsxLDQxNyBAQAorCisJCUxpbnV4IGFuZCBwYXJhbGxlbCBwb3J0IElERSBkZXZpY2VzCisKK1BBUklERSB2MS4wMyAgIChjKSAxOTk3LTggIEdyYW50IEd1ZW50aGVyIDxncmFudEB0b3JxdWUubmV0PgorCisxLiBJbnRyb2R1Y3Rpb24KKworT3dpbmcgdG8gdGhlIHNpbXBsaWNpdHkgYW5kIG5lYXIgdW5pdmVyc2FsaXR5IG9mIHRoZSBwYXJhbGxlbCBwb3J0IGludGVyZmFjZQordG8gcGVyc29uYWwgY29tcHV0ZXJzLCBtYW55IGV4dGVybmFsIGRldmljZXMgc3VjaCBhcyBwb3J0YWJsZSBoYXJkLWRpc2ssCitDRC1ST00sIExTLTEyMCBhbmQgdGFwZSBkcml2ZXMgdXNlIHRoZSBwYXJhbGxlbCBwb3J0IHRvIGNvbm5lY3QgdG8gdGhlaXIKK2hvc3QgY29tcHV0ZXIuICBXaGlsZSBzb21lIGRldmljZXMgKG5vdGFibHkgc2Nhbm5lcnMpIHVzZSBhZC1ob2MgbWV0aG9kcwordG8gcGFzcyBjb21tYW5kcyBhbmQgZGF0YSB0aHJvdWdoIHRoZSBwYXJhbGxlbCBwb3J0IGludGVyZmFjZSwgbW9zdCAKK2V4dGVybmFsIGRldmljZXMgYXJlIGFjdHVhbGx5IGlkZW50aWNhbCB0byBhbiBpbnRlcm5hbCBtb2RlbCwgYnV0IHdpdGgKK2EgcGFyYWxsZWwtcG9ydCBhZGFwdGVyIGNoaXAgYWRkZWQgaW4uICBTb21lIG9mIHRoZSBvcmlnaW5hbCBwYXJhbGxlbCBwb3J0CithZGFwdGVycyB3ZXJlIGxpdHRsZSBtb3JlIHRoYW4gbWVjaGFuaXNtcyBmb3IgbXVsdGlwbGV4aW5nIGEgU0NTSSBidXMuCisoVGhlIElvbWVnYSBQUEEtMyBhZGFwdGVyIHVzZWQgaW4gdGhlIFpJUCBkcml2ZXMgaXMgYW4gZXhhbXBsZSBvZiB0aGlzCithcHByb2FjaCkuICBNb3N0IGN1cnJlbnQgZGVzaWducywgaG93ZXZlciwgdGFrZSBhIGRpZmZlcmVudCBhcHByb2FjaC4KK1RoZSBhZGFwdGVyIGNoaXAgcmVwcm9kdWNlcyBhIHNtYWxsIElTQSBvciBJREUgYnVzIGluIHRoZSBleHRlcm5hbCBkZXZpY2UKK2FuZCB0aGUgY29tbXVuaWNhdGlvbiBwcm90b2NvbCBwcm92aWRlcyBvcGVyYXRpb25zIGZvciByZWFkaW5nIGFuZCB3cml0aW5nCitkZXZpY2UgcmVnaXN0ZXJzLCBhcyB3ZWxsIGFzIGRhdGEgYmxvY2sgdHJhbnNmZXIgZnVuY3Rpb25zLiAgU29tZXRpbWVzLAordGhlIGRldmljZSBiZWluZyBhZGRyZXNzZWQgdmlhIHRoZSBwYXJhbGxlbCBjYWJsZSBpcyBhIHN0YW5kYXJkIFNDU0kKK2NvbnRyb2xsZXIgbGlrZSBhbiBOQ1IgNTM4MC4gIFRoZSAiZGl0dG8iIGZhbWlseSBvZiBleHRlcm5hbCB0YXBlCitkcml2ZXMgdXNlIHRoZSBJU0EgcmVwbGljYXRvciB0byBpbnRlcmZhY2UgYSBmbG9wcHkgZGlzayBjb250cm9sbGVyLAord2hpY2ggaXMgdGhlbiBjb25uZWN0ZWQgdG8gYSBmbG9wcHktdGFwZSBtZWNoYW5pc20uICBUaGUgdmFzdCBtYWpvcml0eQorb2YgZXh0ZXJuYWwgcGFyYWxsZWwgcG9ydCBkZXZpY2VzLCBob3dldmVyLCBhcmUgbm93IGJhc2VkIG9uIHN0YW5kYXJkCitJREUgdHlwZSBkZXZpY2VzLCB3aGljaCByZXF1aXJlIG5vIGludGVybWVkaWF0ZSBjb250cm9sbGVyLiAgSWYgb25lCit3ZXJlIHRvIG9wZW4gdXAgYSBwYXJhbGxlbCBwb3J0IENELVJPTSBkcml2ZSwgZm9yIGluc3RhbmNlLCBvbmUgd291bGQKK2ZpbmQgYSBzdGFuZGFyZCBBVEFQSSBDRC1ST00gZHJpdmUsIGEgcG93ZXIgc3VwcGx5LCBhbmQgYSBzaW5nbGUgYWRhcHRlcgordGhhdCBpbnRlcmNvbm5lY3RlZCBhIHN0YW5kYXJkIFBDIHBhcmFsbGVsIHBvcnQgY2FibGUgYW5kIGEgc3RhbmRhcmQKK0lERSBjYWJsZS4gIEl0IGlzIHVzdWFsbHkgcG9zc2libGUgdG8gZXhjaGFuZ2UgdGhlIENELVJPTSBkZXZpY2Ugd2l0aAorYW55IG90aGVyIGRldmljZSB1c2luZyB0aGUgSURFIGludGVyZmFjZS4gCisKK1RoZSBkb2N1bWVudCBkZXNjcmliZXMgdGhlIHN1cHBvcnQgaW4gTGludXggZm9yIHBhcmFsbGVsIHBvcnQgSURFCitkZXZpY2VzLiAgSXQgZG9lcyBub3QgY292ZXIgcGFyYWxsZWwgcG9ydCBTQ1NJIGRldmljZXMsICJkaXR0byIgdGFwZQorZHJpdmVzIG9yIHNjYW5uZXJzLiAgTWFueSBkaWZmZXJlbnQgZGV2aWNlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSAKK3BhcmFsbGVsIHBvcnQgSURFIHN1YnN5c3RlbSwgaW5jbHVkaW5nOgorCisJTWljcm9Tb2x1dGlvbnMgYmFja3BhY2sgQ0QtUk9NCisJTWljcm9Tb2x1dGlvbnMgYmFja3BhY2sgUEQvQ0QKKwlNaWNyb1NvbHV0aW9ucyBiYWNrcGFjayBoYXJkLWRyaXZlcworCU1pY3JvU29sdXRpb25zIGJhY2twYWNrIDgwMDB0IHRhcGUgZHJpdmUKKwlTeVF1ZXN0IEVaLTEzNSwgRVotMjMwICYgU3BhclEgZHJpdmVzCisJQXZhdGFyIFNoYXJrCisJSW1hdGlvbiBTdXBlcmRpc2sgTFMtMTIwCisJTWF4ZWxsIFN1cGVyZGlzayBMUy0xMjAKKwlGcmVlQ29tIFBvd2VyIENEIAorCUhld2xldHQtUGFja2FyZCA1R0IgYW5kIDhHQiB0YXBlIGRyaXZlcworCUhld2xldHQtUGFja2FyZCA3MTAwIGFuZCA3MjAwIENELVJXIGRyaXZlcworCithcyB3ZWxsIGFzIG1vc3Qgb2YgdGhlIGNsb25lIGFuZCBuby1uYW1lIHByb2R1Y3RzIG9uIHRoZSBtYXJrZXQuCisKK1RvIHN1cHBvcnQgc3VjaCBhIHdpZGUgcmFuZ2Ugb2YgZGV2aWNlcywgUEFSSURFLCB0aGUgcGFyYWxsZWwgcG9ydCBJREUKK3N1YnN5c3RlbSwgaXMgYWN0dWFsbHkgc3RydWN0dXJlZCBpbiB0aHJlZSBwYXJ0cy4gICBUaGVyZSBpcyBhIGJhc2UKK3BhcmlkZSBtb2R1bGUgd2hpY2ggcHJvdmlkZXMgYSByZWdpc3RyeSBhbmQgc29tZSBjb21tb24gbWV0aG9kcyBmb3IKK2FjY2Vzc2luZyB0aGUgcGFyYWxsZWwgcG9ydHMuICBUaGUgc2Vjb25kIGNvbXBvbmVudCBpcyBhIHNldCBvZiAKK2hpZ2gtbGV2ZWwgZHJpdmVycyBmb3IgZWFjaCBvZiB0aGUgZGlmZmVyZW50IHR5cGVzIG9mIHN1cHBvcnRlZCBkZXZpY2VzOiAKKworCXBkCUlERSBkaXNrCisJcGNkCUFUQVBJIENELVJPTQorCXBmCUFUQVBJIGRpc2sKKwlwdAlBVEFQSSB0YXBlCisJcGcJQVRBUEkgZ2VuZXJpYworCisoQ3VycmVudGx5LCB0aGUgcGcgZHJpdmVyIGlzIG9ubHkgdXNlZCB3aXRoIENELVIgZHJpdmVzKS4KKworVGhlIGhpZ2gtbGV2ZWwgZHJpdmVycyBmdW5jdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHJlbGV2YW50IHN0YW5kYXJkcy4KK1RoZSB0aGlyZCBjb21wb25lbnQgb2YgUEFSSURFIGlzIGEgc2V0IG9mIGxvdy1sZXZlbCBwcm90b2NvbCBkcml2ZXJzCitmb3IgZWFjaCBvZiB0aGUgcGFyYWxsZWwgcG9ydCBJREUgYWRhcHRlciBjaGlwcy4gIFRoYW5rcyB0byB0aGUgaW50ZXJlc3QKK2FuZCBlbmNvdXJhZ2VtZW50IG9mIExpbnV4IHVzZXJzIGZyb20gbWFueSBwYXJ0cyBvZiB0aGUgd29ybGQsIAorc3VwcG9ydCBpcyBhdmFpbGFibGUgZm9yIGFsbW9zdCBhbGwga25vd24gYWRhcHRlciBwcm90b2NvbHM6CisKKyAgICAgICAgYXRlbiAgICBBVEVOIEVILTEwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSEspCisgICAgICAgIGJwY2sgICAgTWljcm9zb2x1dGlvbnMgYmFja3BhY2sgICAgICAgICAgICAgICAgKFVTKQorICAgICAgICBjb21tICAgIERhdGFTdG9yIChvbGQtdHlwZSkgImNvbW11dGVyIiBhZGFwdGVyIChUVykKKyAgICAgICAgZHN0ciAgICBEYXRhU3RvciBFUC0yMDAwICAgICAgICAgICAgICAgICAgICAgICAoVFcpCisgICAgICAgIGVwYXQgICAgU2h1dHRsZSBFUEFUICAgICAgICAgICAgICAgICAgICAgICAgICAgKFVLKQorICAgICAgICBlcGlhICAgIFNodXR0bGUgRVBJQSAgICAgICAgICAgICAgICAgICAgICAgICAgIChVSykKKwlmaXQyICAgIEZJVCBURC0yMDAwCQkJICAgICAgIChVUykKKwlmaXQzICAgIEZJVCBURC0zMDAwCQkJICAgICAgIChVUykKKwlmcmlxICAgIEZyZWVjb20gSVEgY2FibGUgICAgICAgICAgICAgICAgICAgICAgIChERSkKKyAgICAgICAgZnJwdyAgICBGcmVlY29tIFBvd2VyICAgICAgICAgICAgICAgICAgICAgICAgICAoREUpCisgICAgICAgIGtiaWMgICAgS2luZ0J5dGUgS0JJQy05NTFBIGFuZCBLQklDLTk3MUEgICAgICAgKFRXKQorCWt0dGkgICAgS1QgVGVjaG5vbG9neSBQSGQgYWRhcHRlciAgICAgICAgICAgICAgKFNHKQorICAgICAgICBvbjIwICAgIE9uU3BlYyA5MGMyMCAgICAgICAgICAgICAgICAgICAgICAgICAgIChVUykKKyAgICAgICAgb24yNiAgICBPblNwZWMgOTBjMjYgICAgICAgICAgICAgICAgICAgICAgICAgICAoVVMpCisKKworMi4gVXNpbmcgdGhlIFBBUklERSBzdWJzeXN0ZW0KKworV2hpbGUgY29uZmlndXJpbmcgdGhlIExpbnV4IGtlcm5lbCwgeW91IG1heSBjaG9vc2UgZWl0aGVyIHRvIGJ1aWxkCit0aGUgUEFSSURFIGRyaXZlcnMgaW50byB5b3VyIGtlcm5lbCwgb3IgdG8gYnVpbGQgdGhlbSBhcyBtb2R1bGVzLgorCitJbiBlaXRoZXIgY2FzZSwgeW91IHdpbGwgbmVlZCB0byBzZWxlY3QgIlBhcmFsbGVsIHBvcnQgSURFIGRldmljZSBzdXBwb3J0IgorYXMgd2VsbCBhcyBhdCBsZWFzdCBvbmUgb2YgdGhlIGhpZ2gtbGV2ZWwgZHJpdmVycyBhbmQgYXQgbGVhc3Qgb25lCitvZiB0aGUgcGFyYWxsZWwgcG9ydCBjb21tdW5pY2F0aW9uIHByb3RvY29scy4gIElmIHlvdSBkbyBub3Qga25vdword2hhdCBraW5kIG9mIHBhcmFsbGVsIHBvcnQgYWRhcHRlciBpcyB1c2VkIGluIHlvdXIgZHJpdmUsIHlvdSBjb3VsZAorYmVnaW4gYnkgY2hlY2tpbmcgdGhlIGZpbGUgbmFtZXMgYW5kIGFueSB0ZXh0IGZpbGVzIG9uIHlvdXIgRE9TIAoraW5zdGFsbGF0aW9uIGZsb3BweS4gIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gbG9vayBhdCB0aGUgbWFya2luZ3Mgb24KK3RoZSBhZGFwdGVyIGNoaXAgaXRzZWxmLiAgVGhhdCdzIHVzdWFsbHkgc3VmZmljaWVudCB0byBpZGVudGlmeSB0aGUKK2NvcnJlY3QgZGV2aWNlLiAgCisKK1lvdSBjYW4gYWN0dWFsbHkgc2VsZWN0IGFsbCB0aGUgcHJvdG9jb2wgbW9kdWxlcywgYW5kIGFsbG93IHRoZSBQQVJJREUKK3N1YnN5c3RlbSB0byB0cnkgdGhlbSBhbGwgZm9yIHlvdS4KKworRm9yIHRoZSAiYnJhbmQtbmFtZSIgcHJvZHVjdHMgbGlzdGVkIGFib3ZlLCBoZXJlIGFyZSB0aGUgcHJvdG9jb2wKK2FuZCBoaWdoLWxldmVsIGRyaXZlcnMgdGhhdCB5b3Ugd291bGQgdXNlOgorCisJTWFudWZhY3R1cmVyCQlNb2RlbAkJRHJpdmVyCVByb3RvY29sCisJCisJTWljcm9Tb2x1dGlvbnMJCUNELVJPTQkJcGNkCWJwY2sKKwlNaWNyb1NvbHV0aW9ucwkJUEQgZHJpdmUJcGYJYnBjaworCU1pY3JvU29sdXRpb25zCQloYXJkLWRyaXZlCXBkCWJwY2sKKwlNaWNyb1NvbHV0aW9ucyAgICAgICAgICA4MDAwdCB0YXBlICAgICAgcHQgICAgICBicGNrCisJU3lRdWVzdAkJCUVaLCBTcGFyUQlwZAllcGF0CisJSW1hdGlvbgkJCVN1cGVyZGlzawlwZgllcGF0CisJTWF4ZWxsICAgICAgICAgICAgICAgICAgU3VwZXJkaXNrICAgICAgIHBmICAgICAgZnJpcQorCUF2YXRhcgkJCVNoYXJrCQlwZAllcGF0CisJRnJlZUNvbQkJCUNELVJPTQkJcGNkCWZycHcKKwlIZXdsZXR0LVBhY2thcmQJCTVHQiBUYXBlCXB0CWVwYXQKKwlIZXdsZXR0LVBhY2thcmQJCTcyMDBlIChDRCkJcGNkCWVwYXQKKwlIZXdsZXR0LVBhY2thcmQJCTcyMDBlIChDRC1SKQlwZwllcGF0CisKKzIuMSAgQ29uZmlndXJpbmcgYnVpbHQtaW4gZHJpdmVycworCitXZSByZWNvbW1lbmQgdGhhdCB5b3UgZ2V0IHRvIGtub3cgaG93IHRoZSBkcml2ZXJzIHdvcmsgYW5kIGhvdyB0bworY29uZmlndXJlIHRoZW0gYXMgbG9hZGFibGUgbW9kdWxlcywgYmVmb3JlIGF0dGVtcHRpbmcgdG8gY29tcGlsZSBhCitrZXJuZWwgd2l0aCB0aGUgZHJpdmVycyBidWlsdC1pbi4KKworSWYgeW91IGJ1aWx0IGFsbCBvZiB5b3VyIFBBUklERSBzdXBwb3J0IGRpcmVjdGx5IGludG8geW91ciBrZXJuZWwsCithbmQgeW91IGhhdmUganVzdCBhIHNpbmdsZSBwYXJhbGxlbCBwb3J0IElERSBkZXZpY2UsIHlvdXIga2VybmVsIHNob3VsZAorbG9jYXRlIGl0IGF1dG9tYXRpY2FsbHkgZm9yIHlvdS4gIElmIHlvdSBoYXZlIG1vcmUgdGhhbiBvbmUgZGV2aWNlLAoreW91IG1heSBuZWVkIHRvIGdpdmUgc29tZSBjb21tYW5kIGxpbmUgb3B0aW9ucyB0byB5b3VyIGJvb3Rsb2FkZXIKKyhlZzogTElMTyksIGhvdyB0byBkbyB0aGF0IGlzIGJleW9uZCB0aGUgc2NvcGUgb2YgdGhpcyBkb2N1bWVudC4KKworVGhlIGhpZ2gtbGV2ZWwgZHJpdmVycyBhY2NlcHQgYSBudW1iZXIgb2YgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMsIGFsbAorb2Ygd2hpY2ggYXJlIGRvY3VtZW50ZWQgaW4gdGhlIHNvdXJjZSBmaWxlcyBpbiBsaW51eC9kcml2ZXJzL2Jsb2NrL3BhcmlkZS4KK0J5IGRlZmF1bHQsIGVhY2ggZHJpdmVyIHdpbGwgYXV0b21hdGljYWxseSB0cnkgYWxsIHBhcmFsbGVsIHBvcnRzIGl0CitjYW4gZmluZCwgYW5kIGFsbCBwcm90b2NvbCB0eXBlcyB0aGF0IGhhdmUgYmVlbiBpbnN0YWxsZWQsIHVudGlsIGl0IGZpbmRzCithIHBhcmFsbGVsIHBvcnQgSURFIGFkYXB0ZXIuICBPbmNlIGl0IGZpbmRzIG9uZSwgdGhlIHByb2JlIHN0b3BzLiAgU28sCitpZiB5b3UgaGF2ZSBtb3JlIHRoYW4gb25lIGRldmljZSwgeW91IHdpbGwgbmVlZCB0byB0ZWxsIHRoZSBkcml2ZXJzCitob3cgdG8gaWRlbnRpZnkgdGhlbS4gIFRoaXMgcmVxdWlyZXMgc3BlY2lmeWluZyB0aGUgcG9ydCBhZGRyZXNzLCB0aGUKK3Byb3RvY29sIGlkZW50aWZpY2F0aW9uIG51bWJlciBhbmQsIGZvciBzb21lIGRldmljZXMsIHRoZSBkcml2ZSdzCitjaGFpbiBJRC4gIFdoaWxlIHlvdXIgc3lzdGVtIGlzIGJvb3RpbmcsIGEgbnVtYmVyIG9mIG1lc3NhZ2VzIGFyZQorZGlzcGxheWVkIG9uIHRoZSBjb25zb2xlLiAgTGlrZSBhbGwgc3VjaCBtZXNzYWdlcywgdGhleSBjYW4gYmUKK3Jldmlld2VkIHdpdGggdGhlICdkbWVzZycgY29tbWFuZC4gIEFtb25nIHRob3NlIG1lc3NhZ2VzIHdpbGwgYmUKK3NvbWUgbGluZXMgbGlrZToKKworCXBhcmlkZTogYnBjayByZWdpc3RlcmVkIGFzIHByb3RvY29sIDAKKwlwYXJpZGU6IGVwYXQgcmVnaXN0ZXJlZCBhcyBwcm90b2NvbCAxCisKK1RoZSBudW1iZXJzIHdpbGwgYWx3YXlzIGJlIHRoZSBzYW1lIHVudGlsIHlvdSBidWlsZCBhIG5ldyBrZXJuZWwgd2l0aAorZGlmZmVyZW50IHByb3RvY29sIHNlbGVjdGlvbnMuICBZb3Ugc2hvdWxkIG5vdGUgdGhlc2UgbnVtYmVycyBhcyB5b3UKK3dpbGwgbmVlZCB0aGVtIHRvIGlkZW50aWZ5IHRoZSBkZXZpY2VzLgorCitJZiB5b3UgaGFwcGVuIHRvIGJlIHVzaW5nIGEgTWljcm9Tb2x1dGlvbnMgYmFja3BhY2sgZGV2aWNlLCB5b3Ugd2lsbAorYWxzbyBuZWVkIHRvIGtub3cgdGhlIHVuaXQgSUQgbnVtYmVyIGZvciBlYWNoIGRyaXZlLiAgVGhpcyBpcyB1c3VhbGx5Cit0aGUgbGFzdCB0d28gZGlnaXRzIG9mIHRoZSBkcml2ZSdzIHNlcmlhbCBudW1iZXIgKGJ1dCByZWFkIE1pY3JvU29sdXRpb25zJworZG9jdW1lbnRhdGlvbiBhYm91dCB0aGlzKS4KKworQXMgYW4gZXhhbXBsZSwgbGV0J3MgYXNzdW1lIHRoYXQgeW91IGhhdmUgYSBNaWNyb1NvbHV0aW9ucyBQRC9DRCBkcml2ZQord2l0aCB1bml0IElEIG51bWJlciAzNiBjb25uZWN0ZWQgdG8gdGhlIHBhcmFsbGVsIHBvcnQgYXQgMHgzNzgsIGEgU3lRdWVzdCAKK0VaLTEzNSBjb25uZWN0ZWQgdG8gdGhlIGNoYWluZWQgcG9ydCBvbiB0aGUgUEQvQ0QgZHJpdmUgYW5kIGFsc28gYW4gCitJbWF0aW9uIFN1cGVyZGlzayBjb25uZWN0ZWQgdG8gcG9ydCAweDI3OC4gIFlvdSBjb3VsZCBnaXZlIHRoZSBmb2xsb3dpbmcgCitvcHRpb25zIG9uIHlvdXIgYm9vdCBjb21tYW5kOgorCisJcGQuZHJpdmUwPTB4Mzc4LDEgcGYuZHJpdmUwPTB4Mjc4LDEgcGYuZHJpdmUxPTB4Mzc4LDAsMzYKKworSW4gdGhlIGxhc3Qgb3B0aW9uLCBwZi5kcml2ZTEgY29uZmlndXJlcyBkZXZpY2UgL2Rldi9wZjEsIHRoZSAweDM3OAoraXMgdGhlIHBhcmFsbGVsIHBvcnQgYmFzZSBhZGRyZXNzLCB0aGUgMCBpcyB0aGUgcHJvdG9jb2wgcmVnaXN0cmF0aW9uCitudW1iZXIgYW5kIDM2IGlzIHRoZSBjaGFpbiBJRC4KKworUGxlYXNlIG5vdGU6ICB3aGlsZSBQQVJJREUgd2lsbCB3b3JrIGJvdGggd2l0aCBhbmQgd2l0aG91dCB0aGUgCitQQVJQT1JUIHBhcmFsbGVsIHBvcnQgc2hhcmluZyBzeXN0ZW0gdGhhdCBpcyBpbmNsdWRlZCBieSB0aGUKKyJQYXJhbGxlbCBwb3J0IHN1cHBvcnQiIG9wdGlvbiwgUEFSUE9SVCBtdXN0IGJlIGluY2x1ZGVkIGFuZCBlbmFibGVkCitpZiB5b3Ugd2FudCB0byB1c2UgY2hhaW5zIG9mIGRldmljZXMgb24gdGhlIHNhbWUgcGFyYWxsZWwgcG9ydC4KKworMi4yICBMb2FkaW5nIGFuZCBjb25maWd1cmluZyBQQVJJREUgYXMgbW9kdWxlcworCitJdCBpcyBtdWNoIGZhc3RlciBhbmQgc2ltcGxlciB0byBnZXQgdG8gdW5kZXJzdGFuZCB0aGUgUEFSSURFIGRyaXZlcnMKK2lmIHlvdSB1c2UgdGhlbSBhcyBsb2FkYWJsZSBrZXJuZWwgbW9kdWxlcy4gICAKKworTm90ZSAxOiAgdXNpbmcgdGhlc2UgZHJpdmVycyB3aXRoIHRoZSAia2VybmVsZCIgYXV0b21hdGljIG1vZHVsZSBsb2FkaW5nCitzeXN0ZW0gaXMgbm90IHJlY29tbWVuZGVkIGZvciBiZWdpbm5lcnMsIGFuZCBpcyBub3QgZG9jdW1lbnRlZCBoZXJlLiAgCisKK05vdGUgMjogIGlmIHlvdSBidWlsZCBQQVJQT1JUIHN1cHBvcnQgYXMgYSBsb2FkYWJsZSBtb2R1bGUsIFBBUklERSBtdXN0CithbHNvIGJlIGJ1aWx0IGFzIGxvYWRhYmxlIG1vZHVsZXMsIGFuZCBQQVJQT1JUIG11c3QgYmUgbG9hZGVkIGJlZm9yZSB0aGUKK1BBUklERSBtb2R1bGVzLgorCitUbyB1c2UgUEFSSURFLCB5b3UgbXVzdCBiZWdpbiBieSAKKworCWluc21vZCBwYXJpZGUKKwordGhpcyBsb2FkcyBhIGJhc2UgbW9kdWxlIHdoaWNoIHByb3ZpZGVzIGEgcmVnaXN0cnkgZm9yIHRoZSBwcm90b2NvbHMsCithbW9uZyBvdGhlciB0YXNrcy4KKworVGhlbiwgbG9hZCBhcyBtYW55IG9mIHRoZSBwcm90b2NvbCBtb2R1bGVzIGFzIHlvdSB0aGluayB5b3UgbWlnaHQgbmVlZC4KK0FzIHlvdSBsb2FkIGVhY2ggbW9kdWxlLCBpdCB3aWxsIHJlZ2lzdGVyIHRoZSBwcm90b2NvbHMgdGhhdCBpdCBzdXBwb3J0cywKK2FuZCBwcmludCBhIGxvZyBtZXNzYWdlIHRvIHlvdXIga2VybmVsIGxvZyBmaWxlIGFuZCB5b3VyIGNvbnNvbGUuIEZvciAKK2V4YW1wbGU6CisKKwkjIGluc21vZCBlcGF0CisJcGFyaWRlOiBlcGF0IHJlZ2lzdGVyZWQgYXMgcHJvdG9jb2wgMAorCSMgaW5zbW9kIGtiaWMKKwlwYXJpZGU6IGs5NTEgcmVnaXN0ZXJlZCBhcyBwcm90b2NvbCAxCisgICAgICAgIHBhcmlkZTogazk3MSByZWdpc3RlcmVkIGFzIHByb3RvY29sIDIKKworRmluYWxseSwgeW91IGNhbiBsb2FkIGhpZ2gtbGV2ZWwgZHJpdmVycyBmb3IgZWFjaCBraW5kIG9mIGRldmljZSB0aGF0Cit5b3UgaGF2ZSBjb25uZWN0ZWQuICBCeSBkZWZhdWx0LCBlYWNoIGRyaXZlciB3aWxsIGF1dG9wcm9iZSBmb3IgYSBzaW5nbGUgCitkZXZpY2UsIGJ1dCB5b3UgY2FuIHN1cHBvcnQgdXAgdG8gZm91ciBzaW1pbGFyIGRldmljZXMgYnkgZ2l2aW5nIHRoZWlyCitpbmRpdmlkdWFsIGNvLW9yZGluYXRlcyB3aGVuIHlvdSBsb2FkIHRoZSBkcml2ZXIuCisKK0ZvciBleGFtcGxlLCBpZiB5b3UgaGFkIHR3byBuby1uYW1lIENELVJPTSBkcml2ZXMgYm90aCB1c2luZyB0aGUKK0tpbmdCeXRlIEtCSUMtOTUxQSBhZGFwdGVyLCBvbmUgb24gcG9ydCAweDM3OCBhbmQgdGhlIG90aGVyIG9uIDB4M2JjCit5b3UgY291bGQgZ2l2ZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CisKKwkjIGluc21vZCBwY2QgZHJpdmUwPTB4Mzc4LDEgZHJpdmUxPTB4M2JjLDEKKworRm9yIG1vc3QgYWRhcHRlcnMsIGdpdmluZyBhIHBvcnQgYWRkcmVzcyBhbmQgcHJvdG9jb2wgbnVtYmVyIGlzIHN1ZmZpY2llbnQsCitidXQgY2hlY2sgdGhlIHNvdXJjZSBmaWxlcyBpbiBsaW51eC9kcml2ZXJzL2Jsb2NrL3BhcmlkZSBmb3IgbW9yZSAKK2luZm9ybWF0aW9uLiAgKEhvcGVmdWxseSBzb21lb25lIHdpbGwgd3JpdGUgc29tZSBtYW4gcGFnZXMgb25lIGRheSAhKS4KKworQXMgYW5vdGhlciBleGFtcGxlLCBoZXJlJ3Mgd2hhdCBoYXBwZW5zIHdoZW4gUEFSUE9SVCBpcyBpbnN0YWxsZWQsIGFuZAorYSBTeVF1ZXN0IEVaLTEzNSBpcyBhdHRhY2hlZCB0byBwb3J0IDB4Mzc4OgorCisJIyBpbnNtb2QgcGFyaWRlCisJcGFyaWRlOiB2ZXJzaW9uIDEuMCBpbnN0YWxsZWQKKwkjIGluc21vZCBlcGF0CisJcGFyaWRlOiBlcGF0IHJlZ2lzdGVyZWQgYXMgcHJvdG9jb2wgMAorCSMgaW5zbW9kIHBkCisJcGQ6IHBkIHZlcnNpb24gMS4wLCBtYWpvciA0NSwgY2x1c3RlciA2NCwgbmljZSAwCisJcGRhOiBTaGFyaW5nIHBhcnBvcnQxIGF0IDB4Mzc4CisJcGRhOiBlcGF0IDEuMCwgU2h1dHRsZSBFUEFUIGNoaXAgYzMgYXQgMHgzNzgsIG1vZGUgNSAoRVBQLTMyKSwgZGVsYXkgMQorCXBkYTogU3lRdWVzdCBFWjEzNUEsIDI2MjE0NCBibG9ja3MgWzEyOE1dLCAoNTEyLzE2LzMyKSwgcmVtb3ZhYmxlIG1lZGlhCisJIHBkYTogcGRhMQorCitOb3RlIHRoYXQgdGhlIGxhc3QgbGluZSBpcyB0aGUgb3V0cHV0IGZyb20gdGhlIGdlbmVyaWMgcGFydGl0aW9uIHRhYmxlCitzY2FubmVyIC0gaW4gdGhpcyBjYXNlIGl0IHJlcG9ydHMgdGhhdCBpdCBoYXMgZm91bmQgYSBkaXNrIHdpdGggb25lIHBhcnRpdGlvbi4KKworMi4zICBVc2luZyBhIFBBUklERSBkZXZpY2UKKworT25jZSB0aGUgZHJpdmVycyBoYXZlIGJlZW4gbG9hZGVkLCB5b3UgY2FuIGFjY2VzcyBQQVJJREUgZGV2aWNlcyBpbiB0aGUKK3NhbWUgd2F5IGFzIHRoZWlyIHRyYWRpdGlvbmFsIGNvdW50ZXJwYXJ0cy4gIFlvdSB3aWxsIHByb2JhYmx5IG5lZWQgdG8KK2NyZWF0ZSB0aGUgZGV2aWNlICJzcGVjaWFsIGZpbGVzIi4gIEhlcmUgaXMgYSBzaW1wbGUgc2NyaXB0IHRoYXQgeW91IGNhbgorY3V0IHRvIGEgZmlsZSBhbmQgZXhlY3V0ZToKKworIyEvYmluL2Jhc2gKKyMKKyMgbWtkIC0tIGEgc2NyaXB0IHRvIGNyZWF0ZSB0aGUgZGV2aWNlIHNwZWNpYWwgZmlsZXMgZm9yIHRoZSBQQVJJREUgc3Vic3lzdGVtCisjCitmdW5jdGlvbiBta2RldiB7CisgIG1rbm9kICQxICQyICQzICQ0IDsgY2htb2QgMDY2MCAkMSA7IGNob3duIHJvb3Q6ZGlzayAkMQorfQorIworZnVuY3Rpb24gcGQgeworICBEPSQoIHByaW50ZiBcXCQoIHByaW50ZiAieCUwM3giICRbICQxICsgOTcgXSApICkKKyAgbWtkZXYgcGQkRCBiIDQ1ICRbICQxICogMTYgXQorICBmb3IgUCBpbiAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNQorICBkbyBta2RldiBwZCREJFAgYiA0NSAkWyAkMSAqIDE2ICsgJFAgXQorICBkb25lCit9CisjCitjZCAvZGV2CisjCitmb3IgdSBpbiAwIDEgMiAzIDsgZG8gcGQgJHUgOyBkb25lCitmb3IgdSBpbiAwIDEgMiAzIDsgZG8gbWtkZXYgcGNkJHUgYiA0NiAkdSA7IGRvbmUgCitmb3IgdSBpbiAwIDEgMiAzIDsgZG8gbWtkZXYgcGYkdSAgYiA0NyAkdSA7IGRvbmUgCitmb3IgdSBpbiAwIDEgMiAzIDsgZG8gbWtkZXYgcHQkdSAgYyA5NiAkdSA7IGRvbmUgCitmb3IgdSBpbiAwIDEgMiAzIDsgZG8gbWtkZXYgbnB0JHUgYyA5NiAkWyAkdSArIDEyOCBdIDsgZG9uZSAKK2ZvciB1IGluIDAgMSAyIDMgOyBkbyBta2RldiBwZyR1ICBjIDk3ICR1IDsgZG9uZSAKKyMKKyMgZW5kIG9mIG1rZAorCitXaXRoIHRoZSBkZXZpY2UgZmlsZXMgYW5kIGRyaXZlcnMgaW4gcGxhY2UsIHlvdSBjYW4gYWNjZXNzIFBBUklERSBkZXZpY2VzCitsaWtlIGFueSBvdGhlciBMaW51eCBkZXZpY2UuICAgRm9yIGV4YW1wbGUsIHRvIG1vdW50IGEgQ0QtUk9NIGluIHBjZDAsIHVzZToKKworCW1vdW50IC9kZXYvcGNkMCAvY2Ryb20KKworSWYgeW91IGhhdmUgYSBmcmVzaCBBdmF0YXIgU2hhcmsgY2FydHJpZGdlLCBhbmQgdGhlIGRyaXZlIGlzIHBkYSwgeW91CittaWdodCBkbyBzb21ldGhpbmcgbGlrZToKKworCWZkaXNrIC9kZXYvcGRhCQktLSBtYWtlIGEgbmV3IHBhcnRpdGlvbiB0YWJsZSB3aXRoCisJCQkJICAgcGFydGl0aW9uIDEgb2YgdHlwZSA4MworCisJbWtlMmZzIC9kZXYvcGRhMQktLSB0byBidWlsZCB0aGUgZmlsZSBzeXN0ZW0KKworCW1rZGlyIC9zaGFyawkJLS0gbWFrZSBhIHBsYWNlIHRvIG1vdW50IHRoZSBkaXNrCisKKwltb3VudCAvZGV2L3BkYTEgL3NoYXJrCisKK0RldmljZXMgbGlrZSB0aGUgSW1hdGlvbiBzdXBlcmRpc2sgd29yayBpbiB0aGUgc2FtZSB3YXksIGV4Y2VwdCB0aGF0Cit0aGV5IGRvIG5vdCBoYXZlIGEgcGFydGl0aW9uIHRhYmxlLiAgRm9yIGV4YW1wbGUgdG8gbWFrZSBhIDEyME1CCitmbG9wcHkgdGhhdCB5b3UgY291bGQgc2hhcmUgd2l0aCBhIERPUyBzeXN0ZW06CisKKwlta2Rvc2ZzIC9kZXYvcGYwCisJbW91bnQgL2Rldi9wZjAgL21udAorCisKKzIuNCAgVGhlIHBmIGRyaXZlcgorCitUaGUgcGYgZHJpdmVyIGlzIGludGVuZGVkIGZvciB1c2Ugd2l0aCBwYXJhbGxlbCBwb3J0IEFUQVBJIGRpc2sKK2RldmljZXMuICBUaGUgbW9zdCBjb21tb24gZGV2aWNlcyBpbiB0aGlzIGNhdGVnb3J5IGFyZSBQRCBkcml2ZXMKK2FuZCBMUy0xMjAgZHJpdmVzLiAgVHJhZGl0aW9uYWxseSwgbWVkaWEgZm9yIHRoZXNlIGRldmljZXMgYXJlIG5vdAorcGFydGl0aW9uZWQuICBDb25zZXF1ZW50bHksIHRoZSBwZiBkcml2ZXIgZG9lcyBub3Qgc3VwcG9ydCBwYXJ0aXRpb25lZAorbWVkaWEuICBUaGlzIG1heSBiZSBjaGFuZ2VkIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgdGhlIGRyaXZlci4gCisKKzIuNSAgVXNpbmcgdGhlIHB0IGRyaXZlcgorCitUaGUgcHQgZHJpdmVyIGZvciBwYXJhbGxlbCBwb3J0IEFUQVBJIHRhcGUgZHJpdmVzIGlzIGEgbWluaW1hbCBkcml2ZXIuCitJdCBkb2VzIG5vdCB5ZXQgc3VwcG9ydCBtYW55IG9mIHRoZSBzdGFuZGFyZCB0YXBlIGlvY3RsIG9wZXJhdGlvbnMuIAorRm9yIGJlc3QgcGVyZm9ybWFuY2UsIGEgYmxvY2sgc2l6ZSBvZiAzMktCIHNob3VsZCBiZSB1c2VkLiAgWW91IHdpbGwKK3Byb2JhYmx5IHdhbnQgdG8gc2V0IHRoZSBwYXJhbGxlbCBwb3J0IGRlbGF5IHRvIDAsIGlmIHlvdSBjYW4uCisKKzIuNiAgVXNpbmcgdGhlIHBnIGRyaXZlcgorCitUaGUgcGcgZHJpdmVyIGNhbiBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIGNkcmVjb3JkIHByb2dyYW0KK3RvIGNyZWF0ZSBDRC1ST01zLiAgUGxlYXNlIGdldCBjZHJlY29yZCB2ZXJzaW9uIDEuNi4xIG9yIGxhdGVyCitmcm9tIGZ0cDovL2Z0cC5mb2t1cy5nbWQuZGUvcHViL3VuaXgvY2RyZWNvcmQvIC4gIFRvIHJlY29yZCBDRC1SIG1lZGlhIAoreW91ciBwYXJhbGxlbCBwb3J0IHNob3VsZCBpZGVhbGx5IGJlIHNldCB0byBFUFAgbW9kZSwgYW5kIHRoZSAicG9ydCBkZWxheSIgCitzaG91bGQgYmUgc2V0IHRvIDAuICBXaXRoIHRob3NlIHNldHRpbmdzIGl0IGlzIHBvc3NpYmxlIHRvIHJlY29yZCBhdCAyeCAKK3NwZWVkIHdpdGhvdXQgYW55IGJ1ZmZlciB1bmRlcnJ1bnMuICBJZiB5b3UgY2Fubm90IGdldCB0aGUgZHJpdmVyIHRvIHdvcmsKK2luIEVQUCBtb2RlLCB0cnkgdG8gdXNlICJiaWRpcmVjdGlvbmFsIiBvciAiUFMvMiIgbW9kZSBhbmQgMXggc3BlZWRzIG9ubHkuCisKKworMy4gVHJvdWJsZXNob290aW5nCisKKzMuMSAgVXNlIEVQUCBtb2RlIGlmIHlvdSBjYW4KKworVGhlIG1vc3QgY29tbW9uIHByb2JsZW1zIHRoYXQgcGVvcGxlIHJlcG9ydCB3aXRoIHRoZSBQQVJJREUgZHJpdmVycworY29uY2VybiB0aGUgcGFyYWxsZWwgcG9ydCBDTU9TIHNldHRpbmdzLiAgQXQgdGhpcyB0aW1lLCBub25lIG9mIHRoZQorUEFSSURFIHByb3RvY29sIG1vZHVsZXMgc3VwcG9ydCBFQ1AgbW9kZSwgb3IgYW55IEVDUCBjb21iaW5hdGlvbiBtb2Rlcy4KK0lmIHlvdSBhcmUgYWJsZSB0byBkbyBzbywgcGxlYXNlIHNldCB5b3VyIHBhcmFsbGVsIHBvcnQgaW50byBFUFAgbW9kZQordXNpbmcgeW91ciBDTU9TIHNldHVwIHByb2NlZHVyZS4KKworMy4yICBDaGVjayB0aGUgcG9ydCBkZWxheQorCitTb21lIHBhcmFsbGVsIHBvcnRzIGNhbm5vdCByZWxpYWJseSB0cmFuc2ZlciBkYXRhIGF0IGZ1bGwgc3BlZWQuICBUbworb2Zmc2V0IHRoZSBlcnJvcnMsIHRoZSBQQVJJREUgcHJvdG9jb2wgbW9kdWxlcyBpbnRyb2R1Y2UgYSAicG9ydAorZGVsYXkiIGJldHdlZW4gZWFjaCBhY2Nlc3MgdG8gdGhlIGkvbyBwb3J0cy4gIEVhY2ggcHJvdG9jb2wgc2V0cworYSBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIGRlbGF5LiAgSW4gbW9zdCBjYXNlcywgdGhlIHVzZXIgY2FuIG92ZXJyaWRlCit0aGUgZGVmYXVsdCBhbmQgc2V0IGl0IHRvIDAgLSByZXN1bHRpbmcgaW4gc29tZXdoYXQgaGlnaGVyIHRyYW5zZmVyCityYXRlcy4gIEluIHNvbWUgcmFyZSBjYXNlcyAoZXNwZWNpYWxseSB3aXRoIG9sZGVyIDQ4NiBzeXN0ZW1zKSB0aGUKK2RlZmF1bHQgZGVsYXlzIGFyZSBub3QgbG9uZyBlbm91Z2guICBpZiB5b3UgZXhwZXJpZW5jZSBjb3JydXB0IGRhdGEKK3RyYW5zZmVycywgb3IgdW5leHBlY3RlZCBmYWlsdXJlcywgeW91IG1heSB3aXNoIHRvIGluY3JlYXNlIHRoZQorcG9ydCBkZWxheS4gICBUaGUgZGVsYXkgY2FuIGJlIHByb2dyYW1tZWQgdXNpbmcgdGhlICJkcml2ZU4iIHBhcmFtZXRlcnMKK3RvIGVhY2ggb2YgdGhlIGhpZ2gtbGV2ZWwgZHJpdmVycy4gIFBsZWFzZSBzZWUgdGhlIG5vdGVzIGFib3ZlLCBvcgorcmVhZCB0aGUgY29tbWVudHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZHJpdmVyIHNvdXJjZSBmaWxlcyBpbgorbGludXgvZHJpdmVycy9ibG9jay9wYXJpZGUuCisKKzMuMyAgU29tZSBkcml2ZXMgbmVlZCBhIHByaW50ZXIgcmVzZXQKKworVGhlcmUgYXBwZWFyIHRvIGJlIGEgbnVtYmVyIG9mICJub25hbWUiIGV4dGVybmFsIGRyaXZlcyBvbiB0aGUgbWFya2V0Cit0aGF0IGRvIG5vdCBhbHdheXMgcG93ZXIgdXAgY29ycmVjdGx5LiAgV2UgaGF2ZSBub3RpY2VkIHRoaXMgd2l0aCBzb21lCitkcml2ZXMgYmFzZWQgb24gT25TcGVjIGFuZCBvbGRlciBGcmVlY29tIGFkYXB0ZXJzLiAgSW4gdGhlc2UgcmFyZSBjYXNlcywKK3RoZSBhZGFwdGVyIGNhbiBvZnRlbiBiZSByZWluaXRpYWxpc2VkIGJ5IGlzc3VpbmcgYSAicHJpbnRlciByZXNldCIgb24KK3RoZSBwYXJhbGxlbCBwb3J0LiAgQXMgdGhlIHJlc2V0IG9wZXJhdGlvbiBpcyBwb3RlbnRpYWxseSBkaXNydXB0aXZlIGluIAorbXVsdGlwbGUgZGV2aWNlIGVudmlyb25tZW50cywgdGhlIFBBUklERSBkcml2ZXJzIHdpbGwgbm90IGRvIGl0IAorYXV0b21hdGljYWxseS4gIFlvdSBjYW4gaG93ZXZlciwgZm9yY2UgYSBwcmludGVyIHJlc2V0IGJ5IGRvaW5nOgorCisJaW5zbW9kIGxwIHJlc2V0PTEKKwlybW1vZCBscAorCitJZiB5b3UgaGF2ZSBvbmUgb2YgdGhlc2UgbWFyZ2luYWwgY2FzZXMsIHlvdSBzaG91bGQgcHJvYmFibHkgYnVpbGQKK3lvdXIgcGFyaWRlIGRyaXZlcnMgYXMgbW9kdWxlcywgYW5kIGFycmFuZ2UgdG8gZG8gdGhlIHByaW50ZXIgcmVzZXQKK2JlZm9yZSBsb2FkaW5nIHRoZSBQQVJJREUgZHJpdmVycy4gCisKKzMuNCAgVXNlIHRoZSB2ZXJib3NlIG9wdGlvbiBhbmQgZG1lc2cgaWYgeW91IG5lZWQgaGVscAorCitXaGlsZSBhIGxvdCBvZiB0ZXN0aW5nIGhhcyBnb25lIGludG8gdGhlc2UgZHJpdmVycyB0byBtYWtlIHRoZW0gd29yaworYXMgc21vb3RobHkgYXMgcG9zc2libGUsIHByb2JsZW1zIHdpbGwgYXJpc2UuICBJZiB5b3UgZG8gaGF2ZSBwcm9ibGVtcywKK3BsZWFzZSBjaGVjayBhbGwgdGhlIG9idmlvdXMgdGhpbmdzIGZpcnN0OiAgZG9lcyB0aGUgZHJpdmUgd29yayBpbgorRE9TIHdpdGggdGhlIG1hbnVmYWN0dXJlcidzIGRyaXZlcnMgPyAgSWYgdGhhdCBkb2Vzbid0IHlpZWxkIGFueSB1c2VmdWwKK2NsdWVzLCB0aGVuIHBsZWFzZSBtYWtlIHN1cmUgdGhhdCBvbmx5IG9uZSBkcml2ZSBpcyBob29rZWQgdG8geW91ciBzeXN0ZW0sCithbmQgdGhhdCBlaXRoZXIgKGEpIFBBUlBPUlQgaXMgZW5hYmxlZCBvciAoYikgbm8gb3RoZXIgZGV2aWNlIGRyaXZlcgoraXMgdXNpbmcgeW91ciBwYXJhbGxlbCBwb3J0IChjaGVjayBpbiAvcHJvYy9pb3BvcnRzKS4gIFRoZW4sIGxvYWQgdGhlCithcHByb3ByaWF0ZSBkcml2ZXJzICh5b3UgY2FuIGxvYWQgc2V2ZXJhbCBwcm90b2NvbCBtb2R1bGVzIGlmIHlvdSB3YW50KQorYXMgaW46CisKKwkjIGluc21vZCBwYXJpZGUKKwkjIGluc21vZCBlcGF0CisJIyBpbnNtb2QgYnBjaworCSMgaW5zbW9kIGtiaWMKKwkuLi4KKwkjIGluc21vZCBwZCB2ZXJib3NlPTEKKworKHVzaW5nIHRoZSBjb3JyZWN0IGRyaXZlciBmb3IgdGhlIHR5cGUgb2YgZGV2aWNlIHlvdSBoYXZlLCBvZiBjb3Vyc2UpLgorVGhlIHZlcmJvc2U9MSBwYXJhbWV0ZXIgd2lsbCBjYXVzZSB0aGUgZHJpdmVycyB0byBsb2cgYSB0cmFjZSBvZiB0aGVpcgorYWN0aXZpdHkgYXMgdGhleSBhdHRlbXB0IHRvIGxvY2F0ZSB5b3VyIGRyaXZlLgorCitVc2UgJ2RtZXNnJyB0byBjYXB0dXJlIGEgbG9nIG9mIGFsbCB0aGUgUEFSSURFIG1lc3NhZ2VzIChhbnkgbWVzc2FnZXMKK2JlZ2lubmluZyB3aXRoIHBhcmlkZTosIGEgcHJvdG9jb2wgbW9kdWxlJ3MgbmFtZSBvciBhIGRyaXZlcidzIG5hbWUpIGFuZAoraW5jbHVkZSB0aGF0IHdpdGggeW91ciBidWcgcmVwb3J0LiAgWW91IGNhbiBzdWJtaXQgYSBidWcgcmVwb3J0IGluIG9uZQorb2YgdHdvIHdheXMuICBFaXRoZXIgc2VuZCBpdCBkaXJlY3RseSB0byB0aGUgYXV0aG9yIG9mIHRoZSBQQVJJREUgc3VpdGUsCitieSBlLW1haWwgdG8gZ3JhbnRAdG9ycXVlLm5ldCwgb3Igam9pbiB0aGUgbGludXgtcGFycG9ydCBtYWlsaW5nIGxpc3QKK2FuZCBwb3N0IHlvdXIgcmVwb3J0IHRoZXJlLgorCiszLjUgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9yIGhlbHAKKworWW91IGNhbiBqb2luIHRoZSBsaW51eC1wYXJwb3J0IG1haWxpbmcgbGlzdCBieSBzZW5kaW5nIGEgbWFpbCBtZXNzYWdlCit0byAKKwkJbGludXgtcGFycG9ydC1yZXF1ZXN0QHRvcnF1ZS5uZXQKKword2l0aCB0aGUgc2luZ2xlIHdvcmQgCisKKwkJc3Vic2NyaWJlCisKK2luIHRoZSBib2R5IG9mIHRoZSBtYWlsIG1lc3NhZ2UgKG5vdCBpbiB0aGUgc3ViamVjdCBsaW5lKS4gICBQbGVhc2UgYmUKK3N1cmUgdGhhdCB5b3VyIG1haWwgcHJvZ3JhbSBpcyBjb3JyZWN0bHkgc2V0IHVwIHdoZW4geW91IGRvIHRoaXMsICBhcwordGhlIGxpc3QgbWFuYWdlciBpcyBhIHJvYm90IHRoYXQgd2lsbCBzdWJzY3JpYmUgeW91IHVzaW5nIHRoZSByZXBseQorYWRkcmVzcyBpbiB5b3VyIG1haWwgaGVhZGVycy4gIFJFTU9WRSBhbnkgYW50aS1zcGFtIGdpbW1pY2tzIHlvdSBtYXkKK2hhdmUgaW4geW91ciBtYWlsIGhlYWRlcnMsIHdoZW4gc2VuZGluZyBtYWlsIHRvIHRoZSBsaXN0IHNlcnZlci4KKworWW91IG1pZ2h0IGFsc28gZmluZCBzb21lIHVzZWZ1bCBpbmZvcm1hdGlvbiBvbiB0aGUgbGludXgtcGFycG9ydAord2ViIHBhZ2VzIChhbHRob3VnaCB0aGV5IGFyZSBub3QgYWx3YXlzIHVwIHRvIGRhdGUpIGF0CisKKwlodHRwOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8qL2h0dHA6Ly93d3cudG9ycXVlLm5ldC9wYXJwb3J0LworCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYmxvY2tkZXYvcmFtZGlzay50eHQgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L3JhbWRpc2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMmVmOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L3JhbWRpc2sudHh0CkBAIC0wLDAgKzEsMTc0IEBACitVc2luZyB0aGUgUkFNIGRpc2sgYmxvY2sgZGV2aWNlIHdpdGggTGludXgKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb250ZW50czoKKworCTEpIE92ZXJ2aWV3CisJMikgS2VybmVsIENvbW1hbmQgTGluZSBQYXJhbWV0ZXJzCisJMykgVXNpbmcgInJkZXYgLXIiCisJNCkgQW4gRXhhbXBsZSBvZiBDcmVhdGluZyBhIENvbXByZXNzZWQgUkFNIERpc2sKKworCisxKSBPdmVydmlldworLS0tLS0tLS0tLS0KKworVGhlIFJBTSBkaXNrIGRyaXZlciBpcyBhIHdheSB0byB1c2UgbWFpbiBzeXN0ZW0gbWVtb3J5IGFzIGEgYmxvY2sgZGV2aWNlLiAgSXQKK2lzIHJlcXVpcmVkIGZvciBpbml0cmQsIGFuIGluaXRpYWwgZmlsZXN5c3RlbSB1c2VkIGlmIHlvdSBuZWVkIHRvIGxvYWQgbW9kdWxlcworaW4gb3JkZXIgdG8gYWNjZXNzIHRoZSByb290IGZpbGVzeXN0ZW0gKHNlZSBEb2N1bWVudGF0aW9uL2luaXRyZC50eHQpLiAgSXQgY2FuCithbHNvIGJlIHVzZWQgZm9yIGEgdGVtcG9yYXJ5IGZpbGVzeXN0ZW0gZm9yIGNyeXB0byB3b3JrLCBzaW5jZSB0aGUgY29udGVudHMKK2FyZSBlcmFzZWQgb24gcmVib290LgorCitUaGUgUkFNIGRpc2sgZHluYW1pY2FsbHkgZ3Jvd3MgYXMgbW9yZSBzcGFjZSBpcyByZXF1aXJlZC4gSXQgZG9lcyB0aGlzIGJ5IHVzaW5nCitSQU0gZnJvbSB0aGUgYnVmZmVyIGNhY2hlLiBUaGUgZHJpdmVyIG1hcmtzIHRoZSBidWZmZXJzIGl0IGlzIHVzaW5nIGFzIGRpcnR5CitzbyB0aGF0IHRoZSBWTSBzdWJzeXN0ZW0gZG9lcyBub3QgdHJ5IHRvIHJlY2xhaW0gdGhlbSBsYXRlci4KKworVGhlIFJBTSBkaXNrIHN1cHBvcnRzIHVwIHRvIDE2IFJBTSBkaXNrcyBieSBkZWZhdWx0LCBhbmQgY2FuIGJlIHJlY29uZmlndXJlZAordG8gc3VwcG9ydCBhbiB1bmxpbWl0ZWQgbnVtYmVyIG9mIFJBTSBkaXNrcyAoYXQgeW91ciBvd24gcmlzaykuICBKdXN0IGNoYW5nZQordGhlIGNvbmZpZ3VyYXRpb24gc3ltYm9sIEJMS19ERVZfUkFNX0NPVU5UIGluIHRoZSBCbG9jayBkcml2ZXJzIGNvbmZpZyBtZW51CithbmQgKHJlKWJ1aWxkIHRoZSBrZXJuZWwuCisKK1RvIHVzZSBSQU0gZGlzayBzdXBwb3J0IHdpdGggeW91ciBzeXN0ZW0sIHJ1biAnLi9NQUtFREVWIHJhbScgZnJvbSB0aGUgL2RldgorZGlyZWN0b3J5LiAgUkFNIGRpc2tzIGFyZSBhbGwgbWFqb3IgbnVtYmVyIDEsIGFuZCBzdGFydCB3aXRoIG1pbm9yIG51bWJlciAwCitmb3IgL2Rldi9yYW0wLCBldGMuICBJZiB1c2VkLCBtb2Rlcm4ga2VybmVscyB1c2UgL2Rldi9yYW0wIGZvciBhbiBpbml0cmQuCisKK1RoZSBuZXcgUkFNIGRpc2sgYWxzbyBoYXMgdGhlIGFiaWxpdHkgdG8gbG9hZCBjb21wcmVzc2VkIFJBTSBkaXNrIGltYWdlcywKK2FsbG93aW5nIG9uZSB0byBzcXVlZXplIG1vcmUgcHJvZ3JhbXMgb250byBhbiBhdmVyYWdlIGluc3RhbGxhdGlvbiBvcgorcmVzY3VlIGZsb3BweSBkaXNrLgorCisKKzIpIFBhcmFtZXRlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisyYSkgS2VybmVsIENvbW1hbmQgTGluZSBQYXJhbWV0ZXJzCisKKwlyYW1kaXNrX3NpemU9TgorCT09PT09PT09PT09PT09CisKK1RoaXMgcGFyYW1ldGVyIHRlbGxzIHRoZSBSQU0gZGlzayBkcml2ZXIgdG8gc2V0IHVwIFJBTSBkaXNrcyBvZiBOIGsgc2l6ZS4gIFRoZQorZGVmYXVsdCBpcyA0MDk2ICg0IE1CKS4KKworMmIpIE1vZHVsZSBwYXJhbWV0ZXJzCisKKwlyZF9ucgorCT09PT09CisJL2Rldi9yYW1YIGRldmljZXMgY3JlYXRlZC4KKworCW1heF9wYXJ0CisJPT09PT09PT0KKwlNYXhpbXVtIHBhcnRpdGlvbiBudW1iZXIuCisKKwlyZF9zaXplCisJPT09PT09PQorCVNlZSByYW1kaXNrX3NpemUuCisKKzMpIFVzaW5nICJyZGV2IC1yIgorLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSB1c2FnZSBvZiB0aGUgd29yZCAodHdvIGJ5dGVzKSB0aGF0ICJyZGV2IC1yIiBzZXRzIGluIHRoZSBrZXJuZWwgaW1hZ2UgaXMKK2FzIGZvbGxvd3MuIFRoZSBsb3cgMTEgYml0cyAoMCAtPiAxMCkgc3BlY2lmeSBhbiBvZmZzZXQgKGluIDEgayBibG9ja3MpIG9mIHVwCit0byAyIE1CICgyXjExKSBvZiB3aGVyZSB0byBmaW5kIHRoZSBSQU0gZGlzayAodGhpcyB1c2VkIHRvIGJlIHRoZSBzaXplKS4gQml0CisxNCBpbmRpY2F0ZXMgdGhhdCBhIFJBTSBkaXNrIGlzIHRvIGJlIGxvYWRlZCwgYW5kIGJpdCAxNSBpbmRpY2F0ZXMgd2hldGhlciBhCitwcm9tcHQvd2FpdCBzZXF1ZW5jZSBpcyB0byBiZSBnaXZlbiBiZWZvcmUgdHJ5aW5nIHRvIHJlYWQgdGhlIFJBTSBkaXNrLiBTaW5jZQordGhlIFJBTSBkaXNrIGR5bmFtaWNhbGx5IGdyb3dzIGFzIGRhdGEgaXMgYmVpbmcgd3JpdHRlbiBpbnRvIGl0LCBhIHNpemUgZmllbGQKK2lzIG5vdCByZXF1aXJlZC4gQml0cyAxMSB0byAxMyBhcmUgbm90IGN1cnJlbnRseSB1c2VkIGFuZCBtYXkgYXMgd2VsbCBiZSB6ZXJvLgorVGhlc2UgbnVtYmVycyBhcmUgbm8gbWFnaWNhbCBzZWNyZXRzLCBhcyBzZWVuIGJlbG93OgorCisuL2FyY2gveDg2L2tlcm5lbC9zZXR1cC5jOiNkZWZpbmUgUkFNRElTS19JTUFHRV9TVEFSVF9NQVNLICAgICAweDA3RkYKKy4vYXJjaC94ODYva2VybmVsL3NldHVwLmM6I2RlZmluZSBSQU1ESVNLX1BST01QVF9GTEFHICAgICAgICAgIDB4ODAwMAorLi9hcmNoL3g4Ni9rZXJuZWwvc2V0dXAuYzojZGVmaW5lIFJBTURJU0tfTE9BRF9GTEFHICAgICAgICAgICAgMHg0MDAwCisKK0NvbnNpZGVyIGEgdHlwaWNhbCB0d28gZmxvcHB5IGRpc2sgc2V0dXAsIHdoZXJlIHlvdSB3aWxsIGhhdmUgdGhlCitrZXJuZWwgb24gZGlzayBvbmUsIGFuZCBoYXZlIGFscmVhZHkgcHV0IGEgUkFNIGRpc2sgaW1hZ2Ugb250byBkaXNrICMyLgorCitIZW5jZSB5b3Ugd2FudCB0byBzZXQgYml0cyAwIHRvIDEzIGFzIDAsIG1lYW5pbmcgdGhhdCB5b3VyIFJBTSBkaXNrCitzdGFydHMgYXQgYW4gb2Zmc2V0IG9mIDAga0IgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmbG9wcHkuCitUaGUgY29tbWFuZCBsaW5lIGVxdWl2YWxlbnQgaXM6ICJyYW1kaXNrX3N0YXJ0PTAiCisKK1lvdSB3YW50IGJpdCAxNCBhcyBvbmUsIGluZGljYXRpbmcgdGhhdCBhIFJBTSBkaXNrIGlzIHRvIGJlIGxvYWRlZC4KK1RoZSBjb21tYW5kIGxpbmUgZXF1aXZhbGVudCBpczogImxvYWRfcmFtZGlzaz0xIgorCitZb3Ugd2FudCBiaXQgMTUgYXMgb25lLCBpbmRpY2F0aW5nIHRoYXQgeW91IHdhbnQgYSBwcm9tcHQva2V5cHJlc3MKK3NlcXVlbmNlIHNvIHRoYXQgeW91IGhhdmUgYSBjaGFuY2UgdG8gc3dpdGNoIGZsb3BweSBkaXNrcy4KK1RoZSBjb21tYW5kIGxpbmUgZXF1aXZhbGVudCBpczogInByb21wdF9yYW1kaXNrPTEiCisKK1B1dHRpbmcgdGhhdCB0b2dldGhlciBnaXZlcyAyXjE1ICsgMl4xNCArIDAgPSA0OTE1MiBmb3IgYW4gcmRldiB3b3JkLgorU28gdG8gY3JlYXRlIGRpc2sgb25lIG9mIHRoZSBzZXQsIHlvdSB3b3VsZCBkbzoKKworCS91c3Ivc3JjL2xpbnV4IyBjYXQgYXJjaC94ODYvYm9vdC96SW1hZ2UgPiAvZGV2L2ZkMAorCS91c3Ivc3JjL2xpbnV4IyByZGV2IC9kZXYvZmQwIC9kZXYvZmQwCisJL3Vzci9zcmMvbGludXgjIHJkZXYgLXIgL2Rldi9mZDAgNDkxNTIKKworSWYgeW91IG1ha2UgYSBib290IGRpc2sgdGhhdCBoYXMgTElMTywgdGhlbiBmb3IgdGhlIGFib3ZlLCB5b3Ugd291bGQgdXNlOgorCWFwcGVuZCA9ICJyYW1kaXNrX3N0YXJ0PTAgbG9hZF9yYW1kaXNrPTEgcHJvbXB0X3JhbWRpc2s9MSIKK1NpbmNlIHRoZSBkZWZhdWx0IHN0YXJ0ID0gMCBhbmQgdGhlIGRlZmF1bHQgcHJvbXB0ID0gMSwgeW91IGNvdWxkIHVzZToKKwlhcHBlbmQgPSAibG9hZF9yYW1kaXNrPTEiCisKKworNCkgQW4gRXhhbXBsZSBvZiBDcmVhdGluZyBhIENvbXByZXNzZWQgUkFNIERpc2sKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVG8gY3JlYXRlIGEgUkFNIGRpc2sgaW1hZ2UsIHlvdSB3aWxsIG5lZWQgYSBzcGFyZSBibG9jayBkZXZpY2UgdG8KK2NvbnN0cnVjdCBpdCBvbi4gVGhpcyBjYW4gYmUgdGhlIFJBTSBkaXNrIGRldmljZSBpdHNlbGYsIG9yIGFuCit1bnVzZWQgZGlzayBwYXJ0aXRpb24gKHN1Y2ggYXMgYW4gdW5tb3VudGVkIHN3YXAgcGFydGl0aW9uKS4gRm9yIHRoaXMKK2V4YW1wbGUsIHdlIHdpbGwgdXNlIHRoZSBSQU0gZGlzayBkZXZpY2UsICIvZGV2L3JhbTAiLgorCitOb3RlOiBUaGlzIHRlY2huaXF1ZSBzaG91bGQgbm90IGJlIGRvbmUgb24gYSBtYWNoaW5lIHdpdGggbGVzcyB0aGFuIDggTUIKK29mIFJBTS4gSWYgdXNpbmcgYSBzcGFyZSBkaXNrIHBhcnRpdGlvbiBpbnN0ZWFkIG9mIC9kZXYvcmFtMCwgdGhlbiB0aGlzCityZXN0cmljdGlvbiBkb2VzIG5vdCBhcHBseS4KKworYSkgRGVjaWRlIG9uIHRoZSBSQU0gZGlzayBzaXplIHRoYXQgeW91IHdhbnQuIFNheSAyIE1CIGZvciB0aGlzIGV4YW1wbGUuCisgICBDcmVhdGUgaXQgYnkgd3JpdGluZyB0byB0aGUgUkFNIGRpc2sgZGV2aWNlLiAoVGhpcyBzdGVwIGlzIG5vdCBjdXJyZW50bHkKKyAgIHJlcXVpcmVkLCBidXQgbWF5IGJlIGluIHRoZSBmdXR1cmUuKSBJdCBpcyB3aXNlIHRvIHplcm8gb3V0IHRoZQorICAgYXJlYSAoZXNwLiBmb3IgZGlza3MpIHNvIHRoYXQgbWF4aW1hbCBjb21wcmVzc2lvbiBpcyBhY2hpZXZlZCBmb3IKKyAgIHRoZSB1bnVzZWQgYmxvY2tzIG9mIHRoZSBpbWFnZSB0aGF0IHlvdSBhcmUgYWJvdXQgdG8gY3JlYXRlLgorCisJZGQgaWY9L2Rldi96ZXJvIG9mPS9kZXYvcmFtMCBicz0xayBjb3VudD0yMDQ4CisKK2IpIE1ha2UgYSBmaWxlc3lzdGVtIG9uIGl0LiBTYXkgZXh0MmZzIGZvciB0aGlzIGV4YW1wbGUuCisKKwlta2UyZnMgLXZtMCAvZGV2L3JhbTAgMjA0OAorCitjKSBNb3VudCBpdCwgY29weSB0aGUgZmlsZXMgeW91IHdhbnQgdG8gaXQgKGVnOiAvZXRjLyogL2Rldi8qIC4uLikKKyAgIGFuZCB1bm1vdW50IGl0IGFnYWluLgorCitkKSBDb21wcmVzcyB0aGUgY29udGVudHMgb2YgdGhlIFJBTSBkaXNrLiBUaGUgbGV2ZWwgb2YgY29tcHJlc3Npb24KKyAgIHdpbGwgYmUgYXBwcm94aW1hdGVseSA1MCUgb2YgdGhlIHNwYWNlIHVzZWQgYnkgdGhlIGZpbGVzLiBVbnVzZWQKKyAgIHNwYWNlIG9uIHRoZSBSQU0gZGlzayB3aWxsIGNvbXByZXNzIHRvIGFsbW9zdCBub3RoaW5nLgorCisJZGQgaWY9L2Rldi9yYW0wIGJzPTFrIGNvdW50PTIwNDggfCBnemlwIC12OSA+IC90bXAvcmFtX2ltYWdlLmd6CisKK2UpIFB1dCB0aGUga2VybmVsIG9udG8gdGhlIGZsb3BweQorCisJZGQgaWY9ekltYWdlIG9mPS9kZXYvZmQwIGJzPTFrCisKK2YpIFB1dCB0aGUgUkFNIGRpc2sgaW1hZ2Ugb250byB0aGUgZmxvcHB5LCBhZnRlciB0aGUga2VybmVsLiBVc2UgYW4gb2Zmc2V0CisgICB0aGF0IGlzIHNsaWdodGx5IGxhcmdlciB0aGFuIHRoZSBrZXJuZWwsIHNvIHRoYXQgeW91IGNhbiBwdXQgYW5vdGhlcgorICAgKHBvc3NpYmx5IGxhcmdlcikga2VybmVsIG9udG8gdGhlIHNhbWUgZmxvcHB5IGxhdGVyIHdpdGhvdXQgb3ZlcmxhcHBpbmcKKyAgIHRoZSBSQU0gZGlzayBpbWFnZS4gQW4gb2Zmc2V0IG9mIDQwMCBrQiBmb3Iga2VybmVscyBhYm91dCAzNTAga0IgaW4KKyAgIHNpemUgd291bGQgYmUgcmVhc29uYWJsZS4gTWFrZSBzdXJlIG9mZnNldCtzaXplIG9mIHJhbV9pbWFnZS5neiBpcworICAgbm90IGxhcmdlciB0aGFuIHRoZSB0b3RhbCBzcGFjZSBvbiB5b3VyIGZsb3BweSAodXN1YWxseSAxNDQwIGtCKS4KKworCWRkIGlmPS90bXAvcmFtX2ltYWdlLmd6IG9mPS9kZXYvZmQwIGJzPTFrIHNlZWs9NDAwCisKK2cpIFVzZSAicmRldiIgdG8gc2V0IHRoZSBib290IGRldmljZSwgUkFNIGRpc2sgb2Zmc2V0LCBwcm9tcHQgZmxhZywgZXRjLgorICAgRm9yIHByb21wdF9yYW1kaXNrPTEsIGxvYWRfcmFtZGlzaz0xLCByYW1kaXNrX3N0YXJ0PTQwMCwgb25lIHdvdWxkCisgICBoYXZlIDJeMTUgKyAyXjE0ICsgNDAwID0gNDk1NTIuCisKKwlyZGV2IC9kZXYvZmQwIC9kZXYvZmQwCisJcmRldiAtciAvZGV2L2ZkMCA0OTU1MgorCitUaGF0IGlzIGl0LiBZb3Ugbm93IGhhdmUgeW91ciBib290L3Jvb3QgY29tcHJlc3NlZCBSQU0gZGlzayBmbG9wcHkuIFNvbWUKK3VzZXJzIG1heSB3aXNoIHRvIGNvbWJpbmUgc3RlcHMgKGQpIGFuZCAoZikgYnkgdXNpbmcgYSBwaXBlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQkJCQkJUGF1bCBHb3J0bWFrZXIgMTIvOTUKKworQ2hhbmdlbG9nOgorLS0tLS0tLS0tLQorCisxMC0yMi0wNCA6CVVwZGF0ZWQgdG8gcmVmbGVjdCBjaGFuZ2VzIGluIGNvbW1hbmQgbGluZSBvcHRpb25zLCByZW1vdmUKKwkJb2Jzb2xldGUgcmVmZXJlbmNlcywgZ2VuZXJhbCBjbGVhbnVwLgorCQlKYW1lcyBOZWxzb24gKGphbWVzNDc2NUBnbWFpbC5jb20pCisKKworMTItOTUgOgkJT3JpZ2luYWwgRG9jdW1lbnQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYmxvY2tkZXYvenJhbS50eHQgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L3pyYW0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZGE1MDMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrZGV2L3pyYW0udHh0CkBAIC0wLDAgKzEsMjQ1IEBACit6cmFtOiBDb21wcmVzc2VkIFJBTSBiYXNlZCBibG9jayBkZXZpY2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogSW50cm9kdWN0aW9uCisKK1RoZSB6cmFtIG1vZHVsZSBjcmVhdGVzIFJBTSBiYXNlZCBibG9jayBkZXZpY2VzIG5hbWVkIC9kZXYvenJhbTxpZD4KKyg8aWQ+ID0gMCwgMSwgLi4uKS4gUGFnZXMgd3JpdHRlbiB0byB0aGVzZSBkaXNrcyBhcmUgY29tcHJlc3NlZCBhbmQgc3RvcmVkCitpbiBtZW1vcnkgaXRzZWxmLiBUaGVzZSBkaXNrcyBhbGxvdyB2ZXJ5IGZhc3QgSS9PIGFuZCBjb21wcmVzc2lvbiBwcm92aWRlcworZ29vZCBhbW91bnRzIG9mIG1lbW9yeSBzYXZpbmdzLiBTb21lIG9mIHRoZSB1c2VjYXNlcyBpbmNsdWRlIC90bXAgc3RvcmFnZSwKK3VzZSBhcyBzd2FwIGRpc2tzLCB2YXJpb3VzIGNhY2hlcyB1bmRlciAvdmFyIGFuZCBtYXliZSBtYW55IG1vcmUgOikKKworU3RhdGlzdGljcyBmb3IgaW5kaXZpZHVhbCB6cmFtIGRldmljZXMgYXJlIGV4cG9ydGVkIHRocm91Z2ggc3lzZnMgbm9kZXMgYXQKKy9zeXMvYmxvY2svenJhbTxpZD4vCisKKyogVXNhZ2UKKworVGhlcmUgYXJlIHNldmVyYWwgd2F5cyB0byBjb25maWd1cmUgYW5kIG1hbmFnZSB6cmFtIGRldmljZSgtcyk6CithKSB1c2luZyB6cmFtIGFuZCB6cmFtX2NvbnRyb2wgc3lzZnMgYXR0cmlidXRlcworYikgdXNpbmcgenJhbWN0bCB1dGlsaXR5LCBwcm92aWRlZCBieSB1dGlsLWxpbnV4ICh1dGlsLWxpbnV4QHZnZXIua2VybmVsLm9yZykuCisKK0luIHRoaXMgZG9jdW1lbnQgd2Ugd2lsbCBkZXNjcmliZSBvbmx5ICdtYW51YWwnIHpyYW0gY29uZmlndXJhdGlvbiBzdGVwcywKK0lPVywgenJhbSBhbmQgenJhbV9jb250cm9sIHN5c2ZzIGF0dHJpYnV0ZXMuCisKK0luIG9yZGVyIHRvIGdldCBhIGJldHRlciBpZGVhIGFib3V0IHpyYW1jdGwgcGxlYXNlIGNvbnN1bHQgdXRpbC1saW51eAorZG9jdW1lbnRhdGlvbiwgenJhbWN0bCBtYW4tcGFnZSBvciBgenJhbWN0bCAtLWhlbHAnLiBQbGVhc2UgYmUgaW5mb3JtZWQKK3RoYXQgenJhbSBtYWludGFpbmVycyBkbyBub3QgZGV2ZWxvcC9tYWludGFpbiB1dGlsLWxpbnV4IG9yIHpyYW1jdGwsIHNob3VsZAoreW91IGhhdmUgYW55IHF1ZXN0aW9ucyBwbGVhc2UgY29udGFjdCB1dGlsLWxpbnV4QHZnZXIua2VybmVsLm9yZworCitGb2xsb3dpbmcgc2hvd3MgYSB0eXBpY2FsIHNlcXVlbmNlIG9mIHN0ZXBzIGZvciB1c2luZyB6cmFtLgorCitXQVJOSU5HCis9PT09PT09CitGb3IgdGhlIHNha2Ugb2Ygc2ltcGxpY2l0eSB3ZSBza2lwIGVycm9yIGNoZWNraW5nIHBhcnRzIGluIG1vc3Qgb2YgdGhlCitleGFtcGxlcyBiZWxvdy4gSG93ZXZlciwgaXQgaXMgeW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5IHRvIGhhbmRsZSBlcnJvcnMuCisKK3pyYW0gc3lzZnMgYXR0cmlidXRlcyBhbHdheXMgcmV0dXJuIG5lZ2F0aXZlIHZhbHVlcyBpbiBjYXNlIG9mIGVycm9ycy4KK1RoZSBsaXN0IG9mIHBvc3NpYmxlIHJldHVybiBjb2RlczoKKy1FQlVTWQktLSBhbiBhdHRlbXB0IHRvIG1vZGlmeSBhbiBhdHRyaWJ1dGUgdGhhdCBjYW5ub3QgYmUgY2hhbmdlZCBvbmNlCit0aGUgZGV2aWNlIGhhcyBiZWVuIGluaXRpYWxpc2VkLiBQbGVhc2UgcmVzZXQgZGV2aWNlIGZpcnN0OworLUVOT01FTQktLSB6cmFtIHdhcyBub3QgYWJsZSB0byBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IHRvIGZ1bGZpbCB5b3VyCituZWVkczsKKy1FSU5WQUwJLS0gaW52YWxpZCBpbnB1dCBoYXMgYmVlbiBwcm92aWRlZC4KKworSWYgeW91IHVzZSAnZWNobycsIHRoZSByZXR1cm5lZCB2YWx1ZSB0aGF0IGlzIGNoYW5nZWQgYnkgJ2VjaG8nIHV0aWxpdHksCithbmQsIGluIGdlbmVyYWwgY2FzZSwgc29tZXRoaW5nIGxpa2U6CisKKwllY2hvIDMgPiAvc3lzL2Jsb2NrL3pyYW0wL21heF9jb21wX3N0cmVhbXMKKwlpZiBbICQ/IC1uZSAwIF07CisJCWhhbmRsZV9lcnJvcgorCWZpCisKK3Nob3VsZCBzdWZmaWNlLgorCisxKSBMb2FkIE1vZHVsZToKKwltb2Rwcm9iZSB6cmFtIG51bV9kZXZpY2VzPTQKKwlUaGlzIGNyZWF0ZXMgNCBkZXZpY2VzOiAvZGV2L3pyYW17MCwxLDIsM30KKworbnVtX2RldmljZXMgcGFyYW1ldGVyIGlzIG9wdGlvbmFsIGFuZCB0ZWxscyB6cmFtIGhvdyBtYW55IGRldmljZXMgc2hvdWxkIGJlCitwcmUtY3JlYXRlZC4gRGVmYXVsdDogMS4KKworMikgU2V0IG1heCBudW1iZXIgb2YgY29tcHJlc3Npb24gc3RyZWFtcworCUNvbXByZXNzaW9uIGJhY2tlbmQgbWF5IHVzZSB1cCB0byBtYXhfY29tcF9zdHJlYW1zIGNvbXByZXNzaW9uIHN0cmVhbXMsCisJdGh1cyBhbGxvd2luZyB1cCB0byBtYXhfY29tcF9zdHJlYW1zIGNvbmN1cnJlbnQgY29tcHJlc3Npb24gb3BlcmF0aW9ucy4KKwlCeSBkZWZhdWx0LCBjb21wcmVzc2lvbiBiYWNrZW5kIHVzZXMgc2luZ2xlIGNvbXByZXNzaW9uIHN0cmVhbS4KKworCUV4YW1wbGVzOgorCSNzaG93IG1heCBjb21wcmVzc2lvbiBzdHJlYW1zIG51bWJlcgorCWNhdCAvc3lzL2Jsb2NrL3pyYW0wL21heF9jb21wX3N0cmVhbXMKKworCSNzZXQgbWF4IGNvbXByZXNzaW9uIHN0cmVhbXMgbnVtYmVyIHRvIDMKKwllY2hvIDMgPiAvc3lzL2Jsb2NrL3pyYW0wL21heF9jb21wX3N0cmVhbXMKKworTm90ZToKK0luIG9yZGVyIHRvIGVuYWJsZSBjb21wcmVzc2lvbiBiYWNrZW5kJ3MgbXVsdGkgc3RyZWFtIHN1cHBvcnQgbWF4X2NvbXBfc3RyZWFtcworbXVzdCBiZSBpbml0aWFsbHkgc2V0IHRvIGRlc2lyZWQgY29uY3VycmVuY3kgbGV2ZWwgYmVmb3JlIFpSQU0gZGV2aWNlCitpbml0aWFsaXNhdGlvbi4gT25jZSB0aGUgZGV2aWNlIGluaXRpYWxpc2VkIGFzIGEgc2luZ2xlIHN0cmVhbSBjb21wcmVzc2lvbgorYmFja2VuZCAobWF4X2NvbXBfc3RyZWFtcyBlcXVhbHMgdG8gMSksIHlvdSB3aWxsIHNlZSBlcnJvciBpZiB5b3UgdHJ5IHRvIGNoYW5nZQordGhlIHZhbHVlIG9mIG1heF9jb21wX3N0cmVhbXMgYmVjYXVzZSBzaW5nbGUgc3RyZWFtIGNvbXByZXNzaW9uIGJhY2tlbmQKK2ltcGxlbWVudGVkIGFzIGEgc3BlY2lhbCBjYXNlIGJ5IGxvY2sgb3ZlcmhlYWQgaXNzdWUgYW5kIGRvZXMgbm90IHN1cHBvcnQKK2R5bmFtaWMgbWF4X2NvbXBfc3RyZWFtcy4gT25seSBtdWx0aSBzdHJlYW0gYmFja2VuZCBzdXBwb3J0cyBkeW5hbWljCittYXhfY29tcF9zdHJlYW1zIGFkanVzdG1lbnQuCisKKzMpIFNlbGVjdCBjb21wcmVzc2lvbiBhbGdvcml0aG0KKwlVc2luZyBjb21wX2FsZ29yaXRobSBkZXZpY2UgYXR0cmlidXRlIG9uZSBjYW4gc2VlIGF2YWlsYWJsZSBhbmQKKwljdXJyZW50bHkgc2VsZWN0ZWQgKHNob3duIGluIHNxdWFyZSBicmFja2V0cykgY29tcHJlc3Npb24gYWxnb3JpdGhtcywKKwljaGFuZ2Ugc2VsZWN0ZWQgY29tcHJlc3Npb24gYWxnb3JpdGhtIChvbmNlIHRoZSBkZXZpY2UgaXMgaW5pdGlhbGlzZWQKKwl0aGVyZSBpcyBubyB3YXkgdG8gY2hhbmdlIGNvbXByZXNzaW9uIGFsZ29yaXRobSkuCisKKwlFeGFtcGxlczoKKwkjc2hvdyBzdXBwb3J0ZWQgY29tcHJlc3Npb24gYWxnb3JpdGhtcworCWNhdCAvc3lzL2Jsb2NrL3pyYW0wL2NvbXBfYWxnb3JpdGhtCisJbHpvIFtsejRdCisKKwkjc2VsZWN0IGx6byBjb21wcmVzc2lvbiBhbGdvcml0aG0KKwllY2hvIGx6byA+IC9zeXMvYmxvY2svenJhbTAvY29tcF9hbGdvcml0aG0KKworNCkgU2V0IERpc2tzaXplCisgICAgICAgIFNldCBkaXNrIHNpemUgYnkgd3JpdGluZyB0aGUgdmFsdWUgdG8gc3lzZnMgbm9kZSAnZGlza3NpemUnLgorICAgICAgICBUaGUgdmFsdWUgY2FuIGJlIGVpdGhlciBpbiBieXRlcyBvciB5b3UgY2FuIHVzZSBtZW0gc3VmZml4ZXMuCisgICAgICAgIEV4YW1wbGVzOgorICAgICAgICAgICAgIyBJbml0aWFsaXplIC9kZXYvenJhbTAgd2l0aCA1ME1CIGRpc2tzaXplCisgICAgICAgICAgICBlY2hvICQoKDUwKjEwMjQqMTAyNCkpID4gL3N5cy9ibG9jay96cmFtMC9kaXNrc2l6ZQorCisgICAgICAgICAgICAjIFVzaW5nIG1lbSBzdWZmaXhlcworICAgICAgICAgICAgZWNobyAyNTZLID4gL3N5cy9ibG9jay96cmFtMC9kaXNrc2l6ZQorICAgICAgICAgICAgZWNobyA1MTJNID4gL3N5cy9ibG9jay96cmFtMC9kaXNrc2l6ZQorICAgICAgICAgICAgZWNobyAxRyA+IC9zeXMvYmxvY2svenJhbTAvZGlza3NpemUKKworTm90ZToKK1RoZXJlIGlzIGxpdHRsZSBwb2ludCBjcmVhdGluZyBhIHpyYW0gb2YgZ3JlYXRlciB0aGFuIHR3aWNlIHRoZSBzaXplIG9mIG1lbW9yeQorc2luY2Ugd2UgZXhwZWN0IGEgMjoxIGNvbXByZXNzaW9uIHJhdGlvLiBOb3RlIHRoYXQgenJhbSB1c2VzIGFib3V0IDAuMSUgb2YgdGhlCitzaXplIG9mIHRoZSBkaXNrIHdoZW4gbm90IGluIHVzZSBzbyBhIGh1Z2UgenJhbSBpcyB3YXN0ZWZ1bC4KKworNSkgU2V0IG1lbW9yeSBsaW1pdDogT3B0aW9uYWwKKwlTZXQgbWVtb3J5IGxpbWl0IGJ5IHdyaXRpbmcgdGhlIHZhbHVlIHRvIHN5c2ZzIG5vZGUgJ21lbV9saW1pdCcuCisJVGhlIHZhbHVlIGNhbiBiZSBlaXRoZXIgaW4gYnl0ZXMgb3IgeW91IGNhbiB1c2UgbWVtIHN1ZmZpeGVzLgorCUluIGFkZGl0aW9uLCB5b3UgY291bGQgY2hhbmdlIHRoZSB2YWx1ZSBpbiBydW50aW1lLgorCUV4YW1wbGVzOgorCSAgICAjIGxpbWl0IC9kZXYvenJhbTAgd2l0aCA1ME1CIG1lbW9yeQorCSAgICBlY2hvICQoKDUwKjEwMjQqMTAyNCkpID4gL3N5cy9ibG9jay96cmFtMC9tZW1fbGltaXQKKworCSAgICAjIFVzaW5nIG1lbSBzdWZmaXhlcworCSAgICBlY2hvIDI1NksgPiAvc3lzL2Jsb2NrL3pyYW0wL21lbV9saW1pdAorCSAgICBlY2hvIDUxMk0gPiAvc3lzL2Jsb2NrL3pyYW0wL21lbV9saW1pdAorCSAgICBlY2hvIDFHID4gL3N5cy9ibG9jay96cmFtMC9tZW1fbGltaXQKKworCSAgICAjIFRvIGRpc2FibGUgbWVtb3J5IGxpbWl0CisJICAgIGVjaG8gMCA+IC9zeXMvYmxvY2svenJhbTAvbWVtX2xpbWl0CisKKzYpIEFjdGl2YXRlOgorCW1rc3dhcCAvZGV2L3pyYW0wCisJc3dhcG9uIC9kZXYvenJhbTAKKworCW1rZnMuZXh0NCAvZGV2L3pyYW0xCisJbW91bnQgL2Rldi96cmFtMSAvdG1wCisKKzcpIEFkZC9yZW1vdmUgenJhbSBkZXZpY2VzCisKK3pyYW0gcHJvdmlkZXMgYSBjb250cm9sIGludGVyZmFjZSwgd2hpY2ggZW5hYmxlcyBkeW5hbWljIChvbi1kZW1hbmQpIGRldmljZQorYWRkaXRpb24gYW5kIHJlbW92YWwuCisKK0luIG9yZGVyIHRvIGFkZCBhIG5ldyAvZGV2L3pyYW1YIGRldmljZSwgcGVyZm9ybSByZWFkIG9wZXJhdGlvbiBvbiBob3RfYWRkCithdHRyaWJ1dGUuIFRoaXMgd2lsbCByZXR1cm4gZWl0aGVyIG5ldyBkZXZpY2UncyBkZXZpY2UgaWQgKG1lYW5pbmcgdGhhdCB5b3UKK2NhbiB1c2UgL2Rldi96cmFtPGlkPikgb3IgZXJyb3IgY29kZS4KKworRXhhbXBsZToKKwljYXQgL3N5cy9jbGFzcy96cmFtLWNvbnRyb2wvaG90X2FkZAorCTEKKworVG8gcmVtb3ZlIHRoZSBleGlzdGluZyAvZGV2L3pyYW1YIGRldmljZSAod2hlcmUgWCBpcyBhIGRldmljZSBpZCkKK2V4ZWN1dGUKKwllY2hvIFggPiAvc3lzL2NsYXNzL3pyYW0tY29udHJvbC9ob3RfcmVtb3ZlCisKKzgpIFN0YXRzOgorUGVyLWRldmljZSBzdGF0aXN0aWNzIGFyZSBleHBvcnRlZCBhcyB2YXJpb3VzIG5vZGVzIHVuZGVyIC9zeXMvYmxvY2svenJhbTxpZD4vCisKK0EgYnJpZWYgZGVzY3JpcHRpb24gb2YgZXhwb3J0ZWQgZGV2aWNlIGF0dHJpYnV0ZXMuIEZvciBtb3JlIGRldGFpbHMgcGxlYXNlCityZWFkIERvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYmxvY2stenJhbS4KKworTmFtZSAgICAgICAgICAgIGFjY2VzcyAgICAgICAgICAgIGRlc2NyaXB0aW9uCistLS0tICAgICAgICAgICAgLS0tLS0tICAgICAgICAgICAgLS0tLS0tLS0tLS0KK2Rpc2tzaXplICAgICAgICAgIFJXICAgIHNob3cgYW5kIHNldCB0aGUgZGV2aWNlJ3MgZGlzayBzaXplCitpbml0c3RhdGUgICAgICAgICBSTyAgICBzaG93cyB0aGUgaW5pdGlhbGl6YXRpb24gc3RhdGUgb2YgdGhlIGRldmljZQorcmVzZXQgICAgICAgICAgICAgV08gICAgdHJpZ2dlciBkZXZpY2UgcmVzZXQKK251bV9yZWFkcyAgICAgICAgIFJPICAgIHRoZSBudW1iZXIgb2YgcmVhZHMKK2ZhaWxlZF9yZWFkcyAgICAgIFJPICAgIHRoZSBudW1iZXIgb2YgZmFpbGVkIHJlYWRzCitudW1fd3JpdGUgICAgICAgICBSTyAgICB0aGUgbnVtYmVyIG9mIHdyaXRlcworZmFpbGVkX3dyaXRlcyAgICAgUk8gICAgdGhlIG51bWJlciBvZiBmYWlsZWQgd3JpdGVzCitpbnZhbGlkX2lvICAgICAgICBSTyAgICB0aGUgbnVtYmVyIG9mIG5vbi1wYWdlLXNpemUtYWxpZ25lZCBJL08gcmVxdWVzdHMKK21heF9jb21wX3N0cmVhbXMgIFJXICAgIHRoZSBudW1iZXIgb2YgcG9zc2libGUgY29uY3VycmVudCBjb21wcmVzcyBvcGVyYXRpb25zCitjb21wX2FsZ29yaXRobSAgICBSVyAgICBzaG93IGFuZCBjaGFuZ2UgdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobQorbm90aWZ5X2ZyZWUgICAgICAgUk8gICAgdGhlIG51bWJlciBvZiBub3RpZmljYXRpb25zIHRvIGZyZWUgcGFnZXMgKGVpdGhlcgorICAgICAgICAgICAgICAgICAgICAgICAgc2xvdCBmcmVlIG5vdGlmaWNhdGlvbnMgb3IgUkVRX0RJU0NBUkQgcmVxdWVzdHMpCit6ZXJvX3BhZ2VzICAgICAgICBSTyAgICB0aGUgbnVtYmVyIG9mIHplcm8gZmlsbGVkIHBhZ2VzIHdyaXR0ZW4gdG8gdGhpcyBkaXNrCitvcmlnX2RhdGFfc2l6ZSAgICBSTyAgICB1bmNvbXByZXNzZWQgc2l6ZSBvZiBkYXRhIHN0b3JlZCBpbiB0aGlzIGRpc2sKK2NvbXByX2RhdGFfc2l6ZSAgIFJPICAgIGNvbXByZXNzZWQgc2l6ZSBvZiBkYXRhIHN0b3JlZCBpbiB0aGlzIGRpc2sKK21lbV91c2VkX3RvdGFsICAgIFJPICAgIHRoZSBhbW91bnQgb2YgbWVtb3J5IGFsbG9jYXRlZCBmb3IgdGhpcyBkaXNrCittZW1fdXNlZF9tYXggICAgICBSVyAgICB0aGUgbWF4aW11bSBhbW91bnQgb2YgbWVtb3J5IHpyYW0gaGF2ZSBjb25zdW1lZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUgdGhlIGRhdGEgKHRvIHJlc2V0IHRoaXMgY291bnRlciB0byB0aGUgYWN0dWFsCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50IHZhbHVlLCB3cml0ZSAxIHRvIHRoaXMgYXR0cmlidXRlKQorbWVtX2xpbWl0ICAgICAgICAgUlcgICAgdGhlIG1heGltdW0gYW1vdW50IG9mIG1lbW9yeSBaUkFNIGNhbiB1c2UgdG8gc3RvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb21wcmVzc2VkIGRhdGEKK3BhZ2VzX2NvbXBhY3RlZCAgIFJPICAgIHRoZSBudW1iZXIgb2YgcGFnZXMgZnJlZWQgZHVyaW5nIGNvbXBhY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIChhdmFpbGFibGUgb25seSB2aWEgenJhbTxpZD4vbW1fc3RhdCBub2RlKQorY29tcGFjdCAgICAgICAgICAgV08gICAgdHJpZ2dlciBtZW1vcnkgY29tcGFjdGlvbgorCitXQVJOSU5HCis9PT09PT09CitwZXItc3RhdCBzeXNmcyBhdHRyaWJ1dGVzIGFyZSBjb25zaWRlcmVkIHRvIGJlIGRlcHJlY2F0ZWQuCitUaGUgYmFzaWMgc3RyYXRlZ3kgaXM6CistLSB0aGUgZXhpc3RpbmcgUlcgbm9kZXMgd2lsbCBiZSBkb3duZ3JhZGVkIHRvIFdPIG5vZGVzIChpbiBsaW51eCA0LjExKQorLS0gZGVwcmVjYXRlZCBSTyBzeXNmcyBub2RlcyB3aWxsIGV2ZW50dWFsbHkgYmUgcmVtb3ZlZCAoaW4gbGludXggNC4xMSkKKworVGhlIGxpc3Qgb2YgZGVwcmVjYXRlZCBhdHRyaWJ1dGVzIGNhbiBiZSBmb3VuZCBoZXJlOgorRG9jdW1lbnRhdGlvbi9BQkkvb2Jzb2xldGUvc3lzZnMtYmxvY2stenJhbQorCitCYXNpY2FsbHksIGV2ZXJ5IGF0dHJpYnV0ZSB0aGF0IGhhcyBpdHMgb3duIHJlYWQgYWNjZXNzaWJsZSBzeXNmcyBub2RlCisoZS5nLiBudW1fcmVhZHMpICpBTkQqIGlzIGFjY2Vzc2libGUgdmlhIG9uZSBvZiB0aGUgc3RhdCBmaWxlcyAoenJhbTxpZD4vc3RhdAorb3IgenJhbTxpZD4vaW9fc3RhdCBvciB6cmFtPGlkPi9tbV9zdGF0KSBpcyBjb25zaWRlcmVkIHRvIGJlIGRlcHJlY2F0ZWQuCisKK1VzZXIgc3BhY2UgaXMgYWR2aXNlZCB0byB1c2UgdGhlIGZvbGxvd2luZyBmaWxlcyB0byByZWFkIHRoZSBkZXZpY2Ugc3RhdGlzdGljcy4KKworRmlsZSAvc3lzL2Jsb2NrL3pyYW08aWQ+L3N0YXQKKworUmVwcmVzZW50cyBibG9jayBsYXllciBzdGF0aXN0aWNzLiBSZWFkIERvY3VtZW50YXRpb24vYmxvY2svc3RhdC50eHQgZm9yCitkZXRhaWxzLgorCitGaWxlIC9zeXMvYmxvY2svenJhbTxpZD4vaW9fc3RhdAorCitUaGUgc3RhdCBmaWxlIHJlcHJlc2VudHMgZGV2aWNlJ3MgSS9PIHN0YXRpc3RpY3Mgbm90IGFjY291bnRlZCBieSBibG9jaworbGF5ZXIgYW5kLCB0aHVzLCBub3QgYXZhaWxhYmxlIGluIHpyYW08aWQ+L3N0YXQgZmlsZS4gSXQgY29uc2lzdHMgb2YgYQorc2luZ2xlIGxpbmUgb2YgdGV4dCBhbmQgY29udGFpbnMgdGhlIGZvbGxvd2luZyBzdGF0cyBzZXBhcmF0ZWQgYnkKK3doaXRlc3BhY2U6CisJZmFpbGVkX3JlYWRzCisJZmFpbGVkX3dyaXRlcworCWludmFsaWRfaW8KKwlub3RpZnlfZnJlZQorCitGaWxlIC9zeXMvYmxvY2svenJhbTxpZD4vbW1fc3RhdAorCitUaGUgc3RhdCBmaWxlIHJlcHJlc2VudHMgZGV2aWNlJ3MgbW0gc3RhdGlzdGljcy4gSXQgY29uc2lzdHMgb2YgYSBzaW5nbGUKK2xpbmUgb2YgdGV4dCBhbmQgY29udGFpbnMgdGhlIGZvbGxvd2luZyBzdGF0cyBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZToKKwlvcmlnX2RhdGFfc2l6ZQorCWNvbXByX2RhdGFfc2l6ZQorCW1lbV91c2VkX3RvdGFsCisJbWVtX2xpbWl0CisJbWVtX3VzZWRfbWF4CisJemVyb19wYWdlcworCW51bV9taWdyYXRlZAorCis5KSBEZWFjdGl2YXRlOgorCXN3YXBvZmYgL2Rldi96cmFtMAorCXVtb3VudCAvZGV2L3pyYW0xCisKKzEwKSBSZXNldDoKKwlXcml0ZSBhbnkgcG9zaXRpdmUgdmFsdWUgdG8gJ3Jlc2V0JyBzeXNmcyBub2RlCisJZWNobyAxID4gL3N5cy9ibG9jay96cmFtMC9yZXNldAorCWVjaG8gMSA+IC9zeXMvYmxvY2svenJhbTEvcmVzZXQKKworCVRoaXMgZnJlZXMgYWxsIHRoZSBtZW1vcnkgYWxsb2NhdGVkIGZvciB0aGUgZ2l2ZW4gZGV2aWNlIGFuZAorCXJlc2V0cyB0aGUgZGlza3NpemUgdG8gemVyby4gWW91IG11c3Qgc2V0IHRoZSBkaXNrc2l6ZSBhZ2FpbgorCWJlZm9yZSByZXVzaW5nIHRoZSBkZXZpY2UuCisKK05pdGluIEd1cHRhCituZ3VwdGFAdmZsYXJlLm9yZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9icmFpbGxlLWNvbnNvbGUudHh0IGIvRG9jdW1lbnRhdGlvbi9icmFpbGxlLWNvbnNvbGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwZDA0MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2JyYWlsbGUtY29uc29sZS50eHQKQEAgLTAsMCArMSwzNCBAQAorICAgICAgICAgICAgICAgICAgICAgICBMaW51eCBCcmFpbGxlIENvbnNvbGUKKworVG8gZ2V0IGVhcmx5IGJvb3QgbWVzc2FnZXMgb24gYSBicmFpbGxlIGRldmljZSAoYmVmb3JlIHVzZXJzcGFjZSBzY3JlZW4KK3JlYWRlcnMgY2FuIHN0YXJ0KSwgeW91IGZpcnN0IG5lZWQgdG8gY29tcGlsZSB0aGUgc3VwcG9ydCBmb3IgdGhlIHVzdWFsIHNlcmlhbAorY29uc29sZSAoc2VlIHNlcmlhbC1jb25zb2xlLnR4dCksIGFuZCBmb3IgYnJhaWxsZSBkZXZpY2UgKGluIERldmljZSBEcml2ZXJzIC0KK0FjY2Vzc2liaWxpdHkpLgorCitUaGVuIHlvdSBuZWVkIHRvIHNwZWNpZnkgYSBjb25zb2xlPWJybCwgb3B0aW9uIG9uIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lLCB0aGUKK2Zvcm1hdCBpczoKKworCWNvbnNvbGU9YnJsLHNlcmlhbF9vcHRpb25zLi4uCisKK3doZXJlIHNlcmlhbF9vcHRpb25zLi4uIGFyZSB0aGUgc2FtZSBhcyBkZXNjcmliZWQgaW4gc2VyaWFsLWNvbnNvbGUudHh0CisKK1NvIGZvciBpbnN0YW5jZSB5b3UgY2FuIHVzZSBjb25zb2xlPWJybCx0dHlTMCBpZiB0aGUgYnJhaWxsZSBkZXZpY2UgaXMgY29ubmVjdGVkCit0byB0aGUgZmlyc3Qgc2VyaWFsIHBvcnQsIGFuZCBjb25zb2xlPWJybCx0dHlTMCwxMTUyMDAgdG8gb3ZlcnJpZGUgdGhlIGJhdWQgcmF0ZQordG8gMTE1MjAwLCBldGMuCisKK0J5IGRlZmF1bHQsIHRoZSBicmFpbGxlIGRldmljZSB3aWxsIGp1c3Qgc2hvdyB0aGUgbGFzdCBrZXJuZWwgbWVzc2FnZSAoY29uc29sZQorbW9kZSkuICBUbyByZXZpZXcgcHJldmlvdXMgbWVzc2FnZXMsIHByZXNzIHRoZSBJbnNlcnQga2V5IHRvIHN3aXRjaCB0byB0aGUgVlQKK3JldmlldyBtb2RlLiAgSW4gcmV2aWV3IG1vZGUsIHRoZSBhcnJvdyBrZXlzIHBlcm1pdCB0byBicm93c2UgaW4gdGhlIFZUIGNvbnRlbnQsCitwYWdlIHVwL2Rvd24ga2V5cyBnbyBhdCB0aGUgdG9wL2JvdHRvbSBvZiB0aGUgc2NyZWVuLCBhbmQgdGhlIGhvbWUga2V5IGdvZXMgYmFjawordG8gdGhlIGN1cnNvciwgaGVuY2UgcHJvdmlkaW5nIHZlcnkgYmFzaWMgc2NyZWVuIHJldmlld2luZyBmYWNpbGl0eS4KKworU291bmQgZmVlZGJhY2sgY2FuIGJlIG9idGFpbmVkIGJ5IGFkZGluZyB0aGUgYnJhaWxsZV9jb25zb2xlLnNvdW5kPTEga2VybmVsCitwYXJhbWV0ZXIuCisKK0ZvciBzaW1wbGljaXR5LCBvbmx5IG9uZSBicmFpbGxlIGNvbnNvbGUgY2FuIGJlIGVuYWJsZWQsIG90aGVyIHVzZXMgb2YKK2NvbnNvbGU9YnJsLC4uLiB3aWxsIGJlIGRpc2NhcmRlZC4gIEFsc28gbm90ZSB0aGF0IGl0IGRvZXMgbm90IGludGVyZmVyZSB3aXRoCit0aGUgY29uc29sZSBzZWxlY3Rpb24gbWVjaGFuaXNtIGRlc2NyaWJlZCBpbiBzZXJpYWwtY29uc29sZS50eHQKKworRm9yIG5vdywgb25seSB0aGUgVmlzaW9CcmFpbGxlIGRldmljZSBpcyBzdXBwb3J0ZWQuCisKK1NhbXVlbCBUaGliYXVsdCA8c2FtdWVsLnRoaWJhdWx0QGVucy1seW9uLm9yZz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYnQ4eHhncGlvLnR4dCBiL0RvY3VtZW50YXRpb24vYnQ4eHhncGlvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODI5N2U0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9idDh4eGdwaW8udHh0CkBAIC0wLDAgKzEsNjcgQEAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorPT0gIEJUOFhYR1BJTyBkcml2ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09Cis9PSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0KKz09ICBBIGRyaXZlciBmb3IgYSBzZWxmbWFkZSBjaGVhcCBCVDh4eCBiYXNlZCBQQ0kgR1BJTy1jYXJkICA9PQorPT0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09Cis9PSAgRm9yIGFkdmFuY2VkIGRvY3VtZW50YXRpb24sIHNlZSAgICAgICAgICAgICAgICAgICAgICAgICAgPT0KKz09ICBodHRwOi8vd3d3LmJ1M3NjaC5kZS9idGdwaW8ucGhwICAgICAgICAgICAgICAgICAgICAgICAgICA9PQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworQSBnZW5lcmljIGRpZ2l0YWwgMjQtcG9ydCBQQ0kgR1BJTyBjYXJkIGNhbiBiZSBidWlsdCBvdXQgb2YgYW4gb3JkaW5hcnkKK0Jyb29rdHJlZSBidDg0OCwgYnQ4NDksIGJ0ODc4IG9yIGJ0ODc5IGJhc2VkIGFuYWxvZyBUViB0dW5lciBjYXJkLiBUaGUKK0Jyb29rdHJlZSBjaGlwIGlzIHVzZWQgaW4gb2xkIGFuYWxvZyBIYXVwcGF1Z2UgV2luVFYgUENJIGNhcmRzLiBZb3UgY2FuIGVhc2lseQorZmluZCB0aGVtIHVzZWQgZm9yIGxvdyBwcmljZXMgb24gdGhlIG5ldC4KKworVGhlIGJ0OHh4IGNoaXAgZG9lcyBoYXZlIDI0IGRpZ2l0YWwgR1BJTyBwb3J0cy4KK1RoZXNlIHBvcnRzIGFyZSBhY2Nlc3NpYmxlIHZpYSAyNCBwaW5zIG9uIHRoZSBTTUQgY2hpcCBwYWNrYWdlLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKz09ICBIb3cgdG8gcGh5c2ljYWxseSBhY2Nlc3MgdGhlIEdQSU8gcGlucyAgPT0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGFyZSBzZXZlcmFsIHdheXMgdG8gYWNjZXNzIHRoZXNlIHBpbnMuIE9uZSBtaWdodCB1bnNvbGRlciB0aGUgd2hvbGUgY2hpcAorYW5kIHB1dCBpdCBvbiBhIGN1c3RvbSBQQ0kgYm9hcmQsIG9yIG9uZSBtaWdodCBvbmx5IHVuc29sZGVyIGVhY2ggaW5kaXZpZHVhbAorR1BJTyBwaW4gYW5kIHNvbGRlciB0aGF0IHRvIHNvbWUgdGlueSB3aXJlLiBBcyB0aGUgY2hpcCBwYWNrYWdlIHJlYWxseSBpcyB0aW55Cit0aGVyZSBhcmUgc29tZSBhZHZhbmNlZCBzb2xkZXJpbmcgc2tpbGxzIG5lZWRlZCBpbiBhbnkgY2FzZS4KKworVGhlIHBoeXNpY2FsIHBpbm91dHMgYXJlIGRyYXduIGluIHRoZSBmb2xsb3dpbmcgQVNDSUkgYXJ0LgorVGhlIEdQSU8gcGlucyBhcmUgbWFya2VkIHdpdGggRzAwLUcyMworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRyBHIEcgRyBHIEcgRyBHIEcgRyBHIEcgICAgIEcgRyBHIEcgRyBHCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxIDEgICAgIDEgMSAxIDEgMSAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAxIDIgMyA0IDUgNiA3IDggOSAwIDEgICAgIDIgMyA0IDUgNiA3CisgICAgICAgICAgIHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfAorICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIC0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICB8LS0KKyAgICAgICAgIC0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW4gODYgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW4gNjcgICB8LS0KKyAgICAgICAgIC0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0KKyAgICAgICAgIC0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbiA2MSA+ICB8LS0gRzE4CisgICAgICAgICAtLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfC0tIEcxOQorICAgICAgICAgLS18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwtLSBHMjAKKyAgICAgICAgIC0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0gRzIxCisgICAgICAgICAtLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfC0tIEcyMgorICAgICAgICAgLS18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGluIDU2ID4gIHwtLSBHMjMKKyAgICAgICAgIC0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0KKyAgICAgICAgIC0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgIEJyb29rdHJlZSA4NzgvODc5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0KKyAgICAgICAgIC0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0KKyAgICAgICAgIC0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0KKyAgICAgICAgIC0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0KKyAgICAgICAgIC0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0KKyAgICAgICAgIC0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0KKyAgICAgICAgIC0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0KKyAgICAgICAgIC0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0KKyAgICAgICAgIC0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0KKyAgICAgICAgIC0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0KKyAgICAgICAgIC0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0KKyAgICAgICAgIC0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0KKyAgICAgICAgIC0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0KKyAgICAgICAgIC0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0KKyAgICAgICAgIC0tfCAgIE8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0KKyAgICAgICAgIC0tfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0KKyAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfAorICAgICAgICAgICBeCisgICAgICAgICAgIFRoaXMgaXMgcGluIDEKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9idG1ydmwudHh0IGIvRG9jdW1lbnRhdGlvbi9idG1ydmwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0OTE2YTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2J0bXJ2bC50eHQKQEAgLTAsMCArMSwxMTkgQEAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJCVJFQURNRSBmb3IgYnRtcnZsIGRyaXZlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCitBbGwgY29tbWFuZHMgYXJlIHVzZWQgdmlhIGRlYnVnZnMgaW50ZXJmYWNlLgorCis9PT09PT09PT09PT09PT09PT09PT0KK1NldC9nZXQgZHJpdmVyIGNvbmZpZ3VyYXRpb25zOgorCitQYXRoOgkvZGVidWcvYnRtcnZsL2NvbmZpZy8KKworZ3Bpb2dhcD1bbl0KK2hzY2ZnY21kCisJVGhlc2UgY29tbWFuZHMgYXJlIHVzZWQgdG8gY29uZmlndXJlIHRoZSBob3N0IHNsZWVwIHBhcmFtZXRlcnMuCisJYml0IDg6MCAgLS0gR2FwCisJYml0IDE2OjggLS0gR1BJTworCisJd2hlcmUgR1BJTyBpcyB0aGUgcGluIG51bWJlciBvZiBHUElPIHVzZWQgdG8gd2FrZSB1cCB0aGUgaG9zdC4KKwlJdCBjb3VsZCBiZSBhbnkgdmFsaWQgR1BJTyBwaW4jIChlLmcuIDAtNykgb3IgMHhmZiAoU0RJTyBpbnRlcmZhY2UKKwl3YWtldXAgd2lsbCBiZSB1c2VkIGluc3RlYWQpLgorCisJd2hlcmUgR2FwIGlzIHRoZSBnYXAgaW4gbWlsbGkgc2Vjb25kcyBiZXR3ZWVuIHdha2V1cCBzaWduYWwgYW5kCisJd2FrZXVwIGV2ZW50LCBvciAweGZmIGZvciBzcGVjaWFsIGhvc3Qgc2xlZXAgc2V0dGluZy4KKworCVVzYWdlOgorCQkjIFVzZSBTRElPIGludGVyZmFjZSB0byB3YWtlIHVwIHRoZSBob3N0IGFuZCBzZXQgR0FQIHRvIDB4ODA6CisJCWVjaG8gMHhmZjgwID4gL2RlYnVnL2J0bXJ2bC9jb25maWcvZ3Bpb2dhcAorCQllY2hvIDEgPiAvZGVidWcvYnRtcnZsL2NvbmZpZy9oc2NmZ2NtZAorCisJCSMgVXNlIEdQSU8gcGluICMzIHRvIHdha2UgdXAgdGhlIGhvc3QgYW5kIHNldCBHQVAgdG8gMHhmZjoKKwkJZWNobyAweDAzZmYgPiAgL2RlYnVnL2J0bXJ2bC9jb25maWcvZ3Bpb2dhcAorCQllY2hvIDEgPiAvZGVidWcvYnRtcnZsL2NvbmZpZy9oc2NmZ2NtZAorCitwc21vZGU9W25dCitwc2NtZAorCVRoZXNlIGNvbW1hbmRzIGFyZSB1c2VkIHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8gc2xlZXAgbW9kZQorCisJd2hlcmUgdGhlIG9wdGlvbiBpczoKKwkJCTEgCS0tIEVuYWJsZSBhdXRvIHNsZWVwIG1vZGUKKwkJCTAgCS0tIERpc2FibGUgYXV0byBzbGVlcCBtb2RlCisKKwlVc2FnZToKKwkJIyBFbmFibGUgYXV0byBzbGVlcCBtb2RlCisJCWVjaG8gMSA+IC9kZWJ1Zy9idG1ydmwvY29uZmlnL3BzbW9kZQorCQllY2hvIDEgPiAvZGVidWcvYnRtcnZsL2NvbmZpZy9wc2NtZAorCisJCSMgRGlzYWJsZSBhdXRvIHNsZWVwIG1vZGUKKwkJZWNobyAwID4gL2RlYnVnL2J0bXJ2bC9jb25maWcvcHNtb2RlCisJCWVjaG8gMSA+IC9kZWJ1Zy9idG1ydmwvY29uZmlnL3BzY21kCisKKworaHNtb2RlPVtuXQoraHNjbWQKKwlUaGVzZSBjb21tYW5kcyBhcmUgdXNlZCB0byBlbmFibGUgaG9zdCBzbGVlcCBvciB3YWtlIHVwIGZpcm13YXJlCisKKwl3aGVyZSB0aGUgb3B0aW9uIGlzOgorCQkJMQktLSBFbmFibGUgaG9zdCBzbGVlcAorCQkJMAktLSBXYWtlIHVwIGZpcm13YXJlCisKKwlVc2FnZToKKwkJIyBFbmFibGUgaG9zdCBzbGVlcAorCQllY2hvIDEgPiAvZGVidWcvYnRtcnZsL2NvbmZpZy9oc21vZGUKKwkJZWNobyAxID4gL2RlYnVnL2J0bXJ2bC9jb25maWcvaHNjbWQKKworCQkjIFdha2UgdXAgZmlybXdhcmUKKwkJZWNobyAwID4gL2RlYnVnL2J0bXJ2bC9jb25maWcvaHNtb2RlCisJCWVjaG8gMSA+IC9kZWJ1Zy9idG1ydmwvY29uZmlnL2hzY21kCisKKworPT09PT09PT09PT09PT09PT09PT09PQorR2V0IGRyaXZlciBzdGF0dXM6CisKK1BhdGg6CS9kZWJ1Zy9idG1ydmwvc3RhdHVzLworCitVc2FnZToKKwljYXQgL2RlYnVnL2J0bXJ2bC9zdGF0dXMvPGFyZ3M+CisKK3doZXJlIHRoZSBhcmdzIGFyZToKKworY3VycHNtb2RlCisJVGhpcyBjb21tYW5kIGRpc3BsYXlzIGN1cnJlbnQgYXV0byBzbGVlcCBzdGF0dXMuCisKK3Bzc3RhdGUKKwlUaGlzIGNvbW1hbmQgZGlzcGxheSB0aGUgcG93ZXIgc2F2ZSBzdGF0ZS4KKworaHNzdGF0ZQorCVRoaXMgY29tbWFuZCBkaXNwbGF5IHRoZSBob3N0IHNsZWVwIHN0YXRlLgorCit0eGRubGRyZHkKKwlUaGlzIGNvbW1hbmQgZGlzcGxheXMgdGhlIHZhbHVlIG9mIFR4IGRvd25sb2FkIHJlYWR5IGZsYWcuCisKKworPT09PT09PT09PT09PT09PT09PT09CisKK1VzZSBoY2l0b29sIHRvIGlzc3VlIHJhdyBoY2kgY29tbWFuZCwgcmVmZXIgdG8gaGNpdG9vbCBtYW51YWwKKworCVVzYWdlOiBIY2l0b29sIGNtZCA8b2dmPiA8b2NmPiBbUGFyYW1ldGVyc10KKworCUludGVyZmFjZSBDb250cm9sIENvbW1hbmQKKwloY2l0b29sIGNtZCAweDNmIDB4NWIgMHhmNSAweDAxIDB4MDAgICAgLS1FbmFibGUgQWxsIGludGVyZmFjZQorCWhjaXRvb2wgY21kIDB4M2YgMHg1YiAweGY1IDB4MDEgMHgwMSAgICAtLUVuYWJsZSBXbGFuIGludGVyZmFjZQorCWhjaXRvb2wgY21kIDB4M2YgMHg1YiAweGY1IDB4MDEgMHgwMiAgICAtLUVuYWJsZSBCVCBpbnRlcmZhY2UKKwloY2l0b29sIGNtZCAweDNmIDB4NWIgMHhmNSAweDAwIDB4MDAgICAgLS1EaXNhYmxlIEFsbCBpbnRlcmZhY2UKKwloY2l0b29sIGNtZCAweDNmIDB4NWIgMHhmNSAweDAwIDB4MDEgICAgLS1EaXNhYmxlIFdsYW4gaW50ZXJmYWNlCisJaGNpdG9vbCBjbWQgMHgzZiAweDViIDB4ZjUgMHgwMCAweDAyICAgIC0tRGlzYWJsZSBCVCBpbnRlcmZhY2UKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCitTRDg2ODggZmlybXdhcmU6CisKKy9saWIvZmlybXdhcmUvc2Q4Njg4X2hlbHBlci5iaW4KKy9saWIvZmlybXdhcmUvc2Q4Njg4LmJpbgorCisKK1RoZSBpbWFnZXMgY2FuIGJlIGRvd25sb2FkZWQgZnJvbToKKworZ2l0LmluZnJhZGVhZC5vcmcvdXNlcnMvZHdtdzIvbGludXgtZmlybXdhcmUuZ2l0L2xpYmVydGFzLwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9idXMtZGV2aWNlcy90aS1ncG1jLnR4dCBiL0RvY3VtZW50YXRpb24vYnVzLWRldmljZXMvdGktZ3BtYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M5Y2U1NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vYnVzLWRldmljZXMvdGktZ3BtYy50eHQKQEAgLTAsMCArMSwxMjIgQEAKK0dQTUMgKEdlbmVyYWwgUHVycG9zZSBNZW1vcnkgQ29udHJvbGxlcik6Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitHUE1DIGlzIGFuIHVuaWZpZWQgbWVtb3J5IGNvbnRyb2xsZXIgZGVkaWNhdGVkIHRvIGludGVyZmFjaW5nIGV4dGVybmFsCittZW1vcnkgZGV2aWNlcyBsaWtlCisgKiBBc3luY2hyb25vdXMgU1JBTSBsaWtlIG1lbW9yaWVzIGFuZCBhcHBsaWNhdGlvbiBzcGVjaWZpYyBpbnRlZ3JhdGVkCisgICBjaXJjdWl0IGRldmljZXMuCisgKiBBc3luY2hyb25vdXMsIHN5bmNocm9ub3VzLCBhbmQgcGFnZSBtb2RlIGJ1cnN0IE5PUiBmbGFzaCBkZXZpY2VzCisgICBOQU5EIGZsYXNoCisgKiBQc2V1ZG8tU1JBTSBkZXZpY2VzCisKK0dQTUMgaXMgZm91bmQgb24gVGV4YXMgSW5zdHJ1bWVudHMgU29DJ3MgKE9NQVAgYmFzZWQpCitJUCBkZXRhaWxzOiBodHRwOi8vd3d3LnRpLmNvbS9saXQvcGRmL3NwcnVoNzMgc2VjdGlvbiA3LjEKKworCitHUE1DIGdlbmVyaWMgdGltaW5nIGNhbGN1bGF0aW9uOgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworR1BNQyBoYXMgY2VydGFpbiB0aW1pbmdzIHRoYXQgaGFzIHRvIGJlIHByb2dyYW1tZWQgZm9yIHByb3BlcgorZnVuY3Rpb25pbmcgb2YgdGhlIHBlcmlwaGVyYWwsIHdoaWxlIHBlcmlwaGVyYWwgaGFzIGFub3RoZXIgc2V0IG9mCit0aW1pbmdzLiBUbyBoYXZlIHBlcmlwaGVyYWwgd29yayB3aXRoIGdwbWMsIHBlcmlwaGVyYWwgdGltaW5ncyBoYXMgdG8KK2JlIHRyYW5zbGF0ZWQgdG8gdGhlIGZvcm0gZ3BtYyBjYW4gdW5kZXJzdGFuZC4gVGhlIHdheSBpdCBoYXMgdG8gYmUKK3RyYW5zbGF0ZWQgZGVwZW5kcyBvbiB0aGUgY29ubmVjdGVkIHBlcmlwaGVyYWwuIEFsc28gdGhlcmUgaXMgYQorZGVwZW5kZW5jeSBmb3IgY2VydGFpbiBncG1jIHRpbWluZ3Mgb24gZ3BtYyBjbG9jayBmcmVxdWVuY3kuIEhlbmNlIGEKK2dlbmVyaWMgdGltaW5nIHJvdXRpbmUgd2FzIGRldmVsb3BlZCB0byBhY2hpZXZlIGFib3ZlIHJlcXVpcmVtZW50cy4KKworR2VuZXJpYyByb3V0aW5lIHByb3ZpZGVzIGEgZ2VuZXJpYyBtZXRob2QgdG8gY2FsY3VsYXRlIGdwbWMgdGltaW5ncworZnJvbSBncG1jIHBlcmlwaGVyYWwgdGltaW5ncy4gc3RydWN0IGdwbWNfZGV2aWNlX3RpbWluZ3MgZmllbGRzIGhhcyB0bworYmUgdXBkYXRlZCB3aXRoIHRpbWluZ3MgZnJvbSB0aGUgZGF0YXNoZWV0IG9mIHRoZSBwZXJpcGhlcmFsIHRoYXQgaXMKK2Nvbm5lY3RlZCB0byBncG1jLiBBIGZldyBvZiB0aGUgcGVyaXBoZXJhbCB0aW1pbmdzIGNhbiBiZSBmZWQgZWl0aGVyCitpbiB0aW1lIG9yIGluIGN5Y2xlcywgcHJvdmlzaW9uIHRvIGhhbmRsZSB0aGlzIHNjZW5hcmlvIGhhcyBiZWVuCitwcm92aWRlZCAocmVmZXIgc3RydWN0IGdwbWNfZGV2aWNlX3RpbWluZ3MgZGVmaW5pdGlvbikuIEl0IG1heSBzbworaGFwcGVuIHRoYXQgdGltaW5nIGFzIHNwZWNpZmllZCBieSBwZXJpcGhlcmFsIGRhdGFzaGVldCBpcyBub3QgcHJlc2VudAoraW4gdGltaW5nIHN0cnVjdHVyZSwgaW4gdGhpcyBzY2VuYXJpbywgdHJ5IHRvIGNvcnJlbGF0ZSBwZXJpcGhlcmFsCit0aW1pbmcgdG8gdGhlIG9uZSBhdmFpbGFibGUuIElmIHRoYXQgZG9lc24ndCB3b3JrLCB0cnkgdG8gYWRkIGEgbmV3CitmaWVsZCBhcyByZXF1aXJlZCBieSBwZXJpcGhlcmFsLCBlZHVjYXRlIGdlbmVyaWMgdGltaW5nIHJvdXRpbmUgdG8KK2hhbmRsZSBpdCwgbWFrZSBzdXJlIHRoYXQgaXQgZG9lcyBub3QgYnJlYWsgYW55IG9mIHRoZSBleGlzdGluZy4KK1RoZW4gdGhlcmUgbWF5IGJlIGNhc2VzIHdoZXJlIHBlcmlwaGVyYWwgZGF0YXNoZWV0IGRvZXNuJ3QgbWVudGlvbgorY2VydGFpbiBmaWVsZHMgb2Ygc3RydWN0IGdwbWNfZGV2aWNlX3RpbWluZ3MsIHplcm8gdGhvc2UgZW50cmllcy4KKworR2VuZXJpYyB0aW1pbmcgcm91dGluZSBoYXMgYmVlbiB2ZXJpZmllZCB0byB3b3JrIHByb3Blcmx5IG9uCittdWx0aXBsZSBvbmVuYW5kJ3MgYW5kIHR1c2I2MDEwIHBlcmlwaGVyYWxzLgorCitBIHdvcmQgb2YgY2F1dGlvbjogZ2VuZXJpYyB0aW1pbmcgcm91dGluZSBoYXMgYmVlbiBkZXZlbG9wZWQgYmFzZWQKK29uIHVuZGVyc3RhbmRpbmcgb2YgZ3BtYyB0aW1pbmdzLCBwZXJpcGhlcmFsIHRpbWluZ3MsIGF2YWlsYWJsZQorY3VzdG9tIHRpbWluZyByb3V0aW5lcywgYSBraW5kIG9mIHJldmVyc2UgZW5naW5lZXJpbmcgd2l0aG91dAorbW9zdCBvZiB0aGUgZGF0YXNoZWV0cyAmIGhhcmR3YXJlICh0byBiZSBleGFjdCBub25lIG9mIHRob3NlIHN1cHBvcnRlZAoraW4gbWFpbmxpbmUgaGF2aW5nIGN1c3RvbSB0aW1pbmcgcm91dGluZSkgYW5kIGJ5IHNpbXVsYXRpb24uCisKK2dwbWMgdGltaW5nIGRlcGVuZGVuY3kgb24gcGVyaXBoZXJhbCB0aW1pbmdzOgorWzxncG1jX3RpbWluZz46IDxwZXJpcGhlcmFsIHRpbWluZzE+LCA8cGVyaXBoZXJhbCB0aW1pbmcyPiAuLi5dCisKKzEuIGNvbW1vbgorY3Nfb246IHRfY2Vhc3UKK2Fkdl9vbjogdF9hdmRhc3UsIHRfY2VhdmQKKworMi4gc3luYyBjb21tb24KK3N5bmNfY2xrOiBjbGsKK3BhZ2VfYnVyc3RfYWNjZXNzOiB0X2JhY2MKK2Nsa19hY3RpdmF0aW9uOiB0X2NlcywgdF9hdmRzCisKKzMuIHJlYWQgYXN5bmMgbXV4ZWQKK2Fkdl9yZF9vZmY6IHRfYXZkcF9yCitvZV9vbjogdF9vZWFzdSwgdF9hYXZkaAorYWNjZXNzOiB0X2lhYSwgdF9vZSwgdF9jZSwgdF9hYQorcmRfY3ljbGU6IHRfcmRfY3ljbGUsIHRfY2V6X3IsIHRfb2V6CisKKzQuIHJlYWQgYXN5bmMgbm9uLW11eGVkCithZHZfcmRfb2ZmOiB0X2F2ZHBfcgorb2Vfb246IHRfb2Vhc3UKK2FjY2VzczogdF9pYWEsIHRfb2UsIHRfY2UsIHRfYWEKK3JkX2N5Y2xlOiB0X3JkX2N5Y2xlLCB0X2Nlel9yLCB0X29legorCis1LiByZWFkIHN5bmMgbXV4ZWQKK2Fkdl9yZF9vZmY6IHRfYXZkcF9yLCB0X2F2ZGgKK29lX29uOiB0X29lYXN1LCB0X2FjaCwgY3ljX2FhdmRoX29lCithY2Nlc3M6IHRfaWFhLCBjeWNfaWFhLCBjeWNfb2UKK3JkX2N5Y2xlOiB0X2Nlel9yLCB0X29leiwgdF9jZV9yZHl6CisKKzYuIHJlYWQgc3luYyBub24tbXV4ZWQKK2Fkdl9yZF9vZmY6IHRfYXZkcF9yCitvZV9vbjogdF9vZWFzdQorYWNjZXNzOiB0X2lhYSwgY3ljX2lhYSwgY3ljX29lCityZF9jeWNsZTogdF9jZXpfciwgdF9vZXosIHRfY2VfcmR5egorCis3LiB3cml0ZSBhc3luYyBtdXhlZAorYWR2X3dyX29mZjogdF9hdmRwX3cKK3dlX29uLCB3cl9kYXRhX211eF9idXM6IHRfd2Vhc3UsIHRfYWF2ZGgsIGN5Y19hYXZoZF93ZQord2Vfb2ZmOiB0X3dwbAorY3Nfd3Jfb2ZmOiB0X3dwaAord3JfY3ljbGU6IHRfY2V6X3csIHRfd3JfY3ljbGUKKworOC4gd3JpdGUgYXN5bmMgbm9uLW11eGVkCithZHZfd3Jfb2ZmOiB0X2F2ZHBfdword2Vfb24sIHdyX2RhdGFfbXV4X2J1czogdF93ZWFzdQord2Vfb2ZmOiB0X3dwbAorY3Nfd3Jfb2ZmOiB0X3dwaAord3JfY3ljbGU6IHRfY2V6X3csIHRfd3JfY3ljbGUKKworOS4gd3JpdGUgc3luYyBtdXhlZAorYWR2X3dyX29mZjogdF9hdmRwX3csIHRfYXZkaAord2Vfb24sIHdyX2RhdGFfbXV4X2J1czogdF93ZWFzdSwgdF9yZHlvLCB0X2FhdmRoLCBjeWNfYWF2aGRfd2UKK3dlX29mZjogdF93cGwsIGN5Y193cGwKK2NzX3dyX29mZjogdF93cGgKK3dyX2N5Y2xlOiB0X2Nlel93LCB0X2NlX3JkeXoKKworMTAuIHdyaXRlIHN5bmMgbm9uLW11eGVkCithZHZfd3Jfb2ZmOiB0X2F2ZHBfdword2Vfb24sIHdyX2RhdGFfbXV4X2J1czogdF93ZWFzdSwgdF9yZHlvCit3ZV9vZmY6IHRfd3BsLCBjeWNfd3BsCitjc193cl9vZmY6IHRfd3BoCit3cl9jeWNsZTogdF9jZXpfdywgdF9jZV9yZHl6CisKKworTm90ZTogTWFueSBvZiBncG1jIHRpbWluZ3MgYXJlIGRlcGVuZGVudCBvbiBvdGhlciBncG1jIHRpbWluZ3MgKGEgZmV3CitncG1jIHRpbWluZ3MgcHVyZWx5IGRlcGVuZGVudCBvbiBvdGhlciBncG1jIHRpbWluZ3MsIGEgcmVhc29uIHRoYXQKK3NvbWUgb2YgdGhlIGdwbWMgdGltaW5ncyBhcmUgbWlzc2luZyBhYm92ZSksIGFuZCBpdCB3aWxsIHJlc3VsdCBpbgoraW5kaXJlY3QgZGVwZW5kZW5jeSBvZiBwZXJpcGhlcmFsIHRpbWluZ3MgdG8gZ3BtYyB0aW1pbmdzIG90aGVyIHRoYW4KK21lbnRpb25lZCBhYm92ZSwgcmVmZXIgdGltaW5nIHJvdXRpbmUgZm9yIG1vcmUgZGV0YWlscy4gVG8ga25vdyB3aGF0Cit0aGVzZSBwZXJpcGhlcmFsIHRpbWluZ3MgY29ycmVzcG9uZCB0bywgcGxlYXNlIHNlZSBleHBsYW5hdGlvbnMgaW4KK3N0cnVjdCBncG1jX2RldmljZV90aW1pbmdzIGRlZmluaXRpb24uIEFuZCBmb3IgZ3BtYyB0aW1pbmdzIHJlZmVyCitJUCBkZXRhaWxzIChsaW5rIGFib3ZlKS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYnVzLXZpcnQtcGh5cy1tYXBwaW5nLnR4dCBiL0RvY3VtZW50YXRpb24vYnVzLXZpcnQtcGh5cy1tYXBwaW5nLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmM1NWZmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9idXMtdmlydC1waHlzLW1hcHBpbmcudHh0CkBAIC0wLDAgKzEsMjA4IEBACitbIE5PVEU6IFRoZSB2aXJ0X3RvX2J1cygpIGFuZCBidXNfdG9fdmlydCgpIGZ1bmN0aW9ucyBoYXZlIGJlZW4KKwlzdXBlcnNlZGVkIGJ5IHRoZSBmdW5jdGlvbmFsaXR5IHByb3ZpZGVkIGJ5IHRoZSBQQ0kgRE1BIGludGVyZmFjZQorCShzZWUgRG9jdW1lbnRhdGlvbi9ETUEtQVBJLUhPV1RPLnR4dCkuICBUaGV5IGNvbnRpbnVlCisJdG8gYmUgZG9jdW1lbnRlZCBiZWxvdyBmb3IgaGlzdG9yaWNhbCBwdXJwb3NlcywgYnV0IG5ldyBjb2RlCisJbXVzdCBub3QgdXNlIHRoZW0uIC0tZGF2aWRtIDAwLzEyLzEyIF0KKworWyBUaGlzIGlzIGEgbWFpbCBtZXNzYWdlIGluIHJlc3BvbnNlIHRvIGEgcXVlcnkgb24gSU8gbWFwcGluZywgdGh1cyB0aGUKKyAgc3RyYW5nZSBmb3JtYXQgZm9yIGEgImRvY3VtZW50IiBdCisKK1RoZSBBSEEtMTU0MiBpcyBhIGJ1cy1tYXN0ZXIgZGV2aWNlLCBhbmQgeW91ciBwYXRjaCBtYWtlcyB0aGUgZHJpdmVyIGdpdmUgdGhlCitjb250cm9sbGVyIHRoZSBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBidWZmZXJzLCB3aGljaCBpcyBjb3JyZWN0IG9uIHg4NgorKGJlY2F1c2UgYWxsIGJ1cyBtYXN0ZXIgZGV2aWNlcyBzZWUgdGhlIHBoeXNpY2FsIG1lbW9yeSBtYXBwaW5ncyBkaXJlY3RseSkuIAorCitIb3dldmVyLCBvbiBtYW55IHNldHVwcywgdGhlcmUgYXJlIGFjdHVhbGx5IF90aHJlZV8gZGlmZmVyZW50IHdheXMgb2YgbG9va2luZworYXQgbWVtb3J5IGFkZHJlc3NlcywgYW5kIGluIHRoaXMgY2FzZSB3ZSBhY3R1YWxseSB3YW50IHRoZSB0aGlyZCwgdGhlCitzby1jYWxsZWQgImJ1cyBhZGRyZXNzIi4gCisKK0Vzc2VudGlhbGx5LCB0aGUgdGhyZWUgd2F5cyBvZiBhZGRyZXNzaW5nIG1lbW9yeSBhcmUgKHRoaXMgaXMgInJlYWwgbWVtb3J5IiwKK3RoYXQgaXMsIG5vcm1hbCBSQU0tLXNlZSBsYXRlciBhYm91dCBvdGhlciBkZXRhaWxzKTogCisKKyAtIENQVSB1bnRyYW5zbGF0ZWQuICBUaGlzIGlzIHRoZSAicGh5c2ljYWwiIGFkZHJlc3MuICBQaHlzaWNhbCBhZGRyZXNzIAorICAgMCBpcyB3aGF0IHRoZSBDUFUgc2VlcyB3aGVuIGl0IGRyaXZlcyB6ZXJvZXMgb24gdGhlIG1lbW9yeSBidXMuCisKKyAtIENQVSB0cmFuc2xhdGVkIGFkZHJlc3MuIFRoaXMgaXMgdGhlICJ2aXJ0dWFsIiBhZGRyZXNzLCBhbmQgaXMgCisgICBjb21wbGV0ZWx5IGludGVybmFsIHRvIHRoZSBDUFUgaXRzZWxmIHdpdGggdGhlIENQVSBkb2luZyB0aGUgYXBwcm9wcmlhdGUKKyAgIHRyYW5zbGF0aW9ucyBpbnRvICJDUFUgdW50cmFuc2xhdGVkIi4gCisKKyAtIGJ1cyBhZGRyZXNzLiBUaGlzIGlzIHRoZSBhZGRyZXNzIG9mIG1lbW9yeSBhcyBzZWVuIGJ5IE9USEVSIGRldmljZXMsIAorICAgbm90IHRoZSBDUFUuIE5vdywgaW4gdGhlb3J5IHRoZXJlIGNvdWxkIGJlIG1hbnkgZGlmZmVyZW50IGJ1cyAKKyAgIGFkZHJlc3Nlcywgd2l0aCBlYWNoIGRldmljZSBzZWVpbmcgbWVtb3J5IGluIHNvbWUgZGV2aWNlLXNwZWNpZmljIHdheSwgYnV0CisgICBoYXBwaWx5IG1vc3QgaGFyZHdhcmUgZGVzaWduZXJzIGFyZW4ndCBhY3R1YWxseSBhY3RpdmVseSB0cnlpbmcgdG8gbWFrZQorICAgdGhpbmdzIGFueSBtb3JlIGNvbXBsZXggdGhhbiBuZWNlc3NhcnksIHNvIHlvdSBjYW4gYXNzdW1lIHRoYXQgYWxsIAorICAgZXh0ZXJuYWwgaGFyZHdhcmUgc2VlcyB0aGUgbWVtb3J5IHRoZSBzYW1lIHdheS4gCisKK05vdywgb24gbm9ybWFsIFBDcyB0aGUgYnVzIGFkZHJlc3MgaXMgZXhhY3RseSB0aGUgc2FtZSBhcyB0aGUgcGh5c2ljYWwKK2FkZHJlc3MsIGFuZCB0aGluZ3MgYXJlIHZlcnkgc2ltcGxlIGluZGVlZC4gSG93ZXZlciwgdGhleSBhcmUgdGhhdCBzaW1wbGUKK2JlY2F1c2UgdGhlIG1lbW9yeSBhbmQgdGhlIGRldmljZXMgc2hhcmUgdGhlIHNhbWUgYWRkcmVzcyBzcGFjZSwgYW5kIHRoYXQgaXMKK25vdCBnZW5lcmFsbHkgbmVjZXNzYXJpbHkgdHJ1ZSBvbiBvdGhlciBQQ0kvSVNBIHNldHVwcy4gCisKK05vdywganVzdCBhcyBhbiBleGFtcGxlLCBvbiB0aGUgUFJlUCAoUG93ZXJQQyBSZWZlcmVuY2UgUGxhdGZvcm0pLCB0aGUgCitDUFUgc2VlcyBhIG1lbW9yeSBtYXAgc29tZXRoaW5nIGxpa2UgdGhpcyAodGhpcyBpcyBmcm9tIG1lbW9yeSk6CisKKwkwLTIgR0IJCSJyZWFsIG1lbW9yeSIKKwkyIEdCLTMgR0IJInN5c3RlbSBJTyIgKGluYi9vdXQgYW5kIHNpbWlsYXIgYWNjZXNzZXMgb24geDg2KQorCTMgR0ItNCBHQiAJIklPIG1lbW9yeSIgKHNoYXJlZCBtZW1vcnkgb3ZlciB0aGUgSU8gYnVzKQorCitOb3csIHRoYXQgbG9va3Mgc2ltcGxlIGVub3VnaC4gSG93ZXZlciwgd2hlbiB5b3UgbG9vayBhdCB0aGUgc2FtZSB0aGluZyBmcm9tCit0aGUgdmlld3BvaW50IG9mIHRoZSBkZXZpY2VzLCB5b3UgaGF2ZSB0aGUgcmV2ZXJzZSwgYW5kIHRoZSBwaHlzaWNhbCBtZW1vcnkKK2FkZHJlc3MgMCBhY3R1YWxseSBzaG93cyB1cCBhcyBhZGRyZXNzIDIgR0IgZm9yIGFueSBJTyBtYXN0ZXIuCisKK1NvIHdoZW4gdGhlIENQVSB3YW50cyBhbnkgYnVzIG1hc3RlciB0byB3cml0ZSB0byBwaHlzaWNhbCBtZW1vcnkgMCwgaXQgCitoYXMgdG8gZ2l2ZSB0aGUgbWFzdGVyIGFkZHJlc3MgMHg4MDAwMDAwMCBhcyB0aGUgbWVtb3J5IGFkZHJlc3MuCisKK1NvLCBmb3IgZXhhbXBsZSwgZGVwZW5kaW5nIG9uIGhvdyB0aGUga2VybmVsIGlzIGFjdHVhbGx5IG1hcHBlZCBvbiB0aGUgCitQUEMsIHlvdSBjYW4gZW5kIHVwIHdpdGggYSBzZXR1cCBsaWtlIHRoaXM6CisKKyBwaHlzaWNhbCBhZGRyZXNzOgkwCisgdmlydHVhbCBhZGRyZXNzOgkweEMwMDAwMDAwCisgYnVzIGFkZHJlc3M6CQkweDgwMDAwMDAwCisKK3doZXJlIGFsbCB0aGUgYWRkcmVzc2VzIGFjdHVhbGx5IHBvaW50IHRvIHRoZSBzYW1lIHRoaW5nLiAgSXQncyBqdXN0IHNlZW4gCit0aHJvdWdoIGRpZmZlcmVudCB0cmFuc2xhdGlvbnMuLgorCitTaW1pbGFybHksIG9uIHRoZSBBbHBoYSwgdGhlIG5vcm1hbCB0cmFuc2xhdGlvbiBpcworCisgcGh5c2ljYWwgYWRkcmVzczoJMAorIHZpcnR1YWwgYWRkcmVzczoJMHhmZmZmZmMwMDAwMDAwMDAwCisgYnVzIGFkZHJlc3M6CQkweDQwMDAwMDAwCisKKyhidXQgdGhlcmUgYXJlIGFsc28gQWxwaGFzIHdoZXJlIHRoZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCB0aGUgYnVzIGFkZHJlc3MKK2FyZSB0aGUgc2FtZSkuIAorCitBbnl3YXksIHRoZSB3YXkgdG8gbG9vayB1cCBhbGwgdGhlc2UgdHJhbnNsYXRpb25zLCB5b3UgZG8KKworCSNpbmNsdWRlIDxhc20vaW8uaD4KKworCXBoeXNfYWRkciA9IHZpcnRfdG9fcGh5cyh2aXJ0X2FkZHIpOworCXZpcnRfYWRkciA9IHBoeXNfdG9fdmlydChwaHlzX2FkZHIpOworCSBidXNfYWRkciA9IHZpcnRfdG9fYnVzKHZpcnRfYWRkcik7CisJdmlydF9hZGRyID0gYnVzX3RvX3ZpcnQoYnVzX2FkZHIpOworCitOb3csIHdoZW4gZG8geW91IG5lZWQgdGhlc2U/CisKK1lvdSB3YW50IHRoZSBfdmlydHVhbF8gYWRkcmVzcyB3aGVuIHlvdSBhcmUgYWN0dWFsbHkgZ29pbmcgdG8gYWNjZXNzIHRoYXQgCitwb2ludGVyIGZyb20gdGhlIGtlcm5lbC4gU28geW91IGNhbiBoYXZlIHNvbWV0aGluZyBsaWtlIHRoaXM6CisKKwkvKgorCSAqIHRoaXMgaXMgdGhlIGhhcmR3YXJlICJtYWlsYm94IiB3ZSB1c2UgdG8gY29tbXVuaWNhdGUgd2l0aAorCSAqIHRoZSBjb250cm9sbGVyLiBUaGUgY29udHJvbGxlciBzZWVzIHRoaXMgZGlyZWN0bHkuCisJICovCisJc3RydWN0IG1haWxib3ggeworCQlfX3UzMiBzdGF0dXM7CisJCV9fdTMyIGJ1ZnN0YXJ0OworCQlfX3UzMiBidWZsZW47CisJCS4uCisJfSBtYm94OworCisJCXVuc2lnbmVkIGNoYXIgKiByZXRidWZmZXI7CisKKwkJLyogZ2V0IHRoZSBhZGRyZXNzIGZyb20gdGhlIGNvbnRyb2xsZXIgKi8KKwkJcmV0YnVmZmVyID0gYnVzX3RvX3ZpcnQobWJveC5idWZzdGFydCk7CisJCXN3aXRjaCAocmV0YnVmZmVyWzBdKSB7CisJCQljYXNlIFNUQVRVU19PSzoKKwkJCQkuLi4KKworb24gdGhlIG90aGVyIGhhbmQsIHlvdSB3YW50IHRoZSBidXMgYWRkcmVzcyB3aGVuIHlvdSBoYXZlIGEgYnVmZmVyIHRoYXQgCit5b3Ugd2FudCB0byBnaXZlIHRvIHRoZSBjb250cm9sbGVyOgorCisJLyogYXNrIHRoZSBjb250cm9sbGVyIHRvIHJlYWQgdGhlIHNlbnNlIHN0YXR1cyBpbnRvICJzZW5zZV9idWZmZXIiICovCisJbWJveC5idWZzdGFydCA9IHZpcnRfdG9fYnVzKCZzZW5zZV9idWZmZXIpOworCW1ib3guYnVmbGVuID0gc2l6ZW9mKHNlbnNlX2J1ZmZlcik7CisJbWJveC5zdGF0dXMgPSAwOworCW5vdGlmeV9jb250cm9sbGVyKCZtYm94KTsKKworQW5kIHlvdSBnZW5lcmFsbHkgX25ldmVyXyB3YW50IHRvIHVzZSB0aGUgcGh5c2ljYWwgYWRkcmVzcywgYmVjYXVzZSB5b3UgY2FuJ3QKK3VzZSB0aGF0IGZyb20gdGhlIENQVSAodGhlIENQVSBvbmx5IHVzZXMgdHJhbnNsYXRlZCB2aXJ0dWFsIGFkZHJlc3NlcyksIGFuZAoreW91IGNhbid0IHVzZSBpdCBmcm9tIHRoZSBidXMgbWFzdGVyLiAKKworU28gd2h5IGRvIHdlIGNhcmUgYWJvdXQgdGhlIHBoeXNpY2FsIGFkZHJlc3MgYXQgYWxsPyBXZSBkbyBuZWVkIHRoZSBwaHlzaWNhbAorYWRkcmVzcyBpbiBzb21lIGNhc2VzLCBpdCdzIGp1c3Qgbm90IHZlcnkgb2Z0ZW4gaW4gbm9ybWFsIGNvZGUuICBUaGUgcGh5c2ljYWwKK2FkZHJlc3MgaXMgbmVlZGVkIGlmIHlvdSB1c2UgbWVtb3J5IG1hcHBpbmdzLCBmb3IgZXhhbXBsZSwgYmVjYXVzZSB0aGUKKyJyZW1hcF9wZm5fcmFuZ2UoKSIgbW0gZnVuY3Rpb24gd2FudHMgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIG1lbW9yeSB0bworYmUgcmVtYXBwZWQgYXMgbWVhc3VyZWQgaW4gdW5pdHMgb2YgcGFnZXMsIGEuay5hLiB0aGUgcGZuICh0aGUgbWVtb3J5CittYW5hZ2VtZW50IGxheWVyIGRvZXNuJ3Qga25vdyBhYm91dCBkZXZpY2VzIG91dHNpZGUgdGhlIENQVSwgc28gaXQKK3Nob3VsZG4ndCBuZWVkIHRvIGtub3cgYWJvdXQgImJ1cyBhZGRyZXNzZXMiIGV0YykuCisKK05PVEUgTk9URSBOT1RFISBUaGUgYWJvdmUgaXMgb25seSBvbmUgcGFydCBvZiB0aGUgd2hvbGUgZXF1YXRpb24uIFRoZSBhYm92ZQorb25seSB0YWxrcyBhYm91dCAicmVhbCBtZW1vcnkiLCB0aGF0IGlzLCBDUFUgbWVtb3J5IChSQU0pLiAKKworVGhlcmUgaXMgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCB0eXBlIG9mIG1lbW9yeSB0b28sIGFuZCB0aGF0J3MgdGhlICJzaGFyZWQKK21lbW9yeSIgb24gdGhlIFBDSSBvciBJU0EgYnVzLiBUaGF0J3MgZ2VuZXJhbGx5IG5vdCBSQU0gKGFsdGhvdWdoIGluIHRoZSBjYXNlCitvZiBhIHZpZGVvIGdyYXBoaWNzIGNhcmQgaXQgY2FuIGJlIG5vcm1hbCBEUkFNIHRoYXQgaXMganVzdCB1c2VkIGZvciBhIGZyYW1lCitidWZmZXIpLCBidXQgY2FuIGJlIHRoaW5ncyBsaWtlIGEgcGFja2V0IGJ1ZmZlciBpbiBhIG5ldHdvcmsgY2FyZCBldGMuIAorCitUaGlzIG1lbW9yeSBpcyBjYWxsZWQgIlBDSSBtZW1vcnkiIG9yICJzaGFyZWQgbWVtb3J5IiBvciAiSU8gbWVtb3J5IiBvcgord2hhdGV2ZXIsIGFuZCB0aGVyZSBpcyBvbmx5IG9uZSB3YXkgdG8gYWNjZXNzIGl0OiB0aGUgcmVhZGIvd3JpdGViIGFuZAorcmVsYXRlZCBmdW5jdGlvbnMuIFlvdSBzaG91bGQgbmV2ZXIgdGFrZSB0aGUgYWRkcmVzcyBvZiBzdWNoIG1lbW9yeSwgYmVjYXVzZQordGhlcmUgaXMgcmVhbGx5IG5vdGhpbmcgeW91IGNhbiBkbyB3aXRoIHN1Y2ggYW4gYWRkcmVzczogaXQncyBub3QKK2NvbmNlcHR1YWxseSBpbiB0aGUgc2FtZSBtZW1vcnkgc3BhY2UgYXMgInJlYWwgbWVtb3J5IiBhdCBhbGwsIHNvIHlvdSBjYW5ub3QKK2p1c3QgZGVyZWZlcmVuY2UgYSBwb2ludGVyLiAoU2FkbHksIG9uIHg4NiBpdCBfaXNfIGluIHRoZSBzYW1lIG1lbW9yeSBzcGFjZSwKK3NvIG9uIHg4NiBpdCBhY3R1YWxseSB3b3JrcyB0byBqdXN0IGRlZmVyZW5jZSBhIHBvaW50ZXIsIGJ1dCBpdCdzIG5vdAorcG9ydGFibGUpLiAKKworRm9yIHN1Y2ggbWVtb3J5LCB5b3UgY2FuIGRvIHRoaW5ncyBsaWtlCisKKyAtIHJlYWRpbmc6CisJLyoKKwkgKiByZWFkIGZpcnN0IDMyIGJpdHMgZnJvbSBJU0EgbWVtb3J5IGF0IDB4QzAwMDAsIGFrYQorCSAqIEMwMDA6MDAwMCBpbiBET1MgdGVybXMKKwkgKi8KKwl1bnNpZ25lZCBpbnQgc2lnbmF0dXJlID0gaXNhX3JlYWRsKDB4QzAwMDApOworCisgLSByZW1hcHBpbmcgYW5kIHdyaXRpbmc6CisJLyoKKwkgKiByZW1hcCBmcmFtZWJ1ZmZlciBQQ0kgbWVtb3J5IGFyZWEgYXQgMHhGQzAwMDAwMCwKKwkgKiBzaXplIDFNQiwgc28gdGhhdCB3ZSBjYW4gYWNjZXNzIGl0OiBXZSBjYW4gZGlyZWN0bHkKKwkgKiBhY2Nlc3Mgb25seSB0aGUgNjQway0xTUIgYXJlYSwgc28gYW55dGhpbmcgZWxzZQorCSAqIGhhcyB0byBiZSByZW1hcHBlZC4KKwkgKi8KKwl2b2lkIF9faW9tZW0gKmJhc2VwdHIgPSBpb3JlbWFwKDB4RkMwMDAwMDAsIDEwMjQqMTAyNCk7CisKKwkvKiB3cml0ZSBhICdBJyB0byB0aGUgb2Zmc2V0IDEwIG9mIHRoZSBhcmVhICovCisJd3JpdGViKCdBJyxiYXNlcHRyKzEwKTsKKworCS8qIHVubWFwIHdoZW4gd2UgdW5sb2FkIHRoZSBkcml2ZXIgKi8KKwlpb3VubWFwKGJhc2VwdHIpOworCisgLSBjb3B5aW5nIGFuZCBjbGVhcmluZzoKKwkvKiBnZXQgdGhlIDYtYnl0ZSBFdGhlcm5ldCBhZGRyZXNzIGF0IElTQSBhZGRyZXNzIEUwMDA6MDA0MCAqLworCW1lbWNweV9mcm9taW8oa2VybmVsX2J1ZmZlciwgMHhFMDA0MCwgNik7CisJLyogd3JpdGUgYSBwYWNrZXQgdG8gdGhlIGRyaXZlciAqLworCW1lbWNweV90b2lvKDB4RTEwMDAsIHNrYi0+ZGF0YSwgc2tiLT5sZW4pOworCS8qIGNsZWFyIHRoZSBmcmFtZSBidWZmZXIgKi8KKwltZW1zZXRfaW8oMHhBMDAwMCwgMCwgMHgxMDAwMCk7CisKK09LLCB0aGF0IGp1c3QgYWJvdXQgY292ZXJzIHRoZSBiYXNpY3Mgb2YgYWNjZXNzaW5nIElPIHBvcnRhYmx5LiAgUXVlc3Rpb25zPworQ29tbWVudHM/IFlvdSBtYXkgdGhpbmsgdGhhdCBhbGwgdGhlIGFib3ZlIGlzIG92ZXJseSBjb21wbGV4LCBidXQgb25lIGRheSB5b3UKK21pZ2h0IGZpbmQgeW91cnNlbGYgd2l0aCBhIDUwMCBNSHogQWxwaGEgaW4gZnJvbnQgb2YgeW91LCBhbmQgdGhlbiB5b3UnbGwgYmUKK2hhcHB5IHRoYXQgeW91ciBkcml2ZXIgd29ya3MgOykKKworTm90ZSB0aGF0IGtlcm5lbCB2ZXJzaW9ucyAyLjAueCAoYW5kIGVhcmxpZXIpIG1pc3Rha2VubHkgY2FsbGVkIHRoZQoraW9yZW1hcCgpIGZ1bmN0aW9uICJ2cmVtYXAoKSIuICBpb3JlbWFwKCkgaXMgdGhlIHByb3BlciBuYW1lLCBidXQgSQorZGlkbid0IHRoaW5rIHN0cmFpZ2h0IHdoZW4gSSB3cm90ZSBpdCBvcmlnaW5hbGx5LiAgUGVvcGxlIHdobyBoYXZlIHRvCitzdXBwb3J0IGJvdGggY2FuIGRvIHNvbWV0aGluZyBsaWtlOgorIAorCS8qIHN1cHBvcnQgb2xkIG5hbWluZyBzaWxsaW5lc3MgKi8KKwkjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgMHgwMjAxMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJI2RlZmluZSBpb3JlbWFwIHZyZW1hcAorCSNkZWZpbmUgaW91bm1hcCB2ZnJlZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJI2VuZGlmCisgCithdCB0aGUgdG9wIG9mIHRoZWlyIHNvdXJjZSBmaWxlcywgYW5kIHRoZW4gdGhleSBjYW4gdXNlIHRoZSByaWdodCBuYW1lcworZXZlbiBvbiAyLjAueCBzeXN0ZW1zLiAKKworQW5kIHRoZSBhYm92ZSBzb3VuZHMgd29yc2UgdGhhbiBpdCByZWFsbHkgaXMuICBNb3N0IHJlYWwgZHJpdmVycyByZWFsbHkKK2Rvbid0IGRvIGFsbCB0aGF0IGNvbXBsZXggdGhpbmdzIChvciByYXRoZXI6IHRoZSBjb21wbGV4aXR5IGlzIG5vdCBzbworbXVjaCBpbiB0aGUgYWN0dWFsIElPIGFjY2Vzc2VzIGFzIGluIGVycm9yIGhhbmRsaW5nIGFuZCB0aW1lb3V0cyBldGMpLiAKK0l0J3MgZ2VuZXJhbGx5IG5vdCBoYXJkIHRvIGZpeCBkcml2ZXJzLCBhbmQgaW4gbWFueSBjYXNlcyB0aGUgY29kZQorYWN0dWFsbHkgbG9va3MgYmV0dGVyIGFmdGVyd2FyZHM6CisKKwl1bnNpZ25lZCBsb25nIHNpZ25hdHVyZSA9ICoodW5zaWduZWQgaW50ICopIDB4QzAwMDA7CisJCXZzCisJdW5zaWduZWQgbG9uZyBzaWduYXR1cmUgPSByZWFkbCgweEMwMDAwKTsKKworSSB0aGluayB0aGUgc2Vjb25kIHZlcnNpb24gYWN0dWFsbHkgaXMgbW9yZSByZWFkYWJsZSwgbm8/CisKKwkJTGludXMKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9jYWNoZXRsYi50eHQgYi9Eb2N1bWVudGF0aW9uL2NhY2hldGxiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjlmODA4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9jYWNoZXRsYi50eHQKQEAgLTAsMCArMSw0MDMgQEAKKwkJQ2FjaGUgYW5kIFRMQiBGbHVzaGluZworCQkgICAgIFVuZGVyIExpbnV4CisKKwkgICAgRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUByZWRoYXQuY29tPgorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgY2FjaGUvdGxiIGZsdXNoaW5nIGludGVyZmFjZXMgY2FsbGVkCitieSB0aGUgTGludXggVk0gc3Vic3lzdGVtLiAgSXQgZW51bWVyYXRlcyBvdmVyIGVhY2ggaW50ZXJmYWNlLAorZGVzY3JpYmVzIGl0cyBpbnRlbmRlZCBwdXJwb3NlLCBhbmQgd2hhdCBzaWRlIGVmZmVjdCBpcyBleHBlY3RlZAorYWZ0ZXIgdGhlIGludGVyZmFjZSBpcyBpbnZva2VkLgorCitUaGUgc2lkZSBlZmZlY3RzIGRlc2NyaWJlZCBiZWxvdyBhcmUgc3RhdGVkIGZvciBhIHVuaXByb2Nlc3NvcgoraW1wbGVtZW50YXRpb24sIGFuZCB3aGF0IGlzIHRvIGhhcHBlbiBvbiB0aGF0IHNpbmdsZSBwcm9jZXNzb3IuICBUaGUKK1NNUCBjYXNlcyBhcmUgYSBzaW1wbGUgZXh0ZW5zaW9uLCBpbiB0aGF0IHlvdSBqdXN0IGV4dGVuZCB0aGUKK2RlZmluaXRpb24gc3VjaCB0aGF0IHRoZSBzaWRlIGVmZmVjdCBmb3IgYSBwYXJ0aWN1bGFyIGludGVyZmFjZSBvY2N1cnMKK29uIGFsbCBwcm9jZXNzb3JzIGluIHRoZSBzeXN0ZW0uICBEb24ndCBsZXQgdGhpcyBzY2FyZSB5b3UgaW50bwordGhpbmtpbmcgU01QIGNhY2hlL3RsYiBmbHVzaGluZyBtdXN0IGJlIHNvIGluZWZmaWNpZW50LCB0aGlzIGlzIGluCitmYWN0IGFuIGFyZWEgd2hlcmUgbWFueSBvcHRpbWl6YXRpb25zIGFyZSBwb3NzaWJsZS4gIEZvciBleGFtcGxlLAoraWYgaXQgY2FuIGJlIHByb3ZlbiB0aGF0IGEgdXNlciBhZGRyZXNzIHNwYWNlIGhhcyBuZXZlciBleGVjdXRlZAorb24gYSBjcHUgKHNlZSBtbV9jcHVtYXNrKCkpLCBvbmUgbmVlZCBub3QgcGVyZm9ybSBhIGZsdXNoCitmb3IgdGhpcyBhZGRyZXNzIHNwYWNlIG9uIHRoYXQgY3B1LgorCitGaXJzdCwgdGhlIFRMQiBmbHVzaGluZyBpbnRlcmZhY2VzLCBzaW5jZSB0aGV5IGFyZSB0aGUgc2ltcGxlc3QuICBUaGUKKyJUTEIiIGlzIGFic3RyYWN0ZWQgdW5kZXIgTGludXggYXMgc29tZXRoaW5nIHRoZSBjcHUgdXNlcyB0byBjYWNoZQordmlydHVhbC0tPnBoeXNpY2FsIGFkZHJlc3MgdHJhbnNsYXRpb25zIG9idGFpbmVkIGZyb20gdGhlIHNvZnR3YXJlCitwYWdlIHRhYmxlcy4gIE1lYW5pbmcgdGhhdCBpZiB0aGUgc29mdHdhcmUgcGFnZSB0YWJsZXMgY2hhbmdlLCBpdCBpcworcG9zc2libGUgZm9yIHN0YWxlIHRyYW5zbGF0aW9ucyB0byBleGlzdCBpbiB0aGlzICJUTEIiIGNhY2hlLgorVGhlcmVmb3JlIHdoZW4gc29mdHdhcmUgcGFnZSB0YWJsZSBjaGFuZ2VzIG9jY3VyLCB0aGUga2VybmVsIHdpbGwKK2ludm9rZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBmbHVzaCBtZXRob2RzIF9hZnRlcl8gdGhlIHBhZ2UgdGFibGUKK2NoYW5nZXMgb2NjdXI6CisKKzEpIHZvaWQgZmx1c2hfdGxiX2FsbCh2b2lkKQorCisJVGhlIG1vc3Qgc2V2ZXJlIGZsdXNoIG9mIGFsbC4gIEFmdGVyIHRoaXMgaW50ZXJmYWNlIHJ1bnMsCisJYW55IHByZXZpb3VzIHBhZ2UgdGFibGUgbW9kaWZpY2F0aW9uIHdoYXRzb2V2ZXIgd2lsbCBiZQorCXZpc2libGUgdG8gdGhlIGNwdS4KKworCVRoaXMgaXMgdXN1YWxseSBpbnZva2VkIHdoZW4gdGhlIGtlcm5lbCBwYWdlIHRhYmxlcyBhcmUKKwljaGFuZ2VkLCBzaW5jZSBzdWNoIHRyYW5zbGF0aW9ucyBhcmUgImdsb2JhbCIgaW4gbmF0dXJlLgorCisyKSB2b2lkIGZsdXNoX3RsYl9tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSkKKworCVRoaXMgaW50ZXJmYWNlIGZsdXNoZXMgYW4gZW50aXJlIHVzZXIgYWRkcmVzcyBzcGFjZSBmcm9tCisJdGhlIFRMQi4gIEFmdGVyIHJ1bm5pbmcsIHRoaXMgaW50ZXJmYWNlIG11c3QgbWFrZSBzdXJlIHRoYXQKKwlhbnkgcHJldmlvdXMgcGFnZSB0YWJsZSBtb2RpZmljYXRpb25zIGZvciB0aGUgYWRkcmVzcyBzcGFjZQorCSdtbScgd2lsbCBiZSB2aXNpYmxlIHRvIHRoZSBjcHUuICBUaGF0IGlzLCBhZnRlciBydW5uaW5nLAorCXRoZXJlIHdpbGwgYmUgbm8gZW50cmllcyBpbiB0aGUgVExCIGZvciAnbW0nLgorCisJVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCB0byBoYW5kbGUgd2hvbGUgYWRkcmVzcyBzcGFjZQorCXBhZ2UgdGFibGUgb3BlcmF0aW9ucyBzdWNoIGFzIHdoYXQgaGFwcGVucyBkdXJpbmcKKwlmb3JrLCBhbmQgZXhlYy4KKworMykgdm9pZCBmbHVzaF90bGJfcmFuZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCisJCQl1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKKworCUhlcmUgd2UgYXJlIGZsdXNoaW5nIGEgc3BlY2lmaWMgcmFuZ2Ugb2YgKHVzZXIpIHZpcnR1YWwKKwlhZGRyZXNzIHRyYW5zbGF0aW9ucyBmcm9tIHRoZSBUTEIuICBBZnRlciBydW5uaW5nLCB0aGlzCisJaW50ZXJmYWNlIG11c3QgbWFrZSBzdXJlIHRoYXQgYW55IHByZXZpb3VzIHBhZ2UgdGFibGUKKwltb2RpZmljYXRpb25zIGZvciB0aGUgYWRkcmVzcyBzcGFjZSAndm1hLT52bV9tbScgaW4gdGhlIHJhbmdlCisJJ3N0YXJ0JyB0byAnZW5kLTEnIHdpbGwgYmUgdmlzaWJsZSB0byB0aGUgY3B1LiAgVGhhdCBpcywgYWZ0ZXIKKwlydW5uaW5nLCB0aGVyZSB3aWxsIGJlIG5vIGVudHJpZXMgaW4gdGhlIFRMQiBmb3IgJ21tJyBmb3IKKwl2aXJ0dWFsIGFkZHJlc3NlcyBpbiB0aGUgcmFuZ2UgJ3N0YXJ0JyB0byAnZW5kLTEnLgorCisJVGhlICJ2bWEiIGlzIHRoZSBiYWNraW5nIHN0b3JlIGJlaW5nIHVzZWQgZm9yIHRoZSByZWdpb24uCisJUHJpbWFyaWx5LCB0aGlzIGlzIHVzZWQgZm9yIG11bm1hcCgpIHR5cGUgb3BlcmF0aW9ucy4KKworCVRoZSBpbnRlcmZhY2UgaXMgcHJvdmlkZWQgaW4gaG9wZXMgdGhhdCB0aGUgcG9ydCBjYW4gZmluZAorCWEgc3VpdGFibHkgZWZmaWNpZW50IG1ldGhvZCBmb3IgcmVtb3ZpbmcgbXVsdGlwbGUgcGFnZQorCXNpemVkIHRyYW5zbGF0aW9ucyBmcm9tIHRoZSBUTEIsIGluc3RlYWQgb2YgaGF2aW5nIHRoZSBrZXJuZWwKKwljYWxsIGZsdXNoX3RsYl9wYWdlIChzZWUgYmVsb3cpIGZvciBlYWNoIGVudHJ5IHdoaWNoIG1heSBiZQorCW1vZGlmaWVkLgorCis0KSB2b2lkIGZsdXNoX3RsYl9wYWdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpCisKKwlUaGlzIHRpbWUgd2UgbmVlZCB0byByZW1vdmUgdGhlIFBBR0VfU0laRSBzaXplZCB0cmFuc2xhdGlvbgorCWZyb20gdGhlIFRMQi4gIFRoZSAndm1hJyBpcyB0aGUgYmFja2luZyBzdHJ1Y3R1cmUgdXNlZCBieQorCUxpbnV4IHRvIGtlZXAgdHJhY2sgb2YgbW1hcCdkIHJlZ2lvbnMgZm9yIGEgcHJvY2VzcywgdGhlCisJYWRkcmVzcyBzcGFjZSBpcyBhdmFpbGFibGUgdmlhIHZtYS0+dm1fbW0uICBBbHNvLCBvbmUgbWF5CisJdGVzdCAodm1hLT52bV9mbGFncyAmIFZNX0VYRUMpIHRvIHNlZSBpZiB0aGlzIHJlZ2lvbiBpcworCWV4ZWN1dGFibGUgKGFuZCB0aHVzIGNvdWxkIGJlIGluIHRoZSAnaW5zdHJ1Y3Rpb24gVExCJyBpbgorCXNwbGl0LXRsYiB0eXBlIHNldHVwcykuCisKKwlBZnRlciBydW5uaW5nLCB0aGlzIGludGVyZmFjZSBtdXN0IG1ha2Ugc3VyZSB0aGF0IGFueSBwcmV2aW91cworCXBhZ2UgdGFibGUgbW9kaWZpY2F0aW9uIGZvciBhZGRyZXNzIHNwYWNlICd2bWEtPnZtX21tJyBmb3IKKwl1c2VyIHZpcnR1YWwgYWRkcmVzcyAnYWRkcicgd2lsbCBiZSB2aXNpYmxlIHRvIHRoZSBjcHUuICBUaGF0CisJaXMsIGFmdGVyIHJ1bm5pbmcsIHRoZXJlIHdpbGwgYmUgbm8gZW50cmllcyBpbiB0aGUgVExCIGZvcgorCSd2bWEtPnZtX21tJyBmb3IgdmlydHVhbCBhZGRyZXNzICdhZGRyJy4KKworCVRoaXMgaXMgdXNlZCBwcmltYXJpbHkgZHVyaW5nIGZhdWx0IHByb2Nlc3NpbmcuCisKKzUpIHZvaWQgdXBkYXRlX21tdV9jYWNoZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKKwkJCSB1bnNpZ25lZCBsb25nIGFkZHJlc3MsIHB0ZV90ICpwdGVwKQorCisJQXQgdGhlIGVuZCBvZiBldmVyeSBwYWdlIGZhdWx0LCB0aGlzIHJvdXRpbmUgaXMgaW52b2tlZCB0bworCXRlbGwgdGhlIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBjb2RlIHRoYXQgYSB0cmFuc2xhdGlvbgorCW5vdyBleGlzdHMgYXQgdmlydHVhbCBhZGRyZXNzICJhZGRyZXNzIiBmb3IgYWRkcmVzcyBzcGFjZQorCSJ2bWEtPnZtX21tIiwgaW4gdGhlIHNvZnR3YXJlIHBhZ2UgdGFibGVzLgorCisJQSBwb3J0IG1heSB1c2UgdGhpcyBpbmZvcm1hdGlvbiBpbiBhbnkgd2F5IGl0IHNvIGNob29zZXMuCisJRm9yIGV4YW1wbGUsIGl0IGNvdWxkIHVzZSB0aGlzIGV2ZW50IHRvIHByZS1sb2FkIFRMQgorCXRyYW5zbGF0aW9ucyBmb3Igc29mdHdhcmUgbWFuYWdlZCBUTEIgY29uZmlndXJhdGlvbnMuCisJVGhlIHNwYXJjNjQgcG9ydCBjdXJyZW50bHkgZG9lcyB0aGlzLgorCis2KSB2b2lkIHRsYl9taWdyYXRlX2ZpbmlzaChzdHJ1Y3QgbW1fc3RydWN0ICptbSkKKworCVRoaXMgaW50ZXJmYWNlIGlzIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGFuIGV4cGxpY2l0CisJcHJvY2VzcyBtaWdyYXRpb24uIFRoaXMgaW50ZXJmYWNlIHByb3ZpZGVzIGEgaG9vaworCXRvIGFsbG93IGEgcGxhdGZvcm0gdG8gdXBkYXRlIFRMQiBvciBjb250ZXh0LXNwZWNpZmljCisJaW5mb3JtYXRpb24gZm9yIHRoZSBhZGRyZXNzIHNwYWNlLgorCisJVGhlIGlhNjQgc24yIHBsYXRmb3JtIGlzIG9uZSBleGFtcGxlIG9mIGEgcGxhdGZvcm0KKwl0aGF0IHVzZXMgdGhpcyBpbnRlcmZhY2UuCisKK05leHQsIHdlIGhhdmUgdGhlIGNhY2hlIGZsdXNoaW5nIGludGVyZmFjZXMuICBJbiBnZW5lcmFsLCB3aGVuIExpbnV4CitpcyBjaGFuZ2luZyBhbiBleGlzdGluZyB2aXJ0dWFsLS0+cGh5c2ljYWwgbWFwcGluZyB0byBhIG5ldyB2YWx1ZSwKK3RoZSBzZXF1ZW5jZSB3aWxsIGJlIGluIG9uZSBvZiB0aGUgZm9sbG93aW5nIGZvcm1zOgorCisJMSkgZmx1c2hfY2FjaGVfbW0obW0pOworCSAgIGNoYW5nZV9hbGxfcGFnZV90YWJsZXNfb2YobW0pOworCSAgIGZsdXNoX3RsYl9tbShtbSk7CisKKwkyKSBmbHVzaF9jYWNoZV9yYW5nZSh2bWEsIHN0YXJ0LCBlbmQpOworCSAgIGNoYW5nZV9yYW5nZV9vZl9wYWdlX3RhYmxlcyhtbSwgc3RhcnQsIGVuZCk7CisJICAgZmx1c2hfdGxiX3JhbmdlKHZtYSwgc3RhcnQsIGVuZCk7CisKKwkzKSBmbHVzaF9jYWNoZV9wYWdlKHZtYSwgYWRkciwgcGZuKTsKKwkgICBzZXRfcHRlKHB0ZV9wb2ludGVyLCBuZXdfcHRlX3ZhbCk7CisJICAgZmx1c2hfdGxiX3BhZ2Uodm1hLCBhZGRyKTsKKworVGhlIGNhY2hlIGxldmVsIGZsdXNoIHdpbGwgYWx3YXlzIGJlIGZpcnN0LCBiZWNhdXNlIHRoaXMgYWxsb3dzCit1cyB0byBwcm9wZXJseSBoYW5kbGUgc3lzdGVtcyB3aG9zZSBjYWNoZXMgYXJlIHN0cmljdCBhbmQgcmVxdWlyZQorYSB2aXJ0dWFsLS0+cGh5c2ljYWwgdHJhbnNsYXRpb24gdG8gZXhpc3QgZm9yIGEgdmlydHVhbCBhZGRyZXNzCit3aGVuIHRoYXQgdmlydHVhbCBhZGRyZXNzIGlzIGZsdXNoZWQgZnJvbSB0aGUgY2FjaGUuICBUaGUgSHlwZXJTcGFyYworY3B1IGlzIG9uZSBzdWNoIGNwdSB3aXRoIHRoaXMgYXR0cmlidXRlLgorCitUaGUgY2FjaGUgZmx1c2hpbmcgcm91dGluZXMgYmVsb3cgbmVlZCBvbmx5IGRlYWwgd2l0aCBjYWNoZSBmbHVzaGluZwordG8gdGhlIGV4dGVudCB0aGF0IGl0IGlzIG5lY2Vzc2FyeSBmb3IgYSBwYXJ0aWN1bGFyIGNwdS4gIE1vc3RseSwKK3RoZXNlIHJvdXRpbmVzIG11c3QgYmUgaW1wbGVtZW50ZWQgZm9yIGNwdXMgd2hpY2ggaGF2ZSB2aXJ0dWFsbHkKK2luZGV4ZWQgY2FjaGVzIHdoaWNoIG11c3QgYmUgZmx1c2hlZCB3aGVuIHZpcnR1YWwtLT5waHlzaWNhbAordHJhbnNsYXRpb25zIGFyZSBjaGFuZ2VkIG9yIHJlbW92ZWQuICBTbywgZm9yIGV4YW1wbGUsIHRoZSBwaHlzaWNhbGx5CitpbmRleGVkIHBoeXNpY2FsbHkgdGFnZ2VkIGNhY2hlcyBvZiBJQTMyIHByb2Nlc3NvcnMgaGF2ZSBubyBuZWVkIHRvCitpbXBsZW1lbnQgdGhlc2UgaW50ZXJmYWNlcyBzaW5jZSB0aGUgY2FjaGVzIGFyZSBmdWxseSBzeW5jaHJvbml6ZWQKK2FuZCBoYXZlIG5vIGRlcGVuZGVuY3kgb24gdHJhbnNsYXRpb24gaW5mb3JtYXRpb24uCisKK0hlcmUgYXJlIHRoZSByb3V0aW5lcywgb25lIGJ5IG9uZToKKworMSkgdm9pZCBmbHVzaF9jYWNoZV9tbShzdHJ1Y3QgbW1fc3RydWN0ICptbSkKKworCVRoaXMgaW50ZXJmYWNlIGZsdXNoZXMgYW4gZW50aXJlIHVzZXIgYWRkcmVzcyBzcGFjZSBmcm9tCisJdGhlIGNhY2hlcy4gIFRoYXQgaXMsIGFmdGVyIHJ1bm5pbmcsIHRoZXJlIHdpbGwgYmUgbm8gY2FjaGUKKwlsaW5lcyBhc3NvY2lhdGVkIHdpdGggJ21tJy4KKworCVRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gaGFuZGxlIHdob2xlIGFkZHJlc3Mgc3BhY2UKKwlwYWdlIHRhYmxlIG9wZXJhdGlvbnMgc3VjaCBhcyB3aGF0IGhhcHBlbnMgZHVyaW5nIGV4aXQgYW5kIGV4ZWMuCisKKzIpIHZvaWQgZmx1c2hfY2FjaGVfZHVwX21tKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQorCisJVGhpcyBpbnRlcmZhY2UgZmx1c2hlcyBhbiBlbnRpcmUgdXNlciBhZGRyZXNzIHNwYWNlIGZyb20KKwl0aGUgY2FjaGVzLiAgVGhhdCBpcywgYWZ0ZXIgcnVubmluZywgdGhlcmUgd2lsbCBiZSBubyBjYWNoZQorCWxpbmVzIGFzc29jaWF0ZWQgd2l0aCAnbW0nLgorCisJVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCB0byBoYW5kbGUgd2hvbGUgYWRkcmVzcyBzcGFjZQorCXBhZ2UgdGFibGUgb3BlcmF0aW9ucyBzdWNoIGFzIHdoYXQgaGFwcGVucyBkdXJpbmcgZm9yay4KKworCVRoaXMgb3B0aW9uIGlzIHNlcGFyYXRlIGZyb20gZmx1c2hfY2FjaGVfbW0gdG8gYWxsb3cgc29tZQorCW9wdGltaXphdGlvbnMgZm9yIFZJUFQgY2FjaGVzLgorCiszKSB2b2lkIGZsdXNoX2NhY2hlX3JhbmdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLAorCQkJICB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKKworCUhlcmUgd2UgYXJlIGZsdXNoaW5nIGEgc3BlY2lmaWMgcmFuZ2Ugb2YgKHVzZXIpIHZpcnR1YWwKKwlhZGRyZXNzZXMgZnJvbSB0aGUgY2FjaGUuICBBZnRlciBydW5uaW5nLCB0aGVyZSB3aWxsIGJlIG5vCisJZW50cmllcyBpbiB0aGUgY2FjaGUgZm9yICd2bWEtPnZtX21tJyBmb3IgdmlydHVhbCBhZGRyZXNzZXMgaW4KKwl0aGUgcmFuZ2UgJ3N0YXJ0JyB0byAnZW5kLTEnLgorCisJVGhlICJ2bWEiIGlzIHRoZSBiYWNraW5nIHN0b3JlIGJlaW5nIHVzZWQgZm9yIHRoZSByZWdpb24uCisJUHJpbWFyaWx5LCB0aGlzIGlzIHVzZWQgZm9yIG11bm1hcCgpIHR5cGUgb3BlcmF0aW9ucy4KKworCVRoZSBpbnRlcmZhY2UgaXMgcHJvdmlkZWQgaW4gaG9wZXMgdGhhdCB0aGUgcG9ydCBjYW4gZmluZAorCWEgc3VpdGFibHkgZWZmaWNpZW50IG1ldGhvZCBmb3IgcmVtb3ZpbmcgbXVsdGlwbGUgcGFnZQorCXNpemVkIHJlZ2lvbnMgZnJvbSB0aGUgY2FjaGUsIGluc3RlYWQgb2YgaGF2aW5nIHRoZSBrZXJuZWwKKwljYWxsIGZsdXNoX2NhY2hlX3BhZ2UgKHNlZSBiZWxvdykgZm9yIGVhY2ggZW50cnkgd2hpY2ggbWF5IGJlCisJbW9kaWZpZWQuCisKKzQpIHZvaWQgZmx1c2hfY2FjaGVfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIHBmbikKKworCVRoaXMgdGltZSB3ZSBuZWVkIHRvIHJlbW92ZSBhIFBBR0VfU0laRSBzaXplZCByYW5nZQorCWZyb20gdGhlIGNhY2hlLiAgVGhlICd2bWEnIGlzIHRoZSBiYWNraW5nIHN0cnVjdHVyZSB1c2VkIGJ5CisJTGludXggdG8ga2VlcCB0cmFjayBvZiBtbWFwJ2QgcmVnaW9ucyBmb3IgYSBwcm9jZXNzLCB0aGUKKwlhZGRyZXNzIHNwYWNlIGlzIGF2YWlsYWJsZSB2aWEgdm1hLT52bV9tbS4gIEFsc28sIG9uZSBtYXkKKwl0ZXN0ICh2bWEtPnZtX2ZsYWdzICYgVk1fRVhFQykgdG8gc2VlIGlmIHRoaXMgcmVnaW9uIGlzCisJZXhlY3V0YWJsZSAoYW5kIHRodXMgY291bGQgYmUgaW4gdGhlICdpbnN0cnVjdGlvbiBjYWNoZScgaW4KKwkiSGFydmFyZCIgdHlwZSBjYWNoZSBsYXlvdXRzKS4KKworCVRoZSAncGZuJyBpbmRpY2F0ZXMgdGhlIHBoeXNpY2FsIHBhZ2UgZnJhbWUgKHNoaWZ0IHRoaXMgdmFsdWUKKwlsZWZ0IGJ5IFBBR0VfU0hJRlQgdG8gZ2V0IHRoZSBwaHlzaWNhbCBhZGRyZXNzKSB0aGF0ICdhZGRyJworCXRyYW5zbGF0ZXMgdG8uICBJdCBpcyB0aGlzIG1hcHBpbmcgd2hpY2ggc2hvdWxkIGJlIHJlbW92ZWQgZnJvbQorCXRoZSBjYWNoZS4KKworCUFmdGVyIHJ1bm5pbmcsIHRoZXJlIHdpbGwgYmUgbm8gZW50cmllcyBpbiB0aGUgY2FjaGUgZm9yCisJJ3ZtYS0+dm1fbW0nIGZvciB2aXJ0dWFsIGFkZHJlc3MgJ2FkZHInIHdoaWNoIHRyYW5zbGF0ZXMKKwl0byAncGZuJy4KKworCVRoaXMgaXMgdXNlZCBwcmltYXJpbHkgZHVyaW5nIGZhdWx0IHByb2Nlc3NpbmcuCisKKzUpIHZvaWQgZmx1c2hfY2FjaGVfa21hcHModm9pZCkKKworCVRoaXMgcm91dGluZSBuZWVkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgdGhlIHBsYXRmb3JtIHV0aWxpemVzCisJaGlnaG1lbS4gIEl0IHdpbGwgYmUgY2FsbGVkIHJpZ2h0IGJlZm9yZSBhbGwgb2YgdGhlIGttYXBzCisJYXJlIGludmFsaWRhdGVkLgorCisJQWZ0ZXIgcnVubmluZywgdGhlcmUgd2lsbCBiZSBubyBlbnRyaWVzIGluIHRoZSBjYWNoZSBmb3IKKwl0aGUga2VybmVsIHZpcnR1YWwgYWRkcmVzcyByYW5nZSBQS01BUF9BRERSKDApIHRvCisJUEtNQVBfQUREUihMQVNUX1BLTUFQKS4KKworCVRoaXMgcm91dGluZyBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gYXNtL2hpZ2htZW0uaAorCis2KSB2b2lkIGZsdXNoX2NhY2hlX3ZtYXAodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCisgICB2b2lkIGZsdXNoX2NhY2hlX3Z1bm1hcCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCkKKworCUhlcmUgaW4gdGhlc2UgdHdvIGludGVyZmFjZXMgd2UgYXJlIGZsdXNoaW5nIGEgc3BlY2lmaWMgcmFuZ2UKKwlvZiAoa2VybmVsKSB2aXJ0dWFsIGFkZHJlc3NlcyBmcm9tIHRoZSBjYWNoZS4gIEFmdGVyIHJ1bm5pbmcsCisJdGhlcmUgd2lsbCBiZSBubyBlbnRyaWVzIGluIHRoZSBjYWNoZSBmb3IgdGhlIGtlcm5lbCBhZGRyZXNzCisJc3BhY2UgZm9yIHZpcnR1YWwgYWRkcmVzc2VzIGluIHRoZSByYW5nZSAnc3RhcnQnIHRvICdlbmQtMScuCisKKwlUaGUgZmlyc3Qgb2YgdGhlc2UgdHdvIHJvdXRpbmVzIGlzIGludm9rZWQgYWZ0ZXIgbWFwX3ZtX2FyZWEoKQorCWhhcyBpbnN0YWxsZWQgdGhlIHBhZ2UgdGFibGUgZW50cmllcy4gIFRoZSBzZWNvbmQgaXMgaW52b2tlZAorCWJlZm9yZSB1bm1hcF9rZXJuZWxfcmFuZ2UoKSBkZWxldGVzIHRoZSBwYWdlIHRhYmxlIGVudHJpZXMuCisKK1RoZXJlIGV4aXN0cyBhbm90aGVyIHdob2xlIGNsYXNzIG9mIGNwdSBjYWNoZSBpc3N1ZXMgd2hpY2ggY3VycmVudGx5CityZXF1aXJlIGEgd2hvbGUgZGlmZmVyZW50IHNldCBvZiBpbnRlcmZhY2VzIHRvIGhhbmRsZSBwcm9wZXJseS4KK1RoZSBiaWdnZXN0IHByb2JsZW0gaXMgdGhhdCBvZiB2aXJ0dWFsIGFsaWFzaW5nIGluIHRoZSBkYXRhIGNhY2hlCitvZiBhIHByb2Nlc3Nvci4KKworSXMgeW91ciBwb3J0IHN1c2NlcHRpYmxlIHRvIHZpcnR1YWwgYWxpYXNpbmcgaW4gaXRzIEQtY2FjaGU/CitXZWxsLCBpZiB5b3VyIEQtY2FjaGUgaXMgdmlydHVhbGx5IGluZGV4ZWQsIGlzIGxhcmdlciBpbiBzaXplIHRoYW4KK1BBR0VfU0laRSwgYW5kIGRvZXMgbm90IHByZXZlbnQgbXVsdGlwbGUgY2FjaGUgbGluZXMgZm9yIHRoZSBzYW1lCitwaHlzaWNhbCBhZGRyZXNzIGZyb20gZXhpc3RpbmcgYXQgb25jZSwgeW91IGhhdmUgdGhpcyBwcm9ibGVtLgorCitJZiB5b3VyIEQtY2FjaGUgaGFzIHRoaXMgcHJvYmxlbSwgZmlyc3QgZGVmaW5lIGFzbS9zaG1wYXJhbS5oIFNITUxCQQorcHJvcGVybHksIGl0IHNob3VsZCBlc3NlbnRpYWxseSBiZSB0aGUgc2l6ZSBvZiB5b3VyIHZpcnR1YWxseQorYWRkcmVzc2VkIEQtY2FjaGUgKG9yIGlmIHRoZSBzaXplIGlzIHZhcmlhYmxlLCB0aGUgbGFyZ2VzdCBwb3NzaWJsZQorc2l6ZSkuICBUaGlzIHNldHRpbmcgd2lsbCBmb3JjZSB0aGUgU1lTdiBJUEMgbGF5ZXIgdG8gb25seSBhbGxvdyB1c2VyCitwcm9jZXNzZXMgdG8gbW1hcCBzaGFyZWQgbWVtb3J5IGF0IGFkZHJlc3Mgd2hpY2ggYXJlIGEgbXVsdGlwbGUgb2YKK3RoaXMgdmFsdWUuCisKK05PVEU6IFRoaXMgZG9lcyBub3QgZml4IHNoYXJlZCBtbWFwcywgY2hlY2sgb3V0IHRoZSBzcGFyYzY0IHBvcnQgZm9yCitvbmUgd2F5IHRvIHNvbHZlIHRoaXMgKGluIHBhcnRpY3VsYXIgU1BBUkNfRkxBR19NTUFQU0hBUkVEKS4KKworTmV4dCwgeW91IGhhdmUgdG8gc29sdmUgdGhlIEQtY2FjaGUgYWxpYXNpbmcgaXNzdWUgZm9yIGFsbAorb3RoZXIgY2FzZXMuICBQbGVhc2Uga2VlcCBpbiBtaW5kIHRoYXQgZmFjdCB0aGF0LCBmb3IgYSBnaXZlbiBwYWdlCittYXBwZWQgaW50byBzb21lIHVzZXIgYWRkcmVzcyBzcGFjZSwgdGhlcmUgaXMgYWx3YXlzIGF0IGxlYXN0IG9uZSBtb3JlCittYXBwaW5nLCB0aGF0IG9mIHRoZSBrZXJuZWwgaW4gaXRzIGxpbmVhciBtYXBwaW5nIHN0YXJ0aW5nIGF0CitQQUdFX09GRlNFVC4gIFNvIGltbWVkaWF0ZWx5LCBvbmNlIHRoZSBmaXJzdCB1c2VyIG1hcHMgYSBnaXZlbgorcGh5c2ljYWwgcGFnZSBpbnRvIGl0cyBhZGRyZXNzIHNwYWNlLCBieSBpbXBsaWNhdGlvbiB0aGUgRC1jYWNoZQorYWxpYXNpbmcgcHJvYmxlbSBoYXMgdGhlIHBvdGVudGlhbCB0byBleGlzdCBzaW5jZSB0aGUga2VybmVsIGFscmVhZHkKK21hcHMgdGhpcyBwYWdlIGF0IGl0cyB2aXJ0dWFsIGFkZHJlc3MuCisKKyAgdm9pZCBjb3B5X3VzZXJfcGFnZSh2b2lkICp0bywgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBhZGRyLCBzdHJ1Y3QgcGFnZSAqcGFnZSkKKyAgdm9pZCBjbGVhcl91c2VyX3BhZ2Uodm9pZCAqdG8sIHVuc2lnbmVkIGxvbmcgYWRkciwgc3RydWN0IHBhZ2UgKnBhZ2UpCisKKwlUaGVzZSB0d28gcm91dGluZXMgc3RvcmUgZGF0YSBpbiB1c2VyIGFub255bW91cyBvciBDT1cKKwlwYWdlcy4gIEl0IGFsbG93cyBhIHBvcnQgdG8gZWZmaWNpZW50bHkgYXZvaWQgRC1jYWNoZSBhbGlhcworCWlzc3VlcyBiZXR3ZWVuIHVzZXJzcGFjZSBhbmQgdGhlIGtlcm5lbC4KKworCUZvciBleGFtcGxlLCBhIHBvcnQgbWF5IHRlbXBvcmFyaWx5IG1hcCAnZnJvbScgYW5kICd0bycgdG8KKwlrZXJuZWwgdmlydHVhbCBhZGRyZXNzZXMgZHVyaW5nIHRoZSBjb3B5LiAgVGhlIHZpcnR1YWwgYWRkcmVzcworCWZvciB0aGVzZSB0d28gcGFnZXMgaXMgY2hvc2VuIGluIHN1Y2ggYSB3YXkgdGhhdCB0aGUga2VybmVsCisJbG9hZC9zdG9yZSBpbnN0cnVjdGlvbnMgaGFwcGVuIHRvIHZpcnR1YWwgYWRkcmVzc2VzIHdoaWNoIGFyZQorCW9mIHRoZSBzYW1lICJjb2xvciIgYXMgdGhlIHVzZXIgbWFwcGluZyBvZiB0aGUgcGFnZS4gIFNwYXJjNjQKKwlmb3IgZXhhbXBsZSwgdXNlcyB0aGlzIHRlY2huaXF1ZS4KKworCVRoZSAnYWRkcicgcGFyYW1ldGVyIHRlbGxzIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgd2hlcmUgdGhlCisJdXNlciB3aWxsIHVsdGltYXRlbHkgaGF2ZSB0aGlzIHBhZ2UgbWFwcGVkLCBhbmQgdGhlICdwYWdlJworCXBhcmFtZXRlciBnaXZlcyBhIHBvaW50ZXIgdG8gdGhlIHN0cnVjdCBwYWdlIG9mIHRoZSB0YXJnZXQuCisKKwlJZiBELWNhY2hlIGFsaWFzaW5nIGlzIG5vdCBhbiBpc3N1ZSwgdGhlc2UgdHdvIHJvdXRpbmVzIG1heQorCXNpbXBseSBjYWxsIG1lbWNweS9tZW1zZXQgZGlyZWN0bHkgYW5kIGRvIG5vdGhpbmcgbW9yZS4KKworICB2b2lkIGZsdXNoX2RjYWNoZV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlKQorCisJQW55IHRpbWUgdGhlIGtlcm5lbCB3cml0ZXMgdG8gYSBwYWdlIGNhY2hlIHBhZ2UsIF9PUl8KKwl0aGUga2VybmVsIGlzIGFib3V0IHRvIHJlYWQgZnJvbSBhIHBhZ2UgY2FjaGUgcGFnZSBhbmQKKwl1c2VyIHNwYWNlIHNoYXJlZC93cml0YWJsZSBtYXBwaW5ncyBvZiB0aGlzIHBhZ2UgcG90ZW50aWFsbHkKKwlleGlzdCwgdGhpcyByb3V0aW5lIGlzIGNhbGxlZC4KKworCU5PVEU6IFRoaXMgcm91dGluZSBuZWVkIG9ubHkgYmUgY2FsbGVkIGZvciBwYWdlIGNhY2hlIHBhZ2VzCisJICAgICAgd2hpY2ggY2FuIHBvdGVudGlhbGx5IGV2ZXIgYmUgbWFwcGVkIGludG8gdGhlIGFkZHJlc3MKKwkgICAgICBzcGFjZSBvZiBhIHVzZXIgcHJvY2Vzcy4gIFNvIGZvciBleGFtcGxlLCBWRlMgbGF5ZXIgY29kZQorCSAgICAgIGhhbmRsaW5nIHZmcyBzeW1saW5rcyBpbiB0aGUgcGFnZSBjYWNoZSBuZWVkIG5vdCBjYWxsCisJICAgICAgdGhpcyBpbnRlcmZhY2UgYXQgYWxsLgorCisJVGhlIHBocmFzZSAia2VybmVsIHdyaXRlcyB0byBhIHBhZ2UgY2FjaGUgcGFnZSIgbWVhbnMsCisJc3BlY2lmaWNhbGx5LCB0aGF0IHRoZSBrZXJuZWwgZXhlY3V0ZXMgc3RvcmUgaW5zdHJ1Y3Rpb25zCisJdGhhdCBkaXJ0eSBkYXRhIGluIHRoYXQgcGFnZSBhdCB0aGUgcGFnZS0+dmlydHVhbCBtYXBwaW5nCisJb2YgdGhhdCBwYWdlLiAgSXQgaXMgaW1wb3J0YW50IHRvIGZsdXNoIGhlcmUgdG8gaGFuZGxlCisJRC1jYWNoZSBhbGlhc2luZywgdG8gbWFrZSBzdXJlIHRoZXNlIGtlcm5lbCBzdG9yZXMgYXJlCisJdmlzaWJsZSB0byB1c2VyIHNwYWNlIG1hcHBpbmdzIG9mIHRoYXQgcGFnZS4KKworCVRoZSBjb3JvbGxhcnkgY2FzZSBpcyBqdXN0IGFzIGltcG9ydGFudCwgaWYgdGhlcmUgYXJlIHVzZXJzCisJd2hpY2ggaGF2ZSBzaGFyZWQrd3JpdGFibGUgbWFwcGluZ3Mgb2YgdGhpcyBmaWxlLCB3ZSBtdXN0IG1ha2UKKwlzdXJlIHRoYXQga2VybmVsIHJlYWRzIG9mIHRoZXNlIHBhZ2VzIHdpbGwgc2VlIHRoZSBtb3N0IHJlY2VudAorCXN0b3JlcyBkb25lIGJ5IHRoZSB1c2VyLgorCisJSWYgRC1jYWNoZSBhbGlhc2luZyBpcyBub3QgYW4gaXNzdWUsIHRoaXMgcm91dGluZSBtYXkKKwlzaW1wbHkgYmUgZGVmaW5lZCBhcyBhIG5vcCBvbiB0aGF0IGFyY2hpdGVjdHVyZS4KKworICAgICAgICBUaGVyZSBpcyBhIGJpdCBzZXQgYXNpZGUgaW4gcGFnZS0+ZmxhZ3MgKFBHX2FyY2hfMSkgYXMKKwkiYXJjaGl0ZWN0dXJlIHByaXZhdGUiLiAgVGhlIGtlcm5lbCBndWFyYW50ZWVzIHRoYXQsCisJZm9yIHBhZ2VjYWNoZSBwYWdlcywgaXQgd2lsbCBjbGVhciB0aGlzIGJpdCB3aGVuIHN1Y2gKKwlhIHBhZ2UgZmlyc3QgZW50ZXJzIHRoZSBwYWdlY2FjaGUuCisKKwlUaGlzIGFsbG93cyB0aGVzZSBpbnRlcmZhY2VzIHRvIGJlIGltcGxlbWVudGVkIG11Y2ggbW9yZQorCWVmZmljaWVudGx5LiAgSXQgYWxsb3dzIG9uZSB0byAiZGVmZXIiIChwZXJoYXBzIGluZGVmaW5pdGVseSkKKwl0aGUgYWN0dWFsIGZsdXNoIGlmIHRoZXJlIGFyZSBjdXJyZW50bHkgbm8gdXNlciBwcm9jZXNzZXMKKwltYXBwaW5nIHRoaXMgcGFnZS4gIFNlZSBzcGFyYzY0J3MgZmx1c2hfZGNhY2hlX3BhZ2UgYW5kCisJdXBkYXRlX21tdV9jYWNoZSBpbXBsZW1lbnRhdGlvbnMgZm9yIGFuIGV4YW1wbGUgb2YgaG93IHRvIGdvCisJYWJvdXQgZG9pbmcgdGhpcy4KKworCVRoZSBpZGVhIGlzLCBmaXJzdCBhdCBmbHVzaF9kY2FjaGVfcGFnZSgpIHRpbWUsIGlmCisJcGFnZS0+bWFwcGluZy0+aV9tbWFwIGlzIGFuIGVtcHR5IHRyZWUsIGp1c3QgbWFyayB0aGUgYXJjaGl0ZWN0dXJlCisJcHJpdmF0ZSBwYWdlIGZsYWcgYml0LiAgTGF0ZXIsIGluIHVwZGF0ZV9tbXVfY2FjaGUoKSwgYSBjaGVjayBpcworCW1hZGUgb2YgdGhpcyBmbGFnIGJpdCwgYW5kIGlmIHNldCB0aGUgZmx1c2ggaXMgZG9uZSBhbmQgdGhlIGZsYWcKKwliaXQgaXMgY2xlYXJlZC4KKworCUlNUE9SVEFOVCBOT1RFOiBJdCBpcyBvZnRlbiBpbXBvcnRhbnQsIGlmIHlvdSBkZWZlciB0aGUgZmx1c2gsCisJCQl0aGF0IHRoZSBhY3R1YWwgZmx1c2ggb2NjdXJzIG9uIHRoZSBzYW1lIENQVQorCQkJYXMgZGlkIHRoZSBjcHUgc3RvcmVzIGludG8gdGhlIHBhZ2UgdG8gbWFrZSBpdAorCQkJZGlydHkuICBBZ2Fpbiwgc2VlIHNwYXJjNjQgZm9yIGV4YW1wbGVzIG9mIGhvdworCQkJdG8gZGVhbCB3aXRoIHRoaXMuCisKKyAgdm9pZCBjb3B5X3RvX3VzZXJfcGFnZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgc3RydWN0IHBhZ2UgKnBhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1c2VyX3ZhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRzdCwgdm9pZCAqc3JjLCBpbnQgbGVuKQorICB2b2lkIGNvcHlfZnJvbV91c2VyX3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHN0cnVjdCBwYWdlICpwYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB1c2VyX3ZhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZHN0LCB2b2lkICpzcmMsIGludCBsZW4pCisJV2hlbiB0aGUga2VybmVsIG5lZWRzIHRvIGNvcHkgYXJiaXRyYXJ5IGRhdGEgaW4gYW5kIG91dAorCW9mIGFyYml0cmFyeSB1c2VyIHBhZ2VzIChmLmUuIGZvciBwdHJhY2UoKSkgaXQgd2lsbCB1c2UKKwl0aGVzZSB0d28gcm91dGluZXMuCisKKwlBbnkgbmVjZXNzYXJ5IGNhY2hlIGZsdXNoaW5nIG9yIG90aGVyIGNvaGVyZW5jeSBvcGVyYXRpb25zCisJdGhhdCBuZWVkIHRvIG9jY3VyIHNob3VsZCBoYXBwZW4gaGVyZS4gIElmIHRoZSBwcm9jZXNzb3IncworCWluc3RydWN0aW9uIGNhY2hlIGRvZXMgbm90IHNub29wIGNwdSBzdG9yZXMsIGl0IGlzIHZlcnkKKwlsaWtlbHkgdGhhdCB5b3Ugd2lsbCBuZWVkIHRvIGZsdXNoIHRoZSBpbnN0cnVjdGlvbiBjYWNoZQorCWZvciBjb3B5X3RvX3VzZXJfcGFnZSgpLgorCisgIHZvaWQgZmx1c2hfYW5vbl9wYWdlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBzdHJ1Y3QgcGFnZSAqcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2bWFkZHIpCisgIAlXaGVuIHRoZSBrZXJuZWwgbmVlZHMgdG8gYWNjZXNzIHRoZSBjb250ZW50cyBvZiBhbiBhbm9ueW1vdXMKKwlwYWdlLCBpdCBjYWxscyB0aGlzIGZ1bmN0aW9uIChjdXJyZW50bHkgb25seQorCWdldF91c2VyX3BhZ2VzKCkpLiAgTm90ZTogZmx1c2hfZGNhY2hlX3BhZ2UoKSBkZWxpYmVyYXRlbHkKKwlkb2Vzbid0IHdvcmsgZm9yIGFuIGFub255bW91cyBwYWdlLiAgVGhlIGRlZmF1bHQKKwlpbXBsZW1lbnRhdGlvbiBpcyBhIG5vcCAoYW5kIHNob3VsZCByZW1haW4gc28gZm9yIGFsbCBjb2hlcmVudAorCWFyY2hpdGVjdHVyZXMpLiAgRm9yIGluY29oZXJlbnQgYXJjaGl0ZWN0dXJlcywgaXQgc2hvdWxkIGZsdXNoCisJdGhlIGNhY2hlIG9mIHRoZSBwYWdlIGF0IHZtYWRkci4KKworICB2b2lkIGZsdXNoX2tlcm5lbF9kY2FjaGVfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKKwlXaGVuIHRoZSBrZXJuZWwgbmVlZHMgdG8gbW9kaWZ5IGEgdXNlciBwYWdlIGlzIGhhcyBvYnRhaW5lZAorCXdpdGgga21hcCwgaXQgY2FsbHMgdGhpcyBmdW5jdGlvbiBhZnRlciBhbGwgbW9kaWZpY2F0aW9ucyBhcmUKKwljb21wbGV0ZSAoYnV0IGJlZm9yZSBrdW5tYXBwaW5nIGl0KSB0byBicmluZyB0aGUgdW5kZXJseWluZworCXBhZ2UgdXAgdG8gZGF0ZS4gIEl0IGlzIGFzc3VtZWQgaGVyZSB0aGF0IHRoZSB1c2VyIGhhcyBubworCWluY29oZXJlbnQgY2FjaGVkIGNvcGllcyAoaS5lLiB0aGUgb3JpZ2luYWwgcGFnZSB3YXMgb2J0YWluZWQKKwlmcm9tIGEgbWVjaGFuaXNtIGxpa2UgZ2V0X3VzZXJfcGFnZXMoKSkuICBUaGUgZGVmYXVsdAorCWltcGxlbWVudGF0aW9uIGlzIGEgbm9wIGFuZCBzaG91bGQgcmVtYWluIHNvIG9uIGFsbCBjb2hlcmVudAorCWFyY2hpdGVjdHVyZXMuICBPbiBpbmNvaGVyZW50IGFyY2hpdGVjdHVyZXMsIHRoaXMgc2hvdWxkIGZsdXNoCisJdGhlIGtlcm5lbCBjYWNoZSBmb3IgcGFnZSAodXNpbmcgcGFnZV9hZGRyZXNzKHBhZ2UpKS4KKworCisgIHZvaWQgZmx1c2hfaWNhY2hlX3JhbmdlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKQorICAJV2hlbiB0aGUga2VybmVsIHN0b3JlcyBpbnRvIGFkZHJlc3NlcyB0aGF0IGl0IHdpbGwgZXhlY3V0ZQorCW91dCBvZiAoZWcgd2hlbiBsb2FkaW5nIG1vZHVsZXMpLCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4KKworCUlmIHRoZSBpY2FjaGUgZG9lcyBub3Qgc25vb3Agc3RvcmVzIHRoZW4gdGhpcyByb3V0aW5lIHdpbGwgbmVlZAorCXRvIGZsdXNoIGl0LgorCisgIHZvaWQgZmx1c2hfaWNhY2hlX3BhZ2Uoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHN0cnVjdCBwYWdlICpwYWdlKQorCUFsbCB0aGUgZnVuY3Rpb25hbGl0eSBvZiBmbHVzaF9pY2FjaGVfcGFnZSBjYW4gYmUgaW1wbGVtZW50ZWQgaW4KKwlmbHVzaF9kY2FjaGVfcGFnZSBhbmQgdXBkYXRlX21tdV9jYWNoZS4gSW4gdGhlIGZ1dHVyZSwgdGhlIGhvcGUKKwlpcyB0byByZW1vdmUgdGhpcyBpbnRlcmZhY2UgY29tcGxldGVseS4KKworVGhlIGZpbmFsIGNhdGVnb3J5IG9mIEFQSXMgaXMgZm9yIEkvTyB0byBkZWxpYmVyYXRlbHkgYWxpYXNlZCBhZGRyZXNzCityYW5nZXMgaW5zaWRlIHRoZSBrZXJuZWwuICBTdWNoIGFsaWFzZXMgYXJlIHNldCB1cCBieSB1c2Ugb2YgdGhlCit2bWFwL3ZtYWxsb2MgQVBJLiAgU2luY2Uga2VybmVsIEkvTyBnb2VzIHZpYSBwaHlzaWNhbCBwYWdlcywgdGhlIEkvTworc3Vic3lzdGVtIGFzc3VtZXMgdGhhdCB0aGUgdXNlciBtYXBwaW5nIGFuZCBrZXJuZWwgb2Zmc2V0IG1hcHBpbmcgYXJlCit0aGUgb25seSBhbGlhc2VzLiAgVGhpcyBpc24ndCB0cnVlIGZvciB2bWFwIGFsaWFzZXMsIHNvIGFueXRoaW5nIGluCit0aGUga2VybmVsIHRyeWluZyB0byBkbyBJL08gdG8gdm1hcCBhcmVhcyBtdXN0IG1hbnVhbGx5IG1hbmFnZQorY29oZXJlbmN5LiAgSXQgbXVzdCBkbyB0aGlzIGJ5IGZsdXNoaW5nIHRoZSB2bWFwIHJhbmdlIGJlZm9yZSBkb2luZworSS9PIGFuZCBpbnZhbGlkYXRpbmcgaXQgYWZ0ZXIgdGhlIEkvTyByZXR1cm5zLgorCisgIHZvaWQgZmx1c2hfa2VybmVsX3ZtYXBfcmFuZ2Uodm9pZCAqdmFkZHIsIGludCBzaXplKQorICAgICAgIGZsdXNoZXMgdGhlIGtlcm5lbCBjYWNoZSBmb3IgYSBnaXZlbiB2aXJ0dWFsIGFkZHJlc3MgcmFuZ2UgaW4KKyAgICAgICB0aGUgdm1hcCBhcmVhLiAgVGhpcyBpcyB0byBtYWtlIHN1cmUgdGhhdCBhbnkgZGF0YSB0aGUga2VybmVsCisgICAgICAgbW9kaWZpZWQgaW4gdGhlIHZtYXAgcmFuZ2UgaXMgbWFkZSB2aXNpYmxlIHRvIHRoZSBwaHlzaWNhbAorICAgICAgIHBhZ2UuICBUaGUgZGVzaWduIGlzIHRvIG1ha2UgdGhpcyBhcmVhIHNhZmUgdG8gcGVyZm9ybSBJL08gb24uCisgICAgICAgTm90ZSB0aGF0IHRoaXMgQVBJIGRvZXMgKm5vdCogYWxzbyBmbHVzaCB0aGUgb2Zmc2V0IG1hcCBhbGlhcworICAgICAgIG9mIHRoZSBhcmVhLgorCisgIHZvaWQgaW52YWxpZGF0ZV9rZXJuZWxfdm1hcF9yYW5nZSh2b2lkICp2YWRkciwgaW50IHNpemUpIGludmFsaWRhdGVzCisgICAgICAgdGhlIGNhY2hlIGZvciBhIGdpdmVuIHZpcnR1YWwgYWRkcmVzcyByYW5nZSBpbiB0aGUgdm1hcCBhcmVhCisgICAgICAgd2hpY2ggcHJldmVudHMgdGhlIHByb2Nlc3NvciBmcm9tIG1ha2luZyB0aGUgY2FjaGUgc3RhbGUgYnkKKyAgICAgICBzcGVjdWxhdGl2ZWx5IHJlYWRpbmcgZGF0YSB3aGlsZSB0aGUgSS9PIHdhcyBvY2N1cnJpbmcgdG8gdGhlCisgICAgICAgcGh5c2ljYWwgcGFnZXMuICBUaGlzIGlzIG9ubHkgbmVjZXNzYXJ5IGZvciBkYXRhIHJlYWRzIGludG8gdGhlCisgICAgICAgdm1hcCBhcmVhLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9jZHJvbS8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vY2Ryb20vMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDMzZWRmMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vY2Ryb20vMDAtSU5ERVgKQEAgLTAsMCArMSwxMSBAQAorMDAtSU5ERVgKKwktIHRoaXMgZmlsZSAoaW5mbyBvbiBDRC1ST01zIGFuZCBMaW51eCkKK01ha2VmaWxlCisJLSBvbmx5IHVzZWQgdG8gZ2VuZXJhdGUgVGVYIG91dHB1dCBmcm9tIHRoZSBkb2N1bWVudGF0aW9uLgorY2Ryb20tc3RhbmRhcmQudGV4CisJLSBMYVRlWCBkb2N1bWVudCBvbiBzdGFuZGFyZGl6aW5nIHRoZSBDRC1ST00gcHJvZ3JhbW1pbmcgaW50ZXJmYWNlLgoraWRlLWNkCisJLSBpbmZvIG9uIHNldHRpbmcgdXAgYW5kIHVzaW5nIEFUQVBJIChha2EgSURFKSBDRC1ST01zLgorcGFja2V0LXdyaXRpbmcudHh0CisJLSBJbmZvIG9uIHRoZSBDRFJXIHBhY2tldCB3cml0aW5nIG1vZHVsZQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Nkcm9tL01ha2VmaWxlIGIvRG9jdW1lbnRhdGlvbi9jZHJvbS9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTllMzIxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9jZHJvbS9NYWtlZmlsZQpAQCAtMCwwICsxLDIxIEBACitMQVRFWEZJTEUgPSBjZHJvbS1zdGFuZGFyZAorCithbGw6CisJbWFrZSBjbGVhbgorCWxhdGV4ICQoTEFURVhGSUxFKQorCWxhdGV4ICQoTEFURVhGSUxFKQorCUBpZiBbIC14IGB3aGljaCBndmAgXTsgdGhlbiBcCisJCWBkdmlwcyAtcSAtdCBsZXR0ZXIgLW8gJChMQVRFWEZJTEUpLnBzICQoTEFURVhGSUxFKS5kdmlgIDtcCisJCWBndiAtYW50aWFsaWFzIC1tZWRpYSBsZXR0ZXIgLW5vY2VudGVyICQoTEFURVhGSUxFKS5wc2AgO1wKKwllbHNlIFwKKwkJYHhkdmkgJChMQVRFWEZJTEUpLmR2aSAmYCA7XAorCWZpCisJbWFrZSBzb3J0b2ZjbGVhbgorCitjbGVhbjoKKwlybSAtZiAkKExBVEVYRklMRSkucHMgJChMQVRFWEZJTEUpLmR2aSAkKExBVEVYRklMRSkuYXV4ICQoTEFURVhGSUxFKS5sb2cgCisKK3NvcnRvZmNsZWFuOgorCXJtIC1mICQoTEFURVhGSUxFKS5hdXggJChMQVRFWEZJTEUpLmxvZyAKKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Nkcm9tL2Nkcm9tLXN0YW5kYXJkLnRleCBiL0RvY3VtZW50YXRpb24vY2Ryb20vY2Ryb20tc3RhbmRhcmQudGV4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNjIzM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Nkcm9tL2Nkcm9tLXN0YW5kYXJkLnRleApAQCAtMCwwICsxLDEwMjIgQEAKK1xkb2N1bWVudGNsYXNze2FydGljbGV9CitcZGVmXHZlcnNpb257JElkOiBjZHJvbS1zdGFuZGFyZC50ZXgsdiAxLjkgMTk5Ny8xMi8yOCAxNTo0Mjo0OSBkYXZpZCBFeHAgJH0KK1xuZXdjb21tYW5ke1xuZXdzZWN0aW9ufVsxXXtcbmV3cGFnZVxzZWN0aW9ueyMxfX0KKworXGV2ZW5zaWRlbWFyZ2luPTBwdAorXG9kZHNpZGVtYXJnaW49MHB0CitcdG9wbWFyZ2luPS1caGVhZGhlaWdodCBcYWR2YW5jZVx0b3BtYXJnaW4gYnkgLVxoZWFkc2VwCitcdGV4dHdpZHRoPTE1Ljk5Y20gXHRleHRoZWlnaHQ9MjQuNjJjbSAlIG5vcm1hbCBBNCwgMScnIG1hcmdpbgorCitcZGVmXGxpbnV4e3tcc2MgTGludXh9fQorXGRlZlxjZHJvbXt7XHNjIGNkLXJvbX19CitcZGVmXFVDRHt7XHNjIFVuaWZvcm0gY2Qtcm9tIERyaXZlcn19CitcZGVmXGNkcm9tY3t7XHR0IHtjZHJvbS5jfX19CitcZGVmXGNkcm9taHt7XHR0IHtjZHJvbS5ofX19CitcZGVmXGZve1xzbH0gICAgICAgICAgICAgICAgICAgICUgZm9yZWlnbiB3b3JkcworXGRlZlxpZXt7XGZvIGkuZS59fQorXGRlZlxlZ3t7XGZvIGUuZy59fQorCitcZXZlcnltYXRoe1xpdH0gXGV2ZXJ5ZGlzcGxheXtcaXR9CitcY2F0Y29kZSBgXF89XGFjdGl2ZSBcZGVmX3tcX1xwZW5hbHR5MTAwIH0KK1xjYXRjb2RlYFw8PVxhY3RpdmUgXGRlZjwjMT57e1xsYW5nbGVcaGJveHtccm0jMX1ccmFuZ2xlfX0KKworXGJlZ2lue2RvY3VtZW50fQorXHRpdGxle0EgXGxpbnV4XCBcY2Ryb21cIHN0YW5kYXJkfQorXGF1dGhvcntEYXZpZCB2YW4gTGVldXdlblxce1xub3JtYWxzaXplXHR0IGRhdmlkQEVsc2VXYXJlLmNpc3Ryb24ubmx9CitcXHtcZm9vdG5vdGVzaXplIHVwZGF0ZWQgYnkgRXJpayBBbmRlcnNlbiB7XHR0KGFuZGVyc2VlQGRlYmlhbi5vcmcpfX0KK1xce1xmb290bm90ZXNpemUgdXBkYXRlZCBieSBKZW5zIEF4Ym9lIHtcdHQoYXhib2VAaW1hZ2UuZGspfX19CitcZGF0ZXsxMiBNYXJjaCAxOTk5fQorCitcbWFrZXRpdGxlCisKK1xuZXdzZWN0aW9ue0ludHJvZHVjdGlvbn0KKworXGxpbnV4XCBpcyBwcm9iYWJseSB0aGUgVW5peC1saWtlIG9wZXJhdGluZyBzeXN0ZW0gdGhhdCBzdXBwb3J0cwordGhlIHdpZGVzdCB2YXJpZXR5IG9mIGhhcmR3YXJlIGRldmljZXMuIFRoZSByZWFzb25zIGZvciB0aGlzIGFyZQorcHJlc3VtYWJseSAKK1xiZWdpbntpdGVtaXplfSAKK1xpdGVtIAorICBUaGUgbGFyZ2UgbGlzdCBvZiBoYXJkd2FyZSBkZXZpY2VzIGF2YWlsYWJsZSBmb3IgdGhlIG1hbnkgcGxhdGZvcm1zCisgIHRoYXQgXGxpbnV4XCBub3cgc3VwcG9ydHMgKFxpZSwgaTM4Ni1QQ3MsIFNwYXJjIFN1bnMsIGV0Yy4pCitcaXRlbSAKKyAgVGhlIG9wZW4gZGVzaWduIG9mIHRoZSBvcGVyYXRpbmcgc3lzdGVtLCBzdWNoIHRoYXQgYW55Ym9keSBjYW4gd3JpdGUgYQorICBkcml2ZXIgZm9yIFxsaW51eC4KK1xpdGVtIAorICBUaGVyZSBpcyBwbGVudHkgb2Ygc291cmNlIGNvZGUgYXJvdW5kIGFzIGV4YW1wbGVzIG9mIGhvdyB0byB3cml0ZSBhIGRyaXZlci4KK1xlbmR7aXRlbWl6ZX0KK1RoZSBvcGVubmVzcyBvZiBcbGludXgsIGFuZCB0aGUgbWFueSBkaWZmZXJlbnQgdHlwZXMgb2YgYXZhaWxhYmxlCitoYXJkd2FyZSBoYXMgYWxsb3dlZCBcbGludXhcIHRvIHN1cHBvcnQgbWFueSBkaWZmZXJlbnQgaGFyZHdhcmUgZGV2aWNlcy4KK1VuZm9ydHVuYXRlbHksIHRoZSB2ZXJ5IG9wZW5uZXNzIHRoYXQgaGFzIGFsbG93ZWQgXGxpbnV4XCB0byBzdXBwb3J0CithbGwgdGhlc2UgZGlmZmVyZW50IGRldmljZXMgaGFzIGFsc28gYWxsb3dlZCB0aGUgYmVoYXZpb3Igb2YgZWFjaAorZGV2aWNlIGRyaXZlciB0byBkaWZmZXIgc2lnbmlmaWNhbnRseSBmcm9tIG9uZSBkZXZpY2UgdG8gYW5vdGhlci4KK1RoaXMgZGl2ZXJnZW5jZSBvZiBiZWhhdmlvciBoYXMgYmVlbiB2ZXJ5IHNpZ25pZmljYW50IGZvciBcY2Ryb21cCitkZXZpY2VzOyB0aGUgd2F5IGEgcGFydGljdWxhciBkcml2ZSByZWFjdHMgdG8gYSBgc3RhbmRhcmQnICRpb2N0bCgpJAorY2FsbCB2YXJpZXMgZ3JlYXRseSBmcm9tIG9uZSBkZXZpY2UgZHJpdmVyIHRvIGFub3RoZXIuIFRvIGF2b2lkIG1ha2luZwordGhlaXIgZHJpdmVycyB0b3RhbGx5IGluY29uc2lzdGVudCwgdGhlIHdyaXRlcnMgb2YgXGxpbnV4XCBcY2Ryb21cCitkcml2ZXJzIGdlbmVyYWxseSBjcmVhdGVkIG5ldyBkZXZpY2UgZHJpdmVycyBieSB1bmRlcnN0YW5kaW5nLCBjb3B5aW5nLAorYW5kIHRoZW4gY2hhbmdpbmcgYW4gZXhpc3Rpbmcgb25lLiBVbmZvcnR1bmF0ZWx5LCB0aGlzIHByYWN0aWNlIGRpZCBub3QKK21haW50YWluIHVuaWZvcm0gYmVoYXZpb3IgYWNyb3NzIGFsbCB0aGUgXGxpbnV4XCBcY2Ryb21cIGRyaXZlcnMuIAorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyBhbiBlZmZvcnQgdG8gZXN0YWJsaXNoIFVuaWZvcm0gYmVoYXZpb3IgYWNyb3NzCithbGwgdGhlIGRpZmZlcmVudCBcY2Ryb21cIGRldmljZSBkcml2ZXJzIGZvciBcbGludXguIFRoaXMgZG9jdW1lbnQgYWxzbworZGVmaW5lcyB0aGUgdmFyaW91cyAkaW9jdGwkcywgYW5kIGhvdyB0aGUgbG93LWxldmVsIFxjZHJvbVwgZGV2aWNlCitkcml2ZXJzIHNob3VsZCBpbXBsZW1lbnQgdGhlbS4gQ3VycmVudGx5IChhcyBvZiB0aGUgXGxpbnV4XCAyLjEuJHgkCitkZXZlbG9wbWVudCBrZXJuZWxzKSBzZXZlcmFsIGxvdy1sZXZlbCBcY2Ryb21cIGRldmljZSBkcml2ZXJzLCBpbmNsdWRpbmcKK2JvdGggSURFL0FUQVBJIGFuZCBTQ1NJLCBub3cgdXNlIHRoaXMgVW5pZm9ybSBpbnRlcmZhY2UuCisKK1doZW4gdGhlIFxjZHJvbVwgd2FzIGRldmVsb3BlZCwgdGhlIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBcY2Ryb21cIGRyaXZlCithbmQgdGhlIGNvbXB1dGVyIHdhcyBub3Qgc3BlY2lmaWVkIGluIHRoZSBzdGFuZGFyZHMuIEFzIGEgcmVzdWx0LCBtYW55CitkaWZmZXJlbnQgXGNkcm9tXCBpbnRlcmZhY2VzIHdlcmUgZGV2ZWxvcGVkLiBTb21lIG9mIHRoZW0gaGFkIHRoZWlyCitvd24gcHJvcHJpZXRhcnkgZGVzaWduIChTb255LCBNaXRzdW1pLCBQYW5hc29uaWMsIFBoaWxpcHMpLCBvdGhlcgorbWFudWZhY3R1cmVycyBhZG9wdGVkIGFuIGV4aXN0aW5nIGVsZWN0cmljYWwgaW50ZXJmYWNlIGFuZCBjaGFuZ2VkCit0aGUgZnVuY3Rpb25hbGl0eSAoQ3JlYXRpdmVMYWJzL1NvdW5kQmxhc3RlciwgVGVhYywgRnVuYWkpIG9yIHNpbXBseQorYWRhcHRlZCB0aGVpciBkcml2ZXMgdG8gb25lIG9yIG1vcmUgb2YgdGhlIGFscmVhZHkgZXhpc3RpbmcgZWxlY3RyaWNhbAoraW50ZXJmYWNlcyAoQXp0ZWNoLCBTYW55bywgRnVuYWksIFZlcnRvcywgTG9uZ3NoaW5lLCBPcHRpY3MgU3RvcmFnZSBhbmQKK21vc3Qgb2YgdGhlIGBOb05hbWUnIG1hbnVmYWN0dXJlcnMpLiBJbiBjYXNlcyB3aGVyZSBhIG5ldyBkcml2ZSByZWFsbHkKK2Jyb3VnaHQgaXRzIG93biBpbnRlcmZhY2Ugb3IgdXNlZCBpdHMgb3duIGNvbW1hbmQgc2V0IGFuZCBmbG93IGNvbnRyb2wKK3NjaGVtZSwgZWl0aGVyIGEgc2VwYXJhdGUgZHJpdmVyIGhhZCB0byBiZSB3cml0dGVuLCBvciBhbiBleGlzdGluZworZHJpdmVyIGhhZCB0byBiZSBlbmhhbmNlZC4gSGlzdG9yeSBoYXMgZGVsaXZlcmVkIHVzIFxjZHJvbVwgc3VwcG9ydCBmb3IKK21hbnkgb2YgdGhlc2UgZGlmZmVyZW50IGludGVyZmFjZXMuIE5vd2FkYXlzLCBhbG1vc3QgYWxsIG5ldyBcY2Ryb21cCitkcml2ZXMgYXJlIGVpdGhlciBJREUvQVRBUEkgb3IgU0NTSSwgYW5kIGl0IGlzIHZlcnkgdW5saWtlbHkgdGhhdCBhbnkKK21hbnVmYWN0dXJlciB3aWxsIGNyZWF0ZSBhIG5ldyBpbnRlcmZhY2UuIEV2ZW4gZmluZGluZyBkcml2ZXMgZm9yIHRoZQorb2xkIHByb3ByaWV0YXJ5IGludGVyZmFjZXMgaXMgZ2V0dGluZyBkaWZmaWN1bHQuCisKK1doZW4gKGluIHRoZSAxLjMuNzAncykgSSBsb29rZWQgYXQgdGhlIGV4aXN0aW5nIHNvZnR3YXJlIGludGVyZmFjZSwKK3doaWNoIHdhcyBleHByZXNzZWQgdGhyb3VnaCBcY2Ryb21oLCBpdCBhcHBlYXJlZCB0byBiZSBhIHJhdGhlciB3aWxkCitzZXQgb2YgY29tbWFuZHMgYW5kIGRhdGEgZm9ybWF0cy5cZm9vdG5vdGV7SSBjYW5ub3QgcmVjb2xsZWN0IHdoYXQKK2tlcm5lbCB2ZXJzaW9uIEkgbG9va2VkIGF0LCB0aGVuLCBwcmVzdW1hYmx5IDEuMi4xMyBhbmQgMS4zLjM0LS0tdGhlCitsYXRlc3Qga2VybmVsIHRoYXQgSSB3YXMgaW5kaXJlY3RseSBpbnZvbHZlZCBpbi59IEl0IHNlZW1lZCB0aGF0IG1hbnkKK2ZlYXR1cmVzIG9mIHRoZSBzb2Z0d2FyZSBpbnRlcmZhY2UgaGFkIGJlZW4gYWRkZWQgdG8gYWNjb21tb2RhdGUgdGhlCitjYXBhYmlsaXRpZXMgb2YgYSBwYXJ0aWN1bGFyIGRyaXZlLCBpbiBhbiB7XGZvIGFkIGhvY1wvfSBtYW5uZXIuIE1vcmUKK2ltcG9ydGFudGx5LCBpdCBhcHBlYXJlZCB0aGF0IHRoZSBiZWhhdmlvciBvZiB0aGUgYHN0YW5kYXJkJyBjb21tYW5kcword2FzIGRpZmZlcmVudCBmb3IgbW9zdCBvZiB0aGUgZGlmZmVyZW50IGRyaXZlcnM6IFxlZywgc29tZSBkcml2ZXJzCitjbG9zZSB0aGUgdHJheSBpZiBhbiAkb3BlbigpJCBjYWxsIG9jY3VycyB3aGVuIHRoZSB0cmF5IGlzIG9wZW4sIHdoaWxlCitvdGhlcnMgZG8gbm90LiBTb21lIGRyaXZlcnMgbG9jayB0aGUgZG9vciB1cG9uIG9wZW5pbmcgdGhlIGRldmljZSwgdG8KK3ByZXZlbnQgYW4gaW5jb2hlcmVudCBmaWxlIHN5c3RlbSwgYnV0IG90aGVycyBkb24ndCwgdG8gYWxsb3cgc29mdHdhcmUKK2VqZWN0aW9uLiBVbmRvdWJ0ZWRseSwgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgZGlmZmVyZW50IGRyaXZlcyB2YXJ5LAorYnV0IGV2ZW4gd2hlbiB0d28gZHJpdmVzIGhhdmUgdGhlIHNhbWUgY2FwYWJpbGl0eSB0aGVpciBkcml2ZXJzJworYmVoYXZpb3Igd2FzIHVzdWFsbHkgZGlmZmVyZW50LgorCitJIGRlY2lkZWQgdG8gc3RhcnQgYSBkaXNjdXNzaW9uIG9uIGhvdyB0byBtYWtlIGFsbCB0aGUgXGxpbnV4XCBcY2Ryb21cCitkcml2ZXJzIGJlaGF2ZSBtb3JlIHVuaWZvcm1seS4gSSBiZWdhbiBieSBjb250YWN0aW5nIHRoZSBkZXZlbG9wZXJzIG9mCit0aGUgbWFueSBcY2Ryb21cIGRyaXZlcnMgZm91bmQgaW4gdGhlIFxsaW51eFwga2VybmVsLiBUaGVpciByZWFjdGlvbnMKK2VuY291cmFnZWQgbWUgdG8gd3JpdGUgdGhlIFxVQ0RcIHdoaWNoIHRoaXMgZG9jdW1lbnQgaXMgaW50ZW5kZWQgdG8KK2Rlc2NyaWJlLiBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFxVQ0RcIGlzIGluIHRoZSBmaWxlIFxjZHJvbWMuIFRoaXMKK2RyaXZlciBpcyBpbnRlbmRlZCB0byBiZSBhbiBhZGRpdGlvbmFsIHNvZnR3YXJlIGxheWVyIHRoYXQgc2l0cyBvbiB0b3AKK29mIHRoZSBsb3ctbGV2ZWwgZGV2aWNlIGRyaXZlcnMgZm9yIGVhY2ggXGNkcm9tXCBkcml2ZS4gQnkgYWRkaW5nIHRoaXMKK2FkZGl0aW9uYWwgbGF5ZXIsIGl0IGlzIHBvc3NpYmxlIHRvIGhhdmUgYWxsIHRoZSBkaWZmZXJlbnQgXGNkcm9tXAorZGV2aWNlcyBiZWhhdmUge1xlbSBleGFjdGx5XC99IHRoZSBzYW1lIChpbnNvZmFyIGFzIHRoZSB1bmRlcmx5aW5nCitoYXJkd2FyZSB3aWxsIGFsbG93KS4KKworVGhlIGdvYWwgb2YgdGhlIFxVQ0RcIGlzIHtcZW0gbm90XC99IHRvIGFsaWVuYXRlIGRyaXZlciBkZXZlbG9wZXJzIHdobworaGF2ZSBub3QgeWV0IHRha2VuIHN0ZXBzIHRvIHN1cHBvcnQgdGhpcyBlZmZvcnQuIFRoZSBnb2FsIG9mIFxVQ0RcIGlzCitzaW1wbHkgdG8gZ2l2ZSBwZW9wbGUgd3JpdGluZyBhcHBsaWNhdGlvbiBwcm9ncmFtcyBmb3IgXGNkcm9tXCBkcml2ZXMKK3tcZW0gb25lXC99IFxsaW51eFwgXGNkcm9tXCBpbnRlcmZhY2Ugd2l0aCBjb25zaXN0ZW50IGJlaGF2aW9yIGZvciBhbGwKK1xjZHJvbVwgZGV2aWNlcy4gSW4gYWRkaXRpb24sIHRoaXMgYWxzbyBwcm92aWRlcyBhIGNvbnNpc3RlbnQgaW50ZXJmYWNlCitiZXR3ZWVuIHRoZSBsb3ctbGV2ZWwgZGV2aWNlIGRyaXZlciBjb2RlIGFuZCB0aGUgXGxpbnV4XCBrZXJuZWwuIENhcmUKK2lzIHRha2VuIHRoYXQgMTAwXCxcJSBjb21wYXRpYmlsaXR5IGV4aXN0cyB3aXRoIHRoZSBkYXRhIHN0cnVjdHVyZXMgYW5kCitwcm9ncmFtbWVyJ3MgaW50ZXJmYWNlIGRlZmluZWQgaW4gXGNkcm9taC4gVGhpcyBndWlkZSB3YXMgd3JpdHRlbiB0bworaGVscCBcY2Ryb21cIGRyaXZlciBkZXZlbG9wZXJzIGFkYXB0IHRoZWlyIGNvZGUgdG8gdXNlIHRoZSBcVUNEXCBjb2RlCitkZWZpbmVkIGluIFxjZHJvbWMuCisKK1BlcnNvbmFsbHksIEkgdGhpbmsgdGhhdCB0aGUgbW9zdCBpbXBvcnRhbnQgaGFyZHdhcmUgaW50ZXJmYWNlcyBhcmUKK3RoZSBJREUvQVRBUEkgZHJpdmVzIGFuZCwgb2YgY291cnNlLCB0aGUgU0NTSSBkcml2ZXMsIGJ1dCBhcyBwcmljZXMKK29mIGhhcmR3YXJlIGRyb3AgY29udGludW91c2x5LCBpdCBpcyBhbHNvIGxpa2VseSB0aGF0IHBlb3BsZSBtYXkgaGF2ZQorbW9yZSB0aGFuIG9uZSBcY2Ryb21cIGRyaXZlLCBwb3NzaWJseSBvZiBtaXhlZCB0eXBlcy4gSXQgaXMgaW1wb3J0YW50Cit0aGF0IHRoZXNlIGRyaXZlcyBiZWhhdmUgaW4gdGhlIHNhbWUgd2F5LiBJbiBEZWNlbWJlciAxOTk0LCBvbmUgb2YgdGhlCitjaGVhcGVzdCBcY2Ryb21cIGRyaXZlcyB3YXMgYSBQaGlsaXBzIGNtMjA2LCBhIGRvdWJsZS1zcGVlZCBwcm9wcmlldGFyeQorZHJpdmUuIEluIHRoZSBtb250aHMgdGhhdCBJIHdhcyBidXN5IHdyaXRpbmcgYSBcbGludXhcIGRyaXZlciBmb3IgaXQsCitwcm9wcmlldGFyeSBkcml2ZXMgYmVjYW1lIG9ic29sZXRlIGFuZCBJREUvQVRBUEkgZHJpdmVzIGJlY2FtZSB0aGUKK3N0YW5kYXJkLiBBdCB0aGUgdGltZSBvZiB0aGUgbGFzdCB1cGRhdGUgdG8gdGhpcyBkb2N1bWVudCAoTm92ZW1iZXIKKzE5OTcpIGl0IGlzIGJlY29taW5nIGRpZmZpY3VsdCB0byBldmVuIHtcZW0gZmluZH0gYW55dGhpbmcgbGVzcyB0aGFuIGEKKzE2IHNwZWVkIFxjZHJvbVwgZHJpdmUsIGFuZCAyNCBzcGVlZCBkcml2ZXMgYXJlIGNvbW1vbi4KKworXG5ld3NlY3Rpb257U3RhbmRhcmRpemluZyB0aHJvdWdoIGFub3RoZXIgc29mdHdhcmUgbGV2ZWx9CitcbGFiZWx7Y2Ryb20uY30KKworQXQgdGhlIHRpbWUgdGhpcyBkb2N1bWVudCB3YXMgY29uY2VpdmVkLCBhbGwgZHJpdmVycyBkaXJlY3RseQoraW1wbGVtZW50ZWQgdGhlIFxjZHJvbVwgJGlvY3RsKCkkIGNhbGxzIHRocm91Z2ggdGhlaXIgb3duIHJvdXRpbmVzLiBUaGlzCitsZWQgdG8gdGhlIGRhbmdlciBvZiBkaWZmZXJlbnQgZHJpdmVycyBmb3JnZXR0aW5nIHRvIGRvIGltcG9ydGFudCB0aGluZ3MKK2xpa2UgY2hlY2tpbmcgdGhhdCB0aGUgdXNlciB3YXMgZ2l2aW5nIHRoZSBkcml2ZXIgdmFsaWQgZGF0YS4gTW9yZQoraW1wb3J0YW50bHksIHRoaXMgbGVkIHRvIHRoZSBkaXZlcmdlbmNlIG9mIGJlaGF2aW9yLCB3aGljaCBoYXMgYWxyZWFkeQorYmVlbiBkaXNjdXNzZWQuCisKK0ZvciB0aGlzIHJlYXNvbiwgdGhlIFxVQ0RcIHdhcyBjcmVhdGVkIHRvIGVuZm9yY2UgY29uc2lzdGVudCBcY2Ryb21cCitkcml2ZSBiZWhhdmlvciwgYW5kIHRvIHByb3ZpZGUgYSBjb21tb24gc2V0IG9mIHNlcnZpY2VzIHRvIHRoZSB2YXJpb3VzCitsb3ctbGV2ZWwgXGNkcm9tXCBkZXZpY2UgZHJpdmVycy4gVGhlIFxVQ0RcIG5vdyBwcm92aWRlcyBhbm90aGVyCitzb2Z0d2FyZS1sZXZlbCwgdGhhdCBzZXBhcmF0ZXMgdGhlICRpb2N0bCgpJCBhbmQgJG9wZW4oKSQgaW1wbGVtZW50YXRpb24KK2Zyb20gdGhlIGFjdHVhbCBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbi4gTm90ZSB0aGF0IHRoaXMgZWZmb3J0IGhhcworbWFkZSBmZXcgY2hhbmdlcyB3aGljaCB3aWxsIGFmZmVjdCBhIHVzZXIncyBhcHBsaWNhdGlvbiBwcm9ncmFtcy4gVGhlCitncmVhdGVzdCBjaGFuZ2UgaW52b2x2ZWQgbW92aW5nIHRoZSBjb250ZW50cyBvZiB0aGUgdmFyaW91cyBsb3ctbGV2ZWwKK1xjZHJvbVwgZHJpdmVycycgaGVhZGVyIGZpbGVzIHRvIHRoZSBrZXJuZWwncyBjZHJvbSBkaXJlY3RvcnkuIFRoaXMgd2FzCitkb25lIHRvIGhlbHAgZW5zdXJlIHRoYXQgdGhlIHVzZXIgaXMgb25seSBwcmVzZW50ZWQgd2l0aCBvbmx5IG9uZSBjZHJvbQoraW50ZXJmYWNlLCB0aGUgaW50ZXJmYWNlIGRlZmluZWQgaW4gXGNkcm9taC4KKworXGNkcm9tXCBkcml2ZXMgYXJlIHNwZWNpZmljIGVub3VnaCAoXGllLCBkaWZmZXJlbnQgZnJvbSBvdGhlcgorYmxvY2stZGV2aWNlcyBzdWNoIGFzIGZsb3BweSBvciBoYXJkIGRpc2MgZHJpdmVzKSwgdG8gZGVmaW5lIGEgc2V0CitvZiBjb21tb24ge1xlbSBcY2Ryb21cIGRldmljZSBvcGVyYXRpb25zfSwgJDxjZHJvbS1kZXZpY2U+X2RvcHMkLgorVGhlc2Ugb3BlcmF0aW9ucyBhcmUgZGlmZmVyZW50IGZyb20gdGhlIGNsYXNzaWNhbCBibG9jay1kZXZpY2UgZmlsZQorb3BlcmF0aW9ucywgJDxibG9jay1kZXZpY2U+X2ZvcHMkLgorCitUaGUgcm91dGluZXMgZm9yIHRoZSBcVUNEXCBpbnRlcmZhY2UgbGV2ZWwgYXJlIGltcGxlbWVudGVkIGluIHRoZSBmaWxlCitcY2Ryb21jLiBJbiB0aGlzIGZpbGUsIHRoZSBcVUNEXCBpbnRlcmZhY2VzIHdpdGggdGhlIGtlcm5lbCBhcyBhIGJsb2NrCitkZXZpY2UgYnkgcmVnaXN0ZXJpbmcgdGhlIGZvbGxvd2luZyBnZW5lcmFsICRzdHJ1Y3RcIGZpbGVfb3BlcmF0aW9ucyQ6CiskJAorXGhhbGlnbnskIyRcIFxoZmlsJiQjJFwgXGhmaWwmJC8qJCBccm0jICQqLyRcaGZpbFxjcgorc3RydWN0JiBmaWxlX29wZXJhdGlvbnNcIGNkcm9tX2ZvcHMgPSBce1xoaWRld2lkdGhcY3IKKyAgICAgICAgJk5VTEwsICAgICAgICAgICAgICAgICAgJiBsc2VlayBcY3IKKyAgICAgICAgJmJsb2NrX3JlYWQsICAgICAgICAgICAgJiByZWFkLS0tZ2VuZXJhbCBibG9jay1kZXYgcmVhZCBcY3IKKyAgICAgICAgJmJsb2NrX3dyaXRlLCAgICAgICAgICAgJiB3cml0ZS0tLWdlbmVyYWwgYmxvY2stZGV2IHdyaXRlIFxjcgorICAgICAgICAmTlVMTCwgICAgICAgICAgICAgICAgICAmIHJlYWRkaXIgXGNyCisgICAgICAgICZOVUxMLCAgICAgICAgICAgICAgICAgICYgc2VsZWN0IFxjcgorICAgICAgICAmY2Ryb21faW9jdGwsICAgICAgICAgICAmIGlvY3RsIFxjcgorICAgICAgICAmTlVMTCwgICAgICAgICAgICAgICAgICAmIG1tYXAgXGNyCisgICAgICAgICZjZHJvbV9vcGVuLCAgICAgICAgICAgICYgb3BlbiBcY3IKKyAgICAgICAgJmNkcm9tX3JlbGVhc2UsICAgICAgICAgJiByZWxlYXNlIFxjcgorICAgICAgICAmTlVMTCwgICAgICAgICAgICAgICAgICAmIGZzeW5jIFxjcgorICAgICAgICAmTlVMTCwgICAgICAgICAgICAgICAgICAmIGZhc3luYyBcY3IKKyAgICAgICAgJmNkcm9tX21lZGlhX2NoYW5nZWQsICAgJiBtZWRpYSBjaGFuZ2UgXGNyCisgICAgICAgICZOVUxMICAgICAgICAgICAgICAgICAgICYgcmV2YWxpZGF0ZSBcY3IKK1x9O1xjcgorfQorJCQgCisKK0V2ZXJ5IGFjdGl2ZSBcY2Ryb21cIGRldmljZSBzaGFyZXMgdGhpcyAkc3RydWN0JC4gVGhlIHJvdXRpbmVzCitkZWNsYXJlZCBhYm92ZSBhcmUgYWxsIGltcGxlbWVudGVkIGluIFxjZHJvbWMsIHNpbmNlIHRoaXMgZmlsZSBpcyB0aGUKK3BsYWNlIHdoZXJlIHRoZSBiZWhhdmlvciBvZiBhbGwgXGNkcm9tLWRldmljZXMgaXMgZGVmaW5lZCBhbmQKK3N0YW5kYXJkaXplZC4gVGhlIGFjdHVhbCBpbnRlcmZhY2UgdG8gdGhlIHZhcmlvdXMgdHlwZXMgb2YgXGNkcm9tXCAKK2hhcmR3YXJlIGlzIHN0aWxsIHBlcmZvcm1lZCBieSB2YXJpb3VzIGxvdy1sZXZlbCBcY2Ryb20tZGV2aWNlCitkcml2ZXJzLiBUaGVzZSByb3V0aW5lcyBzaW1wbHkgaW1wbGVtZW50IGNlcnRhaW4ge1xlbSBjYXBhYmlsaXRpZXNcL30KK3RoYXQgYXJlIGNvbW1vbiB0byBhbGwgXGNkcm9tXCAoYW5kIHJlYWxseSwgYWxsIHJlbW92YWJsZS1tZWRpYQorZGV2aWNlcykuCisKK1JlZ2lzdHJhdGlvbiBvZiBhIGxvdy1sZXZlbCBcY2Ryb21cIGRldmljZSBkcml2ZXIgaXMgbm93IGRvbmUgdGhyb3VnaAordGhlIGdlbmVyYWwgcm91dGluZXMgaW4gXGNkcm9tYywgbm90IHRocm91Z2ggdGhlIFZpcnR1YWwgRmlsZSBTeXN0ZW0KKyhWRlMpIGFueSBtb3JlLiBUaGUgaW50ZXJmYWNlIGltcGxlbWVudGVkIGluIFxjZHJvbWNcIGlzIGNhcnJpZWQgb3V0Cit0aHJvdWdoIHR3byBnZW5lcmFsIHN0cnVjdHVyZXMgdGhhdCBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IHRoZQorY2FwYWJpbGl0aWVzIG9mIHRoZSBkcml2ZXIsIGFuZCB0aGUgc3BlY2lmaWMgZHJpdmVzIG9uIHdoaWNoIHRoZQorZHJpdmVyIG9wZXJhdGVzLiBUaGUgc3RydWN0dXJlcyBhcmU6CitcYmVnaW57ZGVzY3JpcHRpb259CitcaXRlbVskY2Ryb21fZGV2aWNlX29wcyRdIAorICBUaGlzIHN0cnVjdHVyZSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG93LWxldmVsIGRyaXZlciBmb3IgYQorICBcY2Ryb21cIGRldmljZS4gVGhpcyBzdHJ1Y3R1cmUgaXMgY29uY2VwdHVhbGx5IGNvbm5lY3RlZCB0byB0aGUgbWFqb3IKKyAgbnVtYmVyIG9mIHRoZSBkZXZpY2UgKGFsdGhvdWdoIHNvbWUgZHJpdmVycyBtYXkgaGF2ZSBkaWZmZXJlbnQKKyAgbWFqb3IgbnVtYmVycywgYXMgaXMgdGhlIGNhc2UgZm9yIHRoZSBJREUgZHJpdmVyKS4KK1xpdGVtWyRjZHJvbV9kZXZpY2VfaW5mbyRdIAorICBUaGlzIHN0cnVjdHVyZSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBhIHBhcnRpY3VsYXIgXGNkcm9tXCBkcml2ZSwKKyAgc3VjaCBhcyBpdHMgZGV2aWNlIG5hbWUsIHNwZWVkLCBldGMuIFRoaXMgc3RydWN0dXJlIGlzIGNvbmNlcHR1YWxseQorICBjb25uZWN0ZWQgdG8gdGhlIG1pbm9yIG51bWJlciBvZiB0aGUgZGV2aWNlLgorXGVuZHtkZXNjcmlwdGlvbn0KKworUmVnaXN0ZXJpbmcgYSBwYXJ0aWN1bGFyIFxjZHJvbVwgZHJpdmUgd2l0aCB0aGUgXFVDRFwgaXMgZG9uZSBieSB0aGUKK2xvdy1sZXZlbCBkZXZpY2UgZHJpdmVyIHRob3VnaCBhIGNhbGwgdG86CiskJHJlZ2lzdGVyX2Nkcm9tKHN0cnVjdFwgY2Ryb21fZGV2aWNlX2luZm8gKiA8ZGV2aWNlPl9pbmZvKSAgCiskJAorVGhlIGRldmljZSBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUsICQ8ZGV2aWNlPl9pbmZvJCwgY29udGFpbnMgYWxsIHRoZQoraW5mb3JtYXRpb24gbmVlZGVkIGZvciB0aGUga2VybmVsIHRvIGludGVyZmFjZSB3aXRoIHRoZSBsb3ctbGV2ZWwKK1xjZHJvbVwgZGV2aWNlIGRyaXZlci4gT25lIG9mIHRoZSBtb3N0IGltcG9ydGFudCBlbnRyaWVzIGluIHRoaXMKK3N0cnVjdHVyZSBpcyBhIHBvaW50ZXIgdG8gdGhlICRjZHJvbV9kZXZpY2Vfb3BzJCBzdHJ1Y3R1cmUgb2YgdGhlCitsb3ctbGV2ZWwgZHJpdmVyLgorCitUaGUgZGV2aWNlIG9wZXJhdGlvbnMgc3RydWN0dXJlLCAkY2Ryb21fZGV2aWNlX29wcyQsIGNvbnRhaW5zIGEgbGlzdAorb2YgcG9pbnRlcnMgdG8gdGhlIGZ1bmN0aW9ucyB3aGljaCBhcmUgaW1wbGVtZW50ZWQgaW4gdGhlIGxvdy1sZXZlbAorZGV2aWNlIGRyaXZlci4gV2hlbiBcY2Ryb21jXCBhY2Nlc3NlcyBhIFxjZHJvbVwgZGV2aWNlLCBpdCBkb2VzIGl0Cit0aHJvdWdoIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBzdHJ1Y3R1cmUuIEl0IGlzIGltcG9zc2libGUgdG8ga25vdyBhbGwKK3RoZSBjYXBhYmlsaXRpZXMgb2YgZnV0dXJlIFxjZHJvbVwgZHJpdmVzLCBzbyBpdCBpcyBleHBlY3RlZCB0aGF0IHRoaXMKK2xpc3QgbWF5IG5lZWQgdG8gYmUgZXhwYW5kZWQgZnJvbSB0aW1lIHRvIHRpbWUgYXMgbmV3IHRlY2hub2xvZ2llcyBhcmUKK2RldmVsb3BlZC4gRm9yIGV4YW1wbGUsIENELVIgYW5kIENELVIvVyBkcml2ZXMgYXJlIGJlZ2lubmluZyB0byBiZWNvbWUKK3BvcHVsYXIsIGFuZCBzdXBwb3J0IHdpbGwgc29vbiBuZWVkIHRvIGJlIGFkZGVkIGZvciB0aGVtLiBGb3Igbm93LCB0aGUKK2N1cnJlbnQgJHN0cnVjdCQgaXM6CiskJAorXGhhbGlnbnskIyRcIFxoZmlsJiQjJFwgXGhmaWwmXGhib3ggdG8gMTBlbXskIyRcaHNzfSYKKyAgJC8qJCBccm0jICQqLyRcaGZpbFxjcgorc3RydWN0JiBjZHJvbV9kZXZpY2Vfb3BzXCBceyBcaGlkZXdpZHRoXGNyCisgICZpbnQmICgqIG9wZW4pKHN0cnVjdFwgY2Ryb21fZGV2aWNlX2luZm8gKiwgaW50KVxjcgorICAmdm9pZCYgKCogcmVsZWFzZSkoc3RydWN0XCBjZHJvbV9kZXZpY2VfaW5mbyAqKTtcY3IgCisgICZpbnQmICgqIGRyaXZlX3N0YXR1cykoc3RydWN0XCBjZHJvbV9kZXZpY2VfaW5mbyAqLCBpbnQpO1xjciAgICAgCisgICZpbnQmICgqIG1lZGlhX2NoYW5nZWQpKHN0cnVjdFwgY2Ryb21fZGV2aWNlX2luZm8gKiwgaW50KTtcY3IgCisgICZpbnQmICgqIHRyYXlfbW92ZSkoc3RydWN0XCBjZHJvbV9kZXZpY2VfaW5mbyAqLCBpbnQpO1xjcgorICAmaW50JiAoKiBsb2NrX2Rvb3IpKHN0cnVjdFwgY2Ryb21fZGV2aWNlX2luZm8gKiwgaW50KTtcY3IKKyAgJmludCYgKCogc2VsZWN0X3NwZWVkKShzdHJ1Y3RcIGNkcm9tX2RldmljZV9pbmZvICosIGludCk7XGNyCisgICZpbnQmICgqIHNlbGVjdF9kaXNjKShzdHJ1Y3RcIGNkcm9tX2RldmljZV9pbmZvICosIGludCk7XGNyCisgICZpbnQmICgqIGdldF9sYXN0X3Nlc3Npb24pIChzdHJ1Y3RcIGNkcm9tX2RldmljZV9pbmZvICosIAorICAgICAgICBzdHJ1Y3RcIGNkcm9tX211bHRpc2Vzc2lvbiAqe30pO1xjcgorICAmaW50JiAoKiBnZXRfbWNuKShzdHJ1Y3RcIGNkcm9tX2RldmljZV9pbmZvICosIHN0cnVjdFwgY2Ryb21fbWNuICp7fSk7XGNyCisgICZpbnQmICgqIHJlc2V0KShzdHJ1Y3RcIGNkcm9tX2RldmljZV9pbmZvICopO1xjcgorICAmaW50JiAoKiBhdWRpb19pb2N0bCkoc3RydWN0XCBjZHJvbV9kZXZpY2VfaW5mbyAqLCB1bnNpZ25lZFwgaW50LCAKKyAgICAgICAgdm9pZCAqe30pO1xjciAKKyAgJmludCYgKCogZGV2X2lvY3RsKShzdHJ1Y3RcIGNkcm9tX2RldmljZV9pbmZvICosIHVuc2lnbmVkXCBpbnQsIAorICAgICAgICB1bnNpZ25lZFwgbG9uZyk7XGNyCitcbm9hbGlnbntcbWVkc2tpcH0KKyAgJmNvbnN0XCBpbnQmIGNhcGFiaWxpdHk7JiBjYXBhYmlsaXR5IGZsYWdzIFxjcgorICAmaW50JiBuX21pbm9yczsmIG51bWJlciBvZiBhY3RpdmUgbWlub3IgZGV2aWNlcyBcY3IKK1x9O1xjcgorfQorJCQKK1doZW4gYSBsb3ctbGV2ZWwgZGV2aWNlIGRyaXZlciBpbXBsZW1lbnRzIG9uZSBvZiB0aGVzZSBjYXBhYmlsaXRpZXMsCitpdCBzaG91bGQgYWRkIGEgZnVuY3Rpb24gcG9pbnRlciB0byB0aGlzICRzdHJ1Y3QkLiBXaGVuIGEgcGFydGljdWxhcgorZnVuY3Rpb24gaXMgbm90IGltcGxlbWVudGVkLCBob3dldmVyLCB0aGlzICRzdHJ1Y3QkIHNob3VsZCBjb250YWluIGEKK05VTEwgaW5zdGVhZC4gVGhlICRjYXBhYmlsaXR5JCBmbGFncyBzcGVjaWZ5IHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlCitcY2Ryb21cIGhhcmR3YXJlIGFuZC9vciBsb3ctbGV2ZWwgXGNkcm9tXCBkcml2ZXIgd2hlbiBhIFxjZHJvbVwgZHJpdmUKK2lzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgXFVDRC4gVGhlIHZhbHVlICRuX21pbm9ycyQgc2hvdWxkIGJlIGEgcG9zaXRpdmUKK3ZhbHVlIGluZGljYXRpbmcgdGhlIG51bWJlciBvZiBtaW5vciBkZXZpY2VzIHRoYXQgYXJlIHN1cHBvcnRlZCBieQordGhlIGxvdy1sZXZlbCBkZXZpY2UgZHJpdmVyLCBub3JtYWxseX4xLiBBbHRob3VnaCB0aGVzZSB0d28gdmFyaWFibGVzCithcmUgYGluZm9ybWF0aXZlJyByYXRoZXIgdGhhbiBgb3BlcmF0aW9uYWwsJyB0aGV5IGFyZSBpbmNsdWRlZCBpbgorJGNkcm9tX2RldmljZV9vcHMkIGJlY2F1c2UgdGhleSBkZXNjcmliZSB0aGUgY2FwYWJpbGl0eSBvZiB0aGUge1xlbQorZHJpdmVyXC99IHJhdGhlciB0aGFuIHRoZSB7XGVtIGRyaXZlfS4gTm9tZW5jbGF0dXJlIGhhcyBhbHdheXMgYmVlbgorZGlmZmljdWx0IGluIGNvbXB1dGVyIHByb2dyYW1taW5nLgorCitOb3RlIHRoYXQgbW9zdCBmdW5jdGlvbnMgaGF2ZSBmZXdlciBwYXJhbWV0ZXJzIHRoYW4gdGhlaXIKKyRibGtkZXZfZm9wcyQgY291bnRlcnBhcnRzLiBUaGlzIGlzIGJlY2F1c2UgdmVyeSBsaXR0bGUgb2YgdGhlCitpbmZvcm1hdGlvbiBpbiB0aGUgc3RydWN0dXJlcyAkaW5vZGUkIGFuZCAkZmlsZSQgaXMgdXNlZC4gRm9yIG1vc3QKK2RyaXZlcnMsIHRoZSBtYWluIHBhcmFtZXRlciBpcyB0aGUgJHN0cnVjdCQgJGNkcm9tX2RldmljZV9pbmZvJCwgZnJvbQord2hpY2ggdGhlIG1ham9yIGFuZCBtaW5vciBudW1iZXIgY2FuIGJlIGV4dHJhY3RlZC4gKE1vc3QgbG93LWxldmVsCitcY2Ryb21cIGRyaXZlcnMgZG9uJ3QgZXZlbiBsb29rIGF0IHRoZSBtYWpvciBhbmQgbWlub3IgbnVtYmVyIHRob3VnaCwKK3NpbmNlIG1hbnkgb2YgdGhlbSBvbmx5IHN1cHBvcnQgb25lIGRldmljZS4pIFRoaXMgd2lsbCBiZSBhdmFpbGFibGUKK3Rocm91Z2ggJGRldiQgaW4gJGNkcm9tX2RldmljZV9pbmZvJCBkZXNjcmliZWQgYmVsb3cuCisKK1RoZSBkcml2ZS1zcGVjaWZpYywgbWlub3ItbGlrZSBpbmZvcm1hdGlvbiB0aGF0IGlzIHJlZ2lzdGVyZWQgd2l0aAorXGNkcm9tYywgY3VycmVudGx5IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgZmllbGRzOgorJCQKK1xoYWxpZ257JCMkXCBcaGZpbCYkIyRcIFxoZmlsJlxoYm94IHRvIDEwZW17JCMkXGhzc30mCisgICQvKiQgXHJtIyAkKi8kXGhmaWxcY3IKK3N0cnVjdCYgY2Ryb21fZGV2aWNlX2luZm9cIFx7IFxoaWRld2lkdGhcY3IKKyAgJiBzdHJ1Y3RcIGNkcm9tX2RldmljZV9vcHMgKiYgb3BzOyYgZGV2aWNlIG9wZXJhdGlvbnMgZm9yIHRoaXMgbWFqb3JcY3IKKyAgJiBzdHJ1Y3RcIGNkcm9tX2RldmljZV9pbmZvIComIG5leHQ7JiBuZXh0IGRldmljZV9pbmZvIGZvciB0aGlzIG1ham9yXGNyCisgICYgdm9pZCAqJiAgaGFuZGxlOyYgZHJpdmVyLWRlcGVuZGVudCBkYXRhXGNyCitcbm9hbGlnbntcbWVkc2tpcH0KKyAgJiBrZGV2X3QmICBkZXY7JiBkZXZpY2UgbnVtYmVyIChpbmNvcnBvcmF0ZXMgbWlub3IpXGNyCisgICYgaW50JiBtYXNrOyYgbWFzayBvZiBjYXBhYmlsaXR5OiBkaXNhYmxlcyB0aGVtIFxjcgorICAmIGludCYgc3BlZWQ7JiBtYXhpbXVtIHNwZWVkIGZvciByZWFkaW5nIGRhdGEgXGNyCisgICYgaW50JiBjYXBhY2l0eTsmIG51bWJlciBvZiBkaXNjcyBpbiBhIGp1a2Vib3ggXGNyCitcbm9hbGlnbntcbWVkc2tpcH0KKyAgJmludCYgb3B0aW9ucyA6IDMwOyYgb3B0aW9ucyBmbGFncyBcY3IKKyAgJnVuc2lnbmVkJiBtY19mbGFncyA6IDI7JiBtZWRpYS1jaGFuZ2UgYnVmZmVyIGZsYWdzIFxjcgorICAmIGludCYgdXNlX2NvdW50OyYgbnVtYmVyIG9mIHRpbWVzIGRldmljZSBpcyBvcGVuZWRcY3IKKyAgJiBjaGFyJiBuYW1lWzIwXTsmIG5hbWUgb2YgdGhlIGRldmljZSB0eXBlXGNyCitcfVxjcgorfSQkCitVc2luZyB0aGlzICRzdHJ1Y3QkLCBhIGxpbmtlZCBsaXN0IG9mIHRoZSByZWdpc3RlcmVkIG1pbm9yIGRldmljZXMgaXMKK2J1aWx0LCB1c2luZyB0aGUgJG5leHQkIGZpZWxkLiBUaGUgZGV2aWNlIG51bWJlciwgdGhlIGRldmljZSBvcGVyYXRpb25zCitzdHJ1Y3QgYW5kIHNwZWNpZmljYXRpb25zIG9mIHByb3BlcnRpZXMgb2YgdGhlIGRyaXZlIGFyZSBzdG9yZWQgaW4gdGhpcworc3RydWN0dXJlLgorCitUaGUgJG1hc2skIGZsYWdzIGNhbiBiZSB1c2VkIHRvIG1hc2sgb3V0IHNvbWUgb2YgdGhlIGNhcGFiaWxpdGllcyBsaXN0ZWQKK2luICRvcHNcdG8gY2FwYWJpbGl0eSQsIGlmIGEgc3BlY2lmaWMgZHJpdmUgZG9lc24ndCBzdXBwb3J0IGEgZmVhdHVyZQorb2YgdGhlIGRyaXZlci4gVGhlIHZhbHVlICRzcGVlZCQgc3BlY2lmaWVzIHRoZSBtYXhpbXVtIGhlYWQtcmF0ZSBvZiB0aGUKK2RyaXZlLCBtZWFzdXJlZCBpbiB1bml0cyBvZiBub3JtYWwgYXVkaW8gc3BlZWQgKDE3Nlwsa0Ivc2VjIHJhdyBkYXRhIG9yCisxNTBcLGtCL3NlYyBmaWxlIHN5c3RlbSBkYXRhKS4gVGhlIHZhbHVlICRuX2Rpc2NzJCBzaG91bGQgcmVmbGVjdCB0aGUKK251bWJlciBvZiBkaXNjcyB0aGUgZHJpdmUgY2FuIGhvbGQgc2ltdWx0YW5lb3VzbHksIGlmIGl0IGlzIGRlc2lnbmVkCithcyBhIGp1a2UtYm94LCBvciBvdGhlcndpc2V+MS4gVGhlIHBhcmFtZXRlcnMgYXJlIGRlY2xhcmVkICRjb25zdCQKK2JlY2F1c2UgdGhleSBkZXNjcmliZSBwcm9wZXJ0aWVzIG9mIHRoZSBkcml2ZSwgd2hpY2ggZG9uJ3QgY2hhbmdlIGFmdGVyCityZWdpc3RyYXRpb24uCisKK0EgZmV3IHJlZ2lzdGVycyBjb250YWluIHZhcmlhYmxlcyBsb2NhbCB0byB0aGUgXGNkcm9tXCBkcml2ZS4gVGhlCitmbGFncyAkb3B0aW9ucyQgYXJlIHVzZWQgdG8gc3BlY2lmeSBob3cgdGhlIGdlbmVyYWwgXGNkcm9tXCByb3V0aW5lcworc2hvdWxkIGJlaGF2ZS4gVGhlc2UgdmFyaW91cyBmbGFncyByZWdpc3RlcnMgc2hvdWxkIHByb3ZpZGUgZW5vdWdoCitmbGV4aWJpbGl0eSB0byBhZGFwdCB0byB0aGUgZGlmZmVyZW50IHVzZXJzJyB3aXNoZXMgKGFuZCB7XGVtIG5vdFwvfSB0aGUKK2BhcmJpdHJhcnknIHdpc2hlcyBvZiB0aGUgYXV0aG9yIG9mIHRoZSBsb3ctbGV2ZWwgZGV2aWNlIGRyaXZlciwgYXMgaXMKK3RoZSBjYXNlIGluIHRoZSBvbGQgc2NoZW1lKS4gVGhlIHJlZ2lzdGVyICRtY19mbGFncyQgaXMgdXNlZCB0byBidWZmZXIKK3RoZSBpbmZvcm1hdGlvbiBmcm9tICRtZWRpYV9jaGFuZ2VkKCkkIHRvIHR3byBzZXBhcmF0ZSBxdWV1ZXMuIE90aGVyCitkYXRhIHRoYXQgaXMgc3BlY2lmaWMgdG8gYSBtaW5vciBkcml2ZSwgY2FuIGJlIGFjY2Vzc2VkIHRocm91Z2ggJGhhbmRsZSQsCit3aGljaCBjYW4gcG9pbnQgdG8gYSBkYXRhIHN0cnVjdHVyZSBzcGVjaWZpYyB0byB0aGUgbG93LWxldmVsIGRyaXZlci4KK1RoZSBmaWVsZHMgJHVzZV9jb3VudCQsICRuZXh0JCwgJG9wdGlvbnMkIGFuZCAkbWNfZmxhZ3MkIG5lZWQgbm90IGJlCitpbml0aWFsaXplZC4KKworVGhlIGludGVybWVkaWF0ZSBzb2Z0d2FyZSBsYXllciB0aGF0IFxjZHJvbWNcIGZvcm1zIHdpbGwgcGVyZm9ybSBzb21lCithZGRpdGlvbmFsIGJvb2trZWVwaW5nLiBUaGUgdXNlIGNvdW50IG9mIHRoZSBkZXZpY2UgKHRoZSBudW1iZXIgb2YKK3Byb2Nlc3NlcyB0aGF0IGhhdmUgdGhlIGRldmljZSBvcGVuZWQpIGlzIHJlZ2lzdGVyZWQgaW4gJHVzZV9jb3VudCQuIFRoZQorZnVuY3Rpb24gJGNkcm9tX2lvY3RsKCkkIHdpbGwgdmVyaWZ5IHRoZSBhcHByb3ByaWF0ZSB1c2VyLW1lbW9yeSByZWdpb25zCitmb3IgcmVhZCBhbmQgd3JpdGUsIGFuZCBpbiBjYXNlIGEgbG9jYXRpb24gb24gdGhlIENEIGlzIHRyYW5zZmVycmVkLAoraXQgd2lsbCBgc2FuaXRpemUnIHRoZSBmb3JtYXQgYnkgbWFraW5nIHJlcXVlc3RzIHRvIHRoZSBsb3ctbGV2ZWwKK2RyaXZlcnMgaW4gYSBzdGFuZGFyZCBmb3JtYXQsIGFuZCB0cmFuc2xhdGluZyBhbGwgZm9ybWF0cyBiZXR3ZWVuIHRoZQordXNlci1zb2Z0d2FyZSBhbmQgbG93IGxldmVsIGRyaXZlcnMuIFRoaXMgcmVsaWV2ZXMgbXVjaCBvZiB0aGUgZHJpdmVycycKK21lbW9yeSBjaGVja2luZyBhbmQgZm9ybWF0IGNoZWNraW5nIGFuZCB0cmFuc2xhdGlvbi4gQWxzbywgdGhlIG5lY2Vzc2FyeQorc3RydWN0dXJlcyB3aWxsIGJlIGRlY2xhcmVkIG9uIHRoZSBwcm9ncmFtIHN0YWNrLgorCitUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGZ1bmN0aW9ucyBzaG91bGQgYmUgYXMgZGVmaW5lZCBpbiB0aGUKK2ZvbGxvd2luZyBzZWN0aW9ucy4gVHdvIGZ1bmN0aW9ucyB7XGVtIG11c3RcL30gYmUgaW1wbGVtZW50ZWQsIG5hbWVseQorJG9wZW4oKSQgYW5kICRyZWxlYXNlKCkkLiBPdGhlciBmdW5jdGlvbnMgbWF5IGJlIG9taXR0ZWQsIHRoZWlyCitjb3JyZXNwb25kaW5nIGNhcGFiaWxpdHkgZmxhZ3Mgd2lsbCBiZSBjbGVhcmVkIHVwb24gcmVnaXN0cmF0aW9uLgorR2VuZXJhbGx5LCBhIGZ1bmN0aW9uIHJldHVybnMgemVybyBvbiBzdWNjZXNzIGFuZCBuZWdhdGl2ZSBvbiBlcnJvci4gQQorZnVuY3Rpb24gY2FsbCBzaG91bGQgcmV0dXJuIG9ubHkgYWZ0ZXIgdGhlIGNvbW1hbmQgaGFzIGNvbXBsZXRlZCwgYnV0IG9mCitjb3Vyc2Ugd2FpdGluZyBmb3IgdGhlIGRldmljZSBzaG91bGQgbm90IHVzZSBwcm9jZXNzb3IgdGltZS4KKworXHN1YnNlY3Rpb257JEludFwgb3BlbihzdHJ1Y3RcIGNkcm9tX2RldmljZV9pbmZvICogY2RpLCBpbnRcIHB1cnBvc2UpJH0KKworJE9wZW4oKSQgc2hvdWxkIHRyeSB0byBvcGVuIHRoZSBkZXZpY2UgZm9yIGEgc3BlY2lmaWMgJHB1cnBvc2UkLCB3aGljaAorY2FuIGJlIGVpdGhlcjoKK1xiZWdpbntpdGVtaXplfQorXGl0ZW1bMF0gT3BlbiBmb3IgcmVhZGluZyBkYXRhLCBhcyBkb25lIGJ5IHtcdHQge21vdW50KCl9fSAoMiksIG9yIHRoZQordXNlciBjb21tYW5kcyB7XHR0IHtkZH19IG9yIHtcdHQge2NhdH19LiAgCitcaXRlbVsxXSBPcGVuIGZvciAkaW9jdGwkIGNvbW1hbmRzLCBhcyBkb25lIGJ5IGF1ZGlvLUNEIHBsYXlpbmcKK3Byb2dyYW1zLgorXGVuZHtpdGVtaXplfQorTm90aWNlIHRoYXQgYW55IHN0cmF0ZWdpYyBjb2RlIChjbG9zaW5nIHRyYXkgdXBvbiAkb3BlbigpJCwgZXRjLilcIGlzCitkb25lIGJ5IHRoZSBjYWxsaW5nIHJvdXRpbmUgaW4gXGNkcm9tYywgc28gdGhlIGxvdy1sZXZlbCByb3V0aW5lCitzaG91bGQgb25seSBiZSBjb25jZXJuZWQgd2l0aCBwcm9wZXIgaW5pdGlhbGl6YXRpb24sIHN1Y2ggYXMgc3Bpbm5pbmcKK3VwIHRoZSBkaXNjLCBldGMuICUgYW5kIGRldmljZS11c2UgY291bnQKKworCitcc3Vic2VjdGlvbnskVm9pZFwgcmVsZWFzZShzdHJ1Y3RcIGNkcm9tX2RldmljZV9pbmZvICogY2RpKSR9CisKKworRGV2aWNlLXNwZWNpZmljIGFjdGlvbnMgc2hvdWxkIGJlIHRha2VuIHN1Y2ggYXMgc3Bpbm5pbmcgZG93biB0aGUgZGV2aWNlLgorSG93ZXZlciwgc3RyYXRlZ2ljIGFjdGlvbnMgc3VjaCBhcyBlamVjdGlvbiBvZiB0aGUgdHJheSwgb3IgdW5sb2NraW5nCit0aGUgZG9vciwgc2hvdWxkIGJlIGxlZnQgb3ZlciB0byB0aGUgZ2VuZXJhbCByb3V0aW5lICRjZHJvbV9yZWxlYXNlKCkkLgorVGhpcyBpcyB0aGUgb25seSBmdW5jdGlvbiByZXR1cm5pbmcgdHlwZSAkdm9pZCQuCisKK1xzdWJzZWN0aW9ueyRJbnRcIGRyaXZlX3N0YXR1cyhzdHJ1Y3RcIGNkcm9tX2RldmljZV9pbmZvICogY2RpLCBpbnRcIHNsb3RfbnIpJH0KK1xsYWJlbHtkcml2ZSBzdGF0dXN9CisKK1RoZSBmdW5jdGlvbiAkZHJpdmVfc3RhdHVzJCwgaWYgaW1wbGVtZW50ZWQsIHNob3VsZCBwcm92aWRlCitpbmZvcm1hdGlvbiBvbiB0aGUgc3RhdHVzIG9mIHRoZSBkcml2ZSAobm90IHRoZSBzdGF0dXMgb2YgdGhlIGRpc2MsCit3aGljaCBtYXkgb3IgbWF5IG5vdCBiZSBpbiB0aGUgZHJpdmUpLiBJZiB0aGUgZHJpdmUgaXMgbm90IGEgY2hhbmdlciwKKyRzbG90X25yJCBzaG91bGQgYmUgaWdub3JlZC4gSW4gXGNkcm9taFwgdGhlIHBvc3NpYmlsaXRpZXMgYXJlIGxpc3RlZDogCiskJAorXGhhbGlnbnskIyRcIFxoZmlsJiQvKiQgXHJtIyAkKi8kXGhmaWxcY3IKK0NEU19OT19JTkZPJiBubyBpbmZvcm1hdGlvbiBhdmFpbGFibGVcY3IKK0NEU19OT19ESVNDJiBubyBkaXNjIGlzIGluc2VydGVkLCB0cmF5IGlzIGNsb3NlZFxjcgorQ0RTX1RSQVlfT1BFTiYgdHJheSBpcyBvcGVuZWRcY3IKK0NEU19EUklWRV9OT1RfUkVBRFkmIHNvbWV0aGluZyBpcyB3cm9uZywgdHJheSBpcyBtb3Zpbmc/XGNyCitDRFNfRElTQ19PSyYgYSBkaXNjIGlzIGxvYWRlZCBhbmQgZXZlcnl0aGluZyBpcyBmaW5lXGNyCit9CiskJAorCitcc3Vic2VjdGlvbnskSW50XCBtZWRpYV9jaGFuZ2VkKHN0cnVjdFwgY2Ryb21fZGV2aWNlX2luZm8gKiBjZGksIGludFwgZGlzY19ucikkfQorCitUaGlzIGZ1bmN0aW9uIGlzIHZlcnkgc2ltaWxhciB0byB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gaW4gJHN0cnVjdFwgCitmaWxlX29wZXJhdGlvbnMkLiBJdCByZXR1cm5zIDEgaWYgdGhlIG1lZGl1bSBvZiB0aGUgZGV2aWNlICRjZGlcdG8KK2RldiQgaGFzIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgY2FsbCwgYW5kIDAgb3RoZXJ3aXNlLiBUaGUgcGFyYW1ldGVyCiskZGlzY19uciQgaWRlbnRpZmllcyBhIHNwZWNpZmljIHNsb3QgaW4gYSBqdWtlLWJveCwgaXQgc2hvdWxkIGJlCitpZ25vcmVkIGZvciBzaW5nbGUtZGlzYyBkcml2ZXMuICBOb3RlIHRoYXQgYnkgYHJlLXJvdXRpbmcnIHRoaXMKK2Z1bmN0aW9uIHRocm91Z2ggJGNkcm9tX21lZGlhX2NoYW5nZWQoKSQsIHdlIGNhbiBpbXBsZW1lbnQgc2VwYXJhdGUKK3F1ZXVlcyBmb3IgdGhlIFZGUyBhbmQgYSBuZXcgJGlvY3RsKCkkIGZ1bmN0aW9uIHRoYXQgY2FuIHJlcG9ydCBkZXZpY2UKK2NoYW5nZXMgdG8gc29mdHdhcmUgKFxlZywgYW4gYXV0by1tb3VudGluZyBkYWVtb24pLgorCitcc3Vic2VjdGlvbnskSW50XCB0cmF5X21vdmUoc3RydWN0XCBjZHJvbV9kZXZpY2VfaW5mbyAqIGNkaSwgaW50XCBwb3NpdGlvbikkfQorCitUaGlzIGZ1bmN0aW9uLCBpZiBpbXBsZW1lbnRlZCwgc2hvdWxkIGNvbnRyb2wgdGhlIHRyYXkgbW92ZW1lbnQuIChObworb3RoZXIgZnVuY3Rpb24gc2hvdWxkIGNvbnRyb2wgdGhpcy4pIFRoZSBwYXJhbWV0ZXIgJHBvc2l0aW9uJCBjb250cm9scwordGhlIGRlc2lyZWQgZGlyZWN0aW9uIG9mIG1vdmVtZW50OgorXGJlZ2lue2l0ZW1pemV9CitcaXRlbVswXSBDbG9zZSB0cmF5CitcaXRlbVsxXSBPcGVuIHRyYXkKK1xlbmR7aXRlbWl6ZX0KK1RoaXMgZnVuY3Rpb24gcmV0dXJucyAwIHVwb24gc3VjY2VzcywgYW5kIGEgbm9uLXplcm8gdmFsdWUgdXBvbgorZXJyb3IuIE5vdGUgdGhhdCBpZiB0aGUgdHJheSBpcyBhbHJlYWR5IGluIHRoZSBkZXNpcmVkIHBvc2l0aW9uLCBubworYWN0aW9uIG5lZWQgYmUgdGFrZW4sIGFuZCB0aGUgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSAwLiAKKworXHN1YnNlY3Rpb257JEludFwgbG9ja19kb29yKHN0cnVjdFwgY2Ryb21fZGV2aWNlX2luZm8gKiBjZGksIGludFwgbG9jaykkfQorCitUaGlzIGZ1bmN0aW9uIChhbmQgbm8gb3RoZXIgY29kZSkgY29udHJvbHMgbG9ja2luZyBvZiB0aGUgZG9vciwgaWYgdGhlCitkcml2ZSBhbGxvd3MgdGhpcy4gVGhlIHZhbHVlIG9mICRsb2NrJCBjb250cm9scyB0aGUgZGVzaXJlZCBsb2NraW5nCitzdGF0ZToKK1xiZWdpbntpdGVtaXplfQorXGl0ZW1bMF0gVW5sb2NrIGRvb3IsIG1hbnVhbCBvcGVuaW5nIGlzIGFsbG93ZWQKK1xpdGVtWzFdIExvY2sgZG9vciwgdHJheSBjYW5ub3QgYmUgZWplY3RlZCBtYW51YWxseQorXGVuZHtpdGVtaXplfQorVGhpcyBmdW5jdGlvbiByZXR1cm5zIDAgdXBvbiBzdWNjZXNzLCBhbmQgYSBub24temVybyB2YWx1ZSB1cG9uCitlcnJvci4gTm90ZSB0aGF0IGlmIHRoZSBkb29yIGlzIGFscmVhZHkgaW4gdGhlIHJlcXVlc3RlZCBzdGF0ZSwgbm8KK2FjdGlvbiBuZWVkIGJlIHRha2VuLCBhbmQgdGhlIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgMC4gCisKK1xzdWJzZWN0aW9ueyRJbnRcIHNlbGVjdF9zcGVlZChzdHJ1Y3RcIGNkcm9tX2RldmljZV9pbmZvICogY2RpLCBpbnRcIHNwZWVkKSR9CisKK1NvbWUgXGNkcm9tXCBkcml2ZXMgYXJlIGNhcGFibGUgb2YgY2hhbmdpbmcgdGhlaXIgaGVhZC1zcGVlZC4gVGhlcmUKK2FyZSBzZXZlcmFsIHJlYXNvbnMgZm9yIGNoYW5naW5nIHRoZSBzcGVlZCBvZiBhIFxjZHJvbVwgZHJpdmUuIEJhZGx5CitwcmVzc2VkIFxjZHJvbSBzIG1heSBiZW5lZml0IGZyb20gbGVzcy10aGFuLW1heGltdW0gaGVhZCByYXRlLiBNb2Rlcm4KK1xjZHJvbVwgZHJpdmVzIGNhbiBvYnRhaW4gdmVyeSBoaWdoIGhlYWQgcmF0ZXMgKHVwIHRvICQyNFx0aW1lcyQgaXMKK2NvbW1vbikuICBJdCBoYXMgYmVlbiByZXBvcnRlZCB0aGF0IHRoZXNlIGRyaXZlcyBjYW4gbWFrZSByZWFkaW5nCitlcnJvcnMgYXQgdGhlc2UgaGlnaCBzcGVlZHMsIHJlZHVjaW5nIHRoZSBzcGVlZCBjYW4gcHJldmVudCBkYXRhIGxvc3MKK2luIHRoZXNlIGNpcmN1bXN0YW5jZXMuICBGaW5hbGx5LCBzb21lIG9mIHRoZXNlIGRyaXZlcyBjYW4KK21ha2UgYW4gYW5ub3lpbmdseSBsb3VkIG5vaXNlLCB3aGljaCBhIGxvd2VyIHNwZWVkIG1heSByZWR1Y2UuICVGaW5hbGx5LAorJWFsdGhvdWdoIHRoZSBhdWRpby1sb3ctcGFzcyBmaWx0ZXJzIHByb2JhYmx5IGFyZW4ndCBkZXNpZ25lZCBmb3IgaXQsCislbW9yZSB0aGFuIHJlYWwtdGltZSBwbGF5YmFjayBvZiBhdWRpbyBtaWdodCBiZSB1c2VkIGZvciBoaWdoLXNwZWVkCislY29weWluZyBvZiBhdWRpbyB0cmFja3MuCisKK1RoaXMgZnVuY3Rpb24gc3BlY2lmaWVzIHRoZSBzcGVlZCBhdCB3aGljaCBkYXRhIGlzIHJlYWQgb3IgYXVkaW8gaXMKK3BsYXllZCBiYWNrLiBUaGUgdmFsdWUgb2YgJHNwZWVkJCBzcGVjaWZpZXMgdGhlIGhlYWQtc3BlZWQgb2YgdGhlCitkcml2ZSwgbWVhc3VyZWQgaW4gdW5pdHMgb2Ygc3RhbmRhcmQgY2Ryb20gc3BlZWQgKDE3Nlwsa0Ivc2VjIHJhdyBkYXRhCitvciAxNTBcLGtCL3NlYyBmaWxlIHN5c3RlbSBkYXRhKS4gU28gdG8gcmVxdWVzdCB0aGF0IGEgXGNkcm9tXCBkcml2ZQorb3BlcmF0ZSBhdCAzMDBcLGtCL3NlYyB5b3Ugd291bGQgY2FsbCB0aGUgQ0RST01fU0VMRUNUX1NQRUVEICRpb2N0bCQKK3dpdGggJHNwZWVkPTIkLiBUaGUgc3BlY2lhbCB2YWx1ZSBgMCcgbWVhbnMgYGF1dG8tc2VsZWN0aW9uJywgXGllLAorbWF4aW11bSBkYXRhLXJhdGUgb3IgcmVhbC10aW1lIGF1ZGlvIHJhdGUuIElmIHRoZSBkcml2ZSBkb2Vzbid0IGhhdmUKK3RoaXMgYGF1dG8tc2VsZWN0aW9uJyBjYXBhYmlsaXR5LCB0aGUgZGVjaXNpb24gc2hvdWxkIGJlIG1hZGUgb24gdGhlCitjdXJyZW50IGRpc2MgbG9hZGVkIGFuZCB0aGUgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSBwb3NpdGl2ZS4gQSBuZWdhdGl2ZQorcmV0dXJuIHZhbHVlIGluZGljYXRlcyBhbiBlcnJvci4KKworXHN1YnNlY3Rpb257JEludFwgc2VsZWN0X2Rpc2Moc3RydWN0XCBjZHJvbV9kZXZpY2VfaW5mbyAqIGNkaSwgaW50XCBudW1iZXIpJH0KKworSWYgdGhlIGRyaXZlIGNhbiBzdG9yZSBtdWx0aXBsZSBkaXNjcyAoYSBqdWtlLWJveCkgdGhpcyBmdW5jdGlvbgord2lsbCBwZXJmb3JtIGRpc2Mgc2VsZWN0aW9uLiBJdCBzaG91bGQgcmV0dXJuIHRoZSBudW1iZXIgb2YgdGhlCitzZWxlY3RlZCBkaXNjIG9uIHN1Y2Nlc3MsIGEgbmVnYXRpdmUgdmFsdWUgb24gZXJyb3IuIEN1cnJlbnRseSwgb25seQordGhlIGlkZS1jZCBkcml2ZXIgc3VwcG9ydHMgdGhpcyBmdW5jdGlvbmFsaXR5LgorCitcc3Vic2VjdGlvbnskSW50XCBnZXRfbGFzdF9zZXNzaW9uKHN0cnVjdFwgY2Ryb21fZGV2aWNlX2luZm8gKiBjZGksIHN0cnVjdFwKKyAgY2Ryb21fbXVsdGlzZXNzaW9uICogbXNfaW5mbykkfQorCitUaGlzIGZ1bmN0aW9uIHNob3VsZCBpbXBsZW1lbnQgdGhlIG9sZCBjb3JyZXNwb25kaW5nICRpb2N0bCgpJC4gRm9yCitkZXZpY2UgJGNkaVx0byBkZXYkLCB0aGUgc3RhcnQgb2YgdGhlIGxhc3Qgc2Vzc2lvbiBvZiB0aGUgY3VycmVudCBkaXNjCitzaG91bGQgYmUgcmV0dXJuZWQgaW4gdGhlIHBvaW50ZXIgYXJndW1lbnQgJG1zX2luZm8kLiBOb3RlIHRoYXQKK3JvdXRpbmVzIGluIFxjZHJvbWNcIGhhdmUgc2FuaXRpemVkIHRoaXMgYXJndW1lbnQ6IGl0cyByZXF1ZXN0ZWQKK2Zvcm1hdCB3aWxsIHtcZW0gYWx3YXlzXC99IGJlIG9mIHRoZSB0eXBlICRDRFJPTV9MQkEkIChsaW5lYXIgYmxvY2sKK2FkZHJlc3NpbmcgbW9kZSksIHdoYXRldmVyIHRoZSBjYWxsaW5nIHNvZnR3YXJlIHJlcXVlc3RlZC4gQnV0CitzYW5pdGl6YXRpb24gZ29lcyBldmVuIGZ1cnRoZXI6IHRoZSBsb3ctbGV2ZWwgaW1wbGVtZW50YXRpb24gbWF5CityZXR1cm4gdGhlIHJlcXVlc3RlZCBpbmZvcm1hdGlvbiBpbiAkQ0RST01fTVNGJCBmb3JtYXQgaWYgaXQgd2lzaGVzIHNvCisoc2V0dGluZyB0aGUgJG1zX2luZm9ccmlnaHRhcnJvdyBhZGRyX2Zvcm1hdCQgZmllbGQgYXBwcm9wcmlhdGVseSwgb2YKK2NvdXJzZSkgYW5kIHRoZSByb3V0aW5lcyBpbiBcY2Ryb21jXCB3aWxsIG1ha2UgdGhlIHRyYW5zZm9ybWF0aW9uIGlmCituZWNlc3NhcnkuIFRoZSByZXR1cm4gdmFsdWUgaXMgMCB1cG9uIHN1Y2Nlc3MuCisKK1xzdWJzZWN0aW9ueyRJbnRcIGdldF9tY24oc3RydWN0XCBjZHJvbV9kZXZpY2VfaW5mbyAqIGNkaSwgc3RydWN0XAorICBjZHJvbV9tY24gKiBtY24pJH0KKworU29tZSBkaXNjcyBjYXJyeSBhIGBNZWRpYSBDYXRhbG9nIE51bWJlcicgKE1DTiksIGFsc28gY2FsbGVkCitgVW5pdmVyc2FsIFByb2R1Y3QgQ29kZScgKFVQQykuIFRoaXMgbnVtYmVyIHNob3VsZCByZWZsZWN0IHRoZSBudW1iZXIKK3RoYXQgaXMgZ2VuZXJhbGx5IGZvdW5kIGluIHRoZSBiYXItY29kZSBvbiB0aGUgcHJvZHVjdC4gVW5mb3J0dW5hdGVseSwKK3RoZSBmZXcgZGlzY3MgdGhhdCBjYXJyeSBzdWNoIGEgbnVtYmVyIG9uIHRoZSBkaXNjIGRvbid0IGV2ZW4gdXNlIHRoZQorc2FtZSBmb3JtYXQuIFRoZSByZXR1cm4gYXJndW1lbnQgdG8gdGhpcyBmdW5jdGlvbiBpcyBhIHBvaW50ZXIgdG8gYQorcHJlLWRlY2xhcmVkIG1lbW9yeSByZWdpb24gb2YgdHlwZSAkc3RydWN0XCBjZHJvbV9tY24kLiBUaGUgTUNOIGlzCitleHBlY3RlZCBhcyBhIDEzLWNoYXJhY3RlciBzdHJpbmcsIHRlcm1pbmF0ZWQgYnkgYSBudWxsLWNoYXJhY3Rlci4KKworXHN1YnNlY3Rpb257JEludFwgcmVzZXQoc3RydWN0XCBjZHJvbV9kZXZpY2VfaW5mbyAqIGNkaSkkfQorCitUaGlzIGNhbGwgc2hvdWxkIHBlcmZvcm0gYSBoYXJkLXJlc2V0IG9uIHRoZSBkcml2ZSAoYWx0aG91Z2ggaW4KK2NpcmN1bXN0YW5jZXMgdGhhdCBhIGhhcmQtcmVzZXQgaXMgbmVjZXNzYXJ5LCBhIGRyaXZlIG1heSB2ZXJ5IHdlbGwgbm90CitsaXN0ZW4gdG8gY29tbWFuZHMgYW55bW9yZSkuIFByZWZlcmFibHksIGNvbnRyb2wgaXMgcmV0dXJuZWQgdG8gdGhlCitjYWxsZXIgb25seSBhZnRlciB0aGUgZHJpdmUgaGFzIGZpbmlzaGVkIHJlc2V0dGluZy4gSWYgdGhlIGRyaXZlIGlzIG5vCitsb25nZXIgbGlzdGVuaW5nLCBpdCBtYXkgYmUgd2lzZSBmb3IgdGhlIHVuZGVybHlpbmcgbG93LWxldmVsIGNkcm9tCitkcml2ZXIgdG8gdGltZSBvdXQuCisKK1xzdWJzZWN0aW9ueyRJbnRcIGF1ZGlvX2lvY3RsKHN0cnVjdFwgY2Ryb21fZGV2aWNlX2luZm8gKiBjZGksIHVuc2lnbmVkXAorICBpbnRcIGNtZCwgdm9pZCAqIGFyZykkfQorCitTb21lIG9mIHRoZSBcY2Ryb20tJGlvY3RsJHMgZGVmaW5lZCBpbiBcY2Ryb21oXCBjYW4gYmUKK2ltcGxlbWVudGVkIGJ5IHRoZSByb3V0aW5lcyBkZXNjcmliZWQgYWJvdmUsIGFuZCBoZW5jZSB0aGUgZnVuY3Rpb24KKyRjZHJvbV9pb2N0bCQgd2lsbCB1c2UgdGhvc2UuIEhvd2V2ZXIsIG1vc3QgJGlvY3RsJHMgZGVhbCB3aXRoCithdWRpby1jb250cm9sLiBXZSBoYXZlIGRlY2lkZWQgdG8gbGVhdmUgdGhlc2UgdG8gYmUgYWNjZXNzZWQgdGhyb3VnaCBhCitzaW5nbGUgZnVuY3Rpb24sIHJlcGVhdGluZyB0aGUgYXJndW1lbnRzICRjbWQkIGFuZCAkYXJnJC4gTm90ZSB0aGF0Cit0aGUgbGF0dGVyIGlzIG9mIHR5cGUgJHZvaWQqe30kLCByYXRoZXIgdGhhbiAkdW5zaWduZWRcIGxvbmdcCitpbnQkLiBUaGUgcm91dGluZSAkY2Ryb21faW9jdGwoKSQgZG9lcyBkbyBzb21lIHVzZWZ1bCB0aGluZ3MsCit0aG91Z2guIEl0IHNhbml0aXplcyB0aGUgYWRkcmVzcyBmb3JtYXQgdHlwZSB0byAkQ0RST01fTVNGJCAoTWludXRlcywKK1NlY29uZHMsIEZyYW1lcykgZm9yIGFsbCBhdWRpbyBjYWxscy4gSXQgYWxzbyB2ZXJpZmllcyB0aGUgbWVtb3J5Citsb2NhdGlvbiBvZiAkYXJnJCwgYW5kIHJlc2VydmVzIHN0YWNrLW1lbW9yeSBmb3IgdGhlIGFyZ3VtZW50LiBUaGlzCittYWtlcyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgJGF1ZGlvX2lvY3RsKCkkIG11Y2ggc2ltcGxlciB0aGFuIGluIHRoZQorb2xkIGRyaXZlciBzY2hlbWUuIEZvciBleGFtcGxlLCB5b3UgbWF5IGxvb2sgdXAgdGhlIGZ1bmN0aW9uCiskY20yMDZfYXVkaW9faW9jdGwoKSQgaW4ge1x0dCB7Y20yMDYuY319IHRoYXQgc2hvdWxkIGJlIHVwZGF0ZWQgd2l0aAordGhpcyBkb2N1bWVudGF0aW9uLiAKKworQW4gdW5pbXBsZW1lbnRlZCBpb2N0bCBzaG91bGQgcmV0dXJuICQtRU5PU1lTJCwgYnV0IGEgaGFybWxlc3MgcmVxdWVzdAorKFxlZywgJENEUk9NU1RBUlQkKSBtYXkgYmUgaWdub3JlZCBieSByZXR1cm5pbmcgMCAoc3VjY2VzcykuIE90aGVyCitlcnJvcnMgc2hvdWxkIGJlIGFjY29yZGluZyB0byB0aGUgc3RhbmRhcmRzLCB3aGF0ZXZlciB0aGV5IGFyZS4gV2hlbgorYW4gZXJyb3IgaXMgcmV0dXJuZWQgYnkgdGhlIGxvdy1sZXZlbCBkcml2ZXIsIHRoZSBcVUNEXCB0cmllcyB3aGVuZXZlcgorcG9zc2libGUgdG8gcmV0dXJuIHRoZSBlcnJvciBjb2RlIHRvIHRoZSBjYWxsaW5nIHByb2dyYW0uIChXZSBtYXkgZGVjaWRlCit0byBzYW5pdGl6ZSB0aGUgcmV0dXJuIHZhbHVlIGluICRjZHJvbV9pb2N0bCgpJCB0aG91Z2gsIGluIG9yZGVyIHRvCitndWFyYW50ZWUgYSB1bmlmb3JtIGludGVyZmFjZSB0byB0aGUgYXVkaW8tcGxheWVyIHNvZnR3YXJlLikKKworXHN1YnNlY3Rpb257JEludFwgZGV2X2lvY3RsKHN0cnVjdFwgY2Ryb21fZGV2aWNlX2luZm8gKiBjZGksIHVuc2lnbmVkXCBpbnRcCisgIGNtZCwgdW5zaWduZWRcIGxvbmdcIGFyZykkfQorCitTb21lICRpb2N0bCRzIHNlZW0gdG8gYmUgc3BlY2lmaWMgdG8gY2VydGFpbiBcY2Ryb21cIGRyaXZlcy4gVGhhdCBpcywKK3RoZXkgYXJlIGludHJvZHVjZWQgdG8gc2VydmljZSBzb21lIGNhcGFiaWxpdGllcyBvZiBjZXJ0YWluIGRyaXZlcy4gSW4KK2ZhY3QsIHRoZXJlIGFyZSA2IGRpZmZlcmVudCAkaW9jdGwkcyBmb3IgcmVhZGluZyBkYXRhLCBlaXRoZXIgaW4gc29tZQorcGFydGljdWxhciBraW5kIG9mIGZvcm1hdCwgb3IgYXVkaW8gZGF0YS4gTm90IG1hbnkgZHJpdmVzIHN1cHBvcnQKK3JlYWRpbmcgYXVkaW8gdHJhY2tzIGFzIGRhdGEsIEkgYmVsaWV2ZSB0aGlzIGlzIGJlY2F1c2Ugb2YgcHJvdGVjdGlvbgorb2YgY29weXJpZ2h0cyBvZiBhcnRpc3RzLiBNb3Jlb3ZlciwgSSB0aGluayB0aGF0IGlmIGF1ZGlvLXRyYWNrcyBhcmUKK3N1cHBvcnRlZCwgaXQgc2hvdWxkIGJlIGRvbmUgdGhyb3VnaCB0aGUgVkZTIGFuZCBub3QgdmlhICRpb2N0bCRzLiBBCitwcm9ibGVtIGhlcmUgY291bGQgYmUgdGhlIGZhY3QgdGhhdCBhdWRpby1mcmFtZXMgYXJlIDIzNTIgYnl0ZXMgbG9uZywKK3NvIGVpdGhlciB0aGUgYXVkaW8tZmlsZS1zeXN0ZW0gc2hvdWxkIGFzayBmb3IgNzUyNjQgYnl0ZXMgYXQgb25jZQorKHRoZSBsZWFzdCBjb21tb24gbXVsdGlwbGUgb2YgNTEyIGFuZCAyMzUyKSwgb3IgdGhlIGRyaXZlcnMgc2hvdWxkCitiZW5kIHRoZWlyIGJhY2tzIHRvIGNvcGUgd2l0aCB0aGlzIGluY29oZXJlbmNlICh0byB3aGljaCBJIHdvdWxkIGJlCitvcHBvc2VkKS4gIEZ1cnRoZXJtb3JlLCBpdCBpcyB2ZXJ5IGRpZmZpY3VsdCBmb3IgdGhlIGhhcmR3YXJlIHRvIGZpbmQKK3RoZSBleGFjdCBmcmFtZSBib3VuZGFyaWVzLCBzaW5jZSB0aGVyZSBhcmUgbm8gc3luY2hyb25pemF0aW9uIGhlYWRlcnMKK2luIGF1ZGlvIGZyYW1lcy4gIE9uY2UgdGhlc2UgaXNzdWVzIGFyZSByZXNvbHZlZCwgdGhpcyBjb2RlIHNob3VsZCBiZQorc3RhbmRhcmRpemVkIGluIFxjZHJvbWMuCisKK0JlY2F1c2UgdGhlcmUgYXJlIHNvIG1hbnkgJGlvY3RsJHMgdGhhdCBzZWVtIHRvIGJlIGludHJvZHVjZWQgdG8KK3NhdGlzZnkgY2VydGFpbiBkcml2ZXJzLFxmb290bm90ZXtJcyB0aGVyZSBzb2Z0d2FyZSBhcm91bmQgdGhhdAorICBhY3R1YWxseSB1c2VzIHRoZXNlPyBJJ2QgYmUgaW50ZXJlc3RlZCF9IGFueSBgbm9uLXN0YW5kYXJkJyAkaW9jdGwkcworYXJlIHJvdXRlZCB0aHJvdWdoIHRoZSBjYWxsICRkZXZfaW9jdGwoKSQuIEluIHByaW5jaXBsZSwgYHByaXZhdGUnCiskaW9jdGwkcyBzaG91bGQgYmUgbnVtYmVyZWQgYWZ0ZXIgdGhlIGRldmljZSdzIG1ham9yIG51bWJlciwgYW5kIG5vdAordGhlIGdlbmVyYWwgXGNkcm9tXCAkaW9jdGwkIG51bWJlciwge1x0dCB7MHg1M319LiBDdXJyZW50bHkgdGhlCitub24tc3VwcG9ydGVkICRpb2N0bCRzIGFyZToge1xpdCBDRFJPTVJFQURNT0RFMSwgQ0RST01SRUFETU9ERTIsCisgIENEUk9NUkVBREFVRElPLCBDRFJPTVJFQURSQVcsIENEUk9NUkVBRENPT0tFRCwgQ0RST01TRUVLLAorICBDRFJPTVBMQVlcLUJMSyBhbmQgQ0RST01cLVJFQURBTEx9LgorCisKK1xzdWJzZWN0aW9ue1xjZHJvbVwgY2FwYWJpbGl0aWVzfQorXGxhYmVse2NhcGFiaWxpdHl9CisKK0luc3RlYWQgb2YganVzdCBpbXBsZW1lbnRpbmcgc29tZSAkaW9jdGwkIGNhbGxzLCB0aGUgaW50ZXJmYWNlIGluCitcY2Ryb21jXCBzdXBwbGllcyB0aGUgcG9zc2liaWxpdHkgdG8gaW5kaWNhdGUgdGhlIHtcZW0gY2FwYWJpbGl0aWVzXC99CitvZiBhIFxjZHJvbVwgZHJpdmUuIFRoaXMgY2FuIGJlIGRvbmUgYnkgT1JpbmcgYW55IG51bWJlciBvZgorY2FwYWJpbGl0eS1jb25zdGFudHMgdGhhdCBhcmUgZGVmaW5lZCBpbiBcY2Ryb21oXCBhdCB0aGUgcmVnaXN0cmF0aW9uCitwaGFzZS4gQ3VycmVudGx5LCB0aGUgY2FwYWJpbGl0aWVzIGFyZSBhbnkgb2Y6CiskJAorXGhhbGlnbnskIyRcIFxoZmlsJiQvKiQgXHJtIyAkKi8kXGhmaWxcY3IKK0NEQ19DTE9TRV9UUkFZJiBjYW4gY2xvc2UgdHJheSBieSBzb2Z0d2FyZSBjb250cm9sXGNyCitDRENfT1BFTl9UUkFZJiBjYW4gb3BlbiB0cmF5XGNyCitDRENfTE9DSyYgY2FuIGxvY2sgYW5kIHVubG9jayB0aGUgZG9vclxjcgorQ0RDX1NFTEVDVF9TUEVFRCYgY2FuIHNlbGVjdCBzcGVlZCwgaW4gdW5pdHMgb2YgJFxzaW0kMTUwXCxrQi9zXGNyCitDRENfU0VMRUNUX0RJU0MmIGRyaXZlIGlzIGp1a2UtYm94XGNyCitDRENfTVVMVElfU0VTU0lPTiYgY2FuIHJlYWQgc2Vzc2lvbnMgJD5ccm0xJFxjcgorQ0RDX01DTiYgY2FuIHJlYWQgTWVkaWEgQ2F0YWxvZyBOdW1iZXJcY3IKK0NEQ19NRURJQV9DSEFOR0VEJiBjYW4gcmVwb3J0IGlmIGRpc2MgaGFzIGNoYW5nZWRcY3IKK0NEQ19QTEFZX0FVRElPJiBjYW4gcGVyZm9ybSBhdWRpby1mdW5jdGlvbnMgKHBsYXksIHBhdXNlLCBldGMpXGNyCitDRENfUkVTRVQmIGhhcmQgcmVzZXQgZGV2aWNlXGNyCitDRENfSU9DVExTJiBkcml2ZXIgaGFzIG5vbi1zdGFuZGFyZCBpb2N0bHNcY3IKK0NEQ19EUklWRV9TVEFUVVMmIGRyaXZlciBpbXBsZW1lbnRzIGRyaXZlIHN0YXR1c1xjcgorfQorJCQKK1RoZSBjYXBhYmlsaXR5IGZsYWcgaXMgZGVjbGFyZWQgJGNvbnN0JCwgdG8gcHJldmVudCBkcml2ZXJzIGZyb20KK2FjY2lkZW50YWxseSB0YW1wZXJpbmcgd2l0aCB0aGUgY29udGVudHMuIFRoZSBjYXBhYmlsaXR5IGZhZ3MgYWN0dWFsbHkKK2luZm9ybSBcY2Ryb21jXCBvZiB3aGF0IHRoZSBkcml2ZXIgY2FuIGRvLiBJZiB0aGUgZHJpdmUgZm91bmQKK2J5IHRoZSBkcml2ZXIgZG9lcyBub3QgaGF2ZSB0aGUgY2FwYWJpbGl0eSwgaXMgY2FuIGJlIG1hc2tlZCBvdXQgYnkKK3RoZSAkY2Ryb21fZGV2aWNlX2luZm8kIHZhcmlhYmxlICRtYXNrJC4gRm9yIGluc3RhbmNlLCB0aGUgU0NTSSBcY2Ryb21cCitkcml2ZXIgaGFzIGltcGxlbWVudGVkIHRoZSBjb2RlIGZvciBsb2FkaW5nIGFuZCBlamVjdGluZyBcY2Ryb20ncywgYW5kCitoZW5jZSBpdHMgY29ycmVzcG9uZGluZyBmbGFncyBpbiAkY2FwYWJpbGl0eSQgd2lsbCBiZSBzZXQuIEJ1dCBhIFNDU0kKK1xjZHJvbVwgZHJpdmUgbWlnaHQgYmUgYSBjYWRkeSBzeXN0ZW0sIHdoaWNoIGNhbid0IGxvYWQgdGhlIHRyYXksIGFuZAoraGVuY2UgZm9yIHRoaXMgZHJpdmUgdGhlICRjZHJvbV9kZXZpY2VfaW5mbyQgc3RydWN0IHdpbGwgaGF2ZSBzZXQKK3RoZSAkQ0RDX0NMT1NFX1RSQVkkIGJpdCBpbiAkbWFzayQuCisKK0luIHRoZSBmaWxlIFxjZHJvbWNcIHlvdSB3aWxsIGVuY291bnRlciBtYW55IGNvbnN0cnVjdGlvbnMgb2YgdGhlIHR5cGUKKyQkXGl0CitpZlwgKGNkb1xyaWdodGFycm93IGNhcGFiaWxpdHkgXG1hdGhyZWxcJiBcbWF0aG9yZHtcc2ltfSBjZGlccmlnaHRhcnJvdyBtYXNrIAorICAgXG1hdGhyZWx7XCZ9IENEQ188Y2FwYWJpbGl0eT4pIFxsZG90cworJCQKK1RoZXJlIGlzIG5vICRpb2N0bCQgdG8gc2V0IHRoZSBtYXNrXGRvdHMgVGhlIHJlYXNvbiBpcyB0aGF0CitJIHRoaW5rIGl0IGlzIGJldHRlciB0byBjb250cm9sIHRoZSB7XGVtIGJlaGF2aW9yXC99IHJhdGhlciB0aGFuIHRoZQore1xlbSBjYXBhYmlsaXRpZXN9LgorCitcc3Vic2VjdGlvbntPcHRpb25zfQorCitBIGZpbmFsIGZsYWcgcmVnaXN0ZXIgY29udHJvbHMgdGhlIHtcZW0gYmVoYXZpb3JcL30gb2YgdGhlIFxjZHJvbVwKK2RyaXZlcywgaW4gb3JkZXIgdG8gc2F0aXNmeSBkaWZmZXJlbnQgdXNlcnMnIHdpc2hlcywgaG9wZWZ1bGx5CitpbmRlcGVuZGVudGx5IG9mIHRoZSBpZGVhcyBvZiB0aGUgcmVzcGVjdGl2ZSBhdXRob3Igd2hvIGhhcHBlbmVkIHRvCitoYXZlIG1hZGUgdGhlIGRyaXZlJ3Mgc3VwcG9ydCBhdmFpbGFibGUgdG8gdGhlIFxsaW51eFwgY29tbXVuaXR5LiBUaGUKK2N1cnJlbnQgYmVoYXZpb3Igb3B0aW9ucyBhcmU6CiskJAorXGhhbGlnbnskIyRcIFxoZmlsJiQvKiQgXHJtIyAkKi8kXGhmaWxcY3IKK0NET19BVVRPX0NMT1NFJiB0cnkgdG8gY2xvc2UgdHJheSB1cG9uIGRldmljZSAkb3BlbigpJFxjcgorQ0RPX0FVVE9fRUpFQ1QmIHRyeSB0byBvcGVuIHRyYXkgb24gbGFzdCBkZXZpY2UgJGNsb3NlKCkkXGNyCitDRE9fVVNFX0ZGTEFHUyYgdXNlICRmaWxlX3BvaW50ZXJccmlnaHRhcnJvdyBmX2ZsYWdzJCB0byBpbmRpY2F0ZQorIHB1cnBvc2UgZm9yICRvcGVuKCkkXGNyCitDRE9fTE9DSyYgdHJ5IHRvIGxvY2sgZG9vciBpZiBkZXZpY2UgaXMgb3BlbmVkXGNyCitDRE9fQ0hFQ0tfVFlQRSYgZW5zdXJlIGRpc2MgdHlwZSBpcyBkYXRhIGlmIG9wZW5lZCBmb3IgZGF0YVxjcgorfQorJCQKKworVGhlIGluaXRpYWwgdmFsdWUgb2YgdGhpcyByZWdpc3RlciBpcyAkQ0RPX0FVVE9fQ0xPU0UgXG1hdGhyZWx8CitDRE9fVVNFX0ZGTEFHUyBcbWF0aHJlbHwgQ0RPX0xPQ0skLCByZWZsZWN0aW5nIG15IG93biB2aWV3IG9uIHVzZXIKK2ludGVyZmFjZSBhbmQgc29mdHdhcmUgc3RhbmRhcmRzLiBCZWZvcmUgeW91IHByb3Rlc3QsIHRoZXJlIGFyZSB0d28KK25ldyAkaW9jdGwkcyBpbXBsZW1lbnRlZCBpbiBcY2Ryb21jLCB0aGF0IGFsbG93IHlvdSB0byBjb250cm9sIHRoZQorYmVoYXZpb3IgYnkgc29mdHdhcmUuIFRoZXNlIGFyZToKKyQkCitcaGFsaWdueyQjJFwgXGhmaWwmJC8qJCBccm0jICQqLyRcaGZpbFxjcgorQ0RST01fU0VUX09QVElPTlMmIHNldCBvcHRpb25zIHNwZWNpZmllZCBpbiAkKGludClcIGFyZyRcY3IKK0NEUk9NX0NMRUFSX09QVElPTlMmIGNsZWFyIG9wdGlvbnMgc3BlY2lmaWVkIGluICQoaW50KVwgYXJnJFxjcgorfQorJCQKK09uZSBvcHRpb24gbmVlZHMgc29tZSBtb3JlIGV4cGxhbmF0aW9uOiAkQ0RPX1VTRV9GRkxBR1MkLiBJbiB0aGUgbmV4dAorbmV3c2VjdGlvbiB3ZSBleHBsYWluIHdoYXQgdGhlIG5lZWQgZm9yIHRoaXMgb3B0aW9uIGlzLgorCitBIHNvZnR3YXJlIHBhY2thZ2Uge1x0dCBzZXRjZH0sIGF2YWlsYWJsZSBmcm9tIHRoZSBEZWJpYW4gZGlzdHJpYnV0aW9uCithbmQge1x0dCBzdW5zaXRlLnVuYy5lZHV9LCBhbGxvd3MgdXNlciBsZXZlbCBjb250cm9sIG9mIHRoZXNlIGZsYWdzLiAKKworXG5ld3NlY3Rpb257VGhlIG5lZWQgdG8ga25vdyB0aGUgcHVycG9zZSBvZiBvcGVuaW5nIHRoZSBcY2Ryb21cIGRldmljZX0KKworVHJhZGl0aW9uYWxseSwgVW5peCBkZXZpY2VzIGNhbiBiZSB1c2VkIGluIHR3byBkaWZmZXJlbnQgYG1vZGVzJywKK2VpdGhlciBieSByZWFkaW5nL3dyaXRpbmcgdG8gdGhlIGRldmljZSBmaWxlLCBvciBieSBpc3N1aW5nCitjb250cm9sbGluZyBjb21tYW5kcyB0byB0aGUgZGV2aWNlLCBieSB0aGUgZGV2aWNlJ3MgJGlvY3RsKCkkCitjYWxsLiBUaGUgcHJvYmxlbSB3aXRoIFxjZHJvbVwgZHJpdmVzLCBpcyB0aGF0IHRoZXkgY2FuIGJlIHVzZWQgZm9yCit0d28gZW50aXJlbHkgZGlmZmVyZW50IHB1cnBvc2VzLiBPbmUgaXMgdG8gbW91bnQgcmVtb3ZhYmxlCitmaWxlIHN5c3RlbXMsIFxjZHJvbSBzLCB0aGUgb3RoZXIgaXMgdG8gcGxheSBhdWRpbyBDRCdzLiBBdWRpbyBjb21tYW5kcworYXJlIGltcGxlbWVudGVkIGVudGlyZWx5IHRocm91Z2ggJGlvY3RsJHMsIHByZXN1bWFibHkgYmVjYXVzZSB0aGUKK2ZpcnN0IGltcGxlbWVudGF0aW9uIChTVU4/KSBoYXMgYmVlbiBzdWNoLiBJbiBwcmluY2lwbGUgdGhlcmUgaXMKK25vdGhpbmcgd3Jvbmcgd2l0aCB0aGlzLCBidXQgYSBnb29kIGNvbnRyb2wgb2YgdGhlIGBDRCBwbGF5ZXInIGRlbWFuZHMKK3RoYXQgdGhlIGRldmljZSBjYW4ge1xlbSBhbHdheXNcL30gYmUgb3BlbmVkIGluIG9yZGVyIHRvIGdpdmUgdGhlCiskaW9jdGwkIGNvbW1hbmRzLCByZWdhcmRsZXNzIG9mIHRoZSBzdGF0ZSB0aGUgZHJpdmUgaXMgaW4uIAorCitPbiB0aGUgb3RoZXIgaGFuZCwgd2hlbiB1c2VkIGFzIGEgcmVtb3ZhYmxlLW1lZGlhIGRpc2MgZHJpdmUgKHdoYXQgdGhlCitvcmlnaW5hbCBwdXJwb3NlIG9mIFxjZHJvbSBzIGlzKSB3ZSB3b3VsZCBsaWtlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZQorZGlzYyBkcml2ZSBpcyByZWFkeSBmb3Igb3BlcmF0aW9uIHVwb24gb3BlbmluZyB0aGUgZGV2aWNlLiBJbiB0aGUgb2xkCitzY2hlbWUsIHNvbWUgXGNkcm9tXCBkcml2ZXJzIGRvbid0IGRvIGFueSBpbnRlZ3JpdHkgY2hlY2tpbmcsIHJlc3VsdGluZworaW4gYSBudW1iZXIgb2YgaS9vIGVycm9ycyByZXBvcnRlZCBieSB0aGUgVkZTIHRvIHRoZSBrZXJuZWwgd2hlbiBhbgorYXR0ZW1wdCBmb3IgbW91bnRpbmcgYSBcY2Ryb21cIG9uIGFuIGVtcHR5IGRyaXZlIG9jY3Vycy4gVGhpcyBpcyBub3QgYQorcGFydGljdWxhcmx5IGVsZWdhbnQgd2F5IHRvIGZpbmQgb3V0IHRoYXQgdGhlcmUgaXMgbm8gXGNkcm9tXCBpbnNlcnRlZDsKK2l0IG1vcmUtb3ItbGVzcyBsb29rcyBsaWtlIHRoZSBvbGQgSUJNLVBDIHRyeWluZyB0byByZWFkIGFuIGVtcHR5IGZsb3BweQorZHJpdmUgZm9yIGEgY291cGxlIG9mIHNlY29uZHMsIGFmdGVyIHdoaWNoIHRoZSBzeXN0ZW0gY29tcGxhaW5zIGl0CitjYW4ndCByZWFkIGZyb20gaXQuIE5vd2FkYXlzIHdlIGNhbiB7XGVtIHNlbnNlXC99IHRoZSBleGlzdGVuY2Ugb2YgYQorcmVtb3ZhYmxlIG1lZGl1bSBpbiBhIGRyaXZlLCBhbmQgd2UgYmVsaWV2ZSB3ZSBzaG91bGQgZXhwbG9pdCB0aGF0CitmYWN0LiBBbiBpbnRlZ3JpdHkgY2hlY2sgb24gb3BlbmluZyBvZiB0aGUgZGV2aWNlLCB0aGF0IHZlcmlmaWVzIHRoZQorYXZhaWxhYmlsaXR5IG9mIGEgXGNkcm9tXCBhbmQgaXRzIGNvcnJlY3QgdHlwZSAoZGF0YSksIHdvdWxkIGJlCitkZXNpcmFibGUuCisKK1RoZXNlIHR3byB3YXlzIG9mIHVzaW5nIGEgXGNkcm9tXCBkcml2ZSwgcHJpbmNpcGFsbHkgZm9yIGRhdGEgYW5kCitzZWNvbmRhcmlseSBmb3IgcGxheWluZyBhdWRpbyBkaXNjcywgaGF2ZSBkaWZmZXJlbnQgZGVtYW5kcyBmb3IgdGhlCitiZWhhdmlvciBvZiB0aGUgJG9wZW4oKSQgY2FsbC4gQXVkaW8gdXNlIHNpbXBseSB3YW50cyB0byBvcGVuIHRoZQorZGV2aWNlIGluIG9yZGVyIHRvIGdldCBhIGZpbGUgaGFuZGxlIHdoaWNoIGlzIG5lZWRlZCBmb3IgaXNzdWluZworJGlvY3RsJCBjb21tYW5kcywgd2hpbGUgZGF0YSB1c2Ugd2FudHMgdG8gb3BlbiBmb3IgY29ycmVjdCBhbmQKK3JlbGlhYmxlIGRhdGEgdHJhbnNmZXIuIFRoZSBvbmx5IHdheSB1c2VyIHByb2dyYW1zIGNhbiBpbmRpY2F0ZSB3aGF0Cit0aGVpciB7XGVtIHB1cnBvc2VcL30gb2Ygb3BlbmluZyB0aGUgZGV2aWNlIGlzLCBpcyB0aHJvdWdoIHRoZSAkZmxhZ3MkCitwYXJhbWV0ZXIgKHNlZSB7XHR0IHtvcGVuKDIpfX0pLiBGb3IgXGNkcm9tXCBkZXZpY2VzLCB0aGVzZSBmbGFncyBhcmVuJ3QKK2ltcGxlbWVudGVkIChzb21lIGRyaXZlcnMgaW1wbGVtZW50IGNoZWNraW5nIGZvciB3cml0ZS1yZWxhdGVkIGZsYWdzLAorYnV0IHRoaXMgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSBpZiB0aGUgZGV2aWNlIGZpbGUgaGFzIGNvcnJlY3QKK3Blcm1pc3Npb24gZmxhZ3MpLiBNb3N0IG9wdGlvbiBmbGFncyBzaW1wbHkgZG9uJ3QgbWFrZSBzZW5zZSB0bworXGNkcm9tXCBkZXZpY2VzOiAkT19DUkVBVCQsICRPX05PQ1RUWSQsICRPX1RSVU5DJCwgJE9fQVBQRU5EJCwgYW5kCiskT19TWU5DJCBoYXZlIG5vIG1lYW5pbmcgdG8gYSBcY2Ryb20uIAorCitXZSB0aGVyZWZvcmUgcHJvcG9zZSB0byB1c2UgdGhlIGZsYWcgJE9fTk9OQkxPQ0skIHRvIGluZGljYXRlCit0aGF0IHRoZSBkZXZpY2UgaXMgb3BlbmVkIGp1c3QgZm9yIGlzc3VpbmcgJGlvY3RsJAorY29tbWFuZHMuIFN0cmljdGx5LCB0aGUgbWVhbmluZyBvZiAkT19OT05CTE9DSyQgaXMgdGhhdCBvcGVuaW5nIGFuZAorc3Vic2VxdWVudCBjYWxscyB0byB0aGUgZGV2aWNlIGRvbid0IGNhdXNlIHRoZSBjYWxsaW5nIHByb2Nlc3MgdG8KK3dhaXQuIFdlIGNvdWxkIGludGVycHJldCB0aGlzIGFzIGBgZG9uJ3Qgd2FpdCB1bnRpbCBzb21lb25lIGhhcworaW5zZXJ0ZWQgc29tZSB2YWxpZCBkYXRhLVxjZHJvbS4nJyBUaHVzLCBvdXIgcHJvcG9zYWwgb2YgdGhlCitpbXBsZW1lbnRhdGlvbiBmb3IgdGhlICRvcGVuKCkkIGNhbGwgZm9yIFxjZHJvbSBzIGlzOgorXGJlZ2lue2l0ZW1pemV9CitcaXRlbSBJZiBubyBvdGhlciBmbGFncyBhcmUgc2V0IHRoYW4gJE9fUkRPTkxZJCwgdGhlIGRldmljZSBpcyBvcGVuZWQKK2ZvciBkYXRhIHRyYW5zZmVyLCBhbmQgdGhlIHJldHVybiB2YWx1ZSB3aWxsIGJlIDAgb25seSB1cG9uIHN1Y2Nlc3NmdWwKK2luaXRpYWxpemF0aW9uIG9mIHRoZSB0cmFuc2Zlci4gVGhlIGNhbGwgbWF5IGV2ZW4gaW5kdWNlIHNvbWUgYWN0aW9ucworb24gdGhlIFxjZHJvbSwgc3VjaCBhcyBjbG9zaW5nIHRoZSB0cmF5LiAgCitcaXRlbSBJZiB0aGUgb3B0aW9uIGZsYWcgJE9fTk9OQkxPQ0skIGlzIHNldCwgb3BlbmluZyB3aWxsIGFsd2F5cyBiZQorc3VjY2Vzc2Z1bCwgdW5sZXNzIHRoZSB3aG9sZSBkZXZpY2UgZG9lc24ndCBleGlzdC4gVGhlIGRyaXZlIHdpbGwgdGFrZQorbm8gYWN0aW9ucyB3aGF0c29ldmVyLiAKK1xlbmR7aXRlbWl6ZX0KKworXHN1YnNlY3Rpb257QW5kIHdoYXQgYWJvdXQgc3RhbmRhcmRzP30KKworWW91IG1pZ2h0IGhlc2l0YXRlIHRvIGFjY2VwdCB0aGlzIHByb3Bvc2FsIGFzIGl0IGNvbWVzIGZyb20gdGhlCitcbGludXhcIGNvbW11bml0eSwgYW5kIG5vdCBmcm9tIHNvbWUgc3RhbmRhcmRpemluZyBpbnN0aXR1dGUuIFdoYXQKK2Fib3V0IFNVTiwgU0dJLCBIUCBhbmQgYWxsIHRob3NlIG90aGVyIFVuaXggYW5kIGhhcmR3YXJlIHZlbmRvcnM/CitXZWxsLCB0aGVzZSBjb21wYW5pZXMgYXJlIGluIHRoZSBsdWNreSBwb3NpdGlvbiB0aGF0IHRoZXkgZ2VuZXJhbGx5Citjb250cm9sIGJvdGggdGhlIGhhcmR3YXJlIGFuZCBzb2Z0d2FyZSBvZiB0aGVpciBzdXBwb3J0ZWQgcHJvZHVjdHMsCithbmQgYXJlIGxhcmdlIGVub3VnaCB0byBzZXQgdGhlaXIgb3duIHN0YW5kYXJkLiBUaGV5IGRvIG5vdCBoYXZlIHRvCitkZWFsIHdpdGggYSBkb3plbiBvciBtb3JlIGRpZmZlcmVudCwgY29tcGV0aW5nIGhhcmR3YXJlCitjb25maWd1cmF0aW9ucy5cZm9vdG5vdGV7SW5jaWRlbnRhbGx5LCBJIHRoaW5rIHRoYXQgU1VOJ3MgYXBwcm9hY2ggdG8KK21vdW50aW5nIFxjZHJvbSBzIGlzIHZlcnkgZ29vZCBpbiBvcmlnaW46IHVuZGVyIFNvbGFyaXMgYQordm9sdW1lLWRhZW1vbiBhdXRvbWF0aWNhbGx5IG1vdW50cyBhIG5ld2x5IGluc2VydGVkIFxjZHJvbVwgdW5kZXIge1x0dAorey9jZHJvbS8kPHZvbHVtZS1uYW1lPiQvfX0uIEluIG15IG9waW5pb24gdGhleSBzaG91bGQgaGF2ZSBwdXNoZWQgdGhpcworZnVydGhlciBhbmQgaGF2ZSB7XGVtIGV2ZXJ5XC99IFxjZHJvbVwgb24gdGhlIGxvY2FsIGFyZWEgbmV0d29yayBiZQorbW91bnRlZCBhdCB0aGUgc2ltaWxhciBsb2NhdGlvbiwgXGllLCBubyBtYXR0ZXIgaW4gd2hpY2ggcGFydGljdWxhcgorbWFjaGluZSB5b3UgaW5zZXJ0IGEgXGNkcm9tLCBpdCB3aWxsIGFsd2F5cyBhcHBlYXIgYXQgdGhlIHNhbWUKK3Bvc2l0aW9uIGluIHRoZSBkaXJlY3RvcnkgdHJlZSwgb24gZXZlcnkgc3lzdGVtLiBXaGVuIEkgd2FudGVkIHRvCitpbXBsZW1lbnQgc3VjaCBhIHVzZXItcHJvZ3JhbSBmb3IgXGxpbnV4LCBJIGNhbWUgYWNyb3NzIHRoZQorZGlmZmVyZW5jZXMgaW4gYmVoYXZpb3Igb2YgdGhlIHZhcmlvdXMgZHJpdmVycywgYW5kIHRoZSBuZWVkIGZvciBhbgorJGlvY3RsJCBpbmZvcm1pbmcgYWJvdXQgbWVkaWEgY2hhbmdlcy59CisKK1dlIGJlbGlldmUgdGhhdCB1c2luZyAkT19OT05CTE9DSyQgdG8gaW5kaWNhdGUgdGhhdCBhIGRldmljZSBpcyBiZWluZyBvcGVuZWQKK2ZvciAkaW9jdGwkIGNvbW1hbmRzIG9ubHkgY2FuIGJlIGVhc2lseSBpbnRyb2R1Y2VkIGluIHRoZSBcbGludXhcCitjb21tdW5pdHkuIEFsbCB0aGUgQ0QtcGxheWVyIGF1dGhvcnMgd2lsbCBoYXZlIHRvIGJlIGluZm9ybWVkLCB3ZSBjYW4KK2V2ZW4gc2VuZCBpbiBvdXIgb3duIHBhdGNoZXMgdG8gdGhlIHByb2dyYW1zLiBUaGUgdXNlIG9mICRPX05PTkJMT0NLJAoraGFzIG1vc3QgbGlrZWx5IG5vIGluZmx1ZW5jZSBvbiB0aGUgYmVoYXZpb3Igb2YgdGhlIENELXBsYXllcnMgb24KK290aGVyIG9wZXJhdGluZyBzeXN0ZW1zIHRoYW4gXGxpbnV4LiBGaW5hbGx5LCBhIHVzZXIgY2FuIGFsd2F5cyByZXZlcnQKK3RvIG9sZCBiZWhhdmlvciBieSBhIGNhbGwgdG8gJGlvY3RsKGZpbGVfZGVzY3JpcHRvciwgQ0RST01fQ0xFQVJfT1BUSU9OUywKK0NET19VU0VfRkZMQUdTKSQuIAorCitcc3Vic2VjdGlvbntUaGUgcHJlZmVycmVkIHN0cmF0ZWd5IG9mICRvcGVuKCkkfQorCitUaGUgcm91dGluZXMgaW4gXGNkcm9tY1wgYXJlIGRlc2lnbmVkIGluIHN1Y2ggYSB3YXkgdGhhdCBydW4tdGltZQorY29uZmlndXJhdGlvbiBvZiB0aGUgYmVoYXZpb3Igb2YgXGNkcm9tXCBkZXZpY2VzIChvZiB7XGVtIGFueVwvfSB0eXBlKQorY2FuIGJlIGNhcnJpZWQgb3V0LCBieSB0aGUgJENEUk9NX1NFVC9DTEVBUl9PUFRJT05TJCAkaW9jdGxzJC4gVGh1cywgdmFyaW91cworbW9kZXMgb2Ygb3BlcmF0aW9uIGNhbiBiZSBzZXQ6CitcYmVnaW57ZGVzY3JpcHRpb259CitcaXRlbVskQ0RPX0FVVE9fQ0xPU0UgXG1hdGhyZWx8IENET19VU0VfRkZMQUdTIFxtYXRocmVsfCBDRE9fTE9DSyRdIFRoaXMKK2lzIHRoZSBkZWZhdWx0IHNldHRpbmcuIChXaXRoICRDRE9fQ0hFQ0tfVFlQRSQgaXQgd2lsbCBiZSBiZXR0ZXIsIGluIHRoZQorZnV0dXJlLikgSWYgdGhlIGRldmljZSBpcyBub3QgeWV0IG9wZW5lZCBieSBhbnkgb3RoZXIgcHJvY2VzcywgYW5kIGlmCit0aGUgZGV2aWNlIGlzIGJlaW5nIG9wZW5lZCBmb3IgZGF0YSAoJE9fTk9OQkxPQ0skIGlzIG5vdCBzZXQpIGFuZCB0aGUKK3RyYXkgaXMgZm91bmQgdG8gYmUgb3BlbiwgYW4gYXR0ZW1wdCB0byBjbG9zZSB0aGUgdHJheSBpcyBtYWRlLiBUaGVuLAoraXQgaXMgdmVyaWZpZWQgdGhhdCBhIGRpc2MgaXMgaW4gdGhlIGRyaXZlIGFuZCwgaWYgJENET19DSEVDS19UWVBFJCBpcworc2V0LCB0aGF0IGl0IGNvbnRhaW5zIHRyYWNrcyBvZiB0eXBlIGBkYXRhIG1vZGUgMS4nIE9ubHkgaWYgYWxsIHRlc3RzCithcmUgcGFzc2VkIGlzIHRoZSByZXR1cm4gdmFsdWUgemVyby4gVGhlIGRvb3IgaXMgbG9ja2VkIHRvIHByZXZlbnQgZmlsZQorc3lzdGVtIGNvcnJ1cHRpb24uIElmIHRoZSBkcml2ZSBpcyBvcGVuZWQgZm9yIGF1ZGlvICgkT19OT05CTE9DSyQgaXMKK3NldCksIG5vIGFjdGlvbnMgYXJlIHRha2VuIGFuZCBhIHZhbHVlIG9mIDAgd2lsbCBiZSByZXR1cm5lZC4gCitcaXRlbVskQ0RPX0FVVE9fQ0xPU0UgXG1hdGhyZWx8IENET19BVVRPX0VKRUNUIFxtYXRocmVsfCBDRE9fTE9DSyRdIFRoaXMKK21pbWljcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGN1cnJlbnQgc2JwY2QtZHJpdmVyLiBUaGUgb3B0aW9uIGZsYWdzIGFyZQoraWdub3JlZCwgdGhlIHRyYXkgaXMgY2xvc2VkIG9uIHRoZSBmaXJzdCBvcGVuLCBpZiBuZWNlc3NhcnkuIFNpbWlsYXJseSwKK3RoZSB0cmF5IGlzIG9wZW5lZCBvbiB0aGUgbGFzdCByZWxlYXNlLCBcaWUsIGlmIGEgXGNkcm9tXCBpcyB1bm1vdW50ZWQsCitpdCBpcyBhdXRvbWF0aWNhbGx5IGVqZWN0ZWQsIHN1Y2ggdGhhdCB0aGUgdXNlciBjYW4gcmVwbGFjZSBpdC4KK1xlbmR7ZGVzY3JpcHRpb259IAorV2UgaG9wZSB0aGF0IHRoZXNlIG9wdGlvbiBjYW4gY29udmluY2UgZXZlcnlib2R5IChib3RoIGRyaXZlcgorbWFpbnRhaW5lcnMgYW5kIHVzZXIgcHJvZ3JhbSBkZXZlbG9wZXJzKSB0byBhZG9wdCB0aGUgbmV3IFxjZHJvbVwKK2RyaXZlciBzY2hlbWUgYW5kIG9wdGlvbiBmbGFnIGludGVycHJldGF0aW9uLgorCitcbmV3c2VjdGlvbntEZXNjcmlwdGlvbiBvZiByb3V0aW5lcyBpbiBcY2Ryb21jfQorCitPbmx5IGEgZmV3IHJvdXRpbmVzIGluIFxjZHJvbWNcIGFyZSBleHBvcnRlZCB0byB0aGUgZHJpdmVycy4gSW4gdGhpcworbmV3IHNlY3Rpb24gd2Ugd2lsbCBkaXNjdXNzIHRoZXNlLCBhcyB3ZWxsIGFzIHRoZSBmdW5jdGlvbnMgdGhhdCBgdGFrZQorb3ZlcicgdGhlIFxjZHJvbVwgaW50ZXJmYWNlIHRvIHRoZSBrZXJuZWwuIFRoZSBoZWFkZXIgZmlsZSBiZWxvbmdpbmcKK3RvIFxjZHJvbWNcIGlzIGNhbGxlZCBcY2Ryb21oLiBGb3JtZXJseSwgc29tZSBvZiB0aGUgY29udGVudHMgb2YgdGhpcworZmlsZSB3ZXJlIHBsYWNlZCBpbiB0aGUgZmlsZSB7XHR0IHt1Y2Ryb20uaH19LCBidXQgdGhpcyBmaWxlIGhhcyBub3cgYmVlbgorbWVyZ2VkIGJhY2sgaW50byBcY2Ryb21oLgorCitcc3Vic2VjdGlvbnskU3RydWN0XCBmaWxlX29wZXJhdGlvbnNcIGNkcm9tX2ZvcHMkfQorCitUaGUgY29udGVudHMgb2YgdGhpcyBzdHJ1Y3R1cmUgd2VyZSBkZXNjcmliZWQgaW4gc2VjdGlvbn5ccmVme2Nkcm9tLmN9LgorQSBwb2ludGVyIHRvIHRoaXMgc3RydWN0dXJlIGlzIGFzc2lnbmVkIHRvIHRoZSAkZm9wcyQgZmllbGQKK29mIHRoZSAkc3RydWN0IGdlbmRpc2skLgorCitcc3Vic2VjdGlvbnskSW50XCByZWdpc3Rlcl9jZHJvbSggc3RydWN0XCBjZHJvbV9kZXZpY2VfaW5mb1wgKiBjZGkpJH0KKworVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGluIGFib3V0IHRoZSBzYW1lIHdheSBvbmUgcmVnaXN0ZXJzICRjZHJvbV9mb3BzJAord2l0aCB0aGUga2VybmVsLCB0aGUgZGV2aWNlIG9wZXJhdGlvbnMgYW5kIGluZm9ybWF0aW9uIHN0cnVjdHVyZXMsCithcyBkZXNjcmliZWQgaW4gc2VjdGlvbn5ccmVme2Nkcm9tLmN9LCBzaG91bGQgYmUgcmVnaXN0ZXJlZCB3aXRoIHRoZQorXFVDRDoKKyQkCityZWdpc3Rlcl9jZHJvbShcJjxkZXZpY2U+X2luZm8pKTsKKyQkCitUaGlzIGZ1bmN0aW9uIHJldHVybnMgemVybyB1cG9uIHN1Y2Nlc3MsIGFuZCBub24temVybyB1cG9uCitmYWlsdXJlLiBUaGUgc3RydWN0dXJlICQ8ZGV2aWNlPl9pbmZvJCBzaG91bGQgaGF2ZSBhIHBvaW50ZXIgdG8gdGhlCitkcml2ZXIncyAkPGRldmljZT5fZG9wcyQsIGFzIGluIAorJCQKK1x2Ym94e1xoYWxpZ257JiQjJFxoZmlsXGNyCitzdHJ1Y3RcICZjZHJvbV9kZXZpY2VfaW5mb1wgPGRldmljZT5faW5mbyA9IFx7XGNyCismIDxkZXZpY2U+X2RvcHM7XGNyCismXGxkb3RzXGNyCitcfVxjcgorfX0kJAorTm90ZSB0aGF0IGEgZHJpdmVyIG11c3QgaGF2ZSBvbmUgc3RhdGljIHN0cnVjdHVyZSwgJDxkZXZpY2U+X2RvcHMkLCB3aGlsZQoraXQgbWF5IGhhdmUgYXMgbWFueSBzdHJ1Y3R1cmVzICQ8ZGV2aWNlPl9pbmZvJCBhcyB0aGVyZSBhcmUgbWlub3IgZGV2aWNlcworYWN0aXZlLiAkUmVnaXN0ZXJfY2Ryb20oKSQgYnVpbGRzIGEgbGlua2VkIGxpc3QgZnJvbSB0aGVzZS4gCisKK1xzdWJzZWN0aW9ueyRWb2lkXCB1bnJlZ2lzdGVyX2Nkcm9tKHN0cnVjdFwgY2Ryb21fZGV2aWNlX2luZm8gKiBjZGkpJH0KKworVW5yZWdpc3RlcmluZyBkZXZpY2UgJGNkaSQgd2l0aCBtaW5vciBudW1iZXIgJE1JTk9SKGNkaVx0byBkZXYpJCByZW1vdmVzCit0aGUgbWlub3IgZGV2aWNlIGZyb20gdGhlIGxpc3QuIElmIGl0IHdhcyB0aGUgbGFzdCByZWdpc3RlcmVkIG1pbm9yIGZvcgordGhlIGxvdy1sZXZlbCBkcml2ZXIsIHRoaXMgZGlzY29ubmVjdHMgdGhlIHJlZ2lzdGVyZWQgZGV2aWNlLW9wZXJhdGlvbgorcm91dGluZXMgZnJvbSB0aGUgXGNkcm9tXCBpbnRlcmZhY2UuIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB6ZXJvIHVwb24KK3N1Y2Nlc3MsIGFuZCBub24temVybyB1cG9uIGZhaWx1cmUuCisKK1xzdWJzZWN0aW9ueyRJbnRcIGNkcm9tX29wZW4oc3RydWN0XCBpbm9kZSAqIGlwLCBzdHJ1Y3RcIGZpbGUgKiBmcCkkfQorCitUaGlzIGZ1bmN0aW9uIGlzIG5vdCBjYWxsZWQgZGlyZWN0bHkgYnkgdGhlIGxvdy1sZXZlbCBkcml2ZXJzLCBpdCBpcworbGlzdGVkIGluIHRoZSBzdGFuZGFyZCAkY2Ryb21fZm9wcyQuIElmIHRoZSBWRlMgb3BlbnMgYSBmaWxlLCB0aGlzCitmdW5jdGlvbiBiZWNvbWVzIGFjdGl2ZS4gQSBzdHJhdGVneSBpcyBpbXBsZW1lbnRlZCBpbiB0aGlzIHJvdXRpbmUsCit0YWtpbmcgY2FyZSBvZiBhbGwgY2FwYWJpbGl0aWVzIGFuZCBvcHRpb25zIHRoYXQgYXJlIHNldCBpbiB0aGUKKyRjZHJvbV9kZXZpY2Vfb3BzJCBjb25uZWN0ZWQgdG8gdGhlIGRldmljZS4gVGhlbiwgdGhlIHByb2dyYW0gZmxvdyBpcwordHJhbnNmZXJyZWQgdG8gdGhlIGRldmljZV9kZXBlbmRlbnQgJG9wZW4oKSQgY2FsbC4KKworXHN1YnNlY3Rpb257JFZvaWRcIGNkcm9tX3JlbGVhc2Uoc3RydWN0XCBpbm9kZSAqaXAsIHN0cnVjdFwgZmlsZQorKmZwKSR9CisKK1RoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgcmV2ZXJzZS1sb2dpYyBvZiAkY2Ryb21fb3BlbigpJCwgYW5kIHRoZW4KK2NhbGxzIHRoZSBkZXZpY2UtZGVwZW5kZW50ICRyZWxlYXNlKCkkIHJvdXRpbmUuIFdoZW4gdGhlIHVzZS1jb3VudCBoYXMKK3JlYWNoZWQgMCwgdGhlIGFsbG9jYXRlZCBidWZmZXJzIGFyZSBmbHVzaGVkIGJ5IGNhbGxzIHRvICRzeW5jX2RldihkZXYpJAorYW5kICRpbnZhbGlkYXRlX2J1ZmZlcnMoZGV2KSQuCisKKworXHN1YnNlY3Rpb257JEludFwgY2Ryb21faW9jdGwoc3RydWN0XCBpbm9kZSAqaXAsIHN0cnVjdFwgZmlsZSAqZnAsCit1bnNpZ25lZFwgaW50XCBjbWQsIHVuc2lnbmVkXCBsb25nXCBhcmcpJH0KK1xsYWJlbHtjZHJvbS1pb2N0bH0KKworVGhpcyBmdW5jdGlvbiBoYW5kbGVzIGFsbCB0aGUgc3RhbmRhcmQgJGlvY3RsJCByZXF1ZXN0cyBmb3IgXGNkcm9tXAorZGV2aWNlcyBpbiBhIHVuaWZvcm0gd2F5LiBUaGUgZGlmZmVyZW50IGNhbGxzIGZhbGwgaW50byB0aHJlZQorY2F0ZWdvcmllczogJGlvY3RsJHMgdGhhdCBjYW4gYmUgZGlyZWN0bHkgaW1wbGVtZW50ZWQgYnkgZGV2aWNlCitvcGVyYXRpb25zLCBvbmVzIHRoYXQgYXJlIHJvdXRlZCB0aHJvdWdoIHRoZSBjYWxsICRhdWRpb19pb2N0bCgpJCwgYW5kCit0aGUgcmVtYWluaW5nIG9uZXMsIHRoYXQgYXJlIHByZXN1bWFibGUgZGV2aWNlLWRlcGVuZGVudC4gR2VuZXJhbGx5LCBhCituZWdhdGl2ZSByZXR1cm4gdmFsdWUgaW5kaWNhdGVzIGFuIGVycm9yLgorCitcc3Vic3Vic2VjdGlvbntEaXJlY3RseSBpbXBsZW1lbnRlZCAkaW9jdGwkc30KK1xsYWJlbHtpb2N0bC1kaXJlY3R9CisKK1RoZSBmb2xsb3dpbmcgYG9sZCcgXGNkcm9tLSRpb2N0bCRzIGFyZSBpbXBsZW1lbnRlZCBieSBkaXJlY3RseQorY2FsbGluZyBkZXZpY2Utb3BlcmF0aW9ucyBpbiAkY2Ryb21fZGV2aWNlX29wcyQsIGlmIGltcGxlbWVudGVkIGFuZAorbm90IG1hc2tlZDoKK1xiZWdpbntkZXNjcmlwdGlvbn0KK1xpdGVtW0NEUk9NTVVMVElTRVNTSU9OXSBSZXF1ZXN0cyB0aGUgbGFzdCBzZXNzaW9uIG9uIGEgXGNkcm9tLgorXGl0ZW1bQ0RST01FSkVDVF0gT3BlbiB0cmF5LiAKK1xpdGVtW0NEUk9NQ0xPU0VUUkFZXSBDbG9zZSB0cmF5LgorXGl0ZW1bQ0RST01FSkVDVF9TV10gSWYgJGFyZ1xub3Q9MCQsIHNldCBiZWhhdmlvciB0byBhdXRvLWNsb3NlIChjbG9zZQordHJheSBvbiBmaXJzdCBvcGVuKSBhbmQgYXV0by1lamVjdCAoZWplY3Qgb24gbGFzdCByZWxlYXNlKSwgb3RoZXJ3aXNlCitzZXQgYmVoYXZpb3IgdG8gbm9uLW1vdmluZyBvbiAkb3BlbigpJCBhbmQgJHJlbGVhc2UoKSQgY2FsbHMuCitcaXRlbVtDRFJPTV9HRVRfTUNOXSBHZXQgdGhlIE1lZGlhIENhdGFsb2cgTnVtYmVyIGZyb20gYSBDRC4KK1xlbmR7ZGVzY3JpcHRpb259CisKK1xzdWJzdWJzZWN0aW9ueyRJb2N0bCRzIHJvdXRlZCB0aHJvdWdoICRhdWRpb19pb2N0bCgpJH0KK1xsYWJlbHtpb2N0bC1hdWRpb30KKworVGhlIGZvbGxvd2luZyBzZXQgb2YgJGlvY3RsJHMgYXJlIGFsbCBpbXBsZW1lbnRlZCB0aHJvdWdoIGEgY2FsbCB0bwordGhlICRjZHJvbV9mb3BzJCBmdW5jdGlvbiAkYXVkaW9faW9jdGwoKSQuIE1lbW9yeSBjaGVja3MgYW5kCithbGxvY2F0aW9uIGFyZSBwZXJmb3JtZWQgaW4gJGNkcm9tX2lvY3RsKCkkLCBhbmQgYWxzbyBzYW5pdGl6YXRpb24gb2YKK2FkZHJlc3MgZm9ybWF0ICgkQ0RST01fTEJBJC8kQ0RST01fTVNGJCkgaXMgZG9uZS4KK1xiZWdpbntkZXNjcmlwdGlvbn0KK1xpdGVtW0NEUk9NU1VCQ0hOTF0gR2V0IHN1Yi1jaGFubmVsIGRhdGEgaW4gYXJndW1lbnQgJGFyZyQgb2YgdHlwZSAkc3RydWN0XAorY2Ryb21fc3ViY2hubCAqe30kLgorXGl0ZW1bQ0RST01SRUFEVE9DSERSXSBSZWFkIFRhYmxlIG9mIENvbnRlbnRzIGhlYWRlciwgaW4gJGFyZyQgb2YgdHlwZQorJHN0cnVjdFwgY2Ryb21fdG9jaGRyICp7fSQuIAorXGl0ZW1bQ0RST01SRUFEVE9DRU5UUlldIFJlYWQgYSBUYWJsZSBvZiBDb250ZW50cyBlbnRyeSBpbiAkYXJnJCBhbmQKK3NwZWNpZmllZCBieSAkYXJnJCBvZiB0eXBlICRzdHJ1Y3RcIGNkcm9tX3RvY2VudHJ5ICp7fSQuCitcaXRlbVtDRFJPTVBMQVlNU0ZdIFBsYXkgYXVkaW8gZnJhZ21lbnQgc3BlY2lmaWVkIGluIE1pbnV0ZSwgU2Vjb25kLAorRnJhbWUgZm9ybWF0LCBkZWxpbWl0ZWQgYnkgJGFyZyQgb2YgdHlwZSAkc3RydWN0XCBjZHJvbV9tc2YgKnt9JC4KK1xpdGVtW0NEUk9NUExBWVRSS0lORF0gUGxheSBhdWRpbyBmcmFnbWVudCBpbiB0cmFjay1pbmRleCBmb3JtYXQKK2RlbGltaXRlZCBieSAkYXJnJCBvZiB0eXBlICRzdHJ1Y3RcIFxwZW5hbHR5LTEwMDAgY2Ryb21fdGkgKnt9JC4KK1xpdGVtW0NEUk9NVk9MQ1RSTF0gU2V0IHZvbHVtZSBzcGVjaWZpZWQgYnkgJGFyZyQgb2YgdHlwZSAkc3RydWN0XAorY2Ryb21fdm9sY3RybCAqe30kLgorXGl0ZW1bQ0RST01WT0xSRUFEXSBSZWFkIHZvbHVtZSBpbnRvIGJ5ICRhcmckIG9mIHR5cGUgJHN0cnVjdFwKK2Nkcm9tX3ZvbGN0cmwgKnt9JC4KK1xpdGVtW0NEUk9NU1RBUlRdIFNwaW4gdXAgZGlzYy4KK1xpdGVtW0NEUk9NU1RPUF0gU3RvcCBwbGF5YmFjayBvZiBhdWRpbyBmcmFnbWVudC4KK1xpdGVtW0NEUk9NUEFVU0VdIFBhdXNlIHBsYXliYWNrIG9mIGF1ZGlvIGZyYWdtZW50LgorXGl0ZW1bQ0RST01SRVNVTUVdIFJlc3VtZSBwbGF5aW5nLgorXGVuZHtkZXNjcmlwdGlvbn0KKworXHN1YnN1YnNlY3Rpb257TmV3ICRpb2N0bCRzIGluIFxjZHJvbWN9CisKK1RoZSBmb2xsb3dpbmcgJGlvY3RsJHMgaGF2ZSBiZWVuIGludHJvZHVjZWQgdG8gYWxsb3cgdXNlciBwcm9ncmFtcyB0bworY29udHJvbCB0aGUgYmVoYXZpb3Igb2YgaW5kaXZpZHVhbCBcY2Ryb21cIGRldmljZXMuIE5ldyAkaW9jdGwkCitjb21tYW5kcyBjYW4gYmUgaWRlbnRpZmllZCBieSB0aGUgdW5kZXJzY29yZXMgaW4gdGhlaXIgbmFtZXMuCitcYmVnaW57ZGVzY3JpcHRpb259CitcaXRlbVtDRFJPTV9TRVRfT1BUSU9OU10gU2V0IG9wdGlvbnMgc3BlY2lmaWVkIGJ5ICRhcmckLiBSZXR1cm5zIHRoZQorb3B0aW9uIGZsYWcgcmVnaXN0ZXIgYWZ0ZXIgbW9kaWZpY2F0aW9uLiBVc2UgICRhcmcgPSBccm0wJCBmb3IgcmVhZGluZwordGhlIGN1cnJlbnQgZmxhZ3MuCitcaXRlbVtDRFJPTV9DTEVBUl9PUFRJT05TXSBDbGVhciBvcHRpb25zIHNwZWNpZmllZCBieSAkYXJnJC4gUmV0dXJucworICB0aGUgb3B0aW9uIGZsYWcgcmVnaXN0ZXIgYWZ0ZXIgbW9kaWZpY2F0aW9uLgorXGl0ZW1bQ0RST01fU0VMRUNUX1NQRUVEXSBTZWxlY3QgaGVhZC1yYXRlIHNwZWVkIG9mIGRpc2Mgc3BlY2lmaWVkIGFzCisgIGJ5ICRhcmckIGluIHVuaXRzIG9mIHN0YW5kYXJkIGNkcm9tIHNwZWVkICgxNzZcLGtCL3NlYyByYXcgZGF0YSBvcgorICAxNTBcLGtCL3NlYyBmaWxlIHN5c3RlbSBkYXRhKS4gVGhlIHZhbHVlIDAgbWVhbnMgYGF1dG8tc2VsZWN0JywgXGllLAorICBwbGF5IGF1ZGlvIGRpc2NzIGF0IHJlYWwgdGltZSBhbmQgZGF0YSBkaXNjcyBhdCBtYXhpbXVtIHNwZWVkLiBUaGUgdmFsdWUKKyAgJGFyZyQgaXMgY2hlY2tlZCBhZ2FpbnN0IHRoZSBtYXhpbXVtIGhlYWQgcmF0ZSBvZiB0aGUgZHJpdmUgZm91bmQgaW4gdGhlCisgICRjZHJvbV9kb3BzJC4KK1xpdGVtW0NEUk9NX1NFTEVDVF9ESVNDXSBTZWxlY3QgZGlzYyBudW1iZXJlZCAkYXJnJCBmcm9tIGEganVrZS1ib3guCisgIEZpcnN0IGRpc2MgaXMgbnVtYmVyZWQgMC4gVGhlIG51bWJlciAkYXJnJCBpcyBjaGVja2VkIGFnYWluc3QgdGhlCisgIG1heGltdW0gbnVtYmVyIG9mIGRpc2NzIGluIHRoZSBqdWtlLWJveCBmb3VuZCBpbiB0aGUgJGNkcm9tX2RvcHMkLgorXGl0ZW1bQ0RST01fTUVESUFfQ0hBTkdFRF0gUmV0dXJucyAxIGlmIGEgZGlzYyBoYXMgYmVlbiBjaGFuZ2VkIHNpbmNlCisgIHRoZSBsYXN0IGNhbGwuIE5vdGUgdGhhdCBjYWxscyB0byAkY2Ryb21fbWVkaWFfY2hhbmdlZCQgYnkgdGhlIFZGUworICBhcmUgdHJlYXRlZCBieSBhbiBpbmRlcGVuZGVudCBxdWV1ZSwgc28gYm90aCBtZWNoYW5pc21zIHdpbGwgZGV0ZWN0CisgIGEgbWVkaWEgY2hhbmdlIG9uY2UuIEZvciBqdWtlLWJveGVzLCBhbiBleHRyYSBhcmd1bWVudCAkYXJnJAorICBzcGVjaWZpZXMgdGhlIHNsb3QgZm9yIHdoaWNoIHRoZSBpbmZvcm1hdGlvbiBpcyBnaXZlbi4gVGhlIHNwZWNpYWwKKyAgdmFsdWUgJENEU0xfQ1VSUkVOVCQgcmVxdWVzdHMgdGhhdCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudGx5CisgIHNlbGVjdGVkIHNsb3QgYmUgcmV0dXJuZWQuCitcaXRlbVtDRFJPTV9EUklWRV9TVEFUVVNdIFJldHVybnMgdGhlIHN0YXR1cyBvZiB0aGUgZHJpdmUgYnkgYSBjYWxsIHRvCisgICRkcml2ZV9zdGF0dXMoKSQuIFJldHVybiB2YWx1ZXMgYXJlIGRlZmluZWQgaW4gc2VjdGlvbn5ccmVme2RyaXZlCisgICBzdGF0dXN9LiBOb3RlIHRoYXQgdGhpcyBjYWxsIGRvZXNuJ3QgcmV0dXJuIGluZm9ybWF0aW9uIG9uIHRoZQorICBjdXJyZW50IHBsYXlpbmcgYWN0aXZpdHkgb2YgdGhlIGRyaXZlOyB0aGlzIGNhbiBiZSBwb2xsZWQgdGhyb3VnaCBhbgorICAkaW9jdGwkIGNhbGwgdG8gJENEUk9NU1VCQ0hOTCQuIEZvciBqdWtlLWJveGVzLCBhbiBleHRyYSBhcmd1bWVudAorICAkYXJnJCBzcGVjaWZpZXMgdGhlIHNsb3QgZm9yIHdoaWNoIChwb3NzaWJseSBsaW1pdGVkKSBpbmZvcm1hdGlvbiBpcworICBnaXZlbi4gVGhlIHNwZWNpYWwgdmFsdWUgJENEU0xfQ1VSUkVOVCQgcmVxdWVzdHMgdGhhdCBpbmZvcm1hdGlvbgorICBhYm91dCB0aGUgY3VycmVudGx5IHNlbGVjdGVkIHNsb3QgYmUgcmV0dXJuZWQuCitcaXRlbVtDRFJPTV9ESVNDX1NUQVRVU10gUmV0dXJucyB0aGUgdHlwZSBvZiB0aGUgZGlzYyBjdXJyZW50bHkgaW4gdGhlCisgIGRyaXZlLiAgSXQgc2hvdWxkIGJlIHZpZXdlZCBhcyBhIGNvbXBsZW1lbnQgdG8gJENEUk9NX0RSSVZFX1NUQVRVUyQuCisgIFRoaXMgJGlvY3RsJCBjYW4gcHJvdmlkZSBcZW1waCB7c29tZX0gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQKKyAgZGlzYyB0aGF0IGlzIGluc2VydGVkIGluIHRoZSBkcml2ZS4gIFRoaXMgZnVuY3Rpb25hbGl0eSB1c2VkIHRvIGJlCisgIGltcGxlbWVudGVkIGluIHRoZSBsb3cgbGV2ZWwgZHJpdmVycywgYnV0IGlzIG5vdyBjYXJyaWVkIG91dAorICBlbnRpcmVseSBpbiBcVUNELgorICAKKyAgVGhlIGhpc3Rvcnkgb2YgZGV2ZWxvcG1lbnQgb2YgdGhlIENEJ3MgdXNlIGFzIGEgY2FycmllciBtZWRpdW0gZm9yCisgIHZhcmlvdXMgZGlnaXRhbCBpbmZvcm1hdGlvbiBoYXMgbGVhZCB0byBtYW55IGRpZmZlcmVudCBkaXNjIHR5cGVzLgorICBUaGlzICRpb2N0bCQgaXMgdXNlZnVsIG9ubHkgaW4gdGhlIGNhc2UgdGhhdCBDRHMgaGF2ZSBcZW1waCB7b25seQorICAgIG9uZX0gdHlwZSBvZiBkYXRhIG9uIHRoZW0uICBXaGlsZSB0aGlzIGlzIG9mdGVuIHRoZSBjYXNlLCBpdCBpcworICBhbHNvIHZlcnkgY29tbW9uIGZvciBDRHMgdG8gaGF2ZSBzb21lIHRyYWNrcyB3aXRoIGRhdGEsIGFuZCBzb21lCisgIHRyYWNrcyB3aXRoIGF1ZGlvLiAgQmVjYXVzZSB0aGlzIGlzIGFuIGV4aXN0aW5nIGludGVyZmFjZSwgcmF0aGVyCisgIHRoYW4gZml4aW5nIHRoaXMgaW50ZXJmYWNlIGJ5IGNoYW5naW5nIHRoZSBhc3N1bXB0aW9ucyBpdCB3YXMgbWFkZQorICB1bmRlciwgdGhlcmVieSBicmVha2luZyBhbGwgdXNlciBhcHBsaWNhdGlvbnMgdGhhdCB1c2UgdGhpcworICBmdW5jdGlvbiwgdGhlIFxVQ0RcIGltcGxlbWVudHMgdGhpcyAkaW9jdGwkIGFzIGZvbGxvd3M6IElmIHRoZSBDRCBpbgorICBxdWVzdGlvbiBoYXMgYXVkaW8gdHJhY2tzIG9uIGl0LCBhbmQgaXQgaGFzIGFic29sdXRlbHkgbm8gQ0QtSSwgWEEsCisgIG9yIGRhdGEgdHJhY2tzIG9uIGl0LCBpdCB3aWxsIGJlIHJlcG9ydGVkIGFzICRDRFNfQVVESU8kLiAgSWYgaXQgaGFzCisgIGJvdGggYXVkaW8gYW5kIGRhdGEgdHJhY2tzLCBpdCB3aWxsIHJldHVybiAkQ0RTX01JWEVEJC4gIElmIHRoZXJlCisgIGFyZSBubyBhdWRpbyB0cmFja3Mgb24gdGhlIGRpc2MsIGFuZCBpZiB0aGUgQ0QgaW4gcXVlc3Rpb24gaGFzIGFueQorICBDRC1JIHRyYWNrcyBvbiBpdCwgaXQgd2lsbCBiZSByZXBvcnRlZCBhcyAkQ0RTX1hBXzJfMiQuICBGYWlsaW5nCisgIHRoYXQsIGlmIHRoZSBDRCBpbiBxdWVzdGlvbiBoYXMgYW55IFhBIHRyYWNrcyBvbiBpdCwgaXQgd2lsbCBiZQorICByZXBvcnRlZCBhcyAkQ0RTX1hBXzJfMSQuICBGaW5hbGx5LCBpZiB0aGUgQ0QgaW4gcXVlc3Rpb24gaGFzIGFueQorICBkYXRhIHRyYWNrcyBvbiBpdCwgaXQgd2lsbCBiZSByZXBvcnRlZCBhcyBhIGRhdGEgQ0QgKCRDRFNfREFUQV8xJCkuCisKKyAgVGhpcyAkaW9jdGwkIGNhbiByZXR1cm46CisgICQkCisgIFxoYWxpZ257JCMkXCBcaGZpbCYkLyokIFxybSMgJCovJFxoZmlsXGNyCisgICAgQ0RTX05PX0lORk8mIG5vIGluZm9ybWF0aW9uIGF2YWlsYWJsZVxjcgorICAgIENEU19OT19ESVNDJiBubyBkaXNjIGlzIGluc2VydGVkLCBvciB0cmF5IGlzIG9wZW5lZFxjcgorICAgIENEU19BVURJTyYgQXVkaW8gZGlzYyAoMjM1MiBhdWRpbyBieXRlcy9mcmFtZSlcY3IKKyAgICBDRFNfREFUQV8xJiBkYXRhIGRpc2MsIG1vZGUgMSAoMjA0OCB1c2VyIGJ5dGVzL2ZyYW1lKVxjcgorICAgIENEU19YQV8yXzEmIG1peGVkIGRhdGEgKFhBKSwgbW9kZSAyLCBmb3JtIDEgKDIwNDggdXNlciBieXRlcylcY3IKKyAgICBDRFNfWEFfMl8yJiBtaXhlZCBkYXRhIChYQSksIG1vZGUgMiwgZm9ybSAxICgyMzI0ICB1c2VyIGJ5dGVzKVxjcgorICAgIENEU19NSVhFRCYgbWl4ZWQgYXVkaW8vZGF0YSBkaXNjXGNyCisgICAgfQorICAkJAorICBGb3Igc29tZSBpbmZvcm1hdGlvbiBjb25jZXJuaW5nIGZyYW1lIGxheW91dCBvZiB0aGUgdmFyaW91cyBkaXNjCisgIHR5cGVzLCBzZWUgYSByZWNlbnQgdmVyc2lvbiBvZiBcY2Ryb21oLgorCitcaXRlbVtDRFJPTV9DSEFOR0VSX05TTE9UU10gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHNsb3RzIGluIGEKKyAganVrZS1ib3guIAorXGl0ZW1bQ0RST01SRVNFVF0gUmVzZXQgdGhlIGRyaXZlLiAKK1xpdGVtW0NEUk9NX0dFVF9DQVBBQklMSVRZXSBSZXR1cm5zIHRoZSAkY2FwYWJpbGl0eSQgZmxhZ3MgZm9yIHRoZQorICBkcml2ZS4gUmVmZXIgdG8gc2VjdGlvbiBccmVme2NhcGFiaWxpdHl9IGZvciBtb3JlIGluZm9ybWF0aW9uIG9uCisgIHRoZXNlIGZsYWdzLgorXGl0ZW1bQ0RST01fTE9DS0RPT1JdIExvY2tzIHRoZSBkb29yIG9mIHRoZSBkcml2ZS4gJGFyZyA9PSBccm0wJAorICB1bmxvY2tzIHRoZSBkb29yLCBhbnkgb3RoZXIgdmFsdWUgbG9ja3MgaXQuCitcaXRlbVtDRFJPTV9ERUJVR10gVHVybnMgb24gZGVidWdnaW5nIGluZm8uIE9ubHkgcm9vdCBpcyBhbGxvd2VkCisgIHRvIGRvIHRoaXMuIFNhbWUgc2VtYW50aWNzIGFzIENEUk9NX0xPQ0tET09SLgorXGVuZHtkZXNjcmlwdGlvbn0KKworXHN1YnN1YnNlY3Rpb257RGV2aWNlIGRlcGVuZGVudCAkaW9jdGwkc30KKworRmluYWxseSwgYWxsIG90aGVyICRpb2N0bCRzIGFyZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uICRkZXZfaW9jdGwoKSQsCitpZiBpbXBsZW1lbnRlZC4gTm8gbWVtb3J5IGFsbG9jYXRpb24gb3IgdmVyaWZpY2F0aW9uIGlzIGNhcnJpZWQgb3V0LiAKKworXG5ld3NlY3Rpb257SG93IHRvIHVwZGF0ZSB5b3VyIGRyaXZlcn0KKworXGJlZ2lue2VudW1lcmF0ZX0KK1xpdGVtIE1ha2UgYSBiYWNrdXAgb2YgeW91ciBjdXJyZW50IGRyaXZlci4gCitcaXRlbSBHZXQgaG9sZCBvZiB0aGUgZmlsZXMgXGNkcm9tY1wgYW5kIFxjZHJvbWgsIHRoZXkgc2hvdWxkIGJlIGluCisgIHRoZSBkaXJlY3RvcnkgdHJlZSB0aGF0IGNhbWUgd2l0aCB0aGlzIGRvY3VtZW50YXRpb24uCitcaXRlbSBNYWtlIHN1cmUgeW91IGluY2x1ZGUgXGNkcm9taC4KK1xpdGVtIENoYW5nZSB0aGUgM3JkIGFyZ3VtZW50IG9mICRyZWdpc3Rlcl9ibGtkZXYkIGZyb20KKyRcJjx5b3VyLWRyaXZlPl9mb3BzJCB0byAkXCZjZHJvbV9mb3BzJC4gCitcaXRlbSBKdXN0IGFmdGVyIHRoYXQgbGluZSwgYWRkIHRoZSBmb2xsb3dpbmcgdG8gcmVnaXN0ZXIgd2l0aCB0aGUgXFVDRDoKKyAgJCRyZWdpc3Rlcl9jZHJvbShcJjx5b3VyLWRyaXZlPl9pbmZvKTskJAorICBTaW1pbGFybHksIGFkZCBhIGNhbGwgdG8gJHVucmVnaXN0ZXJfY2Ryb20oKSQgYXQgdGhlIGFwcHJvcHJpYXRlIHBsYWNlLgorXGl0ZW0gQ29weSBhbiBleGFtcGxlIG9mIHRoZSBkZXZpY2Utb3BlcmF0aW9ucyAkc3RydWN0JCB0byB5b3VyCisgIHNvdXJjZSwgXGVnLCBmcm9tIHtcdHQge2NtMjA2LmN9fSAkY20yMDZfZG9wcyQsIGFuZCBjaGFuZ2UgYWxsCisgIGVudHJpZXMgdG8gbmFtZXMgY29ycmVzcG9uZGluZyB0byB5b3VyIGRyaXZlciwgb3IgbmFtZXMgeW91IGp1c3QKKyAgaGFwcGVuIHRvIGxpa2UuIElmIHlvdXIgZHJpdmVyIGRvZXNuJ3Qgc3VwcG9ydCBhIGNlcnRhaW4gZnVuY3Rpb24sCisgIG1ha2UgdGhlIGVudHJ5ICROVUxMJC4gQXQgdGhlIGVudHJ5ICRjYXBhYmlsaXR5JCB5b3Ugc2hvdWxkIGxpc3QgYWxsCisgIGNhcGFiaWxpdGllcyB5b3VyIGRyaXZlciBjdXJyZW50bHkgc3VwcG9ydHMuIElmIHlvdXIgZHJpdmVyCisgIGhhcyBhIGNhcGFiaWxpdHkgdGhhdCBpcyBub3QgbGlzdGVkLCBwbGVhc2Ugc2VuZCBtZSBhIG1lc3NhZ2UuCitcaXRlbSBDb3B5IHRoZSAkY2Ryb21fZGV2aWNlX2luZm8kIGRlY2xhcmF0aW9uIGZyb20gdGhlIHNhbWUgZXhhbXBsZQorICBkcml2ZXIsIGFuZCBtb2RpZnkgdGhlIGVudHJpZXMgYWNjb3JkaW5nIHRvIHlvdXIgbmVlZHMuIElmIHlvdXIKKyAgZHJpdmVyIGR5bmFtaWNhbGx5IGRldGVybWluZXMgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgaGFyZHdhcmUsIHRoaXMKKyAgc3RydWN0dXJlIHNob3VsZCBhbHNvIGJlIGRlY2xhcmVkIGR5bmFtaWNhbGx5LiAKK1xpdGVtIEltcGxlbWVudCBhbGwgZnVuY3Rpb25zIGluIHlvdXIgJDxkZXZpY2U+X2RvcHMkIHN0cnVjdHVyZSwKKyAgYWNjb3JkaW5nIHRvIHByb3RvdHlwZXMgbGlzdGVkIGluIFxjZHJvbWgsIGFuZCBzcGVjaWZpY2F0aW9ucyBnaXZlbgorICBpbiBzZWN0aW9uflxyZWZ7Y2Ryb20uY30uIE1vc3QgbGlrZWx5IHlvdSBoYXZlIGFscmVhZHkgaW1wbGVtZW50ZWQKKyAgdGhlIGNvZGUgaW4gYSBsYXJnZSBwYXJ0LCBhbmQgeW91IHdpbGwgYWxtb3N0IGNlcnRhaW5seSBuZWVkIHRvIGFkYXB0IHRoZQorICBwcm90b3R5cGUgYW5kIHJldHVybiB2YWx1ZXMuCitcaXRlbSBSZW5hbWUgeW91ciAkPGRldmljZT5faW9jdGwoKSQgZnVuY3Rpb24gdG8gJGF1ZGlvX2lvY3RsJCBhbmQKKyAgY2hhbmdlIHRoZSBwcm90b3R5cGUgYSBsaXR0bGUuIFJlbW92ZSBlbnRyaWVzIGxpc3RlZCBpbiB0aGUgZmlyc3QKKyAgcGFydCBpbiBzZWN0aW9uflxyZWZ7Y2Ryb20taW9jdGx9LCBpZiB5b3VyIGNvZGUgd2FzIE9LLCB0aGVzZSBhcmUKKyAganVzdCBjYWxscyB0byB0aGUgcm91dGluZXMgeW91IGFkYXB0ZWQgaW4gdGhlIHByZXZpb3VzIHN0ZXAuCitcaXRlbSBZb3UgbWF5IHJlbW92ZSBhbGwgcmVtYWluaW5nIG1lbW9yeSBjaGVja2luZyBjb2RlIGluIHRoZQorICAkYXVkaW9faW9jdGwoKSQgZnVuY3Rpb24gdGhhdCBkZWFscyB3aXRoIGF1ZGlvIGNvbW1hbmRzICh0aGVzZSBhcmUKKyAgbGlzdGVkIGluIHRoZSBzZWNvbmQgcGFydCBvZiBzZWN0aW9uflxyZWZ7Y2Ryb20taW9jdGx9KS4gVGhlcmUgaXMgbm8KKyAgbmVlZCBmb3IgbWVtb3J5IGFsbG9jYXRpb24gZWl0aGVyLCBzbyBtb3N0ICRjYXNlJHMgaW4gdGhlICRzd2l0Y2gkCisgIHN0YXRlbWVudCBsb29rIHNpbWlsYXIgdG86CisgICQkCisgIGNhc2VcIENEUk9NUkVBRFRPQ0VOVFJZXGNvbG9uIGdldF90b2NfZW50cnlcYmlnbCgoc3RydWN0XCAKKyAgY2Ryb21fdG9jZW50cnkgKnt9KVwgYXJnXGJpZ3IpOworICAkJAorXGl0ZW0gQWxsIHJlbWFpbmluZyAkaW9jdGwkIGNhc2VzIG11c3QgYmUgbW92ZWQgdG8gYSBzZXBhcmF0ZQorICBmdW5jdGlvbiwgJDxkZXZpY2U+X2lvY3RsJCwgdGhlIGRldmljZS1kZXBlbmRlbnQgJGlvY3RsJHMuIE5vdGUgdGhhdAorICBtZW1vcnkgY2hlY2tpbmcgYW5kIGFsbG9jYXRpb24gbXVzdCBiZSBrZXB0IGluIHRoaXMgY29kZSEKK1xpdGVtIENoYW5nZSB0aGUgcHJvdG90eXBlcyBvZiAkPGRldmljZT5fb3BlbigpJCBhbmQKKyAgJDxkZXZpY2U+X3JlbGVhc2UoKSQsIGFuZCByZW1vdmUgYW55IHN0cmF0ZWdpYyBjb2RlIChcaWUsIHRyYXkKKyAgbW92ZW1lbnQsIGRvb3IgbG9ja2luZywgZXRjLikuCitcaXRlbSBUcnkgdG8gcmVjb21waWxlIHRoZSBkcml2ZXJzLiBXZSBhZHZpc2UgeW91IHRvIHVzZSBtb2R1bGVzLCBib3RoCisgIGZvciB7XHR0IHtjZHJvbS5vfX0gYW5kIHlvdXIgZHJpdmVyLCBhcyBkZWJ1Z2dpbmcgaXMgbXVjaCBlYXNpZXIgdGhpcworICB3YXkuCitcZW5ke2VudW1lcmF0ZX0gCisKK1xuZXdzZWN0aW9ue1RoYW5rc30KKworVGhhbmtzIHRvIGFsbCB0aGUgcGVvcGxlIGludm9sdmVkLiAgRmlyc3QsIEVyaWsgQW5kZXJzZW4sIHdobyBoYXMKK3Rha2VuIG92ZXIgdGhlIHRvcmNoIGluIG1haW50YWluaW5nIFxjZHJvbWNcIGFuZCBpbnRlZ3JhdGluZyBtdWNoCitcY2Ryb20tcmVsYXRlZCBjb2RlIGluIHRoZSAyLjEta2VybmVsLiAgVGhhbmtzIHRvIFNjb3R0IFNueWRlciBhbmQKK0dlcmQgS25vcnIsIHdobyB3ZXJlIHRoZSBmaXJzdCB0byBpbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgZm9yIFNDU0kKK2FuZCBJREUtQ0QgZHJpdmVycyBhbmQgYWRkZWQgbWFueSBpZGVhcyBmb3IgZXh0ZW5zaW9uIG9mIHRoZSBkYXRhCitzdHJ1Y3R1cmVzIHJlbGF0aXZlIHRvIGtlcm5lbH4yLjAuICBGdXJ0aGVyIHRoYW5rcyB0byBIZWlrbyBFaXtcc3p9ZmVsZHQsCitUaG9tYXMgUXVpbm90LCBKb24gVG9tYnMsIEtlbiBQaXp6aW5pLCBFYmVyaGFyZCBNXCJvbmtlYmVyZyBhbmQgQW5kcmV3CitLcm9sbCwgdGhlIFxsaW51eFwgXGNkcm9tXCBkZXZpY2UgZHJpdmVyIGRldmVsb3BlcnMgd2hvIHdlcmUga2luZAorZW5vdWdoIHRvIGdpdmUgc3VnZ2VzdGlvbnMgYW5kIGNyaXRpY2lzbXMgZHVyaW5nIHRoZSB3cml0aW5nLiBGaW5hbGx5CitvZiBjb3Vyc2UsIEkgd2FudCB0byB0aGFuayBMaW51cyBUb3J2YWxkcyBmb3IgbWFraW5nIHRoaXMgcG9zc2libGUgaW4KK3RoZSBmaXJzdCBwbGFjZS4KKworXHZmaWxsCiskIFx2ZXJzaW9uXCAkCitcZWplY3QKK1xlbmR7ZG9jdW1lbnR9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Nkcm9tL2lkZS1jZCBiL0RvY3VtZW50YXRpb24vY2Ryb20vaWRlLWNkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0ZGM5ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Nkcm9tL2lkZS1jZApAQCAtMCwwICsxLDUzOCBAQAorSURFLUNEIGRyaXZlciBkb2N1bWVudGF0aW9uCitPcmlnaW5hbGx5IGJ5IHNjb3R0IHNueWRlciAgPHNueWRlckBmbmFsZDAuZm5hbC5nb3Y+ICgxOSBNYXkgMTk5NikKK0NhcnJ5aW5nIG9uIHRoZSB0b3JjaCBpczogRXJpayBBbmRlcnNlbiA8YW5kZXJzZWVAZGViaWFuLm9yZz4KK05ldyBtYWludGFpbmVycyAoMTkgT2N0IDE5OTgpOiBKZW5zIEF4Ym9lIDxheGJvZUBpbWFnZS5kaz4KKworMS4gSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0tLS0KKworVGhlIGlkZS1jZCBkcml2ZXIgc2hvdWxkIHdvcmsgd2l0aCBhbGwgQVRBUEkgdmVyIDEuMiB0byBBVEFQSSAyLjYgY29tcGxpYW50IAorQ0RST00gZHJpdmVzIHdoaWNoIGF0dGFjaCB0byBhbiBJREUgaW50ZXJmYWNlLiAgTm90ZSB0aGF0IHNvbWUgQ0RST00gdmVuZG9ycworKGluY2x1ZGluZyBNaXRzdW1pLCBTb255LCBDcmVhdGl2ZSwgQXp0ZWNoLCBhbmQgR29sZHN0YXIpIGhhdmUgbWFkZQorYm90aCBBVEFQSS1jb21wbGlhbnQgZHJpdmVzIGFuZCBkcml2ZXMgd2hpY2ggdXNlIGEgcHJvcHJpZXRhcnkKK2ludGVyZmFjZS4gIElmIHlvdXIgZHJpdmUgdXNlcyBvbmUgb2YgdGhvc2UgcHJvcHJpZXRhcnkgaW50ZXJmYWNlcywKK3RoaXMgZHJpdmVyIHdpbGwgbm90IHdvcmsgd2l0aCBpdCAoYnV0IG9uZSBvZiB0aGUgb3RoZXIgQ0RST00gZHJpdmVycworcHJvYmFibHkgd2lsbCkuICBUaGlzIGRyaXZlciB3aWxsIG5vdCB3b3JrIHdpdGggYEFUQVBJJyBkcml2ZXMgd2hpY2gKK2F0dGFjaCB0byB0aGUgcGFyYWxsZWwgcG9ydC4gIEluIGFkZGl0aW9uLCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgZHJpdmUKKyhDeUNEUk9NIENSNTIwaWUpIHdoaWNoIGF0dGFjaGVzIHRvIHRoZSBJREUgcG9ydCBidXQgaXMgbm90IEFUQVBJOwordGhpcyBkcml2ZXIgd2lsbCBub3Qgd29yayB3aXRoIGRyaXZlcyBsaWtlIHRoYXQgZWl0aGVyIChidXQgc2VlIHRoZQorYXp0Y2QgZHJpdmVyKS4KKworVGhpcyBkcml2ZXIgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBmZWF0dXJlczoKKworIC0gUmVhZGluZyBmcm9tIGRhdGEgdHJhY2tzLCBhbmQgbW91bnRpbmcgSVNPIDk2NjAgZmlsZXN5c3RlbXMuCisKKyAtIFBsYXlpbmcgYXVkaW8gdHJhY2tzLiAgTW9zdCBvZiB0aGUgQ0RST00gcGxheWVyIHByb2dyYW1zIGZsb2F0aW5nCisgICBhcm91bmQgc2hvdWxkIHdvcms7IEkgdXN1YWxseSB1c2UgV29ya21hbi4KKworIC0gTXVsdGlzZXNzaW9uIHN1cHBvcnQuCisKKyAtIE9uIGRyaXZlcyB3aGljaCBzdXBwb3J0IGl0LCByZWFkaW5nIGRpZ2l0YWwgYXVkaW8gZGF0YSBkaXJlY3RseQorICAgZnJvbSBhdWRpbyB0cmFja3MuICBUaGUgcHJvZ3JhbSBjZGRhMndhdiBjYW4gYmUgdXNlZCBmb3IgdGhpcy4KKyAgIE5vdGUsIGhvd2V2ZXIsIHRoYXQgb25seSBzb21lIGRyaXZlcyBhY3R1YWxseSBzdXBwb3J0IHRoaXMuCisKKyAtIFRoZXJlIGlzIG5vdyBzdXBwb3J0IGZvciBDRFJPTSBjaGFuZ2VycyB3aGljaCBjb21wbHkgd2l0aCB0aGUgCisgICBBVEFQSSAyLjYgZHJhZnQgc3RhbmRhcmQgKHN1Y2ggYXMgdGhlIE5FQyBDRFItMjUxKS4gIFRoaXMgYWRkaXRpb25hbAorICAgZnVuY3Rpb25hbGl0eSBpbmNsdWRlcyBhIGZ1bmN0aW9uIGNhbGwgdG8gcXVlcnkgd2hpY2ggc2xvdCBpcyB0aGUKKyAgIGN1cnJlbnRseSBzZWxlY3RlZCBzbG90LCBhIGZ1bmN0aW9uIGNhbGwgdG8gcXVlcnkgd2hpY2ggc2xvdHMgY29udGFpbgorICAgQ0RzLCBldGMuIEEgc2FtcGxlIHByb2dyYW0gd2hpY2ggZGVtb25zdHJhdGVzIHRoaXMgZnVuY3Rpb25hbGl0eSBpcworICAgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGlzIGZpbGUuICBUaGUgU2FueW8gMy1kaXNjIGNoYW5nZXIKKyAgICh3aGljaCBkb2VzIG5vdCBjb25mb3JtIHRvIHRoZSBzdGFuZGFyZCkgaXMgYWxzbyBub3cgc3VwcG9ydGVkLgorICAgUGxlYXNlIG5vdGUgdGhlIGRyaXZlciByZWZlcnMgdG8gdGhlIGZpcnN0IENEIGFzIHNsb3QgIyAwLgorCisKKzIuIEluc3RhbGxhdGlvbgorLS0tLS0tLS0tLS0tLS0tCisKKzAuIFRoZSBpZGUtY2QgcmVsaWVzIG9uIHRoZSBpZGUgZGlzayBkcml2ZXIuICBTZWUKKyAgIERvY3VtZW50YXRpb24vaWRlL2lkZS50eHQgZm9yIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24gb24gdGhlIGlkZQorICAgZHJpdmVyLgorCisxLiBNYWtlIHN1cmUgdGhhdCB0aGUgaWRlIGFuZCBpZGUtY2QgZHJpdmVycyBhcmUgY29tcGlsZWQgaW50byB0aGUKKyAgIGtlcm5lbCB5b3UncmUgdXNpbmcuICBXaGVuIGNvbmZpZ3VyaW5nIHRoZSBrZXJuZWwsIGluIHRoZSBzZWN0aW9uIAorICAgZW50aXRsZWQgIkZsb3BweSwgSURFLCBhbmQgb3RoZXIgYmxvY2sgZGV2aWNlcyIsIHNheSBlaXRoZXIgYFknIAorICAgKHdoaWNoIHdpbGwgY29tcGlsZSB0aGUgc3VwcG9ydCBkaXJlY3RseSBpbnRvIHRoZSBrZXJuZWwpIG9yIGBNJworICAgKHRvIGNvbXBpbGUgc3VwcG9ydCBhcyBhIG1vZHVsZSB3aGljaCBjYW4gYmUgbG9hZGVkIGFuZCB1bmxvYWRlZCkKKyAgIHRvIHRoZSBvcHRpb25zOiAKKworICAgICAgRW5oYW5jZWQgSURFL01GTS9STEwgZGlzay9jZHJvbS90YXBlL2Zsb3BweSBzdXBwb3J0CisgICAgICBJbmNsdWRlIElERS9BVEFQSSBDRFJPTSBzdXBwb3J0CisKKyAgIGFuZCBgbm8nIHRvCisKKyAgICAgIFVzZSBvbGQgZGlzay1vbmx5IGRyaXZlciBvbiBwcmltYXJ5IGludGVyZmFjZQorCisgICBEZXBlbmRpbmcgb24gd2hhdCB0eXBlIG9mIElERSBpbnRlcmZhY2UgeW91IGhhdmUsIHlvdSBtYXkgbmVlZCB0bworICAgc3BlY2lmeSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gIFNlZQorICAgRG9jdW1lbnRhdGlvbi9pZGUvaWRlLnR4dC4KKworMi4gWW91IHNob3VsZCBhbHNvIGVuc3VyZSB0aGF0IHRoZSBpc285NjYwIGZpbGVzeXN0ZW0gaXMgZWl0aGVyCisgICBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgb3IgYXZhaWxhYmxlIGFzIGEgbG9hZGFibGUgbW9kdWxlLiAgWW91CisgICBjYW4gc2VlIGlmIGEgZmlsZXN5c3RlbSBpcyBrbm93biB0byB0aGUga2VybmVsIGJ5IGNhdHRpbmcKKyAgIC9wcm9jL2ZpbGVzeXN0ZW1zLgorCiszLiBUaGUgQ0RST00gZHJpdmUgc2hvdWxkIGJlIGNvbm5lY3RlZCB0byB0aGUgaG9zdCBvbiBhbiBJREUKKyAgIGludGVyZmFjZS4gIEVhY2ggaW50ZXJmYWNlIG9uIGEgc3lzdGVtIGlzIGRlZmluZWQgYnkgYW4gSS9PIHBvcnQKKyAgIGFkZHJlc3MgYW5kIGFuIElSUSBudW1iZXIsIHRoZSBzdGFuZGFyZCBhc3NpZ25tZW50cyBiZWluZworICAgMHgxZjAgYW5kIDE0IGZvciB0aGUgcHJpbWFyeSBpbnRlcmZhY2UgYW5kIDB4MTcwIGFuZCAxNSBmb3IgdGhlCisgICBzZWNvbmRhcnkgaW50ZXJmYWNlLiAgRWFjaCBpbnRlcmZhY2UgY2FuIGNvbnRyb2wgdXAgdG8gdHdvIGRldmljZXMsCisgICB3aGVyZSBlYWNoIGRldmljZSBjYW4gYmUgYSBoYXJkIGRyaXZlLCBhIENEUk9NIGRyaXZlLCBhIGZsb3BweSBkcml2ZSwgCisgICBvciBhIHRhcGUgZHJpdmUuICBUaGUgdHdvIGRldmljZXMgb24gYW4gaW50ZXJmYWNlIGFyZSBjYWxsZWQgYG1hc3RlcicKKyAgIGFuZCBgc2xhdmUnOyB0aGlzIGlzIHVzdWFsbHkgc2VsZWN0YWJsZSB2aWEgYSBqdW1wZXIgb24gdGhlIGRyaXZlLgorCisgICBMaW51eCBuYW1lcyB0aGVzZSBkZXZpY2VzIGFzIGZvbGxvd3MuICBUaGUgbWFzdGVyIGFuZCBzbGF2ZSBkZXZpY2VzCisgICBvbiB0aGUgcHJpbWFyeSBJREUgaW50ZXJmYWNlIGFyZSBjYWxsZWQgYGhkYScgYW5kIGBoZGInLAorICAgcmVzcGVjdGl2ZWx5LiAgVGhlIGRyaXZlcyBvbiB0aGUgc2Vjb25kYXJ5IGludGVyZmFjZSBhcmUgY2FsbGVkCisgICBgaGRjJyBhbmQgYGhkZCcuICAoSW50ZXJmYWNlcyBhdCBvdGhlciBsb2NhdGlvbnMgZ2V0IG90aGVyIGxldHRlcnMKKyAgIGluIHRoZSB0aGlyZCBwb3NpdGlvbjsgc2VlIERvY3VtZW50YXRpb24vaWRlL2lkZS50eHQuKQorCisgICBJZiB5b3Ugd2FudCB5b3VyIENEUk9NIGRyaXZlIHRvIGJlIGZvdW5kIGF1dG9tYXRpY2FsbHkgYnkgdGhlCisgICBkcml2ZXIsIHlvdSBzaG91bGQgbWFrZSBzdXJlIHlvdXIgSURFIGludGVyZmFjZSB1c2VzIGVpdGhlciB0aGUKKyAgIHByaW1hcnkgb3Igc2Vjb25kYXJ5IGFkZHJlc3NlcyBtZW50aW9uZWQgYWJvdmUuICBJbiBhZGRpdGlvbiwgaWYKKyAgIHRoZSBDRFJPTSBkcml2ZSBpcyB0aGUgb25seSBkZXZpY2Ugb24gdGhlIElERSBpbnRlcmZhY2UsIGl0IHNob3VsZAorICAgYmUganVtcGVyZWQgYXMgYG1hc3RlcicuICAoSWYgZm9yIHNvbWUgcmVhc29uIHlvdSBjYW5ub3QgY29uZmlndXJlCisgICB5b3VyIHN5c3RlbSBpbiB0aGlzIG1hbm5lciwgeW91IGNhbiBwcm9iYWJseSBzdGlsbCB1c2UgdGhlIGRyaXZlci4KKyAgIFlvdSBtYXkgaGF2ZSB0byBwYXNzIGV4dHJhIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gdG8gdGhlIGtlcm5lbAorICAgd2hlbiB5b3UgYm9vdCwgaG93ZXZlci4gIFNlZSBEb2N1bWVudGF0aW9uL2lkZS9pZGUudHh0IGZvciBtb3JlCisgICBpbmZvcm1hdGlvbi4pCisKKzQuIEJvb3QgdGhlIHN5c3RlbS4gIElmIHRoZSBkcml2ZSBpcyByZWNvZ25pemVkLCB5b3Ugc2hvdWxkIHNlZSBhCisgICBtZXNzYWdlIHdoaWNoIGxvb2tzIGxpa2UKKworICAgICBoZGI6IE5FQyBDRC1ST00gRFJJVkU6MjYwLCBBVEFQSSBDRFJPTSBkcml2ZQorCisgICBJZiB5b3UgZG8gbm90IHNlZSB0aGlzLCBzZWUgc2VjdGlvbiA1IGJlbG93LgorCis1LiBZb3UgbWF5IHdhbnQgdG8gY3JlYXRlIGEgc3ltYm9saWMgbGluayAvZGV2L2Nkcm9tIHBvaW50aW5nIHRvIHRoZQorICAgYWN0dWFsIGRldmljZS4gIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb21tYW5kCisKKyAgICAgbG4gLXMgIC9kZXYvaGRYICAvZGV2L2Nkcm9tCisKKyAgIHdoZXJlIFggc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IHRoZSBsZXR0ZXIgaW5kaWNhdGluZyB3aGVyZSB5b3VyCisgICBkcml2ZSBpcyBpbnN0YWxsZWQuCisKKzYuIFlvdSBzaG91bGQgYmUgYWJsZSB0byBzZWUgYW55IGVycm9yIG1lc3NhZ2VzIGZyb20gdGhlIGRyaXZlciB3aXRoCisgICB0aGUgYGRtZXNnJyBjb21tYW5kLgorCisKKzMuIEJhc2ljIHVzYWdlCistLS0tLS0tLS0tLS0tLQorCitBbiBJU08gOTY2MCBDRFJPTSBjYW4gYmUgbW91bnRlZCBieSBwdXR0aW5nIHRoZSBkaXNjIGluIHRoZSBkcml2ZSBhbmQgCit0eXBpbmcgKGFzIHJvb3QpCisKKyAgbW91bnQgLXQgaXNvOTY2MCAvZGV2L2Nkcm9tIC9tbnQvY2Ryb20KKword2hlcmUgaXQgaXMgYXNzdW1lZCB0aGF0IC9kZXYvY2Ryb20gaXMgYSBsaW5rIHBvaW50aW5nIHRvIHRoZSBhY3R1YWwKK2RldmljZSAoYXMgZGVzY3JpYmVkIGluIHN0ZXAgNSBvZiB0aGUgbGFzdCBzZWN0aW9uKSBhbmQgL21udC9jZHJvbSBpcworYW4gZW1wdHkgZGlyZWN0b3J5LiAgWW91IHNob3VsZCBub3cgYmUgYWJsZSB0byBzZWUgdGhlIGNvbnRlbnRzIG9mIHRoZQorQ0RST00gdW5kZXIgdGhlIC9tbnQvY2Ryb20gZGlyZWN0b3J5LiAgSWYgeW91IHdhbnQgdG8gZWplY3QgdGhlIENEUk9NLAoreW91IG11c3QgZmlyc3QgZGlzbW91bnQgaXQgd2l0aCBhIGNvbW1hbmQgbGlrZQorCisgIHVtb3VudCAvbW50L2Nkcm9tCisKK05vdGUgdGhhdCBhdWRpbyBDRHMgY2Fubm90IGJlIG1vdW50ZWQuCisKK1NvbWUgZGlzdHJpYnV0aW9ucyBzZXQgdXAgL2V0Yy9mc3RhYiB0byBhbHdheXMgdHJ5IHRvIG1vdW50IGEgQ0RST00KK2ZpbGVzeXN0ZW0gb24gYm9vdHVwLiAgSXQgaXMgbm90IHJlcXVpcmVkIHRvIG1vdW50IHRoZSBDRFJPTSBpbiB0aGlzCittYW5uZXIsIHRob3VnaCwgYW5kIGl0IG1heSBiZSBhIG51aXNhbmNlIGlmIHlvdSBjaGFuZ2UgQ0RST01zIG9mdGVuLgorWW91IHNob3VsZCBmZWVsIGZyZWUgdG8gcmVtb3ZlIHRoZSBjZHJvbSBsaW5lIGZyb20gL2V0Yy9mc3RhYiBhbmQKK21vdW50IENEUk9NcyBtYW51YWxseSBpZiB0aGF0IHN1aXRzIHlvdSBiZXR0ZXIuCisKK011bHRpc2Vzc2lvbiBhbmQgcGhvdG9jZCBkaXNjcyBzaG91bGQgd29yayB3aXRoIG5vIHNwZWNpYWwgaGFuZGxpbmcuCitUaGUgaHBjZHRvcHBtIHBhY2thZ2UgKGZ0cC5nd2RnLmRlOi9wdWIvbGludXgvaHBjZHRvcHBtLykgbWF5IGJlCit1c2VmdWwgZm9yIHJlYWRpbmcgcGhvdG9jZHMuCisKK1RvIHBsYXkgYW4gYXVkaW8gQ0QsIHlvdSBzaG91bGQgZmlyc3QgdW5tb3VudCBhbmQgcmVtb3ZlIGFueSBkYXRhCitDRFJPTS4gIEFueSBvZiB0aGUgQ0RST00gcGxheWVyIHByb2dyYW1zIHNob3VsZCB0aGVuIHdvcmsgKHdvcmttYW4sCit3b3JrYm9uZSwgY2RwbGF5ZXIsIGV0Yy4pLgorCitPbiBhIGZldyBkcml2ZXMsIHlvdSBjYW4gcmVhZCBkaWdpdGFsIGF1ZGlvIGRpcmVjdGx5IHVzaW5nIGEgcHJvZ3JhbQorc3VjaCBhcyBjZGRhMndhdi4gIFRoZSBvbmx5IHR5cGVzIG9mIGRyaXZlIHdoaWNoIEkndmUgaGVhcmQgc3VwcG9ydAordGhpcyBhcmUgU29ueSBhbmQgVG9zaGliYSBkcml2ZXMuICBZb3Ugd2lsbCBnZXQgZXJyb3JzIGlmIHlvdSB0cnkgdG8KK3VzZSB0aGlzIGZ1bmN0aW9uIG9uIGEgZHJpdmUgd2hpY2ggZG9lcyBub3Qgc3VwcG9ydCBpdC4KKworRm9yIHN1cHBvcnRlZCBjaGFuZ2VycywgeW91IGNhbiB1c2UgdGhlIGBjZGNoYW5nZScgcHJvZ3JhbSAoYXBwZW5kZWQgdG8KK3RoZSBlbmQgb2YgdGhpcyBmaWxlKSB0byBzd2l0Y2ggYmV0d2VlbiBjaGFuZ2VyIHNsb3RzLiAgTm90ZSB0aGF0IHRoZQorZHJpdmUgc2hvdWxkIGJlIHVubW91bnRlZCBiZWZvcmUgYXR0ZW1wdGluZyB0aGlzLiAgVGhlIHByb2dyYW0gdGFrZXMKK3R3byBhcmd1bWVudHM6ICB0aGUgQ0RST00gZGV2aWNlLCBhbmQgdGhlIHNsb3QgbnVtYmVyIHRvIHdoaWNoIHlvdSB3aXNoCit0byBjaGFuZ2UuICBJZiB0aGUgc2xvdCBudW1iZXIgaXMgLTEsIHRoZSBkcml2ZSBpcyB1bmxvYWRlZC4KKworCis0LiBDb21tb24gcHJvYmxlbXMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIHNlY3Rpb24gZGlzY3Vzc2VzIHNvbWUgY29tbW9uIHByb2JsZW1zIGVuY291bnRlcmVkIHdoZW4gdHJ5aW5nIHRvCit1c2UgdGhlIGRyaXZlciwgYW5kIHNvbWUgcG9zc2libGUgc29sdXRpb25zLiAgTm90ZSB0aGF0IGlmIHlvdSBhcmUKK2V4cGVyaWVuY2luZyBwcm9ibGVtcywgeW91IHNob3VsZCBwcm9iYWJseSBhbHNvIHJldmlldworRG9jdW1lbnRhdGlvbi9pZGUvaWRlLnR4dCBmb3IgY3VycmVudCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdW5kZXJseWluZworSURFIHN1cHBvcnQgY29kZS4gIFNvbWUgb2YgdGhlc2UgaXRlbXMgYXBwbHkgb25seSB0byBlYXJsaWVyIHZlcnNpb25zCitvZiB0aGUgZHJpdmVyLCBidXQgYXJlIG1lbnRpb25lZCBoZXJlIGZvciBjb21wbGV0ZW5lc3MuCisKK0luIG1vc3QgY2FzZXMsIHlvdSBzaG91bGQgcHJvYmFibHkgY2hlY2sgd2l0aCBgZG1lc2cnIGZvciBhbnkgZXJyb3JzCitmcm9tIHRoZSBkcml2ZXIuCisKK2EuIERyaXZlIGlzIG5vdCBkZXRlY3RlZCBkdXJpbmcgYm9vdGluZy4KKworICAgLSBSZXZpZXcgdGhlIGNvbmZpZ3VyYXRpb24gaW5zdHJ1Y3Rpb25zIGFib3ZlIGFuZCBpbgorICAgICBEb2N1bWVudGF0aW9uL2lkZS9pZGUudHh0LCBhbmQgY2hlY2sgaG93IHlvdXIgaGFyZHdhcmUgaXMKKyAgICAgY29uZmlndXJlZC4KKworICAgLSBJZiB5b3VyIGRyaXZlIGlzIHRoZSBvbmx5IGRldmljZSBvbiBhbiBJREUgaW50ZXJmYWNlLCBpdCBzaG91bGQKKyAgICAgYmUganVtcGVyZWQgYXMgbWFzdGVyLCBpZiBhdCBhbGwgcG9zc2libGUuCisKKyAgIC0gSWYgeW91ciBJREUgaW50ZXJmYWNlIGlzIG5vdCBhdCB0aGUgc3RhbmRhcmQgYWRkcmVzc2VzIG9mIDB4MTcwCisgICAgIG9yIDB4MWYwLCB5b3UnbGwgbmVlZCB0byBleHBsaWNpdGx5IGluZm9ybSB0aGUgZHJpdmVyIHVzaW5nIGEKKyAgICAgbGlsbyBvcHRpb24uICBTZWUgRG9jdW1lbnRhdGlvbi9pZGUvaWRlLnR4dC4gIChUaGlzIGZlYXR1cmUgd2FzCisgICAgIGFkZGVkIGFyb3VuZCBrZXJuZWwgdmVyc2lvbiAxLjMuMzAuKQorCisgICAtIElmIHRoZSBhdXRvcHJvYmluZyBpcyBub3QgZmluZGluZyB5b3VyIGRyaXZlLCB5b3UgY2FuIHRlbGwgdGhlCisgICAgIGRyaXZlciB0byBhc3N1bWUgdGhhdCBvbmUgZXhpc3RzIGJ5IHVzaW5nIGEgbGlsbyBvcHRpb24gb2YgdGhlCisgICAgIGZvcm0gYGhkWD1jZHJvbScsIHdoZXJlIFggaXMgdGhlIGRyaXZlIGxldHRlciBjb3JyZXNwb25kaW5nIHRvCisgICAgIHdoZXJlIHlvdXIgZHJpdmUgaXMgaW5zdGFsbGVkLiAgTm90ZSB0aGF0IGlmIHlvdSBkbyB0aGlzIGFuZCB5b3UgCisgICAgIHNlZSBhIGJvb3QgbWVzc2FnZSBsaWtlCisKKyAgICAgICBoZFg6IEFUQVBJIGNkcm9tICg/KQorCisgICAgIHRoaXMgZG9lcyBfbm90XyBtZWFuIHRoYXQgdGhlIGRyaXZlciBoYXMgc3VjY2Vzc2Z1bGx5IGRldGVjdGVkCisgICAgIHRoZSBkcml2ZTsgcmF0aGVyLCBpdCBtZWFucyB0aGF0IHRoZSBkcml2ZXIgaGFzIG5vdCBkZXRlY3RlZCBhCisgICAgIGRyaXZlLCBidXQgaXMgYXNzdW1pbmcgdGhlcmUncyBvbmUgdGhlcmUgYW55d2F5IGJlY2F1c2UgeW91IHRvbGQKKyAgICAgaXQgc28uICBJZiB5b3UgYWN0dWFsbHkgdHJ5IHRvIGRvIEkvTyB0byBhIGRyaXZlIGRlZmluZWQgYXQgYQorICAgICBub25leGlzdGVudCBvciBub25yZXNwb25kaW5nIEkvTyBhZGRyZXNzLCB5b3UnbGwgcHJvYmFibHkgZ2V0CisgICAgIGVycm9ycyB3aXRoIGEgc3RhdHVzIHZhbHVlIG9mIDB4ZmYuCisKKyAgIC0gU29tZSBJREUgYWRhcHRlcnMgcmVxdWlyZSBhIG5vbnN0YW5kYXJkIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlCisgICAgIGJlZm9yZSB0aGV5J2xsIGZ1bmN0aW9uIHByb3Blcmx5LiAgKElmIHRoaXMgaXMgdGhlIGNhc2UsIHRoZXJlCisgICAgIHdpbGwgb2Z0ZW4gYmUgYSBzZXBhcmF0ZSBNUy1ET1MgZHJpdmVyIGp1c3QgZm9yIHRoZSBjb250cm9sbGVyLikKKyAgICAgSURFIGludGVyZmFjZXMgb24gc291bmQgY2FyZHMgb2Z0ZW4gZmFsbCBpbnRvIHRoaXMgY2F0ZWdvcnkuCisKKyAgICAgU3VwcG9ydCBmb3Igc29tZSBpbnRlcmZhY2VzIG5lZWRpbmcgZXh0cmEgaW5pdGlhbGl6YXRpb24gaXMKKyAgICAgcHJvdmlkZWQgaW4gbGF0ZXIgMS4zLngga2VybmVscy4gIFlvdSBtYXkgbmVlZCB0byB0dXJuIG9uCisgICAgIGFkZGl0aW9uYWwga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBnZXQgdGhlbSB0byB3b3JrOworICAgICBzZWUgRG9jdW1lbnRhdGlvbi9pZGUvaWRlLnR4dC4KKworICAgICBFdmVuIGlmIHN1cHBvcnQgaXMgbm90IGF2YWlsYWJsZSBmb3IgeW91ciBpbnRlcmZhY2UsIHlvdSBtYXkgYmUKKyAgICAgYWJsZSB0byBnZXQgaXQgdG8gd29yayB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlLiAgRmlyc3QgYm9vdAorICAgICBNUy1ET1MgYW5kIGxvYWQgdGhlIGFwcHJvcHJpYXRlIGRyaXZlcnMuICBUaGVuIHdhcm0tYm9vdCBsaW51eAorICAgICAoaS5lLiwgd2l0aG91dCBwb3dlcmluZyBvZmYpLiAgSWYgdGhpcyB3b3JrcywgaXQgY2FuIGJlIGF1dG9tYXRlZAorICAgICBieSBydW5uaW5nIGxvYWRsaW4gZnJvbSB0aGUgTVMtRE9TIGF1dG9leGVjLgorCisKK2IuIFRpbWVvdXQvSVJRIGVycm9ycy4KKworICAtIElmIHlvdSBhbHdheXMgZ2V0IHRpbWVvdXQgZXJyb3JzLCBpbnRlcnJ1cHRzIGZyb20gdGhlIGRyaXZlIGFyZQorICAgIHByb2JhYmx5IG5vdCBtYWtpbmcgaXQgdG8gdGhlIGhvc3QuCisKKyAgLSBJUlEgcHJvYmxlbXMgbWF5IGFsc28gYmUgaW5kaWNhdGVkIGJ5IHRoZSBtZXNzYWdlCisgICAgYElSUSBwcm9iZSBmYWlsZWQgKDxuPiknIHdoaWxlIGJvb3RpbmcuICBJZiA8bj4gaXMgemVybywgdGhhdAorICAgIG1lYW5zIHRoYXQgdGhlIHN5c3RlbSBkaWQgbm90IHNlZSBhbiBpbnRlcnJ1cHQgZnJvbSB0aGUgZHJpdmUgd2hlbgorICAgIGl0IHdhcyBleHBlY3Rpbmcgb25lIChvbiBhbnkgZmVhc2libGUgSVJRKS4gIElmIDxuPiBpcyBuZWdhdGl2ZSwKKyAgICB0aGF0IG1lYW5zIHRoZSBzeXN0ZW0gc2F3IGludGVycnVwdHMgb24gbXVsdGlwbGUgSVJRIGxpbmVzLCB3aGVuCisgICAgaXQgd2FzIGV4cGVjdGluZyB0byByZWNlaXZlIGp1c3Qgb25lIGZyb20gdGhlIENEUk9NIGRyaXZlLgorCisgIC0gRG91YmxlLWNoZWNrIHlvdXIgaGFyZHdhcmUgY29uZmlndXJhdGlvbiB0byBtYWtlIHN1cmUgdGhhdCB0aGUgSVJRCisgICAgbnVtYmVyIG9mIHlvdXIgSURFIGludGVyZmFjZSBtYXRjaGVzIHdoYXQgdGhlIGRyaXZlciBleHBlY3RzLgorICAgIChUaGUgdXN1YWwgYXNzaWdubWVudHMgYXJlIDE0IGZvciB0aGUgcHJpbWFyeSAoMHgxZjApIGludGVyZmFjZQorICAgIGFuZCAxNSBmb3IgdGhlIHNlY29uZGFyeSAoMHgxNzApIGludGVyZmFjZS4pICBBbHNvIGJlIHN1cmUgdGhhdAorICAgIHlvdSBkb24ndCBoYXZlIHNvbWUgb3RoZXIgaGFyZHdhcmUgd2hpY2ggbWlnaHQgYmUgY29uZmxpY3Rpbmcgd2l0aAorICAgIHRoZSBJUlEgeW91J3JlIHVzaW5nLiAgQWxzbyBjaGVjayB0aGUgQklPUyBzZXR1cCBmb3IgeW91ciBzeXN0ZW07CisgICAgc29tZSBoYXZlIHRoZSBhYmlsaXR5IHRvIGRpc2FibGUgaW5kaXZpZHVhbCBJUlEgbGV2ZWxzLCBhbmQgSSd2ZQorICAgIGhhZCBvbmUgcmVwb3J0IG9mIGEgc3lzdGVtIHdoaWNoIHdhcyBzaGlwcGVkIHdpdGggSVJRIDE1IGRpc2FibGVkCisgICAgYnkgZGVmYXVsdC4KKworICAtIE5vdGUgdGhhdCBtYW55IE1TLURPUyBDRFJPTSBkcml2ZXJzIHdpbGwgc3RpbGwgZnVuY3Rpb24gZXZlbiBpZgorICAgIHRoZXJlIGFyZSBoYXJkd2FyZSBwcm9ibGVtcyB3aXRoIHRoZSBpbnRlcnJ1cHQgc2V0dXA7IHRoZXkKKyAgICBhcHBhcmVudGx5IGRvbid0IHVzZSBpbnRlcnJ1cHRzLgorCisgIC0gSWYgeW91IG93biBhIFBpb25lZXIgRFItQTI0WCwgeW91IF93aWxsXyBnZXQgbmFzdHkgZXJyb3IgbWVzc2FnZXMgCisgICAgb24gYm9vdCBzdWNoIGFzICJpcnEgdGltZW91dDogc3RhdHVzPTB4NTAgeyBEcml2ZVJlYWR5IFNlZWtDb21wbGV0ZSB9IgorICAgIFRoZSBQaW9uZWVyIERSLUEyNFggQ0RST00gZHJpdmVzIGFyZSBmYWlybHkgcG9wdWxhciB0aGVzZSBkYXlzLgorICAgIFVuZm9ydHVuYXRlbHksIHRoZXNlIGRyaXZlcyBzZWVtIHRvIGJlY29tZSB2ZXJ5IGNvbmZ1c2VkIHdoZW4gd2UgcGVyZm9ybQorICAgIHRoZSBzdGFuZGFyZCBMaW51eCBBVEEgZGlzayBkcml2ZSBwcm9iZS4gSWYgeW91IG93biBvbmUgb2YgdGhlc2UgZHJpdmVzLAorICAgIHlvdSBjYW4gYnlwYXNzIHRoZSBBVEEgcHJvYmluZyB3aGljaCBjb25mdXNlcyB0aGVzZSBDRFJPTSBkcml2ZXMsIGJ5IAorICAgIGFkZGluZyBgYXBwZW5kPSJoZFg9bm9wcm9iZSBoZFg9Y2Ryb20iJyB0byB5b3VyIGxpbG8uY29uZiBmaWxlIGFuZCBydW5uaW5nIAorICAgIGxpbG8gKGFnYWluIHdoZXJlIFggaXMgdGhlIGRyaXZlIGxldHRlciBjb3JyZXNwb25kaW5nIHRvIHdoZXJlIHlvdXIgZHJpdmUgCisgICAgaXMgaW5zdGFsbGVkLikKKyAgICAKK2MuIFN5c3RlbSBoYW5ndXBzLgorCisgIC0gSWYgdGhlIHN5c3RlbSBsb2NrcyB1cCB3aGVuIHlvdSB0cnkgdG8gYWNjZXNzIHRoZSBDRFJPTSwgdGhlIG1vc3QKKyAgICBsaWtlbHkgY2F1c2UgaXMgdGhhdCB5b3UgaGF2ZSBhIGJ1Z2d5IElERSBhZGFwdGVyIHdoaWNoIGRvZXNuJ3QKKyAgICBwcm9wZXJseSBoYW5kbGUgc2ltdWx0YW5lb3VzIHRyYW5zYWN0aW9ucyBvbiBtdWx0aXBsZSBpbnRlcmZhY2VzLgorICAgIFRoZSBtb3N0IG5vdG9yaW91cyBvZiB0aGVzZSBpcyB0aGUgQ01ENjQwQiBjaGlwLiAgVGhpcyBwcm9ibGVtIGNhbgorICAgIGJlIHdvcmtlZCBhcm91bmQgYnkgc3BlY2lmeWluZyB0aGUgYHNlcmlhbGl6ZScgb3B0aW9uIHdoZW4KKyAgICBib290aW5nLiAgUmVjZW50IGtlcm5lbHMgc2hvdWxkIGJlIGFibGUgdG8gZGV0ZWN0IHRoZSBuZWVkIGZvcgorICAgIHRoaXMgYXV0b21hdGljYWxseSBpbiBtb3N0IGNhc2VzLCBidXQgdGhlIGRldGVjdGlvbiBpcyBub3QKKyAgICBmb29scHJvb2YuICBTZWUgRG9jdW1lbnRhdGlvbi9pZGUvaWRlLnR4dCBmb3IgbW9yZSBpbmZvcm1hdGlvbgorICAgIGFib3V0IHRoZSBgc2VyaWFsaXplJyBvcHRpb24gYW5kIHRoZSBDTUQ2NDBCLgorCisgIC0gTm90ZSB0aGF0IG1hbnkgTVMtRE9TIENEUk9NIGRyaXZlcnMgd2lsbCB3b3JrIHdpdGggc3VjaCBidWdneQorICAgIGhhcmR3YXJlLCBhcHBhcmVudGx5IGJlY2F1c2UgdGhleSBuZXZlciBhdHRlbXB0IHRvIG92ZXJsYXAgQ0RST00KKyAgICBvcGVyYXRpb25zIHdpdGggb3RoZXIgZGlzayBhY3Rpdml0eS4KKworCitkLiBDYW4ndCBtb3VudCBhIENEUk9NLgorCisgIC0gSWYgeW91IGdldCBlcnJvcnMgZnJvbSBtb3VudCwgaXQgbWF5IGhlbHAgdG8gY2hlY2sgYGRtZXNnJyB0byBzZWUKKyAgICBpZiB0aGVyZSBhcmUgYW55IG1vcmUgc3BlY2lmaWMgZXJyb3JzIGZyb20gdGhlIGRyaXZlciBvciBmcm9tIHRoZQorICAgIGZpbGVzeXN0ZW0uCisKKyAgLSBNYWtlIHN1cmUgdGhlcmUncyBhIENEUk9NIGxvYWRlZCBpbiB0aGUgZHJpdmUsIGFuZCB0aGF0J3MgaXQncyBhbgorICAgIElTTyA5NjYwIGRpc2MuICBZb3UgY2FuJ3QgbW91bnQgYW4gYXVkaW8gQ0QuCisKKyAgLSBXaXRoIHRoZSBDRFJPTSBpbiB0aGUgZHJpdmUgYW5kIHVubW91bnRlZCwgdHJ5IHNvbWV0aGluZyBsaWtlCisKKyAgICAgIGNhdCAvZGV2L2Nkcm9tIHwgb2QgfCBtb3JlCisKKyAgICBJZiB5b3Ugc2VlIGEgZHVtcCwgdGhlbiB0aGUgZHJpdmUgYW5kIGRyaXZlciBhcmUgcHJvYmFibHkgd29ya2luZworICAgIE9LLCBhbmQgdGhlIHByb2JsZW0gaXMgYXQgdGhlIGZpbGVzeXN0ZW0gbGV2ZWwgKGkuZS4sIHRoZSBDRFJPTSBpcworICAgIG5vdCBJU08gOTY2MCBvciBoYXMgZXJyb3JzIGluIHRoZSBmaWxlc3lzdGVtIHN0cnVjdHVyZSkuCisKKyAgLSBJZiB5b3Ugc2VlIGBub3QgYSBibG9jayBkZXZpY2UnIGVycm9ycywgY2hlY2sgdGhhdCB0aGUgZGVmaW5pdGlvbnMKKyAgICBvZiB0aGUgZGV2aWNlIHNwZWNpYWwgZmlsZXMgYXJlIGNvcnJlY3QuICBUaGV5IHNob3VsZCBiZSBhcworICAgIGZvbGxvd3M6CisKKyAgICAgIGJydy1ydy0tLS0gICAxIHJvb3QgICAgIGRpc2sgICAgICAgMywgICAwIE5vdiAxMSAxODo0OCAvZGV2L2hkYQorICAgICAgYnJ3LXJ3LS0tLSAgIDEgcm9vdCAgICAgZGlzayAgICAgICAzLCAgNjQgTm92IDExIDE4OjQ4IC9kZXYvaGRiCisgICAgICBicnctcnctLS0tICAgMSByb290ICAgICBkaXNrICAgICAgMjIsICAgMCBOb3YgMTEgMTg6NDggL2Rldi9oZGMKKyAgICAgIGJydy1ydy0tLS0gICAxIHJvb3QgICAgIGRpc2sgICAgICAyMiwgIDY0IE5vdiAxMSAxODo0OCAvZGV2L2hkZAorCisgICAgU29tZSBlYXJseSBTbGFja3dhcmUgcmVsZWFzZXMgaGFkIHRoZXNlIGRlZmluZWQgaW5jb3JyZWN0bHkuICBJZgorICAgIHRoZXNlIGFyZSB3cm9uZywgeW91IGNhbiByZW1ha2UgdGhlbSBieSBydW5uaW5nIHRoZSBzY3JpcHQKKyAgICBzY3JpcHRzL01BS0VERVYuaWRlLiAgKFlvdSBtYXkgaGF2ZSB0byBtYWtlIGl0IGV4ZWN1dGFibGUKKyAgICB3aXRoIGNobW9kIGZpcnN0LikKKworICAgIElmIHlvdSBoYXZlIGEgL2Rldi9jZHJvbSBzeW1ib2xpYyBsaW5rLCBjaGVjayB0aGF0IGl0IGlzIHBvaW50aW5nCisgICAgdG8gdGhlIGNvcnJlY3QgZGV2aWNlIGZpbGUuCisKKyAgICBJZiB5b3UgaGVhciBwZW9wbGUgdGFsa2luZyBvZiB0aGUgZGV2aWNlcyBgaGQxYScgYW5kIGBoZDFiJywgdGhlc2UKKyAgICB3ZXJlIG9sZCBuYW1lcyBmb3Igd2hhdCBhcmUgbm93IGNhbGxlZCBoZGMgYW5kIGhkZC4gIFRob3NlIG5hbWVzCisgICAgc2hvdWxkIGJlIGNvbnNpZGVyZWQgb2Jzb2xldGUuCisKKyAgLSBJZiBtb3VudCBpcyBjb21wbGFpbmluZyB0aGF0IHRoZSBpc285NjYwIGZpbGVzeXN0ZW0gaXMgbm90CisgICAgYXZhaWxhYmxlLCBidXQgeW91IGtub3cgaXQgaXMgKGNoZWNrIC9wcm9jL2ZpbGVzeXN0ZW1zKSwgeW91CisgICAgcHJvYmFibHkgbmVlZCBhIG5ld2VyIHZlcnNpb24gb2YgbW91bnQuICBFYXJseSB2ZXJzaW9ucyB3b3VsZCBub3QKKyAgICBhbHdheXMgZ2l2ZSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2VzLgorCisKK2UuIERpcmVjdG9yeSBsaXN0aW5ncyBhcmUgdW5wcmVkaWN0YWJseSB0cnVuY2F0ZWQsIGFuZCBgZG1lc2cnIHNob3dzCisgICBgYnVmZmVyIGJvdGNoJyBlcnJvciBtZXNzYWdlcyBmcm9tIHRoZSBkcml2ZXIuCisKKyAgLSBUaGVyZSB3YXMgYSBidWcgaW4gdGhlIHZlcnNpb24gb2YgdGhlIGRyaXZlciBpbiAxLjIueCBrZXJuZWxzCisgICAgd2hpY2ggY291bGQgY2F1c2UgdGhpcy4gIEl0IHdhcyBmaXhlZCBpbiAxLjMuMC4gIElmIHlvdSBjYW4ndAorICAgIHVwZ3JhZGUsIHlvdSBjYW4gcHJvYmFibHkgd29yayBhcm91bmQgdGhlIHByb2JsZW0gYnkgc3BlY2lmeWluZyBhCisgICAgYmxvY2tzaXplIG9mIDIwNDggd2hlbiBtb3VudGluZy4gIChOb3RlIHRoYXQgeW91IHdvbid0IGJlIGFibGUgdG8KKyAgICBkaXJlY3RseSBleGVjdXRlIGJpbmFyaWVzIG9mZiB0aGUgQ0RST00gaW4gdGhhdCBjYXNlLikKKworICAgIElmIHlvdSBzZWUgdGhpcyBpbiBrZXJuZWxzIGxhdGVyIHRoYW4gMS4zLjAsIHBsZWFzZSByZXBvcnQgaXQgYXMgYQorICAgIGJ1Zy4KKworCitmLiBEYXRhIGNvcnJ1cHRpb24uCisKKyAgLSBSYW5kb20gZGF0YSBjb3JydXB0aW9uIHdhcyBvY2Nhc2lvbmFsbHkgb2JzZXJ2ZWQgd2l0aCB0aGUgSGl0YWNoaQorICAgIENEUi03NzMwIENEUk9NLiBJZiB5b3UgZXhwZXJpZW5jZSBkYXRhIGNvcnJ1cHRpb24sIHVzaW5nICJoZHg9c2xvdyIKKyAgICBhcyBhIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXIgbWF5IHdvcmsgYXJvdW5kIHRoZSBwcm9ibGVtLCBhdCB0aGUKKyAgICBleHBlbnNlIG9mIGxvdyBzeXN0ZW0gcGVyZm9ybWFuY2UuCisKKworNS4gY2RjaGFuZ2UuYworLS0tLS0tLS0tLS0tLQorCisvKgorICogY2RjaGFuZ2UuYyAgWy12XSAgPGRldmljZT4gIFs8c2xvdD5dCisgKgorICogVGhpcyBsb2FkcyBhIENEUk9NIGZyb20gYSBzcGVjaWZpZWQgc2xvdCBpbiBhIGNoYW5nZXIsIGFuZCBkaXNwbGF5cyAKKyAqIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjaGFuZ2VyIHN0YXR1cy4gIFRoZSBkcml2ZSBzaG91bGQgYmUgdW5tb3VudGVkIGJlZm9yZSAKKyAqIHVzaW5nIHRoaXMgcHJvZ3JhbS4KKyAqCisgKiBDaGFuZ2VyIGluZm9ybWF0aW9uIGlzIGRpc3BsYXllZCBpZiBlaXRoZXIgdGhlIC12IGZsYWcgaXMgc3BlY2lmaWVkCisgKiBvciBubyBzbG90IHdhcyBzcGVjaWZpZWQuCisgKgorICogQmFzZWQgb24gY29kZSBvcmlnaW5hbGx5IGZyb20gR2VyaGFyZCBadWJlciA8enViZXJAYmVybGluLnNuYWZ1LmRlPi4KKyAqIENoYW5nZXIgc3RhdHVzIGluZm9ybWF0aW9uLCBhbmQgcmV3cml0ZSBmb3IgdGhlIG5ldyBVbmlmb3JtIENEUk9NIGRyaXZlcgorICogaW50ZXJmYWNlIGJ5IEVyaWsgQW5kZXJzZW4gPGFuZGVyc2VlQGRlYmlhbi5vcmc+LgorICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxsaW51eC9jZHJvbS5oPgorCisKK2ludAorbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWNoYXIgKnByb2dyYW07CisJY2hhciAqZGV2aWNlOworCWludCBmZDsgICAgICAgICAgIC8qIGZpbGUgZGVzY3JpcHRvciBmb3IgQ0QtUk9NIGRldmljZSAqLworCWludCBzdGF0dXM7ICAgICAgIC8qIHJldHVybiBzdGF0dXMgZm9yIHN5c3RlbSBjYWxscyAqLworCWludCB2ZXJib3NlID0gMDsKKwlpbnQgc2xvdD0tMSwgeF9zbG90OworCWludCB0b3RhbF9zbG90c19hdmFpbGFibGU7CisKKwlwcm9ncmFtID0gYXJndlswXTsKKworCSsrYXJndjsKKwktLWFyZ2M7CisKKwlpZiAoYXJnYyA8IDEgfHwgYXJnYyA+IDMpIHsKKwkJZnByaW50ZiAoc3RkZXJyLCAidXNhZ2U6ICVzIFstdl0gPGRldmljZT4gWzxzbG90Pl1cbiIsCisJCQkgcHJvZ3JhbSk7CisJCWZwcmludGYgKHN0ZGVyciwgIiAgICAgICBTbG90cyBhcmUgbnVtYmVyZWQgMSAtLSBuLlxuIik7CisJCWV4aXQgKDEpOworCX0KKyAKKyAgICAgICBpZiAoc3RyY21wIChhcmd2WzBdLCAiLXYiKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgdmVyYm9zZSA9IDE7CisgICAgICAgICAgICAgICAgKythcmd2OworICAgICAgICAgICAgICAgIC0tYXJnYzsKKyAgICAgICAgfQorIAorCWRldmljZSA9IGFyZ3ZbMF07CisgCisJaWYgKGFyZ2MgPT0gMikKKwkJc2xvdCA9IGF0b2kgKGFyZ3ZbMV0pIC0gMTsKKworCS8qIG9wZW4gZGV2aWNlICovIAorCWZkID0gb3BlbihkZXZpY2UsIE9fUkRPTkxZIHwgT19OT05CTE9DSyk7CisJaWYgKGZkIDwgMCkgeworCQlmcHJpbnRmIChzdGRlcnIsICIlczogb3BlbiBmYWlsZWQgZm9yIGAlcyc6ICVzXG4iLAorCQkJIHByb2dyYW0sIGRldmljZSwgc3RyZXJyb3IgKGVycm5vKSk7CisJCWV4aXQgKDEpOworCX0KKworCS8qIENoZWNrIENEIHBsYXllciBzdGF0dXMgKi8gCisJdG90YWxfc2xvdHNfYXZhaWxhYmxlID0gaW9jdGwgKGZkLCBDRFJPTV9DSEFOR0VSX05TTE9UUyk7CisJaWYgKHRvdGFsX3Nsb3RzX2F2YWlsYWJsZSA8PSAxICkgeworCQlmcHJpbnRmIChzdGRlcnIsICIlczogRGV2aWNlIGAlcycgaXMgbm90IGFuIEFUQVBJICIKKwkJCSJjb21wbGlhbnQgQ0QgY2hhbmdlci5cbiIsIHByb2dyYW0sIGRldmljZSk7CisJCWV4aXQgKDEpOworCX0KKworCWlmIChzbG90ID49IDApIHsKKwkJaWYgKHNsb3QgPj0gdG90YWxfc2xvdHNfYXZhaWxhYmxlKSB7CisJCQlmcHJpbnRmIChzdGRlcnIsICJCYWQgc2xvdCBudW1iZXIuICAiCisJCQkJICJTaG91bGQgYmUgMSAtLSAlZC5cbiIsCisJCQkJIHRvdGFsX3Nsb3RzX2F2YWlsYWJsZSk7CisJCQlleGl0ICgxKTsKKwkJfQorCisJCS8qIGxvYWQgKi8gCisJCXNsb3Q9aW9jdGwgKGZkLCBDRFJPTV9TRUxFQ1RfRElTQywgc2xvdCk7CisJCWlmIChzbG90PDApIHsKKwkJCWZmbHVzaChzdGRvdXQpOworCQkJCXBlcnJvciAoIkNEUk9NX1NFTEVDVF9ESVNDICIpOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKworCWlmIChzbG90IDwgMCB8fCB2ZXJib3NlKSB7CisKKwkJc3RhdHVzPWlvY3RsIChmZCwgQ0RST01fU0VMRUNUX0RJU0MsIENEU0xfQ1VSUkVOVCk7CisJCWlmIChzdGF0dXM8MCkgeworCQkJZmZsdXNoKHN0ZG91dCk7CisJCQlwZXJyb3IgKCIgQ0RST01fU0VMRUNUX0RJU0MiKTsKKwkJCWV4aXQoMSk7CisJCX0KKwkJc2xvdD1zdGF0dXM7CisKKwkJcHJpbnRmICgiQ3VycmVudCBzbG90OiAlZFxuIiwgc2xvdCsxKTsKKwkJcHJpbnRmICgiVG90YWwgc2xvdHMgYXZhaWxhYmxlOiAlZFxuIiwKKwkJCXRvdGFsX3Nsb3RzX2F2YWlsYWJsZSk7CisKKwkJcHJpbnRmICgiRHJpdmUgc3RhdHVzOiAiKTsKKyAgICAgICAgICAgICAgICBzdGF0dXMgPSBpb2N0bCAoZmQsIENEUk9NX0RSSVZFX1NUQVRVUywgQ0RTTF9DVVJSRU5UKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdHVzPDApIHsKKyAgICAgICAgICAgICAgICAgIHBlcnJvcigiIENEUk9NX0RSSVZFX1NUQVRVUyIpOworICAgICAgICAgICAgICAgIH0gZWxzZSBzd2l0Y2goc3RhdHVzKSB7CisJCWNhc2UgQ0RTX0RJU0NfT0s6CisJCQlwcmludGYgKCJSZWFkeS5cbiIpOworCQkJYnJlYWs7CisJCWNhc2UgQ0RTX1RSQVlfT1BFTjoKKwkJCXByaW50ZiAoIlRyYXkgT3Blbi5cbiIpOworCQkJYnJlYWs7CisJCWNhc2UgQ0RTX0RSSVZFX05PVF9SRUFEWToKKwkJCXByaW50ZiAoIkRyaXZlIE5vdCBSZWFkeS5cbiIpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlwcmludGYgKCJUaGlzIFNob3VsZCBub3QgaGFwcGVuIVxuIik7CisJCQlicmVhazsKKwkJfQorCisJCWZvciAoeF9zbG90PTA7IHhfc2xvdDx0b3RhbF9zbG90c19hdmFpbGFibGU7IHhfc2xvdCsrKSB7CisJCQlwcmludGYgKCJTbG90ICUyZDogIiwgeF9zbG90KzEpOworICAgICAgICAgICAgIAkJc3RhdHVzID0gaW9jdGwgKGZkLCBDRFJPTV9EUklWRV9TVEFUVVMsIHhfc2xvdCk7CisgICAgICAgICAgICAgCQlpZiAoc3RhdHVzPDApIHsKKyAgICAgICAgICAgICAJCSAgICAgcGVycm9yKCIgQ0RST01fRFJJVkVfU1RBVFVTIik7CisgICAgICAgICAgICAgCQl9IGVsc2Ugc3dpdGNoKHN0YXR1cykgeworCQkJY2FzZSBDRFNfRElTQ19PSzoKKwkJCQlwcmludGYgKCJEaXNjIHByZXNlbnQuIik7CisJCQkJYnJlYWs7CisJCQljYXNlIENEU19OT19ESVNDOiAKKwkJCQlwcmludGYgKCJFbXB0eSBzbG90LiIpOworCQkJCWJyZWFrOworCQkJY2FzZSBDRFNfVFJBWV9PUEVOOgorCQkJCXByaW50ZiAoIkNELVJPTSB0cmF5IG9wZW4uXG4iKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgQ0RTX0RSSVZFX05PVF9SRUFEWToKKwkJCQlwcmludGYgKCJDRC1ST00gZHJpdmUgbm90IHJlYWR5LlxuIik7CisJCQkJYnJlYWs7CisJCQljYXNlIENEU19OT19JTkZPOgorCQkJCXByaW50ZiAoIk5vIEluZm9ybWF0aW9uIGF2YWlsYWJsZS4iKTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJcHJpbnRmICgiVGhpcyBTaG91bGQgbm90IGhhcHBlbiFcbiIpOworCQkJCWJyZWFrOworCQkJfQorCQkgIGlmIChzbG90ID09IHhfc2xvdCkgeworICAgICAgICAgICAgICAgICAgc3RhdHVzID0gaW9jdGwgKGZkLCBDRFJPTV9ESVNDX1NUQVRVUyk7CisgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzPDApIHsKKwkJCXBlcnJvcigiIENEUk9NX0RJU0NfU1RBVFVTIik7CisgICAgICAgICAgICAgICAgICB9CisJCSAgc3dpdGNoIChzdGF0dXMpIHsKKwkJCWNhc2UgQ0RTX0FVRElPOgorCQkJCXByaW50ZiAoIlx0QXVkaW8gZGlzYy5cdCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBDRFNfREFUQV8xOgorCQkJY2FzZSBDRFNfREFUQV8yOgorCQkJCXByaW50ZiAoIlx0RGF0YSBkaXNjIHR5cGUgJWQuXHQiLCBzdGF0dXMtQ0RTX0RBVEFfMSsxKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgQ0RTX1hBXzJfMToKKwkJCWNhc2UgQ0RTX1hBXzJfMjoKKwkJCQlwcmludGYgKCJcdFhBIGRhdGEgZGlzYyB0eXBlICVkLlx0Iiwgc3RhdHVzLUNEU19YQV8yXzErMSk7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCXByaW50ZiAoIlx0VW5rbm93biBkaXNjIHR5cGUgMHgleCFcdCIsIHN0YXR1cyk7CisJCQkJYnJlYWs7CisJCQl9CisJCQl9CisgICAgICAgICAgICAgICAgICAJc3RhdHVzID0gaW9jdGwgKGZkLCBDRFJPTV9NRURJQV9DSEFOR0VELCB4X3Nsb3QpOworICAgICAgICAgICAgICAgICAgCWlmIChzdGF0dXM8MCkgeworCQkJCXBlcnJvcigiIENEUk9NX01FRElBX0NIQU5HRUQiKTsKKyAgICAgICAgICAgICAgICAgIAl9CisJCSAgCXN3aXRjaCAoc3RhdHVzKSB7CisJCQljYXNlIDE6CisJCQkJcHJpbnRmICgiQ2hhbmdlZC5cbiIpOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQlwcmludGYgKCJcbiIpOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJfQorCisJLyogY2xvc2UgZGV2aWNlICovCisJc3RhdHVzID0gY2xvc2UgKGZkKTsKKwlpZiAoc3RhdHVzICE9IDApIHsKKwkJZnByaW50ZiAoc3RkZXJyLCAiJXM6IGNsb3NlIGZhaWxlZCBmb3IgYCVzJzogJXNcbiIsCisJCQkgcHJvZ3JhbSwgZGV2aWNlLCBzdHJlcnJvciAoZXJybm8pKTsKKwkJZXhpdCAoMSk7CisJfQorIAorCWV4aXQgKDApOworfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9jZHJvbS9wYWNrZXQtd3JpdGluZy50eHQgYi9Eb2N1bWVudGF0aW9uL2Nkcm9tL3BhY2tldC13cml0aW5nLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODM0MTcwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9jZHJvbS9wYWNrZXQtd3JpdGluZy50eHQKQEAgLTAsMCArMSwxMzIgQEAKK0dldHRpbmcgc3RhcnRlZCBxdWljaworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gU2VsZWN0IHBhY2tldCBzdXBwb3J0IGluIHRoZSBibG9jayBkZXZpY2Ugc2VjdGlvbiBhbmQgVURGIHN1cHBvcnQgaW4KKyAgdGhlIGZpbGUgc3lzdGVtIHNlY3Rpb24uCisKKy0gQ29tcGlsZSBhbmQgaW5zdGFsbCBrZXJuZWwgYW5kIG1vZHVsZXMsIHJlYm9vdC4KKworLSBZb3UgbmVlZCB0aGUgdWRmdG9vbHMgcGFja2FnZSAocGt0c2V0dXAsIG1rdWRmZnMsIGNkcnd0b29sKS4KKyAgRG93bmxvYWQgZnJvbSBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpbnV4LXVkZi8KKworLSBHcmFiIGEgbmV3IENELVJXIGRpc2MgYW5kIGZvcm1hdCBpdCAoYXNzdW1pbmcgQ0QtUlcgaXMgaGRjLCBzdWJzdGl0dXRlCisgIGFzIGFwcHJvcHJpYXRlKToKKwkjIGNkcnd0b29sIC1kIC9kZXYvaGRjIC1xCisKKy0gU2V0dXAgeW91ciB3cml0ZXIKKwkjIHBrdHNldHVwIGRldl9uYW1lIC9kZXYvaGRjCisKKy0gTm93IHlvdSBjYW4gbW91bnQgL2Rldi9wa3RjZHZkL2Rldl9uYW1lIGFuZCBjb3B5IGZpbGVzIHRvIGl0LiBFbmpveSEKKwkjIG1vdW50IC9kZXYvcGt0Y2R2ZC9kZXZfbmFtZSAvY2Ryb20gLXQgdWRmIC1vIHJ3LG5vYXRpbWUKKworCitQYWNrZXQgd3JpdGluZyBmb3IgRFZELVJXIG1lZGlhCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RWRC1SVyBkaXNjcyBjYW4gYmUgd3JpdHRlbiB0byBtdWNoIGxpa2UgQ0QtUlcgZGlzY3MgaWYgdGhleSBhcmUgaW4KK3RoZSBzbyBjYWxsZWQgInJlc3RyaWN0ZWQgb3ZlcndyaXRlIiBtb2RlLiBUbyBwdXQgYSBkaXNjIGluIHJlc3RyaWN0ZWQKK292ZXJ3cml0ZSBtb2RlLCBydW46CisKKwkjIGR2ZCtydy1mb3JtYXQgL2Rldi9oZGMKKworWW91IGNhbiB0aGVuIHVzZSB0aGUgZGlzYyB0aGUgc2FtZSB3YXkgeW91IHdvdWxkIHVzZSBhIENELVJXIGRpc2M6CisKKwkjIHBrdHNldHVwIGRldl9uYW1lIC9kZXYvaGRjCisJIyBtb3VudCAvZGV2L3BrdGNkdmQvZGV2X25hbWUgL2Nkcm9tIC10IHVkZiAtbyBydyxub2F0aW1lCisKKworUGFja2V0IHdyaXRpbmcgZm9yIERWRCtSVyBtZWRpYQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBY2NvcmRpbmcgdG8gdGhlIERWRCtSVyBzcGVjaWZpY2F0aW9uLCBhIGRyaXZlIHN1cHBvcnRpbmcgRFZEK1JXIGRpc2NzCitzaGFsbCBpbXBsZW1lbnQgInRydWUgcmFuZG9tIHdyaXRlcyB3aXRoIDJLQiBncmFudWxhcml0eSIsIHdoaWNoIG1lYW5zCit0aGF0IGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBwdXQgYW55IGZpbGVzeXN0ZW0gd2l0aCBhIGJsb2NrIHNpemUgPj0KKzJLQiBvbiBzdWNoIGEgZGlzYy4gRm9yIGV4YW1wbGUsIGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBkbzoKKworCSMgZHZkK3J3LWZvcm1hdCAvZGV2L2hkYyAgIChvbmx5IG5lZWRlZCBpZiB0aGUgZGlzYyBoYXMgbmV2ZXIKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVlbiBmb3JtYXR0ZWQpCisJIyBta3VkZmZzIC9kZXYvaGRjCisJIyBtb3VudCAvZGV2L2hkYyAvY2Ryb20gLXQgdWRmIC1vIHJ3LG5vYXRpbWUKKworSG93ZXZlciwgc29tZSBkcml2ZXMgZG9uJ3QgZm9sbG93IHRoZSBzcGVjaWZpY2F0aW9uIGFuZCBleHBlY3QgdGhlCitob3N0IHRvIHBlcmZvcm0gYWxpZ25lZCB3cml0ZXMgYXQgMzJLQiBib3VuZGFyaWVzLiBPdGhlciBkcml2ZXMgZG8KK2ZvbGxvdyB0aGUgc3BlY2lmaWNhdGlvbiwgYnV0IHN1ZmZlciBiYWQgcGVyZm9ybWFuY2UgcHJvYmxlbXMgaWYgdGhlCit3cml0ZXMgYXJlIG5vdCAzMktCIGFsaWduZWQuCisKK0JvdGggcHJvYmxlbXMgY2FuIGJlIHNvbHZlZCBieSB1c2luZyB0aGUgcGt0Y2R2ZCBkcml2ZXIsIHdoaWNoIGFsd2F5cworZ2VuZXJhdGVzIGFsaWduZWQgd3JpdGVzLgorCisJIyBkdmQrcnctZm9ybWF0IC9kZXYvaGRjCisJIyBwa3RzZXR1cCBkZXZfbmFtZSAvZGV2L2hkYworCSMgbWt1ZGZmcyAvZGV2L3BrdGNkdmQvZGV2X25hbWUKKwkjIG1vdW50IC9kZXYvcGt0Y2R2ZC9kZXZfbmFtZSAvY2Ryb20gLXQgdWRmIC1vIHJ3LG5vYXRpbWUKKworCitQYWNrZXQgd3JpdGluZyBmb3IgRFZELVJBTSBtZWRpYQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRFZELVJBTSBkaXNjcyBhcmUgcmFuZG9tIHdyaXRhYmxlLCBzbyB1c2luZyB0aGUgcGt0Y2R2ZCBkcml2ZXIgaXMgbm90CituZWNlc3NhcnkuIEhvd2V2ZXIsIHVzaW5nIHRoZSBwa3RjZHZkIGRyaXZlciBjYW4gaW1wcm92ZSBwZXJmb3JtYW5jZQoraW4gdGhlIHNhbWUgd2F5IGl0IGRvZXMgZm9yIERWRCtSVyBtZWRpYS4KKworCitOb3RlcworLS0tLS0KKworLSBDRC1SVyBtZWRpYSBjYW4gdXN1YWxseSBub3QgYmUgb3ZlcndyaXR0ZW4gbW9yZSB0aGFuIGFib3V0IDEwMDAKKyAgdGltZXMsIHNvIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHdlYXIgb24gdGhlIG1lZGlhLCB5b3Ugc2hvdWxkIGFsd2F5cworICB1c2UgdGhlIG5vYXRpbWUgbW91bnQgb3B0aW9uLgorCistIERlZmVjdCBtYW5hZ2VtZW50IChpZSBhdXRvbWF0aWMgcmVtYXBwaW5nIG9mIGJhZCBzZWN0b3JzKSBoYXMgbm90CisgIGJlZW4gaW1wbGVtZW50ZWQgeWV0LCBzbyB5b3UgYXJlIGxpa2VseSB0byBnZXQgYXQgbGVhc3Qgc29tZQorICBmaWxlc3lzdGVtIGNvcnJ1cHRpb24gaWYgdGhlIGRpc2Mgd2VhcnMgb3V0LgorCistIFNpbmNlIHRoZSBwa3RjZHZkIGRyaXZlciBtYWtlcyB0aGUgZGlzYyBhcHBlYXIgYXMgYSByZWd1bGFyIGJsb2NrCisgIGRldmljZSB3aXRoIGEgMktCIGJsb2NrIHNpemUsIHlvdSBjYW4gcHV0IGFueSBmaWxlc3lzdGVtIHlvdSBsaWtlIG9uCisgIHRoZSBkaXNjLiBGb3IgZXhhbXBsZSwgcnVuOgorCisJIyAvc2Jpbi9ta2UyZnMgL2Rldi9wa3RjZHZkL2Rldl9uYW1lCisKKyAgdG8gY3JlYXRlIGFuIGV4dDIgZmlsZXN5c3RlbSBvbiB0aGUgZGlzYy4KKworCitVc2luZyB0aGUgcGt0Y2R2ZCBzeXNmcyBpbnRlcmZhY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTaW5jZSBMaW51eCAyLjYuMjAsIHRoZSBwa3RjZHZkIG1vZHVsZSBoYXMgYSBzeXNmcyBpbnRlcmZhY2UKK2FuZCBjYW4gYmUgY29udHJvbGxlZCBieSBpdC4gRm9yIGV4YW1wbGUgdGhlICJwa3RjZHZkIiB0b29sIHVzZXMKK3RoaXMgaW50ZXJmYWNlLiAoc2VlIGh0dHA6Ly90b20uaXN0LWltLXdlYi5kZS9kb3dubG9hZC9wa3RjZHZkICkKKworInBrdGNkdmQiIHdvcmtzIHNpbWlsYXIgdG8gInBrdHNldHVwIiwgZS5nLjoKKworCSMgcGt0Y2R2ZCAtYSBkZXZfbmFtZSAvZGV2L2hkYworCSMgbWt1ZGZmcyAvZGV2L3BrdGNkdmQvZGV2X25hbWUKKwkjIG1vdW50IC10IHVkZiAtbyBydyxub2F0aW1lIC9kZXYvcGt0Y2R2ZC9kZXZfbmFtZSAvZHZkcmFtCisJIyBjcCBmaWxlcyAvZHZkcmFtCisJIyB1bW91bnQgL2R2ZHJhbQorCSMgcGt0Y2R2ZCAtciBkZXZfbmFtZQorCisKK0ZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBzeXNmcyBpbnRlcmZhY2UgbG9vayBpbnRvIHRoZSBmaWxlOgorCisgIERvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtcGt0Y2R2ZAorCisKK1VzaW5nIHRoZSBwa3RjZHZkIGRlYnVnZnMgaW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUbyByZWFkIHBrdGNkdmQgZGV2aWNlIGluZm9zIGluIGh1bWFuIHJlYWRhYmxlIGZvcm0sIGRvOgorCisJIyBjYXQgL3N5cy9rZXJuZWwvZGVidWcvcGt0Y2R2ZC9wa3RjZHZkWzAtN10vaW5mbworCitGb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZGVidWdmcyBpbnRlcmZhY2UgbG9vayBpbnRvIHRoZSBmaWxlOgorCisgIERvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvZGVidWdmcy1wa3RjZHZkCisKKworCitMaW5rcworLS0tLS0KKworU2VlIGh0dHA6Ly9meS5jaGFsbWVycy5zZS9+YXBwcm8vbGludXgvRFZEK1JXLyBmb3IgbW9yZSBpbmZvcm1hdGlvbgorYWJvdXQgRFZEIHdyaXRpbmcuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Nncm91cHMvMDAtSU5ERVggYi9Eb2N1bWVudGF0aW9uL2Nncm91cHMvMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y1YTQwZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vY2dyb3Vwcy8wMC1JTkRFWApAQCAtMCwwICsxLDMwIEBACiswMC1JTkRFWAorCS0gdGhpcyBmaWxlCitibGtpby1jb250cm9sbGVyLnR4dAorCS0gRGVzY3JpcHRpb24gZm9yIEJsb2NrIElPIENvbnRyb2xsZXIsIGltcGxlbWVudGF0aW9uIGFuZCB1c2FnZSBkZXRhaWxzLgorY2dyb3Vwcy50eHQKKwktIENvbnRyb2wgR3JvdXBzIGRlZmluaXRpb24sIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIGV4YW1wbGVzIGFuZCBBUEkuCitjcHVhY2N0LnR4dAorCS0gQ1BVIEFjY291bnRpbmcgQ29udHJvbGxlcjsgYWNjb3VudCBDUFUgdXNhZ2UgZm9yIGdyb3VwcyBvZiB0YXNrcy4KK2NwdXNldHMudHh0CisJLSBkb2N1bWVudHMgdGhlIGNwdXNldHMgZmVhdHVyZTsgYXNzaWduIENQVXMgYW5kIE1lbSB0byBhIHNldCBvZiB0YXNrcy4KK2RldmljZXMudHh0CisJLSBEZXZpY2UgV2hpdGVsaXN0IENvbnRyb2xsZXI7IGRlc2NyaXB0aW9uLCBpbnRlcmZhY2UgYW5kIHNlY3VyaXR5LgorZnJlZXplci1zdWJzeXN0ZW0udHh0CisJLSBjaGVja3BvaW50aW5nOyByYXRpb25hbGUgdG8gbm90IHVzZSBzaWduYWxzLCBpbnRlcmZhY2UuCitodWdldGxiLnR4dAorCS0gSHVnZVRMQiBDb250cm9sbGVyIGltcGxlbWVudGF0aW9uIGFuZCB1c2FnZSBkZXRhaWxzLgorbWVtY2dfdGVzdC50eHQKKwktIE1lbW9yeSBSZXNvdXJjZSBDb250cm9sbGVyOyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgorbWVtb3J5LnR4dAorCS0gTWVtb3J5IFJlc291cmNlIENvbnRyb2xsZXI7IGRlc2lnbiwgYWNjb3VudGluZywgaW50ZXJmYWNlLCB0ZXN0aW5nLgorbmV0X2Nscy50eHQKKwktIE5ldHdvcmsgY2xhc3NpZmllciBjZ3JvdXBzIGRldGFpbHMgYW5kIHVzYWdlcy4KK25ldF9wcmlvLnR4dAorCS0gTmV0d29yayBwcmlvcml0eSBjZ3JvdXBzIGRldGFpbHMgYW5kIHVzYWdlcy4KK3BpZHMudHh0CisJLSBQcm9jZXNzIG51bWJlciBjZ3JvdXBzIGRldGFpbHMgYW5kIHVzYWdlcy4KK3Jlc291cmNlX2NvdW50ZXIudHh0CisJLSBSZXNvdXJjZSBDb3VudGVyIEFQSS4KK3VuaWZpZWQtaGllcmFyY2h5LnR4dAorCS0gRGVzY3JpcHRpb24gdGhlIG5ldy9uZXh0IGNncm91cCBpbnRlcmZhY2UuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Nncm91cHMvYmxraW8tY29udHJvbGxlci50eHQgYi9Eb2N1bWVudGF0aW9uL2Nncm91cHMvYmxraW8tY29udHJvbGxlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJmYTlmMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vY2dyb3Vwcy9ibGtpby1jb250cm9sbGVyLnR4dApAQCAtMCwwICsxLDQ1NSBAQAorCQkJCUJsb2NrIElPIENvbnRyb2xsZXIKKwkJCQk9PT09PT09PT09PT09PT09PT09CitPdmVydmlldworPT09PT09PT0KK2Nncm91cCBzdWJzeXMgImJsa2lvIiBpbXBsZW1lbnRzIHRoZSBibG9jayBpbyBjb250cm9sbGVyLiBUaGVyZSBzZWVtcyB0byBiZQorYSBuZWVkIG9mIHZhcmlvdXMga2luZHMgb2YgSU8gY29udHJvbCBwb2xpY2llcyAobGlrZSBwcm9wb3J0aW9uYWwgQlcsIG1heCBCVykKK2JvdGggYXQgbGVhZiBub2RlcyBhcyB3ZWxsIGFzIGF0IGludGVybWVkaWF0ZSBub2RlcyBpbiBhIHN0b3JhZ2UgaGllcmFyY2h5LgorUGxhbiBpcyB0byB1c2UgdGhlIHNhbWUgY2dyb3VwIGJhc2VkIG1hbmFnZW1lbnQgaW50ZXJmYWNlIGZvciBibGtpbyBjb250cm9sbGVyCithbmQgYmFzZWQgb24gdXNlciBvcHRpb25zIHN3aXRjaCBJTyBwb2xpY2llcyBpbiB0aGUgYmFja2dyb3VuZC4KKworQ3VycmVudGx5IHR3byBJTyBjb250cm9sIHBvbGljaWVzIGFyZSBpbXBsZW1lbnRlZC4gRmlyc3Qgb25lIGlzIHByb3BvcnRpb25hbAord2VpZ2h0IHRpbWUgYmFzZWQgZGl2aXNpb24gb2YgZGlzayBwb2xpY3kuIEl0IGlzIGltcGxlbWVudGVkIGluIENGUS4gSGVuY2UKK3RoaXMgcG9saWN5IHRha2VzIGVmZmVjdCBvbmx5IG9uIGxlYWYgbm9kZXMgd2hlbiBDRlEgaXMgYmVpbmcgdXNlZC4gVGhlIHNlY29uZAorb25lIGlzIHRocm90dGxpbmcgcG9saWN5IHdoaWNoIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdXBwZXIgSU8gcmF0ZSBsaW1pdHMKK29uIGRldmljZXMuIFRoaXMgcG9saWN5IGlzIGltcGxlbWVudGVkIGluIGdlbmVyaWMgYmxvY2sgbGF5ZXIgYW5kIGNhbiBiZQordXNlZCBvbiBsZWFmIG5vZGVzIGFzIHdlbGwgYXMgaGlnaGVyIGxldmVsIGxvZ2ljYWwgZGV2aWNlcyBsaWtlIGRldmljZSBtYXBwZXIuCisKK0hPV1RPCis9PT09PQorUHJvcG9ydGlvbmFsIFdlaWdodCBkaXZpc2lvbiBvZiBiYW5kd2lkdGgKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitZb3UgY2FuIGRvIGEgdmVyeSBzaW1wbGUgdGVzdGluZyBvZiBydW5uaW5nIHR3byBkZCB0aHJlYWRzIGluIHR3byBkaWZmZXJlbnQKK2Nncm91cHMuIEhlcmUgaXMgd2hhdCB5b3UgY2FuIGRvLgorCistIEVuYWJsZSBCbG9jayBJTyBjb250cm9sbGVyCisJQ09ORklHX0JMS19DR1JPVVA9eQorCistIEVuYWJsZSBncm91cCBzY2hlZHVsaW5nIGluIENGUQorCUNPTkZJR19DRlFfR1JPVVBfSU9TQ0hFRD15CisKKy0gQ29tcGlsZSBhbmQgYm9vdCBpbnRvIGtlcm5lbCBhbmQgbW91bnQgSU8gY29udHJvbGxlciAoYmxraW8pOyBzZWUKKyAgY2dyb3Vwcy50eHQsIFdoeSBhcmUgY2dyb3VwcyBuZWVkZWQ/LgorCisJbW91bnQgLXQgdG1wZnMgY2dyb3VwX3Jvb3QgL3N5cy9mcy9jZ3JvdXAKKwlta2RpciAvc3lzL2ZzL2Nncm91cC9ibGtpbworCW1vdW50IC10IGNncm91cCAtbyBibGtpbyBub25lIC9zeXMvZnMvY2dyb3VwL2Jsa2lvCisKKy0gQ3JlYXRlIHR3byBjZ3JvdXBzCisJbWtkaXIgLXAgL3N5cy9mcy9jZ3JvdXAvYmxraW8vdGVzdDEvIC9zeXMvZnMvY2dyb3VwL2Jsa2lvL3Rlc3QyCisKKy0gU2V0IHdlaWdodHMgb2YgZ3JvdXAgdGVzdDEgYW5kIHRlc3QyCisJZWNobyAxMDAwID4gL3N5cy9mcy9jZ3JvdXAvYmxraW8vdGVzdDEvYmxraW8ud2VpZ2h0CisJZWNobyA1MDAgPiAvc3lzL2ZzL2Nncm91cC9ibGtpby90ZXN0Mi9ibGtpby53ZWlnaHQKKworLSBDcmVhdGUgdHdvIHNhbWUgc2l6ZSBmaWxlcyAoc2F5IDUxMk1CIGVhY2gpIG9uIHNhbWUgZGlzayAoZmlsZTEsIGZpbGUyKSBhbmQKKyAgbGF1bmNoIHR3byBkZCB0aHJlYWRzIGluIGRpZmZlcmVudCBjZ3JvdXAgdG8gcmVhZCB0aG9zZSBmaWxlcy4KKworCXN5bmMKKwllY2hvIDMgPiAvcHJvYy9zeXMvdm0vZHJvcF9jYWNoZXMKKworCWRkIGlmPS9tbnQvc2RiL3plcm9maWxlMSBvZj0vZGV2L251bGwgJgorCWVjaG8gJCEgPiAvc3lzL2ZzL2Nncm91cC9ibGtpby90ZXN0MS90YXNrcworCWNhdCAvc3lzL2ZzL2Nncm91cC9ibGtpby90ZXN0MS90YXNrcworCisJZGQgaWY9L21udC9zZGIvemVyb2ZpbGUyIG9mPS9kZXYvbnVsbCAmCisJZWNobyAkISA+IC9zeXMvZnMvY2dyb3VwL2Jsa2lvL3Rlc3QyL3Rhc2tzCisJY2F0IC9zeXMvZnMvY2dyb3VwL2Jsa2lvL3Rlc3QyL3Rhc2tzCisKKy0gQXQgbWFjcm8gbGV2ZWwsIGZpcnN0IGRkIHNob3VsZCBmaW5pc2ggZmlyc3QuIFRvIGdldCBtb3JlIHByZWNpc2UgZGF0YSwga2VlcAorICBvbiBsb29raW5nIGF0ICh3aXRoIHRoZSBoZWxwIG9mIHNjcmlwdCksIGF0IGJsa2lvLmRpc2tfdGltZSBhbmQKKyAgYmxraW8uZGlza19zZWN0b3JzIGZpbGVzIG9mIGJvdGggdGVzdDEgYW5kIHRlc3QyIGdyb3Vwcy4gVGhpcyB3aWxsIHRlbGwgaG93CisgIG11Y2ggZGlzayB0aW1lIChpbiBtaWxsaXNlY29uZHMpLCBlYWNoIGdyb3VwIGdvdCBhbmQgaG93IG1hbnkgc2VjdG9ycyBlYWNoCisgIGdyb3VwIGRpc3BhdGNoZWQgdG8gdGhlIGRpc2suIFdlIHByb3ZpZGUgZmFpcm5lc3MgaW4gdGVybXMgb2YgZGlzayB0aW1lLCBzbworICBpZGVhbGx5IGlvLmRpc2tfdGltZSBvZiBjZ3JvdXBzIHNob3VsZCBiZSBpbiBwcm9wb3J0aW9uIHRvIHRoZSB3ZWlnaHQuCisKK1Rocm90dGxpbmcvVXBwZXIgTGltaXQgcG9saWN5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLSBFbmFibGUgQmxvY2sgSU8gY29udHJvbGxlcgorCUNPTkZJR19CTEtfQ0dST1VQPXkKKworLSBFbmFibGUgdGhyb3R0bGluZyBpbiBibG9jayBsYXllcgorCUNPTkZJR19CTEtfREVWX1RIUk9UVExJTkc9eQorCistIE1vdW50IGJsa2lvIGNvbnRyb2xsZXIgKHNlZSBjZ3JvdXBzLnR4dCwgV2h5IGFyZSBjZ3JvdXBzIG5lZWRlZD8pCisgICAgICAgIG1vdW50IC10IGNncm91cCAtbyBibGtpbyBub25lIC9zeXMvZnMvY2dyb3VwL2Jsa2lvCisKKy0gU3BlY2lmeSBhIGJhbmR3aWR0aCByYXRlIG9uIHBhcnRpY3VsYXIgZGV2aWNlIGZvciByb290IGdyb3VwLiBUaGUgZm9ybWF0CisgIGZvciBwb2xpY3kgaXMgIjxtYWpvcj46PG1pbm9yPiAgPGJ5dGVzX3Blcl9zZWNvbmQ+Ii4KKworICAgICAgICBlY2hvICI4OjE2ICAxMDQ4NTc2IiA+IC9zeXMvZnMvY2dyb3VwL2Jsa2lvL2Jsa2lvLnRocm90dGxlLnJlYWRfYnBzX2RldmljZQorCisgIEFib3ZlIHdpbGwgcHV0IGEgbGltaXQgb2YgMU1CL3NlY29uZCBvbiByZWFkcyBoYXBwZW5pbmcgZm9yIHJvb3QgZ3JvdXAKKyAgb24gZGV2aWNlIGhhdmluZyBtYWpvci9taW5vciBudW1iZXIgODoxNi4KKworLSBSdW4gZGQgdG8gcmVhZCBhIGZpbGUgYW5kIHNlZSBpZiByYXRlIGlzIHRocm90dGxlZCB0byAxTUIvcyBvciBub3QuCisKKwkJIyBkZCBpZj0vbW50L2NvbW1vbi96ZXJvZmlsZSBvZj0vZGV2L251bGwgYnM9NEsgY291bnQ9MTAyNAorCQkjIGlmbGFnPWRpcmVjdAorICAgICAgICAxMDI0KzAgcmVjb3JkcyBpbgorICAgICAgICAxMDI0KzAgcmVjb3JkcyBvdXQKKyAgICAgICAgNDE5NDMwNCBieXRlcyAoNC4yIE1CKSBjb3BpZWQsIDQuMDAwMSBzLCAxLjAgTUIvcworCisgTGltaXRzIGZvciB3cml0ZXMgY2FuIGJlIHB1dCB1c2luZyBibGtpby50aHJvdHRsZS53cml0ZV9icHNfZGV2aWNlIGZpbGUuCisKK0hpZXJhcmNoaWNhbCBDZ3JvdXBzCis9PT09PT09PT09PT09PT09PT09PQorCitCb3RoIENGUSBhbmQgdGhyb3R0bGluZyBpbXBsZW1lbnQgaGllcmFyY2h5IHN1cHBvcnQ7IGhvd2V2ZXIsCit0aHJvdHRsaW5nJ3MgaGllcmFyY2h5IHN1cHBvcnQgaXMgZW5hYmxlZCBpZmYgInNhbmVfYmVoYXZpb3IiIGlzCitlbmFibGVkIGZyb20gY2dyb3VwIHNpZGUsIHdoaWNoIGN1cnJlbnRseSBpcyBhIGRldmVsb3BtZW50IG9wdGlvbiBhbmQKK25vdCBwdWJsaWNseSBhdmFpbGFibGUuCisKK0lmIHNvbWVib2R5IGNyZWF0ZWQgYSBoaWVyYXJjaHkgbGlrZSBhcyBmb2xsb3dzLgorCisJCQlyb290CisJCQkvICBcCisJCSAgICAgdGVzdDEgdGVzdDIKKwkJCXwKKwkJICAgICB0ZXN0MworCitDRlEgYnkgZGVmYXVsdCBhbmQgdGhyb3R0bGluZyB3aXRoICJzYW5lX2JlaGF2aW9yIiB3aWxsIGhhbmRsZSB0aGUKK2hpZXJhcmNoeSBjb3JyZWN0bHkuICBGb3IgZGV0YWlscyBvbiBDRlEgaGllcmFyY2h5IHN1cHBvcnQsIHJlZmVyIHRvCitEb2N1bWVudGF0aW9uL2Jsb2NrL2NmcS1pb3NjaGVkLnR4dC4gIEZvciB0aHJvdHRsaW5nLCBhbGwgbGltaXRzIGFwcGx5Cit0byB0aGUgd2hvbGUgc3VidHJlZSB3aGlsZSBhbGwgc3RhdGlzdGljcyBhcmUgbG9jYWwgdG8gdGhlIElPcworZGlyZWN0bHkgZ2VuZXJhdGVkIGJ5IHRhc2tzIGluIHRoYXQgY2dyb3VwLgorCitUaHJvdHRsaW5nIHdpdGhvdXQgInNhbmVfYmVoYXZpb3IiIGVuYWJsZWQgZnJvbSBjZ3JvdXAgc2lkZSB3aWxsCitwcmFjdGljYWxseSB0cmVhdCBhbGwgZ3JvdXBzIGF0IHNhbWUgbGV2ZWwgYXMgaWYgaXQgbG9va3MgbGlrZSB0aGUKK2ZvbGxvd2luZy4KKworCQkJCXBpdm90CisJCQkgICAgIC8gIC8gICBcICBcCisJCQlyb290ICB0ZXN0MSB0ZXN0MiAgdGVzdDMKKworVmFyaW91cyB1c2VyIHZpc2libGUgY29uZmlnIG9wdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDT05GSUdfQkxLX0NHUk9VUAorCS0gQmxvY2sgSU8gY29udHJvbGxlci4KKworQ09ORklHX0RFQlVHX0JMS19DR1JPVVAKKwktIERlYnVnIGhlbHAuIFJpZ2h0IG5vdyBzb21lIGFkZGl0aW9uYWwgc3RhdHMgZmlsZSBzaG93IHVwIGluIGNncm91cAorCSAgaWYgdGhpcyBvcHRpb24gaXMgZW5hYmxlZC4KKworQ09ORklHX0NGUV9HUk9VUF9JT1NDSEVECisJLSBFbmFibGVzIGdyb3VwIHNjaGVkdWxpbmcgaW4gQ0ZRLiBDdXJyZW50bHkgb25seSAxIGxldmVsIG9mIGdyb3VwCisJICBjcmVhdGlvbiBpcyBhbGxvd2VkLgorCitDT05GSUdfQkxLX0RFVl9USFJPVFRMSU5HCisJLSBFbmFibGUgYmxvY2sgZGV2aWNlIHRocm90dGxpbmcgc3VwcG9ydCBpbiBibG9jayBsYXllci4KKworRGV0YWlscyBvZiBjZ3JvdXAgZmlsZXMKKz09PT09PT09PT09PT09PT09PT09PT09CitQcm9wb3J0aW9uYWwgd2VpZ2h0IHBvbGljeSBmaWxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0gYmxraW8ud2VpZ2h0CisJLSBTcGVjaWZpZXMgcGVyIGNncm91cCB3ZWlnaHQuIFRoaXMgaXMgZGVmYXVsdCB3ZWlnaHQgb2YgdGhlIGdyb3VwCisJICBvbiBhbGwgdGhlIGRldmljZXMgdW50aWwgYW5kIHVubGVzcyBvdmVycmlkZGVuIGJ5IHBlciBkZXZpY2UgcnVsZS4KKwkgIChTZWUgYmxraW8ud2VpZ2h0X2RldmljZSkuCisJICBDdXJyZW50bHkgYWxsb3dlZCByYW5nZSBvZiB3ZWlnaHRzIGlzIGZyb20gMTAgdG8gMTAwMC4KKworLSBibGtpby53ZWlnaHRfZGV2aWNlCisJLSBPbmUgY2FuIHNwZWNpZnkgcGVyIGNncm91cCBwZXIgZGV2aWNlIHJ1bGVzIHVzaW5nIHRoaXMgaW50ZXJmYWNlLgorCSAgVGhlc2UgcnVsZXMgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgdmFsdWUgb2YgZ3JvdXAgd2VpZ2h0IGFzIHNwZWNpZmllZAorCSAgYnkgYmxraW8ud2VpZ2h0LgorCisJICBGb2xsb3dpbmcgaXMgdGhlIGZvcm1hdC4KKworCSAgIyBlY2hvIGRldl9tYWo6ZGV2X21pbm9yIHdlaWdodCA+IGJsa2lvLndlaWdodF9kZXZpY2UKKwkgIENvbmZpZ3VyZSB3ZWlnaHQ9MzAwIG9uIC9kZXYvc2RiICg4OjE2KSBpbiB0aGlzIGNncm91cAorCSAgIyBlY2hvIDg6MTYgMzAwID4gYmxraW8ud2VpZ2h0X2RldmljZQorCSAgIyBjYXQgYmxraW8ud2VpZ2h0X2RldmljZQorCSAgZGV2ICAgICB3ZWlnaHQKKwkgIDg6MTYgICAgMzAwCisKKwkgIENvbmZpZ3VyZSB3ZWlnaHQ9NTAwIG9uIC9kZXYvc2RhICg4OjApIGluIHRoaXMgY2dyb3VwCisJICAjIGVjaG8gODowIDUwMCA+IGJsa2lvLndlaWdodF9kZXZpY2UKKwkgICMgY2F0IGJsa2lvLndlaWdodF9kZXZpY2UKKwkgIGRldiAgICAgd2VpZ2h0CisJICA4OjAgICAgIDUwMAorCSAgODoxNiAgICAzMDAKKworCSAgUmVtb3ZlIHNwZWNpZmljIHdlaWdodCBmb3IgL2Rldi9zZGEgaW4gdGhpcyBjZ3JvdXAKKwkgICMgZWNobyA4OjAgMCA+IGJsa2lvLndlaWdodF9kZXZpY2UKKwkgICMgY2F0IGJsa2lvLndlaWdodF9kZXZpY2UKKwkgIGRldiAgICAgd2VpZ2h0CisJICA4OjE2ICAgIDMwMAorCistIGJsa2lvLmxlYWZfd2VpZ2h0W19kZXZpY2VdCisJLSBFcXVpdmFsZW50cyBvZiBibGtpby53ZWlnaHRbX2RldmljZV0gZm9yIHRoZSBwdXJwb3NlIG9mCisgICAgICAgICAgZGVjaWRpbmcgaG93IG11Y2ggd2VpZ2h0IHRhc2tzIGluIHRoZSBnaXZlbiBjZ3JvdXAgaGFzIHdoaWxlCisgICAgICAgICAgY29tcGV0aW5nIHdpdGggdGhlIGNncm91cCdzIGNoaWxkIGNncm91cHMuIEZvciBkZXRhaWxzLAorICAgICAgICAgIHBsZWFzZSByZWZlciB0byBEb2N1bWVudGF0aW9uL2Jsb2NrL2NmcS1pb3NjaGVkLnR4dC4KKworLSBibGtpby50aW1lCisJLSBkaXNrIHRpbWUgYWxsb2NhdGVkIHRvIGNncm91cCBwZXIgZGV2aWNlIGluIG1pbGxpc2Vjb25kcy4gRmlyc3QKKwkgIHR3byBmaWVsZHMgc3BlY2lmeSB0aGUgbWFqb3IgYW5kIG1pbm9yIG51bWJlciBvZiB0aGUgZGV2aWNlIGFuZAorCSAgdGhpcmQgZmllbGQgc3BlY2lmaWVzIHRoZSBkaXNrIHRpbWUgYWxsb2NhdGVkIHRvIGdyb3VwIGluCisJICBtaWxsaXNlY29uZHMuCisKKy0gYmxraW8uc2VjdG9ycworCS0gbnVtYmVyIG9mIHNlY3RvcnMgdHJhbnNmZXJyZWQgdG8vZnJvbSBkaXNrIGJ5IHRoZSBncm91cC4gRmlyc3QKKwkgIHR3byBmaWVsZHMgc3BlY2lmeSB0aGUgbWFqb3IgYW5kIG1pbm9yIG51bWJlciBvZiB0aGUgZGV2aWNlIGFuZAorCSAgdGhpcmQgZmllbGQgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2Ygc2VjdG9ycyB0cmFuc2ZlcnJlZCBieSB0aGUKKwkgIGdyb3VwIHRvL2Zyb20gdGhlIGRldmljZS4KKworLSBibGtpby5pb19zZXJ2aWNlX2J5dGVzCisJLSBOdW1iZXIgb2YgYnl0ZXMgdHJhbnNmZXJyZWQgdG8vZnJvbSB0aGUgZGlzayBieSB0aGUgZ3JvdXAuIFRoZXNlCisJICBhcmUgZnVydGhlciBkaXZpZGVkIGJ5IHRoZSB0eXBlIG9mIG9wZXJhdGlvbiAtIHJlYWQgb3Igd3JpdGUsIHN5bmMKKwkgIG9yIGFzeW5jLiBGaXJzdCB0d28gZmllbGRzIHNwZWNpZnkgdGhlIG1ham9yIGFuZCBtaW5vciBudW1iZXIgb2YgdGhlCisJICBkZXZpY2UsIHRoaXJkIGZpZWxkIHNwZWNpZmllcyB0aGUgb3BlcmF0aW9uIHR5cGUgYW5kIHRoZSBmb3VydGggZmllbGQKKwkgIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGJ5dGVzLgorCistIGJsa2lvLmlvX3NlcnZpY2VkCisJLSBOdW1iZXIgb2YgSU9zIChiaW8pIGlzc3VlZCB0byB0aGUgZGlzayBieSB0aGUgZ3JvdXAuIFRoZXNlCisJICBhcmUgZnVydGhlciBkaXZpZGVkIGJ5IHRoZSB0eXBlIG9mIG9wZXJhdGlvbiAtIHJlYWQgb3Igd3JpdGUsIHN5bmMKKwkgIG9yIGFzeW5jLiBGaXJzdCB0d28gZmllbGRzIHNwZWNpZnkgdGhlIG1ham9yIGFuZCBtaW5vciBudW1iZXIgb2YgdGhlCisJICBkZXZpY2UsIHRoaXJkIGZpZWxkIHNwZWNpZmllcyB0aGUgb3BlcmF0aW9uIHR5cGUgYW5kIHRoZSBmb3VydGggZmllbGQKKwkgIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIElPcy4KKworLSBibGtpby5pb19zZXJ2aWNlX3RpbWUKKwktIFRvdGFsIGFtb3VudCBvZiB0aW1lIGJldHdlZW4gcmVxdWVzdCBkaXNwYXRjaCBhbmQgcmVxdWVzdCBjb21wbGV0aW9uCisJICBmb3IgdGhlIElPcyBkb25lIGJ5IHRoaXMgY2dyb3VwLiBUaGlzIGlzIGluIG5hbm9zZWNvbmRzIHRvIG1ha2UgaXQKKwkgIG1lYW5pbmdmdWwgZm9yIGZsYXNoIGRldmljZXMgdG9vLiBGb3IgZGV2aWNlcyB3aXRoIHF1ZXVlIGRlcHRoIG9mIDEsCisJICB0aGlzIHRpbWUgcmVwcmVzZW50cyB0aGUgYWN0dWFsIHNlcnZpY2UgdGltZS4gV2hlbiBxdWV1ZV9kZXB0aCA+IDEsCisJICB0aGF0IGlzIG5vIGxvbmdlciB0cnVlIGFzIHJlcXVlc3RzIG1heSBiZSBzZXJ2ZWQgb3V0IG9mIG9yZGVyLiBUaGlzCisJICBtYXkgY2F1c2UgdGhlIHNlcnZpY2UgdGltZSBmb3IgYSBnaXZlbiBJTyB0byBpbmNsdWRlIHRoZSBzZXJ2aWNlIHRpbWUKKwkgIG9mIG11bHRpcGxlIElPcyB3aGVuIHNlcnZlZCBvdXQgb2Ygb3JkZXIgd2hpY2ggbWF5IHJlc3VsdCBpbiB0b3RhbAorCSAgaW9fc2VydmljZV90aW1lID4gYWN0dWFsIHRpbWUgZWxhcHNlZC4gVGhpcyB0aW1lIGlzIGZ1cnRoZXIgZGl2aWRlZCBieQorCSAgdGhlIHR5cGUgb2Ygb3BlcmF0aW9uIC0gcmVhZCBvciB3cml0ZSwgc3luYyBvciBhc3luYy4gRmlyc3QgdHdvIGZpZWxkcworCSAgc3BlY2lmeSB0aGUgbWFqb3IgYW5kIG1pbm9yIG51bWJlciBvZiB0aGUgZGV2aWNlLCB0aGlyZCBmaWVsZAorCSAgc3BlY2lmaWVzIHRoZSBvcGVyYXRpb24gdHlwZSBhbmQgdGhlIGZvdXJ0aCBmaWVsZCBzcGVjaWZpZXMgdGhlCisJICBpb19zZXJ2aWNlX3RpbWUgaW4gbnMuCisKKy0gYmxraW8uaW9fd2FpdF90aW1lCisJLSBUb3RhbCBhbW91bnQgb2YgdGltZSB0aGUgSU9zIGZvciB0aGlzIGNncm91cCBzcGVudCB3YWl0aW5nIGluIHRoZQorCSAgc2NoZWR1bGVyIHF1ZXVlcyBmb3Igc2VydmljZS4gVGhpcyBjYW4gYmUgZ3JlYXRlciB0aGFuIHRoZSB0b3RhbCB0aW1lCisJICBlbGFwc2VkIHNpbmNlIGl0IGlzIGN1bXVsYXRpdmUgaW9fd2FpdF90aW1lIGZvciBhbGwgSU9zLiBJdCBpcyBub3QgYQorCSAgbWVhc3VyZSBvZiB0b3RhbCB0aW1lIHRoZSBjZ3JvdXAgc3BlbnQgd2FpdGluZyBidXQgcmF0aGVyIGEgbWVhc3VyZSBvZgorCSAgdGhlIHdhaXRfdGltZSBmb3IgaXRzIGluZGl2aWR1YWwgSU9zLiBGb3IgZGV2aWNlcyB3aXRoIHF1ZXVlX2RlcHRoID4gMQorCSAgdGhpcyBtZXRyaWMgZG9lcyBub3QgaW5jbHVkZSB0aGUgdGltZSBzcGVudCB3YWl0aW5nIGZvciBzZXJ2aWNlIG9uY2UKKwkgIHRoZSBJTyBpcyBkaXNwYXRjaGVkIHRvIHRoZSBkZXZpY2UgYnV0IHRpbGwgaXQgYWN0dWFsbHkgZ2V0cyBzZXJ2aWNlZAorCSAgKHRoZXJlIG1pZ2h0IGJlIGEgdGltZSBsYWcgaGVyZSBkdWUgdG8gcmUtb3JkZXJpbmcgb2YgcmVxdWVzdHMgYnkgdGhlCisJICBkZXZpY2UpLiBUaGlzIGlzIGluIG5hbm9zZWNvbmRzIHRvIG1ha2UgaXQgbWVhbmluZ2Z1bCBmb3IgZmxhc2gKKwkgIGRldmljZXMgdG9vLiBUaGlzIHRpbWUgaXMgZnVydGhlciBkaXZpZGVkIGJ5IHRoZSB0eXBlIG9mIG9wZXJhdGlvbiAtCisJICByZWFkIG9yIHdyaXRlLCBzeW5jIG9yIGFzeW5jLiBGaXJzdCB0d28gZmllbGRzIHNwZWNpZnkgdGhlIG1ham9yIGFuZAorCSAgbWlub3IgbnVtYmVyIG9mIHRoZSBkZXZpY2UsIHRoaXJkIGZpZWxkIHNwZWNpZmllcyB0aGUgb3BlcmF0aW9uIHR5cGUKKwkgIGFuZCB0aGUgZm91cnRoIGZpZWxkIHNwZWNpZmllcyB0aGUgaW9fd2FpdF90aW1lIGluIG5zLgorCistIGJsa2lvLmlvX21lcmdlZAorCS0gVG90YWwgbnVtYmVyIG9mIGJpb3MvcmVxdWVzdHMgbWVyZ2VkIGludG8gcmVxdWVzdHMgYmVsb25naW5nIHRvIHRoaXMKKwkgIGNncm91cC4gVGhpcyBpcyBmdXJ0aGVyIGRpdmlkZWQgYnkgdGhlIHR5cGUgb2Ygb3BlcmF0aW9uIC0gcmVhZCBvcgorCSAgd3JpdGUsIHN5bmMgb3IgYXN5bmMuCisKKy0gYmxraW8uaW9fcXVldWVkCisJLSBUb3RhbCBudW1iZXIgb2YgcmVxdWVzdHMgcXVldWVkIHVwIGF0IGFueSBnaXZlbiBpbnN0YW50IGZvciB0aGlzCisJICBjZ3JvdXAuIFRoaXMgaXMgZnVydGhlciBkaXZpZGVkIGJ5IHRoZSB0eXBlIG9mIG9wZXJhdGlvbiAtIHJlYWQgb3IKKwkgIHdyaXRlLCBzeW5jIG9yIGFzeW5jLgorCistIGJsa2lvLmF2Z19xdWV1ZV9zaXplCisJLSBEZWJ1Z2dpbmcgYWlkIG9ubHkgZW5hYmxlZCBpZiBDT05GSUdfREVCVUdfQkxLX0NHUk9VUD15LgorCSAgVGhlIGF2ZXJhZ2UgcXVldWUgc2l6ZSBmb3IgdGhpcyBjZ3JvdXAgb3ZlciB0aGUgZW50aXJlIHRpbWUgb2YgdGhpcworCSAgY2dyb3VwJ3MgZXhpc3RlbmNlLiBRdWV1ZSBzaXplIHNhbXBsZXMgYXJlIHRha2VuIGVhY2ggdGltZSBvbmUgb2YgdGhlCisJICBxdWV1ZXMgb2YgdGhpcyBjZ3JvdXAgZ2V0cyBhIHRpbWVzbGljZS4KKworLSBibGtpby5ncm91cF93YWl0X3RpbWUKKwktIERlYnVnZ2luZyBhaWQgb25seSBlbmFibGVkIGlmIENPTkZJR19ERUJVR19CTEtfQ0dST1VQPXkuCisJICBUaGlzIGlzIHRoZSBhbW91bnQgb2YgdGltZSB0aGUgY2dyb3VwIGhhZCB0byB3YWl0IHNpbmNlIGl0IGJlY2FtZSBidXN5CisJICAoaS5lLiwgd2VudCBmcm9tIDAgdG8gMSByZXF1ZXN0IHF1ZXVlZCkgdG8gZ2V0IGEgdGltZXNsaWNlIGZvciBvbmUgb2YKKwkgIGl0cyBxdWV1ZXMuIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gdGhlIGlvX3dhaXRfdGltZSB3aGljaCBpcyB0aGUKKwkgIGN1bXVsYXRpdmUgdG90YWwgb2YgdGhlIGFtb3VudCBvZiB0aW1lIHNwZW50IGJ5IGVhY2ggSU8gaW4gdGhhdCBjZ3JvdXAKKwkgIHdhaXRpbmcgaW4gdGhlIHNjaGVkdWxlciBxdWV1ZS4gVGhpcyBpcyBpbiBuYW5vc2Vjb25kcy4gSWYgdGhpcyBpcworCSAgcmVhZCB3aGVuIHRoZSBjZ3JvdXAgaXMgaW4gYSB3YWl0aW5nIChmb3IgdGltZXNsaWNlKSBzdGF0ZSwgdGhlIHN0YXQKKwkgIHdpbGwgb25seSByZXBvcnQgdGhlIGdyb3VwX3dhaXRfdGltZSBhY2N1bXVsYXRlZCB0aWxsIHRoZSBsYXN0IHRpbWUgaXQKKwkgIGdvdCBhIHRpbWVzbGljZSBhbmQgd2lsbCBub3QgaW5jbHVkZSB0aGUgY3VycmVudCBkZWx0YS4KKworLSBibGtpby5lbXB0eV90aW1lCisJLSBEZWJ1Z2dpbmcgYWlkIG9ubHkgZW5hYmxlZCBpZiBDT05GSUdfREVCVUdfQkxLX0NHUk9VUD15LgorCSAgVGhpcyBpcyB0aGUgYW1vdW50IG9mIHRpbWUgYSBjZ3JvdXAgc3BlbmRzIHdpdGhvdXQgYW55IHBlbmRpbmcKKwkgIHJlcXVlc3RzIHdoZW4gbm90IGJlaW5nIHNlcnZlZCwgaS5lLiwgaXQgZG9lcyBub3QgaW5jbHVkZSBhbnkgdGltZQorCSAgc3BlbnQgaWRsaW5nIGZvciBvbmUgb2YgdGhlIHF1ZXVlcyBvZiB0aGUgY2dyb3VwLiBUaGlzIGlzIGluCisJICBuYW5vc2Vjb25kcy4gSWYgdGhpcyBpcyByZWFkIHdoZW4gdGhlIGNncm91cCBpcyBpbiBhbiBlbXB0eSBzdGF0ZSwKKwkgIHRoZSBzdGF0IHdpbGwgb25seSByZXBvcnQgdGhlIGVtcHR5X3RpbWUgYWNjdW11bGF0ZWQgdGlsbCB0aGUgbGFzdAorCSAgdGltZSBpdCBoYWQgYSBwZW5kaW5nIHJlcXVlc3QgYW5kIHdpbGwgbm90IGluY2x1ZGUgdGhlIGN1cnJlbnQgZGVsdGEuCisKKy0gYmxraW8uaWRsZV90aW1lCisJLSBEZWJ1Z2dpbmcgYWlkIG9ubHkgZW5hYmxlZCBpZiBDT05GSUdfREVCVUdfQkxLX0NHUk9VUD15LgorCSAgVGhpcyBpcyB0aGUgYW1vdW50IG9mIHRpbWUgc3BlbnQgYnkgdGhlIElPIHNjaGVkdWxlciBpZGxpbmcgZm9yIGEKKwkgIGdpdmVuIGNncm91cCBpbiBhbnRpY2lwYXRpb24gb2YgYSBiZXR0ZXIgcmVxdWVzdCB0aGFuIHRoZSBleGlzdGluZyBvbmVzCisJICBmcm9tIG90aGVyIHF1ZXVlcy9jZ3JvdXBzLiBUaGlzIGlzIGluIG5hbm9zZWNvbmRzLiBJZiB0aGlzIGlzIHJlYWQKKwkgIHdoZW4gdGhlIGNncm91cCBpcyBpbiBhbiBpZGxpbmcgc3RhdGUsIHRoZSBzdGF0IHdpbGwgb25seSByZXBvcnQgdGhlCisJICBpZGxlX3RpbWUgYWNjdW11bGF0ZWQgdGlsbCB0aGUgbGFzdCBpZGxlIHBlcmlvZCBhbmQgd2lsbCBub3QgaW5jbHVkZQorCSAgdGhlIGN1cnJlbnQgZGVsdGEuCisKKy0gYmxraW8uZGVxdWV1ZQorCS0gRGVidWdnaW5nIGFpZCBvbmx5IGVuYWJsZWQgaWYgQ09ORklHX0RFQlVHX0JMS19DR1JPVVA9eS4gVGhpcworCSAgZ2l2ZXMgdGhlIHN0YXRpc3RpY3MgYWJvdXQgaG93IG1hbnkgYSB0aW1lcyBhIGdyb3VwIHdhcyBkZXF1ZXVlZAorCSAgZnJvbSBzZXJ2aWNlIHRyZWUgb2YgdGhlIGRldmljZS4gRmlyc3QgdHdvIGZpZWxkcyBzcGVjaWZ5IHRoZSBtYWpvcgorCSAgYW5kIG1pbm9yIG51bWJlciBvZiB0aGUgZGV2aWNlIGFuZCB0aGlyZCBmaWVsZCBzcGVjaWZpZXMgdGhlIG51bWJlcgorCSAgb2YgdGltZXMgYSBncm91cCB3YXMgZGVxdWV1ZWQgZnJvbSBhIHBhcnRpY3VsYXIgZGV2aWNlLgorCistIGJsa2lvLipfcmVjdXJzaXZlCisJLSBSZWN1cnNpdmUgdmVyc2lvbiBvZiB2YXJpb3VzIHN0YXRzLiBUaGVzZSBmaWxlcyBzaG93IHRoZQorICAgICAgICAgIHNhbWUgaW5mb3JtYXRpb24gYXMgdGhlaXIgbm9uLXJlY3Vyc2l2ZSBjb3VudGVycGFydHMgYnV0CisgICAgICAgICAgaW5jbHVkZSBzdGF0cyBmcm9tIGFsbCB0aGUgZGVzY2VuZGFudCBjZ3JvdXBzLgorCitUaHJvdHRsaW5nL1VwcGVyIGxpbWl0IHBvbGljeSBmaWxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0gYmxraW8udGhyb3R0bGUucmVhZF9icHNfZGV2aWNlCisJLSBTcGVjaWZpZXMgdXBwZXIgbGltaXQgb24gUkVBRCByYXRlIGZyb20gdGhlIGRldmljZS4gSU8gcmF0ZSBpcworCSAgc3BlY2lmaWVkIGluIGJ5dGVzIHBlciBzZWNvbmQuIFJ1bGVzIGFyZSBwZXIgZGV2aWNlLiBGb2xsb3dpbmcgaXMKKwkgIHRoZSBmb3JtYXQuCisKKyAgZWNobyAiPG1ham9yPjo8bWlub3I+ICA8cmF0ZV9ieXRlc19wZXJfc2Vjb25kPiIgPiAvY2dycC9ibGtpby50aHJvdHRsZS5yZWFkX2Jwc19kZXZpY2UKKworLSBibGtpby50aHJvdHRsZS53cml0ZV9icHNfZGV2aWNlCisJLSBTcGVjaWZpZXMgdXBwZXIgbGltaXQgb24gV1JJVEUgcmF0ZSB0byB0aGUgZGV2aWNlLiBJTyByYXRlIGlzCisJICBzcGVjaWZpZWQgaW4gYnl0ZXMgcGVyIHNlY29uZC4gUnVsZXMgYXJlIHBlciBkZXZpY2UuIEZvbGxvd2luZyBpcworCSAgdGhlIGZvcm1hdC4KKworICBlY2hvICI8bWFqb3I+OjxtaW5vcj4gIDxyYXRlX2J5dGVzX3Blcl9zZWNvbmQ+IiA+IC9jZ3JwL2Jsa2lvLnRocm90dGxlLndyaXRlX2Jwc19kZXZpY2UKKworLSBibGtpby50aHJvdHRsZS5yZWFkX2lvcHNfZGV2aWNlCisJLSBTcGVjaWZpZXMgdXBwZXIgbGltaXQgb24gUkVBRCByYXRlIGZyb20gdGhlIGRldmljZS4gSU8gcmF0ZSBpcworCSAgc3BlY2lmaWVkIGluIElPIHBlciBzZWNvbmQuIFJ1bGVzIGFyZSBwZXIgZGV2aWNlLiBGb2xsb3dpbmcgaXMKKwkgIHRoZSBmb3JtYXQuCisKKyAgZWNobyAiPG1ham9yPjo8bWlub3I+ICA8cmF0ZV9pb19wZXJfc2Vjb25kPiIgPiAvY2dycC9ibGtpby50aHJvdHRsZS5yZWFkX2lvcHNfZGV2aWNlCisKKy0gYmxraW8udGhyb3R0bGUud3JpdGVfaW9wc19kZXZpY2UKKwktIFNwZWNpZmllcyB1cHBlciBsaW1pdCBvbiBXUklURSByYXRlIHRvIHRoZSBkZXZpY2UuIElPIHJhdGUgaXMKKwkgIHNwZWNpZmllZCBpbiBpbyBwZXIgc2Vjb25kLiBSdWxlcyBhcmUgcGVyIGRldmljZS4gRm9sbG93aW5nIGlzCisJICB0aGUgZm9ybWF0LgorCisgIGVjaG8gIjxtYWpvcj46PG1pbm9yPiAgPHJhdGVfaW9fcGVyX3NlY29uZD4iID4gL2NncnAvYmxraW8udGhyb3R0bGUud3JpdGVfaW9wc19kZXZpY2UKKworTm90ZTogSWYgYm90aCBCVyBhbmQgSU9QUyBydWxlcyBhcmUgc3BlY2lmaWVkIGZvciBhIGRldmljZSwgdGhlbiBJTyBpcworICAgICAgc3ViamVjdGVkIHRvIGJvdGggdGhlIGNvbnN0cmFpbnRzLgorCistIGJsa2lvLnRocm90dGxlLmlvX3NlcnZpY2VkCisJLSBOdW1iZXIgb2YgSU9zIChiaW8pIGlzc3VlZCB0byB0aGUgZGlzayBieSB0aGUgZ3JvdXAuIFRoZXNlCisJICBhcmUgZnVydGhlciBkaXZpZGVkIGJ5IHRoZSB0eXBlIG9mIG9wZXJhdGlvbiAtIHJlYWQgb3Igd3JpdGUsIHN5bmMKKwkgIG9yIGFzeW5jLiBGaXJzdCB0d28gZmllbGRzIHNwZWNpZnkgdGhlIG1ham9yIGFuZCBtaW5vciBudW1iZXIgb2YgdGhlCisJICBkZXZpY2UsIHRoaXJkIGZpZWxkIHNwZWNpZmllcyB0aGUgb3BlcmF0aW9uIHR5cGUgYW5kIHRoZSBmb3VydGggZmllbGQKKwkgIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIElPcy4KKworLSBibGtpby50aHJvdHRsZS5pb19zZXJ2aWNlX2J5dGVzCisJLSBOdW1iZXIgb2YgYnl0ZXMgdHJhbnNmZXJyZWQgdG8vZnJvbSB0aGUgZGlzayBieSB0aGUgZ3JvdXAuIFRoZXNlCisJICBhcmUgZnVydGhlciBkaXZpZGVkIGJ5IHRoZSB0eXBlIG9mIG9wZXJhdGlvbiAtIHJlYWQgb3Igd3JpdGUsIHN5bmMKKwkgIG9yIGFzeW5jLiBGaXJzdCB0d28gZmllbGRzIHNwZWNpZnkgdGhlIG1ham9yIGFuZCBtaW5vciBudW1iZXIgb2YgdGhlCisJICBkZXZpY2UsIHRoaXJkIGZpZWxkIHNwZWNpZmllcyB0aGUgb3BlcmF0aW9uIHR5cGUgYW5kIHRoZSBmb3VydGggZmllbGQKKwkgIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGJ5dGVzLgorCitDb21tb24gZmlsZXMgYW1vbmcgdmFyaW91cyBwb2xpY2llcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0gYmxraW8ucmVzZXRfc3RhdHMKKwktIFdyaXRpbmcgYW4gaW50IHRvIHRoaXMgZmlsZSB3aWxsIHJlc3VsdCBpbiByZXNldHRpbmcgYWxsIHRoZSBzdGF0cworCSAgZm9yIHRoYXQgY2dyb3VwLgorCitDRlEgc3lzZnMgdHVuYWJsZQorPT09PT09PT09PT09PT09PT0KKy9zeXMvYmxvY2svPGRpc2s+L3F1ZXVlL2lvc2NoZWQvc2xpY2VfaWRsZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitPbiBhIGZhc3RlciBoYXJkd2FyZSBDRlEgY2FuIGJlIHNsb3csIGVzcGVjaWFsbHkgd2l0aCBzZXF1ZW50aWFsIHdvcmtsb2FkLgorVGhpcyBoYXBwZW5zIGJlY2F1c2UgQ0ZRIGlkbGVzIG9uIGEgc2luZ2xlIHF1ZXVlIGFuZCBzaW5nbGUgcXVldWUgbWlnaHQgbm90Citkcml2ZSBkZWVwZXIgcmVxdWVzdCBxdWV1ZSBkZXB0aHMgdG8ga2VlcCB0aGUgc3RvcmFnZSBidXN5LiBJbiBzdWNoIHNjZW5hcmlvcworb25lIGNhbiB0cnkgc2V0dGluZyBzbGljZV9pZGxlPTAgYW5kIHRoYXQgd291bGQgc3dpdGNoIENGUSB0byBJT1BTCisoSU8gb3BlcmF0aW9ucyBwZXIgc2Vjb25kKSBtb2RlIG9uIE5DUSBzdXBwb3J0aW5nIGhhcmR3YXJlLgorCitUaGF0IG1lYW5zIENGUSB3aWxsIG5vdCBpZGxlIGJldHdlZW4gY2ZxIHF1ZXVlcyBvZiBhIGNmcSBncm91cCBhbmQgaGVuY2UgYmUKK2FibGUgdG8gZHJpdmVyIGhpZ2hlciBxdWV1ZSBkZXB0aCBhbmQgYWNoaWV2ZSBiZXR0ZXIgdGhyb3VnaHB1dC4gVGhhdCBhbHNvCittZWFucyB0aGF0IGNmcSBwcm92aWRlcyBmYWlybmVzcyBhbW9uZyBncm91cHMgaW4gdGVybXMgb2YgSU9QUyBhbmQgbm90IGluCit0ZXJtcyBvZiBkaXNrIHRpbWUuCisKKy9zeXMvYmxvY2svPGRpc2s+L3F1ZXVlL2lvc2NoZWQvZ3JvdXBfaWRsZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJZiBvbmUgZGlzYWJsZXMgaWRsaW5nIG9uIGluZGl2aWR1YWwgY2ZxIHF1ZXVlcyBhbmQgY2ZxIHNlcnZpY2UgdHJlZXMgYnkKK3NldHRpbmcgc2xpY2VfaWRsZT0wLCBncm91cF9pZGxlIGtpY2tzIGluLiBUaGF0IG1lYW5zIENGUSB3aWxsIHN0aWxsIGlkbGUKK29uIHRoZSBncm91cCBpbiBhbiBhdHRlbXB0IHRvIHByb3ZpZGUgZmFpcm5lc3MgYW1vbmcgZ3JvdXBzLgorCitCeSBkZWZhdWx0IGdyb3VwX2lkbGUgaXMgc2FtZSBhcyBzbGljZV9pZGxlIGFuZCBkb2VzIG5vdCBkbyBhbnl0aGluZyBpZgorc2xpY2VfaWRsZSBpcyBlbmFibGVkLgorCitPbmUgY2FuIGV4cGVyaWVuY2UgYW4gb3ZlcmFsbCB0aHJvdWdocHV0IGRyb3AgaWYgeW91IGhhdmUgY3JlYXRlZCBtdWx0aXBsZQorZ3JvdXBzIGFuZCBwdXQgYXBwbGljYXRpb25zIGluIHRoYXQgZ3JvdXAgd2hpY2ggYXJlIG5vdCBkcml2aW5nIGVub3VnaAorSU8gdG8ga2VlcCBkaXNrIGJ1c3kuIEluIHRoYXQgY2FzZSBzZXQgZ3JvdXBfaWRsZT0wLCBhbmQgQ0ZRIHdpbGwgbm90IGlkbGUKK29uIGluZGl2aWR1YWwgZ3JvdXBzIGFuZCB0aHJvdWdocHV0IHNob3VsZCBpbXByb3ZlLgorCitXcml0ZWJhY2sKKz09PT09PT09PQorCitQYWdlIGNhY2hlIGlzIGRpcnRpZWQgdGhyb3VnaCBidWZmZXJlZCB3cml0ZXMgYW5kIHNoYXJlZCBtbWFwcyBhbmQKK3dyaXR0ZW4gYXN5bmNocm9ub3VzbHkgdG8gdGhlIGJhY2tpbmcgZmlsZXN5c3RlbSBieSB0aGUgd3JpdGViYWNrCittZWNoYW5pc20uICBXcml0ZWJhY2sgc2l0cyBiZXR3ZWVuIHRoZSBtZW1vcnkgYW5kIElPIGRvbWFpbnMgYW5kCityZWd1bGF0ZXMgdGhlIHByb3BvcnRpb24gb2YgZGlydHkgbWVtb3J5IGJ5IGJhbGFuY2luZyBkaXJ0eWluZyBhbmQKK3dyaXRlIElPcy4KKworT24gdHJhZGl0aW9uYWwgY2dyb3VwIGhpZXJhcmNoaWVzLCByZWxhdGlvbnNoaXBzIGJldHdlZW4gZGlmZmVyZW50Citjb250cm9sbGVycyBjYW5ub3QgYmUgZXN0YWJsaXNoZWQgbWFraW5nIGl0IGltcG9zc2libGUgZm9yIHdyaXRlYmFjawordG8gb3BlcmF0ZSBhY2NvdW50aW5nIGZvciBjZ3JvdXAgcmVzb3VyY2UgcmVzdHJpY3Rpb25zIGFuZCBhbGwKK3dyaXRlYmFjayBJT3MgYXJlIGF0dHJpYnV0ZWQgdG8gdGhlIHJvb3QgY2dyb3VwLgorCitJZiBib3RoIHRoZSBibGtpbyBhbmQgbWVtb3J5IGNvbnRyb2xsZXJzIGFyZSB1c2VkIG9uIHRoZSB2MiBoaWVyYXJjaHkKK2FuZCB0aGUgZmlsZXN5c3RlbSBzdXBwb3J0cyBjZ3JvdXAgd3JpdGViYWNrLCB3cml0ZWJhY2sgb3BlcmF0aW9ucworY29ycmVjdGx5IGZvbGxvdyB0aGUgcmVzb3VyY2UgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgYm90aCBtZW1vcnkgYW5kCitibGtpbyBjb250cm9sbGVycy4KKworV3JpdGViYWNrIGV4YW1pbmVzIGJvdGggc3lzdGVtLXdpZGUgYW5kIHBlci1jZ3JvdXAgZGlydHkgbWVtb3J5IHN0YXR1cworYW5kIGVuZm9yY2VzIHRoZSBtb3JlIHJlc3RyaWN0aXZlIG9mIHRoZSB0d28uICBBbHNvLCB3cml0ZWJhY2sgY29udHJvbAorcGFyYW1ldGVycyB3aGljaCBhcmUgYWJzb2x1dGUgdmFsdWVzIC0gdm0uZGlydHlfYnl0ZXMgYW5kCit2bS5kaXJ0eV9iYWNrZ3JvdW5kX2J5dGVzIC0gYXJlIGRpc3RyaWJ1dGVkIGFjcm9zcyBjZ3JvdXBzIGFjY29yZGluZwordG8gdGhlaXIgY3VycmVudCB3cml0ZWJhY2sgYmFuZHdpZHRoLgorCitUaGVyZSdzIGEgcGVjdWxpYXJpdHkgc3RlbW1pbmcgZnJvbSB0aGUgZGlzY3JlcGFuY3kgaW4gb3duZXJzaGlwCitncmFudWxhcml0eSBiZXR3ZWVuIG1lbW9yeSBjb250cm9sbGVyIGFuZCB3cml0ZWJhY2suICBXaGlsZSBtZW1vcnkKK2NvbnRyb2xsZXIgdHJhY2tzIG93bmVyc2hpcCBwZXIgcGFnZSwgd3JpdGViYWNrIG9wZXJhdGVzIG9uIGlub2RlCitiYXNpcy4gIGNncm91cCB3cml0ZWJhY2sgYnJpZGdlcyB0aGUgZ2FwIGJ5IHRyYWNraW5nIG93bmVyc2hpcCBieQoraW5vZGUgYnV0IG1pZ3JhdGluZyBvd25lcnNoaXAgaWYgdG9vIG1hbnkgZm9yZWlnbiBwYWdlcywgcGFnZXMgd2hpY2gKK2Rvbid0IG1hdGNoIHRoZSBjdXJyZW50IGlub2RlIG93bmVyc2hpcCwgaGF2ZSBiZWVuIGVuY291bnRlcmVkIHdoaWxlCit3cml0aW5nIGJhY2sgdGhlIGlub2RlLgorCitUaGlzIGlzIGEgY29uc2Npb3VzIGRlc2lnbiBjaG9pY2UgYXMgd3JpdGViYWNrIG9wZXJhdGlvbnMgYXJlCitpbmhlcmVudGx5IHRpZWQgdG8gaW5vZGVzIG1ha2luZyBzdHJpY3RseSBmb2xsb3dpbmcgcGFnZSBvd25lcnNoaXAKK2NvbXBsaWNhdGVkIGFuZCBpbmVmZmljaWVudC4gIFRoZSBvbmx5IHVzZSBjYXNlIHdoaWNoIHN1ZmZlcnMgZnJvbQordGhpcyBjb21wcm9taXNlIGlzIG11bHRpcGxlIGNncm91cHMgY29uY3VycmVudGx5IGRpcnR5aW5nIGRpc2pvaW50CityZWdpb25zIG9mIHRoZSBzYW1lIGlub2RlLCB3aGljaCBpcyBhbiB1bmxpa2VseSB1c2UgY2FzZSBhbmQgZGVjaWRlZAordG8gYmUgdW5zdXBwb3J0ZWQuICBOb3RlIHRoYXQgYXMgbWVtb3J5IGNvbnRyb2xsZXIgYXNzaWducyBwYWdlCitvd25lcnNoaXAgb24gdGhlIGZpcnN0IHVzZSBhbmQgZG9lc24ndCB1cGRhdGUgaXQgdW50aWwgdGhlIHBhZ2UgaXMKK3JlbGVhc2VkLCBldmVuIGlmIGNncm91cCB3cml0ZWJhY2sgc3RyaWN0bHkgZm9sbG93cyBwYWdlIG93bmVyc2hpcCwKK211bHRpcGxlIGNncm91cHMgZGlydHlpbmcgb3ZlcmxhcHBpbmcgYXJlYXMgd291bGRuJ3Qgd29yayBhcyBleHBlY3RlZC4KK0luIGdlbmVyYWwsIHdyaXRlLXNoYXJpbmcgYW4gaW5vZGUgYWNyb3NzIG11bHRpcGxlIGNncm91cHMgaXMgbm90IHdlbGwKK3N1cHBvcnRlZC4KKworRmlsZXN5c3RlbSBzdXBwb3J0IGZvciBjZ3JvdXAgd3JpdGViYWNrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSBmaWxlc3lzdGVtIGNhbiBtYWtlIHdyaXRlYmFjayBJT3MgY2dyb3VwLWF3YXJlIGJ5IHVwZGF0aW5nCithZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMtPndyaXRlcGFnZVtzXSgpIHRvIGFubm90YXRlIGJpbydzIHVzaW5nIHRoZQorZm9sbG93aW5nIHR3byBmdW5jdGlvbnMuCisKKyogd2JjX2luaXRfYmlvKEB3YmMsIEBiaW8pCisKKyAgU2hvdWxkIGJlIGNhbGxlZCBmb3IgZWFjaCBiaW8gY2Fycnlpbmcgd3JpdGViYWNrIGRhdGEgYW5kIGFzc29jaWF0ZXMKKyAgdGhlIGJpbyB3aXRoIHRoZSBpbm9kZSdzIG93bmVyIGNncm91cC4gIENhbiBiZSBjYWxsZWQgYW55dGltZQorICBiZXR3ZWVuIGJpbyBhbGxvY2F0aW9uIGFuZCBzdWJtaXNzaW9uLgorCisqIHdiY19hY2NvdW50X2lvKEB3YmMsIEBwYWdlLCBAYnl0ZXMpCisKKyAgU2hvdWxkIGJlIGNhbGxlZCBmb3IgZWFjaCBkYXRhIHNlZ21lbnQgYmVpbmcgd3JpdHRlbiBvdXQuICBXaGlsZQorICB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgY2FyZSBleGFjdGx5IHdoZW4gaXQncyBjYWxsZWQgZHVyaW5nIHRoZQorICB3cml0ZWJhY2sgc2Vzc2lvbiwgaXQncyB0aGUgZWFzaWVzdCBhbmQgbW9zdCBuYXR1cmFsIHRvIGNhbGwgaXQgYXMKKyAgZGF0YSBzZWdtZW50cyBhcmUgYWRkZWQgdG8gYSBiaW8uCisKK1dpdGggd3JpdGViYWNrIGJpbydzIGFubm90YXRlZCwgY2dyb3VwIHN1cHBvcnQgY2FuIGJlIGVuYWJsZWQgcGVyCitzdXBlcl9ibG9jayBieSBzZXR0aW5nIE1TX0NHUk9VUFdCIGluIC0+c19mbGFncy4gIFRoaXMgYWxsb3dzIGZvcgorc2VsZWN0aXZlIGRpc2FibGluZyBvZiBjZ3JvdXAgd3JpdGViYWNrIHN1cHBvcnQgd2hpY2ggaXMgaGVscGZ1bCB3aGVuCitjZXJ0YWluIGZpbGVzeXN0ZW0gZmVhdHVyZXMsIGUuZy4gam91cm5hbGVkIGRhdGEgbW9kZSwgYXJlCitpbmNvbXBhdGlibGUuCisKK3diY19pbml0X2JpbygpIGJpbmRzIHRoZSBzcGVjaWZpZWQgYmlvIHRvIGl0cyBjZ3JvdXAuICBEZXBlbmRpbmcgb24KK3RoZSBjb25maWd1cmF0aW9uLCB0aGUgYmlvIG1heSBiZSBleGVjdXRlZCBhdCBhIGxvd2VyIHByaW9yaXR5IGFuZCBpZgordGhlIHdyaXRlYmFjayBzZXNzaW9uIGlzIGhvbGRpbmcgc2hhcmVkIHJlc291cmNlcywgZS5nLiBhIGpvdXJuYWwKK2VudHJ5LCBtYXkgbGVhZCB0byBwcmlvcml0eSBpbnZlcnNpb24uICBUaGVyZSBpcyBubyBvbmUgZWFzeSBzb2x1dGlvbgorZm9yIHRoZSBwcm9ibGVtLiAgRmlsZXN5c3RlbXMgY2FuIHRyeSB0byB3b3JrIGFyb3VuZCBzcGVjaWZpYyBwcm9ibGVtCitjYXNlcyBieSBza2lwcGluZyB3YmNfaW5pdF9iaW8oKSBvciB1c2luZyBiaW9fYXNzb2NpYXRlX2Jsa2NnKCkKK2RpcmVjdGx5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9jZ3JvdXBzL2Nncm91cHMudHh0IGIvRG9jdW1lbnRhdGlvbi9jZ3JvdXBzL2Nncm91cHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MjU2YWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Nncm91cHMvY2dyb3Vwcy50eHQKQEAgLTAsMCArMSw2ODIgQEAKKwkJCQlDR1JPVVBTCisJCQkJLS0tLS0tLQorCitXcml0dGVuIGJ5IFBhdWwgTWVuYWdlIDxtZW5hZ2VAZ29vZ2xlLmNvbT4gYmFzZWQgb24KK0RvY3VtZW50YXRpb24vY2dyb3Vwcy9jcHVzZXRzLnR4dAorCitPcmlnaW5hbCBjb3B5cmlnaHQgc3RhdGVtZW50cyBmcm9tIGNwdXNldHMudHh0OgorUG9ydGlvbnMgQ29weXJpZ2h0IChDKSAyMDA0IEJVTEwgU0EuCitQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMDQtMjAwNiBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCitNb2RpZmllZCBieSBQYXVsIEphY2tzb24gPHBqQHNnaS5jb20+CitNb2RpZmllZCBieSBDaHJpc3RvcGggTGFtZXRlciA8Y2xhbWV0ZXJAc2dpLmNvbT4KKworQ09OVEVOVFM6Cis9PT09PT09PT0KKworMS4gQ29udHJvbCBHcm91cHMKKyAgMS4xIFdoYXQgYXJlIGNncm91cHMgPworICAxLjIgV2h5IGFyZSBjZ3JvdXBzIG5lZWRlZCA/CisgIDEuMyBIb3cgYXJlIGNncm91cHMgaW1wbGVtZW50ZWQgPworICAxLjQgV2hhdCBkb2VzIG5vdGlmeV9vbl9yZWxlYXNlIGRvID8KKyAgMS41IFdoYXQgZG9lcyBjbG9uZV9jaGlsZHJlbiBkbyA/CisgIDEuNiBIb3cgZG8gSSB1c2UgY2dyb3VwcyA/CisyLiBVc2FnZSBFeGFtcGxlcyBhbmQgU3ludGF4CisgIDIuMSBCYXNpYyBVc2FnZQorICAyLjIgQXR0YWNoaW5nIHByb2Nlc3NlcworICAyLjMgTW91bnRpbmcgaGllcmFyY2hpZXMgYnkgbmFtZQorMy4gS2VybmVsIEFQSQorICAzLjEgT3ZlcnZpZXcKKyAgMy4yIFN5bmNocm9uaXphdGlvbgorICAzLjMgU3Vic3lzdGVtIEFQSQorNC4gRXh0ZW5kZWQgYXR0cmlidXRlcyB1c2FnZQorNS4gUXVlc3Rpb25zCisKKzEuIENvbnRyb2wgR3JvdXBzCis9PT09PT09PT09PT09PT09PQorCisxLjEgV2hhdCBhcmUgY2dyb3VwcyA/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvbnRyb2wgR3JvdXBzIHByb3ZpZGUgYSBtZWNoYW5pc20gZm9yIGFnZ3JlZ2F0aW5nL3BhcnRpdGlvbmluZyBzZXRzIG9mCit0YXNrcywgYW5kIGFsbCB0aGVpciBmdXR1cmUgY2hpbGRyZW4sIGludG8gaGllcmFyY2hpY2FsIGdyb3VwcyB3aXRoCitzcGVjaWFsaXplZCBiZWhhdmlvdXIuCisKK0RlZmluaXRpb25zOgorCitBICpjZ3JvdXAqIGFzc29jaWF0ZXMgYSBzZXQgb2YgdGFza3Mgd2l0aCBhIHNldCBvZiBwYXJhbWV0ZXJzIGZvciBvbmUKK29yIG1vcmUgc3Vic3lzdGVtcy4KKworQSAqc3Vic3lzdGVtKiBpcyBhIG1vZHVsZSB0aGF0IG1ha2VzIHVzZSBvZiB0aGUgdGFzayBncm91cGluZworZmFjaWxpdGllcyBwcm92aWRlZCBieSBjZ3JvdXBzIHRvIHRyZWF0IGdyb3VwcyBvZiB0YXNrcyBpbgorcGFydGljdWxhciB3YXlzLiBBIHN1YnN5c3RlbSBpcyB0eXBpY2FsbHkgYSAicmVzb3VyY2UgY29udHJvbGxlciIgdGhhdAorc2NoZWR1bGVzIGEgcmVzb3VyY2Ugb3IgYXBwbGllcyBwZXItY2dyb3VwIGxpbWl0cywgYnV0IGl0IG1heSBiZQorYW55dGhpbmcgdGhhdCB3YW50cyB0byBhY3Qgb24gYSBncm91cCBvZiBwcm9jZXNzZXMsIGUuZy4gYQordmlydHVhbGl6YXRpb24gc3Vic3lzdGVtLgorCitBICpoaWVyYXJjaHkqIGlzIGEgc2V0IG9mIGNncm91cHMgYXJyYW5nZWQgaW4gYSB0cmVlLCBzdWNoIHRoYXQKK2V2ZXJ5IHRhc2sgaW4gdGhlIHN5c3RlbSBpcyBpbiBleGFjdGx5IG9uZSBvZiB0aGUgY2dyb3VwcyBpbiB0aGUKK2hpZXJhcmNoeSwgYW5kIGEgc2V0IG9mIHN1YnN5c3RlbXM7IGVhY2ggc3Vic3lzdGVtIGhhcyBzeXN0ZW0tc3BlY2lmaWMKK3N0YXRlIGF0dGFjaGVkIHRvIGVhY2ggY2dyb3VwIGluIHRoZSBoaWVyYXJjaHkuICBFYWNoIGhpZXJhcmNoeSBoYXMKK2FuIGluc3RhbmNlIG9mIHRoZSBjZ3JvdXAgdmlydHVhbCBmaWxlc3lzdGVtIGFzc29jaWF0ZWQgd2l0aCBpdC4KKworQXQgYW55IG9uZSB0aW1lIHRoZXJlIG1heSBiZSBtdWx0aXBsZSBhY3RpdmUgaGllcmFyY2hpZXMgb2YgdGFzaworY2dyb3Vwcy4gRWFjaCBoaWVyYXJjaHkgaXMgYSBwYXJ0aXRpb24gb2YgYWxsIHRhc2tzIGluIHRoZSBzeXN0ZW0uCisKK1VzZXItbGV2ZWwgY29kZSBtYXkgY3JlYXRlIGFuZCBkZXN0cm95IGNncm91cHMgYnkgbmFtZSBpbiBhbgoraW5zdGFuY2Ugb2YgdGhlIGNncm91cCB2aXJ0dWFsIGZpbGUgc3lzdGVtLCBzcGVjaWZ5IGFuZCBxdWVyeSB0bword2hpY2ggY2dyb3VwIGEgdGFzayBpcyBhc3NpZ25lZCwgYW5kIGxpc3QgdGhlIHRhc2sgUElEcyBhc3NpZ25lZCB0bworYSBjZ3JvdXAuIFRob3NlIGNyZWF0aW9ucyBhbmQgYXNzaWdubWVudHMgb25seSBhZmZlY3QgdGhlIGhpZXJhcmNoeQorYXNzb2NpYXRlZCB3aXRoIHRoYXQgaW5zdGFuY2Ugb2YgdGhlIGNncm91cCBmaWxlIHN5c3RlbS4KKworT24gdGhlaXIgb3duLCB0aGUgb25seSB1c2UgZm9yIGNncm91cHMgaXMgZm9yIHNpbXBsZSBqb2IKK3RyYWNraW5nLiBUaGUgaW50ZW50aW9uIGlzIHRoYXQgb3RoZXIgc3Vic3lzdGVtcyBob29rIGludG8gdGhlIGdlbmVyaWMKK2Nncm91cCBzdXBwb3J0IHRvIHByb3ZpZGUgbmV3IGF0dHJpYnV0ZXMgZm9yIGNncm91cHMsIHN1Y2ggYXMKK2FjY291bnRpbmcvbGltaXRpbmcgdGhlIHJlc291cmNlcyB3aGljaCBwcm9jZXNzZXMgaW4gYSBjZ3JvdXAgY2FuCithY2Nlc3MuIEZvciBleGFtcGxlLCBjcHVzZXRzIChzZWUgRG9jdW1lbnRhdGlvbi9jZ3JvdXBzL2NwdXNldHMudHh0KSBhbGxvdworeW91IHRvIGFzc29jaWF0ZSBhIHNldCBvZiBDUFVzIGFuZCBhIHNldCBvZiBtZW1vcnkgbm9kZXMgd2l0aCB0aGUKK3Rhc2tzIGluIGVhY2ggY2dyb3VwLgorCisxLjIgV2h5IGFyZSBjZ3JvdXBzIG5lZWRlZCA/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXJlIGFyZSBtdWx0aXBsZSBlZmZvcnRzIHRvIHByb3ZpZGUgcHJvY2VzcyBhZ2dyZWdhdGlvbnMgaW4gdGhlCitMaW51eCBrZXJuZWwsIG1haW5seSBmb3IgcmVzb3VyY2UtdHJhY2tpbmcgcHVycG9zZXMuIFN1Y2ggZWZmb3J0cworaW5jbHVkZSBjcHVzZXRzLCBDS1JNL1Jlc0dyb3VwcywgVXNlckJlYW5Db3VudGVycywgYW5kIHZpcnR1YWwgc2VydmVyCituYW1lc3BhY2VzLiBUaGVzZSBhbGwgcmVxdWlyZSB0aGUgYmFzaWMgbm90aW9uIG9mIGEKK2dyb3VwaW5nL3BhcnRpdGlvbmluZyBvZiBwcm9jZXNzZXMsIHdpdGggbmV3bHkgZm9ya2VkIHByb2Nlc3NlcyBlbmRpbmcKK3VwIGluIHRoZSBzYW1lIGdyb3VwIChjZ3JvdXApIGFzIHRoZWlyIHBhcmVudCBwcm9jZXNzLgorCitUaGUga2VybmVsIGNncm91cCBwYXRjaCBwcm92aWRlcyB0aGUgbWluaW11bSBlc3NlbnRpYWwga2VybmVsCittZWNoYW5pc21zIHJlcXVpcmVkIHRvIGVmZmljaWVudGx5IGltcGxlbWVudCBzdWNoIGdyb3Vwcy4gSXQgaGFzCittaW5pbWFsIGltcGFjdCBvbiB0aGUgc3lzdGVtIGZhc3QgcGF0aHMsIGFuZCBwcm92aWRlcyBob29rcyBmb3IKK3NwZWNpZmljIHN1YnN5c3RlbXMgc3VjaCBhcyBjcHVzZXRzIHRvIHByb3ZpZGUgYWRkaXRpb25hbCBiZWhhdmlvdXIgYXMKK2Rlc2lyZWQuCisKK011bHRpcGxlIGhpZXJhcmNoeSBzdXBwb3J0IGlzIHByb3ZpZGVkIHRvIGFsbG93IGZvciBzaXR1YXRpb25zIHdoZXJlCit0aGUgZGl2aXNpb24gb2YgdGFza3MgaW50byBjZ3JvdXBzIGlzIGRpc3RpbmN0bHkgZGlmZmVyZW50IGZvcgorZGlmZmVyZW50IHN1YnN5c3RlbXMgLSBoYXZpbmcgcGFyYWxsZWwgaGllcmFyY2hpZXMgYWxsb3dzIGVhY2gKK2hpZXJhcmNoeSB0byBiZSBhIG5hdHVyYWwgZGl2aXNpb24gb2YgdGFza3MsIHdpdGhvdXQgaGF2aW5nIHRvIGhhbmRsZQorY29tcGxleCBjb21iaW5hdGlvbnMgb2YgdGFza3MgdGhhdCB3b3VsZCBiZSBwcmVzZW50IGlmIHNldmVyYWwKK3VucmVsYXRlZCBzdWJzeXN0ZW1zIG5lZWRlZCB0byBiZSBmb3JjZWQgaW50byB0aGUgc2FtZSB0cmVlIG9mCitjZ3JvdXBzLgorCitBdCBvbmUgZXh0cmVtZSwgZWFjaCByZXNvdXJjZSBjb250cm9sbGVyIG9yIHN1YnN5c3RlbSBjb3VsZCBiZSBpbiBhCitzZXBhcmF0ZSBoaWVyYXJjaHk7IGF0IHRoZSBvdGhlciBleHRyZW1lLCBhbGwgc3Vic3lzdGVtcword291bGQgYmUgYXR0YWNoZWQgdG8gdGhlIHNhbWUgaGllcmFyY2h5LgorCitBcyBhbiBleGFtcGxlIG9mIGEgc2NlbmFyaW8gKG9yaWdpbmFsbHkgcHJvcG9zZWQgYnkgdmF0c2FAaW4uaWJtLmNvbSkKK3RoYXQgY2FuIGJlbmVmaXQgZnJvbSBtdWx0aXBsZSBoaWVyYXJjaGllcywgY29uc2lkZXIgYSBsYXJnZQordW5pdmVyc2l0eSBzZXJ2ZXIgd2l0aCB2YXJpb3VzIHVzZXJzIC0gc3R1ZGVudHMsIHByb2Zlc3NvcnMsIHN5c3RlbQordGFza3MgZXRjLiBUaGUgcmVzb3VyY2UgcGxhbm5pbmcgZm9yIHRoaXMgc2VydmVyIGNvdWxkIGJlIGFsb25nIHRoZQorZm9sbG93aW5nIGxpbmVzOgorCisgICAgICAgQ1BVIDogICAgICAgICAgIlRvcCBjcHVzZXQiCisgICAgICAgICAgICAgICAgICAgICAgIC8gICAgICAgXAorICAgICAgICAgICAgICAgQ1BVU2V0MSAgICAgICAgIENQVVNldDIKKyAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAoUHJvZmVzc29ycykgICAgKFN0dWRlbnRzKQorCisgICAgICAgICAgICAgICBJbiBhZGRpdGlvbiAoc3lzdGVtIHRhc2tzKSBhcmUgYXR0YWNoZWQgdG8gdG9wY3B1c2V0IChzbworICAgICAgICAgICAgICAgdGhhdCB0aGV5IGNhbiBydW4gYW55d2hlcmUpIHdpdGggYSBsaW1pdCBvZiAyMCUKKworICAgICAgIE1lbW9yeSA6IFByb2Zlc3NvcnMgKDUwJSksIFN0dWRlbnRzICgzMCUpLCBzeXN0ZW0gKDIwJSkKKworICAgICAgIERpc2sgOiBQcm9mZXNzb3JzICg1MCUpLCBTdHVkZW50cyAoMzAlKSwgc3lzdGVtICgyMCUpCisKKyAgICAgICBOZXR3b3JrIDogV1dXIGJyb3dzaW5nICgyMCUpLCBOZXR3b3JrIEZpbGUgU3lzdGVtICg2MCUpLCBvdGhlcnMgKDIwJSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIFwKKyAgICAgICAgICAgICAgIFByb2Zlc3NvcnMgKDE1JSkgIHN0dWRlbnRzICg1JSkKKworQnJvd3NlcnMgbGlrZSBGaXJlZm94L0x5bnggZ28gaW50byB0aGUgV1dXIG5ldHdvcmsgY2xhc3MsIHdoaWxlIChrKW5mc2QgZ29lcworaW50byB0aGUgTkZTIG5ldHdvcmsgY2xhc3MuCisKK0F0IHRoZSBzYW1lIHRpbWUgRmlyZWZveC9MeW54IHdpbGwgc2hhcmUgYW4gYXBwcm9wcmlhdGUgQ1BVL01lbW9yeSBjbGFzcworZGVwZW5kaW5nIG9uIHdobyBsYXVuY2hlZCBpdCAocHJvZi9zdHVkZW50KS4KKworV2l0aCB0aGUgYWJpbGl0eSB0byBjbGFzc2lmeSB0YXNrcyBkaWZmZXJlbnRseSBmb3IgZGlmZmVyZW50IHJlc291cmNlcworKGJ5IHB1dHRpbmcgdGhvc2UgcmVzb3VyY2Ugc3Vic3lzdGVtcyBpbiBkaWZmZXJlbnQgaGllcmFyY2hpZXMpLAordGhlIGFkbWluIGNhbiBlYXNpbHkgc2V0IHVwIGEgc2NyaXB0IHdoaWNoIHJlY2VpdmVzIGV4ZWMgbm90aWZpY2F0aW9ucworYW5kIGRlcGVuZGluZyBvbiB3aG8gaXMgbGF1bmNoaW5nIHRoZSBicm93c2VyIGhlIGNhbgorCisgICAgIyBlY2hvIGJyb3dzZXJfcGlkID4gL3N5cy9mcy9jZ3JvdXAvPHJlc3R5cGU+Lzx1c2VyY2xhc3M+L3Rhc2tzCisKK1dpdGggb25seSBhIHNpbmdsZSBoaWVyYXJjaHksIGhlIG5vdyB3b3VsZCBwb3RlbnRpYWxseSBoYXZlIHRvIGNyZWF0ZQorYSBzZXBhcmF0ZSBjZ3JvdXAgZm9yIGV2ZXJ5IGJyb3dzZXIgbGF1bmNoZWQgYW5kIGFzc29jaWF0ZSBpdCB3aXRoCithcHByb3ByaWF0ZSBuZXR3b3JrIGFuZCBvdGhlciByZXNvdXJjZSBjbGFzcy4gIFRoaXMgbWF5IGxlYWQgdG8KK3Byb2xpZmVyYXRpb24gb2Ygc3VjaCBjZ3JvdXBzLgorCitBbHNvIGxldCdzIHNheSB0aGF0IHRoZSBhZG1pbmlzdHJhdG9yIHdvdWxkIGxpa2UgdG8gZ2l2ZSBlbmhhbmNlZCBuZXR3b3JrCithY2Nlc3MgdGVtcG9yYXJpbHkgdG8gYSBzdHVkZW50J3MgYnJvd3NlciAoc2luY2UgaXQgaXMgbmlnaHQgYW5kIHRoZSB1c2VyCit3YW50cyB0byBkbyBvbmxpbmUgZ2FtaW5nIDopKSAgT1IgZ2l2ZSBvbmUgb2YgdGhlIHN0dWRlbnQncyBzaW11bGF0aW9uCithcHBzIGVuaGFuY2VkIENQVSBwb3dlci4KKworV2l0aCBhYmlsaXR5IHRvIHdyaXRlIFBJRHMgZGlyZWN0bHkgdG8gcmVzb3VyY2UgY2xhc3NlcywgaXQncyBqdXN0IGEKK21hdHRlciBvZjoKKworICAgICAgICMgZWNobyBwaWQgPiAvc3lzL2ZzL2Nncm91cC9uZXR3b3JrLzxuZXdfY2xhc3M+L3Rhc2tzCisgICAgICAgKGFmdGVyIHNvbWUgdGltZSkKKyAgICAgICAjIGVjaG8gcGlkID4gL3N5cy9mcy9jZ3JvdXAvbmV0d29yay88b3JpZ19jbGFzcz4vdGFza3MKKworV2l0aG91dCB0aGlzIGFiaWxpdHksIHRoZSBhZG1pbmlzdHJhdG9yIHdvdWxkIGhhdmUgdG8gc3BsaXQgdGhlIGNncm91cCBpbnRvCittdWx0aXBsZSBzZXBhcmF0ZSBvbmVzIGFuZCB0aGVuIGFzc29jaWF0ZSB0aGUgbmV3IGNncm91cHMgd2l0aCB0aGUKK25ldyByZXNvdXJjZSBjbGFzc2VzLgorCisKKworMS4zIEhvdyBhcmUgY2dyb3VwcyBpbXBsZW1lbnRlZCA/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29udHJvbCBHcm91cHMgZXh0ZW5kcyB0aGUga2VybmVsIGFzIGZvbGxvd3M6CisKKyAtIEVhY2ggdGFzayBpbiB0aGUgc3lzdGVtIGhhcyBhIHJlZmVyZW5jZS1jb3VudGVkIHBvaW50ZXIgdG8gYQorICAgY3NzX3NldC4KKworIC0gQSBjc3Nfc2V0IGNvbnRhaW5zIGEgc2V0IG9mIHJlZmVyZW5jZS1jb3VudGVkIHBvaW50ZXJzIHRvCisgICBjZ3JvdXBfc3Vic3lzX3N0YXRlIG9iamVjdHMsIG9uZSBmb3IgZWFjaCBjZ3JvdXAgc3Vic3lzdGVtCisgICByZWdpc3RlcmVkIGluIHRoZSBzeXN0ZW0uIFRoZXJlIGlzIG5vIGRpcmVjdCBsaW5rIGZyb20gYSB0YXNrIHRvCisgICB0aGUgY2dyb3VwIG9mIHdoaWNoIGl0J3MgYSBtZW1iZXIgaW4gZWFjaCBoaWVyYXJjaHksIGJ1dCB0aGlzCisgICBjYW4gYmUgZGV0ZXJtaW5lZCBieSBmb2xsb3dpbmcgcG9pbnRlcnMgdGhyb3VnaCB0aGUKKyAgIGNncm91cF9zdWJzeXNfc3RhdGUgb2JqZWN0cy4gVGhpcyBpcyBiZWNhdXNlIGFjY2Vzc2luZyB0aGUKKyAgIHN1YnN5c3RlbSBzdGF0ZSBpcyBzb21ldGhpbmcgdGhhdCdzIGV4cGVjdGVkIHRvIGhhcHBlbiBmcmVxdWVudGx5CisgICBhbmQgaW4gcGVyZm9ybWFuY2UtY3JpdGljYWwgY29kZSwgd2hlcmVhcyBvcGVyYXRpb25zIHRoYXQgcmVxdWlyZSBhCisgICB0YXNrJ3MgYWN0dWFsIGNncm91cCBhc3NpZ25tZW50cyAoaW4gcGFydGljdWxhciwgbW92aW5nIGJldHdlZW4KKyAgIGNncm91cHMpIGFyZSBsZXNzIGNvbW1vbi4gQSBsaW5rZWQgbGlzdCBydW5zIHRocm91Z2ggdGhlIGNnX2xpc3QKKyAgIGZpZWxkIG9mIGVhY2ggdGFza19zdHJ1Y3QgdXNpbmcgdGhlIGNzc19zZXQsIGFuY2hvcmVkIGF0CisgICBjc3Nfc2V0LT50YXNrcy4KKworIC0gQSBjZ3JvdXAgaGllcmFyY2h5IGZpbGVzeXN0ZW0gY2FuIGJlIG1vdW50ZWQgZm9yIGJyb3dzaW5nIGFuZAorICAgbWFuaXB1bGF0aW9uIGZyb20gdXNlciBzcGFjZS4KKworIC0gWW91IGNhbiBsaXN0IGFsbCB0aGUgdGFza3MgKGJ5IFBJRCkgYXR0YWNoZWQgdG8gYW55IGNncm91cC4KKworVGhlIGltcGxlbWVudGF0aW9uIG9mIGNncm91cHMgcmVxdWlyZXMgYSBmZXcsIHNpbXBsZSBob29rcworaW50byB0aGUgcmVzdCBvZiB0aGUga2VybmVsLCBub25lIGluIHBlcmZvcm1hbmNlLWNyaXRpY2FsIHBhdGhzOgorCisgLSBpbiBpbml0L21haW4uYywgdG8gaW5pdGlhbGl6ZSB0aGUgcm9vdCBjZ3JvdXBzIGFuZCBpbml0aWFsCisgICBjc3Nfc2V0IGF0IHN5c3RlbSBib290LgorCisgLSBpbiBmb3JrIGFuZCBleGl0LCB0byBhdHRhY2ggYW5kIGRldGFjaCBhIHRhc2sgZnJvbSBpdHMgY3NzX3NldC4KKworSW4gYWRkaXRpb24sIGEgbmV3IGZpbGUgc3lzdGVtIG9mIHR5cGUgImNncm91cCIgbWF5IGJlIG1vdW50ZWQsIHRvCitlbmFibGUgYnJvd3NpbmcgYW5kIG1vZGlmeWluZyB0aGUgY2dyb3VwcyBwcmVzZW50bHkga25vd24gdG8gdGhlCitrZXJuZWwuICBXaGVuIG1vdW50aW5nIGEgY2dyb3VwIGhpZXJhcmNoeSwgeW91IG1heSBzcGVjaWZ5IGEKK2NvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHN1YnN5c3RlbXMgdG8gbW91bnQgYXMgdGhlIGZpbGVzeXN0ZW0gbW91bnQKK29wdGlvbnMuICBCeSBkZWZhdWx0LCBtb3VudGluZyB0aGUgY2dyb3VwIGZpbGVzeXN0ZW0gYXR0ZW1wdHMgdG8KK21vdW50IGEgaGllcmFyY2h5IGNvbnRhaW5pbmcgYWxsIHJlZ2lzdGVyZWQgc3Vic3lzdGVtcy4KKworSWYgYW4gYWN0aXZlIGhpZXJhcmNoeSB3aXRoIGV4YWN0bHkgdGhlIHNhbWUgc2V0IG9mIHN1YnN5c3RlbXMgYWxyZWFkeQorZXhpc3RzLCBpdCB3aWxsIGJlIHJldXNlZCBmb3IgdGhlIG5ldyBtb3VudC4gSWYgbm8gZXhpc3RpbmcgaGllcmFyY2h5CittYXRjaGVzLCBhbmQgYW55IG9mIHRoZSByZXF1ZXN0ZWQgc3Vic3lzdGVtcyBhcmUgaW4gdXNlIGluIGFuIGV4aXN0aW5nCitoaWVyYXJjaHksIHRoZSBtb3VudCB3aWxsIGZhaWwgd2l0aCAtRUJVU1kuIE90aGVyd2lzZSwgYSBuZXcgaGllcmFyY2h5CitpcyBhY3RpdmF0ZWQsIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVxdWVzdGVkIHN1YnN5c3RlbXMuCisKK0l0J3Mgbm90IGN1cnJlbnRseSBwb3NzaWJsZSB0byBiaW5kIGEgbmV3IHN1YnN5c3RlbSB0byBhbiBhY3RpdmUKK2Nncm91cCBoaWVyYXJjaHksIG9yIHRvIHVuYmluZCBhIHN1YnN5c3RlbSBmcm9tIGFuIGFjdGl2ZSBjZ3JvdXAKK2hpZXJhcmNoeS4gVGhpcyBtYXkgYmUgcG9zc2libGUgaW4gZnV0dXJlLCBidXQgaXMgZnJhdWdodCB3aXRoIG5hc3R5CitlcnJvci1yZWNvdmVyeSBpc3N1ZXMuCisKK1doZW4gYSBjZ3JvdXAgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQsIGlmIHRoZXJlIGFyZSBhbnkKK2NoaWxkIGNncm91cHMgY3JlYXRlZCBiZWxvdyB0aGUgdG9wLWxldmVsIGNncm91cCwgdGhhdCBoaWVyYXJjaHkKK3dpbGwgcmVtYWluIGFjdGl2ZSBldmVuIHRob3VnaCB1bm1vdW50ZWQ7IGlmIHRoZXJlIGFyZSBubworY2hpbGQgY2dyb3VwcyB0aGVuIHRoZSBoaWVyYXJjaHkgd2lsbCBiZSBkZWFjdGl2YXRlZC4KKworTm8gbmV3IHN5c3RlbSBjYWxscyBhcmUgYWRkZWQgZm9yIGNncm91cHMgLSBhbGwgc3VwcG9ydCBmb3IKK3F1ZXJ5aW5nIGFuZCBtb2RpZnlpbmcgY2dyb3VwcyBpcyB2aWEgdGhpcyBjZ3JvdXAgZmlsZSBzeXN0ZW0uCisKK0VhY2ggdGFzayB1bmRlciAvcHJvYyBoYXMgYW4gYWRkZWQgZmlsZSBuYW1lZCAnY2dyb3VwJyBkaXNwbGF5aW5nLAorZm9yIGVhY2ggYWN0aXZlIGhpZXJhcmNoeSwgdGhlIHN1YnN5c3RlbSBuYW1lcyBhbmQgdGhlIGNncm91cCBuYW1lCithcyB0aGUgcGF0aCByZWxhdGl2ZSB0byB0aGUgcm9vdCBvZiB0aGUgY2dyb3VwIGZpbGUgc3lzdGVtLgorCitFYWNoIGNncm91cCBpcyByZXByZXNlbnRlZCBieSBhIGRpcmVjdG9yeSBpbiB0aGUgY2dyb3VwIGZpbGUgc3lzdGVtCitjb250YWluaW5nIHRoZSBmb2xsb3dpbmcgZmlsZXMgZGVzY3JpYmluZyB0aGF0IGNncm91cDoKKworIC0gdGFza3M6IGxpc3Qgb2YgdGFza3MgKGJ5IFBJRCkgYXR0YWNoZWQgdG8gdGhhdCBjZ3JvdXAuICBUaGlzIGxpc3QKKyAgIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIHNvcnRlZC4gIFdyaXRpbmcgYSB0aHJlYWQgSUQgaW50byB0aGlzIGZpbGUKKyAgIG1vdmVzIHRoZSB0aHJlYWQgaW50byB0aGlzIGNncm91cC4KKyAtIGNncm91cC5wcm9jczogbGlzdCBvZiB0aHJlYWQgZ3JvdXAgSURzIGluIHRoZSBjZ3JvdXAuICBUaGlzIGxpc3QgaXMKKyAgIG5vdCBndWFyYW50ZWVkIHRvIGJlIHNvcnRlZCBvciBmcmVlIG9mIGR1cGxpY2F0ZSBUR0lEcywgYW5kIHVzZXJzcGFjZQorICAgc2hvdWxkIHNvcnQvdW5pcXVpZnkgdGhlIGxpc3QgaWYgdGhpcyBwcm9wZXJ0eSBpcyByZXF1aXJlZC4KKyAgIFdyaXRpbmcgYSB0aHJlYWQgZ3JvdXAgSUQgaW50byB0aGlzIGZpbGUgbW92ZXMgYWxsIHRocmVhZHMgaW4gdGhhdAorICAgZ3JvdXAgaW50byB0aGlzIGNncm91cC4KKyAtIG5vdGlmeV9vbl9yZWxlYXNlIGZsYWc6IHJ1biB0aGUgcmVsZWFzZSBhZ2VudCBvbiBleGl0PworIC0gcmVsZWFzZV9hZ2VudDogdGhlIHBhdGggdG8gdXNlIGZvciByZWxlYXNlIG5vdGlmaWNhdGlvbnMgKHRoaXMgZmlsZQorICAgZXhpc3RzIGluIHRoZSB0b3AgY2dyb3VwIG9ubHkpCisKK090aGVyIHN1YnN5c3RlbXMgc3VjaCBhcyBjcHVzZXRzIG1heSBhZGQgYWRkaXRpb25hbCBmaWxlcyBpbiBlYWNoCitjZ3JvdXAgZGlyLgorCitOZXcgY2dyb3VwcyBhcmUgY3JlYXRlZCB1c2luZyB0aGUgbWtkaXIgc3lzdGVtIGNhbGwgb3Igc2hlbGwKK2NvbW1hbmQuICBUaGUgcHJvcGVydGllcyBvZiBhIGNncm91cCwgc3VjaCBhcyBpdHMgZmxhZ3MsIGFyZQorbW9kaWZpZWQgYnkgd3JpdGluZyB0byB0aGUgYXBwcm9wcmlhdGUgZmlsZSBpbiB0aGF0IGNncm91cHMKK2RpcmVjdG9yeSwgYXMgbGlzdGVkIGFib3ZlLgorCitUaGUgbmFtZWQgaGllcmFyY2hpY2FsIHN0cnVjdHVyZSBvZiBuZXN0ZWQgY2dyb3VwcyBhbGxvd3MgcGFydGl0aW9uaW5nCithIGxhcmdlIHN5c3RlbSBpbnRvIG5lc3RlZCwgZHluYW1pY2FsbHkgY2hhbmdlYWJsZSwgInNvZnQtcGFydGl0aW9ucyIuCisKK1RoZSBhdHRhY2htZW50IG9mIGVhY2ggdGFzaywgYXV0b21hdGljYWxseSBpbmhlcml0ZWQgYXQgZm9yayBieSBhbnkKK2NoaWxkcmVuIG9mIHRoYXQgdGFzaywgdG8gYSBjZ3JvdXAgYWxsb3dzIG9yZ2FuaXppbmcgdGhlIHdvcmsgbG9hZAorb24gYSBzeXN0ZW0gaW50byByZWxhdGVkIHNldHMgb2YgdGFza3MuICBBIHRhc2sgbWF5IGJlIHJlLWF0dGFjaGVkIHRvCithbnkgb3RoZXIgY2dyb3VwLCBpZiBhbGxvd2VkIGJ5IHRoZSBwZXJtaXNzaW9ucyBvbiB0aGUgbmVjZXNzYXJ5CitjZ3JvdXAgZmlsZSBzeXN0ZW0gZGlyZWN0b3JpZXMuCisKK1doZW4gYSB0YXNrIGlzIG1vdmVkIGZyb20gb25lIGNncm91cCB0byBhbm90aGVyLCBpdCBnZXRzIGEgbmV3Citjc3Nfc2V0IHBvaW50ZXIgLSBpZiB0aGVyZSdzIGFuIGFscmVhZHkgZXhpc3RpbmcgY3NzX3NldCB3aXRoIHRoZQorZGVzaXJlZCBjb2xsZWN0aW9uIG9mIGNncm91cHMgdGhlbiB0aGF0IGdyb3VwIGlzIHJldXNlZCwgb3RoZXJ3aXNlIGEgbmV3Citjc3Nfc2V0IGlzIGFsbG9jYXRlZC4gVGhlIGFwcHJvcHJpYXRlIGV4aXN0aW5nIGNzc19zZXQgaXMgbG9jYXRlZCBieQorbG9va2luZyBpbnRvIGEgaGFzaCB0YWJsZS4KKworVG8gYWxsb3cgYWNjZXNzIGZyb20gYSBjZ3JvdXAgdG8gdGhlIGNzc19zZXRzIChhbmQgaGVuY2UgdGFza3MpCit0aGF0IGNvbXByaXNlIGl0LCBhIHNldCBvZiBjZ19jZ3JvdXBfbGluayBvYmplY3RzIGZvcm0gYSBsYXR0aWNlOworZWFjaCBjZ19jZ3JvdXBfbGluayBpcyBsaW5rZWQgaW50byBhIGxpc3Qgb2YgY2dfY2dyb3VwX2xpbmtzIGZvcgorYSBzaW5nbGUgY2dyb3VwIG9uIGl0cyBjZ3JwX2xpbmtfbGlzdCBmaWVsZCwgYW5kIGEgbGlzdCBvZgorY2dfY2dyb3VwX2xpbmtzIGZvciBhIHNpbmdsZSBjc3Nfc2V0IG9uIGl0cyBjZ19saW5rX2xpc3QuCisKK1RodXMgdGhlIHNldCBvZiB0YXNrcyBpbiBhIGNncm91cCBjYW4gYmUgbGlzdGVkIGJ5IGl0ZXJhdGluZyBvdmVyCitlYWNoIGNzc19zZXQgdGhhdCByZWZlcmVuY2VzIHRoZSBjZ3JvdXAsIGFuZCBzdWItaXRlcmF0aW5nIG92ZXIKK2VhY2ggY3NzX3NldCdzIHRhc2sgc2V0LgorCitUaGUgdXNlIG9mIGEgTGludXggdmlydHVhbCBmaWxlIHN5c3RlbSAodmZzKSB0byByZXByZXNlbnQgdGhlCitjZ3JvdXAgaGllcmFyY2h5IHByb3ZpZGVzIGZvciBhIGZhbWlsaWFyIHBlcm1pc3Npb24gYW5kIG5hbWUgc3BhY2UKK2ZvciBjZ3JvdXBzLCB3aXRoIGEgbWluaW11bSBvZiBhZGRpdGlvbmFsIGtlcm5lbCBjb2RlLgorCisxLjQgV2hhdCBkb2VzIG5vdGlmeV9vbl9yZWxlYXNlIGRvID8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJZiB0aGUgbm90aWZ5X29uX3JlbGVhc2UgZmxhZyBpcyBlbmFibGVkICgxKSBpbiBhIGNncm91cCwgdGhlbgord2hlbmV2ZXIgdGhlIGxhc3QgdGFzayBpbiB0aGUgY2dyb3VwIGxlYXZlcyAoZXhpdHMgb3IgYXR0YWNoZXMgdG8KK3NvbWUgb3RoZXIgY2dyb3VwKSBhbmQgdGhlIGxhc3QgY2hpbGQgY2dyb3VwIG9mIHRoYXQgY2dyb3VwCitpcyByZW1vdmVkLCB0aGVuIHRoZSBrZXJuZWwgcnVucyB0aGUgY29tbWFuZCBzcGVjaWZpZWQgYnkgdGhlIGNvbnRlbnRzCitvZiB0aGUgInJlbGVhc2VfYWdlbnQiIGZpbGUgaW4gdGhhdCBoaWVyYXJjaHkncyByb290IGRpcmVjdG9yeSwKK3N1cHBseWluZyB0aGUgcGF0aG5hbWUgKHJlbGF0aXZlIHRvIHRoZSBtb3VudCBwb2ludCBvZiB0aGUgY2dyb3VwCitmaWxlIHN5c3RlbSkgb2YgdGhlIGFiYW5kb25lZCBjZ3JvdXAuICBUaGlzIGVuYWJsZXMgYXV0b21hdGljCityZW1vdmFsIG9mIGFiYW5kb25lZCBjZ3JvdXBzLiAgVGhlIGRlZmF1bHQgdmFsdWUgb2YKK25vdGlmeV9vbl9yZWxlYXNlIGluIHRoZSByb290IGNncm91cCBhdCBzeXN0ZW0gYm9vdCBpcyBkaXNhYmxlZAorKDApLiAgVGhlIGRlZmF1bHQgdmFsdWUgb2Ygb3RoZXIgY2dyb3VwcyBhdCBjcmVhdGlvbiBpcyB0aGUgY3VycmVudAordmFsdWUgb2YgdGhlaXIgcGFyZW50cycgbm90aWZ5X29uX3JlbGVhc2Ugc2V0dGluZ3MuIFRoZSBkZWZhdWx0IHZhbHVlIG9mCithIGNncm91cCBoaWVyYXJjaHkncyByZWxlYXNlX2FnZW50IHBhdGggaXMgZW1wdHkuCisKKzEuNSBXaGF0IGRvZXMgY2xvbmVfY2hpbGRyZW4gZG8gPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZmxhZyBvbmx5IGFmZmVjdHMgdGhlIGNwdXNldCBjb250cm9sbGVyLiBJZiB0aGUgY2xvbmVfY2hpbGRyZW4KK2ZsYWcgaXMgZW5hYmxlZCAoMSkgaW4gYSBjZ3JvdXAsIGEgbmV3IGNwdXNldCBjZ3JvdXAgd2lsbCBjb3B5IGl0cworY29uZmlndXJhdGlvbiBmcm9tIHRoZSBwYXJlbnQgZHVyaW5nIGluaXRpYWxpemF0aW9uLgorCisxLjYgSG93IGRvIEkgdXNlIGNncm91cHMgPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVG8gc3RhcnQgYSBuZXcgam9iIHRoYXQgaXMgdG8gYmUgY29udGFpbmVkIHdpdGhpbiBhIGNncm91cCwgdXNpbmcKK3RoZSAiY3B1c2V0IiBjZ3JvdXAgc3Vic3lzdGVtLCB0aGUgc3RlcHMgYXJlIHNvbWV0aGluZyBsaWtlOgorCisgMSkgbW91bnQgLXQgdG1wZnMgY2dyb3VwX3Jvb3QgL3N5cy9mcy9jZ3JvdXAKKyAyKSBta2RpciAvc3lzL2ZzL2Nncm91cC9jcHVzZXQKKyAzKSBtb3VudCAtdCBjZ3JvdXAgLW9jcHVzZXQgY3B1c2V0IC9zeXMvZnMvY2dyb3VwL2NwdXNldAorIDQpIENyZWF0ZSB0aGUgbmV3IGNncm91cCBieSBkb2luZyBta2RpcidzIGFuZCB3cml0ZSdzIChvciBlY2hvJ3MpIGluCisgICAgdGhlIC9zeXMvZnMvY2dyb3VwL2NwdXNldCB2aXJ0dWFsIGZpbGUgc3lzdGVtLgorIDUpIFN0YXJ0IGEgdGFzayB0aGF0IHdpbGwgYmUgdGhlICJmb3VuZGluZyBmYXRoZXIiIG9mIHRoZSBuZXcgam9iLgorIDYpIEF0dGFjaCB0aGF0IHRhc2sgdG8gdGhlIG5ldyBjZ3JvdXAgYnkgd3JpdGluZyBpdHMgUElEIHRvIHRoZQorICAgIC9zeXMvZnMvY2dyb3VwL2NwdXNldCB0YXNrcyBmaWxlIGZvciB0aGF0IGNncm91cC4KKyA3KSBmb3JrLCBleGVjIG9yIGNsb25lIHRoZSBqb2IgdGFza3MgZnJvbSB0aGlzIGZvdW5kaW5nIGZhdGhlciB0YXNrLgorCitGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBvZiBjb21tYW5kcyB3aWxsIHNldHVwIGEgY2dyb3VwCituYW1lZCAiQ2hhcmxpZSIsIGNvbnRhaW5pbmcganVzdCBDUFVzIDIgYW5kIDMsIGFuZCBNZW1vcnkgTm9kZSAxLAorYW5kIHRoZW4gc3RhcnQgYSBzdWJzaGVsbCAnc2gnIGluIHRoYXQgY2dyb3VwOgorCisgIG1vdW50IC10IHRtcGZzIGNncm91cF9yb290IC9zeXMvZnMvY2dyb3VwCisgIG1rZGlyIC9zeXMvZnMvY2dyb3VwL2NwdXNldAorICBtb3VudCAtdCBjZ3JvdXAgY3B1c2V0IC1vY3B1c2V0IC9zeXMvZnMvY2dyb3VwL2NwdXNldAorICBjZCAvc3lzL2ZzL2Nncm91cC9jcHVzZXQKKyAgbWtkaXIgQ2hhcmxpZQorICBjZCBDaGFybGllCisgIC9iaW4vZWNobyAyLTMgPiBjcHVzZXQuY3B1cworICAvYmluL2VjaG8gMSA+IGNwdXNldC5tZW1zCisgIC9iaW4vZWNobyAkJCA+IHRhc2tzCisgIHNoCisgICMgVGhlIHN1YnNoZWxsICdzaCcgaXMgbm93IHJ1bm5pbmcgaW4gY2dyb3VwIENoYXJsaWUKKyAgIyBUaGUgbmV4dCBsaW5lIHNob3VsZCBkaXNwbGF5ICcvQ2hhcmxpZScKKyAgY2F0IC9wcm9jL3NlbGYvY2dyb3VwCisKKzIuIFVzYWdlIEV4YW1wbGVzIGFuZCBTeW50YXgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworMi4xIEJhc2ljIFVzYWdlCistLS0tLS0tLS0tLS0tLS0KKworQ3JlYXRpbmcsIG1vZGlmeWluZywgdXNpbmcgY2dyb3VwcyBjYW4gYmUgZG9uZSB0aHJvdWdoIHRoZSBjZ3JvdXAKK3ZpcnR1YWwgZmlsZXN5c3RlbS4KKworVG8gbW91bnQgYSBjZ3JvdXAgaGllcmFyY2h5IHdpdGggYWxsIGF2YWlsYWJsZSBzdWJzeXN0ZW1zLCB0eXBlOgorIyBtb3VudCAtdCBjZ3JvdXAgeHh4IC9zeXMvZnMvY2dyb3VwCisKK1RoZSAieHh4IiBpcyBub3QgaW50ZXJwcmV0ZWQgYnkgdGhlIGNncm91cCBjb2RlLCBidXQgd2lsbCBhcHBlYXIgaW4KKy9wcm9jL21vdW50cyBzbyBtYXkgYmUgYW55IHVzZWZ1bCBpZGVudGlmeWluZyBzdHJpbmcgdGhhdCB5b3UgbGlrZS4KKworTm90ZTogU29tZSBzdWJzeXN0ZW1zIGRvIG5vdCB3b3JrIHdpdGhvdXQgc29tZSB1c2VyIGlucHV0IGZpcnN0LiAgRm9yIGluc3RhbmNlLAoraWYgY3B1c2V0cyBhcmUgZW5hYmxlZCB0aGUgdXNlciB3aWxsIGhhdmUgdG8gcG9wdWxhdGUgdGhlIGNwdXMgYW5kIG1lbXMgZmlsZXMKK2ZvciBlYWNoIG5ldyBjZ3JvdXAgY3JlYXRlZCBiZWZvcmUgdGhhdCBncm91cCBjYW4gYmUgdXNlZC4KKworQXMgZXhwbGFpbmVkIGluIHNlY3Rpb24gYDEuMiBXaHkgYXJlIGNncm91cHMgbmVlZGVkPycgeW91IHNob3VsZCBjcmVhdGUKK2RpZmZlcmVudCBoaWVyYXJjaGllcyBvZiBjZ3JvdXBzIGZvciBlYWNoIHNpbmdsZSByZXNvdXJjZSBvciBncm91cCBvZgorcmVzb3VyY2VzIHlvdSB3YW50IHRvIGNvbnRyb2wuIFRoZXJlZm9yZSwgeW91IHNob3VsZCBtb3VudCBhIHRtcGZzIG9uCisvc3lzL2ZzL2Nncm91cCBhbmQgY3JlYXRlIGRpcmVjdG9yaWVzIGZvciBlYWNoIGNncm91cCByZXNvdXJjZSBvciByZXNvdXJjZQorZ3JvdXAuCisKKyMgbW91bnQgLXQgdG1wZnMgY2dyb3VwX3Jvb3QgL3N5cy9mcy9jZ3JvdXAKKyMgbWtkaXIgL3N5cy9mcy9jZ3JvdXAvcmcxCisKK1RvIG1vdW50IGEgY2dyb3VwIGhpZXJhcmNoeSB3aXRoIGp1c3QgdGhlIGNwdXNldCBhbmQgbWVtb3J5CitzdWJzeXN0ZW1zLCB0eXBlOgorIyBtb3VudCAtdCBjZ3JvdXAgLW8gY3B1c2V0LG1lbW9yeSBoaWVyMSAvc3lzL2ZzL2Nncm91cC9yZzEKKworV2hpbGUgcmVtb3VudGluZyBjZ3JvdXBzIGlzIGN1cnJlbnRseSBzdXBwb3J0ZWQsIGl0IGlzIG5vdCByZWNvbW1lbmQKK3RvIHVzZSBpdC4gUmVtb3VudGluZyBhbGxvd3MgY2hhbmdpbmcgYm91bmQgc3Vic3lzdGVtcyBhbmQKK3JlbGVhc2VfYWdlbnQuIFJlYmluZGluZyBpcyBoYXJkbHkgdXNlZnVsIGFzIGl0IG9ubHkgd29ya3Mgd2hlbiB0aGUKK2hpZXJhcmNoeSBpcyBlbXB0eSBhbmQgcmVsZWFzZV9hZ2VudCBpdHNlbGYgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGgKK2NvbnZlbnRpb25hbCBmc25vdGlmeS4gVGhlIHN1cHBvcnQgZm9yIHJlbW91bnRpbmcgd2lsbCBiZSByZW1vdmVkIGluCit0aGUgZnV0dXJlLgorCitUbyBTcGVjaWZ5IGEgaGllcmFyY2h5J3MgcmVsZWFzZV9hZ2VudDoKKyMgbW91bnQgLXQgY2dyb3VwIC1vIGNwdXNldCxyZWxlYXNlX2FnZW50PSIvc2Jpbi9jcHVzZXRfcmVsZWFzZV9hZ2VudCIgXAorICB4eHggL3N5cy9mcy9jZ3JvdXAvcmcxCisKK05vdGUgdGhhdCBzcGVjaWZ5aW5nICdyZWxlYXNlX2FnZW50JyBtb3JlIHRoYW4gb25jZSB3aWxsIHJldHVybiBmYWlsdXJlLgorCitOb3RlIHRoYXQgY2hhbmdpbmcgdGhlIHNldCBvZiBzdWJzeXN0ZW1zIGlzIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRlZAord2hlbiB0aGUgaGllcmFyY2h5IGNvbnNpc3RzIG9mIGEgc2luZ2xlIChyb290KSBjZ3JvdXAuIFN1cHBvcnRpbmcKK3RoZSBhYmlsaXR5IHRvIGFyYml0cmFyaWx5IGJpbmQvdW5iaW5kIHN1YnN5c3RlbXMgZnJvbSBhbiBleGlzdGluZworY2dyb3VwIGhpZXJhcmNoeSBpcyBpbnRlbmRlZCB0byBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgZnV0dXJlLgorCitUaGVuIHVuZGVyIC9zeXMvZnMvY2dyb3VwL3JnMSB5b3UgY2FuIGZpbmQgYSB0cmVlIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlCit0cmVlIG9mIHRoZSBjZ3JvdXBzIGluIHRoZSBzeXN0ZW0uIEZvciBpbnN0YW5jZSwgL3N5cy9mcy9jZ3JvdXAvcmcxCitpcyB0aGUgY2dyb3VwIHRoYXQgaG9sZHMgdGhlIHdob2xlIHN5c3RlbS4KKworSWYgeW91IHdhbnQgdG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiByZWxlYXNlX2FnZW50OgorIyBlY2hvICIvc2Jpbi9uZXdfcmVsZWFzZV9hZ2VudCIgPiAvc3lzL2ZzL2Nncm91cC9yZzEvcmVsZWFzZV9hZ2VudAorCitJdCBjYW4gYWxzbyBiZSBjaGFuZ2VkIHZpYSByZW1vdW50LgorCitJZiB5b3Ugd2FudCB0byBjcmVhdGUgYSBuZXcgY2dyb3VwIHVuZGVyIC9zeXMvZnMvY2dyb3VwL3JnMToKKyMgY2QgL3N5cy9mcy9jZ3JvdXAvcmcxCisjIG1rZGlyIG15X2Nncm91cAorCitOb3cgeW91IHdhbnQgdG8gZG8gc29tZXRoaW5nIHdpdGggdGhpcyBjZ3JvdXAuCisjIGNkIG15X2Nncm91cAorCitJbiB0aGlzIGRpcmVjdG9yeSB5b3UgY2FuIGZpbmQgc2V2ZXJhbCBmaWxlczoKKyMgbHMKK2Nncm91cC5wcm9jcyBub3RpZnlfb25fcmVsZWFzZSB0YXNrcworKHBsdXMgd2hhdGV2ZXIgZmlsZXMgYWRkZWQgYnkgdGhlIGF0dGFjaGVkIHN1YnN5c3RlbXMpCisKK05vdyBhdHRhY2ggeW91ciBzaGVsbCB0byB0aGlzIGNncm91cDoKKyMgL2Jpbi9lY2hvICQkID4gdGFza3MKKworWW91IGNhbiBhbHNvIGNyZWF0ZSBjZ3JvdXBzIGluc2lkZSB5b3VyIGNncm91cCBieSB1c2luZyBta2RpciBpbiB0aGlzCitkaXJlY3RvcnkuCisjIG1rZGlyIG15X3N1Yl9jcworCitUbyByZW1vdmUgYSBjZ3JvdXAsIGp1c3QgdXNlIHJtZGlyOgorIyBybWRpciBteV9zdWJfY3MKKworVGhpcyB3aWxsIGZhaWwgaWYgdGhlIGNncm91cCBpcyBpbiB1c2UgKGhhcyBjZ3JvdXBzIGluc2lkZSwgb3IKK2hhcyBwcm9jZXNzZXMgYXR0YWNoZWQsIG9yIGlzIGhlbGQgYWxpdmUgYnkgb3RoZXIgc3Vic3lzdGVtLXNwZWNpZmljCityZWZlcmVuY2UpLgorCisyLjIgQXR0YWNoaW5nIHByb2Nlc3NlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyAvYmluL2VjaG8gUElEID4gdGFza3MKKworTm90ZSB0aGF0IGl0IGlzIFBJRCwgbm90IFBJRHMuIFlvdSBjYW4gb25seSBhdHRhY2ggT05FIHRhc2sgYXQgYSB0aW1lLgorSWYgeW91IGhhdmUgc2V2ZXJhbCB0YXNrcyB0byBhdHRhY2gsIHlvdSBoYXZlIHRvIGRvIGl0IG9uZSBhZnRlciBhbm90aGVyOgorCisjIC9iaW4vZWNobyBQSUQxID4gdGFza3MKKyMgL2Jpbi9lY2hvIFBJRDIgPiB0YXNrcworCS4uLgorIyAvYmluL2VjaG8gUElEbiA+IHRhc2tzCisKK1lvdSBjYW4gYXR0YWNoIHRoZSBjdXJyZW50IHNoZWxsIHRhc2sgYnkgZWNob2luZyAwOgorCisjIGVjaG8gMCA+IHRhc2tzCisKK1lvdSBjYW4gdXNlIHRoZSBjZ3JvdXAucHJvY3MgZmlsZSBpbnN0ZWFkIG9mIHRoZSB0YXNrcyBmaWxlIHRvIG1vdmUgYWxsCit0aHJlYWRzIGluIGEgdGhyZWFkZ3JvdXAgYXQgb25jZS4gRWNob2luZyB0aGUgUElEIG9mIGFueSB0YXNrIGluIGEKK3RocmVhZGdyb3VwIHRvIGNncm91cC5wcm9jcyBjYXVzZXMgYWxsIHRhc2tzIGluIHRoYXQgdGhyZWFkZ3JvdXAgdG8gYmUKK2F0dGFjaGVkIHRvIHRoZSBjZ3JvdXAuIFdyaXRpbmcgMCB0byBjZ3JvdXAucHJvY3MgbW92ZXMgYWxsIHRhc2tzCitpbiB0aGUgd3JpdGluZyB0YXNrJ3MgdGhyZWFkZ3JvdXAuCisKK05vdGU6IFNpbmNlIGV2ZXJ5IHRhc2sgaXMgYWx3YXlzIGEgbWVtYmVyIG9mIGV4YWN0bHkgb25lIGNncm91cCBpbiBlYWNoCittb3VudGVkIGhpZXJhcmNoeSwgdG8gcmVtb3ZlIGEgdGFzayBmcm9tIGl0cyBjdXJyZW50IGNncm91cCB5b3UgbXVzdAorbW92ZSBpdCBpbnRvIGEgbmV3IGNncm91cCAocG9zc2libHkgdGhlIHJvb3QgY2dyb3VwKSBieSB3cml0aW5nIHRvIHRoZQorbmV3IGNncm91cCdzIHRhc2tzIGZpbGUuCisKK05vdGU6IER1ZSB0byBzb21lIHJlc3RyaWN0aW9ucyBlbmZvcmNlZCBieSBzb21lIGNncm91cCBzdWJzeXN0ZW1zLCBtb3ZpbmcKK2EgcHJvY2VzcyB0byBhbm90aGVyIGNncm91cCBjYW4gZmFpbC4KKworMi4zIE1vdW50aW5nIGhpZXJhcmNoaWVzIGJ5IG5hbWUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1Bhc3NpbmcgdGhlIG5hbWU9PHg+IG9wdGlvbiB3aGVuIG1vdW50aW5nIGEgY2dyb3VwcyBoaWVyYXJjaHkKK2Fzc29jaWF0ZXMgdGhlIGdpdmVuIG5hbWUgd2l0aCB0aGUgaGllcmFyY2h5LiAgVGhpcyBjYW4gYmUgdXNlZCB3aGVuCittb3VudGluZyBhIHByZS1leGlzdGluZyBoaWVyYXJjaHksIGluIG9yZGVyIHRvIHJlZmVyIHRvIGl0IGJ5IG5hbWUKK3JhdGhlciB0aGFuIGJ5IGl0cyBzZXQgb2YgYWN0aXZlIHN1YnN5c3RlbXMuICBFYWNoIGhpZXJhcmNoeSBpcyBlaXRoZXIKK25hbWVsZXNzLCBvciBoYXMgYSB1bmlxdWUgbmFtZS4KKworVGhlIG5hbWUgc2hvdWxkIG1hdGNoIFtcdy4tXSsKKworV2hlbiBwYXNzaW5nIGEgbmFtZT08eD4gb3B0aW9uIGZvciBhIG5ldyBoaWVyYXJjaHksIHlvdSBuZWVkIHRvCitzcGVjaWZ5IHN1YnN5c3RlbXMgbWFudWFsbHk7IHRoZSBsZWdhY3kgYmVoYXZpb3VyIG9mIG1vdW50aW5nIGFsbAorc3Vic3lzdGVtcyB3aGVuIG5vbmUgYXJlIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGlzIG5vdCBzdXBwb3J0ZWQgd2hlbgoreW91IGdpdmUgYSBzdWJzeXN0ZW0gYSBuYW1lLgorCitUaGUgbmFtZSBvZiB0aGUgc3Vic3lzdGVtIGFwcGVhcnMgYXMgcGFydCBvZiB0aGUgaGllcmFyY2h5IGRlc2NyaXB0aW9uCitpbiAvcHJvYy9tb3VudHMgYW5kIC9wcm9jLzxwaWQ+L2Nncm91cHMuCisKKworMy4gS2VybmVsIEFQSQorPT09PT09PT09PT09PQorCiszLjEgT3ZlcnZpZXcKKy0tLS0tLS0tLS0tLQorCitFYWNoIGtlcm5lbCBzdWJzeXN0ZW0gdGhhdCB3YW50cyB0byBob29rIGludG8gdGhlIGdlbmVyaWMgY2dyb3VwCitzeXN0ZW0gbmVlZHMgdG8gY3JlYXRlIGEgY2dyb3VwX3N1YnN5cyBvYmplY3QuIFRoaXMgY29udGFpbnMKK3ZhcmlvdXMgbWV0aG9kcywgd2hpY2ggYXJlIGNhbGxiYWNrcyBmcm9tIHRoZSBjZ3JvdXAgc3lzdGVtLCBhbG9uZword2l0aCBhIHN1YnN5c3RlbSBJRCB3aGljaCB3aWxsIGJlIGFzc2lnbmVkIGJ5IHRoZSBjZ3JvdXAgc3lzdGVtLgorCitPdGhlciBmaWVsZHMgaW4gdGhlIGNncm91cF9zdWJzeXMgb2JqZWN0IGluY2x1ZGU6CisKKy0gc3Vic3lzX2lkOiBhIHVuaXF1ZSBhcnJheSBpbmRleCBmb3IgdGhlIHN1YnN5c3RlbSwgaW5kaWNhdGluZyB3aGljaAorICBlbnRyeSBpbiBjZ3JvdXAtPnN1YnN5c1tdIHRoaXMgc3Vic3lzdGVtIHNob3VsZCBiZSBtYW5hZ2luZy4KKworLSBuYW1lOiBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgdG8gYSB1bmlxdWUgc3Vic3lzdGVtIG5hbWUuIFNob3VsZCBiZQorICBubyBsb25nZXIgdGhhbiBNQVhfQ0dST1VQX1RZUEVfTkFNRUxFTi4KKworLSBlYXJseV9pbml0OiBpbmRpY2F0ZSBpZiB0aGUgc3Vic3lzdGVtIG5lZWRzIGVhcmx5IGluaXRpYWxpemF0aW9uCisgIGF0IHN5c3RlbSBib290LgorCitFYWNoIGNncm91cCBvYmplY3QgY3JlYXRlZCBieSB0aGUgc3lzdGVtIGhhcyBhbiBhcnJheSBvZiBwb2ludGVycywKK2luZGV4ZWQgYnkgc3Vic3lzdGVtIElEOyB0aGlzIHBvaW50ZXIgaXMgZW50aXJlbHkgbWFuYWdlZCBieSB0aGUKK3N1YnN5c3RlbTsgdGhlIGdlbmVyaWMgY2dyb3VwIGNvZGUgd2lsbCBuZXZlciB0b3VjaCB0aGlzIHBvaW50ZXIuCisKKzMuMiBTeW5jaHJvbml6YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgaXMgYSBnbG9iYWwgbXV0ZXgsIGNncm91cF9tdXRleCwgdXNlZCBieSB0aGUgY2dyb3VwCitzeXN0ZW0uIFRoaXMgc2hvdWxkIGJlIHRha2VuIGJ5IGFueXRoaW5nIHRoYXQgd2FudHMgdG8gbW9kaWZ5IGEKK2Nncm91cC4gSXQgbWF5IGFsc28gYmUgdGFrZW4gdG8gcHJldmVudCBjZ3JvdXBzIGZyb20gYmVpbmcKK21vZGlmaWVkLCBidXQgbW9yZSBzcGVjaWZpYyBsb2NrcyBtYXkgYmUgbW9yZSBhcHByb3ByaWF0ZSBpbiB0aGF0CitzaXR1YXRpb24uCisKK1NlZSBrZXJuZWwvY2dyb3VwLmMgZm9yIG1vcmUgZGV0YWlscy4KKworU3Vic3lzdGVtcyBjYW4gdGFrZS9yZWxlYXNlIHRoZSBjZ3JvdXBfbXV0ZXggdmlhIHRoZSBmdW5jdGlvbnMKK2Nncm91cF9sb2NrKCkvY2dyb3VwX3VubG9jaygpLgorCitBY2Nlc3NpbmcgYSB0YXNrJ3MgY2dyb3VwIHBvaW50ZXIgbWF5IGJlIGRvbmUgaW4gdGhlIGZvbGxvd2luZyB3YXlzOgorLSB3aGlsZSBob2xkaW5nIGNncm91cF9tdXRleAorLSB3aGlsZSBob2xkaW5nIHRoZSB0YXNrJ3MgYWxsb2NfbG9jayAodmlhIHRhc2tfbG9jaygpKQorLSBpbnNpZGUgYW4gcmN1X3JlYWRfbG9jaygpIHNlY3Rpb24gdmlhIHJjdV9kZXJlZmVyZW5jZSgpCisKKzMuMyBTdWJzeXN0ZW0gQVBJCistLS0tLS0tLS0tLS0tLS0tLQorCitFYWNoIHN1YnN5c3RlbSBzaG91bGQ6CisKKy0gYWRkIGFuIGVudHJ5IGluIGxpbnV4L2Nncm91cF9zdWJzeXMuaAorLSBkZWZpbmUgYSBjZ3JvdXBfc3Vic3lzIG9iamVjdCBjYWxsZWQgPG5hbWU+X3N1YnN5cworCitJZiBhIHN1YnN5c3RlbSBjYW4gYmUgY29tcGlsZWQgYXMgYSBtb2R1bGUsIGl0IHNob3VsZCBhbHNvIGhhdmUgaW4gaXRzCittb2R1bGUgaW5pdGNhbGwgYSBjYWxsIHRvIGNncm91cF9sb2FkX3N1YnN5cygpLCBhbmQgaW4gaXRzIGV4aXRjYWxsIGEKK2NhbGwgdG8gY2dyb3VwX3VubG9hZF9zdWJzeXMoKS4gSXQgc2hvdWxkIGFsc28gc2V0IGl0c19zdWJzeXMubW9kdWxlID0KK1RISVNfTU9EVUxFIGluIGl0cyAuYyBmaWxlLgorCitFYWNoIHN1YnN5c3RlbSBtYXkgZXhwb3J0IHRoZSBmb2xsb3dpbmcgbWV0aG9kcy4gVGhlIG9ubHkgbWFuZGF0b3J5CittZXRob2RzIGFyZSBjc3NfYWxsb2MvZnJlZS4gQW55IG90aGVycyB0aGF0IGFyZSBudWxsIGFyZSBwcmVzdW1lZCB0bworYmUgc3VjY2Vzc2Z1bCBuby1vcHMuCisKK3N0cnVjdCBjZ3JvdXBfc3Vic3lzX3N0YXRlICpjc3NfYWxsb2Moc3RydWN0IGNncm91cCAqY2dycCkKKyhjZ3JvdXBfbXV0ZXggaGVsZCBieSBjYWxsZXIpCisKK0NhbGxlZCB0byBhbGxvY2F0ZSBhIHN1YnN5c3RlbSBzdGF0ZSBvYmplY3QgZm9yIGEgY2dyb3VwLiBUaGUKK3N1YnN5c3RlbSBzaG91bGQgYWxsb2NhdGUgaXRzIHN1YnN5c3RlbSBzdGF0ZSBvYmplY3QgZm9yIHRoZSBwYXNzZWQKK2Nncm91cCwgcmV0dXJuaW5nIGEgcG9pbnRlciB0byB0aGUgbmV3IG9iamVjdCBvbiBzdWNjZXNzIG9yIGEKK0VSUl9QVFIoKSB2YWx1ZS4gT24gc3VjY2VzcywgdGhlIHN1YnN5c3RlbSBwb2ludGVyIHNob3VsZCBwb2ludCB0bworYSBzdHJ1Y3R1cmUgb2YgdHlwZSBjZ3JvdXBfc3Vic3lzX3N0YXRlICh0eXBpY2FsbHkgZW1iZWRkZWQgaW4gYQorbGFyZ2VyIHN1YnN5c3RlbS1zcGVjaWZpYyBvYmplY3QpLCB3aGljaCB3aWxsIGJlIGluaXRpYWxpemVkIGJ5IHRoZQorY2dyb3VwIHN5c3RlbS4gTm90ZSB0aGF0IHRoaXMgd2lsbCBiZSBjYWxsZWQgYXQgaW5pdGlhbGl6YXRpb24gdG8KK2NyZWF0ZSB0aGUgcm9vdCBzdWJzeXN0ZW0gc3RhdGUgZm9yIHRoaXMgc3Vic3lzdGVtOyB0aGlzIGNhc2UgY2FuIGJlCitpZGVudGlmaWVkIGJ5IHRoZSBwYXNzZWQgY2dyb3VwIG9iamVjdCBoYXZpbmcgYSBOVUxMIHBhcmVudCAoc2luY2UKK2l0J3MgdGhlIHJvb3Qgb2YgdGhlIGhpZXJhcmNoeSkgYW5kIG1heSBiZSBhbiBhcHByb3ByaWF0ZSBwbGFjZSBmb3IKK2luaXRpYWxpemF0aW9uIGNvZGUuCisKK2ludCBjc3Nfb25saW5lKHN0cnVjdCBjZ3JvdXAgKmNncnApCisoY2dyb3VwX211dGV4IGhlbGQgYnkgY2FsbGVyKQorCitDYWxsZWQgYWZ0ZXIgQGNncnAgc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZCBhbGwgYWxsb2NhdGlvbnMgYW5kIG1hZGUKK3Zpc2libGUgdG8gY2dyb3VwX2Zvcl9lYWNoX2NoaWxkL2Rlc2NlbmRhbnRfKigpIGl0ZXJhdG9ycy4gVGhlCitzdWJzeXN0ZW0gbWF5IGNob29zZSB0byBmYWlsIGNyZWF0aW9uIGJ5IHJldHVybmluZyAtZXJybm8uIFRoaXMKK2NhbGxiYWNrIGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudCByZWxpYWJsZSBzdGF0ZSBzaGFyaW5nIGFuZAorcHJvcGFnYXRpb24gYWxvbmcgdGhlIGhpZXJhcmNoeS4gU2VlIHRoZSBjb21tZW50IG9uCitjZ3JvdXBfZm9yX2VhY2hfZGVzY2VuZGFudF9wcmUoKSBmb3IgZGV0YWlscy4KKwordm9pZCBjc3Nfb2ZmbGluZShzdHJ1Y3QgY2dyb3VwICpjZ3JwKTsKKyhjZ3JvdXBfbXV0ZXggaGVsZCBieSBjYWxsZXIpCisKK1RoaXMgaXMgdGhlIGNvdW50ZXJwYXJ0IG9mIGNzc19vbmxpbmUoKSBhbmQgY2FsbGVkIGlmZiBjc3Nfb25saW5lKCkKK2hhcyBzdWNjZWVkZWQgb24gQGNncnAuIFRoaXMgc2lnbmlmaWVzIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGVuZCBvZgorQGNncnAuIEBjZ3JwIGlzIGJlaW5nIHJlbW92ZWQgYW5kIHRoZSBzdWJzeXN0ZW0gc2hvdWxkIHN0YXJ0IGRyb3BwaW5nCithbGwgcmVmZXJlbmNlcyBpdCdzIGhvbGRpbmcgb24gQGNncnAuIFdoZW4gYWxsIHJlZmVyZW5jZXMgYXJlIGRyb3BwZWQsCitjZ3JvdXAgcmVtb3ZhbCB3aWxsIHByb2NlZWQgdG8gdGhlIG5leHQgc3RlcCAtIGNzc19mcmVlKCkuIEFmdGVyIHRoaXMKK2NhbGxiYWNrLCBAY2dycCBzaG91bGQgYmUgY29uc2lkZXJlZCBkZWFkIHRvIHRoZSBzdWJzeXN0ZW0uCisKK3ZvaWQgY3NzX2ZyZWUoc3RydWN0IGNncm91cCAqY2dycCkKKyhjZ3JvdXBfbXV0ZXggaGVsZCBieSBjYWxsZXIpCisKK1RoZSBjZ3JvdXAgc3lzdGVtIGlzIGFib3V0IHRvIGZyZWUgQGNncnA7IHRoZSBzdWJzeXN0ZW0gc2hvdWxkIGZyZWUKK2l0cyBzdWJzeXN0ZW0gc3RhdGUgb2JqZWN0LiBCeSB0aGUgdGltZSB0aGlzIG1ldGhvZCBpcyBjYWxsZWQsIEBjZ3JwCitpcyBjb21wbGV0ZWx5IHVudXNlZDsgQGNncnAtPnBhcmVudCBpcyBzdGlsbCB2YWxpZC4gKE5vdGUgLSBjYW4gYWxzbworYmUgY2FsbGVkIGZvciBhIG5ld2x5LWNyZWF0ZWQgY2dyb3VwIGlmIGFuIGVycm9yIG9jY3VycyBhZnRlciB0aGlzCitzdWJzeXN0ZW0ncyBjcmVhdGUoKSBtZXRob2QgaGFzIGJlZW4gY2FsbGVkIGZvciB0aGUgbmV3IGNncm91cCkuCisKK2ludCBjYW5fYXR0YWNoKHN0cnVjdCBjZ3JvdXAgKmNncnAsIHN0cnVjdCBjZ3JvdXBfdGFza3NldCAqdHNldCkKKyhjZ3JvdXBfbXV0ZXggaGVsZCBieSBjYWxsZXIpCisKK0NhbGxlZCBwcmlvciB0byBtb3Zpbmcgb25lIG9yIG1vcmUgdGFza3MgaW50byBhIGNncm91cDsgaWYgdGhlCitzdWJzeXN0ZW0gcmV0dXJucyBhbiBlcnJvciwgdGhpcyB3aWxsIGFib3J0IHRoZSBhdHRhY2ggb3BlcmF0aW9uLgorQHRzZXQgY29udGFpbnMgdGhlIHRhc2tzIHRvIGJlIGF0dGFjaGVkIGFuZCBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYXQKK2xlYXN0IG9uZSB0YXNrIGluIGl0LgorCitJZiB0aGVyZSBhcmUgbXVsdGlwbGUgdGFza3MgaW4gdGhlIHRhc2tzZXQsIHRoZW46CisgIC0gaXQncyBndWFyYW50ZWVkIHRoYXQgYWxsIGFyZSBmcm9tIHRoZSBzYW1lIHRocmVhZCBncm91cAorICAtIEB0c2V0IGNvbnRhaW5zIGFsbCB0YXNrcyBmcm9tIHRoZSB0aHJlYWQgZ3JvdXAgd2hldGhlciBvciBub3QKKyAgICB0aGV5J3JlIHN3aXRjaGluZyBjZ3JvdXBzCisgIC0gdGhlIGZpcnN0IHRhc2sgaXMgdGhlIGxlYWRlcgorCitFYWNoIEB0c2V0IGVudHJ5IGFsc28gY29udGFpbnMgdGhlIHRhc2sncyBvbGQgY2dyb3VwIGFuZCB0YXNrcyB3aGljaAorYXJlbid0IHN3aXRjaGluZyBjZ3JvdXAgY2FuIGJlIHNraXBwZWQgZWFzaWx5IHVzaW5nIHRoZQorY2dyb3VwX3Rhc2tzZXRfZm9yX2VhY2goKSBpdGVyYXRvci4gTm90ZSB0aGF0IHRoaXMgaXNuJ3QgY2FsbGVkIG9uIGEKK2ZvcmsuIElmIHRoaXMgbWV0aG9kIHJldHVybnMgMCAoc3VjY2VzcykgdGhlbiB0aGlzIHNob3VsZCByZW1haW4gdmFsaWQKK3doaWxlIHRoZSBjYWxsZXIgaG9sZHMgY2dyb3VwX211dGV4IGFuZCBpdCBpcyBlbnN1cmVkIHRoYXQgZWl0aGVyCithdHRhY2goKSBvciBjYW5jZWxfYXR0YWNoKCkgd2lsbCBiZSBjYWxsZWQgaW4gZnV0dXJlLgorCit2b2lkIGNzc19yZXNldChzdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqY3NzKQorKGNncm91cF9tdXRleCBoZWxkIGJ5IGNhbGxlcikKKworQW4gb3B0aW9uYWwgb3BlcmF0aW9uIHdoaWNoIHNob3VsZCByZXN0b3JlIEBjc3MncyBjb25maWd1cmF0aW9uIHRvIHRoZQoraW5pdGlhbCBzdGF0ZS4gIFRoaXMgaXMgY3VycmVudGx5IG9ubHkgdXNlZCBvbiB0aGUgdW5pZmllZCBoaWVyYXJjaHkKK3doZW4gYSBzdWJzeXN0ZW0gaXMgZGlzYWJsZWQgb24gYSBjZ3JvdXAgdGhyb3VnaAorImNncm91cC5zdWJ0cmVlX2NvbnRyb2wiIGJ1dCBzaG91bGQgcmVtYWluIGVuYWJsZWQgYmVjYXVzZSBvdGhlcgorc3Vic3lzdGVtcyBkZXBlbmQgb24gaXQuICBjZ3JvdXAgY29yZSBtYWtlcyBzdWNoIGEgY3NzIGludmlzaWJsZSBieQorcmVtb3ZpbmcgdGhlIGFzc29jaWF0ZWQgaW50ZXJmYWNlIGZpbGVzIGFuZCBpbnZva2VzIHRoaXMgY2FsbGJhY2sgc28KK3RoYXQgdGhlIGhpZGRlbiBzdWJzeXN0ZW0gY2FuIHJldHVybiB0byB0aGUgaW5pdGlhbCBuZXV0cmFsIHN0YXRlLgorVGhpcyBwcmV2ZW50cyB1bmV4cGVjdGVkIHJlc291cmNlIGNvbnRyb2wgZnJvbSBhIGhpZGRlbiBjc3MgYW5kCitlbnN1cmVzIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gaXMgaW4gdGhlIGluaXRpYWwgc3RhdGUgd2hlbiBpdCBpcyBtYWRlCit2aXNpYmxlIGFnYWluIGxhdGVyLgorCit2b2lkIGNhbmNlbF9hdHRhY2goc3RydWN0IGNncm91cCAqY2dycCwgc3RydWN0IGNncm91cF90YXNrc2V0ICp0c2V0KQorKGNncm91cF9tdXRleCBoZWxkIGJ5IGNhbGxlcikKKworQ2FsbGVkIHdoZW4gYSB0YXNrIGF0dGFjaCBvcGVyYXRpb24gaGFzIGZhaWxlZCBhZnRlciBjYW5fYXR0YWNoKCkgaGFzIHN1Y2NlZWRlZC4KK0Egc3Vic3lzdGVtIHdob3NlIGNhbl9hdHRhY2goKSBoYXMgc29tZSBzaWRlLWVmZmVjdHMgc2hvdWxkIHByb3ZpZGUgdGhpcworZnVuY3Rpb24sIHNvIHRoYXQgdGhlIHN1YnN5c3RlbSBjYW4gaW1wbGVtZW50IGEgcm9sbGJhY2suIElmIG5vdCwgbm90IG5lY2Vzc2FyeS4KK1RoaXMgd2lsbCBiZSBjYWxsZWQgb25seSBhYm91dCBzdWJzeXN0ZW1zIHdob3NlIGNhbl9hdHRhY2goKSBvcGVyYXRpb24gaGF2ZQorc3VjY2VlZGVkLiBUaGUgcGFyYW1ldGVycyBhcmUgaWRlbnRpY2FsIHRvIGNhbl9hdHRhY2goKS4KKwordm9pZCBhdHRhY2goc3RydWN0IGNncm91cCAqY2dycCwgc3RydWN0IGNncm91cF90YXNrc2V0ICp0c2V0KQorKGNncm91cF9tdXRleCBoZWxkIGJ5IGNhbGxlcikKKworQ2FsbGVkIGFmdGVyIHRoZSB0YXNrIGhhcyBiZWVuIGF0dGFjaGVkIHRvIHRoZSBjZ3JvdXAsIHRvIGFsbG93IGFueQorcG9zdC1hdHRhY2htZW50IGFjdGl2aXR5IHRoYXQgcmVxdWlyZXMgbWVtb3J5IGFsbG9jYXRpb25zIG9yIGJsb2NraW5nLgorVGhlIHBhcmFtZXRlcnMgYXJlIGlkZW50aWNhbCB0byBjYW5fYXR0YWNoKCkuCisKK3ZvaWQgZm9yayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spCisKK0NhbGxlZCB3aGVuIGEgdGFzayBpcyBmb3JrZWQgaW50byBhIGNncm91cC4KKwordm9pZCBleGl0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykKKworQ2FsbGVkIGR1cmluZyB0YXNrIGV4aXQuCisKK3ZvaWQgZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spCisKK0NhbGxlZCB3aGVuIHRoZSB0YXNrX3N0cnVjdCBpcyBmcmVlZC4KKwordm9pZCBiaW5kKHN0cnVjdCBjZ3JvdXAgKnJvb3QpCisoY2dyb3VwX211dGV4IGhlbGQgYnkgY2FsbGVyKQorCitDYWxsZWQgd2hlbiBhIGNncm91cCBzdWJzeXN0ZW0gaXMgcmVib3VuZCB0byBhIGRpZmZlcmVudCBoaWVyYXJjaHkKK2FuZCByb290IGNncm91cC4gQ3VycmVudGx5IHRoaXMgd2lsbCBvbmx5IGludm9sdmUgbW92ZW1lbnQgYmV0d2VlbgordGhlIGRlZmF1bHQgaGllcmFyY2h5ICh3aGljaCBuZXZlciBoYXMgc3ViLWNncm91cHMpIGFuZCBhIGhpZXJhcmNoeQordGhhdCBpcyBiZWluZyBjcmVhdGVkL2Rlc3Ryb3llZCAoYW5kIGhlbmNlIGhhcyBubyBzdWItY2dyb3VwcykuCisKKzQuIEV4dGVuZGVkIGF0dHJpYnV0ZSB1c2FnZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2Nncm91cCBmaWxlc3lzdGVtIHN1cHBvcnRzIGNlcnRhaW4gdHlwZXMgb2YgZXh0ZW5kZWQgYXR0cmlidXRlcyBpbiBpdHMKK2RpcmVjdG9yaWVzIGFuZCBmaWxlcy4gIFRoZSBjdXJyZW50IHN1cHBvcnRlZCB0eXBlcyBhcmU6CisJLSBUcnVzdGVkIChYQVRUUl9UUlVTVEVEKQorCS0gU2VjdXJpdHkgKFhBVFRSX1NFQ1VSSVRZKQorCitCb3RoIHJlcXVpcmUgQ0FQX1NZU19BRE1JTiBjYXBhYmlsaXR5IHRvIHNldC4KKworTGlrZSBpbiB0bXBmcywgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgaW4gY2dyb3VwIGZpbGVzeXN0ZW0gYXJlIHN0b3JlZAordXNpbmcga2VybmVsIG1lbW9yeSBhbmQgaXQncyBhZHZpc2VkIHRvIGtlZXAgdGhlIHVzYWdlIGF0IG1pbmltdW0uICBUaGlzCitpcyB0aGUgcmVhc29uIHdoeSB1c2VyIGRlZmluZWQgZXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZCwgc2luY2UKK2FueSB1c2VyIGNhbiBkbyBpdCBhbmQgdGhlcmUncyBubyBsaW1pdCBpbiB0aGUgdmFsdWUgc2l6ZS4KKworVGhlIGN1cnJlbnQga25vd24gdXNlcnMgZm9yIHRoaXMgZmVhdHVyZSBhcmUgU0VMaW51eCB0byBsaW1pdCBjZ3JvdXAgdXNhZ2UKK2luIGNvbnRhaW5lcnMgYW5kIHN5c3RlbWQgZm9yIGFzc29ydGVkIG1ldGEgZGF0YSBsaWtlIG1haW4gUElEIGluIGEgY2dyb3VwCisoc3lzdGVtZCBjcmVhdGVzIGEgY2dyb3VwIHBlciBzZXJ2aWNlKS4KKworNS4gUXVlc3Rpb25zCis9PT09PT09PT09PT0KKworUTogd2hhdCdzIHVwIHdpdGggdGhpcyAnL2Jpbi9lY2hvJyA/CitBOiBiYXNoJ3MgYnVpbHRpbiAnZWNobycgY29tbWFuZCBkb2VzIG5vdCBjaGVjayBjYWxscyB0byB3cml0ZSgpIGFnYWluc3QKKyAgIGVycm9ycy4gSWYgeW91IHVzZSBpdCBpbiB0aGUgY2dyb3VwIGZpbGUgc3lzdGVtLCB5b3Ugd29uJ3QgYmUKKyAgIGFibGUgdG8gdGVsbCB3aGV0aGVyIGEgY29tbWFuZCBzdWNjZWVkZWQgb3IgZmFpbGVkLgorCitROiBXaGVuIEkgYXR0YWNoIHByb2Nlc3Nlcywgb25seSB0aGUgZmlyc3Qgb2YgdGhlIGxpbmUgZ2V0cyByZWFsbHkgYXR0YWNoZWQgIQorQTogV2UgY2FuIG9ubHkgcmV0dXJuIG9uZSBlcnJvciBjb2RlIHBlciBjYWxsIHRvIHdyaXRlKCkuIFNvIHlvdSBzaG91bGQgYWxzbworICAgcHV0IG9ubHkgT05FIFBJRC4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9jZ3JvdXBzL2NwdWFjY3QudHh0IGIvRG9jdW1lbnRhdGlvbi9jZ3JvdXBzL2NwdWFjY3QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNzNjYzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Nncm91cHMvY3B1YWNjdC50eHQKQEAgLTAsMCArMSw0OSBAQAorQ1BVIEFjY291bnRpbmcgQ29udHJvbGxlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgQ1BVIGFjY291bnRpbmcgY29udHJvbGxlciBpcyB1c2VkIHRvIGdyb3VwIHRhc2tzIHVzaW5nIGNncm91cHMgYW5kCithY2NvdW50IHRoZSBDUFUgdXNhZ2Ugb2YgdGhlc2UgZ3JvdXBzIG9mIHRhc2tzLgorCitUaGUgQ1BVIGFjY291bnRpbmcgY29udHJvbGxlciBzdXBwb3J0cyBtdWx0aS1oaWVyYXJjaHkgZ3JvdXBzLiBBbiBhY2NvdW50aW5nCitncm91cCBhY2N1bXVsYXRlcyB0aGUgQ1BVIHVzYWdlIG9mIGFsbCBvZiBpdHMgY2hpbGQgZ3JvdXBzIGFuZCB0aGUgdGFza3MKK2RpcmVjdGx5IHByZXNlbnQgaW4gaXRzIGdyb3VwLgorCitBY2NvdW50aW5nIGdyb3VwcyBjYW4gYmUgY3JlYXRlZCBieSBmaXJzdCBtb3VudGluZyB0aGUgY2dyb3VwIGZpbGVzeXN0ZW0uCisKKyMgbW91bnQgLXQgY2dyb3VwIC1vY3B1YWNjdCBub25lIC9zeXMvZnMvY2dyb3VwCisKK1dpdGggdGhlIGFib3ZlIHN0ZXAsIHRoZSBpbml0aWFsIG9yIHRoZSBwYXJlbnQgYWNjb3VudGluZyBncm91cCBiZWNvbWVzCit2aXNpYmxlIGF0IC9zeXMvZnMvY2dyb3VwLiBBdCBib290dXAsIHRoaXMgZ3JvdXAgaW5jbHVkZXMgYWxsIHRoZSB0YXNrcyBpbgordGhlIHN5c3RlbS4gL3N5cy9mcy9jZ3JvdXAvdGFza3MgbGlzdHMgdGhlIHRhc2tzIGluIHRoaXMgY2dyb3VwLgorL3N5cy9mcy9jZ3JvdXAvY3B1YWNjdC51c2FnZSBnaXZlcyB0aGUgQ1BVIHRpbWUgKGluIG5hbm9zZWNvbmRzKSBvYnRhaW5lZAorYnkgdGhpcyBncm91cCB3aGljaCBpcyBlc3NlbnRpYWxseSB0aGUgQ1BVIHRpbWUgb2J0YWluZWQgYnkgYWxsIHRoZSB0YXNrcworaW4gdGhlIHN5c3RlbS4KKworTmV3IGFjY291bnRpbmcgZ3JvdXBzIGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoZSBwYXJlbnQgZ3JvdXAgL3N5cy9mcy9jZ3JvdXAuCisKKyMgY2QgL3N5cy9mcy9jZ3JvdXAKKyMgbWtkaXIgZzEKKyMgZWNobyAkJCA+IGcxL3Rhc2tzCisKK1RoZSBhYm92ZSBzdGVwcyBjcmVhdGUgYSBuZXcgZ3JvdXAgZzEgYW5kIG1vdmUgdGhlIGN1cnJlbnQgc2hlbGwKK3Byb2Nlc3MgKGJhc2gpIGludG8gaXQuIENQVSB0aW1lIGNvbnN1bWVkIGJ5IHRoaXMgYmFzaCBhbmQgaXRzIGNoaWxkcmVuCitjYW4gYmUgb2J0YWluZWQgZnJvbSBnMS9jcHVhY2N0LnVzYWdlIGFuZCB0aGUgc2FtZSBpcyBhY2N1bXVsYXRlZCBpbgorL3N5cy9mcy9jZ3JvdXAvY3B1YWNjdC51c2FnZSBhbHNvLgorCitjcHVhY2N0LnN0YXQgZmlsZSBsaXN0cyBhIGZldyBzdGF0aXN0aWNzIHdoaWNoIGZ1cnRoZXIgZGl2aWRlIHRoZQorQ1BVIHRpbWUgb2J0YWluZWQgYnkgdGhlIGNncm91cCBpbnRvIHVzZXIgYW5kIHN5c3RlbSB0aW1lcy4gQ3VycmVudGx5Cit0aGUgZm9sbG93aW5nIHN0YXRpc3RpY3MgYXJlIHN1cHBvcnRlZDoKKwordXNlcjogVGltZSBzcGVudCBieSB0YXNrcyBvZiB0aGUgY2dyb3VwIGluIHVzZXIgbW9kZS4KK3N5c3RlbTogVGltZSBzcGVudCBieSB0YXNrcyBvZiB0aGUgY2dyb3VwIGluIGtlcm5lbCBtb2RlLgorCit1c2VyIGFuZCBzeXN0ZW0gYXJlIGluIFVTRVJfSFogdW5pdC4KKworY3B1YWNjdCBjb250cm9sbGVyIHVzZXMgcGVyY3B1X2NvdW50ZXIgaW50ZXJmYWNlIHRvIGNvbGxlY3QgdXNlciBhbmQKK3N5c3RlbSB0aW1lcy4gVGhpcyBoYXMgdHdvIHNpZGUgZWZmZWN0czoKKworLSBJdCBpcyB0aGVvcmV0aWNhbGx5IHBvc3NpYmxlIHRvIHNlZSB3cm9uZyB2YWx1ZXMgZm9yIHVzZXIgYW5kIHN5c3RlbSB0aW1lcy4KKyAgVGhpcyBpcyBiZWNhdXNlIHBlcmNwdV9jb3VudGVyX3JlYWQoKSBvbiAzMmJpdCBzeXN0ZW1zIGlzbid0IHNhZmUKKyAgYWdhaW5zdCBjb25jdXJyZW50IHdyaXRlcy4KKy0gSXQgaXMgcG9zc2libGUgdG8gc2VlIHNsaWdodGx5IG91dGRhdGVkIHZhbHVlcyBmb3IgdXNlciBhbmQgc3lzdGVtIHRpbWVzCisgIGR1ZSB0byB0aGUgYmF0Y2ggcHJvY2Vzc2luZyBuYXR1cmUgb2YgcGVyY3B1X2NvdW50ZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Nncm91cHMvY3B1c2V0cy50eHQgYi9Eb2N1bWVudGF0aW9uL2Nncm91cHMvY3B1c2V0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRmN2RmZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vY2dyb3Vwcy9jcHVzZXRzLnR4dApAQCAtMCwwICsxLDgzOSBAQAorCQkJCUNQVVNFVFMKKwkJCQktLS0tLS0tCisKK0NvcHlyaWdodCAoQykgMjAwNCBCVUxMIFNBLgorV3JpdHRlbiBieSBTaW1vbi5EZXJyQGJ1bGwubmV0CisKK1BvcnRpb25zIENvcHlyaWdodCAoYykgMjAwNC0yMDA2IFNpbGljb24gR3JhcGhpY3MsIEluYy4KK01vZGlmaWVkIGJ5IFBhdWwgSmFja3NvbiA8cGpAc2dpLmNvbT4KK01vZGlmaWVkIGJ5IENocmlzdG9waCBMYW1ldGVyIDxjbGFtZXRlckBzZ2kuY29tPgorTW9kaWZpZWQgYnkgUGF1bCBNZW5hZ2UgPG1lbmFnZUBnb29nbGUuY29tPgorTW9kaWZpZWQgYnkgSGlkZXRvc2hpIFNldG8gPHNldG8uaGlkZXRvc2hpQGpwLmZ1aml0c3UuY29tPgorCitDT05URU5UUzoKKz09PT09PT09PQorCisxLiBDcHVzZXRzCisgIDEuMSBXaGF0IGFyZSBjcHVzZXRzID8KKyAgMS4yIFdoeSBhcmUgY3B1c2V0cyBuZWVkZWQgPworICAxLjMgSG93IGFyZSBjcHVzZXRzIGltcGxlbWVudGVkID8KKyAgMS40IFdoYXQgYXJlIGV4Y2x1c2l2ZSBjcHVzZXRzID8KKyAgMS41IFdoYXQgaXMgbWVtb3J5X3ByZXNzdXJlID8KKyAgMS42IFdoYXQgaXMgbWVtb3J5IHNwcmVhZCA/CisgIDEuNyBXaGF0IGlzIHNjaGVkX2xvYWRfYmFsYW5jZSA/CisgIDEuOCBXaGF0IGlzIHNjaGVkX3JlbGF4X2RvbWFpbl9sZXZlbCA/CisgIDEuOSBIb3cgZG8gSSB1c2UgY3B1c2V0cyA/CisyLiBVc2FnZSBFeGFtcGxlcyBhbmQgU3ludGF4CisgIDIuMSBCYXNpYyBVc2FnZQorICAyLjIgQWRkaW5nL3JlbW92aW5nIGNwdXMKKyAgMi4zIFNldHRpbmcgZmxhZ3MKKyAgMi40IEF0dGFjaGluZyBwcm9jZXNzZXMKKzMuIFF1ZXN0aW9ucworNC4gQ29udGFjdAorCisxLiBDcHVzZXRzCis9PT09PT09PT09CisKKzEuMSBXaGF0IGFyZSBjcHVzZXRzID8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ3B1c2V0cyBwcm92aWRlIGEgbWVjaGFuaXNtIGZvciBhc3NpZ25pbmcgYSBzZXQgb2YgQ1BVcyBhbmQgTWVtb3J5CitOb2RlcyB0byBhIHNldCBvZiB0YXNrcy4gICBJbiB0aGlzIGRvY3VtZW50ICJNZW1vcnkgTm9kZSIgcmVmZXJzIHRvCithbiBvbi1saW5lIG5vZGUgdGhhdCBjb250YWlucyBtZW1vcnkuCisKK0NwdXNldHMgY29uc3RyYWluIHRoZSBDUFUgYW5kIE1lbW9yeSBwbGFjZW1lbnQgb2YgdGFza3MgdG8gb25seQordGhlIHJlc291cmNlcyB3aXRoaW4gYSB0YXNrJ3MgY3VycmVudCBjcHVzZXQuICBUaGV5IGZvcm0gYSBuZXN0ZWQKK2hpZXJhcmNoeSB2aXNpYmxlIGluIGEgdmlydHVhbCBmaWxlIHN5c3RlbS4gIFRoZXNlIGFyZSB0aGUgZXNzZW50aWFsCitob29rcywgYmV5b25kIHdoYXQgaXMgYWxyZWFkeSBwcmVzZW50LCByZXF1aXJlZCB0byBtYW5hZ2UgZHluYW1pYworam9iIHBsYWNlbWVudCBvbiBsYXJnZSBzeXN0ZW1zLgorCitDcHVzZXRzIHVzZSB0aGUgZ2VuZXJpYyBjZ3JvdXAgc3Vic3lzdGVtIGRlc2NyaWJlZCBpbgorRG9jdW1lbnRhdGlvbi9jZ3JvdXBzL2Nncm91cHMudHh0LgorCitSZXF1ZXN0cyBieSBhIHRhc2ssIHVzaW5nIHRoZSBzY2hlZF9zZXRhZmZpbml0eSgyKSBzeXN0ZW0gY2FsbCB0bworaW5jbHVkZSBDUFVzIGluIGl0cyBDUFUgYWZmaW5pdHkgbWFzaywgYW5kIHVzaW5nIHRoZSBtYmluZCgyKSBhbmQKK3NldF9tZW1wb2xpY3koMikgc3lzdGVtIGNhbGxzIHRvIGluY2x1ZGUgTWVtb3J5IE5vZGVzIGluIGl0cyBtZW1vcnkKK3BvbGljeSwgYXJlIGJvdGggZmlsdGVyZWQgdGhyb3VnaCB0aGF0IHRhc2sncyBjcHVzZXQsIGZpbHRlcmluZyBvdXQgYW55CitDUFVzIG9yIE1lbW9yeSBOb2RlcyBub3QgaW4gdGhhdCBjcHVzZXQuICBUaGUgc2NoZWR1bGVyIHdpbGwgbm90CitzY2hlZHVsZSBhIHRhc2sgb24gYSBDUFUgdGhhdCBpcyBub3QgYWxsb3dlZCBpbiBpdHMgY3B1c19hbGxvd2VkCit2ZWN0b3IsIGFuZCB0aGUga2VybmVsIHBhZ2UgYWxsb2NhdG9yIHdpbGwgbm90IGFsbG9jYXRlIGEgcGFnZSBvbiBhCitub2RlIHRoYXQgaXMgbm90IGFsbG93ZWQgaW4gdGhlIHJlcXVlc3RpbmcgdGFzaydzIG1lbXNfYWxsb3dlZCB2ZWN0b3IuCisKK1VzZXIgbGV2ZWwgY29kZSBtYXkgY3JlYXRlIGFuZCBkZXN0cm95IGNwdXNldHMgYnkgbmFtZSBpbiB0aGUgY2dyb3VwCit2aXJ0dWFsIGZpbGUgc3lzdGVtLCBtYW5hZ2UgdGhlIGF0dHJpYnV0ZXMgYW5kIHBlcm1pc3Npb25zIG9mIHRoZXNlCitjcHVzZXRzIGFuZCB3aGljaCBDUFVzIGFuZCBNZW1vcnkgTm9kZXMgYXJlIGFzc2lnbmVkIHRvIGVhY2ggY3B1c2V0LAorc3BlY2lmeSBhbmQgcXVlcnkgdG8gd2hpY2ggY3B1c2V0IGEgdGFzayBpcyBhc3NpZ25lZCwgYW5kIGxpc3QgdGhlCit0YXNrIHBpZHMgYXNzaWduZWQgdG8gYSBjcHVzZXQuCisKKworMS4yIFdoeSBhcmUgY3B1c2V0cyBuZWVkZWQgPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbWFuYWdlbWVudCBvZiBsYXJnZSBjb21wdXRlciBzeXN0ZW1zLCB3aXRoIG1hbnkgcHJvY2Vzc29ycyAoQ1BVcyksCitjb21wbGV4IG1lbW9yeSBjYWNoZSBoaWVyYXJjaGllcyBhbmQgbXVsdGlwbGUgTWVtb3J5IE5vZGVzIGhhdmluZworbm9uLXVuaWZvcm0gYWNjZXNzIHRpbWVzIChOVU1BKSBwcmVzZW50cyBhZGRpdGlvbmFsIGNoYWxsZW5nZXMgZm9yCit0aGUgZWZmaWNpZW50IHNjaGVkdWxpbmcgYW5kIG1lbW9yeSBwbGFjZW1lbnQgb2YgcHJvY2Vzc2VzLgorCitGcmVxdWVudGx5IG1vcmUgbW9kZXN0IHNpemVkIHN5c3RlbXMgY2FuIGJlIG9wZXJhdGVkIHdpdGggYWRlcXVhdGUKK2VmZmljaWVuY3kganVzdCBieSBsZXR0aW5nIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGF1dG9tYXRpY2FsbHkgc2hhcmUKK3RoZSBhdmFpbGFibGUgQ1BVIGFuZCBNZW1vcnkgcmVzb3VyY2VzIGFtb25nc3QgdGhlIHJlcXVlc3RpbmcgdGFza3MuCisKK0J1dCBsYXJnZXIgc3lzdGVtcywgd2hpY2ggYmVuZWZpdCBtb3JlIGZyb20gY2FyZWZ1bCBwcm9jZXNzb3IgYW5kCittZW1vcnkgcGxhY2VtZW50IHRvIHJlZHVjZSBtZW1vcnkgYWNjZXNzIHRpbWVzIGFuZCBjb250ZW50aW9uLAorYW5kIHdoaWNoIHR5cGljYWxseSByZXByZXNlbnQgYSBsYXJnZXIgaW52ZXN0bWVudCBmb3IgdGhlIGN1c3RvbWVyLAorY2FuIGJlbmVmaXQgZnJvbSBleHBsaWNpdGx5IHBsYWNpbmcgam9icyBvbiBwcm9wZXJseSBzaXplZCBzdWJzZXRzIG9mCit0aGUgc3lzdGVtLgorCitUaGlzIGNhbiBiZSBlc3BlY2lhbGx5IHZhbHVhYmxlIG9uOgorCisgICAgKiBXZWIgU2VydmVycyBydW5uaW5nIG11bHRpcGxlIGluc3RhbmNlcyBvZiB0aGUgc2FtZSB3ZWIgYXBwbGljYXRpb24sCisgICAgKiBTZXJ2ZXJzIHJ1bm5pbmcgZGlmZmVyZW50IGFwcGxpY2F0aW9ucyAoZm9yIGluc3RhbmNlLCBhIHdlYiBzZXJ2ZXIKKyAgICAgIGFuZCBhIGRhdGFiYXNlKSwgb3IKKyAgICAqIE5VTUEgc3lzdGVtcyBydW5uaW5nIGxhcmdlIEhQQyBhcHBsaWNhdGlvbnMgd2l0aCBkZW1hbmRpbmcKKyAgICAgIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcy4KKworVGhlc2Ugc3Vic2V0cywgb3IgInNvZnQgcGFydGl0aW9ucyIgbXVzdCBiZSBhYmxlIHRvIGJlIGR5bmFtaWNhbGx5CithZGp1c3RlZCwgYXMgdGhlIGpvYiBtaXggY2hhbmdlcywgd2l0aG91dCBpbXBhY3Rpbmcgb3RoZXIgY29uY3VycmVudGx5CitleGVjdXRpbmcgam9icy4gVGhlIGxvY2F0aW9uIG9mIHRoZSBydW5uaW5nIGpvYnMgcGFnZXMgbWF5IGFsc28gYmUgbW92ZWQKK3doZW4gdGhlIG1lbW9yeSBsb2NhdGlvbnMgYXJlIGNoYW5nZWQuCisKK1RoZSBrZXJuZWwgY3B1c2V0IHBhdGNoIHByb3ZpZGVzIHRoZSBtaW5pbXVtIGVzc2VudGlhbCBrZXJuZWwKK21lY2hhbmlzbXMgcmVxdWlyZWQgdG8gZWZmaWNpZW50bHkgaW1wbGVtZW50IHN1Y2ggc3Vic2V0cy4gIEl0CitsZXZlcmFnZXMgZXhpc3RpbmcgQ1BVIGFuZCBNZW1vcnkgUGxhY2VtZW50IGZhY2lsaXRpZXMgaW4gdGhlIExpbnV4CitrZXJuZWwgdG8gYXZvaWQgYW55IGFkZGl0aW9uYWwgaW1wYWN0IG9uIHRoZSBjcml0aWNhbCBzY2hlZHVsZXIgb3IKK21lbW9yeSBhbGxvY2F0b3IgY29kZS4KKworCisxLjMgSG93IGFyZSBjcHVzZXRzIGltcGxlbWVudGVkID8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDcHVzZXRzIHByb3ZpZGUgYSBMaW51eCBrZXJuZWwgbWVjaGFuaXNtIHRvIGNvbnN0cmFpbiB3aGljaCBDUFVzIGFuZAorTWVtb3J5IE5vZGVzIGFyZSB1c2VkIGJ5IGEgcHJvY2VzcyBvciBzZXQgb2YgcHJvY2Vzc2VzLgorCitUaGUgTGludXgga2VybmVsIGFscmVhZHkgaGFzIGEgcGFpciBvZiBtZWNoYW5pc21zIHRvIHNwZWNpZnkgb24gd2hpY2gKK0NQVXMgYSB0YXNrIG1heSBiZSBzY2hlZHVsZWQgKHNjaGVkX3NldGFmZmluaXR5KSBhbmQgb24gd2hpY2ggTWVtb3J5CitOb2RlcyBpdCBtYXkgb2J0YWluIG1lbW9yeSAobWJpbmQsIHNldF9tZW1wb2xpY3kpLgorCitDcHVzZXRzIGV4dGVuZHMgdGhlc2UgdHdvIG1lY2hhbmlzbXMgYXMgZm9sbG93czoKKworIC0gQ3B1c2V0cyBhcmUgc2V0cyBvZiBhbGxvd2VkIENQVXMgYW5kIE1lbW9yeSBOb2Rlcywga25vd24gdG8gdGhlCisgICBrZXJuZWwuCisgLSBFYWNoIHRhc2sgaW4gdGhlIHN5c3RlbSBpcyBhdHRhY2hlZCB0byBhIGNwdXNldCwgdmlhIGEgcG9pbnRlcgorICAgaW4gdGhlIHRhc2sgc3RydWN0dXJlIHRvIGEgcmVmZXJlbmNlIGNvdW50ZWQgY2dyb3VwIHN0cnVjdHVyZS4KKyAtIENhbGxzIHRvIHNjaGVkX3NldGFmZmluaXR5IGFyZSBmaWx0ZXJlZCB0byBqdXN0IHRob3NlIENQVXMKKyAgIGFsbG93ZWQgaW4gdGhhdCB0YXNrJ3MgY3B1c2V0LgorIC0gQ2FsbHMgdG8gbWJpbmQgYW5kIHNldF9tZW1wb2xpY3kgYXJlIGZpbHRlcmVkIHRvIGp1c3QKKyAgIHRob3NlIE1lbW9yeSBOb2RlcyBhbGxvd2VkIGluIHRoYXQgdGFzaydzIGNwdXNldC4KKyAtIFRoZSByb290IGNwdXNldCBjb250YWlucyBhbGwgdGhlIHN5c3RlbXMgQ1BVcyBhbmQgTWVtb3J5CisgICBOb2Rlcy4KKyAtIEZvciBhbnkgY3B1c2V0LCBvbmUgY2FuIGRlZmluZSBjaGlsZCBjcHVzZXRzIGNvbnRhaW5pbmcgYSBzdWJzZXQKKyAgIG9mIHRoZSBwYXJlbnRzIENQVSBhbmQgTWVtb3J5IE5vZGUgcmVzb3VyY2VzLgorIC0gVGhlIGhpZXJhcmNoeSBvZiBjcHVzZXRzIGNhbiBiZSBtb3VudGVkIGF0IC9kZXYvY3B1c2V0LCBmb3IKKyAgIGJyb3dzaW5nIGFuZCBtYW5pcHVsYXRpb24gZnJvbSB1c2VyIHNwYWNlLgorIC0gQSBjcHVzZXQgbWF5IGJlIG1hcmtlZCBleGNsdXNpdmUsIHdoaWNoIGVuc3VyZXMgdGhhdCBubyBvdGhlcgorICAgY3B1c2V0IChleGNlcHQgZGlyZWN0IGFuY2VzdG9ycyBhbmQgZGVzY2VuZGFudHMpIG1heSBjb250YWluCisgICBhbnkgb3ZlcmxhcHBpbmcgQ1BVcyBvciBNZW1vcnkgTm9kZXMuCisgLSBZb3UgY2FuIGxpc3QgYWxsIHRoZSB0YXNrcyAoYnkgcGlkKSBhdHRhY2hlZCB0byBhbnkgY3B1c2V0LgorCitUaGUgaW1wbGVtZW50YXRpb24gb2YgY3B1c2V0cyByZXF1aXJlcyBhIGZldywgc2ltcGxlIGhvb2tzCitpbnRvIHRoZSByZXN0IG9mIHRoZSBrZXJuZWwsIG5vbmUgaW4gcGVyZm9ybWFuY2UgY3JpdGljYWwgcGF0aHM6CisKKyAtIGluIGluaXQvbWFpbi5jLCB0byBpbml0aWFsaXplIHRoZSByb290IGNwdXNldCBhdCBzeXN0ZW0gYm9vdC4KKyAtIGluIGZvcmsgYW5kIGV4aXQsIHRvIGF0dGFjaCBhbmQgZGV0YWNoIGEgdGFzayBmcm9tIGl0cyBjcHVzZXQuCisgLSBpbiBzY2hlZF9zZXRhZmZpbml0eSwgdG8gbWFzayB0aGUgcmVxdWVzdGVkIENQVXMgYnkgd2hhdCdzCisgICBhbGxvd2VkIGluIHRoYXQgdGFzaydzIGNwdXNldC4KKyAtIGluIHNjaGVkLmMgbWlncmF0ZV9saXZlX3Rhc2tzKCksIHRvIGtlZXAgbWlncmF0aW5nIHRhc2tzIHdpdGhpbgorICAgdGhlIENQVXMgYWxsb3dlZCBieSB0aGVpciBjcHVzZXQsIGlmIHBvc3NpYmxlLgorIC0gaW4gdGhlIG1iaW5kIGFuZCBzZXRfbWVtcG9saWN5IHN5c3RlbSBjYWxscywgdG8gbWFzayB0aGUgcmVxdWVzdGVkCisgICBNZW1vcnkgTm9kZXMgYnkgd2hhdCdzIGFsbG93ZWQgaW4gdGhhdCB0YXNrJ3MgY3B1c2V0LgorIC0gaW4gcGFnZV9hbGxvYy5jLCB0byByZXN0cmljdCBtZW1vcnkgdG8gYWxsb3dlZCBub2Rlcy4KKyAtIGluIHZtc2Nhbi5jLCB0byByZXN0cmljdCBwYWdlIHJlY292ZXJ5IHRvIHRoZSBjdXJyZW50IGNwdXNldC4KKworWW91IHNob3VsZCBtb3VudCB0aGUgImNncm91cCIgZmlsZXN5c3RlbSB0eXBlIGluIG9yZGVyIHRvIGVuYWJsZQorYnJvd3NpbmcgYW5kIG1vZGlmeWluZyB0aGUgY3B1c2V0cyBwcmVzZW50bHkga25vd24gdG8gdGhlIGtlcm5lbC4gIE5vCituZXcgc3lzdGVtIGNhbGxzIGFyZSBhZGRlZCBmb3IgY3B1c2V0cyAtIGFsbCBzdXBwb3J0IGZvciBxdWVyeWluZyBhbmQKK21vZGlmeWluZyBjcHVzZXRzIGlzIHZpYSB0aGlzIGNwdXNldCBmaWxlIHN5c3RlbS4KKworVGhlIC9wcm9jLzxwaWQ+L3N0YXR1cyBmaWxlIGZvciBlYWNoIHRhc2sgaGFzIGZvdXIgYWRkZWQgbGluZXMsCitkaXNwbGF5aW5nIHRoZSB0YXNrJ3MgY3B1c19hbGxvd2VkIChvbiB3aGljaCBDUFVzIGl0IG1heSBiZSBzY2hlZHVsZWQpCithbmQgbWVtc19hbGxvd2VkIChvbiB3aGljaCBNZW1vcnkgTm9kZXMgaXQgbWF5IG9idGFpbiBtZW1vcnkpLAoraW4gdGhlIHR3byBmb3JtYXRzIHNlZW4gaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlOgorCisgIENwdXNfYWxsb3dlZDogICBmZmZmZmZmZixmZmZmZmZmZixmZmZmZmZmZixmZmZmZmZmZgorICBDcHVzX2FsbG93ZWRfbGlzdDogICAgICAwLTEyNworICBNZW1zX2FsbG93ZWQ6ICAgZmZmZmZmZmYsZmZmZmZmZmYKKyAgTWVtc19hbGxvd2VkX2xpc3Q6ICAgICAgMC02MworCitFYWNoIGNwdXNldCBpcyByZXByZXNlbnRlZCBieSBhIGRpcmVjdG9yeSBpbiB0aGUgY2dyb3VwIGZpbGUgc3lzdGVtCitjb250YWluaW5nIChvbiB0b3Agb2YgdGhlIHN0YW5kYXJkIGNncm91cCBmaWxlcykgdGhlIGZvbGxvd2luZworZmlsZXMgZGVzY3JpYmluZyB0aGF0IGNwdXNldDoKKworIC0gY3B1c2V0LmNwdXM6IGxpc3Qgb2YgQ1BVcyBpbiB0aGF0IGNwdXNldAorIC0gY3B1c2V0Lm1lbXM6IGxpc3Qgb2YgTWVtb3J5IE5vZGVzIGluIHRoYXQgY3B1c2V0CisgLSBjcHVzZXQubWVtb3J5X21pZ3JhdGUgZmxhZzogaWYgc2V0LCBtb3ZlIHBhZ2VzIHRvIGNwdXNldHMgbm9kZXMKKyAtIGNwdXNldC5jcHVfZXhjbHVzaXZlIGZsYWc6IGlzIGNwdSBwbGFjZW1lbnQgZXhjbHVzaXZlPworIC0gY3B1c2V0Lm1lbV9leGNsdXNpdmUgZmxhZzogaXMgbWVtb3J5IHBsYWNlbWVudCBleGNsdXNpdmU/CisgLSBjcHVzZXQubWVtX2hhcmR3YWxsIGZsYWc6ICBpcyBtZW1vcnkgYWxsb2NhdGlvbiBoYXJkd2FsbGVkCisgLSBjcHVzZXQubWVtb3J5X3ByZXNzdXJlOiBtZWFzdXJlIG9mIGhvdyBtdWNoIHBhZ2luZyBwcmVzc3VyZSBpbiBjcHVzZXQKKyAtIGNwdXNldC5tZW1vcnlfc3ByZWFkX3BhZ2UgZmxhZzogaWYgc2V0LCBzcHJlYWQgcGFnZSBjYWNoZSBldmVubHkgb24gYWxsb3dlZCBub2RlcworIC0gY3B1c2V0Lm1lbW9yeV9zcHJlYWRfc2xhYiBmbGFnOiBpZiBzZXQsIHNwcmVhZCBzbGFiIGNhY2hlIGV2ZW5seSBvbiBhbGxvd2VkIG5vZGVzCisgLSBjcHVzZXQuc2NoZWRfbG9hZF9iYWxhbmNlIGZsYWc6IGlmIHNldCwgbG9hZCBiYWxhbmNlIHdpdGhpbiBDUFVzIG9uIHRoYXQgY3B1c2V0CisgLSBjcHVzZXQuc2NoZWRfcmVsYXhfZG9tYWluX2xldmVsOiB0aGUgc2VhcmNoaW5nIHJhbmdlIHdoZW4gbWlncmF0aW5nIHRhc2tzCisKK0luIGFkZGl0aW9uLCBvbmx5IHRoZSByb290IGNwdXNldCBoYXMgdGhlIGZvbGxvd2luZyBmaWxlOgorIC0gY3B1c2V0Lm1lbW9yeV9wcmVzc3VyZV9lbmFibGVkIGZsYWc6IGNvbXB1dGUgbWVtb3J5X3ByZXNzdXJlPworCitOZXcgY3B1c2V0cyBhcmUgY3JlYXRlZCB1c2luZyB0aGUgbWtkaXIgc3lzdGVtIGNhbGwgb3Igc2hlbGwKK2NvbW1hbmQuICBUaGUgcHJvcGVydGllcyBvZiBhIGNwdXNldCwgc3VjaCBhcyBpdHMgZmxhZ3MsIGFsbG93ZWQKK0NQVXMgYW5kIE1lbW9yeSBOb2RlcywgYW5kIGF0dGFjaGVkIHRhc2tzLCBhcmUgbW9kaWZpZWQgYnkgd3JpdGluZwordG8gdGhlIGFwcHJvcHJpYXRlIGZpbGUgaW4gdGhhdCBjcHVzZXRzIGRpcmVjdG9yeSwgYXMgbGlzdGVkIGFib3ZlLgorCitUaGUgbmFtZWQgaGllcmFyY2hpY2FsIHN0cnVjdHVyZSBvZiBuZXN0ZWQgY3B1c2V0cyBhbGxvd3MgcGFydGl0aW9uaW5nCithIGxhcmdlIHN5c3RlbSBpbnRvIG5lc3RlZCwgZHluYW1pY2FsbHkgY2hhbmdlYWJsZSwgInNvZnQtcGFydGl0aW9ucyIuCisKK1RoZSBhdHRhY2htZW50IG9mIGVhY2ggdGFzaywgYXV0b21hdGljYWxseSBpbmhlcml0ZWQgYXQgZm9yayBieSBhbnkKK2NoaWxkcmVuIG9mIHRoYXQgdGFzaywgdG8gYSBjcHVzZXQgYWxsb3dzIG9yZ2FuaXppbmcgdGhlIHdvcmsgbG9hZAorb24gYSBzeXN0ZW0gaW50byByZWxhdGVkIHNldHMgb2YgdGFza3Mgc3VjaCB0aGF0IGVhY2ggc2V0IGlzIGNvbnN0cmFpbmVkCit0byB1c2luZyB0aGUgQ1BVcyBhbmQgTWVtb3J5IE5vZGVzIG9mIGEgcGFydGljdWxhciBjcHVzZXQuICBBIHRhc2sKK21heSBiZSByZS1hdHRhY2hlZCB0byBhbnkgb3RoZXIgY3B1c2V0LCBpZiBhbGxvd2VkIGJ5IHRoZSBwZXJtaXNzaW9ucworb24gdGhlIG5lY2Vzc2FyeSBjcHVzZXQgZmlsZSBzeXN0ZW0gZGlyZWN0b3JpZXMuCisKK1N1Y2ggbWFuYWdlbWVudCBvZiBhIHN5c3RlbSAiaW4gdGhlIGxhcmdlIiBpbnRlZ3JhdGVzIHNtb290aGx5IHdpdGgKK3RoZSBkZXRhaWxlZCBwbGFjZW1lbnQgZG9uZSBvbiBpbmRpdmlkdWFsIHRhc2tzIGFuZCBtZW1vcnkgcmVnaW9ucwordXNpbmcgdGhlIHNjaGVkX3NldGFmZmluaXR5LCBtYmluZCBhbmQgc2V0X21lbXBvbGljeSBzeXN0ZW0gY2FsbHMuCisKK1RoZSBmb2xsb3dpbmcgcnVsZXMgYXBwbHkgdG8gZWFjaCBjcHVzZXQ6CisKKyAtIEl0cyBDUFVzIGFuZCBNZW1vcnkgTm9kZXMgbXVzdCBiZSBhIHN1YnNldCBvZiBpdHMgcGFyZW50cy4KKyAtIEl0IGNhbid0IGJlIG1hcmtlZCBleGNsdXNpdmUgdW5sZXNzIGl0cyBwYXJlbnQgaXMuCisgLSBJZiBpdHMgY3B1IG9yIG1lbW9yeSBpcyBleGNsdXNpdmUsIHRoZXkgbWF5IG5vdCBvdmVybGFwIGFueSBzaWJsaW5nLgorCitUaGVzZSBydWxlcywgYW5kIHRoZSBuYXR1cmFsIGhpZXJhcmNoeSBvZiBjcHVzZXRzLCBlbmFibGUgZWZmaWNpZW50CitlbmZvcmNlbWVudCBvZiB0aGUgZXhjbHVzaXZlIGd1YXJhbnRlZSwgd2l0aG91dCBoYXZpbmcgdG8gc2NhbiBhbGwKK2NwdXNldHMgZXZlcnkgdGltZSBhbnkgb2YgdGhlbSBjaGFuZ2UgdG8gZW5zdXJlIG5vdGhpbmcgb3ZlcmxhcHMgYQorZXhjbHVzaXZlIGNwdXNldC4gIEFsc28sIHRoZSB1c2Ugb2YgYSBMaW51eCB2aXJ0dWFsIGZpbGUgc3lzdGVtICh2ZnMpCit0byByZXByZXNlbnQgdGhlIGNwdXNldCBoaWVyYXJjaHkgcHJvdmlkZXMgZm9yIGEgZmFtaWxpYXIgcGVybWlzc2lvbgorYW5kIG5hbWUgc3BhY2UgZm9yIGNwdXNldHMsIHdpdGggYSBtaW5pbXVtIG9mIGFkZGl0aW9uYWwga2VybmVsIGNvZGUuCisKK1RoZSBjcHVzIGFuZCBtZW1zIGZpbGVzIGluIHRoZSByb290ICh0b3BfY3B1c2V0KSBjcHVzZXQgYXJlCityZWFkLW9ubHkuICBUaGUgY3B1cyBmaWxlIGF1dG9tYXRpY2FsbHkgdHJhY2tzIHRoZSB2YWx1ZSBvZgorY3B1X29ubGluZV9tYXNrIHVzaW5nIGEgQ1BVIGhvdHBsdWcgbm90aWZpZXIsIGFuZCB0aGUgbWVtcyBmaWxlCithdXRvbWF0aWNhbGx5IHRyYWNrcyB0aGUgdmFsdWUgb2Ygbm9kZV9zdGF0ZXNbTl9NRU1PUlldLS1pLmUuLAorbm9kZXMgd2l0aCBtZW1vcnktLXVzaW5nIHRoZSBjcHVzZXRfdHJhY2tfb25saW5lX25vZGVzKCkgaG9vay4KKworCisxLjQgV2hhdCBhcmUgZXhjbHVzaXZlIGNwdXNldHMgPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgYSBjcHVzZXQgaXMgY3B1IG9yIG1lbSBleGNsdXNpdmUsIG5vIG90aGVyIGNwdXNldCwgb3RoZXIgdGhhbgorYSBkaXJlY3QgYW5jZXN0b3Igb3IgZGVzY2VuZGFudCwgbWF5IHNoYXJlIGFueSBvZiB0aGUgc2FtZSBDUFVzIG9yCitNZW1vcnkgTm9kZXMuCisKK0EgY3B1c2V0IHRoYXQgaXMgY3B1c2V0Lm1lbV9leGNsdXNpdmUgKm9yKiBjcHVzZXQubWVtX2hhcmR3YWxsIGlzICJoYXJkd2FsbGVkIiwKK2kuZS4gaXQgcmVzdHJpY3RzIGtlcm5lbCBhbGxvY2F0aW9ucyBmb3IgcGFnZSwgYnVmZmVyIGFuZCBvdGhlciBkYXRhCitjb21tb25seSBzaGFyZWQgYnkgdGhlIGtlcm5lbCBhY3Jvc3MgbXVsdGlwbGUgdXNlcnMuICBBbGwgY3B1c2V0cywKK3doZXRoZXIgaGFyZHdhbGxlZCBvciBub3QsIHJlc3RyaWN0IGFsbG9jYXRpb25zIG9mIG1lbW9yeSBmb3IgdXNlcgorc3BhY2UuICBUaGlzIGVuYWJsZXMgY29uZmlndXJpbmcgYSBzeXN0ZW0gc28gdGhhdCBzZXZlcmFsIGluZGVwZW5kZW50Citqb2JzIGNhbiBzaGFyZSBjb21tb24ga2VybmVsIGRhdGEsIHN1Y2ggYXMgZmlsZSBzeXN0ZW0gcGFnZXMsIHdoaWxlCitpc29sYXRpbmcgZWFjaCBqb2IncyB1c2VyIGFsbG9jYXRpb24gaW4gaXRzIG93biBjcHVzZXQuICBUbyBkbyB0aGlzLAorY29uc3RydWN0IGEgbGFyZ2UgbWVtX2V4Y2x1c2l2ZSBjcHVzZXQgdG8gaG9sZCBhbGwgdGhlIGpvYnMsIGFuZAorY29uc3RydWN0IGNoaWxkLCBub24tbWVtX2V4Y2x1c2l2ZSBjcHVzZXRzIGZvciBlYWNoIGluZGl2aWR1YWwgam9iLgorT25seSBhIHNtYWxsIGFtb3VudCBvZiB0eXBpY2FsIGtlcm5lbCBtZW1vcnksIHN1Y2ggYXMgcmVxdWVzdHMgZnJvbQoraW50ZXJydXB0IGhhbmRsZXJzLCBpcyBhbGxvd2VkIHRvIGJlIHRha2VuIG91dHNpZGUgZXZlbiBhCittZW1fZXhjbHVzaXZlIGNwdXNldC4KKworCisxLjUgV2hhdCBpcyBtZW1vcnlfcHJlc3N1cmUgPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBtZW1vcnlfcHJlc3N1cmUgb2YgYSBjcHVzZXQgcHJvdmlkZXMgYSBzaW1wbGUgcGVyLWNwdXNldCBtZXRyaWMKK29mIHRoZSByYXRlIHRoYXQgdGhlIHRhc2tzIGluIGEgY3B1c2V0IGFyZSBhdHRlbXB0aW5nIHRvIGZyZWUgdXAgaW4KK3VzZSBtZW1vcnkgb24gdGhlIG5vZGVzIG9mIHRoZSBjcHVzZXQgdG8gc2F0aXNmeSBhZGRpdGlvbmFsIG1lbW9yeQorcmVxdWVzdHMuCisKK1RoaXMgZW5hYmxlcyBiYXRjaCBtYW5hZ2VycyBtb25pdG9yaW5nIGpvYnMgcnVubmluZyBpbiBkZWRpY2F0ZWQKK2NwdXNldHMgdG8gZWZmaWNpZW50bHkgZGV0ZWN0IHdoYXQgbGV2ZWwgb2YgbWVtb3J5IHByZXNzdXJlIHRoYXQgam9iCitpcyBjYXVzaW5nLgorCitUaGlzIGlzIHVzZWZ1bCBib3RoIG9uIHRpZ2h0bHkgbWFuYWdlZCBzeXN0ZW1zIHJ1bm5pbmcgYSB3aWRlIG1peCBvZgorc3VibWl0dGVkIGpvYnMsIHdoaWNoIG1heSBjaG9vc2UgdG8gdGVybWluYXRlIG9yIHJlLXByaW9yaXRpemUgam9icyB0aGF0CithcmUgdHJ5aW5nIHRvIHVzZSBtb3JlIG1lbW9yeSB0aGFuIGFsbG93ZWQgb24gdGhlIG5vZGVzIGFzc2lnbmVkIHRvIHRoZW0sCithbmQgd2l0aCB0aWdodGx5IGNvdXBsZWQsIGxvbmcgcnVubmluZywgbWFzc2l2ZWx5IHBhcmFsbGVsIHNjaWVudGlmaWMKK2NvbXB1dGluZyBqb2JzIHRoYXQgd2lsbCBkcmFtYXRpY2FsbHkgZmFpbCB0byBtZWV0IHJlcXVpcmVkIHBlcmZvcm1hbmNlCitnb2FscyBpZiB0aGV5IHN0YXJ0IHRvIHVzZSBtb3JlIG1lbW9yeSB0aGFuIGFsbG93ZWQgdG8gdGhlbS4KKworVGhpcyBtZWNoYW5pc20gcHJvdmlkZXMgYSB2ZXJ5IGVjb25vbWljYWwgd2F5IGZvciB0aGUgYmF0Y2ggbWFuYWdlcgordG8gbW9uaXRvciBhIGNwdXNldCBmb3Igc2lnbnMgb2YgbWVtb3J5IHByZXNzdXJlLiAgSXQncyB1cCB0byB0aGUKK2JhdGNoIG1hbmFnZXIgb3Igb3RoZXIgdXNlciBjb2RlIHRvIGRlY2lkZSB3aGF0IHRvIGRvIGFib3V0IGl0IGFuZAordGFrZSBhY3Rpb24uCisKKz09PiBVbmxlc3MgdGhpcyBmZWF0dXJlIGlzIGVuYWJsZWQgYnkgd3JpdGluZyAiMSIgdG8gdGhlIHNwZWNpYWwgZmlsZQorICAgIC9kZXYvY3B1c2V0L21lbW9yeV9wcmVzc3VyZV9lbmFibGVkLCB0aGUgaG9vayBpbiB0aGUgcmViYWxhbmNlCisgICAgY29kZSBvZiBfX2FsbG9jX3BhZ2VzKCkgZm9yIHRoaXMgbWV0cmljIHJlZHVjZXMgdG8gc2ltcGx5IG5vdGljaW5nCisgICAgdGhhdCB0aGUgY3B1c2V0X21lbW9yeV9wcmVzc3VyZV9lbmFibGVkIGZsYWcgaXMgemVyby4gIFNvIG9ubHkKKyAgICBzeXN0ZW1zIHRoYXQgZW5hYmxlIHRoaXMgZmVhdHVyZSB3aWxsIGNvbXB1dGUgdGhlIG1ldHJpYy4KKworV2h5IGEgcGVyLWNwdXNldCwgcnVubmluZyBhdmVyYWdlOgorCisgICAgQmVjYXVzZSB0aGlzIG1ldGVyIGlzIHBlci1jcHVzZXQsIHJhdGhlciB0aGFuIHBlci10YXNrIG9yIG1tLAorICAgIHRoZSBzeXN0ZW0gbG9hZCBpbXBvc2VkIGJ5IGEgYmF0Y2ggc2NoZWR1bGVyIG1vbml0b3JpbmcgdGhpcworICAgIG1ldHJpYyBpcyBzaGFycGx5IHJlZHVjZWQgb24gbGFyZ2Ugc3lzdGVtcywgYmVjYXVzZSBhIHNjYW4gb2YKKyAgICB0aGUgdGFza2xpc3QgY2FuIGJlIGF2b2lkZWQgb24gZWFjaCBzZXQgb2YgcXVlcmllcy4KKworICAgIEJlY2F1c2UgdGhpcyBtZXRlciBpcyBhIHJ1bm5pbmcgYXZlcmFnZSwgaW5zdGVhZCBvZiBhbiBhY2N1bXVsYXRpbmcKKyAgICBjb3VudGVyLCBhIGJhdGNoIHNjaGVkdWxlciBjYW4gZGV0ZWN0IG1lbW9yeSBwcmVzc3VyZSB3aXRoIGEKKyAgICBzaW5nbGUgcmVhZCwgaW5zdGVhZCBvZiBoYXZpbmcgdG8gcmVhZCBhbmQgYWNjdW11bGF0ZSByZXN1bHRzCisgICAgZm9yIGEgcGVyaW9kIG9mIHRpbWUuCisKKyAgICBCZWNhdXNlIHRoaXMgbWV0ZXIgaXMgcGVyLWNwdXNldCByYXRoZXIgdGhhbiBwZXItdGFzayBvciBtbSwKKyAgICB0aGUgYmF0Y2ggc2NoZWR1bGVyIGNhbiBvYnRhaW4gdGhlIGtleSBpbmZvcm1hdGlvbiwgbWVtb3J5CisgICAgcHJlc3N1cmUgaW4gYSBjcHVzZXQsIHdpdGggYSBzaW5nbGUgcmVhZCwgcmF0aGVyIHRoYW4gaGF2aW5nIHRvCisgICAgcXVlcnkgYW5kIGFjY3VtdWxhdGUgcmVzdWx0cyBvdmVyIGFsbCB0aGUgKGR5bmFtaWNhbGx5IGNoYW5naW5nKQorICAgIHNldCBvZiB0YXNrcyBpbiB0aGUgY3B1c2V0LgorCitBIHBlci1jcHVzZXQgc2ltcGxlIGRpZ2l0YWwgZmlsdGVyIChyZXF1aXJlcyBhIHNwaW5sb2NrIGFuZCAzIHdvcmRzCitvZiBkYXRhIHBlci1jcHVzZXQpIGlzIGtlcHQsIGFuZCB1cGRhdGVkIGJ5IGFueSB0YXNrIGF0dGFjaGVkIHRvIHRoYXQKK2NwdXNldCwgaWYgaXQgZW50ZXJzIHRoZSBzeW5jaHJvbm91cyAoZGlyZWN0KSBwYWdlIHJlY2xhaW0gY29kZS4KKworQSBwZXItY3B1c2V0IGZpbGUgcHJvdmlkZXMgYW4gaW50ZWdlciBudW1iZXIgcmVwcmVzZW50aW5nIHRoZSByZWNlbnQKKyhoYWxmLWxpZmUgb2YgMTAgc2Vjb25kcykgcmF0ZSBvZiBkaXJlY3QgcGFnZSByZWNsYWltcyBjYXVzZWQgYnkKK3RoZSB0YXNrcyBpbiB0aGUgY3B1c2V0LCBpbiB1bml0cyBvZiByZWNsYWltcyBhdHRlbXB0ZWQgcGVyIHNlY29uZCwKK3RpbWVzIDEwMDAuCisKKworMS42IFdoYXQgaXMgbWVtb3J5IHNwcmVhZCA/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZXJlIGFyZSB0d28gYm9vbGVhbiBmbGFnIGZpbGVzIHBlciBjcHVzZXQgdGhhdCBjb250cm9sIHdoZXJlIHRoZQora2VybmVsIGFsbG9jYXRlcyBwYWdlcyBmb3IgdGhlIGZpbGUgc3lzdGVtIGJ1ZmZlcnMgYW5kIHJlbGF0ZWQgaW4KK2tlcm5lbCBkYXRhIHN0cnVjdHVyZXMuICBUaGV5IGFyZSBjYWxsZWQgJ2NwdXNldC5tZW1vcnlfc3ByZWFkX3BhZ2UnIGFuZAorJ2NwdXNldC5tZW1vcnlfc3ByZWFkX3NsYWInLgorCitJZiB0aGUgcGVyLWNwdXNldCBib29sZWFuIGZsYWcgZmlsZSAnY3B1c2V0Lm1lbW9yeV9zcHJlYWRfcGFnZScgaXMgc2V0LCB0aGVuCit0aGUga2VybmVsIHdpbGwgc3ByZWFkIHRoZSBmaWxlIHN5c3RlbSBidWZmZXJzIChwYWdlIGNhY2hlKSBldmVubHkKK292ZXIgYWxsIHRoZSBub2RlcyB0aGF0IHRoZSBmYXVsdGluZyB0YXNrIGlzIGFsbG93ZWQgdG8gdXNlLCBpbnN0ZWFkCitvZiBwcmVmZXJyaW5nIHRvIHB1dCB0aG9zZSBwYWdlcyBvbiB0aGUgbm9kZSB3aGVyZSB0aGUgdGFzayBpcyBydW5uaW5nLgorCitJZiB0aGUgcGVyLWNwdXNldCBib29sZWFuIGZsYWcgZmlsZSAnY3B1c2V0Lm1lbW9yeV9zcHJlYWRfc2xhYicgaXMgc2V0LAordGhlbiB0aGUga2VybmVsIHdpbGwgc3ByZWFkIHNvbWUgZmlsZSBzeXN0ZW0gcmVsYXRlZCBzbGFiIGNhY2hlcywKK3N1Y2ggYXMgZm9yIGlub2RlcyBhbmQgZGVudHJpZXMgZXZlbmx5IG92ZXIgYWxsIHRoZSBub2RlcyB0aGF0IHRoZQorZmF1bHRpbmcgdGFzayBpcyBhbGxvd2VkIHRvIHVzZSwgaW5zdGVhZCBvZiBwcmVmZXJyaW5nIHRvIHB1dCB0aG9zZQorcGFnZXMgb24gdGhlIG5vZGUgd2hlcmUgdGhlIHRhc2sgaXMgcnVubmluZy4KKworVGhlIHNldHRpbmcgb2YgdGhlc2UgZmxhZ3MgZG9lcyBub3QgYWZmZWN0IGFub255bW91cyBkYXRhIHNlZ21lbnQgb3IKK3N0YWNrIHNlZ21lbnQgcGFnZXMgb2YgYSB0YXNrLgorCitCeSBkZWZhdWx0LCBib3RoIGtpbmRzIG9mIG1lbW9yeSBzcHJlYWRpbmcgYXJlIG9mZiwgYW5kIG1lbW9yeQorcGFnZXMgYXJlIGFsbG9jYXRlZCBvbiB0aGUgbm9kZSBsb2NhbCB0byB3aGVyZSB0aGUgdGFzayBpcyBydW5uaW5nLAorZXhjZXB0IHBlcmhhcHMgYXMgbW9kaWZpZWQgYnkgdGhlIHRhc2sncyBOVU1BIG1lbXBvbGljeSBvciBjcHVzZXQKK2NvbmZpZ3VyYXRpb24sIHNvIGxvbmcgYXMgc3VmZmljaWVudCBmcmVlIG1lbW9yeSBwYWdlcyBhcmUgYXZhaWxhYmxlLgorCitXaGVuIG5ldyBjcHVzZXRzIGFyZSBjcmVhdGVkLCB0aGV5IGluaGVyaXQgdGhlIG1lbW9yeSBzcHJlYWQgc2V0dGluZ3MKK29mIHRoZWlyIHBhcmVudC4KKworU2V0dGluZyBtZW1vcnkgc3ByZWFkaW5nIGNhdXNlcyBhbGxvY2F0aW9ucyBmb3IgdGhlIGFmZmVjdGVkIHBhZ2UKK29yIHNsYWIgY2FjaGVzIHRvIGlnbm9yZSB0aGUgdGFzaydzIE5VTUEgbWVtcG9saWN5IGFuZCBiZSBzcHJlYWQKK2luc3RlYWQuICAgIFRhc2tzIHVzaW5nIG1iaW5kKCkgb3Igc2V0X21lbXBvbGljeSgpIGNhbGxzIHRvIHNldCBOVU1BCittZW1wb2xpY2llcyB3aWxsIG5vdCBub3RpY2UgYW55IGNoYW5nZSBpbiB0aGVzZSBjYWxscyBhcyBhIHJlc3VsdCBvZgordGhlaXIgY29udGFpbmluZyB0YXNrJ3MgbWVtb3J5IHNwcmVhZCBzZXR0aW5ncy4gIElmIG1lbW9yeSBzcHJlYWRpbmcKK2lzIHR1cm5lZCBvZmYsIHRoZW4gdGhlIGN1cnJlbnRseSBzcGVjaWZpZWQgTlVNQSBtZW1wb2xpY3kgb25jZSBhZ2FpbgorYXBwbGllcyB0byBtZW1vcnkgcGFnZSBhbGxvY2F0aW9ucy4KKworQm90aCAnY3B1c2V0Lm1lbW9yeV9zcHJlYWRfcGFnZScgYW5kICdjcHVzZXQubWVtb3J5X3NwcmVhZF9zbGFiJyBhcmUgYm9vbGVhbiBmbGFnCitmaWxlcy4gIEJ5IGRlZmF1bHQgdGhleSBjb250YWluICIwIiwgbWVhbmluZyB0aGF0IHRoZSBmZWF0dXJlIGlzIG9mZgorZm9yIHRoYXQgY3B1c2V0LiAgSWYgYSAiMSIgaXMgd3JpdHRlbiB0byB0aGF0IGZpbGUsIHRoZW4gdGhhdCB0dXJucwordGhlIG5hbWVkIGZlYXR1cmUgb24uCisKK1RoZSBpbXBsZW1lbnRhdGlvbiBpcyBzaW1wbGUuCisKK1NldHRpbmcgdGhlIGZsYWcgJ2NwdXNldC5tZW1vcnlfc3ByZWFkX3BhZ2UnIHR1cm5zIG9uIGEgcGVyLXByb2Nlc3MgZmxhZworUEZBX1NQUkVBRF9QQUdFIGZvciBlYWNoIHRhc2sgdGhhdCBpcyBpbiB0aGF0IGNwdXNldCBvciBzdWJzZXF1ZW50bHkKK2pvaW5zIHRoYXQgY3B1c2V0LiAgVGhlIHBhZ2UgYWxsb2NhdGlvbiBjYWxscyBmb3IgdGhlIHBhZ2UgY2FjaGUKK2lzIG1vZGlmaWVkIHRvIHBlcmZvcm0gYW4gaW5saW5lIGNoZWNrIGZvciB0aGlzIFBGQV9TUFJFQURfUEFHRSB0YXNrCitmbGFnLCBhbmQgaWYgc2V0LCBhIGNhbGwgdG8gYSBuZXcgcm91dGluZSBjcHVzZXRfbWVtX3NwcmVhZF9ub2RlKCkKK3JldHVybnMgdGhlIG5vZGUgdG8gcHJlZmVyIGZvciB0aGUgYWxsb2NhdGlvbi4KKworU2ltaWxhcmx5LCBzZXR0aW5nICdjcHVzZXQubWVtb3J5X3NwcmVhZF9zbGFiJyB0dXJucyBvbiB0aGUgZmxhZworUEZBX1NQUkVBRF9TTEFCLCBhbmQgYXBwcm9wcmlhdGVseSBtYXJrZWQgc2xhYiBjYWNoZXMgd2lsbCBhbGxvY2F0ZQorcGFnZXMgZnJvbSB0aGUgbm9kZSByZXR1cm5lZCBieSBjcHVzZXRfbWVtX3NwcmVhZF9ub2RlKCkuCisKK1RoZSBjcHVzZXRfbWVtX3NwcmVhZF9ub2RlKCkgcm91dGluZSBpcyBhbHNvIHNpbXBsZS4gIEl0IHVzZXMgdGhlCit2YWx1ZSBvZiBhIHBlci10YXNrIHJvdG9yIGNwdXNldF9tZW1fc3ByZWFkX3JvdG9yIHRvIHNlbGVjdCB0aGUgbmV4dAorbm9kZSBpbiB0aGUgY3VycmVudCB0YXNrJ3MgbWVtc19hbGxvd2VkIHRvIHByZWZlciBmb3IgdGhlIGFsbG9jYXRpb24uCisKK1RoaXMgbWVtb3J5IHBsYWNlbWVudCBwb2xpY3kgaXMgYWxzbyBrbm93biAoaW4gb3RoZXIgY29udGV4dHMpIGFzCityb3VuZC1yb2JpbiBvciBpbnRlcmxlYXZlLgorCitUaGlzIHBvbGljeSBjYW4gcHJvdmlkZSBzdWJzdGFudGlhbCBpbXByb3ZlbWVudHMgZm9yIGpvYnMgdGhhdCBuZWVkCit0byBwbGFjZSB0aHJlYWQgbG9jYWwgZGF0YSBvbiB0aGUgY29ycmVzcG9uZGluZyBub2RlLCBidXQgdGhhdCBuZWVkCit0byBhY2Nlc3MgbGFyZ2UgZmlsZSBzeXN0ZW0gZGF0YSBzZXRzIHRoYXQgbmVlZCB0byBiZSBzcHJlYWQgYWNyb3NzCit0aGUgc2V2ZXJhbCBub2RlcyBpbiB0aGUgam9icyBjcHVzZXQgaW4gb3JkZXIgdG8gZml0LiAgV2l0aG91dCB0aGlzCitwb2xpY3ksIGVzcGVjaWFsbHkgZm9yIGpvYnMgdGhhdCBtaWdodCBoYXZlIG9uZSB0aHJlYWQgcmVhZGluZyBpbiB0aGUKK2RhdGEgc2V0LCB0aGUgbWVtb3J5IGFsbG9jYXRpb24gYWNyb3NzIHRoZSBub2RlcyBpbiB0aGUgam9icyBjcHVzZXQKK2NhbiBiZWNvbWUgdmVyeSB1bmV2ZW4uCisKKzEuNyBXaGF0IGlzIHNjaGVkX2xvYWRfYmFsYW5jZSA/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUga2VybmVsIHNjaGVkdWxlciAoa2VybmVsL3NjaGVkL2NvcmUuYykgYXV0b21hdGljYWxseSBsb2FkIGJhbGFuY2VzCit0YXNrcy4gIElmIG9uZSBDUFUgaXMgdW5kZXJ1dGlsaXplZCwga2VybmVsIGNvZGUgcnVubmluZyBvbiB0aGF0CitDUFUgd2lsbCBsb29rIGZvciB0YXNrcyBvbiBvdGhlciBtb3JlIG92ZXJsb2FkZWQgQ1BVcyBhbmQgbW92ZSB0aG9zZQordGFza3MgdG8gaXRzZWxmLCB3aXRoaW4gdGhlIGNvbnN0cmFpbnRzIG9mIHN1Y2ggcGxhY2VtZW50IG1lY2hhbmlzbXMKK2FzIGNwdXNldHMgYW5kIHNjaGVkX3NldGFmZmluaXR5LgorCitUaGUgYWxnb3JpdGhtaWMgY29zdCBvZiBsb2FkIGJhbGFuY2luZyBhbmQgaXRzIGltcGFjdCBvbiBrZXkgc2hhcmVkCitrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzIHN1Y2ggYXMgdGhlIHRhc2sgbGlzdCBpbmNyZWFzZXMgbW9yZSB0aGFuCitsaW5lYXJseSB3aXRoIHRoZSBudW1iZXIgb2YgQ1BVcyBiZWluZyBiYWxhbmNlZC4gIFNvIHRoZSBzY2hlZHVsZXIKK2hhcyBzdXBwb3J0IHRvIHBhcnRpdGlvbiB0aGUgc3lzdGVtcyBDUFVzIGludG8gYSBudW1iZXIgb2Ygc2NoZWQKK2RvbWFpbnMgc3VjaCB0aGF0IGl0IG9ubHkgbG9hZCBiYWxhbmNlcyB3aXRoaW4gZWFjaCBzY2hlZCBkb21haW4uCitFYWNoIHNjaGVkIGRvbWFpbiBjb3ZlcnMgc29tZSBzdWJzZXQgb2YgdGhlIENQVXMgaW4gdGhlIHN5c3RlbTsKK25vIHR3byBzY2hlZCBkb21haW5zIG92ZXJsYXA7IHNvbWUgQ1BVcyBtaWdodCBub3QgYmUgaW4gYW55IHNjaGVkCitkb21haW4gYW5kIGhlbmNlIHdvbid0IGJlIGxvYWQgYmFsYW5jZWQuCisKK1B1dCBzaW1wbHksIGl0IGNvc3RzIGxlc3MgdG8gYmFsYW5jZSBiZXR3ZWVuIHR3byBzbWFsbGVyIHNjaGVkIGRvbWFpbnMKK3RoYW4gb25lIGJpZyBvbmUsIGJ1dCBkb2luZyBzbyBtZWFucyB0aGF0IG92ZXJsb2FkcyBpbiBvbmUgb2YgdGhlCit0d28gZG9tYWlucyB3b24ndCBiZSBsb2FkIGJhbGFuY2VkIHRvIHRoZSBvdGhlciBvbmUuCisKK0J5IGRlZmF1bHQsIHRoZXJlIGlzIG9uZSBzY2hlZCBkb21haW4gY292ZXJpbmcgYWxsIENQVXMsIGluY2x1ZGluZyB0aG9zZQorbWFya2VkIGlzb2xhdGVkIHVzaW5nIHRoZSBrZXJuZWwgYm9vdCB0aW1lICJpc29sY3B1cz0iIGFyZ3VtZW50LiBIb3dldmVyLAordGhlIGlzb2xhdGVkIENQVXMgd2lsbCBub3QgcGFydGljaXBhdGUgaW4gbG9hZCBiYWxhbmNpbmcsIGFuZCB3aWxsIG5vdAoraGF2ZSB0YXNrcyBydW5uaW5nIG9uIHRoZW0gdW5sZXNzIGV4cGxpY2l0bHkgYXNzaWduZWQuCisKK1RoaXMgZGVmYXVsdCBsb2FkIGJhbGFuY2luZyBhY3Jvc3MgYWxsIENQVXMgaXMgbm90IHdlbGwgc3VpdGVkIGZvcgordGhlIGZvbGxvd2luZyB0d28gc2l0dWF0aW9uczoKKyAxKSBPbiBsYXJnZSBzeXN0ZW1zLCBsb2FkIGJhbGFuY2luZyBhY3Jvc3MgbWFueSBDUFVzIGlzIGV4cGVuc2l2ZS4KKyAgICBJZiB0aGUgc3lzdGVtIGlzIG1hbmFnZWQgdXNpbmcgY3B1c2V0cyB0byBwbGFjZSBpbmRlcGVuZGVudCBqb2JzCisgICAgb24gc2VwYXJhdGUgc2V0cyBvZiBDUFVzLCBmdWxsIGxvYWQgYmFsYW5jaW5nIGlzIHVubmVjZXNzYXJ5LgorIDIpIFN5c3RlbXMgc3VwcG9ydGluZyByZWFsdGltZSBvbiBzb21lIENQVXMgbmVlZCB0byBtaW5pbWl6ZQorICAgIHN5c3RlbSBvdmVyaGVhZCBvbiB0aG9zZSBDUFVzLCBpbmNsdWRpbmcgYXZvaWRpbmcgdGFzayBsb2FkCisgICAgYmFsYW5jaW5nIGlmIHRoYXQgaXMgbm90IG5lZWRlZC4KKworV2hlbiB0aGUgcGVyLWNwdXNldCBmbGFnICJjcHVzZXQuc2NoZWRfbG9hZF9iYWxhbmNlIiBpcyBlbmFibGVkICh0aGUgZGVmYXVsdAorc2V0dGluZyksIGl0IHJlcXVlc3RzIHRoYXQgYWxsIHRoZSBDUFVzIGluIHRoYXQgY3B1c2V0cyBhbGxvd2VkICdjcHVzZXQuY3B1cycKK2JlIGNvbnRhaW5lZCBpbiBhIHNpbmdsZSBzY2hlZCBkb21haW4sIGVuc3VyaW5nIHRoYXQgbG9hZCBiYWxhbmNpbmcKK2NhbiBtb3ZlIGEgdGFzayAobm90IG90aGVyd2lzZWQgcGlubmVkLCBhcyBieSBzY2hlZF9zZXRhZmZpbml0eSkKK2Zyb20gYW55IENQVSBpbiB0aGF0IGNwdXNldCB0byBhbnkgb3RoZXIuCisKK1doZW4gdGhlIHBlci1jcHVzZXQgZmxhZyAiY3B1c2V0LnNjaGVkX2xvYWRfYmFsYW5jZSIgaXMgZGlzYWJsZWQsIHRoZW4gdGhlCitzY2hlZHVsZXIgd2lsbCBhdm9pZCBsb2FkIGJhbGFuY2luZyBhY3Jvc3MgdGhlIENQVXMgaW4gdGhhdCBjcHVzZXQsCistLWV4Y2VwdC0tIGluIHNvIGZhciBhcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBzb21lIG92ZXJsYXBwaW5nIGNwdXNldAoraGFzICJzY2hlZF9sb2FkX2JhbGFuY2UiIGVuYWJsZWQuCisKK1NvLCBmb3IgZXhhbXBsZSwgaWYgdGhlIHRvcCBjcHVzZXQgaGFzIHRoZSBmbGFnICJjcHVzZXQuc2NoZWRfbG9hZF9iYWxhbmNlIgorZW5hYmxlZCwgdGhlbiB0aGUgc2NoZWR1bGVyIHdpbGwgaGF2ZSBvbmUgc2NoZWQgZG9tYWluIGNvdmVyaW5nIGFsbAorQ1BVcywgYW5kIHRoZSBzZXR0aW5nIG9mIHRoZSAiY3B1c2V0LnNjaGVkX2xvYWRfYmFsYW5jZSIgZmxhZyBpbiBhbnkgb3RoZXIKK2NwdXNldHMgd29uJ3QgbWF0dGVyLCBhcyB3ZSdyZSBhbHJlYWR5IGZ1bGx5IGxvYWQgYmFsYW5jaW5nLgorCitUaGVyZWZvcmUgaW4gdGhlIGFib3ZlIHR3byBzaXR1YXRpb25zLCB0aGUgdG9wIGNwdXNldCBmbGFnCisiY3B1c2V0LnNjaGVkX2xvYWRfYmFsYW5jZSIgc2hvdWxkIGJlIGRpc2FibGVkLCBhbmQgb25seSBzb21lIG9mIHRoZSBzbWFsbGVyLAorY2hpbGQgY3B1c2V0cyBoYXZlIHRoaXMgZmxhZyBlbmFibGVkLgorCitXaGVuIGRvaW5nIHRoaXMsIHlvdSBkb24ndCB1c3VhbGx5IHdhbnQgdG8gbGVhdmUgYW55IHVucGlubmVkIHRhc2tzIGluCit0aGUgdG9wIGNwdXNldCB0aGF0IG1pZ2h0IHVzZSBub24tdHJpdmlhbCBhbW91bnRzIG9mIENQVSwgYXMgc3VjaCB0YXNrcworbWF5IGJlIGFydGlmaWNpYWxseSBjb25zdHJhaW5lZCB0byBzb21lIHN1YnNldCBvZiBDUFVzLCBkZXBlbmRpbmcgb24KK3RoZSBwYXJ0aWN1bGFycyBvZiB0aGlzIGZsYWcgc2V0dGluZyBpbiBkZXNjZW5kYW50IGNwdXNldHMuICBFdmVuIGlmCitzdWNoIGEgdGFzayBjb3VsZCB1c2Ugc3BhcmUgQ1BVIGN5Y2xlcyBpbiBzb21lIG90aGVyIENQVXMsIHRoZSBrZXJuZWwKK3NjaGVkdWxlciBtaWdodCBub3QgY29uc2lkZXIgdGhlIHBvc3NpYmlsaXR5IG9mIGxvYWQgYmFsYW5jaW5nIHRoYXQKK3Rhc2sgdG8gdGhhdCB1bmRlcnVzZWQgQ1BVLgorCitPZiBjb3Vyc2UsIHRhc2tzIHBpbm5lZCB0byBhIHBhcnRpY3VsYXIgQ1BVIGNhbiBiZSBsZWZ0IGluIGEgY3B1c2V0Cit0aGF0IGRpc2FibGVzICJjcHVzZXQuc2NoZWRfbG9hZF9iYWxhbmNlIiBhcyB0aG9zZSB0YXNrcyBhcmVuJ3QgZ29pbmcgYW55d2hlcmUKK2Vsc2UgYW55d2F5LgorCitUaGVyZSBpcyBhbiBpbXBlZGFuY2UgbWlzbWF0Y2ggaGVyZSwgYmV0d2VlbiBjcHVzZXRzIGFuZCBzY2hlZCBkb21haW5zLgorQ3B1c2V0cyBhcmUgaGllcmFyY2hpY2FsIGFuZCBuZXN0LiAgU2NoZWQgZG9tYWlucyBhcmUgZmxhdDsgdGhleSBkb24ndAorb3ZlcmxhcCBhbmQgZWFjaCBDUFUgaXMgaW4gYXQgbW9zdCBvbmUgc2NoZWQgZG9tYWluLgorCitJdCBpcyBuZWNlc3NhcnkgZm9yIHNjaGVkIGRvbWFpbnMgdG8gYmUgZmxhdCBiZWNhdXNlIGxvYWQgYmFsYW5jaW5nCithY3Jvc3MgcGFydGlhbGx5IG92ZXJsYXBwaW5nIHNldHMgb2YgQ1BVcyB3b3VsZCByaXNrIHVuc3RhYmxlIGR5bmFtaWNzCit0aGF0IHdvdWxkIGJlIGJleW9uZCBvdXIgdW5kZXJzdGFuZGluZy4gIFNvIGlmIGVhY2ggb2YgdHdvIHBhcnRpYWxseQorb3ZlcmxhcHBpbmcgY3B1c2V0cyBlbmFibGVzIHRoZSBmbGFnICdjcHVzZXQuc2NoZWRfbG9hZF9iYWxhbmNlJywgdGhlbiB3ZQorZm9ybSBhIHNpbmdsZSBzY2hlZCBkb21haW4gdGhhdCBpcyBhIHN1cGVyc2V0IG9mIGJvdGguICBXZSB3b24ndCBtb3ZlCithIHRhc2sgdG8gYSBDUFUgb3V0c2lkZSBpdHMgY3B1c2V0LCBidXQgdGhlIHNjaGVkdWxlciBsb2FkIGJhbGFuY2luZworY29kZSBtaWdodCB3YXN0ZSBzb21lIGNvbXB1dGUgY3ljbGVzIGNvbnNpZGVyaW5nIHRoYXQgcG9zc2liaWxpdHkuCisKK1RoaXMgbWlzbWF0Y2ggaXMgd2h5IHRoZXJlIGlzIG5vdCBhIHNpbXBsZSBvbmUtdG8tb25lIHJlbGF0aW9uCitiZXR3ZWVuIHdoaWNoIGNwdXNldHMgaGF2ZSB0aGUgZmxhZyAiY3B1c2V0LnNjaGVkX2xvYWRfYmFsYW5jZSIgZW5hYmxlZCwKK2FuZCB0aGUgc2NoZWQgZG9tYWluIGNvbmZpZ3VyYXRpb24uICBJZiBhIGNwdXNldCBlbmFibGVzIHRoZSBmbGFnLCBpdAord2lsbCBnZXQgYmFsYW5jaW5nIGFjcm9zcyBhbGwgaXRzIENQVXMsIGJ1dCBpZiBpdCBkaXNhYmxlcyB0aGUgZmxhZywKK2l0IHdpbGwgb25seSBiZSBhc3N1cmVkIG9mIG5vIGxvYWQgYmFsYW5jaW5nIGlmIG5vIG90aGVyIG92ZXJsYXBwaW5nCitjcHVzZXQgZW5hYmxlcyB0aGUgZmxhZy4KKworSWYgdHdvIGNwdXNldHMgaGF2ZSBwYXJ0aWFsbHkgb3ZlcmxhcHBpbmcgJ2NwdXNldC5jcHVzJyBhbGxvd2VkLCBhbmQgb25seQorb25lIG9mIHRoZW0gaGFzIHRoaXMgZmxhZyBlbmFibGVkLCB0aGVuIHRoZSBvdGhlciBtYXkgZmluZCBpdHMKK3Rhc2tzIG9ubHkgcGFydGlhbGx5IGxvYWQgYmFsYW5jZWQsIGp1c3Qgb24gdGhlIG92ZXJsYXBwaW5nIENQVXMuCitUaGlzIGlzIGp1c3QgdGhlIGdlbmVyYWwgY2FzZSBvZiB0aGUgdG9wX2NwdXNldCBleGFtcGxlIGdpdmVuIGEgZmV3CitwYXJhZ3JhcGhzIGFib3ZlLiAgSW4gdGhlIGdlbmVyYWwgY2FzZSwgYXMgaW4gdGhlIHRvcCBjcHVzZXQgY2FzZSwKK2Rvbid0IGxlYXZlIHRhc2tzIHRoYXQgbWlnaHQgdXNlIG5vbi10cml2aWFsIGFtb3VudHMgb2YgQ1BVIGluCitzdWNoIHBhcnRpYWxseSBsb2FkIGJhbGFuY2VkIGNwdXNldHMsIGFzIHRoZXkgbWF5IGJlIGFydGlmaWNpYWxseQorY29uc3RyYWluZWQgdG8gc29tZSBzdWJzZXQgb2YgdGhlIENQVXMgYWxsb3dlZCB0byB0aGVtLCBmb3IgbGFjayBvZgorbG9hZCBiYWxhbmNpbmcgdG8gdGhlIG90aGVyIENQVXMuCisKK0NQVXMgaW4gImNwdXNldC5pc29sY3B1cyIgd2VyZSBleGNsdWRlZCBmcm9tIGxvYWQgYmFsYW5jaW5nIGJ5IHRoZQoraXNvbGNwdXM9IGtlcm5lbCBib290IG9wdGlvbiwgYW5kIHdpbGwgbmV2ZXIgYmUgbG9hZCBiYWxhbmNlZCByZWdhcmRsZXNzCitvZiB0aGUgdmFsdWUgb2YgImNwdXNldC5zY2hlZF9sb2FkX2JhbGFuY2UiIGluIGFueSBjcHVzZXQuCisKKzEuNy4xIHNjaGVkX2xvYWRfYmFsYW5jZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBwZXItY3B1c2V0IGZsYWcgJ2NwdXNldC5zY2hlZF9sb2FkX2JhbGFuY2UnIGRlZmF1bHRzIHRvIGVuYWJsZWQgKGNvbnRyYXJ5Cit0byBtb3N0IGNwdXNldCBmbGFncy4pICBXaGVuIGVuYWJsZWQgZm9yIGEgY3B1c2V0LCB0aGUga2VybmVsIHdpbGwKK2Vuc3VyZSB0aGF0IGl0IGNhbiBsb2FkIGJhbGFuY2UgYWNyb3NzIGFsbCB0aGUgQ1BVcyBpbiB0aGF0IGNwdXNldAorKG1ha2VzIHN1cmUgdGhhdCBhbGwgdGhlIENQVXMgaW4gdGhlIGNwdXNfYWxsb3dlZCBvZiB0aGF0IGNwdXNldCBhcmUKK2luIHRoZSBzYW1lIHNjaGVkIGRvbWFpbi4pCisKK0lmIHR3byBvdmVybGFwcGluZyBjcHVzZXRzIGJvdGggaGF2ZSAnY3B1c2V0LnNjaGVkX2xvYWRfYmFsYW5jZScgZW5hYmxlZCwKK3RoZW4gdGhleSB3aWxsIGJlIChtdXN0IGJlKSBib3RoIGluIHRoZSBzYW1lIHNjaGVkIGRvbWFpbi4KKworSWYsIGFzIGlzIHRoZSBkZWZhdWx0LCB0aGUgdG9wIGNwdXNldCBoYXMgJ2NwdXNldC5zY2hlZF9sb2FkX2JhbGFuY2UnIGVuYWJsZWQsCit0aGVuIGJ5IHRoZSBhYm92ZSB0aGF0IG1lYW5zIHRoZXJlIGlzIGEgc2luZ2xlIHNjaGVkIGRvbWFpbiBjb3ZlcmluZwordGhlIHdob2xlIHN5c3RlbSwgcmVnYXJkbGVzcyBvZiBhbnkgb3RoZXIgY3B1c2V0IHNldHRpbmdzLgorCitUaGUga2VybmVsIGNvbW1pdHMgdG8gdXNlciBzcGFjZSB0aGF0IGl0IHdpbGwgYXZvaWQgbG9hZCBiYWxhbmNpbmcKK3doZXJlIGl0IGNhbi4gIEl0IHdpbGwgcGljayBhcyBmaW5lIGEgZ3JhbnVsYXJpdHkgcGFydGl0aW9uIG9mIHNjaGVkCitkb21haW5zIGFzIGl0IGNhbiB3aGlsZSBzdGlsbCBwcm92aWRpbmcgbG9hZCBiYWxhbmNpbmcgZm9yIGFueSBzZXQKK29mIENQVXMgYWxsb3dlZCB0byBhIGNwdXNldCBoYXZpbmcgJ2NwdXNldC5zY2hlZF9sb2FkX2JhbGFuY2UnIGVuYWJsZWQuCisKK1RoZSBpbnRlcm5hbCBrZXJuZWwgY3B1c2V0IHRvIHNjaGVkdWxlciBpbnRlcmZhY2UgcGFzc2VzIGZyb20gdGhlCitjcHVzZXQgY29kZSB0byB0aGUgc2NoZWR1bGVyIGNvZGUgYSBwYXJ0aXRpb24gb2YgdGhlIGxvYWQgYmFsYW5jZWQKK0NQVXMgaW4gdGhlIHN5c3RlbS4gVGhpcyBwYXJ0aXRpb24gaXMgYSBzZXQgb2Ygc3Vic2V0cyAocmVwcmVzZW50ZWQKK2FzIGFuIGFycmF5IG9mIHN0cnVjdCBjcHVtYXNrKSBvZiBDUFVzLCBwYWlyd2lzZSBkaXNqb2ludCwgdGhhdCBjb3ZlcgorYWxsIHRoZSBDUFVzIHRoYXQgbXVzdCBiZSBsb2FkIGJhbGFuY2VkLgorCitUaGUgY3B1c2V0IGNvZGUgYnVpbGRzIGEgbmV3IHN1Y2ggcGFydGl0aW9uIGFuZCBwYXNzZXMgaXQgdG8gdGhlCitzY2hlZHVsZXIgc2NoZWQgZG9tYWluIHNldHVwIGNvZGUsIHRvIGhhdmUgdGhlIHNjaGVkIGRvbWFpbnMgcmVidWlsdAorYXMgbmVjZXNzYXJ5LCB3aGVuZXZlcjoKKyAtIHRoZSAnY3B1c2V0LnNjaGVkX2xvYWRfYmFsYW5jZScgZmxhZyBvZiBhIGNwdXNldCB3aXRoIG5vbi1lbXB0eSBDUFVzIGNoYW5nZXMsCisgLSBvciBDUFVzIGNvbWUgb3IgZ28gZnJvbSBhIGNwdXNldCB3aXRoIHRoaXMgZmxhZyBlbmFibGVkLAorIC0gb3IgJ2NwdXNldC5zY2hlZF9yZWxheF9kb21haW5fbGV2ZWwnIHZhbHVlIG9mIGEgY3B1c2V0IHdpdGggbm9uLWVtcHR5IENQVXMKKyAgIGFuZCB3aXRoIHRoaXMgZmxhZyBlbmFibGVkIGNoYW5nZXMsCisgLSBvciBhIGNwdXNldCB3aXRoIG5vbi1lbXB0eSBDUFVzIGFuZCB3aXRoIHRoaXMgZmxhZyBlbmFibGVkIGlzIHJlbW92ZWQsCisgLSBvciBhIGNwdSBpcyBvZmZsaW5lZC9vbmxpbmVkLgorCitUaGlzIHBhcnRpdGlvbiBleGFjdGx5IGRlZmluZXMgd2hhdCBzY2hlZCBkb21haW5zIHRoZSBzY2hlZHVsZXIgc2hvdWxkCitzZXR1cCAtIG9uZSBzY2hlZCBkb21haW4gZm9yIGVhY2ggZWxlbWVudCAoc3RydWN0IGNwdW1hc2spIGluIHRoZQorcGFydGl0aW9uLgorCitUaGUgc2NoZWR1bGVyIHJlbWVtYmVycyB0aGUgY3VycmVudGx5IGFjdGl2ZSBzY2hlZCBkb21haW4gcGFydGl0aW9ucy4KK1doZW4gdGhlIHNjaGVkdWxlciByb3V0aW5lIHBhcnRpdGlvbl9zY2hlZF9kb21haW5zKCkgaXMgaW52b2tlZCBmcm9tCit0aGUgY3B1c2V0IGNvZGUgdG8gdXBkYXRlIHRoZXNlIHNjaGVkIGRvbWFpbnMsIGl0IGNvbXBhcmVzIHRoZSBuZXcKK3BhcnRpdGlvbiByZXF1ZXN0ZWQgd2l0aCB0aGUgY3VycmVudCwgYW5kIHVwZGF0ZXMgaXRzIHNjaGVkIGRvbWFpbnMsCityZW1vdmluZyB0aGUgb2xkIGFuZCBhZGRpbmcgdGhlIG5ldywgZm9yIGVhY2ggY2hhbmdlLgorCisKKzEuOCBXaGF0IGlzIHNjaGVkX3JlbGF4X2RvbWFpbl9sZXZlbCA/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbiBzY2hlZCBkb21haW4sIHRoZSBzY2hlZHVsZXIgbWlncmF0ZXMgdGFza3MgaW4gMiB3YXlzOyBwZXJpb2RpYyBsb2FkCitiYWxhbmNlIG9uIHRpY2ssIGFuZCBhdCB0aW1lIG9mIHNvbWUgc2NoZWR1bGUgZXZlbnRzLgorCitXaGVuIGEgdGFzayBpcyB3b2tlbiB1cCwgc2NoZWR1bGVyIHRyeSB0byBtb3ZlIHRoZSB0YXNrIG9uIGlkbGUgQ1BVLgorRm9yIGV4YW1wbGUsIGlmIGEgdGFzayBBIHJ1bm5pbmcgb24gQ1BVIFggYWN0aXZhdGVzIGFub3RoZXIgdGFzayBCCitvbiB0aGUgc2FtZSBDUFUgWCwgYW5kIGlmIENQVSBZIGlzIFgncyBzaWJsaW5nIGFuZCBwZXJmb3JtaW5nIGlkbGUsCit0aGVuIHNjaGVkdWxlciBtaWdyYXRlIHRhc2sgQiB0byBDUFUgWSBzbyB0aGF0IHRhc2sgQiBjYW4gc3RhcnQgb24KK0NQVSBZIHdpdGhvdXQgd2FpdGluZyB0YXNrIEEgb24gQ1BVIFguCisKK0FuZCBpZiBhIENQVSBydW4gb3V0IG9mIHRhc2tzIGluIGl0cyBydW5xdWV1ZSwgdGhlIENQVSB0cnkgdG8gcHVsbAorZXh0cmEgdGFza3MgZnJvbSBvdGhlciBidXN5IENQVXMgdG8gaGVscCB0aGVtIGJlZm9yZSBpdCBpcyBnb2luZyB0bworYmUgaWRsZS4KKworT2YgY291cnNlIGl0IHRha2VzIHNvbWUgc2VhcmNoaW5nIGNvc3QgdG8gZmluZCBtb3ZhYmxlIHRhc2tzIGFuZC9vcgoraWRsZSBDUFVzLCB0aGUgc2NoZWR1bGVyIG1pZ2h0IG5vdCBzZWFyY2ggYWxsIENQVXMgaW4gdGhlIGRvbWFpbgorZXZlcnkgdGltZS4gIEluIGZhY3QsIGluIHNvbWUgYXJjaGl0ZWN0dXJlcywgdGhlIHNlYXJjaGluZyByYW5nZXMgb24KK2V2ZW50cyBhcmUgbGltaXRlZCBpbiB0aGUgc2FtZSBzb2NrZXQgb3Igbm9kZSB3aGVyZSB0aGUgQ1BVIGxvY2F0ZXMsCit3aGlsZSB0aGUgbG9hZCBiYWxhbmNlIG9uIHRpY2sgc2VhcmNoZXMgYWxsLgorCitGb3IgZXhhbXBsZSwgYXNzdW1lIENQVSBaIGlzIHJlbGF0aXZlbHkgZmFyIGZyb20gQ1BVIFguICBFdmVuIGlmIENQVSBaCitpcyBpZGxlIHdoaWxlIENQVSBYIGFuZCB0aGUgc2libGluZ3MgYXJlIGJ1c3ksIHNjaGVkdWxlciBjYW4ndCBtaWdyYXRlCit3b2tlbiB0YXNrIEIgZnJvbSBYIHRvIFogc2luY2UgaXQgaXMgb3V0IG9mIGl0cyBzZWFyY2hpbmcgcmFuZ2UuCitBcyB0aGUgcmVzdWx0LCB0YXNrIEIgb24gQ1BVIFggbmVlZCB0byB3YWl0IHRhc2sgQSBvciB3YWl0IGxvYWQgYmFsYW5jZQorb24gdGhlIG5leHQgdGljay4gIEZvciBzb21lIGFwcGxpY2F0aW9ucyBpbiBzcGVjaWFsIHNpdHVhdGlvbiwgd2FpdGluZworMSB0aWNrIG1heSBiZSB0b28gbG9uZy4KKworVGhlICdjcHVzZXQuc2NoZWRfcmVsYXhfZG9tYWluX2xldmVsJyBmaWxlIGFsbG93cyB5b3UgdG8gcmVxdWVzdCBjaGFuZ2luZwordGhpcyBzZWFyY2hpbmcgcmFuZ2UgYXMgeW91IGxpa2UuICBUaGlzIGZpbGUgdGFrZXMgaW50IHZhbHVlIHdoaWNoCitpbmRpY2F0ZXMgc2l6ZSBvZiBzZWFyY2hpbmcgcmFuZ2UgaW4gbGV2ZWxzIGlkZWFsbHkgYXMgZm9sbG93cywKK290aGVyd2lzZSBpbml0aWFsIHZhbHVlIC0xIHRoYXQgaW5kaWNhdGVzIHRoZSBjcHVzZXQgaGFzIG5vIHJlcXVlc3QuCisKKyAgLTEgIDogbm8gcmVxdWVzdC4gdXNlIHN5c3RlbSBkZWZhdWx0IG9yIGZvbGxvdyByZXF1ZXN0IG9mIG90aGVycy4KKyAgIDAgIDogbm8gc2VhcmNoLgorICAgMSAgOiBzZWFyY2ggc2libGluZ3MgKGh5cGVydGhyZWFkcyBpbiBhIGNvcmUpLgorICAgMiAgOiBzZWFyY2ggY29yZXMgaW4gYSBwYWNrYWdlLgorICAgMyAgOiBzZWFyY2ggY3B1cyBpbiBhIG5vZGUgWz0gc3lzdGVtIHdpZGUgb24gbm9uLU5VTUEgc3lzdGVtXQorICAgNCAgOiBzZWFyY2ggbm9kZXMgaW4gYSBjaHVuayBvZiBub2RlIFtvbiBOVU1BIHN5c3RlbV0KKyAgIDUgIDogc2VhcmNoIHN5c3RlbSB3aWRlIFtvbiBOVU1BIHN5c3RlbV0KKworVGhlIHN5c3RlbSBkZWZhdWx0IGlzIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQuICBUaGUgc3lzdGVtIGRlZmF1bHQKK2NhbiBiZSBjaGFuZ2VkIHVzaW5nIHRoZSByZWxheF9kb21haW5fbGV2ZWw9IGJvb3QgcGFyYW1ldGVyLgorCitUaGlzIGZpbGUgaXMgcGVyLWNwdXNldCBhbmQgYWZmZWN0IHRoZSBzY2hlZCBkb21haW4gd2hlcmUgdGhlIGNwdXNldAorYmVsb25ncyB0by4gIFRoZXJlZm9yZSBpZiB0aGUgZmxhZyAnY3B1c2V0LnNjaGVkX2xvYWRfYmFsYW5jZScgb2YgYSBjcHVzZXQKK2lzIGRpc2FibGVkLCB0aGVuICdjcHVzZXQuc2NoZWRfcmVsYXhfZG9tYWluX2xldmVsJyBoYXZlIG5vIGVmZmVjdCBzaW5jZQordGhlcmUgaXMgbm8gc2NoZWQgZG9tYWluIGJlbG9uZ2luZyB0aGUgY3B1c2V0LgorCitJZiBtdWx0aXBsZSBjcHVzZXRzIGFyZSBvdmVybGFwcGluZyBhbmQgaGVuY2UgdGhleSBmb3JtIGEgc2luZ2xlIHNjaGVkCitkb21haW4sIHRoZSBsYXJnZXN0IHZhbHVlIGFtb25nIHRob3NlIGlzIHVzZWQuICBCZSBjYXJlZnVsLCBpZiBvbmUKK3JlcXVlc3RzIDAgYW5kIG90aGVycyBhcmUgLTEgdGhlbiAwIGlzIHVzZWQuCisKK05vdGUgdGhhdCBtb2RpZnlpbmcgdGhpcyBmaWxlIHdpbGwgaGF2ZSBib3RoIGdvb2QgYW5kIGJhZCBlZmZlY3RzLAorYW5kIHdoZXRoZXIgaXQgaXMgYWNjZXB0YWJsZSBvciBub3QgZGVwZW5kcyBvbiB5b3VyIHNpdHVhdGlvbi4KK0Rvbid0IG1vZGlmeSB0aGlzIGZpbGUgaWYgeW91IGFyZSBub3Qgc3VyZS4KKworSWYgeW91ciBzaXR1YXRpb24gaXM6CisgLSBUaGUgbWlncmF0aW9uIGNvc3RzIGJldHdlZW4gZWFjaCBjcHUgY2FuIGJlIGFzc3VtZWQgY29uc2lkZXJhYmx5CisgICBzbWFsbChmb3IgeW91KSBkdWUgdG8geW91ciBzcGVjaWFsIGFwcGxpY2F0aW9uJ3MgYmVoYXZpb3Igb3IKKyAgIHNwZWNpYWwgaGFyZHdhcmUgc3VwcG9ydCBmb3IgQ1BVIGNhY2hlIGV0Yy4KKyAtIFRoZSBzZWFyY2hpbmcgY29zdCBkb2Vzbid0IGhhdmUgaW1wYWN0KGZvciB5b3UpIG9yIHlvdSBjYW4gbWFrZQorICAgdGhlIHNlYXJjaGluZyBjb3N0IGVub3VnaCBzbWFsbCBieSBtYW5hZ2luZyBjcHVzZXQgdG8gY29tcGFjdCBldGMuCisgLSBUaGUgbGF0ZW5jeSBpcyByZXF1aXJlZCBldmVuIGl0IHNhY3JpZmljZXMgY2FjaGUgaGl0IHJhdGUgZXRjLgordGhlbiBpbmNyZWFzaW5nICdzY2hlZF9yZWxheF9kb21haW5fbGV2ZWwnIHdvdWxkIGJlbmVmaXQgeW91LgorCisKKzEuOSBIb3cgZG8gSSB1c2UgY3B1c2V0cyA/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbiBvcmRlciB0byBtaW5pbWl6ZSB0aGUgaW1wYWN0IG9mIGNwdXNldHMgb24gY3JpdGljYWwga2VybmVsCitjb2RlLCBzdWNoIGFzIHRoZSBzY2hlZHVsZXIsIGFuZCBkdWUgdG8gdGhlIGZhY3QgdGhhdCB0aGUga2VybmVsCitkb2VzIG5vdCBzdXBwb3J0IG9uZSB0YXNrIHVwZGF0aW5nIHRoZSBtZW1vcnkgcGxhY2VtZW50IG9mIGFub3RoZXIKK3Rhc2sgZGlyZWN0bHksIHRoZSBpbXBhY3Qgb24gYSB0YXNrIG9mIGNoYW5naW5nIGl0cyBjcHVzZXQgQ1BVCitvciBNZW1vcnkgTm9kZSBwbGFjZW1lbnQsIG9yIG9mIGNoYW5naW5nIHRvIHdoaWNoIGNwdXNldCBhIHRhc2sKK2lzIGF0dGFjaGVkLCBpcyBzdWJ0bGUuCisKK0lmIGEgY3B1c2V0IGhhcyBpdHMgTWVtb3J5IE5vZGVzIG1vZGlmaWVkLCB0aGVuIGZvciBlYWNoIHRhc2sgYXR0YWNoZWQKK3RvIHRoYXQgY3B1c2V0LCB0aGUgbmV4dCB0aW1lIHRoYXQgdGhlIGtlcm5lbCBhdHRlbXB0cyB0byBhbGxvY2F0ZQorYSBwYWdlIG9mIG1lbW9yeSBmb3IgdGhhdCB0YXNrLCB0aGUga2VybmVsIHdpbGwgbm90aWNlIHRoZSBjaGFuZ2UKK2luIHRoZSB0YXNrJ3MgY3B1c2V0LCBhbmQgdXBkYXRlIGl0cyBwZXItdGFzayBtZW1vcnkgcGxhY2VtZW50IHRvCityZW1haW4gd2l0aGluIHRoZSBuZXcgY3B1c2V0cyBtZW1vcnkgcGxhY2VtZW50LiAgSWYgdGhlIHRhc2sgd2FzIHVzaW5nCittZW1wb2xpY3kgTVBPTF9CSU5ELCBhbmQgdGhlIG5vZGVzIHRvIHdoaWNoIGl0IHdhcyBib3VuZCBvdmVybGFwIHdpdGgKK2l0cyBuZXcgY3B1c2V0LCB0aGVuIHRoZSB0YXNrIHdpbGwgY29udGludWUgdG8gdXNlIHdoYXRldmVyIHN1YnNldAorb2YgTVBPTF9CSU5EIG5vZGVzIGFyZSBzdGlsbCBhbGxvd2VkIGluIHRoZSBuZXcgY3B1c2V0LiAgSWYgdGhlIHRhc2sKK3dhcyB1c2luZyBNUE9MX0JJTkQgYW5kIG5vdyBub25lIG9mIGl0cyBNUE9MX0JJTkQgbm9kZXMgYXJlIGFsbG93ZWQKK2luIHRoZSBuZXcgY3B1c2V0LCB0aGVuIHRoZSB0YXNrIHdpbGwgYmUgZXNzZW50aWFsbHkgdHJlYXRlZCBhcyBpZiBpdAord2FzIE1QT0xfQklORCBib3VuZCB0byB0aGUgbmV3IGNwdXNldCAoZXZlbiB0aG91Z2ggaXRzIE5VTUEgcGxhY2VtZW50LAorYXMgcXVlcmllZCBieSBnZXRfbWVtcG9saWN5KCksIGRvZXNuJ3QgY2hhbmdlKS4gIElmIGEgdGFzayBpcyBtb3ZlZAorZnJvbSBvbmUgY3B1c2V0IHRvIGFub3RoZXIsIHRoZW4gdGhlIGtlcm5lbCB3aWxsIGFkanVzdCB0aGUgdGFzaydzCittZW1vcnkgcGxhY2VtZW50LCBhcyBhYm92ZSwgdGhlIG5leHQgdGltZSB0aGF0IHRoZSBrZXJuZWwgYXR0ZW1wdHMKK3RvIGFsbG9jYXRlIGEgcGFnZSBvZiBtZW1vcnkgZm9yIHRoYXQgdGFzay4KKworSWYgYSBjcHVzZXQgaGFzIGl0cyAnY3B1c2V0LmNwdXMnIG1vZGlmaWVkLCB0aGVuIGVhY2ggdGFzayBpbiB0aGF0IGNwdXNldAord2lsbCBoYXZlIGl0cyBhbGxvd2VkIENQVSBwbGFjZW1lbnQgY2hhbmdlZCBpbW1lZGlhdGVseS4gIFNpbWlsYXJseSwKK2lmIGEgdGFzaydzIHBpZCBpcyB3cml0dGVuIHRvIGFub3RoZXIgY3B1c2V0cyAnY3B1c2V0LnRhc2tzJyBmaWxlLCB0aGVuIGl0cworYWxsb3dlZCBDUFUgcGxhY2VtZW50IGlzIGNoYW5nZWQgaW1tZWRpYXRlbHkuICBJZiBzdWNoIGEgdGFzayBoYWQgYmVlbgorYm91bmQgdG8gc29tZSBzdWJzZXQgb2YgaXRzIGNwdXNldCB1c2luZyB0aGUgc2NoZWRfc2V0YWZmaW5pdHkoKSBjYWxsLAordGhlIHRhc2sgd2lsbCBiZSBhbGxvd2VkIHRvIHJ1biBvbiBhbnkgQ1BVIGFsbG93ZWQgaW4gaXRzIG5ldyBjcHVzZXQsCituZWdhdGluZyB0aGUgZWZmZWN0IG9mIHRoZSBwcmlvciBzY2hlZF9zZXRhZmZpbml0eSgpIGNhbGwuCisKK0luIHN1bW1hcnksIHRoZSBtZW1vcnkgcGxhY2VtZW50IG9mIGEgdGFzayB3aG9zZSBjcHVzZXQgaXMgY2hhbmdlZCBpcwordXBkYXRlZCBieSB0aGUga2VybmVsLCBvbiB0aGUgbmV4dCBhbGxvY2F0aW9uIG9mIGEgcGFnZSBmb3IgdGhhdCB0YXNrLAorYW5kIHRoZSBwcm9jZXNzb3IgcGxhY2VtZW50IGlzIHVwZGF0ZWQgaW1tZWRpYXRlbHkuCisKK05vcm1hbGx5LCBvbmNlIGEgcGFnZSBpcyBhbGxvY2F0ZWQgKGdpdmVuIGEgcGh5c2ljYWwgcGFnZQorb2YgbWFpbiBtZW1vcnkpIHRoZW4gdGhhdCBwYWdlIHN0YXlzIG9uIHdoYXRldmVyIG5vZGUgaXQKK3dhcyBhbGxvY2F0ZWQsIHNvIGxvbmcgYXMgaXQgcmVtYWlucyBhbGxvY2F0ZWQsIGV2ZW4gaWYgdGhlCitjcHVzZXRzIG1lbW9yeSBwbGFjZW1lbnQgcG9saWN5ICdjcHVzZXQubWVtcycgc3Vic2VxdWVudGx5IGNoYW5nZXMuCitJZiB0aGUgY3B1c2V0IGZsYWcgZmlsZSAnY3B1c2V0Lm1lbW9yeV9taWdyYXRlJyBpcyBzZXQgdHJ1ZSwgdGhlbiB3aGVuCit0YXNrcyBhcmUgYXR0YWNoZWQgdG8gdGhhdCBjcHVzZXQsIGFueSBwYWdlcyB0aGF0IHRhc2sgaGFkCithbGxvY2F0ZWQgdG8gaXQgb24gbm9kZXMgaW4gaXRzIHByZXZpb3VzIGNwdXNldCBhcmUgbWlncmF0ZWQKK3RvIHRoZSB0YXNrJ3MgbmV3IGNwdXNldC4gVGhlIHJlbGF0aXZlIHBsYWNlbWVudCBvZiB0aGUgcGFnZSB3aXRoaW4KK3RoZSBjcHVzZXQgaXMgcHJlc2VydmVkIGR1cmluZyB0aGVzZSBtaWdyYXRpb24gb3BlcmF0aW9ucyBpZiBwb3NzaWJsZS4KK0ZvciBleGFtcGxlIGlmIHRoZSBwYWdlIHdhcyBvbiB0aGUgc2Vjb25kIHZhbGlkIG5vZGUgb2YgdGhlIHByaW9yIGNwdXNldAordGhlbiB0aGUgcGFnZSB3aWxsIGJlIHBsYWNlZCBvbiB0aGUgc2Vjb25kIHZhbGlkIG5vZGUgb2YgdGhlIG5ldyBjcHVzZXQuCisKK0Fsc28gaWYgJ2NwdXNldC5tZW1vcnlfbWlncmF0ZScgaXMgc2V0IHRydWUsIHRoZW4gaWYgdGhhdCBjcHVzZXQncworJ2NwdXNldC5tZW1zJyBmaWxlIGlzIG1vZGlmaWVkLCBwYWdlcyBhbGxvY2F0ZWQgdG8gdGFza3MgaW4gdGhhdAorY3B1c2V0LCB0aGF0IHdlcmUgb24gbm9kZXMgaW4gdGhlIHByZXZpb3VzIHNldHRpbmcgb2YgJ2NwdXNldC5tZW1zJywKK3dpbGwgYmUgbW92ZWQgdG8gbm9kZXMgaW4gdGhlIG5ldyBzZXR0aW5nIG9mICdtZW1zLicKK1BhZ2VzIHRoYXQgd2VyZSBub3QgaW4gdGhlIHRhc2sncyBwcmlvciBjcHVzZXQsIG9yIGluIHRoZSBjcHVzZXQncworcHJpb3IgJ2NwdXNldC5tZW1zJyBzZXR0aW5nLCB3aWxsIG5vdCBiZSBtb3ZlZC4KKworVGhlcmUgaXMgYW4gZXhjZXB0aW9uIHRvIHRoZSBhYm92ZS4gIElmIGhvdHBsdWcgZnVuY3Rpb25hbGl0eSBpcyB1c2VkCit0byByZW1vdmUgYWxsIHRoZSBDUFVzIHRoYXQgYXJlIGN1cnJlbnRseSBhc3NpZ25lZCB0byBhIGNwdXNldCwKK3RoZW4gYWxsIHRoZSB0YXNrcyBpbiB0aGF0IGNwdXNldCB3aWxsIGJlIG1vdmVkIHRvIHRoZSBuZWFyZXN0IGFuY2VzdG9yCit3aXRoIG5vbi1lbXB0eSBjcHVzLiAgQnV0IHRoZSBtb3Zpbmcgb2Ygc29tZSAob3IgYWxsKSB0YXNrcyBtaWdodCBmYWlsIGlmCitjcHVzZXQgaXMgYm91bmQgd2l0aCBhbm90aGVyIGNncm91cCBzdWJzeXN0ZW0gd2hpY2ggaGFzIHNvbWUgcmVzdHJpY3Rpb25zCitvbiB0YXNrIGF0dGFjaGluZy4gIEluIHRoaXMgZmFpbGluZyBjYXNlLCB0aG9zZSB0YXNrcyB3aWxsIHN0YXkKK2luIHRoZSBvcmlnaW5hbCBjcHVzZXQsIGFuZCB0aGUga2VybmVsIHdpbGwgYXV0b21hdGljYWxseSB1cGRhdGUKK3RoZWlyIGNwdXNfYWxsb3dlZCB0byBhbGxvdyBhbGwgb25saW5lIENQVXMuICBXaGVuIG1lbW9yeSBob3RwbHVnCitmdW5jdGlvbmFsaXR5IGZvciByZW1vdmluZyBNZW1vcnkgTm9kZXMgaXMgYXZhaWxhYmxlLCBhIHNpbWlsYXIgZXhjZXB0aW9uCitpcyBleHBlY3RlZCB0byBhcHBseSB0aGVyZSBhcyB3ZWxsLiAgSW4gZ2VuZXJhbCwgdGhlIGtlcm5lbCBwcmVmZXJzIHRvCit2aW9sYXRlIGNwdXNldCBwbGFjZW1lbnQsIG92ZXIgc3RhcnZpbmcgYSB0YXNrIHRoYXQgaGFzIGhhZCBhbGwKK2l0cyBhbGxvd2VkIENQVXMgb3IgTWVtb3J5IE5vZGVzIHRha2VuIG9mZmxpbmUuCisKK1RoZXJlIGlzIGEgc2Vjb25kIGV4Y2VwdGlvbiB0byB0aGUgYWJvdmUuICBHRlBfQVRPTUlDIHJlcXVlc3RzIGFyZQora2VybmVsIGludGVybmFsIGFsbG9jYXRpb25zIHRoYXQgbXVzdCBiZSBzYXRpc2ZpZWQsIGltbWVkaWF0ZWx5LgorVGhlIGtlcm5lbCBtYXkgZHJvcCBzb21lIHJlcXVlc3QsIGluIHJhcmUgY2FzZXMgZXZlbiBwYW5pYywgaWYgYQorR0ZQX0FUT01JQyBhbGxvYyBmYWlscy4gIElmIHRoZSByZXF1ZXN0IGNhbm5vdCBiZSBzYXRpc2ZpZWQgd2l0aGluCit0aGUgY3VycmVudCB0YXNrJ3MgY3B1c2V0LCB0aGVuIHdlIHJlbGF4IHRoZSBjcHVzZXQsIGFuZCBsb29rIGZvcgorbWVtb3J5IGFueXdoZXJlIHdlIGNhbiBmaW5kIGl0LiAgSXQncyBiZXR0ZXIgdG8gdmlvbGF0ZSB0aGUgY3B1c2V0Cit0aGFuIHN0cmVzcyB0aGUga2VybmVsLgorCitUbyBzdGFydCBhIG5ldyBqb2IgdGhhdCBpcyB0byBiZSBjb250YWluZWQgd2l0aGluIGEgY3B1c2V0LCB0aGUgc3RlcHMgYXJlOgorCisgMSkgbWtkaXIgL3N5cy9mcy9jZ3JvdXAvY3B1c2V0CisgMikgbW91bnQgLXQgY2dyb3VwIC1vY3B1c2V0IGNwdXNldCAvc3lzL2ZzL2Nncm91cC9jcHVzZXQKKyAzKSBDcmVhdGUgdGhlIG5ldyBjcHVzZXQgYnkgZG9pbmcgbWtkaXIncyBhbmQgd3JpdGUncyAob3IgZWNobydzKSBpbgorICAgIHRoZSAvc3lzL2ZzL2Nncm91cC9jcHVzZXQgdmlydHVhbCBmaWxlIHN5c3RlbS4KKyA0KSBTdGFydCBhIHRhc2sgdGhhdCB3aWxsIGJlIHRoZSAiZm91bmRpbmcgZmF0aGVyIiBvZiB0aGUgbmV3IGpvYi4KKyA1KSBBdHRhY2ggdGhhdCB0YXNrIHRvIHRoZSBuZXcgY3B1c2V0IGJ5IHdyaXRpbmcgaXRzIHBpZCB0byB0aGUKKyAgICAvc3lzL2ZzL2Nncm91cC9jcHVzZXQgdGFza3MgZmlsZSBmb3IgdGhhdCBjcHVzZXQuCisgNikgZm9yaywgZXhlYyBvciBjbG9uZSB0aGUgam9iIHRhc2tzIGZyb20gdGhpcyBmb3VuZGluZyBmYXRoZXIgdGFzay4KKworRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2Ugb2YgY29tbWFuZHMgd2lsbCBzZXR1cCBhIGNwdXNldAorbmFtZWQgIkNoYXJsaWUiLCBjb250YWluaW5nIGp1c3QgQ1BVcyAyIGFuZCAzLCBhbmQgTWVtb3J5IE5vZGUgMSwKK2FuZCB0aGVuIHN0YXJ0IGEgc3Vic2hlbGwgJ3NoJyBpbiB0aGF0IGNwdXNldDoKKworICBtb3VudCAtdCBjZ3JvdXAgLW9jcHVzZXQgY3B1c2V0IC9zeXMvZnMvY2dyb3VwL2NwdXNldAorICBjZCAvc3lzL2ZzL2Nncm91cC9jcHVzZXQKKyAgbWtkaXIgQ2hhcmxpZQorICBjZCBDaGFybGllCisgIC9iaW4vZWNobyAyLTMgPiBjcHVzZXQuY3B1cworICAvYmluL2VjaG8gMSA+IGNwdXNldC5tZW1zCisgIC9iaW4vZWNobyAkJCA+IHRhc2tzCisgIHNoCisgICMgVGhlIHN1YnNoZWxsICdzaCcgaXMgbm93IHJ1bm5pbmcgaW4gY3B1c2V0IENoYXJsaWUKKyAgIyBUaGUgbmV4dCBsaW5lIHNob3VsZCBkaXNwbGF5ICcvQ2hhcmxpZScKKyAgY2F0IC9wcm9jL3NlbGYvY3B1c2V0CisKK1RoZXJlIGFyZSB3YXlzIHRvIHF1ZXJ5IG9yIG1vZGlmeSBjcHVzZXRzOgorIC0gdmlhIHRoZSBjcHVzZXQgZmlsZSBzeXN0ZW0gZGlyZWN0bHksIHVzaW5nIHRoZSB2YXJpb3VzIGNkLCBta2RpciwgZWNobywKKyAgIGNhdCwgcm1kaXIgY29tbWFuZHMgZnJvbSB0aGUgc2hlbGwsIG9yIHRoZWlyIGVxdWl2YWxlbnQgZnJvbSBDLgorIC0gdmlhIHRoZSBDIGxpYnJhcnkgbGliY3B1c2V0LgorIC0gdmlhIHRoZSBDIGxpYnJhcnkgbGliY2dyb3VwLgorICAgKGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGliY2cvKQorIC0gdmlhIHRoZSBweXRob24gYXBwbGljYXRpb24gY3NldC4KKyAgIChodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY3B1c2V0LykKKworVGhlIHNjaGVkX3NldGFmZmluaXR5IGNhbGxzIGNhbiBhbHNvIGJlIGRvbmUgYXQgdGhlIHNoZWxsIHByb21wdCB1c2luZworU0dJJ3MgcnVub24gb3IgUm9iZXJ0IExvdmUncyB0YXNrc2V0LiAgVGhlIG1iaW5kIGFuZCBzZXRfbWVtcG9saWN5CitjYWxscyBjYW4gYmUgZG9uZSBhdCB0aGUgc2hlbGwgcHJvbXB0IHVzaW5nIHRoZSBudW1hY3RsIGNvbW1hbmQKKyhwYXJ0IG9mIEFuZGkgS2xlZW4ncyBudW1hIHBhY2thZ2UpLgorCisyLiBVc2FnZSBFeGFtcGxlcyBhbmQgU3ludGF4Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzIuMSBCYXNpYyBVc2FnZQorLS0tLS0tLS0tLS0tLS0tCisKK0NyZWF0aW5nLCBtb2RpZnlpbmcsIHVzaW5nIHRoZSBjcHVzZXRzIGNhbiBiZSBkb25lIHRocm91Z2ggdGhlIGNwdXNldAordmlydHVhbCBmaWxlc3lzdGVtLgorCitUbyBtb3VudCBpdCwgdHlwZToKKyMgbW91bnQgLXQgY2dyb3VwIC1vIGNwdXNldCBjcHVzZXQgL3N5cy9mcy9jZ3JvdXAvY3B1c2V0CisKK1RoZW4gdW5kZXIgL3N5cy9mcy9jZ3JvdXAvY3B1c2V0IHlvdSBjYW4gZmluZCBhIHRyZWUgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUKK3RyZWUgb2YgdGhlIGNwdXNldHMgaW4gdGhlIHN5c3RlbS4gRm9yIGluc3RhbmNlLCAvc3lzL2ZzL2Nncm91cC9jcHVzZXQKK2lzIHRoZSBjcHVzZXQgdGhhdCBob2xkcyB0aGUgd2hvbGUgc3lzdGVtLgorCitJZiB5b3Ugd2FudCB0byBjcmVhdGUgYSBuZXcgY3B1c2V0IHVuZGVyIC9zeXMvZnMvY2dyb3VwL2NwdXNldDoKKyMgY2QgL3N5cy9mcy9jZ3JvdXAvY3B1c2V0CisjIG1rZGlyIG15X2NwdXNldAorCitOb3cgeW91IHdhbnQgdG8gZG8gc29tZXRoaW5nIHdpdGggdGhpcyBjcHVzZXQuCisjIGNkIG15X2NwdXNldAorCitJbiB0aGlzIGRpcmVjdG9yeSB5b3UgY2FuIGZpbmQgc2V2ZXJhbCBmaWxlczoKKyMgbHMKK2Nncm91cC5jbG9uZV9jaGlsZHJlbiAgY3B1c2V0Lm1lbW9yeV9wcmVzc3VyZQorY2dyb3VwLmV2ZW50X2NvbnRyb2wgICBjcHVzZXQubWVtb3J5X3NwcmVhZF9wYWdlCitjZ3JvdXAucHJvY3MgICAgICAgICAgIGNwdXNldC5tZW1vcnlfc3ByZWFkX3NsYWIKK2NwdXNldC5jcHVfZXhjbHVzaXZlICAgY3B1c2V0Lm1lbXMKK2NwdXNldC5jcHVzICAgICAgICAgICAgY3B1c2V0LnNjaGVkX2xvYWRfYmFsYW5jZQorY3B1c2V0Lm1lbV9leGNsdXNpdmUgICBjcHVzZXQuc2NoZWRfcmVsYXhfZG9tYWluX2xldmVsCitjcHVzZXQubWVtX2hhcmR3YWxsICAgIG5vdGlmeV9vbl9yZWxlYXNlCitjcHVzZXQubWVtb3J5X21pZ3JhdGUgIHRhc2tzCisKK1JlYWRpbmcgdGhlbSB3aWxsIGdpdmUgeW91IGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGlzIGNwdXNldDoKK3RoZSBDUFVzIGFuZCBNZW1vcnkgTm9kZXMgaXQgY2FuIHVzZSwgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSB1c2luZworaXQsIGl0cyBwcm9wZXJ0aWVzLiAgQnkgd3JpdGluZyB0byB0aGVzZSBmaWxlcyB5b3UgY2FuIG1hbmlwdWxhdGUKK3RoZSBjcHVzZXQuCisKK1NldCBzb21lIGZsYWdzOgorIyAvYmluL2VjaG8gMSA+IGNwdXNldC5jcHVfZXhjbHVzaXZlCisKK0FkZCBzb21lIGNwdXM6CisjIC9iaW4vZWNobyAwLTcgPiBjcHVzZXQuY3B1cworCitBZGQgc29tZSBtZW1zOgorIyAvYmluL2VjaG8gMC03ID4gY3B1c2V0Lm1lbXMKKworTm93IGF0dGFjaCB5b3VyIHNoZWxsIHRvIHRoaXMgY3B1c2V0OgorIyAvYmluL2VjaG8gJCQgPiB0YXNrcworCitZb3UgY2FuIGFsc28gY3JlYXRlIGNwdXNldHMgaW5zaWRlIHlvdXIgY3B1c2V0IGJ5IHVzaW5nIG1rZGlyIGluIHRoaXMKK2RpcmVjdG9yeS4KKyMgbWtkaXIgbXlfc3ViX2NzCisKK1RvIHJlbW92ZSBhIGNwdXNldCwganVzdCB1c2Ugcm1kaXI6CisjIHJtZGlyIG15X3N1Yl9jcworVGhpcyB3aWxsIGZhaWwgaWYgdGhlIGNwdXNldCBpcyBpbiB1c2UgKGhhcyBjcHVzZXRzIGluc2lkZSwgb3IgaGFzCitwcm9jZXNzZXMgYXR0YWNoZWQpLgorCitOb3RlIHRoYXQgZm9yIGxlZ2FjeSByZWFzb25zLCB0aGUgImNwdXNldCIgZmlsZXN5c3RlbSBleGlzdHMgYXMgYQord3JhcHBlciBhcm91bmQgdGhlIGNncm91cCBmaWxlc3lzdGVtLgorCitUaGUgY29tbWFuZAorCittb3VudCAtdCBjcHVzZXQgWCAvc3lzL2ZzL2Nncm91cC9jcHVzZXQKKworaXMgZXF1aXZhbGVudCB0bworCittb3VudCAtdCBjZ3JvdXAgLW9jcHVzZXQsbm9wcmVmaXggWCAvc3lzL2ZzL2Nncm91cC9jcHVzZXQKK2VjaG8gIi9zYmluL2NwdXNldF9yZWxlYXNlX2FnZW50IiA+IC9zeXMvZnMvY2dyb3VwL2NwdXNldC9yZWxlYXNlX2FnZW50CisKKzIuMiBBZGRpbmcvcmVtb3ZpbmcgY3B1cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgaXMgdGhlIHN5bnRheCB0byB1c2Ugd2hlbiB3cml0aW5nIGluIHRoZSBjcHVzIG9yIG1lbXMgZmlsZXMKK2luIGNwdXNldCBkaXJlY3RvcmllczoKKworIyAvYmluL2VjaG8gMS00ID4gY3B1c2V0LmNwdXMJCS0+IHNldCBjcHVzIGxpc3QgdG8gY3B1cyAxLDIsMyw0CisjIC9iaW4vZWNobyAxLDIsMyw0ID4gY3B1c2V0LmNwdXMJLT4gc2V0IGNwdXMgbGlzdCB0byBjcHVzIDEsMiwzLDQKKworVG8gYWRkIGEgQ1BVIHRvIGEgY3B1c2V0LCB3cml0ZSB0aGUgbmV3IGxpc3Qgb2YgQ1BVcyBpbmNsdWRpbmcgdGhlCitDUFUgdG8gYmUgYWRkZWQuIFRvIGFkZCA2IHRvIHRoZSBhYm92ZSBjcHVzZXQ6CisKKyMgL2Jpbi9lY2hvIDEtNCw2ID4gY3B1c2V0LmNwdXMJLT4gc2V0IGNwdXMgbGlzdCB0byBjcHVzIDEsMiwzLDQsNgorCitTaW1pbGFybHkgdG8gcmVtb3ZlIGEgQ1BVIGZyb20gYSBjcHVzZXQsIHdyaXRlIHRoZSBuZXcgbGlzdCBvZiBDUFVzCit3aXRob3V0IHRoZSBDUFUgdG8gYmUgcmVtb3ZlZC4KKworVG8gcmVtb3ZlIGFsbCB0aGUgQ1BVczoKKworIyAvYmluL2VjaG8gIiIgPiBjcHVzZXQuY3B1cwkJLT4gY2xlYXIgY3B1cyBsaXN0CisKKzIuMyBTZXR0aW5nIGZsYWdzCistLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgc3ludGF4IGlzIHZlcnkgc2ltcGxlOgorCisjIC9iaW4vZWNobyAxID4gY3B1c2V0LmNwdV9leGNsdXNpdmUgCS0+IHNldCBmbGFnICdjcHVzZXQuY3B1X2V4Y2x1c2l2ZScKKyMgL2Jpbi9lY2hvIDAgPiBjcHVzZXQuY3B1X2V4Y2x1c2l2ZSAJLT4gdW5zZXQgZmxhZyAnY3B1c2V0LmNwdV9leGNsdXNpdmUnCisKKzIuNCBBdHRhY2hpbmcgcHJvY2Vzc2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjIC9iaW4vZWNobyBQSUQgPiB0YXNrcworCitOb3RlIHRoYXQgaXQgaXMgUElELCBub3QgUElEcy4gWW91IGNhbiBvbmx5IGF0dGFjaCBPTkUgdGFzayBhdCBhIHRpbWUuCitJZiB5b3UgaGF2ZSBzZXZlcmFsIHRhc2tzIHRvIGF0dGFjaCwgeW91IGhhdmUgdG8gZG8gaXQgb25lIGFmdGVyIGFub3RoZXI6CisKKyMgL2Jpbi9lY2hvIFBJRDEgPiB0YXNrcworIyAvYmluL2VjaG8gUElEMiA+IHRhc2tzCisJLi4uCisjIC9iaW4vZWNobyBQSURuID4gdGFza3MKKworCiszLiBRdWVzdGlvbnMKKz09PT09PT09PT09PQorCitROiB3aGF0J3MgdXAgd2l0aCB0aGlzICcvYmluL2VjaG8nID8KK0E6IGJhc2gncyBidWlsdGluICdlY2hvJyBjb21tYW5kIGRvZXMgbm90IGNoZWNrIGNhbGxzIHRvIHdyaXRlKCkgYWdhaW5zdAorICAgZXJyb3JzLiBJZiB5b3UgdXNlIGl0IGluIHRoZSBjcHVzZXQgZmlsZSBzeXN0ZW0sIHlvdSB3b24ndCBiZQorICAgYWJsZSB0byB0ZWxsIHdoZXRoZXIgYSBjb21tYW5kIHN1Y2NlZWRlZCBvciBmYWlsZWQuCisKK1E6IFdoZW4gSSBhdHRhY2ggcHJvY2Vzc2VzLCBvbmx5IHRoZSBmaXJzdCBvZiB0aGUgbGluZSBnZXRzIHJlYWxseSBhdHRhY2hlZCAhCitBOiBXZSBjYW4gb25seSByZXR1cm4gb25lIGVycm9yIGNvZGUgcGVyIGNhbGwgdG8gd3JpdGUoKS4gU28geW91IHNob3VsZCBhbHNvCisgICBwdXQgb25seSBPTkUgcGlkLgorCis0LiBDb250YWN0Cis9PT09PT09PT09CisKK1dlYjogaHR0cDovL3d3dy5idWxsb3BlbnNvdXJjZS5vcmcvY3B1c2V0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Nncm91cHMvZGV2aWNlcy50eHQgYi9Eb2N1bWVudGF0aW9uL2Nncm91cHMvZGV2aWNlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MxMDk1YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vY2dyb3Vwcy9kZXZpY2VzLnR4dApAQCAtMCwwICsxLDExNiBAQAorRGV2aWNlIFdoaXRlbGlzdCBDb250cm9sbGVyCisKKzEuIERlc2NyaXB0aW9uOgorCitJbXBsZW1lbnQgYSBjZ3JvdXAgdG8gdHJhY2sgYW5kIGVuZm9yY2Ugb3BlbiBhbmQgbWtub2QgcmVzdHJpY3Rpb25zCitvbiBkZXZpY2UgZmlsZXMuICBBIGRldmljZSBjZ3JvdXAgYXNzb2NpYXRlcyBhIGRldmljZSBhY2Nlc3MKK3doaXRlbGlzdCB3aXRoIGVhY2ggY2dyb3VwLiAgQSB3aGl0ZWxpc3QgZW50cnkgaGFzIDQgZmllbGRzLgorJ3R5cGUnIGlzIGEgKGFsbCksIGMgKGNoYXIpLCBvciBiIChibG9jaykuICAnYWxsJyBtZWFucyBpdCBhcHBsaWVzCit0byBhbGwgdHlwZXMgYW5kIGFsbCBtYWpvciBhbmQgbWlub3IgbnVtYmVycy4gIE1ham9yIGFuZCBtaW5vciBhcmUKK2VpdGhlciBhbiBpbnRlZ2VyIG9yICogZm9yIGFsbC4gIEFjY2VzcyBpcyBhIGNvbXBvc2l0aW9uIG9mIHIKKyhyZWFkKSwgdyAod3JpdGUpLCBhbmQgbSAobWtub2QpLgorCitUaGUgcm9vdCBkZXZpY2UgY2dyb3VwIHN0YXJ0cyB3aXRoIHJ3bSB0byAnYWxsJy4gIEEgY2hpbGQgZGV2aWNlCitjZ3JvdXAgZ2V0cyBhIGNvcHkgb2YgdGhlIHBhcmVudC4gIEFkbWluaXN0cmF0b3JzIGNhbiB0aGVuIHJlbW92ZQorZGV2aWNlcyBmcm9tIHRoZSB3aGl0ZWxpc3Qgb3IgYWRkIG5ldyBlbnRyaWVzLiAgQSBjaGlsZCBjZ3JvdXAgY2FuCituZXZlciByZWNlaXZlIGEgZGV2aWNlIGFjY2VzcyB3aGljaCBpcyBkZW5pZWQgYnkgaXRzIHBhcmVudC4KKworMi4gVXNlciBJbnRlcmZhY2UKKworQW4gZW50cnkgaXMgYWRkZWQgdXNpbmcgZGV2aWNlcy5hbGxvdywgYW5kIHJlbW92ZWQgdXNpbmcKK2RldmljZXMuZGVueS4gIEZvciBpbnN0YW5jZQorCisJZWNobyAnYyAxOjMgbXInID4gL3N5cy9mcy9jZ3JvdXAvMS9kZXZpY2VzLmFsbG93CisKK2FsbG93cyBjZ3JvdXAgMSB0byByZWFkIGFuZCBta25vZCB0aGUgZGV2aWNlIHVzdWFsbHkga25vd24gYXMKKy9kZXYvbnVsbC4gIERvaW5nCisKKwllY2hvIGEgPiAvc3lzL2ZzL2Nncm91cC8xL2RldmljZXMuZGVueQorCit3aWxsIHJlbW92ZSB0aGUgZGVmYXVsdCAnYSAqOiogcndtJyBlbnRyeS4gRG9pbmcKKworCWVjaG8gYSA+IC9zeXMvZnMvY2dyb3VwLzEvZGV2aWNlcy5hbGxvdworCit3aWxsIGFkZCB0aGUgJ2EgKjoqIHJ3bScgZW50cnkgdG8gdGhlIHdoaXRlbGlzdC4KKworMy4gU2VjdXJpdHkKKworQW55IHRhc2sgY2FuIG1vdmUgaXRzZWxmIGJldHdlZW4gY2dyb3Vwcy4gIFRoaXMgY2xlYXJseSB3b24ndAorc3VmZmljZSwgYnV0IHdlIGNhbiBkZWNpZGUgdGhlIGJlc3Qgd2F5IHRvIGFkZXF1YXRlbHkgcmVzdHJpY3QKK21vdmVtZW50IGFzIHBlb3BsZSBnZXQgc29tZSBleHBlcmllbmNlIHdpdGggdGhpcy4gIFdlIG1heSBqdXN0IHdhbnQKK3RvIHJlcXVpcmUgQ0FQX1NZU19BRE1JTiwgd2hpY2ggYXQgbGVhc3QgaXMgYSBzZXBhcmF0ZSBiaXQgZnJvbQorQ0FQX01LTk9ELiAgV2UgbWF5IHdhbnQgdG8ganVzdCByZWZ1c2UgbW92aW5nIHRvIGEgY2dyb3VwIHdoaWNoCitpc24ndCBhIGRlc2NlbmRhbnQgb2YgdGhlIGN1cnJlbnQgb25lLiAgT3Igd2UgbWF5IHdhbnQgdG8gdXNlCitDQVBfTUFDX0FETUlOLCBzaW5jZSB3ZSByZWFsbHkgYXJlIHRyeWluZyB0byBsb2NrIGRvd24gcm9vdC4KKworQ0FQX1NZU19BRE1JTiBpcyBuZWVkZWQgdG8gbW9kaWZ5IHRoZSB3aGl0ZWxpc3Qgb3IgbW92ZSBhbm90aGVyCit0YXNrIHRvIGEgbmV3IGNncm91cC4gIChBZ2FpbiB3ZSdsbCBwcm9iYWJseSB3YW50IHRvIGNoYW5nZSB0aGF0KS4KKworQSBjZ3JvdXAgbWF5IG5vdCBiZSBncmFudGVkIG1vcmUgcGVybWlzc2lvbnMgdGhhbiB0aGUgY2dyb3VwJ3MKK3BhcmVudCBoYXMuCisKKzQuIEhpZXJhcmNoeQorCitkZXZpY2UgY2dyb3VwcyBtYWludGFpbiBoaWVyYXJjaHkgYnkgbWFraW5nIHN1cmUgYSBjZ3JvdXAgbmV2ZXIgaGFzIG1vcmUKK2FjY2VzcyBwZXJtaXNzaW9ucyB0aGFuIGl0cyBwYXJlbnQuICBFdmVyeSB0aW1lIGFuIGVudHJ5IGlzIHdyaXR0ZW4gdG8KK2EgY2dyb3VwJ3MgZGV2aWNlcy5kZW55IGZpbGUsIGFsbCBpdHMgY2hpbGRyZW4gd2lsbCBoYXZlIHRoYXQgZW50cnkgcmVtb3ZlZAorZnJvbSB0aGVpciB3aGl0ZWxpc3QgYW5kIGFsbCB0aGUgbG9jYWxseSBzZXQgd2hpdGVsaXN0IGVudHJpZXMgd2lsbCBiZQorcmUtZXZhbHVhdGVkLiAgSW4gY2FzZSBvbmUgb2YgdGhlIGxvY2FsbHkgc2V0IHdoaXRlbGlzdCBlbnRyaWVzIHdvdWxkIHByb3ZpZGUKK21vcmUgYWNjZXNzIHRoYW4gdGhlIGNncm91cCdzIHBhcmVudCwgaXQnbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSB3aGl0ZWxpc3QuCisKK0V4YW1wbGU6CisgICAgICBBCisgICAgIC8gXAorICAgICAgICBCCisKKyAgICBncm91cCAgICAgICAgYmVoYXZpb3IJZXhjZXB0aW9ucworICAgIEEgICAgICAgICAgICBhbGxvdwkJImIgODoqIHJ3bSIsICJjIDExNjoxIHJ3IgorICAgIEIgICAgICAgICAgICBkZW55CQkiYyAxOjMgcndtIiwgImMgMTE2OjIgcndtIiwgImIgMzoqIHJ3bSIKKworSWYgYSBkZXZpY2UgaXMgZGVuaWVkIGluIGdyb3VwIEE6CisJIyBlY2hvICJjIDExNjoqIHIiID4gQS9kZXZpY2VzLmRlbnkKK2l0J2xsIHByb3BhZ2F0ZSBkb3duIGFuZCBhZnRlciByZXZhbGlkYXRpbmcgQidzIGVudHJpZXMsIHRoZSB3aGl0ZWxpc3QgZW50cnkKKyJjIDExNjoyIHJ3bSIgd2lsbCBiZSByZW1vdmVkOgorCisgICAgZ3JvdXAgICAgICAgIHdoaXRlbGlzdCBlbnRyaWVzICAgICAgICAgICAgICAgICAgICAgICAgZGVuaWVkIGRldmljZXMKKyAgICBBICAgICAgICAgICAgYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYiA4OiogcndtIiwgImMgMTE2OiogcnciCisgICAgQiAgICAgICAgICAgICJjIDE6MyByd20iLCAiYiAzOiogcndtIiAgICAgICAgICAgICAgICAgYWxsIHRoZSByZXN0CisKK0luIGNhc2UgcGFyZW50J3MgZXhjZXB0aW9ucyBjaGFuZ2UgYW5kIGxvY2FsIGV4Y2VwdGlvbnMgYXJlIG5vdCBhbGxvd2VkCithbnltb3JlLCB0aGV5J2xsIGJlIGRlbGV0ZWQuCisKK05vdGljZSB0aGF0IG5ldyB3aGl0ZWxpc3QgZW50cmllcyB3aWxsIG5vdCBiZSBwcm9wYWdhdGVkOgorICAgICAgQQorICAgICAvIFwKKyAgICAgICAgQgorCisgICAgZ3JvdXAgICAgICAgIHdoaXRlbGlzdCBlbnRyaWVzICAgICAgICAgICAgICAgICAgICAgICAgZGVuaWVkIGRldmljZXMKKyAgICBBICAgICAgICAgICAgImMgMTozIHJ3bSIsICJjIDE6NSByIiAgICAgICAgICAgICAgICAgICBhbGwgdGhlIHJlc3QKKyAgICBCICAgICAgICAgICAgImMgMTozIHJ3bSIsICJjIDE6NSByIiAgICAgICAgICAgICAgICAgICBhbGwgdGhlIHJlc3QKKword2hlbiBhZGRpbmcgImMgKjozIHJ3bSI6CisJIyBlY2hvICJjICo6MyByd20iID5BL2RldmljZXMuYWxsb3cKKwordGhlIHJlc3VsdDoKKyAgICBncm91cCAgICAgICAgd2hpdGVsaXN0IGVudHJpZXMgICAgICAgICAgICAgICAgICAgICAgICBkZW5pZWQgZGV2aWNlcworICAgIEEgICAgICAgICAgICAiYyAqOjMgcndtIiwgImMgMTo1IHIiICAgICAgICAgICAgICAgICAgIGFsbCB0aGUgcmVzdAorICAgIEIgICAgICAgICAgICAiYyAxOjMgcndtIiwgImMgMTo1IHIiICAgICAgICAgICAgICAgICAgIGFsbCB0aGUgcmVzdAorCitidXQgbm93IGl0J2xsIGJlIHBvc3NpYmxlIHRvIGFkZCBuZXcgZW50cmllcyB0byBCOgorCSMgZWNobyAiYyAyOjMgcndtIiA+Qi9kZXZpY2VzLmFsbG93CisJIyBlY2hvICJjIDUwOjMgciIgPkIvZGV2aWNlcy5hbGxvdworb3IgZXZlbgorCSMgZWNobyAiYyAqOjMgcndtIiA+Qi9kZXZpY2VzLmFsbG93CisKK0FsbG93aW5nIG9yIGRlbnlpbmcgYWxsIGJ5IHdyaXRpbmcgJ2EnIHRvIGRldmljZXMuYWxsb3cgb3IgZGV2aWNlcy5kZW55IHdpbGwKK25vdCBiZSBwb3NzaWJsZSBvbmNlIHRoZSBkZXZpY2UgY2dyb3VwcyBoYXMgY2hpbGRyZW4uCisKKzQuMSBIaWVyYXJjaHkgKGludGVybmFsIGltcGxlbWVudGF0aW9uKQorCitkZXZpY2UgY2dyb3VwcyBpcyBpbXBsZW1lbnRlZCBpbnRlcm5hbGx5IHVzaW5nIGEgYmVoYXZpb3IgKEFMTE9XLCBERU5ZKSBhbmQgYQorbGlzdCBvZiBleGNlcHRpb25zLiAgVGhlIGludGVybmFsIHN0YXRlIGlzIGNvbnRyb2xsZWQgdXNpbmcgdGhlIHNhbWUgdXNlcgoraW50ZXJmYWNlIHRvIHByZXNlcnZlIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgcHJldmlvdXMgd2hpdGVsaXN0LW9ubHkKK2ltcGxlbWVudGF0aW9uLiAgUmVtb3ZhbCBvciBhZGRpdGlvbiBvZiBleGNlcHRpb25zIHRoYXQgd2lsbCByZWR1Y2UgdGhlIGFjY2VzcwordG8gZGV2aWNlcyB3aWxsIGJlIHByb3BhZ2F0ZWQgZG93biB0aGUgaGllcmFyY2h5LgorRm9yIGV2ZXJ5IHByb3BhZ2F0ZWQgZXhjZXB0aW9uLCB0aGUgZWZmZWN0aXZlIHJ1bGVzIHdpbGwgYmUgcmUtZXZhbHVhdGVkIGJhc2VkCitvbiBjdXJyZW50IHBhcmVudCdzIGFjY2VzcyBydWxlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY2dyb3Vwcy9mcmVlemVyLXN1YnN5c3RlbS50eHQgYi9Eb2N1bWVudGF0aW9uL2Nncm91cHMvZnJlZXplci1zdWJzeXN0ZW0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4MzFjYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Nncm91cHMvZnJlZXplci1zdWJzeXN0ZW0udHh0CkBAIC0wLDAgKzEsMTIzIEBACitUaGUgY2dyb3VwIGZyZWV6ZXIgaXMgdXNlZnVsIHRvIGJhdGNoIGpvYiBtYW5hZ2VtZW50IHN5c3RlbSB3aGljaCBzdGFydAorYW5kIHN0b3Agc2V0cyBvZiB0YXNrcyBpbiBvcmRlciB0byBzY2hlZHVsZSB0aGUgcmVzb3VyY2VzIG9mIGEgbWFjaGluZQorYWNjb3JkaW5nIHRvIHRoZSBkZXNpcmVzIG9mIGEgc3lzdGVtIGFkbWluaXN0cmF0b3IuIFRoaXMgc29ydCBvZiBwcm9ncmFtCitpcyBvZnRlbiB1c2VkIG9uIEhQQyBjbHVzdGVycyB0byBzY2hlZHVsZSBhY2Nlc3MgdG8gdGhlIGNsdXN0ZXIgYXMgYQord2hvbGUuIFRoZSBjZ3JvdXAgZnJlZXplciB1c2VzIGNncm91cHMgdG8gZGVzY3JpYmUgdGhlIHNldCBvZiB0YXNrcyB0bworYmUgc3RhcnRlZC9zdG9wcGVkIGJ5IHRoZSBiYXRjaCBqb2IgbWFuYWdlbWVudCBzeXN0ZW0uIEl0IGFsc28gcHJvdmlkZXMKK2EgbWVhbnMgdG8gc3RhcnQgYW5kIHN0b3AgdGhlIHRhc2tzIGNvbXBvc2luZyB0aGUgam9iLgorCitUaGUgY2dyb3VwIGZyZWV6ZXIgd2lsbCBhbHNvIGJlIHVzZWZ1bCBmb3IgY2hlY2twb2ludGluZyBydW5uaW5nIGdyb3Vwcworb2YgdGFza3MuIFRoZSBmcmVlemVyIGFsbG93cyB0aGUgY2hlY2twb2ludCBjb2RlIHRvIG9idGFpbiBhIGNvbnNpc3RlbnQKK2ltYWdlIG9mIHRoZSB0YXNrcyBieSBhdHRlbXB0aW5nIHRvIGZvcmNlIHRoZSB0YXNrcyBpbiBhIGNncm91cCBpbnRvIGEKK3F1aWVzY2VudCBzdGF0ZS4gT25jZSB0aGUgdGFza3MgYXJlIHF1aWVzY2VudCBhbm90aGVyIHRhc2sgY2FuCit3YWxrIC9wcm9jIG9yIGludm9rZSBhIGtlcm5lbCBpbnRlcmZhY2UgdG8gZ2F0aGVyIGluZm9ybWF0aW9uIGFib3V0IHRoZQorcXVpZXNjZWQgdGFza3MuIENoZWNrcG9pbnRlZCB0YXNrcyBjYW4gYmUgcmVzdGFydGVkIGxhdGVyIHNob3VsZCBhCityZWNvdmVyYWJsZSBlcnJvciBvY2N1ci4gVGhpcyBhbHNvIGFsbG93cyB0aGUgY2hlY2twb2ludGVkIHRhc2tzIHRvIGJlCittaWdyYXRlZCBiZXR3ZWVuIG5vZGVzIGluIGEgY2x1c3RlciBieSBjb3B5aW5nIHRoZSBnYXRoZXJlZCBpbmZvcm1hdGlvbgordG8gYW5vdGhlciBub2RlIGFuZCByZXN0YXJ0aW5nIHRoZSB0YXNrcyB0aGVyZS4KKworU2VxdWVuY2VzIG9mIFNJR1NUT1AgYW5kIFNJR0NPTlQgYXJlIG5vdCBhbHdheXMgc3VmZmljaWVudCBmb3Igc3RvcHBpbmcKK2FuZCByZXN1bWluZyB0YXNrcyBpbiB1c2Vyc3BhY2UuIEJvdGggb2YgdGhlc2Ugc2lnbmFscyBhcmUgb2JzZXJ2YWJsZQorZnJvbSB3aXRoaW4gdGhlIHRhc2tzIHdlIHdpc2ggdG8gZnJlZXplLiBXaGlsZSBTSUdTVE9QIGNhbm5vdCBiZSBjYXVnaHQsCitibG9ja2VkLCBvciBpZ25vcmVkIGl0IGNhbiBiZSBzZWVuIGJ5IHdhaXRpbmcgb3IgcHRyYWNpbmcgcGFyZW50IHRhc2tzLgorU0lHQ09OVCBpcyBlc3BlY2lhbGx5IHVuc3VpdGFibGUgc2luY2UgaXQgY2FuIGJlIGNhdWdodCBieSB0aGUgdGFzay4gQW55Citwcm9ncmFtcyBkZXNpZ25lZCB0byB3YXRjaCBmb3IgU0lHU1RPUCBhbmQgU0lHQ09OVCBjb3VsZCBiZSBicm9rZW4gYnkKK2F0dGVtcHRpbmcgdG8gdXNlIFNJR1NUT1AgYW5kIFNJR0NPTlQgdG8gc3RvcCBhbmQgcmVzdW1lIHRhc2tzLiBXZSBjYW4KK2RlbW9uc3RyYXRlIHRoaXMgcHJvYmxlbSB1c2luZyBuZXN0ZWQgYmFzaCBzaGVsbHM6CisKKwkkIGVjaG8gJCQKKwkxNjY0NAorCSQgYmFzaAorCSQgZWNobyAkJAorCTE2NjkwCisKKwlGcm9tIGEgc2Vjb25kLCB1bnJlbGF0ZWQgYmFzaCBzaGVsbDoKKwkkIGtpbGwgLVNJR1NUT1AgMTY2OTAKKwkkIGtpbGwgLVNJR0NPTlQgMTY2OTAKKworCTxhdCB0aGlzIHBvaW50IDE2NjkwIGV4aXRzIGFuZCBjYXVzZXMgMTY2NDQgdG8gZXhpdCB0b28+CisKK1RoaXMgaGFwcGVucyBiZWNhdXNlIGJhc2ggY2FuIG9ic2VydmUgYm90aCBzaWduYWxzIGFuZCBjaG9vc2UgaG93IGl0CityZXNwb25kcyB0byB0aGVtLgorCitBbm90aGVyIGV4YW1wbGUgb2YgYSBwcm9ncmFtIHdoaWNoIGNhdGNoZXMgYW5kIHJlc3BvbmRzIHRvIHRoZXNlCitzaWduYWxzIGlzIGdkYi4gSW4gZmFjdCBhbnkgcHJvZ3JhbSBkZXNpZ25lZCB0byB1c2UgcHRyYWNlIGlzIGxpa2VseSB0bworaGF2ZSBhIHByb2JsZW0gd2l0aCB0aGlzIG1ldGhvZCBvZiBzdG9wcGluZyBhbmQgcmVzdW1pbmcgdGFza3MuCisKK0luIGNvbnRyYXN0LCB0aGUgY2dyb3VwIGZyZWV6ZXIgdXNlcyB0aGUga2VybmVsIGZyZWV6ZXIgY29kZSB0bworcHJldmVudCB0aGUgZnJlZXplL3VuZnJlZXplIGN5Y2xlIGZyb20gYmVjb21pbmcgdmlzaWJsZSB0byB0aGUgdGFza3MKK2JlaW5nIGZyb3plbi4gVGhpcyBhbGxvd3MgdGhlIGJhc2ggZXhhbXBsZSBhYm92ZSBhbmQgZ2RiIHRvIHJ1biBhcworZXhwZWN0ZWQuCisKK1RoZSBjZ3JvdXAgZnJlZXplciBpcyBoaWVyYXJjaGljYWwuIEZyZWV6aW5nIGEgY2dyb3VwIGZyZWV6ZXMgYWxsCit0YXNrcyBiZWxvbmdpbmcgdG8gdGhlIGNncm91cCBhbmQgYWxsIGl0cyBkZXNjZW5kYW50IGNncm91cHMuIEVhY2gKK2Nncm91cCBoYXMgaXRzIG93biBzdGF0ZSAoc2VsZi1zdGF0ZSkgYW5kIHRoZSBzdGF0ZSBpbmhlcml0ZWQgZnJvbSB0aGUKK3BhcmVudCAocGFyZW50LXN0YXRlKS4gSWZmIGJvdGggc3RhdGVzIGFyZSBUSEFXRUQsIHRoZSBjZ3JvdXAgaXMKK1RIQVdFRC4KKworVGhlIGZvbGxvd2luZyBjZ3JvdXBmcyBmaWxlcyBhcmUgY3JlYXRlZCBieSBjZ3JvdXAgZnJlZXplci4KKworKiBmcmVlemVyLnN0YXRlOiBSZWFkLXdyaXRlLgorCisgIFdoZW4gcmVhZCwgcmV0dXJucyB0aGUgZWZmZWN0aXZlIHN0YXRlIG9mIHRoZSBjZ3JvdXAgLSAiVEhBV0VEIiwKKyAgIkZSRUVaSU5HIiBvciAiRlJPWkVOIi4gVGhpcyBpcyB0aGUgY29tYmluZWQgc2VsZiBhbmQgcGFyZW50LXN0YXRlcy4KKyAgSWYgYW55IGlzIGZyZWV6aW5nLCB0aGUgY2dyb3VwIGlzIGZyZWV6aW5nIChGUkVFWklORyBvciBGUk9aRU4pLgorCisgIEZSRUVaSU5HIGNncm91cCB0cmFuc2l0aW9ucyBpbnRvIEZST1pFTiBzdGF0ZSB3aGVuIGFsbCB0YXNrcworICBiZWxvbmdpbmcgdG8gdGhlIGNncm91cCBhbmQgaXRzIGRlc2NlbmRhbnRzIGJlY29tZSBmcm96ZW4uIE5vdGUgdGhhdAorICBhIGNncm91cCByZXZlcnRzIHRvIEZSRUVaSU5HIGZyb20gRlJPWkVOIGFmdGVyIGEgbmV3IHRhc2sgaXMgYWRkZWQKKyAgdG8gdGhlIGNncm91cCBvciBvbmUgb2YgaXRzIGRlc2NlbmRhbnQgY2dyb3VwcyB1bnRpbCB0aGUgbmV3IHRhc2sgaXMKKyAgZnJvemVuLgorCisgIFdoZW4gd3JpdHRlbiwgc2V0cyB0aGUgc2VsZi1zdGF0ZSBvZiB0aGUgY2dyb3VwLiBUd28gdmFsdWVzIGFyZQorICBhbGxvd2VkIC0gIkZST1pFTiIgYW5kICJUSEFXRUQiLiBJZiBGUk9aRU4gaXMgd3JpdHRlbiwgdGhlIGNncm91cCwKKyAgaWYgbm90IGFscmVhZHkgZnJlZXppbmcsIGVudGVycyBGUkVFWklORyBzdGF0ZSBhbG9uZyB3aXRoIGFsbCBpdHMKKyAgZGVzY2VuZGFudCBjZ3JvdXBzLgorCisgIElmIFRIQVdFRCBpcyB3cml0dGVuLCB0aGUgc2VsZi1zdGF0ZSBvZiB0aGUgY2dyb3VwIGlzIGNoYW5nZWQgdG8KKyAgVEhBV0VELiAgTm90ZSB0aGF0IHRoZSBlZmZlY3RpdmUgc3RhdGUgbWF5IG5vdCBjaGFuZ2UgdG8gVEhBV0VEIGlmCisgIHRoZSBwYXJlbnQtc3RhdGUgaXMgc3RpbGwgZnJlZXppbmcuIElmIGEgY2dyb3VwJ3MgZWZmZWN0aXZlIHN0YXRlCisgIGJlY29tZXMgVEhBV0VELCBhbGwgaXRzIGRlc2NlbmRhbnRzIHdoaWNoIGFyZSBmcmVlemluZyBiZWNhdXNlIG9mCisgIHRoZSBjZ3JvdXAgYWxzbyBsZWF2ZSB0aGUgZnJlZXppbmcgc3RhdGUuCisKKyogZnJlZXplci5zZWxmX2ZyZWV6aW5nOiBSZWFkIG9ubHkuCisKKyAgU2hvd3MgdGhlIHNlbGYtc3RhdGUuIDAgaWYgdGhlIHNlbGYtc3RhdGUgaXMgVEhBV0VEOyBvdGhlcndpc2UsIDEuCisgIFRoaXMgdmFsdWUgaXMgMSBpZmYgdGhlIGxhc3Qgd3JpdGUgdG8gZnJlZXplci5zdGF0ZSB3YXMgIkZST1pFTiIuCisKKyogZnJlZXplci5wYXJlbnRfZnJlZXppbmc6IFJlYWQgb25seS4KKworICBTaG93cyB0aGUgcGFyZW50LXN0YXRlLiAgMCBpZiBub25lIG9mIHRoZSBjZ3JvdXAncyBhbmNlc3RvcnMgaXMKKyAgZnJvemVuOyBvdGhlcndpc2UsIDEuCisKK1RoZSByb290IGNncm91cCBpcyBub24tZnJlZXphYmxlIGFuZCB0aGUgYWJvdmUgaW50ZXJmYWNlIGZpbGVzIGRvbid0CitleGlzdC4KKworKiBFeGFtcGxlcyBvZiB1c2FnZSA6CisKKyAgICMgbWtkaXIgL3N5cy9mcy9jZ3JvdXAvZnJlZXplcgorICAgIyBtb3VudCAtdCBjZ3JvdXAgLW9mcmVlemVyIGZyZWV6ZXIgL3N5cy9mcy9jZ3JvdXAvZnJlZXplcgorICAgIyBta2RpciAvc3lzL2ZzL2Nncm91cC9mcmVlemVyLzAKKyAgICMgZWNobyAkc29tZV9waWQgPiAvc3lzL2ZzL2Nncm91cC9mcmVlemVyLzAvdGFza3MKKwordG8gZ2V0IHN0YXR1cyBvZiB0aGUgZnJlZXplciBzdWJzeXN0ZW0gOgorCisgICAjIGNhdCAvc3lzL2ZzL2Nncm91cC9mcmVlemVyLzAvZnJlZXplci5zdGF0ZQorICAgVEhBV0VECisKK3RvIGZyZWV6ZSBhbGwgdGFza3MgaW4gdGhlIGNvbnRhaW5lciA6CisKKyAgICMgZWNobyBGUk9aRU4gPiAvc3lzL2ZzL2Nncm91cC9mcmVlemVyLzAvZnJlZXplci5zdGF0ZQorICAgIyBjYXQgL3N5cy9mcy9jZ3JvdXAvZnJlZXplci8wL2ZyZWV6ZXIuc3RhdGUKKyAgIEZSRUVaSU5HCisgICAjIGNhdCAvc3lzL2ZzL2Nncm91cC9mcmVlemVyLzAvZnJlZXplci5zdGF0ZQorICAgRlJPWkVOCisKK3RvIHVuZnJlZXplIGFsbCB0YXNrcyBpbiB0aGUgY29udGFpbmVyIDoKKworICAgIyBlY2hvIFRIQVdFRCA+IC9zeXMvZnMvY2dyb3VwL2ZyZWV6ZXIvMC9mcmVlemVyLnN0YXRlCisgICAjIGNhdCAvc3lzL2ZzL2Nncm91cC9mcmVlemVyLzAvZnJlZXplci5zdGF0ZQorICAgVEhBV0VECisKK1RoaXMgaXMgdGhlIGJhc2ljIG1lY2hhbmlzbSB3aGljaCBzaG91bGQgZG8gdGhlIHJpZ2h0IHRoaW5nIGZvciB1c2VyIHNwYWNlIHRhc2sKK2luIGEgc2ltcGxlIHNjZW5hcmlvLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9jZ3JvdXBzL2h1Z2V0bGIudHh0IGIvRG9jdW1lbnRhdGlvbi9jZ3JvdXBzL2h1Z2V0bGIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNjI0NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Nncm91cHMvaHVnZXRsYi50eHQKQEAgLTAsMCArMSw0NSBAQAorSHVnZVRMQiBDb250cm9sbGVyCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBIdWdlVExCIGNvbnRyb2xsZXIgYWxsb3dzIHRvIGxpbWl0IHRoZSBIdWdlVExCIHVzYWdlIHBlciBjb250cm9sIGdyb3VwIGFuZAorZW5mb3JjZXMgdGhlIGNvbnRyb2xsZXIgbGltaXQgZHVyaW5nIHBhZ2UgZmF1bHQuIFNpbmNlIEh1Z2VUTEIgZG9lc24ndAorc3VwcG9ydCBwYWdlIHJlY2xhaW0sIGVuZm9yY2luZyB0aGUgbGltaXQgYXQgcGFnZSBmYXVsdCB0aW1lIGltcGxpZXMgdGhhdCwKK3RoZSBhcHBsaWNhdGlvbiB3aWxsIGdldCBTSUdCVVMgc2lnbmFsIGlmIGl0IHRyaWVzIHRvIGFjY2VzcyBIdWdlVExCIHBhZ2VzCitiZXlvbmQgaXRzIGxpbWl0LiBUaGlzIHJlcXVpcmVzIHRoZSBhcHBsaWNhdGlvbiB0byBrbm93IGJlZm9yZWhhbmQgaG93IG11Y2gKK0h1Z2VUTEIgcGFnZXMgaXQgd291bGQgcmVxdWlyZSBmb3IgaXRzIHVzZS4KKworSHVnZVRMQiBjb250cm9sbGVyIGNhbiBiZSBjcmVhdGVkIGJ5IGZpcnN0IG1vdW50aW5nIHRoZSBjZ3JvdXAgZmlsZXN5c3RlbS4KKworIyBtb3VudCAtdCBjZ3JvdXAgLW8gaHVnZXRsYiBub25lIC9zeXMvZnMvY2dyb3VwCisKK1dpdGggdGhlIGFib3ZlIHN0ZXAsIHRoZSBpbml0aWFsIG9yIHRoZSBwYXJlbnQgSHVnZVRMQiBncm91cCBiZWNvbWVzCit2aXNpYmxlIGF0IC9zeXMvZnMvY2dyb3VwLiBBdCBib290dXAsIHRoaXMgZ3JvdXAgaW5jbHVkZXMgYWxsIHRoZSB0YXNrcyBpbgordGhlIHN5c3RlbS4gL3N5cy9mcy9jZ3JvdXAvdGFza3MgbGlzdHMgdGhlIHRhc2tzIGluIHRoaXMgY2dyb3VwLgorCitOZXcgZ3JvdXBzIGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoZSBwYXJlbnQgZ3JvdXAgL3N5cy9mcy9jZ3JvdXAuCisKKyMgY2QgL3N5cy9mcy9jZ3JvdXAKKyMgbWtkaXIgZzEKKyMgZWNobyAkJCA+IGcxL3Rhc2tzCisKK1RoZSBhYm92ZSBzdGVwcyBjcmVhdGUgYSBuZXcgZ3JvdXAgZzEgYW5kIG1vdmUgdGhlIGN1cnJlbnQgc2hlbGwKK3Byb2Nlc3MgKGJhc2gpIGludG8gaXQuCisKK0JyaWVmIHN1bW1hcnkgb2YgY29udHJvbCBmaWxlcworCisgaHVnZXRsYi48aHVnZXBhZ2VzaXplPi5saW1pdF9pbl9ieXRlcyAgICAgIyBzZXQvc2hvdyBsaW1pdCBvZiAiaHVnZXBhZ2VzaXplIiBodWdldGxiIHVzYWdlCisgaHVnZXRsYi48aHVnZXBhZ2VzaXplPi5tYXhfdXNhZ2VfaW5fYnl0ZXMgIyBzaG93IG1heCAiaHVnZXBhZ2VzaXplIiBodWdldGxiICB1c2FnZSByZWNvcmRlZAorIGh1Z2V0bGIuPGh1Z2VwYWdlc2l6ZT4udXNhZ2VfaW5fYnl0ZXMgICAgICMgc2hvdyBjdXJyZW50IHVzYWdlIGZvciAiaHVnZXBhZ2VzaXplIiBodWdldGxiCisgaHVnZXRsYi48aHVnZXBhZ2VzaXplPi5mYWlsY250CQkgICAjIHNob3cgdGhlIG51bWJlciBvZiBhbGxvY2F0aW9uIGZhaWx1cmUgZHVlIHRvIEh1Z2VUTEIgbGltaXQKKworRm9yIGEgc3lzdGVtIHN1cHBvcnRpbmcgdHdvIGh1Z2VwYWdlIHNpemUgKDE2TSBhbmQgMTZHKSB0aGUgY29udHJvbAorZmlsZXMgaW5jbHVkZToKKworaHVnZXRsYi4xNkdCLmxpbWl0X2luX2J5dGVzCitodWdldGxiLjE2R0IubWF4X3VzYWdlX2luX2J5dGVzCitodWdldGxiLjE2R0IudXNhZ2VfaW5fYnl0ZXMKK2h1Z2V0bGIuMTZHQi5mYWlsY250CitodWdldGxiLjE2TUIubGltaXRfaW5fYnl0ZXMKK2h1Z2V0bGIuMTZNQi5tYXhfdXNhZ2VfaW5fYnl0ZXMKK2h1Z2V0bGIuMTZNQi51c2FnZV9pbl9ieXRlcworaHVnZXRsYi4xNk1CLmZhaWxjbnQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY2dyb3Vwcy9tZW1jZ190ZXN0LnR4dCBiL0RvY3VtZW50YXRpb24vY2dyb3Vwcy9tZW1jZ190ZXN0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODcwYjAyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9jZ3JvdXBzL21lbWNnX3Rlc3QudHh0CkBAIC0wLDAgKzEsMjgwIEBACitNZW1vcnkgUmVzb3VyY2UgQ29udHJvbGxlcihNZW1jZykgIEltcGxlbWVudGF0aW9uIE1lbW8uCitMYXN0IFVwZGF0ZWQ6IDIwMTAvMgorQmFzZSBLZXJuZWwgVmVyc2lvbjogYmFzZWQgb24gMi42LjMzLXJjNy1tbShjYW5kaWRhdGUgZm9yIDM0KS4KKworQmVjYXVzZSBWTSBpcyBnZXR0aW5nIGNvbXBsZXggKG9uZSBvZiByZWFzb25zIGlzIG1lbWNnLi4uKSwgbWVtY2cncyBiZWhhdmlvcgoraXMgY29tcGxleC4gVGhpcyBpcyBhIGRvY3VtZW50IGZvciBtZW1jZydzIGludGVybmFsIGJlaGF2aW9yLgorUGxlYXNlIG5vdGUgdGhhdCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGNhbiBiZSBjaGFuZ2VkLgorCisoKikgVG9waWNzIG9uIEFQSSBzaG91bGQgYmUgaW4gRG9jdW1lbnRhdGlvbi9jZ3JvdXBzL21lbW9yeS50eHQpCisKKzAuIEhvdyB0byByZWNvcmQgdXNhZ2UgPworICAgMiBvYmplY3RzIGFyZSB1c2VkLgorCisgICBwYWdlX2Nncm91cCAuLi4uYW4gb2JqZWN0IHBlciBwYWdlLgorCUFsbG9jYXRlZCBhdCBib290IG9yIG1lbW9yeSBob3RwbHVnLiBGcmVlZCBhdCBtZW1vcnkgaG90IHJlbW92YWwuCisKKyAgIHN3YXBfY2dyb3VwIC4uLiBhbiBlbnRyeSBwZXIgc3dwX2VudHJ5LgorCUFsbG9jYXRlZCBhdCBzd2Fwb24oKS4gRnJlZWQgYXQgc3dhcG9mZigpLgorCisgICBUaGUgcGFnZV9jZ3JvdXAgaGFzIFVTRUQgYml0IGFuZCBkb3VibGUgY291bnQgYWdhaW5zdCBhIHBhZ2VfY2dyb3VwIG5ldmVyCisgICBvY2N1cnMuIHN3YXBfY2dyb3VwIGlzIHVzZWQgb25seSB3aGVuIGEgY2hhcmdlZCBwYWdlIGlzIHN3YXBwZWQtb3V0LgorCisxLiBDaGFyZ2UKKworICAgYSBwYWdlL3N3cF9lbnRyeSBtYXkgYmUgY2hhcmdlZCAodXNhZ2UgKz0gUEFHRV9TSVpFKSBhdAorCisJbWVtX2Nncm91cF90cnlfY2hhcmdlKCkKKworMi4gVW5jaGFyZ2UKKyAgYSBwYWdlL3N3cF9lbnRyeSBtYXkgYmUgdW5jaGFyZ2VkICh1c2FnZSAtPSBQQUdFX1NJWkUpIGJ5CisKKwltZW1fY2dyb3VwX3VuY2hhcmdlKCkKKwkgIENhbGxlZCB3aGVuIGEgcGFnZSdzIHJlZmNvdW50IGdvZXMgZG93biB0byAwLgorCisJbWVtX2Nncm91cF91bmNoYXJnZV9zd2FwKCkKKwkgIENhbGxlZCB3aGVuIHN3cF9lbnRyeSdzIHJlZmNudCBnb2VzIGRvd24gdG8gMC4gQSBjaGFyZ2UgYWdhaW5zdCBzd2FwCisJICBkaXNhcHBlYXJzLgorCiszLiBjaGFyZ2UtY29tbWl0LWNhbmNlbAorCU1lbWNnIHBhZ2VzIGFyZSBjaGFyZ2VkIGluIHR3byBzdGVwczoKKwkJbWVtX2Nncm91cF90cnlfY2hhcmdlKCkKKwkJbWVtX2Nncm91cF9jb21taXRfY2hhcmdlKCkgb3IgbWVtX2Nncm91cF9jYW5jZWxfY2hhcmdlKCkKKworCUF0IHRyeV9jaGFyZ2UoKSwgdGhlcmUgYXJlIG5vIGZsYWdzIHRvIHNheSAidGhpcyBwYWdlIGlzIGNoYXJnZWQiLgorCWF0IHRoaXMgcG9pbnQsIHVzYWdlICs9IFBBR0VfU0laRS4KKworCUF0IGNvbW1pdCgpLCB0aGUgcGFnZSBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIG1lbWNnLgorCisJQXQgY2FuY2VsKCksIHNpbXBseSB1c2FnZSAtPSBQQUdFX1NJWkUuCisKK1VuZGVyIGJlbG93IGV4cGxhbmF0aW9uLCB3ZSBhc3N1bWUgQ09ORklHX01FTV9SRVNfQ1RSTF9TV0FQPXkuCisKKzQuIEFub255bW91cworCUFub255bW91cyBwYWdlIGlzIG5ld2x5IGFsbG9jYXRlZCBhdAorCQkgIC0gcGFnZSBmYXVsdCBpbnRvIE1BUF9BTk9OWU1PVVMgbWFwcGluZy4KKwkJICAtIENvcHktT24tV3JpdGUuCisKKwk0LjEgU3dhcC1pbi4KKwlBdCBzd2FwLWluLCB0aGUgcGFnZSBpcyB0YWtlbiBmcm9tIHN3YXAtY2FjaGUuIFRoZXJlIGFyZSAyIGNhc2VzLgorCisJKGEpIElmIHRoZSBTd2FwQ2FjaGUgaXMgbmV3bHkgYWxsb2NhdGVkIGFuZCByZWFkLCBpdCBoYXMgbm8gY2hhcmdlcy4KKwkoYikgSWYgdGhlIFN3YXBDYWNoZSBoYXMgYmVlbiBtYXBwZWQgYnkgcHJvY2Vzc2VzLCBpdCBoYXMgYmVlbgorCSAgICBjaGFyZ2VkIGFscmVhZHkuCisKKwk0LjIgU3dhcC1vdXQuCisJQXQgc3dhcC1vdXQsIHR5cGljYWwgc3RhdGUgdHJhbnNpdGlvbiBpcyBiZWxvdy4KKworCShhKSBhZGQgdG8gc3dhcCBjYWNoZS4gKG1hcmtlZCBhcyBTd2FwQ2FjaGUpCisJICAgIHN3cF9lbnRyeSdzIHJlZmNudCArPSAxLgorCShiKSBmdWxseSB1bm1hcHBlZC4KKwkgICAgc3dwX2VudHJ5J3MgcmVmY250ICs9ICMgb2YgcHRlcy4KKwkoYykgd3JpdGUgYmFjayB0byBzd2FwLgorCShkKSBkZWxldGUgZnJvbSBzd2FwIGNhY2hlLiAocmVtb3ZlIGZyb20gU3dhcENhY2hlKQorCSAgICBzd3BfZW50cnkncyByZWZjbnQgLT0gMS4KKworCisJRmluYWxseSwgYXQgdGFzayBleGl0LAorCShlKSB6YXBfcHRlKCkgaXMgY2FsbGVkIGFuZCBzd3BfZW50cnkncyByZWZjbnQgLT0xIC0+IDAuCisKKzUuIFBhZ2UgQ2FjaGUKKyAgIAlQYWdlIENhY2hlIGlzIGNoYXJnZWQgYXQKKwktIGFkZF90b19wYWdlX2NhY2hlX2xvY2tlZCgpLgorCisJVGhlIGxvZ2ljIGlzIHZlcnkgY2xlYXIuIChBYm91dCBtaWdyYXRpb24sIHNlZSBiZWxvdykKKwlOb3RlOiBfX3JlbW92ZV9mcm9tX3BhZ2VfY2FjaGUoKSBpcyBjYWxsZWQgYnkgcmVtb3ZlX2Zyb21fcGFnZV9jYWNoZSgpCisJYW5kIF9fcmVtb3ZlX21hcHBpbmcoKS4KKworNi4gU2htZW0odG1wZnMpIFBhZ2UgQ2FjaGUKKwlUaGUgYmVzdCB3YXkgdG8gdW5kZXJzdGFuZCBzaG1lbSdzIHBhZ2Ugc3RhdGUgdHJhbnNpdGlvbiBpcyB0byByZWFkCisJbW0vc2htZW0uYy4KKwlCdXQgYnJpZWYgZXhwbGFuYXRpb24gb2YgdGhlIGJlaGF2aW9yIG9mIG1lbWNnIGFyb3VuZCBzaG1lbSB3aWxsIGJlCisJaGVscGZ1bCB0byB1bmRlcnN0YW5kIHRoZSBsb2dpYy4KKworCVNobWVtJ3MgcGFnZSAoanVzdCBsZWFmIHBhZ2UsIG5vdCBkaXJlY3QvaW5kaXJlY3QgYmxvY2spIGNhbiBiZSBvbgorCQktIHJhZGl4LXRyZWUgb2Ygc2htZW0ncyBpbm9kZS4KKwkJLSBTd2FwQ2FjaGUuCisJCS0gQm90aCBvbiByYWRpeC10cmVlIGFuZCBTd2FwQ2FjaGUuIFRoaXMgaGFwcGVucyBhdCBzd2FwLWluCisJCSAgYW5kIHN3YXAtb3V0LAorCisJSXQncyBjaGFyZ2VkIHdoZW4uLi4KKwktIEEgbmV3IHBhZ2UgaXMgYWRkZWQgdG8gc2htZW0ncyByYWRpeC10cmVlLgorCS0gQSBzd3AgcGFnZSBpcyByZWFkLiAobW92ZSBhIGNoYXJnZSBmcm9tIHN3YXBfY2dyb3VwIHRvIHBhZ2VfY2dyb3VwKQorCis3LiBQYWdlIE1pZ3JhdGlvbgorCisJbWVtX2Nncm91cF9taWdyYXRlKCkKKworOC4gTFJVCisgICAgICAgIEVhY2ggbWVtY2cgaGFzIGl0cyBvd24gcHJpdmF0ZSBMUlUuIE5vdywgaXRzIGhhbmRsaW5nIGlzIHVuZGVyIGdsb2JhbAorCVZNJ3MgY29udHJvbCAobWVhbnMgdGhhdCBpdCdzIGhhbmRsZWQgdW5kZXIgZ2xvYmFsIHpvbmUtPmxydV9sb2NrKS4KKwlBbG1vc3QgYWxsIHJvdXRpbmVzIGFyb3VuZCBtZW1jZydzIExSVSBpcyBjYWxsZWQgYnkgZ2xvYmFsIExSVSdzCisJbGlzdCBtYW5hZ2VtZW50IGZ1bmN0aW9ucyB1bmRlciB6b25lLT5scnVfbG9jaygpLgorCisJQSBzcGVjaWFsIGZ1bmN0aW9uIGlzIG1lbV9jZ3JvdXBfaXNvbGF0ZV9wYWdlcygpLiBUaGlzIHNjYW5zCisJbWVtY2cncyBwcml2YXRlIExSVSBhbmQgY2FsbCBfX2lzb2xhdGVfbHJ1X3BhZ2UoKSB0byBleHRyYWN0IGEgcGFnZQorCWZyb20gTFJVLgorCShCeSBfX2lzb2xhdGVfbHJ1X3BhZ2UoKSwgdGhlIHBhZ2UgaXMgcmVtb3ZlZCBmcm9tIGJvdGggb2YgZ2xvYmFsIGFuZAorCSBwcml2YXRlIExSVS4pCisKKworOS4gVHlwaWNhbCBUZXN0cy4KKworIFRlc3RzIGZvciByYWN5IGNhc2VzLgorCisgOS4xIFNtYWxsIGxpbWl0IHRvIG1lbWNnLgorCVdoZW4geW91IGRvIHRlc3QgdG8gZG8gcmFjeSBjYXNlLCBpdCdzIGdvb2QgdGVzdCB0byBzZXQgbWVtY2cncyBsaW1pdAorCXRvIGJlIHZlcnkgc21hbGwgcmF0aGVyIHRoYW4gR0IuIE1hbnkgcmFjZXMgZm91bmQgaW4gdGhlIHRlc3QgdW5kZXIKKwl4S0Igb3IgeHhNQiBsaW1pdHMuCisJKE1lbW9yeSBiZWhhdmlvciB1bmRlciBHQiBhbmQgTWVtb3J5IGJlaGF2aW9yIHVuZGVyIE1CIHNob3dzIHZlcnkKKwkgZGlmZmVyZW50IHNpdHVhdGlvbi4pCisKKyA5LjIgU2htZW0KKwlIaXN0b3JpY2FsbHksIG1lbWNnJ3Mgc2htZW0gaGFuZGxpbmcgd2FzIHBvb3IgYW5kIHdlIHNhdyBzb21lIGFtb3VudAorCW9mIHRyb3VibGVzIGhlcmUuIFRoaXMgaXMgYmVjYXVzZSBzaG1lbSBpcyBwYWdlLWNhY2hlIGJ1dCBjYW4gYmUKKwlTd2FwQ2FjaGUuIFRlc3Qgd2l0aCBzaG1lbS90bXBmcyBpcyBhbHdheXMgZ29vZCB0ZXN0LgorCisgOS4zIE1pZ3JhdGlvbgorCUZvciBOVU1BLCBtaWdyYXRpb24gaXMgYW4gYW5vdGhlciBzcGVjaWFsIGNhc2UuIFRvIGRvIGVhc3kgdGVzdCwgY3B1c2V0CisJaXMgdXNlZnVsLiBGb2xsb3dpbmcgaXMgYSBzYW1wbGUgc2NyaXB0IHRvIGRvIG1pZ3JhdGlvbi4KKworCW1vdW50IC10IGNncm91cCAtbyBjcHVzZXQgbm9uZSAvb3B0L2NwdXNldAorCisJbWtkaXIgL29wdC9jcHVzZXQvMDEKKwllY2hvIDEgPiAvb3B0L2NwdXNldC8wMS9jcHVzZXQuY3B1cworCWVjaG8gMCA+IC9vcHQvY3B1c2V0LzAxL2NwdXNldC5tZW1zCisJZWNobyAxID4gL29wdC9jcHVzZXQvMDEvY3B1c2V0Lm1lbW9yeV9taWdyYXRlCisJbWtkaXIgL29wdC9jcHVzZXQvMDIKKwllY2hvIDEgPiAvb3B0L2NwdXNldC8wMi9jcHVzZXQuY3B1cworCWVjaG8gMSA+IC9vcHQvY3B1c2V0LzAyL2NwdXNldC5tZW1zCisJZWNobyAxID4gL29wdC9jcHVzZXQvMDIvY3B1c2V0Lm1lbW9yeV9taWdyYXRlCisKKwlJbiBhYm92ZSBzZXQsIHdoZW4geW91IG1vdmVzIGEgdGFzayBmcm9tIDAxIHRvIDAyLCBwYWdlIG1pZ3JhdGlvbiB0bworCW5vZGUgMCB0byBub2RlIDEgd2lsbCBvY2N1ci4gRm9sbG93aW5nIGlzIGEgc2NyaXB0IHRvIG1pZ3JhdGUgYWxsCisJdW5kZXIgY3B1c2V0LgorCS0tCisJbW92ZV90YXNrKCkKKwl7CisJZm9yIHBpZCBpbiAkMQorICAgICAgICBkbworICAgICAgICAgICAgICAgIC9iaW4vZWNobyAkcGlkID4kMi90YXNrcyAyPi9kZXYvbnVsbAorCQllY2hvIC1uICRwaWQKKwkJZWNobyAtbiAiICIKKyAgICAgICAgZG9uZQorCWVjaG8gRU5ECisJfQorCisJRzFfVEFTSz1gY2F0ICR7RzF9L3Rhc2tzYAorCUcyX1RBU0s9YGNhdCAke0cyfS90YXNrc2AKKwltb3ZlX3Rhc2sgIiR7RzFfVEFTS30iICR7RzJ9ICYKKwktLQorIDkuNCBNZW1vcnkgaG90cGx1Zy4KKwltZW1vcnkgaG90cGx1ZyB0ZXN0IGlzIG9uZSBvZiBnb29kIHRlc3QuCisJdG8gb2ZmbGluZSBtZW1vcnksIGRvIGZvbGxvd2luZy4KKwkjIGVjaG8gb2ZmbGluZSA+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L21lbW9yeVhYWC9zdGF0ZQorCShYWFggaXMgdGhlIHBsYWNlIG9mIG1lbW9yeSkKKwlUaGlzIGlzIGFuIGVhc3kgd2F5IHRvIHRlc3QgcGFnZSBtaWdyYXRpb24sIHRvby4KKworIDkuNSBta2Rpci9ybWRpcgorCVdoZW4gdXNpbmcgaGllcmFyY2h5LCBta2Rpci9ybWRpciB0ZXN0IHNob3VsZCBiZSBkb25lLgorCVVzZSB0ZXN0cyBsaWtlIHRoZSBmb2xsb3dpbmcuCisKKwllY2hvIDEgPi9vcHQvY2dyb3VwLzAxL21lbW9yeS91c2VfaGllcmFyY2h5CisJbWtkaXIgL29wdC9jZ3JvdXAvMDEvY2hpbGRfYQorCW1rZGlyIC9vcHQvY2dyb3VwLzAxL2NoaWxkX2IKKworCXNldCBsaW1pdCB0byAwMS4KKwlhZGQgbGltaXQgdG8gMDEvY2hpbGRfYgorCXJ1biBqb2JzIHVuZGVyIGNoaWxkX2EgYW5kIGNoaWxkX2IKKworCWNyZWF0ZS9kZWxldGUgZm9sbG93aW5nIGdyb3VwcyBhdCByYW5kb20gd2hpbGUgam9icyBhcmUgcnVubmluZy4KKwkvb3B0L2Nncm91cC8wMS9jaGlsZF9hL2NoaWxkX2FhCisJL29wdC9jZ3JvdXAvMDEvY2hpbGRfYi9jaGlsZF9iYgorCS9vcHQvY2dyb3VwLzAxL2NoaWxkX2MKKworCXJ1bm5pbmcgbmV3IGpvYnMgaW4gbmV3IGdyb3VwIGlzIGFsc28gZ29vZC4KKworIDkuNiBNb3VudCB3aXRoIG90aGVyIHN1YnN5c3RlbXMuCisJTW91bnRpbmcgd2l0aCBvdGhlciBzdWJzeXN0ZW1zIGlzIGEgZ29vZCB0ZXN0IGJlY2F1c2UgdGhlcmUgaXMgYQorCXJhY2UgYW5kIGxvY2sgZGVwZW5kZW5jeSB3aXRoIG90aGVyIGNncm91cCBzdWJzeXN0ZW1zLgorCisJZXhhbXBsZSkKKwkjIG1vdW50IC10IGNncm91cCBub25lIC9jZ3JvdXAgLW8gY3B1c2V0LG1lbW9yeSxjcHUsZGV2aWNlcworCisJYW5kIGRvIHRhc2sgbW92ZSwgbWtkaXIsIHJtZGlyIGV0Yy4uLnVuZGVyIHRoaXMuCisKKyA5Ljcgc3dhcG9mZi4KKwlCZXNpZGVzIG1hbmFnZW1lbnQgb2Ygc3dhcCBpcyBvbmUgb2YgY29tcGxpY2F0ZWQgcGFydHMgb2YgbWVtY2csCisJY2FsbCBwYXRoIG9mIHN3YXAtaW4gYXQgc3dhcG9mZiBpcyBub3Qgc2FtZSBhcyB1c3VhbCBzd2FwLWluIHBhdGguLgorCUl0J3Mgd29ydGggdG8gYmUgdGVzdGVkIGV4cGxpY2l0bHkuCisKKwlGb3IgZXhhbXBsZSwgdGVzdCBsaWtlIGZvbGxvd2luZyBpcyBnb29kLgorCShTaGVsbC1BKQorCSMgbW91bnQgLXQgY2dyb3VwIG5vbmUgL2Nncm91cCAtbyBtZW1vcnkKKwkjIG1rZGlyIC9jZ3JvdXAvdGVzdAorCSMgZWNobyA0ME0gPiAvY2dyb3VwL3Rlc3QvbWVtb3J5LmxpbWl0X2luX2J5dGVzCisJIyBlY2hvIDAgPiAvY2dyb3VwL3Rlc3QvdGFza3MKKwlSdW4gbWFsbG9jKDEwME0pIHByb2dyYW0gdW5kZXIgdGhpcy4gWW91J2xsIHNlZSA2ME0gb2Ygc3dhcHMuCisJKFNoZWxsLUIpCisJIyBtb3ZlIGFsbCB0YXNrcyBpbiAvY2dyb3VwL3Rlc3QgdG8gL2Nncm91cAorCSMgL3NiaW4vc3dhcG9mZiAtYQorCSMgcm1kaXIgL2Nncm91cC90ZXN0CisJIyBraWxsIG1hbGxvYyB0YXNrLgorCisJT2YgY291cnNlLCB0bXBmcyB2LnMuIHN3YXBvZmYgdGVzdCBzaG91bGQgYmUgdGVzdGVkLCB0b28uCisKKyA5LjggT09NLUtpbGxlcgorCU91dC1vZi1tZW1vcnkgY2F1c2VkIGJ5IG1lbWNnJ3MgbGltaXQgd2lsbCBraWxsIHRhc2tzIHVuZGVyCisJdGhlIG1lbWNnLiBXaGVuIGhpZXJhcmNoeSBpcyB1c2VkLCBhIHRhc2sgdW5kZXIgaGllcmFyY2h5CisJd2lsbCBiZSBraWxsZWQgYnkgdGhlIGtlcm5lbC4KKwlJbiB0aGlzIGNhc2UsIHBhbmljX29uX29vbSBzaG91bGRuJ3QgYmUgaW52b2tlZCBhbmQgdGFza3MKKwlpbiBvdGhlciBncm91cHMgc2hvdWxkbid0IGJlIGtpbGxlZC4KKworCUl0J3Mgbm90IGRpZmZpY3VsdCB0byBjYXVzZSBPT00gdW5kZXIgbWVtY2cgYXMgZm9sbG93aW5nLgorCUNhc2UgQSkgd2hlbiB5b3UgY2FuIHN3YXBvZmYKKwkjc3dhcG9mZiAtYQorCSNlY2hvIDUwTSA+IC9tZW1vcnkubGltaXRfaW5fYnl0ZXMKKwlydW4gNTFNIG9mIG1hbGxvYworCisJQ2FzZSBCKSB3aGVuIHlvdSB1c2UgbWVtK3N3YXAgbGltaXRhdGlvbi4KKwkjZWNobyA1ME0gPiBtZW1vcnkubGltaXRfaW5fYnl0ZXMKKwkjZWNobyA1ME0gPiBtZW1vcnkubWVtc3cubGltaXRfaW5fYnl0ZXMKKwlydW4gNTFNIG9mIG1hbGxvYworCisgOS45IE1vdmUgY2hhcmdlcyBhdCB0YXNrIG1pZ3JhdGlvbgorCUNoYXJnZXMgYXNzb2NpYXRlZCB3aXRoIGEgdGFzayBjYW4gYmUgbW92ZWQgYWxvbmcgd2l0aCB0YXNrIG1pZ3JhdGlvbi4KKworCShTaGVsbC1BKQorCSNta2RpciAvY2dyb3VwL0EKKwkjZWNobyAkJCA+L2Nncm91cC9BL3Rhc2tzCisJcnVuIHNvbWUgcHJvZ3JhbXMgd2hpY2ggdXNlcyBzb21lIGFtb3VudCBvZiBtZW1vcnkgaW4gL2Nncm91cC9BLgorCisJKFNoZWxsLUIpCisJI21rZGlyIC9jZ3JvdXAvQgorCSNlY2hvIDEgPi9jZ3JvdXAvQi9tZW1vcnkubW92ZV9jaGFyZ2VfYXRfaW1taWdyYXRlCisJI2VjaG8gInBpZCBvZiB0aGUgcHJvZ3JhbSBydW5uaW5nIGluIGdyb3VwIEEiID4vY2dyb3VwL0IvdGFza3MKKworCVlvdSBjYW4gc2VlIGNoYXJnZXMgaGF2ZSBiZWVuIG1vdmVkIGJ5IHJlYWRpbmcgKi51c2FnZV9pbl9ieXRlcyBvcgorCW1lbW9yeS5zdGF0IG9mIGJvdGggQSBhbmQgQi4KKwlTZWUgOC4yIG9mIERvY3VtZW50YXRpb24vY2dyb3Vwcy9tZW1vcnkudHh0IHRvIHNlZSB3aGF0IHZhbHVlIHNob3VsZCBiZQorCXdyaXR0ZW4gdG8gbW92ZV9jaGFyZ2VfYXRfaW1taWdyYXRlLgorCisgOS4xMCBNZW1vcnkgdGhyZXNob2xkcworCU1lbW9yeSBjb250cm9sbGVyIGltcGxlbWVudHMgbWVtb3J5IHRocmVzaG9sZHMgdXNpbmcgY2dyb3VwcyBub3RpZmljYXRpb24KKwlBUEkuIFlvdSBjYW4gdXNlIHRvb2xzL2Nncm91cC9jZ3JvdXBfZXZlbnRfbGlzdGVuZXIuYyB0byB0ZXN0IGl0LgorCisJKFNoZWxsLUEpIENyZWF0ZSBjZ3JvdXAgYW5kIHJ1biBldmVudCBsaXN0ZW5lcgorCSMgbWtkaXIgL2Nncm91cC9BCisJIyAuL2Nncm91cF9ldmVudF9saXN0ZW5lciAvY2dyb3VwL0EvbWVtb3J5LnVzYWdlX2luX2J5dGVzIDVNCisKKwkoU2hlbGwtQikgQWRkIHRhc2sgdG8gY2dyb3VwIGFuZCB0cnkgdG8gYWxsb2NhdGUgYW5kIGZyZWUgbWVtb3J5CisJIyBlY2hvICQkID4vY2dyb3VwL0EvdGFza3MKKwkjIGE9IiQoZGQgaWY9L2Rldi96ZXJvIGJzPTFNIGNvdW50PTEwKSIKKwkjIGE9CisKKwlZb3Ugd2lsbCBzZWUgbWVzc2FnZSBmcm9tIGNncm91cF9ldmVudF9saXN0ZW5lciBldmVyeSB0aW1lIHlvdSBjcm9zcworCXRoZSB0aHJlc2hvbGRzLgorCisJVXNlIC9jZ3JvdXAvQS9tZW1vcnkubWVtc3cudXNhZ2VfaW5fYnl0ZXMgdG8gdGVzdCBtZW1zdyB0aHJlc2hvbGRzLgorCisJSXQncyBnb29kIGlkZWEgdG8gdGVzdCByb290IGNncm91cCBhcyB3ZWxsLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9jZ3JvdXBzL21lbW9yeS50eHQgYi9Eb2N1bWVudGF0aW9uL2Nncm91cHMvbWVtb3J5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjcxZTE2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9jZ3JvdXBzL21lbW9yeS50eHQKQEAgLTAsMCArMSw4NzYgQEAKK01lbW9yeSBSZXNvdXJjZSBDb250cm9sbGVyCisKK05PVEU6IFRoaXMgZG9jdW1lbnQgaXMgaG9wZWxlc3NseSBvdXRkYXRlZCBhbmQgaXQgYXNrcyBmb3IgYSBjb21wbGV0ZQorICAgICAgcmV3cml0ZS4gSXQgc3RpbGwgY29udGFpbnMgYSB1c2VmdWwgaW5mb3JtYXRpb24gc28gd2UgYXJlIGtlZXBpbmcgaXQKKyAgICAgIGhlcmUgYnV0IG1ha2Ugc3VyZSB0byBjaGVjayB0aGUgY3VycmVudCBjb2RlIGlmIHlvdSBuZWVkIGEgZGVlcGVyCisgICAgICB1bmRlcnN0YW5kaW5nLgorCitOT1RFOiBUaGUgTWVtb3J5IFJlc291cmNlIENvbnRyb2xsZXIgaGFzIGdlbmVyaWNhbGx5IGJlZW4gcmVmZXJyZWQgdG8gYXMgdGhlCisgICAgICBtZW1vcnkgY29udHJvbGxlciBpbiB0aGlzIGRvY3VtZW50LiBEbyBub3QgY29uZnVzZSBtZW1vcnkgY29udHJvbGxlcgorICAgICAgdXNlZCBoZXJlIHdpdGggdGhlIG1lbW9yeSBjb250cm9sbGVyIHRoYXQgaXMgdXNlZCBpbiBoYXJkd2FyZS4KKworKEZvciBlZGl0b3JzKQorSW4gdGhpcyBkb2N1bWVudDoKKyAgICAgIFdoZW4gd2UgbWVudGlvbiBhIGNncm91cCAoY2dyb3VwZnMncyBkaXJlY3RvcnkpIHdpdGggbWVtb3J5IGNvbnRyb2xsZXIsCisgICAgICB3ZSBjYWxsIGl0ICJtZW1vcnkgY2dyb3VwIi4gV2hlbiB5b3Ugc2VlIGdpdC1sb2cgYW5kIHNvdXJjZSBjb2RlLCB5b3UnbGwKKyAgICAgIHNlZSBwYXRjaCdzIHRpdGxlIGFuZCBmdW5jdGlvbiBuYW1lcyB0ZW5kIHRvIHVzZSAibWVtY2ciLgorICAgICAgSW4gdGhpcyBkb2N1bWVudCwgd2UgYXZvaWQgdXNpbmcgaXQuCisKK0JlbmVmaXRzIGFuZCBQdXJwb3NlIG9mIHRoZSBtZW1vcnkgY29udHJvbGxlcgorCitUaGUgbWVtb3J5IGNvbnRyb2xsZXIgaXNvbGF0ZXMgdGhlIG1lbW9yeSBiZWhhdmlvdXIgb2YgYSBncm91cCBvZiB0YXNrcworZnJvbSB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBUaGUgYXJ0aWNsZSBvbiBMV04gWzEyXSBtZW50aW9ucyBzb21lIHByb2JhYmxlCit1c2VzIG9mIHRoZSBtZW1vcnkgY29udHJvbGxlci4gVGhlIG1lbW9yeSBjb250cm9sbGVyIGNhbiBiZSB1c2VkIHRvCisKK2EuIElzb2xhdGUgYW4gYXBwbGljYXRpb24gb3IgYSBncm91cCBvZiBhcHBsaWNhdGlvbnMKKyAgIE1lbW9yeS1odW5ncnkgYXBwbGljYXRpb25zIGNhbiBiZSBpc29sYXRlZCBhbmQgbGltaXRlZCB0byBhIHNtYWxsZXIKKyAgIGFtb3VudCBvZiBtZW1vcnkuCitiLiBDcmVhdGUgYSBjZ3JvdXAgd2l0aCBhIGxpbWl0ZWQgYW1vdW50IG9mIG1lbW9yeTsgdGhpcyBjYW4gYmUgdXNlZAorICAgYXMgYSBnb29kIGFsdGVybmF0aXZlIHRvIGJvb3Rpbmcgd2l0aCBtZW09WFhYWC4KK2MuIFZpcnR1YWxpemF0aW9uIHNvbHV0aW9ucyBjYW4gY29udHJvbCB0aGUgYW1vdW50IG9mIG1lbW9yeSB0aGV5IHdhbnQKKyAgIHRvIGFzc2lnbiB0byBhIHZpcnR1YWwgbWFjaGluZSBpbnN0YW5jZS4KK2QuIEEgQ0QvRFZEIGJ1cm5lciBjb3VsZCBjb250cm9sIHRoZSBhbW91bnQgb2YgbWVtb3J5IHVzZWQgYnkgdGhlCisgICByZXN0IG9mIHRoZSBzeXN0ZW0gdG8gZW5zdXJlIHRoYXQgYnVybmluZyBkb2VzIG5vdCBmYWlsIGR1ZSB0byBsYWNrCisgICBvZiBhdmFpbGFibGUgbWVtb3J5LgorZS4gVGhlcmUgYXJlIHNldmVyYWwgb3RoZXIgdXNlIGNhc2VzOyBmaW5kIG9uZSBvciB1c2UgdGhlIGNvbnRyb2xsZXIganVzdAorICAgZm9yIGZ1biAodG8gbGVhcm4gYW5kIGhhY2sgb24gdGhlIFZNIHN1YnN5c3RlbSkuCisKK0N1cnJlbnQgU3RhdHVzOiBsaW51eC0yLjYuMzQtbW1vdG0oZGV2ZWxvcG1lbnQgdmVyc2lvbiBvZiAyMDEwL0FwcmlsKQorCitGZWF0dXJlczoKKyAtIGFjY291bnRpbmcgYW5vbnltb3VzIHBhZ2VzLCBmaWxlIGNhY2hlcywgc3dhcCBjYWNoZXMgdXNhZ2UgYW5kIGxpbWl0aW5nIHRoZW0uCisgLSBwYWdlcyBhcmUgbGlua2VkIHRvIHBlci1tZW1jZyBMUlUgZXhjbHVzaXZlbHksIGFuZCB0aGVyZSBpcyBubyBnbG9iYWwgTFJVLgorIC0gb3B0aW9uYWxseSwgbWVtb3J5K3N3YXAgdXNhZ2UgY2FuIGJlIGFjY291bnRlZCBhbmQgbGltaXRlZC4KKyAtIGhpZXJhcmNoaWNhbCBhY2NvdW50aW5nCisgLSBzb2Z0IGxpbWl0CisgLSBtb3ZpbmcgKHJlY2hhcmdpbmcpIGFjY291bnQgYXQgbW92aW5nIGEgdGFzayBpcyBzZWxlY3RhYmxlLgorIC0gdXNhZ2UgdGhyZXNob2xkIG5vdGlmaWVyCisgLSBtZW1vcnkgcHJlc3N1cmUgbm90aWZpZXIKKyAtIG9vbS1raWxsZXIgZGlzYWJsZSBrbm9iIGFuZCBvb20tbm90aWZpZXIKKyAtIFJvb3QgY2dyb3VwIGhhcyBubyBsaW1pdCBjb250cm9scy4KKworIEtlcm5lbCBtZW1vcnkgc3VwcG9ydCBpcyBhIHdvcmsgaW4gcHJvZ3Jlc3MsIGFuZCB0aGUgY3VycmVudCB2ZXJzaW9uIHByb3ZpZGVzCisgYmFzaWNhbGx5IGZ1bmN0aW9uYWxpdHkuIChTZWUgU2VjdGlvbiAyLjcpCisKK0JyaWVmIHN1bW1hcnkgb2YgY29udHJvbCBmaWxlcy4KKworIHRhc2tzCQkJCSAjIGF0dGFjaCBhIHRhc2sodGhyZWFkKSBhbmQgc2hvdyBsaXN0IG9mIHRocmVhZHMKKyBjZ3JvdXAucHJvY3MJCQkgIyBzaG93IGxpc3Qgb2YgcHJvY2Vzc2VzCisgY2dyb3VwLmV2ZW50X2NvbnRyb2wJCSAjIGFuIGludGVyZmFjZSBmb3IgZXZlbnRfZmQoKQorIG1lbW9yeS51c2FnZV9pbl9ieXRlcwkJICMgc2hvdyBjdXJyZW50IHVzYWdlIGZvciBtZW1vcnkKKwkJCQkgKFNlZSA1LjUgZm9yIGRldGFpbHMpCisgbWVtb3J5Lm1lbXN3LnVzYWdlX2luX2J5dGVzCSAjIHNob3cgY3VycmVudCB1c2FnZSBmb3IgbWVtb3J5K1N3YXAKKwkJCQkgKFNlZSA1LjUgZm9yIGRldGFpbHMpCisgbWVtb3J5LmxpbWl0X2luX2J5dGVzCQkgIyBzZXQvc2hvdyBsaW1pdCBvZiBtZW1vcnkgdXNhZ2UKKyBtZW1vcnkubWVtc3cubGltaXRfaW5fYnl0ZXMJICMgc2V0L3Nob3cgbGltaXQgb2YgbWVtb3J5K1N3YXAgdXNhZ2UKKyBtZW1vcnkuZmFpbGNudAkJCSAjIHNob3cgdGhlIG51bWJlciBvZiBtZW1vcnkgdXNhZ2UgaGl0cyBsaW1pdHMKKyBtZW1vcnkubWVtc3cuZmFpbGNudAkJICMgc2hvdyB0aGUgbnVtYmVyIG9mIG1lbW9yeStTd2FwIGhpdHMgbGltaXRzCisgbWVtb3J5Lm1heF91c2FnZV9pbl9ieXRlcwkgIyBzaG93IG1heCBtZW1vcnkgdXNhZ2UgcmVjb3JkZWQKKyBtZW1vcnkubWVtc3cubWF4X3VzYWdlX2luX2J5dGVzICMgc2hvdyBtYXggbWVtb3J5K1N3YXAgdXNhZ2UgcmVjb3JkZWQKKyBtZW1vcnkuc29mdF9saW1pdF9pbl9ieXRlcwkgIyBzZXQvc2hvdyBzb2Z0IGxpbWl0IG9mIG1lbW9yeSB1c2FnZQorIG1lbW9yeS5zdGF0CQkJICMgc2hvdyB2YXJpb3VzIHN0YXRpc3RpY3MKKyBtZW1vcnkudXNlX2hpZXJhcmNoeQkJICMgc2V0L3Nob3cgaGllcmFyY2hpY2FsIGFjY291bnQgZW5hYmxlZAorIG1lbW9yeS5mb3JjZV9lbXB0eQkJICMgdHJpZ2dlciBmb3JjZWQgbW92ZSBjaGFyZ2UgdG8gcGFyZW50CisgbWVtb3J5LnByZXNzdXJlX2xldmVsCQkgIyBzZXQgbWVtb3J5IHByZXNzdXJlIG5vdGlmaWNhdGlvbnMKKyBtZW1vcnkuc3dhcHBpbmVzcwkJICMgc2V0L3Nob3cgc3dhcHBpbmVzcyBwYXJhbWV0ZXIgb2Ygdm1zY2FuCisJCQkJIChTZWUgc3lzY3RsJ3Mgdm0uc3dhcHBpbmVzcykKKyBtZW1vcnkubW92ZV9jaGFyZ2VfYXRfaW1taWdyYXRlICMgc2V0L3Nob3cgY29udHJvbHMgb2YgbW92aW5nIGNoYXJnZXMKKyBtZW1vcnkub29tX2NvbnRyb2wJCSAjIHNldC9zaG93IG9vbSBjb250cm9scy4KKyBtZW1vcnkubnVtYV9zdGF0CQkgIyBzaG93IHRoZSBudW1iZXIgb2YgbWVtb3J5IHVzYWdlIHBlciBudW1hIG5vZGUKKworIG1lbW9yeS5rbWVtLmxpbWl0X2luX2J5dGVzICAgICAgIyBzZXQvc2hvdyBoYXJkIGxpbWl0IGZvciBrZXJuZWwgbWVtb3J5CisgbWVtb3J5LmttZW0udXNhZ2VfaW5fYnl0ZXMgICAgICAjIHNob3cgY3VycmVudCBrZXJuZWwgbWVtb3J5IGFsbG9jYXRpb24KKyBtZW1vcnkua21lbS5mYWlsY250ICAgICAgICAgICAgICMgc2hvdyB0aGUgbnVtYmVyIG9mIGtlcm5lbCBtZW1vcnkgdXNhZ2UgaGl0cyBsaW1pdHMKKyBtZW1vcnkua21lbS5tYXhfdXNhZ2VfaW5fYnl0ZXMgICMgc2hvdyBtYXgga2VybmVsIG1lbW9yeSB1c2FnZSByZWNvcmRlZAorCisgbWVtb3J5LmttZW0udGNwLmxpbWl0X2luX2J5dGVzICAjIHNldC9zaG93IGhhcmQgbGltaXQgZm9yIHRjcCBidWYgbWVtb3J5CisgbWVtb3J5LmttZW0udGNwLnVzYWdlX2luX2J5dGVzICAjIHNob3cgY3VycmVudCB0Y3AgYnVmIG1lbW9yeSBhbGxvY2F0aW9uCisgbWVtb3J5LmttZW0udGNwLmZhaWxjbnQgICAgICAgICAgICAjIHNob3cgdGhlIG51bWJlciBvZiB0Y3AgYnVmIG1lbW9yeSB1c2FnZSBoaXRzIGxpbWl0cworIG1lbW9yeS5rbWVtLnRjcC5tYXhfdXNhZ2VfaW5fYnl0ZXMgIyBzaG93IG1heCB0Y3AgYnVmIG1lbW9yeSB1c2FnZSByZWNvcmRlZAorCisxLiBIaXN0b3J5CisKK1RoZSBtZW1vcnkgY29udHJvbGxlciBoYXMgYSBsb25nIGhpc3RvcnkuIEEgcmVxdWVzdCBmb3IgY29tbWVudHMgZm9yIHRoZSBtZW1vcnkKK2NvbnRyb2xsZXIgd2FzIHBvc3RlZCBieSBCYWxiaXIgU2luZ2ggWzFdLiBBdCB0aGUgdGltZSB0aGUgUkZDIHdhcyBwb3N0ZWQKK3RoZXJlIHdlcmUgc2V2ZXJhbCBpbXBsZW1lbnRhdGlvbnMgZm9yIG1lbW9yeSBjb250cm9sLiBUaGUgZ29hbCBvZiB0aGUKK1JGQyB3YXMgdG8gYnVpbGQgY29uc2Vuc3VzIGFuZCBhZ3JlZW1lbnQgZm9yIHRoZSBtaW5pbWFsIGZlYXR1cmVzIHJlcXVpcmVkCitmb3IgbWVtb3J5IGNvbnRyb2wuIFRoZSBmaXJzdCBSU1MgY29udHJvbGxlciB3YXMgcG9zdGVkIGJ5IEJhbGJpciBTaW5naFsyXQoraW4gRmViIDIwMDcuIFBhdmVsIEVtZWxpYW5vdiBbM11bNF1bNV0gaGFzIHNpbmNlIHBvc3RlZCB0aHJlZSB2ZXJzaW9ucyBvZiB0aGUKK1JTUyBjb250cm9sbGVyLiBBdCBPTFMsIGF0IHRoZSByZXNvdXJjZSBtYW5hZ2VtZW50IEJvRiwgZXZlcnlvbmUgc3VnZ2VzdGVkCit0aGF0IHdlIGhhbmRsZSBib3RoIHBhZ2UgY2FjaGUgYW5kIFJTUyB0b2dldGhlci4gQW5vdGhlciByZXF1ZXN0IHdhcyByYWlzZWQKK3RvIGFsbG93IHVzZXIgc3BhY2UgaGFuZGxpbmcgb2YgT09NLiBUaGUgY3VycmVudCBtZW1vcnkgY29udHJvbGxlciBpcworYXQgdmVyc2lvbiA2OyBpdCBjb21iaW5lcyBib3RoIG1hcHBlZCAoUlNTKSBhbmQgdW5tYXBwZWQgUGFnZQorQ2FjaGUgQ29udHJvbCBbMTFdLgorCisyLiBNZW1vcnkgQ29udHJvbAorCitNZW1vcnkgaXMgYSB1bmlxdWUgcmVzb3VyY2UgaW4gdGhlIHNlbnNlIHRoYXQgaXQgaXMgcHJlc2VudCBpbiBhIGxpbWl0ZWQKK2Ftb3VudC4gSWYgYSB0YXNrIHJlcXVpcmVzIGEgbG90IG9mIENQVSBwcm9jZXNzaW5nLCB0aGUgdGFzayBjYW4gc3ByZWFkCitpdHMgcHJvY2Vzc2luZyBvdmVyIGEgcGVyaW9kIG9mIGhvdXJzLCBkYXlzLCBtb250aHMgb3IgeWVhcnMsIGJ1dCB3aXRoCittZW1vcnksIHRoZSBzYW1lIHBoeXNpY2FsIG1lbW9yeSBuZWVkcyB0byBiZSByZXVzZWQgdG8gYWNjb21wbGlzaCB0aGUgdGFzay4KKworVGhlIG1lbW9yeSBjb250cm9sbGVyIGltcGxlbWVudGF0aW9uIGhhcyBiZWVuIGRpdmlkZWQgaW50byBwaGFzZXMuIFRoZXNlCithcmU6CisKKzEuIE1lbW9yeSBjb250cm9sbGVyCisyLiBtbG9jaygyKSBjb250cm9sbGVyCiszLiBLZXJuZWwgdXNlciBtZW1vcnkgYWNjb3VudGluZyBhbmQgc2xhYiBjb250cm9sCis0LiB1c2VyIG1hcHBpbmdzIGxlbmd0aCBjb250cm9sbGVyCisKK1RoZSBtZW1vcnkgY29udHJvbGxlciBpcyB0aGUgZmlyc3QgY29udHJvbGxlciBkZXZlbG9wZWQuCisKKzIuMS4gRGVzaWduCisKK1RoZSBjb3JlIG9mIHRoZSBkZXNpZ24gaXMgYSBjb3VudGVyIGNhbGxlZCB0aGUgcGFnZV9jb3VudGVyLiBUaGUKK3BhZ2VfY291bnRlciB0cmFja3MgdGhlIGN1cnJlbnQgbWVtb3J5IHVzYWdlIGFuZCBsaW1pdCBvZiB0aGUgZ3JvdXAgb2YKK3Byb2Nlc3NlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnRyb2xsZXIuIEVhY2ggY2dyb3VwIGhhcyBhIG1lbW9yeSBjb250cm9sbGVyCitzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZSAobWVtX2Nncm91cCkgYXNzb2NpYXRlZCB3aXRoIGl0LgorCisyLjIuIEFjY291bnRpbmcKKworCQkrLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisJCXwgIG1lbV9jZ3JvdXAgICAgICAgIHwKKwkJfCAgKHBhZ2VfY291bnRlcikgICAgfAorCQkrLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisJCSAvICAgICAgICAgICAgXiAgICAgIFwKKwkJLyAgICAgICAgICAgICB8ICAgICAgIFwKKyAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLSsgIHwgICAgICAgICstLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgIHwgbW1fc3RydWN0ICAgICB8ICB8Li4uLiAgICB8IG1tX3N0cnVjdCAgICAgfAorICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgfCAgICAgICAgfCAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLSsgIHwgICAgICAgICstLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIC0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICstLS0tLS0rLS0tLS0tLS0rCisgICAgICAgICAgIHwgcGFnZSAgICAgICAgICArLS0tLS0tLS0tLT4gIHBhZ2VfY2dyb3VwfAorICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0rCisKKyAgICAgICAgICAgICAoRmlndXJlIDE6IEhpZXJhcmNoeSBvZiBBY2NvdW50aW5nKQorCisKK0ZpZ3VyZSAxIHNob3dzIHRoZSBpbXBvcnRhbnQgYXNwZWN0cyBvZiB0aGUgY29udHJvbGxlcgorCisxLiBBY2NvdW50aW5nIGhhcHBlbnMgcGVyIGNncm91cAorMi4gRWFjaCBtbV9zdHJ1Y3Qga25vd3MgYWJvdXQgd2hpY2ggY2dyb3VwIGl0IGJlbG9uZ3MgdG8KKzMuIEVhY2ggcGFnZSBoYXMgYSBwb2ludGVyIHRvIHRoZSBwYWdlX2Nncm91cCwgd2hpY2ggaW4gdHVybiBrbm93cyB0aGUKKyAgIGNncm91cCBpdCBiZWxvbmdzIHRvCisKK1RoZSBhY2NvdW50aW5nIGlzIGRvbmUgYXMgZm9sbG93czogbWVtX2Nncm91cF9jaGFyZ2VfY29tbW9uKCkgaXMgaW52b2tlZCB0bworc2V0IHVwIHRoZSBuZWNlc3NhcnkgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBjaGVjayBpZiB0aGUgY2dyb3VwIHRoYXQgaXMgYmVpbmcKK2NoYXJnZWQgaXMgb3ZlciBpdHMgbGltaXQuIElmIGl0IGlzLCB0aGVuIHJlY2xhaW0gaXMgaW52b2tlZCBvbiB0aGUgY2dyb3VwLgorTW9yZSBkZXRhaWxzIGNhbiBiZSBmb3VuZCBpbiB0aGUgcmVjbGFpbSBzZWN0aW9uIG9mIHRoaXMgZG9jdW1lbnQuCitJZiBldmVyeXRoaW5nIGdvZXMgd2VsbCwgYSBwYWdlIG1ldGEtZGF0YS1zdHJ1Y3R1cmUgY2FsbGVkIHBhZ2VfY2dyb3VwIGlzCit1cGRhdGVkLiBwYWdlX2Nncm91cCBoYXMgaXRzIG93biBMUlUgb24gY2dyb3VwLgorKCopIHBhZ2VfY2dyb3VwIHN0cnVjdHVyZSBpcyBhbGxvY2F0ZWQgYXQgYm9vdC9tZW1vcnktaG90cGx1ZyB0aW1lLgorCisyLjIuMSBBY2NvdW50aW5nIGRldGFpbHMKKworQWxsIG1hcHBlZCBhbm9uIHBhZ2VzIChSU1MpIGFuZCBjYWNoZSBwYWdlcyAoUGFnZSBDYWNoZSkgYXJlIGFjY291bnRlZC4KK1NvbWUgcGFnZXMgd2hpY2ggYXJlIG5ldmVyIHJlY2xhaW1hYmxlIGFuZCB3aWxsIG5vdCBiZSBvbiB0aGUgTFJVCithcmUgbm90IGFjY291bnRlZC4gV2UganVzdCBhY2NvdW50IHBhZ2VzIHVuZGVyIHVzdWFsIFZNIG1hbmFnZW1lbnQuCisKK1JTUyBwYWdlcyBhcmUgYWNjb3VudGVkIGF0IHBhZ2VfZmF1bHQgdW5sZXNzIHRoZXkndmUgYWxyZWFkeSBiZWVuIGFjY291bnRlZAorZm9yIGVhcmxpZXIuIEEgZmlsZSBwYWdlIHdpbGwgYmUgYWNjb3VudGVkIGZvciBhcyBQYWdlIENhY2hlIHdoZW4gaXQncworaW5zZXJ0ZWQgaW50byBpbm9kZSAocmFkaXgtdHJlZSkuIFdoaWxlIGl0J3MgbWFwcGVkIGludG8gdGhlIHBhZ2UgdGFibGVzIG9mCitwcm9jZXNzZXMsIGR1cGxpY2F0ZSBhY2NvdW50aW5nIGlzIGNhcmVmdWxseSBhdm9pZGVkLgorCitBbiBSU1MgcGFnZSBpcyB1bmFjY291bnRlZCB3aGVuIGl0J3MgZnVsbHkgdW5tYXBwZWQuIEEgUGFnZUNhY2hlIHBhZ2UgaXMKK3VuYWNjb3VudGVkIHdoZW4gaXQncyByZW1vdmVkIGZyb20gcmFkaXgtdHJlZS4gRXZlbiBpZiBSU1MgcGFnZXMgYXJlIGZ1bGx5Cit1bm1hcHBlZCAoYnkga3N3YXBkKSwgdGhleSBtYXkgZXhpc3QgYXMgU3dhcENhY2hlIGluIHRoZSBzeXN0ZW0gdW50aWwgdGhleQorYXJlIHJlYWxseSBmcmVlZC4gU3VjaCBTd2FwQ2FjaGVzIGFyZSBhbHNvIGFjY291bnRlZC4KK0Egc3dhcHBlZC1pbiBwYWdlIGlzIG5vdCBhY2NvdW50ZWQgdW50aWwgaXQncyBtYXBwZWQuCisKK05vdGU6IFRoZSBrZXJuZWwgZG9lcyBzd2FwaW4tcmVhZGFoZWFkIGFuZCByZWFkcyBtdWx0aXBsZSBzd2FwcyBhdCBvbmNlLgorVGhpcyBtZWFucyBzd2FwcGVkLWluIHBhZ2VzIG1heSBjb250YWluIHBhZ2VzIGZvciBvdGhlciB0YXNrcyB0aGFuIGEgdGFzaworY2F1c2luZyBwYWdlIGZhdWx0LiBTbywgd2UgYXZvaWQgYWNjb3VudGluZyBhdCBzd2FwLWluIEkvTy4KKworQXQgcGFnZSBtaWdyYXRpb24sIGFjY291bnRpbmcgaW5mb3JtYXRpb24gaXMga2VwdC4KKworTm90ZTogd2UganVzdCBhY2NvdW50IHBhZ2VzLW9uLUxSVSBiZWNhdXNlIG91ciBwdXJwb3NlIGlzIHRvIGNvbnRyb2wgYW1vdW50CitvZiB1c2VkIHBhZ2VzOyBub3Qtb24tTFJVIHBhZ2VzIHRlbmQgdG8gYmUgb3V0LW9mLWNvbnRyb2wgZnJvbSBWTSB2aWV3LgorCisyLjMgU2hhcmVkIFBhZ2UgQWNjb3VudGluZworCitTaGFyZWQgcGFnZXMgYXJlIGFjY291bnRlZCBvbiB0aGUgYmFzaXMgb2YgdGhlIGZpcnN0IHRvdWNoIGFwcHJvYWNoLiBUaGUKK2Nncm91cCB0aGF0IGZpcnN0IHRvdWNoZXMgYSBwYWdlIGlzIGFjY291bnRlZCBmb3IgdGhlIHBhZ2UuIFRoZSBwcmluY2lwbGUKK2JlaGluZCB0aGlzIGFwcHJvYWNoIGlzIHRoYXQgYSBjZ3JvdXAgdGhhdCBhZ2dyZXNzaXZlbHkgdXNlcyBhIHNoYXJlZAorcGFnZSB3aWxsIGV2ZW50dWFsbHkgZ2V0IGNoYXJnZWQgZm9yIGl0IChvbmNlIGl0IGlzIHVuY2hhcmdlZCBmcm9tCit0aGUgY2dyb3VwIHRoYXQgYnJvdWdodCBpdCBpbiAtLSB0aGlzIHdpbGwgaGFwcGVuIG9uIG1lbW9yeSBwcmVzc3VyZSkuCisKK0J1dCBzZWUgc2VjdGlvbiA4LjI6IHdoZW4gbW92aW5nIGEgdGFzayB0byBhbm90aGVyIGNncm91cCwgaXRzIHBhZ2VzIG1heQorYmUgcmVjaGFyZ2VkIHRvIHRoZSBuZXcgY2dyb3VwLCBpZiBtb3ZlX2NoYXJnZV9hdF9pbW1pZ3JhdGUgaGFzIGJlZW4gY2hvc2VuLgorCitFeGNlcHRpb246IElmIENPTkZJR19NRU1DR19TV0FQIGlzIG5vdCB1c2VkLgorV2hlbiB5b3UgZG8gc3dhcG9mZiBhbmQgbWFrZSBzd2FwcGVkLW91dCBwYWdlcyBvZiBzaG1lbSh0bXBmcykgdG8KK2JlIGJhY2tlZCBpbnRvIG1lbW9yeSBpbiBmb3JjZSwgY2hhcmdlcyBmb3IgcGFnZXMgYXJlIGFjY291bnRlZCBhZ2FpbnN0IHRoZQorY2FsbGVyIG9mIHN3YXBvZmYgcmF0aGVyIHRoYW4gdGhlIHVzZXJzIG9mIHNobWVtLgorCisyLjQgU3dhcCBFeHRlbnNpb24gKENPTkZJR19NRU1DR19TV0FQKQorCitTd2FwIEV4dGVuc2lvbiBhbGxvd3MgeW91IHRvIHJlY29yZCBjaGFyZ2UgZm9yIHN3YXAuIEEgc3dhcHBlZC1pbiBwYWdlIGlzCitjaGFyZ2VkIGJhY2sgdG8gb3JpZ2luYWwgcGFnZSBhbGxvY2F0b3IgaWYgcG9zc2libGUuCisKK1doZW4gc3dhcCBpcyBhY2NvdW50ZWQsIGZvbGxvd2luZyBmaWxlcyBhcmUgYWRkZWQuCisgLSBtZW1vcnkubWVtc3cudXNhZ2VfaW5fYnl0ZXMuCisgLSBtZW1vcnkubWVtc3cubGltaXRfaW5fYnl0ZXMuCisKK21lbXN3IG1lYW5zIG1lbW9yeStzd2FwLiBVc2FnZSBvZiBtZW1vcnkrc3dhcCBpcyBsaW1pdGVkIGJ5CittZW1zdy5saW1pdF9pbl9ieXRlcy4KKworRXhhbXBsZTogQXNzdW1lIGEgc3lzdGVtIHdpdGggNEcgb2Ygc3dhcC4gQSB0YXNrIHdoaWNoIGFsbG9jYXRlcyA2RyBvZiBtZW1vcnkKKyhieSBtaXN0YWtlKSB1bmRlciAyRyBtZW1vcnkgbGltaXRhdGlvbiB3aWxsIHVzZSBhbGwgc3dhcC4KK0luIHRoaXMgY2FzZSwgc2V0dGluZyBtZW1zdy5saW1pdF9pbl9ieXRlcz0zRyB3aWxsIHByZXZlbnQgYmFkIHVzZSBvZiBzd2FwLgorQnkgdXNpbmcgdGhlIG1lbXN3IGxpbWl0LCB5b3UgY2FuIGF2b2lkIHN5c3RlbSBPT00gd2hpY2ggY2FuIGJlIGNhdXNlZCBieSBzd2FwCitzaG9ydGFnZS4KKworKiB3aHkgJ21lbW9yeStzd2FwJyByYXRoZXIgdGhhbiBzd2FwLgorVGhlIGdsb2JhbCBMUlUoa3N3YXBkKSBjYW4gc3dhcCBvdXQgYXJiaXRyYXJ5IHBhZ2VzLiBTd2FwLW91dCBtZWFucwordG8gbW92ZSBhY2NvdW50IGZyb20gbWVtb3J5IHRvIHN3YXAuLi50aGVyZSBpcyBubyBjaGFuZ2UgaW4gdXNhZ2Ugb2YKK21lbW9yeStzd2FwLiBJbiBvdGhlciB3b3Jkcywgd2hlbiB3ZSB3YW50IHRvIGxpbWl0IHRoZSB1c2FnZSBvZiBzd2FwIHdpdGhvdXQKK2FmZmVjdGluZyBnbG9iYWwgTFJVLCBtZW1vcnkrc3dhcCBsaW1pdCBpcyBiZXR0ZXIgdGhhbiBqdXN0IGxpbWl0aW5nIHN3YXAgZnJvbQorYW4gT1MgcG9pbnQgb2Ygdmlldy4KKworKiBXaGF0IGhhcHBlbnMgd2hlbiBhIGNncm91cCBoaXRzIG1lbW9yeS5tZW1zdy5saW1pdF9pbl9ieXRlcworV2hlbiBhIGNncm91cCBoaXRzIG1lbW9yeS5tZW1zdy5saW1pdF9pbl9ieXRlcywgaXQncyB1c2VsZXNzIHRvIGRvIHN3YXAtb3V0CitpbiB0aGlzIGNncm91cC4gVGhlbiwgc3dhcC1vdXQgd2lsbCBub3QgYmUgZG9uZSBieSBjZ3JvdXAgcm91dGluZSBhbmQgZmlsZQorY2FjaGVzIGFyZSBkcm9wcGVkLiBCdXQgYXMgbWVudGlvbmVkIGFib3ZlLCBnbG9iYWwgTFJVIGNhbiBkbyBzd2Fwb3V0IG1lbW9yeQorZnJvbSBpdCBmb3Igc2FuaXR5IG9mIHRoZSBzeXN0ZW0ncyBtZW1vcnkgbWFuYWdlbWVudCBzdGF0ZS4gWW91IGNhbid0IGZvcmJpZAoraXQgYnkgY2dyb3VwLgorCisyLjUgUmVjbGFpbQorCitFYWNoIGNncm91cCBtYWludGFpbnMgYSBwZXIgY2dyb3VwIExSVSB3aGljaCBoYXMgdGhlIHNhbWUgc3RydWN0dXJlIGFzCitnbG9iYWwgVk0uIFdoZW4gYSBjZ3JvdXAgZ29lcyBvdmVyIGl0cyBsaW1pdCwgd2UgZmlyc3QgdHJ5Cit0byByZWNsYWltIG1lbW9yeSBmcm9tIHRoZSBjZ3JvdXAgc28gYXMgdG8gbWFrZSBzcGFjZSBmb3IgdGhlIG5ldworcGFnZXMgdGhhdCB0aGUgY2dyb3VwIGhhcyB0b3VjaGVkLiBJZiB0aGUgcmVjbGFpbSBpcyB1bnN1Y2Nlc3NmdWwsCithbiBPT00gcm91dGluZSBpcyBpbnZva2VkIHRvIHNlbGVjdCBhbmQga2lsbCB0aGUgYnVsa2llc3QgdGFzayBpbiB0aGUKK2Nncm91cC4gKFNlZSAxMC4gT09NIENvbnRyb2wgYmVsb3cuKQorCitUaGUgcmVjbGFpbSBhbGdvcml0aG0gaGFzIG5vdCBiZWVuIG1vZGlmaWVkIGZvciBjZ3JvdXBzLCBleGNlcHQgdGhhdAorcGFnZXMgdGhhdCBhcmUgc2VsZWN0ZWQgZm9yIHJlY2xhaW1pbmcgY29tZSBmcm9tIHRoZSBwZXItY2dyb3VwIExSVQorbGlzdC4KKworTk9URTogUmVjbGFpbSBkb2VzIG5vdCB3b3JrIGZvciB0aGUgcm9vdCBjZ3JvdXAsIHNpbmNlIHdlIGNhbm5vdCBzZXQgYW55CitsaW1pdHMgb24gdGhlIHJvb3QgY2dyb3VwLgorCitOb3RlMjogV2hlbiBwYW5pY19vbl9vb20gaXMgc2V0IHRvICIyIiwgdGhlIHdob2xlIHN5c3RlbSB3aWxsIHBhbmljLgorCitXaGVuIG9vbSBldmVudCBub3RpZmllciBpcyByZWdpc3RlcmVkLCBldmVudCB3aWxsIGJlIGRlbGl2ZXJlZC4KKyhTZWUgb29tX2NvbnRyb2wgc2VjdGlvbikKKworMi42IExvY2tpbmcKKworICAgbG9ja19wYWdlX2Nncm91cCgpL3VubG9ja19wYWdlX2Nncm91cCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIHVuZGVyCisgICBtYXBwaW5nLT50cmVlX2xvY2suCisKKyAgIE90aGVyIGxvY2sgb3JkZXIgaXMgZm9sbG93aW5nOgorICAgUEdfbG9ja2VkLgorICAgbW0tPnBhZ2VfdGFibGVfbG9jaworICAgICAgIHpvbmUtPmxydV9sb2NrCisJICBsb2NrX3BhZ2VfY2dyb3VwLgorICBJbiBtYW55IGNhc2VzLCBqdXN0IGxvY2tfcGFnZV9jZ3JvdXAoKSBpcyBjYWxsZWQuCisgIHBlci16b25lLXBlci1jZ3JvdXAgTFJVIChjZ3JvdXAncyBwcml2YXRlIExSVSkgaXMganVzdCBndWFyZGVkIGJ5CisgIHpvbmUtPmxydV9sb2NrLCBpdCBoYXMgbm8gbG9jayBvZiBpdHMgb3duLgorCisyLjcgS2VybmVsIE1lbW9yeSBFeHRlbnNpb24gKENPTkZJR19NRU1DR19LTUVNKQorCitXaXRoIHRoZSBLZXJuZWwgbWVtb3J5IGV4dGVuc2lvbiwgdGhlIE1lbW9yeSBDb250cm9sbGVyIGlzIGFibGUgdG8gbGltaXQKK3RoZSBhbW91bnQgb2Yga2VybmVsIG1lbW9yeSB1c2VkIGJ5IHRoZSBzeXN0ZW0uIEtlcm5lbCBtZW1vcnkgaXMgZnVuZGFtZW50YWxseQorZGlmZmVyZW50IHRoYW4gdXNlciBtZW1vcnksIHNpbmNlIGl0IGNhbid0IGJlIHN3YXBwZWQgb3V0LCB3aGljaCBtYWtlcyBpdAorcG9zc2libGUgdG8gRG9TIHRoZSBzeXN0ZW0gYnkgY29uc3VtaW5nIHRvbyBtdWNoIG9mIHRoaXMgcHJlY2lvdXMgcmVzb3VyY2UuCisKK0tlcm5lbCBtZW1vcnkgd29uJ3QgYmUgYWNjb3VudGVkIGF0IGFsbCB1bnRpbCBsaW1pdCBvbiBhIGdyb3VwIGlzIHNldC4gVGhpcworYWxsb3dzIGZvciBleGlzdGluZyBzZXR1cHMgdG8gY29udGludWUgd29ya2luZyB3aXRob3V0IGRpc3J1cHRpb24uICBUaGUgbGltaXQKK2Nhbm5vdCBiZSBzZXQgaWYgdGhlIGNncm91cCBoYXZlIGNoaWxkcmVuLCBvciBpZiB0aGVyZSBhcmUgYWxyZWFkeSB0YXNrcyBpbiB0aGUKK2Nncm91cC4gQXR0ZW1wdGluZyB0byBzZXQgdGhlIGxpbWl0IHVuZGVyIHRob3NlIGNvbmRpdGlvbnMgd2lsbCByZXR1cm4gLUVCVVNZLgorV2hlbiB1c2VfaGllcmFyY2h5ID09IDEgYW5kIGEgZ3JvdXAgaXMgYWNjb3VudGVkLCBpdHMgY2hpbGRyZW4gd2lsbAorYXV0b21hdGljYWxseSBiZSBhY2NvdW50ZWQgcmVnYXJkbGVzcyBvZiB0aGVpciBsaW1pdCB2YWx1ZS4KKworQWZ0ZXIgYSBncm91cCBpcyBmaXJzdCBsaW1pdGVkLCBpdCB3aWxsIGJlIGtlcHQgYmVpbmcgYWNjb3VudGVkIHVudGlsIGl0CitpcyByZW1vdmVkLiBUaGUgbWVtb3J5IGxpbWl0YXRpb24gaXRzZWxmLCBjYW4gb2YgY291cnNlIGJlIHJlbW92ZWQgYnkgd3JpdGluZworLTEgdG8gbWVtb3J5LmttZW0ubGltaXRfaW5fYnl0ZXMuIEluIHRoaXMgY2FzZSwga21lbSB3aWxsIGJlIGFjY291bnRlZCwgYnV0IG5vdAorbGltaXRlZC4KKworS2VybmVsIG1lbW9yeSBsaW1pdHMgYXJlIG5vdCBpbXBvc2VkIGZvciB0aGUgcm9vdCBjZ3JvdXAuIFVzYWdlIGZvciB0aGUgcm9vdAorY2dyb3VwIG1heSBvciBtYXkgbm90IGJlIGFjY291bnRlZC4gVGhlIG1lbW9yeSB1c2VkIGlzIGFjY3VtdWxhdGVkIGludG8KK21lbW9yeS5rbWVtLnVzYWdlX2luX2J5dGVzLCBvciBpbiBhIHNlcGFyYXRlIGNvdW50ZXIgd2hlbiBpdCBtYWtlcyBzZW5zZS4KKyhjdXJyZW50bHkgb25seSBmb3IgdGNwKS4KK1RoZSBtYWluICJrbWVtIiBjb3VudGVyIGlzIGZlZCBpbnRvIHRoZSBtYWluIGNvdW50ZXIsIHNvIGttZW0gY2hhcmdlcyB3aWxsCithbHNvIGJlIHZpc2libGUgZnJvbSB0aGUgdXNlciBjb3VudGVyLgorCitDdXJyZW50bHkgbm8gc29mdCBsaW1pdCBpcyBpbXBsZW1lbnRlZCBmb3Iga2VybmVsIG1lbW9yeS4gSXQgaXMgZnV0dXJlIHdvcmsKK3RvIHRyaWdnZXIgc2xhYiByZWNsYWltIHdoZW4gdGhvc2UgbGltaXRzIGFyZSByZWFjaGVkLgorCisyLjcuMSBDdXJyZW50IEtlcm5lbCBNZW1vcnkgcmVzb3VyY2VzIGFjY291bnRlZAorCisqIHN0YWNrIHBhZ2VzOiBldmVyeSBwcm9jZXNzIGNvbnN1bWVzIHNvbWUgc3RhY2sgcGFnZXMuIEJ5IGFjY291bnRpbmcgaW50bwora2VybmVsIG1lbW9yeSwgd2UgcHJldmVudCBuZXcgcHJvY2Vzc2VzIGZyb20gYmVpbmcgY3JlYXRlZCB3aGVuIHRoZSBrZXJuZWwKK21lbW9yeSB1c2FnZSBpcyB0b28gaGlnaC4KKworKiBzbGFiIHBhZ2VzOiBwYWdlcyBhbGxvY2F0ZWQgYnkgdGhlIFNMQUIgb3IgU0xVQiBhbGxvY2F0b3IgYXJlIHRyYWNrZWQuIEEgY29weQorb2YgZWFjaCBrbWVtX2NhY2hlIGlzIGNyZWF0ZWQgZXZlcnkgdGltZSB0aGUgY2FjaGUgaXMgdG91Y2hlZCBieSB0aGUgZmlyc3QgdGltZQorZnJvbSBpbnNpZGUgdGhlIG1lbWNnLiBUaGUgY3JlYXRpb24gaXMgZG9uZSBsYXppbHksIHNvIHNvbWUgb2JqZWN0cyBjYW4gc3RpbGwgYmUKK3NraXBwZWQgd2hpbGUgdGhlIGNhY2hlIGlzIGJlaW5nIGNyZWF0ZWQuIEFsbCBvYmplY3RzIGluIGEgc2xhYiBwYWdlIHNob3VsZAorYmVsb25nIHRvIHRoZSBzYW1lIG1lbWNnLiBUaGlzIG9ubHkgZmFpbHMgdG8gaG9sZCB3aGVuIGEgdGFzayBpcyBtaWdyYXRlZCB0byBhCitkaWZmZXJlbnQgbWVtY2cgZHVyaW5nIHRoZSBwYWdlIGFsbG9jYXRpb24gYnkgdGhlIGNhY2hlLgorCisqIHNvY2tldHMgbWVtb3J5IHByZXNzdXJlOiBzb21lIHNvY2tldHMgcHJvdG9jb2xzIGhhdmUgbWVtb3J5IHByZXNzdXJlCit0aHJlc2hvbGRzLiBUaGUgTWVtb3J5IENvbnRyb2xsZXIgYWxsb3dzIHRoZW0gdG8gYmUgY29udHJvbGxlZCBpbmRpdmlkdWFsbHkKK3BlciBjZ3JvdXAsIGluc3RlYWQgb2YgZ2xvYmFsbHkuCisKKyogdGNwIG1lbW9yeSBwcmVzc3VyZTogc29ja2V0cyBtZW1vcnkgcHJlc3N1cmUgZm9yIHRoZSB0Y3AgcHJvdG9jb2wuCisKKzIuNy4yIENvbW1vbiB1c2UgY2FzZXMKKworQmVjYXVzZSB0aGUgImttZW0iIGNvdW50ZXIgaXMgZmVkIHRvIHRoZSBtYWluIHVzZXIgY291bnRlciwga2VybmVsIG1lbW9yeSBjYW4KK25ldmVyIGJlIGxpbWl0ZWQgY29tcGxldGVseSBpbmRlcGVuZGVudGx5IG9mIHVzZXIgbWVtb3J5LiBTYXkgIlUiIGlzIHRoZSB1c2VyCitsaW1pdCwgYW5kICJLIiB0aGUga2VybmVsIGxpbWl0LiBUaGVyZSBhcmUgdGhyZWUgcG9zc2libGUgd2F5cyBsaW1pdHMgY2FuIGJlCitzZXQ6CisKKyAgICBVICE9IDAsIEsgPSB1bmxpbWl0ZWQ6CisgICAgVGhpcyBpcyB0aGUgc3RhbmRhcmQgbWVtY2cgbGltaXRhdGlvbiBtZWNoYW5pc20gYWxyZWFkeSBwcmVzZW50IGJlZm9yZSBrbWVtCisgICAgYWNjb3VudGluZy4gS2VybmVsIG1lbW9yeSBpcyBjb21wbGV0ZWx5IGlnbm9yZWQuCisKKyAgICBVICE9IDAsIEsgPCBVOgorICAgIEtlcm5lbCBtZW1vcnkgaXMgYSBzdWJzZXQgb2YgdGhlIHVzZXIgbWVtb3J5LiBUaGlzIHNldHVwIGlzIHVzZWZ1bCBpbgorICAgIGRlcGxveW1lbnRzIHdoZXJlIHRoZSB0b3RhbCBhbW91bnQgb2YgbWVtb3J5IHBlci1jZ3JvdXAgaXMgb3ZlcmNvbW1pdGVkLgorICAgIE92ZXJjb21taXRpbmcga2VybmVsIG1lbW9yeSBsaW1pdHMgaXMgZGVmaW5pdGVseSBub3QgcmVjb21tZW5kZWQsIHNpbmNlIHRoZQorICAgIGJveCBjYW4gc3RpbGwgcnVuIG91dCBvZiBub24tcmVjbGFpbWFibGUgbWVtb3J5LgorICAgIEluIHRoaXMgY2FzZSwgdGhlIGFkbWluIGNvdWxkIHNldCB1cCBLIHNvIHRoYXQgdGhlIHN1bSBvZiBhbGwgZ3JvdXBzIGlzCisgICAgbmV2ZXIgZ3JlYXRlciB0aGFuIHRoZSB0b3RhbCBtZW1vcnksIGFuZCBmcmVlbHkgc2V0IFUgYXQgdGhlIGNvc3Qgb2YgaGlzCisgICAgUW9TLgorICAgIFdBUk5JTkc6IEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBtZW1vcnkgcmVjbGFpbSB3aWxsIE5PVCBiZQorICAgIHRyaWdnZXJlZCBmb3IgYSBjZ3JvdXAgd2hlbiBpdCBoaXRzIEsgd2hpbGUgc3RheWluZyBiZWxvdyBVLCB3aGljaCBtYWtlcworICAgIHRoaXMgc2V0dXAgaW1wcmFjdGljYWwuCisKKyAgICBVICE9IDAsIEsgPj0gVToKKyAgICBTaW5jZSBrbWVtIGNoYXJnZXMgd2lsbCBhbHNvIGJlIGZlZCB0byB0aGUgdXNlciBjb3VudGVyIGFuZCByZWNsYWltIHdpbGwgYmUKKyAgICB0cmlnZ2VyZWQgZm9yIHRoZSBjZ3JvdXAgZm9yIGJvdGgga2luZHMgb2YgbWVtb3J5LiBUaGlzIHNldHVwIGdpdmVzIHRoZQorICAgIGFkbWluIGEgdW5pZmllZCB2aWV3IG9mIG1lbW9yeSwgYW5kIGl0IGlzIGFsc28gdXNlZnVsIGZvciBwZW9wbGUgd2hvIGp1c3QKKyAgICB3YW50IHRvIHRyYWNrIGtlcm5lbCBtZW1vcnkgdXNhZ2UuCisKKzMuIFVzZXIgSW50ZXJmYWNlCisKKzMuMC4gQ29uZmlndXJhdGlvbgorCithLiBFbmFibGUgQ09ORklHX0NHUk9VUFMKK2IuIEVuYWJsZSBDT05GSUdfTUVNQ0cKK2MuIEVuYWJsZSBDT05GSUdfTUVNQ0dfU1dBUCAodG8gdXNlIHN3YXAgZXh0ZW5zaW9uKQorZC4gRW5hYmxlIENPTkZJR19NRU1DR19LTUVNICh0byB1c2Uga21lbSBleHRlbnNpb24pCisKKzMuMS4gUHJlcGFyZSB0aGUgY2dyb3VwcyAoc2VlIGNncm91cHMudHh0LCBXaHkgYXJlIGNncm91cHMgbmVlZGVkPykKKyMgbW91bnQgLXQgdG1wZnMgbm9uZSAvc3lzL2ZzL2Nncm91cAorIyBta2RpciAvc3lzL2ZzL2Nncm91cC9tZW1vcnkKKyMgbW91bnQgLXQgY2dyb3VwIG5vbmUgL3N5cy9mcy9jZ3JvdXAvbWVtb3J5IC1vIG1lbW9yeQorCiszLjIuIE1ha2UgdGhlIG5ldyBncm91cCBhbmQgbW92ZSBiYXNoIGludG8gaXQKKyMgbWtkaXIgL3N5cy9mcy9jZ3JvdXAvbWVtb3J5LzAKKyMgZWNobyAkJCA+IC9zeXMvZnMvY2dyb3VwL21lbW9yeS8wL3Rhc2tzCisKK1NpbmNlIG5vdyB3ZSdyZSBpbiB0aGUgMCBjZ3JvdXAsIHdlIGNhbiBhbHRlciB0aGUgbWVtb3J5IGxpbWl0OgorIyBlY2hvIDRNID4gL3N5cy9mcy9jZ3JvdXAvbWVtb3J5LzAvbWVtb3J5LmxpbWl0X2luX2J5dGVzCisKK05PVEU6IFdlIGNhbiB1c2UgYSBzdWZmaXggKGssIEssIG0sIE0sIGcgb3IgRykgdG8gaW5kaWNhdGUgdmFsdWVzIGluIGtpbG8sCittZWdhIG9yIGdpZ2FieXRlcy4gKEhlcmUsIEtpbG8sIE1lZ2EsIEdpZ2EgYXJlIEtpYmlieXRlcywgTWViaWJ5dGVzLCBHaWJpYnl0ZXMuKQorCitOT1RFOiBXZSBjYW4gd3JpdGUgIi0xIiB0byByZXNldCB0aGUgKi5saW1pdF9pbl9ieXRlcyh1bmxpbWl0ZWQpLgorTk9URTogV2UgY2Fubm90IHNldCBsaW1pdHMgb24gdGhlIHJvb3QgY2dyb3VwIGFueSBtb3JlLgorCisjIGNhdCAvc3lzL2ZzL2Nncm91cC9tZW1vcnkvMC9tZW1vcnkubGltaXRfaW5fYnl0ZXMKKzQxOTQzMDQKKworV2UgY2FuIGNoZWNrIHRoZSB1c2FnZToKKyMgY2F0IC9zeXMvZnMvY2dyb3VwL21lbW9yeS8wL21lbW9yeS51c2FnZV9pbl9ieXRlcworMTIxNjUxMgorCitBIHN1Y2Nlc3NmdWwgd3JpdGUgdG8gdGhpcyBmaWxlIGRvZXMgbm90IGd1YXJhbnRlZSBhIHN1Y2Nlc3NmdWwgc2V0dGluZyBvZgordGhpcyBsaW1pdCB0byB0aGUgdmFsdWUgd3JpdHRlbiBpbnRvIHRoZSBmaWxlLiBUaGlzIGNhbiBiZSBkdWUgdG8gYQorbnVtYmVyIG9mIGZhY3RvcnMsIHN1Y2ggYXMgcm91bmRpbmcgdXAgdG8gcGFnZSBib3VuZGFyaWVzIG9yIHRoZSB0b3RhbAorYXZhaWxhYmlsaXR5IG9mIG1lbW9yeSBvbiB0aGUgc3lzdGVtLiBUaGUgdXNlciBpcyByZXF1aXJlZCB0byByZS1yZWFkCit0aGlzIGZpbGUgYWZ0ZXIgYSB3cml0ZSB0byBndWFyYW50ZWUgdGhlIHZhbHVlIGNvbW1pdHRlZCBieSB0aGUga2VybmVsLgorCisjIGVjaG8gMSA+IG1lbW9yeS5saW1pdF9pbl9ieXRlcworIyBjYXQgbWVtb3J5LmxpbWl0X2luX2J5dGVzCis0MDk2CisKK1RoZSBtZW1vcnkuZmFpbGNudCBmaWVsZCBnaXZlcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgdGhlIGNncm91cCBsaW1pdCB3YXMKK2V4Y2VlZGVkLgorCitUaGUgbWVtb3J5LnN0YXQgZmlsZSBnaXZlcyBhY2NvdW50aW5nIGluZm9ybWF0aW9uLiBOb3csIHRoZSBudW1iZXIgb2YKK2NhY2hlcywgUlNTIGFuZCBBY3RpdmUgcGFnZXMvSW5hY3RpdmUgcGFnZXMgYXJlIHNob3duLgorCis0LiBUZXN0aW5nCisKK0ZvciB0ZXN0aW5nIGZlYXR1cmVzIGFuZCBpbXBsZW1lbnRhdGlvbiwgc2VlIG1lbWNnX3Rlc3QudHh0LgorCitQZXJmb3JtYW5jZSB0ZXN0IGlzIGFsc28gaW1wb3J0YW50LiBUbyBzZWUgcHVyZSBtZW1vcnkgY29udHJvbGxlcidzIG92ZXJoZWFkLAordGVzdGluZyBvbiB0bXBmcyB3aWxsIGdpdmUgeW91IGdvb2QgbnVtYmVycyBvZiBzbWFsbCBvdmVyaGVhZHMuCitFeGFtcGxlOiBkbyBrZXJuZWwgbWFrZSBvbiB0bXBmcy4KKworUGFnZS1mYXVsdCBzY2FsYWJpbGl0eSBpcyBhbHNvIGltcG9ydGFudC4gQXQgbWVhc3VyaW5nIHBhcmFsbGVsCitwYWdlIGZhdWx0IHRlc3QsIG11bHRpLXByb2Nlc3MgdGVzdCBtYXkgYmUgYmV0dGVyIHRoYW4gbXVsdGktdGhyZWFkCit0ZXN0IGJlY2F1c2UgaXQgaGFzIG5vaXNlIG9mIHNoYXJlZCBvYmplY3RzL3N0YXR1cy4KKworQnV0IHRoZSBhYm92ZSB0d28gYXJlIHRlc3RpbmcgZXh0cmVtZSBzaXR1YXRpb25zLgorVHJ5aW5nIHVzdWFsIHRlc3QgdW5kZXIgbWVtb3J5IGNvbnRyb2xsZXIgaXMgYWx3YXlzIGhlbHBmdWwuCisKKzQuMSBUcm91Ymxlc2hvb3RpbmcKKworU29tZXRpbWVzIGEgdXNlciBtaWdodCBmaW5kIHRoYXQgdGhlIGFwcGxpY2F0aW9uIHVuZGVyIGEgY2dyb3VwIGlzCit0ZXJtaW5hdGVkIGJ5IHRoZSBPT00ga2lsbGVyLiBUaGVyZSBhcmUgc2V2ZXJhbCBjYXVzZXMgZm9yIHRoaXM6CisKKzEuIFRoZSBjZ3JvdXAgbGltaXQgaXMgdG9vIGxvdyAoanVzdCB0b28gbG93IHRvIGRvIGFueXRoaW5nIHVzZWZ1bCkKKzIuIFRoZSB1c2VyIGlzIHVzaW5nIGFub255bW91cyBtZW1vcnkgYW5kIHN3YXAgaXMgdHVybmVkIG9mZiBvciB0b28gbG93CisKK0Egc3luYyBmb2xsb3dlZCBieSBlY2hvIDEgPiAvcHJvYy9zeXMvdm0vZHJvcF9jYWNoZXMgd2lsbCBoZWxwIGdldCByaWQgb2YKK3NvbWUgb2YgdGhlIHBhZ2VzIGNhY2hlZCBpbiB0aGUgY2dyb3VwIChwYWdlIGNhY2hlIHBhZ2VzKS4KKworVG8ga25vdyB3aGF0IGhhcHBlbnMsIGRpc2FibGluZyBPT01fS2lsbCBhcyBwZXIgIjEwLiBPT00gQ29udHJvbCIgKGJlbG93KSBhbmQKK3NlZWluZyB3aGF0IGhhcHBlbnMgd2lsbCBiZSBoZWxwZnVsLgorCis0LjIgVGFzayBtaWdyYXRpb24KKworV2hlbiBhIHRhc2sgbWlncmF0ZXMgZnJvbSBvbmUgY2dyb3VwIHRvIGFub3RoZXIsIGl0cyBjaGFyZ2UgaXMgbm90CitjYXJyaWVkIGZvcndhcmQgYnkgZGVmYXVsdC4gVGhlIHBhZ2VzIGFsbG9jYXRlZCBmcm9tIHRoZSBvcmlnaW5hbCBjZ3JvdXAgc3RpbGwKK3JlbWFpbiBjaGFyZ2VkIHRvIGl0LCB0aGUgY2hhcmdlIGlzIGRyb3BwZWQgd2hlbiB0aGUgcGFnZSBpcyBmcmVlZCBvcgorcmVjbGFpbWVkLgorCitZb3UgY2FuIG1vdmUgY2hhcmdlcyBvZiBhIHRhc2sgYWxvbmcgd2l0aCB0YXNrIG1pZ3JhdGlvbi4KK1NlZSA4LiAiTW92ZSBjaGFyZ2VzIGF0IHRhc2sgbWlncmF0aW9uIgorCis0LjMgUmVtb3ZpbmcgYSBjZ3JvdXAKKworQSBjZ3JvdXAgY2FuIGJlIHJlbW92ZWQgYnkgcm1kaXIsIGJ1dCBhcyBkaXNjdXNzZWQgaW4gc2VjdGlvbnMgNC4xIGFuZCA0LjIsIGEKK2Nncm91cCBtaWdodCBoYXZlIHNvbWUgY2hhcmdlIGFzc29jaWF0ZWQgd2l0aCBpdCwgZXZlbiB0aG91Z2ggYWxsCit0YXNrcyBoYXZlIG1pZ3JhdGVkIGF3YXkgZnJvbSBpdC4gKGJlY2F1c2Ugd2UgY2hhcmdlIGFnYWluc3QgcGFnZXMsIG5vdAorYWdhaW5zdCB0YXNrcy4pCisKK1dlIG1vdmUgdGhlIHN0YXRzIHRvIHJvb3QgKGlmIHVzZV9oaWVyYXJjaHk9PTApIG9yIHBhcmVudCAoaWYKK3VzZV9oaWVyYXJjaHk9PTEpLCBhbmQgbm8gY2hhbmdlIG9uIHRoZSBjaGFyZ2UgZXhjZXB0IHVuY2hhcmdpbmcKK2Zyb20gdGhlIGNoaWxkLgorCitDaGFyZ2VzIHJlY29yZGVkIGluIHN3YXAgaW5mb3JtYXRpb24gaXMgbm90IHVwZGF0ZWQgYXQgcmVtb3ZhbCBvZiBjZ3JvdXAuCitSZWNvcmRlZCBpbmZvcm1hdGlvbiBpcyBkaXNjYXJkZWQgYW5kIGEgY2dyb3VwIHdoaWNoIHVzZXMgc3dhcCAoc3dhcGNhY2hlKQord2lsbCBiZSBjaGFyZ2VkIGFzIGEgbmV3IG93bmVyIG9mIGl0LgorCitBYm91dCB1c2VfaGllcmFyY2h5LCBzZWUgU2VjdGlvbiA2LgorCis1LiBNaXNjLiBpbnRlcmZhY2VzLgorCis1LjEgZm9yY2VfZW1wdHkKKyAgbWVtb3J5LmZvcmNlX2VtcHR5IGludGVyZmFjZSBpcyBwcm92aWRlZCB0byBtYWtlIGNncm91cCdzIG1lbW9yeSB1c2FnZSBlbXB0eS4KKyAgV2hlbiB3cml0aW5nIGFueXRoaW5nIHRvIHRoaXMKKworICAjIGVjaG8gMCA+IG1lbW9yeS5mb3JjZV9lbXB0eQorCisgIHRoZSBjZ3JvdXAgd2lsbCBiZSByZWNsYWltZWQgYW5kIGFzIG1hbnkgcGFnZXMgcmVjbGFpbWVkIGFzIHBvc3NpYmxlLgorCisgIFRoZSB0eXBpY2FsIHVzZSBjYXNlIGZvciB0aGlzIGludGVyZmFjZSBpcyBiZWZvcmUgY2FsbGluZyBybWRpcigpLgorICBCZWNhdXNlIHJtZGlyKCkgbW92ZXMgYWxsIHBhZ2VzIHRvIHBhcmVudCwgc29tZSBvdXQtb2YtdXNlIHBhZ2UgY2FjaGVzIGNhbiBiZQorICBtb3ZlZCB0byB0aGUgcGFyZW50LiBJZiB5b3Ugd2FudCB0byBhdm9pZCB0aGF0LCBmb3JjZV9lbXB0eSB3aWxsIGJlIHVzZWZ1bC4KKworICBBbHNvLCBub3RlIHRoYXQgd2hlbiBtZW1vcnkua21lbS5saW1pdF9pbl9ieXRlcyBpcyBzZXQgdGhlIGNoYXJnZXMgZHVlIHRvCisgIGtlcm5lbCBwYWdlcyB3aWxsIHN0aWxsIGJlIHNlZW4uIFRoaXMgaXMgbm90IGNvbnNpZGVyZWQgYSBmYWlsdXJlIGFuZCB0aGUKKyAgd3JpdGUgd2lsbCBzdGlsbCByZXR1cm4gc3VjY2Vzcy4gSW4gdGhpcyBjYXNlLCBpdCBpcyBleHBlY3RlZCB0aGF0CisgIG1lbW9yeS5rbWVtLnVzYWdlX2luX2J5dGVzID09IG1lbW9yeS51c2FnZV9pbl9ieXRlcy4KKworICBBYm91dCB1c2VfaGllcmFyY2h5LCBzZWUgU2VjdGlvbiA2LgorCis1LjIgc3RhdCBmaWxlCisKK21lbW9yeS5zdGF0IGZpbGUgaW5jbHVkZXMgZm9sbG93aW5nIHN0YXRpc3RpY3MKKworIyBwZXItbWVtb3J5IGNncm91cCBsb2NhbCBzdGF0dXMKK2NhY2hlCQktICMgb2YgYnl0ZXMgb2YgcGFnZSBjYWNoZSBtZW1vcnkuCityc3MJCS0gIyBvZiBieXRlcyBvZiBhbm9ueW1vdXMgYW5kIHN3YXAgY2FjaGUgbWVtb3J5IChpbmNsdWRlcworCQl0cmFuc3BhcmVudCBodWdlcGFnZXMpLgorcnNzX2h1Z2UJLSAjIG9mIGJ5dGVzIG9mIGFub255bW91cyB0cmFuc3BhcmVudCBodWdlcGFnZXMuCittYXBwZWRfZmlsZQktICMgb2YgYnl0ZXMgb2YgbWFwcGVkIGZpbGUgKGluY2x1ZGVzIHRtcGZzL3NobWVtKQorcGdwZ2luCQktICMgb2YgY2hhcmdpbmcgZXZlbnRzIHRvIHRoZSBtZW1vcnkgY2dyb3VwLiBUaGUgY2hhcmdpbmcKKwkJZXZlbnQgaGFwcGVucyBlYWNoIHRpbWUgYSBwYWdlIGlzIGFjY291bnRlZCBhcyBlaXRoZXIgbWFwcGVkCisJCWFub24gcGFnZShSU1MpIG9yIGNhY2hlIHBhZ2UoUGFnZSBDYWNoZSkgdG8gdGhlIGNncm91cC4KK3BncGdvdXQJCS0gIyBvZiB1bmNoYXJnaW5nIGV2ZW50cyB0byB0aGUgbWVtb3J5IGNncm91cC4gVGhlIHVuY2hhcmdpbmcKKwkJZXZlbnQgaGFwcGVucyBlYWNoIHRpbWUgYSBwYWdlIGlzIHVuYWNjb3VudGVkIGZyb20gdGhlIGNncm91cC4KK3N3YXAJCS0gIyBvZiBieXRlcyBvZiBzd2FwIHVzYWdlCitkaXJ0eQkJLSAjIG9mIGJ5dGVzIHRoYXQgYXJlIHdhaXRpbmcgdG8gZ2V0IHdyaXR0ZW4gYmFjayB0byB0aGUgZGlzay4KK3dyaXRlYmFjawktICMgb2YgYnl0ZXMgb2YgZmlsZS9hbm9uIGNhY2hlIHRoYXQgYXJlIHF1ZXVlZCBmb3Igc3luY2luZyB0bworCQlkaXNrLgoraW5hY3RpdmVfYW5vbgktICMgb2YgYnl0ZXMgb2YgYW5vbnltb3VzIGFuZCBzd2FwIGNhY2hlIG1lbW9yeSBvbiBpbmFjdGl2ZQorCQlMUlUgbGlzdC4KK2FjdGl2ZV9hbm9uCS0gIyBvZiBieXRlcyBvZiBhbm9ueW1vdXMgYW5kIHN3YXAgY2FjaGUgbWVtb3J5IG9uIGFjdGl2ZQorCQlMUlUgbGlzdC4KK2luYWN0aXZlX2ZpbGUJLSAjIG9mIGJ5dGVzIG9mIGZpbGUtYmFja2VkIG1lbW9yeSBvbiBpbmFjdGl2ZSBMUlUgbGlzdC4KK2FjdGl2ZV9maWxlCS0gIyBvZiBieXRlcyBvZiBmaWxlLWJhY2tlZCBtZW1vcnkgb24gYWN0aXZlIExSVSBsaXN0LgordW5ldmljdGFibGUJLSAjIG9mIGJ5dGVzIG9mIG1lbW9yeSB0aGF0IGNhbm5vdCBiZSByZWNsYWltZWQgKG1sb2NrZWQgZXRjKS4KKworIyBzdGF0dXMgY29uc2lkZXJpbmcgaGllcmFyY2h5IChzZWUgbWVtb3J5LnVzZV9oaWVyYXJjaHkgc2V0dGluZ3MpCisKK2hpZXJhcmNoaWNhbF9tZW1vcnlfbGltaXQgLSAjIG9mIGJ5dGVzIG9mIG1lbW9yeSBsaW1pdCB3aXRoIHJlZ2FyZCB0byBoaWVyYXJjaHkKKwkJCXVuZGVyIHdoaWNoIHRoZSBtZW1vcnkgY2dyb3VwIGlzCitoaWVyYXJjaGljYWxfbWVtc3dfbGltaXQgLSAjIG9mIGJ5dGVzIG9mIG1lbW9yeStzd2FwIGxpbWl0IHdpdGggcmVnYXJkIHRvCisJCQloaWVyYXJjaHkgdW5kZXIgd2hpY2ggbWVtb3J5IGNncm91cCBpcy4KKwordG90YWxfPGNvdW50ZXI+CQktICMgaGllcmFyY2hpY2FsIHZlcnNpb24gb2YgPGNvdW50ZXI+LCB3aGljaCBpbgorCQkJYWRkaXRpb24gdG8gdGhlIGNncm91cCdzIG93biB2YWx1ZSBpbmNsdWRlcyB0aGUKKwkJCXN1bSBvZiBhbGwgaGllcmFyY2hpY2FsIGNoaWxkcmVuJ3MgdmFsdWVzIG9mCisJCQk8Y291bnRlcj4sIGkuZS4gdG90YWxfY2FjaGUKKworIyBUaGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgc3RhdHMgYXJlIGRlcGVuZGVudCBvbiBDT05GSUdfREVCVUdfVk0uCisKK3JlY2VudF9yb3RhdGVkX2Fub24JLSBWTSBpbnRlcm5hbCBwYXJhbWV0ZXIuIChzZWUgbW0vdm1zY2FuLmMpCityZWNlbnRfcm90YXRlZF9maWxlCS0gVk0gaW50ZXJuYWwgcGFyYW1ldGVyLiAoc2VlIG1tL3Ztc2Nhbi5jKQorcmVjZW50X3NjYW5uZWRfYW5vbgktIFZNIGludGVybmFsIHBhcmFtZXRlci4gKHNlZSBtbS92bXNjYW4uYykKK3JlY2VudF9zY2FubmVkX2ZpbGUJLSBWTSBpbnRlcm5hbCBwYXJhbWV0ZXIuIChzZWUgbW0vdm1zY2FuLmMpCisKK01lbW86CisJcmVjZW50X3JvdGF0ZWQgbWVhbnMgcmVjZW50IGZyZXF1ZW5jeSBvZiBMUlUgcm90YXRpb24uCisJcmVjZW50X3NjYW5uZWQgbWVhbnMgcmVjZW50ICMgb2Ygc2NhbnMgdG8gTFJVLgorCXNob3dpbmcgZm9yIGJldHRlciBkZWJ1ZyBwbGVhc2Ugc2VlIHRoZSBjb2RlIGZvciBtZWFuaW5ncy4KKworTm90ZToKKwlPbmx5IGFub255bW91cyBhbmQgc3dhcCBjYWNoZSBtZW1vcnkgaXMgbGlzdGVkIGFzIHBhcnQgb2YgJ3Jzcycgc3RhdC4KKwlUaGlzIHNob3VsZCBub3QgYmUgY29uZnVzZWQgd2l0aCB0aGUgdHJ1ZSAncmVzaWRlbnQgc2V0IHNpemUnIG9yIHRoZQorCWFtb3VudCBvZiBwaHlzaWNhbCBtZW1vcnkgdXNlZCBieSB0aGUgY2dyb3VwLgorCSdyc3MgKyBmaWxlX21hcHBlZCIgd2lsbCBnaXZlIHlvdSByZXNpZGVudCBzZXQgc2l6ZSBvZiBjZ3JvdXAuCisJKE5vdGU6IGZpbGUgYW5kIHNobWVtIG1heSBiZSBzaGFyZWQgYW1vbmcgb3RoZXIgY2dyb3Vwcy4gSW4gdGhhdCBjYXNlLAorCSBmaWxlX21hcHBlZCBpcyBhY2NvdW50ZWQgb25seSB3aGVuIHRoZSBtZW1vcnkgY2dyb3VwIGlzIG93bmVyIG9mIHBhZ2UKKwkgY2FjaGUuKQorCis1LjMgc3dhcHBpbmVzcworCitPdmVycmlkZXMgL3Byb2Mvc3lzL3ZtL3N3YXBwaW5lc3MgZm9yIHRoZSBwYXJ0aWN1bGFyIGdyb3VwLiBUaGUgdHVuYWJsZQoraW4gdGhlIHJvb3QgY2dyb3VwIGNvcnJlc3BvbmRzIHRvIHRoZSBnbG9iYWwgc3dhcHBpbmVzcyBzZXR0aW5nLgorCitQbGVhc2Ugbm90ZSB0aGF0IHVubGlrZSBkdXJpbmcgdGhlIGdsb2JhbCByZWNsYWltLCBsaW1pdCByZWNsYWltCitlbmZvcmNlcyB0aGF0IDAgc3dhcHBpbmVzcyByZWFsbHkgcHJldmVudHMgZnJvbSBhbnkgc3dhcHBpbmcgZXZlbiBpZgordGhlcmUgaXMgYSBzd2FwIHN0b3JhZ2UgYXZhaWxhYmxlLiBUaGlzIG1pZ2h0IGxlYWQgdG8gbWVtY2cgT09NIGtpbGxlcgoraWYgdGhlcmUgYXJlIG5vIGZpbGUgcGFnZXMgdG8gcmVjbGFpbS4KKworNS40IGZhaWxjbnQKKworQSBtZW1vcnkgY2dyb3VwIHByb3ZpZGVzIG1lbW9yeS5mYWlsY250IGFuZCBtZW1vcnkubWVtc3cuZmFpbGNudCBmaWxlcy4KK1RoaXMgZmFpbGNudCg9PSBmYWlsdXJlIGNvdW50KSBzaG93cyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYSB1c2FnZSBjb3VudGVyCitoaXQgaXRzIGxpbWl0LiBXaGVuIGEgbWVtb3J5IGNncm91cCBoaXRzIGEgbGltaXQsIGZhaWxjbnQgaW5jcmVhc2VzIGFuZAorbWVtb3J5IHVuZGVyIGl0IHdpbGwgYmUgcmVjbGFpbWVkLgorCitZb3UgY2FuIHJlc2V0IGZhaWxjbnQgYnkgd3JpdGluZyAwIHRvIGZhaWxjbnQgZmlsZS4KKyMgZWNobyAwID4gLi4uL21lbW9yeS5mYWlsY250CisKKzUuNSB1c2FnZV9pbl9ieXRlcworCitGb3IgZWZmaWNpZW5jeSwgYXMgb3RoZXIga2VybmVsIGNvbXBvbmVudHMsIG1lbW9yeSBjZ3JvdXAgdXNlcyBzb21lIG9wdGltaXphdGlvbgordG8gYXZvaWQgdW5uZWNlc3NhcnkgY2FjaGVsaW5lIGZhbHNlIHNoYXJpbmcuIHVzYWdlX2luX2J5dGVzIGlzIGFmZmVjdGVkIGJ5IHRoZQorbWV0aG9kIGFuZCBkb2Vzbid0IHNob3cgJ2V4YWN0JyB2YWx1ZSBvZiBtZW1vcnkgKGFuZCBzd2FwKSB1c2FnZSwgaXQncyBhIGZ1enoKK3ZhbHVlIGZvciBlZmZpY2llbnQgYWNjZXNzLiAoT2YgY291cnNlLCB3aGVuIG5lY2Vzc2FyeSwgaXQncyBzeW5jaHJvbml6ZWQuKQorSWYgeW91IHdhbnQgdG8ga25vdyBtb3JlIGV4YWN0IG1lbW9yeSB1c2FnZSwgeW91IHNob3VsZCB1c2UgUlNTK0NBQ0hFKCtTV0FQKQordmFsdWUgaW4gbWVtb3J5LnN0YXQoc2VlIDUuMikuCisKKzUuNiBudW1hX3N0YXQKKworVGhpcyBpcyBzaW1pbGFyIHRvIG51bWFfbWFwcyBidXQgb3BlcmF0ZXMgb24gYSBwZXItbWVtY2cgYmFzaXMuICBUaGlzIGlzCit1c2VmdWwgZm9yIHByb3ZpZGluZyB2aXNpYmlsaXR5IGludG8gdGhlIG51bWEgbG9jYWxpdHkgaW5mb3JtYXRpb24gd2l0aGluCithbiBtZW1jZyBzaW5jZSB0aGUgcGFnZXMgYXJlIGFsbG93ZWQgdG8gYmUgYWxsb2NhdGVkIGZyb20gYW55IHBoeXNpY2FsCitub2RlLiAgT25lIG9mIHRoZSB1c2UgY2FzZXMgaXMgZXZhbHVhdGluZyBhcHBsaWNhdGlvbiBwZXJmb3JtYW5jZSBieQorY29tYmluaW5nIHRoaXMgaW5mb3JtYXRpb24gd2l0aCB0aGUgYXBwbGljYXRpb24ncyBDUFUgYWxsb2NhdGlvbi4KKworRWFjaCBtZW1jZydzIG51bWFfc3RhdCBmaWxlIGluY2x1ZGVzICJ0b3RhbCIsICJmaWxlIiwgImFub24iIGFuZCAidW5ldmljdGFibGUiCitwZXItbm9kZSBwYWdlIGNvdW50cyBpbmNsdWRpbmcgImhpZXJhcmNoaWNhbF88Y291bnRlcj4iIHdoaWNoIHN1bXMgdXAgYWxsCitoaWVyYXJjaGljYWwgY2hpbGRyZW4ncyB2YWx1ZXMgaW4gYWRkaXRpb24gdG8gdGhlIG1lbWNnJ3Mgb3duIHZhbHVlLgorCitUaGUgb3V0cHV0IGZvcm1hdCBvZiBtZW1vcnkubnVtYV9zdGF0IGlzOgorCit0b3RhbD08dG90YWwgcGFnZXM+IE4wPTxub2RlIDAgcGFnZXM+IE4xPTxub2RlIDEgcGFnZXM+IC4uLgorZmlsZT08dG90YWwgZmlsZSBwYWdlcz4gTjA9PG5vZGUgMCBwYWdlcz4gTjE9PG5vZGUgMSBwYWdlcz4gLi4uCithbm9uPTx0b3RhbCBhbm9uIHBhZ2VzPiBOMD08bm9kZSAwIHBhZ2VzPiBOMT08bm9kZSAxIHBhZ2VzPiAuLi4KK3VuZXZpY3RhYmxlPTx0b3RhbCBhbm9uIHBhZ2VzPiBOMD08bm9kZSAwIHBhZ2VzPiBOMT08bm9kZSAxIHBhZ2VzPiAuLi4KK2hpZXJhcmNoaWNhbF88Y291bnRlcj49PGNvdW50ZXIgcGFnZXM+IE4wPTxub2RlIDAgcGFnZXM+IE4xPTxub2RlIDEgcGFnZXM+IC4uLgorCitUaGUgInRvdGFsIiBjb3VudCBpcyBzdW0gb2YgZmlsZSArIGFub24gKyB1bmV2aWN0YWJsZS4KKworNi4gSGllcmFyY2h5IHN1cHBvcnQKKworVGhlIG1lbW9yeSBjb250cm9sbGVyIHN1cHBvcnRzIGEgZGVlcCBoaWVyYXJjaHkgYW5kIGhpZXJhcmNoaWNhbCBhY2NvdW50aW5nLgorVGhlIGhpZXJhcmNoeSBpcyBjcmVhdGVkIGJ5IGNyZWF0aW5nIHRoZSBhcHByb3ByaWF0ZSBjZ3JvdXBzIGluIHRoZQorY2dyb3VwIGZpbGVzeXN0ZW0uIENvbnNpZGVyIGZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNncm91cCBmaWxlc3lzdGVtCitoaWVyYXJjaHkKKworCSAgICAgICByb290CisJICAgICAvICB8ICAgXAorICAgICAgICAgICAgLwl8ICAgIFwKKwkgICBhCWIgICAgIGMKKwkJICAgICAgfCBcCisJCSAgICAgIHwgIFwKKwkJICAgICAgZCAgIGUKKworSW4gdGhlIGRpYWdyYW0gYWJvdmUsIHdpdGggaGllcmFyY2hpY2FsIGFjY291bnRpbmcgZW5hYmxlZCwgYWxsIG1lbW9yeQordXNhZ2Ugb2YgZSwgaXMgYWNjb3VudGVkIHRvIGl0cyBhbmNlc3RvcnMgdXAgdW50aWwgdGhlIHJvb3QgKGkuZSwgYyBhbmQgcm9vdCksCit0aGF0IGhhcyBtZW1vcnkudXNlX2hpZXJhcmNoeSBlbmFibGVkLiBJZiBvbmUgb2YgdGhlIGFuY2VzdG9ycyBnb2VzIG92ZXIgaXRzCitsaW1pdCwgdGhlIHJlY2xhaW0gYWxnb3JpdGhtIHJlY2xhaW1zIGZyb20gdGhlIHRhc2tzIGluIHRoZSBhbmNlc3RvciBhbmQgdGhlCitjaGlsZHJlbiBvZiB0aGUgYW5jZXN0b3IuCisKKzYuMSBFbmFibGluZyBoaWVyYXJjaGljYWwgYWNjb3VudGluZyBhbmQgcmVjbGFpbQorCitBIG1lbW9yeSBjZ3JvdXAgYnkgZGVmYXVsdCBkaXNhYmxlcyB0aGUgaGllcmFyY2h5IGZlYXR1cmUuIFN1cHBvcnQKK2NhbiBiZSBlbmFibGVkIGJ5IHdyaXRpbmcgMSB0byBtZW1vcnkudXNlX2hpZXJhcmNoeSBmaWxlIG9mIHRoZSByb290IGNncm91cAorCisjIGVjaG8gMSA+IG1lbW9yeS51c2VfaGllcmFyY2h5CisKK1RoZSBmZWF0dXJlIGNhbiBiZSBkaXNhYmxlZCBieQorCisjIGVjaG8gMCA+IG1lbW9yeS51c2VfaGllcmFyY2h5CisKK05PVEUxOiBFbmFibGluZy9kaXNhYmxpbmcgd2lsbCBmYWlsIGlmIGVpdGhlciB0aGUgY2dyb3VwIGFscmVhZHkgaGFzIG90aGVyCisgICAgICAgY2dyb3VwcyBjcmVhdGVkIGJlbG93IGl0LCBvciBpZiB0aGUgcGFyZW50IGNncm91cCBoYXMgdXNlX2hpZXJhcmNoeQorICAgICAgIGVuYWJsZWQuCisKK05PVEUyOiBXaGVuIHBhbmljX29uX29vbSBpcyBzZXQgdG8gIjIiLCB0aGUgd2hvbGUgc3lzdGVtIHdpbGwgcGFuaWMgaW4KKyAgICAgICBjYXNlIG9mIGFuIE9PTSBldmVudCBpbiBhbnkgY2dyb3VwLgorCis3LiBTb2Z0IGxpbWl0cworCitTb2Z0IGxpbWl0cyBhbGxvdyBmb3IgZ3JlYXRlciBzaGFyaW5nIG9mIG1lbW9yeS4gVGhlIGlkZWEgYmVoaW5kIHNvZnQgbGltaXRzCitpcyB0byBhbGxvdyBjb250cm9sIGdyb3VwcyB0byB1c2UgYXMgbXVjaCBvZiB0aGUgbWVtb3J5IGFzIG5lZWRlZCwgcHJvdmlkZWQKKworYS4gVGhlcmUgaXMgbm8gbWVtb3J5IGNvbnRlbnRpb24KK2IuIFRoZXkgZG8gbm90IGV4Y2VlZCB0aGVpciBoYXJkIGxpbWl0CisKK1doZW4gdGhlIHN5c3RlbSBkZXRlY3RzIG1lbW9yeSBjb250ZW50aW9uIG9yIGxvdyBtZW1vcnksIGNvbnRyb2wgZ3JvdXBzCithcmUgcHVzaGVkIGJhY2sgdG8gdGhlaXIgc29mdCBsaW1pdHMuIElmIHRoZSBzb2Z0IGxpbWl0IG9mIGVhY2ggY29udHJvbAorZ3JvdXAgaXMgdmVyeSBoaWdoLCB0aGV5IGFyZSBwdXNoZWQgYmFjayBhcyBtdWNoIGFzIHBvc3NpYmxlIHRvIG1ha2UKK3N1cmUgdGhhdCBvbmUgY29udHJvbCBncm91cCBkb2VzIG5vdCBzdGFydmUgdGhlIG90aGVycyBvZiBtZW1vcnkuCisKK1BsZWFzZSBub3RlIHRoYXQgc29mdCBsaW1pdHMgaXMgYSBiZXN0LWVmZm9ydCBmZWF0dXJlOyBpdCBjb21lcyB3aXRoCitubyBndWFyYW50ZWVzLCBidXQgaXQgZG9lcyBpdHMgYmVzdCB0byBtYWtlIHN1cmUgdGhhdCB3aGVuIG1lbW9yeSBpcworaGVhdmlseSBjb250ZW5kZWQgZm9yLCBtZW1vcnkgaXMgYWxsb2NhdGVkIGJhc2VkIG9uIHRoZSBzb2Z0IGxpbWl0CitoaW50cy9zZXR1cC4gQ3VycmVudGx5IHNvZnQgbGltaXQgYmFzZWQgcmVjbGFpbSBpcyBzZXQgdXAgc3VjaCB0aGF0CitpdCBnZXRzIGludm9rZWQgZnJvbSBiYWxhbmNlX3BnZGF0IChrc3dhcGQpLgorCis3LjEgSW50ZXJmYWNlCisKK1NvZnQgbGltaXRzIGNhbiBiZSBzZXR1cCBieSB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIChpbiB0aGlzIGV4YW1wbGUgd2UKK2Fzc3VtZSBhIHNvZnQgbGltaXQgb2YgMjU2IE1pQikKKworIyBlY2hvIDI1Nk0gPiBtZW1vcnkuc29mdF9saW1pdF9pbl9ieXRlcworCitJZiB3ZSB3YW50IHRvIGNoYW5nZSB0aGlzIHRvIDFHLCB3ZSBjYW4gYXQgYW55IHRpbWUgdXNlCisKKyMgZWNobyAxRyA+IG1lbW9yeS5zb2Z0X2xpbWl0X2luX2J5dGVzCisKK05PVEUxOiBTb2Z0IGxpbWl0cyB0YWtlIGVmZmVjdCBvdmVyIGEgbG9uZyBwZXJpb2Qgb2YgdGltZSwgc2luY2UgdGhleSBpbnZvbHZlCisgICAgICAgcmVjbGFpbWluZyBtZW1vcnkgZm9yIGJhbGFuY2luZyBiZXR3ZWVuIG1lbW9yeSBjZ3JvdXBzCitOT1RFMjogSXQgaXMgcmVjb21tZW5kZWQgdG8gc2V0IHRoZSBzb2Z0IGxpbWl0IGFsd2F5cyBiZWxvdyB0aGUgaGFyZCBsaW1pdCwKKyAgICAgICBvdGhlcndpc2UgdGhlIGhhcmQgbGltaXQgd2lsbCB0YWtlIHByZWNlZGVuY2UuCisKKzguIE1vdmUgY2hhcmdlcyBhdCB0YXNrIG1pZ3JhdGlvbgorCitVc2VycyBjYW4gbW92ZSBjaGFyZ2VzIGFzc29jaWF0ZWQgd2l0aCBhIHRhc2sgYWxvbmcgd2l0aCB0YXNrIG1pZ3JhdGlvbiwgdGhhdAoraXMsIHVuY2hhcmdlIHRhc2sncyBwYWdlcyBmcm9tIHRoZSBvbGQgY2dyb3VwIGFuZCBjaGFyZ2UgdGhlbSB0byB0aGUgbmV3IGNncm91cC4KK1RoaXMgZmVhdHVyZSBpcyBub3Qgc3VwcG9ydGVkIGluICFDT05GSUdfTU1VIGVudmlyb25tZW50cyBiZWNhdXNlIG9mIGxhY2sgb2YKK3BhZ2UgdGFibGVzLgorCis4LjEgSW50ZXJmYWNlCisKK1RoaXMgZmVhdHVyZSBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LiBJdCBjYW4gYmUgZW5hYmxlZCAoYW5kIGRpc2FibGVkIGFnYWluKSBieQord3JpdGluZyB0byBtZW1vcnkubW92ZV9jaGFyZ2VfYXRfaW1taWdyYXRlIG9mIHRoZSBkZXN0aW5hdGlvbiBjZ3JvdXAuCisKK0lmIHlvdSB3YW50IHRvIGVuYWJsZSBpdDoKKworIyBlY2hvIChzb21lIHBvc2l0aXZlIHZhbHVlKSA+IG1lbW9yeS5tb3ZlX2NoYXJnZV9hdF9pbW1pZ3JhdGUKKworTm90ZTogRWFjaCBiaXRzIG9mIG1vdmVfY2hhcmdlX2F0X2ltbWlncmF0ZSBoYXMgaXRzIG93biBtZWFuaW5nIGFib3V0IHdoYXQgdHlwZQorICAgICAgb2YgY2hhcmdlcyBzaG91bGQgYmUgbW92ZWQuIFNlZSA4LjIgZm9yIGRldGFpbHMuCitOb3RlOiBDaGFyZ2VzIGFyZSBtb3ZlZCBvbmx5IHdoZW4geW91IG1vdmUgbW0tPm93bmVyLCBpbiBvdGhlciB3b3JkcywKKyAgICAgIGEgbGVhZGVyIG9mIGEgdGhyZWFkIGdyb3VwLgorTm90ZTogSWYgd2UgY2Fubm90IGZpbmQgZW5vdWdoIHNwYWNlIGZvciB0aGUgdGFzayBpbiB0aGUgZGVzdGluYXRpb24gY2dyb3VwLCB3ZQorICAgICAgdHJ5IHRvIG1ha2Ugc3BhY2UgYnkgcmVjbGFpbWluZyBtZW1vcnkuIFRhc2sgbWlncmF0aW9uIG1heSBmYWlsIGlmIHdlCisgICAgICBjYW5ub3QgbWFrZSBlbm91Z2ggc3BhY2UuCitOb3RlOiBJdCBjYW4gdGFrZSBzZXZlcmFsIHNlY29uZHMgaWYgeW91IG1vdmUgY2hhcmdlcyBtdWNoLgorCitBbmQgaWYgeW91IHdhbnQgZGlzYWJsZSBpdCBhZ2FpbjoKKworIyBlY2hvIDAgPiBtZW1vcnkubW92ZV9jaGFyZ2VfYXRfaW1taWdyYXRlCisKKzguMiBUeXBlIG9mIGNoYXJnZXMgd2hpY2ggY2FuIGJlIG1vdmVkCisKK0VhY2ggYml0IGluIG1vdmVfY2hhcmdlX2F0X2ltbWlncmF0ZSBoYXMgaXRzIG93biBtZWFuaW5nIGFib3V0IHdoYXQgdHlwZSBvZgorY2hhcmdlcyBzaG91bGQgYmUgbW92ZWQuIEJ1dCBpbiBhbnkgY2FzZSwgaXQgbXVzdCBiZSBub3RlZCB0aGF0IGFuIGFjY291bnQgb2YKK2EgcGFnZSBvciBhIHN3YXAgY2FuIGJlIG1vdmVkIG9ubHkgd2hlbiBpdCBpcyBjaGFyZ2VkIHRvIHRoZSB0YXNrJ3MgY3VycmVudAorKG9sZCkgbWVtb3J5IGNncm91cC4KKworICBiaXQgfCB3aGF0IHR5cGUgb2YgY2hhcmdlcyB3b3VsZCBiZSBtb3ZlZCA/CisgLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAwICB8IEEgY2hhcmdlIG9mIGFuIGFub255bW91cyBwYWdlIChvciBzd2FwIG9mIGl0KSB1c2VkIGJ5IHRoZSB0YXJnZXQgdGFzay4KKyAgICAgIHwgWW91IG11c3QgZW5hYmxlIFN3YXAgRXh0ZW5zaW9uIChzZWUgMi40KSB0byBlbmFibGUgbW92ZSBvZiBzd2FwIGNoYXJnZXMuCisgLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAxICB8IEEgY2hhcmdlIG9mIGZpbGUgcGFnZXMgKG5vcm1hbCBmaWxlLCB0bXBmcyBmaWxlIChlLmcuIGlwYyBzaGFyZWQgbWVtb3J5KQorICAgICAgfCBhbmQgc3dhcHMgb2YgdG1wZnMgZmlsZSkgbW1hcHBlZCBieSB0aGUgdGFyZ2V0IHRhc2suIFVubGlrZSB0aGUgY2FzZSBvZgorICAgICAgfCBhbm9ueW1vdXMgcGFnZXMsIGZpbGUgcGFnZXMgKGFuZCBzd2FwcykgaW4gdGhlIHJhbmdlIG1tYXBwZWQgYnkgdGhlIHRhc2sKKyAgICAgIHwgd2lsbCBiZSBtb3ZlZCBldmVuIGlmIHRoZSB0YXNrIGhhc24ndCBkb25lIHBhZ2UgZmF1bHQsIGkuZS4gdGhleSBtaWdodAorICAgICAgfCBub3QgYmUgdGhlIHRhc2sncyAiUlNTIiwgYnV0IG90aGVyIHRhc2sncyAiUlNTIiB0aGF0IG1hcHMgdGhlIHNhbWUgZmlsZS4KKyAgICAgIHwgQW5kIG1hcGNvdW50IG9mIHRoZSBwYWdlIGlzIGlnbm9yZWQgKHRoZSBwYWdlIGNhbiBiZSBtb3ZlZCBldmVuIGlmCisgICAgICB8IHBhZ2VfbWFwY291bnQocGFnZSkgPiAxKS4gWW91IG11c3QgZW5hYmxlIFN3YXAgRXh0ZW5zaW9uIChzZWUgMi40KSB0bworICAgICAgfCBlbmFibGUgbW92ZSBvZiBzd2FwIGNoYXJnZXMuCisKKzguMyBUT0RPCisKKy0gQWxsIG9mIG1vdmluZyBjaGFyZ2Ugb3BlcmF0aW9ucyBhcmUgZG9uZSB1bmRlciBjZ3JvdXBfbXV0ZXguIEl0J3Mgbm90IGdvb2QKKyAgYmVoYXZpb3IgdG8gaG9sZCB0aGUgbXV0ZXggdG9vIGxvbmcsIHNvIHdlIG1heSBuZWVkIHNvbWUgdHJpY2suCisKKzkuIE1lbW9yeSB0aHJlc2hvbGRzCisKK01lbW9yeSBjZ3JvdXAgaW1wbGVtZW50cyBtZW1vcnkgdGhyZXNob2xkcyB1c2luZyB0aGUgY2dyb3VwcyBub3RpZmljYXRpb24KK0FQSSAoc2VlIGNncm91cHMudHh0KS4gSXQgYWxsb3dzIHRvIHJlZ2lzdGVyIG11bHRpcGxlIG1lbW9yeSBhbmQgbWVtc3cKK3RocmVzaG9sZHMgYW5kIGdldHMgbm90aWZpY2F0aW9ucyB3aGVuIGl0IGNyb3NzZXMuCisKK1RvIHJlZ2lzdGVyIGEgdGhyZXNob2xkLCBhbiBhcHBsaWNhdGlvbiBtdXN0OgorLSBjcmVhdGUgYW4gZXZlbnRmZCB1c2luZyBldmVudGZkKDIpOworLSBvcGVuIG1lbW9yeS51c2FnZV9pbl9ieXRlcyBvciBtZW1vcnkubWVtc3cudXNhZ2VfaW5fYnl0ZXM7CistIHdyaXRlIHN0cmluZyBsaWtlICI8ZXZlbnRfZmQ+IDxmZCBvZiBtZW1vcnkudXNhZ2VfaW5fYnl0ZXM+IDx0aHJlc2hvbGQ+IiB0bworICBjZ3JvdXAuZXZlbnRfY29udHJvbC4KKworQXBwbGljYXRpb24gd2lsbCBiZSBub3RpZmllZCB0aHJvdWdoIGV2ZW50ZmQgd2hlbiBtZW1vcnkgdXNhZ2UgY3Jvc3NlcwordGhyZXNob2xkIGluIGFueSBkaXJlY3Rpb24uCisKK0l0J3MgYXBwbGljYWJsZSBmb3Igcm9vdCBhbmQgbm9uLXJvb3QgY2dyb3VwLgorCisxMC4gT09NIENvbnRyb2wKKworbWVtb3J5Lm9vbV9jb250cm9sIGZpbGUgaXMgZm9yIE9PTSBub3RpZmljYXRpb24gYW5kIG90aGVyIGNvbnRyb2xzLgorCitNZW1vcnkgY2dyb3VwIGltcGxlbWVudHMgT09NIG5vdGlmaWVyIHVzaW5nIHRoZSBjZ3JvdXAgbm90aWZpY2F0aW9uCitBUEkgKFNlZSBjZ3JvdXBzLnR4dCkuIEl0IGFsbG93cyB0byByZWdpc3RlciBtdWx0aXBsZSBPT00gbm90aWZpY2F0aW9uCitkZWxpdmVyeSBhbmQgZ2V0cyBub3RpZmljYXRpb24gd2hlbiBPT00gaGFwcGVucy4KKworVG8gcmVnaXN0ZXIgYSBub3RpZmllciwgYW4gYXBwbGljYXRpb24gbXVzdDoKKyAtIGNyZWF0ZSBhbiBldmVudGZkIHVzaW5nIGV2ZW50ZmQoMikKKyAtIG9wZW4gbWVtb3J5Lm9vbV9jb250cm9sIGZpbGUKKyAtIHdyaXRlIHN0cmluZyBsaWtlICI8ZXZlbnRfZmQ+IDxmZCBvZiBtZW1vcnkub29tX2NvbnRyb2w+IiB0bworICAgY2dyb3VwLmV2ZW50X2NvbnRyb2wKKworVGhlIGFwcGxpY2F0aW9uIHdpbGwgYmUgbm90aWZpZWQgdGhyb3VnaCBldmVudGZkIHdoZW4gT09NIGhhcHBlbnMuCitPT00gbm90aWZpY2F0aW9uIGRvZXNuJ3Qgd29yayBmb3IgdGhlIHJvb3QgY2dyb3VwLgorCitZb3UgY2FuIGRpc2FibGUgdGhlIE9PTS1raWxsZXIgYnkgd3JpdGluZyAiMSIgdG8gbWVtb3J5Lm9vbV9jb250cm9sIGZpbGUsIGFzOgorCisJI2VjaG8gMSA+IG1lbW9yeS5vb21fY29udHJvbAorCitJZiBPT00ta2lsbGVyIGlzIGRpc2FibGVkLCB0YXNrcyB1bmRlciBjZ3JvdXAgd2lsbCBoYW5nL3NsZWVwCitpbiBtZW1vcnkgY2dyb3VwJ3MgT09NLXdhaXRxdWV1ZSB3aGVuIHRoZXkgcmVxdWVzdCBhY2NvdW50YWJsZSBtZW1vcnkuCisKK0ZvciBydW5uaW5nIHRoZW0sIHlvdSBoYXZlIHRvIHJlbGF4IHRoZSBtZW1vcnkgY2dyb3VwJ3MgT09NIHN0YXR1cyBieQorCSogZW5sYXJnZSBsaW1pdCBvciByZWR1Y2UgdXNhZ2UuCitUbyByZWR1Y2UgdXNhZ2UsCisJKiBraWxsIHNvbWUgdGFza3MuCisJKiBtb3ZlIHNvbWUgdGFza3MgdG8gb3RoZXIgZ3JvdXAgd2l0aCBhY2NvdW50IG1pZ3JhdGlvbi4KKwkqIHJlbW92ZSBzb21lIGZpbGVzIChvbiB0bXBmcz8pCisKK1RoZW4sIHN0b3BwZWQgdGFza3Mgd2lsbCB3b3JrIGFnYWluLgorCitBdCByZWFkaW5nLCBjdXJyZW50IHN0YXR1cyBvZiBPT00gaXMgc2hvd24uCisJb29tX2tpbGxfZGlzYWJsZSAwIG9yIDEgKGlmIDEsIG9vbS1raWxsZXIgaXMgZGlzYWJsZWQpCisJdW5kZXJfb29tCSAwIG9yIDEgKGlmIDEsIHRoZSBtZW1vcnkgY2dyb3VwIGlzIHVuZGVyIE9PTSwgdGFza3MgbWF5CisJCQkJIGJlIHN0b3BwZWQuKQorCisxMS4gTWVtb3J5IFByZXNzdXJlCisKK1RoZSBwcmVzc3VyZSBsZXZlbCBub3RpZmljYXRpb25zIGNhbiBiZSB1c2VkIHRvIG1vbml0b3IgdGhlIG1lbW9yeQorYWxsb2NhdGlvbiBjb3N0OyBiYXNlZCBvbiB0aGUgcHJlc3N1cmUsIGFwcGxpY2F0aW9ucyBjYW4gaW1wbGVtZW50CitkaWZmZXJlbnQgc3RyYXRlZ2llcyBvZiBtYW5hZ2luZyB0aGVpciBtZW1vcnkgcmVzb3VyY2VzLiBUaGUgcHJlc3N1cmUKK2xldmVscyBhcmUgZGVmaW5lZCBhcyBmb2xsb3dpbmc6CisKK1RoZSAibG93IiBsZXZlbCBtZWFucyB0aGF0IHRoZSBzeXN0ZW0gaXMgcmVjbGFpbWluZyBtZW1vcnkgZm9yIG5ldworYWxsb2NhdGlvbnMuIE1vbml0b3JpbmcgdGhpcyByZWNsYWltaW5nIGFjdGl2aXR5IG1pZ2h0IGJlIHVzZWZ1bCBmb3IKK21haW50YWluaW5nIGNhY2hlIGxldmVsLiBVcG9uIG5vdGlmaWNhdGlvbiwgdGhlIHByb2dyYW0gKHR5cGljYWxseQorIkFjdGl2aXR5IE1hbmFnZXIiKSBtaWdodCBhbmFseXplIHZtc3RhdCBhbmQgYWN0IGluIGFkdmFuY2UgKGkuZS4KK3ByZW1hdHVyZWx5IHNodXRkb3duIHVuaW1wb3J0YW50IHNlcnZpY2VzKS4KKworVGhlICJtZWRpdW0iIGxldmVsIG1lYW5zIHRoYXQgdGhlIHN5c3RlbSBpcyBleHBlcmllbmNpbmcgbWVkaXVtIG1lbW9yeQorcHJlc3N1cmUsIHRoZSBzeXN0ZW0gbWlnaHQgYmUgbWFraW5nIHN3YXAsIHBhZ2luZyBvdXQgYWN0aXZlIGZpbGUgY2FjaGVzLAorZXRjLiBVcG9uIHRoaXMgZXZlbnQgYXBwbGljYXRpb25zIG1heSBkZWNpZGUgdG8gZnVydGhlciBhbmFseXplCit2bXN0YXQvem9uZWluZm8vbWVtY2cgb3IgaW50ZXJuYWwgbWVtb3J5IHVzYWdlIHN0YXRpc3RpY3MgYW5kIGZyZWUgYW55CityZXNvdXJjZXMgdGhhdCBjYW4gYmUgZWFzaWx5IHJlY29uc3RydWN0ZWQgb3IgcmUtcmVhZCBmcm9tIGEgZGlzay4KKworVGhlICJjcml0aWNhbCIgbGV2ZWwgbWVhbnMgdGhhdCB0aGUgc3lzdGVtIGlzIGFjdGl2ZWx5IHRocmFzaGluZywgaXQgaXMKK2Fib3V0IHRvIG91dCBvZiBtZW1vcnkgKE9PTSkgb3IgZXZlbiB0aGUgaW4ta2VybmVsIE9PTSBraWxsZXIgaXMgb24gaXRzCit3YXkgdG8gdHJpZ2dlci4gQXBwbGljYXRpb25zIHNob3VsZCBkbyB3aGF0ZXZlciB0aGV5IGNhbiB0byBoZWxwIHRoZQorc3lzdGVtLiBJdCBtaWdodCBiZSB0b28gbGF0ZSB0byBjb25zdWx0IHdpdGggdm1zdGF0IG9yIGFueSBvdGhlcgorc3RhdGlzdGljcywgc28gaXQncyBhZHZpc2FibGUgdG8gdGFrZSBhbiBpbW1lZGlhdGUgYWN0aW9uLgorCitUaGUgZXZlbnRzIGFyZSBwcm9wYWdhdGVkIHVwd2FyZCB1bnRpbCB0aGUgZXZlbnQgaXMgaGFuZGxlZCwgaS5lLiB0aGUKK2V2ZW50cyBhcmUgbm90IHBhc3MtdGhyb3VnaC4gSGVyZSBpcyB3aGF0IHRoaXMgbWVhbnM6IGZvciBleGFtcGxlIHlvdSBoYXZlCit0aHJlZSBjZ3JvdXBzOiBBLT5CLT5DLiBOb3cgeW91IHNldCB1cCBhbiBldmVudCBsaXN0ZW5lciBvbiBjZ3JvdXBzIEEsIEIKK2FuZCBDLCBhbmQgc3VwcG9zZSBncm91cCBDIGV4cGVyaWVuY2VzIHNvbWUgcHJlc3N1cmUuIEluIHRoaXMgc2l0dWF0aW9uLAorb25seSBncm91cCBDIHdpbGwgcmVjZWl2ZSB0aGUgbm90aWZpY2F0aW9uLCBpLmUuIGdyb3VwcyBBIGFuZCBCIHdpbGwgbm90CityZWNlaXZlIGl0LiBUaGlzIGlzIGRvbmUgdG8gYXZvaWQgZXhjZXNzaXZlICJicm9hZGNhc3RpbmciIG9mIG1lc3NhZ2VzLAord2hpY2ggZGlzdHVyYnMgdGhlIHN5c3RlbSBhbmQgd2hpY2ggaXMgZXNwZWNpYWxseSBiYWQgaWYgd2UgYXJlIGxvdyBvbgorbWVtb3J5IG9yIHRocmFzaGluZy4gU28sIG9yZ2FuaXplIHRoZSBjZ3JvdXBzIHdpc2VseSwgb3IgcHJvcGFnYXRlIHRoZQorZXZlbnRzIG1hbnVhbGx5IChvciwgYXNrIHVzIHRvIGltcGxlbWVudCB0aGUgcGFzcy10aHJvdWdoIGV2ZW50cywKK2V4cGxhaW5pbmcgd2h5IHdvdWxkIHlvdSBuZWVkIHRoZW0uKQorCitUaGUgZmlsZSBtZW1vcnkucHJlc3N1cmVfbGV2ZWwgaXMgb25seSB1c2VkIHRvIHNldHVwIGFuIGV2ZW50ZmQuIFRvCityZWdpc3RlciBhIG5vdGlmaWNhdGlvbiwgYW4gYXBwbGljYXRpb24gbXVzdDoKKworLSBjcmVhdGUgYW4gZXZlbnRmZCB1c2luZyBldmVudGZkKDIpOworLSBvcGVuIG1lbW9yeS5wcmVzc3VyZV9sZXZlbDsKKy0gd3JpdGUgc3RyaW5nIGxpa2UgIjxldmVudF9mZD4gPGZkIG9mIG1lbW9yeS5wcmVzc3VyZV9sZXZlbD4gPGxldmVsPiIKKyAgdG8gY2dyb3VwLmV2ZW50X2NvbnRyb2wuCisKK0FwcGxpY2F0aW9uIHdpbGwgYmUgbm90aWZpZWQgdGhyb3VnaCBldmVudGZkIHdoZW4gbWVtb3J5IHByZXNzdXJlIGlzIGF0Cit0aGUgc3BlY2lmaWMgbGV2ZWwgKG9yIGhpZ2hlcikuIFJlYWQvd3JpdGUgb3BlcmF0aW9ucyB0bworbWVtb3J5LnByZXNzdXJlX2xldmVsIGFyZSBubyBpbXBsZW1lbnRlZC4KKworVGVzdDoKKworICAgSGVyZSBpcyBhIHNtYWxsIHNjcmlwdCBleGFtcGxlIHRoYXQgbWFrZXMgYSBuZXcgY2dyb3VwLCBzZXRzIHVwIGEKKyAgIG1lbW9yeSBsaW1pdCwgc2V0cyB1cCBhIG5vdGlmaWNhdGlvbiBpbiB0aGUgY2dyb3VwIGFuZCB0aGVuIG1ha2VzIGNoaWxkCisgICBjZ3JvdXAgZXhwZXJpZW5jZSBhIGNyaXRpY2FsIHByZXNzdXJlOgorCisgICAjIGNkIC9zeXMvZnMvY2dyb3VwL21lbW9yeS8KKyAgICMgbWtkaXIgZm9vCisgICAjIGNkIGZvbworICAgIyBjZ3JvdXBfZXZlbnRfbGlzdGVuZXIgbWVtb3J5LnByZXNzdXJlX2xldmVsIGxvdyAmCisgICAjIGVjaG8gODAwMDAwMCA+IG1lbW9yeS5saW1pdF9pbl9ieXRlcworICAgIyBlY2hvIDgwMDAwMDAgPiBtZW1vcnkubWVtc3cubGltaXRfaW5fYnl0ZXMKKyAgICMgZWNobyAkJCA+IHRhc2tzCisgICAjIGRkIGlmPS9kZXYvemVybyB8IHJlYWQgeAorCisgICAoRXhwZWN0IGEgYnVuY2ggb2Ygbm90aWZpY2F0aW9ucywgYW5kIGV2ZW50dWFsbHksIHRoZSBvb20ta2lsbGVyIHdpbGwKKyAgIHRyaWdnZXIuKQorCisxMi4gVE9ETworCisxLiBNYWtlIHBlci1jZ3JvdXAgc2Nhbm5lciByZWNsYWltIG5vdC1zaGFyZWQgcGFnZXMgZmlyc3QKKzIuIFRlYWNoIGNvbnRyb2xsZXIgdG8gYWNjb3VudCBmb3Igc2hhcmVkLXBhZ2VzCiszLiBTdGFydCByZWNsYW1hdGlvbiBpbiB0aGUgYmFja2dyb3VuZCB3aGVuIHRoZSBsaW1pdCBpcworICAgbm90IHlldCBoaXQgYnV0IHRoZSB1c2FnZSBpcyBnZXR0aW5nIGNsb3NlcgorCitTdW1tYXJ5CisKK092ZXJhbGwsIHRoZSBtZW1vcnkgY29udHJvbGxlciBoYXMgYmVlbiBhIHN0YWJsZSBjb250cm9sbGVyIGFuZCBoYXMgYmVlbgorY29tbWVudGVkIGFuZCBkaXNjdXNzZWQgcXVpdGUgZXh0ZW5zaXZlbHkgaW4gdGhlIGNvbW11bml0eS4KKworUmVmZXJlbmNlcworCisxLiBTaW5naCwgQmFsYmlyLiBSRkM6IE1lbW9yeSBDb250cm9sbGVyLCBodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8yMDY2OTcvCisyLiBTaW5naCwgQmFsYmlyLiBNZW1vcnkgQ29udHJvbGxlciAoUlNTIENvbnRyb2wpLAorICAgaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvMjIyNzYyLworMy4gRW1lbGlhbm92LCBQYXZlbC4gUmVzb3VyY2UgY29udHJvbGxlcnMgYmFzZWQgb24gcHJvY2VzcyBjZ3JvdXBzCisgICBodHRwOi8vbGttbC5vcmcvbGttbC8yMDA3LzMvNi8xOTgKKzQuIEVtZWxpYW5vdiwgUGF2ZWwuIFJTUyBjb250cm9sbGVyIGJhc2VkIG9uIHByb2Nlc3MgY2dyb3VwcyAodjIpCisgICBodHRwOi8vbGttbC5vcmcvbGttbC8yMDA3LzQvOS83OAorNS4gRW1lbGlhbm92LCBQYXZlbC4gUlNTIGNvbnRyb2xsZXIgYmFzZWQgb24gcHJvY2VzcyBjZ3JvdXBzICh2MykKKyAgIGh0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDcvNS8zMC8yNDQKKzYuIE1lbmFnZSwgUGF1bC4gQ29udHJvbCBHcm91cHMgdjEwLCBodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8yMzYwMzIvCis3LiBWYWlkeWFuYXRoYW4sIFNyaW5pdmFzYW4sIENvbnRyb2wgR3JvdXBzOiBQYWdlY2FjaGUgYWNjb3VudGluZyBhbmQgY29udHJvbAorICAgc3Vic3lzdGVtICh2MyksIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzIzNTUzNC8KKzguIFNpbmdoLCBCYWxiaXIuIFJTUyBjb250cm9sbGVyIHYyIHRlc3QgcmVzdWx0cyAobG1iZW5jaCksCisgICBodHRwOi8vbGttbC5vcmcvbGttbC8yMDA3LzUvMTcvMjMyCis5LiBTaW5naCwgQmFsYmlyLiBSU1MgY29udHJvbGxlciB2MiBBSU05IHJlc3VsdHMKKyAgIGh0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDcvNS8xOC8xCisxMC4gU2luZ2gsIEJhbGJpci4gTWVtb3J5IGNvbnRyb2xsZXIgdjYgdGVzdCByZXN1bHRzLAorICAgIGh0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDcvOC8xOS8zNgorMTEuIFNpbmdoLCBCYWxiaXIuIE1lbW9yeSBjb250cm9sbGVyIGludHJvZHVjdGlvbiAodjYpLAorICAgIGh0dHA6Ly9sa21sLm9yZy9sa21sLzIwMDcvOC8xNy82OQorMTIuIENvcmJldCwgSm9uYXRoYW4sIENvbnRyb2xsaW5nIG1lbW9yeSB1c2UgaW4gY2dyb3VwcywKKyAgICBodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8yNDM3OTUvCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Nncm91cHMvbmV0X2Nscy50eHQgYi9Eb2N1bWVudGF0aW9uL2Nncm91cHMvbmV0X2Nscy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMxODIzNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vY2dyb3Vwcy9uZXRfY2xzLnR4dApAQCAtMCwwICsxLDM5IEBACitOZXR3b3JrIGNsYXNzaWZpZXIgY2dyb3VwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBOZXR3b3JrIGNsYXNzaWZpZXIgY2dyb3VwIHByb3ZpZGVzIGFuIGludGVyZmFjZSB0bwordGFnIG5ldHdvcmsgcGFja2V0cyB3aXRoIGEgY2xhc3MgaWRlbnRpZmllciAoY2xhc3NpZCkuCisKK1RoZSBUcmFmZmljIENvbnRyb2xsZXIgKHRjKSBjYW4gYmUgdXNlZCB0byBhc3NpZ24KK2RpZmZlcmVudCBwcmlvcml0aWVzIHRvIHBhY2tldHMgZnJvbSBkaWZmZXJlbnQgY2dyb3Vwcy4KK0Fsc28sIE5ldGZpbHRlciAoaXB0YWJsZXMpIGNhbiB1c2UgdGhpcyB0YWcgdG8gcGVyZm9ybQorYWN0aW9ucyBvbiBzdWNoIHBhY2tldHMuCisKK0NyZWF0aW5nIGEgbmV0X2NscyBjZ3JvdXBzIGluc3RhbmNlIGNyZWF0ZXMgYSBuZXRfY2xzLmNsYXNzaWQgZmlsZS4KK1RoaXMgbmV0X2Nscy5jbGFzc2lkIHZhbHVlIGlzIGluaXRpYWxpemVkIHRvIDAuCisKK1lvdSBjYW4gd3JpdGUgaGV4YWRlY2ltYWwgdmFsdWVzIHRvIG5ldF9jbHMuY2xhc3NpZDsgdGhlIGZvcm1hdCBmb3IgdGhlc2UKK3ZhbHVlcyBpcyAweEFBQUFCQkJCOyBBQUFBIGlzIHRoZSBtYWpvciBoYW5kbGUgbnVtYmVyIGFuZCBCQkJCCitpcyB0aGUgbWlub3IgaGFuZGxlIG51bWJlci4KK1JlYWRpbmcgbmV0X2Nscy5jbGFzc2lkIHlpZWxkcyBhIGRlY2ltYWwgcmVzdWx0LgorCitFeGFtcGxlOgorbWtkaXIgL3N5cy9mcy9jZ3JvdXAvbmV0X2NscworbW91bnQgLXQgY2dyb3VwIC1vbmV0X2NscyBuZXRfY2xzIC9zeXMvZnMvY2dyb3VwL25ldF9jbHMKK21rZGlyIC9zeXMvZnMvY2dyb3VwL25ldF9jbHMvMAorZWNobyAweDEwMDAwMSA+ICAvc3lzL2ZzL2Nncm91cC9uZXRfY2xzLzAvbmV0X2Nscy5jbGFzc2lkCisJLSBzZXR0aW5nIGEgMTA6MSBoYW5kbGUuCisKK2NhdCAvc3lzL2ZzL2Nncm91cC9uZXRfY2xzLzAvbmV0X2Nscy5jbGFzc2lkCisxMDQ4NTc3CisKK2NvbmZpZ3VyaW5nIHRjOgordGMgcWRpc2MgYWRkIGRldiBldGgwIHJvb3QgaGFuZGxlIDEwOiBodGIKKwordGMgY2xhc3MgYWRkIGRldiBldGgwIHBhcmVudCAxMDogY2xhc3NpZCAxMDoxIGh0YiByYXRlIDQwbWJpdAorIC0gY3JlYXRpbmcgdHJhZmZpYyBjbGFzcyAxMDoxCisKK3RjIGZpbHRlciBhZGQgZGV2IGV0aDAgcGFyZW50IDEwOiBwcm90b2NvbCBpcCBwcmlvIDEwIGhhbmRsZSAxOiBjZ3JvdXAKKworY29uZmlndXJpbmcgaXB0YWJsZXMsIGJhc2ljIGV4YW1wbGU6CitpcHRhYmxlcyAtQSBPVVRQVVQgLW0gY2dyb3VwICEgLS1jZ3JvdXAgMHgxMDAwMDEgLWogRFJPUApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9jZ3JvdXBzL25ldF9wcmlvLnR4dCBiL0RvY3VtZW50YXRpb24vY2dyb3Vwcy9uZXRfcHJpby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgyY2JkMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vY2dyb3Vwcy9uZXRfcHJpby50eHQKQEAgLTAsMCArMSw1NSBAQAorTmV0d29yayBwcmlvcml0eSBjZ3JvdXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIE5ldHdvcmsgcHJpb3JpdHkgY2dyb3VwIHByb3ZpZGVzIGFuIGludGVyZmFjZSB0byBhbGxvdyBhbiBhZG1pbmlzdHJhdG9yIHRvCitkeW5hbWljYWxseSBzZXQgdGhlIHByaW9yaXR5IG9mIG5ldHdvcmsgdHJhZmZpYyBnZW5lcmF0ZWQgYnkgdmFyaW91cworYXBwbGljYXRpb25zCisKK05vbWluYWxseSwgYW4gYXBwbGljYXRpb24gd291bGQgc2V0IHRoZSBwcmlvcml0eSBvZiBpdHMgdHJhZmZpYyB2aWEgdGhlCitTT19QUklPUklUWSBzb2NrZXQgb3B0aW9uLiAgVGhpcyBob3dldmVyLCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlIGJlY2F1c2U6CisKKzEpIFRoZSBhcHBsaWNhdGlvbiBtYXkgbm90IGhhdmUgYmVlbiBjb2RlZCB0byBzZXQgdGhpcyB2YWx1ZQorMikgVGhlIHByaW9yaXR5IG9mIGFwcGxpY2F0aW9uIHRyYWZmaWMgaXMgb2Z0ZW4gYSBzaXRlLXNwZWNpZmljIGFkbWluaXN0cmF0aXZlCisgICBkZWNpc2lvbiByYXRoZXIgdGhhbiBhbiBhcHBsaWNhdGlvbiBkZWZpbmVkIG9uZS4KKworVGhpcyBjZ3JvdXAgYWxsb3dzIGFuIGFkbWluaXN0cmF0b3IgdG8gYXNzaWduIGEgcHJvY2VzcyB0byBhIGdyb3VwIHdoaWNoIGRlZmluZXMKK3RoZSBwcmlvcml0eSBvZiBlZ3Jlc3MgdHJhZmZpYyBvbiBhIGdpdmVuIGludGVyZmFjZS4gTmV0d29yayBwcmlvcml0eSBncm91cHMgY2FuCitiZSBjcmVhdGVkIGJ5IGZpcnN0IG1vdW50aW5nIHRoZSBjZ3JvdXAgZmlsZXN5c3RlbS4KKworIyBtb3VudCAtdCBjZ3JvdXAgLW9uZXRfcHJpbyBub25lIC9zeXMvZnMvY2dyb3VwL25ldF9wcmlvCisKK1dpdGggdGhlIGFib3ZlIHN0ZXAsIHRoZSBpbml0aWFsIGdyb3VwIGFjdGluZyBhcyB0aGUgcGFyZW50IGFjY291bnRpbmcgZ3JvdXAKK2JlY29tZXMgdmlzaWJsZSBhdCAnL3N5cy9mcy9jZ3JvdXAvbmV0X3ByaW8nLiAgVGhpcyBncm91cCBpbmNsdWRlcyBhbGwgdGFza3MgaW4KK3RoZSBzeXN0ZW0uICcvc3lzL2ZzL2Nncm91cC9uZXRfcHJpby90YXNrcycgbGlzdHMgdGhlIHRhc2tzIGluIHRoaXMgY2dyb3VwLgorCitFYWNoIG5ldF9wcmlvIGNncm91cCBjb250YWlucyB0d28gZmlsZXMgdGhhdCBhcmUgc3Vic3lzdGVtIHNwZWNpZmljCisKK25ldF9wcmlvLnByaW9pZHgKK1RoaXMgZmlsZSBpcyByZWFkLW9ubHksIGFuZCBpcyBzaW1wbHkgaW5mb3JtYXRpdmUuICBJdCBjb250YWlucyBhIHVuaXF1ZSBpbnRlZ2VyCit2YWx1ZSB0aGF0IHRoZSBrZXJuZWwgdXNlcyBhcyBhbiBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGNncm91cC4KKworbmV0X3ByaW8uaWZwcmlvbWFwCitUaGlzIGZpbGUgY29udGFpbnMgYSBtYXAgb2YgdGhlIHByaW9yaXRpZXMgYXNzaWduZWQgdG8gdHJhZmZpYyBvcmlnaW5hdGluZyBmcm9tCitwcm9jZXNzZXMgaW4gdGhpcyBncm91cCBhbmQgZWdyZXNzaW5nIHRoZSBzeXN0ZW0gb24gdmFyaW91cyBpbnRlcmZhY2VzLiBJdAorY29udGFpbnMgYSBsaXN0IG9mIHR1cGxlcyBpbiB0aGUgZm9ybSA8aWZuYW1lIHByaW9yaXR5Pi4gIENvbnRlbnRzIG9mIHRoaXMgZmlsZQorY2FuIGJlIG1vZGlmaWVkIGJ5IGVjaG9pbmcgYSBzdHJpbmcgaW50byB0aGUgZmlsZSB1c2luZyB0aGUgc2FtZSB0dXBsZSBmb3JtYXQuCitmb3IgZXhhbXBsZToKKworZWNobyAiZXRoMCA1IiA+IC9zeXMvZnMvY2dyb3Vwcy9uZXRfcHJpby9pc2NzaS9uZXRfcHJpby5pZnByaW9tYXAKKworVGhpcyBjb21tYW5kIHdvdWxkIGZvcmNlIGFueSB0cmFmZmljIG9yaWdpbmF0aW5nIGZyb20gcHJvY2Vzc2VzIGJlbG9uZ2luZyB0byB0aGUKK2lzY3NpIG5ldF9wcmlvIGNncm91cCBhbmQgZWdyZXNzaW5nIG9uIGludGVyZmFjZSBldGgwIHRvIGhhdmUgdGhlIHByaW9yaXR5IG9mCitzYWlkIHRyYWZmaWMgc2V0IHRvIHRoZSB2YWx1ZSA1LiBUaGUgcGFyZW50IGFjY291bnRpbmcgZ3JvdXAgYWxzbyBoYXMgYQord3JpdGVhYmxlICduZXRfcHJpby5pZnByaW9tYXAnIGZpbGUgdGhhdCBjYW4gYmUgdXNlZCB0byBzZXQgYSBzeXN0ZW0gZGVmYXVsdAorcHJpb3JpdHkuCisKK1ByaW9yaXRpZXMgYXJlIHNldCBpbW1lZGlhdGVseSBwcmlvciB0byBxdWV1ZWluZyBhIGZyYW1lIHRvIHRoZSBkZXZpY2UKK3F1ZXVlaW5nIGRpc2NpcGxpbmUgKHFkaXNjKSBzbyBwcmlvcml0aWVzIHdpbGwgYmUgYXNzaWduZWQgcHJpb3IgdG8gdGhlIGhhcmR3YXJlCitxdWV1ZSBzZWxlY3Rpb24gYmVpbmcgbWFkZS4KKworT25lIHVzYWdlIGZvciB0aGUgbmV0X3ByaW8gY2dyb3VwIGlzIHdpdGggbXFwcmlvIHFkaXNjIGFsbG93aW5nIGFwcGxpY2F0aW9uCit0cmFmZmljIHRvIGJlIHN0ZWVyZWQgdG8gaGFyZHdhcmUvZHJpdmVyIGJhc2VkIHRyYWZmaWMgY2xhc3Nlcy4gVGhlc2UgbWFwcGluZ3MKK2NhbiB0aGVuIGJlIG1hbmFnZWQgYnkgYWRtaW5pc3RyYXRvcnMgb3Igb3RoZXIgbmV0d29ya2luZyBwcm90b2NvbHMgc3VjaCBhcworRENCWC4KKworQSBuZXcgbmV0X3ByaW8gY2dyb3VwIGluaGVyaXRzIHRoZSBwYXJlbnQncyBjb25maWd1cmF0aW9uLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9jZ3JvdXBzL3BpZHMudHh0IGIvRG9jdW1lbnRhdGlvbi9jZ3JvdXBzL3BpZHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMDc4YjUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Nncm91cHMvcGlkcy50eHQKQEAgLTAsMCArMSw4NSBAQAorCQkJCQkJICAgUHJvY2VzcyBOdW1iZXIgQ29udHJvbGxlcgorCQkJCQkJICAgPT09PT09PT09PT09PT09PT09PT09PT09PQorCitBYnN0cmFjdAorLS0tLS0tLS0KKworVGhlIHByb2Nlc3MgbnVtYmVyIGNvbnRyb2xsZXIgaXMgdXNlZCB0byBhbGxvdyBhIGNncm91cCBoaWVyYXJjaHkgdG8gc3RvcCBhbnkKK25ldyB0YXNrcyBmcm9tIGJlaW5nIGZvcmsoKSdkIG9yIGNsb25lKCknZCBhZnRlciBhIGNlcnRhaW4gbGltaXQgaXMgcmVhY2hlZC4KKworU2luY2UgaXQgaXMgdHJpdmlhbCB0byBoaXQgdGhlIHRhc2sgbGltaXQgd2l0aG91dCBoaXR0aW5nIGFueSBrbWVtY2cgbGltaXRzIGluCitwbGFjZSwgUElEcyBhcmUgYSBmdW5kYW1lbnRhbCByZXNvdXJjZS4gQXMgc3VjaCwgUElEIGV4aGF1c3Rpb24gbXVzdCBiZQorcHJldmVudGFibGUgaW4gdGhlIHNjb3BlIG9mIGEgY2dyb3VwIGhpZXJhcmNoeSBieSBhbGxvd2luZyByZXNvdXJjZSBsaW1pdGluZyBvZgordGhlIG51bWJlciBvZiB0YXNrcyBpbiBhIGNncm91cC4KKworVXNhZ2UKKy0tLS0tCisKK0luIG9yZGVyIHRvIHVzZSB0aGUgYHBpZHNgIGNvbnRyb2xsZXIsIHNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGFza3MgaW4KK3BpZHMubWF4ICh0aGlzIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIHJvb3QgY2dyb3VwIGZvciBvYnZpb3VzIHJlYXNvbnMpLiBUaGUKK251bWJlciBvZiBwcm9jZXNzZXMgY3VycmVudGx5IGluIHRoZSBjZ3JvdXAgaXMgZ2l2ZW4gYnkgcGlkcy5jdXJyZW50LgorCitPcmdhbmlzYXRpb25hbCBvcGVyYXRpb25zIGFyZSBub3QgYmxvY2tlZCBieSBjZ3JvdXAgcG9saWNpZXMsIHNvIGl0IGlzIHBvc3NpYmxlCit0byBoYXZlIHBpZHMuY3VycmVudCA+IHBpZHMubWF4LiBUaGlzIGNhbiBiZSBkb25lIGJ5IGVpdGhlciBzZXR0aW5nIHRoZSBsaW1pdCB0bworYmUgc21hbGxlciB0aGFuIHBpZHMuY3VycmVudCwgb3IgYXR0YWNoaW5nIGVub3VnaCBwcm9jZXNzZXMgdG8gdGhlIGNncm91cCBzdWNoCit0aGF0IHBpZHMuY3VycmVudCA+IHBpZHMubWF4LiBIb3dldmVyLCBpdCBpcyBub3QgcG9zc2libGUgdG8gdmlvbGF0ZSBhIGNncm91cAorcG9saWN5IHRocm91Z2ggZm9yaygpIG9yIGNsb25lKCkuIGZvcmsoKSBhbmQgY2xvbmUoKSB3aWxsIHJldHVybiAtRUFHQUlOIGlmIHRoZQorY3JlYXRpb24gb2YgYSBuZXcgcHJvY2VzcyB3b3VsZCBjYXVzZSBhIGNncm91cCBwb2xpY3kgdG8gYmUgdmlvbGF0ZWQuCisKK1RvIHNldCBhIGNncm91cCB0byBoYXZlIG5vIGxpbWl0LCBzZXQgcGlkcy5tYXggdG8gIm1heCIuIFRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yCithbGwgbmV3IGNncm91cHMgKE4uQi4gdGhhdCBQSUQgbGltaXRzIGFyZSBoaWVyYXJjaGljYWwsIHNvIHRoZSBtb3N0IHN0cmluZ2VudAorbGltaXQgaW4gdGhlIGhpZXJhcmNoeSBpcyBmb2xsb3dlZCkuCisKK3BpZHMuY3VycmVudCB0cmFja3MgYWxsIGNoaWxkIGNncm91cCBoaWVyYXJjaGllcywgc28gcGFyZW50L3BpZHMuY3VycmVudCBpcyBhCitzdXBlcnNldCBvZiBwYXJlbnQvY2hpbGQvcGlkcy5jdXJyZW50LgorCitFeGFtcGxlCistLS0tLS0tCisKK0ZpcnN0LCB3ZSBtb3VudCB0aGUgcGlkcyBjb250cm9sbGVyOgorIyBta2RpciAtcCAvc3lzL2ZzL2Nncm91cC9waWRzCisjIG1vdW50IC10IGNncm91cCAtbyBwaWRzIG5vbmUgL3N5cy9mcy9jZ3JvdXAvcGlkcworCitUaGVuIHdlIGNyZWF0ZSBhIGhpZXJhcmNoeSwgc2V0IGxpbWl0cyBhbmQgYXR0YWNoIHByb2Nlc3NlcyB0byBpdDoKKyMgbWtkaXIgLXAgL3N5cy9mcy9jZ3JvdXAvcGlkcy9wYXJlbnQvY2hpbGQKKyMgZWNobyAyID4gL3N5cy9mcy9jZ3JvdXAvcGlkcy9wYXJlbnQvcGlkcy5tYXgKKyMgZWNobyAkJCA+IC9zeXMvZnMvY2dyb3VwL3BpZHMvcGFyZW50L2Nncm91cC5wcm9jcworIyBjYXQgL3N5cy9mcy9jZ3JvdXAvcGlkcy9wYXJlbnQvcGlkcy5jdXJyZW50CisyCisjCisKK0l0IHNob3VsZCBiZSBub3RlZCB0aGF0IGF0dGVtcHRzIHRvIG92ZXJjb21lIHRoZSBzZXQgbGltaXQgKDIgaW4gdGhpcyBjYXNlKSB3aWxsCitmYWlsOgorCisjIGNhdCAvc3lzL2ZzL2Nncm91cC9waWRzL3BhcmVudC9waWRzLmN1cnJlbnQKKzIKKyMgKCAvYmluL2VjaG8gIkhlcmUncyBzb21lIHByb2Nlc3NlcyBmb3IgeW91LiIgfCBjYXQgKQorc2g6IGZvcms6IFJlc291cmNlIHRlbXBvcmFyeSB1bmF2YWlsYWJsZQorIworCitFdmVuIGlmIHdlIG1pZ3JhdGUgdG8gYSBjaGlsZCBjZ3JvdXAgKHdoaWNoIGRvZXNuJ3QgaGF2ZSBhIHNldCBsaW1pdCksIHdlIHdpbGwKK25vdCBiZSBhYmxlIHRvIG92ZXJjb21lIHRoZSBtb3N0IHN0cmluZ2VudCBsaW1pdCBpbiB0aGUgaGllcmFyY2h5IChpbiB0aGlzIGNhc2UsCitwYXJlbnQncyk6CisKKyMgZWNobyAkJCA+IC9zeXMvZnMvY2dyb3VwL3BpZHMvcGFyZW50L2NoaWxkL2Nncm91cC5wcm9jcworIyBjYXQgL3N5cy9mcy9jZ3JvdXAvcGlkcy9wYXJlbnQvcGlkcy5jdXJyZW50CisyCisjIGNhdCAvc3lzL2ZzL2Nncm91cC9waWRzL3BhcmVudC9jaGlsZC9waWRzLmN1cnJlbnQKKzIKKyMgY2F0IC9zeXMvZnMvY2dyb3VwL3BpZHMvcGFyZW50L2NoaWxkL3BpZHMubWF4CittYXgKKyMgKCAvYmluL2VjaG8gIkhlcmUncyBzb21lIHByb2Nlc3NlcyBmb3IgeW91LiIgfCBjYXQgKQorc2g6IGZvcms6IFJlc291cmNlIHRlbXBvcmFyeSB1bmF2YWlsYWJsZQorIworCitXZSBjYW4gc2V0IGEgbGltaXQgdGhhdCBpcyBzbWFsbGVyIHRoYW4gcGlkcy5jdXJyZW50LCB3aGljaCB3aWxsIHN0b3AgYW55IG5ldworcHJvY2Vzc2VzIGZyb20gYmVpbmcgZm9ya2VkIGF0IGFsbCAobm90ZSB0aGF0IHRoZSBzaGVsbCBpdHNlbGYgY291bnRzIHRvd2FyZHMKK3BpZHMuY3VycmVudCk6CisKKyMgZWNobyAxID4gL3N5cy9mcy9jZ3JvdXAvcGlkcy9wYXJlbnQvcGlkcy5tYXgKKyMgL2Jpbi9lY2hvICJXZSBjYW4ndCBldmVuIHNwYXduIGEgc2luZ2xlIHByb2Nlc3Mgbm93LiIKK3NoOiBmb3JrOiBSZXNvdXJjZSB0ZW1wb3JhcnkgdW5hdmFpbGFibGUKKyMgZWNobyAwID4gL3N5cy9mcy9jZ3JvdXAvcGlkcy9wYXJlbnQvcGlkcy5tYXgKKyMgL2Jpbi9lY2hvICJXZSBjYW4ndCBldmVuIHNwYXduIGEgc2luZ2xlIHByb2Nlc3Mgbm93LiIKK3NoOiBmb3JrOiBSZXNvdXJjZSB0ZW1wb3JhcnkgdW5hdmFpbGFibGUKKyMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY2dyb3Vwcy91bmlmaWVkLWhpZXJhcmNoeS50eHQgYi9Eb2N1bWVudGF0aW9uL2Nncm91cHMvdW5pZmllZC1oaWVyYXJjaHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MWIxZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Nncm91cHMvdW5pZmllZC1oaWVyYXJjaHkudHh0CkBAIC0wLDAgKzEsNjQ3IEBACisKK0Nncm91cCB1bmlmaWVkIGhpZXJhcmNoeQorCitBcHJpbCwgMjAxNAkJVGVqdW4gSGVvIDx0akBrZXJuZWwub3JnPgorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgY2hhbmdlcyBtYWRlIGJ5IHVuaWZpZWQgaGllcmFyY2h5IGFuZAordGhlaXIgcmF0aW9uYWxlcy4gIEl0IHdpbGwgZXZlbnR1YWxseSBiZSBtZXJnZWQgaW50byB0aGUgbWFpbiBjZ3JvdXAKK2RvY3VtZW50YXRpb24uCisKK0NPTlRFTlRTCisKKzEuIEJhY2tncm91bmQKKzIuIEJhc2ljIE9wZXJhdGlvbgorICAyLTEuIE1vdW50aW5nCisgIDItMi4gY2dyb3VwLnN1YnRyZWVfY29udHJvbAorICAyLTMuIGNncm91cC5jb250cm9sbGVycworMy4gU3RydWN0dXJhbCBDb25zdHJhaW50cworICAzLTEuIFRvcC1kb3duCisgIDMtMi4gTm8gaW50ZXJuYWwgdGFza3MKKzQuIERlbGVnYXRpb24KKyAgNC0xLiBNb2RlbCBvZiBkZWxlZ2F0aW9uCisgIDQtMi4gQ29tbW9uIGFuY2VzdG9yIHJ1bGUKKzUuIE90aGVyIENoYW5nZXMKKyAgNS0xLiBbVW5dcG9wdWxhdGVkIE5vdGlmaWNhdGlvbgorICA1LTIuIE90aGVyIENvcmUgQ2hhbmdlcworICA1LTMuIENvbnRyb2xsZXIgRmlsZSBDb252ZW50aW9ucworICAgIDUtMy0xLiBGb3JtYXQKKyAgICA1LTMtMi4gQ29udHJvbCBLbm9icworICA1LTQuIFBlci1Db250cm9sbGVyIENoYW5nZXMKKyAgICA1LTQtMS4gaW8KKyAgICA1LTQtMi4gY3B1c2V0CisgICAgNS00LTMuIG1lbW9yeQorNi4gUGxhbm5lZCBDaGFuZ2VzCisgIDYtMS4gQ0FQIGZvciByZXNvdXJjZSBjb250cm9sCisKKworMS4gQmFja2dyb3VuZAorCitjZ3JvdXAgYWxsb3dzIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgaGllcmFyY2hpZXMgYW5kIGVhY2ggaGllcmFyY2h5CitjYW4gaG9zdCBhbnkgbnVtYmVyIG9mIGNvbnRyb2xsZXJzLiAgV2hpbGUgdGhpcyBzZWVtcyB0byBwcm92aWRlIGEKK2hpZ2ggbGV2ZWwgb2YgZmxleGliaWxpdHksIGl0IGlzbid0IHF1aXRlIHVzZWZ1bCBpbiBwcmFjdGljZS4KKworRm9yIGV4YW1wbGUsIGFzIHRoZXJlIGlzIG9ubHkgb25lIGluc3RhbmNlIG9mIGVhY2ggY29udHJvbGxlciwgdXRpbGl0eQordHlwZSBjb250cm9sbGVycyBzdWNoIGFzIGZyZWV6ZXIgd2hpY2ggY2FuIGJlIHVzZWZ1bCBpbiBhbGwKK2hpZXJhcmNoaWVzIGNhbiBvbmx5IGJlIHVzZWQgaW4gb25lLiAgVGhlIGlzc3VlIGlzIGV4YWNlcmJhdGVkIGJ5IHRoZQorZmFjdCB0aGF0IGNvbnRyb2xsZXJzIGNhbid0IGJlIG1vdmVkIGFyb3VuZCBvbmNlIGhpZXJhcmNoaWVzIGFyZQorcG9wdWxhdGVkLiAgQW5vdGhlciBpc3N1ZSBpcyB0aGF0IGFsbCBjb250cm9sbGVycyBib3VuZCB0byBhIGhpZXJhcmNoeQorYXJlIGZvcmNlZCB0byBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdmlldyBvZiB0aGUgaGllcmFyY2h5LiAgSXQgaXNuJ3QKK3Bvc3NpYmxlIHRvIHZhcnkgdGhlIGdyYW51bGFyaXR5IGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWMgY29udHJvbGxlci4KKworSW4gcHJhY3RpY2UsIHRoZXNlIGlzc3VlcyBoZWF2aWx5IGxpbWl0IHdoaWNoIGNvbnRyb2xsZXJzIGNhbiBiZSBwdXQKK29uIHRoZSBzYW1lIGhpZXJhcmNoeSBhbmQgbW9zdCBjb25maWd1cmF0aW9ucyByZXNvcnQgdG8gcHV0dGluZyBlYWNoCitjb250cm9sbGVyIG9uIGl0cyBvd24gaGllcmFyY2h5LiAgT25seSBjbG9zZWx5IHJlbGF0ZWQgb25lcywgc3VjaCBhcwordGhlIGNwdSBhbmQgY3B1YWNjdCBjb250cm9sbGVycywgbWFrZSBzZW5zZSB0byBwdXQgb24gdGhlIHNhbWUKK2hpZXJhcmNoeS4gIFRoaXMgb2Z0ZW4gbWVhbnMgdGhhdCB1c2VybGFuZCBlbmRzIHVwIG1hbmFnaW5nIG11bHRpcGxlCitzaW1pbGFyIGhpZXJhcmNoaWVzIHJlcGVhdGluZyB0aGUgc2FtZSBzdGVwcyBvbiBlYWNoIGhpZXJhcmNoeQord2hlbmV2ZXIgYSBoaWVyYXJjaHkgbWFuYWdlbWVudCBvcGVyYXRpb24gaXMgbmVjZXNzYXJ5LgorCitVbmZvcnR1bmF0ZWx5LCBzdXBwb3J0IGZvciBtdWx0aXBsZSBoaWVyYXJjaGllcyBjb21lcyBhdCBhIHN0ZWVwIGNvc3QuCitJbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBpbiBjZ3JvdXAgY29yZSBwcm9wZXIgaXMgZGF6emxpbmdseQorY29tcGxpY2F0ZWQgYnV0IG1vcmUgaW1wb3J0YW50bHkgdGhlIHN1cHBvcnQgZm9yIG11bHRpcGxlIGhpZXJhcmNoaWVzCityZXN0cmljdHMgaG93IGNncm91cCBpcyB1c2VkIGluIGdlbmVyYWwgYW5kIHdoYXQgY29udHJvbGxlcnMgY2FuIGRvLgorCitUaGVyZSdzIG5vIGxpbWl0IG9uIGhvdyBtYW55IGhpZXJhcmNoaWVzIHRoZXJlIG1heSBiZSwgd2hpY2ggbWVhbnMKK3RoYXQgYSB0YXNrJ3MgY2dyb3VwIG1lbWJlcnNoaXAgY2FuJ3QgYmUgZGVzY3JpYmVkIGluIGZpbml0ZSBsZW5ndGguCitUaGUga2V5IG1heSBjb250YWluIGFueSB2YXJ5aW5nIG51bWJlciBvZiBlbnRyaWVzIGFuZCBpcyB1bmxpbWl0ZWQgaW4KK2xlbmd0aCwgd2hpY2ggbWFrZXMgaXQgaGlnaGx5IGF3a3dhcmQgdG8gaGFuZGxlIGFuZCBsZWFkcyB0byBhZGRpdGlvbgorb2YgY29udHJvbGxlcnMgd2hpY2ggZXhpc3Qgb25seSB0byBpZGVudGlmeSBtZW1iZXJzaGlwLCB3aGljaCBpbiB0dXJuCitleGFjZXJiYXRlcyB0aGUgb3JpZ2luYWwgcHJvYmxlbS4KKworQWxzbywgYXMgYSBjb250cm9sbGVyIGNhbid0IGhhdmUgYW55IGV4cGVjdGF0aW9uIHJlZ2FyZGluZyB3aGF0IHNoYXBlCitvZiBoaWVyYXJjaGllcyBvdGhlciBjb250cm9sbGVycyB3b3VsZCBiZSBvbiwgZWFjaCBjb250cm9sbGVyIGhhcyB0bworYXNzdW1lIHRoYXQgYWxsIG90aGVyIGNvbnRyb2xsZXJzIGFyZSBvcGVyYXRpbmcgb24gY29tcGxldGVseQorb3J0aG9nb25hbCBoaWVyYXJjaGllcy4gIFRoaXMgbWFrZXMgaXQgaW1wb3NzaWJsZSwgb3IgYXQgbGVhc3QgdmVyeQorY3VtYmVyc29tZSwgZm9yIGNvbnRyb2xsZXJzIHRvIGNvb3BlcmF0ZSB3aXRoIGVhY2ggb3RoZXIuCisKK0luIG1vc3QgdXNlIGNhc2VzLCBwdXR0aW5nIGNvbnRyb2xsZXJzIG9uIGhpZXJhcmNoaWVzIHdoaWNoIGFyZQorY29tcGxldGVseSBvcnRob2dvbmFsIHRvIGVhY2ggb3RoZXIgaXNuJ3QgbmVjZXNzYXJ5LiAgV2hhdCB1c3VhbGx5IGlzCitjYWxsZWQgZm9yIGlzIHRoZSBhYmlsaXR5IHRvIGhhdmUgZGlmZmVyaW5nIGxldmVscyBvZiBncmFudWxhcml0eQorZGVwZW5kaW5nIG9uIHRoZSBzcGVjaWZpYyBjb250cm9sbGVyLiAgSW4gb3RoZXIgd29yZHMsIGhpZXJhcmNoeSBtYXkKK2JlIGNvbGxhcHNlZCBmcm9tIGxlYWYgdG93YXJkcyByb290IHdoZW4gdmlld2VkIGZyb20gc3BlY2lmaWMKK2NvbnRyb2xsZXJzLiAgRm9yIGV4YW1wbGUsIGEgZ2l2ZW4gY29uZmlndXJhdGlvbiBtaWdodCBub3QgY2FyZSBhYm91dAoraG93IG1lbW9yeSBpcyBkaXN0cmlidXRlZCBiZXlvbmQgYSBjZXJ0YWluIGxldmVsIHdoaWxlIHN0aWxsIHdhbnRpbmcKK3RvIGNvbnRyb2wgaG93IENQVSBjeWNsZXMgYXJlIGRpc3RyaWJ1dGVkLgorCitVbmlmaWVkIGhpZXJhcmNoeSBpcyB0aGUgbmV4dCB2ZXJzaW9uIG9mIGNncm91cCBpbnRlcmZhY2UuICBJdCBhaW1zIHRvCithZGRyZXNzIHRoZSBhZm9yZW1lbnRpb25lZCBpc3N1ZXMgYnkgaGF2aW5nIG1vcmUgc3RydWN0dXJlIHdoaWxlCityZXRhaW5pbmcgZW5vdWdoIGZsZXhpYmlsaXR5IGZvciBtb3N0IHVzZSBjYXNlcy4gIFZhcmlvdXMgb3RoZXIKK2dlbmVyYWwgYW5kIGNvbnRyb2xsZXItc3BlY2lmaWMgaW50ZXJmYWNlIGlzc3VlcyBhcmUgYWxzbyBhZGRyZXNzZWQgaW4KK3RoZSBwcm9jZXNzLgorCisKKzIuIEJhc2ljIE9wZXJhdGlvbgorCisyLTEuIE1vdW50aW5nCisKK0N1cnJlbnRseSwgdW5pZmllZCBoaWVyYXJjaHkgY2FuIGJlIG1vdW50ZWQgd2l0aCB0aGUgZm9sbG93aW5nIG1vdW50Citjb21tYW5kLiAgTm90ZSB0aGF0IHRoaXMgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIHNjaGVkdWxlZCB0bworY2hhbmdlIHNvb24uCisKKyBtb3VudCAtdCBjZ3JvdXAgLW8gX19ERVZFTF9fc2FuZV9iZWhhdmlvciBjZ3JvdXAgJE1PVU5UX1BPSU5UCisKK0FsbCBjb250cm9sbGVycyB3aGljaCBzdXBwb3J0IHRoZSB1bmlmaWVkIGhpZXJhcmNoeSBhbmQgYXJlIG5vdCBib3VuZAordG8gb3RoZXIgaGllcmFyY2hpZXMgYXJlIGF1dG9tYXRpY2FsbHkgYm91bmQgdG8gdW5pZmllZCBoaWVyYXJjaHkgYW5kCitzaG93IHVwIGF0IHRoZSByb290IG9mIGl0LiAgQ29udHJvbGxlcnMgd2hpY2ggYXJlIGVuYWJsZWQgb25seSBpbiB0aGUKK3Jvb3Qgb2YgdW5pZmllZCBoaWVyYXJjaHkgY2FuIGJlIGJvdW5kIHRvIG90aGVyIGhpZXJhcmNoaWVzLiAgVGhpcworYWxsb3dzIG1peGluZyB1bmlmaWVkIGhpZXJhcmNoeSB3aXRoIHRoZSB0cmFkaXRpb25hbCBtdWx0aXBsZQoraGllcmFyY2hpZXMgaW4gYSBmdWxseSBiYWNrd2FyZCBjb21wYXRpYmxlIHdheS4KKworQSBjb250cm9sbGVyIGNhbiBiZSBtb3ZlZCBhY3Jvc3MgaGllcmFyY2hpZXMgb25seSBhZnRlciB0aGUgY29udHJvbGxlcgoraXMgbm8gbG9uZ2VyIHJlZmVyZW5jZWQgaW4gaXRzIGN1cnJlbnQgaGllcmFyY2h5LiAgQmVjYXVzZSBwZXItY2dyb3VwCitjb250cm9sbGVyIHN0YXRlcyBhcmUgZGVzdHJveWVkIGFzeW5jaHJvbm91c2x5IGFuZCBjb250cm9sbGVycyBtYXkKK2hhdmUgbGluZ2VyaW5nIHJlZmVyZW5jZXMsIGEgY29udHJvbGxlciBtYXkgbm90IHNob3cgdXAgaW1tZWRpYXRlbHkgb24KK3RoZSB1bmlmaWVkIGhpZXJhcmNoeSBhZnRlciB0aGUgZmluYWwgdW1vdW50IG9mIHRoZSBwcmV2aW91cworaGllcmFyY2h5LiAgU2ltaWxhcmx5LCBhIGNvbnRyb2xsZXIgc2hvdWxkIGJlIGZ1bGx5IGRpc2FibGVkIHRvIGJlCittb3ZlZCBvdXQgb2YgdGhlIHVuaWZpZWQgaGllcmFyY2h5IGFuZCBpdCBtYXkgdGFrZSBzb21lIHRpbWUgZm9yIHRoZQorZGlzYWJsZWQgY29udHJvbGxlciB0byBiZWNvbWUgYXZhaWxhYmxlIGZvciBvdGhlciBoaWVyYXJjaGllczsKK2Z1cnRoZXJtb3JlLCBkdWUgdG8gZGVwZW5kZW5jaWVzIGFtb25nIGNvbnRyb2xsZXJzLCBvdGhlciBjb250cm9sbGVycworbWF5IG5lZWQgdG8gYmUgZGlzYWJsZWQgdG9vLgorCitXaGlsZSB1c2VmdWwgZm9yIGRldmVsb3BtZW50IGFuZCBtYW51YWwgY29uZmlndXJhdGlvbnMsIGR5bmFtaWNhbGx5Cittb3ZpbmcgY29udHJvbGxlcnMgYmV0d2VlbiB0aGUgdW5pZmllZCBhbmQgb3RoZXIgaGllcmFyY2hpZXMgaXMKK3N0cm9uZ2x5IGRpc2NvdXJhZ2VkIGZvciBwcm9kdWN0aW9uIHVzZS4gIEl0IGlzIHJlY29tbWVuZGVkIHRvIGRlY2lkZQordGhlIGhpZXJhcmNoaWVzIGFuZCBjb250cm9sbGVyIGFzc29jaWF0aW9ucyBiZWZvcmUgc3RhcnRpbmcgdXNpbmcgdGhlCitjb250cm9sbGVycy4KKworCisyLTIuIGNncm91cC5zdWJ0cmVlX2NvbnRyb2wKKworQWxsIGNncm91cHMgb24gdW5pZmllZCBoaWVyYXJjaHkgaGF2ZSBhICJjZ3JvdXAuc3VidHJlZV9jb250cm9sIiBmaWxlCit3aGljaCBnb3Zlcm5zIHdoaWNoIGNvbnRyb2xsZXJzIGFyZSBlbmFibGVkIG9uIHRoZSBjaGlsZHJlbiBvZiB0aGUKK2Nncm91cC4gIExldCdzIGFzc3VtZSBhIGhpZXJhcmNoeSBsaWtlIHRoZSBmb2xsb3dpbmcuCisKKyAgcm9vdCAtIEEgLSBCIC0gQworICAgICAgICAgICAgICAgXCBECisKK3Jvb3QncyAiY2dyb3VwLnN1YnRyZWVfY29udHJvbCIgZmlsZSBkZXRlcm1pbmVzIHdoaWNoIGNvbnRyb2xsZXJzIGFyZQorZW5hYmxlZCBvbiBBLiAgQSdzIG9uIEIuICBCJ3Mgb24gQyBhbmQgRC4gIFRoaXMgY29pbmNpZGVzIHdpdGggdGhlCitmYWN0IHRoYXQgY29udHJvbGxlcnMgb24gdGhlIGltbWVkaWF0ZSBzdWItbGV2ZWwgYXJlIHVzZWQgdG8KK2Rpc3RyaWJ1dGUgdGhlIHJlc291cmNlcyBvZiB0aGUgcGFyZW50LiAgSW4gZmFjdCwgaXQncyBuYXR1cmFsIHRvCithc3N1bWUgdGhhdCByZXNvdXJjZSBjb250cm9sIGtub2JzIG9mIGEgY2hpbGQgYmVsb25nIHRvIGl0cyBwYXJlbnQuCitFbmFibGluZyBhIGNvbnRyb2xsZXIgaW4gYSAiY2dyb3VwLnN1YnRyZWVfY29udHJvbCIgZmlsZSBkZWNsYXJlcyB0aGF0CitkaXN0cmlidXRpb24gb2YgdGhlIHJlc3BlY3RpdmUgcmVzb3VyY2VzIG9mIHRoZSBjZ3JvdXAgd2lsbCBiZQorY29udHJvbGxlZC4gIE5vdGUgdGhhdCB0aGlzIG1lYW5zIHRoYXQgY29udHJvbGxlciBlbmFibGUgc3RhdGVzIGFyZQorc2hhcmVkIGFtb25nIHNpYmxpbmdzLgorCitXaGVuIHJlYWQsIHRoZSBmaWxlIGNvbnRhaW5zIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgY3VycmVudGx5CitlbmFibGVkIGNvbnRyb2xsZXJzLiAgQSB3cml0ZSB0byB0aGUgZmlsZSBzaG91bGQgY29udGFpbiBhCitzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBjb250cm9sbGVycyB3aXRoICcrJyBvciAnLScgcHJlZml4ZWQgKHdpdGhvdXQKK3RoZSBxdW90ZXMpLiAgQ29udHJvbGxlcnMgcHJlZml4ZWQgd2l0aCAnKycgYXJlIGVuYWJsZWQgYW5kICctJworZGlzYWJsZWQuICBJZiBhIGNvbnRyb2xsZXIgaXMgbGlzdGVkIG11bHRpcGxlIHRpbWVzLCB0aGUgbGFzdCBlbnRyeQord2lucy4gIFRoZSBzcGVjaWZpYyBvcGVyYXRpb25zIGFyZSBleGVjdXRlZCBhdG9taWNhbGx5IC0gZWl0aGVyIGFsbAorc3VjY2VlZCBvciBmYWlsLgorCisKKzItMy4gY2dyb3VwLmNvbnRyb2xsZXJzCisKK1JlYWQtb25seSAiY2dyb3VwLmNvbnRyb2xsZXJzIiBmaWxlIGNvbnRhaW5zIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YKK2NvbnRyb2xsZXJzIHdoaWNoIGNhbiBiZSBlbmFibGVkIGluIHRoZSBjZ3JvdXAncworImNncm91cC5zdWJ0cmVlX2NvbnRyb2wiIGZpbGUuCisKK0luIHRoZSByb290IGNncm91cCwgdGhpcyBsaXN0cyBjb250cm9sbGVycyB3aGljaCBhcmUgbm90IGJvdW5kIHRvCitvdGhlciBoaWVyYXJjaGllcyBhbmQgdGhlIGNvbnRlbnQgY2hhbmdlcyBhcyBjb250cm9sbGVycyBhcmUgYm91bmQgdG8KK2FuZCB1bmJvdW5kIGZyb20gb3RoZXIgaGllcmFyY2hpZXMuCisKK0luIG5vbi1yb290IGNncm91cHMsIHRoZSBjb250ZW50IG9mIHRoaXMgZmlsZSBlcXVhbHMgdGhhdCBvZiB0aGUKK3BhcmVudCdzICJjZ3JvdXAuc3VidHJlZV9jb250cm9sIiBmaWxlIGFzIG9ubHkgY29udHJvbGxlcnMgZW5hYmxlZAorZnJvbSB0aGUgcGFyZW50IGNhbiBiZSB1c2VkIGluIGl0cyBjaGlsZHJlbi4KKworCiszLiBTdHJ1Y3R1cmFsIENvbnN0cmFpbnRzCisKKzMtMS4gVG9wLWRvd24KKworQXMgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIG5lc3QgY29udHJvbCBvZiBhbiB1bmNvbnRyb2xsZWQgcmVzb3VyY2UsCithbGwgbm9uLXJvb3QgImNncm91cC5zdWJ0cmVlX2NvbnRyb2wiIGZpbGVzIGNhbiBvbmx5IGNvbnRhaW4KK2NvbnRyb2xsZXJzIHdoaWNoIGFyZSBlbmFibGVkIGluIHRoZSBwYXJlbnQncyAiY2dyb3VwLnN1YnRyZWVfY29udHJvbCIKK2ZpbGUuICBBIGNvbnRyb2xsZXIgY2FuIGJlIGVuYWJsZWQgb25seSBpZiB0aGUgcGFyZW50IGhhcyB0aGUKK2NvbnRyb2xsZXIgZW5hYmxlZCBhbmQgYSBjb250cm9sbGVyIGNhbid0IGJlIGRpc2FibGVkIGlmIG9uZSBvciBtb3JlCitjaGlsZHJlbiBoYXZlIGl0IGVuYWJsZWQuCisKKworMy0yLiBObyBpbnRlcm5hbCB0YXNrcworCitPbmUgbG9uZy1zdGFuZGluZyBpc3N1ZSB0aGF0IGNncm91cCBmYWNlcyBpcyB0aGUgY29tcGV0aXRpb24gYmV0d2VlbgordGFza3MgYmVsb25naW5nIHRvIHRoZSBwYXJlbnQgY2dyb3VwIGFuZCBpdHMgY2hpbGRyZW4gY2dyb3Vwcy4gIFRoaXMKK2lzIGluaGVyZW50bHkgbmFzdHkgYXMgdHdvIGRpZmZlcmVudCB0eXBlcyBvZiBlbnRpdGllcyBjb21wZXRlIGFuZAordGhlcmUgaXMgbm8gYWdyZWVkLXVwb24gb2J2aW91cyB3YXkgdG8gaGFuZGxlIGl0LiAgRGlmZmVyZW50Citjb250cm9sbGVycyBhcmUgZG9pbmcgZGlmZmVyZW50IHRoaW5ncy4KKworVGhlIGNwdSBjb250cm9sbGVyIGNvbnNpZGVycyB0YXNrcyBhbmQgY2dyb3VwcyBhcyBlcXVpdmFsZW50cyBhbmQgbWFwcworbmljZSBsZXZlbHMgdG8gY2dyb3VwIHdlaWdodHMuICBUaGlzIHdvcmtzIGZvciBzb21lIGNhc2VzIGJ1dCBmYWxscworZmxhdCB3aGVuIGNoaWxkcmVuIHNob3VsZCBiZSBhbGxvY2F0ZWQgc3BlY2lmaWMgcmF0aW9zIG9mIENQVSBjeWNsZXMKK2FuZCB0aGUgbnVtYmVyIG9mIGludGVybmFsIHRhc2tzIGZsdWN0dWF0ZXMgLSB0aGUgcmF0aW9zIGNvbnN0YW50bHkKK2NoYW5nZSBhcyB0aGUgbnVtYmVyIG9mIGNvbXBldGluZyBlbnRpdGllcyBmbHVjdHVhdGVzLiAgVGhlcmUgYWxzbyBhcmUKK290aGVyIGlzc3Vlcy4gIFRoZSBtYXBwaW5nIGZyb20gbmljZSBsZXZlbCB0byB3ZWlnaHQgaXNuJ3Qgb2J2aW91cyBvcgordW5pdmVyc2FsLCBhbmQgdGhlcmUgYXJlIHZhcmlvdXMgb3RoZXIga25vYnMgd2hpY2ggc2ltcGx5IGFyZW4ndAorYXZhaWxhYmxlIGZvciB0YXNrcy4KKworVGhlIGlvIGNvbnRyb2xsZXIgaW1wbGljaXRseSBjcmVhdGVzIGEgaGlkZGVuIGxlYWYgbm9kZSBmb3IgZWFjaAorY2dyb3VwIHRvIGhvc3QgdGhlIHRhc2tzLiAgVGhlIGhpZGRlbiBsZWFmIGhhcyBpdHMgb3duIGNvcGllcyBvZiBhbGwKK3RoZSBrbm9icyB3aXRoICJsZWFmXyIgcHJlZml4ZWQuICBXaGlsZSB0aGlzIGFsbG93cyBlcXVpdmFsZW50IGNvbnRyb2wKK292ZXIgaW50ZXJuYWwgdGFza3MsIGl0J3Mgd2l0aCBzZXJpb3VzIGRyYXdiYWNrcy4gIEl0IGFsd2F5cyBhZGRzIGFuCitleHRyYSBsYXllciBvZiBuZXN0aW5nIHdoaWNoIG1heSBub3QgYmUgbmVjZXNzYXJ5LCBtYWtlcyB0aGUgaW50ZXJmYWNlCittZXNzeSBhbmQgc2lnbmlmaWNhbnRseSBjb21wbGljYXRlcyB0aGUgaW1wbGVtZW50YXRpb24uCisKK1RoZSBtZW1vcnkgY29udHJvbGxlciBjdXJyZW50bHkgZG9lc24ndCBoYXZlIGEgd2F5IHRvIGNvbnRyb2wgd2hhdAoraGFwcGVucyBiZXR3ZWVuIGludGVybmFsIHRhc2tzIGFuZCBjaGlsZCBjZ3JvdXBzIGFuZCB0aGUgYmVoYXZpb3IgaXMKK25vdCBjbGVhcmx5IGRlZmluZWQuICBUaGVyZSBoYXZlIGJlZW4gYXR0ZW1wdHMgdG8gYWRkIGFkLWhvYyBiZWhhdmlvcnMKK2FuZCBrbm9icyB0byB0YWlsb3IgdGhlIGJlaGF2aW9yIHRvIHNwZWNpZmljIHdvcmtsb2Fkcy4gIENvbnRpbnVpbmcKK3RoaXMgZGlyZWN0aW9uIHdpbGwgbGVhZCB0byBwcm9ibGVtcyB3aGljaCB3aWxsIGJlIGV4dHJlbWVseSBkaWZmaWN1bHQKK3RvIHJlc29sdmUgaW4gdGhlIGxvbmcgdGVybS4KKworTXVsdGlwbGUgY29udHJvbGxlcnMgc3RydWdnbGUgd2l0aCBpbnRlcm5hbCB0YXNrcyBhbmQgY2FtZSB1cCB3aXRoCitkaWZmZXJlbnQgd2F5cyB0byBkZWFsIHdpdGggaXQ7IHVuZm9ydHVuYXRlbHksIGFsbCB0aGUgYXBwcm9hY2hlcyBpbgordXNlIG5vdyBhcmUgc2V2ZXJlbHkgZmxhd2VkIGFuZCwgZnVydGhlcm1vcmUsIHRoZSB3aWRlbHkgZGlmZmVyZW50CitiZWhhdmlvcnMgbWFrZSBjZ3JvdXAgYXMgd2hvbGUgaGlnaGx5IGluY29uc2lzdGVudC4KKworSXQgaXMgY2xlYXIgdGhhdCB0aGlzIGlzIHNvbWV0aGluZyB3aGljaCBuZWVkcyB0byBiZSBhZGRyZXNzZWQgZnJvbQorY2dyb3VwIGNvcmUgcHJvcGVyIGluIGEgdW5pZm9ybSB3YXkgc28gdGhhdCBjb250cm9sbGVycyBkb24ndCBuZWVkIHRvCit3b3JyeSBhYm91dCBpdCBhbmQgY2dyb3VwIGFzIGEgd2hvbGUgc2hvd3MgYSBjb25zaXN0ZW50IGFuZCBsb2dpY2FsCitiZWhhdmlvci4gIFRvIGFjaGlldmUgdGhhdCwgdW5pZmllZCBoaWVyYXJjaHkgZW5mb3JjZXMgdGhlIGZvbGxvd2luZworc3RydWN0dXJhbCBjb25zdHJhaW50OgorCisgRXhjZXB0IGZvciB0aGUgcm9vdCwgb25seSBjZ3JvdXBzIHdoaWNoIGRvbid0IGNvbnRhaW4gYW55IHRhc2sgbWF5CisgaGF2ZSBjb250cm9sbGVycyBlbmFibGVkIGluIHRoZWlyICJjZ3JvdXAuc3VidHJlZV9jb250cm9sIiBmaWxlcy4KKworQ29tYmluZWQgd2l0aCBvdGhlciBwcm9wZXJ0aWVzLCB0aGlzIGd1YXJhbnRlZXMgdGhhdCwgd2hlbiBhCitjb250cm9sbGVyIGlzIGxvb2tpbmcgYXQgdGhlIHBhcnQgb2YgdGhlIGhpZXJhcmNoeSB3aGljaCBoYXMgaXQKK2VuYWJsZWQsIHRhc2tzIGFyZSBhbHdheXMgb25seSBvbiB0aGUgbGVhdmVzLiAgVGhpcyBydWxlcyBvdXQKK3NpdHVhdGlvbnMgd2hlcmUgY2hpbGQgY2dyb3VwcyBjb21wZXRlIGFnYWluc3QgaW50ZXJuYWwgdGFza3Mgb2YgdGhlCitwYXJlbnQuCisKK1RoZXJlIGFyZSB0d28gdGhpbmdzIHRvIG5vdGUuICBGaXJzdGx5LCB0aGUgcm9vdCBjZ3JvdXAgaXMgZXhlbXB0IGZyb20KK3RoZSByZXN0cmljdGlvbi4gIFJvb3QgY29udGFpbnMgdGFza3MgYW5kIGFub255bW91cyByZXNvdXJjZQorY29uc3VtcHRpb24gd2hpY2ggY2FuJ3QgYmUgYXNzb2NpYXRlZCB3aXRoIGFueSBvdGhlciBjZ3JvdXAgYW5kCityZXF1aXJlcyBzcGVjaWFsIHRyZWF0bWVudCBmcm9tIG1vc3QgY29udHJvbGxlcnMuICBIb3cgcmVzb3VyY2UKK2NvbnN1bXB0aW9uIGluIHRoZSByb290IGNncm91cCBpcyBnb3Zlcm5lZCBpcyB1cCB0byBlYWNoIGNvbnRyb2xsZXIuCisKK1NlY29uZGx5LCB0aGUgcmVzdHJpY3Rpb24gZG9lc24ndCB0YWtlIGVmZmVjdCBpZiB0aGVyZSBpcyBubyBlbmFibGVkCitjb250cm9sbGVyIGluIHRoZSBjZ3JvdXAncyAiY2dyb3VwLnN1YnRyZWVfY29udHJvbCIgZmlsZS4gIFRoaXMgaXMKK2ltcG9ydGFudCBhcyBvdGhlcndpc2UgaXQgd291bGRuJ3QgYmUgcG9zc2libGUgdG8gY3JlYXRlIGNoaWxkcmVuIG9mIGEKK3BvcHVsYXRlZCBjZ3JvdXAuICBUbyBjb250cm9sIHJlc291cmNlIGRpc3RyaWJ1dGlvbiBvZiBhIGNncm91cCwgdGhlCitjZ3JvdXAgbXVzdCBjcmVhdGUgY2hpbGRyZW4gYW5kIHRyYW5zZmVyIGFsbCBpdHMgdGFza3MgdG8gdGhlIGNoaWxkcmVuCitiZWZvcmUgZW5hYmxpbmcgY29udHJvbGxlcnMgaW4gaXRzICJjZ3JvdXAuc3VidHJlZV9jb250cm9sIiBmaWxlLgorCisKKzQuIERlbGVnYXRpb24KKworNC0xLiBNb2RlbCBvZiBkZWxlZ2F0aW9uCisKK0EgY2dyb3VwIGNhbiBiZSBkZWxlZ2F0ZWQgdG8gYSBsZXNzIHByaXZpbGVnZWQgdXNlciBieSBncmFudGluZyB3cml0ZQorYWNjZXNzIG9mIHRoZSBkaXJlY3RvcnkgYW5kIGl0cyAiY2dyb3VwLnByb2NzIiBmaWxlIHRvIHRoZSB1c2VyLiAgTm90ZQordGhhdCB0aGUgcmVzb3VyY2UgY29udHJvbCBrbm9icyBpbiBhIGdpdmVuIGRpcmVjdG9yeSBjb25jZXJuIHRoZQorcmVzb3VyY2VzIG9mIHRoZSBwYXJlbnQgYW5kIHRodXMgbXVzdCBub3QgYmUgZGVsZWdhdGVkIGFsb25nIHdpdGggdGhlCitkaXJlY3RvcnkuCisKK09uY2UgZGVsZWdhdGVkLCB0aGUgdXNlciBjYW4gYnVpbGQgc3ViLWhpZXJhcmNoeSB1bmRlciB0aGUgZGlyZWN0b3J5LAorb3JnYW5pemUgcHJvY2Vzc2VzIGFzIGl0IHNlZXMgZml0IGFuZCBmdXJ0aGVyIGRpc3RyaWJ1dGUgdGhlIHJlc291cmNlcworaXQgZ290IGZyb20gdGhlIHBhcmVudC4gIFRoZSBsaW1pdHMgYW5kIG90aGVyIHNldHRpbmdzIG9mIGFsbCByZXNvdXJjZQorY29udHJvbGxlcnMgYXJlIGhpZXJhcmNoaWNhbCBhbmQgcmVnYXJkbGVzcyBvZiB3aGF0IGhhcHBlbnMgaW4gdGhlCitkZWxlZ2F0ZWQgc3ViLWhpZXJhcmNoeSwgbm90aGluZyBjYW4gZXNjYXBlIHRoZSByZXNvdXJjZSByZXN0cmljdGlvbnMKK2ltcG9zZWQgYnkgdGhlIHBhcmVudC4KKworQ3VycmVudGx5LCBjZ3JvdXAgZG9lc24ndCBpbXBvc2UgYW55IHJlc3RyaWN0aW9ucyBvbiB0aGUgbnVtYmVyIG9mCitjZ3JvdXBzIGluIG9yIG5lc3RpbmcgZGVwdGggb2YgYSBkZWxlZ2F0ZWQgc3ViLWhpZXJhcmNoeTsgaG93ZXZlciwKK3RoaXMgbWF5IGluIHRoZSBmdXR1cmUgYmUgbGltaXRlZCBleHBsaWNpdGx5LgorCisKKzQtMi4gQ29tbW9uIGFuY2VzdG9yIHJ1bGUKKworT24gdGhlIHVuaWZpZWQgaGllcmFyY2h5LCB0byB3cml0ZSB0byBhICJjZ3JvdXAucHJvY3MiIGZpbGUsIGluCithZGRpdGlvbiB0byB0aGUgdXN1YWwgd3JpdGUgcGVybWlzc2lvbiB0byB0aGUgZmlsZSBhbmQgdWlkIG1hdGNoLCB0aGUKK3dyaXRlciBtdXN0IGFsc28gaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhlICJjZ3JvdXAucHJvY3MiIGZpbGUgb2YgdGhlCitjb21tb24gYW5jZXN0b3Igb2YgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gY2dyb3Vwcy4gIFRoaXMgcHJldmVudHMKK2RlbGVnYXRlZXMgZnJvbSBzbXVnZ2xpbmcgcHJvY2Vzc2VzIGFjcm9zcyBkaXNqb2ludCBzdWItaGllcmFyY2hpZXMuCisKK0xldCdzIHNheSBjZ3JvdXBzIEMwIGFuZCBDMSBoYXZlIGJlZW4gZGVsZWdhdGVkIHRvIHVzZXIgVTAgd2hvIGNyZWF0ZWQKK0MwMCwgQzAxIHVuZGVyIEMwIGFuZCBDMTAgdW5kZXIgQzEgYXMgZm9sbG93cy4KKworIH5+fn5+fn5+fn5+fn4gLSBDMCAtIEMwMAorIH4gY2dyb3VwICAgIH4gICAgICBcIEMwMQorIH4gaGllcmFyY2h5IH4KKyB+fn5+fn5+fn5+fn5+IC0gQzEgLSBDMTAKKworQzAgYW5kIEMxIGFyZSBzZXBhcmF0ZSBlbnRpdGllcyBpbiB0ZXJtcyBvZiByZXNvdXJjZSBkaXN0cmlidXRpb24KK3JlZ2FyZGxlc3Mgb2YgdGhlaXIgcmVsYXRpdmUgcG9zaXRpb25zIGluIHRoZSBoaWVyYXJjaHkuICBUaGUKK3Jlc291cmNlcyB0aGUgcHJvY2Vzc2VzIHVuZGVyIEMwIGFyZSBlbnRpdGxlZCB0byBhcmUgY29udHJvbGxlZCBieQorQzAncyBhbmNlc3RvcnMgYW5kIG1heSBiZSBjb21wbGV0ZWx5IGRpZmZlcmVudCBmcm9tIEMxLiAgSXQncyBjbGVhcgordGhhdCB0aGUgaW50ZW50aW9uIG9mIGRlbGVnYXRpbmcgQzAgdG8gVTAgaXMgYWxsb3dpbmcgVTAgdG8gb3JnYW5pemUKK3RoZSBwcm9jZXNzZXMgdW5kZXIgQzAgYW5kIGZ1cnRoZXIgY29udHJvbCB0aGUgZGlzdHJpYnV0aW9uIG9mIEMwJ3MKK3Jlc291cmNlcy4KKworT24gdHJhZGl0aW9uYWwgaGllcmFyY2hpZXMsIGlmIGEgdGFzayBoYXMgd3JpdGUgYWNjZXNzIHRvICJ0YXNrcyIgb3IKKyJjZ3JvdXAucHJvY3MiIGZpbGUgb2YgYSBjZ3JvdXAgYW5kIGl0cyB1aWQgYWdyZWVzIHdpdGggdGhlIHRhcmdldCwgaXQKK2NhbiBtb3ZlIHRoZSB0YXJnZXQgdG8gdGhlIGNncm91cC4gIEluIHRoZSBhYm92ZSBleGFtcGxlLCBVMCB3aWxsIG5vdAorb25seSBiZSBhYmxlIHRvIG1vdmUgcHJvY2Vzc2VzIGluIGVhY2ggc3ViLWhpZXJhcmNoeSBidXQgYWxzbyBhY3Jvc3MKK3RoZSB0d28gc3ViLWhpZXJhcmNoaWVzLCBlZmZlY3RpdmVseSBhbGxvd2luZyBpdCB0byB2aW9sYXRlIHRoZQorb3JnYW5pemF0aW9uYWwgYW5kIHJlc291cmNlIHJlc3RyaWN0aW9ucyBpbXBsaWVkIGJ5IHRoZSBoaWVyYXJjaGljYWwKK3N0cnVjdHVyZSBhYm92ZSBDMCBhbmQgQzEuCisKK09uIHRoZSB1bmlmaWVkIGhpZXJhcmNoeSwgbGV0J3Mgc2F5IFUwIHdhbnRzIHRvIHdyaXRlIHRoZSBwaWQgb2YgYQorcHJvY2VzcyB3aGljaCBoYXMgYSBtYXRjaGluZyB1aWQgYW5kIGlzIGN1cnJlbnRseSBpbiBDMTAgaW50bworIkMwMC9jZ3JvdXAucHJvY3MiLiAgVTAgb2J2aW91c2x5IGhhcyB3cml0ZSBhY2Nlc3MgdG8gdGhlIGZpbGUgYW5kCittaWdyYXRpb24gcGVybWlzc2lvbiBvbiB0aGUgcHJvY2VzczsgaG93ZXZlciwgdGhlIGNvbW1vbiBhbmNlc3RvciBvZgordGhlIHNvdXJjZSBjZ3JvdXAgQzEwIGFuZCB0aGUgZGVzdGluYXRpb24gY2dyb3VwIEMwMCBpcyBhYm92ZSB0aGUKK3BvaW50cyBvZiBkZWxlZ2F0aW9uIGFuZCBVMCB3b3VsZCBub3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gaXRzCisiY2dyb3VwLnByb2NzIiBhbmQgdGh1cyBiZSBkZW5pZWQgd2l0aCAtRUFDQ0VTLgorCisKKzUuIE90aGVyIENoYW5nZXMKKworNS0xLiBbVW5dcG9wdWxhdGVkIE5vdGlmaWNhdGlvbgorCitjZ3JvdXAgdXNlcnMgb2Z0ZW4gbmVlZCBhIHdheSB0byBkZXRlcm1pbmUgd2hlbiBhIGNncm91cCdzCitzdWJoaWVyYXJjaHkgYmVjb21lcyBlbXB0eSBzbyB0aGF0IGl0IGNhbiBiZSBjbGVhbmVkIHVwLiAgY2dyb3VwCitjdXJyZW50bHkgcHJvdmlkZXMgcmVsZWFzZV9hZ2VudCBmb3IgaXQ7IHVuZm9ydHVuYXRlbHksIHRoaXMgbWVjaGFuaXNtCitpcyByaWRkbGVkIHdpdGggaXNzdWVzLgorCistIEl0IGRlbGl2ZXJzIGV2ZW50cyBieSBmb3JraW5nIGFuZCBleGVjaW5nIGEgdXNlcmxhbmQgYmluYXJ5CisgIHNwZWNpZmllZCBhcyB0aGUgcmVsZWFzZV9hZ2VudC4gIFRoaXMgaXMgYSBsb25nIGRlcHJlY2F0ZWQgbWV0aG9kIG9mCisgIG5vdGlmaWNhdGlvbiBkZWxpdmVyeS4gIEl0J3MgZXh0cmVtZWx5IGhlYXZ5LCBzbG93IGFuZCBjdW1iZXJzb21lIHRvCisgIGludGVncmF0ZSB3aXRoIGxhcmdlciBpbmZyYXN0cnVjdHVyZS4KKworLSBUaGVyZSBpcyBzaW5nbGUgbW9uaXRvcmluZyBwb2ludCBhdCB0aGUgcm9vdC4gIFRoZXJlJ3Mgbm8gd2F5IHRvCisgIGRlbGVnYXRlIG1hbmFnZW1lbnQgb2YgYSBzdWJ0cmVlLgorCistIFRoZSBldmVudCBpc24ndCByZWN1cnNpdmUuICBJdCB0cmlnZ2VycyB3aGVuIGEgY2dyb3VwIGRvZXNuJ3QgaGF2ZQorICBhbnkgdGFza3Mgb3IgY2hpbGQgY2dyb3Vwcy4gIEV2ZW50cyBmb3IgaW50ZXJuYWwgbm9kZXMgdHJpZ2dlciBvbmx5CisgIGFmdGVyIGFsbCBjaGlsZHJlbiBhcmUgcmVtb3ZlZC4gIFRoaXMgYWdhaW4gbWFrZXMgaXQgaW1wb3NzaWJsZSB0bworICBkZWxlZ2F0ZSBtYW5hZ2VtZW50IG9mIGEgc3VidHJlZS4KKworLSBFdmVudHMgYXJlIGZpbHRlcmVkIGZyb20gdGhlIGtlcm5lbCBzaWRlLiAgQSAibm90aWZ5X29uX3JlbGVhc2UiCisgIGZpbGUgaXMgdXNlZCB0byBzdWJzY3JpYmUgdG8gb3Igc3VwcHJlc3MgcmVsZWFzZSBldmVudHMuICBUaGlzIGlzCisgIHVubmVjZXNzYXJpbHkgY29tcGxpY2F0ZWQgYW5kIHByb2JhYmx5IGRvbmUgdGhpcyB3YXkgYmVjYXVzZSBldmVudAorICBkZWxpdmVyeSBpdHNlbGYgd2FzIGV4cGVuc2l2ZS4KKworVW5pZmllZCBoaWVyYXJjaHkgaW1wbGVtZW50cyAicG9wdWxhdGVkIiBmaWVsZCBpbiAiY2dyb3VwLmV2ZW50cyIKK2ludGVyZmFjZSBmaWxlIHdoaWNoIGNhbiBiZSB1c2VkIHRvIG1vbml0b3Igd2hldGhlciB0aGUgY2dyb3VwJ3MKK3N1YmhpZXJhcmNoeSBoYXMgdGFza3MgaW4gaXQgb3Igbm90LiAgSXRzIHZhbHVlIGlzIDAgaWYgdGhlcmUgaXMgbm8KK3Rhc2sgaW4gdGhlIGNncm91cCBhbmQgaXRzIGRlc2NlbmRhbnRzOyBvdGhlcndpc2UsIDEuICBwb2xsIGFuZAorW2lkXW5vdGlmeSBldmVudHMgYXJlIHRyaWdnZXJlZCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLgorCitUaGlzIGlzIHNpZ25pZmljYW50bHkgbGlnaHRlciBhbmQgc2ltcGxlciBhbmQgdHJpdmlhbGx5IGFsbG93cworZGVsZWdhdGluZyBtYW5hZ2VtZW50IG9mIHN1YmhpZXJhcmNoeSAtIHN1YmhpZXJhcmNoeSBtb25pdG9yaW5nIGNhbgorYmxvY2sgZnVydGhlciBwcm9wYWdhdGlvbiBzaW1wbHkgYnkgcHV0dGluZyBpdHNlbGYgb3IgYW5vdGhlciBwcm9jZXNzCitpbiB0aGUgc3ViaGllcmFyY2h5IGFuZCBtb25pdG9yIGV2ZW50cyB0aGF0IGl0J3MgaW50ZXJlc3RlZCBpbiBmcm9tCit0aGVyZSB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggbW9uaXRvcmluZyBoaWdoZXIgaW4gdGhlIHRyZWUuCisKK0luIHVuaWZpZWQgaGllcmFyY2h5LCB0aGUgcmVsZWFzZV9hZ2VudCBtZWNoYW5pc20gaXMgbm8gbG9uZ2VyCitzdXBwb3J0ZWQgYW5kIHRoZSBpbnRlcmZhY2UgZmlsZXMgInJlbGVhc2VfYWdlbnQiIGFuZAorIm5vdGlmeV9vbl9yZWxlYXNlIiBkbyBub3QgZXhpc3QuCisKKworNS0yLiBPdGhlciBDb3JlIENoYW5nZXMKKworLSBOb25lIG9mIHRoZSBtb3VudCBvcHRpb25zIGlzIGFsbG93ZWQuCisKKy0gcmVtb3VudCBpcyBkaXNhbGxvd2VkLgorCistIHJlbmFtZSgyKSBpcyBkaXNhbGxvd2VkLgorCistIFRoZSAidGFza3MiIGZpbGUgaXMgcmVtb3ZlZC4gIEV2ZXJ5dGhpbmcgc2hvdWxkIGF0IHByb2Nlc3MKKyAgZ3JhbnVsYXJpdHkuICBVc2UgdGhlICJjZ3JvdXAucHJvY3MiIGZpbGUgaW5zdGVhZC4KKworLSBUaGUgImNncm91cC5wcm9jcyIgZmlsZSBpcyBub3Qgc29ydGVkLiAgcGlkcyB3aWxsIGJlIHVuaXF1ZSB1bmxlc3MKKyAgdGhleSBnb3QgcmVjeWNsZWQgaW4tYmV0d2VlbiByZWFkcy4KKworLSBUaGUgImNncm91cC5jbG9uZV9jaGlsZHJlbiIgZmlsZSBpcyByZW1vdmVkLgorCistIC9wcm9jL1BJRC9jZ3JvdXAga2VlcHMgcmVwb3J0aW5nIHRoZSBjZ3JvdXAgdGhhdCBhIHpvbWJpZSBiZWxvbmdlZAorICB0byBiZWZvcmUgZXhpdGluZy4gIElmIHRoZSBjZ3JvdXAgaXMgcmVtb3ZlZCBiZWZvcmUgdGhlIHpvbWJpZSBpcworICByZWFwZWQsICIgKGRlbGV0ZWQpIiBpcyBhcHBlbmVkZWQgdG8gdGhlIHBhdGguCisKKworNS0zLiBDb250cm9sbGVyIEZpbGUgQ29udmVudGlvbnMKKworNS0zLTEuIEZvcm1hdAorCitJbiBnZW5lcmFsLCBhbGwgY29udHJvbGxlciBmaWxlcyBzaG91bGQgYmUgaW4gb25lIG9mIHRoZSBmb2xsb3dpbmcKK2Zvcm1hdHMgd2hlbmV2ZXIgcG9zc2libGUuCisKKy0gVmFsdWVzIG9ubHkgZmlsZXMKKworICBWQUwwIFZBTDEuLi5cbgorCistIEZsYXQga2V5ZWQgZmlsZXMKKworICBLRVkwIFZBTDBcbgorICBLRVkxIFZBTDFcbgorICAuLi4KKworLSBOZXN0ZWQga2V5ZWQgZmlsZXMKKworICBLRVkwIFNVQl9LRVkwPVZBTDAwIFNVQl9LRVkxPVZBTDAxLi4uCisgIEtFWTEgU1VCX0tFWTA9VkFMMTAgU1VCX0tFWTE9VkFMMTEuLi4KKyAgLi4uCisKK0ZvciBhIHdyaXRlYWJsZSBmaWxlLCB0aGUgZm9ybWF0IGZvciB3cml0aW5nIHNob3VsZCBnZW5lcmFsbHkgbWF0Y2gKK3JlYWRpbmc7IGhvd2V2ZXIsIGNvbnRyb2xsZXJzIG1heSBhbGxvdyBvbWl0dGluZyBsYXRlciBmaWVsZHMgb3IKK2ltcGxlbWVudCByZXN0cmljdGVkIHNob3J0Y3V0cyBmb3IgbW9zdCBjb21tb24gdXNlIGNhc2VzLgorCitGb3IgYm90aCBmbGF0IGFuZCBuZXN0ZWQga2V5ZWQgZmlsZXMsIG9ubHkgdGhlIHZhbHVlcyBmb3IgYSBzaW5nbGUga2V5CitjYW4gYmUgd3JpdHRlbiBhdCBhIHRpbWUuICBGb3IgbmVzdGVkIGtleWVkIGZpbGVzLCB0aGUgc3ViIGtleSBwYWlycworbWF5IGJlIHNwZWNpZmllZCBpbiBhbnkgb3JkZXIgYW5kIG5vdCBhbGwgcGFpcnMgaGF2ZSB0byBiZSBzcGVjaWZpZWQuCisKKworNS0zLTIuIENvbnRyb2wgS25vYnMKKworLSBTZXR0aW5ncyBmb3IgYSBzaW5nbGUgZmVhdHVyZSBzaG91bGQgZ2VuZXJhbGx5IGJlIGltcGxlbWVudGVkIGluIGEKKyAgc2luZ2xlIGZpbGUuCisKKy0gSW4gZ2VuZXJhbCwgdGhlIHJvb3QgY2dyb3VwIHNob3VsZCBiZSBleGVtcHQgZnJvbSByZXNvdXJjZSBjb250cm9sCisgIGFuZCB0aHVzIHNob3VsZG4ndCBoYXZlIHJlc291cmNlIGNvbnRyb2wga25vYnMuCisKKy0gSWYgYSBjb250cm9sbGVyIGltcGxlbWVudHMgcmF0aW8gYmFzZWQgcmVzb3VyY2UgZGlzdHJpYnV0aW9uLCB0aGUKKyAgY29udHJvbCBrbm9iIHNob3VsZCBiZSBuYW1lZCAid2VpZ2h0IiBhbmQgaGF2ZSB0aGUgcmFuZ2UgWzEsIDEwMDAwXQorICBhbmQgMTAwIHNob3VsZCBiZSB0aGUgZGVmYXVsdCB2YWx1ZS4gIFRoZSB2YWx1ZXMgYXJlIGNob3NlbiB0byBhbGxvdworICBlbm91Z2ggYW5kIHN5bW1ldHJpYyBiaWFzIGluIGJvdGggZGlyZWN0aW9ucyB3aGlsZSBrZWVwaW5nIGl0CisgIGludHVpdGl2ZSAodGhlIGRlZmF1bHQgaXMgMTAwJSkuCisKKy0gSWYgYSBjb250cm9sbGVyIGltcGxlbWVudHMgYW4gYWJzb2x1dGUgcmVzb3VyY2UgZ3VhcmFudGVlIGFuZC9vcgorICBsaW1pdCwgdGhlIGNvbnRyb2wga25vYnMgc2hvdWxkIGJlIG5hbWVkICJtaW4iIGFuZCAibWF4IgorICByZXNwZWN0aXZlbHkuICBJZiBhIGNvbnRyb2xsZXIgaW1wbGVtZW50cyBiZXN0IGVmZm9ydCByZXNvdXJjZQorICBndXJhbnRlZSBhbmQvb3IgbGltaXQsIHRoZSBjb250cm9sIGtub2JzIHNob3VsZCBiZSBuYW1lZCAibG93IiBhbmQKKyAgImhpZ2giIHJlc3BlY3RpdmVseS4KKworICBJbiB0aGUgYWJvdmUgZm91ciBjb250cm9sIGZpbGVzLCB0aGUgc3BlY2lhbCB0b2tlbiAibWF4IiBzaG91bGQgYmUKKyAgdXNlZCB0byByZXByZXNlbnQgdXB3YXJkIGluZmluaXR5IGZvciBib3RoIHJlYWRpbmcgYW5kIHdyaXRpbmcuCisKKy0gSWYgYSBzZXR0aW5nIGhhcyBjb25maWd1cmFibGUgZGVmYXVsdCB2YWx1ZSBhbmQgc3BlY2lmaWMgb3ZlcnJpZGVzLAorICB0aGUgZGVmYXVsdCBzZXR0aW5ncyBzaG91bGQgYmUga2V5ZWQgd2l0aCAiZGVmYXVsdCIgYW5kIGFwcGVhciBhcworICB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIGZpbGUuICBTcGVjaWZpYyBlbnRyaWVzIGNhbiB1c2UgImRlZmF1bHQiIGFzCisgIGl0cyB2YWx1ZSB0byBpbmRpY2F0ZSBpbmhlcml0YW5jZSBvZiB0aGUgZGVmYXVsdCB2YWx1ZS4KKworLSBGb3IgZXZlbnRzIHdoaWNoIGFyZSBub3QgdmVyeSBoaWdoIGZyZXF1ZW5jeSwgYW4gaW50ZXJmYWNlIGZpbGUKKyAgImV2ZW50cyIgc2hvdWxkIGJlIGNyZWF0ZWQgd2hpY2ggbGlzdHMgZXZlbnQga2V5IHZhbHVlIHBhaXJzLgorICBXaGVuZXZlciBhIG5vdGlmaWFibGUgZXZlbnQgaGFwcGVucywgZmlsZSBtb2RpZmllZCBldmVudCBzaG91bGQgYmUKKyAgZ2VuZXJhdGVkIG9uIHRoZSBmaWxlLgorCisKKzUtNC4gUGVyLUNvbnRyb2xsZXIgQ2hhbmdlcworCis1LTQtMS4gaW8KKworLSBibGtpbyBpcyByZW5hbWVkIHRvIGlvLiAgVGhlIGludGVyZmFjZSBpcyBvdmVyaGF1bGVkIGFueXdheS4gIFRoZQorICBuZXcgbmFtZSBpcyBtb3JlIGluIGxpbmUgd2l0aCB0aGUgb3RoZXIgdHdvIG1ham9yIGNvbnRyb2xsZXJzLCBjcHUKKyAgYW5kIG1lbW9yeSwgYW5kIGJldHRlciBzdWl0ZWQgZ2l2ZW4gdGhhdCBpdCBtYXkgYmUgdXNlZCBmb3IgY2dyb3VwCisgIHdyaXRlYmFjayB3aXRob3V0IGludm9sdmluZyBibG9jayBsYXllci4KKworLSBFdmVyeXRoaW5nIGluY2x1ZGluZyBzdGF0IGlzIGFsd2F5cyBoaWVyYXJjaGljYWwgbWFraW5nIHNlcGFyYXRlCisgIHJlY3Vyc2l2ZSBzdGF0IGZpbGVzIHBvaW50bGVzcyBhbmQsIGFzIG5vIGludGVybmFsIG5vZGUgY2FuIGhhdmUKKyAgdGFza3MsIGxlYWYgd2VpZ2h0cyBhcmUgbWVhbmluZ2xlc3MuICBUaGUgb3BlcmF0aW9uIG1vZGVsIGlzCisgIHNpbXBsaWZpZWQgYW5kIHRoZSBpbnRlcmZhY2UgaXMgb3ZlcmhhdWxlZCBhY2NvcmRpbmdseS4KKworICBpby5zdGF0CisKKwlUaGUgc3RhdCBmaWxlLiAgVGhlIHJlcG9ydGVkIHN0YXRzIGFyZSBmcm9tIHRoZSBwb2ludCB3aGVyZQorCWJpbydzIGFyZSBpc3N1ZWQgdG8gcmVxdWVzdF9xdWV1ZS4gIFRoZSBzdGF0cyBhcmUgY291bnRlZAorCWluZGVwZW5kZW50IG9mIHdoaWNoIHBvbGljaWVzIGFyZSBlbmFibGVkLiAgRWFjaCBsaW5lIGluIHRoZQorCWZpbGUgZm9sbG93cyB0aGUgZm9sbG93aW5nIGZvcm1hdC4gIE1vcmUgZmllbGRzIG1heSBsYXRlciBiZQorCWFkZGVkIGF0IHRoZSBlbmQuCisKKwkgICRNQUo6JE1JTiByYnl0ZXM9JFJCWVRFUyB3Ynl0ZXM9JFdCWVRFUyByaW9zPSRSSU9TIHdyaW9zPSRXSU9TCisKKyAgaW8ud2VpZ2h0CisKKwlUaGUgd2VpZ2h0IHNldHRpbmcsIGN1cnJlbnRseSBvbmx5IGF2YWlsYWJsZSBhbmQgZWZmZWN0aXZlIGlmCisJY2ZxLWlvc2NoZWQgaXMgaW4gdXNlIGZvciB0aGUgdGFyZ2V0IGRldmljZS4gIFRoZSB3ZWlnaHQgaXMKKwliZXR3ZWVuIDEgYW5kIDEwMDAwIGFuZCBkZWZhdWx0cyB0byAxMDAuICBUaGUgZmlyc3QgbGluZQorCWFsd2F5cyBjb250YWlucyB0aGUgZGVmYXVsdCB3ZWlnaHQgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQgdG8KKwl1c2Ugd2hlbiBwZXItZGV2aWNlIHNldHRpbmcgaXMgbWlzc2luZy4KKworCSAgZGVmYXVsdCAkV0VJR0hUCisKKwlTdWJzZXF1ZW50IGxpbmVzIGxpc3QgcGVyLWRldmljZSB3ZWlnaHRzIG9mIHRoZSBmb2xsb3dpbmcKKwlmb3JtYXQuCisKKwkgICRNQUo6JE1JTiAkV0VJR0hUCisKKwlXcml0aW5nICIkV0VJR0hUIiBvciAiZGVmYXVsdCAkV0VJR0hUIiBjaGFuZ2VzIHRoZSBkZWZhdWx0CisJc2V0dGluZy4gIFdyaXRpbmcgIiRNQUo6JE1JTiAkV0VJR0hUIiBzZXRzIHBlci1kZXZpY2Ugd2VpZ2h0CisJd2hpbGUgIiRNQUo6JE1JTiBkZWZhdWx0IiBjbGVhcnMgaXQuCisKKwlUaGlzIGZpbGUgaXMgYXZhaWxhYmxlIG9ubHkgb24gbm9uLXJvb3QgY2dyb3Vwcy4KKworICBpby5tYXgKKworCVRoZSBtYXhpbXVtIGJhbmR3aWR0aCBhbmQvb3IgaW9wcyBzZXR0aW5nLCBvbmx5IGF2YWlsYWJsZSBpZgorCWJsay10aHJvdHRsZSBpcyBlbmFibGVkLiAgVGhlIGZpbGUgaXMgb2YgdGhlIGZvbGxvd2luZyBmb3JtYXQuCisKKwkgICRNQUo6JE1JTiByYnBzPSRSQlBTIHdicHM9JFdCUFMgcmlvcHM9JFJJT1BTIHdpb3BzPSRXSU9QUworCisJJHtSfFd9QlBTIGFyZSByZWFkL3dyaXRlIGJ5dGVzIHBlciBzZWNvbmQgYW5kICR7UnxXfUlPUFMgYXJlCisJcmVhZC93cml0ZSBJT3MgcGVyIHNlY29uZC4gICJtYXgiIGluZGljYXRlcyBubyBsaW1pdC4gIFdyaXRpbmcKKwl0byB0aGUgZmlsZSBmb2xsb3dzIHRoZSBzYW1lIGZvcm1hdCBidXQgdGhlIGluZGl2aWR1YWwKKwlzZXR0aW5ncyBtYXkgYmUgb21pdHRlZCBvciBzcGVjaWZpZWQgaW4gYW55IG9yZGVyLgorCisJVGhpcyBmaWxlIGlzIGF2YWlsYWJsZSBvbmx5IG9uIG5vbi1yb290IGNncm91cHMuCisKKworNS00LTIuIGNwdXNldAorCistIFRhc2tzIGFyZSBrZXB0IGluIGVtcHR5IGNwdXNldHMgYWZ0ZXIgaG90cGx1ZyBhbmQgdGFrZSBvbiB0aGUgbWFza3MKKyAgb2YgdGhlIG5lYXJlc3Qgbm9uLWVtcHR5IGFuY2VzdG9yLCBpbnN0ZWFkIG9mIGJlaW5nIG1vdmVkIHRvIGl0LgorCistIEEgdGFzayBjYW4gYmUgbW92ZWQgaW50byBhbiBlbXB0eSBjcHVzZXQsIGFuZCBhZ2FpbiBpdCB0YWtlcyBvbiB0aGUKKyAgbWFza3Mgb2YgdGhlIG5lYXJlc3Qgbm9uLWVtcHR5IGFuY2VzdG9yLgorCisKKzUtNC0zLiBtZW1vcnkKKworLSB1c2VfaGllcmFyY2h5IGlzIG9uIGJ5IGRlZmF1bHQgYW5kIHRoZSBjZ3JvdXAgZmlsZSBmb3IgdGhlIGZsYWcgaXMKKyAgbm90IGNyZWF0ZWQuCisKKy0gVGhlIG9yaWdpbmFsIGxvd2VyIGJvdW5kYXJ5LCB0aGUgc29mdCBsaW1pdCwgaXMgZGVmaW5lZCBhcyBhIGxpbWl0CisgIHRoYXQgaXMgcGVyIGRlZmF1bHQgdW5zZXQuICBBcyBhIHJlc3VsdCwgdGhlIHNldCBvZiBjZ3JvdXBzIHRoYXQKKyAgZ2xvYmFsIHJlY2xhaW0gcHJlZmVycyBpcyBvcHQtaW4sIHJhdGhlciB0aGFuIG9wdC1vdXQuICBUaGUgY29zdHMKKyAgZm9yIG9wdGltaXppbmcgdGhlc2UgbW9zdGx5IG5lZ2F0aXZlIGxvb2t1cHMgYXJlIHNvIGhpZ2ggdGhhdCB0aGUKKyAgaW1wbGVtZW50YXRpb24sIGRlc3BpdGUgaXRzIGVub3Jtb3VzIHNpemUsIGRvZXMgbm90IGV2ZW4gcHJvdmlkZSB0aGUKKyAgYmFzaWMgZGVzaXJhYmxlIGJlaGF2aW9yLiAgRmlyc3Qgb2ZmLCB0aGUgc29mdCBsaW1pdCBoYXMgbm8KKyAgaGllcmFyY2hpY2FsIG1lYW5pbmcuICBBbGwgY29uZmlndXJlZCBncm91cHMgYXJlIG9yZ2FuaXplZCBpbiBhCisgIGdsb2JhbCByYnRyZWUgYW5kIHRyZWF0ZWQgbGlrZSBlcXVhbCBwZWVycywgcmVnYXJkbGVzcyB3aGVyZSB0aGV5CisgIGFyZSBsb2NhdGVkIGluIHRoZSBoaWVyYXJjaHkuICBUaGlzIG1ha2VzIHN1YnRyZWUgZGVsZWdhdGlvbgorICBpbXBvc3NpYmxlLiAgU2Vjb25kLCB0aGUgc29mdCBsaW1pdCByZWNsYWltIHBhc3MgaXMgc28gYWdncmVzc2l2ZQorICB0aGF0IGl0IG5vdCBqdXN0IGludHJvZHVjZXMgaGlnaCBhbGxvY2F0aW9uIGxhdGVuY2llcyBpbnRvIHRoZQorICBzeXN0ZW0sIGJ1dCBhbHNvIGltcGFjdHMgc3lzdGVtIHBlcmZvcm1hbmNlIGR1ZSB0byBvdmVycmVjbGFpbSwgdG8KKyAgdGhlIHBvaW50IHdoZXJlIHRoZSBmZWF0dXJlIGJlY29tZXMgc2VsZi1kZWZlYXRpbmcuCisKKyAgVGhlIG1lbW9yeS5sb3cgYm91bmRhcnkgb24gdGhlIG90aGVyIGhhbmQgaXMgYSB0b3AtZG93biBhbGxvY2F0ZWQKKyAgcmVzZXJ2ZS4gIEEgY2dyb3VwIGVuam95cyByZWNsYWltIHByb3RlY3Rpb24gd2hlbiBpdCBhbmQgYWxsIGl0cworICBhbmNlc3RvcnMgYXJlIGJlbG93IHRoZWlyIGxvdyBib3VuZGFyaWVzLCB3aGljaCBtYWtlcyBkZWxlZ2F0aW9uIG9mCisgIHN1YnRyZWVzIHBvc3NpYmxlLiAgU2Vjb25kbHksIG5ldyBjZ3JvdXBzIGhhdmUgbm8gcmVzZXJ2ZSBwZXIKKyAgZGVmYXVsdCBhbmQgaW4gdGhlIGNvbW1vbiBjYXNlIG1vc3QgY2dyb3VwcyBhcmUgZWxpZ2libGUgZm9yIHRoZQorICBwcmVmZXJyZWQgcmVjbGFpbSBwYXNzLiAgVGhpcyBhbGxvd3MgdGhlIG5ldyBsb3cgYm91bmRhcnkgdG8gYmUKKyAgZWZmaWNpZW50bHkgaW1wbGVtZW50ZWQgd2l0aCBqdXN0IGEgbWlub3IgYWRkaXRpb24gdG8gdGhlIGdlbmVyaWMKKyAgcmVjbGFpbSBjb2RlLCB3aXRob3V0IHRoZSBuZWVkIGZvciBvdXQtb2YtYmFuZCBkYXRhIHN0cnVjdHVyZXMgYW5kCisgIHJlY2xhaW0gcGFzc2VzLiAgQmVjYXVzZSB0aGUgZ2VuZXJpYyByZWNsYWltIGNvZGUgY29uc2lkZXJzIGFsbAorICBjZ3JvdXBzIGV4Y2VwdCBmb3IgdGhlIG9uZXMgcnVubmluZyBsb3cgaW4gdGhlIHByZWZlcnJlZCBmaXJzdAorICByZWNsYWltIHBhc3MsIG92ZXJyZWNsYWltIG9mIGluZGl2aWR1YWwgZ3JvdXBzIGlzIGVsaW1pbmF0ZWQgYXMKKyAgd2VsbCwgcmVzdWx0aW5nIGluIG11Y2ggYmV0dGVyIG92ZXJhbGwgd29ya2xvYWQgcGVyZm9ybWFuY2UuCisKKy0gVGhlIG9yaWdpbmFsIGhpZ2ggYm91bmRhcnksIHRoZSBoYXJkIGxpbWl0LCBpcyBkZWZpbmVkIGFzIGEgc3RyaWN0CisgIGxpbWl0IHRoYXQgY2FuIG5vdCBidWRnZSwgZXZlbiBpZiB0aGUgT09NIGtpbGxlciBoYXMgdG8gYmUgY2FsbGVkLgorICBCdXQgdGhpcyBnZW5lcmFsbHkgZ29lcyBhZ2FpbnN0IHRoZSBnb2FsIG9mIG1ha2luZyB0aGUgbW9zdCBvdXQgb2YKKyAgdGhlIGF2YWlsYWJsZSBtZW1vcnkuICBUaGUgbWVtb3J5IGNvbnN1bXB0aW9uIG9mIHdvcmtsb2FkcyB2YXJpZXMKKyAgZHVyaW5nIHJ1bnRpbWUsIGFuZCB0aGF0IHJlcXVpcmVzIHVzZXJzIHRvIG92ZXJjb21taXQuICBCdXQgZG9pbmcKKyAgdGhhdCB3aXRoIGEgc3RyaWN0IHVwcGVyIGxpbWl0IHJlcXVpcmVzIGVpdGhlciBhIGZhaXJseSBhY2N1cmF0ZQorICBwcmVkaWN0aW9uIG9mIHRoZSB3b3JraW5nIHNldCBzaXplIG9yIGFkZGluZyBzbGFjayB0byB0aGUgbGltaXQuCisgIFNpbmNlIHdvcmtpbmcgc2V0IHNpemUgZXN0aW1hdGlvbiBpcyBoYXJkIGFuZCBlcnJvciBwcm9uZSwgYW5kCisgIGdldHRpbmcgaXQgd3JvbmcgcmVzdWx0cyBpbiBPT00ga2lsbHMsIG1vc3QgdXNlcnMgdGVuZCB0byBlcnIgb24gdGhlCisgIHNpZGUgb2YgYSBsb29zZXIgbGltaXQgYW5kIGVuZCB1cCB3YXN0aW5nIHByZWNpb3VzIHJlc291cmNlcy4KKworICBUaGUgbWVtb3J5LmhpZ2ggYm91bmRhcnkgb24gdGhlIG90aGVyIGhhbmQgY2FuIGJlIHNldCBtdWNoIG1vcmUKKyAgY29uc2VydmF0aXZlbHkuICBXaGVuIGhpdCwgaXQgdGhyb3R0bGVzIGFsbG9jYXRpb25zIGJ5IGZvcmNpbmcgdGhlbQorICBpbnRvIGRpcmVjdCByZWNsYWltIHRvIHdvcmsgb2ZmIHRoZSBleGNlc3MsIGJ1dCBpdCBuZXZlciBpbnZva2VzIHRoZQorICBPT00ga2lsbGVyLiAgQXMgYSByZXN1bHQsIGEgaGlnaCBib3VuZGFyeSB0aGF0IGlzIGNob3NlbiB0b28KKyAgYWdncmVzc2l2ZWx5IHdpbGwgbm90IHRlcm1pbmF0ZSB0aGUgcHJvY2Vzc2VzLCBidXQgaW5zdGVhZCBpdCB3aWxsCisgIGxlYWQgdG8gZ3JhZHVhbCBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbi4gIFRoZSB1c2VyIGNhbiBtb25pdG9yIHRoaXMKKyAgYW5kIG1ha2UgY29ycmVjdGlvbnMgdW50aWwgdGhlIG1pbmltYWwgbWVtb3J5IGZvb3RwcmludCB0aGF0IHN0aWxsCisgIGdpdmVzIGFjY2VwdGFibGUgcGVyZm9ybWFuY2UgaXMgZm91bmQuCisKKyAgSW4gZXh0cmVtZSBjYXNlcywgd2l0aCBtYW55IGNvbmN1cnJlbnQgYWxsb2NhdGlvbnMgYW5kIGEgY29tcGxldGUKKyAgYnJlYWtkb3duIG9mIHJlY2xhaW0gcHJvZ3Jlc3Mgd2l0aGluIHRoZSBncm91cCwgdGhlIGhpZ2ggYm91bmRhcnkKKyAgY2FuIGJlIGV4Y2VlZGVkLiAgQnV0IGV2ZW4gdGhlbiBpdCdzIG1vc3RseSBiZXR0ZXIgdG8gc2F0aXNmeSB0aGUKKyAgYWxsb2NhdGlvbiBmcm9tIHRoZSBzbGFjayBhdmFpbGFibGUgaW4gb3RoZXIgZ3JvdXBzIG9yIHRoZSByZXN0IG9mCisgIHRoZSBzeXN0ZW0gdGhhbiBraWxsaW5nIHRoZSBncm91cC4gIE90aGVyd2lzZSwgbWVtb3J5Lm1heCBpcyB0aGVyZQorICB0byBsaW1pdCB0aGlzIHR5cGUgb2Ygc3BpbGxvdmVyIGFuZCB1bHRpbWF0ZWx5IGNvbnRhaW4gYnVnZ3kgb3IgZXZlbgorICBtYWxpY2lvdXMgYXBwbGljYXRpb25zLgorCistIFRoZSBvcmlnaW5hbCBjb250cm9sIGZpbGUgbmFtZXMgYXJlIHVud2llbGR5IGFuZCBpbmNvbnNpc3RlbnQgaW4KKyAgbWFueSBkaWZmZXJlbnQgd2F5cy4gIEZvciBleGFtcGxlLCB0aGUgdXBwZXIgYm91bmRhcnkgaGl0IGNvdW50IGlzCisgIGV4cG9ydGVkIGluIHRoZSBtZW1vcnkuZmFpbGNudCBmaWxlLCBidXQgYW4gT09NIGV2ZW50IGNvdW50IGhhcyB0bworICBiZSBtYW51YWxseSBjb3VudGVkIGJ5IGxpc3RlbmluZyB0byBtZW1vcnkub29tX2NvbnRyb2wgZXZlbnRzLCBhbmQKKyAgbG93ZXIgYm91bmRhcnkgLyBzb2Z0IGxpbWl0IGV2ZW50cyBoYXZlIHRvIGJlIGNvdW50ZWQgYnkgZmlyc3QKKyAgc2V0dGluZyBhIHRocmVzaG9sZCBmb3IgdGhhdCB2YWx1ZSBhbmQgdGhlbiBjb3VudGluZyB0aG9zZSBldmVudHMuCisgIEFsc28sIHVzYWdlIGFuZCBsaW1pdCBmaWxlcyBlbmNvZGUgdGhlaXIgdW5pdHMgaW4gdGhlIGZpbGVuYW1lLgorICBUaGF0IG1ha2VzIHRoZSBmaWxlbmFtZXMgdmVyeSBsb25nLCBldmVuIHRob3VnaCB0aGlzIGlzIG5vdAorICBpbmZvcm1hdGlvbiB0aGF0IGEgdXNlciBuZWVkcyB0byBiZSByZW1pbmRlZCBvZiBldmVyeSB0aW1lIHRoZXkgdHlwZQorICBvdXQgdGhvc2UgbmFtZXMuCisKKyAgVG8gYWRkcmVzcyB0aGVzZSBuYW1pbmcgaXNzdWVzLCBhcyB3ZWxsIGFzIHRvIHNpZ25hbCBjbGVhcmx5IHRoYXQKKyAgdGhlIG5ldyBpbnRlcmZhY2UgY2FycmllcyBhIG5ldyBjb25maWd1cmF0aW9uIG1vZGVsLCB0aGUgbmFtaW5nCisgIGNvbnZlbnRpb25zIGluIGl0IG5lY2Vzc2FyaWx5IGRpZmZlciBmcm9tIHRoZSBvbGQgaW50ZXJmYWNlLgorCistIFRoZSBvcmlnaW5hbCBsaW1pdCBmaWxlcyBpbmRpY2F0ZSB0aGUgc3RhdGUgb2YgYW4gdW5zZXQgbGltaXQgd2l0aCBhCisgIFZlcnkgSGlnaCBOdW1iZXIsIGFuZCBhIGNvbmZpZ3VyZWQgbGltaXQgY2FuIGJlIHVuc2V0IGJ5IGVjaG9pbmcgLTEKKyAgaW50byB0aG9zZSBmaWxlcy4gIEJ1dCB0aGF0IHZlcnkgaGlnaCBudW1iZXIgaXMgaW1wbGVtZW50YXRpb24gYW5kCisgIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQgYW5kIG5vdCB2ZXJ5IGRlc2NyaXB0aXZlLiAgQW5kIHdoaWxlIC0xIGNhbgorICBiZSB1bmRlcnN0b29kIGFzIGFuIHVuZGVyZmxvdyBpbnRvIHRoZSBoaWdoZXN0IHBvc3NpYmxlIHZhbHVlLCAtMiBvcgorICAtMTBNIGV0Yy4gZG8gbm90IHdvcmssIHNvIGl0J3Mgbm90IGNvbnNpc3RlbnQuCisKKyAgbWVtb3J5LmxvdywgbWVtb3J5LmhpZ2gsIGFuZCBtZW1vcnkubWF4IHdpbGwgdXNlIHRoZSBzdHJpbmcgIm1heCIgdG8KKyAgaW5kaWNhdGUgYW5kIHNldCB0aGUgaGlnaGVzdCBwb3NzaWJsZSB2YWx1ZS4KKworNi4gUGxhbm5lZCBDaGFuZ2VzCisKKzYtMS4gQ0FQIGZvciByZXNvdXJjZSBjb250cm9sCisKK1VuaWZpZWQgaGllcmFyY2h5IHdpbGwgcmVxdWlyZSBvbmUgb2YgdGhlIGNhcGFiaWxpdGllcyg3KSwgd2hpY2ggaXMKK3lldCB0byBiZSBkZWNpZGVkLCBmb3IgYWxsIHJlc291cmNlIGNvbnRyb2wgcmVsYXRlZCBrbm9icy4gIFByb2Nlc3MKK29yZ2FuaXphdGlvbiBvcGVyYXRpb25zIC0gY3JlYXRpb24gb2Ygc3ViLWNncm91cHMgYW5kIG1pZ3JhdGlvbiBvZgorcHJvY2Vzc2VzIGluIHN1Yi1oaWVyYXJjaGllcyBtYXkgYmUgZGVsZWdhdGVkIGJ5IGNoYW5naW5nIHRoZQorb3duZXJzaGlwIGFuZC9vciBwZXJtaXNzaW9ucyBvbiB0aGUgY2dyb3VwIGRpcmVjdG9yeSBhbmQKKyJjZ3JvdXAucHJvY3MiIGludGVyZmFjZSBmaWxlOyBob3dldmVyLCBhbGwgb3BlcmF0aW9ucyB3aGljaCBhZmZlY3QKK3Jlc291cmNlIGNvbnRyb2wgLSB3cml0ZXMgdG8gYSAiY2dyb3VwLnN1YnRyZWVfY29udHJvbCIgZmlsZSBvciBhbnkKK2NvbnRyb2xsZXItc3BlY2lmaWMga25vYnMgLSB3aWxsIHJlcXVpcmUgYW4gZXhwbGljaXQgQ0FQIHByaXZpbGVnZS4KKworVGhpcywgaW4gcGFydCwgaXMgdG8gcHJldmVudCB0aGUgY2dyb3VwIGludGVyZmFjZSBmcm9tIGJlaW5nCitpbmFkdmVydGVudGx5IHByb21vdGVkIHRvIHByb2dyYW1tYWJsZSBBUEkgdXNlZCBieSBub24tcHJpdmlsZWdlZAorYmluYXJpZXMuICBjZ3JvdXAgZXhwb3NlcyB2YXJpb3VzIGFzcGVjdHMgb2YgdGhlIHN5c3RlbSBpbiB3YXlzIHdoaWNoCithcmVuJ3QgcHJvcGVybHkgYWJzdHJhY3RlZCBmb3IgZGlyZWN0IGNvbnN1bXB0aW9uIGJ5IHJlZ3VsYXIgcHJvZ3JhbXMuCitUaGlzIGlzIGFuIGFkbWluaXN0cmF0aW9uIGludGVyZmFjZSBtdWNoIGNsb3NlciB0byBzeXNjdGwga25vYnMgdGhhbgorc3lzdGVtIGNhbGxzLiAgRXZlbiB0aGUgYmFzaWMgYWNjZXNzIG1vZGVsLCBiZWluZyBmaWxlc3lzdGVtIHBhdGgKK2Jhc2VkLCBpc24ndCBzdWl0YWJsZSBmb3IgZGlyZWN0IGNvbnN1bXB0aW9uLiAgVGhlcmUncyBubyB3YXkgdG8KK2FjY2VzcyAibXkgY2dyb3VwIiBpbiBhIHJhY2UtZnJlZSB3YXkgb3IgbWFrZSBtdWx0aXBsZSBvcGVyYXRpb25zCithdG9taWMgYWdhaW5zdCBtaWdyYXRpb24gdG8gYW5vdGhlciBjZ3JvdXAuCisKK0Fub3RoZXIgYXNwZWN0IGlzIHRoYXQsIGZvciBiZXR0ZXIgb3IgZm9yIHdvcnNlLCB0aGUgY2dyb3VwIGludGVyZmFjZQorZ29lcyB0aHJvdWdoIGZhciBsZXNzIHNjcnV0aW55IHRoYW4gcmVndWxhciBpbnRlcmZhY2VzIGZvcgordW5wcml2aWxlZ2VkIHVzZXJsYW5kLiAgVGhlIHVwc2lkZSBpcyB0aGF0IGNncm91cCBpcyBhYmxlIHRvIGV4cG9zZQordXNlZnVsIGZlYXR1cmVzIHdoaWNoIG1heSBub3QgYmUgc3VpdGFibGUgZm9yIGdlbmVyYWwgY29uc3VtcHRpb24gaW4gYQorcmVhc29uYWJsZSB0aW1lIGZyYW1lLiAgSXQgcHJvdmlkZXMgYSByZWxhdGl2ZWx5IHNob3J0IHBhdGggYmV0d2VlbgoraW50ZXJuYWwgZGV0YWlscyBhbmQgdXNlcmxhbmQtdmlzaWJsZSBpbnRlcmZhY2UuICBPZiBjb3Vyc2UsIHRoaXMKK3Nob3J0Y3V0IGNvbWVzIHdpdGggaGlnaCByaXNrLiAgV2UgZ28gdGhyb3VnaCB3aGF0IHdlIGdvIHRocm91Z2ggZm9yCitnZW5lcmFsIGtlcm5lbCBBUElzIGZvciBnb29kIHJlYXNvbnMuICBJdCBtYXkgZW5kIHVwIGxlYWtpbmcgaW50ZXJuYWwKK2RldGFpbHMgaW4gYSB3YXkgd2hpY2ggY2FuIGV4ZXJ0IHNpZ25pZmljYW50IHBhaW4gYnkgbG9ja2luZyB0aGUKK2tlcm5lbCBpbnRvIGEgY29udHJhY3QgdGhhdCBjYW4ndCBiZSBtYWludGFpbmVkIGluIGEgcmVhc29uYWJsZQorbWFubmVyLgorCitBbHNvLCBkdWUgdG8gdGhlIHNwZWNpZmljIG5hdHVyZSwgY2dyb3VwIGFuZCBpdHMgY29udHJvbGxlcnMgZG9uJ3QKK3RlbmQgdG8gYXR0cmFjdCBhdHRlbnRpb24gZnJvbSBhIHdpZGUgc2NvcGUgb2YgZGV2ZWxvcGVycy4gIGNncm91cCdzCitzaG9ydCBoaXN0b3J5IGlzIGFscmVhZHkgZnJhdWdodCB3aXRoIHNldmVyZWx5IG1pcy1kZXNpZ25lZAoraW50ZXJmYWNlcywgdW5uZWNlc3NhcnkgY29tbWl0bWVudHMgdG8gYW5kIGV4cG9zaW5nIG9mIGludGVybmFsCitkZXRhaWxzLCBicm9rZW4gYW5kIGRhbmdlcm91cyBpbXBsZW1lbnRhdGlvbnMgb2YgdmFyaW91cyBmZWF0dXJlcy4KKworS2VlcGluZyBjZ3JvdXAgYXMgYW4gYWRtaW5pc3RyYXRpb24gaW50ZXJmYWNlIGlzIGJvdGggYWR2YW50YWdlb3VzIGZvcgoraXRzIHJvbGUgYW5kIGltcGVyYXRpdmUgZ2l2ZW4gaXRzIG5hdHVyZS4gIFNvbWUgb2YgdGhlIGNncm91cCBmZWF0dXJlcworbWF5IG1ha2Ugc2Vuc2UgZm9yIHVucHJpdmlsZWdlZCBhY2Nlc3MuICBJZiBkZWVtZWQganVzdGlmaWVkLCB0aG9zZQorbXVzdCBiZSBmdXJ0aGVyIGFic3RyYWN0ZWQgYW5kIGltcGxlbWVudGVkIGFzIGEgZGlmZmVyZW50IGludGVyZmFjZSwKK2JlIGl0IGEgc3lzdGVtIGNhbGwgb3IgcHJvY2Vzcy1wcml2YXRlIGZpbGVzeXN0ZW0sIGFuZCBzdXJ2aXZlIHRocm91Z2gKK3RoZSBzY3J1dGlueSB0aGF0IGFueSBpbnRlcmZhY2UgZm9yIGdlbmVyYWwgY29uc3VtcHRpb24gaXMgcmVxdWlyZWQgdG8KK2dvIHRocm91Z2guCisKK1JlcXVpcmluZyBDQVAgaXMgbm90IGEgY29tcGxldGUgc29sdXRpb24gYnV0IHNob3VsZCBzZXJ2ZSBhcyBhCitzaWduaWZpY2FudCBkZXRlcnJlbnQgYWdhaW5zdCBzcHJheWluZyBjZ3JvdXAgdXNhZ2VzIGluIG5vbi1wcml2aWxlZ2VkCitwcm9ncmFtcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY2lyY3VsYXItYnVmZmVycy50eHQgYi9Eb2N1bWVudGF0aW9uL2NpcmN1bGFyLWJ1ZmZlcnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4OTUxYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2NpcmN1bGFyLWJ1ZmZlcnMudHh0CkBAIC0wLDAgKzEsMjQzIEBACisJCQkgICAgICAgPT09PT09PT09PT09PT09PQorCQkJICAgICAgIENJUkNVTEFSIEJVRkZFUlMKKwkJCSAgICAgICA9PT09PT09PT09PT09PT09CisKK0J5OiBEYXZpZCBIb3dlbGxzIDxkaG93ZWxsc0ByZWRoYXQuY29tPgorICAgIFBhdWwgRS4gTWNLZW5uZXkgPHBhdWxtY2tAbGludXgudm5ldC5pYm0uY29tPgorCisKK0xpbnV4IHByb3ZpZGVzIGEgbnVtYmVyIG9mIGZlYXR1cmVzIHRoYXQgY2FuIGJlIHVzZWQgdG8gaW1wbGVtZW50IGNpcmN1bGFyCitidWZmZXJpbmcuICBUaGVyZSBhcmUgdHdvIHNldHMgb2Ygc3VjaCBmZWF0dXJlczoKKworICgxKSBDb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yIGRldGVybWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHBvd2VyLW9mLTIgc2l6ZWQKKyAgICAgYnVmZmVycy4KKworICgyKSBNZW1vcnkgYmFycmllcnMgZm9yIHdoZW4gdGhlIHByb2R1Y2VyIGFuZCB0aGUgY29uc3VtZXIgb2Ygb2JqZWN0cyBpbiB0aGUKKyAgICAgYnVmZmVyIGRvbid0IHdhbnQgdG8gc2hhcmUgYSBsb2NrLgorCitUbyB1c2UgdGhlc2UgZmFjaWxpdGllcywgYXMgZGlzY3Vzc2VkIGJlbG93LCB0aGVyZSBuZWVkcyB0byBiZSBqdXN0IG9uZQorcHJvZHVjZXIgYW5kIGp1c3Qgb25lIGNvbnN1bWVyLiAgSXQgaXMgcG9zc2libGUgdG8gaGFuZGxlIG11bHRpcGxlIHByb2R1Y2VycyBieQorc2VyaWFsaXNpbmcgdGhlbSwgYW5kIHRvIGhhbmRsZSBtdWx0aXBsZSBjb25zdW1lcnMgYnkgc2VyaWFsaXNpbmcgdGhlbS4KKworCitDb250ZW50czoKKworICgqKSBXaGF0IGlzIGEgY2lyY3VsYXIgYnVmZmVyPworCisgKCopIE1lYXN1cmluZyBwb3dlci1vZi0yIGJ1ZmZlcnMuCisKKyAoKikgVXNpbmcgbWVtb3J5IGJhcnJpZXJzIHdpdGggY2lyY3VsYXIgYnVmZmVycy4KKyAgICAgLSBUaGUgcHJvZHVjZXIuCisgICAgIC0gVGhlIGNvbnN1bWVyLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09CitXSEFUIElTIEEgQ0lSQ1VMQVIgQlVGRkVSPworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRmlyc3Qgb2YgYWxsLCB3aGF0IGlzIGEgY2lyY3VsYXIgYnVmZmVyPyAgQSBjaXJjdWxhciBidWZmZXIgaXMgYSBidWZmZXIgb2YKK2ZpeGVkLCBmaW5pdGUgc2l6ZSBpbnRvIHdoaWNoIHRoZXJlIGFyZSB0d28gaW5kaWNlczoKKworICgxKSBBICdoZWFkJyBpbmRleCAtIHRoZSBwb2ludCBhdCB3aGljaCB0aGUgcHJvZHVjZXIgaW5zZXJ0cyBpdGVtcyBpbnRvIHRoZQorICAgICBidWZmZXIuCisKKyAoMikgQSAndGFpbCcgaW5kZXggLSB0aGUgcG9pbnQgYXQgd2hpY2ggdGhlIGNvbnN1bWVyIGZpbmRzIHRoZSBuZXh0IGl0ZW0gaW4KKyAgICAgdGhlIGJ1ZmZlci4KKworVHlwaWNhbGx5IHdoZW4gdGhlIHRhaWwgcG9pbnRlciBpcyBlcXVhbCB0byB0aGUgaGVhZCBwb2ludGVyLCB0aGUgYnVmZmVyIGlzCitlbXB0eTsgYW5kIHRoZSBidWZmZXIgaXMgZnVsbCB3aGVuIHRoZSBoZWFkIHBvaW50ZXIgaXMgb25lIGxlc3MgdGhhbiB0aGUgdGFpbAorcG9pbnRlci4KKworVGhlIGhlYWQgaW5kZXggaXMgaW5jcmVtZW50ZWQgd2hlbiBpdGVtcyBhcmUgYWRkZWQsIGFuZCB0aGUgdGFpbCBpbmRleCB3aGVuCitpdGVtcyBhcmUgcmVtb3ZlZC4gIFRoZSB0YWlsIGluZGV4IHNob3VsZCBuZXZlciBqdW1wIHRoZSBoZWFkIGluZGV4LCBhbmQgYm90aAoraW5kaWNlcyBzaG91bGQgYmUgd3JhcHBlZCB0byAwIHdoZW4gdGhleSByZWFjaCB0aGUgZW5kIG9mIHRoZSBidWZmZXIsIHRodXMKK2FsbG93aW5nIGFuIGluZmluaXRlIGFtb3VudCBvZiBkYXRhIHRvIGZsb3cgdGhyb3VnaCB0aGUgYnVmZmVyLgorCitUeXBpY2FsbHksIGl0ZW1zIHdpbGwgYWxsIGJlIG9mIHRoZSBzYW1lIHVuaXQgc2l6ZSwgYnV0IHRoaXMgaXNuJ3Qgc3RyaWN0bHkKK3JlcXVpcmVkIHRvIHVzZSB0aGUgdGVjaG5pcXVlcyBiZWxvdy4gIFRoZSBpbmRpY2VzIGNhbiBiZSBpbmNyZWFzZWQgYnkgbW9yZQordGhhbiAxIGlmIG11bHRpcGxlIGl0ZW1zIG9yIHZhcmlhYmxlLXNpemVkIGl0ZW1zIGFyZSB0byBiZSBpbmNsdWRlZCBpbiB0aGUKK2J1ZmZlciwgcHJvdmlkZWQgdGhhdCBuZWl0aGVyIGluZGV4IG92ZXJ0YWtlcyB0aGUgb3RoZXIuICBUaGUgaW1wbGVtZW50ZXIgbXVzdAorYmUgY2FyZWZ1bCwgaG93ZXZlciwgYXMgYSByZWdpb24gbW9yZSB0aGFuIG9uZSB1bml0IGluIHNpemUgbWF5IHdyYXAgdGhlIGVuZCBvZgordGhlIGJ1ZmZlciBhbmQgYmUgYnJva2VuIGludG8gdHdvIHNlZ21lbnRzLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK01FQVNVUklORyBQT1dFUi1PRi0yIEJVRkZFUlMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQ2FsY3VsYXRpb24gb2YgdGhlIG9jY3VwYW5jeSBvciB0aGUgcmVtYWluaW5nIGNhcGFjaXR5IG9mIGFuIGFyYml0cmFyaWx5IHNpemVkCitjaXJjdWxhciBidWZmZXIgd291bGQgbm9ybWFsbHkgYmUgYSBzbG93IG9wZXJhdGlvbiwgcmVxdWlyaW5nIHRoZSB1c2Ugb2YgYQorbW9kdWx1cyAoZGl2aWRlKSBpbnN0cnVjdGlvbi4gIEhvd2V2ZXIsIGlmIHRoZSBidWZmZXIgaXMgb2YgYSBwb3dlci1vZi0yIHNpemUsCit0aGVuIGEgbXVjaCBxdWlja2VyIGJpdHdpc2UtQU5EIGluc3RydWN0aW9uIGNhbiBiZSB1c2VkIGluc3RlYWQuCisKK0xpbnV4IHByb3ZpZGVzIGEgc2V0IG9mIG1hY3JvcyBmb3IgaGFuZGxpbmcgcG93ZXItb2YtMiBjaXJjdWxhciBidWZmZXJzLiAgVGhlc2UKK2NhbiBiZSBtYWRlIHVzZSBvZiBieToKKworCSNpbmNsdWRlIDxsaW51eC9jaXJjX2J1Zi5oPgorCitUaGUgbWFjcm9zIGFyZToKKworICgqKSBNZWFzdXJlIHRoZSByZW1haW5pbmcgY2FwYWNpdHkgb2YgYSBidWZmZXI6CisKKwlDSVJDX1NQQUNFKGhlYWRfaW5kZXgsIHRhaWxfaW5kZXgsIGJ1ZmZlcl9zaXplKTsKKworICAgICBUaGlzIHJldHVybnMgdGhlIGFtb3VudCBvZiBzcGFjZSBsZWZ0IGluIHRoZSBidWZmZXJbMV0gaW50byB3aGljaCBpdGVtcworICAgICBjYW4gYmUgaW5zZXJ0ZWQuCisKKworICgqKSBNZWFzdXJlIHRoZSBtYXhpbXVtIGNvbnNlY3V0aXZlIGltbWVkaWF0ZSBzcGFjZSBpbiBhIGJ1ZmZlcjoKKworCUNJUkNfU1BBQ0VfVE9fRU5EKGhlYWRfaW5kZXgsIHRhaWxfaW5kZXgsIGJ1ZmZlcl9zaXplKTsKKworICAgICBUaGlzIHJldHVybnMgdGhlIGFtb3VudCBvZiBjb25zZWN1dGl2ZSBzcGFjZSBsZWZ0IGluIHRoZSBidWZmZXJbMV0gaW50bworICAgICB3aGljaCBpdGVtcyBjYW4gYmUgaW1tZWRpYXRlbHkgaW5zZXJ0ZWQgd2l0aG91dCBoYXZpbmcgdG8gd3JhcCBiYWNrIHRvIHRoZQorICAgICBiZWdpbm5pbmcgb2YgdGhlIGJ1ZmZlci4KKworCisgKCopIE1lYXN1cmUgdGhlIG9jY3VwYW5jeSBvZiBhIGJ1ZmZlcjoKKworCUNJUkNfQ05UKGhlYWRfaW5kZXgsIHRhaWxfaW5kZXgsIGJ1ZmZlcl9zaXplKTsKKworICAgICBUaGlzIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBjdXJyZW50bHkgb2NjdXB5aW5nIGEgYnVmZmVyWzJdLgorCisKKyAoKikgTWVhc3VyZSB0aGUgbm9uLXdyYXBwaW5nIG9jY3VwYW5jeSBvZiBhIGJ1ZmZlcjoKKworCUNJUkNfQ05UX1RPX0VORChoZWFkX2luZGV4LCB0YWlsX2luZGV4LCBidWZmZXJfc2l6ZSk7CisKKyAgICAgVGhpcyByZXR1cm5zIHRoZSBudW1iZXIgb2YgY29uc2VjdXRpdmUgaXRlbXNbMl0gdGhhdCBjYW4gYmUgZXh0cmFjdGVkIGZyb20KKyAgICAgdGhlIGJ1ZmZlciB3aXRob3V0IGhhdmluZyB0byB3cmFwIGJhY2sgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYnVmZmVyLgorCisKK0VhY2ggb2YgdGhlc2UgbWFjcm9zIHdpbGwgbm9taW5hbGx5IHJldHVybiBhIHZhbHVlIGJldHdlZW4gMCBhbmQgYnVmZmVyX3NpemUtMSwKK2hvd2V2ZXI6CisKKyBbMV0gQ0lSQ19TUEFDRSooKSBhcmUgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiB0aGUgcHJvZHVjZXIuICBUbyB0aGUgcHJvZHVjZXIKKyAgICAgdGhleSB3aWxsIHJldHVybiBhIGxvd2VyIGJvdW5kIGFzIHRoZSBwcm9kdWNlciBjb250cm9scyB0aGUgaGVhZCBpbmRleCwKKyAgICAgYnV0IHRoZSBjb25zdW1lciBtYXkgc3RpbGwgYmUgZGVwbGV0aW5nIHRoZSBidWZmZXIgb24gYW5vdGhlciBDUFUgYW5kCisgICAgIG1vdmluZyB0aGUgdGFpbCBpbmRleC4KKworICAgICBUbyB0aGUgY29uc3VtZXIgaXQgd2lsbCBzaG93IGFuIHVwcGVyIGJvdW5kIGFzIHRoZSBwcm9kdWNlciBtYXkgYmUgYnVzeQorICAgICBkZXBsZXRpbmcgdGhlIHNwYWNlLgorCisgWzJdIENJUkNfQ05UKigpIGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIGluIHRoZSBjb25zdW1lci4gIFRvIHRoZSBjb25zdW1lciB0aGV5CisgICAgIHdpbGwgcmV0dXJuIGEgbG93ZXIgYm91bmQgYXMgdGhlIGNvbnN1bWVyIGNvbnRyb2xzIHRoZSB0YWlsIGluZGV4LCBidXQgdGhlCisgICAgIHByb2R1Y2VyIG1heSBzdGlsbCBiZSBmaWxsaW5nIHRoZSBidWZmZXIgb24gYW5vdGhlciBDUFUgYW5kIG1vdmluZyB0aGUKKyAgICAgaGVhZCBpbmRleC4KKworICAgICBUbyB0aGUgcHJvZHVjZXIgaXQgd2lsbCBzaG93IGFuIHVwcGVyIGJvdW5kIGFzIHRoZSBjb25zdW1lciBtYXkgYmUgYnVzeQorICAgICBlbXB0eWluZyB0aGUgYnVmZmVyLgorCisgWzNdIFRvIGEgdGhpcmQgcGFydHksIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgd3JpdGVzIHRvIHRoZSBpbmRpY2VzIGJ5IHRoZQorICAgICBwcm9kdWNlciBhbmQgY29uc3VtZXIgYmVjb21lIHZpc2libGUgY2Fubm90IGJlIGd1YXJhbnRlZWQgYXMgdGhleSBhcmUKKyAgICAgaW5kZXBlbmRlbnQgYW5kIG1heSBiZSBtYWRlIG9uIGRpZmZlcmVudCBDUFVzIC0gc28gdGhlIHJlc3VsdCBpbiBzdWNoIGEKKyAgICAgc2l0dWF0aW9uIHdpbGwgbWVyZWx5IGJlIGEgZ3Vlc3MsIGFuZCBtYXkgZXZlbiBiZSBuZWdhdGl2ZS4KKworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitVU0lORyBNRU1PUlkgQkFSUklFUlMgV0lUSCBDSVJDVUxBUiBCVUZGRVJTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J5IHVzaW5nIG1lbW9yeSBiYXJyaWVycyBpbiBjb25qdW5jdGlvbiB3aXRoIGNpcmN1bGFyIGJ1ZmZlcnMsIHlvdSBjYW4gYXZvaWQKK3RoZSBuZWVkIHRvOgorCisgKDEpIHVzZSBhIHNpbmdsZSBsb2NrIHRvIGdvdmVybiBhY2Nlc3MgdG8gYm90aCBlbmRzIG9mIHRoZSBidWZmZXIsIHRodXMKKyAgICAgYWxsb3dpbmcgdGhlIGJ1ZmZlciB0byBiZSBmaWxsZWQgYW5kIGVtcHRpZWQgYXQgdGhlIHNhbWUgdGltZTsgYW5kCisKKyAoMikgdXNlIGF0b21pYyBjb3VudGVyIG9wZXJhdGlvbnMuCisKK1RoZXJlIGFyZSB0d28gc2lkZXMgdG8gdGhpczogdGhlIHByb2R1Y2VyIHRoYXQgZmlsbHMgdGhlIGJ1ZmZlciwgYW5kIHRoZQorY29uc3VtZXIgdGhhdCBlbXB0aWVzIGl0LiAgT25seSBvbmUgdGhpbmcgc2hvdWxkIGJlIGZpbGxpbmcgYSBidWZmZXIgYXQgYW55IG9uZQordGltZSwgYW5kIG9ubHkgb25lIHRoaW5nIHNob3VsZCBiZSBlbXB0eWluZyBhIGJ1ZmZlciBhdCBhbnkgb25lIHRpbWUsIGJ1dCB0aGUKK3R3byBzaWRlcyBjYW4gb3BlcmF0ZSBzaW11bHRhbmVvdXNseS4KKworCitUSEUgUFJPRFVDRVIKKy0tLS0tLS0tLS0tLQorCitUaGUgcHJvZHVjZXIgd2lsbCBsb29rIHNvbWV0aGluZyBsaWtlIHRoaXM6CisKKwlzcGluX2xvY2soJnByb2R1Y2VyX2xvY2spOworCisJdW5zaWduZWQgbG9uZyBoZWFkID0gYnVmZmVyLT5oZWFkOworCS8qIFRoZSBzcGluX3VubG9jaygpIGFuZCBuZXh0IHNwaW5fbG9jaygpIHByb3ZpZGUgbmVlZGVkIG9yZGVyaW5nLiAqLworCXVuc2lnbmVkIGxvbmcgdGFpbCA9IEFDQ0VTU19PTkNFKGJ1ZmZlci0+dGFpbCk7CisKKwlpZiAoQ0lSQ19TUEFDRShoZWFkLCB0YWlsLCBidWZmZXItPnNpemUpID49IDEpIHsKKwkJLyogaW5zZXJ0IG9uZSBpdGVtIGludG8gdGhlIGJ1ZmZlciAqLworCQlzdHJ1Y3QgaXRlbSAqaXRlbSA9IGJ1ZmZlcltoZWFkXTsKKworCQlwcm9kdWNlX2l0ZW0oaXRlbSk7CisKKwkJc21wX3N0b3JlX3JlbGVhc2UoYnVmZmVyLT5oZWFkLAorCQkJCSAgKGhlYWQgKyAxKSAmIChidWZmZXItPnNpemUgLSAxKSk7CisKKwkJLyogd2FrZV91cCgpIHdpbGwgbWFrZSBzdXJlIHRoYXQgdGhlIGhlYWQgaXMgY29tbWl0dGVkIGJlZm9yZQorCQkgKiB3YWtpbmcgYW55b25lIHVwICovCisJCXdha2VfdXAoY29uc3VtZXIpOworCX0KKworCXNwaW5fdW5sb2NrKCZwcm9kdWNlcl9sb2NrKTsKKworVGhpcyB3aWxsIGluc3RydWN0IHRoZSBDUFUgdGhhdCB0aGUgY29udGVudHMgb2YgdGhlIG5ldyBpdGVtIG11c3QgYmUgd3JpdHRlbgorYmVmb3JlIHRoZSBoZWFkIGluZGV4IG1ha2VzIGl0IGF2YWlsYWJsZSB0byB0aGUgY29uc3VtZXIgYW5kIHRoZW4gaW5zdHJ1Y3RzIHRoZQorQ1BVIHRoYXQgdGhlIHJldmlzZWQgaGVhZCBpbmRleCBtdXN0IGJlIHdyaXR0ZW4gYmVmb3JlIHRoZSBjb25zdW1lciBpcyB3b2tlbi4KKworTm90ZSB0aGF0IHdha2VfdXAoKSBkb2VzIG5vdCBndWFyYW50ZWUgYW55IHNvcnQgb2YgYmFycmllciB1bmxlc3Mgc29tZXRoaW5nCitpcyBhY3R1YWxseSBhd2FrZW5lZC4gIFdlIHRoZXJlZm9yZSBjYW5ub3QgcmVseSBvbiBpdCBmb3Igb3JkZXJpbmcuICBIb3dldmVyLAordGhlcmUgaXMgYWx3YXlzIG9uZSBlbGVtZW50IG9mIHRoZSBhcnJheSBsZWZ0IGVtcHR5LiAgVGhlcmVmb3JlLCB0aGUKK3Byb2R1Y2VyIG11c3QgcHJvZHVjZSB0d28gZWxlbWVudHMgYmVmb3JlIGl0IGNvdWxkIHBvc3NpYmx5IGNvcnJ1cHQgdGhlCitlbGVtZW50IGN1cnJlbnRseSBiZWluZyByZWFkIGJ5IHRoZSBjb25zdW1lci4gIFRoZXJlZm9yZSwgdGhlIHVubG9jay1sb2NrCitwYWlyIGJldHdlZW4gY29uc2VjdXRpdmUgaW52b2NhdGlvbnMgb2YgdGhlIGNvbnN1bWVyIHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkKK29yZGVyaW5nIGJldHdlZW4gdGhlIHJlYWQgb2YgdGhlIGluZGV4IGluZGljYXRpbmcgdGhhdCB0aGUgY29uc3VtZXIgaGFzCit2YWNhdGVkIGEgZ2l2ZW4gZWxlbWVudCBhbmQgdGhlIHdyaXRlIGJ5IHRoZSBwcm9kdWNlciB0byB0aGF0IHNhbWUgZWxlbWVudC4KKworCitUSEUgQ09OU1VNRVIKKy0tLS0tLS0tLS0tLQorCitUaGUgY29uc3VtZXIgd2lsbCBsb29rIHNvbWV0aGluZyBsaWtlIHRoaXM6CisKKwlzcGluX2xvY2soJmNvbnN1bWVyX2xvY2spOworCisJLyogUmVhZCBpbmRleCBiZWZvcmUgcmVhZGluZyBjb250ZW50cyBhdCB0aGF0IGluZGV4LiAqLworCXVuc2lnbmVkIGxvbmcgaGVhZCA9IHNtcF9sb2FkX2FjcXVpcmUoYnVmZmVyLT5oZWFkKTsKKwl1bnNpZ25lZCBsb25nIHRhaWwgPSBidWZmZXItPnRhaWw7CisKKwlpZiAoQ0lSQ19DTlQoaGVhZCwgdGFpbCwgYnVmZmVyLT5zaXplKSA+PSAxKSB7CisKKwkJLyogZXh0cmFjdCBvbmUgaXRlbSBmcm9tIHRoZSBidWZmZXIgKi8KKwkJc3RydWN0IGl0ZW0gKml0ZW0gPSBidWZmZXJbdGFpbF07CisKKwkJY29uc3VtZV9pdGVtKGl0ZW0pOworCisJCS8qIEZpbmlzaCByZWFkaW5nIGRlc2NyaXB0b3IgYmVmb3JlIGluY3JlbWVudGluZyB0YWlsLiAqLworCQlzbXBfc3RvcmVfcmVsZWFzZShidWZmZXItPnRhaWwsCisJCQkJICAodGFpbCArIDEpICYgKGJ1ZmZlci0+c2l6ZSAtIDEpKTsKKwl9CisKKwlzcGluX3VubG9jaygmY29uc3VtZXJfbG9jayk7CisKK1RoaXMgd2lsbCBpbnN0cnVjdCB0aGUgQ1BVIHRvIG1ha2Ugc3VyZSB0aGUgaW5kZXggaXMgdXAgdG8gZGF0ZSBiZWZvcmUgcmVhZGluZwordGhlIG5ldyBpdGVtLCBhbmQgdGhlbiBpdCBzaGFsbCBtYWtlIHN1cmUgdGhlIENQVSBoYXMgZmluaXNoZWQgcmVhZGluZyB0aGUgaXRlbQorYmVmb3JlIGl0IHdyaXRlcyB0aGUgbmV3IHRhaWwgcG9pbnRlciwgd2hpY2ggd2lsbCBlcmFzZSB0aGUgaXRlbS4KKworTm90ZSB0aGUgdXNlIG9mIEFDQ0VTU19PTkNFKCkgYW5kIHNtcF9sb2FkX2FjcXVpcmUoKSB0byByZWFkIHRoZQorb3Bwb3NpdGlvbiBpbmRleC4gIFRoaXMgcHJldmVudHMgdGhlIGNvbXBpbGVyIGZyb20gZGlzY2FyZGluZyBhbmQKK3JlbG9hZGluZyBpdHMgY2FjaGVkIHZhbHVlIC0gd2hpY2ggc29tZSBjb21waWxlcnMgd2lsbCBkbyBhY3Jvc3MKK3NtcF9yZWFkX2JhcnJpZXJfZGVwZW5kcygpLiAgVGhpcyBpc24ndCBzdHJpY3RseSBuZWVkZWQgaWYgeW91IGNhbgorYmUgc3VyZSB0aGF0IHRoZSBvcHBvc2l0aW9uIGluZGV4IHdpbGwgX29ubHlfIGJlIHVzZWQgdGhlIG9uY2UuCitUaGUgc21wX2xvYWRfYWNxdWlyZSgpIGFkZGl0aW9uYWxseSBmb3JjZXMgdGhlIENQVSB0byBvcmRlciBhZ2FpbnN0CitzdWJzZXF1ZW50IG1lbW9yeSByZWZlcmVuY2VzLiAgU2ltaWxhcmx5LCBzbXBfc3RvcmVfcmVsZWFzZSgpIGlzIHVzZWQKK2luIGJvdGggYWxnb3JpdGhtcyB0byB3cml0ZSB0aGUgdGhyZWFkJ3MgaW5kZXguICBUaGlzIGRvY3VtZW50cyB0aGUKK2ZhY3QgdGhhdCB3ZSBhcmUgd3JpdGluZyB0byBzb21ldGhpbmcgdGhhdCBjYW4gYmUgcmVhZCBjb25jdXJyZW50bHksCitwcmV2ZW50cyB0aGUgY29tcGlsZXIgZnJvbSB0ZWFyaW5nIHRoZSBzdG9yZSwgYW5kIGVuZm9yY2VzIG9yZGVyaW5nCithZ2FpbnN0IHByZXZpb3VzIGFjY2Vzc2VzLgorCisKKz09PT09PT09PT09PT09PQorRlVSVEhFUiBSRUFESU5HCis9PT09PT09PT09PT09PT0KKworU2VlIGFsc28gRG9jdW1lbnRhdGlvbi9tZW1vcnktYmFycmllcnMudHh0IGZvciBhIGRlc2NyaXB0aW9uIG9mIExpbnV4J3MgbWVtb3J5CitiYXJyaWVyIGZhY2lsaXRpZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Nsay50eHQgYi9Eb2N1bWVudGF0aW9uL2Nsay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM0YmM0ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vY2xrLnR4dApAQCAtMCwwICsxLDI3MiBAQAorCQlUaGUgQ29tbW9uIENsayBGcmFtZXdvcmsKKwkJTWlrZSBUdXJxdWV0dGUgPG10dXJxdWV0dGVAdGkuY29tPgorCitUaGlzIGRvY3VtZW50IGVuZGVhdm91cnMgdG8gZXhwbGFpbiB0aGUgY29tbW9uIGNsayBmcmFtZXdvcmsgZGV0YWlscywKK2FuZCBob3cgdG8gcG9ydCBhIHBsYXRmb3JtIG92ZXIgdG8gdGhpcyBmcmFtZXdvcmsuICBJdCBpcyBub3QgeWV0IGEKK2RldGFpbGVkIGV4cGxhbmF0aW9uIG9mIHRoZSBjbG9jayBhcGkgaW4gaW5jbHVkZS9saW51eC9jbGsuaCwgYnV0CitwZXJoYXBzIHNvbWVkYXkgaXQgd2lsbCBpbmNsdWRlIHRoYXQgaW5mb3JtYXRpb24uCisKKwlQYXJ0IDEgLSBpbnRyb2R1Y3Rpb24gYW5kIGludGVyZmFjZSBzcGxpdAorCitUaGUgY29tbW9uIGNsayBmcmFtZXdvcmsgaXMgYW4gaW50ZXJmYWNlIHRvIGNvbnRyb2wgdGhlIGNsb2NrIG5vZGVzCithdmFpbGFibGUgb24gdmFyaW91cyBkZXZpY2VzIHRvZGF5LiAgVGhpcyBtYXkgY29tZSBpbiB0aGUgZm9ybSBvZiBjbG9jaworZ2F0aW5nLCByYXRlIGFkanVzdG1lbnQsIG11eGluZyBvciBvdGhlciBvcGVyYXRpb25zLiAgVGhpcyBmcmFtZXdvcmsgaXMKK2VuYWJsZWQgd2l0aCB0aGUgQ09ORklHX0NPTU1PTl9DTEsgb3B0aW9uLgorCitUaGUgaW50ZXJmYWNlIGl0c2VsZiBpcyBkaXZpZGVkIGludG8gdHdvIGhhbHZlcywgZWFjaCBzaGllbGRlZCBmcm9tIHRoZQorZGV0YWlscyBvZiBpdHMgY291bnRlcnBhcnQuICBGaXJzdCBpcyB0aGUgY29tbW9uIGRlZmluaXRpb24gb2Ygc3RydWN0CitjbGsgd2hpY2ggdW5pZmllcyB0aGUgZnJhbWV3b3JrLWxldmVsIGFjY291bnRpbmcgYW5kIGluZnJhc3RydWN0dXJlIHRoYXQKK2hhcyB0cmFkaXRpb25hbGx5IGJlZW4gZHVwbGljYXRlZCBhY3Jvc3MgYSB2YXJpZXR5IG9mIHBsYXRmb3Jtcy4gIFNlY29uZAoraXMgYSBjb21tb24gaW1wbGVtZW50YXRpb24gb2YgdGhlIGNsay5oIGFwaSwgZGVmaW5lZCBpbgorZHJpdmVycy9jbGsvY2xrLmMuICBGaW5hbGx5IHRoZXJlIGlzIHN0cnVjdCBjbGtfb3BzLCB3aG9zZSBvcGVyYXRpb25zCithcmUgaW52b2tlZCBieSB0aGUgY2xrIGFwaSBpbXBsZW1lbnRhdGlvbi4KKworVGhlIHNlY29uZCBoYWxmIG9mIHRoZSBpbnRlcmZhY2UgaXMgY29tcHJpc2VkIG9mIHRoZSBoYXJkd2FyZS1zcGVjaWZpYworY2FsbGJhY2tzIHJlZ2lzdGVyZWQgd2l0aCBzdHJ1Y3QgY2xrX29wcyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcKK2hhcmR3YXJlLXNwZWNpZmljIHN0cnVjdHVyZXMgbmVlZGVkIHRvIG1vZGVsIGEgcGFydGljdWxhciBjbG9jay4gIEZvcgordGhlIHJlbWFpbmRlciBvZiB0aGlzIGRvY3VtZW50IGFueSByZWZlcmVuY2UgdG8gYSBjYWxsYmFjayBpbiBzdHJ1Y3QKK2Nsa19vcHMsIHN1Y2ggYXMgLmVuYWJsZSBvciAuc2V0X3JhdGUsIGltcGxpZXMgdGhlIGhhcmR3YXJlLXNwZWNpZmljCitpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IGNvZGUuICBMaWtld2lzZSwgcmVmZXJlbmNlcyB0byBzdHJ1Y3QgY2xrX2Zvbworc2VydmUgYXMgYSBjb252ZW5pZW50IHNob3J0aGFuZCBmb3IgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZQoraGFyZHdhcmUtc3BlY2lmaWMgYml0cyBmb3IgdGhlIGh5cG90aGV0aWNhbCAiZm9vIiBoYXJkd2FyZS4KKworVHlpbmcgdGhlIHR3byBoYWx2ZXMgb2YgdGhpcyBpbnRlcmZhY2UgdG9nZXRoZXIgaXMgc3RydWN0IGNsa19odywgd2hpY2gKK2lzIGRlZmluZWQgaW4gc3RydWN0IGNsa19mb28gYW5kIHBvaW50ZWQgdG8gd2l0aGluIHN0cnVjdCBjbGsuICBUaGlzCithbGxvd3MgZm9yIGVhc3kgbmF2aWdhdGlvbiBiZXR3ZWVuIHRoZSB0d28gZGlzY3JldGUgaGFsdmVzIG9mIHRoZSBjb21tb24KK2Nsb2NrIGludGVyZmFjZS4KKworCVBhcnQgMiAtIGNvbW1vbiBkYXRhIHN0cnVjdHVyZXMgYW5kIGFwaQorCitCZWxvdyBpcyB0aGUgY29tbW9uIHN0cnVjdCBjbGsgZGVmaW5pdGlvbiBmcm9tCitpbmNsdWRlL2xpbnV4L2Nsay1wcml2YXRlLmgsIG1vZGlmaWVkIGZvciBicmV2aXR5OgorCisJc3RydWN0IGNsayB7CisJCWNvbnN0IGNoYXIJCSpuYW1lOworCQljb25zdCBzdHJ1Y3QgY2xrX29wcwkqb3BzOworCQlzdHJ1Y3QgY2xrX2h3CQkqaHc7CisJCWNoYXIJCQkqKnBhcmVudF9uYW1lczsKKwkJc3RydWN0IGNsawkJKipwYXJlbnRzOworCQlzdHJ1Y3QgY2xrCQkqcGFyZW50OworCQlzdHJ1Y3QgaGxpc3RfaGVhZAljaGlsZHJlbjsKKwkJc3RydWN0IGhsaXN0X25vZGUJY2hpbGRfbm9kZTsKKwkJLi4uCisJfTsKKworVGhlIG1lbWJlcnMgYWJvdmUgbWFrZSB1cCB0aGUgY29yZSBvZiB0aGUgY2xrIHRyZWUgdG9wb2xvZ3kuICBUaGUgY2xrCithcGkgaXRzZWxmIGRlZmluZXMgc2V2ZXJhbCBkcml2ZXItZmFjaW5nIGZ1bmN0aW9ucyB3aGljaCBvcGVyYXRlIG9uCitzdHJ1Y3QgY2xrLiAgVGhhdCBhcGkgaXMgZG9jdW1lbnRlZCBpbiBpbmNsdWRlL2xpbnV4L2Nsay5oLgorCitQbGF0Zm9ybXMgYW5kIGRldmljZXMgdXRpbGl6aW5nIHRoZSBjb21tb24gc3RydWN0IGNsayB1c2UgdGhlIHN0cnVjdAorY2xrX29wcyBwb2ludGVyIGluIHN0cnVjdCBjbGsgdG8gcGVyZm9ybSB0aGUgaGFyZHdhcmUtc3BlY2lmaWMgcGFydHMgb2YKK3RoZSBvcGVyYXRpb25zIGRlZmluZWQgaW4gY2xrLmg6CisKKwlzdHJ1Y3QgY2xrX29wcyB7CisJCWludAkJKCpwcmVwYXJlKShzdHJ1Y3QgY2xrX2h3ICpodyk7CisJCXZvaWQJCSgqdW5wcmVwYXJlKShzdHJ1Y3QgY2xrX2h3ICpodyk7CisJCWludAkJKCplbmFibGUpKHN0cnVjdCBjbGtfaHcgKmh3KTsKKwkJdm9pZAkJKCpkaXNhYmxlKShzdHJ1Y3QgY2xrX2h3ICpodyk7CisJCWludAkJKCppc19lbmFibGVkKShzdHJ1Y3QgY2xrX2h3ICpodyk7CisJCXVuc2lnbmVkIGxvbmcJKCpyZWNhbGNfcmF0ZSkoc3RydWN0IGNsa19odyAqaHcsCisJCQkJCQl1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRlKTsKKwkJbG9uZwkJKCpyb3VuZF9yYXRlKShzdHJ1Y3QgY2xrX2h3ICpodywKKwkJCQkJCXVuc2lnbmVkIGxvbmcgcmF0ZSwKKwkJCQkJCXVuc2lnbmVkIGxvbmcgKnBhcmVudF9yYXRlKTsKKwkJaW50CQkoKmRldGVybWluZV9yYXRlKShzdHJ1Y3QgY2xrX2h3ICpodywKKwkJCQkJCSAgc3RydWN0IGNsa19yYXRlX3JlcXVlc3QgKnJlcSk7CisJCWludAkJKCpzZXRfcGFyZW50KShzdHJ1Y3QgY2xrX2h3ICpodywgdTggaW5kZXgpOworCQl1OAkJKCpnZXRfcGFyZW50KShzdHJ1Y3QgY2xrX2h3ICpodyk7CisJCWludAkJKCpzZXRfcmF0ZSkoc3RydWN0IGNsa19odyAqaHcsCisJCQkJCSAgICB1bnNpZ25lZCBsb25nIHJhdGUsCisJCQkJCSAgICB1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRlKTsKKwkJaW50CQkoKnNldF9yYXRlX2FuZF9wYXJlbnQpKHN0cnVjdCBjbGtfaHcgKmh3LAorCQkJCQkgICAgdW5zaWduZWQgbG9uZyByYXRlLAorCQkJCQkgICAgdW5zaWduZWQgbG9uZyBwYXJlbnRfcmF0ZSwKKwkJCQkJICAgIHU4IGluZGV4KTsKKwkJdW5zaWduZWQgbG9uZwkoKnJlY2FsY19hY2N1cmFjeSkoc3RydWN0IGNsa19odyAqaHcsCisJCQkJCQl1bnNpZ25lZCBsb25nIHBhcmVudF9hY2N1cmFjeSk7CisJCXZvaWQJCSgqaW5pdCkoc3RydWN0IGNsa19odyAqaHcpOworCQlpbnQJCSgqZGVidWdfaW5pdCkoc3RydWN0IGNsa19odyAqaHcsCisJCQkJCSAgICAgIHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CisJfTsKKworCVBhcnQgMyAtIGhhcmR3YXJlIGNsayBpbXBsZW1lbnRhdGlvbnMKKworVGhlIHN0cmVuZ3RoIG9mIHRoZSBjb21tb24gc3RydWN0IGNsayBjb21lcyBmcm9tIGl0cyAub3BzIGFuZCAuaHcgcG9pbnRlcnMKK3doaWNoIGFic3RyYWN0IHRoZSBkZXRhaWxzIG9mIHN0cnVjdCBjbGsgZnJvbSB0aGUgaGFyZHdhcmUtc3BlY2lmaWMgYml0cywgYW5kCit2aWNlIHZlcnNhLiAgVG8gaWxsdXN0cmF0ZSBjb25zaWRlciB0aGUgc2ltcGxlIGdhdGVhYmxlIGNsayBpbXBsZW1lbnRhdGlvbiBpbgorZHJpdmVycy9jbGsvY2xrLWdhdGUuYzoKKworc3RydWN0IGNsa19nYXRlIHsKKwlzdHJ1Y3QgY2xrX2h3CWh3OworCXZvaWQgX19pb21lbSAgICAqcmVnOworCXU4ICAgICAgICAgICAgICBiaXRfaWR4OworCS4uLgorfTsKKworc3RydWN0IGNsa19nYXRlIGNvbnRhaW5zIHN0cnVjdCBjbGtfaHcgaHcgYXMgd2VsbCBhcyBoYXJkd2FyZS1zcGVjaWZpYwora25vd2xlZGdlIGFib3V0IHdoaWNoIHJlZ2lzdGVyIGFuZCBiaXQgY29udHJvbHMgdGhpcyBjbGsncyBnYXRpbmcuCitOb3RoaW5nIGFib3V0IGNsb2NrIHRvcG9sb2d5IG9yIGFjY291bnRpbmcsIHN1Y2ggYXMgZW5hYmxlX2NvdW50IG9yCitub3RpZmllcl9jb3VudCwgaXMgbmVlZGVkIGhlcmUuICBUaGF0IGlzIGFsbCBoYW5kbGVkIGJ5IHRoZSBjb21tb24KK2ZyYW1ld29yayBjb2RlIGFuZCBzdHJ1Y3QgY2xrLgorCitMZXQncyB3YWxrIHRocm91Z2ggZW5hYmxpbmcgdGhpcyBjbGsgZnJvbSBkcml2ZXIgY29kZToKKworCXN0cnVjdCBjbGsgKmNsazsKKwljbGsgPSBjbGtfZ2V0KE5VTEwsICJteV9nYXRlYWJsZV9jbGsiKTsKKworCWNsa19wcmVwYXJlKGNsayk7CisJY2xrX2VuYWJsZShjbGspOworCitUaGUgY2FsbCBncmFwaCBmb3IgY2xrX2VuYWJsZSBpcyB2ZXJ5IHNpbXBsZToKKworY2xrX2VuYWJsZShjbGspOworCWNsay0+b3BzLT5lbmFibGUoY2xrLT5odyk7CisJW3Jlc29sdmVzIHRvLi4uXQorCQljbGtfZ2F0ZV9lbmFibGUoaHcpOworCQlbcmVzb2x2ZXMgc3RydWN0IGNsayBnYXRlIHdpdGggdG9fY2xrX2dhdGUoaHcpXQorCQkJY2xrX2dhdGVfc2V0X2JpdChnYXRlKTsKKworQW5kIHRoZSBkZWZpbml0aW9uIG9mIGNsa19nYXRlX3NldF9iaXQ6CisKK3N0YXRpYyB2b2lkIGNsa19nYXRlX3NldF9iaXQoc3RydWN0IGNsa19nYXRlICpnYXRlKQoreworCXUzMiByZWc7CisKKwlyZWcgPSBfX3Jhd19yZWFkbChnYXRlLT5yZWcpOworCXJlZyB8PSBCSVQoZ2F0ZS0+Yml0X2lkeCk7CisJd3JpdGVsKHJlZywgZ2F0ZS0+cmVnKTsKK30KKworTm90ZSB0aGF0IHRvX2Nsa19nYXRlIGlzIGRlZmluZWQgYXM6CisKKyNkZWZpbmUgdG9fY2xrX2dhdGUoX2h3KSBjb250YWluZXJfb2YoX2h3LCBzdHJ1Y3QgY2xrX2dhdGUsIGNsaykKKworVGhpcyBwYXR0ZXJuIG9mIGFic3RyYWN0aW9uIGlzIHVzZWQgZm9yIGV2ZXJ5IGNsb2NrIGhhcmR3YXJlCityZXByZXNlbnRhdGlvbi4KKworCVBhcnQgNCAtIHN1cHBvcnRpbmcgeW91ciBvd24gY2xrIGhhcmR3YXJlCisKK1doZW4gaW1wbGVtZW50aW5nIHN1cHBvcnQgZm9yIGEgbmV3IHR5cGUgb2YgY2xvY2sgaXQgb25seSBuZWNlc3NhcnkgdG8KK2luY2x1ZGUgdGhlIGZvbGxvd2luZyBoZWFkZXI6CisKKyNpbmNsdWRlIDxsaW51eC9jbGstcHJvdmlkZXIuaD4KKworaW5jbHVkZS9saW51eC9jbGsuaCBpcyBpbmNsdWRlZCB3aXRoaW4gdGhhdCBoZWFkZXIgYW5kIGNsay1wcml2YXRlLmgKK211c3QgbmV2ZXIgYmUgaW5jbHVkZWQgZnJvbSB0aGUgY29kZSB3aGljaCBpbXBsZW1lbnRzIHRoZSBvcGVyYXRpb25zIGZvcgorYSBjbG9jay4gIE1vcmUgb24gdGhhdCBiZWxvdyBpbiBQYXJ0IDUuCisKK1RvIGNvbnN0cnVjdCBhIGNsayBoYXJkd2FyZSBzdHJ1Y3R1cmUgZm9yIHlvdXIgcGxhdGZvcm0geW91IG11c3QgZGVmaW5lCit0aGUgZm9sbG93aW5nOgorCitzdHJ1Y3QgY2xrX2ZvbyB7CisJc3RydWN0IGNsa19odyBodzsKKwkuLi4gaGFyZHdhcmUgc3BlY2lmaWMgZGF0YSBnb2VzIGhlcmUgLi4uCit9OworCitUbyB0YWtlIGFkdmFudGFnZSBvZiB5b3VyIGRhdGEgeW91J2xsIG5lZWQgdG8gc3VwcG9ydCB2YWxpZCBvcGVyYXRpb25zCitmb3IgeW91ciBjbGs6CisKK3N0cnVjdCBjbGtfb3BzIGNsa19mb29fb3BzIHsKKwkuZW5hYmxlCQk9ICZjbGtfZm9vX2VuYWJsZTsKKwkuZGlzYWJsZQk9ICZjbGtfZm9vX2Rpc2FibGU7Cit9OworCitJbXBsZW1lbnQgdGhlIGFib3ZlIGZ1bmN0aW9ucyB1c2luZyBjb250YWluZXJfb2Y6CisKKyNkZWZpbmUgdG9fY2xrX2ZvbyhfaHcpIGNvbnRhaW5lcl9vZihfaHcsIHN0cnVjdCBjbGtfZm9vLCBodykKKworaW50IGNsa19mb29fZW5hYmxlKHN0cnVjdCBjbGtfaHcgKmh3KQoreworCXN0cnVjdCBjbGtfZm9vICpmb287CisKKwlmb28gPSB0b19jbGtfZm9vKGh3KTsKKworCS4uLiBwZXJmb3JtIG1hZ2ljIG9uIGZvbyAuLi4KKworCXJldHVybiAwOworfTsKKworQmVsb3cgaXMgYSBtYXRyaXggZGV0YWlsaW5nIHdoaWNoIGNsa19vcHMgYXJlIG1hbmRhdG9yeSBiYXNlZCB1cG9uIHRoZQoraGFyZHdhcmUgY2FwYWJpbGl0aWVzIG9mIHRoYXQgY2xvY2suICBBIGNlbGwgbWFya2VkIGFzICJ5IiBtZWFucworbWFuZGF0b3J5LCBhIGNlbGwgbWFya2VkIGFzICJuIiBpbXBsaWVzIHRoYXQgZWl0aGVyIGluY2x1ZGluZyB0aGF0CitjYWxsYmFjayBpcyBpbnZhbGlkIG9yIG90aGVyd2lzZSB1bm5lY2Vzc2FyeS4gIEVtcHR5IGNlbGxzIGFyZSBlaXRoZXIKK29wdGlvbmFsIG9yIG11c3QgYmUgZXZhbHVhdGVkIG9uIGEgY2FzZS1ieS1jYXNlIGJhc2lzLgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9jayBoYXJkd2FyZSBjaGFyYWN0ZXJpc3RpY3MKKyAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIHwgZ2F0ZSB8IGNoYW5nZSByYXRlIHwgc2luZ2xlIHBhcmVudCB8IG11bHRpcGxleGVyIHwgcm9vdCB8CisgICAgICAgICAgICAgICAgfC0tLS0tLXwtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfC0tLS0tLXwKKy5wcmVwYXJlICAgICAgICB8ICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgfAorLnVucHJlcGFyZSAgICAgIHwgICAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICAgICB8CisgICAgICAgICAgICAgICAgfCAgICAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAgIHwKKy5lbmFibGUgICAgICAgICB8IHkgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgfAorLmRpc2FibGUgICAgICAgIHwgeSAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICAgICB8CisuaXNfZW5hYmxlZCAgICAgfCB5ICAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAgIHwKKyAgICAgICAgICAgICAgICB8ICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgfAorLnJlY2FsY19yYXRlICAgIHwgICAgICB8IHkgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICAgICB8Cisucm91bmRfcmF0ZSAgICAgfCAgICAgIHwgeSBbMV0gICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAgIHwKKy5kZXRlcm1pbmVfcmF0ZSB8ICAgICAgfCB5IFsxXSAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgfAorLnNldF9yYXRlICAgICAgIHwgICAgICB8IHkgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICAgICB8CisgICAgICAgICAgICAgICAgfCAgICAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAgIHwKKy5zZXRfcGFyZW50ICAgICB8ICAgICAgfCAgICAgICAgICAgICB8IG4gICAgICAgICAgICAgfCB5ICAgICAgICAgICB8IG4gICAgfAorLmdldF9wYXJlbnQgICAgIHwgICAgICB8ICAgICAgICAgICAgIHwgbiAgICAgICAgICAgICB8IHkgICAgICAgICAgIHwgbiAgICB8CisgICAgICAgICAgICAgICAgfCAgICAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAgIHwKKy5yZWNhbGNfYWNjdXJhY3l8ICAgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgfAorICAgICAgICAgICAgICAgIHwgICAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwgICAgICB8CisuaW5pdCAgICAgICAgICAgfCAgICAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCAgICAgIHwKKyAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorWzFdIGVpdGhlciBvbmUgb2Ygcm91bmRfcmF0ZSBvciBkZXRlcm1pbmVfcmF0ZSBpcyByZXF1aXJlZC4KKworRmluYWxseSwgcmVnaXN0ZXIgeW91ciBjbG9jayBhdCBydW4tdGltZSB3aXRoIGEgaGFyZHdhcmUtc3BlY2lmaWMKK3JlZ2lzdHJhdGlvbiBmdW5jdGlvbi4gIFRoaXMgZnVuY3Rpb24gc2ltcGx5IHBvcHVsYXRlcyBzdHJ1Y3QgY2xrX2ZvbydzCitkYXRhIGFuZCB0aGVuIHBhc3NlcyB0aGUgY29tbW9uIHN0cnVjdCBjbGsgcGFyYW1ldGVycyB0byB0aGUgZnJhbWV3b3JrCit3aXRoIGEgY2FsbCB0bzoKKworY2xrX3JlZ2lzdGVyKC4uLikKKworU2VlIHRoZSBiYXNpYyBjbG9jayB0eXBlcyBpbiBkcml2ZXJzL2Nsay9jbGstKi5jIGZvciBleGFtcGxlcy4KKworCVBhcnQgNSAtIERpc2FibGluZyBjbG9jayBnYXRpbmcgb2YgdW51c2VkIGNsb2NrcworCitTb21ldGltZXMgZHVyaW5nIGRldmVsb3BtZW50IGl0IGNhbiBiZSB1c2VmdWwgdG8gYmUgYWJsZSB0byBieXBhc3MgdGhlCitkZWZhdWx0IGRpc2FibGluZyBvZiB1bnVzZWQgY2xvY2tzLiBGb3IgZXhhbXBsZSwgaWYgZHJpdmVycyBhcmVuJ3QgZW5hYmxpbmcKK2Nsb2NrcyBwcm9wZXJseSBidXQgcmVseSBvbiB0aGVtIGJlaW5nIG9uIGZyb20gdGhlIGJvb3Rsb2FkZXIsIGJ5cGFzc2luZwordGhlIGRpc2FibGluZyBtZWFucyB0aGF0IHRoZSBkcml2ZXIgd2lsbCByZW1haW4gZnVuY3Rpb25hbCB3aGlsZSB0aGUgaXNzdWVzCithcmUgc29ydGVkIG91dC4KKworVG8gYnlwYXNzIHRoaXMgZGlzYWJsaW5nLCBpbmNsdWRlICJjbGtfaWdub3JlX3VudXNlZCIgaW4gdGhlIGJvb3RhcmdzIHRvIHRoZQora2VybmVsLgorCisJUGFydCA2IC0gTG9ja2luZworCitUaGUgY29tbW9uIGNsb2NrIGZyYW1ld29yayB1c2VzIHR3byBnbG9iYWwgbG9ja3MsIHRoZSBwcmVwYXJlIGxvY2sgYW5kIHRoZQorZW5hYmxlIGxvY2suCisKK1RoZSBlbmFibGUgbG9jayBpcyBhIHNwaW5sb2NrIGFuZCBpcyBoZWxkIGFjcm9zcyBjYWxscyB0byB0aGUgLmVuYWJsZSwKKy5kaXNhYmxlIGFuZCAuaXNfZW5hYmxlZCBvcGVyYXRpb25zLiBUaG9zZSBvcGVyYXRpb25zIGFyZSB0aHVzIG5vdCBhbGxvd2VkIHRvCitzbGVlcCwgYW5kIGNhbGxzIHRvIHRoZSBjbGtfZW5hYmxlKCksIGNsa19kaXNhYmxlKCkgYW5kIGNsa19pc19lbmFibGVkKCkgQVBJCitmdW5jdGlvbnMgYXJlIGFsbG93ZWQgaW4gYXRvbWljIGNvbnRleHQuCisKK1RoZSBwcmVwYXJlIGxvY2sgaXMgYSBtdXRleCBhbmQgaXMgaGVsZCBhY3Jvc3MgY2FsbHMgdG8gYWxsIG90aGVyIG9wZXJhdGlvbnMuCitBbGwgdGhvc2Ugb3BlcmF0aW9ucyBhcmUgYWxsb3dlZCB0byBzbGVlcCwgYW5kIGNhbGxzIHRvIHRoZSBjb3JyZXNwb25kaW5nIEFQSQorZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBhdG9taWMgY29udGV4dC4KKworVGhpcyBlZmZlY3RpdmVseSBkaXZpZGVzIG9wZXJhdGlvbnMgaW4gdHdvIGdyb3VwcyBmcm9tIGEgbG9ja2luZyBwZXJzcGVjdGl2ZS4KKworRHJpdmVycyBkb24ndCBuZWVkIHRvIG1hbnVhbGx5IHByb3RlY3QgcmVzb3VyY2VzIHNoYXJlZCBiZXR3ZWVuIHRoZSBvcGVyYXRpb25zCitvZiBvbmUgZ3JvdXAsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aG9zZSByZXNvdXJjZXMgYXJlIHNoYXJlZCBieSBtdWx0aXBsZQorY2xvY2tzIG9yIG5vdC4gSG93ZXZlciwgYWNjZXNzIHRvIHJlc291cmNlcyB0aGF0IGFyZSBzaGFyZWQgYmV0d2VlbiBvcGVyYXRpb25zCitvZiB0aGUgdHdvIGdyb3VwcyBuZWVkcyB0byBiZSBwcm90ZWN0ZWQgYnkgdGhlIGRyaXZlcnMuIEFuIGV4YW1wbGUgb2Ygc3VjaCBhCityZXNvdXJjZSB3b3VsZCBiZSBhIHJlZ2lzdGVyIHRoYXQgY29udHJvbHMgYm90aCB0aGUgY2xvY2sgcmF0ZSBhbmQgdGhlIGNsb2NrCitlbmFibGUvZGlzYWJsZSBzdGF0ZS4KKworVGhlIGNsb2NrIGZyYW1ld29yayBpcyByZWVudHJhbnQsIGluIHRoYXQgYSBkcml2ZXIgaXMgYWxsb3dlZCB0byBjYWxsIGNsb2NrCitmcmFtZXdvcmsgZnVuY3Rpb25zIGZyb20gd2l0aGluIGl0cyBpbXBsZW1lbnRhdGlvbiBvZiBjbG9jayBvcGVyYXRpb25zLiBUaGlzCitjYW4gZm9yIGluc3RhbmNlIGNhdXNlIGEgLnNldF9yYXRlIG9wZXJhdGlvbiBvZiBvbmUgY2xvY2sgYmVpbmcgY2FsbGVkIGZyb20KK3dpdGhpbiB0aGUgLnNldF9yYXRlIG9wZXJhdGlvbiBvZiBhbm90aGVyIGNsb2NrLiBUaGlzIGNhc2UgbXVzdCBiZSBjb25zaWRlcmVkCitpbiB0aGUgZHJpdmVyIGltcGxlbWVudGF0aW9ucywgYnV0IHRoZSBjb2RlIGZsb3cgaXMgdXN1YWxseSBjb250cm9sbGVkIGJ5IHRoZQorZHJpdmVyIGluIHRoYXQgY2FzZS4KKworTm90ZSB0aGF0IGxvY2tpbmcgbXVzdCBhbHNvIGJlIGNvbnNpZGVyZWQgd2hlbiBjb2RlIG91dHNpZGUgb2YgdGhlIGNvbW1vbgorY2xvY2sgZnJhbWV3b3JrIG5lZWRzIHRvIGFjY2VzcyByZXNvdXJjZXMgdXNlZCBieSB0aGUgY2xvY2sgb3BlcmF0aW9ucy4gVGhpcworaXMgY29uc2lkZXJlZCBvdXQgb2Ygc2NvcGUgb2YgdGhpcyBkb2N1bWVudC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY21hL2RlYnVnZnMudHh0IGIvRG9jdW1lbnRhdGlvbi9jbWEvZGVidWdmcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNlZjIwYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vY21hL2RlYnVnZnMudHh0CkBAIC0wLDAgKzEsMjEgQEAKK1RoZSBDTUEgZGVidWdmcyBpbnRlcmZhY2UgaXMgdXNlZnVsIHRvIHJldHJpZXZlIGJhc2ljIGluZm9ybWF0aW9uIG91dCBvZiB0aGUKK2RpZmZlcmVudCBDTUEgYXJlYXMgYW5kIHRvIHRlc3QgYWxsb2NhdGlvbi9yZWxlYXNlIGluIGVhY2ggb2YgdGhlIGFyZWFzLgorCitFYWNoIENNQSB6b25lIHJlcHJlc2VudHMgYSBkaXJlY3RvcnkgdW5kZXIgPGRlYnVnZnM+L2NtYS8sIGluZGV4ZWQgYnkgdGhlCitrZXJuZWwncyBDTUEgaW5kZXguIFNvIHRoZSBmaXJzdCBDTUEgem9uZSB3b3VsZCBiZToKKworCTxkZWJ1Z2ZzPi9jbWEvY21hLTAKKworVGhlIHN0cnVjdHVyZSBvZiB0aGUgZmlsZXMgY3JlYXRlZCB1bmRlciB0aGF0IGRpcmVjdG9yeSBpcyBhcyBmb2xsb3dzOgorCisgLSBbUk9dIGJhc2VfcGZuOiBUaGUgYmFzZSBQRk4gKFBhZ2UgRnJhbWUgTnVtYmVyKSBvZiB0aGUgem9uZS4KKyAtIFtST10gY291bnQ6IEFtb3VudCBvZiBtZW1vcnkgaW4gdGhlIENNQSBhcmVhLgorIC0gW1JPXSBvcmRlcl9wZXJfYml0OiBPcmRlciBvZiBwYWdlcyByZXByZXNlbnRlZCBieSBvbmUgYml0LgorIC0gW1JPXSBiaXRtYXA6IFRoZSBiaXRtYXAgb2YgcGFnZSBzdGF0ZXMgaW4gdGhlIHpvbmUuCisgLSBbV09dIGFsbG9jOiBBbGxvY2F0ZSBOIHBhZ2VzIGZyb20gdGhhdCBDTUEgYXJlYS4gRm9yIGV4YW1wbGU6CisKKwllY2hvIDUgPiA8ZGVidWdmcz4vY21hL2NtYS0yL2FsbG9jCisKK3dvdWxkIHRyeSB0byBhbGxvY2F0ZSA1IHBhZ2VzIGZyb20gdGhlIGNtYS0yIGFyZWEuCisKKyAtIFtXT10gZnJlZTogRnJlZSBOIHBhZ2VzIGZyb20gdGhhdCBDTUEgYXJlYSwgc2ltaWxhciB0byB0aGUgYWJvdmUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2NvY2NpbmVsbGUudHh0IGIvRG9jdW1lbnRhdGlvbi9jb2NjaW5lbGxlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Zjc3M2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9jb2NjaW5lbGxlLnR4dApAQCAtMCwwICsxLDMyNCBAQAorQ29weXJpZ2h0IDIwMTAgTmljb2xhcyBQYWxpeCA8bnBhbGl4QGRpa3UuZGs+CitDb3B5cmlnaHQgMjAxMCBKdWxpYSBMYXdhbGwgPGp1bGlhQGRpa3UuZGs+CitDb3B5cmlnaHQgMjAxMCBHaWxsZXMgTXVsbGVyIDxHaWxsZXMuTXVsbGVyQGxpcDYuZnI+CisKKworIEdldHRpbmcgQ29jY2luZWxsZQorfn5+fn5+fn5+fn5+fn5+fn5+fn4KKworVGhlIHNlbWFudGljIHBhdGNoZXMgaW5jbHVkZWQgaW4gdGhlIGtlcm5lbCB1c2UgZmVhdHVyZXMgYW5kIG9wdGlvbnMKK3doaWNoIGFyZSBwcm92aWRlZCBieSBDb2NjaW5lbGxlIHZlcnNpb24gMS4wLjAtcmMxMSBhbmQgYWJvdmUuCitVc2luZyBlYXJsaWVyIHZlcnNpb25zIHdpbGwgZmFpbCBhcyB0aGUgb3B0aW9uIG5hbWVzIHVzZWQgYnkKK3RoZSBDb2NjaW5lbGxlIGZpbGVzIGFuZCBjb2NjaWNoZWNrIGhhdmUgYmVlbiB1cGRhdGVkLgorCitDb2NjaW5lbGxlIGlzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSBwYWNrYWdlIG1hbmFnZXIKK29mIG1hbnkgZGlzdHJpYnV0aW9ucywgZS5nLiA6CisKKyAtIERlYmlhbgorIC0gRmVkb3JhCisgLSBVYnVudHUKKyAtIE9wZW5TVVNFCisgLSBBcmNoIExpbnV4CisgLSBOZXRCU0QKKyAtIEZyZWVCU0QKKworCitZb3UgY2FuIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gcmVsZWFzZWQgZnJvbSB0aGUgQ29jY2luZWxsZSBob21lcGFnZSBhdAoraHR0cDovL2NvY2NpbmVsbGUubGlwNi5mci8KKworSW5mb3JtYXRpb24gYW5kIHRpcHMgYWJvdXQgQ29jY2luZWxsZSBhcmUgYWxzbyBwcm92aWRlZCBvbiB0aGUgd2lraQorcGFnZXMgYXQgaHR0cDovL2NvY2NpLmVrc3RyYW5ldC5kaWt1LmRrL3dpa2kvZG9rdS5waHAKKworT25jZSB5b3UgaGF2ZSBpdCwgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKworICAgICAJLi9jb25maWd1cmUKKyAgICAgICAgbWFrZQorCithcyBhIHJlZ3VsYXIgdXNlciwgYW5kIGluc3RhbGwgaXQgd2l0aAorCisgICAgICAgIHN1ZG8gbWFrZSBpbnN0YWxsCisKKyBVc2luZyBDb2NjaW5lbGxlIG9uIHRoZSBMaW51eCBrZXJuZWwKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0EgQ29jY2luZWxsZS1zcGVjaWZpYyB0YXJnZXQgaXMgZGVmaW5lZCBpbiB0aGUgdG9wIGxldmVsCitNYWtlZmlsZS4gVGhpcyB0YXJnZXQgaXMgbmFtZWQgJ2NvY2NpY2hlY2snIGFuZCBjYWxscyB0aGUgJ2NvY2NpY2hlY2snCitmcm9udC1lbmQgaW4gdGhlICdzY3JpcHRzJyBkaXJlY3RvcnkuCisKK0ZvdXIgYmFzaWMgbW9kZXMgYXJlIGRlZmluZWQ6IHBhdGNoLCByZXBvcnQsIGNvbnRleHQsIGFuZCBvcmcuIFRoZSBtb2RlIHRvCit1c2UgaXMgc3BlY2lmaWVkIGJ5IHNldHRpbmcgdGhlIE1PREUgdmFyaWFibGUgd2l0aCAnTU9ERT08bW9kZT4nLgorCisncGF0Y2gnIHByb3Bvc2VzIGEgZml4LCB3aGVuIHBvc3NpYmxlLgorCisncmVwb3J0JyBnZW5lcmF0ZXMgYSBsaXN0IGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0OgorICBmaWxlOmxpbmU6Y29sdW1uLWNvbHVtbjogbWVzc2FnZQorCisnY29udGV4dCcgaGlnaGxpZ2h0cyBsaW5lcyBvZiBpbnRlcmVzdCBhbmQgdGhlaXIgY29udGV4dCBpbiBhCitkaWZmLWxpa2Ugc3R5bGUuTGluZXMgb2YgaW50ZXJlc3QgYXJlIGluZGljYXRlZCB3aXRoICctJy4KKworJ29yZycgZ2VuZXJhdGVzIGEgcmVwb3J0IGluIHRoZSBPcmcgbW9kZSBmb3JtYXQgb2YgRW1hY3MuCisKK05vdGUgdGhhdCBub3QgYWxsIHNlbWFudGljIHBhdGNoZXMgaW1wbGVtZW50IGFsbCBtb2Rlcy4gRm9yIGVhc3kgdXNlCitvZiBDb2NjaW5lbGxlLCB0aGUgZGVmYXVsdCBtb2RlIGlzICJyZXBvcnQiLgorCitUd28gb3RoZXIgbW9kZXMgcHJvdmlkZSBzb21lIGNvbW1vbiBjb21iaW5hdGlvbnMgb2YgdGhlc2UgbW9kZXMuCisKKydjaGFpbicgdHJpZXMgdGhlIHByZXZpb3VzIG1vZGVzIGluIHRoZSBvcmRlciBhYm92ZSB1bnRpbCBvbmUgc3VjY2VlZHMuCisKKydyZXArY3R4dCcgcnVucyBzdWNjZXNzaXZlbHkgdGhlIHJlcG9ydCBtb2RlIGFuZCB0aGUgY29udGV4dCBtb2RlLgorCSAgIEl0IHNob3VsZCBiZSB1c2VkIHdpdGggdGhlIEMgb3B0aW9uIChkZXNjcmliZWQgbGF0ZXIpCisJICAgd2hpY2ggY2hlY2tzIHRoZSBjb2RlIG9uIGEgZmlsZSBiYXNpcy4KKworRXhhbXBsZXM6CisJVG8gbWFrZSBhIHJlcG9ydCBmb3IgZXZlcnkgc2VtYW50aWMgcGF0Y2gsIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CisKKwkJbWFrZSBjb2NjaWNoZWNrIE1PREU9cmVwb3J0CisKKwlUbyBwcm9kdWNlIHBhdGNoZXMsIHJ1bjoKKworCQltYWtlIGNvY2NpY2hlY2sgTU9ERT1wYXRjaAorCisKK1RoZSBjb2NjaWNoZWNrIHRhcmdldCBhcHBsaWVzIGV2ZXJ5IHNlbWFudGljIHBhdGNoIGF2YWlsYWJsZSBpbiB0aGUKK3N1Yi1kaXJlY3RvcmllcyBvZiAnc2NyaXB0cy9jb2NjaW5lbGxlJyB0byB0aGUgZW50aXJlIExpbnV4IGtlcm5lbC4KKworRm9yIGVhY2ggc2VtYW50aWMgcGF0Y2gsIGEgY29tbWl0IG1lc3NhZ2UgaXMgcHJvcG9zZWQuICBJdCBnaXZlcyBhCitkZXNjcmlwdGlvbiBvZiB0aGUgcHJvYmxlbSBiZWluZyBjaGVja2VkIGJ5IHRoZSBzZW1hbnRpYyBwYXRjaCwgYW5kCitpbmNsdWRlcyBhIHJlZmVyZW5jZSB0byBDb2NjaW5lbGxlLgorCitBcyBhbnkgc3RhdGljIGNvZGUgYW5hbHl6ZXIsIENvY2NpbmVsbGUgcHJvZHVjZXMgZmFsc2UKK3Bvc2l0aXZlcy4gVGh1cywgcmVwb3J0cyBtdXN0IGJlIGNhcmVmdWxseSBjaGVja2VkLCBhbmQgcGF0Y2hlcworcmV2aWV3ZWQuCisKK1RvIGVuYWJsZSB2ZXJib3NlIG1lc3NhZ2VzIHNldCB0aGUgVj0gdmFyaWFibGUsIGZvciBleGFtcGxlOgorCisgICBtYWtlIGNvY2NpY2hlY2sgTU9ERT1yZXBvcnQgVj0xCisKK0J5IGRlZmF1bHQsIGNvY2NpY2hlY2sgdHJpZXMgdG8gcnVuIGFzIHBhcmFsbGVsIGFzIHBvc3NpYmxlLiBUbyBjaGFuZ2UKK3RoZSBwYXJhbGxlbGlzbSwgc2V0IHRoZSBKPSB2YXJpYWJsZS4gRm9yIGV4YW1wbGUsIHRvIHJ1biBhY3Jvc3MgNCBDUFVzOgorCisgICBtYWtlIGNvY2NpY2hlY2sgTU9ERT1yZXBvcnQgSj00CisKKworIFVzaW5nIENvY2NpbmVsbGUgd2l0aCBhIHNpbmdsZSBzZW1hbnRpYyBwYXRjaAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworVGhlIG9wdGlvbmFsIG1ha2UgdmFyaWFibGUgQ09DQ0kgY2FuIGJlIHVzZWQgdG8gY2hlY2sgYSBzaW5nbGUKK3NlbWFudGljIHBhdGNoLiBJbiB0aGF0IGNhc2UsIHRoZSB2YXJpYWJsZSBtdXN0IGJlIGluaXRpYWxpemVkIHdpdGgKK3RoZSBuYW1lIG9mIHRoZSBzZW1hbnRpYyBwYXRjaCB0byBhcHBseS4KKworRm9yIGluc3RhbmNlOgorCisJbWFrZSBjb2NjaWNoZWNrIENPQ0NJPTxteV9TUC5jb2NjaT4gTU9ERT1wYXRjaAorb3IKKwltYWtlIGNvY2NpY2hlY2sgQ09DQ0k9PG15X1NQLmNvY2NpPiBNT0RFPXJlcG9ydAorCisKKyBDb250cm9sbGluZyBXaGljaCBGaWxlcyBhcmUgUHJvY2Vzc2VkIGJ5IENvY2NpbmVsbGUKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorQnkgZGVmYXVsdCB0aGUgZW50aXJlIGtlcm5lbCBzb3VyY2UgdHJlZSBpcyBjaGVja2VkLgorCitUbyBhcHBseSBDb2NjaW5lbGxlIHRvIGEgc3BlY2lmaWMgZGlyZWN0b3J5LCBNPSBjYW4gYmUgdXNlZC4KK0ZvciBleGFtcGxlLCB0byBjaGVjayBkcml2ZXJzL25ldC93aXJlbGVzcy8gb25lIG1heSB3cml0ZToKKworICAgIG1ha2UgY29jY2ljaGVjayBNPWRyaXZlcnMvbmV0L3dpcmVsZXNzLworCitUbyBhcHBseSBDb2NjaW5lbGxlIG9uIGEgZmlsZSBiYXNpcywgaW5zdGVhZCBvZiBhIGRpcmVjdG9yeSBiYXNpcywgdGhlCitmb2xsb3dpbmcgY29tbWFuZCBtYXkgYmUgdXNlZDoKKworICAgIG1ha2UgQz0xIENIRUNLPSJzY3JpcHRzL2NvY2NpY2hlY2siCisKK1RvIGNoZWNrIG9ubHkgbmV3bHkgZWRpdGVkIGNvZGUsIHVzZSB0aGUgdmFsdWUgMiBmb3IgdGhlIEMgZmxhZywgaS5lLgorCisgICAgbWFrZSBDPTIgQ0hFQ0s9InNjcmlwdHMvY29jY2ljaGVjayIKKworSW4gdGhlc2UgbW9kZXMsIHdoaWNoIHdvcmtzIG9uIGEgZmlsZSBiYXNpcywgdGhlcmUgaXMgbm8gaW5mb3JtYXRpb24KK2Fib3V0IHNlbWFudGljIHBhdGNoZXMgZGlzcGxheWVkLCBhbmQgbm8gY29tbWl0IG1lc3NhZ2UgcHJvcG9zZWQuCisKK1RoaXMgcnVucyBldmVyeSBzZW1hbnRpYyBwYXRjaCBpbiBzY3JpcHRzL2NvY2NpbmVsbGUgYnkgZGVmYXVsdC4gVGhlCitDT0NDSSB2YXJpYWJsZSBtYXkgYWRkaXRpb25hbGx5IGJlIHVzZWQgdG8gb25seSBhcHBseSBhIHNpbmdsZQorc2VtYW50aWMgcGF0Y2ggYXMgc2hvd24gaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24uCisKK1RoZSAicmVwb3J0IiBtb2RlIGlzIHRoZSBkZWZhdWx0LiBZb3UgY2FuIHNlbGVjdCBhbm90aGVyIG9uZSB3aXRoIHRoZQorTU9ERSB2YXJpYWJsZSBleHBsYWluZWQgYWJvdmUuCisKKyBBZGRpdGlvbmFsIGZsYWdzCit+fn5+fn5+fn5+fn5+fn5+fn4KKworQWRkaXRpb25hbCBmbGFncyBjYW4gYmUgcGFzc2VkIHRvIHNwYXRjaCB0aHJvdWdoIHRoZSBTUEZMQUdTCit2YXJpYWJsZS4KKworICAgIG1ha2UgU1BGTEFHUz0tLXVzZS1nbGltcHNlIGNvY2NpY2hlY2sKKyAgICBtYWtlIFNQRkxBR1M9LS11c2UtaWR1dGlscyBjb2NjaWNoZWNrCisKK1NlZSBzcGF0Y2ggLS1oZWxwIHRvIGxlYXJuIG1vcmUgYWJvdXQgc3BhdGNoIG9wdGlvbnMuCisKK05vdGUgdGhhdCB0aGUgJy0tdXNlLWdsaW1wc2UnIGFuZCAnLS11c2UtaWR1dGlscycgb3B0aW9ucworcmVxdWlyZSBleHRlcm5hbCB0b29scyBmb3IgaW5kZXhpbmcgdGhlIGNvZGUuIE5vbmUgb2YgdGhlbSBpcwordGh1cyBhY3RpdmUgYnkgZGVmYXVsdC4gSG93ZXZlciwgYnkgaW5kZXhpbmcgdGhlIGNvZGUgd2l0aAorb25lIG9mIHRoZXNlIHRvb2xzLCBhbmQgYWNjb3JkaW5nIHRvIHRoZSBjb2NjaSBmaWxlIHVzZWQsCitzcGF0Y2ggY291bGQgcHJvY2VlZCB0aGUgZW50aXJlIGNvZGUgYmFzZSBtb3JlIHF1aWNrbHkuCisKKyBQcm9wb3NpbmcgbmV3IHNlbWFudGljIHBhdGNoZXMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK05ldyBzZW1hbnRpYyBwYXRjaGVzIGNhbiBiZSBwcm9wb3NlZCBhbmQgc3VibWl0dGVkIGJ5IGtlcm5lbAorZGV2ZWxvcGVycy4gRm9yIHNha2Ugb2YgY2xhcml0eSwgdGhleSBzaG91bGQgYmUgb3JnYW5pemVkIGluIHRoZQorc3ViLWRpcmVjdG9yaWVzIG9mICdzY3JpcHRzL2NvY2NpbmVsbGUvJy4KKworCisgRGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlICdyZXBvcnQnIG1vZGUKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworJ3JlcG9ydCcgZ2VuZXJhdGVzIGEgbGlzdCBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDoKKyAgZmlsZTpsaW5lOmNvbHVtbi1jb2x1bW46IG1lc3NhZ2UKKworRXhhbXBsZToKKworUnVubmluZworCisJbWFrZSBjb2NjaWNoZWNrIE1PREU9cmVwb3J0IENPQ0NJPXNjcmlwdHMvY29jY2luZWxsZS9hcGkvZXJyX2Nhc3QuY29jY2kKKword2lsbCBleGVjdXRlIHRoZSBmb2xsb3dpbmcgcGFydCBvZiB0aGUgU21QTCBzY3JpcHQuCisKKzxzbXBsPgorQHIgZGVwZW5kcyBvbiAhY29udGV4dCAmJiAhcGF0Y2ggJiYgKG9yZyB8fCByZXBvcnQpQAorZXhwcmVzc2lvbiB4OworcG9zaXRpb24gcDsKK0BACisKKyBFUlJfUFRSQHAoUFRSX0VSUih4KSkKKworQHNjcmlwdDpweXRob24gZGVwZW5kcyBvbiByZXBvcnRACitwIDw8IHIucDsKK3ggPDwgci54OworQEAKKworbXNnPSJFUlJfQ0FTVCBjYW4gYmUgdXNlZCB3aXRoICVzIiAlICh4KQorY29jY2lsaWIucmVwb3J0LnByaW50X3JlcG9ydChwWzBdLCBtc2cpCis8L3NtcGw+CisKK1RoaXMgU21QTCBleGNlcnB0IGdlbmVyYXRlcyBlbnRyaWVzIG9uIHRoZSBzdGFuZGFyZCBvdXRwdXQsIGFzCitpbGx1c3RyYXRlZCBiZWxvdzoKKworL2hvbWUvdXNlci9saW51eC9jcnlwdG8vY3RyLmM6MTg4OjktMTY6IEVSUl9DQVNUIGNhbiBiZSB1c2VkIHdpdGggYWxnCisvaG9tZS91c2VyL2xpbnV4L2NyeXB0by9hdXRoZW5jLmM6NjE5OjktMTY6IEVSUl9DQVNUIGNhbiBiZSB1c2VkIHdpdGggYXV0aAorL2hvbWUvdXNlci9saW51eC9jcnlwdG8veHRzLmM6MjI3OjktMTY6IEVSUl9DQVNUIGNhbiBiZSB1c2VkIHdpdGggYWxnCisKKworIERldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSAncGF0Y2gnIG1vZGUKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworV2hlbiB0aGUgJ3BhdGNoJyBtb2RlIGlzIGF2YWlsYWJsZSwgaXQgcHJvcG9zZXMgYSBmaXggZm9yIGVhY2ggcHJvYmxlbQoraWRlbnRpZmllZC4KKworRXhhbXBsZToKKworUnVubmluZworCW1ha2UgY29jY2ljaGVjayBNT0RFPXBhdGNoIENPQ0NJPXNjcmlwdHMvY29jY2luZWxsZS9hcGkvZXJyX2Nhc3QuY29jY2kKKword2lsbCBleGVjdXRlIHRoZSBmb2xsb3dpbmcgcGFydCBvZiB0aGUgU21QTCBzY3JpcHQuCisKKzxzbXBsPgorQCBkZXBlbmRzIG9uICFjb250ZXh0ICYmIHBhdGNoICYmICFvcmcgJiYgIXJlcG9ydCBACitleHByZXNzaW9uIHg7CitAQAorCistIEVSUl9QVFIoUFRSX0VSUih4KSkKKysgRVJSX0NBU1QoeCkKKzwvc21wbD4KKworVGhpcyBTbVBMIGV4Y2VycHQgZ2VuZXJhdGVzIHBhdGNoIGh1bmtzIG9uIHRoZSBzdGFuZGFyZCBvdXRwdXQsIGFzCitpbGx1c3RyYXRlZCBiZWxvdzoKKworZGlmZiAtdSAtcCBhL2NyeXB0by9jdHIuYyBiL2NyeXB0by9jdHIuYworLS0tIGEvY3J5cHRvL2N0ci5jIDIwMTAtMDUtMjYgMTA6NDk6MzguMDAwMDAwMDAwICswMjAwCisrKysgYi9jcnlwdG8vY3RyLmMgMjAxMC0wNi0wMyAyMzo0NDo0OS4wMDAwMDAwMDAgKzAyMDAKK0BAIC0xODUsNyArMTg1LDcgQEAgc3RhdGljIHN0cnVjdCBjcnlwdG9faW5zdGFuY2UgKmNyeXB0b19jdAorIAlhbGcgPSBjcnlwdG9fYXR0cl9hbGcodGJbMV0sIENSWVBUT19BTEdfVFlQRV9DSVBIRVIsCisgCQkJCSAgQ1JZUFRPX0FMR19UWVBFX01BU0spOworIAlpZiAoSVNfRVJSKGFsZykpCistCQlyZXR1cm4gRVJSX1BUUihQVFJfRVJSKGFsZykpOworKwkJcmV0dXJuIEVSUl9DQVNUKGFsZyk7CisgCisgCS8qIEJsb2NrIHNpemUgbXVzdCBiZSA+PSA0IGJ5dGVzLiAqLworIAllcnIgPSAtRUlOVkFMOworCisgRGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlICdjb250ZXh0JyBtb2RlCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKydjb250ZXh0JyBoaWdobGlnaHRzIGxpbmVzIG9mIGludGVyZXN0IGFuZCB0aGVpciBjb250ZXh0CitpbiBhIGRpZmYtbGlrZSBzdHlsZS4KKworTk9URTogVGhlIGRpZmYtbGlrZSBvdXRwdXQgZ2VuZXJhdGVkIGlzIE5PVCBhbiBhcHBsaWNhYmxlIHBhdGNoLiBUaGUKKyAgICAgIGludGVudCBvZiB0aGUgJ2NvbnRleHQnIG1vZGUgaXMgdG8gaGlnaGxpZ2h0IHRoZSBpbXBvcnRhbnQgbGluZXMKKyAgICAgIChhbm5vdGF0ZWQgd2l0aCBtaW51cywgJy0nKSBhbmQgZ2l2ZXMgc29tZSBzdXJyb3VuZGluZyBjb250ZXh0CisgICAgICBsaW5lcyBhcm91bmQuIFRoaXMgb3V0cHV0IGNhbiBiZSB1c2VkIHdpdGggdGhlIGRpZmYgbW9kZSBvZgorICAgICAgRW1hY3MgdG8gcmV2aWV3IHRoZSBjb2RlLgorCitFeGFtcGxlOgorCitSdW5uaW5nCisJbWFrZSBjb2NjaWNoZWNrIE1PREU9Y29udGV4dCBDT0NDST1zY3JpcHRzL2NvY2NpbmVsbGUvYXBpL2Vycl9jYXN0LmNvY2NpCisKK3dpbGwgZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHBhcnQgb2YgdGhlIFNtUEwgc2NyaXB0LgorCis8c21wbD4KK0AgZGVwZW5kcyBvbiBjb250ZXh0ICYmICFwYXRjaCAmJiAhb3JnICYmICFyZXBvcnRACitleHByZXNzaW9uIHg7CitAQAorCisqIEVSUl9QVFIoUFRSX0VSUih4KSkKKzwvc21wbD4KKworVGhpcyBTbVBMIGV4Y2VycHQgZ2VuZXJhdGVzIGRpZmYgaHVua3Mgb24gdGhlIHN0YW5kYXJkIG91dHB1dCwgYXMKK2lsbHVzdHJhdGVkIGJlbG93OgorCitkaWZmIC11IC1wIC9ob21lL3VzZXIvbGludXgvY3J5cHRvL2N0ci5jIC90bXAvbm90aGluZworLS0tIC9ob21lL3VzZXIvbGludXgvY3J5cHRvL2N0ci5jCTIwMTAtMDUtMjYgMTA6NDk6MzguMDAwMDAwMDAwICswMjAwCisrKysgL3RtcC9ub3RoaW5nCitAQCAtMTg1LDcgKzE4NSw2IEBAIHN0YXRpYyBzdHJ1Y3QgY3J5cHRvX2luc3RhbmNlICpjcnlwdG9fY3QKKyAJYWxnID0gY3J5cHRvX2F0dHJfYWxnKHRiWzFdLCBDUllQVE9fQUxHX1RZUEVfQ0lQSEVSLAorIAkJCQkgIENSWVBUT19BTEdfVFlQRV9NQVNLKTsKKyAJaWYgKElTX0VSUihhbGcpKQorLQkJcmV0dXJuIEVSUl9QVFIoUFRSX0VSUihhbGcpKTsKKyAKKyAJLyogQmxvY2sgc2l6ZSBtdXN0IGJlID49IDQgYnl0ZXMuICovCisgCWVyciA9IC1FSU5WQUw7CisKKyBEZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgJ29yZycgbW9kZQorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisnb3JnJyBnZW5lcmF0ZXMgYSByZXBvcnQgaW4gdGhlIE9yZyBtb2RlIGZvcm1hdCBvZiBFbWFjcy4KKworRXhhbXBsZToKKworUnVubmluZworCW1ha2UgY29jY2ljaGVjayBNT0RFPW9yZyBDT0NDST1zY3JpcHRzL2NvY2NpbmVsbGUvYXBpL2Vycl9jYXN0LmNvY2NpCisKK3dpbGwgZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHBhcnQgb2YgdGhlIFNtUEwgc2NyaXB0LgorCis8c21wbD4KK0ByIGRlcGVuZHMgb24gIWNvbnRleHQgJiYgIXBhdGNoICYmIChvcmcgfHwgcmVwb3J0KUAKK2V4cHJlc3Npb24geDsKK3Bvc2l0aW9uIHA7CitAQAorCisgRVJSX1BUUkBwKFBUUl9FUlIoeCkpCisKK0BzY3JpcHQ6cHl0aG9uIGRlcGVuZHMgb24gb3JnQAorcCA8PCByLnA7Cit4IDw8IHIueDsKK0BACisKK21zZz0iRVJSX0NBU1QgY2FuIGJlIHVzZWQgd2l0aCAlcyIgJSAoeCkKK21zZ19zYWZlPW1zZy5yZXBsYWNlKCJbIiwiQCgiKS5yZXBsYWNlKCJdIiwiKSIpCitjb2NjaWxpYi5vcmcucHJpbnRfdG9kbyhwWzBdLCBtc2dfc2FmZSkKKzwvc21wbD4KKworVGhpcyBTbVBMIGV4Y2VycHQgZ2VuZXJhdGVzIE9yZyBlbnRyaWVzIG9uIHRoZSBzdGFuZGFyZCBvdXRwdXQsIGFzCitpbGx1c3RyYXRlZCBiZWxvdzoKKworKiBUT0RPIFtbdmlldzovaG9tZS91c2VyL2xpbnV4L2NyeXB0by9jdHIuYzo6ZmFjZT1vdmwtZmFjZTE6OmxpbmI9MTg4Ojpjb2xiPTk6OmNvbGU9MTZdW0VSUl9DQVNUIGNhbiBiZSB1c2VkIHdpdGggYWxnXV0KKyogVE9ETyBbW3ZpZXc6L2hvbWUvdXNlci9saW51eC9jcnlwdG8vYXV0aGVuYy5jOjpmYWNlPW92bC1mYWNlMTo6bGluYj02MTk6OmNvbGI9OTo6Y29sZT0xNl1bRVJSX0NBU1QgY2FuIGJlIHVzZWQgd2l0aCBhdXRoXV0KKyogVE9ETyBbW3ZpZXc6L2hvbWUvdXNlci9saW51eC9jcnlwdG8veHRzLmM6OmZhY2U9b3ZsLWZhY2UxOjpsaW5iPTIyNzo6Y29sYj05Ojpjb2xlPTE2XVtFUlJfQ0FTVCBjYW4gYmUgdXNlZCB3aXRoIGFsZ11dCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Nvbm5lY3Rvci8uZ2l0aWdub3JlIGIvRG9jdW1lbnRhdGlvbi9jb25uZWN0b3IvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmI5YzMyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9jb25uZWN0b3IvLmdpdGlnbm9yZQpAQCAtMCwwICsxIEBACit1Y29uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Nvbm5lY3Rvci9NYWtlZmlsZSBiL0RvY3VtZW50YXRpb24vY29ubmVjdG9yL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5OGU0ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Nvbm5lY3Rvci9NYWtlZmlsZQpAQCAtMCwwICsxLDE2IEBACitpZm5lcSAoJChDT05GSUdfQ09OTkVDVE9SKSwpCitvYmotbSArPSBjbl90ZXN0Lm8KK2VuZGlmCisKKyMgTGlzdCBvZiBwcm9ncmFtcyB0byBidWlsZAoraG9zdHByb2dzLXkgOj0gdWNvbgorCisjIFRlbGwga2J1aWxkIHRvIGFsd2F5cyBidWlsZCB0aGUgcHJvZ3JhbXMKK2Fsd2F5cyA6PSAkKGhvc3Rwcm9ncy15KQorCitIT1NUQ0ZMQUdTX3Vjb24ubyArPSAtSSQob2JqdHJlZSkvdXNyL2luY2x1ZGUKKworYWxsOiBtb2R1bGVzCisKK21vZHVsZXMgY2xlYW46CisJJChNQUtFKSAtQyAuLi8uLiBTVUJESVJTPSQoUFdEKSAkQApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9jb25uZWN0b3IvY25fdGVzdC5jIGIvRG9jdW1lbnRhdGlvbi9jb25uZWN0b3IvY25fdGVzdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMmNjOTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Nvbm5lY3Rvci9jbl90ZXN0LmMKQEAgLTAsMCArMSwyMDEgQEAKKy8qCisgKiAJY25fdGVzdC5jCisgKiAKKyAqIDIwMDQrIENvcHlyaWdodCAoYykgRXZnZW5peSBQb2x5YWtvdiA8emJyQGlvcmVtYXAubmV0PgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisKKyNkZWZpbmUgcHJfZm10KGZtdCkgImNuX3Rlc3Q6ICIgZm10CisKKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGVwYXJhbS5oPgorI2luY2x1ZGUgPGxpbnV4L3NrYnVmZi5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC90aW1lci5oPgorCisjaW5jbHVkZSA8bGludXgvY29ubmVjdG9yLmg+CisKK3N0YXRpYyBzdHJ1Y3QgY2JfaWQgY25fdGVzdF9pZCA9IHsgQ05fTkVUTElOS19VU0VSUyArIDMsIDB4NDU2IH07CitzdGF0aWMgY2hhciBjbl90ZXN0X25hbWVbXSA9ICJjbl90ZXN0IjsKK3N0YXRpYyBzdHJ1Y3Qgc29jayAqbmxzOworc3RhdGljIHN0cnVjdCB0aW1lcl9saXN0IGNuX3Rlc3RfdGltZXI7CisKK3N0YXRpYyB2b2lkIGNuX3Rlc3RfY2FsbGJhY2soc3RydWN0IGNuX21zZyAqbXNnLCBzdHJ1Y3QgbmV0bGlua19za2JfcGFybXMgKm5zcCkKK3sKKwlwcl9pbmZvKCIlczogJWx1OiBpZHg9JXgsIHZhbD0leCwgc2VxPSV1LCBhY2s9JXUsIGxlbj0lZDogJXMuXG4iLAorCSAgICAgICAgX19mdW5jX18sIGppZmZpZXMsIG1zZy0+aWQuaWR4LCBtc2ctPmlkLnZhbCwKKwkgICAgICAgIG1zZy0+c2VxLCBtc2ctPmFjaywgbXNnLT5sZW4sCisJICAgICAgICBtc2ctPmxlbiA/IChjaGFyICopbXNnLT5kYXRhIDogIiIpOworfQorCisvKgorICogRG8gbm90IHJlbW92ZSB0aGlzIGZ1bmN0aW9uIGV2ZW4gaWYgbm8gb25lIGlzIHVzaW5nIGl0IGFzCisgKiB0aGlzIGlzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGdldCBub3RpZmljYXRpb25zIGFib3V0IG5ldworICogY29ubmVjdG9yIHVzZXIgcmVnaXN0cmF0aW9uCisgKi8KKyNpZiAwCitzdGF0aWMgaW50IGNuX3Rlc3Rfd2FudF9ub3RpZnkodm9pZCkKK3sKKwlzdHJ1Y3QgY25fY3RsX21zZyAqY3RsOworCXN0cnVjdCBjbl9ub3RpZnlfcmVxICpyZXE7CisJc3RydWN0IGNuX21zZyAqbXNnID0gTlVMTDsKKwlpbnQgc2l6ZSwgc2l6ZTA7CisJc3RydWN0IHNrX2J1ZmYgKnNrYjsKKwlzdHJ1Y3Qgbmxtc2doZHIgKm5saDsKKwl1MzIgZ3JvdXAgPSAxOworCisJc2l6ZTAgPSBzaXplb2YoKm1zZykgKyBzaXplb2YoKmN0bCkgKyAzICogc2l6ZW9mKCpyZXEpOworCisJc2l6ZSA9IE5MTVNHX1NQQUNFKHNpemUwKTsKKworCXNrYiA9IGFsbG9jX3NrYihzaXplLCBHRlBfQVRPTUlDKTsKKwlpZiAoIXNrYikgeworCQlwcl9lcnIoImZhaWxlZCB0byBhbGxvY2F0ZSBuZXcgc2tiIHdpdGggc2l6ZT0ldVxuIiwgc2l6ZSk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCW5saCA9IG5sbXNnX3B1dChza2IsIDAsIDB4MTIzLCBOTE1TR19ET05FLCBzaXplIC0gc2l6ZW9mKCpubGgpLCAwKTsKKwlpZiAoIW5saCkgeworCQlrZnJlZV9za2Ioc2tiKTsKKwkJcmV0dXJuIC1FTVNHU0laRTsKKwl9CisKKwltc2cgPSBubG1zZ19kYXRhKG5saCk7CisKKwltZW1zZXQobXNnLCAwLCBzaXplMCk7CisKKwltc2ctPmlkLmlkeCA9IC0xOworCW1zZy0+aWQudmFsID0gLTE7CisJbXNnLT5zZXEgPSAweDEyMzsKKwltc2ctPmFjayA9IDB4MzQ1OworCW1zZy0+bGVuID0gc2l6ZTAgLSBzaXplb2YoKm1zZyk7CisKKwljdGwgPSAoc3RydWN0IGNuX2N0bF9tc2cgKikobXNnICsgMSk7CisKKwljdGwtPmlkeF9ub3RpZnlfbnVtID0gMTsKKwljdGwtPnZhbF9ub3RpZnlfbnVtID0gMjsKKwljdGwtPmdyb3VwID0gZ3JvdXA7CisJY3RsLT5sZW4gPSBtc2ctPmxlbiAtIHNpemVvZigqY3RsKTsKKworCXJlcSA9IChzdHJ1Y3QgY25fbm90aWZ5X3JlcSAqKShjdGwgKyAxKTsKKworCS8qCisJICogSWR4LgorCSAqLworCXJlcS0+Zmlyc3QgPSBjbl90ZXN0X2lkLmlkeDsKKwlyZXEtPnJhbmdlID0gMTA7CisKKwkvKgorCSAqIFZhbCAwLgorCSAqLworCXJlcSsrOworCXJlcS0+Zmlyc3QgPSBjbl90ZXN0X2lkLnZhbDsKKwlyZXEtPnJhbmdlID0gMTA7CisKKwkvKgorCSAqIFZhbCAxLgorCSAqLworCXJlcSsrOworCXJlcS0+Zmlyc3QgPSBjbl90ZXN0X2lkLnZhbCArIDIwOworCXJlcS0+cmFuZ2UgPSAxMDsKKworCU5FVExJTktfQ0Ioc2tiKS5kc3RfZ3JvdXAgPSBjdGwtPmdyb3VwOworCS8vbmV0bGlua19icm9hZGNhc3QobmxzLCBza2IsIDAsIGN0bC0+Z3JvdXAsIEdGUF9BVE9NSUMpOworCW5ldGxpbmtfdW5pY2FzdChubHMsIHNrYiwgMCwgMCk7CisKKwlwcl9pbmZvKCJyZXF1ZXN0IHdhcyBzZW50OiBncm91cD0weCV4XG4iLCBjdGwtPmdyb3VwKTsKKworCXJldHVybiAwOworfQorI2VuZGlmCisKK3N0YXRpYyB1MzIgY25fdGVzdF90aW1lcl9jb3VudGVyOworc3RhdGljIHZvaWQgY25fdGVzdF90aW1lcl9mdW5jKHVuc2lnbmVkIGxvbmcgX19kYXRhKQoreworCXN0cnVjdCBjbl9tc2cgKm07CisJY2hhciBkYXRhWzMyXTsKKworCXByX2RlYnVnKCIlczogdGltZXIgZmlyZWQgd2l0aCBkYXRhICVsdVxuIiwgX19mdW5jX18sIF9fZGF0YSk7CisKKwltID0ga3phbGxvYyhzaXplb2YoKm0pICsgc2l6ZW9mKGRhdGEpLCBHRlBfQVRPTUlDKTsKKwlpZiAobSkgeworCisJCW1lbWNweSgmbS0+aWQsICZjbl90ZXN0X2lkLCBzaXplb2YobS0+aWQpKTsKKwkJbS0+c2VxID0gY25fdGVzdF90aW1lcl9jb3VudGVyOworCQltLT5sZW4gPSBzaXplb2YoZGF0YSk7CisKKwkJbS0+bGVuID0KKwkJICAgIHNjbnByaW50ZihkYXRhLCBzaXplb2YoZGF0YSksICJjb3VudGVyID0gJXUiLAorCQkJICAgICAgY25fdGVzdF90aW1lcl9jb3VudGVyKSArIDE7CisKKwkJbWVtY3B5KG0gKyAxLCBkYXRhLCBtLT5sZW4pOworCisJCWNuX25ldGxpbmtfc2VuZChtLCAwLCAwLCBHRlBfQVRPTUlDKTsKKwkJa2ZyZWUobSk7CisJfQorCisJY25fdGVzdF90aW1lcl9jb3VudGVyKys7CisKKwltb2RfdGltZXIoJmNuX3Rlc3RfdGltZXIsIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKDEwMDApKTsKK30KKworc3RhdGljIGludCBjbl90ZXN0X2luaXQodm9pZCkKK3sKKwlpbnQgZXJyOworCisJZXJyID0gY25fYWRkX2NhbGxiYWNrKCZjbl90ZXN0X2lkLCBjbl90ZXN0X25hbWUsIGNuX3Rlc3RfY2FsbGJhY2spOworCWlmIChlcnIpCisJCWdvdG8gZXJyX291dDsKKwljbl90ZXN0X2lkLnZhbCsrOworCWVyciA9IGNuX2FkZF9jYWxsYmFjaygmY25fdGVzdF9pZCwgY25fdGVzdF9uYW1lLCBjbl90ZXN0X2NhbGxiYWNrKTsKKwlpZiAoZXJyKSB7CisJCWNuX2RlbF9jYWxsYmFjaygmY25fdGVzdF9pZCk7CisJCWdvdG8gZXJyX291dDsKKwl9CisKKwlzZXR1cF90aW1lcigmY25fdGVzdF90aW1lciwgY25fdGVzdF90aW1lcl9mdW5jLCAwKTsKKwltb2RfdGltZXIoJmNuX3Rlc3RfdGltZXIsIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKDEwMDApKTsKKworCXByX2luZm8oImluaXRpYWxpemVkIHdpdGggaWQ9eyV1LiV1fVxuIiwKKwkJY25fdGVzdF9pZC5pZHgsIGNuX3Rlc3RfaWQudmFsKTsKKworCXJldHVybiAwOworCisgICAgICBlcnJfb3V0OgorCWlmIChubHMgJiYgbmxzLT5za19zb2NrZXQpCisJCXNvY2tfcmVsZWFzZShubHMtPnNrX3NvY2tldCk7CisKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgdm9pZCBjbl90ZXN0X2Zpbmkodm9pZCkKK3sKKwlkZWxfdGltZXJfc3luYygmY25fdGVzdF90aW1lcik7CisJY25fZGVsX2NhbGxiYWNrKCZjbl90ZXN0X2lkKTsKKwljbl90ZXN0X2lkLnZhbC0tOworCWNuX2RlbF9jYWxsYmFjaygmY25fdGVzdF9pZCk7CisJaWYgKG5scyAmJiBubHMtPnNrX3NvY2tldCkKKwkJc29ja19yZWxlYXNlKG5scy0+c2tfc29ja2V0KTsKK30KKworbW9kdWxlX2luaXQoY25fdGVzdF9pbml0KTsKK21vZHVsZV9leGl0KGNuX3Rlc3RfZmluaSk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9BVVRIT1IoIkV2Z2VuaXkgUG9seWFrb3YgPHpickBpb3JlbWFwLm5ldD4iKTsKK01PRFVMRV9ERVNDUklQVElPTigiQ29ubmVjdG9yJ3MgdGVzdCBtb2R1bGUiKTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY29ubmVjdG9yL2Nvbm5lY3Rvci50eHQgYi9Eb2N1bWVudGF0aW9uL2Nvbm5lY3Rvci9jb25uZWN0b3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2MjE1ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Nvbm5lY3Rvci9jb25uZWN0b3IudHh0CkBAIC0wLDAgKzEsMTg4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitLZXJuZWwgQ29ubmVjdG9yLgorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitLZXJuZWwgY29ubmVjdG9yIC0gbmV3IG5ldGxpbmsgYmFzZWQgdXNlcnNwYWNlIDwtPiBrZXJuZWwgc3BhY2UgZWFzeQordG8gdXNlIGNvbW11bmljYXRpb24gbW9kdWxlLgorCitUaGUgQ29ubmVjdG9yIGRyaXZlciBtYWtlcyBpdCBlYXN5IHRvIGNvbm5lY3QgdmFyaW91cyBhZ2VudHMgdXNpbmcgYQorbmV0bGluayBiYXNlZCBuZXR3b3JrLiAgT25lIG11c3QgcmVnaXN0ZXIgYSBjYWxsYmFjayBhbmQgYW4gaWRlbnRpZmllci4KK1doZW4gdGhlIGRyaXZlciByZWNlaXZlcyBhIHNwZWNpYWwgbmV0bGluayBtZXNzYWdlIHdpdGggdGhlIGFwcHJvcHJpYXRlCitpZGVudGlmaWVyLCB0aGUgYXBwcm9wcmlhdGUgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQuCisKK0Zyb20gdGhlIHVzZXJzcGFjZSBwb2ludCBvZiB2aWV3IGl0J3MgcXVpdGUgc3RyYWlnaHRmb3J3YXJkOgorCisJc29ja2V0KCk7CisJYmluZCgpOworCXNlbmQoKTsKKwlyZWN2KCk7CisKK0J1dCBpZiBrZXJuZWxzcGFjZSB3YW50cyB0byB1c2UgdGhlIGZ1bGwgcG93ZXIgb2Ygc3VjaCBjb25uZWN0aW9ucywgdGhlCitkcml2ZXIgd3JpdGVyIG11c3QgY3JlYXRlIHNwZWNpYWwgc29ja2V0cywgbXVzdCBrbm93IGFib3V0IHN0cnVjdCBza19idWZmCitoYW5kbGluZywgZXRjLi4uICBUaGUgQ29ubmVjdG9yIGRyaXZlciBhbGxvd3MgYW55IGtlcm5lbHNwYWNlIGFnZW50cyB0byB1c2UKK25ldGxpbmsgYmFzZWQgbmV0d29ya2luZyBmb3IgaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIGluIGEgc2lnbmlmaWNhbnRseQorZWFzaWVyIHdheToKKworaW50IGNuX2FkZF9jYWxsYmFjayhzdHJ1Y3QgY2JfaWQgKmlkLCBjaGFyICpuYW1lLCB2b2lkICgqY2FsbGJhY2spIChzdHJ1Y3QgY25fbXNnICosIHN0cnVjdCBuZXRsaW5rX3NrYl9wYXJtcyAqKSk7Cit2b2lkIGNuX25ldGxpbmtfc2VuZF9tdWx0aShzdHJ1Y3QgY25fbXNnICptc2csIHUxNiBsZW4sIHUzMiBwb3J0aWQsIHUzMiBfX2dyb3VwLCBpbnQgZ2ZwX21hc2spOwordm9pZCBjbl9uZXRsaW5rX3NlbmQoc3RydWN0IGNuX21zZyAqbXNnLCB1MzIgcG9ydGlkLCB1MzIgX19ncm91cCwgaW50IGdmcF9tYXNrKTsKKworc3RydWN0IGNiX2lkCit7CisJX191MzIJCQlpZHg7CisJX191MzIJCQl2YWw7Cit9OworCitpZHggYW5kIHZhbCBhcmUgdW5pcXVlIGlkZW50aWZpZXJzIHdoaWNoIG11c3QgYmUgcmVnaXN0ZXJlZCBpbiB0aGUKK2Nvbm5lY3Rvci5oIGhlYWRlciBmb3IgaW4ta2VybmVsIHVzYWdlLiAgdm9pZCAoKmNhbGxiYWNrKSAodm9pZCAqKSBpcyBhCitjYWxsYmFjayBmdW5jdGlvbiB3aGljaCB3aWxsIGJlIGNhbGxlZCB3aGVuIGEgbWVzc2FnZSB3aXRoIGFib3ZlIGlkeC52YWwKK2lzIHJlY2VpdmVkIGJ5IHRoZSBjb25uZWN0b3IgY29yZS4gIFRoZSBhcmd1bWVudCBmb3IgdGhhdCBmdW5jdGlvbiBtdXN0CitiZSBkZXJlZmVyZW5jZWQgdG8gc3RydWN0IGNuX21zZyAqLgorCitzdHJ1Y3QgY25fbXNnCit7CisJc3RydWN0IGNiX2lkCQlpZDsKKworCV9fdTMyCQkJc2VxOworCV9fdTMyCQkJYWNrOworCisJX191MzIJCQlsZW47CQkvKiBMZW5ndGggb2YgdGhlIGZvbGxvd2luZyBkYXRhICovCisJX191OAkJCWRhdGFbMF07Cit9OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitDb25uZWN0b3IgaW50ZXJmYWNlcy4KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworaW50IGNuX2FkZF9jYWxsYmFjayhzdHJ1Y3QgY2JfaWQgKmlkLCBjaGFyICpuYW1lLCB2b2lkICgqY2FsbGJhY2spIChzdHJ1Y3QgY25fbXNnICosIHN0cnVjdCBuZXRsaW5rX3NrYl9wYXJtcyAqKSk7CisKKyBSZWdpc3RlcnMgbmV3IGNhbGxiYWNrIHdpdGggY29ubmVjdG9yIGNvcmUuCisKKyBzdHJ1Y3QgY2JfaWQgKmlkCQktIHVuaXF1ZSBjb25uZWN0b3IncyB1c2VyIGlkZW50aWZpZXIuCisJCQkJICBJdCBtdXN0IGJlIHJlZ2lzdGVyZWQgaW4gY29ubmVjdG9yLmggZm9yIGxlZ2FsIGluLWtlcm5lbCB1c2Vycy4KKyBjaGFyICpuYW1lCQkJLSBjb25uZWN0b3IncyBjYWxsYmFjayBzeW1ib2xpYyBuYW1lLgorIHZvaWQgKCpjYWxsYmFjaykgKHN0cnVjdCBjbi4uKQktIGNvbm5lY3RvcidzIGNhbGxiYWNrLgorCQkJCSAgY25fbXNnIGFuZCB0aGUgc2VuZGVyJ3MgY3JlZGVudGlhbHMKKworCit2b2lkIGNuX2RlbF9jYWxsYmFjayhzdHJ1Y3QgY2JfaWQgKmlkKTsKKworIFVucmVnaXN0ZXJzIG5ldyBjYWxsYmFjayB3aXRoIGNvbm5lY3RvciBjb3JlLgorCisgc3RydWN0IGNiX2lkICppZAkJLSB1bmlxdWUgY29ubmVjdG9yJ3MgdXNlciBpZGVudGlmaWVyLgorCisKK2ludCBjbl9uZXRsaW5rX3NlbmRfbXVsdGkoc3RydWN0IGNuX21zZyAqbXNnLCB1MTYgbGVuLCB1MzIgcG9ydGlkLCB1MzIgX19ncm91cHMsIGludCBnZnBfbWFzayk7CitpbnQgY25fbmV0bGlua19zZW5kKHN0cnVjdCBjbl9tc2cgKm1zZywgdTMyIHBvcnRpZCwgdTMyIF9fZ3JvdXBzLCBpbnQgZ2ZwX21hc2spOworCisgU2VuZHMgbWVzc2FnZSB0byB0aGUgc3BlY2lmaWVkIGdyb3Vwcy4gIEl0IGNhbiBiZSBzYWZlbHkgY2FsbGVkIGZyb20KKyBzb2Z0aXJxIGNvbnRleHQsIGJ1dCBtYXkgc2lsZW50bHkgZmFpbCB1bmRlciBzdHJvbmcgbWVtb3J5IHByZXNzdXJlLgorIElmIHRoZXJlIGFyZSBubyBsaXN0ZW5lcnMgZm9yIGdpdmVuIGdyb3VwIC1FU1JDSCBjYW4gYmUgcmV0dXJuZWQuCisKKyBzdHJ1Y3QgY25fbXNnICoJCS0gbWVzc2FnZSBoZWFkZXIod2l0aCBhdHRhY2hlZCBkYXRhKS4KKyB1MTYgbGVuCQkJLSBmb3IgKl9tdWx0aSBtdWx0aXBsZSBjbl9tc2cgbWVzc2FnZXMgY2FuIGJlIHNlbnQKKyB1MzIgcG9ydAkJCS0gZGVzdGluYXRpb24gcG9ydC4KKyAJCQkJICBJZiBub24temVybyB0aGUgbWVzc2FnZSB3aWxsIGJlIHNlbnQgdG8gdGhlCisJCQkJICBnaXZlbiBwb3J0LCB3aGljaCBzaG91bGQgYmUgc2V0IHRvIHRoZQorCQkJCSAgb3JpZ2luYWwgc2VuZGVyLgorIHUzMiBfX2dyb3VwCQkJLSBkZXN0aW5hdGlvbiBncm91cC4KKwkJCQkgIElmIHBvcnQgYW5kIF9fZ3JvdXAgaXMgemVybywgdGhlbiBhcHByb3ByaWF0ZSBncm91cCB3aWxsCisJCQkJICBiZSBzZWFyY2hlZCB0aHJvdWdoIGFsbCByZWdpc3RlcmVkIGNvbm5lY3RvciB1c2VycywKKwkJCQkgIGFuZCBtZXNzYWdlIHdpbGwgYmUgZGVsaXZlcmVkIHRvIHRoZSBncm91cCB3aGljaCB3YXMKKwkJCQkgIGNyZWF0ZWQgZm9yIHVzZXIgd2l0aCB0aGUgc2FtZSBJRCBhcyBpbiBtc2cuCisJCQkJICBJZiBfX2dyb3VwIGlzIG5vdCB6ZXJvLCB0aGVuIG1lc3NhZ2Ugd2lsbCBiZSBkZWxpdmVyZWQKKwkJCQkgIHRvIHRoZSBzcGVjaWZpZWQgZ3JvdXAuCisgaW50IGdmcF9tYXNrCQkJLSBHRlAgbWFzay4KKworIE5vdGU6IFdoZW4gcmVnaXN0ZXJpbmcgbmV3IGNhbGxiYWNrIHVzZXIsIGNvbm5lY3RvciBjb3JlIGFzc2lnbnMKKyBuZXRsaW5rIGdyb3VwIHRvIHRoZSB1c2VyIHdoaWNoIGlzIGVxdWFsIHRvIGl0cyBpZC5pZHguCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1Byb3RvY29sIGRlc2NyaXB0aW9uLgorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitUaGUgY3VycmVudCBmcmFtZXdvcmsgb2ZmZXJzIGEgdHJhbnNwb3J0IGxheWVyIHdpdGggZml4ZWQgaGVhZGVycy4gIFRoZQorcmVjb21tZW5kZWQgcHJvdG9jb2wgd2hpY2ggdXNlcyBzdWNoIGEgaGVhZGVyIGlzIGFzIGZvbGxvd2luZzoKKworbXNnLT5zZXEgYW5kIG1zZy0+YWNrIGFyZSB1c2VkIHRvIGRldGVybWluZSBtZXNzYWdlIGdlbmVhbG9neS4gIFdoZW4KK3NvbWVvbmUgc2VuZHMgYSBtZXNzYWdlLCB0aGV5IHVzZSBhIGxvY2FsbHkgdW5pcXVlIHNlcXVlbmNlIGFuZCByYW5kb20KK2Fja25vd2xlZGdlIG51bWJlci4gIFRoZSBzZXF1ZW5jZSBudW1iZXIgbWF5IGJlIGNvcGllZCBpbnRvCitubG1zZ2hkci0+bmxtc2dfc2VxIHRvby4KKworVGhlIHNlcXVlbmNlIG51bWJlciBpcyBpbmNyZW1lbnRlZCB3aXRoIGVhY2ggbWVzc2FnZSBzZW50LgorCitJZiB5b3UgZXhwZWN0IGEgcmVwbHkgdG8gdGhlIG1lc3NhZ2UsIHRoZW4gdGhlIHNlcXVlbmNlIG51bWJlciBpbiB0aGUKK3JlY2VpdmVkIG1lc3NhZ2UgTVVTVCBiZSB0aGUgc2FtZSBhcyBpbiB0aGUgb3JpZ2luYWwgbWVzc2FnZSwgYW5kIHRoZQorYWNrbm93bGVkZ2UgbnVtYmVyIE1VU1QgYmUgdGhlIHNhbWUgKyAxLgorCitJZiB3ZSByZWNlaXZlIGEgbWVzc2FnZSBhbmQgaXRzIHNlcXVlbmNlIG51bWJlciBpcyBub3QgZXF1YWwgdG8gb25lIHdlCithcmUgZXhwZWN0aW5nLCB0aGVuIGl0IGlzIGEgbmV3IG1lc3NhZ2UuICBJZiB3ZSByZWNlaXZlIGEgbWVzc2FnZSBhbmQKK2l0cyBzZXF1ZW5jZSBudW1iZXIgaXMgdGhlIHNhbWUgYXMgb25lIHdlIGFyZSBleHBlY3RpbmcsIGJ1dCBpdHMKK2Fja25vd2xlZGdlIGlzIG5vdCBlcXVhbCB0byB0aGUgc2VxdWVuY2UgbnVtYmVyIGluIHRoZSBvcmlnaW5hbAorbWVzc2FnZSArIDEsIHRoZW4gaXQgaXMgYSBuZXcgbWVzc2FnZS4KKworT2J2aW91c2x5LCB0aGUgcHJvdG9jb2wgaGVhZGVyIGNvbnRhaW5zIHRoZSBhYm92ZSBpZC4KKworVGhlIGNvbm5lY3RvciBhbGxvd3MgZXZlbnQgbm90aWZpY2F0aW9uIGluIHRoZSBmb2xsb3dpbmcgZm9ybToga2VybmVsCitkcml2ZXIgb3IgdXNlcnNwYWNlIHByb2Nlc3MgY2FuIGFzayBjb25uZWN0b3IgdG8gbm90aWZ5IGl0IHdoZW4KK3NlbGVjdGVkIGlkcyB3aWxsIGJlIHR1cm5lZCBvbiBvciBvZmYgKHJlZ2lzdGVyZWQgb3IgdW5yZWdpc3RlcmVkIGl0cworY2FsbGJhY2spLiAgSXQgaXMgZG9uZSBieSBzZW5kaW5nIGEgc3BlY2lhbCBjb21tYW5kIHRvIHRoZSBjb25uZWN0b3IKK2RyaXZlciAoaXQgYWxzbyByZWdpc3RlcnMgaXRzZWxmIHdpdGggaWQ9ey0xLCAtMX0pLgorCitBcyBleGFtcGxlIG9mIHRoaXMgdXNhZ2UgY2FuIGJlIGZvdW5kIGluIHRoZSBjbl90ZXN0LmMgbW9kdWxlIHdoaWNoCit1c2VzIHRoZSBjb25uZWN0b3IgdG8gcmVxdWVzdCBub3RpZmljYXRpb24gYW5kIHRvIHNlbmQgbWVzc2FnZXMuCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1JlbGlhYmlsaXR5LgorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitOZXRsaW5rIGl0c2VsZiBpcyBub3QgYSByZWxpYWJsZSBwcm90b2NvbC4gIFRoYXQgbWVhbnMgdGhhdCBtZXNzYWdlcyBjYW4KK2JlIGxvc3QgZHVlIHRvIG1lbW9yeSBwcmVzc3VyZSBvciBwcm9jZXNzJyByZWNlaXZpbmcgcXVldWUgb3ZlcmZsb3dlZCwKK3NvIGNhbGxlciBpcyB3YXJuZWQgdGhhdCBpdCBtdXN0IGJlIHByZXBhcmVkLiAgVGhhdCBpcyB3aHkgdGhlIHN0cnVjdAorY25fbXNnIFttYWluIGNvbm5lY3RvcidzIG1lc3NhZ2UgaGVhZGVyXSBjb250YWlucyB1MzIgc2VxIGFuZCB1MzIgYWNrCitmaWVsZHMuCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1VzZXJzcGFjZSB1c2FnZS4KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworMi42LjE0IGhhcyBhIG5ldyBuZXRsaW5rIHNvY2tldCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggYnkgZGVmYXVsdCBkb2VzIG5vdAorYWxsb3cgcGVvcGxlIHRvIHNlbmQgZGF0YSB0byBuZXRsaW5rIGdyb3VwcyBvdGhlciB0aGFuIDEuCitTbywgaWYgeW91IHdpc2ggdG8gdXNlIGEgbmV0bGluayBzb2NrZXQgKGZvciBleGFtcGxlIHVzaW5nIGNvbm5lY3RvcikKK3dpdGggYSBkaWZmZXJlbnQgZ3JvdXAgbnVtYmVyLCB0aGUgdXNlcnNwYWNlIGFwcGxpY2F0aW9uIG11c3Qgc3Vic2NyaWJlIHRvCit0aGF0IGdyb3VwIGZpcnN0LiAgSXQgY2FuIGJlIGFjaGlldmVkIGJ5IHRoZSBmb2xsb3dpbmcgcHNldWRvY29kZToKKworcyA9IHNvY2tldChQRl9ORVRMSU5LLCBTT0NLX0RHUkFNLCBORVRMSU5LX0NPTk5FQ1RPUik7CisKK2xfbG9jYWwubmxfZmFtaWx5ID0gQUZfTkVUTElOSzsKK2xfbG9jYWwubmxfZ3JvdXBzID0gMTIzNDU7CitsX2xvY2FsLm5sX3BpZCA9IDA7CisKK2lmIChiaW5kKHMsIChzdHJ1Y3Qgc29ja2FkZHIgKikmbF9sb2NhbCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9ubCkpID09IC0xKSB7CisJcGVycm9yKCJiaW5kIik7CisJY2xvc2Uocyk7CisJcmV0dXJuIC0xOworfQorCit7CisJaW50IG9uID0gbF9sb2NhbC5ubF9ncm91cHM7CisJc2V0c29ja29wdChzLCAyNzAsIDEsICZvbiwgc2l6ZW9mKG9uKSk7Cit9CisKK1doZXJlIDI3MCBhYm92ZSBpcyBTT0xfTkVUTElOSywgYW5kIDEgaXMgYSBORVRMSU5LX0FERF9NRU1CRVJTSElQIHNvY2tldAorb3B0aW9uLiAgVG8gZHJvcCBhIG11bHRpY2FzdCBzdWJzY3JpcHRpb24sIG9uZSBzaG91bGQgY2FsbCB0aGUgYWJvdmUgc29ja2V0CitvcHRpb24gd2l0aCB0aGUgTkVUTElOS19EUk9QX01FTUJFUlNISVAgcGFyYW1ldGVyIHdoaWNoIGlzIGRlZmluZWQgYXMgMC4KKworMi42LjE0IG5ldGxpbmsgY29kZSBvbmx5IGFsbG93cyB0byBzZWxlY3QgYSBncm91cCB3aGljaCBpcyBsZXNzIG9yIGVxdWFsIHRvCit0aGUgbWF4aW11bSBncm91cCBudW1iZXIsIHdoaWNoIGlzIHVzZWQgYXQgbmV0bGlua19rZXJuZWxfY3JlYXRlKCkgdGltZS4KK0luIGNhc2Ugb2YgY29ubmVjdG9yIGl0IGlzIENOX05FVExJTktfVVNFUlMgKyAweGYsIHNvIGlmIHlvdSB3YW50IHRvIHVzZQorZ3JvdXAgbnVtYmVyIDEyMzQ1LCB5b3UgbXVzdCBpbmNyZW1lbnQgQ05fTkVUTElOS19VU0VSUyB0byB0aGF0IG51bWJlci4KK0FkZGl0aW9uYWwgMHhmIG51bWJlcnMgYXJlIGFsbG9jYXRlZCB0byBiZSB1c2VkIGJ5IG5vbi1pbi1rZXJuZWwgdXNlcnMuCisKK0R1ZSB0byB0aGlzIGxpbWl0YXRpb24sIGdyb3VwIDB4ZmZmZmZmZmYgZG9lcyBub3Qgd29yayBub3csIHNvIG9uZSBjYW4KK25vdCB1c2UgYWRkL3JlbW92ZSBjb25uZWN0b3IncyBncm91cCBub3RpZmljYXRpb25zLCBidXQgYXMgZmFyIGFzIEkga25vdywgCitvbmx5IGNuX3Rlc3QuYyB0ZXN0IG1vZHVsZSB1c2VkIGl0LgorCitTb21lIHdvcmsgaW4gbmV0bGluayBhcmVhIGlzIHN0aWxsIGJlaW5nIGRvbmUsIHNvIHRoaW5ncyBjYW4gYmUgY2hhbmdlZCBpbgorMi42LjE1IHRpbWVmcmFtZSwgaWYgaXQgd2lsbCBoYXBwZW4sIGRvY3VtZW50YXRpb24gd2lsbCBiZSB1cGRhdGVkIGZvciB0aGF0CitrZXJuZWwuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Nvbm5lY3Rvci91Y29uLmMgYi9Eb2N1bWVudGF0aW9uL2Nvbm5lY3Rvci91Y29uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE0ZGE2NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vY29ubmVjdG9yL3Vjb24uYwpAQCAtMCwwICsxLDI1MCBAQAorLyoKKyAqIAl1Y29uLmMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQrIEV2Z2VuaXkgUG9seWFrb3YgPHpickBpb3JlbWFwLm5ldD4KKyAqCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8YXNtL3R5cGVzLmg+CisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8c3lzL3BvbGwuaD4KKworI2luY2x1ZGUgPGxpbnV4L25ldGxpbmsuaD4KKyNpbmNsdWRlIDxsaW51eC9ydG5ldGxpbmsuaD4KKworI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorCisjaW5jbHVkZSA8c3RkYm9vbC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8Z2V0b3B0Lmg+CisKKyNpbmNsdWRlIDxsaW51eC9jb25uZWN0b3IuaD4KKworI2RlZmluZSBERUJVRworI2RlZmluZSBORVRMSU5LX0NPTk5FQ1RPUiAJMTEKKworLyogSG9wZWZ1bGx5IHlvdXIgdXNlcnNwYWNlIGNvbm5lY3Rvci5oIG1hdGNoZXMgdGhpcyBrZXJuZWwgKi8KKyNkZWZpbmUgQ05fVEVTVF9JRFgJCUNOX05FVExJTktfVVNFUlMgKyAzCisjZGVmaW5lIENOX1RFU1RfVkFMCQkweDQ1NgorCisjaWZkZWYgREVCVUcKKyNkZWZpbmUgdWxvZyhmLCBhLi4uKSBmcHJpbnRmKHN0ZG91dCwgZiwgIyNhKQorI2Vsc2UKKyNkZWZpbmUgdWxvZyhmLCBhLi4uKSBkbyB7fSB3aGlsZSAoMCkKKyNlbmRpZgorCitzdGF0aWMgaW50IG5lZWRfZXhpdDsKK3N0YXRpYyBfX3UzMiBzZXE7CisKK3N0YXRpYyBpbnQgbmV0bGlua19zZW5kKGludCBzLCBzdHJ1Y3QgY25fbXNnICptc2cpCit7CisJc3RydWN0IG5sbXNnaGRyICpubGg7CisJdW5zaWduZWQgaW50IHNpemU7CisJaW50IGVycjsKKwljaGFyIGJ1ZlsxMjhdOworCXN0cnVjdCBjbl9tc2cgKm07CisKKwlzaXplID0gTkxNU0dfU1BBQ0Uoc2l6ZW9mKHN0cnVjdCBjbl9tc2cpICsgbXNnLT5sZW4pOworCisJbmxoID0gKHN0cnVjdCBubG1zZ2hkciAqKWJ1ZjsKKwlubGgtPm5sbXNnX3NlcSA9IHNlcSsrOworCW5saC0+bmxtc2dfcGlkID0gZ2V0cGlkKCk7CisJbmxoLT5ubG1zZ190eXBlID0gTkxNU0dfRE9ORTsKKwlubGgtPm5sbXNnX2xlbiA9IHNpemU7CisJbmxoLT5ubG1zZ19mbGFncyA9IDA7CisKKwltID0gTkxNU0dfREFUQShubGgpOworI2lmIDAKKwl1bG9nKCIlczogWyUwOHguJTA4eF0gbGVuPSV1LCBzZXE9JXUsIGFjaz0ldS5cbiIsCisJICAgICAgIF9fZnVuY19fLCBtc2ctPmlkLmlkeCwgbXNnLT5pZC52YWwsIG1zZy0+bGVuLCBtc2ctPnNlcSwgbXNnLT5hY2spOworI2VuZGlmCisJbWVtY3B5KG0sIG1zZywgc2l6ZW9mKCptKSArIG1zZy0+bGVuKTsKKworCWVyciA9IHNlbmQocywgbmxoLCBzaXplLCAwKTsKKwlpZiAoZXJyID09IC0xKQorCQl1bG9nKCJGYWlsZWQgdG8gc2VuZDogJXMgWyVkXS5cbiIsCisJCQlzdHJlcnJvcihlcnJubyksIGVycm5vKTsKKworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyB2b2lkIHVzYWdlKHZvaWQpCit7CisJcHJpbnRmKAorCQkiVXNhZ2U6IHVjb24gW29wdGlvbnNdIFtvdXRwdXQgZmlsZV1cbiIKKwkJIlxuIgorCQkiXHQtaFx0dGhpcyBoZWxwIHNjcmVlblxuIgorCQkiXHQtc1x0c2VuZCBidWZmZXJzIHRvIHRoZSB0ZXN0IG1vZHVsZVxuIgorCQkiXG4iCisJCSJUaGUgZGVmYXVsdCBiZWhhdmlvciBvZiB1Y29uIGlzIHRvIHN1YnNjcmliZSB0byB0aGUgdGVzdCBtb2R1bGVcbiIKKwkJImFuZCB3YWl0IGZvciBzdGF0ZSBtZXNzYWdlcy4gIEFueSBvbmVzIHJlY2VpdmVkIGFyZSBkdW1wZWQgdG8gdGhlXG4iCisJCSJzcGVjaWZpZWQgb3V0cHV0IGZpbGUgKG9yIHN0ZG91dCkuICBUaGUgdGVzdCBtb2R1bGUgaXMgYXNzdW1lZCB0b1xuIgorCQkiaGF2ZSBhbiBpZCBvZiB7JXUuJXV9XG4iCisJCSJcbiIKKwkJIklmIHlvdSBnZXQgbm8gb3V0cHV0LCB0aGVuIHZlcmlmeSB0aGUgY25fdGVzdCBtb2R1bGUgaWQgbWF0Y2hlc1xuIgorCQkidGhlIGV4cGVjdGVkIGlkIGFib3ZlLlxuIgorCQksIENOX1RFU1RfSURYLCBDTl9URVNUX1ZBTAorCSk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJaW50IHM7CisJY2hhciBidWZbMTAyNF07CisJaW50IGxlbjsKKwlzdHJ1Y3Qgbmxtc2doZHIgKnJlcGx5OworCXN0cnVjdCBzb2NrYWRkcl9ubCBsX2xvY2FsOworCXN0cnVjdCBjbl9tc2cgKmRhdGE7CisJRklMRSAqb3V0OworCXRpbWVfdCB0bTsKKwlzdHJ1Y3QgcG9sbGZkIHBmZDsKKwlib29sIHNlbmRfbXNncyA9IGZhbHNlOworCisJd2hpbGUgKChzID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJocyIpKSAhPSAtMSkgeworCQlzd2l0Y2ggKHMpIHsKKwkJY2FzZSAncyc6CisJCQlzZW5kX21zZ3MgPSB0cnVlOworCQkJYnJlYWs7CisKKwkJY2FzZSAnaCc6CisJCQl1c2FnZSgpOworCQkJcmV0dXJuIDA7CisKKwkJZGVmYXVsdDoKKwkJCS8qIGdldG9wdCgpIG91dHB1dHMgYW4gZXJyb3IgZm9yIHVzICovCisJCQl1c2FnZSgpOworCQkJcmV0dXJuIDE7CisJCX0KKwl9CisKKwlpZiAoYXJnYyAhPSBvcHRpbmQpIHsKKwkJb3V0ID0gZm9wZW4oYXJndltvcHRpbmRdLCAiYSsiKTsKKwkJaWYgKCFvdXQpIHsKKwkJCXVsb2coIlVuYWJsZSB0byBvcGVuICVzIGZvciB3cml0aW5nOiAlc1xuIiwKKwkJCQlhcmd2WzFdLCBzdHJlcnJvcihlcnJubykpOworCQkJb3V0ID0gc3Rkb3V0OworCQl9CisJfSBlbHNlCisJCW91dCA9IHN0ZG91dDsKKworCW1lbXNldChidWYsIDAsIHNpemVvZihidWYpKTsKKworCXMgPSBzb2NrZXQoUEZfTkVUTElOSywgU09DS19ER1JBTSwgTkVUTElOS19DT05ORUNUT1IpOworCWlmIChzID09IC0xKSB7CisJCXBlcnJvcigic29ja2V0Iik7CisJCXJldHVybiAtMTsKKwl9CisKKwlsX2xvY2FsLm5sX2ZhbWlseSA9IEFGX05FVExJTks7CisJbF9sb2NhbC5ubF9ncm91cHMgPSAtMTsgLyogYml0bWFzayBvZiByZXF1ZXN0ZWQgZ3JvdXBzICovCisJbF9sb2NhbC5ubF9waWQgPSAwOworCisJdWxvZygic3Vic2NyaWJpbmcgdG8gJXUuJXVcbiIsIENOX1RFU1RfSURYLCBDTl9URVNUX1ZBTCk7CisKKwlpZiAoYmluZChzLCAoc3RydWN0IHNvY2thZGRyICopJmxfbG9jYWwsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfbmwpKSA9PSAtMSkgeworCQlwZXJyb3IoImJpbmQiKTsKKwkJY2xvc2Uocyk7CisJCXJldHVybiAtMTsKKwl9CisKKyNpZiAwCisJeworCQlpbnQgb24gPSAweDU3OyAvKiBBZGRpdGlvbmFsIGdyb3VwIG51bWJlciAqLworCQlzZXRzb2Nrb3B0KHMsIFNPTF9ORVRMSU5LLCBORVRMSU5LX0FERF9NRU1CRVJTSElQLCAmb24sIHNpemVvZihvbikpOworCX0KKyNlbmRpZgorCWlmIChzZW5kX21zZ3MpIHsKKwkJaW50IGksIGo7CisKKwkJbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKGJ1ZikpOworCisJCWRhdGEgPSAoc3RydWN0IGNuX21zZyAqKWJ1ZjsKKworCQlkYXRhLT5pZC5pZHggPSBDTl9URVNUX0lEWDsKKwkJZGF0YS0+aWQudmFsID0gQ05fVEVTVF9WQUw7CisJCWRhdGEtPnNlcSA9IHNlcSsrOworCQlkYXRhLT5hY2sgPSAwOworCQlkYXRhLT5sZW4gPSAwOworCisJCWZvciAoaj0wOyBqPDEwOyArK2opIHsKKwkJCWZvciAoaT0wOyBpPDEwMDA7ICsraSkgeworCQkJCWxlbiA9IG5ldGxpbmtfc2VuZChzLCBkYXRhKTsKKwkJCX0KKworCQkJdWxvZygiJWQgbWVzc2FnZXMgaGF2ZSBiZWVuIHNlbnQgdG8gJTA4eC4lMDh4LlxuIiwgaSwgZGF0YS0+aWQuaWR4LCBkYXRhLT5pZC52YWwpOworCQl9CisKKwkJcmV0dXJuIDA7CisJfQorCisKKwlwZmQuZmQgPSBzOworCisJd2hpbGUgKCFuZWVkX2V4aXQpIHsKKwkJcGZkLmV2ZW50cyA9IFBPTExJTjsKKwkJcGZkLnJldmVudHMgPSAwOworCQlzd2l0Y2ggKHBvbGwoJnBmZCwgMSwgLTEpKSB7CisJCQljYXNlIDA6CisJCQkJbmVlZF9leGl0ID0gMTsKKwkJCQlicmVhazsKKwkJCWNhc2UgLTE6CisJCQkJaWYgKGVycm5vICE9IEVJTlRSKSB7CisJCQkJCW5lZWRfZXhpdCA9IDE7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCQljb250aW51ZTsKKwkJfQorCQlpZiAobmVlZF9leGl0KQorCQkJYnJlYWs7CisKKwkJbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKGJ1ZikpOworCQlsZW4gPSByZWN2KHMsIGJ1Ziwgc2l6ZW9mKGJ1ZiksIDApOworCQlpZiAobGVuID09IC0xKSB7CisJCQlwZXJyb3IoInJlY3YgYnVmIik7CisJCQljbG9zZShzKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCQlyZXBseSA9IChzdHJ1Y3Qgbmxtc2doZHIgKilidWY7CisKKwkJc3dpdGNoIChyZXBseS0+bmxtc2dfdHlwZSkgeworCQljYXNlIE5MTVNHX0VSUk9SOgorCQkJZnByaW50ZihvdXQsICJFcnJvciBtZXNzYWdlIHJlY2VpdmVkLlxuIik7CisJCQlmZmx1c2gob3V0KTsKKwkJCWJyZWFrOworCQljYXNlIE5MTVNHX0RPTkU6CisJCQlkYXRhID0gKHN0cnVjdCBjbl9tc2cgKilOTE1TR19EQVRBKHJlcGx5KTsKKworCQkJdGltZSgmdG0pOworCQkJZnByaW50ZihvdXQsICIlLjI0cyA6IFsleC4leF0gWyUwOHUuJTA4dV0uXG4iLAorCQkJCWN0aW1lKCZ0bSksIGRhdGEtPmlkLmlkeCwgZGF0YS0+aWQudmFsLCBkYXRhLT5zZXEsIGRhdGEtPmFjayk7CisJCQlmZmx1c2gob3V0KTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJYnJlYWs7CisJCX0KKwl9CisKKwljbG9zZShzKTsKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY29uc29sZS9jb25zb2xlLnR4dCBiL0RvY3VtZW50YXRpb24vY29uc29sZS9jb25zb2xlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTM4MTBkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9jb25zb2xlL2NvbnNvbGUudHh0CkBAIC0wLDAgKzEsMTQ0IEBACitDb25zb2xlIERyaXZlcnMKKz09PT09PT09PT09PT09PQorCitUaGUgbGludXgga2VybmVsIGhhcyAyIGdlbmVyYWwgdHlwZXMgb2YgY29uc29sZSBkcml2ZXJzLiAgVGhlIGZpcnN0IHR5cGUgaXMKK2Fzc2lnbmVkIGJ5IHRoZSBrZXJuZWwgdG8gYWxsIHRoZSB2aXJ0dWFsIGNvbnNvbGVzIGR1cmluZyB0aGUgYm9vdCBwcm9jZXNzLgorVGhpcyB0eXBlIHdpbGwgYmUgY2FsbGVkICdzeXN0ZW0gZHJpdmVyJywgYW5kIG9ubHkgb25lIHN5c3RlbSBkcml2ZXIgaXMgYWxsb3dlZAordG8gZXhpc3QuIFRoZSBzeXN0ZW0gZHJpdmVyIGlzIHBlcnNpc3RlbnQgYW5kIGl0IGNhbiBuZXZlciBiZSB1bmxvYWRlZCwgdGhvdWdoCitpdCBtYXkgYmVjb21lIGluYWN0aXZlLgorCitUaGUgc2Vjb25kIHR5cGUgaGFzIHRvIGJlIGV4cGxpY2l0bHkgbG9hZGVkIGFuZCB1bmxvYWRlZC4gVGhpcyB3aWxsIGJlIGNhbGxlZAorJ21vZHVsYXIgZHJpdmVyJyBieSB0aGlzIGRvY3VtZW50LiBNdWx0aXBsZSBtb2R1bGFyIGRyaXZlcnMgY2FuIGNvZXhpc3QgYXQKK2FueSB0aW1lIHdpdGggZWFjaCBkcml2ZXIgc2hhcmluZyB0aGUgY29uc29sZSB3aXRoIG90aGVyIGRyaXZlcnMgaW5jbHVkaW5nCit0aGUgc3lzdGVtIGRyaXZlci4gSG93ZXZlciwgbW9kdWxhciBkcml2ZXJzIGNhbm5vdCB0YWtlIG92ZXIgdGhlIGNvbnNvbGUKK3RoYXQgaXMgY3VycmVudGx5IG9jY3VwaWVkIGJ5IGFub3RoZXIgbW9kdWxhciBkcml2ZXIuIChFeGNlcHRpb246IERyaXZlcnMgdGhhdAorY2FsbCBkb190YWtlX292ZXJfY29uc29sZSgpIHdpbGwgc3VjY2VlZCBpbiB0aGUgdGFrZW92ZXIgcmVnYXJkbGVzcyBvZiB0aGUgdHlwZQorb2YgZHJpdmVyIG9jY3VweWluZyB0aGUgY29uc29sZXMuKSBUaGV5IGNhbiBvbmx5IHRha2Ugb3ZlciB0aGUgY29uc29sZSB0aGF0IGlzCitvY2N1cGllZCBieSB0aGUgc3lzdGVtIGRyaXZlci4gSW4gdGhlIHNhbWUgdG9rZW4sIGlmIHRoZSBtb2R1bGFyIGRyaXZlciBpcworcmVsZWFzZWQgYnkgdGhlIGNvbnNvbGUsIHRoZSBzeXN0ZW0gZHJpdmVyIHdpbGwgdGFrZSBvdmVyLgorCitNb2R1bGFyIGRyaXZlcnMsIGZyb20gdGhlIHByb2dyYW1tZXIncyBwb2ludCBvZiB2aWV3LCBoYXMgdG8gY2FsbDoKKworCSBkb190YWtlX292ZXJfY29uc29sZSgpIC0gbG9hZCBhbmQgYmluZCBkcml2ZXIgdG8gY29uc29sZSBsYXllcgorCSBnaXZlX3VwX2NvbnNvbGUoKSAtIHVubG9hZCBkcml2ZXIsIGl0IHdpbGwgb25seSB3b3JrIGlmIGRyaXZlciBpcyBmdWxseSB1bmJvbmQKKworSW4gbmV3ZXIga2VybmVscywgdGhlIGZvbGxvd2luZyBhcmUgYWxzbyBhdmFpbGFibGU6CisKKwkgZG9fcmVnaXN0ZXJfY29uX2RyaXZlcigpCisJIGRvX3VucmVnaXN0ZXJfY29uX2RyaXZlcigpCisKK0lmIHN5c2ZzIGlzIGVuYWJsZWQsIHRoZSBjb250ZW50cyBvZiAvc3lzL2NsYXNzL3Z0Y29uc29sZSBjYW4gYmUKK2V4YW1pbmVkLiBUaGlzIHNob3dzIHRoZSBjb25zb2xlIGJhY2tlbmRzIGN1cnJlbnRseSByZWdpc3RlcmVkIGJ5IHRoZQorc3lzdGVtIHdoaWNoIGFyZSBuYW1lZCB2dGNvbjxuPiB3aGVyZSA8bj4gaXMgYW4gaW50ZWdlciBmcm9tIDAgdG8gMTUuIFRodXM6CisKKyAgICAgICBscyAvc3lzL2NsYXNzL3Z0Y29uc29sZQorICAgICAgIC4gIC4uICB2dGNvbjAgIHZ0Y29uMQorCitFYWNoIGRpcmVjdG9yeSBpbiAvc3lzL2NsYXNzL3Z0Y29uc29sZSBoYXMgMyBmaWxlczoKKworICAgICBscyAvc3lzL2NsYXNzL3Z0Y29uc29sZS92dGNvbjAKKyAgICAgLiAgLi4gIGJpbmQgIG5hbWUgIHVldmVudAorCitXaGF0IGRvIHRoZXNlIGZpbGVzIHNpZ25pZnk/CisKKyAgICAgMS4gYmluZCAtIHRoaXMgaXMgYSByZWFkL3dyaXRlIGZpbGUuIEl0IHNob3dzIHRoZSBzdGF0dXMgb2YgdGhlIGRyaXZlciBpZgorICAgICAgICByZWFkLCBvciBhY3RzIHRvIGJpbmQgb3IgdW5iaW5kIHRoZSBkcml2ZXIgdG8gdGhlIHZpcnR1YWwgY29uc29sZXMKKyAgICAgICAgd2hlbiB3cml0dGVuIHRvLiBUaGUgcG9zc2libGUgdmFsdWVzIGFyZToKKworCTAgLSBtZWFucyB0aGUgZHJpdmVyIGlzIG5vdCBib3VuZCBhbmQgaWYgZWNobydlZCwgY29tbWFuZHMgdGhlIGRyaXZlcgorCSAgICB0byB1bmJpbmQKKworICAgICAgICAxIC0gbWVhbnMgdGhlIGRyaXZlciBpcyBib3VuZCBhbmQgaWYgZWNobydlZCwgY29tbWFuZHMgdGhlIGRyaXZlciB0bworCSAgICBiaW5kCisKKyAgICAgMi4gbmFtZSAtIHJlYWQtb25seSBmaWxlLiBTaG93cyB0aGUgbmFtZSBvZiB0aGUgZHJpdmVyIGluIHRoaXMgZm9ybWF0OgorCisJY2F0IC9zeXMvY2xhc3MvdnRjb25zb2xlL3Z0Y29uMC9uYW1lCisJKFMpIFZHQSsKKworCSAgICAnKFMpJyBzdGFuZHMgZm9yIGEgKFMpeXN0ZW0gZHJpdmVyLCBpZSwgaXQgY2Fubm90IGJlIGRpcmVjdGx5CisJICAgIGNvbW1hbmRlZCB0byBiaW5kIG9yIHVuYmluZAorCisJICAgICdWR0ErJyBpcyB0aGUgbmFtZSBvZiB0aGUgZHJpdmVyCisKKwljYXQgL3N5cy9jbGFzcy92dGNvbnNvbGUvdnRjb24xL25hbWUKKwkoTSkgZnJhbWUgYnVmZmVyIGRldmljZQorCisJICAgIEluIHRoaXMgY2FzZSwgJyhNKScgc3RhbmRzIGZvciBhIChNKW9kdWxhciBkcml2ZXIsIG9uZSB0aGF0IGNhbiBiZQorCSAgICBkaXJlY3RseSBjb21tYW5kZWQgdG8gYmluZCBvciB1bmJpbmQuCisKKyAgICAgMy4gdWV2ZW50IC0gaWdub3JlIHRoaXMgZmlsZQorCitXaGVuIHVuYmluZGluZywgdGhlIG1vZHVsYXIgZHJpdmVyIGlzIGRldGFjaGVkIGZpcnN0LCBhbmQgdGhlbiB0aGUgc3lzdGVtCitkcml2ZXIgdGFrZXMgb3ZlciB0aGUgY29uc29sZXMgdmFjYXRlZCBieSB0aGUgZHJpdmVyLiBCaW5kaW5nLCBvbiB0aGUgb3RoZXIKK2hhbmQsIHdpbGwgYmluZCB0aGUgZHJpdmVyIHRvIHRoZSBjb25zb2xlcyB0aGF0IGFyZSBjdXJyZW50bHkgb2NjdXBpZWQgYnkgYQorc3lzdGVtIGRyaXZlci4KKworTk9URTE6IEJpbmRpbmcgYW5kIHVuYmluZGluZyBtdXN0IGJlIHNlbGVjdGVkIGluIEtjb25maWcuIEl0J3MgdW5kZXI6CisKK0RldmljZSBEcml2ZXJzIC0+IENoYXJhY3RlciBkZXZpY2VzIC0+IFN1cHBvcnQgZm9yIGJpbmRpbmcgYW5kIHVuYmluZGluZworY29uc29sZSBkcml2ZXJzCisKK05PVEUyOiBJZiBhbnkgb2YgdGhlIHZpcnR1YWwgY29uc29sZXMgYXJlIGluIEtEX0dSQVBISUNTIG1vZGUsIHRoZW4gYmluZGluZyBvcgordW5iaW5kaW5nIHdpbGwgbm90IHN1Y2NlZWQuIEFuIGV4YW1wbGUgb2YgYW4gYXBwbGljYXRpb24gdGhhdCBzZXRzIHRoZSBjb25zb2xlCit0byBLRF9HUkFQSElDUyBpcyBYLgorCitIb3cgdXNlZnVsIGlzIHRoaXMgZmVhdHVyZT8gVGhpcyBpcyB2ZXJ5IHVzZWZ1bCBmb3IgY29uc29sZSBkcml2ZXIKK2RldmVsb3BlcnMuIEJ5IHVuYmluZGluZyB0aGUgZHJpdmVyIGZyb20gdGhlIGNvbnNvbGUgbGF5ZXIsIG9uZSBjYW4gdW5sb2FkIHRoZQorZHJpdmVyLCBtYWtlIGNoYW5nZXMsIHJlY29tcGlsZSwgcmVsb2FkIGFuZCByZWJpbmQgdGhlIGRyaXZlciB3aXRob3V0IGFueSBuZWVkCitmb3IgcmVib290aW5nIHRoZSBrZXJuZWwuIEZvciByZWd1bGFyIHVzZXJzIHdobyBtYXkgd2FudCB0byBzd2l0Y2ggZnJvbQorZnJhbWVidWZmZXIgY29uc29sZSB0byBWR0EgY29uc29sZSBhbmQgdmljZSB2ZXJzYSwgdGhpcyBmZWF0dXJlIGFsc28gbWFrZXMKK3RoaXMgcG9zc2libGUuIChOT1RFIE5PVEUgTk9URTogUGxlYXNlIHJlYWQgZmJjb24udHh0IHVuZGVyIERvY3VtZW50YXRpb24vZmIKK2ZvciBtb3JlIGRldGFpbHMpLgorCitOb3RlcyBmb3IgZGV2ZWxvcGVyczoKKz09PT09PT09PT09PT09PT09PT09PQorCitkb190YWtlX292ZXJfY29uc29sZSgpIGlzIG5vdyBicm9rZW4gdXAgaW50bzoKKworICAgICBkb19yZWdpc3Rlcl9jb25fZHJpdmVyKCkKKyAgICAgZG9fYmluZF9jb25fZHJpdmVyKCkgLSBwcml2YXRlIGZ1bmN0aW9uCisKK2dpdmVfdXBfY29uc29sZSgpIGlzIGEgd3JhcHBlciB0byBkb191bnJlZ2lzdGVyX2Nvbl9kcml2ZXIoKSwgYW5kIGEgZHJpdmVyIG11c3QKK2JlIGZ1bGx5IHVuYm91bmQgZm9yIHRoaXMgY2FsbCB0byBzdWNjZWVkLiBjb25faXNfYm91bmQoKSB3aWxsIGNoZWNrIGlmIHRoZQorZHJpdmVyIGlzIGJvdW5kIG9yIG5vdC4KKworR3VpZGVsaW5lcyBmb3IgY29uc29sZSBkcml2ZXIgd3JpdGVyczoKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW4gb3JkZXIgZm9yIGJpbmRpbmcgdG8gYW5kIHVuYmluZGluZyBmcm9tIHRoZSBjb25zb2xlIHRvIHByb3Blcmx5IHdvcmssCitjb25zb2xlIGRyaXZlcnMgbXVzdCBmb2xsb3cgdGhlc2UgZ3VpZGVsaW5lczoKKworMS4gQWxsIGRyaXZlcnMsIGV4Y2VwdCBzeXN0ZW0gZHJpdmVycywgbXVzdCBjYWxsIGVpdGhlciBkb19yZWdpc3Rlcl9jb25fZHJpdmVyKCkKKyAgIG9yIGRvX3Rha2Vfb3Zlcl9jb25zb2xlKCkuIGRvX3JlZ2lzdGVyX2Nvbl9kcml2ZXIoKSB3aWxsIGp1c3QgYWRkIHRoZSBkcml2ZXIgdG8KKyAgIHRoZSBjb25zb2xlJ3MgaW50ZXJuYWwgbGlzdC4gSXQgd29uJ3QgdGFrZSBvdmVyIHRoZQorICAgY29uc29sZS4gZG9fdGFrZV9vdmVyX2NvbnNvbGUoKSwgYXMgaXQgbmFtZSBpbXBsaWVzLCB3aWxsIGFsc28gdGFrZSBvdmVyIChvcgorICAgYmluZCB0bykgdGhlIGNvbnNvbGUuCisKKzIuIEFsbCByZXNvdXJjZXMgYWxsb2NhdGVkIGR1cmluZyBjb24tPmNvbl9pbml0KCkgbXVzdCBiZSByZWxlYXNlZCBpbgorICAgY29uLT5jb25fZGVpbml0KCkuCisKKzMuIEFsbCByZXNvdXJjZXMgYWxsb2NhdGVkIGluIGNvbi0+Y29uX3N0YXJ0dXAoKSBtdXN0IGJlIHJlbGVhc2VkIHdoZW4gdGhlCisgICBkcml2ZXIsIHdoaWNoIHdhcyBwcmV2aW91c2x5IGJvdW5kLCBiZWNvbWVzIHVuYm91bmQuICBUaGUgY29uc29sZSBsYXllcgorICAgZG9lcyBub3QgaGF2ZSBhIGNvbXBsZW1lbnRhcnkgY2FsbCB0byBjb24tPmNvbl9zdGFydHVwKCkgc28gaXQncyB1cCB0byB0aGUKKyAgIGRyaXZlciB0byBjaGVjayB3aGVuIGl0J3MgbGVnYWwgdG8gcmVsZWFzZSB0aGVzZSByZXNvdXJjZXMuIENhbGxpbmcKKyAgIGNvbl9pc19ib3VuZCgpIGluIGNvbi0+Y29uX2RlaW5pdCgpIHdpbGwgaGVscC4gIElmIHRoZSBjYWxsIHJldHVybmVkCisgICBmYWxzZSgpLCB0aGVuIGl0J3Mgc2FmZSB0byByZWxlYXNlIHRoZSByZXNvdXJjZXMuICBUaGlzIGJhbGFuY2UgaGFzIHRvIGJlCisgICBlbnN1cmVkIGJlY2F1c2UgY29uLT5jb25fc3RhcnR1cCgpIGNhbiBiZSBjYWxsZWQgYWdhaW4gd2hlbiBhIHJlcXVlc3QgdG8KKyAgIHJlYmluZCB0aGUgZHJpdmVyIHRvIHRoZSBjb25zb2xlIGFycml2ZXMuCisKKzQuIFVwb24gZXhpdCBvZiB0aGUgZHJpdmVyLCBlbnN1cmUgdGhhdCB0aGUgZHJpdmVyIGlzIHRvdGFsbHkgdW5ib3VuZC4gSWYgdGhlCisgICBjb25kaXRpb24gaXMgc2F0aXNmaWVkLCB0aGVuIHRoZSBkcml2ZXIgbXVzdCBjYWxsIGRvX3VucmVnaXN0ZXJfY29uX2RyaXZlcigpCisgICBvciBnaXZlX3VwX2NvbnNvbGUoKS4KKworNS4gZG9fdW5yZWdpc3Rlcl9jb25fZHJpdmVyKCkgY2FuIGFsc28gYmUgY2FsbGVkIG9uIGNvbmRpdGlvbnMgd2hpY2ggbWFrZSBpdAorICAgaW1wb3NzaWJsZSBmb3IgdGhlIGRyaXZlciB0byBzZXJ2aWNlIGNvbnNvbGUgcmVxdWVzdHMuICBUaGlzIGNhbiBoYXBwZW4KKyAgIHdpdGggdGhlIGZyYW1lYnVmZmVyIGNvbnNvbGUgdGhhdCBzdWRkZW5seSBsb3N0IGFsbCBvZiBpdHMgZHJpdmVycy4KKworVGhlIGN1cnJlbnQgY3JvcCBvZiBjb25zb2xlIGRyaXZlcnMgc2hvdWxkIHN0aWxsIHdvcmsgY29ycmVjdGx5LCBidXQgYmluZGluZworYW5kIHVuYmluZGluZyB0aGVtIG1heSBjYXVzZSBwcm9ibGVtcy4gV2l0aCBtaW5pbWFsIGZpeGVzLCB0aGVzZSBkcml2ZXJzIGNhbgorYmUgbWFkZSB0byB3b3JrIGNvcnJlY3RseS4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT0KK0FudG9uaW5vIERhcGxhcyA8YWRhcGxhc0Bwb2wubmV0PgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2NwdS1mcmVxL2FtZC1wb3dlcm5vdy50eHQgYi9Eb2N1bWVudGF0aW9uL2NwdS1mcmVxL2FtZC1wb3dlcm5vdy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU0ZGExNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vY3B1LWZyZXEvYW1kLXBvd2Vybm93LnR4dApAQCAtMCwwICsxLDM4IEBACisKK1Bvd2VyTm93ISBhbmQgQ29vbCduJ1F1aWV0IGFyZSBBTUQgbmFtZXMgZm9yIGZyZXF1ZW5jeQorbWFuYWdlbWVudCBjYXBhYmlsaXRpZXMgaW4gQU1EIHByb2Nlc3NvcnMuIEFzIHRoZSBoYXJkd2FyZQoraW1wbGVtZW50YXRpb24gY2hhbmdlcyBpbiBuZXcgZ2VuZXJhdGlvbnMgb2YgdGhlIHByb2Nlc3NvcnMsCit0aGVyZSBpcyBhIGRpZmZlcmVudCBjcHUtZnJlcSBkcml2ZXIgZm9yIGVhY2ggZ2VuZXJhdGlvbi4KKworTm90ZSB0aGF0IHRoZSBkcml2ZXIncyB3aWxsIG5vdCBsb2FkIG9uIHRoZSAid3JvbmciIGhhcmR3YXJlLAorc28gaXQgaXMgc2FmZSB0byB0cnkgZWFjaCBkcml2ZXIgaW4gdHVybiB3aGVuIGluIGRvdWJ0IGFzIHRvCit3aGljaCBpcyB0aGUgY29ycmVjdCBkcml2ZXIuCisKK05vdGUgdGhhdCB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGFuZ2UgZnJlcXVlbmN5IChhbmQgdm9sdGFnZSkKK2lzIG5vdCBhdmFpbGFibGUgaW4gYWxsIHByb2Nlc3NvcnMuIFRoZSBkcml2ZXJzIHdpbGwgcmVmdXNlCit0byBsb2FkIG9uIHByb2Nlc3NvcnMgd2l0aG91dCB0aGlzIGNhcGFiaWxpdHkuIFRoZSBjYXBhYmlsaXR5CitpcyBkZXRlY3RlZCB3aXRoIHRoZSBjcHVpZCBpbnN0cnVjdGlvbi4KKworVGhlIGRyaXZlcnMgdXNlIEJJT1Mgc3VwcGxpZWQgdGFibGVzIHRvIG9idGFpbiBmcmVxdWVuY3kgYW5kCit2b2x0YWdlIGluZm9ybWF0aW9uIGFwcHJvcHJpYXRlIGZvciBhIHBhcnRpY3VsYXIgcGxhdGZvcm0uCitGcmVxdWVuY3kgdHJhbnNpdGlvbnMgd2lsbCBiZSB1bmF2YWlsYWJsZSBpZiB0aGUgQklPUyBkb2VzCitub3Qgc3VwcGx5IHRoZXNlIHRhYmxlcy4KKworNnRoIEdlbmVyYXRpb246IHBvd2Vybm93LWs2CisKKzd0aCBHZW5lcmF0aW9uOiBwb3dlcm5vdy1rNzogQXRobG9uLCBEdXJvbiwgR2VvZGUuCisKKzh0aCBHZW5lcmF0aW9uOiBwb3dlcm5vdy1rODogQXRobG9uLCBBdGhsb24gNjQsIE9wdGVyb24sIFNlbXByb24uCitEb2N1bWVudGF0aW9uIG9uIHRoaXMgZnVuY3Rpb25hbGl0eSBpbiA4dGggZ2VuZXJhdGlvbiBwcm9jZXNzb3JzCitpcyBhdmFpbGFibGUgaW4gdGhlICJCSU9TIGFuZCBLZXJuZWwgRGV2ZWxvcGVyJ3MgR3VpZGUiLCBwdWJsaWNhdGlvbgorMjYwOTQsIGluIGNoYXB0ZXIgOSwgYXZhaWxhYmxlIGZvciBkb3dubG9hZCBmcm9tIHd3dy5hbWQuY29tLiAKKworQklPUyBzdXBwbGllZCBkYXRhLCBmb3IgcG93ZXJub3ctazcgYW5kIGZvciBwb3dlcm5vdy1rOCwgbWF5IGJlCitmcm9tIGVpdGhlciB0aGUgUFNCIHRhYmxlIG9yIGZyb20gQUNQSSBvYmplY3RzLiBUaGUgQUNQSSBzdXBwb3J0CitpcyBvbmx5IGF2YWlsYWJsZSBpZiB0aGUga2VybmVsIGNvbmZpZyBzZXRzIENPTkZJR19BQ1BJX1BST0NFU1NPUi4KK1RoZSBwb3dlcm5vdy1rOCBkcml2ZXIgd2lsbCBhdHRlbXB0IHRvIHVzZSBBQ1BJIGlmIHNvIGNvbmZpZ3VyZWQsCithbmQgZmFsbCBiYWNrIHRvIFBTVCBpZiB0aGF0IGZhaWxzLgorVGhlIHBvd2Vybm93LWs3IGRyaXZlciB3aWxsIHRyeSB0byB1c2UgdGhlIFBTQiBzdXBwb3J0IGZpcnN0LCBhbmQKK2ZhbGwgYmFjayB0byBBQ1BJIGlmIHRoZSBQU0Igc3VwcG9ydCBmYWlscy4gQSBtb2R1bGUgcGFyYW1ldGVyLAorYWNwaV9mb3JjZSwgaXMgcHJvdmlkZWQgdG8gZm9yY2UgQUNQSSBzdXBwb3J0IHRvIGJlIHVzZWQgaW5zdGVhZCAKK29mIFBTQiBzdXBwb3J0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9jcHUtZnJlcS9ib29zdC50eHQgYi9Eb2N1bWVudGF0aW9uL2NwdS1mcmVxL2Jvb3N0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDYyZTEzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9jcHUtZnJlcS9ib29zdC50eHQKQEAgLTAsMCArMSw5MyBAQAorUHJvY2Vzc29yIGJvb3N0aW5nIGNvbnRyb2wKKworCS0gaW5mb3JtYXRpb24gZm9yIHVzZXJzIC0KKworUXVpY2sgZ3VpZGUgZm9yIHRoZSBpbXBhdGllbnQ6CistLS0tLS0tLS0tLS0tLS0tLS0tLQorL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1ZnJlcS9ib29zdAorY29udHJvbHMgdGhlIGJvb3N0IHNldHRpbmcgZm9yIHRoZSB3aG9sZSBzeXN0ZW0uIFlvdSBjYW4gcmVhZCBhbmQgd3JpdGUKK3RoYXQgZmlsZSB3aXRoIGVpdGhlciAiMCIgKGJvb3N0aW5nIGRpc2FibGVkKSBvciAiMSIgKGJvb3N0aW5nIGFsbG93ZWQpLgorUmVhZGluZyBvciB3cml0aW5nIDEgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSBzeXN0ZW0gaXMgYm9vc3RpbmcgYXQgdGhpcwordmVyeSBtb21lbnQsIGJ1dCBvbmx5IHRoYXQgdGhlIENQVSBfbWF5XyByYWlzZSB0aGUgZnJlcXVlbmN5IGF0IGl0J3MKK2Rpc2NyZXRpb24uCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLS0KK1NvbWUgQ1BVcyBzdXBwb3J0IGEgZnVuY3Rpb25hbGl0eSB0byByYWlzZSB0aGUgb3BlcmF0aW5nIGZyZXF1ZW5jeSBvZgorc29tZSBjb3JlcyBpbiBhIG11bHRpLWNvcmUgcGFja2FnZSBpZiBjZXJ0YWluIGNvbmRpdGlvbnMgYXBwbHksIG1vc3RseQoraWYgdGhlIHdob2xlIGNoaXAgaXMgbm90IGZ1bGx5IHV0aWxpemVkIGFuZCBiZWxvdyBpdCdzIGludGVuZGVkIHRoZXJtYWwKK2J1ZGdldC4gVGhlIGRlY2lzaW9uIGFib3V0IGJvb3N0IGRpc2FibGUvZW5hYmxlIGlzIG1hZGUgZWl0aGVyIGF0IGhhcmR3YXJlCisoZS5nLiB4ODYpIG9yIHNvZnR3YXJlIChlLmcgQVJNKS4KK09uIEludGVsIENQVXMgdGhpcyBpcyBjYWxsZWQgIlR1cmJvIEJvb3N0IiwgQU1EIGNhbGxzIGl0ICJUdXJiby1Db3JlIiwKK2luIHRlY2huaWNhbCBkb2N1bWVudGF0aW9uICJDb3JlIHBlcmZvcm1hbmNlIGJvb3N0Ii4gSW4gTGludXggd2UgdXNlCit0aGUgdGVybSAiYm9vc3QiIGZvciBjb252ZW5pZW5jZS4KKworUmF0aW9uYWxlIGZvciBkaXNhYmxlIHN3aXRjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaG91Z2ggdGhlIGlkZWEgaXMgdG8ganVzdCBnaXZlIGJldHRlciBwZXJmb3JtYW5jZSB3aXRob3V0IGFueSB1c2VyCitpbnRlcnZlbnRpb24sIHNvbWV0aW1lcyB0aGUgbmVlZCBhcmlzZXMgdG8gZGlzYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkuCitNb3N0IHN5c3RlbXMgb2ZmZXIgYSBzd2l0Y2ggaW4gdGhlIChCSU9TKSBmaXJtd2FyZSB0byBkaXNhYmxlIHRoZQorZnVuY3Rpb25hbGl0eSBhdCBhbGwsIGJ1dCBhIG1vcmUgZmluZS1ncmFpbmVkIGFuZCBkeW5hbWljIGNvbnRyb2wgd291bGQKK2JlIGRlc2lyYWJsZToKKzEuIFdoaWxlIHJ1bm5pbmcgYmVuY2htYXJrcywgcmVwcm9kdWNpYmxlIHJlc3VsdHMgYXJlIGltcG9ydGFudC4gU2luY2UKKyAgIHRoZSBib29zdGluZyBmdW5jdGlvbmFsaXR5IGRlcGVuZHMgb24gdGhlIGxvYWQgb2YgdGhlIHdob2xlIHBhY2thZ2UsCisgICBzaW5nbGUgdGhyZWFkIHBlcmZvcm1hbmNlIGNhbiB2YXJ5LiBCeSBleHBsaWNpdGx5IGRpc2FibGluZyB0aGUgYm9vc3QKKyAgIGZ1bmN0aW9uYWxpdHkgYXQgbGVhc3QgZm9yIHRoZSBiZW5jaG1hcmsncyBydW4tdGltZSB0aGUgc3lzdGVtIHdpbGwgcnVuCisgICBhdCBhIGZpeGVkIGZyZXF1ZW5jeSBhbmQgcmVzdWx0cyBhcmUgcmVwcm9kdWNpYmxlIGFnYWluLgorMi4gVG8gZXhhbWluZSB0aGUgaW1wYWN0IG9mIHRoZSBib29zdGluZyBmdW5jdGlvbmFsaXR5IGl0IGlzIGhlbHBmdWwKKyAgIHRvIGRvIHRlc3RzIHdpdGggYW5kIHdpdGhvdXQgYm9vc3RpbmcuCiszLiBCb29zdGluZyBtZWFucyBvdmVyY2xvY2tpbmcgdGhlIHByb2Nlc3NvciwgdGhvdWdoIHVuZGVyIGNvbnRyb2xsZWQKKyAgIGNvbmRpdGlvbnMuIEJ5IHJhaXNpbmcgdGhlIGZyZXF1ZW5jeSBhbmQgdGhlIHZvbHRhZ2UgdGhlIHByb2Nlc3NvcgorICAgd2lsbCBjb25zdW1lIG1vcmUgcG93ZXIgdGhhbiB3aXRob3V0IHRoZSBib29zdGluZywgd2hpY2ggbWF5IGJlCisgICB1bmRlc2lyYWJsZSBmb3IgaW5zdGFuY2UgZm9yIG1vYmlsZSB1c2Vycy4gRGlzYWJsaW5nIGJvb3N0aW5nIG1heQorICAgc2F2ZSBwb3dlciBoZXJlLCB0aG91Z2ggdGhpcyBkZXBlbmRzIG9uIHRoZSB3b3JrbG9hZC4KKworCitVc2VyIGNvbnRyb2xsZWQgc3dpdGNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RvIGFsbG93IHRoZSB1c2VyIHRvIHRvZ2dsZSB0aGUgYm9vc3RpbmcgZnVuY3Rpb25hbGl0eSwgdGhlIGNwdWZyZXEgY29yZQorZHJpdmVyIGV4cG9ydHMgYSBzeXNmcyBrbm9iIHRvIGVuYWJsZSBvciBkaXNhYmxlIGl0LiBUaGVyZSBpcyBhIGZpbGU6Cisvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHVmcmVxL2Jvb3N0Cit3aGljaCBjYW4gZWl0aGVyIHJlYWQgIjAiIChib29zdGluZyBkaXNhYmxlZCkgb3IgIjEiIChib29zdGluZyBlbmFibGVkKS4KK1RoZSBmaWxlIGlzIGV4cG9ydGVkIG9ubHkgd2hlbiBjcHVmcmVxIGRyaXZlciBzdXBwb3J0cyBib29zdGluZy4KK0V4cGxpY2l0bHkgY2hhbmdpbmcgdGhlIHBlcm1pc3Npb25zIGFuZCB3cml0aW5nIHRvIHRoYXQgZmlsZSBhbnl3YXkgd2lsbAorcmV0dXJuIEVJTlZBTC4KKworT24gc3VwcG9ydGVkIENQVXMgb25lIGNhbiB3cml0ZSBlaXRoZXIgYSAiMCIgb3IgYSAiMSIgaW50byB0aGlzIGZpbGUuCitUaGlzIHdpbGwgZWl0aGVyIGRpc2FibGUgdGhlIGJvb3N0IGZ1bmN0aW9uYWxpdHkgb24gYWxsIGNvcmVzIGluIHRoZQord2hvbGUgc3lzdGVtICgwKSBvciB3aWxsIGFsbG93IHRoZSBzb2Z0d2FyZSBvciBoYXJkd2FyZSB0byBib29zdCBhdCB3aWxsCisoMSkuCisKK1dyaXRpbmcgYSAiMSIgZG9lcyBub3QgZXhwbGljaXRseSBib29zdCB0aGUgc3lzdGVtLCBidXQganVzdCBhbGxvd3MgdGhlCitDUFUgdG8gYm9vc3QgYXQgdGhlaXIgZGlzY3JldGlvbi4gU29tZSBpbXBsZW1lbnRhdGlvbnMgdGFrZSBleHRlcm5hbAorZmFjdG9ycyBsaWtlIHRoZSBjaGlwJ3MgdGVtcGVyYXR1cmUgaW50byBhY2NvdW50LCBzbyBib29zdGluZyBvbmNlIGRvZXMKK25vdCBuZWNlc3NhcmlseSBtZWFuIHRoYXQgaXQgd2lsbCBvY2N1ciBldmVyeSB0aW1lIGV2ZW4gdXNpbmcgdGhlIGV4YWN0CitzYW1lIHNvZnR3YXJlIHNldHVwLgorCisKK0FNRCBsZWdhY3kgY3BiIHN3aXRjaAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgQU1EIHBvd2Vybm93LWs4IGRyaXZlciB1c2VkIHRvIHN1cHBvcnQgYSB2ZXJ5IHNpbWlsYXIgc3dpdGNoIHRvCitkaXNhYmxlIG9yIGVuYWJsZSB0aGUgIkNvcmUgUGVyZm9ybWFuY2UgQm9vc3QiIGZlYXR1cmUgb2Ygc29tZSBBTUQgQ1BVcy4KK1RoaXMgc3dpdGNoIHdhcyBpbnN0YW50aWF0ZWQgaW4gZWFjaCBDUFUncyBjcHVmcmVxIGRpcmVjdG9yeQorKC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1WzAtOV0qL2NwdWZyZXEpIGFuZCB3YXMgY2FsbGVkICJjcGIiLgorVGhvdWdoIHRoZSBwZXIgQ1BVIGV4aXN0ZW5jZSBoaW50cyBhdCBhIG1vcmUgZmluZSBncmFpbmVkIGNvbnRyb2wsIHRoZQorYWN0dWFsIGltcGxlbWVudGF0aW9uIG9ubHkgc3VwcG9ydGVkIGEgc3lzdGVtLWdsb2JhbCBzd2l0Y2ggc2VtYW50aWNzLAord2hpY2ggd2FzIHNpbXBseSByZWZsZWN0ZWQgaW50byBlYWNoIENQVSdzIGZpbGUuIFdyaXRpbmcgYSAwIG9yIDEgaW50byBpdAord291bGQgcHVsbCB0aGUgb3RoZXIgQ1BVcyB0byB0aGUgc2FtZSBzdGF0ZS4KK0ZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMgdGhpcyBmaWxlIGFuZCBpdHMgYmVoYXZpb3IgaXMgc3RpbGwgc3VwcG9ydGVkCitvbiBBTUQgQ1BVcywgdGhvdWdoIGl0IGlzIG5vdyBwcm90ZWN0ZWQgYnkgYSBjb25maWcgc3dpdGNoCisoWDg2X0FDUElfQ1BVRlJFUV9DUEIpLiBPbiBJbnRlbCBDUFVzIHRoaXMgZmlsZSB3aWxsIG5ldmVyIGJlIGNyZWF0ZWQsCitldmVuIHdpdGggdGhlIGNvbmZpZyBvcHRpb24gc2V0LgorVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGNvbnNpZGVyZWQgbGVnYWN5IGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gc29tZSBmdXR1cmUKK2tlcm5lbCB2ZXJzaW9uLgorCitNb3JlIGZpbmUgZ3JhaW5lZCBib29zdGluZyBjb250cm9sCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RlY2huaWNhbGx5IGl0IGlzIHBvc3NpYmxlIHRvIHN3aXRjaCB0aGUgYm9vc3RpbmcgZnVuY3Rpb25hbGl0eSBhdCBsZWFzdAorb24gYSBwZXIgcGFja2FnZSBiYXNpcywgZm9yIHNvbWUgQ1BVcyBldmVuIHBlciBjb3JlLiBDdXJyZW50bHkgdGhlIGRyaXZlcgorZG9lcyBub3Qgc3VwcG9ydCBpdCwgYnV0IHRoaXMgbWF5IGJlIGltcGxlbWVudGVkIGluIHRoZSBmdXR1cmUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2NwdS1mcmVxL2NvcmUudHh0IGIvRG9jdW1lbnRhdGlvbi9jcHUtZnJlcS9jb3JlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTc4ZTdjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9jcHUtZnJlcS9jb3JlLnR4dApAQCAtMCwwICsxLDEyMCBAQAorICAgICBDUFUgZnJlcXVlbmN5IGFuZCB2b2x0YWdlIHNjYWxpbmcgY29kZSBpbiB0aGUgTGludXgoVE0pIGtlcm5lbAorCisKKwkJICAgICAgICAgTCBpIG4gdSB4ICAgIEMgUCBVIEYgciBlIHEKKworCQkJICBDIFAgVSBGIHIgZSBxICAgIEMgbyByIGUKKworCisJCSAgICBEb21pbmlrIEJyb2Rvd3NraSAgPGxpbnV4QGJyb2RvLmRlPgorCQkgICAgIERhdmlkIEtpbWRvbiA8ZHdoZWRvbkBkZWJpYW4ub3JnPgorCisKKworICAgQ2xvY2sgc2NhbGluZyBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgY2xvY2sgc3BlZWQgb2YgdGhlIENQVXMgb24gdGhlCisgICAgZmx5LiBUaGlzIGlzIGEgbmljZSBtZXRob2QgdG8gc2F2ZSBiYXR0ZXJ5IHBvd2VyLCBiZWNhdXNlIHRoZSBsb3dlcgorICAgICAgICAgICAgdGhlIGNsb2NrIHNwZWVkLCB0aGUgbGVzcyBwb3dlciB0aGUgQ1BVIGNvbnN1bWVzLgorCisKK0NvbnRlbnRzOgorLS0tLS0tLS0tCisxLiAgQ1BVRnJlcSBjb3JlIGFuZCBpbnRlcmZhY2VzCisyLiAgQ1BVRnJlcSBub3RpZmllcnMKKzMuICBDUFVGcmVxIFRhYmxlIEdlbmVyYXRpb24gd2l0aCBPcGVyYXRpbmcgUGVyZm9ybWFuY2UgUG9pbnQgKE9QUCkKKworMS4gR2VuZXJhbCBJbmZvcm1hdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIENQVUZyZXEgY29yZSBjb2RlIGlzIGxvY2F0ZWQgaW4gZHJpdmVycy9jcHVmcmVxL2NwdWZyZXEuYy4gVGhpcworY3B1ZnJlcSBjb2RlIG9mZmVycyBhIHN0YW5kYXJkaXplZCBpbnRlcmZhY2UgZm9yIHRoZSBDUFVGcmVxCithcmNoaXRlY3R1cmUgZHJpdmVycyAodGhvc2UgcGllY2VzIG9mIGNvZGUgdGhhdCBkbyBhY3R1YWwKK2ZyZXF1ZW5jeSB0cmFuc2l0aW9ucyksIGFzIHdlbGwgYXMgdG8gIm5vdGlmaWVycyIuIFRoZXNlIGFyZSBkZXZpY2UKK2RyaXZlcnMgb3Igb3RoZXIgcGFydCBvZiB0aGUga2VybmVsIHRoYXQgbmVlZCB0byBiZSBpbmZvcm1lZCBvZgorcG9saWN5IGNoYW5nZXMgKGV4LiB0aGVybWFsIG1vZHVsZXMgbGlrZSBBQ1BJKSBvciBvZiBhbGwKK2ZyZXF1ZW5jeSBjaGFuZ2VzIChleC4gdGltaW5nIGNvZGUpIG9yIGV2ZW4gbmVlZCB0byBmb3JjZSBjZXJ0YWluCitzcGVlZCBsaW1pdHMgKGxpa2UgTENEIGRyaXZlcnMgb24gQVJNIGFyY2hpdGVjdHVyZSkuIEFkZGl0aW9uYWxseSwgdGhlCitrZXJuZWwgImNvbnN0YW50IiBsb29wc19wZXJfamlmZnkgaXMgdXBkYXRlZCBvbiBmcmVxdWVuY3kgY2hhbmdlcworaGVyZS4KKworUmVmZXJlbmNlIGNvdW50aW5nIGlzIGRvbmUgYnkgY3B1ZnJlcV9nZXRfY3B1IGFuZCBjcHVmcmVxX3B1dF9jcHUsCit3aGljaCBtYWtlIHN1cmUgdGhhdCB0aGUgY3B1ZnJlcSBwcm9jZXNzb3IgZHJpdmVyIGlzIGNvcnJlY3RseQorcmVnaXN0ZXJlZCB3aXRoIHRoZSBjb3JlLCBhbmQgd2lsbCBub3QgYmUgdW5sb2FkZWQgdW50aWwKK2NwdWZyZXFfcHV0X2NwdSBpcyBjYWxsZWQuCisKKzIuIENQVUZyZXEgbm90aWZpZXJzCis9PT09PT09PT09PT09PT09PT09PQorCitDUFVGcmVxIG5vdGlmaWVycyBjb25mb3JtIHRvIHRoZSBzdGFuZGFyZCBrZXJuZWwgbm90aWZpZXIgaW50ZXJmYWNlLgorU2VlIGxpbnV4L2luY2x1ZGUvbGludXgvbm90aWZpZXIuaCBmb3IgZGV0YWlscyBvbiBub3RpZmllcnMuCisKK1RoZXJlIGFyZSB0d28gZGlmZmVyZW50IENQVUZyZXEgbm90aWZpZXJzIC0gcG9saWN5IG5vdGlmaWVycyBhbmQKK3RyYW5zaXRpb24gbm90aWZpZXJzLgorCisKKzIuMSBDUFVGcmVxIHBvbGljeSBub3RpZmllcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlc2UgYXJlIG5vdGlmaWVkIHdoZW4gYSBuZXcgcG9saWN5IGlzIGludGVuZGVkIHRvIGJlIHNldC4gRWFjaAorQ1BVRnJlcSBwb2xpY3kgbm90aWZpZXIgaXMgY2FsbGVkIHR3aWNlIGZvciBhIHBvbGljeSB0cmFuc2l0aW9uOgorCisxLikgRHVyaW5nIENQVUZSRVFfQURKVVNUIGFsbCBDUFVGcmVxIG5vdGlmaWVycyBtYXkgY2hhbmdlIHRoZSBsaW1pdCBpZgorICAgIHRoZXkgc2VlIGEgbmVlZCBmb3IgdGhpcyAtIG1heSBpdCBiZSB0aGVybWFsIGNvbnNpZGVyYXRpb25zIG9yCisgICAgaGFyZHdhcmUgbGltaXRhdGlvbnMuCisKKzIuKSBBbmQgZHVyaW5nIENQVUZSRVFfTk9USUZZIGFsbCBub3RpZmllcnMgYXJlIGluZm9ybWVkIG9mIHRoZSBuZXcgcG9saWN5CisgICAtIGlmIHR3byBoYXJkd2FyZSBkcml2ZXJzIGZhaWxlZCB0byBhZ3JlZSBvbiBhIG5ldyBwb2xpY3kgYmVmb3JlIHRoaXMKKyAgIHN0YWdlLCB0aGUgaW5jb21wYXRpYmxlIGhhcmR3YXJlIHNoYWxsIGJlIHNodXQgZG93biwgYW5kIHRoZSB1c2VyCisgICBpbmZvcm1lZCBvZiB0aGlzLgorCitUaGUgcGhhc2UgaXMgc3BlY2lmaWVkIGluIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gdGhlIG5vdGlmaWVyLgorCitUaGUgdGhpcmQgYXJndW1lbnQsIGEgdm9pZCAqcG9pbnRlciwgcG9pbnRzIHRvIGEgc3RydWN0IGNwdWZyZXFfcG9saWN5Citjb25zaXN0aW5nIG9mIGZpdmUgdmFsdWVzOiBjcHUsIG1pbiwgbWF4LCBwb2xpY3kgYW5kIG1heF9jcHVfZnJlcS4gbWluIAorYW5kIG1heCBhcmUgdGhlIGxvd2VyIGFuZCB1cHBlciBmcmVxdWVuY2llcyAoaW4ga0h6KSBvZiB0aGUgbmV3Citwb2xpY3ksIHBvbGljeSB0aGUgbmV3IHBvbGljeSwgY3B1IHRoZSBudW1iZXIgb2YgdGhlIGFmZmVjdGVkIENQVTsgYW5kIAorbWF4X2NwdV9mcmVxIHRoZSBtYXhpbXVtIHN1cHBvcnRlZCBDUFUgZnJlcXVlbmN5LiBUaGlzIHZhbHVlIGlzIGdpdmVuIAorZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seS4KKworCisyLjIgQ1BVRnJlcSB0cmFuc2l0aW9uIG5vdGlmaWVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlc2UgYXJlIG5vdGlmaWVkIHR3aWNlIHdoZW4gdGhlIENQVWZyZXEgZHJpdmVyIHN3aXRjaGVzIHRoZSBDUFUgY29yZQorZnJlcXVlbmN5IGFuZCB0aGlzIGNoYW5nZSBoYXMgYW55IGV4dGVybmFsIGltcGxpY2F0aW9ucy4KKworVGhlIHNlY29uZCBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIHBoYXNlIC0gQ1BVRlJFUV9QUkVDSEFOR0Ugb3IKK0NQVUZSRVFfUE9TVENIQU5HRS4KKworVGhlIHRoaXJkIGFyZ3VtZW50IGlzIGEgc3RydWN0IGNwdWZyZXFfZnJlcXMgd2l0aCB0aGUgZm9sbG93aW5nCit2YWx1ZXM6CitjcHUJLSBudW1iZXIgb2YgdGhlIGFmZmVjdGVkIENQVQorb2xkCS0gb2xkIGZyZXF1ZW5jeQorbmV3CS0gbmV3IGZyZXF1ZW5jeQorCiszLiBDUFVGcmVxIFRhYmxlIEdlbmVyYXRpb24gd2l0aCBPcGVyYXRpbmcgUGVyZm9ybWFuY2UgUG9pbnQgKE9QUCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorRm9yIGRldGFpbHMgYWJvdXQgT1BQLCBzZWUgRG9jdW1lbnRhdGlvbi9wb3dlci9vcHAudHh0CisKK2Rldl9wbV9vcHBfaW5pdF9jcHVmcmVxX3RhYmxlIC0gY3B1ZnJlcSBmcmFtZXdvcmsgdHlwaWNhbGx5IGlzIGluaXRpYWxpemVkIHdpdGgKKwljcHVmcmVxX2ZyZXF1ZW5jeV90YWJsZV9jcHVpbmZvIHdoaWNoIGlzIHByb3ZpZGVkIHdpdGggdGhlIGxpc3Qgb2YKKwlmcmVxdWVuY2llcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIG9wZXJhdGlvbi4gVGhpcyBmdW5jdGlvbiBwcm92aWRlcworCWEgcmVhZHkgdG8gdXNlIGNvbnZlcnNpb24gcm91dGluZSB0byB0cmFuc2xhdGUgdGhlIE9QUCBsYXllcidzIGludGVybmFsCisJaW5mb3JtYXRpb24gYWJvdXQgdGhlIGF2YWlsYWJsZSBmcmVxdWVuY2llcyBpbnRvIGEgZm9ybWF0IHJlYWRpbHkKKwlwcm92aWRhYmxlIHRvIGNwdWZyZXEuCisKKwlXQVJOSU5HOiBEbyBub3QgdXNlIHRoaXMgZnVuY3Rpb24gaW4gaW50ZXJydXB0IGNvbnRleHQuCisKKwlFeGFtcGxlOgorCSBzb2NfcG1faW5pdCgpCisJIHsKKwkJLyogRG8gdGhpbmdzICovCisJCXIgPSBkZXZfcG1fb3BwX2luaXRfY3B1ZnJlcV90YWJsZShkZXYsICZmcmVxX3RhYmxlKTsKKwkJaWYgKCFyKQorCQkJY3B1ZnJlcV9mcmVxdWVuY3lfdGFibGVfY3B1aW5mbyhwb2xpY3ksIGZyZXFfdGFibGUpOworCQkvKiBEbyBvdGhlciB0aGluZ3MgKi8KKwkgfQorCisJTk9URTogVGhpcyBmdW5jdGlvbiBpcyBhdmFpbGFibGUgb25seSBpZiBDT05GSUdfQ1BVX0ZSRVEgaXMgZW5hYmxlZCBpbgorCWFkZGl0aW9uIHRvIENPTkZJR19QTV9PUFAuCisKK2Rldl9wbV9vcHBfZnJlZV9jcHVmcmVxX3RhYmxlIC0gRnJlZSB1cCB0aGUgdGFibGUgYWxsb2NhdGVkIGJ5IGRldl9wbV9vcHBfaW5pdF9jcHVmcmVxX3RhYmxlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2NwdS1mcmVxL2NwdS1kcml2ZXJzLnR4dCBiL0RvY3VtZW50YXRpb24vY3B1LWZyZXEvY3B1LWRyaXZlcnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0ZjRlNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2NwdS1mcmVxL2NwdS1kcml2ZXJzLnR4dApAQCAtMCwwICsxLDI3NCBAQAorICAgICBDUFUgZnJlcXVlbmN5IGFuZCB2b2x0YWdlIHNjYWxpbmcgY29kZSBpbiB0aGUgTGludXgoVE0pIGtlcm5lbAorCisKKwkJICAgICAgICAgTCBpIG4gdSB4ICAgIEMgUCBVIEYgciBlIHEKKworCQkJICAgQyBQIFUgICBEIHIgaSB2IGUgciBzIAorCisJCSAgICAgICAtIGluZm9ybWF0aW9uIGZvciBkZXZlbG9wZXJzIC0KKworCisJCSAgICBEb21pbmlrIEJyb2Rvd3NraSAgPGxpbnV4QGJyb2RvLmRlPgorCisKKworICAgQ2xvY2sgc2NhbGluZyBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgY2xvY2sgc3BlZWQgb2YgdGhlIENQVXMgb24gdGhlCisgICAgZmx5LiBUaGlzIGlzIGEgbmljZSBtZXRob2QgdG8gc2F2ZSBiYXR0ZXJ5IHBvd2VyLCBiZWNhdXNlIHRoZSBsb3dlcgorICAgICAgICAgICAgdGhlIGNsb2NrIHNwZWVkLCB0aGUgbGVzcyBwb3dlciB0aGUgQ1BVIGNvbnN1bWVzLgorCisKK0NvbnRlbnRzOgorLS0tLS0tLS0tCisxLiAgIFdoYXQgVG8gRG8/CisxLjEgIEluaXRpYWxpemF0aW9uCisxLjIgIFBlci1DUFUgSW5pdGlhbGl6YXRpb24KKzEuMyAgdmVyaWZ5CisxLjQgIHRhcmdldC90YXJnZXRfaW5kZXggb3Igc2V0cG9saWN5PworMS41ICB0YXJnZXQvdGFyZ2V0X2luZGV4CisxLjYgIHNldHBvbGljeQorMS43ICBnZXRfaW50ZXJtZWRpYXRlIGFuZCB0YXJnZXRfaW50ZXJtZWRpYXRlCisyLiAgIEZyZXF1ZW5jeSBUYWJsZSBIZWxwZXJzCisKKworCisxLiBXaGF0IFRvIERvPworPT09PT09PT09PT09PT0KKworU28sIHlvdSBqdXN0IGdvdCBhIGJyYW5kLW5ldyBDUFUgLyBjaGlwc2V0IHdpdGggZGF0YXNoZWV0cyBhbmQgd2FudCB0bworYWRkIGNwdWZyZXEgc3VwcG9ydCBmb3IgdGhpcyBDUFUgLyBjaGlwc2V0PyBHcmVhdC4gSGVyZSBhcmUgc29tZSBoaW50cworb24gd2hhdCBpcyBuZWNlc3Nhcnk6CisKKworMS4xIEluaXRpYWxpemF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0KKworRmlyc3Qgb2YgYWxsLCBpbiBhbiBfX2luaXRjYWxsIGxldmVsIDcgKG1vZHVsZV9pbml0KCkpIG9yIGxhdGVyCitmdW5jdGlvbiBjaGVjayB3aGV0aGVyIHRoaXMga2VybmVsIHJ1bnMgb24gdGhlIHJpZ2h0IENQVSBhbmQgdGhlIHJpZ2h0CitjaGlwc2V0LiBJZiBzbywgcmVnaXN0ZXIgYSBzdHJ1Y3QgY3B1ZnJlcV9kcml2ZXIgd2l0aCB0aGUgQ1BVZnJlcSBjb3JlCit1c2luZyBjcHVmcmVxX3JlZ2lzdGVyX2RyaXZlcigpCisKK1doYXQgc2hhbGwgdGhpcyBzdHJ1Y3QgY3B1ZnJlcV9kcml2ZXIgY29udGFpbj8gCisKK2NwdWZyZXFfZHJpdmVyLm5hbWUgLQkJVGhlIG5hbWUgb2YgdGhpcyBkcml2ZXIuCisKK2NwdWZyZXFfZHJpdmVyLmluaXQgLQkJQSBwb2ludGVyIHRvIHRoZSBwZXItQ1BVIGluaXRpYWxpemF0aW9uIAorCQkJCWZ1bmN0aW9uLgorCitjcHVmcmVxX2RyaXZlci52ZXJpZnkgLQkJQSBwb2ludGVyIHRvIGEgInZlcmlmaWNhdGlvbiIgZnVuY3Rpb24uCisKK2NwdWZyZXFfZHJpdmVyLnNldHBvbGljeSBfb3JfIAorY3B1ZnJlcV9kcml2ZXIudGFyZ2V0LwordGFyZ2V0X2luZGV4CQktCVNlZSBiZWxvdyBvbiB0aGUgZGlmZmVyZW5jZXMuCisKK0FuZCBvcHRpb25hbGx5CisKK2NwdWZyZXFfZHJpdmVyLmV4aXQgLQkJQSBwb2ludGVyIHRvIGEgcGVyLUNQVSBjbGVhbnVwCisJCQkJZnVuY3Rpb24gY2FsbGVkIGR1cmluZyBDUFVfUE9TVF9ERUFECisJCQkJcGhhc2Ugb2YgY3B1IGhvdHBsdWcgcHJvY2Vzcy4KKworY3B1ZnJlcV9kcml2ZXIuc3RvcF9jcHUgLQlBIHBvaW50ZXIgdG8gYSBwZXItQ1BVIHN0b3AgZnVuY3Rpb24KKwkJCQljYWxsZWQgZHVyaW5nIENQVV9ET1dOX1BSRVBBUkUgcGhhc2Ugb2YKKwkJCQljcHUgaG90cGx1ZyBwcm9jZXNzLgorCitjcHVmcmVxX2RyaXZlci5yZXN1bWUgLQkJQSBwb2ludGVyIHRvIGEgcGVyLUNQVSByZXN1bWUgZnVuY3Rpb24KKwkJCQl3aGljaCBpcyBjYWxsZWQgd2l0aCBpbnRlcnJ1cHRzIGRpc2FibGVkCisJCQkJYW5kIF9iZWZvcmVfIHRoZSBwcmUtc3VzcGVuZCBmcmVxdWVuY3kKKwkJCQlhbmQvb3IgcG9saWN5IGlzIHJlc3RvcmVkIGJ5IGEgY2FsbCB0bworCQkJCS0+dGFyZ2V0L3RhcmdldF9pbmRleCBvciAtPnNldHBvbGljeS4KKworY3B1ZnJlcV9kcml2ZXIuYXR0ciAtCQlBIHBvaW50ZXIgdG8gYSBOVUxMLXRlcm1pbmF0ZWQgbGlzdCBvZgorCQkJCSJzdHJ1Y3QgZnJlcV9hdHRyIiB3aGljaCBhbGxvdyB0bworCQkJCWV4cG9ydCB2YWx1ZXMgdG8gc3lzZnMuCisKK2NwdWZyZXFfZHJpdmVyLmdldF9pbnRlcm1lZGlhdGUKK2FuZCB0YXJnZXRfaW50ZXJtZWRpYXRlCQlVc2VkIHRvIHN3aXRjaCB0byBzdGFibGUgZnJlcXVlbmN5IHdoaWxlCisJCQkJY2hhbmdpbmcgQ1BVIGZyZXF1ZW5jeS4KKworCisxLjIgUGVyLUNQVSBJbml0aWFsaXphdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hlbmV2ZXIgYSBuZXcgQ1BVIGlzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgZGV2aWNlIG1vZGVsLCBvciBhZnRlciB0aGUKK2NwdWZyZXEgZHJpdmVyIHJlZ2lzdGVycyBpdHNlbGYsIHRoZSBwZXItQ1BVIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIAorY3B1ZnJlcV9kcml2ZXIuaW5pdCBpcyBjYWxsZWQuIEl0IHRha2VzIGEgc3RydWN0IGNwdWZyZXFfcG9saWN5CisqcG9saWN5IGFzIGFyZ3VtZW50LiBXaGF0IHRvIGRvIG5vdz8KKworSWYgbmVjZXNzYXJ5LCBhY3RpdmF0ZSB0aGUgQ1BVZnJlcSBzdXBwb3J0IG9uIHlvdXIgQ1BVLgorCitUaGVuLCB0aGUgZHJpdmVyIG11c3QgZmlsbCBpbiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKworcG9saWN5LT5jcHVpbmZvLm1pbl9mcmVxIF9hbmRfCitwb2xpY3ktPmNwdWluZm8ubWF4X2ZyZXEgLQl0aGUgbWluaW11bSBhbmQgbWF4aW11bSBmcmVxdWVuY3kgCisJCQkJKGluIGtIeikgd2hpY2ggaXMgc3VwcG9ydGVkIGJ5IAorCQkJCXRoaXMgQ1BVCitwb2xpY3ktPmNwdWluZm8udHJhbnNpdGlvbl9sYXRlbmN5ICAgdGhlIHRpbWUgaXQgdGFrZXMgb24gdGhpcyBDUFUgdG8KKwkJCQlzd2l0Y2ggYmV0d2VlbiB0d28gZnJlcXVlbmNpZXMgaW4KKwkJCQluYW5vc2Vjb25kcyAoaWYgYXBwcm9wcmlhdGUsIGVsc2UKKwkJCQlzcGVjaWZ5IENQVUZSRVFfRVRFUk5BTCkKKworcG9saWN5LT5jdXIJCQlUaGUgY3VycmVudCBvcGVyYXRpbmcgZnJlcXVlbmN5IG9mCisJCQkJdGhpcyBDUFUgKGlmIGFwcHJvcHJpYXRlKQorcG9saWN5LT5taW4sIAorcG9saWN5LT5tYXgsIAorcG9saWN5LT5wb2xpY3kgYW5kLCBpZiBuZWNlc3NhcnksCitwb2xpY3ktPmdvdmVybm9yCQltdXN0IGNvbnRhaW4gdGhlICJkZWZhdWx0IHBvbGljeSIgZm9yCisJCQkJdGhpcyBDUFUuIEEgZmV3IG1vbWVudHMgbGF0ZXIsCisJCQkJY3B1ZnJlcV9kcml2ZXIudmVyaWZ5IGFuZCBlaXRoZXIKKwkJCQljcHVmcmVxX2RyaXZlci5zZXRwb2xpY3kgb3IKKwkJCQljcHVmcmVxX2RyaXZlci50YXJnZXQvdGFyZ2V0X2luZGV4IGlzIGNhbGxlZAorCQkJCXdpdGggdGhlc2UgdmFsdWVzLgorCitGb3Igc2V0dGluZyBzb21lIG9mIHRoZXNlIHZhbHVlcyAoY3B1aW5mby5taW5bbWF4XV9mcmVxLCBwb2xpY3ktPm1pblttYXhdKSwgdGhlCitmcmVxdWVuY3kgdGFibGUgaGVscGVycyBtaWdodCBiZSBoZWxwZnVsLiBTZWUgdGhlIHNlY3Rpb24gMiBmb3IgbW9yZSBpbmZvcm1hdGlvbgorb24gdGhlbS4KKworU01QIHN5c3RlbXMgbm9ybWFsbHkgaGF2ZSBzYW1lIGNsb2NrIHNvdXJjZSBmb3IgYSBncm91cCBvZiBjcHVzLiBGb3IgdGhlc2UgdGhlCisuaW5pdCgpIHdvdWxkIGJlIGNhbGxlZCBvbmx5IG9uY2UgZm9yIHRoZSBmaXJzdCBvbmxpbmUgY3B1LiBIZXJlIHRoZSAuaW5pdCgpCityb3V0aW5lIG11c3QgaW5pdGlhbGl6ZSBwb2xpY3ktPmNwdXMgd2l0aCBtYXNrIG9mIGFsbCBwb3NzaWJsZSBjcHVzIChPbmxpbmUgKworT2ZmbGluZSkgdGhhdCBzaGFyZSB0aGUgY2xvY2suIFRoZW4gdGhlIGNvcmUgd291bGQgY29weSB0aGlzIG1hc2sgb250bworcG9saWN5LT5yZWxhdGVkX2NwdXMgYW5kIHdpbGwgcmVzZXQgcG9saWN5LT5jcHVzIHRvIGNhcnJ5IG9ubHkgb25saW5lIGNwdXMuCisKKworMS4zIHZlcmlmeQorLS0tLS0tLS0tLS0tCisKK1doZW4gdGhlIHVzZXIgZGVjaWRlcyBhIG5ldyBwb2xpY3kgKGNvbnNpc3Rpbmcgb2YKKyJwb2xpY3ksZ292ZXJub3IsbWluLG1heCIpIHNoYWxsIGJlIHNldCwgdGhpcyBwb2xpY3kgbXVzdCBiZSB2YWxpZGF0ZWQKK3NvIHRoYXQgaW5jb21wYXRpYmxlIHZhbHVlcyBjYW4gYmUgY29ycmVjdGVkLiBGb3IgdmVyaWZ5aW5nIHRoZXNlCit2YWx1ZXMsIGEgZnJlcXVlbmN5IHRhYmxlIGhlbHBlciBhbmQvb3IgdGhlCitjcHVmcmVxX3ZlcmlmeV93aXRoaW5fbGltaXRzKHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5LCB1bnNpZ25lZAoraW50IG1pbl9mcmVxLCB1bnNpZ25lZCBpbnQgbWF4X2ZyZXEpIGZ1bmN0aW9uIG1pZ2h0IGJlIGhlbHBmdWwuIFNlZQorc2VjdGlvbiAyIGZvciBkZXRhaWxzIG9uIGZyZXF1ZW5jeSB0YWJsZSBoZWxwZXJzLgorCitZb3UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBhdCBsZWFzdCBvbmUgdmFsaWQgZnJlcXVlbmN5IChvciBvcGVyYXRpbmcKK3JhbmdlKSBpcyB3aXRoaW4gcG9saWN5LT5taW4gYW5kIHBvbGljeS0+bWF4LiBJZiBuZWNlc3NhcnksIGluY3JlYXNlCitwb2xpY3ktPm1heCBmaXJzdCwgYW5kIG9ubHkgaWYgdGhpcyBpcyBubyBzb2x1dGlvbiwgZGVjcmVhc2UgcG9saWN5LT5taW4uCisKKworMS40IHRhcmdldC90YXJnZXRfaW5kZXggb3Igc2V0cG9saWN5PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitNb3N0IGNwdWZyZXEgZHJpdmVycyBvciBldmVuIG1vc3QgY3B1IGZyZXF1ZW5jeSBzY2FsaW5nIGFsZ29yaXRobXMgCitvbmx5IGFsbG93IHRoZSBDUFUgdG8gYmUgc2V0IHRvIG9uZSBmcmVxdWVuY3kuIEZvciB0aGVzZSwgeW91IHVzZSB0aGUKKy0+dGFyZ2V0L3RhcmdldF9pbmRleCBjYWxsLgorCitTb21lIGNwdWZyZXEtY2FwYWJsZSBwcm9jZXNzb3JzIHN3aXRjaCB0aGUgZnJlcXVlbmN5IGJldHdlZW4gY2VydGFpbgorbGltaXRzIG9uIHRoZWlyIG93bi4gVGhlc2Ugc2hhbGwgdXNlIHRoZSAtPnNldHBvbGljeSBjYWxsCisKKworMS41LiB0YXJnZXQvdGFyZ2V0X2luZGV4CistLS0tLS0tLS0tLS0tCisKK1RoZSB0YXJnZXRfaW5kZXggY2FsbCBoYXMgdHdvIGFyZ3VtZW50czogc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3ksCithbmQgdW5zaWduZWQgaW50IGluZGV4IChpbnRvIHRoZSBleHBvc2VkIGZyZXF1ZW5jeSB0YWJsZSkuCisKK1RoZSBDUFVmcmVxIGRyaXZlciBtdXN0IHNldCB0aGUgbmV3IGZyZXF1ZW5jeSB3aGVuIGNhbGxlZCBoZXJlLiBUaGUKK2FjdHVhbCBmcmVxdWVuY3kgbXVzdCBiZSBkZXRlcm1pbmVkIGJ5IGZyZXFfdGFibGVbaW5kZXhdLmZyZXF1ZW5jeS4KKworSXQgc2hvdWxkIGFsd2F5cyByZXN0b3JlIHRvIGVhcmxpZXIgZnJlcXVlbmN5IChpLmUuIHBvbGljeS0+cmVzdG9yZV9mcmVxKSBpbgorY2FzZSBvZiBlcnJvcnMsIGV2ZW4gaWYgd2Ugc3dpdGNoZWQgdG8gaW50ZXJtZWRpYXRlIGZyZXF1ZW5jeSBlYXJsaWVyLgorCitEZXByZWNhdGVkOgorLS0tLS0tLS0tLQorVGhlIHRhcmdldCBjYWxsIGhhcyB0aHJlZSBhcmd1bWVudHM6IHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5LAordW5zaWduZWQgaW50IHRhcmdldF9mcmVxdWVuY3ksIHVuc2lnbmVkIGludCByZWxhdGlvbi4KKworVGhlIENQVWZyZXEgZHJpdmVyIG11c3Qgc2V0IHRoZSBuZXcgZnJlcXVlbmN5IHdoZW4gY2FsbGVkIGhlcmUuIFRoZQorYWN0dWFsIGZyZXF1ZW5jeSBtdXN0IGJlIGRldGVybWluZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBydWxlczoKKworLSBrZWVwIGNsb3NlIHRvICJ0YXJnZXRfZnJlcSIKKy0gcG9saWN5LT5taW4gPD0gbmV3X2ZyZXEgPD0gcG9saWN5LT5tYXggKFRISVMgTVVTVCBCRSBWQUxJRCEhISkKKy0gaWYgcmVsYXRpb249PUNQVUZSRVFfUkVMX0wsIHRyeSB0byBzZWxlY3QgYSBuZXdfZnJlcSBoaWdoZXIgdGhhbiBvciBlcXVhbAorICB0YXJnZXRfZnJlcS4gKCJMIGZvciBsb3dlc3QsIGJ1dCBubyBsb3dlciB0aGFuIikKKy0gaWYgcmVsYXRpb249PUNQVUZSRVFfUkVMX0gsIHRyeSB0byBzZWxlY3QgYSBuZXdfZnJlcSBsb3dlciB0aGFuIG9yIGVxdWFsCisgIHRhcmdldF9mcmVxLiAoIkggZm9yIGhpZ2hlc3QsIGJ1dCBubyBoaWdoZXIgdGhhbiIpCisKK0hlcmUgYWdhaW4gdGhlIGZyZXF1ZW5jeSB0YWJsZSBoZWxwZXIgbWlnaHQgYXNzaXN0IHlvdSAtIHNlZSBzZWN0aW9uIDIKK2ZvciBkZXRhaWxzLgorCisKKzEuNiBzZXRwb2xpY3kKKy0tLS0tLS0tLS0tLS0tLQorCitUaGUgc2V0cG9saWN5IGNhbGwgb25seSB0YWtlcyBhIHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5IGFzCithcmd1bWVudC4gWW91IG5lZWQgdG8gc2V0IHRoZSBsb3dlciBsaW1pdCBvZiB0aGUgaW4tcHJvY2Vzc29yIG9yCitpbi1jaGlwc2V0IGR5bmFtaWMgZnJlcXVlbmN5IHN3aXRjaGluZyB0byBwb2xpY3ktPm1pbiwgdGhlIHVwcGVyIGxpbWl0Cit0byBwb2xpY3ktPm1heCwgYW5kIC1pZiBzdXBwb3J0ZWQtIHNlbGVjdCBhIHBlcmZvcm1hbmNlLW9yaWVudGVkCitzZXR0aW5nIHdoZW4gcG9saWN5LT5wb2xpY3kgaXMgQ1BVRlJFUV9QT0xJQ1lfUEVSRk9STUFOQ0UsIGFuZCBhCitwb3dlcnNhdmluZy1vcmllbnRlZCBzZXR0aW5nIHdoZW4gQ1BVRlJFUV9QT0xJQ1lfUE9XRVJTQVZFLiBBbHNvIGNoZWNrCit0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGluIGRyaXZlcnMvY3B1ZnJlcS9sb25ncnVuLmMKKworMS43IGdldF9pbnRlcm1lZGlhdGUgYW5kIHRhcmdldF9pbnRlcm1lZGlhdGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK09ubHkgZm9yIGRyaXZlcnMgd2l0aCB0YXJnZXRfaW5kZXgoKSBhbmQgQ1BVRlJFUV9BU1lOQ19OT1RJRklDQVRJT04gdW5zZXQuCisKK2dldF9pbnRlcm1lZGlhdGUgc2hvdWxkIHJldHVybiBhIHN0YWJsZSBpbnRlcm1lZGlhdGUgZnJlcXVlbmN5IHBsYXRmb3JtIHdhbnRzIHRvCitzd2l0Y2ggdG8sIGFuZCB0YXJnZXRfaW50ZXJtZWRpYXRlKCkgc2hvdWxkIHNldCBDUFUgdG8gdG8gdGhhdCBmcmVxdWVuY3ksIGJlZm9yZQoranVtcGluZyB0byB0aGUgZnJlcXVlbmN5IGNvcnJlc3BvbmRpbmcgdG8gJ2luZGV4Jy4gQ29yZSB3aWxsIHRha2UgY2FyZSBvZgorc2VuZGluZyBub3RpZmljYXRpb25zIGFuZCBkcml2ZXIgZG9lc24ndCBoYXZlIHRvIGhhbmRsZSB0aGVtIGluCit0YXJnZXRfaW50ZXJtZWRpYXRlKCkgb3IgdGFyZ2V0X2luZGV4KCkuCisKK0RyaXZlcnMgY2FuIHJldHVybiAnMCcgZnJvbSBnZXRfaW50ZXJtZWRpYXRlKCkgaW4gY2FzZSB0aGV5IGRvbid0IHdpc2ggdG8gc3dpdGNoCit0byBpbnRlcm1lZGlhdGUgZnJlcXVlbmN5IGZvciBzb21lIHRhcmdldCBmcmVxdWVuY3kuIEluIHRoYXQgY2FzZSBjb3JlIHdpbGwKK2RpcmVjdGx5IGNhbGwgLT50YXJnZXRfaW5kZXgoKS4KKworTk9URTogLT50YXJnZXRfaW5kZXgoKSBzaG91bGQgcmVzdG9yZSB0byBwb2xpY3ktPnJlc3RvcmVfZnJlcSBpbiBjYXNlIG9mCitmYWlsdXJlcyBhcyBjb3JlIHdvdWxkIHNlbmQgbm90aWZpY2F0aW9ucyBmb3IgdGhhdC4KKworCisyLiBGcmVxdWVuY3kgVGFibGUgSGVscGVycworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQXMgbW9zdCBjcHVmcmVxIHByb2Nlc3NvcnMgb25seSBhbGxvdyBmb3IgYmVpbmcgc2V0IHRvIGEgZmV3IHNwZWNpZmljCitmcmVxdWVuY2llcywgYSAiZnJlcXVlbmN5IHRhYmxlIiB3aXRoIHNvbWUgZnVuY3Rpb25zIG1pZ2h0IGFzc2lzdCBpbgorc29tZSB3b3JrIG9mIHRoZSBwcm9jZXNzb3IgZHJpdmVyLiBTdWNoIGEgImZyZXF1ZW5jeSB0YWJsZSIgY29uc2lzdHMKK29mIGFuIGFycmF5IG9mIHN0cnVjdCBjcHVmcmVxX2ZyZXF1ZW5jeV90YWJsZSBlbnRyaWVzLCB3aXRoIGFueSB2YWx1ZSBpbgorImRyaXZlcl9kYXRhIiB5b3Ugd2FudCB0byB1c2UsIGFuZCB0aGUgY29ycmVzcG9uZGluZyBmcmVxdWVuY3kgaW4KKyJmcmVxdWVuY3kiLiBBdCB0aGUgZW5kIG9mIHRoZSB0YWJsZSwgeW91IG5lZWQgdG8gYWRkIGEKK2NwdWZyZXFfZnJlcXVlbmN5X3RhYmxlIGVudHJ5IHdpdGggZnJlcXVlbmN5IHNldCB0byBDUFVGUkVRX1RBQkxFX0VORC4gQW5kCitpZiB5b3Ugd2FudCB0byBza2lwIG9uZSBlbnRyeSBpbiB0aGUgdGFibGUsIHNldCB0aGUgZnJlcXVlbmN5IHRvIAorQ1BVRlJFUV9FTlRSWV9JTlZBTElELiBUaGUgZW50cmllcyBkb24ndCBuZWVkIHRvIGJlIGluIGFzY2VuZGluZworb3JkZXIuCisKK0J5IGNhbGxpbmcgY3B1ZnJlcV9mcmVxdWVuY3lfdGFibGVfY3B1aW5mbyhzdHJ1Y3QgY3B1ZnJlcV9wb2xpY3kgKnBvbGljeSwKKwkJCQkJc3RydWN0IGNwdWZyZXFfZnJlcXVlbmN5X3RhYmxlICp0YWJsZSk7Cit0aGUgY3B1aW5mby5taW5fZnJlcSBhbmQgY3B1aW5mby5tYXhfZnJlcSB2YWx1ZXMgYXJlIGRldGVjdGVkLCBhbmQKK3BvbGljeS0+bWluIGFuZCBwb2xpY3ktPm1heCBhcmUgc2V0IHRvIHRoZSBzYW1lIHZhbHVlcy4gVGhpcyBpcworaGVscGZ1bCBmb3IgdGhlIHBlci1DUFUgaW5pdGlhbGl6YXRpb24gc3RhZ2UuCisKK2ludCBjcHVmcmVxX2ZyZXF1ZW5jeV90YWJsZV92ZXJpZnkoc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjcHVmcmVxX2ZyZXF1ZW5jeV90YWJsZSAqdGFibGUpOworYXNzdXJlcyB0aGF0IGF0IGxlYXN0IG9uZSB2YWxpZCBmcmVxdWVuY3kgaXMgd2l0aGluIHBvbGljeS0+bWluIGFuZAorcG9saWN5LT5tYXgsIGFuZCBhbGwgb3RoZXIgY3JpdGVyaWEgYXJlIG1ldC4gVGhpcyBpcyBoZWxwZnVsIGZvciB0aGUKKy0+dmVyaWZ5IGNhbGwuCisKK2ludCBjcHVmcmVxX2ZyZXF1ZW5jeV90YWJsZV90YXJnZXQoc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjcHVmcmVxX2ZyZXF1ZW5jeV90YWJsZSAqdGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB0YXJnZXRfZnJlcSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHJlbGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKmluZGV4KTsKKworaXMgdGhlIGNvcnJlc3BvbmRpbmcgZnJlcXVlbmN5IHRhYmxlIGhlbHBlciBmb3IgdGhlIC0+dGFyZ2V0CitzdGFnZS4gSnVzdCBwYXNzIHRoZSB2YWx1ZXMgdG8gdGhpcyBmdW5jdGlvbiwgYW5kIHRoZSB1bnNpZ25lZCBpbnQKK2luZGV4IHJldHVybnMgdGhlIG51bWJlciBvZiB0aGUgZnJlcXVlbmN5IHRhYmxlIGVudHJ5IHdoaWNoIGNvbnRhaW5zCit0aGUgZnJlcXVlbmN5IHRoZSBDUFUgc2hhbGwgYmUgc2V0IHRvLgorCitUaGUgZm9sbG93aW5nIG1hY3JvcyBjYW4gYmUgdXNlZCBhcyBpdGVyYXRvcnMgb3ZlciBjcHVmcmVxX2ZyZXF1ZW5jeV90YWJsZToKKworY3B1ZnJlcV9mb3JfZWFjaF9lbnRyeShwb3MsIHRhYmxlKSAtIGl0ZXJhdGVzIG92ZXIgYWxsIGVudHJpZXMgb2YgZnJlcXVlbmN5Cit0YWJsZS4KKworY3B1ZnJlcS1mb3JfZWFjaF92YWxpZF9lbnRyeShwb3MsIHRhYmxlKSAtIGl0ZXJhdGVzIG92ZXIgYWxsIGVudHJpZXMsCitleGNsdWRpbmcgQ1BVRlJFUV9FTlRSWV9JTlZBTElEIGZyZXF1ZW5jaWVzLgorVXNlIGFyZ3VtZW50cyAicG9zIiAtIGEgY3B1ZnJlcV9mcmVxdWVuY3lfdGFibGUgKiBhcyBhIGxvb3AgY3Vyc29yIGFuZAorInRhYmxlIiAtIHRoZSBjcHVmcmVxX2ZyZXF1ZW5jeV90YWJsZSAqIHlvdSB3YW50IHRvIGl0ZXJhdGUgb3Zlci4KKworRm9yIGV4YW1wbGU6CisKKwlzdHJ1Y3QgY3B1ZnJlcV9mcmVxdWVuY3lfdGFibGUgKnBvcywgKmRyaXZlcl9mcmVxX3RhYmxlOworCisJY3B1ZnJlcV9mb3JfZWFjaF9lbnRyeShwb3MsIGRyaXZlcl9mcmVxX3RhYmxlKSB7CisJCS8qIERvIHNvbWV0aGluZyB3aXRoIHBvcyAqLworCQlwb3MtPmZyZXF1ZW5jeSA9IC4uLgorCX0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY3B1LWZyZXEvY3B1ZnJlcS1uZm9yY2UyLnR4dCBiL0RvY3VtZW50YXRpb24vY3B1LWZyZXEvY3B1ZnJlcS1uZm9yY2UyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWJjZTEzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9jcHUtZnJlcS9jcHVmcmVxLW5mb3JjZTIudHh0CkBAIC0wLDAgKzEsMTkgQEAKKworVGhlIGNwdWZyZXEtbmZvcmNlMiBkcml2ZXIgY2hhbmdlcyB0aGUgRlNCIG9uIG5WaWRpYSBuRm9yY2UyIHBsYXRmb3Jtcy4KKworVGhpcyB3b3JrcyBiZXR0ZXIgdGhhbiBvbiBvdGhlciBwbGF0Zm9ybXMsIGJlY2F1c2UgdGhlIEZTQiBvZiB0aGUgQ1BVCitjYW4gYmUgY29udHJvbGxlZCBpbmRlcGVuZGVudGx5IGZyb20gdGhlIFBDSS9BR1AgY2xvY2suCisKK1RoZSBtb2R1bGUgaGFzIHR3byBvcHRpb25zOgorCisJZmlkOiAJIG11bHRpcGxpZXIgKiAxMCAoZm9yIGV4YW1wbGUgOC41ID0gODUpCisJbWluX2ZzYjogbWluaW11bSBGU0IKKworSWYgbm90IHNldCwgZmlkIGlzIGNhbGN1bGF0ZWQgZnJvbSB0aGUgY3VycmVudCBDUFUgc3BlZWQgYW5kIHRoZSBGU0IuCittaW5fZnNiIGRlZmF1bHRzIHRvIEZTQiBhdCBib290IHRpbWUgLSA1MCBNSHouCisKK0lNUE9SVEFOVDogVGhlIGF2YWlsYWJsZSByYW5nZSBpcyBsaW1pdGVkIGRvd253YXJkcyEKKyAgICAgICAgICAgQWxzbyB0aGUgbWluaW11bSBhdmFpbGFibGUgRlNCIGNhbiBkaWZmZXIsIGZvciBzeXN0ZW1zIAorICAgICAgICAgICBib290aW5nIHdpdGggMjAwIE1IeiwgMTUwIHNob3VsZCBhbHdheXMgd29yay4KKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2NwdS1mcmVxL2NwdWZyZXEtc3RhdHMudHh0IGIvRG9jdW1lbnRhdGlvbi9jcHUtZnJlcS9jcHVmcmVxLXN0YXRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzY0NzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9jcHUtZnJlcS9jcHVmcmVxLXN0YXRzLnR4dApAQCAtMCwwICsxLDEyOCBAQAorCisgICAgIENQVSBmcmVxdWVuY3kgYW5kIHZvbHRhZ2Ugc2NhbGluZyBzdGF0aXN0aWNzIGluIHRoZSBMaW51eChUTSkga2VybmVsCisKKworICAgICAgICAgICAgIEwgaSBuIHUgeCAgICBjIHAgdSBmIHIgZSBxIC0gcyB0IGEgdCBzICAgZCByIGkgdiBlIHIKKworICAgICAgICAgICAgICAgICAgICAgICAtIGluZm9ybWF0aW9uIGZvciB1c2VycyAtCisKKworICAgICAgICAgICAgIFZlbmthdGVzaCBQYWxsaXBhZGkgPHZlbmthdGVzaC5wYWxsaXBhZGlAaW50ZWwuY29tPgorCitDb250ZW50cworMS4gSW50cm9kdWN0aW9uCisyLiBTdGF0aXN0aWNzIFByb3ZpZGVkICh3aXRoIGV4YW1wbGUpCiszLiBDb25maWd1cmluZyBjcHVmcmVxLXN0YXRzCisKKworMS4gSW50cm9kdWN0aW9uCisKK2NwdWZyZXEtc3RhdHMgaXMgYSBkcml2ZXIgdGhhdCBwcm92aWRlcyBDUFUgZnJlcXVlbmN5IHN0YXRpc3RpY3MgZm9yIGVhY2ggQ1BVLgorVGhlc2Ugc3RhdGlzdGljcyBhcmUgcHJvdmlkZWQgaW4gL3N5c2ZzIGFzIGEgYnVuY2ggb2YgcmVhZF9vbmx5IGludGVyZmFjZXMuIFRoaXMKK2ludGVyZmFjZSAod2hlbiBjb25maWd1cmVkKSB3aWxsIGFwcGVhciBpbiBhIHNlcGFyYXRlIGRpcmVjdG9yeSB1bmRlciBjcHVmcmVxCitpbiAvc3lzZnMgKDxzeXNmcyByb290Pi9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1WC9jcHVmcmVxL3N0YXRzLykgZm9yIGVhY2ggQ1BVLgorVmFyaW91cyBzdGF0aXN0aWNzIHdpbGwgZm9ybSByZWFkX29ubHkgZmlsZXMgdW5kZXIgdGhpcyBkaXJlY3RvcnkuCisKK1RoaXMgZHJpdmVyIGlzIGRlc2lnbmVkIHRvIGJlIGluZGVwZW5kZW50IG9mIGFueSBwYXJ0aWN1bGFyIGNwdWZyZXFfZHJpdmVyCit0aGF0IG1heSBiZSBydW5uaW5nIG9uIHlvdXIgQ1BVLiBTbywgaXQgd2lsbCB3b3JrIHdpdGggYW55IGNwdWZyZXFfZHJpdmVyLgorCisKKzIuIFN0YXRpc3RpY3MgUHJvdmlkZWQgKHdpdGggZXhhbXBsZSkKKworY3B1ZnJlcSBzdGF0cyBwcm92aWRlcyBmb2xsb3dpbmcgc3RhdGlzdGljcyAoZXhwbGFpbmVkIGluIGRldGFpbCBiZWxvdykuCistICB0aW1lX2luX3N0YXRlCistICB0b3RhbF90cmFucworLSAgdHJhbnNfdGFibGUKKworQWxsIHRoZSBzdGF0aXN0aWNzIHdpbGwgYmUgZnJvbSB0aGUgdGltZSB0aGUgc3RhdHMgZHJpdmVyIGhhcyBiZWVuIGluc2VydGVkIAordG8gdGhlIHRpbWUgd2hlbiBhIHJlYWQgb2YgYSBwYXJ0aWN1bGFyIHN0YXRpc3RpYyBpcyBkb25lLiBPYnZpb3VzbHksIHN0YXRzIAorZHJpdmVyIHdpbGwgbm90IGhhdmUgYW55IGluZm9ybWF0aW9uIGFib3V0IHRoZSBmcmVxdWVuY3kgdHJhbnNpdGlvbnMgYmVmb3JlCit0aGUgc3RhdHMgZHJpdmVyIGluc2VydGlvbi4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzxteXN5c3RlbT46L3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1MC9jcHVmcmVxL3N0YXRzICMgbHMgLWwKK3RvdGFsIDAKK2Ryd3hyLXhyLXggIDIgcm9vdCByb290ICAgIDAgTWF5IDE0IDE2OjA2IC4KK2Ryd3hyLXhyLXggIDMgcm9vdCByb290ICAgIDAgTWF5IDE0IDE1OjU4IC4uCistci0tci0tci0tICAxIHJvb3Qgcm9vdCA0MDk2IE1heSAxNCAxNjowNiB0aW1lX2luX3N0YXRlCistci0tci0tci0tICAxIHJvb3Qgcm9vdCA0MDk2IE1heSAxNCAxNjowNiB0b3RhbF90cmFucworLXItLXItLXItLSAgMSByb290IHJvb3QgNDA5NiBNYXkgMTQgMTY6MDYgdHJhbnNfdGFibGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gIHRpbWVfaW5fc3RhdGUKK1RoaXMgZ2l2ZXMgdGhlIGFtb3VudCBvZiB0aW1lIHNwZW50IGluIGVhY2ggb2YgdGhlIGZyZXF1ZW5jaWVzIHN1cHBvcnRlZCBieQordGhpcyBDUFUuIFRoZSBjYXQgb3V0cHV0IHdpbGwgaGF2ZSAiPGZyZXF1ZW5jeT4gPHRpbWU+IiBwYWlyIGluIGVhY2ggbGluZSwgd2hpY2gKK3dpbGwgbWVhbiB0aGlzIENQVSBzcGVudCA8dGltZT4gdXNlcnRpbWUgdW5pdHMgb2YgdGltZSBhdCA8ZnJlcXVlbmN5Pi4gT3V0cHV0Cit3aWxsIGhhdmUgb25lIGxpbmUgZm9yIGVhY2ggb2YgdGhlIHN1cHBvcnRlZCBmcmVxdWVuY2llcy4gdXNlcnRpbWUgdW5pdHMgaGVyZSAKK2lzIDEwbVMgKHNpbWlsYXIgdG8gb3RoZXIgdGltZSBleHBvcnRlZCBpbiAvcHJvYykuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis8bXlzeXN0ZW0+Oi9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTAvY3B1ZnJlcS9zdGF0cyAjIGNhdCB0aW1lX2luX3N0YXRlIAorMzYwMDAwMCAyMDg5CiszNDAwMDAwIDEzNgorMzIwMDAwMCAzNAorMzAwMDAwMCA2NworMjgwMDAwMCAxNzI0ODgKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworLSAgdG90YWxfdHJhbnMKK1RoaXMgZ2l2ZXMgdGhlIHRvdGFsIG51bWJlciBvZiBmcmVxdWVuY3kgdHJhbnNpdGlvbnMgb24gdGhpcyBDUFUuIFRoZSBjYXQgCitvdXRwdXQgd2lsbCBoYXZlIGEgc2luZ2xlIGNvdW50IHdoaWNoIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgZnJlcXVlbmN5Cit0cmFuc2l0aW9ucy4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzxteXN5c3RlbT46L3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1MC9jcHVmcmVxL3N0YXRzICMgY2F0IHRvdGFsX3RyYW5zCisyMAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSAgdHJhbnNfdGFibGUKK1RoaXMgd2lsbCBnaXZlIGEgZmluZSBncmFpbmVkIGluZm9ybWF0aW9uIGFib3V0IGFsbCB0aGUgQ1BVIGZyZXF1ZW5jeQordHJhbnNpdGlvbnMuIFRoZSBjYXQgb3V0cHV0IGhlcmUgaXMgYSB0d28gZGltZW5zaW9uYWwgbWF0cml4LCB3aGVyZSBhbiBlbnRyeQorPGksaj4gKHJvdyBpLCBjb2x1bW4gaikgcmVwcmVzZW50cyB0aGUgY291bnQgb2YgbnVtYmVyIG9mIHRyYW5zaXRpb25zIGZyb20gCitGcmVxX2kgdG8gRnJlcV9qLiBGcmVxX2kgaXMgaW4gZGVzY2VuZGluZyBvcmRlciB3aXRoIGluY3JlYXNpbmcgcm93cyBhbmQgCitGcmVxX2ogaXMgaW4gZGVzY2VuZGluZyBvcmRlciB3aXRoIGluY3JlYXNpbmcgY29sdW1ucy4gVGhlIG91dHB1dCBoZXJlIGFsc28gCitjb250YWlucyB0aGUgYWN0dWFsIGZyZXEgdmFsdWVzIGZvciBlYWNoIHJvdyBhbmQgY29sdW1uIGZvciBiZXR0ZXIgcmVhZGFiaWxpdHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis8bXlzeXN0ZW0+Oi9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTAvY3B1ZnJlcS9zdGF0cyAjIGNhdCB0cmFuc190YWJsZQorICAgRnJvbSAgOiAgICBUbworICAgICAgICAgOiAgIDM2MDAwMDAgICAzNDAwMDAwICAgMzIwMDAwMCAgIDMwMDAwMDAgICAyODAwMDAwIAorICAzNjAwMDAwOiAgICAgICAgIDAgICAgICAgICA1ICAgICAgICAgMCAgICAgICAgIDAgICAgICAgICAwIAorICAzNDAwMDAwOiAgICAgICAgIDQgICAgICAgICAwICAgICAgICAgMiAgICAgICAgIDAgICAgICAgICAwIAorICAzMjAwMDAwOiAgICAgICAgIDAgICAgICAgICAxICAgICAgICAgMCAgICAgICAgIDIgICAgICAgICAwIAorICAzMDAwMDAwOiAgICAgICAgIDAgICAgICAgICAwICAgICAgICAgMSAgICAgICAgIDAgICAgICAgICAzIAorICAyODAwMDAwOiAgICAgICAgIDAgICAgICAgICAwICAgICAgICAgMCAgICAgICAgIDIgICAgICAgICAwIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCiszLiBDb25maWd1cmluZyBjcHVmcmVxLXN0YXRzCisKK1RvIGNvbmZpZ3VyZSBjcHVmcmVxLXN0YXRzIGluIHlvdXIga2VybmVsCitDb25maWcgTWFpbiBNZW51CisJUG93ZXIgbWFuYWdlbWVudCBvcHRpb25zIChBQ1BJLCBBUE0pICAtLS0+CisJCUNQVSBGcmVxdWVuY3kgc2NhbGluZyAgLS0tPgorCQkJWypdIENQVSBGcmVxdWVuY3kgc2NhbGluZworCQkJPCo+ICAgQ1BVIGZyZXF1ZW5jeSB0cmFuc2xhdGlvbiBzdGF0aXN0aWNzIAorCQkJWypdICAgICBDUFUgZnJlcXVlbmN5IHRyYW5zbGF0aW9uIHN0YXRpc3RpY3MgZGV0YWlscworCisKKyJDUFUgRnJlcXVlbmN5IHNjYWxpbmciIChDT05GSUdfQ1BVX0ZSRVEpIHNob3VsZCBiZSBlbmFibGVkIHRvIGNvbmZpZ3VyZQorY3B1ZnJlcS1zdGF0cy4KKworIkNQVSBmcmVxdWVuY3kgdHJhbnNsYXRpb24gc3RhdGlzdGljcyIgKENPTkZJR19DUFVfRlJFUV9TVEFUKSBwcm92aWRlcyB0aGUKK2Jhc2ljIHN0YXRpc3RpY3Mgd2hpY2ggaW5jbHVkZXMgdGltZV9pbl9zdGF0ZSBhbmQgdG90YWxfdHJhbnMuCisKKyJDUFUgZnJlcXVlbmN5IHRyYW5zbGF0aW9uIHN0YXRpc3RpY3MgZGV0YWlscyIgKENPTkZJR19DUFVfRlJFUV9TVEFUX0RFVEFJTFMpCitwcm92aWRlcyBmaW5lIGdyYWluZWQgY3B1ZnJlcSBzdGF0cyBieSB0cmFuc190YWJsZS4gVGhlIHJlYXNvbiBmb3IgaGF2aW5nIGEKK3NlcGFyYXRlIGNvbmZpZyBvcHRpb24gZm9yIHRyYW5zX3RhYmxlIGlzOgorLSB0cmFuc190YWJsZSBnb2VzIGFnYWluc3QgdGhlIHRyYWRpdGlvbmFsIC9zeXNmcyBydWxlIG9mIG9uZSB2YWx1ZSBwZXIKKyAgaW50ZXJmYWNlLiBJdCBwcm92aWRlcyBhIHdob2xlIGJ1bmNoIG9mIHZhbHVlIGluIGEgMiBkaW1lbnNpb25hbCBtYXRyaXgKKyAgZm9ybS4KKworT25jZSB0aGVzZSB0d28gb3B0aW9ucyBhcmUgZW5hYmxlZCBhbmQgeW91ciBDUFUgc3VwcG9ydHMgY3B1ZnJlcXVlbmN5LCB5b3UKK3dpbGwgYmUgYWJsZSB0byBzZWUgdGhlIENQVSBmcmVxdWVuY3kgc3RhdGlzdGljcyBpbiAvc3lzZnMuCisKKworCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY3B1LWZyZXEvZ292ZXJub3JzLnR4dCBiL0RvY3VtZW50YXRpb24vY3B1LWZyZXEvZ292ZXJub3JzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTVhYTc1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9jcHUtZnJlcS9nb3Zlcm5vcnMudHh0CkBAIC0wLDAgKzEsMjY5IEBACisgICAgIENQVSBmcmVxdWVuY3kgYW5kIHZvbHRhZ2Ugc2NhbGluZyBjb2RlIGluIHRoZSBMaW51eChUTSkga2VybmVsCisKKworCQkgICAgICAgICBMIGkgbiB1IHggICAgQyBQIFUgRiByIGUgcQorCisJCSAgICAgIEMgUCBVIEYgciBlIHEgICBHIG8gdiBlIHIgbiBvIHIgcworCisJCSAgIC0gaW5mb3JtYXRpb24gZm9yIHVzZXJzIGFuZCBkZXZlbG9wZXJzIC0KKworCisJCSAgICBEb21pbmlrIEJyb2Rvd3NraSAgPGxpbnV4QGJyb2RvLmRlPgorICAgICAgICAgICAgc29tZSBhZGRpdGlvbnMgYW5kIGNvcnJlY3Rpb25zIGJ5IE5pY28gR29sZGUgPG5pY29AbmdvbGRlLmRlPgorCisKKworICAgQ2xvY2sgc2NhbGluZyBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgY2xvY2sgc3BlZWQgb2YgdGhlIENQVXMgb24gdGhlCisgICAgZmx5LiBUaGlzIGlzIGEgbmljZSBtZXRob2QgdG8gc2F2ZSBiYXR0ZXJ5IHBvd2VyLCBiZWNhdXNlIHRoZSBsb3dlcgorICAgICAgICAgICAgdGhlIGNsb2NrIHNwZWVkLCB0aGUgbGVzcyBwb3dlciB0aGUgQ1BVIGNvbnN1bWVzLgorCisKK0NvbnRlbnRzOgorLS0tLS0tLS0tCisxLiAgIFdoYXQgaXMgYSBDUFVGcmVxIEdvdmVybm9yPworCisyLiAgIEdvdmVybm9ycyBJbiB0aGUgTGludXggS2VybmVsCisyLjEgIFBlcmZvcm1hbmNlCisyLjIgIFBvd2Vyc2F2ZQorMi4zICBVc2Vyc3BhY2UKKzIuNCAgT25kZW1hbmQKKzIuNSAgQ29uc2VydmF0aXZlCisKKzMuICAgVGhlIEdvdmVybm9yIEludGVyZmFjZSBpbiB0aGUgQ1BVZnJlcSBDb3JlCisKKworCisxLiBXaGF0IElzIEEgQ1BVRnJlcSBHb3Zlcm5vcj8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitNb3N0IGNwdWZyZXEgZHJpdmVycyAoZXhjZXB0IHRoZSBpbnRlbF9wc3RhdGUgYW5kIGxvbmdydW4pIG9yIGV2ZW4gbW9zdAorY3B1IGZyZXF1ZW5jeSBzY2FsaW5nIGFsZ29yaXRobXMgb25seSBvZmZlciB0aGUgQ1BVIHRvIGJlIHNldCB0byBvbmUKK2ZyZXF1ZW5jeS4gSW4gb3JkZXIgdG8gb2ZmZXIgZHluYW1pYyBmcmVxdWVuY3kgc2NhbGluZywgdGhlIGNwdWZyZXEKK2NvcmUgbXVzdCBiZSBhYmxlIHRvIHRlbGwgdGhlc2UgZHJpdmVycyBvZiBhICJ0YXJnZXQgZnJlcXVlbmN5Ii4gU28KK3RoZXNlIHNwZWNpZmljIGRyaXZlcnMgd2lsbCBiZSB0cmFuc2Zvcm1lZCB0byBvZmZlciBhICItPnRhcmdldC90YXJnZXRfaW5kZXgiCitjYWxsIGluc3RlYWQgb2YgdGhlIGV4aXN0aW5nICItPnNldHBvbGljeSIgY2FsbC4gRm9yICJsb25ncnVuIiwgYWxsCitzdGF5cyB0aGUgc2FtZSwgdGhvdWdoLgorCitIb3cgdG8gZGVjaWRlIHdoYXQgZnJlcXVlbmN5IHdpdGhpbiB0aGUgQ1BVZnJlcSBwb2xpY3kgc2hvdWxkIGJlIHVzZWQ/CitUaGF0J3MgZG9uZSB1c2luZyAiY3B1ZnJlcSBnb3Zlcm5vcnMiLiBUd28gYXJlIGFscmVhZHkgaW4gdGhpcyBwYXRjaAorLS0gdGhleSdyZSB0aGUgYWxyZWFkeSBleGlzdGluZyAicG93ZXJzYXZlIiBhbmQgInBlcmZvcm1hbmNlIiB3aGljaAorc2V0IHRoZSBmcmVxdWVuY3kgc3RhdGljYWxseSB0byB0aGUgbG93ZXN0IG9yIGhpZ2hlc3QgZnJlcXVlbmN5LAorcmVzcGVjdGl2ZWx5LiBBdCBsZWFzdCB0d28gbW9yZSBzdWNoIGdvdmVybm9ycyB3aWxsIGJlIHJlYWR5IGZvcgorYWRkaXRpb24gaW4gdGhlIG5lYXIgZnV0dXJlLCBidXQgbGlrZWx5IG1hbnkgbW9yZSBhcyB0aGVyZSBhcmUgdmFyaW91cworZGlmZmVyZW50IHRoZW9yaWVzIGFuZCBtb2RlbHMgYWJvdXQgZHluYW1pYyBmcmVxdWVuY3kgc2NhbGluZworYXJvdW5kLiBVc2luZyBzdWNoIGEgZ2VuZXJpYyBpbnRlcmZhY2UgYXMgY3B1ZnJlcSBvZmZlcnMgdG8gc2NhbGluZworZ292ZXJub3JzLCB0aGVzZSBjYW4gYmUgdGVzdGVkIGV4dGVuc2l2ZWx5LCBhbmQgdGhlIGJlc3Qgb25lIGNhbiBiZQorc2VsZWN0ZWQgZm9yIGVhY2ggc3BlY2lmaWMgdXNlLgorCitCYXNpY2FsbHksIGl0J3MgdGhlIGZvbGxvd2luZyBmbG93IGdyYXBoOgorCitDUFUgY2FuIGJlIHNldCB0byBzd2l0Y2ggaW5kZXBlbmRlbnRseQkgfAkgICBDUFUgY2FuIG9ubHkgYmUgc2V0CisgICAgICB3aXRoaW4gc3BlY2lmaWMgImxpbWl0cyIJCSB8ICAgICAgIHRvIHNwZWNpZmljIGZyZXF1ZW5jaWVzCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDUFVmcmVxIHBvbGljeSIKKwkJY29uc2lzdHMgb2YgZnJlcXVlbmN5IGxpbWl0cyAocG9saWN5LT57bWluLG1heH0pCisgIAkJICAgICBhbmQgQ1BVZnJlcSBnb3Zlcm5vciB0byBiZSB1c2VkCisJCQkgLwkJICAgICAgXAorCQkJLwkJICAgICAgIFwKKwkJICAgICAgIC8JCSAgICAgICB0aGUgY3B1ZnJlcSBnb3Zlcm5vciBkZWNpZGVzCisJCSAgICAgIC8JCQkgICAgICAgKGR5bmFtaWNhbGx5IG9yIHN0YXRpY2FsbHkpCisJCSAgICAgLwkJCSAgICAgICB3aGF0IHRhcmdldF9mcmVxIHRvIHNldCB3aXRoaW4KKwkJICAgIC8JCQkgICAgICAgdGhlIGxpbWl0cyBvZiBwb2xpY3ktPnttaW4sbWF4fQorCQkgICAvCQkJICAgICAgICAgICAgXAorCQkgIC8JCQkJICAgICBcCisJVXNpbmcgdGhlIC0+c2V0cG9saWN5IGNhbGwsCQkgVXNpbmcgdGhlIC0+dGFyZ2V0L3RhcmdldF9pbmRleCBjYWxsLAorCSAgICB0aGUgbGltaXRzIGFuZCB0aGUJCQkgIHRoZSBmcmVxdWVuY3kgY2xvc2VzdAorCSAgICAgInBvbGljeSIgaXMgc2V0LgkJCSAgdG8gdGFyZ2V0X2ZyZXEgaXMgc2V0LgorCQkJCQkJICBJdCBpcyBhc3N1cmVkIHRoYXQgaXQKKwkJCQkJCSAgaXMgd2l0aGluIHBvbGljeS0+e21pbixtYXh9CisKKworMi4gR292ZXJub3JzIEluIHRoZSBMaW51eCBLZXJuZWwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzIuMSBQZXJmb3JtYW5jZQorLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBDUFVmcmVxIGdvdmVybm9yICJwZXJmb3JtYW5jZSIgc2V0cyB0aGUgQ1BVIHN0YXRpY2FsbHkgdG8gdGhlCitoaWdoZXN0IGZyZXF1ZW5jeSB3aXRoaW4gdGhlIGJvcmRlcnMgb2Ygc2NhbGluZ19taW5fZnJlcSBhbmQKK3NjYWxpbmdfbWF4X2ZyZXEuCisKKworMi4yIFBvd2Vyc2F2ZQorLS0tLS0tLS0tLS0tLQorCitUaGUgQ1BVZnJlcSBnb3Zlcm5vciAicG93ZXJzYXZlIiBzZXRzIHRoZSBDUFUgc3RhdGljYWxseSB0byB0aGUKK2xvd2VzdCBmcmVxdWVuY3kgd2l0aGluIHRoZSBib3JkZXJzIG9mIHNjYWxpbmdfbWluX2ZyZXEgYW5kCitzY2FsaW5nX21heF9mcmVxLgorCisKKzIuMyBVc2Vyc3BhY2UKKy0tLS0tLS0tLS0tLS0KKworVGhlIENQVWZyZXEgZ292ZXJub3IgInVzZXJzcGFjZSIgYWxsb3dzIHRoZSB1c2VyLCBvciBhbnkgdXNlcnNwYWNlCitwcm9ncmFtIHJ1bm5pbmcgd2l0aCBVSUQgInJvb3QiLCB0byBzZXQgdGhlIENQVSB0byBhIHNwZWNpZmljIGZyZXF1ZW5jeQorYnkgbWFraW5nIGEgc3lzZnMgZmlsZSAic2NhbGluZ19zZXRzcGVlZCIgYXZhaWxhYmxlIGluIHRoZSBDUFUtZGV2aWNlCitkaXJlY3RvcnkuCisKKworMi40IE9uZGVtYW5kCistLS0tLS0tLS0tLS0KKworVGhlIENQVWZyZXEgZ292ZXJub3IgIm9uZGVtYW5kIiBzZXRzIHRoZSBDUFUgZGVwZW5kaW5nIG9uIHRoZQorY3VycmVudCB1c2FnZS4gVG8gZG8gdGhpcyB0aGUgQ1BVIG11c3QgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0bworc3dpdGNoIHRoZSBmcmVxdWVuY3kgdmVyeSBxdWlja2x5LiAgVGhlcmUgYXJlIGEgbnVtYmVyIG9mIHN5c2ZzIGZpbGUKK2FjY2Vzc2libGUgcGFyYW1ldGVyczoKKworc2FtcGxpbmdfcmF0ZTogbWVhc3VyZWQgaW4gdVMgKDEwXi02IHNlY29uZHMpLCB0aGlzIGlzIGhvdyBvZnRlbiB5b3UKK3dhbnQgdGhlIGtlcm5lbCB0byBsb29rIGF0IHRoZSBDUFUgdXNhZ2UgYW5kIHRvIG1ha2UgZGVjaXNpb25zIG9uCit3aGF0IHRvIGRvIGFib3V0IHRoZSBmcmVxdWVuY3kuICBUeXBpY2FsbHkgdGhpcyBpcyBzZXQgdG8gdmFsdWVzIG9mCithcm91bmQgJzEwMDAwJyBvciBtb3JlLiBJdCdzIGRlZmF1bHQgdmFsdWUgaXMgKGNtcC4gd2l0aCB1c2Vycy1ndWlkZS50eHQpOgordHJhbnNpdGlvbl9sYXRlbmN5ICogMTAwMAorQmUgYXdhcmUgdGhhdCB0cmFuc2l0aW9uIGxhdGVuY3kgaXMgaW4gbnMgYW5kIHNhbXBsaW5nX3JhdGUgaXMgaW4gdXMsIHNvIHlvdQorZ2V0IHRoZSBzYW1lIHN5c2ZzIHZhbHVlIGJ5IGRlZmF1bHQuCitTYW1wbGluZyByYXRlIHNob3VsZCBhbHdheXMgZ2V0IGFkanVzdGVkIGNvbnNpZGVyaW5nIHRoZSB0cmFuc2l0aW9uIGxhdGVuY3kKK1RvIHNldCB0aGUgc2FtcGxpbmcgcmF0ZSA3NTAgdGltZXMgYXMgaGlnaCBhcyB0aGUgdHJhbnNpdGlvbiBsYXRlbmN5CitpbiB0aGUgYmFzaCAoYXMgc2FpZCwgMTAwMCBpcyBkZWZhdWx0KSwgZG86CitlY2hvIGAkKCgkKGNhdCBjcHVpbmZvX3RyYW5zaXRpb25fbGF0ZW5jeSkgKiA3NTAgLyAxMDAwKSkgXAorICAgID5vbmRlbWFuZC9zYW1wbGluZ19yYXRlCisKK3NhbXBsaW5nX3JhdGVfbWluOgorVGhlIHNhbXBsaW5nIHJhdGUgaXMgbGltaXRlZCBieSB0aGUgSFcgdHJhbnNpdGlvbiBsYXRlbmN5OgordHJhbnNpdGlvbl9sYXRlbmN5ICogMTAwCitPciBieSBrZXJuZWwgcmVzdHJpY3Rpb25zOgorSWYgQ09ORklHX05PX0haX0NPTU1PTiBpcyBzZXQsIHRoZSBsaW1pdCBpcyAxMG1zIGZpeGVkLgorSWYgQ09ORklHX05PX0haX0NPTU1PTiBpcyBub3Qgc2V0IG9yIG5vaHo9b2ZmIGJvb3QgcGFyYW1ldGVyIGlzIHVzZWQsIHRoZQorbGltaXRzIGRlcGVuZCBvbiB0aGUgQ09ORklHX0haIG9wdGlvbjoKK0haPTEwMDA6IG1pbj0yMDAwMHVzICAoMjBtcykKK0haPTI1MDogIG1pbj04MDAwMHVzICAoODBtcykKK0haPTEwMDogIG1pbj0yMDAwMDB1cyAoMjAwbXMpCitUaGUgaGlnaGVzdCB2YWx1ZSBvZiBrZXJuZWwgYW5kIEhXIGxhdGVuY3kgcmVzdHJpY3Rpb25zIGlzIHNob3duIGFuZAordXNlZCBhcyB0aGUgbWluaW11bSBzYW1wbGluZyByYXRlLgorCit1cF90aHJlc2hvbGQ6IGRlZmluZXMgd2hhdCB0aGUgYXZlcmFnZSBDUFUgdXNhZ2UgYmV0d2VlbiB0aGUgc2FtcGxpbmdzCitvZiAnc2FtcGxpbmdfcmF0ZScgbmVlZHMgdG8gYmUgZm9yIHRoZSBrZXJuZWwgdG8gbWFrZSBhIGRlY2lzaW9uIG9uCit3aGV0aGVyIGl0IHNob3VsZCBpbmNyZWFzZSB0aGUgZnJlcXVlbmN5LiAgRm9yIGV4YW1wbGUgd2hlbiBpdCBpcyBzZXQKK3RvIGl0cyBkZWZhdWx0IHZhbHVlIG9mICc5NScgaXQgbWVhbnMgdGhhdCBiZXR3ZWVuIHRoZSBjaGVja2luZworaW50ZXJ2YWxzIHRoZSBDUFUgbmVlZHMgdG8gYmUgb24gYXZlcmFnZSBtb3JlIHRoYW4gOTUlIGluIHVzZSB0byB0aGVuCitkZWNpZGUgdGhhdCB0aGUgQ1BVIGZyZXF1ZW5jeSBuZWVkcyB0byBiZSBpbmNyZWFzZWQuICAKKworaWdub3JlX25pY2VfbG9hZDogdGhpcyBwYXJhbWV0ZXIgdGFrZXMgYSB2YWx1ZSBvZiAnMCcgb3IgJzEnLiBXaGVuCitzZXQgdG8gJzAnIChpdHMgZGVmYXVsdCksIGFsbCBwcm9jZXNzZXMgYXJlIGNvdW50ZWQgdG93YXJkcyB0aGUKKydjcHUgdXRpbGlzYXRpb24nIHZhbHVlLiAgV2hlbiBzZXQgdG8gJzEnLCB0aGUgcHJvY2Vzc2VzIHRoYXQgYXJlCitydW4gd2l0aCBhICduaWNlJyB2YWx1ZSB3aWxsIG5vdCBjb3VudCAoYW5kIHRodXMgYmUgaWdub3JlZCkgaW4gdGhlCitvdmVyYWxsIHVzYWdlIGNhbGN1bGF0aW9uLiAgVGhpcyBpcyB1c2VmdWwgaWYgeW91IGFyZSBydW5uaW5nIGEgQ1BVCitpbnRlbnNpdmUgY2FsY3VsYXRpb24gb24geW91ciBsYXB0b3AgdGhhdCB5b3UgZG8gbm90IGNhcmUgaG93IGxvbmcgaXQKK3Rha2VzIHRvIGNvbXBsZXRlIGFzIHlvdSBjYW4gJ25pY2UnIGl0IGFuZCBwcmV2ZW50IGl0IGZyb20gdGFraW5nIHBhcnQKK2luIHRoZSBkZWNpZGluZyBwcm9jZXNzIG9mIHdoZXRoZXIgdG8gaW5jcmVhc2UgeW91ciBDUFUgZnJlcXVlbmN5LgorCitzYW1wbGluZ19kb3duX2ZhY3RvcjogdGhpcyBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIHJhdGUgYXQgd2hpY2ggdGhlCitrZXJuZWwgbWFrZXMgYSBkZWNpc2lvbiBvbiB3aGVuIHRvIGRlY3JlYXNlIHRoZSBmcmVxdWVuY3kgd2hpbGUgcnVubmluZworYXQgdG9wIHNwZWVkLiBXaGVuIHNldCB0byAxICh0aGUgZGVmYXVsdCkgZGVjaXNpb25zIHRvIHJlZXZhbHVhdGUgbG9hZAorYXJlIG1hZGUgYXQgdGhlIHNhbWUgaW50ZXJ2YWwgcmVnYXJkbGVzcyBvZiBjdXJyZW50IGNsb2NrIHNwZWVkLiBCdXQKK3doZW4gc2V0IHRvIGdyZWF0ZXIgdGhhbiAxIChlLmcuIDEwMCkgaXQgYWN0cyBhcyBhIG11bHRpcGxpZXIgZm9yIHRoZQorc2NoZWR1bGluZyBpbnRlcnZhbCBmb3IgcmVldmFsdWF0aW5nIGxvYWQgd2hlbiB0aGUgQ1BVIGlzIGF0IGl0cyB0b3AKK3NwZWVkIGR1ZSB0byBoaWdoIGxvYWQuIFRoaXMgaW1wcm92ZXMgcGVyZm9ybWFuY2UgYnkgcmVkdWNpbmcgdGhlIG92ZXJoZWFkCitvZiBsb2FkIGV2YWx1YXRpb24gYW5kIGhlbHBpbmcgdGhlIENQVSBzdGF5IGF0IGl0cyB0b3Agc3BlZWQgd2hlbiB0cnVseQorYnVzeSwgcmF0aGVyIHRoYW4gc2hpZnRpbmcgYmFjayBhbmQgZm9ydGggaW4gc3BlZWQuIFRoaXMgdHVuYWJsZSBoYXMgbm8KK2VmZmVjdCBvbiBiZWhhdmlvciBhdCBsb3dlciBzcGVlZHMvbG93ZXIgQ1BVIGxvYWRzLgorCitwb3dlcnNhdmVfYmlhczogdGhpcyBwYXJhbWV0ZXIgdGFrZXMgYSB2YWx1ZSBiZXR3ZWVuIDAgdG8gMTAwMC4gSXQKK2RlZmluZXMgdGhlIHBlcmNlbnRhZ2UgKHRpbWVzIDEwKSB2YWx1ZSBvZiB0aGUgdGFyZ2V0IGZyZXF1ZW5jeSB0aGF0Cit3aWxsIGJlIHNoYXZlZCBvZmYgb2YgdGhlIHRhcmdldC4gRm9yIGV4YW1wbGUsIHdoZW4gc2V0IHRvIDEwMCAtLSAxMCUsCit3aGVuIG9uZGVtYW5kIGdvdmVybm9yIHdvdWxkIGhhdmUgdGFyZ2V0ZWQgMTAwMCBNSHosIGl0IHdpbGwgdGFyZ2V0CisxMDAwIE1IeiAtICgxMCUgb2YgMTAwMCBNSHopID0gOTAwIE1IeiBpbnN0ZWFkLiBUaGlzIGlzIHNldCB0byAwCisoZGlzYWJsZWQpIGJ5IGRlZmF1bHQuCitXaGVuIEFNRCBmcmVxdWVuY3kgc2Vuc2l0aXZpdHkgcG93ZXJzYXZlIGJpYXMgZHJpdmVyIC0tCitkcml2ZXJzL2NwdWZyZXEvYW1kX2ZyZXFfc2Vuc2l0aXZpdHkuYyBpcyBsb2FkZWQsIHRoaXMgcGFyYW1ldGVyCitkZWZpbmVzIHRoZSB3b3JrbG9hZCBmcmVxdWVuY3kgc2Vuc2l0aXZpdHkgdGhyZXNob2xkIGluIHdoaWNoIGEgbG93ZXIKK2ZyZXF1ZW5jeSBpcyBjaG9zZW4gaW5zdGVhZCBvZiBvbmRlbWFuZCBnb3Zlcm5vcidzIG9yaWdpbmFsIHRhcmdldC4KK1RoZSBmcmVxdWVuY3kgc2Vuc2l0aXZpdHkgaXMgYSBoYXJkd2FyZSByZXBvcnRlZCAob24gQU1EIEZhbWlseSAxNmgKK1Byb2Nlc3NvcnMgYW5kIGFib3ZlKSB2YWx1ZSBiZXR3ZWVuIDAgdG8gMTAwJSB0aGF0IHRlbGxzIHNvZnR3YXJlIGhvdwordGhlIHBlcmZvcm1hbmNlIG9mIHRoZSB3b3JrbG9hZCBydW5uaW5nIG9uIGEgQ1BVIHdpbGwgY2hhbmdlIHdoZW4KK2ZyZXF1ZW5jeSBjaGFuZ2VzLiBBIHdvcmtsb2FkIHdpdGggc2Vuc2l0aXZpdHkgb2YgMCUgKG1lbW9yeS9JTy1ib3VuZCkKK3dpbGwgbm90IHBlcmZvcm0gYW55IGJldHRlciBvbiBoaWdoZXIgY29yZSBmcmVxdWVuY3ksIHdoZXJlYXMgYQord29ya2xvYWQgd2l0aCBzZW5zaXRpdml0eSBvZiAxMDAlIChDUFUtYm91bmQpIHdpbGwgcGVyZm9ybSBiZXR0ZXIKK2hpZ2hlciB0aGUgZnJlcXVlbmN5LiBXaGVuIHRoZSBkcml2ZXIgaXMgbG9hZGVkLCB0aGlzIGlzIHNldCB0byA0MDAKK2J5IGRlZmF1bHQgLS0gZm9yIENQVXMgcnVubmluZyB3b3JrbG9hZHMgd2l0aCBzZW5zaXRpdml0eSB2YWx1ZSBiZWxvdworNDAlLCBhIGxvd2VyIGZyZXF1ZW5jeSBpcyBjaG9zZW4uIFVubG9hZGluZyB0aGUgZHJpdmVyIG9yIHdyaXRpbmcgMAord2lsbCBkaXNhYmxlIHRoaXMgZmVhdHVyZS4KKworCisyLjUgQ29uc2VydmF0aXZlCistLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBDUFVmcmVxIGdvdmVybm9yICJjb25zZXJ2YXRpdmUiLCBtdWNoIGxpa2UgdGhlICJvbmRlbWFuZCIKK2dvdmVybm9yLCBzZXRzIHRoZSBDUFUgZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50IHVzYWdlLiAgSXQgZGlmZmVycyBpbgorYmVoYXZpb3VyIGluIHRoYXQgaXQgZ3JhY2VmdWxseSBpbmNyZWFzZXMgYW5kIGRlY3JlYXNlcyB0aGUgQ1BVIHNwZWVkCityYXRoZXIgdGhhbiBqdW1waW5nIHRvIG1heCBzcGVlZCB0aGUgbW9tZW50IHRoZXJlIGlzIGFueSBsb2FkIG9uIHRoZQorQ1BVLiAgVGhpcyBiZWhhdmlvdXIgbW9yZSBzdWl0YWJsZSBpbiBhIGJhdHRlcnkgcG93ZXJlZCBlbnZpcm9ubWVudC4KK1RoZSBnb3Zlcm5vciBpcyB0d2Vha2VkIGluIHRoZSBzYW1lIG1hbm5lciBhcyB0aGUgIm9uZGVtYW5kIiBnb3Zlcm5vcgordGhyb3VnaCBzeXNmcyB3aXRoIHRoZSBhZGRpdGlvbiBvZjoKKworZnJlcV9zdGVwOiB0aGlzIGRlc2NyaWJlcyB3aGF0IHBlcmNlbnRhZ2Ugc3RlcHMgdGhlIGNwdSBmcmVxIHNob3VsZCBiZQoraW5jcmVhc2VkIGFuZCBkZWNyZWFzZWQgc21vb3RobHkgYnkuICBCeSBkZWZhdWx0IHRoZSBjcHUgZnJlcXVlbmN5IHdpbGwKK2luY3JlYXNlIGluIDUlIGNodW5rcyBvZiB5b3VyIG1heGltdW0gY3B1IGZyZXF1ZW5jeS4gIFlvdSBjYW4gY2hhbmdlIHRoaXMKK3ZhbHVlIHRvIGFueXdoZXJlIGJldHdlZW4gMCBhbmQgMTAwIHdoZXJlICcwJyB3aWxsIGVmZmVjdGl2ZWx5IGxvY2sgeW91cgorQ1BVIGF0IGEgc3BlZWQgcmVnYXJkbGVzcyBvZiBpdHMgbG9hZCB3aGlsc3QgJzEwMCcgd2lsbCwgaW4gdGhlb3J5LCBtYWtlCitpdCBiZWhhdmUgaWRlbnRpY2FsbHkgdG8gdGhlICJvbmRlbWFuZCIgZ292ZXJub3IuCisKK2Rvd25fdGhyZXNob2xkOiBzYW1lIGFzIHRoZSAndXBfdGhyZXNob2xkJyBmb3VuZCBmb3IgdGhlICJvbmRlbWFuZCIKK2dvdmVybm9yIGJ1dCBmb3IgdGhlIG9wcG9zaXRlIGRpcmVjdGlvbi4gIEZvciBleGFtcGxlIHdoZW4gc2V0IHRvIGl0cworZGVmYXVsdCB2YWx1ZSBvZiAnMjAnIGl0IG1lYW5zIHRoYXQgaWYgdGhlIENQVSB1c2FnZSBuZWVkcyB0byBiZSBiZWxvdworMjAlIGJldHdlZW4gc2FtcGxlcyB0byBoYXZlIHRoZSBmcmVxdWVuY3kgZGVjcmVhc2VkLgorCitzYW1wbGluZ19kb3duX2ZhY3Rvcjogc2ltaWxhciBmdW5jdGlvbmFsaXR5IGFzIGluICJvbmRlbWFuZCIgZ292ZXJub3IuCitCdXQgaW4gImNvbnNlcnZhdGl2ZSIsIGl0IGNvbnRyb2xzIHRoZSByYXRlIGF0IHdoaWNoIHRoZSBrZXJuZWwgbWFrZXMKK2EgZGVjaXNpb24gb24gd2hlbiB0byBkZWNyZWFzZSB0aGUgZnJlcXVlbmN5IHdoaWxlIHJ1bm5pbmcgaW4gYW55CitzcGVlZC4gTG9hZCBmb3IgZnJlcXVlbmN5IGluY3JlYXNlIGlzIHN0aWxsIGV2YWx1YXRlZCBldmVyeQorc2FtcGxpbmcgcmF0ZS4KKworMy4gVGhlIEdvdmVybm9yIEludGVyZmFjZSBpbiB0aGUgQ1BVZnJlcSBDb3JlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQSBuZXcgZ292ZXJub3IgbXVzdCByZWdpc3RlciBpdHNlbGYgd2l0aCB0aGUgQ1BVZnJlcSBjb3JlIHVzaW5nCisiY3B1ZnJlcV9yZWdpc3Rlcl9nb3Zlcm5vciIuIFRoZSBzdHJ1Y3QgY3B1ZnJlcV9nb3Zlcm5vciwgd2hpY2ggaGFzIHRvCitiZSBwYXNzZWQgdG8gdGhhdCBmdW5jdGlvbiwgbXVzdCBjb250YWluIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorCitnb3Zlcm5vci0+bmFtZSAtCSAgICBBIHVuaXF1ZSBuYW1lIGZvciB0aGlzIGdvdmVybm9yCitnb3Zlcm5vci0+Z292ZXJub3IgLQkgICAgVGhlIGdvdmVybm9yIGNhbGxiYWNrIGZ1bmN0aW9uCitnb3Zlcm5vci0+b3duZXIJLQkgICAgLlRISVNfTU9EVUxFIGZvciB0aGUgZ292ZXJub3IgbW9kdWxlIChpZiAKKwkJCSAgICBhcHByb3ByaWF0ZSkKKworVGhlIGdvdmVybm9yLT5nb3Zlcm5vciBjYWxsYmFjayBpcyBjYWxsZWQgd2l0aCB0aGUgY3VycmVudCAob3IgdG8tYmUtc2V0KQorY3B1ZnJlcV9wb2xpY3kgc3RydWN0IGZvciB0aGF0IENQVSwgYW5kIGFuIHVuc2lnbmVkIGludCBldmVudC4gVGhlCitmb2xsb3dpbmcgZXZlbnRzIGFyZSBjdXJyZW50bHkgZGVmaW5lZDoKKworQ1BVRlJFUV9HT1ZfU1RBUlQ6ICAgVGhpcyBnb3Zlcm5vciBzaGFsbCBzdGFydCBpdHMgZHV0eSBmb3IgdGhlIENQVQorCQkgICAgIHBvbGljeS0+Y3B1CitDUFVGUkVRX0dPVl9TVE9QOiAgICBUaGlzIGdvdmVybm9yIHNoYWxsIGVuZCBpdHMgZHV0eSBmb3IgdGhlIENQVQorCQkgICAgIHBvbGljeS0+Y3B1CitDUFVGUkVRX0dPVl9MSU1JVFM6ICBUaGUgbGltaXRzIGZvciBDUFUgcG9saWN5LT5jcHUgaGF2ZSBjaGFuZ2VkIHRvCisJCSAgICAgcG9saWN5LT5taW4gYW5kIHBvbGljeS0+bWF4LgorCitJZiB5b3UgbmVlZCBvdGhlciAiZXZlbnRzIiBleHRlcm5hbGx5IG9mIHlvdXIgZHJpdmVyLCBfb25seV8gdXNlIHRoZQorY3B1ZnJlcV9nb3Zlcm5vcl9sKHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGludCBldmVudCkgY2FsbCB0byB0aGUKK0NQVWZyZXEgY29yZSB0byBlbnN1cmUgcHJvcGVyIGxvY2tpbmcuCisKKworVGhlIENQVWZyZXEgZ292ZXJub3IgbWF5IGNhbGwgdGhlIENQVSBwcm9jZXNzb3IgZHJpdmVyIHVzaW5nIG9uZSBvZgordGhlc2UgdHdvIGZ1bmN0aW9uczoKKworaW50IGNwdWZyZXFfZHJpdmVyX3RhcmdldChzdHJ1Y3QgY3B1ZnJlcV9wb2xpY3kgKnBvbGljeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB0YXJnZXRfZnJlcSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCByZWxhdGlvbik7CisKK2ludCBfX2NwdWZyZXFfZHJpdmVyX3RhcmdldChzdHJ1Y3QgY3B1ZnJlcV9wb2xpY3kgKnBvbGljeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHRhcmdldF9mcmVxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcmVsYXRpb24pOworCit0YXJnZXRfZnJlcSBtdXN0IGJlIHdpdGhpbiBwb2xpY3ktPm1pbiBhbmQgcG9saWN5LT5tYXgsIG9mIGNvdXJzZS4KK1doYXQncyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZXNlIHR3byBmdW5jdGlvbnM/IFdoZW4geW91ciBnb3Zlcm5vcgorc3RpbGwgaXMgaW4gYSBkaXJlY3QgY29kZSBwYXRoIG9mIGEgY2FsbCB0byBnb3Zlcm5vci0+Z292ZXJub3IsIHRoZQorcGVyLUNQVSBjcHVmcmVxIGxvY2sgaXMgc3RpbGwgaGVsZCBpbiB0aGUgY3B1ZnJlcSBjb3JlLCBhbmQgdGhlcmUncworbm8gbmVlZCB0byBsb2NrIGl0IGFnYWluIChpbiBmYWN0LCB0aGlzIHdvdWxkIGNhdXNlIGEgZGVhZGxvY2spLiBTbwordXNlIF9fY3B1ZnJlcV9kcml2ZXJfdGFyZ2V0IG9ubHkgaW4gdGhlc2UgY2FzZXMuIEluIGFsbCBvdGhlciBjYXNlcyAKKyhmb3IgZXhhbXBsZSwgd2hlbiB0aGVyZSdzIGEgImRhZW1vbml6ZWQiIGZ1bmN0aW9uIHRoYXQgd2FrZXMgdXAgCitldmVyeSBzZWNvbmQpLCB1c2UgY3B1ZnJlcV9kcml2ZXJfdGFyZ2V0IHRvIGxvY2sgdGhlIGNwdWZyZXEgcGVyLUNQVQorbG9jayBiZWZvcmUgdGhlIGNvbW1hbmQgaXMgcGFzc2VkIHRvIHRoZSBjcHVmcmVxIHByb2Nlc3NvciBkcml2ZXIuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY3B1LWZyZXEvaW5kZXgudHh0IGIvRG9jdW1lbnRhdGlvbi9jcHUtZnJlcS9pbmRleC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGMwMjRhYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vY3B1LWZyZXEvaW5kZXgudHh0CkBAIC0wLDAgKzEsNTQgQEAKKyAgICAgQ1BVIGZyZXF1ZW5jeSBhbmQgdm9sdGFnZSBzY2FsaW5nIGNvZGUgaW4gdGhlIExpbnV4KFRNKSBrZXJuZWwKKworCisJCSAgICAgICAgIEwgaSBuIHUgeCAgICBDIFAgVSBGIHIgZSBxCisKKworCisKKwkJICAgIERvbWluaWsgQnJvZG93c2tpICA8bGludXhAYnJvZG8uZGU+CisKKworCisgICBDbG9jayBzY2FsaW5nIGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBjbG9jayBzcGVlZCBvZiB0aGUgQ1BVcyBvbiB0aGUKKyAgICBmbHkuIFRoaXMgaXMgYSBuaWNlIG1ldGhvZCB0byBzYXZlIGJhdHRlcnkgcG93ZXIsIGJlY2F1c2UgdGhlIGxvd2VyCisgICAgICAgICAgICB0aGUgY2xvY2sgc3BlZWQsIHRoZSBsZXNzIHBvd2VyIHRoZSBDUFUgY29uc3VtZXMuCisKKworCitEb2N1bWVudHMgaW4gdGhpcyBkaXJlY3Rvcnk6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitjb3JlLnR4dAktCUdlbmVyYWwgZGVzY3JpcHRpb24gb2YgdGhlIENQVUZyZXEgY29yZSBhbmQKKwkJCW9mIENQVUZyZXEgbm90aWZpZXJzCisKK2NwdS1kcml2ZXJzLnR4dCAtCUhvdyB0byBpbXBsZW1lbnQgYSBuZXcgY3B1ZnJlcSBwcm9jZXNzb3IgZHJpdmVyCisKK2dvdmVybm9ycy50eHQJLQlXaGF0IGFyZSBjcHVmcmVxIGdvdmVybm9ycyBhbmQgaG93IHRvCisJCQlpbXBsZW1lbnQgdGhlbT8KKworaW5kZXgudHh0CS0JRmlsZSBpbmRleCwgTWFpbGluZyBsaXN0IGFuZCBMaW5rcyAodGhpcyBkb2N1bWVudCkKKwordXNlci1ndWlkZS50eHQJLQlVc2VyIEd1aWRlIHRvIENQVUZyZXEKKworCitNYWlsaW5nIExpc3QKKy0tLS0tLS0tLS0tLQorVGhlcmUgaXMgYSBDUFUgZnJlcXVlbmN5IGNoYW5naW5nIENWUyBjb21taXQgYW5kIGdlbmVyYWwgbGlzdCB3aGVyZQoreW91IGNhbiByZXBvcnQgYnVncywgcHJvYmxlbXMgb3Igc3VibWl0IHBhdGNoZXMuIFRvIHBvc3QgYSBtZXNzYWdlLAorc2VuZCBhbiBlbWFpbCB0byBsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcsIHRvIHN1YnNjcmliZSBnbyB0bworaHR0cDovL3ZnZXIua2VybmVsLm9yZy92Z2VyLWxpc3RzLmh0bWwjbGludXgtcG0gYW5kIGZvbGxvdyB0aGUKK2luc3RydWN0aW9ucyB0aGVyZS4KKworTGlua3MKKy0tLS0tCit0aGUgRlRQIGFyY2hpdmVzOgorKiBmdHA6Ly9mdHAubGludXgub3JnLnVrL3B1Yi9saW51eC9jcHVmcmVxLworCitob3cgdG8gYWNjZXNzIHRoZSBDVlMgcmVwb3NpdG9yeToKKyogaHR0cDovL2N2cy5hcm0ubGludXgub3JnLnVrLworCit0aGUgQ1BVRnJlcSBNYWlsaW5nIGxpc3Q6CisqIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvdmdlci1saXN0cy5odG1sI2NwdWZyZXEKKworQ2xvY2sgYW5kIHZvbHRhZ2Ugc2NhbGluZyBmb3IgdGhlIFNBLTExMDA6CisqIGh0dHA6Ly93d3cubGFydG1ha2VyLm5sL3Byb2plY3RzL3NjYWxpbmcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY3B1LWZyZXEvaW50ZWwtcHN0YXRlLnR4dCBiL0RvY3VtZW50YXRpb24vY3B1LWZyZXEvaW50ZWwtcHN0YXRlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZThkNDAwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9jcHUtZnJlcS9pbnRlbC1wc3RhdGUudHh0CkBAIC0wLDAgKzEsNjUgQEAKK0ludGVsIFAtc3RhdGUgZHJpdmVyCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBwcm92aWRlcyBhbiBpbnRlcmZhY2UgdG8gY29udHJvbCB0aGUgUCBzdGF0ZSBzZWxlY3Rpb24gZm9yCitTYW5keUJyaWRnZSsgSW50ZWwgcHJvY2Vzc29ycy4gIFRoZSBkcml2ZXIgY2FuIG9wZXJhdGUgdHdvIGRpZmZlcmVudAorbW9kZXMgYmFzZWQgb24gdGhlIHByb2Nlc3NvciBtb2RlbCwgbGVnYWN5IG1vZGUgYW5kIEhhcmR3YXJlIFAgc3RhdGUgKEhXUCkKK21vZGUuCisKK0luIGxlZ2FjeSBtb2RlLCB0aGUgSW50ZWwgUC1zdGF0ZSBpbXBsZW1lbnRzIHR3byBpbnRlcm5hbCBnb3Zlcm5vcnMsCitwZXJmb3JtYW5jZSBhbmQgcG93ZXJzYXZlLCB0aGF0IGRpZmZlciBmcm9tIHRoZSBnZW5lcmFsIGNwdWZyZXEgZ292ZXJub3JzIG9mCit0aGUgc2FtZSBuYW1lICh0aGUgZ2VuZXJhbCBjcHVmcmVxIGdvdmVybm9ycyBpbXBsZW1lbnQgdGFyZ2V0KCksIHdoZXJlYXMgdGhlCitpbnRlcm5hbCBJbnRlbCBQLXN0YXRlIGdvdmVybm9ycyBpbXBsZW1lbnQgc2V0cG9saWN5KCkpLiAgVGhlIGludGVybmFsCitwZXJmb3JtYW5jZSBnb3Zlcm5vciBzZXRzIHRoZSBtYXhfcGVyZl9wY3QgYW5kIG1pbl9wZXJmX3BjdCB0byAxMDA7IHRoYXQgaXMsCit0aGUgZ292ZXJub3Igc2VsZWN0cyB0aGUgaGlnaGVzdCBhdmFpbGFibGUgUCBzdGF0ZSB0byBtYXhpbWl6ZSB0aGUgcGVyZm9ybWFuY2UKK29mIHRoZSBjb3JlLiAgVGhlIGludGVybmFsIHBvd2Vyc2F2ZSBnb3Zlcm5vciBzZWxlY3RzIHRoZSBhcHByb3ByaWF0ZSBQIHN0YXRlCitiYXNlZCBvbiB0aGUgY3VycmVudCBsb2FkIG9uIHRoZSBDUFUuCisKK0luIEhXUCBtb2RlIFAgc3RhdGUgc2VsZWN0aW9uIGlzIGltcGxlbWVudGVkIGluIHRoZSBwcm9jZXNzb3IKK2l0c2VsZi4gVGhlIGRyaXZlciBwcm92aWRlcyB0aGUgaW50ZXJmYWNlcyBiZXR3ZWVuIHRoZSBjcHVmcmVxIGNvcmUgYW5kCit0aGUgcHJvY2Vzc29yIHRvIGNvbnRyb2wgUCBzdGF0ZSBzZWxlY3Rpb24gYmFzZWQgb24gdXNlciBwcmVmZXJlbmNlcworYW5kIHJlcG9ydGluZyBmcmVxdWVuY3kgdG8gdGhlIGNwdWZyZXEgY29yZS4gIEluIHRoaXMgbW9kZSB0aGUKK2ludGVybmFsIEludGVsIFAtc3RhdGUgZ292ZXJub3IgY29kZSBpcyBkaXNhYmxlZC4KKworSW4gYWRkaXRpb24gdG8gdGhlIGludGVyZmFjZXMgcHJvdmlkZWQgYnkgdGhlIGNwdWZyZXEgY29yZSBmb3IKK2NvbnRyb2xsaW5nIGZyZXF1ZW5jeSB0aGUgZHJpdmVyIHByb3ZpZGVzIHN5c2ZzIGZpbGVzIGZvcgorY29udHJvbGxpbmcgUCBzdGF0ZSBzZWxlY3Rpb24uIFRoZXNlIGZpbGVzIGhhdmUgYmVlbiBhZGRlZCB0bworL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvaW50ZWxfcHN0YXRlLworCisgICAgICBtYXhfcGVyZl9wY3Q6IGxpbWl0cyB0aGUgbWF4aW11bSBQIHN0YXRlIHRoYXQgd2lsbCBiZSByZXF1ZXN0ZWQgYnkKKyAgICAgIHRoZSBkcml2ZXIgc3RhdGVkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgYXZhaWxhYmxlIHBlcmZvcm1hbmNlLiBUaGUKKyAgICAgIGF2YWlsYWJsZSAoUCBzdGF0ZXMpIHBlcmZvcm1hbmNlIG1heSBiZSByZWR1Y2VkIGJ5IHRoZSBub190dXJibworICAgICAgc2V0dGluZyBkZXNjcmliZWQgYmVsb3cuCisKKyAgICAgIG1pbl9wZXJmX3BjdDogbGltaXRzIHRoZSBtaW5pbXVtIFAgc3RhdGUgdGhhdCB3aWxsIGJlICByZXF1ZXN0ZWQgYnkKKyAgICAgIHRoZSBkcml2ZXIgc3RhdGVkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgbWF4IChub24tdHVyYm8pCisgICAgICBwZXJmb3JtYW5jZSBsZXZlbC4KKworICAgICAgbm9fdHVyYm86IGxpbWl0cyB0aGUgZHJpdmVyIHRvIHNlbGVjdGluZyBQIHN0YXRlcyBiZWxvdyB0aGUgdHVyYm8KKyAgICAgIGZyZXF1ZW5jeSByYW5nZS4KKworICAgICAgdHVyYm9fcGN0OiBkaXNwbGF5cyB0aGUgcGVyY2VudGFnZSBvZiB0aGUgdG90YWwgcGVyZm9ybWFuY2UgdGhhdAorICAgICAgaXMgc3VwcG9ydGVkIGJ5IGhhcmR3YXJlIHRoYXQgaXMgaW4gdGhlIHR1cmJvIHJhbmdlLiAgVGhpcyBudW1iZXIKKyAgICAgIGlzIGluZGVwZW5kZW50IG9mIHdoZXRoZXIgdHVyYm8gaGFzIGJlZW4gZGlzYWJsZWQgb3Igbm90LgorCisgICAgICBudW1fcHN0YXRlczogZGlzcGxheXMgdGhlIG51bWJlciBvZiBwc3RhdGVzIHRoYXQgYXJlIHN1cHBvcnRlZAorICAgICAgYnkgaGFyZHdhcmUuICBUaGlzIG51bWJlciBpcyBpbmRlcGVuZGVudCBvZiB3aGV0aGVyIHR1cmJvIGhhcworICAgICAgYmVlbiBkaXNhYmxlZCBvciBub3QuCisKK0ZvciBjb250ZW1wb3JhcnkgSW50ZWwgcHJvY2Vzc29ycywgdGhlIGZyZXF1ZW5jeSBpcyBjb250cm9sbGVkIGJ5IHRoZQorcHJvY2Vzc29yIGl0c2VsZiBhbmQgdGhlIFAtc3RhdGVzIGV4cG9zZWQgdG8gc29mdHdhcmUgYXJlIHJlbGF0ZWQgdG8KK3BlcmZvcm1hbmNlIGxldmVscy4gIFRoZSBpZGVhIHRoYXQgZnJlcXVlbmN5IGNhbiBiZSBzZXQgdG8gYSBzaW5nbGUKK2ZyZXF1ZW5jeSBpcyBmaWN0aW9uIGZvciBJbnRlbCBDb3JlIHByb2Nlc3NvcnMuIEV2ZW4gaWYgdGhlIHNjYWxpbmcKK2RyaXZlciBzZWxlY3RzIGEgc2luZ2xlIFAgc3RhdGUgdGhlIGFjdHVhbCBmcmVxdWVuY3kgdGhlIHByb2Nlc3Nvcgord2lsbCBydW4gYXQgaXMgc2VsZWN0ZWQgYnkgdGhlIHByb2Nlc3NvciBpdHNlbGYuCisKK0ZvciBsZWdhY3kgbW9kZSBkZWJ1Z2ZzIGZpbGVzIGhhdmUgYWxzbyBiZWVuIGFkZGVkIHRvIGFsbG93IHR1bmluZyBvZgordGhlIGludGVybmFsIGdvdmVybm9yIGFsZ29yeXRobS4gVGhlc2UgZmlsZXMgYXJlIGxvY2F0ZWQgYXQKKy9zeXMva2VybmVsL2RlYnVnL3BzdGF0ZV9zbmIvIFRoZXNlIGZpbGVzIGFyZSBOT1QgcHJlc2VudCBpbiBIV1AgbW9kZS4KKworICAgICAgZGVhZGJhbmQKKyAgICAgIGRfZ2Fpbl9wY3QKKyAgICAgIGlfZ2Fpbl9wY3QKKyAgICAgIHBfZ2Fpbl9wY3QKKyAgICAgIHNhbXBsZV9yYXRlX21zCisgICAgICBzZXRwb2ludApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9jcHUtZnJlcS9wY2MtY3B1ZnJlcS50eHQgYi9Eb2N1bWVudGF0aW9uL2NwdS1mcmVxL3BjYy1jcHVmcmVxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTNjM2IzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9jcHUtZnJlcS9wY2MtY3B1ZnJlcS50eHQKQEAgLTAsMCArMSwyMDcgQEAKKy8qCisgKiAgcGNjLWNwdWZyZXEudHh0IC0gUENDIGludGVyZmFjZSBkb2N1bWVudGF0aW9uCisgKgorICogIENvcHlyaWdodCAoQykgMjAwOSBSZWQgSGF0LCBNYXR0aGV3IEdhcnJldHQgPG1qZ0ByZWRoYXQuY29tPgorICogIENvcHlyaWdodCAoQykgMjAwOSBIZXdsZXR0LVBhY2thcmQgRGV2ZWxvcG1lbnQgQ29tcGFueSwgTC5QLgorICogICAgICBOYWdhbmFuZGEgQ2h1bWJhbGthciA8bmFnYW5hbmRhLmNodW1iYWxrYXJAaHAuY29tPgorICoKKyAqIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyAqICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBHT09EIFRJVExFIG9yIE5PTgorICogIElORlJJTkdFTUVOVC4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworICogIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgKiAgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisgKgorICogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAqLworCisKKwkJCVByb2Nlc3NvciBDbG9ja2luZyBDb250cm9sIERyaXZlcgorCQkJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvbnRlbnRzOgorLS0tLS0tLS0tCisxLglJbnRyb2R1Y3Rpb24KKzEuMQlQQ0MgaW50ZXJmYWNlCisxLjEuMSAgIEdldCBBdmVyYWdlIEZyZXF1ZW5jeQorMS4xLjIJU2V0IERlc2lyZWQgRnJlcXVlbmN5CisxLjIJUGxhdGZvcm1zIGFmZmVjdGVkCisyLglEcml2ZXIgYW5kIC9zeXMgZGV0YWlscworMi4xCXNjYWxpbmdfYXZhaWxhYmxlX2ZyZXF1ZW5jaWVzCisyLjIJY3B1aW5mb190cmFuc2l0aW9uX2xhdGVuY3kKKzIuMwljcHVpbmZvX2N1cl9mcmVxCisyLjQJcmVsYXRlZF9jcHVzCiszLglDYXZlYXRzCisKKzEuIEludHJvZHVjdGlvbjoKKy0tLS0tLS0tLS0tLS0tLS0KK1Byb2Nlc3NvciBDbG9ja2luZyBDb250cm9sIChQQ0MpIGlzIGFuIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBwbGF0Zm9ybQorZmlybXdhcmUgYW5kIE9TUE0uIEl0IGlzIGEgbWVjaGFuaXNtIGZvciBjb29yZGluYXRpbmcgcHJvY2Vzc29yCitwZXJmb3JtYW5jZSAoaWU6IGZyZXF1ZW5jeSkgYmV0d2VlbiB0aGUgcGxhdGZvcm0gZmlybXdhcmUgYW5kIHRoZSBPUy4KKworVGhlIFBDQyBkcml2ZXIgKHBjYy1jcHVmcmVxKSBhbGxvd3MgT1NQTSB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgUENDCitpbnRlcmZhY2UuCisKK09TIHV0aWxpemVzIHRoZSBQQ0MgaW50ZXJmYWNlIHRvIGluZm9ybSBwbGF0Zm9ybSBmaXJtd2FyZSB3aGF0IGZyZXF1ZW5jeSB0aGUKK09TIHdhbnRzIGZvciBhIGxvZ2ljYWwgcHJvY2Vzc29yLiBUaGUgcGxhdGZvcm0gZmlybXdhcmUgYXR0ZW1wdHMgdG8gYWNoaWV2ZQordGhlIHJlcXVlc3RlZCBmcmVxdWVuY3kuIElmIHRoZSByZXF1ZXN0IGZvciB0aGUgdGFyZ2V0IGZyZXF1ZW5jeSBjb3VsZCBub3QgYmUKK3NhdGlzZmllZCBieSBwbGF0Zm9ybSBmaXJtd2FyZSwgdGhlbiBpdCB1c3VhbGx5IG1lYW5zIHRoYXQgcG93ZXIgYnVkZ2V0Citjb25kaXRpb25zIGFyZSBpbiBwbGFjZSwgYW5kICJwb3dlciBjYXBwaW5nIiBpcyB0YWtpbmcgcGxhY2UuCisKKzEuMSBQQ0MgaW50ZXJmYWNlOgorLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgY29tcGxldGUgUENDIHNwZWNpZmljYXRpb24gaXMgYXZhaWxhYmxlIGhlcmU6CitodHRwOi8vd3d3LmFjcGljYS5vcmcvZG93bmxvYWQvUHJvY2Vzc29yLUNsb2NraW5nLUNvbnRyb2wtdjFwMC5wZGYKKworUENDIHJlbGllcyBvbiBhIHNoYXJlZCBtZW1vcnkgcmVnaW9uIHRoYXQgcHJvdmlkZXMgYSBjaGFubmVsIGZvciBjb21tdW5pY2F0aW9uCitiZXR3ZWVuIHRoZSBPUyBhbmQgcGxhdGZvcm0gZmlybXdhcmUuIFBDQyBhbHNvIGltcGxlbWVudHMgYSAiZG9vcmJlbGwiIHRoYXQKK2lzIHVzZWQgYnkgdGhlIE9TIHRvIGluZm9ybSB0aGUgcGxhdGZvcm0gZmlybXdhcmUgdGhhdCBhIGNvbW1hbmQgaGFzIGJlZW4KK3NlbnQuCisKK1RoZSBBQ1BJIFBDQ0goKSBtZXRob2QgaXMgdXNlZCB0byBkaXNjb3ZlciB0aGUgbG9jYXRpb24gb2YgdGhlIFBDQyBzaGFyZWQKK21lbW9yeSByZWdpb24uIFRoZSBzaGFyZWQgbWVtb3J5IHJlZ2lvbiBoZWFkZXIgY29udGFpbnMgdGhlICJjb21tYW5kIiBhbmQKKyJzdGF0dXMiIGludGVyZmFjZS4gUENDSCgpIGFsc28gY29udGFpbnMgZGV0YWlscyBvbiBob3cgdG8gYWNjZXNzIHRoZSBwbGF0Zm9ybQorZG9vcmJlbGwuCisKK1RoZSBmb2xsb3dpbmcgY29tbWFuZHMgYXJlIHN1cHBvcnRlZCBieSB0aGUgUENDIGludGVyZmFjZToKKyogR2V0IEF2ZXJhZ2UgRnJlcXVlbmN5CisqIFNldCBEZXNpcmVkIEZyZXF1ZW5jeQorCitUaGUgQUNQSSBQQ0NQKCkgbWV0aG9kIGlzIGltcGxlbWVudGVkIGZvciBlYWNoIGxvZ2ljYWwgcHJvY2Vzc29yIGFuZCBpcwordXNlZCB0byBkaXNjb3ZlciB0aGUgb2Zmc2V0cyBmb3IgdGhlIGlucHV0IGFuZCBvdXRwdXQgYnVmZmVycyBpbiB0aGUgc2hhcmVkCittZW1vcnkgcmVnaW9uLgorCitXaGVuIFBDQyBtb2RlIGlzIGVuYWJsZWQsIHRoZSBwbGF0Zm9ybSB3aWxsIG5vdCBleHBvc2UgcHJvY2Vzc29yIHBlcmZvcm1hbmNlCitvciB0aHJvdHRsZSBzdGF0ZXMgKF9QU1MsIF9UU1MgYW5kIHJlbGF0ZWQgQUNQSSBvYmplY3RzKSB0byBPU1BNLiBUaGVyZWZvcmUsCit0aGUgbmF0aXZlIFAtc3RhdGUgZHJpdmVyIChzdWNoIGFzIGFjcGktY3B1ZnJlcSBmb3IgSW50ZWwsIHBvd2Vybm93LWs4IGZvcgorQU1EKSB3aWxsIG5vdCBsb2FkLgorCitIb3dldmVyLCBPU1BNIHJlbWFpbnMgaW4gY29udHJvbCBvZiBwb2xpY3kuIFRoZSBnb3Zlcm5vciAoZWc6ICJvbmRlbWFuZCIpCitjb21wdXRlcyB0aGUgcmVxdWlyZWQgcGVyZm9ybWFuY2UgZm9yIGVhY2ggcHJvY2Vzc29yIGJhc2VkIG9uIHNlcnZlciB3b3JrbG9hZC4KK1RoZSBQQ0MgZHJpdmVyIGZpbGxzIGluIHRoZSBjb21tYW5kIGludGVyZmFjZSwgYW5kIHRoZSBpbnB1dCBidWZmZXIgYW5kCitjb21tdW5pY2F0ZXMgdGhlIHJlcXVlc3QgdG8gdGhlIHBsYXRmb3JtIGZpcm13YXJlLiBUaGUgcGxhdGZvcm0gZmlybXdhcmUgaXMKK3Jlc3BvbnNpYmxlIGZvciBkZWxpdmVyaW5nIHRoZSByZXF1ZXN0ZWQgcGVyZm9ybWFuY2UuCisKK0VhY2ggUENDIGNvbW1hbmQgaXMgImdsb2JhbCIgaW4gc2NvcGUgYW5kIGNhbiBhZmZlY3QgYWxsIHRoZSBsb2dpY2FsIENQVXMgaW4KK3RoZSBzeXN0ZW0uIFRoZXJlZm9yZSwgUENDIGlzIGNhcGFibGUgb2YgcGVyZm9ybWluZyAiZ3JvdXAiIHVwZGF0ZXMuIFdpdGggUENDCit0aGUgT1MgaXMgY2FwYWJsZSBvZiBnZXR0aW5nL3NldHRpbmcgdGhlIGZyZXF1ZW5jeSBvZiBhbGwgdGhlIGxvZ2ljYWwgQ1BVcyBpbgordGhlIHN5c3RlbSB3aXRoIGEgc2luZ2xlIGNhbGwgdG8gdGhlIEJJT1MuCisKKzEuMS4xIEdldCBBdmVyYWdlIEZyZXF1ZW5jeToKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgY29tbWFuZCBpcyB1c2VkIGJ5IHRoZSBPU1BNIHRvIHF1ZXJ5IHRoZSBydW5uaW5nIGZyZXF1ZW5jeSBvZiB0aGUKK3Byb2Nlc3NvciBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoaXMgY29tbWFuZCB3YXMgY29tcGxldGVkLiBUaGUgb3V0cHV0IGJ1ZmZlcgoraW5kaWNhdGVzIHRoZSBhdmVyYWdlIHVuaGFsdGVkIGZyZXF1ZW5jeSBvZiB0aGUgbG9naWNhbCBwcm9jZXNzb3IgZXhwcmVzc2VkIGFzCithIHBlcmNlbnRhZ2Ugb2YgdGhlIG5vbWluYWwgKGllOiBtYXhpbXVtKSBDUFUgZnJlcXVlbmN5LiBUaGUgb3V0cHV0IGJ1ZmZlcgorYWxzbyBzaWduaWZpZXMgaWYgdGhlIENQVSBmcmVxdWVuY3kgaXMgbGltaXRlZCBieSBhIHBvd2VyIGJ1ZGdldCBjb25kaXRpb24uCisKKzEuMS4yIFNldCBEZXNpcmVkIEZyZXF1ZW5jeToKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgY29tbWFuZCBpcyB1c2VkIGJ5IHRoZSBPU1BNIHRvIGNvbW11bmljYXRlIHRvIHRoZSBwbGF0Zm9ybSBmaXJtd2FyZSB0aGUKK2Rlc2lyZWQgZnJlcXVlbmN5IGZvciBhIGxvZ2ljYWwgcHJvY2Vzc29yLiBUaGUgb3V0cHV0IGJ1ZmZlciBpcyBjdXJyZW50bHkKK2lnbm9yZWQgYnkgT1NQTS4gVGhlIG5leHQgaW52b2NhdGlvbiBvZiAiR2V0IEF2ZXJhZ2UgRnJlcXVlbmN5IiB3aWxsIGluZm9ybQorT1NQTSBpZiB0aGUgZGVzaXJlZCBmcmVxdWVuY3kgd2FzIGFjaGlldmVkIG9yIG5vdC4KKworMS4yIFBsYXRmb3JtcyBhZmZlY3RlZDoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgUENDIGRyaXZlciB3aWxsIGxvYWQgb24gYW55IHN5c3RlbSB3aGVyZSB0aGUgcGxhdGZvcm0gZmlybXdhcmU6CisqIHN1cHBvcnRzIHRoZSBQQ0MgaW50ZXJmYWNlLCBhbmQgdGhlIGFzc29jaWF0ZWQgUENDSCgpIGFuZCBQQ0NQKCkgbWV0aG9kcworKiBhc3N1bWVzIHJlc3BvbnNpYmlsaXR5IGZvciBtYW5hZ2luZyB0aGUgaGFyZHdhcmUgY2xvY2tpbmcgY29udHJvbHMgaW4gb3JkZXIKK3RvIGRlbGl2ZXIgdGhlIHJlcXVlc3RlZCBwcm9jZXNzb3IgcGVyZm9ybWFuY2UKKworQ3VycmVudGx5LCBjZXJ0YWluIEhQIFByb0xpYW50IHBsYXRmb3JtcyBpbXBsZW1lbnQgdGhlIFBDQyBpbnRlcmZhY2UuIE9uIHRob3NlCitwbGF0Zm9ybXMgUENDIGlzIHRoZSAiZGVmYXVsdCIgY2hvaWNlLgorCitIb3dldmVyLCBpdCBpcyBwb3NzaWJsZSB0byBkaXNhYmxlIHRoaXMgaW50ZXJmYWNlIHZpYSBhIEJJT1Mgc2V0dGluZy4gSW4KK3N1Y2ggYW4gaW5zdGFuY2UsIGFzIGlzIGFsc28gdGhlIGNhc2Ugb24gcGxhdGZvcm1zIHdoZXJlIHRoZSBQQ0MgaW50ZXJmYWNlCitpcyBub3QgaW1wbGVtZW50ZWQsIHRoZSBQQ0MgZHJpdmVyIHdpbGwgZmFpbCB0byBsb2FkIHNpbGVudGx5LgorCisyLiBEcml2ZXIgYW5kIC9zeXMgZGV0YWlsczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorV2hlbiB0aGUgZHJpdmVyIGxvYWRzLCBpdCBtZXJlbHkgcHJpbnRzIHRoZSBsb3dlc3QgYW5kIHRoZSBoaWdoZXN0IENQVQorZnJlcXVlbmNpZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBmaXJtd2FyZS4KKworVGhlIFBDQyBkcml2ZXIgbG9hZHMgd2l0aCBhIG1lc3NhZ2Ugc3VjaCBhczoKK3BjYy1jcHVmcmVxOiAodjEuMDAuMDApIGRyaXZlciBsb2FkZWQgd2l0aCBmcmVxdWVuY3kgbGltaXRzOiAxNjAwIE1IeiwgMjkzMworTUh6CisKK1RoaXMgbWVhbnMgdGhhdCB0aGUgT1BTTSBjYW4gcmVxdWVzdCB0aGUgQ1BVIHRvIHJ1biBhdCBhbnkgZnJlcXVlbmN5IGluCitiZXR3ZWVuIHRoZSBsaW1pdHMgKDE2MDAgTUh6LCBhbmQgMjkzMyBNSHopIHNwZWNpZmllZCBpbiB0aGUgbWVzc2FnZS4KKworSW50ZXJuYWxseSwgdGhlcmUgaXMgbm8gbmVlZCBmb3IgdGhlIGRyaXZlciB0byBjb252ZXJ0IHRoZSAidGFyZ2V0IiBmcmVxdWVuY3kKK3RvIGEgY29ycmVzcG9uZGluZyBQLXN0YXRlLgorCitUaGUgVkVSU0lPTiBudW1iZXIgZm9yIHRoZSBkcml2ZXIgd2lsbCBiZSBvZiB0aGUgZm9ybWF0IHYueHkuYWIuCitlZzogMS4wMC4wMgorICAgLS0tLS0gLS0KKyAgICB8ICAgIHwKKyAgICB8ICAgIC0tIHRoaXMgd2lsbCBpbmNyZWFzZSB3aXRoIGJ1ZyBmaXhlcy9lbmhhbmNlbWVudHMgdG8gdGhlIGRyaXZlcgorICAgIHwtLSB0aGlzIGlzIHRoZSB2ZXJzaW9uIG9mIHRoZSBQQ0Mgc3BlY2lmaWNhdGlvbiB0aGUgZHJpdmVyIGFkaGVyZXMgdG8KKworCitUaGUgZm9sbG93aW5nIGlzIGEgYnJpZWYgZGlzY3Vzc2lvbiBvbiBzb21lIG9mIHRoZSBmaWVsZHMgZXhwb3J0ZWQgdmlhIHRoZQorL3N5cyBmaWxlc3lzdGVtIGFuZCBob3cgdGhlaXIgdmFsdWVzIGFyZSBhZmZlY3RlZCBieSB0aGUgUENDIGRyaXZlcjoKKworMi4xIHNjYWxpbmdfYXZhaWxhYmxlX2ZyZXF1ZW5jaWVzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorc2NhbGluZ19hdmFpbGFibGVfZnJlcXVlbmNpZXMgaXMgbm90IGNyZWF0ZWQgaW4gL3N5cy4gTm8gaW50ZXJtZWRpYXRlCitmcmVxdWVuY2llcyBuZWVkIHRvIGJlIGxpc3RlZCBiZWNhdXNlIHRoZSBCSU9TIHdpbGwgdHJ5IHRvIGFjaGlldmUgYW55CitmcmVxdWVuY3ksIHdpdGhpbiBsaW1pdHMsIHJlcXVlc3RlZCBieSB0aGUgZ292ZXJub3IuIEEgZnJlcXVlbmN5IGRvZXMgbm90IGhhdmUKK3RvIGJlIHN0cmljdGx5IGFzc29jaWF0ZWQgd2l0aCBhIFAtc3RhdGUuCisKKzIuMiBjcHVpbmZvX3RyYW5zaXRpb25fbGF0ZW5jeToKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBjcHVpbmZvX3RyYW5zaXRpb25fbGF0ZW5jeSBmaWVsZCBpcyAwLiBUaGUgUENDIHNwZWNpZmljYXRpb24gZG9lcworbm90IGluY2x1ZGUgYSBmaWVsZCB0byBleHBvc2UgdGhpcyB2YWx1ZSBjdXJyZW50bHkuCisKKzIuMyBjcHVpbmZvX2N1cl9mcmVxOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBKSBPZnRlbiBjcHVpbmZvX2N1cl9mcmVxIHdpbGwgc2hvdyBhIHZhbHVlIGRpZmZlcmVudCB0aGFuIHdoYXQgaXMgZGVjbGFyZWQKK2luIHRoZSBzY2FsaW5nX2F2YWlsYWJsZV9mcmVxdWVuY2llcyBvciBzY2FsaW5nX2N1cl9mcmVxLCBvciBzY2FsaW5nX21heF9mcmVxLgorVGhpcyBpcyBkdWUgdG8gInR1cmJvIGJvb3N0IiBhdmFpbGFibGUgb24gcmVjZW50IEludGVsIHByb2Nlc3NvcnMuIElmIGNlcnRhaW4KK2NvbmRpdGlvbnMgYXJlIG1ldCB0aGUgQklPUyBjYW4gYWNoaWV2ZSBhIHNsaWdodGx5IGhpZ2hlciBzcGVlZCB0aGFuIHJlcXVlc3RlZAorYnkgT1NQTS4gQW4gZXhhbXBsZToKKworc2NhbGluZ19jdXJfZnJlcQk6IDI5MzMwMDAKK2NwdWluZm9fY3VyX2ZyZXEJOiAzMTk2MDAwCisKK0IpIFRoZXJlIGlzIGEgcm91bmQtb2ZmIGVycm9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3B1aW5mb19jdXJfZnJlcSB2YWx1ZS4KK1NpbmNlIHRoZSBkcml2ZXIgb2J0YWlucyB0aGUgY3VycmVudCBmcmVxdWVuY3kgYXMgYSAicGVyY2VudGFnZSIgKCUpIG9mIHRoZQorbm9taW5hbCBmcmVxdWVuY3kgZnJvbSB0aGUgQklPUywgc29tZXRpbWVzLCB0aGUgdmFsdWVzIGRpc3BsYXllZCBieQorc2NhbGluZ19jdXJfZnJlcSBhbmQgY3B1aW5mb19jdXJfZnJlcSBtYXkgbm90IG1hdGNoLiBBbiBleGFtcGxlOgorCitzY2FsaW5nX2N1cl9mcmVxCTogMTYwMDAwMAorY3B1aW5mb19jdXJfZnJlcQk6IDE1ODMwMDAKKworSW4gdGhpcyBleGFtcGxlLCB0aGUgbm9taW5hbCBmcmVxdWVuY3kgaXMgMjkzMyBNSHouIFRoZSBkcml2ZXIgb2J0YWlucyB0aGUKK2N1cnJlbnQgZnJlcXVlbmN5LCBjcHVpbmZvX2N1cl9mcmVxLCBhcyA1NCUgb2YgdGhlIG5vbWluYWwgZnJlcXVlbmN5OgorCisJNTQlIG9mIDI5MzMgTUh6ID0gMTU4MyBNSHoKKworTm9taW5hbCBmcmVxdWVuY3kgaXMgdGhlIG1heGltdW0gZnJlcXVlbmN5IG9mIHRoZSBwcm9jZXNzb3IsIGFuZCBpdCB1c3VhbGx5Citjb3JyZXNwb25kcyB0byB0aGUgZnJlcXVlbmN5IG9mIHRoZSBQMCBQLXN0YXRlLgorCisyLjQgcmVsYXRlZF9jcHVzOgorLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSByZWxhdGVkX2NwdXMgZmllbGQgaXMgaWRlbnRpY2FsIHRvIGFmZmVjdGVkX2NwdXMuCisKK2FmZmVjdGVkX2NwdXMJOiA0CityZWxhdGVkX2NwdXMJOiA0CisKK0N1cnJlbnRseSwgdGhlIFBDQyBkcml2ZXIgZG9lcyBub3QgZXZhbHVhdGUgX1BTRC4gVGhlIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQKK1BDQyBkbyBub3QgaW1wbGVtZW50IFNXX0FMTC4gU28gT1NQTSBkb2Vzbid0IG5lZWQgdG8gcGVyZm9ybSBhbnkgY29vcmRpbmF0aW9uCit0byBlbnN1cmUgdGhhdCB0aGUgc2FtZSBmcmVxdWVuY3kgaXMgcmVxdWVzdGVkIG9mIGFsbCBkZXBlbmRlbnQgQ1BVcy4KKworMy4gQ2F2ZWF0czoKKy0tLS0tLS0tLS0tCitUaGUgImNwdWZyZXFfc3RhdHMiIG1vZHVsZSBpbiBpdHMgcHJlc2VudCBmb3JtIGNhbm5vdCBiZSBsb2FkZWQgYW5kCitleHBlY3RlZCB0byB3b3JrIHdpdGggdGhlIFBDQyBkcml2ZXIuIFNpbmNlIHRoZSAiY3B1ZnJlcV9zdGF0cyIgbW9kdWxlCitwcm92aWRlcyBpbmZvcm1hdGlvbiB3cnQgZWFjaCBQLXN0YXRlLCBpdCBpcyBub3QgYXBwbGljYWJsZSB0byB0aGUgUENDIGRyaXZlci4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY3B1LWZyZXEvdXNlci1ndWlkZS50eHQgYi9Eb2N1bWVudGF0aW9uL2NwdS1mcmVxL3VzZXItZ3VpZGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwOWU5N2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2NwdS1mcmVxL3VzZXItZ3VpZGUudHh0CkBAIC0wLDAgKzEsMjIyIEBACisgICAgIENQVSBmcmVxdWVuY3kgYW5kIHZvbHRhZ2Ugc2NhbGluZyBjb2RlIGluIHRoZSBMaW51eChUTSkga2VybmVsCisKKworCQkgICAgICAgICBMIGkgbiB1IHggICAgQyBQIFUgRiByIGUgcQorCisJCQkgICAgIFUgUyBFIFIgICBHIFUgSSBEIEUKKworCisJCSAgICBEb21pbmlrIEJyb2Rvd3NraSAgPGxpbnV4QGJyb2RvLmRlPgorCisKKworICAgQ2xvY2sgc2NhbGluZyBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgY2xvY2sgc3BlZWQgb2YgdGhlIENQVXMgb24gdGhlCisgICAgZmx5LiBUaGlzIGlzIGEgbmljZSBtZXRob2QgdG8gc2F2ZSBiYXR0ZXJ5IHBvd2VyLCBiZWNhdXNlIHRoZSBsb3dlcgorICAgICAgICAgICAgdGhlIGNsb2NrIHNwZWVkLCB0aGUgbGVzcyBwb3dlciB0aGUgQ1BVIGNvbnN1bWVzLgorCisKK0NvbnRlbnRzOgorLS0tLS0tLS0tCisxLiBTdXBwb3J0ZWQgQXJjaGl0ZWN0dXJlcyBhbmQgUHJvY2Vzc29ycworMS4xIEFSTQorMS4yIHg4NgorMS4zIHNwYXJjNjQKKzEuNCBwcGMKKzEuNSBTdXBlckgKKzEuNiBCbGFja2ZpbgorCisyLiAiUG9saWN5IiAvICJHb3Zlcm5vciI/CisyLjEgUG9saWN5CisyLjIgR292ZXJub3IKKworMy4gSG93IHRvIGNoYW5nZSB0aGUgQ1BVIGNwdWZyZXEgcG9saWN5IGFuZC9vciBzcGVlZAorMy4xIFByZWZlcnJlZCBpbnRlcmZhY2U6IHN5c2ZzCisKKworCisxLiBTdXBwb3J0ZWQgQXJjaGl0ZWN0dXJlcyBhbmQgUHJvY2Vzc29ycworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworMS4xIEFSTQorLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIEFSTSBwcm9jZXNzb3JzIGFyZSBzdXBwb3J0ZWQgYnkgY3B1ZnJlcToKKworQVJNIEludGVncmF0b3IKK0FSTS1TQTExMDAKK0FSTS1TQTExMTAKK0ludGVsIFBYQQorCisKKzEuMiB4ODYKKy0tLS0tLS0KKworVGhlIGZvbGxvd2luZyBwcm9jZXNzb3JzIGZvciB0aGUgeDg2IGFyY2hpdGVjdHVyZSBhcmUgc3VwcG9ydGVkIGJ5IGNwdWZyZXE6CisKK0FNRCBFbGFuIC0gU0M0MDAsIFNDNDEwCitBTUQgbW9iaWxlIEs2LTIrCitBTUQgbW9iaWxlIEs2LTMrCitBTUQgbW9iaWxlIER1cm9uCitBTUQgbW9iaWxlIEF0aGxvbgorQU1EIE9wdGVyb24KK0FNRCBBdGhsb24gNjQKK0N5cml4IE1lZGlhIEdYbQorSW50ZWwgbW9iaWxlIFBJSUkgYW5kIEludGVsIG1vYmlsZSBQSUlJLU0gb24gY2VydGFpbiBjaGlwc2V0cworSW50ZWwgUGVudGl1bSA0LCBJbnRlbCBYZW9uCitJbnRlbCBQZW50aXVtIE0gKENlbnRyaW5vKQorTmF0aW9uYWwgU2VtaWNvbmR1Y3RvcnMgR2VvZGUgR1gKK1RyYW5zbWV0YSBDcnVzb2UKK1RyYW5zbWV0YSBFZmZpY2VvbgorVklBIEN5cml4IDMgLyBDMwordmFyaW91cyBwcm9jZXNzb3JzIG9uIHNvbWUgQUNQSSAyLjAtY29tcGF0aWJsZSBzeXN0ZW1zIFsqXQorCitbKl0gT25seSBpZiAiQUNQSSBQcm9jZXNzb3IgUGVyZm9ybWFuY2UgU3RhdGVzIiBhcmUgYXZhaWxhYmxlCit0byB0aGUgQUNQSTwtPkJJT1MgaW50ZXJmYWNlLgorCisKKzEuMyBzcGFyYzY0CistLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIHByb2Nlc3NvcnMgZm9yIHRoZSBzcGFyYzY0IGFyY2hpdGVjdHVyZSBhcmUgc3VwcG9ydGVkIGJ5CitjcHVmcmVxOgorCitVbHRyYVNQQVJDLUlJSQorCisKKzEuNCBwcGMKKy0tLS0tLS0KKworU2V2ZXJhbCAiUG93ZXJCb29rIiBhbmQgImlCb29rMiIgbm90ZWJvb2tzIGFyZSBzdXBwb3J0ZWQuCisKKworMS41IFN1cGVySAorLS0tLS0tLS0tLQorCitBbGwgU3VwZXJIIHByb2Nlc3NvcnMgc3VwcG9ydGluZyByYXRlIHJvdW5kaW5nIHRocm91Z2ggdGhlIGNsb2NrCitmcmFtZXdvcmsgYXJlIHN1cHBvcnRlZCBieSBjcHVmcmVxLgorCisxLjYgQmxhY2tmaW4KKy0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIEJsYWNrZmluIHByb2Nlc3NvcnMgYXJlIHN1cHBvcnRlZCBieSBjcHVmcmVxOgorCitCRjUyMiwgQkY1MjMsIEJGNTI0LCBCRjUyNSwgQkY1MjYsIEJGNTI3LCBSZXYgMC4xIG9yIGhpZ2hlcgorQkY1MzEsIEJGNTMyLCBCRjUzMywgUmV2IDAuMyBvciBoaWdoZXIKK0JGNTM0LCBCRjUzNiwgQkY1MzcsIFJldiAwLjIgb3IgaGlnaGVyCitCRjU2MSwgUmV2IDAuMyBvciBoaWdoZXIKK0JGNTQyLCBCRjU0NCwgQkY1NDcsIEJGNTQ4LCBCRjU0OSwgUmV2IDAuMSBvciBoaWdoZXIKKworCisyLiAiUG9saWN5IiAvICJHb3Zlcm5vciIgPworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU29tZSBDUFUgZnJlcXVlbmN5IHNjYWxpbmctY2FwYWJsZSBwcm9jZXNzb3Igc3dpdGNoIGJldHdlZW4gdmFyaW91cworZnJlcXVlbmNpZXMgYW5kIG9wZXJhdGluZyB2b2x0YWdlcyAib24gdGhlIGZseSIgd2l0aG91dCBhbnkga2VybmVsIG9yCit1c2VyIGludm9sdmVtZW50LiBUaGlzIGd1YXJhbnRlZXMgdmVyeSBmYXN0IHN3aXRjaGluZyB0byBhIGZyZXF1ZW5jeQord2hpY2ggaXMgaGlnaCBlbm91Z2ggdG8gc2VydmUgdGhlIHVzZXIncyBuZWVkcywgYnV0IGxvdyBlbm91Z2ggdG8gc2F2ZQorcG93ZXIuCisKKworMi4xIFBvbGljeQorLS0tLS0tLS0tLQorCitPbiB0aGVzZSBzeXN0ZW1zLCBhbGwgeW91IGNhbiBkbyBpcyBzZWxlY3QgdGhlIGxvd2VyIGFuZCB1cHBlcgorZnJlcXVlbmN5IGxpbWl0IGFzIHdlbGwgYXMgd2hldGhlciB5b3Ugd2FudCBtb3JlIGFnZ3Jlc3NpdmUKK3Bvd2VyLXNhdmluZyBvciBtb3JlIGluc3RhbnRseSBhdmFpbGFibGUgcHJvY2Vzc2luZyBwb3dlci4KKworCisyLjIgR292ZXJub3IKKy0tLS0tLS0tLS0tLQorCitPbiBhbGwgb3RoZXIgY3B1ZnJlcSBpbXBsZW1lbnRhdGlvbnMsIHRoZXNlIGJvdW5kYXJpZXMgc3RpbGwgbmVlZCB0bworYmUgc2V0LiBUaGVuLCBhICJnb3Zlcm5vciIgbXVzdCBiZSBzZWxlY3RlZC4gU3VjaCBhICJnb3Zlcm5vciIgZGVjaWRlcword2hhdCBzcGVlZCB0aGUgcHJvY2Vzc29yIHNoYWxsIHJ1biB3aXRoaW4gdGhlIGJvdW5kYXJpZXMuIE9uZSBzdWNoCisiZ292ZXJub3IiIGlzIHRoZSAidXNlcnNwYWNlIiBnb3Zlcm5vci4gVGhpcyBvbmUgYWxsb3dzIHRoZSB1c2VyIC0gb3IKK2EgeWV0LXRvLWltcGxlbWVudCB1c2Vyc3BhY2UgcHJvZ3JhbSAtIHRvIGRlY2lkZSB3aGF0IHNwZWNpZmljIHNwZWVkCit0aGUgcHJvY2Vzc29yIHNoYWxsIHJ1biBhdC4KKworCiszLiBIb3cgdG8gY2hhbmdlIHRoZSBDUFUgY3B1ZnJlcSBwb2xpY3kgYW5kL29yIHNwZWVkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzMuMSBQcmVmZXJyZWQgSW50ZXJmYWNlOiBzeXNmcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBwcmVmZXJyZWQgaW50ZXJmYWNlIGlzIGxvY2F0ZWQgaW4gdGhlIHN5c2ZzIGZpbGVzeXN0ZW0uIElmIHlvdQorbW91bnRlZCBpdCBhdCAvc3lzLCB0aGUgY3B1ZnJlcSBpbnRlcmZhY2UgaXMgbG9jYXRlZCBpbiBhIHN1YmRpcmVjdG9yeQorImNwdWZyZXEiIHdpdGhpbiB0aGUgY3B1LWRldmljZSBkaXJlY3RvcnkKKyhlLmcuIC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTAvY3B1ZnJlcS8gZm9yIHRoZSBmaXJzdCBDUFUpLgorCitjcHVpbmZvX21pbl9mcmVxIDoJCXRoaXMgZmlsZSBzaG93cyB0aGUgbWluaW11bSBvcGVyYXRpbmcKKwkJCQlmcmVxdWVuY3kgdGhlIHByb2Nlc3NvciBjYW4gcnVuIGF0KGluIGtIeikgCitjcHVpbmZvX21heF9mcmVxIDoJCXRoaXMgZmlsZSBzaG93cyB0aGUgbWF4aW11bSBvcGVyYXRpbmcKKwkJCQlmcmVxdWVuY3kgdGhlIHByb2Nlc3NvciBjYW4gcnVuIGF0KGluIGtIeikgCitjcHVpbmZvX3RyYW5zaXRpb25fbGF0ZW5jeQlUaGUgdGltZSBpdCB0YWtlcyBvbiB0aGlzIENQVSB0bworCQkJCXN3aXRjaCBiZXR3ZWVuIHR3byBmcmVxdWVuY2llcyBpbiBuYW5vCisJCQkJc2Vjb25kcy4gSWYgdW5rbm93biBvciBrbm93biB0byBiZQorCQkJCXRoYXQgaGlnaCB0aGF0IHRoZSBkcml2ZXIgZG9lcyBub3QKKwkJCQl3b3JrIHdpdGggdGhlIG9uZGVtYW5kIGdvdmVybm9yLCAtMQorCQkJCShDUFVGUkVRX0VURVJOQUwpIHdpbGwgYmUgcmV0dXJuZWQuCisJCQkJVXNpbmcgdGhpcyBpbmZvcm1hdGlvbiBjYW4gYmUgdXNlZnVsCisJCQkJdG8gY2hvb3NlIGFuIGFwcHJvcHJpYXRlIHBvbGxpbmcKKwkJCQlmcmVxdWVuY3kgZm9yIGEga2VybmVsIGdvdmVybm9yIG9yCisJCQkJdXNlcnNwYWNlIGRhZW1vbi4gTWFrZSBzdXJlIHRvIG5vdAorCQkJCXN3aXRjaCB0aGUgZnJlcXVlbmN5IHRvbyBvZnRlbgorCQkJCXJlc3VsdGluZyBpbiBwZXJmb3JtYW5jZSBsb3NzLgorc2NhbGluZ19kcml2ZXIgOgkJdGhpcyBmaWxlIHNob3dzIHdoYXQgY3B1ZnJlcSBkcml2ZXIgaXMKKwkJCQl1c2VkIHRvIHNldCB0aGUgZnJlcXVlbmN5IG9uIHRoaXMgQ1BVCisKK3NjYWxpbmdfYXZhaWxhYmxlX2dvdmVybm9ycyA6CXRoaXMgZmlsZSBzaG93cyB0aGUgQ1BVZnJlcSBnb3Zlcm5vcnMKKwkJCQlhdmFpbGFibGUgaW4gdGhpcyBrZXJuZWwuIFlvdSBjYW4gc2VlIHRoZQorCQkJCWN1cnJlbnRseSBhY3RpdmF0ZWQgZ292ZXJub3IgaW4KKworc2NhbGluZ19nb3Zlcm5vciwJCWFuZCBieSAiZWNob2luZyIgdGhlIG5hbWUgb2YgYW5vdGhlcgorCQkJCWdvdmVybm9yIHlvdSBjYW4gY2hhbmdlIGl0LiBQbGVhc2Ugbm90ZQorCQkJCXRoYXQgc29tZSBnb3Zlcm5vcnMgd29uJ3QgbG9hZCAtIHRoZXkgb25seQorCQkJCXdvcmsgb24gc29tZSBzcGVjaWZpYyBhcmNoaXRlY3R1cmVzIG9yCisJCQkJcHJvY2Vzc29ycy4KKworY3B1aW5mb19jdXJfZnJlcSA6CQlDdXJyZW50IGZyZXF1ZW5jeSBvZiB0aGUgQ1BVIGFzIG9idGFpbmVkIGZyb20KKwkJCQl0aGUgaGFyZHdhcmUsIGluIEtIei4gVGhpcyBpcyB0aGUgZnJlcXVlbmN5CisJCQkJdGhlIENQVSBhY3R1YWxseSBydW5zIGF0LgorCitzY2FsaW5nX2F2YWlsYWJsZV9mcmVxdWVuY2llcyA6IExpc3Qgb2YgYXZhaWxhYmxlIGZyZXF1ZW5jaWVzLCBpbiBLSHouCisKK3NjYWxpbmdfbWluX2ZyZXEgYW5kCitzY2FsaW5nX21heF9mcmVxCQlzaG93IHRoZSBjdXJyZW50ICJwb2xpY3kgbGltaXRzIiAoaW4KKwkJCQlrSHopLiBCeSBlY2hvaW5nIG5ldyB2YWx1ZXMgaW50byB0aGVzZQorCQkJCWZpbGVzLCB5b3UgY2FuIGNoYW5nZSB0aGVzZSBsaW1pdHMuCisJCQkJTk9URTogd2hlbiBzZXR0aW5nIGEgcG9saWN5IHlvdSBuZWVkIHRvCisJCQkJZmlyc3Qgc2V0IHNjYWxpbmdfbWF4X2ZyZXEsIHRoZW4KKwkJCQlzY2FsaW5nX21pbl9mcmVxLgorCithZmZlY3RlZF9jcHVzIDoJCQlMaXN0IG9mIE9ubGluZSBDUFVzIHRoYXQgcmVxdWlyZSBzb2Z0d2FyZQorCQkJCWNvb3JkaW5hdGlvbiBvZiBmcmVxdWVuY3kuCisKK3JlbGF0ZWRfY3B1cyA6CQkJTGlzdCBvZiBPbmxpbmUgKyBPZmZsaW5lIENQVXMgdGhhdCBuZWVkIHNvZnR3YXJlCisJCQkJY29vcmRpbmF0aW9uIG9mIGZyZXF1ZW5jeS4KKworc2NhbGluZ19jdXJfZnJlcSA6CQlDdXJyZW50IGZyZXF1ZW5jeSBvZiB0aGUgQ1BVIGFzIGRldGVybWluZWQgYnkKKwkJCQl0aGUgZ292ZXJub3IgYW5kIGNwdWZyZXEgY29yZSwgaW4gS0h6LiBUaGlzIGlzCisJCQkJdGhlIGZyZXF1ZW5jeSB0aGUga2VybmVsIHRoaW5rcyB0aGUgQ1BVIHJ1bnMKKwkJCQlhdC4KKworYmlvc19saW1pdCA6CQkJSWYgdGhlIEJJT1MgdGVsbHMgdGhlIE9TIHRvIGxpbWl0IGEgQ1BVIHRvCisJCQkJbG93ZXIgZnJlcXVlbmNpZXMsIHRoZSB1c2VyIGNhbiByZWFkIG91dCB0aGUKKwkJCQltYXhpbXVtIGF2YWlsYWJsZSBmcmVxdWVuY3kgZnJvbSB0aGlzIGZpbGUuCisJCQkJVGhpcyB0eXBpY2FsbHkgY2FuIGhhcHBlbiB0aHJvdWdoIChvZnRlbiBub3QKKwkJCQlpbnRlbmRlZCkgQklPUyBzZXR0aW5ncywgcmVzdHJpY3Rpb25zCisJCQkJdHJpZ2dlcmVkIHRocm91Z2ggYSBzZXJ2aWNlIHByb2Nlc3NvciBvciBvdGhlcgorCQkJCUJJT1MvSFcgYmFzZWQgaW1wbGVtZW50YXRpb25zLgorCQkJCVRoaXMgZG9lcyBub3QgY292ZXIgdGhlcm1hbCBBQ1BJIGxpbWl0YXRpb25zCisJCQkJd2hpY2ggY2FuIGJlIGRldGVjdGVkIHRocm91Z2ggdGhlIGdlbmVyaWMKKwkJCQl0aGVybWFsIGRyaXZlci4KKworSWYgeW91IGhhdmUgc2VsZWN0ZWQgdGhlICJ1c2Vyc3BhY2UiIGdvdmVybm9yIHdoaWNoIGFsbG93cyB5b3UgdG8KK3NldCB0aGUgQ1BVIG9wZXJhdGluZyBmcmVxdWVuY3kgdG8gYSBzcGVjaWZpYyB2YWx1ZSwgeW91IGNhbiByZWFkIG91dAordGhlIGN1cnJlbnQgZnJlcXVlbmN5IGluCisKK3NjYWxpbmdfc2V0c3BlZWQuCQlCeSAiZWNob2luZyIgYSBuZXcgZnJlcXVlbmN5IGludG8gdGhpcworCQkJCXlvdSBjYW4gY2hhbmdlIHRoZSBzcGVlZCBvZiB0aGUgQ1BVLAorCQkJCWJ1dCBvbmx5IHdpdGhpbiB0aGUgbGltaXRzIG9mCisJCQkJc2NhbGluZ19taW5fZnJlcSBhbmQgc2NhbGluZ19tYXhfZnJlcS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY3B1LWhvdHBsdWcudHh0IGIvRG9jdW1lbnRhdGlvbi9jcHUtaG90cGx1Zy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlhZDVlMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vY3B1LWhvdHBsdWcudHh0CkBAIC0wLDAgKzEsNDUyIEBACisJCUNQVSBob3RwbHVnIFN1cHBvcnQgaW4gTGludXgodG0pIEtlcm5lbAorCisJCU1haW50YWluZXJzOgorCQlDUFUgSG90cGx1ZyBDb3JlOgorCQkJUnVzdHkgUnVzc2VsbCA8cnVzdHlAcnVzdGNvcnAuY29tLmF1PgorCQkJU3JpdmF0c2EgVmFkZGFnaXJpIDx2YXRzYUBpbi5pYm0uY29tPgorCQlpMzg2OgorCQkJWndhbmUgTXdhaWthbWJvIDx6d2FuZW1AZ21haWwuY29tPgorCQlwcGM2NDoKKwkJCU5hdGhhbiBMeW5jaCA8bmF0aGFubEBhdXN0aW4uaWJtLmNvbT4KKwkJCUpvZWwgU2Nob3BwIDxqc2Nob3BwQGF1c3Rpbi5pYm0uY29tPgorCQlpYTY0L3g4Nl82NDoKKwkJCUFzaG9rIFJhaiA8YXNob2sucmFqQGludGVsLmNvbT4KKwkJczM5MDoKKwkJCUhlaWtvIENhcnN0ZW5zIDxoZWlrby5jYXJzdGVuc0BkZS5pYm0uY29tPgorCitBdXRob3JzOiBBc2hvayBSYWogPGFzaG9rLnJhakBpbnRlbC5jb20+CitMb3RzIG9mIGZlZWRiYWNrOiBOYXRoYW4gTHluY2ggPG5hdGhhbmxAYXVzdGluLmlibS5jb20+LAorCSAgICAgSm9lbCBTY2hvcHAgPGpzY2hvcHBAYXVzdGluLmlibS5jb20+CisKK0ludHJvZHVjdGlvbgorCitNb2Rlcm4gYWR2YW5jZXMgaW4gc3lzdGVtIGFyY2hpdGVjdHVyZXMgaGF2ZSBpbnRyb2R1Y2VkIGFkdmFuY2VkIGVycm9yCityZXBvcnRpbmcgYW5kIGNvcnJlY3Rpb24gY2FwYWJpbGl0aWVzIGluIHByb2Nlc3NvcnMuIENQVSBhcmNoaXRlY3R1cmVzIHBlcm1pdAorcGFydGl0aW9uaW5nIHN1cHBvcnQsIHdoZXJlIGNvbXB1dGUgcmVzb3VyY2VzIG9mIGEgc2luZ2xlIENQVSBjb3VsZCBiZSBtYWRlCithdmFpbGFibGUgdG8gdmlydHVhbCBtYWNoaW5lIGVudmlyb25tZW50cy4gVGhlcmUgYXJlIGNvdXBsZSBPRU1TIHRoYXQKK3N1cHBvcnQgTlVNQSBoYXJkd2FyZSB3aGljaCBhcmUgaG90IHBsdWdnYWJsZSBhcyB3ZWxsLCB3aGVyZSBwaHlzaWNhbAorbm9kZSBpbnNlcnRpb24gYW5kIHJlbW92YWwgcmVxdWlyZSBzdXBwb3J0IGZvciBDUFUgaG90cGx1Zy4KKworU3VjaCBhZHZhbmNlcyByZXF1aXJlIENQVXMgYXZhaWxhYmxlIHRvIGEga2VybmVsIHRvIGJlIHJlbW92ZWQgZWl0aGVyIGZvcgorcHJvdmlzaW9uaW5nIHJlYXNvbnMsIG9yIGZvciBSQVMgcHVycG9zZXMgdG8ga2VlcCBhbiBvZmZlbmRpbmcgQ1BVIG9mZgorc3lzdGVtIGV4ZWN1dGlvbiBwYXRoLiBIZW5jZSB0aGUgbmVlZCBmb3IgQ1BVIGhvdHBsdWcgc3VwcG9ydCBpbiB0aGUKK0xpbnV4IGtlcm5lbC4KKworQSBtb3JlIG5vdmVsIHVzZSBvZiBDUFUtaG90cGx1ZyBzdXBwb3J0IGlzIGl0cyB1c2UgdG9kYXkgaW4gc3VzcGVuZAorcmVzdW1lIHN1cHBvcnQgZm9yIFNNUC4gRHVhbC1jb3JlIGFuZCBIVCBzdXBwb3J0IG1ha2VzIGV2ZW4KK2EgbGFwdG9wIHJ1biBTTVAga2VybmVscyB3aGljaCBkaWRuJ3Qgc3VwcG9ydCB0aGVzZSBtZXRob2RzLiBTTVAgc3VwcG9ydAorZm9yIHN1c3BlbmQvcmVzdW1lIGlzIGEgd29yayBpbiBwcm9ncmVzcy4KKworR2VuZXJhbCBTdHVmZiBhYm91dCBDUFUgSG90cGx1ZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29tbWFuZCBMaW5lIFN3aXRjaGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KK21heGNwdXM9biAgICBSZXN0cmljdCBib290IHRpbWUgY3B1cyB0byBuLiBTYXkgaWYgeW91IGhhdmUgNCBjcHVzLCB1c2luZworICAgICAgICAgICAgIG1heGNwdXM9MiB3aWxsIG9ubHkgYm9vdCAyLiBZb3UgY2FuIGNob29zZSB0byBicmluZyB0aGUKKyAgICAgICAgICAgICBvdGhlciBjcHVzIGxhdGVyIG9ubGluZSwgcmVhZCBGQVEncyBmb3IgbW9yZSBpbmZvLgorCithZGRpdGlvbmFsX2NwdXM9biAoKikJVXNlIHRoaXMgdG8gbGltaXQgaG90cGx1Z2dhYmxlIGNwdXMuIFRoaXMgb3B0aW9uIHNldHMKKyAgCQkJY3B1X3Bvc3NpYmxlX21hc2sgPSBjcHVfcHJlc2VudF9tYXNrICsgYWRkaXRpb25hbF9jcHVzCisKK2NlZGVfb2ZmbGluZT17Im9mZiIsIm9uIn0gIFVzZSB0aGlzIG9wdGlvbiB0byBkaXNhYmxlL2VuYWJsZSBwdXR0aW5nIG9mZmxpbmVkCisJCSAgICAgICAgICAgIHByb2Nlc3NvcnMgdG8gYW4gZXh0ZW5kZWQgSF9DRURFIHN0YXRlIG9uCisJCQkgICAgc3VwcG9ydGVkIHBzZXJpZXMgcGxhdGZvcm1zLgorCQkJICAgIElmIG5vdGhpbmcgaXMgc3BlY2lmaWVkLAorCQkJICAgIGNlZGVfb2ZmbGluZSBpcyBzZXQgdG8gIm9uIi4KKworKCopIE9wdGlvbiB2YWxpZCBvbmx5IGZvciBmb2xsb3dpbmcgYXJjaGl0ZWN0dXJlcworLSBpYTY0CisKK2lhNjQgdXNlcyB0aGUgbnVtYmVyIG9mIGRpc2FibGVkIGxvY2FsIGFwaWNzIGluIEFDUEkgdGFibGVzIE1BRFQgdG8KK2RldGVybWluZSB0aGUgbnVtYmVyIG9mIHBvdGVudGlhbGx5IGhvdC1wbHVnZ2FibGUgY3B1cy4gVGhlIGltcGxlbWVudGF0aW9uCitzaG91bGQgb25seSByZWx5IG9uIHRoaXMgdG8gY291bnQgdGhlICMgb2YgY3B1cywgYnV0ICpNVVNUKiBub3QgcmVseQorb24gdGhlIGFwaWNpZCB2YWx1ZXMgaW4gdGhvc2UgdGFibGVzIGZvciBkaXNhYmxlZCBhcGljcy4gSW4gdGhlIGV2ZW50CitCSU9TIGRvZXNuJ3QgbWFyayBzdWNoIGhvdC1wbHVnZ2FibGUgY3B1cyBhcyBkaXNhYmxlZCBlbnRyaWVzLCBvbmUgY291bGQKK3VzZSB0aGlzIHBhcmFtZXRlciAiYWRkaXRpb25hbF9jcHVzPXgiIHRvIHJlcHJlc2VudCB0aG9zZSBjcHVzIGluIHRoZQorY3B1X3Bvc3NpYmxlX21hc2suCisKK3Bvc3NpYmxlX2NwdXM9bgkJW3MzOTAseDg2XzY0XSB1c2UgdGhpcyB0byBzZXQgaG90cGx1Z2dhYmxlIGNwdXMuCisJCQlUaGlzIG9wdGlvbiBzZXRzIHBvc3NpYmxlX2NwdXMgYml0cyBpbgorCQkJY3B1X3Bvc3NpYmxlX21hc2suIFRodXMga2VlcGluZyB0aGUgbnVtYmVycyBvZiBiaXRzIHNldAorCQkJY29uc3RhbnQgZXZlbiBpZiB0aGUgbWFjaGluZSBnZXRzIHJlYm9vdGVkLgorCitDUFUgbWFwcyBhbmQgc3VjaAorLS0tLS0tLS0tLS0tLS0tLS0KK1tNb3JlIG9uIGNwdW1hcHMgYW5kIHByaW1pdGl2ZSB0byBtYW5pcHVsYXRlLCBwbGVhc2UgY2hlY2sKK2luY2x1ZGUvbGludXgvY3B1bWFzay5oIHRoYXQgaGFzIG1vcmUgZGVzY3JpcHRpdmUgdGV4dC5dCisKK2NwdV9wb3NzaWJsZV9tYXNrOiBCaXRtYXAgb2YgcG9zc2libGUgQ1BVcyB0aGF0IGNhbiBldmVyIGJlIGF2YWlsYWJsZSBpbiB0aGUKK3N5c3RlbS4gVGhpcyBpcyB1c2VkIHRvIGFsbG9jYXRlIHNvbWUgYm9vdCB0aW1lIG1lbW9yeSBmb3IgcGVyX2NwdSB2YXJpYWJsZXMKK3RoYXQgYXJlbid0IGRlc2lnbmVkIHRvIGdyb3cvc2hyaW5rIGFzIENQVXMgYXJlIG1hZGUgYXZhaWxhYmxlIG9yIHJlbW92ZWQuCitPbmNlIHNldCBkdXJpbmcgYm9vdCB0aW1lIGRpc2NvdmVyeSBwaGFzZSwgdGhlIG1hcCBpcyBzdGF0aWMsIGkuZSBubyBiaXRzCithcmUgYWRkZWQgb3IgcmVtb3ZlZCBhbnl0aW1lLiAgVHJpbW1pbmcgaXQgYWNjdXJhdGVseSBmb3IgeW91ciBzeXN0ZW0gbmVlZHMKK3VwZnJvbnQgY2FuIHNhdmUgc29tZSBib290IHRpbWUgbWVtb3J5LiBTZWUgYmVsb3cgZm9yIGhvdyB3ZSB1c2UgaGV1cmlzdGljcworaW4geDg2XzY0IGNhc2UgdG8ga2VlcCB0aGlzIHVuZGVyIGNoZWNrLgorCitjcHVfb25saW5lX21hc2s6IEJpdG1hcCBvZiBhbGwgQ1BVcyBjdXJyZW50bHkgb25saW5lLiBJdHMgc2V0IGluIF9fY3B1X3VwKCkKK2FmdGVyIGEgY3B1IGlzIGF2YWlsYWJsZSBmb3Iga2VybmVsIHNjaGVkdWxpbmcgYW5kIHJlYWR5IHRvIHJlY2VpdmUKK2ludGVycnVwdHMgZnJvbSBkZXZpY2VzLiBJdHMgY2xlYXJlZCB3aGVuIGEgY3B1IGlzIGJyb3VnaHQgZG93biB1c2luZworX19jcHVfZGlzYWJsZSgpLCBiZWZvcmUgd2hpY2ggYWxsIE9TIHNlcnZpY2VzIGluY2x1ZGluZyBpbnRlcnJ1cHRzIGFyZQorbWlncmF0ZWQgdG8gYW5vdGhlciB0YXJnZXQgQ1BVLgorCitjcHVfcHJlc2VudF9tYXNrOiBCaXRtYXAgb2YgQ1BVcyBjdXJyZW50bHkgcHJlc2VudCBpbiB0aGUgc3lzdGVtLiBOb3QgYWxsCitvZiB0aGVtIG1heSBiZSBvbmxpbmUuIFdoZW4gcGh5c2ljYWwgaG90cGx1ZyBpcyBwcm9jZXNzZWQgYnkgdGhlIHJlbGV2YW50CitzdWJzeXN0ZW0gKGUuZyBBQ1BJKSBjYW4gY2hhbmdlIGFuZCBuZXcgYml0IGVpdGhlciBiZSBhZGRlZCBvciByZW1vdmVkCitmcm9tIHRoZSBtYXAgZGVwZW5kaW5nIG9uIHRoZSBldmVudCBpcyBob3QtYWRkL2hvdC1yZW1vdmUuIFRoZXJlIGFyZSBjdXJyZW50bHkKK25vIGxvY2tpbmcgcnVsZXMgYXMgb2Ygbm93LiBUeXBpY2FsIHVzYWdlIGlzIHRvIGluaXQgdG9wb2xvZ3kgZHVyaW5nIGJvb3QsCithdCB3aGljaCB0aW1lIGhvdHBsdWcgaXMgZGlzYWJsZWQuCisKK1lvdSByZWFsbHkgZG9udCBuZWVkIHRvIG1hbmlwdWxhdGUgYW55IG9mIHRoZSBzeXN0ZW0gY3B1IG1hcHMuIFRoZXkgc2hvdWxkCitiZSByZWFkLW9ubHkgZm9yIG1vc3QgdXNlLiBXaGVuIHNldHRpbmcgdXAgcGVyLWNwdSByZXNvdXJjZXMgYWxtb3N0IGFsd2F5cyB1c2UKK2NwdV9wb3NzaWJsZV9tYXNrL2Zvcl9lYWNoX3Bvc3NpYmxlX2NwdSgpIHRvIGl0ZXJhdGUuCisKK05ldmVyIHVzZSBhbnl0aGluZyBvdGhlciB0aGFuIGNwdW1hc2tfdCB0byByZXByZXNlbnQgYml0bWFwIG9mIENQVXMuCisKKwkjaW5jbHVkZSA8bGludXgvY3B1bWFzay5oPgorCisJZm9yX2VhY2hfcG9zc2libGVfY3B1ICAgICAtIEl0ZXJhdGUgb3ZlciBjcHVfcG9zc2libGVfbWFzaworCWZvcl9lYWNoX29ubGluZV9jcHUgICAgICAgLSBJdGVyYXRlIG92ZXIgY3B1X29ubGluZV9tYXNrCisJZm9yX2VhY2hfcHJlc2VudF9jcHUgICAgICAtIEl0ZXJhdGUgb3ZlciBjcHVfcHJlc2VudF9tYXNrCisJZm9yX2VhY2hfY3B1KHgsbWFzaykgICAgICAtIEl0ZXJhdGUgb3ZlciBzb21lIHJhbmRvbSBjb2xsZWN0aW9uIG9mIGNwdSBtYXNrLgorCisJI2luY2x1ZGUgPGxpbnV4L2NwdS5oPgorCWdldF9vbmxpbmVfY3B1cygpIGFuZCBwdXRfb25saW5lX2NwdXMoKToKKworVGhlIGFib3ZlIGNhbGxzIGFyZSB1c2VkIHRvIGluaGliaXQgY3B1IGhvdHBsdWcgb3BlcmF0aW9ucy4gV2hpbGUgdGhlCitjcHVfaG90cGx1Zy5yZWZjb3VudCBpcyBub24gemVybywgdGhlIGNwdV9vbmxpbmVfbWFzayB3aWxsIG5vdCBjaGFuZ2UuCitJZiB5b3UgbWVyZWx5IG5lZWQgdG8gYXZvaWQgY3B1cyBnb2luZyBhd2F5LCB5b3UgY291bGQgYWxzbyB1c2UKK3ByZWVtcHRfZGlzYWJsZSgpIGFuZCBwcmVlbXB0X2VuYWJsZSgpIGZvciB0aG9zZSBzZWN0aW9ucy4KK0p1c3QgcmVtZW1iZXIgdGhlIGNyaXRpY2FsIHNlY3Rpb24gY2Fubm90IGNhbGwgYW55CitmdW5jdGlvbiB0aGF0IGNhbiBzbGVlcCBvciBzY2hlZHVsZSB0aGlzIHByb2Nlc3MgYXdheS4gVGhlIHByZWVtcHRfZGlzYWJsZSgpCit3aWxsIHdvcmsgYXMgbG9uZyBhcyBzdG9wX21hY2hpbmVfcnVuKCkgaXMgdXNlZCB0byB0YWtlIGEgY3B1IGRvd24uCisKK0NQVSBIb3RwbHVnIC0gRnJlcXVlbnRseSBBc2tlZCBRdWVzdGlvbnMuCisKK1E6IEhvdyB0byBlbmFibGUgbXkga2VybmVsIHRvIHN1cHBvcnQgQ1BVIGhvdHBsdWc/CitBOiBXaGVuIGRvaW5nIG1ha2UgZGVmY29uZmlnLCBFbmFibGUgQ1BVIGhvdHBsdWcgc3VwcG9ydAorCisgICAiUHJvY2Vzc29yIHR5cGUgYW5kIEZlYXR1cmVzIiAtPiBTdXBwb3J0IGZvciBIb3RwbHVnZ2FibGUgQ1BVcworCitNYWtlIHN1cmUgdGhhdCB5b3UgaGF2ZSBDT05GSUdfU01QIHR1cm5lZCBvbiBhcyB3ZWxsLgorCitZb3Ugd291bGQgbmVlZCB0byBlbmFibGUgQ09ORklHX0hPVFBMVUdfQ1BVIGZvciBTTVAgc3VzcGVuZC9yZXN1bWUgc3VwcG9ydAorYXMgd2VsbC4KKworUTogV2hhdCBhcmNoaXRlY3R1cmVzIHN1cHBvcnQgQ1BVIGhvdHBsdWc/CitBOiBBcyBvZiAyLjYuMTQsIHRoZSBmb2xsb3dpbmcgYXJjaGl0ZWN0dXJlcyBzdXBwb3J0IENQVSBob3RwbHVnLgorCitpMzg2IChJbnRlbCksIHBwYywgcHBjNjQsIHBhcmlzYywgczM5MCwgaWE2NCBhbmQgeDg2XzY0CisKK1E6IEhvdyB0byB0ZXN0IGlmIGhvdHBsdWcgaXMgc3VwcG9ydGVkIG9uIHRoZSBuZXdseSBidWlsdCBrZXJuZWw/CitBOiBZb3Ugc2hvdWxkIG5vdyBub3RpY2UgYW4gZW50cnkgaW4gc3lzZnMuCisKK0NoZWNrIGlmIHN5c2ZzIGlzIG1vdW50ZWQsIHVzaW5nIHRoZSAibW91bnQiIGNvbW1hbmQuIFlvdSBzaG91bGQgbm90aWNlCithbiBlbnRyeSBhcyBzaG93biBiZWxvdyBpbiB0aGUgb3V0cHV0LgorCisJLi4uLgorCW5vbmUgb24gL3N5cyB0eXBlIHN5c2ZzIChydykKKwkuLi4uCisKK0lmIHRoaXMgaXMgbm90IG1vdW50ZWQsIGRvIHRoZSBmb2xsb3dpbmcuCisKKwkgI21rZGlyIC9zeXNmcworCSNtb3VudCAtdCBzeXNmcyBzeXMgL3N5cworCitOb3cgeW91IHNob3VsZCBzZWUgZW50cmllcyBmb3IgYWxsIHByZXNlbnQgY3B1LCB0aGUgZm9sbG93aW5nIGlzIGFuIGV4YW1wbGUKK2luIGEgOC13YXkgc3lzdGVtLgorCisJI3B3ZAorCSMvc3lzL2RldmljZXMvc3lzdGVtL2NwdQorCSNscyAtbAorCXRvdGFsIDAKKwlkcnd4ci14ci14ICAxMCByb290IHJvb3QgMCBTZXAgMTkgMDc6NDQgLgorCWRyd3hyLXhyLXggIDEzIHJvb3Qgcm9vdCAwIFNlcCAxOSAwNzo0NSAuLgorCWRyd3hyLXhyLXggICAzIHJvb3Qgcm9vdCAwIFNlcCAxOSAwNzo0NCBjcHUwCisJZHJ3eHIteHIteCAgIDMgcm9vdCByb290IDAgU2VwIDE5IDA3OjQ0IGNwdTEKKwlkcnd4ci14ci14ICAgMyByb290IHJvb3QgMCBTZXAgMTkgMDc6NDQgY3B1MgorCWRyd3hyLXhyLXggICAzIHJvb3Qgcm9vdCAwIFNlcCAxOSAwNzo0NCBjcHUzCisJZHJ3eHIteHIteCAgIDMgcm9vdCByb290IDAgU2VwIDE5IDA3OjQ0IGNwdTQKKwlkcnd4ci14ci14ICAgMyByb290IHJvb3QgMCBTZXAgMTkgMDc6NDQgY3B1NQorCWRyd3hyLXhyLXggICAzIHJvb3Qgcm9vdCAwIFNlcCAxOSAwNzo0NCBjcHU2CisJZHJ3eHIteHIteCAgIDMgcm9vdCByb290IDAgU2VwIDE5IDA3OjQ4IGNwdTcKKworVW5kZXIgZWFjaCBkaXJlY3RvcnkgeW91IHdvdWxkIGZpbmQgYW4gIm9ubGluZSIgZmlsZSB3aGljaCBpcyB0aGUgY29udHJvbAorZmlsZSB0byBsb2dpY2FsbHkgb25saW5lL29mZmxpbmUgYSBwcm9jZXNzb3IuCisKK1E6IERvZXMgaG90LWFkZC9ob3QtcmVtb3ZlIHJlZmVyIHRvIHBoeXNpY2FsIGFkZC9yZW1vdmUgb2YgY3B1cz8KK0E6IFRoZSB1c2FnZSBvZiBob3QtYWRkL3JlbW92ZSBtYXkgbm90IGJlIHZlcnkgY29uc2lzdGVudGx5IHVzZWQgaW4gdGhlIGNvZGUuCitDT05GSUdfSE9UUExVR19DUFUgZW5hYmxlcyBsb2dpY2FsIG9ubGluZS9vZmZsaW5lIGNhcGFiaWxpdHkgaW4gdGhlIGtlcm5lbC4KK1RvIHN1cHBvcnQgcGh5c2ljYWwgYWRkaXRpb24vcmVtb3ZhbCwgb25lIHdvdWxkIG5lZWQgc29tZSBCSU9TIGhvb2tzIGFuZAordGhlIHBsYXRmb3JtIHNob3VsZCBoYXZlIHNvbWV0aGluZyBsaWtlIGFuIGF0dGVudGlvbiBidXR0b24gaW4gUENJIGhvdHBsdWcuCitDT05GSUdfQUNQSV9IT1RQTFVHX0NQVSBlbmFibGVzIEFDUEkgc3VwcG9ydCBmb3IgcGh5c2ljYWwgYWRkL3JlbW92ZSBvZiBDUFVzLgorCitROiBIb3cgZG8gaSBsb2dpY2FsbHkgb2ZmbGluZSBhIENQVT8KK0E6IERvIHRoZSBmb2xsb3dpbmcuCisKKwkjZWNobyAwID4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1WC9vbmxpbmUKKworT25jZSB0aGUgbG9naWNhbCBvZmZsaW5lIGlzIHN1Y2Nlc3NmdWwsIGNoZWNrCisKKwkjY2F0IC9wcm9jL2ludGVycnVwdHMKKworWW91IHNob3VsZCBub3cgbm90IHNlZSB0aGUgQ1BVIHRoYXQgeW91IHJlbW92ZWQuIEFsc28gb25saW5lIGZpbGUgd2lsbCByZXBvcnQKK3RoZSBzdGF0ZSBhcyAwIHdoZW4gYSBjcHUgaWYgb2ZmbGluZSBhbmQgMSB3aGVuIGl0cyBvbmxpbmUuCisKKwkjVG8gZGlzcGxheSB0aGUgY3VycmVudCBjcHUgc3RhdGUuCisJI2NhdCAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHVYL29ubGluZQorCitROiBXaHkgY2FuJ3QgaSByZW1vdmUgQ1BVMCBvbiBzb21lIHN5c3RlbXM/CitBOiBTb21lIGFyY2hpdGVjdHVyZXMgbWF5IGhhdmUgc29tZSBzcGVjaWFsIGRlcGVuZGVuY3kgb24gYSBjZXJ0YWluIENQVS4KKworRm9yIGUuZyBpbiBJQTY0IHBsYXRmb3JtcyB3ZSBoYXZlIGFiaWxpdHkgdG8gc2VudCBwbGF0Zm9ybSBpbnRlcnJ1cHRzIHRvIHRoZQorT1MuIGEuay5hIENvcnJlY3RlZCBQbGF0Zm9ybSBFcnJvciBJbnRlcnJ1cHRzIChDUEVJKS4gSW4gY3VycmVudCBBQ1BJCitzcGVjaWZpY2F0aW9ucywgd2UgZGlkbid0IGhhdmUgYSB3YXkgdG8gY2hhbmdlIHRoZSB0YXJnZXQgQ1BVLiBIZW5jZSBpZiB0aGUKK2N1cnJlbnQgQUNQSSB2ZXJzaW9uIGRvZXNuJ3Qgc3VwcG9ydCBzdWNoIHJlLWRpcmVjdGlvbiwgd2UgZGlzYWJsZSB0aGF0IENQVQorYnkgbWFraW5nIGl0IG5vdC1yZW1vdmFibGUuCisKK0luIHN1Y2ggY2FzZXMgeW91IHdpbGwgYWxzbyBub3RpY2UgdGhhdCB0aGUgb25saW5lIGZpbGUgaXMgbWlzc2luZyB1bmRlciBjcHUwLgorCitROiBJcyBDUFUwIHJlbW92YWJsZSBvbiBYODY/CitBOiBZZXMuIElmIGtlcm5lbCBpcyBjb21waWxlZCB3aXRoIENPTkZJR19CT09UUEFSQU1fSE9UUExVR19DUFUwPXksIENQVTAgaXMKK3JlbW92YWJsZSBieSBkZWZhdWx0LiBPdGhlcndpc2UsIENQVTAgaXMgYWxzbyByZW1vdmFibGUgYnkga2VybmVsIG9wdGlvbgorY3B1MF9ob3RwbHVnLgorCitCdXQgc29tZSBmZWF0dXJlcyBkZXBlbmQgb24gQ1BVMC4gVHdvIGtub3duIGRlcGVuZGVuY2llcyBhcmU6CisKKzEuIFJlc3VtZSBmcm9tIGhpYmVybmF0ZS9zdXNwZW5kIGRlcGVuZHMgb24gQ1BVMC4gSGliZXJuYXRlL3N1c3BlbmQgd2lsbCBmYWlsIGlmCitDUFUwIGlzIG9mZmxpbmUgYW5kIHlvdSBuZWVkIHRvIG9ubGluZSBDUFUwIGJlZm9yZSBoaWJlcm5hdGUvc3VzcGVuZCBjYW4KK2NvbnRpbnVlLgorMi4gUElDIGludGVycnVwdHMgYWxzbyBkZXBlbmQgb24gQ1BVMC4gQ1BVMCBjYW4ndCBiZSByZW1vdmVkIGlmIGEgUElDIGludGVycnVwdAoraXMgZGV0ZWN0ZWQuCisKK0l0J3Mgc2FpZCBwb3dlcm9mZi9yZWJvb3QgbWF5IGRlcGVuZCBvbiBDUFUwIG9uIHNvbWUgbWFjaGluZXMgYWx0aG91Z2ggSSBoYXZlbid0CitzZWVuIGFueSBwb3dlcm9mZi9yZWJvb3QgZmFpbHVyZSBzbyBmYXIgYWZ0ZXIgQ1BVMCBpcyBvZmZsaW5lIG9uIGEgZmV3IHRlc3RlZAorbWFjaGluZXMuCisKK1BsZWFzZSBsZXQgbWUga25vdyBpZiB5b3Uga25vdyBvciBzZWUgYW55IG90aGVyIGRlcGVuZGVuY2llcyBvZiBDUFUwLgorCitJZiB0aGUgZGVwZW5kZW5jaWVzIGFyZSB1bmRlciB5b3VyIGNvbnRyb2wsIHlvdSBjYW4gdHVybiBvbiBDUFUwIGhvdHBsdWcgZmVhdHVyZQorZWl0aGVyIGJ5IENPTkZJR19CT09UUEFSQU1fSE9UUExVR19DUFUwIG9yIGJ5IGtlcm5lbCBwYXJhbWV0ZXIgY3B1MF9ob3RwbHVnLgorCistLUZlbmdodWEgWXUgPGZlbmdodWEueXVAaW50ZWwuY29tPgorCitROiBIb3cgZG8gaSBmaW5kIG91dCBpZiBhIHBhcnRpY3VsYXIgQ1BVIGlzIG5vdCByZW1vdmFibGU/CitBOiBEZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uLCBzb21lIGFyY2hpdGVjdHVyZXMgbWF5IHNob3cgdGhpcyBieSB0aGUKK2Fic2VuY2Ugb2YgdGhlICJvbmxpbmUiIGZpbGUuIFRoaXMgaXMgZG9uZSBpZiBpdCBjYW4gYmUgZGV0ZXJtaW5lZCBhaGVhZCBvZgordGltZSB0aGF0IHRoaXMgQ1BVIGNhbm5vdCBiZSByZW1vdmVkLgorCitJbiBzb21lIHNpdHVhdGlvbnMsIHRoaXMgY2FuIGJlIGEgcnVuIHRpbWUgY2hlY2ssIGkuZSBpZiB5b3UgdHJ5IHRvIHJlbW92ZSB0aGUKK2xhc3QgQ1BVLCB0aGlzIHdpbGwgbm90IGJlIHBlcm1pdHRlZC4gWW91IGNhbiBmaW5kIHN1Y2ggZmFpbHVyZXMgYnkKK2ludmVzdGlnYXRpbmcgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgImVjaG8iIGNvbW1hbmQuCisKK1E6IFdoYXQgaGFwcGVucyB3aGVuIGEgQ1BVIGlzIGJlaW5nIGxvZ2ljYWxseSBvZmZsaW5lZD8KK0E6IFRoZSBmb2xsb3dpbmcgaGFwcGVuLCBsaXN0ZWQgaW4gbm8gcGFydGljdWxhciBvcmRlciA6LSkKKworLSBBIG5vdGlmaWNhdGlvbiBpcyBzZW50IHRvIGluLWtlcm5lbCByZWdpc3RlcmVkIG1vZHVsZXMgYnkgc2VuZGluZyBhbiBldmVudAorICBDUFVfRE9XTl9QUkVQQVJFIG9yIENQVV9ET1dOX1BSRVBBUkVfRlJPWkVOLCBkZXBlbmRpbmcgb24gd2hldGhlciBvciBub3QgdGhlCisgIENQVSBpcyBiZWluZyBvZmZsaW5lZCB3aGlsZSB0YXNrcyBhcmUgZnJvemVuIGR1ZSB0byBhIHN1c3BlbmQgb3BlcmF0aW9uIGluCisgIHByb2dyZXNzCistIEFsbCBwcm9jZXNzZXMgYXJlIG1pZ3JhdGVkIGF3YXkgZnJvbSB0aGlzIG91dGdvaW5nIENQVSB0byBuZXcgQ1BVcy4KKyAgVGhlIG5ldyBDUFUgaXMgY2hvc2VuIGZyb20gZWFjaCBwcm9jZXNzJyBjdXJyZW50IGNwdXNldCwgd2hpY2ggbWF5IGJlCisgIGEgc3Vic2V0IG9mIGFsbCBvbmxpbmUgQ1BVcy4KKy0gQWxsIGludGVycnVwdHMgdGFyZ2V0ZWQgdG8gdGhpcyBDUFUgaXMgbWlncmF0ZWQgdG8gYSBuZXcgQ1BVCistIHRpbWVycy9ib3R0b20gaGFsZi90YXNrIGxldHMgYXJlIGFsc28gbWlncmF0ZWQgdG8gYSBuZXcgQ1BVCistIE9uY2UgYWxsIHNlcnZpY2VzIGFyZSBtaWdyYXRlZCwga2VybmVsIGNhbGxzIGFuIGFyY2ggc3BlY2lmaWMgcm91dGluZQorICBfX2NwdV9kaXNhYmxlKCkgdG8gcGVyZm9ybSBhcmNoIHNwZWNpZmljIGNsZWFudXAuCistIE9uY2UgdGhpcyBpcyBzdWNjZXNzZnVsLCBhbiBldmVudCBmb3Igc3VjY2Vzc2Z1bCBjbGVhbnVwIGlzIHNlbnQgYnkgYW4gZXZlbnQKKyAgQ1BVX0RFQUQgKG9yIENQVV9ERUFEX0ZST1pFTiBpZiB0YXNrcyBhcmUgZnJvemVuIGR1ZSB0byBhIHN1c3BlbmQgd2hpbGUgdGhlCisgIENQVSBpcyBiZWluZyBvZmZsaW5lZCkuCisKKyAgIkl0IGlzIGV4cGVjdGVkIHRoYXQgZWFjaCBzZXJ2aWNlIGNsZWFucyB1cCB3aGVuIHRoZSBDUFVfRE9XTl9QUkVQQVJFCisgIG5vdGlmaWVyIGlzIGNhbGxlZCwgd2hlbiBDUFVfREVBRCBpcyBjYWxsZWQgaXRzIGV4cGVjdGVkIHRoZXJlIGlzIG5vdGhpbmcKKyAgcnVubmluZyBvbiBiZWhhbGYgb2YgdGhpcyBDUFUgdGhhdCB3YXMgb2ZmbGluZWQiCisKK1E6IElmIGkgaGF2ZSBzb21lIGtlcm5lbCBjb2RlIHRoYXQgbmVlZHMgdG8gYmUgYXdhcmUgb2YgQ1BVIGFycml2YWwgYW5kCisgICBkZXBhcnR1cmUsIGhvdyB0byBpIGFycmFuZ2UgZm9yIHByb3BlciBub3RpZmljYXRpb24/CitBOiBUaGlzIGlzIHdoYXQgeW91IHdvdWxkIG5lZWQgaW4geW91ciBrZXJuZWwgY29kZSB0byByZWNlaXZlIG5vdGlmaWNhdGlvbnMuCisKKwkjaW5jbHVkZSA8bGludXgvY3B1Lmg+CisJc3RhdGljIGludCBmb29iYXJfY3B1X2NhbGxiYWNrKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmZiLAorCQkJCSAgICAgICB1bnNpZ25lZCBsb25nIGFjdGlvbiwgdm9pZCAqaGNwdSkKKwl7CisJCXVuc2lnbmVkIGludCBjcHUgPSAodW5zaWduZWQgbG9uZyloY3B1OworCisJCXN3aXRjaCAoYWN0aW9uKSB7CisJCWNhc2UgQ1BVX09OTElORToKKwkJY2FzZSBDUFVfT05MSU5FX0ZST1pFTjoKKwkJCWZvb2Jhcl9vbmxpbmVfYWN0aW9uKGNwdSk7CisJCQlicmVhazsKKwkJY2FzZSBDUFVfREVBRDoKKwkJY2FzZSBDUFVfREVBRF9GUk9aRU46CisJCQlmb29iYXJfZGVhZF9hY3Rpb24oY3B1KTsKKwkJCWJyZWFrOworCQl9CisJCXJldHVybiBOT1RJRllfT0s7CisJfQorCisJc3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBmb29iYXJfY3B1X25vdGlmaWVyID0KKwl7CisJICAgLm5vdGlmaWVyX2NhbGwgPSBmb29iYXJfY3B1X2NhbGxiYWNrLAorCX07CisKK1lvdSBuZWVkIHRvIGNhbGwgcmVnaXN0ZXJfY3B1X25vdGlmaWVyKCkgZnJvbSB5b3VyIGluaXQgZnVuY3Rpb24uCitJbml0IGZ1bmN0aW9ucyBjb3VsZCBiZSBvZiB0d28gdHlwZXM6CisxLiBlYXJseSBpbml0IChpbml0IGZ1bmN0aW9uIGNhbGxlZCB3aGVuIG9ubHkgdGhlIGJvb3QgcHJvY2Vzc29yIGlzIG9ubGluZSkuCisyLiBsYXRlIGluaXQgKGluaXQgZnVuY3Rpb24gY2FsbGVkIF9hZnRlcl8gYWxsIHRoZSBDUFVzIGFyZSBvbmxpbmUpLgorCitGb3IgdGhlIGZpcnN0IGNhc2UsIHlvdSBzaG91bGQgYWRkIHRoZSBmb2xsb3dpbmcgdG8geW91ciBpbml0IGZ1bmN0aW9uCisKKwlyZWdpc3Rlcl9jcHVfbm90aWZpZXIoJmZvb2Jhcl9jcHVfbm90aWZpZXIpOworCitGb3IgdGhlIHNlY29uZCBjYXNlLCB5b3Ugc2hvdWxkIGFkZCB0aGUgZm9sbG93aW5nIHRvIHlvdXIgaW5pdCBmdW5jdGlvbgorCisJcmVnaXN0ZXJfaG90Y3B1X25vdGlmaWVyKCZmb29iYXJfY3B1X25vdGlmaWVyKTsKKworWW91IGNhbiBmYWlsIFBSRVBBUkUgbm90aWZpZXJzIGlmIHNvbWV0aGluZyBkb2Vzbid0IHdvcmsgdG8gcHJlcGFyZSByZXNvdXJjZXMuCitUaGlzIHdpbGwgc3RvcCB0aGUgYWN0aXZpdHkgYW5kIHNlbmQgYSBmb2xsb3dpbmcgQ0FOQ0VMRUQgZXZlbnQgYmFjay4KKworQ1BVX0RFQUQgc2hvdWxkIG5vdCBiZSBmYWlsZWQsIGl0cyBqdXN0IGEgZ29vZG5lc3MgaW5kaWNhdGlvbiwgYnV0IGJhZAordGhpbmdzIHdpbGwgaGFwcGVuIGlmIGEgbm90aWZpZXIgaW4gcGF0aCBzZW50IGEgQkFEIG5vdGlmeSBjb2RlLgorCitROiBJIGRvbid0IHNlZSBteSBhY3Rpb24gYmVpbmcgY2FsbGVkIGZvciBhbGwgQ1BVcyBhbHJlYWR5IHVwIGFuZCBydW5uaW5nPworQTogWWVzLCBDUFUgbm90aWZpZXJzIGFyZSBjYWxsZWQgb25seSB3aGVuIG5ldyBDUFVzIGFyZSBvbi1saW5lZCBvciBvZmZsaW5lZC4KKyAgIElmIHlvdSBuZWVkIHRvIHBlcmZvcm0gc29tZSBhY3Rpb24gZm9yIGVhY2ggY3B1IGFscmVhZHkgaW4gdGhlIHN5c3RlbSwgdGhlbgorICAgZG8gdGhpczoKKworCWZvcl9lYWNoX29ubGluZV9jcHUoaSkgeworCQlmb29iYXJfY3B1X2NhbGxiYWNrKCZmb29iYXJfY3B1X25vdGlmaWVyLCBDUFVfVVBfUFJFUEFSRSwgaSk7CisJCWZvb2Jhcl9jcHVfY2FsbGJhY2soJmZvb2Jhcl9jcHVfbm90aWZpZXIsIENQVV9PTkxJTkUsIGkpOworCX0KKworICAgSG93ZXZlciwgaWYgeW91IHdhbnQgdG8gcmVnaXN0ZXIgYSBob3RwbHVnIGNhbGxiYWNrLCBhcyB3ZWxsIGFzIHBlcmZvcm0KKyAgIHNvbWUgaW5pdGlhbGl6YXRpb24gZm9yIENQVXMgdGhhdCBhcmUgYWxyZWFkeSBvbmxpbmUsIHRoZW4gZG8gdGhpczoKKworICAgVmVyc2lvbiAxOiAoQ29ycmVjdCkKKyAgIC0tLS0tLS0tLQorCisgICAJY3B1X25vdGlmaWVyX3JlZ2lzdGVyX2JlZ2luKCk7CisKKwkJZm9yX2VhY2hfb25saW5lX2NwdShpKSB7CisJCQlmb29iYXJfY3B1X2NhbGxiYWNrKCZmb29iYXJfY3B1X25vdGlmaWVyLAorCQkJCQkgICAgQ1BVX1VQX1BSRVBBUkUsIGkpOworCQkJZm9vYmFyX2NwdV9jYWxsYmFjaygmZm9vYmFyX2NwdV9ub3RpZmllciwKKwkJCQkJICAgIENQVV9PTkxJTkUsIGkpOworCQl9CisKKwkvKiBOb3RlIHRoZSB1c2Ugb2YgdGhlIGRvdWJsZSB1bmRlcnNjb3JlZCB2ZXJzaW9uIG9mIHRoZSBBUEkgKi8KKwlfX3JlZ2lzdGVyX2NwdV9ub3RpZmllcigmZm9vYmFyX2NwdV9ub3RpZmllcik7CisKKwljcHVfbm90aWZpZXJfcmVnaXN0ZXJfZG9uZSgpOworCisgICBOb3RlIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIGlzICpOT1QqIHRoZSByaWdodCB3YXkgdG8gYWNoaWV2ZSB0aGlzLAorICAgYmVjYXVzZSBpdCBpcyBwcm9uZSB0byBhbiBBQkJBIGRlYWRsb2NrIGJldHdlZW4gdGhlIGNwdV9hZGRfcmVtb3ZlX2xvY2sKKyAgIGFuZCB0aGUgY3B1X2hvdHBsdWcubG9jay4KKworICAgVmVyc2lvbiAyOiAoV3JvbmchKQorICAgLS0tLS0tLS0tCisKKwlnZXRfb25saW5lX2NwdXMoKTsKKworCQlmb3JfZWFjaF9vbmxpbmVfY3B1KGkpIHsKKwkJCWZvb2Jhcl9jcHVfY2FsbGJhY2soJmZvb2Jhcl9jcHVfbm90aWZpZXIsCisJCQkJCSAgICBDUFVfVVBfUFJFUEFSRSwgaSk7CisJCQlmb29iYXJfY3B1X2NhbGxiYWNrKCZmb29iYXJfY3B1X25vdGlmaWVyLAorCQkJCQkgICAgQ1BVX09OTElORSwgaSk7CisJCX0KKworCXJlZ2lzdGVyX2NwdV9ub3RpZmllcigmZm9vYmFyX2NwdV9ub3RpZmllcik7CisKKwlwdXRfb25saW5lX2NwdXMoKTsKKworICAgIFNvIGFsd2F5cyB1c2UgdGhlIGZpcnN0IHZlcnNpb24gc2hvd24gYWJvdmUgd2hlbiB5b3Ugd2FudCB0byByZWdpc3RlcgorICAgIGNhbGxiYWNrcyBhcyB3ZWxsIGFzIGluaXRpYWxpemUgdGhlIGFscmVhZHkgb25saW5lIENQVXMuCisKKworUTogSWYgaSB3b3VsZCBsaWtlIHRvIGRldmVsb3AgY3B1IGhvdHBsdWcgc3VwcG9ydCBmb3IgYSBuZXcgYXJjaGl0ZWN0dXJlLAorICAgd2hhdCBkbyBpIG5lZWQgYXQgYSBtaW5pbXVtPworQTogVGhlIGZvbGxvd2luZyBhcmUgd2hhdCBpcyByZXF1aXJlZCBmb3IgQ1BVIGhvdHBsdWcgaW5mcmFzdHJ1Y3R1cmUgdG8gd29yaworICAgY29ycmVjdGx5LgorCisgICAgLSBNYWtlIHN1cmUgeW91IGhhdmUgYW4gZW50cnkgaW4gS2NvbmZpZyB0byBlbmFibGUgQ09ORklHX0hPVFBMVUdfQ1BVCisgICAgLSBfX2NwdV91cCgpICAgICAgICAtIEFyY2ggaW50ZXJmYWNlIHRvIGJyaW5nIHVwIGEgQ1BVCisgICAgLSBfX2NwdV9kaXNhYmxlKCkgICAtIEFyY2ggaW50ZXJmYWNlIHRvIHNodXRkb3duIGEgQ1BVLCBubyBtb3JlIGludGVycnVwdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuIGJlIGhhbmRsZWQgYnkgdGhlIGtlcm5lbCBhZnRlciB0aGUgcm91dGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5zLiBJbmNsdWRpbmcgbG9jYWwgQVBJQyB0aW1lcnMgZXRjIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICBzaHV0ZG93bi4KKyAgICAgLSBfX2NwdV9kaWUoKSAgICAgIC0gVGhpcyBhY3R1YWxseSBzdXBwb3NlZCB0byBlbnN1cmUgZGVhdGggb2YgdGhlIENQVS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0dWFsbHkgbG9vayBhdCBzb21lIGV4YW1wbGUgY29kZSBpbiBvdGhlciBhcmNoCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgaW1wbGVtZW50IENQVSBob3RwbHVnLiBUaGUgcHJvY2Vzc29yIGlzIHRha2VuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd24gZnJvbSB0aGUgaWRsZSgpIGxvb3AgZm9yIHRoYXQgc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlLiBfX2NwdV9kaWUoKSB0eXBpY2FsbHkgd2FpdHMgZm9yIHNvbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyX2NwdSBzdGF0ZSB0byBiZSBzZXQsIHRvIGVuc3VyZSB0aGUgcHJvY2Vzc29yCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYWQgcm91dGluZSBpcyBjYWxsZWQgdG8gYmUgc3VyZSBwb3NpdGl2ZWx5LgorCitROiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgYSBwYXJ0aWN1bGFyIGNwdSBpcyBub3QgcmVtb3ZlZCB3aGVuIHRoZXJlIGlzIHNvbWUKKyAgIHdvcmsgc3BlY2lmaWMgdG8gdGhpcyBjcHUgaXMgaW4gcHJvZ3Jlc3MuCitBOiBUaGVyZSBhcmUgdHdvIHdheXMuICBJZiB5b3VyIGNvZGUgY2FuIGJlIHJ1biBpbiBpbnRlcnJ1cHQgY29udGV4dCwgdXNlCisgICBzbXBfY2FsbF9mdW5jdGlvbl9zaW5nbGUoKSwgb3RoZXJ3aXNlIHVzZSB3b3JrX29uX2NwdSgpLiAgTm90ZSB0aGF0CisgICB3b3JrX29uX2NwdSgpIGlzIHNsb3csIGFuZCBjYW4gZmFpbCBkdWUgdG8gb3V0IG9mIG1lbW9yeToKKworCWludCBteV9mdW5jX29uX2NwdShpbnQgY3B1KQorCXsKKwkJaW50IGVycjsKKwkJZ2V0X29ubGluZV9jcHVzKCk7CisJCWlmICghY3B1X29ubGluZShjcHUpKQorCQkJZXJyID0gLUVJTlZBTDsKKwkJZWxzZQorI2lmIE5FRURTX0JMT0NLSU5HCisJCQllcnIgPSB3b3JrX29uX2NwdShjcHUsIF9fbXlfZnVuY19vbl9jcHUsIE5VTEwpOworI2Vsc2UKKwkJCXNtcF9jYWxsX2Z1bmN0aW9uX3NpbmdsZShjcHUsIF9fbXlfZnVuY19vbl9jcHUsICZlcnIsCisJCQkJCQkgdHJ1ZSk7CisjZW5kaWYKKwkJcHV0X29ubGluZV9jcHVzKCk7CisJCXJldHVybiBlcnI7CisJfQorCitROiBIb3cgZG8gd2UgZGV0ZXJtaW5lIGhvdyBtYW55IENQVXMgYXJlIGF2YWlsYWJsZSBmb3IgaG90cGx1Zy4KK0E6IFRoZXJlIGlzIG5vIGNsZWFyIHNwZWMgZGVmaW5lZCB3YXkgZnJvbSBBQ1BJIHRoYXQgY2FuIGdpdmUgdXMgdGhhdAorICAgaW5mb3JtYXRpb24gdG9kYXkuIEJhc2VkIG9uIHNvbWUgaW5wdXQgZnJvbSBOYXRhbGllIG9mIFVuaXN5cywKKyAgIHRoYXQgdGhlIEFDUEkgTUFEVCAoTXVsdGlwbGUgQVBJQyBEZXNjcmlwdGlvbiBUYWJsZXMpIG1hcmtzIHRob3NlIHBvc3NpYmxlCisgICBDUFVzIGluIGEgc3lzdGVtIHdpdGggZGlzYWJsZWQgc3RhdHVzLgorCisgICBBbmRpIGltcGxlbWVudGVkIHNvbWUgc2ltcGxlIGhldXJpc3RpY3MgdGhhdCBjb3VudCB0aGUgbnVtYmVyIG9mIGRpc2FibGVkCisgICBDUFVzIGluIE1BRFQgYXMgaG90cGx1Z2dhYmxlIENQVVMuICBJbiB0aGUgY2FzZSB0aGVyZSBhcmUgbm8gZGlzYWJsZWQgQ1BVUworICAgd2UgYXNzdW1lIDEvMiB0aGUgbnVtYmVyIG9mIENQVXMgY3VycmVudGx5IHByZXNlbnQgY2FuIGJlIGhvdHBsdWdnZWQuCisKKyAgIENhdmVhdDogQUNQSSBNQURUIGNhbiBvbmx5IHByb3ZpZGUgMjU2IGVudHJpZXMgaW4gc3lzdGVtcyB3aXRoIG9ubHkgQUNQSSAyLjBjCisgICBvciBlYXJsaWVyIEFDUEkgdmVyc2lvbiBzdXBwb3J0ZWQsIGJlY2F1c2UgdGhlIGFwaWNpZCBmaWVsZCBpbiBNQURUIGlzIG9ubHkKKyAgIDggYml0cy4gRnJvbSBBQ1BJIDMuMCwgdGhpcyBsaW1pdGF0aW9uIHdhcyByZW1vdmVkIHNpbmNlIHRoZSBhcGljaWQgZmllbGQKKyAgIHdhcyBleHRlbmRlZCB0byAzMiBiaXRzIHdpdGggeDJBUElDIGludHJvZHVjZWQuCisKK1VzZXIgU3BhY2UgTm90aWZpY2F0aW9uCisKK0hvdHBsdWcgc3VwcG9ydCBmb3IgZGV2aWNlcyBpcyBjb21tb24gaW4gTGludXggdG9kYXkuIEl0cyBiZWluZyB1c2VkIHRvZGF5IHRvCitzdXBwb3J0IGF1dG9tYXRpYyBjb25maWd1cmF0aW9uIG9mIG5ldHdvcmssIHVzYiBhbmQgcGNpIGRldmljZXMuIEEgaG90cGx1ZworZXZlbnQgY2FuIGJlIHVzZWQgdG8gaW52b2tlIGFuIGFnZW50IHNjcmlwdCB0byBwZXJmb3JtIHRoZSBjb25maWd1cmF0aW9uIHRhc2suCisKK1lvdSBjYW4gYWRkIC9ldGMvaG90cGx1Zy9jcHUuYWdlbnQgdG8gaGFuZGxlIGhvdHBsdWcgbm90aWZpY2F0aW9uIHVzZXIgc3BhY2UKK3NjcmlwdHMuCisKKwkjIS9iaW4vYmFzaAorCSMgJElkOiBjcHUuYWdlbnQKKwkjIEtlcm5lbCBob3RwbHVnIHBhcmFtcyBpbmNsdWRlOgorCSNBQ1RJT049JXMgW29ubGluZSBvciBvZmZsaW5lXQorCSNERVZQQVRIPSVzCisJIworCWNkIC9ldGMvaG90cGx1ZworCS4gLi9ob3RwbHVnLmZ1bmN0aW9ucworCisJY2FzZSAkQUNUSU9OIGluCisJCW9ubGluZSkKKwkJCWVjaG8gYGRhdGVgICI6Y3B1LmFnZW50IiBhZGQgY3B1ID4+IC90bXAvaG90cGx1Zy50eHQKKwkJCTs7CisJCW9mZmxpbmUpCisJCQllY2hvIGBkYXRlYCAiOmNwdS5hZ2VudCIgcmVtb3ZlIGNwdSA+Pi90bXAvaG90cGx1Zy50eHQKKwkJCTs7CisJCSopCisJCQlkZWJ1Z19tZXNnIENQVSAkQUNUSU9OIGV2ZW50IG5vdCBzdXBwb3J0ZWQKKyAgICAgICAgZXhpdCAxCisgICAgICAgIDs7CisJZXNhYwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9jcHUtbG9hZC50eHQgYi9Eb2N1bWVudGF0aW9uL2NwdS1sb2FkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODcyMjRlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9jcHUtbG9hZC50eHQKQEAgLTAsMCArMSwxMTMgQEAKK0NQVSBsb2FkCistLS0tLS0tLQorCitMaW51eCBleHBvcnRzIHZhcmlvdXMgYml0cyBvZiBpbmZvcm1hdGlvbiB2aWEgYC9wcm9jL3N0YXQnIGFuZAorYC9wcm9jL3VwdGltZScgdGhhdCB1c2VybGFuZCB0b29scywgc3VjaCBhcyB0b3AoMSksIHVzZSB0byBjYWxjdWxhdGUKK3RoZSBhdmVyYWdlIHRpbWUgc3lzdGVtIHNwZW50IGluIGEgcGFydGljdWxhciBzdGF0ZSwgZm9yIGV4YW1wbGU6CisKKyAgICAkIGlvc3RhdAorICAgIExpbnV4IDIuNi4xOC4zLWV4cCAobGlubWFjKSAgICAgMDIvMjAvMjAwNworCisgICAgYXZnLWNwdTogICV1c2VyICAgJW5pY2UgJXN5c3RlbSAlaW93YWl0ICAlc3RlYWwgICAlaWRsZQorICAgICAgICAgICAgICAxMC4wMSAgICAwLjAwICAgIDIuOTIgICAgNS40NCAgICAwLjAwICAgODEuNjMKKworICAgIC4uLgorCitIZXJlIHRoZSBzeXN0ZW0gdGhpbmtzIHRoYXQgb3ZlciB0aGUgZGVmYXVsdCBzYW1wbGluZyBwZXJpb2QgdGhlCitzeXN0ZW0gc3BlbnQgMTAuMDElIG9mIHRoZSB0aW1lIGRvaW5nIHdvcmsgaW4gdXNlciBzcGFjZSwgMi45MiUgaW4gdGhlCitrZXJuZWwsIGFuZCB3YXMgb3ZlcmFsbCA4MS42MyUgb2YgdGhlIHRpbWUgaWRsZS4KKworSW4gbW9zdCBjYXNlcyB0aGUgYC9wcm9jL3N0YXQnIGluZm9ybWF0aW9uIHJlZmxlY3RzIHRoZSByZWFsaXR5IHF1aXRlCitjbG9zZWx5LCBob3dldmVyIGR1ZSB0byB0aGUgbmF0dXJlIG9mIGhvdy93aGVuIHRoZSBrZXJuZWwgY29sbGVjdHMKK3RoaXMgZGF0YSBzb21ldGltZXMgaXQgY2FuIG5vdCBiZSB0cnVzdGVkIGF0IGFsbC4KKworU28gaG93IGlzIHRoaXMgaW5mb3JtYXRpb24gY29sbGVjdGVkPyAgV2hlbmV2ZXIgdGltZXIgaW50ZXJydXB0IGlzCitzaWduYWxsZWQgdGhlIGtlcm5lbCBsb29rcyB3aGF0IGtpbmQgb2YgdGFzayB3YXMgcnVubmluZyBhdCB0aGlzCittb21lbnQgYW5kIGluY3JlbWVudHMgdGhlIGNvdW50ZXIgdGhhdCBjb3JyZXNwb25kcyB0byB0aGlzIHRhc2tzCitraW5kL3N0YXRlLiAgVGhlIHByb2JsZW0gd2l0aCB0aGlzIGlzIHRoYXQgdGhlIHN5c3RlbSBjb3VsZCBoYXZlCitzd2l0Y2hlZCBiZXR3ZWVuIHZhcmlvdXMgc3RhdGVzIG11bHRpcGxlIHRpbWVzIGJldHdlZW4gdHdvIHRpbWVyCitpbnRlcnJ1cHRzIHlldCB0aGUgY291bnRlciBpcyBpbmNyZW1lbnRlZCBvbmx5IGZvciB0aGUgbGFzdCBzdGF0ZS4KKworCitFeGFtcGxlCistLS0tLS0tCisKK0lmIHdlIGltYWdpbmUgdGhlIHN5c3RlbSB3aXRoIG9uZSB0YXNrIHRoYXQgcGVyaW9kaWNhbGx5IGJ1cm5zIGN5Y2xlcworaW4gdGhlIGZvbGxvd2luZyBtYW5uZXI6CisKKyB0aW1lIGxpbmUgYmV0d2VlbiB0d28gdGltZXIgaW50ZXJydXB0cworfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgfF8gc29tZXRoaW5nIGJlZ2lucyB3b3JraW5nICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfF8gc29tZXRoaW5nIGdvZXMgdG8gc2xlZXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25seSB0byBiZSBhd2FrZW4gcXVpdGUgc29vbikKKworSW4gdGhlIGFib3ZlIHNpdHVhdGlvbiB0aGUgc3lzdGVtIHdpbGwgYmUgMCUgbG9hZGVkIGFjY29yZGluZyB0byB0aGUKK2AvcHJvYy9zdGF0JyAoc2luY2UgdGhlIHRpbWVyIGludGVycnVwdCB3aWxsIGFsd2F5cyBoYXBwZW4gd2hlbiB0aGUKK3N5c3RlbSBpcyBleGVjdXRpbmcgdGhlIGlkbGUgaGFuZGxlciksIGJ1dCBpbiByZWFsaXR5IHRoZSBsb2FkIGlzCitjbG9zZXIgdG8gOTklLgorCitPbmUgY2FuIGltYWdpbmUgbWFueSBtb3JlIHNpdHVhdGlvbnMgd2hlcmUgdGhpcyBiZWhhdmlvciBvZiB0aGUga2VybmVsCit3aWxsIGxlYWQgdG8gcXVpdGUgZXJyYXRpYyBpbmZvcm1hdGlvbiBpbnNpZGUgYC9wcm9jL3N0YXQnLgorCisKKy8qIGdjYyAtbyBob2cgc21hbGxob2cuYyAqLworI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2RlZmluZSBISVNUIDEwCisKK3N0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3Qgc3RvcDsKKworc3RhdGljIHZvaWQgc2lnaGFuZGxlciAoaW50IHNpZ25yKQoreworICAgICAodm9pZCkgc2lnbnI7CisgICAgIHN0b3AgPSAxOworfQorc3RhdGljIHVuc2lnbmVkIGxvbmcgaG9nICh1bnNpZ25lZCBsb25nIG5pdGVycykKK3sKKyAgICAgc3RvcCA9IDA7CisgICAgIHdoaWxlICghc3RvcCAmJiAtLW5pdGVycyk7CisgICAgIHJldHVybiBuaXRlcnM7Cit9CitpbnQgbWFpbiAodm9pZCkKK3sKKyAgICAgaW50IGk7CisgICAgIHN0cnVjdCBpdGltZXJ2YWwgaXQgPSB7IC5pdF9pbnRlcnZhbCA9IHsgLnR2X3NlYyA9IDAsIC50dl91c2VjID0gMSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaXRfdmFsdWUgPSB7IC50dl9zZWMgPSAwLCAudHZfdXNlYyA9IDEgfSB9OworICAgICBzaWdzZXRfdCBzZXQ7CisgICAgIHVuc2lnbmVkIGxvbmcgdltISVNUXTsKKyAgICAgZG91YmxlIHRtcCA9IDAuMDsKKyAgICAgdW5zaWduZWQgbG9uZyBuOworICAgICBzaWduYWwgKFNJR0FMUk0sICZzaWdoYW5kbGVyKTsKKyAgICAgc2V0aXRpbWVyIChJVElNRVJfUkVBTCwgJml0LCBOVUxMKTsKKworICAgICBob2cgKFVMT05HX01BWCk7CisgICAgIGZvciAoaSA9IDA7IGkgPCBISVNUOyArK2kpIHZbaV0gPSBVTE9OR19NQVggLSBob2cgKFVMT05HX01BWCk7CisgICAgIGZvciAoaSA9IDA7IGkgPCBISVNUOyArK2kpIHRtcCArPSB2W2ldOworICAgICB0bXAgLz0gSElTVDsKKyAgICAgbiA9IHRtcCAtICh0bXAgLyAzLjApOworCisgICAgIHNpZ2VtcHR5c2V0ICgmc2V0KTsKKyAgICAgc2lnYWRkc2V0ICgmc2V0LCBTSUdBTFJNKTsKKworICAgICBmb3IgKDs7KSB7CisgICAgICAgICBob2cgKG4pOworICAgICAgICAgc2lnd2FpdCAoJnNldCwgJmkpOworICAgICB9CisgICAgIHJldHVybiAwOworfQorCisKK1JlZmVyZW5jZXMKKy0tLS0tLS0tLS0KKworaHR0cDovL2xrbWwub3JnL2xrbWwvMjAwNy8yLzEyLzYKK0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy50eHQgKDEuOCkKKworCitUaGFua3MKKy0tLS0tLQorCitDb24gS29saXZhcywgUGF2ZWwgTWFjaGVrCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2NwdWlkbGUvY29yZS50eHQgYi9Eb2N1bWVudGF0aW9uL2NwdWlkbGUvY29yZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjNlY2M1ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vY3B1aWRsZS9jb3JlLnR4dApAQCAtMCwwICsxLDIzIEBACisKKwkJU3VwcG9ydGluZyBtdWx0aXBsZSBDUFUgaWRsZSBsZXZlbHMgaW4ga2VybmVsCisKKwkJCQljcHVpZGxlCisKK0dlbmVyYWwgSW5mb3JtYXRpb246CisKK1ZhcmlvdXMgQ1BVcyB0b2RheSBzdXBwb3J0IG11bHRpcGxlIGlkbGUgbGV2ZWxzIHRoYXQgYXJlIGRpZmZlcmVudGlhdGVkCitieSB2YXJ5aW5nIGV4aXQgbGF0ZW5jaWVzIGFuZCBwb3dlciBjb25zdW1wdGlvbiBkdXJpbmcgaWRsZS4KK2NwdWlkbGUgaXMgYSBnZW5lcmljIGluLWtlcm5lbCBpbmZyYXN0cnVjdHVyZSB0aGF0IHNlcGFyYXRlcworaWRsZSBwb2xpY3kgKGdvdmVybm9yKSBmcm9tIGlkbGUgbWVjaGFuaXNtIChkcml2ZXIpIGFuZCBwcm92aWRlcyBhCitzdGFuZGFyZGl6ZWQgaW5mcmFzdHJ1Y3R1cmUgdG8gc3VwcG9ydCBpbmRlcGVuZGVudCBkZXZlbG9wbWVudCBvZgorZ292ZXJub3JzIGFuZCBkcml2ZXJzLgorCitjcHVpZGxlIHJlc2lkZXMgdW5kZXIgZHJpdmVycy9jcHVpZGxlLgorCitCb290IG9wdGlvbnM6CisiY3B1aWRsZV9zeXNmc19zd2l0Y2giCitlbmFibGVzIGN1cnJlbnRfZ292ZXJub3IgaW50ZXJmYWNlIGluIC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdWlkbGUvLAord2hpY2ggY2FuIGJlIHVzZWQgdG8gc3dpdGNoIGdvdmVybm9ycyBhdCBydW4gdGltZS4gVGhpcyBib290IG9wdGlvbgoraXMgbWVhbnQgZm9yIGRldmVsb3BlciB0ZXN0aW5nIG9ubHkuIEluIG5vcm1hbCB1c2FnZSwga2VybmVsIHBpY2tzIHRoZQorYmVzdCBnb3Zlcm5vciBiYXNlZCBvbiBnb3Zlcm5vciByYXRpbmdzLgorU0VFIEFMU086IHN5c2ZzLnR4dCBpbiB0aGlzIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY3B1aWRsZS9kcml2ZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9jcHVpZGxlL2RyaXZlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIwZDgxZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vY3B1aWRsZS9kcml2ZXIudHh0CkBAIC0wLDAgKzEsMzcgQEAKKworCisJCVN1cHBvcnRpbmcgbXVsdGlwbGUgQ1BVIGlkbGUgbGV2ZWxzIGluIGtlcm5lbAorCisJCQkJY3B1aWRsZSBkcml2ZXJzCisKKworCisKK2NwdWlkbGUgZHJpdmVyIGhvb2tzIGludG8gdGhlIGNwdWlkbGUgaW5mcmFzdHJ1Y3R1cmUgYW5kIGhhbmRsZXMgdGhlCithcmNoaXRlY3R1cmUvcGxhdGZvcm0gZGVwZW5kZW50IHBhcnQgb2YgQ1BVIGlkbGUgc3RhdGVzLiBEcml2ZXIKK3Byb3ZpZGVzIHRoZSBwbGF0Zm9ybSBpZGxlIHN0YXRlIGRldGVjdGlvbiBjYXBhYmlsaXR5IGFuZCBhbHNvCitoYXMgbWVjaGFuaXNtcyBpbiBwbGFjZSB0byBzdXBwb3J0IGFjdHVhbCBlbnRyeS1leGl0IGludG8gQ1BVIGlkbGUgc3RhdGVzLgorCitjcHVpZGxlIGRyaXZlciBpbml0aWFsaXplcyB0aGUgY3B1aWRsZV9kZXZpY2Ugc3RydWN0dXJlIGZvciBlYWNoIENQVSBkZXZpY2UKK2FuZCByZWdpc3RlcnMgd2l0aCBjcHVpZGxlIHVzaW5nIGNwdWlkbGVfcmVnaXN0ZXJfZGV2aWNlLgorCitJZiBhbGwgdGhlIGlkbGUgc3RhdGVzIGFyZSB0aGUgc2FtZSwgdGhlIHdyYXBwZXIgZnVuY3Rpb24gY3B1aWRsZV9yZWdpc3RlcgorY291bGQgYmUgdXNlZCBpbnN0ZWFkLgorCitJdCBjYW4gYWxzbyBzdXBwb3J0IHRoZSBkeW5hbWljIGNoYW5nZXMgKGxpa2UgYmF0dGVyeSA8LT4gQUMpLCBieSB1c2luZworY3B1aWRsZV9wYXVzZV9hbmRfbG9jaywgY3B1aWRsZV9kaXNhYmxlX2RldmljZSBhbmQgY3B1aWRsZV9lbmFibGVfZGV2aWNlLAorY3B1aWRsZV9yZXN1bWVfYW5kX3VubG9jay4KKworSW50ZXJmYWNlczoKK2V4dGVybiBpbnQgY3B1aWRsZV9yZWdpc3RlcihzdHJ1Y3QgY3B1aWRsZV9kcml2ZXIgKmRydiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY29uc3QgY291cGxlZF9jcHVzKTsKK2V4dGVybiBpbnQgY3B1aWRsZV91bnJlZ2lzdGVyKHN0cnVjdCBjcHVpZGxlX2RyaXZlciAqZHJ2KTsKK2V4dGVybiBpbnQgY3B1aWRsZV9yZWdpc3Rlcl9kcml2ZXIoc3RydWN0IGNwdWlkbGVfZHJpdmVyICpkcnYpOworZXh0ZXJuIHZvaWQgY3B1aWRsZV91bnJlZ2lzdGVyX2RyaXZlcihzdHJ1Y3QgY3B1aWRsZV9kcml2ZXIgKmRydik7CitleHRlcm4gaW50IGNwdWlkbGVfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBjcHVpZGxlX2RldmljZSAqZGV2KTsKK2V4dGVybiB2b2lkIGNwdWlkbGVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGNwdWlkbGVfZGV2aWNlICpkZXYpOworCitleHRlcm4gdm9pZCBjcHVpZGxlX3BhdXNlX2FuZF9sb2NrKHZvaWQpOworZXh0ZXJuIHZvaWQgY3B1aWRsZV9yZXN1bWVfYW5kX3VubG9jayh2b2lkKTsKK2V4dGVybiBpbnQgY3B1aWRsZV9lbmFibGVfZGV2aWNlKHN0cnVjdCBjcHVpZGxlX2RldmljZSAqZGV2KTsKK2V4dGVybiB2b2lkIGNwdWlkbGVfZGlzYWJsZV9kZXZpY2Uoc3RydWN0IGNwdWlkbGVfZGV2aWNlICpkZXYpOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9jcHVpZGxlL2dvdmVybm9yLnR4dCBiL0RvY3VtZW50YXRpb24vY3B1aWRsZS9nb3Zlcm5vci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkwMjBmNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vY3B1aWRsZS9nb3Zlcm5vci50eHQKQEAgLTAsMCArMSwyOCBAQAorCisKKworCQlTdXBwb3J0aW5nIG11bHRpcGxlIENQVSBpZGxlIGxldmVscyBpbiBrZXJuZWwKKworCQkJCWNwdWlkbGUgZ292ZXJub3JzCisKKworCisKK2NwdWlkbGUgZ292ZXJub3IgaXMgcG9saWN5IHJvdXRpbmUgdGhhdCBkZWNpZGVzIHdoYXQgaWRsZSBzdGF0ZSB0byBlbnRlciBhdAorYW55IGdpdmVuIHRpbWUuIGNwdWlkbGUgY29yZSB1c2VzIGRpZmZlcmVudCBjYWxsYmFja3MgdG8gdGhlIGdvdmVybm9yLgorCisqIGVuYWJsZSgpIHRvIGVuYWJsZSBnb3Zlcm5vciBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZQorKiBkaXNhYmxlKCkgdG8gZGlzYWJsZSBnb3Zlcm5vciBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZQorKiBzZWxlY3QoKSB0byBzZWxlY3QgYW4gaWRsZSBzdGF0ZSB0byBlbnRlcgorKiByZWZsZWN0KCkgY2FsbGVkIGFmdGVyIHJldHVybmluZyBmcm9tIHRoZSBpZGxlIHN0YXRlLCB3aGljaCBjYW4gYmUgdXNlZAorICBieSB0aGUgZ292ZXJub3IgZm9yIHNvbWUgcmVjb3JkIGtlZXBpbmcuCisKK01vcmUgdGhhbiBvbmUgZ292ZXJub3IgY2FuIGJlIHJlZ2lzdGVyZWQgYXQgdGhlIHNhbWUgdGltZSBhbmQKK3VzZXJzIGNhbiBzd2l0Y2ggYmV0d2VlbiBkcml2ZXJzIHVzaW5nIC9zeXNmcyBpbnRlcmZhY2UgKHdoZW4gZW5hYmxlZCkuCitNb3JlIHRoYW4gb25lIGdvdmVybm9yIHBhcnQgaXMgc3VwcG9ydGVkIGZvciBkZXZlbG9wZXJzIHRvIGVhc2lseSBleHBlcmltZW50Cit3aXRoIGRpZmZlcmVudCBnb3Zlcm5vcnMuIEJ5IGRlZmF1bHQsIG1vc3Qgb3B0aW1hbCBnb3Zlcm5vciBiYXNlZCBvbiB5b3VyCitrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQgcGxhdGZvcm0gd2lsbCBiZSBzZWxlY3RlZCBieSBjcHVpZGxlLgorCitJbnRlcmZhY2VzOgorZXh0ZXJuIGludCBjcHVpZGxlX3JlZ2lzdGVyX2dvdmVybm9yKHN0cnVjdCBjcHVpZGxlX2dvdmVybm9yICpnb3YpOworc3RydWN0IGNwdWlkbGVfZ292ZXJub3IKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY3B1aWRsZS9zeXNmcy50eHQgYi9Eb2N1bWVudGF0aW9uL2NwdWlkbGUvc3lzZnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2ZjQ0ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2NwdWlkbGUvc3lzZnMudHh0CkBAIC0wLDAgKzEsOTIgQEAKKworCisJCVN1cHBvcnRpbmcgbXVsdGlwbGUgQ1BVIGlkbGUgbGV2ZWxzIGluIGtlcm5lbAorCisJCQkJY3B1aWRsZSBzeXNmcworCitTeXN0ZW0gZ2xvYmFsIGNwdWlkbGUgcmVsYXRlZCBpbmZvcm1hdGlvbiBhbmQgdHVuYWJsZXMgYXJlIHVuZGVyCisvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHVpZGxlCisKK1RoZSBjdXJyZW50IGludGVyZmFjZXMgaW4gdGhpcyBkaXJlY3RvcnkgaGFzIHNlbGYtZXhwbGFuYXRvcnkgbmFtZXM6CisqIGN1cnJlbnRfZHJpdmVyCisqIGN1cnJlbnRfZ292ZXJub3Jfcm8KKworV2l0aCBjcHVpZGxlX3N5c2ZzX3N3aXRjaCBib290IG9wdGlvbiAobWVhbnQgZm9yIGRldmVsb3BlciB0ZXN0aW5nKQorZm9sbG93aW5nIG9iamVjdHMgYXJlIHZpc2libGUgaW5zdGVhZC4KKyogY3VycmVudF9kcml2ZXIKKyogYXZhaWxhYmxlX2dvdmVybm9ycworKiBjdXJyZW50X2dvdmVybm9yCitJbiB0aGlzIGNhc2UgdXNlcnMgY2FuIHN3aXRjaCB0aGUgZ292ZXJub3IgYXQgcnVuIHRpbWUgYnkgd3JpdGluZwordG8gY3VycmVudF9nb3Zlcm5vci4KKworCitQZXIgbG9naWNhbCBDUFUgc3BlY2lmaWMgY3B1aWRsZSBpbmZvcm1hdGlvbiBhcmUgdW5kZXIKKy9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdVgvY3B1aWRsZQorZm9yIGVhY2ggb25saW5lIGNwdSBYCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGxzIC1sUiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUwL2NwdWlkbGUvCisvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUwL2NwdWlkbGUvOgordG90YWwgMAorZHJ3eHIteHIteCAyIHJvb3Qgcm9vdCAwIEZlYiAgOCAxMDo0MiBzdGF0ZTAKK2Ryd3hyLXhyLXggMiByb290IHJvb3QgMCBGZWIgIDggMTA6NDIgc3RhdGUxCitkcnd4ci14ci14IDIgcm9vdCByb290IDAgRmViICA4IDEwOjQyIHN0YXRlMgorZHJ3eHIteHIteCAyIHJvb3Qgcm9vdCAwIEZlYiAgOCAxMDo0MiBzdGF0ZTMKKworL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1MC9jcHVpZGxlL3N0YXRlMDoKK3RvdGFsIDAKKy1yLS1yLS1yLS0gMSByb290IHJvb3QgNDA5NiBGZWIgIDggMTA6NDIgZGVzYworLXJ3LXItLXItLSAxIHJvb3Qgcm9vdCA0MDk2IEZlYiAgOCAxMDo0MiBkaXNhYmxlCistci0tci0tci0tIDEgcm9vdCByb290IDQwOTYgRmViICA4IDEwOjQyIGxhdGVuY3kKKy1yLS1yLS1yLS0gMSByb290IHJvb3QgNDA5NiBGZWIgIDggMTA6NDIgbmFtZQorLXItLXItLXItLSAxIHJvb3Qgcm9vdCA0MDk2IEZlYiAgOCAxMDo0MiBwb3dlcgorLXItLXItLXItLSAxIHJvb3Qgcm9vdCA0MDk2IEZlYiAgOCAxMDo0MiB0aW1lCistci0tci0tci0tIDEgcm9vdCByb290IDQwOTYgRmViICA4IDEwOjQyIHVzYWdlCisKKy9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTAvY3B1aWRsZS9zdGF0ZTE6Cit0b3RhbCAwCistci0tci0tci0tIDEgcm9vdCByb290IDQwOTYgRmViICA4IDEwOjQyIGRlc2MKKy1ydy1yLS1yLS0gMSByb290IHJvb3QgNDA5NiBGZWIgIDggMTA6NDIgZGlzYWJsZQorLXItLXItLXItLSAxIHJvb3Qgcm9vdCA0MDk2IEZlYiAgOCAxMDo0MiBsYXRlbmN5Cistci0tci0tci0tIDEgcm9vdCByb290IDQwOTYgRmViICA4IDEwOjQyIG5hbWUKKy1yLS1yLS1yLS0gMSByb290IHJvb3QgNDA5NiBGZWIgIDggMTA6NDIgcG93ZXIKKy1yLS1yLS1yLS0gMSByb290IHJvb3QgNDA5NiBGZWIgIDggMTA6NDIgdGltZQorLXItLXItLXItLSAxIHJvb3Qgcm9vdCA0MDk2IEZlYiAgOCAxMDo0MiB1c2FnZQorCisvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUwL2NwdWlkbGUvc3RhdGUyOgordG90YWwgMAorLXItLXItLXItLSAxIHJvb3Qgcm9vdCA0MDk2IEZlYiAgOCAxMDo0MiBkZXNjCistcnctci0tci0tIDEgcm9vdCByb290IDQwOTYgRmViICA4IDEwOjQyIGRpc2FibGUKKy1yLS1yLS1yLS0gMSByb290IHJvb3QgNDA5NiBGZWIgIDggMTA6NDIgbGF0ZW5jeQorLXItLXItLXItLSAxIHJvb3Qgcm9vdCA0MDk2IEZlYiAgOCAxMDo0MiBuYW1lCistci0tci0tci0tIDEgcm9vdCByb290IDQwOTYgRmViICA4IDEwOjQyIHBvd2VyCistci0tci0tci0tIDEgcm9vdCByb290IDQwOTYgRmViICA4IDEwOjQyIHRpbWUKKy1yLS1yLS1yLS0gMSByb290IHJvb3QgNDA5NiBGZWIgIDggMTA6NDIgdXNhZ2UKKworL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1MC9jcHVpZGxlL3N0YXRlMzoKK3RvdGFsIDAKKy1yLS1yLS1yLS0gMSByb290IHJvb3QgNDA5NiBGZWIgIDggMTA6NDIgZGVzYworLXJ3LXItLXItLSAxIHJvb3Qgcm9vdCA0MDk2IEZlYiAgOCAxMDo0MiBkaXNhYmxlCistci0tci0tci0tIDEgcm9vdCByb290IDQwOTYgRmViICA4IDEwOjQyIGxhdGVuY3kKKy1yLS1yLS1yLS0gMSByb290IHJvb3QgNDA5NiBGZWIgIDggMTA6NDIgbmFtZQorLXItLXItLXItLSAxIHJvb3Qgcm9vdCA0MDk2IEZlYiAgOCAxMDo0MiBwb3dlcgorLXItLXItLXItLSAxIHJvb3Qgcm9vdCA0MDk2IEZlYiAgOCAxMDo0MiB0aW1lCistci0tci0tci0tIDEgcm9vdCByb290IDQwOTYgRmViICA4IDEwOjQyIHVzYWdlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKKyogZGVzYyA6IFNtYWxsIGRlc2NyaXB0aW9uIGFib3V0IHRoZSBpZGxlIHN0YXRlIChzdHJpbmcpCisqIGRpc2FibGUgOiBPcHRpb24gdG8gZGlzYWJsZSB0aGlzIGlkbGUgc3RhdGUgKGJvb2wpIC0+IHNlZSBub3RlIGJlbG93CisqIGxhdGVuY3kgOiBMYXRlbmN5IHRvIGV4aXQgb3V0IG9mIHRoaXMgaWRsZSBzdGF0ZSAoaW4gbWljcm9zZWNvbmRzKQorKiBuYW1lIDogTmFtZSBvZiB0aGUgaWRsZSBzdGF0ZSAoc3RyaW5nKQorKiBwb3dlciA6IFBvd2VyIGNvbnN1bWVkIHdoaWxlIGluIHRoaXMgaWRsZSBzdGF0ZSAoaW4gbWlsbGl3YXR0cykKKyogdGltZSA6IFRvdGFsIHRpbWUgc3BlbnQgaW4gdGhpcyBpZGxlIHN0YXRlIChpbiBtaWNyb3NlY29uZHMpCisqIHVzYWdlIDogTnVtYmVyIG9mIHRpbWVzIHRoaXMgc3RhdGUgd2FzIGVudGVyZWQgKGNvdW50KQorCitOb3RlOgorVGhlIGJlaGF2aW9yIGFuZCB0aGUgZWZmZWN0IG9mIHRoZSBkaXNhYmxlIHZhcmlhYmxlIGRlcGVuZHMgb24gdGhlCitpbXBsZW1lbnRhdGlvbiBvZiBhIHBhcnRpY3VsYXIgZ292ZXJub3IuIEluIHRoZSBsYWRkZXIgZ292ZXJub3IsIGZvcgorZXhhbXBsZSwgaXQgaXMgbm90IGNvaGVyZW50LCBpLmUuIGlmIG9uZSBpcyBkaXNhYmxpbmcgYSBsaWdodCBzdGF0ZSwKK3RoZW4gYWxsIGRlZXBlciBzdGF0ZXMgYXJlIGRpc2FibGVkIGFzIHdlbGwsIGJ1dCB0aGUgZGlzYWJsZSB2YXJpYWJsZQorZG9lcyBub3QgcmVmbGVjdCBpdC4gTGlrZXdpc2UsIGlmIG9uZSBlbmFibGVzIGEgZGVlcCBzdGF0ZSBidXQgYSBsaWdodGVyCitzdGF0ZSBzdGlsbCBpcyBkaXNhYmxlZCwgdGhlbiB0aGlzIGhhcyBubyBlZmZlY3QuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2NwdXRvcG9sb2d5LnR4dCBiL0RvY3VtZW50YXRpb24vY3B1dG9wb2xvZ3kudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyYjFiMjUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2NwdXRvcG9sb2d5LnR4dApAQCAtMCwwICsxLDEyOCBAQAorCitFeHBvcnQgQ1BVIHRvcG9sb2d5IGluZm8gdmlhIHN5c2ZzLiBJdGVtcyAoYXR0cmlidXRlcykgYXJlIHNpbWlsYXIKK3RvIC9wcm9jL2NwdWluZm8gb3V0cHV0IG9mIHNvbWUgYXJjaGl0ZWN0dXJlczoKKworMSkgL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1WC90b3BvbG9neS9waHlzaWNhbF9wYWNrYWdlX2lkOgorCisJcGh5c2ljYWwgcGFja2FnZSBpZCBvZiBjcHVYLiBUeXBpY2FsbHkgY29ycmVzcG9uZHMgdG8gYSBwaHlzaWNhbAorCXNvY2tldCBudW1iZXIsIGJ1dCB0aGUgYWN0dWFsIHZhbHVlIGlzIGFyY2hpdGVjdHVyZSBhbmQgcGxhdGZvcm0KKwlkZXBlbmRlbnQuCisKKzIpIC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdVgvdG9wb2xvZ3kvY29yZV9pZDoKKworCXRoZSBDUFUgY29yZSBJRCBvZiBjcHVYLiBUeXBpY2FsbHkgaXQgaXMgdGhlIGhhcmR3YXJlIHBsYXRmb3JtJ3MKKwlpZGVudGlmaWVyIChyYXRoZXIgdGhhbiB0aGUga2VybmVsJ3MpLiAgVGhlIGFjdHVhbCB2YWx1ZSBpcworCWFyY2hpdGVjdHVyZSBhbmQgcGxhdGZvcm0gZGVwZW5kZW50LgorCiszKSAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHVYL3RvcG9sb2d5L2Jvb2tfaWQ6CisKKwl0aGUgYm9vayBJRCBvZiBjcHVYLiBUeXBpY2FsbHkgaXQgaXMgdGhlIGhhcmR3YXJlIHBsYXRmb3JtJ3MKKwlpZGVudGlmaWVyIChyYXRoZXIgdGhhbiB0aGUga2VybmVsJ3MpLglUaGUgYWN0dWFsIHZhbHVlIGlzCisJYXJjaGl0ZWN0dXJlIGFuZCBwbGF0Zm9ybSBkZXBlbmRlbnQuCisKKzQpIC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdVgvdG9wb2xvZ3kvdGhyZWFkX3NpYmxpbmdzOgorCisJaW50ZXJuYWwga2VybmVsIG1hcCBvZiBjcHVYJ3MgaGFyZHdhcmUgdGhyZWFkcyB3aXRoaW4gdGhlIHNhbWUKKwljb3JlIGFzIGNwdVguCisKKzUpIC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdVgvdG9wb2xvZ3kvdGhyZWFkX3NpYmxpbmdzX2xpc3Q6CisKKwlodW1hbi1yZWFkYWJsZSBsaXN0IG9mIGNwdVgncyBoYXJkd2FyZSB0aHJlYWRzIHdpdGhpbiB0aGUgc2FtZQorCWNvcmUgYXMgY3B1WC4KKworNikgL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1WC90b3BvbG9neS9jb3JlX3NpYmxpbmdzOgorCisJaW50ZXJuYWwga2VybmVsIG1hcCBvZiBjcHVYJ3MgaGFyZHdhcmUgdGhyZWFkcyB3aXRoaW4gdGhlIHNhbWUKKwlwaHlzaWNhbF9wYWNrYWdlX2lkLgorCis3KSAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHVYL3RvcG9sb2d5L2NvcmVfc2libGluZ3NfbGlzdDoKKworCWh1bWFuLXJlYWRhYmxlIGxpc3Qgb2YgY3B1WCdzIGhhcmR3YXJlIHRocmVhZHMgd2l0aGluIHRoZSBzYW1lCisJcGh5c2ljYWxfcGFja2FnZV9pZC4KKworOCkgL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1WC90b3BvbG9neS9ib29rX3NpYmxpbmdzOgorCisJaW50ZXJuYWwga2VybmVsIG1hcCBvZiBjcHVYJ3MgaGFyZHdhcmUgdGhyZWFkcyB3aXRoaW4gdGhlIHNhbWUKKwlib29rX2lkLgorCis5KSAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHVYL3RvcG9sb2d5L2Jvb2tfc2libGluZ3NfbGlzdDoKKworCWh1bWFuLXJlYWRhYmxlIGxpc3Qgb2YgY3B1WCdzIGhhcmR3YXJlIHRocmVhZHMgd2l0aGluIHRoZSBzYW1lCisJYm9va19pZC4KKworVG8gaW1wbGVtZW50IGl0IGluIGFuIGFyY2hpdGVjdHVyZS1uZXV0cmFsIHdheSwgYSBuZXcgc291cmNlIGZpbGUsCitkcml2ZXJzL2Jhc2UvdG9wb2xvZ3kuYywgaXMgdG8gZXhwb3J0IHRoZSA2IG9yIDkgYXR0cmlidXRlcy4gVGhlIHRocmVlIGJvb2sKK3JlbGF0ZWQgc3lzZnMgZmlsZXMgd2lsbCBvbmx5IGJlIGNyZWF0ZWQgaWYgQ09ORklHX1NDSEVEX0JPT0sgaXMgc2VsZWN0ZWQuCisKK0ZvciBhbiBhcmNoaXRlY3R1cmUgdG8gc3VwcG9ydCB0aGlzIGZlYXR1cmUsIGl0IG11c3QgZGVmaW5lIHNvbWUgb2YKK3RoZXNlIG1hY3JvcyBpbiBpbmNsdWRlL2FzbS1YWFgvdG9wb2xvZ3kuaDoKKyNkZWZpbmUgdG9wb2xvZ3lfcGh5c2ljYWxfcGFja2FnZV9pZChjcHUpCisjZGVmaW5lIHRvcG9sb2d5X2NvcmVfaWQoY3B1KQorI2RlZmluZSB0b3BvbG9neV9ib29rX2lkKGNwdSkKKyNkZWZpbmUgdG9wb2xvZ3lfc2libGluZ19jcHVtYXNrKGNwdSkKKyNkZWZpbmUgdG9wb2xvZ3lfY29yZV9jcHVtYXNrKGNwdSkKKyNkZWZpbmUgdG9wb2xvZ3lfYm9va19jcHVtYXNrKGNwdSkKKworVGhlIHR5cGUgb2YgKipfaWQgbWFjcm9zIGlzIGludC4KK1RoZSB0eXBlIG9mICoqX2NwdW1hc2sgbWFjcm9zIGlzIChjb25zdCkgc3RydWN0IGNwdW1hc2sgKi4gVGhlIGxhdHRlcgorY29ycmVzcG9uZCB3aXRoIGFwcHJvcHJpYXRlICoqX3NpYmxpbmdzIHN5c2ZzIGF0dHJpYnV0ZXMgKGV4Y2VwdCBmb3IKK3RvcG9sb2d5X3NpYmxpbmdfY3B1bWFzaygpIHdoaWNoIGNvcnJlc3BvbmRzIHdpdGggdGhyZWFkX3NpYmxpbmdzKS4KKworVG8gYmUgY29uc2lzdGVudCBvbiBhbGwgYXJjaGl0ZWN0dXJlcywgaW5jbHVkZS9saW51eC90b3BvbG9neS5oCitwcm92aWRlcyBkZWZhdWx0IGRlZmluaXRpb25zIGZvciBhbnkgb2YgdGhlIGFib3ZlIG1hY3JvcyB0aGF0IGFyZQorbm90IGRlZmluZWQgYnkgaW5jbHVkZS9hc20tWFhYL3RvcG9sb2d5Lmg6CisxKSBwaHlzaWNhbF9wYWNrYWdlX2lkOiAtMQorMikgY29yZV9pZDogMAorMykgc2libGluZ19jcHVtYXNrOiBqdXN0IHRoZSBnaXZlbiBDUFUKKzQpIGNvcmVfY3B1bWFzazoganVzdCB0aGUgZ2l2ZW4gQ1BVCisKK0ZvciBhcmNoaXRlY3R1cmVzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBib29rcyAoQ09ORklHX1NDSEVEX0JPT0spIHRoZXJlIGFyZSBubworZGVmYXVsdCBkZWZpbml0aW9ucyBmb3IgdG9wb2xvZ3lfYm9va19pZCgpIGFuZCB0b3BvbG9neV9ib29rX2NwdW1hc2soKS4KKworQWRkaXRpb25hbGx5LCBDUFUgdG9wb2xvZ3kgaW5mb3JtYXRpb24gaXMgcHJvdmlkZWQgdW5kZXIKKy9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1IGFuZCBpbmNsdWRlcyB0aGVzZSBmaWxlcy4gIFRoZSBpbnRlcm5hbAorc291cmNlIGZvciB0aGUgb3V0cHV0IGlzIGluIGJyYWNrZXRzICgiW10iKS4KKworICAgIGtlcm5lbF9tYXg6IHRoZSBtYXhpbXVtIENQVSBpbmRleCBhbGxvd2VkIGJ5IHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4KKwkJW05SX0NQVVMtMV0KKworICAgIG9mZmxpbmU6CUNQVXMgdGhhdCBhcmUgbm90IG9ubGluZSBiZWNhdXNlIHRoZXkgaGF2ZSBiZWVuCisJCUhPVFBMVUdHRUQgb2ZmIChzZWUgY3B1LWhvdHBsdWcudHh0KSBvciBleGNlZWQgdGhlIGxpbWl0CisJCW9mIENQVXMgYWxsb3dlZCBieSB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gKGtlcm5lbF9tYXgKKwkJYWJvdmUpLiBbfmNwdV9vbmxpbmVfbWFzayArIGNwdXMgPj0gTlJfQ1BVU10KKworICAgIG9ubGluZToJQ1BVcyB0aGF0IGFyZSBvbmxpbmUgYW5kIGJlaW5nIHNjaGVkdWxlZCBbY3B1X29ubGluZV9tYXNrXQorCisgICAgcG9zc2libGU6CUNQVXMgdGhhdCBoYXZlIGJlZW4gYWxsb2NhdGVkIHJlc291cmNlcyBhbmQgY2FuIGJlCisJCWJyb3VnaHQgb25saW5lIGlmIHRoZXkgYXJlIHByZXNlbnQuIFtjcHVfcG9zc2libGVfbWFza10KKworICAgIHByZXNlbnQ6CUNQVXMgdGhhdCBoYXZlIGJlZW4gaWRlbnRpZmllZCBhcyBiZWluZyBwcmVzZW50IGluIHRoZQorCQlzeXN0ZW0uIFtjcHVfcHJlc2VudF9tYXNrXQorCitUaGUgZm9ybWF0IGZvciB0aGUgYWJvdmUgb3V0cHV0IGlzIGNvbXBhdGlibGUgd2l0aCBjcHVsaXN0X3BhcnNlKCkKK1tzZWUgPGxpbnV4L2NwdW1hc2suaD5dLiAgU29tZSBleGFtcGxlcyBmb2xsb3cuCisKK0luIHRoaXMgZXhhbXBsZSwgdGhlcmUgYXJlIDY0IENQVXMgaW4gdGhlIHN5c3RlbSBidXQgY3B1cyAzMi02MyBleGNlZWQKK3RoZSBrZXJuZWwgbWF4IHdoaWNoIGlzIGxpbWl0ZWQgdG8gMC4uMzEgYnkgdGhlIE5SX0NQVVMgY29uZmlnIG9wdGlvbgorYmVpbmcgMzIuICBOb3RlIGFsc28gdGhhdCBDUFVzIDIgYW5kIDQtMzEgYXJlIG5vdCBvbmxpbmUgYnV0IGNvdWxkIGJlCiticm91Z2h0IG9ubGluZSBhcyB0aGV5IGFyZSBib3RoIHByZXNlbnQgYW5kIHBvc3NpYmxlLgorCisgICAgIGtlcm5lbF9tYXg6IDMxCisgICAgICAgIG9mZmxpbmU6IDIsNC0zMSwzMi02MworICAgICAgICAgb25saW5lOiAwLTEsMworICAgICAgIHBvc3NpYmxlOiAwLTMxCisgICAgICAgIHByZXNlbnQ6IDAtMzEKKworSW4gdGhpcyBleGFtcGxlLCB0aGUgTlJfQ1BVUyBjb25maWcgb3B0aW9uIGlzIDEyOCwgYnV0IHRoZSBrZXJuZWwgd2FzCitzdGFydGVkIHdpdGggcG9zc2libGVfY3B1cz0xNDQuICBUaGVyZSBhcmUgNCBDUFVzIGluIHRoZSBzeXN0ZW0gYW5kIGNwdTIKK3dhcyBtYW51YWxseSB0YWtlbiBvZmZsaW5lIChhbmQgaXMgdGhlIG9ubHkgQ1BVIHRoYXQgY2FuIGJlIGJyb3VnaHQKK29ubGluZS4pCisKKyAgICAga2VybmVsX21heDogMTI3CisgICAgICAgIG9mZmxpbmU6IDIsNC0xMjcsMTI4LTE0MworICAgICAgICAgb25saW5lOiAwLTEsMworICAgICAgIHBvc3NpYmxlOiAwLTEyNworICAgICAgICBwcmVzZW50OiAwLTMKKworU2VlIGNwdS1ob3RwbHVnLnR4dCBmb3IgdGhlIHBvc3NpYmxlX2NwdXM9TlVNIGtlcm5lbCBzdGFydCBwYXJhbWV0ZXIKK2FzIHdlbGwgYXMgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgdmFyaW91cyBjcHVtYXNrcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY3JjMzIudHh0IGIvRG9jdW1lbnRhdGlvbi9jcmMzMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA4YTdkZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vY3JjMzIudHh0CkBAIC0wLDAgKzEsMTgyIEBACitBIGJyaWVmIENSQyB0dXRvcmlhbC4KKworQSBDUkMgaXMgYSBsb25nLWRpdmlzaW9uIHJlbWFpbmRlci4gIFlvdSBhZGQgdGhlIENSQyB0byB0aGUgbWVzc2FnZSwKK2FuZCB0aGUgd2hvbGUgdGhpbmcgKG1lc3NhZ2UrQ1JDKSBpcyBhIG11bHRpcGxlIG9mIHRoZSBnaXZlbgorQ1JDIHBvbHlub21pYWwuICBUbyBjaGVjayB0aGUgQ1JDLCB5b3UgY2FuIGVpdGhlciBjaGVjayB0aGF0IHRoZQorQ1JDIG1hdGNoZXMgdGhlIHJlY29tcHV0ZWQgdmFsdWUsICpvciogeW91IGNhbiBjaGVjayB0aGF0IHRoZQorcmVtYWluZGVyIGNvbXB1dGVkIG9uIHRoZSBtZXNzYWdlK0NSQyBpcyAwLiAgVGhpcyBsYXR0ZXIgYXBwcm9hY2gKK2lzIHVzZWQgYnkgYSBsb3Qgb2YgaGFyZHdhcmUgaW1wbGVtZW50YXRpb25zLCBhbmQgaXMgd2h5IHNvIG1hbnkKK3Byb3RvY29scyBwdXQgdGhlIGVuZC1vZi1mcmFtZSBmbGFnIGFmdGVyIHRoZSBDUkMuCisKK0l0J3MgYWN0dWFsbHkgdGhlIHNhbWUgbG9uZyBkaXZpc2lvbiB5b3UgbGVhcm5lZCBpbiBzY2hvb2wsIGV4Y2VwdCB0aGF0CistIFdlJ3JlIHdvcmtpbmcgaW4gYmluYXJ5LCBzbyB0aGUgZGlnaXRzIGFyZSBvbmx5IDAgYW5kIDEsIGFuZAorLSBXaGVuIGRpdmlkaW5nIHBvbHlub21pYWxzLCB0aGVyZSBhcmUgbm8gY2Fycmllcy4gIFJhdGhlciB0aGFuIGFkZCBhbmQKKyAgc3VidHJhY3QsIHdlIGp1c3QgeG9yLiAgVGh1cywgd2UgdGVuZCB0byBnZXQgYSBiaXQgc2xvcHB5IGFib3V0CisgIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYWRkaW5nIGFuZCBzdWJ0cmFjdGluZy4KKworTGlrZSBhbGwgZGl2aXNpb24sIHRoZSByZW1haW5kZXIgaXMgYWx3YXlzIHNtYWxsZXIgdGhhbiB0aGUgZGl2aXNvci4KK1RvIHByb2R1Y2UgYSAzMi1iaXQgQ1JDLCB0aGUgZGl2aXNvciBpcyBhY3R1YWxseSBhIDMzLWJpdCBDUkMgcG9seW5vbWlhbC4KK1NpbmNlIGl0J3MgMzMgYml0cyBsb25nLCBiaXQgMzIgaXMgYWx3YXlzIGdvaW5nIHRvIGJlIHNldCwgc28gdXN1YWxseSB0aGUKK0NSQyBpcyB3cml0dGVuIGluIGhleCB3aXRoIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBvbWl0dGVkLiAgKElmIHlvdSdyZQorZmFtaWxpYXIgd2l0aCB0aGUgSUVFRSA3NTQgZmxvYXRpbmctcG9pbnQgZm9ybWF0LCBpdCdzIHRoZSBzYW1lIGlkZWEuKQorCitOb3RlIHRoYXQgYSBDUkMgaXMgY29tcHV0ZWQgb3ZlciBhIHN0cmluZyBvZiAqYml0cyosIHNvIHlvdSBoYXZlCit0byBkZWNpZGUgb24gdGhlIGVuZGlhbm5lc3Mgb2YgdGhlIGJpdHMgd2l0aGluIGVhY2ggYnl0ZS4gIFRvIGdldAordGhlIGJlc3QgZXJyb3ItZGV0ZWN0aW5nIHByb3BlcnRpZXMsIHRoaXMgc2hvdWxkIGNvcnJlc3BvbmQgdG8gdGhlCitvcmRlciB0aGV5J3JlIGFjdHVhbGx5IHNlbnQuICBGb3IgZXhhbXBsZSwgc3RhbmRhcmQgUlMtMjMyIHNlcmlhbCBpcworbGl0dGxlLWVuZGlhbjsgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IChzb21ldGltZXMgdXNlZCBmb3IgcGFyaXR5KQoraXMgc2VudCBsYXN0LiAgQW5kIHdoZW4gYXBwZW5kaW5nIGEgQ1JDIHdvcmQgdG8gYSBtZXNzYWdlLCB5b3Ugc2hvdWxkCitkbyBpdCBpbiB0aGUgcmlnaHQgb3JkZXIsIG1hdGNoaW5nIHRoZSBlbmRpYW5uZXNzLgorCitKdXN0IGxpa2Ugd2l0aCBvcmRpbmFyeSBkaXZpc2lvbiwgeW91IHByb2NlZWQgb25lIGRpZ2l0IChiaXQpIGF0IGEgdGltZS4KK0VhY2ggc3RlcCBvZiB0aGUgZGl2aXNpb24geW91IHRha2Ugb25lIG1vcmUgZGlnaXQgKGJpdCkgb2YgdGhlIGRpdmlkZW5kCithbmQgYXBwZW5kIGl0IHRvIHRoZSBjdXJyZW50IHJlbWFpbmRlci4gIFRoZW4geW91IGZpZ3VyZSBvdXQgdGhlCithcHByb3ByaWF0ZSBtdWx0aXBsZSBvZiB0aGUgZGl2aXNvciB0byBzdWJ0cmFjdCB0byBiZWluZyB0aGUgcmVtYWluZGVyCitiYWNrIGludG8gcmFuZ2UuICBJbiBiaW5hcnksIHRoaXMgaXMgZWFzeSAtIGl0IGhhcyB0byBiZSBlaXRoZXIgMCBvciAxLAorYW5kIHRvIG1ha2UgdGhlIFhPUiBjYW5jZWwsIGl0J3MganVzdCBhIGNvcHkgb2YgYml0IDMyIG9mIHRoZSByZW1haW5kZXIuCisKK1doZW4gY29tcHV0aW5nIGEgQ1JDLCB3ZSBkb24ndCBjYXJlIGFib3V0IHRoZSBxdW90aWVudCwgc28gd2UgY2FuCit0aHJvdyB0aGUgcXVvdGllbnQgYml0IGF3YXksIGJ1dCBzdWJ0cmFjdCB0aGUgYXBwcm9wcmlhdGUgbXVsdGlwbGUgb2YKK3RoZSBwb2x5bm9taWFsIGZyb20gdGhlIHJlbWFpbmRlciBhbmQgd2UncmUgYmFjayB0byB3aGVyZSB3ZSBzdGFydGVkLAorcmVhZHkgdG8gcHJvY2VzcyB0aGUgbmV4dCBiaXQuCisKK0EgYmlnLWVuZGlhbiBDUkMgd3JpdHRlbiB0aGlzIHdheSB3b3VsZCBiZSBjb2RlZCBsaWtlOgorZm9yIChpID0gMDsgaSA8IGlucHV0X2JpdHM7IGkrKykgeworCW11bHRpcGxlID0gcmVtYWluZGVyICYgMHg4MDAwMDAwMCA/IENSQ1BPTFkgOiAwOworCXJlbWFpbmRlciA9IChyZW1haW5kZXIgPDwgMSB8IG5leHRfaW5wdXRfYml0KCkpIF4gbXVsdGlwbGU7Cit9CisKK05vdGljZSBob3csIHRvIGdldCBhdCBiaXQgMzIgb2YgdGhlIHNoaWZ0ZWQgcmVtYWluZGVyLCB3ZSBsb29rCithdCBiaXQgMzEgb2YgdGhlIHJlbWFpbmRlciAqYmVmb3JlKiBzaGlmdGluZyBpdC4KKworQnV0IGFsc28gbm90aWNlIGhvdyB0aGUgbmV4dF9pbnB1dF9iaXQoKSBiaXRzIHdlJ3JlIHNoaWZ0aW5nIGludG8KK3RoZSByZW1haW5kZXIgZG9uJ3QgYWN0dWFsbHkgYWZmZWN0IGFueSBkZWNpc2lvbi1tYWtpbmcgdW50aWwKKzMyIGJpdHMgbGF0ZXIuICBUaHVzLCB0aGUgZmlyc3QgMzIgY3ljbGVzIG9mIHRoaXMgYXJlIHByZXR0eSBib3JpbmcuCitBbHNvLCB0byBhZGQgdGhlIENSQyB0byBhIG1lc3NhZ2UsIHdlIG5lZWQgYSAzMi1iaXQtbG9uZyBob2xlIGZvciBpdCBhdAordGhlIGVuZCwgc28gd2UgaGF2ZSB0byBhZGQgMzIgZXh0cmEgY3ljbGVzIHNoaWZ0aW5nIGluIHplcm9zIGF0IHRoZQorZW5kIG9mIGV2ZXJ5IG1lc3NhZ2UsCisKK1RoZXNlIGRldGFpbHMgbGVhZCB0byBhIHN0YW5kYXJkIHRyaWNrOiByZWFycmFuZ2UgbWVyZ2luZyBpbiB0aGUKK25leHRfaW5wdXRfYml0KCkgdW50aWwgdGhlIG1vbWVudCBpdCdzIG5lZWRlZC4gIFRoZW4gdGhlIGZpcnN0IDMyIGN5Y2xlcworY2FuIGJlIHByZWNvbXB1dGVkLCBhbmQgbWVyZ2luZyBpbiB0aGUgZmluYWwgMzIgemVybyBiaXRzIHRvIG1ha2Ugcm9vbQorZm9yIHRoZSBDUkMgY2FuIGJlIHNraXBwZWQgZW50aXJlbHkuICBUaGlzIGNoYW5nZXMgdGhlIGNvZGUgdG86CisKK2ZvciAoaSA9IDA7IGkgPCBpbnB1dF9iaXRzOyBpKyspIHsKKwlyZW1haW5kZXIgXj0gbmV4dF9pbnB1dF9iaXQoKSA8PCAzMTsKKwltdWx0aXBsZSA9IChyZW1haW5kZXIgJiAweDgwMDAwMDAwKSA/IENSQ1BPTFkgOiAwOworCXJlbWFpbmRlciA9IChyZW1haW5kZXIgPDwgMSkgXiBtdWx0aXBsZTsKK30KKworV2l0aCB0aGlzIG9wdGltaXphdGlvbiwgdGhlIGxpdHRsZS1lbmRpYW4gY29kZSBpcyBwYXJ0aWN1bGFybHkgc2ltcGxlOgorZm9yIChpID0gMDsgaSA8IGlucHV0X2JpdHM7IGkrKykgeworCXJlbWFpbmRlciBePSBuZXh0X2lucHV0X2JpdCgpOworCW11bHRpcGxlID0gKHJlbWFpbmRlciAmIDEpID8gQ1JDUE9MWSA6IDA7CisJcmVtYWluZGVyID0gKHJlbWFpbmRlciA+PiAxKSBeIG11bHRpcGxlOworfQorCitUaGUgbW9zdCBzaWduaWZpY2FudCBjb2VmZmljaWVudCBvZiB0aGUgcmVtYWluZGVyIHBvbHlub21pYWwgaXMgc3RvcmVkCitpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IG9mIHRoZSBiaW5hcnkgInJlbWFpbmRlciIgdmFyaWFibGUuCitUaGUgb3RoZXIgZGV0YWlscyBvZiBlbmRpYW5uZXNzIGhhdmUgYmVlbiBoaWRkZW4gaW4gQ1JDUE9MWSAod2hpY2ggbXVzdAorYmUgYml0LXJldmVyc2VkKSBhbmQgbmV4dF9pbnB1dF9iaXQoKS4KKworQXMgbG9uZyBhcyBuZXh0X2lucHV0X2JpdCBpcyByZXR1cm5pbmcgdGhlIGJpdHMgaW4gYSBzZW5zaWJsZSBvcmRlciwgd2UgZG9uJ3QKKypoYXZlKiB0byB3YWl0IHVudGlsIHRoZSBsYXN0IHBvc3NpYmxlIG1vbWVudCB0byBtZXJnZSBpbiBhZGRpdGlvbmFsIGJpdHMuCitXZSBjYW4gZG8gaXQgOCBiaXRzIGF0IGEgdGltZSByYXRoZXIgdGhhbiAxIGJpdCBhdCBhIHRpbWU6Citmb3IgKGkgPSAwOyBpIDwgaW5wdXRfYnl0ZXM7IGkrKykgeworCXJlbWFpbmRlciBePSBuZXh0X2lucHV0X2J5dGUoKSA8PCAyNDsKKwlmb3IgKGogPSAwOyBqIDwgODsgaisrKSB7CisJCW11bHRpcGxlID0gKHJlbWFpbmRlciAmIDB4ODAwMDAwMDApID8gQ1JDUE9MWSA6IDA7CisJCXJlbWFpbmRlciA9IChyZW1haW5kZXIgPDwgMSkgXiBtdWx0aXBsZTsKKwl9Cit9CisKK09yIGluIGxpdHRsZS1lbmRpYW46Citmb3IgKGkgPSAwOyBpIDwgaW5wdXRfYnl0ZXM7IGkrKykgeworCXJlbWFpbmRlciBePSBuZXh0X2lucHV0X2J5dGUoKTsKKwlmb3IgKGogPSAwOyBqIDwgODsgaisrKSB7CisJCW11bHRpcGxlID0gKHJlbWFpbmRlciAmIDEpID8gQ1JDUE9MWSA6IDA7CisJCXJlbWFpbmRlciA9IChyZW1haW5kZXIgPj4gMSkgXiBtdWx0aXBsZTsKKwl9Cit9CisKK0lmIHRoZSBpbnB1dCBpcyBhIG11bHRpcGxlIG9mIDMyIGJpdHMsIHlvdSBjYW4gZXZlbiBYT1IgaW4gYSAzMi1iaXQKK3dvcmQgYXQgYSB0aW1lIGFuZCBpbmNyZWFzZSB0aGUgaW5uZXIgbG9vcCBjb3VudCB0byAzMi4KKworWW91IGNhbiBhbHNvIG1peCBhbmQgbWF0Y2ggdGhlIHR3byBsb29wIHN0eWxlcywgZm9yIGV4YW1wbGUgZG9pbmcgdGhlCitidWxrIG9mIGEgbWVzc2FnZSBieXRlLWF0LWEtdGltZSBhbmQgYWRkaW5nIGJpdC1hdC1hLXRpbWUgcHJvY2Vzc2luZworZm9yIGFueSBmcmFjdGlvbmFsIGJ5dGVzIGF0IHRoZSBlbmQuCisKK1RvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGNvbmRpdGlvbmFsIGJyYW5jaGVzLCBzb2Z0d2FyZSBjb21tb25seSB1c2VzCit0aGUgYnl0ZS1hdC1hLXRpbWUgdGFibGUgbWV0aG9kLCBwb3B1bGFyaXplZCBieSBEaWxpcCBWLiBTYXJ3YXRlLAorIkNvbXB1dGF0aW9uIG9mIEN5Y2xpYyBSZWR1bmRhbmN5IENoZWNrcyB2aWEgVGFibGUgTG9vay1VcCIsIENvbW0uIEFDTQordi4zMSBuby44IChBdWd1c3QgMTk5OCkgcC4gMTAwOC0xMDEzLgorCitIZXJlLCByYXRoZXIgdGhhbiBqdXN0IHNoaWZ0aW5nIG9uZSBiaXQgb2YgdGhlIHJlbWFpbmRlciB0byBkZWNpZGUKK2luIHRoZSBjb3JyZWN0IG11bHRpcGxlIHRvIHN1YnRyYWN0LCB3ZSBjYW4gc2hpZnQgYSBieXRlIGF0IGEgdGltZS4KK1RoaXMgcHJvZHVjZXMgYSA0MC1iaXQgKHJhdGhlciB0aGFuIGEgMzMtYml0KSBpbnRlcm1lZGlhdGUgcmVtYWluZGVyLAorYW5kIHRoZSBjb3JyZWN0IG11bHRpcGxlIG9mIHRoZSBwb2x5bm9taWFsIHRvIHN1YnRyYWN0IGlzIGZvdW5kIHVzaW5nCithIDI1Ni1lbnRyeSBsb29rdXAgdGFibGUgaW5kZXhlZCBieSB0aGUgaGlnaCA4IGJpdHMuCisKKyhUaGUgdGFibGUgZW50cmllcyBhcmUgc2ltcGx5IHRoZSBDUkMtMzIgb2YgdGhlIGdpdmVuIG9uZS1ieXRlIG1lc3NhZ2VzLikKKworV2hlbiBzcGFjZSBpcyBtb3JlIGNvbnN0cmFpbmVkLCBzbWFsbGVyIHRhYmxlcyBjYW4gYmUgdXNlZCwgZS5nLiB0d28KKzQtYml0IHNoaWZ0cyBmb2xsb3dlZCBieSBhIGxvb2t1cCBpbiBhIDE2LWVudHJ5IHRhYmxlLgorCitJdCBpcyBub3QgcHJhY3RpY2FsIHRvIHByb2Nlc3MgbXVjaCBtb3JlIHRoYW4gOCBiaXRzIGF0IGEgdGltZSB1c2luZyB0aGlzCit0ZWNobmlxdWUsIGJlY2F1c2UgdGFibGVzIGxhcmdlciB0aGFuIDI1NiBlbnRyaWVzIHVzZSB0b28gbXVjaCBtZW1vcnkgYW5kLAorbW9yZSBpbXBvcnRhbnRseSwgdG9vIG11Y2ggb2YgdGhlIEwxIGNhY2hlLgorCitUbyBnZXQgaGlnaGVyIHNvZnR3YXJlIHBlcmZvcm1hbmNlLCBhICJzbGljaW5nIiB0ZWNobmlxdWUgY2FuIGJlIHVzZWQuCitTZWUgIkhpZ2ggT2N0YW5lIENSQyBHZW5lcmF0aW9uIHdpdGggdGhlIEludGVsIFNsaWNpbmctYnktOCBBbGdvcml0aG0iLAorZnRwOi8vZG93bmxvYWQuaW50ZWwuY29tL3RlY2hub2xvZ3kvY29tbXMvcGVyZm5ldC9kb3dubG9hZC9zbGljaW5nLWJ5LTgucGRmCisKK1RoaXMgZG9lcyBub3QgY2hhbmdlIHRoZSBudW1iZXIgb2YgdGFibGUgbG9va3VwcywgYnV0IGRvZXMgaW5jcmVhc2UKK3RoZSBwYXJhbGxlbGlzbS4gIFdpdGggdGhlIGNsYXNzaWMgU2Fyd2F0ZSBhbGdvcml0aG0sIGVhY2ggdGFibGUgbG9va3VwCittdXN0IGJlIGNvbXBsZXRlZCBiZWZvcmUgdGhlIGluZGV4IG9mIHRoZSBuZXh0IGNhbiBiZSBjb21wdXRlZC4KKworQSAic2xpY2luZyBieSAyIiB0ZWNobmlxdWUgd291bGQgc2hpZnQgdGhlIHJlbWFpbmRlciAxNiBiaXRzIGF0IGEgdGltZSwKK3Byb2R1Y2luZyBhIDQ4LWJpdCBpbnRlcm1lZGlhdGUgcmVtYWluZGVyLiAgUmF0aGVyIHRoYW4gZG9pbmcgYSBzaW5nbGUKK2xvb2t1cCBpbiBhIDY1NTM2LWVudHJ5IHRhYmxlLCB0aGUgdHdvIGhpZ2ggYnl0ZXMgYXJlIGxvb2tlZCB1cCBpbgordHdvIGRpZmZlcmVudCAyNTYtZW50cnkgdGFibGVzLiAgRWFjaCBjb250YWlucyB0aGUgcmVtYWluZGVyIHJlcXVpcmVkCit0byBjYW5jZWwgb3V0IHRoZSBjb3JyZXNwb25kaW5nIGJ5dGUuICBUaGUgdGFibGVzIGFyZSBkaWZmZXJlbnQgYmVjYXVzZSB0aGUKK3BvbHlub21pYWxzIHRvIGNhbmNlbCBhcmUgZGlmZmVyZW50LiAgT25lIGhhcyBub24temVybyBjb2VmZmljaWVudHMgZnJvbQoreF4zMiB0byB4XjM5LCB3aGlsZSB0aGUgb3RoZXIgZ29lcyBmcm9tIHheNDAgdG8geF40Ny4KKworU2luY2UgbW9kZXJuIHByb2Nlc3NvcnMgY2FuIGhhbmRsZSBtYW55IHBhcmFsbGVsIG1lbW9yeSBvcGVyYXRpb25zLCB0aGlzCit0YWtlcyBiYXJlbHkgbG9uZ2VyIHRoYW4gYSBzaW5nbGUgdGFibGUgbG9vay11cCBhbmQgdGh1cyBwZXJmb3JtcyBhbG1vc3QKK3R3aWNlIGFzIGZhc3QgYXMgdGhlIGJhc2ljIFNhcndhdGUgYWxnb3JpdGhtLgorCitUaGlzIGNhbiBiZSBleHRlbmRlZCB0byAic2xpY2luZyBieSA0IiB1c2luZyA0IDI1Ni1lbnRyeSB0YWJsZXMuCitFYWNoIHN0ZXAsIDMyIGJpdHMgb2YgZGF0YSBpcyBmZXRjaGVkLCBYT1JlZCB3aXRoIHRoZSBDUkMsIGFuZCB0aGUgcmVzdWx0Citicm9rZW4gaW50byBieXRlcyBhbmQgbG9va2VkIHVwIGluIHRoZSB0YWJsZXMuICBCZWNhdXNlIHRoZSAzMi1iaXQgc2hpZnQKK2xlYXZlcyB0aGUgbG93LW9yZGVyIGJpdHMgb2YgdGhlIGludGVybWVkaWF0ZSByZW1haW5kZXIgemVybywgdGhlCitmaW5hbCBDUkMgaXMgc2ltcGx5IHRoZSBYT1Igb2YgdGhlIDQgdGFibGUgbG9vay11cHMuCisKK0J1dCB0aGlzIHN0aWxsIGVuZm9yY2VzIHNlcXVlbnRpYWwgZXhlY3V0aW9uOiBhIHNlY29uZCBncm91cCBvZiB0YWJsZQorbG9vay11cHMgY2Fubm90IGJlZ2luIHVudGlsIHRoZSBwcmV2aW91cyBncm91cHMgNCB0YWJsZSBsb29rLXVwcyBoYXZlIGFsbAorYmVlbiBjb21wbGV0ZWQuICBUaHVzLCB0aGUgcHJvY2Vzc29yJ3MgbG9hZC9zdG9yZSB1bml0IGlzIHNvbWV0aW1lcyBpZGxlLgorCitUbyBtYWtlIG1heGltdW0gdXNlIG9mIHRoZSBwcm9jZXNzb3IsICJzbGljaW5nIGJ5IDgiIHBlcmZvcm1zIDggbG9vay11cHMKK2luIHBhcmFsbGVsLiAgRWFjaCBzdGVwLCB0aGUgMzItYml0IENSQyBpcyBzaGlmdGVkIDY0IGJpdHMgYW5kIFhPUmVkCit3aXRoIDY0IGJpdHMgb2YgaW5wdXQgZGF0YS4gIFdoYXQgaXMgaW1wb3J0YW50IHRvIG5vdGUgaXMgdGhhdCA0IG9mCit0aG9zZSA4IGJ5dGVzIGFyZSBzaW1wbHkgY29waWVzIG9mIHRoZSBpbnB1dCBkYXRhOyB0aGV5IGRvIG5vdCBkZXBlbmQKK29uIHRoZSBwcmV2aW91cyBDUkMgYXQgYWxsLiAgVGh1cywgdGhvc2UgNCB0YWJsZSBsb29rLXVwcyBtYXkgY29tbWVuY2UKK2ltbWVkaWF0ZWx5LCB3aXRob3V0IHdhaXRpbmcgZm9yIHRoZSBwcmV2aW91cyBsb29wIGl0ZXJhdGlvbi4KKworQnkgYWx3YXlzIGhhdmluZyA0IGxvYWRzIGluIGZsaWdodCwgYSBtb2Rlcm4gc3VwZXJzY2FsYXIgcHJvY2Vzc29yIGNhbgorYmUga2VwdCBidXN5IGFuZCBtYWtlIGZ1bGwgdXNlIG9mIGl0cyBMMSBjYWNoZS4KKworVHdvIG1vcmUgZGV0YWlscyBhYm91dCBDUkMgaW1wbGVtZW50YXRpb24gaW4gdGhlIHJlYWwgd29ybGQ6CisKK05vcm1hbGx5LCBhcHBlbmRpbmcgemVybyBiaXRzIHRvIGEgbWVzc2FnZSB3aGljaCBpcyBhbHJlYWR5IGEgbXVsdGlwbGUKK29mIGEgcG9seW5vbWlhbCBwcm9kdWNlcyBhIGxhcmdlciBtdWx0aXBsZSBvZiB0aGF0IHBvbHlub21pYWwuICBUaHVzLAorYSBiYXNpYyBDUkMgd2lsbCBub3QgZGV0ZWN0IGFwcGVuZGVkIHplcm8gYml0cyAob3IgYnl0ZXMpLiAgVG8gZW5hYmxlCithIENSQyB0byBkZXRlY3QgdGhpcyBjb25kaXRpb24sIGl0J3MgY29tbW9uIHRvIGludmVydCB0aGUgQ1JDIGJlZm9yZQorYXBwZW5kaW5nIGl0LiAgVGhpcyBtYWtlcyB0aGUgcmVtYWluZGVyIG9mIHRoZSBtZXNzYWdlK2NyYyBjb21lIG91dCBub3QKK2FzIHplcm8sIGJ1dCBzb21lIGZpeGVkIG5vbi16ZXJvIHZhbHVlLiAgKFRoZSBDUkMgb2YgdGhlIGludmVyc2lvbgorcGF0dGVybiwgMHhmZmZmZmZmZi4pCisKK1RoZSBzYW1lIHByb2JsZW0gYXBwbGllcyB0byB6ZXJvIGJpdHMgcHJlcGVuZGVkIHRvIHRoZSBtZXNzYWdlLCBhbmQgYQorc2ltaWxhciBzb2x1dGlvbiBpcyB1c2VkLiAgSW5zdGVhZCBvZiBzdGFydGluZyB0aGUgQ1JDIGNvbXB1dGF0aW9uIHdpdGgKK2EgcmVtYWluZGVyIG9mIDAsIGFuIGluaXRpYWwgcmVtYWluZGVyIG9mIGFsbCBvbmVzIGlzIHVzZWQuICBBcyBsb25nIGFzCit5b3Ugc3RhcnQgdGhlIHNhbWUgd2F5IG9uIGRlY29kaW5nLCBpdCBkb2Vzbid0IG1ha2UgYSBkaWZmZXJlbmNlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9jcmlzL1JFQURNRSBiL0RvY3VtZW50YXRpb24vY3Jpcy9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRiZGIxYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vY3Jpcy9SRUFETUUKQEAgLTAsMCArMSwxOTUgQEAKK0xpbnV4IG9uIHRoZSBDUklTIGFyY2hpdGVjdHVyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgaXMgYSBwb3J0IG9mIExpbnV4IHRvIEF4aXMgQ29tbXVuaWNhdGlvbnMgRVRSQVggMTAwTFgsCitFVFJBWCBGUyBhbmQgQVJUUEVDLTMgZW1iZWRkZWQgbmV0d29yayBDUFVzLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBDUklTIGFuZCBFVFJBWCBwbGVhc2Ugc2VlIGZ1cnRoZXIgYmVsb3cuCisKK0luIG9yZGVyIHRvIGNvbXBpbGUgdGhpcyB5b3UgbmVlZCBhIHZlcnNpb24gb2YgZ2NjIHdpdGggc3VwcG9ydCBmb3IgdGhlCitFVFJBWCBjaGlwIGZhbWlseS4gUGxlYXNlIHNlZSB0aGlzIGxpbmsgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvCitkb3dubG9hZCB0aGUgY29tcGlsZXIgYW5kIG90aGVyIHRvb2xzIHVzZWZ1bCB3aGVuIGJ1aWxkaW5nIGFuZCBib290aW5nCitzb2Z0d2FyZSBmb3IgdGhlIEVUUkFYIHBsYXRmb3JtOgorCitodHRwOi8vZGV2ZWxvcGVyLmF4aXMuY29tL3dpa2kvZG9rdS5waHA/aWQ9YXhpczppbnN0YWxsLWhvd3RvLTJfMjAKKworV2hhdCBpcyBDUklTID8KKy0tLS0tLS0tLS0tLS0tCisKK0NSSVMgaXMgYW4gYWNyb255bSBmb3IgJ0NvZGUgUmVkdWNlZCBJbnN0cnVjdGlvbiBTZXQnLiBJdCBpcyB0aGUgQ1BVCithcmNoaXRlY3R1cmUgaW4gQXhpcyBDb21tdW5pY2F0aW9uIEFCJ3MgcmFuZ2Ugb2YgZW1iZWRkZWQgbmV0d29yayBDUFUncywKK2NhbGxlZCBFVFJBWC4KKworVGhlIEVUUkFYIDEwMExYIGNoaXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZvciByZWZlcmVuY2UsIHBsZWFzZSBzZWUgdGhlIGZvbGxvd2luZyBsaW5rOgorCitodHRwOi8vd3d3LmF4aXMuY29tL3Byb2R1Y3RzL2Rldl9ldHJheF8xMDBseC9pbmRleC5odG0KKworVGhlIEVUUkFYIDEwMExYIGlzIGEgMTAwIE1JUFMgcHJvY2Vzc29yIHdpdGggOGtCIGNhY2hlLCBNTVUsIGFuZCBhIHZlcnkgYnJvYWQKK3JhbmdlIG9mIGJ1aWx0LWluIGludGVyZmFjZXMsIGFsbCB3aXRoIG1vZGVybiBzY2F0dGVyL2dhdGhlciBETUEuCisKK01lbW9yeSBpbnRlcmZhY2VzOgorCisJKiBTUkFNCisJKiBOT1ItZmxhc2gvUk9NCisJKiBFRE8gb3IgcGFnZS1tb2RlIERSQU0KKwkqIFNEUkFNCisKK0kvTyBpbnRlcmZhY2VzOgorCisJKiBvbmUgMTAvMTAwIE1iaXQvcyBldGhlcm5ldCBjb250cm9sbGVyCisJKiBmb3VyIHNlcmlhbC1wb3J0cyAodXAgdG8gNiBNYml0L3MpCisJKiB0d28gc3luY2hyb25vdXMgc2VyaWFsLXBvcnRzIGZvciBtdWx0aW1lZGlhIGNvZGVjJ3MgZXRjLgorCSogVVNCIGhvc3QgY29udHJvbGxlciBhbmQgVVNCIHNsYXZlCisJKiBBVEEKKwkqIFNDU0kKKwkqIHR3byBwYXJhbGxlbC1wb3J0cworCSogdHdvIGdlbmVyaWMgOC1iaXQgcG9ydHMKKworCShub3QgYWxsIGludGVyZmFjZXMgYXJlIGF2YWlsYWJsZSBhdCB0aGUgc2FtZSB0aW1lIGR1ZSB0byBjaGlwIHBpbgorICAgICAgICAgbXVsdGlwbGV4aW5nKQorCitFVFJBWCAxMDBMWCBpcyBDUklTdjEwIGFyY2hpdGVjdHVyZS4KKworCitUaGUgRVRSQVggRlMgYW5kIEFSVFBFQy0zIGNoaXBzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBFVFJBWCBGUyBpcyBhIDIwME1IeiAzMi1iaXQgUklTQyBwcm9jZXNzb3Igd2l0aCBvbi1jaGlwIDE2a0IKK0ktY2FjaGUgYW5kIDE2a0IgRC1jYWNoZSBhbmQgd2l0aCBhIHdpZGUgcmFuZ2Ugb2YgZGV2aWNlIGludGVyZmFjZXMKK2luY2x1ZGluZyBtdWx0aXBsZSBoaWdoIHNwZWVkIHNlcmlhbCBwb3J0cyBhbmQgYW4gaW50ZWdyYXRlZCBVU0IgMS4xIFBIWS4KKworVGhlIEFSVFBFQy0zIGlzIGEgdmFyaWFudCBvZiB0aGUgRVRSQVggRlMgd2l0aCBhZGRpdGlvbmFsIElPLXVuaXRzCit1c2VkIGJ5IHRoZSBBeGlzIENvbW11bmljYXRpb25zIG5ldHdvcmsgY2FtZXJhcy4KKworU2VlIGJlbG93IGxpbmsgZm9yIG1vcmUgaW5mb3JtYXRpb246CisKK2h0dHA6Ly93d3cuYXhpcy5jb20vcHJvZHVjdHMvZGV2X2V0cmF4X2ZzL2luZGV4Lmh0bQorCitFVFJBWCBGUyBhbmQgQVJUUEVDLTMgYXJlIGJvdGggQ1JJU3YzMiBhcmNoaXRlY3R1cmVzLgorCitCb290bG9nCistLS0tLS0tCisKK0p1c3QgYXMgYW4gZXhhbXBsZSwgdGhpcyBpcyB0aGUgZGVidWctb3V0cHV0IGZyb20gYSBib290IG9mIExpbnV4IDIuNCBvbgorYSBib2FyZCB3aXRoIEVUUkFYIDEwMExYLiBUaGUgZGlzcGxheWVkIEJvZ29NSVBTIHZhbHVlIGlzIDUgdGltZXMgdG9vIHNtYWxsIDopCitBdCB0aGUgZW5kIHlvdSBzZWUgc29tZSB1c2VyLW1vZGUgcHJvZ3JhbXMgYm9vdGluZyBsaWtlIHRlbG5ldCBhbmQgZnRwIGRhZW1vbnMuCisKK0xpbnV4IHZlcnNpb24gMi40LjEgKGJqb3Jud0Bnb2R6aWxsYS5heGlzLnNlKSAoZ2NjIHZlcnNpb24gMi45NiAyMDAwMDQyNyAoZXhwZXJpbWVudGFsKSkgIzIwNyBXZWQgRmViIDIxIDE1OjQ4OjE1IENFVCAyMDAxCitST00gZnMgaW4gUkFNLCBzaXplIDEzNzYyNTYgYnl0ZXMKK1NldHRpbmcgdXAgcGFnaW5nIGFuZCB0aGUgTU1VLgorT24gbm9kZSAwIHRvdGFscGFnZXM6IDIwNDgKK3pvbmUoMCk6IDIwNDggcGFnZXMuCit6b25lKDEpOiAwIHBhZ2VzLgorem9uZSgyKTogMCBwYWdlcy4KK0xpbnV4L0NSSVMgcG9ydCBvbiBFVFJBWCAxMDBMWCAoYykgMjAwMSBBeGlzIENvbW11bmljYXRpb25zIEFCCitLZXJuZWwgY29tbWFuZCBsaW5lOiAKK0NhbGlicmF0aW5nIGRlbGF5IGxvb3AuLi4gMTkuOTEgQm9nb01JUFMKK01lbW9yeTogMTM4NzJrLzE2Mzg0ayBhdmFpbGFibGUgKDU4N2sga2VybmVsIGNvZGUsIDI1MTJrIHJlc2VydmVkLCA0NGsgZGF0YSwgMjRrIGluaXQpCitrbWVtX2NyZWF0ZTogRm9yY2luZyBzaXplIHdvcmQgYWxpZ25tZW50IC0gdm1fYXJlYV9zdHJ1Y3QKK2ttZW1fY3JlYXRlOiBGb3JjaW5nIHNpemUgd29yZCBhbGlnbm1lbnQgLSBmaWxwCitEZW50cnktY2FjaGUgaGFzaCB0YWJsZSBlbnRyaWVzOiAyMDQ4IChvcmRlcjogMSwgMTYzODQgYnl0ZXMpCitCdWZmZXItY2FjaGUgaGFzaCB0YWJsZSBlbnRyaWVzOiAyMDQ4IChvcmRlcjogMCwgODE5MiBieXRlcykKK1BhZ2UtY2FjaGUgaGFzaCB0YWJsZSBlbnRyaWVzOiAyMDQ4IChvcmRlcjogMCwgODE5MiBieXRlcykKK2ttZW1fY3JlYXRlOiBGb3JjaW5nIHNpemUgd29yZCBhbGlnbm1lbnQgLSBraW9idWYKK2ttZW1fY3JlYXRlOiBGb3JjaW5nIHNpemUgd29yZCBhbGlnbm1lbnQgLSBiZGV2X2NhY2hlCitJbm9kZS1jYWNoZSBoYXNoIHRhYmxlIGVudHJpZXM6IDEwMjQgKG9yZGVyOiAwLCA4MTkyIGJ5dGVzKQora21lbV9jcmVhdGU6IEZvcmNpbmcgc2l6ZSB3b3JkIGFsaWdubWVudCAtIGlub2RlX2NhY2hlCitQT1NJWCBjb25mb3JtYW5jZSB0ZXN0aW5nIGJ5IFVOSUZJWAorTGludXggTkVUNC4wIGZvciBMaW51eCAyLjQKK0Jhc2VkIHVwb24gU3dhbnNlYSBVbml2ZXJzaXR5IENvbXB1dGVyIFNvY2lldHkgTkVUMy4wMzkKK1N0YXJ0aW5nIGtzd2FwZCB2MS44CitrbWVtX2NyZWF0ZTogRm9yY2luZyBzaXplIHdvcmQgYWxpZ25tZW50IC0gZmlsZSBsb2NrIGNhY2hlCitrbWVtX2NyZWF0ZTogRm9yY2luZyBzaXplIHdvcmQgYWxpZ25tZW50IC0gYmxrZGV2X3JlcXVlc3RzCitibG9jazogcXVldWVkIHNlY3RvcnMgbWF4L2xvdyA5MTA5a0IvMzAzNmtCLCA2NCBzbG90cyBwZXIgcXVldWUKK0VUUkFYIDEwMExYIDEwLzEwME1CaXQgZXRoZXJuZXQgdjIuMCAoYykgMjAwMCBBeGlzIENvbW11bmljYXRpb25zIEFCCitldGgwIGluaXRpYWxpemVkCitldGgwOiBjaGFuZ2VkIE1BQyB0byAwMDo0MDo4QzpDRDowMDowMAorRVRSQVggMTAwTFggc2VyaWFsLWRyaXZlciAkUmV2aXNpb246IDEuNyAkLCAoYykgMjAwMCBBeGlzIENvbW11bmljYXRpb25zIEFCCit0dHlTMCBhdCAweGIwMDAwMDYwIGlzIGEgYnVpbHRpbiBVQVJUIHdpdGggRE1BCit0dHlTMSBhdCAweGIwMDAwMDY4IGlzIGEgYnVpbHRpbiBVQVJUIHdpdGggRE1BCit0dHlTMiBhdCAweGIwMDAwMDcwIGlzIGEgYnVpbHRpbiBVQVJUIHdpdGggRE1BCit0dHlTMyBhdCAweGIwMDAwMDc4IGlzIGEgYnVpbHRpbiBVQVJUIHdpdGggRE1BCitBeGlzIGZsYXNoIG1hcHBpbmc6IDIwMDAwMCBhdCA1MDAwMDAwMAorQXhpcyBmbGFzaDogRm91bmQgMSB4MTYgQ0ZJIGRldmljZSBhdCAweDAgaW4gMTYgYml0IG1vZGUKKyBBbWQvRnVqaXRzdSBFeHRlbmRlZCBRdWVyeSBUYWJsZSB2MS4wIGF0IDB4MDA0MAorQXhpcyBmbGFzaDogSkVERUMgRGV2aWNlIElEIGlzIDB4QzQuIEFzc3VtaW5nIGJyb2tlbiBDRkkgdGFibGUuCitBeGlzIGZsYXNoOiBTd2FwcGluZyBlcmFzZSByZWdpb25zIGZvciBicm9rZW4gQ0ZJIHRhYmxlLgorbnVtYmVyIG9mIENGSSBjaGlwczogMQorIFVzaW5nIGRlZmF1bHQgcGFydGl0aW9uIHRhYmxlCitJMkMgZHJpdmVyIHYyLjIsIChjKSAxOTk5LTIwMDEgQXhpcyBDb21tdW5pY2F0aW9ucyBBQgorRVRSQVggMTAwTFggR1BJTyBkcml2ZXIgdjIuMSwgKGMpIDIwMDEgQXhpcyBDb21tdW5pY2F0aW9ucyBBQgorTkVUNDogTGludXggVENQL0lQIDEuMCBmb3IgTkVUNC4wCitJUCBQcm90b2NvbHM6IElDTVAsIFVEUCwgVENQCitrbWVtX2NyZWF0ZTogRm9yY2luZyBzaXplIHdvcmQgYWxpZ25tZW50IC0gaXBfZHN0X2NhY2hlCitJUDogcm91dGluZyBjYWNoZSBoYXNoIHRhYmxlIG9mIDEwMjQgYnVja2V0cywgOEtieXRlcworVENQOiBIYXNoIHRhYmxlcyBjb25maWd1cmVkIChlc3RhYmxpc2hlZCAyMDQ4IGJpbmQgMjA0OCkKK05FVDQ6IFVuaXggZG9tYWluIHNvY2tldHMgMS4wL1NNUCBmb3IgTGludXggTkVUNC4wLgorVkZTOiBNb3VudGVkIHJvb3QgKGNyYW1mcyBmaWxlc3lzdGVtKSByZWFkb25seS4KK0luaXQgc3RhcnRzIHVwLi4uCitNb3VudGVkIG5vbmUgb24gL3Byb2Mgb2suCitTZXR0aW5nIHVwIGV0aDAgd2l0aCBpcCAxMC4xMy45LjExNiBhbmQgbWFjIDAwOjQwOjhjOjE4OjA0OjYwCitldGgwOiBjaGFuZ2VkIE1BQyB0byAwMDo0MDo4QzoxODowNDo2MAorU2V0dGluZyB1cCBsbyB3aXRoIGlwIDEyNy4wLjAuMQorRGVmYXVsdCBnYXRld2F5IGlzIDEwLjEzLjkuMQorSG9zdG5hbWUgaXMgYmJveDEKK1RlbG5ldGQgc3RhcnRpbmcsIHVzaW5nIHBvcnQgMjMuCisgIHVzaW5nIC9iaW4vc2FzaCBhcyBzaGVsbC4KK3NmdHBkWzE1XTogc2Z0cGQgJFJldmlzaW9uOiAxLjcgJCBzdGFydGluZyB1cAorCisKKworQW5kIGhlcmUgaXMgaG93IHNvbWUgL3Byb2MgZW50cmllcyBsb29rOgorCisxNyMgY2QgL3Byb2MKKzE3IyBjYXQgY3B1aW5mbworY3B1ICAgICAgICAgICAgIDogQ1JJUworY3B1IHJldmlzaW9uICAgIDogMTAKK2NwdSBtb2RlbCAgICAgICA6IEVUUkFYIDEwMExYCitjYWNoZSBzaXplICAgICAgOiA4IGtCCitmcHUgICAgICAgICAgICAgOiBubworbW11ICAgICAgICAgICAgIDogeWVzCitldGhlcm5ldCAgICAgICAgOiAxMC8xMDAgTWJwcwordG9rZW4gcmluZyAgICAgIDogbm8KK3Njc2kgICAgICAgICAgICA6IHllcworYXRhICAgICAgICAgICAgIDogeWVzCit1c2IgICAgICAgICAgICAgOiB5ZXMKK2JvZ29taXBzICAgICAgICA6IDk5Ljg0CisKKzE3IyBjYXQgbWVtaW5mbworICAgICAgICB0b3RhbDogICAgdXNlZDogICAgZnJlZTogIHNoYXJlZDogYnVmZmVyczogIGNhY2hlZDoKK01lbTogICA3MDI4NzM2ICAgOTI1Njk2ICA2MTAzMDQwICAgMTE0Njg4ICAgICAgICAwICAgMjI5Mzc2CitTd2FwOiAgICAgICAgMCAgICAgICAgMCAgICAgICAgMAorTWVtVG90YWw6ICAgICAgICAgNjg2NCBrQgorTWVtRnJlZTogICAgICAgICAgNTk2MCBrQgorTWVtU2hhcmVkOiAgICAgICAgIDExMiBrQgorQnVmZmVyczogICAgICAgICAgICAgMCBrQgorQ2FjaGVkOiAgICAgICAgICAgIDIyNCBrQgorQWN0aXZlOiAgICAgICAgICAgIDIyNCBrQgorSW5hY3RfZGlydHk6ICAgICAgICAgMCBrQgorSW5hY3RfY2xlYW46ICAgICAgICAgMCBrQgorSW5hY3RfdGFyZ2V0OiAgICAgICAgMCBrQgorSGlnaFRvdGFsOiAgICAgICAgICAgMCBrQgorSGlnaEZyZWU6ICAgICAgICAgICAgMCBrQgorTG93VG90YWw6ICAgICAgICAgNjg2NCBrQgorTG93RnJlZTogICAgICAgICAgNTk2MCBrQgorU3dhcFRvdGFsOiAgICAgICAgICAgMCBrQgorU3dhcEZyZWU6ICAgICAgICAgICAgMCBrQgorMTcjIGxzIC1sIC9iaW4KKy1yd3hyLXhyLXggIDEgMzQyICAgICAgMTAwICAgICAgICAgMTAzNTYgIEphbiAwMSAwMDowMCBpZmNvbmZpZworLXJ3eHIteHIteCAgMSAzNDIgICAgICAxMDAgICAgICAgICAxNzU0OCAgSmFuIDAxIDAwOjAwIGluaXQKKy1yd3hyLXhyLXggIDEgMzQyICAgICAgMTAwICAgICAgICAgIDk0ODggIEphbiAwMSAwMDowMCByb3V0ZQorLXJ3eHIteHIteCAgMSAzNDIgICAgICAxMDAgICAgICAgICA0NjAzNiAgSmFuIDAxIDAwOjAwIHNmdHBkCistcnd4ci14ci14ICAxIDM0MiAgICAgIDEwMCAgICAgICAgIDQ4MTA0ICBKYW4gMDEgMDA6MDAgc2gKKy1yd3hyLXhyLXggIDEgMzQyICAgICAgMTAwICAgICAgICAgMTYyNTIgIEphbiAwMSAwMDowMCB0ZWxuZXRkCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2NyeXB0by9hcGktaW50cm8udHh0IGIvRG9jdW1lbnRhdGlvbi9jcnlwdG8vYXBpLWludHJvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjQ5MzAyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9jcnlwdG8vYXBpLWludHJvLnR4dApAQCAtMCwwICsxLDI0OCBAQAorCisgICAgICAgICAgICAgICAgICAgIFNjYXR0ZXJsaXN0IENyeXB0b2dyYXBoaWMgQVBJCisgICAgICAgICAgICAgICAgICAgCitJTlRST0RVQ1RJT04KKworVGhlIFNjYXR0ZXJsaXN0IENyeXB0byBBUEkgdGFrZXMgcGFnZSB2ZWN0b3JzIChzY2F0dGVybGlzdHMpIGFzCithcmd1bWVudHMsIGFuZCB3b3JrcyBkaXJlY3RseSBvbiBwYWdlcy4gIEluIHNvbWUgY2FzZXMgKGUuZy4gRUNCCittb2RlIGNpcGhlcnMpLCB0aGlzIHdpbGwgYWxsb3cgZm9yIHBhZ2VzIHRvIGJlIGVuY3J5cHRlZCBpbi1wbGFjZQord2l0aCBubyBjb3B5aW5nLgorCitPbmUgb2YgdGhlIGluaXRpYWwgZ29hbHMgb2YgdGhpcyBkZXNpZ24gd2FzIHRvIHJlYWRpbHkgc3VwcG9ydCBJUHNlYywKK3NvIHRoYXQgcHJvY2Vzc2luZyBjYW4gYmUgYXBwbGllZCB0byBwYWdlZCBza2IncyB3aXRob3V0IHRoZSBuZWVkCitmb3IgbGluZWFyaXphdGlvbi4KKworCitERVRBSUxTCisKK0F0IHRoZSBsb3dlc3QgbGV2ZWwgYXJlIGFsZ29yaXRobXMsIHdoaWNoIHJlZ2lzdGVyIGR5bmFtaWNhbGx5IHdpdGggdGhlCitBUEkuCisKKydUcmFuc2Zvcm1zJyBhcmUgdXNlci1pbnN0YW50aWF0ZWQgb2JqZWN0cywgd2hpY2ggbWFpbnRhaW4gc3RhdGUsIGhhbmRsZSBhbGwKK29mIHRoZSBpbXBsZW1lbnRhdGlvbiBsb2dpYyAoZS5nLiBtYW5pcHVsYXRpbmcgcGFnZSB2ZWN0b3JzKSBhbmQgcHJvdmlkZSBhbiAKK2Fic3RyYWN0aW9uIHRvIHRoZSB1bmRlcmx5aW5nIGFsZ29yaXRobXMuICBIb3dldmVyLCBhdCB0aGUgdXNlciAKK2xldmVsIHRoZXkgYXJlIHZlcnkgc2ltcGxlLgorCitDb25jZXB0dWFsbHksIHRoZSBBUEkgbGF5ZXJpbmcgbG9va3MgbGlrZSB0aGlzOgorCisgIFt0cmFuc2Zvcm0gYXBpXSAgKHVzZXIgaW50ZXJmYWNlKQorICBbdHJhbnNmb3JtIG9wc10gIChwZXItdHlwZSBsb2dpYyBnbHVlIGUuZy4gY2lwaGVyLmMsIGNvbXByZXNzLmMpCisgIFthbGdvcml0aG0gYXBpXSAgKGZvciByZWdpc3RlcmluZyBhbGdvcml0aG1zKQorICAKK1RoZSBpZGVhIGlzIHRvIG1ha2UgdGhlIHVzZXIgaW50ZXJmYWNlIGFuZCBhbGdvcml0aG0gcmVnaXN0cmF0aW9uIEFQSQordmVyeSBzaW1wbGUsIHdoaWxlIGhpZGluZyB0aGUgY29yZSBsb2dpYyBmcm9tIGJvdGguICBNYW55IGdvb2QgaWRlYXMKK2Zyb20gZXhpc3RpbmcgQVBJcyBzdWNoIGFzIENyeXB0b2FwaSBhbmQgTmV0dGxlIGhhdmUgYmVlbiBhZGFwdGVkIGZvciB0aGlzLgorCitUaGUgQVBJIGN1cnJlbnRseSBzdXBwb3J0cyBmaXZlIG1haW4gdHlwZXMgb2YgdHJhbnNmb3JtczogQUVBRCAoQXV0aGVudGljYXRlZAorRW5jcnlwdGlvbiB3aXRoIEFzc29jaWF0ZWQgRGF0YSksIEJsb2NrIENpcGhlcnMsIENpcGhlcnMsIENvbXByZXNzb3JzIGFuZAorSGFzaGVzLgorCitQbGVhc2Ugbm90ZSB0aGF0IEJsb2NrIENpcGhlcnMgaXMgc29tZXdoYXQgb2YgYSBtaXNub21lci4gIEl0IGlzIGluIGZhY3QKK21lYW50IHRvIHN1cHBvcnQgYWxsIGNpcGhlcnMgaW5jbHVkaW5nIHN0cmVhbSBjaXBoZXJzLiAgVGhlIGRpZmZlcmVuY2UKK2JldHdlZW4gQmxvY2sgQ2lwaGVycyBhbmQgQ2lwaGVycyBpcyB0aGF0IHRoZSBsYXR0ZXIgb3BlcmF0ZXMgb24gZXhhY3RseQorb25lIGJsb2NrIHdoaWxlIHRoZSBmb3JtZXIgY2FuIG9wZXJhdGUgb24gYW4gYXJiaXRyYXJ5IGFtb3VudCBvZiBkYXRhLAorc3ViamVjdCB0byBibG9jayBzaXplIHJlcXVpcmVtZW50cyAoaS5lLiwgbm9uLXN0cmVhbSBjaXBoZXJzIGNhbiBvbmx5Citwcm9jZXNzIG11bHRpcGxlcyBvZiBibG9ja3MpLgorCitTdXBwb3J0IGZvciBoYXJkd2FyZSBjcnlwdG8gZGV2aWNlcyB2aWEgYW4gYXN5bmNocm9ub3VzIGludGVyZmFjZSBpcwordW5kZXIgZGV2ZWxvcG1lbnQuCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byB1c2UgdGhlIEFQSToKKworCSNpbmNsdWRlIDxsaW51eC9jcnlwdG8uaD4KKwkjaW5jbHVkZSA8bGludXgvZXJyLmg+CisJI2luY2x1ZGUgPGxpbnV4L3NjYXR0ZXJsaXN0Lmg+CisJCisJc3RydWN0IHNjYXR0ZXJsaXN0IHNnWzJdOworCWNoYXIgcmVzdWx0WzEyOF07CisJc3RydWN0IGNyeXB0b19oYXNoICp0Zm07CisJc3RydWN0IGhhc2hfZGVzYyBkZXNjOworCQorCXRmbSA9IGNyeXB0b19hbGxvY19oYXNoKCJtZDUiLCAwLCBDUllQVE9fQUxHX0FTWU5DKTsKKwlpZiAoSVNfRVJSKHRmbSkpCisJCWZhaWwoKTsKKwkJCisJLyogLi4uIHNldCB1cCB0aGUgc2NhdHRlcmxpc3RzIC4uLiAqLworCisJZGVzYy50Zm0gPSB0Zm07CisJZGVzYy5mbGFncyA9IDA7CisJCisJaWYgKGNyeXB0b19oYXNoX2RpZ2VzdCgmZGVzYywgc2csIDIsIHJlc3VsdCkpCisJCWZhaWwoKTsKKwkKKwljcnlwdG9fZnJlZV9oYXNoKHRmbSk7CisKKyAgICAKK01hbnkgcmVhbCBleGFtcGxlcyBhcmUgYXZhaWxhYmxlIGluIHRoZSByZWdyZXNzaW9uIHRlc3QgbW9kdWxlICh0Y3J5cHQuYykuCisKKworREVWRUxPUEVSIE5PVEVTCisKK1RyYW5zZm9ybXMgbWF5IG9ubHkgYmUgYWxsb2NhdGVkIGluIHVzZXIgY29udGV4dCwgYW5kIGNyeXB0b2dyYXBoaWMKK21ldGhvZHMgbWF5IG9ubHkgYmUgY2FsbGVkIGZyb20gc29mdGlycSBhbmQgdXNlciBjb250ZXh0cy4gIEZvcgordHJhbnNmb3JtcyB3aXRoIGEgc2V0a2V5IG1ldGhvZCBpdCB0b28gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20KK3VzZXIgY29udGV4dC4KKworV2hlbiB1c2luZyB0aGUgQVBJIGZvciBjaXBoZXJzLCBwZXJmb3JtYW5jZSB3aWxsIGJlIG9wdGltYWwgaWYgZWFjaAorc2NhdHRlcmxpc3QgY29udGFpbnMgZGF0YSB3aGljaCBpcyBhIG11bHRpcGxlIG9mIHRoZSBjaXBoZXIncyBibG9jaworc2l6ZSAodHlwaWNhbGx5IDggYnl0ZXMpLiAgVGhpcyBwcmV2ZW50cyBoYXZpbmcgdG8gZG8gYW55IGNvcHlpbmcKK2Fjcm9zcyBub24tYWxpZ25lZCBwYWdlIGZyYWdtZW50IGJvdW5kYXJpZXMuCisKKworQURESU5HIE5FVyBBTEdPUklUSE1TCisKK1doZW4gc3VibWl0dGluZyBhIG5ldyBhbGdvcml0aG0gZm9yIGluY2x1c2lvbiwgYSBtYW5kYXRvcnkgcmVxdWlyZW1lbnQKK2lzIHRoYXQgYXQgbGVhc3QgYSBmZXcgdGVzdCB2ZWN0b3JzIGZyb20ga25vd24gc291cmNlcyAocHJlZmVyYWJseQorc3RhbmRhcmRzKSBiZSBpbmNsdWRlZC4KKworQ29udmVydGluZyBleGlzdGluZyB3ZWxsIGtub3duIGNvZGUgaXMgcHJlZmVycmVkLCBhcyBpdCBpcyBtb3JlIGxpa2VseQordG8gaGF2ZSBiZWVuIHJldmlld2VkIGFuZCB3aWRlbHkgdGVzdGVkLiAgSWYgc3VibWl0dGluZyBjb2RlIGZyb20gTEdQTAorc291cmNlcywgcGxlYXNlIGNvbnNpZGVyIGNoYW5naW5nIHRoZSBsaWNlbnNlIHRvIEdQTCAoc2VlIHNlY3Rpb24gMyBvZgordGhlIExHUEwpLgorCitBbGdvcml0aG1zIHN1Ym1pdHRlZCBtdXN0IGFsc28gYmUgZ2VuZXJhbGx5IHBhdGVudC1mcmVlIChlLmcuIElERUEKK3dpbGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSBtYWlubGluZSB1bnRpbCBhcm91bmQgMjAxMSksIGFuZCBiZSBiYXNlZAorb24gYSByZWNvZ25pemVkIHN0YW5kYXJkIGFuZC9vciBoYXZlIGJlZW4gc3ViamVjdGVkIHRvIGFwcHJvcHJpYXRlCitwZWVyIHJldmlldy4KKworQWxzbyBjaGVjayBmb3IgYW55IFJGQ3Mgd2hpY2ggbWF5IHJlbGF0ZSB0byB0aGUgdXNlIG9mIHNwZWNpZmljIGFsZ29yaXRobXMsCithcyB3ZWxsIGFzIGdlbmVyYWwgYXBwbGljYXRpb24gbm90ZXMgc3VjaCBhcyBSRkMyNDUxICgiVGhlIEVTUCBDQkMtTW9kZQorQ2lwaGVyIEFsZ29yaXRobXMiKS4KKworSXQncyBhIGdvb2QgaWRlYSB0byBhdm9pZCB1c2luZyBsb3RzIG9mIG1hY3JvcyBhbmQgdXNlIGlubGluZWQgZnVuY3Rpb25zCitpbnN0ZWFkLCBhcyBnY2MgZG9lcyBhIGdvb2Qgam9iIHdpdGggaW5saW5pbmcsIHdoaWxlIGV4Y2Vzc2l2ZSB1c2Ugb2YKK21hY3JvcyBjYW4gY2F1c2UgY29tcGlsYXRpb24gcHJvYmxlbXMgb24gc29tZSBwbGF0Zm9ybXMuCisKK0Fsc28gY2hlY2sgdGhlIFRPRE8gbGlzdCBhdCB0aGUgd2ViIHNpdGUgbGlzdGVkIGJlbG93IHRvIHNlZSB3aGF0IHBlb3BsZQorbWlnaHQgYWxyZWFkeSBiZSB3b3JraW5nIG9uLgorCisKK0JVR1MKKworU2VuZCBidWcgcmVwb3J0cyB0bzoKK2xpbnV4LWNyeXB0b0B2Z2VyLmtlcm5lbC5vcmcKK0NjOiBIZXJiZXJ0IFh1IDxoZXJiZXJ0QGdvbmRvci5hcGFuYS5vcmcuYXU+LAorICAgIERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AcmVkaGF0LmNvbT4KKworCitGVVJUSEVSIElORk9STUFUSU9OCisKK0ZvciBmdXJ0aGVyIHBhdGNoZXMgYW5kIHZhcmlvdXMgdXBkYXRlcywgaW5jbHVkaW5nIHRoZSBjdXJyZW50IFRPRE8KK2xpc3QsIHNlZToKK2h0dHA6Ly9nb25kb3IuYXBhbmEub3JnLmF1L35oZXJiZXJ0L2NyeXB0by8KKworCitBVVRIT1JTCisKK0phbWVzIE1vcnJpcworRGF2aWQgUy4gTWlsbGVyCitIZXJiZXJ0IFh1CisKKworQ1JFRElUUworCitUaGUgZm9sbG93aW5nIHBlb3BsZSBwcm92aWRlZCBpbnZhbHVhYmxlIGZlZWRiYWNrIGR1cmluZyB0aGUgZGV2ZWxvcG1lbnQKK29mIHRoZSBBUEk6CisKKyAgQWxleGV5IEt1em5ldHpvdgorICBSdXN0eSBSdXNzZWxsCisgIEhlcmJlcnQgVmFsZXJpbyBSaWVkZWwKKyAgSmVmZiBHYXJ6aWsKKyAgTWljaGFlbCBSaWNoYXJkc29uCisgIEFuZHJldyBNb3J0b24KKyAgSW5nbyBPZXNlcgorICBDaHJpc3RvcGggSGVsbHdpZworCitQb3J0aW9ucyBvZiB0aGlzIEFQSSB3ZXJlIGRlcml2ZWQgZnJvbSB0aGUgZm9sbG93aW5nIHByb2plY3RzOgorICAKKyAgS2VybmVsaSBDcnlwdG9hcGkgKGh0dHA6Ly93d3cua2VybmVsaS5vcmcvKQorICAgIEFsZXhhbmRlciBLamVsZGFhcworICAgIEhlcmJlcnQgVmFsZXJpbyBSaWVkZWwKKyAgICBLeWxlIE1jTWFydGluCisgICAgSmVhbi1MdWMgQ29va2UKKyAgICBEYXZpZCBCcnlzb24KKyAgICBDbGVtZW5zIEZydWh3aXJ0aAorICAgIFRvYmlhcyBSaW5nc3Ryb20KKyAgICBIYXJhbGQgV2VsdGUKKworYW5kOworICAKKyAgTmV0dGxlIChodHRwOi8vd3d3Lmx5c2F0b3IubGl1LnNlL35uaXNzZS9uZXR0bGUvKQorICAgIE5pZWxzIE3DtmxsZXIKKworT3JpZ2luYWwgZGV2ZWxvcGVycyBvZiB0aGUgY3J5cHRvIGFsZ29yaXRobXM6CisKKyAgRGFuYSBMLiBIb3cgKERFUykKKyAgQW5kcmV3IFRyaWRnZWxsIGFuZCBTdGV2ZSBGcmVuY2ggKE1ENCkKKyAgQ29saW4gUGx1bWIgKE1ENSkKKyAgU3RldmUgUmVpZCAoU0hBMSkKKyAgSmVhbi1MdWMgQ29va2UgKFNIQTI1NiwgU0hBMzg0LCBTSEE1MTIpCisgIEthenVub3JpIE1peWF6YXdhIC8gVVNBR0kgKEhNQUMpCisgIE1hdHRoZXcgU2thbGEgKFR3b2Zpc2gpCisgIERhZyBBcm5lIE9zdmlrIChTZXJwZW50KQorICBCcmlhbiBHbGFkbWFuIChBRVMpCisgIEthcnRpa2V5IE1haGVuZHJhIEJoYXR0IChDQVNUNikKKyAgSm9uIE9iZXJoZWlkZSAoQVJDNCkKKyAgSm91bmkgTWFsaW5lbiAoTWljaGFlbCBNSUMpCisgIE5UVChOaXBwb24gVGVsZWdyYXBoIGFuZCBUZWxlcGhvbmUgQ29ycG9yYXRpb24pIChDYW1lbGxpYSkKKworU0hBMSBhbGdvcml0aG0gY29udHJpYnV0b3JzOgorICBKZWFuLUZyYW5jb2lzIERpdmUKKyAgCitERVMgYWxnb3JpdGhtIGNvbnRyaWJ1dG9yczoKKyAgUmFpbWFyIEZhbGtlCisgIEdpc2xlIFPDpmxlbnNtaW5kZQorICBOaWVscyBNw7ZsbGVyCisKK0Jsb3dmaXNoIGFsZ29yaXRobSBjb250cmlidXRvcnM6CisgIEhlcmJlcnQgVmFsZXJpbyBSaWVkZWwKKyAgS3lsZSBNY01hcnRpbgorCitUd29maXNoIGFsZ29yaXRobSBjb250cmlidXRvcnM6CisgIFdlcm5lciBLb2NoCisgIE1hcmMgTXV0egorCitTSEEyNTYvMzg0LzUxMiBhbGdvcml0aG0gY29udHJpYnV0b3JzOgorICBBbmRyZXcgTWNEb25hbGQKKyAgS3lsZSBNY01hcnRpbgorICBIZXJiZXJ0IFZhbGVyaW8gUmllZGVsCisgIAorQUVTIGFsZ29yaXRobSBjb250cmlidXRvcnM6CisgIEFsZXhhbmRlciBLamVsZGFhcworICBIZXJiZXJ0IFZhbGVyaW8gUmllZGVsCisgIEt5bGUgTWNNYXJ0aW4KKyAgQWRhbSBKLiBSaWNodGVyCisgIEZydWh3aXJ0aCBDbGVtZW5zIChpNTg2KQorICBMaW51cyBUb3J2YWxkcyAoaTU4NikKKworQ0FTVDUgYWxnb3JpdGhtIGNvbnRyaWJ1dG9yczoKKyAgS2FydGlrZXkgTWFoZW5kcmEgQmhhdHQgKG9yaWdpbmFsIGRldmVsb3BlcnMgdW5rbm93biwgRlNGIGNvcHlyaWdodCkuCisKK1RFQS9YVEVBIGFsZ29yaXRobSBjb250cmlidXRvcnM6CisgIEFhcm9uIEdyb3RoZQorICBNaWNoYWVsIFJpbmdlCisKK0toYXphZCBhbGdvcml0aG0gY29udHJpYnV0b3JzOgorICBBYXJvbiBHcm90aGUKKworV2hpcmxwb29sIGFsZ29yaXRobSBjb250cmlidXRvcnM6CisgIEFhcm9uIEdyb3RoZQorICBKZWFuLUx1YyBDb29rZQorCitBbnViaXMgYWxnb3JpdGhtIGNvbnRyaWJ1dG9yczoKKyAgQWFyb24gR3JvdGhlCisKK1RpZ2VyIGFsZ29yaXRobSBjb250cmlidXRvcnM6CisgIEFhcm9uIEdyb3RoZQorCitWSUEgUGFkTG9jayBjb250cmlidXRvcnM6CisgIE1pY2hhbCBMdWR2aWcKKworQ2FtZWxsaWEgYWxnb3JpdGhtIGNvbnRyaWJ1dG9yczoKKyAgTlRUKE5pcHBvbiBUZWxlZ3JhcGggYW5kIFRlbGVwaG9uZSBDb3Jwb3JhdGlvbikgKENhbWVsbGlhKQorCitHZW5lcmljIHNjYXR0ZXJ3YWxrIGNvZGUgYnkgQWRhbSBKLiBSaWNodGVyIDxhZGFtQHlnZ2RyYXNpbC5jb20+CisKK1BsZWFzZSBzZW5kIGFueSBjcmVkaXRzIHVwZGF0ZXMgb3IgY29ycmVjdGlvbnMgdG86CitIZXJiZXJ0IFh1IDxoZXJiZXJ0QGdvbmRvci5hcGFuYS5vcmcuYXU+CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY3J5cHRvL2FzeW1tZXRyaWMta2V5cy50eHQgYi9Eb2N1bWVudGF0aW9uL2NyeXB0by9hc3ltbWV0cmljLWtleXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMDdlMGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2NyeXB0by9hc3ltbWV0cmljLWtleXMudHh0CkBAIC0wLDAgKzEsMzEzIEBACisJCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCQlBU1lNTUVUUklDIC8gUFVCTElDLUtFWSBDUllQVE9HUkFQSFkgS0VZIFRZUEUKKwkJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0NvbnRlbnRzOgorCisgIC0gT3ZlcnZpZXcuCisgIC0gS2V5IGlkZW50aWZpY2F0aW9uLgorICAtIEFjY2Vzc2luZyBhc3ltbWV0cmljIGtleXMuCisgICAgLSBTaWduYXR1cmUgdmVyaWZpY2F0aW9uLgorICAtIEFzeW1tZXRyaWMga2V5IHN1YnR5cGVzLgorICAtIEluc3RhbnRpYXRpb24gZGF0YSBwYXJzZXJzLgorCisKKz09PT09PT09CitPVkVSVklFVworPT09PT09PT0KKworVGhlICJhc3ltbWV0cmljIiBrZXkgdHlwZSBpcyBkZXNpZ25lZCB0byBiZSBhIGNvbnRhaW5lciBmb3IgdGhlIGtleXMgdXNlZCBpbgorcHVibGljLWtleSBjcnlwdG9ncmFwaHksIHdpdGhvdXQgaW1wb3NpbmcgYW55IHBhcnRpY3VsYXIgcmVzdHJpY3Rpb25zIG9uIHRoZQorZm9ybSBvciBtZWNoYW5pc20gb2YgdGhlIGNyeXB0b2dyYXBoeSBvciBmb3JtIG9mIHRoZSBrZXkuCisKK1RoZSBhc3ltbWV0cmljIGtleSBpcyBnaXZlbiBhIHN1YnR5cGUgdGhhdCBkZWZpbmVzIHdoYXQgc29ydCBvZiBkYXRhIGlzCithc3NvY2lhdGVkIHdpdGggdGhlIGtleSBhbmQgcHJvdmlkZXMgb3BlcmF0aW9ucyB0byBkZXNjcmliZSBhbmQgZGVzdHJveSBpdC4KK0hvd2V2ZXIsIG5vIHJlcXVpcmVtZW50IGlzIG1hZGUgdGhhdCB0aGUga2V5IGRhdGEgYWN0dWFsbHkgYmUgc3RvcmVkIGluIHRoZQora2V5LgorCitBIGNvbXBsZXRlbHkgaW4ta2VybmVsIGtleSByZXRlbnRpb24gYW5kIG9wZXJhdGlvbiBzdWJ0eXBlIGNhbiBiZSBkZWZpbmVkLCBidXQKK2l0IHdvdWxkIGFsc28gYmUgcG9zc2libGUgdG8gcHJvdmlkZSBhY2Nlc3MgdG8gY3J5cHRvZ3JhcGhpYyBoYXJkd2FyZSAoc3VjaCBhcworYSBUUE0pIHRoYXQgbWlnaHQgYmUgdXNlZCB0byBib3RoIHJldGFpbiB0aGUgcmVsZXZhbnQga2V5IGFuZCBwZXJmb3JtCitvcGVyYXRpb25zIHVzaW5nIHRoYXQga2V5LiAgSW4gc3VjaCBhIGNhc2UsIHRoZSBhc3ltbWV0cmljIGtleSB3b3VsZCB0aGVuCittZXJlbHkgYmUgYW4gaW50ZXJmYWNlIHRvIHRoZSBUUE0gZHJpdmVyLgorCitBbHNvIHByb3ZpZGVkIGlzIHRoZSBjb25jZXB0IG9mIGEgZGF0YSBwYXJzZXIuICBEYXRhIHBhcnNlcnMgYXJlIHJlc3BvbnNpYmxlCitmb3IgZXh0cmFjdGluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBibG9icyBvZiBkYXRhIHBhc3NlZCB0byB0aGUgaW5zdGFudGlhdGlvbgorZnVuY3Rpb24uICBUaGUgZmlyc3QgZGF0YSBwYXJzZXIgdGhhdCByZWNvZ25pc2VzIHRoZSBibG9iIGdldHMgdG8gc2V0IHRoZQorc3VidHlwZSBvZiB0aGUga2V5IGFuZCBkZWZpbmUgdGhlIG9wZXJhdGlvbnMgdGhhdCBjYW4gYmUgZG9uZSBvbiB0aGF0IGtleS4KKworQSBkYXRhIHBhcnNlciBtYXkgaW50ZXJwcmV0IHRoZSBkYXRhIGJsb2IgYXMgY29udGFpbmluZyB0aGUgYml0cyByZXByZXNlbnRpbmcgYQora2V5LCBvciBpdCBtYXkgaW50ZXJwcmV0IGl0IGFzIGEgcmVmZXJlbmNlIHRvIGEga2V5IGhlbGQgc29tZXdoZXJlIGVsc2UgaW4gdGhlCitzeXN0ZW0gKGZvciBleGFtcGxlLCBhIFRQTSkuCisKKworPT09PT09PT09PT09PT09PT09CitLRVkgSURFTlRJRklDQVRJT04KKz09PT09PT09PT09PT09PT09PQorCitJZiBhIGtleSBpcyBhZGRlZCB3aXRoIGFuIGVtcHR5IG5hbWUsIHRoZSBpbnN0YW50aWF0aW9uIGRhdGEgcGFyc2VycyBhcmUgZ2l2ZW4KK3RoZSBvcHBvcnR1bml0eSB0byBwcmUtcGFyc2UgYSBrZXkgYW5kIHRvIGRldGVybWluZSB0aGUgZGVzY3JpcHRpb24gdGhlIGtleQorc2hvdWxkIGJlIGdpdmVuIGZyb20gdGhlIGNvbnRlbnQgb2YgdGhlIGtleS4KKworVGhpcyBjYW4gdGhlbiBiZSB1c2VkIHRvIHJlZmVyIHRvIHRoZSBrZXksIGVpdGhlciBieSBjb21wbGV0ZSBtYXRjaCBvciBieQorcGFydGlhbCBtYXRjaC4gIFRoZSBrZXkgdHlwZSBtYXkgYWxzbyB1c2Ugb3RoZXIgY3JpdGVyaWEgdG8gcmVmZXIgdG8gYSBrZXkuCisKK1RoZSBhc3ltbWV0cmljIGtleSB0eXBlJ3MgbWF0Y2ggZnVuY3Rpb24gY2FuIHRoZW4gcGVyZm9ybSBhIHdpZGVyIHJhbmdlIG9mCitjb21wYXJpc29ucyB0aGFuIGp1c3QgdGhlIHN0cmFpZ2h0Zm9yd2FyZCBjb21wYXJpc29uIG9mIHRoZSBkZXNjcmlwdGlvbiB3aXRoCit0aGUgY3JpdGVyaW9uIHN0cmluZzoKKworICgxKSBJZiB0aGUgY3JpdGVyaW9uIHN0cmluZyBpcyBvZiB0aGUgZm9ybSAiaWQ6PGhleGRpZ2l0cz4iIHRoZW4gdGhlIG1hdGNoCisgICAgIGZ1bmN0aW9uIHdpbGwgZXhhbWluZSBhIGtleSdzIGZpbmdlcnByaW50IHRvIHNlZSBpZiB0aGUgaGV4IGRpZ2l0cyBnaXZlbgorICAgICBhZnRlciB0aGUgImlkOiIgbWF0Y2ggdGhlIHRhaWwuICBGb3IgaW5zdGFuY2U6CisKKwlrZXljdGwgc2VhcmNoIEBzIGFzeW1tZXRyaWMgaWQ6NWFjYzIxNDIKKworICAgICB3aWxsIG1hdGNoIGEga2V5IHdpdGggZmluZ2VycHJpbnQ6CisKKwkxQTAwIDIwNDAgNzYwMSA3ODg5IERFMTEgIDg4MkMgMzgyMyAwNEFEIDVBQ0MgMjE0MgorCisgKDIpIElmIHRoZSBjcml0ZXJpb24gc3RyaW5nIGlzIG9mIHRoZSBmb3JtICI8c3VidHlwZT46PGhleGRpZ2l0cz4iIHRoZW4gdGhlCisgICAgIG1hdGNoIHdpbGwgbWF0Y2ggdGhlIElEIGFzIGluICgxKSwgYnV0IHdpdGggdGhlIGFkZGVkIHJlc3RyaWN0aW9uIHRoYXQKKyAgICAgb25seSBrZXlzIG9mIHRoZSBzcGVjaWZpZWQgc3VidHlwZSAoZS5nLiB0cG0pIHdpbGwgYmUgbWF0Y2hlZC4gIEZvcgorICAgICBpbnN0YW5jZToKKworCWtleWN0bCBzZWFyY2ggQHMgYXN5bW1ldHJpYyB0cG06NWFjYzIxNDIKKworTG9va2luZyBpbiAvcHJvYy9rZXlzLCB0aGUgbGFzdCA4IGhleCBkaWdpdHMgb2YgdGhlIGtleSBmaW5nZXJwcmludCBhcmUKK2Rpc3BsYXllZCwgYWxvbmcgd2l0aCB0aGUgc3VidHlwZToKKworCTFhMzllMTcxIEktLS0tLSAgICAgMSBwZXJtIDNmMDEwMDAwICAgICAwICAgICAwIGFzeW1tZXRyaSBtb2RzaWduLjA6IERTQSA1YWNjMjE0MiBbXQorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT0KK0FDQ0VTU0lORyBBU1lNTUVUUklDIEtFWVMKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworRm9yIGdlbmVyYWwgYWNjZXNzIHRvIGFzeW1tZXRyaWMga2V5cyBmcm9tIHdpdGhpbiB0aGUga2VybmVsLCB0aGUgZm9sbG93aW5nCitpbmNsdXNpb24gaXMgcmVxdWlyZWQ6CisKKwkjaW5jbHVkZSA8Y3J5cHRvL3B1YmxpY19rZXkuaD4KKworVGhpcyBnaXZlcyBhY2Nlc3MgdG8gZnVuY3Rpb25zIGZvciBkZWFsaW5nIHdpdGggYXN5bW1ldHJpYyAvIHB1YmxpYyBrZXlzLgorVGhyZWUgZW51bXMgYXJlIGRlZmluZWQgdGhlcmUgZm9yIHJlcHJlc2VudGluZyBwdWJsaWMta2V5IGNyeXB0b2dyYXBoeQorYWxnb3JpdGhtczoKKworCWVudW0gcGtleV9hbGdvCisKK2RpZ2VzdCBhbGdvcml0aG1zIHVzZWQgYnkgdGhvc2U6CisKKwllbnVtIHBrZXlfaGFzaF9hbGdvCisKK2FuZCBrZXkgaWRlbnRpZmllciByZXByZXNlbnRhdGlvbnM6CisKKwllbnVtIHBrZXlfaWRfdHlwZQorCitOb3RlIHRoYXQgdGhlIGtleSB0eXBlIHJlcHJlc2VudGF0aW9uIHR5cGVzIGFyZSByZXF1aXJlZCBiZWNhdXNlIGtleQoraWRlbnRpZmllcnMgZnJvbSBkaWZmZXJlbnQgc3RhbmRhcmRzIGFyZW4ndCBuZWNlc3NhcmlseSBjb21wYXRpYmxlLiAgRm9yCitpbnN0YW5jZSwgUEdQIGdlbmVyYXRlcyBrZXkgaWRlbnRpZmllcnMgYnkgaGFzaGluZyB0aGUga2V5IGRhdGEgcGx1cyBzb21lCitQR1Atc3BlY2lmaWMgbWV0YWRhdGEsIHdoZXJlYXMgWC41MDkgaGFzIGFyYml0cmFyeSBjZXJ0aWZpY2F0ZSBpZGVudGlmaWVycy4KKworVGhlIG9wZXJhdGlvbnMgZGVmaW5lZCB1cG9uIGEga2V5IGFyZToKKworICgxKSBTaWduYXR1cmUgdmVyaWZpY2F0aW9uLgorCitPdGhlciBvcGVyYXRpb25zIGFyZSBwb3NzaWJsZSAoc3VjaCBhcyBlbmNyeXB0aW9uKSB3aXRoIHRoZSBzYW1lIGtleSBkYXRhCityZXF1aXJlZCBmb3IgdmVyaWZpY2F0aW9uLCBidXQgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQsIGFuZCBvdGhlcnMKKyhlZy4gZGVjcnlwdGlvbiBhbmQgc2lnbmF0dXJlIGdlbmVyYXRpb24pIHJlcXVpcmUgZXh0cmEga2V5IGRhdGEuCisKKworU0lHTkFUVVJFIFZFUklGSUNBVElPTgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbiBvcGVyYXRpb24gaXMgcHJvdmlkZWQgdG8gcGVyZm9ybSBjcnlwdG9ncmFwaGljIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24sIHVzaW5nCithbiBhc3ltbWV0cmljIGtleSB0byBwcm92aWRlIG9yIHRvIHByb3ZpZGUgYWNjZXNzIHRvIHRoZSBwdWJsaWMga2V5LgorCisJaW50IHZlcmlmeV9zaWduYXR1cmUoY29uc3Qgc3RydWN0IGtleSAqa2V5LAorCQkJICAgICBjb25zdCBzdHJ1Y3QgcHVibGljX2tleV9zaWduYXR1cmUgKnNpZyk7CisKK1RoZSBjYWxsZXIgbXVzdCBoYXZlIGFscmVhZHkgb2J0YWluZWQgdGhlIGtleSBmcm9tIHNvbWUgc291cmNlIGFuZCBjYW4gdGhlbiB1c2UKK2l0IHRvIGNoZWNrIHRoZSBzaWduYXR1cmUuICBUaGUgY2FsbGVyIG11c3QgaGF2ZSBwYXJzZWQgdGhlIHNpZ25hdHVyZSBhbmQKK3RyYW5zZmVycmVkIHRoZSByZWxldmFudCBiaXRzIHRvIHRoZSBzdHJ1Y3R1cmUgcG9pbnRlZCB0byBieSBzaWcuCisKKwlzdHJ1Y3QgcHVibGljX2tleV9zaWduYXR1cmUgeworCQl1OCAqZGlnZXN0OworCQl1OCBkaWdlc3Rfc2l6ZTsKKwkJZW51bSBwa2V5X2hhc2hfYWxnbyBwa2V5X2hhc2hfYWxnbyA6IDg7CisJCXU4IG5yX21waTsKKwkJdW5pb24geworCQkJTVBJIG1waVsyXTsKKwkJCS4uLgorCQl9OworCX07CisKK1RoZSBhbGdvcml0aG0gdXNlZCBtdXN0IGJlIG5vdGVkIGluIHNpZy0+cGtleV9oYXNoX2FsZ28sIGFuZCBhbGwgdGhlIE1QSXMgdGhhdAorbWFrZSB1cCB0aGUgYWN0dWFsIHNpZ25hdHVyZSBtdXN0IGJlIHN0b3JlZCBpbiBzaWctPm1waVtdIGFuZCB0aGUgY291bnQgb2YgTVBJcworcGxhY2VkIGluIHNpZy0+bnJfbXBpLgorCitJbiBhZGRpdGlvbiwgdGhlIGRhdGEgbXVzdCBoYXZlIGJlZW4gZGlnZXN0ZWQgYnkgdGhlIGNhbGxlciBhbmQgdGhlIHJlc3VsdGluZworaGFzaCBtdXN0IGJlIHBvaW50ZWQgdG8gYnkgc2lnLT5kaWdlc3QgYW5kIHRoZSBzaXplIG9mIHRoZSBoYXNoIGJlIHBsYWNlZCBpbgorc2lnLT5kaWdlc3Rfc2l6ZS4KKworVGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIDAgdXBvbiBzdWNjZXNzIG9yIC1FS0VZUkVKRUNURUQgaWYgdGhlIHNpZ25hdHVyZQorZG9lc24ndCBtYXRjaC4KKworVGhlIGZ1bmN0aW9uIG1heSBhbHNvIHJldHVybiAtRU5PVFNVUFAgaWYgYW4gdW5zdXBwb3J0ZWQgcHVibGljLWtleSBhbGdvcml0aG0KK29yIHB1YmxpYy1rZXkvaGFzaCBhbGdvcml0aG0gY29tYmluYXRpb24gaXMgc3BlY2lmaWVkIG9yIHRoZSBrZXkgZG9lc24ndAorc3VwcG9ydCB0aGUgb3BlcmF0aW9uOyAtRUJBRE1TRyBvciAtRVJBTkdFIGlmIHNvbWUgb2YgdGhlIHBhcmFtZXRlcnMgaGF2ZSB3ZWlyZAorZGF0YTsgb3IgLUVOT01FTSBpZiBhbiBhbGxvY2F0aW9uIGNhbid0IGJlIHBlcmZvcm1lZC4gIC1FSU5WQUwgY2FuIGJlIHJldHVybmVkCitpZiB0aGUga2V5IGFyZ3VtZW50IGlzIHRoZSB3cm9uZyB0eXBlIG9yIGlzIGluY29tcGxldGVseSBzZXQgdXAuCisKKworPT09PT09PT09PT09PT09PT09PT09PT0KK0FTWU1NRVRSSUMgS0VZIFNVQlRZUEVTCis9PT09PT09PT09PT09PT09PT09PT09PQorCitBc3ltbWV0cmljIGtleXMgaGF2ZSBhIHN1YnR5cGUgdGhhdCBkZWZpbmVzIHRoZSBzZXQgb2Ygb3BlcmF0aW9ucyB0aGF0IGNhbiBiZQorcGVyZm9ybWVkIG9uIHRoYXQga2V5IGFuZCB0aGF0IGRldGVybWluZXMgd2hhdCBkYXRhIGlzIGF0dGFjaGVkIGFzIHRoZSBrZXkKK3BheWxvYWQuICBUaGUgcGF5bG9hZCBmb3JtYXQgaXMgZW50aXJlbHkgYXQgdGhlIHdoaW0gb2YgdGhlIHN1YnR5cGUuCisKK1RoZSBzdWJ0eXBlIGlzIHNlbGVjdGVkIGJ5IHRoZSBrZXkgZGF0YSBwYXJzZXIgYW5kIHRoZSBwYXJzZXIgbXVzdCBpbml0aWFsaXNlCit0aGUgZGF0YSByZXF1aXJlZCBmb3IgaXQuICBUaGUgYXN5bW1ldHJpYyBrZXkgcmV0YWlucyBhIHJlZmVyZW5jZSBvbiB0aGUKK3N1YnR5cGUgbW9kdWxlLgorCitUaGUgc3VidHlwZSBkZWZpbml0aW9uIHN0cnVjdHVyZSBjYW4gYmUgZm91bmQgaW46CisKKwkjaW5jbHVkZSA8a2V5cy9hc3ltbWV0cmljLXN1YnR5cGUuaD4KKworYW5kIGxvb2tzIGxpa2UgdGhlIGZvbGxvd2luZzoKKworCXN0cnVjdCBhc3ltbWV0cmljX2tleV9zdWJ0eXBlIHsKKwkJc3RydWN0IG1vZHVsZQkJKm93bmVyOworCQljb25zdCBjaGFyCQkqbmFtZTsKKworCQl2b2lkICgqZGVzY3JpYmUpKGNvbnN0IHN0cnVjdCBrZXkgKmtleSwgc3RydWN0IHNlcV9maWxlICptKTsKKwkJdm9pZCAoKmRlc3Ryb3kpKHZvaWQgKnBheWxvYWQpOworCQlpbnQgKCp2ZXJpZnlfc2lnbmF0dXJlKShjb25zdCBzdHJ1Y3Qga2V5ICprZXksCisJCQkJCWNvbnN0IHN0cnVjdCBwdWJsaWNfa2V5X3NpZ25hdHVyZSAqc2lnKTsKKwl9OworCitBc3ltbWV0cmljIGtleXMgcG9pbnQgdG8gdGhpcyB3aXRoIHRoZWlyIHBheWxvYWRbYXN5bV9zdWJ0eXBlXSBtZW1iZXIuCisKK1RoZSBvd25lciBhbmQgbmFtZSBmaWVsZHMgc2hvdWxkIGJlIHNldCB0byB0aGUgb3duaW5nIG1vZHVsZSBhbmQgdGhlIG5hbWUgb2YKK3RoZSBzdWJ0eXBlLiAgQ3VycmVudGx5LCB0aGUgbmFtZSBpcyBvbmx5IHVzZWQgZm9yIHByaW50IHN0YXRlbWVudHMuCisKK1RoZXJlIGFyZSBhIG51bWJlciBvZiBvcGVyYXRpb25zIGRlZmluZWQgYnkgdGhlIHN1YnR5cGU6CisKKyAoMSkgZGVzY3JpYmUoKS4KKworICAgICBNYW5kYXRvcnkuICBUaGlzIGFsbG93cyB0aGUgc3VidHlwZSB0byBkaXNwbGF5IHNvbWV0aGluZyBpbiAvcHJvYy9rZXlzCisgICAgIGFnYWluc3QgdGhlIGtleS4gIEZvciBpbnN0YW5jZSB0aGUgbmFtZSBvZiB0aGUgcHVibGljIGtleSBhbGdvcml0aG0gdHlwZQorICAgICBjb3VsZCBiZSBkaXNwbGF5ZWQuICBUaGUga2V5IHR5cGUgd2lsbCBkaXNwbGF5IHRoZSB0YWlsIG9mIHRoZSBrZXkKKyAgICAgaWRlbnRpdHkgc3RyaW5nIGFmdGVyIHRoaXMuCisKKyAoMikgZGVzdHJveSgpLgorCisgICAgIE1hbmRhdG9yeS4gIFRoaXMgc2hvdWxkIGZyZWUgdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggdGhlIGtleS4gIFRoZQorICAgICBhc3ltbWV0cmljIGtleSB3aWxsIGxvb2sgYWZ0ZXIgZnJlZWluZyB0aGUgZmluZ2VycHJpbnQgYW5kIHJlbGVhc2luZyB0aGUKKyAgICAgcmVmZXJlbmNlIG9uIHRoZSBzdWJ0eXBlIG1vZHVsZS4KKworICgzKSB2ZXJpZnlfc2lnbmF0dXJlKCkuCisKKyAgICAgT3B0aW9uYWwuICBUaGVzZSBhcmUgdGhlIGVudHJ5IHBvaW50cyBmb3IgdGhlIGtleSB1c2FnZSBvcGVyYXRpb25zLgorICAgICBDdXJyZW50bHkgdGhlcmUgaXMgb25seSB0aGUgb25lIGRlZmluZWQuICBJZiBub3Qgc2V0LCB0aGUgY2FsbGVyIHdpbGwgYmUKKyAgICAgZ2l2ZW4gLUVOT1RTVVBQLiAgVGhlIHN1YnR5cGUgbWF5IGRvIGFueXRoaW5nIGl0IGxpa2VzIHRvIGltcGxlbWVudCBhbgorICAgICBvcGVyYXRpb24sIGluY2x1ZGluZyBvZmZsb2FkaW5nIHRvIGhhcmR3YXJlLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09CitJTlNUQU5USUFUSU9OIERBVEEgUEFSU0VSUworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGFzeW1tZXRyaWMga2V5IHR5cGUgZG9lc24ndCBnZW5lcmFsbHkgd2FudCB0byBzdG9yZSBvciB0byBkZWFsIHdpdGggYSByYXcKK2Jsb2Igb2YgZGF0YSB0aGF0IGhvbGRzIHRoZSBrZXkgZGF0YS4gIEl0IHdvdWxkIGhhdmUgdG8gcGFyc2UgaXQgYW5kIGVycm9yCitjaGVjayBpdCBlYWNoIHRpbWUgaXQgd2FudGVkIHRvIHVzZSBpdC4gIEZ1cnRoZXIsIHRoZSBjb250ZW50cyBvZiB0aGUgYmxvYiBtYXkKK2hhdmUgdmFyaW91cyBjaGVja3MgdGhhdCBjYW4gYmUgcGVyZm9ybWVkIG9uIGl0IChlZy4gc2VsZi1zaWduYXR1cmVzLCB2YWxpZGl0eQorZGF0ZXMpIGFuZCBtYXkgY29udGFpbiB1c2VmdWwgZGF0YSBhYm91dCB0aGUga2V5IChpZGVudGlmaWVycywgY2FwYWJpbGl0aWVzKS4KKworQWxzbywgdGhlIGJsb2IgbWF5IHJlcHJlc2VudCBhIHBvaW50ZXIgdG8gc29tZSBoYXJkd2FyZSBjb250YWluaW5nIHRoZSBrZXkKK3JhdGhlciB0aGFuIHRoZSBrZXkgaXRzZWxmLgorCitFeGFtcGxlcyBvZiBibG9iIGZvcm1hdHMgZm9yIHdoaWNoIHBhcnNlcnMgY291bGQgYmUgaW1wbGVtZW50ZWQgaW5jbHVkZToKKworIC0gT3BlblBHUCBwYWNrZXQgc3RyZWFtIFtSRkMgNDg4MF0uCisgLSBYLjUwOSBBU04uMSBzdHJlYW0uCisgLSBQb2ludGVyIHRvIFRQTSBrZXkuCisgLSBQb2ludGVyIHRvIFVFRkkga2V5LgorCitEdXJpbmcga2V5IGluc3RhbnRpYXRpb24gZWFjaCBwYXJzZXIgaW4gdGhlIGxpc3QgaXMgdHJpZWQgdW50aWwgb25lIGRvZXNuJ3QKK3JldHVybiAtRUJBRE1TRy4KKworVGhlIHBhcnNlciBkZWZpbml0aW9uIHN0cnVjdHVyZSBjYW4gYmUgZm91bmQgaW46CisKKwkjaW5jbHVkZSA8a2V5cy9hc3ltbWV0cmljLXBhcnNlci5oPgorCithbmQgbG9va3MgbGlrZSB0aGUgZm9sbG93aW5nOgorCisJc3RydWN0IGFzeW1tZXRyaWNfa2V5X3BhcnNlciB7CisJCXN0cnVjdCBtb2R1bGUJKm93bmVyOworCQljb25zdCBjaGFyCSpuYW1lOworCisJCWludCAoKnBhcnNlKShzdHJ1Y3Qga2V5X3ByZXBhcnNlZF9wYXlsb2FkICpwcmVwKTsKKwl9OworCitUaGUgb3duZXIgYW5kIG5hbWUgZmllbGRzIHNob3VsZCBiZSBzZXQgdG8gdGhlIG93bmluZyBtb2R1bGUgYW5kIHRoZSBuYW1lIG9mCit0aGUgcGFyc2VyLgorCitUaGVyZSBpcyBjdXJyZW50bHkgb25seSBhIHNpbmdsZSBvcGVyYXRpb24gZGVmaW5lZCBieSB0aGUgcGFyc2VyLCBhbmQgaXQgaXMKK21hbmRhdG9yeToKKworICgxKSBwYXJzZSgpLgorCisgICAgIFRoaXMgaXMgY2FsbGVkIHRvIHByZXBhcnNlIHRoZSBrZXkgZnJvbSB0aGUga2V5IGNyZWF0aW9uIGFuZCB1cGRhdGUgcGF0aHMuCisgICAgIEluIHBhcnRpY3VsYXIsIGl0IGlzIGNhbGxlZCBkdXJpbmcgdGhlIGtleSBjcmVhdGlvbiBfYmVmb3JlXyBhIGtleSBpcworICAgICBhbGxvY2F0ZWQsIGFuZCBhcyBzdWNoLCBpcyBwZXJtaXR0ZWQgdG8gcHJvdmlkZSB0aGUga2V5J3MgZGVzY3JpcHRpb24gaW4KKyAgICAgdGhlIGNhc2UgdGhhdCB0aGUgY2FsbGVyIGRlY2xpbmVzIHRvIGRvIHNvLgorCisgICAgIFRoZSBjYWxsZXIgcGFzc2VzIGEgcG9pbnRlciB0byB0aGUgZm9sbG93aW5nIHN0cnVjdCB3aXRoIGFsbCBvZiB0aGUgZmllbGRzCisgICAgIGNsZWFyZWQsIGV4Y2VwdCBmb3IgZGF0YSwgZGF0YWxlbiBhbmQgcXVvdGFsZW4gW3NlZQorICAgICBEb2N1bWVudGF0aW9uL3NlY3VyaXR5L2tleXMudHh0XS4KKworCXN0cnVjdCBrZXlfcHJlcGFyc2VkX3BheWxvYWQgeworCQljaGFyCQkqZGVzY3JpcHRpb247CisJCXZvaWQJCSpwYXlsb2FkWzRdOworCQljb25zdCB2b2lkCSpkYXRhOworCQlzaXplX3QJCWRhdGFsZW47CisJCXNpemVfdAkJcXVvdGFsZW47CisJfTsKKworICAgICBUaGUgaW5zdGFudGlhdGlvbiBkYXRhIGlzIGluIGEgYmxvYiBwb2ludGVkIHRvIGJ5IGRhdGEgYW5kIGlzIGRhdGFsZW4gaW4KKyAgICAgc2l6ZS4gIFRoZSBwYXJzZSgpIGZ1bmN0aW9uIGlzIG5vdCBwZXJtaXR0ZWQgdG8gY2hhbmdlIHRoZXNlIHR3byB2YWx1ZXMgYXQKKyAgICAgYWxsLCBhbmQgc2hvdWxkbid0IGNoYW5nZSBhbnkgb2YgdGhlIG90aGVyIHZhbHVlcyBfdW5sZXNzXyB0aGV5IGFyZQorICAgICByZWNvZ25pc2UgdGhlIGJsb2IgZm9ybWF0IGFuZCB3aWxsIG5vdCByZXR1cm4gLUVCQURNU0cgdG8gaW5kaWNhdGUgaXQgaXMKKyAgICAgbm90IHRoZWlycy4KKworICAgICBJZiB0aGUgcGFyc2VyIGlzIGhhcHB5IHdpdGggdGhlIGJsb2IsIGl0IHNob3VsZCBwcm9wb3NlIGEgZGVzY3JpcHRpb24gZm9yCisgICAgIHRoZSBrZXkgYW5kIGF0dGFjaCBpdCB0byAtPmRlc2NyaXB0aW9uLCAtPnBheWxvYWRbYXN5bV9zdWJ0eXBlXSBzaG91bGQgYmUKKyAgICAgc2V0IHRvIHBvaW50IHRvIHRoZSBzdWJ0eXBlIHRvIGJlIHVzZWQsIC0+cGF5bG9hZFthc3ltX2NyeXB0b10gc2hvdWxkIGJlCisgICAgIHNldCB0byBwb2ludCB0byB0aGUgaW5pdGlhbGlzZWQgZGF0YSBmb3IgdGhhdCBzdWJ0eXBlLAorICAgICAtPnBheWxvYWRbYXN5bV9rZXlfaWRzXSBzaG91bGQgcG9pbnQgdG8gb25lIG9yIG1vcmUgaGV4IGZpbmdlcnByaW50cyBhbmQKKyAgICAgcXVvdGFsZW4gc2hvdWxkIGJlIHVwZGF0ZWQgdG8gaW5kaWNhdGUgaG93IG11Y2ggcXVvdGEgdGhpcyBrZXkgc2hvdWxkCisgICAgIGFjY291bnQgZm9yLgorCisgICAgIFdoZW4gY2xlYXJpbmcgdXAsIHRoZSBkYXRhIGF0dGFjaGVkIHRvIC0+cGF5bG9hZFthc3ltX2tleV9pZHNdIGFuZAorICAgICAtPmRlc2NyaXB0aW9uIHdpbGwgYmUga2ZyZWUoKSdkIGFuZCB0aGUgZGF0YSBhdHRhY2hlZCB0bworICAgICAtPnBheWxvYWRbYXNtX2NyeXB0b10gd2lsbCBiZSBwYXNzZWQgdG8gdGhlIHN1YnR5cGUncyAtPmRlc3Ryb3koKSBtZXRob2QKKyAgICAgdG8gYmUgZGlzcG9zZWQgb2YuICBBIG1vZHVsZSByZWZlcmVuY2UgZm9yIHRoZSBzdWJ0eXBlIHBvaW50ZWQgdG8gYnkKKyAgICAgLT5wYXlsb2FkW2FzeW1fc3VidHlwZV0gd2lsbCBiZSBwdXQuCisKKworICAgICBJZiB0aGUgZGF0YSBmb3JtYXQgaXMgbm90IHJlY29nbmlzZWQsIC1FQkFETVNHIHNob3VsZCBiZSByZXR1cm5lZC4gIElmIGl0CisgICAgIGlzIHJlY29nbmlzZWQsIGJ1dCB0aGUga2V5IGNhbm5vdCBmb3Igc29tZSByZWFzb24gYmUgc2V0IHVwLCBzb21lIG90aGVyCisgICAgIG5lZ2F0aXZlIGVycm9yIGNvZGUgc2hvdWxkIGJlIHJldHVybmVkLiAgT24gc3VjY2VzcywgMCBzaG91bGQgYmUgcmV0dXJuZWQuCisKKyAgICAgVGhlIGtleSdzIGZpbmdlcnByaW50IHN0cmluZyBtYXkgYmUgcGFydGlhbGx5IG1hdGNoZWQgdXBvbi4gIEZvciBhCisgICAgIHB1YmxpYy1rZXkgYWxnb3JpdGhtIHN1Y2ggYXMgUlNBIGFuZCBEU0EgdGhpcyB3aWxsIGxpa2VseSBiZSBhIHByaW50YWJsZQorICAgICBoZXggdmVyc2lvbiBvZiB0aGUga2V5J3MgZmluZ2VycHJpbnQuCisKK0Z1bmN0aW9ucyBhcmUgcHJvdmlkZWQgdG8gcmVnaXN0ZXIgYW5kIHVucmVnaXN0ZXIgcGFyc2VyczoKKworCWludCByZWdpc3Rlcl9hc3ltbWV0cmljX2tleV9wYXJzZXIoc3RydWN0IGFzeW1tZXRyaWNfa2V5X3BhcnNlciAqcGFyc2VyKTsKKwl2b2lkIHVucmVnaXN0ZXJfYXN5bW1ldHJpY19rZXlfcGFyc2VyKHN0cnVjdCBhc3ltbWV0cmljX2tleV9wYXJzZXIgKnN1YnR5cGUpOworCitQYXJzZXJzIG1heSBub3QgaGF2ZSB0aGUgc2FtZSBuYW1lLiAgVGhlIG5hbWVzIGFyZSBvdGhlcndpc2Ugb25seSB1c2VkIGZvcgorZGlzcGxheWluZyBpbiBkZWJ1Z2dpbmcgbWVzc2FnZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2NyeXB0by9hc3luYy10eC1hcGkudHh0IGIvRG9jdW1lbnRhdGlvbi9jcnlwdG8vYXN5bmMtdHgtYXBpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YmYxYmUyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9jcnlwdG8vYXN5bmMtdHgtYXBpLnR4dApAQCAtMCwwICsxLDIyNSBAQAorCQkgQXN5bmNocm9ub3VzIFRyYW5zZmVycy9UcmFuc2Zvcm1zIEFQSQorCisxIElOVFJPRFVDVElPTgorCisyIEdFTkVBTE9HWQorCiszIFVTQUdFCiszLjEgR2VuZXJhbCBmb3JtYXQgb2YgdGhlIEFQSQorMy4yIFN1cHBvcnRlZCBvcGVyYXRpb25zCiszLjMgRGVzY3JpcHRvciBtYW5hZ2VtZW50CiszLjQgV2hlbiBkb2VzIHRoZSBvcGVyYXRpb24gZXhlY3V0ZT8KKzMuNSBXaGVuIGRvZXMgdGhlIG9wZXJhdGlvbiBjb21wbGV0ZT8KKzMuNiBDb25zdHJhaW50cworMy43IEV4YW1wbGUKKworNCBETUFFTkdJTkUgRFJJVkVSIERFVkVMT1BFUiBOT1RFUworNC4xIENvbmZvcm1hbmNlIHBvaW50cworNC4yICJNeSBhcHBsaWNhdGlvbiBuZWVkcyBleGNsdXNpdmUgY29udHJvbCBvZiBoYXJkd2FyZSBjaGFubmVscyIKKworNSBTT1VSQ0UKKworLS0tCisKKzEgSU5UUk9EVUNUSU9OCisKK1RoZSBhc3luY190eCBBUEkgcHJvdmlkZXMgbWV0aG9kcyBmb3IgZGVzY3JpYmluZyBhIGNoYWluIG9mIGFzeW5jaHJvbm91cworYnVsayBtZW1vcnkgdHJhbnNmZXJzL3RyYW5zZm9ybXMgd2l0aCBzdXBwb3J0IGZvciBpbnRlci10cmFuc2FjdGlvbmFsCitkZXBlbmRlbmNpZXMuICBJdCBpcyBpbXBsZW1lbnRlZCBhcyBhIGRtYWVuZ2luZSBjbGllbnQgdGhhdCBzbW9vdGhzIG92ZXIKK3RoZSBkZXRhaWxzIG9mIGRpZmZlcmVudCBoYXJkd2FyZSBvZmZsb2FkIGVuZ2luZSBpbXBsZW1lbnRhdGlvbnMuICBDb2RlCit0aGF0IGlzIHdyaXR0ZW4gdG8gdGhlIEFQSSBjYW4gb3B0aW1pemUgZm9yIGFzeW5jaHJvbm91cyBvcGVyYXRpb24gYW5kCit0aGUgQVBJIHdpbGwgZml0IHRoZSBjaGFpbiBvZiBvcGVyYXRpb25zIHRvIHRoZSBhdmFpbGFibGUgb2ZmbG9hZAorcmVzb3VyY2VzLgorCisyIEdFTkVBTE9HWQorCitUaGUgQVBJIHdhcyBpbml0aWFsbHkgZGVzaWduZWQgdG8gb2ZmbG9hZCB0aGUgbWVtb3J5IGNvcHkgYW5kCit4b3ItcGFyaXR5LWNhbGN1bGF0aW9ucyBvZiB0aGUgbWQtcmFpZDUgZHJpdmVyIHVzaW5nIHRoZSBvZmZsb2FkIGVuZ2luZXMKK3ByZXNlbnQgaW4gdGhlIEludGVsKFIpIFhzY2FsZSBzZXJpZXMgb2YgSS9PIHByb2Nlc3NvcnMuICBJdCBhbHNvIGJ1aWx0CitvbiB0aGUgJ2RtYWVuZ2luZScgbGF5ZXIgZGV2ZWxvcGVkIGZvciBvZmZsb2FkaW5nIG1lbW9yeSBjb3BpZXMgaW4gdGhlCituZXR3b3JrIHN0YWNrIHVzaW5nIEludGVsKFIpIEkvT0FUIGVuZ2luZXMuICBUaGUgZm9sbG93aW5nIGRlc2lnbgorZmVhdHVyZXMgc3VyZmFjZWQgYXMgYSByZXN1bHQ6CisxLyBpbXBsaWNpdCBzeW5jaHJvbm91cyBwYXRoOiB1c2VycyBvZiB0aGUgQVBJIGRvIG5vdCBuZWVkIHRvIGtub3cgaWYKKyAgIHRoZSBwbGF0Zm9ybSB0aGV5IGFyZSBydW5uaW5nIG9uIGhhcyBvZmZsb2FkIGNhcGFiaWxpdGllcy4gIFRoZQorICAgb3BlcmF0aW9uIHdpbGwgYmUgb2ZmbG9hZGVkIHdoZW4gYW4gZW5naW5lIGlzIGF2YWlsYWJsZSBhbmQgY2FycmllZCBvdXQKKyAgIGluIHNvZnR3YXJlIG90aGVyd2lzZS4KKzIvIGNyb3NzIGNoYW5uZWwgZGVwZW5kZW5jeSBjaGFpbnM6IHRoZSBBUEkgYWxsb3dzIGEgY2hhaW4gb2YgZGVwZW5kZW50CisgICBvcGVyYXRpb25zIHRvIGJlIHN1Ym1pdHRlZCwgbGlrZSB4b3ItPmNvcHktPnhvciBpbiB0aGUgcmFpZDUgY2FzZS4gIFRoZQorICAgQVBJIGF1dG9tYXRpY2FsbHkgaGFuZGxlcyBjYXNlcyB3aGVyZSB0aGUgdHJhbnNpdGlvbiBmcm9tIG9uZSBvcGVyYXRpb24KKyAgIHRvIGFub3RoZXIgaW1wbGllcyBhIGhhcmR3YXJlIGNoYW5uZWwgc3dpdGNoLgorMy8gZG1hZW5naW5lIGV4dGVuc2lvbnMgdG8gc3VwcG9ydCBtdWx0aXBsZSBjbGllbnRzIGFuZCBvcGVyYXRpb24gdHlwZXMKKyAgIGJleW9uZCAnbWVtY3B5JworCiszIFVTQUdFCisKKzMuMSBHZW5lcmFsIGZvcm1hdCBvZiB0aGUgQVBJOgorc3RydWN0IGRtYV9hc3luY190eF9kZXNjcmlwdG9yICoKK2FzeW5jXzxvcGVyYXRpb24+KDxvcCBzcGVjaWZpYyBwYXJhbWV0ZXJzPiwgc3RydWN0IGFzeW5jX3N1Ym1pdCBjdGwgKnN1Ym1pdCkKKworMy4yIFN1cHBvcnRlZCBvcGVyYXRpb25zOgorbWVtY3B5ICAtIG1lbW9yeSBjb3B5IGJldHdlZW4gYSBzb3VyY2UgYW5kIGEgZGVzdGluYXRpb24gYnVmZmVyCittZW1zZXQgIC0gZmlsbCBhIGRlc3RpbmF0aW9uIGJ1ZmZlciB3aXRoIGEgYnl0ZSB2YWx1ZQoreG9yICAgICAtIHhvciBhIHNlcmllcyBvZiBzb3VyY2UgYnVmZmVycyBhbmQgd3JpdGUgdGhlIHJlc3VsdCB0byBhCisJICBkZXN0aW5hdGlvbiBidWZmZXIKK3hvcl92YWwgLSB4b3IgYSBzZXJpZXMgb2Ygc291cmNlIGJ1ZmZlcnMgYW5kIHNldCBhIGZsYWcgaWYgdGhlCisJICByZXN1bHQgaXMgemVyby4gIFRoZSBpbXBsZW1lbnRhdGlvbiBhdHRlbXB0cyB0byBwcmV2ZW50CisJICB3cml0ZXMgdG8gbWVtb3J5CitwcQktIGdlbmVyYXRlIHRoZSBwK3EgKHJhaWQ2IHN5bmRyb21lKSBmcm9tIGEgc2VyaWVzIG9mIHNvdXJjZSBidWZmZXJzCitwcV92YWwgIC0gdmFsaWRhdGUgdGhhdCBhIHAgYW5kIG9yIHEgYnVmZmVyIGFyZSBpbiBzeW5jIHdpdGggYSBnaXZlbiBzZXJpZXMgb2YKKwkgIHNvdXJjZXMKK2RhdGFwCS0gKHJhaWQ2X2RhdGFwX3JlY292KSByZWNvdmVyIGEgcmFpZDYgZGF0YSBibG9jayBhbmQgdGhlIHAgYmxvY2sKKwkgIGZyb20gdGhlIGdpdmVuIHNvdXJjZXMKKzJkYXRhCS0gKHJhaWQ2XzJkYXRhX3JlY292KSByZWNvdmVyIDIgcmFpZDYgZGF0YSBibG9ja3MgZnJvbSB0aGUgZ2l2ZW4KKwkgIHNvdXJjZXMKKworMy4zIERlc2NyaXB0b3IgbWFuYWdlbWVudDoKK1RoZSByZXR1cm4gdmFsdWUgaXMgbm9uLU5VTEwgYW5kIHBvaW50cyB0byBhICdkZXNjcmlwdG9yJyB3aGVuIHRoZSBvcGVyYXRpb24KK2hhcyBiZWVuIHF1ZXVlZCB0byBleGVjdXRlIGFzeW5jaHJvbm91c2x5LiAgRGVzY3JpcHRvcnMgYXJlIHJlY3ljbGVkCityZXNvdXJjZXMsIHVuZGVyIGNvbnRyb2wgb2YgdGhlIG9mZmxvYWQgZW5naW5lIGRyaXZlciwgdG8gYmUgcmV1c2VkIGFzCitvcGVyYXRpb25zIGNvbXBsZXRlLiAgV2hlbiBhbiBhcHBsaWNhdGlvbiBuZWVkcyB0byBzdWJtaXQgYSBjaGFpbiBvZgorb3BlcmF0aW9ucyBpdCBtdXN0IGd1YXJhbnRlZSB0aGF0IHRoZSBkZXNjcmlwdG9yIGlzIG5vdCBhdXRvbWF0aWNhbGx5IHJlY3ljbGVkCitiZWZvcmUgdGhlIGRlcGVuZGVuY3kgaXMgc3VibWl0dGVkLiAgVGhpcyByZXF1aXJlcyB0aGF0IGFsbCBkZXNjcmlwdG9ycyBiZQorYWNrbm93bGVkZ2VkIGJ5IHRoZSBhcHBsaWNhdGlvbiBiZWZvcmUgdGhlIG9mZmxvYWQgZW5naW5lIGRyaXZlciBpcyBhbGxvd2VkIHRvCityZWN5Y2xlIChvciBmcmVlKSB0aGUgZGVzY3JpcHRvci4gIEEgZGVzY3JpcHRvciBjYW4gYmUgYWNrZWQgYnkgb25lIG9mIHRoZQorZm9sbG93aW5nIG1ldGhvZHM6CisxLyBzZXR0aW5nIHRoZSBBU1lOQ19UWF9BQ0sgZmxhZyBpZiBubyBjaGlsZCBvcGVyYXRpb25zIGFyZSB0byBiZSBzdWJtaXR0ZWQKKzIvIHN1Ym1pdHRpbmcgYW4gdW5hY2tub3dsZWRnZWQgZGVzY3JpcHRvciBhcyBhIGRlcGVuZGVuY3kgdG8gYW5vdGhlcgorICAgYXN5bmNfdHggY2FsbCB3aWxsIGltcGxpY2l0bHkgc2V0IHRoZSBhY2tub3dsZWRnZWQgc3RhdGUuCiszLyBjYWxsaW5nIGFzeW5jX3R4X2FjaygpIG9uIHRoZSBkZXNjcmlwdG9yLgorCiszLjQgV2hlbiBkb2VzIHRoZSBvcGVyYXRpb24gZXhlY3V0ZT8KK09wZXJhdGlvbnMgZG8gbm90IGltbWVkaWF0ZWx5IGlzc3VlIGFmdGVyIHJldHVybiBmcm9tIHRoZQorYXN5bmNfPG9wZXJhdGlvbj4gY2FsbC4gIE9mZmxvYWQgZW5naW5lIGRyaXZlcnMgYmF0Y2ggb3BlcmF0aW9ucyB0bworaW1wcm92ZSBwZXJmb3JtYW5jZSBieSByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIG1taW8gY3ljbGVzIG5lZWRlZCB0bworbWFuYWdlIHRoZSBjaGFubmVsLiAgT25jZSBhIGRyaXZlci1zcGVjaWZpYyB0aHJlc2hvbGQgaXMgbWV0IHRoZSBkcml2ZXIKK2F1dG9tYXRpY2FsbHkgaXNzdWVzIHBlbmRpbmcgb3BlcmF0aW9ucy4gIEFuIGFwcGxpY2F0aW9uIGNhbiBmb3JjZSB0aGlzCitldmVudCBieSBjYWxsaW5nIGFzeW5jX3R4X2lzc3VlX3BlbmRpbmdfYWxsKCkuICBUaGlzIG9wZXJhdGVzIG9uIGFsbAorY2hhbm5lbHMgc2luY2UgdGhlIGFwcGxpY2F0aW9uIGhhcyBubyBrbm93bGVkZ2Ugb2YgY2hhbm5lbCB0byBvcGVyYXRpb24KK21hcHBpbmcuCisKKzMuNSBXaGVuIGRvZXMgdGhlIG9wZXJhdGlvbiBjb21wbGV0ZT8KK1RoZXJlIGFyZSB0d28gbWV0aG9kcyBmb3IgYW4gYXBwbGljYXRpb24gdG8gbGVhcm4gYWJvdXQgdGhlIGNvbXBsZXRpb24KK29mIGFuIG9wZXJhdGlvbi4KKzEvIENhbGwgZG1hX3dhaXRfZm9yX2FzeW5jX3R4KCkuICBUaGlzIGNhbGwgY2F1c2VzIHRoZSBDUFUgdG8gc3BpbiB3aGlsZQorICAgaXQgcG9sbHMgZm9yIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBvcGVyYXRpb24uICBJdCBoYW5kbGVzIGRlcGVuZGVuY3kKKyAgIGNoYWlucyBhbmQgaXNzdWluZyBwZW5kaW5nIG9wZXJhdGlvbnMuCisyLyBTcGVjaWZ5IGEgY29tcGxldGlvbiBjYWxsYmFjay4gIFRoZSBjYWxsYmFjayByb3V0aW5lIHJ1bnMgaW4gdGFza2xldAorICAgY29udGV4dCBpZiB0aGUgb2ZmbG9hZCBlbmdpbmUgZHJpdmVyIHN1cHBvcnRzIGludGVycnVwdHMsIG9yIGl0IGlzCisgICBjYWxsZWQgaW4gYXBwbGljYXRpb24gY29udGV4dCBpZiB0aGUgb3BlcmF0aW9uIGlzIGNhcnJpZWQgb3V0CisgICBzeW5jaHJvbm91c2x5IGluIHNvZnR3YXJlLiAgVGhlIGNhbGxiYWNrIGNhbiBiZSBzZXQgaW4gdGhlIGNhbGwgdG8KKyAgIGFzeW5jXzxvcGVyYXRpb24+LCBvciB3aGVuIHRoZSBhcHBsaWNhdGlvbiBuZWVkcyB0byBzdWJtaXQgYSBjaGFpbiBvZgorICAgdW5rbm93biBsZW5ndGggaXQgY2FuIHVzZSB0aGUgYXN5bmNfdHJpZ2dlcl9jYWxsYmFjaygpIHJvdXRpbmUgdG8gc2V0IGEKKyAgIGNvbXBsZXRpb24gaW50ZXJydXB0L2NhbGxiYWNrIGF0IHRoZSBlbmQgb2YgdGhlIGNoYWluLgorCiszLjYgQ29uc3RyYWludHM6CisxLyBDYWxscyB0byBhc3luY188b3BlcmF0aW9uPiBhcmUgbm90IHBlcm1pdHRlZCBpbiBJUlEgY29udGV4dC4gIE90aGVyCisgICBjb250ZXh0cyBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIGNvbnN0cmFpbnQgIzIgaXMgbm90IHZpb2xhdGVkLgorMi8gQ29tcGxldGlvbiBjYWxsYmFjayByb3V0aW5lcyBjYW5ub3Qgc3VibWl0IG5ldyBvcGVyYXRpb25zLiAgVGhpcworICAgcmVzdWx0cyBpbiByZWN1cnNpb24gaW4gdGhlIHN5bmNocm9ub3VzIGNhc2UgYW5kIHNwaW5fbG9ja3MgYmVpbmcKKyAgIGFjcXVpcmVkIHR3aWNlIGluIHRoZSBhc3luY2hyb25vdXMgY2FzZS4KKworMy43IEV4YW1wbGU6CitQZXJmb3JtIGEgeG9yLT5jb3B5LT54b3Igb3BlcmF0aW9uIHdoZXJlIGVhY2ggb3BlcmF0aW9uIGRlcGVuZHMgb24gdGhlCityZXN1bHQgZnJvbSB0aGUgcHJldmlvdXMgb3BlcmF0aW9uOgorCit2b2lkIGNhbGxiYWNrKHZvaWQgKnBhcmFtKQoreworCXN0cnVjdCBjb21wbGV0aW9uICpjbXAgPSBwYXJhbTsKKworCWNvbXBsZXRlKGNtcCk7Cit9CisKK3ZvaWQgcnVuX3hvcl9jb3B5X3hvcihzdHJ1Y3QgcGFnZSAqKnhvcl9zcmNzLAorCQkgICAgICBpbnQgeG9yX3NyY19jbnQsCisJCSAgICAgIHN0cnVjdCBwYWdlICp4b3JfZGVzdCwKKwkJICAgICAgc2l6ZV90IHhvcl9sZW4sCisJCSAgICAgIHN0cnVjdCBwYWdlICpjb3B5X3NyYywKKwkJICAgICAgc3RydWN0IHBhZ2UgKmNvcHlfZGVzdCwKKwkJICAgICAgc2l6ZV90IGNvcHlfbGVuKQoreworCXN0cnVjdCBkbWFfYXN5bmNfdHhfZGVzY3JpcHRvciAqdHg7CisJYWRkcl9jb252X3QgYWRkcl9jb252W3hvcl9zcmNfY250XTsKKwlzdHJ1Y3QgYXN5bmNfc3VibWl0X2N0bCBzdWJtaXQ7CisJYWRkcl9jb252X3QgYWRkcl9jb252W05ESVNLU107CisJc3RydWN0IGNvbXBsZXRpb24gY21wOworCisJaW5pdF9hc3luY19zdWJtaXQoJnN1Ym1pdCwgQVNZTkNfVFhfWE9SX0RST1BfRFNULCBOVUxMLCBOVUxMLCBOVUxMLAorCQkJICBhZGRyX2NvbnYpOworCXR4ID0gYXN5bmNfeG9yKHhvcl9kZXN0LCB4b3Jfc3JjcywgMCwgeG9yX3NyY19jbnQsIHhvcl9sZW4sICZzdWJtaXQpCisKKwlzdWJtaXQtPmRlcGVuZF90eCA9IHR4OworCXR4ID0gYXN5bmNfbWVtY3B5KGNvcHlfZGVzdCwgY29weV9zcmMsIDAsIDAsIGNvcHlfbGVuLCAmc3VibWl0KTsKKworCWluaXRfY29tcGxldGlvbigmY21wKTsKKwlpbml0X2FzeW5jX3N1Ym1pdCgmc3VibWl0LCBBU1lOQ19UWF9YT1JfRFJPUF9EU1QgfCBBU1lOQ19UWF9BQ0ssIHR4LAorCQkJICBjYWxsYmFjaywgJmNtcCwgYWRkcl9jb252KTsKKwl0eCA9IGFzeW5jX3hvcih4b3JfZGVzdCwgeG9yX3NyY3MsIDAsIHhvcl9zcmNfY250LCB4b3JfbGVuLCAmc3VibWl0KTsKKworCWFzeW5jX3R4X2lzc3VlX3BlbmRpbmdfYWxsKCk7CisKKwl3YWl0X2Zvcl9jb21wbGV0aW9uKCZjbXApOworfQorCitTZWUgaW5jbHVkZS9saW51eC9hc3luY190eC5oIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBmbGFncy4gIFNlZSB0aGUKK29wc19ydW5fKiBhbmQgb3BzX2NvbXBsZXRlXyogcm91dGluZXMgaW4gZHJpdmVycy9tZC9yYWlkNS5jIGZvciBtb3JlCitpbXBsZW1lbnRhdGlvbiBleGFtcGxlcy4KKworNCBEUklWRVIgREVWRUxPUE1FTlQgTk9URVMKKworNC4xIENvbmZvcm1hbmNlIHBvaW50czoKK1RoZXJlIGFyZSBhIGZldyBjb25mb3JtYW5jZSBwb2ludHMgcmVxdWlyZWQgaW4gZG1hZW5naW5lIGRyaXZlcnMgdG8KK2FjY29tbW9kYXRlIGFzc3VtcHRpb25zIG1hZGUgYnkgYXBwbGljYXRpb25zIHVzaW5nIHRoZSBhc3luY190eCBBUEk6CisxLyBDb21wbGV0aW9uIGNhbGxiYWNrcyBhcmUgZXhwZWN0ZWQgdG8gaGFwcGVuIGluIHRhc2tsZXQgY29udGV4dAorMi8gZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgZmllbGRzIGFyZSBuZXZlciBtYW5pcHVsYXRlZCBpbiBJUlEgY29udGV4dAorMy8gVXNlIGFzeW5jX3R4X3J1bl9kZXBlbmRlbmNpZXMoKSBpbiB0aGUgZGVzY3JpcHRvciBjbGVhbiB1cCBwYXRoIHRvCisgICBoYW5kbGUgc3VibWlzc2lvbiBvZiBkZXBlbmRlbnQgb3BlcmF0aW9ucworCis0LjIgIk15IGFwcGxpY2F0aW9uIG5lZWRzIGV4Y2x1c2l2ZSBjb250cm9sIG9mIGhhcmR3YXJlIGNoYW5uZWxzIgorUHJpbWFyaWx5IHRoaXMgcmVxdWlyZW1lbnQgYXJpc2VzIGZyb20gY2FzZXMgd2hlcmUgYSBETUEgZW5naW5lIGRyaXZlcgoraXMgYmVpbmcgdXNlZCB0byBzdXBwb3J0IGRldmljZS10by1tZW1vcnkgb3BlcmF0aW9ucy4gIEEgY2hhbm5lbCB0aGF0IGlzCitwZXJmb3JtaW5nIHRoZXNlIG9wZXJhdGlvbnMgY2Fubm90LCBmb3IgbWFueSBwbGF0Zm9ybSBzcGVjaWZpYyByZWFzb25zLAorYmUgc2hhcmVkLiAgRm9yIHRoZXNlIGNhc2VzIHRoZSBkbWFfcmVxdWVzdF9jaGFubmVsKCkgaW50ZXJmYWNlIGlzCitwcm92aWRlZC4KKworVGhlIGludGVyZmFjZSBpczoKK3N0cnVjdCBkbWFfY2hhbiAqZG1hX3JlcXVlc3RfY2hhbm5lbChkbWFfY2FwX21hc2tfdCBtYXNrLAorCQkJCSAgICAgZG1hX2ZpbHRlcl9mbiBmaWx0ZXJfZm4sCisJCQkJICAgICB2b2lkICpmaWx0ZXJfcGFyYW0pOworCitXaGVyZSBkbWFfZmlsdGVyX2ZuIGlzIGRlZmluZWQgYXM6Cit0eXBlZGVmIGJvb2wgKCpkbWFfZmlsdGVyX2ZuKShzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4sIHZvaWQgKmZpbHRlcl9wYXJhbSk7CisKK1doZW4gdGhlIG9wdGlvbmFsICdmaWx0ZXJfZm4nIHBhcmFtZXRlciBpcyBzZXQgdG8gTlVMTAorZG1hX3JlcXVlc3RfY2hhbm5lbCBzaW1wbHkgcmV0dXJucyB0aGUgZmlyc3QgY2hhbm5lbCB0aGF0IHNhdGlzZmllcyB0aGUKK2NhcGFiaWxpdHkgbWFzay4gIE90aGVyd2lzZSwgd2hlbiB0aGUgbWFzayBwYXJhbWV0ZXIgaXMgaW5zdWZmaWNpZW50IGZvcgorc3BlY2lmeWluZyB0aGUgbmVjZXNzYXJ5IGNoYW5uZWwsIHRoZSBmaWx0ZXJfZm4gcm91dGluZSBjYW4gYmUgdXNlZCB0bworZGlzcG9zaXRpb24gdGhlIGF2YWlsYWJsZSBjaGFubmVscyBpbiB0aGUgc3lzdGVtLiBUaGUgZmlsdGVyX2ZuIHJvdXRpbmUKK2lzIGNhbGxlZCBvbmNlIGZvciBlYWNoIGZyZWUgY2hhbm5lbCBpbiB0aGUgc3lzdGVtLiAgVXBvbiBzZWVpbmcgYQorc3VpdGFibGUgY2hhbm5lbCBmaWx0ZXJfZm4gcmV0dXJucyBETUFfQUNLIHdoaWNoIGZsYWdzIHRoYXQgY2hhbm5lbCB0bworYmUgdGhlIHJldHVybiB2YWx1ZSBmcm9tIGRtYV9yZXF1ZXN0X2NoYW5uZWwuICBBIGNoYW5uZWwgYWxsb2NhdGVkIHZpYQordGhpcyBpbnRlcmZhY2UgaXMgZXhjbHVzaXZlIHRvIHRoZSBjYWxsZXIsIHVudGlsIGRtYV9yZWxlYXNlX2NoYW5uZWwoKQoraXMgY2FsbGVkLgorCitUaGUgRE1BX1BSSVZBVEUgY2FwYWJpbGl0eSBmbGFnIGlzIHVzZWQgdG8gdGFnIGRtYSBkZXZpY2VzIHRoYXQgc2hvdWxkCitub3QgYmUgdXNlZCBieSB0aGUgZ2VuZXJhbC1wdXJwb3NlIGFsbG9jYXRvci4gIEl0IGNhbiBiZSBzZXQgYXQKK2luaXRpYWxpemF0aW9uIHRpbWUgaWYgaXQgaXMga25vd24gdGhhdCBhIGNoYW5uZWwgd2lsbCBhbHdheXMgYmUKK3ByaXZhdGUuICBBbHRlcm5hdGl2ZWx5LCBpdCBpcyBzZXQgd2hlbiBkbWFfcmVxdWVzdF9jaGFubmVsKCkgZmluZHMgYW4KK3VudXNlZCAicHVibGljIiBjaGFubmVsLgorCitBIGNvdXBsZSBjYXZlYXRzIHRvIG5vdGUgd2hlbiBpbXBsZW1lbnRpbmcgYSBkcml2ZXIgYW5kIGNvbnN1bWVyOgorMS8gT25jZSBhIGNoYW5uZWwgaGFzIGJlZW4gcHJpdmF0ZWx5IGFsbG9jYXRlZCBpdCB3aWxsIG5vIGxvbmdlciBiZQorICAgY29uc2lkZXJlZCBieSB0aGUgZ2VuZXJhbC1wdXJwb3NlIGFsbG9jYXRvciBldmVuIGFmdGVyIGEgY2FsbCB0bworICAgZG1hX3JlbGVhc2VfY2hhbm5lbCgpLgorMi8gU2luY2UgY2FwYWJpbGl0aWVzIGFyZSBzcGVjaWZpZWQgYXQgdGhlIGRldmljZSBsZXZlbCBhIGRtYV9kZXZpY2UKKyAgIHdpdGggbXVsdGlwbGUgY2hhbm5lbHMgd2lsbCBlaXRoZXIgaGF2ZSBhbGwgY2hhbm5lbHMgcHVibGljLCBvciBhbGwKKyAgIGNoYW5uZWxzIHByaXZhdGUuCisKKzUgU09VUkNFCisKK2luY2x1ZGUvbGludXgvZG1hZW5naW5lLmg6IGNvcmUgaGVhZGVyIGZpbGUgZm9yIERNQSBkcml2ZXJzIGFuZCBhcGkgdXNlcnMKK2RyaXZlcnMvZG1hL2RtYWVuZ2luZS5jOiBvZmZsb2FkIGVuZ2luZSBjaGFubmVsIG1hbmFnZW1lbnQgcm91dGluZXMKK2RyaXZlcnMvZG1hLzogbG9jYXRpb24gZm9yIG9mZmxvYWQgZW5naW5lIGRyaXZlcnMKK2luY2x1ZGUvbGludXgvYXN5bmNfdHguaDogY29yZSBoZWFkZXIgZmlsZSBmb3IgdGhlIGFzeW5jX3R4IGFwaQorY3J5cHRvL2FzeW5jX3R4L2FzeW5jX3R4LmM6IGFzeW5jX3R4IGludGVyZmFjZSB0byBkbWFlbmdpbmUgYW5kIGNvbW1vbiBjb2RlCitjcnlwdG8vYXN5bmNfdHgvYXN5bmNfbWVtY3B5LmM6IGNvcHkgb2ZmbG9hZAorY3J5cHRvL2FzeW5jX3R4L2FzeW5jX3hvci5jOiB4b3IgYW5kIHhvciB6ZXJvIHN1bSBvZmZsb2FkCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2NyeXB0by9kZXNjb3JlLXJlYWRtZS50eHQgYi9Eb2N1bWVudGF0aW9uL2NyeXB0by9kZXNjb3JlLXJlYWRtZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZlOWU2MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vY3J5cHRvL2Rlc2NvcmUtcmVhZG1lLnR4dApAQCAtMCwwICsxLDM1MiBAQAorQmVsb3cgaXMgdGhlIG9yaWdpbmFsIFJFQURNRSBmaWxlIGZyb20gdGhlIGRlc2NvcmUuc2hhciBwYWNrYWdlLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2RlcyAtIGZhc3QgJiBwb3J0YWJsZSBERVMgZW5jcnlwdGlvbiAmIGRlY3J5cHRpb24uCitDb3B5cmlnaHQgKEMpIDE5OTIgIERhbmEgTC4gSG93CisKK1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CitpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cit0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCitidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCitZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCithbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisKK0F1dGhvcidzIGFkZHJlc3M6IGhvd0Bpc2wuc3RhbmZvcmQuZWR1CisKKyRJZDogUkVBRE1FLHYgMS4xNSAxOTkyLzA1LzIwIDAwOjI1OjMyIGhvdyBFICQKKworCis9PT4+IFRvIGNvbXBpbGUgYWZ0ZXIgdW50YXJyaW5nL3Vuc2hhcnJpbmcsIGp1c3QgYG1ha2UnIDw8PT0KKworCitUaGlzIHBhY2thZ2Ugd2FzIGRlc2lnbmVkIHdpdGggdGhlIGZvbGxvd2luZyBnb2FsczoKKzEuCUhpZ2hlc3QgcG9zc2libGUgZW5jcnlwdGlvbi9kZWNyeXB0aW9uIFBFUkZPUk1BTkNFLgorMi4JUE9SVEFCSUxJVFkgdG8gYW55IGJ5dGUtYWRkcmVzc2FibGUgaG9zdCB3aXRoIGEgMzJiaXQgdW5zaWduZWQgQyB0eXBlCiszLglQbHVnLWNvbXBhdGlibGUgcmVwbGFjZW1lbnQgZm9yIEtFUkJFUk9TJ3MgbG93LWxldmVsIHJvdXRpbmVzLgorCitUaGlzIHNlY29uZCByZWxlYXNlIGluY2x1ZGVzIGEgbnVtYmVyIG9mIHBlcmZvcm1hbmNlIGVuaGFuY2VtZW50cyBmb3IKK3JlZ2lzdGVyLXN0YXJ2ZWQgbWFjaGluZXMuICBNeSBkaXNjdXNzaW9ucyB3aXRoIFJpY2hhcmQgT3V0ZXJicmlkZ2UsCis3MTc1NS4yMDRAY29tcHVzZXJ2ZS5jb20sIHNwYXJrZWQgYSBudW1iZXIgb2YgdGhlc2UgZW5oYW5jZW1lbnRzLgorCitUbyBtb3JlIHJhcGlkbHkgdW5kZXJzdGFuZCB0aGUgY29kZSBpbiB0aGlzIHBhY2thZ2UsIGluc3BlY3QgZGVzU21hbGxGaXBzLmkKKyhjcmVhdGVkIGJ5IHR5cGluZyBgbWFrZScpIEJFRk9SRSB5b3UgdGFja2xlIGRlc0NvZGUuaC4gIFRoZSBsYXR0ZXIgaXMgc2V0Cit1cCBpbiBhIHBhcmFtZXRlcml6ZWQgZmFzaGlvbiBzbyBpdCBjYW4gZWFzaWx5IGJlIG1vZGlmaWVkIGJ5IHNwZWVkLWRhZW1vbgoraGFja2VycyBpbiBwdXJzdWl0IG9mIHRoYXQgbGFzdCBtaWNyb3NlY29uZC4gIFlvdSB3aWxsIGZpbmQgaXQgbW9yZQoraWxsdW1pbmF0aW5nIHRvIGluc3BlY3Qgb25lIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLAorYW5kIHRoZW4gbW92ZSBvbiB0byB0aGUgY29tbW9uIGFic3RyYWN0IHNrZWxldG9uIHdpdGggdGhpcyBvbmUgaW4gbWluZC4KKworCitwZXJmb3JtYW5jZSBjb21wYXJpc29uIHRvIG90aGVyIGF2YWlsYWJsZSBkZXMgY29kZSB3aGljaCBpIGNvdWxkCitjb21waWxlIG9uIGEgU1BBUkNTdGF0aW9uIDEgKGNjIC1PNCwgZ2NjIC1PMik6CisKK3RoaXMgY29kZSAoYnl0ZS1vcmRlciBpbmRlcGVuZGVudCk6CisgICAzMHVzIHBlciBlbmNyeXB0aW9uIChvcHRpb25zOiA2NGsgdGFibGVzLCBubyBJUC9GUCkKKyAgIDMzdXMgcGVyIGVuY3J5cHRpb24gKG9wdGlvbnM6IDY0ayB0YWJsZXMsIEZJUFMgc3RhbmRhcmQgYml0IG9yZGVyaW5nKQorICAgNDV1cyBwZXIgZW5jcnlwdGlvbiAob3B0aW9uczogIDJrIHRhYmxlcywgbm8gSVAvRlApCisgICA0OHVzIHBlciBlbmNyeXB0aW9uIChvcHRpb25zOiAgMmsgdGFibGVzLCBGSVBTIHN0YW5kYXJkIGJpdCBvcmRlcmluZykKKyAgMjc1dXMgdG8gc2V0IGEgbmV3IGtleSAodXNlcyAxayBvZiBrZXkgdGFibGVzKQorCXRoaXMgaGFzIHRoZSBxdWlja2VzdCBlbmNyeXB0aW9uL2RlY3J5cHRpb24gcm91dGluZXMgaSd2ZSBzZWVuLgorCXNpbmNlIGkgd2FzIGludGVyZXN0ZWQgaW4gZmFzdCBkZXMgZmlsdGVycyByYXRoZXIgdGhhbiBjcnlwdCgzKQorCWFuZCBwYXNzd29yZCBjcmFja2luZywgaSBoYXZlbid0IHJlYWxseSBib3RoZXJlZCB5ZXQgdG8gc3BlZWQgdXAKKwl0aGUga2V5IHNldHRpbmcgcm91dGluZS4gYWxzbywgaSBoYXZlIG5vIGludGVyZXN0IGluIHJlLWltcGxlbWVudGluZworCWFsbCB0aGUgb3RoZXIganVuayBpbiB0aGUgbWl0IGtlcmJlcm9zIGRlcyBsaWJyYXJ5LCBzbyBpJ3ZlIGp1c3QKKwlwcm92aWRlZCBteSByb3V0aW5lcyB3aXRoIGxpdHRsZSBzdHViIGludGVyZmFjZXMgc28gdGhleSBjYW4gYmUKKwl1c2VkIGFzIGRyb3AtaW4gcmVwbGFjZW1lbnRzIHdpdGggbWl0J3MgY29kZSBvciBhbnkgb2YgdGhlIG1pdC0KKwljb21wYXRpYmxlIHBhY2thZ2VzIGJlbG93LiAobm90ZSB0aGF0IHRoZSBmaXJzdCB0d28gdGltaW5ncyBhYm92ZQorCWFyZSBoaWdobHkgdmFyaWFibGUgYmVjYXVzZSBvZiBjYWNoZSBlZmZlY3RzKS4KKwora2VyYmVyb3MgZGVzIHJlcGxhY2VtZW50IGZyb20gYXVzdHJhbGlhICh2ZXJzaW9uIDEuOTUpOgorICAgNTN1cyBwZXIgZW5jcnlwdGlvbiAodXNlcyAyayBvZiB0YWJsZXMpCisgICA5NnVzIHRvIHNldCBhIG5ldyBrZXkgKHVzZXMgMi4yNWsgb2Yga2V5IHRhYmxlcykKKwlzbyBkZXNwaXRlIHRoZSBhdXRob3IncyBpbmNsdXNpb24gb2Ygc29tZSBvZiB0aGUgcGVyZm9ybWFuY2UKKwlpbXByb3ZlbWVudHMgaSBoYWQgc3VnZ2VzdGVkIHRvIGhpbSwgdGhpcyBwYWNrYWdlJ3MKKwllbmNyeXB0aW9uL2RlY3J5cHRpb24gaXMgc3RpbGwgc2xvd2VyIG9uIHRoZSBzcGFyYyBhbmQgNjgwMDAuCisJbW9yZSBzcGVjaWZpY2FsbHksIDE5LTQwJSBzbG93ZXIgb24gdGhlIDY4MDIwIGFuZCAxMS0zNSUgc2xvd2VyCisJb24gdGhlIHNwYXJjLCAgZGVwZW5kaW5nIG9uIHRoZSBjb21waWxlcjsKKwlpbiBmdWxsIGdvcnkgZGV0YWlsIChBTFRfRUNCIGlzIGEgbGliZGVzIHZhcmlhbnQpOgorCWNvbXBpbGVyICAgCW1hY2hpbmUJCWRlc0NvcmUJbGliZGVzCUFMVF9FQ0IJc2xvd2VyIGJ5CisJZ2NjIDIuMSAtTzIJU3VuIDMvMTEwCTMwNCAgdVMJMzY5LjV1Uwk0NjEuOHVTCSAyMiUKKwljYyAgICAgIC1PMQlTdW4gMy8xMTAJMzM2ICB1Uwk0MzYuNnVTCTM5OS4zdVMJIDE5JQorCWNjICAgICAgLU8yCVN1biAzLzExMAkzNjAgIHVTCTUzMi40dVMJNTA1LjF1UwkgNDAlCisJY2MgICAgICAtTzQJU3VuIDMvMTEwCTM2NSAgdVMJNTMyLjN1Uwk1MDUuM3VTCSAzOCUKKwlnY2MgMi4xIC1PMglTdW4gNC81MAkgNDggIHVTCSA1My40dVMJIDU3LjV1UwkgMTElCisJY2MgICAgICAtTzIJU3VuIDQvNTAJIDQ4ICB1UwkgNjQuNnVTCSA2NC43dVMJIDM1JQorCWNjICAgICAgLU80CVN1biA0LzUwCSA0OCAgdVMJIDY0Ljd1UwkgNjQuOXVTCSAzNSUKKwkobXkgdGltZSBtZWFzdXJlbWVudHMgYXJlIG5vdCBhcyBhY2N1cmF0ZSBhcyBoaXMpLgorICAgdGhlIGNvbW1lbnRzIGluIG15IGZpcnN0IHJlbGVhc2Ugb2YgZGVzQ29yZSBvbiB2ZXJzaW9uIDEuOTI6CisgICA2OHVzIHBlciBlbmNyeXB0aW9uICh1c2VzIDJrIG9mIHRhYmxlcykKKyAgIDk2dXMgdG8gc2V0IGEgbmV3IGtleSAodXNlcyAyLjI1ayBvZiBrZXkgdGFibGVzKQorCXRoaXMgaXMgYSB2ZXJ5IG5pY2UgcGFja2FnZSB3aGljaCBpbXBsZW1lbnRzIHRoZSBtb3N0IGltcG9ydGFudAorCW9mIHRoZSBvcHRpbWl6YXRpb25zIHdoaWNoIGkgZGlkIGluIG15IGVuY3J5cHRpb24gcm91dGluZXMuCisJaXQncyBhIGJpdCB3ZWFrIG9uIGNvbW1vbiBsb3ctbGV2ZWwgb3B0aW1pemF0aW9ucyB3aGljaCBpcyB3aHkKKwlpdCdzIDM5JS0xMDYlIHNsb3dlci4gIGJlY2F1c2UgaGUgd2FzIGludGVyZXN0ZWQgaW4gZmFzdCBjcnlwdCgzKSBhbmQKKwlwYXNzd29yZC1jcmFja2luZyBhcHBsaWNhdGlvbnMsICBoZSBhbHNvIHVzZWQgdGhlIHNhbWUgaWRlYXMgdG8KKwlzcGVlZCB1cCB0aGUga2V5LXNldHRpbmcgcm91dGluZXMgd2l0aCBpbXByZXNzaXZlIHJlc3VsdHMuCisJKGF0IHNvbWUgcG9pbnQgaSBtYXkgZG8gdGhlIHNhbWUgaW4gbXkgcGFja2FnZSkuICBoZSBhbHNvIGltcGxlbWVudHMKKwl0aGUgcmVzdCBvZiB0aGUgbWl0IGRlcyBsaWJyYXJ5LgorCShjb2RlIGZyb20gZWF5QHBzeWNoLnBzeS51cS5vei5hdSB2aWEgY29tcC5zb3VyY2VzLm1pc2MpCisKK2Zhc3QgY3J5cHQoMykgcGFja2FnZSBmcm9tIGRlbm1hcms6CisJdGhlIGRlcyByb3V0aW5lIGhlcmUgaXMgYnVyaWVkIGluc2lkZSBhIGxvb3AgdG8gZG8gdGhlCisJY3J5cHQgZnVuY3Rpb24gYW5kIGkgZGlkbid0IGZlZWwgbGlrZSByaXBwaW5nIGl0IG91dCBhbmQgbWVhc3VyaW5nCisJcGVyZm9ybWFuY2UuIGhpcyBjb2RlIHRha2VzIDI2IHNwYXJjIGluc3RydWN0aW9ucyB0byBjb21wdXRlIG9uZQorCWRlcyBpdGVyYXRpb247IGFib3ZlLCBRdWljayAoNjRrKSB0YWtlcyAyMSBhbmQgU21hbGwgKDJrKSB0YWtlcyAzNy4KKwloZSBjbGFpbXMgdG8gdXNlIDI4MGsgb2YgdGFibGVzIGJ1dCB0aGUgaXRlcmF0aW9uIGNhbGN1bGF0aW9uIHNlZW1zCisJdG8gdXNlIG9ubHkgMTI4ay4gIGhpcyB0YWJsZXMgYW5kIGNvZGUgYXJlIG1hY2hpbmUgaW5kZXBlbmRlbnQuCisJKGNvZGUgZnJvbSBnbGFkQGRhaW1pLmFhdS5kayB2aWEgYWx0LnNvdXJjZXMgb3IgY29tcC5zb3VyY2VzLm1pc2MpCisKK3N3ZWRpc2ggcmVpbXBsZW1lbnRhdGlvbiBvZiBLZXJiZXJvcyBkZXMgbGlicmFyeQorICAxMDh1cyBwZXIgZW5jcnlwdGlvbiAodXNlcyAzNGsgd29ydGggb2YgdGFibGVzKQorICAxMzR1cyB0byBzZXQgYSBuZXcga2V5ICh1c2VzIDMyayBvZiBrZXkgdGFibGVzIHRvIGdldCB0aGlzIHNwZWVkISkKKwl0aGUgdGFibGVzIHVzZWQgc2VlbSB0byBiZSBtYWNoaW5lLWluZGVwZW5kZW50OworCWhlIHNlZW1zIHRvIGhhdmUgaW5jbHVkZWQgYSBsb3Qgb2Ygc3BlY2lhbCBjYXNlIGNvZGUKKwlzbyB0aGF0LCBlLmcuLCBgbG9uZycgbG9hZHMgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiA0IGBjaGFyJyBsb2FkcworCXdoZW4gdGhlIG1hY2hpbmUncyBhcmNoaXRlY3R1cmUgYWxsb3dzIGl0LgorCShjb2RlIG9idGFpbmVkIGZyb20gY2hhbG1lcnMuc2U6cHViL2RlcykKKworY3JhY2sgMy4zYyBwYWNrYWdlIGZyb20gZW5nbGFuZDoKKwlhcyBpbiBjcnlwdCBhYm92ZSwgdGhlIGRlcyByb3V0aW5lIGlzIGJ1cmllZCBpbiBhIGxvb3AuIGl0J3MKKwlhbHNvIHZlcnkgbW9kaWZpZWQgZm9yIGNyeXB0LiAgaGlzIGl0ZXJhdGlvbiBjb2RlIHVzZXMgMTZrCisJb2YgdGFibGVzIGFuZCBhcHBlYXJzIHRvIGJlIHNsb3cuCisJKGNvZGUgb2J0YWluZWQgZnJvbSBhZW1AYWJlci5hYy51ayB2aWEgYWx0LnNvdXJjZXMgb3IgY29tcC5zb3VyY2VzLm1pc2MpCisKK2BgaGlnaGx5IG9wdGltaXplZCcnIGFuZCB0d2Vha2VkIEtlcmJlcm9zL0F0aGVuYSBjb2RlIChieXRlLW9yZGVyIGRlcGVuZGVudCk6CisgIDE2NXVzIHBlciBlbmNyeXB0aW9uICh1c2VzIDZrIHdvcnRoIG9mIHRhYmxlcykKKyAgNDc4dXMgdG8gc2V0IGEgbmV3IGtleSAodXNlcyA8MWsgb2Yga2V5IHRhYmxlcykKKwlzbyBkZXNwaXRlIHRoZSBjb21tZW50cyBpbiB0aGlzIGNvZGUsIGl0IHdhcyBwb3NzaWJsZSB0byBnZXQKKwlmYXN0ZXIgY29kZSBBTkQgc21hbGxlciB0YWJsZXMsIGFzIHdlbGwgYXMgbWFraW5nIHRoZSB0YWJsZXMKKwltYWNoaW5lLWluZGVwZW5kZW50LgorCShjb2RlIG9idGFpbmVkIGZyb20gcHJlcC5haS5taXQuZWR1KQorCitVQyBCZXJrZWxleSBjb2RlIChkZXBlbmRzIG9uIG1hY2hpbmUtZW5kZWRuZXNzKToKKyAgMjI2dXMgcGVyIGVuY3J5cHRpb24KKzEwODQ4dXMgdG8gc2V0IGEgbmV3IGtleQorCXRhYmxlIHNpemVzIGFyZSB1bmNsZWFyLCBidXQgdGhleSBkb24ndCBsb29rIHZlcnkgc21hbGwKKwkoY29kZSBvYnRhaW5lZCBmcm9tIHd1YXJjaGl2ZS53dXN0bC5lZHUpCisKKworbW90aXZhdGlvbiBhbmQgaGlzdG9yeQorCithIHdoaWxlIGFnbyBpIHdhbnRlZCBzb21lIGRlcyByb3V0aW5lcyBhbmQgdGhlIHJvdXRpbmVzIGRvY3VtZW50ZWQgb24gc3VuJ3MKK21hbiBwYWdlcyBlaXRoZXIgZGlkbid0IGV4aXN0IG9yIGR1bXBlZCBjb3JlLiAgaSBoYWQgaGVhcmQgb2Yga2VyYmVyb3MsCithbmQga25ldyB0aGF0IGl0IHVzZWQgZGVzLCAgc28gaSBmaWd1cmVkIGknZCB1c2UgaXRzIHJvdXRpbmVzLiAgYnV0IG9uY2UKK2kgZ290IGl0IGFuZCBsb29rZWQgYXQgdGhlIGNvZGUsICBpdCByZWFsbHkgc2V0IG9mZiBhIGxvdCBvZiBwZXQgcGVldmVzIC0KK2l0IHdhcyB0b28gY29udm9sdXRlZCwgdGhlIGNvZGUgaGFkIGJlZW4gd3JpdHRlbiB3aXRob3V0IHRha2luZworYWR2YW50YWdlIG9mIHRoZSByZWd1bGFyIHN0cnVjdHVyZSBvZiBvcGVyYXRpb25zIHN1Y2ggYXMgSVAsIEUsIGFuZCBGUAorKGkuZS4gdGhlIGF1dGhvciBkaWRuJ3Qgc2l0IGRvd24gYW5kIHRoaW5rIGJlZm9yZSBjb2RpbmcpLAoraXQgd2FzIGV4Y2Vzc2l2ZWx5IHNsb3csICB0aGUgYXV0aG9yIGhhZCBhdHRlbXB0ZWQgdG8gY2xhcmlmeSB0aGUgY29kZQorYnkgYWRkaW5nIE1PUkUgc3RhdGVtZW50cyB0byBtYWtlIHRoZSBkYXRhIG1vdmVtZW50IG1vcmUgYGNvbnNpc3RlbnQnCitpbnN0ZWFkIG9mIHNpbXBsaWZ5aW5nIGhpcyBpbXBsZW1lbnRhdGlvbiBhbmQgY3V0dGluZyBkb3duIG9uIGFsbCBkYXRhCittb3ZlbWVudCAoaW4gcGFydGljdWxhciwgaGlzIHVzZSBvZiBMMSwgUjEsIEwyLCBSMiksIGFuZCBpdCB3YXMgZnVsbCBvZgoraWRpb3RpYyBgdHdlYWtzJyBmb3IgcGFydGljdWxhciBtYWNoaW5lcyB3aGljaCBmYWlsZWQgdG8gZGVsaXZlciBzaWduaWZpY2FudAorc3BlZWR1cHMgYnV0IHdoaWNoIGRpZCBvYmZ1c2NhdGUgZXZlcnl0aGluZy4gIHNvIGkgdG9vayB0aGUgdGVzdCBkYXRhCitmcm9tIGhpcyB2ZXJpZmljYXRpb24gcHJvZ3JhbSBhbmQgcmV3cm90ZSBldmVyeXRoaW5nIGVsc2UuCisKK2Egd2hpbGUgbGF0ZXIgaSByYW4gYWNyb3NzIHRoZSBncmVhdCBjcnlwdCgzKSBwYWNrYWdlIG1lbnRpb25lZCBhYm92ZS4KK3RoZSBmYWN0IHRoYXQgdGhpcyBndXkgd2FzIGNvbXB1dGluZyAyIHNib3hlcyBwZXIgdGFibGUgbG9va3VwIHJhdGhlcgordGhhbiBvbmUgKGFuZCB1c2luZyBhIE1VQ0ggbGFyZ2VyIHRhYmxlIGluIHRoZSBwcm9jZXNzKSBlbWJvbGRlbmVkIG1lIHRvCitkbyB0aGUgc2FtZSAtIGl0IHdhcyBhIHRyaXZpYWwgY2hhbmdlIGZyb20gd2hpY2ggaSBoYWQgYmVlbiBzY2FyZWQgYXdheQorYnkgdGhlIGxhcmdlciB0YWJsZSBzaXplLiAgaW4gaGlzIGNhc2UgaGUgZGlkbid0IHJlYWxpemUgeW91IGRvbid0IG5lZWQgdG8ga2VlcAordGhlIHdvcmtpbmcgZGF0YSBpbiBUV08gZm9ybXMsIG9uZSBmb3IgZWFzeSB1c2Ugb2YgaGFsZiB0aGUgc2JveGVzIGluCitpbmRleGluZywgdGhlIG90aGVyIGZvciBlYXN5IHVzZSBvZiB0aGUgb3RoZXIgaGFsZjsgaW5zdGVhZCB5b3UgY2FuIGtlZXAKK2l0IGluIHRoZSBmb3JtIGZvciB0aGUgZmlyc3QgaGFsZiBhbmQgdXNlIGEgc2ltcGxlIHJvdGF0ZSB0byBnZXQgdGhlIG90aGVyCitoYWxmLiAgdGhpcyBtZWFucyBpIGhhdmUgKGFsbW9zdCkgaGFsZiB0aGUgZGF0YSBtYW5pcHVsYXRpb24gYW5kIGhhbGYKK3RoZSB0YWJsZSBzaXplLiAgaW4gZmFpcm5lc3MgdGhvdWdoIGhlIG1pZ2h0IGJlIGVuY29kaW5nIHNvbWV0aGluZyBwYXJ0aWN1bGFyCit0byBjcnlwdCgzKSBpbiBoaXMgdGFibGVzIC0gaSBkaWRuJ3QgY2hlY2suCisKK2knbSBnbGFkIHRoYXQgaSBpbXBsZW1lbnRlZCBpdCB0aGUgd2F5IGkgZGlkLCBiZWNhdXNlIHRoaXMgQyB2ZXJzaW9uIGlzCitwb3J0YWJsZSAodGhlIGlmZGVmJ3MgYXJlIHBlcmZvcm1hbmNlIGVuaGFuY2VtZW50cykgYW5kIGl0IGlzIGZhc3RlcgordGhhbiB2ZXJzaW9ucyBoYW5kLXdyaXR0ZW4gaW4gYXNzZW1ibHkgZm9yIHRoZSBzcGFyYyEKKworCitwb3J0aW5nIG5vdGVzCisKK29uZSB0aGluZyBpIGRpZCBub3Qgd2FudCB0byBkbyB3YXMgd3JpdGUgYW4gZW5vcm1vdXMgbWVzcword2hpY2ggZGVwZW5kZWQgb24gZW5kZWRuZXNzIGFuZCBvdGhlciBtYWNoaW5lIHF1aXJrcywKK2FuZCB3aGljaCBuZWNlc3NhcmlseSBwcm9kdWNlZCBkaWZmZXJlbnQgY29kZSBhbmQgZGlmZmVyZW50IGxvb2t1cCB0YWJsZXMKK2ZvciBkaWZmZXJlbnQgbWFjaGluZXMuICBzZWUgdGhlIGtlcmJlcm9zIGNvZGUgZm9yIGFuIGV4YW1wbGUKK29mIHdoYXQgaSBkaWRuJ3Qgd2FudCB0byBkbzsgYWxsIHRoZWlyIGVuZGVkbmVzcy1zcGVjaWZpYyBgb3B0aW1pemF0aW9ucycKK29iZnVzY2F0ZSB0aGUgY29kZSBhbmQgaW4gdGhlIGVuZCB3ZXJlIHNsb3dlciB0aGFuIGEgc2ltcGxlciBtYWNoaW5lCitpbmRlcGVuZGVudCBhcHByb2FjaC4gIGhvd2V2ZXIsIHRoZXJlIGFyZSBhbHdheXMgc29tZSBwb3J0YWJpbGl0eQorY29uc2lkZXJhdGlvbnMgb2Ygc29tZSBraW5kLCBhbmQgaSBoYXZlIGluY2x1ZGVkIHNvbWUgb3B0aW9ucworZm9yIHZhcnlpbmcgbnVtYmVycyBvZiByZWdpc3RlciB2YXJpYWJsZXMuCitwZXJoYXBzIHNvbWUgd2lsbCBzdGlsbCByZWdhcmQgdGhlIHJlc3VsdCBhcyBhIG1lc3MhCisKKzEpIGkgYXNzdW1lIGV2ZXJ5dGhpbmcgaXMgYnl0ZSBhZGRyZXNzYWJsZSwgYWx0aG91Z2ggaSBkb24ndCBhY3R1YWxseQorICAgZGVwZW5kIG9uIHRoZSBieXRlIG9yZGVyLCBhbmQgdGhhdCBieXRlcyBhcmUgOCBiaXRzLgorICAgaSBhc3N1bWUgd29yZCBwb2ludGVycyBjYW4gYmUgZnJlZWx5IGNhc3QgdG8gYW5kIGZyb20gY2hhciBwb2ludGVycy4KKyAgIG5vdGUgdGhhdCA5OSUgb2YgQyBwcm9ncmFtcyBtYWtlIHRoZXNlIGFzc3VtcHRpb25zLgorICAgaSBhbHdheXMgdXNlIHVuc2lnbmVkIGNoYXIncyBpZiB0aGUgaGlnaCBiaXQgY291bGQgYmUgc2V0LgorMikgdGhlIHR5cGVkZWYgYHdvcmQnIG1lYW5zIGEgMzIgYml0IHVuc2lnbmVkIGludGVncmFsIHR5cGUuCisgICBpZiBgdW5zaWduZWQgbG9uZycgaXMgbm90IDMyIGJpdHMsIGNoYW5nZSB0aGUgdHlwZWRlZiBpbiBkZXNDb3JlLmguCisgICBpIGFzc3VtZSBzaXplb2Yod29yZCkgPT0gNCBFVkVSWVdIRVJFLgorCit0aGUgKHdvcnN0LWNhc2UpIGNvc3Qgb2YgbXkgTk9UIGRvaW5nIGVuZGVkbmVzcy1zcGVjaWZpYyBvcHRpbWl6YXRpb25zCitpbiB0aGUgZGF0YSBsb2FkaW5nIGFuZCBzdG9yaW5nIGNvZGUgc3Vycm91bmRpbmcgdGhlIGtleSBpdGVyYXRpb25zCitpcyBsZXNzIHRoYW4gMTIlLiAgYWxzbywgdGhlcmUgaXMgdGhlIGFkZGVkIGJlbmVmaXQgdGhhdAordGhlIGlucHV0IGFuZCBvdXRwdXQgd29yayBhcmVhcyBkbyBub3QgbmVlZCB0byBiZSB3b3JkLWFsaWduZWQuCisKKworT1BUSU9OQUwgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9ucworCisxKSB5b3Ugc2hvdWxkIGRlZmluZSBvbmUgb2YgYGkzODYsJyBgdmF4LCcgYG1jNjgwMDAsJyBvciBgc3BhcmMsJworICAgd2hpY2hldmVyIG9uZSBpcyBjbG9zZXN0IHRvIHRoZSBjYXBhYmlsaXRpZXMgb2YgeW91ciBtYWNoaW5lLgorICAgc2VlIHRoZSBzdGFydCBvZiBkZXNDb2RlLmggdG8gc2VlIGV4YWN0bHkgd2hhdCB0aGlzIHNlbGVjdGlvbiBpbXBsaWVzLgorICAgbm90ZSB0aGF0IGlmIHlvdSBzZWxlY3QgdGhlIHdyb25nIG9uZSwgdGhlIGRlcyBjb2RlIHdpbGwgc3RpbGwgd29yazsKKyAgIHRoZXNlIGFyZSBqdXN0IHBlcmZvcm1hbmNlIHR3ZWFrcy4KKzIpIGZvciB0aG9zZSB3aXRoIGZ1bmN0aW9uYWwgYGFzbScga2V5d29yZHM6IHlvdSBzaG91bGQgY2hhbmdlIHRoZQorICAgUk9SIGFuZCBST0wgbWFjcm9zIHRvIHVzZSBtYWNoaW5lIHJvdGF0ZSBpbnN0cnVjdGlvbnMgaWYgeW91IGhhdmUgdGhlbS4KKyAgIHRoaXMgd2lsbCBzYXZlIDIgaW5zdHJ1Y3Rpb25zIGFuZCBhIHRlbXBvcmFyeSBwZXIgdXNlLAorICAgb3IgYWJvdXQgMzIgdG8gNDAgaW5zdHJ1Y3Rpb25zIHBlciBlbi9kZWNyeXB0aW9uLgorICAgbm90ZSB0aGF0IGdjYyBpcyBzbWFydCBlbm91Z2ggdG8gdHJhbnNsYXRlIHRoZSBST0wvUiBtYWNyb3MgaW50bworICAgbWFjaGluZSByb3RhdGVzIQorCit0aGVzZSBvcHRpbWl6YXRpb25zIGFyZSBhbGwgcmF0aGVyIHBlcnNuaWNrZXR5LCB5ZXQgd2l0aCB0aGVtIHlvdSBzaG91bGQKK2JlIGFibGUgdG8gZ2V0IHBlcmZvcm1hbmNlIGVxdWFsIHRvIGFzc2VtYmx5LWNvZGluZywgZXhjZXB0IHRoYXQ6CisxKSB3aXRoIHRoZSBsYWNrIG9mIGEgYml0IHJvdGF0ZSBvcGVyYXRvciBpbiBDLCByb3RhdGVzIGhhdmUgdG8gYmUgc3ludGhlc2l6ZWQKKyAgIGZyb20gc2hpZnRzLiAgc28gYWNjZXNzIHRvIGBhc20nIHdpbGwgc3BlZWQgdGhpbmdzIHVwIGlmIHlvdXIgbWFjaGluZQorICAgaGFzIHJvdGF0ZXMsIGFzIGV4cGxhaW5lZCBhYm92ZSBpbiAoMykgKG5vdCBuZWNlc3NhcnkgaWYgeW91IHVzZSBnY2MpLgorMikgaWYgeW91ciBtYWNoaW5lIGhhcyBsZXNzIHRoYW4gMTIgMzItYml0IHJlZ2lzdGVycyBpIGRvdWJ0IHlvdXIgY29tcGlsZXIgd2lsbAorICAgZ2VuZXJhdGUgZ29vZCBjb2RlLgorICAgYGkzODYnIHRyaWVzIHRvIGNvbmZpZ3VyZSB0aGUgY29kZSBmb3IgYSAzODYgYnkgb25seSBkZWNsYXJpbmcgMyByZWdpc3RlcnMKKyAgIChpdCBhcHBlYXJzIHRoYXQgZ2NjIGNhbiB1c2UgZWJ4LCBlc2kgYW5kIGVkaSB0byBob2xkIHJlZ2lzdGVyIHZhcmlhYmxlcykuCisgICBob3dldmVyLCBpZiB5b3UgbGlrZSBhc3NlbWJseSBjb2RpbmcsIHRoZSAzODYgZG9lcyBoYXZlIDcgMzItYml0IHJlZ2lzdGVycywKKyAgIGFuZCBpZiB5b3UgdXNlIEFMTCBvZiB0aGVtLCB1c2UgYHNjYWxlZCBieSA4JyBhZGRyZXNzIG1vZGVzIHdpdGggZGlzcGxhY2VtZW50CisgICBhbmQgb3RoZXIgdHJpY2tzLCB5b3UgY2FuIGdldCByZWFzb25hYmxlIHJvdXRpbmVzIGZvciBEZXNRdWlja0NvcmUuLi4gd2l0aAorICAgYWJvdXQgMjUwIGluc3RydWN0aW9ucyBhcGllY2UuICBGb3IgRGVzU21hbGwuLi4gaXQgd2lsbCBoZWxwIHRvIHJlYXJyYW5nZQorICAgZGVzX2tleW1hcCwgaS5lLiwgbm93IHRoZSBzYm94ICMgaXMgdGhlIGhpZ2ggcGFydCBvZiB0aGUgaW5kZXggYW5kCisgICB0aGUgNiBiaXRzIG9mIGRhdGEgaXMgdGhlIGxvdyBwYXJ0OyBpdCBoZWxwcyB0byBleGNoYW5nZSB0aGVzZS4KKyAgIHNpbmNlIGkgaGF2ZSBubyB3YXkgdG8gY29udmVuaWVudGx5IHRlc3QgaXQgaSBoYXZlIG5vdCBwcm92aWRlZCBteQorICAgc2hvZWhvcm5lZCAzODYgdmVyc2lvbi4gIG5vdGUgdGhhdCB3aXRoIHRoaXMgcmVsZWFzZSBvZiBkZXNDb3JlLCBnY2MgaXMgYWJsZQorICAgdG8gcHV0IGV2ZXJ5dGhpbmcgaW4gcmVnaXN0ZXJzKCEpLCBhbmQgZ2VuZXJhdGUgYWJvdXQgMzcwIGluc3RydWN0aW9ucyBhcGllY2UKKyAgIGZvciB0aGUgRGVzUXVpY2tDb3JlLi4uIHJvdXRpbmVzIQorCitjb2Rpbmcgbm90ZXMKKwordGhlIGVuL2RlY3J5cHRpb24gcm91dGluZXMgZWFjaCB1c2UgNiBuZWNlc3NhcnkgcmVnaXN0ZXIgdmFyaWFibGVzLAord2l0aCA0IGJlaW5nIGFjdGl2ZWx5IHVzZWQgYXQgb25jZSBkdXJpbmcgdGhlIGlubmVyIGl0ZXJhdGlvbnMuCitpZiB5b3UgZG9uJ3QgaGF2ZSA0IHJlZ2lzdGVyIHZhcmlhYmxlcyBnZXQgYSBuZXcgbWFjaGluZS4KK3VwIHRvIDggbW9yZSByZWdpc3RlcnMgYXJlIHVzZWQgdG8gaG9sZCBjb25zdGFudHMgaW4gc29tZSBjb25maWd1cmF0aW9ucy4KKworaSBhc3N1bWUgdGhhdCB0aGUgdXNlIG9mIGEgY29uc3RhbnQgaXMgbW9yZSBleHBlbnNpdmUgdGhhbiB1c2luZyBhIHJlZ2lzdGVyOgorYSkgYWRkaXRpb25hbGx5LCBpIGhhdmUgdHJpZWQgdG8gcHV0IHRoZSBsYXJnZXIgY29uc3RhbnRzIGluIHJlZ2lzdGVycy4KKyAgIHJlZ2lzdGVyaW5nIHByaW9yaXR5IHdhcyBieSB0aGUgZm9sbG93aW5nOgorCWFueXRoaW5nIG1vcmUgdGhhbiAxMiBiaXRzIChiYWQgZm9yIFJJU0MgYW5kIENJU0MpCisJZ3JlYXRlciB0aGFuIDEyNyBpbiB2YWx1ZSAoY2FuJ3QgdXNlIG1vdnEgb3IgYnl0ZSBpbW1lZGlhdGUgb24gQ0lTQykKKwk5LTEyNyAobWF5IG5vdCBiZSBhYmxlIHRvIHVzZSBDSVNDIHNoaWZ0IGltbWVkaWF0ZSBvciBhZGQvc3ViIHF1aWNrKSwKKwkxLTggd2VyZSBuZXZlciByZWdpc3RlcmVkLCBiZWluZyB0aGUgY2hlYXBlc3QgY29uc3RhbnRzLgorYikgdGhlIGNvbXBpbGVyIG1heSBiZSB0b28gc3R1cGlkIHRvIHJlYWxpemUgdGFibGUgYW5kIHRhYmxlKzI1NiBzaG91bGQKKyAgIGJlIGFzc2lnbmVkIHRvIGRpZmZlcmVudCBjb25zdGFudCByZWdpc3RlcnMgYW5kIGluc3RlYWQgcmVwZXRpdGl2ZWx5CisgICBkbyB0aGUgYXJpdGhtZXRpYywgc28gaSBhc3NpZ24gdGhlc2UgdG8gZXhwbGljaXQgYG0nIHJlZ2lzdGVyIHZhcmlhYmxlcworICAgd2hlbiBwb3NzaWJsZSBhbmQgaGVscGZ1bC4KKworaSBhc3N1bWUgdGhhdCBpbmRleGluZyBpcyBjaGVhcGVyIG9yIGVxdWl2YWxlbnQgdG8gYXV0byBpbmNyZW1lbnQvZGVjcmVtZW50LAord2hlcmUgdGhlIGluZGV4IGlzIDcgYml0cyB1bnNpZ25lZCBvciBzbWFsbGVyLgordGhpcyBhc3N1bXB0aW9uIGlzIHJldmVyc2VkIGZvciA2OGsgYW5kIHZheC4KKworaSBhc3N1bWUgdGhhdCBhZGRyZXNzZXMgY2FuIGJlIGNoZWFwbHkgZm9ybWVkIGZyb20gdHdvIHJlZ2lzdGVycywKK29yIGZyb20gYSByZWdpc3RlciBhbmQgYSBzbWFsbCBjb25zdGFudC4KK2ZvciB0aGUgNjgwMDAsIHRoZSBgdHdvIHJlZ2lzdGVycyBhbmQgc21hbGwgb2Zmc2V0JyBmb3JtIGlzIHVzZWQgc3BhcmluZ2x5LgorYWxsIGluZGV4IHNjYWxpbmcgaXMgZG9uZSBleHBsaWNpdGx5IC0gbm8gaGlkZGVuIHNoaWZ0cyBieSBsb2cyKHNpemVvZikuCisKK3RoZSBjb2RlIGlzIHdyaXR0ZW4gc28gdGhhdCBldmVuIGEgZHVtYiBjb21waWxlcgorc2hvdWxkIG5ldmVyIG5lZWQgbW9yZSB0aGFuIG9uZSBoaWRkZW4gdGVtcG9yYXJ5LAoraW5jcmVhc2luZyB0aGUgY2hhbmNlIHRoYXQgZXZlcnl0aGluZyB3aWxsIGZpdCBpbiB0aGUgcmVnaXN0ZXJzLgorS0VFUCBUSElTIE1PUkUgU1VCVExFIFBPSU5UIElOIE1JTkQgSUYgWU9VIFJFV1JJVEUgQU5ZVEhJTkcuCisoYWN0dWFsbHksIHRoZXJlIGFyZSBzb21lIGNvZGUgZnJhZ21lbnRzIG5vdyB3aGljaCBkbyByZXF1aXJlIHR3byB0ZW1wcywKK2J1dCBmaXhpbmcgaXQgd291bGQgZWl0aGVyIGJyZWFrIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIG1hY3JvcyBvcgorcmVxdWlyZSBkZWNsYXJpbmcgYW5vdGhlciB0ZW1wb3JhcnkpLgorCisKK3NwZWNpYWwgZWZmaWNpZW50IGRhdGEgZm9ybWF0CisKK2JpdHMgYXJlIG1hbmlwdWxhdGVkIGluIHRoaXMgYXJyYW5nZW1lbnQgbW9zdCBvZiB0aGUgdGltZSAoUzcgUzUgUzMgUzEpOgorCTAwMzEzMDI5MjgyN3h4eHgyNDIzMjIyMTIwMTl4eHh4MTYxNTE0MTMxMjExeHh4eDA4MDcwNjA1MDQwM3h4eHgKKyh0aGUgeCBiaXRzIGFyZSBzdGlsbCB0aGVyZSwgaSdtIGp1c3QgZW1waGFzaXppbmcgd2hlcmUgdGhlIFMgYm94ZXMgYXJlKS4KK2JpdHMgYXJlIHJvdGF0ZWQgbGVmdCA0IHdoZW4gY29tcHV0aW5nIFM2IFM0IFMyIFMwOgorCTI4MjcyNjI1MjQyM3h4eHgyMDE5MTgxNzE2MTV4eHh4MTIxMTEwMDkwODA3eHh4eDA0MDMwMjAxMDAzMXh4eHgKK3RoZSByaWdodG1vc3QgdHdvIGJpdHMgYXJlIHVzdWFsbHkgY2xlYXJlZCBzbyB0aGUgbG93ZXIgYnl0ZSBjYW4gYmUgdXNlZAorYXMgYW4gaW5kZXggaW50byBhbiBzYm94IG1hcHBpbmcgdGFibGUuIHRoZSBuZXh0IHR3byB4J2QgYml0cyBhcmUgc2V0Cit0byB2YXJpb3VzIHZhbHVlcyB0byBhY2Nlc3MgZGlmZmVyZW50IHBhcnRzIG9mIHRoZSB0YWJsZXMuCisKKworaG93IHRvIHVzZSB0aGUgcm91dGluZXMKKworZGF0YXR5cGVzOgorCXBvaW50ZXIgdG8gOCBieXRlIGFyZWEgb2YgdHlwZSBEZXNEYXRhCisJdXNlZCB0byBob2xkIGtleXMgYW5kIGlucHV0L291dHB1dCBibG9ja3MgdG8gZGVzLgorCisJcG9pbnRlciB0byAxMjggYnl0ZSBhcmVhIG9mIHR5cGUgRGVzS2V5cworCXVzZWQgdG8gaG9sZCBmdWxsIDc2OC1iaXQga2V5LgorCW11c3QgYmUgbG9uZy1hbGlnbmVkLgorCitEZXNRdWlja0luaXQoKQorCWNhbGwgdGhpcyBiZWZvcmUgdXNpbmcgYW55IG90aGVyIHJvdXRpbmUgd2l0aCBgUXVpY2snIGluIGl0cyBuYW1lLgorCWl0IGdlbmVyYXRlcyB0aGUgc3BlY2lhbCA2NGsgdGFibGUgdGhlc2Ugcm91dGluZXMgbmVlZC4KK0Rlc1F1aWNrRG9uZSgpCisJZnJlZXMgdGhpcyB0YWJsZQorCitEZXNNZXRob2QobSwgaykKKwltIHBvaW50cyB0byBhIDEyOGJ5dGUgYmxvY2ssIGsgcG9pbnRzIHRvIGFuIDggYnl0ZSBkZXMga2V5CisJd2hpY2ggbXVzdCBoYXZlIG9kZCBwYXJpdHkgKG9yIC0xIGlzIHJldHVybmVkKSBhbmQgd2hpY2ggbXVzdAorCW5vdCBiZSBhIChzZW1pLSl3ZWFrIGtleSAob3IgLTIgaXMgcmV0dXJuZWQpLgorCW5vcm1hbGx5IERlc01ldGhvZCgpIHJldHVybnMgMC4KKwltIGlzIGZpbGxlZCBpbiBmcm9tIGsgc28gdGhhdCB3aGVuIG9uZSBvZiB0aGUgcm91dGluZXMgYmVsb3cKKwlpcyBjYWxsZWQgd2l0aCBtLCB0aGUgcm91dGluZSB3aWxsIGFjdCBsaWtlIHN0YW5kYXJkIGRlcworCWVuL2RlY3J5cHRpb24gd2l0aCB0aGUga2V5IGsuIGlmIHlvdSB1c2UgRGVzTWV0aG9kLAorCXlvdSBzdXBwbHkgYSBzdGFuZGFyZCA1NmJpdCBrZXk7IGhvd2V2ZXIsIGlmIHlvdSBmaWxsIGluCisJbSB5b3Vyc2VsZiwgeW91IHdpbGwgZ2V0IGEgNzY4Yml0IGtleSAtIGJ1dCB0aGVuIGl0IHdvbid0CisJYmUgc3RhbmRhcmQuICBpdCdzIDc2OGJpdHMgbm90IDEwMjQgYmVjYXVzZSB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQKKwl0d28gYml0cyBvZiBlYWNoIGJ5dGUgYXJlIG5vdCB1c2VkLiAgbm90ZSB0aGF0IHRoZXNlIHR3byBiaXRzCisJd2lsbCBiZSBzZXQgdG8gbWFnaWMgY29uc3RhbnRzIHdoaWNoIHNwZWVkIHVwIHRoZSBlbmNyeXB0aW9uL2RlY3J5cHRpb24KKwlvbiBzb21lIG1hY2hpbmVzLiAgYW5kIHllcywgZWFjaCBieXRlIGNvbnRyb2xzCisJYSBzcGVjaWZpYyBzYm94IGR1cmluZyBhIHNwZWNpZmljIGl0ZXJhdGlvbi4KKwl5b3UgcmVhbGx5IHNob3VsZG4ndCB1c2UgdGhlIDc2OGJpdCBmb3JtYXQgZGlyZWN0bHk7ICBpIHNob3VsZAorCXByb3ZpZGUgYSByb3V0aW5lIHRoYXQgY29udmVydHMgMTI4IDYtYml0IGJ5dGVzIChzcGVjaWZpZWQgaW4KKwlTLWJveCBtYXBwaW5nIG9yZGVyIG9yIHNvbWV0aGluZykgaW50byB0aGUgcmlnaHQgZm9ybWF0IGZvciB5b3UuCisJdGhpcyB3b3VsZCBlbnRhaWwgc29tZSBieXRlIGNvbmNhdGVuYXRpb24gYW5kIHJvdGF0aW9uLgorCitEZXN7U21hbGx8UXVpY2t9e0ZpcHN8Q29yZX17RW5jcnlwdHxEZWNyeXB0fShkLCBtLCBzKQorCXBlcmZvcm1zIGRlcyBvbiB0aGUgOCBieXRlcyBhdCBzIGludG8gdGhlIDggYnl0ZXMgYXQgZC4gKGQsczogY2hhciAqKS4KKwl1c2VzIG0gYXMgYSA3NjhiaXQga2V5IGFzIGV4cGxhaW5lZCBhYm92ZS4KKwl0aGUgRW5jcnlwdHxEZWNyeXB0IGNob2ljZSBpcyBvYnZpb3VzLgorCUZpcHN8Q29yZSBkZXRlcm1pbmVzIHdoZXRoZXIgYSBjb21wbGV0ZWx5IHN0YW5kYXJkIEZJUFMgaW5pdGlhbAorCWFuZCBmaW5hbCBwZXJtdXRhdGlvbiBpcyBkb25lOyBpZiBub3QsIHRoZW4gdGhlIGRhdGEgaXMgbG9hZGVkCisJYW5kIHN0b3JlZCBpbiBhIG5vbnN0YW5kYXJkIGJpdCBvcmRlciAoRklQUyB3L28gSVAvRlApLgorCUZpcHMgc2xvd3MgZG93biBRdWljayBieSAxMCUsIFNtYWxsIGJ5IDklLgorCVNtYWxsfFF1aWNrIGRldGVybWluZXMgd2hldGhlciB5b3UgdXNlIHRoZSBub3JtYWwgcm91dGluZQorCW9yIHRoZSBjcmF6eSBxdWljayBvbmUgd2hpY2ggZ29iYmxlcyB1cCA2NGsgbW9yZSBvZiBtZW1vcnkuCisJU21hbGwgaXMgNTAlIHNsb3dlciB0aGVuIFF1aWNrLCBidXQgUXVpY2sgbmVlZHMgMzIgdGltZXMgYXMgbXVjaAorCW1lbW9yeS4gIFF1aWNrIGlzIGluY2x1ZGVkIGZvciBwcm9ncmFtcyB0aGF0IGRvIG5vdGhpbmcgYnV0IERFUywKKwllLmcuLCBlbmNyeXB0aW9uIGZpbHRlcnMsIGV0Yy4KKworCitHZXR0aW5nIGl0IHRvIGNvbXBpbGUgb24geW91ciBtYWNoaW5lCisKK3RoZXJlIGFyZSBubyBtYWNoaW5lLWRlcGVuZGVuY2llcyBpbiB0aGUgY29kZSAoc2VlIHBvcnRpbmcpLAorZXhjZXB0IHBlcmhhcHMgdGhlIGBub3coKScgbWFjcm8gaW4gZGVzVGVzdC5jLgorQUxMIGdlbmVyYXRlZCB0YWJsZXMgYXJlIG1hY2hpbmUgaW5kZXBlbmRlbnQuCit5b3Ugc2hvdWxkIGVkaXQgdGhlIE1ha2VmaWxlIHdpdGggdGhlIGFwcHJvcHJpYXRlIG9wdGltaXphdGlvbiBmbGFncworZm9yIHlvdXIgY29tcGlsZXIgKE1BWCBvcHRpbWl6YXRpb24pLgorCisKK1NwZWVkaW5nIHVwIGtlcmJlcm9zIChhbmQvb3IgaXRzIGRlcyBsaWJyYXJ5KQorCitub3RlIHRoYXQgaSBoYXZlIGluY2x1ZGVkIGEga2VyYmVyb3MtY29tcGF0aWJsZSBpbnRlcmZhY2UgaW4gZGVzVXRpbC5jCit0aHJvdWdoIHRoZSBmdW5jdGlvbnMgZGVzX2tleV9zY2hlZCgpIGFuZCBkZXNfZWNiX2VuY3J5cHQoKS4KK3RvIHVzZSB0aGVzZSB3aXRoIGtlcmJlcm9zIG9yIGtlcmJlcm9zLWNvbXBhdGlibGUgY29kZSBwdXQgZGVzQ29yZS5hCithaGVhZCBvZiB0aGUga2VyYmVyb3MtY29tcGF0aWJsZSBsaWJyYXJ5IG9uIHlvdXIgbGlua2VyJ3MgY29tbWFuZCBsaW5lLgoreW91IHNob3VsZCBub3QgbmVlZCB0byAjaW5jbHVkZSBkZXNDb3JlLmg7ICBqdXN0IGluY2x1ZGUgdGhlIGhlYWRlcgorZmlsZSBwcm92aWRlZCB3aXRoIHRoZSBrZXJiZXJvcyBsaWJyYXJ5LgorCitPdGhlciB1c2VzCisKK3RoZSBtYWNyb3MgaW4gZGVzQ29kZS5oIHdvdWxkIGJlIHZlcnkgdXNlZnVsIGZvciBwdXR0aW5nIGlubGluZSBkZXMKK2Z1bmN0aW9ucyBpbiBtb3JlIGNvbXBsaWNhdGVkIGVuY3J5cHRpb24gcm91dGluZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RjZGJhcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RjZGJhcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFjNTJlMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGNkYmFzLnR4dApAQCAtMCwwICsxLDkxIEBACitPdmVydmlldworCitUaGUgRGVsbCBTeXN0ZW1zIE1hbmFnZW1lbnQgQmFzZSBEcml2ZXIgcHJvdmlkZXMgYSBzeXNmcyBpbnRlcmZhY2UgZm9yCitzeXN0ZW1zIG1hbmFnZW1lbnQgc29mdHdhcmUgc3VjaCBhcyBEZWxsIE9wZW5NYW5hZ2UgdG8gcGVyZm9ybSBzeXN0ZW0KK21hbmFnZW1lbnQgaW50ZXJydXB0cyBhbmQgaG9zdCBjb250cm9sIGFjdGlvbnMgKHN5c3RlbSBwb3dlciBjeWNsZSBvcgorcG93ZXIgb2ZmIGFmdGVyIE9TIHNodXRkb3duKSBvbiBjZXJ0YWluIERlbGwgc3lzdGVtcy4KKworRGVsbCBPcGVuTWFuYWdlIHJlcXVpcmVzIHRoaXMgZHJpdmVyIG9uIHRoZSBmb2xsb3dpbmcgRGVsbCBQb3dlckVkZ2Ugc3lzdGVtczoKKzMwMCwgMTMwMCwgMTQwMCwgNDAwU0MsIDUwMFNDLCAxNTAwU0MsIDE1NTAsIDYwMFNDLCAxNjAwU0MsIDY1MCwgMTY1NU1DLAorNzAwLCBhbmQgNzUwLiAgT3RoZXIgRGVsbCBzb2Z0d2FyZSBzdWNoIGFzIHRoZSBvcGVuIHNvdXJjZSBsaWJzbWJpb3MgcHJvamVjdAoraXMgZXhwZWN0ZWQgdG8gbWFrZSB1c2Ugb2YgdGhpcyBkcml2ZXIsIGFuZCBpdCBtYXkgaW5jbHVkZSB0aGUgdXNlIG9mIHRoaXMKK2RyaXZlciBvbiBvdGhlciBEZWxsIHN5c3RlbXMuCisKK1RoZSBEZWxsIGxpYnNtYmlvcyBwcm9qZWN0IGFpbXMgdG93YXJkcyBwcm92aWRpbmcgYWNjZXNzIHRvIGFzIG11Y2ggQklPUworaW5mb3JtYXRpb24gYXMgcG9zc2libGUuICBTZWUgaHR0cDovL2xpbnV4LmRlbGwuY29tL2xpYnNtYmlvcy9tYWluLyBmb3IKK21vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxpYnNtYmlvcyBwcm9qZWN0LgorCisKK1N5c3RlbSBNYW5hZ2VtZW50IEludGVycnVwdAorCitPbiBzb21lIERlbGwgc3lzdGVtcywgc3lzdGVtcyBtYW5hZ2VtZW50IHNvZnR3YXJlIG11c3QgYWNjZXNzIGNlcnRhaW4KK21hbmFnZW1lbnQgaW5mb3JtYXRpb24gdmlhIGEgc3lzdGVtIG1hbmFnZW1lbnQgaW50ZXJydXB0IChTTUkpLiAgVGhlIFNNSSBkYXRhCitidWZmZXIgbXVzdCByZXNpZGUgaW4gMzItYml0IGFkZHJlc3Mgc3BhY2UsIGFuZCB0aGUgcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUKK2J1ZmZlciBpcyByZXF1aXJlZCBmb3IgdGhlIFNNSS4gIFRoZSBkcml2ZXIgbWFpbnRhaW5zIHRoZSBtZW1vcnkgcmVxdWlyZWQgZm9yCit0aGUgU01JIGFuZCBwcm92aWRlcyBhIHdheSBmb3IgdGhlIGFwcGxpY2F0aW9uIHRvIGdlbmVyYXRlIHRoZSBTTUkuCitUaGUgZHJpdmVyIGNyZWF0ZXMgdGhlIGZvbGxvd2luZyBzeXNmcyBlbnRyaWVzIGZvciBzeXN0ZW1zIG1hbmFnZW1lbnQKK3NvZnR3YXJlIHRvIHBlcmZvcm0gdGhlc2Ugc3lzdGVtIG1hbmFnZW1lbnQgaW50ZXJydXB0czoKKworL3N5cy9kZXZpY2VzL3BsYXRmb3JtL2RjZGJhcy9zbWlfZGF0YQorL3N5cy9kZXZpY2VzL3BsYXRmb3JtL2RjZGJhcy9zbWlfZGF0YV9idWZfcGh5c19hZGRyCisvc3lzL2RldmljZXMvcGxhdGZvcm0vZGNkYmFzL3NtaV9kYXRhX2J1Zl9zaXplCisvc3lzL2RldmljZXMvcGxhdGZvcm0vZGNkYmFzL3NtaV9yZXF1ZXN0CisKK1N5c3RlbXMgbWFuYWdlbWVudCBzb2Z0d2FyZSBtdXN0IHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwcyB0byBleGVjdXRlCithIFNNSSB1c2luZyB0aGlzIGRyaXZlcjoKKworMSkgTG9jayBzbWlfZGF0YS4KKzIpIFdyaXRlIHN5c3RlbSBtYW5hZ2VtZW50IGNvbW1hbmQgdG8gc21pX2RhdGEuCiszKSBXcml0ZSAiMSIgdG8gc21pX3JlcXVlc3QgdG8gZ2VuZXJhdGUgYSBjYWxsaW5nIGludGVyZmFjZSBTTUkgb3IKKyAgICIyIiB0byBnZW5lcmF0ZSBhIHJhdyBTTUkuCis0KSBSZWFkIHN5c3RlbSBtYW5hZ2VtZW50IGNvbW1hbmQgcmVzcG9uc2UgZnJvbSBzbWlfZGF0YS4KKzUpIFVubG9jayBzbWlfZGF0YS4KKworCitIb3N0IENvbnRyb2wgQWN0aW9uCisKK0RlbGwgT3Blbk1hbmFnZSBzdXBwb3J0cyBhIGhvc3QgY29udHJvbCBmZWF0dXJlIHRoYXQgYWxsb3dzIHRoZSBhZG1pbmlzdHJhdG9yCit0byBwZXJmb3JtIGEgcG93ZXIgY3ljbGUgb3IgcG93ZXIgb2ZmIG9mIHRoZSBzeXN0ZW0gYWZ0ZXIgdGhlIE9TIGhhcyBmaW5pc2hlZAorc2h1dHRpbmcgZG93bi4gIE9uIHNvbWUgRGVsbCBzeXN0ZW1zLCB0aGlzIGhvc3QgY29udHJvbCBmZWF0dXJlIHJlcXVpcmVzIHRoYXQKK2EgZHJpdmVyIHBlcmZvcm0gYSBTTUkgYWZ0ZXIgdGhlIE9TIGhhcyBmaW5pc2hlZCBzaHV0dGluZyBkb3duLgorCitUaGUgZHJpdmVyIGNyZWF0ZXMgdGhlIGZvbGxvd2luZyBzeXNmcyBlbnRyaWVzIGZvciBzeXN0ZW1zIG1hbmFnZW1lbnQgc29mdHdhcmUKK3RvIHNjaGVkdWxlIHRoZSBkcml2ZXIgdG8gcGVyZm9ybSBhIHBvd2VyIGN5Y2xlIG9yIHBvd2VyIG9mZiBob3N0IGNvbnRyb2wKK2FjdGlvbiBhZnRlciB0aGUgc3lzdGVtIGhhcyBmaW5pc2hlZCBzaHV0dGluZyBkb3duOgorCisvc3lzL2RldmljZXMvcGxhdGZvcm0vZGNkYmFzL2hvc3RfY29udHJvbF9hY3Rpb24KKy9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9kY2RiYXMvaG9zdF9jb250cm9sX3NtaV90eXBlCisvc3lzL2RldmljZXMvcGxhdGZvcm0vZGNkYmFzL2hvc3RfY29udHJvbF9vbl9zaHV0ZG93bgorCitEZWxsIE9wZW5NYW5hZ2UgcGVyZm9ybXMgdGhlIGZvbGxvd2luZyBzdGVwcyB0byBleGVjdXRlIGEgcG93ZXIgY3ljbGUgb3IKK3Bvd2VyIG9mZiBob3N0IGNvbnRyb2wgYWN0aW9uIHVzaW5nIHRoaXMgZHJpdmVyOgorCisxKSBXcml0ZSBob3N0IGNvbnRyb2wgYWN0aW9uIHRvIGJlIHBlcmZvcm1lZCB0byBob3N0X2NvbnRyb2xfYWN0aW9uLgorMikgV3JpdGUgdHlwZSBvZiBTTUkgdGhhdCBkcml2ZXIgbmVlZHMgdG8gcGVyZm9ybSB0byBob3N0X2NvbnRyb2xfc21pX3R5cGUuCiszKSBXcml0ZSAiMSIgdG8gaG9zdF9jb250cm9sX29uX3NodXRkb3duIHRvIGVuYWJsZSBob3N0IGNvbnRyb2wgYWN0aW9uLgorNCkgSW5pdGlhdGUgT1Mgc2h1dGRvd24uCisgICAoRHJpdmVyIHdpbGwgcGVyZm9ybSBob3N0IGNvbnRyb2wgU01JIHdoZW4gaXQgaXMgbm90aWZpZWQgdGhhdCB0aGUgT1MKKyAgIGhhcyBmaW5pc2hlZCBzaHV0dGluZyBkb3duLikKKworCitIb3N0IENvbnRyb2wgU01JIFR5cGUKKworVGhlIGZvbGxvd2luZyB0YWJsZSBzaG93cyB0aGUgdmFsdWUgdG8gd3JpdGUgdG8gaG9zdF9jb250cm9sX3NtaV90eXBlIHRvCitwZXJmb3JtIGEgcG93ZXIgY3ljbGUgb3IgcG93ZXIgb2ZmIGhvc3QgY29udHJvbCBhY3Rpb246CisKK1Bvd2VyRWRnZSBTeXN0ZW0gICAgSG9zdCBDb250cm9sIFNNSSBUeXBlCistLS0tLS0tLS0tLS0tLS0tICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgMzAwICAgICAgICAgICAgIEhDX1NNSVRZUEVfVFlQRTEKKyAgICAgMTMwMCAgICAgICAgICAgICBIQ19TTUlUWVBFX1RZUEUxCisgICAgIDE0MDAgICAgICAgICAgICAgSENfU01JVFlQRV9UWVBFMgorICAgICAgNTAwU0MgICAgICAgICAgIEhDX1NNSVRZUEVfVFlQRTIKKyAgICAgMTUwMFNDICAgICAgICAgICBIQ19TTUlUWVBFX1RZUEUyCisgICAgIDE1NTAgICAgICAgICAgICAgSENfU01JVFlQRV9UWVBFMgorICAgICAgNjAwU0MgICAgICAgICAgIEhDX1NNSVRZUEVfVFlQRTIKKyAgICAgMTYwMFNDICAgICAgICAgICBIQ19TTUlUWVBFX1RZUEUyCisgICAgICA2NTAgICAgICAgICAgICAgSENfU01JVFlQRV9UWVBFMgorICAgICAxNjU1TUMgICAgICAgICAgIEhDX1NNSVRZUEVfVFlQRTIKKyAgICAgIDcwMCAgICAgICAgICAgICBIQ19TTUlUWVBFX1RZUEUzCisgICAgICA3NTAgICAgICAgICAgICAgSENfU01JVFlQRV9UWVBFMworCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGVidWdnaW5nLW1vZHVsZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmctbW9kdWxlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTcyYWQ0YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGVidWdnaW5nLW1vZHVsZXMudHh0CkBAIC0wLDAgKzEsMjIgQEAKK0RlYnVnZ2luZyBNb2R1bGVzIGFmdGVyIDIuNi4zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbiBhbG1vc3QgYWxsIGRpc3RyaWJ1dGlvbnMsIHRoZSBrZXJuZWwgYXNrcyBmb3IgbW9kdWxlcyB3aGljaCBkb24ndAorZXhpc3QsIHN1Y2ggYXMgIm5ldC1wZi0xMCIgb3Igd2hhdGV2ZXIuICBDaGFuZ2luZyAibW9kcHJvYmUgLXEiIHRvCisic3VjY2VlZCIgaW4gdGhpcyBjYXNlIGlzIGhhY2t5IGFuZCBicmVha3Mgc29tZSBzZXR1cHMsIGFuZCBhbHNvIHdlCit3YW50IHRvIGtub3cgaWYgaXQgZmFpbGVkIGZvciB0aGUgZmFsbGJhY2sgY29kZSBmb3Igb2xkIGFsaWFzZXMgaW4KK2ZzL2NoYXJfZGV2LmMsIGZvciBleGFtcGxlLgorCitJbiB0aGUgcGFzdCBhIGRlYnVnZ2luZyBtZXNzYWdlIHdoaWNoIHdvdWxkIGZpbGwgcGVvcGxlJ3MgbG9ncyB3YXMKK2VtaXR0ZWQuICBUaGlzIGRlYnVnZ2luZyBtZXNzYWdlIGhhcyBiZWVuIHJlbW92ZWQuICBUaGUgY29ycmVjdCB3YXkKK29mIGRlYnVnZ2luZyBtb2R1bGUgcHJvYmxlbXMgaXMgc29tZXRoaW5nIGxpa2UgdGhpczoKKworZWNobyAnIyEgL2Jpbi9zaCcgPiAvdG1wL21vZHByb2JlCitlY2hvICdlY2hvICIkQCIgPj4gL3RtcC9tb2Rwcm9iZS5sb2cnID4+IC90bXAvbW9kcHJvYmUKK2VjaG8gJ2V4ZWMgL3NiaW4vbW9kcHJvYmUgIiRAIicgPj4gL3RtcC9tb2Rwcm9iZQorY2htb2QgYSt4IC90bXAvbW9kcHJvYmUKK2VjaG8gL3RtcC9tb2Rwcm9iZSA+IC9wcm9jL3N5cy9rZXJuZWwvbW9kcHJvYmUKKworTm90ZSB0aGF0IHRoZSBhYm92ZSBhcHBsaWVzIG9ubHkgd2hlbiB0aGUgKmtlcm5lbCogaXMgcmVxdWVzdGluZwordGhhdCB0aGUgbW9kdWxlIGJlIGxvYWRlZCAtLSBpdCB3b24ndCBoYXZlIGFueSBlZmZlY3QgaWYgdGhhdCBtb2R1bGUKK2lzIGJlaW5nIGxvYWRlZCBleHBsaWNpdGx5IHVzaW5nICJtb2Rwcm9iZSIgZnJvbSB1c2Vyc3BhY2UuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RlYnVnZ2luZy12aWEtb2hjaTEzOTQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmctdmlhLW9oY2kxMzk0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzcwM2FmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZWJ1Z2dpbmctdmlhLW9oY2kxMzk0LnR4dApAQCAtMCwwICsxLDE4NCBAQAorCisgIFVzaW5nIHBoeXNpY2FsIERNQSBwcm92aWRlZCBieSBPSENJLTEzOTQgRmlyZVdpcmUgY29udHJvbGxlcnMgZm9yIGRlYnVnZ2luZworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0KKworQmFzaWNhbGx5IGFsbCBGaXJlV2lyZSBjb250cm9sbGVycyB3aGljaCBhcmUgaW4gdXNlIHRvZGF5IGFyZSBjb21wbGlhbnQKK3RvIHRoZSBPSENJLTEzOTQgc3BlY2lmaWNhdGlvbiB3aGljaCBkZWZpbmVzIHRoZSBjb250cm9sbGVyIHRvIGJlIGEgUENJCitidXMgbWFzdGVyIHdoaWNoIHVzZXMgRE1BIHRvIG9mZmxvYWQgZGF0YSB0cmFuc2ZlcnMgZnJvbSB0aGUgQ1BVIGFuZCBoYXMKK2EgIlBoeXNpY2FsIFJlc3BvbnNlIFVuaXQiIHdoaWNoIGV4ZWN1dGVzIHNwZWNpZmljIHJlcXVlc3RzIGJ5IGVtcGxveWluZworUENJLUJ1cyBtYXN0ZXIgRE1BIGFmdGVyIGFwcGx5aW5nIGZpbHRlcnMgZGVmaW5lZCBieSB0aGUgT0hDSS0xMzk0IGRyaXZlci4KKworT25jZSBwcm9wZXJseSBjb25maWd1cmVkLCByZW1vdGUgbWFjaGluZXMgY2FuIHNlbmQgdGhlc2UgcmVxdWVzdHMgdG8KK2FzayB0aGUgT0hDSS0xMzk0IGNvbnRyb2xsZXIgdG8gcGVyZm9ybSByZWFkIGFuZCB3cml0ZSByZXF1ZXN0cyBvbgorcGh5c2ljYWwgc3lzdGVtIG1lbW9yeSBhbmQsIGZvciByZWFkIHJlcXVlc3RzLCBzZW5kIHRoZSByZXN1bHQgb2YKK3RoZSBwaHlzaWNhbCBtZW1vcnkgcmVhZCBiYWNrIHRvIHRoZSByZXF1ZXN0ZXIuCisKK1dpdGggdGhhdCwgaXQgaXMgcG9zc2libGUgdG8gZGVidWcgaXNzdWVzIGJ5IHJlYWRpbmcgaW50ZXJlc3RpbmcgbWVtb3J5Citsb2NhdGlvbnMgc3VjaCBhcyBidWZmZXJzIGxpa2UgdGhlIHByaW50ayBidWZmZXIgb3IgdGhlIHByb2Nlc3MgdGFibGUuCisKK1JldHJpZXZpbmcgYSBmdWxsIHN5c3RlbSBtZW1vcnkgZHVtcCBpcyBhbHNvIHBvc3NpYmxlIG92ZXIgdGhlIEZpcmVXaXJlLAordXNpbmcgZGF0YSB0cmFuc2ZlciByYXRlcyBpbiB0aGUgb3JkZXIgb2YgMTBNQi9zIG9yIG1vcmUuCisKK1dpdGggbW9zdCBGaXJlV2lyZSBjb250cm9sbGVycywgbWVtb3J5IGFjY2VzcyBpcyBsaW1pdGVkIHRvIHRoZSBsb3cgNCBHQgorb2YgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZS4gIFRoaXMgY2FuIGJlIGEgcHJvYmxlbSBvbiBJQTY0IG1hY2hpbmVzIHdoZXJlCittZW1vcnkgaXMgbG9jYXRlZCBtb3N0bHkgYWJvdmUgdGhhdCBsaW1pdCwgYnV0IGl0IGlzIHJhcmVseSBhIHByb2JsZW0gb24KK21vcmUgY29tbW9uIGhhcmR3YXJlIHN1Y2ggYXMgeDg2LCB4ODYtNjQgYW5kIFBvd2VyUEMuCisKK0F0IGxlYXN0IExTSSBGVzY0M2UgYW5kIEZXNjQzZTIgY29udHJvbGxlcnMgYXJlIGtub3duIHRvIHN1cHBvcnQgYWNjZXNzIHRvCitwaHlzaWNhbCBhZGRyZXNzZXMgYWJvdmUgNCBHQiwgYnV0IHRoaXMgZmVhdHVyZSBpcyBjdXJyZW50bHkgbm90IGVuYWJsZWQgYnkKK0xpbnV4LgorCitUb2dldGhlciB3aXRoIGEgZWFybHkgaW5pdGlhbGl6YXRpb24gb2YgdGhlIE9IQ0ktMTM5NCBjb250cm9sbGVyIGZvciBkZWJ1Z2dpbmcsCit0aGlzIGZhY2lsaXR5IHByb3ZlZCBtb3N0IHVzZWZ1bCBmb3IgZXhhbWluaW5nIGxvbmcgZGVidWdzIGxvZ3MgaW4gdGhlIHByaW50aworYnVmZmVyIG9uIHRvIGRlYnVnIGVhcmx5IGJvb3QgcHJvYmxlbXMgaW4gYXJlYXMgbGlrZSBBQ1BJIHdoZXJlIHRoZSBzeXN0ZW0KK2ZhaWxzIHRvIGJvb3QgYW5kIG90aGVyIG1lYW5zIGZvciBkZWJ1Z2dpbmcgKHNlcmlhbCBwb3J0KSBhcmUgZWl0aGVyIG5vdAorYXZhaWxhYmxlIChub3RlYm9va3MpIG9yIHRvbyBzbG93IGZvciBleHRlbnNpdmUgZGVidWcgaW5mb3JtYXRpb24gKGxpa2UgQUNQSSkuCisKK0RyaXZlcnMKKy0tLS0tLS0KKworVGhlIGZpcmV3aXJlLW9oY2kgZHJpdmVyIGluIGRyaXZlcnMvZmlyZXdpcmUgdXNlcyBmaWx0ZXJlZCBwaHlzaWNhbAorRE1BIGJ5IGRlZmF1bHQsIHdoaWNoIGlzIG1vcmUgc2VjdXJlIGJ1dCBub3Qgc3VpdGFibGUgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcuCitQYXNzIHRoZSByZW1vdGVfZG1hPTEgcGFyYW1ldGVyIHRvIHRoZSBkcml2ZXIgdG8gZ2V0IHVuZmlsdGVyZWQgcGh5c2ljYWwgRE1BLgorCitCZWNhdXNlIHRoZSBmaXJld2lyZS1vaGNpIGRyaXZlciBkZXBlbmRzIG9uIHRoZSBQQ0kgZW51bWVyYXRpb24gdG8gYmUKK2NvbXBsZXRlZCwgYW4gaW5pdGlhbGl6YXRpb24gcm91dGluZSB3aGljaCBydW5zIHByZXR0eSBlYXJseSBoYXMgYmVlbgoraW1wbGVtZW50ZWQgZm9yIHg4Ni4gIFRoaXMgcm91dGluZSBydW5zIGxvbmcgYmVmb3JlIGNvbnNvbGVfaW5pdCgpIGNhbiBiZQorY2FsbGVkLCBpLmUuIGJlZm9yZSB0aGUgcHJpbnRrIGJ1ZmZlciBhcHBlYXJzIG9uIHRoZSBjb25zb2xlLgorCitUbyBhY3RpdmF0ZSBpdCwgZW5hYmxlIENPTkZJR19QUk9WSURFX09IQ0kxMzk0X0RNQV9JTklUIChLZXJuZWwgaGFja2luZyBtZW51OgorUmVtb3RlIGRlYnVnZ2luZyBvdmVyIEZpcmVXaXJlIGVhcmx5IG9uIGJvb3QpIGFuZCBwYXNzIHRoZSBwYXJhbWV0ZXIKKyJvaGNpMTM5NF9kbWE9ZWFybHkiIHRvIHRoZSByZWNvbXBpbGVkIGtlcm5lbCBvbiBib290LgorCitUb29scworLS0tLS0KKworZmlyZXNjb3BlIC0gT3JpZ2luYWxseSBkZXZlbG9wZWQgYnkgQmVuamFtaW4gSGVycmVuc2NobWlkdCwgQW5kaSBLbGVlbiBwb3J0ZWQKK2l0IGZyb20gUG93ZXJQQyB0byB4ODYgYW5kIHg4Nl82NCBhbmQgYWRkZWQgZnVuY3Rpb25hbGl0eSwgZmlyZXNjb3BlIGNhbiBub3cKK2JlIHVzZWQgdG8gdmlldyB0aGUgcHJpbnRrIGJ1ZmZlciBvZiBhIHJlbW90ZSBtYWNoaW5lLCBldmVuIHdpdGggbGl2ZSB1cGRhdGUuCisKK0Jlcm5oYXJkIEthaW5kbCBlbmhhbmNlZCBmaXJlc2NvcGUgdG8gc3VwcG9ydCBhY2Nlc3NpbmcgNjQtYml0IG1hY2hpbmVzCitmcm9tIDMyLWJpdCBmaXJlc2NvcGUgYW5kIHZpY2UgdmVyc2E6CistIGh0dHA6Ly92My5zay9+bGt1bmRyYWsvZmlyZXNjb3BlLworCithbmQgaGUgaW1wbGVtZW50ZWQgZmFzdCBzeXN0ZW0gZHVtcCAoYWxwaGEgdmVyc2lvbiAtIHJlYWQgUkVBRE1FLnR4dCk6CistIGh0dHA6Ly9oYWxvYmF0ZXMuZGUvZmlyZXdpcmUvZmlyZWR1bXAtMC4xLnRhci5iejIKKworVGhlcmUgaXMgYWxzbyBhIGdkYiBwcm94eSBmb3IgZmlyZXdpcmUgd2hpY2ggYWxsb3dzIHRvIHVzZSBnZGIgdG8gYWNjZXNzCitkYXRhIHdoaWNoIGNhbiBiZSByZWZlcmVuY2VkIGZyb20gc3ltYm9scyBmb3VuZCBieSBnZGIgaW4gdm1saW51eDoKKy0gaHR0cDovL2hhbG9iYXRlcy5kZS9maXJld2lyZS9maXJlcHJveHktMC4zMy50YXIuYnoyCisKK1RoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIGdkYiBwcm94eSAoZmlyZXByb3h5LTAuMzQpIGNhbiBjb21tdW5pY2F0ZSAobm90Cit5ZXQgc3RhYmxlKSB3aXRoIGtnZGIgb3ZlciBhbiBtZW1vcnktYmFzZWQgY29tbXVuaWNhdGlvbiBtb2R1bGUgKGtnZGJvbSkuCisKK0dldHRpbmcgU3RhcnRlZAorLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBPSENJLTEzOTQgc3BlY2lmaWNhdGlvbiByZWd1bGF0ZXMgdGhhdCB0aGUgT0hDSS0xMzk0IGNvbnRyb2xsZXIgbXVzdAorZGlzYWJsZSBhbGwgcGh5c2ljYWwgRE1BIG9uIGVhY2ggYnVzIHJlc2V0LgorCitUaGlzIG1lYW5zIHRoYXQgaWYgeW91IHdhbnQgdG8gZGVidWcgYW4gaXNzdWUgaW4gYSBzeXN0ZW0gc3RhdGUgd2hlcmUKK2ludGVycnVwdHMgYXJlIGRpc2FibGVkIGFuZCB3aGVyZSBubyBwb2xsaW5nIG9mIHRoZSBPSENJLTEzOTQgY29udHJvbGxlcgorZm9yIGJ1cyByZXNldHMgdGFrZXMgcGxhY2UsIHlvdSBoYXZlIHRvIGVzdGFibGlzaCBhbnkgRmlyZVdpcmUgY2FibGUKK2Nvbm5lY3Rpb25zIGFuZCBmdWxseSBpbml0aWFsaXplIGFsbCBGaXJlV2lyZSBoYXJkd2FyZSBfX2JlZm9yZV9fIHRoZQorc3lzdGVtIGVudGVycyBzdWNoIHN0YXRlLgorCitTdGVwLWJ5LXN0ZXAgaW5zdHJ1Y3Rpb25zIGZvciB1c2luZyBmaXJlc2NvcGUgd2l0aCBlYXJseSBPSENJIGluaXRpYWxpemF0aW9uOgorCisxKSBWZXJpZnkgdGhhdCB5b3VyIGhhcmR3YXJlIGlzIHN1cHBvcnRlZDoKKworICAgTG9hZCB0aGUgZmlyZXdpcmUtb2hjaSBtb2R1bGUgYW5kIGNoZWNrIHlvdXIga2VybmVsIGxvZ3MuCisgICBZb3Ugc2hvdWxkIHNlZSBhIGxpbmUgc2ltaWxhciB0bworCisgICBmaXJld2lyZV9vaGNpIDAwMDA6MTU6MDAuMTogYWRkZWQgT0hDSSB2MS4wIGRldmljZSBhcyBjYXJkIDIsIDQgSVIgKyA0IElUCisgICAuLi4gY29udGV4dHMsIHF1aXJrcyAweDExCisKKyAgIHdoZW4gbG9hZGluZyB0aGUgZHJpdmVyLiBJZiB5b3UgaGF2ZSBubyBzdXBwb3J0ZWQgY29udHJvbGxlciwgbWFueSBQQ0ksCisgICBDYXJkQnVzIGFuZCBldmVuIHNvbWUgRXhwcmVzcyBjYXJkcyB3aGljaCBhcmUgZnVsbHkgY29tcGxpYW50IHRvIE9IQ0ktMTM5NAorICAgc3BlY2lmaWNhdGlvbiBhcmUgYXZhaWxhYmxlLiBJZiBpdCByZXF1aXJlcyBubyBkcml2ZXIgZm9yIFdpbmRvd3Mgb3BlcmF0aW5nCisgICBzeXN0ZW1zLCBpdCBtb3N0IGxpa2VseSBpcy4gT25seSBzcGVjaWFsaXplZCBzaG9wcyBoYXZlIGNhcmRzIHdoaWNoIGFyZSBub3QKKyAgIGNvbXBsaWFudCwgdGhleSBhcmUgYmFzZWQgb24gVEkgUENJTHlueCBjaGlwcyBhbmQgcmVxdWlyZSBkcml2ZXJzIGZvciBXaW4tCisgICBkb3dzIG9wZXJhdGluZyBzeXN0ZW1zLgorCisgICBUaGUgbWVudGlvbmVkIGtlcm5lbCBsb2cgbWVzc2FnZSBjb250YWlucyB0aGUgc3RyaW5nICJwaHlzVUIiIGlmIHRoZQorICAgY29udHJvbGxlciBpbXBsZW1lbnRzIGEgd3JpdGFibGUgUGh5c2ljYWwgVXBwZXIgQm91bmQgcmVnaXN0ZXIuICBUaGlzIGlzCisgICByZXF1aXJlZCBmb3IgcGh5c2ljYWwgRE1BIGFib3ZlIDQgR0IgKGJ1dCBub3QgdXRpbGl6ZWQgYnkgTGludXggeWV0KS4KKworMikgRXN0YWJsaXNoIGEgd29ya2luZyBGaXJlV2lyZSBjYWJsZSBjb25uZWN0aW9uOgorCisgICBBbnkgRmlyZVdpcmUgY2FibGUsIGFzIGxvbmcgYXQgaXQgcHJvdmlkZXMgZWxlY3RyaWNhbGx5IGFuZCBtZWNoYW5pY2FsbHkKKyAgIHN0YWJsZSBjb25uZWN0aW9uIGFuZCBoYXMgbWF0Y2hpbmcgY29ubmVjdG9ycyAodGhlcmUgYXJlIHNtYWxsIDQtcGluIGFuZAorICAgbGFyZ2UgNi1waW4gRmlyZVdpcmUgcG9ydHMpIHdpbGwgZG8uCisKKyAgIElmIGFuIGRyaXZlciBpcyBydW5uaW5nIG9uIGJvdGggbWFjaGluZXMgeW91IHNob3VsZCBzZWUgYSBsaW5lIGxpa2UKKworICAgZmlyZXdpcmVfY29yZSAwMDAwOjE1OjAwLjE6IGNyZWF0ZWQgZGV2aWNlIGZ3MTogR1VJRCAwMDA2MWIwMDIwMTA1OTE3LCBTNDAwCisKKyAgIG9uIGJvdGggbWFjaGluZXMgaW4gdGhlIGtlcm5lbCBsb2cgd2hlbiB0aGUgY2FibGUgaXMgcGx1Z2dlZCBpbgorICAgYW5kIGNvbm5lY3RzIHRoZSB0d28gbWFjaGluZXMuCisKKzMpIFRlc3QgcGh5c2ljYWwgRE1BIHVzaW5nIGZpcmVzY29wZToKKworICAgT24gdGhlIGRlYnVnIGhvc3QsIG1ha2Ugc3VyZSB0aGF0IC9kZXYvZncqIGlzIGFjY2Vzc2libGUsCisgICB0aGVuIHN0YXJ0IGZpcmVzY29wZToKKworCSQgZmlyZXNjb3BlCisJUG9ydCAwICgvZGV2L2Z3MSkgb3BlbmVkLCAyIG5vZGVzIGRldGVjdGVkCisKKwlGaXJlU2NvcGUKKwktLS0tLS0tLS0KKwlUYXJnZXQgOiA8dW5zcGVjaWZpZWQ+CisJR2VuICAgIDogMQorCVtDdHJsLVRdIGNob29zZSB0YXJnZXQKKwlbQ3RybC1IXSB0aGlzIG1lbnUKKwlbQ3RybC1RXSBxdWl0CisKKyAgICAtLS0tLS0+IFByZXNzIEN0cmwtVCBub3csIHRoZSBvdXRwdXQgc2hvdWxkIGJlIHNpbWlsYXIgdG86CisKKwkyIG5vZGVzIGF2YWlsYWJsZSwgbG9jYWwgbm9kZSBpczogMAorCSAwOiBmZmMwLCB1dWlkOiAwMDAwMDAwMCAwMDAwMDAwMCBbTE9DQUxdCisJIDE6IGZmYzEsIHV1aWQ6IDAwMjc5MDAwIGJhNGJiODAxCisKKyAgIEJlc2lkZXMgdGhlIFtMT0NBTF0gbm9kZSwgaXQgbXVzdCBzaG93IGFub3RoZXIgbm9kZSB3aXRob3V0IGVycm9yIG1lc3NhZ2UuCisKKzQpIFByZXBhcmUgZm9yIGRlYnVnZ2luZyB3aXRoIGVhcmx5IE9IQ0ktMTM5NCBpbml0aWFsaXphdGlvbjoKKworICAgNC4xKSBLZXJuZWwgY29tcGlsYXRpb24gYW5kIGluc3RhbGxhdGlvbiBvbiBkZWJ1ZyB0YXJnZXQKKworICAgQ29tcGlsZSB0aGUga2VybmVsIHRvIGJlIGRlYnVnZ2VkIHdpdGggQ09ORklHX1BST1ZJREVfT0hDSTEzOTRfRE1BX0lOSVQKKyAgIChLZXJuZWwgaGFja2luZzogUHJvdmlkZSBjb2RlIGZvciBlbmFibGluZyBETUEgb3ZlciBGaXJlV2lyZSBlYXJseSBvbiBib290KQorICAgZW5hYmxlZCBhbmQgaW5zdGFsbCBpdCBvbiB0aGUgbWFjaGluZSB0byBiZSBkZWJ1Z2dlZCAoZGVidWcgdGFyZ2V0KS4KKworICAgNC4yKSBUcmFuc2ZlciB0aGUgU3lzdGVtLm1hcCBvZiB0aGUgZGVidWdnZWQga2VybmVsIHRvIHRoZSBkZWJ1ZyBob3N0CisKKyAgIENvcHkgdGhlIFN5c3RlbS5tYXAgb2YgdGhlIGtlcm5lbCBiZSBkZWJ1Z2dlZCB0byB0aGUgZGVidWcgaG9zdCAodGhlIGhvc3QKKyAgIHdoaWNoIGlzIGNvbm5lY3RlZCB0byB0aGUgZGVidWdnZWQgbWFjaGluZSBvdmVyIHRoZSBGaXJlV2lyZSBjYWJsZSkuCisKKzUpIFJldHJpZXZpbmcgdGhlIHByaW50ayBidWZmZXIgY29udGVudHM6CisKKyAgIFdpdGggdGhlIEZpcmVXaXJlIGNhYmxlIGNvbm5lY3RlZCwgdGhlIE9IQ0ktMTM5NCBkcml2ZXIgb24gdGhlIGRlYnVnZ2luZworICAgaG9zdCBsb2FkZWQsIHJlYm9vdCB0aGUgZGVidWdnZWQgbWFjaGluZSwgYm9vdGluZyB0aGUga2VybmVsIHdoaWNoIGhhcworICAgQ09ORklHX1BST1ZJREVfT0hDSTEzOTRfRE1BX0lOSVQgZW5hYmxlZCwgd2l0aCB0aGUgb3B0aW9uIG9oY2kxMzk0X2RtYT1lYXJseS4KKworICAgVGhlbiwgb24gdGhlIGRlYnVnZ2luZyBob3N0LCBydW4gZmlyZXNjb3BlLCBmb3IgZXhhbXBsZSBieSB1c2luZyAtQToKKworCWZpcmVzY29wZSAtQSBTeXN0ZW0ubWFwLW9mLWRlYnVnLXRhcmdldC1rZXJuZWwKKworICAgTm90ZTogLUEgYXV0b21hdGljYWxseSBhdHRhY2hlcyB0byB0aGUgZmlyc3Qgbm9uLWxvY2FsIG5vZGUuIEl0IG9ubHkgd29ya3MKKyAgIHJlbGlhYmx5IGlmIG9ubHkgY29ubmVjdGVkIHR3byBtYWNoaW5lcyBhcmUgY29ubmVjdGVkIHVzaW5nIEZpcmVXaXJlLgorCisgICBBZnRlciBoYXZpbmcgYXR0YWNoZWQgdG8gdGhlIGRlYnVnIHRhcmdldCwgcHJlc3MgQ3RybC1EIHRvIHZpZXcgdGhlCisgICBjb21wbGV0ZSBwcmludGsgYnVmZmVyIG9yIEN0cmwtVSB0byBlbnRlciBhdXRvIHVwZGF0ZSBtb2RlIGFuZCBnZXQgYW4KKyAgIHVwZGF0ZWQgbGl2ZSB2aWV3IG9mIHJlY2VudCBrZXJuZWwgbWVzc2FnZXMgbG9nZ2VkIG9uIHRoZSBkZWJ1ZyB0YXJnZXQuCisKKyAgIENhbGwgImZpcmVzY29wZSAtaCIgdG8gZ2V0IG1vcmUgaW5mb3JtYXRpb24gb24gZmlyZXNjb3BlJ3Mgb3B0aW9ucy4KKworTm90ZXMKKy0tLS0tCitEb2N1bWVudGF0aW9uIGFuZCBzcGVjaWZpY2F0aW9uczogaHR0cDovL2hhbG9iYXRlcy5kZS9maXJld2lyZS8KKworRmlyZVdpcmUgaXMgYSB0cmFkZW1hcmsgb2YgQXBwbGUgSW5jLiAtIGZvciBtb3JlIGluZm9ybWF0aW9uIHBsZWFzZSByZWZlciB0bzoKK2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZpcmVXaXJlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RlbGxfcmJ1LnR4dCBiL0RvY3VtZW50YXRpb24vZGVsbF9yYnUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNjJlMjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RlbGxfcmJ1LnR4dApAQCAtMCwwICsxLDEwMCBAQAorUHVycG9zZToKK0RlbW9uc3RyYXRlIHRoZSB1c2FnZSBvZiB0aGUgbmV3IG9wZW4gc291cmNlZCByYnUgKFJlbW90ZSBCSU9TIFVwZGF0ZSkgZHJpdmVyCitmb3IgdXBkYXRpbmcgQklPUyBpbWFnZXMgb24gRGVsbCBzZXJ2ZXJzIGFuZCBkZXNrdG9wcy4KKworU2NvcGU6CitUaGlzIGRvY3VtZW50IGRpc2N1c3NlcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgcmJ1IGRyaXZlciBvbmx5LgorSXQgZG9lcyBub3QgY292ZXIgdGhlIHN1cHBvcnQgbmVlZGVkIGZyb20gYXBwbGljYXRpb25zIHRvIGVuYWJsZSB0aGUgQklPUyB0bwordXBkYXRlIGl0c2VsZiB3aXRoIHRoZSBpbWFnZSBkb3dubG9hZGVkIGluIHRvIHRoZSBtZW1vcnkuCisKK092ZXJ2aWV3OgorVGhpcyBkcml2ZXIgd29ya3Mgd2l0aCBEZWxsIE9wZW5NYW5hZ2Ugb3IgRGVsbCBVcGRhdGUgUGFja2FnZXMgZm9yIHVwZGF0aW5nCit0aGUgQklPUyBvbiBEZWxsIHNlcnZlcnMgKHN0YXJ0aW5nIGZyb20gc2VydmVycyBzb2xkIHNpbmNlIDE5OTkpLCBkZXNrdG9wcworYW5kIG5vdGVib29rcyAoc3RhcnRpbmcgZnJvbSB0aG9zZSBzb2xkIGluIDIwMDUpLgorUGxlYXNlIGdvIHRvICBodHRwOi8vc3VwcG9ydC5kZWxsLmNvbSByZWdpc3RlciBhbmQgeW91IGNhbiBmaW5kIGluZm8gb24KK09wZW5NYW5hZ2UgYW5kIERlbGwgVXBkYXRlIHBhY2thZ2VzIChEVVApLgorTGlic21iaW9zIGNhbiBhbHNvIGJlIHVzZWQgdG8gdXBkYXRlIEJJT1Mgb24gRGVsbCBzeXN0ZW1zIGdvIHRvCitodHRwOi8vbGludXguZGVsbC5jb20vbGlic21iaW9zLyBmb3IgZGV0YWlscy4KKworRGVsbF9SQlUgZHJpdmVyIHN1cHBvcnRzIEJJT1MgdXBkYXRlIHVzaW5nIHRoZSBtb25vbGl0aGljIGltYWdlIGFuZCBwYWNrZXRpemVkCitpbWFnZSBtZXRob2RzLiBJbiBjYXNlIG9mIG1vbm9saXRoaWMgdGhlIGRyaXZlciBhbGxvY2F0ZXMgYSBjb250aWd1b3VzIGNodW5rCitvZiBwaHlzaWNhbCBwYWdlcyBoYXZpbmcgdGhlIEJJT1MgaW1hZ2UuIEluIGNhc2Ugb2YgcGFja2V0aXplZCB0aGUgYXBwCit1c2luZyB0aGUgZHJpdmVyIGJyZWFrcyB0aGUgaW1hZ2UgaW4gdG8gcGFja2V0cyBvZiBmaXhlZCBzaXplcyBhbmQgdGhlIGRyaXZlcgord291bGQgcGxhY2UgZWFjaCBwYWNrZXQgaW4gY29udGlndW91cyBwaHlzaWNhbCBtZW1vcnkuIFRoZSBkcml2ZXIgYWxzbworbWFpbnRhaW5zIGEgbGluayBsaXN0IG9mIHBhY2tldHMgZm9yIHJlYWRpbmcgdGhlbSBiYWNrLgorSWYgdGhlIGRlbGxfcmJ1IGRyaXZlciBpcyB1bmxvYWRlZCBhbGwgdGhlIGFsbG9jYXRlZCBtZW1vcnkgaXMgZnJlZWQuCisKK1RoZSByYnUgZHJpdmVyIG5lZWRzIHRvIGhhdmUgYW4gYXBwbGljYXRpb24gKGFzIG1lbnRpb25lZCBhYm92ZSl3aGljaCB3aWxsCitpbmZvcm0gdGhlIEJJT1MgdG8gZW5hYmxlIHRoZSB1cGRhdGUgaW4gdGhlIG5leHQgc3lzdGVtIHJlYm9vdC4KKworVGhlIHVzZXIgc2hvdWxkIG5vdCB1bmxvYWQgdGhlIHJidSBkcml2ZXIgYWZ0ZXIgZG93bmxvYWRpbmcgdGhlIEJJT1MgaW1hZ2UKK29yIHVwZGF0aW5nLgorCitUaGUgZHJpdmVyIGxvYWQgY3JlYXRlcyB0aGUgZm9sbG93aW5nIGRpcmVjdG9yaWVzIHVuZGVyIHRoZSAvc3lzIGZpbGUgc3lzdGVtLgorL3N5cy9jbGFzcy9maXJtd2FyZS9kZWxsX3JidS9sb2FkaW5nCisvc3lzL2NsYXNzL2Zpcm13YXJlL2RlbGxfcmJ1L2RhdGEKKy9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9kZWxsX3JidS9pbWFnZV90eXBlCisvc3lzL2RldmljZXMvcGxhdGZvcm0vZGVsbF9yYnUvZGF0YQorL3N5cy9kZXZpY2VzL3BsYXRmb3JtL2RlbGxfcmJ1L3BhY2tldF9zaXplCisKK1RoZSBkcml2ZXIgc3VwcG9ydHMgdHdvIHR5cGVzIG9mIHVwZGF0ZSBtZWNoYW5pc207IG1vbm9saXRoaWMgYW5kIHBhY2tldGl6ZWQuCitUaGVzZSB1cGRhdGUgbWVjaGFuaXNtIGRlcGVuZHMgdXBvbiB0aGUgQklPUyBjdXJyZW50bHkgcnVubmluZyBvbiB0aGUgc3lzdGVtLgorTW9zdCBvZiB0aGUgRGVsbCBzeXN0ZW1zIHN1cHBvcnQgYSBtb25vbGl0aGljIHVwZGF0ZSB3aGVyZSB0aGUgQklPUyBpbWFnZSBpcworY29waWVkIHRvIGEgc2luZ2xlIGNvbnRpZ3VvdXMgYmxvY2sgb2YgcGh5c2ljYWwgbWVtb3J5LgorSW4gY2FzZSBvZiBwYWNrZXQgbWVjaGFuaXNtIHRoZSBzaW5nbGUgbWVtb3J5IGNhbiBiZSBicm9rZW4gaW4gc21hbGxlciBjaHVua3MKK29mIGNvbnRpZ3VvdXMgbWVtb3J5IGFuZCB0aGUgQklPUyBpbWFnZSBpcyBzY2F0dGVyZWQgaW4gdGhlc2UgcGFja2V0cy4KKworQnkgZGVmYXVsdCB0aGUgZHJpdmVyIHVzZXMgbW9ub2xpdGhpYyBtZW1vcnkgZm9yIHRoZSB1cGRhdGUgdHlwZS4gVGhpcyBjYW4gYmUKK2NoYW5nZWQgdG8gcGFja2V0cyBkdXJpbmcgdGhlIGRyaXZlciBsb2FkIHRpbWUgYnkgc3BlY2lmeWluZyB0aGUgbG9hZAorcGFyYW1ldGVyIGltYWdlX3R5cGU9cGFja2V0LiAgVGhpcyBjYW4gYWxzbyBiZSBjaGFuZ2VkIGxhdGVyIGFzIGJlbG93CitlY2hvIHBhY2tldCA+IC9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9kZWxsX3JidS9pbWFnZV90eXBlCisKK0luIHBhY2tldCB1cGRhdGUgbW9kZSB0aGUgcGFja2V0IHNpemUgaGFzIHRvIGJlIGdpdmVuIGJlZm9yZSBhbnkgcGFja2V0cyBjYW4KK2JlIGRvd25sb2FkZWQuIEl0IGlzIGRvbmUgYXMgYmVsb3cKK2VjaG8gWFhYWCA+IC9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9kZWxsX3JidS9wYWNrZXRfc2l6ZQorSW4gdGhlIHBhY2tldCB1cGRhdGUgbWVjaGFuaXNtLCB0aGUgdXNlciBuZWVkcyB0byBjcmVhdGUgYSBuZXcgZmlsZSBoYXZpbmcKK3BhY2tldHMgb2YgZGF0YSBhcnJhbmdlZCBiYWNrIHRvIGJhY2suIEl0IGNhbiBiZSBkb25lIGFzIGZvbGxvd3MKK1RoZSB1c2VyIGNyZWF0ZXMgcGFja2V0cyBoZWFkZXIsIGdldHMgdGhlIGNodW5rIG9mIHRoZSBCSU9TIGltYWdlIGFuZAorcGxhY2VzIGl0IG5leHQgdG8gdGhlIHBhY2tldGhlYWRlcjsgbm93LCB0aGUgcGFja2V0aGVhZGVyICsgQklPUyBpbWFnZSBjaHVuaworYWRkZWQgdG9nZXRoZXIgc2hvdWxkIG1hdGNoIHRoZSBzcGVjaWZpZWQgcGFja2V0X3NpemUuIFRoaXMgbWFrZXMgb25lCitwYWNrZXQsIHRoZSB1c2VyIG5lZWRzIHRvIGNyZWF0ZSBtb3JlIHN1Y2ggcGFja2V0cyBvdXQgb2YgdGhlIGVudGlyZSBCSU9TCitpbWFnZSBmaWxlIGFuZCB0aGVuIGFycmFuZ2UgYWxsIHRoZXNlIHBhY2tldHMgYmFjayB0byBiYWNrIGluIHRvIG9uZSBzaW5nbGUKK2ZpbGUuCitUaGlzIGZpbGUgaXMgdGhlbiBjb3BpZWQgdG8gL3N5cy9jbGFzcy9maXJtd2FyZS9kZWxsX3JidS9kYXRhLgorT25jZSB0aGlzIGZpbGUgZ2V0cyB0byB0aGUgZHJpdmVyLCB0aGUgZHJpdmVyIGV4dHJhY3RzIHBhY2tldF9zaXplIGRhdGEgZnJvbQordGhlIGZpbGUgYW5kIHNwcmVhZHMgaXQgYWNyb3NzIHRoZSBwaHlzaWNhbCBtZW1vcnkgaW4gY29udGlndW91cyBwYWNrZXRfc2l6ZWQKK3NwYWNlLgorVGhpcyBtZXRob2QgbWFrZXMgc3VyZSB0aGF0IGFsbCB0aGUgcGFja2V0cyBnZXQgdG8gdGhlIGRyaXZlciBpbiBhIHNpbmdsZSBvcGVyYXRpb24uCisKK0luIG1vbm9saXRoaWMgdXBkYXRlIHRoZSB1c2VyIHNpbXBseSBnZXQgdGhlIEJJT1MgaW1hZ2UgKC5oZHIgZmlsZSkgYW5kIGNvcGllcwordG8gdGhlIGRhdGEgZmlsZSBhcyBpcyB3aXRob3V0IGFueSBjaGFuZ2UgdG8gdGhlIEJJT1MgaW1hZ2UgaXRzZWxmLgorCitEbyB0aGUgc3RlcHMgYmVsb3cgdG8gZG93bmxvYWQgdGhlIEJJT1MgaW1hZ2UuCisxKSBlY2hvIDEgPiAvc3lzL2NsYXNzL2Zpcm13YXJlL2RlbGxfcmJ1L2xvYWRpbmcKKzIpIGNwIGJpb3NfaW1hZ2UuaGRyIC9zeXMvY2xhc3MvZmlybXdhcmUvZGVsbF9yYnUvZGF0YQorMykgZWNobyAwID4gL3N5cy9jbGFzcy9maXJtd2FyZS9kZWxsX3JidS9sb2FkaW5nCisKK1RoZSAvc3lzL2NsYXNzL2Zpcm13YXJlL2RlbGxfcmJ1LyBlbnRyaWVzIHdpbGwgcmVtYWluIHRpbGwgdGhlIGZvbGxvd2luZyBpcworZG9uZS4KK2VjaG8gLTEgPiAvc3lzL2NsYXNzL2Zpcm13YXJlL2RlbGxfcmJ1L2xvYWRpbmcKK1VudGlsIHRoaXMgc3RlcCBpcyBjb21wbGV0ZWQgdGhlIGRyaXZlciBjYW5ub3QgYmUgdW5sb2FkZWQuCitBbHNvIGVjaG9pbmcgZWl0aGVyIG1vbm8sIHBhY2tldCBvciBpbml0IGluIHRvIGltYWdlX3R5cGUgd2lsbCBmcmVlIHVwIHRoZQorbWVtb3J5IGFsbG9jYXRlZCBieSB0aGUgZHJpdmVyLgorCitJZiBhIHVzZXIgYnkgYWNjaWRlbnQgZXhlY3V0ZXMgc3RlcHMgMSBhbmQgMyBhYm92ZSB3aXRob3V0IGV4ZWN1dGluZyBzdGVwIDI7CitpdCB3aWxsIG1ha2UgdGhlIC9zeXMvY2xhc3MvZmlybXdhcmUvZGVsbF9yYnUvIGVudHJpZXMgZGlzYXBwZWFyLgorVGhlIGVudHJpZXMgY2FuIGJlIHJlY3JlYXRlZCBieSBkb2luZyB0aGUgZm9sbG93aW5nCitlY2hvIGluaXQgPiAvc3lzL2RldmljZXMvcGxhdGZvcm0vZGVsbF9yYnUvaW1hZ2VfdHlwZQorTk9URTogZWNob2luZyBpbml0IGluIGltYWdlX3R5cGUgZG9lcyBub3QgY2hhbmdlIGl0IG9yaWdpbmFsIHZhbHVlLgorCitBbHNvIHRoZSBkcml2ZXIgcHJvdmlkZXMgL3N5cy9kZXZpY2VzL3BsYXRmb3JtL2RlbGxfcmJ1L2RhdGEgcmVhZG9ubHkgZmlsZSB0bworcmVhZCBiYWNrIHRoZSBpbWFnZSBkb3dubG9hZGVkLgorCitOT1RFOgorVGhpcyBkcml2ZXIgcmVxdWlyZXMgYSBwYXRjaCBmb3IgZmlybXdhcmVfY2xhc3MuYyB3aGljaCBoYXMgdGhlIG1vZGlmaWVkCityZXF1ZXN0X2Zpcm13YXJlX25vd2FpdCBmdW5jdGlvbi4KK0Fsc28gYWZ0ZXIgdXBkYXRpbmcgdGhlIEJJT1MgaW1hZ2UgYSB1c2VyIG1vZGUgYXBwbGljYXRpb24gbmVlZHMgdG8gZXhlY3V0ZQorY29kZSB3aGljaCBzZW5kcyB0aGUgQklPUyB1cGRhdGUgcmVxdWVzdCB0byB0aGUgQklPUy4gU28gb24gdGhlIG5leHQgcmVib290Cit0aGUgQklPUyBrbm93cyBhYm91dCB0aGUgbmV3IGltYWdlIGRvd25sb2FkZWQgYW5kIGl0IHVwZGF0ZXMgaXRzZWxmLgorQWxzbyBkb24ndCB1bmxvYWQgdGhlIHJidSBkcml2ZXIgaWYgdGhlIGltYWdlIGhhcyB0byBiZSB1cGRhdGVkLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmVsb3BtZW50LXByb2Nlc3MvMS5JbnRybyBiL0RvY3VtZW50YXRpb24vZGV2ZWxvcG1lbnQtcHJvY2Vzcy8xLkludHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliNjE0NDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmVsb3BtZW50LXByb2Nlc3MvMS5JbnRybwpAQCAtMCwwICsxLDI3NCBAQAorMTogQSBHVUlERSBUTyBUSEUgS0VSTkVMIERFVkVMT1BNRU5UIFBST0NFU1MKKworVGhlIHB1cnBvc2Ugb2YgdGhpcyBkb2N1bWVudCBpcyB0byBoZWxwIGRldmVsb3BlcnMgKGFuZCB0aGVpciBtYW5hZ2VycykKK3dvcmsgd2l0aCB0aGUgZGV2ZWxvcG1lbnQgY29tbXVuaXR5IHdpdGggYSBtaW5pbXVtIG9mIGZydXN0cmF0aW9uLiAgSXQgaXMKK2FuIGF0dGVtcHQgdG8gZG9jdW1lbnQgaG93IHRoaXMgY29tbXVuaXR5IHdvcmtzIGluIGEgd2F5IHdoaWNoIGlzCithY2Nlc3NpYmxlIHRvIHRob3NlIHdobyBhcmUgbm90IGludGltYXRlbHkgZmFtaWxpYXIgd2l0aCBMaW51eCBrZXJuZWwKK2RldmVsb3BtZW50IChvciwgaW5kZWVkLCBmcmVlIHNvZnR3YXJlIGRldmVsb3BtZW50IGluIGdlbmVyYWwpLiAgV2hpbGUKK3RoZXJlIGlzIHNvbWUgdGVjaG5pY2FsIG1hdGVyaWFsIGhlcmUsIHRoaXMgaXMgdmVyeSBtdWNoIGEgcHJvY2Vzcy1vcmllbnRlZAorZGlzY3Vzc2lvbiB3aGljaCBkb2VzIG5vdCByZXF1aXJlIGEgZGVlcCBrbm93bGVkZ2Ugb2Yga2VybmVsIHByb2dyYW1taW5nIHRvCit1bmRlcnN0YW5kLgorCisKKzEuMTogRVhFQ1VUSVZFIFNVTU1BUlkKKworVGhlIHJlc3Qgb2YgdGhpcyBzZWN0aW9uIGNvdmVycyB0aGUgc2NvcGUgb2YgdGhlIGtlcm5lbCBkZXZlbG9wbWVudCBwcm9jZXNzCithbmQgdGhlIGtpbmRzIG9mIGZydXN0cmF0aW9ucyB0aGF0IGRldmVsb3BlcnMgYW5kIHRoZWlyIGVtcGxveWVycyBjYW4KK2VuY291bnRlciB0aGVyZS4gIFRoZXJlIGFyZSBhIGdyZWF0IG1hbnkgcmVhc29ucyB3aHkga2VybmVsIGNvZGUgc2hvdWxkIGJlCittZXJnZWQgaW50byB0aGUgb2ZmaWNpYWwgKCJtYWlubGluZSIpIGtlcm5lbCwgaW5jbHVkaW5nIGF1dG9tYXRpYworYXZhaWxhYmlsaXR5IHRvIHVzZXJzLCBjb21tdW5pdHkgc3VwcG9ydCBpbiBtYW55IGZvcm1zLCBhbmQgdGhlIGFiaWxpdHkgdG8KK2luZmx1ZW5jZSB0aGUgZGlyZWN0aW9uIG9mIGtlcm5lbCBkZXZlbG9wbWVudC4gIENvZGUgY29udHJpYnV0ZWQgdG8gdGhlCitMaW51eCBrZXJuZWwgbXVzdCBiZSBtYWRlIGF2YWlsYWJsZSB1bmRlciBhIEdQTC1jb21wYXRpYmxlIGxpY2Vuc2UuCisKK1NlY3Rpb24gMiBpbnRyb2R1Y2VzIHRoZSBkZXZlbG9wbWVudCBwcm9jZXNzLCB0aGUga2VybmVsIHJlbGVhc2UgY3ljbGUsIGFuZAordGhlIG1lY2hhbmljcyBvZiB0aGUgbWVyZ2Ugd2luZG93LiAgVGhlIHZhcmlvdXMgcGhhc2VzIGluIHRoZSBwYXRjaAorZGV2ZWxvcG1lbnQsIHJldmlldywgYW5kIG1lcmdpbmcgY3ljbGUgYXJlIGNvdmVyZWQuICBUaGVyZSBpcyBzb21lCitkaXNjdXNzaW9uIG9mIHRvb2xzIGFuZCBtYWlsaW5nIGxpc3RzLiAgRGV2ZWxvcGVycyB3YW50aW5nIHRvIGdldCBzdGFydGVkCit3aXRoIGtlcm5lbCBkZXZlbG9wbWVudCBhcmUgZW5jb3VyYWdlZCB0byB0cmFjayBkb3duIGFuZCBmaXggYnVncyBhcyBhbgoraW5pdGlhbCBleGVyY2lzZS4KKworU2VjdGlvbiAzIGNvdmVycyBlYXJseS1zdGFnZSBwcm9qZWN0IHBsYW5uaW5nLCB3aXRoIGFuIGVtcGhhc2lzIG9uCitpbnZvbHZpbmcgdGhlIGRldmVsb3BtZW50IGNvbW11bml0eSBhcyBzb29uIGFzIHBvc3NpYmxlLgorCitTZWN0aW9uIDQgaXMgYWJvdXQgdGhlIGNvZGluZyBwcm9jZXNzOyBzZXZlcmFsIHBpdGZhbGxzIHdoaWNoIGhhdmUgYmVlbgorZW5jb3VudGVyZWQgYnkgb3RoZXIgZGV2ZWxvcGVycyBhcmUgZGlzY3Vzc2VkLiAgU29tZSByZXF1aXJlbWVudHMgZm9yCitwYXRjaGVzIGFyZSBjb3ZlcmVkLCBhbmQgdGhlcmUgaXMgYW4gaW50cm9kdWN0aW9uIHRvIHNvbWUgb2YgdGhlIHRvb2xzCit3aGljaCBjYW4gaGVscCB0byBlbnN1cmUgdGhhdCBrZXJuZWwgcGF0Y2hlcyBhcmUgY29ycmVjdC4KKworU2VjdGlvbiA1IHRhbGtzIGFib3V0IHRoZSBwcm9jZXNzIG9mIHBvc3RpbmcgcGF0Y2hlcyBmb3IgcmV2aWV3LiAgVG8gYmUKK3Rha2VuIHNlcmlvdXNseSBieSB0aGUgZGV2ZWxvcG1lbnQgY29tbXVuaXR5LCBwYXRjaGVzIG11c3QgYmUgcHJvcGVybHkKK2Zvcm1hdHRlZCBhbmQgZGVzY3JpYmVkLCBhbmQgdGhleSBtdXN0IGJlIHNlbnQgdG8gdGhlIHJpZ2h0IHBsYWNlLgorRm9sbG93aW5nIHRoZSBhZHZpY2UgaW4gdGhpcyBzZWN0aW9uIHNob3VsZCBoZWxwIHRvIGVuc3VyZSB0aGUgYmVzdAorcG9zc2libGUgcmVjZXB0aW9uIGZvciB5b3VyIHdvcmsuCisKK1NlY3Rpb24gNiBjb3ZlcnMgd2hhdCBoYXBwZW5zIGFmdGVyIHBvc3RpbmcgcGF0Y2hlczsgdGhlIGpvYiBpcyBmYXIgZnJvbQorZG9uZSBhdCB0aGF0IHBvaW50LiAgV29ya2luZyB3aXRoIHJldmlld2VycyBpcyBhIGNydWNpYWwgcGFydCBvZiB0aGUKK2RldmVsb3BtZW50IHByb2Nlc3M7IHRoaXMgc2VjdGlvbiBvZmZlcnMgYSBudW1iZXIgb2YgdGlwcyBvbiBob3cgdG8gYXZvaWQKK3Byb2JsZW1zIGF0IHRoaXMgaW1wb3J0YW50IHN0YWdlLiAgRGV2ZWxvcGVycyBhcmUgY2F1dGlvbmVkIGFnYWluc3QKK2Fzc3VtaW5nIHRoYXQgdGhlIGpvYiBpcyBkb25lIHdoZW4gYSBwYXRjaCBpcyBtZXJnZWQgaW50byB0aGUgbWFpbmxpbmUuCisKK1NlY3Rpb24gNyBpbnRyb2R1Y2VzIGEgY291cGxlIG9mICJhZHZhbmNlZCIgdG9waWNzOiBtYW5hZ2luZyBwYXRjaGVzIHdpdGgKK2dpdCBhbmQgcmV2aWV3aW5nIHBhdGNoZXMgcG9zdGVkIGJ5IG90aGVycy4KKworU2VjdGlvbiA4IGNvbmNsdWRlcyB0aGUgZG9jdW1lbnQgd2l0aCBwb2ludGVycyB0byBzb3VyY2VzIGZvciBtb3JlCitpbmZvcm1hdGlvbiBvbiBrZXJuZWwgZGV2ZWxvcG1lbnQuCisKKworMS4yOiBXSEFUIFRISVMgRE9DVU1FTlQgSVMgQUJPVVQKKworVGhlIExpbnV4IGtlcm5lbCwgYXQgb3ZlciA4IG1pbGxpb24gbGluZXMgb2YgY29kZSBhbmQgd2VsbCBvdmVyIDEwMDAKK2NvbnRyaWJ1dG9ycyB0byBlYWNoIHJlbGVhc2UsIGlzIG9uZSBvZiB0aGUgbGFyZ2VzdCBhbmQgbW9zdCBhY3RpdmUgZnJlZQorc29mdHdhcmUgcHJvamVjdHMgaW4gZXhpc3RlbmNlLiAgU2luY2UgaXRzIGh1bWJsZSBiZWdpbm5pbmcgaW4gMTk5MSwgdGhpcwora2VybmVsIGhhcyBldm9sdmVkIGludG8gYSBiZXN0LW9mLWJyZWVkIG9wZXJhdGluZyBzeXN0ZW0gY29tcG9uZW50IHdoaWNoCitydW5zIG9uIHBvY2tldC1zaXplZCBkaWdpdGFsIG11c2ljIHBsYXllcnMsIGRlc2t0b3AgUENzLCB0aGUgbGFyZ2VzdAorc3VwZXJjb21wdXRlcnMgaW4gZXhpc3RlbmNlLCBhbmQgYWxsIHR5cGVzIG9mIHN5c3RlbXMgaW4gYmV0d2Vlbi4gIEl0IGlzIGEKK3JvYnVzdCwgZWZmaWNpZW50LCBhbmQgc2NhbGFibGUgc29sdXRpb24gZm9yIGFsbW9zdCBhbnkgc2l0dWF0aW9uLgorCitXaXRoIHRoZSBncm93dGggb2YgTGludXggaGFzIGNvbWUgYW4gaW5jcmVhc2UgaW4gdGhlIG51bWJlciBvZiBkZXZlbG9wZXJzCisoYW5kIGNvbXBhbmllcykgd2lzaGluZyB0byBwYXJ0aWNpcGF0ZSBpbiBpdHMgZGV2ZWxvcG1lbnQuICBIYXJkd2FyZQordmVuZG9ycyB3YW50IHRvIGVuc3VyZSB0aGF0IExpbnV4IHN1cHBvcnRzIHRoZWlyIHByb2R1Y3RzIHdlbGwsIG1ha2luZwordGhvc2UgcHJvZHVjdHMgYXR0cmFjdGl2ZSB0byBMaW51eCB1c2Vycy4gIEVtYmVkZGVkIHN5c3RlbXMgdmVuZG9ycywgd2hvCit1c2UgTGludXggYXMgYSBjb21wb25lbnQgaW4gYW4gaW50ZWdyYXRlZCBwcm9kdWN0LCB3YW50IExpbnV4IHRvIGJlIGFzCitjYXBhYmxlIGFuZCB3ZWxsLXN1aXRlZCB0byB0aGUgdGFzayBhdCBoYW5kIGFzIHBvc3NpYmxlLiAgRGlzdHJpYnV0b3JzIGFuZAorb3RoZXIgc29mdHdhcmUgdmVuZG9ycyB3aG8gYmFzZSB0aGVpciBwcm9kdWN0cyBvbiBMaW51eCBoYXZlIGEgY2xlYXIKK2ludGVyZXN0IGluIHRoZSBjYXBhYmlsaXRpZXMsIHBlcmZvcm1hbmNlLCBhbmQgcmVsaWFiaWxpdHkgb2YgdGhlIExpbnV4CitrZXJuZWwuICBBbmQgZW5kIHVzZXJzLCB0b28sIHdpbGwgb2Z0ZW4gd2lzaCB0byBjaGFuZ2UgTGludXggdG8gbWFrZSBpdAorYmV0dGVyIHN1aXQgdGhlaXIgbmVlZHMuCisKK09uZSBvZiB0aGUgbW9zdCBjb21wZWxsaW5nIGZlYXR1cmVzIG9mIExpbnV4IGlzIHRoYXQgaXQgaXMgYWNjZXNzaWJsZSB0bwordGhlc2UgZGV2ZWxvcGVyczsgYW55Ym9keSB3aXRoIHRoZSByZXF1aXNpdGUgc2tpbGxzIGNhbiBpbXByb3ZlIExpbnV4IGFuZAoraW5mbHVlbmNlIHRoZSBkaXJlY3Rpb24gb2YgaXRzIGRldmVsb3BtZW50LiAgUHJvcHJpZXRhcnkgcHJvZHVjdHMgY2Fubm90CitvZmZlciB0aGlzIGtpbmQgb2Ygb3Blbm5lc3MsIHdoaWNoIGlzIGEgY2hhcmFjdGVyaXN0aWMgb2YgdGhlIGZyZWUgc29mdHdhcmUKK3Byb2Nlc3MuICBCdXQsIGlmIGFueXRoaW5nLCB0aGUga2VybmVsIGlzIGV2ZW4gbW9yZSBvcGVuIHRoYW4gbW9zdCBvdGhlcgorZnJlZSBzb2Z0d2FyZSBwcm9qZWN0cy4gIEEgdHlwaWNhbCB0aHJlZS1tb250aCBrZXJuZWwgZGV2ZWxvcG1lbnQgY3ljbGUgY2FuCitpbnZvbHZlIG92ZXIgMTAwMCBkZXZlbG9wZXJzIHdvcmtpbmcgZm9yIG1vcmUgdGhhbiAxMDAgZGlmZmVyZW50IGNvbXBhbmllcworKG9yIGZvciBubyBjb21wYW55IGF0IGFsbCkuCisKK1dvcmtpbmcgd2l0aCB0aGUga2VybmVsIGRldmVsb3BtZW50IGNvbW11bml0eSBpcyBub3QgZXNwZWNpYWxseSBoYXJkLiAgQnV0LAordGhhdCBub3R3aXRoc3RhbmRpbmcsIG1hbnkgcG90ZW50aWFsIGNvbnRyaWJ1dG9ycyBoYXZlIGV4cGVyaWVuY2VkCitkaWZmaWN1bHRpZXMgd2hlbiB0cnlpbmcgdG8gZG8ga2VybmVsIHdvcmsuICBUaGUga2VybmVsIGNvbW11bml0eSBoYXMKK2V2b2x2ZWQgaXRzIG93biBkaXN0aW5jdCB3YXlzIG9mIG9wZXJhdGluZyB3aGljaCBhbGxvdyBpdCB0byBmdW5jdGlvbgorc21vb3RobHkgKGFuZCBwcm9kdWNlIGEgaGlnaC1xdWFsaXR5IHByb2R1Y3QpIGluIGFuIGVudmlyb25tZW50IHdoZXJlCit0aG91c2FuZHMgb2YgbGluZXMgb2YgY29kZSBhcmUgYmVpbmcgY2hhbmdlZCBldmVyeSBkYXkuICBTbyBpdCBpcyBub3QKK3N1cnByaXNpbmcgdGhhdCBMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQgcHJvY2VzcyBkaWZmZXJzIGdyZWF0bHkgZnJvbQorcHJvcHJpZXRhcnkgZGV2ZWxvcG1lbnQgbWV0aG9kcy4KKworVGhlIGtlcm5lbCdzIGRldmVsb3BtZW50IHByb2Nlc3MgbWF5IGNvbWUgYWNyb3NzIGFzIHN0cmFuZ2UgYW5kCitpbnRpbWlkYXRpbmcgdG8gbmV3IGRldmVsb3BlcnMsIGJ1dCB0aGVyZSBhcmUgZ29vZCByZWFzb25zIGFuZCBzb2xpZAorZXhwZXJpZW5jZSBiZWhpbmQgaXQuICBBIGRldmVsb3BlciB3aG8gZG9lcyBub3QgdW5kZXJzdGFuZCB0aGUga2VybmVsCitjb21tdW5pdHkncyB3YXlzIChvciwgd29yc2UsIHdobyB0cmllcyB0byBmbG91dCBvciBjaXJjdW12ZW50IHRoZW0pIHdpbGwKK2hhdmUgYSBmcnVzdHJhdGluZyBleHBlcmllbmNlIGluIHN0b3JlLiAgVGhlIGRldmVsb3BtZW50IGNvbW11bml0eSwgd2hpbGUKK2JlaW5nIGhlbHBmdWwgdG8gdGhvc2Ugd2hvIGFyZSB0cnlpbmcgdG8gbGVhcm4sIGhhcyBsaXR0bGUgdGltZSBmb3IgdGhvc2UKK3dobyB3aWxsIG5vdCBsaXN0ZW4gb3Igd2hvIGRvIG5vdCBjYXJlIGFib3V0IHRoZSBkZXZlbG9wbWVudCBwcm9jZXNzLgorCitJdCBpcyBob3BlZCB0aGF0IHRob3NlIHdobyByZWFkIHRoaXMgZG9jdW1lbnQgd2lsbCBiZSBhYmxlIHRvIGF2b2lkIHRoYXQKK2ZydXN0cmF0aW5nIGV4cGVyaWVuY2UuICBUaGVyZSBpcyBhIGxvdCBvZiBtYXRlcmlhbCBoZXJlLCBidXQgdGhlIGVmZm9ydAoraW52b2x2ZWQgaW4gcmVhZGluZyBpdCB3aWxsIGJlIHJlcGFpZCBpbiBzaG9ydCBvcmRlci4gIFRoZSBkZXZlbG9wbWVudAorY29tbXVuaXR5IGlzIGFsd2F5cyBpbiBuZWVkIG9mIGRldmVsb3BlcnMgd2hvIHdpbGwgaGVscCB0byBtYWtlIHRoZSBrZXJuZWwKK2JldHRlcjsgdGhlIGZvbGxvd2luZyB0ZXh0IHNob3VsZCBoZWxwIHlvdSAtIG9yIHRob3NlIHdobyB3b3JrIGZvciB5b3UgLQoram9pbiBvdXIgY29tbXVuaXR5LgorCisKKzEuMzogQ1JFRElUUworCitUaGlzIGRvY3VtZW50IHdhcyB3cml0dGVuIGJ5IEpvbmF0aGFuIENvcmJldCwgY29yYmV0QGx3bi5uZXQuICBJdCBoYXMgYmVlbgoraW1wcm92ZWQgYnkgY29tbWVudHMgZnJvbSBKb2hhbm5lcyBCZXJnLCBKYW1lcyBCZXJyeSwgQWxleCBDaGlhbmcsIFJvbGFuZAorRHJlaWVyLCBSYW5keSBEdW5sYXAsIEpha2UgRWRnZSwgSmlyaSBLb3NpbmEsIE1hdHQgTWFja2FsbCwgQXJ0aHVyIE1hcnNoLAorQW1hbmRhIE1jUGhlcnNvbiwgQW5kcmV3IE1vcnRvbiwgQW5kcmV3IFByaWNlLCBUc3VnaWthenUgU2hpYmF0YSwgYW5kCitKb2NoZW4gVm/Dny4KKworVGhpcyB3b3JrIHdhcyBzdXBwb3J0ZWQgYnkgdGhlIExpbnV4IEZvdW5kYXRpb247IHRoYW5rcyBlc3BlY2lhbGx5IHRvCitBbWFuZGEgTWNQaGVyc29uLCB3aG8gc2F3IHRoZSB2YWx1ZSBvZiB0aGlzIGVmZm9ydCBhbmQgbWFkZSBpdCBhbGwgaGFwcGVuLgorCisKKzEuNDogVEhFIElNUE9SVEFOQ0UgT0YgR0VUVElORyBDT0RFIElOVE8gVEhFIE1BSU5MSU5FCisKK1NvbWUgY29tcGFuaWVzIGFuZCBkZXZlbG9wZXJzIG9jY2FzaW9uYWxseSB3b25kZXIgd2h5IHRoZXkgc2hvdWxkIGJvdGhlcgorbGVhcm5pbmcgaG93IHRvIHdvcmsgd2l0aCB0aGUga2VybmVsIGNvbW11bml0eSBhbmQgZ2V0IHRoZWlyIGNvZGUgaW50byB0aGUKK21haW5saW5lIGtlcm5lbCAodGhlICJtYWlubGluZSIgYmVpbmcgdGhlIGtlcm5lbCBtYWludGFpbmVkIGJ5IExpbnVzCitUb3J2YWxkcyBhbmQgdXNlZCBhcyBhIGJhc2UgYnkgTGludXggZGlzdHJpYnV0b3JzKS4gIEluIHRoZSBzaG9ydCB0ZXJtLAorY29udHJpYnV0aW5nIGNvZGUgY2FuIGxvb2sgbGlrZSBhbiBhdm9pZGFibGUgZXhwZW5zZTsgaXQgc2VlbXMgZWFzaWVyIHRvCitqdXN0IGtlZXAgdGhlIGNvZGUgc2VwYXJhdGUgYW5kIHN1cHBvcnQgdXNlcnMgZGlyZWN0bHkuICBUaGUgdHJ1dGggb2YgdGhlCittYXR0ZXIgaXMgdGhhdCBrZWVwaW5nIGNvZGUgc2VwYXJhdGUgKCJvdXQgb2YgdHJlZSIpIGlzIGEgZmFsc2UgZWNvbm9teS4KKworQXMgYSB3YXkgb2YgaWxsdXN0cmF0aW5nIHRoZSBjb3N0cyBvZiBvdXQtb2YtdHJlZSBjb2RlLCBoZXJlIGFyZSBhIGZldworcmVsZXZhbnQgYXNwZWN0cyBvZiB0aGUga2VybmVsIGRldmVsb3BtZW50IHByb2Nlc3M7IG1vc3Qgb2YgdGhlc2Ugd2lsbCBiZQorZGlzY3Vzc2VkIGluIGdyZWF0ZXIgZGV0YWlsIGxhdGVyIGluIHRoaXMgZG9jdW1lbnQuICBDb25zaWRlcjoKKworLSBDb2RlIHdoaWNoIGhhcyBiZWVuIG1lcmdlZCBpbnRvIHRoZSBtYWlubGluZSBrZXJuZWwgaXMgYXZhaWxhYmxlIHRvIGFsbAorICBMaW51eCB1c2Vycy4gIEl0IHdpbGwgYXV0b21hdGljYWxseSBiZSBwcmVzZW50IG9uIGFsbCBkaXN0cmlidXRpb25zIHdoaWNoCisgIGVuYWJsZSBpdC4gIFRoZXJlIGlzIG5vIG5lZWQgZm9yIGRyaXZlciBkaXNrcywgZG93bmxvYWRzLCBvciB0aGUgaGFzc2xlcworICBvZiBzdXBwb3J0aW5nIG11bHRpcGxlIHZlcnNpb25zIG9mIG11bHRpcGxlIGRpc3RyaWJ1dGlvbnM7IGl0IGFsbCBqdXN0CisgIHdvcmtzLCBmb3IgdGhlIGRldmVsb3BlciBhbmQgZm9yIHRoZSB1c2VyLiAgSW5jb3Jwb3JhdGlvbiBpbnRvIHRoZQorICBtYWlubGluZSBzb2x2ZXMgYSBsYXJnZSBudW1iZXIgb2YgZGlzdHJpYnV0aW9uIGFuZCBzdXBwb3J0IHByb2JsZW1zLgorCistIFdoaWxlIGtlcm5lbCBkZXZlbG9wZXJzIHN0cml2ZSB0byBtYWludGFpbiBhIHN0YWJsZSBpbnRlcmZhY2UgdG8gdXNlcgorICBzcGFjZSwgdGhlIGludGVybmFsIGtlcm5lbCBBUEkgaXMgaW4gY29uc3RhbnQgZmx1eC4gIFRoZSBsYWNrIG9mIGEgc3RhYmxlCisgIGludGVybmFsIGludGVyZmFjZSBpcyBhIGRlbGliZXJhdGUgZGVzaWduIGRlY2lzaW9uOyBpdCBhbGxvd3MgZnVuZGFtZW50YWwKKyAgaW1wcm92ZW1lbnRzIHRvIGJlIG1hZGUgYXQgYW55IHRpbWUgYW5kIHJlc3VsdHMgaW4gaGlnaGVyLXF1YWxpdHkgY29kZS4KKyAgQnV0IG9uZSByZXN1bHQgb2YgdGhhdCBwb2xpY3kgaXMgdGhhdCBhbnkgb3V0LW9mLXRyZWUgY29kZSByZXF1aXJlcworICBjb25zdGFudCB1cGtlZXAgaWYgaXQgaXMgdG8gd29yayB3aXRoIG5ldyBrZXJuZWxzLiAgTWFpbnRhaW5pbmcKKyAgb3V0LW9mLXRyZWUgY29kZSByZXF1aXJlcyBzaWduaWZpY2FudCBhbW91bnRzIG9mIHdvcmsganVzdCB0byBrZWVwIHRoYXQKKyAgY29kZSB3b3JraW5nLgorCisgIENvZGUgd2hpY2ggaXMgaW4gdGhlIG1haW5saW5lLCBpbnN0ZWFkLCBkb2VzIG5vdCByZXF1aXJlIHRoaXMgd29yayBhcyB0aGUKKyAgcmVzdWx0IG9mIGEgc2ltcGxlIHJ1bGUgcmVxdWlyaW5nIGFueSBkZXZlbG9wZXIgd2hvIG1ha2VzIGFuIEFQSSBjaGFuZ2UKKyAgdG8gYWxzbyBmaXggYW55IGNvZGUgdGhhdCBicmVha3MgYXMgdGhlIHJlc3VsdCBvZiB0aGF0IGNoYW5nZS4gIFNvIGNvZGUKKyAgd2hpY2ggaGFzIGJlZW4gbWVyZ2VkIGludG8gdGhlIG1haW5saW5lIGhhcyBzaWduaWZpY2FudGx5IGxvd2VyCisgIG1haW50ZW5hbmNlIGNvc3RzLgorCistIEJleW9uZCB0aGF0LCBjb2RlIHdoaWNoIGlzIGluIHRoZSBrZXJuZWwgd2lsbCBvZnRlbiBiZSBpbXByb3ZlZCBieSBvdGhlcgorICBkZXZlbG9wZXJzLiAgU3VycHJpc2luZyByZXN1bHRzIGNhbiBjb21lIGZyb20gZW1wb3dlcmluZyB5b3VyIHVzZXIKKyAgY29tbXVuaXR5IGFuZCBjdXN0b21lcnMgdG8gaW1wcm92ZSB5b3VyIHByb2R1Y3QuCisKKy0gS2VybmVsIGNvZGUgaXMgc3ViamVjdGVkIHRvIHJldmlldywgYm90aCBiZWZvcmUgYW5kIGFmdGVyIG1lcmdpbmcgaW50bworICB0aGUgbWFpbmxpbmUuICBObyBtYXR0ZXIgaG93IHN0cm9uZyB0aGUgb3JpZ2luYWwgZGV2ZWxvcGVyJ3Mgc2tpbGxzIGFyZSwKKyAgdGhpcyByZXZpZXcgcHJvY2VzcyBpbnZhcmlhYmx5IGZpbmRzIHdheXMgaW4gd2hpY2ggdGhlIGNvZGUgY2FuIGJlCisgIGltcHJvdmVkLiAgT2Z0ZW4gcmV2aWV3IGZpbmRzIHNldmVyZSBidWdzIGFuZCBzZWN1cml0eSBwcm9ibGVtcy4gIFRoaXMgaXMKKyAgZXNwZWNpYWxseSB0cnVlIGZvciBjb2RlIHdoaWNoIGhhcyBiZWVuIGRldmVsb3BlZCBpbiBhIGNsb3NlZAorICBlbnZpcm9ubWVudDsgc3VjaCBjb2RlIGJlbmVmaXRzIHN0cm9uZ2x5IGZyb20gcmV2aWV3IGJ5IG91dHNpZGUKKyAgZGV2ZWxvcGVycy4gIE91dC1vZi10cmVlIGNvZGUgaXMgbG93ZXItcXVhbGl0eSBjb2RlLgorCistIFBhcnRpY2lwYXRpb24gaW4gdGhlIGRldmVsb3BtZW50IHByb2Nlc3MgaXMgeW91ciB3YXkgdG8gaW5mbHVlbmNlIHRoZQorICBkaXJlY3Rpb24gb2Yga2VybmVsIGRldmVsb3BtZW50LiAgVXNlcnMgd2hvIGNvbXBsYWluIGZyb20gdGhlIHNpZGVsaW5lcworICBhcmUgaGVhcmQsIGJ1dCBhY3RpdmUgZGV2ZWxvcGVycyBoYXZlIGEgc3Ryb25nZXIgdm9pY2UgLSBhbmQgdGhlIGFiaWxpdHkKKyAgdG8gaW1wbGVtZW50IGNoYW5nZXMgd2hpY2ggbWFrZSB0aGUga2VybmVsIHdvcmsgYmV0dGVyIGZvciB0aGVpciBuZWVkcy4KKworLSBXaGVuIGNvZGUgaXMgbWFpbnRhaW5lZCBzZXBhcmF0ZWx5LCB0aGUgcG9zc2liaWxpdHkgdGhhdCBhIHRoaXJkIHBhcnR5CisgIHdpbGwgY29udHJpYnV0ZSBhIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBvZiBhIHNpbWlsYXIgZmVhdHVyZSBhbHdheXMKKyAgZXhpc3RzLiAgU2hvdWxkIHRoYXQgaGFwcGVuLCBnZXR0aW5nIHlvdXIgY29kZSBtZXJnZWQgd2lsbCBiZWNvbWUgbXVjaAorICBoYXJkZXIgLSB0byB0aGUgcG9pbnQgb2YgaW1wb3NzaWJpbGl0eS4gIFRoZW4geW91IHdpbGwgYmUgZmFjZWQgd2l0aCB0aGUKKyAgdW5wbGVhc2FudCBhbHRlcm5hdGl2ZXMgb2YgZWl0aGVyICgxKSBtYWludGFpbmluZyBhIG5vbnN0YW5kYXJkIGZlYXR1cmUKKyAgb3V0IG9mIHRyZWUgaW5kZWZpbml0ZWx5LCBvciAoMikgYWJhbmRvbmluZyB5b3VyIGNvZGUgYW5kIG1pZ3JhdGluZyB5b3VyCisgIHVzZXJzIG92ZXIgdG8gdGhlIGluLXRyZWUgdmVyc2lvbi4KKworLSBDb250cmlidXRpb24gb2YgY29kZSBpcyB0aGUgZnVuZGFtZW50YWwgYWN0aW9uIHdoaWNoIG1ha2VzIHRoZSB3aG9sZQorICBwcm9jZXNzIHdvcmsuICBCeSBjb250cmlidXRpbmcgeW91ciBjb2RlIHlvdSBjYW4gYWRkIG5ldyBmdW5jdGlvbmFsaXR5IHRvCisgIHRoZSBrZXJuZWwgYW5kIHByb3ZpZGUgY2FwYWJpbGl0aWVzIGFuZCBleGFtcGxlcyB3aGljaCBhcmUgb2YgdXNlIHRvCisgIG90aGVyIGtlcm5lbCBkZXZlbG9wZXJzLiAgSWYgeW91IGhhdmUgZGV2ZWxvcGVkIGNvZGUgZm9yIExpbnV4IChvciBhcmUKKyAgdGhpbmtpbmcgYWJvdXQgZG9pbmcgc28pLCB5b3UgY2xlYXJseSBoYXZlIGFuIGludGVyZXN0IGluIHRoZSBjb250aW51ZWQKKyAgc3VjY2VzcyBvZiB0aGlzIHBsYXRmb3JtOyBjb250cmlidXRpbmcgY29kZSBpcyBvbmUgb2YgdGhlIGJlc3Qgd2F5cyB0bworICBoZWxwIGVuc3VyZSB0aGF0IHN1Y2Nlc3MuCisKK0FsbCBvZiB0aGUgcmVhc29uaW5nIGFib3ZlIGFwcGxpZXMgdG8gYW55IG91dC1vZi10cmVlIGtlcm5lbCBjb2RlLAoraW5jbHVkaW5nIGNvZGUgd2hpY2ggaXMgZGlzdHJpYnV0ZWQgaW4gcHJvcHJpZXRhcnksIGJpbmFyeS1vbmx5IGZvcm0uCitUaGVyZSBhcmUsIGhvd2V2ZXIsIGFkZGl0aW9uYWwgZmFjdG9ycyB3aGljaCBzaG91bGQgYmUgdGFrZW4gaW50byBhY2NvdW50CitiZWZvcmUgY29uc2lkZXJpbmcgYW55IHNvcnQgb2YgYmluYXJ5LW9ubHkga2VybmVsIGNvZGUgZGlzdHJpYnV0aW9uLiAgVGhlc2UKK2luY2x1ZGU6CisKKy0gVGhlIGxlZ2FsIGlzc3VlcyBhcm91bmQgdGhlIGRpc3RyaWJ1dGlvbiBvZiBwcm9wcmlldGFyeSBrZXJuZWwgbW9kdWxlcworICBhcmUgY2xvdWR5IGF0IGJlc3Q7IHF1aXRlIGEgZmV3IGtlcm5lbCBjb3B5cmlnaHQgaG9sZGVycyBiZWxpZXZlIHRoYXQKKyAgbW9zdCBiaW5hcnktb25seSBtb2R1bGVzIGFyZSBkZXJpdmVkIHByb2R1Y3RzIG9mIHRoZSBrZXJuZWwgYW5kIHRoYXQsIGFzCisgIGEgcmVzdWx0LCB0aGVpciBkaXN0cmlidXRpb24gaXMgYSB2aW9sYXRpb24gb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICBsaWNlbnNlIChhYm91dCB3aGljaCBtb3JlIHdpbGwgYmUgc2FpZCBiZWxvdykuICBZb3VyIGF1dGhvciBpcyBub3QgYQorICBsYXd5ZXIsIGFuZCBub3RoaW5nIGluIHRoaXMgZG9jdW1lbnQgY2FuIHBvc3NpYmx5IGJlIGNvbnNpZGVyZWQgdG8gYmUKKyAgbGVnYWwgYWR2aWNlLiAgVGhlIHRydWUgbGVnYWwgc3RhdHVzIG9mIGNsb3NlZC1zb3VyY2UgbW9kdWxlcyBjYW4gb25seSBiZQorICBkZXRlcm1pbmVkIGJ5IHRoZSBjb3VydHMuICBCdXQgdGhlIHVuY2VydGFpbnR5IHdoaWNoIGhhdW50cyB0aG9zZSBtb2R1bGVzCisgIGlzIHRoZXJlIHJlZ2FyZGxlc3MuCisKKy0gQmluYXJ5IG1vZHVsZXMgZ3JlYXRseSBpbmNyZWFzZSB0aGUgZGlmZmljdWx0eSBvZiBkZWJ1Z2dpbmcga2VybmVsCisgIHByb2JsZW1zLCB0byB0aGUgcG9pbnQgdGhhdCBtb3N0IGtlcm5lbCBkZXZlbG9wZXJzIHdpbGwgbm90IGV2ZW4gdHJ5LiAgU28KKyAgdGhlIGRpc3RyaWJ1dGlvbiBvZiBiaW5hcnktb25seSBtb2R1bGVzIHdpbGwgbWFrZSBpdCBoYXJkZXIgZm9yIHlvdXIKKyAgdXNlcnMgdG8gZ2V0IHN1cHBvcnQgZnJvbSB0aGUgY29tbXVuaXR5LgorCistIFN1cHBvcnQgaXMgYWxzbyBoYXJkZXIgZm9yIGRpc3RyaWJ1dG9ycyBvZiBiaW5hcnktb25seSBtb2R1bGVzLCB3aG8gbXVzdAorICBwcm92aWRlIGEgdmVyc2lvbiBvZiB0aGUgbW9kdWxlIGZvciBldmVyeSBkaXN0cmlidXRpb24gYW5kIGV2ZXJ5IGtlcm5lbAorICB2ZXJzaW9uIHRoZXkgd2lzaCB0byBzdXBwb3J0LiAgRG96ZW5zIG9mIGJ1aWxkcyBvZiBhIHNpbmdsZSBtb2R1bGUgY2FuCisgIGJlIHJlcXVpcmVkIHRvIHByb3ZpZGUgcmVhc29uYWJseSBjb21wcmVoZW5zaXZlIGNvdmVyYWdlLCBhbmQgeW91ciB1c2VycworICB3aWxsIGhhdmUgdG8gdXBncmFkZSB5b3VyIG1vZHVsZSBzZXBhcmF0ZWx5IGV2ZXJ5IHRpbWUgdGhleSB1cGdyYWRlIHRoZWlyCisgIGtlcm5lbC4KKworLSBFdmVyeXRoaW5nIHRoYXQgd2FzIHNhaWQgYWJvdmUgYWJvdXQgY29kZSByZXZpZXcgYXBwbGllcyBkb3VibHkgdG8KKyAgY2xvc2VkLXNvdXJjZSBjb2RlLiAgU2luY2UgdGhpcyBjb2RlIGlzIG5vdCBhdmFpbGFibGUgYXQgYWxsLCBpdCBjYW5ub3QKKyAgaGF2ZSBiZWVuIHJldmlld2VkIGJ5IHRoZSBjb21tdW5pdHkgYW5kIHdpbGwsIGJleW9uZCBkb3VidCwgaGF2ZSBzZXJpb3VzCisgIHByb2JsZW1zLgorCitNYWtlcnMgb2YgZW1iZWRkZWQgc3lzdGVtcywgaW4gcGFydGljdWxhciwgbWF5IGJlIHRlbXB0ZWQgdG8gZGlzcmVnYXJkIG11Y2gKK29mIHdoYXQgaGFzIGJlZW4gc2FpZCBpbiB0aGlzIHNlY3Rpb24gaW4gdGhlIGJlbGllZiB0aGF0IHRoZXkgYXJlIHNoaXBwaW5nCithIHNlbGYtY29udGFpbmVkIHByb2R1Y3Qgd2hpY2ggdXNlcyBhIGZyb3plbiBrZXJuZWwgdmVyc2lvbiBhbmQgcmVxdWlyZXMgbm8KK21vcmUgZGV2ZWxvcG1lbnQgYWZ0ZXIgaXRzIHJlbGVhc2UuICBUaGlzIGFyZ3VtZW50IG1pc3NlcyB0aGUgdmFsdWUgb2YKK3dpZGVzcHJlYWQgY29kZSByZXZpZXcgYW5kIHRoZSB2YWx1ZSBvZiBhbGxvd2luZyB5b3VyIHVzZXJzIHRvIGFkZAorY2FwYWJpbGl0aWVzIHRvIHlvdXIgcHJvZHVjdC4gIEJ1dCB0aGVzZSBwcm9kdWN0cywgdG9vLCBoYXZlIGEgbGltaXRlZAorY29tbWVyY2lhbCBsaWZlLCBhZnRlciB3aGljaCBhIG5ldyB2ZXJzaW9uIG11c3QgYmUgcmVsZWFzZWQuICBBdCB0aGF0Citwb2ludCwgdmVuZG9ycyB3aG9zZSBjb2RlIGlzIGluIHRoZSBtYWlubGluZSBhbmQgd2VsbCBtYWludGFpbmVkIHdpbGwgYmUKK211Y2ggYmV0dGVyIHBvc2l0aW9uZWQgdG8gZ2V0IHRoZSBuZXcgcHJvZHVjdCByZWFkeSBmb3IgbWFya2V0IHF1aWNrbHkuCisKKworMS41OiBMSUNFTlNJTkcKKworQ29kZSBpcyBjb250cmlidXRlZCB0byB0aGUgTGludXgga2VybmVsIHVuZGVyIGEgbnVtYmVyIG9mIGxpY2Vuc2VzLCBidXQgYWxsCitjb2RlIG11c3QgYmUgY29tcGF0aWJsZSB3aXRoIHZlcnNpb24gMiBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyhHUEx2MiksIHdoaWNoIGlzIHRoZSBsaWNlbnNlIGNvdmVyaW5nIHRoZSBrZXJuZWwgZGlzdHJpYnV0aW9uIGFzIGEgd2hvbGUuCitJbiBwcmFjdGljZSwgdGhhdCBtZWFucyB0aGF0IGFsbCBjb2RlIGNvbnRyaWJ1dGlvbnMgYXJlIGNvdmVyZWQgZWl0aGVyIGJ5CitHUEx2MiAod2l0aCwgb3B0aW9uYWxseSwgbGFuZ3VhZ2UgYWxsb3dpbmcgZGlzdHJpYnV0aW9uIHVuZGVyIGxhdGVyCit2ZXJzaW9ucyBvZiB0aGUgR1BMKSBvciB0aGUgdGhyZWUtY2xhdXNlIEJTRCBsaWNlbnNlLiAgQW55IGNvbnRyaWJ1dGlvbnMKK3doaWNoIGFyZSBub3QgY292ZXJlZCBieSBhIGNvbXBhdGlibGUgbGljZW5zZSB3aWxsIG5vdCBiZSBhY2NlcHRlZCBpbnRvIHRoZQora2VybmVsLgorCitDb3B5cmlnaHQgYXNzaWdubWVudHMgYXJlIG5vdCByZXF1aXJlZCAob3IgcmVxdWVzdGVkKSBmb3IgY29kZSBjb250cmlidXRlZAordG8gdGhlIGtlcm5lbC4gIEFsbCBjb2RlIG1lcmdlZCBpbnRvIHRoZSBtYWlubGluZSBrZXJuZWwgcmV0YWlucyBpdHMKK29yaWdpbmFsIG93bmVyc2hpcDsgYXMgYSByZXN1bHQsIHRoZSBrZXJuZWwgbm93IGhhcyB0aG91c2FuZHMgb2Ygb3duZXJzLgorCitPbmUgaW1wbGljYXRpb24gb2YgdGhpcyBvd25lcnNoaXAgc3RydWN0dXJlIGlzIHRoYXQgYW55IGF0dGVtcHQgdG8gY2hhbmdlCit0aGUgbGljZW5zaW5nIG9mIHRoZSBrZXJuZWwgaXMgZG9vbWVkIHRvIGFsbW9zdCBjZXJ0YWluIGZhaWx1cmUuICBUaGVyZSBhcmUKK2ZldyBwcmFjdGljYWwgc2NlbmFyaW9zIHdoZXJlIHRoZSBhZ3JlZW1lbnQgb2YgYWxsIGNvcHlyaWdodCBob2xkZXJzIGNvdWxkCitiZSBvYnRhaW5lZCAob3IgdGhlaXIgY29kZSByZW1vdmVkIGZyb20gdGhlIGtlcm5lbCkuICBTbywgaW4gcGFydGljdWxhciwKK3RoZXJlIGlzIG5vIHByb3NwZWN0IG9mIGEgbWlncmF0aW9uIHRvIHZlcnNpb24gMyBvZiB0aGUgR1BMIGluIHRoZQorZm9yZXNlZWFibGUgZnV0dXJlLgorCitJdCBpcyBpbXBlcmF0aXZlIHRoYXQgYWxsIGNvZGUgY29udHJpYnV0ZWQgdG8gdGhlIGtlcm5lbCBiZSBsZWdpdGltYXRlbHkKK2ZyZWUgc29mdHdhcmUuICBGb3IgdGhhdCByZWFzb24sIGNvZGUgZnJvbSBhbm9ueW1vdXMgKG9yIHBzZXVkb255bW91cykKK2NvbnRyaWJ1dG9ycyB3aWxsIG5vdCBiZSBhY2NlcHRlZC4gIEFsbCBjb250cmlidXRvcnMgYXJlIHJlcXVpcmVkIHRvICJzaWduCitvZmYiIG9uIHRoZWlyIGNvZGUsIHN0YXRpbmcgdGhhdCB0aGUgY29kZSBjYW4gYmUgZGlzdHJpYnV0ZWQgd2l0aCB0aGUKK2tlcm5lbCB1bmRlciB0aGUgR1BMLiAgQ29kZSB3aGljaCBoYXMgbm90IGJlZW4gbGljZW5zZWQgYXMgZnJlZSBzb2Z0d2FyZSBieQoraXRzIG93bmVyLCBvciB3aGljaCByaXNrcyBjcmVhdGluZyBjb3B5cmlnaHQtcmVsYXRlZCBwcm9ibGVtcyBmb3IgdGhlCitrZXJuZWwgKHN1Y2ggYXMgY29kZSB3aGljaCBkZXJpdmVzIGZyb20gcmV2ZXJzZS1lbmdpbmVlcmluZyBlZmZvcnRzIGxhY2tpbmcKK3Byb3BlciBzYWZlZ3VhcmRzKSBjYW5ub3QgYmUgY29udHJpYnV0ZWQuCisKK1F1ZXN0aW9ucyBhYm91dCBjb3B5cmlnaHQtcmVsYXRlZCBpc3N1ZXMgYXJlIGNvbW1vbiBvbiBMaW51eCBkZXZlbG9wbWVudAorbWFpbGluZyBsaXN0cy4gIFN1Y2ggcXVlc3Rpb25zIHdpbGwgbm9ybWFsbHkgcmVjZWl2ZSBubyBzaG9ydGFnZSBvZgorYW5zd2VycywgYnV0IG9uZSBzaG91bGQgYmVhciBpbiBtaW5kIHRoYXQgdGhlIHBlb3BsZSBhbnN3ZXJpbmcgdGhvc2UKK3F1ZXN0aW9ucyBhcmUgbm90IGxhd3llcnMgYW5kIGNhbm5vdCBwcm92aWRlIGxlZ2FsIGFkdmljZS4gIElmIHlvdSBoYXZlCitsZWdhbCBxdWVzdGlvbnMgcmVsYXRpbmcgdG8gTGludXggc291cmNlIGNvZGUsIHRoZXJlIGlzIG5vIHN1YnN0aXR1dGUgZm9yCit0YWxraW5nIHdpdGggYSBsYXd5ZXIgd2hvIHVuZGVyc3RhbmRzIHRoaXMgZmllbGQuICBSZWx5aW5nIG9uIGFuc3dlcnMKK29idGFpbmVkIG9uIHRlY2huaWNhbCBtYWlsaW5nIGxpc3RzIGlzIGEgcmlza3kgYWZmYWlyLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZlbG9wbWVudC1wcm9jZXNzLzIuUHJvY2VzcyBiL0RvY3VtZW50YXRpb24vZGV2ZWxvcG1lbnQtcHJvY2Vzcy8yLlByb2Nlc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI0ZTE1NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2ZWxvcG1lbnQtcHJvY2Vzcy8yLlByb2Nlc3MKQEAgLTAsMCArMSw0NzggQEAKKzI6IEhPVyBUSEUgREVWRUxPUE1FTlQgUFJPQ0VTUyBXT1JLUworCitMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQgaW4gdGhlIGVhcmx5IDE5OTAncyB3YXMgYSBwcmV0dHkgbG9vc2UgYWZmYWlyLAord2l0aCByZWxhdGl2ZWx5IHNtYWxsIG51bWJlcnMgb2YgdXNlcnMgYW5kIGRldmVsb3BlcnMgaW52b2x2ZWQuICBXaXRoIGEKK3VzZXIgYmFzZSBpbiB0aGUgbWlsbGlvbnMgYW5kIHdpdGggc29tZSAyLDAwMCBkZXZlbG9wZXJzIGludm9sdmVkIG92ZXIgdGhlCitjb3Vyc2Ugb2Ygb25lIHllYXIsIHRoZSBrZXJuZWwgaGFzIHNpbmNlIGhhZCB0byBldm9sdmUgYSBudW1iZXIgb2YKK3Byb2Nlc3NlcyB0byBrZWVwIGRldmVsb3BtZW50IGhhcHBlbmluZyBzbW9vdGhseS4gIEEgc29saWQgdW5kZXJzdGFuZGluZyBvZgoraG93IHRoZSBwcm9jZXNzIHdvcmtzIGlzIHJlcXVpcmVkIGluIG9yZGVyIHRvIGJlIGFuIGVmZmVjdGl2ZSBwYXJ0IG9mIGl0LgorCisKKzIuMTogVEhFIEJJRyBQSUNUVVJFCisKK1RoZSBrZXJuZWwgZGV2ZWxvcGVycyB1c2UgYSBsb29zZWx5IHRpbWUtYmFzZWQgcmVsZWFzZSBwcm9jZXNzLCB3aXRoIGEgbmV3CittYWpvciBrZXJuZWwgcmVsZWFzZSBoYXBwZW5pbmcgZXZlcnkgdHdvIG9yIHRocmVlIG1vbnRocy4gIFRoZSByZWNlbnQKK3JlbGVhc2UgaGlzdG9yeSBsb29rcyBsaWtlIHRoaXM6CisKKwkyLjYuMzgJTWFyY2ggMTQsIDIwMTEKKwkyLjYuMzcJSmFudWFyeSA0LCAyMDExCisJMi42LjM2CU9jdG9iZXIgMjAsIDIwMTAKKwkyLjYuMzUJQXVndXN0IDEsIDIwMTAKKwkyLjYuMzQJTWF5IDE1LCAyMDEwCisJMi42LjMzCUZlYnJ1YXJ5IDI0LCAyMDEwCisKK0V2ZXJ5IDIuNi54IHJlbGVhc2UgaXMgYSBtYWpvciBrZXJuZWwgcmVsZWFzZSB3aXRoIG5ldyBmZWF0dXJlcywgaW50ZXJuYWwKK0FQSSBjaGFuZ2VzLCBhbmQgbW9yZS4gIEEgdHlwaWNhbCAyLjYgcmVsZWFzZSBjYW4gY29udGFpbiBuZWFybHkgMTAsMDAwCitjaGFuZ2VzZXRzIHdpdGggY2hhbmdlcyB0byBzZXZlcmFsIGh1bmRyZWQgdGhvdXNhbmQgbGluZXMgb2YgY29kZS4gIDIuNiBpcwordGh1cyB0aGUgbGVhZGluZyBlZGdlIG9mIExpbnV4IGtlcm5lbCBkZXZlbG9wbWVudDsgdGhlIGtlcm5lbCB1c2VzIGEKK3JvbGxpbmcgZGV2ZWxvcG1lbnQgbW9kZWwgd2hpY2ggaXMgY29udGludWFsbHkgaW50ZWdyYXRpbmcgbWFqb3IgY2hhbmdlcy4KKworQSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBkaXNjaXBsaW5lIGlzIGZvbGxvd2VkIHdpdGggcmVnYXJkIHRvIHRoZQorbWVyZ2luZyBvZiBwYXRjaGVzIGZvciBlYWNoIHJlbGVhc2UuICBBdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggZGV2ZWxvcG1lbnQKK2N5Y2xlLCB0aGUgIm1lcmdlIHdpbmRvdyIgaXMgc2FpZCB0byBiZSBvcGVuLiAgQXQgdGhhdCB0aW1lLCBjb2RlIHdoaWNoIGlzCitkZWVtZWQgdG8gYmUgc3VmZmljaWVudGx5IHN0YWJsZSAoYW5kIHdoaWNoIGlzIGFjY2VwdGVkIGJ5IHRoZSBkZXZlbG9wbWVudAorY29tbXVuaXR5KSBpcyBtZXJnZWQgaW50byB0aGUgbWFpbmxpbmUga2VybmVsLiAgVGhlIGJ1bGsgb2YgY2hhbmdlcyBmb3IgYQorbmV3IGRldmVsb3BtZW50IGN5Y2xlIChhbmQgYWxsIG9mIHRoZSBtYWpvciBjaGFuZ2VzKSB3aWxsIGJlIG1lcmdlZCBkdXJpbmcKK3RoaXMgdGltZSwgYXQgYSByYXRlIGFwcHJvYWNoaW5nIDEsMDAwIGNoYW5nZXMgKCJwYXRjaGVzLCIgb3IgImNoYW5nZXNldHMiKQorcGVyIGRheS4KKworKEFzIGFuIGFzaWRlLCBpdCBpcyB3b3J0aCBub3RpbmcgdGhhdCB0aGUgY2hhbmdlcyBpbnRlZ3JhdGVkIGR1cmluZyB0aGUKK21lcmdlIHdpbmRvdyBkbyBub3QgY29tZSBvdXQgb2YgdGhpbiBhaXI7IHRoZXkgaGF2ZSBiZWVuIGNvbGxlY3RlZCwgdGVzdGVkLAorYW5kIHN0YWdlZCBhaGVhZCBvZiB0aW1lLiAgSG93IHRoYXQgcHJvY2VzcyB3b3JrcyB3aWxsIGJlIGRlc2NyaWJlZCBpbgorZGV0YWlsIGxhdGVyIG9uKS4KKworVGhlIG1lcmdlIHdpbmRvdyBsYXN0cyBmb3IgYXBwcm94aW1hdGVseSB0d28gd2Vla3MuICBBdCB0aGUgZW5kIG9mIHRoaXMKK3RpbWUsIExpbnVzIFRvcnZhbGRzIHdpbGwgZGVjbGFyZSB0aGF0IHRoZSB3aW5kb3cgaXMgY2xvc2VkIGFuZCByZWxlYXNlIHRoZQorZmlyc3Qgb2YgdGhlICJyYyIga2VybmVscy4gIEZvciB0aGUga2VybmVsIHdoaWNoIGlzIGRlc3RpbmVkIHRvIGJlIDIuNi40MCwKK2ZvciBleGFtcGxlLCB0aGUgcmVsZWFzZSB3aGljaCBoYXBwZW5zIGF0IHRoZSBlbmQgb2YgdGhlIG1lcmdlIHdpbmRvdyB3aWxsCitiZSBjYWxsZWQgMi42LjQwLXJjMS4gIFRoZSAtcmMxIHJlbGVhc2UgaXMgdGhlIHNpZ25hbCB0aGF0IHRoZSB0aW1lIHRvCittZXJnZSBuZXcgZmVhdHVyZXMgaGFzIHBhc3NlZCwgYW5kIHRoYXQgdGhlIHRpbWUgdG8gc3RhYmlsaXplIHRoZSBuZXh0CitrZXJuZWwgaGFzIGJlZ3VuLgorCitPdmVyIHRoZSBuZXh0IHNpeCB0byB0ZW4gd2Vla3MsIG9ubHkgcGF0Y2hlcyB3aGljaCBmaXggcHJvYmxlbXMgc2hvdWxkIGJlCitzdWJtaXR0ZWQgdG8gdGhlIG1haW5saW5lLiAgT24gb2NjYXNpb24gYSBtb3JlIHNpZ25pZmljYW50IGNoYW5nZSB3aWxsIGJlCithbGxvd2VkLCBidXQgc3VjaCBvY2Nhc2lvbnMgYXJlIHJhcmU7IGRldmVsb3BlcnMgd2hvIHRyeSB0byBtZXJnZSBuZXcKK2ZlYXR1cmVzIG91dHNpZGUgb2YgdGhlIG1lcmdlIHdpbmRvdyB0ZW5kIHRvIGdldCBhbiB1bmZyaWVuZGx5IHJlY2VwdGlvbi4KK0FzIGEgZ2VuZXJhbCBydWxlLCBpZiB5b3UgbWlzcyB0aGUgbWVyZ2Ugd2luZG93IGZvciBhIGdpdmVuIGZlYXR1cmUsIHRoZQorYmVzdCB0aGluZyB0byBkbyBpcyB0byB3YWl0IGZvciB0aGUgbmV4dCBkZXZlbG9wbWVudCBjeWNsZS4gIChBbiBvY2Nhc2lvbmFsCitleGNlcHRpb24gaXMgbWFkZSBmb3IgZHJpdmVycyBmb3IgcHJldmlvdXNseS11bnN1cHBvcnRlZCBoYXJkd2FyZTsgaWYgdGhleQordG91Y2ggbm8gaW4tdHJlZSBjb2RlLCB0aGV5IGNhbm5vdCBjYXVzZSByZWdyZXNzaW9ucyBhbmQgc2hvdWxkIGJlIHNhZmUgdG8KK2FkZCBhdCBhbnkgdGltZSkuCisKK0FzIGZpeGVzIG1ha2UgdGhlaXIgd2F5IGludG8gdGhlIG1haW5saW5lLCB0aGUgcGF0Y2ggcmF0ZSB3aWxsIHNsb3cgb3ZlcgordGltZS4gIExpbnVzIHJlbGVhc2VzIG5ldyAtcmMga2VybmVscyBhYm91dCBvbmNlIGEgd2VlazsgYSBub3JtYWwgc2VyaWVzCit3aWxsIGdldCB1cCB0byBzb21ld2hlcmUgYmV0d2VlbiAtcmM2IGFuZCAtcmM5IGJlZm9yZSB0aGUga2VybmVsIGlzCitjb25zaWRlcmVkIHRvIGJlIHN1ZmZpY2llbnRseSBzdGFibGUgYW5kIHRoZSBmaW5hbCAyLjYueCByZWxlYXNlIGlzIG1hZGUuCitBdCB0aGF0IHBvaW50IHRoZSB3aG9sZSBwcm9jZXNzIHN0YXJ0cyBvdmVyIGFnYWluLgorCitBcyBhbiBleGFtcGxlLCBoZXJlIGlzIGhvdyB0aGUgMi42LjM4IGRldmVsb3BtZW50IGN5Y2xlIHdlbnQgKGFsbCBkYXRlcyBpbgorMjAxMSk6CisKKwlKYW51YXJ5IDQJMi42LjM3IHN0YWJsZSByZWxlYXNlCisJSmFudWFyeSAxOAkyLjYuMzgtcmMxLCBtZXJnZSB3aW5kb3cgY2xvc2VzCisJSmFudWFyeSAyMQkyLjYuMzgtcmMyCisJRmVicnVhcnkgMQkyLjYuMzgtcmMzCisJRmVicnVhcnkgNwkyLjYuMzgtcmM0CisJRmVicnVhcnkgMTUJMi42LjM4LXJjNQorCUZlYnJ1YXJ5IDIxCTIuNi4zOC1yYzYKKwlNYXJjaCAxCQkyLjYuMzgtcmM3CisJTWFyY2ggNwkJMi42LjM4LXJjOAorCU1hcmNoIDE0CTIuNi4zOCBzdGFibGUgcmVsZWFzZQorCitIb3cgZG8gdGhlIGRldmVsb3BlcnMgZGVjaWRlIHdoZW4gdG8gY2xvc2UgdGhlIGRldmVsb3BtZW50IGN5Y2xlIGFuZCBjcmVhdGUKK3RoZSBzdGFibGUgcmVsZWFzZT8gIFRoZSBtb3N0IHNpZ25pZmljYW50IG1ldHJpYyB1c2VkIGlzIHRoZSBsaXN0IG9mCityZWdyZXNzaW9ucyBmcm9tIHByZXZpb3VzIHJlbGVhc2VzLiAgTm8gYnVncyBhcmUgd2VsY29tZSwgYnV0IHRob3NlIHdoaWNoCiticmVhayBzeXN0ZW1zIHdoaWNoIHdvcmtlZCBpbiB0aGUgcGFzdCBhcmUgY29uc2lkZXJlZCB0byBiZSBlc3BlY2lhbGx5CitzZXJpb3VzLiAgRm9yIHRoaXMgcmVhc29uLCBwYXRjaGVzIHdoaWNoIGNhdXNlIHJlZ3Jlc3Npb25zIGFyZSBsb29rZWQgdXBvbgordW5mYXZvcmFibHkgYW5kIGFyZSBxdWl0ZSBsaWtlbHkgdG8gYmUgcmV2ZXJ0ZWQgZHVyaW5nIHRoZSBzdGFiaWxpemF0aW9uCitwZXJpb2QuCisKK1RoZSBkZXZlbG9wZXJzJyBnb2FsIGlzIHRvIGZpeCBhbGwga25vd24gcmVncmVzc2lvbnMgYmVmb3JlIHRoZSBzdGFibGUKK3JlbGVhc2UgaXMgbWFkZS4gIEluIHRoZSByZWFsIHdvcmxkLCB0aGlzIGtpbmQgb2YgcGVyZmVjdGlvbiBpcyBoYXJkIHRvCithY2hpZXZlOyB0aGVyZSBhcmUganVzdCB0b28gbWFueSB2YXJpYWJsZXMgaW4gYSBwcm9qZWN0IG9mIHRoaXMgc2l6ZS4KK1RoZXJlIGNvbWVzIGEgcG9pbnQgd2hlcmUgZGVsYXlpbmcgdGhlIGZpbmFsIHJlbGVhc2UganVzdCBtYWtlcyB0aGUgcHJvYmxlbQord29yc2U7IHRoZSBwaWxlIG9mIGNoYW5nZXMgd2FpdGluZyBmb3IgdGhlIG5leHQgbWVyZ2Ugd2luZG93IHdpbGwgZ3JvdworbGFyZ2VyLCBjcmVhdGluZyBldmVuIG1vcmUgcmVncmVzc2lvbnMgdGhlIG5leHQgdGltZSBhcm91bmQuICBTbyBtb3N0IDIuNi54CitrZXJuZWxzIGdvIG91dCB3aXRoIGEgaGFuZGZ1bCBvZiBrbm93biByZWdyZXNzaW9ucyB0aG91Z2gsIGhvcGVmdWxseSwgbm9uZQorb2YgdGhlbSBhcmUgc2VyaW91cy4KKworT25jZSBhIHN0YWJsZSByZWxlYXNlIGlzIG1hZGUsIGl0cyBvbmdvaW5nIG1haW50ZW5hbmNlIGlzIHBhc3NlZCBvZmYgdG8gdGhlCisic3RhYmxlIHRlYW0sIiBjdXJyZW50bHkgY29uc2lzdGluZyBvZiBHcmVnIEtyb2FoLUhhcnRtYW4uICBUaGUgc3RhYmxlIHRlYW0KK3dpbGwgcmVsZWFzZSBvY2Nhc2lvbmFsIHVwZGF0ZXMgdG8gdGhlIHN0YWJsZSByZWxlYXNlIHVzaW5nIHRoZSAyLjYueC55CitudW1iZXJpbmcgc2NoZW1lLiAgVG8gYmUgY29uc2lkZXJlZCBmb3IgYW4gdXBkYXRlIHJlbGVhc2UsIGEgcGF0Y2ggbXVzdCAoMSkKK2ZpeCBhIHNpZ25pZmljYW50IGJ1ZywgYW5kICgyKSBhbHJlYWR5IGJlIG1lcmdlZCBpbnRvIHRoZSBtYWlubGluZSBmb3IgdGhlCituZXh0IGRldmVsb3BtZW50IGtlcm5lbC4gIEtlcm5lbHMgd2lsbCB0eXBpY2FsbHkgcmVjZWl2ZSBzdGFibGUgdXBkYXRlcyBmb3IKK2EgbGl0dGxlIG1vcmUgdGhhbiBvbmUgZGV2ZWxvcG1lbnQgY3ljbGUgcGFzdCB0aGVpciBpbml0aWFsIHJlbGVhc2UuICBTbywKK2ZvciBleGFtcGxlLCB0aGUgMi42LjM2IGtlcm5lbCdzIGhpc3RvcnkgbG9va2VkIGxpa2U6CisKKwlPY3RvYmVyIDEwCTIuNi4zNiBzdGFibGUgcmVsZWFzZQorCU5vdmVtYmVyIDIyCTIuNi4zNi4xCisJRGVjZW1iZXIgOQkyLjYuMzYuMgorCUphbnVhcnkgNwkyLjYuMzYuMworCUZlYnJ1YXJ5IDE3CTIuNi4zNi40CisKKzIuNi4zNi40IHdhcyB0aGUgZmluYWwgc3RhYmxlIHVwZGF0ZSBmb3IgdGhlIDIuNi4zNiByZWxlYXNlLgorCitTb21lIGtlcm5lbHMgYXJlIGRlc2lnbmF0ZWQgImxvbmcgdGVybSIga2VybmVsczsgdGhleSB3aWxsIHJlY2VpdmUgc3VwcG9ydAorZm9yIGEgbG9uZ2VyIHBlcmlvZC4gIEFzIG9mIHRoaXMgd3JpdGluZywgdGhlIGN1cnJlbnQgbG9uZyB0ZXJtIGtlcm5lbHMKK2FuZCB0aGVpciBtYWludGFpbmVycyBhcmU6CisKKwkyLjYuMjcJV2lsbHkgVGFycmVhdQkJKERlZXAtZnJvemVuIHN0YWJsZSBrZXJuZWwpCisJMi42LjMyCUdyZWcgS3JvYWgtSGFydG1hbgorCTIuNi4zNQlBbmRpIEtsZWVuCQkoRW1iZWRkZWQgZmxhZyBrZXJuZWwpCisKK1RoZSBzZWxlY3Rpb24gb2YgYSBrZXJuZWwgZm9yIGxvbmctdGVybSBzdXBwb3J0IGlzIHB1cmVseSBhIG1hdHRlciBvZiBhCittYWludGFpbmVyIGhhdmluZyB0aGUgbmVlZCBhbmQgdGhlIHRpbWUgdG8gbWFpbnRhaW4gdGhhdCByZWxlYXNlLiAgVGhlcmUKK2FyZSBubyBrbm93biBwbGFucyBmb3IgbG9uZy10ZXJtIHN1cHBvcnQgZm9yIGFueSBzcGVjaWZpYyB1cGNvbWluZworcmVsZWFzZS4KKworCisyLjI6IFRIRSBMSUZFQ1lDTEUgT0YgQSBQQVRDSAorCitQYXRjaGVzIGRvIG5vdCBnbyBkaXJlY3RseSBmcm9tIHRoZSBkZXZlbG9wZXIncyBrZXlib2FyZCBpbnRvIHRoZSBtYWlubGluZQora2VybmVsLiAgVGhlcmUgaXMsIGluc3RlYWQsIGEgc29tZXdoYXQgaW52b2x2ZWQgKGlmIHNvbWV3aGF0IGluZm9ybWFsKQorcHJvY2VzcyBkZXNpZ25lZCB0byBlbnN1cmUgdGhhdCBlYWNoIHBhdGNoIGlzIHJldmlld2VkIGZvciBxdWFsaXR5IGFuZCB0aGF0CitlYWNoIHBhdGNoIGltcGxlbWVudHMgYSBjaGFuZ2Ugd2hpY2ggaXMgZGVzaXJhYmxlIHRvIGhhdmUgaW4gdGhlIG1haW5saW5lLgorVGhpcyBwcm9jZXNzIGNhbiBoYXBwZW4gcXVpY2tseSBmb3IgbWlub3IgZml4ZXMsIG9yLCBpbiB0aGUgY2FzZSBvZiBsYXJnZQorYW5kIGNvbnRyb3ZlcnNpYWwgY2hhbmdlcywgZ28gb24gZm9yIHllYXJzLiAgTXVjaCBkZXZlbG9wZXIgZnJ1c3RyYXRpb24KK2NvbWVzIGZyb20gYSBsYWNrIG9mIHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBwcm9jZXNzIG9yIGZyb20gYXR0ZW1wdHMgdG8KK2NpcmN1bXZlbnQgaXQuCisKK0luIHRoZSBob3BlcyBvZiByZWR1Y2luZyB0aGF0IGZydXN0cmF0aW9uLCB0aGlzIGRvY3VtZW50IHdpbGwgZGVzY3JpYmUgaG93CithIHBhdGNoIGdldHMgaW50byB0aGUga2VybmVsLiAgV2hhdCBmb2xsb3dzIGJlbG93IGlzIGFuIGludHJvZHVjdGlvbiB3aGljaAorZGVzY3JpYmVzIHRoZSBwcm9jZXNzIGluIGEgc29tZXdoYXQgaWRlYWxpemVkIHdheS4gIEEgbXVjaCBtb3JlIGRldGFpbGVkCit0cmVhdG1lbnQgd2lsbCBjb21lIGluIGxhdGVyIHNlY3Rpb25zLgorCitUaGUgc3RhZ2VzIHRoYXQgYSBwYXRjaCBnb2VzIHRocm91Z2ggYXJlLCBnZW5lcmFsbHk6CisKKyAtIERlc2lnbi4gIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgcmVxdWlyZW1lbnRzIGZvciB0aGUgcGF0Y2ggLSBhbmQgdGhlIHdheQorICAgdGhvc2UgcmVxdWlyZW1lbnRzIHdpbGwgYmUgbWV0IC0gYXJlIGxhaWQgb3V0LiAgRGVzaWduIHdvcmsgaXMgb2Z0ZW4KKyAgIGRvbmUgd2l0aG91dCBpbnZvbHZpbmcgdGhlIGNvbW11bml0eSwgYnV0IGl0IGlzIGJldHRlciB0byBkbyB0aGlzIHdvcmsKKyAgIGluIHRoZSBvcGVuIGlmIGF0IGFsbCBwb3NzaWJsZTsgaXQgY2FuIHNhdmUgYSBsb3Qgb2YgdGltZSByZWRlc2lnbmluZworICAgdGhpbmdzIGxhdGVyLgorCisgLSBFYXJseSByZXZpZXcuICBQYXRjaGVzIGFyZSBwb3N0ZWQgdG8gdGhlIHJlbGV2YW50IG1haWxpbmcgbGlzdCwgYW5kCisgICBkZXZlbG9wZXJzIG9uIHRoYXQgbGlzdCByZXBseSB3aXRoIGFueSBjb21tZW50cyB0aGV5IG1heSBoYXZlLiAgVGhpcworICAgcHJvY2VzcyBzaG91bGQgdHVybiB1cCBhbnkgbWFqb3IgcHJvYmxlbXMgd2l0aCBhIHBhdGNoIGlmIGFsbCBnb2VzCisgICB3ZWxsLgorCisgLSBXaWRlciByZXZpZXcuICBXaGVuIHRoZSBwYXRjaCBpcyBnZXR0aW5nIGNsb3NlIHRvIHJlYWR5IGZvciBtYWlubGluZQorICAgaW5jbHVzaW9uLCBpdCBzaG91bGQgYmUgYWNjZXB0ZWQgYnkgYSByZWxldmFudCBzdWJzeXN0ZW0gbWFpbnRhaW5lciAtCisgICB0aG91Z2ggdGhpcyBhY2NlcHRhbmNlIGlzIG5vdCBhIGd1YXJhbnRlZSB0aGF0IHRoZSBwYXRjaCB3aWxsIG1ha2UgaXQKKyAgIGFsbCB0aGUgd2F5IHRvIHRoZSBtYWlubGluZS4gIFRoZSBwYXRjaCB3aWxsIHNob3cgdXAgaW4gdGhlIG1haW50YWluZXIncworICAgc3Vic3lzdGVtIHRyZWUgYW5kIGludG8gdGhlIC1uZXh0IHRyZWVzIChkZXNjcmliZWQgYmVsb3cpLiAgV2hlbiB0aGUKKyAgIHByb2Nlc3Mgd29ya3MsIHRoaXMgc3RlcCBsZWFkcyB0byBtb3JlIGV4dGVuc2l2ZSByZXZpZXcgb2YgdGhlIHBhdGNoIGFuZAorICAgdGhlIGRpc2NvdmVyeSBvZiBhbnkgcHJvYmxlbXMgcmVzdWx0aW5nIGZyb20gdGhlIGludGVncmF0aW9uIG9mIHRoaXMKKyAgIHBhdGNoIHdpdGggd29yayBiZWluZyBkb25lIGJ5IG90aGVycy4KKworLSAgUGxlYXNlIG5vdGUgdGhhdCBtb3N0IG1haW50YWluZXJzIGFsc28gaGF2ZSBkYXkgam9icywgc28gbWVyZ2luZworICAgeW91ciBwYXRjaCBtYXkgbm90IGJlIHRoZWlyIGhpZ2hlc3QgcHJpb3JpdHkuICBJZiB5b3VyIHBhdGNoIGlzCisgICBnZXR0aW5nIGZlZWRiYWNrIGFib3V0IGNoYW5nZXMgdGhhdCBhcmUgbmVlZGVkLCB5b3Ugc2hvdWxkIGVpdGhlcgorICAgbWFrZSB0aG9zZSBjaGFuZ2VzIG9yIGp1c3RpZnkgd2h5IHRoZXkgc2hvdWxkIG5vdCBiZSBtYWRlLiAgSWYgeW91cgorICAgcGF0Y2ggaGFzIG5vIHJldmlldyBjb21wbGFpbnRzIGJ1dCBpcyBub3QgYmVpbmcgbWVyZ2VkIGJ5IGl0cworICAgYXBwcm9wcmlhdGUgc3Vic3lzdGVtIG9yIGRyaXZlciBtYWludGFpbmVyLCB5b3Ugc2hvdWxkIGJlIHBlcnNpc3RlbnQKKyAgIGluIHVwZGF0aW5nIHRoZSBwYXRjaCB0byB0aGUgY3VycmVudCBrZXJuZWwgc28gdGhhdCBpdCBhcHBsaWVzIGNsZWFubHkKKyAgIGFuZCBrZWVwIHNlbmRpbmcgaXQgZm9yIHJldmlldyBhbmQgbWVyZ2luZy4KKworIC0gTWVyZ2luZyBpbnRvIHRoZSBtYWlubGluZS4gIEV2ZW50dWFsbHksIGEgc3VjY2Vzc2Z1bCBwYXRjaCB3aWxsIGJlCisgICBtZXJnZWQgaW50byB0aGUgbWFpbmxpbmUgcmVwb3NpdG9yeSBtYW5hZ2VkIGJ5IExpbnVzIFRvcnZhbGRzLiAgTW9yZQorICAgY29tbWVudHMgYW5kL29yIHByb2JsZW1zIG1heSBzdXJmYWNlIGF0IHRoaXMgdGltZTsgaXQgaXMgaW1wb3J0YW50IHRoYXQKKyAgIHRoZSBkZXZlbG9wZXIgYmUgcmVzcG9uc2l2ZSB0byB0aGVzZSBhbmQgZml4IGFueSBpc3N1ZXMgd2hpY2ggYXJpc2UuCisKKyAtIFN0YWJsZSByZWxlYXNlLiAgVGhlIG51bWJlciBvZiB1c2VycyBwb3RlbnRpYWxseSBhZmZlY3RlZCBieSB0aGUgcGF0Y2gKKyAgIGlzIG5vdyBsYXJnZSwgc28sIG9uY2UgYWdhaW4sIG5ldyBwcm9ibGVtcyBtYXkgYXJpc2UuCisKKyAtIExvbmctdGVybSBtYWludGVuYW5jZS4gIFdoaWxlIGl0IGlzIGNlcnRhaW5seSBwb3NzaWJsZSBmb3IgYSBkZXZlbG9wZXIKKyAgIHRvIGZvcmdldCBhYm91dCBjb2RlIGFmdGVyIG1lcmdpbmcgaXQsIHRoYXQgc29ydCBvZiBiZWhhdmlvciB0ZW5kcyB0bworICAgbGVhdmUgYSBwb29yIGltcHJlc3Npb24gaW4gdGhlIGRldmVsb3BtZW50IGNvbW11bml0eS4gIE1lcmdpbmcgY29kZQorICAgZWxpbWluYXRlcyBzb21lIG9mIHRoZSBtYWludGVuYW5jZSBidXJkZW4sIGluIHRoYXQgb3RoZXJzIHdpbGwgZml4CisgICBwcm9ibGVtcyBjYXVzZWQgYnkgQVBJIGNoYW5nZXMuICBCdXQgdGhlIG9yaWdpbmFsIGRldmVsb3BlciBzaG91bGQKKyAgIGNvbnRpbnVlIHRvIHRha2UgcmVzcG9uc2liaWxpdHkgZm9yIHRoZSBjb2RlIGlmIGl0IGlzIHRvIHJlbWFpbiB1c2VmdWwKKyAgIGluIHRoZSBsb25nZXIgdGVybS4KKworT25lIG9mIHRoZSBsYXJnZXN0IG1pc3Rha2VzIG1hZGUgYnkga2VybmVsIGRldmVsb3BlcnMgKG9yIHRoZWlyIGVtcGxveWVycykKK2lzIHRvIHRyeSB0byBjdXQgdGhlIHByb2Nlc3MgZG93biB0byBhIHNpbmdsZSAibWVyZ2luZyBpbnRvIHRoZSBtYWlubGluZSIKK3N0ZXAuICBUaGlzIGFwcHJvYWNoIGludmFyaWFibHkgbGVhZHMgdG8gZnJ1c3RyYXRpb24gZm9yIGV2ZXJ5Ym9keQoraW52b2x2ZWQuCisKKworMi4zOiBIT1cgUEFUQ0hFUyBHRVQgSU5UTyBUSEUgS0VSTkVMCisKK1RoZXJlIGlzIGV4YWN0bHkgb25lIHBlcnNvbiB3aG8gY2FuIG1lcmdlIHBhdGNoZXMgaW50byB0aGUgbWFpbmxpbmUga2VybmVsCityZXBvc2l0b3J5OiBMaW51cyBUb3J2YWxkcy4gIEJ1dCwgb2YgdGhlIG92ZXIgOSw1MDAgcGF0Y2hlcyB3aGljaCB3ZW50CitpbnRvIHRoZSAyLjYuMzgga2VybmVsLCBvbmx5IDExMiAoYXJvdW5kIDEuMyUpIHdlcmUgZGlyZWN0bHkgY2hvc2VuIGJ5IExpbnVzCitoaW1zZWxmLiAgVGhlIGtlcm5lbCBwcm9qZWN0IGhhcyBsb25nIHNpbmNlIGdyb3duIHRvIGEgc2l6ZSB3aGVyZSBubyBzaW5nbGUKK2RldmVsb3BlciBjb3VsZCBwb3NzaWJseSBpbnNwZWN0IGFuZCBzZWxlY3QgZXZlcnkgcGF0Y2ggdW5hc3Npc3RlZC4gIFRoZQord2F5IHRoZSBrZXJuZWwgZGV2ZWxvcGVycyBoYXZlIGFkZHJlc3NlZCB0aGlzIGdyb3d0aCBpcyB0aHJvdWdoIHRoZSB1c2Ugb2YKK2EgbGlldXRlbmFudCBzeXN0ZW0gYnVpbHQgYXJvdW5kIGEgY2hhaW4gb2YgdHJ1c3QuCisKK1RoZSBrZXJuZWwgY29kZSBiYXNlIGlzIGxvZ2ljYWxseSBicm9rZW4gZG93biBpbnRvIGEgc2V0IG9mIHN1YnN5c3RlbXM6CituZXR3b3JraW5nLCBzcGVjaWZpYyBhcmNoaXRlY3R1cmUgc3VwcG9ydCwgbWVtb3J5IG1hbmFnZW1lbnQsIHZpZGVvCitkZXZpY2VzLCBldGMuICBNb3N0IHN1YnN5c3RlbXMgaGF2ZSBhIGRlc2lnbmF0ZWQgbWFpbnRhaW5lciwgYSBkZXZlbG9wZXIKK3dobyBoYXMgb3ZlcmFsbCByZXNwb25zaWJpbGl0eSBmb3IgdGhlIGNvZGUgd2l0aGluIHRoYXQgc3Vic3lzdGVtLiAgVGhlc2UKK3N1YnN5c3RlbSBtYWludGFpbmVycyBhcmUgdGhlIGdhdGVrZWVwZXJzIChpbiBhIGxvb3NlIHdheSkgZm9yIHRoZSBwb3J0aW9uCitvZiB0aGUga2VybmVsIHRoZXkgbWFuYWdlOyB0aGV5IGFyZSB0aGUgb25lcyB3aG8gd2lsbCAodXN1YWxseSkgYWNjZXB0IGEKK3BhdGNoIGZvciBpbmNsdXNpb24gaW50byB0aGUgbWFpbmxpbmUga2VybmVsLgorCitTdWJzeXN0ZW0gbWFpbnRhaW5lcnMgZWFjaCBtYW5hZ2UgdGhlaXIgb3duIHZlcnNpb24gb2YgdGhlIGtlcm5lbCBzb3VyY2UKK3RyZWUsIHVzdWFsbHkgKGJ1dCBjZXJ0YWlubHkgbm90IGFsd2F5cykgdXNpbmcgdGhlIGdpdCBzb3VyY2UgbWFuYWdlbWVudAordG9vbC4gIFRvb2xzIGxpa2UgZ2l0IChhbmQgcmVsYXRlZCB0b29scyBsaWtlIHF1aWx0IG9yIG1lcmN1cmlhbCkgYWxsb3cKK21haW50YWluZXJzIHRvIHRyYWNrIGEgbGlzdCBvZiBwYXRjaGVzLCBpbmNsdWRpbmcgYXV0aG9yc2hpcCBpbmZvcm1hdGlvbgorYW5kIG90aGVyIG1ldGFkYXRhLiAgQXQgYW55IGdpdmVuIHRpbWUsIHRoZSBtYWludGFpbmVyIGNhbiBpZGVudGlmeSB3aGljaAorcGF0Y2hlcyBpbiBoaXMgb3IgaGVyIHJlcG9zaXRvcnkgYXJlIG5vdCBmb3VuZCBpbiB0aGUgbWFpbmxpbmUuCisKK1doZW4gdGhlIG1lcmdlIHdpbmRvdyBvcGVucywgdG9wLWxldmVsIG1haW50YWluZXJzIHdpbGwgYXNrIExpbnVzIHRvICJwdWxsIgordGhlIHBhdGNoZXMgdGhleSBoYXZlIHNlbGVjdGVkIGZvciBtZXJnaW5nIGZyb20gdGhlaXIgcmVwb3NpdG9yaWVzLiAgSWYKK0xpbnVzIGFncmVlcywgdGhlIHN0cmVhbSBvZiBwYXRjaGVzIHdpbGwgZmxvdyB1cCBpbnRvIGhpcyByZXBvc2l0b3J5LAorYmVjb21pbmcgcGFydCBvZiB0aGUgbWFpbmxpbmUga2VybmVsLiAgVGhlIGFtb3VudCBvZiBhdHRlbnRpb24gdGhhdCBMaW51cworcGF5cyB0byBzcGVjaWZpYyBwYXRjaGVzIHJlY2VpdmVkIGluIGEgcHVsbCBvcGVyYXRpb24gdmFyaWVzLiAgSXQgaXMgY2xlYXIKK3RoYXQsIHNvbWV0aW1lcywgaGUgbG9va3MgcXVpdGUgY2xvc2VseS4gIEJ1dCwgYXMgYSBnZW5lcmFsIHJ1bGUsIExpbnVzCit0cnVzdHMgdGhlIHN1YnN5c3RlbSBtYWludGFpbmVycyB0byBub3Qgc2VuZCBiYWQgcGF0Y2hlcyB1cHN0cmVhbS4KKworU3Vic3lzdGVtIG1haW50YWluZXJzLCBpbiB0dXJuLCBjYW4gcHVsbCBwYXRjaGVzIGZyb20gb3RoZXIgbWFpbnRhaW5lcnMuCitGb3IgZXhhbXBsZSwgdGhlIG5ldHdvcmtpbmcgdHJlZSBpcyBidWlsdCBmcm9tIHBhdGNoZXMgd2hpY2ggYWNjdW11bGF0ZWQKK2ZpcnN0IGluIHRyZWVzIGRlZGljYXRlZCB0byBuZXR3b3JrIGRldmljZSBkcml2ZXJzLCB3aXJlbGVzcyBuZXR3b3JraW5nLAorZXRjLiAgVGhpcyBjaGFpbiBvZiByZXBvc2l0b3JpZXMgY2FuIGJlIGFyYml0cmFyaWx5IGxvbmcsIHRob3VnaCBpdCByYXJlbHkKK2V4Y2VlZHMgdHdvIG9yIHRocmVlIGxpbmtzLiAgU2luY2UgZWFjaCBtYWludGFpbmVyIGluIHRoZSBjaGFpbiB0cnVzdHMKK3Rob3NlIG1hbmFnaW5nIGxvd2VyLWxldmVsIHRyZWVzLCB0aGlzIHByb2Nlc3MgaXMga25vd24gYXMgdGhlICJjaGFpbiBvZgordHJ1c3QuIgorCitDbGVhcmx5LCBpbiBhIHN5c3RlbSBsaWtlIHRoaXMsIGdldHRpbmcgcGF0Y2hlcyBpbnRvIHRoZSBrZXJuZWwgZGVwZW5kcyBvbgorZmluZGluZyB0aGUgcmlnaHQgbWFpbnRhaW5lci4gIFNlbmRpbmcgcGF0Y2hlcyBkaXJlY3RseSB0byBMaW51cyBpcyBub3QKK25vcm1hbGx5IHRoZSByaWdodCB3YXkgdG8gZ28uCisKKworMi40OiBORVhUIFRSRUVTCisKK1RoZSBjaGFpbiBvZiBzdWJzeXN0ZW0gdHJlZXMgZ3VpZGVzIHRoZSBmbG93IG9mIHBhdGNoZXMgaW50byB0aGUga2VybmVsLAorYnV0IGl0IGFsc28gcmFpc2VzIGFuIGludGVyZXN0aW5nIHF1ZXN0aW9uOiB3aGF0IGlmIHNvbWVib2R5IHdhbnRzIHRvIGxvb2sKK2F0IGFsbCBvZiB0aGUgcGF0Y2hlcyB3aGljaCBhcmUgYmVpbmcgcHJlcGFyZWQgZm9yIHRoZSBuZXh0IG1lcmdlIHdpbmRvdz8KK0RldmVsb3BlcnMgd2lsbCBiZSBpbnRlcmVzdGVkIGluIHdoYXQgb3RoZXIgY2hhbmdlcyBhcmUgcGVuZGluZyB0byBzZWUKK3doZXRoZXIgdGhlcmUgYXJlIGFueSBjb25mbGljdHMgdG8gd29ycnkgYWJvdXQ7IGEgcGF0Y2ggd2hpY2ggY2hhbmdlcyBhCitjb3JlIGtlcm5lbCBmdW5jdGlvbiBwcm90b3R5cGUsIGZvciBleGFtcGxlLCB3aWxsIGNvbmZsaWN0IHdpdGggYW55IG90aGVyCitwYXRjaGVzIHdoaWNoIHVzZSB0aGUgb2xkZXIgZm9ybSBvZiB0aGF0IGZ1bmN0aW9uLiAgUmV2aWV3ZXJzIGFuZCB0ZXN0ZXJzCit3YW50IGFjY2VzcyB0byB0aGUgY2hhbmdlcyBpbiB0aGVpciBpbnRlZ3JhdGVkIGZvcm0gYmVmb3JlIGFsbCBvZiB0aG9zZQorY2hhbmdlcyBsYW5kIGluIHRoZSBtYWlubGluZSBrZXJuZWwuICBPbmUgY291bGQgcHVsbCBjaGFuZ2VzIGZyb20gYWxsIG9mCit0aGUgaW50ZXJlc3Rpbmcgc3Vic3lzdGVtIHRyZWVzLCBidXQgdGhhdCB3b3VsZCBiZSBhIGJpZyBhbmQgZXJyb3ItcHJvbmUKK2pvYi4KKworVGhlIGFuc3dlciBjb21lcyBpbiB0aGUgZm9ybSBvZiAtbmV4dCB0cmVlcywgd2hlcmUgc3Vic3lzdGVtIHRyZWVzIGFyZQorY29sbGVjdGVkIGZvciB0ZXN0aW5nIGFuZCByZXZpZXcuICBUaGUgb2xkZXIgb2YgdGhlc2UgdHJlZXMsIG1haW50YWluZWQgYnkKK0FuZHJldyBNb3J0b24sIGlzIGNhbGxlZCAiLW1tIiAoZm9yIG1lbW9yeSBtYW5hZ2VtZW50LCB3aGljaCBpcyBob3cgaXQgZ290CitzdGFydGVkKS4gIFRoZSAtbW0gdHJlZSBpbnRlZ3JhdGVzIHBhdGNoZXMgZnJvbSBhIGxvbmcgbGlzdCBvZiBzdWJzeXN0ZW0KK3RyZWVzOyBpdCBhbHNvIGhhcyBzb21lIHBhdGNoZXMgYWltZWQgYXQgaGVscGluZyB3aXRoIGRlYnVnZ2luZy4KKworQmV5b25kIHRoYXQsIC1tbSBjb250YWlucyBhIHNpZ25pZmljYW50IGNvbGxlY3Rpb24gb2YgcGF0Y2hlcyB3aGljaCBoYXZlCitiZWVuIHNlbGVjdGVkIGJ5IEFuZHJldyBkaXJlY3RseS4gIFRoZXNlIHBhdGNoZXMgbWF5IGhhdmUgYmVlbiBwb3N0ZWQgb24gYQorbWFpbGluZyBsaXN0LCBvciB0aGV5IG1heSBhcHBseSB0byBhIHBhcnQgb2YgdGhlIGtlcm5lbCBmb3Igd2hpY2ggdGhlcmUgaXMKK25vIGRlc2lnbmF0ZWQgc3Vic3lzdGVtIHRyZWUuICBBcyBhIHJlc3VsdCwgLW1tIG9wZXJhdGVzIGFzIGEgc29ydCBvZgorc3Vic3lzdGVtIHRyZWUgb2YgbGFzdCByZXNvcnQ7IGlmIHRoZXJlIGlzIG5vIG90aGVyIG9idmlvdXMgcGF0aCBmb3IgYQorcGF0Y2ggaW50byB0aGUgbWFpbmxpbmUsIGl0IGlzIGxpa2VseSB0byBlbmQgdXAgaW4gLW1tLiAgTWlzY2VsbGFuZW91cworcGF0Y2hlcyB3aGljaCBhY2N1bXVsYXRlIGluIC1tbSB3aWxsIGV2ZW50dWFsbHkgZWl0aGVyIGJlIGZvcndhcmRlZCBvbiB0bworYW4gYXBwcm9wcmlhdGUgc3Vic3lzdGVtIHRyZWUgb3IgYmUgc2VudCBkaXJlY3RseSB0byBMaW51cy4gIEluIGEgdHlwaWNhbAorZGV2ZWxvcG1lbnQgY3ljbGUsIGFwcHJveGltYXRlbHkgNS0xMCUgb2YgdGhlIHBhdGNoZXMgZ29pbmcgaW50byB0aGUKK21haW5saW5lIGdldCB0aGVyZSB2aWEgLW1tLgorCitUaGUgY3VycmVudCAtbW0gcGF0Y2ggaXMgYXZhaWxhYmxlIGluIHRoZSAibW1vdG0iICgtbW0gb2YgdGhlIG1vbWVudCkKK2RpcmVjdG9yeSBhdDoKKworCWh0dHA6Ly93d3cub3psYWJzLm9yZy9+YWtwbS9tbW90bS8KKworVXNlIG9mIHRoZSBNTU9UTSB0cmVlIGlzIGxpa2VseSB0byBiZSBhIGZydXN0cmF0aW5nIGV4cGVyaWVuY2UsIHRob3VnaDsKK3RoZXJlIGlzIGEgZGVmaW5pdGUgY2hhbmNlIHRoYXQgaXQgd2lsbCBub3QgZXZlbiBjb21waWxlLgorCitUaGUgcHJpbWFyeSB0cmVlIGZvciBuZXh0LWN5Y2xlIHBhdGNoIG1lcmdpbmcgaXMgbGludXgtbmV4dCwgbWFpbnRhaW5lZCBieQorU3RlcGhlbiBSb3Rod2VsbC4gIFRoZSBsaW51eC1uZXh0IHRyZWUgaXMsIGJ5IGRlc2lnbiwgYSBzbmFwc2hvdCBvZiB3aGF0Cit0aGUgbWFpbmxpbmUgaXMgZXhwZWN0ZWQgdG8gbG9vayBsaWtlIGFmdGVyIHRoZSBuZXh0IG1lcmdlIHdpbmRvdyBjbG9zZXMuCitMaW51eC1uZXh0IHRyZWVzIGFyZSBhbm5vdW5jZWQgb24gdGhlIGxpbnV4LWtlcm5lbCBhbmQgbGludXgtbmV4dCBtYWlsaW5nCitsaXN0cyB3aGVuIHRoZXkgYXJlIGFzc2VtYmxlZDsgdGhleSBjYW4gYmUgZG93bmxvYWRlZCBmcm9tOgorCisJaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC9rZXJuZWwvbmV4dC8KKworTGludXgtbmV4dCBoYXMgYmVjb21lIGFuIGludGVncmFsIHBhcnQgb2YgdGhlIGtlcm5lbCBkZXZlbG9wbWVudCBwcm9jZXNzOworYWxsIHBhdGNoZXMgbWVyZ2VkIGR1cmluZyBhIGdpdmVuIG1lcmdlIHdpbmRvdyBzaG91bGQgcmVhbGx5IGhhdmUgZm91bmQKK3RoZWlyIHdheSBpbnRvIGxpbnV4LW5leHQgc29tZSB0aW1lIGJlZm9yZSB0aGUgbWVyZ2Ugd2luZG93IG9wZW5zLgorCisKKzIuNC4xOiBTVEFHSU5HIFRSRUVTCisKK1RoZSBrZXJuZWwgc291cmNlIHRyZWUgY29udGFpbnMgdGhlIGRyaXZlcnMvc3RhZ2luZy8gZGlyZWN0b3J5LCB3aGVyZQorbWFueSBzdWItZGlyZWN0b3JpZXMgZm9yIGRyaXZlcnMgb3IgZmlsZXN5c3RlbXMgdGhhdCBhcmUgb24gdGhlaXIgd2F5IHRvCitiZWluZyBhZGRlZCB0byB0aGUga2VybmVsIHRyZWUgbGl2ZS4gIFRoZXkgcmVtYWluIGluIGRyaXZlcnMvc3RhZ2luZyB3aGlsZQordGhleSBzdGlsbCBuZWVkIG1vcmUgd29yazsgb25jZSBjb21wbGV0ZSwgdGhleSBjYW4gYmUgbW92ZWQgaW50byB0aGUKK2tlcm5lbCBwcm9wZXIuICBUaGlzIGlzIGEgd2F5IHRvIGtlZXAgdHJhY2sgb2YgZHJpdmVycyB0aGF0IGFyZW4ndAordXAgdG8gTGludXgga2VybmVsIGNvZGluZyBvciBxdWFsaXR5IHN0YW5kYXJkcywgYnV0IHBlb3BsZSBtYXkgd2FudCB0byB1c2UKK3RoZW0gYW5kIHRyYWNrIGRldmVsb3BtZW50LgorCitHcmVnIEtyb2FoLUhhcnRtYW4gY3VycmVudGx5IG1haW50YWlucyB0aGUgc3RhZ2luZyB0cmVlLiAgRHJpdmVycyB0aGF0CitzdGlsbCBuZWVkIHdvcmsgYXJlIHNlbnQgdG8gaGltLCB3aXRoIGVhY2ggZHJpdmVyIGhhdmluZyBpdHMgb3duCitzdWJkaXJlY3RvcnkgaW4gZHJpdmVycy9zdGFnaW5nLy4gIEFsb25nIHdpdGggdGhlIGRyaXZlciBzb3VyY2UgZmlsZXMsIGEKK1RPRE8gZmlsZSBzaG91bGQgYmUgcHJlc2VudCBpbiB0aGUgZGlyZWN0b3J5IGFzIHdlbGwuICBUaGUgVE9ETyBmaWxlIGxpc3RzCit0aGUgcGVuZGluZyB3b3JrIHRoYXQgdGhlIGRyaXZlciBuZWVkcyBmb3IgYWNjZXB0YW5jZSBpbnRvIHRoZSBrZXJuZWwKK3Byb3BlciwgYXMgd2VsbCBhcyBhIGxpc3Qgb2YgcGVvcGxlIHRoYXQgc2hvdWxkIGJlIENjJ2QgZm9yIGFueSBwYXRjaGVzIHRvCit0aGUgZHJpdmVyLiAgQ3VycmVudCBydWxlcyByZXF1aXJlIHRoYXQgZHJpdmVycyBjb250cmlidXRlZCB0byBzdGFnaW5nCittdXN0LCBhdCBhIG1pbmltdW0sIGNvbXBpbGUgcHJvcGVybHkuCisKK1N0YWdpbmcgY2FuIGJlIGEgcmVsYXRpdmVseSBlYXN5IHdheSB0byBnZXQgbmV3IGRyaXZlcnMgaW50byB0aGUgbWFpbmxpbmUKK3doZXJlLCB3aXRoIGx1Y2ssIHRoZXkgd2lsbCBjb21lIHRvIHRoZSBhdHRlbnRpb24gb2Ygb3RoZXIgZGV2ZWxvcGVycyBhbmQKK2ltcHJvdmUgcXVpY2tseS4gIEVudHJ5IGludG8gc3RhZ2luZyBpcyBub3QgdGhlIGVuZCBvZiB0aGUgc3RvcnksIHRob3VnaDsKK2NvZGUgaW4gc3RhZ2luZyB3aGljaCBpcyBub3Qgc2VlaW5nIHJlZ3VsYXIgcHJvZ3Jlc3Mgd2lsbCBldmVudHVhbGx5IGJlCityZW1vdmVkLiAgRGlzdHJpYnV0b3JzIGFsc28gdGVuZCB0byBiZSByZWxhdGl2ZWx5IHJlbHVjdGFudCB0byBlbmFibGUKK3N0YWdpbmcgZHJpdmVycy4gIFNvIHN0YWdpbmcgaXMsIGF0IGJlc3QsIGEgc3RvcCBvbiB0aGUgd2F5IHRvd2FyZCBiZWNvbWluZworYSBwcm9wZXIgbWFpbmxpbmUgZHJpdmVyLgorCisKKzIuNTogVE9PTFMKKworQXMgY2FuIGJlIHNlZW4gZnJvbSB0aGUgYWJvdmUgdGV4dCwgdGhlIGtlcm5lbCBkZXZlbG9wbWVudCBwcm9jZXNzIGRlcGVuZHMKK2hlYXZpbHkgb24gdGhlIGFiaWxpdHkgdG8gaGVyZCBjb2xsZWN0aW9ucyBvZiBwYXRjaGVzIGluIHZhcmlvdXMKK2RpcmVjdGlvbnMuICBUaGUgd2hvbGUgdGhpbmcgd291bGQgbm90IHdvcmsgYW55d2hlcmUgbmVhciBhcyB3ZWxsIGFzIGl0Citkb2VzIHdpdGhvdXQgc3VpdGFibHkgcG93ZXJmdWwgdG9vbHMuICBUdXRvcmlhbHMgb24gaG93IHRvIHVzZSB0aGVzZSB0b29scworYXJlIHdlbGwgYmV5b25kIHRoZSBzY29wZSBvZiB0aGlzIGRvY3VtZW50LCBidXQgdGhlcmUgaXMgc3BhY2UgZm9yIGEgZmV3Citwb2ludGVycy4KKworQnkgZmFyIHRoZSBkb21pbmFudCBzb3VyY2UgY29kZSBtYW5hZ2VtZW50IHN5c3RlbSB1c2VkIGJ5IHRoZSBrZXJuZWwKK2NvbW11bml0eSBpcyBnaXQuICBHaXQgaXMgb25lIG9mIGEgbnVtYmVyIG9mIGRpc3RyaWJ1dGVkIHZlcnNpb24gY29udHJvbAorc3lzdGVtcyBiZWluZyBkZXZlbG9wZWQgaW4gdGhlIGZyZWUgc29mdHdhcmUgY29tbXVuaXR5LiAgSXQgaXMgd2VsbCB0dW5lZAorZm9yIGtlcm5lbCBkZXZlbG9wbWVudCwgaW4gdGhhdCBpdCBwZXJmb3JtcyBxdWl0ZSB3ZWxsIHdoZW4gZGVhbGluZyB3aXRoCitsYXJnZSByZXBvc2l0b3JpZXMgYW5kIGxhcmdlIG51bWJlcnMgb2YgcGF0Y2hlcy4gIEl0IGFsc28gaGFzIGEgcmVwdXRhdGlvbgorZm9yIGJlaW5nIGRpZmZpY3VsdCB0byBsZWFybiBhbmQgdXNlLCB0aG91Z2ggaXQgaGFzIGdvdHRlbiBiZXR0ZXIgb3ZlcgordGltZS4gIFNvbWUgc29ydCBvZiBmYW1pbGlhcml0eSB3aXRoIGdpdCBpcyBhbG1vc3QgYSByZXF1aXJlbWVudCBmb3Iga2VybmVsCitkZXZlbG9wZXJzOyBldmVuIGlmIHRoZXkgZG8gbm90IHVzZSBpdCBmb3IgdGhlaXIgb3duIHdvcmssIHRoZXknbGwgbmVlZCBnaXQKK3RvIGtlZXAgdXAgd2l0aCB3aGF0IG90aGVyIGRldmVsb3BlcnMgKGFuZCB0aGUgbWFpbmxpbmUpIGFyZSBkb2luZy4KKworR2l0IGlzIG5vdyBwYWNrYWdlZCBieSBhbG1vc3QgYWxsIExpbnV4IGRpc3RyaWJ1dGlvbnMuICBUaGVyZSBpcyBhIGhvbWUKK3BhZ2UgYXQ6CisKKwlodHRwOi8vZ2l0LXNjbS5jb20vCisKK1RoYXQgcGFnZSBoYXMgcG9pbnRlcnMgdG8gZG9jdW1lbnRhdGlvbiBhbmQgdHV0b3JpYWxzLgorCitBbW9uZyB0aGUga2VybmVsIGRldmVsb3BlcnMgd2hvIGRvIG5vdCB1c2UgZ2l0LCB0aGUgbW9zdCBwb3B1bGFyIGNob2ljZSBpcworYWxtb3N0IGNlcnRhaW5seSBNZXJjdXJpYWw6CisKKwlodHRwOi8vd3d3LnNlbGVuaWMuY29tL21lcmN1cmlhbC8KKworTWVyY3VyaWFsIHNoYXJlcyBtYW55IGZlYXR1cmVzIHdpdGggZ2l0LCBidXQgaXQgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIHdoaWNoCittYW55IGZpbmQgZWFzaWVyIHRvIHVzZS4KKworVGhlIG90aGVyIHRvb2wgd29ydGgga25vd2luZyBhYm91dCBpcyBRdWlsdDoKKworCWh0dHA6Ly9zYXZhbm5haC5ub25nbnUub3JnL3Byb2plY3RzL3F1aWx0LworCitRdWlsdCBpcyBhIHBhdGNoIG1hbmFnZW1lbnQgc3lzdGVtLCByYXRoZXIgdGhhbiBhIHNvdXJjZSBjb2RlIG1hbmFnZW1lbnQKK3N5c3RlbS4gIEl0IGRvZXMgbm90IHRyYWNrIGhpc3Rvcnkgb3ZlciB0aW1lOyBpdCBpcywgaW5zdGVhZCwgb3JpZW50ZWQKK3Rvd2FyZCB0cmFja2luZyBhIHNwZWNpZmljIHNldCBvZiBjaGFuZ2VzIGFnYWluc3QgYW4gZXZvbHZpbmcgY29kZSBiYXNlLgorU29tZSBtYWpvciBzdWJzeXN0ZW0gbWFpbnRhaW5lcnMgdXNlIHF1aWx0IHRvIG1hbmFnZSBwYXRjaGVzIGludGVuZGVkIHRvIGdvCit1cHN0cmVhbS4gIEZvciB0aGUgbWFuYWdlbWVudCBvZiBjZXJ0YWluIGtpbmRzIG9mIHRyZWVzICgtbW0sIGZvciBleGFtcGxlKSwKK3F1aWx0IGlzIHRoZSBiZXN0IHRvb2wgZm9yIHRoZSBqb2IuCisKKworMi42OiBNQUlMSU5HIExJU1RTCisKK0EgZ3JlYXQgZGVhbCBvZiBMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQgd29yayBpcyBkb25lIGJ5IHdheSBvZiBtYWlsaW5nCitsaXN0cy4gIEl0IGlzIGhhcmQgdG8gYmUgYSBmdWxseS1mdW5jdGlvbmluZyBtZW1iZXIgb2YgdGhlIGNvbW11bml0eQord2l0aG91dCBqb2luaW5nIGF0IGxlYXN0IG9uZSBsaXN0IHNvbWV3aGVyZS4gIEJ1dCBMaW51eCBtYWlsaW5nIGxpc3RzIGFsc28KK3JlcHJlc2VudCBhIHBvdGVudGlhbCBoYXphcmQgdG8gZGV2ZWxvcGVycywgd2hvIHJpc2sgZ2V0dGluZyBidXJpZWQgdW5kZXIgYQorbG9hZCBvZiBlbGVjdHJvbmljIG1haWwsIHJ1bm5pbmcgYWZvdWwgb2YgdGhlIGNvbnZlbnRpb25zIHVzZWQgb24gdGhlIExpbnV4CitsaXN0cywgb3IgYm90aC4KKworTW9zdCBrZXJuZWwgbWFpbGluZyBsaXN0cyBhcmUgcnVuIG9uIHZnZXIua2VybmVsLm9yZzsgdGhlIG1hc3RlciBsaXN0IGNhbgorYmUgZm91bmQgYXQ6CisKKwlodHRwOi8vdmdlci5rZXJuZWwub3JnL3ZnZXItbGlzdHMuaHRtbAorCitUaGVyZSBhcmUgbGlzdHMgaG9zdGVkIGVsc2V3aGVyZSwgdGhvdWdoOyBhIG51bWJlciBvZiB0aGVtIGFyZSBhdAorbGlzdHMucmVkaGF0LmNvbS4KKworVGhlIGNvcmUgbWFpbGluZyBsaXN0IGZvciBrZXJuZWwgZGV2ZWxvcG1lbnQgaXMsIG9mIGNvdXJzZSwgbGludXgta2VybmVsLgorVGhpcyBsaXN0IGlzIGFuIGludGltaWRhdGluZyBwbGFjZSB0byBiZTsgdm9sdW1lIGNhbiByZWFjaCA1MDAgbWVzc2FnZXMgcGVyCitkYXksIHRoZSBhbW91bnQgb2Ygbm9pc2UgaXMgaGlnaCwgdGhlIGNvbnZlcnNhdGlvbiBjYW4gYmUgc2V2ZXJlbHkKK3RlY2huaWNhbCwgYW5kIHBhcnRpY2lwYW50cyBhcmUgbm90IGFsd2F5cyBjb25jZXJuZWQgd2l0aCBzaG93aW5nIGEgaGlnaAorZGVncmVlIG9mIHBvbGl0ZW5lc3MuICBCdXQgdGhlcmUgaXMgbm8gb3RoZXIgcGxhY2Ugd2hlcmUgdGhlIGtlcm5lbAorZGV2ZWxvcG1lbnQgY29tbXVuaXR5IGNvbWVzIHRvZ2V0aGVyIGFzIGEgd2hvbGU7IGRldmVsb3BlcnMgd2hvIGF2b2lkIHRoaXMKK2xpc3Qgd2lsbCBtaXNzIGltcG9ydGFudCBpbmZvcm1hdGlvbi4KKworVGhlcmUgYXJlIGEgZmV3IGhpbnRzIHdoaWNoIGNhbiBoZWxwIHdpdGggbGludXgta2VybmVsIHN1cnZpdmFsOgorCistIEhhdmUgdGhlIGxpc3QgZGVsaXZlcmVkIHRvIGEgc2VwYXJhdGUgZm9sZGVyLCByYXRoZXIgdGhhbiB5b3VyIG1haW4KKyAgbWFpbGJveC4gIE9uZSBtdXN0IGJlIGFibGUgdG8gaWdub3JlIHRoZSBzdHJlYW0gZm9yIHN1c3RhaW5lZCBwZXJpb2RzIG9mCisgIHRpbWUuCisKKy0gRG8gbm90IHRyeSB0byBmb2xsb3cgZXZlcnkgY29udmVyc2F0aW9uIC0gbm9ib2R5IGVsc2UgZG9lcy4gIEl0IGlzCisgIGltcG9ydGFudCB0byBmaWx0ZXIgb24gYm90aCB0aGUgdG9waWMgb2YgaW50ZXJlc3QgKHRob3VnaCBub3RlIHRoYXQKKyAgbG9uZy1ydW5uaW5nIGNvbnZlcnNhdGlvbnMgY2FuIGRyaWZ0IGF3YXkgZnJvbSB0aGUgb3JpZ2luYWwgc3ViamVjdAorICB3aXRob3V0IGNoYW5naW5nIHRoZSBlbWFpbCBzdWJqZWN0IGxpbmUpIGFuZCB0aGUgcGVvcGxlIHdobyBhcmUKKyAgcGFydGljaXBhdGluZy4KKworLSBEbyBub3QgZmVlZCB0aGUgdHJvbGxzLiAgSWYgc29tZWJvZHkgaXMgdHJ5aW5nIHRvIHN0aXIgdXAgYW4gYW5ncnkKKyAgcmVzcG9uc2UsIGlnbm9yZSB0aGVtLgorCistIFdoZW4gcmVzcG9uZGluZyB0byBsaW51eC1rZXJuZWwgZW1haWwgKG9yIHRoYXQgb24gb3RoZXIgbGlzdHMpIHByZXNlcnZlCisgIHRoZSBDYzogaGVhZGVyIGZvciBhbGwgaW52b2x2ZWQuICBJbiB0aGUgYWJzZW5jZSBvZiBhIHN0cm9uZyByZWFzb24gKHN1Y2gKKyAgYXMgYW4gZXhwbGljaXQgcmVxdWVzdCksIHlvdSBzaG91bGQgbmV2ZXIgcmVtb3ZlIHJlY2lwaWVudHMuICBBbHdheXMgbWFrZQorICBzdXJlIHRoYXQgdGhlIHBlcnNvbiB5b3UgYXJlIHJlc3BvbmRpbmcgdG8gaXMgaW4gdGhlIENjOiBsaXN0LiAgVGhpcworICBjb252ZW50aW9uIGFsc28gbWFrZXMgaXQgdW5uZWNlc3NhcnkgdG8gZXhwbGljaXRseSBhc2sgdG8gYmUgY29waWVkIG9uCisgIHJlcGxpZXMgdG8geW91ciBwb3N0aW5ncy4KKworLSBTZWFyY2ggdGhlIGxpc3QgYXJjaGl2ZXMgKGFuZCB0aGUgbmV0IGFzIGEgd2hvbGUpIGJlZm9yZSBhc2tpbmcKKyAgcXVlc3Rpb25zLiAgU29tZSBkZXZlbG9wZXJzIGNhbiBnZXQgaW1wYXRpZW50IHdpdGggcGVvcGxlIHdobyBjbGVhcmx5CisgIGhhdmUgbm90IGRvbmUgdGhlaXIgaG9tZXdvcmsuCisKKy0gQXZvaWQgdG9wLXBvc3RpbmcgKHRoZSBwcmFjdGljZSBvZiBwdXR0aW5nIHlvdXIgYW5zd2VyIGFib3ZlIHRoZSBxdW90ZWQKKyAgdGV4dCB5b3UgYXJlIHJlc3BvbmRpbmcgdG8pLiAgSXQgbWFrZXMgeW91ciByZXNwb25zZSBoYXJkZXIgdG8gcmVhZCBhbmQKKyAgbWFrZXMgYSBwb29yIGltcHJlc3Npb24uCisKKy0gQXNrIG9uIHRoZSBjb3JyZWN0IG1haWxpbmcgbGlzdC4gIExpbnV4LWtlcm5lbCBtYXkgYmUgdGhlIGdlbmVyYWwgbWVldGluZworICBwb2ludCwgYnV0IGl0IGlzIG5vdCB0aGUgYmVzdCBwbGFjZSB0byBmaW5kIGRldmVsb3BlcnMgZnJvbSBhbGwKKyAgc3Vic3lzdGVtcy4KKworVGhlIGxhc3QgcG9pbnQgLSBmaW5kaW5nIHRoZSBjb3JyZWN0IG1haWxpbmcgbGlzdCAtIGlzIGEgY29tbW9uIHBsYWNlIGZvcgorYmVnaW5uaW5nIGRldmVsb3BlcnMgdG8gZ28gd3JvbmcuICBTb21lYm9keSB3aG8gYXNrcyBhIG5ldHdvcmtpbmctcmVsYXRlZAorcXVlc3Rpb24gb24gbGludXgta2VybmVsIHdpbGwgYWxtb3N0IGNlcnRhaW5seSByZWNlaXZlIGEgcG9saXRlIHN1Z2dlc3Rpb24KK3RvIGFzayBvbiB0aGUgbmV0ZGV2IGxpc3QgaW5zdGVhZCwgYXMgdGhhdCBpcyB0aGUgbGlzdCBmcmVxdWVudGVkIGJ5IG1vc3QKK25ldHdvcmtpbmcgZGV2ZWxvcGVycy4gIE90aGVyIGxpc3RzIGV4aXN0IGZvciB0aGUgU0NTSSwgdmlkZW80bGludXgsIElERSwKK2ZpbGVzeXN0ZW0sIGV0Yy4gc3Vic3lzdGVtcy4gIFRoZSBiZXN0IHBsYWNlIHRvIGxvb2sgZm9yIG1haWxpbmcgbGlzdHMgaXMKK2luIHRoZSBNQUlOVEFJTkVSUyBmaWxlIHBhY2thZ2VkIHdpdGggdGhlIGtlcm5lbCBzb3VyY2UuCisKKworMi43OiBHRVRUSU5HIFNUQVJURUQgV0lUSCBLRVJORUwgREVWRUxPUE1FTlQKKworUXVlc3Rpb25zIGFib3V0IGhvdyB0byBnZXQgc3RhcnRlZCB3aXRoIHRoZSBrZXJuZWwgZGV2ZWxvcG1lbnQgcHJvY2VzcyBhcmUKK2NvbW1vbiAtIGZyb20gYm90aCBpbmRpdmlkdWFscyBhbmQgY29tcGFuaWVzLiAgRXF1YWxseSBjb21tb24gYXJlIG1pc3N0ZXBzCit3aGljaCBtYWtlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHJlbGF0aW9uc2hpcCBoYXJkZXIgdGhhbiBpdCBoYXMgdG8gYmUuCisKK0NvbXBhbmllcyBvZnRlbiBsb29rIHRvIGhpcmUgd2VsbC1rbm93biBkZXZlbG9wZXJzIHRvIGdldCBhIGRldmVsb3BtZW50Citncm91cCBzdGFydGVkLiAgVGhpcyBjYW4sIGluIGZhY3QsIGJlIGFuIGVmZmVjdGl2ZSB0ZWNobmlxdWUuICBCdXQgaXQgYWxzbwordGVuZHMgdG8gYmUgZXhwZW5zaXZlIGFuZCBkb2VzIG5vdCBkbyBtdWNoIHRvIGdyb3cgdGhlIHBvb2wgb2YgZXhwZXJpZW5jZWQKK2tlcm5lbCBkZXZlbG9wZXJzLiAgSXQgaXMgcG9zc2libGUgdG8gYnJpbmcgaW4taG91c2UgZGV2ZWxvcGVycyB1cCB0byBzcGVlZAorb24gTGludXgga2VybmVsIGRldmVsb3BtZW50LCBnaXZlbiB0aGUgaW52ZXN0bWVudCBvZiBhIGJpdCBvZiB0aW1lLiAgVGFraW5nCit0aGlzIHRpbWUgY2FuIGVuZG93IGFuIGVtcGxveWVyIHdpdGggYSBncm91cCBvZiBkZXZlbG9wZXJzIHdobyB1bmRlcnN0YW5kCit0aGUga2VybmVsIGFuZCB0aGUgY29tcGFueSBib3RoLCBhbmQgd2hvIGNhbiBoZWxwIHRvIHRyYWluIG90aGVycyBhcyB3ZWxsLgorT3ZlciB0aGUgbWVkaXVtIHRlcm0sIHRoaXMgaXMgb2Z0ZW4gdGhlIG1vcmUgcHJvZml0YWJsZSBhcHByb2FjaC4KKworSW5kaXZpZHVhbCBkZXZlbG9wZXJzIGFyZSBvZnRlbiwgdW5kZXJzdGFuZGFibHksIGF0IGEgbG9zcyBmb3IgYSBwbGFjZSB0bworc3RhcnQuICBCZWdpbm5pbmcgd2l0aCBhIGxhcmdlIHByb2plY3QgY2FuIGJlIGludGltaWRhdGluZzsgb25lIG9mdGVuIHdhbnRzCit0byB0ZXN0IHRoZSB3YXRlcnMgd2l0aCBzb21ldGhpbmcgc21hbGxlciBmaXJzdC4gIFRoaXMgaXMgdGhlIHBvaW50IHdoZXJlCitzb21lIGRldmVsb3BlcnMganVtcCBpbnRvIHRoZSBjcmVhdGlvbiBvZiBwYXRjaGVzIGZpeGluZyBzcGVsbGluZyBlcnJvcnMgb3IKK21pbm9yIGNvZGluZyBzdHlsZSBpc3N1ZXMuICBVbmZvcnR1bmF0ZWx5LCBzdWNoIHBhdGNoZXMgY3JlYXRlIGEgbGV2ZWwgb2YKK25vaXNlIHdoaWNoIGlzIGRpc3RyYWN0aW5nIGZvciB0aGUgZGV2ZWxvcG1lbnQgY29tbXVuaXR5IGFzIGEgd2hvbGUsIHNvLAoraW5jcmVhc2luZ2x5LCB0aGV5IGFyZSBsb29rZWQgZG93biB1cG9uLiAgTmV3IGRldmVsb3BlcnMgd2lzaGluZyB0bworaW50cm9kdWNlIHRoZW1zZWx2ZXMgdG8gdGhlIGNvbW11bml0eSB3aWxsIG5vdCBnZXQgdGhlIHNvcnQgb2YgcmVjZXB0aW9uCit0aGV5IHdpc2ggZm9yIGJ5IHRoZXNlIG1lYW5zLgorCitBbmRyZXcgTW9ydG9uIGdpdmVzIHRoaXMgYWR2aWNlIGZvciBhc3BpcmluZyBrZXJuZWwgZGV2ZWxvcGVycworCisJVGhlICMxIHByb2plY3QgZm9yIGFsbCBrZXJuZWwgYmVnaW5uZXJzIHNob3VsZCBzdXJlbHkgYmUgIm1ha2Ugc3VyZQorCXRoYXQgdGhlIGtlcm5lbCBydW5zIHBlcmZlY3RseSBhdCBhbGwgdGltZXMgb24gYWxsIG1hY2hpbmVzIHdoaWNoCisJeW91IGNhbiBsYXkgeW91ciBoYW5kcyBvbiIuICBVc3VhbGx5IHRoZSB3YXkgdG8gZG8gdGhpcyBpcyB0byB3b3JrCisJd2l0aCBvdGhlcnMgb24gZ2V0dGluZyB0aGluZ3MgZml4ZWQgdXAgKHRoaXMgY2FuIHJlcXVpcmUKKwlwZXJzaXN0ZW5jZSEpIGJ1dCB0aGF0J3MgZmluZSAtIGl0J3MgYSBwYXJ0IG9mIGtlcm5lbCBkZXZlbG9wbWVudC4KKworKGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzI4Mzk4Mi8pLgorCitJbiB0aGUgYWJzZW5jZSBvZiBvYnZpb3VzIHByb2JsZW1zIHRvIGZpeCwgZGV2ZWxvcGVycyBhcmUgYWR2aXNlZCB0byBsb29rCithdCB0aGUgY3VycmVudCBsaXN0cyBvZiByZWdyZXNzaW9ucyBhbmQgb3BlbiBidWdzIGluIGdlbmVyYWwuICBUaGVyZSBpcworbmV2ZXIgYW55IHNob3J0YWdlIG9mIGlzc3VlcyBpbiBuZWVkIG9mIGZpeGluZzsgYnkgYWRkcmVzc2luZyB0aGVzZSBpc3N1ZXMsCitkZXZlbG9wZXJzIHdpbGwgZ2FpbiBleHBlcmllbmNlIHdpdGggdGhlIHByb2Nlc3Mgd2hpbGUsIGF0IHRoZSBzYW1lIHRpbWUsCitidWlsZGluZyByZXNwZWN0IHdpdGggdGhlIHJlc3Qgb2YgdGhlIGRldmVsb3BtZW50IGNvbW11bml0eS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2ZWxvcG1lbnQtcHJvY2Vzcy8zLkVhcmx5LXN0YWdlIGIvRG9jdW1lbnRhdGlvbi9kZXZlbG9wbWVudC1wcm9jZXNzLzMuRWFybHktc3RhZ2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg3YmE3YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2ZWxvcG1lbnQtcHJvY2Vzcy8zLkVhcmx5LXN0YWdlCkBAIC0wLDAgKzEsMjEyIEBACiszOiBFQVJMWS1TVEFHRSBQTEFOTklORworCitXaGVuIGNvbnRlbXBsYXRpbmcgYSBMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQgcHJvamVjdCwgaXQgY2FuIGJlIHRlbXB0aW5nCit0byBqdW1wIHJpZ2h0IGluIGFuZCBzdGFydCBjb2RpbmcuICBBcyB3aXRoIGFueSBzaWduaWZpY2FudCBwcm9qZWN0LAordGhvdWdoLCBtdWNoIG9mIHRoZSBncm91bmR3b3JrIGZvciBzdWNjZXNzIGlzIGJlc3QgbGFpZCBiZWZvcmUgdGhlIGZpcnN0CitsaW5lIG9mIGNvZGUgaXMgd3JpdHRlbi4gIFNvbWUgdGltZSBzcGVudCBpbiBlYXJseSBwbGFubmluZyBhbmQKK2NvbW11bmljYXRpb24gY2FuIHNhdmUgZmFyIG1vcmUgdGltZSBsYXRlciBvbi4KKworCiszLjE6IFNQRUNJRllJTkcgVEhFIFBST0JMRU0KKworTGlrZSBhbnkgZW5naW5lZXJpbmcgcHJvamVjdCwgYSBzdWNjZXNzZnVsIGtlcm5lbCBlbmhhbmNlbWVudCBzdGFydHMgd2l0aCBhCitjbGVhciBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvYmxlbSB0byBiZSBzb2x2ZWQuICBJbiBzb21lIGNhc2VzLCB0aGlzIHN0ZXAgaXMKK2Vhc3k6IHdoZW4gYSBkcml2ZXIgaXMgbmVlZGVkIGZvciBhIHNwZWNpZmljIHBpZWNlIG9mIGhhcmR3YXJlLCBmb3IKK2V4YW1wbGUuICBJbiBvdGhlcnMsIHRob3VnaCwgaXQgaXMgdGVtcHRpbmcgdG8gY29uZnVzZSB0aGUgcmVhbCBwcm9ibGVtCit3aXRoIHRoZSBwcm9wb3NlZCBzb2x1dGlvbiwgYW5kIHRoYXQgY2FuIGxlYWQgdG8gZGlmZmljdWx0aWVzLgorCitDb25zaWRlciBhbiBleGFtcGxlOiBzb21lIHllYXJzIGFnbywgZGV2ZWxvcGVycyB3b3JraW5nIHdpdGggTGludXggYXVkaW8KK3NvdWdodCBhIHdheSB0byBydW4gYXBwbGljYXRpb25zIHdpdGhvdXQgZHJvcG91dHMgb3Igb3RoZXIgYXJ0aWZhY3RzIGNhdXNlZAorYnkgZXhjZXNzaXZlIGxhdGVuY3kgaW4gdGhlIHN5c3RlbS4gIFRoZSBzb2x1dGlvbiB0aGV5IGFycml2ZWQgYXQgd2FzIGEKK2tlcm5lbCBtb2R1bGUgaW50ZW5kZWQgdG8gaG9vayBpbnRvIHRoZSBMaW51eCBTZWN1cml0eSBNb2R1bGUgKExTTSkKK2ZyYW1ld29yazsgdGhpcyBtb2R1bGUgY291bGQgYmUgY29uZmlndXJlZCB0byBnaXZlIHNwZWNpZmljIGFwcGxpY2F0aW9ucworYWNjZXNzIHRvIHRoZSByZWFsdGltZSBzY2hlZHVsZXIuICBUaGlzIG1vZHVsZSB3YXMgaW1wbGVtZW50ZWQgYW5kIHNlbnQgdG8KK3RoZSBsaW51eC1rZXJuZWwgbWFpbGluZyBsaXN0LCB3aGVyZSBpdCBpbW1lZGlhdGVseSByYW4gaW50byBwcm9ibGVtcy4KKworVG8gdGhlIGF1ZGlvIGRldmVsb3BlcnMsIHRoaXMgc2VjdXJpdHkgbW9kdWxlIHdhcyBzdWZmaWNpZW50IHRvIHNvbHZlIHRoZWlyCitpbW1lZGlhdGUgcHJvYmxlbS4gIFRvIHRoZSB3aWRlciBrZXJuZWwgY29tbXVuaXR5LCB0aG91Z2gsIGl0IHdhcyBzZWVuIGFzIGEKK21pc3VzZSBvZiB0aGUgTFNNIGZyYW1ld29yayAod2hpY2ggaXMgbm90IGludGVuZGVkIHRvIGNvbmZlciBwcml2aWxlZ2VzCitvbnRvIHByb2Nlc3NlcyB3aGljaCB0aGV5IHdvdWxkIG5vdCBvdGhlcndpc2UgaGF2ZSkgYW5kIGEgcmlzayB0byBzeXN0ZW0KK3N0YWJpbGl0eS4gIFRoZWlyIHByZWZlcnJlZCBzb2x1dGlvbnMgaW52b2x2ZWQgcmVhbHRpbWUgc2NoZWR1bGluZyBhY2Nlc3MKK3ZpYSB0aGUgcmxpbWl0IG1lY2hhbmlzbSBmb3IgdGhlIHNob3J0IHRlcm0sIGFuZCBvbmdvaW5nIGxhdGVuY3kgcmVkdWN0aW9uCit3b3JrIGluIHRoZSBsb25nIHRlcm0uCisKK1RoZSBhdWRpbyBjb21tdW5pdHksIGhvd2V2ZXIsIGNvdWxkIG5vdCBzZWUgcGFzdCB0aGUgcGFydGljdWxhciBzb2x1dGlvbgordGhleSBoYWQgaW1wbGVtZW50ZWQ7IHRoZXkgd2VyZSB1bndpbGxpbmcgdG8gYWNjZXB0IGFsdGVybmF0aXZlcy4gIFRoZQorcmVzdWx0aW5nIGRpc2FncmVlbWVudCBsZWZ0IHRob3NlIGRldmVsb3BlcnMgZmVlbGluZyBkaXNpbGx1c2lvbmVkIHdpdGggdGhlCitlbnRpcmUga2VybmVsIGRldmVsb3BtZW50IHByb2Nlc3M7IG9uZSBvZiB0aGVtIHdlbnQgYmFjayB0byBhbiBhdWRpbyBsaXN0CithbmQgcG9zdGVkIHRoaXM6CisKKwlUaGVyZSBhcmUgYSBudW1iZXIgb2YgdmVyeSBnb29kIExpbnV4IGtlcm5lbCBkZXZlbG9wZXJzLCBidXQgdGhleQorCXRlbmQgdG8gZ2V0IG91dHNob3V0ZWQgYnkgYSBsYXJnZSBjcm93ZCBvZiBhcnJvZ2FudCBmb29scy4gVHJ5aW5nCisJdG8gY29tbXVuaWNhdGUgdXNlciByZXF1aXJlbWVudHMgdG8gdGhlc2UgcGVvcGxlIGlzIGEgd2FzdGUgb2YKKwl0aW1lLiBUaGV5IGFyZSBtdWNoIHRvbyAiaW50ZWxsaWdlbnQiIHRvIGxpc3RlbiB0byBsZXNzZXIgbW9ydGFscy4KKworKGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzEzMTc3Ni8pLgorCitUaGUgcmVhbGl0eSBvZiB0aGUgc2l0dWF0aW9uIHdhcyBkaWZmZXJlbnQ7IHRoZSBrZXJuZWwgZGV2ZWxvcGVycyB3ZXJlIGZhcgorbW9yZSBjb25jZXJuZWQgYWJvdXQgc3lzdGVtIHN0YWJpbGl0eSwgbG9uZy10ZXJtIG1haW50ZW5hbmNlLCBhbmQgZmluZGluZwordGhlIHJpZ2h0IHNvbHV0aW9uIHRvIHRoZSBwcm9ibGVtIHRoYW4gdGhleSB3ZXJlIHdpdGggYSBzcGVjaWZpYyBtb2R1bGUuCitUaGUgbW9yYWwgb2YgdGhlIHN0b3J5IGlzIHRvIGZvY3VzIG9uIHRoZSBwcm9ibGVtIC0gbm90IGEgc3BlY2lmaWMgc29sdXRpb24KKy0gYW5kIHRvIGRpc2N1c3MgaXQgd2l0aCB0aGUgZGV2ZWxvcG1lbnQgY29tbXVuaXR5IGJlZm9yZSBpbnZlc3RpbmcgaW4gdGhlCitjcmVhdGlvbiBvZiBhIGJvZHkgb2YgY29kZS4KKworU28sIHdoZW4gY29udGVtcGxhdGluZyBhIGtlcm5lbCBkZXZlbG9wbWVudCBwcm9qZWN0LCBvbmUgc2hvdWxkIG9idGFpbgorYW5zd2VycyB0byBhIHNob3J0IHNldCBvZiBxdWVzdGlvbnM6CisKKyAtIFdoYXQsIGV4YWN0bHksIGlzIHRoZSBwcm9ibGVtIHdoaWNoIG5lZWRzIHRvIGJlIHNvbHZlZD8KKworIC0gV2hvIGFyZSB0aGUgdXNlcnMgYWZmZWN0ZWQgYnkgdGhpcyBwcm9ibGVtPyAgV2hpY2ggdXNlIGNhc2VzIHNob3VsZCB0aGUKKyAgIHNvbHV0aW9uIGFkZHJlc3M/CisKKyAtIEhvdyBkb2VzIHRoZSBrZXJuZWwgZmFsbCBzaG9ydCBpbiBhZGRyZXNzaW5nIHRoYXQgcHJvYmxlbSBub3c/CisKK09ubHkgdGhlbiBkb2VzIGl0IG1ha2Ugc2Vuc2UgdG8gc3RhcnQgY29uc2lkZXJpbmcgcG9zc2libGUgc29sdXRpb25zLgorCisKKzMuMjogRUFSTFkgRElTQ1VTU0lPTgorCitXaGVuIHBsYW5uaW5nIGEga2VybmVsIGRldmVsb3BtZW50IHByb2plY3QsIGl0IG1ha2VzIGdyZWF0IHNlbnNlIHRvIGhvbGQKK2Rpc2N1c3Npb25zIHdpdGggdGhlIGNvbW11bml0eSBiZWZvcmUgbGF1bmNoaW5nIGludG8gaW1wbGVtZW50YXRpb24uICBFYXJseQorY29tbXVuaWNhdGlvbiBjYW4gc2F2ZSB0aW1lIGFuZCB0cm91YmxlIGluIGEgbnVtYmVyIG9mIHdheXM6CisKKyAtIEl0IG1heSB3ZWxsIGJlIHRoYXQgdGhlIHByb2JsZW0gaXMgYWRkcmVzc2VkIGJ5IHRoZSBrZXJuZWwgaW4gd2F5cyB3aGljaAorICAgeW91IGhhdmUgbm90IHVuZGVyc3Rvb2QuICBUaGUgTGludXgga2VybmVsIGlzIGxhcmdlIGFuZCBoYXMgYSBudW1iZXIgb2YKKyAgIGZlYXR1cmVzIGFuZCBjYXBhYmlsaXRpZXMgd2hpY2ggYXJlIG5vdCBpbW1lZGlhdGVseSBvYnZpb3VzLiAgTm90IGFsbAorICAga2VybmVsIGNhcGFiaWxpdGllcyBhcmUgZG9jdW1lbnRlZCBhcyB3ZWxsIGFzIG9uZSBtaWdodCBsaWtlLCBhbmQgaXQgaXMKKyAgIGVhc3kgdG8gbWlzcyB0aGluZ3MuICBZb3VyIGF1dGhvciBoYXMgc2VlbiB0aGUgcG9zdGluZyBvZiBhIGNvbXBsZXRlCisgICBkcml2ZXIgd2hpY2ggZHVwbGljYXRlZCBhbiBleGlzdGluZyBkcml2ZXIgdGhhdCB0aGUgbmV3IGF1dGhvciBoYWQgYmVlbgorICAgdW5hd2FyZSBvZi4gIENvZGUgd2hpY2ggcmVpbnZlbnRzIGV4aXN0aW5nIHdoZWVscyBpcyBub3Qgb25seSB3YXN0ZWZ1bDsKKyAgIGl0IHdpbGwgYWxzbyBub3QgYmUgYWNjZXB0ZWQgaW50byB0aGUgbWFpbmxpbmUga2VybmVsLgorCisgLSBUaGVyZSBtYXkgYmUgZWxlbWVudHMgb2YgdGhlIHByb3Bvc2VkIHNvbHV0aW9uIHdoaWNoIHdpbGwgbm90IGJlCisgICBhY2NlcHRhYmxlIGZvciBtYWlubGluZSBtZXJnaW5nLiAgSXQgaXMgYmV0dGVyIHRvIGZpbmQgb3V0IGFib3V0CisgICBwcm9ibGVtcyBsaWtlIHRoaXMgYmVmb3JlIHdyaXRpbmcgdGhlIGNvZGUuCisKKyAtIEl0J3MgZW50aXJlbHkgcG9zc2libGUgdGhhdCBvdGhlciBkZXZlbG9wZXJzIGhhdmUgdGhvdWdodCBhYm91dCB0aGUKKyAgIHByb2JsZW07IHRoZXkgbWF5IGhhdmUgaWRlYXMgZm9yIGEgYmV0dGVyIHNvbHV0aW9uLCBhbmQgbWF5IGJlIHdpbGxpbmcKKyAgIHRvIGhlbHAgaW4gdGhlIGNyZWF0aW9uIG9mIHRoYXQgc29sdXRpb24uCisKK1llYXJzIG9mIGV4cGVyaWVuY2Ugd2l0aCB0aGUga2VybmVsIGRldmVsb3BtZW50IGNvbW11bml0eSBoYXZlIHRhdWdodCBhCitjbGVhciBsZXNzb246IGtlcm5lbCBjb2RlIHdoaWNoIGlzIGRlc2lnbmVkIGFuZCBkZXZlbG9wZWQgYmVoaW5kIGNsb3NlZAorZG9vcnMgaW52YXJpYWJseSBoYXMgcHJvYmxlbXMgd2hpY2ggYXJlIG9ubHkgcmV2ZWFsZWQgd2hlbiB0aGUgY29kZSBpcworcmVsZWFzZWQgaW50byB0aGUgY29tbXVuaXR5LiAgU29tZXRpbWVzIHRoZXNlIHByb2JsZW1zIGFyZSBzZXZlcmUsCityZXF1aXJpbmcgbW9udGhzIG9yIHllYXJzIG9mIGVmZm9ydCBiZWZvcmUgdGhlIGNvZGUgY2FuIGJlIGJyb3VnaHQgdXAgdG8KK3RoZSBrZXJuZWwgY29tbXVuaXR5J3Mgc3RhbmRhcmRzLiAgU29tZSBleGFtcGxlcyBpbmNsdWRlOgorCisgLSBUaGUgRGV2aWNlc2NhcGUgbmV0d29yayBzdGFjayB3YXMgZGVzaWduZWQgYW5kIGltcGxlbWVudGVkIGZvcgorICAgc2luZ2xlLXByb2Nlc3NvciBzeXN0ZW1zLiAgSXQgY291bGQgbm90IGJlIG1lcmdlZCBpbnRvIHRoZSBtYWlubGluZQorICAgdW50aWwgaXQgd2FzIG1hZGUgc3VpdGFibGUgZm9yIG11bHRpcHJvY2Vzc29yIHN5c3RlbXMuICBSZXRyb2ZpdHRpbmcKKyAgIGxvY2tpbmcgYW5kIHN1Y2ggaW50byBjb2RlIGlzIGEgZGlmZmljdWx0IHRhc2s7IGFzIGEgcmVzdWx0LCB0aGUgbWVyZ2luZworICAgb2YgdGhpcyBjb2RlIChub3cgY2FsbGVkIG1hYzgwMjExKSB3YXMgZGVsYXllZCBmb3Igb3ZlciBhIHllYXIuCisKKyAtIFRoZSBSZWlzZXI0IGZpbGVzeXN0ZW0gaW5jbHVkZWQgYSBudW1iZXIgb2YgY2FwYWJpbGl0aWVzIHdoaWNoLCBpbiB0aGUKKyAgIGNvcmUga2VybmVsIGRldmVsb3BlcnMnIG9waW5pb24sIHNob3VsZCBoYXZlIGJlZW4gaW1wbGVtZW50ZWQgaW4gdGhlCisgICB2aXJ0dWFsIGZpbGVzeXN0ZW0gbGF5ZXIgaW5zdGVhZC4gIEl0IGFsc28gaW5jbHVkZWQgZmVhdHVyZXMgd2hpY2ggY291bGQKKyAgIG5vdCBlYXNpbHkgYmUgaW1wbGVtZW50ZWQgd2l0aG91dCBleHBvc2luZyB0aGUgc3lzdGVtIHRvIHVzZXItY2F1c2VkCisgICBkZWFkbG9ja3MuICBUaGUgbGF0ZSByZXZlbGF0aW9uIG9mIHRoZXNlIHByb2JsZW1zIC0gYW5kIHJlZnVzYWwgdG8KKyAgIGFkZHJlc3Mgc29tZSBvZiB0aGVtIC0gaGFzIGNhdXNlZCBSZWlzZXI0IHRvIHN0YXkgb3V0IG9mIHRoZSBtYWlubGluZQorICAga2VybmVsLgorCisgLSBUaGUgQXBwQXJtb3Igc2VjdXJpdHkgbW9kdWxlIG1hZGUgdXNlIG9mIGludGVybmFsIHZpcnR1YWwgZmlsZXN5c3RlbQorICAgZGF0YSBzdHJ1Y3R1cmVzIGluIHdheXMgd2hpY2ggd2VyZSBjb25zaWRlcmVkIHRvIGJlIHVuc2FmZSBhbmQKKyAgIHVucmVsaWFibGUuICBUaGlzIGNvbmNlcm4gKGFtb25nIG90aGVycykga2VwdCBBcHBBcm1vciBvdXQgb2YgdGhlCisgICBtYWlubGluZSBmb3IgeWVhcnMuCisKK0luIGVhY2ggb2YgdGhlc2UgY2FzZXMsIGEgZ3JlYXQgZGVhbCBvZiBwYWluIGFuZCBleHRyYSB3b3JrIGNvdWxkIGhhdmUgYmVlbgorYXZvaWRlZCB3aXRoIHNvbWUgZWFybHkgZGlzY3Vzc2lvbiB3aXRoIHRoZSBrZXJuZWwgZGV2ZWxvcGVycy4KKworCiszLjM6IFdITyBETyBZT1UgVEFMSyBUTz8KKworV2hlbiBkZXZlbG9wZXJzIGRlY2lkZSB0byB0YWtlIHRoZWlyIHBsYW5zIHB1YmxpYywgdGhlIG5leHQgcXVlc3Rpb24gd2lsbAorYmU6IHdoZXJlIGRvIHdlIHN0YXJ0PyAgVGhlIGFuc3dlciBpcyB0byBmaW5kIHRoZSByaWdodCBtYWlsaW5nIGxpc3QocykgYW5kCit0aGUgcmlnaHQgbWFpbnRhaW5lci4gIEZvciBtYWlsaW5nIGxpc3RzLCB0aGUgYmVzdCBhcHByb2FjaCBpcyB0byBsb29rIGluCit0aGUgTUFJTlRBSU5FUlMgZmlsZSBmb3IgYSByZWxldmFudCBwbGFjZSB0byBwb3N0LiAgSWYgdGhlcmUgaXMgYSBzdWl0YWJsZQorc3Vic3lzdGVtIGxpc3QsIHBvc3RpbmcgdGhlcmUgaXMgb2Z0ZW4gcHJlZmVyYWJsZSB0byBwb3N0aW5nIG9uCitsaW51eC1rZXJuZWw7IHlvdSBhcmUgbW9yZSBsaWtlbHkgdG8gcmVhY2ggZGV2ZWxvcGVycyB3aXRoIGV4cGVydGlzZSBpbiB0aGUKK3JlbGV2YW50IHN1YnN5c3RlbSBhbmQgdGhlIGVudmlyb25tZW50IG1heSBiZSBtb3JlIHN1cHBvcnRpdmUuCisKK0ZpbmRpbmcgbWFpbnRhaW5lcnMgY2FuIGJlIGEgYml0IGhhcmRlci4gIEFnYWluLCB0aGUgTUFJTlRBSU5FUlMgZmlsZSBpcwordGhlIHBsYWNlIHRvIHN0YXJ0LiAgVGhhdCBmaWxlIHRlbmRzIHRvIG5vdCBhbHdheXMgYmUgdXAgdG8gZGF0ZSwgdGhvdWdoLAorYW5kIG5vdCBhbGwgc3Vic3lzdGVtcyBhcmUgcmVwcmVzZW50ZWQgdGhlcmUuICBUaGUgcGVyc29uIGxpc3RlZCBpbiB0aGUKK01BSU5UQUlORVJTIGZpbGUgbWF5LCBpbiBmYWN0LCBub3QgYmUgdGhlIHBlcnNvbiB3aG8gaXMgYWN0dWFsbHkgYWN0aW5nIGluCit0aGF0IHJvbGUgY3VycmVudGx5LiAgU28sIHdoZW4gdGhlcmUgaXMgZG91YnQgYWJvdXQgd2hvIHRvIGNvbnRhY3QsIGEKK3VzZWZ1bCB0cmljayBpcyB0byB1c2UgZ2l0IChhbmQgImdpdCBsb2ciIGluIHBhcnRpY3VsYXIpIHRvIHNlZSB3aG8gaXMKK2N1cnJlbnRseSBhY3RpdmUgd2l0aGluIHRoZSBzdWJzeXN0ZW0gb2YgaW50ZXJlc3QuICBMb29rIGF0IHdobyBpcyB3cml0aW5nCitwYXRjaGVzLCBhbmQgd2hvLCBpZiBhbnlib2R5LCBpcyBhdHRhY2hpbmcgU2lnbmVkLW9mZi1ieSBsaW5lcyB0byB0aG9zZQorcGF0Y2hlcy4gIFRob3NlIGFyZSB0aGUgcGVvcGxlIHdobyB3aWxsIGJlIGJlc3QgcGxhY2VkIHRvIGhlbHAgd2l0aCBhIG5ldworZGV2ZWxvcG1lbnQgcHJvamVjdC4KKworVGhlIHRhc2sgb2YgZmluZGluZyB0aGUgcmlnaHQgbWFpbnRhaW5lciBpcyBzb21ldGltZXMgY2hhbGxlbmdpbmcgZW5vdWdoCit0aGF0IHRoZSBrZXJuZWwgZGV2ZWxvcGVycyBoYXZlIGFkZGVkIGEgc2NyaXB0IHRvIGVhc2UgdGhlIHByb2Nlc3M6CisKKwkuLi4vc2NyaXB0cy9nZXRfbWFpbnRhaW5lci5wbAorCitUaGlzIHNjcmlwdCB3aWxsIHJldHVybiB0aGUgY3VycmVudCBtYWludGFpbmVyKHMpIGZvciBhIGdpdmVuIGZpbGUgb3IKK2RpcmVjdG9yeSB3aGVuIGdpdmVuIHRoZSAiLWYiIG9wdGlvbi4gIElmIHBhc3NlZCBhIHBhdGNoIG9uIHRoZQorY29tbWFuZCBsaW5lLCBpdCB3aWxsIGxpc3QgdGhlIG1haW50YWluZXJzIHdobyBzaG91bGQgcHJvYmFibHkgcmVjZWl2ZQorY29waWVzIG9mIHRoZSBwYXRjaC4gIFRoZXJlIGFyZSBhIG51bWJlciBvZiBvcHRpb25zIHJlZ3VsYXRpbmcgaG93IGhhcmQKK2dldF9tYWludGFpbmVyLnBsIHdpbGwgc2VhcmNoIGZvciBtYWludGFpbmVyczsgcGxlYXNlIGJlIGNhcmVmdWwgYWJvdXQKK3VzaW5nIHRoZSBtb3JlIGFnZ3Jlc3NpdmUgb3B0aW9ucyBhcyB5b3UgbWF5IGVuZCB1cCBpbmNsdWRpbmcgZGV2ZWxvcGVycword2hvIGhhdmUgbm8gcmVhbCBpbnRlcmVzdCBpbiB0aGUgY29kZSB5b3UgYXJlIG1vZGlmeWluZy4KKworSWYgYWxsIGVsc2UgZmFpbHMsIHRhbGtpbmcgdG8gQW5kcmV3IE1vcnRvbiBjYW4gYmUgYW4gZWZmZWN0aXZlIHdheSB0bwordHJhY2sgZG93biBhIG1haW50YWluZXIgZm9yIGEgc3BlY2lmaWMgcGllY2Ugb2YgY29kZS4KKworCiszLjQ6IFdIRU4gVE8gUE9TVD8KKworSWYgcG9zc2libGUsIHBvc3RpbmcgeW91ciBwbGFucyBkdXJpbmcgdGhlIGVhcmx5IHN0YWdlcyBjYW4gb25seSBiZQoraGVscGZ1bC4gIERlc2NyaWJlIHRoZSBwcm9ibGVtIGJlaW5nIHNvbHZlZCBhbmQgYW55IHBsYW5zIHRoYXQgaGF2ZSBiZWVuCittYWRlIG9uIGhvdyB0aGUgaW1wbGVtZW50YXRpb24gd2lsbCBiZSBkb25lLiAgQW55IGluZm9ybWF0aW9uIHlvdSBjYW4KK3Byb3ZpZGUgY2FuIGhlbHAgdGhlIGRldmVsb3BtZW50IGNvbW11bml0eSBwcm92aWRlIHVzZWZ1bCBpbnB1dCBvbiB0aGUKK3Byb2plY3QuCisKK09uZSBkaXNjb3VyYWdpbmcgdGhpbmcgd2hpY2ggY2FuIGhhcHBlbiBhdCB0aGlzIHN0YWdlIGlzIG5vdCBhIGhvc3RpbGUKK3JlYWN0aW9uLCBidXQsIGluc3RlYWQsIGxpdHRsZSBvciBubyByZWFjdGlvbiBhdCBhbGwuICBUaGUgc2FkIHRydXRoIG9mIHRoZQorbWF0dGVyIGlzICgxKSBrZXJuZWwgZGV2ZWxvcGVycyB0ZW5kIHRvIGJlIGJ1c3ksICgyKSB0aGVyZSBpcyBubyBzaG9ydGFnZQorb2YgcGVvcGxlIHdpdGggZ3JhbmQgcGxhbnMgYW5kIGxpdHRsZSBjb2RlIChvciBldmVuIHByb3NwZWN0IG9mIGNvZGUpIHRvCitiYWNrIHRoZW0gdXAsIGFuZCAoMykgbm9ib2R5IGlzIG9ibGlnYXRlZCB0byByZXZpZXcgb3IgY29tbWVudCBvbiBpZGVhcworcG9zdGVkIGJ5IG90aGVycy4gIEJleW9uZCB0aGF0LCBoaWdoLWxldmVsIGRlc2lnbnMgb2Z0ZW4gaGlkZSBwcm9ibGVtcword2hpY2ggYXJlIG9ubHkgcmV2aWV3ZWQgd2hlbiBzb21lYm9keSBhY3R1YWxseSB0cmllcyB0byBpbXBsZW1lbnQgdGhvc2UKK2Rlc2lnbnM7IGZvciB0aGF0IHJlYXNvbiwga2VybmVsIGRldmVsb3BlcnMgd291bGQgcmF0aGVyIHNlZSB0aGUgY29kZS4KKworSWYgYSByZXF1ZXN0LWZvci1jb21tZW50cyBwb3N0aW5nIHlpZWxkcyBsaXR0bGUgaW4gdGhlIHdheSBvZiBjb21tZW50cywgZG8KK25vdCBhc3N1bWUgdGhhdCBpdCBtZWFucyB0aGVyZSBpcyBubyBpbnRlcmVzdCBpbiB0aGUgcHJvamVjdC4KK1VuZm9ydHVuYXRlbHksIHlvdSBhbHNvIGNhbm5vdCBhc3N1bWUgdGhhdCB0aGVyZSBhcmUgbm8gcHJvYmxlbXMgd2l0aCB5b3VyCitpZGVhLiAgVGhlIGJlc3QgdGhpbmcgdG8gZG8gaW4gdGhpcyBzaXR1YXRpb24gaXMgdG8gcHJvY2VlZCwga2VlcGluZyB0aGUKK2NvbW11bml0eSBpbmZvcm1lZCBhcyB5b3UgZ28uCisKKworMy41OiBHRVRUSU5HIE9GRklDSUFMIEJVWS1JTgorCitJZiB5b3VyIHdvcmsgaXMgYmVpbmcgZG9uZSBpbiBhIGNvcnBvcmF0ZSBlbnZpcm9ubWVudCAtIGFzIG1vc3QgTGludXgKK2tlcm5lbCB3b3JrIGlzIC0geW91IG11c3QsIG9idmlvdXNseSwgaGF2ZSBwZXJtaXNzaW9uIGZyb20gc3VpdGFibHkKK2VtcG93ZXJlZCBtYW5hZ2VycyBiZWZvcmUgeW91IGNhbiBwb3N0IHlvdXIgY29tcGFueSdzIHBsYW5zIG9yIGNvZGUgdG8gYQorcHVibGljIG1haWxpbmcgbGlzdC4gIFRoZSBwb3N0aW5nIG9mIGNvZGUgd2hpY2ggaGFzIG5vdCBiZWVuIGNsZWFyZWQgZm9yCityZWxlYXNlIHVuZGVyIGEgR1BMLWNvbXBhdGlibGUgbGljZW5zZSBjYW4gYmUgZXNwZWNpYWxseSBwcm9ibGVtYXRpYzsgdGhlCitzb29uZXIgdGhhdCBhIGNvbXBhbnkncyBtYW5hZ2VtZW50IGFuZCBsZWdhbCBzdGFmZiBjYW4gYWdyZWUgb24gdGhlIHBvc3RpbmcKK29mIGEga2VybmVsIGRldmVsb3BtZW50IHByb2plY3QsIHRoZSBiZXR0ZXIgb2ZmIGV2ZXJ5Ym9keSBpbnZvbHZlZCB3aWxsIGJlLgorCitTb21lIHJlYWRlcnMgbWF5IGJlIHRoaW5raW5nIGF0IHRoaXMgcG9pbnQgdGhhdCB0aGVpciBrZXJuZWwgd29yayBpcworaW50ZW5kZWQgdG8gc3VwcG9ydCBhIHByb2R1Y3Qgd2hpY2ggZG9lcyBub3QgeWV0IGhhdmUgYW4gb2ZmaWNpYWxseQorYWNrbm93bGVkZ2VkIGV4aXN0ZW5jZS4gIFJldmVhbGluZyB0aGVpciBlbXBsb3llcidzIHBsYW5zIG9uIGEgcHVibGljCittYWlsaW5nIGxpc3QgbWF5IG5vdCBiZSBhIHZpYWJsZSBvcHRpb24uICBJbiBjYXNlcyBsaWtlIHRoaXMsIGl0IGlzIHdvcnRoCitjb25zaWRlcmluZyB3aGV0aGVyIHRoZSBzZWNyZWN5IGlzIHJlYWxseSBuZWNlc3Nhcnk7IHRoZXJlIGlzIG9mdGVuIG5vIHJlYWwKK25lZWQgdG8ga2VlcCBkZXZlbG9wbWVudCBwbGFucyBiZWhpbmQgY2xvc2VkIGRvb3JzLgorCitUaGF0IHNhaWQsIHRoZXJlIGFyZSBhbHNvIGNhc2VzIHdoZXJlIGEgY29tcGFueSBsZWdpdGltYXRlbHkgY2Fubm90CitkaXNjbG9zZSBpdHMgcGxhbnMgZWFybHkgaW4gdGhlIGRldmVsb3BtZW50IHByb2Nlc3MuICBDb21wYW5pZXMgd2l0aAorZXhwZXJpZW5jZWQga2VybmVsIGRldmVsb3BlcnMgbWF5IGNob29zZSB0byBwcm9jZWVkIGluIGFuIG9wZW4tbG9vcCBtYW5uZXIKK29uIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhleSB3aWxsIGJlIGFibGUgdG8gYXZvaWQgc2VyaW91cyBpbnRlZ3JhdGlvbgorcHJvYmxlbXMgbGF0ZXIuICBGb3IgY29tcGFuaWVzIHdpdGhvdXQgdGhhdCBzb3J0IG9mIGluLWhvdXNlIGV4cGVydGlzZSwgdGhlCitiZXN0IG9wdGlvbiBpcyBvZnRlbiB0byBoaXJlIGFuIG91dHNpZGUgZGV2ZWxvcGVyIHRvIHJldmlldyB0aGUgcGxhbnMgdW5kZXIKK2Egbm9uLWRpc2Nsb3N1cmUgYWdyZWVtZW50LiAgVGhlIExpbnV4IEZvdW5kYXRpb24gb3BlcmF0ZXMgYW4gTkRBIHByb2dyYW0KK2Rlc2lnbmVkIHRvIGhlbHAgd2l0aCB0aGlzIHNvcnQgb2Ygc2l0dWF0aW9uOyBtb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZAorYXQ6CisKKyAgICBodHRwOi8vd3d3LmxpbnV4Zm91bmRhdGlvbi5vcmcvZW4vTkRBX3Byb2dyYW0KKworVGhpcyBraW5kIG9mIHJldmlldyBpcyBvZnRlbiBlbm91Z2ggdG8gYXZvaWQgc2VyaW91cyBwcm9ibGVtcyBsYXRlciBvbgord2l0aG91dCByZXF1aXJpbmcgcHVibGljIGRpc2Nsb3N1cmUgb2YgdGhlIHByb2plY3QuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmVsb3BtZW50LXByb2Nlc3MvNC5Db2RpbmcgYi9Eb2N1bWVudGF0aW9uL2RldmVsb3BtZW50LXByb2Nlc3MvNC5Db2RpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNjYjZhNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2ZWxvcG1lbnQtcHJvY2Vzcy80LkNvZGluZwpAQCAtMCwwICsxLDM5OSBAQAorNDogR0VUVElORyBUSEUgQ09ERSBSSUdIVAorCitXaGlsZSB0aGVyZSBpcyBtdWNoIHRvIGJlIHNhaWQgZm9yIGEgc29saWQgYW5kIGNvbW11bml0eS1vcmllbnRlZCBkZXNpZ24KK3Byb2Nlc3MsIHRoZSBwcm9vZiBvZiBhbnkga2VybmVsIGRldmVsb3BtZW50IHByb2plY3QgaXMgaW4gdGhlIHJlc3VsdGluZworY29kZS4gIEl0IGlzIHRoZSBjb2RlIHdoaWNoIHdpbGwgYmUgZXhhbWluZWQgYnkgb3RoZXIgZGV2ZWxvcGVycyBhbmQgbWVyZ2VkCisob3Igbm90KSBpbnRvIHRoZSBtYWlubGluZSB0cmVlLiAgU28gaXQgaXMgdGhlIHF1YWxpdHkgb2YgdGhpcyBjb2RlIHdoaWNoCit3aWxsIGRldGVybWluZSB0aGUgdWx0aW1hdGUgc3VjY2VzcyBvZiB0aGUgcHJvamVjdC4KKworVGhpcyBzZWN0aW9uIHdpbGwgZXhhbWluZSB0aGUgY29kaW5nIHByb2Nlc3MuICBXZSdsbCBzdGFydCB3aXRoIGEgbG9vayBhdCBhCitudW1iZXIgb2Ygd2F5cyBpbiB3aGljaCBrZXJuZWwgZGV2ZWxvcGVycyBjYW4gZ28gd3JvbmcuICBUaGVuIHRoZSBmb2N1cword2lsbCBzaGlmdCB0b3dhcmQgZG9pbmcgdGhpbmdzIHJpZ2h0IGFuZCB0aGUgdG9vbHMgd2hpY2ggY2FuIGhlbHAgaW4gdGhhdAorcXVlc3QuCisKKworNC4xOiBQSVRGQUxMUworCisqIENvZGluZyBzdHlsZQorCitUaGUga2VybmVsIGhhcyBsb25nIGhhZCBhIHN0YW5kYXJkIGNvZGluZyBzdHlsZSwgZGVzY3JpYmVkIGluCitEb2N1bWVudGF0aW9uL0NvZGluZ1N0eWxlLiAgRm9yIG11Y2ggb2YgdGhhdCB0aW1lLCB0aGUgcG9saWNpZXMgZGVzY3JpYmVkCitpbiB0aGF0IGZpbGUgd2VyZSB0YWtlbiBhcyBiZWluZywgYXQgbW9zdCwgYWR2aXNvcnkuICBBcyBhIHJlc3VsdCwgdGhlcmUgaXMKK2Egc3Vic3RhbnRpYWwgYW1vdW50IG9mIGNvZGUgaW4gdGhlIGtlcm5lbCB3aGljaCBkb2VzIG5vdCBtZWV0IHRoZSBjb2RpbmcKK3N0eWxlIGd1aWRlbGluZXMuICBUaGUgcHJlc2VuY2Ugb2YgdGhhdCBjb2RlIGxlYWRzIHRvIHR3byBpbmRlcGVuZGVudAoraGF6YXJkcyBmb3Iga2VybmVsIGRldmVsb3BlcnMuCisKK1RoZSBmaXJzdCBvZiB0aGVzZSBpcyB0byBiZWxpZXZlIHRoYXQgdGhlIGtlcm5lbCBjb2Rpbmcgc3RhbmRhcmRzIGRvIG5vdAorbWF0dGVyIGFuZCBhcmUgbm90IGVuZm9yY2VkLiAgVGhlIHRydXRoIG9mIHRoZSBtYXR0ZXIgaXMgdGhhdCBhZGRpbmcgbmV3Citjb2RlIHRvIHRoZSBrZXJuZWwgaXMgdmVyeSBkaWZmaWN1bHQgaWYgdGhhdCBjb2RlIGlzIG5vdCBjb2RlZCBhY2NvcmRpbmcgdG8KK3RoZSBzdGFuZGFyZDsgbWFueSBkZXZlbG9wZXJzIHdpbGwgcmVxdWVzdCB0aGF0IHRoZSBjb2RlIGJlIHJlZm9ybWF0dGVkCitiZWZvcmUgdGhleSB3aWxsIGV2ZW4gcmV2aWV3IGl0LiAgQSBjb2RlIGJhc2UgYXMgbGFyZ2UgYXMgdGhlIGtlcm5lbAorcmVxdWlyZXMgc29tZSB1bmlmb3JtaXR5IG9mIGNvZGUgdG8gbWFrZSBpdCBwb3NzaWJsZSBmb3IgZGV2ZWxvcGVycyB0bworcXVpY2tseSB1bmRlcnN0YW5kIGFueSBwYXJ0IG9mIGl0LiAgU28gdGhlcmUgaXMgbm8gbG9uZ2VyIHJvb20gZm9yCitzdHJhbmdlbHktZm9ybWF0dGVkIGNvZGUuCisKK09jY2FzaW9uYWxseSwgdGhlIGtlcm5lbCdzIGNvZGluZyBzdHlsZSB3aWxsIHJ1biBpbnRvIGNvbmZsaWN0IHdpdGggYW4KK2VtcGxveWVyJ3MgbWFuZGF0ZWQgc3R5bGUuICBJbiBzdWNoIGNhc2VzLCB0aGUga2VybmVsJ3Mgc3R5bGUgd2lsbCBoYXZlIHRvCit3aW4gYmVmb3JlIHRoZSBjb2RlIGNhbiBiZSBtZXJnZWQuICBQdXR0aW5nIGNvZGUgaW50byB0aGUga2VybmVsIG1lYW5zCitnaXZpbmcgdXAgYSBkZWdyZWUgb2YgY29udHJvbCBpbiBhIG51bWJlciBvZiB3YXlzIC0gaW5jbHVkaW5nIGNvbnRyb2wgb3ZlcgoraG93IHRoZSBjb2RlIGlzIGZvcm1hdHRlZC4KKworVGhlIG90aGVyIHRyYXAgaXMgdG8gYXNzdW1lIHRoYXQgY29kZSB3aGljaCBpcyBhbHJlYWR5IGluIHRoZSBrZXJuZWwgaXMKK3VyZ2VudGx5IGluIG5lZWQgb2YgY29kaW5nIHN0eWxlIGZpeGVzLiAgRGV2ZWxvcGVycyBtYXkgc3RhcnQgdG8gZ2VuZXJhdGUKK3JlZm9ybWF0dGluZyBwYXRjaGVzIGFzIGEgd2F5IG9mIGdhaW5pbmcgZmFtaWxpYXJpdHkgd2l0aCB0aGUgcHJvY2Vzcywgb3IKK2FzIGEgd2F5IG9mIGdldHRpbmcgdGhlaXIgbmFtZSBpbnRvIHRoZSBrZXJuZWwgY2hhbmdlbG9ncyAtIG9yIGJvdGguICBCdXQKK3B1cmUgY29kaW5nIHN0eWxlIGZpeGVzIGFyZSBzZWVuIGFzIG5vaXNlIGJ5IHRoZSBkZXZlbG9wbWVudCBjb21tdW5pdHk7Cit0aGV5IHRlbmQgdG8gZ2V0IGEgY2hpbGx5IHJlY2VwdGlvbi4gIFNvIHRoaXMgdHlwZSBvZiBwYXRjaCBpcyBiZXN0Cithdm9pZGVkLiAgSXQgaXMgbmF0dXJhbCB0byBmaXggdGhlIHN0eWxlIG9mIGEgcGllY2Ugb2YgY29kZSB3aGlsZSB3b3JraW5nCitvbiBpdCBmb3Igb3RoZXIgcmVhc29ucywgYnV0IGNvZGluZyBzdHlsZSBjaGFuZ2VzIHNob3VsZCBub3QgYmUgbWFkZSBmb3IKK3RoZWlyIG93biBzYWtlLgorCitUaGUgY29kaW5nIHN0eWxlIGRvY3VtZW50IGFsc28gc2hvdWxkIG5vdCBiZSByZWFkIGFzIGFuIGFic29sdXRlIGxhdyB3aGljaAorY2FuIG5ldmVyIGJlIHRyYW5zZ3Jlc3NlZC4gIElmIHRoZXJlIGlzIGEgZ29vZCByZWFzb24gdG8gZ28gYWdhaW5zdCB0aGUKK3N0eWxlIChhIGxpbmUgd2hpY2ggYmVjb21lcyBmYXIgbGVzcyByZWFkYWJsZSBpZiBzcGxpdCB0byBmaXQgd2l0aGluIHRoZQorODAtY29sdW1uIGxpbWl0LCBmb3IgZXhhbXBsZSksIGp1c3QgZG8gaXQuCisKKworKiBBYnN0cmFjdGlvbiBsYXllcnMKKworQ29tcHV0ZXIgU2NpZW5jZSBwcm9mZXNzb3JzIHRlYWNoIHN0dWRlbnRzIHRvIG1ha2UgZXh0ZW5zaXZlIHVzZSBvZgorYWJzdHJhY3Rpb24gbGF5ZXJzIGluIHRoZSBuYW1lIG9mIGZsZXhpYmlsaXR5IGFuZCBpbmZvcm1hdGlvbiBoaWRpbmcuCitDZXJ0YWlubHkgdGhlIGtlcm5lbCBtYWtlcyBleHRlbnNpdmUgdXNlIG9mIGFic3RyYWN0aW9uOyBubyBwcm9qZWN0CitpbnZvbHZpbmcgc2V2ZXJhbCBtaWxsaW9uIGxpbmVzIG9mIGNvZGUgY291bGQgZG8gb3RoZXJ3aXNlIGFuZCBzdXJ2aXZlLgorQnV0IGV4cGVyaWVuY2UgaGFzIHNob3duIHRoYXQgZXhjZXNzaXZlIG9yIHByZW1hdHVyZSBhYnN0cmFjdGlvbiBjYW4gYmUKK2p1c3QgYXMgaGFybWZ1bCBhcyBwcmVtYXR1cmUgb3B0aW1pemF0aW9uLiAgQWJzdHJhY3Rpb24gc2hvdWxkIGJlIHVzZWQgdG8KK3RoZSBsZXZlbCByZXF1aXJlZCBhbmQgbm8gZnVydGhlci4KKworQXQgYSBzaW1wbGUgbGV2ZWwsIGNvbnNpZGVyIGEgZnVuY3Rpb24gd2hpY2ggaGFzIGFuIGFyZ3VtZW50IHdoaWNoIGlzCithbHdheXMgcGFzc2VkIGFzIHplcm8gYnkgYWxsIGNhbGxlcnMuICBPbmUgY291bGQgcmV0YWluIHRoYXQgYXJndW1lbnQganVzdAoraW4gY2FzZSBzb21lYm9keSBldmVudHVhbGx5IG5lZWRzIHRvIHVzZSB0aGUgZXh0cmEgZmxleGliaWxpdHkgdGhhdCBpdAorcHJvdmlkZXMuICBCeSB0aGF0IHRpbWUsIHRob3VnaCwgY2hhbmNlcyBhcmUgZ29vZCB0aGF0IHRoZSBjb2RlIHdoaWNoCitpbXBsZW1lbnRzIHRoaXMgZXh0cmEgYXJndW1lbnQgaGFzIGJlZW4gYnJva2VuIGluIHNvbWUgc3VidGxlIHdheSB3aGljaCB3YXMKK25ldmVyIG5vdGljZWQgLSBiZWNhdXNlIGl0IGhhcyBuZXZlciBiZWVuIHVzZWQuICBPciwgd2hlbiB0aGUgbmVlZCBmb3IKK2V4dHJhIGZsZXhpYmlsaXR5IGFyaXNlcywgaXQgZG9lcyBub3QgZG8gc28gaW4gYSB3YXkgd2hpY2ggbWF0Y2hlcyB0aGUKK3Byb2dyYW1tZXIncyBlYXJseSBleHBlY3RhdGlvbi4gIEtlcm5lbCBkZXZlbG9wZXJzIHdpbGwgcm91dGluZWx5IHN1Ym1pdAorcGF0Y2hlcyB0byByZW1vdmUgdW51c2VkIGFyZ3VtZW50czsgdGhleSBzaG91bGQsIGluIGdlbmVyYWwsIG5vdCBiZSBhZGRlZAoraW4gdGhlIGZpcnN0IHBsYWNlLgorCitBYnN0cmFjdGlvbiBsYXllcnMgd2hpY2ggaGlkZSBhY2Nlc3MgdG8gaGFyZHdhcmUgLSBvZnRlbiB0byBhbGxvdyB0aGUgYnVsaworb2YgYSBkcml2ZXIgdG8gYmUgdXNlZCB3aXRoIG11bHRpcGxlIG9wZXJhdGluZyBzeXN0ZW1zIC0gYXJlIGVzcGVjaWFsbHkKK2Zyb3duZWQgdXBvbi4gIFN1Y2ggbGF5ZXJzIG9ic2N1cmUgdGhlIGNvZGUgYW5kIG1heSBpbXBvc2UgYSBwZXJmb3JtYW5jZQorcGVuYWx0eTsgdGhleSBkbyBub3QgYmVsb25nIGluIHRoZSBMaW51eCBrZXJuZWwuCisKK09uIHRoZSBvdGhlciBoYW5kLCBpZiB5b3UgZmluZCB5b3Vyc2VsZiBjb3B5aW5nIHNpZ25pZmljYW50IGFtb3VudHMgb2YgY29kZQorZnJvbSBhbm90aGVyIGtlcm5lbCBzdWJzeXN0ZW0sIGl0IGlzIHRpbWUgdG8gYXNrIHdoZXRoZXIgaXQgd291bGQsIGluIGZhY3QsCittYWtlIHNlbnNlIHRvIHB1bGwgb3V0IHNvbWUgb2YgdGhhdCBjb2RlIGludG8gYSBzZXBhcmF0ZSBsaWJyYXJ5IG9yIHRvCitpbXBsZW1lbnQgdGhhdCBmdW5jdGlvbmFsaXR5IGF0IGEgaGlnaGVyIGxldmVsLiAgVGhlcmUgaXMgbm8gdmFsdWUgaW4KK3JlcGxpY2F0aW5nIHRoZSBzYW1lIGNvZGUgdGhyb3VnaG91dCB0aGUga2VybmVsLgorCisKKyogI2lmZGVmIGFuZCBwcmVwcm9jZXNzb3IgdXNlIGluIGdlbmVyYWwKKworVGhlIEMgcHJlcHJvY2Vzc29yIHNlZW1zIHRvIHByZXNlbnQgYSBwb3dlcmZ1bCB0ZW1wdGF0aW9uIHRvIHNvbWUgQworcHJvZ3JhbW1lcnMsIHdobyBzZWUgaXQgYXMgYSB3YXkgdG8gZWZmaWNpZW50bHkgZW5jb2RlIGEgZ3JlYXQgZGVhbCBvZgorZmxleGliaWxpdHkgaW50byBhIHNvdXJjZSBmaWxlLiAgQnV0IHRoZSBwcmVwcm9jZXNzb3IgaXMgbm90IEMsIGFuZCBoZWF2eQordXNlIG9mIGl0IHJlc3VsdHMgaW4gY29kZSB3aGljaCBpcyBtdWNoIGhhcmRlciBmb3Igb3RoZXJzIHRvIHJlYWQgYW5kCitoYXJkZXIgZm9yIHRoZSBjb21waWxlciB0byBjaGVjayBmb3IgY29ycmVjdG5lc3MuICBIZWF2eSBwcmVwcm9jZXNzb3IgdXNlCitpcyBhbG1vc3QgYWx3YXlzIGEgc2lnbiBvZiBjb2RlIHdoaWNoIG5lZWRzIHNvbWUgY2xlYW51cCB3b3JrLgorCitDb25kaXRpb25hbCBjb21waWxhdGlvbiB3aXRoICNpZmRlZiBpcywgaW5kZWVkLCBhIHBvd2VyZnVsIGZlYXR1cmUsIGFuZCBpdAoraXMgdXNlZCB3aXRoaW4gdGhlIGtlcm5lbC4gIEJ1dCB0aGVyZSBpcyBsaXR0bGUgZGVzaXJlIHRvIHNlZSBjb2RlIHdoaWNoIGlzCitzcHJpbmtsZWQgbGliZXJhbGx5IHdpdGggI2lmZGVmIGJsb2Nrcy4gIEFzIGEgZ2VuZXJhbCBydWxlLCAjaWZkZWYgdXNlCitzaG91bGQgYmUgY29uZmluZWQgdG8gaGVhZGVyIGZpbGVzIHdoZW5ldmVyIHBvc3NpYmxlLgorQ29uZGl0aW9uYWxseS1jb21waWxlZCBjb2RlIGNhbiBiZSBjb25maW5lZCB0byBmdW5jdGlvbnMgd2hpY2gsIGlmIHRoZSBjb2RlCitpcyBub3QgdG8gYmUgcHJlc2VudCwgc2ltcGx5IGJlY29tZSBlbXB0eS4gIFRoZSBjb21waWxlciB3aWxsIHRoZW4gcXVpZXRseQorb3B0aW1pemUgb3V0IHRoZSBjYWxsIHRvIHRoZSBlbXB0eSBmdW5jdGlvbi4gIFRoZSByZXN1bHQgaXMgZmFyIGNsZWFuZXIKK2NvZGUgd2hpY2ggaXMgZWFzaWVyIHRvIGZvbGxvdy4KKworQyBwcmVwcm9jZXNzb3IgbWFjcm9zIHByZXNlbnQgYSBudW1iZXIgb2YgaGF6YXJkcywgaW5jbHVkaW5nIHBvc3NpYmxlCittdWx0aXBsZSBldmFsdWF0aW9uIG9mIGV4cHJlc3Npb25zIHdpdGggc2lkZSBlZmZlY3RzIGFuZCBubyB0eXBlIHNhZmV0eS4KK0lmIHlvdSBhcmUgdGVtcHRlZCB0byBkZWZpbmUgYSBtYWNybywgY29uc2lkZXIgY3JlYXRpbmcgYW4gaW5saW5lIGZ1bmN0aW9uCitpbnN0ZWFkLiAgVGhlIGNvZGUgd2hpY2ggcmVzdWx0cyB3aWxsIGJlIHRoZSBzYW1lLCBidXQgaW5saW5lIGZ1bmN0aW9ucyBhcmUKK2Vhc2llciB0byByZWFkLCBkbyBub3QgZXZhbHVhdGUgdGhlaXIgYXJndW1lbnRzIG11bHRpcGxlIHRpbWVzLCBhbmQgYWxsb3cKK3RoZSBjb21waWxlciB0byBwZXJmb3JtIHR5cGUgY2hlY2tpbmcgb24gdGhlIGFyZ3VtZW50cyBhbmQgcmV0dXJuIHZhbHVlLgorCisKKyogSW5saW5lIGZ1bmN0aW9ucworCitJbmxpbmUgZnVuY3Rpb25zIHByZXNlbnQgYSBoYXphcmQgb2YgdGhlaXIgb3duLCB0aG91Z2guICBQcm9ncmFtbWVycyBjYW4KK2JlY29tZSBlbmFtb3JlZCBvZiB0aGUgcGVyY2VpdmVkIGVmZmljaWVuY3kgaW5oZXJlbnQgaW4gYXZvaWRpbmcgYSBmdW5jdGlvbgorY2FsbCBhbmQgZmlsbCBhIHNvdXJjZSBmaWxlIHdpdGggaW5saW5lIGZ1bmN0aW9ucy4gIFRob3NlIGZ1bmN0aW9ucywKK2hvd2V2ZXIsIGNhbiBhY3R1YWxseSByZWR1Y2UgcGVyZm9ybWFuY2UuICBTaW5jZSB0aGVpciBjb2RlIGlzIHJlcGxpY2F0ZWQKK2F0IGVhY2ggY2FsbCBzaXRlLCB0aGV5IGVuZCB1cCBibG9hdGluZyB0aGUgc2l6ZSBvZiB0aGUgY29tcGlsZWQga2VybmVsLgorVGhhdCwgaW4gdHVybiwgY3JlYXRlcyBwcmVzc3VyZSBvbiB0aGUgcHJvY2Vzc29yJ3MgbWVtb3J5IGNhY2hlcywgd2hpY2ggY2FuCitzbG93IGV4ZWN1dGlvbiBkcmFtYXRpY2FsbHkuICBJbmxpbmUgZnVuY3Rpb25zLCBhcyBhIHJ1bGUsIHNob3VsZCBiZSBxdWl0ZQorc21hbGwgYW5kIHJlbGF0aXZlbHkgcmFyZS4gIFRoZSBjb3N0IG9mIGEgZnVuY3Rpb24gY2FsbCwgYWZ0ZXIgYWxsLCBpcyBub3QKK3RoYXQgaGlnaDsgdGhlIGNyZWF0aW9uIG9mIGxhcmdlIG51bWJlcnMgb2YgaW5saW5lIGZ1bmN0aW9ucyBpcyBhIGNsYXNzaWMKK2V4YW1wbGUgb2YgcHJlbWF0dXJlIG9wdGltaXphdGlvbi4KKworSW4gZ2VuZXJhbCwga2VybmVsIHByb2dyYW1tZXJzIGlnbm9yZSBjYWNoZSBlZmZlY3RzIGF0IHRoZWlyIHBlcmlsLiAgVGhlCitjbGFzc2ljIHRpbWUvc3BhY2UgdHJhZGVvZmYgdGF1Z2h0IGluIGJlZ2lubmluZyBkYXRhIHN0cnVjdHVyZXMgY2xhc3Nlcworb2Z0ZW4gZG9lcyBub3QgYXBwbHkgdG8gY29udGVtcG9yYXJ5IGhhcmR3YXJlLiAgU3BhY2UgKmlzKiB0aW1lLCBpbiB0aGF0IGEKK2xhcmdlciBwcm9ncmFtIHdpbGwgcnVuIHNsb3dlciB0aGFuIG9uZSB3aGljaCBpcyBtb3JlIGNvbXBhY3QuCisKK01vcmUgcmVjZW50IGNvbXBpbGVycyB0YWtlIGFuIGluY3JlYXNpbmdseSBhY3RpdmUgcm9sZSBpbiBkZWNpZGluZyB3aGV0aGVyCithIGdpdmVuIGZ1bmN0aW9uIHNob3VsZCBhY3R1YWxseSBiZSBpbmxpbmVkIG9yIG5vdC4gIFNvIHRoZSBsaWJlcmFsCitwbGFjZW1lbnQgb2YgImlubGluZSIga2V5d29yZHMgbWF5IG5vdCBqdXN0IGJlIGV4Y2Vzc2l2ZTsgaXQgY291bGQgYWxzbyBiZQoraXJyZWxldmFudC4KKworCisqIExvY2tpbmcKKworSW4gTWF5LCAyMDA2LCB0aGUgIkRldmljZXNjYXBlIiBuZXR3b3JraW5nIHN0YWNrIHdhcywgd2l0aCBncmVhdAorZmFuZmFyZSwgcmVsZWFzZWQgdW5kZXIgdGhlIEdQTCBhbmQgbWFkZSBhdmFpbGFibGUgZm9yIGluY2x1c2lvbiBpbiB0aGUKK21haW5saW5lIGtlcm5lbC4gIFRoaXMgZG9uYXRpb24gd2FzIHdlbGNvbWUgbmV3czsgc3VwcG9ydCBmb3Igd2lyZWxlc3MKK25ldHdvcmtpbmcgaW4gTGludXggd2FzIGNvbnNpZGVyZWQgc3Vic3RhbmRhcmQgYXQgYmVzdCwgYW5kIHRoZSBEZXZpY2VzY2FwZQorc3RhY2sgb2ZmZXJlZCB0aGUgcHJvbWlzZSBvZiBmaXhpbmcgdGhhdCBzaXR1YXRpb24uICBZZXQsIHRoaXMgY29kZSBkaWQgbm90CithY3R1YWxseSBtYWtlIGl0IGludG8gdGhlIG1haW5saW5lIHVudGlsIEp1bmUsIDIwMDcgKDIuNi4yMikuICBXaGF0CitoYXBwZW5lZD8KKworVGhpcyBjb2RlIHNob3dlZCBhIG51bWJlciBvZiBzaWducyBvZiBoYXZpbmcgYmVlbiBkZXZlbG9wZWQgYmVoaW5kCitjb3Jwb3JhdGUgZG9vcnMuICBCdXQgb25lIGxhcmdlIHByb2JsZW0gaW4gcGFydGljdWxhciB3YXMgdGhhdCBpdCB3YXMgbm90CitkZXNpZ25lZCB0byB3b3JrIG9uIG11bHRpcHJvY2Vzc29yIHN5c3RlbXMuICBCZWZvcmUgdGhpcyBuZXR3b3JraW5nIHN0YWNrCisobm93IGNhbGxlZCBtYWM4MDIxMSkgY291bGQgYmUgbWVyZ2VkLCBhIGxvY2tpbmcgc2NoZW1lIG5lZWRlZCB0byBiZQorcmV0cm9maXR0ZWQgb250byBpdC4gIAorCitPbmNlIHVwb24gYSB0aW1lLCBMaW51eCBrZXJuZWwgY29kZSBjb3VsZCBiZSBkZXZlbG9wZWQgd2l0aG91dCB0aGlua2luZworYWJvdXQgdGhlIGNvbmN1cnJlbmN5IGlzc3VlcyBwcmVzZW50ZWQgYnkgbXVsdGlwcm9jZXNzb3Igc3lzdGVtcy4gIE5vdywKK2hvd2V2ZXIsIHRoaXMgZG9jdW1lbnQgaXMgYmVpbmcgd3JpdHRlbiBvbiBhIGR1YWwtY29yZSBsYXB0b3AuICBFdmVuIG9uCitzaW5nbGUtcHJvY2Vzc29yIHN5c3RlbXMsIHdvcmsgYmVpbmcgZG9uZSB0byBpbXByb3ZlIHJlc3BvbnNpdmVuZXNzIHdpbGwKK3JhaXNlIHRoZSBsZXZlbCBvZiBjb25jdXJyZW5jeSB3aXRoaW4gdGhlIGtlcm5lbC4gIFRoZSBkYXlzIHdoZW4ga2VybmVsCitjb2RlIGNvdWxkIGJlIHdyaXR0ZW4gd2l0aG91dCB0aGlua2luZyBhYm91dCBsb2NraW5nIGFyZSBsb25nIHBhc3QuCisKK0FueSByZXNvdXJjZSAoZGF0YSBzdHJ1Y3R1cmVzLCBoYXJkd2FyZSByZWdpc3RlcnMsIGV0Yy4pIHdoaWNoIGNvdWxkIGJlCithY2Nlc3NlZCBjb25jdXJyZW50bHkgYnkgbW9yZSB0aGFuIG9uZSB0aHJlYWQgbXVzdCBiZSBwcm90ZWN0ZWQgYnkgYSBsb2NrLgorTmV3IGNvZGUgc2hvdWxkIGJlIHdyaXR0ZW4gd2l0aCB0aGlzIHJlcXVpcmVtZW50IGluIG1pbmQ7IHJldHJvZml0dGluZworbG9ja2luZyBhZnRlciB0aGUgZmFjdCBpcyBhIHJhdGhlciBtb3JlIGRpZmZpY3VsdCB0YXNrLiAgS2VybmVsIGRldmVsb3BlcnMKK3Nob3VsZCB0YWtlIHRoZSB0aW1lIHRvIHVuZGVyc3RhbmQgdGhlIGF2YWlsYWJsZSBsb2NraW5nIHByaW1pdGl2ZXMgd2VsbAorZW5vdWdoIHRvIHBpY2sgdGhlIHJpZ2h0IHRvb2wgZm9yIHRoZSBqb2IuICBDb2RlIHdoaWNoIHNob3dzIGEgbGFjayBvZgorYXR0ZW50aW9uIHRvIGNvbmN1cnJlbmN5IHdpbGwgaGF2ZSBhIGRpZmZpY3VsdCBwYXRoIGludG8gdGhlIG1haW5saW5lLgorCisKKyogUmVncmVzc2lvbnMKKworT25lIGZpbmFsIGhhemFyZCB3b3J0aCBtZW50aW9uaW5nIGlzIHRoaXM6IGl0IGNhbiBiZSB0ZW1wdGluZyB0byBtYWtlIGEKK2NoYW5nZSAod2hpY2ggbWF5IGJyaW5nIGJpZyBpbXByb3ZlbWVudHMpIHdoaWNoIGNhdXNlcyBzb21ldGhpbmcgdG8gYnJlYWsKK2ZvciBleGlzdGluZyB1c2Vycy4gIFRoaXMga2luZCBvZiBjaGFuZ2UgaXMgY2FsbGVkIGEgInJlZ3Jlc3Npb24sIiBhbmQKK3JlZ3Jlc3Npb25zIGhhdmUgYmVjb21lIG1vc3QgdW53ZWxjb21lIGluIHRoZSBtYWlubGluZSBrZXJuZWwuICBXaXRoIGZldworZXhjZXB0aW9ucywgY2hhbmdlcyB3aGljaCBjYXVzZSByZWdyZXNzaW9ucyB3aWxsIGJlIGJhY2tlZCBvdXQgaWYgdGhlCityZWdyZXNzaW9uIGNhbm5vdCBiZSBmaXhlZCBpbiBhIHRpbWVseSBtYW5uZXIuICBGYXIgYmV0dGVyIHRvIGF2b2lkIHRoZQorcmVncmVzc2lvbiBpbiB0aGUgZmlyc3QgcGxhY2UuCisKK0l0IGlzIG9mdGVuIGFyZ3VlZCB0aGF0IGEgcmVncmVzc2lvbiBjYW4gYmUganVzdGlmaWVkIGlmIGl0IGNhdXNlcyB0aGluZ3MKK3RvIHdvcmsgZm9yIG1vcmUgcGVvcGxlIHRoYW4gaXQgY3JlYXRlcyBwcm9ibGVtcyBmb3IuICBXaHkgbm90IG1ha2UgYQorY2hhbmdlIGlmIGl0IGJyaW5ncyBuZXcgZnVuY3Rpb25hbGl0eSB0byB0ZW4gc3lzdGVtcyBmb3IgZWFjaCBvbmUgaXQKK2JyZWFrcz8gIFRoZSBiZXN0IGFuc3dlciB0byB0aGlzIHF1ZXN0aW9uIHdhcyBleHByZXNzZWQgYnkgTGludXMgaW4gSnVseSwKKzIwMDc6CisKKwlTbyB3ZSBkb24ndCBmaXggYnVncyBieSBpbnRyb2R1Y2luZyBuZXcgcHJvYmxlbXMuICBUaGF0IHdheSBsaWVzCisJbWFkbmVzcywgYW5kIG5vYm9keSBldmVyIGtub3dzIGlmIHlvdSBhY3R1YWxseSBtYWtlIGFueSByZWFsCisJcHJvZ3Jlc3MgYXQgYWxsLiBJcyBpdCB0d28gc3RlcHMgZm9yd2FyZHMsIG9uZSBzdGVwIGJhY2ssIG9yIG9uZQorCXN0ZXAgZm9yd2FyZCBhbmQgdHdvIHN0ZXBzIGJhY2s/CisKKyhodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8yNDM0NjAvKS4KKworQW4gZXNwZWNpYWxseSB1bndlbGNvbWUgdHlwZSBvZiByZWdyZXNzaW9uIGlzIGFueSBzb3J0IG9mIGNoYW5nZSB0byB0aGUKK3VzZXItc3BhY2UgQUJJLiAgT25jZSBhbiBpbnRlcmZhY2UgaGFzIGJlZW4gZXhwb3J0ZWQgdG8gdXNlciBzcGFjZSwgaXQgbXVzdAorYmUgc3VwcG9ydGVkIGluZGVmaW5pdGVseS4gIFRoaXMgZmFjdCBtYWtlcyB0aGUgY3JlYXRpb24gb2YgdXNlci1zcGFjZQoraW50ZXJmYWNlcyBwYXJ0aWN1bGFybHkgY2hhbGxlbmdpbmc6IHNpbmNlIHRoZXkgY2Fubm90IGJlIGNoYW5nZWQgaW4KK2luY29tcGF0aWJsZSB3YXlzLCB0aGV5IG11c3QgYmUgZG9uZSByaWdodCB0aGUgZmlyc3QgdGltZS4gIEZvciB0aGlzCityZWFzb24sIGEgZ3JlYXQgZGVhbCBvZiB0aG91Z2h0LCBjbGVhciBkb2N1bWVudGF0aW9uLCBhbmQgd2lkZSByZXZpZXcgZm9yCit1c2VyLXNwYWNlIGludGVyZmFjZXMgaXMgYWx3YXlzIHJlcXVpcmVkLgorCisKKworNC4yOiBDT0RFIENIRUNLSU5HIFRPT0xTCisKK0ZvciBub3csIGF0IGxlYXN0LCB0aGUgd3JpdGluZyBvZiBlcnJvci1mcmVlIGNvZGUgcmVtYWlucyBhbiBpZGVhbCB0aGF0IGZldworb2YgdXMgY2FuIHJlYWNoLiAgV2hhdCB3ZSBjYW4gaG9wZSB0byBkbywgdGhvdWdoLCBpcyB0byBjYXRjaCBhbmQgZml4IGFzCittYW55IG9mIHRob3NlIGVycm9ycyBhcyBwb3NzaWJsZSBiZWZvcmUgb3VyIGNvZGUgZ29lcyBpbnRvIHRoZSBtYWlubGluZQora2VybmVsLiAgVG8gdGhhdCBlbmQsIHRoZSBrZXJuZWwgZGV2ZWxvcGVycyBoYXZlIHB1dCB0b2dldGhlciBhbiBpbXByZXNzaXZlCithcnJheSBvZiB0b29scyB3aGljaCBjYW4gY2F0Y2ggYSB3aWRlIHZhcmlldHkgb2Ygb2JzY3VyZSBwcm9ibGVtcyBpbiBhbgorYXV0b21hdGVkIHdheS4gIEFueSBwcm9ibGVtIGNhdWdodCBieSB0aGUgY29tcHV0ZXIgaXMgYSBwcm9ibGVtIHdoaWNoIHdpbGwKK25vdCBhZmZsaWN0IGEgdXNlciBsYXRlciBvbiwgc28gaXQgc3RhbmRzIHRvIHJlYXNvbiB0aGF0IHRoZSBhdXRvbWF0ZWQKK3Rvb2xzIHNob3VsZCBiZSB1c2VkIHdoZW5ldmVyIHBvc3NpYmxlLgorCitUaGUgZmlyc3Qgc3RlcCBpcyBzaW1wbHkgdG8gaGVlZCB0aGUgd2FybmluZ3MgcHJvZHVjZWQgYnkgdGhlIGNvbXBpbGVyLgorQ29udGVtcG9yYXJ5IHZlcnNpb25zIG9mIGdjYyBjYW4gZGV0ZWN0IChhbmQgd2FybiBhYm91dCkgYSBsYXJnZSBudW1iZXIgb2YKK3BvdGVudGlhbCBlcnJvcnMuICBRdWl0ZSBvZnRlbiwgdGhlc2Ugd2FybmluZ3MgcG9pbnQgdG8gcmVhbCBwcm9ibGVtcy4KK0NvZGUgc3VibWl0dGVkIGZvciByZXZpZXcgc2hvdWxkLCBhcyBhIHJ1bGUsIG5vdCBwcm9kdWNlIGFueSBjb21waWxlcgord2FybmluZ3MuICBXaGVuIHNpbGVuY2luZyB3YXJuaW5ncywgdGFrZSBjYXJlIHRvIHVuZGVyc3RhbmQgdGhlIHJlYWwgY2F1c2UKK2FuZCB0cnkgdG8gYXZvaWQgImZpeGVzIiB3aGljaCBtYWtlIHRoZSB3YXJuaW5nIGdvIGF3YXkgd2l0aG91dCBhZGRyZXNzaW5nCitpdHMgY2F1c2UuCisKK05vdGUgdGhhdCBub3QgYWxsIGNvbXBpbGVyIHdhcm5pbmdzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQuICBCdWlsZCB0aGUKK2tlcm5lbCB3aXRoICJtYWtlIEVYVFJBX0NGTEFHUz0tVyIgdG8gZ2V0IHRoZSBmdWxsIHNldC4KKworVGhlIGtlcm5lbCBwcm92aWRlcyBzZXZlcmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aGljaCB0dXJuIG9uIGRlYnVnZ2luZworZmVhdHVyZXM7IG1vc3Qgb2YgdGhlc2UgYXJlIGZvdW5kIGluIHRoZSAia2VybmVsIGhhY2tpbmciIHN1Ym1lbnUuICBTZXZlcmFsCitvZiB0aGVzZSBvcHRpb25zIHNob3VsZCBiZSB0dXJuZWQgb24gZm9yIGFueSBrZXJuZWwgdXNlZCBmb3IgZGV2ZWxvcG1lbnQgb3IKK3Rlc3RpbmcgcHVycG9zZXMuICBJbiBwYXJ0aWN1bGFyLCB5b3Ugc2hvdWxkIHR1cm4gb246CisKKyAtIEVOQUJMRV9XQVJOX0RFUFJFQ0FURUQsIEVOQUJMRV9NVVNUX0NIRUNLLCBhbmQgRlJBTUVfV0FSTiB0byBnZXQgYW4KKyAgIGV4dHJhIHNldCBvZiB3YXJuaW5ncyBmb3IgcHJvYmxlbXMgbGlrZSB0aGUgdXNlIG9mIGRlcHJlY2F0ZWQgaW50ZXJmYWNlcworICAgb3IgaWdub3JpbmcgYW4gaW1wb3J0YW50IHJldHVybiB2YWx1ZSBmcm9tIGEgZnVuY3Rpb24uICBUaGUgb3V0cHV0CisgICBnZW5lcmF0ZWQgYnkgdGhlc2Ugd2FybmluZ3MgY2FuIGJlIHZlcmJvc2UsIGJ1dCBvbmUgbmVlZCBub3Qgd29ycnkgYWJvdXQKKyAgIHdhcm5pbmdzIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbC4KKworIC0gREVCVUdfT0JKRUNUUyB3aWxsIGFkZCBjb2RlIHRvIHRyYWNrIHRoZSBsaWZldGltZSBvZiB2YXJpb3VzIG9iamVjdHMKKyAgIGNyZWF0ZWQgYnkgdGhlIGtlcm5lbCBhbmQgd2FybiB3aGVuIHRoaW5ncyBhcmUgZG9uZSBvdXQgb2Ygb3JkZXIuICBJZgorICAgeW91IGFyZSBhZGRpbmcgYSBzdWJzeXN0ZW0gd2hpY2ggY3JlYXRlcyAoYW5kIGV4cG9ydHMpIGNvbXBsZXggb2JqZWN0cworICAgb2YgaXRzIG93biwgY29uc2lkZXIgYWRkaW5nIHN1cHBvcnQgZm9yIHRoZSBvYmplY3QgZGVidWdnaW5nCisgICBpbmZyYXN0cnVjdHVyZS4KKworIC0gREVCVUdfU0xBQiBjYW4gZmluZCBhIHZhcmlldHkgb2YgbWVtb3J5IGFsbG9jYXRpb24gYW5kIHVzZSBlcnJvcnM7IGl0CisgICBzaG91bGQgYmUgdXNlZCBvbiBtb3N0IGRldmVsb3BtZW50IGtlcm5lbHMuCisKKyAtIERFQlVHX1NQSU5MT0NLLCBERUJVR19BVE9NSUNfU0xFRVAsIGFuZCBERUJVR19NVVRFWEVTIHdpbGwgZmluZCBhCisgICBudW1iZXIgb2YgY29tbW9uIGxvY2tpbmcgZXJyb3JzLgorCitUaGVyZSBhcmUgcXVpdGUgYSBmZXcgb3RoZXIgZGVidWdnaW5nIG9wdGlvbnMsIHNvbWUgb2Ygd2hpY2ggd2lsbCBiZQorZGlzY3Vzc2VkIGJlbG93LiAgU29tZSBvZiB0aGVtIGhhdmUgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXBhY3QgYW5kCitzaG91bGQgbm90IGJlIHVzZWQgYWxsIG9mIHRoZSB0aW1lLiAgQnV0IHNvbWUgdGltZSBzcGVudCBsZWFybmluZyB0aGUKK2F2YWlsYWJsZSBvcHRpb25zIHdpbGwgbGlrZWx5IGJlIHBhaWQgYmFjayBtYW55IHRpbWVzIG92ZXIgaW4gc2hvcnQgb3JkZXIuIAorCitPbmUgb2YgdGhlIGhlYXZpZXIgZGVidWdnaW5nIHRvb2xzIGlzIHRoZSBsb2NraW5nIGNoZWNrZXIsIG9yICJsb2NrZGVwLiIKK1RoaXMgdG9vbCB3aWxsIHRyYWNrIHRoZSBhY3F1aXNpdGlvbiBhbmQgcmVsZWFzZSBvZiBldmVyeSBsb2NrIChzcGlubG9jayBvcgorbXV0ZXgpIGluIHRoZSBzeXN0ZW0sIHRoZSBvcmRlciBpbiB3aGljaCBsb2NrcyBhcmUgYWNxdWlyZWQgcmVsYXRpdmUgdG8KK2VhY2ggb3RoZXIsIHRoZSBjdXJyZW50IGludGVycnVwdCBlbnZpcm9ubWVudCwgYW5kIG1vcmUuICBJdCBjYW4gdGhlbgorZW5zdXJlIHRoYXQgbG9ja3MgYXJlIGFsd2F5cyBhY3F1aXJlZCBpbiB0aGUgc2FtZSBvcmRlciwgdGhhdCB0aGUgc2FtZQoraW50ZXJydXB0IGFzc3VtcHRpb25zIGFwcGx5IGluIGFsbCBzaXR1YXRpb25zLCBhbmQgc28gb24uICBJbiBvdGhlciB3b3JkcywKK2xvY2tkZXAgY2FuIGZpbmQgYSBudW1iZXIgb2Ygc2NlbmFyaW9zIGluIHdoaWNoIHRoZSBzeXN0ZW0gY291bGQsIG9uIHJhcmUKK29jY2FzaW9uLCBkZWFkbG9jay4gIFRoaXMga2luZCBvZiBwcm9ibGVtIGNhbiBiZSBwYWluZnVsIChmb3IgYm90aAorZGV2ZWxvcGVycyBhbmQgdXNlcnMpIGluIGEgZGVwbG95ZWQgc3lzdGVtOyBsb2NrZGVwIGFsbG93cyB0aGVtIHRvIGJlIGZvdW5kCitpbiBhbiBhdXRvbWF0ZWQgbWFubmVyIGFoZWFkIG9mIHRpbWUuICBDb2RlIHdpdGggYW55IHNvcnQgb2Ygbm9uLXRyaXZpYWwKK2xvY2tpbmcgc2hvdWxkIGJlIHJ1biB3aXRoIGxvY2tkZXAgZW5hYmxlZCBiZWZvcmUgYmVpbmcgc3VibWl0dGVkIGZvcgoraW5jbHVzaW9uLiAKKworQXMgYSBkaWxpZ2VudCBrZXJuZWwgcHJvZ3JhbW1lciwgeW91IHdpbGwsIGJleW9uZCBkb3VidCwgY2hlY2sgdGhlIHJldHVybgorc3RhdHVzIG9mIGFueSBvcGVyYXRpb24gKHN1Y2ggYXMgYSBtZW1vcnkgYWxsb2NhdGlvbikgd2hpY2ggY2FuIGZhaWwuICBUaGUKK2ZhY3Qgb2YgdGhlIG1hdHRlciwgdGhvdWdoLCBpcyB0aGF0IHRoZSByZXN1bHRpbmcgZmFpbHVyZSByZWNvdmVyeSBwYXRocworYXJlLCBwcm9iYWJseSwgY29tcGxldGVseSB1bnRlc3RlZC4gIFVudGVzdGVkIGNvZGUgdGVuZHMgdG8gYmUgYnJva2VuIGNvZGU7Cit5b3UgY291bGQgYmUgbXVjaCBtb3JlIGNvbmZpZGVudCBvZiB5b3VyIGNvZGUgaWYgYWxsIHRob3NlIGVycm9yLWhhbmRsaW5nCitwYXRocyBoYWQgYmVlbiBleGVyY2lzZWQgYSBmZXcgdGltZXMuCisKK1RoZSBrZXJuZWwgcHJvdmlkZXMgYSBmYXVsdCBpbmplY3Rpb24gZnJhbWV3b3JrIHdoaWNoIGNhbiBkbyBleGFjdGx5IHRoYXQsCitlc3BlY2lhbGx5IHdoZXJlIG1lbW9yeSBhbGxvY2F0aW9ucyBhcmUgaW52b2x2ZWQuICBXaXRoIGZhdWx0IGluamVjdGlvbgorZW5hYmxlZCwgYSBjb25maWd1cmFibGUgcGVyY2VudGFnZSBvZiBtZW1vcnkgYWxsb2NhdGlvbnMgd2lsbCBiZSBtYWRlIHRvCitmYWlsOyB0aGVzZSBmYWlsdXJlcyBjYW4gYmUgcmVzdHJpY3RlZCB0byBhIHNwZWNpZmljIHJhbmdlIG9mIGNvZGUuCitSdW5uaW5nIHdpdGggZmF1bHQgaW5qZWN0aW9uIGVuYWJsZWQgYWxsb3dzIHRoZSBwcm9ncmFtbWVyIHRvIHNlZSBob3cgdGhlCitjb2RlIHJlc3BvbmRzIHdoZW4gdGhpbmdzIGdvIGJhZGx5LiAgU2VlCitEb2N1bWVudGF0aW9uL2ZhdWx0LWluamVjdGlvbi9mYXVsdC1pbmplY3Rpb24udHh0IGZvciBtb3JlIGluZm9ybWF0aW9uIG9uCitob3cgdG8gdXNlIHRoaXMgZmFjaWxpdHkuCisKK090aGVyIGtpbmRzIG9mIGVycm9ycyBjYW4gYmUgZm91bmQgd2l0aCB0aGUgInNwYXJzZSIgc3RhdGljIGFuYWx5c2lzIHRvb2wuCitXaXRoIHNwYXJzZSwgdGhlIHByb2dyYW1tZXIgY2FuIGJlIHdhcm5lZCBhYm91dCBjb25mdXNpb24gYmV0d2VlbgordXNlci1zcGFjZSBhbmQga2VybmVsLXNwYWNlIGFkZHJlc3NlcywgbWl4dHVyZSBvZiBiaWctZW5kaWFuIGFuZAorc21hbGwtZW5kaWFuIHF1YW50aXRpZXMsIHRoZSBwYXNzaW5nIG9mIGludGVnZXIgdmFsdWVzIHdoZXJlIGEgc2V0IG9mIGJpdAorZmxhZ3MgaXMgZXhwZWN0ZWQsIGFuZCBzbyBvbi4gIFNwYXJzZSBtdXN0IGJlIGluc3RhbGxlZCBzZXBhcmF0ZWx5IChpdCBjYW4KK2JlIGZvdW5kIGF0IGh0dHBzOi8vc3BhcnNlLndpa2kua2VybmVsLm9yZy9pbmRleC5waHAvTWFpbl9QYWdlIGlmIHlvdXIKK2Rpc3RyaWJ1dG9yIGRvZXMgbm90IHBhY2thZ2UgaXQpOyBpdCBjYW4gdGhlbiBiZSBydW4gb24gdGhlIGNvZGUgYnkgYWRkaW5nCisiQz0xIiB0byB5b3VyIG1ha2UgY29tbWFuZC4KKworVGhlICJDb2NjaW5lbGxlIiB0b29sIChodHRwOi8vY29jY2luZWxsZS5saXA2LmZyLykgaXMgYWJsZSB0byBmaW5kIGEgd2lkZQordmFyaWV0eSBvZiBwb3RlbnRpYWwgY29kaW5nIHByb2JsZW1zOyBpdCBjYW4gYWxzbyBwcm9wb3NlIGZpeGVzIGZvciB0aG9zZQorcHJvYmxlbXMuICBRdWl0ZSBhIGZldyAic2VtYW50aWMgcGF0Y2hlcyIgZm9yIHRoZSBrZXJuZWwgaGF2ZSBiZWVuIHBhY2thZ2VkCit1bmRlciB0aGUgc2NyaXB0cy9jb2NjaW5lbGxlIGRpcmVjdG9yeTsgcnVubmluZyAibWFrZSBjb2NjaWNoZWNrIiB3aWxsIHJ1bgordGhyb3VnaCB0aG9zZSBzZW1hbnRpYyBwYXRjaGVzIGFuZCByZXBvcnQgb24gYW55IHByb2JsZW1zIGZvdW5kLiAgU2VlCitEb2N1bWVudGF0aW9uL2NvY2NpbmVsbGUudHh0IGZvciBtb3JlIGluZm9ybWF0aW9uLgorCitPdGhlciBraW5kcyBvZiBwb3J0YWJpbGl0eSBlcnJvcnMgYXJlIGJlc3QgZm91bmQgYnkgY29tcGlsaW5nIHlvdXIgY29kZSBmb3IKK290aGVyIGFyY2hpdGVjdHVyZXMuICBJZiB5b3UgZG8gbm90IGhhcHBlbiB0byBoYXZlIGFuIFMvMzkwIHN5c3RlbSBvciBhCitCbGFja2ZpbiBkZXZlbG9wbWVudCBib2FyZCBoYW5keSwgeW91IGNhbiBzdGlsbCBwZXJmb3JtIHRoZSBjb21waWxhdGlvbgorc3RlcC4gIEEgbGFyZ2Ugc2V0IG9mIGNyb3NzIGNvbXBpbGVycyBmb3IgeDg2IHN5c3RlbXMgY2FuIGJlIGZvdW5kIGF0IAorCisJaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi90b29scy9jcm9zc3Rvb2wvCisKK1NvbWUgdGltZSBzcGVudCBpbnN0YWxsaW5nIGFuZCB1c2luZyB0aGVzZSBjb21waWxlcnMgd2lsbCBoZWxwIGF2b2lkCitlbWJhcnJhc3NtZW50IGxhdGVyLgorCisKKzQuMzogRE9DVU1FTlRBVElPTgorCitEb2N1bWVudGF0aW9uIGhhcyBvZnRlbiBiZWVuIG1vcmUgdGhlIGV4Y2VwdGlvbiB0aGFuIHRoZSBydWxlIHdpdGgga2VybmVsCitkZXZlbG9wbWVudC4gIEV2ZW4gc28sIGFkZXF1YXRlIGRvY3VtZW50YXRpb24gd2lsbCBoZWxwIHRvIGVhc2UgdGhlIG1lcmdpbmcKK29mIG5ldyBjb2RlIGludG8gdGhlIGtlcm5lbCwgbWFrZSBsaWZlIGVhc2llciBmb3Igb3RoZXIgZGV2ZWxvcGVycywgYW5kCit3aWxsIGJlIGhlbHBmdWwgZm9yIHlvdXIgdXNlcnMuICBJbiBtYW55IGNhc2VzLCB0aGUgYWRkaXRpb24gb2YKK2RvY3VtZW50YXRpb24gaGFzIGJlY29tZSBlc3NlbnRpYWxseSBtYW5kYXRvcnkuCisKK1RoZSBmaXJzdCBwaWVjZSBvZiBkb2N1bWVudGF0aW9uIGZvciBhbnkgcGF0Y2ggaXMgaXRzIGFzc29jaWF0ZWQKK2NoYW5nZWxvZy4gIExvZyBlbnRyaWVzIHNob3VsZCBkZXNjcmliZSB0aGUgcHJvYmxlbSBiZWluZyBzb2x2ZWQsIHRoZSBmb3JtCitvZiB0aGUgc29sdXRpb24sIHRoZSBwZW9wbGUgd2hvIHdvcmtlZCBvbiB0aGUgcGF0Y2gsIGFueSByZWxldmFudAorZWZmZWN0cyBvbiBwZXJmb3JtYW5jZSwgYW5kIGFueXRoaW5nIGVsc2UgdGhhdCBtaWdodCBiZSBuZWVkZWQgdG8KK3VuZGVyc3RhbmQgdGhlIHBhdGNoLiAgQmUgc3VyZSB0aGF0IHRoZSBjaGFuZ2Vsb2cgc2F5cyAqd2h5KiB0aGUgcGF0Y2ggaXMKK3dvcnRoIGFwcGx5aW5nOyBhIHN1cnByaXNpbmcgbnVtYmVyIG9mIGRldmVsb3BlcnMgZmFpbCB0byBwcm92aWRlIHRoYXQKK2luZm9ybWF0aW9uLgorCitBbnkgY29kZSB3aGljaCBhZGRzIGEgbmV3IHVzZXItc3BhY2UgaW50ZXJmYWNlIC0gaW5jbHVkaW5nIG5ldyBzeXNmcyBvcgorL3Byb2MgZmlsZXMgLSBzaG91bGQgaW5jbHVkZSBkb2N1bWVudGF0aW9uIG9mIHRoYXQgaW50ZXJmYWNlIHdoaWNoIGVuYWJsZXMKK3VzZXItc3BhY2UgZGV2ZWxvcGVycyB0byBrbm93IHdoYXQgdGhleSBhcmUgd29ya2luZyB3aXRoLiAgU2VlCitEb2N1bWVudGF0aW9uL0FCSS9SRUFETUUgZm9yIGEgZGVzY3JpcHRpb24gb2YgaG93IHRoaXMgZG9jdW1lbnRhdGlvbiBzaG91bGQKK2JlIGZvcm1hdHRlZCBhbmQgd2hhdCBpbmZvcm1hdGlvbiBuZWVkcyB0byBiZSBwcm92aWRlZC4KKworVGhlIGZpbGUgRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQgZGVzY3JpYmVzIGFsbCBvZiB0aGUga2VybmVsJ3MKK2Jvb3QtdGltZSBwYXJhbWV0ZXJzLiAgQW55IHBhdGNoIHdoaWNoIGFkZHMgbmV3IHBhcmFtZXRlcnMgc2hvdWxkIGFkZCB0aGUKK2FwcHJvcHJpYXRlIGVudHJpZXMgdG8gdGhpcyBmaWxlLgorCitBbnkgbmV3IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBtdXN0IGJlIGFjY29tcGFuaWVkIGJ5IGhlbHAgdGV4dCB3aGljaAorY2xlYXJseSBleHBsYWlucyB0aGUgb3B0aW9ucyBhbmQgd2hlbiB0aGUgdXNlciBtaWdodCB3YW50IHRvIHNlbGVjdCB0aGVtLgorCitJbnRlcm5hbCBBUEkgaW5mb3JtYXRpb24gZm9yIG1hbnkgc3Vic3lzdGVtcyBpcyBkb2N1bWVudGVkIGJ5IHdheSBvZgorc3BlY2lhbGx5LWZvcm1hdHRlZCBjb21tZW50czsgdGhlc2UgY29tbWVudHMgY2FuIGJlIGV4dHJhY3RlZCBhbmQgZm9ybWF0dGVkCitpbiBhIG51bWJlciBvZiB3YXlzIGJ5IHRoZSAia2VybmVsLWRvYyIgc2NyaXB0LiAgSWYgeW91IGFyZSB3b3JraW5nIHdpdGhpbgorYSBzdWJzeXN0ZW0gd2hpY2ggaGFzIGtlcm5lbGRvYyBjb21tZW50cywgeW91IHNob3VsZCBtYWludGFpbiB0aGVtIGFuZCBhZGQKK3RoZW0sIGFzIGFwcHJvcHJpYXRlLCBmb3IgZXh0ZXJuYWxseS1hdmFpbGFibGUgZnVuY3Rpb25zLiAgRXZlbiBpbiBhcmVhcword2hpY2ggaGF2ZSBub3QgYmVlbiBzbyBkb2N1bWVudGVkLCB0aGVyZSBpcyBubyBoYXJtIGluIGFkZGluZyBrZXJuZWxkb2MKK2NvbW1lbnRzIGZvciB0aGUgZnV0dXJlOyBpbmRlZWQsIHRoaXMgY2FuIGJlIGEgdXNlZnVsIGFjdGl2aXR5IGZvcgorYmVnaW5uaW5nIGtlcm5lbCBkZXZlbG9wZXJzLiAgVGhlIGZvcm1hdCBvZiB0aGVzZSBjb21tZW50cywgYWxvbmcgd2l0aCBzb21lCitpbmZvcm1hdGlvbiBvbiBob3cgdG8gY3JlYXRlIGtlcm5lbGRvYyB0ZW1wbGF0ZXMgY2FuIGJlIGZvdW5kIGluIHRoZSBmaWxlCitEb2N1bWVudGF0aW9uL2tlcm5lbC1kb2MtbmFuby1IT1dUTy50eHQuCisKK0FueWJvZHkgd2hvIHJlYWRzIHRocm91Z2ggYSBzaWduaWZpY2FudCBhbW91bnQgb2YgZXhpc3Rpbmcga2VybmVsIGNvZGUgd2lsbAorbm90ZSB0aGF0LCBvZnRlbiwgY29tbWVudHMgYXJlIG1vc3Qgbm90YWJsZSBieSB0aGVpciBhYnNlbmNlLiAgT25jZSBhZ2FpbiwKK3RoZSBleHBlY3RhdGlvbnMgZm9yIG5ldyBjb2RlIGFyZSBoaWdoZXIgdGhhbiB0aGV5IHdlcmUgaW4gdGhlIHBhc3Q7CittZXJnaW5nIHVuY29tbWVudGVkIGNvZGUgd2lsbCBiZSBoYXJkZXIuICBUaGF0IHNhaWQsIHRoZXJlIGlzIGxpdHRsZSBkZXNpcmUKK2ZvciB2ZXJib3NlbHktY29tbWVudGVkIGNvZGUuICBUaGUgY29kZSBzaG91bGQsIGl0c2VsZiwgYmUgcmVhZGFibGUsIHdpdGgKK2NvbW1lbnRzIGV4cGxhaW5pbmcgdGhlIG1vcmUgc3VidGxlIGFzcGVjdHMuCisKK0NlcnRhaW4gdGhpbmdzIHNob3VsZCBhbHdheXMgYmUgY29tbWVudGVkLiAgVXNlcyBvZiBtZW1vcnkgYmFycmllcnMgc2hvdWxkCitiZSBhY2NvbXBhbmllZCBieSBhIGxpbmUgZXhwbGFpbmluZyB3aHkgdGhlIGJhcnJpZXIgaXMgbmVjZXNzYXJ5LiAgVGhlCitsb2NraW5nIHJ1bGVzIGZvciBkYXRhIHN0cnVjdHVyZXMgZ2VuZXJhbGx5IG5lZWQgdG8gYmUgZXhwbGFpbmVkIHNvbWV3aGVyZS4KK01ham9yIGRhdGEgc3RydWN0dXJlcyBuZWVkIGNvbXByZWhlbnNpdmUgZG9jdW1lbnRhdGlvbiBpbiBnZW5lcmFsLgorTm9uLW9idmlvdXMgZGVwZW5kZW5jaWVzIGJldHdlZW4gc2VwYXJhdGUgYml0cyBvZiBjb2RlIHNob3VsZCBiZSBwb2ludGVkCitvdXQuICBBbnl0aGluZyB3aGljaCBtaWdodCB0ZW1wdCBhIGNvZGUgamFuaXRvciB0byBtYWtlIGFuIGluY29ycmVjdAorImNsZWFudXAiIG5lZWRzIGEgY29tbWVudCBzYXlpbmcgd2h5IGl0IGlzIGRvbmUgdGhlIHdheSBpdCBpcy4gIEFuZCBzbyBvbi4KKworCis0LjQ6IElOVEVSTkFMIEFQSSBDSEFOR0VTCisKK1RoZSBiaW5hcnkgaW50ZXJmYWNlIHByb3ZpZGVkIGJ5IHRoZSBrZXJuZWwgdG8gdXNlciBzcGFjZSBjYW5ub3QgYmUgYnJva2VuCitleGNlcHQgdW5kZXIgdGhlIG1vc3Qgc2V2ZXJlIGNpcmN1bXN0YW5jZXMuICBUaGUga2VybmVsJ3MgaW50ZXJuYWwKK3Byb2dyYW1taW5nIGludGVyZmFjZXMsIGluc3RlYWQsIGFyZSBoaWdobHkgZmx1aWQgYW5kIGNhbiBiZSBjaGFuZ2VkIHdoZW4KK3RoZSBuZWVkIGFyaXNlcy4gIElmIHlvdSBmaW5kIHlvdXJzZWxmIGhhdmluZyB0byB3b3JrIGFyb3VuZCBhIGtlcm5lbCBBUEksCitvciBzaW1wbHkgbm90IHVzaW5nIGEgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBiZWNhdXNlIGl0IGRvZXMgbm90IG1lZXQgeW91cgorbmVlZHMsIHRoYXQgbWF5IGJlIGEgc2lnbiB0aGF0IHRoZSBBUEkgbmVlZHMgdG8gY2hhbmdlLiAgQXMgYSBrZXJuZWwKK2RldmVsb3BlciwgeW91IGFyZSBlbXBvd2VyZWQgdG8gbWFrZSBzdWNoIGNoYW5nZXMuCisKK1RoZXJlIGFyZSwgb2YgY291cnNlLCBzb21lIGNhdGNoZXMuICBBUEkgY2hhbmdlcyBjYW4gYmUgbWFkZSwgYnV0IHRoZXkgbmVlZAordG8gYmUgd2VsbCBqdXN0aWZpZWQuICBTbyBhbnkgcGF0Y2ggbWFraW5nIGFuIGludGVybmFsIEFQSSBjaGFuZ2Ugc2hvdWxkIGJlCithY2NvbXBhbmllZCBieSBhIGRlc2NyaXB0aW9uIG9mIHdoYXQgdGhlIGNoYW5nZSBpcyBhbmQgd2h5IGl0IGlzCituZWNlc3NhcnkuICBUaGlzIGtpbmQgb2YgY2hhbmdlIHNob3VsZCBhbHNvIGJlIGJyb2tlbiBvdXQgaW50byBhIHNlcGFyYXRlCitwYXRjaCwgcmF0aGVyIHRoYW4gYnVyaWVkIHdpdGhpbiBhIGxhcmdlciBwYXRjaC4KKworVGhlIG90aGVyIGNhdGNoIGlzIHRoYXQgYSBkZXZlbG9wZXIgd2hvIGNoYW5nZXMgYW4gaW50ZXJuYWwgQVBJIGlzCitnZW5lcmFsbHkgY2hhcmdlZCB3aXRoIHRoZSB0YXNrIG9mIGZpeGluZyBhbnkgY29kZSB3aXRoaW4gdGhlIGtlcm5lbCB0cmVlCit3aGljaCBpcyBicm9rZW4gYnkgdGhlIGNoYW5nZS4gIEZvciBhIHdpZGVseS11c2VkIGZ1bmN0aW9uLCB0aGlzIGR1dHkgY2FuCitsZWFkIHRvIGxpdGVyYWxseSBodW5kcmVkcyBvciB0aG91c2FuZHMgb2YgY2hhbmdlcyAtIG1hbnkgb2Ygd2hpY2ggYXJlCitsaWtlbHkgdG8gY29uZmxpY3Qgd2l0aCB3b3JrIGJlaW5nIGRvbmUgYnkgb3RoZXIgZGV2ZWxvcGVycy4gIE5lZWRsZXNzIHRvCitzYXksIHRoaXMgY2FuIGJlIGEgbGFyZ2Ugam9iLCBzbyBpdCBpcyBiZXN0IHRvIGJlIHN1cmUgdGhhdCB0aGUKK2p1c3RpZmljYXRpb24gaXMgc29saWQuICBOb3RlIHRoYXQgdGhlIENvY2NpbmVsbGUgdG9vbCBjYW4gaGVscCB3aXRoCit3aWRlLXJhbmdpbmcgQVBJIGNoYW5nZXMuCisKK1doZW4gbWFraW5nIGFuIGluY29tcGF0aWJsZSBBUEkgY2hhbmdlLCBvbmUgc2hvdWxkLCB3aGVuZXZlciBwb3NzaWJsZSwKK2Vuc3VyZSB0aGF0IGNvZGUgd2hpY2ggaGFzIG5vdCBiZWVuIHVwZGF0ZWQgaXMgY2F1Z2h0IGJ5IHRoZSBjb21waWxlci4KK1RoaXMgd2lsbCBoZWxwIHlvdSB0byBiZSBzdXJlIHRoYXQgeW91IGhhdmUgZm91bmQgYWxsIGluLXRyZWUgdXNlcyBvZiB0aGF0CitpbnRlcmZhY2UuICBJdCB3aWxsIGFsc28gYWxlcnQgZGV2ZWxvcGVycyBvZiBvdXQtb2YtdHJlZSBjb2RlIHRoYXQgdGhlcmUgaXMKK2EgY2hhbmdlIHRoYXQgdGhleSBuZWVkIHRvIHJlc3BvbmQgdG8uICBTdXBwb3J0aW5nIG91dC1vZi10cmVlIGNvZGUgaXMgbm90Citzb21ldGhpbmcgdGhhdCBrZXJuZWwgZGV2ZWxvcGVycyBuZWVkIHRvIGJlIHdvcnJpZWQgYWJvdXQsIGJ1dCB3ZSBhbHNvIGRvCitub3QgaGF2ZSB0byBtYWtlIGxpZmUgaGFyZGVyIGZvciBvdXQtb2YtdHJlZSBkZXZlbG9wZXJzIHRoYW4gaXQgbmVlZHMgdG8KK2JlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZlbG9wbWVudC1wcm9jZXNzLzUuUG9zdGluZyBiL0RvY3VtZW50YXRpb24vZGV2ZWxvcG1lbnQtcHJvY2Vzcy81LlBvc3RpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE0OGM5YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2ZWxvcG1lbnQtcHJvY2Vzcy81LlBvc3RpbmcKQEAgLTAsMCArMSwzMDcgQEAKKzU6IFBPU1RJTkcgUEFUQ0hFUworCitTb29uZXIgb3IgbGF0ZXIsIHRoZSB0aW1lIGNvbWVzIHdoZW4geW91ciB3b3JrIGlzIHJlYWR5IHRvIGJlIHByZXNlbnRlZCB0bwordGhlIGNvbW11bml0eSBmb3IgcmV2aWV3IGFuZCwgZXZlbnR1YWxseSwgaW5jbHVzaW9uIGludG8gdGhlIG1haW5saW5lCitrZXJuZWwuICBVbnN1cnByaXNpbmdseSwgdGhlIGtlcm5lbCBkZXZlbG9wbWVudCBjb21tdW5pdHkgaGFzIGV2b2x2ZWQgYSBzZXQKK29mIGNvbnZlbnRpb25zIGFuZCBwcm9jZWR1cmVzIHdoaWNoIGFyZSB1c2VkIGluIHRoZSBwb3N0aW5nIG9mIHBhdGNoZXM7Citmb2xsb3dpbmcgdGhlbSB3aWxsIG1ha2UgbGlmZSBtdWNoIGVhc2llciBmb3IgZXZlcnlib2R5IGludm9sdmVkLiAgVGhpcworZG9jdW1lbnQgd2lsbCBhdHRlbXB0IHRvIGNvdmVyIHRoZXNlIGV4cGVjdGF0aW9ucyBpbiByZWFzb25hYmxlIGRldGFpbDsKK21vcmUgaW5mb3JtYXRpb24gY2FuIGFsc28gYmUgZm91bmQgaW4gdGhlIGZpbGVzIFN1Ym1pdHRpbmdQYXRjaGVzLAorU3VibWl0dGluZ0RyaXZlcnMsIGFuZCBTdWJtaXRDaGVja2xpc3QgaW4gdGhlIGtlcm5lbCBkb2N1bWVudGF0aW9uCitkaXJlY3RvcnkuCisKKworNS4xOiBXSEVOIFRPIFBPU1QKKworVGhlcmUgaXMgYSBjb25zdGFudCB0ZW1wdGF0aW9uIHRvIGF2b2lkIHBvc3RpbmcgcGF0Y2hlcyBiZWZvcmUgdGhleSBhcmUKK2NvbXBsZXRlbHkgInJlYWR5LiIgIEZvciBzaW1wbGUgcGF0Y2hlcywgdGhhdCBpcyBub3QgYSBwcm9ibGVtLiAgSWYgdGhlCit3b3JrIGJlaW5nIGRvbmUgaXMgY29tcGxleCwgdGhvdWdoLCB0aGVyZSBpcyBhIGxvdCB0byBiZSBnYWluZWQgYnkgZ2V0dGluZworZmVlZGJhY2sgZnJvbSB0aGUgY29tbXVuaXR5IGJlZm9yZSB0aGUgd29yayBpcyBjb21wbGV0ZS4gIFNvIHlvdSBzaG91bGQKK2NvbnNpZGVyIHBvc3RpbmcgaW4tcHJvZ3Jlc3Mgd29yaywgb3IgZXZlbiBtYWtpbmcgYSBnaXQgdHJlZSBhdmFpbGFibGUgc28KK3RoYXQgaW50ZXJlc3RlZCBkZXZlbG9wZXJzIGNhbiBjYXRjaCB1cCB3aXRoIHlvdXIgd29yayBhdCBhbnkgdGltZS4KKworV2hlbiBwb3N0aW5nIGNvZGUgd2hpY2ggaXMgbm90IHlldCBjb25zaWRlcmVkIHJlYWR5IGZvciBpbmNsdXNpb24sIGl0IGlzIGEKK2dvb2QgaWRlYSB0byBzYXkgc28gaW4gdGhlIHBvc3RpbmcgaXRzZWxmLiAgQWxzbyBtZW50aW9uIGFueSBtYWpvciB3b3JrCit3aGljaCByZW1haW5zIHRvIGJlIGRvbmUgYW5kIGFueSBrbm93biBwcm9ibGVtcy4gIEZld2VyIHBlb3BsZSB3aWxsIGxvb2sgYXQKK3BhdGNoZXMgd2hpY2ggYXJlIGtub3duIHRvIGJlIGhhbGYtYmFrZWQsIGJ1dCB0aG9zZSB3aG8gZG8gd2lsbCBjb21lIGluCit3aXRoIHRoZSBpZGVhIHRoYXQgdGhleSBjYW4gaGVscCB5b3UgZHJpdmUgdGhlIHdvcmsgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbi4KKworCis1LjI6IEJFRk9SRSBDUkVBVElORyBQQVRDSEVTCisKK1RoZXJlIGFyZSBhIG51bWJlciBvZiB0aGluZ3Mgd2hpY2ggc2hvdWxkIGJlIGRvbmUgYmVmb3JlIHlvdSBjb25zaWRlcgorc2VuZGluZyBwYXRjaGVzIHRvIHRoZSBkZXZlbG9wbWVudCBjb21tdW5pdHkuICBUaGVzZSBpbmNsdWRlOgorCisgLSBUZXN0IHRoZSBjb2RlIHRvIHRoZSBleHRlbnQgdGhhdCB5b3UgY2FuLiAgTWFrZSB1c2Ugb2YgdGhlIGtlcm5lbCdzCisgICBkZWJ1Z2dpbmcgdG9vbHMsIGVuc3VyZSB0aGF0IHRoZSBrZXJuZWwgd2lsbCBidWlsZCB3aXRoIGFsbCByZWFzb25hYmxlCisgICBjb21iaW5hdGlvbnMgb2YgY29uZmlndXJhdGlvbiBvcHRpb25zLCB1c2UgY3Jvc3MtY29tcGlsZXJzIHRvIGJ1aWxkIGZvcgorICAgZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMsIGV0Yy4KKworIC0gTWFrZSBzdXJlIHlvdXIgY29kZSBpcyBjb21wbGlhbnQgd2l0aCB0aGUga2VybmVsIGNvZGluZyBzdHlsZQorICAgZ3VpZGVsaW5lcy4KKworIC0gRG9lcyB5b3VyIGNoYW5nZSBoYXZlIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucz8gIElmIHNvLCB5b3Ugc2hvdWxkIHJ1bgorICAgYmVuY2htYXJrcyBzaG93aW5nIHdoYXQgdGhlIGltcGFjdCAob3IgYmVuZWZpdCkgb2YgeW91ciBjaGFuZ2UgaXM7IGEKKyAgIHN1bW1hcnkgb2YgdGhlIHJlc3VsdHMgc2hvdWxkIGJlIGluY2x1ZGVkIHdpdGggdGhlIHBhdGNoLgorCisgLSBCZSBzdXJlIHRoYXQgeW91IGhhdmUgdGhlIHJpZ2h0IHRvIHBvc3QgdGhlIGNvZGUuICBJZiB0aGlzIHdvcmsgd2FzIGRvbmUKKyAgIGZvciBhbiBlbXBsb3llciwgdGhlIGVtcGxveWVyIGxpa2VseSBoYXMgYSByaWdodCB0byB0aGUgd29yayBhbmQgbXVzdCBiZQorICAgYWdyZWVhYmxlIHdpdGggaXRzIHJlbGVhc2UgdW5kZXIgdGhlIEdQTC4KKworQXMgYSBnZW5lcmFsIHJ1bGUsIHB1dHRpbmcgaW4gc29tZSBleHRyYSB0aG91Z2h0IGJlZm9yZSBwb3N0aW5nIGNvZGUgYWxtb3N0CithbHdheXMgcGF5cyBiYWNrIHRoZSBlZmZvcnQgaW4gc2hvcnQgb3JkZXIuCisKKworNS4zOiBQQVRDSCBQUkVQQVJBVElPTgorCitUaGUgcHJlcGFyYXRpb24gb2YgcGF0Y2hlcyBmb3IgcG9zdGluZyBjYW4gYmUgYSBzdXJwcmlzaW5nIGFtb3VudCBvZiB3b3JrLAorYnV0LCBvbmNlIGFnYWluLCBhdHRlbXB0aW5nIHRvIHNhdmUgdGltZSBoZXJlIGlzIG5vdCBnZW5lcmFsbHkgYWR2aXNhYmxlCitldmVuIGluIHRoZSBzaG9ydCB0ZXJtLgorCitQYXRjaGVzIG11c3QgYmUgcHJlcGFyZWQgYWdhaW5zdCBhIHNwZWNpZmljIHZlcnNpb24gb2YgdGhlIGtlcm5lbC4gIEFzIGEKK2dlbmVyYWwgcnVsZSwgYSBwYXRjaCBzaG91bGQgYmUgYmFzZWQgb24gdGhlIGN1cnJlbnQgbWFpbmxpbmUgYXMgZm91bmQgaW4KK0xpbnVzJ3MgZ2l0IHRyZWUuICBXaGVuIGJhc2luZyBvbiBtYWlubGluZSwgc3RhcnQgd2l0aCBhIHdlbGwta25vd24gcmVsZWFzZQorcG9pbnQgLSBhIHN0YWJsZSBvciAtcmMgcmVsZWFzZSAtIHJhdGhlciB0aGFuIGJyYW5jaGluZyBvZmYgdGhlIG1haW5saW5lIGF0CithbiBhcmJpdHJhcnkgc3BvdC4KKworSXQgbWF5IGJlY29tZSBuZWNlc3NhcnkgdG8gbWFrZSB2ZXJzaW9ucyBhZ2FpbnN0IC1tbSwgbGludXgtbmV4dCwgb3IgYQorc3Vic3lzdGVtIHRyZWUsIHRob3VnaCwgdG8gZmFjaWxpdGF0ZSB3aWRlciB0ZXN0aW5nIGFuZCByZXZpZXcuICBEZXBlbmRpbmcKK29uIHRoZSBhcmVhIG9mIHlvdXIgcGF0Y2ggYW5kIHdoYXQgaXMgZ29pbmcgb24gZWxzZXdoZXJlLCBiYXNpbmcgYSBwYXRjaAorYWdhaW5zdCB0aGVzZSBvdGhlciB0cmVlcyBjYW4gcmVxdWlyZSBhIHNpZ25pZmljYW50IGFtb3VudCBvZiB3b3JrCityZXNvbHZpbmcgY29uZmxpY3RzIGFuZCBkZWFsaW5nIHdpdGggQVBJIGNoYW5nZXMuCisKK09ubHkgdGhlIG1vc3Qgc2ltcGxlIGNoYW5nZXMgc2hvdWxkIGJlIGZvcm1hdHRlZCBhcyBhIHNpbmdsZSBwYXRjaDsKK2V2ZXJ5dGhpbmcgZWxzZSBzaG91bGQgYmUgbWFkZSBhcyBhIGxvZ2ljYWwgc2VyaWVzIG9mIGNoYW5nZXMuICBTcGxpdHRpbmcKK3VwIHBhdGNoZXMgaXMgYSBiaXQgb2YgYW4gYXJ0OyBzb21lIGRldmVsb3BlcnMgc3BlbmQgYSBsb25nIHRpbWUgZmlndXJpbmcKK291dCBob3cgdG8gZG8gaXQgaW4gdGhlIHdheSB0aGF0IHRoZSBjb21tdW5pdHkgZXhwZWN0cy4gIFRoZXJlIGFyZSBhIGZldworcnVsZXMgb2YgdGh1bWIsIGhvd2V2ZXIsIHdoaWNoIGNhbiBoZWxwIGNvbnNpZGVyYWJseToKKworIC0gVGhlIHBhdGNoIHNlcmllcyB5b3UgcG9zdCB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgbm90IGJlIHRoZSBzZXJpZXMgb2YKKyAgIGNoYW5nZXMgZm91bmQgaW4geW91ciB3b3JraW5nIHJldmlzaW9uIGNvbnRyb2wgc3lzdGVtLiAgSW5zdGVhZCwgdGhlCisgICBjaGFuZ2VzIHlvdSBoYXZlIG1hZGUgbmVlZCB0byBiZSBjb25zaWRlcmVkIGluIHRoZWlyIGZpbmFsIGZvcm0sIHRoZW4KKyAgIHNwbGl0IGFwYXJ0IGluIHdheXMgd2hpY2ggbWFrZSBzZW5zZS4gIFRoZSBkZXZlbG9wZXJzIGFyZSBpbnRlcmVzdGVkIGluCisgICBkaXNjcmV0ZSwgc2VsZi1jb250YWluZWQgY2hhbmdlcywgbm90IHRoZSBwYXRoIHlvdSB0b29rIHRvIGdldCB0byB0aG9zZQorICAgY2hhbmdlcy4KKworIC0gRWFjaCBsb2dpY2FsbHkgaW5kZXBlbmRlbnQgY2hhbmdlIHNob3VsZCBiZSBmb3JtYXR0ZWQgYXMgYSBzZXBhcmF0ZQorICAgcGF0Y2guICBUaGVzZSBjaGFuZ2VzIGNhbiBiZSBzbWFsbCAoImFkZCBhIGZpZWxkIHRvIHRoaXMgc3RydWN0dXJlIikgb3IKKyAgIGxhcmdlIChhZGRpbmcgYSBzaWduaWZpY2FudCBuZXcgZHJpdmVyLCBmb3IgZXhhbXBsZSksIGJ1dCB0aGV5IHNob3VsZCBiZQorICAgY29uY2VwdHVhbGx5IHNtYWxsIGFuZCBhbWVuYWJsZSB0byBhIG9uZS1saW5lIGRlc2NyaXB0aW9uLiAgRWFjaCBwYXRjaAorICAgc2hvdWxkIG1ha2UgYSBzcGVjaWZpYyBjaGFuZ2Ugd2hpY2ggY2FuIGJlIHJldmlld2VkIG9uIGl0cyBvd24gYW5kCisgICB2ZXJpZmllZCB0byBkbyB3aGF0IGl0IHNheXMgaXQgZG9lcy4KKworIC0gQXMgYSB3YXkgb2YgcmVzdGF0aW5nIHRoZSBndWlkZWxpbmUgYWJvdmU6IGRvIG5vdCBtaXggZGlmZmVyZW50IHR5cGVzIG9mCisgICBjaGFuZ2VzIGluIHRoZSBzYW1lIHBhdGNoLiAgSWYgYSBzaW5nbGUgcGF0Y2ggZml4ZXMgYSBjcml0aWNhbCBzZWN1cml0eQorICAgYnVnLCByZWFycmFuZ2VzIGEgZmV3IHN0cnVjdHVyZXMsIGFuZCByZWZvcm1hdHMgdGhlIGNvZGUsIHRoZXJlIGlzIGEKKyAgIGdvb2QgY2hhbmNlIHRoYXQgaXQgd2lsbCBiZSBwYXNzZWQgb3ZlciBhbmQgdGhlIGltcG9ydGFudCBmaXggd2lsbCBiZQorICAgbG9zdC4KKworIC0gRWFjaCBwYXRjaCBzaG91bGQgeWllbGQgYSBrZXJuZWwgd2hpY2ggYnVpbGRzIGFuZCBydW5zIHByb3Blcmx5OyBpZiB5b3VyCisgICBwYXRjaCBzZXJpZXMgaXMgaW50ZXJydXB0ZWQgaW4gdGhlIG1pZGRsZSwgdGhlIHJlc3VsdCBzaG91bGQgc3RpbGwgYmUgYQorICAgd29ya2luZyBrZXJuZWwuICBQYXJ0aWFsIGFwcGxpY2F0aW9uIG9mIGEgcGF0Y2ggc2VyaWVzIGlzIGEgY29tbW9uCisgICBzY2VuYXJpbyB3aGVuIHRoZSAiZ2l0IGJpc2VjdCIgdG9vbCBpcyB1c2VkIHRvIGZpbmQgcmVncmVzc2lvbnM7IGlmIHRoZQorICAgcmVzdWx0IGlzIGEgYnJva2VuIGtlcm5lbCwgeW91IHdpbGwgbWFrZSBsaWZlIGhhcmRlciBmb3IgZGV2ZWxvcGVycyBhbmQKKyAgIHVzZXJzIHdobyBhcmUgZW5nYWdpbmcgaW4gdGhlIG5vYmxlIHdvcmsgb2YgdHJhY2tpbmcgZG93biBwcm9ibGVtcy4KKworIC0gRG8gbm90IG92ZXJkbyBpdCwgdGhvdWdoLiAgT25lIGRldmVsb3BlciBvbmNlIHBvc3RlZCBhIHNldCBvZiBlZGl0cworICAgdG8gYSBzaW5nbGUgZmlsZSBhcyA1MDAgc2VwYXJhdGUgcGF0Y2hlcyAtIGFuIGFjdCB3aGljaCBkaWQgbm90IG1ha2UgaGltCisgICB0aGUgbW9zdCBwb3B1bGFyIHBlcnNvbiBvbiB0aGUga2VybmVsIG1haWxpbmcgbGlzdC4gIEEgc2luZ2xlIHBhdGNoIGNhbgorICAgYmUgcmVhc29uYWJseSBsYXJnZSBhcyBsb25nIGFzIGl0IHN0aWxsIGNvbnRhaW5zIGEgc2luZ2xlICpsb2dpY2FsKgorICAgY2hhbmdlLgorCisgLSBJdCBjYW4gYmUgdGVtcHRpbmcgdG8gYWRkIGEgd2hvbGUgbmV3IGluZnJhc3RydWN0dXJlIHdpdGggYSBzZXJpZXMgb2YKKyAgIHBhdGNoZXMsIGJ1dCB0byBsZWF2ZSB0aGF0IGluZnJhc3RydWN0dXJlIHVudXNlZCB1bnRpbCB0aGUgZmluYWwgcGF0Y2gKKyAgIGluIHRoZSBzZXJpZXMgZW5hYmxlcyB0aGUgd2hvbGUgdGhpbmcuICBUaGlzIHRlbXB0YXRpb24gc2hvdWxkIGJlCisgICBhdm9pZGVkIGlmIHBvc3NpYmxlOyBpZiB0aGF0IHNlcmllcyBhZGRzIHJlZ3Jlc3Npb25zLCBiaXNlY3Rpb24gd2lsbAorICAgZmluZ2VyIHRoZSBsYXN0IHBhdGNoIGFzIHRoZSBvbmUgd2hpY2ggY2F1c2VkIHRoZSBwcm9ibGVtLCBldmVuIHRob3VnaAorICAgdGhlIHJlYWwgYnVnIGlzIGVsc2V3aGVyZS4gIFdoZW5ldmVyIHBvc3NpYmxlLCBhIHBhdGNoIHdoaWNoIGFkZHMgbmV3CisgICBjb2RlIHNob3VsZCBtYWtlIHRoYXQgY29kZSBhY3RpdmUgaW1tZWRpYXRlbHkuCisKK1dvcmtpbmcgdG8gY3JlYXRlIHRoZSBwZXJmZWN0IHBhdGNoIHNlcmllcyBjYW4gYmUgYSBmcnVzdHJhdGluZyBwcm9jZXNzCit3aGljaCB0YWtlcyBxdWl0ZSBhIGJpdCBvZiB0aW1lIGFuZCB0aG91Z2h0IGFmdGVyIHRoZSAicmVhbCB3b3JrIiBoYXMgYmVlbgorZG9uZS4gIFdoZW4gZG9uZSBwcm9wZXJseSwgdGhvdWdoLCBpdCBpcyB0aW1lIHdlbGwgc3BlbnQuCisKKworNS40OiBQQVRDSCBGT1JNQVRUSU5HIEFORCBDSEFOR0VMT0dTCisKK1NvIG5vdyB5b3UgaGF2ZSBhIHBlcmZlY3Qgc2VyaWVzIG9mIHBhdGNoZXMgZm9yIHBvc3RpbmcsIGJ1dCB0aGUgd29yayBpcworbm90IGRvbmUgcXVpdGUgeWV0LiAgRWFjaCBwYXRjaCBuZWVkcyB0byBiZSBmb3JtYXR0ZWQgaW50byBhIG1lc3NhZ2Ugd2hpY2gKK3F1aWNrbHkgYW5kIGNsZWFybHkgY29tbXVuaWNhdGVzIGl0cyBwdXJwb3NlIHRvIHRoZSByZXN0IG9mIHRoZSB3b3JsZC4gIFRvCit0aGF0IGVuZCwgZWFjaCBwYXRjaCB3aWxsIGJlIGNvbXBvc2VkIG9mIHRoZSBmb2xsb3dpbmc6CisKKyAtIEFuIG9wdGlvbmFsICJGcm9tIiBsaW5lIG5hbWluZyB0aGUgYXV0aG9yIG9mIHRoZSBwYXRjaC4gIFRoaXMgbGluZSBpcworICAgb25seSBuZWNlc3NhcnkgaWYgeW91IGFyZSBwYXNzaW5nIG9uIHNvbWVib2R5IGVsc2UncyBwYXRjaCB2aWEgZW1haWwsCisgICBidXQgaXQgbmV2ZXIgaHVydHMgdG8gYWRkIGl0IHdoZW4gaW4gZG91YnQuCisKKyAtIEEgb25lLWxpbmUgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGUgcGF0Y2ggZG9lcy4gIFRoaXMgbWVzc2FnZSBzaG91bGQgYmUKKyAgIGVub3VnaCBmb3IgYSByZWFkZXIgd2hvIHNlZXMgaXQgd2l0aCBubyBvdGhlciBjb250ZXh0IHRvIGZpZ3VyZSBvdXQgdGhlCisgICBzY29wZSBvZiB0aGUgcGF0Y2g7IGl0IGlzIHRoZSBsaW5lIHRoYXQgd2lsbCBzaG93IHVwIGluIHRoZSAic2hvcnQgZm9ybSIKKyAgIGNoYW5nZWxvZ3MuICBUaGlzIG1lc3NhZ2UgaXMgdXN1YWxseSBmb3JtYXR0ZWQgd2l0aCB0aGUgcmVsZXZhbnQKKyAgIHN1YnN5c3RlbSBuYW1lIGZpcnN0LCBmb2xsb3dlZCBieSB0aGUgcHVycG9zZSBvZiB0aGUgcGF0Y2guICBGb3IKKyAgIGV4YW1wbGU6CisKKwlncGlvOiBmaXggYnVpbGQgb24gQ09ORklHX0dQSU9fU1lTRlM9bgorCisgLSBBIGJsYW5rIGxpbmUgZm9sbG93ZWQgYnkgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgY29udGVudHMgb2YgdGhlCisgICBwYXRjaC4gIFRoaXMgZGVzY3JpcHRpb24gY2FuIGJlIGFzIGxvbmcgYXMgaXMgcmVxdWlyZWQ7IGl0IHNob3VsZCBzYXkKKyAgIHdoYXQgdGhlIHBhdGNoIGRvZXMgYW5kIHdoeSBpdCBzaG91bGQgYmUgYXBwbGllZCB0byB0aGUga2VybmVsLgorCisgLSBPbmUgb3IgbW9yZSB0YWcgbGluZXMsIHdpdGgsIGF0IGEgbWluaW11bSwgb25lIFNpZ25lZC1vZmYtYnk6IGxpbmUgZnJvbQorICAgdGhlIGF1dGhvciBvZiB0aGUgcGF0Y2guICBUYWdzIHdpbGwgYmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGJlbG93LgorCitUaGUgaXRlbXMgYWJvdmUsIHRvZ2V0aGVyLCBmb3JtIHRoZSBjaGFuZ2Vsb2cgZm9yIHRoZSBwYXRjaC4gIFdyaXRpbmcgZ29vZAorY2hhbmdlbG9ncyBpcyBhIGNydWNpYWwgYnV0IG9mdGVuLW5lZ2xlY3RlZCBhcnQ7IGl0J3Mgd29ydGggc3BlbmRpbmcKK2Fub3RoZXIgbW9tZW50IGRpc2N1c3NpbmcgdGhpcyBpc3N1ZS4gIFdoZW4gd3JpdGluZyBhIGNoYW5nZWxvZywgeW91IHNob3VsZAorYmVhciBpbiBtaW5kIHRoYXQgYSBudW1iZXIgb2YgZGlmZmVyZW50IHBlb3BsZSB3aWxsIGJlIHJlYWRpbmcgeW91ciB3b3Jkcy4KK1RoZXNlIGluY2x1ZGUgc3Vic3lzdGVtIG1haW50YWluZXJzIGFuZCByZXZpZXdlcnMgd2hvIG5lZWQgdG8gZGVjaWRlCit3aGV0aGVyIHRoZSBwYXRjaCBzaG91bGQgYmUgaW5jbHVkZWQsIGRpc3RyaWJ1dG9ycyBhbmQgb3RoZXIgbWFpbnRhaW5lcnMKK3RyeWluZyB0byBkZWNpZGUgd2hldGhlciBhIHBhdGNoIHNob3VsZCBiZSBiYWNrcG9ydGVkIHRvIG90aGVyIGtlcm5lbHMsIGJ1ZworaHVudGVycyB3b25kZXJpbmcgd2hldGhlciB0aGUgcGF0Y2ggaXMgcmVzcG9uc2libGUgZm9yIGEgcHJvYmxlbSB0aGV5IGFyZQorY2hhc2luZywgdXNlcnMgd2hvIHdhbnQgdG8ga25vdyBob3cgdGhlIGtlcm5lbCBoYXMgY2hhbmdlZCwgYW5kIG1vcmUuICBBCitnb29kIGNoYW5nZWxvZyBjb252ZXlzIHRoZSBuZWVkZWQgaW5mb3JtYXRpb24gdG8gYWxsIG9mIHRoZXNlIHBlb3BsZSBpbiB0aGUKK21vc3QgZGlyZWN0IGFuZCBjb25jaXNlIHdheSBwb3NzaWJsZS4KKworVG8gdGhhdCBlbmQsIHRoZSBzdW1tYXJ5IGxpbmUgc2hvdWxkIGRlc2NyaWJlIHRoZSBlZmZlY3RzIG9mIGFuZCBtb3RpdmF0aW9uCitmb3IgdGhlIGNoYW5nZSBhcyB3ZWxsIGFzIHBvc3NpYmxlIGdpdmVuIHRoZSBvbmUtbGluZSBjb25zdHJhaW50LiAgVGhlCitkZXRhaWxlZCBkZXNjcmlwdGlvbiBjYW4gdGhlbiBhbXBsaWZ5IG9uIHRob3NlIHRvcGljcyBhbmQgcHJvdmlkZSBhbnkKK25lZWRlZCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiAgSWYgdGhlIHBhdGNoIGZpeGVzIGEgYnVnLCBjaXRlIHRoZSBjb21taXQKK3doaWNoIGludHJvZHVjZWQgdGhlIGJ1ZyBpZiBwb3NzaWJsZSAoYW5kIHBsZWFzZSBwcm92aWRlIGJvdGggdGhlIGNvbW1pdCBJRAorYW5kIHRoZSB0aXRsZSB3aGVuIGNpdGluZyBjb21taXRzKS4gIElmIGEgcHJvYmxlbSBpcyBhc3NvY2lhdGVkIHdpdGgKK3NwZWNpZmljIGxvZyBvciBjb21waWxlciBvdXRwdXQsIGluY2x1ZGUgdGhhdCBvdXRwdXQgdG8gaGVscCBvdGhlcnMKK3NlYXJjaGluZyBmb3IgYSBzb2x1dGlvbiB0byB0aGUgc2FtZSBwcm9ibGVtLiAgSWYgdGhlIGNoYW5nZSBpcyBtZWFudCB0bworc3VwcG9ydCBvdGhlciBjaGFuZ2VzIGNvbWluZyBpbiBsYXRlciBwYXRjaCwgc2F5IHNvLiAgSWYgaW50ZXJuYWwgQVBJcyBhcmUKK2NoYW5nZWQsIGRldGFpbCB0aG9zZSBjaGFuZ2VzIGFuZCBob3cgb3RoZXIgZGV2ZWxvcGVycyBzaG91bGQgcmVzcG9uZC4gIEluCitnZW5lcmFsLCB0aGUgbW9yZSB5b3UgY2FuIHB1dCB5b3Vyc2VsZiBpbnRvIHRoZSBzaG9lcyBvZiBldmVyeWJvZHkgd2hvIHdpbGwKK2JlIHJlYWRpbmcgeW91ciBjaGFuZ2Vsb2csIHRoZSBiZXR0ZXIgdGhhdCBjaGFuZ2Vsb2cgKGFuZCB0aGUga2VybmVsIGFzIGEKK3dob2xlKSB3aWxsIGJlLgorCitOZWVkbGVzcyB0byBzYXksIHRoZSBjaGFuZ2Vsb2cgc2hvdWxkIGJlIHRoZSB0ZXh0IHVzZWQgd2hlbiBjb21taXR0aW5nIHRoZQorY2hhbmdlIHRvIGEgcmV2aXNpb24gY29udHJvbCBzeXN0ZW0uICBJdCB3aWxsIGJlIGZvbGxvd2VkIGJ5OgorCisgLSBUaGUgcGF0Y2ggaXRzZWxmLCBpbiB0aGUgdW5pZmllZCAoIi11IikgcGF0Y2ggZm9ybWF0LiAgVXNpbmcgdGhlICItcCIKKyAgIG9wdGlvbiB0byBkaWZmIHdpbGwgYXNzb2NpYXRlIGZ1bmN0aW9uIG5hbWVzIHdpdGggY2hhbmdlcywgbWFraW5nIHRoZQorICAgcmVzdWx0aW5nIHBhdGNoIGVhc2llciBmb3Igb3RoZXJzIHRvIHJlYWQuCisKK1lvdSBzaG91bGQgYXZvaWQgaW5jbHVkaW5nIGNoYW5nZXMgdG8gaXJyZWxldmFudCBmaWxlcyAodGhvc2UgZ2VuZXJhdGVkIGJ5Cit0aGUgYnVpbGQgcHJvY2VzcywgZm9yIGV4YW1wbGUsIG9yIGVkaXRvciBiYWNrdXAgZmlsZXMpIGluIHRoZSBwYXRjaC4gIFRoZQorZmlsZSAiZG9udGRpZmYiIGluIHRoZSBEb2N1bWVudGF0aW9uIGRpcmVjdG9yeSBjYW4gaGVscCBpbiB0aGlzIHJlZ2FyZDsKK3Bhc3MgaXQgdG8gZGlmZiB3aXRoIHRoZSAiLVgiIG9wdGlvbi4KKworVGhlIHRhZ3MgbWVudGlvbmVkIGFib3ZlIGFyZSB1c2VkIHRvIGRlc2NyaWJlIGhvdyB2YXJpb3VzIGRldmVsb3BlcnMgaGF2ZQorYmVlbiBhc3NvY2lhdGVkIHdpdGggdGhlIGRldmVsb3BtZW50IG9mIHRoaXMgcGF0Y2guICBUaGV5IGFyZSBkZXNjcmliZWQgaW4KK2RldGFpbCBpbiB0aGUgU3VibWl0dGluZ1BhdGNoZXMgZG9jdW1lbnQ7IHdoYXQgZm9sbG93cyBoZXJlIGlzIGEgYnJpZWYKK3N1bW1hcnkuICBFYWNoIG9mIHRoZXNlIGxpbmVzIGhhcyB0aGUgZm9ybWF0OgorCisJdGFnOiBGdWxsIE5hbWUgPGVtYWlsIGFkZHJlc3M+ICBvcHRpb25hbC1vdGhlci1zdHVmZgorCitUaGUgdGFncyBpbiBjb21tb24gdXNlIGFyZToKKworIC0gU2lnbmVkLW9mZi1ieTogdGhpcyBpcyBhIGRldmVsb3BlcidzIGNlcnRpZmljYXRpb24gdGhhdCBoZSBvciBzaGUgaGFzCisgICB0aGUgcmlnaHQgdG8gc3VibWl0IHRoZSBwYXRjaCBmb3IgaW5jbHVzaW9uIGludG8gdGhlIGtlcm5lbC4gIEl0IGlzIGFuCisgICBhZ3JlZW1lbnQgdG8gdGhlIERldmVsb3BlcidzIENlcnRpZmljYXRlIG9mIE9yaWdpbiwgdGhlIGZ1bGwgdGV4dCBvZgorICAgd2hpY2ggY2FuIGJlIGZvdW5kIGluIERvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXMuICBDb2RlIHdpdGhvdXQgYQorICAgcHJvcGVyIHNpZ25vZmYgY2Fubm90IGJlIG1lcmdlZCBpbnRvIHRoZSBtYWlubGluZS4KKworIC0gQWNrZWQtYnk6IGluZGljYXRlcyBhbiBhZ3JlZW1lbnQgYnkgYW5vdGhlciBkZXZlbG9wZXIgKG9mdGVuIGEKKyAgIG1haW50YWluZXIgb2YgdGhlIHJlbGV2YW50IGNvZGUpIHRoYXQgdGhlIHBhdGNoIGlzIGFwcHJvcHJpYXRlIGZvcgorICAgaW5jbHVzaW9uIGludG8gdGhlIGtlcm5lbC4KKworIC0gVGVzdGVkLWJ5OiBzdGF0ZXMgdGhhdCB0aGUgbmFtZWQgcGVyc29uIGhhcyB0ZXN0ZWQgdGhlIHBhdGNoIGFuZCBmb3VuZAorICAgaXQgdG8gd29yay4KKworIC0gUmV2aWV3ZWQtYnk6IHRoZSBuYW1lZCBkZXZlbG9wZXIgaGFzIHJldmlld2VkIHRoZSBwYXRjaCBmb3IgY29ycmVjdG5lc3M7CisgICBzZWUgdGhlIHJldmlld2VyJ3Mgc3RhdGVtZW50IGluIERvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXMgZm9yIG1vcmUKKyAgIGRldGFpbC4KKworIC0gUmVwb3J0ZWQtYnk6IG5hbWVzIGEgdXNlciB3aG8gcmVwb3J0ZWQgYSBwcm9ibGVtIHdoaWNoIGlzIGZpeGVkIGJ5IHRoaXMKKyAgIHBhdGNoOyB0aGlzIHRhZyBpcyB1c2VkIHRvIGdpdmUgY3JlZGl0IHRvIHRoZSAob2Z0ZW4gdW5kZXJhcHByZWNpYXRlZCkKKyAgIHBlb3BsZSB3aG8gdGVzdCBvdXIgY29kZSBhbmQgbGV0IHVzIGtub3cgd2hlbiB0aGluZ3MgZG8gbm90IHdvcmsKKyAgIGNvcnJlY3RseS4KKworIC0gQ2M6IHRoZSBuYW1lZCBwZXJzb24gcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBwYXRjaCBhbmQgaGFkIHRoZQorICAgb3Bwb3J0dW5pdHkgdG8gY29tbWVudCBvbiBpdC4KKworQmUgY2FyZWZ1bCBpbiB0aGUgYWRkaXRpb24gb2YgdGFncyB0byB5b3VyIHBhdGNoZXM6IG9ubHkgQ2M6IGlzIGFwcHJvcHJpYXRlCitmb3IgYWRkaXRpb24gd2l0aG91dCB0aGUgZXhwbGljaXQgcGVybWlzc2lvbiBvZiB0aGUgcGVyc29uIG5hbWVkLgorCisKKzUuNTogU0VORElORyBUSEUgUEFUQ0gKKworQmVmb3JlIHlvdSBtYWlsIHlvdXIgcGF0Y2hlcywgdGhlcmUgYXJlIGEgY291cGxlIG9mIG90aGVyIHRoaW5ncyB5b3Ugc2hvdWxkCit0YWtlIGNhcmUgb2Y6CisKKyAtIEFyZSB5b3Ugc3VyZSB0aGF0IHlvdXIgbWFpbGVyIHdpbGwgbm90IGNvcnJ1cHQgdGhlIHBhdGNoZXM/ICBQYXRjaGVzCisgICB3aGljaCBoYXZlIGhhZCBncmF0dWl0b3VzIHdoaXRlLXNwYWNlIGNoYW5nZXMgb3IgbGluZSB3cmFwcGluZyBwZXJmb3JtZWQKKyAgIGJ5IHRoZSBtYWlsIGNsaWVudCB3aWxsIG5vdCBhcHBseSBhdCB0aGUgb3RoZXIgZW5kLCBhbmQgb2Z0ZW4gd2lsbCBub3QKKyAgIGJlIGV4YW1pbmVkIGluIGFueSBkZXRhaWwuICBJZiB0aGVyZSBpcyBhbnkgZG91YnQgYXQgYWxsLCBtYWlsIHRoZSBwYXRjaAorICAgdG8geW91cnNlbGYgYW5kIGNvbnZpbmNlIHlvdXJzZWxmIHRoYXQgaXQgc2hvd3MgdXAgaW50YWN0LgorCisgICBEb2N1bWVudGF0aW9uL2VtYWlsLWNsaWVudHMudHh0IGhhcyBzb21lIGhlbHBmdWwgaGludHMgb24gbWFraW5nCisgICBzcGVjaWZpYyBtYWlsIGNsaWVudHMgd29yayBmb3Igc2VuZGluZyBwYXRjaGVzLgorCisgLSBBcmUgeW91IHN1cmUgeW91ciBwYXRjaCBpcyBmcmVlIG9mIHNpbGx5IG1pc3Rha2VzPyAgWW91IHNob3VsZCBhbHdheXMKKyAgIHJ1biBwYXRjaGVzIHRocm91Z2ggc2NyaXB0cy9jaGVja3BhdGNoLnBsIGFuZCBhZGRyZXNzIHRoZSBjb21wbGFpbnRzIGl0CisgICBjb21lcyB1cCB3aXRoLiAgUGxlYXNlIGJlYXIgaW4gbWluZCB0aGF0IGNoZWNrcGF0Y2gucGwsIHdoaWxlIGJlaW5nIHRoZQorICAgZW1ib2RpbWVudCBvZiBhIGZhaXIgYW1vdW50IG9mIHRob3VnaHQgYWJvdXQgd2hhdCBrZXJuZWwgcGF0Y2hlcyBzaG91bGQKKyAgIGxvb2sgbGlrZSwgaXMgbm90IHNtYXJ0ZXIgdGhhbiB5b3UuICBJZiBmaXhpbmcgYSBjaGVja3BhdGNoLnBsIGNvbXBsYWludAorICAgd291bGQgbWFrZSB0aGUgY29kZSB3b3JzZSwgZG9uJ3QgZG8gaXQuCisKK1BhdGNoZXMgc2hvdWxkIGFsd2F5cyBiZSBzZW50IGFzIHBsYWluIHRleHQuICBQbGVhc2UgZG8gbm90IHNlbmQgdGhlbSBhcworYXR0YWNobWVudHM7IHRoYXQgbWFrZXMgaXQgbXVjaCBoYXJkZXIgZm9yIHJldmlld2VycyB0byBxdW90ZSBzZWN0aW9ucyBvZgordGhlIHBhdGNoIGluIHRoZWlyIHJlcGxpZXMuICBJbnN0ZWFkLCBqdXN0IHB1dCB0aGUgcGF0Y2ggZGlyZWN0bHkgaW50byB5b3VyCittZXNzYWdlLgorCitXaGVuIG1haWxpbmcgcGF0Y2hlcywgaXQgaXMgaW1wb3J0YW50IHRvIHNlbmQgY29waWVzIHRvIGFueWJvZHkgd2hvIG1pZ2h0CitiZSBpbnRlcmVzdGVkIGluIGl0LiAgVW5saWtlIHNvbWUgb3RoZXIgcHJvamVjdHMsIHRoZSBrZXJuZWwgZW5jb3VyYWdlcworcGVvcGxlIHRvIGVyciBvbiB0aGUgc2lkZSBvZiBzZW5kaW5nIHRvbyBtYW55IGNvcGllczsgZG9uJ3QgYXNzdW1lIHRoYXQgdGhlCityZWxldmFudCBwZW9wbGUgd2lsbCBzZWUgeW91ciBwb3N0aW5nIG9uIHRoZSBtYWlsaW5nIGxpc3RzLiAgSW4gcGFydGljdWxhciwKK2NvcGllcyBzaG91bGQgZ28gdG86CisKKyAtIFRoZSBtYWludGFpbmVyKHMpIG9mIHRoZSBhZmZlY3RlZCBzdWJzeXN0ZW0ocykuICBBcyBkZXNjcmliZWQgZWFybGllciwKKyAgIHRoZSBNQUlOVEFJTkVSUyBmaWxlIGlzIHRoZSBmaXJzdCBwbGFjZSB0byBsb29rIGZvciB0aGVzZSBwZW9wbGUuCisKKyAtIE90aGVyIGRldmVsb3BlcnMgd2hvIGhhdmUgYmVlbiB3b3JraW5nIGluIHRoZSBzYW1lIGFyZWEgLSBlc3BlY2lhbGx5CisgICB0aG9zZSB3aG8gbWlnaHQgYmUgd29ya2luZyB0aGVyZSBub3cuICBVc2luZyBnaXQgdG8gc2VlIHdobyBlbHNlIGhhcworICAgbW9kaWZpZWQgdGhlIGZpbGVzIHlvdSBhcmUgd29ya2luZyBvbiBjYW4gYmUgaGVscGZ1bC4KKworIC0gSWYgeW91IGFyZSByZXNwb25kaW5nIHRvIGEgYnVnIHJlcG9ydCBvciBhIGZlYXR1cmUgcmVxdWVzdCwgY29weSB0aGUKKyAgIG9yaWdpbmFsIHBvc3RlciBhcyB3ZWxsLgorCisgLSBTZW5kIGEgY29weSB0byB0aGUgcmVsZXZhbnQgbWFpbGluZyBsaXN0LCBvciwgaWYgbm90aGluZyBlbHNlIGFwcGxpZXMsCisgICB0aGUgbGludXgta2VybmVsIGxpc3QuCisKKyAtIElmIHlvdSBhcmUgZml4aW5nIGEgYnVnLCB0aGluayBhYm91dCB3aGV0aGVyIHRoZSBmaXggc2hvdWxkIGdvIGludG8gdGhlCisgICBuZXh0IHN0YWJsZSB1cGRhdGUuICBJZiBzbywgc3RhYmxlQHZnZXIua2VybmVsLm9yZyBzaG91bGQgZ2V0IGEgY29weSBvZgorICAgdGhlIHBhdGNoLiAgQWxzbyBhZGQgYSAiQ2M6IHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmciIHRvIHRoZSB0YWdzIHdpdGhpbgorICAgdGhlIHBhdGNoIGl0c2VsZjsgdGhhdCB3aWxsIGNhdXNlIHRoZSBzdGFibGUgdGVhbSB0byBnZXQgYSBub3RpZmljYXRpb24KKyAgIHdoZW4geW91ciBmaXggZ29lcyBpbnRvIHRoZSBtYWlubGluZS4KKworV2hlbiBzZWxlY3RpbmcgcmVjaXBpZW50cyBmb3IgYSBwYXRjaCwgaXQgaXMgZ29vZCB0byBoYXZlIGFuIGlkZWEgb2Ygd2hvCit5b3UgdGhpbmsgd2lsbCBldmVudHVhbGx5IGFjY2VwdCB0aGUgcGF0Y2ggYW5kIGdldCBpdCBtZXJnZWQuICBXaGlsZSBpdAoraXMgcG9zc2libGUgdG8gc2VuZCBwYXRjaGVzIGRpcmVjdGx5IHRvIExpbnVzIFRvcnZhbGRzIGFuZCBoYXZlIGhpbSBtZXJnZQordGhlbSwgdGhpbmdzIGFyZSBub3Qgbm9ybWFsbHkgZG9uZSB0aGF0IHdheS4gIExpbnVzIGlzIGJ1c3ksIGFuZCB0aGVyZSBhcmUKK3N1YnN5c3RlbSBtYWludGFpbmVycyB3aG8gd2F0Y2ggb3ZlciBzcGVjaWZpYyBwYXJ0cyBvZiB0aGUga2VybmVsLiAgVXN1YWxseQoreW91IHdpbGwgYmUgd2FudGluZyB0aGF0IG1haW50YWluZXIgdG8gbWVyZ2UgeW91ciBwYXRjaGVzLiAgSWYgdGhlcmUgaXMgbm8KK29idmlvdXMgbWFpbnRhaW5lciwgQW5kcmV3IE1vcnRvbiBpcyBvZnRlbiB0aGUgcGF0Y2ggdGFyZ2V0IG9mIGxhc3QgcmVzb3J0LgorCitQYXRjaGVzIG5lZWQgZ29vZCBzdWJqZWN0IGxpbmVzLiAgVGhlIGNhbm9uaWNhbCBmb3JtYXQgZm9yIGEgcGF0Y2ggbGluZSBpcworc29tZXRoaW5nIGxpa2U6CisKKwlbUEFUQ0ggbm4vbW1dIHN1YnN5czogb25lLWxpbmUgZGVzY3JpcHRpb24gb2YgdGhlIHBhdGNoCisKK3doZXJlICJubiIgaXMgdGhlIG9yZGluYWwgbnVtYmVyIG9mIHRoZSBwYXRjaCwgIm1tIiBpcyB0aGUgdG90YWwgbnVtYmVyIG9mCitwYXRjaGVzIGluIHRoZSBzZXJpZXMsIGFuZCAic3Vic3lzIiBpcyB0aGUgbmFtZSBvZiB0aGUgYWZmZWN0ZWQgc3Vic3lzdGVtLgorQ2xlYXJseSwgbm4vbW0gY2FuIGJlIG9taXR0ZWQgZm9yIGEgc2luZ2xlLCBzdGFuZGFsb25lIHBhdGNoLgorCitJZiB5b3UgaGF2ZSBhIHNpZ25pZmljYW50IHNlcmllcyBvZiBwYXRjaGVzLCBpdCBpcyBjdXN0b21hcnkgdG8gc2VuZCBhbgoraW50cm9kdWN0b3J5IGRlc2NyaXB0aW9uIGFzIHBhcnQgemVyby4gIFRoaXMgY29udmVudGlvbiBpcyBub3QgdW5pdmVyc2FsbHkKK2ZvbGxvd2VkIHRob3VnaDsgaWYgeW91IHVzZSBpdCwgcmVtZW1iZXIgdGhhdCBpbmZvcm1hdGlvbiBpbiB0aGUKK2ludHJvZHVjdGlvbiBkb2VzIG5vdCBtYWtlIGl0IGludG8gdGhlIGtlcm5lbCBjaGFuZ2Vsb2dzLiAgU28gcGxlYXNlIGVuc3VyZQordGhhdCB0aGUgcGF0Y2hlcywgdGhlbXNlbHZlcywgaGF2ZSBjb21wbGV0ZSBjaGFuZ2Vsb2cgaW5mb3JtYXRpb24uCisKK0luIGdlbmVyYWwsIHRoZSBzZWNvbmQgYW5kIGZvbGxvd2luZyBwYXJ0cyBvZiBhIG11bHRpLXBhcnQgcGF0Y2ggc2hvdWxkIGJlCitzZW50IGFzIGEgcmVwbHkgdG8gdGhlIGZpcnN0IHBhcnQgc28gdGhhdCB0aGV5IGFsbCB0aHJlYWQgdG9nZXRoZXIgYXQgdGhlCityZWNlaXZpbmcgZW5kLiAgVG9vbHMgbGlrZSBnaXQgYW5kIHF1aWx0IGhhdmUgY29tbWFuZHMgdG8gbWFpbCBvdXQgYSBzZXQgb2YKK3BhdGNoZXMgd2l0aCB0aGUgcHJvcGVyIHRocmVhZGluZy4gIElmIHlvdSBoYXZlIGEgbG9uZyBzZXJpZXMsIHRob3VnaCwgYW5kCithcmUgdXNpbmcgZ2l0LCBwbGVhc2Ugc3RheSBhd2F5IGZyb20gdGhlIC0tY2hhaW4tcmVwbHktdG8gb3B0aW9uIHRvIGF2b2lkCitjcmVhdGluZyBleGNlcHRpb25hbGx5IGRlZXAgbmVzdGluZy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2ZWxvcG1lbnQtcHJvY2Vzcy82LkZvbGxvd3Rocm91Z2ggYi9Eb2N1bWVudGF0aW9uL2RldmVsb3BtZW50LXByb2Nlc3MvNi5Gb2xsb3d0aHJvdWdoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxZDMyNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmVsb3BtZW50LXByb2Nlc3MvNi5Gb2xsb3d0aHJvdWdoCkBAIC0wLDAgKzEsMjA2IEBACis2OiBGT0xMT1dUSFJPVUdICisKK0F0IHRoaXMgcG9pbnQsIHlvdSBoYXZlIGZvbGxvd2VkIHRoZSBndWlkZWxpbmVzIGdpdmVuIHNvIGZhciBhbmQsIHdpdGggdGhlCithZGRpdGlvbiBvZiB5b3VyIG93biBlbmdpbmVlcmluZyBza2lsbHMsIGhhdmUgcG9zdGVkIGEgcGVyZmVjdCBzZXJpZXMgb2YKK3BhdGNoZXMuICBPbmUgb2YgdGhlIGJpZ2dlc3QgbWlzdGFrZXMgdGhhdCBldmVuIGV4cGVyaWVuY2VkIGtlcm5lbAorZGV2ZWxvcGVycyBjYW4gbWFrZSBpcyB0byBjb25jbHVkZSB0aGF0IHRoZWlyIHdvcmsgaXMgbm93IGRvbmUuICBJbiB0cnV0aCwKK3Bvc3RpbmcgcGF0Y2hlcyBpbmRpY2F0ZXMgYSB0cmFuc2l0aW9uIGludG8gdGhlIG5leHQgc3RhZ2Ugb2YgdGhlIHByb2Nlc3MsCit3aXRoLCBwb3NzaWJseSwgcXVpdGUgYSBiaXQgb2Ygd29yayB5ZXQgdG8gYmUgZG9uZS4KKworSXQgaXMgYSByYXJlIHBhdGNoIHdoaWNoIGlzIHNvIGdvb2QgYXQgaXRzIGZpcnN0IHBvc3RpbmcgdGhhdCB0aGVyZSBpcyBubworcm9vbSBmb3IgaW1wcm92ZW1lbnQuICBUaGUga2VybmVsIGRldmVsb3BtZW50IHByb2Nlc3MgcmVjb2duaXplcyB0aGlzIGZhY3QsCithbmQsIGFzIGEgcmVzdWx0LCBpcyBoZWF2aWx5IG9yaWVudGVkIHRvd2FyZCB0aGUgaW1wcm92ZW1lbnQgb2YgcG9zdGVkCitjb2RlLiAgWW91LCBhcyB0aGUgYXV0aG9yIG9mIHRoYXQgY29kZSwgd2lsbCBiZSBleHBlY3RlZCB0byB3b3JrIHdpdGggdGhlCitrZXJuZWwgY29tbXVuaXR5IHRvIGVuc3VyZSB0aGF0IHlvdXIgY29kZSBpcyB1cCB0byB0aGUga2VybmVsJ3MgcXVhbGl0eQorc3RhbmRhcmRzLiAgQSBmYWlsdXJlIHRvIHBhcnRpY2lwYXRlIGluIHRoaXMgcHJvY2VzcyBpcyBxdWl0ZSBsaWtlbHkgdG8KK3ByZXZlbnQgdGhlIGluY2x1c2lvbiBvZiB5b3VyIHBhdGNoZXMgaW50byB0aGUgbWFpbmxpbmUuCisKKworNi4xOiBXT1JLSU5HIFdJVEggUkVWSUVXRVJTCisKK0EgcGF0Y2ggb2YgYW55IHNpZ25pZmljYW5jZSB3aWxsIHJlc3VsdCBpbiBhIG51bWJlciBvZiBjb21tZW50cyBmcm9tIG90aGVyCitkZXZlbG9wZXJzIGFzIHRoZXkgcmV2aWV3IHRoZSBjb2RlLiAgV29ya2luZyB3aXRoIHJldmlld2VycyBjYW4gYmUsIGZvcgorbWFueSBkZXZlbG9wZXJzLCB0aGUgbW9zdCBpbnRpbWlkYXRpbmcgcGFydCBvZiB0aGUga2VybmVsIGRldmVsb3BtZW50Citwcm9jZXNzLiAgTGlmZSBjYW4gYmUgbWFkZSBtdWNoIGVhc2llciwgdGhvdWdoLCBpZiB5b3Uga2VlcCBhIGZldyB0aGluZ3MgaW4KK21pbmQ6CisKKyAtIElmIHlvdSBoYXZlIGV4cGxhaW5lZCB5b3VyIHBhdGNoIHdlbGwsIHJldmlld2VycyB3aWxsIHVuZGVyc3RhbmQgaXRzCisgICB2YWx1ZSBhbmQgd2h5IHlvdSB3ZW50IHRvIHRoZSB0cm91YmxlIG9mIHdyaXRpbmcgaXQuICBCdXQgdGhhdCB2YWx1ZQorICAgd2lsbCBub3Qga2VlcCB0aGVtIGZyb20gYXNraW5nIGEgZnVuZGFtZW50YWwgcXVlc3Rpb246IHdoYXQgd2lsbCBpdCBiZQorICAgbGlrZSB0byBtYWludGFpbiBhIGtlcm5lbCB3aXRoIHRoaXMgY29kZSBpbiBpdCBmaXZlIG9yIHRlbiB5ZWFycyBsYXRlcj8KKyAgIE1hbnkgb2YgdGhlIGNoYW5nZXMgeW91IG1heSBiZSBhc2tlZCB0byBtYWtlIC0gZnJvbSBjb2Rpbmcgc3R5bGUgdHdlYWtzCisgICB0byBzdWJzdGFudGlhbCByZXdyaXRlcyAtIGNvbWUgZnJvbSB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IExpbnV4IHdpbGwKKyAgIHN0aWxsIGJlIGFyb3VuZCBhbmQgdW5kZXIgZGV2ZWxvcG1lbnQgYSBkZWNhZGUgZnJvbSBub3cuCisKKyAtIENvZGUgcmV2aWV3IGlzIGhhcmQgd29yaywgYW5kIGl0IGlzIGEgcmVsYXRpdmVseSB0aGFua2xlc3Mgb2NjdXBhdGlvbjsKKyAgIHBlb3BsZSByZW1lbWJlciB3aG8gd3JvdGUga2VybmVsIGNvZGUsIGJ1dCB0aGVyZSBpcyBsaXR0bGUgbGFzdGluZyBmYW1lCisgICBmb3IgdGhvc2Ugd2hvIHJldmlld2VkIGl0LiAgU28gcmV2aWV3ZXJzIGNhbiBnZXQgZ3J1bXB5LCBlc3BlY2lhbGx5IHdoZW4KKyAgIHRoZXkgc2VlIHRoZSBzYW1lIG1pc3Rha2VzIGJlaW5nIG1hZGUgb3ZlciBhbmQgb3ZlciBhZ2Fpbi4gIElmIHlvdSBnZXQgYQorICAgcmV2aWV3IHdoaWNoIHNlZW1zIGFuZ3J5LCBpbnN1bHRpbmcsIG9yIG91dHJpZ2h0IG9mZmVuc2l2ZSwgcmVzaXN0IHRoZQorICAgaW1wdWxzZSB0byByZXNwb25kIGluIGtpbmQuICBDb2RlIHJldmlldyBpcyBhYm91dCB0aGUgY29kZSwgbm90IGFib3V0CisgICB0aGUgcGVvcGxlLCBhbmQgY29kZSByZXZpZXdlcnMgYXJlIG5vdCBhdHRhY2tpbmcgeW91IHBlcnNvbmFsbHkuCisKKyAtIFNpbWlsYXJseSwgY29kZSByZXZpZXdlcnMgYXJlIG5vdCB0cnlpbmcgdG8gcHJvbW90ZSB0aGVpciBlbXBsb3llcnMnCisgICBhZ2VuZGFzIGF0IHRoZSBleHBlbnNlIG9mIHlvdXIgb3duLiAgS2VybmVsIGRldmVsb3BlcnMgb2Z0ZW4gZXhwZWN0IHRvCisgICBiZSB3b3JraW5nIG9uIHRoZSBrZXJuZWwgeWVhcnMgZnJvbSBub3csIGJ1dCB0aGV5IHVuZGVyc3RhbmQgdGhhdCB0aGVpcgorICAgZW1wbG95ZXIgY291bGQgY2hhbmdlLiAgVGhleSB0cnVseSBhcmUsIGFsbW9zdCB3aXRob3V0IGV4Y2VwdGlvbiwKKyAgIHdvcmtpbmcgdG93YXJkIHRoZSBjcmVhdGlvbiBvZiB0aGUgYmVzdCBrZXJuZWwgdGhleSBjYW47IHRoZXkgYXJlIG5vdAorICAgdHJ5aW5nIHRvIGNyZWF0ZSBkaXNjb21mb3J0IGZvciB0aGVpciBlbXBsb3llcnMnIGNvbXBldGl0b3JzLgorCitXaGF0IGFsbCBvZiB0aGlzIGNvbWVzIGRvd24gdG8gaXMgdGhhdCwgd2hlbiByZXZpZXdlcnMgc2VuZCB5b3UgY29tbWVudHMsCit5b3UgbmVlZCB0byBwYXkgYXR0ZW50aW9uIHRvIHRoZSB0ZWNobmljYWwgb2JzZXJ2YXRpb25zIHRoYXQgdGhleSBhcmUKK21ha2luZy4gIERvIG5vdCBsZXQgdGhlaXIgZm9ybSBvZiBleHByZXNzaW9uIG9yIHlvdXIgb3duIHByaWRlIGtlZXAgdGhhdAorZnJvbSBoYXBwZW5pbmcuICBXaGVuIHlvdSBnZXQgcmV2aWV3IGNvbW1lbnRzIG9uIGEgcGF0Y2gsIHRha2UgdGhlIHRpbWUgdG8KK3VuZGVyc3RhbmQgd2hhdCB0aGUgcmV2aWV3ZXIgaXMgdHJ5aW5nIHRvIHNheS4gIElmIHBvc3NpYmxlLCBmaXggdGhlIHRoaW5ncwordGhhdCB0aGUgcmV2aWV3ZXIgaXMgYXNraW5nIHlvdSB0byBmaXguICBBbmQgcmVzcG9uZCBiYWNrIHRvIHRoZSByZXZpZXdlcjoKK3RoYW5rIHRoZW0sIGFuZCBkZXNjcmliZSBob3cgeW91IHdpbGwgYW5zd2VyIHRoZWlyIHF1ZXN0aW9ucy4KKworTm90ZSB0aGF0IHlvdSBkbyBub3QgaGF2ZSB0byBhZ3JlZSB3aXRoIGV2ZXJ5IGNoYW5nZSBzdWdnZXN0ZWQgYnkKK3Jldmlld2Vycy4gIElmIHlvdSBiZWxpZXZlIHRoYXQgdGhlIHJldmlld2VyIGhhcyBtaXN1bmRlcnN0b29kIHlvdXIgY29kZSwKK2V4cGxhaW4gd2hhdCBpcyByZWFsbHkgZ29pbmcgb24uICBJZiB5b3UgaGF2ZSBhIHRlY2huaWNhbCBvYmplY3Rpb24gdG8gYQorc3VnZ2VzdGVkIGNoYW5nZSwgZGVzY3JpYmUgaXQgYW5kIGp1c3RpZnkgeW91ciBzb2x1dGlvbiB0byB0aGUgcHJvYmxlbS4gIElmCit5b3VyIGV4cGxhbmF0aW9ucyBtYWtlIHNlbnNlLCB0aGUgcmV2aWV3ZXIgd2lsbCBhY2NlcHQgdGhlbS4gIFNob3VsZCB5b3VyCitleHBsYW5hdGlvbiBub3QgcHJvdmUgcGVyc3Vhc2l2ZSwgdGhvdWdoLCBlc3BlY2lhbGx5IGlmIG90aGVycyBzdGFydCB0bworYWdyZWUgd2l0aCB0aGUgcmV2aWV3ZXIsIHRha2Ugc29tZSB0aW1lIHRvIHRoaW5rIHRoaW5ncyBvdmVyIGFnYWluLiAgSXQgY2FuCitiZSBlYXN5IHRvIGJlY29tZSBibGluZGVkIGJ5IHlvdXIgb3duIHNvbHV0aW9uIHRvIGEgcHJvYmxlbSB0byB0aGUgcG9pbnQKK3RoYXQgeW91IGRvbid0IHJlYWxpemUgdGhhdCBzb21ldGhpbmcgaXMgZnVuZGFtZW50YWxseSB3cm9uZyBvciwgcGVyaGFwcywKK3lvdSdyZSBub3QgZXZlbiBzb2x2aW5nIHRoZSByaWdodCBwcm9ibGVtLgorCitBbmRyZXcgTW9ydG9uIGhhcyBzdWdnZXN0ZWQgdGhhdCBldmVyeSByZXZpZXcgY29tbWVudCB3aGljaCBkb2VzIG5vdCByZXN1bHQKK2luIGEgY29kZSBjaGFuZ2Ugc2hvdWxkIHJlc3VsdCBpbiBhbiBhZGRpdGlvbmFsIGNvZGUgY29tbWVudCBpbnN0ZWFkOyB0aGF0CitjYW4gaGVscCBmdXR1cmUgcmV2aWV3ZXJzIGF2b2lkIHRoZSBxdWVzdGlvbnMgd2hpY2ggY2FtZSB1cCB0aGUgZmlyc3QgdGltZQorYXJvdW5kLgorCitPbmUgZmF0YWwgbWlzdGFrZSBpcyB0byBpZ25vcmUgcmV2aWV3IGNvbW1lbnRzIGluIHRoZSBob3BlIHRoYXQgdGhleSB3aWxsCitnbyBhd2F5LiAgVGhleSB3aWxsIG5vdCBnbyBhd2F5LiAgSWYgeW91IHJlcG9zdCBjb2RlIHdpdGhvdXQgaGF2aW5nCityZXNwb25kZWQgdG8gdGhlIGNvbW1lbnRzIHlvdSBnb3QgdGhlIHRpbWUgYmVmb3JlLCB5b3UncmUgbGlrZWx5IHRvIGZpbmQKK3RoYXQgeW91ciBwYXRjaGVzIGdvIG5vd2hlcmUuCisKK1NwZWFraW5nIG9mIHJlcG9zdGluZyBjb2RlOiBwbGVhc2UgYmVhciBpbiBtaW5kIHRoYXQgcmV2aWV3ZXJzIGFyZSBub3QKK2dvaW5nIHRvIHJlbWVtYmVyIGFsbCB0aGUgZGV0YWlscyBvZiB0aGUgY29kZSB5b3UgcG9zdGVkIHRoZSBsYXN0IHRpbWUKK2Fyb3VuZC4gIFNvIGl0IGlzIGFsd2F5cyBhIGdvb2QgaWRlYSB0byByZW1pbmQgcmV2aWV3ZXJzIG9mIHByZXZpb3VzbHkKK3JhaXNlZCBpc3N1ZXMgYW5kIGhvdyB5b3UgZGVhbHQgd2l0aCB0aGVtOyB0aGUgcGF0Y2ggY2hhbmdlbG9nIGlzIGEgZ29vZAorcGxhY2UgZm9yIHRoaXMga2luZCBvZiBpbmZvcm1hdGlvbi4gIFJldmlld2VycyBzaG91bGQgbm90IGhhdmUgdG8gc2VhcmNoCit0aHJvdWdoIGxpc3QgYXJjaGl2ZXMgdG8gZmFtaWxpYXJpemUgdGhlbXNlbHZlcyB3aXRoIHdoYXQgd2FzIHNhaWQgbGFzdAordGltZTsgaWYgeW91IGhlbHAgdGhlbSBnZXQgYSBydW5uaW5nIHN0YXJ0LCB0aGV5IHdpbGwgYmUgaW4gYSBiZXR0ZXIgbW9vZAord2hlbiB0aGV5IHJldmlzaXQgeW91ciBjb2RlLgorCitXaGF0IGlmIHlvdSd2ZSB0cmllZCB0byBkbyBldmVyeXRoaW5nIHJpZ2h0IGFuZCB0aGluZ3Mgc3RpbGwgYXJlbid0IGdvaW5nCithbnl3aGVyZT8gIE1vc3QgdGVjaG5pY2FsIGRpc2FncmVlbWVudHMgY2FuIGJlIHJlc29sdmVkIHRocm91Z2ggZGlzY3Vzc2lvbiwKK2J1dCB0aGVyZSBhcmUgdGltZXMgd2hlbiBzb21lYm9keSBzaW1wbHkgaGFzIHRvIG1ha2UgYSBkZWNpc2lvbi4gIElmIHlvdQoraG9uZXN0bHkgYmVsaWV2ZSB0aGF0IHRoaXMgZGVjaXNpb24gaXMgZ29pbmcgYWdhaW5zdCB5b3Ugd3JvbmdseSwgeW91IGNhbgorYWx3YXlzIHRyeSBhcHBlYWxpbmcgdG8gYSBoaWdoZXIgcG93ZXIuICBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoYXQgaGlnaGVyCitwb3dlciB0ZW5kcyB0byBiZSBBbmRyZXcgTW9ydG9uLiAgQW5kcmV3IGhhcyBhIGdyZWF0IGRlYWwgb2YgcmVzcGVjdCBpbiB0aGUKK2tlcm5lbCBkZXZlbG9wbWVudCBjb21tdW5pdHk7IGhlIGNhbiBvZnRlbiB1bmphbSBhIHNpdHVhdGlvbiB3aGljaCBzZWVtcyB0bworYmUgaG9wZWxlc3NseSBibG9ja2VkLiAgQXBwZWFsaW5nIHRvIEFuZHJldyBzaG91bGQgbm90IGJlIGRvbmUgbGlnaHRseSwKK3Rob3VnaCwgYW5kIG5vdCBiZWZvcmUgYWxsIG90aGVyIGFsdGVybmF0aXZlcyBoYXZlIGJlZW4gZXhwbG9yZWQuICBBbmQgYmVhcgoraW4gbWluZCwgb2YgY291cnNlLCB0aGF0IGhlIG1heSBub3QgYWdyZWUgd2l0aCB5b3UgZWl0aGVyLgorCisKKzYuMjogV0hBVCBIQVBQRU5TIE5FWFQKKworSWYgYSBwYXRjaCBpcyBjb25zaWRlcmVkIHRvIGJlIGEgZ29vZCB0aGluZyB0byBhZGQgdG8gdGhlIGtlcm5lbCwgYW5kIG9uY2UKK21vc3Qgb2YgdGhlIHJldmlldyBpc3N1ZXMgaGF2ZSBiZWVuIHJlc29sdmVkLCB0aGUgbmV4dCBzdGVwIGlzIHVzdWFsbHkKK2VudHJ5IGludG8gYSBzdWJzeXN0ZW0gbWFpbnRhaW5lcidzIHRyZWUuICBIb3cgdGhhdCB3b3JrcyB2YXJpZXMgZnJvbSBvbmUKK3N1YnN5c3RlbSB0byB0aGUgbmV4dDsgZWFjaCBtYWludGFpbmVyIGhhcyBoaXMgb3IgaGVyIG93biB3YXkgb2YgZG9pbmcKK3RoaW5ncy4gIEluIHBhcnRpY3VsYXIsIHRoZXJlIG1heSBiZSBtb3JlIHRoYW4gb25lIHRyZWUgLSBvbmUsIHBlcmhhcHMsCitkZWRpY2F0ZWQgdG8gcGF0Y2hlcyBwbGFubmVkIGZvciB0aGUgbmV4dCBtZXJnZSB3aW5kb3csIGFuZCBhbm90aGVyIGZvcgorbG9uZ2VyLXRlcm0gd29yay4KKworRm9yIHBhdGNoZXMgYXBwbHlpbmcgdG8gYXJlYXMgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIG9idmlvdXMgc3Vic3lzdGVtIHRyZWUKKyhtZW1vcnkgbWFuYWdlbWVudCBwYXRjaGVzLCBmb3IgZXhhbXBsZSksIHRoZSBkZWZhdWx0IHRyZWUgb2Z0ZW4gZW5kcyB1cAorYmVpbmcgLW1tLiAgUGF0Y2hlcyB3aGljaCBhZmZlY3QgbXVsdGlwbGUgc3Vic3lzdGVtcyBjYW4gYWxzbyBlbmQgdXAgZ29pbmcKK3Rocm91Z2ggdGhlIC1tbSB0cmVlLgorCitJbmNsdXNpb24gaW50byBhIHN1YnN5c3RlbSB0cmVlIGNhbiBicmluZyBhIGhpZ2hlciBsZXZlbCBvZiB2aXNpYmlsaXR5IHRvIGEKK3BhdGNoLiAgTm93IG90aGVyIGRldmVsb3BlcnMgd29ya2luZyB3aXRoIHRoYXQgdHJlZSB3aWxsIGdldCB0aGUgcGF0Y2ggYnkKK2RlZmF1bHQuICBTdWJzeXN0ZW0gdHJlZXMgdHlwaWNhbGx5IGZlZWQgbGludXgtbmV4dCBhcyB3ZWxsLCBtYWtpbmcgdGhlaXIKK2NvbnRlbnRzIHZpc2libGUgdG8gdGhlIGRldmVsb3BtZW50IGNvbW11bml0eSBhcyBhIHdob2xlLiAgQXQgdGhpcyBwb2ludCwKK3RoZXJlJ3MgYSBnb29kIGNoYW5jZSB0aGF0IHlvdSB3aWxsIGdldCBtb3JlIGNvbW1lbnRzIGZyb20gYSBuZXcgc2V0IG9mCityZXZpZXdlcnM7IHRoZXNlIGNvbW1lbnRzIG5lZWQgdG8gYmUgYW5zd2VyZWQgYXMgaW4gdGhlIHByZXZpb3VzIHJvdW5kLgorCitXaGF0IG1heSBhbHNvIGhhcHBlbiBhdCB0aGlzIHBvaW50LCBkZXBlbmRpbmcgb24gdGhlIG5hdHVyZSBvZiB5b3VyIHBhdGNoLAoraXMgdGhhdCBjb25mbGljdHMgd2l0aCB3b3JrIGJlaW5nIGRvbmUgYnkgb3RoZXJzIHR1cm4gdXAuICBJbiB0aGUgd29yc3QKK2Nhc2UsIGhlYXZ5IHBhdGNoIGNvbmZsaWN0cyBjYW4gcmVzdWx0IGluIHNvbWUgd29yayBiZWluZyBwdXQgb24gdGhlIGJhY2sKK2J1cm5lciBzbyB0aGF0IHRoZSByZW1haW5pbmcgcGF0Y2hlcyBjYW4gYmUgd29ya2VkIGludG8gc2hhcGUgYW5kIG1lcmdlZC4KK090aGVyIHRpbWVzLCBjb25mbGljdCByZXNvbHV0aW9uIHdpbGwgaW52b2x2ZSB3b3JraW5nIHdpdGggdGhlIG90aGVyCitkZXZlbG9wZXJzIGFuZCwgcG9zc2libHksIG1vdmluZyBzb21lIHBhdGNoZXMgYmV0d2VlbiB0cmVlcyB0byBlbnN1cmUgdGhhdAorZXZlcnl0aGluZyBhcHBsaWVzIGNsZWFubHkuICBUaGlzIHdvcmsgY2FuIGJlIGEgcGFpbiwgYnV0IGNvdW50IHlvdXIKK2JsZXNzaW5nczogYmVmb3JlIHRoZSBhZHZlbnQgb2YgdGhlIGxpbnV4LW5leHQgdHJlZSwgdGhlc2UgY29uZmxpY3RzIG9mdGVuCitvbmx5IHR1cm5lZCB1cCBkdXJpbmcgdGhlIG1lcmdlIHdpbmRvdyBhbmQgaGFkIHRvIGJlIGFkZHJlc3NlZCBpbiBhIGh1cnJ5LgorTm93IHRoZXkgY2FuIGJlIHJlc29sdmVkIGF0IGxlaXN1cmUsIGJlZm9yZSB0aGUgbWVyZ2Ugd2luZG93IG9wZW5zLgorCitTb21lIGRheSwgaWYgYWxsIGdvZXMgd2VsbCwgeW91J2xsIGxvZyBvbiBhbmQgc2VlIHRoYXQgeW91ciBwYXRjaCBoYXMgYmVlbgorbWVyZ2VkIGludG8gdGhlIG1haW5saW5lIGtlcm5lbC4gIENvbmdyYXR1bGF0aW9ucyEgIE9uY2UgdGhlIGNlbGVicmF0aW9uIGlzCitjb21wbGV0ZSAoYW5kIHlvdSBoYXZlIGFkZGVkIHlvdXJzZWxmIHRvIHRoZSBNQUlOVEFJTkVSUyBmaWxlKSwgdGhvdWdoLCBpdAoraXMgd29ydGggcmVtZW1iZXJpbmcgYW4gaW1wb3J0YW50IGxpdHRsZSBmYWN0OiB0aGUgam9iIHN0aWxsIGlzIG5vdCBkb25lLgorTWVyZ2luZyBpbnRvIHRoZSBtYWlubGluZSBicmluZ3MgaXRzIG93biBjaGFsbGVuZ2VzLgorCitUbyBiZWdpbiB3aXRoLCB0aGUgdmlzaWJpbGl0eSBvZiB5b3VyIHBhdGNoIGhhcyBpbmNyZWFzZWQgeWV0IGFnYWluLiAgVGhlcmUKK21heSBiZSBhIG5ldyByb3VuZCBvZiBjb21tZW50cyBmcm9tIGRldmVsb3BlcnMgd2hvIGhhZCBub3QgYmVlbiBhd2FyZSBvZgordGhlIHBhdGNoIGJlZm9yZS4gIEl0IG1heSBiZSB0ZW1wdGluZyB0byBpZ25vcmUgdGhlbSwgc2luY2UgdGhlcmUgaXMgbm8KK2xvbmdlciBhbnkgcXVlc3Rpb24gb2YgeW91ciBjb2RlIGJlaW5nIG1lcmdlZC4gIFJlc2lzdCB0aGF0IHRlbXB0YXRpb24sCit0aG91Z2g7IHlvdSBzdGlsbCBuZWVkIHRvIGJlIHJlc3BvbnNpdmUgdG8gZGV2ZWxvcGVycyB3aG8gaGF2ZSBxdWVzdGlvbnMgb3IKK3N1Z2dlc3Rpb25zLgorCitNb3JlIGltcG9ydGFudGx5LCB0aG91Z2g6IGluY2x1c2lvbiBpbnRvIHRoZSBtYWlubGluZSBwdXRzIHlvdXIgY29kZSBpbnRvCit0aGUgaGFuZHMgb2YgYSBtdWNoIGxhcmdlciBncm91cCBvZiB0ZXN0ZXJzLiAgRXZlbiBpZiB5b3UgaGF2ZSBjb250cmlidXRlZAorYSBkcml2ZXIgZm9yIGhhcmR3YXJlIHdoaWNoIGlzIG5vdCB5ZXQgYXZhaWxhYmxlLCB5b3Ugd2lsbCBiZSBzdXJwcmlzZWQgYnkKK2hvdyBtYW55IHBlb3BsZSB3aWxsIGJ1aWxkIHlvdXIgY29kZSBpbnRvIHRoZWlyIGtlcm5lbHMuICBBbmQsIG9mIGNvdXJzZSwKK3doZXJlIHRoZXJlIGFyZSB0ZXN0ZXJzLCB0aGVyZSB3aWxsIGJlIGJ1ZyByZXBvcnRzLgorCitUaGUgd29yc3Qgc29ydCBvZiBidWcgcmVwb3J0cyBhcmUgcmVncmVzc2lvbnMuICBJZiB5b3VyIHBhdGNoIGNhdXNlcyBhCityZWdyZXNzaW9uLCB5b3UnbGwgZmluZCBhbiB1bmNvbWZvcnRhYmxlIG51bWJlciBvZiBleWVzIHVwb24geW91OworcmVncmVzc2lvbnMgbmVlZCB0byBiZSBmaXhlZCBhcyBzb29uIGFzIHBvc3NpYmxlLiAgSWYgeW91IGFyZSB1bndpbGxpbmcgb3IKK3VuYWJsZSB0byBmaXggdGhlIHJlZ3Jlc3Npb24gKGFuZCBub2JvZHkgZWxzZSBkb2VzIGl0IGZvciB5b3UpLCB5b3VyIHBhdGNoCit3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgcmVtb3ZlZCBkdXJpbmcgdGhlIHN0YWJpbGl6YXRpb24gcGVyaW9kLiAgQmV5b25kCituZWdhdGluZyBhbGwgb2YgdGhlIHdvcmsgeW91IGhhdmUgZG9uZSB0byBnZXQgeW91ciBwYXRjaCBpbnRvIHRoZSBtYWlubGluZSwKK2hhdmluZyBhIHBhdGNoIHB1bGxlZCBhcyB0aGUgcmVzdWx0IG9mIGEgZmFpbHVyZSB0byBmaXggYSByZWdyZXNzaW9uIGNvdWxkCit3ZWxsIG1ha2UgaXQgaGFyZGVyIGZvciB5b3UgdG8gZ2V0IHdvcmsgbWVyZ2VkIGluIHRoZSBmdXR1cmUuCisKK0FmdGVyIGFueSByZWdyZXNzaW9ucyBoYXZlIGJlZW4gZGVhbHQgd2l0aCwgdGhlcmUgbWF5IGJlIG90aGVyLCBvcmRpbmFyeQorYnVncyB0byBkZWFsIHdpdGguICBUaGUgc3RhYmlsaXphdGlvbiBwZXJpb2QgaXMgeW91ciBiZXN0IG9wcG9ydHVuaXR5IHRvCitmaXggdGhlc2UgYnVncyBhbmQgZW5zdXJlIHRoYXQgeW91ciBjb2RlJ3MgZGVidXQgaW4gYSBtYWlubGluZSBrZXJuZWwKK3JlbGVhc2UgaXMgYXMgc29saWQgYXMgcG9zc2libGUuICBTbywgcGxlYXNlLCBhbnN3ZXIgYnVnIHJlcG9ydHMsIGFuZCBmaXgKK3RoZSBwcm9ibGVtcyBpZiBhdCBhbGwgcG9zc2libGUuICBUaGF0J3Mgd2hhdCB0aGUgc3RhYmlsaXphdGlvbiBwZXJpb2QgaXMKK2ZvcjsgeW91IGNhbiBzdGFydCBjcmVhdGluZyBjb29sIG5ldyBwYXRjaGVzIG9uY2UgYW55IHByb2JsZW1zIHdpdGggdGhlIG9sZAorb25lcyBoYXZlIGJlZW4gdGFrZW4gY2FyZSBvZi4KKworQW5kIGRvbid0IGZvcmdldCB0aGF0IHRoZXJlIGFyZSBvdGhlciBtaWxlc3RvbmVzIHdoaWNoIG1heSBhbHNvIGNyZWF0ZSBidWcKK3JlcG9ydHM6IHRoZSBuZXh0IG1haW5saW5lIHN0YWJsZSByZWxlYXNlLCB3aGVuIHByb21pbmVudCBkaXN0cmlidXRvcnMgcGljawordXAgYSB2ZXJzaW9uIG9mIHRoZSBrZXJuZWwgY29udGFpbmluZyB5b3VyIHBhdGNoLCBldGMuICBDb250aW51aW5nIHRvCityZXNwb25kIHRvIHRoZXNlIHJlcG9ydHMgaXMgYSBtYXR0ZXIgb2YgYmFzaWMgcHJpZGUgaW4geW91ciB3b3JrLiAgSWYgdGhhdAoraXMgaW5zdWZmaWNpZW50IG1vdGl2YXRpb24sIHRob3VnaCwgaXQncyBhbHNvIHdvcnRoIGNvbnNpZGVyaW5nIHRoYXQgdGhlCitkZXZlbG9wbWVudCBjb21tdW5pdHkgcmVtZW1iZXJzIGRldmVsb3BlcnMgd2hvIGxvc2UgaW50ZXJlc3QgaW4gdGhlaXIgY29kZQorYWZ0ZXIgaXQncyBtZXJnZWQuICBUaGUgbmV4dCB0aW1lIHlvdSBwb3N0IGEgcGF0Y2gsIHRoZXkgd2lsbCBiZSBldmFsdWF0aW5nCitpdCB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQgeW91IHdpbGwgbm90IGJlIGFyb3VuZCB0byBtYWludGFpbiBpdAorYWZ0ZXJ3YXJkLgorCisKKzYuMzogT1RIRVIgVEhJTkdTIFRIQVQgQ0FOIEhBUFBFTgorCitPbmUgZGF5LCB5b3UgbWF5IG9wZW4geW91ciBtYWlsIGNsaWVudCBhbmQgc2VlIHRoYXQgc29tZWJvZHkgaGFzIG1haWxlZCB5b3UKK2EgcGF0Y2ggdG8geW91ciBjb2RlLiAgVGhhdCBpcyBvbmUgb2YgdGhlIGFkdmFudGFnZXMgb2YgaGF2aW5nIHlvdXIgY29kZQorb3V0IHRoZXJlIGluIHRoZSBvcGVuLCBhZnRlciBhbGwuICBJZiB5b3UgYWdyZWUgd2l0aCB0aGUgcGF0Y2gsIHlvdSBjYW4KK2VpdGhlciBmb3J3YXJkIGl0IG9uIHRvIHRoZSBzdWJzeXN0ZW0gbWFpbnRhaW5lciAoYmUgc3VyZSB0byBpbmNsdWRlIGEKK3Byb3BlciBGcm9tOiBsaW5lIHNvIHRoYXQgdGhlIGF0dHJpYnV0aW9uIGlzIGNvcnJlY3QsIGFuZCBhZGQgYSBzaWdub2ZmIG9mCit5b3VyIG93biksIG9yIHNlbmQgYW4gQWNrZWQtYnk6IHJlc3BvbnNlIGJhY2sgYW5kIGxldCB0aGUgb3JpZ2luYWwgcG9zdGVyCitzZW5kIGl0IHVwd2FyZC4KKworSWYgeW91IGRpc2FncmVlIHdpdGggdGhlIHBhdGNoLCBzZW5kIGEgcG9saXRlIHJlc3BvbnNlIGV4cGxhaW5pbmcgd2h5LiAgSWYKK3Bvc3NpYmxlLCB0ZWxsIHRoZSBhdXRob3Igd2hhdCBjaGFuZ2VzIG5lZWQgdG8gYmUgbWFkZSB0byBtYWtlIHRoZSBwYXRjaAorYWNjZXB0YWJsZSB0byB5b3UuICBUaGVyZSBpcyBhIGNlcnRhaW4gcmVzaXN0YW5jZSB0byBtZXJnaW5nIHBhdGNoZXMgd2hpY2gKK2FyZSBvcHBvc2VkIGJ5IHRoZSBhdXRob3IgYW5kIG1haW50YWluZXIgb2YgdGhlIGNvZGUsIGJ1dCBpdCBvbmx5IGdvZXMgc28KK2Zhci4gIElmIHlvdSBhcmUgc2VlbiBhcyBuZWVkbGVzc2x5IGJsb2NraW5nIGdvb2Qgd29yaywgdGhvc2UgcGF0Y2hlcyB3aWxsCitldmVudHVhbGx5IGZsb3cgYXJvdW5kIHlvdSBhbmQgZ2V0IGludG8gdGhlIG1haW5saW5lIGFueXdheS4gIEluIHRoZSBMaW51eAora2VybmVsLCBub2JvZHkgaGFzIGFic29sdXRlIHZldG8gcG93ZXIgb3ZlciBhbnkgY29kZS4gIEV4Y2VwdCBtYXliZSBMaW51cy4KKworT24gdmVyeSByYXJlIG9jY2FzaW9uLCB5b3UgbWF5IHNlZSBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnQ6IGFub3RoZXIKK2RldmVsb3BlciBwb3N0cyBhIGRpZmZlcmVudCBzb2x1dGlvbiB0byB5b3VyIHByb2JsZW0uICBBdCB0aGF0IHBvaW50LAorY2hhbmNlcyBhcmUgdGhhdCBvbmUgb2YgdGhlIHR3byBwYXRjaGVzIHdpbGwgbm90IGJlIG1lcmdlZCwgYW5kICJtaW5lIHdhcworaGVyZSBmaXJzdCIgaXMgbm90IGNvbnNpZGVyZWQgdG8gYmUgYSBjb21wZWxsaW5nIHRlY2huaWNhbCBhcmd1bWVudC4gIElmCitzb21lYm9keSBlbHNlJ3MgcGF0Y2ggZGlzcGxhY2VzIHlvdXJzIGFuZCBnZXRzIGludG8gdGhlIG1haW5saW5lLCB0aGVyZSBpcworcmVhbGx5IG9ubHkgb25lIHdheSB0byByZXNwb25kOiBiZSBwbGVhc2VkIHRoYXQgeW91ciBwcm9ibGVtIGdvdCBzb2x2ZWQgYW5kCitnZXQgb24gd2l0aCB5b3VyIHdvcmsuICBIYXZpbmcgb25lJ3Mgd29yayBzaG92ZWQgYXNpZGUgaW4gdGhpcyBtYW5uZXIgY2FuCitiZSBodXJ0ZnVsIGFuZCBkaXNjb3VyYWdpbmcsIGJ1dCB0aGUgY29tbXVuaXR5IHdpbGwgcmVtZW1iZXIgeW91ciByZWFjdGlvbgorbG9uZyBhZnRlciB0aGV5IGhhdmUgZm9yZ290dGVuIHdob3NlIHBhdGNoIGFjdHVhbGx5IGdvdCBtZXJnZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmVsb3BtZW50LXByb2Nlc3MvNy5BZHZhbmNlZFRvcGljcyBiL0RvY3VtZW50YXRpb24vZGV2ZWxvcG1lbnQtcHJvY2Vzcy83LkFkdmFuY2VkVG9waWNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ZGMzZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmVsb3BtZW50LXByb2Nlc3MvNy5BZHZhbmNlZFRvcGljcwpAQCAtMCwwICsxLDE3MyBAQAorNzogQURWQU5DRUQgVE9QSUNTCisKK0F0IHRoaXMgcG9pbnQsIGhvcGVmdWxseSwgeW91IGhhdmUgYSBoYW5kbGUgb24gaG93IHRoZSBkZXZlbG9wbWVudCBwcm9jZXNzCit3b3Jrcy4gIFRoZXJlIGlzIHN0aWxsIG1vcmUgdG8gbGVhcm4sIGhvd2V2ZXIhICBUaGlzIHNlY3Rpb24gd2lsbCBjb3ZlciBhCitudW1iZXIgb2YgdG9waWNzIHdoaWNoIGNhbiBiZSBoZWxwZnVsIGZvciBkZXZlbG9wZXJzIHdhbnRpbmcgdG8gYmVjb21lIGEKK3JlZ3VsYXIgcGFydCBvZiB0aGUgTGludXgga2VybmVsIGRldmVsb3BtZW50IHByb2Nlc3MuCisKKzcuMTogTUFOQUdJTkcgUEFUQ0hFUyBXSVRIIEdJVAorCitUaGUgdXNlIG9mIGRpc3RyaWJ1dGVkIHZlcnNpb24gY29udHJvbCBmb3IgdGhlIGtlcm5lbCBiZWdhbiBpbiBlYXJseSAyMDAyLAord2hlbiBMaW51cyBmaXJzdCBzdGFydGVkIHBsYXlpbmcgd2l0aCB0aGUgcHJvcHJpZXRhcnkgQml0S2VlcGVyCithcHBsaWNhdGlvbi4gIFdoaWxlIEJpdEtlZXBlciB3YXMgY29udHJvdmVyc2lhbCwgdGhlIGFwcHJvYWNoIHRvIHNvZnR3YXJlCit2ZXJzaW9uIG1hbmFnZW1lbnQgaXQgZW1ib2RpZWQgbW9zdCBjZXJ0YWlubHkgd2FzIG5vdC4gIERpc3RyaWJ1dGVkIHZlcnNpb24KK2NvbnRyb2wgZW5hYmxlZCBhbiBpbW1lZGlhdGUgYWNjZWxlcmF0aW9uIG9mIHRoZSBrZXJuZWwgZGV2ZWxvcG1lbnQKK3Byb2plY3QuICBJbiBjdXJyZW50IHRpbWVzLCB0aGVyZSBhcmUgc2V2ZXJhbCBmcmVlIGFsdGVybmF0aXZlcyB0bworQml0S2VlcGVyLiAgRm9yIGJldHRlciBvciBmb3Igd29yc2UsIHRoZSBrZXJuZWwgcHJvamVjdCBoYXMgc2V0dGxlZCBvbiBnaXQKK2FzIGl0cyB0b29sIG9mIGNob2ljZS4KKworTWFuYWdpbmcgcGF0Y2hlcyB3aXRoIGdpdCBjYW4gbWFrZSBsaWZlIG11Y2ggZWFzaWVyIGZvciB0aGUgZGV2ZWxvcGVyLAorZXNwZWNpYWxseSBhcyB0aGUgdm9sdW1lIG9mIHRob3NlIHBhdGNoZXMgZ3Jvd3MuICBHaXQgYWxzbyBoYXMgaXRzIHJvdWdoCitlZGdlcyBhbmQgcG9zZXMgY2VydGFpbiBoYXphcmRzOyBpdCBpcyBhIHlvdW5nIGFuZCBwb3dlcmZ1bCB0b29sIHdoaWNoIGlzCitzdGlsbCBiZWluZyBjaXZpbGl6ZWQgYnkgaXRzIGRldmVsb3BlcnMuICBUaGlzIGRvY3VtZW50IHdpbGwgbm90IGF0dGVtcHQgdG8KK3RlYWNoIHRoZSByZWFkZXIgaG93IHRvIHVzZSBnaXQ7IHRoYXQgd291bGQgYmUgc3VmZmljaWVudCBtYXRlcmlhbCBmb3IgYQorbG9uZyBkb2N1bWVudCBpbiBpdHMgb3duIHJpZ2h0LiAgSW5zdGVhZCwgdGhlIGZvY3VzIGhlcmUgd2lsbCBiZSBvbiBob3cgZ2l0CitmaXRzIGludG8gdGhlIGtlcm5lbCBkZXZlbG9wbWVudCBwcm9jZXNzIGluIHBhcnRpY3VsYXIuICBEZXZlbG9wZXJzIHdobword2lzaCB0byBjb21lIHVwIHRvIHNwZWVkIHdpdGggZ2l0IHdpbGwgZmluZCBtb3JlIGluZm9ybWF0aW9uIGF0OgorCisJaHR0cDovL2dpdC1zY20uY29tLworCisJaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9zY20vZ2l0L2RvY3MvdXNlci1tYW51YWwuaHRtbAorCithbmQgb24gdmFyaW91cyB0dXRvcmlhbHMgZm91bmQgb24gdGhlIHdlYi4KKworVGhlIGZpcnN0IG9yZGVyIG9mIGJ1c2luZXNzIGlzIHRvIHJlYWQgdGhlIGFib3ZlIHNpdGVzIGFuZCBnZXQgYSBzb2xpZAordW5kZXJzdGFuZGluZyBvZiBob3cgZ2l0IHdvcmtzIGJlZm9yZSB0cnlpbmcgdG8gdXNlIGl0IHRvIG1ha2UgcGF0Y2hlcworYXZhaWxhYmxlIHRvIG90aGVycy4gIEEgZ2l0LXVzaW5nIGRldmVsb3BlciBzaG91bGQgYmUgYWJsZSB0byBvYnRhaW4gYSBjb3B5CitvZiB0aGUgbWFpbmxpbmUgcmVwb3NpdG9yeSwgZXhwbG9yZSB0aGUgcmV2aXNpb24gaGlzdG9yeSwgY29tbWl0IGNoYW5nZXMgdG8KK3RoZSB0cmVlLCB1c2UgYnJhbmNoZXMsIGV0Yy4gIEFuIHVuZGVyc3RhbmRpbmcgb2YgZ2l0J3MgdG9vbHMgZm9yIHRoZQorcmV3cml0aW5nIG9mIGhpc3RvcnkgKHN1Y2ggYXMgcmViYXNlKSBpcyBhbHNvIHVzZWZ1bC4gIEdpdCBjb21lcyB3aXRoIGl0cworb3duIHRlcm1pbm9sb2d5IGFuZCBjb25jZXB0czsgYSBuZXcgdXNlciBvZiBnaXQgc2hvdWxkIGtub3cgYWJvdXQgcmVmcywKK3JlbW90ZSBicmFuY2hlcywgdGhlIGluZGV4LCBmYXN0LWZvcndhcmQgbWVyZ2VzLCBwdXNoZXMgYW5kIHB1bGxzLCBkZXRhY2hlZAoraGVhZHMsIGV0Yy4gIEl0IGNhbiBhbGwgYmUgYSBsaXR0bGUgaW50aW1pZGF0aW5nIGF0IHRoZSBvdXRzZXQsIGJ1dCB0aGUKK2NvbmNlcHRzIGFyZSBub3QgdGhhdCBoYXJkIHRvIGdyYXNwIHdpdGggYSBiaXQgb2Ygc3R1ZHkuCisKK1VzaW5nIGdpdCB0byBnZW5lcmF0ZSBwYXRjaGVzIGZvciBzdWJtaXNzaW9uIGJ5IGVtYWlsIGNhbiBiZSBhIGdvb2QKK2V4ZXJjaXNlIHdoaWxlIGNvbWluZyB1cCB0byBzcGVlZC4KKworV2hlbiB5b3UgYXJlIHJlYWR5IHRvIHN0YXJ0IHB1dHRpbmcgdXAgZ2l0IHRyZWVzIGZvciBvdGhlcnMgdG8gbG9vayBhdCwgeW91Cit3aWxsLCBvZiBjb3Vyc2UsIG5lZWQgYSBzZXJ2ZXIgdGhhdCBjYW4gYmUgcHVsbGVkIGZyb20uICBTZXR0aW5nIHVwIHN1Y2ggYQorc2VydmVyIHdpdGggZ2l0LWRhZW1vbiBpcyByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCBpZiB5b3UgaGF2ZSBhIHN5c3RlbQord2hpY2ggaXMgYWNjZXNzaWJsZSB0byB0aGUgSW50ZXJuZXQuICBPdGhlcndpc2UsIGZyZWUsIHB1YmxpYyBob3N0aW5nIHNpdGVzCisoR2l0aHViLCBmb3IgZXhhbXBsZSkgYXJlIHN0YXJ0aW5nIHRvIGFwcGVhciBvbiB0aGUgbmV0LiAgRXN0YWJsaXNoZWQKK2RldmVsb3BlcnMgY2FuIGdldCBhbiBhY2NvdW50IG9uIGtlcm5lbC5vcmcsIGJ1dCB0aG9zZSBhcmUgbm90IGVhc3kgdG8gY29tZQorYnk7IHNlZSBodHRwOi8va2VybmVsLm9yZy9mYXEvIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCitUaGUgbm9ybWFsIGdpdCB3b3JrZmxvdyBpbnZvbHZlcyB0aGUgdXNlIG9mIGEgbG90IG9mIGJyYW5jaGVzLiAgRWFjaCBsaW5lCitvZiBkZXZlbG9wbWVudCBjYW4gYmUgc2VwYXJhdGVkIGludG8gYSBzZXBhcmF0ZSAidG9waWMgYnJhbmNoIiBhbmQKK21haW50YWluZWQgaW5kZXBlbmRlbnRseS4gIEJyYW5jaGVzIGluIGdpdCBhcmUgY2hlYXAsIHRoZXJlIGlzIG5vIHJlYXNvbiB0bworbm90IG1ha2UgZnJlZSB1c2Ugb2YgdGhlbS4gIEFuZCwgaW4gYW55IGNhc2UsIHlvdSBzaG91bGQgbm90IGRvIHlvdXIKK2RldmVsb3BtZW50IGluIGFueSBicmFuY2ggd2hpY2ggeW91IGludGVuZCB0byBhc2sgb3RoZXJzIHRvIHB1bGwgZnJvbS4KK1B1YmxpY2x5LWF2YWlsYWJsZSBicmFuY2hlcyBzaG91bGQgYmUgY3JlYXRlZCB3aXRoIGNhcmU7IG1lcmdlIGluIHBhdGNoZXMKK2Zyb20gZGV2ZWxvcG1lbnQgYnJhbmNoZXMgd2hlbiB0aGV5IGFyZSBpbiBjb21wbGV0ZSBmb3JtIGFuZCByZWFkeSB0byBnbyAtCitub3QgYmVmb3JlLgorCitHaXQgcHJvdmlkZXMgc29tZSBwb3dlcmZ1bCB0b29scyB3aGljaCBjYW4gYWxsb3cgeW91IHRvIHJld3JpdGUgeW91cgorZGV2ZWxvcG1lbnQgaGlzdG9yeS4gIEFuIGluY29udmVuaWVudCBwYXRjaCAob25lIHdoaWNoIGJyZWFrcyBiaXNlY3Rpb24sCitzYXksIG9yIHdoaWNoIGhhcyBzb21lIG90aGVyIHNvcnQgb2Ygb2J2aW91cyBidWcpIGNhbiBiZSBmaXhlZCBpbiBwbGFjZSBvcgorbWFkZSB0byBkaXNhcHBlYXIgZnJvbSB0aGUgaGlzdG9yeSBlbnRpcmVseS4gIEEgcGF0Y2ggc2VyaWVzIGNhbiBiZQorcmV3cml0dGVuIGFzIGlmIGl0IGhhZCBiZWVuIHdyaXR0ZW4gb24gdG9wIG9mIHRvZGF5J3MgbWFpbmxpbmUsIGV2ZW4gdGhvdWdoCit5b3UgaGF2ZSBiZWVuIHdvcmtpbmcgb24gaXQgZm9yIG1vbnRocy4gIENoYW5nZXMgY2FuIGJlIHRyYW5zcGFyZW50bHkKK3NoaWZ0ZWQgZnJvbSBvbmUgYnJhbmNoIHRvIGFub3RoZXIuICBBbmQgc28gb24uICBKdWRpY2lvdXMgdXNlIG9mIGdpdCdzCithYmlsaXR5IHRvIHJldmlzZSBoaXN0b3J5IGNhbiBoZWxwIGluIHRoZSBjcmVhdGlvbiBvZiBjbGVhbiBwYXRjaCBzZXRzIHdpdGgKK2Zld2VyIHByb2JsZW1zLgorCitFeGNlc3NpdmUgdXNlIG9mIHRoaXMgY2FwYWJpbGl0eSBjYW4gbGVhZCB0byBvdGhlciBwcm9ibGVtcywgdGhvdWdoLCBiZXlvbmQKK2Egc2ltcGxlIG9ic2Vzc2lvbiBmb3IgdGhlIGNyZWF0aW9uIG9mIHRoZSBwZXJmZWN0IHByb2plY3QgaGlzdG9yeS4KK1Jld3JpdGluZyBoaXN0b3J5IHdpbGwgcmV3cml0ZSB0aGUgY2hhbmdlcyBjb250YWluZWQgaW4gdGhhdCBoaXN0b3J5LAordHVybmluZyBhIHRlc3RlZCAoaG9wZWZ1bGx5KSBrZXJuZWwgdHJlZSBpbnRvIGFuIHVudGVzdGVkIG9uZS4gIEJ1dCwgYmV5b25kCit0aGF0LCBkZXZlbG9wZXJzIGNhbm5vdCBlYXNpbHkgY29sbGFib3JhdGUgaWYgdGhleSBkbyBub3QgaGF2ZSBhIHNoYXJlZAordmlldyBvZiB0aGUgcHJvamVjdCBoaXN0b3J5OyBpZiB5b3UgcmV3cml0ZSBoaXN0b3J5IHdoaWNoIG90aGVyIGRldmVsb3BlcnMKK2hhdmUgcHVsbGVkIGludG8gdGhlaXIgcmVwb3NpdG9yaWVzLCB5b3Ugd2lsbCBtYWtlIGxpZmUgbXVjaCBtb3JlIGRpZmZpY3VsdAorZm9yIHRob3NlIGRldmVsb3BlcnMuICBTbyBhIHNpbXBsZSBydWxlIG9mIHRodW1iIGFwcGxpZXMgaGVyZTogaGlzdG9yeQord2hpY2ggaGFzIGJlZW4gZXhwb3J0ZWQgdG8gb3RoZXJzIHNob3VsZCBnZW5lcmFsbHkgYmUgc2VlbiBhcyBpbW11dGFibGUKK3RoZXJlYWZ0ZXIuCisKK1NvLCBvbmNlIHlvdSBwdXNoIGEgc2V0IG9mIGNoYW5nZXMgdG8geW91ciBwdWJsaWNseS1hdmFpbGFibGUgc2VydmVyLCB0aG9zZQorY2hhbmdlcyBzaG91bGQgbm90IGJlIHJld3JpdHRlbi4gIEdpdCB3aWxsIGF0dGVtcHQgdG8gZW5mb3JjZSB0aGlzIHJ1bGUgaWYKK3lvdSB0cnkgdG8gcHVzaCBjaGFuZ2VzIHdoaWNoIGRvIG5vdCByZXN1bHQgaW4gYSBmYXN0LWZvcndhcmQgbWVyZ2UKKyhpLmUuIGNoYW5nZXMgd2hpY2ggZG8gbm90IHNoYXJlIHRoZSBzYW1lIGhpc3RvcnkpLiAgSXQgaXMgcG9zc2libGUgdG8KK292ZXJyaWRlIHRoaXMgY2hlY2ssIGFuZCB0aGVyZSBtYXkgYmUgdGltZXMgd2hlbiBpdCBpcyBuZWNlc3NhcnkgdG8gcmV3cml0ZQorYW4gZXhwb3J0ZWQgdHJlZS4gIE1vdmluZyBjaGFuZ2VzZXRzIGJldHdlZW4gdHJlZXMgdG8gYXZvaWQgY29uZmxpY3RzIGluCitsaW51eC1uZXh0IGlzIG9uZSBleGFtcGxlLiAgQnV0IHN1Y2ggYWN0aW9ucyBzaG91bGQgYmUgcmFyZS4gIFRoaXMgaXMgb25lCitvZiB0aGUgcmVhc29ucyB3aHkgZGV2ZWxvcG1lbnQgc2hvdWxkIGJlIGRvbmUgaW4gcHJpdmF0ZSBicmFuY2hlcyAod2hpY2gKK2NhbiBiZSByZXdyaXR0ZW4gaWYgbmVjZXNzYXJ5KSBhbmQgb25seSBtb3ZlZCBpbnRvIHB1YmxpYyBicmFuY2hlcyB3aGVuCitpdCdzIGluIGEgcmVhc29uYWJseSBhZHZhbmNlZCBzdGF0ZS4KKworQXMgdGhlIG1haW5saW5lIChvciBvdGhlciB0cmVlIHVwb24gd2hpY2ggYSBzZXQgb2YgY2hhbmdlcyBpcyBiYXNlZCkKK2FkdmFuY2VzLCBpdCBpcyB0ZW1wdGluZyB0byBtZXJnZSB3aXRoIHRoYXQgdHJlZSB0byBzdGF5IG9uIHRoZSBsZWFkaW5nCitlZGdlLiAgRm9yIGEgcHJpdmF0ZSBicmFuY2gsIHJlYmFzaW5nIGNhbiBiZSBhbiBlYXN5IHdheSB0byBrZWVwIHVwIHdpdGgKK2Fub3RoZXIgdHJlZSwgYnV0IHJlYmFzaW5nIGlzIG5vdCBhbiBvcHRpb24gb25jZSBhIHRyZWUgaXMgZXhwb3J0ZWQgdG8gdGhlCit3b3JsZC4gIE9uY2UgdGhhdCBoYXBwZW5zLCBhIGZ1bGwgbWVyZ2UgbXVzdCBiZSBkb25lLiAgTWVyZ2luZyBvY2Nhc2lvbmFsbHkKK21ha2VzIGdvb2Qgc2Vuc2UsIGJ1dCBvdmVybHkgZnJlcXVlbnQgbWVyZ2VzIGNhbiBjbHV0dGVyIHRoZSBoaXN0b3J5CituZWVkbGVzc2x5LiAgU3VnZ2VzdGVkIHRlY2huaXF1ZSBpbiB0aGlzIGNhc2UgaXMgdG8gbWVyZ2UgaW5mcmVxdWVudGx5LCBhbmQKK2dlbmVyYWxseSBvbmx5IGF0IHNwZWNpZmljIHJlbGVhc2UgcG9pbnRzIChzdWNoIGFzIGEgbWFpbmxpbmUgLXJjCityZWxlYXNlKS4gIElmIHlvdSBhcmUgbmVydm91cyBhYm91dCBzcGVjaWZpYyBjaGFuZ2VzLCB5b3UgY2FuIGFsd2F5cworcGVyZm9ybSB0ZXN0IG1lcmdlcyBpbiBhIHByaXZhdGUgYnJhbmNoLiAgVGhlIGdpdCAicmVyZXJlIiB0b29sIGNhbiBiZQordXNlZnVsIGluIHN1Y2ggc2l0dWF0aW9uczsgaXQgcmVtZW1iZXJzIGhvdyBtZXJnZSBjb25mbGljdHMgd2VyZSByZXNvbHZlZAorc28gdGhhdCB5b3UgZG9uJ3QgaGF2ZSB0byBkbyB0aGUgc2FtZSB3b3JrIHR3aWNlLgorCitPbmUgb2YgdGhlIGJpZ2dlc3QgcmVjdXJyaW5nIGNvbXBsYWludHMgYWJvdXQgdG9vbHMgbGlrZSBnaXQgaXMgdGhpczogdGhlCittYXNzIG1vdmVtZW50IG9mIHBhdGNoZXMgZnJvbSBvbmUgcmVwb3NpdG9yeSB0byBhbm90aGVyIG1ha2VzIGl0IGVhc3kgdG8KK3NsaXAgaW4gaWxsLWFkdmlzZWQgY2hhbmdlcyB3aGljaCBnbyBpbnRvIHRoZSBtYWlubGluZSBiZWxvdyB0aGUgcmV2aWV3CityYWRhci4gIEtlcm5lbCBkZXZlbG9wZXJzIHRlbmQgdG8gZ2V0IHVuaGFwcHkgd2hlbiB0aGV5IHNlZSB0aGF0IGtpbmQgb2YKK3RoaW5nIGhhcHBlbmluZzsgcHV0dGluZyB1cCBhIGdpdCB0cmVlIHdpdGggdW5yZXZpZXdlZCBvciBvZmYtdG9waWMgcGF0Y2hlcworY2FuIGFmZmVjdCB5b3VyIGFiaWxpdHkgdG8gZ2V0IHRyZWVzIHB1bGxlZCBpbiB0aGUgZnV0dXJlLiAgUXVvdGluZyBMaW51czoKKworCVlvdSBjYW4gc2VuZCBtZSBwYXRjaGVzLCBidXQgZm9yIG1lIHRvIHB1bGwgYSBnaXQgcGF0Y2ggZnJvbSB5b3UsIEkKKwluZWVkIHRvIGtub3cgdGhhdCB5b3Uga25vdyB3aGF0IHlvdSdyZSBkb2luZywgYW5kIEkgbmVlZCB0byBiZSBhYmxlCisJdG8gdHJ1c3QgdGhpbmdzICp3aXRob3V0KiB0aGVuIGhhdmluZyB0byBnbyBhbmQgY2hlY2sgZXZlcnkKKwlpbmRpdmlkdWFsIGNoYW5nZSBieSBoYW5kLgorCisoaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvMjI0MTM1LykuCisKK1RvIGF2b2lkIHRoaXMga2luZCBvZiBzaXR1YXRpb24sIGVuc3VyZSB0aGF0IGFsbCBwYXRjaGVzIHdpdGhpbiBhIGdpdmVuCiticmFuY2ggc3RpY2sgY2xvc2VseSB0byB0aGUgYXNzb2NpYXRlZCB0b3BpYzsgYSAiZHJpdmVyIGZpeGVzIiBicmFuY2gKK3Nob3VsZCBub3QgYmUgbWFraW5nIGNoYW5nZXMgdG8gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgY29kZS4gIEFuZCwgbW9zdAoraW1wb3J0YW50bHksIGRvIG5vdCB1c2UgYSBnaXQgdHJlZSB0byBieXBhc3MgdGhlIHJldmlldyBwcm9jZXNzLiAgUG9zdCBhbgorb2NjYXNpb25hbCBzdW1tYXJ5IG9mIHRoZSB0cmVlIHRvIHRoZSByZWxldmFudCBsaXN0LCBhbmQsIHdoZW4gdGhlIHRpbWUgaXMKK3JpZ2h0LCByZXF1ZXN0IHRoYXQgdGhlIHRyZWUgYmUgaW5jbHVkZWQgaW4gbGludXgtbmV4dC4KKworSWYgYW5kIHdoZW4gb3RoZXJzIHN0YXJ0IHRvIHNlbmQgcGF0Y2hlcyBmb3IgaW5jbHVzaW9uIGludG8geW91ciB0cmVlLAorZG9uJ3QgZm9yZ2V0IHRvIHJldmlldyB0aGVtLiAgQWxzbyBlbnN1cmUgdGhhdCB5b3UgbWFpbnRhaW4gdGhlIGNvcnJlY3QKK2F1dGhvcnNoaXAgaW5mb3JtYXRpb247IHRoZSBnaXQgImFtIiB0b29sIGRvZXMgaXRzIGJlc3QgaW4gdGhpcyByZWdhcmQsIGJ1dAoreW91IG1heSBoYXZlIHRvIGFkZCBhICJGcm9tOiIgbGluZSB0byB0aGUgcGF0Y2ggaWYgaXQgaGFzIGJlZW4gcmVsYXllZCB0bworeW91IHZpYSBhIHRoaXJkIHBhcnR5LgorCitXaGVuIHJlcXVlc3RpbmcgYSBwdWxsLCBiZSBzdXJlIHRvIGdpdmUgYWxsIHRoZSByZWxldmFudCBpbmZvcm1hdGlvbjogd2hlcmUKK3lvdXIgdHJlZSBpcywgd2hhdCBicmFuY2ggdG8gcHVsbCwgYW5kIHdoYXQgY2hhbmdlcyB3aWxsIHJlc3VsdCBmcm9tIHRoZQorcHVsbC4gIFRoZSBnaXQgcmVxdWVzdC1wdWxsIGNvbW1hbmQgY2FuIGJlIGhlbHBmdWwgaW4gdGhpcyByZWdhcmQ7IGl0IHdpbGwKK2Zvcm1hdCB0aGUgcmVxdWVzdCBhcyBvdGhlciBkZXZlbG9wZXJzIGV4cGVjdCwgYW5kIHdpbGwgYWxzbyBjaGVjayB0byBiZQorc3VyZSB0aGF0IHlvdSBoYXZlIHJlbWVtYmVyZWQgdG8gcHVzaCB0aG9zZSBjaGFuZ2VzIHRvIHRoZSBwdWJsaWMgc2VydmVyLgorCisKKzcuMjogUkVWSUVXSU5HIFBBVENIRVMKKworU29tZSByZWFkZXJzIHdpbGwgY2VydGFpbmx5IG9iamVjdCB0byBwdXR0aW5nIHRoaXMgc2VjdGlvbiB3aXRoICJhZHZhbmNlZAordG9waWNzIiBvbiB0aGUgZ3JvdW5kcyB0aGF0IGV2ZW4gYmVnaW5uaW5nIGtlcm5lbCBkZXZlbG9wZXJzIHNob3VsZCBiZQorcmV2aWV3aW5nIHBhdGNoZXMuICBJdCBpcyBjZXJ0YWlubHkgdHJ1ZSB0aGF0IHRoZXJlIGlzIG5vIGJldHRlciB3YXkgdG8KK2xlYXJuIGhvdyB0byBwcm9ncmFtIGluIHRoZSBrZXJuZWwgZW52aXJvbm1lbnQgdGhhbiBieSBsb29raW5nIGF0IGNvZGUKK3Bvc3RlZCBieSBvdGhlcnMuICBJbiBhZGRpdGlvbiwgcmV2aWV3ZXJzIGFyZSBmb3JldmVyIGluIHNob3J0IHN1cHBseTsgYnkKK2xvb2tpbmcgYXQgY29kZSB5b3UgY2FuIG1ha2UgYSBzaWduaWZpY2FudCBjb250cmlidXRpb24gdG8gdGhlIHByb2Nlc3MgYXMgYQord2hvbGUuCisKK1Jldmlld2luZyBjb2RlIGNhbiBiZSBhbiBpbnRpbWlkYXRpbmcgcHJvc3BlY3QsIGVzcGVjaWFsbHkgZm9yIGEgbmV3IGtlcm5lbAorZGV2ZWxvcGVyIHdobyBtYXkgd2VsbCBmZWVsIG5lcnZvdXMgYWJvdXQgcXVlc3Rpb25pbmcgY29kZSAtIGluIHB1YmxpYyAtCit3aGljaCBoYXMgYmVlbiBwb3N0ZWQgYnkgdGhvc2Ugd2l0aCBtb3JlIGV4cGVyaWVuY2UuICBFdmVuIGNvZGUgd3JpdHRlbiBieQordGhlIG1vc3QgZXhwZXJpZW5jZWQgZGV2ZWxvcGVycyBjYW4gYmUgaW1wcm92ZWQsIHRob3VnaC4gIFBlcmhhcHMgdGhlIGJlc3QKK3BpZWNlIG9mIGFkdmljZSBmb3IgcmV2aWV3ZXJzIChhbGwgcmV2aWV3ZXJzKSBpcyB0aGlzOiBwaHJhc2UgcmV2aWV3Citjb21tZW50cyBhcyBxdWVzdGlvbnMgcmF0aGVyIHRoYW4gY3JpdGljaXNtcy4gIEFza2luZyAiaG93IGRvZXMgdGhlIGxvY2sKK2dldCByZWxlYXNlZCBpbiB0aGlzIHBhdGg/IiB3aWxsIGFsd2F5cyB3b3JrIGJldHRlciB0aGFuIHN0YXRpbmcgInRoZQorbG9ja2luZyBoZXJlIGlzIHdyb25nLiIKKworRGlmZmVyZW50IGRldmVsb3BlcnMgd2lsbCByZXZpZXcgY29kZSBmcm9tIGRpZmZlcmVudCBwb2ludHMgb2Ygdmlldy4gIFNvbWUKK2FyZSBtb3N0bHkgY29uY2VybmVkIHdpdGggY29kaW5nIHN0eWxlIGFuZCB3aGV0aGVyIGNvZGUgbGluZXMgaGF2ZSB0cmFpbGluZword2hpdGUgc3BhY2UuICBPdGhlcnMgd2lsbCBmb2N1cyBwcmltYXJpbHkgb24gd2hldGhlciB0aGUgY2hhbmdlIGltcGxlbWVudGVkCitieSB0aGUgcGF0Y2ggYXMgYSB3aG9sZSBpcyBhIGdvb2QgdGhpbmcgZm9yIHRoZSBrZXJuZWwgb3Igbm90LiAgWWV0IG90aGVycword2lsbCBjaGVjayBmb3IgcHJvYmxlbWF0aWMgbG9ja2luZywgZXhjZXNzaXZlIHN0YWNrIHVzYWdlLCBwb3NzaWJsZQorc2VjdXJpdHkgaXNzdWVzLCBkdXBsaWNhdGlvbiBvZiBjb2RlIGZvdW5kIGVsc2V3aGVyZSwgYWRlcXVhdGUKK2RvY3VtZW50YXRpb24sIGFkdmVyc2UgZWZmZWN0cyBvbiBwZXJmb3JtYW5jZSwgdXNlci1zcGFjZSBBQkkgY2hhbmdlcywgZXRjLgorQWxsIHR5cGVzIG9mIHJldmlldywgaWYgdGhleSBsZWFkIHRvIGJldHRlciBjb2RlIGdvaW5nIGludG8gdGhlIGtlcm5lbCwgYXJlCit3ZWxjb21lIGFuZCB3b3J0aHdoaWxlLgorCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2ZWxvcG1lbnQtcHJvY2Vzcy84LkNvbmNsdXNpb24gYi9Eb2N1bWVudGF0aW9uL2RldmVsb3BtZW50LXByb2Nlc3MvOC5Db25jbHVzaW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhZWY2OTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmVsb3BtZW50LXByb2Nlc3MvOC5Db25jbHVzaW9uCkBAIC0wLDAgKzEsNzAgQEAKKzg6IEZPUiBNT1JFIElORk9STUFUSU9OCisKK1RoZXJlIGFyZSBudW1lcm91cyBzb3VyY2VzIG9mIGluZm9ybWF0aW9uIG9uIExpbnV4IGtlcm5lbCBkZXZlbG9wbWVudCBhbmQKK3JlbGF0ZWQgdG9waWNzLiAgRmlyc3QgYW1vbmcgdGhvc2Ugd2lsbCBhbHdheXMgYmUgdGhlIERvY3VtZW50YXRpb24KK2RpcmVjdG9yeSBmb3VuZCBpbiB0aGUga2VybmVsIHNvdXJjZSBkaXN0cmlidXRpb24uICBUaGUgdG9wLWxldmVsIEhPV1RPCitmaWxlIGlzIGFuIGltcG9ydGFudCBzdGFydGluZyBwb2ludDsgU3VibWl0dGluZ1BhdGNoZXMgYW5kCitTdWJtaXR0aW5nRHJpdmVycyBhcmUgYWxzbyBzb21ldGhpbmcgd2hpY2ggYWxsIGtlcm5lbCBkZXZlbG9wZXJzIHNob3VsZAorcmVhZC4gIE1hbnkgaW50ZXJuYWwga2VybmVsIEFQSXMgYXJlIGRvY3VtZW50ZWQgdXNpbmcgdGhlIGtlcm5lbGRvYworbWVjaGFuaXNtOyAibWFrZSBodG1sZG9jcyIgb3IgIm1ha2UgcGRmZG9jcyIgY2FuIGJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhvc2UKK2RvY3VtZW50cyBpbiBIVE1MIG9yIFBERiBmb3JtYXQgKHRob3VnaCB0aGUgdmVyc2lvbiBvZiBUZVggc2hpcHBlZCBieSBzb21lCitkaXN0cmlidXRpb25zIHJ1bnMgaW50byBpbnRlcm5hbCBsaW1pdHMgYW5kIGZhaWxzIHRvIHByb2Nlc3MgdGhlIGRvY3VtZW50cworcHJvcGVybHkpLgorCitWYXJpb3VzIHdlYiBzaXRlcyBkaXNjdXNzIGtlcm5lbCBkZXZlbG9wbWVudCBhdCBhbGwgbGV2ZWxzIG9mIGRldGFpbC4gIFlvdXIKK2F1dGhvciB3b3VsZCBsaWtlIHRvIGh1bWJseSBzdWdnZXN0IGh0dHA6Ly9sd24ubmV0LyBhcyBhIHNvdXJjZTsKK2luZm9ybWF0aW9uIG9uIG1hbnkgc3BlY2lmaWMga2VybmVsIHRvcGljcyBjYW4gYmUgZm91bmQgdmlhIHRoZSBMV04ga2VybmVsCitpbmRleCBhdDoKKworCWh0dHA6Ly9sd24ubmV0L0tlcm5lbC9JbmRleC8KKworQmV5b25kIHRoYXQsIGEgdmFsdWFibGUgcmVzb3VyY2UgZm9yIGtlcm5lbCBkZXZlbG9wZXJzIGlzOgorCisJaHR0cDovL2tlcm5lbG5ld2JpZXMub3JnLworCitBbmQsIG9mIGNvdXJzZSwgb25lIHNob3VsZCBub3QgZm9yZ2V0IGh0dHA6Ly9rZXJuZWwub3JnLywgdGhlIGRlZmluaXRpdmUKK2xvY2F0aW9uIGZvciBrZXJuZWwgcmVsZWFzZSBpbmZvcm1hdGlvbi4KKworVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGJvb2tzIG9uIGtlcm5lbCBkZXZlbG9wbWVudDoKKworCUxpbnV4IERldmljZSBEcml2ZXJzLCAzcmQgRWRpdGlvbiAoSm9uYXRoYW4gQ29yYmV0LCBBbGVzc2FuZHJvCisJUnViaW5pLCBhbmQgR3JlZyBLcm9haC1IYXJ0bWFuKS4gIE9ubGluZSBhdAorCWh0dHA6Ly9sd24ubmV0L0tlcm5lbC9MREQzLy4KKworCUxpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCAoUm9iZXJ0IExvdmUpLgorCisJVW5kZXJzdGFuZGluZyB0aGUgTGludXggS2VybmVsIChEYW5pZWwgQm92ZXQgYW5kIE1hcmNvIENlc2F0aSkuCisKK0FsbCBvZiB0aGVzZSBib29rcyBzdWZmZXIgZnJvbSBhIGNvbW1vbiBmYXVsdCwgdGhvdWdoOiB0aGV5IHRlbmQgdG8gYmUKK3NvbWV3aGF0IG9ic29sZXRlIGJ5IHRoZSB0aW1lIHRoZXkgaGl0IHRoZSBzaGVsdmVzLCBhbmQgdGhleSBoYXZlIGJlZW4gb24KK3RoZSBzaGVsdmVzIGZvciBhIHdoaWxlIG5vdy4gIFN0aWxsLCB0aGVyZSBpcyBxdWl0ZSBhIGJpdCBvZiBnb29kCitpbmZvcm1hdGlvbiB0byBiZSBmb3VuZCB0aGVyZS4KKworRG9jdW1lbnRhdGlvbiBmb3IgZ2l0IGNhbiBiZSBmb3VuZCBhdDoKKworCWh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvc2NtL2dpdC9kb2NzLworCisJaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9zY20vZ2l0L2RvY3MvdXNlci1tYW51YWwuaHRtbAorCisKKzk6IENPTkNMVVNJT04KKworQ29uZ3JhdHVsYXRpb25zIHRvIGFueWJvZHkgd2hvIGhhcyBtYWRlIGl0IHRocm91Z2ggdGhpcyBsb25nLXdpbmRlZAorZG9jdW1lbnQuICBIb3BlZnVsbHkgaXQgaGFzIHByb3ZpZGVkIGEgaGVscGZ1bCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUKK0xpbnV4IGtlcm5lbCBpcyBkZXZlbG9wZWQgYW5kIGhvdyB5b3UgY2FuIHBhcnRpY2lwYXRlIGluIHRoYXQgcHJvY2Vzcy4KKworSW4gdGhlIGVuZCwgaXQncyB0aGUgcGFydGljaXBhdGlvbiB0aGF0IG1hdHRlcnMuICBBbnkgb3BlbiBzb3VyY2Ugc29mdHdhcmUKK3Byb2plY3QgaXMgbm8gbW9yZSB0aGFuIHRoZSBzdW0gb2Ygd2hhdCBpdHMgY29udHJpYnV0b3JzIHB1dCBpbnRvIGl0LiAgVGhlCitMaW51eCBrZXJuZWwgaGFzIHByb2dyZXNzZWQgYXMgcXVpY2tseSBhbmQgYXMgd2VsbCBhcyBpdCBoYXMgYmVjYXVzZSBpdCBoYXMKK2JlZW4gaGVscGVkIGJ5IGFuIGltcHJlc3NpdmVseSBsYXJnZSBncm91cCBvZiBkZXZlbG9wZXJzLCBhbGwgb2Ygd2hvbSBhcmUKK3dvcmtpbmcgdG8gbWFrZSBpdCBiZXR0ZXIuICBUaGUga2VybmVsIGlzIGEgcHJlbWllciBleGFtcGxlIG9mIHdoYXQgY2FuIGJlCitkb25lIHdoZW4gdGhvdXNhbmRzIG9mIHBlb3BsZSB3b3JrIHRvZ2V0aGVyIHRvd2FyZCBhIGNvbW1vbiBnb2FsLgorCitUaGUga2VybmVsIGNhbiBhbHdheXMgYmVuZWZpdCBmcm9tIGEgbGFyZ2VyIGRldmVsb3BlciBiYXNlLCB0aG91Z2guICBUaGVyZQoraXMgYWx3YXlzIG1vcmUgd29yayB0byBkby4gIEJ1dCwganVzdCBhcyBpbXBvcnRhbnRseSwgbW9zdCBvdGhlcgorcGFydGljaXBhbnRzIGluIHRoZSBMaW51eCBlY29zeXN0ZW0gY2FuIGJlbmVmaXQgdGhyb3VnaCBjb250cmlidXRpbmcgdG8gdGhlCitrZXJuZWwuICBHZXR0aW5nIGNvZGUgaW50byB0aGUgbWFpbmxpbmUgaXMgdGhlIGtleSB0byBoaWdoZXIgY29kZSBxdWFsaXR5LAorbG93ZXIgbWFpbnRlbmFuY2UgYW5kIGRpc3RyaWJ1dGlvbiBjb3N0cywgYSBoaWdoZXIgbGV2ZWwgb2YgaW5mbHVlbmNlIG92ZXIKK3RoZSBkaXJlY3Rpb24gb2Yga2VybmVsIGRldmVsb3BtZW50LCBhbmQgbW9yZS4gIEl0IGlzIGEgc2l0dWF0aW9uIHdoZXJlCitldmVyeWJvZHkgaW52b2x2ZWQgd2lucy4gIEZpcmUgdXAgeW91ciBlZGl0b3IgYW5kIGNvbWUgam9pbiB1czsgeW91IHdpbGwgYmUKK21vcmUgdGhhbiB3ZWxjb21lLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL2NhY2hlLXBvbGljaWVzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9jYWNoZS1wb2xpY2llcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkyNDZhMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9jYWNoZS1wb2xpY2llcy50eHQKQEAgLTAsMCArMSwxNTggQEAKK0d1aWRhbmNlIGZvciB3cml0aW5nIHBvbGljaWVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUcnkgdG8ga2VlcCB0cmFuc2FjdGlvbmFsaXR5IG91dCBvZiBpdC4gIFRoZSBjb3JlIGlzIGNhcmVmdWwgdG8KK2F2b2lkIGFza2luZyBhYm91dCBhbnl0aGluZyB0aGF0IGlzIG1pZ3JhdGluZy4gIFRoaXMgaXMgYSBwYWluLCBidXQKK21ha2VzIGl0IGVhc2llciB0byB3cml0ZSB0aGUgcG9saWNpZXMuCisKK01hcHBpbmdzIGFyZSBsb2FkZWQgaW50byB0aGUgcG9saWN5IGF0IGNvbnN0cnVjdGlvbiB0aW1lLgorCitFdmVyeSBiaW8gdGhhdCBpcyBtYXBwZWQgYnkgdGhlIHRhcmdldCBpcyByZWZlcnJlZCB0byB0aGUgcG9saWN5LgorVGhlIHBvbGljeSBjYW4gcmV0dXJuIGEgc2ltcGxlIEhJVCBvciBNSVNTIG9yIGlzc3VlIGEgbWlncmF0aW9uLgorCitDdXJyZW50bHkgdGhlcmUncyBubyB3YXkgZm9yIHRoZSBwb2xpY3kgdG8gaXNzdWUgYmFja2dyb3VuZCB3b3JrLAorZS5nLiB0byBzdGFydCB3cml0aW5nIGJhY2sgZGlydHkgYmxvY2tzIHRoYXQgYXJlIGdvaW5nIHRvIGJlIGV2aWN0ZQorc29vbi4KKworQmVjYXVzZSB3ZSBtYXAgYmlvcywgcmF0aGVyIHRoYW4gcmVxdWVzdHMgaXQncyBlYXN5IGZvciB0aGUgcG9saWN5Cit0byBnZXQgZm9vbGVkIGJ5IG1hbnkgc21hbGwgYmlvcy4gIEZvciB0aGlzIHJlYXNvbiB0aGUgY29yZSB0YXJnZXQKK2lzc3VlcyBwZXJpb2RpYyB0aWNrcyB0byB0aGUgcG9saWN5LiAgSXQncyBzdWdnZXN0ZWQgdGhhdCB0aGUgcG9saWN5Citkb2Vzbid0IHVwZGF0ZSBzdGF0ZXMgKGVnLCBoaXQgY291bnRzKSBmb3IgYSBibG9jayBtb3JlIHRoYW4gb25jZQorZm9yIGVhY2ggdGljay4gIFRoZSBjb3JlIHRpY2tzIGJ5IHdhdGNoaW5nIGJpb3MgY29tcGxldGUsIGFuZCBzbwordHJ5aW5nIHRvIHNlZSB3aGVuIHRoZSBpbyBzY2hlZHVsZXIgaGFzIGxldCB0aGUgaW9zIHJ1bi4KKworCitPdmVydmlldyBvZiBzdXBwbGllZCBjYWNoZSByZXBsYWNlbWVudCBwb2xpY2llcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworbXVsdGlxdWV1ZSAobXEpCistLS0tLS0tLS0tLS0tLS0KKworVGhpcyBwb2xpY3kgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB0aGUgc21xIHBvbGljeSAoc2VlIGJlbG93KS4KKworVGhlIG11bHRpcXVldWUgcG9saWN5IGhhcyB0aHJlZSBzZXRzIG9mIDE2IHF1ZXVlczogb25lIHNldCBmb3IgZW50cmllcword2FpdGluZyBmb3IgdGhlIGNhY2hlIGFuZCBhbm90aGVyIHR3byBmb3IgdGhvc2UgaW4gdGhlIGNhY2hlIChhIHNldCBmb3IKK2NsZWFuIGVudHJpZXMgYW5kIGEgc2V0IGZvciBkaXJ0eSBlbnRyaWVzKS4KKworQ2FjaGUgZW50cmllcyBpbiB0aGUgcXVldWVzIGFyZSBhZ2VkIGJhc2VkIG9uIGxvZ2ljYWwgdGltZS4gRW50cnkgaW50bwordGhlIGNhY2hlIGlzIGJhc2VkIG9uIHZhcmlhYmxlIHRocmVzaG9sZHMgYW5kIHF1ZXVlIHNlbGVjdGlvbiBpcyBiYXNlZAorb24gaGl0IGNvdW50IG9uIGVudHJ5LiBUaGUgcG9saWN5IGFpbXMgdG8gdGFrZSBkaWZmZXJlbnQgY2FjaGUgbWlzcworY29zdHMgaW50byBhY2NvdW50IGFuZCB0byBhZGp1c3QgdG8gdmFyeWluZyBsb2FkIHBhdHRlcm5zIGF1dG9tYXRpY2FsbHkuCisKK01lc3NhZ2UgYW5kIGNvbnN0cnVjdG9yIGFyZ3VtZW50IHBhaXJzIGFyZToKKwknc2VxdWVudGlhbF90aHJlc2hvbGQgPCNucl9zZXF1ZW50aWFsX2lvcz4nCisJJ3JhbmRvbV90aHJlc2hvbGQgPCNucl9yYW5kb21faW9zPicKKwkncmVhZF9wcm9tb3RlX2FkanVzdG1lbnQgPHZhbHVlPicKKwknd3JpdGVfcHJvbW90ZV9hZGp1c3RtZW50IDx2YWx1ZT4nCisJJ2Rpc2NhcmRfcHJvbW90ZV9hZGp1c3RtZW50IDx2YWx1ZT4nCisKK1RoZSBzZXF1ZW50aWFsIHRocmVzaG9sZCBpbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBjb250aWd1b3VzIEkvT3MKK3JlcXVpcmVkIGJlZm9yZSBhIHN0cmVhbSBpcyB0cmVhdGVkIGFzIHNlcXVlbnRpYWwuICBPbmNlIGEgc3RyZWFtIGlzCitjb25zaWRlcmVkIHNlcXVlbnRpYWwgaXQgd2lsbCBieXBhc3MgdGhlIGNhY2hlLiAgVGhlIHJhbmRvbSB0aHJlc2hvbGQKK2lzIHRoZSBudW1iZXIgb2YgaW50ZXJ2ZW5pbmcgbm9uLWNvbnRpZ3VvdXMgSS9PcyB0aGF0IG11c3QgYmUgc2VlbgorYmVmb3JlIHRoZSBzdHJlYW0gaXMgdHJlYXRlZCBhcyByYW5kb20gYWdhaW4uCisKK1RoZSBzZXF1ZW50aWFsIGFuZCByYW5kb20gdGhyZXNob2xkcyBkZWZhdWx0IHRvIDUxMiBhbmQgNCByZXNwZWN0aXZlbHkuCisKK0xhcmdlLCBzZXF1ZW50aWFsIEkvT3MgYXJlIHByb2JhYmx5IGJldHRlciBsZWZ0IG9uIHRoZSBvcmlnaW4gZGV2aWNlCitzaW5jZSBzcGluZGxlcyB0ZW5kIHRvIGhhdmUgZ29vZCBzZXF1ZW50aWFsIEkvTyBiYW5kd2lkdGguICBUaGUKK2lvX3RyYWNrZXIgY291bnRzIGNvbnRpZ3VvdXMgSS9PcyB0byB0cnkgdG8gc3BvdCB3aGVuIHRoZSBJL08gaXMgaW4gb25lCitvZiB0aGVzZSBzZXF1ZW50aWFsIG1vZGVzLiAgQnV0IHRoZXJlIGFyZSB1c2UtY2FzZXMgZm9yIHdhbnRpbmcgdG8KK3Byb21vdGUgc2VxdWVudGlhbCBibG9ja3MgdG8gdGhlIGNhY2hlIChlLmcuIGZhc3QgYXBwbGljYXRpb24gc3RhcnR1cCkuCitJZiBzZXF1ZW50aWFsIHRocmVzaG9sZCBpcyBzZXQgdG8gMCB0aGUgc2VxdWVudGlhbCBJL08gZGV0ZWN0aW9uIGlzCitkaXNhYmxlZCBhbmQgc2VxdWVudGlhbCBJL08gd2lsbCBubyBsb25nZXIgaW1wbGljaXRseSBieXBhc3MgdGhlIGNhY2hlLgorU2V0dGluZyB0aGUgcmFuZG9tIHRocmVzaG9sZCB0byAwIGRvZXMgX25vdF8gZGlzYWJsZSB0aGUgcmFuZG9tIEkvTworc3RyZWFtIGRldGVjdGlvbi4KKworSW50ZXJuYWxseSB0aGUgbXEgcG9saWN5IGRldGVybWluZXMgYSBwcm9tb3Rpb24gdGhyZXNob2xkLiAgSWYgdGhlIGhpdAorY291bnQgb2YgYSBibG9jayBub3QgaW4gdGhlIGNhY2hlIGdvZXMgYWJvdmUgdGhpcyB0aHJlc2hvbGQgaXQgZ2V0cworcHJvbW90ZWQgdG8gdGhlIGNhY2hlLiAgVGhlIHJlYWQsIHdyaXRlIGFuZCBkaXNjYXJkIHByb21vdGUgYWRqdXN0bWVudAordHVuYWJsZXMgYWxsb3cgeW91IHRvIHR3ZWFrIHRoZSBwcm9tb3Rpb24gdGhyZXNob2xkIGJ5IGFkZGluZyBhIHNtYWxsCit2YWx1ZSBiYXNlZCBvbiB0aGUgaW8gdHlwZS4gIFRoZXkgZGVmYXVsdCB0byA0LCA4IGFuZCAxIHJlc3BlY3RpdmVseS4KK0lmIHlvdSdyZSB0cnlpbmcgdG8gcXVpY2tseSB3YXJtIGEgbmV3IGNhY2hlIGRldmljZSB5b3UgbWF5IHdpc2ggdG8KK3JlZHVjZSB0aGVzZSB0byBlbmNvdXJhZ2UgcHJvbW90aW9uLiAgUmVtZW1iZXIgdG8gc3dpdGNoIHRoZW0gYmFjayB0bwordGhlaXIgZGVmYXVsdHMgYWZ0ZXIgdGhlIGNhY2hlIGZpbGxzIHRob3VnaC4KKworU3RvY2hhc3RpYyBtdWx0aXF1ZXVlIChzbXEpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBwb2xpY3kgaXMgdGhlIGRlZmF1bHQuCisKK1RoZSBzdG9jaGFzdGljIG11bHRpLXF1ZXVlIChzbXEpIHBvbGljeSBhZGRyZXNzZXMgc29tZSBvZiB0aGUgcHJvYmxlbXMKK3dpdGggdGhlIG11bHRpcXVldWUgKG1xKSBwb2xpY3kuCisKK1RoZSBzbXEgcG9saWN5ICh2cyBtcSkgb2ZmZXJzIHRoZSBwcm9taXNlIG9mIGxlc3MgbWVtb3J5IHV0aWxpemF0aW9uLAoraW1wcm92ZWQgcGVyZm9ybWFuY2UgYW5kIGluY3JlYXNlZCBhZGFwdGFiaWxpdHkgaW4gdGhlIGZhY2Ugb2YgY2hhbmdpbmcKK3dvcmtsb2Fkcy4gIFNNUSBhbHNvIGRvZXMgbm90IGhhdmUgYW55IGN1bWJlcnNvbWUgdHVuaW5nIGtub2JzLgorCitVc2VycyBtYXkgc3dpdGNoIGZyb20gIm1xIiB0byAic21xIiBzaW1wbHkgYnkgYXBwcm9wcmlhdGVseSByZWxvYWRpbmcgYQorRE0gdGFibGUgdGhhdCBpcyB1c2luZyB0aGUgY2FjaGUgdGFyZ2V0LiAgRG9pbmcgc28gd2lsbCBjYXVzZSBhbGwgb2YgdGhlCittcSBwb2xpY3kncyBoaW50cyB0byBiZSBkcm9wcGVkLiAgQWxzbywgcGVyZm9ybWFuY2Ugb2YgdGhlIGNhY2hlIG1heQorZGVncmFkZSBzbGlnaHRseSB1bnRpbCBzbXEgcmVjYWxjdWxhdGVzIHRoZSBvcmlnaW4gZGV2aWNlJ3MgaG90c3BvdHMKK3RoYXQgc2hvdWxkIGJlIGNhY2hlZC4KKworTWVtb3J5IHVzYWdlOgorVGhlIG1xIHBvbGljeSB1c2VzIGEgbG90IG9mIG1lbW9yeTsgODggYnl0ZXMgcGVyIGNhY2hlIGJsb2NrIG9uIGEgNjQKK2JpdCBtYWNoaW5lLgorCitTTVEgdXNlcyAyOGJpdCBpbmRleGVzIHRvIGltcGxlbWVudCBpdCdzIGRhdGEgc3RydWN0dXJlcyByYXRoZXIgdGhhbgorcG9pbnRlcnMuICBJdCBhdm9pZHMgc3RvcmluZyBhbiBleHBsaWNpdCBoaXQgY291bnQgZm9yIGVhY2ggYmxvY2suICBJdAoraGFzIGEgJ2hvdHNwb3QnIHF1ZXVlIHJhdGhlciB0aGFuIGEgcHJlIGNhY2hlIHdoaWNoIHVzZXMgYSBxdWFydGVyIG9mCit0aGUgZW50cmllcyAoZWFjaCBob3RzcG90IGJsb2NrIGNvdmVycyBhIGxhcmdlciBhcmVhIHRoYW4gYSBzaW5nbGUKK2NhY2hlIGJsb2NrKS4KKworQWxsIHRoZXNlIG1lYW4gc21xIHVzZXMgfjI1Ynl0ZXMgcGVyIGNhY2hlIGJsb2NrLiAgU3RpbGwgYSBsb3Qgb2YKK21lbW9yeSwgYnV0IGEgc3Vic3RhbnRpYWwgaW1wcm92ZW1lbnQgbm9udGhlbGVzcy4KKworTGV2ZWwgYmFsYW5jaW5nOgorTVEgcGxhY2VzIGVudHJpZXMgaW4gZGlmZmVyZW50IGxldmVscyBvZiB0aGUgbXVsdGlxdWV1ZSBzdHJ1Y3R1cmVzCitiYXNlZCBvbiB0aGVpciBoaXQgY291bnQgKH5sbihoaXQgY291bnQpKS4gIFRoaXMgbWVhbnMgdGhlIGJvdHRvbQorbGV2ZWxzIGdlbmVyYWxseSBoYXZlIHRoZSBtb3N0IGVudHJpZXMsIGFuZCB0aGUgdG9wIG9uZXMgaGF2ZSB2ZXJ5CitmZXcuICBIYXZpbmcgdW5iYWxhbmNlZCBsZXZlbHMgbGlrZSB0aGlzIHJlZHVjZXMgdGhlIGVmZmljYWN5IG9mIHRoZQorbXVsdGlxdWV1ZS4KKworU01RIGRvZXMgbm90IG1haW50YWluIGEgaGl0IGNvdW50LCBpbnN0ZWFkIGl0IHN3YXBzIGhpdCBlbnRyaWVzIHdpdGgKK3RoZSBsZWFzdCByZWNlbnRseSB1c2VkIGVudHJ5IGZyb20gdGhlIGxldmVsIGFib3ZlLiAgVGhlIG92ZXIgYWxsCitvcmRlcmluZyBiZWluZyBhIHNpZGUgZWZmZWN0IG9mIHRoaXMgc3RvY2hhc3RpYyBwcm9jZXNzLiAgV2l0aCB0aGlzCitzY2hlbWUgd2UgY2FuIGRlY2lkZSBob3cgbWFueSBlbnRyaWVzIG9jY3VweSBlYWNoIG11bHRpcXVldWUgbGV2ZWwsCityZXN1bHRpbmcgaW4gYmV0dGVyIHByb21vdGlvbi9kZW1vdGlvbiBkZWNpc2lvbnMuCisKK0FkYXB0YWJpbGl0eToKK1RoZSBNUSBwb2xpY3kgbWFpbnRhaW5zIGEgaGl0IGNvdW50IGZvciBlYWNoIGNhY2hlIGJsb2NrLiAgRm9yIGEKK2RpZmZlcmVudCBibG9jayB0byBnZXQgcHJvbW90ZWQgdG8gdGhlIGNhY2hlIGl0J3MgaGl0IGNvdW50IGhhcyB0bworZXhjZWVkIHRoZSBsb3dlc3QgY3VycmVudGx5IGluIHRoZSBjYWNoZS4gIFRoaXMgbWVhbnMgaXQgY2FuIHRha2UgYQorbG9uZyB0aW1lIGZvciB0aGUgY2FjaGUgdG8gYWRhcHQgYmV0d2VlbiB2YXJ5aW5nIElPIHBhdHRlcm5zLgorUGVyaW9kaWNhbGx5IGRlZ3JhZGluZyB0aGUgaGl0IGNvdW50cyBjb3VsZCBoZWxwIHdpdGggdGhpcywgYnV0IEkKK2hhdmVuJ3QgZm91bmQgYSBuaWNlIGdlbmVyYWwgc29sdXRpb24uCisKK1NNUSBkb2Vzbid0IG1haW50YWluIGhpdCBjb3VudHMsIHNvIGEgbG90IG9mIHRoaXMgcHJvYmxlbSBqdXN0IGdvZXMKK2F3YXkuICBJbiBhZGRpdGlvbiBpdCB0cmFja3MgcGVyZm9ybWFuY2Ugb2YgdGhlIGhvdHNwb3QgcXVldWUsIHdoaWNoCitpcyB1c2VkIHRvIGRlY2lkZSB3aGljaCBibG9ja3MgdG8gcHJvbW90ZS4gIElmIHRoZSBob3RzcG90IHF1ZXVlIGlzCitwZXJmb3JtaW5nIGJhZGx5IHRoZW4gaXQgc3RhcnRzIG1vdmluZyBlbnRyaWVzIG1vcmUgcXVpY2tseSBiZXR3ZWVuCitsZXZlbHMuICBUaGlzIGxldHMgaXQgYWRhcHQgdG8gbmV3IElPIHBhdHRlcm5zIHZlcnkgcXVpY2tseS4KKworUGVyZm9ybWFuY2U6CitUZXN0aW5nIFNNUSBzaG93cyBzdWJzdGFudGlhbGx5IGJldHRlciBwZXJmb3JtYW5jZSB0aGFuIE1RLgorCitjbGVhbmVyCistLS0tLS0tCisKK1RoZSBjbGVhbmVyIHdyaXRlcyBiYWNrIGFsbCBkaXJ0eSBibG9ja3MgaW4gYSBjYWNoZSB0byBkZWNvbW1pc3Npb24gaXQuCisKK0V4YW1wbGVzCis9PT09PT09PQorCitUaGUgc3ludGF4IGZvciBhIHRhYmxlIGlzOgorCWNhY2hlIDxtZXRhZGF0YSBkZXY+IDxjYWNoZSBkZXY+IDxvcmlnaW4gZGV2PiA8YmxvY2sgc2l6ZT4KKwk8I2ZlYXR1cmVfYXJncz4gWzxmZWF0dXJlIGFyZz5dKgorCTxwb2xpY3k+IDwjcG9saWN5X2FyZ3M+IFs8cG9saWN5IGFyZz5dKgorCitUaGUgc3ludGF4IHRvIHNlbmQgYSBtZXNzYWdlIHVzaW5nIHRoZSBkbXNldHVwIGNvbW1hbmQgaXM6CisJZG1zZXR1cCBtZXNzYWdlIDxtYXBwZWQgZGV2aWNlPiAwIHNlcXVlbnRpYWxfdGhyZXNob2xkIDEwMjQKKwlkbXNldHVwIG1lc3NhZ2UgPG1hcHBlZCBkZXZpY2U+IDAgcmFuZG9tX3RocmVzaG9sZCA4CisKK1VzaW5nIGRtc2V0dXA6CisJZG1zZXR1cCBjcmVhdGUgYmxhaCAtLXRhYmxlICIwIDI2ODQzNTQ1NiBjYWNoZSAvZGV2L3NkYiAvZGV2L3NkYyBcCisJICAgIC9kZXYvc2RkIDUxMiAwIG1xIDQgc2VxdWVudGlhbF90aHJlc2hvbGQgMTAyNCByYW5kb21fdGhyZXNob2xkIDgiCisJY3JlYXRlcyBhIDEyOEdCIGxhcmdlIG1hcHBlZCBkZXZpY2UgbmFtZWQgJ2JsYWgnIHdpdGggdGhlCisJc2VxdWVudGlhbCB0aHJlc2hvbGQgc2V0IHRvIDEwMjQgYW5kIHRoZSByYW5kb21fdGhyZXNob2xkIHNldCB0byA4LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL2NhY2hlLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9jYWNoZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg1ZWFiOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9jYWNoZS50eHQKQEAgLTAsMCArMSwzMDkgQEAKK0ludHJvZHVjdGlvbgorPT09PT09PT09PT09CisKK2RtLWNhY2hlIGlzIGEgZGV2aWNlIG1hcHBlciB0YXJnZXQgd3JpdHRlbiBieSBKb2UgVGhvcm5iZXIsIEhlaW56CitNYXVlbHNoYWdlbiwgYW5kIE1pa2UgU25pdHplci4KKworSXQgYWltcyB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIG9mIGEgYmxvY2sgZGV2aWNlIChlZywgYSBzcGluZGxlKSBieQorZHluYW1pY2FsbHkgbWlncmF0aW5nIHNvbWUgb2YgaXRzIGRhdGEgdG8gYSBmYXN0ZXIsIHNtYWxsZXIgZGV2aWNlCisoZWcsIGFuIFNTRCkuCisKK1RoaXMgZGV2aWNlLW1hcHBlciBzb2x1dGlvbiBhbGxvd3MgdXMgdG8gaW5zZXJ0IHRoaXMgY2FjaGluZyBhdAorZGlmZmVyZW50IGxldmVscyBvZiB0aGUgZG0gc3RhY2ssIGZvciBpbnN0YW5jZSBhYm92ZSB0aGUgZGF0YSBkZXZpY2UgZm9yCithIHRoaW4tcHJvdmlzaW9uaW5nIHBvb2wuICBDYWNoaW5nIHNvbHV0aW9ucyB0aGF0IGFyZSBpbnRlZ3JhdGVkIG1vcmUKK2Nsb3NlbHkgd2l0aCB0aGUgdmlydHVhbCBtZW1vcnkgc3lzdGVtIHNob3VsZCBnaXZlIGJldHRlciBwZXJmb3JtYW5jZS4KKworVGhlIHRhcmdldCByZXVzZXMgdGhlIG1ldGFkYXRhIGxpYnJhcnkgdXNlZCBpbiB0aGUgdGhpbi1wcm92aXNpb25pbmcKK2xpYnJhcnkuCisKK1RoZSBkZWNpc2lvbiBhcyB0byB3aGF0IGRhdGEgdG8gbWlncmF0ZSBhbmQgd2hlbiBpcyBsZWZ0IHRvIGEgcGx1Zy1pbgorcG9saWN5IG1vZHVsZS4gIFNldmVyYWwgb2YgdGhlc2UgaGF2ZSBiZWVuIHdyaXR0ZW4gYXMgd2UgZXhwZXJpbWVudCwKK2FuZCB3ZSBob3BlIG90aGVyIHBlb3BsZSB3aWxsIGNvbnRyaWJ1dGUgb3RoZXJzIGZvciBzcGVjaWZpYyBpbworc2NlbmFyaW9zIChlZy4gYSB2bSBpbWFnZSBzZXJ2ZXIpLgorCitHbG9zc2FyeQorPT09PT09PT0KKworICBNaWdyYXRpb24gLSAgTW92ZW1lbnQgb2YgdGhlIHByaW1hcnkgY29weSBvZiBhIGxvZ2ljYWwgYmxvY2sgZnJvbSBvbmUKKwkgICAgICAgZGV2aWNlIHRvIHRoZSBvdGhlci4KKyAgUHJvbW90aW9uIC0gIE1pZ3JhdGlvbiBmcm9tIHNsb3cgZGV2aWNlIHRvIGZhc3QgZGV2aWNlLgorICBEZW1vdGlvbiAgLSAgTWlncmF0aW9uIGZyb20gZmFzdCBkZXZpY2UgdG8gc2xvdyBkZXZpY2UuCisKK1RoZSBvcmlnaW4gZGV2aWNlIGFsd2F5cyBjb250YWlucyBhIGNvcHkgb2YgdGhlIGxvZ2ljYWwgYmxvY2ssIHdoaWNoCittYXkgYmUgb3V0IG9mIGRhdGUgb3Iga2VwdCBpbiBzeW5jIHdpdGggdGhlIGNvcHkgb24gdGhlIGNhY2hlIGRldmljZQorKGRlcGVuZGluZyBvbiBwb2xpY3kpLgorCitEZXNpZ24KKz09PT09PQorCitTdWItZGV2aWNlcworLS0tLS0tLS0tLS0KKworVGhlIHRhcmdldCBpcyBjb25zdHJ1Y3RlZCBieSBwYXNzaW5nIHRocmVlIGRldmljZXMgdG8gaXQgKGFsb25nIHdpdGgKK290aGVyIHBhcmFtZXRlcnMgZGV0YWlsZWQgbGF0ZXIpOgorCisxLiBBbiBvcmlnaW4gZGV2aWNlIC0gdGhlIGJpZywgc2xvdyBvbmUuCisKKzIuIEEgY2FjaGUgZGV2aWNlIC0gdGhlIHNtYWxsLCBmYXN0IG9uZS4KKworMy4gQSBzbWFsbCBtZXRhZGF0YSBkZXZpY2UgLSByZWNvcmRzIHdoaWNoIGJsb2NrcyBhcmUgaW4gdGhlIGNhY2hlLAorICAgd2hpY2ggYXJlIGRpcnR5LCBhbmQgZXh0cmEgaGludHMgZm9yIHVzZSBieSB0aGUgcG9saWN5IG9iamVjdC4KKyAgIFRoaXMgaW5mb3JtYXRpb24gY291bGQgYmUgcHV0IG9uIHRoZSBjYWNoZSBkZXZpY2UsIGJ1dCBoYXZpbmcgaXQKKyAgIHNlcGFyYXRlIGFsbG93cyB0aGUgdm9sdW1lIG1hbmFnZXIgdG8gY29uZmlndXJlIGl0IGRpZmZlcmVudGx5LAorICAgZS5nLiBhcyBhIG1pcnJvciBmb3IgZXh0cmEgcm9idXN0bmVzcy4gIFRoaXMgbWV0YWRhdGEgZGV2aWNlIG1heSBvbmx5CisgICBiZSB1c2VkIGJ5IGEgc2luZ2xlIGNhY2hlIGRldmljZS4KKworRml4ZWQgYmxvY2sgc2l6ZQorLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgb3JpZ2luIGlzIGRpdmlkZWQgdXAgaW50byBibG9ja3Mgb2YgYSBmaXhlZCBzaXplLiAgVGhpcyBibG9jayBzaXplCitpcyBjb25maWd1cmFibGUgd2hlbiB5b3UgZmlyc3QgY3JlYXRlIHRoZSBjYWNoZS4gIFR5cGljYWxseSB3ZSd2ZSBiZWVuCit1c2luZyBibG9jayBzaXplcyBvZiAyNTZLQiAtIDEwMjRLQi4gIFRoZSBibG9jayBzaXplIG11c3QgYmUgYmV0d2VlbiA2NAorKDMyS0IpIGFuZCAyMDk3MTUyICgxR0IpIGFuZCBhIG11bHRpcGxlIG9mIDY0ICgzMktCKS4KKworSGF2aW5nIGEgZml4ZWQgYmxvY2sgc2l6ZSBzaW1wbGlmaWVzIHRoZSB0YXJnZXQgYSBsb3QuICBCdXQgaXQgaXMKK3NvbWV0aGluZyBvZiBhIGNvbXByb21pc2UuICBGb3IgaW5zdGFuY2UsIGEgc21hbGwgcGFydCBvZiBhIGJsb2NrIG1heSBiZQorZ2V0dGluZyBoaXQgYSBsb3QsIHlldCB0aGUgd2hvbGUgYmxvY2sgd2lsbCBiZSBwcm9tb3RlZCB0byB0aGUgY2FjaGUuCitTbyBsYXJnZSBibG9jayBzaXplcyBhcmUgYmFkIGJlY2F1c2UgdGhleSB3YXN0ZSBjYWNoZSBzcGFjZS4gIEFuZCBzbWFsbAorYmxvY2sgc2l6ZXMgYXJlIGJhZCBiZWNhdXNlIHRoZXkgaW5jcmVhc2UgdGhlIGFtb3VudCBvZiBtZXRhZGF0YSAoYm90aAoraW4gY29yZSBhbmQgb24gZGlzaykuCisKK0NhY2hlIG9wZXJhdGluZyBtb2RlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBjYWNoZSBoYXMgdGhyZWUgb3BlcmF0aW5nIG1vZGVzOiB3cml0ZWJhY2ssIHdyaXRldGhyb3VnaCBhbmQKK3Bhc3N0aHJvdWdoLgorCitJZiB3cml0ZWJhY2ssIHRoZSBkZWZhdWx0LCBpcyBzZWxlY3RlZCB0aGVuIGEgd3JpdGUgdG8gYSBibG9jayB0aGF0IGlzCitjYWNoZWQgd2lsbCBnbyBvbmx5IHRvIHRoZSBjYWNoZSBhbmQgdGhlIGJsb2NrIHdpbGwgYmUgbWFya2VkIGRpcnR5IGluCit0aGUgbWV0YWRhdGEuCisKK0lmIHdyaXRldGhyb3VnaCBpcyBzZWxlY3RlZCB0aGVuIGEgd3JpdGUgdG8gYSBjYWNoZWQgYmxvY2sgd2lsbCBub3QKK2NvbXBsZXRlIHVudGlsIGl0IGhhcyBoaXQgYm90aCB0aGUgb3JpZ2luIGFuZCBjYWNoZSBkZXZpY2VzLiAgQ2xlYW4KK2Jsb2NrcyBzaG91bGQgcmVtYWluIGNsZWFuLgorCitJZiBwYXNzdGhyb3VnaCBpcyBzZWxlY3RlZCwgdXNlZnVsIHdoZW4gdGhlIGNhY2hlIGNvbnRlbnRzIGFyZSBub3Qga25vd24KK3RvIGJlIGNvaGVyZW50IHdpdGggdGhlIG9yaWdpbiBkZXZpY2UsIHRoZW4gYWxsIHJlYWRzIGFyZSBzZXJ2ZWQgZnJvbQordGhlIG9yaWdpbiBkZXZpY2UgKGFsbCByZWFkcyBtaXNzIHRoZSBjYWNoZSkgYW5kIGFsbCB3cml0ZXMgYXJlCitmb3J3YXJkZWQgdG8gdGhlIG9yaWdpbiBkZXZpY2U7IGFkZGl0aW9uYWxseSwgd3JpdGUgaGl0cyBjYXVzZSBjYWNoZQorYmxvY2sgaW52YWxpZGF0ZXMuICBUbyBlbmFibGUgcGFzc3Rocm91Z2ggbW9kZSB0aGUgY2FjaGUgbXVzdCBiZSBjbGVhbi4KK1Bhc3N0aHJvdWdoIG1vZGUgYWxsb3dzIGEgY2FjaGUgZGV2aWNlIHRvIGJlIGFjdGl2YXRlZCB3aXRob3V0IGhhdmluZyB0bword29ycnkgYWJvdXQgY29oZXJlbmN5LiAgQ29oZXJlbmN5IHRoYXQgZXhpc3RzIGlzIG1haW50YWluZWQsIGFsdGhvdWdoCit0aGUgY2FjaGUgd2lsbCBncmFkdWFsbHkgY29vbCBhcyB3cml0ZXMgdGFrZSBwbGFjZS4gIElmIHRoZSBjb2hlcmVuY3kgb2YKK3RoZSBjYWNoZSBjYW4gbGF0ZXIgYmUgdmVyaWZpZWQsIG9yIGVzdGFibGlzaGVkIHRocm91Z2ggdXNlIG9mIHRoZQorImludmFsaWRhdGVfY2Jsb2NrcyIgbWVzc2FnZSwgdGhlIGNhY2hlIGRldmljZSBjYW4gYmUgdHJhbnNpdGlvbmVkIHRvCit3cml0ZXRocm91Z2ggb3Igd3JpdGViYWNrIG1vZGUgd2hpbGUgc3RpbGwgd2FybS4gIE90aGVyd2lzZSwgdGhlIGNhY2hlCitjb250ZW50cyBjYW4gYmUgZGlzY2FyZGVkIHByaW9yIHRvIHRyYW5zaXRpb25pbmcgdG8gdGhlIGRlc2lyZWQKK29wZXJhdGluZyBtb2RlLgorCitBIHNpbXBsZSBjbGVhbmVyIHBvbGljeSBpcyBwcm92aWRlZCwgd2hpY2ggd2lsbCBjbGVhbiAod3JpdGUgYmFjaykgYWxsCitkaXJ0eSBibG9ja3MgaW4gYSBjYWNoZS4gIFVzZWZ1bCBmb3IgZGVjb21taXNzaW9uaW5nIGEgY2FjaGUgb3Igd2hlbgorc2hyaW5raW5nIGEgY2FjaGUuICBTaHJpbmtpbmcgdGhlIGNhY2hlJ3MgZmFzdCBkZXZpY2UgcmVxdWlyZXMgYWxsIGNhY2hlCitibG9ja3MsIGluIHRoZSBhcmVhIG9mIHRoZSBjYWNoZSBiZWluZyByZW1vdmVkLCB0byBiZSBjbGVhbi4gIElmIHRoZQorYXJlYSBiZWluZyByZW1vdmVkIGZyb20gdGhlIGNhY2hlIHN0aWxsIGNvbnRhaW5zIGRpcnR5IGJsb2NrcyB0aGUgcmVzaXplCit3aWxsIGZhaWwuICBDYXJlIG11c3QgYmUgdGFrZW4gdG8gbmV2ZXIgcmVkdWNlIHRoZSB2b2x1bWUgdXNlZCBmb3IgdGhlCitjYWNoZSdzIGZhc3QgZGV2aWNlIHVudGlsIHRoZSBjYWNoZSBpcyBjbGVhbi4gIFRoaXMgaXMgb2YgcGFydGljdWxhcgoraW1wb3J0YW5jZSBpZiB3cml0ZWJhY2sgbW9kZSBpcyB1c2VkLiAgV3JpdGV0aHJvdWdoIGFuZCBwYXNzdGhyb3VnaAorbW9kZXMgYWxyZWFkeSBtYWludGFpbiBhIGNsZWFuIGNhY2hlLiAgRnV0dXJlIHN1cHBvcnQgdG8gcGFydGlhbGx5IGNsZWFuCit0aGUgY2FjaGUsIGFib3ZlIGEgc3BlY2lmaWVkIHRocmVzaG9sZCwgd2lsbCBhbGxvdyBmb3Iga2VlcGluZyB0aGUgY2FjaGUKK3dhcm0gYW5kIGluIHdyaXRlYmFjayBtb2RlIGR1cmluZyByZXNpemUuCisKK01pZ3JhdGlvbiB0aHJvdHRsaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitNaWdyYXRpbmcgZGF0YSBiZXR3ZWVuIHRoZSBvcmlnaW4gYW5kIGNhY2hlIGRldmljZSB1c2VzIGJhbmR3aWR0aC4KK1RoZSB1c2VyIGNhbiBzZXQgYSB0aHJvdHRsZSB0byBwcmV2ZW50IG1vcmUgdGhhbiBhIGNlcnRhaW4gYW1vdW50IG9mCittaWdyYXRpb24gb2NjdXJyaW5nIGF0IGFueSBvbmUgdGltZS4gIEN1cnJlbnRseSB3ZSdyZSBub3QgdGFraW5nIGFueQorYWNjb3VudCBvZiBub3JtYWwgaW8gdHJhZmZpYyBnb2luZyB0byB0aGUgZGV2aWNlcy4gIE1vcmUgd29yayBuZWVkcworZG9pbmcgaGVyZSB0byBhdm9pZCBtaWdyYXRpbmcgZHVyaW5nIHRob3NlIHBlYWsgaW8gbW9tZW50cy4KKworRm9yIHRoZSB0aW1lIGJlaW5nLCBhIG1lc3NhZ2UgIm1pZ3JhdGlvbl90aHJlc2hvbGQgPCNzZWN0b3JzPiIKK2NhbiBiZSB1c2VkIHRvIHNldCB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc2VjdG9ycyBiZWluZyBtaWdyYXRlZCwKK3RoZSBkZWZhdWx0IGJlaW5nIDIwNDgwMCBzZWN0b3JzIChvciAxMDBNQikuCisKK1VwZGF0aW5nIG9uLWRpc2sgbWV0YWRhdGEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT24tZGlzayBtZXRhZGF0YSBpcyBjb21taXR0ZWQgZXZlcnkgdGltZSBhIEZMVVNIIG9yIEZVQSBiaW8gaXMgd3JpdHRlbi4KK0lmIG5vIHN1Y2ggcmVxdWVzdHMgYXJlIG1hZGUgdGhlbiBjb21taXRzIHdpbGwgb2NjdXIgZXZlcnkgc2Vjb25kLiAgVGhpcworbWVhbnMgdGhlIGNhY2hlIGJlaGF2ZXMgbGlrZSBhIHBoeXNpY2FsIGRpc2sgdGhhdCBoYXMgYSB2b2xhdGlsZSB3cml0ZQorY2FjaGUuICBJZiBwb3dlciBpcyBsb3N0IHlvdSBtYXkgbG9zZSBzb21lIHJlY2VudCB3cml0ZXMuICBUaGUgbWV0YWRhdGEKK3Nob3VsZCBhbHdheXMgYmUgY29uc2lzdGVudCBpbiBzcGl0ZSBvZiBhbnkgY3Jhc2guCisKK1RoZSAnZGlydHknIHN0YXRlIGZvciBhIGNhY2hlIGJsb2NrIGNoYW5nZXMgZmFyIHRvbyBmcmVxdWVudGx5IGZvciB1cwordG8ga2VlcCB1cGRhdGluZyBpdCBvbiB0aGUgZmx5LiAgU28gd2UgdHJlYXQgaXQgYXMgYSBoaW50LiAgSW4gbm9ybWFsCitvcGVyYXRpb24gaXQgd2lsbCBiZSB3cml0dGVuIHdoZW4gdGhlIGRtIGRldmljZSBpcyBzdXNwZW5kZWQuICBJZiB0aGUKK3N5c3RlbSBjcmFzaGVzIGFsbCBjYWNoZSBibG9ja3Mgd2lsbCBiZSBhc3N1bWVkIGRpcnR5IHdoZW4gcmVzdGFydGVkLgorCitQZXItYmxvY2sgcG9saWN5IGhpbnRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1BvbGljeSBwbHVnLWlucyBjYW4gc3RvcmUgYSBjaHVuayBvZiBkYXRhIHBlciBjYWNoZSBibG9jay4gIEl0J3MgdXAgdG8KK3RoZSBwb2xpY3kgaG93IGJpZyB0aGlzIGNodW5rIGlzLCBidXQgaXQgc2hvdWxkIGJlIGtlcHQgc21hbGwuICBMaWtlIHRoZQorZGlydHkgZmxhZ3MgdGhpcyBkYXRhIGlzIGxvc3QgaWYgdGhlcmUncyBhIGNyYXNoIHNvIGEgc2FmZSBmYWxsYmFjawordmFsdWUgc2hvdWxkIGFsd2F5cyBiZSBwb3NzaWJsZS4KKworRm9yIGluc3RhbmNlLCB0aGUgJ21xJyBwb2xpY3ksIHdoaWNoIGlzIGN1cnJlbnRseSB0aGUgZGVmYXVsdCBwb2xpY3ksCit1c2VzIHRoaXMgZmFjaWxpdHkgdG8gc3RvcmUgdGhlIGhpdCBjb3VudCBvZiB0aGUgY2FjaGUgYmxvY2tzLiAgSWYKK3RoZXJlJ3MgYSBjcmFzaCB0aGlzIGluZm9ybWF0aW9uIHdpbGwgYmUgbG9zdCwgd2hpY2ggbWVhbnMgdGhlIGNhY2hlCittYXkgYmUgbGVzcyBlZmZpY2llbnQgdW50aWwgdGhvc2UgaGl0IGNvdW50cyBhcmUgcmVnZW5lcmF0ZWQuCisKK1BvbGljeSBoaW50cyBhZmZlY3QgcGVyZm9ybWFuY2UsIG5vdCBjb3JyZWN0bmVzcy4KKworUG9saWN5IG1lc3NhZ2luZworLS0tLS0tLS0tLS0tLS0tLQorCitQb2xpY2llcyB3aWxsIGhhdmUgZGlmZmVyZW50IHR1bmFibGVzLCBzcGVjaWZpYyB0byBlYWNoIG9uZSwgc28gd2UKK25lZWQgYSBnZW5lcmljIHdheSBvZiBnZXR0aW5nIGFuZCBzZXR0aW5nIHRoZXNlLiAgRGV2aWNlLW1hcHBlcgorbWVzc2FnZXMgYXJlIHVzZWQuICBSZWZlciB0byBjYWNoZS1wb2xpY2llcy50eHQuCisKK0Rpc2NhcmQgYml0c2V0IHJlc29sdXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2UgY2FuIGF2b2lkIGNvcHlpbmcgZGF0YSBkdXJpbmcgbWlncmF0aW9uIGlmIHdlIGtub3cgdGhlIGJsb2NrIGhhcworYmVlbiBkaXNjYXJkZWQuICBBIHByaW1lIGV4YW1wbGUgb2YgdGhpcyBpcyB3aGVuIG1rZnMgZGlzY2FyZHMgdGhlCit3aG9sZSBibG9jayBkZXZpY2UuICBXZSBzdG9yZSBhIGJpdHNldCB0cmFja2luZyB0aGUgZGlzY2FyZCBzdGF0ZSBvZgorYmxvY2tzLiAgSG93ZXZlciwgd2UgYWxsb3cgdGhpcyBiaXRzZXQgdG8gaGF2ZSBhIGRpZmZlcmVudCBibG9jayBzaXplCitmcm9tIHRoZSBjYWNoZSBibG9ja3MuICBUaGlzIGlzIGJlY2F1c2Ugd2UgbmVlZCB0byB0cmFjayB0aGUgZGlzY2FyZAorc3RhdGUgZm9yIGFsbCBvZiB0aGUgb3JpZ2luIGRldmljZSAoY29tcGFyZSB3aXRoIHRoZSBkaXJ0eSBiaXRzZXQKK3doaWNoIGlzIGp1c3QgZm9yIHRoZSBzbWFsbGVyIGNhY2hlIGRldmljZSkuCisKK1RhcmdldCBpbnRlcmZhY2UKKz09PT09PT09PT09PT09PT0KKworQ29uc3RydWN0b3IKKy0tLS0tLS0tLS0tCisKKyBjYWNoZSA8bWV0YWRhdGEgZGV2PiA8Y2FjaGUgZGV2PiA8b3JpZ2luIGRldj4gPGJsb2NrIHNpemU+CisgICAgICAgPCNmZWF0dXJlIGFyZ3M+IFs8ZmVhdHVyZSBhcmc+XSoKKyAgICAgICA8cG9saWN5PiA8I3BvbGljeSBhcmdzPiBbcG9saWN5IGFyZ3NdKgorCisgbWV0YWRhdGEgZGV2ICAgIDogZmFzdCBkZXZpY2UgaG9sZGluZyB0aGUgcGVyc2lzdGVudCBtZXRhZGF0YQorIGNhY2hlIGRldgkgOiBmYXN0IGRldmljZSBob2xkaW5nIGNhY2hlZCBkYXRhIGJsb2NrcworIG9yaWdpbiBkZXYJIDogc2xvdyBkZXZpY2UgaG9sZGluZyBvcmlnaW5hbCBkYXRhIGJsb2NrcworIGJsb2NrIHNpemUgICAgICA6IGNhY2hlIHVuaXQgc2l6ZSBpbiBzZWN0b3JzCisKKyAjZmVhdHVyZSBhcmdzICAgOiBudW1iZXIgb2YgZmVhdHVyZSBhcmd1bWVudHMgcGFzc2VkCisgZmVhdHVyZSBhcmdzICAgIDogd3JpdGV0aHJvdWdoIG9yIHBhc3N0aHJvdWdoIChUaGUgZGVmYXVsdCBpcyB3cml0ZWJhY2suKQorCisgcG9saWN5ICAgICAgICAgIDogdGhlIHJlcGxhY2VtZW50IHBvbGljeSB0byB1c2UKKyAjcG9saWN5IGFyZ3MgICAgOiBhbiBldmVuIG51bWJlciBvZiBhcmd1bWVudHMgY29ycmVzcG9uZGluZyB0bworICAgICAgICAgICAgICAgICAgIGtleS92YWx1ZSBwYWlycyBwYXNzZWQgdG8gdGhlIHBvbGljeQorIHBvbGljeSBhcmdzICAgICA6IGtleS92YWx1ZSBwYWlycyBwYXNzZWQgdG8gdGhlIHBvbGljeQorCQkgICBFLmcuICdzZXF1ZW50aWFsX3RocmVzaG9sZCAxMDI0JworCQkgICBTZWUgY2FjaGUtcG9saWNpZXMudHh0IGZvciBkZXRhaWxzLgorCitPcHRpb25hbCBmZWF0dXJlIGFyZ3VtZW50cyBhcmU6CisgICB3cml0ZXRocm91Z2ggIDogd3JpdGUgdGhyb3VnaCBjYWNoaW5nIHRoYXQgcHJvaGliaXRzIGNhY2hlIGJsb2NrCisJCSAgIGNvbnRlbnQgZnJvbSBiZWluZyBkaWZmZXJlbnQgZnJvbSBvcmlnaW4gYmxvY2sgY29udGVudC4KKwkJICAgV2l0aG91dCB0aGlzIGFyZ3VtZW50LCB0aGUgZGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gd3JpdGUKKwkJICAgYmFjayBjYWNoZSBibG9jayBjb250ZW50cyBsYXRlciBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucywKKwkJICAgc28gdGhleSBtYXkgZGlmZmVyIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgb3JpZ2luIGJsb2Nrcy4KKworICAgcGFzc3Rocm91Z2gJIDogYSBkZWdyYWRlZCBtb2RlIHVzZWZ1bCBmb3IgdmFyaW91cyBjYWNoZSBjb2hlcmVuY3kKKwkJICAgc2l0dWF0aW9ucyAoZS5nLiwgcm9sbGluZyBiYWNrIHNuYXBzaG90cyBvZgorCQkgICB1bmRlcmx5aW5nIHN0b3JhZ2UpLgkgUmVhZHMgYW5kIHdyaXRlcyBhbHdheXMgZ28gdG8KKwkJICAgdGhlIG9yaWdpbi4JSWYgYSB3cml0ZSBnb2VzIHRvIGEgY2FjaGVkIG9yaWdpbgorCQkgICBibG9jaywgdGhlbiB0aGUgY2FjaGUgYmxvY2sgaXMgaW52YWxpZGF0ZWQuCisJCSAgIFRvIGVuYWJsZSBwYXNzdGhyb3VnaCBtb2RlIHRoZSBjYWNoZSBtdXN0IGJlIGNsZWFuLgorCitBIHBvbGljeSBjYWxsZWQgJ2RlZmF1bHQnIGlzIGFsd2F5cyByZWdpc3RlcmVkLiAgVGhpcyBpcyBhbiBhbGlhcyBmb3IKK3RoZSBwb2xpY3kgd2UgY3VycmVudGx5IHRoaW5rIGlzIGdpdmluZyBiZXN0IGFsbCByb3VuZCBwZXJmb3JtYW5jZS4KKworQXMgdGhlIGRlZmF1bHQgcG9saWN5IGNvdWxkIHZhcnkgYmV0d2VlbiBrZXJuZWxzLCBpZiB5b3UgYXJlIHJlbHlpbmcgb24KK3RoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgYSBzcGVjaWZpYyBwb2xpY3ksIGFsd2F5cyByZXF1ZXN0IGl0IGJ5IG5hbWUuCisKK1N0YXR1cworLS0tLS0tCisKKzxtZXRhZGF0YSBibG9jayBzaXplPiA8I3VzZWQgbWV0YWRhdGEgYmxvY2tzPi88I3RvdGFsIG1ldGFkYXRhIGJsb2Nrcz4KKzxjYWNoZSBibG9jayBzaXplPiA8I3VzZWQgY2FjaGUgYmxvY2tzPi88I3RvdGFsIGNhY2hlIGJsb2Nrcz4KKzwjcmVhZCBoaXRzPiA8I3JlYWQgbWlzc2VzPiA8I3dyaXRlIGhpdHM+IDwjd3JpdGUgbWlzc2VzPgorPCNkZW1vdGlvbnM+IDwjcHJvbW90aW9ucz4gPCNkaXJ0eT4gPCNmZWF0dXJlcz4gPGZlYXR1cmVzPioKKzwjY29yZSBhcmdzPiA8Y29yZSBhcmdzPiogPHBvbGljeSBuYW1lPiA8I3BvbGljeSBhcmdzPiA8cG9saWN5IGFyZ3M+KgorPGNhY2hlIG1ldGFkYXRhIG1vZGU+CisKK21ldGFkYXRhIGJsb2NrIHNpemUJIDogRml4ZWQgYmxvY2sgc2l6ZSBmb3IgZWFjaCBtZXRhZGF0YSBibG9jayBpbgorCQkJICAgICBzZWN0b3JzCisjdXNlZCBtZXRhZGF0YSBibG9ja3MJIDogTnVtYmVyIG9mIG1ldGFkYXRhIGJsb2NrcyB1c2VkCisjdG90YWwgbWV0YWRhdGEgYmxvY2tzCSA6IFRvdGFsIG51bWJlciBvZiBtZXRhZGF0YSBibG9ja3MKK2NhY2hlIGJsb2NrIHNpemUJIDogQ29uZmlndXJhYmxlIGJsb2NrIHNpemUgZm9yIHRoZSBjYWNoZSBkZXZpY2UKKwkJCSAgICAgaW4gc2VjdG9ycworI3VzZWQgY2FjaGUgYmxvY2tzCSA6IE51bWJlciBvZiBibG9ja3MgcmVzaWRlbnQgaW4gdGhlIGNhY2hlCisjdG90YWwgY2FjaGUgYmxvY2tzCSA6IFRvdGFsIG51bWJlciBvZiBjYWNoZSBibG9ja3MKKyNyZWFkIGhpdHMJCSA6IE51bWJlciBvZiB0aW1lcyBhIFJFQUQgYmlvIGhhcyBiZWVuIG1hcHBlZAorCQkJICAgICB0byB0aGUgY2FjaGUKKyNyZWFkIG1pc3NlcwkJIDogTnVtYmVyIG9mIHRpbWVzIGEgUkVBRCBiaW8gaGFzIGJlZW4gbWFwcGVkCisJCQkgICAgIHRvIHRoZSBvcmlnaW4KKyN3cml0ZSBoaXRzCQkgOiBOdW1iZXIgb2YgdGltZXMgYSBXUklURSBiaW8gaGFzIGJlZW4gbWFwcGVkCisJCQkgICAgIHRvIHRoZSBjYWNoZQorI3dyaXRlIG1pc3NlcwkJIDogTnVtYmVyIG9mIHRpbWVzIGEgV1JJVEUgYmlvIGhhcyBiZWVuCisJCQkgICAgIG1hcHBlZCB0byB0aGUgb3JpZ2luCisjZGVtb3Rpb25zCQkgOiBOdW1iZXIgb2YgdGltZXMgYSBibG9jayBoYXMgYmVlbiByZW1vdmVkCisJCQkgICAgIGZyb20gdGhlIGNhY2hlCisjcHJvbW90aW9ucwkJIDogTnVtYmVyIG9mIHRpbWVzIGEgYmxvY2sgaGFzIGJlZW4gbW92ZWQgdG8KKwkJCSAgICAgdGhlIGNhY2hlCisjZGlydHkJCQkgOiBOdW1iZXIgb2YgYmxvY2tzIGluIHRoZSBjYWNoZSB0aGF0IGRpZmZlcgorCQkJICAgICBmcm9tIHRoZSBvcmlnaW4KKyNmZWF0dXJlIGFyZ3MJCSA6IE51bWJlciBvZiBmZWF0dXJlIGFyZ3MgdG8gZm9sbG93CitmZWF0dXJlIGFyZ3MJCSA6ICd3cml0ZXRocm91Z2gnIChvcHRpb25hbCkKKyNjb3JlIGFyZ3MJCSA6IE51bWJlciBvZiBjb3JlIGFyZ3VtZW50cyAobXVzdCBiZSBldmVuKQorY29yZSBhcmdzCQkgOiBLZXkvdmFsdWUgcGFpcnMgZm9yIHR1bmluZyB0aGUgY29yZQorCQkJICAgICBlLmcuIG1pZ3JhdGlvbl90aHJlc2hvbGQKK3BvbGljeSBuYW1lCQkgOiBOYW1lIG9mIHRoZSBwb2xpY3kKKyNwb2xpY3kgYXJncwkJIDogTnVtYmVyIG9mIHBvbGljeSBhcmd1bWVudHMgdG8gZm9sbG93IChtdXN0IGJlIGV2ZW4pCitwb2xpY3kgYXJncwkJIDogS2V5L3ZhbHVlIHBhaXJzIGUuZy4gc2VxdWVudGlhbF90aHJlc2hvbGQKK2NhY2hlIG1ldGFkYXRhIG1vZGUgICAgICA6IHJvIGlmIHJlYWQtb25seSwgcncgaWYgcmVhZC13cml0ZQorCUluIHNlcmlvdXMgY2FzZXMgd2hlcmUgZXZlbiBhIHJlYWQtb25seSBtb2RlIGlzIGRlZW1lZCB1bnNhZmUKKwlubyBmdXJ0aGVyIEkvTyB3aWxsIGJlIHBlcm1pdHRlZCBhbmQgdGhlIHN0YXR1cyB3aWxsIGp1c3QKKwljb250YWluIHRoZSBzdHJpbmcgJ0ZhaWwnLiAgVGhlIHVzZXJzcGFjZSByZWNvdmVyeSB0b29scworCXNob3VsZCB0aGVuIGJlIHVzZWQuCituZWVkc19jaGVjawkJIDogJ25lZWRzX2NoZWNrJyBpZiBzZXQsICctJyBpZiBub3Qgc2V0CisJQSBtZXRhZGF0YSBvcGVyYXRpb24gaGFzIGZhaWxlZCwgcmVzdWx0aW5nIGluIHRoZSBuZWVkc19jaGVjaworCWZsYWcgYmVpbmcgc2V0IGluIHRoZSBtZXRhZGF0YSdzIHN1cGVyYmxvY2suICBUaGUgbWV0YWRhdGEKKwlkZXZpY2UgbXVzdCBiZSBkZWFjdGl2YXRlZCBhbmQgY2hlY2tlZC9yZXBhaXJlZCBiZWZvcmUgdGhlCisJY2FjaGUgY2FuIGJlIG1hZGUgZnVsbHkgb3BlcmF0aW9uYWwgYWdhaW4uICAnLScgaW5kaWNhdGVzCisJbmVlZHNfY2hlY2sgaXMgbm90IHNldC4KKworTWVzc2FnZXMKKy0tLS0tLS0tCisKK1BvbGljaWVzIHdpbGwgaGF2ZSBkaWZmZXJlbnQgdHVuYWJsZXMsIHNwZWNpZmljIHRvIGVhY2ggb25lLCBzbyB3ZQorbmVlZCBhIGdlbmVyaWMgd2F5IG9mIGdldHRpbmcgYW5kIHNldHRpbmcgdGhlc2UuICBEZXZpY2UtbWFwcGVyCittZXNzYWdlcyBhcmUgdXNlZC4gIChBIHN5c2ZzIGludGVyZmFjZSB3b3VsZCBhbHNvIGJlIHBvc3NpYmxlLikKKworVGhlIG1lc3NhZ2UgZm9ybWF0IGlzOgorCisgICA8a2V5PiA8dmFsdWU+CisKK0UuZy4KKyAgIGRtc2V0dXAgbWVzc2FnZSBteV9jYWNoZSAwIHNlcXVlbnRpYWxfdGhyZXNob2xkIDEwMjQKKworCitJbnZhbGlkYXRpb24gaXMgcmVtb3ZpbmcgYW4gZW50cnkgZnJvbSB0aGUgY2FjaGUgd2l0aG91dCB3cml0aW5nIGl0CitiYWNrLiAgQ2FjaGUgYmxvY2tzIGNhbiBiZSBpbnZhbGlkYXRlZCB2aWEgdGhlIGludmFsaWRhdGVfY2Jsb2NrcworbWVzc2FnZSwgd2hpY2ggdGFrZXMgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBjYmxvY2sgcmFuZ2VzLiAgRWFjaCBjYmxvY2sKK3JhbmdlJ3MgZW5kIHZhbHVlIGlzICJvbmUgcGFzdCB0aGUgZW5kIiwgbWVhbmluZyA1LTEwIGV4cHJlc3NlcyBhIHJhbmdlCitvZiB2YWx1ZXMgZnJvbSA1IHRvIDkuICBFYWNoIGNibG9jayBtdXN0IGJlIGV4cHJlc3NlZCBhcyBhIGRlY2ltYWwKK3ZhbHVlLCBpbiB0aGUgZnV0dXJlIGEgdmFyaWFudCBtZXNzYWdlIHRoYXQgdGFrZXMgY2Jsb2NrIHJhbmdlcworZXhwcmVzc2VkIGluIGhleGlkZWNpbWFsIG1heSBiZSBuZWVkZWQgdG8gYmV0dGVyIHN1cHBvcnQgZWZmaWNpZW50CitpbnZhbGlkYXRpb24gb2YgbGFyZ2VyIGNhY2hlcy4gIFRoZSBjYWNoZSBtdXN0IGJlIGluIHBhc3N0aHJvdWdoIG1vZGUKK3doZW4gaW52YWxpZGF0ZV9jYmxvY2tzIGlzIHVzZWQuCisKKyAgIGludmFsaWRhdGVfY2Jsb2NrcyBbPGNibG9jaz58PGNibG9jayBiZWdpbj4tPGNibG9jayBlbmQ+XSoKKworRS5nLgorICAgZG1zZXR1cCBtZXNzYWdlIG15X2NhY2hlIDAgaW52YWxpZGF0ZV9jYmxvY2tzIDIzNDUgMzQ1Ni00NTY3IDU2NzgtNjc4OQorCitFeGFtcGxlcworPT09PT09PT0KKworVGhlIHRlc3Qgc3VpdGUgY2FuIGJlIGZvdW5kIGhlcmU6CisKK2h0dHBzOi8vZ2l0aHViLmNvbS9qdGhvcm5iZXIvZGV2aWNlLW1hcHBlci10ZXN0LXN1aXRlCisKK2Rtc2V0dXAgY3JlYXRlIG15X2NhY2hlIC0tdGFibGUgJzAgNDE5NDMwNDAgY2FjaGUgL2Rldi9tYXBwZXIvbWV0YWRhdGEgXAorCS9kZXYvbWFwcGVyL3NzZCAvZGV2L21hcHBlci9vcmlnaW4gNTEyIDEgd3JpdGViYWNrIGRlZmF1bHQgMCcKK2Rtc2V0dXAgY3JlYXRlIG15X2NhY2hlIC0tdGFibGUgJzAgNDE5NDMwNDAgY2FjaGUgL2Rldi9tYXBwZXIvbWV0YWRhdGEgXAorCS9kZXYvbWFwcGVyL3NzZCAvZGV2L21hcHBlci9vcmlnaW4gMTAyNCAxIHdyaXRlYmFjayBcCisJbXEgNCBzZXF1ZW50aWFsX3RocmVzaG9sZCAxMDI0IHJhbmRvbV90aHJlc2hvbGQgOCcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9kZWxheS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvZGVsYXkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwN2I1OTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvZGVsYXkudHh0CkBAIC0wLDAgKzEsMjcgQEAKK2RtLWRlbGF5Cis9PT09PT09PQorCitEZXZpY2UtTWFwcGVyJ3MgImRlbGF5IiB0YXJnZXQgZGVsYXlzIHJlYWRzIGFuZC9vciB3cml0ZXMKK2FuZCBtYXBzIHRoZW0gdG8gZGlmZmVyZW50IGRldmljZXMuCisKK1BhcmFtZXRlcnM6CisgICAgPGRldmljZT4gPG9mZnNldD4gPGRlbGF5PiBbPHdyaXRlX2RldmljZT4gPHdyaXRlX29mZnNldD4gPHdyaXRlX2RlbGF5Pl0KKworV2l0aCBzZXBhcmF0ZSB3cml0ZSBwYXJhbWV0ZXJzLCB0aGUgZmlyc3Qgc2V0IGlzIG9ubHkgdXNlZCBmb3IgcmVhZHMuCitPZmZzZXRzIGFyZSBzcGVjaWZpZWQgaW4gc2VjdG9ycy4KK0RlbGF5cyBhcmUgc3BlY2lmaWVkIGluIG1pbGxpc2Vjb25kcy4KKworRXhhbXBsZSBzY3JpcHRzCis9PT09PT09PT09PT09PT0KK1tbCisjIS9iaW4vc2gKKyMgQ3JlYXRlIGRldmljZSBkZWxheWluZyBydyBvcGVyYXRpb24gZm9yIDUwMG1zCitlY2hvICIwIGBibG9ja2RldiAtLWdldHNpemUgJDFgIGRlbGF5ICQxIDAgNTAwIiB8IGRtc2V0dXAgY3JlYXRlIGRlbGF5ZWQKK11dCisKK1tbCisjIS9iaW4vc2gKKyMgQ3JlYXRlIGRldmljZSBkZWxheWluZyBvbmx5IHdyaXRlIG9wZXJhdGlvbiBmb3IgNTAwbXMgYW5kCisjIHNwbGl0dGluZyByZWFkcyBhbmQgd3JpdGVzIHRvIGRpZmZlcmVudCBkZXZpY2VzICQxICQyCitlY2hvICIwIGBibG9ja2RldiAtLWdldHNpemUgJDFgIGRlbGF5ICQxIDAgMCAkMiAwIDUwMCIgfCBkbXNldHVwIGNyZWF0ZSBkZWxheWVkCitdXQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL2RtLWNyeXB0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9kbS1jcnlwdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkyMTcxZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9kbS1jcnlwdC50eHQKQEAgLTAsMCArMSw5NiBAQAorZG0tY3J5cHQKKz09PT09PT09PQorCitEZXZpY2UtTWFwcGVyJ3MgImNyeXB0IiB0YXJnZXQgcHJvdmlkZXMgdHJhbnNwYXJlbnQgZW5jcnlwdGlvbiBvZiBibG9jayBkZXZpY2VzCit1c2luZyB0aGUga2VybmVsIGNyeXB0byBBUEkuCisKK0ZvciBhIG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2Ygc3VwcG9ydGVkIHBhcmFtZXRlcnMgc2VlOgoraHR0cHM6Ly9naXRsYWIuY29tL2NyeXB0c2V0dXAvY3J5cHRzZXR1cC93aWtpcy9ETUNyeXB0CisKK1BhcmFtZXRlcnM6IDxjaXBoZXI+IDxrZXk+IDxpdl9vZmZzZXQ+IDxkZXZpY2UgcGF0aD4gXAorCSAgICAgIDxvZmZzZXQ+IFs8I29wdF9wYXJhbXM+IDxvcHRfcGFyYW1zPl0KKworPGNpcGhlcj4KKyAgICBFbmNyeXB0aW9uIGNpcGhlciBhbmQgYW4gb3B0aW9uYWwgSVYgZ2VuZXJhdGlvbiBtb2RlLgorICAgIChJbiBmb3JtYXQgY2lwaGVyWzprZXljb3VudF0tY2hhaW5tb2RlLWl2bW9kZVs6aXZvcHRzXSkuCisgICAgRXhhbXBsZXM6CisgICAgICAgZGVzCisgICAgICAgYWVzLWNiYy1lc3NpdjpzaGEyNTYKKyAgICAgICB0d29maXNoLWVjYgorCisgICAgL3Byb2MvY3J5cHRvIGNvbnRhaW5zIHN1cHBvcnRlZCBjcnlwdG8gbW9kZXMKKworPGtleT4KKyAgICBLZXkgdXNlZCBmb3IgZW5jcnlwdGlvbi4gSXQgaXMgZW5jb2RlZCBhcyBhIGhleGFkZWNpbWFsIG51bWJlci4KKyAgICBZb3UgY2FuIG9ubHkgdXNlIGtleSBzaXplcyB0aGF0IGFyZSB2YWxpZCBmb3IgdGhlIHNlbGVjdGVkIGNpcGhlcgorICAgIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIHNlbGVjdGVkIGl2IG1vZGUuCisgICAgTm90ZSB0aGF0IGZvciBzb21lIGl2IG1vZGVzIHRoZSBrZXkgc3RyaW5nIGNhbiBjb250YWluIGFkZGl0aW9uYWwKKyAgICBrZXlzIChmb3IgZXhhbXBsZSBJViBzZWVkKSBzbyB0aGUga2V5IGNvbnRhaW5zIG1vcmUgcGFydHMgY29uY2F0ZW5hdGVkCisgICAgaW50byBhIHNpbmdsZSBzdHJpbmcuCisKKzxrZXljb3VudD4KKyAgICBNdWx0aS1rZXkgY29tcGF0aWJpbGl0eSBtb2RlLiBZb3UgY2FuIGRlZmluZSA8a2V5Y291bnQ+IGtleXMgYW5kCisgICAgdGhlbiBzZWN0b3JzIGFyZSBlbmNyeXB0ZWQgYWNjb3JkaW5nIHRvIHRoZWlyIG9mZnNldHMgKHNlY3RvciAwIHVzZXMga2V5MDsKKyAgICBzZWN0b3IgMSB1c2VzIGtleTEgZXRjLikuICA8a2V5Y291bnQ+IG11c3QgYmUgYSBwb3dlciBvZiB0d28uCisKKzxpdl9vZmZzZXQ+CisgICAgVGhlIElWIG9mZnNldCBpcyBhIHNlY3RvciBjb3VudCB0aGF0IGlzIGFkZGVkIHRvIHRoZSBzZWN0b3IgbnVtYmVyCisgICAgYmVmb3JlIGNyZWF0aW5nIHRoZSBJVi4KKworPGRldmljZSBwYXRoPgorICAgIFRoaXMgaXMgdGhlIGRldmljZSB0aGF0IGlzIGdvaW5nIHRvIGJlIHVzZWQgYXMgYmFja2VuZCBhbmQgY29udGFpbnMgdGhlCisgICAgZW5jcnlwdGVkIGRhdGEuICBZb3UgY2FuIHNwZWNpZnkgaXQgYXMgYSBwYXRoIGxpa2UgL2Rldi94eHggb3IgYSBkZXZpY2UKKyAgICBudW1iZXIgPG1ham9yPjo8bWlub3I+LgorCis8b2Zmc2V0PgorICAgIFN0YXJ0aW5nIHNlY3RvciB3aXRoaW4gdGhlIGRldmljZSB3aGVyZSB0aGUgZW5jcnlwdGVkIGRhdGEgYmVnaW5zLgorCis8I29wdF9wYXJhbXM+CisgICAgTnVtYmVyIG9mIG9wdGlvbmFsIHBhcmFtZXRlcnMuIElmIHRoZXJlIGFyZSBubyBvcHRpb25hbCBwYXJhbWV0ZXJzLAorICAgIHRoZSBvcHRpb25hbCBwYXJhbWF0ZXJzIHNlY3Rpb24gY2FuIGJlIHNraXBwZWQgb3IgI29wdF9wYXJhbXMgY2FuIGJlIHplcm8uCisgICAgT3RoZXJ3aXNlICNvcHRfcGFyYW1zIGlzIHRoZSBudW1iZXIgb2YgZm9sbG93aW5nIGFyZ3VtZW50cy4KKworICAgIEV4YW1wbGUgb2Ygb3B0aW9uYWwgcGFyYW1ldGVycyBzZWN0aW9uOgorICAgICAgICAzIGFsbG93X2Rpc2NhcmRzIHNhbWVfY3B1X2NyeXB0IHN1Ym1pdF9mcm9tX2NyeXB0X2NwdXMKKworYWxsb3dfZGlzY2FyZHMKKyAgICBCbG9jayBkaXNjYXJkIHJlcXVlc3RzIChhLmsuYS4gVFJJTSkgYXJlIHBhc3NlZCB0aHJvdWdoIHRoZSBjcnlwdCBkZXZpY2UuCisgICAgVGhlIGRlZmF1bHQgaXMgdG8gaWdub3JlIGRpc2NhcmQgcmVxdWVzdHMuCisKKyAgICBXQVJOSU5HOiBBc3Nlc3MgdGhlIHNwZWNpZmljIHNlY3VyaXR5IHJpc2tzIGNhcmVmdWxseSBiZWZvcmUgZW5hYmxpbmcgdGhpcworICAgIG9wdGlvbi4gIEZvciBleGFtcGxlLCBhbGxvd2luZyBkaXNjYXJkcyBvbiBlbmNyeXB0ZWQgZGV2aWNlcyBtYXkgbGVhZCB0bworICAgIHRoZSBsZWFrIG9mIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjaXBoZXJ0ZXh0IGRldmljZSAoZmlsZXN5c3RlbSB0eXBlLAorICAgIHVzZWQgc3BhY2UgZXRjLikgaWYgdGhlIGRpc2NhcmRlZCBibG9ja3MgY2FuIGJlIGxvY2F0ZWQgZWFzaWx5IG9uIHRoZQorICAgIGRldmljZSBsYXRlci4KKworc2FtZV9jcHVfY3J5cHQKKyAgICBQZXJmb3JtIGVuY3J5cHRpb24gdXNpbmcgdGhlIHNhbWUgY3B1IHRoYXQgSU8gd2FzIHN1Ym1pdHRlZCBvbi4KKyAgICBUaGUgZGVmYXVsdCBpcyB0byB1c2UgYW4gdW5ib3VuZCB3b3JrcXVldWUgc28gdGhhdCBlbmNyeXB0aW9uIHdvcmsKKyAgICBpcyBhdXRvbWF0aWNhbGx5IGJhbGFuY2VkIGJldHdlZW4gYXZhaWxhYmxlIENQVXMuCisKK3N1Ym1pdF9mcm9tX2NyeXB0X2NwdXMKKyAgICBEaXNhYmxlIG9mZmxvYWRpbmcgd3JpdGVzIHRvIGEgc2VwYXJhdGUgdGhyZWFkIGFmdGVyIGVuY3J5cHRpb24uCisgICAgVGhlcmUgYXJlIHNvbWUgc2l0dWF0aW9ucyB3aGVyZSBvZmZsb2FkaW5nIHdyaXRlIGJpb3MgZnJvbSB0aGUKKyAgICBlbmNyeXB0aW9uIHRocmVhZHMgdG8gYSBzaW5nbGUgdGhyZWFkIGRlZ3JhZGVzIHBlcmZvcm1hbmNlCisgICAgc2lnbmlmaWNhbnRseS4gIFRoZSBkZWZhdWx0IGlzIHRvIG9mZmxvYWQgd3JpdGUgYmlvcyB0byB0aGUgc2FtZQorICAgIHRocmVhZCBiZWNhdXNlIGl0IGJlbmVmaXRzIENGUSB0byBoYXZlIHdyaXRlcyBzdWJtaXR0ZWQgdXNpbmcgdGhlCisgICAgc2FtZSBjb250ZXh0LgorCitFeGFtcGxlIHNjcmlwdHMKKz09PT09PT09PT09PT09PQorTFVLUyAoTGludXggVW5pZmllZCBLZXkgU2V0dXApIGlzIG5vdyB0aGUgcHJlZmVycmVkIHdheSB0byBzZXQgdXAgZGlzaworZW5jcnlwdGlvbiB3aXRoIGRtLWNyeXB0IHVzaW5nIHRoZSAnY3J5cHRzZXR1cCcgdXRpbGl0eSwgc2VlCitodHRwczovL2dpdGxhYi5jb20vY3J5cHRzZXR1cC9jcnlwdHNldHVwCisKK1tbCisjIS9iaW4vc2gKKyMgQ3JlYXRlIGEgY3J5cHQgZGV2aWNlIHVzaW5nIGRtc2V0dXAKK2Rtc2V0dXAgY3JlYXRlIGNyeXB0MSAtLXRhYmxlICIwIGBibG9ja2RldiAtLWdldHNpemUgJDFgIGNyeXB0IGFlcy1jYmMtZXNzaXY6c2hhMjU2IGJhYmViYWJlYmFiZWJhYmViYWJlYmFiZWJhYmViYWJlIDAgJDEgMCIKK11dCisKK1tbCisjIS9iaW4vc2gKKyMgQ3JlYXRlIGEgY3J5cHQgZGV2aWNlIHVzaW5nIGNyeXB0c2V0dXAgYW5kIExVS1MgaGVhZGVyIHdpdGggZGVmYXVsdCBjaXBoZXIKK2NyeXB0c2V0dXAgbHVrc0Zvcm1hdCAkMQorY3J5cHRzZXR1cCBsdWtzT3BlbiAkMSBjcnlwdDEKK11dCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvZG0tZmxha2V5LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9kbS1mbGFrZXkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmZjVjMjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvZG0tZmxha2V5LnR4dApAQCAtMCwwICsxLDUzIEBACitkbS1mbGFrZXkKKz09PT09PT09PQorCitUaGlzIHRhcmdldCBpcyB0aGUgc2FtZSBhcyB0aGUgbGluZWFyIHRhcmdldCBleGNlcHQgdGhhdCBpdCBleGhpYml0cwordW5yZWxpYWJsZSBiZWhhdmlvdXIgcGVyaW9kaWNhbGx5LiAgSXQncyBiZWVuIGZvdW5kIHVzZWZ1bCBpbiBzaW11bGF0aW5nCitmYWlsaW5nIGRldmljZXMgZm9yIHRlc3RpbmcgcHVycG9zZXMuCisKK1N0YXJ0aW5nIGZyb20gdGhlIHRpbWUgdGhlIHRhYmxlIGlzIGxvYWRlZCwgdGhlIGRldmljZSBpcyBhdmFpbGFibGUgZm9yCis8dXAgaW50ZXJ2YWw+IHNlY29uZHMsIHRoZW4gZXhoaWJpdHMgdW5yZWxpYWJsZSBiZWhhdmlvdXIgZm9yIDxkb3duCitpbnRlcnZhbD4gc2Vjb25kcywgYW5kIHRoZW4gdGhpcyBjeWNsZSByZXBlYXRzLgorCitBbHNvLCBjb25zaWRlciB1c2luZyB0aGlzIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIGRtLWRlbGF5IHRhcmdldCB0b28sCit3aGljaCBjYW4gZGVsYXkgcmVhZHMgYW5kIHdyaXRlcyBhbmQvb3Igc2VuZCB0aGVtIHRvIGRpZmZlcmVudAordW5kZXJseWluZyBkZXZpY2VzLgorCitUYWJsZSBwYXJhbWV0ZXJzCistLS0tLS0tLS0tLS0tLS0tCisgIDxkZXYgcGF0aD4gPG9mZnNldD4gPHVwIGludGVydmFsPiA8ZG93biBpbnRlcnZhbD4gXAorICAgIFs8bnVtX2ZlYXR1cmVzPiBbPGZlYXR1cmUgYXJndW1lbnRzPl1dCisKK01hbmRhdG9yeSBwYXJhbWV0ZXJzOgorICAgIDxkZXYgcGF0aD46IEZ1bGwgcGF0aG5hbWUgdG8gdGhlIHVuZGVybHlpbmcgYmxvY2stZGV2aWNlLCBvciBhCisgICAgICAgICAgICAgICAgIm1ham9yOm1pbm9yIiBkZXZpY2UtbnVtYmVyLgorICAgIDxvZmZzZXQ+OiBTdGFydGluZyBzZWN0b3Igd2l0aGluIHRoZSBkZXZpY2UuCisgICAgPHVwIGludGVydmFsPjogTnVtYmVyIG9mIHNlY29uZHMgZGV2aWNlIGlzIGF2YWlsYWJsZS4KKyAgICA8ZG93biBpbnRlcnZhbD46IE51bWJlciBvZiBzZWNvbmRzIGRldmljZSByZXR1cm5zIGVycm9ycy4KKworT3B0aW9uYWwgZmVhdHVyZSBwYXJhbWV0ZXJzOgorICBJZiBubyBmZWF0dXJlIHBhcmFtZXRlcnMgYXJlIHByZXNlbnQsIGR1cmluZyB0aGUgcGVyaW9kcyBvZgorICB1bnJlbGlhYmlsaXR5LCBhbGwgSS9PIHJldHVybnMgZXJyb3JzLgorCisgIGRyb3Bfd3JpdGVzOgorCUFsbCB3cml0ZSBJL08gaXMgc2lsZW50bHkgaWdub3JlZC4KKwlSZWFkIEkvTyBpcyBoYW5kbGVkIGNvcnJlY3RseS4KKworICBjb3JydXB0X2Jpb19ieXRlIDxOdGhfYnl0ZT4gPGRpcmVjdGlvbj4gPHZhbHVlPiA8ZmxhZ3M+OgorCUR1cmluZyA8ZG93biBpbnRlcnZhbD4sIHJlcGxhY2UgPE50aF9ieXRlPiBvZiB0aGUgZGF0YSBvZgorCWVhY2ggbWF0Y2hpbmcgYmlvIHdpdGggPHZhbHVlPi4KKworICAgIDxOdGhfYnl0ZT46IFRoZSBvZmZzZXQgb2YgdGhlIGJ5dGUgdG8gcmVwbGFjZS4KKwkJQ291bnRpbmcgc3RhcnRzIGF0IDEsIHRvIHJlcGxhY2UgdGhlIGZpcnN0IGJ5dGUuCisgICAgPGRpcmVjdGlvbj46IEVpdGhlciAncicgdG8gY29ycnVwdCByZWFkcyBvciAndycgdG8gY29ycnVwdCB3cml0ZXMuCisJCSAndycgaXMgaW5jb21wYXRpYmxlIHdpdGggZHJvcF93cml0ZXMuCisgICAgPHZhbHVlPjogVGhlIHZhbHVlIChmcm9tIDAtMjU1KSB0byB3cml0ZS4KKyAgICA8ZmxhZ3M+OiBQZXJmb3JtIHRoZSByZXBsYWNlbWVudCBvbmx5IGlmIGJpby0+YmlfcncgaGFzIGFsbCB0aGUKKwkgICAgIHNlbGVjdGVkIGZsYWdzIHNldC4KKworRXhhbXBsZXM6CisgIGNvcnJ1cHRfYmlvX2J5dGUgMzIgciAxIDAKKwktIHJlcGxhY2VzIHRoZSAzMm5kIGJ5dGUgb2YgUkVBRCBiaW9zIHdpdGggdGhlIHZhbHVlIDEKKworICBjb3JydXB0X2Jpb19ieXRlIDIyNCB3IDAgMzIKKwktIHJlcGxhY2VzIHRoZSAyMjR0aCBieXRlIG9mIFJFUV9NRVRBICg9MzIpIGJpb3Mgd2l0aCB0aGUgdmFsdWUgMApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL2RtLWlvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9kbS1pby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I1ZDlhNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9kbS1pby50eHQKQEAgLTAsMCArMSw3NSBAQAorZG0taW8KKz09PT09CisKK0RtLWlvIHByb3ZpZGVzIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgSS9PIHNlcnZpY2VzLiBUaGVyZSBhcmUgdGhyZWUKK3R5cGVzIG9mIEkvTyBzZXJ2aWNlcyBhdmFpbGFibGUsIGFuZCBlYWNoIHR5cGUgaGFzIGEgc3luYyBhbmQgYW4gYXN5bmMKK3ZlcnNpb24uCisKK1RoZSB1c2VyIG11c3Qgc2V0IHVwIGFuIGlvX3JlZ2lvbiBzdHJ1Y3R1cmUgdG8gZGVzY3JpYmUgdGhlIGRlc2lyZWQgbG9jYXRpb24KK29mIHRoZSBJL08uIEVhY2ggaW9fcmVnaW9uIGluZGljYXRlcyBhIGJsb2NrLWRldmljZSBhbG9uZyB3aXRoIHRoZSBzdGFydGluZworc2VjdG9yIGFuZCBzaXplIG9mIHRoZSByZWdpb24uCisKKyAgIHN0cnVjdCBpb19yZWdpb24geworICAgICAgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldjsKKyAgICAgIHNlY3Rvcl90IHNlY3RvcjsKKyAgICAgIHNlY3Rvcl90IGNvdW50OworICAgfTsKKworRG0taW8gY2FuIHJlYWQgZnJvbSBvbmUgaW9fcmVnaW9uIG9yIHdyaXRlIHRvIG9uZSBvciBtb3JlIGlvX3JlZ2lvbnMuIFdyaXRlcwordG8gbXVsdGlwbGUgcmVnaW9ucyBhcmUgc3BlY2lmaWVkIGJ5IGFuIGFycmF5IG9mIGlvX3JlZ2lvbiBzdHJ1Y3R1cmVzLgorCitUaGUgZmlyc3QgSS9PIHNlcnZpY2UgdHlwZSB0YWtlcyBhIGxpc3Qgb2YgbWVtb3J5IHBhZ2VzIGFzIHRoZSBkYXRhIGJ1ZmZlciBmb3IKK3RoZSBJL08sIGFsb25nIHdpdGggYW4gb2Zmc2V0IGludG8gdGhlIGZpcnN0IHBhZ2UuCisKKyAgIHN0cnVjdCBwYWdlX2xpc3QgeworICAgICAgc3RydWN0IHBhZ2VfbGlzdCAqbmV4dDsKKyAgICAgIHN0cnVjdCBwYWdlICpwYWdlOworICAgfTsKKworICAgaW50IGRtX2lvX3N5bmModW5zaWduZWQgaW50IG51bV9yZWdpb25zLCBzdHJ1Y3QgaW9fcmVnaW9uICp3aGVyZSwgaW50IHJ3LAorICAgICAgICAgICAgICAgICAgc3RydWN0IHBhZ2VfbGlzdCAqcGwsIHVuc2lnbmVkIGludCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICplcnJvcl9iaXRzKTsKKyAgIGludCBkbV9pb19hc3luYyh1bnNpZ25lZCBpbnQgbnVtX3JlZ2lvbnMsIHN0cnVjdCBpb19yZWdpb24gKndoZXJlLCBpbnQgcncsCisgICAgICAgICAgICAgICAgICAgc3RydWN0IHBhZ2VfbGlzdCAqcGwsIHVuc2lnbmVkIGludCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgaW9fbm90aWZ5X2ZuIGZuLCB2b2lkICpjb250ZXh0KTsKKworVGhlIHNlY29uZCBJL08gc2VydmljZSB0eXBlIHRha2VzIGFuIGFycmF5IG9mIGJpbyB2ZWN0b3JzIGFzIHRoZSBkYXRhIGJ1ZmZlcgorZm9yIHRoZSBJL08uIFRoaXMgc2VydmljZSBjYW4gYmUgaGFuZHkgaWYgdGhlIGNhbGxlciBoYXMgYSBwcmUtYXNzZW1ibGVkIGJpbywKK2J1dCB3YW50cyB0byBkaXJlY3QgZGlmZmVyZW50IHBvcnRpb25zIG9mIHRoZSBiaW8gdG8gZGlmZmVyZW50IGRldmljZXMuCisKKyAgIGludCBkbV9pb19zeW5jX2J2ZWModW5zaWduZWQgaW50IG51bV9yZWdpb25zLCBzdHJ1Y3QgaW9fcmVnaW9uICp3aGVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHJ3LCBzdHJ1Y3QgYmlvX3ZlYyAqYnZlYywKKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqZXJyb3JfYml0cyk7CisgICBpbnQgZG1faW9fYXN5bmNfYnZlYyh1bnNpZ25lZCBpbnQgbnVtX3JlZ2lvbnMsIHN0cnVjdCBpb19yZWdpb24gKndoZXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJ3LCBzdHJ1Y3QgYmlvX3ZlYyAqYnZlYywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlvX25vdGlmeV9mbiBmbiwgdm9pZCAqY29udGV4dCk7CisKK1RoZSB0aGlyZCBJL08gc2VydmljZSB0eXBlIHRha2VzIGEgcG9pbnRlciB0byBhIHZtYWxsb2MnZCBtZW1vcnkgYnVmZmVyIGFzIHRoZQorZGF0YSBidWZmZXIgZm9yIHRoZSBJL08uIFRoaXMgc2VydmljZSBjYW4gYmUgaGFuZHkgaWYgdGhlIGNhbGxlciBuZWVkcyB0byBkbworSS9PIHRvIGEgbGFyZ2UgcmVnaW9uIGJ1dCBkb2Vzbid0IHdhbnQgdG8gYWxsb2NhdGUgYSBsYXJnZSBudW1iZXIgb2YgaW5kaXZpZHVhbAorbWVtb3J5IHBhZ2VzLgorCisgICBpbnQgZG1faW9fc3luY192bSh1bnNpZ25lZCBpbnQgbnVtX3JlZ2lvbnMsIHN0cnVjdCBpb19yZWdpb24gKndoZXJlLCBpbnQgcncsCisgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLCB1bnNpZ25lZCBsb25nICplcnJvcl9iaXRzKTsKKyAgIGludCBkbV9pb19hc3luY192bSh1bnNpZ25lZCBpbnQgbnVtX3JlZ2lvbnMsIHN0cnVjdCBpb19yZWdpb24gKndoZXJlLCBpbnQgcncsCisgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSwgaW9fbm90aWZ5X2ZuIGZuLCB2b2lkICpjb250ZXh0KTsKKworQ2FsbGVycyBvZiB0aGUgYXN5bmNocm9ub3VzIEkvTyBzZXJ2aWNlcyBtdXN0IGluY2x1ZGUgdGhlIG5hbWUgb2YgYSBjb21wbGV0aW9uCitjYWxsYmFjayByb3V0aW5lIGFuZCBhIHBvaW50ZXIgdG8gc29tZSBjb250ZXh0IGRhdGEgZm9yIHRoZSBJL08uCisKKyAgIHR5cGVkZWYgdm9pZCAoKmlvX25vdGlmeV9mbikodW5zaWduZWQgbG9uZyBlcnJvciwgdm9pZCAqY29udGV4dCk7CisKK1RoZSAiZXJyb3IiIHBhcmFtZXRlciBpbiB0aGlzIGNhbGxiYWNrLCBhcyB3ZWxsIGFzIHRoZSAiKmVycm9yIiBwYXJhbWV0ZXIgaW4KK2FsbCBvZiB0aGUgc3luY2hyb25vdXMgdmVyc2lvbnMsIGlzIGEgYml0c2V0IChpbnN0ZWFkIG9mIGEgc2ltcGxlIGVycm9yIHZhbHVlKS4KK0luIHRoZSBjYXNlIG9mIGFuIHdyaXRlLUkvTyB0byBtdWx0aXBsZSByZWdpb25zLCB0aGlzIGJpdHNldCBhbGxvd3MgZG0taW8gdG8KK2luZGljYXRlIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBvbiBlYWNoIGluZGl2aWR1YWwgcmVnaW9uLgorCitCZWZvcmUgdXNpbmcgYW55IG9mIHRoZSBkbS1pbyBzZXJ2aWNlcywgdGhlIHVzZXIgc2hvdWxkIGNhbGwgZG1faW9fZ2V0KCkKK2FuZCBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgcGFnZXMgdGhleSBleHBlY3QgdG8gcGVyZm9ybSBJL08gb24gY29uY3VycmVudGx5LgorRG0taW8gd2lsbCBhdHRlbXB0IHRvIHJlc2l6ZSBpdHMgbWVtcG9vbCB0byBtYWtlIHN1cmUgZW5vdWdoIHBhZ2VzIGFyZQorYWx3YXlzIGF2YWlsYWJsZSBpbiBvcmRlciB0byBhdm9pZCB1bm5lY2Vzc2FyeSB3YWl0aW5nIHdoaWxlIHBlcmZvcm1pbmcgSS9PLgorCitXaGVuIHRoZSB1c2VyIGlzIGZpbmlzaGVkIHVzaW5nIHRoZSBkbS1pbyBzZXJ2aWNlcywgdGhleSBzaG91bGQgY2FsbAorZG1faW9fcHV0KCkgYW5kIHNwZWNpZnkgdGhlIHNhbWUgbnVtYmVyIG9mIHBhZ2VzIHRoYXQgd2VyZSBnaXZlbiBvbiB0aGUKK2RtX2lvX2dldCgpIGNhbGwuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9kbS1sb2cudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL2RtLWxvZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE1NWFjNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9kbS1sb2cudHh0CkBAIC0wLDAgKzEsNTQgQEAKK0RldmljZS1NYXBwZXIgTG9nZ2luZworPT09PT09PT09PT09PT09PT09PT09CitUaGUgZGV2aWNlLW1hcHBlciBsb2dnaW5nIGNvZGUgaXMgdXNlZCBieSBzb21lIG9mIHRoZSBkZXZpY2UtbWFwcGVyCitSQUlEIHRhcmdldHMgdG8gdHJhY2sgcmVnaW9ucyBvZiB0aGUgZGlzayB0aGF0IGFyZSBub3QgY29uc2lzdGVudC4KK0EgcmVnaW9uIChvciBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzIHNwYWNlKSBvZiB0aGUgZGlzayBtYXkgYmUKK2luY29uc2lzdGVudCBiZWNhdXNlIGEgUkFJRCBzdHJpcGUgaXMgY3VycmVudGx5IGJlaW5nIG9wZXJhdGVkIG9uIG9yCithIG1hY2hpbmUgZGllZCB3aGlsZSB0aGUgcmVnaW9uIHdhcyBiZWluZyBhbHRlcmVkLiAgSW4gdGhlIGNhc2Ugb2YKK21pcnJvcnMsIGEgcmVnaW9uIHdvdWxkIGJlIGNvbnNpZGVyZWQgZGlydHkvaW5jb25zaXN0ZW50IHdoaWxlIHlvdQorYXJlIHdyaXRpbmcgdG8gaXQgYmVjYXVzZSB0aGUgd3JpdGVzIG5lZWQgdG8gYmUgcmVwbGljYXRlZCBmb3IgYWxsCit0aGUgbGVncyBvZiB0aGUgbWlycm9yIGFuZCBtYXkgbm90IHJlYWNoIHRoZSBsZWdzIGF0IHRoZSBzYW1lIHRpbWUuCitPbmNlIGFsbCB3cml0ZXMgYXJlIGNvbXBsZXRlLCB0aGUgcmVnaW9uIGlzIGNvbnNpZGVyZWQgY2xlYW4gYWdhaW4uCisKK1RoZXJlIGlzIGEgZ2VuZXJpYyBsb2dnaW5nIGludGVyZmFjZSB0aGF0IHRoZSBkZXZpY2UtbWFwcGVyIFJBSUQKK2ltcGxlbWVudGF0aW9ucyB1c2UgdG8gcGVyZm9ybSBsb2dnaW5nIG9wZXJhdGlvbnMgKHNlZQorZG1fZGlydHlfbG9nX3R5cGUgaW4gaW5jbHVkZS9saW51eC9kbS1kaXJ0eS1sb2cuaCkuICBWYXJpb3VzIGRpZmZlcmVudAorbG9nZ2luZyBpbXBsZW1lbnRhdGlvbnMgYXJlIGF2YWlsYWJsZSBhbmQgcHJvdmlkZSBkaWZmZXJlbnQKK2NhcGFiaWxpdGllcy4gIFRoZSBsaXN0IGluY2x1ZGVzOgorCitUeXBlCQlGaWxlcworPT09PQkJPT09PT0KK2Rpc2sJCWRyaXZlcnMvbWQvZG0tbG9nLmMKK2NvcmUJCWRyaXZlcnMvbWQvZG0tbG9nLmMKK3VzZXJzcGFjZQlkcml2ZXJzL21kL2RtLWxvZy11c2Vyc3BhY2UqIGluY2x1ZGUvbGludXgvZG0tbG9nLXVzZXJzcGFjZS5oCisKK1RoZSAiZGlzayIgbG9nIHR5cGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgbG9nIGltcGxlbWVudGF0aW9uIGNvbW1pdHMgdGhlIGxvZyBzdGF0ZSB0byBkaXNrLiAgVGhpcyB3YXksIHRoZQorbG9nZ2luZyBzdGF0ZSBzdXJ2aXZlcyByZWJvb3RzL2NyYXNoZXMuCisKK1RoZSAiY29yZSIgbG9nIHR5cGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgbG9nIGltcGxlbWVudGF0aW9uIGtlZXBzIHRoZSBsb2cgc3RhdGUgaW4gbWVtb3J5LiAgVGhlIGxvZyBzdGF0ZQord2lsbCBub3Qgc3Vydml2ZSBhIHJlYm9vdCBvciBjcmFzaCwgYnV0IHRoZXJlIG1heSBiZSBhIHNtYWxsIGJvb3N0IGluCitwZXJmb3JtYW5jZS4gIFRoaXMgbWV0aG9kIGNhbiBhbHNvIGJlIHVzZWQgaWYgbm8gc3RvcmFnZSBkZXZpY2UgaXMKK2F2YWlsYWJsZSBmb3Igc3RvcmluZyBsb2cgc3RhdGUuCisKK1RoZSAidXNlcnNwYWNlIiBsb2cgdHlwZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGlzIGxvZyB0eXBlIHNpbXBseSBwcm92aWRlcyBhIHdheSB0byBleHBvcnQgdGhlIGxvZyBBUEkgdG8gdXNlcnNwYWNlLAorc28gbG9nIGltcGxlbWVudGF0aW9ucyBjYW4gYmUgZG9uZSB0aGVyZS4gIFRoaXMgaXMgZG9uZSBieSBmb3J3YXJkaW5nIG1vc3QKK2xvZ2dpbmcgcmVxdWVzdHMgdG8gdXNlcnNwYWNlLCB3aGVyZSBhIGRhZW1vbiByZWNlaXZlcyBhbmQgcHJvY2Vzc2VzIHRoZQorcmVxdWVzdC4KKworVGhlIHN0cnVjdHVyZSB1c2VkIGZvciBjb21tdW5pY2F0aW9uIGJldHdlZW4ga2VybmVsIGFuZCB1c2Vyc3BhY2UgYXJlCitsb2NhdGVkIGluIGluY2x1ZGUvbGludXgvZG0tbG9nLXVzZXJzcGFjZS5oLiAgRHVlIHRvIHRoZSBmcmVxdWVuY3ksCitkaXZlcnNpdHksIGFuZCAyLXdheSBjb21tdW5pY2F0aW9uIG5hdHVyZSBvZiB0aGUgZXhjaGFuZ2VzIGJldHdlZW4KK2tlcm5lbCBhbmQgdXNlcnNwYWNlLCAnY29ubmVjdG9yJyBpcyB1c2VkIGFzIHRoZSBpbnRlcmZhY2UgZm9yCitjb21tdW5pY2F0aW9uLgorCitUaGVyZSBhcmUgY3VycmVudGx5IHR3byB1c2Vyc3BhY2UgbG9nIGltcGxlbWVudGF0aW9ucyB0aGF0IGxldmVyYWdlIHRoaXMKK2ZyYW1ld29yayAtICJjbHVzdGVyZWQtZGlzayIgYW5kICJjbHVzdGVyZWQtY29yZSIuICBUaGVzZSBpbXBsZW1lbnRhdGlvbnMKK3Byb3ZpZGUgYSBjbHVzdGVyLWNvaGVyZW50IGxvZyBmb3Igc2hhcmVkLXN0b3JhZ2UuICBEZXZpY2UtbWFwcGVyIG1pcnJvcmluZworY2FuIGJlIHVzZWQgaW4gYSBzaGFyZWQtc3RvcmFnZSBlbnZpcm9ubWVudCB3aGVuIHRoZSBjbHVzdGVyIGxvZyBpbXBsZW1lbnRhdGlvbnMKK2FyZSBlbXBsb3llZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9kbS1xdWV1ZS1sZW5ndGgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL2RtLXF1ZXVlLWxlbmd0aC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRkYjI1NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9kbS1xdWV1ZS1sZW5ndGgudHh0CkBAIC0wLDAgKzEsMzkgQEAKK2RtLXF1ZXVlLWxlbmd0aAorPT09PT09PT09PT09PT09CisKK2RtLXF1ZXVlLWxlbmd0aCBpcyBhIHBhdGggc2VsZWN0b3IgbW9kdWxlIGZvciBkZXZpY2UtbWFwcGVyIHRhcmdldHMsCit3aGljaCBzZWxlY3RzIGEgcGF0aCB3aXRoIHRoZSBsZWFzdCBudW1iZXIgb2YgaW4tZmxpZ2h0IEkvT3MuCitUaGUgcGF0aCBzZWxlY3RvciBuYW1lIGlzICdxdWV1ZS1sZW5ndGgnLgorCitUYWJsZSBwYXJhbWV0ZXJzIGZvciBlYWNoIHBhdGg6IFs8cmVwZWF0X2NvdW50Pl0KKwk8cmVwZWF0X2NvdW50PjogVGhlIG51bWJlciBvZiBJL09zIHRvIGRpc3BhdGNoIHVzaW5nIHRoZSBzZWxlY3RlZAorCQkJcGF0aCBiZWZvcmUgc3dpdGNoaW5nIHRvIHRoZSBuZXh0IHBhdGguCisJCQlJZiBub3QgZ2l2ZW4sIGludGVybmFsIGRlZmF1bHQgaXMgdXNlZC4gVG8gY2hlY2sKKwkJCXRoZSBkZWZhdWx0IHZhbHVlLCBzZWUgdGhlIGFjdGl2YXRlZCB0YWJsZS4KKworU3RhdHVzIGZvciBlYWNoIHBhdGg6IDxzdGF0dXM+IDxmYWlsLWNvdW50PiA8aW4tZmxpZ2h0PgorCTxzdGF0dXM+OiAnQScgaWYgdGhlIHBhdGggaXMgYWN0aXZlLCAnRicgaWYgdGhlIHBhdGggaXMgZmFpbGVkLgorCTxmYWlsLWNvdW50PjogVGhlIG51bWJlciBvZiBwYXRoIGZhaWx1cmVzLgorCTxpbi1mbGlnaHQ+OiBUaGUgbnVtYmVyIG9mIGluLWZsaWdodCBJL09zIG9uIHRoZSBwYXRoLgorCisKK0FsZ29yaXRobQorPT09PT09PT09CisKK2RtLXF1ZXVlLWxlbmd0aCBpbmNyZW1lbnRzL2RlY3JlbWVudHMgJ2luLWZsaWdodCcgd2hlbiBhbiBJL08gaXMKK2Rpc3BhdGNoZWQvY29tcGxldGVkIHJlc3BlY3RpdmVseS4KK2RtLXF1ZXVlLWxlbmd0aCBzZWxlY3RzIGEgcGF0aCB3aXRoIHRoZSBtaW5pbXVtICdpbi1mbGlnaHQnLgorCisKK0V4YW1wbGVzCis9PT09PT09PQorSW4gY2FzZSB0aGF0IDIgcGF0aHMgKHNkYSBhbmQgc2RiKSBhcmUgdXNlZCB3aXRoIHJlcGVhdF9jb3VudCA9PSAxMjguCisKKyMgZWNobyAiMCAxMCBtdWx0aXBhdGggMCAwIDEgMSBxdWV1ZS1sZW5ndGggMCAyIDEgODowIDEyOCA4OjE2IDEyOCIgXAorICBkbXNldHVwIGNyZWF0ZSB0ZXN0CisjCisjIGRtc2V0dXAgdGFibGUKK3Rlc3Q6IDAgMTAgbXVsdGlwYXRoIDAgMCAxIDEgcXVldWUtbGVuZ3RoIDAgMiAxIDg6MCAxMjggODoxNiAxMjgKKyMKKyMgZG1zZXR1cCBzdGF0dXMKK3Rlc3Q6IDAgMTAgbXVsdGlwYXRoIDIgMCAwIDAgMSAxIEUgMCAyIDEgODowIEEgMCAwIDg6MTYgQSAwIDAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9kbS1yYWlkLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9kbS1yYWlkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjJkNjM2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL2RtLXJhaWQudHh0CkBAIC0wLDAgKzEsMjU5IEBACitkbS1yYWlkCis9PT09PT09CisKK1RoZSBkZXZpY2UtbWFwcGVyIFJBSUQgKGRtLXJhaWQpIHRhcmdldCBwcm92aWRlcyBhIGJyaWRnZSBmcm9tIERNIHRvIE1ELgorSXQgYWxsb3dzIHRoZSBNRCBSQUlEIGRyaXZlcnMgdG8gYmUgYWNjZXNzZWQgdXNpbmcgYSBkZXZpY2UtbWFwcGVyCitpbnRlcmZhY2UuCisKKworTWFwcGluZyBUYWJsZSBJbnRlcmZhY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgdGFyZ2V0IGlzIG5hbWVkICJyYWlkIiBhbmQgaXQgYWNjZXB0cyB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6CisKKyAgPHJhaWRfdHlwZT4gPCNyYWlkX3BhcmFtcz4gPHJhaWRfcGFyYW1zPiBcCisgICAgPCNyYWlkX2RldnM+IDxtZXRhZGF0YV9kZXYwPiA8ZGV2MD4gWy4uIDxtZXRhZGF0YV9kZXZOPiA8ZGV2Tj5dCisKKzxyYWlkX3R5cGU+OgorICByYWlkMQkJUkFJRDEgbWlycm9yaW5nCisgIHJhaWQ0CQlSQUlENCBkZWRpY2F0ZWQgcGFyaXR5IGRpc2sKKyAgcmFpZDVfbGEJUkFJRDUgbGVmdCBhc3ltbWV0cmljCisJCS0gcm90YXRpbmcgcGFyaXR5IDAgd2l0aCBkYXRhIGNvbnRpbnVhdGlvbgorICByYWlkNV9yYQlSQUlENSByaWdodCBhc3ltbWV0cmljCisJCS0gcm90YXRpbmcgcGFyaXR5IE4gd2l0aCBkYXRhIGNvbnRpbnVhdGlvbgorICByYWlkNV9scwlSQUlENSBsZWZ0IHN5bW1ldHJpYworCQktIHJvdGF0aW5nIHBhcml0eSAwIHdpdGggZGF0YSByZXN0YXJ0CisgIHJhaWQ1X3JzIAlSQUlENSByaWdodCBzeW1tZXRyaWMKKwkJLSByb3RhdGluZyBwYXJpdHkgTiB3aXRoIGRhdGEgcmVzdGFydAorICByYWlkNl96cglSQUlENiB6ZXJvIHJlc3RhcnQKKwkJLSByb3RhdGluZyBwYXJpdHkgemVybyAobGVmdC10by1yaWdodCkgd2l0aCBkYXRhIHJlc3RhcnQKKyAgcmFpZDZfbnIJUkFJRDYgTiByZXN0YXJ0CisJCS0gcm90YXRpbmcgcGFyaXR5IE4gKHJpZ2h0LXRvLWxlZnQpIHdpdGggZGF0YSByZXN0YXJ0CisgIHJhaWQ2X25jCVJBSUQ2IE4gY29udGludWUKKwkJLSByb3RhdGluZyBwYXJpdHkgTiAocmlnaHQtdG8tbGVmdCkgd2l0aCBkYXRhIGNvbnRpbnVhdGlvbgorICByYWlkMTAgICAgICAgIFZhcmlvdXMgUkFJRDEwIGluc3BpcmVkIGFsZ29yaXRobXMgY2hvc2VuIGJ5IGFkZGl0aW9uYWwgcGFyYW1zCisJCS0gUkFJRDEwOiBTdHJpcGVkIE1pcnJvcnMgKGFrYSAnU3RyaXBpbmcgb24gdG9wIG9mIG1pcnJvcnMnKQorCQktIFJBSUQxRTogSW50ZWdyYXRlZCBBZGphY2VudCBTdHJpcGUgTWlycm9yaW5nCisJCS0gUkFJRDFFOiBJbnRlZ3JhdGVkIE9mZnNldCBTdHJpcGUgTWlycm9yaW5nCisJCS0gIGFuZCBvdGhlciBzaW1pbGFyIFJBSUQxMCB2YXJpYW50cworCisgIFJlZmVyZW5jZTogQ2hhcHRlciA0IG9mCisgIGh0dHA6Ly93d3cuc25pYS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9TTklBX0RERl9UZWNobmljYWxfUG9zaXRpb25fdjIuMC5wZGYKKworPCNyYWlkX3BhcmFtcz46IFRoZSBudW1iZXIgb2YgcGFyYW1ldGVycyB0aGF0IGZvbGxvdy4KKworPHJhaWRfcGFyYW1zPiBjb25zaXN0cyBvZgorICAgIE1hbmRhdG9yeSBwYXJhbWV0ZXJzOgorICAgICAgICA8Y2h1bmtfc2l6ZT46IENodW5rIHNpemUgaW4gc2VjdG9ycy4gIFRoaXMgcGFyYW1ldGVyIGlzIG9mdGVuIGtub3duIGFzCisJCSAgICAgICJzdHJpcGUgc2l6ZSIuICBJdCBpcyB0aGUgb25seSBtYW5kYXRvcnkgcGFyYW1ldGVyIGFuZAorCQkgICAgICBpcyBwbGFjZWQgZmlyc3QuCisKKyAgICBmb2xsb3dlZCBieSBvcHRpb25hbCBwYXJhbWV0ZXJzIChpbiBhbnkgb3JkZXIpOgorCVtzeW5jfG5vc3luY10gICBGb3JjZSBvciBwcmV2ZW50IFJBSUQgaW5pdGlhbGl6YXRpb24uCisKKwlbcmVidWlsZCA8aWR4Pl0JUmVidWlsZCBkcml2ZSBudW1iZXIgJ2lkeCcgKGZpcnN0IGRyaXZlIGlzIDApLgorCisJW2RhZW1vbl9zbGVlcCA8bXM+XQorCQlJbnRlcnZhbCBiZXR3ZWVuIHJ1bnMgb2YgdGhlIGJpdG1hcCBkYWVtb24gdGhhdAorCQljbGVhciBiaXRzLiAgQSBsb25nZXIgaW50ZXJ2YWwgbWVhbnMgbGVzcyBiaXRtYXAgSS9PIGJ1dAorCQlyZXN5bmNpbmcgYWZ0ZXIgYSBmYWlsdXJlIGlzIGxpa2VseSB0byB0YWtlIGxvbmdlci4KKworCVttaW5fcmVjb3ZlcnlfcmF0ZSA8a0Ivc2VjL2Rpc2s+XSAgVGhyb3R0bGUgUkFJRCBpbml0aWFsaXphdGlvbgorCVttYXhfcmVjb3ZlcnlfcmF0ZSA8a0Ivc2VjL2Rpc2s+XSAgVGhyb3R0bGUgUkFJRCBpbml0aWFsaXphdGlvbgorCVt3cml0ZV9tb3N0bHkgPGlkeD5dCQkgICBNYXJrIGRyaXZlIGluZGV4ICdpZHgnIHdyaXRlLW1vc3RseS4KKwlbbWF4X3dyaXRlX2JlaGluZCA8c2VjdG9ycz5dICAgICAgIFNlZSAnLS13cml0ZS1iZWhpbmQ9JyAobWFuIG1kYWRtKQorCVtzdHJpcGVfY2FjaGUgPHNlY3RvcnM+XSAgICAgICAgICAgU3RyaXBlIGNhY2hlIHNpemUgKFJBSUQgNC81LzYgb25seSkKKwlbcmVnaW9uX3NpemUgPHNlY3RvcnM+XQorCQlUaGUgcmVnaW9uX3NpemUgbXVsdGlwbGllZCBieSB0aGUgbnVtYmVyIG9mIHJlZ2lvbnMgaXMgdGhlCisJCWxvZ2ljYWwgc2l6ZSBvZiB0aGUgYXJyYXkuICBUaGUgYml0bWFwIHJlY29yZHMgdGhlIGRldmljZQorCQlzeW5jaHJvbmlzYXRpb24gc3RhdGUgZm9yIGVhY2ggcmVnaW9uLgorCisgICAgICAgIFtyYWlkMTBfY29waWVzICAgPCMgY29waWVzPl0KKyAgICAgICAgW3JhaWQxMF9mb3JtYXQgICA8bmVhcnxmYXJ8b2Zmc2V0Pl0KKwkJVGhlc2UgdHdvIG9wdGlvbnMgYXJlIHVzZWQgdG8gYWx0ZXIgdGhlIGRlZmF1bHQgbGF5b3V0IG9mCisJCWEgUkFJRDEwIGNvbmZpZ3VyYXRpb24uICBUaGUgbnVtYmVyIG9mIGNvcGllcyBpcyBjYW4gYmUKKwkJc3BlY2lmaWVkLCBidXQgdGhlIGRlZmF1bHQgaXMgMi4gIFRoZXJlIGFyZSBhbHNvIHRocmVlCisJCXZhcmlhdGlvbnMgdG8gaG93IHRoZSBjb3BpZXMgYXJlIGxhaWQgZG93biAtIHRoZSBkZWZhdWx0CisJCWlzICJuZWFyIi4gIE5lYXIgY29waWVzIGFyZSB3aGF0IG1vc3QgcGVvcGxlIHRoaW5rIG9mIHdpdGgKKwkJcmVzcGVjdCB0byBtaXJyb3JpbmcuICBJZiB0aGVzZSBvcHRpb25zIGFyZSBsZWZ0IHVuc3BlY2lmaWVkLAorCQlvciAncmFpZDEwX2NvcGllcyAyJyBhbmQvb3IgJ3JhaWQxMF9mb3JtYXQgbmVhcicgYXJlIGdpdmVuLAorCQl0aGVuIHRoZSBsYXlvdXRzIGZvciAyLCAzIGFuZCA0IGRldmljZXMJYXJlOgorCQkyIGRyaXZlcyAgICAgICAgIDMgZHJpdmVzICAgICAgICAgIDQgZHJpdmVzCisJCS0tLS0tLS0tICAgICAgICAgLS0tLS0tLS0tLSAgICAgICAgLS0tLS0tLS0tLS0tLS0KKwkJQTEgIEExICAgICAgICAgICBBMSAgQTEgIEEyICAgICAgICBBMSAgQTEgIEEyICBBMgorCQlBMiAgQTIgICAgICAgICAgIEEyICBBMyAgQTMgICAgICAgIEEzICBBMyAgQTQgIEE0CisJCUEzICBBMyAgICAgICAgICAgQTQgIEE0ICBBNSAgICAgICAgQTUgIEE1ICBBNiAgQTYKKwkJQTQgIEE0ICAgICAgICAgICBBNSAgQTYgIEE2ICAgICAgICBBNyAgQTcgIEE4ICBBOAorCQkuLiAgLi4gICAgICAgICAgIC4uICAuLiAgLi4gICAgICAgIC4uICAuLiAgLi4gIC4uCisJCVRoZSAyLWRldmljZSBsYXlvdXQgaXMgZXF1aXZhbGVudCAyLXdheSBSQUlEMS4gIFRoZSA0LWRldmljZQorCQlsYXlvdXQgaXMgd2hhdCBhIHRyYWRpdGlvbmFsIFJBSUQxMCB3b3VsZCBsb29rIGxpa2UuICBUaGUKKwkJMy1kZXZpY2UgbGF5b3V0IGlzIHdoYXQgbWlnaHQgYmUgY2FsbGVkIGEgJ1JBSUQxRSAtIEludGVncmF0ZWQKKwkJQWRqYWNlbnQgU3RyaXBlIE1pcnJvcmluZycuCisKKwkJSWYgJ3JhaWQxMF9jb3BpZXMgMicgYW5kICdyYWlkMTBfZm9ybWF0IGZhcicsIHRoZW4gdGhlIGxheW91dHMKKwkJZm9yIDIsIDMgYW5kIDQgZGV2aWNlcyBhcmU6CisJCTIgZHJpdmVzICAgICAgICAgICAgIDMgZHJpdmVzICAgICAgICAgICAgIDQgZHJpdmVzCisJCS0tLS0tLS0tICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisJCUExICBBMiAgICAgICAgICAgICAgIEExICAgQTIgICBBMyAgICAgICAgIEExICAgQTIgICBBMyAgIEE0CisJCUEzICBBNCAgICAgICAgICAgICAgIEE0ICAgQTUgICBBNiAgICAgICAgIEE1ICAgQTYgICBBNyAgIEE4CisJCUE1ICBBNiAgICAgICAgICAgICAgIEE3ICAgQTggICBBOSAgICAgICAgIEE5ICAgQTEwICBBMTEgIEExMgorCQkuLiAgLi4gICAgICAgICAgICAgICAuLiAgIC4uICAgLi4gICAgICAgICAuLiAgIC4uICAgLi4gICAuLgorCQlBMiAgQTEgICAgICAgICAgICAgICBBMyAgIEExICAgQTIgICAgICAgICBBMiAgIEExICAgQTQgICBBMworCQlBNCAgQTMgICAgICAgICAgICAgICBBNiAgIEE0ICAgQTUgICAgICAgICBBNiAgIEE1ICAgQTggICBBNworCQlBNiAgQTUgICAgICAgICAgICAgICBBOSAgIEE3ICAgQTggICAgICAgICBBMTAgIEE5ICAgQTEyICBBMTEKKwkJLi4gIC4uICAgICAgICAgICAgICAgLi4gICAuLiAgIC4uICAgICAgICAgLi4gICAuLiAgIC4uICAgLi4KKworCQlJZiAncmFpZDEwX2NvcGllcyAyJyBhbmQgJ3JhaWQxMF9mb3JtYXQgb2Zmc2V0JywgdGhlbiB0aGUKKwkJbGF5b3V0cyBmb3IgMiwgMyBhbmQgNCBkZXZpY2VzIGFyZToKKwkJMiBkcml2ZXMgICAgICAgMyBkcml2ZXMgICAgICAgICAgIDQgZHJpdmVzCisJCS0tLS0tLS0tICAgICAgIC0tLS0tLS0tLS0tLSAgICAgICAtLS0tLS0tLS0tLS0tLS0tLQorCQlBMSAgQTIgICAgICAgICBBMSAgQTIgIEEzICAgICAgICAgQTEgIEEyICBBMyAgQTQKKwkJQTIgIEExICAgICAgICAgQTMgIEExICBBMiAgICAgICAgIEEyICBBMSAgQTQgIEEzCisJCUEzICBBNCAgICAgICAgIEE0ICBBNSAgQTYgICAgICAgICBBNSAgQTYgIEE3ICBBOAorCQlBNCAgQTMgICAgICAgICBBNiAgQTQgIEE1ICAgICAgICAgQTYgIEE1ICBBOCAgQTcKKwkJQTUgIEE2ICAgICAgICAgQTcgIEE4ICBBOSAgICAgICAgIEE5ICBBMTAgQTExIEExMgorCQlBNiAgQTUgICAgICAgICBBOSAgQTcgIEE4ICAgICAgICAgQTEwIEE5ICBBMTIgQTExCisJCS4uICAuLiAgICAgICAgIC4uICAuLiAgLi4gICAgICAgICAuLiAgLi4gIC4uICAuLgorCQlIZXJlIHdlIHNlZSBsYXlvdXRzIGNsb3NlbHkgYWtpbiB0byAnUkFJRDFFIC0gSW50ZWdyYXRlZAorCQlPZmZzZXQgU3RyaXBlIE1pcnJvcmluZycuCisKKzwjcmFpZF9kZXZzPjogVGhlIG51bWJlciBvZiBkZXZpY2VzIGNvbXBvc2luZyB0aGUgYXJyYXkuCisJRWFjaCBkZXZpY2UgY29uc2lzdHMgb2YgdHdvIGVudHJpZXMuICBUaGUgZmlyc3QgaXMgdGhlIGRldmljZQorCWNvbnRhaW5pbmcgdGhlIG1ldGFkYXRhIChpZiBhbnkpOyB0aGUgc2Vjb25kIGlzIHRoZSBvbmUgY29udGFpbmluZyB0aGUKKwlkYXRhLgorCisJSWYgYSBkcml2ZSBoYXMgZmFpbGVkIG9yIGlzIG1pc3NpbmcgYXQgY3JlYXRpb24gdGltZSwgYSAnLScgY2FuIGJlCisJZ2l2ZW4gZm9yIGJvdGggdGhlIG1ldGFkYXRhIGFuZCBkYXRhIGRyaXZlcyBmb3IgYSBnaXZlbiBwb3NpdGlvbi4KKworCitFeGFtcGxlIFRhYmxlcworLS0tLS0tLS0tLS0tLS0KKyMgUkFJRDQgLSA0IGRhdGEgZHJpdmVzLCAxIHBhcml0eSAobm8gbWV0YWRhdGEgZGV2aWNlcykKKyMgTm8gbWV0YWRhdGEgZGV2aWNlcyBzcGVjaWZpZWQgdG8gaG9sZCBzdXBlcmJsb2NrL2JpdG1hcCBpbmZvCisjIENodW5rIHNpemUgb2YgMU1pQgorIyAoTGluZXMgc2VwYXJhdGVkIGZvciBlYXN5IHJlYWRpbmcpCisKKzAgMTk2MDg5MzY0OCByYWlkIFwKKyAgICAgICAgcmFpZDQgMSAyMDQ4IFwKKyAgICAgICAgNSAtIDg6MTcgLSA4OjMzIC0gODo0OSAtIDg6NjUgLSA4OjgxCisKKyMgUkFJRDQgLSA0IGRhdGEgZHJpdmVzLCAxIHBhcml0eSAod2l0aCBtZXRhZGF0YSBkZXZpY2VzKQorIyBDaHVuayBzaXplIG9mIDFNaUIsIGZvcmNlIFJBSUQgaW5pdGlhbGl6YXRpb24sCisjICAgICAgIG1pbiByZWNvdmVyeSByYXRlIGF0IDIwIGtpQi9zZWMvZGlzaworCiswIDE5NjA4OTM2NDggcmFpZCBcCisgICAgICAgIHJhaWQ0IDQgMjA0OCBzeW5jIG1pbl9yZWNvdmVyeV9yYXRlIDIwIFwKKyAgICAgICAgNSA4OjE3IDg6MTggODozMyA4OjM0IDg6NDkgODo1MCA4OjY1IDg6NjYgODo4MSA4OjgyCisKKworU3RhdHVzIE91dHB1dAorLS0tLS0tLS0tLS0tLQorJ2Rtc2V0dXAgdGFibGUnIGRpc3BsYXlzIHRoZSB0YWJsZSB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgbWFwcGluZy4KK1RoZSBvcHRpb25hbCBwYXJhbWV0ZXJzIGFyZSBhbHdheXMgcHJpbnRlZCBpbiB0aGUgb3JkZXIgbGlzdGVkCithYm92ZSB3aXRoICJzeW5jIiBvciAibm9zeW5jIiBhbHdheXMgb3V0cHV0IGFoZWFkIG9mIHRoZSBvdGhlcgorYXJndW1lbnRzLCByZWdhcmRsZXNzIG9mIHRoZSBvcmRlciB1c2VkIHdoZW4gb3JpZ2luYWxseSBsb2FkaW5nIHRoZSB0YWJsZS4KK0FyZ3VtZW50cyB0aGF0IGNhbiBiZSByZXBlYXRlZCBhcmUgb3JkZXJlZCBieSB2YWx1ZS4KKworCisnZG1zZXR1cCBzdGF0dXMnIHlpZWxkcyBpbmZvcm1hdGlvbiBvbiB0aGUgc3RhdGUgYW5kIGhlYWx0aCBvZiB0aGUgYXJyYXkuCitUaGUgb3V0cHV0IGlzIGFzIGZvbGxvd3MgKG5vcm1hbGx5IGEgc2luZ2xlIGxpbmUsIGJ1dCBleHBhbmRlZCBoZXJlIGZvcgorY2xhcml0eSk6CisxOiA8cz4gPGw+IHJhaWQgXAorMjogICAgICA8cmFpZF90eXBlPiA8I2RldmljZXM+IDxoZWFsdGhfY2hhcnM+IFwKKzM6ICAgICAgPHN5bmNfcmF0aW8+IDxzeW5jX2FjdGlvbj4gPG1pc21hdGNoX2NudD4KKworTGluZSAxIGlzIHRoZSBzdGFuZGFyZCBvdXRwdXQgcHJvZHVjZWQgYnkgZGV2aWNlLW1hcHBlci4KK0xpbmUgMiAmIDMgYXJlIHByb2R1Y2VkIGJ5IHRoZSByYWlkIHRhcmdldCBhbmQgYXJlIGJlc3QgZXhwbGFpbmVkIGJ5IGV4YW1wbGU6CisgICAgICAgIDAgMTk2MDg5MzY0OCByYWlkIHJhaWQ0IDUgQUFBQUEgMi80OTAyMjE1NjggaW5pdCAwCitIZXJlIHdlIGNhbiBzZWUgdGhlIFJBSUQgdHlwZSBpcyByYWlkNCwgdGhlcmUgYXJlIDUgZGV2aWNlcyAtIGFsbCBvZgord2hpY2ggYXJlICdBJ2xpdmUsIGFuZCB0aGUgYXJyYXkgaXMgMi80OTAyMjE1NjggY29tcGxldGUgd2l0aCBpdHMgaW5pdGlhbAorcmVjb3ZlcnkuICBIZXJlIGlzIGEgZnVsbGVyIGRlc2NyaXB0aW9uIG9mIHRoZSBpbmRpdmlkdWFsIGZpZWxkczoKKwk8cmFpZF90eXBlPiAgICAgU2FtZSBhcyB0aGUgPHJhaWRfdHlwZT4gdXNlZCB0byBjcmVhdGUgdGhlIGFycmF5LgorCTxoZWFsdGhfY2hhcnM+ICBPbmUgY2hhciBmb3IgZWFjaCBkZXZpY2UsIGluZGljYXRpbmc6ICdBJyA9IGFsaXZlIGFuZAorCQkJaW4tc3luYywgJ2EnID0gYWxpdmUgYnV0IG5vdCBpbi1zeW5jLCAnRCcgPSBkZWFkL2ZhaWxlZC4KKwk8c3luY19yYXRpbz4gICAgVGhlIHJhdGlvIGluZGljYXRpbmcgaG93IG11Y2ggb2YgdGhlIGFycmF5IGhhcyB1bmRlcmdvbmUKKwkJCXRoZSBwcm9jZXNzIGRlc2NyaWJlZCBieSAnc3luY19hY3Rpb24nLiAgSWYgdGhlCisJCQknc3luY19hY3Rpb24nIGlzICJjaGVjayIgb3IgInJlcGFpciIsIHRoZW4gdGhlIHByb2Nlc3MKKwkJCW9mICJyZXN5bmMiIG9yICJyZWNvdmVyIiBjYW4gYmUgY29uc2lkZXJlZCBjb21wbGV0ZS4KKwk8c3luY19hY3Rpb24+ICAgT25lIG9mIHRoZSBmb2xsb3dpbmcgcG9zc2libGUgc3RhdGVzOgorCQkJaWRsZSAgICAtIE5vIHN5bmNocm9uaXphdGlvbiBhY3Rpb24gaXMgYmVpbmcgcGVyZm9ybWVkLgorCQkJZnJvemVuICAtIFRoZSBjdXJyZW50IGFjdGlvbiBoYXMgYmVlbiBoYWx0ZWQuCisJCQlyZXN5bmMgIC0gQXJyYXkgaXMgdW5kZXJnb2luZyBpdHMgaW5pdGlhbCBzeW5jaHJvbml6YXRpb24KKwkJCQkgIG9yIGlzIHJlc3luY2hyb25pemluZyBhZnRlciBhbiB1bmNsZWFuIHNodXRkb3duCisJCQkJICAocG9zc2libHkgYWlkZWQgYnkgYSBiaXRtYXApLgorCQkJcmVjb3ZlciAtIEEgZGV2aWNlIGluIHRoZSBhcnJheSBpcyBiZWluZyByZWJ1aWx0IG9yCisJCQkJICByZXBsYWNlZC4KKwkJCWNoZWNrICAgLSBBIHVzZXItaW5pdGlhdGVkIGZ1bGwgY2hlY2sgb2YgdGhlIGFycmF5IGlzCisJCQkJICBiZWluZyBwZXJmb3JtZWQuICBBbGwgYmxvY2tzIGFyZSByZWFkIGFuZAorCQkJCSAgY2hlY2tlZCBmb3IgY29uc2lzdGVuY3kuICBUaGUgbnVtYmVyIG9mCisJCQkJICBkaXNjcmVwYW5jaWVzIGZvdW5kIGFyZSByZWNvcmRlZCBpbgorCQkJCSAgPG1pc21hdGNoX2NudD4uICBObyBjaGFuZ2VzIGFyZSBtYWRlIHRvIHRoZQorCQkJCSAgYXJyYXkgYnkgdGhpcyBhY3Rpb24uCisJCQlyZXBhaXIgIC0gVGhlIHNhbWUgYXMgImNoZWNrIiwgYnV0IGRpc2NyZXBhbmNpZXMgYXJlCisJCQkJICBjb3JyZWN0ZWQuCisJCQlyZXNoYXBlIC0gVGhlIGFycmF5IGlzIHVuZGVyZ29pbmcgYSByZXNoYXBlLgorCTxtaXNtYXRjaF9jbnQ+ICBUaGUgbnVtYmVyIG9mIGRpc2NyZXBhbmNpZXMgZm91bmQgYmV0d2VlbiBtaXJyb3IgY29waWVzCisJCQlpbiBSQUlEMS8xMCBvciB3cm9uZyBwYXJpdHkgdmFsdWVzIGZvdW5kIGluIFJBSUQ0LzUvNi4KKwkJCVRoaXMgdmFsdWUgaXMgdmFsaWQgb25seSBhZnRlciBhICJjaGVjayIgb2YgdGhlIGFycmF5CisJCQlpcyBwZXJmb3JtZWQuICBBIGhlYWx0aHkgYXJyYXkgaGFzIGEgJ21pc21hdGNoX2NudCcgb2YgMC4KKworTWVzc2FnZSBJbnRlcmZhY2UKKy0tLS0tLS0tLS0tLS0tLS0tCitUaGUgZG0tcmFpZCB0YXJnZXQgd2lsbCBhY2NlcHQgY2VydGFpbiBhY3Rpb25zIHRocm91Z2ggdGhlICdtZXNzYWdlJyBpbnRlcmZhY2UuCisoJ21hbiBkbXNldHVwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgbWVzc2FnZSBpbnRlcmZhY2UuKSAgVGhlc2UgYWN0aW9ucworaW5jbHVkZToKKwkiaWRsZSIgICAtIEhhbHQgdGhlIGN1cnJlbnQgc3luYyBhY3Rpb24uCisJImZyb3plbiIgLSBGcmVlemUgdGhlIGN1cnJlbnQgc3luYyBhY3Rpb24uCisJInJlc3luYyIgLSBJbml0aWF0ZS9jb250aW51ZSBhIHJlc3luYy4KKwkicmVjb3ZlciItIEluaXRpYXRlL2NvbnRpbnVlIGEgcmVjb3ZlciBwcm9jZXNzLgorCSJjaGVjayIgIC0gSW5pdGlhdGUgYSBjaGVjayAoaS5lLiBhICJzY3J1YiIpIG9mIHRoZSBhcnJheS4KKwkicmVwYWlyIiAtIEluaXRpYXRlIGEgcmVwYWlyIG9mIHRoZSBhcnJheS4KKwkicmVzaGFwZSItIEN1cnJlbnRseSB1bnN1cHBvcnRlZCAoLUVJTlZBTCkuCisKKworRGlzY2FyZCBTdXBwb3J0CistLS0tLS0tLS0tLS0tLS0KK1RoZSBpbXBsZW1lbnRhdGlvbiBvZiBkaXNjYXJkIHN1cHBvcnQgYW1vbmcgaGFyZHdhcmUgdmVuZG9ycyB2YXJpZXMuCitXaGVuIGEgYmxvY2sgaXMgZGlzY2FyZGVkLCBzb21lIHN0b3JhZ2UgZGV2aWNlcyB3aWxsIHJldHVybiB6ZXJvZXMgd2hlbgordGhlIGJsb2NrIGlzIHJlYWQuICBUaGVzZSBkZXZpY2VzIHNldCB0aGUgJ2Rpc2NhcmRfemVyb2VzX2RhdGEnCithdHRyaWJ1dGUuICBPdGhlciBkZXZpY2VzIHdpbGwgcmV0dXJuIHJhbmRvbSBkYXRhLiAgQ29uZnVzaW5nbHksIHNvbWUKK2RldmljZXMgdGhhdCBhZHZlcnRpc2UgJ2Rpc2NhcmRfemVyb2VzX2RhdGEnIHdpbGwgbm90IHJlbGlhYmx5IHJldHVybgoremVyb2VzIHdoZW4gZGlzY2FyZGVkIGJsb2NrcyBhcmUgcmVhZCEgIFNpbmNlIFJBSUQgNC81LzYgdXNlcyBibG9ja3MKK2Zyb20gYSBudW1iZXIgb2YgZGV2aWNlcyB0byBjYWxjdWxhdGUgcGFyaXR5IGJsb2NrcyBhbmQgKGZvciBwZXJmb3JtYW5jZQorcmVhc29ucykgcmVsaWVzIG9uICdkaXNjYXJkX3plcm9lc19kYXRhJyBiZWluZyByZWxpYWJsZSwgaXQgaXMgaW1wb3J0YW50Cit0aGF0IHRoZSBkZXZpY2VzIGJlIGNvbnNpc3RlbnQuICBCbG9ja3MgbWF5IGJlIGRpc2NhcmRlZCBpbiB0aGUgbWlkZGxlCitvZiBhIFJBSUQgNC81LzYgc3RyaXBlIGFuZCBpZiBzdWJzZXF1ZW50IHJlYWQgcmVzdWx0cyBhcmUgbm90Citjb25zaXN0ZW50LCB0aGUgcGFyaXR5IGJsb2NrcyBtYXkgYmUgY2FsY3VsYXRlZCBkaWZmZXJlbnRseSBhdCBhbnkgdGltZTsKK21ha2luZyB0aGUgcGFyaXR5IGJsb2NrcyB1c2VsZXNzIGZvciByZWR1bmRhbmN5LiAgSXQgaXMgaW1wb3J0YW50IHRvCit1bmRlcnN0YW5kIGhvdyB5b3VyIGhhcmR3YXJlIGJlaGF2ZXMgd2l0aCBkaXNjYXJkcyBpZiB5b3UgYXJlIGdvaW5nIHRvCitlbmFibGUgZGlzY2FyZHMgd2l0aCBSQUlEIDQvNS82LgorCitTaW5jZSB0aGUgYmVoYXZpb3Igb2Ygc3RvcmFnZSBkZXZpY2VzIGlzIHVucmVsaWFibGUgaW4gdGhpcyByZXNwZWN0LAorZXZlbiB3aGVuIHJlcG9ydGluZyAnZGlzY2FyZF96ZXJvZXNfZGF0YScsIGJ5IGRlZmF1bHQgUkFJRCA0LzUvNgorZGlzY2FyZCBzdXBwb3J0IGlzIGRpc2FibGVkIC0tIHRoaXMgZW5zdXJlcyBkYXRhIGludGVncml0eSBhdCB0aGUKK2V4cGVuc2Ugb2YgbG9zaW5nIHNvbWUgcGVyZm9ybWFuY2UuCisKK1N0b3JhZ2UgZGV2aWNlcyB0aGF0IHByb3Blcmx5IHN1cHBvcnQgJ2Rpc2NhcmRfemVyb2VzX2RhdGEnIGFyZQoraW5jcmVhc2luZ2x5IHdoaXRlbGlzdGVkIGluIHRoZSBrZXJuZWwgYW5kIGNhbiB0aHVzIGJlIHRydXN0ZWQuCisKK0ZvciB0cnVzdGVkIGRldmljZXMsIHRoZSBmb2xsb3dpbmcgZG0tcmFpZCBtb2R1bGUgcGFyYW1ldGVyIGNhbiBiZSBzZXQKK3RvIHNhZmVseSBlbmFibGUgZGlzY2FyZCBzdXBwb3J0IGZvciBSQUlEIDQvNS82OgorICAgICdkZXZpY2VzX2hhbmRsZV9kaXNjYXJkc19zYWZlbHknCisKKworVmVyc2lvbiBIaXN0b3J5CistLS0tLS0tLS0tLS0tLS0KKzEuMC4wCUluaXRpYWwgdmVyc2lvbi4gIFN1cHBvcnQgZm9yIFJBSUQgNC81LzYKKzEuMS4wCUFkZGVkIHN1cHBvcnQgZm9yIFJBSUQgMQorMS4yLjAJSGFuZGxlIGNyZWF0aW9uIG9mIGFycmF5cyB0aGF0IGNvbnRhaW4gZmFpbGVkIGRldmljZXMuCisxLjMuMAlBZGRlZCBzdXBwb3J0IGZvciBSQUlEIDEwCisxLjMuMQlBbGxvdyBkZXZpY2UgcmVwbGFjZW1lbnQvcmVidWlsZCBmb3IgUkFJRCAxMAorMS4zLjIgICBGaXgvaW1wcm92ZSByZWR1bmRhbmN5IGNoZWNraW5nIGZvciBSQUlEMTAKKzEuNC4wCU5vbi1mdW5jdGlvbmFsIGNoYW5nZS4gIFJlbW92ZXMgYXJnIGZyb20gbWFwcGluZyBmdW5jdGlvbi4KKzEuNC4xICAgUkFJRDEwIGZpeCByZWR1bmRhbmN5IHZhbGlkYXRpb24gY2hlY2tzIChjb21taXQgNTVlYmJiNSkuCisxLjQuMiAgIEFkZCBSQUlEMTAgImZhciIgYW5kICJvZmZzZXQiIGFsZ29yaXRobSBzdXBwb3J0LgorMS41LjAgICBBZGQgbWVzc2FnZSBpbnRlcmZhY2UgdG8gYWxsb3cgbWFuaXB1bGF0aW9uIG9mIHRoZSBzeW5jX2FjdGlvbi4KKwlOZXcgc3RhdHVzIChTVEFUVVNUWVBFX0lORk8pIGZpZWxkczogc3luY19hY3Rpb24gYW5kIG1pc21hdGNoX2NudC4KKzEuNS4xICAgQWRkIGFiaWxpdHkgdG8gcmVzdG9yZSB0cmFuc2llbnRseSBmYWlsZWQgZGV2aWNlcyBvbiByZXN1bWUuCisxLjUuMiAgICdtaXNtYXRjaF9jbnQnIGlzIHplcm8gdW5sZXNzIFtsYXN0X11zeW5jX2FjdGlvbiBpcyAiY2hlY2siLgorMS42LjAgICBBZGQgZGlzY2FyZCBzdXBwb3J0IChhbmQgZGV2aWNlc19oYW5kbGVfZGlzY2FyZF9zYWZlbHkgbW9kdWxlIHBhcmFtKS4KKzEuNy4wICAgQWRkIHN1cHBvcnQgZm9yIE1EIFJBSUQwIG1hcHBpbmdzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL2RtLXNlcnZpY2UtdGltZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvZG0tc2VydmljZS10aW1lLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjFkNGEwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL2RtLXNlcnZpY2UtdGltZS50eHQKQEAgLTAsMCArMSw5MSBAQAorZG0tc2VydmljZS10aW1lCis9PT09PT09PT09PT09PT0KKworZG0tc2VydmljZS10aW1lIGlzIGEgcGF0aCBzZWxlY3RvciBtb2R1bGUgZm9yIGRldmljZS1tYXBwZXIgdGFyZ2V0cywKK3doaWNoIHNlbGVjdHMgYSBwYXRoIHdpdGggdGhlIHNob3J0ZXN0IGVzdGltYXRlZCBzZXJ2aWNlIHRpbWUgZm9yCit0aGUgaW5jb21pbmcgSS9PLgorCitUaGUgc2VydmljZSB0aW1lIGZvciBlYWNoIHBhdGggaXMgZXN0aW1hdGVkIGJ5IGRpdmlkaW5nIHRoZSB0b3RhbCBzaXplCitvZiBpbi1mbGlnaHQgSS9PcyBvbiBhIHBhdGggd2l0aCB0aGUgcGVyZm9ybWFuY2UgdmFsdWUgb2YgdGhlIHBhdGguCitUaGUgcGVyZm9ybWFuY2UgdmFsdWUgaXMgYSByZWxhdGl2ZSB0aHJvdWdocHV0IHZhbHVlIGFtb25nIGFsbCBwYXRocworaW4gYSBwYXRoLWdyb3VwLCBhbmQgaXQgY2FuIGJlIHNwZWNpZmllZCBhcyBhIHRhYmxlIGFyZ3VtZW50LgorCitUaGUgcGF0aCBzZWxlY3RvciBuYW1lIGlzICdzZXJ2aWNlLXRpbWUnLgorCitUYWJsZSBwYXJhbWV0ZXJzIGZvciBlYWNoIHBhdGg6IFs8cmVwZWF0X2NvdW50PiBbPHJlbGF0aXZlX3Rocm91Z2hwdXQ+XV0KKwk8cmVwZWF0X2NvdW50PjogVGhlIG51bWJlciBvZiBJL09zIHRvIGRpc3BhdGNoIHVzaW5nIHRoZSBzZWxlY3RlZAorCQkJcGF0aCBiZWZvcmUgc3dpdGNoaW5nIHRvIHRoZSBuZXh0IHBhdGguCisJCQlJZiBub3QgZ2l2ZW4sIGludGVybmFsIGRlZmF1bHQgaXMgdXNlZC4gIFRvIGNoZWNrCisJCQl0aGUgZGVmYXVsdCB2YWx1ZSwgc2VlIHRoZSBhY3RpdmF0ZWQgdGFibGUuCisJPHJlbGF0aXZlX3Rocm91Z2hwdXQ+OiBUaGUgcmVsYXRpdmUgdGhyb3VnaHB1dCB2YWx1ZSBvZiB0aGUgcGF0aAorCQkJYW1vbmcgYWxsIHBhdGhzIGluIHRoZSBwYXRoLWdyb3VwLgorCQkJVGhlIHZhbGlkIHJhbmdlIGlzIDAtMTAwLgorCQkJSWYgbm90IGdpdmVuLCBtaW5pbXVtIHZhbHVlICcxJyBpcyB1c2VkLgorCQkJSWYgJzAnIGlzIGdpdmVuLCB0aGUgcGF0aCBpc24ndCBzZWxlY3RlZCB3aGlsZQorCQkJb3RoZXIgcGF0aHMgaGF2aW5nIGEgcG9zaXRpdmUgdmFsdWUgYXJlIGF2YWlsYWJsZS4KKworU3RhdHVzIGZvciBlYWNoIHBhdGg6IDxzdGF0dXM+IDxmYWlsLWNvdW50PiA8aW4tZmxpZ2h0LXNpemU+IFwKKwkJICAgICAgPHJlbGF0aXZlX3Rocm91Z2hwdXQ+CisJPHN0YXR1cz46ICdBJyBpZiB0aGUgcGF0aCBpcyBhY3RpdmUsICdGJyBpZiB0aGUgcGF0aCBpcyBmYWlsZWQuCisJPGZhaWwtY291bnQ+OiBUaGUgbnVtYmVyIG9mIHBhdGggZmFpbHVyZXMuCisJPGluLWZsaWdodC1zaXplPjogVGhlIHNpemUgb2YgaW4tZmxpZ2h0IEkvT3Mgb24gdGhlIHBhdGguCisJPHJlbGF0aXZlX3Rocm91Z2hwdXQ+OiBUaGUgcmVsYXRpdmUgdGhyb3VnaHB1dCB2YWx1ZSBvZiB0aGUgcGF0aAorCQkJYW1vbmcgYWxsIHBhdGhzIGluIHRoZSBwYXRoLWdyb3VwLgorCisKK0FsZ29yaXRobQorPT09PT09PT09CisKK2RtLXNlcnZpY2UtdGltZSBhZGRzIHRoZSBJL08gc2l6ZSB0byAnaW4tZmxpZ2h0LXNpemUnIHdoZW4gdGhlIEkvTyBpcworZGlzcGF0Y2hlZCBhbmQgc3VidHJhY3RzIHdoZW4gY29tcGxldGVkLgorQmFzaWNhbGx5LCBkbS1zZXJ2aWNlLXRpbWUgc2VsZWN0cyBhIHBhdGggaGF2aW5nIG1pbmltdW0gc2VydmljZSB0aW1lCit3aGljaCBpcyBjYWxjdWxhdGVkIGJ5OgorCisJKCdpbi1mbGlnaHQtc2l6ZScgKyAnc2l6ZS1vZi1pbmNvbWluZy1pbycpIC8gJ3JlbGF0aXZlX3Rocm91Z2hwdXQnCisKK0hvd2V2ZXIsIHNvbWUgb3B0aW1pemF0aW9ucyBiZWxvdyBhcmUgdXNlZCB0byByZWR1Y2UgdGhlIGNhbGN1bGF0aW9uCithcyBtdWNoIGFzIHBvc3NpYmxlLgorCisJMS4gSWYgdGhlIHBhdGhzIGhhdmUgdGhlIHNhbWUgJ3JlbGF0aXZlX3Rocm91Z2hwdXQnLCBza2lwCisJICAgdGhlIGRpdmlzaW9uIGFuZCBqdXN0IGNvbXBhcmUgdGhlICdpbi1mbGlnaHQtc2l6ZScuCisKKwkyLiBJZiB0aGUgcGF0aHMgaGF2ZSB0aGUgc2FtZSAnaW4tZmxpZ2h0LXNpemUnLCBza2lwIHRoZSBkaXZpc2lvbgorCSAgIGFuZCBqdXN0IGNvbXBhcmUgdGhlICdyZWxhdGl2ZV90aHJvdWdocHV0Jy4KKworCTMuIElmIHNvbWUgcGF0aHMgaGF2ZSBub24temVybyAncmVsYXRpdmVfdGhyb3VnaHB1dCcgYW5kIG90aGVycworCSAgIGhhdmUgemVybyAncmVsYXRpdmVfdGhyb3VnaHB1dCcsIGlnbm9yZSB0aG9zZSBwYXRocyB3aXRoIHplcm8KKwkgICAncmVsYXRpdmVfdGhyb3VnaHB1dCcuCisKK0lmIHN1Y2ggb3B0aW1pemF0aW9ucyBjYW4ndCBiZSBhcHBsaWVkLCBjYWxjdWxhdGUgc2VydmljZSB0aW1lLCBhbmQKK2NvbXBhcmUgc2VydmljZSB0aW1lLgorSWYgY2FsY3VsYXRlZCBzZXJ2aWNlIHRpbWUgaXMgZXF1YWwsIHRoZSBwYXRoIGhhdmluZyBtYXhpbXVtCisncmVsYXRpdmVfdGhyb3VnaHB1dCcgbWF5IGJlIGJldHRlci4gIFNvIGNvbXBhcmUgJ3JlbGF0aXZlX3Rocm91Z2hwdXQnCit0aGVuLgorCisKK0V4YW1wbGVzCis9PT09PT09PQorSW4gY2FzZSB0aGF0IDIgcGF0aHMgKHNkYSBhbmQgc2RiKSBhcmUgdXNlZCB3aXRoIHJlcGVhdF9jb3VudCA9PSAxMjgKK2FuZCBzZGEgaGFzIGFuIGF2ZXJhZ2UgdGhyb3VnaHB1dCAxR0IvcyBhbmQgc2RiIGhhcyA0R0IvcywKKydyZWxhdGl2ZV90aHJvdWdocHV0JyB2YWx1ZSBtYXkgYmUgJzEnIGZvciBzZGEgYW5kICc0JyBmb3Igc2RiLgorCisjIGVjaG8gIjAgMTAgbXVsdGlwYXRoIDAgMCAxIDEgc2VydmljZS10aW1lIDAgMiAyIDg6MCAxMjggMSA4OjE2IDEyOCA0IiBcCisgIGRtc2V0dXAgY3JlYXRlIHRlc3QKKyMKKyMgZG1zZXR1cCB0YWJsZQordGVzdDogMCAxMCBtdWx0aXBhdGggMCAwIDEgMSBzZXJ2aWNlLXRpbWUgMCAyIDIgODowIDEyOCAxIDg6MTYgMTI4IDQKKyMKKyMgZG1zZXR1cCBzdGF0dXMKK3Rlc3Q6IDAgMTAgbXVsdGlwYXRoIDIgMCAwIDAgMSAxIEUgMCAyIDIgODowIEEgMCAwIDEgODoxNiBBIDAgMCA0CisKKworT3IgJzInIGZvciBzZGEgYW5kICc4JyBmb3Igc2RiIHdvdWxkIGJlIGFsc28gdHJ1ZS4KKworIyBlY2hvICIwIDEwIG11bHRpcGF0aCAwIDAgMSAxIHNlcnZpY2UtdGltZSAwIDIgMiA4OjAgMTI4IDIgODoxNiAxMjggOCIgXAorICBkbXNldHVwIGNyZWF0ZSB0ZXN0CisjCisjIGRtc2V0dXAgdGFibGUKK3Rlc3Q6IDAgMTAgbXVsdGlwYXRoIDAgMCAxIDEgc2VydmljZS10aW1lIDAgMiAyIDg6MCAxMjggMiA4OjE2IDEyOCA4CisjCisjIGRtc2V0dXAgc3RhdHVzCit0ZXN0OiAwIDEwIG11bHRpcGF0aCAyIDAgMCAwIDEgMSBFIDAgMiAyIDg6MCBBIDAgMCAyIDg6MTYgQSAwIDAgOApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL2RtLXVldmVudC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvZG0tdWV2ZW50LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2VkYmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL2RtLXVldmVudC50eHQKQEAgLTAsMCArMSw5NyBAQAorVGhlIGRldmljZS1tYXBwZXIgdWV2ZW50IGNvZGUgYWRkcyB0aGUgY2FwYWJpbGl0eSB0byBkZXZpY2UtbWFwcGVyIHRvIGNyZWF0ZQorYW5kIHNlbmQga29iamVjdCB1ZXZlbnRzICh1ZXZlbnRzKS4gIFByZXZpb3VzbHkgZGV2aWNlLW1hcHBlciBldmVudHMgd2VyZSBvbmx5CithdmFpbGFibGUgdGhyb3VnaCB0aGUgaW9jdGwgaW50ZXJmYWNlLiAgVGhlIGFkdmFudGFnZSBvZiB0aGUgdWV2ZW50cyBpbnRlcmZhY2UKK2lzIHRoZSBldmVudCBjb250YWlucyBlbnZpcm9ubWVudCBhdHRyaWJ1dGVzIHByb3ZpZGluZyBpbmNyZWFzZWQgY29udGV4dCBmb3IKK3RoZSBldmVudCBhdm9pZGluZyB0aGUgbmVlZCB0byBxdWVyeSB0aGUgc3RhdGUgb2YgdGhlIGRldmljZS1tYXBwZXIgZGV2aWNlIGFmdGVyCit0aGUgZXZlbnQgaXMgcmVjZWl2ZWQuCisKK1RoZXJlIGFyZSB0d28gZnVuY3Rpb25zIGN1cnJlbnRseSBmb3IgZGV2aWNlLW1hcHBlciBldmVudHMuICBUaGUgZmlyc3QgZnVuY3Rpb24KK2xpc3RlZCBjcmVhdGVzIHRoZSBldmVudCBhbmQgdGhlIHNlY29uZCBmdW5jdGlvbiBzZW5kcyB0aGUgZXZlbnQocykuCisKK3ZvaWQgZG1fcGF0aF91ZXZlbnQoZW51bSBkbV91ZXZlbnRfdHlwZSBldmVudF90eXBlLCBzdHJ1Y3QgZG1fdGFyZ2V0ICp0aSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aCwgdW5zaWduZWQgbnJfdmFsaWRfcGF0aHMpCisKK3ZvaWQgZG1fc2VuZF91ZXZlbnRzKHN0cnVjdCBsaXN0X2hlYWQgKmV2ZW50cywgc3RydWN0IGtvYmplY3QgKmtvYmopCisKKworVGhlIHZhcmlhYmxlcyBhZGRlZCB0byB0aGUgdWV2ZW50IGVudmlyb25tZW50IGFyZToKKworVmFyaWFibGUgTmFtZTogRE1fVEFSR0VUCitVZXZlbnQgQWN0aW9uKHMpOiBLT0JKX0NIQU5HRQorVHlwZTogc3RyaW5nCitEZXNjcmlwdGlvbjoKK1ZhbHVlOiBOYW1lIG9mIGRldmljZS1tYXBwZXIgdGFyZ2V0IHRoYXQgZ2VuZXJhdGVkIHRoZSBldmVudC4KKworVmFyaWFibGUgTmFtZTogRE1fQUNUSU9OCitVZXZlbnQgQWN0aW9uKHMpOiBLT0JKX0NIQU5HRQorVHlwZTogc3RyaW5nCitEZXNjcmlwdGlvbjoKK1ZhbHVlOiBEZXZpY2UtbWFwcGVyIHNwZWNpZmljIGFjdGlvbiB0aGF0IGNhdXNlZCB0aGUgdWV2ZW50IGFjdGlvbi4KKwlQQVRIX0ZBSUxFRCAtIEEgcGF0aCBoYXMgZmFpbGVkLgorCVBBVEhfUkVJTlNUQVRFRCAtIEEgcGF0aCBoYXMgYmVlbiByZWluc3RhdGVkLgorCitWYXJpYWJsZSBOYW1lOiBETV9TRVFOVU0KK1VldmVudCBBY3Rpb24ocyk6IEtPQkpfQ0hBTkdFCitUeXBlOiB1bnNpZ25lZCBpbnRlZ2VyCitEZXNjcmlwdGlvbjogQSBzZXF1ZW5jZSBudW1iZXIgZm9yIHRoaXMgc3BlY2lmaWMgZGV2aWNlLW1hcHBlciBkZXZpY2UuCitWYWx1ZTogVmFsaWQgdW5zaWduZWQgaW50ZWdlciByYW5nZS4KKworVmFyaWFibGUgTmFtZTogRE1fUEFUSAorVWV2ZW50IEFjdGlvbihzKTogS09CSl9DSEFOR0UKK1R5cGU6IHN0cmluZworRGVzY3JpcHRpb246IE1ham9yIGFuZCBtaW5vciBudW1iZXIgb2YgdGhlIHBhdGggZGV2aWNlIHBlcnRhaW5pbmcgdG8gdGhpcworZXZlbnQuCitWYWx1ZTogUGF0aCBuYW1lIGluIHRoZSBmb3JtIG9mICJNYWpvcjpNaW5vciIKKworVmFyaWFibGUgTmFtZTogRE1fTlJfVkFMSURfUEFUSFMKK1VldmVudCBBY3Rpb24ocyk6IEtPQkpfQ0hBTkdFCitUeXBlOiB1bnNpZ25lZCBpbnRlZ2VyCitEZXNjcmlwdGlvbjoKK1ZhbHVlOiBWYWxpZCB1bnNpZ25lZCBpbnRlZ2VyIHJhbmdlLgorCitWYXJpYWJsZSBOYW1lOiBETV9OQU1FCitVZXZlbnQgQWN0aW9uKHMpOiBLT0JKX0NIQU5HRQorVHlwZTogc3RyaW5nCitEZXNjcmlwdGlvbjogTmFtZSBvZiB0aGUgZGV2aWNlLW1hcHBlciBkZXZpY2UuCitWYWx1ZTogTmFtZQorCitWYXJpYWJsZSBOYW1lOiBETV9VVUlECitVZXZlbnQgQWN0aW9uKHMpOiBLT0JKX0NIQU5HRQorVHlwZTogc3RyaW5nCitEZXNjcmlwdGlvbjogVVVJRCBvZiB0aGUgZGV2aWNlLW1hcHBlciBkZXZpY2UuCitWYWx1ZTogVVVJRC4gKEVtcHR5IHN0cmluZyBpZiB0aGVyZSBpc24ndCBvbmUuKQorCitBbiBleGFtcGxlIG9mIHRoZSB1ZXZlbnRzIGdlbmVyYXRlZCBhcyBjYXB0dXJlZCBieSB1ZGV2bW9uaXRvciBpcyBzaG93bgorYmVsb3cuCisKKzEuKSBQYXRoIGZhaWx1cmUuCitVRVZFTlRbMTE5MjUyMTAwOS43MTEyMTVdIGNoYW5nZUAvYmxvY2svZG0tMworQUNUSU9OPWNoYW5nZQorREVWUEFUSD0vYmxvY2svZG0tMworU1VCU1lTVEVNPWJsb2NrCitETV9UQVJHRVQ9bXVsdGlwYXRoCitETV9BQ1RJT049UEFUSF9GQUlMRUQKK0RNX1NFUU5VTT0xCitETV9QQVRIPTg6MzIKK0RNX05SX1ZBTElEX1BBVEhTPTAKK0RNX05BTUU9bXBhdGgyCitETV9VVUlEPW1wYXRoLTM1MzMzMzMzMDAwMDAyMzI4CitNSU5PUj0zCitNQUpPUj0yNTMKK1NFUU5VTT0xMTMwCisKKzIuKSBQYXRoIHJlaW5zdGF0ZS4KK1VFVkVOVFsxMTkyNTIxMTMyLjk4OTkyN10gY2hhbmdlQC9ibG9jay9kbS0zCitBQ1RJT049Y2hhbmdlCitERVZQQVRIPS9ibG9jay9kbS0zCitTVUJTWVNURU09YmxvY2sKK0RNX1RBUkdFVD1tdWx0aXBhdGgKK0RNX0FDVElPTj1QQVRIX1JFSU5TVEFURUQKK0RNX1NFUU5VTT0yCitETV9QQVRIPTg6MzIKK0RNX05SX1ZBTElEX1BBVEhTPTEKK0RNX05BTUU9bXBhdGgyCitETV9VVUlEPW1wYXRoLTM1MzMzMzMzMDAwMDAyMzI4CitNSU5PUj0zCitNQUpPUj0yNTMKK1NFUU5VTT0xMTMxCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvZXJhLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9lcmEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNmQwMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvZXJhLnR4dApAQCAtMCwwICsxLDEwOCBAQAorSW50cm9kdWN0aW9uCis9PT09PT09PT09PT0KKworZG0tZXJhIGlzIGEgdGFyZ2V0IHRoYXQgYmVoYXZlcyBzaW1pbGFyIHRvIHRoZSBsaW5lYXIgdGFyZ2V0LiAgSW4KK2FkZGl0aW9uIGl0IGtlZXBzIHRyYWNrIG9mIHdoaWNoIGJsb2NrcyB3ZXJlIHdyaXR0ZW4gd2l0aGluIGEgdXNlcgorZGVmaW5lZCBwZXJpb2Qgb2YgdGltZSBjYWxsZWQgYW4gJ2VyYScuICBFYWNoIGVyYSB0YXJnZXQgaW5zdGFuY2UKK21haW50YWlucyB0aGUgY3VycmVudCBlcmEgYXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgMzItYml0Citjb3VudGVyLgorCitVc2UgY2FzZXMgaW5jbHVkZSB0cmFja2luZyBjaGFuZ2VkIGJsb2NrcyBmb3IgYmFja3VwIHNvZnR3YXJlLCBhbmQKK3BhcnRpYWxseSBpbnZhbGlkYXRpbmcgdGhlIGNvbnRlbnRzIG9mIGEgY2FjaGUgdG8gcmVzdG9yZSBjYWNoZQorY29oZXJlbmN5IGFmdGVyIHJvbGxpbmcgYmFjayBhIHZlbmRvciBzbmFwc2hvdC4KKworQ29uc3RydWN0b3IKKz09PT09PT09PT09CisKKyBlcmEgPG1ldGFkYXRhIGRldj4gPG9yaWdpbiBkZXY+IDxibG9jayBzaXplPgorCisgbWV0YWRhdGEgZGV2ICAgIDogZmFzdCBkZXZpY2UgaG9sZGluZyB0aGUgcGVyc2lzdGVudCBtZXRhZGF0YQorIG9yaWdpbiBkZXYJIDogZGV2aWNlIGhvbGRpbmcgZGF0YSBibG9ja3MgdGhhdCBtYXkgY2hhbmdlCisgYmxvY2sgc2l6ZSAgICAgIDogYmxvY2sgc2l6ZSBvZiBvcmlnaW4gZGF0YSBkZXZpY2UsIGdyYW51bGFyaXR5IHRoYXQgaXMKKwkJICAgICB0cmFja2VkIGJ5IHRoZSB0YXJnZXQKKworTWVzc2FnZXMKKz09PT09PT09CisKK05vbmUgb2YgdGhlIGRtIG1lc3NhZ2VzIHRha2UgYW55IGFyZ3VtZW50cy4KKworY2hlY2twb2ludAorLS0tLS0tLS0tLQorCitQb3NzaWJseSBtb3ZlIHRvIGEgbmV3IGVyYS4gIFlvdSBzaG91bGRuJ3QgYXNzdW1lIHRoZSBlcmEgaGFzCitpbmNyZW1lbnRlZC4gIEFmdGVyIHNlbmRpbmcgdGhpcyBtZXNzYWdlLCB5b3Ugc2hvdWxkIGNoZWNrIHRoZQorY3VycmVudCBlcmEgdmlhIHRoZSBzdGF0dXMgbGluZS4KKwordGFrZV9tZXRhZGF0YV9zbmFwCistLS0tLS0tLS0tLS0tLS0tLS0KKworQ3JlYXRlIGEgY2xvbmUgb2YgdGhlIG1ldGFkYXRhLCB0byBhbGxvdyBhIHVzZXJsYW5kIHByb2Nlc3MgdG8gcmVhZCBpdC4KKworZHJvcF9tZXRhZGF0YV9zbmFwCistLS0tLS0tLS0tLS0tLS0tLS0KKworRHJvcCB0aGUgbWV0YWRhdGEgc25hcHNob3QuCisKK1N0YXR1cworPT09PT09CisKKzxtZXRhZGF0YSBibG9jayBzaXplPiA8I3VzZWQgbWV0YWRhdGEgYmxvY2tzPi88I3RvdGFsIG1ldGFkYXRhIGJsb2Nrcz4KKzxjdXJyZW50IGVyYT4gPGhlbGQgbWV0YWRhdGEgcm9vdCB8ICctJz4KKworbWV0YWRhdGEgYmxvY2sgc2l6ZQkgOiBGaXhlZCBibG9jayBzaXplIGZvciBlYWNoIG1ldGFkYXRhIGJsb2NrIGluCisJCQkgICAgIHNlY3RvcnMKKyN1c2VkIG1ldGFkYXRhIGJsb2NrcwkgOiBOdW1iZXIgb2YgbWV0YWRhdGEgYmxvY2tzIHVzZWQKKyN0b3RhbCBtZXRhZGF0YSBibG9ja3MJIDogVG90YWwgbnVtYmVyIG9mIG1ldGFkYXRhIGJsb2NrcworY3VycmVudCBlcmEJCSA6IFRoZSBjdXJyZW50IGVyYQoraGVsZCBtZXRhZGF0YSByb290CSA6IFRoZSBsb2NhdGlvbiwgaW4gYmxvY2tzLCBvZiB0aGUgbWV0YWRhdGEgcm9vdAorCQkJICAgICB0aGF0IGhhcyBiZWVuICdoZWxkJyBmb3IgdXNlcnNwYWNlIHJlYWQKKwkJCSAgICAgYWNjZXNzLiAnLScgaW5kaWNhdGVzIHRoZXJlIGlzIG5vIGhlbGQgcm9vdAorCitEZXRhaWxlZCB1c2UgY2FzZQorPT09PT09PT09PT09PT09PT0KKworVGhlIHNjZW5hcmlvIG9mIGludmFsaWRhdGluZyBhIGNhY2hlIHdoZW4gcm9sbGluZyBiYWNrIGEgdmVuZG9yCitzbmFwc2hvdCB3YXMgdGhlIHByaW1hcnkgdXNlIGNhc2Ugd2hlbiBkZXZlbG9waW5nIHRoaXMgdGFyZ2V0OgorCitUYWtpbmcgYSB2ZW5kb3Igc25hcHNob3QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIFNlbmQgYSBjaGVja3BvaW50IG1lc3NhZ2UgdG8gdGhlIGVyYSB0YXJnZXQKKy0gTWFrZSBhIG5vdGUgb2YgdGhlIGN1cnJlbnQgZXJhIGluIGl0cyBzdGF0dXMgbGluZQorLSBUYWtlIHZlbmRvciBzbmFwc2hvdCAodGhlIGVyYSBhbmQgc25hcHNob3Qgc2hvdWxkIGJlIGZvcmV2ZXIKKyAgYXNzb2NpYXRlZCBub3cpLgorCitSb2xsaW5nIGJhY2sgdG8gYW4gdmVuZG9yIHNuYXBzaG90CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gQ2FjaGUgZW50ZXJzIHBhc3N0aHJvdWdoIG1vZGUgKHNlZTogZG0tY2FjaGUncyBkb2NzIGluIGNhY2hlLnR4dCkKKy0gUm9sbGJhY2sgdmVuZG9yIHN0b3JhZ2UKKy0gVGFrZSBtZXRhZGF0YSBzbmFwc2hvdAorLSBBc2NlcnRhaW4gd2hpY2ggYmxvY2tzIGhhdmUgYmVlbiB3cml0dGVuIHNpbmNlIHRoZSBzbmFwc2hvdCB3YXMgdGFrZW4KKyAgYnkgY2hlY2tpbmcgZWFjaCBibG9jaydzIGVyYQorLSBJbnZhbGlkYXRlIHRob3NlIGJsb2NrcyBpbiB0aGUgY2FjaGluZyBzb2Z0d2FyZQorLSBDYWNoZSByZXR1cm5zIHRvIHdyaXRlYmFjay93cml0ZXRocm91Z2ggbW9kZQorCitNZW1vcnkgdXNhZ2UKKz09PT09PT09PT09PQorCitUaGUgdGFyZ2V0IHVzZXMgYSBiaXRzZXQgdG8gcmVjb3JkIHdyaXRlcyBpbiB0aGUgY3VycmVudCBlcmEuICBJdCBhbHNvCitoYXMgYSBzcGFyZSBiaXRzZXQgcmVhZHkgZm9yIHN3aXRjaGluZyBvdmVyIHRvIGEgbmV3IGVyYS4gIE90aGVyIHRoYW4KK3RoYXQgaXQgdXNlcyBhIGZldyA0ayBibG9ja3MgZm9yIHVwZGF0aW5nIG1ldGFkYXRhLgorCisgICAoNCAqIG5yX2Jsb2NrcykgYnl0ZXMgKyBidWZmZXJzCisKK1Jlc2lsaWVuY2UKKz09PT09PT09PT0KKworTWV0YWRhdGEgaXMgdXBkYXRlZCBvbiBkaXNrIGJlZm9yZSBhIHdyaXRlIHRvIGEgcHJldmlvdXNseSB1bndyaXR0ZW4KK2Jsb2NrIGlzIHBlcmZvcm1lZC4gIEFzIHN1Y2ggZG0tZXJhIHNob3VsZCBub3QgYmUgZWZmZWN0ZWQgYnkgYSBoYXJkCitjcmFzaCBzdWNoIGFzIHBvd2VyIGZhaWx1cmUuCisKK1VzZXJsYW5kIHRvb2xzCis9PT09PT09PT09PT09PQorCitVc2VybGFuZCB0b29scyBhcmUgZm91bmQgaW4gdGhlIGluY3JlYXNpbmdseSBwb29ybHkgbmFtZWQKK3RoaW4tcHJvdmlzaW9uaW5nLXRvb2xzIHByb2plY3Q6CisKKyAgICBodHRwczovL2dpdGh1Yi5jb20vanRob3JuYmVyL3RoaW4tcHJvdmlzaW9uaW5nLXRvb2xzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIva2NvcHlkLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9rY29weWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyMDM4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIva2NvcHlkLnR4dApAQCAtMCwwICsxLDQ3IEBACitrY29weWQKKz09PT09PQorCitLY29weWQgcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gY29weSBhIHJhbmdlIG9mIHNlY3RvcnMgZnJvbSBvbmUgYmxvY2stZGV2aWNlCit0byBvbmUgb3IgbW9yZSBvdGhlciBibG9jay1kZXZpY2VzLCB3aXRoIGFuIGFzeW5jaHJvbm91cyBjb21wbGV0aW9uCitub3RpZmljYXRpb24uIEl0IGlzIHVzZWQgYnkgZG0tc25hcHNob3QgYW5kIGRtLW1pcnJvci4KKworVXNlcnMgb2Yga2NvcHlkIG11c3QgZmlyc3QgY3JlYXRlIGEgY2xpZW50IGFuZCBpbmRpY2F0ZSBob3cgbWFueSBtZW1vcnkgcGFnZXMKK3RvIHNldCBhc2lkZSBmb3IgdGhlaXIgY29weSBqb2JzLiBUaGlzIGlzIGRvbmUgd2l0aCBhIGNhbGwgdG8KK2tjb3B5ZF9jbGllbnRfY3JlYXRlKCkuCisKKyAgIGludCBrY29weWRfY2xpZW50X2NyZWF0ZSh1bnNpZ25lZCBpbnQgbnVtX3BhZ2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrY29weWRfY2xpZW50ICoqcmVzdWx0KTsKKworVG8gc3RhcnQgYSBjb3B5IGpvYiwgdGhlIHVzZXIgbXVzdCBzZXQgdXAgaW9fcmVnaW9uIHN0cnVjdHVyZXMgdG8gZGVzY3JpYmUKK3RoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9ucyBvZiB0aGUgY29weS4gRWFjaCBpb19yZWdpb24gaW5kaWNhdGVzIGEKK2Jsb2NrLWRldmljZSBhbG9uZyB3aXRoIHRoZSBzdGFydGluZyBzZWN0b3IgYW5kIHNpemUgb2YgdGhlIHJlZ2lvbi4gVGhlIHNvdXJjZQorb2YgdGhlIGNvcHkgaXMgZ2l2ZW4gYXMgb25lIGlvX3JlZ2lvbiBzdHJ1Y3R1cmUsIGFuZCB0aGUgZGVzdGluYXRpb25zIG9mIHRoZQorY29weSBhcmUgZ2l2ZW4gYXMgYW4gYXJyYXkgb2YgaW9fcmVnaW9uIHN0cnVjdHVyZXMuCisKKyAgIHN0cnVjdCBpb19yZWdpb24geworICAgICAgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldjsKKyAgICAgIHNlY3Rvcl90IHNlY3RvcjsKKyAgICAgIHNlY3Rvcl90IGNvdW50OworICAgfTsKKworVG8gc3RhcnQgdGhlIGNvcHksIHRoZSB1c2VyIGNhbGxzIGtjb3B5ZF9jb3B5KCksIHBhc3NpbmcgaW4gdGhlIGNsaWVudAorcG9pbnRlciwgcG9pbnRlcnMgdG8gdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gaW9fcmVnaW9ucywgdGhlIG5hbWUgb2YgYQorY29tcGxldGlvbiBjYWxsYmFjayByb3V0aW5lLCBhbmQgYSBwb2ludGVyIHRvIHNvbWUgY29udGV4dCBkYXRhIGZvciB0aGUgY29weS4KKworICAgaW50IGtjb3B5ZF9jb3B5KHN0cnVjdCBrY29weWRfY2xpZW50ICprYywgc3RydWN0IGlvX3JlZ2lvbiAqZnJvbSwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnVtX2Rlc3RzLCBzdHJ1Y3QgaW9fcmVnaW9uICpkZXN0cywKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsIGtjb3B5ZF9ub3RpZnlfZm4gZm4sIHZvaWQgKmNvbnRleHQpOworCisgICB0eXBlZGVmIHZvaWQgKCprY29weWRfbm90aWZ5X2ZuKShpbnQgcmVhZF9lcnIsIHVuc2lnbmVkIGludCB3cml0ZV9lcnIsCisJCQkJICAgIHZvaWQgKmNvbnRleHQpOworCitXaGVuIHRoZSBjb3B5IGNvbXBsZXRlcywga2NvcHlkIHdpbGwgY2FsbCB0aGUgdXNlcidzIGNvbXBsZXRpb24gcm91dGluZSwKK3Bhc3NpbmcgYmFjayB0aGUgdXNlcidzIGNvbnRleHQgcG9pbnRlci4gSXQgd2lsbCBhbHNvIGluZGljYXRlIGlmIGEgcmVhZCBvcgord3JpdGUgZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRoZSBjb3B5LgorCitXaGVuIGEgdXNlciBpcyBkb25lIHdpdGggYWxsIHRoZWlyIGNvcHkgam9icywgdGhleSBzaG91bGQgY2FsbAora2NvcHlkX2NsaWVudF9kZXN0cm95KCkgdG8gZGVsZXRlIHRoZSBrY29weWQgY2xpZW50LCB3aGljaCB3aWxsIHJlbGVhc2UgdGhlCithc3NvY2lhdGVkIG1lbW9yeSBwYWdlcy4KKworICAgdm9pZCBrY29weWRfY2xpZW50X2Rlc3Ryb3koc3RydWN0IGtjb3B5ZF9jbGllbnQgKmtjKTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL2xpbmVhci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvbGluZWFyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTMwN2QzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL2xpbmVhci50eHQKQEAgLTAsMCArMSw2MSBAQAorZG0tbGluZWFyCis9PT09PT09PT0KKworRGV2aWNlLU1hcHBlcidzICJsaW5lYXIiIHRhcmdldCBtYXBzIGEgbGluZWFyIHJhbmdlIG9mIHRoZSBEZXZpY2UtTWFwcGVyCitkZXZpY2Ugb250byBhIGxpbmVhciByYW5nZSBvZiBhbm90aGVyIGRldmljZS4gIFRoaXMgaXMgdGhlIGJhc2ljIGJ1aWxkaW5nCitibG9jayBvZiBsb2dpY2FsIHZvbHVtZSBtYW5hZ2Vycy4KKworUGFyYW1ldGVyczogPGRldiBwYXRoPiA8b2Zmc2V0PgorICAgIDxkZXYgcGF0aD46IEZ1bGwgcGF0aG5hbWUgdG8gdGhlIHVuZGVybHlpbmcgYmxvY2stZGV2aWNlLCBvciBhCisgICAgICAgICAgICAgICAgIm1ham9yOm1pbm9yIiBkZXZpY2UtbnVtYmVyLgorICAgIDxvZmZzZXQ+OiBTdGFydGluZyBzZWN0b3Igd2l0aGluIHRoZSBkZXZpY2UuCisKKworRXhhbXBsZSBzY3JpcHRzCis9PT09PT09PT09PT09PT0KK1tbCisjIS9iaW4vc2gKKyMgQ3JlYXRlIGFuIGlkZW50aXR5IG1hcHBpbmcgZm9yIGEgZGV2aWNlCitlY2hvICIwIGBibG9ja2RldiAtLWdldHNpemUgJDFgIGxpbmVhciAkMSAwIiB8IGRtc2V0dXAgY3JlYXRlIGlkZW50aXR5CitdXQorCisKK1tbCisjIS9iaW4vc2gKKyMgSm9pbiAyIGRldmljZXMgdG9nZXRoZXIKK3NpemUxPWBibG9ja2RldiAtLWdldHNpemUgJDFgCitzaXplMj1gYmxvY2tkZXYgLS1nZXRzaXplICQyYAorZWNobyAiMCAkc2l6ZTEgbGluZWFyICQxIDAKKyRzaXplMSAkc2l6ZTIgbGluZWFyICQyIDAiIHwgZG1zZXR1cCBjcmVhdGUgam9pbmVkCitdXQorCisKK1tbCisjIS91c3IvYmluL3BlcmwgLXcKKyMgU3BsaXQgYSBkZXZpY2UgaW50byA0TSBjaHVua3MgYW5kIHRoZW4gam9pbiB0aGVtIHRvZ2V0aGVyIGluIHJldmVyc2Ugb3JkZXIuCisKK215ICRuYW1lID0gInJldmVyc2UiOworbXkgJGV4dGVudF9zaXplID0gNCAqIDEwMjQgKiAyOworbXkgJGRldiA9ICRBUkdWWzBdOworbXkgJHRhYmxlID0gIiI7CitteSAkY291bnQgPSAwOworCitpZiAoIWRlZmluZWQoJGRldikpIHsKKyAgICAgICAgZGllKCJQbGVhc2Ugc3BlY2lmeSBhIGRldmljZS5cbiIpOworfQorCitteSAkZGV2X3NpemUgPSBgYmxvY2tkZXYgLS1nZXRzaXplICRkZXZgOworbXkgJGV4dGVudHMgPSBpbnQoJGRldl9zaXplIC8gJGV4dGVudF9zaXplKSAtCisgICAgICAgICAgICAgICgoJGRldl9zaXplICUgJGV4dGVudF9zaXplKSA/IDEgOiAwKTsKKword2hpbGUgKCRleHRlbnRzID4gMCkgeworICAgICAgICBteSAkdGhpc19zdGFydCA9ICRjb3VudCAqICRleHRlbnRfc2l6ZTsKKyAgICAgICAgJGV4dGVudHMtLTsKKyAgICAgICAgJGNvdW50Kys7CisgICAgICAgIG15ICR0aGlzX29mZnNldCA9ICRleHRlbnRzICogJGV4dGVudF9zaXplOworCisgICAgICAgICR0YWJsZSAuPSAiJHRoaXNfc3RhcnQgJGV4dGVudF9zaXplIGxpbmVhciAkZGV2ICR0aGlzX29mZnNldFxuIjsKK30KKworYGVjaG8gXCIkdGFibGVcIiB8IGRtc2V0dXAgY3JlYXRlICRuYW1lYDsKK11dCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvbG9nLXdyaXRlcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvbG9nLXdyaXRlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzEwZjMwYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9sb2ctd3JpdGVzLnR4dApAQCAtMCwwICsxLDE0MCBAQAorZG0tbG9nLXdyaXRlcworPT09PT09PT09PT09PQorCitUaGlzIHRhcmdldCB0YWtlcyAyIGRldmljZXMsIG9uZSB0byBwYXNzIGFsbCBJTyB0byBub3JtYWxseSwgYW5kIG9uZSB0byBsb2cgYWxsCitvZiB0aGUgd3JpdGUgb3BlcmF0aW9ucyB0by4gIFRoaXMgaXMgaW50ZW5kZWQgZm9yIGZpbGUgc3lzdGVtIGRldmVsb3BlcnMgd2lzaGluZwordG8gdmVyaWZ5IHRoZSBpbnRlZ3JpdHkgb2YgbWV0YWRhdGEgb3IgZGF0YSBhcyB0aGUgZmlsZSBzeXN0ZW0gaXMgd3JpdHRlbiB0by4KK1RoZXJlIGlzIGEgbG9nX3dyaXRlX2VudHJ5IHdyaXR0ZW4gZm9yIGV2ZXJ5IFdSSVRFIHJlcXVlc3QgYW5kIHRoZSB0YXJnZXQgaXMKK2FibGUgdG8gdGFrZSBhcmJpdHJhcnkgZGF0YSBmcm9tIHVzZXJzcGFjZSB0byBpbnNlcnQgaW50byB0aGUgbG9nLiAgVGhlIGRhdGEKK3RoYXQgaXMgaW4gdGhlIFdSSVRFIHJlcXVlc3RzIGlzIGNvcGllZCBpbnRvIHRoZSBsb2cgdG8gbWFrZSB0aGUgcmVwbGF5IGhhcHBlbgorZXhhY3RseSBhcyBpdCBoYXBwZW5lZCBvcmlnaW5hbGx5LgorCitMb2cgT3JkZXJpbmcKKz09PT09PT09PT09PQorCitXZSBsb2cgdGhpbmdzIGluIG9yZGVyIG9mIGNvbXBsZXRpb24gb25jZSB3ZSBhcmUgc3VyZSB0aGUgd3JpdGUgaXMgbm8gbG9uZ2VyIGluCitjYWNoZS4gIFRoaXMgbWVhbnMgdGhhdCBub3JtYWwgV1JJVEUgcmVxdWVzdHMgYXJlIG5vdCBhY3R1YWxseSBsb2dnZWQgdW50aWwgdGhlCituZXh0IFJFUV9GTFVTSCByZXF1ZXN0LiAgVGhpcyBpcyB0byBtYWtlIGl0IGVhc2llciBmb3IgdXNlcnNwYWNlIHRvIHJlcGxheSB0aGUKK2xvZyBpbiBhIHdheSB0aGF0IGNvcnJlbGF0ZXMgdG8gd2hhdCBpcyBvbiBkaXNrIGFuZCBub3Qgd2hhdCBpcyBpbiBjYWNoZSwgdG8KK21ha2UgaXQgZWFzaWVyIHRvIGRldGVjdCBpbXByb3BlciB3YWl0aW5nL2ZsdXNoaW5nLgorCitUaGlzIHdvcmtzIGJ5IGF0dGFjaGluZyBhbGwgV1JJVEUgcmVxdWVzdHMgdG8gYSBsaXN0IG9uY2UgdGhlIHdyaXRlIGNvbXBsZXRlcy4KK09uY2Ugd2Ugc2VlIGEgUkVRX0ZMVVNIIHJlcXVlc3Qgd2Ugc3BsaWNlIHRoaXMgbGlzdCBvbnRvIHRoZSByZXF1ZXN0IGFuZCBvbmNlCit0aGUgRkxVU0ggcmVxdWVzdCBjb21wbGV0ZXMgd2UgbG9nIGFsbCBvZiB0aGUgV1JJVEVzIGFuZCB0aGVuIHRoZSBGTFVTSC4gIE9ubHkKK2NvbXBsZXRlZCBXUklURXMsIGF0IHRoZSB0aW1lIHRoZSBSRVFfRkxVU0ggaXMgaXNzdWVkLCBhcmUgYWRkZWQgaW4gb3JkZXIgdG8KK3NpbXVsYXRlIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIHdpdGggcmVnYXJkIHRvIHBvd2VyIGZhaWx1cmVzLiAgQ29uc2lkZXIgdGhlCitmb2xsb3dpbmcgZXhhbXBsZSAoVyBtZWFucyB3cml0ZSwgQyBtZWFucyBjb21wbGV0ZSk6CisKK1cxLFcyLFczLEMzLEMyLFdmbHVzaCxDMSxDZmx1c2gKKworVGhlIGxvZyB3b3VsZCBzaG93IHRoZSBmb2xsb3dpbmcKKworVzMsVzIsZmx1c2gsVzEuLi4uCisKK0FnYWluIHRoaXMgaXMgdG8gc2ltdWxhdGUgd2hhdCBpcyBhY3R1YWxseSBvbiBkaXNrLCB0aGlzIGFsbG93cyB1cyB0byBkZXRlY3QKK2Nhc2VzIHdoZXJlIGEgcG93ZXIgZmFpbHVyZSBhdCBhIHBhcnRpY3VsYXIgcG9pbnQgaW4gdGltZSB3b3VsZCBjcmVhdGUgYW4KK2luY29uc2lzdGVudCBmaWxlIHN5c3RlbS4KKworQW55IFJFUV9GVUEgcmVxdWVzdHMgYnlwYXNzIHRoaXMgZmx1c2hpbmcgbWVjaGFuaXNtIGFuZCBhcmUgbG9nZ2VkIGFzIHNvb24gYXMKK3RoZXkgY29tcGxldGUgYXMgdGhvc2UgcmVxdWVzdHMgd2lsbCBvYnZpb3VzbHkgYnlwYXNzIHRoZSBkZXZpY2UgY2FjaGUuCisKK0FueSBSRVFfRElTQ0FSRCByZXF1ZXN0cyBhcmUgdHJlYXRlZCBsaWtlIFdSSVRFIHJlcXVlc3RzLiAgT3RoZXJ3aXNlIHdlIHdvdWxkCitoYXZlIGFsbCB0aGUgRElTQ0FSRCByZXF1ZXN0cywgYW5kIHRoZW4gdGhlIFdSSVRFIHJlcXVlc3RzIGFuZCB0aGVuIHRoZSBGTFVTSAorcmVxdWVzdC4gIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKKworV1JJVEUgYmxvY2sgMSwgRElTQ0FSRCBibG9jayAxLCBGTFVTSAorCitJZiB3ZSBsb2dnZWQgRElTQ0FSRCB3aGVuIGl0IGNvbXBsZXRlZCwgdGhlIHJlcGxheSB3b3VsZCBsb29rIGxpa2UgdGhpcworCitESVNDQVJEIDEsIFdSSVRFIDEsIEZMVVNICisKK3doaWNoIGlzbid0IHF1aXRlIHdoYXQgaGFwcGVuZWQgYW5kIHdvdWxkbid0IGJlIGNhdWdodCBkdXJpbmcgdGhlIGxvZyByZXBsYXkuCisKK1RhcmdldCBpbnRlcmZhY2UKKz09PT09PT09PT09PT09PT0KKworaSkgQ29uc3RydWN0b3IKKworICAgbG9nLXdyaXRlcyA8ZGV2X3BhdGg+IDxsb2dfZGV2X3BhdGg+CisKKyAgIGRldl9wYXRoCTogRGV2aWNlIHRoYXQgYWxsIG9mIHRoZSBJTyB3aWxsIGdvIHRvIG5vcm1hbGx5LgorICAgbG9nX2Rldl9wYXRoIDogRGV2aWNlIHdoZXJlIHRoZSBsb2cgZW50cmllcyBhcmUgd3JpdHRlbiB0by4KKworaWkpIFN0YXR1cworCisgICAgPCNsb2dnZWQgZW50cmllcz4gPGhpZ2hlc3QgYWxsb2NhdGVkIHNlY3Rvcj4KKworICAgICNsb2dnZWQgZW50cmllcwkgICAgICAgOiBOdW1iZXIgb2YgbG9nZ2VkIGVudHJpZXMKKyAgICBoaWdoZXN0IGFsbG9jYXRlZCBzZWN0b3IgICA6IEhpZ2hlc3QgYWxsb2NhdGVkIHNlY3RvcgorCitpaWkpIE1lc3NhZ2VzCisKKyAgICBtYXJrIDxkZXNjcmlwdGlvbj4KKworCVlvdSBjYW4gdXNlIGEgZG1zZXR1cCBtZXNzYWdlIHRvIHNldCBhbiBhcmJpdHJhcnkgbWFyayBpbiBhIGxvZy4KKwlGb3IgZXhhbXBsZSBzYXkgeW91IHdhbnQgdG8gZnNjayBhIGZpbGUgc3lzdGVtIGFmdGVyIGV2ZXJ5CisJd3JpdGUsIGJ1dCBmaXJzdCB5b3UgbmVlZCB0byByZXBsYXkgdXAgdG8gdGhlIG1rZnMgdG8gbWFrZSBzdXJlCisJd2UncmUgZnNjaydpbmcgc29tZXRoaW5nIHJlYXNvbmFibGUsIHlvdSB3b3VsZCBkbyBzb21ldGhpbmcgbGlrZQorCXRoaXM6CisKKwkgIG1rZnMuYnRyZnMgLWYgL2Rldi9tYXBwZXIvbG9nCisJICBkbXNldHVwIG1lc3NhZ2UgbG9nIDAgbWFyayBta2ZzCisJICA8cnVuIHRlc3Q+CisKKwkgIFRoaXMgd291bGQgYWxsb3cgeW91IHRvIHJlcGxheSB0aGUgbG9nIHVwIHRvIHRoZSBta2ZzIG1hcmsgYW5kCisJICB0aGVuIHJlcGxheSBmcm9tIHRoYXQgcG9pbnQgb24gZG9pbmcgdGhlIGZzY2sgY2hlY2sgaW4gdGhlCisJICBpbnRlcnZhbCB0aGF0IHlvdSB3YW50LgorCisJRXZlcnkgbG9nIGhhcyBhIG1hcmsgYXQgdGhlIGVuZCBsYWJlbGVkICJkbS1sb2ctd3JpdGVzLWVuZCIuCisKK1VzZXJzcGFjZSBjb21wb25lbnQKKz09PT09PT09PT09PT09PT09PT0KKworVGhlcmUgaXMgYSB1c2Vyc3BhY2UgdG9vbCB0aGF0IHdpbGwgcmVwbGF5IHRoZSBsb2cgZm9yIHlvdSBpbiB2YXJpb3VzIHdheXMuCitJdCBjYW4gYmUgZm91bmQgaGVyZTogaHR0cHM6Ly9naXRodWIuY29tL2pvc2VmYmFjaWsvbG9nLXdyaXRlcworCitFeGFtcGxlIHVzYWdlCis9PT09PT09PT09PT09CisKK1NheSB5b3Ugd2FudCB0byB0ZXN0IGZzeW5jIG9uIHlvdXIgZmlsZSBzeXN0ZW0uICBZb3Ugd291bGQgZG8gc29tZXRoaW5nIGxpa2UKK3RoaXM6CisKK1RBQkxFPSIwICQoYmxvY2tkZXYgLS1nZXRzeiAvZGV2L3NkYikgbG9nLXdyaXRlcyAvZGV2L3NkYiAvZGV2L3NkYyIKK2Rtc2V0dXAgY3JlYXRlIGxvZyAtLXRhYmxlICIkVEFCTEUiCitta2ZzLmJ0cmZzIC1mIC9kZXYvbWFwcGVyL2xvZworZG1zZXR1cCBtZXNzYWdlIGxvZyAwIG1hcmsgbWtmcworCittb3VudCAvZGV2L21hcHBlci9sb2cgL21udC9idHJmcy10ZXN0Cis8c29tZSB0ZXN0IHRoYXQgZG9lcyBmc3luYyBhdCB0aGUgZW5kPgorZG1zZXR1cCBtZXNzYWdlIGxvZyAwIG1hcmsgZnN5bmMKK21kNXN1bSAvbW50L2J0cmZzLXRlc3QvZm9vCit1bW91bnQgL21udC9idHJmcy10ZXN0CisKK2Rtc2V0dXAgcmVtb3ZlIGxvZworcmVwbGF5LWxvZyAtLWxvZyAvZGV2L3NkYyAtLXJlcGxheSAvZGV2L3NkYiAtLWVuZC1tYXJrIGZzeW5jCittb3VudCAvZGV2L3NkYiAvbW50L2J0cmZzLXRlc3QKK21kNXN1bSAvbW50L2J0cmZzLXRlc3QvZm9vCis8dmVyaWZ5IG1kNXN1bSdzIGFyZSBjb3JyZWN0PgorCitBbm90aGVyIG9wdGlvbiBpcyB0byBkbyBhIGNvbXBsaWNhdGVkIGZpbGUgc3lzdGVtIG9wZXJhdGlvbiBhbmQgdmVyaWZ5IHRoZSBmaWxlCitzeXN0ZW0gaXMgY29uc2lzdGVudCBkdXJpbmcgdGhlIGVudGlyZSBvcGVyYXRpb24uICBZb3UgY291bGQgZG8gdGhpcyB3aXRoOgorCitUQUJMRT0iMCAkKGJsb2NrZGV2IC0tZ2V0c3ogL2Rldi9zZGIpIGxvZy13cml0ZXMgL2Rldi9zZGIgL2Rldi9zZGMiCitkbXNldHVwIGNyZWF0ZSBsb2cgLS10YWJsZSAiJFRBQkxFIgorbWtmcy5idHJmcyAtZiAvZGV2L21hcHBlci9sb2cKK2Rtc2V0dXAgbWVzc2FnZSBsb2cgMCBtYXJrIG1rZnMKKworbW91bnQgL2Rldi9tYXBwZXIvbG9nIC9tbnQvYnRyZnMtdGVzdAorPGZzc3RyZXNzIHRvIGRpcnR5IHRoZSBmcz4KK2J0cmZzIGZpbGVzeXN0ZW0gYmFsYW5jZSAvbW50L2J0cmZzLXRlc3QKK3Vtb3VudCAvbW50L2J0cmZzLXRlc3QKK2Rtc2V0dXAgcmVtb3ZlIGxvZworCityZXBsYXktbG9nIC0tbG9nIC9kZXYvc2RjIC0tcmVwbGF5IC9kZXYvc2RiIC0tZW5kLW1hcmsgbWtmcworYnRyZnNjayAvZGV2L3NkYgorcmVwbGF5LWxvZyAtLWxvZyAvZGV2L3NkYyAtLXJlcGxheSAvZGV2L3NkYiAtLXN0YXJ0LW1hcmsgbWtmcyBcCisJLS1mc2NrICJidHJmc2NrIC9kZXYvc2RiIiAtLWNoZWNrIGZ1YQorCitBbmQgdGhhdCB3aWxsIHJlcGxheSB0aGUgbG9nIHVudGlsIGl0IHNlZXMgYSBGVUEgcmVxdWVzdCwgcnVuIHRoZSBmc2NrIGNvbW1hbmQKK2FuZCBpZiB0aGUgZnNjayBwYXNzZXMgaXQgd2lsbCByZXBsYXkgdG8gdGhlIG5leHQgRlVBLCB1bnRpbCBpdCBpcyBjb21wbGV0ZWQgb3IKK3RoZSBmc2NrIGNvbW1hbmQgZXhpc3RzIGFibm9ybWFsbHkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvcGVyc2lzdGVudC1kYXRhLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9wZXJzaXN0ZW50LWRhdGEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzMzNiY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvcGVyc2lzdGVudC1kYXRhLnR4dApAQCAtMCwwICsxLDg0IEBACitJbnRyb2R1Y3Rpb24KKz09PT09PT09PT09PQorCitUaGUgbW9yZS1zb3BoaXN0aWNhdGVkIGRldmljZS1tYXBwZXIgdGFyZ2V0cyByZXF1aXJlIGNvbXBsZXggbWV0YWRhdGEKK3RoYXQgaXMgbWFuYWdlZCBpbiBrZXJuZWwuICBJbiBsYXRlIDIwMTAgd2Ugd2VyZSBzZWVpbmcgdGhhdCB2YXJpb3VzCitkaWZmZXJlbnQgdGFyZ2V0cyB3ZXJlIHJvbGxpbmcgdGhlaXIgb3duIGRhdGEgc3RydWN0dXJlcywgZm9yIGV4YW1wbGU6CisKKy0gTWlrdWxhcyBQYXRvY2thJ3MgbXVsdGlzbmFwIGltcGxlbWVudGF0aW9uCistIEhlaW56IE1hdWVsc2hhZ2VuJ3MgdGhpbiBwcm92aXNpb25pbmcgdGFyZ2V0CistIEFub3RoZXIgYnRyZWUtYmFzZWQgY2FjaGluZyB0YXJnZXQgcG9zdGVkIHRvIGRtLWRldmVsCistIEFub3RoZXIgbXVsdGktc25hcHNob3QgdGFyZ2V0IGJhc2VkIG9uIGEgZGVzaWduIG9mIERhbmllbCBQaGlsbGlwcworCitNYWludGFpbmluZyB0aGVzZSBkYXRhIHN0cnVjdHVyZXMgdGFrZXMgYSBsb3Qgb2Ygd29yaywgc28gaWYgcG9zc2libGUKK3dlJ2QgbGlrZSB0byByZWR1Y2UgdGhlIG51bWJlci4KKworVGhlIHBlcnNpc3RlbnQtZGF0YSBsaWJyYXJ5IGlzIGFuIGF0dGVtcHQgdG8gcHJvdmlkZSBhIHJlLXVzYWJsZQorZnJhbWV3b3JrIGZvciBwZW9wbGUgd2hvIHdhbnQgdG8gc3RvcmUgbWV0YWRhdGEgaW4gZGV2aWNlLW1hcHBlcgordGFyZ2V0cy4gIEl0J3MgY3VycmVudGx5IHVzZWQgYnkgdGhlIHRoaW4tcHJvdmlzaW9uaW5nIHRhcmdldCBhbmQgYW4KK3VwY29taW5nIGhpZXJhcmNoaWNhbCBzdG9yYWdlIHRhcmdldC4KKworT3ZlcnZpZXcKKz09PT09PT09CisKK1RoZSBtYWluIGRvY3VtZW50YXRpb24gaXMgaW4gdGhlIGhlYWRlciBmaWxlcyB3aGljaCBjYW4gYWxsIGJlIGZvdW5kCit1bmRlciBkcml2ZXJzL21kL3BlcnNpc3RlbnQtZGF0YS4KKworVGhlIGJsb2NrIG1hbmFnZXIKKy0tLS0tLS0tLS0tLS0tLS0tCisKK2RtLWJsb2NrLW1hbmFnZXIuW2hjXQorCitUaGlzIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgZGF0YSBvbiBkaXNrIGluIGZpeGVkIHNpemVkLWJsb2Nrcy4gIFRoZXJlCitpcyBhIHJlYWQvd3JpdGUgbG9ja2luZyBpbnRlcmZhY2UgdG8gcHJldmVudCBjb25jdXJyZW50IGFjY2Vzc2VzLCBhbmQKK2tlZXAgZGF0YSB0aGF0IGlzIGJlaW5nIHVzZWQgaW4gdGhlIGNhY2hlLgorCitDbGllbnRzIG9mIHBlcnNpc3RlbnQtZGF0YSBhcmUgdW5saWtlbHkgdG8gdXNlIHRoaXMgZGlyZWN0bHkuCisKK1RoZSB0cmFuc2FjdGlvbiBtYW5hZ2VyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitkbS10cmFuc2FjdGlvbi1tYW5hZ2VyLltoY10KKworVGhpcyByZXN0cmljdHMgYWNjZXNzIHRvIGJsb2NrcyBhbmQgZW5mb3JjZXMgY29weS1vbi13cml0ZSBzZW1hbnRpY3MuCitUaGUgb25seSB3YXkgeW91IGNhbiBnZXQgaG9sZCBvZiBhIHdyaXRhYmxlIGJsb2NrIHRocm91Z2ggdGhlCit0cmFuc2FjdGlvbiBtYW5hZ2VyIGlzIGJ5IHNoYWRvd2luZyBhbiBleGlzdGluZyBibG9jayAoaWUuIGRvaW5nCitjb3B5LW9uLXdyaXRlKSBvciBhbGxvY2F0aW5nIGEgZnJlc2ggb25lLiAgU2hhZG93aW5nIGlzIGVsaWRlZCB3aXRoaW4KK3RoZSBzYW1lIHRyYW5zYWN0aW9uIHNvIHBlcmZvcm1hbmNlIGlzIHJlYXNvbmFibGUuICBUaGUgY29tbWl0IG1ldGhvZAorZW5zdXJlcyB0aGF0IGFsbCBkYXRhIGlzIGZsdXNoZWQgYmVmb3JlIGl0IHdyaXRlcyB0aGUgc3VwZXJibG9jay4KK09uIHBvd2VyIGZhaWx1cmUgeW91ciBtZXRhZGF0YSB3aWxsIGJlIGFzIGl0IHdhcyB3aGVuIGxhc3QgY29tbWl0dGVkLgorCitUaGUgU3BhY2UgTWFwcworLS0tLS0tLS0tLS0tLS0KKworZG0tc3BhY2UtbWFwLmgKK2RtLXNwYWNlLW1hcC1tZXRhZGF0YS5baGNdCitkbS1zcGFjZS1tYXAtZGlzay5baGNdCisKK09uLWRpc2sgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQga2VlcCB0cmFjayBvZiByZWZlcmVuY2UgY291bnRzIG9mIGJsb2Nrcy4KK0Fsc28gYWN0cyBhcyB0aGUgYWxsb2NhdG9yIG9mIG5ldyBibG9ja3MuICBDdXJyZW50bHkgdHdvCitpbXBsZW1lbnRhdGlvbnM6IGEgc2ltcGxlciBvbmUgZm9yIG1hbmFnaW5nIGJsb2NrcyBvbiBhIGRpZmZlcmVudAorZGV2aWNlIChlZy4gdGhpbmx5LXByb3Zpc2lvbmVkIGRhdGEgYmxvY2tzKTsgYW5kIG9uZSBmb3IgbWFuYWdpbmcKK3RoZSBtZXRhZGF0YSBzcGFjZS4gIFRoZSBsYXR0ZXIgaXMgY29tcGxpY2F0ZWQgYnkgdGhlIG5lZWQgdG8gc3RvcmUKK2l0cyBvd24gZGF0YSB3aXRoaW4gdGhlIHNwYWNlIGl0J3MgbWFuYWdpbmcuCisKK1RoZSBkYXRhIHN0cnVjdHVyZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworZG0tYnRyZWUuW2hjXQorZG0tYnRyZWUtcmVtb3ZlLmMKK2RtLWJ0cmVlLXNwaW5lLmMKK2RtLWJ0cmVlLWludGVybmFsLmgKKworQ3VycmVudGx5IHRoZXJlIGlzIG9ubHkgb25lIGRhdGEgc3RydWN0dXJlLCBhIGhpZXJhcmNoaWNhbCBidHJlZS4KK1RoZXJlIGFyZSBwbGFucyB0byBhZGQgbW9yZS4gIEZvciBleGFtcGxlLCBzb21ldGhpbmcgd2l0aCBhbgorYXJyYXktbGlrZSBpbnRlcmZhY2Ugd291bGQgc2VlIGEgbG90IG9mIHVzZS4KKworVGhlIGJ0cmVlIGlzICdoaWVyYXJjaGljYWwnIGluIHRoYXQgeW91IGNhbiBkZWZpbmUgaXQgdG8gYmUgY29tcG9zZWQKK29mIG5lc3RlZCBidHJlZXMsIGFuZCB0YWtlIG11bHRpcGxlIGtleXMuICBGb3IgZXhhbXBsZSwgdGhlCit0aGluLXByb3Zpc2lvbmluZyB0YXJnZXQgdXNlcyBhIGJ0cmVlIHdpdGggdHdvIGxldmVscyBvZiBuZXN0aW5nLgorVGhlIGZpcnN0IG1hcHMgYSBkZXZpY2UgaWQgdG8gYSBtYXBwaW5nIHRyZWUsIGFuZCB0aGF0IGluIHR1cm4gbWFwcyBhCit2aXJ0dWFsIGJsb2NrIHRvIGEgcGh5c2ljYWwgYmxvY2suCisKK1ZhbHVlcyBzdG9yZWQgaW4gdGhlIGJ0cmVlcyBjYW4gaGF2ZSBhcmJpdHJhcnkgc2l6ZS4gIEtleXMgYXJlIGFsd2F5cworNjRiaXRzLCBhbHRob3VnaCBuZXN0aW5nIGFsbG93cyB5b3UgdG8gdXNlIG11bHRpcGxlIGtleXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvc25hcHNob3QudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL3NuYXBzaG90LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDY5NDliCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL3NuYXBzaG90LnR4dApAQCAtMCwwICsxLDE3MiBAQAorRGV2aWNlLW1hcHBlciBzbmFwc2hvdCBzdXBwb3J0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRGV2aWNlLW1hcHBlciBhbGxvd3MgeW91LCB3aXRob3V0IG1hc3NpdmUgZGF0YSBjb3B5aW5nOgorCisqKSBUbyBjcmVhdGUgc25hcHNob3RzIG9mIGFueSBibG9jayBkZXZpY2UgaS5lLiBtb3VudGFibGUsIHNhdmVkIHN0YXRlcyBvZgordGhlIGJsb2NrIGRldmljZSB3aGljaCBhcmUgYWxzbyB3cml0YWJsZSB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggdGhlCitvcmlnaW5hbCBjb250ZW50OworKikgVG8gY3JlYXRlIGRldmljZSAiZm9ya3MiLCBpLmUuIG11bHRpcGxlIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUKK3NhbWUgZGF0YSBzdHJlYW0uCisqKSBUbyBtZXJnZSBhIHNuYXBzaG90IG9mIGEgYmxvY2sgZGV2aWNlIGJhY2sgaW50byB0aGUgc25hcHNob3QncyBvcmlnaW4KK2RldmljZS4KKworSW4gdGhlIGZpcnN0IHR3byBjYXNlcywgZG0gY29waWVzIG9ubHkgdGhlIGNodW5rcyBvZiBkYXRhIHRoYXQgZ2V0CitjaGFuZ2VkIGFuZCB1c2VzIGEgc2VwYXJhdGUgY29weS1vbi13cml0ZSAoQ09XKSBibG9jayBkZXZpY2UgZm9yCitzdG9yYWdlLgorCitGb3Igc25hcHNob3QgbWVyZ2UgdGhlIGNvbnRlbnRzIG9mIHRoZSBDT1cgc3RvcmFnZSBhcmUgbWVyZ2VkIGJhY2sgaW50bwordGhlIG9yaWdpbiBkZXZpY2UuCisKKworVGhlcmUgYXJlIHRocmVlIGRtIHRhcmdldHMgYXZhaWxhYmxlOgorc25hcHNob3QsIHNuYXBzaG90LW9yaWdpbiwgYW5kIHNuYXBzaG90LW1lcmdlLgorCisqKSBzbmFwc2hvdC1vcmlnaW4gPG9yaWdpbj4KKword2hpY2ggd2lsbCBub3JtYWxseSBoYXZlIG9uZSBvciBtb3JlIHNuYXBzaG90cyBiYXNlZCBvbiBpdC4KK1JlYWRzIHdpbGwgYmUgbWFwcGVkIGRpcmVjdGx5IHRvIHRoZSBiYWNraW5nIGRldmljZS4gRm9yIGVhY2ggd3JpdGUsIHRoZQorb3JpZ2luYWwgZGF0YSB3aWxsIGJlIHNhdmVkIGluIHRoZSA8Q09XIGRldmljZT4gb2YgZWFjaCBzbmFwc2hvdCB0byBrZWVwCitpdHMgdmlzaWJsZSBjb250ZW50IHVuY2hhbmdlZCwgYXQgbGVhc3QgdW50aWwgdGhlIDxDT1cgZGV2aWNlPiBmaWxscyB1cC4KKworCisqKSBzbmFwc2hvdCA8b3JpZ2luPiA8Q09XIGRldmljZT4gPHBlcnNpc3RlbnQ/PiA8Y2h1bmtzaXplPgorCitBIHNuYXBzaG90IG9mIHRoZSA8b3JpZ2luPiBibG9jayBkZXZpY2UgaXMgY3JlYXRlZC4gQ2hhbmdlZCBjaHVua3Mgb2YKKzxjaHVua3NpemU+IHNlY3RvcnMgd2lsbCBiZSBzdG9yZWQgb24gdGhlIDxDT1cgZGV2aWNlPi4gIFdyaXRlcyB3aWxsCitvbmx5IGdvIHRvIHRoZSA8Q09XIGRldmljZT4uICBSZWFkcyB3aWxsIGNvbWUgZnJvbSB0aGUgPENPVyBkZXZpY2U+IG9yCitmcm9tIDxvcmlnaW4+IGZvciB1bmNoYW5nZWQgZGF0YS4gIDxDT1cgZGV2aWNlPiB3aWxsIG9mdGVuIGJlCitzbWFsbGVyIHRoYW4gdGhlIG9yaWdpbiBhbmQgaWYgaXQgZmlsbHMgdXAgdGhlIHNuYXBzaG90IHdpbGwgYmVjb21lCit1c2VsZXNzIGFuZCBiZSBkaXNhYmxlZCwgcmV0dXJuaW5nIGVycm9ycy4gIFNvIGl0IGlzIGltcG9ydGFudCB0byBtb25pdG9yCit0aGUgYW1vdW50IG9mIGZyZWUgc3BhY2UgYW5kIGV4cGFuZCB0aGUgPENPVyBkZXZpY2U+IGJlZm9yZSBpdCBmaWxscyB1cC4KKworPHBlcnNpc3RlbnQ/PiBpcyBQIChQZXJzaXN0ZW50KSBvciBOIChOb3QgcGVyc2lzdGVudCAtIHdpbGwgbm90IHN1cnZpdmUKK2FmdGVyIHJlYm9vdCkuICBPIChPdmVyZmxvdykgY2FuIGJlIGFkZGVkIGFzIGEgcGVyc2lzdGVudCBzdG9yZSBvcHRpb24KK3RvIGFsbG93IHVzZXJzcGFjZSB0byBhZHZlcnRpc2UgaXRzIHN1cHBvcnQgZm9yIHNlZWluZyAiT3ZlcmZsb3ciIGluIHRoZQorc25hcHNob3Qgc3RhdHVzLiAgU28gc3VwcG9ydGVkIHN0b3JlIHR5cGVzIGFyZSAiUCIsICJQTyIgYW5kICJOIi4KKworVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBwZXJzaXN0ZW50IGFuZCB0cmFuc2llbnQgaXMgd2l0aCB0cmFuc2llbnQKK3NuYXBzaG90cyBsZXNzIG1ldGFkYXRhIG11c3QgYmUgc2F2ZWQgb24gZGlzayAtIHRoZXkgY2FuIGJlIGtlcHQgaW4KK21lbW9yeSBieSB0aGUga2VybmVsLgorCisKKyogc25hcHNob3QtbWVyZ2UgPG9yaWdpbj4gPENPVyBkZXZpY2U+IDxwZXJzaXN0ZW50PiA8Y2h1bmtzaXplPgorCit0YWtlcyB0aGUgc2FtZSB0YWJsZSBhcmd1bWVudHMgYXMgdGhlIHNuYXBzaG90IHRhcmdldCBleGNlcHQgaXQgb25seQord29ya3Mgd2l0aCBwZXJzaXN0ZW50IHNuYXBzaG90cy4gIFRoaXMgdGFyZ2V0IGFzc3VtZXMgdGhlIHJvbGUgb2YgdGhlCisic25hcHNob3Qtb3JpZ2luIiB0YXJnZXQgYW5kIG11c3Qgbm90IGJlIGxvYWRlZCBpZiB0aGUgInNuYXBzaG90LW9yaWdpbiIKK2lzIHN0aWxsIHByZXNlbnQgZm9yIDxvcmlnaW4+LgorCitDcmVhdGVzIGEgbWVyZ2luZyBzbmFwc2hvdCB0aGF0IHRha2VzIGNvbnRyb2wgb2YgdGhlIGNoYW5nZWQgY2h1bmtzCitzdG9yZWQgaW4gdGhlIDxDT1cgZGV2aWNlPiBvZiBhbiBleGlzdGluZyBzbmFwc2hvdCwgdGhyb3VnaCBhIGhhbmRvdmVyCitwcm9jZWR1cmUsIGFuZCBtZXJnZXMgdGhlc2UgY2h1bmtzIGJhY2sgaW50byB0aGUgPG9yaWdpbj4uICBPbmNlIG1lcmdpbmcKK2hhcyBzdGFydGVkIChpbiB0aGUgYmFja2dyb3VuZCkgdGhlIDxvcmlnaW4+IG1heSBiZSBvcGVuZWQgYW5kIHRoZSBtZXJnZQord2lsbCBjb250aW51ZSB3aGlsZSBJL08gaXMgZmxvd2luZyB0byBpdC4gIENoYW5nZXMgdG8gdGhlIDxvcmlnaW4+IGFyZQorZGVmZXJyZWQgdW50aWwgdGhlIG1lcmdpbmcgc25hcHNob3QncyBjb3JyZXNwb25kaW5nIGNodW5rKHMpIGhhdmUgYmVlbgorbWVyZ2VkLiAgT25jZSBtZXJnaW5nIGhhcyBzdGFydGVkIHRoZSBzbmFwc2hvdCBkZXZpY2UsIGFzc29jaWF0ZWQgd2l0aAordGhlICJzbmFwc2hvdCIgdGFyZ2V0LCB3aWxsIHJldHVybiAtRUlPIHdoZW4gYWNjZXNzZWQuCisKKworSG93IHNuYXBzaG90IGlzIHVzZWQgYnkgTFZNMgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorV2hlbiB5b3UgY3JlYXRlIHRoZSBmaXJzdCBMVk0yIHNuYXBzaG90IG9mIGEgdm9sdW1lLCBmb3VyIGRtIGRldmljZXMgYXJlIHVzZWQ6CisKKzEpIGEgZGV2aWNlIGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsIG1hcHBpbmcgdGFibGUgb2YgdGhlIHNvdXJjZSB2b2x1bWU7CisyKSBhIGRldmljZSB1c2VkIGFzIHRoZSA8Q09XIGRldmljZT47CiszKSBhICJzbmFwc2hvdCIgZGV2aWNlLCBjb21iaW5pbmcgIzEgYW5kICMyLCB3aGljaCBpcyB0aGUgdmlzaWJsZSBzbmFwc2hvdAorICAgdm9sdW1lOworNCkgdGhlICJvcmlnaW5hbCIgdm9sdW1lICh3aGljaCB1c2VzIHRoZSBkZXZpY2UgbnVtYmVyIHVzZWQgYnkgdGhlIG9yaWdpbmFsCisgICBzb3VyY2Ugdm9sdW1lKSwgd2hvc2UgdGFibGUgaXMgcmVwbGFjZWQgYnkgYSAic25hcHNob3Qtb3JpZ2luIiBtYXBwaW5nCisgICBmcm9tIGRldmljZSAjMS4KKworQSBmaXhlZCBuYW1pbmcgc2NoZW1lIGlzIHVzZWQsIHNvIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kczoKKworbHZjcmVhdGUgLUwgMUcgLW4gYmFzZSB2b2x1bWVHcm91cAorbHZjcmVhdGUgLUwgMTAwTSAtLXNuYXBzaG90IC1uIHNuYXAgdm9sdW1lR3JvdXAvYmFzZQorCit3ZSdsbCBoYXZlIHRoaXMgc2l0dWF0aW9uICh3aXRoIHZvbHVtZXMgaW4gYWJvdmUgb3JkZXIpOgorCisjIGRtc2V0dXAgdGFibGV8Z3JlcCB2b2x1bWVHcm91cAorCit2b2x1bWVHcm91cC1iYXNlLXJlYWw6IDAgMjA5NzE1MiBsaW5lYXIgODoxOSAzODQKK3ZvbHVtZUdyb3VwLXNuYXAtY293OiAwIDIwNDgwMCBsaW5lYXIgODoxOSAyMDk3NTM2Cit2b2x1bWVHcm91cC1zbmFwOiAwIDIwOTcxNTIgc25hcHNob3QgMjU0OjExIDI1NDoxMiBQIDE2Cit2b2x1bWVHcm91cC1iYXNlOiAwIDIwOTcxNTIgc25hcHNob3Qtb3JpZ2luIDI1NDoxMQorCisjIGxzIC1sTCAvZGV2L21hcHBlci92b2x1bWVHcm91cC0qCiticnctLS0tLS0tICAxIHJvb3Qgcm9vdCAyNTQsIDExIDI5IGFnbyAxODoxNSAvZGV2L21hcHBlci92b2x1bWVHcm91cC1iYXNlLXJlYWwKK2Jydy0tLS0tLS0gIDEgcm9vdCByb290IDI1NCwgMTIgMjkgYWdvIDE4OjE1IC9kZXYvbWFwcGVyL3ZvbHVtZUdyb3VwLXNuYXAtY293CiticnctLS0tLS0tICAxIHJvb3Qgcm9vdCAyNTQsIDEzIDI5IGFnbyAxODoxNSAvZGV2L21hcHBlci92b2x1bWVHcm91cC1zbmFwCiticnctLS0tLS0tICAxIHJvb3Qgcm9vdCAyNTQsIDEwIDI5IGFnbyAxODoxNCAvZGV2L21hcHBlci92b2x1bWVHcm91cC1iYXNlCisKKworSG93IHNuYXBzaG90LW1lcmdlIGlzIHVzZWQgYnkgTFZNMgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQSBtZXJnaW5nIHNuYXBzaG90IGFzc3VtZXMgdGhlIHJvbGUgb2YgdGhlICJzbmFwc2hvdC1vcmlnaW4iIHdoaWxlCittZXJnaW5nLiAgQXMgc3VjaCB0aGUgInNuYXBzaG90LW9yaWdpbiIgaXMgcmVwbGFjZWQgd2l0aAorInNuYXBzaG90LW1lcmdlIi4gIFRoZSAiLXJlYWwiIGRldmljZSBpcyBub3QgY2hhbmdlZCBhbmQgdGhlICItY293IgorZGV2aWNlIGlzIHJlbmFtZWQgdG8gPG9yaWdpbiBuYW1lPi1jb3cgdG8gYWlkIExWTTIncyBjbGVhbnVwIG9mIHRoZQorbWVyZ2luZyBzbmFwc2hvdCBhZnRlciBpdCBjb21wbGV0ZXMuICBUaGUgInNuYXBzaG90IiB0aGF0IGhhbmRzIG92ZXIgaXRzCitDT1cgZGV2aWNlIHRvIHRoZSAic25hcHNob3QtbWVyZ2UiIGlzIGRlYWN0aXZhdGVkICh1bmxlc3MgdXNpbmcgbHZjaGFuZ2UKKy0tcmVmcmVzaCk7IGJ1dCBpZiBpdCBpcyBsZWZ0IGFjdGl2ZSBpdCB3aWxsIHNpbXBseSByZXR1cm4gSS9PIGVycm9ycy4KKworQSBzbmFwc2hvdCB3aWxsIG1lcmdlIGludG8gaXRzIG9yaWdpbiB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKworbHZjb252ZXJ0IC0tbWVyZ2Ugdm9sdW1lR3JvdXAvc25hcAorCit3ZSdsbCBub3cgaGF2ZSB0aGlzIHNpdHVhdGlvbjoKKworIyBkbXNldHVwIHRhYmxlfGdyZXAgdm9sdW1lR3JvdXAKKwordm9sdW1lR3JvdXAtYmFzZS1yZWFsOiAwIDIwOTcxNTIgbGluZWFyIDg6MTkgMzg0Cit2b2x1bWVHcm91cC1iYXNlLWNvdzogMCAyMDQ4MDAgbGluZWFyIDg6MTkgMjA5NzUzNgordm9sdW1lR3JvdXAtYmFzZTogMCAyMDk3MTUyIHNuYXBzaG90LW1lcmdlIDI1NDoxMSAyNTQ6MTIgUCAxNgorCisjIGxzIC1sTCAvZGV2L21hcHBlci92b2x1bWVHcm91cC0qCiticnctLS0tLS0tICAxIHJvb3Qgcm9vdCAyNTQsIDExIDI5IGFnbyAxODoxNSAvZGV2L21hcHBlci92b2x1bWVHcm91cC1iYXNlLXJlYWwKK2Jydy0tLS0tLS0gIDEgcm9vdCByb290IDI1NCwgMTIgMjkgYWdvIDE4OjE2IC9kZXYvbWFwcGVyL3ZvbHVtZUdyb3VwLWJhc2UtY293CiticnctLS0tLS0tICAxIHJvb3Qgcm9vdCAyNTQsIDEwIDI5IGFnbyAxODoxNiAvZGV2L21hcHBlci92b2x1bWVHcm91cC1iYXNlCisKKworSG93IHRvIGRldGVybWluZSB3aGVuIGEgbWVyZ2luZyBpcyBjb21wbGV0ZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorVGhlIHNuYXBzaG90LW1lcmdlIGFuZCBzbmFwc2hvdCBzdGF0dXMgbGluZXMgZW5kIHdpdGg6CisgIDxzZWN0b3JzX2FsbG9jYXRlZD4vPHRvdGFsX3NlY3RvcnM+IDxtZXRhZGF0YV9zZWN0b3JzPgorCitCb3RoIDxzZWN0b3JzX2FsbG9jYXRlZD4gYW5kIDx0b3RhbF9zZWN0b3JzPiBpbmNsdWRlIGJvdGggZGF0YSBhbmQgbWV0YWRhdGEuCitEdXJpbmcgbWVyZ2luZywgdGhlIG51bWJlciBvZiBzZWN0b3JzIGFsbG9jYXRlZCBnZXRzIHNtYWxsZXIgYW5kCitzbWFsbGVyLiAgTWVyZ2luZyBoYXMgZmluaXNoZWQgd2hlbiB0aGUgbnVtYmVyIG9mIHNlY3RvcnMgaG9sZGluZyBkYXRhCitpcyB6ZXJvLCBpbiBvdGhlciB3b3JkcyA8c2VjdG9yc19hbGxvY2F0ZWQ+ID09IDxtZXRhZGF0YV9zZWN0b3JzPi4KKworSGVyZSBpcyBhIHByYWN0aWNhbCBleGFtcGxlICh1c2luZyBhIGh5YnJpZCBvZiBsdm0gYW5kIGRtc2V0dXAgY29tbWFuZHMpOgorCisjIGx2cworICBMViAgICAgIFZHICAgICAgICAgIEF0dHIgICBMU2l6ZSBPcmlnaW4gIFNuYXAlICBNb3ZlIExvZyBDb3B5JSAgQ29udmVydAorICBiYXNlICAgIHZvbHVtZUdyb3VwIG93aS1hLSA0LjAwZworICBzbmFwICAgIHZvbHVtZUdyb3VwIHN3aS1hLSAxLjAwZyBiYXNlICAxOC45NworCisjIGRtc2V0dXAgc3RhdHVzIHZvbHVtZUdyb3VwLXNuYXAKKzAgODM4ODYwOCBzbmFwc2hvdCAzOTc4OTYvMjA5NzE1MiAxNTYwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXiBtZXRhZGF0YSBzZWN0b3JzCisKKyMgbHZjb252ZXJ0IC0tbWVyZ2UgLWIgdm9sdW1lR3JvdXAvc25hcAorICBNZXJnaW5nIG9mIHZvbHVtZSBzbmFwIHN0YXJ0ZWQuCisKKyMgbHZzIHZvbHVtZUdyb3VwL3NuYXAKKyAgTFYgICAgICBWRyAgICAgICAgICBBdHRyICAgTFNpemUgT3JpZ2luICBTbmFwJSAgTW92ZSBMb2cgQ29weSUgIENvbnZlcnQKKyAgYmFzZSAgICB2b2x1bWVHcm91cCBPd2ktYS0gNC4wMGcgICAgICAgICAgMTcuMjMKKworIyBkbXNldHVwIHN0YXR1cyB2b2x1bWVHcm91cC1iYXNlCiswIDgzODg2MDggc25hcHNob3QtbWVyZ2UgMjgxNjg4LzIwOTcxNTIgMTEwNAorCisjIGRtc2V0dXAgc3RhdHVzIHZvbHVtZUdyb3VwLWJhc2UKKzAgODM4ODYwOCBzbmFwc2hvdC1tZXJnZSAxODA0ODAvMjA5NzE1MiA3MTIKKworIyBkbXNldHVwIHN0YXR1cyB2b2x1bWVHcm91cC1iYXNlCiswIDgzODg2MDggc25hcHNob3QtbWVyZ2UgMTYvMjA5NzE1MiAxNgorCitNZXJnaW5nIGhhcyBmaW5pc2hlZC4KKworIyBsdnMKKyAgTFYgICAgICBWRyAgICAgICAgICBBdHRyICAgTFNpemUgT3JpZ2luICBTbmFwJSAgTW92ZSBMb2cgQ29weSUgIENvbnZlcnQKKyAgYmFzZSAgICB2b2x1bWVHcm91cCBvd2ktYS0gNC4wMGcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9zdGF0aXN0aWNzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9zdGF0aXN0aWNzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjVlZjk0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL3N0YXRpc3RpY3MudHh0CkBAIC0wLDAgKzEsMjIzIEBACitETSBzdGF0aXN0aWNzCis9PT09PT09PT09PT09CisKK0RldmljZSBNYXBwZXIgc3VwcG9ydHMgdGhlIGNvbGxlY3Rpb24gb2YgSS9PIHN0YXRpc3RpY3Mgb24gdXNlci1kZWZpbmVkCityZWdpb25zIG9mIGEgRE0gZGV2aWNlLgkgSWYgbm8gcmVnaW9ucyBhcmUgZGVmaW5lZCBubyBzdGF0aXN0aWNzIGFyZQorY29sbGVjdGVkIHNvIHRoZXJlIGlzbid0IGFueSBwZXJmb3JtYW5jZSBpbXBhY3QuICBPbmx5IGJpby1iYXNlZCBETQorZGV2aWNlcyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZC4KKworRWFjaCB1c2VyLWRlZmluZWQgcmVnaW9uIHNwZWNpZmllcyBhIHN0YXJ0aW5nIHNlY3RvciwgbGVuZ3RoIGFuZCBzdGVwLgorSW5kaXZpZHVhbCBzdGF0aXN0aWNzIHdpbGwgYmUgY29sbGVjdGVkIGZvciBlYWNoIHN0ZXAtc2l6ZWQgYXJlYSB3aXRoaW4KK3RoZSByYW5nZSBzcGVjaWZpZWQuCisKK1RoZSBJL08gc3RhdGlzdGljcyBjb3VudGVycyBmb3IgZWFjaCBzdGVwLXNpemVkIGFyZWEgb2YgYSByZWdpb24gYXJlCitpbiB0aGUgc2FtZSBmb3JtYXQgYXMgL3N5cy9ibG9jay8qL3N0YXQgb3IgL3Byb2MvZGlza3N0YXRzIChzZWU6CitEb2N1bWVudGF0aW9uL2lvc3RhdHMudHh0KS4gIEJ1dCB0d28gZXh0cmEgY291bnRlcnMgKDEyIGFuZCAxMykgYXJlCitwcm92aWRlZDogdG90YWwgdGltZSBzcGVudCByZWFkaW5nIGFuZCB3cml0aW5nLiAgV2hlbiB0aGUgaGlzdG9ncmFtCithcmd1bWVudCBpcyB1c2VkLCB0aGUgMTR0aCBwYXJhbWV0ZXIgaXMgcmVwb3J0ZWQgdGhhdCByZXByZXNlbnRzIHRoZQoraGlzdG9ncmFtIG9mIGxhdGVuY2llcy4gIEFsbCB0aGVzZSBjb3VudGVycyBtYXkgYmUgYWNjZXNzZWQgYnkgc2VuZGluZwordGhlIEBzdGF0c19wcmludCBtZXNzYWdlIHRvIHRoZSBhcHByb3ByaWF0ZSBETSBkZXZpY2UgdmlhIGRtc2V0dXAuCisKK1RoZSByZXBvcnRlZCB0aW1lcyBhcmUgaW4gbWlsbGlzZWNvbmRzIGFuZCB0aGUgZ3JhbnVsYXJpdHkgZGVwZW5kcyBvbgordGhlIGtlcm5lbCB0aWNrcy4gIFdoZW4gdGhlIG9wdGlvbiBwcmVjaXNlX3RpbWVzdGFtcHMgaXMgdXNlZCwgdGhlCityZXBvcnRlZCB0aW1lcyBhcmUgaW4gbmFub3NlY29uZHMuCisKK0VhY2ggcmVnaW9uIGhhcyBhIGNvcnJlc3BvbmRpbmcgdW5pcXVlIGlkZW50aWZpZXIsIHdoaWNoIHdlIGNhbGwgYQorcmVnaW9uX2lkLCB0aGF0IGlzIGFzc2lnbmVkIHdoZW4gdGhlIHJlZ2lvbiBpcyBjcmVhdGVkLgkgVGhlIHJlZ2lvbl9pZAorbXVzdCBiZSBzdXBwbGllZCB3aGVuIHF1ZXJ5aW5nIHN0YXRpc3RpY3MgYWJvdXQgdGhlIHJlZ2lvbiwgZGVsZXRpbmcgdGhlCityZWdpb24sIGV0Yy4gIFVuaXF1ZSByZWdpb25faWRzIGVuYWJsZSBtdWx0aXBsZSB1c2Vyc3BhY2UgcHJvZ3JhbXMgdG8KK3JlcXVlc3QgYW5kIHByb2Nlc3Mgc3RhdGlzdGljcyBmb3IgdGhlIHNhbWUgRE0gZGV2aWNlIHdpdGhvdXQgc3RlcHBpbmcKK29uIGVhY2ggb3RoZXIncyBkYXRhLgorCitUaGUgY3JlYXRpb24gb2YgRE0gc3RhdGlzdGljcyB3aWxsIGFsbG9jYXRlIG1lbW9yeSB2aWEga21hbGxvYyBvcgorZmFsbGJhY2sgdG8gdXNpbmcgdm1hbGxvYyBzcGFjZS4gIEF0IG1vc3QsIDEvNCBvZiB0aGUgb3ZlcmFsbCBzeXN0ZW0KK21lbW9yeSBtYXkgYmUgYWxsb2NhdGVkIGJ5IERNIHN0YXRpc3RpY3MuICBUaGUgYWRtaW4gY2FuIHNlZSBob3cgbXVjaAorbWVtb3J5IGlzIHVzZWQgYnkgcmVhZGluZworL3N5cy9tb2R1bGUvZG1fbW9kL3BhcmFtZXRlcnMvc3RhdHNfY3VycmVudF9hbGxvY2F0ZWRfYnl0ZXMKKworTWVzc2FnZXMKKz09PT09PT09CisKKyAgICBAc3RhdHNfY3JlYXRlIDxyYW5nZT4gPHN0ZXA+CisJCVs8bnVtYmVyX29mX29wdGlvbmFsX2FyZ3VtZW50cz4gPG9wdGlvbmFsX2FyZ3VtZW50cz4uLi5dCisJCVs8cHJvZ3JhbV9pZD4gWzxhdXhfZGF0YT5dXQorCisJQ3JlYXRlIGEgbmV3IHJlZ2lvbiBhbmQgcmV0dXJuIHRoZSByZWdpb25faWQuCisKKwk8cmFuZ2U+CisJICAiLSIgLSB3aG9sZSBkZXZpY2UKKwkgICI8c3RhcnRfc2VjdG9yPis8bGVuZ3RoPiIgLSBhIHJhbmdlIG9mIDxsZW5ndGg+IDUxMi1ieXRlIHNlY3RvcnMKKwkJCQkgICAgICBzdGFydGluZyB3aXRoIDxzdGFydF9zZWN0b3I+LgorCisJPHN0ZXA+CisJICAiPGFyZWFfc2l6ZT4iIC0gdGhlIHJhbmdlIGlzIHN1YmRpdmlkZWQgaW50byBhcmVhcyBlYWNoIGNvbnRhaW5pbmcKKwkJCSAgPGFyZWFfc2l6ZT4gc2VjdG9ycy4KKwkgICIvPG51bWJlcl9vZl9hcmVhcz4iIC0gdGhlIHJhbmdlIGlzIHN1YmRpdmlkZWQgaW50byB0aGUgc3BlY2lmaWVkCisJCQkJIG51bWJlciBvZiBhcmVhcy4KKworCTxudW1iZXJfb2Zfb3B0aW9uYWxfYXJndW1lbnRzPgorCSAgVGhlIG51bWJlciBvZiBvcHRpb25hbCBhcmd1bWVudHMKKworCTxvcHRpb25hbF9hcmd1bWVudHM+CisJICBUaGUgZm9sbG93aW5nIG9wdGlvbmFsIGFyZ3VtZW50cyBhcmUgc3VwcG9ydGVkCisJICBwcmVjaXNlX3RpbWVzdGFtcHMgLSB1c2UgcHJlY2lzZSB0aW1lciB3aXRoIG5hbm9zZWNvbmQgcmVzb2x1dGlvbgorCQlpbnN0ZWFkIG9mIHRoZSAiamlmZmllcyIgdmFyaWFibGUuICBXaGVuIHRoaXMgYXJndW1lbnQgaXMKKwkJdXNlZCwgdGhlIHJlc3VsdGluZyB0aW1lcyBhcmUgaW4gbmFub3NlY29uZHMgaW5zdGVhZCBvZgorCQltaWxsaXNlY29uZHMuICBQcmVjaXNlIHRpbWVzdGFtcHMgYXJlIGEgbGl0dGxlIGJpdCBzbG93ZXIKKwkJdG8gb2J0YWluIHRoYW4gamlmZmllcy1iYXNlZCB0aW1lc3RhbXBzLgorCSAgaGlzdG9ncmFtOm4xLG4yLG4zLG40LC4uLiAtIGNvbGxlY3QgaGlzdG9ncmFtIG9mIGxhdGVuY2llcy4gIFRoZQorCQludW1iZXJzIG4xLCBuMiwgZXRjIGFyZSB0aW1lcyB0aGF0IHJlcHJlc2VudCB0aGUgYm91bmRhcmllcworCQlvZiB0aGUgaGlzdG9ncmFtLiAgSWYgcHJlY2lzZV90aW1lc3RhbXBzIGlzIG5vdCB1c2VkLCB0aGUKKwkJdGltZXMgYXJlIGluIG1pbGxpc2Vjb25kcywgb3RoZXJ3aXNlIHRoZXkgYXJlIGluCisJCW5hbm9zZWNvbmRzLiAgRm9yIGVhY2ggcmFuZ2UsIHRoZSBrZXJuZWwgd2lsbCByZXBvcnQgdGhlCisJCW51bWJlciBvZiByZXF1ZXN0cyB0aGF0IGNvbXBsZXRlZCB3aXRoaW4gdGhpcyByYW5nZS4gRm9yCisJCWV4YW1wbGUsIGlmIHdlIHVzZSAiaGlzdG9ncmFtOjEwLDIwLDMwIiwgdGhlIGtlcm5lbCB3aWxsCisJCXJlcG9ydCBmb3VyIG51bWJlcnMgYTpiOmM6ZC4gYSBpcyB0aGUgbnVtYmVyIG9mIHJlcXVlc3RzCisJCXRoYXQgdG9vayAwLTEwIG1zIHRvIGNvbXBsZXRlLCBiIGlzIHRoZSBudW1iZXIgb2YgcmVxdWVzdHMKKwkJdGhhdCB0b29rIDEwLTIwIG1zIHRvIGNvbXBsZXRlLCBjIGlzIHRoZSBudW1iZXIgb2YgcmVxdWVzdHMKKwkJdGhhdCB0b29rIDIwLTMwIG1zIHRvIGNvbXBsZXRlIGFuZCBkIGlzIHRoZSBudW1iZXIgb2YKKwkJcmVxdWVzdHMgdGhhdCB0b29rIG1vcmUgdGhhbiAzMCBtcyB0byBjb21wbGV0ZS4KKworCTxwcm9ncmFtX2lkPgorCSAgQW4gb3B0aW9uYWwgcGFyYW1ldGVyLiAgQSBuYW1lIHRoYXQgdW5pcXVlbHkgaWRlbnRpZmllcworCSAgdGhlIHVzZXJzcGFjZSBvd25lciBvZiB0aGUgcmFuZ2UuICBUaGlzIGdyb3VwcyByYW5nZXMgdG9nZXRoZXIKKwkgIHNvIHRoYXQgdXNlcnNwYWNlIHByb2dyYW1zIGNhbiBpZGVudGlmeSB0aGUgcmFuZ2VzIHRoZXkKKwkgIGNyZWF0ZWQgYW5kIGlnbm9yZSB0aG9zZSBjcmVhdGVkIGJ5IG90aGVycy4KKwkgIFRoZSBrZXJuZWwgcmV0dXJucyB0aGlzIHN0cmluZyBiYWNrIGluIHRoZSBvdXRwdXQgb2YKKwkgIEBzdGF0c19saXN0IG1lc3NhZ2UsIGJ1dCBpdCBkb2Vzbid0IHVzZSBpdCBmb3IgYW55dGhpbmcgZWxzZS4KKwkgIElmIHdlIG9taXQgdGhlIG51bWJlciBvZiBvcHRpb25hbCBhcmd1bWVudHMsIHByb2dyYW0gaWQgbXVzdCBub3QKKwkgIGJlIGEgbnVtYmVyLCBvdGhlcndpc2UgaXQgd291bGQgYmUgaW50ZXJwcmV0ZWQgYXMgdGhlIG51bWJlciBvZgorCSAgb3B0aW9uYWwgYXJndW1lbnRzLgorCisJPGF1eF9kYXRhPgorCSAgQW4gb3B0aW9uYWwgcGFyYW1ldGVyLiAgQSB3b3JkIHRoYXQgcHJvdmlkZXMgYXV4aWxpYXJ5IGRhdGEKKwkgIHRoYXQgaXMgdXNlZnVsIHRvIHRoZSBjbGllbnQgcHJvZ3JhbSB0aGF0IGNyZWF0ZWQgdGhlIHJhbmdlLgorCSAgVGhlIGtlcm5lbCByZXR1cm5zIHRoaXMgc3RyaW5nIGJhY2sgaW4gdGhlIG91dHB1dCBvZgorCSAgQHN0YXRzX2xpc3QgbWVzc2FnZSwgYnV0IGl0IGRvZXNuJ3QgdXNlIHRoaXMgdmFsdWUgZm9yIGFueXRoaW5nLgorCisgICAgQHN0YXRzX2RlbGV0ZSA8cmVnaW9uX2lkPgorCisJRGVsZXRlIHRoZSByZWdpb24gd2l0aCB0aGUgc3BlY2lmaWVkIGlkLgorCisJPHJlZ2lvbl9pZD4KKwkgIHJlZ2lvbl9pZCByZXR1cm5lZCBmcm9tIEBzdGF0c19jcmVhdGUKKworICAgIEBzdGF0c19jbGVhciA8cmVnaW9uX2lkPgorCisJQ2xlYXIgYWxsIHRoZSBjb3VudGVycyBleGNlcHQgdGhlIGluLWZsaWdodCBpL28gY291bnRlcnMuCisKKwk8cmVnaW9uX2lkPgorCSAgcmVnaW9uX2lkIHJldHVybmVkIGZyb20gQHN0YXRzX2NyZWF0ZQorCisgICAgQHN0YXRzX2xpc3QgWzxwcm9ncmFtX2lkPl0KKworCUxpc3QgYWxsIHJlZ2lvbnMgcmVnaXN0ZXJlZCB3aXRoIEBzdGF0c19jcmVhdGUuCisKKwk8cHJvZ3JhbV9pZD4KKwkgIEFuIG9wdGlvbmFsIHBhcmFtZXRlci4KKwkgIElmIHRoaXMgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCwgb25seSBtYXRjaGluZyByZWdpb25zCisJICBhcmUgcmV0dXJuZWQuCisJICBJZiBpdCBpcyBub3Qgc3BlY2lmaWVkLCBhbGwgcmVnaW9ucyBhcmUgcmV0dXJuZWQuCisKKwlPdXRwdXQgZm9ybWF0OgorCSAgPHJlZ2lvbl9pZD46IDxzdGFydF9zZWN0b3I+KzxsZW5ndGg+IDxzdGVwPiA8cHJvZ3JhbV9pZD4gPGF1eF9kYXRhPgorCSAgICAgICAgcHJlY2lzZV90aW1lc3RhbXBzIGhpc3RvZ3JhbTpuMSxuMixuMywuLi4KKworCVRoZSBzdHJpbmdzICJwcmVjaXNlX3RpbWVzdGFtcHMiIGFuZCAiaGlzdG9ncmFtIiBhcmUgcHJpbnRlZCBvbmx5CisJaWYgdGhleSB3ZXJlIHNwZWNpZmllZCB3aGVuIGNyZWF0aW5nIHRoZSByZWdpb24uCisKKyAgICBAc3RhdHNfcHJpbnQgPHJlZ2lvbl9pZD4gWzxzdGFydGluZ19saW5lPiA8bnVtYmVyX29mX2xpbmVzPl0KKworCVByaW50IGNvdW50ZXJzIGZvciBlYWNoIHN0ZXAtc2l6ZWQgYXJlYSBvZiBhIHJlZ2lvbi4KKworCTxyZWdpb25faWQ+CisJICByZWdpb25faWQgcmV0dXJuZWQgZnJvbSBAc3RhdHNfY3JlYXRlCisKKwk8c3RhcnRpbmdfbGluZT4KKwkgIFRoZSBpbmRleCBvZiB0aGUgc3RhcnRpbmcgbGluZSBpbiB0aGUgb3V0cHV0LgorCSAgSWYgb21pdHRlZCwgYWxsIGxpbmVzIGFyZSByZXR1cm5lZC4KKworCTxudW1iZXJfb2ZfbGluZXM+CisJICBUaGUgbnVtYmVyIG9mIGxpbmVzIHRvIGluY2x1ZGUgaW4gdGhlIG91dHB1dC4KKwkgIElmIG9taXR0ZWQsIGFsbCBsaW5lcyBhcmUgcmV0dXJuZWQuCisKKwlPdXRwdXQgZm9ybWF0IGZvciBlYWNoIHN0ZXAtc2l6ZWQgYXJlYSBvZiBhIHJlZ2lvbjoKKworCSAgPHN0YXJ0X3NlY3Rvcj4rPGxlbmd0aD4gY291bnRlcnMKKworCSAgVGhlIGZpcnN0IDExIGNvdW50ZXJzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcworCSAgL3N5cy9ibG9jay8qL3N0YXQgb3IgL3Byb2MvZGlza3N0YXRzLgorCisJICBQbGVhc2UgcmVmZXIgdG8gRG9jdW1lbnRhdGlvbi9pb3N0YXRzLnR4dCBmb3IgZGV0YWlscy4KKworCSAgMS4gdGhlIG51bWJlciBvZiByZWFkcyBjb21wbGV0ZWQKKwkgIDIuIHRoZSBudW1iZXIgb2YgcmVhZHMgbWVyZ2VkCisJICAzLiB0aGUgbnVtYmVyIG9mIHNlY3RvcnMgcmVhZAorCSAgNC4gdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc3BlbnQgcmVhZGluZworCSAgNS4gdGhlIG51bWJlciBvZiB3cml0ZXMgY29tcGxldGVkCisJICA2LiB0aGUgbnVtYmVyIG9mIHdyaXRlcyBtZXJnZWQKKwkgIDcuIHRoZSBudW1iZXIgb2Ygc2VjdG9ycyB3cml0dGVuCisJICA4LiB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzcGVudCB3cml0aW5nCisJICA5LiB0aGUgbnVtYmVyIG9mIEkvT3MgY3VycmVudGx5IGluIHByb2dyZXNzCisJICAxMC4gdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc3BlbnQgZG9pbmcgSS9PcworCSAgMTEuIHRoZSB3ZWlnaHRlZCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNwZW50IGRvaW5nIEkvT3MKKworCSAgQWRkaXRpb25hbCBjb3VudGVyczoKKwkgIDEyLiB0aGUgdG90YWwgdGltZSBzcGVudCByZWFkaW5nIGluIG1pbGxpc2Vjb25kcworCSAgMTMuIHRoZSB0b3RhbCB0aW1lIHNwZW50IHdyaXRpbmcgaW4gbWlsbGlzZWNvbmRzCisKKyAgICBAc3RhdHNfcHJpbnRfY2xlYXIgPHJlZ2lvbl9pZD4gWzxzdGFydGluZ19saW5lPiA8bnVtYmVyX29mX2xpbmVzPl0KKworCUF0b21pY2FsbHkgcHJpbnQgYW5kIHRoZW4gY2xlYXIgYWxsIHRoZSBjb3VudGVycyBleGNlcHQgdGhlCisJaW4tZmxpZ2h0IGkvbyBjb3VudGVycy4JIFVzZWZ1bCB3aGVuIHRoZSBjbGllbnQgY29uc3VtaW5nIHRoZQorCXN0YXRpc3RpY3MgZG9lcyBub3Qgd2FudCB0byBsb3NlIGFueSBzdGF0aXN0aWNzICh0aG9zZSB1cGRhdGVkCisJYmV0d2VlbiBwcmludGluZyBhbmQgY2xlYXJpbmcpLgorCisJPHJlZ2lvbl9pZD4KKwkgIHJlZ2lvbl9pZCByZXR1cm5lZCBmcm9tIEBzdGF0c19jcmVhdGUKKworCTxzdGFydGluZ19saW5lPgorCSAgVGhlIGluZGV4IG9mIHRoZSBzdGFydGluZyBsaW5lIGluIHRoZSBvdXRwdXQuCisJICBJZiBvbWl0dGVkLCBhbGwgbGluZXMgYXJlIHByaW50ZWQgYW5kIHRoZW4gY2xlYXJlZC4KKworCTxudW1iZXJfb2ZfbGluZXM+CisJICBUaGUgbnVtYmVyIG9mIGxpbmVzIHRvIHByb2Nlc3MuCisJICBJZiBvbWl0dGVkLCBhbGwgbGluZXMgYXJlIHByaW50ZWQgYW5kIHRoZW4gY2xlYXJlZC4KKworICAgIEBzdGF0c19zZXRfYXV4IDxyZWdpb25faWQ+IDxhdXhfZGF0YT4KKworCVN0b3JlIGF1eGlsaWFyeSBkYXRhIGF1eF9kYXRhIGZvciB0aGUgc3BlY2lmaWVkIHJlZ2lvbi4KKworCTxyZWdpb25faWQ+CisJICByZWdpb25faWQgcmV0dXJuZWQgZnJvbSBAc3RhdHNfY3JlYXRlCisKKwk8YXV4X2RhdGE+CisJICBUaGUgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyBkYXRhIHdoaWNoIGlzIHVzZWZ1bCB0byB0aGUgY2xpZW50CisJICBwcm9ncmFtIHRoYXQgY3JlYXRlZCB0aGUgcmFuZ2UuICBUaGUga2VybmVsIHJldHVybnMgdGhpcworCSAgc3RyaW5nIGJhY2sgaW4gdGhlIG91dHB1dCBvZiBAc3RhdHNfbGlzdCBtZXNzYWdlLCBidXQgaXQKKwkgIGRvZXNuJ3QgdXNlIHRoaXMgdmFsdWUgZm9yIGFueXRoaW5nLgorCitFeGFtcGxlcworPT09PT09PT0KKworU3ViZGl2aWRlIHRoZSBETSBkZXZpY2UgJ3ZvbCcgaW50byAxMDAgcGllY2VzIGFuZCBzdGFydCBjb2xsZWN0aW5nCitzdGF0aXN0aWNzIG9uIHRoZW06CisKKyAgZG1zZXR1cCBtZXNzYWdlIHZvbCAwIEBzdGF0c19jcmVhdGUgLSAvMTAwCisKK1NldCB0aGUgYXV4aWxsYXJ5IGRhdGEgc3RyaW5nIHRvICJmb28gYmFyIGJheiIgKHRoZSBlc2NhcGUgZm9yIGVhY2gKK3NwYWNlIG11c3QgYWxzbyBiZSBlc2NhcGVkLCBvdGhlcndpc2UgdGhlIHNoZWxsIHdpbGwgY29uc3VtZSB0aGVtKToKKworICBkbXNldHVwIG1lc3NhZ2Ugdm9sIDAgQHN0YXRzX3NldF9hdXggMCBmb29cXCBiYXJcXCBiYXoKKworTGlzdCB0aGUgc3RhdGlzdGljczoKKworICBkbXNldHVwIG1lc3NhZ2Ugdm9sIDAgQHN0YXRzX2xpc3QKKworUHJpbnQgdGhlIHN0YXRpc3RpY3M6CisKKyAgZG1zZXR1cCBtZXNzYWdlIHZvbCAwIEBzdGF0c19wcmludCAwCisKK0RlbGV0ZSB0aGUgc3RhdGlzdGljczoKKworICBkbXNldHVwIG1lc3NhZ2Ugdm9sIDAgQHN0YXRzX2RlbGV0ZSAwCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvc3RyaXBlZC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvc3RyaXBlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVmM2I5MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9zdHJpcGVkLnR4dApAQCAtMCwwICsxLDU3IEBACitkbS1zdHJpcGUKKz09PT09PT09PQorCitEZXZpY2UtTWFwcGVyJ3MgInN0cmlwZWQiIHRhcmdldCBpcyB1c2VkIHRvIGNyZWF0ZSBhIHN0cmlwZWQgKGkuZS4gUkFJRC0wKQorZGV2aWNlIGFjcm9zcyBvbmUgb3IgbW9yZSB1bmRlcmx5aW5nIGRldmljZXMuIERhdGEgaXMgd3JpdHRlbiBpbiAiY2h1bmtzIiwKK3dpdGggY29uc2VjdXRpdmUgY2h1bmtzIHJvdGF0aW5nIGFtb25nIHRoZSB1bmRlcmx5aW5nIGRldmljZXMuIFRoaXMgY2FuCitwb3RlbnRpYWxseSBwcm92aWRlIGltcHJvdmVkIEkvTyB0aHJvdWdocHV0IGJ5IHV0aWxpemluZyBzZXZlcmFsIHBoeXNpY2FsCitkZXZpY2VzIGluIHBhcmFsbGVsLgorCitQYXJhbWV0ZXJzOiA8bnVtIGRldnM+IDxjaHVuayBzaXplPiBbPGRldiBwYXRoPiA8b2Zmc2V0Pl0rCisgICAgPG51bSBkZXZzPjogTnVtYmVyIG9mIHVuZGVybHlpbmcgZGV2aWNlcy4KKyAgICA8Y2h1bmsgc2l6ZT46IFNpemUgb2YgZWFjaCBjaHVuayBvZiBkYXRhLiBNdXN0IGJlIGF0IGxlYXN0IGFzCisgICAgICAgICAgICAgICAgICBsYXJnZSBhcyB0aGUgc3lzdGVtJ3MgUEFHRV9TSVpFLgorICAgIDxkZXYgcGF0aD46IEZ1bGwgcGF0aG5hbWUgdG8gdGhlIHVuZGVybHlpbmcgYmxvY2stZGV2aWNlLCBvciBhCisgICAgICAgICAgICAgICAgIm1ham9yOm1pbm9yIiBkZXZpY2UtbnVtYmVyLgorICAgIDxvZmZzZXQ+OiBTdGFydGluZyBzZWN0b3Igd2l0aGluIHRoZSBkZXZpY2UuCisKK09uZSBvciBtb3JlIHVuZGVybHlpbmcgZGV2aWNlcyBjYW4gYmUgc3BlY2lmaWVkLiBUaGUgc3RyaXBlZCBkZXZpY2Ugc2l6ZSBtdXN0CitiZSBhIG11bHRpcGxlIG9mIHRoZSBjaHVuayBzaXplIG11bHRpcGxpZWQgYnkgdGhlIG51bWJlciBvZiB1bmRlcmx5aW5nIGRldmljZXMuCisKKworRXhhbXBsZSBzY3JpcHRzCis9PT09PT09PT09PT09PT0KKworW1sKKyMhL3Vzci9iaW4vcGVybCAtdworIyBDcmVhdGUgYSBzdHJpcGVkIGRldmljZSBhY3Jvc3MgYW55IG51bWJlciBvZiB1bmRlcmx5aW5nIGRldmljZXMuIFRoZSBkZXZpY2UKKyMgd2lsbCBiZSBjYWxsZWQgInN0cmlwZV9kZXYiIGFuZCBoYXZlIGEgY2h1bmstc2l6ZSBvZiAxMjhrLgorCitteSAkY2h1bmtfc2l6ZSA9IDEyOCAqIDI7CitteSAkZGV2X25hbWUgPSAic3RyaXBlX2RldiI7CitteSAkbnVtX2RldnMgPSBAQVJHVjsKK215IEBkZXZzID0gQEFSR1Y7CitteSAoJG1pbl9kZXZfc2l6ZSwgJHN0cmlwZV9kZXZfc2l6ZSwgJGkpOworCitpZiAoISRudW1fZGV2cykgeworICAgICAgICBkaWUoIlNwZWNpZnkgYXQgbGVhc3Qgb25lIGRldmljZVxuIik7Cit9CisKKyRtaW5fZGV2X3NpemUgPSBgYmxvY2tkZXYgLS1nZXRzaXplICRkZXZzWzBdYDsKK2ZvciAoJGkgPSAxOyAkaSA8ICRudW1fZGV2czsgJGkrKykgeworICAgICAgICBteSAkdGhpc19zaXplID0gYGJsb2NrZGV2IC0tZ2V0c2l6ZSAkZGV2c1skaV1gOworICAgICAgICAkbWluX2Rldl9zaXplID0gKCRtaW5fZGV2X3NpemUgPCAkdGhpc19zaXplKSA/CisgICAgICAgICAgICAgICAgICAgICAgICAkbWluX2Rldl9zaXplIDogJHRoaXNfc2l6ZTsKK30KKworJHN0cmlwZV9kZXZfc2l6ZSA9ICRtaW5fZGV2X3NpemUgKiAkbnVtX2RldnM7Ciskc3RyaXBlX2Rldl9zaXplIC09ICRzdHJpcGVfZGV2X3NpemUgJSAoJGNodW5rX3NpemUgKiAkbnVtX2RldnMpOworCiskdGFibGUgPSAiMCAkc3RyaXBlX2Rldl9zaXplIHN0cmlwZWQgJG51bV9kZXZzICRjaHVua19zaXplIjsKK2ZvciAoJGkgPSAwOyAkaSA8ICRudW1fZGV2czsgJGkrKykgeworICAgICAgICAkdGFibGUgLj0gIiAkZGV2c1skaV0gMCI7Cit9CisKK2BlY2hvICR0YWJsZSB8IGRtc2V0dXAgY3JlYXRlICRkZXZfbmFtZWA7CitdXQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvc3dpdGNoLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci9zd2l0Y2gudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyNDgzNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvc3dpdGNoLnR4dApAQCAtMCwwICsxLDEzOCBAQAorZG0tc3dpdGNoCis9PT09PT09PT0KKworVGhlIGRldmljZS1tYXBwZXIgc3dpdGNoIHRhcmdldCBjcmVhdGVzIGEgZGV2aWNlIHRoYXQgc3VwcG9ydHMgYW4KK2FyYml0cmFyeSBtYXBwaW5nIG9mIGZpeGVkLXNpemUgcmVnaW9ucyBvZiBJL08gYWNyb3NzIGEgZml4ZWQgc2V0IG9mCitwYXRocy4gIFRoZSBwYXRoIHVzZWQgZm9yIGFueSBzcGVjaWZpYyByZWdpb24gY2FuIGJlIHN3aXRjaGVkCitkeW5hbWljYWxseSBieSBzZW5kaW5nIHRoZSB0YXJnZXQgYSBtZXNzYWdlLgorCitJdCBtYXBzIEkvTyB0byB1bmRlcmx5aW5nIGJsb2NrIGRldmljZXMgZWZmaWNpZW50bHkgd2hlbiB0aGVyZSBpcyBhIGxhcmdlCitudW1iZXIgb2YgZml4ZWQtc2l6ZWQgYWRkcmVzcyByZWdpb25zIGJ1dCB0aGVyZSBpcyBubyBzaW1wbGUgcGF0dGVybgordGhhdCB3b3VsZCBhbGxvdyBmb3IgYSBjb21wYWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtYXBwaW5nIHN1Y2ggYXMKK2RtLXN0cmlwZS4KKworQmFja2dyb3VuZAorLS0tLS0tLS0tLQorCitEZWxsIEVxdWFsTG9naWMgYW5kIHNvbWUgb3RoZXIgaVNDU0kgc3RvcmFnZSBhcnJheXMgdXNlIGEgZGlzdHJpYnV0ZWQKK2ZyYW1lbGVzcyBhcmNoaXRlY3R1cmUuICBJbiB0aGlzIGFyY2hpdGVjdHVyZSwgdGhlIHN0b3JhZ2UgZ3JvdXAKK2NvbnNpc3RzIG9mIGEgbnVtYmVyIG9mIGRpc3RpbmN0IHN0b3JhZ2UgYXJyYXlzICgibWVtYmVycyIpIGVhY2ggaGF2aW5nCitpbmRlcGVuZGVudCBjb250cm9sbGVycywgZGlzayBzdG9yYWdlIGFuZCBuZXR3b3JrIGFkYXB0ZXJzLiAgV2hlbiBhIExVTgoraXMgY3JlYXRlZCBpdCBpcyBzcHJlYWQgYWNyb3NzIG11bHRpcGxlIG1lbWJlcnMuICBUaGUgZGV0YWlscyBvZiB0aGUKK3NwcmVhZGluZyBhcmUgaGlkZGVuIGZyb20gaW5pdGlhdG9ycyBjb25uZWN0ZWQgdG8gdGhpcyBzdG9yYWdlIHN5c3RlbS4KK1RoZSBzdG9yYWdlIGdyb3VwIGV4cG9zZXMgYSBzaW5nbGUgdGFyZ2V0IGRpc2NvdmVyeSBwb3J0YWwsIG5vIG1hdHRlcgoraG93IG1hbnkgbWVtYmVycyBhcmUgYmVpbmcgdXNlZC4gIFdoZW4gaVNDU0kgc2Vzc2lvbnMgYXJlIGNyZWF0ZWQsIGVhY2gKK3Nlc3Npb24gaXMgY29ubmVjdGVkIHRvIGFuIGV0aCBwb3J0IG9uIGEgc2luZ2xlIG1lbWJlci4gIERhdGEgdG8gYSBMVU4KK2NhbiBiZSBzZW50IG9uIGFueSBpU0NTSSBzZXNzaW9uLCBhbmQgaWYgdGhlIGJsb2NrcyBiZWluZyBhY2Nlc3NlZCBhcmUKK3N0b3JlZCBvbiBhbm90aGVyIG1lbWJlciB0aGUgSS9PIHdpbGwgYmUgZm9yd2FyZGVkIGFzIHJlcXVpcmVkLiAgVGhpcworZm9yd2FyZGluZyBpcyBpbnZpc2libGUgdG8gdGhlIGluaXRpYXRvci4gIFRoZSBzdG9yYWdlIGxheW91dCBpcyBhbHNvCitkeW5hbWljLCBhbmQgdGhlIGJsb2NrcyBzdG9yZWQgb24gZGlzayBtYXkgYmUgbW92ZWQgZnJvbSBtZW1iZXIgdG8KK21lbWJlciBhcyBuZWVkZWQgdG8gYmFsYW5jZSB0aGUgbG9hZC4KKworVGhpcyBhcmNoaXRlY3R1cmUgc2ltcGxpZmllcyB0aGUgbWFuYWdlbWVudCBhbmQgY29uZmlndXJhdGlvbiBvZiBib3RoCit0aGUgc3RvcmFnZSBncm91cCBhbmQgaW5pdGlhdG9ycy4gIEluIGEgbXVsdGlwYXRoaW5nIGNvbmZpZ3VyYXRpb24sIGl0CitpcyBwb3NzaWJsZSB0byBzZXQgdXAgbXVsdGlwbGUgaVNDU0kgc2Vzc2lvbnMgdG8gdXNlIG11bHRpcGxlIG5ldHdvcmsKK2ludGVyZmFjZXMgb24gYm90aCB0aGUgaG9zdCBhbmQgdGFyZ2V0IHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZQoraW5jcmVhc2VkIG5ldHdvcmsgYmFuZHdpZHRoLiAgQW4gaW5pdGlhdG9yIGNvdWxkIHVzZSBhIHNpbXBsZSByb3VuZAorcm9iaW4gYWxnb3JpdGhtIHRvIHNlbmQgSS9PIGFjcm9zcyBhbGwgcGF0aHMgYW5kIGxldCB0aGUgc3RvcmFnZSBhcnJheQorbWVtYmVycyBmb3J3YXJkIGl0IGFzIG5lY2Vzc2FyeSwgYnV0IHRoZXJlIGlzIGEgcGVyZm9ybWFuY2UgYWR2YW50YWdlIHRvCitzZW5kaW5nIGRhdGEgZGlyZWN0bHkgdG8gdGhlIGNvcnJlY3QgbWVtYmVyLgorCitBIGRldmljZS1tYXBwZXIgdGFibGUgYWxyZWFkeSBsZXRzIHlvdSBtYXAgZGlmZmVyZW50IHJlZ2lvbnMgb2YgYQorZGV2aWNlIG9udG8gZGlmZmVyZW50IHRhcmdldHMuICBIb3dldmVyIGluIHRoaXMgYXJjaGl0ZWN0dXJlIHRoZSBMVU4gaXMKK3NwcmVhZCB3aXRoIGFuIGFkZHJlc3MgcmVnaW9uIHNpemUgb24gdGhlIG9yZGVyIG9mIDEwcyBvZiBNQnMsIHdoaWNoCittZWFucyB0aGUgcmVzdWx0aW5nIHRhYmxlIGNvdWxkIGhhdmUgbW9yZSB0aGFuIGEgbWlsbGlvbiBlbnRyaWVzIGFuZAorY29uc3VtZSBmYXIgdG9vIG11Y2ggbWVtb3J5LgorCitVc2luZyB0aGlzIGRldmljZS1tYXBwZXIgc3dpdGNoIHRhcmdldCB3ZSBjYW4gbm93IGJ1aWxkIGEgdHdvLWxheWVyCitkZXZpY2UgaGllcmFyY2h5OgorCisgICAgVXBwZXIgVGllciAtIERldGVybWluZSB3aGljaCBhcnJheSBtZW1iZXIgdGhlIEkvTyBzaG91bGQgYmUgc2VudCB0by4KKyAgICBMb3dlciBUaWVyIC0gTG9hZCBiYWxhbmNlIGFtb25nc3QgcGF0aHMgdG8gYSBwYXJ0aWN1bGFyIG1lbWJlci4KKworVGhlIGxvd2VyIHRpZXIgY29uc2lzdHMgb2YgYSBzaW5nbGUgZG0gbXVsdGlwYXRoIGRldmljZSBmb3IgZWFjaCBtZW1iZXIuCitFYWNoIG9mIHRoZXNlIG11bHRpcGF0aCBkZXZpY2VzIGNvbnRhaW5zIHRoZSBzZXQgb2YgcGF0aHMgZGlyZWN0bHkgdG8KK3RoZSBhcnJheSBtZW1iZXIgaW4gb25lIHByaW9yaXR5IGdyb3VwLCBhbmQgbGV2ZXJhZ2VzIGV4aXN0aW5nIHBhdGgKK3NlbGVjdG9ycyB0byBsb2FkIGJhbGFuY2UgYW1vbmdzdCB0aGVzZSBwYXRocy4gIFdlIGFsc28gYnVpbGQgYQorbm9uLXByZWZlcnJlZCBwcmlvcml0eSBncm91cCBjb250YWluaW5nIHBhdGhzIHRvIG90aGVyIGFycmF5IG1lbWJlcnMgZm9yCitmYWlsb3ZlciByZWFzb25zLgorCitUaGUgdXBwZXIgdGllciBjb25zaXN0cyBvZiBhIHNpbmdsZSBkbS1zd2l0Y2ggZGV2aWNlLiAgVGhpcyBkZXZpY2UgdXNlcworYSBiaXRtYXAgdG8gbG9vayB1cCB0aGUgbG9jYXRpb24gb2YgdGhlIEkvTyBhbmQgY2hvb3NlIHRoZSBhcHByb3ByaWF0ZQorbG93ZXIgdGllciBkZXZpY2UgdG8gcm91dGUgdGhlIEkvTy4gIEJ5IHVzaW5nIGEgYml0bWFwIHdlIGFyZSBhYmxlIHRvCit1c2UgNCBiaXRzIGZvciBlYWNoIGFkZHJlc3MgcmFuZ2UgaW4gYSAxNiBtZW1iZXIgZ3JvdXAgKHdoaWNoIGlzIHZlcnkKK2xhcmdlIGZvciB1cykuICBUaGlzIGlzIGEgbXVjaCBkZW5zZXIgcmVwcmVzZW50YXRpb24gdGhhbiB0aGUgZG0gdGFibGUKK2ItdHJlZSBjYW4gYWNoaWV2ZS4KKworQ29uc3RydWN0aW9uIFBhcmFtZXRlcnMKKz09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICA8bnVtX3BhdGhzPiA8cmVnaW9uX3NpemU+IDxudW1fb3B0aW9uYWxfYXJncz4gWzxvcHRpb25hbF9hcmdzPi4uLl0KKyAgICBbPGRldl9wYXRoPiA8b2Zmc2V0Pl0rCisKKzxudW1fcGF0aHM+CisgICAgVGhlIG51bWJlciBvZiBwYXRocyBhY3Jvc3Mgd2hpY2ggdG8gZGlzdHJpYnV0ZSB0aGUgSS9PLgorCis8cmVnaW9uX3NpemU+CisgICAgVGhlIG51bWJlciBvZiA1MTItYnl0ZSBzZWN0b3JzIGluIGEgcmVnaW9uLiBFYWNoIHJlZ2lvbiBjYW4gYmUgcmVkaXJlY3RlZAorICAgIHRvIGFueSBvZiB0aGUgYXZhaWxhYmxlIHBhdGhzLgorCis8bnVtX29wdGlvbmFsX2FyZ3M+CisgICAgVGhlIG51bWJlciBvZiBvcHRpb25hbCBhcmd1bWVudHMuIEN1cnJlbnRseSwgbm8gb3B0aW9uYWwgYXJndW1lbnRzCisgICAgYXJlIHN1cHBvcnRlZCBhbmQgc28gdGhpcyBtdXN0IGJlIHplcm8uCisKKzxkZXZfcGF0aD4KKyAgICBUaGUgYmxvY2sgZGV2aWNlIHRoYXQgcmVwcmVzZW50cyBhIHNwZWNpZmljIHBhdGggdG8gdGhlIGRldmljZS4KKworPG9mZnNldD4KKyAgICBUaGUgb2Zmc2V0IG9mIHRoZSBzdGFydCBvZiBkYXRhIG9uIHRoZSBzcGVjaWZpYyA8ZGV2X3BhdGg+IChpbiB1bml0cworICAgIG9mIDUxMi1ieXRlIHNlY3RvcnMpLiBUaGlzIG51bWJlciBpcyBhZGRlZCB0byB0aGUgc2VjdG9yIG51bWJlciB3aGVuCisgICAgZm9yd2FyZGluZyB0aGUgcmVxdWVzdCB0byB0aGUgc3BlY2lmaWMgcGF0aC4gVHlwaWNhbGx5IGl0IGlzIHplcm8uCisKK01lc3NhZ2VzCis9PT09PT09PQorCitzZXRfcmVnaW9uX21hcHBpbmdzIDxpbmRleD46PHBhdGhfbnI+IFs8aW5kZXg+XTo8cGF0aF9ucj4gWzxpbmRleD5dOjxwYXRoX25yPi4uLgorCitNb2RpZnkgdGhlIHJlZ2lvbiB0YWJsZSBieSBzcGVjaWZ5aW5nIHdoaWNoIHJlZ2lvbnMgYXJlIHJlZGlyZWN0ZWQgdG8KK3doaWNoIHBhdGhzLgorCis8aW5kZXg+CisgICAgVGhlIHJlZ2lvbiBudW1iZXIgKHJlZ2lvbiBzaXplIHdhcyBzcGVjaWZpZWQgaW4gY29uc3RydWN0b3IgcGFyYW1ldGVycykuCisgICAgSWYgaW5kZXggaXMgb21pdHRlZCwgdGhlIG5leHQgcmVnaW9uIChwcmV2aW91cyBpbmRleCArIDEpIGlzIHVzZWQuCisgICAgRXhwcmVzc2VkIGluIGhleGFkZWNpbWFsIChXSVRIT1VUIGFueSBwcmVmaXggbGlrZSAweCkuCisKKzxwYXRoX25yPgorICAgIFRoZSBwYXRoIG51bWJlciBpbiB0aGUgcmFuZ2UgMCAuLi4gKDxudW1fcGF0aHM+IC0gMSkuCisgICAgRXhwcmVzc2VkIGluIGhleGFkZWNpbWFsIChXSVRIT1VUIGFueSBwcmVmaXggbGlrZSAweCkuCisKK1I8bj4sPG0+CisgICAgVGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHJlcGV0aXRpdmUgcGF0dGVybnMgdG8gYmUgbG9hZGVkIHF1aWNrbHkuIDxuPiBhbmQgPG0+CisgICAgYXJlIGhleGFkZWNpbWFsIG51bWJlcnMuIFRoZSBsYXN0IDxuPiBtYXBwaW5ncyBhcmUgcmVwZWF0ZWQgaW4gdGhlIG5leHQgPG0+CisgICAgc2xvdHMuCisKK1N0YXR1cworPT09PT09CisKK05vIHN0YXR1cyBsaW5lIGlzIHJlcG9ydGVkLgorCitFeGFtcGxlCis9PT09PT09CisKK0Fzc3VtZSB0aGF0IHlvdSBoYXZlIHZvbHVtZXMgdmcxL3N3aXRjaDAgdmcxL3N3aXRjaDEgdmcxL3N3aXRjaDIgd2l0aAordGhlIHNhbWUgc2l6ZS4KKworQ3JlYXRlIGEgc3dpdGNoIGRldmljZSB3aXRoIDY0a0IgcmVnaW9uIHNpemU6CisgICAgZG1zZXR1cCBjcmVhdGUgc3dpdGNoIC0tdGFibGUgIjAgYGJsb2NrZGV2IC0tZ2V0c2l6ZSAvZGV2L3ZnMS9zd2l0Y2gwYAorCXN3aXRjaCAzIDEyOCAwIC9kZXYvdmcxL3N3aXRjaDAgMCAvZGV2L3ZnMS9zd2l0Y2gxIDAgL2Rldi92ZzEvc3dpdGNoMiAwIgorCitTZXQgbWFwcGluZ3MgZm9yIHRoZSBmaXJzdCA3IGVudHJpZXMgdG8gcG9pbnQgdG8gZGV2aWNlcyBzd2l0Y2gwLCBzd2l0Y2gxLAorc3dpdGNoMiwgc3dpdGNoMCwgc3dpdGNoMSwgc3dpdGNoMiwgc3dpdGNoMToKKyAgICBkbXNldHVwIG1lc3NhZ2Ugc3dpdGNoIDAgc2V0X3JlZ2lvbl9tYXBwaW5ncyAwOjAgOjEgOjIgOjAgOjEgOjIgOjEKKworU2V0IHJlcGV0aXRpdmUgbWFwcGluZy4gVGhpcyBjb21tYW5kOgorICAgIGRtc2V0dXAgbWVzc2FnZSBzd2l0Y2ggMCBzZXRfcmVnaW9uX21hcHBpbmdzIDEwMDA6MSA6MiBSMiwxMAoraXMgZXF1aXZhbGVudCB0bzoKKyAgICBkbXNldHVwIG1lc3NhZ2Ugc3dpdGNoIDAgc2V0X3JlZ2lvbl9tYXBwaW5ncyAxMDAwOjEgOjIgOjEgOjIgOjEgOjIgOjEgOjIgXAorCToxIDoyIDoxIDoyIDoxIDoyIDoxIDoyIDoxIDoyCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci90aGluLXByb3Zpc2lvbmluZy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvdGhpbi1wcm92aXNpb25pbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2OTlhNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvdGhpbi1wcm92aXNpb25pbmcudHh0CkBAIC0wLDAgKzEsMzk2IEBACitJbnRyb2R1Y3Rpb24KKz09PT09PT09PT09PQorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyBhIGNvbGxlY3Rpb24gb2YgZGV2aWNlLW1hcHBlciB0YXJnZXRzIHRoYXQKK2JldHdlZW4gdGhlbSBpbXBsZW1lbnQgdGhpbi1wcm92aXNpb25pbmcgYW5kIHNuYXBzaG90cy4KKworVGhlIG1haW4gaGlnaGxpZ2h0IG9mIHRoaXMgaW1wbGVtZW50YXRpb24sIGNvbXBhcmVkIHRvIHRoZSBwcmV2aW91cworaW1wbGVtZW50YXRpb24gb2Ygc25hcHNob3RzLCBpcyB0aGF0IGl0IGFsbG93cyBtYW55IHZpcnR1YWwgZGV2aWNlcyB0bworYmUgc3RvcmVkIG9uIHRoZSBzYW1lIGRhdGEgdm9sdW1lLiAgVGhpcyBzaW1wbGlmaWVzIGFkbWluaXN0cmF0aW9uIGFuZAorYWxsb3dzIHRoZSBzaGFyaW5nIG9mIGRhdGEgYmV0d2VlbiB2b2x1bWVzLCB0aHVzIHJlZHVjaW5nIGRpc2sgdXNhZ2UuCisKK0Fub3RoZXIgc2lnbmlmaWNhbnQgZmVhdHVyZSBpcyBzdXBwb3J0IGZvciBhbiBhcmJpdHJhcnkgZGVwdGggb2YKK3JlY3Vyc2l2ZSBzbmFwc2hvdHMgKHNuYXBzaG90cyBvZiBzbmFwc2hvdHMgb2Ygc25hcHNob3RzIC4uLikuICBUaGUKK3ByZXZpb3VzIGltcGxlbWVudGF0aW9uIG9mIHNuYXBzaG90cyBkaWQgdGhpcyBieSBjaGFpbmluZyB0b2dldGhlcgorbG9va3VwIHRhYmxlcywgYW5kIHNvIHBlcmZvcm1hbmNlIHdhcyBPKGRlcHRoKS4gIFRoaXMgbmV3CitpbXBsZW1lbnRhdGlvbiB1c2VzIGEgc2luZ2xlIGRhdGEgc3RydWN0dXJlIHRvIGF2b2lkIHRoaXMgZGVncmFkYXRpb24KK3dpdGggZGVwdGguICBGcmFnbWVudGF0aW9uIG1heSBzdGlsbCBiZSBhbiBpc3N1ZSwgaG93ZXZlciwgaW4gc29tZQorc2NlbmFyaW9zLgorCitNZXRhZGF0YSBpcyBzdG9yZWQgb24gYSBzZXBhcmF0ZSBkZXZpY2UgZnJvbSBkYXRhLCBnaXZpbmcgdGhlCithZG1pbmlzdHJhdG9yIHNvbWUgZnJlZWRvbSwgZm9yIGV4YW1wbGUgdG86CisKKy0gSW1wcm92ZSBtZXRhZGF0YSByZXNpbGllbmNlIGJ5IHN0b3JpbmcgbWV0YWRhdGEgb24gYSBtaXJyb3JlZCB2b2x1bWUKKyAgYnV0IGRhdGEgb24gYSBub24tbWlycm9yZWQgb25lLgorCistIEltcHJvdmUgcGVyZm9ybWFuY2UgYnkgc3RvcmluZyB0aGUgbWV0YWRhdGEgb24gU1NELgorCitTdGF0dXMKKz09PT09PQorCitUaGVzZSB0YXJnZXRzIGFyZSB2ZXJ5IG11Y2ggc3RpbGwgaW4gdGhlIEVYUEVSSU1FTlRBTCBzdGF0ZS4gIFBsZWFzZQorZG8gbm90IHlldCByZWx5IG9uIHRoZW0gaW4gcHJvZHVjdGlvbi4gIEJ1dCBkbyBleHBlcmltZW50IGFuZCBvZmZlciB1cworZmVlZGJhY2suICBEaWZmZXJlbnQgdXNlIGNhc2VzIHdpbGwgaGF2ZSBkaWZmZXJlbnQgcGVyZm9ybWFuY2UKK2NoYXJhY3RlcmlzdGljcywgZm9yIGV4YW1wbGUgZHVlIHRvIGZyYWdtZW50YXRpb24gb2YgdGhlIGRhdGEgdm9sdW1lLgorCitJZiB5b3UgZmluZCB0aGlzIHNvZnR3YXJlIGlzIG5vdCBwZXJmb3JtaW5nIGFzIGV4cGVjdGVkIHBsZWFzZSBtYWlsCitkbS1kZXZlbEByZWRoYXQuY29tIHdpdGggZGV0YWlscyBhbmQgd2UnbGwgdHJ5IG91ciBiZXN0IHRvIGltcHJvdmUKK3RoaW5ncyBmb3IgeW91LgorCitVc2Vyc3BhY2UgdG9vbHMgZm9yIGNoZWNraW5nIGFuZCByZXBhaXJpbmcgdGhlIG1ldGFkYXRhIGFyZSB1bmRlcgorZGV2ZWxvcG1lbnQuCisKK0Nvb2tib29rCis9PT09PT09PQorCitUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHNvbWUgcXVpY2sgcmVjaXBlcyBmb3IgdXNpbmcgdGhpbiBwcm92aXNpb25pbmcuCitUaGV5IHVzZSB0aGUgZG1zZXR1cCBwcm9ncmFtIHRvIGNvbnRyb2wgdGhlIGRldmljZS1tYXBwZXIgZHJpdmVyCitkaXJlY3RseS4gIEVuZCB1c2VycyB3aWxsIGJlIGFkdmlzZWQgdG8gdXNlIGEgaGlnaGVyLWxldmVsIHZvbHVtZQorbWFuYWdlciBzdWNoIGFzIExWTTIgb25jZSBzdXBwb3J0IGhhcyBiZWVuIGFkZGVkLgorCitQb29sIGRldmljZQorLS0tLS0tLS0tLS0KKworVGhlIHBvb2wgZGV2aWNlIHRpZXMgdG9nZXRoZXIgdGhlIG1ldGFkYXRhIHZvbHVtZSBhbmQgdGhlIGRhdGEgdm9sdW1lLgorSXQgbWFwcyBJL08gbGluZWFybHkgdG8gdGhlIGRhdGEgdm9sdW1lIGFuZCB1cGRhdGVzIHRoZSBtZXRhZGF0YSB2aWEKK3R3byBtZWNoYW5pc21zOgorCistIEZ1bmN0aW9uIGNhbGxzIGZyb20gdGhlIHRoaW4gdGFyZ2V0cworCistIERldmljZS1tYXBwZXIgJ21lc3NhZ2VzJyBmcm9tIHVzZXJzcGFjZSB3aGljaCBjb250cm9sIHRoZSBjcmVhdGlvbiBvZiBuZXcKKyAgdmlydHVhbCBkZXZpY2VzIGFtb25nc3Qgb3RoZXIgdGhpbmdzLgorCitTZXR0aW5nIHVwIGEgZnJlc2ggcG9vbCBkZXZpY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTZXR0aW5nIHVwIGEgcG9vbCBkZXZpY2UgcmVxdWlyZXMgYSB2YWxpZCBtZXRhZGF0YSBkZXZpY2UsIGFuZCBhCitkYXRhIGRldmljZS4gIElmIHlvdSBkbyBub3QgaGF2ZSBhbiBleGlzdGluZyBtZXRhZGF0YSBkZXZpY2UgeW91IGNhbgorbWFrZSBvbmUgYnkgemVyb2luZyB0aGUgZmlyc3QgNGsgdG8gaW5kaWNhdGUgZW1wdHkgbWV0YWRhdGEuCisKKyAgICBkZCBpZj0vZGV2L3plcm8gb2Y9JG1ldGFkYXRhX2RldiBicz00MDk2IGNvdW50PTEKKworVGhlIGFtb3VudCBvZiBtZXRhZGF0YSB5b3UgbmVlZCB3aWxsIHZhcnkgYWNjb3JkaW5nIHRvIGhvdyBtYW55IGJsb2NrcworYXJlIHNoYXJlZCBiZXR3ZWVuIHRoaW4gZGV2aWNlcyAoaS5lLiB0aHJvdWdoIHNuYXBzaG90cykuICBJZiB5b3UgaGF2ZQorbGVzcyBzaGFyaW5nIHRoYW4gYXZlcmFnZSB5b3UnbGwgbmVlZCBhIGxhcmdlci10aGFuLWF2ZXJhZ2UgbWV0YWRhdGEgZGV2aWNlLgorCitBcyBhIGd1aWRlLCB3ZSBzdWdnZXN0IHlvdSBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBieXRlcyB0byB1c2UgaW4gdGhlCittZXRhZGF0YSBkZXZpY2UgYXMgNDggKiAkZGF0YV9kZXZfc2l6ZSAvICRkYXRhX2Jsb2NrX3NpemUgYnV0IHJvdW5kIGl0IHVwCit0byAyTUIgaWYgdGhlIGFuc3dlciBpcyBzbWFsbGVyLiAgSWYgeW91J3JlIGNyZWF0aW5nIGxhcmdlIG51bWJlcnMgb2YKK3NuYXBzaG90cyB3aGljaCBhcmUgcmVjb3JkaW5nIGxhcmdlIGFtb3VudHMgb2YgY2hhbmdlLCB5b3UgbWF5IGZpbmQgeW91CituZWVkIHRvIGluY3JlYXNlIHRoaXMuCisKK1RoZSBsYXJnZXN0IHNpemUgc3VwcG9ydGVkIGlzIDE2R0I6IElmIHRoZSBkZXZpY2UgaXMgbGFyZ2VyLAorYSB3YXJuaW5nIHdpbGwgYmUgaXNzdWVkIGFuZCB0aGUgZXhjZXNzIHNwYWNlIHdpbGwgbm90IGJlIHVzZWQuCisKK1JlbG9hZGluZyBhIHBvb2wgdGFibGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWW91IG1heSByZWxvYWQgYSBwb29sJ3MgdGFibGUsIGluZGVlZCB0aGlzIGlzIGhvdyB0aGUgcG9vbCBpcyByZXNpemVkCitpZiBpdCBydW5zIG91dCBvZiBzcGFjZS4gIChOLkIuIFdoaWxlIHNwZWNpZnlpbmcgYSBkaWZmZXJlbnQgbWV0YWRhdGEKK2RldmljZSB3aGVuIHJlbG9hZGluZyBpcyBub3QgZm9yYmlkZGVuIGF0IHRoZSBtb21lbnQsIHRoaW5ncyB3aWxsIGdvCit3cm9uZyBpZiBpdCBkb2VzIG5vdCByb3V0ZSBJL08gdG8gZXhhY3RseSB0aGUgc2FtZSBvbi1kaXNrIGxvY2F0aW9uIGFzCitwcmV2aW91c2x5LikKKworVXNpbmcgYW4gZXhpc3RpbmcgcG9vbCBkZXZpY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBkbXNldHVwIGNyZWF0ZSBwb29sIFwKKwktLXRhYmxlICIwIDIwOTcxNTIwIHRoaW4tcG9vbCAkbWV0YWRhdGFfZGV2ICRkYXRhX2RldiBcCisJCSAkZGF0YV9ibG9ja19zaXplICRsb3dfd2F0ZXJfbWFyayIKKworJGRhdGFfYmxvY2tfc2l6ZSBnaXZlcyB0aGUgc21hbGxlc3QgdW5pdCBvZiBkaXNrIHNwYWNlIHRoYXQgY2FuIGJlCithbGxvY2F0ZWQgYXQgYSB0aW1lIGV4cHJlc3NlZCBpbiB1bml0cyBvZiA1MTItYnl0ZSBzZWN0b3JzLgorJGRhdGFfYmxvY2tfc2l6ZSBtdXN0IGJlIGJldHdlZW4gMTI4ICg2NEtCKSBhbmQgMjA5NzE1MiAoMUdCKSBhbmQgYQorbXVsdGlwbGUgb2YgMTI4ICg2NEtCKS4gICRkYXRhX2Jsb2NrX3NpemUgY2Fubm90IGJlIGNoYW5nZWQgYWZ0ZXIgdGhlCit0aGluLXBvb2wgaXMgY3JlYXRlZC4gIFBlb3BsZSBwcmltYXJpbHkgaW50ZXJlc3RlZCBpbiB0aGluIHByb3Zpc2lvbmluZworbWF5IHdhbnQgdG8gdXNlIGEgdmFsdWUgc3VjaCBhcyAxMDI0ICg1MTJLQikuICBQZW9wbGUgZG9pbmcgbG90cyBvZgorc25hcHNob3R0aW5nIG1heSB3YW50IGEgc21hbGxlciB2YWx1ZSBzdWNoIGFzIDEyOCAoNjRLQikuICBJZiB5b3UgYXJlCitub3QgemVyb2luZyBuZXdseS1hbGxvY2F0ZWQgZGF0YSwgYSBsYXJnZXIgJGRhdGFfYmxvY2tfc2l6ZSBpbiB0aGUKK3JlZ2lvbiBvZiAyNTYwMDAgKDEyOE1CKSBpcyBzdWdnZXN0ZWQuCisKKyRsb3dfd2F0ZXJfbWFyayBpcyBleHByZXNzZWQgaW4gYmxvY2tzIG9mIHNpemUgJGRhdGFfYmxvY2tfc2l6ZS4gIElmCitmcmVlIHNwYWNlIG9uIHRoZSBkYXRhIGRldmljZSBkcm9wcyBiZWxvdyB0aGlzIGxldmVsIHRoZW4gYSBkbSBldmVudAord2lsbCBiZSB0cmlnZ2VyZWQgd2hpY2ggYSB1c2Vyc3BhY2UgZGFlbW9uIHNob3VsZCBjYXRjaCBhbGxvd2luZyBpdCB0bworZXh0ZW5kIHRoZSBwb29sIGRldmljZS4gIE9ubHkgb25lIHN1Y2ggZXZlbnQgd2lsbCBiZSBzZW50LgorUmVzdW1pbmcgYSBkZXZpY2Ugd2l0aCBhIG5ldyB0YWJsZSBpdHNlbGYgdHJpZ2dlcnMgYW4gZXZlbnQgc28gdGhlCit1c2Vyc3BhY2UgZGFlbW9uIGNhbiB1c2UgdGhpcyB0byBkZXRlY3QgYSBzaXR1YXRpb24gd2hlcmUgYSBuZXcgdGFibGUKK2FscmVhZHkgZXhjZWVkcyB0aGUgdGhyZXNob2xkLgorCitBIGxvdyB3YXRlciBtYXJrIGZvciB0aGUgbWV0YWRhdGEgZGV2aWNlIGlzIG1haW50YWluZWQgaW4gdGhlIGtlcm5lbCBhbmQKK3dpbGwgdHJpZ2dlciBhIGRtIGV2ZW50IGlmIGZyZWUgc3BhY2Ugb24gdGhlIG1ldGFkYXRhIGRldmljZSBkcm9wcyBiZWxvdworaXQuCisKK1VwZGF0aW5nIG9uLWRpc2sgbWV0YWRhdGEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT24tZGlzayBtZXRhZGF0YSBpcyBjb21taXR0ZWQgZXZlcnkgdGltZSBhIEZMVVNIIG9yIEZVQSBiaW8gaXMgd3JpdHRlbi4KK0lmIG5vIHN1Y2ggcmVxdWVzdHMgYXJlIG1hZGUgdGhlbiBjb21taXRzIHdpbGwgb2NjdXIgZXZlcnkgc2Vjb25kLiAgVGhpcworbWVhbnMgdGhlIHRoaW4tcHJvdmlzaW9uaW5nIHRhcmdldCBiZWhhdmVzIGxpa2UgYSBwaHlzaWNhbCBkaXNrIHRoYXQgaGFzCithIHZvbGF0aWxlIHdyaXRlIGNhY2hlLiAgSWYgcG93ZXIgaXMgbG9zdCB5b3UgbWF5IGxvc2Ugc29tZSByZWNlbnQKK3dyaXRlcy4gIFRoZSBtZXRhZGF0YSBzaG91bGQgYWx3YXlzIGJlIGNvbnNpc3RlbnQgaW4gc3BpdGUgb2YgYW55IGNyYXNoLgorCitJZiBkYXRhIHNwYWNlIGlzIGV4aGF1c3RlZCB0aGUgcG9vbCB3aWxsIGVpdGhlciBlcnJvciBvciBxdWV1ZSBJTworYWNjb3JkaW5nIHRvIHRoZSBjb25maWd1cmF0aW9uIChzZWU6IGVycm9yX2lmX25vX3NwYWNlKS4gIElmIG1ldGFkYXRhCitzcGFjZSBpcyBleGhhdXN0ZWQgb3IgYSBtZXRhZGF0YSBvcGVyYXRpb24gZmFpbHM6IHRoZSBwb29sIHdpbGwgZXJyb3IgSU8KK3VudGlsIHRoZSBwb29sIGlzIHRha2VuIG9mZmxpbmUgYW5kIHJlcGFpciBpcyBwZXJmb3JtZWQgdG8gMSkgZml4IGFueQorcG90ZW50aWFsIGluY29uc2lzdGVuY2llcyBhbmQgMikgY2xlYXIgdGhlIGZsYWcgdGhhdCBpbXBvc2VzIHJlcGFpci4KK09uY2UgdGhlIHBvb2wncyBtZXRhZGF0YSBkZXZpY2UgaXMgcmVwYWlyZWQgaXQgbWF5IGJlIHJlc2l6ZWQsIHdoaWNoCit3aWxsIGFsbG93IHRoZSBwb29sIHRvIHJldHVybiB0byBub3JtYWwgb3BlcmF0aW9uLiAgTm90ZSB0aGF0IGlmIGEgcG9vbAoraXMgZmxhZ2dlZCBhcyBuZWVkaW5nIHJlcGFpciwgdGhlIHBvb2wncyBkYXRhIGFuZCBtZXRhZGF0YSBkZXZpY2VzCitjYW5ub3QgYmUgcmVzaXplZCB1bnRpbCByZXBhaXIgaXMgcGVyZm9ybWVkLiAgSXQgc2hvdWxkIGFsc28gYmUgbm90ZWQKK3RoYXQgd2hlbiB0aGUgcG9vbCdzIG1ldGFkYXRhIHNwYWNlIGlzIGV4aGF1c3RlZCB0aGUgY3VycmVudCBtZXRhZGF0YQordHJhbnNhY3Rpb24gaXMgYWJvcnRlZC4gIEdpdmVuIHRoYXQgdGhlIHBvb2wgd2lsbCBjYWNoZSBJTyB3aG9zZQorY29tcGxldGlvbiBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gYWNrbm93bGVkZ2VkIHRvIHVwcGVyIElPIGxheWVycworKGUuZy4gZmlsZXN5c3RlbSkgaXQgaXMgc3Ryb25nbHkgc3VnZ2VzdGVkIHRoYXQgY29uc2lzdGVuY3kgY2hlY2tzCisoZS5nLiBmc2NrKSBiZSBwZXJmb3JtZWQgb24gdGhvc2UgbGF5ZXJzIHdoZW4gcmVwYWlyIG9mIHRoZSBwb29sIGlzCityZXF1aXJlZC4KKworVGhpbiBwcm92aXNpb25pbmcKKy0tLS0tLS0tLS0tLS0tLS0tCisKK2kpIENyZWF0aW5nIGEgbmV3IHRoaW5seS1wcm92aXNpb25lZCB2b2x1bWUuCisKKyAgVG8gY3JlYXRlIGEgbmV3IHRoaW5seS0gcHJvdmlzaW9uZWQgdm9sdW1lIHlvdSBtdXN0IHNlbmQgYSBtZXNzYWdlIHRvIGFuCisgIGFjdGl2ZSBwb29sIGRldmljZSwgL2Rldi9tYXBwZXIvcG9vbCBpbiB0aGlzIGV4YW1wbGUuCisKKyAgICBkbXNldHVwIG1lc3NhZ2UgL2Rldi9tYXBwZXIvcG9vbCAwICJjcmVhdGVfdGhpbiAwIgorCisgIEhlcmUgJzAnIGlzIGFuIGlkZW50aWZpZXIgZm9yIHRoZSB2b2x1bWUsIGEgMjQtYml0IG51bWJlci4gIEl0J3MgdXAKKyAgdG8gdGhlIGNhbGxlciB0byBhbGxvY2F0ZSBhbmQgbWFuYWdlIHRoZXNlIGlkZW50aWZpZXJzLiAgSWYgdGhlCisgIGlkZW50aWZpZXIgaXMgYWxyZWFkeSBpbiB1c2UsIHRoZSBtZXNzYWdlIHdpbGwgZmFpbCB3aXRoIC1FRVhJU1QuCisKK2lpKSBVc2luZyBhIHRoaW5seS1wcm92aXNpb25lZCB2b2x1bWUuCisKKyAgVGhpbmx5LXByb3Zpc2lvbmVkIHZvbHVtZXMgYXJlIGFjdGl2YXRlZCB1c2luZyB0aGUgJ3RoaW4nIHRhcmdldDoKKworICAgIGRtc2V0dXAgY3JlYXRlIHRoaW4gLS10YWJsZSAiMCAyMDk3MTUyIHRoaW4gL2Rldi9tYXBwZXIvcG9vbCAwIgorCisgIFRoZSBsYXN0IHBhcmFtZXRlciBpcyB0aGUgaWRlbnRpZmllciBmb3IgdGhlIHRoaW5wIGRldmljZS4KKworSW50ZXJuYWwgc25hcHNob3RzCistLS0tLS0tLS0tLS0tLS0tLS0KKworaSkgQ3JlYXRpbmcgYW4gaW50ZXJuYWwgc25hcHNob3QuCisKKyAgU25hcHNob3RzIGFyZSBjcmVhdGVkIHdpdGggYW5vdGhlciBtZXNzYWdlIHRvIHRoZSBwb29sLgorCisgIE4uQi4gIElmIHRoZSBvcmlnaW4gZGV2aWNlIHRoYXQgeW91IHdpc2ggdG8gc25hcHNob3QgaXMgYWN0aXZlLCB5b3UKKyAgbXVzdCBzdXNwZW5kIGl0IGJlZm9yZSBjcmVhdGluZyB0aGUgc25hcHNob3QgdG8gYXZvaWQgY29ycnVwdGlvbi4KKyAgVGhpcyBpcyBOT1QgZW5mb3JjZWQgYXQgdGhlIG1vbWVudCwgc28gcGxlYXNlIGJlIGNhcmVmdWwhCisKKyAgICBkbXNldHVwIHN1c3BlbmQgL2Rldi9tYXBwZXIvdGhpbgorICAgIGRtc2V0dXAgbWVzc2FnZSAvZGV2L21hcHBlci9wb29sIDAgImNyZWF0ZV9zbmFwIDEgMCIKKyAgICBkbXNldHVwIHJlc3VtZSAvZGV2L21hcHBlci90aGluCisKKyAgSGVyZSAnMScgaXMgdGhlIGlkZW50aWZpZXIgZm9yIHRoZSB2b2x1bWUsIGEgMjQtYml0IG51bWJlci4gICcwJyBpcyB0aGUKKyAgaWRlbnRpZmllciBmb3IgdGhlIG9yaWdpbiBkZXZpY2UuCisKK2lpKSBVc2luZyBhbiBpbnRlcm5hbCBzbmFwc2hvdC4KKworICBPbmNlIGNyZWF0ZWQsIHRoZSB1c2VyIGRvZXNuJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCBhbnkgY29ubmVjdGlvbgorICBiZXR3ZWVuIHRoZSBvcmlnaW4gYW5kIHRoZSBzbmFwc2hvdC4gIEluZGVlZCB0aGUgc25hcHNob3QgaXMgbm8KKyAgZGlmZmVyZW50IGZyb20gYW55IG90aGVyIHRoaW5seS1wcm92aXNpb25lZCBkZXZpY2UgYW5kIGNhbiBiZQorICBzbmFwc2hvdHRlZCBpdHNlbGYgdmlhIHRoZSBzYW1lIG1ldGhvZC4gIEl0J3MgcGVyZmVjdGx5IGxlZ2FsIHRvCisgIGhhdmUgb25seSBvbmUgb2YgdGhlbSBhY3RpdmUsIGFuZCB0aGVyZSdzIG5vIG9yZGVyaW5nIHJlcXVpcmVtZW50IG9uCisgIGFjdGl2YXRpbmcgb3IgcmVtb3ZpbmcgdGhlbSBib3RoLiAgKFRoaXMgZGlmZmVycyBmcm9tIGNvbnZlbnRpb25hbAorICBkZXZpY2UtbWFwcGVyIHNuYXBzaG90cy4pCisKKyAgQWN0aXZhdGUgaXQgZXhhY3RseSB0aGUgc2FtZSB3YXkgYXMgYW55IG90aGVyIHRoaW5seS1wcm92aXNpb25lZCB2b2x1bWU6CisKKyAgICBkbXNldHVwIGNyZWF0ZSBzbmFwIC0tdGFibGUgIjAgMjA5NzE1MiB0aGluIC9kZXYvbWFwcGVyL3Bvb2wgMSIKKworRXh0ZXJuYWwgc25hcHNob3RzCistLS0tLS0tLS0tLS0tLS0tLS0KKworWW91IGNhbiB1c2UgYW4gZXh0ZXJuYWwgX3JlYWQgb25seV8gZGV2aWNlIGFzIGFuIG9yaWdpbiBmb3IgYQordGhpbmx5LXByb3Zpc2lvbmVkIHZvbHVtZS4gIEFueSByZWFkIHRvIGFuIHVucHJvdmlzaW9uZWQgYXJlYSBvZiB0aGUKK3RoaW4gZGV2aWNlIHdpbGwgYmUgcGFzc2VkIHRocm91Z2ggdG8gdGhlIG9yaWdpbi4gIFdyaXRlcyB0cmlnZ2VyCit0aGUgYWxsb2NhdGlvbiBvZiBuZXcgYmxvY2tzIGFzIHVzdWFsLgorCitPbmUgdXNlIGNhc2UgZm9yIHRoaXMgaXMgVk0gaG9zdHMgdGhhdCB3YW50IHRvIHJ1biBndWVzdHMgb24KK3RoaW5seS1wcm92aXNpb25lZCB2b2x1bWVzIGJ1dCBoYXZlIHRoZSBiYXNlIGltYWdlIG9uIGFub3RoZXIgZGV2aWNlCisocG9zc2libHkgc2hhcmVkIGJldHdlZW4gbWFueSBWTXMpLgorCitZb3UgbXVzdCBub3Qgd3JpdGUgdG8gdGhlIG9yaWdpbiBkZXZpY2UgaWYgeW91IHVzZSB0aGlzIHRlY2huaXF1ZSEKK09mIGNvdXJzZSwgeW91IG1heSB3cml0ZSB0byB0aGUgdGhpbiBkZXZpY2UgYW5kIHRha2UgaW50ZXJuYWwgc25hcHNob3RzCitvZiB0aGUgdGhpbiB2b2x1bWUuCisKK2kpIENyZWF0aW5nIGEgc25hcHNob3Qgb2YgYW4gZXh0ZXJuYWwgZGV2aWNlCisKKyAgVGhpcyBpcyB0aGUgc2FtZSBhcyBjcmVhdGluZyBhIHRoaW4gZGV2aWNlLgorICBZb3UgZG9uJ3QgbWVudGlvbiB0aGUgb3JpZ2luIGF0IHRoaXMgc3RhZ2UuCisKKyAgICBkbXNldHVwIG1lc3NhZ2UgL2Rldi9tYXBwZXIvcG9vbCAwICJjcmVhdGVfdGhpbiAwIgorCitpaSkgVXNpbmcgYSBzbmFwc2hvdCBvZiBhbiBleHRlcm5hbCBkZXZpY2UuCisKKyAgQXBwZW5kIGFuIGV4dHJhIHBhcmFtZXRlciB0byB0aGUgdGhpbiB0YXJnZXQgc3BlY2lmeWluZyB0aGUgb3JpZ2luOgorCisgICAgZG1zZXR1cCBjcmVhdGUgc25hcCAtLXRhYmxlICIwIDIwOTcxNTIgdGhpbiAvZGV2L21hcHBlci9wb29sIDAgL2Rldi9pbWFnZSIKKworICBOLkIuIEFsbCBkZXNjZW5kYW50cyAoaW50ZXJuYWwgc25hcHNob3RzKSBvZiB0aGlzIHNuYXBzaG90IHJlcXVpcmUgdGhlCisgIHNhbWUgZXh0cmEgb3JpZ2luIHBhcmFtZXRlci4KKworRGVhY3RpdmF0aW9uCistLS0tLS0tLS0tLS0KKworQWxsIGRldmljZXMgdXNpbmcgYSBwb29sIG11c3QgYmUgZGVhY3RpdmF0ZWQgYmVmb3JlIHRoZSBwb29sIGl0c2VsZgorY2FuIGJlLgorCisgICAgZG1zZXR1cCByZW1vdmUgdGhpbgorICAgIGRtc2V0dXAgcmVtb3ZlIHNuYXAKKyAgICBkbXNldHVwIHJlbW92ZSBwb29sCisKK1JlZmVyZW5jZQorPT09PT09PT09CisKKyd0aGluLXBvb2wnIHRhcmdldAorLS0tLS0tLS0tLS0tLS0tLS0tCisKK2kpIENvbnN0cnVjdG9yCisKKyAgICB0aGluLXBvb2wgPG1ldGFkYXRhIGRldj4gPGRhdGEgZGV2PiA8ZGF0YSBibG9jayBzaXplIChzZWN0b3JzKT4gXAorCSAgICAgIDxsb3cgd2F0ZXIgbWFyayAoYmxvY2tzKT4gWzxudW1iZXIgb2YgZmVhdHVyZSBhcmdzPiBbPGFyZz5dKl0KKworICAgIE9wdGlvbmFsIGZlYXR1cmUgYXJndW1lbnRzOgorCisgICAgICBza2lwX2Jsb2NrX3plcm9pbmc6IFNraXAgdGhlIHplcm9pbmcgb2YgbmV3bHktcHJvdmlzaW9uZWQgYmxvY2tzLgorCisgICAgICBpZ25vcmVfZGlzY2FyZDogRGlzYWJsZSBkaXNjYXJkIHN1cHBvcnQuCisKKyAgICAgIG5vX2Rpc2NhcmRfcGFzc2Rvd246IERvbid0IHBhc3MgZGlzY2FyZHMgZG93biB0byB0aGUgdW5kZXJseWluZworCQkJICAgZGF0YSBkZXZpY2UsIGJ1dCBqdXN0IHJlbW92ZSB0aGUgbWFwcGluZy4KKworICAgICAgcmVhZF9vbmx5OiBEb24ndCBhbGxvdyBhbnkgY2hhbmdlcyB0byBiZSBtYWRlIHRvIHRoZSBwb29sCisJCSBtZXRhZGF0YS4KKworICAgICAgZXJyb3JfaWZfbm9fc3BhY2U6IEVycm9yIElPcywgaW5zdGVhZCBvZiBxdWV1ZWluZywgaWYgbm8gc3BhY2UuCisKKyAgICBEYXRhIGJsb2NrIHNpemUgbXVzdCBiZSBiZXR3ZWVuIDY0S0IgKDEyOCBzZWN0b3JzKSBhbmQgMUdCCisgICAgKDIwOTcxNTIgc2VjdG9ycykgaW5jbHVzaXZlLgorCisKK2lpKSBTdGF0dXMKKworICAgIDx0cmFuc2FjdGlvbiBpZD4gPHVzZWQgbWV0YWRhdGEgYmxvY2tzPi88dG90YWwgbWV0YWRhdGEgYmxvY2tzPgorICAgIDx1c2VkIGRhdGEgYmxvY2tzPi88dG90YWwgZGF0YSBibG9ja3M+IDxoZWxkIG1ldGFkYXRhIHJvb3Q+CisgICAgW25vX11kaXNjYXJkX3Bhc3Nkb3duIHJvfHJ3CisKKyAgICB0cmFuc2FjdGlvbiBpZDoKKwlBIDY0LWJpdCBudW1iZXIgdXNlZCBieSB1c2Vyc3BhY2UgdG8gaGVscCBzeW5jaHJvbmlzZSB3aXRoIG1ldGFkYXRhCisJZnJvbSB2b2x1bWUgbWFuYWdlcnMuCisKKyAgICB1c2VkIGRhdGEgYmxvY2tzIC8gdG90YWwgZGF0YSBibG9ja3MKKwlJZiB0aGUgbnVtYmVyIG9mIGZyZWUgYmxvY2tzIGRyb3BzIGJlbG93IHRoZSBwb29sJ3MgbG93IHdhdGVyIG1hcmsgYQorCWRtIGV2ZW50IHdpbGwgYmUgc2VudCB0byB1c2Vyc3BhY2UuICBUaGlzIGV2ZW50IGlzIGVkZ2UtdHJpZ2dlcmVkIGFuZAorCWl0IHdpbGwgb2NjdXIgb25seSBvbmNlIGFmdGVyIGVhY2ggcmVzdW1lIHNvIHZvbHVtZSBtYW5hZ2VyIHdyaXRlcnMKKwlzaG91bGQgcmVnaXN0ZXIgZm9yIHRoZSBldmVudCBhbmQgdGhlbiBjaGVjayB0aGUgdGFyZ2V0J3Mgc3RhdHVzLgorCisgICAgaGVsZCBtZXRhZGF0YSByb290OgorCVRoZSBsb2NhdGlvbiwgaW4gYmxvY2tzLCBvZiB0aGUgbWV0YWRhdGEgcm9vdCB0aGF0IGhhcyBiZWVuCisJJ2hlbGQnIGZvciB1c2Vyc3BhY2UgcmVhZCBhY2Nlc3MuICAnLScgaW5kaWNhdGVzIHRoZXJlIGlzIG5vCisJaGVsZCByb290LgorCisgICAgZGlzY2FyZF9wYXNzZG93bnxub19kaXNjYXJkX3Bhc3Nkb3duCisJV2hldGhlciBvciBub3QgZGlzY2FyZHMgYXJlIGFjdHVhbGx5IGJlaW5nIHBhc3NlZCBkb3duIHRvIHRoZQorCXVuZGVybHlpbmcgZGV2aWNlLiAgV2hlbiB0aGlzIGlzIGVuYWJsZWQgd2hlbiBsb2FkaW5nIHRoZSB0YWJsZSwKKwlpdCBjYW4gZ2V0IGRpc2FibGVkIGlmIHRoZSB1bmRlcmx5aW5nIGRldmljZSBkb2Vzbid0IHN1cHBvcnQgaXQuCisKKyAgICByb3xyd3xvdXRfb2ZfZGF0YV9zcGFjZQorCUlmIHRoZSBwb29sIGVuY291bnRlcnMgY2VydGFpbiB0eXBlcyBvZiBkZXZpY2UgZmFpbHVyZXMgaXQgd2lsbAorCWRyb3AgaW50byBhIHJlYWQtb25seSBtZXRhZGF0YSBtb2RlIGluIHdoaWNoIG5vIGNoYW5nZXMgdG8KKwl0aGUgcG9vbCBtZXRhZGF0YSAobGlrZSBhbGxvY2F0aW5nIG5ldyBibG9ja3MpIGFyZSBwZXJtaXR0ZWQuCisKKwlJbiBzZXJpb3VzIGNhc2VzIHdoZXJlIGV2ZW4gYSByZWFkLW9ubHkgbW9kZSBpcyBkZWVtZWQgdW5zYWZlCisJbm8gZnVydGhlciBJL08gd2lsbCBiZSBwZXJtaXR0ZWQgYW5kIHRoZSBzdGF0dXMgd2lsbCBqdXN0CisJY29udGFpbiB0aGUgc3RyaW5nICdGYWlsJy4gIFRoZSB1c2Vyc3BhY2UgcmVjb3ZlcnkgdG9vbHMKKwlzaG91bGQgdGhlbiBiZSB1c2VkLgorCisgICAgZXJyb3JfaWZfbm9fc3BhY2V8cXVldWVfaWZfbm9fc3BhY2UKKwlJZiB0aGUgcG9vbCBydW5zIG91dCBvZiBkYXRhIG9yIG1ldGFkYXRhIHNwYWNlLCB0aGUgcG9vbCB3aWxsCisJZWl0aGVyIHF1ZXVlIG9yIGVycm9yIHRoZSBJTyBkZXN0aW5lZCB0byB0aGUgZGF0YSBkZXZpY2UuICBUaGUKKwlkZWZhdWx0IGlzIHRvIHF1ZXVlIHRoZSBJTyB1bnRpbCBtb3JlIHNwYWNlIGlzIGFkZGVkIG9yIHRoZQorCSdub19zcGFjZV90aW1lb3V0JyBleHBpcmVzLiAgVGhlICdub19zcGFjZV90aW1lb3V0JyBkbS10aGluLXBvb2wKKwltb2R1bGUgcGFyYW1ldGVyIGNhbiBiZSB1c2VkIHRvIGNoYW5nZSB0aGlzIHRpbWVvdXQgLS0gaXQKKwlkZWZhdWx0cyB0byA2MCBzZWNvbmRzIGJ1dCBtYXkgYmUgZGlzYWJsZWQgdXNpbmcgYSB2YWx1ZSBvZiAwLgorCisgICAgbmVlZHNfY2hlY2sKKwlBIG1ldGFkYXRhIG9wZXJhdGlvbiBoYXMgZmFpbGVkLCByZXN1bHRpbmcgaW4gdGhlIG5lZWRzX2NoZWNrCisJZmxhZyBiZWluZyBzZXQgaW4gdGhlIG1ldGFkYXRhJ3Mgc3VwZXJibG9jay4gIFRoZSBtZXRhZGF0YQorCWRldmljZSBtdXN0IGJlIGRlYWN0aXZhdGVkIGFuZCBjaGVja2VkL3JlcGFpcmVkIGJlZm9yZSB0aGUKKwl0aGluLXBvb2wgY2FuIGJlIG1hZGUgZnVsbHkgb3BlcmF0aW9uYWwgYWdhaW4uICAnLScgaW5kaWNhdGVzCisJbmVlZHNfY2hlY2sgaXMgbm90IHNldC4KKworaWlpKSBNZXNzYWdlcworCisgICAgY3JlYXRlX3RoaW4gPGRldiBpZD4KKworCUNyZWF0ZSBhIG5ldyB0aGlubHktcHJvdmlzaW9uZWQgZGV2aWNlLgorCTxkZXYgaWQ+IGlzIGFuIGFyYml0cmFyeSB1bmlxdWUgMjQtYml0IGlkZW50aWZpZXIgY2hvc2VuIGJ5CisJdGhlIGNhbGxlci4KKworICAgIGNyZWF0ZV9zbmFwIDxkZXYgaWQ+IDxvcmlnaW4gaWQ+CisKKwlDcmVhdGUgYSBuZXcgc25hcHNob3Qgb2YgYW5vdGhlciB0aGlubHktcHJvdmlzaW9uZWQgZGV2aWNlLgorCTxkZXYgaWQ+IGlzIGFuIGFyYml0cmFyeSB1bmlxdWUgMjQtYml0IGlkZW50aWZpZXIgY2hvc2VuIGJ5CisJdGhlIGNhbGxlci4KKwk8b3JpZ2luIGlkPiBpcyB0aGUgaWRlbnRpZmllciBvZiB0aGUgdGhpbmx5LXByb3Zpc2lvbmVkIGRldmljZQorCW9mIHdoaWNoIHRoZSBuZXcgZGV2aWNlIHdpbGwgYmUgYSBzbmFwc2hvdC4KKworICAgIGRlbGV0ZSA8ZGV2IGlkPgorCisJRGVsZXRlcyBhIHRoaW4gZGV2aWNlLiAgSXJyZXZlcnNpYmxlLgorCisgICAgc2V0X3RyYW5zYWN0aW9uX2lkIDxjdXJyZW50IGlkPiA8bmV3IGlkPgorCisJVXNlcmxhbmQgdm9sdW1lIG1hbmFnZXJzLCBzdWNoIGFzIExWTSwgbmVlZCBhIHdheSB0bworCXN5bmNocm9uaXNlIHRoZWlyIGV4dGVybmFsIG1ldGFkYXRhIHdpdGggdGhlIGludGVybmFsIG1ldGFkYXRhIG9mIHRoZQorCXBvb2wgdGFyZ2V0LiAgVGhlIHRoaW4tcG9vbCB0YXJnZXQgb2ZmZXJzIHRvIHN0b3JlIGFuCisJYXJiaXRyYXJ5IDY0LWJpdCB0cmFuc2FjdGlvbiBpZCBhbmQgcmV0dXJuIGl0IG9uIHRoZSB0YXJnZXQncworCXN0YXR1cyBsaW5lLiAgVG8gYXZvaWQgcmFjZXMgeW91IG11c3QgcHJvdmlkZSB3aGF0IHlvdSB0aGluaworCXRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIGlkIGlzIHdoZW4geW91IGNoYW5nZSBpdCB3aXRoIHRoaXMKKwljb21wYXJlLWFuZC1zd2FwIG1lc3NhZ2UuCisKKyAgICByZXNlcnZlX21ldGFkYXRhX3NuYXAKKworICAgICAgICBSZXNlcnZlIGEgY29weSBvZiB0aGUgZGF0YSBtYXBwaW5nIGJ0cmVlIGZvciB1c2UgYnkgdXNlcmxhbmQuCisgICAgICAgIFRoaXMgYWxsb3dzIHVzZXJsYW5kIHRvIGluc3BlY3QgdGhlIG1hcHBpbmdzIGFzIHRoZXkgd2VyZSB3aGVuCisgICAgICAgIHRoaXMgbWVzc2FnZSB3YXMgZXhlY3V0ZWQuICBVc2UgdGhlIHBvb2wncyBzdGF0dXMgY29tbWFuZCB0bworICAgICAgICBnZXQgdGhlIHJvb3QgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSBtZXRhZGF0YSBzbmFwc2hvdC4KKworICAgIHJlbGVhc2VfbWV0YWRhdGFfc25hcAorCisgICAgICAgIFJlbGVhc2UgYSBwcmV2aW91c2x5IHJlc2VydmVkIGNvcHkgb2YgdGhlIGRhdGEgbWFwcGluZyBidHJlZS4KKworJ3RoaW4nIHRhcmdldAorLS0tLS0tLS0tLS0tLQorCitpKSBDb25zdHJ1Y3RvcgorCisgICAgdGhpbiA8cG9vbCBkZXY+IDxkZXYgaWQ+IFs8ZXh0ZXJuYWwgb3JpZ2luIGRldj5dCisKKyAgICBwb29sIGRldjoKKwl0aGUgdGhpbi1wb29sIGRldmljZSwgZS5nLiAvZGV2L21hcHBlci9teV9wb29sIG9yIDI1MzowCisKKyAgICBkZXYgaWQ6CisJdGhlIGludGVybmFsIGRldmljZSBpZGVudGlmaWVyIG9mIHRoZSBkZXZpY2UgdG8gYmUKKwlhY3RpdmF0ZWQuCisKKyAgICBleHRlcm5hbCBvcmlnaW4gZGV2OgorCWFuIG9wdGlvbmFsIGJsb2NrIGRldmljZSBvdXRzaWRlIHRoZSBwb29sIHRvIGJlIHRyZWF0ZWQgYXMgYQorCXJlYWQtb25seSBzbmFwc2hvdCBvcmlnaW46IHJlYWRzIHRvIHVucHJvdmlzaW9uZWQgYXJlYXMgb2YgdGhlCisJdGhpbiB0YXJnZXQgd2lsbCBiZSBtYXBwZWQgdG8gdGhpcyBkZXZpY2UuCisKK1RoZSBwb29sIGRvZXNuJ3Qgc3RvcmUgYW55IHNpemUgYWdhaW5zdCB0aGUgdGhpbiBkZXZpY2VzLiAgSWYgeW91Citsb2FkIGEgdGhpbiB0YXJnZXQgdGhhdCBpcyBzbWFsbGVyIHRoYW4geW91J3ZlIGJlZW4gdXNpbmcgcHJldmlvdXNseSwKK3RoZW4geW91J2xsIGhhdmUgbm8gYWNjZXNzIHRvIGJsb2NrcyBtYXBwZWQgYmV5b25kIHRoZSBlbmQuICBJZiB5b3UKK2xvYWQgYSB0YXJnZXQgdGhhdCBpcyBiaWdnZXIgdGhhbiBiZWZvcmUsIHRoZW4gZXh0cmEgYmxvY2tzIHdpbGwgYmUKK3Byb3Zpc2lvbmVkIGFzIGFuZCB3aGVuIG5lZWRlZC4KKworaWkpIFN0YXR1cworCisgICAgIDxuciBtYXBwZWQgc2VjdG9ycz4gPGhpZ2hlc3QgbWFwcGVkIHNlY3Rvcj4KKworCUlmIHRoZSBwb29sIGhhcyBlbmNvdW50ZXJlZCBkZXZpY2UgZXJyb3JzIGFuZCBmYWlsZWQsIHRoZSBzdGF0dXMKKwl3aWxsIGp1c3QgY29udGFpbiB0aGUgc3RyaW5nICdGYWlsJy4gIFRoZSB1c2Vyc3BhY2UgcmVjb3ZlcnkKKwl0b29scyBzaG91bGQgdGhlbiBiZSB1c2VkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL3Zlcml0eS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvdmVyaXR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTViYzFhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL3Zlcml0eS50eHQKQEAgLTAsMCArMSwxNzIgQEAKK2RtLXZlcml0eQorPT09PT09PT09PQorCitEZXZpY2UtTWFwcGVyJ3MgInZlcml0eSIgdGFyZ2V0IHByb3ZpZGVzIHRyYW5zcGFyZW50IGludGVncml0eSBjaGVja2luZyBvZgorYmxvY2sgZGV2aWNlcyB1c2luZyBhIGNyeXB0b2dyYXBoaWMgZGlnZXN0IHByb3ZpZGVkIGJ5IHRoZSBrZXJuZWwgY3J5cHRvIEFQSS4KK1RoaXMgdGFyZ2V0IGlzIHJlYWQtb25seS4KKworQ29uc3RydWN0aW9uIFBhcmFtZXRlcnMKKz09PT09PT09PT09PT09PT09PT09PT09CisgICAgPHZlcnNpb24+IDxkZXY+IDxoYXNoX2Rldj4KKyAgICA8ZGF0YV9ibG9ja19zaXplPiA8aGFzaF9ibG9ja19zaXplPgorICAgIDxudW1fZGF0YV9ibG9ja3M+IDxoYXNoX3N0YXJ0X2Jsb2NrPgorICAgIDxhbGdvcml0aG0+IDxkaWdlc3Q+IDxzYWx0PgorICAgIFs8I29wdF9wYXJhbXM+IDxvcHRfcGFyYW1zPl0KKworPHZlcnNpb24+CisgICAgVGhpcyBpcyB0aGUgdHlwZSBvZiB0aGUgb24tZGlzayBoYXNoIGZvcm1hdC4KKworICAgIDAgaXMgdGhlIG9yaWdpbmFsIGZvcm1hdCB1c2VkIGluIHRoZSBDaHJvbWl1bSBPUy4KKyAgICAgIFRoZSBzYWx0IGlzIGFwcGVuZGVkIHdoZW4gaGFzaGluZywgZGlnZXN0cyBhcmUgc3RvcmVkIGNvbnRpbnVvdXNseSBhbmQKKyAgICAgIHRoZSByZXN0IG9mIHRoZSBibG9jayBpcyBwYWRkZWQgd2l0aCB6ZXJvcy4KKworICAgIDEgaXMgdGhlIGN1cnJlbnQgZm9ybWF0IHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIG5ldyBkZXZpY2VzLgorICAgICAgVGhlIHNhbHQgaXMgcHJlcGVuZGVkIHdoZW4gaGFzaGluZyBhbmQgZWFjaCBkaWdlc3QgaXMKKyAgICAgIHBhZGRlZCB3aXRoIHplcm9zIHRvIHRoZSBwb3dlciBvZiB0d28uCisKKzxkZXY+CisgICAgVGhpcyBpcyB0aGUgZGV2aWNlIGNvbnRhaW5pbmcgZGF0YSwgdGhlIGludGVncml0eSBvZiB3aGljaCBuZWVkcyB0byBiZQorICAgIGNoZWNrZWQuICBJdCBtYXkgYmUgc3BlY2lmaWVkIGFzIGEgcGF0aCwgbGlrZSAvZGV2L3NkYVgsIG9yIGEgZGV2aWNlIG51bWJlciwKKyAgICA8bWFqb3I+OjxtaW5vcj4uCisKKzxoYXNoX2Rldj4KKyAgICBUaGlzIGlzIHRoZSBkZXZpY2UgdGhhdCBzdXBwbGllcyB0aGUgaGFzaCB0cmVlIGRhdGEuICBJdCBtYXkgYmUKKyAgICBzcGVjaWZpZWQgc2ltaWxhcmx5IHRvIHRoZSBkZXZpY2UgcGF0aCBhbmQgbWF5IGJlIHRoZSBzYW1lIGRldmljZS4gIElmIHRoZQorICAgIHNhbWUgZGV2aWNlIGlzIHVzZWQsIHRoZSBoYXNoX3N0YXJ0IHNob3VsZCBiZSBvdXRzaWRlIHRoZSBjb25maWd1cmVkCisgICAgZG0tdmVyaXR5IGRldmljZS4KKworPGRhdGFfYmxvY2tfc2l6ZT4KKyAgICBUaGUgYmxvY2sgc2l6ZSBvbiBhIGRhdGEgZGV2aWNlIGluIGJ5dGVzLgorICAgIEVhY2ggYmxvY2sgY29ycmVzcG9uZHMgdG8gb25lIGRpZ2VzdCBvbiB0aGUgaGFzaCBkZXZpY2UuCisKKzxoYXNoX2Jsb2NrX3NpemU+CisgICAgVGhlIHNpemUgb2YgYSBoYXNoIGJsb2NrIGluIGJ5dGVzLgorCis8bnVtX2RhdGFfYmxvY2tzPgorICAgIFRoZSBudW1iZXIgb2YgZGF0YSBibG9ja3Mgb24gdGhlIGRhdGEgZGV2aWNlLiAgQWRkaXRpb25hbCBibG9ja3MgYXJlCisgICAgaW5hY2Nlc3NpYmxlLiAgWW91IGNhbiBwbGFjZSBoYXNoZXMgdG8gdGhlIHNhbWUgcGFydGl0aW9uIGFzIGRhdGEsIGluIHRoaXMKKyAgICBjYXNlIGhhc2hlcyBhcmUgcGxhY2VkIGFmdGVyIDxudW1fZGF0YV9ibG9ja3M+LgorCis8aGFzaF9zdGFydF9ibG9jaz4KKyAgICBUaGlzIGlzIHRoZSBvZmZzZXQsIGluIDxoYXNoX2Jsb2NrX3NpemU+LWJsb2NrcywgZnJvbSB0aGUgc3RhcnQgb2YgaGFzaF9kZXYKKyAgICB0byB0aGUgcm9vdCBibG9jayBvZiB0aGUgaGFzaCB0cmVlLgorCis8YWxnb3JpdGhtPgorICAgIFRoZSBjcnlwdG9ncmFwaGljIGhhc2ggYWxnb3JpdGhtIHVzZWQgZm9yIHRoaXMgZGV2aWNlLiAgVGhpcyBzaG91bGQKKyAgICBiZSB0aGUgbmFtZSBvZiB0aGUgYWxnb3JpdGhtLCBsaWtlICJzaGExIi4KKworPGRpZ2VzdD4KKyAgICBUaGUgaGV4YWRlY2ltYWwgZW5jb2Rpbmcgb2YgdGhlIGNyeXB0b2dyYXBoaWMgaGFzaCBvZiB0aGUgcm9vdCBoYXNoIGJsb2NrCisgICAgYW5kIHRoZSBzYWx0LiAgVGhpcyBoYXNoIHNob3VsZCBiZSB0cnVzdGVkIGFzIHRoZXJlIGlzIG5vIG90aGVyIGF1dGhlbnRpY2l0eQorICAgIGJleW9uZCB0aGlzIHBvaW50LgorCis8c2FsdD4KKyAgICBUaGUgaGV4YWRlY2ltYWwgZW5jb2Rpbmcgb2YgdGhlIHNhbHQgdmFsdWUuCisKKzwjb3B0X3BhcmFtcz4KKyAgICBOdW1iZXIgb2Ygb3B0aW9uYWwgcGFyYW1ldGVycy4gSWYgdGhlcmUgYXJlIG5vIG9wdGlvbmFsIHBhcmFtZXRlcnMsCisgICAgdGhlIG9wdGlvbmFsIHBhcmFtYXRlcnMgc2VjdGlvbiBjYW4gYmUgc2tpcHBlZCBvciAjb3B0X3BhcmFtcyBjYW4gYmUgemVyby4KKyAgICBPdGhlcndpc2UgI29wdF9wYXJhbXMgaXMgdGhlIG51bWJlciBvZiBmb2xsb3dpbmcgYXJndW1lbnRzLgorCisgICAgRXhhbXBsZSBvZiBvcHRpb25hbCBwYXJhbWV0ZXJzIHNlY3Rpb246CisgICAgICAgIDEgaWdub3JlX2NvcnJ1cHRpb24KKworaWdub3JlX2NvcnJ1cHRpb24KKyAgICBMb2cgY29ycnVwdGVkIGJsb2NrcywgYnV0IGFsbG93IHJlYWQgb3BlcmF0aW9ucyB0byBwcm9jZWVkIG5vcm1hbGx5LgorCityZXN0YXJ0X29uX2NvcnJ1cHRpb24KKyAgICBSZXN0YXJ0IHRoZSBzeXN0ZW0gd2hlbiBhIGNvcnJ1cHRlZCBibG9jayBpcyBkaXNjb3ZlcmVkLiBUaGlzIG9wdGlvbiBpcworICAgIG5vdCBjb21wYXRpYmxlIHdpdGggaWdub3JlX2NvcnJ1cHRpb24gYW5kIHJlcXVpcmVzIHVzZXIgc3BhY2Ugc3VwcG9ydCB0bworICAgIGF2b2lkIHJlc3RhcnQgbG9vcHMuCisKK1RoZW9yeSBvZiBvcGVyYXRpb24KKz09PT09PT09PT09PT09PT09PT0KKworZG0tdmVyaXR5IGlzIG1lYW50IHRvIGJlIHNldCB1cCBhcyBwYXJ0IG9mIGEgdmVyaWZpZWQgYm9vdCBwYXRoLiAgVGhpcworbWF5IGJlIGFueXRoaW5nIHJhbmdpbmcgZnJvbSBhIGJvb3QgdXNpbmcgdGJvb3Qgb3IgdHJ1c3RlZGdydWIgdG8ganVzdAorYm9vdGluZyBmcm9tIGEga25vd24tZ29vZCBkZXZpY2UgKGxpa2UgYSBVU0IgZHJpdmUgb3IgQ0QpLgorCitXaGVuIGEgZG0tdmVyaXR5IGRldmljZSBpcyBjb25maWd1cmVkLCBpdCBpcyBleHBlY3RlZCB0aGF0IHRoZSBjYWxsZXIKK2hhcyBiZWVuIGF1dGhlbnRpY2F0ZWQgaW4gc29tZSB3YXkgKGNyeXB0b2dyYXBoaWMgc2lnbmF0dXJlcywgZXRjKS4KK0FmdGVyIGluc3RhbnRpYXRpb24sIGFsbCBoYXNoZXMgd2lsbCBiZSB2ZXJpZmllZCBvbi1kZW1hbmQgZHVyaW5nCitkaXNrIGFjY2Vzcy4gIElmIHRoZXkgY2Fubm90IGJlIHZlcmlmaWVkIHVwIHRvIHRoZSByb290IG5vZGUgb2YgdGhlCit0cmVlLCB0aGUgcm9vdCBoYXNoLCB0aGVuIHRoZSBJL08gd2lsbCBmYWlsLiAgVGhpcyBzaG91bGQgZGV0ZWN0Cit0YW1wZXJpbmcgd2l0aCBhbnkgZGF0YSBvbiB0aGUgZGV2aWNlIGFuZCB0aGUgaGFzaCBkYXRhLgorCitDcnlwdG9ncmFwaGljIGhhc2hlcyBhcmUgdXNlZCB0byBhc3NlcnQgdGhlIGludGVncml0eSBvZiB0aGUgZGV2aWNlIG9uIGEKK3Blci1ibG9jayBiYXNpcy4gVGhpcyBhbGxvd3MgZm9yIGEgbGlnaHR3ZWlnaHQgaGFzaCBjb21wdXRhdGlvbiBvbiBmaXJzdCByZWFkCitpbnRvIHRoZSBwYWdlIGNhY2hlLiBCbG9jayBoYXNoZXMgYXJlIHN0b3JlZCBsaW5lYXJseSwgYWxpZ25lZCB0byB0aGUgbmVhcmVzdAorYmxvY2sgc2l6ZS4KKworSGFzaCBUcmVlCistLS0tLS0tLS0KKworRWFjaCBub2RlIGluIHRoZSB0cmVlIGlzIGEgY3J5cHRvZ3JhcGhpYyBoYXNoLiAgSWYgaXQgaXMgYSBsZWFmIG5vZGUsIHRoZSBoYXNoCitvZiBzb21lIGRhdGEgYmxvY2sgb24gZGlzayBpcyBjYWxjdWxhdGVkLiBJZiBpdCBpcyBhbiBpbnRlcm1lZGlhcnkgbm9kZSwKK3RoZSBoYXNoIG9mIGEgbnVtYmVyIG9mIGNoaWxkIG5vZGVzIGlzIGNhbGN1bGF0ZWQuCisKK0VhY2ggZW50cnkgaW4gdGhlIHRyZWUgaXMgYSBjb2xsZWN0aW9uIG9mIG5laWdoYm9yaW5nIG5vZGVzIHRoYXQgZml0IGluIG9uZQorYmxvY2suICBUaGUgbnVtYmVyIGlzIGRldGVybWluZWQgYmFzZWQgb24gYmxvY2tfc2l6ZSBhbmQgdGhlIHNpemUgb2YgdGhlCitzZWxlY3RlZCBjcnlwdG9ncmFwaGljIGRpZ2VzdCBhbGdvcml0aG0uICBUaGUgaGFzaGVzIGFyZSBsaW5lYXJseS1vcmRlcmVkIGluCit0aGlzIGVudHJ5IGFuZCBhbnkgdW5hbGlnbmVkIHRyYWlsaW5nIHNwYWNlIGlzIGlnbm9yZWQgYnV0IGluY2x1ZGVkIHdoZW4KK2NhbGN1bGF0aW5nIHRoZSBwYXJlbnQgbm9kZS4KKworVGhlIHRyZWUgbG9va3Mgc29tZXRoaW5nIGxpa2U6CisKK2FsZyA9IHNoYTI1NiwgbnVtX2Jsb2NrcyA9IDMyNzY4LCBibG9ja19zaXplID0gNDA5NgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbICAgcm9vdCAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gICAgLiAuIC4gICAgXAorICAgICAgICAgICAgICAgICAgICAgW2VudHJ5XzBdICAgICAgICAgICAgICAgICBbZW50cnlfMV0KKyAgICAgICAgICAgICAgICAgICAgLyAgLiAuIC4gIFwgICAgICAgICAgICAgICAgIC4gLiAuICAgXAorICAgICAgICAgW2VudHJ5XzBfMF0gICAuIC4gLiAgW2VudHJ5XzBfMTI3XSAgICAuIC4gLiAuICBbZW50cnlfMV8xMjddCisgICAgICAgICAgIC8gLi4uIFwgICAgICAgICAgICAgLyAgIC4gLiAuICBcICAgICAgICAgICAgIC8gICAgICAgICAgIFwKKyAgICAgYmxrXzAgLi4uIGJsa18xMjcgIGJsa18xNjI1NiAgIGJsa18xNjM4MyAgICAgIGJsa18zMjY0MCAuIC4gLiBibGtfMzI3NjcKKworCitPbi1kaXNrIGZvcm1hdAorPT09PT09PT09PT09PT0KKworVGhlIHZlcml0eSBrZXJuZWwgY29kZSBkb2VzIG5vdCByZWFkIHRoZSB2ZXJpdHkgbWV0YWRhdGEgb24tZGlzayBoZWFkZXIuCitJdCBvbmx5IHJlYWRzIHRoZSBoYXNoIGJsb2NrcyB3aGljaCBkaXJlY3RseSBmb2xsb3cgdGhlIGhlYWRlci4KK0l0IGlzIGV4cGVjdGVkIHRoYXQgYSB1c2VyLXNwYWNlIHRvb2wgd2lsbCB2ZXJpZnkgdGhlIGludGVncml0eSBvZiB0aGUKK3Zlcml0eSBoZWFkZXIuCisKK0FsdGVybmF0aXZlbHksIHRoZSBoZWFkZXIgY2FuIGJlIG9taXR0ZWQgYW5kIHRoZSBkbXNldHVwIHBhcmFtZXRlcnMgY2FuCitiZSBwYXNzZWQgdmlhIHRoZSBrZXJuZWwgY29tbWFuZC1saW5lIGluIGEgcm9vdGVkIGNoYWluIG9mIHRydXN0IHdoZXJlCit0aGUgY29tbWFuZC1saW5lIGlzIHZlcmlmaWVkLgorCitEaXJlY3RseSBmb2xsb3dpbmcgdGhlIGhlYWRlciAoYW5kIHdpdGggc2VjdG9yIG51bWJlciBwYWRkZWQgdG8gdGhlIG5leHQgaGFzaAorYmxvY2sgYm91bmRhcnkpIGFyZSB0aGUgaGFzaCBibG9ja3Mgd2hpY2ggYXJlIHN0b3JlZCBhIGRlcHRoIGF0IGEgdGltZQorKHN0YXJ0aW5nIGZyb20gdGhlIHJvb3QpLCBzb3J0ZWQgaW4gb3JkZXIgb2YgaW5jcmVhc2luZyBpbmRleC4KKworVGhlIGZ1bGwgc3BlY2lmaWNhdGlvbiBvZiBrZXJuZWwgcGFyYW1ldGVycyBhbmQgb24tZGlzayBtZXRhZGF0YSBmb3JtYXQKK2lzIGF2YWlsYWJsZSBhdCB0aGUgY3J5cHRzZXR1cCBwcm9qZWN0J3Mgd2lraSBwYWdlCisgIGh0dHBzOi8vZ2l0bGFiLmNvbS9jcnlwdHNldHVwL2NyeXB0c2V0dXAvd2lraXMvRE1WZXJpdHkKKworU3RhdHVzCis9PT09PT0KK1YgKGZvciBWYWxpZCkgaXMgcmV0dXJuZWQgaWYgZXZlcnkgY2hlY2sgcGVyZm9ybWVkIHNvIGZhciB3YXMgdmFsaWQuCitJZiBhbnkgY2hlY2sgZmFpbGVkLCBDIChmb3IgQ29ycnVwdGlvbikgaXMgcmV0dXJuZWQuCisKK0V4YW1wbGUKKz09PT09PT0KK1NldCB1cCBhIGRldmljZToKKyAgIyBkbXNldHVwIGNyZWF0ZSB2cm9vdCAtLXJlYWRvbmx5IC0tdGFibGUgXAorICAgICIwIDIwOTcxNTIgdmVyaXR5IDEgL2Rldi9zZGExIC9kZXYvc2RhMiA0MDk2IDQwOTYgMjYyMTQ0IDEgc2hhMjU2ICJcCisgICAgIjQzOTI3MTJiYTAxMzY4ZWZkZjE0YjA1Yzc2ZjllNGRmMGQ1MzY2NDYzMGI1ZDQ4NjMyZWQxN2ExMzdmMzkwNzYgIlwKKyAgICAiMTIzNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIKKworQSBjb21tYW5kIGxpbmUgdG9vbCB2ZXJpdHlzZXR1cCBpcyBhdmFpbGFibGUgdG8gY29tcHV0ZSBvciB2ZXJpZnkKK3RoZSBoYXNoIHRyZWUgb3IgYWN0aXZhdGUgdGhlIGtlcm5lbCBkZXZpY2UuIFRoaXMgaXMgYXZhaWxhYmxlIGZyb20KK3RoZSBjcnlwdHNldHVwIHVwc3RyZWFtIHJlcG9zaXRvcnkgaHR0cHM6Ly9naXRsYWIuY29tL2NyeXB0c2V0dXAvY3J5cHRzZXR1cC8KKyhhcyBhIGxpYmNyeXB0c2V0dXAgZXh0ZW5zaW9uKS4KKworQ3JlYXRlIGhhc2ggb24gdGhlIGRldmljZToKKyAgIyB2ZXJpdHlzZXR1cCBmb3JtYXQgL2Rldi9zZGExIC9kZXYvc2RhMgorICAuLi4KKyAgUm9vdCBoYXNoOiA0MzkyNzEyYmEwMTM2OGVmZGYxNGIwNWM3NmY5ZTRkZjBkNTM2NjQ2MzBiNWQ0ODYzMmVkMTdhMTM3ZjM5MDc2CisKK0FjdGl2YXRlIHRoZSBkZXZpY2U6CisgICMgdmVyaXR5c2V0dXAgY3JlYXRlIHZyb290IC9kZXYvc2RhMSAvZGV2L3NkYTIgXAorICAgIDQzOTI3MTJiYTAxMzY4ZWZkZjE0YjA1Yzc2ZjllNGRmMGQ1MzY2NDYzMGI1ZDQ4NjMyZWQxN2ExMzdmMzkwNzYKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci96ZXJvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNlLW1hcHBlci96ZXJvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGZiMzhlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL3plcm8udHh0CkBAIC0wLDAgKzEsMzcgQEAKK2RtLXplcm8KKz09PT09PT0KKworRGV2aWNlLU1hcHBlcidzICJ6ZXJvIiB0YXJnZXQgcHJvdmlkZXMgYSBibG9jay1kZXZpY2UgdGhhdCBhbHdheXMgcmV0dXJucworemVybydkIGRhdGEgb24gcmVhZHMgYW5kIHNpbGVudGx5IGRyb3BzIHdyaXRlcy4gVGhpcyBpcyBzaW1pbGFyIGJlaGF2aW9yIHRvCisvZGV2L3plcm8sIGJ1dCBhcyBhIGJsb2NrLWRldmljZSBpbnN0ZWFkIG9mIGEgY2hhcmFjdGVyLWRldmljZS4KKworRG0temVybyBoYXMgbm8gdGFyZ2V0LXNwZWNpZmljIHBhcmFtZXRlcnMuCisKK09uZSB2ZXJ5IGludGVyZXN0aW5nIHVzZSBvZiBkbS16ZXJvIGlzIGZvciBjcmVhdGluZyAic3BhcnNlIiBkZXZpY2VzIGluCitjb25qdW5jdGlvbiB3aXRoIGRtLXNuYXBzaG90LiBBIHNwYXJzZSBkZXZpY2UgcmVwb3J0cyBhIGRldmljZS1zaXplIGxhcmdlcgordGhhbiB0aGUgYW1vdW50IG9mIGFjdHVhbCBzdG9yYWdlIHNwYWNlIGF2YWlsYWJsZSBmb3IgdGhhdCBkZXZpY2UuIEEgdXNlciBjYW4KK3dyaXRlIGRhdGEgYW55d2hlcmUgd2l0aGluIHRoZSBzcGFyc2UgZGV2aWNlIGFuZCByZWFkIGl0IGJhY2sgbGlrZSBhIG5vcm1hbAorZGV2aWNlLiBSZWFkcyB0byBwcmV2aW91c2x5IHVud3JpdHRlbiBhcmVhcyB3aWxsIHJldHVybiBhIHplcm8nZCBidWZmZXIuIFdoZW4KK2Vub3VnaCBkYXRhIGhhcyBiZWVuIHdyaXR0ZW4gdG8gZmlsbCB1cCB0aGUgYWN0dWFsIHN0b3JhZ2Ugc3BhY2UsIHRoZSBzcGFyc2UKK2RldmljZSBpcyBkZWFjdGl2YXRlZC4gVGhpcyBjYW4gYmUgdmVyeSB1c2VmdWwgZm9yIHRlc3RpbmcgZGV2aWNlIGFuZAorZmlsZXN5c3RlbSBsaW1pdGF0aW9ucy4KKworVG8gY3JlYXRlIGEgc3BhcnNlIGRldmljZSwgc3RhcnQgYnkgY3JlYXRpbmcgYSBkbS16ZXJvIGRldmljZSB0aGF0J3MgdGhlCitkZXNpcmVkIHNpemUgb2YgdGhlIHNwYXJzZSBkZXZpY2UuIEZvciB0aGlzIGV4YW1wbGUsIHdlJ2xsIGFzc3VtZSBhIDEwVEIKK3NwYXJzZSBkZXZpY2UuCisKK1RFTl9URVJBQllURVM9YGV4cHIgMTAgXCogMTAyNCBcKiAxMDI0IFwqIDEwMjQgXCogMmAgICAjIDEwIFRCIGluIHNlY3RvcnMKK2VjaG8gIjAgJFRFTl9URVJBQllURVMgemVybyIgfCBkbXNldHVwIGNyZWF0ZSB6ZXJvMQorCitUaGVuIGNyZWF0ZSBhIHNuYXBzaG90IG9mIHRoZSB6ZXJvIGRldmljZSwgdXNpbmcgYW55IGF2YWlsYWJsZSBibG9jay1kZXZpY2UgYXMKK3RoZSBDT1cgZGV2aWNlLiBUaGUgc2l6ZSBvZiB0aGUgQ09XIGRldmljZSB3aWxsIGRldGVybWluZSB0aGUgYW1vdW50IG9mIHJlYWwKK3NwYWNlIGF2YWlsYWJsZSB0byB0aGUgc3BhcnNlIGRldmljZS4gRm9yIHRoaXMgZXhhbXBsZSwgd2UnbGwgYXNzdW1lIC9kZXYvc2RiMQoraXMgYW4gYXZhaWxhYmxlIDEwR0IgcGFydGl0aW9uLgorCitlY2hvICIwICRURU5fVEVSQUJZVEVTIHNuYXBzaG90IC9kZXYvbWFwcGVyL3plcm8xIC9kZXYvc2RiMSBwIDEyOCIgfCBcCisgICBkbXNldHVwIGNyZWF0ZSBzcGFyc2UxCisKK1RoaXMgd2lsbCBjcmVhdGUgYSAxMFRCIHNwYXJzZSBkZXZpY2UgY2FsbGVkIC9kZXYvbWFwcGVyL3NwYXJzZTEgdGhhdCBoYXMKKzEwR0Igb2YgYWN0dWFsIHN0b3JhZ2Ugc3BhY2UgYXZhaWxhYmxlLiBJZiBtb3JlIHRoYW4gMTBHQiBvZiBkYXRhIGlzIHdyaXR0ZW4KK3RvIHRoaXMgZGV2aWNlLCBpdCB3aWxsIHN0YXJ0IHJldHVybmluZyBJL08gZXJyb3JzLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2VzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2I0YzVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2VzLnR4dApAQCAtMCwwICsxLDMzNTUgQEAKKworCQkgICAgTElOVVggQUxMT0NBVEVEIERFVklDRVMgKDIuNisgdmVyc2lvbikKKworCSAgICAgTWFpbnRhaW5lZCBieSBBbGFuIENveCA8ZGV2aWNlQGxhbmFuYS5vcmc+CisKKwkJICAgICAgTGFzdCByZXZpc2VkOiA2dGggQXByaWwgMjAwOQorCitUaGlzIGxpc3QgaXMgdGhlIExpbnV4IERldmljZSBMaXN0LCB0aGUgb2ZmaWNpYWwgcmVnaXN0cnkgb2YgYWxsb2NhdGVkCitkZXZpY2UgbnVtYmVycyBhbmQgL2RldiBkaXJlY3Rvcnkgbm9kZXMgZm9yIHRoZSBMaW51eCBvcGVyYXRpbmcKK3N5c3RlbS4KKworVGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbGlzdCBpcyBhdmFpbGFibGUgZnJvbQoraHR0cDovL3d3dy5sYW5hbmEub3JnL2RvY3MvZGV2aWNlLWxpc3QvIG9yCitmdHA6Ly9mdHAua2VybmVsLm9yZy9wdWIvbGludXgvZG9jcy9kZXZpY2UtbGlzdC8uICBUaGlzIHZlcnNpb24gbWF5IGJlCituZXdlciB0aGFuIHRoZSBvbmUgZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTGludXgga2VybmVsLgorCitUaGUgTGFUZVggdmVyc2lvbiBvZiB0aGlzIGRvY3VtZW50IGlzIG5vIGxvbmdlciBtYWludGFpbmVkLgorCitUaGlzIGRvY3VtZW50IGlzIGluY2x1ZGVkIGJ5IHJlZmVyZW5jZSBpbnRvIHRoZSBGaWxlc3lzdGVtIEhpZXJhcmNoeQorU3RhbmRhcmQgKEZIUykuCSBUaGUgRkhTIGlzIGF2YWlsYWJsZSBmcm9tIGh0dHA6Ly93d3cucGF0aG5hbWUuY29tL2Zocy8uCisKK0FsbG9jYXRpb25zIG1hcmtlZCAoNjhrL0FtaWdhKSBhcHBseSB0byBMaW51eC82OGsgb24gdGhlIEFtaWdhCitwbGF0Zm9ybSBvbmx5LglBbGxvY2F0aW9ucyBtYXJrZWQgKDY4ay9BdGFyaSkgYXBwbHkgdG8gTGludXgvNjhrIG9uCit0aGUgQXRhcmkgcGxhdGZvcm0gb25seS4KKworVGhlIHN5bWJvbCB7Mi42fSBtZWFucyB0aGUgYWxsb2NhdGlvbiBpcyBvYnNvbGV0ZSBhbmQgc2NoZWR1bGVkIGZvcgorcmVtb3ZhbCBvbmNlIGtlcm5lbCB2ZXJzaW9uIDIuNiAob3IgZXF1aXZhbGVudCkgaXMgcmVsZWFzZWQuIFNvbWUgb2YgdGhlc2UKK2FsbG9jYXRpb25zIGhhdmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQuCisKK1RoaXMgZG9jdW1lbnQgaXMgaW4gdGhlIHB1YmxpYyBkb21haW4uCVRoZSBhdXRob3IgcmVxdWVzdHMsIGhvd2V2ZXIsCit0aGF0IHNlbWFudGljYWxseSBhbHRlcmVkIHZlcnNpb25zIGFyZSBub3QgZGlzdHJpYnV0ZWQgd2l0aG91dAorcGVybWlzc2lvbiBvZiB0aGUgYXV0aG9yLCBhc3N1bWluZyB0aGUgYXV0aG9yIGNhbiBiZSBjb250YWN0ZWQgd2l0aG91dAorYW4gdW5yZWFzb25hYmxlIGVmZm9ydC4KKworSW4gcGFydGljdWxhciwgcGxlYXNlIGRvbid0IHNlbnQgcGF0Y2hlcyBmb3IgdGhpcyBsaXN0IHRvIExpbnVzLCBhdAorbGVhc3Qgbm90IHdpdGhvdXQgY29udGFjdGluZyBtZSBmaXJzdC4KKworSSBkbyBub3QgaGF2ZSBhbnkgaW5mb3JtYXRpb24gYWJvdXQgdGhlc2UgZGV2aWNlcyBiZXlvbmQgd2hhdCBhcHBlYXJzCitvbiB0aGlzIGxpc3QuICBBbnkgc3VjaCBpbmZvcm1hdGlvbiByZXF1ZXN0cyB3aWxsIGJlIGRlbGV0ZWQgd2l0aG91dAorcmVwbHkuCisKKworCSAgKioqKiBERVZJQ0UgRFJJVkVSUyBBVVRIT1JTIFBMRUFTRSBSRUFEIFRISVMgKioqKgorCitUbyBoYXZlIGEgbWFqb3IgbnVtYmVyIGFsbG9jYXRlZCwgb3IgYSBtaW5vciBudW1iZXIgaW4gc2l0dWF0aW9ucword2hlcmUgdGhhdCBhcHBsaWVzIChlLmcuIGJ1c21pY2UpLCBwbGVhc2UgY29udGFjdCBtZSB3aXRoIHRoZQorYXBwcm9wcmlhdGUgZGV2aWNlIGluZm9ybWF0aW9uLgkgQWxzbywgaWYgeW91IGhhdmUgYWRkaXRpb25hbAoraW5mb3JtYXRpb24gcmVnYXJkaW5nIGFueSBvZiB0aGUgZGV2aWNlcyBsaXN0ZWQgYmVsb3csIG9yIGlmIEkgaGF2ZQorbWFkZSBhIG1pc3Rha2UsIEkgd291bGQgZ3JlYXRseSBhcHByZWNpYXRlIGEgbm90ZS4KKworSSBkbywgaG93ZXZlciwgbWFrZSBhIGZldyByZXF1ZXN0cyBhYm91dCB0aGUgbmF0dXJlIG9mIHlvdXIgcmVwb3J0LgorVGhpcyBpcyBuZWNlc3NhcnkgZm9yIG1lIHRvIGJlIGFibGUgdG8ga2VlcCB0aGlzIGxpc3QgdXAgdG8gZGF0ZSBhbmQKK2NvcnJlY3QgaW4gYSB0aW1lbHkgbWFubmVyLiAgRmlyc3Qgb2YgYWxsLCAqcGxlYXNlKiBzZW5kIGl0IHRvIHRoZQorY29ycmVjdCBhZGRyZXNzLi4uIDxkZXZpY2VAbGFuYW5hLm9yZz4uICBJIHJlY2VpdmUgaHVuZHJlZHMgb2YgZW1haWwKK21lc3NhZ2VzIGEgZGF5LCBzbyBtYWlsIHNlbnQgdG8gb3RoZXIgYWRkcmVzc2VzIG1heSB2ZXJ5IHdlbGwgZ2V0IGxvc3QKK2luIHRoZSBhdmFsYW5jaGUuICBQbGVhc2UgcHV0IGluIGEgZGVzY3JpcHRpdmUgc3ViamVjdCwgc28gSSBjYW4gZmluZAoreW91ciBtYWlsIGFnYWluIHNob3VsZCBJIG5lZWQgdG8uICBUb28gbWFueSBwZW9wbGUgc2VuZCBtZSBlbWFpbAorc2F5aW5nIGp1c3QgImRldmljZSBudW1iZXIgcmVxdWVzdCIgaW4gdGhlIHN1YmplY3QuCisKK1NlY29uZCwgcGxlYXNlIGluY2x1ZGUgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZGV2aWNlICppbiB0aGUgc2FtZSBmb3JtYXQKK2FzIHRoaXMgbGlzdCouCVRoZSByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCBpdCBpcyB0aGUgb25seSB3YXkgSSBoYXZlCitmb3VuZCB0byBlbnN1cmUgSSBoYXZlIGFsbCB0aGUgcmVxdWlzaXRlIGluZm9ybWF0aW9uIHRvIHB1Ymxpc2ggeW91cgorZGV2aWNlIGFuZCBhdm9pZCBjb25mbGljdHMuCisKK1RoaXJkLCBwbGVhc2UgZG9uJ3QgYXNzdW1lIHRoYXQgdGhlIGRpc3RyaWJ1dGVkIHZlcnNpb24gb2YgdGhlIGxpc3QgaXMKK3VwIHRvIGRhdGUuICBEdWUgdG8gdGhlIG51bWJlciBvZiByZWdpc3RyYXRpb25zIEkgaGF2ZSB0byBtYWludGFpbiBpdAoraW4gImJhdGNoIG1vZGUiLCBzbyB0aGVyZSBpcyBsaWtlbHkgYWRkaXRpb25hbCByZWdpc3RyYXRpb25zIHRoYXQKK2hhdmVuJ3QgYmVlbiBsaXN0ZWQgeWV0LgorCitGb3VydGgsIHJlbWVtYmVyIHRoYXQgTGludXggbm93IGhhcyBleHRlbnNpdmUgc3VwcG9ydCBmb3IgZHluYW1pYyBhbGxvY2F0aW9uCitvZiBkZXZpY2UgbnVtYmVyaW5nIGFuZCBjYW4gdXNlIHN5c2ZzIGFuZCB1ZGV2IHRvIGhhbmRsZSB0aGUgbmFtaW5nIG5lZWRzLgorVGhlcmUgYXJlIHN0aWxsIHNvbWUgZXhjZXB0aW9ucyBpbiB0aGUgc2VyaWFsIGFuZCBib290IGRldmljZSBhcmVhLiBCZWZvcmUKK2Fza2luZyBmb3IgYSBkZXZpY2UgbnVtYmVyIG1ha2Ugc3VyZSB5b3UgYWN0dWFsbHkgbmVlZCBvbmUuCisKK0ZpbmFsbHksIHNvbWV0aW1lcyBJIGhhdmUgdG8gcGxheSAibmFtZXNwYWNlIHBvbGljZS4iICBQbGVhc2UgZG9uJ3QgYmUKK29mZmVuZGVkLiAgSSBvZnRlbiBnZXQgc3VibWlzc2lvbnMgZm9yIC9kZXYgbmFtZXMgdGhhdCB3b3VsZCBiZSBib3VuZAordG8gY2F1c2UgY29uZmxpY3RzIGRvd24gdGhlIHJvYWQuICBJIGFtIHRyeWluZyB0byBhdm9pZCBnZXR0aW5nIGluIGEKK3NpdHVhdGlvbiB3aGVyZSB3ZSB3b3VsZCBoYXZlIHRvIHN1ZmZlciBhbiBpbmNvbXBhdGlibGUgZm9yd2FyZAorY2hhbmdlLiAgVGhlcmVmb3JlLCBwbGVhc2UgY29uc3VsdCB3aXRoIG1lICpiZWZvcmUqIHlvdSBtYWtlIHlvdXIKK2RldmljZSBuYW1lcyBhbmQgbnVtYmVycyBpbiBhbnkgd2F5IHB1YmxpYywgYXQgbGVhc3QgdG8gdGhlIHBvaW50Cit3aGVyZSBpdCB3b3VsZCBiZSBhdCBhbGwgZGlmZmljdWx0IHRvIGdldCB0aGVtIGNoYW5nZWQuCisKK1lvdXIgY29vcGVyYXRpb24gaXMgYXBwcmVjaWF0ZWQuCisKKworICAwCQlVbm5hbWVkIGRldmljZXMgKGUuZy4gbm9uLWRldmljZSBtb3VudHMpCisJCSAgMCA9IHJlc2VydmVkIGFzIG51bGwgZGV2aWNlIG51bWJlcgorCQlTZWUgYmxvY2sgbWFqb3IgMTQ0LCAxNDUsIDE0NiBmb3IgZXhwYW5zaW9uIGFyZWFzLgorCisgIDEgY2hhcglNZW1vcnkgZGV2aWNlcworCQkgIDEgPSAvZGV2L21lbQkJUGh5c2ljYWwgbWVtb3J5IGFjY2VzcworCQkgIDIgPSAvZGV2L2ttZW0JCUtlcm5lbCB2aXJ0dWFsIG1lbW9yeSBhY2Nlc3MKKwkJICAzID0gL2Rldi9udWxsCQlOdWxsIGRldmljZQorCQkgIDQgPSAvZGV2L3BvcnQJCUkvTyBwb3J0IGFjY2VzcworCQkgIDUgPSAvZGV2L3plcm8JCU51bGwgYnl0ZSBzb3VyY2UKKwkJICA2ID0gL2Rldi9jb3JlCQlPQlNPTEVURSAtIHJlcGxhY2VkIGJ5IC9wcm9jL2tjb3JlCisJCSAgNyA9IC9kZXYvZnVsbAkJUmV0dXJucyBFTk9TUEMgb24gd3JpdGUKKwkJICA4ID0gL2Rldi9yYW5kb20JTm9uZGV0ZXJtaW5pc3RpYyByYW5kb20gbnVtYmVyIGdlbi4KKwkJICA5ID0gL2Rldi91cmFuZG9tCUZhc3RlciwgbGVzcyBzZWN1cmUgcmFuZG9tIG51bWJlciBnZW4uCisJCSAxMCA9IC9kZXYvYWlvCQlBc3luY2hyb25vdXMgSS9PIG5vdGlmaWNhdGlvbiBpbnRlcmZhY2UKKwkJIDExID0gL2Rldi9rbXNnCQlXcml0ZXMgdG8gdGhpcyBjb21lIG91dCBhcyBwcmludGsncywgcmVhZHMKKwkJCQkJZXhwb3J0IHRoZSBidWZmZXJlZCBwcmludGsgcmVjb3Jkcy4KKwkJIDEyID0gL2Rldi9vbGRtZW0JT0JTT0xFVEUgLSByZXBsYWNlZCBieSAvcHJvYy92bWNvcmUKKworICAxIGJsb2NrCVJBTSBkaXNrCisJCSAgMCA9IC9kZXYvcmFtMAkJRmlyc3QgUkFNIGRpc2sKKwkJICAxID0gL2Rldi9yYW0xCQlTZWNvbmQgUkFNIGRpc2sKKwkJICAgIC4uLgorCQkyNTAgPSAvZGV2L2luaXRyZAlJbml0aWFsIFJBTSBkaXNrCisKKwkJT2xkZXIga2VybmVscyBoYWQgL2Rldi9yYW1kaXNrICgxLCAxKSBoZXJlLgorCQkvZGV2L2luaXRyZCByZWZlcnMgdG8gYSBSQU0gZGlzayB3aGljaCB3YXMgcHJlbG9hZGVkCisJCWJ5IHRoZSBib290IGxvYWRlcjsgbmV3ZXIga2VybmVscyB1c2UgL2Rldi9yYW0wIGZvcgorCQl0aGUgaW5pdHJkLgorCisgIDIgY2hhcglQc2V1ZG8tVFRZIG1hc3RlcnMKKwkJICAwID0gL2Rldi9wdHlwMAlGaXJzdCBQVFkgbWFzdGVyCisJCSAgMSA9IC9kZXYvcHR5cDEJU2Vjb25kIFBUWSBtYXN0ZXIKKwkJICAgIC4uLgorCQkyNTUgPSAvZGV2L3B0eWVmCTI1NnRoIFBUWSBtYXN0ZXIKKworCQlQc2V1ZG8tdHR5J3MgYXJlIG5hbWVkIGFzIGZvbGxvd3M6CisJCSogTWFzdGVycyBhcmUgInB0eSIsIHNsYXZlcyBhcmUgInR0eSI7CisJCSogdGhlIGZvdXJ0aCBsZXR0ZXIgaXMgb25lIG9mIHBxcnN0dXZ3eHl6YWJjZGUgaW5kaWNhdGluZworCQkgIHRoZSAxc3QgdGhyb3VnaCAxNnRoIHNlcmllcyBvZiAxNiBwc2V1ZG8tdHR5cyBlYWNoLCBhbmQKKwkJKiB0aGUgZmlmdGggbGV0dGVyIGlzIG9uZSBvZiAwMTIzNDU2Nzg5YWJjZGVmIGluZGljYXRpbmcKKwkJICB0aGUgcG9zaXRpb24gd2l0aGluIHRoZSBzZXJpZXMuCisKKwkJVGhlc2UgYXJlIHRoZSBvbGQtc3R5bGUgKEJTRCkgUFRZIGRldmljZXM7IFVuaXg5OAorCQlkZXZpY2VzIGFyZSBvbiBtYWpvciAxMjggYW5kIGFib3ZlIGFuZCB1c2UgdGhlIFBUWQorCQltYXN0ZXIgbXVsdGlwbGV4ICgvZGV2L3B0bXgpIHRvIGFjcXVpcmUgYSBQVFkgb24KKwkJZGVtYW5kLgorCisgIDIgYmxvY2sJRmxvcHB5IGRpc2tzCisJCSAgMCA9IC9kZXYvZmQwCQlDb250cm9sbGVyIDAsIGRyaXZlIDAsIGF1dG9kZXRlY3QKKwkJICAxID0gL2Rldi9mZDEJCUNvbnRyb2xsZXIgMCwgZHJpdmUgMSwgYXV0b2RldGVjdAorCQkgIDIgPSAvZGV2L2ZkMgkJQ29udHJvbGxlciAwLCBkcml2ZSAyLCBhdXRvZGV0ZWN0CisJCSAgMyA9IC9kZXYvZmQzCQlDb250cm9sbGVyIDAsIGRyaXZlIDMsIGF1dG9kZXRlY3QKKwkJMTI4ID0gL2Rldi9mZDQJCUNvbnRyb2xsZXIgMSwgZHJpdmUgMCwgYXV0b2RldGVjdAorCQkxMjkgPSAvZGV2L2ZkNQkJQ29udHJvbGxlciAxLCBkcml2ZSAxLCBhdXRvZGV0ZWN0CisJCTEzMCA9IC9kZXYvZmQ2CQlDb250cm9sbGVyIDEsIGRyaXZlIDIsIGF1dG9kZXRlY3QKKwkJMTMxID0gL2Rldi9mZDcJCUNvbnRyb2xsZXIgMSwgZHJpdmUgMywgYXV0b2RldGVjdAorCisJCVRvIHNwZWNpZnkgZm9ybWF0LCBhZGQgdG8gdGhlIGF1dG9kZXRlY3QgZGV2aWNlIG51bWJlcjoKKwkJICAwID0gL2Rldi9mZD8JCUF1dG9kZXRlY3QgZm9ybWF0CisJCSAgNCA9IC9kZXYvZmQ/ZDM2MAk1LjI1IiAgMzYwSyBpbiBhIDM2MEsgIGRyaXZlKDEpCisJCSAyMCA9IC9kZXYvZmQ/aDM2MAk1LjI1IiAgMzYwSyBpbiBhIDEyMDBLIGRyaXZlKDEpCisJCSA0OCA9IC9kZXYvZmQ/aDQxMAk1LjI1IiAgNDEwSyBpbiBhIDEyMDBLIGRyaXZlCisJCSA2NCA9IC9kZXYvZmQ/aDQyMAk1LjI1IiAgNDIwSyBpbiBhIDEyMDBLIGRyaXZlCisJCSAyNCA9IC9kZXYvZmQ/aDcyMAk1LjI1IiAgNzIwSyBpbiBhIDEyMDBLIGRyaXZlCisJCSA4MCA9IC9kZXYvZmQ/aDg4MAk1LjI1IiAgODgwSyBpbiBhIDEyMDBLIGRyaXZlKDEpCisJCSAgOCA9IC9kZXYvZmQ/aDEyMDAJNS4yNSIgMTIwMEsgaW4gYSAxMjAwSyBkcml2ZSgxKQorCQkgNDAgPSAvZGV2L2ZkP2gxNDQwCTUuMjUiIDE0NDBLIGluIGEgMTIwMEsgZHJpdmUoMSkKKwkJIDU2ID0gL2Rldi9mZD9oMTQ3Ngk1LjI1IiAxNDc2SyBpbiBhIDEyMDBLIGRyaXZlCisJCSA3MiA9IC9kZXYvZmQ/aDE0OTQJNS4yNSIgMTQ5NEsgaW4gYSAxMjAwSyBkcml2ZQorCQkgOTIgPSAvZGV2L2ZkP2gxNjAwCTUuMjUiIDE2MDBLIGluIGEgMTIwMEsgZHJpdmUoMSkKKworCQkgMTIgPSAvZGV2L2ZkP3UzNjAJMy41IiAgIDM2MEsgRG91YmxlIERlbnNpdHkoMikKKwkJIDE2ID0gL2Rldi9mZD91NzIwCTMuNSIgICA3MjBLIERvdWJsZSBEZW5zaXR5KDEpCisJCTEyMCA9IC9kZXYvZmQ/dTgwMAkzLjUiICAgODAwSyBEb3VibGUgRGVuc2l0eSgyKQorCQkgNTIgPSAvZGV2L2ZkP3U4MjAJMy41IiAgIDgyMEsgRG91YmxlIERlbnNpdHkKKwkJIDY4ID0gL2Rldi9mZD91ODMwCTMuNSIgICA4MzBLIERvdWJsZSBEZW5zaXR5CisJCSA4NCA9IC9kZXYvZmQ/dTEwNDAJMy41IiAgMTA0MEsgRG91YmxlIERlbnNpdHkoMSkKKwkJIDg4ID0gL2Rldi9mZD91MTEyMAkzLjUiICAxMTIwSyBEb3VibGUgRGVuc2l0eSgxKQorCQkgMjggPSAvZGV2L2ZkP3UxNDQwCTMuNSIgIDE0NDBLIEhpZ2ggRGVuc2l0eSgxKQorCQkxMjQgPSAvZGV2L2ZkP3UxNjAwCTMuNSIgIDE2MDBLIEhpZ2ggRGVuc2l0eSgxKQorCQkgNDQgPSAvZGV2L2ZkP3UxNjgwCTMuNSIgIDE2ODBLIEhpZ2ggRGVuc2l0eSgzKQorCQkgNjAgPSAvZGV2L2ZkP3UxNzIyCTMuNSIgIDE3MjJLIEhpZ2ggRGVuc2l0eQorCQkgNzYgPSAvZGV2L2ZkP3UxNzQzCTMuNSIgIDE3NDNLIEhpZ2ggRGVuc2l0eQorCQkgOTYgPSAvZGV2L2ZkP3UxNzYwCTMuNSIgIDE3NjBLIEhpZ2ggRGVuc2l0eQorCQkxMTYgPSAvZGV2L2ZkP3UxODQwCTMuNSIgIDE4NDBLIEhpZ2ggRGVuc2l0eSgzKQorCQkxMDAgPSAvZGV2L2ZkP3UxOTIwCTMuNSIgIDE5MjBLIEhpZ2ggRGVuc2l0eSgxKQorCQkgMzIgPSAvZGV2L2ZkP3UyODgwCTMuNSIgIDI4ODBLIEV4dHJhIERlbnNpdHkoMSkKKwkJMTA0ID0gL2Rldi9mZD91MzIwMAkzLjUiICAzMjAwSyBFeHRyYSBEZW5zaXR5CisJCTEwOCA9IC9kZXYvZmQ/dTM1MjAJMy41IiAgMzUyMEsgRXh0cmEgRGVuc2l0eQorCQkxMTIgPSAvZGV2L2ZkP3UzODQwCTMuNSIgIDM4NDBLIEV4dHJhIERlbnNpdHkoMSkKKworCQkgMzYgPSAvZGV2L2ZkP0NvbXBhUQlDb21wYXEgMjg4MEsgZHJpdmU7IG9ic29sZXRlPworCisJCSgxKSBBdXRvZGV0ZWN0YWJsZSBmb3JtYXQKKwkJKDIpIEF1dG9kZXRlY3RhYmxlIGZvcm1hdCBpbiBhIERvdWJsZSBEZW5zaXR5ICg3MjBLKSBkcml2ZSBvbmx5CisJCSgzKSBBdXRvZGV0ZWN0YWJsZSBmb3JtYXQgaW4gYSBIaWdoIERlbnNpdHkgKDE0NDBLKSBkcml2ZSBvbmx5CisKKwkJTk9URTogVGhlIGxldHRlciBpbiB0aGUgZGV2aWNlIG5hbWUgKGQsIHEsIGggb3IgdSkKKwkJc2lnbmlmaWVzIHRoZSB0eXBlIG9mIGRyaXZlOiA1LjI1IiBEb3VibGUgRGVuc2l0eSAoZCksCisJCTUuMjUiIFF1YWQgRGVuc2l0eSAocSksIDUuMjUiIEhpZ2ggRGVuc2l0eSAoaCkgb3IgMy41IgorCQkoYW55IG1vZGVsLCB1KS4JIFRoZSB1c2Ugb2YgdGhlIGNhcGl0YWwgbGV0dGVycyBELCBICisJCWFuZCBFIGZvciB0aGUgMy41IiBtb2RlbHMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQsIHNpbmNlCisJCXRoZSBkcml2ZSB0eXBlIGlzIGluc2lnbmlmaWNhbnQgZm9yIHRoZXNlIGRldmljZXMuCisKKyAgMyBjaGFyCVBzZXVkby1UVFkgc2xhdmVzCisJCSAgMCA9IC9kZXYvdHR5cDAJRmlyc3QgUFRZIHNsYXZlCisJCSAgMSA9IC9kZXYvdHR5cDEJU2Vjb25kIFBUWSBzbGF2ZQorCQkgICAgLi4uCisJCTI1NSA9IC9kZXYvdHR5ZWYJMjU2dGggUFRZIHNsYXZlCisKKwkJVGhlc2UgYXJlIHRoZSBvbGQtc3R5bGUgKEJTRCkgUFRZIGRldmljZXM7IFVuaXg5OAorCQlkZXZpY2VzIGFyZSBvbiBtYWpvciAxMzYgYW5kIGFib3ZlLgorCisgIDMgYmxvY2sJRmlyc3QgTUZNLCBSTEwgYW5kIElERSBoYXJkIGRpc2svQ0QtUk9NIGludGVyZmFjZQorCQkgIDAgPSAvZGV2L2hkYQkJTWFzdGVyOiB3aG9sZSBkaXNrIChvciBDRC1ST00pCisJCSA2NCA9IC9kZXYvaGRiCQlTbGF2ZTogd2hvbGUgZGlzayAob3IgQ0QtUk9NKQorCisJCUZvciBwYXJ0aXRpb25zLCBhZGQgdG8gdGhlIHdob2xlIGRpc2sgZGV2aWNlIG51bWJlcjoKKwkJICAwID0gL2Rldi9oZD8JCVdob2xlIGRpc2sKKwkJICAxID0gL2Rldi9oZD8xCQlGaXJzdCBwYXJ0aXRpb24KKwkJICAyID0gL2Rldi9oZD8yCQlTZWNvbmQgcGFydGl0aW9uCisJCSAgICAuLi4KKwkJIDYzID0gL2Rldi9oZD82Mwk2M3JkIHBhcnRpdGlvbgorCisJCUZvciBMaW51eC9pMzg2LCBwYXJ0aXRpb25zIDEtNCBhcmUgdGhlIHByaW1hcnkKKwkJcGFydGl0aW9ucywgYW5kIDUgYW5kIGFib3ZlIGFyZSBsb2dpY2FsIHBhcnRpdGlvbnMuCisJCU90aGVyIHZlcnNpb25zIG9mIExpbnV4IHVzZSBwYXJ0aXRpb25pbmcgc2NoZW1lcworCQlhcHByb3ByaWF0ZSB0byB0aGVpciByZXNwZWN0aXZlIGFyY2hpdGVjdHVyZXMuCisKKyAgNCBjaGFyCVRUWSBkZXZpY2VzCisJCSAgMCA9IC9kZXYvdHR5MAkJQ3VycmVudCB2aXJ0dWFsIGNvbnNvbGUKKworCQkgIDEgPSAvZGV2L3R0eTEJCUZpcnN0IHZpcnR1YWwgY29uc29sZQorCQkgICAgLi4uCisJCSA2MyA9IC9kZXYvdHR5NjMJNjNyZCB2aXJ0dWFsIGNvbnNvbGUKKwkJIDY0ID0gL2Rldi90dHlTMAlGaXJzdCBVQVJUIHNlcmlhbCBwb3J0CisJCSAgICAuLi4KKwkJMjU1ID0gL2Rldi90dHlTMTkxCTE5Mm5kIFVBUlQgc2VyaWFsIHBvcnQKKworCQlVQVJUIHNlcmlhbCBwb3J0cyByZWZlciB0byA4MjUwLzE2NDUwLzE2NTUwIHNlcmllcyBkZXZpY2VzLgorCisJCU9sZGVyIHZlcnNpb25zIG9mIHRoZSBMaW51eCBrZXJuZWwgdXNlZCB0aGlzIG1ham9yCisJCW51bWJlciBmb3IgQlNEIFBUWSBkZXZpY2VzLiAgQXMgb2YgTGludXggMi4xLjExNSwgdGhpcworCQlpcyBubyBsb25nZXIgc3VwcG9ydGVkLgkgVXNlIG1ham9yIG51bWJlcnMgMiBhbmQgMy4KKworICA0IGJsb2NrCUFsaWFzZXMgZm9yIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBtYWpvciBkZXZpY2VzIHRvIGJlIHVzZWQKKwkJd2hlbiBpdHMgbm90IHBvc3NpYmxlIHRvIGNyZWF0ZSB0aGUgcmVhbCBkZXZpY2Ugbm9kZXMKKwkJYmVjYXVzZSB0aGUgcm9vdCBmaWxlc3lzdGVtIGlzIG1vdW50ZWQgcmVhZC1vbmx5LgorCisgICAgICAgICAgICAgICAgICAwID0gL2Rldi9yb290CisKKyAgNSBjaGFyCUFsdGVybmF0ZSBUVFkgZGV2aWNlcworCQkgIDAgPSAvZGV2L3R0eQkJQ3VycmVudCBUVFkgZGV2aWNlCisJCSAgMSA9IC9kZXYvY29uc29sZQlTeXN0ZW0gY29uc29sZQorCQkgIDIgPSAvZGV2L3B0bXgJCVBUWSBtYXN0ZXIgbXVsdGlwbGV4CisJCSAgMyA9IC9kZXYvdHR5cHJpbnRrCVVzZXIgbWVzc2FnZXMgdmlhIHByaW50ayBUVFkgZGV2aWNlCisJCSA2NCA9IC9kZXYvY3VhMAkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eVMwCisJCSAgICAuLi4KKwkJMjU1ID0gL2Rldi9jdWExOTEJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eVMxOTEKKworCQkoNSwxKSBpcyAvZGV2L2NvbnNvbGUgc3RhcnRpbmcgd2l0aCBMaW51eCAyLjEuNzEuICBTZWUKKwkJdGhlIHNlY3Rpb24gb24gdGVybWluYWwgZGV2aWNlcyBmb3IgbW9yZSBpbmZvcm1hdGlvbgorCQlvbiAvZGV2L2NvbnNvbGUuCisKKyAgNiBjaGFyCVBhcmFsbGVsIHByaW50ZXIgZGV2aWNlcworCQkgIDAgPSAvZGV2L2xwMAkJUGFyYWxsZWwgcHJpbnRlciBvbiBwYXJwb3J0MAorCQkgIDEgPSAvZGV2L2xwMQkJUGFyYWxsZWwgcHJpbnRlciBvbiBwYXJwb3J0MQorCQkgICAgLi4uCisKKwkJQ3VycmVudCBMaW51eCBrZXJuZWxzIG5vIGxvbmdlciBoYXZlIGEgZml4ZWQgbWFwcGluZworCQliZXR3ZWVuIHBhcmFsbGVsIHBvcnRzIGFuZCBJL08gYWRkcmVzc2VzLiAgSW5zdGVhZCwKKwkJdGhleSBhcmUgcmVkaXJlY3RlZCB0aHJvdWdoIHRoZSBwYXJwb3J0IG11bHRpcGxleCBsYXllci4KKworICA3IGNoYXIJVmlydHVhbCBjb25zb2xlIGNhcHR1cmUgZGV2aWNlcworCQkgIDAgPSAvZGV2L3ZjcwkJQ3VycmVudCB2YyB0ZXh0IGNvbnRlbnRzCisJCSAgMSA9IC9kZXYvdmNzMQkJdHR5MSB0ZXh0IGNvbnRlbnRzCisJCSAgICAuLi4KKwkJIDYzID0gL2Rldi92Y3M2Mwl0dHk2MyB0ZXh0IGNvbnRlbnRzCisJCTEyOCA9IC9kZXYvdmNzYQkJQ3VycmVudCB2YyB0ZXh0L2F0dHJpYnV0ZSBjb250ZW50cworCQkxMjkgPSAvZGV2L3Zjc2ExCXR0eTEgdGV4dC9hdHRyaWJ1dGUgY29udGVudHMKKwkJICAgIC4uLgorCQkxOTEgPSAvZGV2L3Zjc2E2Mwl0dHk2MyB0ZXh0L2F0dHJpYnV0ZSBjb250ZW50cworCisJCU5PVEU6IFRoZXNlIGRldmljZXMgcGVybWl0IGJvdGggcmVhZCBhbmQgd3JpdGUgYWNjZXNzLgorCisgIDcgYmxvY2sJTG9vcGJhY2sgZGV2aWNlcworCQkgIDAgPSAvZGV2L2xvb3AwCUZpcnN0IGxvb3AgZGV2aWNlCisJCSAgMSA9IC9kZXYvbG9vcDEJU2Vjb25kIGxvb3AgZGV2aWNlCisJCSAgICAuLi4KKworCQlUaGUgbG9vcCBkZXZpY2VzIGFyZSB1c2VkIHRvIG1vdW50IGZpbGVzeXN0ZW1zIG5vdAorCQlhc3NvY2lhdGVkIHdpdGggYmxvY2sgZGV2aWNlcy4JVGhlIGJpbmRpbmcgdG8gdGhlCisJCWxvb3AgZGV2aWNlcyBpcyBoYW5kbGVkIGJ5IG1vdW50KDgpIG9yIGxvc2V0dXAoOCkuCisKKyAgOCBibG9jawlTQ1NJIGRpc2sgZGV2aWNlcyAoMC0xNSkKKwkJICAwID0gL2Rldi9zZGEJCUZpcnN0IFNDU0kgZGlzayB3aG9sZSBkaXNrCisJCSAxNiA9IC9kZXYvc2RiCQlTZWNvbmQgU0NTSSBkaXNrIHdob2xlIGRpc2sKKwkJIDMyID0gL2Rldi9zZGMJCVRoaXJkIFNDU0kgZGlzayB3aG9sZSBkaXNrCisJCSAgICAuLi4KKwkJMjQwID0gL2Rldi9zZHAJCVNpeHRlZW50aCBTQ1NJIGRpc2sgd2hvbGUgZGlzaworCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvciBJREUKKwkJZGlza3MgKHNlZSBtYWpvciBudW1iZXIgMykgZXhjZXB0IHRoYXQgdGhlIGxpbWl0IG9uCisJCXBhcnRpdGlvbnMgaXMgMTUuCisKKyAgOSBjaGFyCVNDU0kgdGFwZSBkZXZpY2VzCisJCSAgMCA9IC9kZXYvc3QwCQlGaXJzdCBTQ1NJIHRhcGUsIG1vZGUgMAorCQkgIDEgPSAvZGV2L3N0MQkJU2Vjb25kIFNDU0kgdGFwZSwgbW9kZSAwCisJCSAgICAuLi4KKwkJIDMyID0gL2Rldi9zdDBsCQlGaXJzdCBTQ1NJIHRhcGUsIG1vZGUgMQorCQkgMzMgPSAvZGV2L3N0MWwJCVNlY29uZCBTQ1NJIHRhcGUsIG1vZGUgMQorCQkgICAgLi4uCisJCSA2NCA9IC9kZXYvc3QwbQkJRmlyc3QgU0NTSSB0YXBlLCBtb2RlIDIKKwkJIDY1ID0gL2Rldi9zdDFtCQlTZWNvbmQgU0NTSSB0YXBlLCBtb2RlIDIKKwkJICAgIC4uLgorCQkgOTYgPSAvZGV2L3N0MGEJCUZpcnN0IFNDU0kgdGFwZSwgbW9kZSAzCisJCSA5NyA9IC9kZXYvc3QxYQkJU2Vjb25kIFNDU0kgdGFwZSwgbW9kZSAzCisJCSAgICAgIC4uLgorCQkxMjggPSAvZGV2L25zdDAJCUZpcnN0IFNDU0kgdGFwZSwgbW9kZSAwLCBubyByZXdpbmQKKwkJMTI5ID0gL2Rldi9uc3QxCQlTZWNvbmQgU0NTSSB0YXBlLCBtb2RlIDAsIG5vIHJld2luZAorCQkgICAgLi4uCisJCTE2MCA9IC9kZXYvbnN0MGwJRmlyc3QgU0NTSSB0YXBlLCBtb2RlIDEsIG5vIHJld2luZAorCQkxNjEgPSAvZGV2L25zdDFsCVNlY29uZCBTQ1NJIHRhcGUsIG1vZGUgMSwgbm8gcmV3aW5kCisJCSAgICAuLi4KKwkJMTkyID0gL2Rldi9uc3QwbQlGaXJzdCBTQ1NJIHRhcGUsIG1vZGUgMiwgbm8gcmV3aW5kCisJCTE5MyA9IC9kZXYvbnN0MW0JU2Vjb25kIFNDU0kgdGFwZSwgbW9kZSAyLCBubyByZXdpbmQKKwkJICAgIC4uLgorCQkyMjQgPSAvZGV2L25zdDBhCUZpcnN0IFNDU0kgdGFwZSwgbW9kZSAzLCBubyByZXdpbmQKKwkJMjI1ID0gL2Rldi9uc3QxYQlTZWNvbmQgU0NTSSB0YXBlLCBtb2RlIDMsIG5vIHJld2luZAorCQkgICAgLi4uCisKKwkJIk5vIHJld2luZCIgcmVmZXJzIHRvIHRoZSBvbWlzc2lvbiBvZiB0aGUgZGVmYXVsdAorCQlhdXRvbWF0aWMgcmV3aW5kIG9uIGRldmljZSBjbG9zZS4gIFRoZSBNVFJFVyBvciBNVE9GRkwKKwkJaW9jdGwoKSdzIGNhbiBiZSB1c2VkIHRvIHJld2luZCB0aGUgdGFwZSByZWdhcmRsZXNzIG9mCisJCXRoZSBkZXZpY2UgdXNlZCB0byBhY2Nlc3MgaXQuCisKKyAgOSBibG9jawlNZXRhZGlzayAoUkFJRCkgZGV2aWNlcworCQkgIDAgPSAvZGV2L21kMAkJRmlyc3QgbWV0YWRpc2sgZ3JvdXAKKwkJICAxID0gL2Rldi9tZDEJCVNlY29uZCBtZXRhZGlzayBncm91cAorCQkgICAgLi4uCisKKwkJVGhlIG1ldGFkaXNrIGRyaXZlciBpcyB1c2VkIHRvIHNwYW4gYQorCQlmaWxlc3lzdGVtIGFjcm9zcyBtdWx0aXBsZSBwaHlzaWNhbCBkaXNrcy4KKworIDEwIGNoYXIJTm9uLXNlcmlhbCBtaWNlLCBtaXNjIGZlYXR1cmVzCisJCSAgMCA9IC9kZXYvbG9naWJtCUxvZ2l0ZWNoIGJ1cyBtb3VzZQorCQkgIDEgPSAvZGV2L3BzYXV4CVBTLzItc3R5bGUgbW91c2UgcG9ydAorCQkgIDIgPSAvZGV2L2lucG9ydGJtCU1pY3Jvc29mdCBJbnBvcnQgYnVzIG1vdXNlCisJCSAgMyA9IC9kZXYvYXRpYm0JQVRJIFhMIGJ1cyBtb3VzZQorCQkgIDQgPSAvZGV2L2pibQkJSi1tb3VzZQorCQkgIDQgPSAvZGV2L2FtaWdhbW91c2UJQW1pZ2EgbW91c2UgKDY4ay9BbWlnYSkKKwkJICA1ID0gL2Rldi9hdGFyaW1vdXNlCUF0YXJpIG1vdXNlCisJCSAgNiA9IC9kZXYvc3VubW91c2UJU3VuIG1vdXNlCisJCSAgNyA9IC9kZXYvYW1pZ2Ftb3VzZTEJU2Vjb25kIEFtaWdhIG1vdXNlCisJCSAgOCA9IC9kZXYvc21vdXNlCVNpbXBsZSBzZXJpYWwgbW91c2UgZHJpdmVyCisJCSAgOSA9IC9kZXYvcGMxMTBwYWQJSUJNIFBDLTExMCBkaWdpdGl6ZXIgcGFkCisJCSAxMCA9IC9kZXYvYWRibW91c2UJQXBwbGUgRGVza3RvcCBCdXMgbW91c2UKKwkJIDExID0gL2Rldi92cnRwYW5lbAlWcjQxeHggZW1iZWRkZWQgdG91Y2ggcGFuZWwKKwkJIDEzID0gL2Rldi92cGNtb3VzZQlDb25uZWN0aXggVmlydHVhbCBQQyBNb3VzZQorCQkgMTQgPSAvZGV2L3RvdWNoc2NyZWVuL3VjYjF4MDAgIFVDQiAxeDAwIHRvdWNoc2NyZWVuCisJCSAxNSA9IC9kZXYvdG91Y2hzY3JlZW4vbWs3MTIJTUs3MTIgdG91Y2hzY3JlZW4KKwkJMTI4ID0gL2Rldi9iZWVwCQlGYW5jeSBiZWVwIGRldmljZQorCQkxMjkgPQorCQkxMzAgPSAvZGV2L3dhdGNoZG9nCVdhdGNoZG9nIHRpbWVyIHBvcnQKKwkJMTMxID0gL2Rldi90ZW1wZXJhdHVyZQlNYWNoaW5lIGludGVybmFsIHRlbXBlcmF0dXJlCisJCTEzMiA9IC9kZXYvaHd0cmFwCUhhcmR3YXJlIGZhdWx0IHRyYXAKKwkJMTMzID0gL2Rldi9leHR0cnAJRXh0ZXJuYWwgZGV2aWNlIHRyYXAKKwkJMTM0ID0gL2Rldi9hcG1fYmlvcwlBZHZhbmNlZCBQb3dlciBNYW5hZ2VtZW50IEJJT1MKKwkJMTM1ID0gL2Rldi9ydGMJCVJlYWwgVGltZSBDbG9jaworCQkxMzcgPSAvZGV2L3ZoY2kJCUJsdWV0b290aCB2aXJ0dWFsIEhDSSBkcml2ZXIKKwkJMTM5ID0gL2Rldi9vcGVucHJvbQlTUEFSQyBPcGVuQm9vdCBQUk9NCisJCTE0MCA9IC9kZXYvcmVsYXk4CUJlcmtzaGlyZSBQcm9kdWN0cyBPY3RhbCByZWxheSBjYXJkCisJCTE0MSA9IC9kZXYvcmVsYXkxNglCZXJrc2hpcmUgUHJvZHVjdHMgSVNPLTE2IHJlbGF5IGNhcmQKKwkJMTQyID0KKwkJMTQzID0gL2Rldi9wY2ljb25mCVBDSSBjb25maWd1cmF0aW9uIHNwYWNlCisJCTE0NCA9IC9kZXYvbnZyYW0JTm9uLXZvbGF0aWxlIGNvbmZpZ3VyYXRpb24gUkFNCisJCTE0NSA9IC9kZXYvaGZtb2RlbQlTb3VuZGNhcmQgc2hvcnR3YXZlIG1vZGVtIGNvbnRyb2wKKwkJMTQ2ID0gL2Rldi9ncmFwaGljcwlMaW51eC9TR0kgZ3JhcGhpY3MgZGV2aWNlCisJCTE0NyA9IC9kZXYvb3BlbmdsCUxpbnV4L1NHSSBPcGVuR0wgcGlwZQorCQkxNDggPSAvZGV2L2dmeAkJTGludXgvU0dJIGdyYXBoaWNzIGVmZmVjdHMgZGV2aWNlCisJCTE0OSA9IC9kZXYvaW5wdXQvbW91c2UJTGludXgvU0dJIElyaXggZW11bGF0aW9uIG1vdXNlCisJCTE1MCA9IC9kZXYvaW5wdXQva2V5Ym9hcmQgTGludXgvU0dJIElyaXggZW11bGF0aW9uIGtleWJvYXJkCisJCTE1MSA9IC9kZXYvbGVkCQlGcm9udCBwYW5lbCBMRURzCisJCTE1MiA9IC9kZXYva3BvbGwJS2VybmVsIFBvbGwgRHJpdmVyCisJCTE1MyA9IC9kZXYvbWVyZ2VtZW0JTWVtb3J5IG1lcmdlIGRldmljZQorCQkxNTQgPSAvZGV2L3BtdQkJTWFjaW50b3NoIFBvd2VyQm9vayBwb3dlciBtYW5hZ2VyCisJCTE1NSA9IC9kZXYvaXNpY3RsCU11bHRpVGVjaCBJU0lDb20gc2VyaWFsIGNvbnRyb2wKKwkJMTU2ID0gL2Rldi9sY2QJCUZyb250IHBhbmVsIExDRCBkaXNwbGF5CisJCTE1NyA9IC9kZXYvYWMJCUFwcGxpY29tIEludGwgUHJvZmlidXMgY2FyZAorCQkxNTggPSAvZGV2L253YnV0dG9uCU5ldHdpbmRlciBleHRlcm5hbCBidXR0b24KKwkJMTU5ID0gL2Rldi9ud2RlYnVnCU5ldHdpbmRlciBkZWJ1ZyBpbnRlcmZhY2UKKwkJMTYwID0gL2Rldi9ud2ZsYXNoCU5ldHdpbmRlciBmbGFzaCBtZW1vcnkKKwkJMTYxID0gL2Rldi91c2VyZG1hCVVzZXItc3BhY2UgRE1BIGFjY2VzcworCQkxNjIgPSAvZGV2L3NtYnVzCVN5c3RlbSBNYW5hZ2VtZW50IEJ1cworCQkxNjMgPSAvZGV2L2xpawkJTG9naXRlY2ggSW50ZXJuZXQgS2V5Ym9hcmQKKwkJMTY0ID0gL2Rldi9pcG1vCQlJbnRlbCBJbnRlbGxpZ2VudCBQbGF0Zm9ybSBNYW5hZ2VtZW50CisJCTE2NSA9IC9kZXYvdm1tb24JVk13YXJlIHZpcnR1YWwgbWFjaGluZSBtb25pdG9yCisJCTE2NiA9IC9kZXYvaTJvL2N0bAlJMk8gY29uZmlndXJhdGlvbiBtYW5hZ2VyCisJCTE2NyA9IC9kZXYvc3BlY2lhbGl4X3N4Y3RsIFNwZWNpYWxpeCBzZXJpYWwgY29udHJvbAorCQkxNjggPSAvZGV2L3RjbGRydglUZWNobm9sb2d5IENvbmNlcHRzIHNlcmlhbCBjb250cm9sCisJCTE2OSA9IC9kZXYvc3BlY2lhbGl4X3Jpb2N0bCBTcGVjaWFsaXggUklPIHNlcmlhbCBjb250cm9sCisJCTE3MCA9IC9kZXYvdGhpbmtwYWQvdGhpbmtwYWQJSUJNIFRoaW5rcGFkIGRldmljZXMKKwkJMTcxID0gL2Rldi9zcnJpcGMJUU5YNCBBUEkgSVBDIG1hbmFnZXIKKwkJMTcyID0gL2Rldi91c2VtYWNsb25lCVNlbWFwaG9yZSBjbG9uZSBkZXZpY2UKKwkJMTczID0gL2Rldi9pcG1pa2NzCUludGVsbGlnZW50IFBsYXRmb3JtIE1hbmFnZW1lbnQKKwkJMTc0ID0gL2Rldi91Y3RybAlTUEFSQ2Jvb2sgMyBtaWNyb2NvbnRyb2xsZXIKKwkJMTc1ID0gL2Rldi9hZ3BnYXJ0CUFHUCBHcmFwaGljcyBBZGRyZXNzIFJlbWFwcGluZyBUYWJsZQorCQkxNzYgPSAvZGV2L2d0cnNjCUdvcmd5IFRpbWluZyByYWRpbyBjbG9jaworCQkxNzcgPSAvZGV2L2NibQkJU2VyaWFsIENCTSBidXMKKwkJMTc4ID0gL2Rldi9qc2ZsYXNoCUphdmFTdGF0aW9uIE9TIGZsYXNoIFNJTU0KKwkJMTc5ID0gL2Rldi94c3ZjCQlIaWdoLXNwZWVkIHNoYXJlZC1tZW0vc2VtYXBob3JlIHNlcnZpY2UKKwkJMTgwID0gL2Rldi92cmJ1dHRvbnMJVnI0MXh4IGJ1dHRvbiBpbnB1dCBkZXZpY2UKKwkJMTgxID0gL2Rldi90b3NoaWJhCVRvc2hpYmEgbGFwdG9wIFNNTSBzdXBwb3J0CisJCTE4MiA9IC9kZXYvcGVyZmN0cglQZXJmb3JtYW5jZS1tb25pdG9yaW5nIGNvdW50ZXJzCisJCTE4MyA9IC9kZXYvaHdybmcJR2VuZXJpYyByYW5kb20gbnVtYmVyIGdlbmVyYXRvcgorCQkxODQgPSAvZGV2L2NwdS9taWNyb2NvZGUgQ1BVIG1pY3JvY29kZSB1cGRhdGUgaW50ZXJmYWNlCisJCTE4NiA9IC9kZXYvYXRvbWljcHMJQXRvbWljIHNoYXBzaG90IG9mIHByb2Nlc3Mgc3RhdGUgZGF0YQorCQkxODcgPSAvZGV2L2lybmV0CUlyTkVUIGRldmljZQorCQkxODggPSAvZGV2L3NtYnVzYmlvcwlTTUJ1cyBCSU9TCisJCTE4OSA9IC9kZXYvdXNzcF9jdGwJVXNlciBzcGFjZSBzZXJpYWwgcG9ydCBjb250cm9sCisJCTE5MCA9IC9kZXYvY3Jhc2gJTWlzc2lvbiBDcml0aWNhbCBMaW51eCBjcmFzaCBkdW1wIGZhY2lsaXR5CisJCTE5MSA9IC9kZXYvcGNsMTgxCTxpbmZvcm1hdGlvbiBtaXNzaW5nPgorCQkxOTIgPSAvZGV2L25hc194YnVzCU5BUyB4YnVzIExDRC9idXR0b25zIGFjY2VzcworCQkxOTMgPSAvZGV2L2Q3cwkJU1BBUkMgNy1zZWdtZW50IGRpc3BsYXkKKwkJMTk0ID0gL2Rldi96a3NoaW0JWmVyby1Lbm93bGVkZ2UgbmV0d29yayBzaGltIGNvbnRyb2wKKwkJMTk1ID0gL2Rldi9lbG9ncmFwaGljcy9lMjIwMQlFbG9ncmFwaGljcyB0b3VjaHNjcmVlbiBFMjcxLTIyMDEKKwkJMTk2ID0gL2Rldi92ZmlvL3ZmaW8JVkZJTyB1c2Vyc3BhY2UgZHJpdmVyIGludGVyZmFjZQorCQkxOTcgPSAvZGV2L3B4YTN4eC1nY3UJUFhBM3h4IGdyYXBoaWNzIGNvbnRyb2xsZXIgdW5pdCBkcml2ZXIKKwkJMTk4ID0gL2Rldi9zZXhlYwlTaWduZWQgZXhlY3V0YWJsZSBpbnRlcmZhY2UKKwkJMTk5ID0gL2Rldi9zY2FubmVycy9jdWVjYXQgOkN1ZUNhdCBiYXJjb2RlIHNjYW5uZXIKKwkJMjAwID0gL2Rldi9uZXQvdHVuCVRBUC9UVU4gbmV0d29yayBkZXZpY2UKKwkJMjAxID0gL2Rldi9idXR0b24vZ3VscGIJVHJhbnNtZXRhIEdVTFAtQiBidXR0b25zCisJCTIwMiA9IC9kZXYvZW1kL2N0bAlFbmhhbmNlZCBNZXRhZGlzayBSQUlEIChFTUQpIGNvbnRyb2wKKwkJMjAzID0gL2Rldi9jdXNlCQlDdXNlIChjaGFyYWN0ZXIgZGV2aWNlIGluIHVzZXItc3BhY2UpCisJCTIwNCA9IC9kZXYvdmlkZW8vZW04MzAwCQlFTTgzMDAgRFZEIGRlY29kZXIgY29udHJvbAorCQkyMDUgPSAvZGV2L3ZpZGVvL2VtODMwMF9tdglFTTgzMDAgRFZEIGRlY29kZXIgdmlkZW8KKwkJMjA2ID0gL2Rldi92aWRlby9lbTgzMDBfbWEJRU04MzAwIERWRCBkZWNvZGVyIGF1ZGlvCisJCTIwNyA9IC9kZXYvdmlkZW8vZW04MzAwX3NwCUVNODMwMCBEVkQgZGVjb2RlciBzdWJwaWN0dXJlCisJCTIwOCA9IC9kZXYvY29tcGFxL2NwcXBocGMJQ29tcGFxIFBDSSBIb3QgUGx1ZyBDb250cm9sbGVyCisJCTIwOSA9IC9kZXYvY29tcGFxL2NwcXJpZAlDb21wYXEgUmVtb3RlIEluc2lnaHQgRHJpdmVyCisJCTIxMCA9IC9kZXYvaW1waS9idAlJTVBJIGNvcHJvY2Vzc29yIGJsb2NrIHRyYW5zZmVyCisJCTIxMSA9IC9kZXYvaW1waS9zbWljCUlNUEkgY29wcm9jZXNzb3Igc3RyZWFtIGludGVyZmFjZQorCQkyMTIgPSAvZGV2L3dhdGNoZG9ncy8wCUZpcnN0IHdhdGNoZG9nIGRldmljZQorCQkyMTMgPSAvZGV2L3dhdGNoZG9ncy8xCVNlY29uZCB3YXRjaGRvZyBkZXZpY2UKKwkJMjE0ID0gL2Rldi93YXRjaGRvZ3MvMglUaGlyZCB3YXRjaGRvZyBkZXZpY2UKKwkJMjE1ID0gL2Rldi93YXRjaGRvZ3MvMwlGb3VydGggd2F0Y2hkb2cgZGV2aWNlCisJCTIxNiA9IC9kZXYvZnVqaXRzdS9hcGFuZWwJRnVqaXRzdS9TaWVtZW5zIGFwcGxpY2F0aW9uIHBhbmVsCisJCTIxNyA9IC9kZXYvbmkvbmF0bW90bgkJTmF0aW9uYWwgSW5zdHJ1bWVudHMgTW90aW9uCisJCTIxOCA9IC9kZXYva2NodWlkCUludGVyLXByb2Nlc3MgY2h1aWQgY29udHJvbAorCQkyMTkgPSAvZGV2L21vZGVtcy9td2F2ZQlNV2F2ZSBtb2RlbSBmaXJtd2FyZSB1cGxvYWQKKwkJMjIwID0gL2Rldi9tcHRjdGwJTWVzc2FnZSBwYXNzaW5nIHRlY2hub2xvZ3kgKE1QVCkgY29udHJvbAorCQkyMjEgPSAvZGV2L212aXN0YS9oc3Nkc2kJTW9udGF2aXN0YSBQSUNNRyBob3Qgc3dhcCBzeXN0ZW0gZHJpdmVyCisJCTIyMiA9IC9kZXYvbXZpc3RhL2hhc2kJCU1vbnRhdmlzdGEgUElDTUcgaGlnaCBhdmFpbGFiaWxpdHkKKwkJMjIzID0gL2Rldi9pbnB1dC91aW5wdXQJCVVzZXIgbGV2ZWwgZHJpdmVyIHN1cHBvcnQgZm9yIGlucHV0CisJCTIyNCA9IC9kZXYvdHBtCQlUQ1BBIFRQTSBkcml2ZXIKKwkJMjI1ID0gL2Rldi9wcHMJCVB1bHNlIFBlciBTZWNvbmQgZHJpdmVyCisJCTIyNiA9IC9kZXYvc3lzdHJhY2UJU3lzdHJhY2UgZGV2aWNlCisJCTIyNyA9IC9kZXYvbWNlbG9nCVg4Nl82NCBNYWNoaW5lIENoZWNrIEV4Y2VwdGlvbiBkcml2ZXIKKwkJMjI4ID0gL2Rldi9ocGV0CQlIUEVUIGRyaXZlcgorCQkyMjkgPSAvZGV2L2Z1c2UJCUZ1c2UgKHZpcnR1YWwgZmlsZXN5c3RlbSBpbiB1c2VyLXNwYWNlKQorCQkyMzAgPSAvZGV2L21pZGlzaGFyZQlNaWRpU2hhcmUgZHJpdmVyCisJCTIzMSA9IC9kZXYvc25hcHNob3QJU3lzdGVtIG1lbW9yeSBzbmFwc2hvdCBkZXZpY2UKKwkJMjMyID0gL2Rldi9rdm0JCUtlcm5lbC1iYXNlZCB2aXJ0dWFsIG1hY2hpbmUgKGhhcmR3YXJlIHZpcnR1YWxpemF0aW9uIGV4dGVuc2lvbnMpCisJCTIzMyA9IC9kZXYva212aWV3CVZpZXctT1MgQSBwcm9jZXNzIHdpdGggYSB2aWV3CisJCTIzNCA9IC9kZXYvYnRyZnMtY29udHJvbAlCdHJmcyBjb250cm9sIGRldmljZQorCQkyMzUgPSAvZGV2L2F1dG9mcwlBdXRvZnMgY29udHJvbCBkZXZpY2UKKwkJMjM2ID0gL2Rldi9tYXBwZXIvY29udHJvbAlEZXZpY2UtTWFwcGVyIGNvbnRyb2wgZGV2aWNlCisJCTIzNyA9IC9kZXYvbG9vcC1jb250cm9sIExvb3BiYWNrIGNvbnRyb2wgZGV2aWNlCisJCTIzOCA9IC9kZXYvdmhvc3QtbmV0CUhvc3Qga2VybmVsIGFjY2VsZXJhdG9yIGZvciB2aXJ0aW8gbmV0CisJCTIzOSA9IC9kZXYvdWhpZAkJVXNlci1zcGFjZSBJL08gZHJpdmVyIHN1cHBvcnQgZm9yIEhJRCBzdWJzeXN0ZW0KKworCQkyNDAtMjU0CQkJUmVzZXJ2ZWQgZm9yIGxvY2FsIHVzZQorCQkyNTUJCQlSZXNlcnZlZCBmb3IgTUlTQ19EWU5BTUlDX01JTk9SCisKKyAxMSBjaGFyCVJhdyBrZXlib2FyZCBkZXZpY2UJKExpbnV4L1NQQVJDIG9ubHkpCisJCSAgMCA9IC9kZXYva2JkCQlSYXcga2V5Ym9hcmQgZGV2aWNlCisKKyAxMSBjaGFyCVNlcmlhbCBNdXggZGV2aWNlCShMaW51eC9QQS1SSVNDIG9ubHkpCisJCSAgMCA9IC9kZXYvdHR5QjAJRmlyc3QgbXV4IHBvcnQKKwkJICAxID0gL2Rldi90dHlCMQlTZWNvbmQgbXV4IHBvcnQKKwkJICAgIC4uLgorCisgMTEgYmxvY2sJU0NTSSBDRC1ST00gZGV2aWNlcworCQkgIDAgPSAvZGV2L3NjZDAJCUZpcnN0IFNDU0kgQ0QtUk9NCisJCSAgMSA9IC9kZXYvc2NkMQkJU2Vjb25kIFNDU0kgQ0QtUk9NCisJCSAgICAuLi4KKworCQlUaGUgcHJlZml4IC9kZXYvc3IgKGluc3RlYWQgb2YgL2Rldi9zY2QpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuCisKKyAxMiBjaGFyCVFJQy0wMiB0YXBlCisJCSAgMiA9IC9kZXYvbnRwcWljMTEJUUlDLTExLCBubyByZXdpbmQtb24tY2xvc2UKKwkJICAzID0gL2Rldi90cHFpYzExCVFJQy0xMSwgcmV3aW5kLW9uLWNsb3NlCisJCSAgNCA9IC9kZXYvbnRwcWljMjQJUUlDLTI0LCBubyByZXdpbmQtb24tY2xvc2UKKwkJICA1ID0gL2Rldi90cHFpYzI0CVFJQy0yNCwgcmV3aW5kLW9uLWNsb3NlCisJCSAgNiA9IC9kZXYvbnRwcWljMTIwCVFJQy0xMjAsIG5vIHJld2luZC1vbi1jbG9zZQorCQkgIDcgPSAvZGV2L3RwcWljMTIwCVFJQy0xMjAsIHJld2luZC1vbi1jbG9zZQorCQkgIDggPSAvZGV2L250cHFpYzE1MAlRSUMtMTUwLCBubyByZXdpbmQtb24tY2xvc2UKKwkJICA5ID0gL2Rldi90cHFpYzE1MAlRSUMtMTUwLCByZXdpbmQtb24tY2xvc2UKKworCQlUaGUgZGV2aWNlIG5hbWVzIHNwZWNpZmllZCBhcmUgcHJvcG9zZWQgLS0gaWYgdGhlcmUKKwkJYXJlICJzdGFuZGFyZCIgbmFtZXMgZm9yIHRoZXNlIGRldmljZXMsIHBsZWFzZSBsZXQgbWUga25vdy4KKworIDEyIGJsb2NrCisKKyAxMyBjaGFyCUlucHV0IGNvcmUKKwkJICAwID0gL2Rldi9pbnB1dC9qczAJRmlyc3Qgam95c3RpY2sKKwkJICAxID0gL2Rldi9pbnB1dC9qczEJU2Vjb25kIGpveXN0aWNrCisJCSAgICAuLi4KKwkJIDMyID0gL2Rldi9pbnB1dC9tb3VzZTAJRmlyc3QgbW91c2UKKwkJIDMzID0gL2Rldi9pbnB1dC9tb3VzZTEJU2Vjb25kIG1vdXNlCisJCSAgICAuLi4KKwkJIDYzID0gL2Rldi9pbnB1dC9taWNlCVVuaWZpZWQgbW91c2UKKwkJIDY0ID0gL2Rldi9pbnB1dC9ldmVudDAJRmlyc3QgZXZlbnQgcXVldWUKKwkJIDY1ID0gL2Rldi9pbnB1dC9ldmVudDEJU2Vjb25kIGV2ZW50IHF1ZXVlCisJCSAgICAuLi4KKworCQlFYWNoIGRldmljZSB0eXBlIGhhcyA1IGJpdHMgKDMyIG1pbm9ycykuCisKKyAxMyBibG9jawlQcmV2aW91c2x5IHVzZWQgZm9yIHRoZSBYVCBkaXNrICgvZGV2L3hkTikKKwkJRGVsZXRlZCBpbiBrZXJuZWwgdjMuOS4KKworIDE0IGNoYXIJT3BlbiBTb3VuZCBTeXN0ZW0gKE9TUykKKwkJICAwID0gL2Rldi9taXhlcglNaXhlciBjb250cm9sCisJCSAgMSA9IC9kZXYvc2VxdWVuY2VyCUF1ZGlvIHNlcXVlbmNlcgorCQkgIDIgPSAvZGV2L21pZGkwMAlGaXJzdCBNSURJIHBvcnQKKwkJICAzID0gL2Rldi9kc3AJCURpZ2l0YWwgYXVkaW8KKwkJICA0ID0gL2Rldi9hdWRpbwlTdW4tY29tcGF0aWJsZSBkaWdpdGFsIGF1ZGlvCisJCSAgNiA9CisJCSAgNyA9IC9kZXYvYXVkaW9jdGwJU1BBUkMgYXVkaW8gY29udHJvbCBkZXZpY2UKKwkJICA4ID0gL2Rldi9zZXF1ZW5jZXIyCVNlcXVlbmNlciAtLSBhbHRlcm5hdGUgZGV2aWNlCisJCSAxNiA9IC9kZXYvbWl4ZXIxCVNlY29uZCBzb3VuZGNhcmQgbWl4ZXIgY29udHJvbAorCQkgMTcgPSAvZGV2L3BhdG1ncjAJU2VxdWVuY2VyIHBhdGNoIG1hbmFnZXIKKwkJIDE4ID0gL2Rldi9taWRpMDEJU2Vjb25kIE1JREkgcG9ydAorCQkgMTkgPSAvZGV2L2RzcDEJCVNlY29uZCBzb3VuZGNhcmQgZGlnaXRhbCBhdWRpbworCQkgMjAgPSAvZGV2L2F1ZGlvMQlTZWNvbmQgc291bmRjYXJkIFN1biBkaWdpdGFsIGF1ZGlvCisJCSAzMyA9IC9kZXYvcGF0bWdyMQlTZXF1ZW5jZXIgcGF0Y2ggbWFuYWdlcgorCQkgMzQgPSAvZGV2L21pZGkwMglUaGlyZCBNSURJIHBvcnQKKwkJIDUwID0gL2Rldi9taWRpMDMJRm91cnRoIE1JREkgcG9ydAorCisgMTQgYmxvY2sKKworIDE1IGNoYXIJSm95c3RpY2sKKwkJICAwID0gL2Rldi9qczAJCUZpcnN0IGFuYWxvZyBqb3lzdGljaworCQkgIDEgPSAvZGV2L2pzMQkJU2Vjb25kIGFuYWxvZyBqb3lzdGljaworCQkgICAgLi4uCisJCTEyOCA9IC9kZXYvZGpzMAkJRmlyc3QgZGlnaXRhbCBqb3lzdGljaworCQkxMjkgPSAvZGV2L2RqczEJCVNlY29uZCBkaWdpdGFsIGpveXN0aWNrCisJCSAgICAuLi4KKyAxNSBibG9jawlTb255IENEVS0zMUEvQ0RVLTMzQSBDRC1ST00KKwkJICAwID0gL2Rldi9zb255Y2QJU29ueSBDRFUtMzFhIENELVJPTQorCisgMTYgY2hhcglOb24tU0NTSSBzY2FubmVycworCQkgIDAgPSAvZGV2L2dzNDUwMAlHZW5pdXMgNDUwMCBoYW5kaGVsZCBzY2FubmVyCisKKyAxNiBibG9jawlHb2xkU3RhciBDRC1ST00KKwkJICAwID0gL2Rldi9nc2NkCQlHb2xkU3RhciBDRC1ST00KKworIDE3IGNoYXIJT0JTT0xFVEUgKHdhcyBDaGFzZSBzZXJpYWwgY2FyZCkKKwkJICAwID0gL2Rldi90dHlIMAlGaXJzdCBDaGFzZSBwb3J0CisJCSAgMSA9IC9kZXYvdHR5SDEJU2Vjb25kIENoYXNlIHBvcnQKKwkJICAgIC4uLgorIDE3IGJsb2NrCU9wdGljcyBTdG9yYWdlIENELVJPTQorCQkgIDAgPSAvZGV2L29wdGNkCU9wdGljcyBTdG9yYWdlIENELVJPTQorCisgMTggY2hhcglPQlNPTEVURSAod2FzIENoYXNlIHNlcmlhbCBjYXJkIC0gYWx0ZXJuYXRlIGRldmljZXMpCisJCSAgMCA9IC9kZXYvY3VoMAkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eUgwCisJCSAgMSA9IC9kZXYvY3VoMQkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eUgxCisJCSAgICAuLi4KKyAxOCBibG9jawlTYW55byBDRC1ST00KKwkJICAwID0gL2Rldi9zamNkCQlTYW55byBDRC1ST00KKworIDE5IGNoYXIJQ3ljbGFkZXMgc2VyaWFsIGNhcmQKKwkJICAwID0gL2Rldi90dHlDMAlGaXJzdCBDeWNsYWRlcyBwb3J0CisJCSAgICAuLi4KKwkJIDMxID0gL2Rldi90dHlDMzEJMzJuZCBDeWNsYWRlcyBwb3J0CisKKyAxOSBibG9jawkiRG91YmxlIiBjb21wcmVzc2VkIGRpc2sKKwkJICAwID0gL2Rldi9kb3VibGUwCUZpcnN0IGNvbXByZXNzZWQgZGlzaworCQkgICAgLi4uCisJCSAgNyA9IC9kZXYvZG91YmxlNwlFaWdodGggY29tcHJlc3NlZCBkaXNrCisJCTEyOCA9IC9kZXYvY2RvdWJsZTAJTWlycm9yIG9mIGZpcnN0IGNvbXByZXNzZWQgZGlzaworCQkgICAgLi4uCisJCTEzNSA9IC9kZXYvY2RvdWJsZTcJTWlycm9yIG9mIGVpZ2h0aCBjb21wcmVzc2VkIGRpc2sKKworCQlTZWUgdGhlIERvdWJsZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgbWVhbmluZyBvZiB0aGUKKwkJbWlycm9yIGRldmljZXMuCisKKyAyMCBjaGFyCUN5Y2xhZGVzIHNlcmlhbCBjYXJkIC0gYWx0ZXJuYXRlIGRldmljZXMKKwkJICAwID0gL2Rldi9jdWIwCQlDYWxsb3V0IGRldmljZSBmb3IgdHR5QzAKKwkJICAgIC4uLgorCQkgMzEgPSAvZGV2L2N1YjMxCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlDMzEKKworIDIwIGJsb2NrCUhpdGFjaGkgQ0QtUk9NICh1bmRlciBkZXZlbG9wbWVudCkKKwkJICAwID0gL2Rldi9oaXRjZAlIaXRhY2hpIENELVJPTQorCisgMjEgY2hhcglHZW5lcmljIFNDU0kgYWNjZXNzCisJCSAgMCA9IC9kZXYvc2cwCQlGaXJzdCBnZW5lcmljIFNDU0kgZGV2aWNlCisJCSAgMSA9IC9kZXYvc2cxCQlTZWNvbmQgZ2VuZXJpYyBTQ1NJIGRldmljZQorCQkgICAgLi4uCisKKwkJTW9zdCBkaXN0cmlidXRpb25zIG5hbWUgdGhlc2UgL2Rldi9zZ2EsIC9kZXYvc2diLi4uOworCQl0aGlzIHNldHMgYW4gdW5uZWNlc3NhcnkgbGltaXQgb2YgMjYgU0NTSSBkZXZpY2VzIGluCisJCXRoZSBzeXN0ZW0gYW5kIGlzIGNvdW50ZXIgdG8gc3RhbmRhcmQgTGludXgKKwkJZGV2aWNlLW5hbWluZyBwcmFjdGljZS4KKworIDIxIGJsb2NrCUFjb3JuIE1GTSBoYXJkIGRyaXZlIGludGVyZmFjZQorCQkgIDAgPSAvZGV2L21mbWEJCUZpcnN0IE1GTSBkcml2ZSB3aG9sZSBkaXNrCisJCSA2NCA9IC9kZXYvbWZtYgkJU2Vjb25kIE1GTSBkcml2ZSB3aG9sZSBkaXNrCisKKwkJVGhpcyBkZXZpY2UgaXMgdXNlZCBvbiB0aGUgQVJNLWJhc2VkIEFjb3JuIFJpc2NQQy4KKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgZm9yIElERSBkaXNrcworCQkoc2VlIG1ham9yIG51bWJlciAzKS4KKworIDIyIGNoYXIJRGlnaWJvYXJkIHNlcmlhbCBjYXJkCisJCSAgMCA9IC9kZXYvdHR5RDAJRmlyc3QgRGlnaWJvYXJkIHBvcnQKKwkJICAxID0gL2Rldi90dHlEMQlTZWNvbmQgRGlnaWJvYXJkIHBvcnQKKwkJICAgIC4uLgorIDIyIGJsb2NrCVNlY29uZCBJREUgaGFyZCBkaXNrL0NELVJPTSBpbnRlcmZhY2UKKwkJICAwID0gL2Rldi9oZGMJCU1hc3Rlcjogd2hvbGUgZGlzayAob3IgQ0QtUk9NKQorCQkgNjQgPSAvZGV2L2hkZAkJU2xhdmU6IHdob2xlIGRpc2sgKG9yIENELVJPTSkKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBmb3IgdGhlIGZpcnN0CisJCWludGVyZmFjZSAoc2VlIG1ham9yIG51bWJlciAzKS4KKworIDIzIGNoYXIJRGlnaWJvYXJkIHNlcmlhbCBjYXJkIC0gYWx0ZXJuYXRlIGRldmljZXMKKwkJICAwID0gL2Rldi9jdWQwCQlDYWxsb3V0IGRldmljZSBmb3IgdHR5RDAKKwkJICAxID0gL2Rldi9jdWQxCQlDYWxsb3V0IGRldmljZSBmb3IgdHR5RDEKKwkJICAgICAgLi4uCisgMjMgYmxvY2sJTWl0c3VtaSBwcm9wcmlldGFyeSBDRC1ST00KKwkJICAwID0gL2Rldi9tY2QJCU1pdHN1bWkgQ0QtUk9NCisKKyAyNCBjaGFyCVN0YWxsaW9uIHNlcmlhbCBjYXJkCisJCSAgMCA9IC9kZXYvdHR5RTAJU3RhbGxpb24gcG9ydCAwIGNhcmQgMAorCQkgIDEgPSAvZGV2L3R0eUUxCVN0YWxsaW9uIHBvcnQgMSBjYXJkIDAKKwkJICAgIC4uLgorCQkgNjQgPSAvZGV2L3R0eUU2NAlTdGFsbGlvbiBwb3J0IDAgY2FyZCAxCisJCSA2NSA9IC9kZXYvdHR5RTY1CVN0YWxsaW9uIHBvcnQgMSBjYXJkIDEKKwkJICAgICAgLi4uCisJCTEyOCA9IC9kZXYvdHR5RTEyOAlTdGFsbGlvbiBwb3J0IDAgY2FyZCAyCisJCTEyOSA9IC9kZXYvdHR5RTEyOQlTdGFsbGlvbiBwb3J0IDEgY2FyZCAyCisJCSAgICAuLi4KKwkJMTkyID0gL2Rldi90dHlFMTkyCVN0YWxsaW9uIHBvcnQgMCBjYXJkIDMKKwkJMTkzID0gL2Rldi90dHlFMTkzCVN0YWxsaW9uIHBvcnQgMSBjYXJkIDMKKwkJICAgIC4uLgorIDI0IGJsb2NrCVNvbnkgQ0RVLTUzNSBDRC1ST00KKwkJICAwID0gL2Rldi9jZHU1MzUJU29ueSBDRFUtNTM1IENELVJPTQorCisgMjUgY2hhcglTdGFsbGlvbiBzZXJpYWwgY2FyZCAtIGFsdGVybmF0ZSBkZXZpY2VzCisJCSAgMCA9IC9kZXYvY3VlMAkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eUUwCisJCSAgMSA9IC9kZXYvY3VlMQkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eUUxCisJCSAgICAuLi4KKwkJIDY0ID0gL2Rldi9jdWU2NAlDYWxsb3V0IGRldmljZSBmb3IgdHR5RTY0CisJCSA2NSA9IC9kZXYvY3VlNjUJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eUU2NQorCQkgICAgLi4uCisJCTEyOCA9IC9kZXYvY3VlMTI4CUNhbGxvdXQgZGV2aWNlIGZvciB0dHlFMTI4CisJCTEyOSA9IC9kZXYvY3VlMTI5CUNhbGxvdXQgZGV2aWNlIGZvciB0dHlFMTI5CisJCSAgICAuLi4KKwkJMTkyID0gL2Rldi9jdWUxOTIJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eUUxOTIKKwkJMTkzID0gL2Rldi9jdWUxOTMJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eUUxOTMKKwkJICAgICAgLi4uCisgMjUgYmxvY2sJRmlyc3QgTWF0c3VzaGl0YSAoUGFuYXNvbmljL1NvdW5kQmxhc3RlcikgQ0QtUk9NCisJCSAgMCA9IC9kZXYvc2JwY2QwCVBhbmFzb25pYyBDRC1ST00gY29udHJvbGxlciAwIHVuaXQgMAorCQkgIDEgPSAvZGV2L3NicGNkMQlQYW5hc29uaWMgQ0QtUk9NIGNvbnRyb2xsZXIgMCB1bml0IDEKKwkJICAyID0gL2Rldi9zYnBjZDIJUGFuYXNvbmljIENELVJPTSBjb250cm9sbGVyIDAgdW5pdCAyCisJCSAgMyA9IC9kZXYvc2JwY2QzCVBhbmFzb25pYyBDRC1ST00gY29udHJvbGxlciAwIHVuaXQgMworCisgMjYgY2hhcgorCisgMjYgYmxvY2sJU2Vjb25kIE1hdHN1c2hpdGEgKFBhbmFzb25pYy9Tb3VuZEJsYXN0ZXIpIENELVJPTQorCQkgIDAgPSAvZGV2L3NicGNkNAlQYW5hc29uaWMgQ0QtUk9NIGNvbnRyb2xsZXIgMSB1bml0IDAKKwkJICAxID0gL2Rldi9zYnBjZDUJUGFuYXNvbmljIENELVJPTSBjb250cm9sbGVyIDEgdW5pdCAxCisJCSAgMiA9IC9kZXYvc2JwY2Q2CVBhbmFzb25pYyBDRC1ST00gY29udHJvbGxlciAxIHVuaXQgMgorCQkgIDMgPSAvZGV2L3NicGNkNwlQYW5hc29uaWMgQ0QtUk9NIGNvbnRyb2xsZXIgMSB1bml0IDMKKworIDI3IGNoYXIJUUlDLTExNyB0YXBlCisJCSAgMCA9IC9kZXYvcWZ0MAkJVW5pdCAwLCByZXdpbmQtb24tY2xvc2UKKwkJICAxID0gL2Rldi9xZnQxCQlVbml0IDEsIHJld2luZC1vbi1jbG9zZQorCQkgIDIgPSAvZGV2L3FmdDIJCVVuaXQgMiwgcmV3aW5kLW9uLWNsb3NlCisJCSAgMyA9IC9kZXYvcWZ0MwkJVW5pdCAzLCByZXdpbmQtb24tY2xvc2UKKwkJICA0ID0gL2Rldi9ucWZ0MAlVbml0IDAsIG5vIHJld2luZC1vbi1jbG9zZQorCQkgIDUgPSAvZGV2L25xZnQxCVVuaXQgMSwgbm8gcmV3aW5kLW9uLWNsb3NlCisJCSAgNiA9IC9kZXYvbnFmdDIJVW5pdCAyLCBubyByZXdpbmQtb24tY2xvc2UKKwkJICA3ID0gL2Rldi9ucWZ0MwlVbml0IDMsIG5vIHJld2luZC1vbi1jbG9zZQorCQkgMTYgPSAvZGV2L3pxZnQwCVVuaXQgMCwgcmV3aW5kLW9uLWNsb3NlLCBjb21wcmVzc2lvbgorCQkgMTcgPSAvZGV2L3pxZnQxCVVuaXQgMSwgcmV3aW5kLW9uLWNsb3NlLCBjb21wcmVzc2lvbgorCQkgMTggPSAvZGV2L3pxZnQyCVVuaXQgMiwgcmV3aW5kLW9uLWNsb3NlLCBjb21wcmVzc2lvbgorCQkgMTkgPSAvZGV2L3pxZnQzCVVuaXQgMywgcmV3aW5kLW9uLWNsb3NlLCBjb21wcmVzc2lvbgorCQkgMjAgPSAvZGV2L256cWZ0MAlVbml0IDAsIG5vIHJld2luZC1vbi1jbG9zZSwgY29tcHJlc3Npb24KKwkJIDIxID0gL2Rldi9uenFmdDEJVW5pdCAxLCBubyByZXdpbmQtb24tY2xvc2UsIGNvbXByZXNzaW9uCisJCSAyMiA9IC9kZXYvbnpxZnQyCVVuaXQgMiwgbm8gcmV3aW5kLW9uLWNsb3NlLCBjb21wcmVzc2lvbgorCQkgMjMgPSAvZGV2L256cWZ0MwlVbml0IDMsIG5vIHJld2luZC1vbi1jbG9zZSwgY29tcHJlc3Npb24KKwkJIDMyID0gL2Rldi9yYXdxZnQwCVVuaXQgMCwgcmV3aW5kLW9uLWNsb3NlLCBubyBmaWxlIG1hcmtzCisJCSAzMyA9IC9kZXYvcmF3cWZ0MQlVbml0IDEsIHJld2luZC1vbi1jbG9zZSwgbm8gZmlsZSBtYXJrcworCQkgMzQgPSAvZGV2L3Jhd3FmdDIJVW5pdCAyLCByZXdpbmQtb24tY2xvc2UsIG5vIGZpbGUgbWFya3MKKwkJIDM1ID0gL2Rldi9yYXdxZnQzCVVuaXQgMywgcmV3aW5kLW9uLWNsb3NlLCBubyBmaWxlIG1hcmtzCisJCSAzNiA9IC9kZXYvbnJhd3FmdDAJVW5pdCAwLCBubyByZXdpbmQtb24tY2xvc2UsIG5vIGZpbGUgbWFya3MKKwkJIDM3ID0gL2Rldi9ucmF3cWZ0MQlVbml0IDEsIG5vIHJld2luZC1vbi1jbG9zZSwgbm8gZmlsZSBtYXJrcworCQkgMzggPSAvZGV2L25yYXdxZnQyCVVuaXQgMiwgbm8gcmV3aW5kLW9uLWNsb3NlLCBubyBmaWxlIG1hcmtzCisJCSAzOSA9IC9kZXYvbnJhd3FmdDMJVW5pdCAzLCBubyByZXdpbmQtb24tY2xvc2UsIG5vIGZpbGUgbWFya3MKKworIDI3IGJsb2NrCVRoaXJkIE1hdHN1c2hpdGEgKFBhbmFzb25pYy9Tb3VuZEJsYXN0ZXIpIENELVJPTQorCQkgIDAgPSAvZGV2L3NicGNkOAlQYW5hc29uaWMgQ0QtUk9NIGNvbnRyb2xsZXIgMiB1bml0IDAKKwkJICAxID0gL2Rldi9zYnBjZDkJUGFuYXNvbmljIENELVJPTSBjb250cm9sbGVyIDIgdW5pdCAxCisJCSAgMiA9IC9kZXYvc2JwY2QxMAlQYW5hc29uaWMgQ0QtUk9NIGNvbnRyb2xsZXIgMiB1bml0IDIKKwkJICAzID0gL2Rldi9zYnBjZDExCVBhbmFzb25pYyBDRC1ST00gY29udHJvbGxlciAyIHVuaXQgMworCisgMjggY2hhcglTdGFsbGlvbiBzZXJpYWwgY2FyZCAtIGNhcmQgcHJvZ3JhbW1pbmcKKwkJICAwID0gL2Rldi9zdGFsaW9tZW0wCUZpcnN0IFN0YWxsaW9uIGNhcmQgSS9PIG1lbW9yeQorCQkgIDEgPSAvZGV2L3N0YWxpb21lbTEJU2Vjb25kIFN0YWxsaW9uIGNhcmQgSS9PIG1lbW9yeQorCQkgIDIgPSAvZGV2L3N0YWxpb21lbTIJVGhpcmQgU3RhbGxpb24gY2FyZCBJL08gbWVtb3J5CisJCSAgMyA9IC9kZXYvc3RhbGlvbWVtMwlGb3VydGggU3RhbGxpb24gY2FyZCBJL08gbWVtb3J5CisKKyAyOCBjaGFyCUF0YXJpIFNMTSBBQ1NJIGxhc2VyIHByaW50ZXIgKDY4ay9BdGFyaSkKKwkJICAwID0gL2Rldi9zbG0wCQlGaXJzdCBTTE0gbGFzZXIgcHJpbnRlcgorCQkgIDEgPSAvZGV2L3NsbTEJCVNlY29uZCBTTE0gbGFzZXIgcHJpbnRlcgorCQkgICAgLi4uCisgMjggYmxvY2sJRm91cnRoIE1hdHN1c2hpdGEgKFBhbmFzb25pYy9Tb3VuZEJsYXN0ZXIpIENELVJPTQorCQkgIDAgPSAvZGV2L3NicGNkMTIJUGFuYXNvbmljIENELVJPTSBjb250cm9sbGVyIDMgdW5pdCAwCisJCSAgMSA9IC9kZXYvc2JwY2QxMwlQYW5hc29uaWMgQ0QtUk9NIGNvbnRyb2xsZXIgMyB1bml0IDEKKwkJICAyID0gL2Rldi9zYnBjZDE0CVBhbmFzb25pYyBDRC1ST00gY29udHJvbGxlciAzIHVuaXQgMgorCQkgIDMgPSAvZGV2L3NicGNkMTUJUGFuYXNvbmljIENELVJPTSBjb250cm9sbGVyIDMgdW5pdCAzCisKKyAyOCBibG9jawlBQ1NJIGRpc2sgKDY4ay9BdGFyaSkKKwkJICAwID0gL2Rldi9hZGEJCUZpcnN0IEFDU0kgZGlzayB3aG9sZSBkaXNrCisJCSAxNiA9IC9kZXYvYWRiCQlTZWNvbmQgQUNTSSBkaXNrIHdob2xlIGRpc2sKKwkJIDMyID0gL2Rldi9hZGMJCVRoaXJkIEFDU0kgZGlzayB3aG9sZSBkaXNrCisJCSAgICAuLi4KKwkJMjQwID0gL2Rldi9hZHAJCTE2dGggQUNTSSBkaXNrIHdob2xlIGRpc2sKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIGluIHRoZSBzYW1lIHdheSBhcyBmb3IgSURFCisJCWRpc2tzIChzZWUgbWFqb3IgbnVtYmVyIDMpIGV4Y2VwdCB0aGF0IHRoZSBsaW1pdCBvbgorCQlwYXJ0aXRpb25zIGlzIDE1LCBsaWtlIFNDU0kuCisKKyAyOSBjaGFyCVVuaXZlcnNhbCBmcmFtZSBidWZmZXIKKwkJICAwID0gL2Rldi9mYjAJCUZpcnN0IGZyYW1lIGJ1ZmZlcgorCQkgIDEgPSAvZGV2L2ZiMQkJU2Vjb25kIGZyYW1lIGJ1ZmZlcgorCQkgICAgLi4uCisJCSAzMSA9IC9kZXYvZmIzMQkJMzJuZCBmcmFtZSBidWZmZXIKKworIDI5IGJsb2NrCUF6dGVjaC9PcmNoaWQvT2thbm8vV2Vhcm5lcyBDRC1ST00KKwkJICAwID0gL2Rldi9henRjZAlBenRlY2ggQ0QtUk9NCisKKyAzMCBjaGFyCWlCQ1MtMiBjb21wYXRpYmlsaXR5IGRldmljZXMKKwkJICAwID0gL2Rldi9zb2Nrc3lzCVNvY2tldCBhY2Nlc3MKKwkJICAxID0gL2Rldi9zcHgJCVNWUjMgbG9jYWwgWCBpbnRlcmZhY2UKKwkJIDMyID0gL2Rldi9pbmV0L2lwCU5ldHdvcmsgYWNjZXNzCisJCSAzMyA9IC9kZXYvaW5ldC9pY21wCisJCSAzNCA9IC9kZXYvaW5ldC9nZ3AKKwkJIDM1ID0gL2Rldi9pbmV0L2lwaXAKKwkJIDM2ID0gL2Rldi9pbmV0L3RjcAorCQkgMzcgPSAvZGV2L2luZXQvZWdwCisJCSAzOCA9IC9kZXYvaW5ldC9wdXAKKwkJIDM5ID0gL2Rldi9pbmV0L3VkcAorCQkgNDAgPSAvZGV2L2luZXQvaWRwCisJCSA0MSA9IC9kZXYvaW5ldC9yYXdpcAorCisJCUFkZGl0aW9uYWxseSwgaUJDUy0yIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgbGlua3M6CisKKwkJL2Rldi9pcCAtPiAvZGV2L2luZXQvaXAKKwkJL2Rldi9pY21wIC0+IC9kZXYvaW5ldC9pY21wCisJCS9kZXYvZ2dwIC0+IC9kZXYvaW5ldC9nZ3AKKwkJL2Rldi9pcGlwIC0+IC9kZXYvaW5ldC9pcGlwCisJCS9kZXYvdGNwIC0+IC9kZXYvaW5ldC90Y3AKKwkJL2Rldi9lZ3AgLT4gL2Rldi9pbmV0L2VncAorCQkvZGV2L3B1cCAtPiAvZGV2L2luZXQvcHVwCisJCS9kZXYvdWRwIC0+IC9kZXYvaW5ldC91ZHAKKwkJL2Rldi9pZHAgLT4gL2Rldi9pbmV0L2lkcAorCQkvZGV2L3Jhd2lwIC0+IC9kZXYvaW5ldC9yYXdpcAorCQkvZGV2L2luZXQvYXJwIC0+IC9kZXYvaW5ldC91ZHAKKwkJL2Rldi9pbmV0L3JpcCAtPiAvZGV2L2luZXQvdWRwCisJCS9kZXYvbmZzZCAtPiAvZGV2L3NvY2tzeXMKKwkJL2Rldi9YMFIgLT4gL2Rldi9udWxsICg/IGFwcGFyZW50bHkgbm90IHJlcXVpcmVkID8pCisKKyAzMCBibG9jawlQaGlsaXBzIExNUyBDTS0yMDUgQ0QtUk9NCisJCSAgMCA9IC9kZXYvY20yMDVjZAlQaGlsaXBzIExNUyBDTS0yMDUgQ0QtUk9NCisKKwkJL2Rldi9sbXNjZCBpcyBhbiBvbGRlciBuYW1lIGZvciB0aGlzIGRldmljZS4gIFRoaXMKKwkJZHJpdmVyIGRvZXMgbm90IHdvcmsgd2l0aCB0aGUgQ00tMjA1TVMgQ0QtUk9NLgorCisgMzEgY2hhcglNUFUtNDAxIE1JREkKKwkJICAwID0gL2Rldi9tcHU0MDFkYXRhCU1QVS00MDEgZGF0YSBwb3J0CisJCSAgMSA9IC9kZXYvbXB1NDAxc3RhdAlNUFUtNDAxIHN0YXR1cyBwb3J0CisKKyAzMSBibG9jawlST00vZmxhc2ggbWVtb3J5IGNhcmQKKwkJICAwID0gL2Rldi9yb20wCQlGaXJzdCBST00gY2FyZCAocncpCisJCSAgICAgIC4uLgorCQkgIDcgPSAvZGV2L3JvbTcJCUVpZ2h0aCBST00gY2FyZCAocncpCisJCSAgOCA9IC9kZXYvcnJvbTAJRmlyc3QgUk9NIGNhcmQgKHJvKQorCQkgICAgLi4uCisJCSAxNSA9IC9kZXYvcnJvbTcJRWlnaHRoIFJPTSBjYXJkIChybykKKwkJIDE2ID0gL2Rldi9mbGFzaDAJRmlyc3QgZmxhc2ggbWVtb3J5IGNhcmQgKHJ3KQorCQkgICAgLi4uCisJCSAyMyA9IC9kZXYvZmxhc2g3CUVpZ2h0aCBmbGFzaCBtZW1vcnkgY2FyZCAocncpCisJCSAyNCA9IC9kZXYvcmZsYXNoMAlGaXJzdCBmbGFzaCBtZW1vcnkgY2FyZCAocm8pCisJCSAgICAuLi4KKwkJIDMxID0gL2Rldi9yZmxhc2g3CUVpZ2h0aCBmbGFzaCBtZW1vcnkgY2FyZCAocm8pCisKKwkJVGhlIHJlYWQtd3JpdGUgKHJ3KSBkZXZpY2VzIHN1cHBvcnQgYmFjay1jYWNoaW5nCisJCXdyaXR0ZW4gZGF0YSBpbiBSQU0sIGFzIHdlbGwgYXMgd3JpdGluZyB0byBmbGFzaCBSQU0KKwkJZGV2aWNlcy4gIFRoZSByZWFkLW9ubHkgZGV2aWNlcyAocm8pIHN1cHBvcnQgcmVhZGluZworCQlvbmx5LgorCisgMzIgY2hhcglTcGVjaWFsaXggc2VyaWFsIGNhcmQKKwkJICAwID0gL2Rldi90dHlYMAlGaXJzdCBTcGVjaWFsaXggcG9ydAorCQkgIDEgPSAvZGV2L3R0eVgxCVNlY29uZCBTcGVjaWFsaXggcG9ydAorCQkgICAgLi4uCisgMzIgYmxvY2sJUGhpbGlwcyBMTVMgQ00tMjA2IENELVJPTQorCQkgIDAgPSAvZGV2L2NtMjA2Y2QJUGhpbGlwcyBMTVMgQ00tMjA2IENELVJPTQorCisgMzMgY2hhcglTcGVjaWFsaXggc2VyaWFsIGNhcmQgLSBhbHRlcm5hdGUgZGV2aWNlcworCQkgIDAgPSAvZGV2L2N1eDAJCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlYMAorCQkgIDEgPSAvZGV2L2N1eDEJCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlYMQorCQkgICAgLi4uCisgMzMgYmxvY2sJVGhpcmQgSURFIGhhcmQgZGlzay9DRC1ST00gaW50ZXJmYWNlCisJCSAgMCA9IC9kZXYvaGRlCQlNYXN0ZXI6IHdob2xlIGRpc2sgKG9yIENELVJPTSkKKwkJIDY0ID0gL2Rldi9oZGYJCVNsYXZlOiB3aG9sZSBkaXNrIChvciBDRC1ST00pCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgZm9yIHRoZSBmaXJzdAorCQlpbnRlcmZhY2UgKHNlZSBtYWpvciBudW1iZXIgMykuCisKKyAzNCBjaGFyCVo4NTMwIEhETEMgZHJpdmVyCisJCSAgMCA9IC9kZXYvc2NjMAkJRmlyc3QgWjg1MzAsIGZpcnN0IHBvcnQKKwkJICAxID0gL2Rldi9zY2MxCQlGaXJzdCBaODUzMCwgc2Vjb25kIHBvcnQKKwkJICAyID0gL2Rldi9zY2MyCQlTZWNvbmQgWjg1MzAsIGZpcnN0IHBvcnQKKwkJICAzID0gL2Rldi9zY2MzCQlTZWNvbmQgWjg1MzAsIHNlY29uZCBwb3J0CisJCSAgICAuLi4KKworCQlJbiBhIHByZXZpb3VzIHZlcnNpb24gdGhlc2UgZGV2aWNlcyB3ZXJlIG5hbWVkCisJCS9kZXYvc2MxIGZvciAvZGV2L3NjYzAsIC9kZXYvc2MyIGZvciAvZGV2L3NjYzEsIGFuZCBzbworCQlvbi4KKworIDM0IGJsb2NrCUZvdXJ0aCBJREUgaGFyZCBkaXNrL0NELVJPTSBpbnRlcmZhY2UKKwkJICAwID0gL2Rldi9oZGcJCU1hc3Rlcjogd2hvbGUgZGlzayAob3IgQ0QtUk9NKQorCQkgNjQgPSAvZGV2L2hkaAkJU2xhdmU6IHdob2xlIGRpc2sgKG9yIENELVJPTSkKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBmb3IgdGhlIGZpcnN0CisJCWludGVyZmFjZSAoc2VlIG1ham9yIG51bWJlciAzKS4KKworIDM1IGNoYXIJdGNsbWlkaSBNSURJIGRyaXZlcgorCQkgIDAgPSAvZGV2L21pZGkwCUZpcnN0IE1JREkgcG9ydCwga2VybmVsIHRpbWVkCisJCSAgMSA9IC9kZXYvbWlkaTEJU2Vjb25kIE1JREkgcG9ydCwga2VybmVsIHRpbWVkCisJCSAgMiA9IC9kZXYvbWlkaTIJVGhpcmQgTUlESSBwb3J0LCBrZXJuZWwgdGltZWQKKwkJICAzID0gL2Rldi9taWRpMwlGb3VydGggTUlESSBwb3J0LCBrZXJuZWwgdGltZWQKKwkJIDY0ID0gL2Rldi9ybWlkaTAJRmlyc3QgTUlESSBwb3J0LCB1bnRpbWVkCisJCSA2NSA9IC9kZXYvcm1pZGkxCVNlY29uZCBNSURJIHBvcnQsIHVudGltZWQKKwkJIDY2ID0gL2Rldi9ybWlkaTIJVGhpcmQgTUlESSBwb3J0LCB1bnRpbWVkCisJCSA2NyA9IC9kZXYvcm1pZGkzCUZvdXJ0aCBNSURJIHBvcnQsIHVudGltZWQKKwkJMTI4ID0gL2Rldi9zbXB0ZTAJRmlyc3QgTUlESSBwb3J0LCBTTVBURSB0aW1lZAorCQkxMjkgPSAvZGV2L3NtcHRlMQlTZWNvbmQgTUlESSBwb3J0LCBTTVBURSB0aW1lZAorCQkxMzAgPSAvZGV2L3NtcHRlMglUaGlyZCBNSURJIHBvcnQsIFNNUFRFIHRpbWVkCisJCTEzMSA9IC9kZXYvc21wdGUzCUZvdXJ0aCBNSURJIHBvcnQsIFNNUFRFIHRpbWVkCisKKyAzNSBibG9jawlTbG93IG1lbW9yeSByYW1kaXNrCisJCSAgMCA9IC9kZXYvc2xyYW0JU2xvdyBtZW1vcnkgcmFtZGlzaworCisgMzYgY2hhcglOZXRsaW5rIHN1cHBvcnQKKwkJICAwID0gL2Rldi9yb3V0ZQlSb3V0aW5nLCBkZXZpY2UgdXBkYXRlcywga2VybmVsIHRvIHVzZXIKKwkJICAxID0gL2Rldi9za2lwCQllblNLSVAgc2VjdXJpdHkgY2FjaGUgY29udHJvbAorCQkgIDMgPSAvZGV2L2Z3bW9uaXRvcglGaXJld2FsbCBwYWNrZXQgY29waWVzCisJCSAxNiA9IC9kZXYvdGFwMAkJRmlyc3QgRXRoZXJ0YXAgZGV2aWNlCisJCSAgICAuLi4KKwkJIDMxID0gL2Rldi90YXAxNQkxNnRoIEV0aGVydGFwIGRldmljZQorCisgMzYgYmxvY2sJT0JTT0xFVEUgKHdhcyBNQ0EgRVNESSBoYXJkIGRpc2spCisKKyAzNyBjaGFyCUlERSB0YXBlCisJCSAgMCA9IC9kZXYvaHQwCQlGaXJzdCBJREUgdGFwZQorCQkgIDEgPSAvZGV2L2h0MQkJU2Vjb25kIElERSB0YXBlCisJCSAgICAuLi4KKwkJMTI4ID0gL2Rldi9uaHQwCQlGaXJzdCBJREUgdGFwZSwgbm8gcmV3aW5kLW9uLWNsb3NlCisJCTEyOSA9IC9kZXYvbmh0MQkJU2Vjb25kIElERSB0YXBlLCBubyByZXdpbmQtb24tY2xvc2UKKwkJICAgIC4uLgorCisJCUN1cnJlbnRseSwgb25seSBvbmUgSURFIHRhcGUgZHJpdmUgaXMgc3VwcG9ydGVkLgorCisgMzcgYmxvY2sJWm9ycm8gSUkgcmFtZGlzaworCQkgIDAgPSAvZGV2L3oycmFtCVpvcnJvIElJIHJhbWRpc2sKKworIDM4IGNoYXIJTXlyaWNvbSBQQ0kgTXlyaW5ldCBib2FyZAorCQkgIDAgPSAvZGV2L21sYW5haTAJRmlyc3QgTXlyaW5ldCBib2FyZAorCQkgIDEgPSAvZGV2L21sYW5haTEJU2Vjb25kIE15cmluZXQgYm9hcmQKKwkJICAgIC4uLgorCisJCVRoaXMgZGV2aWNlIGlzIHVzZWQgZm9yIHN0YXR1cyBxdWVyeSwgYm9hcmQgY29udHJvbAorCQlhbmQgInVzZXIgbGV2ZWwgcGFja2V0IEkvTy4iICBUaGlzIGJvYXJkIGlzIGFsc28KKwkJYWNjZXNzaWJsZSBhcyBhIHN0YW5kYXJkIG5ldHdvcmtpbmcgImV0aCIgZGV2aWNlLgorCisgMzggYmxvY2sJT0JTT0xFVEUgKHdhcyBMaW51eC9BUCspCisKKyAzOSBjaGFyCU1MLTE2UCBleHBlcmltZW50YWwgSS9PIGJvYXJkCisJCSAgMCA9IC9kZXYvbWwxNnBhLWEwCUZpcnN0IGNhcmQsIGZpcnN0IGFuYWxvZyBjaGFubmVsCisJCSAgMSA9IC9kZXYvbWwxNnBhLWExCUZpcnN0IGNhcmQsIHNlY29uZCBhbmFsb2cgY2hhbm5lbAorCQkgICAgLi4uCisJCSAxNSA9IC9kZXYvbWwxNnBhLWExNQlGaXJzdCBjYXJkLCAxNnRoIGFuYWxvZyBjaGFubmVsCisJCSAxNiA9IC9kZXYvbWwxNnBhLWQJRmlyc3QgY2FyZCwgZGlnaXRhbCBsaW5lcworCQkgMTcgPSAvZGV2L21sMTZwYS1jMAlGaXJzdCBjYXJkLCBmaXJzdCBjb3VudGVyL3RpbWVyCisJCSAxOCA9IC9kZXYvbWwxNnBhLWMxCUZpcnN0IGNhcmQsIHNlY29uZCBjb3VudGVyL3RpbWVyCisJCSAxOSA9IC9kZXYvbWwxNnBhLWMyCUZpcnN0IGNhcmQsIHRoaXJkIGNvdW50ZXIvdGltZXIKKwkJIDMyID0gL2Rldi9tbDE2cGItYTAJU2Vjb25kIGNhcmQsIGZpcnN0IGFuYWxvZyBjaGFubmVsCisJCSAzMyA9IC9kZXYvbWwxNnBiLWExCVNlY29uZCBjYXJkLCBzZWNvbmQgYW5hbG9nIGNoYW5uZWwKKwkJICAgIC4uLgorCQkgNDcgPSAvZGV2L21sMTZwYi1hMTUJU2Vjb25kIGNhcmQsIDE2dGggYW5hbG9nIGNoYW5uZWwKKwkJIDQ4ID0gL2Rldi9tbDE2cGItZAlTZWNvbmQgY2FyZCwgZGlnaXRhbCBsaW5lcworCQkgNDkgPSAvZGV2L21sMTZwYi1jMAlTZWNvbmQgY2FyZCwgZmlyc3QgY291bnRlci90aW1lcgorCQkgNTAgPSAvZGV2L21sMTZwYi1jMQlTZWNvbmQgY2FyZCwgc2Vjb25kIGNvdW50ZXIvdGltZXIKKwkJIDUxID0gL2Rldi9tbDE2cGItYzIJU2Vjb25kIGNhcmQsIHRoaXJkIGNvdW50ZXIvdGltZXIKKwkJICAgICAgLi4uCisgMzkgYmxvY2sKKworIDQwIGNoYXIKKworIDQwIGJsb2NrCisKKyA0MSBjaGFyCVlldCBBbm90aGVyIE1pY3JvIE1vbml0b3IKKwkJICAwID0gL2Rldi95YW1tCQlZZXQgQW5vdGhlciBNaWNybyBNb25pdG9yCisKKyA0MSBibG9jaworCisgNDIgY2hhcglEZW1vL3NhbXBsZSB1c2UKKworIDQyIGJsb2NrCURlbW8vc2FtcGxlIHVzZQorCisJCVRoaXMgbnVtYmVyIGlzIGludGVuZGVkIGZvciB1c2UgaW4gc2FtcGxlIGNvZGUsIGFzCisJCXdlbGwgYXMgYSBnZW5lcmFsICJleGFtcGxlIiBkZXZpY2UgbnVtYmVyLiAgSXQKKwkJc2hvdWxkIG5ldmVyIGJlIHVzZWQgZm9yIGEgZGV2aWNlIGRyaXZlciB0aGF0IGlzIGJlaW5nCisJCWRpc3RyaWJ1dGVkOyBlaXRoZXIgb2J0YWluIGFuIG9mZmljaWFsIG51bWJlciBvciB1c2UKKwkJdGhlIGxvY2FsL2V4cGVyaW1lbnRhbCByYW5nZS4gIFRoZSBzdWRkZW4gYWRkaXRpb24gb3IKKwkJcmVtb3ZhbCBvZiBhIGRyaXZlciB3aXRoIHRoaXMgbnVtYmVyIHNob3VsZCBub3QgY2F1c2UKKwkJaWxsIGVmZmVjdHMgdG8gdGhlIHN5c3RlbSAoYnVncyBleGNlcHRlZC4pCisKKwkJSU4gUEFSVElDVUxBUiwgQU5ZIERJU1RSSUJVVElPTiBXSElDSCBDT05UQUlOUyBBCisJCURFVklDRSBEUklWRVIgVVNJTkcgTUFKT1IgTlVNQkVSIDQyIElTIE5PTkNPTVBMSUFOVC4KKworIDQzIGNoYXIJaXNkbjRsaW51eCB2aXJ0dWFsIG1vZGVtCisJCSAgMCA9IC9kZXYvdHR5STAJRmlyc3QgdmlydHVhbCBtb2RlbQorCQkgICAgLi4uCisJCSA2MyA9IC9kZXYvdHR5STYzCTY0dGggdmlydHVhbCBtb2RlbQorCisgNDMgYmxvY2sJTmV0d29yayBibG9jayBkZXZpY2VzCisJCSAgMCA9IC9kZXYvbmIwCQlGaXJzdCBuZXR3b3JrIGJsb2NrIGRldmljZQorCQkgIDEgPSAvZGV2L25iMQkJU2Vjb25kIG5ldHdvcmsgYmxvY2sgZGV2aWNlCisJCSAgICAuLi4KKworCQlOZXR3b3JrIEJsb2NrIERldmljZSBpcyBzb21laG93IHNpbWlsYXIgdG8gbG9vcGJhY2sKKwkJZGV2aWNlczogSWYgeW91IHJlYWQgZnJvbSBpdCwgaXQgc2VuZHMgcGFja2V0IGFjcm9zcworCQluZXR3b3JrIGFza2luZyBzZXJ2ZXIgZm9yIGRhdGEuIElmIHlvdSB3cml0ZSB0byBpdCwgaXQKKwkJc2VuZHMgcGFja2V0IHRlbGxpbmcgc2VydmVyIHRvIHdyaXRlLiBJdCBjb3VsZCBiZSB1c2VkCisJCXRvIG1vdW50aW5nIGZpbGVzeXN0ZW1zIG92ZXIgdGhlIG5ldCwgc3dhcHBpbmcgb3ZlcgorCQl0aGUgbmV0LCBpbXBsZW1lbnRpbmcgYmxvY2sgZGV2aWNlIGluIHVzZXJsYW5kIGV0Yy4KKworIDQ0IGNoYXIJaXNkbjRsaW51eCB2aXJ0dWFsIG1vZGVtIC0gYWx0ZXJuYXRlIGRldmljZXMKKwkJICAwID0gL2Rldi9jdWkwCQlDYWxsb3V0IGRldmljZSBmb3IgdHR5STAKKwkJICAgIC4uLgorCQkgNjMgPSAvZGV2L2N1aTYzCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlJNjMKKworIDQ0IGJsb2NrCUZsYXNoIFRyYW5zbGF0aW9uIExheWVyIChGVEwpIGZpbGVzeXN0ZW1zCisJCSAgMCA9IC9kZXYvZnRsYQkJRlRMIG9uIGZpcnN0IE1lbW9yeSBUZWNobm9sb2d5IERldmljZQorCQkgMTYgPSAvZGV2L2Z0bGIJCUZUTCBvbiBzZWNvbmQgTWVtb3J5IFRlY2hub2xvZ3kgRGV2aWNlCisJCSAzMiA9IC9kZXYvZnRsYwkJRlRMIG9uIHRoaXJkIE1lbW9yeSBUZWNobm9sb2d5IERldmljZQorCQkgICAgLi4uCisJCTI0MCA9IC9kZXYvZnRscAkJRlRMIG9uIDE2dGggTWVtb3J5IFRlY2hub2xvZ3kgRGV2aWNlCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCBpbiB0aGUgc2FtZSB3YXkgYXMgZm9yIElERQorCQlkaXNrcyAoc2VlIG1ham9yIG51bWJlciAzKSBleGNlcHQgdGhhdCB0aGUgcGFydGl0aW9uCisJCWxpbWl0IGlzIDE1IHJhdGhlciB0aGFuIDYzIHBlciBkaXNrIChzYW1lIGFzIFNDU0kuKQorCisgNDUgY2hhcglpc2RuNGxpbnV4IElTRE4gQlJJIGRyaXZlcgorCQkgIDAgPSAvZGV2L2lzZG4wCUZpcnN0IHZpcnR1YWwgQiBjaGFubmVsIHJhdyBkYXRhCisJCSAgICAuLi4KKwkJIDYzID0gL2Rldi9pc2RuNjMJNjR0aCB2aXJ0dWFsIEIgY2hhbm5lbCByYXcgZGF0YQorCQkgNjQgPSAvZGV2L2lzZG5jdHJsMAlGaXJzdCBjaGFubmVsIGNvbnRyb2wvZGVidWcKKwkJICAgIC4uLgorCQkxMjcgPSAvZGV2L2lzZG5jdHJsNjMJNjR0aCBjaGFubmVsIGNvbnRyb2wvZGVidWcKKworCQkxMjggPSAvZGV2L2lwcHAwCUZpcnN0IFN5bmNQUFAgZGV2aWNlCisJCSAgICAuLi4KKwkJMTkxID0gL2Rldi9pcHBwNjMJNjR0aCBTeW5jUFBQIGRldmljZQorCisJCTI1NSA9IC9kZXYvaXNkbmluZm8JSVNETiBtb25pdG9yIGludGVyZmFjZQorCisgNDUgYmxvY2sJUGFyYWxsZWwgcG9ydCBJREUgZGlzayBkZXZpY2VzCisJCSAgMCA9IC9kZXYvcGRhCQlGaXJzdCBwYXJhbGxlbCBwb3J0IElERSBkaXNrCisJCSAxNiA9IC9kZXYvcGRiCQlTZWNvbmQgcGFyYWxsZWwgcG9ydCBJREUgZGlzaworCQkgMzIgPSAvZGV2L3BkYwkJVGhpcmQgcGFyYWxsZWwgcG9ydCBJREUgZGlzaworCQkgNDggPSAvZGV2L3BkZAkJRm91cnRoIHBhcmFsbGVsIHBvcnQgSURFIGRpc2sKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIGluIHRoZSBzYW1lIHdheSBhcyBmb3IgSURFCisJCWRpc2tzIChzZWUgbWFqb3IgbnVtYmVyIDMpIGV4Y2VwdCB0aGF0IHRoZSBwYXJ0aXRpb24KKwkJbGltaXQgaXMgMTUgcmF0aGVyIHRoYW4gNjMgcGVyIGRpc2suCisKKyA0NiBjaGFyCUNvbXRyb2wgUm9ja2V0cG9ydCBzZXJpYWwgY2FyZAorCQkgIDAgPSAvZGV2L3R0eVIwCUZpcnN0IFJvY2tldHBvcnQgcG9ydAorCQkgIDEgPSAvZGV2L3R0eVIxCVNlY29uZCBSb2NrZXRwb3J0IHBvcnQKKwkJICAgIC4uLgorIDQ2IGJsb2NrCVBhcmFsbGVsIHBvcnQgQVRBUEkgQ0QtUk9NIGRldmljZXMKKwkJICAwID0gL2Rldi9wY2QwCQlGaXJzdCBwYXJhbGxlbCBwb3J0IEFUQVBJIENELVJPTQorCQkgIDEgPSAvZGV2L3BjZDEJCVNlY29uZCBwYXJhbGxlbCBwb3J0IEFUQVBJIENELVJPTQorCQkgIDIgPSAvZGV2L3BjZDIJCVRoaXJkIHBhcmFsbGVsIHBvcnQgQVRBUEkgQ0QtUk9NCisJCSAgMyA9IC9kZXYvcGNkMwkJRm91cnRoIHBhcmFsbGVsIHBvcnQgQVRBUEkgQ0QtUk9NCisKKyA0NyBjaGFyCUNvbXRyb2wgUm9ja2V0cG9ydCBzZXJpYWwgY2FyZCAtIGFsdGVybmF0ZSBkZXZpY2VzCisJCSAgMCA9IC9kZXYvY3VyMAkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eVIwCisJCSAgMSA9IC9kZXYvY3VyMQkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eVIxCisJCSAgICAuLi4KKyA0NyBibG9jawlQYXJhbGxlbCBwb3J0IEFUQVBJIGRpc2sgZGV2aWNlcworCQkgIDAgPSAvZGV2L3BmMAkJRmlyc3QgcGFyYWxsZWwgcG9ydCBBVEFQSSBkaXNrCisJCSAgMSA9IC9kZXYvcGYxCQlTZWNvbmQgcGFyYWxsZWwgcG9ydCBBVEFQSSBkaXNrCisJCSAgMiA9IC9kZXYvcGYyCQlUaGlyZCBwYXJhbGxlbCBwb3J0IEFUQVBJIGRpc2sKKwkJICAzID0gL2Rldi9wZjMJCUZvdXJ0aCBwYXJhbGxlbCBwb3J0IEFUQVBJIGRpc2sKKworCQlUaGlzIGRyaXZlciBpcyBpbnRlbmRlZCBmb3IgZmxvcHB5IGRpc2tzIGFuZCBzaW1pbGFyCisJCWRldmljZXMgYW5kIGhlbmNlIGRvZXMgbm90IHN1cHBvcnQgcGFydGl0aW9uaW5nLgorCisgNDggY2hhcglTREwgUklTQ29tIHNlcmlhbCBjYXJkCisJCSAgMCA9IC9kZXYvdHR5TDAJRmlyc3QgUklTQ29tIHBvcnQKKwkJICAxID0gL2Rldi90dHlMMQlTZWNvbmQgUklTQ29tIHBvcnQKKwkJICAgIC4uLgorIDQ4IGJsb2NrCU15bGV4IERBQzk2MCBQQ0kgUkFJRCBjb250cm9sbGVyOyBmaXJzdCBjb250cm9sbGVyCisJCSAgMCA9IC9kZXYvcmQvYzBkMAlGaXJzdCBkaXNrLCB3aG9sZSBkaXNrCisJCSAgOCA9IC9kZXYvcmQvYzBkMQlTZWNvbmQgZGlzaywgd2hvbGUgZGlzaworCQkgICAgLi4uCisJCTI0OCA9IC9kZXYvcmQvYzBkMzEJMzJuZCBkaXNrLCB3aG9sZSBkaXNrCisKKwkJRm9yIHBhcnRpdGlvbnMgYWRkOgorCQkgIDAgPSAvZGV2L3JkL2M/ZD8JV2hvbGUgZGlzaworCQkgIDEgPSAvZGV2L3JkL2M/ZD9wMQlGaXJzdCBwYXJ0aXRpb24KKwkJICAgIC4uLgorCQkgIDcgPSAvZGV2L3JkL2M/ZD9wNwlTZXZlbnRoIHBhcnRpdGlvbgorCisgNDkgY2hhcglTREwgUklTQ29tIHNlcmlhbCBjYXJkIC0gYWx0ZXJuYXRlIGRldmljZXMKKwkJICAwID0gL2Rldi9jdWwwCQlDYWxsb3V0IGRldmljZSBmb3IgdHR5TDAKKwkJICAxID0gL2Rldi9jdWwxCQlDYWxsb3V0IGRldmljZSBmb3IgdHR5TDEKKwkJICAgIC4uLgorIDQ5IGJsb2NrCU15bGV4IERBQzk2MCBQQ0kgUkFJRCBjb250cm9sbGVyOyBzZWNvbmQgY29udHJvbGxlcgorCQkgIDAgPSAvZGV2L3JkL2MxZDAJRmlyc3QgZGlzaywgd2hvbGUgZGlzaworCQkgIDggPSAvZGV2L3JkL2MxZDEJU2Vjb25kIGRpc2ssIHdob2xlIGRpc2sKKwkJICAgIC4uLgorCQkyNDggPSAvZGV2L3JkL2MxZDMxCTMybmQgZGlzaywgd2hvbGUgZGlzaworCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgYXMgZm9yIG1ham9yIDQ4LgorCisgNTAgY2hhcglSZXNlcnZlZCBmb3IgR0xJTlQKKworIDUwIGJsb2NrCU15bGV4IERBQzk2MCBQQ0kgUkFJRCBjb250cm9sbGVyOyB0aGlyZCBjb250cm9sbGVyCisJCSAgMCA9IC9kZXYvcmQvYzJkMAlGaXJzdCBkaXNrLCB3aG9sZSBkaXNrCisJCSAgOCA9IC9kZXYvcmQvYzJkMQlTZWNvbmQgZGlzaywgd2hvbGUgZGlzaworCQkgICAgLi4uCisJCTI0OCA9IC9kZXYvcmQvYzJkMzEJMzJuZCBkaXNrLCB3aG9sZSBkaXNrCisKKyA1MSBjaGFyCUJheWNvbSByYWRpbyBtb2RlbSBPUiBSYWRpbyBUZWNoIEJJTS1YWFgtUlMyMzIgcmFkaW8gbW9kZW0KKwkJICAwID0gL2Rldi9iYzAJCUZpcnN0IEJheWNvbSByYWRpbyBtb2RlbQorCQkgIDEgPSAvZGV2L2JjMQkJU2Vjb25kIEJheWNvbSByYWRpbyBtb2RlbQorCQkgICAgLi4uCisgNTEgYmxvY2sJTXlsZXggREFDOTYwIFBDSSBSQUlEIGNvbnRyb2xsZXI7IGZvdXJ0aCBjb250cm9sbGVyCisJCSAgMCA9IC9kZXYvcmQvYzNkMAlGaXJzdCBkaXNrLCB3aG9sZSBkaXNrCisJCSAgOCA9IC9kZXYvcmQvYzNkMQlTZWNvbmQgZGlzaywgd2hvbGUgZGlzaworCQkgICAgLi4uCisJCTI0OCA9IC9kZXYvcmQvYzNkMzEJMzJuZCBkaXNrLCB3aG9sZSBkaXNrCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCBhcyBmb3IgbWFqb3IgNDguCisKKyA1MiBjaGFyCVNwZWxsY2FzdGVyIERhdGFDb21tL0JSSSBJU0ROIGNhcmQKKwkJICAwID0gL2Rldi9kY2JyaTAJRmlyc3QgRGF0YUNvbW0gY2FyZAorCQkgIDEgPSAvZGV2L2RjYnJpMQlTZWNvbmQgRGF0YUNvbW0gY2FyZAorCQkgIDIgPSAvZGV2L2RjYnJpMglUaGlyZCBEYXRhQ29tbSBjYXJkCisJCSAgMyA9IC9kZXYvZGNicmkzCUZvdXJ0aCBEYXRhQ29tbSBjYXJkCisKKyA1MiBibG9jawlNeWxleCBEQUM5NjAgUENJIFJBSUQgY29udHJvbGxlcjsgZmlmdGggY29udHJvbGxlcgorCQkgIDAgPSAvZGV2L3JkL2M0ZDAJRmlyc3QgZGlzaywgd2hvbGUgZGlzaworCQkgIDggPSAvZGV2L3JkL2M0ZDEJU2Vjb25kIGRpc2ssIHdob2xlIGRpc2sKKwkJICAgIC4uLgorCQkyNDggPSAvZGV2L3JkL2M0ZDMxCTMybmQgZGlzaywgd2hvbGUgZGlzaworCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgYXMgZm9yIG1ham9yIDQ4LgorCisgNTMgY2hhcglCRE0gaW50ZXJmYWNlIGZvciByZW1vdGUgZGVidWdnaW5nIE1DNjgzeHggbWljcm9jb250cm9sbGVycworCQkgIDAgPSAvZGV2L3BkX2JkbTAJUEQgQkRNIGludGVyZmFjZSBvbiBscDAKKwkJICAxID0gL2Rldi9wZF9iZG0xCVBEIEJETSBpbnRlcmZhY2Ugb24gbHAxCisJCSAgMiA9IC9kZXYvcGRfYmRtMglQRCBCRE0gaW50ZXJmYWNlIG9uIGxwMgorCQkgIDQgPSAvZGV2L2ljZF9iZG0wCUlDRCBCRE0gaW50ZXJmYWNlIG9uIGxwMAorCQkgIDUgPSAvZGV2L2ljZF9iZG0xCUlDRCBCRE0gaW50ZXJmYWNlIG9uIGxwMQorCQkgIDYgPSAvZGV2L2ljZF9iZG0yCUlDRCBCRE0gaW50ZXJmYWNlIG9uIGxwMgorCisJCVRoaXMgZGV2aWNlIGlzIHVzZWQgZm9yIHRoZSBpbnRlcmZhY2luZyB0byB0aGUgTUM2ODN4eAorCQltaWNyb2NvbnRyb2xsZXJzIHZpYSBCYWNrZ3JvdW5kIERlYnVnIE1vZGUgYnkgdXNlIG9mIGEKKwkJUGFyYWxsZWwgUG9ydCBpbnRlcmZhY2UuIFBEIGlzIHRoZSBNb3Rvcm9sYSBQdWJsaWMKKwkJRG9tYWluIEludGVyZmFjZSBhbmQgSUNEIGlzIHRoZSBjb21tZXJjaWFsIGludGVyZmFjZQorCQlieSBQJkUuCisKKyA1MyBibG9jawlNeWxleCBEQUM5NjAgUENJIFJBSUQgY29udHJvbGxlcjsgc2l4dGggY29udHJvbGxlcgorCQkgIDAgPSAvZGV2L3JkL2M1ZDAJRmlyc3QgZGlzaywgd2hvbGUgZGlzaworCQkgIDggPSAvZGV2L3JkL2M1ZDEJU2Vjb25kIGRpc2ssIHdob2xlIGRpc2sKKwkJICAgIC4uLgorCQkyNDggPSAvZGV2L3JkL2M1ZDMxCTMybmQgZGlzaywgd2hvbGUgZGlzaworCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgYXMgZm9yIG1ham9yIDQ4LgorCisgNTQgY2hhcglFbGVjdHJvY2FyZGlvZ25vc2lzIEhvbHRlciBzZXJpYWwgY2FyZAorCQkgIDAgPSAvZGV2L2hvbHRlcjAJRmlyc3QgSG9sdGVyIHBvcnQKKwkJICAxID0gL2Rldi9ob2x0ZXIxCVNlY29uZCBIb2x0ZXIgcG9ydAorCQkgIDIgPSAvZGV2L2hvbHRlcjIJVGhpcmQgSG9sdGVyIHBvcnQKKworCQlBIGN1c3RvbSBzZXJpYWwgY2FyZCB1c2VkIGJ5IEVsZWN0cm9jYXJkaW9nbm9zaXMgU1JMCisJCTxtc2VyaXRhbkBvdHRvbmVsLnB1Yi5ybz4gdG8gdHJhbnNmZXIgZGF0YSBmcm9tIEhvbHRlcgorCQkyNC1ob3VyIGhlYXJ0IG1vbml0b3JpbmcgZXF1aXBtZW50LgorCisgNTQgYmxvY2sJTXlsZXggREFDOTYwIFBDSSBSQUlEIGNvbnRyb2xsZXI7IHNldmVudGggY29udHJvbGxlcgorCQkgIDAgPSAvZGV2L3JkL2M2ZDAJRmlyc3QgZGlzaywgd2hvbGUgZGlzaworCQkgIDggPSAvZGV2L3JkL2M2ZDEJU2Vjb25kIGRpc2ssIHdob2xlIGRpc2sKKwkJICAgIC4uLgorCQkyNDggPSAvZGV2L3JkL2M2ZDMxCTMybmQgZGlzaywgd2hvbGUgZGlzaworCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgYXMgZm9yIG1ham9yIDQ4LgorCisgNTUgY2hhcglEU1A1NjAwMSBkaWdpdGFsIHNpZ25hbCBwcm9jZXNzb3IKKwkJICAwID0gL2Rldi9kc3A1NmsJRmlyc3QgRFNQNTYwMDEKKworIDU1IGJsb2NrCU15bGV4IERBQzk2MCBQQ0kgUkFJRCBjb250cm9sbGVyOyBlaWdodGggY29udHJvbGxlcgorCQkgIDAgPSAvZGV2L3JkL2M3ZDAJRmlyc3QgZGlzaywgd2hvbGUgZGlzaworCQkgIDggPSAvZGV2L3JkL2M3ZDEJU2Vjb25kIGRpc2ssIHdob2xlIGRpc2sKKwkJICAgIC4uLgorCQkyNDggPSAvZGV2L3JkL2M3ZDMxCTMybmQgZGlzaywgd2hvbGUgZGlzaworCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgYXMgZm9yIG1ham9yIDQ4LgorCisgNTYgY2hhcglBcHBsZSBEZXNrdG9wIEJ1cworCQkgIDAgPSAvZGV2L2FkYgkJQURCIGJ1cyBjb250cm9sCisKKwkJQWRkaXRpb25hbCBkZXZpY2VzIHdpbGwgYmUgYWRkZWQgdG8gdGhpcyBudW1iZXIsIGFsbAorCQlzdGFydGluZyB3aXRoIC9kZXYvYWRiLgorCisgNTYgYmxvY2sJRmlmdGggSURFIGhhcmQgZGlzay9DRC1ST00gaW50ZXJmYWNlCisJCSAgMCA9IC9kZXYvaGRpCQlNYXN0ZXI6IHdob2xlIGRpc2sgKG9yIENELVJPTSkKKwkJIDY0ID0gL2Rldi9oZGoJCVNsYXZlOiB3aG9sZSBkaXNrIChvciBDRC1ST00pCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgZm9yIHRoZSBmaXJzdAorCQlpbnRlcmZhY2UgKHNlZSBtYWpvciBudW1iZXIgMykuCisKKyA1NyBjaGFyCUhheWVzIEVTUCBzZXJpYWwgY2FyZAorCQkgIDAgPSAvZGV2L3R0eVAwCUZpcnN0IEVTUCBwb3J0CisJCSAgMSA9IC9kZXYvdHR5UDEJU2Vjb25kIEVTUCBwb3J0CisJCSAgICAuLi4KKworIDU3IGJsb2NrCVNpeHRoIElERSBoYXJkIGRpc2svQ0QtUk9NIGludGVyZmFjZQorCQkgIDAgPSAvZGV2L2hkawkJTWFzdGVyOiB3aG9sZSBkaXNrIChvciBDRC1ST00pCisJCSA2NCA9IC9kZXYvaGRsCQlTbGF2ZTogd2hvbGUgZGlzayAob3IgQ0QtUk9NKQorCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIGZvciB0aGUgZmlyc3QKKwkJaW50ZXJmYWNlIChzZWUgbWFqb3IgbnVtYmVyIDMpLgorCisgNTggY2hhcglIYXllcyBFU1Agc2VyaWFsIGNhcmQgLSBhbHRlcm5hdGUgZGV2aWNlcworCQkgIDAgPSAvZGV2L2N1cDAJCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlQMAorCQkgIDEgPSAvZGV2L2N1cDEJCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlQMQorCQkgICAgLi4uCisKKyA1OCBibG9jawlSZXNlcnZlZCBmb3IgbG9naWNhbCB2b2x1bWUgbWFuYWdlcgorCisgNTkgY2hhcglzZiBmaXJld2FsbCBwYWNrYWdlCisJCSAgMCA9IC9kZXYvZmlyZXdhbGwJQ29tbXVuaWNhdGlvbiB3aXRoIHNmIGtlcm5lbCBtb2R1bGUKKworIDU5IGJsb2NrCUdlbmVyaWMgUERBIGZpbGVzeXN0ZW0gZGV2aWNlCisJCSAgMCA9IC9kZXYvcGRhMAkJRmlyc3QgUERBIGRldmljZQorCQkgIDEgPSAvZGV2L3BkYTEJCVNlY29uZCBQREEgZGV2aWNlCisJCSAgICAuLi4KKworCQlUaGUgcGRhIGRldmljZXMgYXJlIHVzZWQgdG8gbW91bnQgZmlsZXN5c3RlbXMgb24KKwkJcmVtb3RlIHBkYSdzIChiYXNpY2FsbHkgc2xvdyBoYW5kaGVsZCBtYWNoaW5lcyB3aXRoCisJCXByb3ByaWV0YXJ5IE9TJ3MgYW5kIGxpbWl0ZWQgbWVtb3J5IGFuZCBzdG9yYWdlCisJCXJ1bm5pbmcgc21hbGwgZnMgdHJhbnNsYXRpb24gZHJpdmVycykgdGhyb3VnaCBzZXJpYWwgLworCQlJUkRBIC8gcGFyYWxsZWwgbGlua3MuCisKKwkJTkFNSU5HIENPTkZMSUNUIC0tIFBST1BPU0VEIFJFVklTRUQgTkFNRSAvZGV2L3JwZGEwIGV0YworCisgNjAtNjMgY2hhcglMT0NBTC9FWFBFUklNRU5UQUwgVVNFCisKKyA2MC02MyBibG9jawlMT0NBTC9FWFBFUklNRU5UQUwgVVNFCisJCUFsbG9jYXRlZCBmb3IgbG9jYWwvZXhwZXJpbWVudGFsIHVzZS4gIEZvciBkZXZpY2VzIG5vdAorCQlhc3NpZ25lZCBvZmZpY2lhbCBudW1iZXJzLCB0aGVzZSByYW5nZXMgc2hvdWxkIGJlCisJCXVzZWQgaW4gb3JkZXIgdG8gYXZvaWQgY29uZmxpY3Rpbmcgd2l0aCBmdXR1cmUgYXNzaWdubWVudHMuCisKKyA2NCBjaGFyCUVOc2tpcCBrZXJuZWwgZW5jcnlwdGlvbiBwYWNrYWdlCisJCSAgMCA9IC9kZXYvZW5za2lwCUNvbW11bmljYXRpb24gd2l0aCBFTnNraXAga2VybmVsIG1vZHVsZQorCisgNjQgYmxvY2sJU2NyYW1kaXNrL0RyaXZlQ3J5cHQgZW5jcnlwdGVkIGRldmljZXMKKwkJICAwID0gL2Rldi9zY3JhbWRpc2svbWFzdGVyICAgIE1hc3RlciBub2RlIGZvciBpb2N0bHMKKwkJICAxID0gL2Rldi9zY3JhbWRpc2svMSAgICAgICAgIEZpcnN0IGVuY3J5cHRlZCBkZXZpY2UKKwkJICAyID0gL2Rldi9zY3JhbWRpc2svMiAgICAgICAgIFNlY29uZCBlbmNyeXB0ZWQgZGV2aWNlCisJCSAgLi4uCisJCTI1NSA9IC9kZXYvc2NyYW1kaXNrLzI1NSAgICAgICAyNTV0aCBlbmNyeXB0ZWQgZGV2aWNlCisKKwkJVGhlIGZpbGVuYW1lIG9mIHRoZSBlbmNyeXB0ZWQgY29udGFpbmVyIGFuZCB0aGUgcGFzc3dvcmRzCisJCWFyZSBzZW50IHZpYSBpb2N0bHMgKHVzaW5nIHRoZSBzZG1vdW50IHRvb2wpIHRvIHRoZSBtYXN0ZXIKKwkJbm9kZSB3aGljaCB0aGVuIGFjdGl2YXRlcyB0aGVtIHZpYSBvbmUgb2YgdGhlCisJCS9kZXYvc2NyYW1kaXNrL3ggbm9kZXMgZm9yIGxvb3AgbW91bnRpbmcgKGFsbCBoYW5kbGVkCisJCXRocm91Z2ggdGhlIHNkbW91bnQgdG9vbCkuCisKKwkJUmVxdWVzdGVkIGJ5OiBhbmR5QHNjcmFtZGlza2xpbnV4Lm9yZworCisgNjUgY2hhcglTdW5kYW5jZSAicGxpbmsiIFRyYW5zcHV0ZXIgYm9hcmRzIChvYnNvbGV0ZSwgdW51c2VkKQorCQkgIDAgPSAvZGV2L3BsaW5rMAlGaXJzdCBwbGluayBkZXZpY2UKKwkJICAxID0gL2Rldi9wbGluazEJU2Vjb25kIHBsaW5rIGRldmljZQorCQkgIDIgPSAvZGV2L3BsaW5rMglUaGlyZCBwbGluayBkZXZpY2UKKwkJICAzID0gL2Rldi9wbGluazMJRm91cnRoIHBsaW5rIGRldmljZQorCQkgNjQgPSAvZGV2L3JwbGluazAJRmlyc3QgcGxpbmsgZGV2aWNlLCByYXcKKwkJIDY1ID0gL2Rldi9ycGxpbmsxCVNlY29uZCBwbGluayBkZXZpY2UsIHJhdworCQkgNjYgPSAvZGV2L3JwbGluazIJVGhpcmQgcGxpbmsgZGV2aWNlLCByYXcKKwkJIDY3ID0gL2Rldi9ycGxpbmszCUZvdXJ0aCBwbGluayBkZXZpY2UsIHJhdworCQkxMjggPSAvZGV2L3BsaW5rMGQJRmlyc3QgcGxpbmsgZGV2aWNlLCBkZWJ1ZworCQkxMjkgPSAvZGV2L3BsaW5rMWQJU2Vjb25kIHBsaW5rIGRldmljZSwgZGVidWcKKwkJMTMwID0gL2Rldi9wbGluazJkCVRoaXJkIHBsaW5rIGRldmljZSwgZGVidWcKKwkJMTMxID0gL2Rldi9wbGluazNkCUZvdXJ0aCBwbGluayBkZXZpY2UsIGRlYnVnCisJCTE5MiA9IC9kZXYvcnBsaW5rMGQJRmlyc3QgcGxpbmsgZGV2aWNlLCByYXcsIGRlYnVnCisJCTE5MyA9IC9kZXYvcnBsaW5rMWQJU2Vjb25kIHBsaW5rIGRldmljZSwgcmF3LCBkZWJ1ZworCQkxOTQgPSAvZGV2L3JwbGluazJkCVRoaXJkIHBsaW5rIGRldmljZSwgcmF3LCBkZWJ1ZworCQkxOTUgPSAvZGV2L3JwbGluazNkCUZvdXJ0aCBwbGluayBkZXZpY2UsIHJhdywgZGVidWcKKworCQlUaGlzIGlzIGEgY29tbWVyY2lhbCBkcml2ZXI7IGNvbnRhY3QgSmFtZXMgSG93ZXMKKwkJPGp0aEBwcm9zaWcuZGVtb24uY28udWs+IGZvciBpbmZvcm1hdGlvbi4KKworIDY1IGJsb2NrCVNDU0kgZGlzayBkZXZpY2VzICgxNi0zMSkKKwkJICAwID0gL2Rldi9zZHEJCTE3dGggU0NTSSBkaXNrIHdob2xlIGRpc2sKKwkJIDE2ID0gL2Rldi9zZHIJCTE4dGggU0NTSSBkaXNrIHdob2xlIGRpc2sKKwkJIDMyID0gL2Rldi9zZHMJCTE5dGggU0NTSSBkaXNrIHdob2xlIGRpc2sKKwkJICAgIC4uLgorCQkyNDAgPSAvZGV2L3NkYWYJCTMybmQgU0NTSSBkaXNrIHdob2xlIGRpc2sKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIGluIHRoZSBzYW1lIHdheSBhcyBmb3IgSURFCisJCWRpc2tzIChzZWUgbWFqb3IgbnVtYmVyIDMpIGV4Y2VwdCB0aGF0IHRoZSBsaW1pdCBvbgorCQlwYXJ0aXRpb25zIGlzIDE1LgorCisgNjYgY2hhcglZQVJDIFBvd2VyUEMgUENJIGNvcHJvY2Vzc29yIGNhcmQKKwkJICAwID0gL2Rldi95cHBjcGNpMAlGaXJzdCBZQVJDIGNhcmQKKwkJICAxID0gL2Rldi95cHBjcGNpMQlTZWNvbmQgWUFSQyBjYXJkCisJCSAgICAuLi4KKworIDY2IGJsb2NrCVNDU0kgZGlzayBkZXZpY2VzICgzMi00NykKKwkJICAwID0gL2Rldi9zZGFnCQkzM3RoIFNDU0kgZGlzayB3aG9sZSBkaXNrCisJCSAxNiA9IC9kZXYvc2RhaAkJMzR0aCBTQ1NJIGRpc2sgd2hvbGUgZGlzaworCQkgMzIgPSAvZGV2L3NkYWkJCTM1dGggU0NTSSBkaXNrIHdob2xlIGRpc2sKKwkJICAgIC4uLgorCQkyNDAgPSAvZGV2L3NkYXYJCTQ4bmQgU0NTSSBkaXNrIHdob2xlIGRpc2sKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIGluIHRoZSBzYW1lIHdheSBhcyBmb3IgSURFCisJCWRpc2tzIChzZWUgbWFqb3IgbnVtYmVyIDMpIGV4Y2VwdCB0aGF0IHRoZSBsaW1pdCBvbgorCQlwYXJ0aXRpb25zIGlzIDE1LgorCisgNjcgY2hhcglDb2RhIG5ldHdvcmsgZmlsZSBzeXN0ZW0KKwkJICAwID0gL2Rldi9jZnMwCQlDb2RhIGNhY2hlIG1hbmFnZXIKKworCQlTZWUgaHR0cDovL3d3dy5jb2RhLmNzLmNtdS5lZHUgZm9yIGluZm9ybWF0aW9uIGFib3V0IENvZGEuCisKKyA2NyBibG9jawlTQ1NJIGRpc2sgZGV2aWNlcyAoNDgtNjMpCisJCSAgMCA9IC9kZXYvc2RhdwkJNDl0aCBTQ1NJIGRpc2sgd2hvbGUgZGlzaworCQkgMTYgPSAvZGV2L3NkYXgJCTUwdGggU0NTSSBkaXNrIHdob2xlIGRpc2sKKwkJIDMyID0gL2Rldi9zZGF5CQk1MXN0IFNDU0kgZGlzayB3aG9sZSBkaXNrCisJCSAgICAuLi4KKwkJMjQwID0gL2Rldi9zZGJsCQk2NHRoIFNDU0kgZGlzayB3aG9sZSBkaXNrCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCBpbiB0aGUgc2FtZSB3YXkgYXMgZm9yIElERQorCQlkaXNrcyAoc2VlIG1ham9yIG51bWJlciAzKSBleGNlcHQgdGhhdCB0aGUgbGltaXQgb24KKwkJcGFydGl0aW9ucyBpcyAxNS4KKworIDY4IGNoYXIJQ0FQSSAyLjAgaW50ZXJmYWNlCisJCSAgMCA9IC9kZXYvY2FwaTIwCUNvbnRyb2wgZGV2aWNlCisJCSAgMSA9IC9kZXYvY2FwaTIwLjAwCUZpcnN0IENBUEkgMi4wIGFwcGxpY2F0aW9uCisJCSAgMiA9IC9kZXYvY2FwaTIwLjAxCVNlY29uZCBDQVBJIDIuMCBhcHBsaWNhdGlvbgorCQkgICAgLi4uCisJCSAyMCA9IC9kZXYvY2FwaTIwLjE5CTE5dGggQ0FQSSAyLjAgYXBwbGljYXRpb24KKworCQlJU0ROIENBUEkgMi4wIGRyaXZlciBmb3IgdXNlIHdpdGggQ0FQSSAyLjAKKwkJYXBwbGljYXRpb25zOyBjdXJyZW50bHkgc3VwcG9ydHMgdGhlIEFWTSBCMSBjYXJkLgorCisgNjggYmxvY2sJU0NTSSBkaXNrIGRldmljZXMgKDY0LTc5KQorCQkgIDAgPSAvZGV2L3NkYm0JCTY1dGggU0NTSSBkaXNrIHdob2xlIGRpc2sKKwkJIDE2ID0gL2Rldi9zZGJuCQk2NnRoIFNDU0kgZGlzayB3aG9sZSBkaXNrCisJCSAzMiA9IC9kZXYvc2RibwkJNjd0aCBTQ1NJIGRpc2sgd2hvbGUgZGlzaworCQkgICAgLi4uCisJCTI0MCA9IC9kZXYvc2RjYgkJODB0aCBTQ1NJIGRpc2sgd2hvbGUgZGlzaworCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvciBJREUKKwkJZGlza3MgKHNlZSBtYWpvciBudW1iZXIgMykgZXhjZXB0IHRoYXQgdGhlIGxpbWl0IG9uCisJCXBhcnRpdGlvbnMgaXMgMTUuCisKKyA2OSBjaGFyCU1BMTYgbnVtZXJpYyBhY2NlbGVyYXRvciBjYXJkCisJCSAgMCA9IC9kZXYvbWExNgkJQm9hcmQgbWVtb3J5IGFjY2VzcworCisgNjkgYmxvY2sJU0NTSSBkaXNrIGRldmljZXMgKDgwLTk1KQorCQkgIDAgPSAvZGV2L3NkY2MJCTgxc3QgU0NTSSBkaXNrIHdob2xlIGRpc2sKKwkJIDE2ID0gL2Rldi9zZGNkCQk4Mm5kIFNDU0kgZGlzayB3aG9sZSBkaXNrCisJCSAzMiA9IC9kZXYvc2RjZQkJODN0aCBTQ1NJIGRpc2sgd2hvbGUgZGlzaworCQkgICAgLi4uCisJCTI0MCA9IC9kZXYvc2RjcgkJOTZ0aCBTQ1NJIGRpc2sgd2hvbGUgZGlzaworCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvciBJREUKKwkJZGlza3MgKHNlZSBtYWpvciBudW1iZXIgMykgZXhjZXB0IHRoYXQgdGhlIGxpbWl0IG9uCisJCXBhcnRpdGlvbnMgaXMgMTUuCisKKyA3MCBjaGFyCVNwZWxsQ2FzdGVyIFByb3RvY29sIFNlcnZpY2VzIEludGVyZmFjZQorCQkgIDAgPSAvZGV2L2Fwc2NmZwlDb25maWd1cmF0aW9uIGludGVyZmFjZQorCQkgIDEgPSAvZGV2L2Fwc2F1dGgJQXV0aGVudGljYXRpb24gaW50ZXJmYWNlCisJCSAgMiA9IC9kZXYvYXBzbG9nCUxvZ2dpbmcgaW50ZXJmYWNlCisJCSAgMyA9IC9kZXYvYXBzZGJnCURlYnVnZ2luZyBpbnRlcmZhY2UKKwkJIDY0ID0gL2Rldi9hcHNpc2RuCUlTRE4gY29tbWFuZCBpbnRlcmZhY2UKKwkJIDY1ID0gL2Rldi9hcHNhc3luYwlBc3luYyBjb21tYW5kIGludGVyZmFjZQorCQkxMjggPSAvZGV2L2Fwc21vbglNb25pdG9yIGludGVyZmFjZQorCisgNzAgYmxvY2sJU0NTSSBkaXNrIGRldmljZXMgKDk2LTExMSkKKwkJICAwID0gL2Rldi9zZGNzCQk5N3RoIFNDU0kgZGlzayB3aG9sZSBkaXNrCisJCSAxNiA9IC9kZXYvc2RjdAkJOTh0aCBTQ1NJIGRpc2sgd2hvbGUgZGlzaworCQkgMzIgPSAvZGV2L3NkY3UJCTk5dGggU0NTSSBkaXNrIHdob2xlIGRpc2sKKwkJICAgIC4uLgorCQkyNDAgPSAvZGV2L3NkZGgJCTExMm5kIFNDU0kgZGlzayB3aG9sZSBkaXNrCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCBpbiB0aGUgc2FtZSB3YXkgYXMgZm9yIElERQorCQlkaXNrcyAoc2VlIG1ham9yIG51bWJlciAzKSBleGNlcHQgdGhhdCB0aGUgbGltaXQgb24KKwkJcGFydGl0aW9ucyBpcyAxNS4KKworIDcxIGNoYXIJQ29tcHV0b25lIEludGVsbGlQb3J0IElJIHNlcmlhbCBjYXJkCisJCSAgMCA9IC9kZXYvdHR5RjAJSW50ZWxsaVBvcnQgSUkgYm9hcmQgMCwgcG9ydCAwCisJCSAgMSA9IC9kZXYvdHR5RjEJSW50ZWxsaVBvcnQgSUkgYm9hcmQgMCwgcG9ydCAxCisJCSAgICAuLi4KKwkJIDYzID0gL2Rldi90dHlGNjMJSW50ZWxsaVBvcnQgSUkgYm9hcmQgMCwgcG9ydCA2MworCQkgNjQgPSAvZGV2L3R0eUY2NAlJbnRlbGxpUG9ydCBJSSBib2FyZCAxLCBwb3J0IDAKKwkJIDY1ID0gL2Rldi90dHlGNjUJSW50ZWxsaVBvcnQgSUkgYm9hcmQgMSwgcG9ydCAxCisJCSAgICAuLi4KKwkJMTI3ID0gL2Rldi90dHlGMTI3CUludGVsbGlQb3J0IElJIGJvYXJkIDEsIHBvcnQgNjMKKwkJMTI4ID0gL2Rldi90dHlGMTI4CUludGVsbGlQb3J0IElJIGJvYXJkIDIsIHBvcnQgMAorCQkxMjkgPSAvZGV2L3R0eUYxMjkJSW50ZWxsaVBvcnQgSUkgYm9hcmQgMiwgcG9ydCAxCisJCSAgICAuLi4KKwkJMTkxID0gL2Rldi90dHlGMTkxCUludGVsbGlQb3J0IElJIGJvYXJkIDIsIHBvcnQgNjMKKwkJMTkyID0gL2Rldi90dHlGMTkyCUludGVsbGlQb3J0IElJIGJvYXJkIDMsIHBvcnQgMAorCQkxOTMgPSAvZGV2L3R0eUYxOTMJSW50ZWxsaVBvcnQgSUkgYm9hcmQgMywgcG9ydCAxCisJCSAgICAuLi4KKwkJMjU1ID0gL2Rldi90dHlGMjU1CUludGVsbGlQb3J0IElJIGJvYXJkIDMsIHBvcnQgNjMKKworIDcxIGJsb2NrCVNDU0kgZGlzayBkZXZpY2VzICgxMTItMTI3KQorCQkgIDAgPSAvZGV2L3NkZGkJCTExM3RoIFNDU0kgZGlzayB3aG9sZSBkaXNrCisJCSAxNiA9IC9kZXYvc2RkagkJMTE0dGggU0NTSSBkaXNrIHdob2xlIGRpc2sKKwkJIDMyID0gL2Rldi9zZGRrCQkxMTV0aCBTQ1NJIGRpc2sgd2hvbGUgZGlzaworCQkgICAgLi4uCisJCTI0MCA9IC9kZXYvc2RkeAkJMTI4dGggU0NTSSBkaXNrIHdob2xlIGRpc2sKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIGluIHRoZSBzYW1lIHdheSBhcyBmb3IgSURFCisJCWRpc2tzIChzZWUgbWFqb3IgbnVtYmVyIDMpIGV4Y2VwdCB0aGF0IHRoZSBsaW1pdCBvbgorCQlwYXJ0aXRpb25zIGlzIDE1LgorCisgNzIgY2hhcglDb21wdXRvbmUgSW50ZWxsaVBvcnQgSUkgc2VyaWFsIGNhcmQgLSBhbHRlcm5hdGUgZGV2aWNlcworCQkgIDAgPSAvZGV2L2N1ZjAJCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlGMAorCQkgIDEgPSAvZGV2L2N1ZjEJCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlGMQorCQkgICAgLi4uCisJCSA2MyA9IC9kZXYvY3VmNjMJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eUY2MworCQkgNjQgPSAvZGV2L2N1ZjY0CUNhbGxvdXQgZGV2aWNlIGZvciB0dHlGNjQKKwkJIDY1ID0gL2Rldi9jdWY2NQlDYWxsb3V0IGRldmljZSBmb3IgdHR5RjY1CisJCSAgICAuLi4KKwkJMTI3ID0gL2Rldi9jdWYxMjcJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eUYxMjcKKwkJMTI4ID0gL2Rldi9jdWYxMjgJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eUYxMjgKKwkJMTI5ID0gL2Rldi9jdWYxMjkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eUYxMjkKKwkJICAgIC4uLgorCQkxOTEgPSAvZGV2L2N1ZjE5MQlDYWxsb3V0IGRldmljZSBmb3IgdHR5RjE5MQorCQkxOTIgPSAvZGV2L2N1ZjE5MglDYWxsb3V0IGRldmljZSBmb3IgdHR5RjE5MgorCQkxOTMgPSAvZGV2L2N1ZjE5MwlDYWxsb3V0IGRldmljZSBmb3IgdHR5RjE5MworCQkgICAgLi4uCisJCTI1NSA9IC9kZXYvY3VmMjU1CUNhbGxvdXQgZGV2aWNlIGZvciB0dHlGMjU1CisKKyA3MiBibG9jawlDb21wYXEgSW50ZWxsaWdlbnQgRHJpdmUgQXJyYXksIGZpcnN0IGNvbnRyb2xsZXIKKwkJICAwID0gL2Rldi9pZGEvYzBkMAlGaXJzdCBsb2dpY2FsIGRyaXZlIHdob2xlIGRpc2sKKwkJIDE2ID0gL2Rldi9pZGEvYzBkMQlTZWNvbmQgbG9naWNhbCBkcml2ZSB3aG9sZSBkaXNrCisJCSAgICAuLi4KKwkJMjQwID0gL2Rldi9pZGEvYzBkMTUJMTZ0aCBsb2dpY2FsIGRyaXZlIHdob2xlIGRpc2sKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBmb3IgTXlsZXgKKwkJREFDOTYwIChzZWUgbWFqb3IgbnVtYmVyIDQ4KSBleGNlcHQgdGhhdCB0aGUgbGltaXQgb24KKwkJcGFydGl0aW9ucyBpcyAxNS4KKworIDczIGNoYXIJQ29tcHV0b25lIEludGVsbGlQb3J0IElJIHNlcmlhbCBjYXJkIC0gY29udHJvbCBkZXZpY2VzCisJCSAgMCA9IC9kZXYvaXAyaXBsMAlMb2Fkd2FyZSBkZXZpY2UgZm9yIGJvYXJkIDAKKwkJICAxID0gL2Rldi9pcDJzdGF0MAlTdGF0dXMgZGV2aWNlIGZvciBib2FyZCAwCisJCSAgNCA9IC9kZXYvaXAyaXBsMQlMb2Fkd2FyZSBkZXZpY2UgZm9yIGJvYXJkIDEKKwkJICA1ID0gL2Rldi9pcDJzdGF0MQlTdGF0dXMgZGV2aWNlIGZvciBib2FyZCAxCisJCSAgOCA9IC9kZXYvaXAyaXBsMglMb2Fkd2FyZSBkZXZpY2UgZm9yIGJvYXJkIDIKKwkJICA5ID0gL2Rldi9pcDJzdGF0MglTdGF0dXMgZGV2aWNlIGZvciBib2FyZCAyCisJCSAxMiA9IC9kZXYvaXAyaXBsMwlMb2Fkd2FyZSBkZXZpY2UgZm9yIGJvYXJkIDMKKwkJIDEzID0gL2Rldi9pcDJzdGF0MwlTdGF0dXMgZGV2aWNlIGZvciBib2FyZCAzCisKKyA3MyBibG9jawlDb21wYXEgSW50ZWxsaWdlbnQgRHJpdmUgQXJyYXksIHNlY29uZCBjb250cm9sbGVyCisJCSAgMCA9IC9kZXYvaWRhL2MxZDAJRmlyc3QgbG9naWNhbCBkcml2ZSB3aG9sZSBkaXNrCisJCSAxNiA9IC9kZXYvaWRhL2MxZDEJU2Vjb25kIGxvZ2ljYWwgZHJpdmUgd2hvbGUgZGlzaworCQkgICAgLi4uCisJCTI0MCA9IC9kZXYvaWRhL2MxZDE1CTE2dGggbG9naWNhbCBkcml2ZSB3aG9sZSBkaXNrCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgZm9yIE15bGV4CisJCURBQzk2MCAoc2VlIG1ham9yIG51bWJlciA0OCkgZXhjZXB0IHRoYXQgdGhlIGxpbWl0IG9uCisJCXBhcnRpdGlvbnMgaXMgMTUuCisKKyA3NCBjaGFyCVNDSSBicmlkZ2UKKwkJICAwID0gL2Rldi9TQ0kvMAlTQ0kgZGV2aWNlIDAKKwkJICAxID0gL2Rldi9TQ0kvMQlTQ0kgZGV2aWNlIDEKKwkJICAgIC4uLgorCisJCUN1cnJlbnRseSBmb3IgRG9scGhpbiBJbnRlcmNvbm5lY3QgU29sdXRpb25zJyBQQ0ktU0NJCisJCWJyaWRnZS4KKworIDc0IGJsb2NrCUNvbXBhcSBJbnRlbGxpZ2VudCBEcml2ZSBBcnJheSwgdGhpcmQgY29udHJvbGxlcgorCQkgIDAgPSAvZGV2L2lkYS9jMmQwCUZpcnN0IGxvZ2ljYWwgZHJpdmUgd2hvbGUgZGlzaworCQkgMTYgPSAvZGV2L2lkYS9jMmQxCVNlY29uZCBsb2dpY2FsIGRyaXZlIHdob2xlIGRpc2sKKwkJICAgIC4uLgorCQkyNDAgPSAvZGV2L2lkYS9jMmQxNQkxNnRoIGxvZ2ljYWwgZHJpdmUgd2hvbGUgZGlzaworCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIGZvciBNeWxleAorCQlEQUM5NjAgKHNlZSBtYWpvciBudW1iZXIgNDgpIGV4Y2VwdCB0aGF0IHRoZSBsaW1pdCBvbgorCQlwYXJ0aXRpb25zIGlzIDE1LgorCisgNzUgY2hhcglTcGVjaWFsaXggSU84KyBzZXJpYWwgY2FyZAorCQkgIDAgPSAvZGV2L3R0eVcwCUZpcnN0IElPOCsgcG9ydCwgZmlyc3QgY2FyZAorCQkgIDEgPSAvZGV2L3R0eVcxCVNlY29uZCBJTzgrIHBvcnQsIGZpcnN0IGNhcmQKKwkJICAgIC4uLgorCQkgIDggPSAvZGV2L3R0eVc4CUZpcnN0IElPOCsgcG9ydCwgc2Vjb25kIGNhcmQKKwkJICAgIC4uLgorCisgNzUgYmxvY2sJQ29tcGFxIEludGVsbGlnZW50IERyaXZlIEFycmF5LCBmb3VydGggY29udHJvbGxlcgorCQkgIDAgPSAvZGV2L2lkYS9jM2QwCUZpcnN0IGxvZ2ljYWwgZHJpdmUgd2hvbGUgZGlzaworCQkgMTYgPSAvZGV2L2lkYS9jM2QxCVNlY29uZCBsb2dpY2FsIGRyaXZlIHdob2xlIGRpc2sKKwkJICAgIC4uLgorCQkyNDAgPSAvZGV2L2lkYS9jM2QxNQkxNnRoIGxvZ2ljYWwgZHJpdmUgd2hvbGUgZGlzaworCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIGZvciBNeWxleAorCQlEQUM5NjAgKHNlZSBtYWpvciBudW1iZXIgNDgpIGV4Y2VwdCB0aGF0IHRoZSBsaW1pdCBvbgorCQlwYXJ0aXRpb25zIGlzIDE1LgorCisgNzYgY2hhcglTcGVjaWFsaXggSU84KyBzZXJpYWwgY2FyZCAtIGFsdGVybmF0ZSBkZXZpY2VzCisJCSAgMCA9IC9kZXYvY3V3MAkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eVcwCisJCSAgMSA9IC9kZXYvY3V3MQkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eVcxCisJCSAgICAuLi4KKwkJICA4ID0gL2Rldi9jdXc4CQlDYWxsb3V0IGRldmljZSBmb3IgdHR5VzgKKwkJICAgIC4uLgorCisgNzYgYmxvY2sJQ29tcGFxIEludGVsbGlnZW50IERyaXZlIEFycmF5LCBmaWZ0aCBjb250cm9sbGVyCisJCSAgMCA9IC9kZXYvaWRhL2M0ZDAJRmlyc3QgbG9naWNhbCBkcml2ZSB3aG9sZSBkaXNrCisJCSAxNiA9IC9kZXYvaWRhL2M0ZDEJU2Vjb25kIGxvZ2ljYWwgZHJpdmUgd2hvbGUgZGlzaworCQkgICAgLi4uCisJCTI0MCA9IC9kZXYvaWRhL2M0ZDE1CTE2dGggbG9naWNhbCBkcml2ZSB3aG9sZSBkaXNrCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgZm9yIE15bGV4CisJCURBQzk2MCAoc2VlIG1ham9yIG51bWJlciA0OCkgZXhjZXB0IHRoYXQgdGhlIGxpbWl0IG9uCisJCXBhcnRpdGlvbnMgaXMgMTUuCisKKworIDc3IGNoYXIJQ29tU2NpcmUgUXVhbnR1bSBOb2lzZSBHZW5lcmF0b3IKKwkJICAwID0gL2Rldi9xbmcJCUNvbVNjaXJlIFF1YW50dW0gTm9pc2UgR2VuZXJhdG9yCisKKyA3NyBibG9jawlDb21wYXEgSW50ZWxsaWdlbnQgRHJpdmUgQXJyYXksIHNpeHRoIGNvbnRyb2xsZXIKKwkJICAwID0gL2Rldi9pZGEvYzVkMAlGaXJzdCBsb2dpY2FsIGRyaXZlIHdob2xlIGRpc2sKKwkJIDE2ID0gL2Rldi9pZGEvYzVkMQlTZWNvbmQgbG9naWNhbCBkcml2ZSB3aG9sZSBkaXNrCisJCSAgICAuLi4KKwkJMjQwID0gL2Rldi9pZGEvYzVkMTUJMTZ0aCBsb2dpY2FsIGRyaXZlIHdob2xlIGRpc2sKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBmb3IgTXlsZXgKKwkJREFDOTYwIChzZWUgbWFqb3IgbnVtYmVyIDQ4KSBleGNlcHQgdGhhdCB0aGUgbGltaXQgb24KKwkJcGFydGl0aW9ucyBpcyAxNS4KKworIDc4IGNoYXIJUEFNIFNvZnR3YXJlJ3MgbXVsdGltb2RlbSBib2FyZHMKKwkJICAwID0gL2Rldi90dHlNMAlGaXJzdCBQQU0gbW9kZW0KKwkJICAxID0gL2Rldi90dHlNMQlTZWNvbmQgUEFNIG1vZGVtCisJCSAgICAuLi4KKworIDc4IGJsb2NrCUNvbXBhcSBJbnRlbGxpZ2VudCBEcml2ZSBBcnJheSwgc2V2ZW50aCBjb250cm9sbGVyCisJCSAgMCA9IC9kZXYvaWRhL2M2ZDAJRmlyc3QgbG9naWNhbCBkcml2ZSB3aG9sZSBkaXNrCisJCSAxNiA9IC9kZXYvaWRhL2M2ZDEJU2Vjb25kIGxvZ2ljYWwgZHJpdmUgd2hvbGUgZGlzaworCQkgICAgLi4uCisJCTI0MCA9IC9kZXYvaWRhL2M2ZDE1CTE2dGggbG9naWNhbCBkcml2ZSB3aG9sZSBkaXNrCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgZm9yIE15bGV4CisJCURBQzk2MCAoc2VlIG1ham9yIG51bWJlciA0OCkgZXhjZXB0IHRoYXQgdGhlIGxpbWl0IG9uCisJCXBhcnRpdGlvbnMgaXMgMTUuCisKKyA3OSBjaGFyCVBBTSBTb2Z0d2FyZSdzIG11bHRpbW9kZW0gYm9hcmRzIC0gYWx0ZXJuYXRlIGRldmljZXMKKwkJICAwID0gL2Rldi9jdW0wCQlDYWxsb3V0IGRldmljZSBmb3IgdHR5TTAKKwkJICAxID0gL2Rldi9jdW0xCQlDYWxsb3V0IGRldmljZSBmb3IgdHR5TTEKKwkJICAgIC4uLgorCisgNzkgYmxvY2sJQ29tcGFxIEludGVsbGlnZW50IERyaXZlIEFycmF5LCBlaWdodGggY29udHJvbGxlcgorCQkgIDAgPSAvZGV2L2lkYS9jN2QwCUZpcnN0IGxvZ2ljYWwgZHJpdmUgd2hvbGUgZGlzaworCQkgMTYgPSAvZGV2L2lkYS9jN2QxCVNlY29uZCBsb2dpY2FsIGRyaXZlIHdob2xlIGRpc2sKKwkJICAgIC4uLgorCQkyNDAgPSAvZGV2L2lkYS9jNzE1CTE2dGggbG9naWNhbCBkcml2ZSB3aG9sZSBkaXNrCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgZm9yIE15bGV4CisJCURBQzk2MCAoc2VlIG1ham9yIG51bWJlciA0OCkgZXhjZXB0IHRoYXQgdGhlIGxpbWl0IG9uCisJCXBhcnRpdGlvbnMgaXMgMTUuCisKKyA4MCBjaGFyCVBob3RvbWV0cmljcyBBVDIwMCBDQ0QgY2FtZXJhCisJCSAgMCA9IC9kZXYvYXQyMDAJUGhvdG9tZXRyaWNzIEFUMjAwIENDRCBjYW1lcmEKKworIDgwIGJsb2NrCUkyTyBoYXJkIGRpc2sKKwkJICAwID0gL2Rldi9pMm8vaGRhCUZpcnN0IEkyTyBoYXJkIGRpc2ssIHdob2xlIGRpc2sKKwkJIDE2ID0gL2Rldi9pMm8vaGRiCVNlY29uZCBJMk8gaGFyZCBkaXNrLCB3aG9sZSBkaXNrCisJCSAgICAuLi4KKwkJMjQwID0gL2Rldi9pMm8vaGRwCTE2dGggSTJPIGhhcmQgZGlzaywgd2hvbGUgZGlzaworCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvciBJREUKKwkJZGlza3MgKHNlZSBtYWpvciBudW1iZXIgMykgZXhjZXB0IHRoYXQgdGhlIGxpbWl0IG9uCisJCXBhcnRpdGlvbnMgaXMgMTUuCisKKyA4MSBjaGFyCXZpZGVvNGxpbnV4CisJCSAgMCA9IC9kZXYvdmlkZW8wCVZpZGVvIGNhcHR1cmUvb3ZlcmxheSBkZXZpY2UKKwkJICAgIC4uLgorCQkgNjMgPSAvZGV2L3ZpZGVvNjMJVmlkZW8gY2FwdHVyZS9vdmVybGF5IGRldmljZQorCQkgNjQgPSAvZGV2L3JhZGlvMAlSYWRpbyBkZXZpY2UKKwkJICAgIC4uLgorCQkxMjcgPSAvZGV2L3JhZGlvNjMJUmFkaW8gZGV2aWNlCisJCTEyOCA9IC9kZXYvc3dyYWRpbzAJU29mdHdhcmUgRGVmaW5lZCBSYWRpbyBkZXZpY2UKKwkJICAgIC4uLgorCQkxOTEgPSAvZGV2L3N3cmFkaW82MwlTb2Z0d2FyZSBEZWZpbmVkIFJhZGlvIGRldmljZQorCQkyMjQgPSAvZGV2L3ZiaTAJCVZlcnRpY2FsIGJsYW5rIGludGVycnVwdAorCQkgICAgLi4uCisJCTI1NSA9IC9kZXYvdmJpMzEJVmVydGljYWwgYmxhbmsgaW50ZXJydXB0CisKKwkJTWlub3IgbnVtYmVycyBhcmUgYWxsb2NhdGVkIGR5bmFtaWNhbGx5IHVubGVzcworCQlDT05GSUdfVklERU9fRklYRURfTUlOT1JfUkFOR0VTIChkZWZhdWx0IG4pCisJCWNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIHNldC4KKworIDgxIGJsb2NrCUkyTyBoYXJkIGRpc2sKKwkJICAwID0gL2Rldi9pMm8vaGRxCTE3dGggSTJPIGhhcmQgZGlzaywgd2hvbGUgZGlzaworCQkgMTYgPSAvZGV2L2kyby9oZHIJMTh0aCBJMk8gaGFyZCBkaXNrLCB3aG9sZSBkaXNrCisJCSAgICAuLi4KKwkJMjQwID0gL2Rldi9pMm8vaGRhZgkzMm5kIEkyTyBoYXJkIGRpc2ssIHdob2xlIGRpc2sKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIGluIHRoZSBzYW1lIHdheSBhcyBmb3IgSURFCisJCWRpc2tzIChzZWUgbWFqb3IgbnVtYmVyIDMpIGV4Y2VwdCB0aGF0IHRoZSBsaW1pdCBvbgorCQlwYXJ0aXRpb25zIGlzIDE1LgorCisgODIgY2hhcglXaU5SQURpTyBjb21tdW5pY2F0aW9ucyByZWNlaXZlciBjYXJkCisJCSAgMCA9IC9kZXYvd2lucmFkaW8wCUZpcnN0IFdpTlJBRGlPIGNhcmQKKwkJICAxID0gL2Rldi93aW5yYWRpbzEJU2Vjb25kIFdpTlJBRGlPIGNhcmQKKwkJICAgIC4uLgorCisJCVRoZSBkcml2ZXIgYW5kIGRvY3VtZW50YXRpb24gbWF5IGJlIG9idGFpbmVkIGZyb20KKwkJaHR0cDovL3d3dy53aW5yYWRpby5jb20vCisKKyA4MiBibG9jawlJMk8gaGFyZCBkaXNrCisJCSAgMCA9IC9kZXYvaTJvL2hkYWcJMzNyZCBJMk8gaGFyZCBkaXNrLCB3aG9sZSBkaXNrCisJCSAxNiA9IC9kZXYvaTJvL2hkYWgJMzR0aCBJMk8gaGFyZCBkaXNrLCB3aG9sZSBkaXNrCisJCSAgICAuLi4KKwkJMjQwID0gL2Rldi9pMm8vaGRhdgk0OHRoIEkyTyBoYXJkIGRpc2ssIHdob2xlIGRpc2sKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIGluIHRoZSBzYW1lIHdheSBhcyBmb3IgSURFCisJCWRpc2tzIChzZWUgbWFqb3IgbnVtYmVyIDMpIGV4Y2VwdCB0aGF0IHRoZSBsaW1pdCBvbgorCQlwYXJ0aXRpb25zIGlzIDE1LgorCisgODMgY2hhcglNYXRyb3ggbWdhX3ZpZCB2aWRlbyBkcml2ZXIKKyAJCSAwID0gL2Rldi9tZ2FfdmlkMAkxc3QgdmlkZW8gY2FyZAorCQkgMSA9IC9kZXYvbWdhX3ZpZDEJMm5kIHZpZGVvIGNhcmQKKwkJIDIgPSAvZGV2L21nYV92aWQyCTNyZCB2aWRlbyBjYXJkCisJCSAgLi4uCisJICAgICAgICAxNSA9IC9kZXYvbWdhX3ZpZDE1CTE2dGggdmlkZW8gY2FyZAorCisgODMgYmxvY2sJSTJPIGhhcmQgZGlzaworCQkgIDAgPSAvZGV2L2kyby9oZGF3CTQ5dGggSTJPIGhhcmQgZGlzaywgd2hvbGUgZGlzaworCQkgMTYgPSAvZGV2L2kyby9oZGF4CTUwdGggSTJPIGhhcmQgZGlzaywgd2hvbGUgZGlzaworCQkgICAgLi4uCisJCTI0MCA9IC9kZXYvaTJvL2hkYmwJNjR0aCBJMk8gaGFyZCBkaXNrLCB3aG9sZSBkaXNrCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCBpbiB0aGUgc2FtZSB3YXkgYXMgZm9yIElERQorCQlkaXNrcyAoc2VlIG1ham9yIG51bWJlciAzKSBleGNlcHQgdGhhdCB0aGUgbGltaXQgb24KKwkJcGFydGl0aW9ucyBpcyAxNS4KKworIDg0IGNoYXIJSWtvbiAxMDExWzU3XSBWZXJzYXRlYyBHcmVlbnNoZWV0IEludGVyZmFjZQorCQkgIDAgPSAvZGV2L2loY3AwCUZpcnN0IEdyZWVuc2hlZXQgcG9ydAorCQkgIDEgPSAvZGV2L2loY3AxCVNlY29uZCBHcmVlbnNoZWV0IHBvcnQKKworIDg0IGJsb2NrCUkyTyBoYXJkIGRpc2sKKwkJICAwID0gL2Rldi9pMm8vaGRibQk2NXRoIEkyTyBoYXJkIGRpc2ssIHdob2xlIGRpc2sKKwkJIDE2ID0gL2Rldi9pMm8vaGRibgk2NnRoIEkyTyBoYXJkIGRpc2ssIHdob2xlIGRpc2sKKwkJICAgIC4uLgorCQkyNDAgPSAvZGV2L2kyby9oZGNiCTgwdGggSTJPIGhhcmQgZGlzaywgd2hvbGUgZGlzaworCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvciBJREUKKwkJZGlza3MgKHNlZSBtYWpvciBudW1iZXIgMykgZXhjZXB0IHRoYXQgdGhlIGxpbWl0IG9uCisJCXBhcnRpdGlvbnMgaXMgMTUuCisKKyA4NSBjaGFyCUxpbnV4L1NHSSBzaGFyZWQgbWVtb3J5IGlucHV0IHF1ZXVlCisJCSAgMCA9IC9kZXYvc2htaXEJTWFzdGVyIHNoYXJlZCBpbnB1dCBxdWV1ZQorCQkgIDEgPSAvZGV2L3FjbnRsMAlGaXJzdCBkZXZpY2UgcHVzaGVkCisJCSAgMiA9IC9kZXYvcWNudGwxCVNlY29uZCBkZXZpY2UgcHVzaGVkCisJCSAgICAuLi4KKworIDg1IGJsb2NrCUkyTyBoYXJkIGRpc2sKKwkJICAwID0gL2Rldi9pMm8vaGRjYwk4MXN0IEkyTyBoYXJkIGRpc2ssIHdob2xlIGRpc2sKKwkJIDE2ID0gL2Rldi9pMm8vaGRjZAk4Mm5kIEkyTyBoYXJkIGRpc2ssIHdob2xlIGRpc2sKKwkJICAgIC4uLgorCQkyNDAgPSAvZGV2L2kyby9oZGNyCTk2dGggSTJPIGhhcmQgZGlzaywgd2hvbGUgZGlzaworCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvciBJREUKKwkJZGlza3MgKHNlZSBtYWpvciBudW1iZXIgMykgZXhjZXB0IHRoYXQgdGhlIGxpbWl0IG9uCisJCXBhcnRpdGlvbnMgaXMgMTUuCisKKyA4NiBjaGFyCVNDU0kgbWVkaWEgY2hhbmdlcgorCQkgIDAgPSAvZGV2L3NjaDAJCUZpcnN0IFNDU0kgbWVkaWEgY2hhbmdlcgorCQkgIDEgPSAvZGV2L3NjaDEJCVNlY29uZCBTQ1NJIG1lZGlhIGNoYW5nZXIKKwkJICAgIC4uLgorCisgODYgYmxvY2sJSTJPIGhhcmQgZGlzaworCQkgIDAgPSAvZGV2L2kyby9oZGNzCTk3dGggSTJPIGhhcmQgZGlzaywgd2hvbGUgZGlzaworCQkgMTYgPSAvZGV2L2kyby9oZGN0CTk4dGggSTJPIGhhcmQgZGlzaywgd2hvbGUgZGlzaworCQkgICAgLi4uCisJCTI0MCA9IC9kZXYvaTJvL2hkZGgJMTEydGggSTJPIGhhcmQgZGlzaywgd2hvbGUgZGlzaworCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvciBJREUKKwkJZGlza3MgKHNlZSBtYWpvciBudW1iZXIgMykgZXhjZXB0IHRoYXQgdGhlIGxpbWl0IG9uCisJCXBhcnRpdGlvbnMgaXMgMTUuCisKKyA4NyBjaGFyCVNvbnkgQ29udHJvbC1BMSBzdGVyZW8gY29udHJvbCBidXMKKwkJICAwID0gL2Rldi9jb250cm9sYTAJRmlyc3QgZGV2aWNlIG9uIGNoYWluCisJCSAgMSA9IC9kZXYvY29udHJvbGExCVNlY29uZCBkZXZpY2Ugb24gY2hhaW4KKwkJICAgIC4uLgorCisgODcgYmxvY2sJSTJPIGhhcmQgZGlzaworCQkgIDAgPSAvZGV2L2kyby9oZGRpCTExM3JkIEkyTyBoYXJkIGRpc2ssIHdob2xlIGRpc2sKKwkJIDE2ID0gL2Rldi9pMm8vaGRkagkxMTR0aCBJMk8gaGFyZCBkaXNrLCB3aG9sZSBkaXNrCisJCSAgICAuLi4KKwkJMjQwID0gL2Rldi9pMm8vaGRkeAkxMjh0aCBJMk8gaGFyZCBkaXNrLCB3aG9sZSBkaXNrCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCBpbiB0aGUgc2FtZSB3YXkgYXMgZm9yIElERQorCQlkaXNrcyAoc2VlIG1ham9yIG51bWJlciAzKSBleGNlcHQgdGhhdCB0aGUgbGltaXQgb24KKwkJcGFydGl0aW9ucyBpcyAxNS4KKworIDg4IGNoYXIJQ09NWCBzeW5jaHJvbm91cyBzZXJpYWwgY2FyZAorCQkgIDAgPSAvZGV2L2NvbXgwCUNPTVggY2hhbm5lbCAwCisJCSAgMSA9IC9kZXYvY29teDEJQ09NWCBjaGFubmVsIDEKKwkJICAgIC4uLgorCisgODggYmxvY2sJU2V2ZW50aCBJREUgaGFyZCBkaXNrL0NELVJPTSBpbnRlcmZhY2UKKwkJICAwID0gL2Rldi9oZG0JCU1hc3Rlcjogd2hvbGUgZGlzayAob3IgQ0QtUk9NKQorCQkgNjQgPSAvZGV2L2hkbgkJU2xhdmU6IHdob2xlIGRpc2sgKG9yIENELVJPTSkKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBmb3IgdGhlIGZpcnN0CisJCWludGVyZmFjZSAoc2VlIG1ham9yIG51bWJlciAzKS4KKworIDg5IGNoYXIJSTJDIGJ1cyBpbnRlcmZhY2UKKwkJICAwID0gL2Rldi9pMmMtMAlGaXJzdCBJMkMgYWRhcHRlcgorCQkgIDEgPSAvZGV2L2kyYy0xCVNlY29uZCBJMkMgYWRhcHRlcgorCQkgICAgLi4uCisKKyA4OSBibG9jawlFaWdodGggSURFIGhhcmQgZGlzay9DRC1ST00gaW50ZXJmYWNlCisJCSAgMCA9IC9kZXYvaGRvCQlNYXN0ZXI6IHdob2xlIGRpc2sgKG9yIENELVJPTSkKKwkJIDY0ID0gL2Rldi9oZHAJCVNsYXZlOiB3aG9sZSBkaXNrIChvciBDRC1ST00pCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgZm9yIHRoZSBmaXJzdAorCQlpbnRlcmZhY2UgKHNlZSBtYWpvciBudW1iZXIgMykuCisKKyA5MCBjaGFyCU1lbW9yeSBUZWNobm9sb2d5IERldmljZSAoUkFNLCBST00sIEZsYXNoKQorCQkgIDAgPSAvZGV2L210ZDAJCUZpcnN0IE1URCAocncpCisJCSAgMSA9IC9kZXYvbXRkcjAJRmlyc3QgTVREIChybykKKwkJICAgIC4uLgorCQkgMzAgPSAvZGV2L210ZDE1CTE2dGggTVREIChydykKKwkJIDMxID0gL2Rldi9tdGRyMTUJMTZ0aCBNVEQgKHJvKQorCisgOTAgYmxvY2sJTmludGggSURFIGhhcmQgZGlzay9DRC1ST00gaW50ZXJmYWNlCisJCSAgMCA9IC9kZXYvaGRxCQlNYXN0ZXI6IHdob2xlIGRpc2sgKG9yIENELVJPTSkKKwkJIDY0ID0gL2Rldi9oZHIJCVNsYXZlOiB3aG9sZSBkaXNrIChvciBDRC1ST00pCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgZm9yIHRoZSBmaXJzdAorCQlpbnRlcmZhY2UgKHNlZSBtYWpvciBudW1iZXIgMykuCisKKyA5MSBjaGFyCUNBTi1CdXMgZGV2aWNlcworCQkgIDAgPSAvZGV2L2NhbjAJCUZpcnN0IENBTi1CdXMgY29udHJvbGxlcgorCQkgIDEgPSAvZGV2L2NhbjEJCVNlY29uZCBDQU4tQnVzIGNvbnRyb2xsZXIKKwkJICAgIC4uLgorCisgOTEgYmxvY2sJVGVudGggSURFIGhhcmQgZGlzay9DRC1ST00gaW50ZXJmYWNlCisJCSAgMCA9IC9kZXYvaGRzCQlNYXN0ZXI6IHdob2xlIGRpc2sgKG9yIENELVJPTSkKKwkJIDY0ID0gL2Rldi9oZHQJCVNsYXZlOiB3aG9sZSBkaXNrIChvciBDRC1ST00pCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgZm9yIHRoZSBmaXJzdAorCQlpbnRlcmZhY2UgKHNlZSBtYWpvciBudW1iZXIgMykuCisKKyA5MiBjaGFyCVJlc2VydmVkIGZvciBpdGggS29tbXVuaWthdGlvbnN0ZWNobmlrIE1JQyBJU0ROIGNhcmQKKworIDkyIGJsb2NrCVBQREQgZW5jcnlwdGVkIGRpc2sgZHJpdmVyCisJCSAgMCA9IC9kZXYvcHBkZDAJRmlyc3QgZW5jcnlwdGVkIGRpc2sKKwkJICAxID0gL2Rldi9wcGRkMQlTZWNvbmQgZW5jcnlwdGVkIGRpc2sKKwkJICAgIC4uLgorCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvciBJREUKKwkJZGlza3MgKHNlZSBtYWpvciBudW1iZXIgMykgZXhjZXB0IHRoYXQgdGhlIGxpbWl0IG9uCisJCXBhcnRpdGlvbnMgaXMgMTUuCisKKyA5MyBjaGFyCisKKyA5MyBibG9jawlOQU5EIEZsYXNoIFRyYW5zbGF0aW9uIExheWVyIGZpbGVzeXN0ZW0KKwkJICAwID0gL2Rldi9uZnRsYQlGaXJzdCBORlRMIGxheWVyCisJCSAxNiA9IC9kZXYvbmZ0bGIJU2Vjb25kIE5GVEwgbGF5ZXIKKwkJICAgIC4uLgorCQkyNDAgPSAvZGV2L25mdGxwCTE2dGggTlRGTCBsYXllcgorCisgOTQgY2hhcgorCisgOTQgYmxvY2sJSUJNIFMvMzkwIERBU0QgYmxvY2sgc3RvcmFnZQorICAgIAkJICAwID0gL2Rldi9kYXNkYSBGaXJzdCBEQVNEIGRldmljZSwgbWFqb3IKKyAgICAJCSAgMSA9IC9kZXYvZGFzZGExIEZpcnN0IERBU0QgZGV2aWNlLCBibG9jayAxCisJICAgIAkgIDIgPSAvZGV2L2Rhc2RhMiBGaXJzdCBEQVNEIGRldmljZSwgYmxvY2sgMgorICAgIAkJICAzID0gL2Rldi9kYXNkYTMgRmlyc3QgREFTRCBkZXZpY2UsIGJsb2NrIDMKKyAgICAJCSAgNCA9IC9kZXYvZGFzZGIgU2Vjb25kIERBU0QgZGV2aWNlLCBtYWpvcgorICAgIAkJICA1ID0gL2Rldi9kYXNkYjEgU2Vjb25kIERBU0QgZGV2aWNlLCBibG9jayAxCisgICAgCQkgIDYgPSAvZGV2L2Rhc2RiMiBTZWNvbmQgREFTRCBkZXZpY2UsIGJsb2NrIDIKKyAgICAJCSAgNyA9IC9kZXYvZGFzZGIzIFNlY29uZCBEQVNEIGRldmljZSwgYmxvY2sgMworCQkgICAgLi4uCisKKyA5NSBjaGFyCUlQIGZpbHRlcgorCQkgIDAgPSAvZGV2L2lwbAkJRmlsdGVyIGNvbnRyb2wgZGV2aWNlL2xvZyBmaWxlCisJCSAgMSA9IC9kZXYvaXBuYXQJTkFUIGNvbnRyb2wgZGV2aWNlL2xvZyBmaWxlCisJCSAgMiA9IC9kZXYvaXBzdGF0ZQlTdGF0ZSBpbmZvcm1hdGlvbiBsb2cgZmlsZQorCQkgIDMgPSAvZGV2L2lwYXV0aAlBdXRoZW50aWNhdGlvbiBjb250cm9sIGRldmljZS9sb2cgZmlsZQorCQkgICAgLi4uCisKKyA5NiBjaGFyCVBhcmFsbGVsIHBvcnQgQVRBUEkgdGFwZSBkZXZpY2VzCisJCSAgMCA9IC9kZXYvcHQwCQlGaXJzdCBwYXJhbGxlbCBwb3J0IEFUQVBJIHRhcGUKKwkJICAxID0gL2Rldi9wdDEJCVNlY29uZCBwYXJhbGxlbCBwb3J0IEFUQVBJIHRhcGUKKwkJICAgIC4uLgorCQkxMjggPSAvZGV2L25wdDAJCUZpcnN0IHAucC4gQVRBUEkgdGFwZSwgbm8gcmV3aW5kCisJCTEyOSA9IC9kZXYvbnB0MQkJU2Vjb25kIHAucC4gQVRBUEkgdGFwZSwgbm8gcmV3aW5kCisJCSAgICAuLi4KKworIDk2IGJsb2NrCUludmVyc2UgTkFORCBGbGFzaCBUcmFuc2xhdGlvbiBMYXllcgorCQkgIDAgPSAvZGV2L2luZnRsYSBGaXJzdCBJTkZUTCBsYXllcgorCQkgMTYgPSAvZGV2L2luZnRsYiBTZWNvbmQgSU5GVEwgbGF5ZXIKKwkJICAgIC4uLgorCQkyNDAgPSAvZGV2L2luZnRscAkxNnRoIElOVEZMIGxheWVyCisKKyA5NyBjaGFyCVBhcmFsbGVsIHBvcnQgZ2VuZXJpYyBBVEFQSSBpbnRlcmZhY2UKKwkJICAwID0gL2Rldi9wZzAJCUZpcnN0IHBhcmFsbGVsIHBvcnQgQVRBUEkgZGV2aWNlCisJCSAgMSA9IC9kZXYvcGcxCQlTZWNvbmQgcGFyYWxsZWwgcG9ydCBBVEFQSSBkZXZpY2UKKwkJICAyID0gL2Rldi9wZzIJCVRoaXJkIHBhcmFsbGVsIHBvcnQgQVRBUEkgZGV2aWNlCisJCSAgMyA9IC9kZXYvcGczCQlGb3VydGggcGFyYWxsZWwgcG9ydCBBVEFQSSBkZXZpY2UKKworCQlUaGVzZSBkZXZpY2VzIHN1cHBvcnQgdGhlIHNhbWUgQVBJIGFzIHRoZSBnZW5lcmljIFNDU0kKKwkJZGV2aWNlcy4KKworIDk4IGNoYXIJQ29udHJvbCBhbmQgTWVhc3VyZW1lbnQgRGV2aWNlIChjb21lZGkpCisJCSAgMCA9IC9kZXYvY29tZWRpMAlGaXJzdCBjb21lZGkgZGV2aWNlCisJCSAgMSA9IC9kZXYvY29tZWRpMQlTZWNvbmQgY29tZWRpIGRldmljZQorCQkgICAgLi4uCisKKwkJU2VlIGh0dHA6Ly9zdG0ubGJsLmdvdi9jb21lZGkuCisKKyA5OCBibG9jawlVc2VyLW1vZGUgdmlydHVhbCBibG9jayBkZXZpY2UKKwkJICAwID0gL2Rldi91YmRhCQlGaXJzdCB1c2VyLW1vZGUgYmxvY2sgZGV2aWNlCisJCSAxNiA9IC9kZXYvdWRiYgkJU2Vjb25kIHVzZXItbW9kZSBibG9jayBkZXZpY2UKKwkJICAgIC4uLgorCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvciBJREUKKwkJZGlza3MgKHNlZSBtYWpvciBudW1iZXIgMykgZXhjZXB0IHRoYXQgdGhlIGxpbWl0IG9uCisJCXBhcnRpdGlvbnMgaXMgMTUuCisKKwkJVGhpcyBkZXZpY2UgaXMgdXNlZCBieSB0aGUgdXNlci1tb2RlIHZpcnR1YWwga2VybmVsIHBvcnQuCisKKyA5OSBjaGFyCVJhdyBwYXJhbGxlbCBwb3J0cworCQkgIDAgPSAvZGV2L3BhcnBvcnQwCUZpcnN0IHBhcmFsbGVsIHBvcnQKKwkJICAxID0gL2Rldi9wYXJwb3J0MQlTZWNvbmQgcGFyYWxsZWwgcG9ydAorCQkgICAgLi4uCisKKyA5OSBibG9jawlKYXZhU3RhdGlvbiBmbGFzaCBkaXNrCisJCSAgMCA9IC9kZXYvanNmZAkJSmF2YVN0YXRpb24gZmxhc2ggZGlzaworCisxMDAgY2hhcglUZWxlcGhvbnkgZm9yIExpbnV4CisJCSAgMCA9IC9kZXYvcGhvbmUwCUZpcnN0IHRlbGVwaG9ueSBkZXZpY2UKKwkJICAxID0gL2Rldi9waG9uZTEJU2Vjb25kIHRlbGVwaG9ueSBkZXZpY2UKKwkJICAgIC4uLgorCisxMDEgY2hhcglNb3Rvcm9sYSBEU1AgNTZ4eHggYm9hcmQKKwkJICAwID0gL2Rldi9tZHNwc3RhdAlTdGF0dXMgaW5mb3JtYXRpb24KKwkJICAxID0gL2Rldi9tZHNwMQlGaXJzdCBEU1AgYm9hcmQgSS9PIGNvbnRyb2xzCisJCSAgICAuLi4KKwkJIDE2ID0gL2Rldi9tZHNwMTYJMTZ0aCBEU1AgYm9hcmQgSS9PIGNvbnRyb2xzCisKKzEwMSBibG9jawlBTUkgSHlwZXJEaXNrIFJBSUQgY29udHJvbGxlcgorCQkgIDAgPSAvZGV2L2FtaXJhaWQvYXIwCUZpcnN0IGFycmF5IHdob2xlIGRpc2sKKwkJIDE2ID0gL2Rldi9hbWlyYWlkL2FyMQlTZWNvbmQgYXJyYXkgd2hvbGUgZGlzaworCQkgICAgLi4uCisJCTI0MCA9IC9kZXYvYW1pcmFpZC9hcjE1CTE2dGggYXJyYXkgd2hvbGUgZGlzaworCisJCUZvciBlYWNoIGRldmljZSwgcGFydGl0aW9ucyBhcmUgYWRkZWQgYXM6CisJCSAgMCA9IC9kZXYvYW1pcmFpZC9hcj8JICBXaG9sZSBkaXNrCisJCSAgMSA9IC9kZXYvYW1pcmFpZC9hcj9wMSAgRmlyc3QgcGFydGl0aW9uCisJCSAgMiA9IC9kZXYvYW1pcmFpZC9hcj9wMiAgU2Vjb25kIHBhcnRpdGlvbgorCQkgICAgLi4uCisJCSAxNSA9IC9kZXYvYW1pcmFpZC9hcj9wMTUgMTV0aCBwYXJ0aXRpb24KKworMTAyIGNoYXIKKworMTAyIGJsb2NrCUNvbXByZXNzZWQgYmxvY2sgZGV2aWNlCisJCSAgMCA9IC9kZXYvY2JkL2EJRmlyc3QgY29tcHJlc3NlZCBibG9jayBkZXZpY2UsIHdob2xlIGRldmljZQorCQkgMTYgPSAvZGV2L2NiZC9iCVNlY29uZCBjb21wcmVzc2VkIGJsb2NrIGRldmljZSwgd2hvbGUgZGV2aWNlCisJCSAgICAuLi4KKwkJMjQwID0gL2Rldi9jYmQvcAkxNnRoIGNvbXByZXNzZWQgYmxvY2sgZGV2aWNlLCB3aG9sZSBkZXZpY2UKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIGluIHRoZSBzYW1lIHdheSBhcyBmb3IgSURFCisJCWRpc2tzIChzZWUgbWFqb3IgbnVtYmVyIDMpIGV4Y2VwdCB0aGF0IHRoZSBsaW1pdCBvbgorCQlwYXJ0aXRpb25zIGlzIDE1LgorCisxMDMgY2hhcglBcmxhIG5ldHdvcmsgZmlsZSBzeXN0ZW0KKwkJICAwID0gL2Rldi9ubnBmczAJRmlyc3QgTk5QRlMgZGV2aWNlCisJCSAgMSA9IC9kZXYvbm5wZnMxCVNlY29uZCBOTlBGUyBkZXZpY2UKKworCQlBcmxhIGlzIGEgZnJlZSBjbG9uZSBvZiB0aGUgQW5kcmV3IEZpbGUgU3lzdGVtLCBBRlMuCisJCVRoZSBOTlBGUyBkZXZpY2UgZ2l2ZXMgdXNlciBtb2RlIGZpbGVzeXN0ZW0KKwkJaW1wbGVtZW50YXRpb25zIGEga2VybmVsIHByZXNlbmNlIGZvciBjYWNoaW5nIGFuZCBlYXN5CisJCW1vdW50aW5nLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2plY3QsCisJCXdyaXRlIHRvIDxhcmxhLWRyaW5rZXJzQHN0YWNrZW4ua3RoLnNlPiBvciBzZWUKKwkJaHR0cDovL3d3dy5zdGFja2VuLmt0aC5zZS9wcm9qZWN0L2FybGEvCisKKzEwMyBibG9jawlBdWRpdCBkZXZpY2UKKwkJICAwID0gL2Rldi9hdWRpdAlBdWRpdCBkZXZpY2UKKworMTA0IGNoYXIJRmxhc2ggQklPUyBzdXBwb3J0CisKKzEwNCBibG9jawlDb21wYXEgTmV4dCBHZW5lcmF0aW9uIERyaXZlIEFycmF5LCBmaXJzdCBjb250cm9sbGVyCisJCSAgMCA9IC9kZXYvY2Npc3MvYzBkMAlGaXJzdCBsb2dpY2FsIGRyaXZlLCB3aG9sZSBkaXNrCisJCSAxNiA9IC9kZXYvY2Npc3MvYzBkMQlTZWNvbmQgbG9naWNhbCBkcml2ZSwgd2hvbGUgZGlzaworCQkgICAgLi4uCisJCTI0MCA9IC9kZXYvY2Npc3MvYzBkMTUJMTZ0aCBsb2dpY2FsIGRyaXZlLCB3aG9sZSBkaXNrCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgZm9yIE15bGV4CisJCURBQzk2MCAoc2VlIG1ham9yIG51bWJlciA0OCkgZXhjZXB0IHRoYXQgdGhlIGxpbWl0IG9uCisJCXBhcnRpdGlvbnMgaXMgMTUuCisKKzEwNSBjaGFyCUNvbXRyb2wgVlMtMTAwMCBzZXJpYWwgY29udHJvbGxlcgorCQkgIDAgPSAvZGV2L3R0eVYwCUZpcnN0IFZTLTEwMDAgcG9ydAorCQkgIDEgPSAvZGV2L3R0eVYxCVNlY29uZCBWUy0xMDAwIHBvcnQKKwkJICAgIC4uLgorCisxMDUgYmxvY2sJQ29tcGFxIE5leHQgR2VuZXJhdGlvbiBEcml2ZSBBcnJheSwgc2Vjb25kIGNvbnRyb2xsZXIKKwkJICAwID0gL2Rldi9jY2lzcy9jMWQwCUZpcnN0IGxvZ2ljYWwgZHJpdmUsIHdob2xlIGRpc2sKKwkJIDE2ID0gL2Rldi9jY2lzcy9jMWQxCVNlY29uZCBsb2dpY2FsIGRyaXZlLCB3aG9sZSBkaXNrCisJCSAgICAuLi4KKwkJMjQwID0gL2Rldi9jY2lzcy9jMWQxNQkxNnRoIGxvZ2ljYWwgZHJpdmUsIHdob2xlIGRpc2sKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBmb3IgTXlsZXgKKwkJREFDOTYwIChzZWUgbWFqb3IgbnVtYmVyIDQ4KSBleGNlcHQgdGhhdCB0aGUgbGltaXQgb24KKwkJcGFydGl0aW9ucyBpcyAxNS4KKworMTA2IGNoYXIJQ29tdHJvbCBWUy0xMDAwIHNlcmlhbCBjb250cm9sbGVyIC0gYWx0ZXJuYXRlIGRldmljZXMKKwkJICAwID0gL2Rldi9jdXYwCQlGaXJzdCBWUy0xMDAwIHBvcnQKKwkJICAxID0gL2Rldi9jdXYxCQlTZWNvbmQgVlMtMTAwMCBwb3J0CisJCSAgICAuLi4KKworMTA2IGJsb2NrCUNvbXBhcSBOZXh0IEdlbmVyYXRpb24gRHJpdmUgQXJyYXksIHRoaXJkIGNvbnRyb2xsZXIKKwkJICAwID0gL2Rldi9jY2lzcy9jMmQwCUZpcnN0IGxvZ2ljYWwgZHJpdmUsIHdob2xlIGRpc2sKKwkJIDE2ID0gL2Rldi9jY2lzcy9jMmQxCVNlY29uZCBsb2dpY2FsIGRyaXZlLCB3aG9sZSBkaXNrCisJCSAgICAuLi4KKwkJMjQwID0gL2Rldi9jY2lzcy9jMmQxNQkxNnRoIGxvZ2ljYWwgZHJpdmUsIHdob2xlIGRpc2sKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBmb3IgTXlsZXgKKwkJREFDOTYwIChzZWUgbWFqb3IgbnVtYmVyIDQ4KSBleGNlcHQgdGhhdCB0aGUgbGltaXQgb24KKwkJcGFydGl0aW9ucyBpcyAxNS4KKworMTA3IGNoYXIJM0RmeCBWb29kb28gR3JhcGhpY3MgZGV2aWNlCisJCSAgMCA9IC9kZXYvM2RmeAkJUHJpbWFyeSAzRGZ4IGdyYXBoaWNzIGRldmljZQorCisxMDcgYmxvY2sJQ29tcGFxIE5leHQgR2VuZXJhdGlvbiBEcml2ZSBBcnJheSwgZm91cnRoIGNvbnRyb2xsZXIKKwkJICAwID0gL2Rldi9jY2lzcy9jM2QwCUZpcnN0IGxvZ2ljYWwgZHJpdmUsIHdob2xlIGRpc2sKKwkJIDE2ID0gL2Rldi9jY2lzcy9jM2QxCVNlY29uZCBsb2dpY2FsIGRyaXZlLCB3aG9sZSBkaXNrCisJCSAgICAuLi4KKwkJMjQwID0gL2Rldi9jY2lzcy9jM2QxNQkxNnRoIGxvZ2ljYWwgZHJpdmUsIHdob2xlIGRpc2sKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBmb3IgTXlsZXgKKwkJREFDOTYwIChzZWUgbWFqb3IgbnVtYmVyIDQ4KSBleGNlcHQgdGhhdCB0aGUgbGltaXQgb24KKwkJcGFydGl0aW9ucyBpcyAxNS4KKworMTA4IGNoYXIJRGV2aWNlIGluZGVwZW5kZW50IFBQUCBpbnRlcmZhY2UKKwkJICAwID0gL2Rldi9wcHAJCURldmljZSBpbmRlcGVuZGVudCBQUFAgaW50ZXJmYWNlCisKKzEwOCBibG9jawlDb21wYXEgTmV4dCBHZW5lcmF0aW9uIERyaXZlIEFycmF5LCBmaWZ0aCBjb250cm9sbGVyCisJCSAgMCA9IC9kZXYvY2Npc3MvYzRkMAlGaXJzdCBsb2dpY2FsIGRyaXZlLCB3aG9sZSBkaXNrCisJCSAxNiA9IC9kZXYvY2Npc3MvYzRkMQlTZWNvbmQgbG9naWNhbCBkcml2ZSwgd2hvbGUgZGlzaworCQkgICAgLi4uCisJCTI0MCA9IC9kZXYvY2Npc3MvYzRkMTUJMTZ0aCBsb2dpY2FsIGRyaXZlLCB3aG9sZSBkaXNrCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgZm9yIE15bGV4CisJCURBQzk2MCAoc2VlIG1ham9yIG51bWJlciA0OCkgZXhjZXB0IHRoYXQgdGhlIGxpbWl0IG9uCisJCXBhcnRpdGlvbnMgaXMgMTUuCisKKzEwOSBjaGFyCVJlc2VydmVkIGZvciBsb2dpY2FsIHZvbHVtZSBtYW5hZ2VyCisKKzEwOSBibG9jawlDb21wYXEgTmV4dCBHZW5lcmF0aW9uIERyaXZlIEFycmF5LCBzaXh0aCBjb250cm9sbGVyCisJCSAgMCA9IC9kZXYvY2Npc3MvYzVkMAlGaXJzdCBsb2dpY2FsIGRyaXZlLCB3aG9sZSBkaXNrCisJCSAxNiA9IC9kZXYvY2Npc3MvYzVkMQlTZWNvbmQgbG9naWNhbCBkcml2ZSwgd2hvbGUgZGlzaworCQkgICAgLi4uCisJCTI0MCA9IC9kZXYvY2Npc3MvYzVkMTUJMTZ0aCBsb2dpY2FsIGRyaXZlLCB3aG9sZSBkaXNrCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgZm9yIE15bGV4CisJCURBQzk2MCAoc2VlIG1ham9yIG51bWJlciA0OCkgZXhjZXB0IHRoYXQgdGhlIGxpbWl0IG9uCisJCXBhcnRpdGlvbnMgaXMgMTUuCisKKzExMCBjaGFyCW1pcm9NRURJQSBTdXJyb3VuZCBib2FyZAorCQkgIDAgPSAvZGV2L3NybmQwCUZpcnN0IG1pcm9NRURJQSBTdXJyb3VuZCBib2FyZAorCQkgIDEgPSAvZGV2L3NybmQxCVNlY29uZCBtaXJvTUVESUEgU3Vycm91bmQgYm9hcmQKKwkJICAgIC4uLgorCisxMTAgYmxvY2sJQ29tcGFxIE5leHQgR2VuZXJhdGlvbiBEcml2ZSBBcnJheSwgc2V2ZW50aCBjb250cm9sbGVyCisJCSAgMCA9IC9kZXYvY2Npc3MvYzZkMAlGaXJzdCBsb2dpY2FsIGRyaXZlLCB3aG9sZSBkaXNrCisJCSAxNiA9IC9kZXYvY2Npc3MvYzZkMQlTZWNvbmQgbG9naWNhbCBkcml2ZSwgd2hvbGUgZGlzaworCQkgICAgLi4uCisJCTI0MCA9IC9kZXYvY2Npc3MvYzZkMTUJMTZ0aCBsb2dpY2FsIGRyaXZlLCB3aG9sZSBkaXNrCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgZm9yIE15bGV4CisJCURBQzk2MCAoc2VlIG1ham9yIG51bWJlciA0OCkgZXhjZXB0IHRoYXQgdGhlIGxpbWl0IG9uCisJCXBhcnRpdGlvbnMgaXMgMTUuCisKKzExMSBjaGFyCisKKzExMSBibG9jawlDb21wYXEgTmV4dCBHZW5lcmF0aW9uIERyaXZlIEFycmF5LCBlaWdodGggY29udHJvbGxlcgorCQkgIDAgPSAvZGV2L2NjaXNzL2M3ZDAJRmlyc3QgbG9naWNhbCBkcml2ZSwgd2hvbGUgZGlzaworCQkgMTYgPSAvZGV2L2NjaXNzL2M3ZDEJU2Vjb25kIGxvZ2ljYWwgZHJpdmUsIHdob2xlIGRpc2sKKwkJICAgIC4uLgorCQkyNDAgPSAvZGV2L2NjaXNzL2M3ZDE1CTE2dGggbG9naWNhbCBkcml2ZSwgd2hvbGUgZGlzaworCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIGZvciBNeWxleAorCQlEQUM5NjAgKHNlZSBtYWpvciBudW1iZXIgNDgpIGV4Y2VwdCB0aGF0IHRoZSBsaW1pdCBvbgorCQlwYXJ0aXRpb25zIGlzIDE1LgorCisxMTIgY2hhcglJU0kgc2VyaWFsIGNhcmQKKwkJICAwID0gL2Rldi90dHlNMAlGaXJzdCBJU0kgcG9ydAorCQkgIDEgPSAvZGV2L3R0eU0xCVNlY29uZCBJU0kgcG9ydAorCQkgICAgLi4uCisKKwkJVGhlcmUgaXMgY3VycmVudGx5IGEgZGV2aWNlLW5hbWluZyBjb25mbGljdCBiZXR3ZWVuCisJCXRoZXNlIGFuZCBQQU0gbXVsdGltb2RlbXMgKG1ham9yIDc4KS4KKworMTEyIGJsb2NrCUlCTSBpU2VyaWVzIHZpcnR1YWwgZGlzaworCQkgIDAgPSAvZGV2L2lzZXJpZXMvdmRhCUZpcnN0IHZpcnR1YWwgZGlzaywgd2hvbGUgZGlzaworCQkgIDggPSAvZGV2L2lzZXJpZXMvdmRiCVNlY29uZCB2aXJ0dWFsIGRpc2ssIHdob2xlIGRpc2sKKwkJICAgIC4uLgorCQkyMDAgPSAvZGV2L2lzZXJpZXMvdmR6CTI2dGggdmlydHVhbCBkaXNrLCB3aG9sZSBkaXNrCisJCTIwOCA9IC9kZXYvaXNlcmllcy92ZGFhCTI3dGggdmlydHVhbCBkaXNrLCB3aG9sZSBkaXNrCisJCSAgICAuLi4KKwkJMjQ4ID0gL2Rldi9pc2VyaWVzL3ZkYWYJMzJuZCB2aXJ0dWFsIGRpc2ssIHdob2xlIGRpc2sKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIGluIHRoZSBzYW1lIHdheSBhcyBmb3IgSURFCisJCWRpc2tzIChzZWUgbWFqb3IgbnVtYmVyIDMpIGV4Y2VwdCB0aGF0IHRoZSBsaW1pdCBvbgorCQlwYXJ0aXRpb25zIGlzIDcuCisKKzExMyBjaGFyCUlTSSBzZXJpYWwgY2FyZCAtIGFsdGVybmF0ZSBkZXZpY2VzCisJCSAgMCA9IC9kZXYvY3VtMAkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eU0wCisJCSAgMSA9IC9kZXYvY3VtMQkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eU0xCisJCSAgICAuLi4KKworMTEzIGJsb2NrCUlCTSBpU2VyaWVzIHZpcnR1YWwgQ0QtUk9NCisJCSAgMCA9IC9kZXYvaXNlcmllcy92Y2RhCUZpcnN0IHZpcnR1YWwgQ0QtUk9NCisJCSAgMSA9IC9kZXYvaXNlcmllcy92Y2RiCVNlY29uZCB2aXJ0dWFsIENELVJPTQorCQkgICAgLi4uCisKKzExNCBjaGFyCVBpY3R1cmUgRWxlbWVudHMgSVNFIGJvYXJkCisJCSAgMCA9IC9kZXYvaXNlMAkJRmlyc3QgSVNFIGJvYXJkCisJCSAgMSA9IC9kZXYvaXNlMQkJU2Vjb25kIElTRSBib2FyZAorCQkgICAgLi4uCisJCTEyOCA9IC9kZXYvaXNleDAJQ29udHJvbCBub2RlIGZvciBmaXJzdCBJU0UgYm9hcmQKKwkJMTI5ID0gL2Rldi9pc2V4MQlDb250cm9sIG5vZGUgZm9yIHNlY29uZCBJU0UgYm9hcmQKKwkJICAgIC4uLgorCisJCVRoZSBJU0UgYm9hcmQgaXMgYW4gZW1iZWRkZWQgY29tcHV0ZXIsIG9wdGltaXplZCBmb3IKKwkJaW1hZ2UgcHJvY2Vzc2luZy4gVGhlIC9kZXYvaXNlTiBub2RlcyBhcmUgdGhlIGdlbmVyYWwKKwkJSS9PIGFjY2VzcyB0byB0aGUgYm9hcmQsIHRoZSAvZGV2L2lzZXgwIG5vZGVzIGNvbW1hbmQKKwkJbm9kZXMgdXNlZCB0byBjb250cm9sIHRoZSBib2FyZC4KKworMTE0IGJsb2NrICAgICAgIElERSBCSU9TIHBvd2VyZWQgc29mdHdhcmUgUkFJRCBpbnRlcmZhY2VzIHN1Y2ggYXMgdGhlCisgICAgICAgICAgICAgICAgUHJvbWlzZSBGYXN0cmFrCisKKyAgICAgICAgICAgICAgICAgIDAgPSAvZGV2L2F0YXJhaWQvZDAKKyAgICAgICAgICAgICAgICAgIDEgPSAvZGV2L2F0YXJhaWQvZDBwMQorICAgICAgICAgICAgICAgICAgMiA9IC9kZXYvYXRhcmFpZC9kMHAyCisgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgMTYgPSAvZGV2L2F0YXJhaWQvZDEKKyAgICAgICAgICAgICAgICAgMTcgPSAvZGV2L2F0YXJhaWQvZDFwMQorICAgICAgICAgICAgICAgICAxOCA9IC9kZXYvYXRhcmFpZC9kMXAyCisgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAyNTUgPSAvZGV2L2F0YXJhaWQvZDE1cDE1CisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCBpbiB0aGUgc2FtZSB3YXkgYXMgZm9yIElERQorCQlkaXNrcyAoc2VlIG1ham9yIG51bWJlciAzKSBleGNlcHQgdGhhdCB0aGUgbGltaXQgb24KKwkJcGFydGl0aW9ucyBpcyAxNS4KKworMTE1IGNoYXIJVEkgbGluayBjYWJsZSBkZXZpY2VzICgxMTUgd2FzIGZvcm1lcmx5IHRoZSBjb25zb2xlIGRyaXZlciBzcGVha2VyKQorCQkgIDAgPSAvZGV2L3RpcGFyMCAgICBQYXJhbGxlbCBjYWJsZSBvbiBmaXJzdCBwYXJhbGxlbCBwb3J0CisJCSAgLi4uCisJCSAgNyA9IC9kZXYvdGlwYXI3ICAgIFBhcmFsbGVsIGNhYmxlIG9uIHNldmVudGggcGFyYWxsZWwgcG9ydAorCisJCSAgOCA9IC9kZXYvdGlzZXIwICAgIFNlcmlhbCBjYWJsZSBvbiBmaXJzdCBzZXJpYWwgcG9ydAorCQkgIC4uLgorCQkgMTUgPSAvZGV2L3Rpc2VyNyAgICBTZXJpYWwgY2FibGUgb24gc2V2ZW50aCBzZXJpYWwgcG9ydAorCisJCSAxNiA9IC9kZXYvdGl1c2IwICAgIEZpcnN0IFVTQiBjYWJsZQorCQkgIC4uLgorCQkgNDcgPSAvZGV2L3RpdXNiMzEgICAzMm5kIFVTQiBjYWJsZQorCisxMTUgYmxvY2sgICAgICAgTmV0V2FyZSAoTldGUykgRGV2aWNlcyAoMC0yNTUpCisKKyAgICAgICAgICAgICAgICBUaGUgTldGUyAoTmV0V2FyZSkgZGV2aWNlcyBhcmUgdXNlZCB0byBwcmVzZW50IGEKKyAgICAgICAgICAgICAgICBjb2xsZWN0aW9uIG9mIE5ldFdhcmUgTWlycm9yIEdyb3VwcyBvciBOZXRXYXJlCisgICAgICAgICAgICAgICAgUGFydGl0aW9ucyBhcyBhIGxvZ2ljYWwgc3RvcmFnZSBzZWdtZW50IGZvcgorICAgICAgICAgICAgICAgIHVzZSBpbiBtb3VudGluZyBOZXRXYXJlIHZvbHVtZXMuICBBIG1heGltdW0gb2YKKyAgICAgICAgICAgICAgICAyNTYgTmV0V2FyZSB2b2x1bWVzIGNhbiBiZSBzdXBwb3J0ZWQgaW4gYSBzaW5nbGUKKyAgICAgICAgICAgICAgICBtYWNoaW5lLgorCisgICAgICAgICAgICAgICAgaHR0cDovL2NnZmEudGVsZXBhYy5wdC9mdHAyL2tlcm5lbC5vcmcvbGludXgva2VybmVsL3Blb3BsZS9qbWVya2V5L253ZnMvCisKKyAgICAgICAgICAgICAgICAwID0gL2Rldi9ud2ZzL3YwICAgIEZpcnN0IE5ldFdhcmUgKE5XRlMpIExvZ2ljYWwgVm9sdW1lCisgICAgICAgICAgICAgICAgMSA9IC9kZXYvbndmcy92MSAgICBTZWNvbmQgTmV0V2FyZSAoTldGUykgTG9naWNhbCBWb2x1bWUKKyAgICAgICAgICAgICAgICAyID0gL2Rldi9ud2ZzL3YyICAgIFRoaXJkIE5ldFdhcmUgKE5XRlMpIExvZ2ljYWwgVm9sdW1lCisgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgMjU1ID0gL2Rldi9ud2ZzL3YyNTUgICAgTGFzdCBOZXRXYXJlIChOV0ZTKSBMb2dpY2FsIFZvbHVtZQorCisxMTYgY2hhcglBZHZhbmNlZCBMaW51eCBTb3VuZCBEcml2ZXIgKEFMU0EpCisKKzExNiBibG9jayAgICAgICBNaWNyb01lbW9yeSBiYXR0ZXJ5IGJhY2tlZCBSQU0gYWRhcHRlciAoTlZSQU0pCisgICAgICAgICAgICAgICAgU3VwcG9ydHMgMTYgYm9hcmRzLCAxNSBwYXJ0aXRpb25zIGVhY2guCisgICAgICAgICAgICAgICAgUmVxdWVzdGVkIGJ5IG5laWxiIGF0IGNzZS51bnN3LmVkdS5hdS4KKworCQkgMCA9IC9kZXYvdW1lbS9kMCAgICAgIFdob2xlIG9mIGZpcnN0IGJvYXJkCisJCSAxID0gL2Rldi91bWVtL2QwcDEgICAgRmlyc3QgcGFydGl0aW9uIG9mIGZpcnN0IGJvYXJkCisJCSAyID0gL2Rldi91bWVtL2QwcDIgICAgU2Vjb25kIHBhcnRpdGlvbiBvZiBmaXJzdCBib2FyZAorCQkxNSA9IC9kZXYvdW1lbS9kMHAxNSAgIDE1dGggcGFydGl0aW9uIG9mIGZpcnN0IGJvYXJkCisKKwkJMTYgPSAvZGV2L3VtZW0vZDEgICAgICBXaG9sZSBvZiBzZWNvbmQgYm9hcmQKKwkJMTcgPSAvZGV2L3VtZW0vZDFwMSAgICBGaXJzdCBwYXJ0aXRpb24gb2Ygc2Vjb25kIGJvYXJkCisJCSAgICAuLi4KKwkJMjU1PSAvZGV2L3VtZW0vZDE1cDE1ICAxNXRoIHBhcnRpdGlvbiBvZiAxNnRoIGJvYXJkLgorCisxMTcgY2hhcglDT1NBL1NSUCBzeW5jaHJvbm91cyBzZXJpYWwgY2FyZAorCQkgIDAgPSAvZGV2L2Nvc2EwYzAJMXN0IGJvYXJkLCAxc3QgY2hhbm5lbAorCQkgIDEgPSAvZGV2L2Nvc2EwYzEJMXN0IGJvYXJkLCAybmQgY2hhbm5lbAorCQkgICAgLi4uCisJCSAxNiA9IC9kZXYvY29zYTFjMAkybmQgYm9hcmQsIDFzdCBjaGFubmVsCisJCSAxNyA9IC9kZXYvY29zYTFjMQkybmQgYm9hcmQsIDJuZCBjaGFubmVsCisJCSAgICAuLi4KKworMTE3IGJsb2NrICAgICAgIEVudGVycHJpc2UgVm9sdW1lIE1hbmFnZW1lbnQgU3lzdGVtIChFVk1TKQorCisgICAgICAgICAgICAgICAgVGhlIEVWTVMgZHJpdmVyIHVzZXMgYSBsYXllcmVkLCBwbHVnLWluIG1vZGVsIHRvIHByb3ZpZGUKKyAgICAgICAgICAgICAgICB1bnBhcmFsbGVsZWQgZmxleGliaWxpdHkgYW5kIGV4dGVuc2liaWxpdHkgaW4gbWFuYWdpbmcKKyAgICAgICAgICAgICAgICBzdG9yYWdlLiAgVGhpcyBhbGxvd3MgZm9yIGVhc3kgZXhwYW5zaW9uIG9yIGN1c3RvbWl6YXRpb24KKyAgICAgICAgICAgICAgICBvZiB2YXJpb3VzIGxldmVscyBvZiB2b2x1bWUgbWFuYWdlbWVudC4gIFJlcXVlc3RlZCBieQorICAgICAgICAgICAgICAgIE1hcmsgUGVsb3F1aW4gKHBlbG9xdWluIGF0IHVzLmlibS5jb20pLgorCisgICAgICAgICAgICAgICAgTm90ZTogRVZNUyBwb3B1bGF0ZXMgYW5kIG1hbmFnZXMgYWxsIHRoZSBkZXZub2RlcyBpbgorICAgICAgICAgICAgICAgIC9kZXYvZXZtcy4KKworICAgICAgICAgICAgICAgIGh0dHA6Ly9zZi5uZXQvcHJvamVjdHMvZXZtcworCisgICAgICAgICAgICAgICAgICAwID0gL2Rldi9ldm1zL2Jsb2NrX2RldmljZSAgIEVWTVMgYmxvY2sgZGV2aWNlCisgICAgICAgICAgICAgICAgICAxID0gL2Rldi9ldm1zL2xlZ2FjeW5hbWUxICAgIEZpcnN0IEVWTVMgbGVnYWN5IGRldmljZQorICAgICAgICAgICAgICAgICAgMiA9IC9kZXYvZXZtcy9sZWdhY3luYW1lMiAgICBTZWNvbmQgRVZNUyBsZWdhY3kgZGV2aWNlCisgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgICAgICBCb3RoIHJhbmdlcyBjYW4gZ3JvdyAoZG93biBvciB1cCkgdW50aWwgdGhleSBtZWV0LgorICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAyNTQgPSAvZGV2L2V2bXMvRVZNU25hbWUyICAgICAgU2Vjb25kIEVWTVMgbmF0aXZlIGRldmljZQorICAgICAgICAgICAgICAgIDI1NSA9IC9kZXYvZXZtcy9FVk1TbmFtZTEgICAgICBGaXJzdCBFVk1TIG5hdGl2ZSBkZXZpY2UKKworICAgICAgICAgICAgICAgIE5vdGU6IGxlZ2FjeW5hbWUocykgYXJlIGRlcml2ZWQgZnJvbSB0aGUgbm9ybWFsIGxlZ2FjeQorICAgICAgICAgICAgICAgIGRldmljZSBuYW1lcy4gIEZvciBleGFtcGxlLCAvZGV2L2hkYTUgd291bGQgYmVjb21lCisgICAgICAgICAgICAgICAgL2Rldi9ldm1zL2hkYTUuCisKKzExOCBjaGFyCUlCTSBDcnlwdG9ncmFwaGljIEFjY2VsZXJhdG9yCisJCSAgMCA9IC9kZXYvaWNhCVZpcnR1YWwgaW50ZXJmYWNlIHRvIGFsbCBJQk0gQ3J5cHRvIEFjY2VsZXJhdG9ycworCQkgIDEgPSAvZGV2L2ljYTAJSUJNQ0EgRGV2aWNlIDAKKwkJICAyID0gL2Rldi9pY2ExCUlCTUNBIERldmljZSAxCisJCSAgICAuLi4KKworMTE5IGNoYXIJVk13YXJlIHZpcnR1YWwgbmV0d29yayBjb250cm9sCisJCSAgMCA9IC9kZXYvdm5ldDAJMXN0IHZpcnR1YWwgbmV0d29yaworCQkgIDEgPSAvZGV2L3ZuZXQxCTJuZCB2aXJ0dWFsIG5ldHdvcmsKKwkJICAgIC4uLgorCisxMjAtMTI3IGNoYXIJTE9DQUwvRVhQRVJJTUVOVEFMIFVTRQorCisxMjAtMTI3IGJsb2NrCUxPQ0FML0VYUEVSSU1FTlRBTCBVU0UKKwkJQWxsb2NhdGVkIGZvciBsb2NhbC9leHBlcmltZW50YWwgdXNlLiAgRm9yIGRldmljZXMgbm90CisJCWFzc2lnbmVkIG9mZmljaWFsIG51bWJlcnMsIHRoZXNlIHJhbmdlcyBzaG91bGQgYmUKKwkJdXNlZCBpbiBvcmRlciB0byBhdm9pZCBjb25mbGljdGluZyB3aXRoIGZ1dHVyZSBhc3NpZ25tZW50cy4KKworMTI4LTEzNSBjaGFyCVVuaXg5OCBQVFkgbWFzdGVycworCisJCVRoZXNlIGRldmljZXMgc2hvdWxkIG5vdCBoYXZlIGNvcnJlc3BvbmRpbmcgZGV2aWNlCisJCW5vZGVzOyBpbnN0ZWFkIHRoZXkgc2hvdWxkIGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlCisJCS9kZXYvcHRteCBjbG9uaW5nIGludGVyZmFjZS4KKworMTI4IGJsb2NrICAgICAgIFNDU0kgZGlzayBkZXZpY2VzICgxMjgtMTQzKQorICAgICAgICAgICAgICAgICAgMCA9IC9kZXYvc2RkeSAgICAgICAgIDEyOXRoIFNDU0kgZGlzayB3aG9sZSBkaXNrCisgICAgICAgICAgICAgICAgIDE2ID0gL2Rldi9zZGR6ICAgICAgICAgMTMwdGggU0NTSSBkaXNrIHdob2xlIGRpc2sKKyAgICAgICAgICAgICAgICAgMzIgPSAvZGV2L3NkZWEgICAgICAgICAxMzF0aCBTQ1NJIGRpc2sgd2hvbGUgZGlzaworICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAyNDAgPSAvZGV2L3NkZW4gICAgICAgICAxNDR0aCBTQ1NJIGRpc2sgd2hvbGUgZGlzaworCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvciBJREUKKwkJZGlza3MgKHNlZSBtYWpvciBudW1iZXIgMykgZXhjZXB0IHRoYXQgdGhlIGxpbWl0IG9uCisJCXBhcnRpdGlvbnMgaXMgMTUuCisKKzEyOSBibG9jayAgICAgICBTQ1NJIGRpc2sgZGV2aWNlcyAoMTQ0LTE1OSkKKyAgICAgICAgICAgICAgICAgIDAgPSAvZGV2L3NkZW8gICAgICAgICAxNDV0aCBTQ1NJIGRpc2sgd2hvbGUgZGlzaworICAgICAgICAgICAgICAgICAxNiA9IC9kZXYvc2RlcCAgICAgICAgIDE0NnRoIFNDU0kgZGlzayB3aG9sZSBkaXNrCisgICAgICAgICAgICAgICAgIDMyID0gL2Rldi9zZGVxICAgICAgICAgMTQ3dGggU0NTSSBkaXNrIHdob2xlIGRpc2sKKyAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgMjQwID0gL2Rldi9zZGZkICAgICAgICAgMTYwdGggU0NTSSBkaXNrIHdob2xlIGRpc2sKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIGluIHRoZSBzYW1lIHdheSBhcyBmb3IgSURFCisJCWRpc2tzIChzZWUgbWFqb3IgbnVtYmVyIDMpIGV4Y2VwdCB0aGF0IHRoZSBsaW1pdCBvbgorCQlwYXJ0aXRpb25zIGlzIDE1LgorCisxMzAgY2hhciAJKE1pc2MgZGV2aWNlcykKKworMTMwIGJsb2NrICAgICAgIFNDU0kgZGlzayBkZXZpY2VzICgxNjAtMTc1KQorICAgICAgICAgICAgICAgICAgMCA9IC9kZXYvc2RmZSAgICAgICAgIDE2MXN0IFNDU0kgZGlzayB3aG9sZSBkaXNrCisgICAgICAgICAgICAgICAgIDE2ID0gL2Rldi9zZGZmICAgICAgICAgMTYybmQgU0NTSSBkaXNrIHdob2xlIGRpc2sKKyAgICAgICAgICAgICAgICAgMzIgPSAvZGV2L3NkZmcgICAgICAgICAxNjNyZCBTQ1NJIGRpc2sgd2hvbGUgZGlzaworICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAyNDAgPSAvZGV2L3NkZnQgICAgICAgICAxNzZ0aCBTQ1NJIGRpc2sgd2hvbGUgZGlzaworCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvciBJREUKKwkJZGlza3MgKHNlZSBtYWpvciBudW1iZXIgMykgZXhjZXB0IHRoYXQgdGhlIGxpbWl0IG9uCisJCXBhcnRpdGlvbnMgaXMgMTUuCisKKzEzMSBibG9jayAgICAgICBTQ1NJIGRpc2sgZGV2aWNlcyAoMTc2LTE5MSkKKyAgICAgICAgICAgICAgICAgIDAgPSAvZGV2L3NkZnUgICAgICAgICAxNzd0aCBTQ1NJIGRpc2sgd2hvbGUgZGlzaworICAgICAgICAgICAgICAgICAxNiA9IC9kZXYvc2RmdiAgICAgICAgIDE3OHRoIFNDU0kgZGlzayB3aG9sZSBkaXNrCisgICAgICAgICAgICAgICAgIDMyID0gL2Rldi9zZGZ3ICAgICAgICAgMTc5dGggU0NTSSBkaXNrIHdob2xlIGRpc2sKKyAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgMjQwID0gL2Rldi9zZGdqICAgICAgICAgMTkybmQgU0NTSSBkaXNrIHdob2xlIGRpc2sKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIGluIHRoZSBzYW1lIHdheSBhcyBmb3IgSURFCisJCWRpc2tzIChzZWUgbWFqb3IgbnVtYmVyIDMpIGV4Y2VwdCB0aGF0IHRoZSBsaW1pdCBvbgorCQlwYXJ0aXRpb25zIGlzIDE1LgorCisxMzIgYmxvY2sgICAgICAgU0NTSSBkaXNrIGRldmljZXMgKDE5Mi0yMDcpCisgICAgICAgICAgICAgICAgICAwID0gL2Rldi9zZGdrICAgICAgICAgMTkzcmQgU0NTSSBkaXNrIHdob2xlIGRpc2sKKyAgICAgICAgICAgICAgICAgMTYgPSAvZGV2L3NkZ2wgICAgICAgICAxOTR0aCBTQ1NJIGRpc2sgd2hvbGUgZGlzaworICAgICAgICAgICAgICAgICAzMiA9IC9kZXYvc2RnbSAgICAgICAgIDE5NXRoIFNDU0kgZGlzayB3aG9sZSBkaXNrCisgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgIDI0MCA9IC9kZXYvc2RneiAgICAgICAgIDIwOHRoIFNDU0kgZGlzayB3aG9sZSBkaXNrCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCBpbiB0aGUgc2FtZSB3YXkgYXMgZm9yIElERQorCQlkaXNrcyAoc2VlIG1ham9yIG51bWJlciAzKSBleGNlcHQgdGhhdCB0aGUgbGltaXQgb24KKwkJcGFydGl0aW9ucyBpcyAxNS4KKworMTMzIGJsb2NrICAgICAgIFNDU0kgZGlzayBkZXZpY2VzICgyMDgtMjIzKQorICAgICAgICAgICAgICAgICAgMCA9IC9kZXYvc2RoYSAgICAgICAgIDIwOXRoIFNDU0kgZGlzayB3aG9sZSBkaXNrCisgICAgICAgICAgICAgICAgIDE2ID0gL2Rldi9zZGhiICAgICAgICAgMjEwdGggU0NTSSBkaXNrIHdob2xlIGRpc2sKKyAgICAgICAgICAgICAgICAgMzIgPSAvZGV2L3NkaGMgICAgICAgICAyMTF0aCBTQ1NJIGRpc2sgd2hvbGUgZGlzaworICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAyNDAgPSAvZGV2L3NkaHAgICAgICAgICAyMjR0aCBTQ1NJIGRpc2sgd2hvbGUgZGlzaworCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvciBJREUKKwkJZGlza3MgKHNlZSBtYWpvciBudW1iZXIgMykgZXhjZXB0IHRoYXQgdGhlIGxpbWl0IG9uCisJCXBhcnRpdGlvbnMgaXMgMTUuCisKKzEzNCBibG9jayAgICAgICBTQ1NJIGRpc2sgZGV2aWNlcyAoMjI0LTIzOSkKKyAgICAgICAgICAgICAgICAgIDAgPSAvZGV2L3NkaHEgICAgICAgICAyMjV0aCBTQ1NJIGRpc2sgd2hvbGUgZGlzaworICAgICAgICAgICAgICAgICAxNiA9IC9kZXYvc2RociAgICAgICAgIDIyNnRoIFNDU0kgZGlzayB3aG9sZSBkaXNrCisgICAgICAgICAgICAgICAgIDMyID0gL2Rldi9zZGhzICAgICAgICAgMjI3dGggU0NTSSBkaXNrIHdob2xlIGRpc2sKKyAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgMjQwID0gL2Rldi9zZGlmICAgICAgICAgMjQwdGggU0NTSSBkaXNrIHdob2xlIGRpc2sKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIGluIHRoZSBzYW1lIHdheSBhcyBmb3IgSURFCisJCWRpc2tzIChzZWUgbWFqb3IgbnVtYmVyIDMpIGV4Y2VwdCB0aGF0IHRoZSBsaW1pdCBvbgorCQlwYXJ0aXRpb25zIGlzIDE1LgorCisxMzUgYmxvY2sgICAgICAgU0NTSSBkaXNrIGRldmljZXMgKDI0MC0yNTUpCisgICAgICAgICAgICAgICAgICAwID0gL2Rldi9zZGlnICAgICAgICAgMjQxc3QgU0NTSSBkaXNrIHdob2xlIGRpc2sKKyAgICAgICAgICAgICAgICAgMTYgPSAvZGV2L3NkaWggICAgICAgICAyNDJuZCBTQ1NJIGRpc2sgd2hvbGUgZGlzaworICAgICAgICAgICAgICAgICAzMiA9IC9kZXYvc2RpaCAgICAgICAgIDI0M3JkIFNDU0kgZGlzayB3aG9sZSBkaXNrCisgICAgICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgIDI0MCA9IC9kZXYvc2RpdiAgICAgICAgIDI1NnRoIFNDU0kgZGlzayB3aG9sZSBkaXNrCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCBpbiB0aGUgc2FtZSB3YXkgYXMgZm9yIElERQorCQlkaXNrcyAoc2VlIG1ham9yIG51bWJlciAzKSBleGNlcHQgdGhhdCB0aGUgbGltaXQgb24KKwkJcGFydGl0aW9ucyBpcyAxNS4KKworMTM2LTE0MyBjaGFyCVVuaXg5OCBQVFkgc2xhdmVzCisJCSAgMCA9IC9kZXYvcHRzLzAJRmlyc3QgVW5peDk4IHBzZXVkby1UVFkKKwkJICAxID0gL2Rldi9wdHMvMQlTZWNvbmQgVW5peDk4IHBzZXVkby1UVFkKKwkJICAgIC4uLgorCisJCVRoZXNlIGRldmljZSBub2RlcyBhcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgd2l0aAorCQl0aGUgcHJvcGVyIHBlcm1pc3Npb25zIGFuZCBtb2RlcyBieSBtb3VudGluZyB0aGUKKwkJZGV2cHRzIGZpbGVzeXN0ZW0gb250byAvZGV2L3B0cyB3aXRoIHRoZSBhcHByb3ByaWF0ZQorCQltb3VudCBvcHRpb25zIChkaXN0cmlidXRpb24gZGVwZW5kZW50LCBob3dldmVyLCBvbgorCQkqbW9zdCogZGlzdHJpYnV0aW9ucyB0aGUgYXBwcm9wcmlhdGUgb3B0aW9ucyBhcmUKKwkJIm1vZGU9MDYyMCxnaWQ9PGdpZCBvZiB0aGUgInR0eSIgZ3JvdXA+Ii4pCisKKzEzNiBibG9jawlNeWxleCBEQUM5NjAgUENJIFJBSUQgY29udHJvbGxlcjsgbmludGggY29udHJvbGxlcgorCQkgIDAgPSAvZGV2L3JkL2M4ZDAJRmlyc3QgZGlzaywgd2hvbGUgZGlzaworCQkgIDggPSAvZGV2L3JkL2M4ZDEJU2Vjb25kIGRpc2ssIHdob2xlIGRpc2sKKwkJICAgIC4uLgorCQkyNDggPSAvZGV2L3JkL2M4ZDMxCTMybmQgZGlzaywgd2hvbGUgZGlzaworCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgYXMgZm9yIG1ham9yIDQ4LgorCisxMzcgYmxvY2sJTXlsZXggREFDOTYwIFBDSSBSQUlEIGNvbnRyb2xsZXI7IHRlbnRoIGNvbnRyb2xsZXIKKwkJICAwID0gL2Rldi9yZC9jOWQwCUZpcnN0IGRpc2ssIHdob2xlIGRpc2sKKwkJICA4ID0gL2Rldi9yZC9jOWQxCVNlY29uZCBkaXNrLCB3aG9sZSBkaXNrCisJCSAgICAuLi4KKwkJMjQ4ID0gL2Rldi9yZC9jOWQzMQkzMm5kIGRpc2ssIHdob2xlIGRpc2sKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIGFzIGZvciBtYWpvciA0OC4KKworMTM4IGJsb2NrCU15bGV4IERBQzk2MCBQQ0kgUkFJRCBjb250cm9sbGVyOyBlbGV2ZW50aCBjb250cm9sbGVyCisJCSAgMCA9IC9kZXYvcmQvYzEwZDAJRmlyc3QgZGlzaywgd2hvbGUgZGlzaworCQkgIDggPSAvZGV2L3JkL2MxMGQxCVNlY29uZCBkaXNrLCB3aG9sZSBkaXNrCisJCSAgICAuLi4KKwkJMjQ4ID0gL2Rldi9yZC9jMTBkMzEJMzJuZCBkaXNrLCB3aG9sZSBkaXNrCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCBhcyBmb3IgbWFqb3IgNDguCisKKzEzOSBibG9jawlNeWxleCBEQUM5NjAgUENJIFJBSUQgY29udHJvbGxlcjsgdHdlbGZ0aCBjb250cm9sbGVyCisJCSAgMCA9IC9kZXYvcmQvYzExZDAJRmlyc3QgZGlzaywgd2hvbGUgZGlzaworCQkgIDggPSAvZGV2L3JkL2MxMWQxCVNlY29uZCBkaXNrLCB3aG9sZSBkaXNrCisJCSAgICAuLi4KKwkJMjQ4ID0gL2Rldi9yZC9jMTFkMzEJMzJuZCBkaXNrLCB3aG9sZSBkaXNrCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCBhcyBmb3IgbWFqb3IgNDguCisKKzE0MCBibG9jawlNeWxleCBEQUM5NjAgUENJIFJBSUQgY29udHJvbGxlcjsgdGhpcnRlZW50aCBjb250cm9sbGVyCisJCSAgMCA9IC9kZXYvcmQvYzEyZDAJRmlyc3QgZGlzaywgd2hvbGUgZGlzaworCQkgIDggPSAvZGV2L3JkL2MxMmQxCVNlY29uZCBkaXNrLCB3aG9sZSBkaXNrCisJCSAgICAuLi4KKwkJMjQ4ID0gL2Rldi9yZC9jMTJkMzEJMzJuZCBkaXNrLCB3aG9sZSBkaXNrCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCBhcyBmb3IgbWFqb3IgNDguCisKKzE0MSBibG9jawlNeWxleCBEQUM5NjAgUENJIFJBSUQgY29udHJvbGxlcjsgZm91cnRlZW50aCBjb250cm9sbGVyCisJCSAgMCA9IC9kZXYvcmQvYzEzZDAJRmlyc3QgZGlzaywgd2hvbGUgZGlzaworCQkgIDggPSAvZGV2L3JkL2MxM2QxCVNlY29uZCBkaXNrLCB3aG9sZSBkaXNrCisJCSAgICAuLi4KKwkJMjQ4ID0gL2Rldi9yZC9jMTNkMzEJMzJuZCBkaXNrLCB3aG9sZSBkaXNrCisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCBhcyBmb3IgbWFqb3IgNDguCisKKzE0MiBibG9jawlNeWxleCBEQUM5NjAgUENJIFJBSUQgY29udHJvbGxlcjsgZmlmdGVlbnRoIGNvbnRyb2xsZXIKKwkJICAwID0gL2Rldi9yZC9jMTRkMAlGaXJzdCBkaXNrLCB3aG9sZSBkaXNrCisJCSAgOCA9IC9kZXYvcmQvYzE0ZDEJU2Vjb25kIGRpc2ssIHdob2xlIGRpc2sKKwkJICAgIC4uLgorCQkyNDggPSAvZGV2L3JkL2MxNGQzMQkzMm5kIGRpc2ssIHdob2xlIGRpc2sKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIGFzIGZvciBtYWpvciA0OC4KKworMTQzIGJsb2NrCU15bGV4IERBQzk2MCBQQ0kgUkFJRCBjb250cm9sbGVyOyBzaXh0ZWVudGggY29udHJvbGxlcgorCQkgIDAgPSAvZGV2L3JkL2MxNWQwCUZpcnN0IGRpc2ssIHdob2xlIGRpc2sKKwkJICA4ID0gL2Rldi9yZC9jMTVkMQlTZWNvbmQgZGlzaywgd2hvbGUgZGlzaworCQkgICAgLi4uCisJCTI0OCA9IC9kZXYvcmQvYzE1ZDMxCTMybmQgZGlzaywgd2hvbGUgZGlzaworCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgYXMgZm9yIG1ham9yIDQ4LgorCisxNDQgY2hhcglFbmNhcHN1bGF0ZWQgUFBQCisJCSAgMCA9IC9kZXYvcHBwb3gwCUZpcnN0IFBQUCBvdmVyIEV0aGVybmV0CisJCSAgICAuLi4KKwkJIDYzID0gL2Rldi9wcHBveDYzCTY0dGggUFBQIG92ZXIgRXRoZXJuZXQKKworCQlUaGlzIGlzIHByaW1hcmlseSB1c2VkIGZvciBBRFNMLgorCisJCVRoZSBTU1QgNTEzNi1ETiBEZXZpY2VOZXQgaW50ZXJmYWNlIGRyaXZlciBoYXMgYmVlbgorCQlyZWxvY2F0ZWQgdG8gbWFqb3IgMTgzIGR1ZSB0byBhbiB1bmZvcnR1bmF0ZSBjb25mbGljdC4KKworMTQ0IGJsb2NrCUV4cGFuc2lvbiBBcmVhICMxIGZvciBtb3JlIG5vbi1kZXZpY2UgKGUuZy4gTkZTKSBtb3VudHMKKwkJICAwID0gbW91bnRlZCBkZXZpY2UgMjU2CisJCTI1NSA9IG1vdW50ZWQgZGV2aWNlIDUxMQorCisxNDUgY2hhcglTQU05NDA3LWJhc2VkIHNvdW5kY2FyZAorCQkgIDAgPSAvZGV2L3NhbTBfbWl4ZXIKKwkJICAxID0gL2Rldi9zYW0wX3NlcXVlbmNlcgorCQkgIDIgPSAvZGV2L3NhbTBfbWlkaTAwCisJCSAgMyA9IC9kZXYvc2FtMF9kc3AKKwkJICA0ID0gL2Rldi9zYW0wX2F1ZGlvCisJCSAgNiA9IC9kZXYvc2FtMF9zbmRzdGF0CisJCSAxOCA9IC9kZXYvc2FtMF9taWRpMDEKKwkJIDM0ID0gL2Rldi9zYW0wX21pZGkwMgorCQkgNTAgPSAvZGV2L3NhbTBfbWlkaTAzCisJCSA2NCA9IC9kZXYvc2FtMV9taXhlcgorCQkgICAgLi4uCisJCTEyOCA9IC9kZXYvc2FtMl9taXhlcgorCQkgICAgLi4uCisJCTE5MiA9IC9kZXYvc2FtM19taXhlcgorCQkgICAgLi4uCisKKwkJRGV2aWNlIGZ1bmN0aW9ucyBtYXRjaCBPU1MsIGJ1dCBvZmZlciBhIG51bWJlciBvZgorCQlhZGRvbnMsIHdoaWNoIGFyZSBzYW05NDA3IHNwZWNpZmljLiAgT1NTIGNhbiBiZQorCQlvcGVyYXRlZCBzaW11bHRhbmVvdXNseSwgdGFraW5nIGNhcmUgb2YgdGhlIGNvZGVjLgorCisxNDUgYmxvY2sJRXhwYW5zaW9uIEFyZWEgIzIgZm9yIG1vcmUgbm9uLWRldmljZSAoZS5nLiBORlMpIG1vdW50cworCQkgIDAgPSBtb3VudGVkIGRldmljZSA1MTIKKwkJMjU1ID0gbW91bnRlZCBkZXZpY2UgNzY3CisKKzE0NiBjaGFyCVNZU1RSQU0gU0NSQU1OZXQgbWlycm9yZWQtbWVtb3J5IG5ldHdvcmsKKwkJICAwID0gL2Rldi9zY3JhbW5ldDAJRmlyc3QgU0NSQU1OZXQgZGV2aWNlCisJCSAgMSA9IC9kZXYvc2NyYW1uZXQxCVNlY29uZCBTQ1JBTU5ldCBkZXZpY2UKKwkJICAgIC4uLgorCisxNDYgYmxvY2sJRXhwYW5zaW9uIEFyZWEgIzMgZm9yIG1vcmUgbm9uLWRldmljZSAoZS5nLiBORlMpIG1vdW50cworCQkgIDAgPSBtb3VudGVkIGRldmljZSA3NjgKKwkJMjU1ID0gbW91bnRlZCBkZXZpY2UgMTAyMworCisxNDcgY2hhcglBdXJlYWwgU2VtaWNvbmR1Y3RvciBWb3J0ZXggQXVkaW8gZGV2aWNlCisJCSAgMCA9IC9kZXYvYXVyZWFsMAlGaXJzdCBBdXJlYWwgVm9ydGV4CisJCSAgMSA9IC9kZXYvYXVyZWFsMQlTZWNvbmQgQXVyZWFsIFZvcnRleAorCQkgICAgLi4uCisKKzE0NyBibG9jawlEaXN0cmlidXRlZCBSZXBsaWNhdGVkIEJsb2NrIERldmljZSAoRFJCRCkKKwkJICAwID0gL2Rldi9kcmJkMAlGaXJzdCBEUkJEIGRldmljZQorCQkgIDEgPSAvZGV2L2RyYmQxCVNlY29uZCBEUkJEIGRldmljZQorCQkgICAgLi4uCisKKzE0OCBjaGFyCVRlY2hub2xvZ3kgQ29uY2VwdHMgc2VyaWFsIGNhcmQKKwkJICAwID0gL2Rldi90dHlUMAlGaXJzdCBUQ0wgcG9ydAorCQkgIDEgPSAvZGV2L3R0eVQxCVNlY29uZCBUQ0wgcG9ydAorCQkgICAgLi4uCisKKzE0OSBjaGFyCVRlY2hub2xvZ3kgQ29uY2VwdHMgc2VyaWFsIGNhcmQgLSBhbHRlcm5hdGUgZGV2aWNlcworCQkgIDAgPSAvZGV2L2N1dDAJCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlUMAorCQkgIDEgPSAvZGV2L2N1dDAJCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlUMQorCQkgICAgLi4uCisKKzE1MCBjaGFyCVJlYWwtVGltZSBMaW51eCBGSUZPcworCQkgIDAgPSAvZGV2L3J0ZjAJCUZpcnN0IFJUTGludXggRklGTworCQkgIDEgPSAvZGV2L3J0ZjEJCVNlY29uZCBSVExpbnV4IEZJRk8KKwkJICAgIC4uLgorCisxNTEgY2hhcglEUFQgSTJPIFNtYXJ0UmFpZCBWIGNvbnRyb2xsZXIKKwkJICAwID0gL2Rldi9kcHRpMAlGaXJzdCBEUFQgSTJPIGFkYXB0ZXIKKwkJICAxID0gL2Rldi9kcHRpMQlTZWNvbmQgRFBUIEkyTyBhZGFwdGVyCisJCSAgICAuLi4KKworMTUyIGNoYXIJRXRoZXJEcml2ZSBDb250cm9sIERldmljZQorCQkgIDAgPSAvZGV2L2V0aGVyZC9jdGwJQ29ubmVjdC9EaXNjb25uZWN0IGFuIEV0aGVyRHJpdmUKKwkJICAxID0gL2Rldi9ldGhlcmQvZXJyCU1vbml0b3IgZXJyb3JzCisJCSAgMiA9IC9kZXYvZXRoZXJkL3JhdwlSYXcgQW9FIHBhY2tldCBtb25pdG9yCisKKzE1MiBibG9jawlFdGhlckRyaXZlIEJsb2NrIERldmljZXMKKwkJICAwID0gL2Rldi9ldGhlcmQvMAlFdGhlckRyaXZlIDAKKwkJICAgIC4uLgorCQkyNTUgPSAvZGV2L2V0aGVyZC8yNTUJRXRoZXJEcml2ZSAyNTUKKworMTUzIGNoYXIJU1BJIEJ1cyBJbnRlcmZhY2UgKHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBNaWNyb1dpcmUpCisJCSAgMCA9IC9kZXYvc3BpMAkJRmlyc3QgU1BJIGRldmljZSBvbiB0aGUgYnVzCisJCSAgMSA9IC9kZXYvc3BpMQkJU2Vjb25kIFNQSSBkZXZpY2Ugb24gdGhlIGJ1cworCQkgICAgLi4uCisJCSAxNSA9IC9kZXYvc3BpMTUJU2l4dGVlbnRoIFNQSSBkZXZpY2Ugb24gdGhlIGJ1cworCisxNTMgYmxvY2sJRW5oYW5jZWQgTWV0YWRpc2sgUkFJRCAoRU1EKSBzdG9yYWdlIHVuaXRzCisJCSAgMCA9IC9kZXYvZW1kLzAJRmlyc3QgdW5pdAorCQkgIDEgPSAvZGV2L2VtZC8wcDEJUGFydGl0aW9uIDEgb24gRmlyc3QgdW5pdAorCQkgIDIgPSAvZGV2L2VtZC8wcDIJUGFydGl0aW9uIDIgb24gRmlyc3QgdW5pdAorCQkgICAgLi4uCisJCSAxNSA9IC9kZXYvZW1kLzBwMTUJUGFydGl0aW9uIDE1IG9uIEZpcnN0IHVuaXQKKworCQkgMTYgPSAvZGV2L2VtZC8xCVNlY29uZCB1bml0CisJCSAzMiA9IC9kZXYvZW1kLzIJVGhpcmQgdW5pdAorCQkgICAgLi4uCisJCTI0MCA9IC9kZXYvZW1kLzE1CVNpeHRlZW50aCB1bml0CisKKwkJUGFydGl0aW9ucyBhcmUgaGFuZGxlZCBpbiB0aGUgc2FtZSB3YXkgYXMgZm9yIElERQorCQlkaXNrcyAoc2VlIG1ham9yIG51bWJlciAzKSBleGNlcHQgdGhhdCB0aGUgbGltaXQgb24KKwkJcGFydGl0aW9ucyBpcyAxNS4KKworMTU0IGNoYXIJU3BlY2lhbGl4IFJJTyBzZXJpYWwgY2FyZAorCQkgIDAgPSAvZGV2L3R0eVNSMAlGaXJzdCBSSU8gcG9ydAorCQkgICAgLi4uCisJCTI1NSA9IC9kZXYvdHR5U1IyNTUJMjU2dGggUklPIHBvcnQKKworMTU1IGNoYXIJU3BlY2lhbGl4IFJJTyBzZXJpYWwgY2FyZCAtIGFsdGVybmF0ZSBkZXZpY2VzCisJCSAgMCA9IC9kZXYvY3VzcjAJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eVNSMAorCQkgICAgLi4uCisJCTI1NSA9IC9kZXYvY3VzcjI1NQlDYWxsb3V0IGRldmljZSBmb3IgdHR5U1IyNTUKKworMTU2IGNoYXIJU3BlY2lhbGl4IFJJTyBzZXJpYWwgY2FyZAorCQkgIDAgPSAvZGV2L3R0eVNSMjU2CTI1N3RoIFJJTyBwb3J0CisJCSAgICAuLi4KKwkJMjU1ID0gL2Rldi90dHlTUjUxMQk1MTJ0aCBSSU8gcG9ydAorCisxNTcgY2hhcglTcGVjaWFsaXggUklPIHNlcmlhbCBjYXJkIC0gYWx0ZXJuYXRlIGRldmljZXMKKwkJICAwID0gL2Rldi9jdXNyMjU2CUNhbGxvdXQgZGV2aWNlIGZvciB0dHlTUjI1NgorCQkgICAgLi4uCisJCTI1NSA9IC9kZXYvY3VzcjUxMQlDYWxsb3V0IGRldmljZSBmb3IgdHR5U1I1MTEKKworMTU4IGNoYXIJRGlhbG9naWMgR2FtbWFMaW5rIGZheCBkcml2ZXIKKwkJICAwID0gL2Rldi9nZmF4MAlHYW1tYUxpbmsgY2hhbm5lbCAwCisJCSAgMSA9IC9kZXYvZ2ZheDEJR2FtbWFMaW5rIGNoYW5uZWwgMQorCQkgICAgLi4uCisKKzE1OSBjaGFyCVJFU0VSVkVECisKKzE1OSBibG9jawlSRVNFUlZFRAorCisxNjAgY2hhcglHZW5lcmFsIFB1cnBvc2UgSW5zdHJ1bWVudCBCdXMgKEdQSUIpCisJCSAgMCA9IC9kZXYvZ3BpYjAJRmlyc3QgR1BJQiBidXMKKwkJICAxID0gL2Rldi9ncGliMQlTZWNvbmQgR1BJQiBidXMKKwkJICAgIC4uLgorCisxNjAgYmxvY2sgICAgICAgQ2FybWVsIDgtcG9ydCBTQVRBIERpc2tzIG9uIEZpcnN0IENvbnRyb2xsZXIKKwkJICAwID0gL2Rldi9jYXJtZWwvMCAgICAgU0FUQSBkaXNrIDAgd2hvbGUgZGlzaworCQkgIDEgPSAvZGV2L2Nhcm1lbC8wcDEgICBTQVRBIGRpc2sgMCBwYXJ0aXRpb24gMQorCQkgICAgLi4uCisJCSAzMSA9IC9kZXYvY2FybWVsLzBwMzEgIFNBVEEgZGlzayAwIHBhcnRpdGlvbiAzMQorCisJCSAzMiA9IC9kZXYvY2FybWVsLzEgICAgIFNBVEEgZGlzayAxIHdob2xlIGRpc2sKKwkJIDY0ID0gL2Rldi9jYXJtZWwvMiAgICAgU0FUQSBkaXNrIDIgd2hvbGUgZGlzaworCQkgICAgLi4uCisJCTIyNCA9IC9kZXYvY2FybWVsLzcgICAgIFNBVEEgZGlzayA3IHdob2xlIGRpc2sKKworCQlQYXJ0aXRpb25zIGFyZSBoYW5kbGVkIGluIHRoZSBzYW1lIHdheSBhcyBmb3IgSURFCisJCWRpc2tzIChzZWUgbWFqb3IgbnVtYmVyIDMpIGV4Y2VwdCB0aGF0IHRoZSBsaW1pdCBvbgorCQlwYXJ0aXRpb25zIGlzIDMxLgorCisxNjEgY2hhcglJckNPTU0gZGV2aWNlcyAoSXJEQSBzZXJpYWwvcGFyYWxsZWwgZW11bGF0aW9uKQorCQkgIDAgPSAvZGV2L2lyY29tbTAJRmlyc3QgSXJDT01NIGRldmljZQorCQkgIDEgPSAvZGV2L2lyY29tbTEJU2Vjb25kIElyQ09NTSBkZXZpY2UKKwkJICAgIC4uLgorCQkgMTYgPSAvZGV2L2lybHB0MAlGaXJzdCBJckxQVCBkZXZpY2UKKwkJIDE3ID0gL2Rldi9pcmxwdDEJU2Vjb25kIElyTFBUIGRldmljZQorCQkgICAgLi4uCisKKzE2MSBibG9jayAgICAgICBDYXJtZWwgOC1wb3J0IFNBVEEgRGlza3Mgb24gU2Vjb25kIENvbnRyb2xsZXIKKwkJICAwID0gL2Rldi9jYXJtZWwvOCAgICAgU0FUQSBkaXNrIDggd2hvbGUgZGlzaworCQkgIDEgPSAvZGV2L2Nhcm1lbC84cDEgICBTQVRBIGRpc2sgOCBwYXJ0aXRpb24gMQorCQkgICAgLi4uCisJCSAzMSA9IC9kZXYvY2FybWVsLzhwMzEgIFNBVEEgZGlzayA4IHBhcnRpdGlvbiAzMQorCisJCSAzMiA9IC9kZXYvY2FybWVsLzkgICAgIFNBVEEgZGlzayA5IHdob2xlIGRpc2sKKwkJIDY0ID0gL2Rldi9jYXJtZWwvMTAgICAgU0FUQSBkaXNrIDEwIHdob2xlIGRpc2sKKwkJICAgIC4uLgorCQkyMjQgPSAvZGV2L2Nhcm1lbC8xNSAgICBTQVRBIGRpc2sgMTUgd2hvbGUgZGlzaworCisJCVBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvciBJREUKKwkJZGlza3MgKHNlZSBtYWpvciBudW1iZXIgMykgZXhjZXB0IHRoYXQgdGhlIGxpbWl0IG9uCisJCXBhcnRpdGlvbnMgaXMgMzEuCisKKzE2MiBjaGFyCVJhdyBibG9jayBkZXZpY2UgaW50ZXJmYWNlCisJCSAgMCA9IC9kZXYvcmF3Y3RsCVJhdyBJL08gY29udHJvbCBkZXZpY2UKKwkJICAxID0gL2Rldi9yYXcvcmF3MQlGaXJzdCByYXcgSS9PIGRldmljZQorCQkgIDIgPSAvZGV2L3Jhdy9yYXcyCVNlY29uZCByYXcgSS9PIGRldmljZQorCQkgICAgLi4uCisgICAgICAgICAgICAgICAgIG1heCBtaW5vciBudW1iZXIgb2YgcmF3IGRldmljZSBpcyBzZXQgYnkga2VybmVsIGNvbmZpZworICAgICAgICAgICAgICAgICBNQVhfUkFXX0RFVlMgb3IgcmF3IG1vZHVsZSBwYXJhbWV0ZXIgJ21heF9yYXdfZGV2cycKKworMTYzIGNoYXIKKworMTY0IGNoYXIJQ2hhc2UgUmVzZWFyY2ggQVQvUENJLUZhc3Qgc2VyaWFsIGNhcmQKKwkJICAwID0gL2Rldi90dHlDSDAJQVQvUENJLUZhc3QgYm9hcmQgMCwgcG9ydCAwCisJCSAgICAuLi4KKwkJIDE1ID0gL2Rldi90dHlDSDE1CUFUL1BDSS1GYXN0IGJvYXJkIDAsIHBvcnQgMTUKKwkJIDE2ID0gL2Rldi90dHlDSDE2CUFUL1BDSS1GYXN0IGJvYXJkIDEsIHBvcnQgMAorCQkgICAgLi4uCisJCSAzMSA9IC9kZXYvdHR5Q0gzMQlBVC9QQ0ktRmFzdCBib2FyZCAxLCBwb3J0IDE1CisJCSAzMiA9IC9kZXYvdHR5Q0gzMglBVC9QQ0ktRmFzdCBib2FyZCAyLCBwb3J0IDAKKwkJICAgIC4uLgorCQkgNDcgPSAvZGV2L3R0eUNINDcJQVQvUENJLUZhc3QgYm9hcmQgMiwgcG9ydCAxNQorCQkgNDggPSAvZGV2L3R0eUNINDgJQVQvUENJLUZhc3QgYm9hcmQgMywgcG9ydCAwCisJCSAgICAuLi4KKwkJIDYzID0gL2Rldi90dHlDSDYzCUFUL1BDSS1GYXN0IGJvYXJkIDMsIHBvcnQgMTUKKworMTY1IGNoYXIJQ2hhc2UgUmVzZWFyY2ggQVQvUENJLUZhc3Qgc2VyaWFsIGNhcmQgLSBhbHRlcm5hdGUgZGV2aWNlcworCQkgIDAgPSAvZGV2L2N1Y2gwCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlDSDAKKwkJICAgIC4uLgorCQkgNjMgPSAvZGV2L2N1Y2g2MwlDYWxsb3V0IGRldmljZSBmb3IgdHR5Q0g2MworCisxNjYgY2hhcglBQ00gVVNCIG1vZGVtcworCQkgIDAgPSAvZGV2L3R0eUFDTTAJRmlyc3QgQUNNIG1vZGVtCisJCSAgMSA9IC9kZXYvdHR5QUNNMQlTZWNvbmQgQUNNIG1vZGVtCisJCSAgICAuLi4KKworMTY3IGNoYXIJQUNNIFVTQiBtb2RlbXMgLSBhbHRlcm5hdGUgZGV2aWNlcworCQkgIDAgPSAvZGV2L2N1YWNtMAlDYWxsb3V0IGRldmljZSBmb3IgdHR5QUNNMAorCQkgIDEgPSAvZGV2L2N1YWNtMQlDYWxsb3V0IGRldmljZSBmb3IgdHR5QUNNMQorCQkgICAgLi4uCisKKzE2OCBjaGFyCUVyYWNvbSBDU0E3MDAwIFBDSSBlbmNyeXB0aW9uIGFkYXB0b3IKKwkJICAwID0gL2Rldi9lY3NhMAlGaXJzdCBDU0E3MDAwCisJCSAgMSA9IC9kZXYvZWNzYTEJU2Vjb25kIENTQTcwMDAKKwkJICAgIC4uLgorCisxNjkgY2hhcglFcmFjb20gQ1NBODAwMCBQQ0kgZW5jcnlwdGlvbiBhZGFwdG9yCisJCSAgMCA9IC9kZXYvZWNzYTgtMAlGaXJzdCBDU0E4MDAwCisJCSAgMSA9IC9kZXYvZWNzYTgtMQlTZWNvbmQgQ1NBODAwMAorCQkgICAgLi4uCisKKzE3MCBjaGFyCUFNSSBNZWdhUkFDIHJlbW90ZSBhY2Nlc3MgY29udHJvbGxlcgorCQkgIDAgPSAvZGV2L21lZ2FyYWMwCUZpcnN0IE1lZ2FSQUMgY2FyZAorCQkgIDEgPSAvZGV2L21lZ2FyYWMxCVNlY29uZCBNZWdhUkFDIGNhcmQKKwkJICAgIC4uLgorCisxNzEgY2hhcglSZXNlcnZlZCBmb3IgSUVFRSAxMzk0IChGaXJld2lyZSkKKworMTcyIGNoYXIJTW94YSBJbnRlbGxpbyBzZXJpYWwgY2FyZAorCQkgIDAgPSAvZGV2L3R0eU1YMAlGaXJzdCBNb3hhIHBvcnQKKwkJICAxID0gL2Rldi90dHlNWDEJU2Vjb25kIE1veGEgcG9ydAorCQkgICAgLi4uCisJCTEyNyA9IC9kZXYvdHR5TVgxMjcJMTI4dGggTW94YSBwb3J0CisJCTEyOCA9IC9kZXYvbW94YWN0bAlNb3hhIGNvbnRyb2wgcG9ydAorCisxNzMgY2hhcglNb3hhIEludGVsbGlvIHNlcmlhbCBjYXJkIC0gYWx0ZXJuYXRlIGRldmljZXMKKwkJICAwID0gL2Rldi9jdW14MAlDYWxsb3V0IGRldmljZSBmb3IgdHR5TVgwCisJCSAgMSA9IC9kZXYvY3VteDEJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eU1YMQorCQkgICAgLi4uCisJCTEyNyA9IC9kZXYvY3VteDEyNwlDYWxsb3V0IGRldmljZSBmb3IgdHR5TVgxMjcKKworMTc0IGNoYXIJU21hcnRJTyBzZXJpYWwgY2FyZAorCQkgIDAgPSAvZGV2L3R0eVNJMAlGaXJzdCBTbWFydElPIHBvcnQKKwkJICAxID0gL2Rldi90dHlTSTEJU2Vjb25kIFNtYXJ0SU8gcG9ydAorCQkgICAgLi4uCisKKzE3NSBjaGFyCVNtYXJ0SU8gc2VyaWFsIGNhcmQgLSBhbHRlcm5hdGUgZGV2aWNlcworCQkgIDAgPSAvZGV2L2N1c2kwCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlTSTAKKwkJICAxID0gL2Rldi9jdXNpMQlDYWxsb3V0IGRldmljZSBmb3IgdHR5U0kxCisJCSAgICAuLi4KKworMTc2IGNoYXIJbkNpcGhlciBuRmFzdCBQQ0kgY3J5cHRvIGFjY2VsZXJhdG9yCisJCSAgMCA9IC9kZXYvbmZhc3RwY2kwCUZpcnN0IG5GYXN0IFBDSSBkZXZpY2UKKwkJICAxID0gL2Rldi9uZmFzdHBjaTEJRmlyc3QgbkZhc3QgUENJIGRldmljZQorCQkgICAgLi4uCisKKzE3NyBjaGFyCVRJIFBDSUx5bnggbWVtb3J5IHNwYWNlcworCQkgIDAgPSAvZGV2L3BjaWx5bngvYXV4MAkgQVVYIHNwYWNlIG9mIGZpcnN0IFBDSUx5bnggY2FyZAorCQkgICAgLi4uCisJCSAxNSA9IC9kZXYvcGNpbHlueC9hdXgxNSBBVVggc3BhY2Ugb2YgMTZ0aCBQQ0lMeW54IGNhcmQKKwkJIDE2ID0gL2Rldi9wY2lseW54L3JvbTAJIFJPTSBzcGFjZSBvZiBmaXJzdCBQQ0lMeW54IGNhcmQKKwkJICAgIC4uLgorCQkgMzEgPSAvZGV2L3BjaWx5bngvcm9tMTUgUk9NIHNwYWNlIG9mIDE2dGggUENJTHlueCBjYXJkCisJCSAzMiA9IC9kZXYvcGNpbHlueC9yYW0wCSBSQU0gc3BhY2Ugb2YgZmlyc3QgUENJTHlueCBjYXJkCisJCSAgICAuLi4KKwkJIDQ3ID0gL2Rldi9wY2lseW54L3JhbTE1IFJBTSBzcGFjZSBvZiAxNnRoIFBDSUx5bnggY2FyZAorCisxNzggY2hhcglHaWdhbmV0IGNMQU4xeHh4IHZpcnR1YWwgaW50ZXJmYWNlIGFkYXB0ZXIKKwkJICAwID0gL2Rldi9jbGFudmkwCUZpcnN0IGNMQU4gYWRhcHRlcgorCQkgIDEgPSAvZGV2L2NsYW52aTEJU2Vjb25kIGNMQU4gYWRhcHRlcgorCQkgICAgLi4uCisKKzE3OSBibG9jayAgICAgICBNTUMgYmxvY2sgZGV2aWNlcworCQkgIDAgPSAvZGV2L21tY2JsazAgICAgICBGaXJzdCBTRC9NTUMgY2FyZAorCQkgIDEgPSAvZGV2L21tY2JsazBwMSAgICBGaXJzdCBwYXJ0aXRpb24gb24gZmlyc3QgTU1DIGNhcmQKKwkJICA4ID0gL2Rldi9tbWNibGsxICAgICAgU2Vjb25kIFNEL01NQyBjYXJkCisJCSAgICAuLi4KKworCQlUaGUgc3RhcnQgb2YgbmV4dCBTRC9NTUMgY2FyZCBjYW4gYmUgY29uZmlndXJlZCB3aXRoCisJCUNPTkZJR19NTUNfQkxPQ0tfTUlOT1JTLCBvciBvdmVycmlkZGVuIGF0IGJvb3QvbW9kcHJvYmUKKwkJdGltZSB1c2luZyB0aGUgbW1jYmxrLnBlcmRldl9taW5vcnMgb3B0aW9uLiBUaGF0IHdvdWxkCisJCWJ1bXAgdGhlIG9mZnNldCBiZXR3ZWVuIGVhY2ggY2FyZCB0byBiZSB0aGUgY29uZmlndXJlZAorCQl2YWx1ZSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IDguCisKKzE3OSBjaGFyCUNDdWJlIERWWENoaXAtYmFzZWQgUENJIHByb2R1Y3RzCisJCSAgMCA9IC9kZXYvZHZ4aXJxMAlGaXJzdCBEVlggZGV2aWNlCisJCSAgMSA9IC9kZXYvZHZ4aXJxMQlTZWNvbmQgRFZYIGRldmljZQorCQkgICAgLi4uCisKKzE4MCBjaGFyCVVTQiBkZXZpY2VzCisJCSAgMCA9IC9kZXYvdXNiL2xwMAlGaXJzdCBVU0IgcHJpbnRlcgorCQkgICAgLi4uCisJCSAxNSA9IC9kZXYvdXNiL2xwMTUJMTZ0aCBVU0IgcHJpbnRlcgorCQkgNDggPSAvZGV2L3VzYi9zY2FubmVyMAlGaXJzdCBVU0Igc2Nhbm5lcgorCQkgICAgLi4uCisJCSA2MyA9IC9kZXYvdXNiL3NjYW5uZXIxNSAxNnRoIFVTQiBzY2FubmVyCisJCSA2NCA9IC9kZXYvdXNiL3JpbzUwMAlEaWFtb25kIFJpbyA1MDAKKwkJIDY1ID0gL2Rldi91c2IvdXNibGNkCVVTQkxDRCBJbnRlcmZhY2UgKGluZm9AdXNibGNkLmRlKQorCQkgNjYgPSAvZGV2L3VzYi9jcGFkMAlTeW5hcHRpY3MgY1BhZCAobW91c2UvTENEKQorCQkgOTYgPSAvZGV2L3VzYi9oaWRkZXYwCTFzdCBVU0IgSElEIGRldmljZQorCQkgICAgLi4uCisJCTExMSA9IC9kZXYvdXNiL2hpZGRldjE1CTE2dGggVVNCIEhJRCBkZXZpY2UKKwkJMTEyID0gL2Rldi91c2IvYXVlcjAJMXN0IGF1ZXJzd2FsZCBJU0ROIGRldmljZQorCQkgICAgLi4uCisJCTEyNyA9IC9kZXYvdXNiL2F1ZXIxNQkxNnRoIGF1ZXJzd2FsZCBJU0ROIGRldmljZQorCQkxMjggPSAvZGV2L3VzYi9icmx2Z3IwCUZpcnN0IEJyYWlsbGUgVm95YWdlciBkZXZpY2UKKwkJICAgIC4uLgorCQkxMzEgPSAvZGV2L3VzYi9icmx2Z3IzCUZvdXJ0aCBCcmFpbGxlIFZveWFnZXIgZGV2aWNlCisJCTEzMiA9IC9kZXYvdXNiL2lkbW91c2UJSUQgTW91c2UgKGZpbmdlcnByaW50IHNjYW5uZXIpIGRldmljZQorCQkxMzMgPSAvZGV2L3VzYi9zaXN1c2J2Z2ExCUZpcnN0IFNpU1VTQiBWR0EgZGV2aWNlCisJCSAgICAuLi4KKwkJMTQwID0gL2Rldi91c2Ivc2lzdXNidmdhOAlFaWdodGggU0lTVVNCIFZHQSBkZXZpY2UKKwkJMTQ0ID0gL2Rldi91c2IvbGNkCVVTQiBMQ0QgZGV2aWNlCisJCTE2MCA9IC9kZXYvdXNiL2xlZ291c2J0b3dlcjAJMXN0IFVTQiBMZWdvdG93ZXIgZGV2aWNlCisJCSAgICAuLi4KKwkJMTc1ID0gL2Rldi91c2IvbGVnb3VzYnRvd2VyMTUJMTZ0aCBVU0IgTGVnb3Rvd2VyIGRldmljZQorCQkxNzYgPSAvZGV2L3VzYi91c2J0bWMxCUZpcnN0IFVTQiBUTUMgZGV2aWNlCisJCSAgIC4uLgorCQkxOTEgPSAvZGV2L3VzYi91c2J0bWMxNgkxNnRoIFVTQiBUTUMgZGV2aWNlCisJCTE5MiA9IC9kZXYvdXNiL3l1cmV4MQlGaXJzdCBVU0IgWXVyZXggZGV2aWNlCisJCSAgIC4uLgorCQkyMDkgPSAvZGV2L3VzYi95dXJleDE2CTE2dGggVVNCIFl1cmV4IGRldmljZQorCisxODAgYmxvY2sJVVNCIGJsb2NrIGRldmljZXMKKwkJICAwID0gL2Rldi91YmEJCUZpcnN0IFVTQiBibG9jayBkZXZpY2UKKwkJICA4ID0gL2Rldi91YmIJCVNlY29uZCBVU0IgYmxvY2sgZGV2aWNlCisJCSAxNiA9IC9kZXYvdWJjCQlUaGlyZCBVU0IgYmxvY2sgZGV2aWNlCisgCQkgICAgLi4uCisKKzE4MSBjaGFyCUNvbnJhZCBFbGVjdHJvbmljIHBhcmFsbGVsIHBvcnQgcmFkaW8gY2xvY2tzCisJCSAgMCA9IC9kZXYvcGNmY2xvY2swCUZpcnN0IENvbnJhZCByYWRpbyBjbG9jaworCQkgIDEgPSAvZGV2L3BjZmNsb2NrMQlTZWNvbmQgQ29ucmFkIHJhZGlvIGNsb2NrCisJCSAgICAuLi4KKworMTgyIGNoYXIJUGljdHVyZSBFbGVtZW50cyBUSFIyIGJpbmFyaXplcgorCQkgIDAgPSAvZGV2L3BldGhyMAlGaXJzdCBUSFIyIGJvYXJkCisJCSAgMSA9IC9kZXYvcGV0aHIxCVNlY29uZCBUSFIyIGJvYXJkCisJCSAgICAuLi4KKworMTgzIGNoYXIJU1NUIDUxMzYtRE4gRGV2aWNlTmV0IGludGVyZmFjZQorCQkgIDAgPSAvZGV2L3NzNTEzNmRuMAlGaXJzdCBEZXZpY2VOZXQgaW50ZXJmYWNlCisJCSAgMSA9IC9kZXYvc3M1MTM2ZG4xCVNlY29uZCBEZXZpY2VOZXQgaW50ZXJmYWNlCisJCSAgICAuLi4KKworCQlUaGlzIGRldmljZSB1c2VkIHRvIGJlIGFzc2lnbmVkIHRvIG1ham9yIG51bWJlciAxNDQuCisJCUl0IGhhZCB0byBiZSBtb3ZlZCBkdWUgdG8gYW4gdW5mb3J0dW5hdGUgY29uZmxpY3QuCisKKzE4NCBjaGFyCVBpY3R1cmUgRWxlbWVudHMnIHZpZGVvIHNpbXVsYXRvci9zZW5kZXIKKwkJICAwID0gL2Rldi9wZXZzczAJRmlyc3Qgc2VuZGVyIGJvYXJkCisJCSAgMSA9IC9kZXYvcGV2c3MxCVNlY29uZCBzZW5kZXIgYm9hcmQKKwkJICAgIC4uLgorCisxODUgY2hhcglJbnRlck1lenpvIGhpZ2ggYXZhaWxhYmlsaXR5IGZpbGUgc3lzdGVtCisJCSAgMCA9IC9kZXYvaW50ZXJtZXp6bzAJRmlyc3QgY2FjaGUgbWFuYWdlcgorCQkgIDEgPSAvZGV2L2ludGVybWV6em8xCVNlY29uZCBjYWNoZSBtYW5hZ2VyCisJCSAgICAuLi4KKworCQlTZWUgaHR0cDovL3dlYi5hcmNoaXZlLm9yZy93ZWIvMjAwODAxMTUxOTUyNDEvCisJCWh0dHA6Ly9pbnRlci1tZXp6by5vcmcvaW5kZXguaHRtbAorCisxODYgY2hhcglPYmplY3QtYmFzZWQgc3RvcmFnZSBjb250cm9sIGRldmljZQorCQkgIDAgPSAvZGV2L29iZDAJCUZpcnN0IG9iZCBjb250cm9sIGRldmljZQorCQkgIDEgPSAvZGV2L29iZDEJCVNlY29uZCBvYmQgY29udHJvbCBkZXZpY2UKKwkJICAgIC4uLgorCisJCVNlZSBmdHA6Ly9mdHAubHVzdHJlLm9yZy9wdWIvb2JkIGZvciBjb2RlIGFuZCBpbmZvcm1hdGlvbi4KKworMTg3IGNoYXIJREVTa2V5IGhhcmR3YXJlIGVuY3J5cHRpb24gZGV2aWNlCisJCSAgMCA9IC9kZXYvZGVza2V5MAlGaXJzdCBERVMga2V5CisJCSAgMSA9IC9kZXYvZGVza2V5MQlTZWNvbmQgREVTIGtleQorCQkgICAgLi4uCisKKzE4OCBjaGFyCVVTQiBzZXJpYWwgY29udmVydGVycworCQkgIDAgPSAvZGV2L3R0eVVTQjAJRmlyc3QgVVNCIHNlcmlhbCBjb252ZXJ0ZXIKKwkJICAxID0gL2Rldi90dHlVU0IxCVNlY29uZCBVU0Igc2VyaWFsIGNvbnZlcnRlcgorCQkgICAgLi4uCisKKzE4OSBjaGFyCVVTQiBzZXJpYWwgY29udmVydGVycyAtIGFsdGVybmF0ZSBkZXZpY2VzCisJCSAgMCA9IC9kZXYvY3V1c2IwCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlVU0IwCisJCSAgMSA9IC9kZXYvY3V1c2IxCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlVU0IxCisJCSAgICAuLi4KKworMTkwIGNoYXIJS2Fuc2FzIENpdHkgdHJhY2tlci90dW5lciBjYXJkCisJCSAgMCA9IC9kZXYva2N0dDAJRmlyc3QgS0NUL1QgY2FyZAorCQkgIDEgPSAvZGV2L2tjdHQxCVNlY29uZCBLQ1QvVCBjYXJkCisJCSAgICAuLi4KKworMTkxIGNoYXIJUmVzZXJ2ZWQgZm9yIFBDTUNJQQorCisxOTIgY2hhcglLZXJuZWwgcHJvZmlsaW5nIGludGVyZmFjZQorCQkgIDAgPSAvZGV2L3Byb2ZpbGUJUHJvZmlsaW5nIGNvbnRyb2wgZGV2aWNlCisJCSAgMSA9IC9kZXYvcHJvZmlsZTAJUHJvZmlsaW5nIGRldmljZSBmb3IgQ1BVIDAKKwkJICAyID0gL2Rldi9wcm9maWxlMQlQcm9maWxpbmcgZGV2aWNlIGZvciBDUFUgMQorCQkgICAgLi4uCisKKzE5MyBjaGFyCUtlcm5lbCBldmVudC10cmFjaW5nIGludGVyZmFjZQorCQkgIDAgPSAvZGV2L3RyYWNlCVRyYWNpbmcgY29udHJvbCBkZXZpY2UKKwkJICAxID0gL2Rldi90cmFjZTAJVHJhY2luZyBkZXZpY2UgZm9yIENQVSAwCisJCSAgMiA9IC9kZXYvdHJhY2UxCVRyYWNpbmcgZGV2aWNlIGZvciBDUFUgMQorCQkgICAgLi4uCisKKzE5NCBjaGFyCWxpblZpZGVvU3RyZWFtcyAoTElOVlMpCisJCSAgMCA9IC9kZXYvbXZpZGVvL3N0YXR1czAJVmlkZW8gY29tcHJlc3Npb24gc3RhdHVzCisJCSAgMSA9IC9kZXYvbXZpZGVvL3N0cmVhbTAJVmlkZW8gc3RyZWFtCisJCSAgMiA9IC9kZXYvbXZpZGVvL2ZyYW1lMAlTaW5nbGUgY29tcHJlc3NlZCBmcmFtZQorCQkgIDMgPSAvZGV2L212aWRlby9yYXdmcmFtZTAJUmF3IHVuY29tcHJlc3NlZCBmcmFtZQorCQkgIDQgPSAvZGV2L212aWRlby9jb2RlYzAJRGlyZWN0IGNvZGVjIGFjY2VzcworCQkgIDUgPSAvZGV2L212aWRlby92aWRlbzRsaW51eDAJVmlkZW80TGludXggY29tcGF0aWJpbGl0eQorCisJCSAxNiA9IC9kZXYvbXZpZGVvL3N0YXR1czEJU2Vjb25kIGRldmljZQorCQkgICAgLi4uCisJCSAzMiA9IC9kZXYvbXZpZGVvL3N0YXR1czIJVGhpcmQgZGV2aWNlCisJCSAgICAuLi4KKwkJICAgIC4uLgorCQkyNDAgPSAvZGV2L212aWRlby9zdGF0dXMxNQkxNnRoIGRldmljZQorCQkgICAgLi4uCisKKzE5NSBjaGFyCU52aWRpYSBncmFwaGljcyBkZXZpY2VzCisJCSAgMCA9IC9kZXYvbnZpZGlhMAkJRmlyc3QgTnZpZGlhIGNhcmQKKwkJICAxID0gL2Rldi9udmlkaWExCQlTZWNvbmQgTnZpZGlhIGNhcmQKKwkJICAgIC4uLgorCQkyNTUgPSAvZGV2L252aWRpYWN0bAkJTnZpZGlhIGNhcmQgY29udHJvbCBkZXZpY2UKKworMTk2IGNoYXIJVG9ybWVudGEgVDEgY2FyZAorCQkgIDAgPSAvZGV2L3Rvci8wCQlNYXN0ZXIgY29udHJvbCBjaGFubmVsIGZvciBhbGwgY2FyZHMKKwkJICAxID0gL2Rldi90b3IvMQkJRmlyc3QgRFMwCisJCSAgMiA9IC9kZXYvdG9yLzIJCVNlY29uZCBEUzAKKwkJICAgIC4uLgorCQkgNDggPSAvZGV2L3Rvci80OAkJNDh0aCBEUzAKKwkJIDQ5ID0gL2Rldi90b3IvNDkJCUZpcnN0IHBzZXVkby1jaGFubmVsCisJCSA1MCA9IC9kZXYvdG9yLzUwCQlTZWNvbmQgcHNldWRvLWNoYW5uZWwKKwkJICAgIC4uLgorCisxOTcgY2hhcglPcGVuVE5GIHRyYWNpbmcgZmFjaWxpdHkKKwkJICAwID0gL2Rldi90bmYvdDAJCVRyYWNlIDAgZGF0YSBleHRyYWN0aW9uCisJCSAgMSA9IC9kZXYvdG5mL3QxCQlUcmFjZSAxIGRhdGEgZXh0cmFjdGlvbgorCQkgICAgLi4uCisJCTEyOCA9IC9kZXYvdG5mL3N0YXR1cwkJVHJhY2luZyBmYWNpbGl0eSBzdGF0dXMKKwkJMTMwID0gL2Rldi90bmYvdHJhY2UJCVRyYWNpbmcgZGV2aWNlCisKKzE5OCBjaGFyCVRvdGFsIEltcGFjdCBUUE1QMiBxdWFkIGNvcHJvY2Vzc29yIFBDSSBjYXJkCisJCSAgMCA9IC9kZXYvdHBtcDIvMAkJRmlyc3QgY2FyZAorCQkgIDEgPSAvZGV2L3RwbXAyLzEJCVNlY29uZCBjYXJkCisJCSAgICAuLi4KKworMTk5IGNoYXIJVmVyaXRhcyB2b2x1bWUgbWFuYWdlciAoVnhWTSkgdm9sdW1lcworCQkgIDAgPSAvZGV2L3Z4L3Jkc2svKi8qCQlGaXJzdCB2b2x1bWUKKwkJICAxID0gL2Rldi92eC9yZHNrLyovKgkJU2Vjb25kIHZvbHVtZQorCQkgICAgLi4uCisKKzE5OSBibG9jawlWZXJpdGFzIHZvbHVtZSBtYW5hZ2VyIChWeFZNKSB2b2x1bWVzCisJCSAgMCA9IC9kZXYvdngvZHNrLyovKgkJRmlyc3Qgdm9sdW1lCisJCSAgMSA9IC9kZXYvdngvZHNrLyovKgkJU2Vjb25kIHZvbHVtZQorCQkgICAgLi4uCisKKwkJVGhlIG5hbWVzcGFjZSBpbiB0aGVzZSBkaXJlY3RvcmllcyBpcyBtYWludGFpbmVkIGJ5CisJCXRoZSB1c2VyIHNwYWNlIFZ4Vk0gc29mdHdhcmUuCisKKzIwMCBjaGFyCVZlcml0YXMgVnhWTSBjb25maWd1cmF0aW9uIGludGVyZmFjZQorICAgICAgICAgICAgICAgICAgMCA9IC9kZXYvdngvY29uZmlnCQlDb25maWd1cmF0aW9uIGFjY2VzcyBub2RlCisgICAgICAgICAgICAgICAgICAxID0gL2Rldi92eC90cmFjZQkJVm9sdW1lIGkvbyB0cmFjZSBhY2Nlc3Mgbm9kZQorICAgICAgICAgICAgICAgICAgMiA9IC9kZXYvdngvaW9kCQlWb2x1bWUgaS9vIGRhZW1vbiBhY2Nlc3Mgbm9kZQorICAgICAgICAgICAgICAgICAgMyA9IC9kZXYvdngvaW5mbwkJVm9sdW1lIGluZm9ybWF0aW9uIGFjY2VzcyBub2RlCisgICAgICAgICAgICAgICAgICA0ID0gL2Rldi92eC90YXNrCQlWb2x1bWUgdGFza3MgYWNjZXNzIG5vZGUKKyAgICAgICAgICAgICAgICAgIDUgPSAvZGV2L3Z4L3Rhc2ttb24JCVZvbHVtZSB0YXNrcyBtb25pdG9yIGRhZW1vbgorCisyMDEgY2hhcglWZXJpdGFzIFZ4Vk0gZHluYW1pYyBtdWx0aXBhdGhpbmcgZHJpdmVyCisJCSAgMCA9IC9kZXYvdngvcmRtcC8qCQlGaXJzdCBtdWx0aXBhdGggZGV2aWNlCisJCSAgMSA9IC9kZXYvdngvcmRtcC8qCQlTZWNvbmQgbXVsdGlwYXRoIGRldmljZQorCQkgICAgLi4uCisyMDEgYmxvY2sJVmVyaXRhcyBWeFZNIGR5bmFtaWMgbXVsdGlwYXRoaW5nIGRyaXZlcgorCQkgIDAgPSAvZGV2L3Z4L2RtcC8qCQlGaXJzdCBtdWx0aXBhdGggZGV2aWNlCisJCSAgMSA9IC9kZXYvdngvZG1wLyoJCVNlY29uZCBtdWx0aXBhdGggZGV2aWNlCisJCSAgICAuLi4KKworCQlUaGUgbmFtZXNwYWNlIGluIHRoZXNlIGRpcmVjdG9yaWVzIGlzIG1haW50YWluZWQgYnkKKwkJdGhlIHVzZXIgc3BhY2UgVnhWTSBzb2Z0d2FyZS4KKworMjAyIGNoYXIJQ1BVIG1vZGVsLXNwZWNpZmljIHJlZ2lzdGVycworCQkgIDAgPSAvZGV2L2NwdS8wL21zcgkJTVNScyBvbiBDUFUgMAorCQkgIDEgPSAvZGV2L2NwdS8xL21zcgkJTVNScyBvbiBDUFUgMQorCQkgICAgLi4uCisKKzIwMiBibG9jawlYZW4gVmlydHVhbCBCbG9jayBEZXZpY2UKKwkJICAwID0gL2Rldi94dmRhICAgICAgIEZpcnN0IFhlbiBWQkQgd2hvbGUgZGlzaworCQkgIDE2ID0gL2Rldi94dmRiICAgICAgU2Vjb25kIFhlbiBWQkQgd2hvbGUgZGlzaworCQkgIDMyID0gL2Rldi94dmRjICAgICAgVGhpcmQgWGVuIFZCRCB3aG9sZSBkaXNrCisJCSAgICAuLi4KKwkJICAyNDAgPSAvZGV2L3h2ZHAgICAgIFNpeHRlZW50aCBYZW4gVkJEIHdob2xlIGRpc2sKKworICAgICAgICAgICAgICAgIFBhcnRpdGlvbnMgYXJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvciBJREUKKyAgICAgICAgICAgICAgICBkaXNrcyAoc2VlIG1ham9yIG51bWJlciAzKSBleGNlcHQgdGhhdCB0aGUgbGltaXQgb24KKyAgICAgICAgICAgICAgICBwYXJ0aXRpb25zIGlzIDE1LgorCisyMDMgY2hhcglDUFUgQ1BVSUQgaW5mb3JtYXRpb24KKwkJICAwID0gL2Rldi9jcHUvMC9jcHVpZAkJQ1BVSUQgb24gQ1BVIDAKKwkJICAxID0gL2Rldi9jcHUvMS9jcHVpZAkJQ1BVSUQgb24gQ1BVIDEKKwkJICAgIC4uLgorCisyMDQgY2hhcglMb3ctZGVuc2l0eSBzZXJpYWwgcG9ydHMKKwkJICAwID0gL2Rldi90dHlMVTAJCUxpbmtVcCBTeXN0ZW1zIEw3Mnh4IFVBUlQgLSBwb3J0IDAKKwkJICAxID0gL2Rldi90dHlMVTEJCUxpbmtVcCBTeXN0ZW1zIEw3Mnh4IFVBUlQgLSBwb3J0IDEKKwkJICAyID0gL2Rldi90dHlMVTIJCUxpbmtVcCBTeXN0ZW1zIEw3Mnh4IFVBUlQgLSBwb3J0IDIKKwkJICAzID0gL2Rldi90dHlMVTMJCUxpbmtVcCBTeXN0ZW1zIEw3Mnh4IFVBUlQgLSBwb3J0IDMKKwkJICA0ID0gL2Rldi90dHlGQjAJCUludGVsIEZvb3RicmlkZ2UgKEFSTSkKKwkJICA1ID0gL2Rldi90dHlTQTAJCVN0cm9uZ0FSTSBidWlsdGluIHNlcmlhbCBwb3J0IDAKKwkJICA2ID0gL2Rldi90dHlTQTEJCVN0cm9uZ0FSTSBidWlsdGluIHNlcmlhbCBwb3J0IDEKKwkJICA3ID0gL2Rldi90dHlTQTIJCVN0cm9uZ0FSTSBidWlsdGluIHNlcmlhbCBwb3J0IDIKKwkJICA4ID0gL2Rldi90dHlTQzAJCVNDSSBzZXJpYWwgcG9ydCAoU3VwZXJIKSAtIHBvcnQgMAorCQkgIDkgPSAvZGV2L3R0eVNDMQkJU0NJIHNlcmlhbCBwb3J0IChTdXBlckgpIC0gcG9ydCAxCisJCSAxMCA9IC9kZXYvdHR5U0MyCQlTQ0kgc2VyaWFsIHBvcnQgKFN1cGVySCkgLSBwb3J0IDIKKwkJIDExID0gL2Rldi90dHlTQzMJCVNDSSBzZXJpYWwgcG9ydCAoU3VwZXJIKSAtIHBvcnQgMworCQkgMTIgPSAvZGV2L3R0eUZXMAkJRmlybXdhcmUgY29uc29sZSAtIHBvcnQgMAorCQkgMTMgPSAvZGV2L3R0eUZXMQkJRmlybXdhcmUgY29uc29sZSAtIHBvcnQgMQorCQkgMTQgPSAvZGV2L3R0eUZXMgkJRmlybXdhcmUgY29uc29sZSAtIHBvcnQgMgorCQkgMTUgPSAvZGV2L3R0eUZXMwkJRmlybXdhcmUgY29uc29sZSAtIHBvcnQgMworCQkgMTYgPSAvZGV2L3R0eUFNMAkJQVJNICJBTUJBIiBzZXJpYWwgcG9ydCAwCisJCSAgICAuLi4KKwkJIDMxID0gL2Rldi90dHlBTTE1CQlBUk0gIkFNQkEiIHNlcmlhbCBwb3J0IDE1CisJCSAzMiA9IC9kZXYvdHR5REIwCQlEYXRhQm9vc3RlciBzZXJpYWwgcG9ydCAwCisJCSAgICAuLi4KKwkJIDM5ID0gL2Rldi90dHlEQjcJCURhdGFCb29zdGVyIHNlcmlhbCBwb3J0IDcKKwkJIDQwID0gL2Rldi90dHlTRzAJCVNHSSBBbHRpeCBjb25zb2xlIHBvcnQKKwkJIDQxID0gL2Rldi90dHlTTVgwCQlNb3Rvcm9sYSBpLk1YIC0gcG9ydCAwCisJCSA0MiA9IC9kZXYvdHR5U01YMQkJTW90b3JvbGEgaS5NWCAtIHBvcnQgMQorCQkgNDMgPSAvZGV2L3R0eVNNWDIJCU1vdG9yb2xhIGkuTVggLSBwb3J0IDIKKwkJIDQ0ID0gL2Rldi90dHlNTTAJCU1hcnZlbGwgTVBTQyAtIHBvcnQgMAorCQkgNDUgPSAvZGV2L3R0eU1NMQkJTWFydmVsbCBNUFNDIC0gcG9ydCAxCisJCSA0NiA9IC9kZXYvdHR5Q1BNMAkJUFBDIENQTSAoU0NDIG9yIFNNQykgLSBwb3J0IDAKKwkJICAgIC4uLgorCQkgNDcgPSAvZGV2L3R0eUNQTTUJCVBQQyBDUE0gKFNDQyBvciBTTUMpIC0gcG9ydCA1CisJCSA1MCA9IC9kZXYvdHR5SU9DMAkJQWx0aXggc2VyaWFsIGNhcmQKKwkJICAgIC4uLgorCQkgODEgPSAvZGV2L3R0eUlPQzMxCQlBbHRpeCBzZXJpYWwgY2FyZAorCQkgODIgPSAvZGV2L3R0eVZSMAkJTkVDIFZSNDEwMCBzZXJpZXMgU0lVCisJCSA4MyA9IC9kZXYvdHR5VlIxCQlORUMgVlI0MTAwIHNlcmllcyBEU0lVCisJCSA4NCA9IC9kZXYvdHR5SU9DODQJCUFsdGl4IGlvYzQgc2VyaWFsIGNhcmQKKwkJICAgIC4uLgorCQkgMTE1ID0gL2Rldi90dHlJT0MxMTUJCUFsdGl4IGlvYzQgc2VyaWFsIGNhcmQKKwkJIDExNiA9IC9kZXYvdHR5U0lPQzAJCUFsdGl4IGlvYzMgc2VyaWFsIGNhcmQKKwkJICAgIC4uLgorCQkgMTQ3ID0gL2Rldi90dHlTSU9DMzEJCUFsdGl4IGlvYzMgc2VyaWFsIGNhcmQKKwkJIDE0OCA9IC9kZXYvdHR5UFNDMAkJUFBDIFBTQyAtIHBvcnQgMAorCQkgICAgLi4uCisJCSAxNTMgPSAvZGV2L3R0eVBTQzUJCVBQQyBQU0MgLSBwb3J0IDUKKwkJIDE1NCA9IC9kZXYvdHR5QVQwCQlBVE1FTCBzZXJpYWwgcG9ydCAwCisJCSAgICAuLi4KKwkJIDE2OSA9IC9kZXYvdHR5QVQxNQkJQVRNRUwgc2VyaWFsIHBvcnQgMTUKKwkJIDE3MCA9IC9kZXYvdHR5TlgwCQlIaWxzY2hlciBuZXRYIHNlcmlhbCBwb3J0IDAKKwkJICAgIC4uLgorCQkgMTg1ID0gL2Rldi90dHlOWDE1CQlIaWxzY2hlciBuZXRYIHNlcmlhbCBwb3J0IDE1CisJCSAxODYgPSAvZGV2L3R0eUowCQlKVEFHMSBEQ0MgcHJvdG9jb2wgYmFzZWQgc2VyaWFsIHBvcnQgZW11bGF0aW9uCisJCSAxODcgPSAvZGV2L3R0eVVMMAkJWGlsaW54IHVhcnRsaXRlIC0gcG9ydCAwCisJCSAgICAuLi4KKwkJIDE5MCA9IC9kZXYvdHR5VUwzCQlYaWxpbnggdWFydGxpdGUgLSBwb3J0IDMKKwkJIDE5MSA9IC9kZXYveHZjMAkJWGVuIHZpcnR1YWwgY29uc29sZSAtIHBvcnQgMAorCQkgMTkyID0gL2Rldi90dHlQWjAJCXBtYWNfemlsb2cgLSBwb3J0IDAKKwkJICAgIC4uLgorCQkgMTk1ID0gL2Rldi90dHlQWjMJCXBtYWNfemlsb2cgLSBwb3J0IDMKKwkJIDE5NiA9IC9kZXYvdHR5VFgwCQlUWDM5LzQ5IHNlcmlhbCBwb3J0IDAKKwkJICAgIC4uLgorCQkgMjA0ID0gL2Rldi90dHlUWDcJCVRYMzkvNDkgc2VyaWFsIHBvcnQgNworCQkgMjA1ID0gL2Rldi90dHlTQzAJCVNDMjZ4eCBzZXJpYWwgcG9ydCAwCisJCSAyMDYgPSAvZGV2L3R0eVNDMQkJU0MyNnh4IHNlcmlhbCBwb3J0IDEKKwkJIDIwNyA9IC9kZXYvdHR5U0MyCQlTQzI2eHggc2VyaWFsIHBvcnQgMgorCQkgMjA4ID0gL2Rldi90dHlTQzMJCVNDMjZ4eCBzZXJpYWwgcG9ydCAzCisJCSAyMDkgPSAvZGV2L3R0eU1BWDAJCU1BWDMxMDAgc2VyaWFsIHBvcnQgMAorCQkgMjEwID0gL2Rldi90dHlNQVgxCQlNQVgzMTAwIHNlcmlhbCBwb3J0IDEKKwkJIDIxMSA9IC9kZXYvdHR5TUFYMgkJTUFYMzEwMCBzZXJpYWwgcG9ydCAyCisJCSAyMTIgPSAvZGV2L3R0eU1BWDMJCU1BWDMxMDAgc2VyaWFsIHBvcnQgMworCisyMDUgY2hhcglMb3ctZGVuc2l0eSBzZXJpYWwgcG9ydHMgKGFsdGVybmF0ZSBkZXZpY2UpCisJCSAgMCA9IC9kZXYvY3VsdTAJCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlMVTAKKwkJICAxID0gL2Rldi9jdWx1MQkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eUxVMQorCQkgIDIgPSAvZGV2L2N1bHUyCQlDYWxsb3V0IGRldmljZSBmb3IgdHR5TFUyCisJCSAgMyA9IC9kZXYvY3VsdTMJCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlMVTMKKwkJICA0ID0gL2Rldi9jdWZiMAkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eUZCMAorCQkgIDUgPSAvZGV2L2N1c2EwCQlDYWxsb3V0IGRldmljZSBmb3IgdHR5U0EwCisJCSAgNiA9IC9kZXYvY3VzYTEJCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlTQTEKKwkJICA3ID0gL2Rldi9jdXNhMgkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eVNBMgorCQkgIDggPSAvZGV2L2N1c2MwCQlDYWxsb3V0IGRldmljZSBmb3IgdHR5U0MwCisJCSAgOSA9IC9kZXYvY3VzYzEJCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlTQzEKKwkJIDEwID0gL2Rldi9jdXNjMgkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eVNDMgorCQkgMTEgPSAvZGV2L2N1c2MzCQlDYWxsb3V0IGRldmljZSBmb3IgdHR5U0MzCisJCSAxMiA9IC9kZXYvY3VmdzAJCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlGVzAKKwkJIDEzID0gL2Rldi9jdWZ3MQkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eUZXMQorCQkgMTQgPSAvZGV2L2N1ZncyCQlDYWxsb3V0IGRldmljZSBmb3IgdHR5RlcyCisJCSAxNSA9IC9kZXYvY3VmdzMJCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlGVzMKKwkJIDE2ID0gL2Rldi9jdWFtMAkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eUFNMAorCQkgICAgLi4uCisJCSAzMSA9IC9kZXYvY3VhbTE1CQlDYWxsb3V0IGRldmljZSBmb3IgdHR5QU0xNQorCQkgMzIgPSAvZGV2L2N1ZGIwCQlDYWxsb3V0IGRldmljZSBmb3IgdHR5REIwCisJCSAgICAuLi4KKwkJIDM5ID0gL2Rldi9jdWRiNwkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eURCNworCQkgNDAgPSAvZGV2L2N1c2cwCQlDYWxsb3V0IGRldmljZSBmb3IgdHR5U0cwCisJCSA0MSA9IC9kZXYvdHR5Y3VzbXgwCQlDYWxsb3V0IGRldmljZSBmb3IgdHR5U01YMAorCQkgNDIgPSAvZGV2L3R0eWN1c214MQkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eVNNWDEKKwkJIDQzID0gL2Rldi90dHljdXNteDIJCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlTTVgyCisJCSA0NiA9IC9kZXYvY3VjcG0wCQlDYWxsb3V0IGRldmljZSBmb3IgdHR5Q1BNMAorCQkgICAgLi4uCisJCSA0OSA9IC9kZXYvY3VjcG01CQlDYWxsb3V0IGRldmljZSBmb3IgdHR5Q1BNNQorCQkgNTAgPSAvZGV2L2N1aW9jNDAJCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlJT0M0MAorCQkgICAgLi4uCisJCSA4MSA9IC9kZXYvY3Vpb2M0MzEJCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlJT0M0MzEKKwkJIDgyID0gL2Rldi9jdXZyMAkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eVZSMAorCQkgODMgPSAvZGV2L2N1dnIxCQlDYWxsb3V0IGRldmljZSBmb3IgdHR5VlIxCisKKzIwNiBjaGFyCU9uU3RyZWFtIFNDLXgwIHRhcGUgZGV2aWNlcworCQkgIDAgPSAvZGV2L29zc3QwCQlGaXJzdCBPblN0cmVhbSBTQ1NJIHRhcGUsIG1vZGUgMAorCQkgIDEgPSAvZGV2L29zc3QxCQlTZWNvbmQgT25TdHJlYW0gU0NTSSB0YXBlLCBtb2RlIDAKKwkJICAgIC4uLgorCQkgMzIgPSAvZGV2L29zc3QwbAkJRmlyc3QgT25TdHJlYW0gU0NTSSB0YXBlLCBtb2RlIDEKKwkJIDMzID0gL2Rldi9vc3N0MWwJCVNlY29uZCBPblN0cmVhbSBTQ1NJIHRhcGUsIG1vZGUgMQorCQkgICAgLi4uCisJCSA2NCA9IC9kZXYvb3NzdDBtCQlGaXJzdCBPblN0cmVhbSBTQ1NJIHRhcGUsIG1vZGUgMgorCQkgNjUgPSAvZGV2L29zc3QxbQkJU2Vjb25kIE9uU3RyZWFtIFNDU0kgdGFwZSwgbW9kZSAyCisJCSAgICAuLi4KKwkJIDk2ID0gL2Rldi9vc3N0MGEJCUZpcnN0IE9uU3RyZWFtIFNDU0kgdGFwZSwgbW9kZSAzCisJCSA5NyA9IC9kZXYvb3NzdDFhCQlTZWNvbmQgT25TdHJlYW0gU0NTSSB0YXBlLCBtb2RlIDMKKwkJICAgIC4uLgorCQkxMjggPSAvZGV2L25vc3N0MAkJTm8gcmV3aW5kIHZlcnNpb24gb2YgL2Rldi9vc3N0MAorCQkxMjkgPSAvZGV2L25vc3N0MQkJTm8gcmV3aW5kIHZlcnNpb24gb2YgL2Rldi9vc3N0MQorCQkgICAgLi4uCisJCTE2MCA9IC9kZXYvbm9zc3QwbAkJTm8gcmV3aW5kIHZlcnNpb24gb2YgL2Rldi9vc3N0MGwKKwkJMTYxID0gL2Rldi9ub3NzdDFsCQlObyByZXdpbmQgdmVyc2lvbiBvZiAvZGV2L29zc3QxbAorCQkgICAgLi4uCisJCTE5MiA9IC9kZXYvbm9zc3QwbQkJTm8gcmV3aW5kIHZlcnNpb24gb2YgL2Rldi9vc3N0MG0KKwkJMTkzID0gL2Rldi9ub3NzdDFtCQlObyByZXdpbmQgdmVyc2lvbiBvZiAvZGV2L29zc3QxbQorCQkgICAgLi4uCisJCTIyNCA9IC9kZXYvbm9zc3QwYQkJTm8gcmV3aW5kIHZlcnNpb24gb2YgL2Rldi9vc3N0MGEKKwkJMjI1ID0gL2Rldi9ub3NzdDFhCQlObyByZXdpbmQgdmVyc2lvbiBvZiAvZGV2L29zc3QxYQorCQkgICAgLi4uCisKKwkJVGhlIE9uU3RyZWFtIFNDLXgwIFNDU0kgdGFwZXMgZG8gbm90IHN1cHBvcnQgdGhlCisJCXN0YW5kYXJkIFNDU0kgU0FTRCBjb21tYW5kIHNldCBhbmQgdGhlcmVmb3JlIG5lZWQKKwkJdGhlaXIgb3duIGRyaXZlciAib3NzdCIuIE5vdGUgdGhhdCB0aGUgSURFLCBVU0IgKGFuZAorCQltYXliZSBQYXJQb3J0KSB2ZXJzaW9ucyBtYXkgYmUgZHJpdmVuIHZpYSBpZGUtc2NzaSBvcgorCQl1c2Itc3RvcmFnZSBTQ1NJIGVtdWxhdGlvbiBhbmQgdGhpcyBvc3N0IGRldmljZSBhbmQKKwkJZHJpdmVyIGFzIHdlbGwuICBUaGUgQURSLXgwIGRyaXZlcyBhcmUgUUlDLTE1NworCQljb21wbGlhbnQgYW5kIGRvbid0IG5lZWQgb3NzdC4KKworMjA3IGNoYXIJQ29tcGFxIFByb0xpYW50IGhlYWx0aCBmZWF0dXJlIGluZGljYXRlCisJCSAgMCA9IC9kZXYvY3BxaGVhbHRoL2NwcXcJUmVkaXJlY3RvciBpbnRlcmZhY2UKKwkJICAxID0gL2Rldi9jcHFoZWFsdGgvY3JvbQlFSVNBIENST00KKwkJICAyID0gL2Rldi9jcHFoZWFsdGgvY2R0CURhdGEgVGFibGUKKwkJICAzID0gL2Rldi9jcHFoZWFsdGgvY2V2dAlFdmVudCBMb2cKKwkJICA0ID0gL2Rldi9jcHFoZWFsdGgvY2FzcglBdXRvbWF0aWMgU2VydmVyIFJlY292ZXJ5CisJCSAgNSA9IC9kZXYvY3BxaGVhbHRoL2NlY2MJRUNDIE1lbW9yeQorCQkgIDYgPSAvZGV2L2NwcWhlYWx0aC9jbWNhCU1hY2hpbmUgQ2hlY2sgQXJjaGl0ZWN0dXJlCisJCSAgNyA9IC9kZXYvY3BxaGVhbHRoL2Njc20JRGVwcmVjYXRlZCBDRFQKKwkJICA4ID0gL2Rldi9jcHFoZWFsdGgvY25taQlOTUkgSGFuZGxpbmcKKwkJICA5ID0gL2Rldi9jcHFoZWFsdGgvY3NzCVNpZGVzaG93IE1hbmFnZW1lbnQKKwkJIDEwID0gL2Rldi9jcHFoZWFsdGgvY3JhbQlDTU9TIGludGVyZmFjZQorCQkgMTEgPSAvZGV2L2NwcWhlYWx0aC9jcGNpCVBDSSBJUlEgaW50ZXJmYWNlCisKKzIwOCBjaGFyCVVzZXIgc3BhY2Ugc2VyaWFsIHBvcnRzCisJCSAgMCA9IC9kZXYvdHR5VTAJCUZpcnN0IHVzZXIgc3BhY2Ugc2VyaWFsIHBvcnQKKwkJICAxID0gL2Rldi90dHlVMQkJU2Vjb25kIHVzZXIgc3BhY2Ugc2VyaWFsIHBvcnQKKwkJICAgIC4uLgorCisyMDkgY2hhcglVc2VyIHNwYWNlIHNlcmlhbCBwb3J0cyAoYWx0ZXJuYXRlIGRldmljZXMpCisJCSAgMCA9IC9kZXYvY3V1MAkJCUNhbGxvdXQgZGV2aWNlIGZvciB0dHlVMAorCQkgIDEgPSAvZGV2L2N1dTEJCQlDYWxsb3V0IGRldmljZSBmb3IgdHR5VTEKKwkJICAgIC4uLgorCisyMTAgY2hhcglTQkUsIEluYy4gc3luYy9hc3luYyBzZXJpYWwgY2FyZAorCQkgIDAgPSAvZGV2L3NiZWkvd3hjZmcwCQlDb25maWd1cmF0aW9uIGRldmljZSBmb3IgYm9hcmQgMAorCQkgIDEgPSAvZGV2L3NiZWkvZGxkMAkJRG93bmxvYWQgZGV2aWNlIGZvciBib2FyZCAwCisJCSAgMiA9IC9kZXYvc2JlaS93YW4wMAkJV0FOIGRldmljZSwgcG9ydCAwLCBib2FyZCAwCisJCSAgMyA9IC9kZXYvc2JlaS93YW4wMQkJV0FOIGRldmljZSwgcG9ydCAxLCBib2FyZCAwCisJCSAgNCA9IC9kZXYvc2JlaS93YW4wMgkJV0FOIGRldmljZSwgcG9ydCAyLCBib2FyZCAwCisJCSAgNSA9IC9kZXYvc2JlaS93YW4wMwkJV0FOIGRldmljZSwgcG9ydCAzLCBib2FyZCAwCisJCSAgNiA9IC9kZXYvc2JlaS93YW5jMDAJCVdBTiBjbG9uZSBkZXZpY2UsIHBvcnQgMCwgYm9hcmQgMAorCQkgIDcgPSAvZGV2L3NiZWkvd2FuYzAxCQlXQU4gY2xvbmUgZGV2aWNlLCBwb3J0IDEsIGJvYXJkIDAKKwkJICA4ID0gL2Rldi9zYmVpL3dhbmMwMgkJV0FOIGNsb25lIGRldmljZSwgcG9ydCAyLCBib2FyZCAwCisJCSAgOSA9IC9kZXYvc2JlaS93YW5jMDMJCVdBTiBjbG9uZSBkZXZpY2UsIHBvcnQgMywgYm9hcmQgMAorCQkgMTAgPSAvZGV2L3NiZWkvd3hjZmcxCQlDb25maWd1cmF0aW9uIGRldmljZSBmb3IgYm9hcmQgMQorCQkgMTEgPSAvZGV2L3NiZWkvZGxkMQkJRG93bmxvYWQgZGV2aWNlIGZvciBib2FyZCAxCisJCSAxMiA9IC9kZXYvc2JlaS93YW4xMAkJV0FOIGRldmljZSwgcG9ydCAwLCBib2FyZCAxCisJCSAxMyA9IC9kZXYvc2JlaS93YW4xMQkJV0FOIGRldmljZSwgcG9ydCAxLCBib2FyZCAxCisJCSAxNCA9IC9kZXYvc2JlaS93YW4xMgkJV0FOIGRldmljZSwgcG9ydCAyLCBib2FyZCAxCisJCSAxNSA9IC9kZXYvc2JlaS93YW4xMwkJV0FOIGRldmljZSwgcG9ydCAzLCBib2FyZCAxCisJCSAxNiA9IC9kZXYvc2JlaS93YW5jMTAJCVdBTiBjbG9uZSBkZXZpY2UsIHBvcnQgMCwgYm9hcmQgMQorCQkgMTcgPSAvZGV2L3NiZWkvd2FuYzExCQlXQU4gY2xvbmUgZGV2aWNlLCBwb3J0IDEsIGJvYXJkIDEKKwkJIDE4ID0gL2Rldi9zYmVpL3dhbmMxMgkJV0FOIGNsb25lIGRldmljZSwgcG9ydCAyLCBib2FyZCAxCisJCSAxOSA9IC9kZXYvc2JlaS93YW5jMTMJCVdBTiBjbG9uZSBkZXZpY2UsIHBvcnQgMywgYm9hcmQgMQorCQkgICAgLi4uCisKKwkJWWVzLCBlYWNoIGJvYXJkIGlzIHJlYWxseSBzcGFjZWQgMTAgKGRlY2ltYWwpIGFwYXJ0LgorCisyMTEgY2hhcglBZGRpbnVtIENQQ0kxNTAwIGRpZ2l0YWwgSS9PIGNhcmQKKwkJICAwID0gL2Rldi9hZGRpbnVtL2NwY2kxNTAwLzAJRmlyc3QgQ1BDSTE1MDAgY2FyZAorCQkgIDEgPSAvZGV2L2FkZGludW0vY3BjaTE1MDAvMQlTZWNvbmQgQ1BDSTE1MDAgY2FyZAorCQkgICAgLi4uCisKKzIxMiBjaGFyCUxpbnV4VFYub3JnIERWQiBkcml2ZXIgc3Vic3lzdGVtCisJCSAgMCA9IC9kZXYvZHZiL2FkYXB0ZXIwL3ZpZGVvMCAgICBmaXJzdCB2aWRlbyBkZWNvZGVyIG9mIGZpcnN0IGNhcmQKKwkJICAxID0gL2Rldi9kdmIvYWRhcHRlcjAvYXVkaW8wICAgIGZpcnN0IGF1ZGlvIGRlY29kZXIgb2YgZmlyc3QgY2FyZAorCQkgIDIgPSAvZGV2L2R2Yi9hZGFwdGVyMC9zZWMwICAgICAgKG9ic29sZXRlL3VudXNlZCkKKwkJICAzID0gL2Rldi9kdmIvYWRhcHRlcjAvZnJvbnRlbmQwIGZpcnN0IGZyb250ZW5kIGRldmljZSBvZiBmaXJzdCBjYXJkCisJCSAgNCA9IC9kZXYvZHZiL2FkYXB0ZXIwL2RlbXV4MCAgICBmaXJzdCBkZW11eCBkZXZpY2Ugb2YgZmlyc3QgY2FyZAorCQkgIDUgPSAvZGV2L2R2Yi9hZGFwdGVyMC9kdnIwICAgICAgZmlyc3QgZGlnaXRhbCB2aWRlbyByZWNvZGVyIGRldmljZSBvZiBmaXJzdCBjYXJkCisJCSAgNiA9IC9kZXYvZHZiL2FkYXB0ZXIwL2NhMCAgICAgICBmaXJzdCBjb21tb24gYWNjZXNzIHBvcnQgb2YgZmlyc3QgY2FyZAorCQkgIDcgPSAvZGV2L2R2Yi9hZGFwdGVyMC9uZXQwICAgICAgZmlyc3QgbmV0d29yayBkZXZpY2Ugb2YgZmlyc3QgY2FyZAorCQkgIDggPSAvZGV2L2R2Yi9hZGFwdGVyMC9vc2QwICAgICAgZmlyc3Qgb24tc2NyZWVuLWRpc3BsYXkgZGV2aWNlIG9mIGZpcnN0IGNhcmQKKwkJICA5ID0gL2Rldi9kdmIvYWRhcHRlcjAvdmlkZW8xICAgIHNlY29uZCB2aWRlbyBkZWNvZGVyIG9mIGZpcnN0IGNhcmQKKwkJICAgIC4uLgorCQkgNjQgPSAvZGV2L2R2Yi9hZGFwdGVyMS92aWRlbzAgICAgZmlyc3QgdmlkZW8gZGVjb2RlciBvZiBzZWNvbmQgY2FyZAorCQkgICAgLi4uCisJCTEyOCA9IC9kZXYvZHZiL2FkYXB0ZXIyL3ZpZGVvMCAgICBmaXJzdCB2aWRlbyBkZWNvZGVyIG9mIHRoaXJkIGNhcmQKKwkJICAgIC4uLgorCQkxOTYgPSAvZGV2L2R2Yi9hZGFwdGVyMy92aWRlbzAgICAgZmlyc3QgdmlkZW8gZGVjb2RlciBvZiBmb3VydGggY2FyZAorCisyMTYgY2hhcglCbHVldG9vdGggUkZDT01NIFRUWSBkZXZpY2VzCisJCSAgMCA9IC9kZXYvcmZjb21tMAkJRmlyc3QgQmx1ZXRvb3RoIFJGQ09NTSBUVFkgZGV2aWNlCisJCSAgMSA9IC9kZXYvcmZjb21tMQkJU2Vjb25kIEJsdWV0b290aCBSRkNPTU0gVFRZIGRldmljZQorCQkgICAgLi4uCisKKzIxNyBjaGFyCUJsdWV0b290aCBSRkNPTU0gVFRZIGRldmljZXMgKGFsdGVybmF0ZSBkZXZpY2VzKQorCQkgIDAgPSAvZGV2L2N1cmYwCQlDYWxsb3V0IGRldmljZSBmb3IgcmZjb21tMAorCQkgIDEgPSAvZGV2L2N1cmYxCQlDYWxsb3V0IGRldmljZSBmb3IgcmZjb21tMQorCQkgICAgLi4uCisKKzIxOCBjaGFyCVRoZSBMb2dpY2FsIENvbXBhbnkgYnVzIFVuaWJ1cy9RYnVzIGFkYXB0ZXJzCisJCSAgMCA9IC9kZXYvbG9naWNhbGNvL2JjaS8wCUZpcnN0IGJ1cyBhZGFwdGVyCisJCSAgMSA9IC9kZXYvbG9naWNhbGNvL2JjaS8xCUZpcnN0IGJ1cyBhZGFwdGVyCisJCSAgICAuLi4KKworMjE5IGNoYXIJVGhlIExvZ2ljYWwgQ29tcGFueSBEQ0ktMTMwMCBkaWdpdGFsIEkvTyBjYXJkCisJCSAgMCA9IC9kZXYvbG9naWNhbGNvL2RjaTEzMDAvMAlGaXJzdCBEQ0ktMTMwMCBjYXJkCisJCSAgMSA9IC9kZXYvbG9naWNhbGNvL2RjaTEzMDAvMQlTZWNvbmQgRENJLTEzMDAgY2FyZAorCQkgICAgLi4uCisKKzIyMCBjaGFyCU15cmljb20gTXlyaW5ldCAiR00iIGJvYXJkCisJCSAgMCA9IC9kZXYvbXlyaWNvbS9nbTAJCUZpcnN0IE15cmluZXQgR00gYm9hcmQKKwkJICAxID0gL2Rldi9teXJpY29tL2dtcDAJCUZpcnN0IGJvYXJkICJyb290IGFjY2VzcyIKKwkJICAyID0gL2Rldi9teXJpY29tL2dtMQkJU2Vjb25kIE15cmluZXQgR00gYm9hcmQKKwkJICAzID0gL2Rldi9teXJpY29tL2dtcDEJCVNlY29uZCBib2FyZCAicm9vdCBhY2Nlc3MiCisJCSAgICAuLi4KKworMjIxIGNoYXIJVk1FIGJ1cworCQkgIDAgPSAvZGV2L2J1cy92bWUvbTAJCUZpcnN0IG1hc3RlciBpbWFnZQorCQkgIDEgPSAvZGV2L2J1cy92bWUvbTEJCVNlY29uZCBtYXN0ZXIgaW1hZ2UKKwkJICAyID0gL2Rldi9idXMvdm1lL20yCQlUaGlyZCBtYXN0ZXIgaW1hZ2UKKwkJICAzID0gL2Rldi9idXMvdm1lL20zCQlGb3VydGggbWFzdGVyIGltYWdlCisJCSAgNCA9IC9kZXYvYnVzL3ZtZS9zMAkJRmlyc3Qgc2xhdmUgaW1hZ2UKKwkJICA1ID0gL2Rldi9idXMvdm1lL3MxCQlTZWNvbmQgc2xhdmUgaW1hZ2UKKwkJICA2ID0gL2Rldi9idXMvdm1lL3MyCQlUaGlyZCBzbGF2ZSBpbWFnZQorCQkgIDcgPSAvZGV2L2J1cy92bWUvczMJCUZvdXJ0aCBzbGF2ZSBpbWFnZQorCQkgIDggPSAvZGV2L2J1cy92bWUvY3RsCQlDb250cm9sCisKKwkJSXQgaXMgZXhwZWN0ZWQgdGhhdCBhbGwgVk1FIGJ1cyBkcml2ZXJzIHdpbGwgdXNlIHRoZQorCQlzYW1lIGludGVyZmFjZS4gIEZvciBpbnRlcmZhY2UgZG9jdW1lbnRhdGlvbiBzZWUKKwkJaHR0cDovL3d3dy52bWVsaW51eC5vcmcvLgorCisyMjQgY2hhcglBMjIzMiBzZXJpYWwgY2FyZAorCQkgIDAgPSAvZGV2L3R0eVkwCQlGaXJzdCBBMjIzMiBwb3J0CisJCSAgMSA9IC9kZXYvdHR5WTEJCVNlY29uZCBBMjIzMiBwb3J0CisJCSAgICAuLi4KKworMjI1IGNoYXIJQTIyMzIgc2VyaWFsIGNhcmQgKGFsdGVybmF0ZSBkZXZpY2VzKQorCQkgIDAgPSAvZGV2L2N1eTAJCQlDYWxsb3V0IGRldmljZSBmb3IgdHR5WTAKKwkJICAxID0gL2Rldi9jdXkxCQkJQ2FsbG91dCBkZXZpY2UgZm9yIHR0eVkxCisJCSAgICAuLi4KKworMjI2IGNoYXIJRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZSAoRFJJKQorCQkgIDAgPSAvZGV2L2RyaS9jYXJkMAkJRmlyc3QgZ3JhcGhpY3MgY2FyZAorCQkgIDEgPSAvZGV2L2RyaS9jYXJkMQkJU2Vjb25kIGdyYXBoaWNzIGNhcmQKKwkJICAgIC4uLgorCisyMjcgY2hhcglJQk0gMzI3MCB0ZXJtaW5hbCBVbml4IHR0eSBhY2Nlc3MKKwkJICAxID0gL2Rldi8zMjcwL3R0eTEJCUZpcnN0IDMyNzAgdGVybWluYWwKKwkJICAyID0gL2Rldi8zMjcwL3R0eTIJCVNlY29uZHMgMzI3MCB0ZXJtaW5hbAorCQkgICAgLi4uCisKKzIyOCBjaGFyCUlCTSAzMjcwIHRlcm1pbmFsIGJsb2NrLW1vZGUgYWNjZXNzCisJCSAgMCA9IC9kZXYvMzI3MC90dWIJCUNvbnRyb2xsaW5nIGludGVyZmFjZQorCQkgIDEgPSAvZGV2LzMyNzAvdHViMQkJRmlyc3QgMzI3MCB0ZXJtaW5hbAorCQkgIDIgPSAvZGV2LzMyNzAvdHViMgkJU2Vjb25kIDMyNzAgdGVybWluYWwKKwkJICAgIC4uLgorCisyMjkgY2hhcglJQk0gaVNlcmllcy9wU2VyaWVzIHZpcnR1YWwgY29uc29sZQorCQkgIDAgPSAvZGV2L2h2YzAJCQlGaXJzdCBjb25zb2xlIHBvcnQKKwkJICAxID0gL2Rldi9odmMxCQkJU2Vjb25kIGNvbnNvbGUgcG9ydAorCQkgICAgLi4uCisKKzIzMCBjaGFyCUlCTSBpU2VyaWVzIHZpcnR1YWwgdGFwZQorCQkgIDAgPSAvZGV2L2lzZXJpZXMvdnQwCQlGaXJzdCB2aXJ0dWFsIHRhcGUsIG1vZGUgMAorCQkgIDEgPSAvZGV2L2lzZXJpZXMvdnQxCQlTZWNvbmQgdmlydHVhbCB0YXBlLCBtb2RlIDAKKwkJICAgIC4uLgorCQkgMzIgPSAvZGV2L2lzZXJpZXMvdnQwbAkJRmlyc3QgdmlydHVhbCB0YXBlLCBtb2RlIDEKKwkJIDMzID0gL2Rldi9pc2VyaWVzL3Z0MWwJCVNlY29uZCB2aXJ0dWFsIHRhcGUsIG1vZGUgMQorCQkgICAgLi4uCisJCSA2NCA9IC9kZXYvaXNlcmllcy92dDBtCQlGaXJzdCB2aXJ0dWFsIHRhcGUsIG1vZGUgMgorCQkgNjUgPSAvZGV2L2lzZXJpZXMvdnQxbQkJU2Vjb25kIHZpcnR1YWwgdGFwZSwgbW9kZSAyCisJCSAgICAuLi4KKwkJIDk2ID0gL2Rldi9pc2VyaWVzL3Z0MGEJCUZpcnN0IHZpcnR1YWwgdGFwZSwgbW9kZSAzCisJCSA5NyA9IC9kZXYvaXNlcmllcy92dDFhCQlTZWNvbmQgdmlydHVhbCB0YXBlLCBtb2RlIDMKKwkJICAgICAgLi4uCisJCTEyOCA9IC9kZXYvaXNlcmllcy9udnQwCQlGaXJzdCB2aXJ0dWFsIHRhcGUsIG1vZGUgMCwgbm8gcmV3aW5kCisJCTEyOSA9IC9kZXYvaXNlcmllcy9udnQxCQlTZWNvbmQgdmlydHVhbCB0YXBlLCBtb2RlIDAsIG5vIHJld2luZAorCQkgICAgLi4uCisJCTE2MCA9IC9kZXYvaXNlcmllcy9udnQwbAlGaXJzdCB2aXJ0dWFsIHRhcGUsIG1vZGUgMSwgbm8gcmV3aW5kCisJCTE2MSA9IC9kZXYvaXNlcmllcy9udnQxbAlTZWNvbmQgdmlydHVhbCB0YXBlLCBtb2RlIDEsIG5vIHJld2luZAorCQkgICAgLi4uCisJCTE5MiA9IC9kZXYvaXNlcmllcy9udnQwbQlGaXJzdCB2aXJ0dWFsIHRhcGUsIG1vZGUgMiwgbm8gcmV3aW5kCisJCTE5MyA9IC9kZXYvaXNlcmllcy9udnQxbQlTZWNvbmQgdmlydHVhbCB0YXBlLCBtb2RlIDIsIG5vIHJld2luZAorCQkgICAgLi4uCisJCTIyNCA9IC9kZXYvaXNlcmllcy9udnQwYQlGaXJzdCB2aXJ0dWFsIHRhcGUsIG1vZGUgMywgbm8gcmV3aW5kCisJCTIyNSA9IC9kZXYvaXNlcmllcy9udnQxYQlTZWNvbmQgdmlydHVhbCB0YXBlLCBtb2RlIDMsIG5vIHJld2luZAorCQkgICAgLi4uCisKKwkJIk5vIHJld2luZCIgcmVmZXJzIHRvIHRoZSBvbWlzc2lvbiBvZiB0aGUgZGVmYXVsdAorCQlhdXRvbWF0aWMgcmV3aW5kIG9uIGRldmljZSBjbG9zZS4gIFRoZSBNVFJFVyBvciBNVE9GRkwKKwkJaW9jdGwoKSdzIGNhbiBiZSB1c2VkIHRvIHJld2luZCB0aGUgdGFwZSByZWdhcmRsZXNzIG9mCisJCXRoZSBkZXZpY2UgdXNlZCB0byBhY2Nlc3MgaXQuCisKKzIzMSBjaGFyCUluZmluaUJhbmQKKwkJMCA9IC9kZXYvaW5maW5pYmFuZC91bWFkMAorCQkxID0gL2Rldi9pbmZpbmliYW5kL3VtYWQxCisJCSAgLi4uCisJCTYzID0gL2Rldi9pbmZpbmliYW5kL3VtYWQ2MyAgICA2M3JkIEluZmluaUJhbmRNYWQgZGV2aWNlCisJCTY0ID0gL2Rldi9pbmZpbmliYW5kL2lzc20wICAgICBGaXJzdCBJbmZpbmlCYW5kIElzU00gZGV2aWNlCisJCTY1ID0gL2Rldi9pbmZpbmliYW5kL2lzc20xICAgICBTZWNvbmQgSW5maW5pQmFuZCBJc1NNIGRldmljZQorCQkgIC4uLgorCQkxMjcgPSAvZGV2L2luZmluaWJhbmQvaXNzbTYzICAgIDYzcmQgSW5maW5pQmFuZCBJc1NNIGRldmljZQorCQkxMjggPSAvZGV2L2luZmluaWJhbmQvdXZlcmJzMCAgIEZpcnN0IEluZmluaUJhbmQgdmVyYnMgZGV2aWNlCisJCTEyOSA9IC9kZXYvaW5maW5pYmFuZC91dmVyYnMxICAgU2Vjb25kIEluZmluaUJhbmQgdmVyYnMgZGV2aWNlCisJCSAgLi4uCisJCTE1OSA9IC9kZXYvaW5maW5pYmFuZC91dmVyYnMzMSAgMzFzdCBJbmZpbmlCYW5kIHZlcmJzIGRldmljZQorCisyMzIgY2hhcglCaW9tZXRyaWMgRGV2aWNlcworCQkwID0gL2Rldi9iaW9tZXRyaWMvc2Vuc29yMC9maW5nZXJwcmludAlmaXJzdCBmaW5nZXJwcmludCBzZW5zb3Igb24gZmlyc3QgZGV2aWNlCisJCTEgPSAvZGV2L2Jpb21ldHJpYy9zZW5zb3IwL2lyaXMJCWZpcnN0IGlyaXMgc2Vuc29yIG9uIGZpcnN0IGRldmljZQorCQkyID0gL2Rldi9iaW9tZXRyaWMvc2Vuc29yMC9yZXRpbmEJZmlyc3QgcmV0aW5hIHNlbnNvciBvbiBmaXJzdCBkZXZpY2UKKwkJMyA9IC9kZXYvYmlvbWV0cmljL3NlbnNvcjAvdm9pY2VwcmludAlmaXJzdCB2b2ljZXByaW50IHNlbnNvciBvbiBmaXJzdCBkZXZpY2UKKwkJNCA9IC9kZXYvYmlvbWV0cmljL3NlbnNvcjAvZmFjaWFsCWZpcnN0IGZhY2lhbCBzZW5zb3Igb24gZmlyc3QgZGV2aWNlCisJCTUgPSAvZGV2L2Jpb21ldHJpYy9zZW5zb3IwL2hhbmQJCWZpcnN0IGhhbmQgc2Vuc29yIG9uIGZpcnN0IGRldmljZQorCQkgIC4uLgorCQkxMCA9IC9kZXYvYmlvbWV0cmljL3NlbnNvcjEvZmluZ2VycHJpbnQJZmlyc3QgZmluZ2VycHJpbnQgc2Vuc29yIG9uIHNlY29uZCBkZXZpY2UKKwkJICAuLi4KKwkJMjAgPSAvZGV2L2Jpb21ldHJpYy9zZW5zb3IyL2ZpbmdlcnByaW50CWZpcnN0IGZpbmdlcnByaW50IHNlbnNvciBvbiB0aGlyZCBkZXZpY2UKKwkJICAuLi4KKworMjMzIGNoYXIJUGF0aFNjYWxlIEluZmluaVBhdGggaW50ZXJjb25uZWN0CisJCTAgPSAvZGV2L2lwYXRoICAgICAgICBQcmltYXJ5IGRldmljZSBmb3IgcHJvZ3JhbXMgKGFueSB1bml0KQorCQkxID0gL2Rldi9pcGF0aDAgICAgICAgQWNjZXNzIHNwZWNpZmljYWxseSB0byB1bml0IDAKKwkJMiA9IC9kZXYvaXBhdGgxICAgICAgIEFjY2VzcyBzcGVjaWZpY2FsbHkgdG8gdW5pdCAxCisJCSAgLi4uCisJCTQgPSAvZGV2L2lwYXRoMyAgICAgICBBY2Nlc3Mgc3BlY2lmaWNhbGx5IHRvIHVuaXQgMworCQkxMjkgPSAvZGV2L2lwYXRoX3NtYSAgICBEZXZpY2UgdXNlZCBieSBTdWJuZXQgTWFuYWdlbWVudCBBZ2VudAorCQkxMzAgPSAvZGV2L2lwYXRoX2RpYWcgICBEZXZpY2UgdXNlZCBieSBkaWFnbm9zdGljcyBwcm9ncmFtcworCisyMzQtMjM5CQlVTkFTU0lHTkVECisKKzI0MC0yNTQgY2hhcglMT0NBTC9FWFBFUklNRU5UQUwgVVNFCisKKzI0MC0yNTQgYmxvY2sJTE9DQUwvRVhQRVJJTUVOVEFMIFVTRQorCQlBbGxvY2F0ZWQgZm9yIGxvY2FsL2V4cGVyaW1lbnRhbCB1c2UuICBGb3IgZGV2aWNlcyBub3QKKwkJYXNzaWduZWQgb2ZmaWNpYWwgbnVtYmVycywgdGhlc2UgcmFuZ2VzIHNob3VsZCBiZQorCQl1c2VkIGluIG9yZGVyIHRvIGF2b2lkIGNvbmZsaWN0aW5nIHdpdGggZnV0dXJlIGFzc2lnbm1lbnRzLgorCisyNTUgY2hhcglSRVNFUlZFRAorCisyNTUgYmxvY2sJUkVTRVJWRUQKKworCQlUaGlzIG1ham9yIGlzIHJlc2VydmVkIHRvIGFzc2lzdCB0aGUgZXhwYW5zaW9uIHRvIGEKKwkJbGFyZ2VyIG51bWJlciBzcGFjZS4gIE5vIGRldmljZSBub2RlcyB3aXRoIHRoaXMgbWFqb3IKKwkJc2hvdWxkIGV2ZXIgYmUgY3JlYXRlZCBvbiB0aGUgZmlsZXN5c3RlbS4KKwkJKFRoaXMgaXMgcHJvYmFibHkgbm90IHRydWUgYW55bW9yZSwgYnV0IEknbGwgbGVhdmUgaXQKKwkJZm9yIG5vdyAvVG9yYmVuKQorCistLS1MQVJHRSBNQUpPUlMhISEhIS0tLQorCisyNTYgY2hhcglFcXVpbm94IFNTVCBtdWx0aS1wb3J0IHNlcmlhbCBib2FyZHMKKwkJICAgMCA9IC9kZXYvdHR5RVEwCUZpcnN0IHNlcmlhbCBwb3J0IG9uIGZpcnN0IEVxdWlub3ggU1NUIGJvYXJkCisJCSAxMjcgPSAvZGV2L3R0eUVRMTI3CUxhc3Qgc2VyaWFsIHBvcnQgb24gZmlyc3QgRXF1aW5veCBTU1QgYm9hcmQKKwkJIDEyOCA9IC9kZXYvdHR5RVExMjgJRmlyc3Qgc2VyaWFsIHBvcnQgb24gc2Vjb25kIEVxdWlub3ggU1NUIGJvYXJkCisJCSAgLi4uCisJCTEwMjcgPSAvZGV2L3R0eUVRMTAyNwlMYXN0IHNlcmlhbCBwb3J0IG9uIGVpZ2h0aCBFcXVpbm94IFNTVCBib2FyZAorCisyNTYgYmxvY2sJUmVzaWRlbnQgRmxhc2ggRGlzayBGbGFzaCBUcmFuc2xhdGlvbiBMYXllcgorCQkgIDAgPSAvZGV2L3JmZGEJCUZpcnN0IFJGRCBGVEwgbGF5ZXIKKwkJIDE2ID0gL2Rldi9yZmRiCQlTZWNvbmQgUkZEIEZUTCBsYXllcgorCQkgIC4uLgorCQkyNDAgPSAvZGV2L3JmZHAJCTE2dGggUkZEIEZUTCBsYXllcgorCisyNTcgY2hhcglQaG9lbml4IFRlY2hub2xvZ2llcyBDcnlwdG9ncmFwaGljIFNlcnZpY2VzIERyaXZlcgorCQkgIDAgPSAvZGV2L3B0bHNlYwlDcnlwdG8gU2VydmljZXMgRHJpdmVyCisKKzI1NyBibG9jawlTU0ZEQyBGbGFzaCBUcmFuc2xhdGlvbiBMYXllciBmaWxlc3lzdGVtCisJCSAgMCA9IC9kZXYvc3NmZGNhCUZpcnN0IFNTRkRDIGxheWVyCisJCSAgOCA9IC9kZXYvc3NmZGNiCVNlY29uZCBTU0ZEQyBsYXllcgorCQkgMTYgPSAvZGV2L3NzZmRjYwlUaGlyZCBTU0ZEQyBsYXllcgorCQkgMjQgPSAvZGV2L3NzZmRjZAk0dGggU1NGREMgbGF5ZXIKKwkJIDMyID0gL2Rldi9zc2ZkY2UJNXRoIFNTRkRDIGxheWVyCisJCSA0MCA9IC9kZXYvc3NmZGNmCTZ0aCBTU0ZEQyBsYXllcgorCQkgNDggPSAvZGV2L3NzZmRjZwk3dGggU1NGREMgbGF5ZXIKKwkJIDU2ID0gL2Rldi9zc2ZkY2gJOHRoIFNTRkRDIGxheWVyCisKKzI1OCBibG9jawlST00vRmxhc2ggcmVhZC1vbmx5IHRyYW5zbGF0aW9uIGxheWVyCisJCSAgMCA9IC9kZXYvYmxvY2tyb20wCUZpcnN0IFJPTSBjYXJkJ3MgdHJhbnNsYXRpb24gbGF5ZXIgaW50ZXJmYWNlCisJCSAgMSA9IC9kZXYvYmxvY2tyb20xCVNlY29uZCBST00gY2FyZCdzIHRyYW5zbGF0aW9uIGxheWVyIGludGVyZmFjZQorCQkgIC4uLgorCisyNTkgYmxvY2sJQmxvY2sgRXh0ZW5kZWQgTWFqb3IKKwkJICBVc2VkIGR5bmFtaWNhbGx5IHRvIGhvbGQgYWRkaXRpb25hbCBwYXJ0aXRpb24gbWlub3IKKwkJICBudW1iZXJzIGFuZCBhbGxvdyBsYXJnZSBudW1iZXJzIG9mIHBhcnRpdGlvbnMgcGVyIGRldmljZQorCisyNTkgY2hhcglGUEdBIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlcworCQkgIDAgPSAvZGV2L2ljYXAwCUZpcnN0IFhpbGlueCBpbnRlcm5hbCBjb25maWd1cmF0aW9uCisJCSAgMSA9IC9kZXYvaWNhcDEJU2Vjb25kIFhpbGlueCBpbnRlcm5hbCBjb25maWd1cmF0aW9uCisKKzI2MCBjaGFyCU9TRCAoT2JqZWN0LWJhc2VkLWRldmljZSkgU0NTSSBEZXZpY2UKKwkJICAwID0gL2Rldi9vc2QwCQlGaXJzdCBPU0QgRGV2aWNlCisJCSAgMSA9IC9kZXYvb3NkMQkJU2Vjb25kIE9TRCBEZXZpY2UKKwkJICAuLi4KKwkJICAyNTUgPSAvZGV2L29zZDI1NQkyNTZ0aCBPU0QgRGV2aWNlCisKKyAqKioqCUFERElUSU9OQUwgL2RldiBESVJFQ1RPUlkgRU5UUklFUworCitUaGlzIHNlY3Rpb24gZGV0YWlscyBhZGRpdGlvbmFsIGVudHJpZXMgdGhhdCBzaG91bGQgb3IgbWF5IGV4aXN0IGluCit0aGUgL2RldiBkaXJlY3RvcnkuICBJdCBpcyBwcmVmZXJyZWQgdGhhdCBzeW1ib2xpYyBsaW5rcyB1c2UgdGhlIHNhbWUKK2Zvcm0gKGFic29sdXRlIG9yIHJlbGF0aXZlKSBhcyBpcyBpbmRpY2F0ZWQgaGVyZS4gIExpbmtzIGFyZQorY2xhc3NpZmllZCBhcyAiaGFyZCIgb3IgInN5bWJvbGljIiBkZXBlbmRpbmcgb24gdGhlIHByZWZlcnJlZCB0eXBlIG9mCitsaW5rOyBpZiBwb3NzaWJsZSwgdGhlIGluZGljYXRlZCB0eXBlIG9mIGxpbmsgc2hvdWxkIGJlIHVzZWQuCisKKworCUNvbXB1bHNvcnkgbGlua3MKKworVGhlc2UgbGlua3Mgc2hvdWxkIGV4aXN0IG9uIGFsbCBzeXN0ZW1zOgorCisvZGV2L2ZkCQkvcHJvYy9zZWxmL2ZkCXN5bWJvbGljCUZpbGUgZGVzY3JpcHRvcnMKKy9kZXYvc3RkaW4JZmQvMAkJc3ltYm9saWMJc3RkaW4gZmlsZSBkZXNjcmlwdG9yCisvZGV2L3N0ZG91dAlmZC8xCQlzeW1ib2xpYwlzdGRvdXQgZmlsZSBkZXNjcmlwdG9yCisvZGV2L3N0ZGVycglmZC8yCQlzeW1ib2xpYwlzdGRlcnIgZmlsZSBkZXNjcmlwdG9yCisvZGV2L25mc2QJc29ja3N5cwkJc3ltYm9saWMJUmVxdWlyZWQgYnkgaUJDUy0yCisvZGV2L1gwUgludWxsCQlzeW1ib2xpYwlSZXF1aXJlZCBieSBpQkNTLTIKKworTm90ZTogL2Rldi9YMFIgaXMgPGxldHRlciBYPi08ZGlnaXQgMD4tPGxldHRlciBSPi4KKworCVJlY29tbWVuZGVkIGxpbmtzCisKK0l0IGlzIHJlY29tbWVuZGVkIHRoYXQgdGhlc2UgbGlua3MgZXhpc3Qgb24gYWxsIHN5c3RlbXM6CisKKy9kZXYvY29yZQkvcHJvYy9rY29yZQlzeW1ib2xpYwlCYWNrd2FyZCBjb21wYXRpYmlsaXR5CisvZGV2L3JhbWRpc2sJcmFtMAkJc3ltYm9saWMJQmFja3dhcmQgY29tcGF0aWJpbGl0eQorL2Rldi9mdGFwZQlxZnQwCQlzeW1ib2xpYwlCYWNrd2FyZCBjb21wYXRpYmlsaXR5CisvZGV2L2J0dHYwCXZpZGVvMAkJc3ltYm9saWMJQmFja3dhcmQgY29tcGF0aWJpbGl0eQorL2Rldi9yYWRpbwlyYWRpbzAJCXN5bWJvbGljCUJhY2t3YXJkIGNvbXBhdGliaWxpdHkKKy9kZXYvaTJvKgkvZGV2L2kyby8qCXN5bWJvbGljCUJhY2t3YXJkIGNvbXBhdGliaWxpdHkKKy9kZXYvc2NkPwlzcj8JCWhhcmQJCUFsdGVybmF0ZSBTQ1NJIENELVJPTSBuYW1lCisKKwlMb2NhbGx5IGRlZmluZWQgbGlua3MKKworVGhlIGZvbGxvd2luZyBsaW5rcyBtYXkgYmUgZXN0YWJsaXNoZWQgbG9jYWxseSB0byBjb25mb3JtIHRvIHRoZQorY29uZmlndXJhdGlvbiBvZiB0aGUgc3lzdGVtLiAgVGhpcyBpcyBtZXJlbHkgYSB0YWJ1bGF0aW9uIG9mIGV4aXN0aW5nCitwcmFjdGljZSwgYW5kIGRvZXMgbm90IGNvbnN0aXR1dGUgYSByZWNvbW1lbmRhdGlvbi4gIEhvd2V2ZXIsIGlmIHRoZXkKK2V4aXN0LCB0aGV5IHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgdXNlcy4KKworL2Rldi9tb3VzZQltb3VzZSBwb3J0CXN5bWJvbGljCUN1cnJlbnQgbW91c2UgZGV2aWNlCisvZGV2L3RhcGUJdGFwZSBkZXZpY2UJc3ltYm9saWMJQ3VycmVudCB0YXBlIGRldmljZQorL2Rldi9jZHJvbQlDRC1ST00gZGV2aWNlCXN5bWJvbGljCUN1cnJlbnQgQ0QtUk9NIGRldmljZQorL2Rldi9jZHdyaXRlcglDRC13cml0ZXIJc3ltYm9saWMJQ3VycmVudCBDRC13cml0ZXIgZGV2aWNlCisvZGV2L3NjYW5uZXIJc2Nhbm5lcgkJc3ltYm9saWMJQ3VycmVudCBzY2FubmVyIGRldmljZQorL2Rldi9tb2RlbQltb2RlbSBwb3J0CXN5bWJvbGljCUN1cnJlbnQgZGlhbG91dCBkZXZpY2UKKy9kZXYvcm9vdAlyb290IGRldmljZQlzeW1ib2xpYwlDdXJyZW50IHJvb3QgZmlsZXN5c3RlbQorL2Rldi9zd2FwCXN3YXAgZGV2aWNlCXN5bWJvbGljCUN1cnJlbnQgc3dhcCBkZXZpY2UKKworL2Rldi9tb2RlbSBzaG91bGQgbm90IGJlIHVzZWQgZm9yIGEgbW9kZW0gd2hpY2ggc3VwcG9ydHMgZGlhbGluIGFzCit3ZWxsIGFzIGRpYWxvdXQsIGFzIGl0IHRlbmRzIHRvIGNhdXNlIGxvY2sgZmlsZSBwcm9ibGVtcy4gIElmIGl0CitleGlzdHMsIC9kZXYvbW9kZW0gc2hvdWxkIHBvaW50IHRvIHRoZSBhcHByb3ByaWF0ZSBwcmltYXJ5IFRUWSBkZXZpY2UKKyh0aGUgdXNlIG9mIHRoZSBhbHRlcm5hdGUgY2FsbG91dCBkZXZpY2VzIGlzIGRlcHJlY2F0ZWQpLgorCitGb3IgU0NTSSBkZXZpY2VzLCAvZGV2L3RhcGUgYW5kIC9kZXYvY2Ryb20gc2hvdWxkIHBvaW50IHRvIHRoZQorYGBjb29rZWQnJyBkZXZpY2VzICgvZGV2L3N0KiBhbmQgL2Rldi9zciosIHJlc3BlY3RpdmVseSksIHdoZXJlYXMKKy9kZXYvY2R3cml0ZXIgYW5kIC9kZXYvc2Nhbm5lciBzaG91bGQgcG9pbnQgdG8gdGhlIGFwcHJvcHJpYXRlIGdlbmVyaWMKK1NDU0kgZGV2aWNlcyAoL2Rldi9zZyopLgorCisvZGV2L21vdXNlIG1heSBwb2ludCB0byBhIHByaW1hcnkgc2VyaWFsIFRUWSBkZXZpY2UsIGEgaGFyZHdhcmUgbW91c2UKK2RldmljZSwgb3IgYSBzb2NrZXQgZm9yIGEgbW91c2UgZHJpdmVyIHByb2dyYW0gKGUuZy4gL2Rldi9ncG1kYXRhKS4KKworCVNvY2tldHMgYW5kIHBpcGVzCisKK05vbi10cmFuc2llbnQgc29ja2V0cyBhbmQgbmFtZWQgcGlwZXMgbWF5IGV4aXN0IGluIC9kZXYuICBDb21tb24gZW50cmllcyBhcmU6CisKKy9kZXYvcHJpbnRlcglzb2NrZXQJCWxwZCBsb2NhbCBzb2NrZXQKKy9kZXYvbG9nCXNvY2tldAkJc3lzbG9nIGxvY2FsIHNvY2tldAorL2Rldi9ncG1kYXRhCXNvY2tldAkJZ3BtIG1vdXNlIG11bHRpcGxleGVyCisKKwlNb3VudCBwb2ludHMKKworVGhlIGZvbGxvd2luZyBuYW1lcyBhcmUgcmVzZXJ2ZWQgZm9yIG1vdW50aW5nIHNwZWNpYWwgZmlsZXN5c3RlbXMKK3VuZGVyIC9kZXYuICBUaGVzZSBzcGVjaWFsIGZpbGVzeXN0ZW1zIHByb3ZpZGUga2VybmVsIGludGVyZmFjZXMgdGhhdAorY2Fubm90IGJlIHByb3ZpZGVkIHdpdGggc3RhbmRhcmQgZGV2aWNlIG5vZGVzLgorCisvZGV2L3B0cwlkZXZwdHMJCVBUWSBzbGF2ZSBmaWxlc3lzdGVtCisvZGV2L3NobQl0bXBmcwkJUE9TSVggc2hhcmVkIG1lbW9yeSBtYWludGVuYW5jZSBhY2Nlc3MKKworICoqKioJVEVSTUlOQUwgREVWSUNFUworCitUZXJtaW5hbCwgb3IgVFRZIGRldmljZXMgYXJlIGEgc3BlY2lhbCBjbGFzcyBvZiBjaGFyYWN0ZXIgZGV2aWNlcy4gIEEKK3Rlcm1pbmFsIGRldmljZSBpcyBhbnkgZGV2aWNlIHRoYXQgY291bGQgYWN0IGFzIGEgY29udHJvbGxpbmcgdGVybWluYWwKK2ZvciBhIHNlc3Npb247IHRoaXMgaW5jbHVkZXMgdmlydHVhbCBjb25zb2xlcywgc2VyaWFsIHBvcnRzLCBhbmQKK3BzZXVkb3Rlcm1pbmFscyAoUFRZcykuCisKK0FsbCB0ZXJtaW5hbCBkZXZpY2VzIHNoYXJlIGEgY29tbW9uIHNldCBvZiBjYXBhYmlsaXRpZXMga25vd24gYXMgbGluZQorZGlzY2lwbGluZXM7IHRoZXNlIGluY2x1ZGUgdGhlIGNvbW1vbiB0ZXJtaW5hbCBsaW5lIGRpc2NpcGxpbmUgYXMgd2VsbAorYXMgU0xJUCBhbmQgUFBQIG1vZGVzLgorCitBbGwgdGVybWluYWwgZGV2aWNlcyBhcmUgbmFtZWQgc2ltaWxhcmx5OyB0aGlzIHNlY3Rpb24gZXhwbGFpbnMgdGhlCituYW1pbmcgYW5kIHVzZSBvZiB0aGUgdmFyaW91cyB0eXBlcyBvZiBUVFlzLiAgTm90ZSB0aGF0IHRoZSBuYW1pbmcKK2NvbnZlbnRpb25zIGluY2x1ZGUgc2V2ZXJhbCBoaXN0b3JpY2FsIHdhcnRzOyBzb21lIG9mIHRoZXNlIGFyZQorTGludXgtc3BlY2lmaWMsIHNvbWUgd2VyZSBpbmhlcml0ZWQgZnJvbSBvdGhlciBzeXN0ZW1zLCBhbmQgc29tZQorcmVmbGVjdCBMaW51eCBvdXRncm93aW5nIGEgYm9ycm93ZWQgY29udmVudGlvbi4KKworQSBoYXNoIG1hcmsgKCMpIGluIGEgZGV2aWNlIG5hbWUgaXMgdXNlZCBoZXJlIHRvIGluZGljYXRlIGEgZGVjaW1hbAorbnVtYmVyIHdpdGhvdXQgbGVhZGluZyB6ZXJvZXMuCisKKwlWaXJ0dWFsIGNvbnNvbGVzIGFuZCB0aGUgY29uc29sZSBkZXZpY2UKKworVmlydHVhbCBjb25zb2xlcyBhcmUgZnVsbC1zY3JlZW4gdGVybWluYWwgZGlzcGxheXMgb24gdGhlIHN5c3RlbSB2aWRlbworbW9uaXRvci4gIFZpcnR1YWwgY29uc29sZXMgYXJlIG5hbWVkIC9kZXYvdHR5Iywgd2l0aCBudW1iZXJpbmcKK3N0YXJ0aW5nIGF0IC9kZXYvdHR5MTsgL2Rldi90dHkwIGlzIHRoZSBjdXJyZW50IHZpcnR1YWwgY29uc29sZS4KKy9kZXYvdHR5MCBpcyB0aGUgZGV2aWNlIHRoYXQgc2hvdWxkIGJlIHVzZWQgdG8gYWNjZXNzIHRoZSBzeXN0ZW0gdmlkZW8KK2NhcmQgb24gdGhvc2UgYXJjaGl0ZWN0dXJlcyBmb3Igd2hpY2ggdGhlIGZyYW1lIGJ1ZmZlciBkZXZpY2VzCisoL2Rldi9mYiopIGFyZSBub3QgYXBwbGljYWJsZS4JRG8gbm90IHVzZSAvZGV2L2NvbnNvbGUKK2ZvciB0aGlzIHB1cnBvc2UuCisKK1RoZSBjb25zb2xlIGRldmljZSwgL2Rldi9jb25zb2xlLCBpcyB0aGUgZGV2aWNlIHRvIHdoaWNoIHN5c3RlbQorbWVzc2FnZXMgc2hvdWxkIGJlIHNlbnQsIGFuZCBvbiB3aGljaCBsb2dpbnMgc2hvdWxkIGJlIHBlcm1pdHRlZCBpbgorc2luZ2xlLXVzZXIgbW9kZS4gIFN0YXJ0aW5nIHdpdGggTGludXggMi4xLjcxLCAvZGV2L2NvbnNvbGUgaXMgbWFuYWdlZAorYnkgdGhlIGtlcm5lbDsgZm9yIHByZXZpb3VzIHZlcnNpb25zIGl0IHNob3VsZCBiZSBhIHN5bWJvbGljIGxpbmsgdG8KK2VpdGhlciAvZGV2L3R0eTAsIGEgc3BlY2lmaWMgdmlydHVhbCBjb25zb2xlIHN1Y2ggYXMgL2Rldi90dHkxLCBvciB0bworYSBzZXJpYWwgcG9ydCBwcmltYXJ5ICh0dHkqLCBub3QgY3UqKSBkZXZpY2UsIGRlcGVuZGluZyBvbiB0aGUKK2NvbmZpZ3VyYXRpb24gb2YgdGhlIHN5c3RlbS4KKworCVNlcmlhbCBwb3J0cworCitTZXJpYWwgcG9ydHMgYXJlIFJTLTIzMiBzZXJpYWwgcG9ydHMgYW5kIGFueSBkZXZpY2Ugd2hpY2ggc2ltdWxhdGVzCitvbmUsIGVpdGhlciBpbiBoYXJkd2FyZSAoc3VjaCBhcyBpbnRlcm5hbCBtb2RlbXMpIG9yIGluIHNvZnR3YXJlIChzdWNoCithcyB0aGUgSVNETiBkcml2ZXIuKSAgVW5kZXIgTGludXgsIGVhY2ggc2VyaWFsIHBvcnRzIGhhcyB0d28gZGV2aWNlCituYW1lcywgdGhlIHByaW1hcnkgb3IgY2FsbGluIGRldmljZSBhbmQgdGhlIGFsdGVybmF0ZSBvciBjYWxsb3V0IG9uZS4KK0VhY2gga2luZCBvZiBkZXZpY2UgaXMgaW5kaWNhdGVkIGJ5IGEgZGlmZmVyZW50IGxldHRlci4JIEZvciBhbnkKK2xldHRlciBYLCB0aGUgbmFtZXMgb2YgdGhlIGRldmljZXMgYXJlIC9kZXYvdHR5WCMgYW5kIC9kZXYvY3V4IywKK3Jlc3BlY3RpdmVseTsgZm9yIGhpc3RvcmljYWwgcmVhc29ucywgL2Rldi90dHlTIyBhbmQgL2Rldi90dHlDIworY29ycmVzcG9uZCB0byAvZGV2L2N1YSMgYW5kIC9kZXYvY3ViIy4JSW4gdGhlIGZ1dHVyZSwgaXQgc2hvdWxkIGJlCitleHBlY3RlZCB0aGF0IG11bHRpcGxlIGxldHRlcnMgd2lsbCBiZSB1c2VkOyBhbGwgbGV0dGVycyB3aWxsIGJlIHVwcGVyCitjYXNlIGZvciB0aGUgInR0eSIgZGV2aWNlIChlLmcuIC9kZXYvdHR5RFAjKSBhbmQgbG93ZXIgY2FzZSBmb3IgdGhlCisiY3UiIGRldmljZSAoZS5nLiAvZGV2L2N1ZHAjKS4KKworVGhlIG5hbWVzIC9kZXYvdHR5USMgYW5kIC9kZXYvY3VxIyBhcmUgcmVzZXJ2ZWQgZm9yIGxvY2FsIHVzZS4KKworVGhlIGFsdGVybmF0ZSBkZXZpY2VzIHByb3ZpZGUgZm9yIGtlcm5lbC1iYXNlZCBleGNsdXNpb24gYW5kIHNvbWV3aGF0CitkaWZmZXJlbnQgZGVmYXVsdHMgdGhhbiB0aGUgcHJpbWFyeSBkZXZpY2VzLiAgVGhlaXIgbWFpbiBwdXJwb3NlIGlzIHRvCithbGxvdyB0aGUgdXNlIG9mIHNlcmlhbCBwb3J0cyB3aXRoIHByb2dyYW1zIHdpdGggbm8gaW5oZXJlbnQgb3IgYnJva2VuCitzdXBwb3J0IGZvciBzZXJpYWwgcG9ydHMuICBUaGVpciB1c2UgaXMgZGVwcmVjYXRlZCwgYW5kIHRoZXkgbWF5IGJlCityZW1vdmVkIGZyb20gYSBmdXR1cmUgdmVyc2lvbiBvZiBMaW51eC4KKworQXJiaXRyYXRpb24gb2Ygc2VyaWFsIHBvcnRzIGlzIHByb3ZpZGVkIGJ5IHRoZSB1c2Ugb2YgbG9jayBmaWxlcyB3aXRoCit0aGUgbmFtZXMgL3Zhci9sb2NrL0xDSy4udHR5WCMuCSBUaGUgY29udGVudHMgb2YgdGhlIGxvY2sgZmlsZSBzaG91bGQKK2JlIHRoZSBQSUQgb2YgdGhlIGxvY2tpbmcgcHJvY2VzcyBhcyBhbiBBU0NJSSBudW1iZXIuCisKK0l0IGlzIGNvbW1vbiBwcmFjdGljZSB0byBpbnN0YWxsIGxpbmtzIHN1Y2ggYXMgL2Rldi9tb2RlbQord2hpY2ggcG9pbnQgdG8gc2VyaWFsIHBvcnRzLiAgSW4gb3JkZXIgdG8gZW5zdXJlIHByb3BlciBsb2NraW5nIGluIHRoZQorcHJlc2VuY2Ugb2YgdGhlc2UgbGlua3MsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgc29mdHdhcmUgY2hhc2UKK3N5bWxpbmtzIGFuZCBsb2NrIGFsbCBwb3NzaWJsZSBuYW1lczsgYWRkaXRpb25hbGx5LCBpdCBpcyByZWNvbW1lbmRlZAordGhhdCBhIGxvY2sgZmlsZSBiZSBpbnN0YWxsZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBhbHRlcm5hdGUKK2RldmljZS4JIEluIG9yZGVyIHRvIGF2b2lkIGRlYWRsb2NrcywgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGUgbG9ja3MKK2FyZSBhY3F1aXJlZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyLCBhbmQgcmVsZWFzZWQgaW4gdGhlIHJldmVyc2U6CisKKwkxLiBUaGUgc3ltYm9saWMgbGluayBuYW1lLCBpZiBhbnkgKC92YXIvbG9jay9MQ0suLm1vZGVtKQorCTIuIFRoZSAidHR5IiBuYW1lICgvdmFyL2xvY2svTENLLi50dHlTMikKKwkzLiBUaGUgYWx0ZXJuYXRlIGRldmljZSBuYW1lICgvdmFyL2xvY2svTENLLi5jdWEyKQorCitJbiB0aGUgY2FzZSBvZiBuZXN0ZWQgc3ltYm9saWMgbGlua3MsIHRoZSBsb2NrIGZpbGVzIHNob3VsZCBiZQoraW5zdGFsbGVkIGluIHRoZSBvcmRlciB0aGUgc3ltbGlua3MgYXJlIHJlc29sdmVkLgorCitVbmRlciBubyBjaXJjdW1zdGFuY2VzIHNob3VsZCBhbiBhcHBsaWNhdGlvbiBob2xkIGEgbG9jayB3aGlsZSB3YWl0aW5nCitmb3IgYW5vdGhlciB0byBiZSByZWxlYXNlZC4gIEluIGFkZGl0aW9uLCBhcHBsaWNhdGlvbnMgd2hpY2ggYXR0ZW1wdAordG8gY3JlYXRlIGxvY2sgZmlsZXMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGFsdGVybmF0ZSBkZXZpY2UgbmFtZXMKK3Nob3VsZCB0YWtlIGludG8gYWNjb3VudCB0aGUgcG9zc2liaWxpdHkgb2YgYmVpbmcgdXNlZCBvbiBhIG5vbi1zZXJpYWwKK3BvcnQgVFRZLCBmb3Igd2hpY2ggbm8gYWx0ZXJuYXRlIGRldmljZSB3b3VsZCBleGlzdC4KKworCVBzZXVkb3Rlcm1pbmFscyAoUFRZcykKKworUHNldWRvdGVybWluYWxzLCBvciBQVFlzLCBhcmUgdXNlZCB0byBjcmVhdGUgbG9naW4gc2Vzc2lvbnMgb3IgcHJvdmlkZQorb3RoZXIgY2FwYWJpbGl0aWVzIHJlcXVpcmluZyBhIFRUWSBsaW5lIGRpc2NpcGxpbmUgKGluY2x1ZGluZyBTTElQIG9yCitQUFAgY2FwYWJpbGl0eSkgdG8gYXJiaXRyYXJ5IGRhdGEtZ2VuZXJhdGlvbiBwcm9jZXNzZXMuCSBFYWNoIFBUWSBoYXMKK2EgbWFzdGVyIHNpZGUsIG5hbWVkIC9kZXYvcHR5W3AtemEtZV1bMC05YS1mXSwgYW5kIGEgc2xhdmUgc2lkZSwgbmFtZWQKKy9kZXYvdHR5W3AtemEtZV1bMC05YS1mXS4gIFRoZSBrZXJuZWwgYXJiaXRyYXRlcyB0aGUgdXNlIG9mIFBUWXMgYnkKK2FsbG93aW5nIGVhY2ggbWFzdGVyIHNpZGUgdG8gYmUgb3BlbmVkIG9ubHkgb25jZS4KKworT25jZSB0aGUgbWFzdGVyIHNpZGUgaGFzIGJlZW4gb3BlbmVkLCB0aGUgY29ycmVzcG9uZGluZyBzbGF2ZSBkZXZpY2UKK2NhbiBiZSB1c2VkIGluIHRoZSBzYW1lIG1hbm5lciBhcyBhbnkgVFRZIGRldmljZS4gIFRoZSBtYXN0ZXIgYW5kCitzbGF2ZSBkZXZpY2VzIGFyZSBjb25uZWN0ZWQgYnkgdGhlIGtlcm5lbCwgZ2VuZXJhdGluZyB0aGUgZXF1aXZhbGVudAorb2YgYSBiaWRpcmVjdGlvbmFsIHBpcGUgd2l0aCBUVFkgY2FwYWJpbGl0aWVzLgorCitSZWNlbnQgdmVyc2lvbnMgb2YgdGhlIExpbnV4IGtlcm5lbHMgYW5kIEdOVSBsaWJjIGNvbnRhaW4gc3VwcG9ydCBmb3IKK3RoZSBTeXN0ZW0gVi9Vbml4OTggbmFtaW5nIHNjaGVtZSBmb3IgUFRZcywgd2hpY2ggYXNzaWducyBhIGNvbW1vbgorZGV2aWNlLCAvZGV2L3B0bXgsIHRvIGFsbCB0aGUgbWFzdGVycyAob3BlbmluZyBpdCB3aWxsIGF1dG9tYXRpY2FsbHkKK2dpdmUgeW91IGEgcHJldmlvdXNseSB1bmFzc2lnbmVkIFBUWSkgYW5kIGEgc3ViZGlyZWN0b3J5LCAvZGV2L3B0cywKK2ZvciB0aGUgc2xhdmVzOyB0aGUgc2xhdmVzIGFyZSBuYW1lZCB3aXRoIGRlY2ltYWwgaW50ZWdlcnMgKC9kZXYvcHRzLyMKK2luIG91ciBub3RhdGlvbikuICBUaGlzIHJlbW92ZXMgdGhlIHByb2JsZW0gb2YgZXhoYXVzdGluZyB0aGUKK25hbWVzcGFjZSBhbmQgZW5hYmxlcyB0aGUga2VybmVsIHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIHRoZSBkZXZpY2UKK25vZGVzIGZvciB0aGUgc2xhdmVzIG9uIGRlbWFuZCB1c2luZyB0aGUgImRldnB0cyIgZmlsZXN5c3RlbS4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlLzAwLUlOREVYIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlLzAwLUlOREVYCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNDEwMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvMDAtSU5ERVgKQEAgLTAsMCArMSwxMiBAQAorRG9jdW1lbnRhdGlvbiBmb3IgZGV2aWNlIHRyZWVzLCBhIGRhdGEgc3RydWN0dXJlIGJ5IHdoaWNoIGJvb3Rsb2FkZXJzIHBhc3MKK2hhcmR3YXJlIGxheW91dCB0byBMaW51eCBpbiBhIGRldmljZS1pbmRlcGVuZGVudCBtYW5uZXIsIHNpbXBsaWZ5aW5nIGhhcmR3YXJlCitwcm9iaW5nLiAgVGhpcyBzdWJzeXN0ZW0gaXMgbWFpbnRhaW5lZCBieSBHcmFudCBMaWtlbHkKKzxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPiBhbmQgaGFzIGEgbWFpbGluZyBsaXN0IGF0CitodHRwczovL2xpc3RzLm96bGFicy5vcmcvbGlzdGluZm8vZGV2aWNldHJlZS1kaXNjdXNzCisKKzAwLUlOREVYCisJLSB0aGlzIGZpbGUKK2Jvb3Rpbmctd2l0aG91dC1vZi50eHQKKwktIEJvb3RpbmcgTGludXggd2l0aG91dCBPcGVuIEZpcm13YXJlLCBkZXNjcmliZXMgaGlzdG9yeSBhbmQgZm9ybWF0IG9mIGRldmljZSB0cmVlcy4KK3VzYWdlLW1vZGVsLnR4dAorCS0gSG93IExpbnV4IHVzZXMgRFQgYW5kIHdoYXQgRFQgYWltcyB0byBzb2x2ZS4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvQUJJLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9BQkkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNWY4ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvQUJJLnR4dApAQCAtMCwwICsxLDM5IEBACisKKyAgRGV2aWNldHJlZSAoRFQpIEFCSQorCitJLiBSZWdhcmRpbmcgc3RhYmxlIGJpbmRpbmdzL0FCSSwgd2UgcXVvdGUgZnJvbSB0aGUgMjAxMyBBUk0gbWluaS1zdW1taXQKKyAgIHN1bW1hcnkgZG9jdW1lbnQ6CisKKyAgICAgIlRoYXQgc3RpbGwgbGVhdmVzIHRoZSBxdWVzdGlvbiBvZiwgd2hhdCBkb2VzIGEgc3RhYmxlIGJpbmRpbmcgbG9vaworICAgICBsaWtlPyAgQ2VydGFpbmx5IGEgc3RhYmxlIGJpbmRpbmcgbWVhbnMgdGhhdCBhIG5ld2VyIGtlcm5lbCB3aWxsIG5vdAorICAgICBicmVhayBvbiBhbiBvbGRlciBkZXZpY2UgdHJlZSwgYnV0IHRoYXQgZG9lc24ndCBtZWFuIHRoZSBiaW5kaW5nIGlzCisgICAgIGZyb3plbiBmb3IgYWxsIHRpbWUuIEdyYW50IHNhaWQgdGhlcmUgYXJlIHdheXMgdG8gY2hhbmdlIGJpbmRpbmdzIHRoYXQKKyAgICAgZG9uJ3QgcmVzdWx0IGluIGJyZWFrYWdlLiBGb3IgaW5zdGFuY2UsIGlmIGEgbmV3IHByb3BlcnR5IGlzIGFkZGVkLAorICAgICB0aGVuIGRlZmF1bHQgdG8gdGhlIHByZXZpb3VzIGJlaGF2aW91ciBpZiBpdCBpcyBtaXNzaW5nLiBJZiBhIGJpbmRpbmcKKyAgICAgdHJ1bHkgbmVlZHMgYW4gaW5jb21wYXRpYmxlIGNoYW5nZSwgdGhlbiBjaGFuZ2UgdGhlIGNvbXBhdGlibGUgc3RyaW5nCisgICAgIGF0IHRoZSBzYW1lIHRpbWUuICBUaGUgZHJpdmVyIGNhbiBiaW5kIGFnYWluc3QgYm90aCB0aGUgb2xkIGFuZCB0aGUKKyAgICAgbmV3LiBUaGVzZSBndWlkZWxpbmVzIGFyZW4ndCBuZXcsIGJ1dCB0aGV5IGRlc3BlcmF0ZWx5IG5lZWQgdG8gYmUKKyAgICAgZG9jdW1lbnRlZC4iCisKK0lJLiAgR2VuZXJhbCBiaW5kaW5nIHJ1bGVzCisKKyAgMSkgTWFpbnRhaW5lcnMsIGRvbid0IGxldCBwZXJmZWN0IGJlIHRoZSBlbmVteSBvZiBnb29kLiAgRG9uJ3QgaG9sZCB1cCBhCisgICAgIGJpbmRpbmcgYmVjYXVzZSBpdCBpc24ndCBwZXJmZWN0LgorCisgIDIpIFVzZSBzcGVjaWZpYyBjb21wYXRpYmxlIHN0cmluZ3Mgc28gdGhhdCBpZiB3ZSBuZWVkIHRvIGFkZCBhIGZlYXR1cmUgKERNQSkKKyAgICAgaW4gdGhlIGZ1dHVyZSwgd2UgY2FuIGNyZWF0ZSBhIG5ldyBjb21wYXRpYmxlIHN0cmluZy4gIFNlZSBJLgorCisgIDMpIEJpbmRpbmdzIGNhbiBiZSBhdWdtZW50ZWQsIGJ1dCB0aGUgZHJpdmVyIHNob3VsZG4ndCBicmVhayB3aGVuIGdpdmVuCisgICAgIHRoZSBvbGQgYmluZGluZy4gaWUuIGFkZCBhZGRpdGlvbmFsIHByb3BlcnRpZXMsIGJ1dCBkb24ndCBjaGFuZ2UgdGhlCisgICAgIG1lYW5pbmcgb2YgYW4gZXhpc3RpbmcgcHJvcGVydHkuIEZvciBkcml2ZXJzLCBkZWZhdWx0IHRvIHRoZSBvcmlnaW5hbAorICAgICBiZWhhdmlvdXIgd2hlbiBhIG5ld2x5IGFkZGVkIHByb3BlcnR5IGlzIG1pc3NpbmcuCisKKyAgNCkgRG9uJ3Qgc3VibWl0IGJpbmRpbmdzIGZvciBzdGFnaW5nIG9yIHVuc3RhYmxlLiAgVGhhdCB3aWxsIGJlIGRlY2lkZWQgYnkKKyAgICAgdGhlIGRldmljZXRyZWUgbWFpbnRhaW5lcnMgKmFmdGVyKiBkaXNjdXNzaW9uIG9uIHRoZSBtYWlsaW5nbGlzdC4KKworSUlJLiBOb3RlcworCisgIDEpIFRoaXMgZG9jdW1lbnQgaXMgaW50ZW5kZWQgYXMgYSBnZW5lcmFsIGZhbWlsaWFyaXphdGlvbiB3aXRoIHRoZSBwcm9jZXNzIGFzCisgICAgIGRlY2lkZWQgYXQgdGhlIDIwMTMgS2VybmVsIFN1bW1pdC4gIFdoZW4gaW4gZG91YnQsIHRoZSBjdXJyZW50IHdvcmQgb2YgdGhlCisgICAgIGRldmljZXRyZWUgbWFpbnRhaW5lcnMgb3ZlcnJ1bGVzIHRoaXMgZG9jdW1lbnQuICBJbiB0aGF0IHNpdHVhdGlvbiwgYSBwYXRjaAorICAgICB1cGRhdGluZyB0aGlzIGRvY3VtZW50IHdvdWxkIGJlIGFwcHJlY2lhdGVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FyYy9hcmNocy1wY3QudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FyYy9hcmNocy1wY3QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhZTk4YjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJjL2FyY2hzLXBjdC50eHQKQEAgLTAsMCArMSwxNyBAQAorKiBBUkMgSFMgUGVyZm9ybWFuY2UgQ291bnRlcnMKKworVGhlIEFSQyBIUyBjYW4gYmUgY29uZmlndXJlZCB3aXRoIGEgcGlwZWxpbmUgcGVyZm9ybWFuY2UgbW9uaXRvciBmb3IgY291bnRpbmcKK0NQVSBhbmQgY2FjaGUgZXZlbnRzIGxpa2UgY2FjaGUgbWlzc2VzIGFuZCBoaXRzLiBMaWtlIGNvbnZlbnRpb25hbCBQQ1QgdGhlcmUKK2FyZSAxMDArIGhhcmR3YXJlIGNvbmRpdGlvbnMgZHluYW1pY2FsbHkgbWFwcGVkIHRvIHVwdG8gMzIgY291bnRlcnMuCitJdCBhbHNvIHN1cHBvcnRzIG92ZXJmbG93IGludGVycnVwdHMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBjb250YWluCisJInNucHMsYXJjaHMtcGN0IgorCitFeGFtcGxlOgorCitwbXUgeworICAgICAgICBjb21wYXRpYmxlID0gInNucHMsYXJjaHMtcGN0IjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJjL2F4czEwMS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJjL2F4czEwMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDgyOTBkNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcmMvYXhzMTAxLnR4dApAQCAtMCwwICsxLDcgQEAKK1N5bm9wc3lzIERlc2lnbldhcmUgQVJDIFNvZnR3YXJlIERldmVsb3BtZW50IFBsYXRmb3JtcyBEZXZpY2UgVHJlZSBCaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NEUCBNYWluIEJvYXJkIHdpdGggYW4gQVhDMDAxIENQVSBDYXJkIGhvaXN0aW5nIEFSQzcwMCBjb3JlIGluIHNpbGljb24KKworUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgLSBjb21wYXRpYmxlID0gInNucHMsYXhzMTAxIiwgInNucHMsYXJjLXNkcCI7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJjL2F4czEwMy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJjL2F4czEwMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmVlYTg2MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcmMvYXhzMTAzLnR4dApAQCAtMCwwICsxLDggQEAKK1N5bm9wc3lzIERlc2lnbldhcmUgQVJDIFNvZnR3YXJlIERldmVsb3BtZW50IFBsYXRmb3JtcyBEZXZpY2UgVHJlZSBCaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NEUCBNYWluIEJvYXJkIHdpdGggYW4gQVhDMDAzIEZQR0EgQ2FyZCB3aGljaCBjYW4gY29udGFpbiB2YXJpb3VzIGZsYXZvdXJzIG9mCitIUzM4eCBjb3Jlcy4KKworUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgLSBjb21wYXRpYmxlID0gInNucHMsYXhzMTAzIiwgInNucHMsYXJjLXNkcCI7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJjL3BjdC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJjL3BjdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I5NTg4NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcmMvcGN0LnR4dApAQCAtMCwwICsxLDIwIEBACisqIEFSQyBQZXJmb3JtYW5jZSBDb3VudGVycworCitUaGUgQVJDNzAwIGNhbiBiZSBjb25maWd1cmVkIHdpdGggYSBwaXBlbGluZSBwZXJmb3JtYW5jZSBtb25pdG9yIGZvciBjb3VudGluZworQ1BVIGFuZCBjYWNoZSBldmVudHMgbGlrZSBjYWNoZSBtaXNzZXMgYW5kIGhpdHMuIExpa2UgY29udmVudGlvbmFsIFBDVCB0aGVyZQorYXJlIDEwMCsgaGFyZHdhcmUgY29uZGl0aW9ucyBkeW5hbWljYWxseSBtYXBwZWQgdG8gdXB0byAzMiBjb3VudGVycworCitOb3RlIHRoYXQ6CisgKiBUaGUgQVJDIDcwMCBQQ1QgZG9lcyBub3Qgc3VwcG9ydCBpbnRlcnJ1cHRzOyBhbHRob3VnaCBIVyBldmVudHMgbWF5IGJlCisgICBjb3VudGVkLCB0aGUgSFcgZXZlbnRzIHRoZW1zZWx2ZXMgY2Fubm90IHNlcnZlIGFzIGEgdHJpZ2dlciBmb3IgYSBzYW1wbGUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBjb250YWluCisJInNucHMsYXJjNzAwLXBjdCIKKworRXhhbXBsZToKKworcG11IHsKKyAgICAgICAgY29tcGF0aWJsZSA9ICJzbnBzLGFyYzcwMC1wY3QiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYWRhcHRldmEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hZGFwdGV2YS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ4YWY5ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYWRhcHRldmEudHh0CkBAIC0wLDAgKzEsNyBAQAorQWRhcHRldmEgUGxhdGZvcm1zIERldmljZSBUcmVlIEJpbmRpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUGFyYWxsZWxsYSBib2FyZAorCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKyAgICAtIGNvbXBhdGlibGUgPSAiYWRhcHRldmEscGFyYWxsZWxsYSI7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2FsLGFscGluZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2FsLGFscGluZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQwNGE0ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYWwsYWxwaW5lLnR4dApAQCAtMCwwICsxLDg4IEBACitBbm5hcHVybmEgTGFicyBBbHBpbmUgUGxhdGZvcm0gRGV2aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCb2FyZHMgaW4gdGhlIEFscGluZSBmYW1pbHkgc2hhbGwgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisKKyogUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6Citjb21wYXRpYmxlOiBtdXN0IGNvbnRhaW4gImFsLGFscGluZSIKKworKiBFeGFtcGxlOgorCisvIHsKKwltb2RlbCA9ICJBbm5hcHVybmEgTGFicyBBbHBpbmUgRGV2IEJvYXJkIjsKKwljb21wYXRpYmxlID0gImFsLGFscGluZSI7CisKKwkuLi4KK30KKworKiBDUFUgbm9kZToKKworVGhlIEFscGluZSBwbGF0Zm9ybSBpbmNsdWRlcyBjb3J0ZXgtYTE1IGNvcmVzLgorZW5hYmxlLW1ldGhvZDogbXVzdCBiZSAiYWwsYWxwaW5lLXNtcCIgdG8gYWxsb3cgc21wICBbMV0KKworRXhhbXBsZToKKworY3B1cyB7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47CisJZW5hYmxlLW1ldGhvZCA9ICJhbCxhbHBpbmUtc21wIjsKKworCWNwdUAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWExNSI7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCXJlZyA9IDwwPjsKKwl9OworCisJY3B1QDEgeworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTE1IjsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJcmVnID0gPDE+OworCX07CisKKwljcHVAMiB7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hMTUiOworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQlyZWcgPSA8Mj47CisJfTsKKworCWNwdUAzIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWExNSI7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCXJlZyA9IDwzPjsKKwl9OworfTsKKworCisqIEFscGluZSBDUFUgcmVzdW1lIHJlZ2lzdGVycworCitUaGUgQ1BVIHJlc3VtZSByZWdpc3RlciBhcmUgdXNlZCB0byBkZWZpbmUgcmVxdWlyZWQgcmVzdW1lIGFkZHJlc3MgYWZ0ZXIKK3Jlc2V0LgorCitQcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGNvbnRhaW4gImFsLGFscGluZS1jcHUtcmVzdW1lIi4KKy0gcmVnIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorCitFeGFtcGxlOgorCitjcHVfcmVzdW1lIHsKKwljb21wYXRpYmxlID0gImFsLGFscGluZS1jcHUtcmVzdW1lIjsKKwlyZWcgPSA8MHhmYmZmNWVkMCAweDMwPjsKK307CisKKyogQWxwaW5lIFN5c3RlbS1GYWJyaWMgU2VydmljZSBSZWdpc3RlcnMKKworVGhlIFN5c3RlbS1GYWJyaWMgU2VydmljZSBSZWdpc3RlcnMgYWxsb3cgdmFyaW91cyBvcGVyYXRpb24gb24gQ1BVIGFuZAorc3lzdGVtIGZhYnJpYywgbGlrZSBwb3dlcmluZyBDUFVzIG9mZi4KKworUHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBjb250YWluICJhbCxhbHBpbmUtc3lzZmFicmljLXNlcnZpY2UiIGFuZCAic3lzY29uIi4KKy0gcmVnIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorCitFeGFtcGxlOgorCituYl9zZXJ2aWNlIHsKKyAgICAgICAgY29tcGF0aWJsZSA9ICJhbCxhbHBpbmUtc3lzZmFicmljLXNlcnZpY2UiLCAic3lzY29uIjsKKyAgICAgICAgcmVnID0gPDB4ZmIwNzAwMDAgMHgxMDAwMD47Cit9OworCitbMV0gYXJtL2NwdS1lbmFibGUtbWV0aG9kL2FsLGFscGluZS1zbXAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYWx0ZXJhLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYWx0ZXJhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTg3MzVhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hbHRlcmEudHh0CkBAIC0wLDAgKzEsMTQgQEAKK0FsdGVyYSdzIFNvQ0ZQR0EgcGxhdGZvcm0gZGV2aWNlIHRyZWUgYmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCb2FyZHMgd2l0aCBDeWNsb25lIDUgU29DOgorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6Citjb21wYXRpYmxlID0gImFsdHIsc29jZnBnYS1jeWNsb25lNSIsICJhbHRyLHNvY2ZwZ2EiOworCitCb2FyZHMgd2l0aCBBcnJpYSA1IFNvQzoKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorY29tcGF0aWJsZSA9ICJhbHRyLHNvY2ZwZ2EtYXJyaWE1IiwgImFsdHIsc29jZnBnYSI7CisKK0JvYXJkcyB3aXRoIEFycmlhIDEwIFNvQzoKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorY29tcGF0aWJsZSA9ICJhbHRyLHNvY2ZwZ2EtYXJyaWExMCIsICJhbHRyLHNvY2ZwZ2EiOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hbHRlcmEvc29jZnBnYS1jbGstbWFuYWdlci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2FsdGVyYS9zb2NmcGdhLWNsay1tYW5hZ2VyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzI4ZjFkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hbHRlcmEvc29jZnBnYS1jbGstbWFuYWdlci50eHQKQEAgLTAsMCArMSwxMSBAQAorQWx0ZXJhIFNPQ0ZQR0EgQ2xvY2sgTWFuYWdlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogImFsdHIsY2xrLW1nciIKKy0gcmVnIDogU2hvdWxkIGNvbnRhaW4gYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggZm9yIENsb2NrIE1hbmFnZXIKKworRXhhbXBsZToKKwkgY2xrbWdyQGZmZDA0MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhbHRyLGNsay1tZ3IiOworCQlyZWcgPSA8MHhmZmQwNDAwMCAweDEwMDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2FsdGVyYS9zb2NmcGdhLXNkcmFtLWNvbnRyb2xsZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hbHRlcmEvc29jZnBnYS1zZHJhbS1jb250cm9sbGVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43N2NhNjM1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hbHRlcmEvc29jZnBnYS1zZHJhbS1jb250cm9sbGVyLnR4dApAQCAtMCwwICsxLDEyIEBACitBbHRlcmEgU09DRlBHQSBTRFJBTSBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgY29udGFpbiAiYWx0cixzZHItY3RsIiBhbmQgInN5c2NvbiIuCisgIHN5c2NvbiBpcyByZXF1aXJlZCBieSB0aGUgQWx0ZXJhIFNPQ0ZQR0EgU0RSQU0gRURBQy4KKy0gcmVnIDogU2hvdWxkIGNvbnRhaW4gMSByZWdpc3RlciByYW5nZSAoYWRkcmVzcyBhbmQgbGVuZ3RoKQorCitFeGFtcGxlOgorCXNkcjogc2RyQGZmYzI1MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhbHRyLHNkci1jdGwiLCAic3lzY29uIjsKKwkJcmVnID0gPDB4ZmZjMjUwMDAgMHgxMDAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hbHRlcmEvc29jZnBnYS1zZHJhbS1lZGFjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYWx0ZXJhL3NvY2ZwZ2Etc2RyYW0tZWRhYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVhZDBmZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYWx0ZXJhL3NvY2ZwZ2Etc2RyYW0tZWRhYy50eHQKQEAgLTAsMCArMSwxNSBAQAorQWx0ZXJhIFNPQ0ZQR0EgU0RSQU0gRXJyb3IgRGV0ZWN0aW9uICYgQ29ycmVjdGlvbiBbRURBQ10KK1RoZSBFREFDIGFjY2Vzc2VzIGEgcmFuZ2Ugb2YgcmVnaXN0ZXJzIGluIHRoZSBTRFJBTSBjb250cm9sbGVyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hvdWxkIGNvbnRhaW4gImFsdHIsc2RyYW0tZWRhYyIgb3IgImFsdHIsc2RyYW0tZWRhYy1hMTAiCistIGFsdHIsc2RyLXN5c2NvbiA6IHBoYW5kbGUgb2YgdGhlIHNkciBtb2R1bGUKKy0gaW50ZXJydXB0cyA6IFNob3VsZCBjb250YWluIHRoZSBTRFJBTSBFQ0MgSVJRIGluIHRoZQorCWFwcHJvcHJpYXRlIGZvcm1hdCBmb3IgdGhlIElSUSBjb250cm9sbGVyLgorCitFeGFtcGxlOgorCXNkcmFtZWRhYyB7CisJCWNvbXBhdGlibGUgPSAiYWx0cixzZHJhbS1lZGFjIjsKKwkJYWx0cixzZHItc3lzY29uID0gPCZzZHI+OworCQlpbnRlcnJ1cHRzID0gPDAgMzkgND47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYWx0ZXJhL3NvY2ZwZ2Etc3lzdGVtLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYWx0ZXJhL3NvY2ZwZ2Etc3lzdGVtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGQwNGEwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hbHRlcmEvc29jZnBnYS1zeXN0ZW0udHh0CkBAIC0wLDAgKzEsMTMgQEAKK0FsdGVyYSBTT0NGUEdBIFN5c3RlbSBNYW5hZ2VyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAiYWx0cixzeXMtbWdyIgorLSByZWcgOiBTaG91bGQgY29udGFpbiAxIHJlZ2lzdGVyIHJhbmdlcyhhZGRyZXNzIGFuZCBsZW5ndGgpCistIGNwdTEtc3RhcnQtYWRkciA6IENQVTEgc3RhcnQgYWRkcmVzcyBpbiBoZXguCisKK0V4YW1wbGU6CisJIHN5c21nckBmZmQwODAwMCB7CisJCWNvbXBhdGlibGUgPSAiYWx0cixzeXMtbWdyIjsKKwkJcmVnID0gPDB4ZmZkMDgwMDAgMHgxMDAwPjsKKwkJY3B1MS1zdGFydC1hZGRyID0gPDB4ZmZkMDgwYzQ+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2FtbG9naWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hbWxvZ2ljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGZlZTIwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hbWxvZ2ljLnR4dApAQCAtMCwwICsxLDIwIEBACitBbWxvZ2ljIE1lc29uWCBkZXZpY2UgdHJlZSBiaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCb2FyZHMgd2l0aCB0aGUgQW1sb2dpYyBNZXNvbjYgU29DIHNoYWxsIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorICBSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydHk6CisgICAgY29tcGF0aWJsZTogImFtbG9naWMsbWVzb242IgorCitCb2FyZHMgd2l0aCB0aGUgQW1sb2dpYyBNZXNvbjggU29DIHNoYWxsIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorICBSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydHk6CisgICAgY29tcGF0aWJsZTogImFtbG9naWMsbWVzb244IjsKKworQm9hcmRzIHdpdGggdGhlIEFtbG9naWMgTWVzb244YiBTb0Mgc2hhbGwgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisgIFJlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0eToKKyAgICBjb21wYXRpYmxlOiAiYW1sb2dpYyxtZXNvbjhiIjsKKworQm9hcmQgY29tcGF0aWJsZSB2YWx1ZXM6CisgIC0gImdlbmlhdGVjaCxhdHYxMjAwIiAoTWVzb242KQorICAtICJtaW5peCxuZW8teDgiIChNZXNvbjgpCisgIC0gInRyb25meSxteHEiIChNZXNvbjhiKQorICAtICJoYXJka2VybmVsLG9kcm9pZC1jMSIgKE1lc29uOGIpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2FwbS9zY3UudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hcG0vc2N1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDViZTA2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hcG0vc2N1LnR4dApAQCAtMCwwICsxLDE3IEBACitBUE0gWC1HRU5FIFNvQyBzZXJpZXMgU0NVIFJlZ2lzdGVycworCitUaGlzIHN5c3RlbSBjbG9jayB1bml0IGNvbnRhaW4gdmFyaW91cyByZWdpc3RlciB0aGF0IGNvbnRyb2wgYmxvY2sgcmVzZXRzLAorY2xvY2sgZW5hYmxlL2Rpc2FibGVzLCBjbG9jayBkaXZpc29ycyBhbmQgb3RoZXIgZGVlcHNsZWVwIHJlZ2lzdGVycy4KKworUHJvcGVydGllczoKKyAtIGNvbXBhdGlibGUgOiBzaG91bGQgY29udGFpbiB0d28gdmFsdWVzLiBGaXJzdCB2YWx1ZSBtdXN0IGJlOgorCQkgICAtICJhcG0seGdlbmUtc2N1IgorCQlzZWNvbmQgdmFsdWUgbXVzdCBiZSBhbHdheXMgInN5c2NvbiIuCisKKyAtIHJlZyA6IG9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQuCisKK0V4YW1wbGUgOgorCXNjdTogc3lzdGVtLWNsay1jb250cm9sbGVyQDE3MDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcG0seGdlbmUtc2N1Iiwic3lzY29uIjsKKwkJcmVnID0gPDB4MCAweDE3MDAwMDAwIDB4MCAweDQwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYXJjaF90aW1lci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2FyY2hfdGltZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NzQxMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2FyY2hfdGltZXIudHh0CkBAIC0wLDAgKzEsOTYgQEAKKyogQVJNIGFyY2hpdGVjdGVkIHRpbWVyCisKK0FSTSBjb3JlcyBtYXkgaGF2ZSBhIHBlci1jb3JlIGFyY2hpdGVjdGVkIHRpbWVyLCB3aGljaCBwcm92aWRlcyBwZXItY3B1IHRpbWVycywKK29yIGEgbWVtb3J5IG1hcHBlZCBhcmNoaXRlY3RlZCB0aW1lciwgd2hpY2ggcHJvdmlkZXMgdXAgdG8gOCBmcmFtZXMgd2l0aCBhCitwaHlzaWNhbCBhbmQgb3B0aW9uYWwgdmlydHVhbCB0aW1lciBwZXIgZnJhbWUuCisKK1RoZSBwZXItY29yZSBhcmNoaXRlY3RlZCB0aW1lciBpcyBhdHRhY2hlZCB0byBhIEdJQyB0byBkZWxpdmVyIGl0cworcGVyLXByb2Nlc3NvciBpbnRlcnJ1cHRzIHZpYSBQUElzLiBUaGUgbWVtb3J5IG1hcHBlZCB0aW1lciBpcyBhdHRhY2hlZCB0byBhIEdJQwordG8gZGVsaXZlciBpdHMgaW50ZXJydXB0cyB2aWEgU1BJcy4KKworKiogQ1AxNSBUaW1lciBub2RlIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBhdCBsZWFzdCBjb250YWluIG9uZSBvZgorCSJhcm0sYXJtdjctdGltZXIiCisJImFybSxhcm12OC10aW1lciIKKworLSBpbnRlcnJ1cHRzIDogSW50ZXJydXB0IGxpc3QgZm9yIHNlY3VyZSwgbm9uLXNlY3VyZSwgdmlydHVhbCBhbmQKKyAgaHlwZXJ2aXNvciB0aW1lcnMsIGluIHRoYXQgb3JkZXIuCisKKy0gY2xvY2stZnJlcXVlbmN5IDogVGhlIGZyZXF1ZW5jeSBvZiB0aGUgbWFpbiBjb3VudGVyLCBpbiBIei4gU2hvdWxkIGJlIHByZXNlbnQKKyAgb25seSB3aGVyZSBuZWNlc3NhcnkgdG8gd29yayBhcm91bmQgYnJva2VuIGZpcm13YXJlIHdoaWNoIGRvZXMgbm90IGNvbmZpZ3VyZQorICBDTlRGUlEgb24gYWxsIENQVXMgdG8gYSB1bmlmb3JtIGNvcnJlY3QgdmFsdWUuIFVzZSBvZiB0aGlzIHByb3BlcnR5IGlzCisgIHN0cm9uZ2x5IGRpc2NvdXJhZ2VkOyBmaXggeW91ciBmaXJtd2FyZSB1bmxlc3MgYWJzb2x1dGVseSBpbXBvc3NpYmxlLgorCistIGFsd2F5cy1vbiA6IGEgYm9vbGVhbiBwcm9wZXJ0eS4gSWYgcHJlc2VudCwgdGhlIHRpbWVyIGlzIHBvd2VyZWQgdGhyb3VnaCBhbgorICBhbHdheXMtb24gcG93ZXIgZG9tYWluLCB0aGVyZWZvcmUgaXQgbmV2ZXIgbG9zZXMgY29udGV4dC4KKworKiogT3B0aW9uYWwgcHJvcGVydGllczoKKworLSBhcm0sY3B1LXJlZ2lzdGVycy1ub3QtZnctY29uZmlndXJlZCA6IEZpcm13YXJlIGRvZXMgbm90IGluaXRpYWxpemUKKyAgYW55IG9mIHRoZSBnZW5lcmljIHRpbWVyIENQVSByZWdpc3RlcnMsIHdoaWNoIGNvbnRhaW4gdGhlaXIKKyAgYXJjaGl0ZWN0dXJhbGx5LWRlZmluZWQgcmVzZXQgdmFsdWVzLiBPbmx5IHN1cHBvcnRlZCBmb3IgMzItYml0CisgIHN5c3RlbXMgd2hpY2ggZm9sbG93IHRoZSBBUk12NyBhcmNoaXRlY3RlZCByZXNldCB2YWx1ZXMuCisKKworRXhhbXBsZToKKworCXRpbWVyIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWExNS10aW1lciIsCisJCQkgICAgICJhcm0sYXJtdjctdGltZXIiOworCQlpbnRlcnJ1cHRzID0gPDEgMTMgMHhmMDg+LAorCQkJICAgICA8MSAxNCAweGYwOD4sCisJCQkgICAgIDwxIDExIDB4ZjA4PiwKKwkJCSAgICAgPDEgMTAgMHhmMDg+OworCQljbG9jay1mcmVxdWVuY3kgPSA8MTAwMDAwMDAwPjsKKwl9OworCisqKiBNZW1vcnkgbWFwcGVkIHRpbWVyIG5vZGUgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogU2hvdWxkIGF0IGxlYXN0IGNvbnRhaW4gImFybSxhcm12Ny10aW1lci1tZW0iLgorCistIGNsb2NrLWZyZXF1ZW5jeSA6IFRoZSBmcmVxdWVuY3kgb2YgdGhlIG1haW4gY291bnRlciwgaW4gSHouIFNob3VsZCBiZSBwcmVzZW50CisgIG9ubHkgd2hlbiBmaXJtd2FyZSBoYXMgbm90IGNvbmZpZ3VyZWQgdGhlIE1NSU8gQ05URlJRIHJlZ2lzdGVycy4KKworLSByZWcgOiBUaGUgY29udHJvbCBmcmFtZSBiYXNlIGFkZHJlc3MuCisKK05vdGUgdGhhdCAjYWRkcmVzcy1jZWxscywgI3NpemUtY2VsbHMsIGFuZCByYW5nZXMgc2hhbGwgYmUgcHJlc2VudCB0byBlbnN1cmUKK3RoZSBDUFUgY2FuIGFkZHJlc3MgYSBmcmFtZSdzIHJlZ2lzdGVycy4KKworQSB0aW1lciBub2RlIGhhcyB1cCB0byA4IGZyYW1lIHN1Yi1ub2RlcywgZWFjaCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKKworLSBmcmFtZS1udW1iZXI6IDAgdG8gNy4KKworLSBpbnRlcnJ1cHRzIDogSW50ZXJydXB0IGxpc3QgZm9yIHBoeXNpY2FsIGFuZCB2aXJ0dWFsIHRpbWVycyBpbiB0aGF0IG9yZGVyLgorICBUaGUgdmlydHVhbCB0aW1lciBpbnRlcnJ1cHQgaXMgb3B0aW9uYWwuCisKKy0gcmVnIDogVGhlIGZpcnN0IGFuZCBzZWNvbmQgdmlldyBiYXNlIGFkZHJlc3NlcyBpbiB0aGF0IG9yZGVyLiBUaGUgc2Vjb25kIHZpZXcKKyAgYmFzZSBhZGRyZXNzIGlzIG9wdGlvbmFsLgorCistIHN0YXR1cyA6ICJkaXNhYmxlZCIgaW5kaWNhdGVzIHRoZSBmcmFtZSBpcyBub3QgYXZhaWxhYmxlIGZvciB1c2UuIE9wdGlvbmFsLgorCitFeGFtcGxlOgorCisJdGltZXJAZjAwMDAwMDAgeworCQljb21wYXRpYmxlID0gImFybSxhcm12Ny10aW1lci1tZW0iOworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCXJhbmdlczsKKwkJcmVnID0gPDB4ZjAwMDAwMDAgMHgxMDAwPjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDUwMDAwMDAwPjsKKworCQlmcmFtZUBmMDAwMTAwMCB7CisJCQlmcmFtZS1udW1iZXIgPSA8MD4KKwkJCWludGVycnVwdHMgPSA8MCAxMyAweDg+LAorCQkJCSAgICAgPDAgMTQgMHg4PjsKKwkJCXJlZyA9IDwweGYwMDAxMDAwIDB4MTAwMD4sCisJCQkgICAgICA8MHhmMDAwMjAwMCAweDEwMDA+OworCQl9OworCisJCWZyYW1lQGYwMDAzMDAwIHsKKwkJCWZyYW1lLW51bWJlciA9IDwxPgorCQkJaW50ZXJydXB0cyA9IDwwIDE1IDB4OD47CisJCQlyZWcgPSA8MHhmMDAwMzAwMCAweDEwMDA+OworCQkJc3RhdHVzID0gImRpc2FibGVkIjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hcm0sc2NwaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2FybSxzY3BpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjMwMmRlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hcm0sc2NwaS50eHQKQEAgLTAsMCArMSwxODggQEAKK1N5c3RlbSBDb250cm9sIGFuZCBQb3dlciBJbnRlcmZhY2UgKFNDUEkpIE1lc3NhZ2UgUHJvdG9jb2wKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRmlybXdhcmUgaW1wbGVtZW50aW5nIHRoZSBTQ1BJIGRlc2NyaWJlZCBpbiBBUk0gZG9jdW1lbnQgbnVtYmVyIEFSTSBEVUkgMDkyMkIKKygiQVJNIENvbXB1dGUgU3Vic3lzdGVtIFNDUDogTWVzc2FnZSBJbnRlcmZhY2UgUHJvdG9jb2xzIilbMF0gY2FuIGJlIHVzZWQKK2J5IExpbnV4IHRvIGluaXRpYXRlIHZhcmlvdXMgc3lzdGVtIGNvbnRyb2wgYW5kIHBvd2VyIG9wZXJhdGlvbnMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiYXJtLHNjcGkiCistIG1ib3hlczogTGlzdCBvZiBwaGFuZGxlIGFuZCBtYWlsYm94IGNoYW5uZWwgc3BlY2lmaWVycworCSAgQWxsIHRoZSBjaGFubmVscyByZXNlcnZlZCBieSByZW1vdGUgU0NQIGZpcm13YXJlIGZvciB1c2UgYnkKKwkgIFNDUEkgbWVzc2FnZSBwcm90b2NvbCBzaG91bGQgYmUgc3BlY2lmaWVkIGluIGFueSBvcmRlcgorLSBzaG1lbSA6IExpc3Qgb2YgcGhhbmRsZSBwb2ludGluZyB0byB0aGUgc2hhcmVkIG1lbW9yeShTSE0pIGFyZWEgYmV0d2VlbiB0aGUKKwkgIHByb2Nlc3NvcnMgdXNpbmcgdGhlc2UgbWFpbGJveGVzIGZvciBJUEMsIG9uZSBmb3IgZWFjaCBtYWlsYm94CisJICBTSE0gY2FuIGJlIGFueSBtZW1vcnkgcmVzZXJ2ZWQgZm9yIHRoZSBwdXJwb3NlIG9mIHRoaXMgY29tbXVuaWNhdGlvbgorCSAgYmV0d2VlbiB0aGUgcHJvY2Vzc29ycy4KKworU2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tYWlsYm94L21haWxib3gudHh0Citmb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSBnZW5lcmljIG1haWxib3ggY29udHJvbGxlciBhbmQKK2NsaWVudCBkcml2ZXIgYmluZGluZ3MuCisKK0Nsb2NrIGJpbmRpbmdzIGZvciB0aGUgY2xvY2tzIGJhc2VkIG9uIFNDUEkgTWVzc2FnZSBQcm90b2NvbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgYmluZGluZyB1c2VzIHRoZSBjb21tb24gY2xvY2sgYmluZGluZ1sxXS4KKworQ29udGFpbmVyIE5vZGUKKz09PT09PT09PT09PT09CitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJhcm0sc2NwaS1jbG9ja3MiCisJICAgICAgIEFsbCB0aGUgY2xvY2tzIHByb3ZpZGVkIGJ5IFNDUCBmaXJtd2FyZSB2aWEgU0NQSSBtZXNzYWdlCisJICAgICAgIHByb3RvY29sIG11Y2ggYmUgbGlzdGVkIGFzIHN1Yi1ub2RlcyB1bmRlciB0aGlzIG5vZGUuCisKK1N1Yi1ub2RlcworPT09PT09PT09CitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hhbGwgaW5jbHVkZSBvbmUgb2YgdGhlIGZvbGxvd2luZworCSJhcm0sc2NwaS1kdmZzLWNsb2NrcyIgLSBhbGwgdGhlIGNsb2NrcyB0aGF0IGFyZSB2YXJpYWJsZSBhbmQgaW5kZXggYmFzZWQuCisJCVRoZXNlIGNsb2NrcyBkb24ndCBwcm92aWRlIGFuIGVudGlyZSByYW5nZSBvZiB2YWx1ZXMgYmV0d2VlbiB0aGUKKwkJbGltaXRzIGJ1dCBvbmx5IGRpc2NyZXRlIHBvaW50cyB3aXRoaW4gdGhlIHJhbmdlLiBUaGUgZmlybXdhcmUKKwkJcHJvdmlkZXMgdGhlIG1hcHBpbmcgZm9yIGVhY2ggc3VjaCBvcGVyYXRpbmcgZnJlcXVlbmN5IGFuZCB0aGUKKwkJaW5kZXggYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGUgZmlybXdhcmUgYWxzbyBtYW5hZ2VzIHRoZQorCQl2b2x0YWdlIHNjYWxpbmcgYXBwcm9wcmlhdGVseSB3aXRoIHRoZSBjbG9jayBzY2FsaW5nLgorCSJhcm0sc2NwaS12YXJpYWJsZS1jbG9ja3MiIC0gYWxsIHRoZSBjbG9ja3MgdGhhdCBhcmUgdmFyaWFibGUgYW5kIHByb3ZpZGUgZnVsbAorCQlyYW5nZSB3aXRoaW4gdGhlIHNwZWNpZmllZCByYW5nZS4gVGhlIGZpcm13YXJlIHByb3ZpZGVzIHRoZQorCQlyYW5nZSBvZiB2YWx1ZXMgd2l0aGluIGEgc3BlY2lmaWVkIHJhbmdlLgorCitPdGhlciByZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBhbGwgY2xvY2tzKGFsbCBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nKToKKy0gI2Nsb2NrLWNlbGxzIDogU2hvdWxkIGJlIDEuIENvbnRhaW5zIHRoZSBDbG9jayBJRCB2YWx1ZSB1c2VkIGJ5IFNDUEkgY29tbWFuZHMuCistIGNsb2NrLW91dHB1dC1uYW1lcyA6IHNoYWxsIGJlIHRoZSBjb3JyZXNwb25kaW5nIG5hbWVzIG9mIHRoZSBvdXRwdXRzLgorLSBjbG9jay1pbmRpY2VzOiBUaGUgaWRlbnRpZnlpbmcgbnVtYmVyIGZvciB0aGUgY2xvY2tzKGkuZS5jbG9ja19pZCkgaW4gdGhlCisJbm9kZS4gSXQgY2FuIGJlIG5vbiBsaW5lYXIgYW5kIGhlbmNlIHByb3ZpZGUgdGhlIG1hcHBpbmcgb2YgaWRlbnRpZmllcnMKKwlpbnRvIHRoZSBjbG9jay1vdXRwdXQtbmFtZXMgYXJyYXkuCisKK1NSQU0gYW5kIFNoYXJlZCBNZW1vcnkgZm9yIFNDUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSBzbWFsbCBhcmVhIG9mIFNSQU0gaXMgcmVzZXJ2ZWQgZm9yIFNDUEkgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIGFwcGxpY2F0aW9uCitwcm9jZXNzb3JzIGFuZCBTQ1AuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImFybSxqdW5vLXNyYW0tbnMiIGZvciBOb24tc2VjdXJlIFNSQU0gb24gSnVubworCitUaGUgcmVzdCBvZiB0aGUgcHJvcGVydGllcyBzaG91bGQgZm9sbG93IHRoZSBnZW5lcmljIG1taW8tc3JhbSBkZXNjcmlwdGlvbgorZm91bmQgaW4gLi4vLi4vbWlzYy9zeXNyYW0udHh0CisKK0VhY2ggc3ViLW5vZGUgcmVwcmVzZW50cyB0aGUgcmVzZXJ2ZWQgYXJlYSBmb3IgU0NQSS4KKworUmVxdWlyZWQgc3ViLW5vZGUgcHJvcGVydGllczoKKy0gcmVnIDogVGhlIGJhc2Ugb2Zmc2V0IGFuZCBzaXplIG9mIHRoZSByZXNlcnZlZCBhcmVhIHdpdGggdGhlIFNSQU0KKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiYXJtLGp1bm8tc2NwLXNobWVtIiBmb3IgTm9uLXNlY3VyZSBTUkFNIGJhc2VkCisJICAgICAgIHNoYXJlZCBtZW1vcnkgb24gSnVubyBwbGF0Zm9ybXMKKworU2Vuc29yIGJpbmRpbmdzIGZvciB0aGUgc2Vuc29ycyBiYXNlZCBvbiBTQ1BJIE1lc3NhZ2UgUHJvdG9jb2wKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTQ1BJIHByb3ZpZGVzIGFuIEFQSSB0byBhY2Nlc3MgdGhlIHZhcmlvdXMgc2Vuc29ycyBvbiB0aGUgU29DLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJhcm0sc2NwaS1zZW5zb3JzIi4KKy0gI3RoZXJtYWwtc2Vuc29yLWNlbGxzOiBzaG91bGQgYmUgc2V0IHRvIDEuIFRoaXMgcHJvcGVydHkgZm9sbG93cyB0aGUKKwkJCSB0aGVybWFsIGRldmljZSB0cmVlIGJpbmRpbmdzWzJdLgorCisJCQkgVmFsaWQgY2VsbCB2YWx1ZXMgYXJlIHJhdyBpZGVudGlmaWVycyAoU2Vuc29yCisJCQkgSUQpIGFzIHVzZWQgYnkgdGhlIGZpcm13YXJlLiBSZWZlciB0bworCQkJIHBsYXRmb3JtIGRvY3VtZW50YXRpb24gZm9yIHlvdXIKKwkJCSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIElEcyB0byB1c2UuIEZvciBKdW5vCisJCQkgUjAgYW5kIEp1bm8gUjEgcmVmZXIgdG8gWzNdLgorCitbMF0gaHR0cDovL2luZm9jZW50ZXIuYXJtLmNvbS9oZWxwL3RvcGljL2NvbS5hcm0uZG9jLmR1aTA5MjJiL2luZGV4Lmh0bWwKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CitbMl0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RoZXJtYWwvdGhlcm1hbC50eHQKK1szXSBodHRwOi8vaW5mb2NlbnRlci5hcm0uY29tL2hlbHAvaW5kZXguanNwP3RvcGljPS9jb20uYXJtLmRvYy5kdWkwOTIyYi9hcGFzMDNzMjIuaHRtbAorCitFeGFtcGxlOgorCitzcmFtOiBzcmFtQDUwMDAwMDAwIHsKKwljb21wYXRpYmxlID0gImFybSxqdW5vLXNyYW0tbnMiLCAibW1pby1zcmFtIjsKKwlyZWcgPSA8MHgwIDB4NTAwMDAwMDAgMHgwIDB4MTAwMDA+OworCisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MT47CisJcmFuZ2VzID0gPDAgMHgwIDB4NTAwMDAwMDAgMHgxMDAwMD47CisKKwljcHVfc2NwX2xwcmk6IHNjcC1zaG1lbUAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0sanVuby1zY3Atc2htZW0iOworCQlyZWcgPSA8MHgwIDB4MjAwPjsKKwl9OworCisJY3B1X3NjcF9ocHJpOiBzY3Atc2htZW1AMjAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0sanVuby1zY3Atc2htZW0iOworCQlyZWcgPSA8MHgyMDAgMHgyMDA+OworCX07Cit9OworCittYWlsYm94OiBtYWlsYm94MEA0MDAwMDAwMCB7CisJLi4uLgorCSNtYm94LWNlbGxzID0gPDE+OworfTsKKworc2NwaV9wcm90b2NvbDogc2NwaUAyZTAwMDAwMCB7CisJY29tcGF0aWJsZSA9ICJhcm0sc2NwaSI7CisJbWJveGVzID0gPCZtYWlsYm94IDAgJm1haWxib3ggMT47CisJc2htZW0gPSA8JmNwdV9zY3BfbHByaSAmY3B1X3NjcF9ocHJpPjsKKworCWNsb2NrcyB7CisJCWNvbXBhdGlibGUgPSAiYXJtLHNjcGktY2xvY2tzIjsKKworCQlzY3BpX2R2ZnM6IHNjcGlfY2xvY2tzQDAgeworCQkJY29tcGF0aWJsZSA9ICJhcm0sc2NwaS1kdmZzLWNsb2NrcyI7CisJCQkjY2xvY2stY2VsbHMgPSA8MT47CisJCQljbG9jay1pbmRpY2VzID0gPDA+LCA8MT4sIDwyPjsKKwkJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJhdGxjbGsiLCAiYXBsY2xrIiwiZ3B1Y2xrIjsKKwkJfTsKKwkJc2NwaV9jbGs6IHNjcGlfY2xvY2tzQDMgeworCQkJY29tcGF0aWJsZSA9ICJhcm0sc2NwaS12YXJpYWJsZS1jbG9ja3MiOworCQkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQkJY2xvY2staW5kaWNlcyA9IDwzPiwgPDQ+OworCQkJY2xvY2stb3V0cHV0LW5hbWVzID0gInB4bGNsazAiLCAicHhsY2xrMSI7CisJCX07CisJfTsKKworCXNjcGlfc2Vuc29yczA6IHNlbnNvcnMgeworCQljb21wYXRpYmxlID0gImFybSxzY3BpLXNlbnNvcnMiOworCQkjdGhlcm1hbC1zZW5zb3ItY2VsbHMgPSA8MT47CisJfTsKK307CisKK2NwdUAwIHsKKwkuLi4KKwlyZWcgPSA8MCAwPjsKKwljbG9ja3MgPSA8JnNjcGlfZHZmcyAwPjsKK307CisKK2hkbGNkQDdmZjYwMDAwIHsKKwkuLi4KKwlyZWcgPSA8MCAweDdmZjYwMDAwIDAgMHgxMDAwPjsKKwljbG9ja3MgPSA8JnNjcGlfY2xrIDQ+OworfTsKKwordGhlcm1hbC16b25lcyB7CisJc29jX3RoZXJtYWwgeworCQlwb2xsaW5nLWRlbGF5LXBhc3NpdmUgPSA8MTAwPjsKKwkJcG9sbGluZy1kZWxheSA9IDwxMDAwPjsKKworCQkJCS8qIHNlbnNvciAgICAgICAgIElEICovCisJCXRoZXJtYWwtc2Vuc29ycyA9IDwmc2NwaV9zZW5zb3JzMCAzPjsKKwkJLi4uCisJfTsKK307CisKK0luIHRoZSBhYm92ZSBleGFtcGxlLCB0aGUgI2Nsb2NrLWNlbGxzIGlzIHNldCB0byAxIGFzIHJlcXVpcmVkLgorc2NwaV9kdmZzIGhhcyAzIG91dHB1dCBjbG9ja3MgbmFtZWx5OiBhdGxjbGssIGFwbGNsaywgYW5kIGdwdWNsayB3aXRoIDAsCisxIGFuZCAyIGFzIGNsb2NrLWluZGljZXMuIHNjcGlfY2xrIGhhcyAyIG91dHB1dCBjbG9ja3MgbmFtZWx5OiBweGxjbGswCithbmQgcHhsY2xrMSB3aXRoIDMgYW5kIDQgYXMgY2xvY2staW5kaWNlcy4KKworVGhlIGZpcnN0IGNvbnN1bWVyIGluIHRoZSBleGFtcGxlIGlzIGNwdUAwIGFuZCBpdCBoYXMgJzAnIGFzIHRoZSBjbG9jaworc3BlY2lmaWVyIHdoaWNoIHBvaW50cyB0byB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIG91dHB1dCBjbG9ja3Mgb2YKK3NjcGlfZHZmcyBpLmUuICJhdGxjbGsiLgorCitTaW1pbGFybHkgdGhlIHNlY29uZCBleGFtcGxlIGlzIGhkbGNkQDdmZjYwMDAwIGFuZCBpdCBoYXMgcHhsY2xrMSBhcyBpbnB1dAorY2xvY2suICc0JyBpbiB0aGUgY2xvY2sgc3BlY2lmaWVyIGhlcmUgcG9pbnRzIHRvIHRoZSBzZWNvbmQgZW50cnkKK2luIHRoZSBvdXRwdXQgY2xvY2tzIG9mIHNjcGlfY2xvY2tzICBpLmUuICJweGxjbGsxIgorCitUaGUgdGhlcm1hbC1zZW5zb3JzIHByb3BlcnR5IGluIHRoZSBzb2NfdGhlcm1hbCBub2RlIHVzZXMgdGhlCit0ZW1wZXJhdHVyZSBzZW5zb3IgcHJvdmlkZWQgYnkgU0NQIGZpcm13YXJlIHRvIHNldHVwIGEgdGhlcm1hbAorem9uZS4gVGhlIElEICIzIiBpcyB0aGUgc2Vuc29yIGlkZW50aWZpZXIgZm9yIHRoZSB0ZW1wZXJhdHVyZSBzZW5zb3IKK2FzIHVzZWQgYnkgdGhlIGZpcm13YXJlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hcm0tYm9hcmRzIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hcm0tYm9hcmRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNzA5OTcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2FybS1ib2FyZHMKQEAgLTAsMCArMSwyMjUgQEAKK0FSTSBJbnRlZ3JhdG9yL0FQIChBcHBsaWNhdGlvbiBQbGF0Zm9ybSkgYW5kIEludGVncmF0b3IvQ1AgKENvbXBhY3QgUGxhdGZvcm0pCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQVJNJ3Mgb2xkZXN0IExpbnV4LXN1cHBvcnRlZCBwbGF0Zm9ybSB3aXRoIGNvbm5lY3RvcnMgZm9yIGRpZmZlcmVudCBjb3JlCit0aWxlcyBvZiBBUk12NCwgQVJNdjUgYW5kIEFSTXY2IHR5cGUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgKGluIHJvb3Qgbm9kZSk6CisJY29tcGF0aWJsZSA9ICJhcm0saW50ZWdyYXRvci1hcCI7ICAvKiBBcHBsaWNhdGlvbiBQbGF0Zm9ybSAqLworCWNvbXBhdGlibGUgPSAiYXJtLGludGVncmF0b3ItY3AiOyAgLyogQ29tcGFjdCBQbGF0Zm9ybSAqLworCitGUEdBIHR5cGUgaW50ZXJydXB0IGNvbnRyb2xsZXJzLCBzZWUgdGhlIHZlcnNhdGlsZS1mcGdhLWlycSBiaW5kaW5nIGRvYy4KKworUmVxdWlyZWQgbm9kZXM6CisKKy0gY29yZS1tb2R1bGU6IHRoZSByb290IG5vZGUgdG8gdGhlIEludGVncmF0b3IgcGxhdGZvcm1zIG11c3QgaGF2ZQorICBhIGNvcmUtbW9kdWxlIHdpdGggcmVncyBhbmQgdGhlIGNvbXBhdGlibGUgc3RyaW5nCisgICJhcm0sY29yZS1tb2R1bGUtaW50ZWdyYXRvciIKKy0gZXh0ZXJuYWwtYnVzLWludGVyZmFjZTogdGhlIHJvb3Qgbm9kZSB0byB0aGUgSW50ZWdyYXRvciBwbGF0Zm9ybXMKKyAgbXVzdCBoYXZlIGFuIGV4dGVybmFsIGJ1cyBpbnRlcmZhY2Ugd2l0aCByZWdzIGFuZCB0aGUKKyAgY29tcGF0aWJsZS1zdHJpbmcgImFybSxleHRlcm5hbC1idXMtaW50ZXJmYWNlIgorCisgIFJlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHRoZSBjb3JlIG1vZHVsZToKKyAgLSByZWdzOiB0aGUgbG9jYXRpb24gYW5kIHNpemUgb2YgdGhlIGNvcmUgbW9kdWxlIHJlZ2lzdGVycywgb25lCisgICAgcmFuZ2Ugb2YgMHgyMDAgYnl0ZXMuCisKKy0gc3lzY29uOiB0aGUgcm9vdCBub2RlIG9mIHRoZSBJbnRlZ3JhdG9yIHBsYXRmb3JtcyBtdXN0IGhhdmUgYQorICBzeXN0ZW0gY29udHJvbGxlciBub2RlIHBvaW50aW5nIHRvIHRoZSBjb250cm9sIHJlZ2lzdGVycywKKyAgd2l0aCB0aGUgY29tcGF0aWJsZSBzdHJpbmcKKyAgImFybSxpbnRlZ3JhdG9yLWFwLXN5c2NvbiIKKyAgImFybSxpbnRlZ3JhdG9yLWNwLXN5c2NvbiIKKyAgcmVzcGVjdGl2ZWx5LgorCisgIFJlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHRoZSBzeXN0ZW0gY29udHJvbGxlcjoKKyAgLSByZWdzOiB0aGUgbG9jYXRpb24gYW5kIHNpemUgb2YgdGhlIHN5c3RlbSBjb250cm9sbGVyIHJlZ2lzdGVycywKKyAgICBvbmUgcmFuZ2Ugb2YgMHgxMDAgYnl0ZXMuCisKKyAgUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgdGhlIEFQIHN5c3RlbSBjb250cm9sbGVyOgorICAtIGludGVycnVwdHM6IHRoZSBBUCBzeXNjb24gbm9kZSBtdXN0IGluY2x1ZGUgdGhlIGxvZ2ljYWwgbW9kdWxlCisgICAgaW50ZXJydXB0cywgc3RhdGVkIGluIG9yZGVyIG9mIG1vZHVsZSBpbnN0YW5jZSA8bW9kdWxlIDA+LAorICAgIDxtb2R1bGUgMT4sIDxtb2R1bGUgMj4gLi4uIGZvciB0aGUgQ1Agc3lzdGVtIGNvbnRyb2xsZXIgdGhpcworICAgIGlzIG5vdCByZXF1aXJlZCBub3Qgb2YgYW55IHVzZS4KKworL2R0cy12MS87CisvaW5jbHVkZS8gImludGVncmF0b3IuZHRzaSIKKworLyB7CisJbW9kZWwgPSAiQVJNIEludGVncmF0b3IvQVAiOworCWNvbXBhdGlibGUgPSAiYXJtLGludGVncmF0b3ItYXAiOworCisJY29yZS1tb2R1bGVAMTAwMDAwMDAgeworCQljb21wYXRpYmxlID0gImFybSxjb3JlLW1vZHVsZS1pbnRlZ3JhdG9yIjsKKwkJcmVnID0gPDB4MTAwMDAwMDAgMHgyMDA+OworCX07CisKKwllYmlAMTIwMDAwMDAgeworCQljb21wYXRpYmxlID0gImFybSxleHRlcm5hbC1idXMtaW50ZXJmYWNlIjsKKwkJcmVnID0gPDB4MTIwMDAwMDAgMHgxMDA+OworCX07CisKKwlzeXNjb24geworCQljb21wYXRpYmxlID0gImFybSxpbnRlZ3JhdG9yLWFwLXN5c2NvbiI7CisJCXJlZyA9IDwweDExMDAwMDAwIDB4MTAwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmcGljPjsKKwkJLyogVGhlc2UgYXJlIHRoZSBsb2dpYyBtb2R1bGUgSVJRcyAqLworCQlpbnRlcnJ1cHRzID0gPDk+LCA8MTA+LCA8MTE+LCA8MTI+OworCX07Cit9OworCisKK0FSTSBWZXJzYXRpbGUgQXBwbGljYXRpb24gYW5kIFBsYXRmb3JtIEJhc2Vib2FyZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FSTSdzIGRldmVsb3BtZW50IGhhcmR3YXJlIHBsYXRmb3JtIHdpdGggY29ubmVjdG9ycyBmb3IgY3VzdG9taXphYmxlCitjb3JlIHRpbGVzLiAgVGhlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIFZlcnNhdGlsZSBib2FyZHMgaXMKK2hpZ2hseSBjdXN0b21pemFibGUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgKGluIHJvb3Qgbm9kZSk6CisJY29tcGF0aWJsZSA9ICJhcm0sdmVyc2F0aWxlLWFiIjsgIC8qIEFwcGxpY2F0aW9uIGJhc2Vib2FyZCAqLworCWNvbXBhdGlibGUgPSAiYXJtLHZlcnNhdGlsZS1wYiI7ICAvKiBQbGF0Zm9ybSBiYXNlYm9hcmQgKi8KKworSW50ZXJydXB0IGNvbnRyb2xsZXJzOgorLSBWSUMgcmVxdWlyZWQgcHJvcGVydGllczoKKwljb21wYXRpYmxlID0gImFybSx2ZXJzYXRpbGUtdmljIjsKKwlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCistIFNJQyByZXF1aXJlZCBwcm9wZXJ0aWVzOgorCWNvbXBhdGlibGUgPSAiYXJtLHZlcnNhdGlsZS1zaWMiOworCWludGVycnVwdC1jb250cm9sbGVyOworCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisKK1JlcXVpcmVkIG5vZGVzOgorCistIGNvcmUtbW9kdWxlOiB0aGUgcm9vdCBub2RlIHRvIHRoZSBWZXJzYXRpbGUgcGxhdGZvcm1zIG11c3QgaGF2ZQorICBhIGNvcmUtbW9kdWxlIHdpdGggcmVncyBhbmQgdGhlIGNvbXBhdGlibGUgc3RyaW5ncworICAiYXJtLGNvcmUtbW9kdWxlLXZlcnNhdGlsZSIsICJzeXNjb24iCisKK0FSTSBSZWFsVmlldyBCb2FyZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBSZWFsVmlldyBib2FyZHMgY292ZXIgdGFpbG9yZWQgZXZhbHVhdGlvbiBib2FyZHMgdGhhdCBhcmUgdXNlZCB0byBleHBsb3JlCit0aGUgQVJNMTEgYW5kIENvcnRleCBBLTggYW5kIENvcnRleCBBLTkgcHJvY2Vzc29ycy4KKworUmVxdWlyZWQgcHJvcGVydGllcyAoaW4gcm9vdCBub2RlKToKKwkvKiBSZWFsVmlldyBFbXVsYXRpb24gQmFzZWJvYXJkICovCisJY29tcGF0aWJsZSA9ICJhcm0scmVhbHZpZXctZWIiOworCSAvKiBSZWFsVmlldyBQbGF0Zm9ybSBCYXNlYm9hcmQgZm9yIEFSTTExNzZKWkYtUyAqLworCWNvbXBhdGlibGUgPSAiYXJtLHJlYWx2aWV3LXBiMTE3NiI7CisJLyogUmVhbFZpZXcgUGxhdGZvcm0gQmFzZWJvYXJkIGZvciBBUk0xMSBNUENvcmUgKi8KKwljb21wYXRpYmxlID0gImFybSxyZWFsdmlldy1wYjExbXAiOworCS8qIFJlYWxWaWV3IFBsYXRmb3JtIEJhc2Vib2FyZCBmb3IgQ29ydGV4IEEtOCAqLworCWNvbXBhdGlibGUgPSAiYXJtLHJlYWx2aWV3LXBiYTgiOworCS8qIFJlYWxWaWV3IFBsYXRmb3JtIEJhc2Vib2FyZCBFeHBsb3JlIGZvciBDb3J0ZXggQS05ICovCisJY29tcGF0aWJsZSA9ICJhcm0scmVhbHZpZXctcGJ4IjsKKworUmVxdWlyZWQgbm9kZXM6CisKKy0gc29jOiBzb21lIG5vZGUgb2YgdGhlIFJlYWxWaWV3IHBsYXRmb3JtcyBtdXN0IGJlIHRoZSBTb0MKKyAgbm9kZSB0aGF0IGNvbnRhaW4gdGhlIFNvQy1zcGVjaWZpYyBkZXZpY2VzLCB3aXRoZSB0aGUgY29tcGF0aWJsZQorICBzdHJpbmcgc2V0IHRvIG9uZSBvZiB0aGVzZSB0dXBsZXM6CisgICAiYXJtLHJlYWx2aWV3LWViLXNvYyIsICJzaW1wbGUtYnVzIgorICAgImFybSxyZWFsdmlldy1wYjExNzYtc29jIiwgInNpbXBsZS1idXMiCisgICAiYXJtLHJlYWx2aWV3LXBiMTFtcC1zb2MiLCAic2ltcGxlLWJ1cyIKKyAgICJhcm0scmVhbHZpZXctcGJhOC1zb2MiLCAic2ltcGxlLWJ1cyIKKyAgICJhcm0scmVhbHZpZXctcGJ4LXNvYyIsICJzaW1wbGUtYnVzIgorCistIHN5c2Nvbjogc29tZSBzdWJub2RlIG9mIHRoZSBSZWFsVmlldyBTb0Mgbm9kZSBtdXN0IGJlIGEKKyAgc3lzdGVtIGNvbnRyb2xsZXIgbm9kZSBwb2ludGluZyB0byB0aGUgY29udHJvbCByZWdpc3RlcnMsCisgIHdpdGggdGhlIGNvbXBhdGlibGUgc3RyaW5nIHNldCB0byBvbmUgb2YgdGhlc2UgdHVwbGVzOgorICAgImFybSxyZWFsdmlldy1lYi1zeXNjb24iLCAic3lzY29uIgorICAgImFybSxyZWFsdmlldy1wYjExNzYtc3lzY29uIiwgInN5c2NvbiIKKyAgICJhcm0scmVhbHZpZXctcGIxMW1wLXN5c2NvbiIsICJzeXNjb24iCisgICAiYXJtLHJlYWx2aWV3LXBiYTgtc3lzY29uIiwgInN5c2NvbiIKKyAgICJhcm0scmVhbHZpZXctcGJ4LXN5c2NvbiIsICJzeXNjb24iCisKKyAgUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgdGhlIHN5c3RlbSBjb250cm9sbGVyOgorICAtIHJlZ3M6IHRoZSBsb2NhdGlvbiBhbmQgc2l6ZSBvZiB0aGUgc3lzdGVtIGNvbnRyb2xsZXIgcmVnaXN0ZXJzLAorICAgIG9uZSByYW5nZSBvZiAweDEwMDAgYnl0ZXMuCisKK0V4YW1wbGU6CisKKy9kdHMtdjEvOworI2luY2x1ZGUgPGR0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oPgorI2luY2x1ZGUgInNrZWxldG9uLmR0c2kiCisKKy8geworCW1vZGVsID0gIkFSTSBSZWFsVmlldyBQQjExNzYgd2l0aCBkZXZpY2UgdHJlZSI7CisJY29tcGF0aWJsZSA9ICJhcm0scmVhbHZpZXctcGIxMTc2IjsKKworCXNvYyB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJY29tcGF0aWJsZSA9ICJhcm0scmVhbHZpZXctcGIxMTc2LXNvYyIsICJzaW1wbGUtYnVzIjsKKwkJcmFuZ2VzOworCisJCXN5c2Nvbjogc3lzY29uQDEwMDAwMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiYXJtLHJlYWx2aWV3LXN5c2NvbiIsICJzeXNjb24iOworCQkJcmVnID0gPDB4MTAwMDAwMDAgMHgxMDAwPjsKKwkJfTsKKworCX07Cit9OworCitBUk0gVmVyc2F0aWxlIEV4cHJlc3MgQm9hcmRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRm9yIGRldGFpbHMgb24gdGhlIGRldmljZSB0cmVlIGJpbmRpbmdzIGZvciBBUk0gVmVyc2F0aWxlIEV4cHJlc3MgYm9hcmRzCitwbGVhc2UgY29uc3VsdCB0aGUgdmV4cHJlc3MudHh0IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoaXMgZmlsZS4KKworQVJNIEp1bm8gQm9hcmRzCistLS0tLS0tLS0tLS0tLS0tCitUaGUgSnVubyBib2FyZHMgYXJlIHRhcmdldGluZyBkZXZlbG9wbWVudCBmb3IgQUFyY2g2NCBzeXN0ZW1zLiBUaGUgZmlyc3QKK2l0ZXJhdGlvbiwgSnVubyByMCwgaXMgYSB2ZWhpY2xlIGZvciBldmFsdWF0aW5nIGJpZy5MSVRUTEUgb24gQUFyY2g2NCwKK3dpdGggdGhlIHNlY29uZCBpdGVyYXRpb24sIEp1bm8gcjEsIG1haW5seSBhaW1lZCBhdCBkZXZlbG9wbWVudCBvZiBQQ0llCitiYXNlZCBzeXN0ZW1zLiBKdW5vIHIxIGFsc28gaGFzIHN1cHBvcnQgZm9yIEFYSSBtYXN0ZXJzIHBsYWNlZCBvbiB0aGUgVExYCitjb25uZWN0b3JzIHRvIGpvaW4gdGhlIGNvaGVyZW5jeSBkb21haW4uCisKK0p1bm8gYm9hcmRzIGFyZSBkZXNjcmliZWQgaW4gYSBzaW1pbGFyIHdheSB0byBBUk0gVmVyc2F0aWxlIEV4cHJlc3MgYm9hcmRzLAord2l0aCB0aGUgbW90aGVyYm9hcmQgcGFydCBvZiB0aGUgaGFyZHdhcmUgYmVpbmcgZGVzY3JpYmVkIGluIGEgc2VwYXJhdGUgZmlsZQordG8gaGlnaGxpZ2h0IHRoZSBmYWN0IHRoYXQgaXMgcGFydCBvZiB0aGUgc3VwcG9ydCBpbmZyYXN0cnVjdHVyZSBmb3IgdGhlIFNvQy4KK0p1bm8gZGV2aWNlIHRyZWUgYmluZGluZ3MgYWxzbyBzaGFyZSB0aGUgVmVyc2F0aWxlIEV4cHJlc3MgYmluZGluZ3MgYXMKK2Rlc2NyaWJlZCB1bmRlciB0aGUgUlMxIG1lbW9yeSBtYXBwaW5nLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIChpbiByb290IG5vZGUpOgorCWNvbXBhdGlibGUgPSAiYXJtLGp1bm8iOwkvKiBGb3IgSnVubyByMCBib2FyZCAqLworCWNvbXBhdGlibGUgPSAiYXJtLGp1bm8tcjEiOwkvKiBGb3IgSnVubyByMSBib2FyZCAqLworCitSZXF1aXJlZCBub2RlczoKK1RoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIGJvYXJkIG11c3QgaW5jbHVkZToKKyAgIC0gYSAicHNjaSIgbm9kZSBkZXNjcmliaW5nIHRoZSBib290IG1ldGhvZCB1c2VkIGZvciB0aGUgc2Vjb25kYXJ5IENQVXMuCisgICAgIEEgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIGJpbmRpbmdzIHVzZWQgZm9yICJwc2NpIiBub2RlcyBpcyBwcmVzZW50CisgICAgIGluIHRoZSBwc2NpLnR4dCBmaWxlLgorICAgLSBhICJjcHVzIiBub2RlIGRlc2NyaWJpbmcgdGhlIGF2YWlsYWJsZSBjb3JlcyBhbmQgdGhlaXIgYXNzb2NpYXRlZAorICAgICAiZW5hYmxlLW1ldGhvZCJzLiBGb3IgbW9yZSBkZXRhaWxzIHNlZSBjcHVzLnR4dCBmaWxlLgorCitFeGFtcGxlOgorCisvZHRzLXYxLzsKKy8geworCW1vZGVsID0gIkFSTSBKdW5vIGRldmVsb3BtZW50IGJvYXJkIChyMCkiOworCWNvbXBhdGlibGUgPSAiYXJtLGp1bm8iLCAiYXJtLHZleHByZXNzIjsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZnaWM+OworCSNhZGRyZXNzLWNlbGxzID0gPDI+OworCSNzaXplLWNlbGxzID0gPDI+OworCisJY3B1cyB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDI+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQlBNTdfMDogY3B1QDAgeworCQkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE1NyIsImFybSxhcm12OCI7CisJCQlyZWcgPSA8MHgwIDB4MD47CisJCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQkJZW5hYmxlLW1ldGhvZCA9ICJwc2NpIjsKKwkJfTsKKworCQkuLi4uLgorCisJCUE1M18wOiBjcHVAMTAwIHsKKwkJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTMiLCJhcm0sYXJtdjgiOworCQkJcmVnID0gPDB4MCAweDEwMD47CisJCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQkJZW5hYmxlLW1ldGhvZCA9ICJwc2NpIjsKKwkJfTsKKworCQkuLi4uLgorCX07CisKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2FybWFkYS0zNzAteHAtcG1zdS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2FybWFkYS0zNzAteHAtcG1zdS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY3OTllZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYXJtYWRhLTM3MC14cC1wbXN1LnR4dApAQCAtMCwwICsxLDIxIEBACitQb3dlciBNYW5hZ2VtZW50IFNlcnZpY2UgVW5pdChQTVNVKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0F2YWlsYWJsZSBvbiBNYXJ2ZWxsIFNPQ3M6IEFybWFkYSAzNzAsIEFybWFkYSAzOHggYW5kIEFybWFkYSBYUAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2Y6CisgIC0gIm1hcnZlbGwsYXJtYWRhLTM3MC1wbXN1IiBmb3IgQXJtYWRhIDM3MCBvciBBcm1hZGEgWFAKKyAgLSAibWFydmVsbCxhcm1hZGEtMzgwLXBtc3UiIGZvciBBcm1hZGEgMzh4CisgIC0gIm1hcnZlbGwsYXJtYWRhLTM3MC14cC1wbXN1IiB3YXMgdXNlZCBmb3IgQXJtYWRhIDM3MC9YUCBidXQgaXMgbm93CisgICAgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkCisKKy0gcmVnOiBTaG91bGQgY29udGFpbiBQTVNVIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoLgorCitFeGFtcGxlOgorCithcm1hZGEtMzcwLXhwLXBtc3VAMjIwMDAgeworCWNvbXBhdGlibGUgPSAibWFydmVsbCxhcm1hZGEtMzcwLXBtc3UiOworCXJlZyA9IDwweDIyMDAwIDB4MTAwMD47Cit9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2FybWFkYS0zNzAteHAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hcm1hZGEtMzcwLXhwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmVkOTBlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hcm1hZGEtMzcwLXhwLnR4dApAQCAtMCwwICsxLDI0IEBACitNYXJ2ZWxsIEFybWFkYSAzNzAgYW5kIEFybWFkYSBYUCBQbGF0Zm9ybXMgRGV2aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCb2FyZHMgd2l0aCBhIFNvQyBvZiB0aGUgTWFydmVsbCBBcm1hZGEgMzcwIGFuZCBBcm1hZGEgWFAgZmFtaWxpZXMKK3NoYWxsIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0eToKKworUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnR5OgorCitjb21wYXRpYmxlOiBtdXN0IGNvbnRhaW4gIm1hcnZlbGwsYXJtYWRhLTM3MC14cCIKKworSW4gYWRkaXRpb24sIGJvYXJkcyB1c2luZyB0aGUgTWFydmVsbCBBcm1hZGEgMzcwIFNvQyBzaGFsbCBoYXZlIHRoZQorZm9sbG93aW5nIHByb3BlcnR5OgorCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydHk6CisKK2NvbXBhdGlibGU6IG11c3QgY29udGFpbiAibWFydmVsbCxhcm1hZGEzNzAiCisKK0luIGFkZGl0aW9uLCBib2FyZHMgdXNpbmcgdGhlIE1hcnZlbGwgQXJtYWRhIFhQIFNvQyBzaGFsbCBoYXZlIHRoZQorZm9sbG93aW5nIHByb3BlcnR5OgorCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydHk6CisKK2NvbXBhdGlibGU6IG11c3QgY29udGFpbiAibWFydmVsbCxhcm1hZGF4cCIKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hcm1hZGEtMzc1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYXJtYWRhLTM3NS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY3ZDBiOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYXJtYWRhLTM3NS50eHQKQEAgLTAsMCArMSw5IEBACitNYXJ2ZWxsIEFybWFkYSAzNzUgUGxhdGZvcm1zIERldmljZSBUcmVlIEJpbmRpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JvYXJkcyB3aXRoIGEgU29DIG9mIHRoZSBNYXJ2ZWxsIEFybWFkYSAzNzUgZmFtaWx5IHNoYWxsIGhhdmUgdGhlCitmb2xsb3dpbmcgcHJvcGVydHk6CisKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0eToKKworY29tcGF0aWJsZTogbXVzdCBjb250YWluICJtYXJ2ZWxsLGFybWFkYTM3NSIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYXJtYWRhLTM4MC1tcGNvcmUtc29jLWN0cmwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hcm1hZGEtMzgwLW1wY29yZS1zb2MtY3RybC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc4MTA3MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYXJtYWRhLTM4MC1tcGNvcmUtc29jLWN0cmwudHh0CkBAIC0wLDAgKzEsMTQgQEAKK01hcnZlbGwgQXJtYWRhIDM4eCBDQTkgTVBjb3JlIFNvQyBDb250cm9sbGVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAibWFydmVsbCxhcm1hZGEtMzgwLW1wY29yZS1zb2MtY3RybCIuCisKKy0gcmVnOiBzaG91bGQgYmUgdGhlIHJlZ2lzdGVyIGJhc2UgYW5kIGxlbmd0aCBhcyBkb2N1bWVudGVkIGluIHRoZQorICBkYXRhc2hlZXQgZm9yIHRoZSBDQTkgTVBjb3JlIFNvQyBDb250cm9sIHJlZ2lzdGVycworCittcGNvcmUtc29jLWN0cmxAMjBkMjAgeworCWNvbXBhdGlibGUgPSAibWFydmVsbCxhcm1hZGEtMzgwLW1wY29yZS1zb2MtY3RybCI7CisJcmVnID0gPDB4MjBkMjAgMHg2Yz47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hcm1hZGEtMzh4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYXJtYWRhLTM4eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjAyOTUzZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYXJtYWRhLTM4eC50eHQKQEAgLTAsMCArMSwyNyBAQAorTWFydmVsbCBBcm1hZGEgMzh4IFBsYXRmb3JtcyBEZXZpY2UgVHJlZSBCaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCb2FyZHMgd2l0aCBhIFNvQyBvZiB0aGUgTWFydmVsbCBBcm1hZGEgMzh4IGZhbWlseSBzaGFsbCBoYXZlIHRoZQorZm9sbG93aW5nIHByb3BlcnR5OgorCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydHk6CisKKyAtIGNvbXBhdGlibGU6IG11c3QgY29udGFpbiAibWFydmVsbCxhcm1hZGEzODAiCisKK0luIGFkZGl0aW9uLCBib2FyZHMgdXNpbmcgdGhlIE1hcnZlbGwgQXJtYWRhIDM4NSBTb0Mgc2hhbGwgaGF2ZSB0aGUKK2ZvbGxvd2luZyBwcm9wZXJ0eSBiZWZvcmUgdGhlIHByZXZpb3VzIG9uZToKKworUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnR5OgorCitjb21wYXRpYmxlOiBtdXN0IGNvbnRhaW4gIm1hcnZlbGwsYXJtYWRhMzg1IgorCitJbiBhZGRpdGlvbiwgYm9hcmRzIHVzaW5nIHRoZSBNYXJ2ZWxsIEFybWFkYSAzODggU29DIHNoYWxsIGhhdmUgdGhlCitmb2xsb3dpbmcgcHJvcGVydHkgYmVmb3JlIHRoZSBwcmV2aW91cyBvbmU6CisKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0eToKKworY29tcGF0aWJsZTogbXVzdCBjb250YWluICJtYXJ2ZWxsLGFybWFkYTM4OCIKKworRXhhbXBsZToKKworY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLGEzODUtcmQiLCAibWFydmVsbCxhcm1hZGEzODUiLCAibWFydmVsbCxhcm1hZGEzODAiOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hcm1hZGEtMzl4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYXJtYWRhLTM5eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNkNGZmOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYXJtYWRhLTM5eC50eHQKQEAgLTAsMCArMSwyMCBAQAorTWFydmVsbCBBcm1hZGEgMzl4IFBsYXRmb3JtcyBEZXZpY2UgVHJlZSBCaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCb2FyZHMgd2l0aCBhIFNvQyBvZiB0aGUgTWFydmVsbCBBcm1hZGEgMzl4IGZhbWlseSBzaGFsbCBoYXZlIHRoZQorZm9sbG93aW5nIHByb3BlcnR5OgorCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydHk6CisKKyAtIGNvbXBhdGlibGU6IG11c3QgY29udGFpbiAibWFydmVsbCxhcm1hZGEzOTAiCisKK0luIGFkZGl0aW9uLCBib2FyZHMgdXNpbmcgdGhlIE1hcnZlbGwgQXJtYWRhIDM5OCBTb0Mgc2hhbGwgaGF2ZSB0aGUKK2ZvbGxvd2luZyBwcm9wZXJ0eSBiZWZvcmUgdGhlIHByZXZpb3VzIG9uZToKKworUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnR5OgorCitjb21wYXRpYmxlOiBtdXN0IGNvbnRhaW4gIm1hcnZlbGwsYXJtYWRhMzk4IgorCitFeGFtcGxlOgorCitjb21wYXRpYmxlID0gIm1hcnZlbGwsYTM5OC1kYiIsICJtYXJ2ZWxsLGFybWFkYTM5OCIsICJtYXJ2ZWxsLGFybWFkYTM5MCI7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2FybWFkYS1jcHUtcmVzZXQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hcm1hZGEtY3B1LXJlc2V0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjNhN2I2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hcm1hZGEtY3B1LXJlc2V0LnR4dApAQCAtMCwwICsxLDE0IEBACitNYXJ2ZWxsIEFybWFkYSBDUFUgcmVzZXQgY29udHJvbGxlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgIm1hcnZlbGwsYXJtYWRhLTM3MC1jcHUtcmVzZXQiLgorCistIHJlZzogc2hvdWxkIGJlIHJlZ2lzdGVyIGJhc2UgYW5kIGxlbmd0aCBhcyBkb2N1bWVudGVkIGluIHRoZQorICBkYXRhc2hlZXQgZm9yIHRoZSBDUFUgcmVzZXQgcmVnaXN0ZXJzCisKK2NwdXJzdDogY3B1cnN0QDIwODAwIHsKKyAgICAgICBjb21wYXRpYmxlID0gIm1hcnZlbGwsYXJtYWRhLTM3MC1jcHUtcmVzZXQiOworICAgICAgIHJlZyA9IDwweDIwODAwIDB4MjA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYXJtYWRldXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hcm1hZGV1cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgyMTI4MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYXJtYWRldXMudHh0CkBAIC0wLDAgKzEsNiBAQAorQXJtYWRldXMgaS5NWCBQbGF0Zm9ybXMgRGV2aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FQRjUxOiBpLk1YNTEgYmFzZWQgbW9kdWxlLgorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgLSBjb21wYXRpYmxlID0gImFybWFkZXVzLGlteDUxLWFwZjUxIiwgImZzbCxpbXg1MSI7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2FybXY3bV9zeXN0aWNrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYXJtdjdtX3N5c3RpY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZjRhMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2FybXY3bV9zeXN0aWNrLnR4dApAQCAtMCwwICsxLDI2IEBACisqIEFSTXY3TSBTeXN0ZW0gVGltZXIKKworQVJNdjctTSBpbmNsdWRlcyBhIHN5c3RlbSB0aW1lciwga25vd24gYXMgU3lzVGljay4gQ3VycmVudCBkcml2ZXIgb25seQoraW1wbGVtZW50cyB0aGUgY2xvY2tzb3VyY2UgZmVhdHVyZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZQkgIDogU2hvdWxkIGJlICJhcm0sYXJtdjdtLXN5c3RpY2siCistIHJlZwkJICA6IFRoZSBhZGRyZXNzIHJhbmdlIG9mIHRoZSB0aW1lcgorCitSZXF1aXJlZCBjbG9ja2luZyBwcm9wZXJ0eSwgaGF2ZSB0byBiZSBvbmUgb2Y6CistIGNsb2NrcwkgIDogVGhlIGlucHV0IGNsb2NrIG9mIHRoZSB0aW1lcgorLSBjbG9jay1mcmVxdWVuY3kgOiBUaGUgcmF0ZSBpbiBIWiBpbiBpbnB1dCBvZiB0aGUgQVJNIFN5c1RpY2sKKworRXhhbXBsZXM6CisKK3N5c3RpY2s6IHRpbWVyQGUwMDBlMDEwIHsKKwljb21wYXRpYmxlID0gImFybSxhcm12N20tc3lzdGljayI7CisJcmVnID0gPDB4ZTAwMGUwMTAgMHgxMD47CisJY2xvY2tzID0gPCZjbGtfc3lzdGljaz47Cit9OworCitzeXN0aWNrOiB0aW1lckBlMDAwZTAxMCB7CisJY29tcGF0aWJsZSA9ICJhcm0sYXJtdjdtLXN5c3RpY2siOworCXJlZyA9IDwweGUwMDBlMDEwIDB4MTA+OworCWNsb2NrLWZyZXF1ZW5jeSA9IDw5MDAwMDAwMD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hdG1lbC1hdDkxLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYXRtZWwtYXQ5MS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZkNjRlYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYXRtZWwtYXQ5MS50eHQKQEAgLTAsMCArMSwxNjQgQEAKK0F0bWVsIEFUOTEgZGV2aWNlIHRyZWUgYmluZGluZ3MuCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitCb2FyZHMgd2l0aCBhIFNvQyBvZiB0aGUgQXRtZWwgQVQ5MSBvciBTTUFSVCBmYW1pbHkgc2hhbGwgaGF2ZSB0aGUgZm9sbG93aW5nCitwcm9wZXJ0aWVzOgorCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKK2NvbXBhdGlibGU6IG11c3QgYmUgb25lIG9mOgorICogImF0bWVsLGF0OTFybTkyMDAiCisKKyAqICJhdG1lbCxhdDkxc2FtOSIgZm9yIFNvQ3MgdXNpbmcgYW4gQVJNOTI2RUotUyBjb3JlLCBzaGFsbCBiZSBleHRlbmRlZCB3aXRoCisgICB0aGUgc3BlY2lmaWMgU29DIGZhbWlseSBvciBjb21wYXRpYmxlOgorICAgIG8gImF0bWVsLGF0OTFzYW05MjYwIgorICAgIG8gImF0bWVsLGF0OTFzYW05MjYxIgorICAgIG8gImF0bWVsLGF0OTFzYW05MjYzIgorICAgIG8gImF0bWVsLGF0OTFzYW05eDUiIGZvciB0aGUgNSBzZXJpZXMsIHNoYWxsIGJlIGV4dGVuZGVkIHdpdGggdGhlIHNwZWNpZmljCisgICAgICBTb0MgY29tcGF0aWJsZToKKyAgICAgICAtICJhdG1lbCxhdDkxc2FtOWcxNSIKKyAgICAgICAtICJhdG1lbCxhdDkxc2FtOWcyNSIKKyAgICAgICAtICJhdG1lbCxhdDkxc2FtOWczNSIKKyAgICAgICAtICJhdG1lbCxhdDkxc2FtOXgyNSIKKyAgICAgICAtICJhdG1lbCxhdDkxc2FtOXgzNSIKKyAgICBvICJhdG1lbCxhdDkxc2FtOWcyMCIKKyAgICBvICJhdG1lbCxhdDkxc2FtOWc0NSIKKyAgICBvICJhdG1lbCxhdDkxc2FtOW4xMiIKKyAgICBvICJhdG1lbCxhdDkxc2FtOXJsIgorICAgIG8gImF0bWVsLGF0OTFzYW05eGUiCisgKiAiYXRtZWwsc2FtYTUiIGZvciBTb0NzIHVzaW5nIGEgQ29ydGV4LUE1LCBzaGFsbCBiZSBleHRlbmRlZCB3aXRoIHRoZSBzcGVjaWZpYworICAgU29DIGZhbWlseToKKyAgICBvICJhdG1lbCxzYW1hNWQyIiBzaGFsbCBiZSBleHRlbmRlZCB3aXRoIHRoZSBzcGVjaWZpYyBTb0MgY29tcGF0aWJsZToKKyAgICAgICAtICJhdG1lbCxzYW1hNWQyNyIKKyAgICBvICJhdG1lbCxzYW1hNWQzIiBzaGFsbCBiZSBleHRlbmRlZCB3aXRoIHRoZSBzcGVjaWZpYyBTb0MgY29tcGF0aWJsZToKKyAgICAgICAtICJhdG1lbCxzYW1hNWQzMSIKKyAgICAgICAtICJhdG1lbCxzYW1hNWQzMyIKKyAgICAgICAtICJhdG1lbCxzYW1hNWQzNCIKKyAgICAgICAtICJhdG1lbCxzYW1hNWQzNSIKKyAgICAgICAtICJhdG1lbCxzYW1hNWQzNiIKKyAgICBvICJhdG1lbCxzYW1hNWQ0IiBzaGFsbCBiZSBleHRlbmRlZCB3aXRoIHRoZSBzcGVjaWZpYyBTb0MgY29tcGF0aWJsZToKKyAgICAgICAtICJhdG1lbCxzYW1hNWQ0MSIKKyAgICAgICAtICJhdG1lbCxzYW1hNWQ0MiIKKyAgICAgICAtICJhdG1lbCxzYW1hNWQ0MyIKKyAgICAgICAtICJhdG1lbCxzYW1hNWQ0NCIKKworUElUIFRpbWVyIHJlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAiYXRtZWwsYXQ5MXNhbTkyNjAtcGl0IgorLSByZWc6IFNob3VsZCBjb250YWluIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIGludGVycnVwdCBmb3IgdGhlIFBJVCB3aGljaCBpcyB0aGUgSVJRIGxpbmUKKyAgc2hhcmVkIGFjcm9zcyBhbGwgU3lzdGVtIENvbnRyb2xsZXIgbWVtYmVycy4KKworU3lzdGVtIFRpbWVyIChTVCkgcmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJhdG1lbCxhdDkxcm05MjAwLXN0IiwgInN5c2NvbiIsICJzaW1wbGUtbWZkIgorLSByZWc6IFNob3VsZCBjb250YWluIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIGludGVycnVwdCBmb3IgdGhlIFNUIHdoaWNoIGlzIHRoZSBJUlEgbGluZQorICBzaGFyZWQgYWNyb3NzIGFsbCBTeXN0ZW0gQ29udHJvbGxlciBtZW1iZXJzLgorLSBjbG9ja3M6IHBoYW5kbGUgdG8gaW5wdXQgY2xvY2suCitJdHMgc3Vibm9kZXMgY2FuIGJlOgorLSB3YXRjaGRvZzogY29tcGF0aWJsZSBzaG91bGQgYmUgImF0bWVsLGF0OTFybTkyMDAtd2R0IgorCitUQy9UQ0xJQiBUaW1lciByZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImF0bWVsLDxjaGlwPi10Y2IiLgorICA8Y2hpcD4gY2FuIGJlICJhdDkxcm05MjAwIiBvciAiYXQ5MXNhbTl4NSIKKy0gcmVnOiBTaG91bGQgY29udGFpbiByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBhbGwgaW50ZXJydXB0cyBmb3IgdGhlIFRDIGJsb2NrCisgIE5vdGUgdGhhdCB5b3UgY2FuIHNwZWNpZnkgc2V2ZXJhbCBpbnRlcnJ1cHQgY2VsbHMgaWYgdGhlIFRDCisgIGJsb2NrIGhhcyBvbmUgaW50ZXJydXB0IHBlciBjaGFubmVsLgorLSBjbG9jay1uYW1lczogdHVwbGUgbGlzdGluZyBpbnB1dCBjbG9jayBuYW1lcy4KKwlSZXF1aXJlZCBlbGVtZW50czogInQwX2NsayIsICJzbG93X2NsayIKKwlPcHRpb25hbCBlbGVtZW50czogInQxX2NsayIsICJ0Ml9jbGsiCistIGNsb2NrczogcGhhbmRsZXMgdG8gaW5wdXQgY2xvY2tzLgorCitFeGFtcGxlczoKKworT25lIGludGVycnVwdCBwZXIgVEMgYmxvY2s6CisJdGNiMDogdGltZXJAZmZmN2MwMDAgeworCQljb21wYXRpYmxlID0gImF0bWVsLGF0OTFybTkyMDAtdGNiIjsKKwkJcmVnID0gPDB4ZmZmN2MwMDAgMHgxMDA+OworCQlpbnRlcnJ1cHRzID0gPDE4IDQ+OworCQljbG9ja3MgPSA8JnRjYjBfY2xrPjsKKwkJY2xvY2stbmFtZXMgPSAidDBfY2xrIjsKKwl9OworCitPbmUgaW50ZXJydXB0IHBlciBUQyBjaGFubmVsIGluIGEgVEMgYmxvY2s6CisJdGNiMTogdGltZXJAZmZmZGMwMDAgeworCQljb21wYXRpYmxlID0gImF0bWVsLGF0OTFybTkyMDAtdGNiIjsKKwkJcmVnID0gPDB4ZmZmZGMwMDAgMHgxMDA+OworCQlpbnRlcnJ1cHRzID0gPDI2IDQgMjcgNCAyOCA0PjsKKwkJY2xvY2tzID0gPCZ0Y2IxX2Nsaz47CisJCWNsb2NrLW5hbWVzID0gInQwX2NsayI7CisJfTsKKworUlNUQyBSZXNldCBDb250cm9sbGVyIHJlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAiYXRtZWwsPGNoaXA+LXJzdGMiLgorICA8Y2hpcD4gY2FuIGJlICJhdDkxc2FtOTI2MCIgb3IgImF0OTFzYW05ZzQ1IiBvciAic2FtYTVkMyIKKy0gcmVnOiBTaG91bGQgY29udGFpbiByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorLSBjbG9ja3M6IHBoYW5kbGUgdG8gaW5wdXQgY2xvY2suCisKK0V4YW1wbGU6CisKKwlyc3RjQGZmZmZmZDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhdG1lbCxhdDkxc2FtOTI2MC1yc3RjIjsKKwkJcmVnID0gPDB4ZmZmZmZkMDAgMHgxMD47CisJCWNsb2NrcyA9IDwmY2xrMzJrPjsKKwl9OworCitSQU1DIFNEUkFNL0REUiBDb250cm9sbGVyIHJlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAiYXRtZWwsYXQ5MXJtOTIwMC1zZHJhbWMiLCAic3lzY29uIgorCQkJImF0bWVsLGF0OTFzYW05MjYwLXNkcmFtYyIsCisJCQkiYXRtZWwsYXQ5MXNhbTlnNDUtZGRyYW1jIiwKKwkJCSJhdG1lbCxzYW1hNWQzLWRkcmFtYyIsCistIHJlZzogU2hvdWxkIGNvbnRhaW4gcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKworRXhhbXBsZXM6CisKKwlyYW1jMDogcmFtY0BmZmZmZTgwMCB7CisJCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXNhbTlnNDUtZGRyYW1jIjsKKwkJcmVnID0gPDB4ZmZmZmU4MDAgMHgyMDA+OworCX07CisKK1NIRFdDIFNodXRkb3duIENvbnRyb2xsZXIKKworcmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJhdG1lbCw8Y2hpcD4tc2hkd2MiLgorICA8Y2hpcD4gY2FuIGJlICJhdDkxc2FtOTI2MCIsICJhdDkxc2FtOXJsIiBvciAiYXQ5MXNhbTl4NSIuCistIHJlZzogU2hvdWxkIGNvbnRhaW4gcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKy0gY2xvY2tzOiBwaGFuZGxlIHRvIGlucHV0IGNsb2NrLgorCitvcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBhdG1lbCx3YWtldXAtbW9kZTogU3RyaW5nLCBvcGVyYXRpb24gbW9kZSBvZiB0aGUgd2FrZXVwIG1vZGUuCisgIFN1cHBvcnRlZCB2YWx1ZXMgYXJlOiAibm9uZSIsICJoaWdoIiwgImxvdyIsICJhbnkiLgorLSBhdG1lbCx3YWtldXAtY291bnRlcjogQ291bnRlciBvbiBXYWtlLXVwIDAgKGJldHdlZW4gMHgwIGFuZCAweGYpLgorCitvcHRpb25hbCBhdDkxc2FtOTI2MCBwcm9wZXJ0aWVzOgorLSBhdG1lbCx3YWtldXAtcnR0LXRpbWVyOiBib29sZWFuIHRvIGVuYWJsZSBSZWFsLXRpbWUgVGltZXIgV2FrZS11cC4KKworb3B0aW9uYWwgYXQ5MXNhbTlybCBwcm9wZXJ0aWVzOgorLSBhdG1lbCx3YWtldXAtcnRjLXRpbWVyOiBib29sZWFuIHRvIGVuYWJsZSBSZWFsLXRpbWUgQ2xvY2sgV2FrZS11cC4KKy0gYXRtZWwsd2FrZXVwLXJ0dC10aW1lcjogYm9vbGVhbiB0byBlbmFibGUgUmVhbC10aW1lIFRpbWVyIFdha2UtdXAuCisKK29wdGlvbmFsIGF0OTFzYW05eDUgcHJvcGVydGllczoKKy0gYXRtZWwsd2FrZXVwLXJ0Yy10aW1lcjogYm9vbGVhbiB0byBlbmFibGUgUmVhbC10aW1lIENsb2NrIFdha2UtdXAuCisKK0V4YW1wbGU6CisKKwlzaGR3Y0BmZmZmZmQxMCB7CisJCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXNhbTkyNjAtc2hkd2MiOworCQlyZWcgPSA8MHhmZmZmZmQxMCAweDEwPjsKKwkJY2xvY2tzID0gPCZjbGszMms+OworCX07CisKK1NwZWNpYWwgRnVuY3Rpb24gUmVnaXN0ZXJzIChTRlIpCisKK1NwZWNpYWwgRnVuY3Rpb24gUmVnaXN0ZXJzIChTRlIpIG1hbmFnZSBzcGVjaWZpYyBhc3BlY3RzIG9mIHRoZSBpbnRlZ3JhdGVkCittZW1vcnksIGJyaWRnZSBpbXBsZW1lbnRhdGlvbnMsIHByb2Nlc3NvciBhbmQgb3RoZXIgZnVuY3Rpb25hbGl0eSBub3QgY29udHJvbGxlZAorZWxzZXdoZXJlLgorCityZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImF0bWVsLDxjaGlwPi1zZnIiLCAic3lzY29uIi4KKyAgPGNoaXA+IGNhbiBiZSAic2FtYTVkMyIgb3IgInNhbWE1ZDQiLgorLSByZWc6IFNob3VsZCBjb250YWluIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCisKKwlzZnJAZjAwMzgwMDAgeworCQljb21wYXRpYmxlID0gImF0bWVsLHNhbWE1ZDMtc2ZyIiwgInN5c2NvbiI7CisJCXJlZyA9IDwweGYwMDM4MDAwIDB4NjA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2F0bWVsLXBtYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2F0bWVsLXBtYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk1Y2M3OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYXRtZWwtcG1jLnR4dApAQCAtMCwwICsxLDE0IEBACisqIFBvd2VyIE1hbmFnZW1lbnQgQ29udHJvbGxlciAoUE1DKQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImF0bWVsLDxjaGlwPi1wbWMiLgorCTxjaGlwPiBjYW4gYmU6IGF0OTFybTkyMDAsIGF0OTFzYW05MjYwLCBhdDkxc2FtOWc0NSwgYXQ5MXNhbTluMTIsCisJYXQ5MXNhbTl4NSwgc2FtYTVkMworCistIHJlZzogU2hvdWxkIGNvbnRhaW4gUE1DIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCisKK0V4YW1wbGVzOgorCXBtYzogcG1jQGZmZmZmYzAwIHsKKwkJY29tcGF0aWJsZSA9ICJhdG1lbCxhdDkxcm05MjAwLXBtYyI7CisJCXJlZyA9IDwweGZmZmZmYzAwIDB4MTAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9heHhpYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2F4eGlhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjRlZjljCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9heHhpYS50eHQKQEAgLTAsMCArMSwxMiBAQAorQXh4aWEgQVhNNTV4eCBkZXZpY2UgdHJlZSBiaW5kaW5ncworCitCb2FyZHMgdXNpbmcgdGhlIEFYTTU1eHggU29DIG5lZWQgdG8gaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0eToKKworICAtIGNvbXBhdGlibGUgPSAibHNpLGF4bTU1MTYiCisKK0JvYXJkczoKKworICBMU0kgQVhNNTUxNiBWYWxpZGF0aW9uIGJvYXJkIChBbWFyaWxsbykKKwljb21wYXRpYmxlID0gImxzaSxheG01NTE2LWFtYXJpbGxvIiwgImxzaSxheG01NTE2IgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9iY20vYnJjbSxiY20xMTM1MS1jcHUtbWV0aG9kLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYmNtL2JyY20sYmNtMTEzNTEtY3B1LW1ldGhvZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI0MGMwMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYmNtL2JyY20sYmNtMTEzNTEtY3B1LW1ldGhvZC50eHQKQEAgLTAsMCArMSwzNiBAQAorQnJvYWRjb20gS29uYSBGYW1pbHkgQ1BVIEVuYWJsZSBNZXRob2QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGlzIGJpbmRpbmcgZGVmaW5lcyB0aGUgZW5hYmxlIG1ldGhvZCB1c2VkIGZvciBzdGFydGluZyBzZWNvbmRhcnkKK0NQVXMgaW4gdGhlIGZvbGxvd2luZyBCcm9hZGNvbSBTb0NzOgorICBCQ00xMTEzMCwgQkNNMTExNDAsIEJDTTExMzUxLCBCQ00yODE0NSwgQkNNMjgxNTUsIEJDTTIxNjY0CisKK1RoZSBlbmFibGUgbWV0aG9kIGlzIHNwZWNpZmllZCBieSBkZWZpbmluZyB0aGUgZm9sbG93aW5nIHJlcXVpcmVkCitwcm9wZXJ0aWVzIGluIHRoZSAiY3B1cyIgZGV2aWNlIHRyZWUgbm9kZToKKyAgLSBlbmFibGUtbWV0aG9kID0gImJyY20sYmNtMTEzNTEtY3B1LW1ldGhvZCI7CisgIC0gc2Vjb25kYXJ5LWJvb3QtcmVnID0gPC4uLj47CisKK1RoZSBzZWNvbmRhcnktYm9vdC1yZWcgcHJvcGVydHkgaXMgYSB1MzIgdmFsdWUgdGhhdCBzcGVjaWZpZXMgdGhlCitwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSByZWdpc3RlciB1c2VkIHRvIHJlcXVlc3QgdGhlIFJPTSBob2xkaW5nIHBlbgorY29kZSByZWxlYXNlIGEgc2Vjb25kYXJ5IENQVS4gIFRoZSB2YWx1ZSB3cml0dGVuIHRvIHRoZSByZWdpc3RlciBpcworZm9ybWVkIGJ5IGVuY29kaW5nIHRoZSB0YXJnZXQgQ1BVIGlkIGludG8gdGhlIGxvdyBiaXRzIG9mIHRoZQorcGh5c2ljYWwgc3RhcnQgYWRkcmVzcyBpdCBzaG91bGQganVtcCB0by4KKworRXhhbXBsZToKKwljcHVzIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQllbmFibGUtbWV0aG9kID0gImJyY20sYmNtMTEzNTEtY3B1LW1ldGhvZCI7CisJCXNlY29uZGFyeS1ib290LXJlZyA9IDwweDM1MDA0MTdjPjsKKworCQljcHUwOiBjcHVAMCB7CisJCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE5IjsKKwkJCXJlZyA9IDwwPjsKKwkJfTsKKworCQljcHUxOiBjcHVAMSB7CisJCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE5IjsKKwkJCXJlZyA9IDwxPjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9iY20vYnJjbSxiY20xMTM1MS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2JjbS9icmNtLGJjbTExMzUxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmY2NTYwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9iY20vYnJjbSxiY20xMTM1MS50eHQKQEAgLTAsMCArMSwxMCBAQAorQnJvYWRjb20gQkNNMTEzNTEgZGV2aWNlIHRyZWUgYmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQm9hcmRzIHdpdGggdGhlIGJjbTI4MXh4IFNvQyBmYW1pbHkgKHdoaWNoIGluY2x1ZGVzIGJjbTExMTMwLCBiY20xMTE0MCwKK2JjbTExMzUxLCBiY20yODE0NSwgYmNtMjgxNTUgU29Dcykgc2hhbGwgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0eToKKworY29tcGF0aWJsZSA9ICJicmNtLGJjbTExMzUxIjsKK0RFUFJFQ0FURUQ6IGNvbXBhdGlibGUgPSAiYmNtLGJjbTExMzUxIjsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYmNtL2JyY20sYmNtMjE2NjQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9iY20vYnJjbSxiY20yMTY2NC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA3NzQyNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYmNtL2JyY20sYmNtMjE2NjQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK0Jyb2FkY29tIEJDTTIxNjY0IGRldmljZSB0cmVlIGJpbmRpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgZGV2aWNlIHRyZWUgYmluZGluZ3MgZm9yIGJvYXJkcyB3aXRoIHRoZSBCQ00yMTY2NAorU29DLgorCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydHk6CisgIC0gY29tcGF0aWJsZTogYnJjbSxiY20yMTY2NAorCitFeGFtcGxlOgorCS8geworCQltb2RlbCA9ICJCQ00yMTY2NCBTb0MiOworCQljb21wYXRpYmxlID0gImJyY20sYmNtMjE2NjQiOworCQlbLi4uXQorCX0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYmNtL2JyY20sYmNtMjgzNS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2JjbS9icmNtLGJjbTI4MzUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3ODU3NmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2JjbS9icmNtLGJjbTI4MzUudHh0CkBAIC0wLDAgKzEsMzUgQEAKK0Jyb2FkY29tIEJDTTI4MzUgZGV2aWNlIHRyZWUgYmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmFzcGJlcnJ5IFBpIE1vZGVsIEEKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorY29tcGF0aWJsZSA9ICJyYXNwYmVycnlwaSxtb2RlbC1hIiwgImJyY20sYmNtMjgzNSI7CisKK1Jhc3BiZXJyeSBQaSBNb2RlbCBBKworUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6Citjb21wYXRpYmxlID0gInJhc3BiZXJyeXBpLG1vZGVsLWEtcGx1cyIsICJicmNtLGJjbTI4MzUiOworCitSYXNwYmVycnkgUGkgTW9kZWwgQgorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6Citjb21wYXRpYmxlID0gInJhc3BiZXJyeXBpLG1vZGVsLWIiLCAiYnJjbSxiY20yODM1IjsKKworUmFzcGJlcnJ5IFBpIE1vZGVsIEIgKG5vIFA1KQorZWFybHkgbW9kZWwgQiB3aXRoIEkyQzAgcmF0aGVyIHRoYW4gSTJDMSByb3V0ZWQgdG8gdGhlIGV4cGFuc2lvbiBoZWFkZXIKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorY29tcGF0aWJsZSA9ICJyYXNwYmVycnlwaSxtb2RlbC1iLWkyYzAiLCAiYnJjbSxiY20yODM1IjsKKworUmFzcGJlcnJ5IFBpIE1vZGVsIEIgcmV2MgorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6Citjb21wYXRpYmxlID0gInJhc3BiZXJyeXBpLG1vZGVsLWItcmV2MiIsICJicmNtLGJjbTI4MzUiOworCitSYXNwYmVycnkgUGkgTW9kZWwgQisKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorY29tcGF0aWJsZSA9ICJyYXNwYmVycnlwaSxtb2RlbC1iLXBsdXMiLCAiYnJjbSxiY20yODM1IjsKKworUmFzcGJlcnJ5IFBpIENvbXB1dGUgTW9kdWxlCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKK2NvbXBhdGlibGUgPSAicmFzcGJlcnJ5cGksY29tcHV0ZS1tb2R1bGUiLCAiYnJjbSxiY20yODM1IjsKKworR2VuZXJpYyBCQ00yODM1IGJvYXJkCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKK2NvbXBhdGlibGUgPSAiYnJjbSxiY20yODM1IjsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYmNtL2JyY20sYmNtNDcwOC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2JjbS9icmNtLGJjbTQ3MDgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMGY0OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2JjbS9icmNtLGJjbTQ3MDgudHh0CkBAIC0wLDAgKzEsOCBAQAorQnJvYWRjb20gQkNNNDcwOCBkZXZpY2UgdHJlZSBiaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCb2FyZHMgd2l0aCB0aGUgQkNNNDcwOCBTb0Mgc2hhbGwgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0eToKKworY29tcGF0aWJsZSA9ICJicmNtLGJjbTQ3MDgiOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9iY20vYnJjbSxiY202MzEzOC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2JjbS9icmNtLGJjbTYzMTM4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODJiNmEwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9iY20vYnJjbSxiY202MzEzOC50eHQKQEAgLTAsMCArMSw4NSBAQAorQnJvYWRjb20gQkNNNjMxMzggRFNMIFN5c3RlbS1vbi1hLUNoaXAgZGV2aWNlIHRyZWUgYmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JvYXJkcyBjb21wYXRpYmxlIHdpdGggdGhlIEJDTTYzMTM4IERTTCBTeXN0ZW0tb24tYS1DaGlwIHNob3VsZCBoYXZlIHRoZQorZm9sbG93aW5nIHByb3BlcnRpZXM6CisKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0eToKKworY29tcGF0aWJsZTogc2hvdWxkIGJlICJicmNtLGJjbTYzMTM4IgorCitBbiBvcHRpb25hbCBCb290IGxvb2t1cCB0YWJsZSBEZXZpY2UgVHJlZSBub2RlIGlzIHJlcXVpcmVkIGZvciBzZWNvbmRhcnkgQ1BVCitpbml0aWFsaXphdGlvbiBhcyB3ZWxsIGFzIGEgJ3Jlc2V0cycgcGhhbmRsZSB0byB0aGUgY29ycmVjdCBQTUIgY29udHJvbGxlciBhcworZGVmaW5lZCBpbiByZXNldC9icmNtLGJjbTYzMTM4LXBtYi50eHQgZm9yIHRoaXMgc2Vjb25kYXJ5IENQVSwgYW5kIGFuCisnZW5hYmxlLW1ldGhvZCcgcHJvcGVydHkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHRoZSBCb290IGxvb2t1cCB0YWJsZSBub2RlOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImJyY20sYmNtNjMxMzgtYm9vdGx1dCIKKy0gcmVnOiByZWdpc3RlciBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBmb3IgdGhlIEJvb3QgTG9va3VwIHRhYmxlCisKK09wdGlvbmFsIHByb3BlcnRpZXMgZm9yIHRoZSBwcmltYXJ5IENQVSBub2RlOgorLSBlbmFibGUtbWV0aG9kOiBzaG91bGQgYmUgImJyY20sYmNtNjMxMzgiCisKK09wdGlvbmFsIHByb3BlcnRpZXMgZm9yIHRoZSBzZWNvbmRhcnkgQ1BVIG5vZGU6CistIGVuYWJsZS1tZXRob2Q6IHNob3VsZCBiZSAiYnJjbSxiY202MzEzOCIKKy0gcmVzZXRzOiBwaGFuZGxlIHRvIHRoZSByZWxldmFudCBQTUIgY29udHJvbGxlciwgb25lIGludGVnZXIgaW5kaWNhdGluZyB0aGUgaW50ZXJuYWwKKyAgYnVzIG51bWJlciwgYW5kIGEgc2Vjb25kIGludGVnZXIgaW5kaWNhdGluZyB0aGUgYWRkcmVzcyBvZiB0aGUgQ1BVIGluIHRoZSBQTUIKKyAgaW50ZXJuYWwgYnVzIG51bWJlci4KKworRXhhbXBsZToKKworCWNwdXMgeworCQljcHVAMCB7CisJCQljb21wYXRpYmxlID0gImFybSxjb3RleC1hOSI7CisJCQlyZWcgPSA8MD47CisJCQkuLi4KKwkJCWVuYWJsZS1tZXRob2QgPSAiYnJjbSxiY202MzEzOCI7CisJCX07CisKKwkJY3B1QDEgeworCQkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE5IjsKKwkJCXJlZyA9IDwxPjsKKwkJCS4uLgorCQkJZW5hYmxlLW1ldGhvZCA9ICJicmNtLGJjbTYzMTM4IjsKKwkJCXJlc2V0cyA9IDwmcG1iMCA0IDE+OworCQl9OworCX07CisKKwlib290bHV0OiBib290bHV0QDgwMDAgeworCQljb21wYXRpYmxlID0gImJyY20sYmNtNjMxMzgtYm9vdGx1dCI7CisJCXJlZyA9IDwweDgwMDAgMHg1MD47CisJfTsKKworPT09PT09PQorcmVib290CistLS0tLS0KK1R3byBub2RlcyBhcmUgcmVxdWlyZWQgZm9yIHNvZnR3YXJlIHJlYm9vdDogYSB0aW1lciBub2RlIGFuZCBhIHN5c2Nvbi1yZWJvb3Qgbm9kZS4KKworVGltZXIgbm9kZToKKworLSBjb21wYXRpYmxlOiBNdXN0IGJlICJicmNtLGJjbTYzMjgtdGltZXIiLCAic3lzY29uIgorLSByZWc6IFJlZ2lzdGVyIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoCisKK1N5c2NvbiByZWJvb3Qgbm9kZToKKworU2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9yZXNldC9zeXNjb24tcmVib290LnR4dCBmb3IgdGhlCitkZXRhaWxlZCBsaXN0IG9mIHByb3BlcnRpZXMsIHRoZSB0d28gdmFsdWVzIGRlZmluZWQgYmVsb3cgYXJlIHNwZWNpZmljIHRvIHRoZQorQkNNNjMyOC1zdHlsZSB0aW1lcjoKKworLSBvZmZzZXQ6IFNob3VsZCBiZSAweDM0IHRvIGRlbm90ZSB0aGUgb2Zmc2V0IG9mIHRoZSBUSU1FUl9XRF9USU1FUl9SRVNFVCByZWdpc3RlcgorICBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIFRJTUVSIGJsb2NrCistIG1hc2s6IFNob3VsZCBiZSAxIGZvciB0aGUgU29mdFJzdCBiaXQuCisKK0V4YW1wbGU6CisKKwl0aW1lcjogdGltZXJAODAgeworCQljb21wYXRpYmxlID0gImJyY20sYmNtNjMyOC10aW1lciIsICJzeXNjb24iOworCQlyZWcgPSA8MHg4MCAweDNjPjsKKwl9OworCisJcmVib290IHsKKwkJY29tcGF0aWJsZSA9ICJzeXNjb24tcmVib290IjsKKwkJcmVnbWFwID0gPCZ0aW1lcj47CisJCW9mZnNldCA9IDwweDM0PjsKKwkJbWFzayA9IDwweDE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2JjbS9icmNtLGJyY21zdGIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9iY20vYnJjbSxicmNtc3RiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDBjMWFlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9iY20vYnJjbSxicmNtc3RiLnR4dApAQCAtMCwwICsxLDI1NSBAQAorQVJNIEJyb2FkY29tIFNUQiBwbGF0Zm9ybXMgRGV2aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitCb2FyZHMgd2l0aCBCcm9hZGNvbSBCcmFobWExNSBBUk0tYmFzZWQgQkNNeHh4eCAoZ2VuZXJhbGx5IEJDTTd4eHggdmFyaWFudHMpCitTb0Mgc2hhbGwgaGF2ZSB0aGUgZm9sbG93aW5nIERUIG9yZ2FuaXphdGlvbjoKKworUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgLSBjb21wYXRpYmxlOiAiYnJjbSxiY208Y2hpcF9pZD4iLCAiYnJjbSxicmNtc3RiIgorCitleGFtcGxlOgorLyB7CisgICAgI2FkZHJlc3MtY2VsbHMgPSA8Mj47CisgICAgI3NpemUtY2VsbHMgPSA8Mj47CisgICAgbW9kZWwgPSAiQnJvYWRjb20gU1RCIChiY203NDQ1KSI7CisgICAgY29tcGF0aWJsZSA9ICJicmNtLGJjbTc0NDUiLCAiYnJjbSxicmNtc3RiIjsKKworRnVydGhlciwgc3lzY29uIG5vZGVzIHRoYXQgbWFwIHBsYXRmb3JtLXNwZWNpZmljIHJlZ2lzdGVycyB1c2VkIGZvciBnZW5lcmFsCitzeXN0ZW0gY29udHJvbCBpcyByZXF1aXJlZDoKKworICAgIC0gY29tcGF0aWJsZTogImJyY20sYmNtPGNoaXBfaWQ+LXN1bi10b3AtY3RybCIsICJzeXNjb24iCisgICAgLSBjb21wYXRpYmxlOiAiYnJjbSxiY208Y2hpcF9pZD4taGlmLWNwdWJpdWN0cmwiLCAic3lzY29uIgorICAgIC0gY29tcGF0aWJsZTogImJyY20sYmNtPGNoaXBfaWQ+LWhpZi1jb250aW51YXRpb24iLCAic3lzY29uIgorCitoaWYtY3B1Yml1Y3RybCBub2RlCistLS0tLS0tLS0tLS0tLS0tLS0tCitTb0NzIHdpdGggQnJvYWRjb20gQnJhaG1hMTUgQVJNLWJhc2VkIENQVXMgaGF2ZSBhIHNwZWNpZmljIEJ1cyBJbnRlcmZhY2UgVW5pdAorKEJJVSkgYmxvY2sgd2hpY2ggY29udHJvbHMgYW5kIGludGVyZmFjZXMgdGhlIENQVSBjb21wbGV4IHRvIHRoZSBkaWZmZXJlbnQKK01lbW9yeSBDb250cm9sbGVyIFBvcnRzIChNQ1ApLCBvbmUgcGVyIG1lbW9yeSBjb250cm9sbGVyIChNRU1DKS4gVGhpcyBCSVUgYmxvY2sKK29mZmVycyBhIGZlYXR1cmUgY2FsbGVkIFdyaXRlIFBhaXJpbmcgd2hpY2ggY29uc2lzdHMgaW4gY29sbGFwc2luZyB0d28gYWRqYWNlbnQKK2NhY2hlIGxpbmVzIGludG8gYSBzaW5nbGUgKGJ1cnN0ZWQpIHdyaXRlIHRyYW5zYWN0aW9uIHRvd2FyZHMgdGhlIG1lbW9yeQorY29udHJvbGxlciAoTUVNQykgdG8gbWF4aW1pemUgd3JpdGUgYmFuZHdpZHRoLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgICAgLSBjb21wYXRpYmxlOiBtdXN0IGJlICJicmNtLGJjbTc0NDUtaGlmLWNwdWJpdWN0cmwiLCAic3lzY29uIgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCisgICAgLSBicmNtLHdyaXRlLXBhaXJpbmc6CisJQm9vbGVhbiBwcm9wZXJ0eSwgd2hpY2ggd2hlbiBwcmVzZW50IGluZGljYXRlcyB0aGF0IHRoZSBjaGlwCisJc3VwcG9ydHMgd3JpdGUtcGFpcmluZy4KKworZXhhbXBsZToKKyAgICByZGIgeworICAgICAgICAjYWRkcmVzcy1jZWxscyA9IDwxPjsKKyAgICAgICAgI3NpemUtY2VsbHMgPSA8MT47CisgICAgICAgIGNvbXBhdGlibGUgPSAic2ltcGxlLWJ1cyI7CisgICAgICAgIHJhbmdlcyA9IDwwIDB4MDAgMHhmMDAwMDAwMCAweDEwMDAwMDA+OworCisgICAgICAgIHN1bl90b3BfY3RybDogc3lzY29uQDQwNDAwMCB7CisgICAgICAgICAgICBjb21wYXRpYmxlID0gImJyY20sYmNtNzQ0NS1zdW4tdG9wLWN0cmwiLCAic3lzY29uIjsKKyAgICAgICAgICAgIHJlZyA9IDwweDQwNDAwMCAweDUxYz47CisgICAgICAgIH07CisKKyAgICAgICAgaGlmX2NwdWJpdWN0cmw6IHN5c2NvbkAzZTI0MDAgeworICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJicmNtLGJjbTc0NDUtaGlmLWNwdWJpdWN0cmwiLCAic3lzY29uIjsKKyAgICAgICAgICAgIHJlZyA9IDwweDNlMjQwMCAweDViND47CisgICAgICAgICAgICBicmNtLHdyaXRlLXBhaXJpbmc7CisgICAgICAgIH07CisKKyAgICAgICAgaGlmX2NvbnRpbnVhdGlvbjogc3lzY29uQDQ1MjAwMCB7CisgICAgICAgICAgICBjb21wYXRpYmxlID0gImJyY20sYmNtNzQ0NS1oaWYtY29udGludWF0aW9uIiwgInN5c2NvbiI7CisgICAgICAgICAgICByZWcgPSA8MHg0NTIwMDAgMHgxMDA+OworICAgICAgICB9OworICAgIH07CisKK05vZGVzIHRoYXQgYWxsb3cgZm9yIHN1cHBvcnQgb2YgU01QIGluaXRpYWxpemF0aW9uIGFuZCByZWJvb3QgYXJlIHJlcXVpcmVkOgorCitzbXBib290CistLS0tLS0tCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgICAgLSBjb21wYXRpYmxlCisgICAgICAgIFRoZSBzdHJpbmcgImJyY20sYnJjbXN0Yi1zbXBib290Ii4KKworICAgIC0gc3lzY29uLWNwdQorICAgICAgICBBIHBoYW5kbGUgLyBpbnRlZ2VyIGFycmF5IHByb3BlcnR5IHdoaWNoIGxldHMgdGhlIEJTUCBrbm93IHRoZSBsb2NhdGlvbgorICAgICAgICBvZiBjZXJ0YWluIENQVSBwb3dlci1vbiByZWdpc3RlcnMuCisKKyAgICAgICAgVGhlIGxheW91dCBvZiB0aGUgcHJvcGVydHkgaXMgYXMgZm9sbG93czoKKyAgICAgICAgICAgIG8gYSBwaGFuZGxlIHRvIHRoZSAiaGlmX2NwdWJpdWN0cmwiIHN5c2NvbiBub2RlCisgICAgICAgICAgICBvIG9mZnNldCB0byB0aGUgYmFzZSBDUFUgcG93ZXIgem9uZSByZWdpc3RlcgorICAgICAgICAgICAgbyBvZmZzZXQgdG8gdGhlIGJhc2UgQ1BVIHJlc2V0IHJlZ2lzdGVyCisKKyAgICAtIHN5c2Nvbi1jb250CisgICAgICAgIEEgcGhhbmRsZSBwb2ludGluZyB0byB0aGUgc3lzY29uIG5vZGUgd2hpY2ggZGVzY3JpYmVzIHRoZSBDUFUgYm9vdAorICAgICAgICBjb250aW51YXRpb24gcmVnaXN0ZXJzLgorICAgICAgICAgICAgbyBhIHBoYW5kbGUgdG8gdGhlICJoaWZfY29udGludWF0aW9uIiBzeXNjb24gbm9kZQorCitleGFtcGxlOgorICAgIHNtcGJvb3QgeworICAgICAgICBjb21wYXRpYmxlID0gImJyY20sYnJjbXN0Yi1zbXBib290IjsKKyAgICAgICAgc3lzY29uLWNwdSA9IDwmaGlmX2NwdWJpdWN0cmwgMHg4OCAweDE3OD47CisgICAgICAgIHN5c2Nvbi1jb250ID0gPCZoaWZfY29udGludWF0aW9uPjsKKyAgICB9OworCityZWJvb3QKKy0tLS0tLS0KK1JlcXVpcmVkIHByb3BlcnRpZXMKKworICAgIC0gY29tcGF0aWJsZQorICAgICAgICBUaGUgc3RyaW5nIHByb3BlcnR5ICJicmNtLGJyY21zdGItcmVib290IiBmb3IgNDBubS8yOG5tIGNoaXBzIHdpdGgKKyAgICAgICAgdGhlIG5ldyBTWVNfQ1RSTCBpbnRlcmZhY2UsIG9yICJicmNtLGJjbTcwMzgtcmVib290IiBmb3IgNjVubQorICAgICAgICBjaGlwcyB3aXRoIHRoZSBvbGQgU1VOX1RPUF9DVFJMIGludGVyZmFjZS4KKworICAgIC0gc3lzY29uCisgICAgICAgIEEgcGhhbmRsZSAvIGludGVnZXIgYXJyYXkgdGhhdCBwb2ludHMgdG8gdGhlIHN5c2NvbiBub2RlIHdoaWNoIGRlc2NyaWJlcworICAgICAgICB0aGUgZ2VuZXJhbCBzeXN0ZW0gcmVzZXQgcmVnaXN0ZXJzLgorICAgICAgICAgICAgbyBhIHBoYW5kbGUgdG8gInN1bl90b3BfY3RybCIKKyAgICAgICAgICAgIG8gb2Zmc2V0IHRvIHRoZSAicmVzZXQgc291cmNlIGVuYWJsZSIgcmVnaXN0ZXIKKyAgICAgICAgICAgIG8gb2Zmc2V0IHRvIHRoZSAic29mdHdhcmUgbWFzdGVyIHJlc2V0IiByZWdpc3RlcgorCitleGFtcGxlOgorICAgIHJlYm9vdCB7CisgICAgICAgIGNvbXBhdGlibGUgPSAiYnJjbSxicmNtc3RiLXJlYm9vdCI7CisgICAgICAgIHN5c2NvbiA9IDwmc3VuX3RvcF9jdHJsIDB4MzA0IDB4MzA4PjsKKyAgICB9OworCisKKworUG93ZXIgbWFuYWdlbWVudAorLS0tLS0tLS0tLS0tLS0tLQorCitGb3IgcG93ZXIgbWFuYWdlbWVudCAocGFydGljdWxhcmx5LCBTMi9TMy9TNSBzeXN0ZW0gc3VzcGVuZCksIHRoZSBmb2xsb3dpbmcgU29DCitjb21wb25lbnRzIGFyZSBuZWVkZWQ6CisKKz0gQWx3YXlzLU9uIGNvbnRyb2wgYmxvY2sgKEFPTiBDVFJMKQorCitUaGlzIGhhcmR3YXJlIHByb3ZpZGVzIGNvbnRyb2wgcmVnaXN0ZXJzIGZvciB0aGUgImFsd2F5cy1vbiIgKGV2ZW4gaW4gbG93LXBvd2VyCittb2RlcykgaGFyZHdhcmUsIHN1Y2ggYXMgdGhlIFBvd2VyIE1hbmFnZW1lbnQgU3RhdGUgTWFjaGluZSAoUE1TTSkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgICAgIDogc2hvdWxkIGNvbnRhaW4gImJyY20sYnJjbXN0Yi1hb24tY3RybCIKKy0gcmVnICAgICAgICAgICAgOiB0aGUgcmVnaXN0ZXIgc3RhcnQgYW5kIGxlbmd0aCBmb3IgdGhlIEFPTiBDVFJMIGJsb2NrCisKK0V4YW1wbGU6CisKK2Fvbi1jdHJsQDQxMDAwMCB7CisJY29tcGF0aWJsZSA9ICJicmNtLGJyY21zdGItYW9uLWN0cmwiOworCXJlZyA9IDwweDQxMDAwMCAweDQwMD47Cit9OworCis9IE1lbW9yeSBjb250cm9sbGVycworCitBIEJyb2FkY29tIFNUQiBTb0MgdHlwaWNhbGx5IGhhcyBhIG51bWJlciBvZiBpbmRlcGVuZGVudCBtZW1vcnkgY29udHJvbGxlcnMsCitlYWNoIG9mIHdoaWNoIG1heSBoYXZlIHNldmVyYWwgYXNzb2NpYXRlZCBoYXJkd2FyZSBibG9ja3MsIHdoaWNoIGFyZSB2ZXJzaW9uZWQKK2luZGVwZW5kZW50bHkgKGNvbnRyb2wgcmVnaXN0ZXJzLCBERFIgUEhZcywgZXRjLikuIE9uZSBtaWdodCBjb25zaWRlcgorZGVzY3JpYmluZyB0aGVzZSBjb250cm9sbGVycyBhcyBhIHBhcmVudCAibWVtb3J5IGNvbnRyb2xsZXJzIiBibG9jaywgd2hpY2gKK2NvbnRhaW5zIE4gc3ViLW5vZGVzIChvbmUgZm9yIGVhY2ggY29udHJvbGxlciBpbiB0aGUgc3lzdGVtKSwgZWFjaCBvZiB3aGljaCBpcworYXNzb2NpYXRlZCB3aXRoIGEgbnVtYmVyIG9mIGhhcmR3YXJlIHJlZ2lzdGVyIHJlc291cmNlcyAoZS5nLiwgaXRzIFBIWSkuIFNlZQordGhlIGV4YW1wbGUgZGV2aWNlIHRyZWUgc25pcHBldCBiZWxvdy4KKworPT0gTUVNQyAoTUVNb3J5IENvbnRyb2xsZXIpCisKK1JlcHJlc2VudHMgYSBzaW5nbGUgbWVtb3J5IGNvbnRyb2xsZXIgaW5zdGFuY2UuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgICAgIDogc2hvdWxkIGNvbnRhaW4gImJyY20sYnJjbXN0Yi1tZW1jIiBhbmQgInNpbXBsZS1idXMiCisKK1Nob3VsZCBjb250YWluIHN1Ym5vZGVzIGZvciBhbnkgb2YgdGhlIGZvbGxvd2luZyByZWxldmFudCBoYXJkd2FyZSByZXNvdXJjZXM6CisKKz09IEREUiBQSFkgY29udHJvbAorCitDb250cm9sIHJlZ2lzdGVycyBmb3IgdGhpcyBtZW1vcnkgY29udHJvbGxlcidzIEREUiBQSFkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgICAgIDogc2hvdWxkIGNvbnRhaW4gb25lIG9mIHRoZXNlCisJImJyY20sYnJjbXN0Yi1kZHItcGh5LXYyMjUuMSIKKwkiYnJjbSxicmNtc3RiLWRkci1waHktdjI0MC4xIgorCSJicmNtLGJyY21zdGItZGRyLXBoeS12MjQwLjIiCisKKy0gcmVnICAgICAgICAgICAgOiB0aGUgRERSIFBIWSByZWdpc3RlciByYW5nZQorCis9PSBERFIgU0hJTVBIWQorCitDb250cm9sIHJlZ2lzdGVycyBmb3IgdGhpcyBtZW1vcnkgY29udHJvbGxlcidzIEREUiBTSElNUEhZLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlICAgICA6IHNob3VsZCBjb250YWluICJicmNtLGJyY21zdGItZGRyLXNoaW1waHktdjEuMCIKKy0gcmVnICAgICAgICAgICAgOiB0aGUgRERSIFNISU1QSFkgcmVnaXN0ZXIgcmFuZ2UKKworPT0gTUVNQyBERFIgY29udHJvbAorCitTZXF1ZW5jZXIgRFJBTSBwYXJhbWV0ZXJzIGFuZCBjb250cm9sIHJlZ2lzdGVycy4gVXNlZCBmb3IgU2VsZi1SZWZyZXNoCitQb3dlci1Eb3duIChTUlBEKSwgYW1vbmcgb3RoZXIgdGhpbmdzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlICAgICA6IHNob3VsZCBjb250YWluICJicmNtLGJyY21zdGItbWVtYy1kZHIiCistIHJlZyAgICAgICAgICAgIDogdGhlIE1FTUMgRERSIHJlZ2lzdGVyIHJhbmdlCisKK0V4YW1wbGU6CisKK21lbW9yeV9jb250cm9sbGVycyB7CisJcmFuZ2VzOworCWNvbXBhdGlibGUgPSAic2ltcGxlLWJ1cyI7CisKKwltZW1jQDAgeworCQljb21wYXRpYmxlID0gImJyY20sYnJjbXN0Yi1tZW1jIiwgInNpbXBsZS1idXMiOworCQlyYW5nZXM7CisKKwkJZGRyLXBoeUBmMTEwNjAwMCB7CisJCQljb21wYXRpYmxlID0gImJyY20sYnJjbXN0Yi1kZHItcGh5LXYyNDAuMSI7CisJCQlyZWcgPSA8MHhmMTEwNjAwMCAweDIxYz47CisJCX07CisKKwkJc2hpbXBoeUBmMTEwODAwMCB7CisJCQljb21wYXRpYmxlID0gImJyY20sYnJjbXN0Yi1kZHItc2hpbXBoeS12MS4wIjsKKwkJCXJlZyA9IDwweGYxMTA4MDAwIDB4ZTQ+OworCQl9OworCisJCW1lbWMtZGRyQGYxMTAyMDAwIHsKKwkJCXJlZyA9IDwweGYxMTAyMDAwIDB4ODAwPjsKKwkJCWNvbXBhdGlibGUgPSAiYnJjbSxicmNtc3RiLW1lbWMtZGRyIjsKKwkJfTsKKwl9OworCisJbWVtY0AxIHsKKwkJY29tcGF0aWJsZSA9ICJicmNtLGJyY21zdGItbWVtYyIsICJzaW1wbGUtYnVzIjsKKwkJcmFuZ2VzOworCisJCWRkci1waHlAZjExODYwMDAgeworCQkJY29tcGF0aWJsZSA9ICJicmNtLGJyY21zdGItZGRyLXBoeS12MjQwLjEiOworCQkJcmVnID0gPDB4ZjExODYwMDAgMHgyMWM+OworCQl9OworCisJCXNoaW1waHlAZjExODgwMDAgeworCQkJY29tcGF0aWJsZSA9ICJicmNtLGJyY21zdGItZGRyLXNoaW1waHktdjEuMCI7CisJCQlyZWcgPSA8MHhmMTE4ODAwMCAweGU0PjsKKwkJfTsKKworCQltZW1jLWRkckBmMTE4MjAwMCB7CisJCQlyZWcgPSA8MHhmMTE4MjAwMCAweDgwMD47CisJCQljb21wYXRpYmxlID0gImJyY20sYnJjbXN0Yi1tZW1jLWRkciI7CisJCX07CisJfTsKKworCW1lbWNAMiB7CisJCWNvbXBhdGlibGUgPSAiYnJjbSxicmNtc3RiLW1lbWMiLCAic2ltcGxlLWJ1cyI7CisJCXJhbmdlczsKKworCQlkZHItcGh5QGYxMjA2MDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiYnJjbSxicmNtc3RiLWRkci1waHktdjI0MC4xIjsKKwkJCXJlZyA9IDwweGYxMjA2MDAwIDB4MjFjPjsKKwkJfTsKKworCQlzaGltcGh5QGYxMjA4MDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiYnJjbSxicmNtc3RiLWRkci1zaGltcGh5LXYxLjAiOworCQkJcmVnID0gPDB4ZjEyMDgwMDAgMHhlND47CisJCX07CisKKwkJbWVtYy1kZHJAZjEyMDIwMDAgeworCQkJcmVnID0gPDB4ZjEyMDIwMDAgMHg4MDA+OworCQkJY29tcGF0aWJsZSA9ICJicmNtLGJyY21zdGItbWVtYy1kZHIiOworCQl9OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9iY20vYnJjbSxjeWdudXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9iY20vYnJjbSxjeWdudXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjNzcxNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2JjbS9icmNtLGN5Z251cy50eHQKQEAgLTAsMCArMSwzMSBAQAorQnJvYWRjb20gQ3lnbnVzIGRldmljZSB0cmVlIGJpbmRpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitCb2FyZHMgd2l0aCBDeWdudXMgU29DcyBzaGFsbCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKKworUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnR5OgorCitCQ00xMTMwMAorY29tcGF0aWJsZSA9ICJicmNtLGJjbTExMzAwIiwgImJyY20sY3lnbnVzIjsKKworQkNNMTEzMjAKK2NvbXBhdGlibGUgPSAiYnJjbSxiY20xMTMyMCIsICJicmNtLGN5Z251cyI7CisKK0JDTTExMzUwCitjb21wYXRpYmxlID0gImJyY20sYmNtMTEzNTAiLCAiYnJjbSxjeWdudXMiOworCitCQ00xMTM2MAorY29tcGF0aWJsZSA9ICJicmNtLGJjbTExMzYwIiwgImJyY20sY3lnbnVzIjsKKworQkNNNTgzMDAKK2NvbXBhdGlibGUgPSAiYnJjbSxiY201ODMwMCIsICJicmNtLGN5Z251cyI7CisKK0JDTTU4MzAyCitjb21wYXRpYmxlID0gImJyY20sYmNtNTgzMDIiLCAiYnJjbSxjeWdudXMiOworCitCQ001ODMwMworY29tcGF0aWJsZSA9ICJicmNtLGJjbTU4MzAzIiwgImJyY20sY3lnbnVzIjsKKworQkNNNTgzMDUKK2NvbXBhdGlibGUgPSAiYnJjbSxiY201ODMwNSIsICJicmNtLGN5Z251cyI7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2JjbS9icmNtLG5zcC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2JjbS9icmNtLG5zcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFlNTNlNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYmNtL2JyY20sbnNwLnR4dApAQCAtMCwwICsxLDM0IEBACitCcm9hZGNvbSBOb3J0aHN0YXIgUGx1cyBkZXZpY2UgdHJlZSBiaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQnJvYWRjb20gTm9ydGhzdGFyIFBsdXMgZmFtaWx5IG9mIFNvQ3MgYXJlIHVzZWQgZm9yIHN3aXRjaGluZyBjb250cm9sCithbmQgbWFuYWdlbWVudCBhcHBsaWNhdGlvbnMgYXMgd2VsbCBhcyByZXNpZGVudGlhbCByb3V0ZXIvZ2F0ZXdheQorYXBwbGljYXRpb25zLiBUaGUgU29DIGZlYXR1cmVzIGR1YWwgY29yZSBDb3J0ZXggQTkgQVJNIENQVXMsIGludGVncmF0aW5nCitzZXZlcmFsIHBlcmlwaGVyYWwgaW50ZXJmYWNlcyBpbmNsdWRpbmcgbXVsdGlwbGUgR2lnYWJpdCBFdGhlcm5ldCBQSFlzLAorRERSMyBtZW1vcnksIFBDSUUgR2VuLTIsIFVTQiAyLjAgYW5kIFVTQiAzLjAsIHNlcmlhbCBhbmQgTkFORCBmbGFzaCwKK1NBVEEgYW5kIHNldmVyYWwgb3RoZXIgSU8gY29udHJvbGxlcnMuCisKK0JvYXJkcyB3aXRoIE5vcnRoc3RhciBQbHVzIFNvQ3Mgc2hhbGwgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0eToKKworQkNNNTg1MjIKK2NvbXBhdGlibGUgPSAiYnJjbSxiY201ODUyMiIsICJicmNtLG5zcCI7CisKK0JDTTU4NTI1Citjb21wYXRpYmxlID0gImJyY20sYmNtNTg1MjUiLCAiYnJjbSxuc3AiOworCitCQ001ODUzNQorY29tcGF0aWJsZSA9ICJicmNtLGJjbTU4NTM1IiwgImJyY20sbnNwIjsKKworQkNNNTg2MjIKK2NvbXBhdGlibGUgPSAiYnJjbSxiY201ODYyMiIsICJicmNtLG5zcCI7CisKK0JDTTU4NjIzCitjb21wYXRpYmxlID0gImJyY20sYmNtNTg2MjMiLCAiYnJjbSxuc3AiOworCitCQ001ODYyNQorY29tcGF0aWJsZSA9ICJicmNtLGJjbTU4NjI1IiwgImJyY20sbnNwIjsKKworQkNNODgzMTIKK2NvbXBhdGlibGUgPSAiYnJjbSxiY204ODMxMiIsICJicmNtLG5zcCI7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2JjbS9uczIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9iY20vbnMyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWYwNTZmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9iY20vbnMyLnR4dApAQCAtMCwwICsxLDkgQEAKK0Jyb2FkY29tIE5vcnRoIFN0YXIgMiAoTlMyKSBkZXZpY2UgdHJlZSBiaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JvYXJkcyB3aXRoIE5TMiBzaGFsbCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKKworUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnR5OgorCitOUzIgU1ZLIGJvYXJkCitjb21wYXRpYmxlID0gImJyY20sbnMyLXN2ayIsICJicmNtLG5zMiI7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2JjbS9yYXNwYmVycnlwaSxiY20yODM1LWZpcm13YXJlLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYmNtL3Jhc3BiZXJyeXBpLGJjbTI4MzUtZmlybXdhcmUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4MjRiMzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2JjbS9yYXNwYmVycnlwaSxiY20yODM1LWZpcm13YXJlLnR4dApAQCAtMCwwICsxLDE0IEBACitSYXNwYmVycnkgUGkgVmlkZW9Db3JlIGZpcm13YXJlIGRyaXZlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6CQlTaG91bGQgYmUgInJhc3BiZXJyeXBpLGJjbTI4MzUtZmlybXdhcmUiCistIG1ib3hlczoJCVBoYW5kbGUgdG8gdGhlIGZpcm13YXJlIGRldmljZSdzIE1haWxib3guCisJCQkgIChTZWU6IC4uL21haWxib3gvbWFpbGJveC50eHQgZm9yIG1vcmUgaW5mb3JtYXRpb24pCisKK0V4YW1wbGU6CisKK2Zpcm13YXJlIHsKKwljb21wYXRpYmxlID0gInJhc3BiZXJyeXBpLGJjbTI4MzUtZmlybXdhcmUiOworCW1ib3hlcyA9IDwmbWFpbGJveD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9jYWx4ZWRhLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vY2FseGVkYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVmY2Y5NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vY2FseGVkYS50eHQKQEAgLTAsMCArMSwxNSBAQAorQ2FseGVkYSBQbGF0Zm9ybXMgRGV2aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JvYXJkcyB3aXRoIENhbHhlZGEgQ29ydGV4LUE5IGJhc2VkIEVDWC0xMDAwIChIaWdoYmFuaykgU09DIHNoYWxsIGhhdmUgdGhlCitmb2xsb3dpbmcgcHJvcGVydGllcy4KKworUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgLSBjb21wYXRpYmxlID0gImNhbHhlZGEsaGlnaGJhbmsiOworCisKK0JvYXJkcyB3aXRoIENhbHhlZGEgQ29ydGV4LUExNSBiYXNlZCBFQ1gtMjAwMCBTT0Mgc2hhbGwgaGF2ZSB0aGUgZm9sbG93aW5nCitwcm9wZXJ0aWVzLgorCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKyAgICAtIGNvbXBhdGlibGUgPSAiY2FseGVkYSxlY3gtMjAwMCI7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2NhbHhlZGEvbDJlY2MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9jYWx4ZWRhL2wyZWNjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGU2NDJhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9jYWx4ZWRhL2wyZWNjLnR4dApAQCAtMCwwICsxLDE1IEBACitDYWx4ZWRhIEhpZ2hiYW5rIEwyIGNhY2hlIEVDQworCitQcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJjYWx4ZWRhLGhiLXNyZWdzLWwyLWVjYyIKKy0gcmVnIDogQWRkcmVzcyBhbmQgc2l6ZSBmb3IgRUNDIGVycm9yIGludGVycnVwdCBjbGVhciByZWdpc3RlcnMuCistIGludGVycnVwdHMgOiBTaG91bGQgYmUgc2luZ2xlIGJpdCBlcnJvciBpbnRlcnJ1cHQsIHRoZW4gZG91YmxlIGJpdCBlcnJvcgorCWludGVycnVwdC4KKworRXhhbXBsZToKKworCXNyZWdzQGZmZjNjMjAwIHsKKwkJY29tcGF0aWJsZSA9ICJjYWx4ZWRhLGhiLXNyZWdzLWwyLWVjYyI7CisJCXJlZyA9IDwweGZmZjNjMjAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDcxIDQgIDAgNzIgND47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vY2F2aXVtLXRodW5kZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9jYXZpdW0tdGh1bmRlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY2M2E1OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vY2F2aXVtLXRodW5kZXIudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0Nhdml1bSBUaHVuZGVyIHBsYXRmb3JtIGRldmljZSB0cmVlIGJpbmRpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCb2FyZHMgd2l0aCBDYXZpdW0ncyBUaHVuZGVyIFNvQyBzaGFsbCBoYXZlIGZvbGxvd2luZyBwcm9wZXJ0aWVzLgorCitSb290IE5vZGUKKy0tLS0tLS0tLQorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlID0gImNhdml1bSx0aHVuZGVyLTg4eHgiOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9jY2kudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9jY2kudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlZjFkMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2NjaS50eHQKQEAgLTAsMCArMSwyMjkgQEAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0FSTSBDQ0kgY2FjaGUgY29oZXJlbnQgaW50ZXJjb25uZWN0IGJpbmRpbmcgZGVzY3JpcHRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQVJNIG11bHRpLWNsdXN0ZXIgc3lzdGVtcyBtYWludGFpbiBpbnRyYS1jbHVzdGVyIGNvaGVyZW5jeSB0aHJvdWdoIGEKK2NhY2hlIGNvaGVyZW50IGludGVyY29ubmVjdCAoQ0NJKSB0aGF0IGlzIGNhcGFibGUgb2YgbW9uaXRvcmluZyBidXMKK3RyYW5zYWN0aW9ucyBhbmQgbWFuYWdlIGNvaGVyZW5jeSwgVExCIGludmFsaWRhdGlvbnMgYW5kIG1lbW9yeSBiYXJyaWVycy4KKworSXQgYWxsb3dzIHNub29waW5nIGFuZCBkaXN0cmlidXRlZCB2aXJ0dWFsIG1lbW9yeSBtZXNzYWdlIGJyb2FkY2FzdCBhY3Jvc3MKK2NsdXN0ZXJzLCB0aHJvdWdoIG1lbW9yeSBtYXBwZWQgaW50ZXJmYWNlLCB3aXRoIGEgZ2xvYmFsIGNvbnRyb2wgcmVnaXN0ZXIKK3NwYWNlIGFuZCBtdWx0aXBsZSBzZXRzIG9mIGludGVyZmFjZSBjb250cm9sIHJlZ2lzdGVycywgb25lIHBlciBzbGF2ZQoraW50ZXJmYWNlLgorCitCaW5kaW5ncyBmb3IgdGhlIENDSSBub2RlIGZvbGxvdyB0aGUgZVBBUFIgc3RhbmRhcmQsIGF2YWlsYWJsZSBmcm9tOgorCit3d3cucG93ZXIub3JnL2RvY3VtZW50YXRpb24vZXBhcHItdmVyc2lvbi0xLTEvCisKK3dpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSBiaW5kaW5ncyBkZXNjcmliZWQgaW4gdGhpcyBkb2N1bWVudCB3aGljaCBhcmUKK3NwZWNpZmljIHRvIEFSTS4KKworKiBDQ0kgaW50ZXJjb25uZWN0IG5vZGUKKworCURlc2NyaXB0aW9uOiBEZXNjcmliZXMgYSBDQ0kgY2FjaGUgY29oZXJlbnQgSW50ZXJjb25uZWN0IGNvbXBvbmVudAorCisJTm9kZSBuYW1lIG11c3QgYmUgImNjaSIuCisJTm9kZSdzIHBhcmVudCBtdXN0IGJlIHRoZSByb290IG5vZGUgLywgYW5kIHRoZSBhZGRyZXNzIHNwYWNlIHZpc2libGUKKwl0aHJvdWdoIHRoZSBDQ0kgaW50ZXJjb25uZWN0IGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgc2VlbiBmcm9tIHRoZQorCXJvb3Qgbm9kZSAoaWUgZnJvbSBDUFVzIHBlcnNwZWN0aXZlIGFzIHBlciBEVCBzdGFuZGFyZCkuCisJRXZlcnkgQ0NJIG5vZGUgaGFzIHRvIGRlZmluZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisKKwktIGNvbXBhdGlibGUKKwkJVXNhZ2U6IHJlcXVpcmVkCisJCVZhbHVlIHR5cGU6IDxzdHJpbmc+CisJCURlZmluaXRpb246IG11c3QgY29udGFpbiBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKwkJCSAgICAiYXJtLGNjaS00MDAiCisJCQkgICAgImFybSxjY2ktNTAwIgorCisJLSByZWcKKwkJVXNhZ2U6IHJlcXVpcmVkCisJCVZhbHVlIHR5cGU6IEludGVnZXIgY2VsbHMuIEEgcmVnaXN0ZXIgZW50cnksIGV4cHJlc3NlZCBhcyBhIHBhaXIKKwkJCSAgICBvZiBjZWxscywgY29udGFpbmluZyBiYXNlIGFuZCBzaXplLgorCQlEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiBTcGVjaWZpZXMgYmFzZSBwaHlzaWNhbAorCQkJICAgIGFkZHJlc3Mgb2YgQ0NJIGNvbnRyb2wgcmVnaXN0ZXJzIGNvbW1vbiB0byBhbGwKKwkJCSAgICBpbnRlcmZhY2VzLgorCisJLSByYW5nZXM6CisJCVVzYWdlOiByZXF1aXJlZAorCQlWYWx1ZSB0eXBlOiBJbnRlZ2VyIGNlbGxzLiBBbiBhcnJheSBvZiByYW5nZSBlbnRyaWVzLCBleHByZXNzZWQKKwkJCSAgICBhcyBhIHR1cGxlIG9mIGNlbGxzLCBjb250YWluaW5nIGNoaWxkIGFkZHJlc3MsCisJCQkgICAgcGFyZW50IGFkZHJlc3MgYW5kIHRoZSBzaXplIG9mIHRoZSByZWdpb24gaW4gdGhlCisJCQkgICAgY2hpbGQgYWRkcmVzcyBzcGFjZS4KKwkJRGVmaW5pdGlvbjogQSBzdGFuZGFyZCBwcm9wZXJ0eS4gRm9sbG93IHJ1bGVzIGluIHRoZSBlUEFQUiBmb3IKKwkJCSAgICBoaWVyYXJjaGljYWwgYnVzIGFkZHJlc3NpbmcuIENDSSBpbnRlcmZhY2VzCisJCQkgICAgYWRkcmVzc2VzIHJlZmVyIHRvIHRoZSBwYXJlbnQgbm9kZSBhZGRyZXNzaW5nCisJCQkgICAgc2NoZW1lIHRvIGRlY2xhcmUgdGhlaXIgcmVnaXN0ZXIgYmFzZXMuCisKKwlDQ0kgaW50ZXJjb25uZWN0IG5vZGUgY2FuIGRlZmluZSB0aGUgZm9sbG93aW5nIGNoaWxkIG5vZGVzOgorCisJLSBDQ0kgY29udHJvbCBpbnRlcmZhY2Ugbm9kZXMKKworCQlOb2RlIG5hbWUgbXVzdCBiZSAic2xhdmUtaWYiLgorCQlQYXJlbnQgbm9kZSBtdXN0IGJlIENDSSBpbnRlcmNvbm5lY3Qgbm9kZS4KKworCQlBIENDSSBjb250cm9sIGludGVyZmFjZSBub2RlIG11c3QgY29udGFpbiB0aGUgZm9sbG93aW5nCisJCXByb3BlcnRpZXM6CisKKwkJLSBjb21wYXRpYmxlCisJCQlVc2FnZTogcmVxdWlyZWQKKwkJCVZhbHVlIHR5cGU6IDxzdHJpbmc+CisJCQlEZWZpbml0aW9uOiBtdXN0IGJlIHNldCB0bworCQkJCSAgICAiYXJtLGNjaS00MDAtY3RybC1pZiIKKworCQktIGludGVyZmFjZS10eXBlOgorCQkJVXNhZ2U6IHJlcXVpcmVkCisJCQlWYWx1ZSB0eXBlOiA8c3RyaW5nPgorCQkJRGVmaW5pdGlvbjogbXVzdCBiZSBzZXQgdG8gb25lIG9mIHsiYWNlIiwgImFjZS1saXRlIn0KKwkJCQkgICAgZGVwZW5kaW5nIG9uIHRoZSBpbnRlcmZhY2UgdHlwZSB0aGUgbm9kZQorCQkJCSAgICByZXByZXNlbnRzLgorCisJCS0gcmVnOgorCQkJVXNhZ2U6IHJlcXVpcmVkCisJCQlWYWx1ZSB0eXBlOiBJbnRlZ2VyIGNlbGxzLiBBIHJlZ2lzdGVyIGVudHJ5LCBleHByZXNzZWQKKwkJCQkgICAgYXMgYSBwYWlyIG9mIGNlbGxzLCBjb250YWluaW5nIGJhc2UgYW5kCisJCQkJICAgIHNpemUuCisJCQlEZWZpbml0aW9uOiB0aGUgYmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZQorCQkJCSAgICBjb3JyZXNwb25kaW5nIGludGVyZmFjZSBwcm9ncmFtbWluZworCQkJCSAgICByZWdpc3RlcnMuCisKKwktIENDSSBQTVUgbm9kZQorCisJCVBhcmVudCBub2RlIG11c3QgYmUgQ0NJIGludGVyY29ubmVjdCBub2RlLgorCisJCUEgQ0NJIHBtdSBub2RlIG11c3QgY29udGFpbiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisKKwkJLSBjb21wYXRpYmxlCisJCQlVc2FnZTogcmVxdWlyZWQKKwkJCVZhbHVlIHR5cGU6IDxzdHJpbmc+CisJCQlEZWZpbml0aW9uOiBNdXN0IGNvbnRhaW4gb25lIG9mOgorCQkJCSAiYXJtLGNjaS00MDAtcG11LHIwIgorCQkJCSAiYXJtLGNjaS00MDAtcG11LHIxIgorCQkJCSAiYXJtLGNjaS00MDAtcG11IiAgLSBERVBSRUNBVEVELCBwZXJtaXR0ZWQgb25seSB3aGVyZSBPUyBoYXMKKwkJCQkJCSAgICAgIHNlY3VyZSBhY2NlcyB0byBDQ0kgcmVnaXN0ZXJzCisJCQkJICJhcm0sY2NpLTUwMC1wbXUscjAiCisJCS0gcmVnOgorCQkJVXNhZ2U6IHJlcXVpcmVkCisJCQlWYWx1ZSB0eXBlOiBJbnRlZ2VyIGNlbGxzLiBBIHJlZ2lzdGVyIGVudHJ5LCBleHByZXNzZWQKKwkJCQkgICAgYXMgYSBwYWlyIG9mIGNlbGxzLCBjb250YWluaW5nIGJhc2UgYW5kCisJCQkJICAgIHNpemUuCisJCQlEZWZpbml0aW9uOiB0aGUgYmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZQorCQkJCSAgICBjb3JyZXNwb25kaW5nIGludGVyZmFjZSBwcm9ncmFtbWluZworCQkJCSAgICByZWdpc3RlcnMuCisKKwkJLSBpbnRlcnJ1cHRzOgorCQkJVXNhZ2U6IHJlcXVpcmVkCisJCQlWYWx1ZSB0eXBlOiBJbnRlZ2VyIGNlbGxzLiBBcnJheSBvZiBpbnRlcnJ1cHQgc3BlY2lmaWVyCisJCQkJICAgIGVudHJpZXMsIGFzIGRlZmluZWQgaW4KKwkJCQkgICAgLi4vaW50ZXJydXB0LWNvbnRyb2xsZXIvaW50ZXJydXB0cy50eHQuCisJCQlEZWZpbml0aW9uOiBsaXN0IG9mIGNvdW50ZXIgb3ZlcmZsb3cgaW50ZXJydXB0cywgb25lIHBlcgorCQkJCSAgICBjb3VudGVyLiBUaGUgaW50ZXJydXB0cyBtdXN0IGJlIHNwZWNpZmllZAorCQkJCSAgICBzdGFydGluZyB3aXRoIHRoZSBjeWNsZSBjb3VudGVyIG92ZXJmbG93CisJCQkJICAgIGludGVycnVwdCwgZm9sbG93ZWQgYnkgY291bnRlcjAgb3ZlcmZsb3cKKwkJCQkgICAgaW50ZXJydXB0LCBjb3VudGVyMSBvdmVyZmxvdyBpbnRlcnJ1cHQsLi4uCisJCQkJICAgICxjb3VudGVyTiBvdmVyZmxvdyBpbnRlcnJ1cHQuCisKKwkJCQkgICAgVGhlIENDSSBQTVUgaGFzIGFuIGludGVycnVwdCBzaWduYWwgZm9yIGVhY2gKKwkJCQkgICAgY291bnRlci4gVGhlIG51bWJlciBvZiBpbnRlcnJ1cHRzIG11c3QgYmUKKwkJCQkgICAgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBjb3VudGVycy4KKworKiBDQ0kgaW50ZXJjb25uZWN0IGJ1cyBtYXN0ZXJzCisKKwlEZXNjcmlwdGlvbjogbWFzdGVycyBpbiB0aGUgZGV2aWNlIHRyZWUgY29ubmVjdGVkIHRvIGEgQ0NJIHBvcnQKKwkJICAgICAoaW5jbHVzaXZlIG9mIENQVXMgYW5kIHRoZWlyIGNwdSBub2RlcykuCisKKwlBIENDSSBpbnRlcmNvbm5lY3QgYnVzIG1hc3RlciBub2RlIG11c3QgY29udGFpbiB0aGUgZm9sbG93aW5nCisJcHJvcGVydGllczoKKworCS0gY2NpLWNvbnRyb2wtcG9ydDoKKwkJVXNhZ2U6IHJlcXVpcmVkCisJCVZhbHVlIHR5cGU6IDxwaGFuZGxlPgorCQlEZWZpbml0aW9uOiBhIHBoYW5kbGUgY29udGFpbmluZyB0aGUgQ0NJIGNvbnRyb2wgaW50ZXJmYWNlIG5vZGUKKwkJCSAgICB0aGUgbWFzdGVyIGlzIGNvbm5lY3RlZCB0by4KKworRXhhbXBsZToKKworCWNwdXMgeworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisKKwkJQ1BVMDogY3B1QDAgeworCQkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hMTUiOworCQkJY2NpLWNvbnRyb2wtcG9ydCA9IDwmY2NpX2NvbnRyb2wxPjsKKwkJCXJlZyA9IDwweDA+OworCQl9OworCisJCUNQVTE6IGNwdUAxIHsKKwkJCWRldmljZV90eXBlID0gImNwdSI7CisJCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTE1IjsKKwkJCWNjaS1jb250cm9sLXBvcnQgPSA8JmNjaV9jb250cm9sMT47CisJCQlyZWcgPSA8MHgxPjsKKwkJfTsKKworCQlDUFUyOiBjcHVAMTAwIHsKKwkJCWRldmljZV90eXBlID0gImNwdSI7CisJCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTciOworCQkJY2NpLWNvbnRyb2wtcG9ydCA9IDwmY2NpX2NvbnRyb2wyPjsKKwkJCXJlZyA9IDwweDEwMD47CisJCX07CisKKwkJQ1BVMzogY3B1QDEwMSB7CisJCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE3IjsKKwkJCWNjaS1jb250cm9sLXBvcnQgPSA8JmNjaV9jb250cm9sMj47CisJCQlyZWcgPSA8MHgxMDE+OworCQl9OworCisJfTsKKworCWRtYTA6IGRtYUAzMDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0scGwzMzAiLCAiYXJtLHByaW1lY2VsbCI7CisJCWNjaS1jb250cm9sLXBvcnQgPSA8JmNjaV9jb250cm9sMD47CisJCXJlZyA9IDwweDAgMHgzMDAwMDAwIDB4MCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDEwPjsKKwkJI2RtYS1jZWxscyA9IDwxPjsKKwkJI2RtYS1jaGFubmVscyA9IDw4PjsKKwkJI2RtYS1yZXF1ZXN0cyA9IDwzMj47CisJfTsKKworCWNjaUAyYzA5MDAwMCB7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNjaS00MDAiOworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCXJlZyA9IDwweDAgMHgyYzA5MDAwMCAwIDB4MTAwMD47CisJCXJhbmdlcyA9IDwweDAgMHgwIDB4MmMwOTAwMDAgMHgxMDAwMD47CisKKwkJY2NpX2NvbnRyb2wwOiBzbGF2ZS1pZkAxMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiYXJtLGNjaS00MDAtY3RybC1pZiI7CisJCQlpbnRlcmZhY2UtdHlwZSA9ICJhY2UtbGl0ZSI7CisJCQlyZWcgPSA8MHgxMDAwIDB4MTAwMD47CisJCX07CisKKwkJY2NpX2NvbnRyb2wxOiBzbGF2ZS1pZkA0MDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiYXJtLGNjaS00MDAtY3RybC1pZiI7CisJCQlpbnRlcmZhY2UtdHlwZSA9ICJhY2UiOworCQkJcmVnID0gPDB4NDAwMCAweDEwMDA+OworCQl9OworCisJCWNjaV9jb250cm9sMjogc2xhdmUtaWZANTAwMCB7CisJCQljb21wYXRpYmxlID0gImFybSxjY2ktNDAwLWN0cmwtaWYiOworCQkJaW50ZXJmYWNlLXR5cGUgPSAiYWNlIjsKKwkJCXJlZyA9IDwweDUwMDAgMHgxMDAwPjsKKwkJfTsKKworCQlwbXVAOTAwMCB7CisJCQkgY29tcGF0aWJsZSA9ICJhcm0sY2NpLTQwMC1wbXUiOworCQkJIHJlZyA9IDwweDkwMDAgMHg1MDAwPjsKKwkJCSBpbnRlcnJ1cHRzID0gPDAgMTAxIDQ+LAorCQkJCSAgICAgIDwwIDEwMiA0PiwKKwkJCQkgICAgICA8MCAxMDMgND4sCisJCQkJICAgICAgPDAgMTA0IDQ+LAorCQkJCSAgICAgIDwwIDEwNSA0PjsKKwkJfTsKKwl9OworCitUaGlzIENDSSBub2RlIGNvcnJlc3BvbmRzIHRvIGEgQ0NJIGNvbXBvbmVudCB3aG9zZSBjb250cm9sIHJlZ2lzdGVycyBzaXRzCithdCBhZGRyZXNzIDB4MDAwMDAwMDAyYzA5MDAwMC4KK0NDSSBzbGF2ZSBpbnRlcmZhY2UgQDB4MDAwMDAwMDAyYzA5MTAwMCBpcyBjb25uZWN0ZWQgdG8gZG1hIGNvbnRyb2xsZXIgZG1hMC4KK0NDSSBzbGF2ZSBpbnRlcmZhY2UgQDB4MDAwMDAwMDAyYzA5NDAwMCBpcyBjb25uZWN0ZWQgdG8gQ1BVcyB7Q1BVMCwgQ1BVMX07CitDQ0kgc2xhdmUgaW50ZXJmYWNlIEAweDAwMDAwMDAwMmMwOTUwMDAgaXMgY29ubmVjdGVkIHRvIENQVXMge0NQVTIsIENQVTN9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9jY24udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9jY24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMDBkMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2Njbi50eHQKQEAgLTAsMCArMSwyMSBAQAorKiBBUk0gQ0NOIChDYWNoZSBDb2hlcmVudCBOZXR3b3JrKQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IChzdGFuZGFyZCBjb21wYXRpYmxlIHN0cmluZykgc2hvdWxkIGJlIG9uZSBvZjoKKwkiYXJtLGNjbi01MDQiCisJImFybSxjY24tNTA4IgorCistIHJlZzogKHN0YW5kYXJkIHJlZ2lzdGVycyBwcm9wZXJ0eSkgcGh5c2ljYWwgYWRkcmVzcyBhbmQgc2l6ZQorCSgxNk1CKSBvZiB0aGUgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYmxvY2sKKworLSBpbnRlcnJ1cHRzOiAoc3RhbmRhcmQgaW50ZXJydXB0IHByb3BlcnR5KSBzaW5nbGUgaW50ZXJydXB0CisJZ2VuZXJhdGVkIGJ5IHRoZSBjb250cm9sIGJsb2NrCisKK0V4YW1wbGU6CisKKwljY25AMHgyMDAwMDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY2NuLTUwNCI7CisJCXJlZyA9IDwweDIwIDB4MDAwMDAwMDAgMCAweDEwMDAwMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMTgxIDQ+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2NvaGVyZW5jeS1mYWJyaWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9jb2hlcmVuY3ktZmFicmljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjVjM2Y2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9jb2hlcmVuY3ktZmFicmljLnR4dApAQCAtMCwwICsxLDQ4IEBACitDb2hlcmVuY3kgZmFicmljCistLS0tLS0tLS0tLS0tLS0tCitBdmFpbGFibGUgb24gTWFydmVsbCBTT0NzOiBBcm1hZGEgMzcwLCBBcm1hZGEgMzc1LCBBcm1hZGEgMzh4IGFuZCBBcm1hZGEgWFAKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiB0aGUgcG9zc2libGUgdmFsdWVzIGFyZToKKworICogIm1hcnZlbGwsY29oZXJlbmN5LWZhYnJpYyIsIHRvIGJlIHVzZWQgZm9yIHRoZSBjb2hlcmVuY3kgZmFicmljIG9mCisgICB0aGUgQXJtYWRhIDM3MCBhbmQgQXJtYWRhIFhQLgorCisgKiAibWFydmVsbCxhcm1hZGEtMzc1LWNvaGVyZW5jeS1mYWJyaWMiLCBmb3IgdGhlIEFybWFkYSAzNzUgY29oZXJlbmN5CisgICBmYWJyaWMuCisKKyAqICJtYXJ2ZWxsLGFybWFkYS0zODAtY29oZXJlbmN5LWZhYnJpYyIsIGZvciB0aGUgQXJtYWRhIDM4eCBjb2hlcmVuY3kKKyAgIGZhYnJpYy4KKworLSByZWc6IFNob3VsZCBjb250YWluIGNvaGVyZW5jeSBmYWJyaWMgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZAorICBsZW5ndGguCisKKyAqIEZvciAibWFydmVsbCxjb2hlcmVuY3ktZmFicmljIiwgdGhlIGZpcnN0IHBhaXIgZm9yIHRoZSBjb2hlcmVuY3kKKyAgIGZhYnJpYyByZWdpc3RlcnMsIHNlY29uZCBwYWlyIGZvciB0aGUgcGVyLUNQVSBmYWJyaWMgcmVnaXN0ZXJzLgorCisgKiBGb3IgIm1hcnZlbGwsYXJtYWRhLTM3NS1jb2hlcmVuY3ktZmFicmljIiwgb25seSBvbmUgcGFpciBpcyBuZWVkZWQKKyAgIGZvciB0aGUgcGVyLUNQVSBmYWJyaWMgcmVnaXN0ZXJzLgorCisgKiBGb3IgIm1hcnZlbGwsYXJtYWRhLTM4MC1jb2hlcmVuY3ktZmFicmljIiwgb25seSBvbmUgcGFpciBpcyBuZWVkZWQKKyAgIGZvciB0aGUgcGVyLUNQVSBmYWJyaWMgcmVnaXN0ZXJzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIGJyb2tlbi1pZGxlOiBib29sZWFuIHRvIHNldCB3aGVuIHRoZSBJZGxlIG1vZGUgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUKKyAgaGFyZHdhcmUuCisKK0V4YW1wbGVzOgorCitjb2hlcmVuY3ktZmFicmljQGQwMDIwMjAwIHsKKwljb21wYXRpYmxlID0gIm1hcnZlbGwsY29oZXJlbmN5LWZhYnJpYyI7CisJcmVnID0gPDB4ZDAwMjAyMDAgMHhiMD4sCisJCTwweGQwMDIxODEwIDB4MWM+OworCit9OworCitjb2hlcmVuY3ktZmFicmljQDIxODEwIHsKKwljb21wYXRpYmxlID0gIm1hcnZlbGwsYXJtYWRhLTM3NS1jb2hlcmVuY3ktZmFicmljIjsKKwlyZWcgPSA8MHgyMTgxMCAweDFjPjsKK307CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vY29yZXNpZ2h0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vY29yZXNpZ2h0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjkzOGViCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9jb3Jlc2lnaHQudHh0CkBAIC0wLDAgKzEsMjA0IEBACisqIENvcmVTaWdodCBDb21wb25lbnRzOgorCitDb3JlU2lnaHQgY29tcG9uZW50cyBhcmUgY29tcGxpYW50IHdpdGggdGhlIEFSTSBDb3JlU2lnaHQgYXJjaGl0ZWN0dXJlCitzcGVjaWZpY2F0aW9uIGFuZCBjYW4gYmUgY29ubmVjdGVkIGluIHZhcmlvdXMgdG9wb2xvZ2llcyB0byBzdWl0IGEgcGFydGljdWxhcgorU29DcyB0cmFjaW5nIG5lZWRzLiBUaGVzZSB0cmFjZSBjb21wb25lbnRzIGNhbiBnZW5lcmFsbHkgYmUgY2xhc3NpZmllZCBhcworc2lua3MsIGxpbmtzIGFuZCBzb3VyY2VzLiBUcmFjZSBkYXRhIHByb2R1Y2VkIGJ5IG9uZSBvciBtb3JlIHNvdXJjZXMgZmxvd3MKK3Rocm91Z2ggdGhlIGludGVybWVkaWF0ZSBsaW5rcyBjb25uZWN0aW5nIHRoZSBzb3VyY2UgdG8gdGhlIGN1cnJlbnRseSBzZWxlY3RlZAorc2luay4gRWFjaCBDb3JlU2lnaHQgY29tcG9uZW50IGRldmljZSBzaG91bGQgdXNlIHRoZXNlIHByb3BlcnRpZXMgdG8gZGVzY3JpYmUKK2l0cyBoYXJkd2FyZSBjaGFyYWN0ZXJpc3Rjcy4KKworKiBSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBhbGwgY29tcG9uZW50cyAqZXhjZXB0KiBub24tY29uZmlndXJhYmxlIHJlcGxpY2F0b3JzOgorCisJKiBjb21wYXRpYmxlOiBUaGVzZSBoYXZlIHRvIGJlIHN1cHBsZW1lbnRlZCB3aXRoICJhcm0scHJpbWVjZWxsIiBhcworCSAgZHJpdmVycyBhcmUgdXNpbmcgdGhlIEFNQkEgYnVzIGludGVyZmFjZS4gIFBvc3NpYmxlIHZhbHVlcyBpbmNsdWRlOgorCQktICJhcm0sY29yZXNpZ2h0LWV0YjEwIiwgImFybSxwcmltZWNlbGwiOworCQktICJhcm0sY29yZXNpZ2h0LXRwaXUiLCAiYXJtLHByaW1lY2VsbCI7CisJCS0gImFybSxjb3Jlc2lnaHQtdG1jIiwgImFybSxwcmltZWNlbGwiOworCQktICJhcm0sY29yZXNpZ2h0LWZ1bm5lbCIsICJhcm0scHJpbWVjZWxsIjsKKwkJLSAiYXJtLGNvcmVzaWdodC1ldG0zeCIsICJhcm0scHJpbWVjZWxsIjsKKwkJLSAiYXJtLGNvcmVzaWdodC1ldG00eCIsICJhcm0scHJpbWVjZWxsIjsKKwkJLSAicWNvbSxjb3Jlc2lnaHQtcmVwbGljYXRvcjF4IiwgImFybSxwcmltZWNlbGwiOworCisJKiByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlcgorCSAgc2V0KHMpIG9mIHRoZSBjb21wb25lbnQuCisKKwkqIGNsb2NrczogdGhlIGNsb2NrcyBhc3NvY2lhdGVkIHRvIHRoaXMgY29tcG9uZW50LgorCisJKiBjbG9jay1uYW1lczogdGhlIG5hbWUgb2YgdGhlIGNsb2NrcyByZWZlcmVuY2VkIGJ5IHRoZSBjb2RlLgorCSAgU2luY2Ugd2UgYXJlIHVzaW5nIHRoZSBBTUJBIGZyYW1ld29yaywgdGhlIG5hbWUgb2YgdGhlIGNsb2NrCisJICBwcm92aWRpbmcgdGhlIGludGVyY29ubmVjdCBzaG91bGQgYmUgImFwYl9wY2xrIiwgYW5kIHNvbWUKKwkgIGNvcmVzaWdodCBibG9ja3MgYWxzbyBoYXZlIGFuIGFkZGl0aW9uYWwgY2xvY2sgImF0Y2xrIiwgd2hpY2gKKwkgIGNsb2NrcyB0aGUgY29yZSBvZiB0aGF0IGNvcmVzaWdodCBjb21wb25lbnQuIFRoZSBsYXR0ZXIgY2xvY2sKKwkgIGlzIG9wdGlvbmFsLgorCisJKiBwb3J0IG9yIHBvcnRzOiBUaGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbXBvbmVudCdzIHBvcnQKKwkgIGxheW91dCB1c2luZyB0aGUgZ2VuZXJpYyBEVCBncmFwaCBwcmVzZW50YXRpb24gZm91bmQgaW4KKwkgICJiaW5kaW5ncy9ncmFwaC50eHQiLgorCisqIFJlcXVpcmVkIHByb3BlcnRpZXMgZm9yIGRldmljZXMgdGhhdCBkb24ndCBzaG93IHVwIG9uIHRoZSBBTUJBIGJ1cywgc3VjaCBhcworICBub24tY29uZmlndXJhYmxlIHJlcGxpY2F0b3JzOgorCisJKiBjb21wYXRpYmxlOiBDdXJyZW50bHkgc3VwcG9ydGVkIHZhbHVlIGlzIChub3RlIHRoZSBhYnNlbmNlIG9mIHRoZQorCSAgQU1CQSBtYXJrZWUpOgorCQktICJhcm0sY29yZXNpZ2h0LXJlcGxpY2F0b3IiCisKKwkqIHBvcnQgb3IgcG9ydHM6IHNhbWUgYXMgYWJvdmUuCisKKyogT3B0aW9uYWwgcHJvcGVydGllcyBmb3IgRVRNL1BUTXM6CisKKwkqIGFybSxjcDE0OiBtdXN0IGJlIHByZXNlbnQgaWYgdGhlIHN5c3RlbSBhY2Nlc3NlcyBFVE0vUFRNIG1hbmFnZW1lbnQKKwkgIHJlZ2lzdGVycyB2aWEgY28tcHJvY2Vzc29yIDE0LgorCisJKiBjcHU6IHRoZSBjcHUgcGhhbmRsZSB0aGlzIEVUTS9QVE0gaXMgYWZmaW5lZCB0by4gV2hlbiBvbWl0dGVkIHRoZQorCSAgc291cmNlIGlzIGNvbnNpZGVyZWQgdG8gYmVsb25nIHRvIENQVTAuCisKKyogT3B0aW9uYWwgcHJvcGVydHkgZm9yIFRNQzoKKworCSogYXJtLGJ1ZmZlci1zaXplOiBzaXplIG9mIGNvbnRpZ3VvdXMgYnVmZmVyIHNwYWNlIGZvciBUTUMgRVRSCisJIChlbWJlZGRlZCB0cmFjZSByb3V0ZXIpCisKKworRXhhbXBsZToKKworMS4gU2lua3MKKwlldGJAMjAwMTAwMDAgeworCQljb21wYXRpYmxlID0gImFybSxjb3Jlc2lnaHQtZXRiMTAiLCAiYXJtLHByaW1lY2VsbCI7CisJCXJlZyA9IDwwIDB4MjAwMTAwMDAgMCAweDEwMDA+OworCisJCWNsb2NrcyA9IDwmb3NjY2xrNmE+OworCQljbG9jay1uYW1lcyA9ICJhcGJfcGNsayI7CisJCXBvcnQgeworCQkJZXRiX2luX3BvcnQ6IGVuZHBvaW50QDAgeworCQkJCXNsYXZlLW1vZGU7CisJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZyZXBsaWNhdG9yX291dF9wb3J0MD47CisJCQl9OworCQl9OworCX07CisKKwl0cGl1QDIwMDMwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29yZXNpZ2h0LXRwaXUiLCAiYXJtLHByaW1lY2VsbCI7CisJCXJlZyA9IDwwIDB4MjAwMzAwMDAgMCAweDEwMDA+OworCisJCWNsb2NrcyA9IDwmb3NjY2xrNmE+OworCQljbG9jay1uYW1lcyA9ICJhcGJfcGNsayI7CisJCXBvcnQgeworCQkJdHBpdV9pbl9wb3J0OiBlbmRwb2ludEAwIHsKKwkJCQlzbGF2ZS1tb2RlOworCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmcmVwbGljYXRvcl9vdXRfcG9ydDE+OworCQkJfTsKKwkJfTsKKwl9OworCisyLiBMaW5rcworCXJlcGxpY2F0b3IgeworCQkvKiBub24tY29uZmlndXJhYmxlIHJlcGxpY2F0b3JzIGRvbid0IHNob3cgdXAgb24gdGhlCisJCSAqIEFNQkEgYnVzLiAgQXMgc3VjaCBubyBuZWVkIHRvIGFkZCAiYXJtLHByaW1lY2VsbCIuCisJCSAqLworCQljb21wYXRpYmxlID0gImFybSxjb3Jlc2lnaHQtcmVwbGljYXRvciI7CisKKwkJcG9ydHMgeworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQkJLyogcmVwbGljYXRvciBvdXRwdXQgcG9ydHMgKi8KKwkJCXBvcnRAMCB7CisJCQkJcmVnID0gPDA+OworCQkJCXJlcGxpY2F0b3Jfb3V0X3BvcnQwOiBlbmRwb2ludCB7CisJCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmZXRiX2luX3BvcnQ+OworCQkJCX07CisJCQl9OworCisJCQlwb3J0QDEgeworCQkJCXJlZyA9IDwxPjsKKwkJCQlyZXBsaWNhdG9yX291dF9wb3J0MTogZW5kcG9pbnQgeworCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JnRwaXVfaW5fcG9ydD47CisJCQkJfTsKKwkJCX07CisKKwkJCS8qIHJlcGxpY2F0b3IgaW5wdXQgcG9ydCAqLworCQkJcG9ydEAyIHsKKwkJCQlyZWcgPSA8MD47CisJCQkJcmVwbGljYXRvcl9pbl9wb3J0MDogZW5kcG9pbnQgeworCQkJCQlzbGF2ZS1tb2RlOworCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmZ1bm5lbF9vdXRfcG9ydDA+OworCQkJCX07CisJCQl9OworCQl9OworCX07CisKKwlmdW5uZWxAMjAwNDAwMDAgeworCQljb21wYXRpYmxlID0gImFybSxjb3Jlc2lnaHQtZnVubmVsIiwgImFybSxwcmltZWNlbGwiOworCQlyZWcgPSA8MCAweDIwMDQwMDAwIDAgMHgxMDAwPjsKKworCQljbG9ja3MgPSA8Jm9zY2NsazZhPjsKKwkJY2xvY2stbmFtZXMgPSAiYXBiX3BjbGsiOworCQlwb3J0cyB7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCisJCQkvKiBmdW5uZWwgb3V0cHV0IHBvcnQgKi8KKwkJCXBvcnRAMCB7CisJCQkJcmVnID0gPDA+OworCQkJCWZ1bm5lbF9vdXRfcG9ydDA6IGVuZHBvaW50IHsKKwkJCQkJcmVtb3RlLWVuZHBvaW50ID0KKwkJCQkJCQk8JnJlcGxpY2F0b3JfaW5fcG9ydDA+OworCQkJCX07CisJCQl9OworCisJCQkvKiBmdW5uZWwgaW5wdXQgcG9ydHMgKi8KKwkJCXBvcnRAMSB7CisJCQkJcmVnID0gPDA+OworCQkJCWZ1bm5lbF9pbl9wb3J0MDogZW5kcG9pbnQgeworCQkJCQlzbGF2ZS1tb2RlOworCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JnB0bTBfb3V0X3BvcnQ+OworCQkJCX07CisJCQl9OworCisJCQlwb3J0QDIgeworCQkJCXJlZyA9IDwxPjsKKwkJCQlmdW5uZWxfaW5fcG9ydDE6IGVuZHBvaW50IHsKKwkJCQkJc2xhdmUtbW9kZTsKKwkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZwdG0xX291dF9wb3J0PjsKKwkJCQl9OworCQkJfTsKKworCQkJcG9ydEAzIHsKKwkJCQlyZWcgPSA8Mj47CisJCQkJZnVubmVsX2luX3BvcnQyOiBlbmRwb2ludCB7CisJCQkJCXNsYXZlLW1vZGU7CisJCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmZXRtMF9vdXRfcG9ydD47CisJCQkJfTsKKwkJCX07CisKKwkJfTsKKwl9OworCiszLiBTb3VyY2VzCisJcHRtQDIyMDFjMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29yZXNpZ2h0LWV0bTN4IiwgImFybSxwcmltZWNlbGwiOworCQlyZWcgPSA8MCAweDIyMDFjMDAwIDAgMHgxMDAwPjsKKworCQljcHUgPSA8JmNwdTA+OworCQljbG9ja3MgPSA8Jm9zY2NsazZhPjsKKwkJY2xvY2stbmFtZXMgPSAiYXBiX3BjbGsiOworCQlwb3J0IHsKKwkJCXB0bTBfb3V0X3BvcnQ6IGVuZHBvaW50IHsKKwkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmZ1bm5lbF9pbl9wb3J0MD47CisJCQl9OworCQl9OworCX07CisKKwlwdG1AMjIwMWQwMDAgeworCQljb21wYXRpYmxlID0gImFybSxjb3Jlc2lnaHQtZXRtM3giLCAiYXJtLHByaW1lY2VsbCI7CisJCXJlZyA9IDwwIDB4MjIwMWQwMDAgMCAweDEwMDA+OworCisJCWNwdSA9IDwmY3B1MT47CisJCWNsb2NrcyA9IDwmb3NjY2xrNmE+OworCQljbG9jay1uYW1lcyA9ICJhcGJfcGNsayI7CisJCXBvcnQgeworCQkJcHRtMV9vdXRfcG9ydDogZW5kcG9pbnQgeworCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmZnVubmVsX2luX3BvcnQxPjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vY3B1LWVuYWJsZS1tZXRob2QvYWwsYWxwaW5lLXNtcCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vY3B1LWVuYWJsZS1tZXRob2QvYWwsYWxwaW5lLXNtcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmUwY2M1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9jcHUtZW5hYmxlLW1ldGhvZC9hbCxhbHBpbmUtc21wCkBAIC0wLDAgKzEsNTIgQEAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitTZWNvbmRhcnkgQ1BVIGVuYWJsZS1tZXRob2QgImFsLGFscGluZS1zbXAiIGJpbmRpbmcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSAiYWwsYWxwaW5lLXNtcCIgbWV0aG9kIGZvcgorZW5hYmxpbmcgc2Vjb25kYXJ5IENQVXMuIFRvIGFwcGx5IHRvIGFsbCBDUFVzLCBhIHNpbmdsZQorImFsLGFscGluZS1zbXAiIGVuYWJsZSBtZXRob2Qgc2hvdWxkIGJlIGRlZmluZWQgaW4gdGhlCisiY3B1cyIgbm9kZS4KKworRW5hYmxlIG1ldGhvZCBuYW1lOgkiYWwsYWxwaW5lLXNtcCIKK0NvbXBhdGlibGUgbWFjaGluZXM6CSJhbCxhbHBpbmUiCitDb21wYXRpYmxlIENQVXM6CSJhcm0sY29ydGV4LWExNSIKK1JlbGF0ZWQgcHJvcGVydGllczoJKG5vbmUpCisKK05vdGU6CitUaGlzIGVuYWJsZSBtZXRob2QgcmVxdWlyZXMgdmFsaWQgbm9kZXMgY29tcGF0aWJsZSB3aXRoCisiYWwsYWxwaW5lLWNwdS1yZXN1bWUiIGFuZCAiYWwsYWxwaW5lLW5iLXNlcnZpY2UiWzFdLgorCitFeGFtcGxlOgorCitjcHVzIHsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwllbmFibGUtbWV0aG9kID0gImFsLGFscGluZS1zbXAiOworCisJY3B1QDAgeworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTE1IjsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJcmVnID0gPDA+OworCX07CisKKwljcHVAMSB7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hMTUiOworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQlyZWcgPSA8MT47CisJfTsKKworCWNwdUAyIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWExNSI7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCXJlZyA9IDwyPjsKKwl9OworCisJY3B1QDMgeworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTE1IjsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJcmVnID0gPDM+OworCX07Cit9OworCistLQorWzFdIGFybS9hbCxhbHBpbmUudHh0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2NwdS1lbmFibGUtbWV0aG9kL21hcnZlbGwsYmVybGluLXNtcCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vY3B1LWVuYWJsZS1tZXRob2QvbWFydmVsbCxiZXJsaW4tc21wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkMjM2YjcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2NwdS1lbmFibGUtbWV0aG9kL21hcnZlbGwsYmVybGluLXNtcApAQCAtMCwwICsxLDQxIEBACis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorU2Vjb25kYXJ5IENQVSBlbmFibGUtbWV0aG9kICJtYXJ2ZWxsLGJlcmxpbi1zbXAiIGJpbmRpbmcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSAibWFydmVsbCxiZXJsaW4tc21wIiBtZXRob2QgZm9yIGVuYWJsaW5nIHNlY29uZGFyeQorQ1BVcy4gVG8gYXBwbHkgdG8gYWxsIENQVXMsIGEgc2luZ2xlICJtYXJ2ZWxsLGJlcmxpbi1zbXAiIGVuYWJsZSBtZXRob2Qgc2hvdWxkCitiZSBkZWZpbmVkIGluIHRoZSAiY3B1cyIgbm9kZS4KKworRW5hYmxlIG1ldGhvZCBuYW1lOgkibWFydmVsbCxiZXJsaW4tc21wIgorQ29tcGF0aWJsZSBtYWNoaW5lczoJIm1hcnZlbGwsYmVybGluMiIgYW5kICJtYXJ2ZWxsLGJlcmxpbjJxIgorQ29tcGF0aWJsZSBDUFVzOgkibWFydmVsbCxwajRiIiBhbmQgImFybSxjb3J0ZXgtYTkiCitSZWxhdGVkIHByb3BlcnRpZXM6CShub25lKQorCitOb3RlOgorVGhpcyBlbmFibGUgbWV0aG9kIG5lZWRzIHZhbGlkIG5vZGVzIGNvbXBhdGlibGUgd2l0aCAiYXJtLGNvcnRleC1hOS1zY3UiIGFuZAorIm1hcnZlbGwsYmVybGluLWNwdS1jdHJsIlsxXS4KKworRXhhbXBsZToKKworCWNwdXMgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJCWVuYWJsZS1tZXRob2QgPSAibWFydmVsbCxiZXJsaW4tc21wIjsKKworCQljcHVAMCB7CisJCQljb21wYXRpYmxlID0gIm1hcnZlbGwscGo0YiI7CisJCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQkJbmV4dC1sZXZlbC1jYWNoZSA9IDwmbDI+OworCQkJcmVnID0gPDA+OworCQl9OworCisJCWNwdUAxIHsKKwkJCWNvbXBhdGlibGUgPSAibWFydmVsbCxwajRiIjsKKwkJCWRldmljZV90eXBlID0gImNwdSI7CisJCQluZXh0LWxldmVsLWNhY2hlID0gPCZsMj47CisJCQlyZWcgPSA8MT47CisJCX07CisJfTsKKworLS0KK1sxXSBhcm0vbWFydmVsbCxiZXJsaW4udHh0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2NwdXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9jcHVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTA3YTg3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9jcHVzLnR4dApAQCAtMCwwICsxLDQ0MSBAQAorPT09PT09PT09PT09PT09PT0KK0FSTSBDUFVzIGJpbmRpbmdzCis9PT09PT09PT09PT09PT09PQorCitUaGUgZGV2aWNlIHRyZWUgYWxsb3dzIHRvIGRlc2NyaWJlIHRoZSBsYXlvdXQgb2YgQ1BVcyBpbiBhIHN5c3RlbSB0aHJvdWdoCit0aGUgImNwdXMiIG5vZGUsIHdoaWNoIGluIHR1cm4gY29udGFpbnMgYSBudW1iZXIgb2Ygc3Vibm9kZXMgKGllICJjcHUiKQorZGVmaW5pbmcgcHJvcGVydGllcyBmb3IgZXZlcnkgY3B1LgorCitCaW5kaW5ncyBmb3IgQ1BVIG5vZGVzIGZvbGxvdyB0aGUgZVBBUFIgdjEuMSBzdGFuZGFyZCwgYXZhaWxhYmxlIGZyb206CisKK2h0dHBzOi8vd3d3LnBvd2VyLm9yZy9kb2N1bWVudGF0aW9uL2VwYXByLXZlcnNpb24tMS0xLworCit3aXRoIHVwZGF0ZXMgZm9yIDMyLWJpdCBhbmQgNjQtYml0IEFSTSBzeXN0ZW1zIHByb3ZpZGVkIGluIHRoaXMgZG9jdW1lbnQuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDb252ZW50aW9uIHVzZWQgaW4gdGhpcyBkb2N1bWVudAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBkb2N1bWVudCBmb2xsb3dzIHRoZSBjb252ZW50aW9ucyBkZXNjcmliZWQgaW4gdGhlIGVQQVBSIHYxLjEsIHdpdGgKK3RoZSBhZGRpdGlvbjoKKworLSBzcXVhcmUgYnJhY2tldHMgZGVmaW5lIGJpdGZpZWxkcywgZWcgcmVnWzc6MF0gdmFsdWUgb2YgdGhlIGJpdGZpZWxkIGluCisgIHRoZSByZWcgcHJvcGVydHkgY29udGFpbmVkIGluIGJpdHMgNyBkb3duIHRvIDAKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorY3B1cyBhbmQgY3B1IG5vZGUgYmluZGluZ3MgZGVmaW5pdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgQVJNIGFyY2hpdGVjdHVyZSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBlUEFQUiwgcmVxdWlyZXMgdGhlIGNwdXMgYW5kIGNwdQorbm9kZXMgdG8gYmUgcHJlc2VudCBhbmQgY29udGFpbiB0aGUgcHJvcGVydGllcyBkZXNjcmliZWQgYmVsb3cuCisKKy0gY3B1cyBub2RlCisKKwlEZXNjcmlwdGlvbjogQ29udGFpbmVyIG9mIGNwdSBub2RlcworCisJVGhlIG5vZGUgbmFtZSBtdXN0IGJlICJjcHVzIi4KKworCUEgY3B1cyBub2RlIG11c3QgZGVmaW5lIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKKworCS0gI2FkZHJlc3MtY2VsbHMKKwkJVXNhZ2U6IHJlcXVpcmVkCisJCVZhbHVlIHR5cGU6IDx1MzI+CisKKwkJRGVmaW5pdGlvbiBkZXBlbmRzIG9uIEFSTSBhcmNoaXRlY3R1cmUgdmVyc2lvbiBhbmQKKwkJY29uZmlndXJhdGlvbjoKKworCQkJIyBPbiB1bmlwcm9jZXNzb3IgQVJNIGFyY2hpdGVjdHVyZXMgcHJldmlvdXMgdG8gdjcKKwkJCSAgdmFsdWUgbXVzdCBiZSAxLCB0byBlbmFibGUgYSBzaW1wbGUgZW51bWVyYXRpb24KKwkJCSAgc2NoZW1lIGZvciBwcm9jZXNzb3JzIHRoYXQgZG8gbm90IGhhdmUgYSBIVyBDUFUKKwkJCSAgaWRlbnRpZmljYXRpb24gcmVnaXN0ZXIuCisJCQkjIE9uIDMyLWJpdCBBUk0gMTEgTVBjb3JlLCBBUk0gdjcgb3IgbGF0ZXIgc3lzdGVtcworCQkJICB2YWx1ZSBtdXN0IGJlIDEsIHRoYXQgY29ycmVzcG9uZHMgdG8gQ1BVSUQvTVBJRFIKKwkJCSAgcmVnaXN0ZXJzIHNpemVzLgorCQkJIyBPbiBBUk0gdjggNjQtYml0IHN5c3RlbXMgdmFsdWUgc2hvdWxkIGJlIHNldCB0byAyLAorCQkJICB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBNUElEUl9FTDEgcmVnaXN0ZXIgc2l6ZS4KKwkJCSAgSWYgTVBJRFJfRUwxWzYzOjMyXSB2YWx1ZSBpcyBlcXVhbCB0byAwIG9uIGFsbCBDUFVzCisJCQkgIGluIHRoZSBzeXN0ZW0sICNhZGRyZXNzLWNlbGxzIGNhbiBiZSBzZXQgdG8gMSwgc2luY2UKKwkJCSAgTVBJRFJfRUwxWzYzOjMyXSBiaXRzIGFyZSBub3QgdXNlZCBmb3IgQ1BVcworCQkJICBpZGVudGlmaWNhdGlvbi4KKwktICNzaXplLWNlbGxzCisJCVVzYWdlOiByZXF1aXJlZAorCQlWYWx1ZSB0eXBlOiA8dTMyPgorCQlEZWZpbml0aW9uOiBtdXN0IGJlIHNldCB0byAwCisKKy0gY3B1IG5vZGUKKworCURlc2NyaXB0aW9uOiBEZXNjcmliZXMgYSBDUFUgaW4gYW4gQVJNIGJhc2VkIHN5c3RlbQorCisJUFJPUEVSVElFUworCisJLSBkZXZpY2VfdHlwZQorCQlVc2FnZTogcmVxdWlyZWQKKwkJVmFsdWUgdHlwZTogPHN0cmluZz4KKwkJRGVmaW5pdGlvbjogbXVzdCBiZSAiY3B1IgorCS0gcmVnCisJCVVzYWdlIGFuZCBkZWZpbml0aW9uIGRlcGVuZCBvbiBBUk0gYXJjaGl0ZWN0dXJlIHZlcnNpb24gYW5kCisJCWNvbmZpZ3VyYXRpb246CisKKwkJCSMgT24gdW5pcHJvY2Vzc29yIEFSTSBhcmNoaXRlY3R1cmVzIHByZXZpb3VzIHRvIHY3CisJCQkgIHRoaXMgcHJvcGVydHkgaXMgcmVxdWlyZWQgYW5kIG11c3QgYmUgc2V0IHRvIDAuCisKKwkJCSMgT24gQVJNIDExIE1QY29yZSBiYXNlZCBzeXN0ZW1zIHRoaXMgcHJvcGVydHkgaXMKKwkJCSAgcmVxdWlyZWQgYW5kIG1hdGNoZXMgdGhlIENQVUlEWzExOjBdIHJlZ2lzdGVyIGJpdHMuCisKKwkJCSAgQml0cyBbMTE6MF0gaW4gdGhlIHJlZyBjZWxsIG11c3QgYmUgc2V0IHRvCisJCQkgIGJpdHMgWzExOjBdIGluIENQVSBJRCByZWdpc3Rlci4KKworCQkJICBBbGwgb3RoZXIgYml0cyBpbiB0aGUgcmVnIGNlbGwgbXVzdCBiZSBzZXQgdG8gMC4KKworCQkJIyBPbiAzMi1iaXQgQVJNIHY3IG9yIGxhdGVyIHN5c3RlbXMgdGhpcyBwcm9wZXJ0eSBpcworCQkJICByZXF1aXJlZCBhbmQgbWF0Y2hlcyB0aGUgQ1BVIE1QSURSWzIzOjBdIHJlZ2lzdGVyCisJCQkgIGJpdHMuCisKKwkJCSAgQml0cyBbMjM6MF0gaW4gdGhlIHJlZyBjZWxsIG11c3QgYmUgc2V0IHRvCisJCQkgIGJpdHMgWzIzOjBdIGluIE1QSURSLgorCisJCQkgIEFsbCBvdGhlciBiaXRzIGluIHRoZSByZWcgY2VsbCBtdXN0IGJlIHNldCB0byAwLgorCisJCQkjIE9uIEFSTSB2OCA2NC1iaXQgc3lzdGVtcyB0aGlzIHByb3BlcnR5IGlzIHJlcXVpcmVkCisJCQkgIGFuZCBtYXRjaGVzIHRoZSBNUElEUl9FTDEgcmVnaXN0ZXIgYWZmaW5pdHkgYml0cy4KKworCQkJICAqIElmIGNwdXMgbm9kZSdzICNhZGRyZXNzLWNlbGxzIHByb3BlcnR5IGlzIHNldCB0byAyCisKKwkJCSAgICBUaGUgZmlyc3QgcmVnIGNlbGwgYml0cyBbNzowXSBtdXN0IGJlIHNldCB0bworCQkJICAgIGJpdHMgWzM5OjMyXSBvZiBNUElEUl9FTDEuCisKKwkJCSAgICBUaGUgc2Vjb25kIHJlZyBjZWxsIGJpdHMgWzIzOjBdIG11c3QgYmUgc2V0IHRvCisJCQkgICAgYml0cyBbMjM6MF0gb2YgTVBJRFJfRUwxLgorCisJCQkgICogSWYgY3B1cyBub2RlJ3MgI2FkZHJlc3MtY2VsbHMgcHJvcGVydHkgaXMgc2V0IHRvIDEKKworCQkJICAgIFRoZSByZWcgY2VsbCBiaXRzIFsyMzowXSBtdXN0IGJlIHNldCB0byBiaXRzIFsyMzowXQorCQkJICAgIG9mIE1QSURSX0VMMS4KKworCQkJICBBbGwgb3RoZXIgYml0cyBpbiB0aGUgcmVnIGNlbGxzIG11c3QgYmUgc2V0IHRvIDAuCisKKwktIGNvbXBhdGlibGU6CisJCVVzYWdlOiByZXF1aXJlZAorCQlWYWx1ZSB0eXBlOiA8c3RyaW5nPgorCQlEZWZpbml0aW9uOiBzaG91bGQgYmUgb25lIG9mOgorCQkJICAgICJhcm0sYXJtNzEwdCIKKwkJCSAgICAiYXJtLGFybTcyMHQiCisJCQkgICAgImFybSxhcm03NDB0IgorCQkJICAgICJhcm0sYXJtN2VqLXMiCisJCQkgICAgImFybSxhcm03dGRtaSIKKwkJCSAgICAiYXJtLGFybTd0ZG1pLXMiCisJCQkgICAgImFybSxhcm05ZXMiCisJCQkgICAgImFybSxhcm05ZWotcyIKKwkJCSAgICAiYXJtLGFybTkyMHQiCisJCQkgICAgImFybSxhcm05MjJ0IgorCQkJICAgICJhcm0sYXJtOTI1IgorCQkJICAgICJhcm0sYXJtOTI2ZS1zIgorCQkJICAgICJhcm0sYXJtOTI2ZWotcyIKKwkJCSAgICAiYXJtLGFybTk0MHQiCisJCQkgICAgImFybSxhcm05NDZlLXMiCisJCQkgICAgImFybSxhcm05NjZlLXMiCisJCQkgICAgImFybSxhcm05NjhlLXMiCisJCQkgICAgImFybSxhcm05dGRtaSIKKwkJCSAgICAiYXJtLGFybTEwMjBlIgorCQkJICAgICJhcm0sYXJtMTAyMHQiCisJCQkgICAgImFybSxhcm0xMDIyZSIKKwkJCSAgICAiYXJtLGFybTEwMjZlai1zIgorCQkJICAgICJhcm0sYXJtMTEzNmotcyIKKwkJCSAgICAiYXJtLGFybTExMzZqZi1zIgorCQkJICAgICJhcm0sYXJtMTE1NnQyLXMiCisJCQkgICAgImFybSxhcm0xMTU2dDJmLXMiCisJCQkgICAgImFybSxhcm0xMTc2anpmIgorCQkJICAgICJhcm0sYXJtMTE3Nmp6LXMiCisJCQkgICAgImFybSxhcm0xMTc2anpmLXMiCisJCQkgICAgImFybSxhcm0xMW1wY29yZSIKKwkJCSAgICAiYXJtLGNvcnRleC1hNSIKKwkJCSAgICAiYXJtLGNvcnRleC1hNyIKKwkJCSAgICAiYXJtLGNvcnRleC1hOCIKKwkJCSAgICAiYXJtLGNvcnRleC1hOSIKKwkJCSAgICAiYXJtLGNvcnRleC1hMTIiCisJCQkgICAgImFybSxjb3J0ZXgtYTE1IgorCQkJICAgICJhcm0sY29ydGV4LWExNyIKKwkJCSAgICAiYXJtLGNvcnRleC1hNTMiCisJCQkgICAgImFybSxjb3J0ZXgtYTU3IgorCQkJICAgICJhcm0sY29ydGV4LW0wIgorCQkJICAgICJhcm0sY29ydGV4LW0wKyIKKwkJCSAgICAiYXJtLGNvcnRleC1tMSIKKwkJCSAgICAiYXJtLGNvcnRleC1tMyIKKwkJCSAgICAiYXJtLGNvcnRleC1tNCIKKwkJCSAgICAiYXJtLGNvcnRleC1yNCIKKwkJCSAgICAiYXJtLGNvcnRleC1yNSIKKwkJCSAgICAiYXJtLGNvcnRleC1yNyIKKwkJCSAgICAiYnJjbSxicmFobWEtYjE1IgorCQkJICAgICJjYXZpdW0sdGh1bmRlciIKKwkJCSAgICAiZmFyYWRheSxmYTUyNiIKKwkJCSAgICAiaW50ZWwsc2ExMTAiCisJCQkgICAgImludGVsLHNhMTEwMCIKKwkJCSAgICAibWFydmVsbCxmZXJvY2VvbiIKKwkJCSAgICAibWFydmVsbCxtb2hhd2siCisJCQkgICAgIm1hcnZlbGwscGo0YSIKKwkJCSAgICAibWFydmVsbCxwajRiIgorCQkJICAgICJtYXJ2ZWxsLHNoZWV2YS12NSIKKwkJCSAgICAibnZpZGlhLHRlZ3JhMTMyLWRlbnZlciIKKwkJCSAgICAicWNvbSxrcmFpdCIKKwkJCSAgICAicWNvbSxzY29ycGlvbiIKKwktIGVuYWJsZS1tZXRob2QKKwkJVmFsdWUgdHlwZTogPHN0cmluZ2xpc3Q+CisJCVVzYWdlIGFuZCBkZWZpbml0aW9uIGRlcGVuZCBvbiBBUk0gYXJjaGl0ZWN0dXJlIHZlcnNpb24uCisJCQkjIE9uIEFSTSB2OCA2NC1iaXQgdGhpcyBwcm9wZXJ0eSBpcyByZXF1aXJlZCBhbmQgbXVzdAorCQkJICBiZSBvbmUgb2Y6CisJCQkgICAgICJwc2NpIgorCQkJICAgICAic3Bpbi10YWJsZSIKKwkJCSMgT24gQVJNIDMyLWJpdCBzeXN0ZW1zIHRoaXMgcHJvcGVydHkgaXMgb3B0aW9uYWwgYW5kCisJCQkgIGNhbiBiZSBvbmUgb2Y6CisJCQkgICAgImFsbHdpbm5lcixzdW42aS1hMzEiCisJCQkgICAgImFsbHdpbm5lcixzdW44aS1hMjMiCisJCQkgICAgImFybSxwc2NpIgorCQkJICAgICJicmNtLGJyYWhtYS1iMTUiCisJCQkgICAgIm1hcnZlbGwsYXJtYWRhLTM3NS1zbXAiCisJCQkgICAgIm1hcnZlbGwsYXJtYWRhLTM4MC1zbXAiCisJCQkgICAgIm1hcnZlbGwsYXJtYWRhLTM5MC1zbXAiCisJCQkgICAgIm1hcnZlbGwsYXJtYWRhLXhwLXNtcCIKKwkJCSAgICAibWVkaWF0ZWssbXQ2NTg5LXNtcCIKKwkJCSAgICAibWVkaWF0ZWssbXQ4MXh4LXR6LXNtcCIKKwkJCSAgICAicWNvbSxnY2MtbXNtODY2MCIKKwkJCSAgICAicWNvbSxrcHNzLWFjYy12MSIKKwkJCSAgICAicWNvbSxrcHNzLWFjYy12MiIKKwkJCSAgICAicm9ja2NoaXAscmszMDY2LXNtcCIKKwkJCSAgICAic3RlLGRieDUwMC1zbXAiCisKKwktIGNwdS1yZWxlYXNlLWFkZHIKKwkJVXNhZ2U6IHJlcXVpcmVkIGZvciBzeXN0ZW1zIHRoYXQgaGF2ZSBhbiAiZW5hYmxlLW1ldGhvZCIKKwkJICAgICAgIHByb3BlcnR5IHZhbHVlIG9mICJzcGluLXRhYmxlIi4KKwkJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwkJRGVmaW5pdGlvbjoKKwkJCSMgT24gQVJNIHY4IDY0LWJpdCBzeXN0ZW1zIG11c3QgYmUgYSB0d28gY2VsbAorCQkJICBwcm9wZXJ0eSBpZGVudGlmeWluZyBhIDY0LWJpdCB6ZXJvLWluaXRpYWxpc2VkCisJCQkgIG1lbW9yeSBsb2NhdGlvbi4KKworCS0gcWNvbSxzYXcKKwkJVXNhZ2U6IHJlcXVpcmVkIGZvciBzeXN0ZW1zIHRoYXQgaGF2ZSBhbiAiZW5hYmxlLW1ldGhvZCIKKwkJICAgICAgIHByb3BlcnR5IHZhbHVlIG9mICJxY29tLGtwc3MtYWNjLXYxIiBvcgorCQkgICAgICAgInFjb20sa3Bzcy1hY2MtdjIiCisJCVZhbHVlIHR5cGU6IDxwaGFuZGxlPgorCQlEZWZpbml0aW9uOiBTcGVjaWZpZXMgdGhlIFNBV1sxXSBub2RlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIENQVS4KKworCS0gcWNvbSxhY2MKKwkJVXNhZ2U6IHJlcXVpcmVkIGZvciBzeXN0ZW1zIHRoYXQgaGF2ZSBhbiAiZW5hYmxlLW1ldGhvZCIKKwkJICAgICAgIHByb3BlcnR5IHZhbHVlIG9mICJxY29tLGtwc3MtYWNjLXYxIiBvcgorCQkgICAgICAgInFjb20sa3Bzcy1hY2MtdjIiCisJCVZhbHVlIHR5cGU6IDxwaGFuZGxlPgorCQlEZWZpbml0aW9uOiBTcGVjaWZpZXMgdGhlIEFDQ1syXSBub2RlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIENQVS4KKworCS0gY3B1LWlkbGUtc3RhdGVzCisJCVVzYWdlOiBPcHRpb25hbAorCQlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCQlEZWZpbml0aW9uOgorCQkJIyBMaXN0IG9mIHBoYW5kbGVzIHRvIGlkbGUgc3RhdGUgbm9kZXMgc3VwcG9ydGVkCisJCQkgIGJ5IHRoaXMgY3B1IFszXS4KKworCS0gcm9ja2NoaXAscG11CisJCVVzYWdlOiBvcHRpb25hbCBmb3Igc3lzdGVtcyB0aGF0IGhhdmUgYW4gImVuYWJsZS1tZXRob2QiCisJCSAgICAgICBwcm9wZXJ0eSB2YWx1ZSBvZiAicm9ja2NoaXAscmszMDY2LXNtcCIKKwkJICAgICAgIFdoaWxlIG9wdGlvbmFsLCBpdCBpcyB0aGUgcHJlZmVycmVkIHdheSB0byBnZXQgYWNjZXNzIHRvCisJCSAgICAgICB0aGUgY3B1LWNvcmUgcG93ZXItZG9tYWlucy4KKwkJVmFsdWUgdHlwZTogPHBoYW5kbGU+CisJCURlZmluaXRpb246IFNwZWNpZmllcyB0aGUgc3lzY29uIG5vZGUgY29udHJvbGxpbmcgdGhlIGNwdSBjb3JlCisJCQkgICAgcG93ZXIgZG9tYWlucy4KKworRXhhbXBsZSAxIChkdWFsLWNsdXN0ZXIgYmlnLkxJVFRMRSBzeXN0ZW0gMzItYml0KToKKworCWNwdXMgeworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisKKwkJY3B1QDAgeworCQkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hMTUiOworCQkJcmVnID0gPDB4MD47CisJCX07CisKKwkJY3B1QDEgeworCQkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hMTUiOworCQkJcmVnID0gPDB4MT47CisJCX07CisKKwkJY3B1QDEwMCB7CisJCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE3IjsKKwkJCXJlZyA9IDwweDEwMD47CisJCX07CisKKwkJY3B1QDEwMSB7CisJCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE3IjsKKwkJCXJlZyA9IDwweDEwMT47CisJCX07CisJfTsKKworRXhhbXBsZSAyIChDb3J0ZXgtQTggdW5pcHJvY2Vzc29yIDMyLWJpdCBzeXN0ZW0pOgorCisJY3B1cyB7CisJCSNzaXplLWNlbGxzID0gPDA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKworCQljcHVAMCB7CisJCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE4IjsKKwkJCXJlZyA9IDwweDA+OworCQl9OworCX07CisKK0V4YW1wbGUgMyAoQVJNIDkyNkVKLVMgdW5pcHJvY2Vzc29yIDMyLWJpdCBzeXN0ZW0pOgorCisJY3B1cyB7CisJCSNzaXplLWNlbGxzID0gPDA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKworCQljcHVAMCB7CisJCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQkJY29tcGF0aWJsZSA9ICJhcm0sYXJtOTI2ZWotcyI7CisJCQlyZWcgPSA8MHgwPjsKKwkJfTsKKwl9OworCitFeGFtcGxlIDQgKEFSTSBDb3J0ZXgtQTU3IDY0LWJpdCBzeXN0ZW0pOgorCitjcHVzIHsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwkjYWRkcmVzcy1jZWxscyA9IDwyPjsKKworCWNwdUAwIHsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE1NyI7CisJCXJlZyA9IDwweDAgMHgwPjsKKwkJZW5hYmxlLW1ldGhvZCA9ICJzcGluLXRhYmxlIjsKKwkJY3B1LXJlbGVhc2UtYWRkciA9IDwwIDB4MjAwMDAwMDA+OworCX07CisKKwljcHVAMSB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTciOworCQlyZWcgPSA8MHgwIDB4MT47CisJCWVuYWJsZS1tZXRob2QgPSAic3Bpbi10YWJsZSI7CisJCWNwdS1yZWxlYXNlLWFkZHIgPSA8MCAweDIwMDAwMDAwPjsKKwl9OworCisJY3B1QDEwMCB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTciOworCQlyZWcgPSA8MHgwIDB4MTAwPjsKKwkJZW5hYmxlLW1ldGhvZCA9ICJzcGluLXRhYmxlIjsKKwkJY3B1LXJlbGVhc2UtYWRkciA9IDwwIDB4MjAwMDAwMDA+OworCX07CisKKwljcHVAMTAxIHsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE1NyI7CisJCXJlZyA9IDwweDAgMHgxMDE+OworCQllbmFibGUtbWV0aG9kID0gInNwaW4tdGFibGUiOworCQljcHUtcmVsZWFzZS1hZGRyID0gPDAgMHgyMDAwMDAwMD47CisJfTsKKworCWNwdUAxMDAwMCB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTciOworCQlyZWcgPSA8MHgwIDB4MTAwMDA+OworCQllbmFibGUtbWV0aG9kID0gInNwaW4tdGFibGUiOworCQljcHUtcmVsZWFzZS1hZGRyID0gPDAgMHgyMDAwMDAwMD47CisJfTsKKworCWNwdUAxMDAwMSB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTciOworCQlyZWcgPSA8MHgwIDB4MTAwMDE+OworCQllbmFibGUtbWV0aG9kID0gInNwaW4tdGFibGUiOworCQljcHUtcmVsZWFzZS1hZGRyID0gPDAgMHgyMDAwMDAwMD47CisJfTsKKworCWNwdUAxMDEwMCB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTciOworCQlyZWcgPSA8MHgwIDB4MTAxMDA+OworCQllbmFibGUtbWV0aG9kID0gInNwaW4tdGFibGUiOworCQljcHUtcmVsZWFzZS1hZGRyID0gPDAgMHgyMDAwMDAwMD47CisJfTsKKworCWNwdUAxMDEwMSB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTciOworCQlyZWcgPSA8MHgwIDB4MTAxMDE+OworCQllbmFibGUtbWV0aG9kID0gInNwaW4tdGFibGUiOworCQljcHUtcmVsZWFzZS1hZGRyID0gPDAgMHgyMDAwMDAwMD47CisJfTsKKworCWNwdUAxMDAwMDAwMDAgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTU3IjsKKwkJcmVnID0gPDB4MSAweDA+OworCQllbmFibGUtbWV0aG9kID0gInNwaW4tdGFibGUiOworCQljcHUtcmVsZWFzZS1hZGRyID0gPDAgMHgyMDAwMDAwMD47CisJfTsKKworCWNwdUAxMDAwMDAwMDEgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTU3IjsKKwkJcmVnID0gPDB4MSAweDE+OworCQllbmFibGUtbWV0aG9kID0gInNwaW4tdGFibGUiOworCQljcHUtcmVsZWFzZS1hZGRyID0gPDAgMHgyMDAwMDAwMD47CisJfTsKKworCWNwdUAxMDAwMDAxMDAgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTU3IjsKKwkJcmVnID0gPDB4MSAweDEwMD47CisJCWVuYWJsZS1tZXRob2QgPSAic3Bpbi10YWJsZSI7CisJCWNwdS1yZWxlYXNlLWFkZHIgPSA8MCAweDIwMDAwMDAwPjsKKwl9OworCisJY3B1QDEwMDAwMDEwMSB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTciOworCQlyZWcgPSA8MHgxIDB4MTAxPjsKKwkJZW5hYmxlLW1ldGhvZCA9ICJzcGluLXRhYmxlIjsKKwkJY3B1LXJlbGVhc2UtYWRkciA9IDwwIDB4MjAwMDAwMDA+OworCX07CisKKwljcHVAMTAwMDEwMDAwIHsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE1NyI7CisJCXJlZyA9IDwweDEgMHgxMDAwMD47CisJCWVuYWJsZS1tZXRob2QgPSAic3Bpbi10YWJsZSI7CisJCWNwdS1yZWxlYXNlLWFkZHIgPSA8MCAweDIwMDAwMDAwPjsKKwl9OworCisJY3B1QDEwMDAxMDAwMSB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTciOworCQlyZWcgPSA8MHgxIDB4MTAwMDE+OworCQllbmFibGUtbWV0aG9kID0gInNwaW4tdGFibGUiOworCQljcHUtcmVsZWFzZS1hZGRyID0gPDAgMHgyMDAwMDAwMD47CisJfTsKKworCWNwdUAxMDAwMTAxMDAgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTU3IjsKKwkJcmVnID0gPDB4MSAweDEwMTAwPjsKKwkJZW5hYmxlLW1ldGhvZCA9ICJzcGluLXRhYmxlIjsKKwkJY3B1LXJlbGVhc2UtYWRkciA9IDwwIDB4MjAwMDAwMDA+OworCX07CisKKwljcHVAMTAwMDEwMTAxIHsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE1NyI7CisJCXJlZyA9IDwweDEgMHgxMDEwMT47CisJCWVuYWJsZS1tZXRob2QgPSAic3Bpbi10YWJsZSI7CisJCWNwdS1yZWxlYXNlLWFkZHIgPSA8MCAweDIwMDAwMDAwPjsKKwl9OworfTsKKworLS0KK1sxXSBhcm0vbXNtL3Fjb20sc2F3Mi50eHQKK1syXSBhcm0vbXNtL3Fjb20sa3Bzcy1hY2MudHh0CitbM10gQVJNIExpbnV4IGtlcm5lbCBkb2N1bWVudGF0aW9uIC0gaWRsZSBzdGF0ZXMgYmluZGluZ3MKKyAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2lkbGUtc3RhdGVzLnR4dApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9kYXZpbmNpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vZGF2aW5jaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZhZWRhNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vZGF2aW5jaS50eHQKQEAgLTAsMCArMSwxNyBAQAorVGV4YXMgSW5zdHJ1bWVudHMgRGFWaW5jaSBQbGF0Zm9ybXMgRGV2aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RBODUwL09NQVAtTDEzOC9BTTE4eCBFdmFsdWF0aW9uIE1vZHVsZSAoRVZNKSBib2FyZAorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgLSBjb21wYXRpYmxlID0gInRpLGRhODUwLWV2bSIsICJ0aSxkYTg1MCI7CisKK0VuQlcgQU0xODA4IGJhc2VkIENNQyBib2FyZAorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgLSBjb21wYXRpYmxlID0gImVuYncsY21jIiwgInRpLGRhODUwOworCitHZW5lcmljIERhVmluY2kgQm9hcmRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RBODUwL09NQVAtTDEzOC9BTTE4eCBnZW5lcmljIGJvYXJkCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKyAgICAtIGNvbXBhdGlibGUgPSAidGksZGE4NTAiOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9kaWdpY29sb3IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9kaWdpY29sb3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1ODU1M2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2RpZ2ljb2xvci50eHQKQEAgLTAsMCArMSw2IEBACitDb25leGFudCBEaWdpY29sb3IgUGxhdGZvcm1zIERldmljZSBUcmVlIEJpbmRpbmdzCisKK0VhY2ggZGV2aWNlIHRyZWUgbXVzdCBzcGVjaWZ5IHdoaWNoIENvbmV4YW50IERpZ2ljb2xvciBTb0MgaXQgdXNlcy4KK011c3QgYmUgdGhlIGZvbGxvd2luZyBjb21wYXRpYmxlIHN0cmluZzoKKworICBjbnh0LGN4OTI3NTUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vZXh5bm9zL3NtcC1zeXNyYW0udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9leHlub3Mvc21wLXN5c3JhbS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGEwYTRmNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vZXh5bm9zL3NtcC1zeXNyYW0udHh0CkBAIC0wLDAgKzEsMzggQEAKK1NhbXN1bmcgRXh5bm9zIFNZU1JBTSBmb3IgU01QIGJyaW5ndXA6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU2Ftc3VuZyBTTVAtY2FwYWJsZSBFeHlub3MgU29DcyB1c2UgcGFydCBvZiB0aGUgU1lTUkFNIGZvciB0aGUgYnJpbmd1cAorb2YgdGhlIHNlY29uZGFyeSBjb3Jlcy4gT25jZSB0aGUgY29yZSBnZXRzIHBvd2VyZWQgdXAgaXQgZXhlY3V0ZXMgdGhlCitjb2RlIHRoYXQgaXMgcmVzaWRpbmcgYXQgc29tZSBzcGVjaWZpYyBsb2NhdGlvbiBvZiB0aGUgU1lTUkFNLgorCitUaGVyZWZvcmUgcmVzZXJ2ZWQgc2VjdGlvbiBzdWItbm9kZXMgaGF2ZSB0byBiZSBhZGRlZCB0byB0aGUgbW1pby1zcmFtCitkZWNsYXJhdGlvbi4gVGhlc2Ugbm9kZXMgYXJlIG9mIHR3byB0eXBlcyBkZXBlbmRpbmcgdXBvbiBzZWN1cmUgb3IKK25vbi1zZWN1cmUgZXhlY3V0aW9uIGVudmlyb25tZW50LgorCitSZXF1aXJlZCBzdWItbm9kZSBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogZGVwZW5kaW5nIHVwb24gYm9vdCBtb2RlLCBzaG91bGQgYmUKKwkJInNhbXN1bmcsZXh5bm9zNDIxMC1zeXNyYW0iIDogZm9yIFNlY3VyZSBTWVNSQU0KKwkJInNhbXN1bmcsZXh5bm9zNDIxMC1zeXNyYW0tbnMiIDogZm9yIE5vbi1zZWN1cmUgU1lTUkFNCisKK1RoZSByZXN0IG9mIHRoZSBwcm9wZXJ0aWVzIHNob3VsZCBmb2xsb3cgdGhlIGdlbmVyaWMgbW1pby1zcmFtIGRpc2NyaXB0aW9uCitmb3VuZCBpbiAuLi8uLi9taXNjL3N5c3JhbS50eHQKKworRXhhbXBsZToKKworCXN5c3JhbUAwMjAyMDAwMCB7CisJCWNvbXBhdGlibGUgPSAibW1pby1zcmFtIjsKKwkJcmVnID0gPDB4MDIwMjAwMDAgMHg1NDAwMD47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJcmFuZ2VzID0gPDAgMHgwMjAyMDAwMCAweDU0MDAwPjsKKworCQlzbXAtc3lzcmFtQDAgeworCQkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczQyMTAtc3lzcmFtIjsKKwkJCXJlZyA9IDwweDAgMHgxMDAwPjsKKwkJfTsKKworCQlzbXAtc3lzcmFtQDUzMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M0MjEwLXN5c3JhbS1ucyI7CisJCQlyZWcgPSA8MHg1MzAwMCAweDEwMDA+OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2Zpcm13YXJlL3RsbSx0cnVzdGVkLWZvdW5kYXRpb25zLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vZmlybXdhcmUvdGxtLHRydXN0ZWQtZm91bmRhdGlvbnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MGQwMzkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2Zpcm13YXJlL3RsbSx0cnVzdGVkLWZvdW5kYXRpb25zLnR4dApAQCAtMCwwICsxLDIwIEBACitUcnVzdGVkIEZvdW5kYXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JvYXJkcyB0aGF0IHVzZSB0aGUgVHJ1c3RlZCBGb3VuZGF0aW9ucyBzZWN1cmUgbW9uaXRvciBjYW4gc2lnbmFsIGl0cworcHJlc2VuY2UgYnkgZGVjbGFyaW5nIGEgbm9kZSBjb21wYXRpYmxlIHdpdGggInRsbSx0cnVzdGVkLWZvdW5kYXRpb25zIgordW5kZXIgdGhlIC9maXJtd2FyZS8gbm9kZQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAidGxtLHRydXN0ZWQtZm91bmRhdGlvbnMiCistIHRsbSx2ZXJzaW9uLW1ham9yOiBtYWpvciB2ZXJzaW9uIG51bWJlciBvZiBUcnVzdGVkIEZvdW5kYXRpb25zIGZpcm13YXJlCistIHRsbSx2ZXJzaW9uLW1pbm9yOiBtaW5vciB2ZXJzaW9uIG51bWJlciBvZiBUcnVzdGVkIEZvdW5kYXRpb25zIGZpcm13YXJlCisKK0V4YW1wbGU6CisJZmlybXdhcmUgeworCQl0cnVzdGVkLWZvdW5kYXRpb25zIHsKKwkJCWNvbXBhdGlibGUgPSAidGxtLHRydXN0ZWQtZm91bmRhdGlvbnMiOworCQkJdGxtLHZlcnNpb24tbWFqb3IgPSA8Mj47CisJCQl0bG0sdmVyc2lvbi1taW5vciA9IDw4PjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9mcmVlc2NhbGUvZnNsLHZmNjEwLW1zY20tY3B1Y2ZnLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vZnJlZXNjYWxlL2ZzbCx2ZjYxMC1tc2NtLWNwdWNmZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRhYTNjNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vZnJlZXNjYWxlL2ZzbCx2ZjYxMC1tc2NtLWNwdWNmZy50eHQKQEAgLTAsMCArMSwxNCBAQAorRnJlZXNjYWxlIFZ5YnJpZCBNaXNjZWxsYW5lb3VzIFN5c3RlbSBDb250cm9sIC0gQ1BVIENvbmZpZ3VyYXRpb24KKworVGhlIE1TQ00gSVAgY29udGFpbnMgbXVsdGlwbGUgc3ViIG1vZHVsZXMsIHRoaXMgYmluZGluZyBkZXNjcmliZXMgdGhlIGZpcnN0CitibG9jayBvZiByZWdpc3RlcnMgd2hpY2ggY29udGFpbnMgQ1BVIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CSJmc2wsdmY2MTAtbXNjbS1jcHVjZmciLCAic3lzY29uIgorLSByZWc6CQl0aGUgcmVnaXN0ZXIgcmFuZ2Ugb2YgdGhlIE1TQ00gQ1BVIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzCisKK0V4YW1wbGU6CisJbXNjbV9jcHVjZmc6IGNwdWNmZ0A0MDAwMTAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLHZmNjEwLW1zY20tY3B1Y2ZnIiwgInN5c2NvbiI7CisJCXJlZyA9IDwweDQwMDAxMDAwIDB4ODAwPjsKKwl9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2ZyZWVzY2FsZS9mc2wsdmY2MTAtbXNjbS1pci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2ZyZWVzY2FsZS9mc2wsdmY2MTAtbXNjbS1pci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY5ODA4YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vZnJlZXNjYWxlL2ZzbCx2ZjYxMC1tc2NtLWlyLnR4dApAQCAtMCwwICsxLDMzIEBACitGcmVlc2NhbGUgVnlicmlkIE1pc2NlbGxhbmVvdXMgU3lzdGVtIENvbnRyb2wgLSBJbnRlcnJ1cHQgUm91dGVyCisKK1RoZSBNU0NNIElQIGNvbnRhaW5zIG11bHRpcGxlIHN1YiBtb2R1bGVzLCB0aGlzIGJpbmRpbmcgZGVzY3JpYmVzIHRoZSBzZWNvbmQKK2Jsb2NrIG9mIHJlZ2lzdGVycyB3aGljaCBjb250cm9sIHRoZSBpbnRlcnJ1cHQgcm91dGVyLiBUaGUgaW50ZXJydXB0IHJvdXRlcgorYWxsb3dzIHRvIGNvbmZpZ3VyZSB0aGUgcmVjaXBpZW50IG9mIGVhY2ggcGVyaXBoZXJhbCBpbnRlcnJ1cHQuIEZ1cnRoZXJtb3JlCitpdCBjb250cm9scyB0aGUgZGlyZWN0ZWQgcHJvY2Vzc29yIGludGVycnVwdHMuIFRoZSBtb2R1bGUgaXMgYXZhaWxhYmxlIGluIGFsbAorVnlicmlkIFNvQydzIGJ1dCBpcyBvbmx5IHJlYWxseSB1c2VmdWwgaW4gZHVhbCBjb3JlIGNvbmZpZ3VyYXRpb25zIChWRjZ4eAord2hpY2ggY29tZXMgd2l0aCBhIENvcnRleC1BNS9Db3J0ZXgtTTQgY29tYmluYXRpb24pLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOgkJImZzbCx2ZjYxMC1tc2NtLWlyIgorLSByZWc6CQkJdGhlIHJlZ2lzdGVyIHJhbmdlIG9mIHRoZSBNU0NNIEludGVycnVwdCBSb3V0ZXIKKy0gZnNsLGNwdWNmZzoJCVRoZSBoYW5kbGUgdG8gdGhlIE1TQ00gQ1BVIGNvbmZpZ3VyYXRpb24gbm9kZSwgcmVxdWlyZWQKKwkJCXRvIGdldCB0aGUgY3VycmVudCBDUFUgSUQKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXI6CUlkZW50aWZpZXMgdGhlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIKKy0gI2ludGVycnVwdC1jZWxsczoJVHdvIGNlbGxzLCBpbnRlcnJ1cHQgbnVtYmVyIGFuZCBjZWxscy4KKwkJCVRoZSBoYXJkd2FyZSBpbnRlcnJ1cHQgbnVtYmVyIGFjY29yZGluZyB0byBpbnRlcnJ1cHQKKwkJCWFzc2lnbm1lbnQgb2YgdGhlIGludGVycnVwdCByb3V0ZXIgaXMgcmVxdWlyZWQuCisJCQlGbGFncyBnZXQgcGFzc2VkIG9ubHkgd2hlbiB1c2luZyBHSUMgYXMgcGFyZW50LiBGbGFncworCQkJZW5jb2RpbmcgYXMgZG9jdW1lbnRlZCBieSB0aGUgR0lDIGJpbmRpbmdzLgorLSBpbnRlcnJ1cHQtcGFyZW50OglTaG91bGQgYmUgdGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciBvZgorCQkJdGhlIENQVSB0aGUgZGV2aWNlIHRyZWUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBvbi4gVGhpcworCQkJaXMgZWl0aGVyIHRoZSBub2RlIG9mIHRoZSBHSUMgb3IgTlZJQyBjb250cm9sbGVyLgorCitFeGFtcGxlOgorCW1zY21faXI6IGludGVycnVwdC1jb250cm9sbGVyQDQwMDAxODAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsdmY2MTAtbXNjbS1pciI7CisJCXJlZyA9IDwweDQwMDAxODAwIDB4NDAwPjsKKwkJZnNsLGNwdWNmZyA9IDwmbXNjbV9jcHVjZmc+OworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmaW50Yz47CisJfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9mc2wudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9mc2wudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0Yzg4YjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2ZzbC50eHQKQEAgLTAsMCArMSwxNDUgQEAKK0ZyZWVzY2FsZSBpLk1YIFBsYXRmb3JtcyBEZXZpY2UgVHJlZSBCaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaS5NWDIzIEV2YWx1YXRpb24gS2l0CitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKyAgICAtIGNvbXBhdGlibGUgPSAiZnNsLGlteDIzLWV2ayIsICJmc2wsaW14MjMiOworCitpLk1YMjUgUHJvZHVjdCBEZXZlbG9wbWVudCBLaXQKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorICAgIC0gY29tcGF0aWJsZSA9ICJmc2wsaW14MjUtcGRrIiwgImZzbCxpbXgyNSI7CisKK2kuTVgyNyBQcm9kdWN0IERldmVsb3BtZW50IEtpdAorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgLSBjb21wYXRpYmxlID0gImZzbCxpbXgyNy1wZGsiLCAiZnNsLGlteDI3IjsKKworaS5NWDI4IEV2YWx1YXRpb24gS2l0CitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKyAgICAtIGNvbXBhdGlibGUgPSAiZnNsLGlteDI4LWV2ayIsICJmc2wsaW14MjgiOworCitpLk1YNTEgQmFiYmFnZSBCb2FyZAorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgLSBjb21wYXRpYmxlID0gImZzbCxpbXg1MS1iYWJiYWdlIiwgImZzbCxpbXg1MSI7CisKK2kuTVg1MyBBdXRvbW90aXZlIFJlZmVyZW5jZSBEZXNpZ24gQm9hcmQKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorICAgIC0gY29tcGF0aWJsZSA9ICJmc2wsaW14NTMtYXJkIiwgImZzbCxpbXg1MyI7CisKK2kuTVg1MyBFdmFsdWF0aW9uIEtpdAorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgLSBjb21wYXRpYmxlID0gImZzbCxpbXg1My1ldmsiLCAiZnNsLGlteDUzIjsKKworaS5NWDUzIFF1aWNrIFN0YXJ0IEJvYXJkCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKyAgICAtIGNvbXBhdGlibGUgPSAiZnNsLGlteDUzLXFzYiIsICJmc2wsaW14NTMiOworCitpLk1YNTMgU21hcnQgTW9iaWxlIFJlZmVyZW5jZSBEZXNpZ24gQm9hcmQKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorICAgIC0gY29tcGF0aWJsZSA9ICJmc2wsaW14NTMtc21kIiwgImZzbCxpbXg1MyI7CisKK2kuTVg2IFF1YWQgQXJtYWRpbGxvMiBCb2FyZAorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgLSBjb21wYXRpYmxlID0gImZzbCxpbXg2cS1hcm0yIiwgImZzbCxpbXg2cSI7CisKK2kuTVg2IFF1YWQgU0FCUkUgTGl0ZSBCb2FyZAorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgLSBjb21wYXRpYmxlID0gImZzbCxpbXg2cS1zYWJyZWxpdGUiLCAiZnNsLGlteDZxIjsKKworaS5NWDYgUXVhZCBTQUJSRSBTbWFydCBEZXZpY2UgQm9hcmQKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorICAgIC0gY29tcGF0aWJsZSA9ICJmc2wsaW14NnEtc2FicmVzZCIsICJmc2wsaW14NnEiOworCitpLk1YNiBRdWFkIFNBQlJFIEF1dG9tb3RpdmUgQm9hcmQKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorICAgIC0gY29tcGF0aWJsZSA9ICJmc2wsaW14NnEtc2FicmVhdXRvIiwgImZzbCxpbXg2cSI7CisKK0dlbmVyaWMgaS5NWCBib2FyZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworTm8gaW9tdXggc2V0dXAgaXMgZG9uZSBmb3IgdGhlc2UgYm9hcmRzLCBzbyB0aGlzIG11c3QgaGF2ZSBiZWVuIGNvbmZpZ3VyZWQKK2J5IHRoZSBib290bG9hZGVyIGZvciBib2FyZHMgdG8gd29yayB3aXRoIHRoZSBnZW5lcmljIGJpbmRpbmdzLgorCitpLk1YMjcgZ2VuZXJpYyBib2FyZAorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgLSBjb21wYXRpYmxlID0gImZzbCxpbXgyNyI7CisKK2kuTVg1MSBnZW5lcmljIGJvYXJkCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKyAgICAtIGNvbXBhdGlibGUgPSAiZnNsLGlteDUxIjsKKworaS5NWDUzIGdlbmVyaWMgYm9hcmQKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorICAgIC0gY29tcGF0aWJsZSA9ICJmc2wsaW14NTMiOworCitpLk1YNnEgZ2VuZXJpYyBib2FyZAorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgLSBjb21wYXRpYmxlID0gImZzbCxpbXg2cSI7CisKK0ZyZWVzY2FsZSBWeWJyaWQgUGxhdGZvcm0gRGV2aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRm9yIHRoZSBWeWJyaWQgU29DIGZhbWlsaXkgYWxsIHZhcmlhbnRzIHdpdGggRERSIGNvbnRyb2xsZXIgYXJlIHN1cHBvcnRlZCwKK3doaWNoIGlzIHRoZSBWRjV4eCBhbmQgVkY2eHggc2VyaWVzLiBPdXQgb2YgaGlzdG9yaWNhbCByZWFzb25zLCBpbiBtb3N0CitwbGFjZXMgdGhlIGtlcm5lbCB1c2VzIHZmNjEwIHRvIHJlZmVyIHRvIHRoZSB3aG9sZSBmYW1pbGl5LgorVGhlIGNvbXBhdGlibGUgc3RyaW5nICJmc2wsdmY2MTBtNCIgaXMgdXNlZCBmb3IgdGhlIHNlY29uZGFyeSBDb3J0ZXgtTTQKK2NvcmUgc3VwcG9ydC4KKworUmVxdWlyZWQgcm9vdCBub2RlIGNvbXBhdGlibGUgcHJvcGVydHkgKG9uZSBvZiB0aGVtKToKKyAgICAtIGNvbXBhdGlibGUgPSAiZnNsLHZmNTAwIjsKKyAgICAtIGNvbXBhdGlibGUgPSAiZnNsLHZmNTEwIjsKKyAgICAtIGNvbXBhdGlibGUgPSAiZnNsLHZmNjAwIjsKKyAgICAtIGNvbXBhdGlibGUgPSAiZnNsLHZmNjEwIjsKKyAgICAtIGNvbXBhdGlibGUgPSAiZnNsLHZmNjEwbTQiOworCitGcmVlc2NhbGUgTFMxMDIxQSBQbGF0Zm9ybSBEZXZpY2UgVHJlZSBCaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHJvb3Qgbm9kZSBjb21wYXRpYmxlIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZSA9ICJmc2wsbHMxMDIxYSI7CisKK0ZyZWVzY2FsZSBMUzEwMjFBIFNvQy1zcGVjaWZpYyBEZXZpY2UgVHJlZSBCaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGcmVlc2NhbGUgU0NGRworICBTQ0ZHIGlzIHRoZSBzdXBwbGVtZW50YWwgY29uZmlndXJhdGlvbiB1bml0LCB0aGF0IHByb3ZpZGVzIFNvQyBzcGVjaWZpYworY29uZmlndXJhdGlvbiBhbmQgc3RhdHVzIHJlZ2lzdGVycyBmb3IgdGhlIGNoaXAuIFN1Y2ggYXMgZ2V0dGluZyBQRVggcG9ydAorc3RhdHVzLgorICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiZnNsLGxzMTAyMWEtc2NmZyIKKyAgLSByZWc6IHNob3VsZCBjb250YWluIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIFNDRkcgbWVtb3J5LW1hcHBlZCByZWdpc3RlcnMKKworRXhhbXBsZToKKwlzY2ZnOiBzY2ZnQDE1NzAwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxsczEwMjFhLXNjZmciOworCQlyZWcgPSA8MHgwIDB4MTU3MDAwMCAweDAgMHgxMDAwMD47CisJfTsKKworRnJlZXNjYWxlIERDRkcKKyAgRENGRyBpcyB0aGUgZGV2aWNlIGNvbmZpZ3VyYXRpb24gdW5pdCwgdGhhdCBwcm92aWRlcyBnZW5lcmFsIHB1cnBvc2UKK2NvbmZpZ3VyYXRpb24gYW5kIHN0YXR1cyBmb3IgdGhlIGRldmljZS4gU3VjaCBhcyBzZXR0aW5nIHRoZSBzZWNvbmRhcnkKK2NvcmUgc3RhcnQgYWRkcmVzcyBhbmQgcmVsZWFzZSB0aGUgc2Vjb25kYXJ5IGNvcmUgZnJvbSBob2xkb2ZmIGFuZCBzdGFydHVwLgorICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiZnNsLGxzMTAyMWEtZGNmZyIKKyAgLSByZWcgOiBzaG91bGQgY29udGFpbiBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiBEQ0ZHIG1lbW9yeS1tYXBwZWQgcmVnaXN0ZXJzCisKK0V4YW1wbGU6CisJZGNmZzogZGNmZ0AxZWUwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsbHMxMDIxYS1kY2ZnIjsKKwkJcmVnID0gPDB4MCAweDFlZTAwMDAgMHgwIDB4MTAwMDA+OworCX07CisKK0ZyZWVzY2FsZSBBUk12OCBiYXNlZCBMYXllcnNjYXBlIFNvQyBmYW1pbHkgRGV2aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTFMyMDgwQSBBUk12OCBiYXNlZCBTaW11bGF0b3IgbW9kZWwKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorICAgIC0gY29tcGF0aWJsZSA9ICJmc2wsbHMyMDgwYS1zaW11IiwgImZzbCxsczIwODBhIjsKKworTFMyMDgwQSBBUk12OCBiYXNlZCBRRFMgQm9hcmQKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorICAgIC0gY29tcGF0aWJsZSA9ICJmc2wsbHMyMDgwYS1xZHMiLCAiZnNsLGxzMjA4MGEiOworCitMUzIwODBBIEFSTXY4IGJhc2VkIFJEQiBCb2FyZAorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgLSBjb21wYXRpYmxlID0gImZzbCxsczIwODBhLXJkYiIsICJmc2wsbHMyMDgwYSI7CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vZnctY2ZnLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vZnctY2ZnLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTNmYjY0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9mdy1jZmcudHh0CkBAIC0wLDAgKzEsNzIgQEAKKyogUUVNVSBGaXJtd2FyZSBDb25maWd1cmF0aW9uIGJpbmRpbmdzIGZvciBBUk0KKworUUVNVSdzIGFybS1zb2Z0bW11IGFuZCBhYXJjaDY0LXNvZnRtbXUgZW11bGF0aW9uIC8gdmlydHVhbGl6YXRpb24gdGFyZ2V0cworcHJvdmlkZSB0aGUgZm9sbG93aW5nIEZpcm13YXJlIENvbmZpZ3VyYXRpb24gaW50ZXJmYWNlIG9uIHRoZSAidmlydCIgbWFjaGluZQordHlwZToKKworLSBBIHdyaXRlLW9ubHksIDE2LWJpdCB3aWRlIHNlbGVjdG9yIChvciBjb250cm9sKSByZWdpc3RlciwKKy0gYSByZWFkLXdyaXRlLCA2NC1iaXQgd2lkZSBkYXRhIHJlZ2lzdGVyLgorCitRRU1VIGV4cG9zZXMgdGhlIGNvbnRyb2wgYW5kIGRhdGEgcmVnaXN0ZXIgdG8gQVJNIGd1ZXN0cyBhcyBtZW1vcnkgbWFwcGVkCityZWdpc3RlcnM7IHRoZWlyIGxvY2F0aW9uIGlzIGNvbW11bmljYXRlZCB0byB0aGUgZ3Vlc3QncyBVRUZJIGZpcm13YXJlIGluIHRoZQorRFRCIHRoYXQgUUVNVSBwbGFjZXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgZ3Vlc3QncyBEUkFNLgorCitUaGUgZ3Vlc3Qgd3JpdGVzIGEgc2VsZWN0b3IgdmFsdWUgKGEga2V5KSB0byB0aGUgc2VsZWN0b3IgcmVnaXN0ZXIsIGFuZCB0aGVuCitjYW4gcmVhZCB0aGUgY29ycmVzcG9uZGluZyBkYXRhIChwcm9kdWNlZCBieSBRRU1VKSB2aWEgdGhlIGRhdGEgcmVnaXN0ZXIuIElmCit0aGUgc2VsZWN0ZWQgZW50cnkgaXMgd3JpdGFibGUsIHRoZSBndWVzdCBjYW4gcmV3cml0ZSBpdCB0aHJvdWdoIHRoZSBkYXRhCityZWdpc3Rlci4KKworVGhlIHNlbGVjdG9yIHJlZ2lzdGVyIHRha2VzIGtleXMgaW4gYmlnIGVuZGlhbiBieXRlIG9yZGVyLgorCitUaGUgZGF0YSByZWdpc3RlciBhbGxvd3MgYWNjZXNzZXMgd2l0aCA4LCAxNiwgMzIgYW5kIDY0LWJpdCB3aWR0aCAob25seSBhdAorb2Zmc2V0IDAgb2YgdGhlIHJlZ2lzdGVyKS4gQWNjZXNzZXMgbGFyZ2VyIHRoYW4gYSBieXRlIGFyZSBpbnRlcnByZXRlZCBhcworYXJyYXlzLCBidW5kbGVkIHRvZ2V0aGVyIG9ubHkgZm9yIGJldHRlciBwZXJmb3JtYW5jZS4gVGhlIGJ5dGVzIGNvbnN0aXR1dGluZworc3VjaCBhIHdvcmQsIGluIGluY3JlYXNpbmcgYWRkcmVzcyBvcmRlciwgY29ycmVzcG9uZCB0byB0aGUgYnl0ZXMgdGhhdCB3b3VsZAoraGF2ZSBiZWVuIHRyYW5zZmVycmVkIGJ5IGJ5dGUtd2lkZSBhY2Nlc3NlcyBpbiBjaHJvbm9sb2dpY2FsIG9yZGVyLgorCitUaGUgaW50ZXJmYWNlIGFsbG93cyBndWVzdCBmaXJtd2FyZSB0byBkb3dubG9hZCB2YXJpb3VzIHBhcmFtZXRlcnMgYW5kIGJsb2JzCit0aGF0IGFmZmVjdCBob3cgdGhlIGZpcm13YXJlIHdvcmtzIGFuZCB3aGF0IHRhYmxlcyBpdCBpbnN0YWxscyBmb3IgdGhlIGd1ZXN0CitPUy4gRm9yIGV4YW1wbGUsIGJvb3Qgb3JkZXIgb2YgZGV2aWNlcywgQUNQSSB0YWJsZXMsIFNNQklPUyB0YWJsZXMsIGtlcm5lbCBhbmQKK2luaXRyZCBpbWFnZXMgZm9yIGRpcmVjdCBrZXJuZWwgYm9vdGluZywgdmlydHVhbCBtYWNoaW5lIFVVSUQsIFNNUCBpbmZvcm1hdGlvbiwKK3ZpcnR1YWwgTlVNQSB0b3BvbG9neSwgYW5kIHNvIG9uLgorCitUaGUgYXV0aG9yaXRhdGl2ZSByZWdpc3RyeSBvZiB0aGUgdmFsaWQgc2VsZWN0b3IgdmFsdWVzIGFuZCB0aGVpciBtZWFuaW5ncyBpcwordGhlIFFFTVUgc291cmNlIGNvZGU7IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGRhdGEgYmxvYnMgY29ycmVzcG9uZGluZyB0byB0aGUKK2luZGl2aWR1YWwga2V5IHZhbHVlcyBpcyBhbHNvIGRlZmluZWQgaW4gdGhlIFFFTVUgc291cmNlIGNvZGUuCisKK1RoZSBwcmVzZW5jZSBvZiB0aGUgcmVnaXN0ZXJzIGNhbiBiZSB2ZXJpZmllZCBieSBzZWxlY3RpbmcgdGhlICJzaWduYXR1cmUiIGJsb2IKK3dpdGgga2V5IDB4MDAwMCwgYW5kIHJlYWRpbmcgZm91ciBieXRlcyBmcm9tIHRoZSBkYXRhIHJlZ2lzdGVyLiBUaGUgcmV0dXJuZWQKK3NpZ25hdHVyZSBpcyAiUUVNVSIuCisKK1RoZSBvdXRlcm1vc3QgcHJvdG9jb2wgKGludm9sdmluZyB0aGUgd3JpdGUgLyByZWFkIHNlcXVlbmNlcyBvZiB0aGUgY29udHJvbCBhbmQKK2RhdGEgcmVnaXN0ZXJzKSBpcyBleHBlY3RlZCB0byBiZSB2ZXJzaW9uZWQsIGFuZC9vciBkZXNjcmliZWQgYnkgZmVhdHVyZSBiaXRzLgorVGhlIGludGVyZmFjZSByZXZpc2lvbiAvIGZlYXR1cmUgYml0bWFwIGNhbiBiZSByZXRyaWV2ZWQgd2l0aCBrZXkgMHgwMDAxLiBUaGUKK2Jsb2IgdG8gYmUgcmVhZCBmcm9tIHRoZSBkYXRhIHJlZ2lzdGVyIGhhcyBzaXplIDQsIGFuZCBpdCBpcyB0byBiZSBpbnRlcnByZXRlZAorYXMgYSB1aW50MzJfdCB2YWx1ZSBpbiBsaXR0bGUgZW5kaWFuIGJ5dGUgb3JkZXIuIFRoZSBjdXJyZW50IHZhbHVlCisoY29ycmVzcG9uZGluZyB0byB0aGUgYWJvdmUgb3V0ZXIgcHJvdG9jb2wpIGlzIHplcm8uCisKK1RoZSBndWVzdCBrZXJuZWwgaXMgbm90IGV4cGVjdGVkIHRvIHVzZSB0aGVzZSByZWdpc3RlcnMgKGFsdGhvdWdoIGl0IGlzCitjZXJ0YWlubHkgYWxsb3dlZCB0byk7IHRoZSBkZXZpY2UgdHJlZSBiaW5kaW5ncyBhcmUgZG9jdW1lbnRlZCBoZXJlIGJlY2F1c2UKK3RoaXMgaXMgd2hlcmUgZGV2aWNlIHRyZWUgYmluZGluZ3MgcmVzaWRlIGluIGdlbmVyYWwuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogInFlbXUsZnctY2ZnLW1taW8iLgorCistIHJlZzogdGhlIE1NSU8gcmVnaW9uIHVzZWQgYnkgdGhlIGRldmljZS4KKyAgKiBCeXRlcyAweDAgdG8gMHg3IGNvdmVyIHRoZSBkYXRhIHJlZ2lzdGVyLgorICAqIEJ5dGVzIDB4OCB0byAweDkgY292ZXIgdGhlIHNlbGVjdG9yIHJlZ2lzdGVyLgorICAqIEZ1cnRoZXIgcmVnaXN0ZXJzIG1heSBiZSBhcHBlbmRlZCB0byB0aGUgcmVnaW9uIGluIGNhc2Ugb2YgZnV0dXJlIGludGVyZmFjZQorICAgIHJldmlzaW9ucyAvIGZlYXR1cmUgYml0cy4KKworRXhhbXBsZToKKworLyB7CisJI3NpemUtY2VsbHMgPSA8MHgyPjsKKwkjYWRkcmVzcy1jZWxscyA9IDwweDI+OworCisJZnctY2ZnQDkwMjAwMDAgeworCQljb21wYXRpYmxlID0gInFlbXUsZnctY2ZnLW1taW8iOworCQlyZWcgPSA8MHgwIDB4OTAyMDAwMCAweDAgMHhhPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vZ2xvYmFsX3RpbWVyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vZ2xvYmFsX3RpbWVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGFlM2E4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9nbG9iYWxfdGltZXIudHh0CkBAIC0wLDAgKzEsMjcgQEAKKworKiBBUk0gR2xvYmFsIFRpbWVyCisJQ29ydGV4LUE5IGFyZSBvZnRlbiBhc3NvY2lhdGVkIHdpdGggYSBwZXItY29yZSBHbG9iYWwgdGltZXIuCisKKyoqIFRpbWVyIG5vZGUgcmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogc2hvdWxkIGNvbnRhaW4KKwkgICAgICogImFybSxjb3J0ZXgtYTUtZ2xvYmFsLXRpbWVyIiBmb3IgQ29ydGV4LUE1IGdsb2JhbCB0aW1lcnMuCisJICAgICAqICJhcm0sY29ydGV4LWE5LWdsb2JhbC10aW1lciIgZm9yIENvcnRleC1BOSBnbG9iYWwKKwkgICAgICAgICB0aW1lcnMgb3IgYW55IGNvbXBhdGlibGUgaW1wbGVtZW50YXRpb24uIE5vdGU6IGRyaXZlcgorCSAgICAgICAgIHN1cHBvcnRzIHZlcnNpb25zIHIycDAgYW5kIGFib3ZlLgorCistIGludGVycnVwdHMgOiBPbmUgaW50ZXJydXB0IHRvIGVhY2ggY29yZQorCistIHJlZyA6IFNwZWNpZnkgdGhlIGJhc2UgYWRkcmVzcyBhbmQgdGhlIHNpemUgb2YgdGhlIEdUIHRpbWVyCisJcmVnaXN0ZXIgd2luZG93LgorCistIGNsb2NrcyA6IFNob3VsZCBiZSBwaGFuZGxlIHRvIGEgY2xvY2suCisKK0V4YW1wbGU6CisKKwl0aW1lckAyYzAwMDYwMCB7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hOS1nbG9iYWwtdGltZXIiOworCQlyZWcgPSA8MHgyYzAwMDYwMCAweDIwPjsKKwkJaW50ZXJydXB0cyA9IDwxIDEzIDB4ZjAxPjsKKwkJY2xvY2tzID0gPCZhcm1fcGVyaXBoX2Nsaz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vaGlzaWxpY29uL2hpc2lsaWNvbi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2hpc2lsaWNvbi9oaXNpbGljb24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhYzdjMDAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2hpc2lsaWNvbi9oaXNpbGljb24udHh0CkBAIC0wLDAgKzEsMjMxIEBACitIaXNpbGljb24gUGxhdGZvcm1zIERldmljZSBUcmVlIEJpbmRpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitIaTYyMjAgU29DCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKwktIGNvbXBhdGlibGUgPSAiaGlzaWxpY29uLGhpNjIyMCI7CisKK0hpNDUxMSBCb2FyZAorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisJLSBjb21wYXRpYmxlID0gImhpc2lsaWNvbixoaTM2MjAtaGk0NTExIjsKKworSGlQMDQgRDAxIEJvYXJkCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKwktIGNvbXBhdGlibGUgPSAiaGlzaWxpY29uLGhpcDA0LWQwMSI7CisKK0hpUDAxIGNhOXgyIEJvYXJkCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKwktIGNvbXBhdGlibGUgPSAiaGlzaWxpY29uLGhpcDAxLWNhOXgyIjsKKworSGlLZXkgQm9hcmQKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorCS0gY29tcGF0aWJsZSA9ICJoaXNpbGljb24saGk2MjIwLWhpa2V5IiwgImhpc2lsaWNvbixoaTYyMjAiOworCitIaVAwNSBEMDIgQm9hcmQKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorCS0gY29tcGF0aWJsZSA9ICJoaXNpbGljb24saGlwMDUtZDAyIjsKKworSGlzaWxpY29uIHN5c3RlbSBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAiaGlzaWxpY29uLHN5c2N0cmwiCistIHJlZyA6IFJlZ2lzdGVyIGFkZHJlc3MgYW5kIHNpemUKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gc21wLW9mZnNldCA6IG9mZnNldCBpbiBzeXNjdHJsIGZvciBub3RpZnlpbmcgc2xhdmUgY3B1IGJvb3RpbmcKKwkJY3B1IDEsIHJlZzsKKwkJY3B1IDIsIHJlZyArIDB4NDsKKwkJY3B1IDMsIHJlZyArIDB4ODsKKwkJSWYgcmVnIHZhbHVlIGlzIG5vdCB6ZXJvLCBjcHVuIGV4aXQgd2ZpIGFuZCBnbworLSByZXN1bWUtb2Zmc2V0IDogb2Zmc2V0IGluIHN5c2N0cmwgZm9yIG5vdGlmeWluZyBjcHUwIHdoZW4gcmVzdW1lCistIHJlYm9vdC1vZmZzZXQgOiBvZmZzZXQgaW4gc3lzY3RybCBmb3Igc3lzdGVtIHJlYm9vdAorCitFeGFtcGxlOgorCisJLyogZm9yIEhpMzYyMCAqLworCXN5c2N0cmw6IHN5c3RlbS1jb250cm9sbGVyQGZjODAyMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJoaXNpbGljb24sc3lzY3RybCI7CisJCXJlZyA9IDwweGZjODAyMDAwIDB4MTAwMD47CisJCXNtcC1vZmZzZXQgPSA8MHgzMWM+OworCQlyZXN1bWUtb2Zmc2V0ID0gPDB4MzA4PjsKKwkJcmVib290LW9mZnNldCA9IDwweDQ+OworCX07CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitIaXNpbGljb24gSGk2MjIwIHN5c3RlbSBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAiaGlzaWxpY29uLGhpNjIyMC1zeXNjdHJsIgorLSByZWcgOiBSZWdpc3RlciBhZGRyZXNzIGFuZCBzaXplCistICNjbG9jay1jZWxsczogc2hvdWxkIGJlIHNldCB0byAxLCBtYW55IGNsb2NrIHJlZ2lzdGVycyBhcmUgZGVmaW5lZAorICB1bmRlciB0aGlzIGNvbnRyb2xsZXIgYW5kIHRoaXMgcHJvcGVydHkgbXVzdCBiZSBwcmVzZW50LgorCitIaXNpbGljb24gZGVzaWducyB0aGlzIGNvbnRyb2xsZXIgYXMgb25lIG9mIHRoZSBzeXN0ZW0gY29udHJvbGxlcnMsCitpdHMgbWFpbiBmdW5jdGlvbnMgYXJlIHRoZSBzYW1lIGFzIEhpc2lsaWNvbiBzeXN0ZW0gY29udHJvbGxlciwgYnV0Cit0aGUgcmVnaXN0ZXIgb2Zmc2V0IG9mIHNvbWUgY29yZSBtb2R1bGVzIGFyZSBkaWZmZXJlbnQuCisKK0V4YW1wbGU6CisJLypmb3IgSGk2MjIwKi8KKwlzeXNfY3RybDogc3lzX2N0cmxAZjcwMzAwMDAgeworCQljb21wYXRpYmxlID0gImhpc2lsaWNvbixoaTYyMjAtc3lzY3RybCIsICJzeXNjb24iOworCQlyZWcgPSA8MHgwIDB4ZjcwMzAwMDAgMHgwIDB4MjAwMD47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKwl9OworCisKK0hpc2lsaWNvbiBIaTYyMjAgUG93ZXIgQWx3YXlzIE9OIGRvbWFpbiBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAiaGlzaWxpY29uLGhpNjIyMC1hb2N0cmwiCistIHJlZyA6IFJlZ2lzdGVyIGFkZHJlc3MgYW5kIHNpemUKKy0gI2Nsb2NrLWNlbGxzOiBzaG91bGQgYmUgc2V0IHRvIDEsIG1hbnkgY2xvY2sgcmVnaXN0ZXJzIGFyZSBkZWZpbmVkCisgIHVuZGVyIHRoaXMgY29udHJvbGxlciBhbmQgdGhpcyBwcm9wZXJ0eSBtdXN0IGJlIHByZXNlbnQuCisKK0hpc2lsaWNvbiBkZXNpZ25zIHRoaXMgc3lzdGVtIGNvbnRyb2xsZXIgdG8gY29udHJvbCB0aGUgcG93ZXIgYWx3YXlzCitvbiBkb21haW4gZm9yIG1vYmlsZSBwbGF0Zm9ybS4KKworRXhhbXBsZToKKwkvKmZvciBIaTYyMjAqLworCWFvX2N0cmw6IGFvX2N0cmxAZjc4MDAwMDAgeworCQljb21wYXRpYmxlID0gImhpc2lsaWNvbixoaTYyMjAtYW9jdHJsIiwgInN5c2NvbiI7CisJCXJlZyA9IDwweDAgMHhmNzgwMDAwMCAweDAgMHgyMDAwPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCX07CisKKworSGlzaWxpY29uIEhpNjIyMCBNZWRpYSBkb21haW4gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogImhpc2lsaWNvbixoaTYyMjAtbWVkaWFjdHJsIgorLSByZWcgOiBSZWdpc3RlciBhZGRyZXNzIGFuZCBzaXplCistICNjbG9jay1jZWxsczogc2hvdWxkIGJlIHNldCB0byAxLCBtYW55IGNsb2NrIHJlZ2lzdGVycyBhcmUgZGVmaW5lZAorICB1bmRlciB0aGlzIGNvbnRyb2xsZXIgYW5kIHRoaXMgcHJvcGVydHkgbXVzdCBiZSBwcmVzZW50LgorCitIaXNpbGljb24gZGVzaWducyB0aGlzIHN5c3RlbSBjb250cm9sbGVyIHRvIGNvbnRyb2wgdGhlIG11bHRpbWVkaWEKK2RvbWFpbihlLmcuIGNvZGVjLCBHM0QgLi4uKSBmb3IgbW9iaWxlIHBsYXRmb3JtLgorCitFeGFtcGxlOgorCS8qZm9yIEhpNjIyMCovCisJbWVkaWFfY3RybDogbWVkaWFfY3RybEBmNDQxMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiaGlzaWxpY29uLGhpNjIyMC1tZWRpYWN0cmwiLCAic3lzY29uIjsKKwkJcmVnID0gPDB4MCAweGY0NDEwMDAwIDB4MCAweDEwMDA+OworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJfTsKKworCitIaXNpbGljb24gSGk2MjIwIFBvd2VyIE1hbmFnZW1lbnQgZG9tYWluIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJoaXNpbGljb24saGk2MjIwLXBtY3RybCIKKy0gcmVnIDogUmVnaXN0ZXIgYWRkcmVzcyBhbmQgc2l6ZQorLSAjY2xvY2stY2VsbHM6IHNob3VsZCBiZSBzZXQgdG8gMSwgc29tZSBjbG9jayByZWdpc3RlcnMgYXJlIGRlZmluZQorICB1bmRlciB0aGlzIGNvbnRyb2xsZXIgYW5kIHRoaXMgcHJvcGVydHkgbXVzdCBiZSBwcmVzZW50LgorCitIaXNpbGljb24gZGVzaWducyB0aGlzIHN5c3RlbSBjb250cm9sbGVyIHRvIGNvbnRyb2wgdGhlIHBvd2VyIG1hbmFnZW1lbnQKK2RvbWFpbiBmb3IgbW9iaWxlIHBsYXRmb3JtLgorCitFeGFtcGxlOgorCS8qZm9yIEhpNjIyMCovCisJcG1fY3RybDogcG1fY3RybEBmNzAzMjAwMCB7CisJCWNvbXBhdGlibGUgPSAiaGlzaWxpY29uLGhpNjIyMC1wbWN0cmwiLCAic3lzY29uIjsKKwkJcmVnID0gPDB4MCAweGY3MDMyMDAwIDB4MCAweDEwMDA+OworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJfTsKKworCitIaXNpbGljb24gSGk2MjIwIFNSQU0gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogImhpc2lsaWNvbixoaTYyMjAtc3JhbWN0cmwiLCAic3lzY29uIgorLSByZWcgOiBSZWdpc3RlciBhZGRyZXNzIGFuZCBzaXplCisKK0hpc2lsaWNvbidzIFNvQ3MgdXNlIHNyYW0gZm9yIG11bHRpcGxlIHB1cnBvc2U7IG9uIEhpNjIyMCB0aGVyZSBoYXZlIHNldmVyYWwKK1NSQU0gYmFua3MgZm9yIHBvd2VyIG1hbmFnZW1lbnQsIG1vZGVtLCBzZWN1cml0eSwgZXRjLiBGdXJ0aGVyLCB1c2UgInN5c2NvbiIKK21hbmFnaW5nIHRoZSBjb21tb24gc3JhbSB3aGljaCBjYW4gYmUgc2hhcmVkIGJ5IG11bHRpcGxlIG1vZHVsZXMuCisKK0V4YW1wbGU6CisJLypmb3IgSGk2MjIwKi8KKwlzcmFtOiBzcmFtQGZmZjgwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJoaXNpbGljb24saGk2MjIwLXNyYW1jdHJsIiwgInN5c2NvbiI7CisJCXJlZyA9IDwweDAgMHhmZmY4MDAwMCAweDAgMHgxMjAwMD47CisJfTsKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0hpc2lsaWNvbiBIaVAwMSBzeXN0ZW0gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogImhpc2lsaWNvbixoaXAwMS1zeXNjdHJsIgorLSByZWcgOiBSZWdpc3RlciBhZGRyZXNzIGFuZCBzaXplCisKK1RoZSBIaVAwMSBzeXN0ZW0gY29udHJvbGxlciBpcyBtb3N0bHkgY29tcGF0aWJsZSB3aXRoIGhpc2lsaWNvbgorc3lzdGVtIGNvbnRyb2xsZXIsYnV0IGl0IGhhcyBzb21lIHNwZWNpZmljIGNvbnRyb2wgcmVnaXN0ZXJzIGZvcgorSElQMDEgU29DIGZhbWlseSwgc3VjaCBhcyBzbGF2ZSBjb3JlIGJvb3QsIGFuZCBhbHNvIHNvbWUgc2FtZQorcmVnaXN0ZXJzIGxvY2F0ZWQgYXQgZGlmZmVyZW50IG9mZnNldC4KKworRXhhbXBsZToKKworCS8qIGZvciBoaXAwMS1jYTl4MiAqLworCXN5c2N0cmw6IHN5c3RlbS1jb250cm9sbGVyQDEwMDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJoaXNpbGljb24saGlwMDEtc3lzY3RybCIsICJoaXNpbGljb24sc3lzY3RybCI7CisJCXJlZyA9IDwweDEwMDAwMDAwIDB4MTAwMD47CisJCXJlYm9vdC1vZmZzZXQgPSA8MHg0PjsKKwl9OworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSGlzaWxpY29uIEhpUDA1IFBDSWUtU0FTIHN5c3RlbSBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAiaGlzaWxpY29uLHBjaWUtc2FzLXN1YmN0cmwiLCAic3lzY29uIjsKKy0gcmVnIDogUmVnaXN0ZXIgYWRkcmVzcyBhbmQgc2l6ZQorCitUaGUgSGlQMDUgUENJZS1TQVMgc3lzdGVtIGNvbnRyb2xsZXIgaXMgc2hhcmVkIGJ5IFBDSWUgYW5kIFNBUyBjb250cm9sbGVycyBpbgorSGlQMDUgU29jIHRvIGltcGxlbWVudCBzb21lIGJhc2ljIGNvbmZpZ3VyYXRpb25zLgorCitFeGFtcGxlOgorCS8qIGZvciBIaVAwNSBQQ0llLVNBUyBzeXN0ZW0gKi8KKwlwY2llX3Nhczogc3lzdGVtX2NvbnRyb2xsZXJAMHhiMDAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiaGlzaWxpY29uLHBjaWUtc2FzLXN1YmN0cmwiLCAic3lzY29uIjsKKwkJcmVnID0gPDB4YjAwMDAwMDAgMHgxMDAwMD47CisJfTsKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0hpc2lsaWNvbiBDUFUgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogImhpc2lsaWNvbixjcHVjdHJsIgorLSByZWcgOiBSZWdpc3RlciBhZGRyZXNzIGFuZCBzaXplCisKK1RoZSBjbG9jayByZWdpc3RlcnMgYW5kIHBvd2VyIHJlZ2lzdGVycyBvZiBzZWNvbmRhcnkgY29yZXMgYXJlIGRlZmluZWQKK2luIENQVSBjb250cm9sbGVyLCBlc3BlY2lhbGx5IGluIEhJWDVIRDIgU29DLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUENUUkw6IFBlcmlwaGVyYWwgbWlzYyBjb250cm9sIHJlZ2lzdGVyCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJoaXNpbGljb24scGN0cmwiCistIHJlZzogQWRkcmVzcyBhbmQgc2l6ZSBvZiBwY3RybC4KKworRXhhbXBsZToKKworCS8qIGZvciBIaTM2MjAgKi8KKwlwY3RybDogcGN0cmxAZmNhMDkwMDAgeworCQljb21wYXRpYmxlID0gImhpc2lsaWNvbixwY3RybCI7CisJCXJlZyA9IDwweGZjYTA5MDAwIDB4MTAwMD47CisJfTsKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0ZhYnJpYzoKKworUmVxdWlyZWQgUHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImhpc2lsaWNvbixoaXAwNC1mYWJyaWMiOworLSByZWc6IEFkZHJlc3MgYW5kIHNpemUgb2YgRmFicmljCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitCb290d3JhcHBlciBib290IG1ldGhvZCAoc29mdHdhcmUgcHJvdG9jb2wgb24gU01QKToKKworUmVxdWlyZWQgUHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImhpc2lsaWNvbixoaXAwNC1ib290d3JhcHBlciI7CistIGJvb3QtbWV0aG9kOiBBZGRyZXNzIGFuZCBzaXplIG9mIGJvb3QgbWV0aG9kLgorICBbMF06IGJvb3R3cmFwcGVyIHBoeXNpY2FsIGFkZHJlc3MKKyAgWzFdOiBib290d3JhcHBlciBzaXplCisgIFsyXTogcmVsb2NhdGlvbiBwaHlzaWNhbCBhZGRyZXNzCisgIFszXTogcmVsb2NhdGlvbiBzaXplCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2lkbGUtc3RhdGVzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vaWRsZS1zdGF0ZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4ZTQxYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2lkbGUtc3RhdGVzLnR4dApAQCAtMCwwICsxLDY5OSBAQAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitBUk0gaWRsZSBzdGF0ZXMgYmluZGluZyBkZXNjcmlwdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorMSAtIEludHJvZHVjdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FSTSBzeXN0ZW1zIGNvbnRhaW4gSFcgY2FwYWJsZSBvZiBtYW5hZ2luZyBwb3dlciBjb25zdW1wdGlvbiBkeW5hbWljYWxseSwKK3doZXJlIGNvcmVzIGNhbiBiZSBwdXQgaW4gZGlmZmVyZW50IGxvdy1wb3dlciBzdGF0ZXMgKHJhbmdpbmcgZnJvbSBzaW1wbGUKK3dmaSB0byBwb3dlciBnYXRpbmcpIGFjY29yZGluZyB0byBPUyBQTSBwb2xpY2llcy4gVGhlIENQVSBzdGF0ZXMgcmVwcmVzZW50aW5nCit0aGUgcmFuZ2Ugb2YgZHluYW1pYyBpZGxlIHN0YXRlcyB0aGF0IGEgcHJvY2Vzc29yIGNhbiBlbnRlciBhdCBydW4tdGltZSwgY2FuIGJlCitzcGVjaWZpZWQgdGhyb3VnaCBkZXZpY2UgdHJlZSBiaW5kaW5ncyByZXByZXNlbnRpbmcgdGhlIHBhcmFtZXRlcnMgcmVxdWlyZWQKK3RvIGVudGVyL2V4aXQgc3BlY2lmaWMgaWRsZSBzdGF0ZXMgb24gYSBnaXZlbiBwcm9jZXNzb3IuCisKK0FjY29yZGluZyB0byB0aGUgU2VydmVyIEJhc2UgU3lzdGVtIEFyY2hpdGVjdHVyZSBkb2N1bWVudCAoU0JTQSwgWzNdKSwgdGhlCitwb3dlciBzdGF0ZXMgYW4gQVJNIENQVSBjYW4gYmUgcHV0IGludG8gYXJlIGlkZW50aWZpZWQgYnkgdGhlIGZvbGxvd2luZyBsaXN0OgorCistIFJ1bm5pbmcKKy0gSWRsZV9zdGFuZGJ5CistIElkbGVfcmV0ZW50aW9uCistIFNsZWVwCistIE9mZgorCitUaGUgcG93ZXIgc3RhdGVzIGRlc2NyaWJlZCBpbiB0aGUgU0JTQSBkb2N1bWVudCBkZWZpbmUgdGhlIGJhc2ljIENQVSBzdGF0ZXMgb24KK3RvcCBvZiB3aGljaCBBUk0gcGxhdGZvcm1zIGltcGxlbWVudCBwb3dlciBtYW5hZ2VtZW50IHNjaGVtZXMgdGhhdCBhbGxvdyBhbiBPUworUE0gaW1wbGVtZW50YXRpb24gdG8gcHV0IHRoZSBwcm9jZXNzb3IgaW4gZGlmZmVyZW50IGlkbGUgc3RhdGVzICh3aGljaCBpbmNsdWRlCitzdGF0ZXMgbGlzdGVkIGFib3ZlOyAib2ZmIiBzdGF0ZSBpcyBub3QgYW4gaWRsZSBzdGF0ZSBzaW5jZSBpdCBkb2VzIG5vdCBoYXZlCit3YWtlLXVwIGNhcGFiaWxpdGllcywgaGVuY2UgaXQgaXMgbm90IGNvbnNpZGVyZWQgaW4gdGhpcyBkb2N1bWVudCkuCisKK0lkbGUgc3RhdGUgcGFyYW1ldGVycyAoZWcgZW50cnkgbGF0ZW5jeSkgYXJlIHBsYXRmb3JtIHNwZWNpZmljIGFuZCBuZWVkIHRvIGJlCitjaGFyYWN0ZXJpemVkIHdpdGggYmluZGluZ3MgdGhhdCBwcm92aWRlIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbiB0byBPUyBQTQorY29kZSBzbyB0aGF0IGl0IGNhbiBidWlsZCB0aGUgcmVxdWlyZWQgdGFibGVzIGFuZCB1c2UgdGhlbSBhdCBydW50aW1lLgorCitUaGUgZGV2aWNlIHRyZWUgYmluZGluZyBkZWZpbml0aW9uIGZvciBBUk0gaWRsZSBzdGF0ZXMgaXMgdGhlIHN1YmplY3Qgb2YgdGhpcworZG9jdW1lbnQuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzIgLSBpZGxlLXN0YXRlcyBkZWZpbml0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJZGxlIHN0YXRlcyBhcmUgY2hhcmFjdGVyaXplZCBmb3IgYSBzcGVjaWZpYyBzeXN0ZW0gdGhyb3VnaCBhIHNldCBvZgordGltaW5nIGFuZCBlbmVyZ3kgcmVsYXRlZCBwcm9wZXJ0aWVzLCB0aGF0IHVuZGVybGluZSB0aGUgSFcgYmVoYXZpb3VyCit0cmlnZ2VyZWQgdXBvbiBpZGxlIHN0YXRlcyBlbnRyeSBhbmQgZXhpdC4KKworVGhlIGZvbGxvd2luZyBkaWFncmFtIGRlcGljdHMgdGhlIENQVSBleGVjdXRpb24gcGhhc2VzIGFuZCByZWxhdGVkIHRpbWluZworcHJvcGVydGllcyByZXF1aXJlZCB0byBlbnRlciBhbmQgZXhpdCBhbiBpZGxlIHN0YXRlOgorCisuLl9fW0VYRUNdX198X19bUFJFUF1fX3xfX1tFTlRSWV1fX3xfX1tJRExFXV9ffF9fW0VYSVRdX198X19bRVhFQ11fXy4uCisJICAgIHwgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgIHwKKworCSAgICB8PC0tLS0tLSBlbnRyeSAtLS0tLS0tPnwKKwkgICAgfCAgICAgICBsYXRlbmN5ICAgICAgICB8CisJCQkJCSAgICAgIHw8LSBleGl0IC0+fAorCQkJCQkgICAgICB8ICBsYXRlbmN5IHwKKwkgICAgfDwtLS0tLS0tLSBtaW4tcmVzaWRlbmN5IC0tLS0tLS0tPnwKKwkJICAgICAgIHw8LS0tLS0tLSAgd2FrZXVwLWxhdGVuY3kgLS0tLS0tLT58CisKKwkJRGlhZ3JhbSAxOiBDUFUgaWRsZSBzdGF0ZSBleGVjdXRpb24gcGhhc2VzCisKK0VYRUM6CU5vcm1hbCBDUFUgZXhlY3V0aW9uLgorCitQUkVQOglQcmVwYXJhdGlvbiBwaGFzZSBiZWZvcmUgY29tbWl0dGluZyB0aGUgaGFyZHdhcmUgdG8gaWRsZSBtb2RlCisJbGlrZSBjYWNoZSBmbHVzaGluZy4gVGhpcyBpcyBhYm9ydGFibGUgb24gcGVuZGluZyB3YWtlLXVwCisJZXZlbnQgY29uZGl0aW9ucy4gVGhlIGFib3J0IGxhdGVuY3kgaXMgYXNzdW1lZCB0byBiZSBuZWdsaWdpYmxlCisJKGkuZS4gbGVzcyB0aGFuIHRoZSBFTlRSWSArIEVYSVQgZHVyYXRpb24pLiBJZiBhYm9ydGVkLCBDUFUKKwlnb2VzIGJhY2sgdG8gRVhFQy4gVGhpcyBwaGFzZSBpcyBvcHRpb25hbC4gSWYgbm90IGFib3J0YWJsZSwKKwl0aGlzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgRU5UUlkgcGhhc2UgaW5zdGVhZC4KKworRU5UUlk6CVRoZSBoYXJkd2FyZSBpcyBjb21taXR0ZWQgdG8gaWRsZSBtb2RlLiBUaGlzIHBlcmlvZCBtdXN0IHJ1bgorCXRvIGNvbXBsZXRpb24gdXAgdG8gSURMRSBiZWZvcmUgYW55dGhpbmcgZWxzZSBjYW4gaGFwcGVuLgorCitJRExFOglUaGlzIGlzIHRoZSBhY3R1YWwgZW5lcmd5LXNhdmluZyBpZGxlIHBlcmlvZC4gVGhpcyBtYXkgbGFzdAorCWJldHdlZW4gMCBhbmQgaW5maW5pdGUgdGltZSwgdW50aWwgYSB3YWtlLXVwIGV2ZW50IG9jY3Vycy4KKworRVhJVDoJUGVyaW9kIGR1cmluZyB3aGljaCB0aGUgQ1BVIGlzIGJyb3VnaHQgYmFjayB0byBvcGVyYXRpb25hbAorCW1vZGUgKEVYRUMpLgorCitlbnRyeS1sYXRlbmN5OiBXb3JzdCBjYXNlIGxhdGVuY3kgcmVxdWlyZWQgdG8gZW50ZXIgdGhlIGlkbGUgc3RhdGUuIFRoZQorZXhpdC1sYXRlbmN5IG1heSBiZSBndWFyYW50ZWVkIG9ubHkgYWZ0ZXIgZW50cnktbGF0ZW5jeSBoYXMgcGFzc2VkLgorCittaW4tcmVzaWRlbmN5OiBNaW5pbXVtIHBlcmlvZCwgaW5jbHVkaW5nIHByZXBhcmF0aW9uIGFuZCBlbnRyeSwgZm9yIGEgZ2l2ZW4KK2lkbGUgc3RhdGUgdG8gYmUgd29ydGh3aGlsZSBlbmVyZ3l3aXNlLgorCit3YWtldXAtbGF0ZW5jeTogTWF4aW11bSBkZWxheSBiZXR3ZWVuIHRoZSBzaWduYWxpbmcgb2YgYSB3YWtlLXVwIGV2ZW50IGFuZCB0aGUKK0NQVSBiZWluZyBhYmxlIHRvIGV4ZWN1dGUgbm9ybWFsIGNvZGUgYWdhaW4uIElmIG5vdCBzcGVjaWZpZWQsIHRoaXMgaXMgYXNzdW1lZAordG8gYmUgZW50cnktbGF0ZW5jeSArIGV4aXQtbGF0ZW5jeS4KKworVGhlc2UgdGltaW5nIHBhcmFtZXRlcnMgY2FuIGJlIHVzZWQgYnkgYW4gT1MgaW4gZGlmZmVyZW50IGNpcmN1bXN0YW5jZXMuCisKK0FuIGlkbGUgQ1BVIHJlcXVpcmVzIHRoZSBleHBlY3RlZCBtaW4tcmVzaWRlbmN5IHRpbWUgdG8gc2VsZWN0IHRoZSBtb3N0CithcHByb3ByaWF0ZSBpZGxlIHN0YXRlIGJhc2VkIG9uIHRoZSBleHBlY3RlZCBleHBpcnkgdGltZSBvZiB0aGUgbmV4dCBJUlEKKyhpZSB3YWtlLXVwKSB0aGF0IGNhdXNlcyB0aGUgQ1BVIHRvIHJldHVybiB0byB0aGUgRVhFQyBwaGFzZS4KKworQW4gb3BlcmF0aW5nIHN5c3RlbSBzY2hlZHVsZXIgbWF5IG5lZWQgdG8gY29tcHV0ZSB0aGUgc2hvcnRlc3Qgd2FrZS11cCBkZWxheQorZm9yIENQVXMgaW4gdGhlIHN5c3RlbSBieSBkZXRlY3RpbmcgaG93IGxvbmcgd2lsbCBpdCB0YWtlIHRvIGdldCBhIENQVSBvdXQKK29mIGFuIGlkbGUgc3RhdGUsIGVnOgorCit3YWtldXAtZGVsYXkgPSBleGl0LWxhdGVuY3kgKyBtYXgoZW50cnktbGF0ZW5jeSAtIChub3cgLSBlbnRyeS10aW1lc3RhbXApLCAwKQorCitJbiBvdGhlciB3b3JkcywgdGhlIHNjaGVkdWxlciBjYW4gbWFrZSBpdHMgc2NoZWR1bGluZyBkZWNpc2lvbiBieSBzZWxlY3RpbmcKKyhlZyB3YWtpbmctdXApIHRoZSBDUFUgd2l0aCB0aGUgc2hvcnRlc3Qgd2FrZS11cCBsYXRlbmN5LgorVGhlIHdha2UtdXAgbGF0ZW5jeSBtdXN0IHRha2UgaW50byBhY2NvdW50IHRoZSBlbnRyeSBsYXRlbmN5IGlmIHRoYXQgcGVyaW9kCitoYXMgbm90IGV4cGlyZWQuIFRoZSBhYm9ydGFibGUgbmF0dXJlIG9mIHRoZSBQUkVQIHBlcmlvZCBjYW4gYmUgaWdub3JlZAoraWYgaXQgY2Fubm90IGJlIHJlbGllZCB1cG9uIChlLmcuIHRoZSBQUkVQIGRlYWRsaW5lIG1heSBvY2N1ciBtdWNoIHNvb25lciB0aGFuCit0aGUgd29yc3QgY2FzZSBzaW5jZSBpdCBkZXBlbmRzIG9uIHRoZSBDUFUgb3BlcmF0aW5nIGNvbmRpdGlvbnMsIGllIGNhY2hlcworc3RhdGUpLgorCitBbiBPUyBoYXMgdG8gcmVsaWFibHkgcHJvYmUgdGhlIHdha2V1cC1sYXRlbmN5IHNpbmNlIHNvbWUgZGV2aWNlcyBjYW4gZW5mb3JjZQorbGF0ZW5jeSBjb25zdHJhaW50cyBndWFyYW50ZWVzIHRvIHdvcmsgcHJvcGVybHksIHNvIHRoZSBPUyBoYXMgdG8gZGV0ZWN0IHRoZQord29yc3QgY2FzZSB3YWtlLXVwIGxhdGVuY3kgaXQgY2FuIGluY3VyIGlmIGEgQ1BVIGlzIGFsbG93ZWQgdG8gZW50ZXIgYW4KK2lkbGUgc3RhdGUsIGFuZCBwb3NzaWJseSB0byBwcmV2ZW50IHRoYXQgdG8gZ3VhcmFudGVlIHJlbGlhYmxlIGRldmljZQorZnVuY3Rpb25pbmcuCisKK1RoZSBtaW4tcmVzaWRlbmN5IHRpbWUgcGFyYW1ldGVyIGRlc2VydmVzIGZ1cnRoZXIgZXhwbGFuYXRpb24gc2luY2UgaXQgaXMKK2V4cHJlc3NlZCBpbiB0aW1lIHVuaXRzIGJ1dCBtdXN0IGZhY3RvciBpbiBlbmVyZ3kgY29uc3VtcHRpb24gY29lZmZpY2llbnRzLgorCitUaGUgZW5lcmd5IGNvbnN1bXB0aW9uIG9mIGEgY3B1IHdoZW4gaXQgZW50ZXJzIGEgcG93ZXIgc3RhdGUgY2FuIGJlIHJvdWdobHkKK2NoYXJhY3RlcmlzZWQgYnkgdGhlIGZvbGxvd2luZyBncmFwaDoKKworICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgfAorICAgICAgICAgICBlICAgfAorICAgICAgICAgICBuICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy0tLQorICAgICAgICAgICBlICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLS0tLS0tCisgICAgICAgICAgIHIgICB8ICAgICAgICAgICAgICAgICAgICAgICAgLy0tLS0tLQorICAgICAgICAgICBnICAgfCAgICAgICAgICAgICAgICAgIC8tLS0tLQorICAgICAgICAgICB5ICAgfCAgICAgICAgICAgLy0tLS0tLQorICAgICAgICAgICAgICAgfCAgICAgICAtLS0tCisgICAgICAgICAgICAgICB8ICAgICAgL3wKKyAgICAgICAgICAgICAgIHwgICAgIC8gfAorICAgICAgICAgICAgICAgfCAgICAvICB8CisgICAgICAgICAgICAgICB8ICAgLyAgIHwKKyAgICAgICAgICAgICAgIHwgIC8gICAgfAorICAgICAgICAgICAgICAgfCAvICAgICB8CisgICAgICAgICAgICAgICB8LyAgICAgIHwKKyAgICAgICAgICAtLS0tLXwtLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgMHwgICAgICAgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUobXMpCisKKwkJR3JhcGggMTogRW5lcmd5IHZzIHRpbWUgZXhhbXBsZQorCitUaGUgZ3JhcGggaXMgc3BsaXQgaW4gdHdvIHBhcnRzIGRlbGltaXRlZCBieSB0aW1lIDFtcyBvbiB0aGUgWC1heGlzLgorVGhlIGdyYXBoIGN1cnZlIHdpdGggWC1heGlzIHZhbHVlcyA9IHsgeCB8IDAgPCB4IDwgMW1zIH0gaGFzIGEgc3RlZXAgc2xvcGUKK2FuZCBkZW5vdGVzIHRoZSBlbmVyZ3kgY29zdHMgaW5jdXJyZWQgd2hpbHN0IGVudGVyaW5nIGFuZCBsZWF2aW5nIHRoZSBpZGxlCitzdGF0ZS4KK1RoZSBncmFwaCBjdXJ2ZSBpbiB0aGUgYXJlYSBkZWxpbWl0ZWQgYnkgWC1heGlzIHZhbHVlcyA9IHt4IHwgeCA+IDFtcyB9IGhhcworc2hhbGxvd2VyIHNsb3BlIGFuZCBlc3NlbnRpYWxseSByZXByZXNlbnRzIHRoZSBlbmVyZ3kgY29uc3VtcHRpb24gb2YgdGhlIGlkbGUKK3N0YXRlLgorCittaW4tcmVzaWRlbmN5IGlzIGRlZmluZWQgZm9yIGEgZ2l2ZW4gaWRsZSBzdGF0ZSBhcyB0aGUgbWluaW11bSBleHBlY3RlZAorcmVzaWRlbmN5IHRpbWUgZm9yIGEgc3RhdGUgKGluY2x1c2l2ZSBvZiBwcmVwYXJhdGlvbiBhbmQgZW50cnkpIGFmdGVyCit3aGljaCBjaG9vc2luZyB0aGF0IHN0YXRlIGJlY29tZSB0aGUgbW9zdCBlbmVyZ3kgZWZmaWNpZW50IG9wdGlvbi4gQSBnb29kCit3YXkgdG8gdmlzdWFsaXNlIHRoaXMsIGlzIGJ5IHRha2luZyB0aGUgc2FtZSBncmFwaCBhYm92ZSBhbmQgY29tcGFyaW5nIHNvbWUKK3N0YXRlcyBlbmVyZ3kgY29uc3VtcHRpb25zIHBsb3RzLgorCitGb3Igc2FrZSBvZiBzaW1wbGljaXR5LCBsZXQncyBjb25zaWRlciBhIHN5c3RlbSB3aXRoIHR3byBpZGxlIHN0YXRlcyBJRExFMSwKK2FuZCBJRExFMjoKKworICAgICAgICAgIHwKKyAgICAgICAgICB8CisgICAgICAgICAgfAorICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8tLSBJRExFMQorICAgICAgIGUgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy0tLQorICAgICAgIG4gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8tLS0tCisgICAgICAgZSAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLS0tCisgICAgICAgciAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy0tLS0tLy0tLS0tLS0tLSBJRExFMgorICAgICAgIGcgIHwgICAgICAgICAgICAgICAgICAgIC8tLS0tLS0tLy0tLS0tLS0tLQorICAgICAgIHkgIHwgICAgICAgIC0tLS0tLS0tLS0tLSAgICAvLS0tfAorICAgICAgICAgIHwgICAgICAgLyAgICAgICAgICAgLy0tLS0gICAgfAorICAgICAgICAgIHwgICAgICAvICAgICAgICAvLS0tICAgICAgICAgfAorICAgICAgICAgIHwgICAgIC8gICAgLy0tLS0gICAgICAgICAgICAgfAorICAgICAgICAgIHwgICAgLyAvLS0tICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgIHwgICAtLS0gICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgIHwgIC8gICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgIHwgLyAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgIHwvICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHRpbWUKKyAgICAgICAtLS0vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICB8SURMRTEtZW5lcmd5IDwgSURMRTItZW5lcmd5IHwgSURMRTItZW5lcmd5IDwgSURMRTEtZW5lcmd5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElETEUyLW1pbi1yZXNpZGVuY3kKKworCQlHcmFwaCAyOiBpZGxlIHN0YXRlcyBtaW4tcmVzaWRlbmN5IGV4YW1wbGUKKworSW4gZ3JhcGggMiBhYm92ZSwgdGhhdCB0YWtlcyBpbnRvIGFjY291bnQgaWRsZSBzdGF0ZXMgZW50cnkvZXhpdCBlbmVyZ3kKK2Nvc3RzLCBpdCBpcyBjbGVhciB0aGF0IGlmIHRoZSBpZGxlIHN0YXRlIHJlc2lkZW5jeSB0aW1lIChpZSB0aW1lIHRpbGwgbmV4dAord2FrZS11cCBJUlEpIGlzIGxlc3MgdGhhbiBJRExFMi1taW4tcmVzaWRlbmN5LCBJRExFMSBpcyB0aGUgYmV0dGVyIGlkbGUgc3RhdGUKK2Nob2ljZSBlbmVyZ3l3aXNlLgorCitUaGlzIGlzIG1haW5seSBkb3duIHRvIHRoZSBmYWN0IHRoYXQgSURMRTEgZW50cnkvZXhpdCBlbmVyZ3kgY29zdHMgYXJlIGxvd2VyCit0aGFuIElETEUyLgorCitIb3dldmVyLCB0aGUgbG93ZXIgcG93ZXIgY29uc3VtcHRpb24gKGllIHNoYWxsb3dlciBlbmVyZ3kgY3VydmUgc2xvcGUpIG9mIGlkbGUKK3N0YXRlIElETEUyIGltcGxpZXMgdGhhdCBhZnRlciBhIHN1aXRhYmxlIHRpbWUsIElETEUyIGJlY29tZXMgbW9yZSBlbmVyZ3kKK2VmZmljaWVudC4KKworVGhlIHRpbWUgYXQgd2hpY2ggSURMRTIgYmVjb21lcyBtb3JlIGVuZXJneSBlZmZpY2llbnQgdGhhbiBJRExFMSAoYW5kIG90aGVyCitzaGFsbG93ZXIgc3RhdGVzIGluIGEgc3lzdGVtIHdpdGggbXVsdGlwbGUgaWRsZSBzdGF0ZXMpIGlzIGRlZmluZWQKK0lETEUyLW1pbi1yZXNpZGVuY3kgYW5kIGNvcnJlc3BvbmRzIHRvIHRoZSB0aW1lIHdoZW4gZW5lcmd5IGNvbnN1bXB0aW9uIG9mCitJRExFMSBhbmQgSURMRTIgc3RhdGVzIGJyZWFrcyBldmVuLgorCitUaGUgZGVmaW5pdGlvbnMgcHJvdmlkZWQgaW4gdGhpcyBzZWN0aW9uIHVuZGVycGluIHRoZSBpZGxlIHN0YXRlcworcHJvcGVydGllcyBzcGVjaWZpY2F0aW9uIHRoYXQgaXMgdGhlIHN1YmplY3Qgb2YgdGhlIGZvbGxvd2luZyBzZWN0aW9ucy4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorMyAtIGlkbGUtc3RhdGVzIG5vZGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQVJNIHByb2Nlc3NvciBpZGxlIHN0YXRlcyBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIGlkbGUtc3RhdGVzIG5vZGUsIHdoaWNoIGlzCithIGRpcmVjdCBjaGlsZCBvZiB0aGUgY3B1cyBub2RlIFsxXSBhbmQgcHJvdmlkZXMgYSBjb250YWluZXIgd2hlcmUgdGhlCitwcm9jZXNzb3IgaWRsZSBzdGF0ZXMsIGRlZmluZWQgYXMgZGV2aWNlIHRyZWUgbm9kZXMsIGFyZSBsaXN0ZWQuCisKKy0gaWRsZS1zdGF0ZXMgbm9kZQorCisJVXNhZ2U6IE9wdGlvbmFsIC0gT24gQVJNIHN5c3RlbXMsIGl0IGlzIGEgY29udGFpbmVyIG9mIHByb2Nlc3NvciBpZGxlCisJCQkgIHN0YXRlcyBub2Rlcy4gSWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBwcm92aWRlIENQVQorCQkJICBwb3dlciBtYW5hZ2VtZW50IGNhcGFiaWxpdGllcyBvciB0aGUgcHJvY2Vzc29yIGp1c3QKKwkJCSAgc3VwcG9ydHMgaWRsZV9zdGFuZGJ5IGFuIGlkbGUtc3RhdGVzIG5vZGUgaXMgbm90CisJCQkgIHJlcXVpcmVkLgorCisJRGVzY3JpcHRpb246IGlkbGUtc3RhdGVzIG5vZGUgaXMgYSBjb250YWluZXIgbm9kZSwgd2hlcmUgaXRzCisJCSAgICAgc3Vibm9kZXMgZGVzY3JpYmUgdGhlIENQVSBpZGxlIHN0YXRlcy4KKworCU5vZGUgbmFtZSBtdXN0IGJlICJpZGxlLXN0YXRlcyIuCisKKwlUaGUgaWRsZS1zdGF0ZXMgbm9kZSdzIHBhcmVudCBub2RlIG11c3QgYmUgdGhlIGNwdXMgbm9kZS4KKworCVRoZSBpZGxlLXN0YXRlcyBub2RlJ3MgY2hpbGQgbm9kZXMgY2FuIGJlOgorCisJLSBvbmUgb3IgbW9yZSBzdGF0ZSBub2RlcworCisJQW55IG90aGVyIGNvbmZpZ3VyYXRpb24gaXMgY29uc2lkZXJlZCBpbnZhbGlkLgorCisJQW4gaWRsZS1zdGF0ZXMgbm9kZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKKworCS0gZW50cnktbWV0aG9kCisJCVZhbHVlIHR5cGU6IDxzdHJpbmdsaXN0PgorCQlVc2FnZSBhbmQgZGVmaW5pdGlvbiBkZXBlbmQgb24gQVJNIGFyY2hpdGVjdHVyZSB2ZXJzaW9uLgorCQkJIyBPbiBBUk0gdjggNjQtYml0IHRoaXMgcHJvcGVydHkgaXMgcmVxdWlyZWQgYW5kIG11c3QKKwkJCSAgYmUgb25lIG9mOgorCQkJICAgLSAicHNjaSIgKHNlZSBiaW5kaW5ncyBpbiBbMl0pCisJCQkjIE9uIEFSTSAzMi1iaXQgc3lzdGVtcyB0aGlzIHByb3BlcnR5IGlzIG9wdGlvbmFsCisKK1RoZSBub2RlcyBkZXNjcmliaW5nIHRoZSBpZGxlIHN0YXRlcyAoc3RhdGUpIGNhbiBvbmx5IGJlIGRlZmluZWQgd2l0aGluIHRoZQoraWRsZS1zdGF0ZXMgbm9kZSwgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gaXMgY29uc2lkZXJlZCBpbnZhbGlkIGFuZCB0aGVyZWZvcmUKK211c3QgYmUgaWdub3JlZC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorNCAtIHN0YXRlIG5vZGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQSBzdGF0ZSBub2RlIHJlcHJlc2VudHMgYW4gaWRsZSBzdGF0ZSBkZXNjcmlwdGlvbiBhbmQgbXVzdCBiZSBkZWZpbmVkIGFzCitmb2xsb3dzOgorCistIHN0YXRlIG5vZGUKKworCURlc2NyaXB0aW9uOiBtdXN0IGJlIGNoaWxkIG9mIHRoZSBpZGxlLXN0YXRlcyBub2RlCisKKwlUaGUgc3RhdGUgbm9kZSBuYW1lIHNoYWxsIGZvbGxvdyBzdGFuZGFyZCBkZXZpY2UgdHJlZSBuYW1pbmcKKwlydWxlcyAoWzVdLCAyLjIuMSAiTm9kZSBuYW1lcyIpLCBpbiBwYXJ0aWN1bGFyIHN0YXRlIG5vZGVzIHdoaWNoCisJYXJlIHNpYmxpbmdzIHdpdGhpbiBhIHNpbmdsZSBjb21tb24gcGFyZW50IG11c3QgYmUgZ2l2ZW4gYSB1bmlxdWUgbmFtZS4KKworCVRoZSBpZGxlIHN0YXRlIGVudGVyZWQgYnkgZXhlY3V0aW5nIHRoZSB3ZmkgaW5zdHJ1Y3Rpb24gKGlkbGVfc3RhbmRieQorCVNCU0EsWzNdWzRdKSBpcyBjb25zaWRlcmVkIHN0YW5kYXJkIG9uIGFsbCBBUk0gcGxhdGZvcm1zIGFuZCB0aGVyZWZvcmUKKwltdXN0IG5vdCBiZSBsaXN0ZWQuCisKKwlXaXRoIHRoZSBkZWZpbml0aW9ucyBwcm92aWRlZCBhYm92ZSwgdGhlIGZvbGxvd2luZyBsaXN0IHJlcHJlc2VudHMKKwl0aGUgdmFsaWQgcHJvcGVydGllcyBmb3IgYSBzdGF0ZSBub2RlOgorCisJLSBjb21wYXRpYmxlCisJCVVzYWdlOiBSZXF1aXJlZAorCQlWYWx1ZSB0eXBlOiA8c3RyaW5nbGlzdD4KKwkJRGVmaW5pdGlvbjogTXVzdCBiZSAiYXJtLGlkbGUtc3RhdGUiLgorCisJLSBsb2NhbC10aW1lci1zdG9wCisJCVVzYWdlOiBTZWUgZGVmaW5pdGlvbgorCQlWYWx1ZSB0eXBlOiA8bm9uZT4KKwkJRGVmaW5pdGlvbjogaWYgcHJlc2VudCB0aGUgQ1BVIGxvY2FsIHRpbWVyIGNvbnRyb2wgbG9naWMgaXMKKwkJCSAgICBsb3N0IG9uIHN0YXRlIGVudHJ5LCBvdGhlcndpc2UgaXQgaXMgcmV0YWluZWQuCisKKwktIGVudHJ5LWxhdGVuY3ktdXMKKwkJVXNhZ2U6IFJlcXVpcmVkCisJCVZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisJCURlZmluaXRpb246IHUzMiB2YWx1ZSByZXByZXNlbnRpbmcgd29yc3QgY2FzZSBsYXRlbmN5IGluCisJCQkgICAgbWljcm9zZWNvbmRzIHJlcXVpcmVkIHRvIGVudGVyIHRoZSBpZGxlIHN0YXRlLgorCQkJICAgIFRoZSBleGl0LWxhdGVuY3ktdXMgZHVyYXRpb24gbWF5IGJlIGd1YXJhbnRlZWQKKwkJCSAgICBvbmx5IGFmdGVyIGVudHJ5LWxhdGVuY3ktdXMgaGFzIHBhc3NlZC4KKworCS0gZXhpdC1sYXRlbmN5LXVzCisJCVVzYWdlOiBSZXF1aXJlZAorCQlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCQlEZWZpbml0aW9uOiB1MzIgdmFsdWUgcmVwcmVzZW50aW5nIHdvcnN0IGNhc2UgbGF0ZW5jeQorCQkJICAgIGluIG1pY3Jvc2Vjb25kcyByZXF1aXJlZCB0byBleGl0IHRoZSBpZGxlIHN0YXRlLgorCisJLSBtaW4tcmVzaWRlbmN5LXVzCisJCVVzYWdlOiBSZXF1aXJlZAorCQlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCQlEZWZpbml0aW9uOiB1MzIgdmFsdWUgcmVwcmVzZW50aW5nIG1pbmltdW0gcmVzaWRlbmN5IGR1cmF0aW9uCisJCQkgICAgaW4gbWljcm9zZWNvbmRzLCBpbmNsdXNpdmUgb2YgcHJlcGFyYXRpb24gYW5kCisJCQkgICAgZW50cnksIGZvciB0aGlzIGlkbGUgc3RhdGUgdG8gYmUgY29uc2lkZXJlZAorCQkJICAgIHdvcnRod2hpbGUgZW5lcmd5IHdpc2UgKHJlZmVyIHRvIHNlY3Rpb24gMiBvZgorCQkJICAgIHRoaXMgZG9jdW1lbnQgZm9yIGEgY29tcGxldGUgZGVzY3JpcHRpb24pLgorCisJLSB3YWtldXAtbGF0ZW5jeS11czoKKwkJVXNhZ2U6IE9wdGlvbmFsCisJCVZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisJCURlZmluaXRpb246IHUzMiB2YWx1ZSByZXByZXNlbnRpbmcgbWF4aW11bSBkZWxheSBiZXR3ZWVuIHRoZQorCQkJICAgIHNpZ25hbGluZyBvZiBhIHdha2UtdXAgZXZlbnQgYW5kIHRoZSBDUFUgYmVpbmcKKwkJCSAgICBhYmxlIHRvIGV4ZWN1dGUgbm9ybWFsIGNvZGUgYWdhaW4uIElmIG9taXR0ZWQsCisJCQkgICAgdGhpcyBpcyBhc3N1bWVkIHRvIGJlIGVxdWFsIHRvOgorCisJCQkJZW50cnktbGF0ZW5jeS11cyArIGV4aXQtbGF0ZW5jeS11cworCisJCQkgICAgSXQgaXMgaW1wb3J0YW50IHRvIHN1cHBseSB0aGlzIHZhbHVlIG9uIHN5c3RlbXMKKwkJCSAgICB3aGVyZSB0aGUgZHVyYXRpb24gb2YgUFJFUCBwaGFzZSAoc2VlIGRpYWdyYW0gMSwKKwkJCSAgICBzZWN0aW9uIDIpIGlzIG5vbi1uZWdsaWJpZ2xlLgorCQkJICAgIEluIHN1Y2ggc3lzdGVtcyBlbnRyeS1sYXRlbmN5LXVzICsgZXhpdC1sYXRlbmN5LXVzCisJCQkgICAgd2lsbCBleGNlZWQgd2FrZXVwLWxhdGVuY3ktdXMgYnkgdGhpcyBkdXJhdGlvbi4KKworCS0gc3RhdHVzOgorCQlVc2FnZTogT3B0aW9uYWwKKwkJVmFsdWUgdHlwZTogPHN0cmluZz4KKwkJRGVmaW5pdGlvbjogQSBzdGFuZGFyZCBkZXZpY2UgdHJlZSBwcm9wZXJ0eSBbNV0gdGhhdCBpbmRpY2F0ZXMKKwkJCSAgICB0aGUgb3BlcmF0aW9uYWwgc3RhdHVzIG9mIGFuIGlkbGUtc3RhdGUuCisJCQkgICAgSWYgcHJlc2VudCwgaXQgc2hhbGwgYmU6CisJCQkgICAgIm9rYXkiOiB0byBpbmRpY2F0ZSB0aGF0IHRoZSBpZGxlIHN0YXRlIGlzCisJCQkJICAgIG9wZXJhdGlvbmFsLgorCQkJICAgICJkaXNhYmxlZCI6IHRvIGluZGljYXRlIHRoYXQgdGhlIGlkbGUgc3RhdGUgaGFzCisJCQkJCWJlZW4gZGlzYWJsZWQgaW4gZmlybXdhcmUgc28gaXQgaXMgbm90CisJCQkJCW9wZXJhdGlvbmFsLgorCQkJICAgIElmIHRoZSBwcm9wZXJ0eSBpcyBub3QgcHJlc2VudCB0aGUgaWRsZS1zdGF0ZSBtdXN0CisJCQkgICAgYmUgY29uc2lkZXJlZCBvcGVyYXRpb25hbC4KKworCS0gaWRsZS1zdGF0ZS1uYW1lOgorCQlVc2FnZTogT3B0aW9uYWwKKwkJVmFsdWUgdHlwZTogPHN0cmluZz4KKwkJRGVmaW5pdGlvbjogQSBzdHJpbmcgdXNlZCBhcyBhIGRlc2NyaXB0aXZlIG5hbWUgZm9yIHRoZSBpZGxlCisJCQkgICAgc3RhdGUuCisKKwlJbiBhZGRpdGlvbiB0byB0aGUgcHJvcGVydGllcyBsaXN0ZWQgYWJvdmUsIGEgc3RhdGUgbm9kZSBtYXkgcmVxdWlyZQorCWFkZGl0aW9uYWwgcHJvcGVydGllcyBzcGVjaWZpY3MgdG8gdGhlIGVudHJ5LW1ldGhvZCBkZWZpbmVkIGluIHRoZQorCWlkbGUtc3RhdGVzIG5vZGUsIHBsZWFzZSByZWZlciB0byB0aGUgZW50cnktbWV0aG9kIGJpbmRpbmdzCisJZG9jdW1lbnRhdGlvbiBmb3IgcHJvcGVydGllcyBkZWZpbml0aW9ucy4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorNCAtIEV4YW1wbGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0V4YW1wbGUgMSAoQVJNIDY0LWJpdCwgMTYtY3B1IHN5c3RlbSwgUFNDSSBlbmFibGUtbWV0aG9kKToKKworY3B1cyB7CisJI3NpemUtY2VsbHMgPSA8MD47CisJI2FkZHJlc3MtY2VsbHMgPSA8Mj47CisKKwlDUFUwOiBjcHVAMCB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTciOworCQlyZWcgPSA8MHgwIDB4MD47CisJCWVuYWJsZS1tZXRob2QgPSAicHNjaSI7CisJCWNwdS1pZGxlLXN0YXRlcyA9IDwmQ1BVX1JFVEVOVElPTl8wXzAgJkNQVV9TTEVFUF8wXzAKKwkJCQkgICAmQ0xVU1RFUl9SRVRFTlRJT05fMCAmQ0xVU1RFUl9TTEVFUF8wPjsKKwl9OworCisJQ1BVMTogY3B1QDEgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTU3IjsKKwkJcmVnID0gPDB4MCAweDE+OworCQllbmFibGUtbWV0aG9kID0gInBzY2kiOworCQljcHUtaWRsZS1zdGF0ZXMgPSA8JkNQVV9SRVRFTlRJT05fMF8wICZDUFVfU0xFRVBfMF8wCisJCQkJICAgJkNMVVNURVJfUkVURU5USU9OXzAgJkNMVVNURVJfU0xFRVBfMD47CisJfTsKKworCUNQVTI6IGNwdUAxMDAgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTU3IjsKKwkJcmVnID0gPDB4MCAweDEwMD47CisJCWVuYWJsZS1tZXRob2QgPSAicHNjaSI7CisJCWNwdS1pZGxlLXN0YXRlcyA9IDwmQ1BVX1JFVEVOVElPTl8wXzAgJkNQVV9TTEVFUF8wXzAKKwkJCQkgICAmQ0xVU1RFUl9SRVRFTlRJT05fMCAmQ0xVU1RFUl9TTEVFUF8wPjsKKwl9OworCisJQ1BVMzogY3B1QDEwMSB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTciOworCQlyZWcgPSA8MHgwIDB4MTAxPjsKKwkJZW5hYmxlLW1ldGhvZCA9ICJwc2NpIjsKKwkJY3B1LWlkbGUtc3RhdGVzID0gPCZDUFVfUkVURU5USU9OXzBfMCAmQ1BVX1NMRUVQXzBfMAorCQkJCSAgICZDTFVTVEVSX1JFVEVOVElPTl8wICZDTFVTVEVSX1NMRUVQXzA+OworCX07CisKKwlDUFU0OiBjcHVAMTAwMDAgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTU3IjsKKwkJcmVnID0gPDB4MCAweDEwMDAwPjsKKwkJZW5hYmxlLW1ldGhvZCA9ICJwc2NpIjsKKwkJY3B1LWlkbGUtc3RhdGVzID0gPCZDUFVfUkVURU5USU9OXzBfMCAmQ1BVX1NMRUVQXzBfMAorCQkJCSAgICZDTFVTVEVSX1JFVEVOVElPTl8wICZDTFVTVEVSX1NMRUVQXzA+OworCX07CisKKwlDUFU1OiBjcHVAMTAwMDEgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTU3IjsKKwkJcmVnID0gPDB4MCAweDEwMDAxPjsKKwkJZW5hYmxlLW1ldGhvZCA9ICJwc2NpIjsKKwkJY3B1LWlkbGUtc3RhdGVzID0gPCZDUFVfUkVURU5USU9OXzBfMCAmQ1BVX1NMRUVQXzBfMAorCQkJCSAgICZDTFVTVEVSX1JFVEVOVElPTl8wICZDTFVTVEVSX1NMRUVQXzA+OworCX07CisKKwlDUFU2OiBjcHVAMTAxMDAgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTU3IjsKKwkJcmVnID0gPDB4MCAweDEwMTAwPjsKKwkJZW5hYmxlLW1ldGhvZCA9ICJwc2NpIjsKKwkJY3B1LWlkbGUtc3RhdGVzID0gPCZDUFVfUkVURU5USU9OXzBfMCAmQ1BVX1NMRUVQXzBfMAorCQkJCSAgICZDTFVTVEVSX1JFVEVOVElPTl8wICZDTFVTVEVSX1NMRUVQXzA+OworCX07CisKKwlDUFU3OiBjcHVAMTAxMDEgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTU3IjsKKwkJcmVnID0gPDB4MCAweDEwMTAxPjsKKwkJZW5hYmxlLW1ldGhvZCA9ICJwc2NpIjsKKwkJY3B1LWlkbGUtc3RhdGVzID0gPCZDUFVfUkVURU5USU9OXzBfMCAmQ1BVX1NMRUVQXzBfMAorCQkJCSAgICZDTFVTVEVSX1JFVEVOVElPTl8wICZDTFVTVEVSX1NMRUVQXzA+OworCX07CisKKwlDUFU4OiBjcHVAMTAwMDAwMDAwIHsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE1MyI7CisJCXJlZyA9IDwweDEgMHgwPjsKKwkJZW5hYmxlLW1ldGhvZCA9ICJwc2NpIjsKKwkJY3B1LWlkbGUtc3RhdGVzID0gPCZDUFVfUkVURU5USU9OXzFfMCAmQ1BVX1NMRUVQXzFfMAorCQkJCSAgICZDTFVTVEVSX1JFVEVOVElPTl8xICZDTFVTVEVSX1NMRUVQXzE+OworCX07CisKKwlDUFU5OiBjcHVAMTAwMDAwMDAxIHsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE1MyI7CisJCXJlZyA9IDwweDEgMHgxPjsKKwkJZW5hYmxlLW1ldGhvZCA9ICJwc2NpIjsKKwkJY3B1LWlkbGUtc3RhdGVzID0gPCZDUFVfUkVURU5USU9OXzFfMCAmQ1BVX1NMRUVQXzFfMAorCQkJCSAgICZDTFVTVEVSX1JFVEVOVElPTl8xICZDTFVTVEVSX1NMRUVQXzE+OworCX07CisKKwlDUFUxMDogY3B1QDEwMDAwMDEwMCB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTMiOworCQlyZWcgPSA8MHgxIDB4MTAwPjsKKwkJZW5hYmxlLW1ldGhvZCA9ICJwc2NpIjsKKwkJY3B1LWlkbGUtc3RhdGVzID0gPCZDUFVfUkVURU5USU9OXzFfMCAmQ1BVX1NMRUVQXzFfMAorCQkJCSAgICZDTFVTVEVSX1JFVEVOVElPTl8xICZDTFVTVEVSX1NMRUVQXzE+OworCX07CisKKwlDUFUxMTogY3B1QDEwMDAwMDEwMSB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTMiOworCQlyZWcgPSA8MHgxIDB4MTAxPjsKKwkJZW5hYmxlLW1ldGhvZCA9ICJwc2NpIjsKKwkJY3B1LWlkbGUtc3RhdGVzID0gPCZDUFVfUkVURU5USU9OXzFfMCAmQ1BVX1NMRUVQXzFfMAorCQkJCSAgICZDTFVTVEVSX1JFVEVOVElPTl8xICZDTFVTVEVSX1NMRUVQXzE+OworCX07CisKKwlDUFUxMjogY3B1QDEwMDAxMDAwMCB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTMiOworCQlyZWcgPSA8MHgxIDB4MTAwMDA+OworCQllbmFibGUtbWV0aG9kID0gInBzY2kiOworCQljcHUtaWRsZS1zdGF0ZXMgPSA8JkNQVV9SRVRFTlRJT05fMV8wICZDUFVfU0xFRVBfMV8wCisJCQkJICAgJkNMVVNURVJfUkVURU5USU9OXzEgJkNMVVNURVJfU0xFRVBfMT47CisJfTsKKworCUNQVTEzOiBjcHVAMTAwMDEwMDAxIHsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE1MyI7CisJCXJlZyA9IDwweDEgMHgxMDAwMT47CisJCWVuYWJsZS1tZXRob2QgPSAicHNjaSI7CisJCWNwdS1pZGxlLXN0YXRlcyA9IDwmQ1BVX1JFVEVOVElPTl8xXzAgJkNQVV9TTEVFUF8xXzAKKwkJCQkgICAmQ0xVU1RFUl9SRVRFTlRJT05fMSAmQ0xVU1RFUl9TTEVFUF8xPjsKKwl9OworCisJQ1BVMTQ6IGNwdUAxMDAwMTAxMDAgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTUzIjsKKwkJcmVnID0gPDB4MSAweDEwMTAwPjsKKwkJZW5hYmxlLW1ldGhvZCA9ICJwc2NpIjsKKwkJY3B1LWlkbGUtc3RhdGVzID0gPCZDUFVfUkVURU5USU9OXzFfMCAmQ1BVX1NMRUVQXzFfMAorCQkJCSAgICZDTFVTVEVSX1JFVEVOVElPTl8xICZDTFVTVEVSX1NMRUVQXzE+OworCX07CisKKwlDUFUxNTogY3B1QDEwMDAxMDEwMSB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTMiOworCQlyZWcgPSA8MHgxIDB4MTAxMDE+OworCQllbmFibGUtbWV0aG9kID0gInBzY2kiOworCQljcHUtaWRsZS1zdGF0ZXMgPSA8JkNQVV9SRVRFTlRJT05fMV8wICZDUFVfU0xFRVBfMV8wCisJCQkJICAgJkNMVVNURVJfUkVURU5USU9OXzEgJkNMVVNURVJfU0xFRVBfMT47CisJfTsKKworCWlkbGUtc3RhdGVzIHsKKwkJZW50cnktbWV0aG9kID0gInBzY2kiOworCisJCUNQVV9SRVRFTlRJT05fMF8wOiBjcHUtcmV0ZW50aW9uLTAtMCB7CisJCQljb21wYXRpYmxlID0gImFybSxpZGxlLXN0YXRlIjsKKwkJCWFybSxwc2NpLXN1c3BlbmQtcGFyYW0gPSA8MHgwMDEwMDAwPjsKKwkJCWVudHJ5LWxhdGVuY3ktdXMgPSA8MjA+OworCQkJZXhpdC1sYXRlbmN5LXVzID0gPDQwPjsKKwkJCW1pbi1yZXNpZGVuY3ktdXMgPSA8ODA+OworCQl9OworCisJCUNMVVNURVJfUkVURU5USU9OXzA6IGNsdXN0ZXItcmV0ZW50aW9uLTAgeworCQkJY29tcGF0aWJsZSA9ICJhcm0saWRsZS1zdGF0ZSI7CisJCQlsb2NhbC10aW1lci1zdG9wOworCQkJYXJtLHBzY2ktc3VzcGVuZC1wYXJhbSA9IDwweDEwMTAwMDA+OworCQkJZW50cnktbGF0ZW5jeS11cyA9IDw1MD47CisJCQlleGl0LWxhdGVuY3ktdXMgPSA8MTAwPjsKKwkJCW1pbi1yZXNpZGVuY3ktdXMgPSA8MjUwPjsKKwkJCXdha2V1cC1sYXRlbmN5LXVzID0gPDEzMD47CisJCX07CisKKwkJQ1BVX1NMRUVQXzBfMDogY3B1LXNsZWVwLTAtMCB7CisJCQljb21wYXRpYmxlID0gImFybSxpZGxlLXN0YXRlIjsKKwkJCWxvY2FsLXRpbWVyLXN0b3A7CisJCQlhcm0scHNjaS1zdXNwZW5kLXBhcmFtID0gPDB4MDAxMDAwMD47CisJCQllbnRyeS1sYXRlbmN5LXVzID0gPDI1MD47CisJCQlleGl0LWxhdGVuY3ktdXMgPSA8NTAwPjsKKwkJCW1pbi1yZXNpZGVuY3ktdXMgPSA8OTUwPjsKKwkJfTsKKworCQlDTFVTVEVSX1NMRUVQXzA6IGNsdXN0ZXItc2xlZXAtMCB7CisJCQljb21wYXRpYmxlID0gImFybSxpZGxlLXN0YXRlIjsKKwkJCWxvY2FsLXRpbWVyLXN0b3A7CisJCQlhcm0scHNjaS1zdXNwZW5kLXBhcmFtID0gPDB4MTAxMDAwMD47CisJCQllbnRyeS1sYXRlbmN5LXVzID0gPDYwMD47CisJCQlleGl0LWxhdGVuY3ktdXMgPSA8MTEwMD47CisJCQltaW4tcmVzaWRlbmN5LXVzID0gPDI3MDA+OworCQkJd2FrZXVwLWxhdGVuY3ktdXMgPSA8MTUwMD47CisJCX07CisKKwkJQ1BVX1JFVEVOVElPTl8xXzA6IGNwdS1yZXRlbnRpb24tMS0wIHsKKwkJCWNvbXBhdGlibGUgPSAiYXJtLGlkbGUtc3RhdGUiOworCQkJYXJtLHBzY2ktc3VzcGVuZC1wYXJhbSA9IDwweDAwMTAwMDA+OworCQkJZW50cnktbGF0ZW5jeS11cyA9IDwyMD47CisJCQlleGl0LWxhdGVuY3ktdXMgPSA8NDA+OworCQkJbWluLXJlc2lkZW5jeS11cyA9IDw5MD47CisJCX07CisKKwkJQ0xVU1RFUl9SRVRFTlRJT05fMTogY2x1c3Rlci1yZXRlbnRpb24tMSB7CisJCQljb21wYXRpYmxlID0gImFybSxpZGxlLXN0YXRlIjsKKwkJCWxvY2FsLXRpbWVyLXN0b3A7CisJCQlhcm0scHNjaS1zdXNwZW5kLXBhcmFtID0gPDB4MTAxMDAwMD47CisJCQllbnRyeS1sYXRlbmN5LXVzID0gPDUwPjsKKwkJCWV4aXQtbGF0ZW5jeS11cyA9IDwxMDA+OworCQkJbWluLXJlc2lkZW5jeS11cyA9IDwyNzA+OworCQkJd2FrZXVwLWxhdGVuY3ktdXMgPSA8MTAwPjsKKwkJfTsKKworCQlDUFVfU0xFRVBfMV8wOiBjcHUtc2xlZXAtMS0wIHsKKwkJCWNvbXBhdGlibGUgPSAiYXJtLGlkbGUtc3RhdGUiOworCQkJbG9jYWwtdGltZXItc3RvcDsKKwkJCWFybSxwc2NpLXN1c3BlbmQtcGFyYW0gPSA8MHgwMDEwMDAwPjsKKwkJCWVudHJ5LWxhdGVuY3ktdXMgPSA8NzA+OworCQkJZXhpdC1sYXRlbmN5LXVzID0gPDEwMD47CisJCQltaW4tcmVzaWRlbmN5LXVzID0gPDMwMD47CisJCQl3YWtldXAtbGF0ZW5jeS11cyA9IDwxNTA+OworCQl9OworCisJCUNMVVNURVJfU0xFRVBfMTogY2x1c3Rlci1zbGVlcC0xIHsKKwkJCWNvbXBhdGlibGUgPSAiYXJtLGlkbGUtc3RhdGUiOworCQkJbG9jYWwtdGltZXItc3RvcDsKKwkJCWFybSxwc2NpLXN1c3BlbmQtcGFyYW0gPSA8MHgxMDEwMDAwPjsKKwkJCWVudHJ5LWxhdGVuY3ktdXMgPSA8NTAwPjsKKwkJCWV4aXQtbGF0ZW5jeS11cyA9IDwxMjAwPjsKKwkJCW1pbi1yZXNpZGVuY3ktdXMgPSA8MzUwMD47CisJCQl3YWtldXAtbGF0ZW5jeS11cyA9IDwxMzAwPjsKKwkJfTsKKwl9OworCit9OworCitFeGFtcGxlIDIgKEFSTSAzMi1iaXQsIDgtY3B1IHN5c3RlbSwgdHdvIGNsdXN0ZXJzKToKKworY3B1cyB7CisJI3NpemUtY2VsbHMgPSA8MD47CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisKKwlDUFUwOiBjcHVAMCB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hMTUiOworCQlyZWcgPSA8MHgwPjsKKwkJY3B1LWlkbGUtc3RhdGVzID0gPCZDUFVfU0xFRVBfMF8wICZDTFVTVEVSX1NMRUVQXzA+OworCX07CisKKwlDUFUxOiBjcHVAMSB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hMTUiOworCQlyZWcgPSA8MHgxPjsKKwkJY3B1LWlkbGUtc3RhdGVzID0gPCZDUFVfU0xFRVBfMF8wICZDTFVTVEVSX1NMRUVQXzA+OworCX07CisKKwlDUFUyOiBjcHVAMiB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hMTUiOworCQlyZWcgPSA8MHgyPjsKKwkJY3B1LWlkbGUtc3RhdGVzID0gPCZDUFVfU0xFRVBfMF8wICZDTFVTVEVSX1NMRUVQXzA+OworCX07CisKKwlDUFUzOiBjcHVAMyB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hMTUiOworCQlyZWcgPSA8MHgzPjsKKwkJY3B1LWlkbGUtc3RhdGVzID0gPCZDUFVfU0xFRVBfMF8wICZDTFVTVEVSX1NMRUVQXzA+OworCX07CisKKwlDUFU0OiBjcHVAMTAwIHsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE3IjsKKwkJcmVnID0gPDB4MTAwPjsKKwkJY3B1LWlkbGUtc3RhdGVzID0gPCZDUFVfU0xFRVBfMV8wICZDTFVTVEVSX1NMRUVQXzE+OworCX07CisKKwlDUFU1OiBjcHVAMTAxIHsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE3IjsKKwkJcmVnID0gPDB4MTAxPjsKKwkJY3B1LWlkbGUtc3RhdGVzID0gPCZDUFVfU0xFRVBfMV8wICZDTFVTVEVSX1NMRUVQXzE+OworCX07CisKKwlDUFU2OiBjcHVAMTAyIHsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE3IjsKKwkJcmVnID0gPDB4MTAyPjsKKwkJY3B1LWlkbGUtc3RhdGVzID0gPCZDUFVfU0xFRVBfMV8wICZDTFVTVEVSX1NMRUVQXzE+OworCX07CisKKwlDUFU3OiBjcHVAMTAzIHsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE3IjsKKwkJcmVnID0gPDB4MTAzPjsKKwkJY3B1LWlkbGUtc3RhdGVzID0gPCZDUFVfU0xFRVBfMV8wICZDTFVTVEVSX1NMRUVQXzE+OworCX07CisKKwlpZGxlLXN0YXRlcyB7CisJCUNQVV9TTEVFUF8wXzA6IGNwdS1zbGVlcC0wLTAgeworCQkJY29tcGF0aWJsZSA9ICJhcm0saWRsZS1zdGF0ZSI7CisJCQlsb2NhbC10aW1lci1zdG9wOworCQkJZW50cnktbGF0ZW5jeS11cyA9IDwyMDA+OworCQkJZXhpdC1sYXRlbmN5LXVzID0gPDEwMD47CisJCQltaW4tcmVzaWRlbmN5LXVzID0gPDQwMD47CisJCQl3YWtldXAtbGF0ZW5jeS11cyA9IDwyNTA+OworCQl9OworCisJCUNMVVNURVJfU0xFRVBfMDogY2x1c3Rlci1zbGVlcC0wIHsKKwkJCWNvbXBhdGlibGUgPSAiYXJtLGlkbGUtc3RhdGUiOworCQkJbG9jYWwtdGltZXItc3RvcDsKKwkJCWVudHJ5LWxhdGVuY3ktdXMgPSA8NTAwPjsKKwkJCWV4aXQtbGF0ZW5jeS11cyA9IDwxNTAwPjsKKwkJCW1pbi1yZXNpZGVuY3ktdXMgPSA8MjUwMD47CisJCQl3YWtldXAtbGF0ZW5jeS11cyA9IDwxNzAwPjsKKwkJfTsKKworCQlDUFVfU0xFRVBfMV8wOiBjcHUtc2xlZXAtMS0wIHsKKwkJCWNvbXBhdGlibGUgPSAiYXJtLGlkbGUtc3RhdGUiOworCQkJbG9jYWwtdGltZXItc3RvcDsKKwkJCWVudHJ5LWxhdGVuY3ktdXMgPSA8MzAwPjsKKwkJCWV4aXQtbGF0ZW5jeS11cyA9IDw1MDA+OworCQkJbWluLXJlc2lkZW5jeS11cyA9IDw5MDA+OworCQkJd2FrZXVwLWxhdGVuY3ktdXMgPSA8NjAwPjsKKwkJfTsKKworCQlDTFVTVEVSX1NMRUVQXzE6IGNsdXN0ZXItc2xlZXAtMSB7CisJCQljb21wYXRpYmxlID0gImFybSxpZGxlLXN0YXRlIjsKKwkJCWxvY2FsLXRpbWVyLXN0b3A7CisJCQllbnRyeS1sYXRlbmN5LXVzID0gPDgwMD47CisJCQlleGl0LWxhdGVuY3ktdXMgPSA8MjAwMD47CisJCQltaW4tcmVzaWRlbmN5LXVzID0gPDY1MDA+OworCQkJd2FrZXVwLWxhdGVuY3ktdXMgPSA8MjMwMD47CisJCX07CisJfTsKKworfTsKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorNSAtIFJlZmVyZW5jZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworWzFdIEFSTSBMaW51eCBLZXJuZWwgZG9jdW1lbnRhdGlvbiAtIENQVXMgYmluZGluZ3MKKyAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2NwdXMudHh0CisKK1syXSBBUk0gTGludXggS2VybmVsIGRvY3VtZW50YXRpb24gLSBQU0NJIGJpbmRpbmdzCisgICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9wc2NpLnR4dAorCitbM10gQVJNIFNlcnZlciBCYXNlIFN5c3RlbSBBcmNoaXRlY3R1cmUgKFNCU0EpCisgICAgaHR0cDovL2luZm9jZW50ZXIuYXJtLmNvbS9oZWxwL2luZGV4LmpzcAorCitbNF0gQVJNIEFyY2hpdGVjdHVyZSBSZWZlcmVuY2UgTWFudWFscworICAgIGh0dHA6Ly9pbmZvY2VudGVyLmFybS5jb20vaGVscC9pbmRleC5qc3AKKworWzVdIGVQQVBSIHN0YW5kYXJkCisgICAgaHR0cHM6Ly93d3cucG93ZXIub3JnL2RvY3VtZW50YXRpb24vZXBhcHItdmVyc2lvbi0xLTEvCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2luc2lnbmFsLWJvYXJkcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2luc2lnbmFsLWJvYXJkcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTI0YzNkYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vaW5zaWduYWwtYm9hcmRzLnR4dApAQCAtMCwwICsxLDggQEAKKyogSW5zaWduYWwncyBFeHlub3M0MjEwIGJhc2VkIE9yaWdlbiBldmFsdWF0aW9uIGJvYXJkCisKK09yaWdlbiBsb3ctY29zdCBldmFsdWF0aW9uIGJvYXJkIGlzIGJhc2VkIG9uIFNhbXN1bmcncyBFeHlub3M0MjEwIFNvQy4KKworUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgLSBjb21wYXRpYmxlID0gc2hvdWxkIGJlIG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcuCisgICAgICAgIChhKSAic2Ftc3VuZyxzbWRrdjMxMCIgLSBmb3IgU2Ftc3VuZydzIFNNREtWMzEwIGV2YWwgYm9hcmQuCisgICAgICAgIChiKSAic2Ftc3VuZyxleHlub3M0MjEwIiAgLSBmb3IgYm9hcmRzIGJhc2VkIG9uIEV4eW5vczQyMTAgU29DLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9rZXlzdG9uZS9rZXlzdG9uZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2tleXN0b25lL2tleXN0b25lLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDkwYThhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9rZXlzdG9uZS9rZXlzdG9uZS50eHQKQEAgLTAsMCArMSwzNCBAQAorVEkgS2V5c3RvbmUgUGxhdGZvcm1zIERldmljZSBUcmVlIEJpbmRpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCb2FyZHMgd2l0aCBLZXlzdG9uZTIgYmFzZWQgZGV2aWNlcyAoVENJNjZ4eEsySCkgU09DIHNoYWxsIGhhdmUgdGhlCitmb2xsb3dpbmcgcHJvcGVydGllcy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGU6IEFsbCBUSSBzcGVjaWZpYyBkZXZpY2VzIHByZXNlbnQgaW4gS2V5c3RvbmUgU09DIHNob3VsZCBiZSBpbgorICAgdGhlIGZvcm0gInRpLGtleXN0b25lLSoiLiBHZW5lcmljIGRldmljZXMgbGlrZSBnaWMsIGFyY2hfdGltZXJzLCBuczE2NTUwCisgICB0eXBlIFVBUlQgc2hvdWxkIHVzZSB0aGUgc3BlY2lmaWVkIGNvbXBhdGlibGUgZm9yIHRob3NlIGRldmljZXMuCisKK1NvQyBmYW1pbGllczoKKworLSBLZXlzdG9uZSAyIGdlbmVyaWMgU29DOgorICAgY29tcGF0aWJsZSA9ICJ0aSxrZXlzdG9uZSIKKworU29DczoKKworLSBLZXlzdG9uZSAyIEhhd2tpbmcvS2VwbGVyCisgICBjb21wYXRpYmxlID0gInRpLGsyaGsiLCAidGksa2V5c3RvbmUiCistIEtleXN0b25lIDIgTGFtYXJyCisgICBjb21wYXRpYmxlID0gInRpLGsybCIsICJ0aSxrZXlzdG9uZSIKKy0gS2V5c3RvbmUgMiBFZGlzb24KKyAgIGNvbXBhdGlibGUgPSAidGksazJlIiwgInRpLGtleXN0b25lIgorCitCb2FyZHM6CistICBLZXlzdG9uZSAyIEhhd2tpbmcvS2VwbGVyIEVWTQorICAgY29tcGF0aWJsZSA9ICJ0aSxrMmhrLWV2bSIsICJ0aSxrMmhrIiwgInRpLGtleXN0b25lIgorCistICBLZXlzdG9uZSAyIExhbWFyciBFVk0KKyAgIGNvbXBhdGlibGUgPSAidGksazJsLWV2bSIsICJ0aSwgazJsIiwgInRpLGtleXN0b25lIgorCistICBLZXlzdG9uZSAyIEVkaXNvbiBFVk0KKyAgIGNvbXBhdGlibGUgPSAidGksazJlLWV2bSIsICJ0aSxrMmUiLCAidGksa2V5c3RvbmUiCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2tpcmt3b29kLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0va2lya3dvb2QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4Y2NlOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2tpcmt3b29kLnR4dApAQCAtMCwwICsxLDI3IEBACitNYXJ2ZWxsIEtpcmt3b29kIFBsYXRmb3JtcyBEZXZpY2UgVHJlZSBCaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQm9hcmRzIHdpdGggYSBTb0Mgb2YgdGhlIE1hcnZlbGwgS2lya3dvb2QKK3NoYWxsIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0eToKKworUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnR5OgorCitjb21wYXRpYmxlOiBtdXN0IGNvbnRhaW4gIm1hcnZlbGwsa2lya3dvb2QiOworCitJbiBvcmRlciB0byBzdXBwb3J0IHRoZSBraXJrd29vZCBjcHVmcmVxIGRyaXZlciwgdGhlcmUgbXVzdCBiZSBhIG5vZGUKK2NwdXMvY3B1QDAgd2l0aCB0aHJlZSBjbG9ja3MsICJjcHVfY2xrIiwgImRkcmNsayIgYW5kICJwb3dlcnNhdmUiLAord2hlcmUgdGhlICJwb3dlcnNhdmUiIGNsb2NrIGlzIGEgZ2F0aW5nIGNsb2NrIHVzZWQgdG8gc3dpdGNoIHRoZSBDUFUKK2JldHdlZW4gdGhlICJjcHVfY2xrIiBhbmQgdGhlICJkZHJjbGsiLgorCitFeGFtcGxlOgorCisJY3B1cyB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQljcHVAMCB7CisJCSAgICAgIGRldmljZV90eXBlID0gImNwdSI7CisJCSAgICAgIGNvbXBhdGlibGUgPSAibWFydmVsbCxzaGVldmEtODhTVjEzMSI7CisJCSAgICAgIGNsb2NrcyA9IDwmY29yZV9jbGsgMT4sIDwmY29yZV9jbGsgMz4sIDwmZ2F0ZV9jbGsgMTE+OworCQkgICAgICBjbG9jay1uYW1lcyA9ICJjcHVfY2xrIiwgImRkcmNsayIsICJwb3dlcnNhdmUiOworCQl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9sMmNjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbDJjYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZjODhhNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbDJjYy50eHQKQEAgLTAsMCArMSw5MyBAQAorKiBBUk0gTDIgQ2FjaGUgQ29udHJvbGxlcgorCitBUk0gY29yZXMgb2Z0ZW4gaGF2ZSBhIHNlcGFyYXRlIGxldmVsIDIgY2FjaGUgY29udHJvbGxlci4gVGhlcmUgYXJlIHZhcmlvdXMKK2ltcGxlbWVudGF0aW9ucyBvZiB0aGUgTDIgY2FjaGUgY29udHJvbGxlciB3aXRoIGNvbXBhdGlibGUgcHJvZ3JhbW1pbmcgbW9kZWxzLgorU29tZSBvZiB0aGUgcHJvcGVydGllcyB0aGF0IGFyZSBqdXN0IHByZWZpeGVkICJjYWNoZS0qIiBhcmUgdGFrZW4gZnJvbSBzZWN0aW9uCiszLjcuMyBvZiB0aGUgZVBBUFIgdjEuMSBzcGVjaWZpY2F0aW9uIHdoaWNoIGNhbiBiZSBmb3VuZCBhdDoKK2h0dHBzOi8vd3d3LnBvd2VyLm9yZy93cC1jb250ZW50L3VwbG9hZHMvMjAxMi8wNi9Qb3dlcl9lUEFQUl9BUFBST1ZFRF92MS4xLnBkZgorCitUaGUgQVJNIEwyIGNhY2hlIHJlcHJlc2VudGF0aW9uIGluIHRoZSBkZXZpY2UgdHJlZSBzaG91bGQgYmUgZG9uZSBhcyBmb2xsb3dzOgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgb25lIG9mOgorICAiYXJtLHBsMzEwLWNhY2hlIgorICAiYXJtLGwyMjAtY2FjaGUiCisgICJhcm0sbDIxMC1jYWNoZSIKKyAgImJjbSxiY20xMTM1MS1hMi1wbDMxMC1jYWNoZSI6IERFUFJFQ0FURUQgYnkgImJyY20sYmNtMTEzNTEtYTItcGwzMTAtY2FjaGUiCisgICJicmNtLGJjbTExMzUxLWEyLXBsMzEwLWNhY2hlIjogRm9yIEJyb2FkY29tIGJjbTExMzUxIGNoaXBzZXQgd2hlcmUgYW4KKyAgICAgb2Zmc2V0IG5lZWRzIHRvIGJlIGFkZGVkIHRvIHRoZSBhZGRyZXNzIGJlZm9yZSBwYXNzaW5nIGRvd24gdG8gdGhlIEwyCisgICAgIGNhY2hlIGNvbnRyb2xsZXIKKyAgIm1hcnZlbGwsYXVyb3JhLXN5c3RlbS1jYWNoZSI6IE1hcnZlbGwgQ29udHJvbGxlciBkZXNpZ25lZCB0byBiZQorICAgICBjb21wYXRpYmxlIHdpdGggdGhlIEFSTSBvbmUsIHdpdGggc3lzdGVtIGNhY2hlIG1vZGUgKG1lYW5pbmcKKyAgICAgbWFpbnRlbmFuY2Ugb3BlcmF0aW9ucyBvbiBMMSBhcmUgYnJvYWRjYXN0ZWQgdG8gdGhlIEwyIGFuZCBMMgorICAgICBwZXJmb3JtcyB0aGUgc2FtZSBvcGVyYXRpb24pLgorICAibWFydmVsbCxhdXJvcmEtb3V0ZXItY2FjaGUiOiBNYXJ2ZWxsIENvbnRyb2xsZXIgZGVzaWduZWQgdG8gYmUKKyAgICAgY29tcGF0aWJsZSB3aXRoIHRoZSBBUk0gb25lIHdpdGggb3V0ZXIgY2FjaGUgbW9kZS4KKyAgIm1hcnZlbGwsdGF1cm9zMy1jYWNoZSI6IE1hcnZlbGwgVGF1cm9zMyBjYWNoZSBjb250cm9sbGVyLCBjb21wYXRpYmxlCisgICAgIHdpdGggYXJtLHBsMzEwLWNhY2hlIGNvbnRyb2xsZXIuCistIGNhY2hlLXVuaWZpZWQgOiBTcGVjaWZpZXMgdGhlIGNhY2hlIGlzIGEgdW5pZmllZCBjYWNoZS4KKy0gY2FjaGUtbGV2ZWwgOiBTaG91bGQgYmUgc2V0IHRvIDIgZm9yIGEgbGV2ZWwgMiBjYWNoZS4KKy0gcmVnIDogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIGNhY2hlIGNvbnRyb2xsZXIncyBtZW1vcnkgbWFwcGVkCisgIHJlZ2lzdGVycy4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworLSBhcm0sZGF0YS1sYXRlbmN5IDogQ3ljbGVzIG9mIGxhdGVuY3kgZm9yIERhdGEgUkFNIGFjY2Vzc2VzLiBTcGVjaWZpZXMgMyBjZWxscyBvZgorICByZWFkLCB3cml0ZSBhbmQgc2V0dXAgbGF0ZW5jaWVzLiBNaW5pbXVtIHZhbGlkIHZhbHVlcyBhcmUgMS4gQ29udHJvbGxlcnMKKyAgd2l0aG91dCBzZXR1cCBsYXRlbmN5IGNvbnRyb2wgc2hvdWxkIHVzZSBhIHZhbHVlIG9mIDAuCistIGFybSx0YWctbGF0ZW5jeSA6IEN5Y2xlcyBvZiBsYXRlbmN5IGZvciBUYWcgUkFNIGFjY2Vzc2VzLiBTcGVjaWZpZXMgMyBjZWxscyBvZgorICByZWFkLCB3cml0ZSBhbmQgc2V0dXAgbGF0ZW5jaWVzLiBDb250cm9sbGVycyB3aXRob3V0IHNldHVwIGxhdGVuY3kgY29udHJvbAorICBzaG91bGQgdXNlIDAuIENvbnRyb2xsZXJzIHdpdGhvdXQgc2VwYXJhdGUgcmVhZCBhbmQgd3JpdGUgVGFnIFJBTSBsYXRlbmN5CisgIHZhbHVlcyBzaG91bGQgb25seSB1c2UgdGhlIGZpcnN0IGNlbGwuCistIGFybSxkaXJ0eS1sYXRlbmN5IDogQ3ljbGVzIG9mIGxhdGVuY3kgZm9yIERpcnR5IFJBTXMuIFRoaXMgaXMgYSBzaW5nbGUgY2VsbC4KKy0gYXJtLGZpbHRlci1yYW5nZXMgOiA8c3RhcnQgbGVuZ3RoPiBTdGFydGluZyBhZGRyZXNzIGFuZCBsZW5ndGggb2Ygd2luZG93IHRvCisgIGZpbHRlci4gQWRkcmVzc2VzIGluIHRoZSBmaWx0ZXIgd2luZG93IGFyZSBkaXJlY3RlZCB0byB0aGUgTTEgcG9ydC4gT3RoZXIKKyAgYWRkcmVzc2VzIHdpbGwgZ28gdG8gdGhlIE0wIHBvcnQuCistIGFybSxpby1jb2hlcmVudCA6IGluZGljYXRlcyB0aGF0IHRoZSBzeXN0ZW0gaXMgb3BlcmF0aW5nIGluIGFuIGhhcmR3YXJlCisgIEkvTyBjb2hlcmVudCBtb2RlLiBWYWxpZCBvbmx5IHdoZW4gdGhlIGFybSxwbDMxMC1jYWNoZSBjb21wYXRpYmxlCisgIHN0cmluZyBpcyB1c2VkLgorLSBpbnRlcnJ1cHRzIDogMSBjb21iaW5lZCBpbnRlcnJ1cHQuCistIGNhY2hlLXNpemUgOiBzcGVjaWZpZXMgdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIGNhY2hlCistIGNhY2hlLXNldHMgOiBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBhc3NvY2lhdGl2aXR5IHNldHMgb2YgdGhlIGNhY2hlCistIGNhY2hlLWJsb2NrLXNpemUgOiBzcGVjaWZpZXMgdGhlIHNpemUgaW4gYnl0ZXMgb2YgYSBjYWNoZSBibG9jaworLSBjYWNoZS1saW5lLXNpemUgOiBzcGVjaWZpZXMgdGhlIHNpemUgaW4gYnl0ZXMgb2YgYSBsaW5lIGluIHRoZSBjYWNoZSwKKyAgaWYgdGhpcyBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgbGluZSBzaXplIGlzIGFzc3VtZWQgdG8gYmUgZXF1YWwgdG8gdGhlCisgIGNhY2hlIGJsb2NrIHNpemUKKy0gY2FjaGUtaWQtcGFydDogY2FjaGUgaWQgcGFydCBudW1iZXIgdG8gYmUgdXNlZCBpZiBpdCBpcyBub3QgcHJlc2VudAorICBvbiBoYXJkd2FyZQorLSB3dC1vdmVycmlkZTogSWYgcHJlc2VudCB0aGVuIEwyIGlzIGZvcmNlZCB0byBXcml0ZSB0aHJvdWdoIG1vZGUKKy0gYXJtLGRvdWJsZS1saW5lZmlsbCA6IE92ZXJyaWRlIGRvdWJsZSBsaW5lZmlsbCBlbmFibGUgc2V0dGluZy4gRW5hYmxlIGlmCisgIG5vbi16ZXJvLCBkaXNhYmxlIGlmIHplcm8uCistIGFybSxkb3VibGUtbGluZWZpbGwtaW5jciA6IE92ZXJyaWRlIGRvdWJsZSBsaW5lZmlsbCBvbiBJTkNSIHJlYWQuIEVuYWJsZQorICBpZiBub24temVybywgZGlzYWJsZSBpZiB6ZXJvLgorLSBhcm0sZG91YmxlLWxpbmVmaWxsLXdyYXAgOiBPdmVycmlkZSBkb3VibGUgbGluZWZpbGwgb24gV1JBUCByZWFkLiBFbmFibGUKKyAgaWYgbm9uLXplcm8sIGRpc2FibGUgaWYgemVyby4KKy0gYXJtLHByZWZldGNoLWRyb3AgOiBPdmVycmlkZSBwcmVmZXRjaCBkcm9wIGVuYWJsZSBzZXR0aW5nLiBFbmFibGUgaWYgbm9uLXplcm8sCisgIGRpc2FibGUgaWYgemVyby4KKy0gYXJtLHByZWZldGNoLW9mZnNldCA6IE92ZXJyaWRlIHByZWZldGNoIG9mZnNldCB2YWx1ZS4gVmFsaWQgdmFsdWVzIGFyZQorICAwLTcsIDE1LCAyMywgYW5kIDMxLgorLSBhcm0sc2hhcmVkLW92ZXJyaWRlIDogVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlIHBsMzEwIGNhY2hlIGNvbnRyb2xsZXIgd2l0aAorICByZXNwZWN0IHRvIHRoZSBzaGFyZWFibGUgYXR0cmlidXRlIGlzIHRvIHRyYW5zZm9ybSAibm9ybWFsIG1lbW9yeQorICBub24tY2FjaGVhYmxlIHRyYW5zYWN0aW9ucyIgaW50byAiY2FjaGVhYmxlIG5vIGFsbG9jYXRlIiAoZm9yIHJlYWRzKSBvcgorICAid3JpdGUgdGhyb3VnaCBubyB3cml0ZSBhbGxvY2F0ZSIgKGZvciB3cml0ZXMpLgorICBPbiBzeXN0ZW1zIHdoZXJlIHRoaXMgbWF5IGNhdXNlIERNQSBidWZmZXIgY29ycnVwdGlvbiwgdGhpcyBwcm9wZXJ0eSBtdXN0IGJlCisgIHNwZWNpZmllZCB0byBpbmRpY2F0ZSB0aGF0IHN1Y2ggdHJhbnNmb3JtcyBhcmUgcHJlY2x1ZGVkLgorLSBwcmVmZXRjaC1kYXRhIDogRGF0YSBwcmVmZXRjaC4gVmFsdWU6IDwwPiAoZm9yY2libHkgZGlzYWJsZSksIDwxPgorICAoZm9yY2libHkgZW5hYmxlKSwgcHJvcGVydHkgYWJzZW50IChyZXRhaW4gc2V0dGluZ3Mgc2V0IGJ5IGZpcm13YXJlKQorLSBwcmVmZXRjaC1pbnN0ciA6IEluc3RydWN0aW9uIHByZWZldGNoLiBWYWx1ZTogPDA+IChmb3JjaWJseSBkaXNhYmxlKSwKKyAgPDE+IChmb3JjaWJseSBlbmFibGUpLCBwcm9wZXJ0eSBhYnNlbnQgKHJldGFpbiBzZXR0aW5ncyBzZXQgYnkKKyAgZmlybXdhcmUpCisKK0V4YW1wbGU6CisKK0wyOiBjYWNoZS1jb250cm9sbGVyIHsKKyAgICAgICAgY29tcGF0aWJsZSA9ICJhcm0scGwzMTAtY2FjaGUiOworICAgICAgICByZWcgPSA8MHhmZmYxMjAwMCAweDEwMDA+OworICAgICAgICBhcm0sZGF0YS1sYXRlbmN5ID0gPDEgMSAxPjsKKyAgICAgICAgYXJtLHRhZy1sYXRlbmN5ID0gPDIgMiAyPjsKKyAgICAgICAgYXJtLGZpbHRlci1yYW5nZXMgPSA8MHg4MDAwMDAwMCAweDgwMDAwMDA+OworICAgICAgICBjYWNoZS11bmlmaWVkOworICAgICAgICBjYWNoZS1sZXZlbCA9IDwyPjsKKwlpbnRlcnJ1cHRzID0gPDQ1PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2xwYzMyeHgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9scGMzMnh4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmVjOGRkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9scGMzMnh4LnR4dApAQCAtMCwwICsxLDggQEAKK05YUCBMUEMzMnh4IFBsYXRmb3JtcyBEZXZpY2UgVHJlZSBCaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JvYXJkcyB3aXRoIHRoZSBOWFAgTFBDMzJ4eCBTb0Mgc2hhbGwgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0eToKKworY29tcGF0aWJsZTogbXVzdCBiZSAibnhwLGxwYzMyMjAiLCAibnhwLGxwYzMyMzAiLCAibnhwLGxwYzMyNDAiIG9yICJueHAsbHBjMzI1MCIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbWFydmVsbCxiZXJsaW4udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tYXJ2ZWxsLGJlcmxpbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JhYjE4NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbWFydmVsbCxiZXJsaW4udHh0CkBAIC0wLDAgKzEsOTYgQEAKK01hcnZlbGwgQmVybGluIFNvQyBGYW1pbHkgRGV2aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXb3JrIGluIHByb2dyZXNzIHN0YXRlbWVudDoKKworRGV2aWNlIHRyZWUgZmlsZXMgYW5kIGJpbmRpbmdzIGFwcGx5aW5nIHRvIE1hcnZlbGwgQmVybGluIFNvQ3MgYW5kIGJvYXJkcyBhcmUKK2NvbnNpZGVyZWQgInVuc3RhYmxlIi4gQW55IE1hcnZlbGwgQmVybGluIGRldmljZSB0cmVlIGJpbmRpbmcgbWF5IGNoYW5nZSBhdCBhbnkKK3RpbWUuIEJlIHN1cmUgdG8gdXNlIGEgZGV2aWNlIHRyZWUgYmluYXJ5IGFuZCBhIGtlcm5lbCBpbWFnZSBnZW5lcmF0ZWQgZnJvbSB0aGUKK3NhbWUgc291cmNlIHRyZWUuCisKK1BsZWFzZSByZWZlciB0byBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvQUJJLnR4dCBmb3IgYSBkZWZpbml0aW9uIG9mIGEKK3N0YWJsZSBiaW5kaW5nL0FCSS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JvYXJkcyB3aXRoIGEgU29DIG9mIHRoZSBNYXJ2ZWxsIEJlcmxpbiBmYW1pbHksIGUuZy4gQXJtYWRhIDE1MDAKK3NoYWxsIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorCisqIFJlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorY29tcGF0aWJsZTogbXVzdCBjb250YWluICJtYXJ2ZWxsLGJlcmxpbiIKKworSW4gYWRkaXRpb24sIHRoZSBhYm92ZSBjb21wYXRpYmxlIHNoYWxsIGJlIGV4dGVuZGVkIHdpdGggdGhlIHNwZWNpZmljCitTb0MgYW5kIGJvYXJkIHVzZWQuIEN1cnJlbnRseSBrbm93biBTb0MgY29tcGF0aWJsZXMgYXJlOgorICAgICJtYXJ2ZWxsLGJlcmxpbjIiICAgICAgZm9yIE1hcnZlbGwgQXJtYWRhIDE1MDAgKEJHMiwgODhERTMxMDApLAorICAgICJtYXJ2ZWxsLGJlcmxpbjJjZCIgICAgZm9yIE1hcnZlbGwgQXJtYWRhIDE1MDAtbWluaSAoQkcyQ0QsIDg4REUzMDA1KQorICAgICJtYXJ2ZWxsLGJlcmxpbjJjdCIgICAgZm9yIE1hcnZlbGwgQXJtYWRhID8gKEJHMkNULCA4OERFPz8/PykKKyAgICAibWFydmVsbCxiZXJsaW4ycSIgICAgIGZvciBNYXJ2ZWxsIEFybWFkYSAxNTAwLXBybyAoQkcyUSwgODhERTMxMTQpCisgICAgIm1hcnZlbGwsYmVybGluMyIgICAgICBmb3IgTWFydmVsbCBBcm1hZGEgPyAoQkczLCA4OERFPz8/PykKKworKiBFeGFtcGxlOgorCisvIHsKKwltb2RlbCA9ICJTb255IE5TWi1HUzciOworCWNvbXBhdGlibGUgPSAic29ueSxuc3otZ3M3IiwgIm1hcnZlbGwsYmVybGluMiIsICJtYXJ2ZWxsLGJlcmxpbiI7CisKKwkuLi4KK30KKworKiBNYXJ2ZWxsIEJlcmxpbiBDUFUgY29udHJvbCBiaW5kaW5ncworCitDUFUgY29udHJvbCByZWdpc3RlciBhbGxvd3MgdmFyaW91cyBvcGVyYXRpb25zIG9uIENQVXMsIGxpa2UgcmVzZXR0aW5nIHRoZW0KK2luZGVwZW5kZW50bHkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAibWFydmVsbCxiZXJsaW4tY3B1LWN0cmwiCistIHJlZzogYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQKKworRXhhbXBsZToKKworY3B1LWN0cmxAZjdkZDAwMDAgeworCWNvbXBhdGlibGUgPSAibWFydmVsbCxiZXJsaW4tY3B1LWN0cmwiOworCXJlZyA9IDwweGY3ZGQwMDAwIDB4MTAwMDA+OworfTsKKworKiBNYXJ2ZWxsIEJlcmxpbjIgY2hpcCBjb250cm9sIGJpbmRpbmcKKworTWFydmVsbCBCZXJsaW4gU29DcyBoYXZlIGEgY2hpcCBjb250cm9sIHJlZ2lzdGVyIHNldCBwcm92aWRpbmcgc2V2ZXJhbAoraW5kaXZpZHVhbCByZWdpc3RlcnMgZGVhbGluZyB3aXRoIHBpbm11eCwgcGFkbXV4LCBjbG9jaywgcmVzZXQsIGFuZCBzZWNvbmRhcnkKK0NQVSBib290IGFkZHJlc3MuIFVuZm9ydHVuYXRlbHksIHRoZSBpbmRpdmlkdWFsIHJlZ2lzdGVycyBhcmUgc3ByZWFkIGFtb25nIHRoZQorY2hpcCBjb250cm9sIHJlZ2lzdGVycywgc28gdGhlcmUgc2hvdWxkIGJlIGEgc2luZ2xlIERUIG5vZGUgb25seSBwcm92aWRpbmcgdGhlCitkaWZmZXJlbnQgZnVuY3Rpb25zIHdoaWNoIGFyZSBkZXNjcmliZWQgYmVsb3cuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CisJKiB0aGUgZmlyc3QgYW5kIHNlY29uZCB2YWx1ZXMgbXVzdCBiZToKKwkJInNpbXBsZS1tZmQiLCAic3lzY29uIgorLSByZWc6IGFkZHJlc3MgYW5kIGxlbmd0aCBvZiBmb2xsb3dpbmcgcmVnaXN0ZXIgc2V0cyBmb3IKKyAgQkcyL0JHMkNEOiBjaGlwIGNvbnRyb2wgcmVnaXN0ZXIgc2V0CisgIEJHMlE6IGNoaXAgY29udHJvbCByZWdpc3RlciBzZXQgYW5kIGNwdSBwbGwgcmVnaXN0ZXJzCisKKyogTWFydmVsbCBCZXJsaW4yIHN5c3RlbSBjb250cm9sIGJpbmRpbmcKKworTWFydmVsbCBCZXJsaW4gU29DcyBoYXZlIGEgc3lzdGVtIGNvbnRyb2wgcmVnaXN0ZXIgc2V0IHByb3ZpZGluZyBzZXZlcmFsCitpbmRpdmlkdWFsIHJlZ2lzdGVycyBkZWFsaW5nIHdpdGggcGlubXV4LCBwYWRtdXgsIGFuZCByZXNldC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZToKKwkqIHRoZSBmaXJzdCBhbmQgc2Vjb25kIHZhbHVlcyBtdXN0IGJlOgorCQkic2ltcGxlLW1mZCIsICJzeXNjb24iCistIHJlZzogYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBzeXN0ZW0gY29udHJvbCByZWdpc3RlciBzZXQKKworRXhhbXBsZToKKworY2hpcDogY2hpcC1jb250cm9sQGVhMDAwMCB7CisJY29tcGF0aWJsZSA9ICJzaW1wbGUtbWZkIiwgInN5c2NvbiI7CisJcmVnID0gPDB4ZWEwMDAwIDB4NDAwPjsKKworCS8qIHN1Yi1kZXZpY2Ugbm9kZXMgKi8KK307CisKK3N5c2N0cmw6IHN5c3RlbS1jb250cm9sbGVyQGQwMDAgeworCWNvbXBhdGlibGUgPSAic2ltcGxlLW1mZCIsICJzeXNjb24iOworCXJlZyA9IDwweGQwMDAgMHgxMDA+OworCisJLyogc3ViLWRldmljZSBub2RlcyAqLworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbWFydmVsbCxkb3ZlLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbWFydmVsbCxkb3ZlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWFmNjRjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tYXJ2ZWxsLGRvdmUudHh0CkBAIC0wLDAgKzEsMjIgQEAKK01hcnZlbGwgRG92ZSBQbGF0Zm9ybXMgRGV2aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JvYXJkcyB3aXRoIGEgTWFydmVsbCBEb3ZlIFNvQyBzaGFsbCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKKworUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnR5OgorLSBjb21wYXRpYmxlOiBtdXN0IGNvbnRhaW4gIm1hcnZlbGwsZG92ZSI7CisKKyogR2xvYmFsIENvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzCisKK0dsb2JhbCBDb25maWd1cmF0aW9uIHJlZ2lzdGVycyBvZiBEb3ZlIFNvQyBhcmUgc2hhcmVkIGJ5IGEgc3lzY29uIG5vZGUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IG11c3QgY29udGFpbiAibWFydmVsbCxkb3ZlLWdsb2JhbC1jb25maWciIGFuZCAic3lzY29uIi4KKy0gcmVnOiBiYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIEdsb2JhbCBDb25maWd1cmF0aW9uIHJlZ2lzdGVycy4KKworRXhhbXBsZToKKworZ2NvbmY6IGdsb2JhbC1jb25maWdAZTgwMmMgeworCWNvbXBhdGlibGUgPSAibWFydmVsbCxkb3ZlLWdsb2JhbC1jb25maWciLCAic3lzY29uIjsKKwlyZWcgPSA8MHhlODAyYyAweDE0PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21hcnZlbGwsa2lya3dvb2QudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tYXJ2ZWxsLGtpcmt3b29kLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTcxYWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tYXJ2ZWxsLGtpcmt3b29kLnR4dApAQCAtMCwwICsxLDEwMCBAQAorTWFydmVsbCBLaXJrd29vZCBTb0MgRmFtaWx5IERldmljZSBUcmVlIEJpbmRpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQm9hcmRzIHdpdGggYSBTb0Mgb2YgdGhlIE1hcnZlbGwgS2lya3dvb2sgZmFtaWx5LCBlZyA4OGY2MjgxCisKKyogUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6Citjb21wYXRpYmxlOiBtdXN0IGNvbnRhaW4gIm1hcnZlbGwsa2lya3dvb2QiCisKK0luIGFkZGl0aW9uLCB0aGUgYWJvdmUgY29tcGF0aWJsZSBzaGFsbCBiZSBleHRlbmRlZCB3aXRoIHRoZSBzcGVjaWZpYworU29DLiBDdXJyZW50bHkga25vd24gU29DIGNvbXBhdGlibGVzIGFyZToKKworIm1hcnZlbGwsa2lya3dvb2QtODhmNjE5MiIKKyJtYXJ2ZWxsLGtpcmt3b29kLTg4ZjYyODEiCisibWFydmVsbCxraXJrd29vZC04OGY2MjgyIgorIm1hcnZlbGwsa2lya3dvb2QtODhmNjI4MyIKKyJtYXJ2ZWxsLGtpcmt3b29kLTg4ZjY3MDIiCisibWFydmVsbCxraXJrd29vZC05OERYNDEyMiIKKworQW5kIGluIGFkZGl0aW9uLCB0aGUgY29tcGF0aWJsZSBzaGFsbCBiZSBleHRlbmRlZCB3aXRoIHRoZSBzcGVjaWZpYworYm9hcmQuIEN1cnJlbnRseSBrbm93biBib2FyZHMgYXJlOgorCisiYnVmZmFsbyxsc2NobHYyIgorImJ1ZmZhbG8sbHN3dmwiCisiYnVmZmFsbyxsc3d4bCIKKyJidWZmYWxvLGxzeGhsIgorImJ1ZmZhbG8sbHN4bCIKKyJkbGluayxkbnMtMzIwIgorImRsaW5rLGRucy0zMjAtYTEiCisiZGxpbmssZG5zLTMyNSIKKyJkbGluayxkbnMtMzI1LWExIgorImRsaW5rLGRucy1raXJrd29vZCIKKyJleGNpdG8sYjMiCisiZ2xvYmFsc2NhbGUsZHJlYW1wbHVnLTAwMy1kczIwMDEiCisiZ2xvYmFsc2NhbGUsZ3VydXBsdWciCisiZ2xvYmFsc2NhbGUsZ3VydXBsdWctc2VydmVyLXBsdXMiCisiZ2xvYmFsc2NhbGUsc2hlZXZhcGx1ZyIKKyJnbG9iYWxzY2FsZSxzaGVldmFwbHVnIgorImdsb2JhbHNjYWxlLHNoZWV2YXBsdWctZXNhdGEiCisiZ2xvYmFsc2NhbGUsc2hlZXZhcGx1Zy1lc2F0YS1yZXYxMyIKKyJpb20saWNvbm5lY3QiCisiaW9tLGljb25uZWN0LTEuMSIKKyJpb20saXgyLTIwMCIKKyJrZXltaWxlLGttX2tpcmt3b29kIgorImxhY2llLGNsb3VkYm94IgorImxhY2llLGluZXRzcGFjZV92MiIKKyJsYWNpZSxsYXBsdWciCisibGFjaWUsbmFzMmJpZyIKKyJsYWNpZSxuZXRzcGFjZV9saXRlX3YyIgorImxhY2llLG5ldHNwYWNlX21heF92MiIKKyJsYWNpZSxuZXRzcGFjZV9taW5pX3YyIgorImxhY2llLG5ldHNwYWNlX3YyIgorIm1hcnZlbGwsZGItODhmNjI4MS1icCIKKyJtYXJ2ZWxsLGRiLTg4ZjYyODItYnAiCisibWFydmVsbCxtdjg4ZjYyODFndHctZ2UiCisibWFydmVsbCxyZDg4ZjYyODEiCisibWFydmVsbCxyZDg4ZjYyODEiCisibWFydmVsbCxyZDg4ZjYyODEtYTAiCisibWFydmVsbCxyZDg4ZjYyODEtYTEiCisibXBsLGNlYzQiCisibXBsLGNlYzQtMTAiCisibmV0Z2VhcixyZWFkeW5hcyIKKyJuZXRnZWFyLHJlYWR5bmFzIgorIm5ldGdlYXIscmVhZHluYXMtZHVvLXYyIgorIm5ldGdlYXIscmVhZHluYXMtbnYrLXYyIgorInBsYXRob21lLG9wZW5ibG9ja3MtYTYiCisicGxhdGhvbWUsb3BlbmJsb2Nrcy1hNyIKKyJyYWlkc29uaWMsaWItbmFzNjIxMCIKKyJyYWlkc29uaWMsaWItbmFzNjIxMC1iIgorInJhaWRzb25pYyxpYi1uYXM2MjIwIgorInJhaWRzb25pYyxpYi1uYXM2MjIwLWIiCisicmFpZHNvbmljLGliLW5hczYyeDAiCisic2VhZ2F0ZSxkb2Nrc3RhciIKKyJzZWFnYXRlLGdvZmxleG5ldCIKKyJzeW5vbG9neSxkczEwOSIKKyJzeW5vbG9neSxkczExMGp2MTAiCisic3lub2xvZ3ksZHMxMTBqdjIwIgorInN5bm9sb2d5LGRzMTEwanYzMCIKKyJzeW5vbG9neSxkczExMSIKKyJzeW5vbG9neSxkczIwOSIKKyJzeW5vbG9neSxkczIxMGp2MTAiCisic3lub2xvZ3ksZHMyMTBqdjIwIgorInN5bm9sb2d5LGRzMjEyIgorInN5bm9sb2d5LGRzMjEyanYxMCIKKyJzeW5vbG9neSxkczIxMmp2MjAiCisic3lub2xvZ3ksZHMyMTJwdjEwIgorInN5bm9sb2d5LGRzNDA5IgorInN5bm9sb2d5LGRzNDA5c2xpbSIKKyJzeW5vbG9neSxkczQxMGoiCisic3lub2xvZ3ksZHM0MTEiCisic3lub2xvZ3ksZHM0MTFqIgorInN5bm9sb2d5LGRzNDExc2xpbSIKKyJzeW5vbG9neSxkczQxM2p2MTAiCisic3lub2xvZ3kscnMyMTIiCisic3lub2xvZ3kscnM0MDkiCisic3lub2xvZ3kscnM0MTEiCisic3lub2xvZ3kscnM4MTIiCisidXNpLHRvcGtpY2siCisidXNpLHRvcGtpY2stMTI4MVAyIgorInp5eGVsLG5zYTMxMCIKKyJ6eXhlbCxuc2EzMTBhIgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tZWRpYXRlay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21lZGlhdGVrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MThhOTE5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tZWRpYXRlay50eHQKQEAgLTAsMCArMSw0MCBAQAorTWVkaWFUZWsgbXQ2NXh4LCBtdDY3eHggJiBtdDgxeHggUGxhdGZvcm1zIERldmljZSBUcmVlIEJpbmRpbmdzCisKK0JvYXJkcyB3aXRoIGEgTWVkaWFUZWsgbXQ2NXh4L210Njd4eC9tdDgxeHggU29DIHNoYWxsIGhhdmUgdGhlCitmb2xsb3dpbmcgcHJvcGVydHk6CisKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0eToKKworY29tcGF0aWJsZTogTXVzdCBjb250YWluIG9uZSBvZgorICAgIm1lZGlhdGVrLG10NjU4MCIKKyAgICJtZWRpYXRlayxtdDY1ODkiCisgICAibWVkaWF0ZWssbXQ2NTkyIgorICAgIm1lZGlhdGVrLG10Njc5NSIKKyAgICJtZWRpYXRlayxtdDgxMjciCisgICAibWVkaWF0ZWssbXQ4MTM1IgorICAgIm1lZGlhdGVrLG10ODE3MyIKKworCitTdXBwb3J0ZWQgYm9hcmRzOgorCistIEV2YWx1YXRpb24gYm9hcmQgZm9yIE1UNjU4MDoKKyAgICBSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKyAgICAgIC0gY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDY1ODAtZXZicDEiLCAibWVkaWF0ZWssbXQ2NTgwIjsKKy0gYnEgQXF1YXJpczUgc21hcnQgcGhvbmU6CisgICAgUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgICAtIGNvbXBhdGlibGUgPSAibXVuZG9yZWFkZXIsYnEtYXF1YXJpczUiLCAibWVkaWF0ZWssbXQ2NTg5IjsKKy0gRXZhbHVhdGlvbiBib2FyZCBmb3IgTVQ2NTkyOgorICAgIFJlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorICAgICAgLSBjb21wYXRpYmxlID0gIm1lZGlhdGVrLG10NjU5Mi1ldmIiLCAibWVkaWF0ZWssbXQ2NTkyIjsKKy0gRXZhbHVhdGlvbiBib2FyZCBmb3IgTVQ2Nzk1KEhlbGlvIFgxMCk6CisgICAgUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgICAtIGNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ2Nzk1LWV2YiIsICJtZWRpYXRlayxtdDY3OTUiOworLSBNVEsgbXQ4MTI3IHRhYmxldCBtb29zZSBFVkI6CisgICAgUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgICAtIGNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTI3LW1vb3NlIiwgIm1lZGlhdGVrLG10ODEyNyI7CistIE1USyBtdDgxMzUgdGFibGV0IEVWQjoKKyAgICBSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKyAgICAgIC0gY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxMzUtZXZicDEiLCAibWVkaWF0ZWssbXQ4MTM1IjsKKy0gTVRLIG10ODE3MyB0YWJsZXQgRVZCOgorICAgIFJlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorICAgICAgLSBjb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1ldmIiLCAibWVkaWF0ZWssbXQ4MTczIjsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbWVkaWF0ZWsvbWVkaWF0ZWssYXBtaXhlZHN5cy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21lZGlhdGVrL21lZGlhdGVrLGFwbWl4ZWRzeXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzNjE2NmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21lZGlhdGVrL21lZGlhdGVrLGFwbWl4ZWRzeXMudHh0CkBAIC0wLDAgKzEsMjMgQEAKK01lZGlhdGVrIGFwbWl4ZWRzeXMgY29udHJvbGxlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBNZWRpYXRlayBhcG1peGVkc3lzIGNvbnRyb2xsZXIgcHJvdmlkZXMgdGhlIFBMTHMgdG8gdGhlIHN5c3RlbS4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBTaG91bGQgYmU6CisJLSAibWVkaWF0ZWssbXQ4MTM1LWFwbWl4ZWRzeXMiCisJLSAibWVkaWF0ZWssbXQ4MTczLWFwbWl4ZWRzeXMiCistICNjbG9jay1jZWxsczogTXVzdCBiZSAxCisKK1RoZSBhcG1peGVkc3lzIGNvbnRyb2xsZXIgdXNlcyB0aGUgY29tbW9uIGNsayBiaW5kaW5nIGZyb20KK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKK1RoZSBhdmFpbGFibGUgY2xvY2tzIGFyZSBkZWZpbmVkIGluIGR0LWJpbmRpbmdzL2Nsb2NrL210Ki1jbGsuaC4KKworRXhhbXBsZToKKworYXBtaXhlZHN5czogY2xvY2stY29udHJvbGxlckAxMDIwOTAwMCB7CisJY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtYXBtaXhlZHN5cyI7CisJcmVnID0gPDAgMHgxMDIwOTAwMCAwIDB4MTAwMD47CisJI2Nsb2NrLWNlbGxzID0gPDE+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbWVkaWF0ZWsvbWVkaWF0ZWssaW1nc3lzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbWVkaWF0ZWsvbWVkaWF0ZWssaW1nc3lzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWYyY2UxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tZWRpYXRlay9tZWRpYXRlayxpbWdzeXMudHh0CkBAIC0wLDAgKzEsMjIgQEAKK01lZGlhdGVrIGltZ3N5cyBjb250cm9sbGVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBNZWRpYXRlayBpbWdzeXMgY29udHJvbGxlciBwcm92aWRlcyB2YXJpb3VzIGNsb2NrcyB0byB0aGUgc3lzdGVtLgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IFNob3VsZCBiZToKKwktICJtZWRpYXRlayxtdDgxNzMtaW1nc3lzIiwgInN5c2NvbiIKKy0gI2Nsb2NrLWNlbGxzOiBNdXN0IGJlIDEKKworVGhlIGltZ3N5cyBjb250cm9sbGVyIHVzZXMgdGhlIGNvbW1vbiBjbGsgYmluZGluZyBmcm9tCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CitUaGUgYXZhaWxhYmxlIGNsb2NrcyBhcmUgZGVmaW5lZCBpbiBkdC1iaW5kaW5ncy9jbG9jay9tdCotY2xrLmguCisKK0V4YW1wbGU6CisKK2ltZ3N5czogY2xvY2stY29udHJvbGxlckAxNTAwMDAwMCB7CisJY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtaW1nc3lzIiwgInN5c2NvbiI7CisJcmVnID0gPDAgMHgxNTAwMDAwMCAwIDB4MTAwMD47CisJI2Nsb2NrLWNlbGxzID0gPDE+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbWVkaWF0ZWsvbWVkaWF0ZWssaW5mcmFjZmcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tZWRpYXRlay9tZWRpYXRlayxpbmZyYWNmZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZjZDNlNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbWVkaWF0ZWsvbWVkaWF0ZWssaW5mcmFjZmcudHh0CkBAIC0wLDAgKzEsMzAgQEAKK01lZGlhdGVrIGluZnJhY2ZnIGNvbnRyb2xsZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIE1lZGlhdGVrIGluZnJhY2ZnIGNvbnRyb2xsZXIgcHJvdmlkZXMgdmFyaW91cyBjbG9ja3MgYW5kIHJlc2V0CitvdXRwdXRzIHRvIHRoZSBzeXN0ZW0uCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlOgorCS0gIm1lZGlhdGVrLG10ODEzNS1pbmZyYWNmZyIsICJzeXNjb24iCisJLSAibWVkaWF0ZWssbXQ4MTczLWluZnJhY2ZnIiwgInN5c2NvbiIKKy0gI2Nsb2NrLWNlbGxzOiBNdXN0IGJlIDEKKy0gI3Jlc2V0LWNlbGxzOiBNdXN0IGJlIDEKKworVGhlIGluZnJhY2ZnIGNvbnRyb2xsZXIgdXNlcyB0aGUgY29tbW9uIGNsayBiaW5kaW5nIGZyb20KK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKK1RoZSBhdmFpbGFibGUgY2xvY2tzIGFyZSBkZWZpbmVkIGluIGR0LWJpbmRpbmdzL2Nsb2NrL210Ki1jbGsuaC4KK0Fsc28gaXQgdXNlcyB0aGUgY29tbW9uIHJlc2V0IGNvbnRyb2xsZXIgYmluZGluZyBmcm9tCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzZXQvcmVzZXQudHh0LgorVGhlIGF2YWlsYWJsZSByZXNldCBvdXRwdXRzIGFyZSBkZWZpbmVkIGluCitkdC1iaW5kaW5ncy9yZXNldC1jb250cm9sbGVyL210Ki1yZXNldHMuaAorCitFeGFtcGxlOgorCitpbmZyYWNmZzogcG93ZXItY29udHJvbGxlckAxMDAwMTAwMCB7CisJY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtaW5mcmFjZmciLCAic3lzY29uIjsKKwlyZWcgPSA8MCAweDEwMDAxMDAwIDAgMHgxMDAwPjsKKwkjY2xvY2stY2VsbHMgPSA8MT47CisJI3Jlc2V0LWNlbGxzID0gPDE+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbWVkaWF0ZWsvbWVkaWF0ZWssbW1zeXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tZWRpYXRlay9tZWRpYXRlayxtbXN5cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM4NTk0NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbWVkaWF0ZWsvbWVkaWF0ZWssbW1zeXMudHh0CkBAIC0wLDAgKzEsMjIgQEAKK01lZGlhdGVrIG1tc3lzIGNvbnRyb2xsZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIE1lZGlhdGVrIG1tc3lzIGNvbnRyb2xsZXIgcHJvdmlkZXMgdmFyaW91cyBjbG9ja3MgdG8gdGhlIHN5c3RlbS4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBTaG91bGQgYmU6CisJLSAibWVkaWF0ZWssbXQ4MTczLW1tc3lzIiwgInN5c2NvbiIKKy0gI2Nsb2NrLWNlbGxzOiBNdXN0IGJlIDEKKworVGhlIG1tc3lzIGNvbnRyb2xsZXIgdXNlcyB0aGUgY29tbW9uIGNsayBiaW5kaW5nIGZyb20KK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKK1RoZSBhdmFpbGFibGUgY2xvY2tzIGFyZSBkZWZpbmVkIGluIGR0LWJpbmRpbmdzL2Nsb2NrL210Ki1jbGsuaC4KKworRXhhbXBsZToKKworbW1zeXM6IGNsb2NrLWNvbnRyb2xsZXJAMTQwMDAwMDAgeworCWNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTczLW1tc3lzIiwgInN5c2NvbiI7CisJcmVnID0gPDAgMHgxNDAwMDAwMCAwIDB4MTAwMD47CisJI2Nsb2NrLWNlbGxzID0gPDE+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbWVkaWF0ZWsvbWVkaWF0ZWsscGVyaWNmZy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21lZGlhdGVrL21lZGlhdGVrLHBlcmljZmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyNWI4NTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21lZGlhdGVrL21lZGlhdGVrLHBlcmljZmcudHh0CkBAIC0wLDAgKzEsMzAgQEAKK01lZGlhdGVrIHBlcmljZmcgY29udHJvbGxlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBNZWRpYXRlayBwZXJpY2ZnIGNvbnRyb2xsZXIgcHJvdmlkZXMgdmFyaW91cyBjbG9ja3MgYW5kIHJlc2V0CitvdXRwdXRzIHRvIHRoZSBzeXN0ZW0uCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlOgorCS0gIm1lZGlhdGVrLG10ODEzNS1wZXJpY2ZnIiwgInN5c2NvbiIKKwktICJtZWRpYXRlayxtdDgxNzMtcGVyaWNmZyIsICJzeXNjb24iCistICNjbG9jay1jZWxsczogTXVzdCBiZSAxCistICNyZXNldC1jZWxsczogTXVzdCBiZSAxCisKK1RoZSBwZXJpY2ZnIGNvbnRyb2xsZXIgdXNlcyB0aGUgY29tbW9uIGNsayBiaW5kaW5nIGZyb20KK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKK1RoZSBhdmFpbGFibGUgY2xvY2tzIGFyZSBkZWZpbmVkIGluIGR0LWJpbmRpbmdzL2Nsb2NrL210Ki1jbGsuaC4KK0Fsc28gaXQgdXNlcyB0aGUgY29tbW9uIHJlc2V0IGNvbnRyb2xsZXIgYmluZGluZyBmcm9tCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzZXQvcmVzZXQudHh0LgorVGhlIGF2YWlsYWJsZSByZXNldCBvdXRwdXRzIGFyZSBkZWZpbmVkIGluCitkdC1iaW5kaW5ncy9yZXNldC1jb250cm9sbGVyL210Ki1yZXNldHMuaAorCitFeGFtcGxlOgorCitwZXJpY2ZnOiBwb3dlci1jb250cm9sbGVyQDEwMDAzMDAwIHsKKwljb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1wZXJpY2ZnIiwgInN5c2NvbiI7CisJcmVnID0gPDAgMHgxMDAwMzAwMCAwIDB4MTAwMD47CisJI2Nsb2NrLWNlbGxzID0gPDE+OworCSNyZXNldC1jZWxscyA9IDwxPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21lZGlhdGVrL21lZGlhdGVrLHRvcGNrZ2VuLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbWVkaWF0ZWsvbWVkaWF0ZWssdG9wY2tnZW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5ZTkxNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21lZGlhdGVrL21lZGlhdGVrLHRvcGNrZ2VuLnR4dApAQCAtMCwwICsxLDIzIEBACitNZWRpYXRlayB0b3Bja2dlbiBjb250cm9sbGVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBNZWRpYXRlayB0b3Bja2dlbiBjb250cm9sbGVyIHByb3ZpZGVzIHZhcmlvdXMgY2xvY2tzIHRvIHRoZSBzeXN0ZW0uCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlOgorCS0gIm1lZGlhdGVrLG10ODEzNS10b3Bja2dlbiIKKwktICJtZWRpYXRlayxtdDgxNzMtdG9wY2tnZW4iCistICNjbG9jay1jZWxsczogTXVzdCBiZSAxCisKK1RoZSB0b3Bja2dlbiBjb250cm9sbGVyIHVzZXMgdGhlIGNvbW1vbiBjbGsgYmluZGluZyBmcm9tCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CitUaGUgYXZhaWxhYmxlIGNsb2NrcyBhcmUgZGVmaW5lZCBpbiBkdC1iaW5kaW5ncy9jbG9jay9tdCotY2xrLmguCisKK0V4YW1wbGU6CisKK3RvcGNrZ2VuOiBwb3dlci1jb250cm9sbGVyQDEwMDAwMDAwIHsKKwljb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My10b3Bja2dlbiI7CisJcmVnID0gPDAgMHgxMDAwMDAwMCAwIDB4MTAwMD47CisJI2Nsb2NrLWNlbGxzID0gPDE+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbWVkaWF0ZWsvbWVkaWF0ZWssdmRlY3N5cy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21lZGlhdGVrL21lZGlhdGVrLHZkZWNzeXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmYWFjZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21lZGlhdGVrL21lZGlhdGVrLHZkZWNzeXMudHh0CkBAIC0wLDAgKzEsMjIgQEAKK01lZGlhdGVrIHZkZWNzeXMgY29udHJvbGxlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgTWVkaWF0ZWsgdmRlY3N5cyBjb250cm9sbGVyIHByb3ZpZGVzIHZhcmlvdXMgY2xvY2tzIHRvIHRoZSBzeXN0ZW0uCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlOgorCS0gIm1lZGlhdGVrLG10ODE3My12ZGVjc3lzIiwgInN5c2NvbiIKKy0gI2Nsb2NrLWNlbGxzOiBNdXN0IGJlIDEKKworVGhlIHZkZWNzeXMgY29udHJvbGxlciB1c2VzIHRoZSBjb21tb24gY2xrIGJpbmRpbmcgZnJvbQorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorVGhlIGF2YWlsYWJsZSBjbG9ja3MgYXJlIGRlZmluZWQgaW4gZHQtYmluZGluZ3MvY2xvY2svbXQqLWNsay5oLgorCitFeGFtcGxlOgorCit2ZGVjc3lzOiBjbG9jay1jb250cm9sbGVyQDE2MDAwMDAwIHsKKwljb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My12ZGVjc3lzIiwgInN5c2NvbiI7CisJcmVnID0gPDAgMHgxNjAwMDAwMCAwIDB4MTAwMD47CisJI2Nsb2NrLWNlbGxzID0gPDE+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbWVkaWF0ZWsvbWVkaWF0ZWssdmVuY2x0c3lzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbWVkaWF0ZWsvbWVkaWF0ZWssdmVuY2x0c3lzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2MyOTlmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tZWRpYXRlay9tZWRpYXRlayx2ZW5jbHRzeXMudHh0CkBAIC0wLDAgKzEsMjIgQEAKK01lZGlhdGVrIHZlbmNsdHN5cyBjb250cm9sbGVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBNZWRpYXRlayB2ZW5jbHRzeXMgY29udHJvbGxlciBwcm92aWRlcyB2YXJpb3VzIGNsb2NrcyB0byB0aGUgc3lzdGVtLgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IFNob3VsZCBiZToKKwktICJtZWRpYXRlayxtdDgxNzMtdmVuY2x0c3lzIiwgInN5c2NvbiIKKy0gI2Nsb2NrLWNlbGxzOiBNdXN0IGJlIDEKKworVGhlIHZlbmNsdHN5cyBjb250cm9sbGVyIHVzZXMgdGhlIGNvbW1vbiBjbGsgYmluZGluZyBmcm9tCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CitUaGUgYXZhaWxhYmxlIGNsb2NrcyBhcmUgZGVmaW5lZCBpbiBkdC1iaW5kaW5ncy9jbG9jay9tdCotY2xrLmguCisKK0V4YW1wbGU6CisKK3ZlbmNsdHN5czogY2xvY2stY29udHJvbGxlckAxOTAwMDAwMCB7CisJY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtdmVuY2x0c3lzIiwgInN5c2NvbiI7CisJcmVnID0gPDAgMHgxOTAwMDAwMCAwIDB4MTAwMD47CisJI2Nsb2NrLWNlbGxzID0gPDE+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbWVkaWF0ZWsvbWVkaWF0ZWssdmVuY3N5cy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21lZGlhdGVrL21lZGlhdGVrLHZlbmNzeXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViYjI4NjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21lZGlhdGVrL21lZGlhdGVrLHZlbmNzeXMudHh0CkBAIC0wLDAgKzEsMjIgQEAKK01lZGlhdGVrIHZlbmNzeXMgY29udHJvbGxlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgTWVkaWF0ZWsgdmVuY3N5cyBjb250cm9sbGVyIHByb3ZpZGVzIHZhcmlvdXMgY2xvY2tzIHRvIHRoZSBzeXN0ZW0uCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlOgorCS0gIm1lZGlhdGVrLG10ODE3My12ZW5jc3lzIiwgInN5c2NvbiIKKy0gI2Nsb2NrLWNlbGxzOiBNdXN0IGJlIDEKKworVGhlIHZlbmNzeXMgY29udHJvbGxlciB1c2VzIHRoZSBjb21tb24gY2xrIGJpbmRpbmcgZnJvbQorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorVGhlIGF2YWlsYWJsZSBjbG9ja3MgYXJlIGRlZmluZWQgaW4gZHQtYmluZGluZ3MvY2xvY2svbXQqLWNsay5oLgorCitFeGFtcGxlOgorCit2ZW5jc3lzOiBjbG9jay1jb250cm9sbGVyQDE4MDAwMDAwIHsKKwljb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My12ZW5jc3lzIiwgInN5c2NvbiI7CisJcmVnID0gPDAgMHgxODAwMDAwMCAwIDB4MTAwMD47CisJI2Nsb2NrLWNlbGxzID0gPDE+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbW94YXJ0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbW94YXJ0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTA4N2VkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tb3hhcnQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK01PWEEgQVJUIGRldmljZSB0cmVlIGJpbmRpbmdzCisKK0JvYXJkcyB3aXRoIHRoZSBNT1hBIEFSVCBTb0Mgc2hhbGwgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0eToKKworY29tcGF0aWJsZSA9ICJtb3hhLG1veGFydCI7CisKK0JvYXJkczoKKworLSBVQy03MTEyLUxYOiBlbWJlZGRlZCBjb21wdXRlcgorICBjb21wYXRpYmxlID0gIm1veGEsbW94YXJ0LXVjLTcxMTItbHgiLCAibW94YSxtb3hhcnQiCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21ydmwvZmVyb2Nlb24udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tcnZsL2Zlcm9jZW9uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDI0NGI5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tcnZsL2Zlcm9jZW9uLnR4dApAQCAtMCwwICsxLDE2IEBACisqIE1hcnZlbGwgRmVyb2Nlb24gQ2FjaGUKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSBlaXRoZXIgIm1hcnZlbGwsZmVyb2Nlb24tY2FjaGUiIG9yCisgIAkgICAgICAgIm1hcnZlbGwsa2lya3dvb2QtY2FjaGUiLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSByZWcgICAgICAgIDogQWRkcmVzcyBvZiB0aGUgTDIgY2FjaGUgY29udHJvbCByZWdpc3Rlci4gTWFuZGF0b3J5IGZvcgorICAJICAgICAgICJtYXJ2ZWxsLGtpcmt3b29kLWNhY2hlIiwgbm90IHVzZWQgYnkgIm1hcnZlbGwsZmVyb2Nlb24tY2FjaGUiCisKKworRXhhbXBsZToKKwkJbDI6IGwyLWNhY2hlQDIwMTI4IHsKKwkJCWNvbXBhdGlibGUgPSAibWFydmVsbCxraXJrd29vZC1jYWNoZSI7CisJCQlyZWcgPSA8MHgyMDEyOCAweDQ+OworCQl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tcnZsL21ydmwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tcnZsL21ydmwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExN2Q3NDEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21ydmwvbXJ2bC50eHQKQEAgLTAsMCArMSwxNCBAQAorTWFydmVsbCBQbGF0Zm9ybXMgRGV2aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUFhBMTY4IEFzcGVuaXRlIEJvYXJkCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKwktIGNvbXBhdGlibGUgPSAibXJ2bCxweGExNjgtYXNwZW5pdGUiLCAibXJ2bCxweGExNjgiOworCitQWEE5MTAgREtCIEJvYXJkCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKwktIGNvbXBhdGlibGUgPSAibXJ2bCxweGE5MTAtZGtiIjsKKworTU1QMiBCcm93bnN0b25lIEJvYXJkCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKwktIGNvbXBhdGlibGUgPSAibXJ2bCxtbXAyLWJyb3duc3RvbmUiOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tcnZsL3RhdXJvczIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tcnZsL3RhdXJvczIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxYWYxY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21ydmwvdGF1cm9zMi50eHQKQEAgLTAsMCArMSwxNyBAQAorKiBNYXJ2ZWxsIFRhdXJvczIgQ2FjaGUKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAibWFydmVsbCx0YXVyb3MyLWNhY2hlIi4KKy0gbWFydmVsbCx0YXVyb3MyLWNhY2hlLWZlYXR1cmVzIDogU3BlY2lmeSB0aGUgZmVhdHVyZXMgc3VwcG9ydGVkIGZvciB0aGUKKyAgdGF1cm9zMiBjYWNoZS4KKyAgVGhlIGZlYXR1cmVzIGluY2x1ZGluZworICAgIENBQ0hFX1RBVVJPUzJfUFJFRkVUQ0hfT04gICAgICAgKDEgPDwgMCkKKyAgICBDQUNIRV9UQVVST1MyX0xJTkVGSUxMX0JVUlNUOCAgICgxIDw8IDEpCisgIFRoZSBkZWZpbml0aW9uIGNhbiBiZSBmb3VuZCBhdAorICBhcmNoL2FybS9pbmNsdWRlL2FzbS9oYXJkd2FyZS9jYWNoZS10YXVyb3MyLmgKKworRXhhbXBsZToKKwlMMjogbDItY2FjaGUgeworCQljb21wYXRpYmxlID0gIm1hcnZlbGwsdGF1cm9zMi1jYWNoZSI7CisJCW1hcnZlbGwsdGF1cm9zMi1jYWNoZS1mZWF0dXJlcyA9IDwweDM+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21ydmwvdGltZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tcnZsL3RpbWVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTZlMjUxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tcnZsL3RpbWVyLnR4dApAQCAtMCwwICsxLDEzIEBACisqIE1hcnZlbGwgTU1QIFRpbWVyIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAibXJ2bCxtbXAtdGltZXIiLgorLSByZWcgOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBvZiB0aW1lciBjb250cm9sbGVyLgorLSBpbnRlcnJ1cHRzIDogU2hvdWxkIGJlIHRoZSBpbnRlcnJ1cHQgbnVtYmVyLgorCitFeGFtcGxlOgorCXRpbWVyMDogdGltZXJAZDQwMTQwMDAgeworCQljb21wYXRpYmxlID0gIm1ydmwsbW1wLXRpbWVyIjsKKwkJcmVnID0gPDB4ZDQwMTQwMDAgMHgxMDA+OworCQlpbnRlcnJ1cHRzID0gPDEzPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tc20vcWNvbSxpZGxlLXN0YXRlLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbXNtL3Fjb20saWRsZS1zdGF0ZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZkZjA0YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbXNtL3Fjb20saWRsZS1zdGF0ZS50eHQKQEAgLTAsMCArMSw4NCBAQAorUUNPTSBJZGxlIFN0YXRlcyBmb3IgY3B1aWRsZSBkcml2ZXIKKworQVJNIHByb3ZpZGVzIGlkbGUtc3RhdGUgbm9kZSB0byBkZWZpbmUgdGhlIGNwdWlkbGUgc3RhdGVzLCBhcyBkZWZpbmVkIGluIFsxXS4KK2NwdWlkbGUtcWNvbSBpcyB0aGUgY3B1aWRsZSBkcml2ZXIgZm9yIFF1YWxjb21tIFNvQ3MgYW5kIHVzZXMgdGhlc2UgaWRsZQorc3RhdGVzLiBJZGxlIHN0YXRlcyBoYXZlIGRpZmZlcmVudCBlbnRlci9leGl0IGxhdGVuY3kgYW5kIHJlc2lkZW5jeSB2YWx1ZXMuCitUaGUgaWRsZSBzdGF0ZXMgc3VwcG9ydGVkIGJ5IHRoZSBRQ09NIFNvQyBhcmUgZGVmaW5lZCBhcyAtCisKKyAgICAqIFN0YW5kYnkKKyAgICAqIFJldGVudGlvbgorICAgICogU3RhbmRhbG9uZSBQb3dlciBDb2xsYXBzZSAoU3RhbmRhbG9uZSBQQyBvciBTUEMpCisgICAgKiBQb3dlciBDb2xsYXBzZSAoUEMpCisKK1N0YW5kYnk6IFN0YW5kYnkgZG9lcyBhIGxpdHRsZSBtb3JlIGluIGFkZGl0aW9uIHRvIGFyY2hpdGVjdHVyYWwgY2xvY2sgZ2F0aW5nLgorV2hlbiB0aGUgV0ZJIGluc3RydWN0aW9uIGlzIGV4ZWN1dGVkIHRoZSBBUk0gY29yZSB3b3VsZCBnYXRlIGl0cyBpbnRlcm5hbAorY2xvY2tzLiBJbiBhZGRpdGlvbiB0byBnYXRpbmcgdGhlIGNsb2NrcywgUUNPTSBjcHVzIHVzZSB0aGlzIGluc3RydWN0aW9uIGFzIGEKK3RyaWdnZXIgdG8gZXhlY3V0ZSB0aGUgU1BNIHN0YXRlIG1hY2hpbmUuIFRoZSBTUE0gc3RhdGUgbWFjaGluZSB3YWl0cyBmb3IgdGhlCitpbnRlcnJ1cHQgdG8gdHJpZ2dlciB0aGUgY29yZSBiYWNrIGluIHRvIGFjdGl2ZS4gVGhpcyB0cmlnZ2VycyB0aGUgY2FjaGUKK2hpZXJhcmNoeSB0byBlbnRlciBzdGFuZGJ5IHN0YXRlcywgd2hlbiBhbGwgY3B1cyBhcmUgaWRsZS4gQW4gaW50ZXJydXB0IGJyaW5ncwordGhlIFNQTSBzdGF0ZSBtYWNoaW5lIG91dCBvZiBpdHMgd2FpdCwgdGhlIG5leHQgc3RlcCBpcyB0byBlbnN1cmUgdGhhdCB0aGUKK2NhY2hlIGhpZXJhcmNoeSBpcyBhbHNvIG91dCBvZiBzdGFuZGJ5LCBhbmQgdGhlbiB0aGUgY3B1IGlzIGFsbG93ZWQgdG8gcmVzdW1lCitleGVjdXRpb24uIFRoaXMgc3RhdGUgaXMgZGVmaW5lZCBhcyBhIGdlbmVyaWMgQVJNIFdGSSBzdGF0ZSBieSB0aGUgQVJNIGNwdWlkbGUKK2RyaXZlciBhbmQgaXMgbm90IGRlZmluZWQgaW4gdGhlIERULiBUaGUgU1BNIHN0YXRlIG1hY2hpbmUgc2hvdWxkIGJlCitjb25maWd1cmVkIHRvIGV4ZWN1dGUgdGhpcyBzdGF0ZSBieSBkZWZhdWx0IGFuZCBhZnRlciBleGVjdXRpbmcgZXZlcnkgb3RoZXIKK3N0YXRlIGJlbG93LgorCitSZXRlbnRpb246IFJldGVudGlvbiBpcyBhIGxvdyBwb3dlciBzdGF0ZSB3aGVyZSB0aGUgY29yZSBpcyBjbG9jayBnYXRlZCBhbmQKK3RoZSBtZW1vcnkgYW5kIHRoZSByZWdpc3RlcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb3JlIGFyZSByZXRhaW5lZC4gVGhlCit2b2x0YWdlIG1heSBiZSByZWR1Y2VkIHRvIHRoZSBtaW5pbXVtIHZhbHVlIG5lZWRlZCB0byBrZWVwIHRoZSBwcm9jZXNzb3IKK3JlZ2lzdGVycyBhY3RpdmUuIFRoZSBTUE0gc2hvdWxkIGJlIGNvbmZpZ3VyZWQgdG8gZXhlY3V0ZSB0aGUgcmV0ZW50aW9uCitzZXF1ZW5jZSBhbmQgd291bGQgd2FpdCBmb3IgaW50ZXJydXB0LCBiZWZvcmUgcmVzdG9yaW5nIHRoZSBjcHUgdG8gZXhlY3V0aW9uCitzdGF0ZS4gUmV0ZW50aW9uIG1heSBoYXZlIGEgc2xpZ2h0bHkgaGlnaGVyIGxhdGVuY3kgdGhhbiBTdGFuZGJ5LgorCitTdGFuZGFsb25lIFBDOiBBIGNwdSBjYW4gcG93ZXIgZG93biBhbmQgd2FybWJvb3QgaWYgdGhlcmUgaXMgYSBzdWZmaWNpZW50IHRpbWUKK2JldHdlZW4gdGhlIHRpbWUgaXQgZW50ZXJzIGlkbGUgYW5kIHRoZSBuZXh0IGtub3duIHdha2UgdXAuIFNQQyBtb2RlIGlzIHVzZWQKK3RvIGluZGljYXRlIGEgY29yZSBlbnRlcmluZyBhIHBvd2VyIGRvd24gc3RhdGUgd2l0aG91dCBjb25zdWx0aW5nIGFueSBvdGhlcgorY3B1IG9yIHRoZSBzeXN0ZW0gcmVzb3VyY2VzLiBUaGlzIGhlbHBzIHNhdmUgcG93ZXIgb25seSBvbiB0aGF0IGNvcmUuICBUaGUgU1BNCitzZXF1ZW5jZSBmb3IgdGhpcyBpZGxlIHN0YXRlIGlzIHByb2dyYW1tZWQgdG8gcG93ZXIgZG93biB0aGUgc3VwcGx5IHRvIHRoZQorY29yZSwgd2FpdCBmb3IgdGhlIGludGVycnVwdCwgcmVzdG9yZSBwb3dlciB0byB0aGUgY29yZSwgYW5kIGVuc3VyZSB0aGUKK3N5c3RlbSBzdGF0ZSBpbmNsdWRpbmcgY2FjaGUgaGllcmFyY2h5IGlzIHJlYWR5IGJlZm9yZSBhbGxvd2luZyBjb3JlIHRvCityZXN1bWUuIEFwcGx5aW5nIHBvd2VyIGFuZCByZXNldHRpbmcgdGhlIGNvcmUgY2F1c2VzIHRoZSBjb3JlIHRvIHdhcm1ib290CitiYWNrIGludG8gRWxldmF0aW9uIExldmVsIChFTCkgd2hpY2ggdHJhbXBvbGluZXMgdGhlIGNvbnRyb2wgYmFjayB0byB0aGUKK2tlcm5lbC4gRW50ZXJpbmcgYSBwb3dlciBkb3duIHN0YXRlIGZvciB0aGUgY3B1LCBuZWVkcyB0byBiZSBkb25lIGJ5IHRyYXBwaW5nCitpbnRvIGEgRUwuIEZhaWxpbmcgdG8gZG8gc28sIHdvdWxkIHJlc3VsdCBpbiBhIGNyYXNoIGVuZm9yY2VkIGJ5IHRoZSB3YXJtIGJvb3QKK2NvZGUgaW4gdGhlIEVMIGZvciB0aGUgU29DLiBPbiBTb0NzIHdpdGggd3JpdGUtYmFjayBMMSBjYWNoZSwgdGhlIGNhY2hlIGhhcyB0bworYmUgZmx1c2hlZCBpbiBzL3csIGJlZm9yZSBwb3dlcmluZyBkb3duIHRoZSBjb3JlLgorCitQb3dlciBDb2xsYXBzZTogVGhpcyBzdGF0ZSBpcyBzaW1pbGFyIHRvIHRoZSBTUEMgbW9kZSwgYnV0IGRpc3Rpbmd1aXNoZXMKK2l0c2VsZiBpbiB0aGF0IHRoZSBjcHUgYWNrbm93bGVkZ2VzIGFuZCBwZXJtaXRzIHRoZSBTb0MgdG8gZW50ZXIgZGVlcGVyIHNsZWVwCittb2Rlcy4gSW4gYSBoaWVyYXJjaGljYWwgcG93ZXIgZG9tYWluIFNvQywgdGhpcyBtZWFucyBMMiBhbmQgb3RoZXIgY2FjaGVzIGNhbgorYmUgZmx1c2hlZCwgc3lzdGVtIGJ1cywgY2xvY2tzIC0gbG93ZXJlZCwgYW5kIFNvQyBtYWluIFhPIGNsb2NrIGdhdGVkIGFuZAordm9sdGFnZXMgcmVkdWNlZCwgcHJvdmlkZWQgYWxsIGNwdXMgZW50ZXIgdGhpcyBzdGF0ZS4gIFNpbmNlIHRoZSBzcGFuIG9mIGxvdworcG93ZXIgbW9kZXMgcG9zc2libGUgYXQgdGhpcyBzdGF0ZSBpcyB2YXN0LCB0aGUgZXhpdCBsYXRlbmN5IGFuZCB0aGUgcmVzaWRlbmN5CitvZiB0aGlzIGxvdyBwb3dlciBtb2RlIHdvdWxkIGJlIGNvbnNpZGVyZWQgaGlnaCBldmVuIHRob3VnaCBhdCBhIGNwdSBsZXZlbCwKK3RoaXMgZXNzZW50aWFsbHkgaXMgY3B1IHBvd2VyIGRvd24uIFRoZSBTUE0gaW4gdGhpcyBzdGF0ZSBhbHNvIG1heSBoYW5kc2hha2UKK3dpdGggdGhlIFJlc291cmNlIHBvd2VyIG1hbmFnZXIgKFJQTSkgcHJvY2Vzc29yIGluIHRoZSBTb0MgdG8gaW5kaWNhdGUgYQorY29tcGxldGUgYXBwbGljYXRpb24gcHJvY2Vzc29yIHN1YnN5c3RlbSBzaHV0IGRvd24uCisKK1RoZSBpZGxlLXN0YXRlIGZvciBRQ09NIFNvQ3MgYXJlIGRpc3Rpbmd1aXNoZWQgYnkgdGhlIGNvbXBhdGlibGUgcHJvcGVydHkgb2YKK3RoZSBpZGxlLXN0YXRlcyBkZXZpY2Ugbm9kZS4KKworVGhlIGRldmljZXRyZWUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGlkbGUgc3RhdGUgc2hvdWxkIGJlIC0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBNdXN0IGJlIG9uZSBvZiAtCisJCQkicWNvbSxpZGxlLXN0YXRlLXJldCIsCisJCQkicWNvbSxpZGxlLXN0YXRlLXNwYyIsCisJCQkicWNvbSxpZGxlLXN0YXRlLXBjIiwKKwkJYW5kICJhcm0saWRsZS1zdGF0ZSIuCisKK090aGVyIHJlcXVpcmVkIGFuZCBvcHRpb25hbCBwcm9wZXJ0aWVzIGFyZSBzcGVjaWZpZWQgaW4gWzFdLgorCitFeGFtcGxlOgorCisJaWRsZS1zdGF0ZXMgeworCQlDUFVfU1BDOiBzcGMgeworCQkJY29tcGF0aWJsZSA9ICJxY29tLGlkbGUtc3RhdGUtc3BjIiwgImFybSxpZGxlLXN0YXRlIjsKKwkJCWVudHJ5LWxhdGVuY3ktdXMgPSA8MTUwPjsKKwkJCWV4aXQtbGF0ZW5jeS11cyA9IDwyMDA+OworCQkJbWluLXJlc2lkZW5jeS11cyA9IDwyMDAwPjsKKwkJfTsKKwl9OworCitbMV0uIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vaWRsZS1zdGF0ZXMudHh0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21zbS9xY29tLGtwc3MtYWNjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbXNtL3Fjb20sa3Bzcy1hY2MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzMzNkYjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21zbS9xY29tLGtwc3MtYWNjLnR4dApAQCAtMCwwICsxLDMwIEBACitLcmFpdCBQcm9jZXNzb3IgU3ViLXN5c3RlbSAoS1BTUykgQXBwbGljYXRpb24gQ2xvY2sgQ29udHJvbGxlciAoQUNDKQorCitUaGUgS1BTUyBBQ0MgcHJvdmlkZXMgY2xvY2ssIHBvd2VyIGRvbWFpbiwgYW5kIHJlc2V0IGNvbnRyb2wgdG8gYSBLcmFpdCBDUFUuCitUaGVyZSBpcyBvbmUgQUNDIHJlZ2lzdGVyIHJlZ2lvbiBwZXIgQ1BVIHdpdGhpbiB0aGUgS1BTUyByZW1hcHBlZCByZWdpb24gYXMKK3dlbGwgYXMgYW4gYWxpYXMgcmVnaXN0ZXIgcmVnaW9uIHRoYXQgcmVtYXBzIGFjY2Vzc2VzIHRvIHRoZSBBQ0MgYXNzb2NpYXRlZAord2l0aCB0aGUgQ1BVIGFjY2Vzc2luZyB0aGUgcmVnaW9uLgorCitQUk9QRVJUSUVTCisKKy0gY29tcGF0aWJsZToKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8c3RyaW5nPgorCURlZmluaXRpb246IHNob3VsZCBiZSBvbmUgb2Y6CisJCQkicWNvbSxrcHNzLWFjYy12MSIKKwkJCSJxY29tLGtwc3MtYWNjLXYyIgorCistIHJlZzoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IHRoZSBmaXJzdCBlbGVtZW50IHNwZWNpZmllcyB0aGUgYmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mCisJCSAgICB0aGUgcmVnaXN0ZXIgcmVnaW9uLiBBbiBvcHRpb25hbCBzZWNvbmQgZWxlbWVudCBzcGVjaWZpZXMKKwkJICAgIHRoZSBiYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIGFsaWFzIHJlZ2lzdGVyIHJlZ2lvbi4KKworRXhhbXBsZToKKworCWNsb2NrLWNvbnRyb2xsZXJAMjA4ODAwMCB7CisJCWNvbXBhdGlibGUgPSAicWNvbSxrcHNzLWFjYy12MiI7CisJCXJlZyA9IDwweDAyMDg4MDAwIDB4MTAwMD4sCisJCSAgICAgIDwweDAyMDA4MDAwIDB4MTAwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbXNtL3Fjb20sc2F3Mi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21zbS9xY29tLHNhdzIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlNGFmYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21zbS9xY29tLHNhdzIudHh0CkBAIC0wLDAgKzEsNTcgQEAKK1NQTSBBVlMgV3JhcHBlciAyIChTQVcyKQorCitUaGUgU0FXMiBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBTdWJzeXN0ZW0gUG93ZXIgTWFuYWdlciAoU1BNKSBhbmQgdGhlCitBZGFwdGl2ZSBWb2x0YWdlIFNjYWxpbmcgKEFWUykgaGFyZHdhcmUuIFRoZSBTUE0gaXMgYSBwcm9ncmFtbWFibGUKK3Bvd2VyLWNvbnRyb2xsZXIgdGhhdCB0cmFuc2l0aW9ucyBhIHBpZWNlIG9mIGhhcmR3YXJlIChsaWtlIGEgcHJvY2Vzc29yIG9yCitzdWJzeXN0ZW0pIGludG8gYW5kIG91dCBvZiBsb3cgcG93ZXIgbW9kZXMgdmlhIGEgZGlyZWN0IGNvbm5lY3Rpb24gdG8KK3RoZSBQTUlDLiBJdCBjYW4gYWxzbyBiZSB3aXJlZCB1cCB0byBpbnRlcmFjdCB3aXRoIG90aGVyIHByb2Nlc3NvcnMgaW4gdGhlCitzeXN0ZW0sIG5vdGlmeWluZyB0aGVtIHdoZW4gYSBsb3cgcG93ZXIgc3RhdGUgaXMgZW50ZXJlZCBvciBleGl0ZWQuCisKK011bHRpcGxlIHJldmlzaW9ucyBvZiB0aGUgU0FXIGhhcmR3YXJlIGFyZSBzdXBwb3J0ZWQgdXNpbmcgdGhlc2UgRGV2aWNlIE5vZGVzLgorU0FXMiByZXZpc2lvbnMgZGlmZmVyIGluIHRoZSByZWdpc3RlciBvZmZzZXQgYW5kIGNvbmZpZ3VyYXRpb24gZGF0YS4gQWxzbywgdGhlCitzYW1lIHJldmlzaW9uIG9mIHRoZSBTQVcgaW4gZGlmZmVyZW50IFNvQ3MgbWF5IGhhdmUgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24KK2RhdGEgZHVlIHRoZSB0aGUgZGlmZmVyZW5jZXMgaW4gaGFyZHdhcmUgY2FwYWJpbGl0aWVzLiBIZW5jZSB0aGUgU29DIG5hbWUsIHRoZQordmVyc2lvbiBvZiB0aGUgU0FXIGhhcmR3YXJlIGluIHRoYXQgU29DIGFuZCB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBjcHUgKGJpZworb3IgTGl0dGxlKSBvciBjYWNoZSwgbWF5IGJlIG5lZWRlZCB0byB1bmlxdWVseSBpZGVudGlmeSB0aGUgU0FXIHJlZ2lzdGVyCitjb25maWd1cmF0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBkYXRhLiBUaGUgY29tcGF0aWJsZSBzdHJpbmcgaXMgdXNlZCB0bworaW5kaWNhdGUgdGhpcyBwYXJhbWV0ZXIuCisKK1BST1BFUlRJRVMKKworLSBjb21wYXRpYmxlOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxzdHJpbmc+CisJRGVmaW5pdGlvbjogTXVzdCBoYXZlCisJCQkicWNvbSxzYXcyIgorCQkgICAgQSBtb3JlIHNwZWNpZmljIHZhbHVlIGNvdWxkIGJlIG9uZSBvZjoKKwkJCSJxY29tLGFwcTgwNjQtc2F3Mi12MS4xLWNwdSIKKwkJCSJxY29tLG1zbTg5NzQtc2F3Mi12Mi4xLWNwdSIKKwkJCSJxY29tLGFwcTgwODQtc2F3Mi12Mi4xLWNwdSIKKworLSByZWc6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOiB0aGUgZmlyc3QgZWxlbWVudCBzcGVjaWZpZXMgdGhlIGJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZgorCQkgICAgdGhlIHJlZ2lzdGVyIHJlZ2lvbi4gQW4gb3B0aW9uYWwgc2Vjb25kIGVsZW1lbnQgc3BlY2lmaWVzCisJCSAgICB0aGUgYmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSBhbGlhcyByZWdpc3RlciByZWdpb24uCisKKy0gcmVndWxhdG9yOgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IGJvb2xlYW4KKwlEZWZpbml0aW9uOiBJbmRpY2F0ZXMgdGhhdCB0aGlzIFNQTSBkZXZpY2UgYWN0cyBhcyBhIHJlZ3VsYXRvciBkZXZpY2UKKwkJCWRldmljZSBmb3IgdGhlIGNvcmUgKENQVSBvciBDYWNoZSkgdGhlIFNQTSBpcyBhdHRhY2hlZAorCQkJdG8uCisKK0V4YW1wbGUgMToKKworCXBvd2VyLWNvbnRyb2xsZXJAMjA5OTAwMCB7CisJCWNvbXBhdGlibGUgPSAicWNvbSxzYXcyIjsKKwkJcmVnID0gPDB4MDIwOTkwMDAgMHgxMDAwPiwgPDB4MDIwMDkwMDAgMHgxMDAwPjsKKwkJcmVndWxhdG9yOworCX07CisKK0V4YW1wbGUgMjoKKwlzYXcwOiBwb3dlci1jb250cm9sbGVyQGY5MDg5MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJxY29tLGFwcTgwODQtc2F3Mi12Mi4xLWNwdSIsICJxY29tLHNhdzIiOworCQlyZWcgPSA8MHhmOTA4OTAwMCAweDEwMDA+LCA8MHhmOTAwOTAwMCAweDEwMDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21zbS9zc2JpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbXNtL3NzYmkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0ZmQ1Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21zbS9zc2JpLnR4dApAQCAtMCwwICsxLDE4IEBACisqIFF1YWxjb21tIFNTQkkKKworU29tZSBRdWFsY29tbSBNU00gZGV2aWNlcyBjb250YWluIGEgcG9pbnQtdG8tcG9pbnQgc2VyaWFsIGJ1cyB1c2VkIHRvCitjb21tdW5pY2F0ZSB3aXRoIGEgbGltaXRlZCByYW5nZSBvZiBkZXZpY2VzIChtb3N0bHkgcG93ZXIgbWFuYWdlbWVudAorY2hpcHMpLgorCitUaGVzZSByZXF1aXJlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiAicWNvbSxzc2JpIgorCistIHFjb20sY29udHJvbGxlci10eXBlCisgIGluZGljYXRlcyB0aGUgU1NCSSBidXMgdmFyaWFudCB0aGUgY29udHJvbGxlciBzaG91bGQgdXNlIHRvIHRhbGsKKyAgd2l0aCB0aGUgc2xhdmUgZGV2aWNlLiAgVGhpcyBzaG91bGQgYmUgb25lIG9mICJzc2JpIiwgInNzYmkyIiwgb3IKKyAgInBtaWMtYXJiaXRlciIuICBUaGUgdHlwZSBjaG9zZW4gaXMgZGV0ZXJtaW5lZCBieSB0aGUgYXR0YWNoZWQKKyAgc2xhdmUuCisKK1RoZSBzbGF2ZSBkZXZpY2Ugc2hvdWxkIGJlIHRoZSBzaW5nbGUgY2hpbGQgbm9kZSBvZiB0aGUgc3NiaSBkZXZpY2UKK3dpdGggYSBjb21wYXRpYmxlIGZpZWxkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tc20vdGltZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tc20vdGltZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMTBjMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL21zbS90aW1lci50eHQKQEAgLTAsMCArMSw0NyBAQAorKiBNU00gVGltZXIKKworUHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogU2hvdWxkIGF0IGxlYXN0IGNvbnRhaW4gInFjb20sbXNtLXRpbWVyIi4gTW9yZSBzcGVjaWZpYworICAgICAgICAgICAgICAgcHJvcGVydGllcyBzcGVjaWZ5IHdoaWNoIHN1YnN5c3RlbSB0aGUgdGltZXJzIGFyZSBwYWlyZWQgd2l0aC4KKworICAgICAgICAgICAgICAgInFjb20sa3Bzcy10aW1lciIgLSBrcmFpdCBzdWJzeXN0ZW0KKyAgICAgICAgICAgICAgICJxY29tLHNjc3MtdGltZXIiIC0gc2NvcnBpb24gc3Vic3lzdGVtCisKKy0gaW50ZXJydXB0cyA6IEludGVycnVwdHMgZm9yIHRoZSBkZWJ1ZyB0aW1lciwgdGhlIGZpcnN0IGdlbmVyYWwgcHVycG9zZQorICAgICAgICAgICAgICAgdGltZXIsIGFuZCBvcHRpb25hbGx5IGEgc2Vjb25kIGdlbmVyYWwgcHVycG9zZSB0aW1lciwgYW5kCisgICAgICAgICAgICAgICBvcHRpb25hbGx5IGFzIHdlbGwsIDIgd2F0Y2hkb2cgaW50ZXJydXB0cywgaW4gdGhhdCBvcmRlci4KKworLSByZWcgOiBTcGVjaWZpZXMgdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgdGltZXIgcmVnaXN0ZXJzLgorCistIGNsb2NrczogUmVmZXJlbmNlIHRvIHRoZSBwYXJlbnQgY2xvY2tzLCBvbmUgcGVyIG91dHB1dCBjbG9jay4gVGhlIHBhcmVudHMKKyAgICAgICAgICBtdXN0IGFwcGVhciBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgY2xvY2sgbmFtZXMuCisKKy0gY2xvY2stbmFtZXM6IFRoZSBuYW1lIG9mIHRoZSBjbG9ja3MgYXMgZnJlZS1mb3JtIHN0cmluZ3MuIFRoZXkgc2hvdWxkIGJlIGluCisgICAgICAgICAgICAgICB0aGUgc2FtZSBvcmRlciBhcyB0aGUgY2xvY2tzLgorCistIGNsb2NrLWZyZXF1ZW5jeSA6IFRoZSBmcmVxdWVuY3kgb2YgdGhlIGRlYnVnIHRpbWVyIGFuZCB0aGUgZ2VuZXJhbCBwdXJwb3NlCisgICAgICAgICAgICAgICAgICAgIHRpbWVyKHMpIGluIEh6IGluIHRoYXQgb3JkZXIuCisKK09wdGlvbmFsOgorCistIGNwdS1vZmZzZXQgOiBwZXItY3B1IG9mZnNldCB1c2VkIHdoZW4gdGhlIHRpbWVyIGlzIGFjY2Vzc2VkIHdpdGhvdXQgdGhlCisgICAgICAgICAgICAgICBDUFUgcmVtYXBwaW5nIGZhY2lsaXRpZXMuIFRoZSBvZmZzZXQgaXMKKyAgICAgICAgICAgICAgIGNwdS1vZmZzZXQgKyAoMHgxMDAwMCAqIGNwdS1ucikuCisKK0V4YW1wbGU6CisKKyAgICAgICB0aW1lckAyMDBhMDAwIHsKKyAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAicWNvbSxzY3NzLXRpbWVyIiwgInFjb20sbXNtLXRpbWVyIjsKKyAgICAgICAgICAgICAgIGludGVycnVwdHMgPSA8MSAxIDB4MzAxPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8MSAyIDB4MzAxPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8MSAzIDB4MzAxPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8MSA0IDB4MzAxPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8MSA1IDB4MzAxPjsKKyAgICAgICAgICAgICAgIHJlZyA9IDwweDAyMDBhMDAwIDB4MTAwPjsKKyAgICAgICAgICAgICAgIGNsb2NrLWZyZXF1ZW5jeSA9IDwxOTIwMDAwMD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8MzI3Njg+OworICAgICAgICAgICAgICAgY2xvY2tzID0gPCZzbGVlcF9jbGs+OworICAgICAgICAgICAgICAgY2xvY2stbmFtZXMgPSAic2xlZXAiOworICAgICAgICAgICAgICAgY3B1LW9mZnNldCA9IDwweDQwMDAwPjsKKyAgICAgICB9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9tdmVidS1jcHUtY29uZmlnLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbXZlYnUtY3B1LWNvbmZpZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmNkY2Q3MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbXZlYnUtY3B1LWNvbmZpZy50eHQKQEAgLTAsMCArMSwyMCBAQAorTVZFQlUgQ1BVIENvbmZpZyByZWdpc3RlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01WRUJVIChNYXJ2ZWxsIFNPQ3M6IEFybWFkYSAzNzAvWFApCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogb25lIG9mOgorCS0gIm1hcnZlbGwsYXJtYWRhLTM3MC1jcHUtY29uZmlnIgorCS0gIm1hcnZlbGwsYXJtYWRhLXhwLWNwdS1jb25maWciCisKKy0gcmVnOiBTaG91bGQgY29udGFpbiBDUFUgY29uZmlnIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoLCBpbgorICB0aGVpciBwZXItQ1BVIHZhcmlhbnQKKworRXhhbXBsZToKKworCWNwdS1jb25maWdAMjEwMDAgeworCQljb21wYXRpYmxlID0gIm1hcnZlbGwsYXJtYWRhLXhwLWNwdS1jb25maWciOworCQlyZWcgPSA8MHgyMTAwMCAweDg+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL212ZWJ1LXN5c3RlbS1jb250cm9sbGVyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbXZlYnUtc3lzdGVtLWNvbnRyb2xsZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNGFiMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL212ZWJ1LXN5c3RlbS1jb250cm9sbGVyLnR4dApAQCAtMCwwICsxLDE4IEBACitNVkVCVSBTeXN0ZW0gQ29udHJvbGxlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK01WRUJVIChNYXJ2ZWxsIFNPQ3M6IEFybWFkYSAzNzAvMzc1L1hQLCBEb3ZlLCBtdjc4eHgwLCBLaXJrd29vZCwgT3Jpb241eCkKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBvbmUgb2Y6CisJLSAibWFydmVsbCxvcmlvbi1zeXN0ZW0tY29udHJvbGxlciIKKwktICJtYXJ2ZWxsLGFybWFkYS0zNzAteHAtc3lzdGVtLWNvbnRyb2xsZXIiCisJLSAibWFydmVsbCxhcm1hZGEtMzc1LXN5c3RlbS1jb250cm9sbGVyIgorLSByZWc6IFNob3VsZCBjb250YWluIHN5c3RlbSBjb250cm9sbGVyIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoLgorCitFeGFtcGxlOgorCisJc3lzdGVtLWNvbnRyb2xsZXJAZDAwMTgyMDAgeworCQljb21wYXRpYmxlID0gIm1hcnZlbGwsYXJtYWRhLTM3MC14cC1zeXN0ZW0tY29udHJvbGxlciI7CisJCXJlZyA9IDwweGQwMDE4MjAwIDB4NTAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9uc3BpcmUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9uc3BpcmUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkMDg1MTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL25zcGlyZS50eHQKQEAgLTAsMCArMSwxNCBAQAorVEktTlNQSVJFIGNhbGN1bGF0b3JzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IENvbXBhdGlibGUgcHJvcGVydHkgdmFsdWUgc2hvdWxkIGNvbnRhaW4gInRpLG5zcGlyZSIuCisJQ1ggbW9kZWxzIHNob3VsZCBoYXZlICJ0aSxuc3BpcmUtY3giCisJVG91Y2hwYWQgbW9kZWxzIHNob3VsZCBoYXZlICJ0aSxuc3BpcmUtdHAiCisJQ2xpY2twYWQgbW9kZWxzIHNob3VsZCBoYXZlICJ0aSxuc3BpcmUtY2xwIgorCitFeGFtcGxlOgorCisvIHsKKwltb2RlbCA9ICJUSS1OU1BJUkUgQ1giOworCWNvbXBhdGlibGUgPSAidGksbnNwaXJlLWN4IjsKKwkuLi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vb2xpbWV4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vb2xpbWV4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDdmYjVjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9vbGltZXgudHh0CkBAIC0wLDAgKzEsNiBAQAorT2xpbWV4IGkuTVggUGxhdGZvcm1zIERldmljZSBUcmVlIEJpbmRpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaS5NWDIzIE9saW51eGlubyBMb3cgQ29zdCBCb2FyZAorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgLSBjb21wYXRpYmxlID0gIm9saW1leCxpbXgyMy1vbGludXhpbm8iLCAiZnNsLGlteDIzIjsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vb21hcC9jb3VudGVyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vb21hcC9jb3VudGVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmQ4YWEwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9vbWFwL2NvdW50ZXIudHh0CkBAIC0wLDAgKzEsMTUgQEAKK09NQVAgQ291bnRlci0zMksgYmluZGluZ3MKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZToJTXVzdCBiZSAidGksb21hcC1jb3VudGVyMzJrIiBmb3IgT01BUCBjb250cm9sbGVycworLSByZWc6CQlDb250YWlucyB0aW1lciByZWdpc3RlciBhZGRyZXNzIHJhbmdlIChiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCkKKy0gdGksaHdtb2RzOglOYW1lIG9mIHRoZSBod21vZCBhc3NvY2lhdGVkIHRvIHRoZSBjb3VudGVyLCB3aGljaCBpcyB0eXBpY2FsbHkKKwkJImNvdW50ZXJfMzJrIgorCitFeGFtcGxlOgorCitjb3VudGVyMzJrOiBjb3VudGVyQDRhMzA0MDAwIHsKKwljb21wYXRpYmxlID0gInRpLG9tYXAtY291bnRlcjMyayI7CisJcmVnID0gPDB4NGEzMDQwMDAgMHgyMD47CisJdGksaHdtb2RzID0gImNvdW50ZXJfMzJrIjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL29tYXAvY3Jvc3NiYXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9vbWFwL2Nyb3NzYmFyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWIyOGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9vbWFwL2Nyb3NzYmFyLnR4dApAQCAtMCwwICsxLDU1IEBACitTb21lIHNvY3MgaGF2ZSBhIGxhcmdlIG51bWJlciBvZiBpbnRlcnJ1cHRzIHJlcXVlc3RzIHRvIHNlcnZpY2UKK3RoZSBuZWVkcyBvZiBpdHMgbWFueSBwZXJpcGhlcmFscyBhbmQgc3Vic3lzdGVtcy4gQWxsIG9mIHRoZQoraW50ZXJydXB0IGxpbmVzIGZyb20gdGhlIHN1YnN5c3RlbXMgYXJlIG5vdCBuZWVkZWQgYXQgdGhlIHNhbWUKK3RpbWUsIHNvIHRoZXkgaGF2ZSB0byBiZSBtdXhlZCB0byB0aGUgaXJxLWNvbnRyb2xsZXIgYXBwcm9wcmlhdGVseS4KK0luIHN1Y2ggcGxhY2VzIGEgaW50ZXJydXB0IGNvbnRyb2xsZXJzIGFyZSBwcmVjZWRlZCBieSBhbiBDUk9TU0JBUgordGhhdCBwcm92aWRlcyBmbGV4aWJpbGl0eSBpbiBtdXhpbmcgdGhlIGRldmljZSByZXF1ZXN0cyB0byB0aGUgY29udHJvbGxlcgoraW5wdXRzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJ0aSxpcnEtY3Jvc3NiYXIiCistIHJlZzogQmFzZSBhZGRyZXNzIGFuZCB0aGUgc2l6ZSBvZiB0aGUgY3Jvc3NiYXIgcmVnaXN0ZXJzLgorLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogaW5kaWNhdGVzIHRoYXQgdGhpcyBibG9jayBpcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlci4KKy0gaW50ZXJydXB0LXBhcmVudDogdGhlIGludGVycnVwdCBjb250cm9sbGVyIHRoaXMgYmxvY2sgaXMgY29ubmVjdGVkIHRvLgorLSB0aSxtYXgtaXJxczogVG90YWwgbnVtYmVyIG9mIGlycXMgYXZhaWxhYmxlIGF0IHRoZSBwYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIuCistIHRpLG1heC1jcm9zc2Jhci1zb3VyY2VzOiBNYXhpbXVtIG51bWJlciBvZiBjcm9zc2JhciBzb3VyY2VzIHRoYXQgY2FuIGJlIHJvdXRlZC4KKy0gdGkscmVnLXNpemU6IFNpemUgb2YgYSBpbmRpdmlkdWFsIHJlZ2lzdGVyIGluIGJ5dGVzLiBFdmVyeSBpbmRpdmlkdWFsCisJICAgIHJlZ2lzdGVyIGlzIGFzc3VtZWQgdG8gYmUgb2Ygc2FtZSBzaXplLiBWYWxpZCBzaXplcyBhcmUgMSwgMiwgNC4KKy0gdGksaXJxcy1yZXNlcnZlZDogTGlzdCBvZiB0aGUgcmVzZXJ2ZWQgaXJxIGxpbmVzIHRoYXQgYXJlIG5vdCBtdXhlZCB1c2luZworCQkgY3Jvc3NiYXIuIFRoZXNlIGludGVycnVwdCBsaW5lcyBhcmUgcmVzZXJ2ZWQgaW4gdGhlIHNvYywKKwkJIHNvIGNyb3NzYmFyIGJhciBkcml2ZXIgc2hvdWxkIG5vdCBjb25zaWRlciB0aGVtIGFzIGZyZWUKKwkJIGxpbmVzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSB0aSxpcnFzLXNraXA6IFRoaXMgaXMgc2ltaWxhciB0byAidGksaXJxcy1yZXNlcnZlZCIsIGJ1dCB0aGVzZSBhcmUgZm9yCisgIFNPQy1zcGVjaWZpYyBoYXJkLXdpcmluZyBvZiB0aG9zZSBpcnFzIHdoaWNoIHVuZXhwZWN0ZWRseSBieXBhc3NlcyB0aGUKKyAgY3Jvc3NiYXIuIFRoZXNlIGlycXMgaGF2ZSBhIGNyb3NzYmFyIHJlZ2lzdGVyLCBidXQgc3RpbGwgY2Fubm90IGJlIHVzZWQuCisKKy0gdGksaXJxcy1zYWZlLW1hcDogaW50ZWdlciB3aGljaCBtYXBzIHRvIGEgc2FmZSBjb25maWd1cmF0aW9uIHRvIHVzZQorICB3aGVuIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciBpcnEgaXMgdW51c2VkICh3aGVuIG5vdCBwcm92aWRlZCwgZGVmYXVsdCBpcyAwKQorCitFeGFtcGxlczoKKwkJY3Jvc3NiYXJfbXB1OiBjcm9zc2JhckA0YTAwMmE0OCB7CisJCQljb21wYXRpYmxlID0gInRpLGlycS1jcm9zc2JhciI7CisJCQlyZWcgPSA8MHg0YTAwMmE0OCAweDEzMD47CisJCQl0aSxtYXgtaXJxcyA9IDwxNjA+OworCQkJdGksbWF4LWNyb3NzYmFyLXNvdXJjZXMgPSA8NDAwPjsKKwkJCXRpLHJlZy1zaXplID0gPDI+OworCQkJdGksaXJxcy1yZXNlcnZlZCA9IDwwIDEgMiAzIDUgNiAxMzEgMTMyPjsKKwkJCXRpLGlycXMtc2tpcCA9IDwxMCAxMzMgMTM5IDE0MD47CisJCX07CisKK0NvbnN1bWVyOgorPT09PT09PT0KK1NlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaW50ZXJydXB0cy50eHQgYW5kCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2dpYy50eHQgZm9yIGZ1cnRoZXIgZGV0YWlscy4KKworQW4gaW50ZXJydXB0IGNvbnN1bWVyIG9uIGFuIFNvQyB1c2luZyBjcm9zc2JhciB3aWxsIHVzZToKKwlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgcmVxdWVzdF9udW1iZXIgaW50ZXJydXB0X2xldmVsPgorCitFeGFtcGxlOgorCWRldmljZV94QDB4NGEwMjMwMDAgeworCQkvKiBDcm9zc2JhciA4IHVzZWQgKi8KKwkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDggSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCS4uLgorCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL29tYXAvY3RybC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL29tYXAvY3RybC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E0ZTU5MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vb21hcC9jdHJsLnR4dApAQCAtMCwwICsxLDc5IEBACitPTUFQIENvbnRyb2wgTW9kdWxlIGJpbmRpbmdzCisKK0NvbnRyb2wgTW9kdWxlIGNvbnRhaW5zIG1pc2NlbGxhbmVvdXMgZmVhdHVyZXMgdW5kZXIgaXQgYmFzZWQgb24gU29DIHR5cGUuCitQaW5jb250cm9sIGlzIG9uZSBjb21tb24gZmVhdHVyZSwgYW5kIGl0IGhhcyBhIHNwZWNpYWxpemVkIHN1cHBvcnQKK2Rlc2NyaWJlZCBpbiBbMV0uIFR5cGljYWxseSBzb21lIGNsb2NrIG5vZGVzIGFyZSBhbHNvIHVuZGVyIGNvbnRyb2wgbW9kdWxlLgorU3lzY29uIGlzIHVzZWQgdG8gc2hhcmUgcmVnaXN0ZXIgbGV2ZWwgYWNjZXNzIHRvIGRyaXZlcnMgZXh0ZXJuYWwgdG8KK2NvbnRyb2wgbW9kdWxlIGRyaXZlciBpdHNlbGYuCisKK1NlZSBbMl0gZm9yIGRvY3VtZW50YXRpb24gYWJvdXQgY2xvY2svY2xvY2tkb21haW4gbm9kZXMuCisKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9waW5jdHJsLXNpbmdsZS50eHQKK1syXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGkvKgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOglNdXN0IGJlIG9uZSBvZjoKKwkJInRpLGFtMy1zY20iCisJCSJ0aSxhbTQtc2NtIgorCQkidGksZG04MTQtc2NybSIKKwkJInRpLGRtODE2LXNjcm0iCisJCSJ0aSxvbWFwMi1zY20iCisJCSJ0aSxvbWFwMy1zY20iCisJCSJ0aSxvbWFwNC1zY20tY29yZSIKKwkJInRpLG9tYXA0LXNjbS1wYWRjb25mLWNvcmUiCisJCSJ0aSxvbWFwNS1zY20tY29yZSIKKwkJInRpLG9tYXA1LXNjbS1wYWRjb25mLWNvcmUiCisJCSJ0aSxkcmE3LXNjbS1jb3JlIgorLSByZWc6CQlDb250YWlucyBDb250cm9sIE1vZHVsZSByZWdpc3RlciBhZGRyZXNzIHJhbmdlCisJCShiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCkKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gY2xvY2tzOgljbG9ja3MgZm9yIHRoaXMgbW9kdWxlCistIGNsb2NrZG9tYWluczoJY2xvY2tkb21haW5zIGZvciB0aGlzIG1vZHVsZQorCitFeGFtcGxlczoKKworc2NtOiBzY21AMjAwMCB7CisJY29tcGF0aWJsZSA9ICJ0aSxvbWFwMy1zY20iLCAic2ltcGxlLWJ1cyI7CisJcmVnID0gPDB4MjAwMCAweDIwMDA+OworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDE+OworCXJhbmdlcyA9IDwwIDB4MjAwMCAweDIwMDA+OworCisJb21hcDNfcG14X2NvcmU6IHBpbm11eEAzMCB7CisJCWNvbXBhdGlibGUgPSAidGksb21hcDMtcGFkY29uZiIsCisJCQkgICAgICJwaW5jdHJsLXNpbmdsZSI7CisJCXJlZyA9IDwweDMwIDB4MjMwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJcGluY3RybC1zaW5nbGUscmVnaXN0ZXItd2lkdGggPSA8MTY+OworCQlwaW5jdHJsLXNpbmdsZSxmdW5jdGlvbi1tYXNrID0gPDB4ZmYxZj47CisJfTsKKworCXNjbV9jb25mOiBzY21fY29uZkAyNzAgeworCQljb21wYXRpYmxlID0gInN5c2NvbiI7CisJCXJlZyA9IDwweDI3MCAweDMzMD47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKworCQlzY21fY2xvY2tzOiBjbG9ja3MgeworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJfTsKKwl9OworCisJc2NtX2Nsb2NrZG9tYWluczogY2xvY2tkb21haW5zIHsKKwl9OworfQorCismc2NtX2Nsb2NrcyB7CisJbWNic3A1X211eF9mY2s6IG1jYnNwNV9tdXhfZmNrIHsKKwkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQljb21wYXRpYmxlID0gInRpLGNvbXBvc2l0ZS1tdXgtY2xvY2siOworCQljbG9ja3MgPSA8JmNvcmVfOTZtX2Zjaz4sIDwmbWNic3BfY2xrcz47CisJCXRpLGJpdC1zaGlmdCA9IDw0PjsKKwkJcmVnID0gPDB4MDJkOD47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL29tYXAvZG1tLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vb21hcC9kbW0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiZDZkMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL29tYXAvZG1tLnR4dApAQCAtMCwwICsxLDIyIEBACitPTUFQIER5bmFtaWMgTWVtb3J5IE1hbmFnZXIgKERNTSkgYmluZGluZ3MKKworVGhlIGR5bmFtaWMgbWVtb3J5IG1hbmFnZXIgKERNTSkgaXMgYSBtb2R1bGUgbG9jYXRlZCBpbW1lZGlhdGVseSBpbiBmcm9udCBvZiB0aGUKK1NEUkFNIGNvbnRyb2xsZXJzIChjYWxsZWQgRU1JRnMgb24gT01BUCkuIERNTSBtYW5hZ2VzIHZhcmlvdXMgYXNwZWN0cyBvZiBtZW1vcnkKK2FjY2Vzc2VzIHN1Y2ggYXMgcHJpb3JpdHkgZ2VuZXJhdGlvbiBhbW9uZ3N0IGluaXRpYXRvcnMsIGNvbmZpZ3VyYXRpb24gb2YgU0RSQU0KK2ludGVybGVhdmluZywgb3B0aW1pemluZyB0cmFuc2ZlciBvZiAyRCBibG9jayBvYmplY3RzLCBhbmQgcHJvdmlkZSBNTVUtbGlrZSBwYWdlCit0cmFuc2xhdGlvbiBmb3IgaW5pdGlhdG9ycyB3aGljaCBuZWVkIGNvbnRpZ3VvdXMgZG1hIGJ1cyBhZGRyZXNzZXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CVNob3VsZCBjb250YWluICJ0aSxvbWFwNC1kbW0iIGZvciBPTUFQNCBmYW1pbHkKKwkJU2hvdWxkIGNvbnRhaW4gInRpLG9tYXA1LWRtbSIgZm9yIE9NQVA1IGFuZCBEUkE3eCBmYW1pbHkKKy0gcmVnOgkJQ29udGFpbnMgRE1NIHJlZ2lzdGVyIGFkZHJlc3MgcmFuZ2UgKGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoKQorLSBpbnRlcnJ1cHRzOglTaG91bGQgY29udGFpbiBhbiBpbnRlcnJ1cHQtc3BlY2lmaWVyIGZvciBETU1fSVJRLgorLSB0aSxod21vZHM6CU5hbWUgb2YgdGhlIGh3bW9kIGFzc29jaWF0ZWQgdG8gRE1NLCB3aGljaCBpcyB0eXBpY2FsbHkgImRtbSIKKworRXhhbXBsZToKKworZG1tQDRlMDAwMDAwIHsKKwljb21wYXRpYmxlID0gInRpLG9tYXA0LWRtbSI7CisJcmVnID0gPDB4NGUwMDAwMDAgMHg4MDA+OworCXRpLGh3bW9kcyA9ICJkbW0iOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vb21hcC9kc3AudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9vbWFwL2RzcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM4MzBhMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vb21hcC9kc3AudHh0CkBAIC0wLDAgKzEsMTQgQEAKKyogVEkgLSBEU1AgKERpZ2l0YWwgU2lnbmFsIFByb2Nlc3NvcikKKworVEkgRFNQIGluY2x1ZGVkIGluIE9NQVAgU29DCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgInRpLG9tYXAzLWM2NCIgZm9yIE9NQVAzICYgNAorLSB0aSxod21vZHM6ICJkc3AiCisKK0V4YW1wbGVzOgorCitkc3AgeworICAgIGNvbXBhdGlibGUgPSAidGksb21hcDMtYzY0IjsKKyAgICB0aSxod21vZHMgPSAiZHNwIjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL29tYXAvaXZhLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vb21hcC9pdmEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkNjI5NTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL29tYXAvaXZhLnR4dApAQCAtMCwwICsxLDE5IEBACisqIFRJIC0gSVZBIChJbWFnaW5nIGFuZCBWaWRlbyBBY2NlbGVyYXRvcikgc3Vic3lzdGVtCisKK1RoZSBJVkEgY29udGFpbiB2YXJpb3VzIGF1ZGlvLCB2aWRlbyBvciBpbWFnaW5nIEhXIGFjY2VsZXJhdG9yCitkZXBlbmRpbmcgb2YgdGhlIHZlcnNpb24uCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmU6CisgIC0gInRpLGl2YWhkIiBmb3IgT01BUDQKKyAgLSAidGksaXZhMi4yIiBmb3IgT01BUDMKKyAgLSAidGksaXZhMi4xIiBmb3IgT01BUDI0MzAKKyAgLSAidGksaXZhMSIgZm9yIE9NQVAyNDIwCistIHRpLGh3bW9kczogIml2YSIKKworRXhhbXBsZXM6CisKK2l2YSB7CisgICAgY29tcGF0aWJsZSA9ICJ0aSxpdmFoZCIsICJ0aSxpdmEiOworICAgIHRpLGh3bW9kcyA9ICJpdmEiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vb21hcC9sMy1ub2MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9vbWFwL2wzLW5vYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYxNDQ4ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vb21hcC9sMy1ub2MudHh0CkBAIC0wLDAgKzEsMjMgQEAKKyogVEkgLSBMMyBOZXR3b3JrIE9uIENoaXAgKE5vQykKKworVGhpcyB2ZXJzaW9uIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBnZW5lcmljIE5vQyBJUAorcHJvdmlkZWQgYnkgQXJ0ZXJpcy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAidGksb21hcDMtbDMtc214IiBmb3IgT01BUDMgZmFtaWx5CisgICAgICAgICAgICAgICBTaG91bGQgYmUgInRpLG9tYXA0LWwzLW5vYyIgZm9yIE9NQVA0IGZhbWlseQorICAgICAgICAgICAgICAgU2hvdWxkIGJlICJ0aSxvbWFwNS1sMy1ub2MiIGZvciBPTUFQNSBmYW1pbHkKKwkgICAgICAgU2hvdWxkIGJlICJ0aSxkcmE3LWwzLW5vYyIgZm9yIERSQTcgZmFtaWx5CisgICAgICAgICAgICAgICBTaG91bGQgYmUgInRpLGFtNDM3Mi1sMy1ub2MiIGZvciBBTTQzIGZhbWlseQorLSByZWc6CUNvbnRhaW5zIEwzIHJlZ2lzdGVyIGFkZHJlc3MgcmFuZ2UgZm9yIGVhY2ggbm9jIGRvbWFpbi4KKy0gdGksaHdtb2RzOiAibDNfbWFpbl8xIiwgLi4uIE9uZSBod21vZCBmb3IgZWFjaCBub2MgZG9tYWluLgorCitFeGFtcGxlczoKKworb2NwIHsKKwljb21wYXRpYmxlID0gInRpLG9tYXA0LWwzLW5vYyIsICJzaW1wbGUtYnVzIjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwxPjsKKwlyYW5nZXM7CisJdGksaHdtb2RzID0gImwzX21haW5fMSIsICJsM19tYWluXzIiLCAibDNfbWFpbl8zIjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL29tYXAvbDQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9vbWFwL2w0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGY4YTE2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9vbWFwL2w0LnR4dApAQCAtMCwwICsxLDI2IEBACitMNCBpbnRlcmNvbm5lY3QgYmluZGluZ3MKKworVGhlc2UgYmluZGluZ3MgZGVzY3JpYmUgdGhlIE9NQVAgU29DcyBMNCBpbnRlcmNvbm5lY3QgYnVzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJ0aSxvbWFwMi1sNCIgZm9yIE9NQVAyIGZhbWlseSBsNCBjb3JlIGJ1cworCSAgICAgICBTaG91bGQgYmUgInRpLG9tYXAyLWw0LXdrdXAiIGZvciBPTUFQMiBmYW1pbHkgbDQgd2t1cCBidXMKKwkgICAgICAgU2hvdWxkIGJlICJ0aSxvbWFwMy1sNC1jb3JlIiBmb3IgT01BUDMgZmFtaWx5IGw0IGNvcmUgYnVzCisJICAgICAgIFNob3VsZCBiZSAidGksb21hcDQtbDQtY2ZnIiBmb3IgT01BUDQgZmFtaWx5IGw0IGNmZyBidXMKKwkgICAgICAgU2hvdWxkIGJlICJ0aSxvbWFwNC1sNC13a3VwIiBmb3IgT01BUDQgZmFtaWx5IGw0IHdrdXAgYnVzCisJICAgICAgIFNob3VsZCBiZSAidGksb21hcDUtbDQtY2ZnIiBmb3IgT01BUDUgZmFtaWx5IGw0IGNmZyBidXMKKwkgICAgICAgU2hvdWxkIGJlICJ0aSxvbWFwNS1sNC13a3VwIiBmb3IgT01BUDUgZmFtaWx5IGw0IHdrdXAgYnVzCisJICAgICAgIFNob3VsZCBiZSAidGksZHJhNy1sNC1jZmciIGZvciBEUkE3IGZhbWlseSBsNCBjZmcgYnVzCisJICAgICAgIFNob3VsZCBiZSAidGksZHJhNy1sNC13a3VwIiBmb3IgRFJBNyBmYW1pbHkgbDQgd2t1cCBidXMKKwkgICAgICAgU2hvdWxkIGJlICJ0aSxhbTMtbDQtd2t1cCIgZm9yIEFNMzN4eCBmYW1pbHkgbDQgd2t1cCBidXMKKwkgICAgICAgU2hvdWxkIGJlICJ0aSxhbTQtbDQtd2t1cCIgZm9yIEFNNDN4eCBmYW1pbHkgbDQgd2t1cCBidXMKKy0gcmFuZ2VzIDogY29udGFpbnMgdGhlIElPIG1hcCByYW5nZSBmb3IgdGhlIGJ1cworCitFeGFtcGxlczoKKworbDQ6IGw0QDQ4MDAwMDAwIHsKKwljb21wYXRpYmxlICJ0aSxvbWFwMi1sNCIsICJzaW1wbGUtYnVzIjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwxPjsKKwlyYW5nZXMgPSA8MCAweDQ4MDAwMDAwIDB4MTAwMDAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL29tYXAvbXB1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vb21hcC9tcHUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2MzY5NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL29tYXAvbXB1LnR4dApAQCAtMCwwICsxLDM4IEBACisqIFRJIC0gTVBVIChNYWluIFByb2Nlc3NvciBVbml0KSBzdWJzeXN0ZW0KKworVGhlIE1QVSBzdWJzeXN0ZW0gY29udGFpbiBvbmUgb3Igc2V2ZXJhbCBBUk0gY29yZXMKK2RlcGVuZGluZyBvZiB0aGUgdmVyc2lvbi4KK1RoZSBNUFUgY29udGFpbiBDUFVzLCBHSUMsIEwyIGNhY2hlIGFuZCBhIGxvY2FsIFBSQ00uCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgInRpLG9tYXAzLW1wdSIgZm9yIE9NQVAzCisgICAgICAgICAgICAgICBTaG91bGQgYmUgInRpLG9tYXA0LW1wdSIgZm9yIE9NQVA0CisJICAgICAgIFNob3VsZCBiZSAidGksb21hcDUtbXB1IiBmb3IgT01BUDUKKy0gdGksaHdtb2RzOiAibXB1IgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBzcmFtOglQaGFuZGxlIHRvIHRoZSBvY21jcmFtIG5vZGUKKworRXhhbXBsZXM6CisKKy0gRm9yIGFuIE9NQVA1IFNNUCBzeXN0ZW06CisKK21wdSB7CisgICAgY29tcGF0aWJsZSA9ICJ0aSxvbWFwNS1tcHUiOworICAgIHRpLGh3bW9kcyA9ICJtcHUiCit9OworCistIEZvciBhbiBPTUFQNCBTTVAgc3lzdGVtOgorCittcHUgeworICAgIGNvbXBhdGlibGUgPSAidGksb21hcDQtbXB1IjsKKyAgICB0aSxod21vZHMgPSAibXB1IjsKK307CisKKworLSBGb3IgYW4gT01BUDMgbW9ub2NvcmUgc3lzdGVtOgorCittcHUgeworICAgIGNvbXBhdGlibGUgPSAidGksb21hcDMtbXB1IjsKKyAgICB0aSxod21vZHMgPSAibXB1IjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL29tYXAvb21hcC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL29tYXAvb21hcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJhZjMwMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vb21hcC9vbWFwLnR4dApAQCAtMCwwICsxLDE1OCBAQAorKiBUZXhhcyBJbnN0cnVtZW50cyBPTUFQCisKK09NQVAgaXMgY3VycmVudGx5IHVzaW5nIGEgc3RhdGljIGZpbGUgcGVyIFNvQyBmYW1pbHkgdG8gZGVzY3JpYmUgdGhlCitJUHMgcHJlc2VudCBpbiB0aGUgU29DLgorT24gdG9wIG9mIHRoYXQgYW4gb21hcF9kZXZpY2UgaXMgY3JlYXRlZCB0byBleHRlbmQgdGhlIHBsYXRmb3JtX2RldmljZQorY2FwYWJpbGl0aWVzIGFuZCB0byBhbGxvdyBiaW5kaW5nIHdpdGggb25lIG9yIHNldmVyYWwgaHdtb2RzLgorVGhlIGh3bW9kcyB3aWxsIGNvbnRhaW4gYWxsIHRoZSBpbmZvcm1hdGlvbiB0byBidWlsZCB0aGUgZGV2aWNlOgorYWRkcmVzcyByYW5nZSwgaXJxIGxpbmVzLCBkbWEgbGluZXMsIGludGVyY29ubmVjdCwgUFJDTSByZWdpc3RlciwKK2Nsb2NrIGRvbWFpbiwgaW5wdXQgY2xvY2tzLgorRm9yIHRoZSBtb21lbnQganVzdCBwb2ludCB0byB0aGUgZXhpc3RpbmcgaHdtb2QsIHRoZSBuZXh0IHN0ZXAgd2lsbCBiZQordG8gbW92ZSBkYXRhIGZyb20gaHdtb2QgdG8gZGV2aWNlLXRyZWUgcmVwcmVzZW50YXRpb24uCisKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogRXZlcnkgZGV2aWNlcyBwcmVzZW50IGluIE9NQVAgU29DIHNob3VsZCBiZSBpbiB0aGUKKyAgZm9ybTogInRpLFhYWCIKKy0gdGksaHdtb2RzOiBsaXN0IG9mIGh3bW9kIG5hbWVzIChhc2NpaSBzdHJpbmdzKSwgdGhhdCBjb21lcyBmcm9tIHRoZSBPTUFQCisgIEhXIGRvY3VtZW50YXRpb24sIGF0dGFjaGVkIHRvIGEgZGV2aWNlLiBNdXN0IGNvbnRhaW4gYXQgbGVhc3QKKyAgb25lIGh3bW9kLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSB0aSxub19pZGxlX29uX3N1c3BlbmQ6IFdoZW4gcHJlc2VudCwgaXQgcHJldmVudHMgdGhlIFBNIHRvIGlkbGUgdGhlIG1vZHVsZQorICBkdXJpbmcgc3VzcGVuZC4KKy0gdGksbm8tcmVzZXQtb24taW5pdDogV2hlbiBwcmVzZW50LCB0aGUgbW9kdWxlIHNob3VsZCBub3QgYmUgcmVzZXQgYXQgaW5pdAorLSB0aSxuby1pZGxlLW9uLWluaXQ6IFdoZW4gcHJlc2VudCwgdGhlIG1vZHVsZSBzaG91bGQgbm90IGJlIGlkbGVkIGF0IGluaXQKKy0gdGksbm8taWRsZTogV2hlbiBwcmVzZW50LCB0aGUgbW9kdWxlIGlzIG5ldmVyIGFsbG93ZWQgdG8gaWRsZS4KKworRXhhbXBsZToKKworc3BpbmxvY2tAMSB7CisgICAgY29tcGF0aWJsZSA9ICJ0aSxvbWFwNC1zcGlubG9jayI7CisgICAgdGksaHdtb2RzID0gInNwaW5sb2NrIjsKK307CisKK1NvQyBUeXBlIChvcHRpb25hbCk6CisKKy0gR2VuZXJhbCBQdXJwb3NlIGRldmljZXMKKyAgY29tcGF0aWJsZSA9ICJ0aSxncCIKKy0gSGlnaCBTZWN1cml0eSBkZXZpY2VzCisgIGNvbXBhdGlibGUgPSAidGksaHMiCisKK1NvQyBGYW1pbGllczoKKworLSBPTUFQMiBnZW5lcmljIC0gZGVmYXVsdHMgdG8gT01BUDI0MjAKKyAgY29tcGF0aWJsZSA9ICJ0aSxvbWFwMiIKKy0gT01BUDMgZ2VuZXJpYyAtIGRlZmF1bHRzIHRvIE9NQVAzNDMwCisgIGNvbXBhdGlibGUgPSAidGksb21hcDMiCistIE9NQVA0IGdlbmVyaWMgLSBkZWZhdWx0cyB0byBPTUFQNDQzMAorICBjb21wYXRpYmxlID0gInRpLG9tYXA0IgorLSBPTUFQNSBnZW5lcmljIC0gZGVmYXVsdHMgdG8gT01BUDU0MzAKKyAgY29tcGF0aWJsZSA9ICJ0aSxvbWFwNSIKKy0gRFJBNyBnZW5lcmljIC0gZGVmYXVsdHMgdG8gRFJBNzQyCisgIGNvbXBhdGlibGUgPSAidGksZHJhNyIKKy0gQU00M3ggZ2VuZXJpYyAtIGRlZmF1bHRzIHRvIEFNNDM3MgorICBjb21wYXRpYmxlID0gInRpLGFtNDMiCisKK1NvQ3M6CisKKy0gT01BUDI0MjAKKyAgY29tcGF0aWJsZSA9ICJ0aSxvbWFwMjQyMCIsICJ0aSxvbWFwMiIKKy0gT01BUDI0MzAKKyAgY29tcGF0aWJsZSA9ICJ0aSxvbWFwMjQzMCIsICJ0aSxvbWFwMiIKKworLSBPTUFQMzQzMAorICBjb21wYXRpYmxlID0gInRpLG9tYXAzNDMwIiwgInRpLG9tYXAzIgorLSBBTTM1MTcKKyAgY29tcGF0aWJsZSA9ICJ0aSxhbTM1MTciLCAidGksb21hcDMiCistIE9NQVAzNjMwCisgIGNvbXBhdGlibGUgPSAidGksb21hcDM2eHgiLCAidGksb21hcDMiCistIEFNMzN4eAorICBjb21wYXRpYmxlID0gInRpLGFtMzN4eCIsICJ0aSxvbWFwMyIKKworLSBPTUFQNDQzMAorICBjb21wYXRpYmxlID0gInRpLG9tYXA0NDMwIiwgInRpLG9tYXA0IgorLSBPTUFQNDQ2MAorICBjb21wYXRpYmxlID0gInRpLG9tYXA0NDYwIiwgInRpLG9tYXA0IgorCistIE9NQVA1NDMwCisgIGNvbXBhdGlibGUgPSAidGksb21hcDU0MzAiLCAidGksb21hcDUiCistIE9NQVA1NDMyCisgIGNvbXBhdGlibGUgPSAidGksb21hcDU0MzIiLCAidGksb21hcDUiCisKKy0gRFJBNzQyCisgIGNvbXBhdGlibGUgPSAidGksZHJhNzQyIiwgInRpLGRyYTc0IiwgInRpLGRyYTciCisKKy0gRFJBNzIyCisgIGNvbXBhdGlibGUgPSAidGksZHJhNzIyIiwgInRpLGRyYTcyIiwgInRpLGRyYTciCisKKy0gQU01NzI4CisgIGNvbXBhdGlibGUgPSAidGksYW01NzI4IiwgInRpLGRyYTc0MiIsICJ0aSxkcmE3NCIsICJ0aSxkcmE3IgorCistIEFNNTcyNgorICBjb21wYXRpYmxlID0gInRpLGFtNTcyNiIsICJ0aSxkcmE3NDIiLCAidGksZHJhNzQiLCAidGksZHJhNyIKKworLSBBTTU3MTgKKyAgY29tcGF0aWJsZSA9ICJ0aSxhbTU3MTgiLCAidGksZHJhNzIyIiwgInRpLGRyYTcyIiwgInRpLGRyYTciCisKKy0gQU01NzE2CisgIGNvbXBhdGlibGUgPSAidGksYW01NzE2IiwgInRpLGRyYTcyMiIsICJ0aSxkcmE3MiIsICJ0aSxkcmE3IgorCistIEFNNDM3MgorICBjb21wYXRpYmxlID0gInRpLGFtNDM3MiIsICJ0aSxhbTQzIgorCitCb2FyZHM6CisKKy0gT01BUDMgQmVhZ2xlQm9hcmQgOiBMb3cgY29zdCBjb21tdW5pdHkgYm9hcmQKKyAgY29tcGF0aWJsZSA9ICJ0aSxvbWFwMy1iZWFnbGUiLCAidGksb21hcDMiCisKKy0gT01BUDMgVG9iaSB3aXRoIE92ZXJvIDogQ29tbWVyY2lhbCBleHBhbnNpb24gYm9hcmQgd2l0aCBkYXVnaHRlciBib2FyZAorICBjb21wYXRpYmxlID0gImd1bXN0aXgsb21hcDMtb3Zlcm8tdG9iaSIsICJndW1zdGl4LG9tYXAzLW92ZXJvIiwgInRpLG9tYXAzIgorCistIE9NQVA0IFNEUCA6IFNvZnR3YXJlIERldmVsb3BtZW50IEJvYXJkCisgIGNvbXBhdGlibGUgPSAidGksb21hcDQtc2RwIiwgInRpLG9tYXA0NDMwIgorCistIE9NQVA0IFBhbmRhQm9hcmQgOiBMb3cgY29zdCBjb21tdW5pdHkgYm9hcmQKKyAgY29tcGF0aWJsZSA9ICJ0aSxvbWFwNC1wYW5kYSIsICJ0aSxvbWFwNDQzMCIKKworLSBPTUFQNCBEdW9WZXJvIHdpdGggUGFybG9yIDogQ29tbWVyY2lhbCBleHBhbnNpb24gYm9hcmQgd2l0aCBkYXVnaHRlciBib2FyZAorICBjb21wYXRpYmxlID0gImd1bXN0aXgsb21hcDQtZHVvdmVyby1wYXJsb3IiLCAiZ3Vtc3RpeCxvbWFwNC1kdW92ZXJvIiwgInRpLG9tYXA0NDMwIiwgInRpLG9tYXA0IjsKKworLSBPTUFQNCBWQVItU1RLLU9NNDQgOiBDb21tZXJjaWFsIGRldiBraXQgd2l0aCBWQVItT000NEN1c3RvbUJvYXJkIGFuZCBWQVItU09NLU9NNDQgdy9XTEFOCisgIGNvbXBhdGlibGUgPSAidmFyaXNjaXRlLHZhci1zdGstb200NCIsICJ2YXJpc2NpdGUsdmFyLXNvbS1vbTQ0IiwgInRpLG9tYXA0NDYwIiwgInRpLG9tYXA0IjsKKworLSBPTUFQNCBWQVItRFZLLU9NNDQgOiBDb21tZXJjaWFsIGRldiBraXQgd2l0aCBWQVItT000NEN1c3RvbUJvYXJkLCBWQVItU09NLU9NNDQgdy9XTEFOIGFuZCBMQ0QgdG91Y2hzY3JlZW4KKyAgY29tcGF0aWJsZSA9ICJ2YXJpc2NpdGUsdmFyLWR2ay1vbTQ0IiwgInZhcmlzY2l0ZSx2YXItc29tLW9tNDQiLCAidGksb21hcDQ0NjAiLCAidGksb21hcDQiOworCistIE9NQVAzIEVWTSA6IFNvZnR3YXJlIERldmVsb3BtZW50IEJvYXJkIGZvciBPTUFQMzV4LCBBTS9ETTM3eAorICBjb21wYXRpYmxlID0gInRpLG9tYXAzLWV2bSIsICJ0aSxvbWFwMyIKKworLSBBTTMzNVggRVZNIDogU29mdHdhcmUgRGV2ZWxvcG1lbnQgQm9hcmQgZm9yIEFNMzM1eAorICBjb21wYXRpYmxlID0gInRpLGFtMzM1eC1ldm0iLCAidGksYW0zM3h4IiwgInRpLG9tYXAzIgorCistIEFNMzM1WCBCb25lIDogTG93IGNvc3QgY29tbXVuaXR5IGJvYXJkCisgIGNvbXBhdGlibGUgPSAidGksYW0zMzV4LWJvbmUiLCAidGksYW0zM3h4IiwgInRpLG9tYXAzIgorCistIEFNMzM1WCBPcmlvbkxYbSA6IFN1YnN0YXRpb24gQXV0b21hdGlvbiBQbGF0Zm9ybQorICBjb21wYXRpYmxlID0gIm5vdmF0ZWNoLGFtMzM1eC1seG0iLCAidGksYW0zM3h4IgorCistIEFNMzM1WCBwaHlCT0FSRC1XRUdBOiBTaW5nbGUgQm9hcmQgQ29tcHV0ZXIgZGV2IGtpdAorICBjb21wYXRpYmxlID0gInBoeXRlYyxhbTMzNXgtd2VnYSIsICJwaHl0ZWMsYW0zMzV4LXBoeWNvcmUtc29tIiwgInRpLGFtMzN4eCIKKworLSBPTUFQNSBFVk0gOiBFdmFsdWF0aW9uIE1vZHVsZQorICBjb21wYXRpYmxlID0gInRpLG9tYXA1LWV2bSIsICJ0aSxvbWFwNSIKKworLSBBTTQzeCBFUE9TIEVWTQorICBjb21wYXRpYmxlID0gInRpLGFtNDN4LWVwb3MtZXZtIiwgInRpLGFtNDM3MiIsICJ0aSxhbTQzIgorCistIEFNNDM3eCBHUCBFVk0KKyAgY29tcGF0aWJsZSA9ICJ0aSxhbTQzN3gtZ3AtZXZtIiwgInRpLGFtNDM3MiIsICJ0aSxhbTQzIgorCistIEFNNDM3eCBTSyBFVk06IEFNNDM3eCBTdGFydGVyS2l0IEV2YWx1YXRpb24gTW9kdWxlCisgIGNvbXBhdGlibGUgPSAidGksYW00Mzd4LXNrLWV2bSIsICJ0aSxhbTQzNzIiLCAidGksYW00MyIKKworLSBEUkE3NDIgRVZNOiAgU29mdHdhcmUgRGV2ZWxvcG1lbnQgQm9hcmQgZm9yIERSQTc0MgorICBjb21wYXRpYmxlID0gInRpLGRyYTctZXZtIiwgInRpLGRyYTc0MiIsICJ0aSxkcmE3NCIsICJ0aSxkcmE3IgorCistIERSQTcyMiBFVk06IFNvZnR3YXJlIERldmVsb3BtZW50IEJvYXJkIGZvciBEUkE3MjIKKyAgY29tcGF0aWJsZSA9ICJ0aSxkcmE3Mi1ldm0iLCAidGksZHJhNzIyIiwgInRpLGRyYTcyIiwgInRpLGRyYTciCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL29tYXAvcHJjbS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL29tYXAvcHJjbS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ViNmQ3YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vb21hcC9wcmNtLnR4dApAQCAtMCwwICsxLDYzIEBACitPTUFQIFBSQ00gYmluZGluZ3MKKworUG93ZXIgUmVzZXQgYW5kIENsb2NrIE1hbmFnZXIgbGlzdHMgdGhlIGRldmljZSBjbG9ja3MgYW5kIGNsb2NrZG9tYWlucyB1bmRlcgorYSBEVCBoaWVyYXJjaHkuIEVhY2ggVEkgU29DIGNhbiBoYXZlIG11bHRpcGxlIFBSQ00gZW50aXRpZXMgbGlzdGVkIGZvciBpdCwKK2VhY2ggZGVzY3JpYmluZyBvbmUgbW9kdWxlIGFuZCB0aGUgY2xvY2sgaGllcmFyY2h5IHVuZGVyIGl0LiBzZWUgWzFdIGZvcgorZG9jdW1lbnRhdGlvbiBhYm91dCB0aGUgaW5kaXZpZHVhbCBjbG9jay9jbG9ja2RvbWFpbiBub2Rlcy4KKworWzFdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay90aS8qCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CU11c3QgYmUgb25lIG9mOgorCQkidGksYW0zLXByY20iCisJCSJ0aSxhbTQtcHJjbSIKKwkJInRpLG9tYXAyLXByY20iCisJCSJ0aSxvbWFwMy1wcm0iCisJCSJ0aSxvbWFwMy1jbSIKKwkJInRpLG9tYXA0LWNtMSIKKwkJInRpLG9tYXA0LXBybSIKKwkJInRpLG9tYXA0LWNtMiIKKwkJInRpLG9tYXA0LXNjcm0iCisJCSJ0aSxvbWFwNS1wcm0iCisJCSJ0aSxvbWFwNS1jbS1jb3JlLWFvbiIKKwkJInRpLG9tYXA1LXNjcm0iCisJCSJ0aSxvbWFwNS1jbS1jb3JlIgorCQkidGksZHJhNy1wcm0iCisJCSJ0aSxkcmE3LWNtLWNvcmUtYW9uIgorCQkidGksZHJhNy1jbS1jb3JlIgorCQkidGksZG04MTQtcHJjbSIKKwkJInRpLGRtODE2LXByY20iCistIHJlZzoJCUNvbnRhaW5zIFBSQ00gbW9kdWxlIHJlZ2lzdGVyIGFkZHJlc3MgcmFuZ2UKKwkJKGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoKQorLSBjbG9ja3M6CWNsb2NrcyBmb3IgdGhpcyBtb2R1bGUKKy0gY2xvY2tkb21haW5zOgljbG9ja2RvbWFpbnMgZm9yIHRoaXMgbW9kdWxlCisKK0V4YW1wbGU6CisKK2NtOiBjbUA0ODAwNDAwMCB7CisJY29tcGF0aWJsZSA9ICJ0aSxvbWFwMy1jbSI7CisJcmVnID0gPDB4NDgwMDQwMDAgMHg0MDAwPjsKKworCWNtX2Nsb2NrczogY2xvY2tzIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCX07CisKKwljbV9jbG9ja2RvbWFpbnM6IGNsb2NrZG9tYWlucyB7CisJfTsKK30KKworJmNtX2Nsb2NrcyB7CisJb21hcDJfMzJrX2Zjazogb21hcF8zMmtfZmNrIHsKKwkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQljb21wYXRpYmxlID0gImZpeGVkLWNsb2NrIjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDMyNzY4PjsKKwl9OworfTsKKworJmNtX2Nsb2NrZG9tYWlucyB7CisJY29yZV9sM19jbGtkbTogY29yZV9sM19jbGtkbSB7CisJCWNvbXBhdGlibGUgPSAidGksY2xvY2tkb21haW4iOworCQljbG9ja3MgPSA8JnNkcmNfaWNrPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vb21hcC90aW1lci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL29tYXAvdGltZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwMmUyN2MKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL29tYXAvdGltZXIudHh0CkBAIC0wLDAgKzEsNDQgQEAKK09NQVAgVGltZXIgYmluZGluZ3MKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZToJCVNob3VsZCBiZSBzZXQgdG8gb25lIG9mIHRoZSBiZWxvdy4gUGxlYXNlIG5vdGUgdGhhdAorCQkJT01BUDQ0eHggZGV2aWNlcyBoYXZlIHRpbWVyIGluc3RhbmNlcyB0aGF0IGFyZSAxMDAlCisJCQlyZWdpc3RlciBjb21wYXRpYmxlIHdpdGggT01BUDN4eHggZGV2aWNlcyBhcyB3ZWxsIGFzCisJCQluZXdlciB0aW1lcnMgdGhhdCBhcmUgbm90IDEwMCUgcmVnaXN0ZXIgY29tcGF0aWJsZS4KKwkJCVNvIGZvciBPTUFQNDR4eCBkZXZpY2VzIHRpbWVyIGluc3RhbmNlcyBtYXkgdXNlCisJCQlkaWZmZXJlbnQgY29tcGF0aWJsZSBzdHJpbmdzLgorCisJCQl0aSxvbWFwMjQyMC10aW1lciAoYXBwbGljYWJsZSB0byBPTUFQMjR4eCBkZXZpY2VzKQorCQkJdGksb21hcDM0MzAtdGltZXIgKGFwcGxpY2FibGUgdG8gT01BUDN4eHgvNDR4eCBkZXZpY2VzKQorCQkJdGksb21hcDQ0MzAtdGltZXIgKGFwcGxpY2FibGUgdG8gT01BUDQ0eHggZGV2aWNlcykKKwkJCXRpLG9tYXA1NDMwLXRpbWVyIChhcHBsaWNhYmxlIHRvIE9NQVA1NDN4IGRldmljZXMpCisJCQl0aSxhbTMzNXgtdGltZXIJKGFwcGxpY2FibGUgdG8gQU0zMzV4IGRldmljZXMpCisJCQl0aSxhbTMzNXgtdGltZXItMW1zIChhcHBsaWNhYmxlIHRvIEFNMzM1eCBkZXZpY2VzKQorCistIHJlZzoJCQlDb250YWlucyB0aW1lciByZWdpc3RlciBhZGRyZXNzIHJhbmdlIChiYXNlIGFkZHJlc3MgYW5kCisJCQlsZW5ndGgpLgorLSBpbnRlcnJ1cHRzOiAJCUNvbnRhaW5zIHRoZSBpbnRlcnJ1cHQgaW5mb3JtYXRpb24gZm9yIHRoZSB0aW1lci4gVGhlCisJCQlmb3JtYXQgaXMgYmVpbmcgZGVwZW5kZW50IG9uIHdoaWNoIGludGVycnVwdCBjb250cm9sbGVyCisJCQl0aGUgT01BUCBkZXZpY2UgdXNlcy4KKy0gdGksaHdtb2RzOgkJTmFtZSBvZiB0aGUgaHdtb2QgYXNzb2NpYXRlZCB0byB0aGUgdGltZXIsICJ0aW1lcjxYPiIsCisJCQl3aGVyZSA8WD4gaXMgdGhlIGluc3RhbmNlIG51bWJlciBvZiB0aGUgdGltZXIgZnJvbSB0aGUKKwkJCUhXIHNwZWMuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHRpLHRpbWVyLWFsd29uOglJbmRpY2F0ZXMgdGhlIHRpbWVyIGlzIGluIGFuIGFsd2F5LW9uIHBvd2VyIGRvbWFpbi4KKy0gdGksdGltZXItZHNwOgkJSW5kaWNhdGVzIHRoZSB0aW1lciBjYW4gaW50ZXJydXB0IHRoZSBvbi1jaGlwIERTUCBpbgorCQkJYWRkaXRpb24gdG8gdGhlIEFSTSBDUFUuCistIHRpLHRpbWVyLXB3bTogCUluZGljYXRlcyB0aGUgdGltZXIgY2FuIGdlbmVyYXRlIGEgUFdNIG91dHB1dC4KKy0gdGksdGltZXItc2VjdXJlOiAJSW5kaWNhdGVzIHRoZSB0aW1lciBpcyByZXNlcnZlZCBvbiBhIHNlY3VyZSBPTUFQIGRldmljZQorCQkJYW5kIHRoZXJlZm9yZSBjYW5ub3QgYmUgdXNlZCBieSB0aGUga2VybmVsLgorCitFeGFtcGxlOgorCit0aW1lcjEyOiB0aW1lckA0ODMwNDAwMCB7CisJY29tcGF0aWJsZSA9ICJ0aSxvbWFwMzQzMC10aW1lciI7CisJcmVnID0gPDB4NDgzMDQwMDAgMHg0MDA+OworCWludGVycnVwdHMgPSA8OTU+OworCXRpLGh3bW9kcyA9ICJ0aW1lcjEyIgorCXRpLHRpbWVyLWFsd29uOworCXRpLHRpbWVyLXNlY3VyZTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3BpY294Y2VsbC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3BpY294Y2VsbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc1YzBlZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vcGljb3hjZWxsLnR4dApAQCAtMCwwICsxLDI0IEBACitQaWNvY2hpcCBwaWNvWGNlbGwgZGV2aWNlIHRyZWUgYmluZGluZ3MuCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorICAgIC0gY29tcGF0aWJsZToKKwktICJwaWNvY2hpcCxwYzczMDItcGMzeDMiIDogUEM3MzAyIGRldmVsb3BtZW50IGJvYXJkIHdpdGggUEMzWDMgZGV2aWNlLgorCS0gInBpY29jaGlwLHBjNzMwMi1wYzN4MiIgOiBQQzczMDIgZGV2ZWxvcG1lbnQgYm9hcmQgd2l0aCBQQzNYMiBkZXZpY2UuCisJLSAicGljb2NoaXAscGMzeDMiIDogcGljb1hjZWxsIFBDM1gzIGRldmljZSBiYXNlZCBib2FyZC4KKwktICJwaWNvY2hpcCxwYzN4MiIgOiBwaWNvWGNlbGwgUEMzWDIgZGV2aWNlIGJhc2VkIGJvYXJkLgorCitUaW1lcnMgcmVxdWlyZWQgcHJvcGVydGllczoKKyAgICAtIGNvbXBhdGlibGUgPSAicGljb2NoaXAscGMzeDItdGltZXIiCisgICAgLSBpbnRlcnJ1cHRzIDogVGhlIHNpbmdsZSBJUlEgbGluZSBmb3IgdGhlIHRpbWVyLgorICAgIC0gY2xvY2stZnJlcSA6IFRoZSBmcmVxdWVuY3kgaW4gSFogb2YgdGhlIHRpbWVyLgorICAgIC0gcmVnIDogVGhlIHJlZ2lzdGVyIGJhbmsgZm9yIHRoZSB0aW1lci4KKworTm90ZTogdHdvIHRpbWVycyBhcmUgcmVxdWlyZWQgLSBvbmUgZm9yIHRoZSBzY2hlZHVsZXIgY2xvY2sgYW5kIG9uZSBmb3IgdGhlCitldmVudCB0aWNrL05PSFouCisKK1ZJQyByZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAgIC0gY29tcGF0aWJsZSA9ICJhcm0scGwxOTItdmljIi4KKyAgICAtIGludGVycnVwdC1jb250cm9sbGVyLgorICAgIC0gcmVnIDogVGhlIHJlZ2lzdGVyIGJhbmsgZm9yIHRoZSBkZXZpY2UuCisgICAgLSAjaW50ZXJydXB0LWNlbGxzIDogTXVzdCBiZSAxLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9wbXUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9wbXUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3YmE0NWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3BtdS50eHQKQEAgLTAsMCArMSw1MyBAQAorKiBBUk0gUGVyZm9ybWFuY2UgTW9uaXRvciBVbml0cworCitBUk0gY29yZXMgb2Z0ZW4gaGF2ZSBhIFBNVSBmb3IgY291bnRpbmcgY3B1IGFuZCBjYWNoZSBldmVudHMgbGlrZSBjYWNoZSBtaXNzZXMKK2FuZCBoaXRzLiBUaGUgaW50ZXJmYWNlIHRvIHRoZSBQTVUgaXMgcGFydCBvZiB0aGUgQVJNIEFSTS4gVGhlIEFSTSBQTVUKK3JlcHJlc2VudGF0aW9uIGluIHRoZSBkZXZpY2UgdHJlZSBzaG91bGQgYmUgZG9uZSBhcyB1bmRlcjotCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSBvbmUgb2YKKwkiYXBtLHBvdGVuemEtcG11IgorCSJhcm0sYXJtdjgtcG11djMiCisJImFybS5jb3J0ZXgtYTU3LXBtdSIKKwkiYXJtLmNvcnRleC1hNTMtcG11IgorCSJhcm0sY29ydGV4LWExNy1wbXUiCisJImFybSxjb3J0ZXgtYTE1LXBtdSIKKwkiYXJtLGNvcnRleC1hMTItcG11IgorCSJhcm0sY29ydGV4LWE5LXBtdSIKKwkiYXJtLGNvcnRleC1hOC1wbXUiCisJImFybSxjb3J0ZXgtYTctcG11IgorCSJhcm0sY29ydGV4LWE1LXBtdSIKKwkiYXJtLGFybTExbXBjb3JlLXBtdSIKKwkiYXJtLGFybTExNzYtcG11IgorCSJhcm0sYXJtMTEzNi1wbXUiCisJInFjb20sc2NvcnBpb24tcG11IgorCSJxY29tLHNjb3JwaW9uLW1wLXBtdSIKKwkicWNvbSxrcmFpdC1wbXUiCistIGludGVycnVwdHMgOiAxIGNvbWJpbmVkIGludGVycnVwdCBvciAxIHBlciBjb3JlLiBJZiB0aGUgaW50ZXJydXB0IGlzIGEgcGVyLWNwdQorICAgICAgICAgICAgICAgaW50ZXJydXB0IChQUEkpIHRoZW4gMSBpbnRlcnJ1cHQgc2hvdWxkIGJlIHNwZWNpZmllZC4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworLSBpbnRlcnJ1cHQtYWZmaW5pdHkgOiBXaGVuIHVzaW5nIFNQSXMsIHNwZWNpZmllcyBhIGxpc3Qgb2YgcGhhbmRsZXMgdG8gQ1BVCisgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzIGNvcnJlc3BvbmRpbmcgZGlyZWN0bHkgdG8gdGhlIGFmZmluaXR5IG9mCisJCSAgICAgICB0aGUgU1BJcyBsaXN0ZWQgaW4gdGhlIGludGVycnVwdHMgcHJvcGVydHkuCisKKyAgICAgICAgICAgICAgICAgICAgICAgV2hlbiB1c2luZyBhIFBQSSwgc3BlY2lmaWVzIGEgbGlzdCBvZiBwaGFuZGxlcyB0byBDUFUKKwkJICAgICAgIG5vZGVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHNldCBvZiBDUFVzIHdoaWNoIGhhdmUKKwkJICAgICAgIGEgUE1VIG9mIHRoaXMgdHlwZSBzaWduYWxsaW5nIHRoZSBQUEkgbGlzdGVkIGluIHRoZQorCQkgICAgICAgaW50ZXJydXB0cyBwcm9wZXJ0eS4KKworICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHByb3BlcnR5IHNob3VsZCBiZSBwcmVzZW50IHdoZW4gdGhlcmUgaXMgbW9yZSB0aGFuCisJCSAgICAgICBhIHNpbmdsZSBTUEkuCisKKworLSBxY29tLG5vLXBjLXdyaXRlIDogSW5kaWNhdGVzIHRoYXQgdGhpcyBQTVUgZG9lc24ndCBzdXBwb3J0IHRoZSAweGMgYW5kIDB4ZAorICAgICAgICAgICAgICAgICAgICAgZXZlbnRzLgorCitFeGFtcGxlOgorCitwbXUgeworICAgICAgICBjb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTktcG11IjsKKyAgICAgICAgaW50ZXJydXB0cyA9IDwxMDAgMTAxPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3ByaW1lY2VsbC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3ByaW1lY2VsbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRmNmFjYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vcHJpbWVjZWxsLnR4dApAQCAtMCwwICsxLDQ2IEBACisqIEFSTSBQcmltZWNlbGwgUGVyaXBoZXJhbHMKKworQVJNLCBMdGQuIFByaW1lY2VsbCBwZXJpcGhlcmFscyBoYXZlIGEgc3RhbmRhcmQgaWQgcmVnaXN0ZXIgdGhhdCBjYW4gYmUgdXNlZCB0bworaWRlbnRpZnkgdGhlIHBlcmlwaGVyYWwgdHlwZSwgdmVuZG9yLCBhbmQgcmV2aXNpb24uIFRoaXMgdmFsdWUgY2FuIGJlIHVzZWQgZm9yCitkcml2ZXIgbWF0Y2hpbmcuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSBhIHNwZWNpZmljIG5hbWUgZm9yIHRoZSBwZXJpcGhlcmFsIGFuZAorICAgICAgICAgICAgICAgImFybSxwcmltZWNlbGwiLiAgVGhlIHNwZWNpZmljIG5hbWUgd2lsbCBtYXRjaCB0aGUgQVJNCisgICAgICAgICAgICAgICBlbmdpbmVlcmluZyBuYW1lIGZvciB0aGUgbG9naWMgYmxvY2sgaW4gdGhlIGZvcm06ICJhcm0scGw/Pz8iCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gYXJtLHByaW1lY2VsbC1wZXJpcGhpZCA6IFZhbHVlIHRvIG92ZXJyaWRlIHRoZSBoL3cgdmFsdWUgd2l0aAorLSBjbG9ja3MgOiBGcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nLiBGaXJzdCBjbG9jayBpcyBwaGFuZGxlIHRvIGNsb2NrIGZvciBhcGIKKwlwY2xrLiBBZGRpdGlvbmFsIGNsb2NrcyBhcmUgb3B0aW9uYWwgYW5kIHNwZWNpZmljIHRvIHRob3NlIHBlcmlwaGVyYWxzLgorLSBjbG9jay1uYW1lcyA6IEZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmcuIFNoYWxsIGJlICJhcGJfcGNsayIgZm9yIGZpcnN0IGNsb2NrLgorLSBkbWFzIDogRnJvbSBjb21tb24gRE1BIGJpbmRpbmcuIElmIHByZXNlbnQsIHJlZmVycyB0byBvbmUgb3IgbW9yZSBkbWEgY2hhbm5lbHMuCistIGRtYS1uYW1lcyA6IEZyb20gY29tbW9uIERNQSBiaW5kaW5nLCBuZWVkcyB0byBtYXRjaCB0aGUgJ2RtYXMnIHByb3BlcnR5LgorICAgICAgICAgICAgICBEZXZpY2VzIHdpdGggZXhhY3RseSBvbmUgcmVjZWl2ZSBhbmQgdHJhbnNtaXQgY2hhbm5lbCBzaGFsbCBuYW1lCisgICAgICAgICAgICAgIHRoZXNlICJyeCIgYW5kICJ0eCIsIHJlc3BlY3RpdmVseS4KKy0gcGluY3RybC08bj4gOiBQaW5jdHJsIHN0YXRlcyBhcyBkZXNjcmliZWQgaW4gYmluZGluZ3MvcGluY3RybC9waW5jdHJsLWJpbmRpbmdzLnR4dAorLSBwaW5jdHJsLW5hbWVzIDogTmFtZXMgY29ycmVzcG9uZGluZyB0byB0aGUgbnVtYmVyZWQgcGluY3RybCBzdGF0ZXMKKy0gaW50ZXJydXB0cyA6IG9uZSBvciBtb3JlIGludGVycnVwdCBzcGVjaWZpZXJzCistIGludGVycnVwdC1uYW1lcyA6IG5hbWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVycnVwdHMgcHJvcGVydGllcworCitFeGFtcGxlOgorCitzZXJpYWxAZmZmMzYwMDAgeworCWNvbXBhdGlibGUgPSAiYXJtLHBsMDExIiwgImFybSxwcmltZWNlbGwiOworCWFybSxwcmltZWNlbGwtcGVyaXBoaWQgPSA8MHgwMDM0MTAxMT47CisKKwljbG9ja3MgPSA8JnBjbGs+OworCWNsb2NrLW5hbWVzID0gImFwYl9wY2xrIjsKKworCWRtYXMgPSA8JmRtYS1jb250cm9sbGVyIDQ+LCA8JmRtYS1jb250cm9sbGVyIDU+OworCWRtYS1uYW1lcyA9ICJyeCIsICJ0eCI7CQorCisJcGluY3RybC0wID0gPCZ1YXJ0MF9kZWZhdWx0X211eD4sIDwmdWFydDBfZGVmYXVsdF9tb2RlPjsKKwlwaW5jdHJsLTEgPSA8JnVhcnQwX3NsZWVwX21vZGU+OworCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCIsInNsZWVwIjsKKworCWludGVycnVwdHMgPSA8MCAxMSAweDQ+OworfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9wc2NpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vcHNjaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTlhZGFiOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vcHNjaS50eHQKQEAgLTAsMCArMSwxMDggQEAKKyogUG93ZXIgU3RhdGUgQ29vcmRpbmF0aW9uIEludGVyZmFjZSAoUFNDSSkKKworRmlybXdhcmUgaW1wbGVtZW50aW5nIHRoZSBQU0NJIGZ1bmN0aW9ucyBkZXNjcmliZWQgaW4gQVJNIGRvY3VtZW50IG51bWJlcgorQVJNIERFTiAwMDIyQSAoIlBvd2VyIFN0YXRlIENvb3JkaW5hdGlvbiBJbnRlcmZhY2UgU3lzdGVtIFNvZnR3YXJlIG9uIEFSTQorcHJvY2Vzc29ycyIpIGNhbiBiZSB1c2VkIGJ5IExpbnV4IHRvIGluaXRpYXRlIHZhcmlvdXMgQ1BVLWNlbnRyaWMgcG93ZXIKK29wZXJhdGlvbnMuCisKK0lzc3VlIEEgb2YgdGhlIHNwZWNpZmljYXRpb24gZGVzY3JpYmVzIGZ1bmN0aW9ucyBmb3IgQ1BVIHN1c3BlbmQsIGhvdHBsdWcKK2FuZCBtaWdyYXRpb24gb2Ygc2VjdXJlIHNvZnR3YXJlLgorCitGdW5jdGlvbnMgYXJlIGludm9rZWQgYnkgdHJhcHBpbmcgdG8gdGhlIHByaXZpbGVnZSBsZXZlbCBvZiB0aGUgUFNDSQorZmlybXdhcmUgKHNwZWNpZmllZCBhcyBwYXJ0IG9mIHRoZSBiaW5kaW5nIGJlbG93KSBhbmQgcGFzc2luZyBhcmd1bWVudHMKK2luIGEgbWFubmVyIHNpbWlsYXIgdG8gdGhhdCBzcGVjaWZpZWQgYnkgQUFQQ1M6CisKKwkgcjAJCT0+IDMyLWJpdCBGdW5jdGlvbiBJRCAvIHJldHVybiB2YWx1ZQorCXtyMSAtIHIzfQk9PiBQYXJhbWV0ZXJzCisKK05vdGUgdGhhdCB0aGUgaW1tZWRpYXRlIGZpZWxkIG9mIHRoZSB0cmFwcGluZyBpbnN0cnVjdGlvbiBtdXN0IGJlIHNldAordG8gIzAuCisKKworTWFpbiBub2RlIHJlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAtIGNvbXBhdGlibGUgICAgOiBzaG91bGQgY29udGFpbiBhdCBsZWFzdCBvbmUgb2Y6CisKKwkJCQkgKiAiYXJtLHBzY2kiIDogZm9yIGltcGxlbWVudGF0aW9ucyBjb21wbHlpbmcgdG8gUFNDSSB2ZXJzaW9ucyBwcmlvciB0bworCQkJCQkwLjIuIEZvciB0aGVzZSBjYXNlcyBmdW5jdGlvbiBJRHMgbXVzdCBiZSBwcm92aWRlZC4KKworCQkJCSAqICJhcm0scHNjaS0wLjIiIDogZm9yIGltcGxlbWVudGF0aW9ucyBjb21wbHlpbmcgdG8gUFNDSSAwLjIuIEZ1bmN0aW9uCisJCQkJCUlEcyBhcmUgbm90IHJlcXVpcmVkIGFuZCBzaG91bGQgYmUgaWdub3JlZCBieSBhbiBPUyB3aXRoIFBTQ0kgMC4yCisJCQkJCXN1cHBvcnQsIGJ1dCBhcmUgcGVybWl0dGVkIHRvIGJlIHByZXNlbnQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aAorCQkJCQlleGlzdGluZyBzb2Z0d2FyZSB3aGVuICJhcm0scHNjaSIgaXMgbGF0ZXIgaW4gdGhlIGNvbXBhdGlibGUgbGlzdC4KKworCQkJCSogImFybSxwc2NpLTEuMCIgOiBmb3IgaW1wbGVtZW50YXRpb25zIGNvbXBseWluZyB0byBQU0NJIDEuMC4gUFNDSSAxLjAgaXMKKwkJCQkJYmFja3dhcmQgY29tcGF0aWJsZSB3aXRoIFBTQ0kgMC4yIHdpdGggbWlub3Igc3BlY2lmaWNhdGlvbiB1cGRhdGVzLAorCQkJCQlhcyBkZWZpbmVkIGluIHRoZSBQU0NJIHNwZWNpZmljYXRpb25bMl0uCisKKyAtIG1ldGhvZCAgICAgICAgOiBUaGUgbWV0aG9kIG9mIGNhbGxpbmcgdGhlIFBTQ0kgZmlybXdhcmUuIFBlcm1pdHRlZAorICAgICAgICAgICAgICAgICAgIHZhbHVlcyBhcmU6CisKKyAgICAgICAgICAgICAgICAgICAic21jIiA6IFNNQyAjMCwgd2l0aCB0aGUgcmVnaXN0ZXIgYXNzaWdubWVudHMgc3BlY2lmaWVkCisJCSAgICAgICAgICAgaW4gdGhpcyBiaW5kaW5nLgorCisgICAgICAgICAgICAgICAgICAgImh2YyIgOiBIVkMgIzAsIHdpdGggdGhlIHJlZ2lzdGVyIGFzc2lnbm1lbnRzIHNwZWNpZmllZAorCQkgICAgICAgICAgIGluIHRoaXMgYmluZGluZy4KKworTWFpbiBub2RlIG9wdGlvbmFsIHByb3BlcnRpZXM6CisKKyAtIGNwdV9zdXNwZW5kICAgOiBGdW5jdGlvbiBJRCBmb3IgQ1BVX1NVU1BFTkQgb3BlcmF0aW9uCisKKyAtIGNwdV9vZmYgICAgICAgOiBGdW5jdGlvbiBJRCBmb3IgQ1BVX09GRiBvcGVyYXRpb24KKworIC0gY3B1X29uICAgICAgICA6IEZ1bmN0aW9uIElEIGZvciBDUFVfT04gb3BlcmF0aW9uCisKKyAtIG1pZ3JhdGUgICAgICAgOiBGdW5jdGlvbiBJRCBmb3IgTUlHUkFURSBvcGVyYXRpb24KKworRGV2aWNlIHRyZWUgbm9kZXMgdGhhdCByZXF1aXJlIHVzYWdlIG9mIFBTQ0kgQ1BVX1NVU1BFTkQgZnVuY3Rpb24gKGllIGlkbGUKK3N0YXRlIG5vZGVzLCBhcyBwZXIgYmluZGluZ3MgaW4gWzFdKSBtdXN0IHNwZWNpZnkgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorCistIGFybSxwc2NpLXN1c3BlbmQtcGFyYW0KKwkJVXNhZ2U6IFJlcXVpcmVkIGZvciBzdGF0ZSBub2Rlc1sxXSBpZiB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICBpZGxlLXN0YXRlcyBub2RlIGVudHJ5LW1ldGhvZCBwcm9wZXJ0eSBpcyBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgdG8gInBzY2kiLgorCQlWYWx1ZSB0eXBlOiA8dTMyPgorCQlEZWZpbml0aW9uOiBwb3dlcl9zdGF0ZSBwYXJhbWV0ZXIgdG8gcGFzcyB0byB0aGUgUFNDSQorCQkJICAgIHN1c3BlbmQgY2FsbC4KKworRXhhbXBsZToKKworQ2FzZSAxOiBQU0NJIHYwLjEgb25seS4KKworCXBzY2kgeworCQljb21wYXRpYmxlCT0gImFybSxwc2NpIjsKKwkJbWV0aG9kCQk9ICJzbWMiOworCQljcHVfc3VzcGVuZAk9IDwweDk1YzEwMDAwPjsKKwkJY3B1X29mZgkJPSA8MHg5NWMxMDAwMT47CisJCWNwdV9vbgkJPSA8MHg5NWMxMDAwMj47CisJCW1pZ3JhdGUJCT0gPDB4OTVjMTAwMDM+OworCX07CisKK0Nhc2UgMjogUFNDSSB2MC4yIG9ubHkKKworCXBzY2kgeworCQljb21wYXRpYmxlCT0gImFybSxwc2NpLTAuMiI7CisJCW1ldGhvZAkJPSAic21jIjsKKwl9OworCitDYXNlIDM6IFBTQ0kgdjAuMiBhbmQgUFNDSSB2MC4xLgorCisJQSBEVEIgbWF5IHByb3ZpZGUgSURzIGZvciB1c2UgYnkga2VybmVscyB3aXRob3V0IFBTQ0kgMC4yIHN1cHBvcnQsCisJZW5hYmxpbmcgZmlybXdhcmUgYW5kIGh5cGVydmlzb3JzIHRvIHN1cHBvcnQgZXhpc3RpbmcgYW5kIG5ldyBrZXJuZWxzLgorCVRoZXNlIElEcyB3aWxsIGJlIGlnbm9yZWQgYnkga2VybmVscyB3aXRoIFBTQ0kgMC4yIHN1cHBvcnQsIHdoaWNoIHdpbGwKKwl1c2UgdGhlIHN0YW5kYXJkIFBTQ0kgMC4yIElEcyBleGNsdXNpdmVseS4KKworCXBzY2kgeworCQljb21wYXRpYmxlID0gImFybSxwc2NpLTAuMiIsICJhcm0scHNjaSI7CisJCW1ldGhvZCA9ICJodmMiOworCisJCWNwdV9vbiA9IDwgYXJiaXRyYXJ5IHZhbHVlID47CisJCWNwdV9vZmYgPSA8IGFyYml0cmFyeSB2YWx1ZSA+OworCisJCS4uLgorCX07CisKK1sxXSBLZXJuZWwgZG9jdW1lbnRhdGlvbiAtIEFSTSBpZGxlIHN0YXRlcyBiaW5kaW5ncworICAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vaWRsZS1zdGF0ZXMudHh0CitbMl0gUG93ZXIgU3RhdGUgQ29vcmRpbmF0aW9uIEludGVyZmFjZSAoUFNDSSkgc3BlY2lmaWNhdGlvbgorICAgIGh0dHA6Ly9pbmZvY2VudGVyLmFybS5jb20vaGVscC90b3BpYy9jb20uYXJtLmRvYy5kZW4wMDIyYy9ERU4wMDIyQ19Qb3dlcl9TdGF0ZV9Db29yZGluYXRpb25fSW50ZXJmYWNlLnBkZgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9yb2NrY2hpcC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3JvY2tjaGlwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTk4NWRkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9yb2NrY2hpcC50eHQKQEAgLTAsMCArMSw3NCBAQAorUm9ja2NoaXAgcGxhdGZvcm1zIGRldmljZSB0cmVlIGJpbmRpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBNYXJzQm9hcmQgUkszMDY2IGJvYXJkOgorICAgIFJlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorICAgICAgLSBjb21wYXRpYmxlID0gImhhb3l1LG1hcnNib2FyZC1yazMwNjYiLCAicm9ja2NoaXAscmszMDY2YSI7CisKKy0gYnEgQ3VyaWUgMiB0YWJsZXQ6CisgICAgUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgICAtIGNvbXBhdGlibGUgPSAibXVuZG9yZWFkZXIsYnEtY3VyaWUyIiwgInJvY2tjaGlwLHJrMzA2NmEiOworCistIENoaXBTUEFSSyBSYXllYWdlciBQWDIgYm9hcmQ6CisgICAgUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgICAtIGNvbXBhdGlibGUgPSAiY2hpcHNwYXJrLHJheWVhZ2VyLXB4MiIsICJyb2NrY2hpcCxyazMwNjZhIjsKKworLSBSYWR4YSBSb2NrIGJvYXJkOgorICAgIFJlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorICAgICAgLSBjb21wYXRpYmxlID0gInJhZHhhLHJvY2siLCAicm9ja2NoaXAscmszMTg4IjsKKworLSBSYWR4YSBSb2NrMiBTcXVhcmUgYm9hcmQ6CisgICAgUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgICAtIGNvbXBhdGlibGUgPSAicmFkeGEscm9jazItc3F1YXJlIiwgInJvY2tjaGlwLHJrMzI4OCI7CisKKy0gRmlyZWZseSBGaXJlZmx5LVJLMzI4OCBib2FyZDoKKyAgICBSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKyAgICAgIC0gY29tcGF0aWJsZSA9ICJmaXJlZmx5LGZpcmVmbHktcmszMjg4IiwgInJvY2tjaGlwLHJrMzI4OCI7CisgICAgb3IKKyAgICAgIC0gY29tcGF0aWJsZSA9ICJmaXJlZmx5LGZpcmVmbHktcmszMjg4LWJldGEiLCAicm9ja2NoaXAscmszMjg4IjsKKworLSBDaGlwU1BBUksgUG9wTWV0YWwtUkszMjg4IGJvYXJkOgorICAgIFJlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorICAgICAgLSBjb21wYXRpYmxlID0gImNoaXBzcGFyayxwb3BtZXRhbC1yazMyODgiLCAicm9ja2NoaXAscmszMjg4IjsKKworLSBOZXR4ZW9uIFI4OSBib2FyZDoKKyAgICBSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKyAgICAgIC0gY29tcGF0aWJsZSA9ICJuZXR4ZW9uLHI4OSIsICJyb2NrY2hpcCxyazMyODgiOworCistIEdvb2dsZSBKYXEgKEhhaWVyIENocm9tZWJvb2sgMTEgYW5kIG1vcmUpOgorICAgIFJlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorICAgICAgLSBjb21wYXRpYmxlID0gImdvb2dsZSx2ZXlyb24tamFxLXJldjUiLCAiZ29vZ2xlLHZleXJvbi1qYXEtcmV2NCIsCisJCSAgICAgImdvb2dsZSx2ZXlyb24tamFxLXJldjMiLCAiZ29vZ2xlLHZleXJvbi1qYXEtcmV2MiIsCisJCSAgICAgImdvb2dsZSx2ZXlyb24tamFxLXJldjEiLCAiZ29vZ2xlLHZleXJvbi1qYXEiLAorCQkgICAgICJnb29nbGUsdmV5cm9uIiwgInJvY2tjaGlwLHJrMzI4OCI7CisKKy0gR29vZ2xlIEplcnJ5IChIaXNlbnNlIENocm9tZWJvb2sgQzExIGFuZCBtb3JlKToKKyAgICBSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKyAgICAgIC0gY29tcGF0aWJsZSA9ICJnb29nbGUsdmV5cm9uLWplcnJ5LXJldjciLCAiZ29vZ2xlLHZleXJvbi1qZXJyeS1yZXY2IiwKKwkJICAgICAiZ29vZ2xlLHZleXJvbi1qZXJyeS1yZXY1IiwgImdvb2dsZSx2ZXlyb24tamVycnktcmV2NCIsCisJCSAgICAgImdvb2dsZSx2ZXlyb24tamVycnktcmV2MyIsICJnb29nbGUsdmV5cm9uLWplcnJ5IiwKKwkJICAgICAiZ29vZ2xlLHZleXJvbiIsICJyb2NrY2hpcCxyazMyODgiOworCistIEdvb2dsZSBNaW5uaWUgKEFzdXMgQ2hyb21lYm9vayBGbGlwIEMxMDBQKToKKyAgICBSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKyAgICAgIC0gY29tcGF0aWJsZSA9ICJnb29nbGUsdmV5cm9uLW1pbm5pZS1yZXY0IiwgImdvb2dsZSx2ZXlyb24tbWlubmllLXJldjMiLAorCQkgICAgICJnb29nbGUsdmV5cm9uLW1pbm5pZS1yZXYyIiwgImdvb2dsZSx2ZXlyb24tbWlubmllLXJldjEiLAorCQkgICAgICJnb29nbGUsdmV5cm9uLW1pbm5pZS1yZXYwIiwgImdvb2dsZSx2ZXlyb24tbWlubmllIiwKKwkJICAgICAiZ29vZ2xlLHZleXJvbiIsICJyb2NrY2hpcCxyazMyODgiOworCistIEdvb2dsZSBQaW5reSAoZGV2LWJvYXJkKToKKyAgICBSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKyAgICAgIC0gY29tcGF0aWJsZSA9ICJnb29nbGUsdmV5cm9uLXBpbmt5LXJldjIiLCAiZ29vZ2xlLHZleXJvbi1waW5reSIsCisJCSAgICAgImdvb2dsZSx2ZXlyb24iLCAicm9ja2NoaXAscmszMjg4IjsKKworLSBHb29nbGUgU3BlZWR5IChBc3VzIEMyMDEgQ2hyb21lYm9vayk6CisgICAgUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgICAtIGNvbXBhdGlibGUgPSAiZ29vZ2xlLHZleXJvbi1zcGVlZHktcmV2OSIsICJnb29nbGUsdmV5cm9uLXNwZWVkeS1yZXY4IiwKKwkJICAgICAiZ29vZ2xlLHZleXJvbi1zcGVlZHktcmV2NyIsICJnb29nbGUsdmV5cm9uLXNwZWVkeS1yZXY2IiwKKwkJICAgICAiZ29vZ2xlLHZleXJvbi1zcGVlZHktcmV2NSIsICJnb29nbGUsdmV5cm9uLXNwZWVkeS1yZXY0IiwKKwkJICAgICAiZ29vZ2xlLHZleXJvbi1zcGVlZHktcmV2MyIsICJnb29nbGUsdmV5cm9uLXNwZWVkeS1yZXYyIiwKKwkJICAgICAiZ29vZ2xlLHZleXJvbi1zcGVlZHkiLCAiZ29vZ2xlLHZleXJvbiIsICJyb2NrY2hpcCxyazMyODgiOworCistIFJvY2tjaGlwIFI4OCBib2FyZDoKKyAgICBSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKyAgICAgIC0gY29tcGF0aWJsZSA9ICJyb2NrY2hpcCxyODgiLCAicm9ja2NoaXAscmszMzY4IjsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vcm9ja2NoaXAvcG11LXNyYW0udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9yb2NrY2hpcC9wbXUtc3JhbS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI0MmZkYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vcm9ja2NoaXAvcG11LXNyYW0udHh0CkBAIC0wLDAgKzEsMTYgQEAKK1JvY2tjaGlwIFNSQU0gZm9yIHBtdToKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgc3JhbSBvZiBwbXUgaXMgdXNlZCB0byBzdG9yZSB0aGUgZnVuY3Rpb24gb2YgcmVzdW1lIGZyb20gbWFza3JvbSh0aGUgMXN0CitsZXZlbCBsb2FkZXIpLiBUaGlzIGlzIGEgY29tbW9uIHVzZSBvZiB0aGUgInBtdS1zcmFtIiBiZWNhdXNlIGl0IGtlZXBzIHBvd2VyCitldmVuIGluIGxvdyBwb3dlciBzdGF0ZXMgaW4gdGhlIHN5c3RlbS4KKworUmVxdWlyZWQgbm9kZSBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJyb2NrY2hpcCxyazMyODgtcG11LXNyYW0iCistIHJlZyA6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgdGhlIHNpemUgb2YgdGhlIHJlZ2lzdGVycyB3aW5kb3cKKworRXhhbXBsZToKKwlzcmFtQGZmNzIwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJyb2NrY2hpcCxyazMyODgtcG11LXNyYW0iLCAibW1pby1zcmFtIjsKKwkJcmVnID0gPDB4ZmY3MjAwMDAgMHgxMDAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9yb2NrY2hpcC9wbXUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9yb2NrY2hpcC9wbXUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlZTliNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3JvY2tjaGlwL3BtdS50eHQKQEAgLTAsMCArMSwxNiBAQAorUm9ja2NoaXAgcG93ZXItbWFuYWdlbWVudC11bml0OgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgcG11IGlzIHVzZWQgdG8gdHVybiBvZmYgYW5kIG9uIGRpZmZlcmVudCBwb3dlciBkb21haW5zIG9mIHRoZSBTb0NzCitUaGlzIGluY2x1ZGVzIHRoZSBwb3dlciB0byB0aGUgQ1BVIGNvcmVzLgorCitSZXF1aXJlZCBub2RlIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgdmFsdWUgOiA9ICJyb2NrY2hpcCxyazMwNjYtcG11IjsKKy0gcmVnIDogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCB0aGUgc2l6ZSBvZiB0aGUgcmVnaXN0ZXJzIHdpbmRvdworCitFeGFtcGxlOgorCisJcG11QDIwMDA0MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJyb2NrY2hpcCxyazMwNjYtcG11IjsKKwkJcmVnID0gPDB4MjAwMDQwMDAgMHgxMDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3JvY2tjaGlwL3NtcC1zcmFtLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vcm9ja2NoaXAvc21wLXNyYW0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NDE2ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3JvY2tjaGlwL3NtcC1zcmFtLnR4dApAQCAtMCwwICsxLDMwIEBACitSb2NrY2hpcCBTUkFNIGZvciBzbXAgYnJpbmd1cDoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSb2NrY2hpcCdzIHNtcC1jYXBhYmxlIFNvQ3MgdXNlIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBzcmFtIGZvciB0aGUgYnJpbmd1cAorb2YgdGhlIGNvcmVzLiBPbmNlIHRoZSBjb3JlIGdldHMgcG93ZXJlZCB1cCBpdCBleGVjdXRlcyB0aGUgY29kZSB0aGF0IGlzCityZXNpZGluZyBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgb2YgdGhlIHNyYW0uCisKK1RoZXJlZm9yZSBhIHJlc2VydmVkIHNlY3Rpb24gc3ViLW5vZGUgaGFzIHRvIGJlIGFkZGVkIHRvIHRoZSBtbWlvLXNyYW0KK2RlY2xhcmF0aW9uLgorCitSZXF1aXJlZCBzdWItbm9kZSBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJyb2NrY2hpcCxyazMwNjYtc21wLXNyYW0iCisKK1RoZSByZXN0IG9mIHRoZSBwcm9wZXJ0aWVzIHNob3VsZCBmb2xsb3cgdGhlIGdlbmVyaWMgbW1pby1zcmFtIGRpc2NyaXB0aW9uCitmb3VuZCBpbiAuLi8uLi9taXNjL3NyYW0udHh0CisKK0V4YW1wbGU6CisKKwlzcmFtOiBzcmFtQDEwMDgwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJtbWlvLXNyYW0iOworCQlyZWcgPSA8MHgxMDA4MDAwMCAweDEwMDAwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQlyYW5nZXM7CisKKwkJc21wLXNyYW1AMTAwODAwMDAgeworCQkJY29tcGF0aWJsZSA9ICJyb2NrY2hpcCxyazMwNjYtc21wLXNyYW0iOworCQkJcmVnID0gPDB4MTAwODAwMDAgMHg1MD47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vcnRzbS1kY3NjYi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3J0c20tZGNzY2IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiOGZiZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3J0c20tZGNzY2IudHh0CkBAIC0wLDAgKzEsMTkgQEAKK0FSTSBEdWFsIENsdXN0ZXIgU3lzdGVtIENvbmZpZ3VyYXRpb24gQmxvY2sKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIER1YWwgQ2x1c3RlciBTeXN0ZW0gQ29uZmlndXJhdGlvbiBCbG9jayAoRENTQ0IpIHByb3ZpZGVzIGJhc2ljCitmdW5jdGlvbmFsaXR5IGZvciBjb250cm9sbGluZyBjbG9ja3MsIHJlc2V0cyBhbmQgY29uZmlndXJhdGlvbiBwaW5zIGluCit0aGUgRHVhbCBDbHVzdGVyIFN5c3RlbSBpbXBsZW1lbnRlZCBieSB0aGUgUmVhbC1UaW1lIFN5c3RlbSBNb2RlbCAoUlRTTSkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiYXJtLHJ0c20sZGNzY2IiCisKKy0gcmVnIDogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCB0aGUgc2l6ZSBvZiB0aGUgcmVnaXN0ZXJzIHdpbmRvdworCitFeGFtcGxlOgorCisJZGNzY2JANjAwMDAwMDAgeworCQljb21wYXRpYmxlID0gImFybSxydHNtLGRjc2NiIjsKKwkJcmVnID0gPDB4NjAwMDAwMDAgMHgxMDAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zYW1zdW5nL2V4eW5vcy1hZGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zYW1zdW5nL2V4eW5vcy1hZGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0NmNhOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3NhbXN1bmcvZXh5bm9zLWFkYy50eHQKQEAgLTAsMCArMSwxMDAgQEAKK1NhbXN1bmcgRXh5bm9zIEFuYWxvZyB0byBEaWdpdGFsIENvbnZlcnRlciBiaW5kaW5ncworCitUaGUgZGV2aWNldHJlZSBiaW5kaW5ncyBhcmUgZm9yIHRoZSBuZXcgQURDIGRyaXZlciB3cml0dGVuIGZvcgorRXh5bm9zNCBhbmQgdXB3YXJkIFNvQ3MgZnJvbSBTYW1zdW5nLgorCitOZXcgZHJpdmVyIGhhbmRsZXMgdGhlIGZvbGxvd2luZworMS4gU3VwcG9ydHMgQURDIElGIGZvdW5kIG9uIEVYWU5PUzQ0MTIvRVhZTk9TNTI1MAorICAgYW5kIGZ1dHVyZSBTb0NzIGZyb20gU2Ftc3VuZworMi4gQWRkIEFEQyBkcml2ZXIgdW5kZXIgaWlvL2FkYyBmcmFtZXdvcmsKKzMuIEFsc28gYWRkcyB0aGUgRG9jdW1lbnRhdGlvbiBmb3IgZGV2aWNlIHRyZWUgYmluZGluZ3MKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZToJCU11c3QgYmUgInNhbXN1bmcsZXh5bm9zLWFkYy12MSIKKwkJCQlmb3IgZXh5bm9zNDQxMi81MjUwIGFuZCBzNXB2MjEwIGNvbnRyb2xsZXJzLgorCQkJTXVzdCBiZSAic2Ftc3VuZyxleHlub3MtYWRjLXYyIiBmb3IKKwkJCQlmdXR1cmUgY29udHJvbGxlcnMuCisJCQlNdXN0IGJlICJzYW1zdW5nLGV4eW5vczMyNTAtYWRjIiBmb3IKKwkJCQljb250cm9sbGVycyBjb21wYXRpYmxlIHdpdGggQURDIG9mIEV4eW5vczMyNTAuCisJCQlNdXN0IGJlICJzYW1zdW5nLGV4eW5vczctYWRjIiBmb3IKKwkJCQl0aGUgQURDIGluIEV4eW5vczcgYW5kIGNvbXBhdGlibGVzCisJCQlNdXN0IGJlICJzYW1zdW5nLHMzYzI0MTAtYWRjIiBmb3IKKwkJCQl0aGUgQURDIGluIHMzYzI0MTAgYW5kIGNvbXBhdGlibGVzCisJCQlNdXN0IGJlICJzYW1zdW5nLHMzYzI0MTYtYWRjIiBmb3IKKwkJCQl0aGUgQURDIGluIHMzYzI0MTYgYW5kIGNvbXBhdGlibGVzCisJCQlNdXN0IGJlICJzYW1zdW5nLHMzYzI0NDAtYWRjIiBmb3IKKwkJCQl0aGUgQURDIGluIHMzYzI0NDAgYW5kIGNvbXBhdGlibGVzCisJCQlNdXN0IGJlICJzYW1zdW5nLHMzYzI0NDMtYWRjIiBmb3IKKwkJCQl0aGUgQURDIGluIHMzYzI0NDMgYW5kIGNvbXBhdGlibGVzCisJCQlNdXN0IGJlICJzYW1zdW5nLHMzYzY0MTAtYWRjIiBmb3IKKwkJCQl0aGUgQURDIGluIHMzYzY0MTAgYW5kIGNvbXBhdGlibGVzCistIHJlZzoJCQlMaXN0IG9mIEFEQyByZWdpc3RlciBhZGRyZXNzIHJhbmdlCisJCQktIFRoZSBiYXNlIGFkZHJlc3MgYW5kIHJhbmdlIG9mIEFEQyByZWdpc3RlcgorCQkJLSBUaGUgYmFzZSBhZGRyZXNzIGFuZCByYW5nZSBvZiBBRENfUEhZIHJlZ2lzdGVyIChldmVyeQorCQkJICBTb0MgZXhjZXB0IGZvciBzM2MyNHh4L3MzYzY0eHggQURDKQorLSBpbnRlcnJ1cHRzOiAJCUNvbnRhaW5zIHRoZSBpbnRlcnJ1cHQgaW5mb3JtYXRpb24gZm9yIHRoZSB0aW1lci4gVGhlCisJCQlmb3JtYXQgaXMgYmVpbmcgZGVwZW5kZW50IG9uIHdoaWNoIGludGVycnVwdCBjb250cm9sbGVyCisJCQl0aGUgU2Ftc3VuZyBkZXZpY2UgdXNlcy4KKy0gI2lvLWNoYW5uZWwtY2VsbHMgPSA8MT47IEFzIEFEQyBoYXMgbXVsdGlwbGUgb3V0cHV0cworLSBjbG9ja3MJCUZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmdzOiBoYW5kbGVzIHRvIGNsb2NrcyBzcGVjaWZpZWQKKwkJCWluICJjbG9jay1uYW1lcyIgcHJvcGVydHksIGluIHRoZSBzYW1lIG9yZGVyLgorLSBjbG9jay1uYW1lcwkJRnJvbSBjb21tb24gY2xvY2sgYmluZGluZ3M6IGxpc3Qgb2YgY2xvY2sgaW5wdXQgbmFtZXMKKwkJCXVzZWQgYnkgQURDIGJsb2NrOgorCQkJLSAiYWRjIiA6IEFEQyBidXMgY2xvY2sKKwkJCS0gInNjbGsiIDogQURDIHNwZWNpYWwgY2xvY2sgKG9ubHkgZm9yIEV4eW5vczMyNTAgYW5kCisJCQkJICAgY29tcGF0aWJsZSBBREMgYmxvY2spCistIHZkZC1zdXBwbHkJCVZERCBpbnB1dCBzdXBwbHkuCisKKy0gc2Ftc3VuZyxzeXNjb24tcGhhbmRsZSBDb250YWlucyB0aGUgUE1VIHN5c3RlbSBjb250cm9sbGVyIG5vZGUKKwkJCShUbyBhY2Nlc3MgdGhlIEFEQ19QSFkgcmVnaXN0ZXIgb24gRXh5bm9zNTI1MC81NDIwLzU4MDAvMzI1MCkKKworTm90ZTogY2hpbGQgbm9kZXMgY2FuIGJlIGFkZGVkIGZvciBhdXRvIHByb2JpbmcgZnJvbSBkZXZpY2UgdHJlZS4KKworRXhhbXBsZTogYWRkaW5nIGRldmljZSBpbmZvIGluIGR0c2kgZmlsZQorCithZGM6IGFkY0AxMkQxMDAwMCB7CisJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vcy1hZGMtdjEiOworCXJlZyA9IDwweDEyRDEwMDAwIDB4MTAwPjsKKwlpbnRlcnJ1cHRzID0gPDAgMTA2IDA+OworCSNpby1jaGFubmVsLWNlbGxzID0gPDE+OworCWlvLWNoYW5uZWwtcmFuZ2VzOworCisJY2xvY2tzID0gPCZjbG9jayAzMDM+OworCWNsb2NrLW5hbWVzID0gImFkYyI7CisKKwl2ZGQtc3VwcGx5ID0gPCZidWNrNV9yZWc+OworCXNhbXN1bmcsc3lzY29uLXBoYW5kbGUgPSA8JnBtdV9zeXN0ZW1fY29udHJvbGxlcj47Cit9OworCitFeGFtcGxlOiBhZGRpbmcgZGV2aWNlIGluZm8gaW4gZHRzaSBmaWxlIGZvciBFeHlub3MzMjUwIHdpdGggYWRkaXRpb25hbCBzY2xrCisKK2FkYzogYWRjQDEyNkMwMDAwIHsKKwljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zMzI1MC1hZGMiLCAic2Ftc3VuZyxleHlub3MtYWRjLXYyOworCXJlZyA9IDwweDEyNkMwMDAwIDB4MTAwPjsKKwlpbnRlcnJ1cHRzID0gPDAgMTM3IDA+OworCSNpby1jaGFubmVsLWNlbGxzID0gPDE+OworCWlvLWNoYW5uZWwtcmFuZ2VzOworCisJY2xvY2tzID0gPCZjbXUgQ0xLX1RTQURDPiwgPCZjbXUgQ0xLX1NDTEtfVFNBREM+OworCWNsb2NrLW5hbWVzID0gImFkYyIsICJzY2xrIjsKKworCXZkZC1zdXBwbHkgPSA8JmJ1Y2s1X3JlZz47CisJc2Ftc3VuZyxzeXNjb24tcGhhbmRsZSA9IDwmcG11X3N5c3RlbV9jb250cm9sbGVyPjsKK307CisKK0V4YW1wbGU6IEFkZGluZyBjaGlsZCBub2RlcyBpbiBkdHMgZmlsZQorCithZGNAMTJEMTAwMDAgeworCisJLyogTlRDIHRoZXJtaXN0b3IgaXMgYSBod21vbiBkZXZpY2UgKi8KKwluY3AxNXdiNDczQDAgeworCQljb21wYXRpYmxlID0gIm11cmF0YSxuY3AxNXdiNDczIjsKKwkJcHVsbHVwLXV2ID0gPDE4MDAwMDA+OworCQlwdWxsdXAtb2htID0gPDQ3MDAwPjsKKwkJcHVsbGRvd24tb2htID0gPDA+OworCQlpby1jaGFubmVscyA9IDwmYWRjIDQ+OworCX07Cit9OworCitOb3RlOiBEb2VzIG5vdCBhcHBseSB0byBBREMgZHJpdmVyIHVuZGVyIGFyY2gvYXJtL3BsYXQtc2Ftc3VuZy8KK05vdGU6IFRoZSBjaGlsZCBub2RlIGNhbiBiZSBhZGRlZCB1bmRlciB0aGUgYWRjIG5vZGUgb3Igc2VwYXJhdGVseS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vc2Ftc3VuZy9leHlub3MtY2hpcGlkLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vc2Ftc3VuZy9leHlub3MtY2hpcGlkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWM1ZGZkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zYW1zdW5nL2V4eW5vcy1jaGlwaWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1NBTVNVTkcgRXh5bm9zIFNvQ3MgQ2hpcGlkIGRyaXZlci4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBhdCBsZWFzdCBjb250YWluICJzYW1zdW5nLGV4eW5vczQyMTAtY2hpcGlkIi4KKworLSByZWc6IG9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQKKworRXhhbXBsZToKKwljaGlwaWRAMTAwMDAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNDIxMC1jaGlwaWQiOworCQlyZWcgPSA8MHgxMDAwMDAwMCAweDEwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vc2Ftc3VuZy9wbXUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zYW1zdW5nL3BtdS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ2MzU2ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vc2Ftc3VuZy9wbXUudHh0CkBAIC0wLDAgKzEsNjkgQEAKK1NBTVNVTkcgRXh5bm9zIFNvQyBzZXJpZXMgUE1VIFJlZ2lzdGVycworCitQcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZSA6IHNob3VsZCBjb250YWluIHR3byB2YWx1ZXMuIEZpcnN0IHZhbHVlIG11c3QgYmUgb25lIGZyb20gZm9sbG93aW5nIGxpc3Q6CisJCSAgIC0gInNhbXN1bmcsZXh5bm9zMzI1MC1wbXUiIC0gZm9yIEV4eW5vczMyNTAgU29DLAorCQkgICAtICJzYW1zdW5nLGV4eW5vczQyMTAtcG11IiAtIGZvciBFeHlub3M0MjEwIFNvQywKKwkJICAgLSAic2Ftc3VuZyxleHlub3M0MjEyLXBtdSIgLSBmb3IgRXh5bm9zNDIxMiBTb0MsCisJCSAgIC0gInNhbXN1bmcsZXh5bm9zNDQxMi1wbXUiIC0gZm9yIEV4eW5vczQ0MTIgU29DLAorCQkgICAtICJzYW1zdW5nLGV4eW5vczUyNTAtcG11IiAtIGZvciBFeHlub3M1MjUwIFNvQywKKwkJICAgLSAic2Ftc3VuZyxleHlub3M1MjYwLXBtdSIgLSBmb3IgRXh5bm9zNTI2MCBTb0MuCisJCSAgIC0gInNhbXN1bmcsZXh5bm9zNTQxMC1wbXUiIC0gZm9yIEV4eW5vczU0MTAgU29DLAorCQkgICAtICJzYW1zdW5nLGV4eW5vczU0MjAtcG11IiAtIGZvciBFeHlub3M1NDIwIFNvQy4KKwkJICAgLSAic2Ftc3VuZyxleHlub3M3LXBtdSIgLSBmb3IgRXh5bm9zNyBTb0MuCisJCXNlY29uZCB2YWx1ZSBtdXN0IGJlIGFsd2F5cyAic3lzY29uIi4KKworIC0gcmVnIDogb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldC4KKworIC0gI2Nsb2NrLWNlbGxzIDogbXVzdCBiZSA8MT4sIHNpbmNlIFBNVSByZXF1aXJlcyBvbmNlIGNlbGwgYXMgY2xvY2sgc3BlY2lmaWVyLgorCQlUaGUgc2luZ2xlIHNwZWNpZmllciBjZWxsIGlzIHVzZWQgYXMgaW5kZXggdG8gbGlzdCBvZiBjbG9ja3MKKwkJcHJvdmlkZWQgYnkgUE1VLCB3aGljaCBpcyBjdXJyZW50bHk6CisJCQkwIDogU29DIGNsb2NrIG91dHB1dCAoQ0xLT1VUIHBpbikKKworIC0gY2xvY2stbmFtZXMgOiBsaXN0IG9mIGNsb2NrIG5hbWVzIGZvciBwYXJ0aWN1bGFyIENMS09VVCBtdXggaW5wdXRzIGluCisJCWZvbGxvd2luZyBmb3JtYXQ6CisJCQkiY2xrb3V0TiIsIHdoZXJlIE4gaXMgYSBkZWNpbWFsIG51bWJlciBjb3JyZXNwb25kaW5nIHRvCisJCQlDTEtPVVQgbXV4IGNvbnRyb2wgYml0cyB2YWx1ZSBmb3IgZ2l2ZW4gaW5wdXQsIGUuZy4KKwkJCQkiY2xrb3V0MCIsICJjbGtvdXQ3IiwgImNsa291dDE1Ii4KKworIC0gY2xvY2tzIDogbGlzdCBvZiBwaGFuZGxlcyBhbmQgc3BlY2lmaWVycyB0byBhbGwgaW5wdXQgY2xvY2tzIGxpc3RlZCBpbgorCQljbG9jay1uYW1lcyBwcm9wZXJ0eS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworU29tZSBQTVVzIGFyZSBjYXBhYmxlIG9mIGJlaGF2aW5nIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyIChtb3N0bHkKK3RvIHdha2UgdXAgYSBzdXNwZW5kZWQgUE1VKS4gSW4gd2hpY2ggY2FzZSwgdGhleSBjYW4gaGF2ZSB0aGUKK2ZvbGxvd2luZyBwcm9wZXJ0aWVzOgorCistIGludGVycnVwdC1jb250cm9sbGVyOiBpbmRpY2F0ZSB0aGF0IHNhaWQgUE1VIGlzIGFuIGludGVycnVwdCBjb250cm9sbGVyCisKKy0gI2ludGVycnVwdC1jZWxsczogbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIHRoYXQgb2YgdGhlIHBhcmVudCBpbnRlcnJ1cHQKKyAgY29udHJvbGxlci4KKworLSBpbnRlcnJ1cHQtcGFyZW50OiBhIHBoYW5kbGUgaW5kaWNhdGluZyB3aGljaCBpbnRlcnJ1cHQgY29udHJvbGxlcgorICB0aGlzIFBNVSBzaWduYWxzIGludGVycnVwdHMgdG8uCisKK0V4YW1wbGUgOgorcG11X3N5c3RlbV9jb250cm9sbGVyOiBzeXN0ZW0tY29udHJvbGxlckAxMDA0MDAwMCB7CisJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczUyNTAtcG11IiwgInN5c2NvbiI7CisJcmVnID0gPDB4MTAwNDAwMDAgMHg1MDAwPjsKKwlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkjaW50ZXJydXB0LWNlbGxzID0gPDM+OworCWludGVycnVwdC1wYXJlbnQgPSA8JmdpYz47CisJI2Nsb2NrLWNlbGxzID0gPDE+OworCWNsb2NrLW5hbWVzID0gImNsa291dDAiLCAiY2xrb3V0MSIsICJjbGtvdXQyIiwgImNsa291dDMiLAorCQkJImNsa291dDQiLCAiY2xrb3V0OCIsICJjbGtvdXQ5IjsKKwljbG9ja3MgPSA8JmNsb2NrIENMS19PVVRfRE1DPiwgPCZjbG9jayBDTEtfT1VUX1RPUD4sCisJCTwmY2xvY2sgQ0xLX09VVF9MRUZUQlVTPiwgPCZjbG9jayBDTEtfT1VUX1JJR0hUQlVTPiwKKwkJPCZjbG9jayBDTEtfT1VUX0NQVT4sIDwmY2xvY2sgQ0xLX1hYVEk+LAorCQk8JmNsb2NrIENMS19YVVNCWFRJPjsKK307CisKK0V4YW1wbGUgb2YgY2xvY2sgY29uc3VtZXIgOgorCit1c2IzNTAzOiB1c2IzNTAzQDA4IHsKKwkvKiAuLi4gKi8KKwljbG9jay1uYW1lcyA9ICJyZWZjbGsiOworCWNsb2NrcyA9IDwmcG11X3N5c3RlbV9jb250cm9sbGVyIDA+OworCS8qIC4uLiAqLworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vc2Ftc3VuZy9zYW1zdW5nLWJvYXJkcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3NhbXN1bmcvc2Ftc3VuZy1ib2FyZHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMTI5YzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3NhbXN1bmcvc2Ftc3VuZy1ib2FyZHMudHh0CkBAIC0wLDAgKzEsNjkgQEAKKyogU2Ftc3VuZydzIEV4eW5vcyBTb0MgYmFzZWQgYm9hcmRzCisKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorICAgIC0gY29tcGF0aWJsZSA9IHNob3VsZCBiZSBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nLgorCS0gInNhbXN1bmcsbW9uayIJLSBmb3IgRXh5bm9zMzI1MC1iYXNlZCBTYW1zdW5nIFNpbWJhbmQgYm9hcmQuCisJLSAic2Ftc3VuZyxyaW5hdG8iCS0gZm9yIEV4eW5vczMyNTAtYmFzZWQgU2Ftc3VuZyBHZWFyMiBib2FyZC4KKwktICJzYW1zdW5nLHNtZGt2MzEwIgktIGZvciBFeHlub3M0MjEwLWJhc2VkIFNhbXN1bmcgU01ES1YzMTAgZXZhbCBib2FyZC4KKwktICJzYW1zdW5nLHRyYXRzIgktIGZvciBFeHlub3M0MjEwLWJhc2VkIFRpemVuIFJlZmVyZW5jZSBib2FyZC4KKwktICJzYW1zdW5nLHVuaXZlcnNhbF9jMjEwIiAtIGZvciBFeHlub3M0MjEwLWJhc2VkIFNhbXN1bmcgYm9hcmQuCisJLSAic2Ftc3VuZyxzbWRrNDQxMiIsCS0gZm9yIEV4eW5vczQ0MTItYmFzZWQgU2Ftc3VuZyBTTURLNDQxMiBldmFsIGJvYXJkLgorCS0gInNhbXN1bmcsdHJhdHMyIgktIGZvciBFeHlub3M0NDEyLWJhc2VkIFRpemVuIFJlZmVyZW5jZSBib2FyZC4KKwktICJzYW1zdW5nLHNtZGs1MjUwIgktIGZvciBFeHlub3M1MjUwLWJhc2VkIFNhbXN1bmcgU01ESzUyNTAgZXZhbCBib2FyZC4KKwktICJzYW1zdW5nLHh5cmVmNTI2MCIJLSBmb3IgRXh5bm9zNTI2MC1iYXNlZCBTYW1zdW5nIGJvYXJkLgorCS0gInNhbXN1bmcsc21kazU0MTAiCS0gZm9yIEV4eW5vczU0MTAtYmFzZWQgU2Ftc3VuZyBTTURLNTQxMCBldmFsIGJvYXJkLgorCS0gInNhbXN1bmcsc21kazU0MjAiCS0gZm9yIEV4eW5vczU0MjAtYmFzZWQgU2Ftc3VuZyBTTURLNTQyMCBldmFsIGJvYXJkLgorCS0gInNhbXN1bmcsc2Q1djEiCS0gZm9yIEV4eW5vczU0NDAtYmFzZWQgU2Ftc3VuZyBib2FyZC4KKwktICJzYW1zdW5nLHNzZGs1NDQwIgktIGZvciBFeHlub3M1NDQwLWJhc2VkIFNhbXN1bmcgYm9hcmQuCisKKyogT3RoZXIgY29tcGFuaWVzIEV4eW5vcyBTb0MgYmFzZWQKKyAgKiBGcmllbmRseUFSTQorCS0gImZyaWVuZGx5YXJtLHRpbnk0NDEyIiAgLSBmb3IgRXh5bm9zNDQxMi1iYXNlZCBGcmllbmRseUFSTQorCQkJCSAgICBUSU5ZNDQxMiBib2FyZC4KKworICAqIEdvb2dsZQorCS0gImdvb2dsZSxwaSIJCS0gZm9yIEV4eW5vczU4MDAtYmFzZWQgR29vZ2xlIFBlYWNoIFBpCisJCQkJICBSZXYgMTArIGJvYXJkLAorCSAgYWxzbzogImdvb2dsZSxwaS1yZXYxNiIsICJnb29nbGUscGktcmV2MTUiLCAiZ29vZ2xlLHBpLXJldjE0IiwKKwkJImdvb2dsZSxwaS1yZXYxMyIsICJnb29nbGUscGktcmV2MTIiLCAiZ29vZ2xlLHBpLXJldjExIiwKKwkJImdvb2dsZSxwaS1yZXYxMCIsICJnb29nbGUscGVhY2giLgorCisJLSAiZ29vZ2xlLHBpdCIJCS0gZm9yIEV4eW5vczU0MjAtYmFzZWQgR29vZ2xlIFBlYWNoIFBpdAorCQkJCSAgUmV2IDYrIChFeHlub3M1NDIwKSwKKwkgIGFsc286ICJnb29nbGUscGl0LXJldjE2IiwgImdvb2dsZSxwaXQtcmV2MTUiLCAiZ29vZ2xlLHBpdC1yZXYxNCIsCisJCSJnb29nbGUscGl0LXJldjEzIiwgImdvb2dsZSxwaXQtcmV2MTIiLCAiZ29vZ2xlLHBpdC1yZXYxMSIsCisJCSJnb29nbGUscGl0LXJldjEwIiwgImdvb2dsZSxwaXQtcmV2OSIsICJnb29nbGUscGl0LXJldjgiLAorCQkiZ29vZ2xlLHBpdC1yZXY3IiwgImdvb2dsZSxwaXQtcmV2NiIsICJnb29nbGUscGVhY2giLgorCisJLSAiZ29vZ2xlLHNub3ctcmV2NCIJLSBmb3IgRXh5bm9zNTI1MC1iYXNlZCBHb29nbGUgU25vdyBib2FyZCwKKwkgIGFsc286ICJnb29nbGUsc25vdyIKKwktICJnb29nbGUsc25vdy1yZXY1IgktIGZvciBFeHlub3M1MjUwLWJhc2VkIEdvb2dsZSBTbm93CisJCQkJICBSZXYgNSsgYm9hcmQuCisJLSAiZ29vZ2xlLHNwcmluZyIJLSBmb3IgRXh5bm9zNTI1MC1iYXNlZCBHb29nbGUgU3ByaW5nIGJvYXJkLgorCisgICogSGFyZGtlcm5lbAorCS0gImhhcmRrZXJuZWwsb2Ryb2lkLXUzIiAgLSBmb3IgRXh5bm9zNDQxMi1iYXNlZCBIYXJka2VybmVsIE9kcm9pZCBVMy4KKwktICJoYXJka2VybmVsLG9kcm9pZC14IiAgIC0gZm9yIEV4eW5vczQ0MTItYmFzZWQgSGFyZGtlcm5lbCBPZHJvaWQgWC4KKwktICJoYXJka2VybmVsLG9kcm9pZC14MiIgIC0gZm9yIEV4eW5vczQ0MTItYmFzZWQgSGFyZGtlcm5lbCBPZHJvaWQgWDIuCisJLSAiaGFyZGtlcm5lbCxvZHJvaWQteHUzIiAtIGZvciBFeHlub3M1NDIyLWJhc2VkIEhhcmRrZXJuZWwgT2Ryb2lkIFhVMy4KKwktICJoYXJka2VybmVsLG9kcm9pZC14dTMtbGl0ZSIgLSBmb3IgRXh5bm9zNTQyMi1iYXNlZCBIYXJka2VybmVsCisJCQkJCSBPZHJvaWQgWFUzIExpdGUgYm9hcmQuCisJLSAiaGFyZGtlcm5lbCxvZHJvaWQteHU0IiAtIGZvciBFeHlub3M1NDIyLWJhc2VkIEhhcmRrZXJuZWwgT2Ryb2lkIFhVNC4KKworICAqIEluc2lnbmFsCisJLSAiaW5zaWduYWwsYXJuZGFsZSIgICAgICAtIGZvciBFeHlub3M1MjUwLWJhc2VkIEluc2lnbmFsIEFybmRhbGUgYm9hcmQuCisJLSAiaW5zaWduYWwsYXJuZGFsZS1vY3RhIiAtIGZvciBFeHlub3M1NDIwLWJhc2VkIEluc2lnbmFsIEFybmRhbGUKKwkJCQkgICAgT2N0YSBib2FyZC4KKwktICJpbnNpZ25hbCxvcmlnZW4iICAgICAgIC0gZm9yIEV4eW5vczQyMTAtYmFzZWQgSW5zaWduYWwgT3JpZ2VuIGJvYXJkLgorCS0gImluc2lnbmFsLG9yaWdlbjQ0MTIgICAgLSBmb3IgRXh5bm9zNDQxMi1iYXNlZCBJbnNpZ25hbCBPcmlnZW4gYm9hcmQuCisKKworT3B0aW9uYWwgbm9kZXM6CisgICAgLSBmaXJtd2FyZSBub2RlLCBzcGVjaWZ5aW5nIHByZXNlbmNlIGFuZCB0eXBlIG9mIHNlY3VyZSBmaXJtd2FyZToKKyAgICAgICAgLSBjb21wYXRpYmxlOiBvbmx5ICJzYW1zdW5nLHNlY3VyZS1maXJtd2FyZSIgaXMgY3VycmVudGx5IHN1cHBvcnRlZAorICAgICAgICAtIHJlZzogYWRkcmVzcyBvZiBub24tc2VjdXJlIFNZU1JBTSB1c2VkIGZvciBjb21tdW5pY2F0aW9uIHdpdGggZmlybXdhcmUKKworCWZpcm13YXJlQDAyMDNGMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLHNlY3VyZS1maXJtd2FyZSI7CisJCXJlZyA9IDwweDAyMDNGMDAwIDB4MTAwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vc2Ftc3VuZy9zeXNyZWcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zYW1zdW5nL3N5c3JlZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZjZWQ2ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vc2Ftc3VuZy9zeXNyZWcudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1NBTVNVTkcgUzVQL0V4eW5vcyBTb0Mgc2VyaWVzIFN5c3RlbSBSZWdpc3RlcnMgKFNZU1JFRykKKworUHJvcGVydGllczoKKyAtIGNvbXBhdGlibGUgOiBzaG91bGQgY29udGFpbiB0d28gdmFsdWVzLiBGaXJzdCB2YWx1ZSBtdXN0IGJlIG9uZSBmcm9tIGZvbGxvd2luZyBsaXN0OgorCQktICJzYW1zdW5nLGV4eW5vczQtc3lzcmVnIiAtIGZvciBFeHlub3M0IGJhc2VkIFNvQ3MsCisJCS0gInNhbXN1bmcsZXh5bm9zNS1zeXNyZWciIC0gZm9yIEV4eW5vczUgYmFzZWQgU29Dcy4KKwkJc2Vjb25kIHZhbHVlIG11c3QgYmUgYWx3YXlzICJzeXNjb24iLgorIC0gcmVnIDogb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldC4KKworRXhhbXBsZToKKwlzeXNjb25AMTAwMTAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNC1zeXNyZWciLCAic3lzY29uIjsKKwkJcmVnID0gPDB4MTAwMTAwMDAgMHg0MDA+OworCX07CisKKwlzeXNjb25AMTAwNTAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNS1zeXNyZWciLCAic3lzY29uIjsKKwkJcmVnID0gPDB4MTAwNTAwMDAgMHg1MDAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zY3UudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zY3UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0NDc2ODAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3NjdS50eHQKQEAgLTAsMCArMSwyNSBAQAorKiBBUk0gU25vb3AgQ29udHJvbCBVbml0IChTQ1UpCisKK0FzIHBhcnQgb2YgdGhlIE1QQ29yZSBjb21wbGV4LCBDb3J0ZXgtQTUgYW5kIENvcnRleC1BOSBhcmUgcHJvdmlkZWQKK3dpdGggYSBTbm9vcCBDb250cm9sIFVuaXQuIFRoZSByZWdpc3RlciByYW5nZSBpcyB1c3VhbGx5IDI1NiAoMHgxMDApCitieXRlcy4KKworUmVmZXJlbmNlczoKKworLSBDb3J0ZXgtQTk6IHNlZSBEREkwNDA3RSBDb3J0ZXgtQTkgTVBDb3JlIFRlY2huaWNhbCBSZWZlcmVuY2UgTWFudWFsCisgIFJldmlzaW9uIHIycDAKKy0gQ29ydGV4LUE1OiBzZWUgRERJMDQzNEIgQ29ydGV4LUE1IE1QQ29yZSBUZWNobmljYWwgUmVmZXJlbmNlIE1hbnVhbAorICBSZXZpc2lvbiByMHAxCisKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZToKKwkiYXJtLGNvcnRleC1hOS1zY3UiCisJImFybSxjb3J0ZXgtYTUtc2N1IgorCistIHJlZyA6IFNwZWNpZnkgdGhlIGJhc2UgYWRkcmVzcyBhbmQgdGhlIHNpemUgb2YgdGhlIFNDVSByZWdpc3RlciB3aW5kb3cuCisKK0V4YW1wbGU6CisKK3NjdUBhMDQxMDAwMDAgeworCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hOS1zY3UiOworCXJlZyA9IDwweGEwNDEwMDAwIDB4MTAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3NobW9iaWxlLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vc2htb2JpbGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwYmI5MDAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3NobW9iaWxlLnR4dApAQCAtMCwwICsxLDYxIEBACitSZW5lc2FzIFNILU1vYmlsZSwgUi1Nb2JpbGUsIGFuZCBSLUNhciBQbGF0Zm9ybSBEZXZpY2UgVHJlZSBCaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU29DczoKKworICAtIEVtbWEgTW9iaWxlIEVWMgorICAgIGNvbXBhdGlibGUgPSAicmVuZXNhcyxlbWV2MiIKKyAgLSBSWi9BMUggKFI3UzcyMTAwKQorICAgIGNvbXBhdGlibGUgPSAicmVuZXNhcyxyN3M3MjEwMCIKKyAgLSBTSC1Nb2JpbGUgQUc1IChSOEE3M0EwMC9TSDczQTApCisgICAgY29tcGF0aWJsZSA9ICJyZW5lc2FzLHNoNzNhMCIKKyAgLSBSLU1vYmlsZSBBUEU2IChSOEE3M0E0MCkKKyAgICBjb21wYXRpYmxlID0gInJlbmVzYXMscjhhNzNhNCIKKyAgLSBSLU1vYmlsZSBBMSAoUjhBNzc0MDApCisgICAgY29tcGF0aWJsZSA9ICJyZW5lc2FzLHI4YTc3NDAiCisgIC0gUi1DYXIgTTFBIChSOEE3Nzc4MSkKKyAgICBjb21wYXRpYmxlID0gInJlbmVzYXMscjhhNzc3OCIKKyAgLSBSLUNhciBIMSAoUjhBNzc3OTApCisgICAgY29tcGF0aWJsZSA9ICJyZW5lc2FzLHI4YTc3NzkiCisgIC0gUi1DYXIgSDIgKFI4QTc3OTAwKQorICAgIGNvbXBhdGlibGUgPSAicmVuZXNhcyxyOGE3NzkwIgorICAtIFItQ2FyIE0yLVcgKFI4QTc3OTEwKQorICAgIGNvbXBhdGlibGUgPSAicmVuZXNhcyxyOGE3NzkxIgorICAtIFItQ2FyIFYySCAoUjhBNzc5MjApCisgICAgY29tcGF0aWJsZSA9ICJyZW5lc2FzLHI4YTc3OTIiCisgIC0gUi1DYXIgTTItTiAoUjhBNzc5MzApCisgICAgY29tcGF0aWJsZSA9ICJyZW5lc2FzLHI4YTc3OTMiCisgIC0gUi1DYXIgRTIgKFI4QTc3OTQwKQorICAgIGNvbXBhdGlibGUgPSAicmVuZXNhcyxyOGE3Nzk0IgorCisKK0JvYXJkczoKKworICAtIEFsdAorICAgIGNvbXBhdGlibGUgPSAicmVuZXNhcyxhbHQiLCAicmVuZXNhcyxyOGE3Nzk0IgorICAtIEFQRTYtRVZNCisgICAgY29tcGF0aWJsZSA9ICJyZW5lc2FzLGFwZTZldm0iLCAicmVuZXNhcyxyOGE3M2E0IgorICAtIEF0bWFyayBUZWNobm8gQXJtYWRpbGxvLTgwMCBFVkEKKyAgICBjb21wYXRpYmxlID0gInJlbmVzYXMsYXJtYWRpbGxvODAwZXZhIgorICAtIEJPQ0stVworICAgIGNvbXBhdGlibGUgPSAicmVuZXNhcyxib2NrdyIsICJyZW5lc2FzLHI4YTc3NzgiCisgIC0gR2VubWFpIChSVEs3NzIxMDBCQzAwMDAwQlIpCisgICAgY29tcGF0aWJsZSA9ICJyZW5lc2FzLGdlbm1haSIsICJyZW5lc2FzLHI3czcyMTAwIgorICAtIEdvc2UKKyAgICBjb21wYXRpYmxlID0gInJlbmVzYXMsZ29zZSIsICJyZW5lc2FzLHI4YTc3OTMiCisgIC0gSGVubmluZ2VyCisgICAgY29tcGF0aWJsZSA9ICJyZW5lc2FzLGhlbm5pbmdlciIsICJyZW5lc2FzLHI4YTc3OTEiCisgIC0gS29lbHNjaCAoUlRQMFJDNzc5MVNFQjAwMDEwUykKKyAgICBjb21wYXRpYmxlID0gInJlbmVzYXMsa29lbHNjaCIsICJyZW5lc2FzLHI4YTc3OTEiCisgIC0gS3lvdG8gTWljcm9jb21wdXRlciBDby4gS1pNLUE5LUR1YWwKKyAgICBjb21wYXRpYmxlID0gInJlbmVzYXMsa3ptOWQiLCAicmVuZXNhcyxlbWV2MiIKKyAgLSBLeW90byBNaWNyb2NvbXB1dGVyIENvLiBLWk0tQTktR1QKKyAgICBjb21wYXRpYmxlID0gInJlbmVzYXMsa3ptOWciLCAicmVuZXNhcyxzaDczYTAiCisgIC0gTGFnZXIgKFJUUDBSQzc3OTBTRUIwMDAxMFMpCisgICAgY29tcGF0aWJsZSA9ICJyZW5lc2FzLGxhZ2VyIiwgInJlbmVzYXMscjhhNzc5MCIKKyAgLSBNYXJ6ZW4KKyAgICBjb21wYXRpYmxlID0gInJlbmVzYXMsbWFyemVuIiwgInJlbmVzYXMscjhhNzc3OSIKKyAgLSBQb3J0ZXIgKE0yLUxDRFApCisgICAgY29tcGF0aWJsZSA9ICJyZW5lc2FzLHBvcnRlciIsICJyZW5lc2FzLHI4YTc3OTEiCisgIC0gU0lMSyAoUlRQMFJDNzc5NExDQjAwMDExUykKKyAgICBjb21wYXRpYmxlID0gInJlbmVzYXMsc2lsayIsICJyZW5lc2FzLHI4YTc3OTQiCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3NpcmYudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zaXJmLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjI4ZWU2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zaXJmLnR4dApAQCAtMCwwICsxLDExIEBACitDU1IgU2lSRnByaW1hSUkgYW5kIFNpUkZtYXJjbyBkZXZpY2UgdHJlZSBiaW5kaW5ncy4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgLSBjb21wYXRpYmxlOgorICAgIC0gInNpcmYsYXRsYXM2LWNiIiA6IGF0bGFzNiAiY2IiIGV2YWx1YXRpb24gYm9hcmQKKyAgICAtICJzaXJmLGF0bGFzNiIgOiBhdGxhczYgZGV2aWNlIGJhc2VkIGJvYXJkCisgICAgLSAic2lyZixhdGxhczctY2IiIDogYXRsYXM3ICJjYiIgZXZhbHVhdGlvbiBib2FyZAorICAgIC0gInNpcmYsYXRsYXM3IiA6IGF0bGFzNyBkZXZpY2UgYmFzZWQgYm9hcmQKKyAgICAtICJzaXJmLHByaW1hMi1jYiIgOiBwcmltYTIgImNiIiBldmFsdWF0aW9uIGJvYXJkCisgICAgLSAic2lyZixwcmltYTIiIDogcHJpbWEyIGRldmljZSBiYXNlZCBib2FyZApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zcDgxMC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3NwODEwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODA4ZmI1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zcDgxMC50eHQKQEAgLTAsMCArMSw0NiBAQAorU1A4MTAgU3lzdGVtIENvbnRyb2xsZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZToJc3RhbmRhcmQgY29tcGF0aWJsZSBzdHJpbmcgZm9yIGEgUHJpbWVjZWxsIHBlcmlwaGVyYWwsCisJCXNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3ByaW1lY2VsbC50eHQKKwkJZm9yIG1vcmUgZGV0YWlscworCQlzaG91bGQgYmU6ICJhcm0sc3A4MTAiLCAiYXJtLHByaW1lY2VsbCIKKworLSByZWc6CQlzdGFuZGFyZCByZWdpc3RlcnMgcHJvcGVydHksIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUKKwkJb2YgdGhlIGNvbnRyb2wgcmVnaXN0ZXJzCisKKy0gY2xvY2stbmFtZXM6CWZyb20gdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5ncywgZm9yIG1vcmUgZGV0YWlscyBzZWUKKwkJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dDsKKwkJc2hvdWxkIGJlOiAicmVmY2xrIiwgInRpbWNsayIsICJhcGJfcGNsayIKKworLSBjbG9ja3M6CWZyb20gdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5ncywgcGhhbmRsZSBhbmQgY2xvY2sKKwkJc3BlY2lmaWVyIHBhaXJzIGZvciB0aGUgZW50cmllcyBvZiBjbG9jay1uYW1lcyBwcm9wZXJ0eQorCistICNjbG9jay1jZWxsczogZnJvbSB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmdzOworCQlzaG91bGQgYmU6IDwxPgorCistIGNsb2NrLW91dHB1dC1uYW1lczogZnJvbSB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmdzOworCQlzaG91bGQgYmU6ICJ0aW1lcmNsa2VuMCIsICJ0aW1lcmNsa2VuMSIsICJ0aW1lcmNsa2VuMiIsICJ0aW1lcmNsa2VuMyIKKworLSBhc3NpZ25lZC1jbG9ja3M6IGZyb20gdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nOworCQlzaG91bGQgYmU6IGNsb2NrIHNwZWNpZmllciBmb3IgZWFjaCBvdXRwdXQgY2xvY2sgb2YgdGhpcworCQlwcm92aWRlciBub2RlCisKKy0gYXNzaWduZWQtY2xvY2stcGFyZW50czogZnJvbSB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmc7CisJCXNob3VsZCBiZTogcGhhbmRsZSBvZiBpbnB1dCBjbG9jayBsaXN0ZWQgaW4gY2xvY2tzCisJCXByb3BlcnR5IHdpdGggdGhlIGhpZ2hlc3QgZnJlcXVlbmN5CisKK0V4YW1wbGU6CisJdjJtX3N5c2N0bDogc3lzY3RsQDAyMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiYXJtLHNwODEwIiwgImFybSxwcmltZWNlbGwiOworCQlyZWcgPSA8MHgwMjAwMDAgMHgxMDAwPjsKKwkJY2xvY2tzID0gPCZ2Mm1fcmVmY2xrMzJraHo+LCA8JnYybV9yZWZjbGsxbWh6PiwgPCZzbWJjbGs+OworCQljbG9jay1uYW1lcyA9ICJyZWZjbGsiLCAidGltY2xrIiwgImFwYl9wY2xrIjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQljbG9jay1vdXRwdXQtbmFtZXMgPSAidGltZXJjbGtlbjAiLCAidGltZXJjbGtlbjEiLCAidGltZXJjbGtlbjIiLCAidGltZXJjbGtlbjMiOworCQlhc3NpZ25lZC1jbG9ja3MgPSA8JnYybV9zeXNjdGwgMD4sIDwmdjJtX3N5c2N0bCAxPiwgPCZ2Mm1fc3lzY3RsIDM+LCA8JnYybV9zeXNjdGwgMz47CisJCWFzc2lnbmVkLWNsb2NrLXBhcmVudHMgPSA8JnYybV9yZWZjbGsxbWh6PiwgPCZ2Mm1fcmVmY2xrMW1oej4sIDwmdjJtX3JlZmNsazFtaHo+LCA8JnYybV9yZWZjbGsxbWh6PjsKKworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3NwZWFyLW1pc2MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zcGVhci1taXNjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjY0OTgyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zcGVhci1taXNjLnR4dApAQCAtMCwwICsxLDkgQEAKK1NQRUFyIE1pc2MgY29uZmlndXJhdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09CitTUEVBciBTT0NzIGhhdmUgc29tZSBtaXNjZWxsYW5lb3VzIHJlZ2lzdGVycyB3aGljaCBhcmUgdXNlZCB0byBjb25maWd1cmUKK2ZldyBwcm9wZXJ0aWVzIG9mIGRpZmZlcmVudCBwZXJpcGhlcmFsIGNvbnRyb2xsZXJzLgorCittaXNjIG5vZGUgcmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIFNob3VsZCBiZQkic3Qsc3BlYXIxMzQwLW1pc2MiLCAic3lzY29uIi4KKy0gcmVnOiBBZGRyZXNzIHJhbmdlIG9mIG1pc2Mgc3BhY2UgdXB0byA4SwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zcGVhci10aW1lci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3NwZWFyLXRpbWVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDAxNzIyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zcGVhci10aW1lci50eHQKQEAgLTAsMCArMSwxOCBAQAorKiBTUEVBciBBUk0gVGltZXIKKworKiogVGltZXIgbm9kZSByZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiBTaG91bGQgYmU6CisJInN0LHNwZWFyLXRpbWVyIgorLSByZWc6IEFkZHJlc3MgcmFuZ2Ugb2YgdGhlIHRpbWVyIHJlZ2lzdGVycworLSBpbnRlcnJ1cHQtcGFyZW50OiBTaG91bGQgYmUgdGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlcgorICB0aGF0IHNlcnZpY2VzIGludGVycnVwdHMgZm9yIHRoaXMgZGV2aWNlCistIGludGVycnVwdDogU2hvdWxkIGNvbnRhaW4gdGhlIHRpbWVyIGludGVycnVwdCBudW1iZXIKKworRXhhbXBsZToKKworCXRpbWVyQGYwMDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzdCxzcGVhci10aW1lciI7CisJCXJlZyA9IDwweGYwMDAwMDAwIDB4NDAwPjsKKwkJaW50ZXJydXB0cyA9IDwyPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zcGVhci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3NwZWFyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDQyOTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zcGVhci50eHQKQEAgLTAsMCArMSwyNiBAQAorU1QgU1BFQXIgUGxhdGZvcm1zIERldmljZSBUcmVlIEJpbmRpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQm9hcmRzIHdpdGggdGhlIFNUIFNQRUFyNjAwIFNvQyBzaGFsbCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0eToKK2NvbXBhdGlibGUgPSAic3Qsc3BlYXI2MDAiOworCitCb2FyZHMgd2l0aCB0aGUgU1QgU1BFQXIzMDAgU29DIHNoYWxsIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnR5OgorY29tcGF0aWJsZSA9ICJzdCxzcGVhcjMwMCI7CisKK0JvYXJkcyB3aXRoIHRoZSBTVCBTUEVBcjMxMCBTb0Mgc2hhbGwgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydHk6Citjb21wYXRpYmxlID0gInN0LHNwZWFyMzEwIjsKKworQm9hcmRzIHdpdGggdGhlIFNUIFNQRUFyMzIwIFNvQyBzaGFsbCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0eToKK2NvbXBhdGlibGUgPSAic3Qsc3BlYXIzMjAiOworCitCb2FyZHMgd2l0aCB0aGUgU1QgU1BFQXIxMzEwIFNvQyBzaGFsbCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0eToKK2NvbXBhdGlibGUgPSAic3Qsc3BlYXIxMzEwIjsKKworQm9hcmRzIHdpdGggdGhlIFNUIFNQRUFyMTM0MCBTb0Mgc2hhbGwgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydHk6Citjb21wYXRpYmxlID0gInN0LHNwZWFyMTM0MCI7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3NwcmQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zcHJkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWE2MjlkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zcHJkLnR4dApAQCAtMCwwICsxLDExIEBACitTcHJlYWR0cnVtIFNvQyBQbGF0Zm9ybXMgRGV2aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU2hhcmtsNjQgaXMgYSBTcHJlYWR0cnVtJ3MgU29DIFBsYXRmb3JtIHdoaWNoIGlzIGJhc2VkCitvbiBBUk0gNjQtYml0IHByb2Nlc3Nvci4KKworU0M5ODM2IG9wZW5waG9uZSBib2FyZCB3aXRoIFNDOTgzNiBTb0MgYmFzZWQgb24gdGhlCitTaGFya2w2NCBQbGF0Zm9ybSBzaGFsbCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcy4KKworUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgICAgIC0gY29tcGF0aWJsZSA9ICJzcHJkLHNjOTgzNi1vcGVucGhvbmUiLCAic3ByZCxzYzk4MzYiOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zdGUtbm9tYWRpay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3N0ZS1ub21hZGlrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmRmZjVhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zdGUtbm9tYWRpay50eHQKQEAgLTAsMCArMSwzOCBAQAorU1QtRXJpY3Nzb24gTm9tYWRpayBEZXZpY2UgVHJlZSBCaW5kaW5ncworCitGb3IgdmFyaW91cyBib2FyZCB0aGUgImJvYXJkIiBub2RlIG1heSBjb250YWluIHNwZWNpZmljIHByb3BlcnRpZXMKK3RoYXQgcGVydGFpbiB0byB0aGlzIHBhcnRpY3VsYXIgYm9hcmQsIHN1Y2ggYXMgYm9hcmQtc3BlY2lmaWMgR1BJT3MuCisKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0eTogc3JjCistIE5vbWFkaWsgU3lzdGVtIGFuZCByZXNldCBjb250cm9sbGVyIHVzZWQgZm9yIGJhc2ljIGNoaXAgY29udHJvbCwgY2xvY2sKKyAgYW5kIHJlc2V0IGxpbmUgY29udHJvbC4KKy0gY29tcGF0aWJsZTogbXVzdCBiZSAic3Rlcmljc3Nvbixub21hZGlrLHNyYyIKKworQm9hcmRzIHdpdGggdGhlIE5vbWFkaWsgU29DIGluY2x1ZGU6CisKK05vbWFkaWsgTkhLLTE1IGJvYXJkIG1hbnVmYWN0dXJlZCBieSBTVCBNaWNyb2VsZWN0cm9uaWNzOgorCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydHk6CisKK2NvbXBhdGlibGU9InN0LG5vbWFkaWstbmhrLTE1IjsKKworUzg4MTUgIk1pbmlLaXQiIG1hbnVmYWN0dXJlZCBieSBDYWxhbyBTeXN0ZW1zOgorCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydHk6CisKK2NvbXBhdGlibGU9ImNhbGFvc3lzdGVtcyx1c2Itczg4MTUiOworCitSZXF1aXJlZCBub2RlOiB1c2Itczg4MTUKKworRXhhbXBsZToKKwordXNiLXM4ODE1IHsKKwkJZXRoZXJuZXQtZ3BpbyB7CisJCQlncGlvcyA9IDwmZ3BpbzMgMTkgMHgxPjsKKwkJCWludGVycnVwdHMgPSA8MTkgMHgxPjsKKwkJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8zPjsKKwkJfTsKKwkJbW1jc2QtZ3BpbyB7CisJCQlncGlvcyA9IDwmZ3BpbzMgMTYgMHgxPjsKKwkJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3N0ZS11MzAwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vc3RlLXUzMDAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMWQ4MDAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3N0ZS11MzAwLnR4dApAQCAtMCwwICsxLDQ2IEBACitTVC1Fcmljc3NvbiBVMzAwIERldmljZSBUcmVlIEJpbmRpbmdzCisKK0ZvciB2YXJpb3VzIGJvYXJkIHRoZSAiYm9hcmQiIG5vZGUgbWF5IGNvbnRhaW4gc3BlY2lmaWMgcHJvcGVydGllcwordGhhdCBwZXJ0YWluIHRvIHRoaXMgcGFydGljdWxhciBib2FyZCwgc3VjaCBhcyBib2FyZC1zcGVjaWZpYyBHUElPcworb3IgYm9hcmQgcG93ZXIgcmVndWxhdG9yIHN1cHBsaWVzLgorCitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydHk6CisKK2NvbXBhdGlibGU9InN0ZXJpY3Nzb24sdTMwMCI7CisKK1JlcXVpcmVkIG5vZGU6IHN5c2NvbgorVGhpcyBjb250YWlucyB0aGUgc3lzdGVtIGNvbnRyb2xsZXIuCistIGNvbXBhdGlibGU6IG11c3QgYmUgInN0ZXJpY3Nzb24sdTMwMC1zeXNjb24iLgorLSByZWc6IHRoZSBiYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIHN5c3RlbSBjb250cm9sbGVyLgorCitCb2FyZHMgd2l0aCB0aGUgVTMwMCBTb0MgaW5jbHVkZToKKworUzM2NSAiU21hbGwgQm9hcmQgVTM2NSI6CisKK1JlcXVpcmVkIG5vZGU6IHMzNjUKK1RoaXMgY29udGFpbnMgdGhlIGJvYXJkLXNwZWNpZmljIGluZm9ybWF0aW9uLgorLSBjb21wYXRpYmxlOiBtdXN0IGJlICJzdGVyaWNzc29uLHMzNjUiLgorLSB2YW5hMTUtc3VwcGx5OiB0aGUgcmVndWxhdG9yIHN1cHBseWluZyB0aGUgMS41ViB0byBkcml2ZSB0aGUKKyAgYm9hcmQuCistIHN5c2NvbjogYSBwb2ludGVyIHRvIHRoZSBzeXNjb24gbm9kZSBzbyB3ZSBjYW4gYWNjZXNzIHRoZQorICBzeXNjb24gcmVnaXN0ZXJzIHRvIHNldCB0aGUgYm9hcmQgYXMgc2VsZi1wb3dlcmVkLgorCitFeGFtcGxlOgorCisvIHsKKwltb2RlbCA9ICJTVC1Fcmljc3NvbiBVMzAwIjsKKwljb21wYXRpYmxlID0gInN0ZXJpY3Nzb24sdTMwMCI7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MT47CisKKwlzMzY1IHsKKwkJY29tcGF0aWJsZSA9ICJzdGVyaWNzc29uLHMzNjUiOworCQl2YW5hMTUtc3VwcGx5ID0gPCZhYjMxMDBfbGRvX2RfcmVnPjsKKwkJc3lzY29uID0gPCZzeXNjb24+OworCX07CisKKwlzeXNjb246IHN5c2NvbkBjMDAxMTAwMCB7CisJCWNvbXBhdGlibGUgPSAic3Rlcmljc3Nvbix1MzAwLXN5c2NvbiI7CisJCXJlZyA9IDwweGMwMDExMDAwIDB4MTAwMD47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3N0aS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3N0aS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQyN2Y2YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vc3RpLnR4dApAQCAtMCwwICsxLDIzIEBACitTVCBTVGkgUGxhdGZvcm1zIERldmljZSBUcmVlIEJpbmRpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQm9hcmRzIHdpdGggdGhlIFNUIFNUaUg0MTUgU29DIHNoYWxsIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnR5OgorY29tcGF0aWJsZSA9ICJzdCxzdGloNDE1IjsKKworQm9hcmRzIHdpdGggdGhlIFNUIFNUaUg0MTYgU29DIHNoYWxsIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnR5OgorY29tcGF0aWJsZSA9ICJzdCxzdGloNDE2IjsKKworQm9hcmRzIHdpdGggdGhlIFNUIFNUaUg0MDcgU29DIHNoYWxsIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnR5OgorY29tcGF0aWJsZSA9ICJzdCxzdGloNDA3IjsKKworQm9hcmRzIHdpdGggdGhlIFNUIFNUaUg0MTAgU29DIHNoYWxsIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnR5OgorY29tcGF0aWJsZSA9ICJzdCxzdGloNDEwIjsKKworQm9hcmRzIHdpdGggdGhlIFNUIFNUaUg0MTggU29DIHNoYWxsIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnR5OgorY29tcGF0aWJsZSA9ICJzdCxzdGloNDE4IjsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zdW54aS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3N1bnhpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjliMGZhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9zdW54aS50eHQKQEAgLTAsMCArMSwxNSBAQAorQWxsd2lubmVyIHN1blhpIFBsYXRmb3JtcyBEZXZpY2UgVHJlZSBCaW5kaW5ncworCitFYWNoIGRldmljZSB0cmVlIG11c3Qgc3BlY2lmeSB3aGljaCBBbGx3aW5uZXIgU29DIGl0IHVzZXMsCit1c2luZyBvbmUgb2YgdGhlIGZvbGxvd2luZyBjb21wYXRpYmxlIHN0cmluZ3M6CisKKyAgYWxsd2lubmVyLHN1bjRpLWExMAorICBhbGx3aW5uZXIsc3VuNWktYTEwcworICBhbGx3aW5uZXIsc3VuNWktYTEzCisgIGFsbHdpbm5lcixzdW41aS1yOAorICBhbGx3aW5uZXIsc3VuNmktYTMxCisgIGFsbHdpbm5lcixzdW43aS1hMjAKKyAgYWxsd2lubmVyLHN1bjhpLWEyMworICBhbGx3aW5uZXIsc3VuOGktYTMzCisgIGFsbHdpbm5lcixzdW44aS1oMworICBhbGx3aW5uZXIsc3VuOWktYTgwCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3RlZ3JhLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdGVncmEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczMjc4YzYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3RlZ3JhLnR4dApAQCAtMCwwICsxLDQxIEBACitOVklESUEgVGVncmEgZGV2aWNlIHRyZWUgYmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU29DcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFYWNoIGRldmljZSB0cmVlIG11c3Qgc3BlY2lmeSB3aGljaCBUZWdyYSBTb0MgaXQgdXNlcywgdXNpbmcgb25lIG9mIHRoZQorZm9sbG93aW5nIGNvbXBhdGlibGUgdmFsdWVzOgorCisgIG52aWRpYSx0ZWdyYTIwCisgIG52aWRpYSx0ZWdyYTMwCisKK0JvYXJkcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFYWNoIGRldmljZSB0cmVlIG11c3Qgc3BlY2lmeSB3aGljaCBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nCitib2FyZC1zcGVjaWZpYyBjb21wYXRpYmxlIHZhbHVlczoKKworICBhZCxtZWRjb20td2lkZQorICBhZCxwbHV0dXgKKyAgYWQsdGFtb250ZW4KKyAgYWQsdGVjCisgIGNvbXBhbCxwYXowMAorICBjb21wdWxhYix0cmltc2xpY2UKKyAgbnZpZGlhLGJlYXZlcgorICBudmlkaWEsY2FyZGh1CisgIG52aWRpYSxjYXJkaHUtYTAyCisgIG52aWRpYSxjYXJkaHUtYTA0CisgIG52aWRpYSxoYXJtb255CisgIG52aWRpYSxzZWFib2FyZAorICBudmlkaWEsdmVudGFuYQorICBudmlkaWEsd2hpc3RsZXIKKyAgdG9yYWRleCxhcGFsaXNfdDMwCisgIHRvcmFkZXgsYXBhbGlzX3QzMC1ldmFsCisgIHRvcmFkZXgsY29saWJyaV90MjAtNTEyCisgIHRvcmFkZXgsaXJpcworCitUcnVzdGVkIEZvdW5kYXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUZWdyYSBzdXBwb3J0cyB0aGUgVHJ1c3RlZCBGb3VuZGF0aW9uIHNlY3VyZSBtb25pdG9yLiBTZWUgdGhlCisidGxtLHRydXN0ZWQtZm91bmRhdGlvbnMiIGJpbmRpbmcncyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3RlZ3JhL252aWRpYSxudmVjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdGVncmEvbnZpZGlhLG52ZWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhZTYwMWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3RlZ3JhL252aWRpYSxudmVjLnR4dApAQCAtMCwwICsxLDIxIEBACitOVklESUEgY29tcGxpYW50IGVtYmVkZGVkIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAibnZpZGlhLG52ZWMiLgorLSByZWcgOiB0aGUgaW9tZW0gb2YgdGhlIGkyYyBzbGF2ZSBjb250cm9sbGVyCistIGludGVycnVwdHMgOiB0aGUgaW50ZXJydXB0IGxpbmUgb2YgdGhlIGkyYyBzbGF2ZSBjb250cm9sbGVyCistIGNsb2NrLWZyZXF1ZW5jeSA6IHRoZSBmcmVxdWVuY3kgb2YgdGhlIGkyYyBidXMKKy0gZ3Bpb3MgOiB0aGUgZ3BpbyB1c2VkIGZvciBlYyByZXF1ZXN0CistIHNsYXZlLWFkZHI6IHRoZSBpMmMgYWRkcmVzcyBvZiB0aGUgc2xhdmUgY29udHJvbGxlcgorLSBjbG9ja3MgOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCisgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorLSBjbG9jay1uYW1lcyA6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIFRlZ3JhMjAvVGVncmEzMDoKKyAgLSBkaXYtY2xrCisgIC0gZmFzdC1jbGsKKyAgVGVncmExMTQ6CisgIC0gZGl2LWNsaworLSByZXNldHMgOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gcmVzZXQtbmFtZXMuCisgIFNlZSAuLi9yZXNldC9yZXNldC50eHQgZm9yIGRldGFpbHMuCistIHJlc2V0LW5hbWVzIDogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgLSBpMmMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdGVncmEvbnZpZGlhLHRlZ3JhMjAtYWhiLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdGVncmEvbnZpZGlhLHRlZ3JhMjAtYWhiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTQyOTViCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS90ZWdyYS9udmlkaWEsdGVncmEyMC1haGIudHh0CkBAIC0wLDAgKzEsMTcgQEAKK05WSURJQSBUZWdyYSBBSEIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IEZvciBUZWdyYTIwLCBtdXN0IGNvbnRhaW4gIm52aWRpYSx0ZWdyYTIwLWFoYiIuICBGb3IKKyAgVGVncmEzMCwgbXVzdCBjb250YWluICJudmlkaWEsdGVncmEzMC1haGIiLiAgT3RoZXJ3aXNlLCBtdXN0IGNvbnRhaW4KKyAgJyJudmlkaWEsPGNoaXA+LWFoYiIsICJudmlkaWEsdGVncmEzMC1haGIiJyB3aGVyZSA8Y2hpcD4gaXMgdGVncmExMjQsCisgIHRlZ3JhMTMyLCBvciB0ZWdyYTIxMC4KKy0gcmVnIDogU2hvdWxkIGNvbnRhaW4gMSByZWdpc3RlciByYW5nZXMoYWRkcmVzcyBhbmQgbGVuZ3RoKS4gIEZvcgorICBUZWdyYTIwLCBUZWdyYTMwLCBhbmQgVGVncmExMTQgY2hpcHMsIHRoZSB2YWx1ZSBtdXN0IGJlIDwweDYwMDBjMDA0CisgIDB4MTBjPi4gIEZvciBUZWdyYTEyNCwgVGVncmExMzIgYW5kIFRlZ3JhMjEwIGNoaXBzLCB0aGUgdmFsdWUgc2hvdWxkCisgIGJlIGJlIDwweDYwMDBjMDAwIDB4MTUwPi4KKworRXhhbXBsZSAoZm9yIGEgVGVncmEyMCBjaGlwKToKKwlhaGI6IGFoYkA2MDAwYzAwNCB7CisJCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMjAtYWhiIjsKKwkJcmVnID0gPDB4NjAwMGMwMDQgMHgxMGM+OyAvKiBBSEIgQXJiaXRyYXRpb24gKyBHaXptbyBDb250cm9sbGVyICovCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdGVncmEvbnZpZGlhLHRlZ3JhMjAtZW1jLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdGVncmEvbnZpZGlhLHRlZ3JhMjAtZW1jLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzMzYjI5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS90ZWdyYS9udmlkaWEsdGVncmEyMC1lbWMudHh0CkBAIC0wLDAgKzEsMTAwIEBACitFbWJlZGRlZCBNZW1vcnkgQ29udHJvbGxlcgorCitQcm9wZXJ0aWVzOgorLSBuYW1lIDogU2hvdWxkIGJlIGVtYworLSAjYWRkcmVzcy1jZWxscyA6IFNob3VsZCBiZSAxCistICNzaXplLWNlbGxzIDogU2hvdWxkIGJlIDAKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBjb250YWluICJudmlkaWEsdGVncmEyMC1lbWMiLgorLSByZWcgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistIG52aWRpYSx1c2UtcmFtLWNvZGUgOiBJZiBwcmVzZW50LCB0aGUgc3ViLW5vZGVzIHdpbGwgYmUgYWRkcmVzc2VkCisgIGFuZCBjaG9zZW4gdXNpbmcgdGhlIHJhbWNvZGUgYm9hcmQgc2VsZWN0b3IuIElmIG9taXR0ZWQsIG9ubHkgb25lCisgIHNldCBvZiB0YWJsZXMgY2FuIGJlIHByZXNlbnQgYW5kIHNhaWQgdGFibGVzIHdpbGwgYmUgdXNlZAorICBpcnJlc3BlY3RpdmUgb2YgcmFtLWNvZGUgY29uZmlndXJhdGlvbi4KKworQ2hpbGQgZGV2aWNlIG5vZGVzIGRlc2NyaWJlIHRoZSBtZW1vcnkgc2V0dGluZ3MgZm9yIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyBhbmQgY2xvY2sgcmF0ZXMuCisKK0V4YW1wbGU6CisKKwltZW1vcnktY29udHJvbGxlckA3MDAwZjQwMCB7CisJCSNhZGRyZXNzLWNlbGxzID0gPCAxID47CisJCSNzaXplLWNlbGxzID0gPCAwID47CisJCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMjAtZW1jIjsKKwkJcmVnID0gPDB4NzAwMGY0MDAwIDB4MjAwPjsKKwl9CisKKworRW1iZWRkZWQgTWVtb3J5IENvbnRyb2xsZXIgcmFtLWNvZGUgdGFibGUKKworSWYgdGhlIGVtYyBub2RlIGhhcyB0aGUgbnZpZGlhLHVzZS1yYW0tY29kZSBwcm9wZXJ0eSBwcmVzZW50LCB0aGVuIHRoZQorbmV4dCBsZXZlbCBvZiBub2RlcyBiZWxvdyB0aGUgZW1jIHRhYmxlIGFyZSB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggc2V0dGluZ3MKK2FwcGx5IGZvciB3aGljaCByYW0tY29kZSBzZXR0aW5ncy4KKworSWYgdGhlIGVtYyBub2RlIGxhY2tzIHRoZSBudmlkaWEsdXNlLXJhbS1jb2RlIHByb3BlcnR5LCB0aGlzIGxldmVsIGlzIG9taXR0ZWQKK2FuZCB0aGUgdGFibGVzIGFyZSBzdG9yZWQgZGlyZWN0bHkgdW5kZXIgdGhlIGVtYyBub2RlIChzZWUgYmVsb3cpLgorCitQcm9wZXJ0aWVzOgorCistIG5hbWUgOiBTaG91bGQgYmUgZW1jLXRhYmxlcworLSBudmlkaWEscmFtLWNvZGUgOiB0aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHRoZSByYW0tY29kZSBib2FyZCBzdHJhcHBpbmdzCisgIGZvciB3aGljaCB0aGlzIG5vZGUgKGFuZCBjaGlsZHJlbikgYXJlIHZhbGlkLgorCisKKworRW1iZWRkZWQgTWVtb3J5IENvbnRyb2xsZXIgY29uZmlndXJhdGlvbiB0YWJsZQorCitUaGlzIGlzIGEgdGFibGUgY29udGFpbmluZyB0aGUgRU1DIHJlZ2lzdGVyIHNldHRpbmdzIGZvciB0aGUgdmFyaW91cworb3BlcmF0aW5nIHNwZWVkcyBvZiB0aGUgbWVtb3J5IGNvbnRyb2xsZXIuIFRoZXkgYXJlIGFsd2F5cyBsb2NhdGVkIGFzCitzdWJub2RlcyBvZiB0aGUgZW1jIGNvbnRyb2xsZXIgbm9kZS4KKworVGhlcmUgYXJlIHR3byB3YXlzIG9mIHNwZWNpZnlpbmcgd2hpY2ggdGFibGVzIHRvIHVzZToKKworKiBUaGUgc2ltcGxlc3QgaXMgaWYgdGhlcmUgaXMganVzdCBvbmUgc2V0IG9mIHRhYmxlcyBpbiB0aGUgZGV2aWNlIHRyZWUsCisgIGFuZCB0aGV5IHdpbGwgYWx3YXlzIGJlIHVzZWQgKGJhc2VkIG9uIHdoaWNoIGZyZXF1ZW5jeSBpcyB1c2VkKS4KKyAgVGhpcyBpcyB0aGUgcHJlZmVycmVkIG1ldGhvZCwgZXNwZWNpYWxseSB3aGVuIGZpcm13YXJlIGNhbiBmaWxsIGluCisgIHRoaXMgaW5mb3JtYXRpb24gYmFzZWQgb24gdGhlIHNwZWNpZmljIHN5c3RlbSBpbmZvcm1hdGlvbiBhbmQganVzdAorICBwYXNzIGl0IG9uIHRvIHRoZSBrZXJuZWwuCisKKyogVGhlIHNsaWdodGx5IG1vcmUgY29tcGxleCBvbmUgaXMgd2hlbiBtb3JlIHRoYW4gb25lIG1lbW9yeSBjb25maWd1cmF0aW9uCisgIG1pZ2h0IGV4aXN0IG9uIHRoZSBzeXN0ZW0uICBUaGUgVGVncmEyMCBwbGF0Zm9ybSBoYW5kbGVzIHRoaXMgZHVyaW5nCisgIGVhcmx5IGJvb3QgYnkgc2VsZWN0aW5nIG9uZSBvdXQgb2YgcG9zc2libGUgNCBtZW1vcnkgc2V0dGluZ3MgYmFzZWQKKyAgb24gYSAyLXBpbiAicmFtIGNvZGUiIGJvb3RzdHJhcCBzZXR0aW5nIG9uIHRoZSBib2FyZC4gVGhlIHZhbHVlcyBvZgorICB0aGVzZSBzdHJhcHBpbmdzIGNhbiBiZSByZWFkIHRocm91Z2ggYSByZWdpc3RlciBpbiB0aGUgU29DLCBhbmQgdGh1cworICB1c2VkIHRvIHNlbGVjdCB3aGljaCB0YWJsZXMgdG8gdXNlLgorCitQcm9wZXJ0aWVzOgorLSBuYW1lIDogU2hvdWxkIGJlIGVtYy10YWJsZQorLSBjb21wYXRpYmxlIDogU2hvdWxkIGNvbnRhaW4gIm52aWRpYSx0ZWdyYTIwLWVtYy10YWJsZSIuCistIHJlZyA6IGVpdGhlciBhbiBvcGFxdWUgZW51bWVyYXRvciB0byB0ZWxsIGRpZmZlcmVudCB0YWJsZXMgYXBhcnQsIG9yCisgIHRoZSB2YWxpZCBmcmVxdWVuY3kgZm9yIHdoaWNoIHRoZSB0YWJsZSBzaG91bGQgYmUgdXNlZCAoaW4ga0h6KS4KKy0gY2xvY2stZnJlcXVlbmN5IDogdGhlIGNsb2NrIGZyZXF1ZW5jeSBmb3IgdGhlIEVNQyBhdCB3aGljaCB0aGlzCisgIHRhYmxlIHNob3VsZCBiZSB1c2VkIChpbiBrSHopLgorLSBudmlkaWEsZW1jLXJlZ2lzdGVycyA6IGEgNDYgd29yZCBhcnJheSBvZiBFTUMgcmVnaXN0ZXJzIHRvIGJlIHByb2dyYW1tZWQKKyAgZm9yIG9wZXJhdGlvbiBhdCB0aGUgJ2Nsb2NrLWZyZXF1ZW5jeScgc2V0dGluZy4KKyAgVGhlIG9yZGVyIGFuZCBjb250ZW50cyBvZiB0aGUgcmVnaXN0ZXJzIGFyZToKKyAgICBSQywgUkZDLCBSQVMsIFJQLCBSMlcsIFcyUiwgUjJQLCBXMlAsIFJEX1JDRCwgV1JfUkNELCBSUkQsIFJFWFQsCisgICAgV0RWLCBRVVNFLCBRUlNULCBRU0FGRSwgUkRWLCBSRUZSRVNILCBCVVJTVF9SRUZSRVNIX05VTSwgUERFWDJXUiwKKyAgICBQREVYMlJELCBQQ0hHMlBERU4sIEFDVDJQREVOLCBBUjJQREVOLCBSVzJQREVOLCBUWFNSLCBUQ0tFLCBURkFXLAorICAgIFRSUEFCLCBUQ0xLU1RBQkxFLCBUQ0xLU1RPUCwgVFJFRkJXLCBRVVNFX0VYVFJBLCBGQklPX0NGRzYsIE9EVF9XUklURSwKKyAgICBPRFRfUkVBRCwgRkJJT19DRkc1LCBDRkdfRElHX0RMTCwgRExMX1hGT1JNX0RRUywgRExMX1hGT1JNX1FVU0UsCisgICAgWkNBTF9SRUZfQ05ULCBaQ0FMX1dBSVRfQ05ULCBBVVRPX0NBTF9JTlRFUlZBTCwgQ0ZHX0NMS1RSSU1fMCwKKyAgICBDRkdfQ0xLVFJJTV8xLCBDRkdfQ0xLVFJJTV8yCisKKwkJZW1jLXRhYmxlQDE2NjAwMCB7CisJCQlyZWcgPSA8MTY2MDAwPjsKKwkJCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMjAtZW1jLXRhYmxlIjsKKwkJCWNsb2NrLWZyZXF1ZW5jeSA9IDwgMTY2MDAwID47CisJCQludmlkaWEsZW1jLXJlZ2lzdGVycyA9IDwgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwCisJCQkJCQkgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwCisJCQkJCQkgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwCisJCQkJCQkgMCAwIDAgMCA+OworCQl9OworCisJCWVtYy10YWJsZUAzMzMwMDAgeworCQkJcmVnID0gPDMzMzAwMD47CisJCQljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTIwLWVtYy10YWJsZSI7CisJCQljbG9jay1mcmVxdWVuY3kgPSA8IDMzMzAwMCA+OworCQkJbnZpZGlhLGVtYy1yZWdpc3RlcnMgPSA8IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMAorCQkJCQkJIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMAorCQkJCQkJIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMAorCQkJCQkJIDAgMCAwIDAgPjsKKwkJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdGVncmEvbnZpZGlhLHRlZ3JhMjAtZmxvd2N0cmwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS90ZWdyYS9udmlkaWEsdGVncmEyMC1mbG93Y3RybC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NmMGFkZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdGVncmEvbnZpZGlhLHRlZ3JhMjAtZmxvd2N0cmwudHh0CkBAIC0wLDAgKzEsMTIgQEAKK05WSURJQSBUZWdyYSBGbG93IENvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJudmlkaWEsdGVncmE8Y2hpcD4tZmxvd2N0cmwiCistIHJlZzogU2hvdWxkIGNvbnRhaW4gb25lIHJlZ2lzdGVyIHJhbmdlIChhZGRyZXNzIGFuZCBsZW5ndGgpCisKK0V4YW1wbGU6CisKKwlmbG93LWNvbnRyb2xsZXJANjAwMDcwMDAgeworCQljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTIwLWZsb3djdHJsIjsKKwkJcmVnID0gPDB4NjAwMDcwMDAgMHgxMDAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS90ZWdyYS9udmlkaWEsdGVncmEyMC1tYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3RlZ3JhL252aWRpYSx0ZWdyYTIwLW1jLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjZkOTM0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS90ZWdyYS9udmlkaWEsdGVncmEyMC1tYy50eHQKQEAgLTAsMCArMSwxNiBAQAorTlZJRElBIFRlZ3JhMjAgTUMoTWVtb3J5IENvbnRyb2xsZXIpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAibnZpZGlhLHRlZ3JhMjAtbWMiCistIHJlZyA6IFNob3VsZCBjb250YWluIDIgcmVnaXN0ZXIgcmFuZ2VzKGFkZHJlc3MgYW5kIGxlbmd0aCk7IHNlZSB0aGUKKyAgZXhhbXBsZSBiZWxvdy4gTm90ZSB0aGF0IHRoZSBNQyByZWdpc3RlcnMgYXJlIGludGVybGVhdmVkIHdpdGggdGhlCisgIEdBUlQgcmVnaXN0ZXJzLCBhbmQgaGVuY2UgbXVzdCBiZSByZXByZXNlbnRlZCBhcyBtdWx0aXBsZSByYW5nZXMuCistIGludGVycnVwdHMgOiBTaG91bGQgY29udGFpbiBNQyBHZW5lcmFsIGludGVycnVwdC4KKworRXhhbXBsZToKKwltZW1vcnktY29udHJvbGxlckAweDcwMDBmMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJudmlkaWEsdGVncmEyMC1tYyI7CisJCXJlZyA9IDwweDcwMDBmMDAwIDB4MDI0CisJCSAgICAgICAweDcwMDBmMDNjIDB4M2M0PjsKKwkJaW50ZXJydXB0cyA9IDwwIDc3IDB4MDQ+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3RlZ3JhL252aWRpYSx0ZWdyYTIwLXBtYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3RlZ3JhL252aWRpYSx0ZWdyYTIwLXBtYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJjMjcwMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdGVncmEvbnZpZGlhLHRlZ3JhMjAtcG1jLnR4dApAQCAtMCwwICsxLDExNSBAQAorTlZJRElBIFRlZ3JhIFBvd2VyIE1hbmFnZW1lbnQgQ29udHJvbGxlciAoUE1DKQorCitUaGUgUE1DIGJsb2NrIGludGVyYWN0cyB3aXRoIGFuIGV4dGVybmFsIFBvd2VyIE1hbmFnZW1lbnQgVW5pdC4gVGhlIFBNQworbW9zdGx5IGNvbnRyb2xzIHRoZSBlbnRyeSBhbmQgZXhpdCBvZiB0aGUgc3lzdGVtIGZyb20gZGlmZmVyZW50IHNsZWVwCittb2Rlcy4gSXQgcHJvdmlkZXMgcG93ZXItZ2F0aW5nIGNvbnRyb2xsZXJzIGZvciBTb0MgYW5kIENQVSBwb3dlci1pc2xhbmRzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBuYW1lIDogU2hvdWxkIGJlIHBtYworLSBjb21wYXRpYmxlIDogRm9yIFRlZ3JhMjAsIG11c3QgY29udGFpbiAibnZpZGlhLHRlZ3JhMjAtcG1jIi4gIEZvciBUZWdyYTMwLAorICBtdXN0IGNvbnRhaW4gIm52aWRpYSx0ZWdyYTMwLXBtYyIuICBGb3IgVGVncmExMTQsIG11c3QgY29udGFpbgorICAibnZpZGlhLHRlZ3JhMTE0LXBtYyIuICBGb3IgVGVncmExMjQsIG11c3QgY29udGFpbiAibnZpZGlhLHRlZ3JhMTI0LXBtYyIuCisgIE90aGVyd2lzZSwgbXVzdCBjb250YWluICJudmlkaWEsPGNoaXA+LXBtYyIsIHBsdXMgYXQgbGVhc3Qgb25lIG9mIHRoZQorICBhYm92ZSwgd2hlcmUgPGNoaXA+IGlzIHRlZ3JhMTMyLgorLSByZWcgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistIGNsb2NrcyA6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKyAgU2VlIC4uL2Nsb2Nrcy9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCistIGNsb2NrLW5hbWVzIDogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgInBjbGsiIChUaGUgVGVncmEgY2xvY2sgb2YgdGhhdCBuYW1lKSwKKyAgImNsazMya19pbiIgKFRoZSAzMktIeiBjbG9jayBpbnB1dCB0byBUZWdyYSkuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIG52aWRpYSxpbnZlcnQtaW50ZXJydXB0IDogSWYgcHJlc2VudCwgaW52ZXJ0cyB0aGUgUE1VIGludGVycnVwdCBzaWduYWwuCisgIFRoZSBQTVUgaXMgYW4gZXh0ZXJuYWwgUG93ZXIgTWFuYWdlbWVudCBVbml0LCB3aG9zZSBpbnRlcnJ1cHQgb3V0cHV0CisgIHNpZ25hbCBpcyBmZWQgaW50byB0aGUgUE1DLiBUaGlzIHNpZ25hbCBpcyBvcHRpb25hbGx5IGludmVydGVkLCBhbmQgdGhlbgorICBmZWQgaW50byB0aGUgQVJNIEdJQy4gVGhlIFBNQyBpcyBub3QgaW52b2x2ZWQgaW4gdGhlIGRldGVjdGlvbiBvcgorICBoYW5kbGluZyBvZiB0aGlzIGludGVycnVwdCBzaWduYWwsIG1lcmVseSBpdHMgaW52ZXJzaW9uLgorLSBudmlkaWEsc3VzcGVuZC1tb2RlIDogVGhlIHN1c3BlbmQgbW9kZSB0aGF0IHRoZSBwbGF0Zm9ybSBzaG91bGQgdXNlLgorICBWYWxpZCB2YWx1ZXMgYXJlIDAsIDEgYW5kIDI6CisgIDAgKExQMCk6IENQVSArIENvcmUgdm9sdGFnZSBvZmYgYW5kIERSQU0gaW4gc2VsZi1yZWZyZXNoCisgIDEgKExQMSk6IENQVSB2b2x0YWdlIG9mZiBhbmQgRFJBTSBpbiBzZWxmLXJlZnJlc2gKKyAgMiAoTFAyKTogQ1BVIHZvbHRhZ2Ugb2ZmCistIG52aWRpYSxjb3JlLXBvd2VyLXJlcS1hY3RpdmUtaGlnaCA6IEJvb2xlYW4sIGNvcmUgcG93ZXIgcmVxdWVzdCBhY3RpdmUtaGlnaAorLSBudmlkaWEsc3lzLWNsb2NrLXJlcS1hY3RpdmUtaGlnaCA6IEJvb2xlYW4sIHN5c3RlbSBjbG9jayByZXF1ZXN0IGFjdGl2ZS1oaWdoCistIG52aWRpYSxjb21iaW5lZC1wb3dlci1yZXEgOiBCb29sZWFuLCBjb21iaW5lZCBwb3dlciByZXF1ZXN0IGZvciBDUFUgJiBDb3JlCistIG52aWRpYSxjcHUtcHdyLWdvb2QtZW4gOiBCb29sZWFuLCBDUFUgcG93ZXIgZ29vZCBzaWduYWwgKGZyb20gUE1JQyB0byBQTUMpCisJCQkgICBpcyBlbmFibGVkLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIHdoZW4gbnZpZGlhLHN1c3BlbmQtbW9kZSBpcyBzcGVjaWZpZWQ6CistIG52aWRpYSxjcHUtcHdyLWdvb2QtdGltZSA6IENQVSBwb3dlciBnb29kIHRpbWUgaW4gdVMuCistIG52aWRpYSxjcHUtcHdyLW9mZi10aW1lIDogQ1BVIHBvd2VyIG9mZiB0aW1lIGluIHVTLgorLSBudmlkaWEsY29yZS1wd3ItZ29vZC10aW1lIDogPE9zY2lsbGF0b3Itc3RhYmxlLXRpbWUgUG93ZXItc3RhYmxlLXRpbWU+CisJCQkgICAgICBDb3JlIHBvd2VyIGdvb2QgdGltZSBpbiB1Uy4KKy0gbnZpZGlhLGNvcmUtcHdyLW9mZi10aW1lIDogQ29yZSBwb3dlciBvZmYgdGltZSBpbiB1Uy4KKworUmVxdWlyZWQgcHJvcGVydGllcyB3aGVuIG52aWRpYSxzdXNwZW5kLW1vZGU9PDA+OgorLSBudmlkaWEsbHAwLXZlYyA6IDxzdGFydCBsZW5ndGg+IFN0YXJ0aW5nIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiBMUDAgdmVjdG9yCisgIFRoZSBMUDAgdmVjdG9yIGNvbnRhaW5zIHRoZSB3YXJtIGJvb3QgY29kZSB0aGF0IGlzIGV4ZWN1dGVkIGJ5IEFWUCB3aGVuCisgIHJlc3VtaW5nIGZyb20gdGhlIExQMCBzdGF0ZS4gVGhlIEFWUCAoQXVkaW8tVmlkZW8gUHJvY2Vzc29yKSBpcyBhbiBBUk03CisgIHByb2Nlc3NvciBhbmQgYWx3YXlzIGJlaW5nIHRoZSBmaXJzdCBib290IHByb2Nlc3NvciB3aGVuIGNoaXAgaXMgcG93ZXIgb24KKyAgb3IgcmVzdW1lIGZyb20gZGVlcCBzbGVlcCBtb2RlLiBXaGVuIHRoZSBzeXN0ZW0gaXMgcmVzdW1lZCBmcm9tIHRoZSBkZWVwCisgIHNsZWVwIG1vZGUsIHRoZSB3YXJtIGJvb3QgY29kZSB3aWxsIHJlc3RvcmUgc29tZSBQTExzLCBjbG9ja3MgYW5kIHRoZW4KKyAgYnJpbmcgdXAgQ1BVMCBmb3IgcmVzdW1pbmcgdGhlIHN5c3RlbS4KKworSGFyZHdhcmUtdHJpZ2dlcmVkIHRoZXJtYWwgcmVzZXQ6CitPbiBUZWdyYTMwLCBUZWdyYTExNCBhbmQgVGVncmExMjQsIGlmIHRoZSAnaTJjLXRoZXJtdHJpcCcgc3Vibm9kZSBleGlzdHMsCitoYXJkd2FyZS10cmlnZ2VyZWQgdGhlcm1hbCByZXNldCB3aWxsIGJlIGVuYWJsZWQuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIGhhcmR3YXJlLXRyaWdnZXJlZCB0aGVybWFsIHJlc2V0IChpbnNpZGUgJ2kyYy10aGVybXRyaXAnKToKKy0gbnZpZGlhLGkyYy1jb250cm9sbGVyLWlkIDogSUQgb2YgSTJDIGNvbnRyb2xsZXIgdG8gc2VuZCBwb3dlcm9mZiBjb21tYW5kIHRvLiBWYWxpZCB2YWx1ZXMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDkuMi4xNDggIkFQQkRFVl9QTUNfU0NSQVRDSDUzXzAiIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZWdyYSBLMSBUZWNobmljYWwgUmVmZXJlbmNlIE1hbnVhbC4KKy0gbnZpZGlhLGJ1cy1hZGRyIDogQnVzIGFkZHJlc3Mgb2YgdGhlIFBNVSBvbiB0aGUgSTJDIGJ1cworLSBudmlkaWEscmVnLWFkZHIgOiBJMkMgcmVnaXN0ZXIgYWRkcmVzcyB0byB3cml0ZSBwb3dlcm9mZiBjb21tYW5kIHRvCistIG52aWRpYSxyZWctZGF0YSA6IFBvd2Vyb2ZmIGNvbW1hbmQgdG8gd3JpdGUgdG8gUE1VCisKK09wdGlvbmFsIHByb3BlcnRpZXMgZm9yIGhhcmR3YXJlLXRyaWdnZXJlZCB0aGVybWFsIHJlc2V0IChpbnNpZGUgJ2kyYy10aGVybXRyaXAnKToKKy0gbnZpZGlhLHBpbm11eC1pZCA6IFBpbm11eCB1c2VkIGJ5IHRoZSBoYXJkd2FyZSB3aGVuIGlzc3VpbmcgcG93ZXJvZmYgY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIDAuIFZhbGlkIHZhbHVlcyBhcmUgZGVzY3JpYmVkIGluIHNlY3Rpb24gMTIuNS4yCisgICAgICAgICAgICAgICAgICAgICAiUGlubXV4IFN1cHBvcnQiIG9mIHRoZSBUZWdyYTQgVGVjaG5pY2FsIFJlZmVyZW5jZSBNYW51YWwuCisKK0V4YW1wbGU6CisKKy8gU29DIGR0cyBpbmNsdWRpbmcgZmlsZQorcG1jQDcwMDBmNDAwIHsKKwljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTIwLXBtYyI7CisJcmVnID0gPDB4NzAwMGU0MDAgMHg0MDA+OworCWNsb2NrcyA9IDwmdGVncmFfY2FyIDExMD4sIDwmY2xrMzJrX2luPjsKKwljbG9jay1uYW1lcyA9ICJwY2xrIiwgImNsazMya19pbiI7CisJbnZpZGlhLGludmVydC1pbnRlcnJ1cHQ7CisJbnZpZGlhLHN1c3BlbmQtbW9kZSA9IDwxPjsKKwludmlkaWEsY3B1LXB3ci1nb29kLXRpbWUgPSA8MjAwMD47CisJbnZpZGlhLGNwdS1wd3Itb2ZmLXRpbWUgPSA8MTAwPjsKKwludmlkaWEsY29yZS1wd3ItZ29vZC10aW1lID0gPDM4NDUgMzg0NT47CisJbnZpZGlhLGNvcmUtcHdyLW9mZi10aW1lID0gPDQ1OD47CisJbnZpZGlhLGNvcmUtcG93ZXItcmVxLWFjdGl2ZS1oaWdoOworCW52aWRpYSxzeXMtY2xvY2stcmVxLWFjdGl2ZS1oaWdoOworCW52aWRpYSxscDAtdmVjID0gPDB4YmRmZmQwMDAgMHgyMDAwPjsKK307CisKKy8gVGVncmEgYm9hcmQgZHRzIGZpbGUKK3sKKwkuLi4KKwlwbWNANzAwMGY0MDAgeworCQlpMmMtdGhlcm10cmlwIHsKKwkJCW52aWRpYSxpMmMtY29udHJvbGxlci1pZCA9IDw0PjsKKwkJCW52aWRpYSxidXMtYWRkciA9IDwweDQwPjsKKwkJCW52aWRpYSxyZWctYWRkciA9IDwweDM2PjsKKwkJCW52aWRpYSxyZWctZGF0YSA9IDwweDI+OworCQl9OworCX07CisJLi4uCisJY2xvY2tzIHsKKwkJY29tcGF0aWJsZSA9ICJzaW1wbGUtYnVzIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCisJCWNsazMya19pbjogY2xvY2sgeworCQkJY29tcGF0aWJsZSA9ICJmaXhlZC1jbG9jayI7CisJCQlyZWc9PDA+OworCQkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQkJY2xvY2stZnJlcXVlbmN5ID0gPDMyNzY4PjsKKwkJfTsKKwl9OworCS4uLgorfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdGVncmEvbnZpZGlhLHRlZ3JhMzAtYWN0bW9uLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdGVncmEvbnZpZGlhLHRlZ3JhMzAtYWN0bW9uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTY3MGE1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS90ZWdyYS9udmlkaWEsdGVncmEzMC1hY3Rtb24udHh0CkBAIC0wLDAgKzEsMzIgQEAKK05WSURJQSBUZWdyYSBBY3Rpdml0eSBNb25pdG9yCisKK1RoZSBhY3Rpdml0eSBtb25pdG9yIGJsb2NrIGNvbGxlY3RzIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGJlaGF2aW91ciBvZiBvdGhlcgorY29tcG9uZW50cyBpbiB0aGUgc3lzdGVtLiBUaGlzIGluZm9ybWF0aW9uIGNhbiBiZSB1c2VkIHRvIGRlcml2ZSB0aGUgcmF0ZSBhdAord2hpY2ggdGhlIGV4dGVybmFsIG1lbW9yeSBuZWVkcyB0byBiZSBjbG9ja2VkIGluIG9yZGVyIHRvIHNlcnZlIGFsbCByZXF1ZXN0cworZnJvbSB0aGUgbW9uaXRvcmVkIGNsaWVudHMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAibnZpZGlhLHRlZ3JhPGNoaXA+LWFjdG1vbiIKKy0gcmVnOiBvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistIGludGVycnVwdHM6IHN0YW5kYXJkIGludGVycnVwdCBwcm9wZXJ0eQorLSBjbG9ja3M6IE11c3QgY29udGFpbiBhIHBoYW5kbGUgYW5kIGNsb2NrIHNwZWNpZmllciBwYWlyIGZvciBlYWNoIGVudHJ5IGluCitjbG9jay1uYW1lcy4gU2VlIC4uLy4uL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKy0gY2xvY2stbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIC0gYWN0bW9uCisgIC0gZW1jCistIHJlc2V0czogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIHJlc2V0LW5hbWVzLiBTZWUKKy4uLy4uL3Jlc2V0L3Jlc2V0LnR4dCBmb3IgZGV0YWlscy4KKy0gcmVzZXQtbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIC0gYWN0bW9uCisKK0V4YW1wbGU6CisJYWN0bW9uQDYwMDBjODAwIHsKKwkJY29tcGF0aWJsZSA9ICJudmlkaWEsdGVncmExMjQtYWN0bW9uIjsKKwkJcmVnID0gPDB4MCAweDYwMDBjODAwIDB4MCAweDQwMD47CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSA0NSBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJY2xvY2tzID0gPCZ0ZWdyYV9jYXIgVEVHUkExMjRfQ0xLX0FDVE1PTj4sCisJCQkgPCZ0ZWdyYV9jYXIgVEVHUkExMjRfQ0xLX0VNQz47CisJCWNsb2NrLW5hbWVzID0gImFjdG1vbiIsICJlbWMiOworCQlyZXNldHMgPSA8JnRlZ3JhX2NhciAxMTk+OworCQlyZXNldC1uYW1lcyA9ICJhY3Rtb24iOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3RlZ3JhL252aWRpYSx0ZWdyYTMwLW1jLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdGVncmEvbnZpZGlhLHRlZ3JhMzAtbWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkZjFhNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3RlZ3JhL252aWRpYSx0ZWdyYTMwLW1jLnR4dApAQCAtMCwwICsxLDE4IEBACitOVklESUEgVGVncmEzMCBNQyhNZW1vcnkgQ29udHJvbGxlcikKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJudmlkaWEsdGVncmEzMC1tYyIKKy0gcmVnIDogU2hvdWxkIGNvbnRhaW4gNCByZWdpc3RlciByYW5nZXMoYWRkcmVzcyBhbmQgbGVuZ3RoKTsgc2VlIHRoZQorICBleGFtcGxlIGJlbG93LiBOb3RlIHRoYXQgdGhlIE1DIHJlZ2lzdGVycyBhcmUgaW50ZXJsZWF2ZWQgd2l0aCB0aGUKKyAgU01NVSByZWdpc3RlcnMsIGFuZCBoZW5jZSBtdXN0IGJlIHJlcHJlc2VudGVkIGFzIG11bHRpcGxlIHJhbmdlcy4KKy0gaW50ZXJydXB0cyA6IFNob3VsZCBjb250YWluIE1DIEdlbmVyYWwgaW50ZXJydXB0LgorCitFeGFtcGxlOgorCW1lbW9yeS1jb250cm9sbGVyIHsKKwkJY29tcGF0aWJsZSA9ICJudmlkaWEsdGVncmEzMC1tYyI7CisJCXJlZyA9IDwweDcwMDBmMDAwIDB4MDEwCisJCSAgICAgICAweDcwMDBmMDNjIDB4MWI0CisJCSAgICAgICAweDcwMDBmMjAwIDB4MDI4CisJCSAgICAgICAweDcwMDBmMjg0IDB4MTdjPjsKKwkJaW50ZXJydXB0cyA9IDwwIDc3IDB4MDQ+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3RvcG9sb2d5LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdG9wb2xvZ3kudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNjFmYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3RvcG9sb2d5LnR4dApAQCAtMCwwICsxLDQ3NSBAQAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQVJNIHRvcG9sb2d5IGJpbmRpbmcgZGVzY3JpcHRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorMSAtIEludHJvZHVjdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbiBhbiBBUk0gc3lzdGVtLCB0aGUgaGllcmFyY2h5IG9mIENQVXMgaXMgZGVmaW5lZCB0aHJvdWdoIHRocmVlIGVudGl0aWVzIHRoYXQKK2FyZSB1c2VkIHRvIGRlc2NyaWJlIHRoZSBsYXlvdXQgb2YgcGh5c2ljYWwgQ1BVcyBpbiB0aGUgc3lzdGVtOgorCistIGNsdXN0ZXIKKy0gY29yZQorLSB0aHJlYWQKKworVGhlIGNwdSBub2RlcyAoYmluZGluZ3MgZGVmaW5lZCBpbiBbMV0pIHJlcHJlc2VudCB0aGUgZGV2aWNlcyB0aGF0Citjb3JyZXNwb25kIHRvIHBoeXNpY2FsIENQVXMgYW5kIGFyZSB0byBiZSBtYXBwZWQgdG8gdGhlIGhpZXJhcmNoeSBsZXZlbHMuCisKK1RoZSBib3R0b20gaGllcmFyY2h5IGxldmVsIHNpdHMgYXQgY29yZSBvciB0aHJlYWQgbGV2ZWwgZGVwZW5kaW5nIG9uIHdoZXRoZXIKK3N5bW1ldHJpYyBtdWx0aS10aHJlYWRpbmcgKFNNVCkgaXMgc3VwcG9ydGVkIG9yIG5vdC4KKworRm9yIGluc3RhbmNlIGluIGEgc3lzdGVtIHdoZXJlIENQVXMgc3VwcG9ydCBTTVQsICJjcHUiIG5vZGVzIHJlcHJlc2VudCBhbGwKK3RocmVhZHMgZXhpc3RpbmcgaW4gdGhlIHN5c3RlbSBhbmQgbWFwIHRvIHRoZSBoaWVyYXJjaHkgbGV2ZWwgInRocmVhZCIgYWJvdmUuCitJbiBzeXN0ZW1zIHdoZXJlIFNNVCBpcyBub3Qgc3VwcG9ydGVkICJjcHUiIG5vZGVzIHJlcHJlc2VudCBhbGwgY29yZXMgcHJlc2VudAoraW4gdGhlIHN5c3RlbSBhbmQgbWFwIHRvIHRoZSBoaWVyYXJjaHkgbGV2ZWwgImNvcmUiIGFib3ZlLgorCitBUk0gdG9wb2xvZ3kgYmluZGluZ3MgYWxsb3cgb25lIHRvIGFzc29jaWF0ZSBjcHUgbm9kZXMgd2l0aCBoaWVyYXJjaGljYWwgZ3JvdXBzCitjb3JyZXNwb25kaW5nIHRvIHRoZSBzeXN0ZW0gaGllcmFyY2h5OyBzeW50YWN0aWNhbGx5IHRoZXkgYXJlIGRlZmluZWQgYXMgZGV2aWNlCit0cmVlIG5vZGVzLgorCitUaGUgcmVtYWluZGVyIG9mIHRoaXMgZG9jdW1lbnQgcHJvdmlkZXMgdGhlIHRvcG9sb2d5IGJpbmRpbmdzIGZvciBBUk0sIGJhc2VkCitvbiB0aGUgZVBBUFIgc3RhbmRhcmQsIGF2YWlsYWJsZSBmcm9tOgorCitodHRwOi8vd3d3LnBvd2VyLm9yZy9kb2N1bWVudGF0aW9uL2VwYXByLXZlcnNpb24tMS0xLworCitJZiBub3Qgc3RhdGVkIG90aGVyd2lzZSwgd2hlbmV2ZXIgYSByZWZlcmVuY2UgdG8gYSBjcHUgbm9kZSBwaGFuZGxlIGlzIG1hZGUgaXRzCit2YWx1ZSBtdXN0IHBvaW50IHRvIGEgY3B1IG5vZGUgY29tcGxpYW50IHdpdGggdGhlIGNwdSBub2RlIGJpbmRpbmdzIGFzCitkb2N1bWVudGVkIGluIFsxXS4KK0EgdG9wb2xvZ3kgZGVzY3JpcHRpb24gY29udGFpbmluZyBwaGFuZGxlcyB0byBjcHUgbm9kZXMgdGhhdCBhcmUgbm90IGNvbXBsaWFudAord2l0aCBiaW5kaW5ncyBzdGFuZGFyZGl6ZWQgaW4gWzFdIGlzIHRoZXJlZm9yZSBjb25zaWRlcmVkIGludmFsaWQuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzIgLSBjcHUtbWFwIG5vZGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIEFSTSBDUFUgdG9wb2xvZ3kgaXMgZGVmaW5lZCB3aXRoaW4gdGhlIGNwdS1tYXAgbm9kZSwgd2hpY2ggaXMgYSBkaXJlY3QKK2NoaWxkIG9mIHRoZSBjcHVzIG5vZGUgYW5kIHByb3ZpZGVzIGEgY29udGFpbmVyIHdoZXJlIHRoZSBhY3R1YWwgdG9wb2xvZ3kKK25vZGVzIGFyZSBsaXN0ZWQuCisKKy0gY3B1LW1hcCBub2RlCisKKwlVc2FnZTogT3B0aW9uYWwgLSBPbiBBUk0gU01QIHN5c3RlbXMgcHJvdmlkZSBDUFVzIHRvcG9sb2d5IHRvIHRoZSBPUy4KKwkJCSAgQVJNIHVuaXByb2Nlc3NvciBzeXN0ZW1zIGRvIG5vdCByZXF1aXJlIGEgdG9wb2xvZ3kKKwkJCSAgZGVzY3JpcHRpb24gYW5kIHRoZXJlZm9yZSBzaG91bGQgbm90IGRlZmluZSBhCisJCQkgIGNwdS1tYXAgbm9kZS4KKworCURlc2NyaXB0aW9uOiBUaGUgY3B1LW1hcCBub2RlIGlzIGp1c3QgYSBjb250YWluZXIgbm9kZSB3aGVyZSBpdHMKKwkJICAgICBzdWJub2RlcyBkZXNjcmliZSB0aGUgQ1BVIHRvcG9sb2d5LgorCisJTm9kZSBuYW1lIG11c3QgYmUgImNwdS1tYXAiLgorCisJVGhlIGNwdS1tYXAgbm9kZSdzIHBhcmVudCBub2RlIG11c3QgYmUgdGhlIGNwdXMgbm9kZS4KKworCVRoZSBjcHUtbWFwIG5vZGUncyBjaGlsZCBub2RlcyBjYW4gYmU6CisKKwktIG9uZSBvciBtb3JlIGNsdXN0ZXIgbm9kZXMKKworCUFueSBvdGhlciBjb25maWd1cmF0aW9uIGlzIGNvbnNpZGVyZWQgaW52YWxpZC4KKworVGhlIGNwdS1tYXAgbm9kZSBjYW4gb25seSBjb250YWluIHRocmVlIHR5cGVzIG9mIGNoaWxkIG5vZGVzOgorCistIGNsdXN0ZXIgbm9kZQorLSBjb3JlIG5vZGUKKy0gdGhyZWFkIG5vZGUKKword2hvc2UgYmluZGluZ3MgYXJlIGRlc2NyaWJlZCBpbiBwYXJhZ3JhcGggMy4KKworVGhlIG5vZGVzIGRlc2NyaWJpbmcgdGhlIENQVSB0b3BvbG9neSAoY2x1c3Rlci9jb3JlL3RocmVhZCkgY2FuIG9ubHkKK2JlIGRlZmluZWQgd2l0aGluIHRoZSBjcHUtbWFwIG5vZGUgYW5kIGV2ZXJ5IGNvcmUvdGhyZWFkIGluIHRoZSBzeXN0ZW0KK211c3QgYmUgZGVmaW5lZCB3aXRoaW4gdGhlIHRvcG9sb2d5LiAgQW55IG90aGVyIGNvbmZpZ3VyYXRpb24gaXMKK2ludmFsaWQgYW5kIHRoZXJlZm9yZSBtdXN0IGJlIGlnbm9yZWQuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzIuMSAtIGNwdS1tYXAgY2hpbGQgbm9kZXMgbmFtaW5nIGNvbnZlbnRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworY3B1LW1hcCBjaGlsZCBub2RlcyBtdXN0IGZvbGxvdyBhIG5hbWluZyBjb252ZW50aW9uIHdoZXJlIHRoZSBub2RlIG5hbWUKK211c3QgYmUgImNsdXN0ZXJOIiwgImNvcmVOIiwgInRocmVhZE4iIGRlcGVuZGluZyBvbiB0aGUgbm9kZSB0eXBlIChpZQorY2x1c3Rlci9jb3JlL3RocmVhZCkgKHdoZXJlIE4gPSB7MCwgMSwgLi4ufSBpcyB0aGUgbm9kZSBudW1iZXI7IG5vZGVzIHdoaWNoCithcmUgc2libGluZ3Mgd2l0aGluIGEgc2luZ2xlIGNvbW1vbiBwYXJlbnQgbm9kZSBtdXN0IGJlIGdpdmVuIGEgdW5pcXVlIGFuZAorc2VxdWVudGlhbCBOIHZhbHVlLCBzdGFydGluZyBmcm9tIDApLgorY3B1LW1hcCBjaGlsZCBub2RlcyB3aGljaCBkbyBub3Qgc2hhcmUgYSBjb21tb24gcGFyZW50IG5vZGUgY2FuIGhhdmUgdGhlIHNhbWUKK25hbWUgKGllIHNhbWUgbnVtYmVyIE4gYXMgb3RoZXIgY3B1LW1hcCBjaGlsZCBub2RlcyBhdCBkaWZmZXJlbnQgZGV2aWNlIHRyZWUKK2xldmVscykgc2luY2UgbmFtZSB1bmlxdWVuZXNzIHdpbGwgYmUgZ3VhcmFudGVlZCBieSB0aGUgZGV2aWNlIHRyZWUgaGllcmFyY2h5LgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiszIC0gY2x1c3Rlci9jb3JlL3RocmVhZCBub2RlIGJpbmRpbmdzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0JpbmRpbmdzIGZvciBjbHVzdGVyL2NwdS90aHJlYWQgbm9kZXMgYXJlIGRlZmluZWQgYXMgZm9sbG93czoKKworLSBjbHVzdGVyIG5vZGUKKworCSBEZXNjcmlwdGlvbjogbXVzdCBiZSBkZWNsYXJlZCB3aXRoaW4gYSBjcHUtbWFwIG5vZGUsIG9uZSBub2RlCisJCSAgICAgIHBlciBjbHVzdGVyLiBBIHN5c3RlbSBjYW4gY29udGFpbiBzZXZlcmFsIGxheWVycyBvZgorCQkgICAgICBjbHVzdGVyaW5nIGFuZCBjbHVzdGVyIG5vZGVzIGNhbiBiZSBjb250YWluZWQgaW4gcGFyZW50CisJCSAgICAgIGNsdXN0ZXIgbm9kZXMuCisKKwlUaGUgY2x1c3RlciBub2RlIG5hbWUgbXVzdCBiZSAiY2x1c3Rlck4iIGFzIGRlc2NyaWJlZCBpbiAyLjEgYWJvdmUuCisJQSBjbHVzdGVyIG5vZGUgY2FuIG5vdCBiZSBhIGxlYWYgbm9kZS4KKworCUEgY2x1c3RlciBub2RlJ3MgY2hpbGQgbm9kZXMgbXVzdCBiZToKKworCS0gb25lIG9yIG1vcmUgY2x1c3RlciBub2Rlczsgb3IKKwktIG9uZSBvciBtb3JlIGNvcmUgbm9kZXMKKworCUFueSBvdGhlciBjb25maWd1cmF0aW9uIGlzIGNvbnNpZGVyZWQgaW52YWxpZC4KKworLSBjb3JlIG5vZGUKKworCURlc2NyaXB0aW9uOiBtdXN0IGJlIGRlY2xhcmVkIGluIGEgY2x1c3RlciBub2RlLCBvbmUgbm9kZSBwZXIgY29yZSBpbgorCQkgICAgIHRoZSBjbHVzdGVyLiBJZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgU01ULCBjb3JlCisJCSAgICAgbm9kZXMgYXJlIGxlYWYgbm9kZXMsIG90aGVyd2lzZSB0aGV5IGJlY29tZSBjb250YWluZXJzIG9mCisJCSAgICAgdGhyZWFkIG5vZGVzLgorCisJVGhlIGNvcmUgbm9kZSBuYW1lIG11c3QgYmUgImNvcmVOIiBhcyBkZXNjcmliZWQgaW4gMi4xIGFib3ZlLgorCisJQSBjb3JlIG5vZGUgbXVzdCBiZSBhIGxlYWYgbm9kZSBpZiBTTVQgaXMgbm90IHN1cHBvcnRlZC4KKworCVByb3BlcnRpZXMgZm9yIGNvcmUgbm9kZXMgdGhhdCBhcmUgbGVhZiBub2RlczoKKworCS0gY3B1CisJCVVzYWdlOiByZXF1aXJlZAorCQlWYWx1ZSB0eXBlOiA8cGhhbmRsZT4KKwkJRGVmaW5pdGlvbjogYSBwaGFuZGxlIHRvIHRoZSBjcHUgbm9kZSB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZQorCQkJICAgIGNvcmUgbm9kZS4KKworCUlmIGEgY29yZSBub2RlIGlzIG5vdCBhIGxlYWYgbm9kZSAoQ1BVcyBzdXBwb3J0aW5nIFNNVCkgYSBjb3JlIG5vZGUncworCWNoaWxkIG5vZGVzIGNhbiBiZToKKworCS0gb25lIG9yIG1vcmUgdGhyZWFkIG5vZGVzCisKKwlBbnkgb3RoZXIgY29uZmlndXJhdGlvbiBpcyBjb25zaWRlcmVkIGludmFsaWQuCisKKy0gdGhyZWFkIG5vZGUKKworCURlc2NyaXB0aW9uOiBtdXN0IGJlIGRlY2xhcmVkIGluIGEgY29yZSBub2RlLCBvbmUgbm9kZSBwZXIgdGhyZWFkCisJCSAgICAgaW4gdGhlIGNvcmUgaWYgdGhlIHN5c3RlbSBzdXBwb3J0cyBTTVQuIFRocmVhZCBub2RlcyBhcmUKKwkJICAgICBhbHdheXMgbGVhZiBub2RlcyBpbiB0aGUgZGV2aWNlIHRyZWUuCisKKwlUaGUgdGhyZWFkIG5vZGUgbmFtZSBtdXN0IGJlICJ0aHJlYWROIiBhcyBkZXNjcmliZWQgaW4gMi4xIGFib3ZlLgorCisJQSB0aHJlYWQgbm9kZSBtdXN0IGJlIGEgbGVhZiBub2RlLgorCisJQSB0aHJlYWQgbm9kZSBtdXN0IGNvbnRhaW4gdGhlIGZvbGxvd2luZyBwcm9wZXJ0eToKKworCS0gY3B1CisJCVVzYWdlOiByZXF1aXJlZAorCQlWYWx1ZSB0eXBlOiA8cGhhbmRsZT4KKwkJRGVmaW5pdGlvbjogYSBwaGFuZGxlIHRvIHRoZSBjcHUgbm9kZSB0aGF0IGNvcnJlc3BvbmRzIHRvCisJCQkgICAgdGhlIHRocmVhZCBub2RlLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis0IC0gRXhhbXBsZSBkdHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRXhhbXBsZSAxIChBUk0gNjQtYml0LCAxNi1jcHUgc3lzdGVtLCB0d28gY2x1c3RlcnMgb2YgY2x1c3RlcnMpOgorCitjcHVzIHsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwkjYWRkcmVzcy1jZWxscyA9IDwyPjsKKworCWNwdS1tYXAgeworCQljbHVzdGVyMCB7CisJCQljbHVzdGVyMCB7CisJCQkJY29yZTAgeworCQkJCQl0aHJlYWQwIHsKKwkJCQkJCWNwdSA9IDwmQ1BVMD47CisJCQkJCX07CisJCQkJCXRocmVhZDEgeworCQkJCQkJY3B1ID0gPCZDUFUxPjsKKwkJCQkJfTsKKwkJCQl9OworCisJCQkJY29yZTEgeworCQkJCQl0aHJlYWQwIHsKKwkJCQkJCWNwdSA9IDwmQ1BVMj47CisJCQkJCX07CisJCQkJCXRocmVhZDEgeworCQkJCQkJY3B1ID0gPCZDUFUzPjsKKwkJCQkJfTsKKwkJCQl9OworCQkJfTsKKworCQkJY2x1c3RlcjEgeworCQkJCWNvcmUwIHsKKwkJCQkJdGhyZWFkMCB7CisJCQkJCQljcHUgPSA8JkNQVTQ+OworCQkJCQl9OworCQkJCQl0aHJlYWQxIHsKKwkJCQkJCWNwdSA9IDwmQ1BVNT47CisJCQkJCX07CisJCQkJfTsKKworCQkJCWNvcmUxIHsKKwkJCQkJdGhyZWFkMCB7CisJCQkJCQljcHUgPSA8JkNQVTY+OworCQkJCQl9OworCQkJCQl0aHJlYWQxIHsKKwkJCQkJCWNwdSA9IDwmQ1BVNz47CisJCQkJCX07CisJCQkJfTsKKwkJCX07CisJCX07CisKKwkJY2x1c3RlcjEgeworCQkJY2x1c3RlcjAgeworCQkJCWNvcmUwIHsKKwkJCQkJdGhyZWFkMCB7CisJCQkJCQljcHUgPSA8JkNQVTg+OworCQkJCQl9OworCQkJCQl0aHJlYWQxIHsKKwkJCQkJCWNwdSA9IDwmQ1BVOT47CisJCQkJCX07CisJCQkJfTsKKwkJCQljb3JlMSB7CisJCQkJCXRocmVhZDAgeworCQkJCQkJY3B1ID0gPCZDUFUxMD47CisJCQkJCX07CisJCQkJCXRocmVhZDEgeworCQkJCQkJY3B1ID0gPCZDUFUxMT47CisJCQkJCX07CisJCQkJfTsKKwkJCX07CisKKwkJCWNsdXN0ZXIxIHsKKwkJCQljb3JlMCB7CisJCQkJCXRocmVhZDAgeworCQkJCQkJY3B1ID0gPCZDUFUxMj47CisJCQkJCX07CisJCQkJCXRocmVhZDEgeworCQkJCQkJY3B1ID0gPCZDUFUxMz47CisJCQkJCX07CisJCQkJfTsKKwkJCQljb3JlMSB7CisJCQkJCXRocmVhZDAgeworCQkJCQkJY3B1ID0gPCZDUFUxND47CisJCQkJCX07CisJCQkJCXRocmVhZDEgeworCQkJCQkJY3B1ID0gPCZDUFUxNT47CisJCQkJCX07CisJCQkJfTsKKwkJCX07CisJCX07CisJfTsKKworCUNQVTA6IGNwdUAwIHsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE1NyI7CisJCXJlZyA9IDwweDAgMHgwPjsKKwkJZW5hYmxlLW1ldGhvZCA9ICJzcGluLXRhYmxlIjsKKwkJY3B1LXJlbGVhc2UtYWRkciA9IDwwIDB4MjAwMDAwMDA+OworCX07CisKKwlDUFUxOiBjcHVAMSB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTciOworCQlyZWcgPSA8MHgwIDB4MT47CisJCWVuYWJsZS1tZXRob2QgPSAic3Bpbi10YWJsZSI7CisJCWNwdS1yZWxlYXNlLWFkZHIgPSA8MCAweDIwMDAwMDAwPjsKKwl9OworCisJQ1BVMjogY3B1QDEwMCB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTciOworCQlyZWcgPSA8MHgwIDB4MTAwPjsKKwkJZW5hYmxlLW1ldGhvZCA9ICJzcGluLXRhYmxlIjsKKwkJY3B1LXJlbGVhc2UtYWRkciA9IDwwIDB4MjAwMDAwMDA+OworCX07CisKKwlDUFUzOiBjcHVAMTAxIHsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE1NyI7CisJCXJlZyA9IDwweDAgMHgxMDE+OworCQllbmFibGUtbWV0aG9kID0gInNwaW4tdGFibGUiOworCQljcHUtcmVsZWFzZS1hZGRyID0gPDAgMHgyMDAwMDAwMD47CisJfTsKKworCUNQVTQ6IGNwdUAxMDAwMCB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTciOworCQlyZWcgPSA8MHgwIDB4MTAwMDA+OworCQllbmFibGUtbWV0aG9kID0gInNwaW4tdGFibGUiOworCQljcHUtcmVsZWFzZS1hZGRyID0gPDAgMHgyMDAwMDAwMD47CisJfTsKKworCUNQVTU6IGNwdUAxMDAwMSB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTciOworCQlyZWcgPSA8MHgwIDB4MTAwMDE+OworCQllbmFibGUtbWV0aG9kID0gInNwaW4tdGFibGUiOworCQljcHUtcmVsZWFzZS1hZGRyID0gPDAgMHgyMDAwMDAwMD47CisJfTsKKworCUNQVTY6IGNwdUAxMDEwMCB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTciOworCQlyZWcgPSA8MHgwIDB4MTAxMDA+OworCQllbmFibGUtbWV0aG9kID0gInNwaW4tdGFibGUiOworCQljcHUtcmVsZWFzZS1hZGRyID0gPDAgMHgyMDAwMDAwMD47CisJfTsKKworCUNQVTc6IGNwdUAxMDEwMSB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTciOworCQlyZWcgPSA8MHgwIDB4MTAxMDE+OworCQllbmFibGUtbWV0aG9kID0gInNwaW4tdGFibGUiOworCQljcHUtcmVsZWFzZS1hZGRyID0gPDAgMHgyMDAwMDAwMD47CisJfTsKKworCUNQVTg6IGNwdUAxMDAwMDAwMDAgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTU3IjsKKwkJcmVnID0gPDB4MSAweDA+OworCQllbmFibGUtbWV0aG9kID0gInNwaW4tdGFibGUiOworCQljcHUtcmVsZWFzZS1hZGRyID0gPDAgMHgyMDAwMDAwMD47CisJfTsKKworCUNQVTk6IGNwdUAxMDAwMDAwMDEgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTU3IjsKKwkJcmVnID0gPDB4MSAweDE+OworCQllbmFibGUtbWV0aG9kID0gInNwaW4tdGFibGUiOworCQljcHUtcmVsZWFzZS1hZGRyID0gPDAgMHgyMDAwMDAwMD47CisJfTsKKworCUNQVTEwOiBjcHVAMTAwMDAwMTAwIHsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE1NyI7CisJCXJlZyA9IDwweDEgMHgxMDA+OworCQllbmFibGUtbWV0aG9kID0gInNwaW4tdGFibGUiOworCQljcHUtcmVsZWFzZS1hZGRyID0gPDAgMHgyMDAwMDAwMD47CisJfTsKKworCUNQVTExOiBjcHVAMTAwMDAwMTAxIHsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE1NyI7CisJCXJlZyA9IDwweDEgMHgxMDE+OworCQllbmFibGUtbWV0aG9kID0gInNwaW4tdGFibGUiOworCQljcHUtcmVsZWFzZS1hZGRyID0gPDAgMHgyMDAwMDAwMD47CisJfTsKKworCUNQVTEyOiBjcHVAMTAwMDEwMDAwIHsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE1NyI7CisJCXJlZyA9IDwweDEgMHgxMDAwMD47CisJCWVuYWJsZS1tZXRob2QgPSAic3Bpbi10YWJsZSI7CisJCWNwdS1yZWxlYXNlLWFkZHIgPSA8MCAweDIwMDAwMDAwPjsKKwl9OworCisJQ1BVMTM6IGNwdUAxMDAwMTAwMDEgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTU3IjsKKwkJcmVnID0gPDB4MSAweDEwMDAxPjsKKwkJZW5hYmxlLW1ldGhvZCA9ICJzcGluLXRhYmxlIjsKKwkJY3B1LXJlbGVhc2UtYWRkciA9IDwwIDB4MjAwMDAwMDA+OworCX07CisKKwlDUFUxNDogY3B1QDEwMDAxMDEwMCB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTciOworCQlyZWcgPSA8MHgxIDB4MTAxMDA+OworCQllbmFibGUtbWV0aG9kID0gInNwaW4tdGFibGUiOworCQljcHUtcmVsZWFzZS1hZGRyID0gPDAgMHgyMDAwMDAwMD47CisJfTsKKworCUNQVTE1OiBjcHVAMTAwMDEwMTAxIHsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE1NyI7CisJCXJlZyA9IDwweDEgMHgxMDEwMT47CisJCWVuYWJsZS1tZXRob2QgPSAic3Bpbi10YWJsZSI7CisJCWNwdS1yZWxlYXNlLWFkZHIgPSA8MCAweDIwMDAwMDAwPjsKKwl9OworfTsKKworRXhhbXBsZSAyIChBUk0gMzItYml0LCBkdWFsLWNsdXN0ZXIsIDgtY3B1IHN5c3RlbSwgbm8gU01UKToKKworY3B1cyB7CisJI3NpemUtY2VsbHMgPSA8MD47CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisKKwljcHUtbWFwIHsKKwkJY2x1c3RlcjAgeworCQkJY29yZTAgeworCQkJCWNwdSA9IDwmQ1BVMD47CisJCQl9OworCQkJY29yZTEgeworCQkJCWNwdSA9IDwmQ1BVMT47CisJCQl9OworCQkJY29yZTIgeworCQkJCWNwdSA9IDwmQ1BVMj47CisJCQl9OworCQkJY29yZTMgeworCQkJCWNwdSA9IDwmQ1BVMz47CisJCQl9OworCQl9OworCisJCWNsdXN0ZXIxIHsKKwkJCWNvcmUwIHsKKwkJCQljcHUgPSA8JkNQVTQ+OworCQkJfTsKKwkJCWNvcmUxIHsKKwkJCQljcHUgPSA8JkNQVTU+OworCQkJfTsKKwkJCWNvcmUyIHsKKwkJCQljcHUgPSA8JkNQVTY+OworCQkJfTsKKwkJCWNvcmUzIHsKKwkJCQljcHUgPSA8JkNQVTc+OworCQkJfTsKKwkJfTsKKwl9OworCisJQ1BVMDogY3B1QDAgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTE1IjsKKwkJcmVnID0gPDB4MD47CisJfTsKKworCUNQVTE6IGNwdUAxIHsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWExNSI7CisJCXJlZyA9IDwweDE+OworCX07CisKKwlDUFUyOiBjcHVAMiB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hMTUiOworCQlyZWcgPSA8MHgyPjsKKwl9OworCisJQ1BVMzogY3B1QDMgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTE1IjsKKwkJcmVnID0gPDB4Mz47CisJfTsKKworCUNQVTQ6IGNwdUAxMDAgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTciOworCQlyZWcgPSA8MHgxMDA+OworCX07CisKKwlDUFU1OiBjcHVAMTAxIHsKKwkJZGV2aWNlX3R5cGUgPSAiY3B1IjsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE3IjsKKwkJcmVnID0gPDB4MTAxPjsKKwl9OworCisJQ1BVNjogY3B1QDEwMiB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNyI7CisJCXJlZyA9IDwweDEwMj47CisJfTsKKworCUNQVTc6IGNwdUAxMDMgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTciOworCQlyZWcgPSA8MHgxMDM+OworCX07Cit9OworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitbMV0gQVJNIExpbnV4IGtlcm5lbCBkb2N1bWVudGF0aW9uCisgICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9jcHVzLnR4dApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS90d2QudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS90d2QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4M2VhMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3R3ZC50eHQKQEAgLTAsMCArMSw1MyBAQAorKiBBUk0gVGltZXIgV2F0Y2hkb2cKKworQVJNIDExTVAsIENvcnRleC1BNSBhbmQgQ29ydGV4LUE5IGFyZSBvZnRlbiBhc3NvY2lhdGVkIHdpdGggYSBwZXItY29yZQorVGltZXItV2F0Y2hkb2cgKGFrYSBUV0QpLCB3aGljaCBwcm92aWRlcyBib3RoIGEgcGVyLWNwdSBsb2NhbCB0aW1lcgorYW5kIHdhdGNoZG9nLgorCitUaGUgVFdEIGlzIHVzdWFsbHkgYXR0YWNoZWQgdG8gYSBHSUMgdG8gZGVsaXZlciBpdHMgdHdvIHBlci1wcm9jZXNzb3IKK2ludGVycnVwdHMuCisKKyoqIFRpbWVyIG5vZGUgcmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlIG9uZSBvZjoKKwkiYXJtLGNvcnRleC1hOS10d2QtdGltZXIiCisJImFybSxjb3J0ZXgtYTUtdHdkLXRpbWVyIgorCSJhcm0sYXJtMTFtcC10d2QtdGltZXIiCisKKy0gaW50ZXJydXB0cyA6IE9uZSBpbnRlcnJ1cHQgdG8gZWFjaCBjb3JlCisKKy0gcmVnIDogU3BlY2lmeSB0aGUgYmFzZSBhZGRyZXNzIGFuZCB0aGUgc2l6ZSBvZiB0aGUgVFdEIHRpbWVyCisJcmVnaXN0ZXIgd2luZG93LgorCitPcHRpb25hbAorCistIGFsd2F5cy1vbiA6IGEgYm9vbGVhbiBwcm9wZXJ0eS4gSWYgcHJlc2VudCwgdGhlIHRpbWVyIGlzIHBvd2VyZWQgdGhyb3VnaAorICBhbiBhbHdheXMtb24gcG93ZXIgZG9tYWluLCB0aGVyZWZvcmUgaXQgbmV2ZXIgbG9zZXMgY29udGV4dC4KKworRXhhbXBsZToKKworCXR3ZC10aW1lckAyYzAwMDYwMCB7CisJCWNvbXBhdGlibGUgPSAiYXJtLGFybTExbXAtdHdkLXRpbWVyIiI7CisJCXJlZyA9IDwweDJjMDAwNjAwIDB4MjA+OworCQlpbnRlcnJ1cHRzID0gPDEgMTMgMHhmMDE+OworCX07CisKKyoqIFdhdGNoZG9nIG5vZGUgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlIG9uZSBvZjoKKwkiYXJtLGNvcnRleC1hOS10d2Qtd2R0IgorCSJhcm0sY29ydGV4LWE1LXR3ZC13ZHQiCisJImFybSxhcm0xMW1wLXR3ZC13ZHQiCisKKy0gaW50ZXJydXB0cyA6IE9uZSBpbnRlcnJ1cHQgdG8gZWFjaCBjb3JlCisKKy0gcmVnIDogU3BlY2lmeSB0aGUgYmFzZSBhZGRyZXNzIGFuZCB0aGUgc2l6ZSBvZiB0aGUgVFdEIHdhdGNoZG9nCisJcmVnaXN0ZXIgd2luZG93LgorCitFeGFtcGxlOgorCisJdHdkLXdhdGNoZG9nQDJjMDAwNjIwIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0sYXJtMTFtcC10d2Qtd2R0IjsKKwkJcmVnID0gPDB4MmMwMDA2MjAgMHgyMD47CisJCWludGVycnVwdHMgPSA8MSAxNCAweGYwMT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdW5pcGhpZXIvY2FjaGUtdW5pcGhpZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS91bmlwaGllci9jYWNoZS11bmlwaGllci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI3YTY0NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdW5pcGhpZXIvY2FjaGUtdW5pcGhpZXIudHh0CkBAIC0wLDAgKzEsNjAgQEAKK1VuaVBoaWVyIG91dGVyIGNhY2hlIGNvbnRyb2xsZXIKKworVW5pUGhpZXIgU29DcyBhcmUgaW50ZWdyYXRlZCB3aXRoIGEgZnVsbC1jdXN0b20gb3V0ZXIgY2FjaGUgY29udHJvbGxlciBzeXN0ZW0uCitBbGwgb2YgdGhlbSBoYXZlIGEgbGV2ZWwgMiBjYWNoZSBjb250cm9sbGVyLCBhbmQgc29tZSBoYXZlIGEgbGV2ZWwgMyBjYWNoZQorY29udHJvbGxlciBhcyB3ZWxsLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgInNvY2lvbmV4dCx1bmlwaGllci1zeXN0ZW0tY2FjaGUiCistIHJlZzogb2Zmc2V0cyBhbmQgbGVuZ3RocyBvZiB0aGUgcmVnaXN0ZXIgc2V0cyBmb3IgdGhlIGRldmljZS4gIEl0IHNob3VsZAorICBjb250YWluIDMgcmVnaW9uczogY29udHJvbCByZWdpc3RlciwgcmV2aXNpb24gcmVnaXN0ZXIsIG9wZXJhdGlvbiByZWdpc3RlciwKKyAgaW4gdGhpcyBvcmRlci4KKy0gY2FjaGUtdW5pZmllZDogc3BlY2lmaWVzIHRoZSBjYWNoZSBpcyBhIHVuaWZpZWQgY2FjaGUuCistIGNhY2hlLXNpemU6IHNwZWNpZmllcyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgY2FjaGUKKy0gY2FjaGUtc2V0czogc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYXNzb2NpYXRpdml0eSBzZXRzIG9mIHRoZSBjYWNoZQorLSBjYWNoZS1saW5lLXNpemU6IHNwZWNpZmllcyB0aGUgbGluZSBzaXplIGluIGJ5dGVzCistIGNhY2hlLWxldmVsOiBzcGVjaWZpZXMgdGhlIGxldmVsIGluIHRoZSBjYWNoZSBoaWVyYXJjaHkuICBUaGUgdmFsdWUgc2hvdWxkCisgIGJlIDIgZm9yIEwyIGNhY2hlLCAzIGZvciBMMyBjYWNoZSwgZXRjLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBuZXh0LWxldmVsLWNhY2hlOiBwaGFuZGxlIHRvIHRoZSBuZXh0IGxldmVsIGNhY2hlIGlmIHByZXNlbnQuICBUaGUgbmV4dCBsZXZlbAorICBjYWNoZSBzaG91bGQgYmUgYWxzbyBjb21wYXRpYmxlIHdpdGggInNvY2lvbmV4dCx1bmlwaGllci1zeXN0ZW0tY2FjaGUiLgorCitUaGUgTDIgY2FjaGUgbXVzdCBleGlzdCB0byB1c2UgdGhlIEwzIGNhY2hlOyB0aGUgY2FjaGUgaGllcmFyY2h5IG11c3QgYmUKK2luZGljYXRlZCBjb3JyZWN0bHkgd2l0aCAibmV4dC1sZXZlbC1jYWNoZSIgcHJvcGVydGllcy4KKworRXhhbXBsZSAxIChzeXN0ZW0gd2l0aCBMMik6CisJbDI6IGwyLWNhY2hlQDUwMGMwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzb2Npb25leHQsdW5pcGhpZXItc3lzdGVtLWNhY2hlIjsKKwkJcmVnID0gPDB4NTAwYzAwMDAgMHgyMDAwPiwgPDB4NTAzYzAxMDAgMHg0PiwKKwkJICAgICAgPDB4NTA2YzAwMDAgMHg0MDA+OworCQljYWNoZS11bmlmaWVkOworCQljYWNoZS1zaXplID0gPDB4ODAwMDA+OworCQljYWNoZS1zZXRzID0gPDI1Nj47CisJCWNhY2hlLWxpbmUtc2l6ZSA9IDwxMjg+OworCQljYWNoZS1sZXZlbCA9IDwyPjsKKwl9OworCitFeGFtcGxlIDIgKHN5c3RlbSB3aXRoIEwyIGFuZCBMMyk6CisJbDI6IGwyLWNhY2hlQDUwMGMwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzb2Npb25leHQsdW5pcGhpZXItc3lzdGVtLWNhY2hlIjsKKwkJcmVnID0gPDB4NTAwYzAwMDAgMHgyMDAwPiwgPDB4NTAzYzAxMDAgMHg4PiwKKwkJICAgICAgPDB4NTA2YzAwMDAgMHg0MDA+OworCQljYWNoZS11bmlmaWVkOworCQljYWNoZS1zaXplID0gPDB4MjAwMDAwPjsKKwkJY2FjaGUtc2V0cyA9IDw1MTI+OworCQljYWNoZS1saW5lLXNpemUgPSA8MTI4PjsKKwkJY2FjaGUtbGV2ZWwgPSA8Mj47CisJCW5leHQtbGV2ZWwtY2FjaGUgPSA8JmwzPjsKKwl9OworCisJbDM6IGwzLWNhY2hlQDUwMGM4MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzb2Npb25leHQsdW5pcGhpZXItc3lzdGVtLWNhY2hlIjsKKwkJcmVnID0gPDB4NTAwYzgwMDAgMHgyMDAwPiwgPDB4NTAzYzgxMDAgMHg4PiwKKwkJICAgICAgPDB4NTA2YzgwMDAgMHg0MDA+OworCQljYWNoZS11bmlmaWVkOworCQljYWNoZS1zaXplID0gPDB4NDAwMDAwPjsKKwkJY2FjaGUtc2V0cyA9IDw1MTI+OworCQljYWNoZS1saW5lLXNpemUgPSA8MjU2PjsKKwkJY2FjaGUtbGV2ZWwgPSA8Mz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdXg1MDAvYm9hcmRzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdXg1MDAvYm9hcmRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODczN2E4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS91eDUwMC9ib2FyZHMudHh0CkBAIC0wLDAgKzEsODMgQEAKK1NULUVyaWNzc29uIFV4NTAwIGJvYXJkcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgKGluIHJvb3Qgbm9kZSkgb25lIG9mIHRoZXNlOgorCWNvbXBhdGlibGUgPSAic3QtZXJpY3Nzb24sbW9wNTAwIiAobGVnYWN5KQorCWNvbXBhdGlibGUgPSAic3QtZXJpY3Nzb24sdTg1MDAiCisKK1JlcXVpcmVkIG5vZGUgKHVuZGVyIHJvb3Qgbm9kZSk6CisKK3NvYzogcmVwcmVzZW50cyB0aGUgc3lzdGVtLW9uLWNoaXAgYW5kIGNvbnRhaW5zIHRoZSBjaGlwCitwZXJpcGhlcmFscworCitSZXF1aXJlZCBwcm9wZXJ0eSBvZiBzb2Mgbm9kZSwgb25lIG9mIHRoZXNlOgorCWNvbXBhdGlibGUgPSAic3Rlcmljc3NvbixkYjg1MDAiCisKK1JlcXVpcmVkIHN1Ym5vZGVzIHVuZGVyIHNvYyBub2RlOgorCitiYWNrdXByYW06ICh1c2VkIGZvciBDUFUgc3BpbiB0YWJsZXMgYW5kIGZvciBzdG9yaW5nIGRhdGEKK2R1cmluZyByZXRlbnRpb24sIHN5c3RlbSB3b24ndCBib290IHdpdGhvdXQgdGhpcyk6CisJY29tcGF0aWJsZSA9ICJzdGUsZGJ4NTAwLWJhY2t1cHJhbSIKKworc2N1OgorCXNlZSBiaW5kaW5nIGZvciBhcm0vc2N1LnR4dAorCitpbnRlcnJ1cHQtY29udHJvbGxlcjoKKwlzZWUgYmluZGluZyBmb3IgYXJtL2dpYy50eHQKKwordGltZXI6CisJc2VlIGJpbmRpbmcgZm9yIGFybS90d2QudHh0CisKK2Nsb2NrczoKKwlzZWUgYmluZGluZyBmb3IgY2xvY2tzL3V4NTAwLnR4dAorCitFeGFtcGxlOgorCisvZHRzLXYxLzsKKworLyB7CisgICAgICAgIG1vZGVsID0gIlNULUVyaWNzc29uIEhSRUYgKHByZS12NjApIGFuZCBTVCBVSUIiOworICAgICAgICBjb21wYXRpYmxlID0gInN0LWVyaWNzc29uLG1vcDUwMCIsICJzdC1lcmljc3Nvbix1ODUwMCI7CisKKyAgICAgICAgc29jIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQljb21wYXRpYmxlID0gInN0ZXJpY3Nzb24sZGI4NTAwIjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmaW50Yz47CisJCXJhbmdlczsKKworCQliYWNrdXByYW1AODAxNTAwMDAgeworCQkJY29tcGF0aWJsZSA9ICJzdGUsZGJ4NTAwLWJhY2t1cHJhbSI7CisJCQlyZWcgPSA8MHg4MDE1MDAwMCAweDIwMDA+OworCQl9OworCisJCWludGM6IGludGVycnVwdC1jb250cm9sbGVyQGEwNDExMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hOS1naWMiOworCQkJI2ludGVycnVwdC1jZWxscyA9IDwzPjsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCQlyZWcgPSA8MHhhMDQxMTAwMCAweDEwMDA+LAorCQkJICAgICAgPDB4YTA0MTAxMDAgMHgxMDA+OworCQl9OworCisJCXNjdUBhMDQxMDAwMDAgeworCQkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE5LXNjdSI7CisJCQlyZWcgPSA8MHhhMDQxMDAwMCAweDEwMD47CisJCX07CisKKwkJdGltZXJAYTA0MTA2MDAgeworCQkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE5LXR3ZC10aW1lciI7CisJCQlyZWcgPSA8MHhhMDQxMDYwMCAweDIwPjsKKwkJCWludGVycnVwdHMgPSA8MSAxMyAweDMwND47IC8qIElSUSBsZXZlbCBoaWdoIHBlci1DUFUgKi8KKwkJCWNsb2NrcyA9IDwmc21wX3R3ZF9jbGs+OworCQl9OworCisJCWNsb2NrcyB7CisJCQljb21wYXRpYmxlID0gInN0ZXJpY3Nzb24sdTg1MDAtY2xrcyI7CisKKwkJCXNtcF90d2RfY2xrOiBzbXAtdHdkLWNsb2NrIHsKKwkJCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCQl9OworCQl9OworICAgICAgICB9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdXg1MDAvcG93ZXJfZG9tYWluLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdXg1MDAvcG93ZXJfZG9tYWluLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Njc5ZDE3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS91eDUwMC9wb3dlcl9kb21haW4udHh0CkBAIC0wLDAgKzEsMzUgQEAKKyogU1QtRXJpY3Nzb24gVVg1MDAgUE0gRG9tYWlucworCitVWDUwMCBzdXBwb3J0cyBtdWx0aXBsZSBQTSBkb21haW5zIHdoaWNoIGFyZSB1c2VkIHRvIGdhdGUgcG93ZXIgdG8gb25lIG9yCittb3JlIHBlcmlwaGVyYWxzIG9uIHRoZSBTT0MuCisKK1RoZSBpbXBsZW1lbnRhdGlvbiBvZiBQTSBkb21haW5zIGZvciBVWDUwMCBhcmUgYmFzZWQgdXBvbiB0aGUgZ2VuZXJpYyBQTSBkb21haW4KK2FuZCB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgRFQgYmluZGluZ3MuCisKKz09UE0gZG9tYWluIHByb3ZpZGVycz09CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiBNdXN0IGJlICJzdGVyaWNzc29uLHV4NTAwLXBtLWRvbWFpbnMiLgorIC0gI3Bvd2VyLWRvbWFpbi1jZWxscyA6IE51bWJlciBvZiBjZWxscyBpbiBhIHBvd2VyIGRvbWFpbiBzcGVjaWZpZXIsIG11c3QgYmUgMS4KKworRXhhbXBsZToKKwlwbV9kb21haW5zOiBwbV9kb21haW5zMCB7CisJCWNvbXBhdGlibGUgPSAic3Rlcmljc3Nvbix1eDUwMC1wbS1kb21haW5zIjsKKwkJI3Bvd2VyLWRvbWFpbi1jZWxscyA9IDwxPjsKKwl9OworCis9PVBNIGRvbWFpbiBjb25zdW1lcnM9PQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gcG93ZXItZG9tYWluczogQSBwaGFuZGxlIGFuZCBQTSBkb21haW4gc3BlY2lmaWVyLiBCZWxvdyBhcmUgdGhlIGxpc3Qgb2YKKwkJdmFsaWQgc3BlY2lmaWVyczoKKworCQlJbmRleAlTcGVjaWZpZXIKKwkJLS0tLS0JLS0tLS0tLS0tCisJCTAJRE9NQUlOX1ZBUEUKKworRXhhbXBsZToKKwlzZGkwX3BlcjFAODAxMjYwMDAgeworCQljb21wYXRpYmxlID0gImFybSxwbDE4eCIsICJhcm0scHJpbWVjZWxsIjsKKwkJcG93ZXItZG9tYWlucyA9IDwmcG1fZG9tYWlucyBET01BSU5fVkFQRT4KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS92ZXJzYXRpbGUtc3lzcmVnLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdmVyc2F0aWxlLXN5c3JlZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRmMTUyNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdmVyc2F0aWxlLXN5c3JlZy50eHQKQEAgLTAsMCArMSwxMCBAQAorQVJNIFZlcnNhdGlsZSBzeXN0ZW0gcmVnaXN0ZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGlzIGEgc3lzdGVtIGNvbnRyb2wgcmVnaXN0ZXJzIGJsb2NrLCBwcm92aWRpbmcgbXVsdGlwbGUgbG93IGxldmVsCitwbGF0Zm9ybSBmdW5jdGlvbnMgbGlrZSBib2FyZCBkZXRlY3Rpb24gYW5kIGlkZW50aWZpY2F0aW9uLCBzb2Z0d2FyZQoraW50ZXJydXB0IGdlbmVyYXRpb24sIE1NQyBhbmQgTk9SIEZsYXNoIGNvbnRyb2wgZXRjLgorCitSZXF1aXJlZCBub2RlIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgdmFsdWUgOiA9ICJhcm0sdmVyc2F0aWxlLXN5c3JlZyIsICJzeXNjb24iCistIHJlZyA6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgdGhlIHNpemUgb2YgdGhlIHJlZ2lzdGVycyB3aW5kb3cKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdmV4cHJlc3Mtc2NjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdmV4cHJlc3Mtc2NjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTUwNDNlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS92ZXhwcmVzcy1zY2MudHh0CkBAIC0wLDAgKzEsMzMgQEAKK0FSTSBWZXJzYXRpbGUgRXhwcmVzcyBTZXJpYWwgQ29uZmlndXJhdGlvbiBDb250cm9sbGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUZXN0IGNoaXBzIGZvciBBUk0gVmVyc2F0aWxlIEV4cHJlc3MgcGxhdGZvcm0gaW1wbGVtZW50IFNDQyAoU2VyaWFsCitDb25maWd1cmF0aW9uIENvbnRyb2xsZXIpIGludGVyZmFjZSwgdXNlZCB0byBzZXQgaW5pdGlhbCBjb25kaXRpb25zCitmb3IgdGhlIHRlc3QgY2hpcC4KKworSW4gc29tZSBjYXNlcyBpdHMgcmVnaXN0ZXJzIGFyZSBhbHNvIG1hcHBlZCBpbiBub3JtYWwgYWRkcmVzcyBzcGFjZQorYW5kIGNhbiBiZSB1c2VkIHRvIG9idGFpbiBydW50aW1lIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjaGlwIGludGVybmFscworKGxpa2Ugc2lsaWNvbiB0ZW1wZXJhdHVyZSBzZW5zb3JzKSBhbmQgYXMgaW50ZXJmYWNlIHRvIG90aGVyIHN1YnN5c3RlbXMKK2xpa2UgcGxhdGZvcm0gY29uZmlndXJhdGlvbiBjb250cm9sIGFuZCBwb3dlciBtYW5hZ2VtZW50LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgdmFsdWU6ICJhcm0sdmV4cHJlc3Mtc2NjLDxtb2RlbD4iLCAiYXJtLHZleHByZXNzLXNjYyI7CisJCSAgICB3aGVyZSA8bW9kZWw+IGlzIHRoZSBmdWxsIHRpbGUgbW9kZWwgbmFtZSAoYXMgdXNlZAorCQkgICAgaW4gdGhlIHRpbGUncyBUZWNobmljYWwgUmVmZXJlbmNlIE1hbnVhbCksCisJCSAgICBlZy4gZm9yIENvcmV0aWxlIEV4cHJlc3MgQTE1eDIgQTd4MyAoVjJQLUNBMTVfQTcpOgorCWNvbXBhdGlibGUgPSAiYXJtLHZleHByZXNzLXNjYyx2MnAtY2ExNV9hNyIsICJhcm0sdmV4cHJlc3Mtc2NjIjsKKworT3B0aW9uYWwgcHJvcGVydGllczoKKworLSByZWc6IHdoZW4gdGhlIFNDQyBpcyBtZW1vcnkgbWFwcGVkLCBwaHlzaWNhbCBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZQorICAgICAgIHJlZ2lzdGVycyB3aW5kb3cKKy0gaW50ZXJydXB0czogd2hlbiB0aGUgU0NDIGNhbiBnZW5lcmF0ZSBhIHN5c3RlbS1sZXZlbCBpbnRlcnJ1cHQKKworRXhhbXBsZToKKworCXNjY0A3ZmZmMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiYXJtLHZleHByZXNzLXNjYyx2MnAtY2ExNV9hNyIsICJhcm0sdmV4cHJlc3Mtc2NjIjsKKwkJcmVnID0gPDAgMHg3ZmZmMDAwMCAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MCA5NSA0PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS92ZXhwcmVzcy1zeXNyZWcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS92ZXhwcmVzcy1zeXNyZWcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwMzE4ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3ZleHByZXNzLXN5c3JlZy50eHQKQEAgLTAsMCArMSwxMDMgQEAKK0FSTSBWZXJzYXRpbGUgRXhwcmVzcyBzeXN0ZW0gcmVnaXN0ZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGlzIGEgc3lzdGVtIGNvbnRyb2wgcmVnaXN0ZXJzIGJsb2NrLCBwcm92aWRpbmcgbXVsdGlwbGUgbG93IGxldmVsCitwbGF0Zm9ybSBmdW5jdGlvbnMgbGlrZSBib2FyZCBkZXRlY3Rpb24gYW5kIGlkZW50aWZpY2F0aW9uLCBzb2Z0d2FyZQoraW50ZXJydXB0IGdlbmVyYXRpb24sIE1NQyBhbmQgTk9SIEZsYXNoIGNvbnRyb2wgZXRjLgorCitSZXF1aXJlZCBub2RlIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgdmFsdWUgOiA9ICJhcm0sdmV4cHJlc3Msc3lzcmVnIjsKKy0gcmVnIDogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCB0aGUgc2l6ZSBvZiB0aGUgcmVnaXN0ZXJzIHdpbmRvdworCitEZXByZWNhdGVkIHByb3BlcnRpZXMsIHJlcGxhY2VkIGJ5IEdQSU8gc3Vibm9kZXMgKHNlZSBiZWxvdyk6CistIGdwaW8tY29udHJvbGxlciA6IHNwZWNpZmllcyB0aGF0IHRoZSBub2RlIGlzIGEgR1BJTyBjb250cm9sbGVyCistICNncGlvLWNlbGxzIDogc2l6ZSBvZiB0aGUgR1BJTyBzcGVjaWZpZXIsIHNob3VsZCBiZSAyOgorICAtIGZpcnN0IGNlbGwgaXMgdGhlIHBzZXVkby1HUElPIGxpbmUgbnVtYmVyOgorICAgIDAgLSBNTUMgQ0FSRElOCisgICAgMSAtIE1NQyBXUFJPVAorICAgIDIgLSBOT1IgRkxBU0ggV1BuCisgIC0gc2Vjb25kIGNlbGwgY2FuIHRha2Ugc3RhbmRhcmQgR1BJTyBmbGFncyAoY3VycmVudGx5IGlnbm9yZWQpLgorCitDb250cm9sIHJlZ2lzdGVycyBwcm92aWRpbmcgcHNldWRvLUdQSU8gbGluZXMgbXVzdCBiZSByZXByZXNlbnRlZAorYnkgc3Vibm9kZXMsIGVhY2ggb2YgdGhlbSByZXF1aXJpbmcgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIHZhbHVlIDogb25lIG9mCisJCQkiYXJtLHZleHByZXNzLXN5c3JlZyxzeXNfbGVkIgorCQkJImFybSx2ZXhwcmVzcy1zeXNyZWcsc3lzX21jaSIKKwkJCSJhcm0sdmV4cHJlc3Mtc3lzcmVnLHN5c19mbGFzaCIKKy0gZ3Bpby1jb250cm9sbGVyIDogbWFrZXMgdGhlIG5vZGUgYSBHUElPIGNvbnRyb2xsZXIKKy0gI2dwaW8tY2VsbHMgOiBzaXplIG9mIHRoZSBHUElPIHNwZWNpZmllciwgbXVzdCBiZSAyOgorICAtIGZpcnN0IGNlbGwgaXMgdGhlIGZ1bmN0aW9uIG51bWJlcjoKKyAgICAtIGZvciBzeXNfbGVkIDogMC4uNyA9IExFRCAwLi43CisgICAgLSBmb3Igc3lzX21jaSA6IDAgPSBNTUMgQ0FSRElOLCAxID0gTU1DIFdQUk9UCisgICAgLSBmb3Igc3lzX2ZsYXNoIDogMCA9IE5PUiBGTEFTSCBXUG4KKyAgLSBzZWNvbmQgY2VsbCBjYW4gdGFrZSBzdGFuZGFyZCBHUElPIGZsYWdzIChjdXJyZW50bHkgaWdub3JlZCkuCisKK0V4YW1wbGU6CisJdjJtX3N5c3JlZzogc3lzcmVnQDEwMDAwMDAwIHsKKyAJCWNvbXBhdGlibGUgPSAiYXJtLHZleHByZXNzLXN5c3JlZyI7CisgCQlyZWcgPSA8MHgxMDAwMDAwMCAweDEwMDA+OworCisJCXYybV9sZWRfZ3Bpb3M6IHN5c19sZWRAMDggeworCQkJY29tcGF0aWJsZSA9ICJhcm0sdmV4cHJlc3Mtc3lzcmVnLHN5c19sZWQiOworCQkJZ3Bpby1jb250cm9sbGVyOworCQkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCX07CisKKwkJdjJtX21tY19ncGlvczogc3lzX21jaUA0OCB7CisJCQljb21wYXRpYmxlID0gImFybSx2ZXhwcmVzcy1zeXNyZWcsc3lzX21jaSI7CisJCQlncGlvLWNvbnRyb2xsZXI7CisJCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJfTsKKworCQl2Mm1fZmxhc2hfZ3Bpb3M6IHN5c19mbGFzaEA0YyB7CisJCQljb21wYXRpYmxlID0gImFybSx2ZXhwcmVzcy1zeXNyZWcsc3lzX2ZsYXNoIjsKKwkJCWdwaW8tY29udHJvbGxlcjsKKwkJCSNncGlvLWNlbGxzID0gPDI+OworCQl9OworIAl9OworCitUaGlzIGJsb2NrIGFsc28gY2FuIGFsc28gYWN0IGEgYnJpZGdlIHRvIHRoZSBwbGF0Zm9ybSdzIGNvbmZpZ3VyYXRpb24KK2J1cyB2aWEgInN5c3RlbSBjb250cm9sIiBpbnRlcmZhY2UsIGFkZHJlc3NpbmcgZGV2aWNlcyB3aXRoIHNpdGUgbnVtYmVyLAorcG9zaXRpb24gaW4gdGhlIGJvYXJkIHN0YWNrLCBjb25maWcgY29udHJvbGxlciwgZnVuY3Rpb24gYW5kIGRldmljZQorbnVtYmVycyAtIHNlZSBtb3RoZXJib2FyZCdzIFRSTSBmb3IgbW9yZSBkZXRhaWxzLiBBbGwgY29uZmlndXJhdGlvbgorY29udHJvbGxlciBhY2Nlc3NpYmxlIHZpYSB0aGlzIGludGVyZmFjZSBtdXN0IHJlZmVyZW5jZSB0aGUgc3lzcmVnCitub2RlIHZpYSAiYXJtLHZleHByZXNzLGNvbmZpZy1icmlkZ2UiIHBoYW5kbGUgYW5kIGRlZmluZSBhcHByb3ByaWF0ZQordG9wb2xvZ3kgcHJvcGVydGllcyAtIHNlZSBtYWluIHZleHByZXNzIG5vZGUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZQorZGV0YWlscy4gRWFjaCBjaGlsZCBvZiBzdWNoIG5vZGUgZGVzY3JpYmVzIG9uZSBmdW5jdGlvbiBhbmQgbXVzdAorZGVmaW5lIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSB2YWx1ZSA6IG11c3QgYmUgb25lIG9mIChjb3JyZXNwb25kaW5nIHRvIHRoZSBUUk0pOgorCSJhcm0sdmV4cHJlc3MtYW1wIgorCSJhcm0sdmV4cHJlc3MtZHZpbW9kZSIKKwkiYXJtLHZleHByZXNzLWVuZXJneSIKKwkiYXJtLHZleHByZXNzLW11eGZwZ2EiCisJImFybSx2ZXhwcmVzcy1vc2MiCisJImFybSx2ZXhwcmVzcy1wb3dlciIKKwkiYXJtLHZleHByZXNzLXJlYm9vdCIKKwkiYXJtLHZleHByZXNzLXJlc2V0IgorCSJhcm0sdmV4cHJlc3Mtc2NjIgorCSJhcm0sdmV4cHJlc3Mtc2h1dGRvd24iCisJImFybSx2ZXhwcmVzcy10ZW1wIgorCSJhcm0sdmV4cHJlc3Mtdm9sdCIKKy0gYXJtLHZleHByZXNzLXN5c3JlZyxmdW5jIDogbXVzdCBjb250YWluIGEgc2V0IG9mIHR3byBjZWxscyBsb25nIGdyb3VwczoKKyAgLSBmaXJzdCBjZWxsIG9mIGVhY2ggZ3JvdXAgZGVmaW5lcyB0aGUgZnVuY3Rpb24gbnVtYmVyCisgICAgKGVnLiAxIGZvciBjbG9jayBnZW5lcmF0b3IsIDIgZm9yIHZvbHRhZ2UgcmVndWxhdG9ycyBldGMuKQorICAtIHNlY29uZCBjZWxsIG9mIGVhY2ggZ3JvdXAgZGVmaW5lcyBkZXZpY2UgbnVtYmVyIChlZy4gb3NjIDAsCisgICAgb3NjIDEgZXRjLikKKyAgLSBzb21lIGZ1bmN0aW9ucyAoZWcuIGVuZXJneSBtZXRlciwgd2l0aCBpdHMgNjQgYml0IGxvbmcgY291bnRlcikKKyAgICBhcmUgdXNpbmcgbW9yZSB0aGFuIG9uZSBmdW5jdGlvbi9kZXZpY2UgbnVtYmVyIHBhaXIKKworRXhhbXBsZToKKwltY2MgeworCQljb21wYXRpYmxlID0gImFybSx2ZXhwcmVzcyxjb25maWctYnVzIjsKKwkJYXJtLHZleHByZXNzLGNvbmZpZy1icmlkZ2UgPSA8JnYybV9zeXNyZWc+OworCisJCW9zY0AwIHsKKwkJCWNvbXBhdGlibGUgPSAiYXJtLHZleHByZXNzLW9zYyI7CisJCQlhcm0sdmV4cHJlc3Mtc3lzcmVnLGZ1bmMgPSA8MSAwPjsKKwkJfTsKKworCQllbmVyZ3lAMCB7CisJCQljb21wYXRpYmxlID0gImFybSx2ZXhwcmVzcy1lbmVyZ3kiOworCQkJYXJtLHZleHByZXNzLXN5c3JlZyxmdW5jID0gPDEzIDA+LCA8MTMgMT47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdmV4cHJlc3MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS92ZXhwcmVzcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk4NDRjZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdmV4cHJlc3MudHh0CkBAIC0wLDAgKzEsMjI5IEBACitBUk0gVmVyc2F0aWxlIEV4cHJlc3MgYm9hcmRzIGZhbWlseQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQVJNJ3MgVmVyc2F0aWxlIEV4cHJlc3MgcGxhdGZvcm0gY29uc2lzdHMgb2YgYSBtb3RoZXJib2FyZCBhbmQgb25lCitvciBtb3JlIGRhdWdodGVyYm9hcmRzICh0aWxlcykuIFRoZSBtb3RoZXJib2FyZCBwcm92aWRlcyBhIHNldCBvZgorcGVyaXBoZXJhbHMuIFByb2Nlc3NvciBhbmQgUkFNICJsaXZlIiBvbiB0aGUgdGlsZXMuCisKK1RoZSBtb3RoZXJib2FyZCBhbmQgZWFjaCBjb3JlIHRpbGUgc2hvdWxkIGJlIGRlc2NyaWJlZCBieSBhIHNlcGFyYXRlCitEZXZpY2UgVHJlZSBzb3VyY2UgZmlsZSwgd2l0aCB0aGUgdGlsZSdzIGRlc2NyaXB0aW9uIGluY2x1ZGluZwordGhlIG1vdGhlcmJvYXJkIGZpbGUgdXNpbmcgYSAvaW5jbHVkZS8gZGlyZWN0aXZlLiBBcyB0aGUgbW90aGVyYm9hcmQKK2NhbiBiZSBpbml0aWFsaXplZCBpbiBvbmUgb2YgdHdvIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyAoIm1lbW9yeQorbWFwcyIpLCBjYXJlIG11c3QgYmUgdGFrZW4gdG8gaW5jbHVkZSB0aGUgY29ycmVjdCBvbmUuCisKKworUm9vdCBub2RlCistLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllcyBpbiB0aGUgcm9vdCBub2RlOgorLSBjb21wYXRpYmxlIHZhbHVlOgorCWNvbXBhdGlibGUgPSAiYXJtLHZleHByZXNzLDxtb2RlbD4iLCAiYXJtLHZleHByZXNzIjsKKyAgd2hlcmUgPG1vZGVsPiBpcyB0aGUgZnVsbCB0aWxlIG1vZGVsIG5hbWUgKGFzIHVzZWQgaW4gdGhlIHRpbGUncworICAgIFRlY2huaWNhbCBSZWZlcmVuY2UgTWFudWFsKSwgZWcuOgorICAgIC0gZm9yIENvcmV0aWxlIEV4cHJlc3MgQTV4MiAoVjJQLUNBNXMpOgorCWNvbXBhdGlibGUgPSAiYXJtLHZleHByZXNzLHYycC1jYTVzIiwgImFybSx2ZXhwcmVzcyI7CisgICAgLSBmb3IgQ29yZXRpbGUgRXhwcmVzcyBBOXg0IChWMlAtQ0E5KToKKwljb21wYXRpYmxlID0gImFybSx2ZXhwcmVzcyx2MnAtY2E5IiwgImFybSx2ZXhwcmVzcyI7CisgIElmIGEgdGlsZSBjb21lcyBpbiBzZXZlcmFsIHZhcmlhbnRzIG9yIGNhbiBiZSB1c2VkIGluIG1vcmUgdGhlbiBvbmUKKyAgY29uZmlndXJhdGlvbiwgdGhlIGNvbXBhdGlibGUgdmFsdWUgc2hvdWxkIGJlOgorCWNvbXBhdGlibGUgPSAiYXJtLHZleHByZXNzLDxtb2RlbD4sPHZhcmlhbnQ+IiwgXAorCQkJCSJhcm0sdmV4cHJlc3MsPG1vZGVsPiIsICJhcm0sdmV4cHJlc3MiOworICBlZzoKKyAgICAtIENvcmV0aWxlIEV4cHJlc3MgQTE1eDIgKFYyUC1DQTE1KSB3aXRoIFRlY2ggQ2hpcCAxOgorCWNvbXBhdGlibGUgPSAiYXJtLHZleHByZXNzLHYycC1jYTE1LHRjMSIsIFwKKwkJCQkiYXJtLHZleHByZXNzLHYycC1jYTE1IiwgImFybSx2ZXhwcmVzcyI7CisgICAgLSBMb2dpY1RpbGUgRXhwcmVzcyAxM01HIChWMkYtMlhWNikgcnVubmluZyBDb3J0ZXgtQTcgKDMgY29yZXMpIFNNTToKKwljb21wYXRpYmxlID0gImFybSx2ZXhwcmVzcyx2MmYtMnh2NixjYTd4MyIsIFwKKwkJCQkiYXJtLHZleHByZXNzLHYyZi0yeHY2IiwgImFybSx2ZXhwcmVzcyI7CisKK09wdGlvbmFsIHByb3BlcnRpZXMgaW4gdGhlIHJvb3Qgbm9kZToKKy0gdGlsZSBtb2RlbCBuYW1lICh1c2UgbmFtZSBmcm9tIHRoZSB0aWxlJ3MgVGVjaG5pY2FsIFJlZmVyZW5jZQorICBNYW51YWwsIGVnLiAiVjJQLUNBNXMiKQorCW1vZGVsID0gIjxtb2RlbD4iOworLSB0aWxlJ3MgSEJJIG51bWJlciAodW5pcXVlIEFSTSdzIGJvYXJkIG1vZGVsIElELCB2aXNpYmxlIG9uIHRoZQorICBQQ0IncyBzaWxrc2NyZWVuKSBpbiBoZXhhZGVjaW1hbCB0cmFuc2NyaXB0aW9uOgorCWFybSxoYmkgPSA8MHhoYmk+CisgIGVnOgorICAtIGZvciBDb3JldGlsZSBFeHByZXNzIEE1eDIgKFYyUC1DQTVzKSBIQkktMDE5MToKKwlhcm0saGJpID0gPDB4MTkxPjsKKyAgLSBDb3JldGlsZSBFeHByZXNzIEE5eDQgKFYyUC1DQTkpIEhCSS0wMjI1OgorCWFybSxoYmkgPSA8MHgyMjU+OworCisKK0NQVSBub2RlcworLS0tLS0tLS0tCisKK1RvcC1sZXZlbCBzdGFuZGFyZCAiY3B1cyIgbm9kZSBpcyByZXF1aXJlZC4gSXQgbXVzdCBjb250YWluIGEgbm9kZQord2l0aCBkZXZpY2VfdHlwZSA9ICJjcHUiIHByb3BlcnR5IGZvciBldmVyeSBhdmFpbGFibGUgY29yZSwgZWcuOgorCisJY3B1cyB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQljcHVAMCB7CisJCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE1IjsKKwkJCXJlZyA9IDwwPjsKKwkJfTsKKwl9OworCisKK0NvbmZpZ3VyYXRpb24gaW5mcmFzdHJ1Y3R1cmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHBsYXRmb3JtIGhhcyBhbiBlbGFib3JhdGVkIGNvbmZpZ3VyYXRpb24gc3lzdGVtLCBjb25zaXN0aW5nIG9mCittaWNyb2NvbnRyb2xsZXJzIHJlc2lkaW5nIG9uIHRoZSBtb3RoZXItIGFuZCBkYXVnaHRlcmJvYXJkcyBrbm93bgorYXMgTW90aGVyYm9hcmQvRGF1Z2h0ZXJib2FyZCBDb25maWd1cmF0aW9uIENvbnRyb2xsZXIgKE1DQyBhbmQgRENDKS4KK1RoZSBjb250cm9sbGVycyBhcmUgcmVzcG9uc2libGUgZm9yIHRoZSBwbGF0Zm9ybSBpbml0aWFsaXphdGlvbgorKHJlc2V0IGdlbmVyYXRpb24sIGZsYXNoIHByb2dyYW1taW5nLCBGUEdBIGJpdGZpbGVzIGxvYWRpbmcgZXRjLikKK2J1dCBhbHNvIGNvbnRyb2wgY2xvY2sgZ2VuZXJhdG9ycywgdm9sdGFnZSByZWd1bGF0b3JzLCBnYXRoZXIKK2Vudmlyb25tZW50YWwgZGF0YSBsaWtlIHRlbXBlcmF0dXJlLCBwb3dlciBjb25zdW1wdGlvbiBldGMuIEV2ZW4KK3RoZSB2aWRlbyBvdXRwdXQgc3dpdGNoIChGUEdBKSBpcyBjb250cm9sbGVkIHRoYXQgd2F5LgorCitUaGUgY29udHJvbGxlcnMgYXJlIG5vdCBtYXBwZWQgaW50byBub3JtYWwgbWVtb3J5IGFkZHJlc3Mgc3BhY2UKK2FuZCBtdXN0IGJlIGFjY2Vzc2VkIHRocm91Z2ggYnJpZGdlcyAtIG90aGVyIGRldmljZXMgY2FwYWJsZQorb2YgZ2VuZXJhdGluZyB0cmFuc2FjdGlvbnMgb24gdGhlIGNvbmZpZ3VyYXRpb24gYnVzLgorCitUaGUgbm9kZXMgZGVzY3JpYmluZyBjb25maWd1cmF0aW9uIGNvbnRyb2xsZXJzIG11c3QgZGVmaW5lCit0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgdmFsdWU6CisJY29tcGF0aWJsZSA9ICJhcm0sdmV4cHJlc3MsY29uZmlnLWJ1cyI7CistIGJyaWRnZSBwaGFuZGxlOgorCWFybSx2ZXhwcmVzcyxjb25maWctYnJpZGdlID0gPHBoYW5kbGU+OworYW5kIGNoaWxkcmVuIGRlc2NyaWJpbmcgYXZhaWxhYmxlIGZ1bmN0aW9ucy4KKworCitQbGF0Zm9ybSB0b3BvbG9neQorLS0tLS0tLS0tLS0tLS0tLS0KKworQXMgVmVyc2F0aWxlIEV4cHJlc3MgY2FuIGJlIGNvbmZpZ3VyZWQgaW4gbnVtYmVyIG9mIHBoeXNpY2FsbHkKK2RpZmZlcmVudCBzZXR1cHMsIHRoZSBkZXZpY2UgdHJlZSBzaG91bGQgZGVzY3JpYmUgcGxhdGZvcm0gdG9wb2xvZ3kuCitSb290IG5vZGUgYW5kIG1haW4gbW90aGVyYm9hcmQgbm9kZSBtdXN0IGRlZmluZSB0aGUgZm9sbG93aW5nCitwcm9wZXJ0eSwgZGVzY3JpYmluZyBwaHlzaWNhbCBsb2NhdGlvbiBvZiB0aGUgY2hpbGRyZW4gbm9kZXM6CistIHNpdGUgbnVtYmVyOgorCWFybSx2ZXhwcmVzcyxzaXRlID0gPG51bWJlcj47CisgIHdoZXJlIDAgbWVhbnMgbW90aGVyYm9hcmQsIDEgb3IgMiBhcmUgZGF1Z3RoZXJib2FyZCBzaXRlcywKKyAgMHhmIG1lYW5zICJtYXN0ZXIiIHNpdGUgKHNpdGUgY29udGFpbmluZyBtYWluIENQVSB0aWxlKQorLSB3aGVuIGRhdWdodGVyYm9hcmRzIGFyZSBzdGFja2VkIG9uIG9uZSBzaXRlLCB0aGVpciBwb3NpdGlvbgorICBpbiB0aGUgc3RhY2sgYmUgYmUgZGVzY3JpYmVkIHdpdGg6CisJYXJtLHZleHByZXNzLHBvc2l0aW9uID0gPG51bWJlcj47CistIHdoZW4gZGVzY3JpYmluZyB0aWxlcyBjb25zaXN0aW5nIG1vcmUgdGhhbiBvbmUgRENDLCBpdHMgbnVtYmVyCisgIGNhbiBiZSBkZXNjcmliZWQgd2l0aDoKKwlhcm0sdmV4cHJlc3MsZGNjID0gPG51bWJlcj47CisKK0FueSBvZiB0aGUgbnVtYmVycyBhYm92ZSBkZWZhdWx0cyB0byB6ZXJvIGlmIG5vdCBkZWZpbmVkIGluCit0aGUgbm9kZSBvciBhbnkgb2YgaXRzIHBhcmVudC4KKworCitNb3RoZXJib2FyZAorLS0tLS0tLS0tLS0KKworVGhlIG1vdGhlcmJvYXJkIGRlc2NyaXB0aW9uIGZpbGUgcHJvdmlkZXMgYSBzaW5nbGUgIm1vdGhlcmJvYXJkIiBub2RlCit1c2luZyAyIGFkZHJlc3MgY2VsbHMgY29ycmVzcG9uZGluZyB0byB0aGUgU3RhdGljIE1lbW9yeSBCdXMgdXNlZAorYmV0d2VlbiB0aGUgbW90aGVyYm9hcmQgYW5kIHRoZSB0aWxlLiBUaGUgZmlyc3QgY2VsbCBkZWZpbmVzIHRoZSBDaGlwCitTZWxlY3QgKENTKSBsaW5lIG51bWJlciwgdGhlIHNlY29uZCBjZWxsIGFkZHJlc3Mgb2Zmc2V0IHdpdGhpbiB0aGUgQ1MuCitBbGwgaW50ZXJydXB0IGxpbmVzIGJldHdlZW4gdGhlIG1vdGhlcmJvYXJkIGFuZCB0aGUgdGlsZSBhcmUgYWN0aXZlCitoaWdoIGFuZCBhcmUgZGVzY3JpYmVkIHVzaW5nIHNpbmdsZSBjZWxsLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzIG9mIHRoZSAibW90aGVyYm9hcmQiIG5vZGU6CistIG1vdGhlcmJvYXJkJ3MgbWVtb3J5IG1hcCB2YXJpYW50OgorCWFybSx2Mm0tbWVtb3J5LW1hcCA9ICI8bmFtZT4iOworICB3aGVyZSBuYW1lIGlzIG9uZSBvZjoKKyAgLSAicnMxIiAtIGZvciBSUzEgbWFwIChpLmEuIHBlcmlwaGVyYWxzIG9uIENTMyk7IHRoaXMgbWFwIGlzIGFsc28KKyAgICAgICAgICAgIHJlZmVycmVkIHRvIGFzICJBUk0gQ29ydGV4LUEgU2VyaWVzIG1lbW9yeSBtYXAiOgorCWFybSx2Mm0tbWVtb3J5LW1hcCA9ICJyczEiOworICBXaGVuIHRoaXMgcHJvcGVydHkgaXMgbWlzc2luZywgdGhlIG1vdGhlcmJvYXJkIGlzIHVzaW5nIHRoZSBvcmlnaW5hbAorICBtZW1vcnkgbWFwIChhbHNvIGtub3duIGFzIHRoZSAiTGVnYWN5IG1lbW9yeSBtYXAiLCBwcmltYXJpbHkgdXNlZAorICB3aXRoIHRoZSBvcmlnaW5hbCBDb3JlVGlsZSBFeHByZXNzIEE5eDQpIHdpdGggcGVyaXBoZXJhbHMgb24gQ1M3LgorCitNb3RoZXJib2FyZCAuZHRzaSBmaWxlcyBwcm92aWRlIGEgc2V0IG9mIGxhYmVsbGVkIHBlcmlwaGVyYWxzIHRoYXQKK2NhbiBiZSB1c2VkIHRvIG9idGFpbiByZXF1aXJlZCBwaGFuZGxlIGluIHRoZSB0aWxlJ3MgImFsaWFzZXMiIG5vZGU6CistIFVBUlRzLCBub3RlIHRoYXQgdGhlIG51bWJlcnMgY29ycmVzcG9uZCB0byB0aGUgcGh5c2ljYWwgY29ubmVjdG9ycworICBvbiB0aGUgbW90aGVyYm9hcmQncyBiYWNrIHBhbmVsOgorCXYybV9zZXJpYWwwLCB2Mm1fc2VyaWFsMSwgdjJtX3NlcmlhbDIgYW5kIHYybV9zZXJpYWwzCistIEkyQyBjb250cm9sbGVyczoKKwl2Mm1faTJjX2R2aSBhbmQgdjJtX2kyY19wY2llCistIFNQODA0IHRpbWVyczoKKwl2Mm1fdGltZXIwMSBhbmQgdjJtX3RpbWVyMjMKKworVGhlIHRpbGUgZGVzY3JpcHRpb24gc2hvdWxkIGRlZmluZSBhICJzbWIiIG5vZGUsIGRlc2NyaWJpbmcgdGhlCitTdGF0aWMgTWVtb3J5IEJ1cyBiZXR3ZWVuIHRoZSB0aWxlIGFuZCBtb3RoZXJib2FyZC4gSXQgbXVzdCBkZWZpbmUKK3RoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKKy0gInNpbXBsZS1idXMiIGNvbXBhdGlibGUgdmFsdWUgKHRvIGVuc3VyZSBjcmVhdGlvbiBvZiB0aGUgY2hpbGRyZW4pCisJY29tcGF0aWJsZSA9ICJzaW1wbGUtYnVzIjsKKy0gbWFwcGluZyBvZiB0aGUgU01CIENTL29mZnNldCBhZGRyZXNzZXMgaW50byBtYWluIGFkZHJlc3Mgc3BhY2U6CisJI2FkZHJlc3MtY2VsbHMgPSA8Mj47CisJI3NpemUtY2VsbHMgPSA8MT47CisJcmFuZ2VzID0gPC4uLj47CistIGludGVycnVwdHMgbWFwcGluZzoKKwkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCWludGVycnVwdC1tYXAtbWFzayA9IDwwIDAgNjM+OworCWludGVycnVwdC1tYXAgPSA8Li4uPjsKKworCitFeGFtcGxlIG9mIGEgVkUgdGlsZSBkZXNjcmlwdGlvbiAoc2ltcGxpZmllZCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvZHRzLXYxLzsKKworLyB7CisJbW9kZWwgPSAiVjJQLUNBNXMiOworCWFybSxoYmkgPSA8MHgyMjU+OworCWFybSx2ZXhwcmVzcyxzaXRlID0gPDB4Zj47CisJY29tcGF0aWJsZSA9ICJhcm0sdmV4cHJlc3MtdjJwLWNhNXMiLCAiYXJtLHZleHByZXNzIjsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZnaWM+OworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDE+OworCisJY2hvc2VuIHsgfTsKKworCWFsaWFzZXMgeworCQlzZXJpYWwwID0gJnYybV9zZXJpYWwwOworCX07CisKKwljcHVzIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCisJCWNwdUAwIHsKKwkJCWRldmljZV90eXBlID0gImNwdSI7CisJCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTUiOworCQkJcmVnID0gPDA+OworCQl9OworCX07CisKKwlnaWM6IGludGVycnVwdC1jb250cm9sbGVyQDJjMDAxMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE5LWdpYyI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mz47CisJCSNhZGRyZXNzLWNlbGxzID0gPDA+OworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJcmVnID0gPDB4MmMwMDEwMDAgMHgxMDAwPiwKKwkJICAgICAgPDB4MmMwMDAxMDAgMHgxMDA+OworCX07CisKKwlkY2MgeworCQljb21wYXRpYmxlID0gImFybSx2ZXhwcmVzcyxjb25maWctYnVzIjsKKwkJYXJtLHZleHByZXNzLGNvbmZpZy1icmlkZ2UgPSA8JnYybV9zeXNyZWc+OworCisJCW9zY0AwIHsKKwkJCWNvbXBhdGlibGUgPSAiYXJtLHZleHByZXNzLW9zYyI7CisJCX07CisJfTsKKworCXNtYiB7CisJCWNvbXBhdGlibGUgPSAic2ltcGxlLWJ1cyI7CisKKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mj47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQkvKiBDUzAgaXMgdmlzaWJsZSBhdCAweDA4MDAwMDAwICovCisJCXJhbmdlcyA9IDwwIDAgMHgwODAwMDAwMCAweDA0MDAwMDAwPjsKKworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCQlpbnRlcnJ1cHQtbWFwLW1hc2sgPSA8MCAwIDYzPjsKKwkJLyogQWN0aXZlIGhpZ2ggSVJRIDAgaXMgY29ubmVjdGVkIHRvIEdJQydzIFNQSTAgKi8KKwkJaW50ZXJydXB0LW1hcCA9IDwwIDAgMCAmZ2ljIDAgMCA0PjsKKworCQkvaW5jbHVkZS8gInZleHByZXNzLXYybS1yczEuZHRzaSIKKwl9OworfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS92dDg1MDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS92dDg1MDAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3ZGMxZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3Z0ODUwMC50eHQKQEAgLTAsMCArMSwyMiBAQAorVklBL1dvbmRlcm1lZGlhIFZUODUwMCBQbGF0Zm9ybXMgRGV2aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCb2FyZHMgd2l0aCB0aGUgVklBIFZUODUwMCBTb0Mgc2hhbGwgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydHk6Citjb21wYXRpYmxlID0gInZpYSx2dDg1MDAiOworCitCb2FyZHMgd2l0aCB0aGUgV29uZGVybWVkaWEgV004NTA1IFNvQyBzaGFsbCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0eToKK2NvbXBhdGlibGUgPSAid20sd204NTA1IjsKKworQm9hcmRzIHdpdGggdGhlIFdvbmRlcm1lZGlhIFdNODY1MCBTb0Mgc2hhbGwgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CitSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydHk6Citjb21wYXRpYmxlID0gIndtLHdtODY1MCI7CisKK0JvYXJkcyB3aXRoIHRoZSBXb25kZXJtZWRpYSBXTTg3NTAgU29DIHNoYWxsIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnR5OgorY29tcGF0aWJsZSA9ICJ3bSx3bTg3NTAiOworCitCb2FyZHMgd2l0aCB0aGUgV29uZGVybWVkaWEgV004ODUwIFNvQyBzaGFsbCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0eToKK2NvbXBhdGlibGUgPSAid20sd204ODUwIjsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdnQ4NTAwL3ZpYSx2dDg1MDAtcG1jLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdnQ4NTAwL3ZpYSx2dDg1MDAtcG1jLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjFiOWM3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS92dDg1MDAvdmlhLHZ0ODUwMC1wbWMudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1ZJQS9Xb25kZXJtZWRpYSBWVDg1MDAgUG93ZXIgTWFuYWdlbWVudCBDb250cm9sbGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogInZpYSx2dDg1MDAtcG1jIgorLSByZWcgOiBTaG91bGQgY29udGFpbiAxIHJlZ2lzdGVyIHJhbmdlcyhhZGRyZXNzIGFuZCBsZW5ndGgpCisKK0V4YW1wbGU6CisKKwlwbWNAZDgxMzAwMDAgeworCQljb21wYXRpYmxlID0gInZpYSx2dDg1MDAtcG1jIjsKKwkJcmVnID0gPDB4ZDgxMzAwMDAgMHgxMDAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS92dDg1MDAvdmlhLHZ0ODUwMC10aW1lci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3Z0ODUwMC92aWEsdnQ4NTAwLXRpbWVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDFjNzNmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS92dDg1MDAvdmlhLHZ0ODUwMC10aW1lci50eHQKQEAgLTAsMCArMSwxNSBAQAorVklBL1dvbmRlcm1lZGlhIFZUODUwMCBUaW1lcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJ2aWEsdnQ4NTAwLXRpbWVyIgorLSByZWcgOiBTaG91bGQgY29udGFpbiAxIHJlZ2lzdGVyIHJhbmdlcyhhZGRyZXNzIGFuZCBsZW5ndGgpCistIGludGVycnVwdHMgOiBpbnRlcnJ1cHQgZm9yIHRoZSB0aW1lcgorCitFeGFtcGxlOgorCisJdGltZXJAZDgxMzAxMDAgeworCQljb21wYXRpYmxlID0gInZpYSx2dDg1MDAtdGltZXIiOworCQlyZWcgPSA8MHhkODEzMDEwMCAweDI4PjsKKwkJaW50ZXJydXB0cyA9IDwzNj47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0veGVuLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0veGVuLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjdiOWMyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS94ZW4udHh0CkBAIC0wLDAgKzEsMjUgQEAKKyogWGVuIGh5cGVydmlzb3IgZGV2aWNlIHRyZWUgYmluZGluZ3MKKworWGVuIEFSTSB2aXJ0dWFsIHBsYXRmb3JtcyBzaGFsbCBoYXZlIGEgdG9wLWxldmVsICJoeXBlcnZpc29yIiBub2RlIHdpdGgKK3RoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOgorCWNvbXBhdGlibGUgPSAieGVuLHhlbi08dmVyc2lvbj4iLCAieGVuLHhlbiI7CisgIHdoZXJlIDx2ZXJzaW9uPiBpcyB0aGUgdmVyc2lvbiBvZiB0aGUgWGVuIEFCSSBvZiB0aGUgcGxhdGZvcm0uCisKKy0gcmVnOiBzcGVjaWZpZXMgdGhlIGJhc2UgcGh5c2ljYWwgYWRkcmVzcyBhbmQgc2l6ZSBvZiBhIHJlZ2lvbiBpbgorICBtZW1vcnkgd2hlcmUgdGhlIGdyYW50IHRhYmxlIHNob3VsZCBiZSBtYXBwZWQgdG8sIHVzaW5nIGFuCisgIEhZUEVSVklTT1JfbWVtb3J5X29wIGh5cGVyY2FsbC4gVGhlIG1lbW9yeSByZWdpb24gaXMgbGFyZ2UgZW5vdWdoIHRvIG1hcAorICB0aGUgd2hvbGUgZ3JhbnQgdGFibGUgKGl0IGlzIGxhcmdlciBvciBlcXVhbCB0byBnbnR0YWJfbWF4X2dyYW50X2ZyYW1lcygpKS4KKworLSBpbnRlcnJ1cHRzOiB0aGUgaW50ZXJydXB0IHVzZWQgYnkgWGVuIHRvIGluamVjdCBldmVudCBub3RpZmljYXRpb25zLgorICBBIEdJQyBub2RlIGlzIGFsc28gcmVxdWlyZWQuCisKKworRXhhbXBsZSAoYXNzdW1pbmcgI2FkZHJlc3MtY2VsbHMgPSA8Mj4gYW5kICNzaXplLWNlbGxzID0gPDI+KToKKworaHlwZXJ2aXNvciB7CisJY29tcGF0aWJsZSA9ICJ4ZW4seGVuLTQuMyIsICJ4ZW4seGVuIjsKKwlyZWcgPSA8MCAweGIwMDAwMDAwIDAgMHgyMDAwMD47CisJaW50ZXJydXB0cyA9IDwxIDE1IDB4ZjA4PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3hpbGlueC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3hpbGlueC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY3OTk1MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0veGlsaW54LnR4dApAQCAtMCwwICsxLDcgQEAKK1hpbGlueCBaeW5xIFBsYXRmb3JtcyBEZXZpY2UgVHJlZSBCaW5kaW5ncworCitCb2FyZHMgd2l0aCBaeW5xLTcwMDAgU09DIGJhc2VkIG9uIGFuIEFSTSBDb3J0ZXggQTkgcHJvY2Vzc29yCitzaGFsbCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcy4KKworUmVxdWlyZWQgcm9vdCBub2RlIHByb3BlcnRpZXM6CisgICAgLSBjb21wYXRpYmxlID0gInhsbngsenlucS03MDAwIjsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0venRlLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0venRlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmY1YzllCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS96dGUudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1pURSBwbGF0Zm9ybXMgZGV2aWNlIHRyZWUgYmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistICBaWDI5NjcwMiBib2FyZDoKKyAgICBSZXF1aXJlZCByb290IG5vZGUgcHJvcGVydGllczoKKyAgICAgIC0gY29tcGF0aWJsZSA9ICJ6dGUsengyOTY3MDItYWQxIiwgInp0ZSx6eDI5NjcwMiIKKworU3lzdGVtIG1hbmFnZW1lbnQgcmVxdWlyZWQgcHJvcGVydGllczoKKyAgICAgIC0gY29tcGF0aWJsZSA9ICJ6dGUsc3lzY3RybCIKKworTG93IHBvd2VyIG1hbmFnZW1lbnQgcmVxdWlyZWQgcHJvcGVydGllczoKKyAgICAgIC0gY29tcGF0aWJsZSA9ICJ6dGUsengyOTY3MDItcGN1IgorCitCdXMgbWF0cml4IHJlcXVpcmVkIHByb3BlcnRpZXM6CisgICAgICAtIGNvbXBhdGlibGUgPSAienRlLHp4LWJ1cy1tYXRyaXgiCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXRhL2FoY2ktY2V2YS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXRhL2FoY2ktY2V2YS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NhOGI5NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdGEvYWhjaS1jZXZhLnR4dApAQCAtMCwwICsxLDIwIEBACitCaW5kaW5nIGZvciBDRVZBIEFIQ0kgU0FUQSBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gcmVnOiBQaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlciBhcmVhLgorICAtIGNvbXBhdGlibGU6IENvbXBhdGliaWxpdHkgc3RyaW5nLiBNdXN0IGJlICdjZXZhLGFoY2ktMXY4NCcuCisgIC0gY2xvY2tzOiBJbnB1dCBjbG9jayBzcGVjaWZpZXIuIFJlZmVyIHRvIGNvbW1vbiBjbG9jayBiaW5kaW5ncy4KKyAgLSBpbnRlcnJ1cHRzOiBJbnRlcnJ1cHQgc3BlY2lmaWVyLiBSZWZlciB0byBpbnRlcnJ1cHQgYmluZGluZy4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAgLSBjZXZhLGJyb2tlbi1nZW4yOiBsaW1pdCB0byBnZW4xIHNwZWVkIGluc3RlYWQgb2YgZ2VuMi4KKworRXhhbXBsZXM6CisJYWhjaUBmZDBjMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiY2V2YSxhaGNpLTF2ODQiOworCQlyZWcgPSA8MHhmZDBjMDAwMCAweDIwMD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdpYz47CisJCWludGVycnVwdHMgPSA8MCAxMzMgND47CisJCWNsb2NrcyA9IDwmY2xrYyBTQVRBX0NMS19JRD47CisJCWNldmEsYnJva2VuLWdlbjI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdGEvYWhjaS1mc2wtcW9yaXEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2F0YS9haGNpLWZzbC1xb3JpcS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMyYTc2MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdGEvYWhjaS1mc2wtcW9yaXEudHh0CkBAIC0wLDAgKzEsMjEgQEAKK0JpbmRpbmcgZm9yIEZyZWVzY2FsZSBRb3JJUSBBSENJIFNBVEEgQ29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSBjb250cm9sbGVyJ3MgcmVnaXN0ZXIgYXJlYS4KKyAgLSBjb21wYXRpYmxlOiBDb21wYXRpYmlsaXR5IHN0cmluZy4gTXVzdCBiZSAnZnNsLDxjaGlwPi1haGNpJywgd2hlcmUKKyAgICBjaGlwIGNvdWxkIGJlIGxzMTAyMWEsIGxzMjA4MGEsIGxzMTA0M2EgZXRjLgorICAtIGNsb2NrczogSW5wdXQgY2xvY2sgc3BlY2lmaWVyLiBSZWZlciB0byBjb21tb24gY2xvY2sgYmluZGluZ3MuCisgIC0gaW50ZXJydXB0czogSW50ZXJydXB0IHNwZWNpZmllci4gUmVmZXIgdG8gaW50ZXJydXB0IGJpbmRpbmcuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgIC0gZG1hLWNvaGVyZW50OiBFbmFibGUgQUhDSSBjb2hlcmVudCBETUEgb3BlcmF0aW9uLgorICAtIHJlZy1uYW1lczogcmVnaXN0ZXIgYXJlYSBuYW1lcyB3aGVuIHRoZXJlIGFyZSBtb3JlIHRoYW4gMSByZWdpc3RlciBhcmVhLgorCitFeGFtcGxlczoKKwlzYXRhQDMyMDAwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxsczEwMjFhLWFoY2kiOworCQlyZWcgPSA8MHgwIDB4MzIwMDAwMCAweDAgMHgxMDAwMD47CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSAxMDEgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWNsb2NrcyA9IDwmcGxhdGZvcm1fY2xrIDE+OworCQlkbWEtY29oZXJlbnQ7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdGEvYWhjaS1wbGF0Zm9ybS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXRhL2FoY2ktcGxhdGZvcm0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMDA4MzIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXRhL2FoY2ktcGxhdGZvcm0udHh0CkBAIC0wLDAgKzEsODQgQEAKKyogQUhDSSBTQVRBIENvbnRyb2xsZXIKKworU0FUQSBub2RlcyBhcmUgZGVmaW5lZCB0byBkZXNjcmliZSBvbi1jaGlwIFNlcmlhbCBBVEEgY29udHJvbGxlcnMuCitFYWNoIFNBVEEgY29udHJvbGxlciBzaG91bGQgaGF2ZSBpdHMgb3duIG5vZGUuCisKK0l0IGlzIHBvc3NpYmxlLCBidXQgbm90IHJlcXVpcmVkLCB0byByZXByZXNlbnQgZWFjaCBwb3J0IGFzIGEgc3ViLW5vZGUuCitJdCBhbGxvd3MgdG8gZW5hYmxlIGVhY2ggcG9ydCBpbmRlcGVuZGVudGx5IHdoZW4gZGVhbGluZyB3aXRoIG11bHRpcGxlCitQSFlzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlICAgICAgICA6IGNvbXBhdGlibGUgc3RyaW5nLCBvbmUgb2Y6CisgIC0gImFsbHdpbm5lcixzdW40aS1hMTAtYWhjaSIKKyAgLSAiaGlzaWxpY29uLGhpc2ktYWhjaSIKKyAgLSAiaWJtLDQ3Nmd0ci1haGNpIgorICAtICJtYXJ2ZWxsLGFybWFkYS0zODAtYWhjaSIKKyAgLSAic25wcyxkd2MtYWhjaSIKKyAgLSAic25wcyxleHlub3M1NDQwLWFoY2kiCisgIC0gInNucHMsc3BlYXItYWhjaSIKKyAgLSAiZ2VuZXJpYy1haGNpIgorLSBpbnRlcnJ1cHRzICAgICAgICA6IDxpbnRlcnJ1cHQgbWFwcGluZyBmb3IgU0FUQSBJUlE+CistIHJlZyAgICAgICAgICAgICAgIDogPHJlZ2lzdGVycyBtYXBwaW5nPgorCitQbGVhc2Ugbm90ZSB0aGF0IHdoZW4gdXNpbmcgImdlbmVyaWMtYWhjaSIgeW91IG11c3QgYWxzbyBzcGVjaWZ5IGEgU29DIHNwZWNpZmljCitjb21wYXRpYmxlOgorCWNvbXBhdGlibGUgPSAibWFudWZhY3R1cmVyLHNvYy1tb2RlbC1haGNpIiwgImdlbmVyaWMtYWhjaSI7CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGRtYS1jb2hlcmVudCAgICAgIDogUHJlc2VudCBpZiBkbWEgb3BlcmF0aW9ucyBhcmUgY29oZXJlbnQKKy0gY2xvY2tzICAgICAgICAgICAgOiBhIGxpc3Qgb2YgcGhhbmRsZSArIGNsb2NrIHNwZWNpZmllciBwYWlycworLSB0YXJnZXQtc3VwcGx5ICAgICA6IHJlZ3VsYXRvciBmb3IgU0FUQSB0YXJnZXQgcG93ZXIKKy0gcGh5cyAgICAgICAgICAgICAgOiByZWZlcmVuY2UgdG8gdGhlIFNBVEEgUEhZIG5vZGUKKy0gcGh5LW5hbWVzICAgICAgICAgOiBtdXN0IGJlICJzYXRhLXBoeSIKKy0gcG9ydHMtaW1wbGVtZW50ZWQgOiBNYXNrIHRoYXQgaW5kaWNhdGVzIHdoaWNoIHBvcnRzIHRoYXQgdGhlIEhCQSBzdXBwb3J0cworCQkgICAgICBhcmUgYXZhaWxhYmxlIGZvciBzb2Z0d2FyZSB0byB1c2UuIFVzZWZ1bCBpZiBQT1JUU19JTVBMCisJCSAgICAgIGlzIG5vdCBwcm9ncmFtbWVkIGJ5IHRoZSBCSU9TLCB3aGljaCBpcyB0cnVlIHdpdGgKKwkJICAgICAgc29tZSBlbWJlZGRlZCBTT0Mncy4KKworUmVxdWlyZWQgcHJvcGVydGllcyB3aGVuIHVzaW5nIHN1Yi1ub2RlczoKKy0gI2FkZHJlc3MtY2VsbHMgICAgOiBudW1iZXIgb2YgY2VsbHMgdG8gZW5jb2RlIGFuIGFkZHJlc3MKKy0gI3NpemUtY2VsbHMgICAgICAgOiBudW1iZXIgb2YgY2VsbHMgcmVwcmVzZW50aW5nIHRoZSBzaXplIG9mIGFuIGFkZHJlc3MKKworCitTdWItbm9kZXMgcmVxdWlyZWQgcHJvcGVydGllczoKKy0gcmVnCQkgICAgOiB0aGUgcG9ydCBudW1iZXIKK0FuZCBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorLSBwaHlzCQkgICAgOiByZWZlcmVuY2UgdG8gdGhlIFNBVEEgUEhZIG5vZGUKKy0gdGFyZ2V0LXN1cHBseSAgICA6IHJlZ3VsYXRvciBmb3IgU0FUQSB0YXJnZXQgcG93ZXIKKworRXhhbXBsZXM6CisgICAgICAgIHNhdGFAZmZlMDgwMDAgeworCQljb21wYXRpYmxlID0gInNucHMsc3BlYXItYWhjaSI7CisJCXJlZyA9IDwweGZmZTA4MDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MTE1PjsKKyAgICAgICAgfTsKKworCWFoY2k6IHNhdGFAMDFjMTgwMDAgeworCQljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW40aS1hMTAtYWhjaSI7CisJCXJlZyA9IDwweDAxYzE4MDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8NTY+OworCQljbG9ja3MgPSA8JnBsbDYgMD4sIDwmYWhiX2dhdGVzIDI1PjsKKwkJdGFyZ2V0LXN1cHBseSA9IDwmcmVnX2FoY2lfNXY+OworCX07CisKK1dpdGggc3ViLW5vZGVzOgorCXNhdGFAZjdlOTAwMDAgeworCQljb21wYXRpYmxlID0gIm1hcnZlbGwsYmVybGluMnEtYWNoaSIsICJnZW5lcmljLWFoY2kiOworCQlyZWcgPSA8MHhlOTAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDcgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWNsb2NrcyA9IDwmY2hpcCBDTEtJRF9TQVRBPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCisJCXNhdGEwOiBzYXRhLXBvcnRAMCB7CisJCQlyZWcgPSA8MD47CisJCQlwaHlzID0gPCZzYXRhX3BoeSAwPjsKKwkJCXRhcmdldC1zdXBwbHkgPSA8JnJlZ19zYXRhMD47CisJCX07CisKKwkJc2F0YTE6IHNhdGEtcG9ydEAxIHsKKwkJCXJlZyA9IDwxPjsKKwkJCXBoeXMgPSA8JnNhdGFfcGh5IDE+OworCQkJdGFyZ2V0LXN1cHBseSA9IDwmcmVnX3NhdGExPjs7CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdGEvYWhjaS1zdC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXRhL2FoY2ktc3QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxZDAxZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXRhL2FoY2ktc3QudHh0CkBAIC0wLDAgKzEsNTAgQEAKK1NUTWljcm9lbGVjdHJvbmljcyBTVGkgU0FUQSBjb250cm9sbGVyCisKK1RoaXMgYmluZGluZyBkZXNjcmliZXMgYSBTQVRBIGRldmljZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGUJICAgOiBNdXN0IGJlICJzdCxhaGNpIgorIC0gcmVnCQkgICA6IFBoeXNpY2FsIGJhc2UgYWRkcmVzc2VzIGFuZCBsZW5ndGggb2YgcmVnaXN0ZXIgc2V0cworIC0gaW50ZXJydXB0cwkgICA6IEludGVycnVwdCBhc3NvY2lhdGVkIHdpdGggdGhlIFNBVEEgZGV2aWNlCisgLSBpbnRlcnJ1cHQtbmFtZXMgOiAgIEFzc29jaWF0ZWQgbmFtZSBtdXN0IGJlOyAiaG9zdGMiCisgLSBjbG9ja3MJICAgOiBUaGUgcGhhbmRsZSBmb3IgdGhlIGNsb2NrCisgLSBjbG9jay1uYW1lcwkgICA6ICAgQXNzb2NpYXRlZCBuYW1lIG11c3QgYmU7ICJhaGNpX2NsayIKKyAtIHBoeXMJCSAgIDogVGhlIHBoYW5kbGUgZm9yIHRoZSBQSFkgcG9ydAorIC0gcGh5LW5hbWVzCSAgIDogICBBc3NvY2lhdGVkIG5hbWUgbXVzdCBiZTsgImFoY2lfcGh5IgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorIC0gcmVzZXRzCSAgIDogVGhlIHBvd2VyLWRvd24sIHNvZnQtcmVzZXQgYW5kIHBvd2VyLXJlc2V0IGxpbmVzIG9mIFNBVEEgSVAKKyAtIHJlc2V0LW5hbWVzCSAgIDogICBBc3NvY2lhdGVkIG5hbWVzIG11c3QgYmU7ICJwd3ItZHduIiwgInN3LXJzdCIgYW5kICJwd3ItcnN0IgorCitFeGFtcGxlOgorCisJLyogRXhhbXBsZSBmb3Igc3RpaDQxNiAqLworCXNhdGEwOiBzYXRhQGZlMzgwMDAwIHsKKwkJY29tcGF0aWJsZQk9ICJzdCxhaGNpIjsKKwkJcmVnCQk9IDwweGZlMzgwMDAwIDB4MTAwMD47CisJCWludGVycnVwdHMJPSA8R0lDX1NQSSAxNTcgSVJRX1RZUEVfTk9ORT47CisJCWludGVycnVwdC1uYW1lcwk9ICJob3N0YyI7CisJCXBoeXMJCT0gPCZwaHlfcG9ydDAgUEhZX1RZUEVfU0FUQT47CisJCXBoeS1uYW1lcwk9ICJhaGNpX3BoeSI7CisJCXJlc2V0cwkJPSA8JnBvd2VyZG93biBTVElINDE2X1NBVEEwX1BPV0VSRE9XTj4sCisJCQkJICA8JnNvZnRyZXNldCBTVElINDE2X1NBVEEwX1NPRlRSRVNFVD47CisJCXJlc2V0LW5hbWVzCT0gInB3ci1kd24iLCAic3ctcnN0IjsKKwkJY2xvY2tzCQk9IDwmY2xrX3NfYTBfbHMgQ0xLX0lDTl9SRUc+OworCQljbG9jay1uYW1lcwk9ICJhaGNpX2NsayI7CisJfTsKKworCS8qIEV4YW1wbGUgZm9yIHN0aWg0MDcgZmFtaWx5IHNpbGljb24gKi8KKwlzYXRhMDogc2F0YUA5YjIwMDAwIHsKKwkJY29tcGF0aWJsZQk9ICJzdCxhaGNpIjsKKwkJcmVnCQk9IDwweDliMjAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cwk9IDxHSUNfU1BJIDE1OSBJUlFfVFlQRV9OT05FPjsKKwkJaW50ZXJydXB0LW5hbWVzCT0gImhvc3RjIjsKKwkJcGh5cwkJPSA8JnBoeV9wb3J0MCBQSFlfVFlQRV9TQVRBPjsKKwkJcGh5LW5hbWVzCT0gImFoY2lfcGh5IjsKKwkJcmVzZXRzCQk9IDwmcG93ZXJkb3duIFNUSUg0MDdfU0FUQTBfUE9XRVJET1dOPiwKKwkJCQkgIDwmc29mdHJlc2V0IFNUSUg0MDdfU0FUQTBfU09GVFJFU0VUPiwKKwkJCQkgIDwmc29mdHJlc2V0IFNUSUg0MDdfU0FUQTBfUFdSX1NPRlRSRVNFVD47CisJCXJlc2V0LW5hbWVzCT0gInB3ci1kd24iLCAic3ctcnN0IiwgInB3ci1yc3QiOworCQljbG9ja3MJCT0gPCZjbGtfc19jMF9mbGV4Z2VuIENMS19JQ05fUkVHPjsKKwkJY2xvY2stbmFtZXMJPSAiYWhjaV9jbGsiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXRhL2FwbS14Z2VuZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXRhL2FwbS14Z2VuZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY2OGYwZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdGEvYXBtLXhnZW5lLnR4dApAQCAtMCwwICsxLDc5IEBACisqIEFQTSBYLUdlbmUgNi4wIEdiL3MgU0FUQSBob3N0IGNvbnRyb2xsZXIgbm9kZXMKKworU0FUQSBob3N0IGNvbnRyb2xsZXIgbm9kZXMgYXJlIGRlZmluZWQgdG8gZGVzY3JpYmUgb24tY2hpcCBTZXJpYWwgQVRBCitjb250cm9sbGVycy4gRWFjaCBTQVRBIGNvbnRyb2xsZXIgKHBhaXIgb2YgcG9ydHMpIGhhdmUgaXRzIG93biBub2RlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlCQk6IFNoYWxsIGNvbnRhaW46CisgICogImFwbSx4Z2VuZS1haGNpIgorLSByZWcJCQk6IEZpcnN0IG1lbW9yeSByZXNvdXJjZSBzaGFsbCBiZSB0aGUgQUhDSSBtZW1vcnkKKwkJCSAgcmVzb3VyY2UuCisJCQkgIFNlY29uZCBtZW1vcnkgcmVzb3VyY2Ugc2hhbGwgYmUgdGhlIGhvc3QgY29udHJvbGxlcgorCQkJICBjb3JlIG1lbW9yeSByZXNvdXJjZS4KKwkJCSAgVGhpcmQgbWVtb3J5IHJlc291cmNlIHNoYWxsIGJlIHRoZSBob3N0IGNvbnRyb2xsZXIKKwkJCSAgZGlhZ25vc3RpYyBtZW1vcnkgcmVzb3VyY2UuCisJCQkgIDR0aCBtZW1vcnkgcmVzb3VyY2Ugc2hhbGwgYmUgdGhlIGhvc3QgY29udHJvbGxlcgorCQkJICBBWEkgbWVtb3J5IHJlc291cmNlLgorCQkJICA1dGggb3B0aW9uYWwgbWVtb3J5IHJlc291cmNlIHNoYWxsIGJlIHRoZSBob3N0CisJCQkgIGNvbnRyb2xsZXIgTVVYIG1lbW9yeSByZXNvdXJjZSBpZiByZXF1aXJlZC4KKy0gaW50ZXJydXB0cwkJOiBJbnRlcnJ1cHQtc3BlY2lmaWVyIGZvciBTQVRBIGhvc3QgY29udHJvbGxlciBJUlEuCistIGNsb2NrcwkJOiBSZWZlcmVuY2UgdG8gdGhlIGNsb2NrIGVudHJ5LgorLSBwaHlzCQkJOiBBIGxpc3Qgb2YgcGhhbmRsZXMgKyBwaHktc3BlY2lmaWVycywgb25lIGZvciBlYWNoCisJCQkgIGVudHJ5IGluIHBoeS1uYW1lcy4KKy0gcGh5LW5hbWVzCQk6IFNob3VsZCBjb250YWluOgorICAqICJzYXRhLXBoeSIgZm9yIHRoZSBTQVRBIDYuMEdicHMgUEhZCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGRtYS1jb2hlcmVudAkJOiBQcmVzZW50IGlmIGRtYSBvcGVyYXRpb25zIGFyZSBjb2hlcmVudAorLSBzdGF0dXMJCTogU2hhbGwgYmUgIm9rIiBpZiBlbmFibGVkIG9yICJkaXNhYmxlZCIgaWYgZGlzYWJsZWQuCisJCQkgIERlZmF1bHQgaXMgIm9rIi4KKworRXhhbXBsZToKKwkJc2F0YWNsazogc2F0YWNsayB7CisJCQljb21wYXRpYmxlID0gImZpeGVkLWNsb2NrIjsKKwkJCSNjbG9jay1jZWxscyA9IDwxPjsKKwkJCWNsb2NrLWZyZXF1ZW5jeSA9IDwxMDAwMDAwMDA+OworCQkJY2xvY2stb3V0cHV0LW5hbWVzID0gInNhdGFjbGsiOworCQl9OworCisJCXBoeTI6IHBoeUAxZjIyYTAwMCB7CisJCQljb21wYXRpYmxlID0gImFwbSx4Z2VuZS1waHkiOworCQkJcmVnID0gPDB4MCAweDFmMjJhMDAwIDB4MCAweDEwMD47CisJCQkjcGh5LWNlbGxzID0gPDE+OworCQl9OworCisJCXBoeTM6IHBoeUAxZjIzYTAwMCB7CisJCQljb21wYXRpYmxlID0gImFwbSx4Z2VuZS1waHkiOworCQkJcmVnID0gPDB4MCAweDFmMjNhMDAwIDB4MCAweDEwMD47CisJCQkjcGh5LWNlbGxzID0gPDE+OworCQl9OworCisJCXNhdGEyOiBzYXRhQDFhNDAwMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiYXBtLHhnZW5lLWFoY2kiOworCQkJcmVnID0gPDB4MCAweDFhNDAwMDAwIDB4MCAweDEwMDA+LAorCQkJICAgICAgPDB4MCAweDFmMjIwMDAwIDB4MCAweDEwMDA+LAorCQkJICAgICAgPDB4MCAweDFmMjJkMDAwIDB4MCAweDEwMDA+LAorCQkJICAgICAgPDB4MCAweDFmMjJlMDAwIDB4MCAweDEwMDA+LAorCQkJICAgICAgPDB4MCAweDFmMjI3MDAwIDB4MCAweDEwMDA+OworCQkJaW50ZXJydXB0cyA9IDwweDAgMHg4NyAweDQ+OworCQkJZG1hLWNvaGVyZW50OworCQkJc3RhdHVzID0gIm9rIjsKKwkJCWNsb2NrcyA9IDwmc2F0YWNsayAwPjsKKwkJCXBoeXMgPSA8JnBoeTIgMD47CisJCQlwaHktbmFtZXMgPSAic2F0YS1waHkiOworCQl9OworCisJCXNhdGEzOiBzYXRhQDFhODAwMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiYXBtLHhnZW5lLWFoY2ktcGNpZSI7CisJCQlyZWcgPSA8MHgwIDB4MWE4MDAwMDAgMHgwIDB4MTAwMD4sCisJCQkgICAgICA8MHgwIDB4MWYyMzAwMDAgMHgwIDB4MTAwMD4sCisJCQkgICAgICA8MHgwIDB4MWYyM2QwMDAgMHgwIDB4MTAwMD4sCisJCQkgICAgICA8MHgwIDB4MWYyM2UwMDAgMHgwIDB4MTAwMD4sCisJCQkgICAgICA8MHgwIDB4MWYyMzcwMDAgMHgwIDB4MTAwMD47CisJCQlpbnRlcnJ1cHRzID0gPDB4MCAweDg4IDB4ND47CisJCQlkbWEtY29oZXJlbnQ7CisJCQlzdGF0dXMgPSAib2siOworCQkJY2xvY2tzID0gPCZzYXRhY2xrIDA+OworCQkJcGh5cyA9IDwmcGh5MyAwPjsKKwkJCXBoeS1uYW1lcyA9ICJzYXRhLXBoeSI7CisJCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXRhL2F0bWVsLWF0OTFfY2YudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2F0YS9hdG1lbC1hdDkxX2NmLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWQyMmIzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2F0YS9hdG1lbC1hdDkxX2NmLnR4dApAQCAtMCwwICsxLDE5IEBACitBdG1lbCBBVDkxUk05MjAwIENvbXBhY3RGbGFzaAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogImF0bWVsLGF0OTFybTkyMDAtY2YiLgorLSByZWcgOiBzaG91bGQgc3BlY2lmeSBsb2NhbGJ1cyBhZGRyZXNzIGFuZCBzaXplIHVzZWQuCistIGdwaW9zIDogc3BlY2lmaWVzIHRoZSBncGlvIHBpbnMgdG8gY29udHJvbCB0aGUgQ0YgZGV2aWNlLiBEZXRlY3QKKyAgYW5kIHJlc2V0IGdwaW8ncyBhcmUgbWFuZGF0b3J5IHdoaWxlIGlycSBhbmQgdmNjIGdwaW8ncyBhcmUKKyAgb3B0aW9uYWwgYW5kIG1heSBiZSBzZXQgdG8gMCBpZiBub3QgcHJlc2VudC4KKworRXhhbXBsZToKK2NvbXBhY3QtZmxhc2hANTAwMDAwMDAgeworCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXJtOTIwMC1jZiI7CisJcmVnID0gPDB4NTAwMDAwMDAgMHgzMDAwMDAwMD47CisJZ3Bpb3MgPSA8JnBpb0MgMTMgMAkvKiBpcnEgKi8KKwkJICZwaW9DIDE1IDAgCS8qIGRldGVjdCAqLworCQkgMAkJLyogdmNjICovCisJCSAmcGlvQyAgNSAwCS8qIHJlc2V0ICovCisJCT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2F0YS9icmNtLHNhdGEtYnJjbXN0Yi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXRhL2JyY20sc2F0YS1icmNtc3RiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGFjOWJiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2F0YS9icmNtLHNhdGEtYnJjbXN0Yi50eHQKQEAgLTAsMCArMSwzNCBAQAorKiBCcm9hZGNvbSBTQVRBMyBBSENJIENvbnRyb2xsZXIgZm9yIFNUQgorCitTQVRBIG5vZGVzIGFyZSBkZWZpbmVkIHRvIGRlc2NyaWJlIG9uLWNoaXAgU2VyaWFsIEFUQSBjb250cm9sbGVycy4KK0VhY2ggU0FUQSBjb250cm9sbGVyIHNob3VsZCBoYXZlIGl0cyBvd24gbm9kZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSAgICAgICAgIDogY29tcGF0aWJsZSBsaXN0LCBtYXkgY29udGFpbiAiYnJjbSxiY203NDQ1LWFoY2kiIGFuZC9vcgorICAgICAgICAgICAgICAgICAgICAgICAiYnJjbSxzYXRhMy1haGNpIgorLSByZWcgICAgICAgICAgICAgICAgOiByZWdpc3RlciBtYXBwaW5ncyBmb3IgQUhDSSBhbmQgU0FUQV9UT1BfQ1RSTAorLSByZWctbmFtZXMgICAgICAgICAgOiAiYWhjaSIgYW5kICJ0b3AtY3RybCIKKy0gaW50ZXJydXB0cyAgICAgICAgIDogaW50ZXJydXB0IG1hcHBpbmcgZm9yIFNBVEEgSVJRCisKK0Fsc28gc2VlIGFoY2ktcGxhdGZvcm0udHh0LgorCitFeGFtcGxlOgorCisJc2F0YUBmMDQ1YTAwMCB7CisJCWNvbXBhdGlibGUgPSAiYnJjbSxiY203NDQ1LWFoY2kiLCAiYnJjbSxzYXRhMy1haGNpIjsKKwkJcmVnID0gPDB4ZjA0NWEwMDAgMHhhOWM+LCA8MHhmMDQ1ODA0MCAweDI0PjsKKwkJcmVnLW5hbWVzID0gImFoY2kiLCAidG9wLWN0cmwiOworCQlpbnRlcnJ1cHRzID0gPDAgMzAgMD47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQlzYXRhMDogc2F0YS1wb3J0QDAgeworCQkJcmVnID0gPDA+OworCQkJcGh5cyA9IDwmc2F0YV9waHkgMD47CisJCX07CisKKwkJc2F0YTE6IHNhdGEtcG9ydEAxIHsKKwkJCXJlZyA9IDwxPjsKKwkJCXBoeXMgPSA8JnNhdGFfcGh5IDE+OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXRhL2Nhdml1bS1jb21wYWN0LWZsYXNoLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdGEvY2F2aXVtLWNvbXBhY3QtZmxhc2gudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiYWNjOGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXRhL2Nhdml1bS1jb21wYWN0LWZsYXNoLnR4dApAQCAtMCwwICsxLDMwIEBACisqIENvbXBhY3QgRmxhc2gKKworVGhlIENhdml1bSBDb21wYWN0IEZsYXNoIGRldmljZSBpcyBjb25uZWN0ZWQgdG8gdGhlIE9jdGVvbiBCb290IEJ1cywKK2FuZCBpcyB0aHVzIGEgY2hpbGQgb2YgdGhlIEJvb3QgQnVzIGRldmljZS4gIEl0IGNhbiByZWFkIGFuZCB3cml0ZQoraW5kdXN0cnkgc3RhbmRhcmQgY29tcGFjdCBmbGFzaCBkZXZpY2VzLgorCitQcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiY2F2aXVtLGVidDMwMDAtY29tcGFjdC1mbGFzaCI7CisKKyAgQ29tcGF0aWJpbGl0eSB3aXRoIG1hbnkgQ2F2aXVtIGV2YWx1YXRpb24gYm9hcmRzLgorCistIHJlZzogVGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgQ0YgY2hpcCBzZWxlY3QgYmFua3MuICBEZXBlbmRpbmcgb24KKyAgdGhlIGRldmljZSBjb25maWd1cmF0aW9uLCB0aGVyZSBtYXkgYmUgb25lIG9yIHR3byBiYW5rcy4KKworLSBjYXZpdW0sYnVzLXdpZHRoOiBUaGUgd2lkdGggb2YgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIENGIGRldmljZXMuICBWYWxpZAorICB2YWx1ZXMgYXJlIDggYW5kIDE2LgorCistIGNhdml1bSx0cnVlLWlkZTogT3B0aW9uYWwsIGlmIHByZXNlbnQgdGhlIENGIGNvbm5lY3Rpb24gaXMgaW4gVHJ1ZSBJREUgbW9kZS4KKworLSBjYXZpdW0sZG1hLWVuZ2luZS1oYW5kbGU6IE9wdGlvbmFsLCBhIHBoYW5kbGUgZm9yIHRoZSBETUEgRW5naW5lIGNvbm5lY3RlZAorICB0byB0aGlzIGRldmljZS4KKworRXhhbXBsZToKKwljb21wYWN0LWZsYXNoQDUsMCB7CisJCWNvbXBhdGlibGUgPSAiY2F2aXVtLGVidDMwMDAtY29tcGFjdC1mbGFzaCI7CisJCXJlZyA9IDw1IDAgMHgxMDAwMD4sIDw2IDAgMHgxMDAwMD47CisJCWNhdml1bSxidXMtd2lkdGggPSA8MTY+OworCQljYXZpdW0sdHJ1ZS1pZGU7CisJCWNhdml1bSxkbWEtZW5naW5lLWhhbmRsZSA9IDwmZG1hMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdGEvZXh5bm9zLXNhdGEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2F0YS9leHlub3Mtc2F0YS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I0ODQ0OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdGEvZXh5bm9zLXNhdGEudHh0CkBAIC0wLDAgKzEsMzAgQEAKKyogU2Ftc3VuZyBBSENJIFNBVEEgQ29udHJvbGxlcgorCitTQVRBIG5vZGVzIGFyZSBkZWZpbmVkIHRvIGRlc2NyaWJlIG9uLWNoaXAgU2VyaWFsIEFUQSBjb250cm9sbGVycy4KK0VhY2ggU0FUQSBjb250cm9sbGVyIHNob3VsZCBoYXZlIGl0cyBvd24gbm9kZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZQkJOiBjb21wYXRpYmxlIGxpc3QsIGNvbnRhaW5zICJzYW1zdW5nLGV4eW5vczUtc2F0YSIKKy0gaW50ZXJydXB0cwkJOiA8aW50ZXJydXB0IG1hcHBpbmcgZm9yIFNBVEEgSVJRPgorLSByZWcJCQk6IDxyZWdpc3RlcnMgbWFwcGluZz4KKy0gc2Ftc3VuZyxzYXRhLWZyZXEJOiA8ZnJlcXVlbmN5IGluIE1Iej4KKy0gcGh5cwkJCTogTXVzdCBjb250YWluIGV4YWN0bHkgb25lIGVudHJ5IGFzIHNwZWNpZmllZAorCQkJICBpbiBwaHktYmluZGluZ3MudHh0CistIHBoeS1uYW1lcwkJOiBNdXN0IGJlICJzYXRhLXBoeSIKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gY2xvY2tzCQk6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKy0gY2xvY2stbmFtZXMJCTogU2hhbGwgYmUgInNhdGEiIGZvciB0aGUgZXh0ZXJuYWwgU0FUQSBidXMgY2xvY2ssCisJCQkgIGFuZCAic2Nsa19zYXRhIiBmb3IgdGhlIGludGVybmFsIGNvbnRyb2xsZXIgY2xvY2suCisKK0V4YW1wbGU6CisJc2F0YUAxMjJmMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic25wcyxkd2MtYWhjaSI7CisJCXNhbXN1bmcsc2F0YS1mcmVxID0gPDY2PjsKKwkJcmVnID0gPDB4MTIyZjAwMDAgMHgxZmY+OworCQlpbnRlcnJ1cHRzID0gPDAgMTE1IDA+OworCQljbG9ja3MgPSA8JmNsb2NrIDI3Nz4sIDwmY2xvY2sgMTQzPjsKKwkJY2xvY2stbmFtZXMgPSAic2F0YSIsICJzY2xrX3NhdGEiOworCQlwaHlzID0gPCZzYXRhX3BoeT47CisJCXBoeS1uYW1lcyA9ICJzYXRhLXBoeSI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdGEvZnNsLXNhdGEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2F0YS9mc2wtc2F0YS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ2YmNmNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdGEvZnNsLXNhdGEudHh0CkBAIC0wLDAgKzEsMjkgQEAKKyogRnJlZXNjYWxlIDh4eHgvMy4wIEdiL3MgU0FUQSBub2RlcworCitTQVRBIG5vZGVzIGFyZSBkZWZpbmVkIHRvIGRlc2NyaWJlIG9uLWNoaXAgU2VyaWFsIEFUQSBjb250cm9sbGVycy4KK0VhY2ggU0FUQSBwb3J0IHNob3VsZCBoYXZlIGl0cyBvd24gbm9kZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSAgICAgICAgOiBjb21wYXRpYmxlIGxpc3QsIGNvbnRhaW5zIDIgZW50cmllcywgZmlyc3QgaXMKKwkJICJmc2wsQ0hJUC1zYXRhIiwgd2hlcmUgQ0hJUCBpcyB0aGUgcHJvY2Vzc29yCisJCSAobXBjODMxNSwgbXBjODM3OSwgZXRjLikgYW5kIHRoZSBzZWNvbmQgaXMKKwkJICJmc2wscHEtc2F0YSIKKy0gaW50ZXJydXB0cyAgICAgICAgOiA8aW50ZXJydXB0IG1hcHBpbmcgZm9yIFNBVEEgSVJRPgorLSBjZWxsLWluZGV4ICAgICAgICA6IGNvbnRyb2xsZXIgaW5kZXguCisgICAgICAgICAgICAgICAgICAgICAgICAgIDEgZm9yIGNvbnRyb2xsZXIgQCAweDE4MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgIDIgZm9yIGNvbnRyb2xsZXIgQCAweDE5MDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgIDMgZm9yIGNvbnRyb2xsZXIgQCAweDFhMDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgIDQgZm9yIGNvbnRyb2xsZXIgQCAweDFiMDAwCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGludGVycnVwdC1wYXJlbnQgIDogb3B0aW9uYWwsIGlmIG5lZWRlZCBmb3IgaW50ZXJydXB0IG1hcHBpbmcKKy0gcmVnICAgICAgICAgICAgICAgOiA8cmVnaXN0ZXJzIG1hcHBpbmc+CisKK0V4YW1wbGU6CisJc2F0YUAxODAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzgzNzktc2F0YSIsICJmc2wscHEtc2F0YSI7CisJCXJlZyA9IDwweDE4MDAwIDB4MTAwMD47CisJCWNlbGwtaW5kZXggPSA8MT47CisJCWludGVycnVwdHMgPSA8MmMgOD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8ICZpcGljID47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdGEvaW14LXBhdGEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2F0YS9pbXgtcGF0YS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM4ZDczNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdGEvaW14LXBhdGEudHh0CkBAIC0wLDAgKzEsMTcgQEAKKyogRnJlZXNjYWxlIGkuTVggUEFUQSBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJmc2wsaW14MjctcGF0YSIKKy0gcmVnOiBBZGRyZXNzIHJhbmdlIG9mIHRoZSBQQVRBIENvbnRyb2xsZXIKKy0gaW50ZXJydXB0czogVGhlIGludGVycnVwdCBvZiB0aGUgUEFUQSBDb250cm9sbGVyCistIGNsb2NrczogdGhlIGNsb2NrcyBmb3IgdGhlIFBBVEEgQ29udHJvbGxlcgorCitFeGFtcGxlOgorCisJcGF0YTogcGF0YUA4M2ZlMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGlteDUxLXBhdGEiLCAiZnNsLGlteDI3LXBhdGEiOworCQlyZWcgPSA8MHg4M2ZlMDAwMCAweDQwMDA+OworCQlpbnRlcnJ1cHRzID0gPDcwPjsKKwkJY2xvY2tzID0gPCZjbGtzIDE2MT47CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdGEvaW14LXNhdGEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2F0YS9pbXgtc2F0YS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE1MTFkYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdGEvaW14LXNhdGEudHh0CkBAIC0wLDAgKzEsMzYgQEAKKyogRnJlZXNjYWxlIGkuTVggQUhDSSBTQVRBIENvbnRyb2xsZXIKKworVGhlIEZyZWVzY2FsZSBpLk1YIFNBVEEgY29udHJvbGxlciBtb3N0bHkgY29uZm9ybXMgdG8gdGhlIEFIQ0kgaW50ZXJmYWNlCit3aXRoIHNvbWUgc3BlY2lhbCBleHRlbnNpb25zIGF0IGludGVncmF0aW9uIGxldmVsLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorICAgLSAiZnNsLGlteDUzLWFoY2kiIGZvciBpLk1YNTMgU0FUQSBjb250cm9sbGVyCisgICAtICJmc2wsaW14NnEtYWhjaSIgZm9yIGkuTVg2USBTQVRBIGNvbnRyb2xsZXIKKy0gaW50ZXJydXB0cyA6IGludGVycnVwdCBtYXBwaW5nIGZvciBTQVRBIElSUQorLSByZWcgOiByZWdpc3RlcnMgbWFwcGluZworLSBjbG9ja3MgOiBsaXN0IG9mIGNsb2NrIHNwZWNpZmllcnMsIG11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaAorICByZXF1aXJlZCBlbnRyeSBpbiBjbG9jay1uYW1lcworLSBjbG9jay1uYW1lcyA6IHNob3VsZCBpbmNsdWRlICJzYXRhIiwgInNhdGFfcmVmIiBhbmQgImFoYiIgZW50cmllcworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBmc2wsdHJhbnNtaXQtbGV2ZWwtbVYgOiB0cmFuc21pdCB2b2x0YWdlIGxldmVsLCBpbiBtaWxsaXZvbHRzLgorLSBmc2wsdHJhbnNtaXQtYm9vc3QtbWRCIDogdHJhbnNtaXQgYm9vc3QgbGV2ZWwsIGluIG1pbGxpLWRlY2liZWxzCistIGZzbCx0cmFuc21pdC1hdHRlbi0xNnRocyA6IHRyYW5zbWl0IGF0dGVudWF0aW9uLCBpbiAxNnRocworLSBmc2wscmVjZWl2ZS1lcS1tZEIgOiByZWNlaXZlIGVxdWFsaXNhdGlvbiwgaW4gbWlsbGktZGVjaWJlbHMKKyAgUGxlYXNlIHJlZmVyIHRvIHRoZSB0ZWNobmljYWwgZG9jdW1lbnRhdGlvbiBvciB0aGUgZHJpdmVyIHNvdXJjZSBjb2RlCisgIGZvciB0aGUgbGlzdCBvZiBsZWdhbCB2YWx1ZXMgZm9yIHRoZXNlIG9wdGlvbnMuCistIGZzbCxuby1zcHJlYWQtc3BlY3RydW0gOiBkaXNhYmxlIHNwcmVhZC1zcGVjdHJ1bSBjbG9ja2luZyBvbiB0aGUgU0FUQQorICBsaW5rLgorCitFeGFtcGxlczoKKworc2F0YUAwMjIwMDAwMCB7CisJY29tcGF0aWJsZSA9ICJmc2wsaW14NnEtYWhjaSI7CisJcmVnID0gPDB4MDIyMDAwMDAgMHg0MDAwPjsKKwlpbnRlcnJ1cHRzID0gPDAgMzkgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJY2xvY2tzID0gPCZjbGtzIElNWDZRRExfQ0xLX1NBVEE+LAorCQkgPCZjbGtzIElNWDZRRExfQ0xLX1NBVEFfUkVGXzEwME0+LAorCQkgPCZjbGtzIElNWDZRRExfQ0xLX0FIQj47CisJY2xvY2stbmFtZXMgPSAic2F0YSIsICJzYXRhX3JlZiIsICJhaGIiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdGEvbWFydmVsbC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXRhL21hcnZlbGwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NjBlZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXRhL21hcnZlbGwudHh0CkBAIC0wLDAgKzEsMjIgQEAKKyogTWFydmVsbCBPcmlvbiBTQVRBCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CistIGNvbXBhdGliaWxpdHkgOiAibWFydmVsbCxvcmlvbi1zYXRhIiBvciAibWFydmVsbCxhcm1hZGEtMzcwLXNhdGEiCistIHJlZyAgICAgICAgICAgOiBBZGRyZXNzIHJhbmdlIG9mIGNvbnRyb2xsZXIKKy0gaW50ZXJydXB0cyAgICA6IEludGVycnVwdCBjb250cm9sbGVyIGlzIHVzaW5nCistIG5yLXBvcnRzICAgICAgOiBOdW1iZXIgb2YgU0FUQSBwb3J0cyBpbiB1c2UuCisKK09wdGlvbmFsIFByb3BlcnRpZXM6CistIHBoeXMJCTogTGlzdCBvZiBwaGFuZGxlcyB0byBzYXRhIHBoeXMKKy0gcGh5LW5hbWVzCTogU2hvdWxkIGJlICIwIiwgIjEiLCBldGMsIG9uZSBudW1iZXIgcGVyIHBoYW5kbGUKKworRXhhbXBsZToKKworCXNhdGFAODAwMDAgeworCQljb21wYXRpYmxlID0gIm1hcnZlbGwsb3Jpb24tc2F0YSI7CisJCXJlZyA9IDwweDgwMDAwIDB4NTAwMD47CisJCWludGVycnVwdHMgPSA8MjE+OworCQlwaHlzID0gPCZzYXRhX3BoeTA+LCA8JnNhdGFfcGh5MT47CisJCXBoeS1uYW1lcyA9ICIwIiwgIjEiOworCQluci1wb3J0cyA9IDwyPjsKKwl9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXRhL3BhdGEtYXJhc2FuLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdGEvcGF0YS1hcmFzYW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhZmYxNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXRhL3BhdGEtYXJhc2FuLnR4dApAQCAtMCwwICsxLDM5IEBACisqIEFSQVNBTiBQQVRBIENPTVBBQ1QgRkxBU0ggQ09OVFJPTExFUgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiYXJhc2FuLGNmLXNwZWFyMTM0MCIKKy0gcmVnOiBBZGRyZXNzIHJhbmdlIG9mIHRoZSBDRiByZWdpc3RlcnMKKy0gaW50ZXJydXB0LXBhcmVudDogU2hvdWxkIGJlIHRoZSBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIKKyAgdGhhdCBzZXJ2aWNlcyBpbnRlcnJ1cHRzIGZvciB0aGlzIGRldmljZQorLSBpbnRlcnJ1cHQ6IFNob3VsZCBjb250YWluIHRoZSBDRiBpbnRlcnJ1cHQgbnVtYmVyCistIGNsb2NrLWZyZXF1ZW5jeTogSW50ZXJmYWNlIGNsb2NrIHJhdGUsIGluIEh6LCBvbmUgb2YKKyAgICAgICAyNTAwMDAwMAorICAgICAgIDMzMDAwMDAwCisgICAgICAgNDAwMDAwMDAKKyAgICAgICA1MDAwMDAwMAorICAgICAgIDY2MDAwMDAwCisgICAgICAgNzUwMDAwMDAKKyAgICAgIDEwMDAwMDAwMAorICAgICAgMTI1MDAwMDAwCisgICAgICAxNTAwMDAwMDAKKyAgICAgIDE2NjAwMDAwMAorICAgICAgMjAwMDAwMDAwCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGFyYXNhbixicm9rZW4tdWRtYTogaWYgcHJlc2VudCwgVURNQSBtb2RlIGlzIHVudXNhYmxlCistIGFyYXNhbixicm9rZW4tbXdkbWE6IGlmIHByZXNlbnQsIE1XRE1BIG1vZGUgaXMgdW51c2FibGUKKy0gYXJhc2FuLGJyb2tlbi1waW86IGlmIHByZXNlbnQsIFBJTyBtb2RlIGlzIHVudXNhYmxlCistIGRtYXM6IG9uZSBETUEgY2hhbm5lbCwgYXMgZGVzY3JpYmVkIGluIGJpbmRpbmdzL2RtYS9kbWEudHh0CisgIHJlcXVpcmVkIHVubGVzcyBib3RoIFVETUEgYW5kIE1XRE1BIG1vZGUgYXJlIGJyb2tlbgorLSBkbWEtbmFtZXM6IHRoZSBjb3JyZXNwb25kaW5nIGNoYW5uZWwgbmFtZSwgbXVzdCBiZSAiZGF0YSIKKworRXhhbXBsZToKKworCWNmQGZjMDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcmFzYW4sY2Ytc3BlYXIxMzQwIjsKKwkJcmVnID0gPDB4ZmMwMDAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmdmljMT47CisJCWludGVycnVwdHMgPSA8MTI+OworCQlkbWFzID0gPCZkbWEtY29udHJvbGxlciAyMz47CisJCWRtYS1uYW1lcyA9ICJkYXRhIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2F0YS9xY29tLXNhdGEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2F0YS9xY29tLXNhdGEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5NGRlOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXRhL3Fjb20tc2F0YS50eHQKQEAgLTAsMCArMSw0OCBAQAorKiBRdWFsY29tbSBBSENJIFNBVEEgQ29udHJvbGxlcgorCitTQVRBIG5vZGVzIGFyZSBkZWZpbmVkIHRvIGRlc2NyaWJlIG9uLWNoaXAgU2VyaWFsIEFUQSBjb250cm9sbGVycy4KK0VhY2ggU0FUQSBjb250cm9sbGVyIHNob3VsZCBoYXZlIGl0cyBvd24gbm9kZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZQkJOiBjb21wYXRpYmxlIGxpc3QsIG11c3QgY29udGFpbiAiZ2VuZXJpYy1haGNpIgorLSBpbnRlcnJ1cHRzCQk6IDxpbnRlcnJ1cHQgbWFwcGluZyBmb3IgU0FUQSBJUlE+CistIHJlZwkJCTogPHJlZ2lzdGVycyBtYXBwaW5nPgorLSBwaHlzCQkJOiBNdXN0IGNvbnRhaW4gZXhhY3RseSBvbmUgZW50cnkgYXMgc3BlY2lmaWVkCisJCQkgIGluIHBoeS1iaW5kaW5ncy50eHQKKy0gcGh5LW5hbWVzCQk6IE11c3QgYmUgInNhdGEtcGh5IgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciAicWNvbSxpcHE4MDZ4LWFoY2kiIGNvbXBhdGlibGU6CistIGNsb2NrcwkJOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCistIGNsb2NrLW5hbWVzCQk6IFNoYWxsIGJlOgorCQkJCSJzbGF2ZV9pZmFjZSIgLSBGYWJyaWMgcG9ydCBBSEIgY2xvY2sgZm9yIFNBVEEKKwkJCQkiaWZhY2UiIC0gQUhCIGNsb2NrCisJCQkJImNvcmUiIC0gY29yZSBjbG9jaworCQkJCSJyeG9vYiIgLSBSWCBvdXQtb2YtYmFuZCBjbG9jaworCQkJCSJwbWFsaXZlIiAtIFBvd2VyIE1vZHVsZSBBbGl2ZSBjbG9jaworLSBhc3NpZ25lZC1jbG9ja3MJOiBTaGFsbCBiZToKKwkJCQlTQVRBX1JYT09CX0NMSworCQkJCVNBVEFfUE1BTElWRV9DTEsKKy0gYXNzaWduZWQtY2xvY2stcmF0ZXMJOiBTaGFsbCBiZToKKwkJCQkxMDBNaHogKDEwMDAwMDAwMCkgZm9yIFNBVEFfUlhPT0JfQ0xLCisJCQkJMTAwTWh6ICgxMDAwMDAwMDApIGZvciBTQVRBX1BNQUxJVkVfQ0xLCisKK0V4YW1wbGU6CisJc2F0YUAyOTAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicWNvbSxpcHE4MDZ4LWFoY2kiLCAiZ2VuZXJpYy1haGNpIjsKKwkJcmVnID0gPDB4MjkwMDAwMDAgMHgxODA+OworCisJCWludGVycnVwdHMgPSA8MCAyMDkgMHgwPjsKKworCQljbG9ja3MgPSA8JmdjYyBTRkFCX1NBVEFfU19IX0NMSz4sCisJCQkgPCZnY2MgU0FUQV9IX0NMSz4sCisJCQkgPCZnY2MgU0FUQV9BX0NMSz4sCisJCQkgPCZnY2MgU0FUQV9SWE9PQl9DTEs+LAorCQkJIDwmZ2NjIFNBVEFfUE1BTElWRV9DTEs+OworCQljbG9jay1uYW1lcyA9ICJzbGF2ZV9pZmFjZSIsICJpZmFjZSIsICJjb3JlIiwKKwkJCQkicnhvb2IiLCAicG1hbGl2ZSI7CisJCWFzc2lnbmVkLWNsb2NrcyA9IDwmZ2NjIFNBVEFfUlhPT0JfQ0xLPiwgPCZnY2MgU0FUQV9QTUFMSVZFX0NMSz47CisJCWFzc2lnbmVkLWNsb2NrLXJhdGVzID0gPDEwMDAwMDAwMD4sIDwxMDAwMDAwMDA+OworCisJCXBoeXMgPSA8JnNhdGFfcGh5PjsKKwkJcGh5LW5hbWVzID0gInNhdGEtcGh5IjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2F0YS9zYXRhX2hpZ2hiYW5rLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdGEvc2F0YV9oaWdoYmFuay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE4MzQwNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdGEvc2F0YV9oaWdoYmFuay50eHQKQEAgLTAsMCArMSw0NCBAQAorKiBDYWx4ZWRhIEFIQ0kgU0FUQSBDb250cm9sbGVyCisKK1NBVEEgbm9kZXMgYXJlIGRlZmluZWQgdG8gZGVzY3JpYmUgb24tY2hpcCBTZXJpYWwgQVRBIGNvbnRyb2xsZXJzLgorVGhlIENhbHhlZGEgU0FUQSBjb250cm9sbGVyIG1vc3RseSBjb25mb3JtcyB0byB0aGUgQUhDSSBpbnRlcmZhY2UKK3dpdGggc29tZSBzcGVjaWFsIGV4dGVuc2lvbnMgdG8gYWRkIGZ1bmN0aW9uYWxpdHkuCitFYWNoIFNBVEEgY29udHJvbGxlciBzaG91bGQgaGF2ZSBpdHMgb3duIG5vZGUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgICAgICAgIDogY29tcGF0aWJsZSBsaXN0LCBjb250YWlucyAiY2FseGVkYSxoYi1haGNpIgorLSBpbnRlcnJ1cHRzICAgICAgICA6IDxpbnRlcnJ1cHQgbWFwcGluZyBmb3IgU0FUQSBJUlE+CistIHJlZyAgICAgICAgICAgICAgIDogPHJlZ2lzdGVycyBtYXBwaW5nPgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBkbWEtY29oZXJlbnQgICAgICA6IFByZXNlbnQgaWYgZG1hIG9wZXJhdGlvbnMgYXJlIGNvaGVyZW50CistIGNhbHhlZGEscG9ydC1waHlzIDogcGhhbmRsZS1jb21ib3BoeSBhbmQgbGFuZSBhc3NpZ25tZW50LCB3aGljaCBtYXBzIGVhY2gKKwkJCVNBVEEgcG9ydCB0byBhIGNvbWJvcGh5IGFuZCBhIGxhbmUgd2l0aGluIHRoYXQKKwkJCWNvbWJvcGh5CistIGNhbHhlZGEsc2dwaW8tZ3BpbzogcGhhbmRsZS1ncGlvIGJhbmssIGJpdCBvZmZzZXQsIGFuZCBkZWZhdWx0IG9uIG9yIG9mZiwKKwkJCXdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBkcml2ZXIgc3VwcG9ydHMgU0dQSU8KKwkJCWluZGljYXRvciBsaWdodHMgdXNpbmcgdGhlIGluZGljYXRlZCBHUElPcworLSBjYWx4ZWRhLGxlZC1vcmRlciA6IGEgdTMyIGFycmF5IHRoYXQgbWFwIHBvcnQgbnVtYmVycyB0byBvZmZzZXRzIHdpdGhpbiB0aGUKKwkJCVNHUElPIGJpdHN0cmVhbS4KKy0gY2FseGVkYSx0eC1hdHRlbiAgOiBhIHUzMiBhcnJheSB0aGF0IGNvbnRhaW5zIFRYIGF0dGVudWF0aW9uIG92ZXJyaWRlCisJCQljb2Rlcywgb25lIHBlciBwb3J0LiBUaGUgdXBwZXIgMyBieXRlcyBhcmUgYWx3YXlzCisJCQkwIGFuZCB0aHVzIGlnbm9yZWQuCistIGNhbHhlZGEscHJlLWNsb2NrcyA6IGEgdTMyIHRoYXQgaW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbCBjbG9jaworCQkJY3ljbGVzIHRvIHRyYW5zbWl0IGJlZm9yZSBzZW5kaW5nIGFuIFNHUElPIHBhdHRlcm4KKy0gY2FseGVkYSxwb3N0LWNsb2NrczogYSB1MzIgdGhhdCBpbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsIGNsb2NrCisJCQljeWNsZXMgdG8gdHJhbnNtaXQgYWZ0ZXIgc2VuZGluZyBhbiBTR1BJTyBwYXR0ZXJuCisKK0V4YW1wbGU6CisgICAgICAgIHNhdGFAZmZlMDgwMDAgeworCQljb21wYXRpYmxlID0gImNhbHhlZGEsaGItYWhjaSI7CisJCXJlZyA9IDwweGZmZTA4MDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MTE1PjsKKwkJZG1hLWNvaGVyZW50OworCQljYWx4ZWRhLHBvcnQtcGh5cyA9IDwmY29tYm9waHk1IDAgJmNvbWJvcGh5MCAwICZjb21ib3BoeTAgMQorCQkJCQkmY29tYm9waHkwIDIgJmNvbWJvcGh5MCAzPjsKKwkJY2FseGVkYSxzZ3Bpby1ncGlvID08JmdwaW9oIDUgMSAmZ3Bpb2ggNiAxICZncGlvaCA3IDE+OworCQljYWx4ZWRhLGxlZC1vcmRlciA9IDw0IDAgMSAyIDM+OworCQljYWx4ZWRhLHR4LWF0dGVuID0gPDB4ZmYgMjIgMHhmZiAweGZmIDIzPjsKKwkJY2FseGVkYSxwcmUtY2xvY2tzID0gPDEwPjsKKwkJY2FseGVkYSxwb3N0LWNsb2NrcyA9IDwwPjsKKyAgICAgICAgfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdGEvc2F0YV9yY2FyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdGEvc2F0YV9yY2FyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDkzYTVhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2F0YS9zYXRhX3JjYXIudHh0CkBAIC0wLDAgKzEsMjMgQEAKKyogUmVuZXNhcyBSLUNhciBTQVRBCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUJCTogc2hvdWxkIGNvbnRhaW4gb25lIG9mIHRoZSBmb2xsb3dpbmc6CisJCQkgIC0gInJlbmVzYXMsc2F0YS1yOGE3Nzc5IiBmb3IgUi1DYXIgSDEKKwkJCSAgICAoInJlbmVzYXMscmNhci1zYXRhIiBpcyBkZXByZWNhdGVkKQorCQkJICAtICJyZW5lc2FzLHNhdGEtcjhhNzc5MC1lczEiIGZvciBSLUNhciBIMiBFUzEKKwkJCSAgLSAicmVuZXNhcyxzYXRhLXI4YTc3OTAiIGZvciBSLUNhciBIMiBvdGhlciB0aGFuIEVTMQorCQkJICAtICJyZW5lc2FzLHNhdGEtcjhhNzc5MSIgZm9yIFItQ2FyIE0yLVcKKwkJCSAgLSAicmVuZXNhcyxzYXRhLXI4YTc3OTMiIGZvciBSLUNhciBNMi1OCistIHJlZwkJCTogYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBTQVRBIHJlZ2lzdGVyczsKKy0gaW50ZXJydXB0cwkJOiBtdXN0IGNvbnNpc3Qgb2Ygb25lIGludGVycnVwdCBzcGVjaWZpZXIuCistIGNsb2NrcwkJOiBtdXN0IGNvbnRhaW4gYSByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uYWwgY2xvY2suCisKK0V4YW1wbGU6CisKK3NhdGEwOiBzYXRhQGVlMzAwMDAwIHsKKwljb21wYXRpYmxlID0gInJlbmVzYXMsc2F0YS1yOGE3NzkxIjsKKwlyZWcgPSA8MCAweGVlMzAwMDAwIDAgMHgyMDAwPjsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZnaWM+OworCWludGVycnVwdHMgPSA8MCAxMDUgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJY2xvY2tzID0gPCZtc3RwOF9jbGtzIFI4QTc3OTFfQ0xLX1NBVEEwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXRhL3RlZ3JhLXNhdGEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2F0YS90ZWdyYS1zYXRhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NmM4M2MzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2F0YS90ZWdyYS1zYXRhLnR4dApAQCAtMCwwICsxLDMyIEBACitUZWdyYTEyNCBTb0MgU0FUQSBBSENJIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllcyA6CistIGNvbXBhdGlibGUgOiBGb3IgVGVncmExMjQsIG11c3QgY29udGFpbiAibnZpZGlhLHRlZ3JhMTI0LWFoY2kiLiAgT3RoZXJ3aXNlLAorICBtdXN0IGNvbnRhaW4gJyJudmlkaWEsPGNoaXA+LWFoY2kiLCAibnZpZGlhLHRlZ3JhMTI0LWFoY2kiJywgd2hlcmUgPGNoaXA+CisgIGlzIHRlZ3JhMTMyLgorLSByZWcgOiBTaG91bGQgY29udGFpbiAyIGVudHJpZXM6CisgIC0gQUhDSSByZWdpc3RlciBzZXQgKFNBVEEgQkFSNSkKKyAgLSBTQVRBIHJlZ2lzdGVyIHNldAorLSBpbnRlcnJ1cHRzIDogRGVmaW5lcyB0aGUgaW50ZXJydXB0IHVzZWQgYnkgU0FUQQorLSBjbG9ja3MgOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCisgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorLSBjbG9jay1uYW1lcyA6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIC0gc2F0YQorICAtIHNhdGEtb29iCisgIC0gY21sMQorICAtIHBsbF9lCistIHJlc2V0cyA6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiByZXNldC1uYW1lcy4KKyAgU2VlIC4uL3Jlc2V0L3Jlc2V0LnR4dCBmb3IgZGV0YWlscy4KKy0gcmVzZXQtbmFtZXMgOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAtIHNhdGEKKyAgLSBzYXRhLW9vYgorICAtIHNhdGEtY29sZAorLSBwaHlzIDogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIHBoeS1uYW1lcy4KKyAgU2VlIC4uL3BoeS9waHktYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorLSBwaHktbmFtZXMgOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAtIHNhdGEtcGh5IDogWFVTQiBQQURDVEwgU0FUQSBQSFkKKy0gaHZkZC1zdXBwbHkgOiBEZWZpbmVzIHRoZSBTQVRBIEhWREQgcmVndWxhdG9yCistIHZkZGlvLXN1cHBseSA6IERlZmluZXMgdGhlIFNBVEEgVkRESU8gcmVndWxhdG9yCistIGF2ZGQtc3VwcGx5IDogRGVmaW5lcyB0aGUgU0FUQSBBVkREIHJlZ3VsYXRvcgorLSB0YXJnZXQtNXYtc3VwcGx5IDogRGVmaW5lcyB0aGUgU0FUQSA1ViBwb3dlciByZWd1bGF0b3IKKy0gdGFyZ2V0LTEydi1zdXBwbHkgOiBEZWZpbmVzIHRoZSBTQVRBIDEyViBwb3dlciByZWd1bGF0b3IKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ib2FyZC9mc2wtYm9hcmQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2JvYXJkL2ZzbC1ib2FyZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI3YjAzZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ib2FyZC9mc2wtYm9hcmQudHh0CkBAIC0wLDAgKzEsMTEyIEBACitGcmVlc2NhbGUgUmVmZXJlbmNlIEJvYXJkIEJpbmRpbmdzCisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIGRldmljZSB0cmVlIGJpbmRpbmdzIGZvciB2YXJpb3VzIGRldmljZXMgdGhhdAorZXhpc3Qgb24gc29tZSBGcmVlc2NhbGUgcmVmZXJlbmNlIGJvYXJkcy4KKworKiBCb2FyZCBDb250cm9sIGFuZCBTdGF0dXMgKEJDU1IpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAtIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImZzbCw8Ym9hcmQ+LWJjc3IiCisgLSByZWcgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCisKK0V4YW1wbGU6CisKKwliY3NyQGY4MDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsbXBjODM2MG1kcy1iY3NyIjsKKwkJcmVnID0gPGY4MDAwMDAwIDgwMDA+OworCX07CisKKyogRnJlZXNjYWxlIG9uLWJvYXJkIEZQR0EKKworVGhpcyBpcyB0aGUgbWVtb3J5LW1hcHBlZCByZWdpc3RlcnMgZm9yIG9uIGJvYXJkIEZQR0EuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSBhIGJvYXJkLXNwZWNpZmljIHN0cmluZyBmb2xsb3dlZCBieSBhIHN0cmluZworICBpbmRpY2F0aW5nIHRoZSB0eXBlIG9mIEZQR0EuICBFeGFtcGxlOgorCSJmc2wsPGJvYXJkPi1mcGdhIiwgImZzbCxmcGdhLXBpeGlzIiwgb3IKKwkiZnNsLDxib2FyZD4tZnBnYSIsICJmc2wsZnBnYS1xaXhpcyIKKy0gcmVnOiBzaG91bGQgY29udGFpbiB0aGUgYWRkcmVzcyBhbmQgdGhlIGxlbmd0aCBvZiB0aGUgRlBHQSByZWdpc3RlciBzZXQuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGludGVycnVwdC1wYXJlbnQ6IHNob3VsZCBzcGVjaWZ5IHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlci4KKy0gaW50ZXJydXB0czogc2hvdWxkIHNwZWNpZnkgZXZlbnQgKHdha2V1cCkgSVJRLgorCitFeGFtcGxlIChQMTAyMkRTKToKKworCSBib2FyZC1jb250cm9sQDMsMCB7CisJCSBjb21wYXRpYmxlID0gImZzbCxwMTAyMmRzLWZwZ2EiLCAiZnNsLGZwZ2EtbmdwaXhpcyI7CisJCSByZWcgPSA8MyAwIDB4MzA+OworCQkgaW50ZXJydXB0LXBhcmVudCA9IDwmbXBpYz47CisJCSBpbnRlcnJ1cHRzID0gPDggOCAwIDA+OworCSB9OworCitFeGFtcGxlIChMUzIwODBBLVJEQik6CisKKyAgICAgICAgY3BsZEAzLDAgeworICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAiZnNsLGxzMjA4MGFyZGItZnBnYSIsICJmc2wsZnBnYS1xaXhpcyI7CisgICAgICAgICAgICAgICAgcmVnID0gPDB4MyAwIDB4MTAwMDA+OworICAgICAgICB9OworCisqIEZyZWVzY2FsZSBCQ1NSIEdQSU8gYmFua3MKKworU29tZSBCQ1NSIHJlZ2lzdGVycyBhY3QgYXMgc2ltcGxlIEdQSU8gY29udHJvbGxlcnMsIGVhY2ggc3VjaAorcmVnaXN0ZXIgY2FuIGJlIHJlcHJlc2VudGVkIGJ5IHRoZSBncGlvLWNvbnRyb2xsZXIgbm9kZS4KKworUmVxdWlyZWQgcHJvcGVyaXRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImZzbCw8Ym9hcmQ+LWJjc3ItZ3BpbyIuCistIHJlZyA6IFNob3VsZCBjb250YWluIHRoZSBhZGRyZXNzIGFuZCB0aGUgbGVuZ3RoIG9mIHRoZSBHUElPIGJhbmsKKyAgcmVnaXN0ZXIuCistICNncGlvLWNlbGxzIDogU2hvdWxkIGJlIHR3by4gVGhlIGZpcnN0IGNlbGwgaXMgdGhlIHBpbiBudW1iZXIgYW5kIHRoZQorICBzZWNvbmQgY2VsbCBpcyB1c2VkIHRvIHNwZWNpZnkgb3B0aW9uYWwgcGFyYW1ldGVycyAoY3VycmVudGx5IHVudXNlZCkuCistIGdwaW8tY29udHJvbGxlciA6IE1hcmtzIHRoZSBwb3J0IGFzIEdQSU8gY29udHJvbGxlci4KKworRXhhbXBsZToKKworCWJjc3JAMSwwIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQljb21wYXRpYmxlID0gImZzbCxtcGM4MzYwbWRzLWJjc3IiOworCQlyZWcgPSA8MSAwIDB4ODAwMD47CisJCXJhbmdlcyA9IDwwIDEgMCAweDgwMDA+OworCisJCWJjc3IxMzogZ3Bpby1jb250cm9sbGVyQGQgeworCQkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCQljb21wYXRpYmxlID0gImZzbCxtcGM4MzYwbWRzLWJjc3ItZ3BpbyI7CisJCQlyZWcgPSA8MHhkIDE+OworCQkJZ3Bpby1jb250cm9sbGVyOworCQl9OworCX07CisKKyogRnJlZXNjYWxlIG9uLWJvYXJkIEZQR0EgY29ubmVjdGVkIG9uIEkyQyBidXMKKworU29tZSBGcmVlc2NhbGUgYm9hcmRzIGxpa2UgQlNDOTEzMlFEUyBoYXZlIG9uIGJvYXJkIEZQR0EgY29ubmVjdGVkIG9uCit0aGUgaTJjIGJ1cy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlIGEgYm9hcmQtc3BlY2lmaWMgc3RyaW5nIGZvbGxvd2VkIGJ5IGEgc3RyaW5nCisgIGluZGljYXRpbmcgdGhlIHR5cGUgb2YgRlBHQS4gIEV4YW1wbGU6CisJImZzbCw8Ym9hcmQ+LWZwZ2EiLCAiZnNsLGZwZ2EtcWl4aXMtaTJjIgorLSByZWc6IFNob3VsZCBjb250YWluIHRoZSBhZGRyZXNzIG9mIHRoZSBGUEdBCisKK0V4YW1wbGU6CisJZnBnYTogZnBnYUA2NiB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGJzYzkxMzJxZHMtZnBnYSIsICJmc2wsZnBnYS1xaXhpcy1pMmMiOworCQlyZWcgPSA8MHg2Nj47CisJfTsKKworKiBGcmVlc2NhbGUgb24tYm9hcmQgQ1BMRAorCitTb21lIEZyZWVzY2FsZSBib2FyZHMgbGlrZSBUMTA0MFJEQiBoYXZlIGFuIG9uIGJvYXJkIENQTEQgY29ubmVjdGVkLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgYSBib2FyZC1zcGVjaWZpYyBzdHJpbmcgbGlrZSAiZnNsLDxib2FyZD4tY3BsZCIKKyAgRXhhbXBsZToKKwkiZnNsLHQxMDQwcmRiLWNwbGQiLCAiZnNsLHQxMDQycmRiLWNwbGQiLCAiZnNsLHQxMDQycmRiX3BpLWNwbGQiCistIHJlZzogc2hvdWxkIGRlc2NyaWJlIENQTEQgcmVnaXN0ZXJzCisKK0V4YW1wbGU6CisJY3BsZEAzLDAgeworCQljb21wYXRpYmxlID0gImZzbCx0MTA0MHJkYi1jcGxkIjsKKwkJcmVnID0gPDMgMCAweDMwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idG1ydmwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J0bXJ2bC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThmOTY0YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idG1ydmwudHh0CkBAIC0wLDAgKzEsMjkgQEAKK2J0bXJ2bAorLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogbXVzdCBiZSAiYnRtcnZsLGNmZ2RhdGEiCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKyAgLSBidG1ydmwsY2FsLWRhdGEgOiBDYWxpYnJhdGlvbiBkYXRhIGRvd25sb2FkZWQgdG8gdGhlIGRldmljZSBkdXJpbmcKKwkJICAgICAgaW5pdGlhbGl6YXRpb24uIFRoaXMgaXMgYW4gYXJyYXkgb2YgMjggdmFsdWVzKHU4KS4KKworICAtIGJ0bXJ2bCxncGlvLWdhcCA6IGdwaW8gYW5kIGdhcCAoaW4gbXNlY3MpIGNvbWJpbmF0aW9uIHRvIGJlCisJCSAgICAgIGNvbmZpZ3VyZWQuCisKK0V4YW1wbGU6CisKK0dQSU8gcGluIDEzIGlzIGNvbmZpZ3VyZWQgYXMgYSB3YWtldXAgc291cmNlIGFuZCBHQVAgaXMgc2V0IHRvIDEwMCBtc2VjcworaW4gYmVsb3cgZXhhbXBsZS4KKworYnRtcnZsIHsKKwljb21wYXRpYmxlID0gImJ0bXJ2bCxjZmdkYXRhIjsKKworCWJ0bXJ2bCxjYWwtZGF0YSA9IC9iaXRzLyA4IDwKKwkJMHgzNyAweDAxIDB4MWMgMHgwMCAweGZmIDB4ZmYgMHhmZiAweGZmIDB4MDEgMHg3ZiAweDA0IDB4MDIKKwkJMHgwMCAweDAwIDB4YmEgMHhjZSAweGMwIDB4YzYgMHgyZCAweDAwIDB4MDAgMHgwMCAweDAwIDB4MDAKKwkJMHgwMCAweDAwIDB4ZjAgMHgwMD47CisJYnRtcnZsLGdwaW8tZ2FwID0gPDB4MGQ2ND47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy9icmNtLGJ1cy1heGkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy9icmNtLGJ1cy1heGkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZDQ0ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL2JyY20sYnVzLWF4aS50eHQKQEAgLTAsMCArMSw1MyBAQAorRHJpdmVyIGZvciBBUk0gQVhJIEJ1cyB3aXRoIEJyb2FkY29tIFBsdWdpbnMgKGJjbWEpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IGJyY20sYnVzLWF4aQorCistIHJlZyA6IGlvbWVtIGFkZHJlc3MgcmFuZ2Ugb2YgY2hpcGNvbW1vbiBjb3JlCisKK1RoZSBjb3JlcyBvbiB0aGUgQVhJIGJ1cyBhcmUgYXV0b21hdGljYWxseSBkZXRlY3RlZCBieSBiY21hIHdpdGggdGhlCittZW1vcnkgcmFuZ2VzIHRoZXkgYXJlIHVzaW5nIGFuZCB0aGV5IGdldCByZWdpc3RlcmVkIGFmdGVyd2FyZHMuCitBdXRvbWF0aWMgZGV0ZWN0aW9uIG9mIHRoZSBJUlEgbnVtYmVyIGlzIG5vdCB3b3JraW5nIG9uCitCQ000N3h4L0JDTTUzeHggQVJNIFNvQ3MuIFRvIGFzc2lnbiBJUlEgbnVtYmVycyB0byB0aGUgY29yZXMsIHByb3ZpZGUKK3RoZW0gbWFudWFsbHkgdGhyb3VnaCBkZXZpY2UgdHJlZS4gVXNlIGFuIGludGVycnVwdC1tYXAgdG8gc3BlY2lmeSB0aGUKK0lSUSB1c2VkIGJ5IHRoZSBkZXZpY2VzIG9uIHRoZSBidXMuIFRoZSBmaXJzdCBhZGRyZXNzIGlzIGp1c3QgYW4gaW5kZXgsCitiZWNhdXNlIHdlIGRvIG5vdCBoYXZlIGFueSBzcGVjaWFsIHJlZ2lzdGVyLgorCitUaGUgdG9wLWxldmVsIGF4aSBidXMgbWF5IGNvbnRhaW4gY2hpbGRyZW4gcmVwcmVzZW50aW5nIGF0dGFjaGVkIGNvcmVzCisoZGV2aWNlcykuIFRoaXMgaXMgbmVlZGVkIHNpbmNlIHNvbWUgaGFyZHdhcmUgZGV0YWlscyBjYW4ndCBiZSBhdXRvCitkZXRlY3RlZCAoZS5nLiBJUlEgbnVtYmVycykuIEFsc28gc29tZSBvZiB0aGUgY29yZXMgbWF5IGJlIHJlc3BvbnNpYmxlCitmb3IgZXh0cmEgdGhpbmdzLCBlLmcuIENoaXBDb21tb24gcHJvdmlkaW5nIGFjY2VzcyB0byB0aGUgR1BJTyBjaGlwLgorCitFeGFtcGxlOgorCisJYXhpQDE4MDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJicmNtLGJ1cy1heGkiOworCQlyZWcgPSA8MHgxODAwMDAwMCAweDEwMDA+OworCQlyYW5nZXMgPSA8MHgwMDAwMDAwMCAweDE4MDAwMDAwIDB4MDAxMDAwMDA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJCWludGVycnVwdC1tYXAtbWFzayA9IDwweDAwMGZmZmZmIDB4ZmZmZj47CisJCWludGVycnVwdC1tYXAgPQorCQkJLyogRXRoZXJuZXQgQ29udHJvbGxlciAwICovCisJCQk8MHgwMDAyNDAwMCAwICZnaWMgR0lDX1NQSSAxNDcgSVJRX1RZUEVfTEVWRUxfSElHSD4sCisKKwkJCS8qIEV0aGVybmV0IENvbnRyb2xsZXIgMSAqLworCQkJPDB4MDAwMjUwMDAgMCAmZ2ljIEdJQ19TUEkgMTQ4IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCisJCQkvKiBQQ0llIENvbnRyb2xsZXIgMCAqLworCQkJPDB4MDAwMTIwMDAgMCAmZ2ljIEdJQ19TUEkgMTI2IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJPDB4MDAwMTIwMDAgMSAmZ2ljIEdJQ19TUEkgMTI3IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJPDB4MDAwMTIwMDAgMiAmZ2ljIEdJQ19TUEkgMTI4IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJPDB4MDAwMTIwMDAgMyAmZ2ljIEdJQ19TUEkgMTI5IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJPDB4MDAwMTIwMDAgNCAmZ2ljIEdJQ19TUEkgMTMwIElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJPDB4MDAwMTIwMDAgNSAmZ2ljIEdJQ19TUEkgMTMxIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCisJCWNoaXBjb21tb24geworCQkJcmVnID0gPDB4MDAwMDAwMDAgMHgxMDAwPjsKKworCQkJZ3Bpby1jb250cm9sbGVyOworCQkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMvYnJjbSxnaXNiLWFyYi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL2JyY20sZ2lzYi1hcmIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlY2VlZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL2JyY20sZ2lzYi1hcmIudHh0CkBAIC0wLDAgKzEsMzQgQEAKK0Jyb2FkY29tIEdJU0IgYnVzIEFyYml0ZXIgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6CisgICAgImJyY20sZ2lzYi1hcmIiIG9yICJicmNtLGJjbTc0NDUtZ2lzYi1hcmIiIGZvciAyOG5tIGNoaXBzCisgICAgImJyY20sYmNtNzQzNS1naXNiLWFyYiIgZm9yIG5ld2VyIDQwbm0gY2hpcHMKKyAgICAiYnJjbSxiY203NDAwLWdpc2ItYXJiIiBmb3Igb2xkZXIgNDBubSBjaGlwcyBhbmQgYWxsIDY1bm0gY2hpcHMKKyAgICAiYnJjbSxiY203MDM4LWdpc2ItYXJiIiBmb3IgMTMwbm0gY2hpcHMKKy0gcmVnOiBzcGVjaWZpZXMgdGhlIGJhc2UgcGh5c2ljYWwgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgcmVnaXN0ZXJzCistIGludGVycnVwdC1wYXJlbnQ6IHNwZWNpZmllcyB0aGUgcGhhbmRsZSB0byB0aGUgcGFyZW50IGludGVycnVwdCBjb250cm9sbGVyCisgIHRoaXMgYXJiaXRlciBnZXRzIGludGVycnVwdCBsaW5lIGZyb20KKy0gaW50ZXJydXB0czogc3BlY2lmaWVzIHRoZSB0d28gaW50ZXJydXB0cyAodGltZW91dCBhbmQgVEVBKSB0byBiZSB1c2VkIGZyb20KKyAgdGhlIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlcgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIGJyY20sZ2lzYi1hcmItbWFzdGVyLW1hc2s6IDMyLWJpdHMgd2lkZSBiaXRtYXNrIHVzZWQgdG8gc3BlY2lmeSB3aGljaCBHSVNCCisgIG1hc3RlcnMgYXJlIHZhbGlkIGF0IHRoZSBzeXN0ZW0gbGV2ZWwKKy0gYnJjbSxnaXNiLWFyYi1tYXN0ZXItbmFtZXM6IHN0cmluZyBsaXN0IG9mIHRoZSBsaXR0ZXJhbCBuYW1lIG9mIHRoZSBHSVNCCisgIG1hc3RlcnMuIFNob3VsZCBtYXRjaCB0aGUgbnVtYmVyIG9mIGJpdHMgc2V0IGluIGJyY20sZ2lzYi1tYXN0ZXItbWFzayBhbmQKKyAgdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXBwZWFyCisKK0V4YW1wbGU6CisKK2dpc2ItYXJiQGYwNDAwMDAwIHsKKwljb21wYXRpYmxlID0gImJyY20sZ2lzYi1hcmIiOworCXJlZyA9IDwweGYwNDAwMDAwIDB4ODAwPjsKKwlpbnRlcnJ1cHRzID0gPDA+LCA8Mj47CisJaW50ZXJydXB0LXBhcmVudCA9IDwmc3VuX2wyX2ludGM+OworCisJYnJjbSxnaXNiLWFyYi1tYXN0ZXItbWFzayA9IDwweDc+OworCWJyY20sZ2lzYi1hcmItbWFzdGVyLW5hbWVzID0gImJzcF8wIiwgInNjcHVfMCIsICJjcHVfMCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy9pbXgtd2VpbS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL2lteC13ZWltLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjMwZDg0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy9pbXgtd2VpbS50eHQKQEAgLTAsMCArMSw4MiBAQAorRGV2aWNlIHRyZWUgYmluZGluZ3MgZm9yIGkuTVggV2lyZWxlc3MgRXh0ZXJuYWwgSW50ZXJmYWNlIE1vZHVsZSAoV0VJTSkKKworVGhlIHRlcm0gIndpcmVsZXNzIiBkb2VzIG5vdCBpbXBseSB0aGF0IHRoZSBXRUlNIGlzIGxpdGVyYWxseSBhbiBpbnRlcmZhY2UKK3dpdGhvdXQgd2lyZXMuIEl0IHNpbXBseSBtZWFucyB0aGF0IHRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IGRlc2lnbmVkIGZvcgord2lyZWxlc3MgYW5kIG1vYmlsZSBhcHBsaWNhdGlvbnMgdGhhdCB1c2UgbG93LXBvd2VyIHRlY2hub2xvZ3kuCisKK1RoZSBhY3R1YWwgZGV2aWNlcyBhcmUgaW5zdGFudGlhdGVkIGZyb20gdGhlIGNoaWxkIG5vZGVzIG9mIGEgV0VJTSBub2RlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgLSBjb21wYXRpYmxlOgkJU2hvdWxkIGNvbnRhaW4gb25lIG9mIHRoZSBmb2xsb3dpbmc6CisJCQkgICJmc2wsaW14MS13ZWltIgorCQkJICAiZnNsLGlteDI3LXdlaW0iCisJCQkgICJmc2wsaW14NTEtd2VpbSIKKwkJCSAgImZzbCxpbXg1MC13ZWltIgorCQkJICAiZnNsLGlteDZxLXdlaW0iCisgLSByZWc6CQkJQSByZXNvdXJjZSBzcGVjaWZpZXIgZm9yIHRoZSByZWdpc3RlciBzcGFjZQorCQkJKHNlZSB0aGUgZXhhbXBsZSBiZWxvdykKKyAtIGNsb2NrczoJCXRoZSBjbG9jaywgc2VlIHRoZSBleGFtcGxlIGJlbG93LgorIC0gI2FkZHJlc3MtY2VsbHM6CU11c3QgYmUgc2V0IHRvIDIgdG8gYWxsb3cgbWVtb3J5IGFkZHJlc3MgdHJhbnNsYXRpb24KKyAtICNzaXplLWNlbGxzOgkJTXVzdCBiZSBzZXQgdG8gMSB0byBhbGxvdyBDUyBhZGRyZXNzIHBhc3NpbmcKKyAtIHJhbmdlczoJCU11c3QgYmUgc2V0IHVwIHRvIHJlZmxlY3QgdGhlIG1lbW9yeSBsYXlvdXQgd2l0aCBmb3VyCisJCQlpbnRlZ2VyIHZhbHVlcyBmb3IgZWFjaCBjaGlwLXNlbGVjdCBsaW5lIGluIHVzZToKKworCQkJICAgPGNzLW51bWJlcj4gMCA8cGh5c2ljYWwgYWRkcmVzcyBvZiBtYXBwaW5nPiA8c2l6ZT4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworIC0gZnNsLHdlaW0tY3MtZ3ByOglGb3IgImZzbCxpbXg1MC13ZWltIiBhbmQgImZzbCxpbXg2cS13ZWltIiB0eXBlIG9mCisJCQlkZXZpY2VzLCBpdCBzaG91bGQgYmUgdGhlIHBoYW5kbGUgdG8gdGhlIHN5c3RlbSBHZW5lcmFsCisJCQlQdXJwb3NlIFJlZ2lzdGVyIGNvbnRyb2xsZXIgdGhhdCBjb250YWlucyBXRUlNIENTIEdQUgorCQkJcmVnaXN0ZXIsIGUuZy4gSU9NVVhDX0dQUjEgb24gaS5NWDZRLiAgSU9NVVhDX0dQUjFbMTE6MF0KKwkJCXNob3VsZCBiZSBzZXQgdXAgYXMgb25lIG9mIHRoZSBmb2xsb3dpbmcgNCBwb3NzaWJsZQorCQkJdmFsdWVzIGRlcGVuZGluZyBvbiB0aGUgQ1Mgc3BhY2UgY29uZmlndXJhdGlvbi4KKworCQkJSU9NVVhDX0dQUjFbMTE6MF0gICAgQ1MwICAgIENTMSAgICBDUzIgICAgQ1MzCisJCQktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkJCQkwNQkgICAgMTI4TSAgICAgME0gICAgIDBNICAgICAwTQorCQkJCTAzMyAgICAgICAgICA2NE0gICAgNjRNICAgICAwTSAgICAgME0KKwkJCQkwMTEzICAgICAgICAgNjRNICAgIDMyTSAgICAzMk0gICAgIDBNCisJCQkJMDExMTEgICAgICAgIDMyTSAgICAzMk0gICAgMzJNICAgIDMyTQorCisJCQlJbiBjYXNlIHRoYXQgdGhlIHByb3BlcnR5IGlzIGFic2VudCwgdGhlIHJlc2V0IHZhbHVlIG9yCisJCQl3aGF0IGJvb3Rsb2FkZXIgc2V0cyB1cCBpbiBJT01VWENfR1BSMVsxMTowXSB3aWxsIGJlCisJCQl1c2VkLgorCitUaW1pbmcgcHJvcGVydHkgZm9yIGNoaWxkIG5vZGVzLiBJdCBpcyBtYW5kYXRvcnksIG5vdCBvcHRpb25hbC4KKworIC0gZnNsLHdlaW0tY3MtdGltaW5nOglUaGUgdGltaW5nIGFycmF5LCBjb250YWlucyB0aW1pbmcgdmFsdWVzIGZvciB0aGUKKwkJCWNoaWxkIG5vZGUuIFdlIGNhbiBnZXQgdGhlIENTIGluZGV4IGZyb20gdGhlIGNoaWxkCisJCQlub2RlJ3MgInJlZyIgcHJvcGVydHkuIFRoZSBudW1iZXIgb2YgcmVnaXN0ZXJzIGRlcGVuZHMKKwkJCW9uIHRoZSBzZWxlY3RlZCBjaGlwLgorCQkJRm9yIGkuTVgxLCBpLk1YMjEgKCJmc2wsaW14MS13ZWltIikgdGhlcmUgYXJlIHR3bworCQkJcmVnaXN0ZXJzOiBDU3hVLCBDU3hMLgorCQkJRm9yIGkuTVgyNSwgaS5NWDI3LCBpLk1YMzEgYW5kIGkuTVgzNSAoImZzbCxpbXgyNy13ZWltIikKKwkJCXRoZXJlIGFyZSB0aHJlZSByZWdpc3RlcnM6IENTQ1J4VSwgQ1NDUnhMLCBDU0NSeEEuCisJCQlGb3IgaS5NWDUwLCBpLk1YNTMgKCJmc2wsaW14NTAtd2VpbSIpLAorCQkJaS5NWDUxICgiZnNsLGlteDUxLXdlaW0iKSBhbmQgaS5NWDZRICgiZnNsLGlteDZxLXdlaW0iKQorCQkJdGhlcmUgYXJlIHNpeCByZWdpc3RlcnM6IENTeEdDUjEsIENTeEdDUjIsIENTeFJDUjEsCisJCQlDU3hSQ1IyLCBDU3hXQ1IxLCBDU3hXQ1IyLgorCitFeGFtcGxlIGZvciBhbiBpbXg2cS1zYWJyZWF1dG8gYm9hcmQsIHRoZSBOT1IgZmxhc2ggY29ubmVjdGVkIHRvIHRoZSBXRUlNOgorCisJd2VpbTogd2VpbUAwMjFiODAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGlteDZxLXdlaW0iOworCQlyZWcgPSA8MHgwMjFiODAwMCAweDQwMDA+OworCQljbG9ja3MgPSA8JmNsa3MgMTk2PjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mj47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQlyYW5nZXMgPSA8MCAwIDB4MDgwMDAwMDAgMHgwODAwMDAwMD47CisJCWZzbCx3ZWltLWNzLWdwciA9IDwmZ3ByPjsKKworCQlub3JAMCwwIHsKKwkJCWNvbXBhdGlibGUgPSAiY2ZpLWZsYXNoIjsKKwkJCXJlZyA9IDwwIDAgMHgwMjAwMDAwMD47CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDE+OworCQkJYmFuay13aWR0aCA9IDwyPjsKKwkJCWZzbCx3ZWltLWNzLXRpbWluZyA9IDwweDAwNjIwMDgxIDB4MDAwMDAwMDEgMHgxYzAyMjAwMAorCQkJCQkweDAwMDBjMDAwIDB4MTQwNGEzOGUgMHgwMDAwMDAwMD47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMvbXZlYnUtbWJ1cy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL212ZWJ1LW1idXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNmNkZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL212ZWJ1LW1idXMudHh0CkBAIC0wLDAgKzEsMjc5IEBACisKKyogTWFydmVsbCBNQnVzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZToJIFNob3VsZCBiZSBzZXQgdG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CisJCSBtYXJ2ZWxsLGFybWFkYTM3MC1tYnVzCisJCSBtYXJ2ZWxsLGFybWFkYXhwLW1idXMKKwkJIG1hcnZlbGwsYXJtYWRhMzc1LW1idXMKKwkJIG1hcnZlbGwsYXJtYWRhMzgwLW1idXMKKwkJIG1hcnZlbGwsa2lya3dvb2QtbWJ1cworCQkgbWFydmVsbCxkb3ZlLW1idXMKKwkJIG1hcnZlbGwsb3Jpb241eC04OGY1MjgxLW1idXMKKwkJIG1hcnZlbGwsb3Jpb241eC04OGY1MTgyLW1idXMKKwkJIG1hcnZlbGwsb3Jpb241eC04OGY1MTgxLW1idXMKKwkJIG1hcnZlbGwsb3Jpb241eC04OGY2MTgzLW1idXMKKwkJIG1hcnZlbGwsbXY3OHh4MC1tYnVzCisKKy0gYWRkcmVzcy1jZWxsczogTXVzdCBiZSAnMicuIFRoZSBmaXJzdCBjZWxsIGZvciB0aGUgTUJ1cyBJRCBlbmNvZGluZywKKyAgICAgICAgICAgICAgICAgdGhlIHNlY29uZCBjZWxsIGZvciB0aGUgYWRkcmVzcyBvZmZzZXQgd2l0aGluIHRoZSB3aW5kb3cuCisKKy0gc2l6ZS1jZWxsczogICAgTXVzdCBiZSAnMScuCisKKy0gcmFuZ2VzOiAgICAgICAgTXVzdCBiZSBzZXQgdXAgdG8gcHJvdmlkZSBhIHByb3BlciB0cmFuc2xhdGlvbiBmb3IgZWFjaCBjaGlsZC4KKwkgICAgICAgICBTZWUgdGhlIGV4YW1wbGVzIGJlbG93LgorCistIGNvbnRyb2xsZXI6ICAgIENvbnRhaW5zIGEgc2luZ2xlIHBoYW5kbGUgcmVmZXJyaW5nIHRvIHRoZSBNQnVzIGNvbnRyb2xsZXIKKyAgICAgICAgICAgICAgICAgbm9kZS4gVGhpcyBhbGxvd3MgdG8gc3BlY2lmeSB0aGUgbm9kZSB0aGF0IGNvbnRhaW5zIHRoZQorCQkgcmVnaXN0ZXJzIHRoYXQgY29udHJvbCB0aGUgTUJ1cywgd2hpY2ggaXMgdHlwaWNhbGx5IGNvbnRhaW5lZAorCQkgd2l0aGluIHRoZSBpbnRlcm5hbCByZWdpc3RlciB3aW5kb3cgKHNlZSBiZWxvdykuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gcGNpZS1tZW0tYXBlcnR1cmU6CVRoaXMgb3B0aW9uYWwgcHJvcGVydHkgY29udGFpbnMgdGhlIGFwZXJ0dXJlIGZvcgorCQkJdGhlIG1lbW9yeSByZWdpb24gb2YgdGhlIFBDSWUgZHJpdmVyLgorCQkJSWYgaXQncyBkZWZpbmVkLCBpdCBtdXN0IGVuY29kZSB0aGUgYmFzZSBhZGRyZXNzIGFuZAorCQkJc2l6ZSBmb3IgdGhlIGFkZHJlc3MgZGVjb2Rpbmcgd2luZG93cyBhbGxvY2F0ZWQgZm9yCisJCQl0aGUgUENJZSBtZW1vcnkgcmVnaW9uLgorCistIHBjaWUtaW8tYXBlcnR1cmU6CUp1c3QgYXMgZXhwbGFpbmVkIGZvciB0aGUgYWJvdmUgcHJvcGVydHksIHRoaXMKKwkJCW9wdGlvbmFsIHByb3BlcnR5IGNvbnRhaW5zIHRoZSBhcGVydHVyZSBmb3IgdGhlCisJCQlJL08gcmVnaW9uIG9mIHRoZSBQQ0llIGRyaXZlci4KKworKiBNYXJ2ZWxsIE1CdXMgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6CVNob3VsZCBiZSBzZXQgdG8gIm1hcnZlbGwsbWJ1cy1jb250cm9sbGVyIi4KKworLSByZWc6ICAgICAgICAgIERldmljZSdzIHJlZ2lzdGVyIHNwYWNlLgorCQlUd28gb3IgdGhyZWUgZW50cmllcyBhcmUgZXhwZWN0ZWQgKHNlZSB0aGUgZXhhbXBsZXMgYmVsb3cpOgorCQl0aGUgZmlyc3Qgb25lIGNvbnRyb2xzIHRoZSBkZXZpY2VzIGRlY29kaW5nIHdpbmRvdywKKwkJdGhlIHNlY29uZCBvbmUgY29udHJvbHMgdGhlIFNEUkFNIGRlY29kaW5nIHdpbmRvdyBhbmQKKwkJdGhlIHRoaXJkIGNvbnRyb2xzIHRoZSBNQnVzIGJyaWRnZSAob25seSB3aXRoIHRoZQorCQltYXJ2ZWxsLGFybWFkYTM3MC1tYnVzIGFuZCBtYXJ2ZWxsLGFybWFkYXhwLW1idXMKKwkJY29tcGF0aWJsZSBzdHJpbmdzKQorCitFeGFtcGxlOgorCisJc29jIHsKKwkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLGFybWFkYTM3MC1tYnVzIiwgInNpbXBsZS1idXMiOworCQkjYWRkcmVzcy1jZWxscyA9IDwyPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCWNvbnRyb2xsZXIgPSA8Jm1idXNjPjsKKwkJcGNpZS1tZW0tYXBlcnR1cmUgPSA8MHhlMDAwMDAwMCAweDgwMDAwMDA+OworCQlwY2llLWlvLWFwZXJ0dXJlICA9IDwweGU4MDAwMDAwIDB4MTAwMDAwPjsKKworCQlpbnRlcm5hbC1yZWdzIHsKKwkJCWNvbXBhdGlibGUgPSAic2ltcGxlLWJ1cyI7CisKKwkJCW1idXNjOiBtYnVzLWNvbnRyb2xsZXJAMjAwMDAgeworCQkJCWNvbXBhdGlibGUgPSAibWFydmVsbCxtYnVzLWNvbnRyb2xsZXIiOworCQkJCXJlZyA9IDwweDIwMDAwIDB4MTAwPiwgPDB4MjAxODAgMHgyMD4sIDwweDIwMjUwIDB4OD47CisJCQl9OworCisJCQkvKiBtb3JlIGNoaWxkcmVuIC4uLiovCisJCX07CisJfTsKKworKiogTUJ1cyBhZGRyZXNzIGRlY29kaW5nIHdpbmRvdyBzcGVjaWZpY2F0aW9uCisKK1RoZSBNQnVzIGNoaWxkcmVuIGFkZHJlc3Mgc3BhY2UgaXMgY29tcHJpc2VkIG9mIHR3byBjZWxsczogdGhlIGZpcnN0IG9uZSBmb3IKK3RoZSB3aW5kb3cgSUQgYW5kIHRoZSBzZWNvbmQgb25lIGZvciB0aGUgb2Zmc2V0IHdpdGhpbiB0aGUgd2luZG93LgorSW4gb3JkZXIgdG8gYWxsb3cgdG8gZGVzY3JpYmUgdmFsaWQgYW5kIG5vbi12YWxpZCB3aW5kb3cgZW50cmllcywgdGhlCitmb2xsb3dpbmcgZW5jb2RpbmcgaXMgdXNlZDoKKworICAweFNJQUEwMDAwIDB4MDBvb29vb28KKworV2hlcmU6CisKKyAgUyA9IDB4MCBmb3IgYSBNQnVzIHZhbGlkIHdpbmRvdworICBTID0gMHhmIGZvciBhIG5vbi12YWxpZCB3aW5kb3cgKHNlZSBiZWxvdykKKworSWYgUyA9IDB4MCwgdGhlbjoKKworICAgSSA9IDQtYml0IHdpbmRvdyB0YXJnZXQgSUQKKyAgQUEgPSB3aW5kcHcgYXR0cmlidXRlCisKK0lmIFMgPSAweGYsIHRoZW46CisKKyAgIEkgPSBkb24ndCBjYXJlCisgICBBQSA9IDEgZm9yIGludGVybmFsIHJlZ2lzdGVyCisKK0ZvbGxvd2luZyB0aGUgYWJvdmUgZW5jb2RpbmcsIGZvciBlYWNoIHJhbmdlcyBlbnRyeSBmb3IgYSBNQnVzIHZhbGlkIHdpbmRvdworKFMgPSAweDApLCBhbiBhZGRyZXNzIGRlY29kaW5nIHdpbmRvdyBpcyBhbGxvY2F0ZWQuIE9uIHRoZSBvdGhlciBzaWRlLAorZW50cmllcyBmb3IgdHJhbnNsYXRpb24gdGhhdCBkbyBub3QgY29ycmVzcG9uZCB0byB2YWxpZCB3aW5kb3dzIChTID0gMHhmKQorYXJlIHNraXBwZWQuCisKKwlzb2MgeworCQljb21wYXRpYmxlID0gIm1hcnZlbGwsYXJtYWRhMzcwLW1idXMiLCAic2ltcGxlLWJ1cyI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDI+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJY29udHJvbGxlciA9IDwmbWJ1c2M+OworCisJCXJhbmdlcyA9IDwweGYwMDEwMDAwIDAgMCAweGQwMDAwMDAwIDB4MTAwMDAwCisJCQkgIDB4MDFlMDAwMDAgMCAwIDB4ZmZmMDAwMDAgMHgxMDAwMDA+OworCisJCWJvb3Ryb20geworCQkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLGJvb3Ryb20iOworCQkJcmVnID0gPDB4MDFlMDAwMDAgMCAweDEwMDAwMD47CisJCX07CisKKwkJLyogb3RoZXIgY2hpbGRyZW4gKi8KKwkJLi4uCisKKwkJaW50ZXJuYWwtcmVncyB7CisJCQljb21wYXRpYmxlID0gInNpbXBsZS1idXMiOworCQkJcmFuZ2VzID0gPDAgMHhmMDAxMDAwMCAwIDB4MTAwMDAwPjsKKworCQkJbWJ1c2M6IG1idXMtY29udHJvbGxlckAyMDAwMCB7CisJCQkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLG1idXMtY29udHJvbGxlciI7CisJCQkJcmVnID0gPDB4MjAwMDAgMHgxMDA+LCA8MHgyMDE4MCAweDIwPiwgPDB4MjAyNTAgMHg4PjsKKwkJCX07CisKKwkJCS8qIG1vcmUgY2hpbGRyZW4gLi4uKi8KKwkJfTsKKwl9OworCitJbiB0aGUgc2hvd24gZXhhbXBsZSwgdGhlIHRyYW5zbGF0aW9uIGVudHJ5IGluIHRoZSAncmFuZ2VzJyBwcm9wZXJ0eSBpcyB3aGF0CittYWtlcyB0aGUgTUJ1cyBkcml2ZXIgY3JlYXRlIGEgc3RhdGljIGRlY29kaW5nIHdpbmRvdyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcKK2dpdmVuIGNoaWxkIGRldmljZS4gTm90ZSB0aGF0IHRoZSBiaW5kaW5nIGRvZXMgbm90IHJlcXVpcmUgY2hpbGQgbm9kZXMgdG8gYmUKK3ByZXNlbnQuIE9mIGNvdXJzZSwgY2hpbGQgbm9kZXMgYXJlIG5lZWRlZCB0byBwcm9iZSB0aGUgZGV2aWNlcy4KKworU2luY2UgZWFjaCB3aW5kb3cgaXMgaWRlbnRpZmllZCBieSBpdHMgdGFyZ2V0IElEIGFuZCBhdHRyaWJ1dGUgSUQgdGhlcmUncworYSBzcGVjaWFsIG1hY3JvIHRoYXQgY2FuIGJlIHVzZSB0byBzaW1wbGlmeSB0aGUgdHJhbnNsYXRpb24gZW50cmllczoKKworI2RlZmluZSBNQlVTX0lEKHRhcmdldCxhdHRyaWJ1dGVzKSAoKCh0YXJnZXQpIDw8IDI0KSB8ICgoYXR0cmlidXRlcykgPDwgMTYpKQorCitVc2luZyB0aGlzIG1hY3JvLCB0aGUgYWJvdmUgZXhhbXBsZSB3b3VsZCBiZToKKworCXNvYyB7CisJCWNvbXBhdGlibGUgPSAibWFydmVsbCxhcm1hZGEzNzAtbWJ1cyIsICJzaW1wbGUtYnVzIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mj47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQljb250cm9sbGVyID0gPCZtYnVzYz47CisKKwkJcmFuZ2VzID0gPCBNQlVTX0lEKDB4ZjAsIDB4MDEpIDAgMCAweGQwMDAwMDAwIDB4MTAwMDAwCisJCQkgICBNQlVTX0lEKDB4MDEsIDB4ZTApIDAgMCAweGZmZjAwMDAwIDB4MTAwMDAwPjsKKworCQlib290cm9tIHsKKwkJCWNvbXBhdGlibGUgPSAibWFydmVsbCxib290cm9tIjsKKwkJCXJlZyA9IDxNQlVTX0lEKDB4MDEsIDB4ZTApIDAgMHgxMDAwMDA+OworCQl9OworCisJCS8qIG90aGVyIGNoaWxkcmVuICovCisJCS4uLgorCisJCWludGVybmFsLXJlZ3MgeworCQkJY29tcGF0aWJsZSA9ICJzaW1wbGUtYnVzIjsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MT47CisJCQlyYW5nZXMgPSA8MCBNQlVTX0lEKDB4ZjAsIDB4MDEpIDAgMHgxMDAwMDA+OworCisJCQltYnVzYzogbWJ1cy1jb250cm9sbGVyQDIwMDAwIHsKKwkJCQljb21wYXRpYmxlID0gIm1hcnZlbGwsbWJ1cy1jb250cm9sbGVyIjsKKwkJCQlyZWcgPSA8MHgyMDAwMCAweDEwMD4sIDwweDIwMTgwIDB4MjA+LCA8MHgyMDI1MCAweDg+OworCQkJfTsKKworCQkJLyogb3RoZXIgY2hpbGRyZW4gKi8KKwkJCS4uLgorCQl9OworCX07CisKKworKiogQWJvdXQgdGhlIHdpbmRvdyBiYXNlIGFkZHJlc3MKKworUmVtZW1iZXIgdGhlIE1CdXMgY29udHJvbGxlciBhbGxvd3MgYSBncmVhdCBkZWFsIG9mIGZsZXhpYmlsaXR5IGZvciBjaG9vc2luZwordGhlIGRlY29kaW5nIHdpbmRvdyBiYXNlIGFkZHJlc3MuIFdoZW4gcGxhbm5pbmcgdGhlIGRldmljZSB0cmVlIGxheW91dCBpdCdzCitwb3NzaWJsZSB0byBjaG9vc2UgYW55IGFkZHJlc3MgYXMgdGhlIGJhc2UgYWRkcmVzcywgcHJvdmlkZWQgb2YgY291cnNlIHRoZXJlJ3MKK2EgcmVnaW9uIGxhcmdlIGVub3VnaCBhdmFpbGFibGUsIGFuZCB3aXRoIHRoZSByZXF1aXJlZCBhbGlnbm1lbnQuCisKK1lldCBpbiBvdGhlciB3b3JkczogdGhlcmUncyBub3RoaW5nIHByZXZlbnRpbmcgdXMgZnJvbSBzZXR0aW5nIGEgYmFzZSBhZGRyZXNzCitvZiAweGYwMDAwMDAwLCBvciAweGQwMDAwMDAwIGZvciB0aGUgTk9SIGRldmljZSBzaG93biBhYm92ZSwgaWYgc3VjaCByZWdpb24gaXMKK3VudXNlZC4KKworKiogV2luZG93IGFsbG9jYXRpb24gcG9saWN5CisKK1RoZSBtYnVzLW5vZGUgcmFuZ2VzIHByb3BlcnR5IGRlZmluZXMgYSBzZXQgb2YgbWJ1cyB3aW5kb3dzIHRoYXQgYXJlIGV4cGVjdGVkCit0byBiZSBzZXQgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0gYW5kIHRoYXQgYXJlIGd1YXJhbnRlZWQgdG8gYmUgZnJlZSBvZiBvdmVybGFwcword2l0aCBvbmUgYW5vdGhlciBvciB3aXRoIHRoZSBzeXN0ZW0gbWVtb3J5IHJhbmdlcy4KKworRWFjaCBlbnRyeSBpbiB0aGUgcHJvcGVydHkgcmVmZXJzIHRvIGV4YWN0bHkgb25lIHdpbmRvdy4gSWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0KK2Nob29zZXMgdG8gdXNlIGEgZGlmZmVyZW50IHNldCBvZiBtYnVzIHdpbmRvd3MsIGl0IG11c3QgZW5zdXJlIHRoYXQgYW55IGFkZHJlc3MKK3RyYW5zbGF0aW9ucyBwZXJmb3JtZWQgZnJvbSBkb3duc3RyZWFtIGRldmljZXMgYXJlIGFkYXB0ZWQgYWNjb3JkaW5nbHkuCisKK1RoZSBvcGVyYXRpbmcgc3lzdGVtIG1heSBpbnNlcnQgYWRkaXRpb25hbCBtYnVzIHdpbmRvd3MgdGhhdCBkbyBub3QgY29uZmxpY3QKK3dpdGggdGhlIG9uZXMgbGlzdGVkIGluIHRoZSByYW5nZXMsIGUuZy4gZm9yIG1hcHBpbmcgUENJZSBkZXZpY2VzLgorQXMgYSBzcGVjaWFsIGNhc2UsIHRoZSBpbnRlcm5hbCByZWdpc3RlciB3aW5kb3cgbXVzdCBiZSBzZXQgdXAgYnkgdGhlIGJvb3QKK2xvYWRlciBhdCB0aGUgYWRkcmVzcyBsaXN0ZWQgaW4gdGhlIHJhbmdlcyBwcm9wZXJ0eSwgc2luY2UgYWNjZXNzIHRvIHRoYXQgcmVnaW9uCitpcyBuZWVkZWQgdG8gc2V0IHVwIHRoZSBvdGhlciB3aW5kb3dzLgorCisqKiBFeGFtcGxlCisKK1NlZSB0aGUgZXhhbXBsZSBiZWxvdywgd2hlcmUgYSBtb3JlIGNvbXBsZXRlIGRldmljZSB0cmVlIGlzIHNob3duOgorCisJc29jIHsKKwkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLGFybWFkYXhwLW1idXMiLCAic2ltcGxlLWJ1cyI7CisJCWNvbnRyb2xsZXIgPSA8Jm1idXNjPjsKKworCQlyYW5nZXMgPSA8TUJVU19JRCgweGYwLCAweDAxKSAwIDAgMHhkMDAwMDAwMCAweDEwMDAwMCAgIC8qIGludGVybmFsLXJlZ3MgKi8KKwkJCSAgTUJVU19JRCgweDAxLCAweDFkKSAwIDAgMHhmZmYwMDAwMCAweDEwMDAwMAorCQkJICBNQlVTX0lEKDB4MDEsIDB4MmYpIDAgMCAweGYwMDAwMDAwIDB4ODAwMDAwMD47CisKKwkJYm9vdHJvbSB7CisJCQljb21wYXRpYmxlID0gIm1hcnZlbGwsYm9vdHJvbSI7CisJCQlyZWcgPSA8TUJVU19JRCgweDAxLCAweDFkKSAwIDB4MTAwMDAwPjsKKwkJfTsKKworCQlkZXZidXMtYm9vdGNzIHsKKwkJCXN0YXR1cyA9ICJva2F5IjsKKwkJCXJhbmdlcyA9IDwwIE1CVVNfSUQoMHgwMSwgMHgyZikgMCAweDgwMDAwMDA+OworCisJCQkvKiBOT1IgKi8KKwkJCW5vciB7CisJCQkJY29tcGF0aWJsZSA9ICJjZmktZmxhc2giOworCQkJCXJlZyA9IDwwIDB4ODAwMDAwMD47CisJCQkJYmFuay13aWR0aCA9IDwyPjsKKwkJCX07CisJCX07CisKKwkJcGNpZS1jb250cm9sbGVyIHsKKwkJCWNvbXBhdGlibGUgPSAibWFydmVsbCxhcm1hZGEteHAtcGNpZSI7CisJCQlzdGF0dXMgPSAib2theSI7CisJCQlkZXZpY2VfdHlwZSA9ICJwY2kiOworCisJCQkjYWRkcmVzcy1jZWxscyA9IDwzPjsKKwkJCSNzaXplLWNlbGxzID0gPDI+OworCisJCQlyYW5nZXMgPQorCQkJICAgICAgIDwweDgyMDAwMDAwIDAgMHg0MDAwMCBNQlVTX0lEKDB4ZjAsIDB4MDEpIDB4NDAwMDAgMCAweDAwMDAyMDAwICAgLyogUG9ydCAwLjAgcmVnaXN0ZXJzICovCisJCQkJMHg4MjAwMDAwMCAwIDB4NDIwMDAgTUJVU19JRCgweGYwLCAweDAxKSAweDQyMDAwIDAgMHgwMDAwMjAwMCAgIC8qIFBvcnQgMi4wIHJlZ2lzdGVycyAqLworCQkJCTB4ODIwMDAwMDAgMCAweDQ0MDAwIE1CVVNfSUQoMHhmMCwgMHgwMSkgMHg0NDAwMCAwIDB4MDAwMDIwMDAgICAvKiBQb3J0IDAuMSByZWdpc3RlcnMgKi8KKwkJCQkweDgyMDAwMDAwIDAgMHg0ODAwMCBNQlVTX0lEKDB4ZjAsIDB4MDEpIDB4NDgwMDAgMCAweDAwMDAyMDAwICAgLyogUG9ydCAwLjIgcmVnaXN0ZXJzICovCisJCQkJMHg4MjAwMDAwMCAwIDB4NGMwMDAgTUJVU19JRCgweGYwLCAweDAxKSAweDRjMDAwIDAgMHgwMDAwMjAwMCAgIC8qIFBvcnQgMC4zIHJlZ2lzdGVycyAqLworCQkJCTB4ODIwMDA4MDAgMCAweGUwMDAwMDAwIE1CVVNfSUQoMHgwNCwgMHhlOCkgMHhlMDAwMDAwMCAwIDB4MDgwMDAwMDAgLyogUG9ydCAwLjAgTUVNICovCisJCQkJMHg4MTAwMDgwMCAwIDAgICAgICAgICAgTUJVU19JRCgweDA0LCAweGUwKSAweGU4MDAwMDAwIDAgMHgwMDEwMDAwMCAvKiBQb3J0IDAuMCBJTyAqLz47CisKKworCQkJcGNpZUAxLDAgeworCQkJCS8qIFBvcnQgMCwgTGFuZSAwICovCisJCQkJc3RhdHVzID0gIm9rYXkiOworCQkJfTsKKwkJfTsKKworCQlpbnRlcm5hbC1yZWdzIHsKKwkJCWNvbXBhdGlibGUgPSAic2ltcGxlLWJ1cyI7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDE+OworCQkJcmFuZ2VzID0gPDAgTUJVU19JRCgweGYwLCAweDAxKSAwIDB4MTAwMDAwPjsKKworCQkJbWJ1c2M6IG1idXMtY29udHJvbGxlckAyMDAwMCB7CisJCQkJcmVnID0gPDB4MjAwMDAgMHgxMDA+LCA8MHgyMDE4MCAweDIwPiwgPDB4MjAyNTAgMHg4PjsKKwkJCX07CisKKwkJCWludGVycnVwdC1jb250cm9sbGVyQDIwMDAwIHsKKwkJCSAgICAgIHJlZyA9IDwweDIwYTAwIDB4MmQwPiwgPDB4MjEwNzAgMHg1OD47CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL29tYXAtb2NwMnNjcC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL29tYXAtb2NwMnNjcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg3MjlmNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMvb21hcC1vY3Ayc2NwLnR4dApAQCAtMCwwICsxLDI5IEBACisqIE9NQVAgT0NQMlNDUCAtIG9jcCBpbnRlcmZhY2UgdG8gc2NwIGludGVyZmFjZQorCitwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJ0aSxhbTQzN3gtb2NwMnNjcCIgZm9yIEFNNDM3eCBwcm9jZXNzb3IKKwkgICAgICAgU2hvdWxkIGJlICJ0aSxvbWFwLW9jcDJzY3AiIGZvciBhbGwgb3RoZXJzCistIHJlZyA6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistICNhZGRyZXNzLWNlbGxzLCAjc2l6ZS1jZWxscyA6IE11c3QgYmUgcHJlc2VudCBpZiB0aGUgZGV2aWNlIGhhcyBzdWItbm9kZXMKKy0gcmFuZ2VzIDogdGhlIGNoaWxkIGFkZHJlc3Mgc3BhY2UgYXJlIG1hcHBlZCAxOjEgb250byB0aGUgcGFyZW50IGFkZHJlc3Mgc3BhY2UKKy0gdGksaHdtb2RzIDogbXVzdCBiZSAib2NwMnNjcF91c2JfcGh5IgorCitTdWItbm9kZXM6CitBbGwgdGhlIGRldmljZXMgY29ubmVjdGVkIHRvIG9jcDJzY3AgYXJlIGRlc2NyaWJlZCB1c2luZyBzdWItbm9kZSB0byBvY3Ayc2NwCisKK29jcDJzY3BANGEwYWQwMDAgeworCWNvbXBhdGlibGUgPSAidGksb21hcC1vY3Ayc2NwIjsKKwlyZWcgPSA8MHg0YTBhZDAwMCAweDFmPjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwxPjsKKwlyYW5nZXM7CisJdGksaHdtb2RzID0gIm9jcDJzY3BfdXNiX3BoeSI7CisKKwlzdWJub2RlMSB7CisJLi4uCisJfTsKKworCXN1Ym5vZGUyIHsKKwkuLi4KKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMvcmVuZXNhcyxic2MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy9yZW5lc2FzLGJzYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBlOTQ3MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMvcmVuZXNhcyxic2MudHh0CkBAIC0wLDAgKzEsNDYgQEAKK1JlbmVzYXMgQnVzIFN0YXRlIENvbnRyb2xsZXIgKEJTQykKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIFJlbmVzYXMgQnVzIFN0YXRlIENvbnRyb2xsZXIgKEJTQywgc29tZXRpbWVzIGNhbGxlZCAiTEJTQyB3aXRoaW4gQnVzCitCcmlkZ2UiLCBvciAiRXh0ZXJuYWwgQnVzIEludGVyZmFjZSIpIGNhbiBiZSBmb3VuZCBpbiBzZXZlcmFsIFJlbmVzYXMgQVJNIFNvQ3MuCitJdCBwcm92aWRlcyBhbiBleHRlcm5hbCBidXMgZm9yIGNvbm5lY3RpbmcgbXVsdGlwbGUgZXh0ZXJuYWwgZGV2aWNlcyB0byB0aGUKK1NvQywgZHJpdmluZyBzZXZlcmFsIGNoaXAgc2VsZWN0IGxpbmVzLCBmb3IgZS5nLiBOT1IgRkxBU0gsIEV0aGVybmV0IGFuZCBVU0IuCisKK1doaWxlIHRoZSBCU0MgaXMgYSBmYWlybHkgc2ltcGxlIG1lbW9yeS1tYXBwZWQgYnVzLCBpdCBtYXkgYmUgcGFydCBvZiBhIFBNCitkb21haW4sIGFuZCBtYXkgaGF2ZSBhIGdhdGVhYmxlIGZ1bmN0aW9uYWwgY2xvY2suCitCZWZvcmUgYSBkZXZpY2UgY29ubmVjdGVkIHRvIHRoZSBCU0MgY2FuIGJlIGFjY2Vzc2VkLCB0aGUgUE0gZG9tYWluCitjb250YWluaW5nIHRoZSBCU0MgbXVzdCBiZSBwb3dlcmVkIG9uLCBhbmQgdGhlIGZ1bmN0aW9uYWwgY2xvY2sKK2RyaXZpbmcgdGhlIEJTQyBtdXN0IGJlIGVuYWJsZWQuCisKK1RoZSBiaW5kaW5ncyBmb3IgdGhlIEJTQyBleHRlbmQgdGhlIGJpbmRpbmdzIGZvciAic2ltcGxlLXBtLWJ1cyIuCisKKworUmVxdWlyZWQgcHJvcGVydGllcworICAtIGNvbXBhdGlibGU6IE11c3QgY29udGFpbiBhbiBTb0Mtc3BlY2lmaWMgdmFsdWUsIGFuZCAicmVuZXNhcyxic2MiIGFuZAorCQkic2ltcGxlLXBtLWJ1cyIgYXMgZmFsbGJhY2tzLgorICAgICAgICAgICAgICAgIFNvQy1zcGVjaWZpYyB2YWx1ZXMgY2FuIGJlOgorCQkicmVuZXNhcyxic2MtcjhhNzNhNCIgZm9yIFItTW9iaWxlIEFQRTYgKHI4YTczYTQpCisJCSJyZW5lc2FzLGJzYy1zaDczYTAiIGZvciBTSC1Nb2JpbGUgQUc1IChzaDczYTApCisgIC0gI2FkZHJlc3MtY2VsbHMsICNzaXplLWNlbGxzLCByYW5nZXM6IE11c3QgZGVzY3JpYmUgdGhlIG1hcHBpbmcgYmV0d2VlbgorCQlwYXJlbnQgYWRkcmVzcyBhbmQgY2hpbGQgYWRkcmVzcyBzcGFjZXMuCisgIC0gcmVnOiBNdXN0IGNvbnRhaW4gdGhlIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIHRvIGFjY2VzcyB0aGUgYnVzIGNvbnRyb2xsZXIuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgIC0gaW50ZXJydXB0czogTXVzdCBjb250YWluIGEgcmVmZXJlbmNlIHRvIHRoZSBCU0MgaW50ZXJydXB0LCBpZiBhdmFpbGFibGUuCisgIC0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gYSByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uYWwgY2xvY2ssIGlmIGF2YWlsYWJsZS4KKyAgLSBwb3dlci1kb21haW5zOiBNdXN0IGNvbnRhaW4gYSByZWZlcmVuY2UgdG8gdGhlIFBNIGRvbWFpbiwgaWYgYXZhaWxhYmxlLgorCisKK0V4YW1wbGU6CisKKwlic2M6IGJ1c0BmZWMxMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxic2Mtc2g3M2EwIiwgInJlbmVzYXMsYnNjIiwKKwkJCSAgICAgInNpbXBsZS1wbS1idXMiOworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCXJhbmdlcyA9IDwwIDAgMHgyMDAwMDAwMD47CisJCXJlZyA9IDwweGZlYzEwMDAwIDB4NDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDM5IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQljbG9ja3MgPSA8JnpiX2Nsaz47CisJCXBvd2VyLWRvbWFpbnMgPSA8JnBkX2E0cz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMvc2ltcGxlLXBtLWJ1cy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3NpbXBsZS1wbS1idXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwMzIyMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3NpbXBsZS1wbS1idXMudHh0CkBAIC0wLDAgKzEsNDQgQEAKK1NpbXBsZSBQb3dlci1NYW5hZ2VkIEJ1cworPT09PT09PT09PT09PT09PT09PT09PT09CisKK0EgU2ltcGxlIFBvd2VyLU1hbmFnZWQgQnVzIGlzIGEgdHJhbnNwYXJlbnQgYnVzIHRoYXQgZG9lc24ndCBuZWVkIGEgcmVhbAorZHJpdmVyLCBhcyBpdCdzIHR5cGljYWxseSBpbml0aWFsaXplZCBieSB0aGUgYm9vdCBsb2FkZXIuCisKK0hvd2V2ZXIsIGl0cyBidXMgY29udHJvbGxlciBpcyBwYXJ0IG9mIGEgUE0gZG9tYWluLCBvciB1bmRlciB0aGUgY29udHJvbCBvZiBhCitmdW5jdGlvbmFsIGNsb2NrLiAgSGVuY2UsIHRoZSBidXMgY29udHJvbGxlcidzIFBNIGRvbWFpbiBhbmQvb3IgY2xvY2sgbXVzdCBiZQorZW5hYmxlZCBmb3IgY2hpbGQgZGV2aWNlcyBjb25uZWN0ZWQgdG8gdGhlIGJ1cyAoZWl0aGVyIG9uLVNvQyBvciBleHRlcm5hbGx5KQordG8gZnVuY3Rpb24uCisKK1doaWxlICJzaW1wbGUtcG0tYnVzIiBmb2xsb3dzIHRoZSAic2ltcGxlLWJ1cyIgc2V0IG9mIHByb3BlcnRpZXMsIGFzIHNwZWNpZmllZAoraW4gZVBBUFIsIGl0IGlzIG5vdCBhbiBleHRlbnNpb24gb2YgInNpbXBsZS1idXMiLgorCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogTXVzdCBjb250YWluIGF0IGxlYXN0ICJzaW1wbGUtcG0tYnVzIi4KKwkJTXVzdCBub3QgY29udGFpbiAic2ltcGxlLWJ1cyIuCisJCUl0J3MgcmVjb21tZW5kZWQgdG8gbGV0IHRoaXMgYmUgcHJlY2VkZWQgYnkgb25lIG9yIG1vcmUKKwkJdmVuZG9yLXNwZWNpZmljIGNvbXBhdGlibGUgdmFsdWVzLgorICAtICNhZGRyZXNzLWNlbGxzLCAjc2l6ZS1jZWxscywgcmFuZ2VzOiBNdXN0IGRlc2NyaWJlIHRoZSBtYXBwaW5nIGJldHdlZW4KKwkJcGFyZW50IGFkZHJlc3MgYW5kIGNoaWxkIGFkZHJlc3Mgc3BhY2VzLgorCitPcHRpb25hbCBwbGF0Zm9ybS1zcGVjaWZpYyBwcm9wZXJ0aWVzIGZvciBjbG9jayBvciBQTSBkb21haW4gY29udHJvbCAoYXQgbGVhc3QKK29uZSBvZiB0aGVtIGlzIHJlcXVpcmVkKToKKyAgLSBjbG9ja3M6IE11c3QgY29udGFpbiBhIHJlZmVyZW5jZSB0byB0aGUgZnVuY3Rpb25hbCBjbG9jayhzKSwKKyAgLSBwb3dlci1kb21haW5zOiBNdXN0IGNvbnRhaW4gYSByZWZlcmVuY2UgdG8gdGhlIFBNIGRvbWFpbi4KK1BsZWFzZSByZWZlciB0byB0aGUgYmluZGluZyBkb2N1bWVudGF0aW9uIGZvciB0aGUgY2xvY2sgYW5kL29yIFBNIGRvbWFpbgorcHJvdmlkZXJzIGZvciBtb3JlIGRldGFpbHMuCisKKworRXhhbXBsZToKKworCWJzYzogYnVzQGZlYzEwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLGJzYy1zaDczYTAiLCAicmVuZXNhcyxic2MiLAorCQkJICAgICAic2ltcGxlLXBtLWJ1cyI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJcmFuZ2VzID0gPDAgMCAweDIwMDAwMDAwPjsKKwkJcmVnID0gPDB4ZmVjMTAwMDAgMHg0MDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMzkgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWNsb2NrcyA9IDwmemJfY2xrPjsKKwkJcG93ZXItZG9tYWlucyA9IDwmcGRfYTRzPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy9zdW54aS1yc2IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy9zdW54aS1yc2IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkZDI4MzQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3N1bnhpLXJzYi50eHQKQEAgLTAsMCArMSw0NyBAQAorQWxsd2lubmVyIFJlZHVjZWQgU2VyaWFsIEJ1cyAoUlNCKSBjb250cm9sbGVyCisKK1RoZSBSU0IgY29udHJvbGxlciBmb3VuZCBvbiBsYXRlciBBbGx3aW5uZXIgU29DcyBpcyBhbiBTTUJ1cyBsaWtlIDIgd2lyZQorc2VyaWFsIGJ1cyB3aXRoIDEgbWFzdGVyIGFuZCB1cCB0byAxNSBzbGF2ZXMuIEl0IGlzIHJlcHJlc2VudGVkIGJ5IGEgbm9kZQorZm9yIHRoZSBjb250cm9sbGVyIGl0c2VsZiwgYW5kIGNoaWxkIG5vZGVzIHJlcHJlc2VudGluZyB0aGUgc2xhdmUgZGV2aWNlcy4KKworUmVxdWlyZWQgcHJvcGVydGllcyA6CisKKyAtIHJlZyAgICAgICAgICAgICA6IE9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBjb250cm9sbGVyLgorIC0gY29tcGF0aWJsZSAgICAgIDogU2hhbGwgYmUgImFsbHdpbm5lcixzdW44aS1hMjMtcnNiIi4KKyAtIGludGVycnVwdHMgICAgICA6IFRoZSBpbnRlcnJ1cHQgbGluZSBhc3NvY2lhdGVkIHRvIHRoZSBSU0IgY29udHJvbGxlci4KKyAtIGNsb2NrcyAgICAgICAgICA6IFRoZSBnYXRlIGNsayBhc3NvY2lhdGVkIHRvIHRoZSBSU0IgY29udHJvbGxlci4KKyAtIHJlc2V0cyAgICAgICAgICA6IFRoZSByZXNldCBsaW5lIGFzc29jaWF0ZWQgdG8gdGhlIFJTQiBjb250cm9sbGVyLgorIC0gI2FkZHJlc3MtY2VsbHMgIDogc2hhbGwgYmUgMQorIC0gI3NpemUtY2VsbHMgICAgIDogc2hhbGwgYmUgMAorCitPcHRpb25hbCBwcm9wZXJ0aWVzIDoKKworIC0gY2xvY2stZnJlcXVlbmN5IDogRGVzaXJlZCBSU0IgYnVzIGNsb2NrIGZyZXF1ZW5jeSBpbiBIei4gTWF4aW11bSBpcyAyME1Iei4KKwkJICAgICBJZiBub3Qgc2V0IHRoaXMgZGVmYXVsdHMgdG8gM01Iei4KKworQ2hpbGQgbm9kZXM6CisKK0FuIFJTQiBjb250cm9sbGVyIG5vZGUgY2FuIGNvbnRhaW4gemVybyBvciBtb3JlIGNoaWxkIG5vZGVzIHJlcHJlc2VudGluZworc2xhdmUgZGV2aWNlcyBvbiB0aGUgYnVzLiAgQ2hpbGQgJ3JlZycgcHJvcGVydGllcyBzaG91bGQgY29udGFpbiB0aGUgc2xhdmUKK2RldmljZSdzIGhhcmR3YXJlIGFkZHJlc3MuIFRoZSBoYXJkd2FyZSBhZGRyZXNzIGlzIGhhcmR3aXJlZCBpbiB0aGUgZGV2aWNlLAord2hpY2ggY2FuIG5vcm1hbGx5IGJlIGZvdW5kIGluIHRoZSBkYXRhc2hlZXQuCisKK0V4YW1wbGU6CisKKwlyc2JAMDFmMDM0MDAgeworCQljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW44aS1hMjMtcnNiIjsKKwkJcmVnID0gPDB4MDFmMDM0MDAgMHg0MDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMzkgND47CisJCWNsb2NrcyA9IDwmYXBiMF9nYXRlcyAzPjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDMwMDAwMDA+OworCQlyZXNldHMgPSA8JmFwYjBfcnN0IDM+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJcG1pY0AzZTMgeworCQkJY29tcGF0aWJsZSA9ICIuLi4iOworCQkJcmVnID0gPDB4M2UzPjsKKworCQkJLyogLi4uICovCisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMvdGktZ3BtYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3RpLWdwbWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwNGJlOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3RpLWdwbWMudHh0CkBAIC0wLDAgKzEsMTMwIEBACitEZXZpY2UgdHJlZSBiaW5kaW5ncyBmb3IgT01BUCBnZW5lcmFsIHB1cnBvc2UgbWVtb3J5IGNvbnRyb2xsZXJzIChHUE1DKQorCitUaGUgYWN0dWFsIGRldmljZXMgYXJlIGluc3RhbnRpYXRlZCBmcm9tIHRoZSBjaGlsZCBub2RlcyBvZiBhIEdQTUMgbm9kZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworIC0gY29tcGF0aWJsZToJCVNob3VsZCBiZSBzZXQgdG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CisKKwkJCXRpLG9tYXAyNDIwLWdwbWMgKG9tYXAyNDIwKQorCQkJdGksb21hcDI0MzAtZ3BtYyAob21hcDI0MzApCisJCQl0aSxvbWFwMzQzMC1ncG1jIChvbWFwMzQzMCAmIG9tYXAzNjMwKQorCQkJdGksb21hcDQ0MzAtZ3BtYyAob21hcDQ0MzAgJiBvbWFwNDQ2MCAmIG9tYXA1NDN4KQorCQkJdGksYW0zMzUyLWdwbWMgICAoYW0zMzV4IGRldmljZXMpCisKKyAtIHJlZzoJCQlBIHJlc291cmNlIHNwZWNpZmllciBmb3IgdGhlIHJlZ2lzdGVyIHNwYWNlCisJCQkoc2VlIHRoZSBleGFtcGxlIGJlbG93KQorIC0gdGksaHdtb2RzOgkJU2hvdWxkIGJlIHNldCB0byAidGksZ3BtYyIgdW50aWwgdGhlIERUIHRyYW5zaXRpb24gaXMKKwkJCWNvbXBsZXRlZC4KKyAtICNhZGRyZXNzLWNlbGxzOglNdXN0IGJlIHNldCB0byAyIHRvIGFsbG93IG1lbW9yeSBhZGRyZXNzIHRyYW5zbGF0aW9uCisgLSAjc2l6ZS1jZWxsczoJCU11c3QgYmUgc2V0IHRvIDEgdG8gYWxsb3cgQ1MgYWRkcmVzcyBwYXNzaW5nCisgLSBncG1jLG51bS1jczoJCVRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGlwLXNlbGVjdCBsaW5lcyB0aGF0IGNvbnRyb2xsZXIKKwkJCWNhbiBzdXBwb3J0LgorIC0gZ3BtYyxudW0td2FpdHBpbnM6CVRoZSBtYXhpbXVtIG51bWJlciBvZiB3YWl0IHBpbnMgdGhhdCBjb250cm9sbGVyIGNhbgorCQkJc3VwcG9ydC4KKyAtIHJhbmdlczoJCU11c3QgYmUgc2V0IHVwIHRvIHJlZmxlY3QgdGhlIG1lbW9yeSBsYXlvdXQgd2l0aCBmb3VyCisJCQlpbnRlZ2VyIHZhbHVlcyBmb3IgZWFjaCBjaGlwLXNlbGVjdCBsaW5lIGluIHVzZToKKworCQkJICAgPGNzLW51bWJlcj4gMCA8cGh5c2ljYWwgYWRkcmVzcyBvZiBtYXBwaW5nPiA8c2l6ZT4KKworCQkJQ3VycmVudGx5LCBjYWxjdWxhdGVkIHZhbHVlcyBkZXJpdmVkIGZyb20gdGhlIGNvbnRlbnRzCisJCQlvZiB0aGUgcGVyLUNTIHJlZ2lzdGVyIEdQTUNfQ09ORklHNyAoYXMgc2V0IHVwIGJ5IHRoZQorCQkJYm9vdGxvYWRlcikgYXJlIHVzZWQgZm9yIHRoZSBwaHlzaWNhbCBhZGRyZXNzIGRlY29kaW5nLgorCQkJQXMgdGhpcyB3aWxsIGNoYW5nZSBpbiB0aGUgZnV0dXJlLCBmaWxsaW5nIGNvcnJlY3QKKwkJCXZhbHVlcyBoZXJlIGlzIGEgcmVxdWlyZW1lbnQuCisKK1RpbWluZyBwcm9wZXJ0aWVzIGZvciBjaGlsZCBub2Rlcy4gQWxsIGFyZSBvcHRpb25hbCBhbmQgZGVmYXVsdCB0byAwLgorCisgLSBncG1jLHN5bmMtY2xrLXBzOglNaW5pbXVtIGNsb2NrIHBlcmlvZCBmb3Igc3luY2hyb25vdXMgbW9kZSwgaW4gcGljb3NlY29uZHMKKworIENoaXAtc2VsZWN0IHNpZ25hbCB0aW1pbmdzIChpbiBuYW5vc2Vjb25kcykgY29ycmVzcG9uZGluZyB0byBHUE1DX0NPTkZJRzI6CisgLSBncG1jLGNzLW9uLW5zOglBc3NlcnRpb24gdGltZQorIC0gZ3BtYyxjcy1yZC1vZmYtbnM6CVJlYWQgZGVhc3NlcnRpb24gdGltZQorIC0gZ3BtYyxjcy13ci1vZmYtbnM6CVdyaXRlIGRlYXNzZXJ0aW9uIHRpbWUKKworIEFEViBzaWduYWwgdGltaW5ncyAoaW4gbmFub3NlY29uZHMpIGNvcnJlc3BvbmRpbmcgdG8gR1BNQ19DT05GSUczOgorIC0gZ3BtYyxhZHYtb24tbnM6CUFzc2VydGlvbiB0aW1lCisgLSBncG1jLGFkdi1yZC1vZmYtbnM6CVJlYWQgZGVhc3NlcnRpb24gdGltZQorIC0gZ3BtYyxhZHYtd3Itb2ZmLW5zOglXcml0ZSBkZWFzc2VydGlvbiB0aW1lCisKKyBXRSBzaWduYWxzIHRpbWluZ3MgKGluIG5hbm9zZWNvbmRzKSBjb3JyZXNwb25kaW5nIHRvIEdQTUNfQ09ORklHNDoKKyAtIGdwbWMsd2Utb24tbnMJQXNzZXJ0aW9uIHRpbWUKKyAtIGdwbWMsd2Utb2ZmLW5zOglEZWFzc2VydGlvbiB0aW1lCisKKyBPRSBzaWduYWxzIHRpbWluZ3MgKGluIG5hbm9zZWNvbmRzKSBjb3JyZXNwb25kaW5nIHRvIEdQTUNfQ09ORklHNDoKKyAtIGdwbWMsb2Utb24tbnM6CUFzc2VydGlvbiB0aW1lCisgLSBncG1jLG9lLW9mZi1uczoJRGVhc3NlcnRpb24gdGltZQorCisgQWNjZXNzIHRpbWUgYW5kIGN5Y2xlIHRpbWUgdGltaW5ncyAoaW4gbmFub3NlY29uZHMpIGNvcnJlc3BvbmRpbmcgdG8KKyBHUE1DX0NPTkZJRzU6CisgLSBncG1jLHBhZ2UtYnVyc3QtYWNjZXNzLW5zOiAJTXVsdGlwbGUgYWNjZXNzIHdvcmQgZGVsYXkKKyAtIGdwbWMsYWNjZXNzLW5zOgkJU3RhcnQtY3ljbGUgdG8gZmlyc3QgZGF0YSB2YWxpZCBkZWxheQorIC0gZ3BtYyxyZC1jeWNsZS1uczoJCVRvdGFsIHJlYWQgY3ljbGUgdGltZQorIC0gZ3BtYyx3ci1jeWNsZS1uczoJCVRvdGFsIHdyaXRlIGN5Y2xlIHRpbWUKKyAtIGdwbWMsYnVzLXR1cm5hcm91bmQtbnM6CVR1cm4tYXJvdW5kIHRpbWUgYmV0d2VlbiBzdWNjZXNzaXZlIGFjY2Vzc2VzCisgLSBncG1jLGN5Y2xlMmN5Y2xlLWRlbGF5LW5zOglEZWxheSBiZXR3ZWVuIGNoaXAtc2VsZWN0IHB1bHNlcworIC0gZ3BtYyxjbGstYWN0aXZhdGlvbi1uczogCUdQTUMgY2xvY2sgYWN0aXZhdGlvbiB0aW1lCisgLSBncG1jLHdhaXQtbW9uaXRvcmluZy1uczoJU3RhcnQgb2Ygd2FpdCBtb25pdG9yaW5nIHdpdGggcmVnYXJkIHRvIHZhbGlkCisJCQkJZGF0YQorCitCb29sZWFuIHRpbWluZyBwYXJhbWV0ZXJzLiBJZiBwcm9wZXJ0eSBpcyBwcmVzZW50IHBhcmFtZXRlciBlbmFibGVkIGFuZAorZGlzYWJsZWQgaWYgb21pdHRlZDoKKyAtIGdwbWMsYWR2LWV4dHJhLWRlbGF5OglBRFYgc2lnbmFsIGlzIGRlbGF5ZWQgYnkgaGFsZiBHUE1DIGNsb2NrCisgLSBncG1jLGNzLWV4dHJhLWRlbGF5OgkJQ1Mgc2lnbmFsIGlzIGRlbGF5ZWQgYnkgaGFsZiBHUE1DIGNsb2NrCisgLSBncG1jLGN5Y2xlMmN5Y2xlLWRpZmZjc2VuOglBZGQgImN5Y2xlMmN5Y2xlLWRlbGF5IiBiZXR3ZWVuIHN1Y2Nlc3NpdmUKKwkJCQlhY2Nlc3NlcyB0byBhIGRpZmZlcmVudCBDUworIC0gZ3BtYyxjeWNsZTJjeWNsZS1zYW1lY3NlbjoJQWRkICJjeWNsZTJjeWNsZS1kZWxheSIgYmV0d2VlbiBzdWNjZXNzaXZlCisJCQkJYWNjZXNzZXMgdG8gdGhlIHNhbWUgQ1MKKyAtIGdwbWMsb2UtZXh0cmEtZGVsYXk6CQlPRSBzaWduYWwgaXMgZGVsYXllZCBieSBoYWxmIEdQTUMgY2xvY2sKKyAtIGdwbWMsd2UtZXh0cmEtZGVsYXk6CQlXRSBzaWduYWwgaXMgZGVsYXllZCBieSBoYWxmIEdQTUMgY2xvY2sKKyAtIGdwbWMsdGltZS1wYXJhLWdyYW51bGFyaXR5OglNdWx0aXBseSBhbGwgYWNjZXNzIHRpbWVzIGJ5IDIKKworVGhlIGZvbGxvd2luZyBhcmUgb25seSBhcHBsaWNhYmxlIHRvIE9NQVAzKyBhbmQgQU0zMzV4OgorIC0gZ3BtYyx3ci1hY2Nlc3MtbnM6CQlJbiBzeW5jaHJvbm91cyB3cml0ZSBtb2RlLCBmb3Igc2luZ2xlIG9yCisJCQkJYnVyc3QgYWNjZXNzZXMsIGRlZmluZXMgdGhlIG51bWJlciBvZgorCQkJCUdQTUNfRkNMSyBjeWNsZXMgZnJvbSBzdGFydCBhY2Nlc3MgdGltZQorCQkJCXRvIHRoZSBHUE1DX0NMSyByaXNpbmcgZWRnZSB1c2VkIGJ5IHRoZQorCQkJCW1lbW9yeSBkZXZpY2UgZm9yIHRoZSBmaXJzdCBkYXRhIGNhcHR1cmUuCisgLSBncG1jLHdyLWRhdGEtbXV4LWJ1cy1uczoJSW4gYWRkcmVzcy1kYXRhIG11bHRpcGxleCBtb2RlLCBzcGVjaWZpZXMKKwkJCQl0aGUgdGltZSB3aGVuIHRoZSBmaXJzdCBkYXRhIGlzIGRyaXZlbiBvbgorCQkJCXRoZSBhZGRyZXNzLWRhdGEgYnVzLgorCitHUE1DIGNoaXAtc2VsZWN0IHNldHRpbmdzIHByb3BlcnRpZXMgZm9yIGNoaWxkIG5vZGVzLiBBbGwgYXJlIG9wdGlvbmFsLgorCistIGdwbWMsYnVyc3QtbGVuZ3RoCVBhZ2UvYnVyc3QgbGVuZ3RoLiBNdXN0IGJlIDQsIDggb3IgMTYuCistIGdwbWMsYnVyc3Qtd3JhcAlFbmFibGVzIHdyYXAgYnVyc3RpbmcKKy0gZ3BtYyxidXJzdC1yZWFkCUVuYWJsZXMgcmVhZCBwYWdlL2J1cnN0IG1vZGUKKy0gZ3BtYyxidXJzdC13cml0ZQlFbmFibGVzIHdyaXRlIHBhZ2UvYnVyc3QgbW9kZQorLSBncG1jLGRldmljZS13aWR0aAlUb3RhbCB3aWR0aCBvZiBkZXZpY2UocykgY29ubmVjdGVkIHRvIGEgR1BNQworCQkJY2hpcC1zZWxlY3QgaW4gYnl0ZXMuIFRoZSBHUE1DIHN1cHBvcnRzIDgtYml0CisJCQlhbmQgMTYtYml0IGRldmljZXMgYW5kIHNvIHRoaXMgcHJvcGVydHkgbXVzdCBiZQorCQkJMSBvciAyLgorLSBncG1jLG11eC1hZGQtZGF0YQlBZGRyZXNzIGFuZCBkYXRhIG11bHRpcGxleGluZyBjb25maWd1cmF0aW9uLgorCQkJVmFsaWQgdmFsdWVzIGFyZSAxIGZvciBhZGRyZXNzLWFkZHJlc3MtZGF0YQorCQkJbXVsdGlwbGV4aW5nIG1vZGUgYW5kIDIgZm9yIGFkZHJlc3MtZGF0YQorCQkJbXVsdGlwbGV4aW5nIG1vZGUuCistIGdwbWMsc3luYy1yZWFkCUVuYWJsZXMgc3luY2hyb25vdXMgcmVhZC4gRGVmYXVsdHMgdG8gYXN5bmNocm9ub3VzCisJCQlpcyB0aGlzIGlzIG5vdCBzZXQuCistIGdwbWMsc3luYy13cml0ZQlFbmFibGVzIHN5bmNocm9ub3VzIHdyaXRlcy4gRGVmYXVsdHMgdG8gYXN5bmNocm9ub3VzCisJCQlpcyB0aGlzIGlzIG5vdCBzZXQuCistIGdwbWMsd2FpdC1waW4JCVdhaXQtcGluIHVzZWQgYnkgY2xpZW50LiBNdXN0IGJlIGxlc3MgdGhhbgorCQkJImdwbWMsbnVtLXdhaXRwaW5zIi4KKy0gZ3BtYyx3YWl0LW9uLXJlYWQJRW5hYmxlcyB3YWl0IG1vbml0b3Jpbmcgb24gcmVhZHMuCistIGdwbWMsd2FpdC1vbi13cml0ZQlFbmFibGVzIHdhaXQgbW9uaXRvcmluZyBvbiB3cml0ZXMuCisKK0V4YW1wbGUgZm9yIGFuIEFNMzN4eCBib2FyZDoKKworCWdwbWM6IGdwbWNANTAwMDAwMDAgeworCQljb21wYXRpYmxlID0gInRpLGFtMzM1Mi1ncG1jIjsKKwkJdGksaHdtb2RzID0gImdwbWMiOworCQlyZWcgPSA8MHg1MDAwMDAwMCAweDIwMDA+OworCQlpbnRlcnJ1cHRzID0gPDEwMD47CisKKwkJZ3BtYyxudW0tY3MgPSA8OD47CisJCWdwbWMsbnVtLXdhaXRwaW5zID0gPDI+OworCQkjYWRkcmVzcy1jZWxscyA9IDwyPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCXJhbmdlcyA9IDwwIDAgMHgwODAwMDAwMCAweDEwMDAwMDAwPjsgLyogQ1MwIEBhZGRyIDB4ODAwMDAwMCwgc2l6ZSAweDEwMDAwMDAwICovCisKKwkJLyogY2hpbGQgbm9kZXMgZ28gaGVyZSAqLworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYzZ4L2Nsb2Nrcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYzZ4L2Nsb2Nrcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA0ZjVmZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jNngvY2xvY2tzLnR4dApAQCAtMCwwICsxLDQwIEBACitDNlggUExMIENsb2NrIENvbnRyb2xsZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgaXMgYSBmaXJzdC1jdXQgc3VwcG9ydCBmb3IgdGhlIFNvQyBjbG9jayBjb250cm9sbGVycy4gVGhpcyBpcyBzdGlsbAordW5kZXIgZGV2ZWxvcG1lbnQgYW5kIHdpbGwgcHJvYmFibHkgY2hhbmdlIGFzIHRoZSBjb21tb24gZGV2aWNlIHRyZWUKK2Nsb2NrIHN1cHBvcnQgaXMgYWRkZWQgdG8gdGhlIGtlcm5lbC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiAidGksYzY0eCtwbGwiCisgICAgTWF5IGFsc28gaGF2ZSBTb0Mtc3BlY2lmaWMgdmFsdWUgdG8gc3VwcG9ydCBTb0Mtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24KKyAgICBpbiB0aGUgZHJpdmVyLiBPbmUgb2Y6CisgICAgICAgICJ0aSxjNjQ1NS1wbGwiCisgICAgICAgICJ0aSxjNjQ1Ny1wbGwiCisgICAgICAgICJ0aSxjNjQ3Mi1wbGwiCisgICAgICAgICJ0aSxjNjQ3NC1wbGwiCisKKy0gcmVnOiBiYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgcmVnaXN0ZXIgYXJlYQorLSBjbG9jay1mcmVxdWVuY3k6IGlucHV0IGNsb2NrIGZyZXF1ZW5jeSBpbiBoegorCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gdGksYzY0eCtwbGwtYnlwYXNzLWRlbGF5OiBDUFUgY3ljbGVzIHRvIGRlbGF5IHdoZW4gZW50ZXJpbmcgYnlwYXNzIG1vZGUKKworLSB0aSxjNjR4K3BsbC1yZXNldC1kZWxheTogIENQVSBjeWNsZXMgdG8gZGVsYXkgYWZ0ZXIgUExMIHJlc2V0CisKKy0gdGksYzY0eCtwbGwtbG9jay1kZWxheTogICBDUFUgY3ljbGVzIHRvIGRlbGF5IGFmdGVyIFBMTCBmcmVxdWVuY3kgY2hhbmdlCisKK0V4YW1wbGU6CisKKwljbG9jay1jb250cm9sbGVyQDI5YTAwMDAgeworCQljb21wYXRpYmxlID0gInRpLGM2NDcyLXBsbCIsICJ0aSxjNjR4K3BsbCI7CisJCXJlZyA9IDwweDAyOWEwMDAwIDB4MjAwPjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDI1MDAwMDAwPjsKKworCQl0aSxjNjR4K3BsbC1ieXBhc3MtZGVsYXkgPSA8MjAwPjsKKwkJdGksYzY0eCtwbGwtcmVzZXQtZGVsYXkgPSA8MTIwMDA+OworCQl0aSxjNjR4K3BsbC1sb2NrLWRlbGF5ID0gPDgwMDAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2M2eC9kc2NyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jNngvZHNjci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI2NzIyMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jNngvZHNjci50eHQKQEAgLTAsMCArMSwxMjcgQEAKK0RldmljZSBTdGF0ZSBDb25maWd1cmF0aW9uIFJlZ2lzdGVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RJIEM2WCBTb0NzIGNvbnRhaW4gYSByZWdpb24gb2YgbWlzY2VsbGFuZW91cyByZWdpc3RlcnMgd2hpY2ggcHJvdmlkZSB2YXJpb3VzCitmdW5jdGlvbiBmb3IgU29DIGNvbnRyb2wgb3Igc3RhdHVzLiBEZXRhaWxzIHZhcnkgY29uc2lkZXJhYmx5IGFtb25nIGZyb20gU29DCit0byBTb0Mgd2l0aCBubyB0d28gYmVpbmcgYWxpa2UuCisKK0luIGdlbmVyYWwsIHRoZSBEZXZpY2UgU3RhdGUgQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMgKERTQ1IpIHdpbGwgcHJvdmlkZSBvbmUgb3IKK21vcmUgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgb2Z0ZW4gcHJvdGVjdGVkIGJ5IGEgbG9jayByZWdpc3RlciB3aGVyZSBvbmUgb3IKK21vcmUga2V5IHZhbHVlcyBtdXN0IGJlIHdyaXR0ZW4gdG8gYSBsb2NrIHJlZ2lzdGVyIGluIG9yZGVyIHRvIHVubG9jayB0aGUKK2NvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgZm9yIHdyaXRlcy4gVGhlc2UgY29uZmlndXJhdGlvbiByZWdpc3RlciBtYXkgYmUgdXNlZCB0bworZW5hYmxlIChhbmQgZGlzYWJsZSBpbiBzb21lIGNhc2VzKSBTb0MgcGluIGRyaXZlcnMsIHNlbGVjdCBwZXJpcGhlcmFsIGNsb2NrCitzb3VyY2VzIChpbnRlcm5hbCBvciBwaW4pLCBldGMuIEluIHNvbWUgY2FzZXMsIGEgY29uZmlndXJhdGlvbiByZWdpc3RlciBpcword3JpdGUgb25jZSBvciB0aGUgaW5kaXZpZHVhbCBiaXRzIGFyZSB3cml0ZSBvbmNlLiBJbiBhZGRpdGlvbiB0byBkZXZpY2UgY29uZmlnLAordGhlIERTQ1IgYmxvY2sgbWF5IHByb3ZpZGUgcmVnaXN0ZXJzIHdoaWNoIGFyZSB1c2VkIHRvIHJlc2V0IHBlcmlwaGVyYWxzLAorcHJvdmlkZSBkZXZpY2UgSUQgaW5mb3JtYXRpb24sIHByb3ZpZGUgZXRoZXJuZXQgTUFDIGFkZHJlc3NlcywgYXMgd2VsbCBhcyBvdGhlcgorbWlzY2VsbGFuZW91cyBmdW5jdGlvbnMuCisKK0ZvciBkZXZpY2Ugc3RhdGUgY29udHJvbCAoZW5hYmxlL2Rpc2FibGUpLCBlYWNoIGRldmljZSBjb250cm9sIGlzIGFzc2lnbmVkIGFuCitpZCB3aGljaCBpcyB1c2VkIGJ5IGluZGl2aWR1YWwgZGV2aWNlIGRyaXZlcnMgdG8gY29udHJvbCB0aGUgc3RhdGUgYXMgbmVlZGVkLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IG11c3QgYmUgInRpLGM2NHgrZHNjciIKKy0gcmVnOiByZWdpc3RlciBhcmVhIGJhc2UgYW5kIHNpemUKKworT3B0aW9uYWwgcHJvcGVydGllczoKKworICBOT1RFOiBUaGVzZSBhcmUgb3B0aW9uYWwgaW4gdGhhdCBub3QgYWxsIFNvQ3Mgd2lsbCBoYXZlIGFsbCBwcm9wZXJ0aWVzLiBGb3IKKyAgICAgICAgU29DcyB3aGljaCBkbyBzdXBwb3J0IGEgZ2l2ZW4gcHJvcGVydHksIGxlYXZpbmcgdGhlIHByb3BlcnR5IG91dCBvZiB0aGUKKyAgICAgICAgZGV2aWNlIHRyZWUgd2lsbCByZXN1bHQgaW4gcmVkdWNlZCBmdW5jdGlvbmFsaXR5IG9yIHBvc3NpYmx5IGRyaXZlcgorICAgICAgICBmYWlsdXJlLgorCistIHRpLGRzY3ItZGV2c3RhdAorICAgIG9mZnNldCBvZiB0aGUgZGV2c3RhdCByZWdpc3RlcgorCistIHRpLGRzY3Itc2lsaWNvbi1yZXYKKyAgICBvZmZzZXQsIHN0YXJ0IGJpdCwgYW5kIGJpdHNpemUgb2Ygc2lsaWNvbiByZXZpc2lvbiBmaWVsZAorCistIHRpLGRzY3Itcm1paS1yZXNldHMKKyAgICBvZmZzZXQgYW5kIGJpdG1hc2sgb2YgUk1JSSByZXNldCBmaWVsZC4gTWF5IGhhdmUgbXVsdGlwbGUgdHVwbGVzIGlmIG1vcmUKKyAgICB0aGFuIG9uZSBldGhlcm5ldCBwb3J0IGlzIGF2YWlsYWJsZS4KKworLSB0aSxkc2NyLWxvY2tlZC1yZWdzCisgICAgcG9zc2libHkgbXVsdGlwbGUgdHVwbGVzIGRlc2NyaWJpbmcgcmVnaXN0ZXJzIHdoaWNoIGFyZSB3cml0ZSBwcm90ZWN0ZWQgYnkKKyAgICBhIGxvY2sgcmVnaXN0ZXIuIEVhY2ggdHVwbGUgY29uc2lzdHMgb2YgdGhlIHJlZ2lzdGVyIG9mZnNldCwgbG9jayByZWdpc3RlcgorICAgIG9mZnNzZXQsIGFuZCB0aGUga2V5IHZhbHVlIHVzZWQgdG8gdW5sb2NrIHRoZSByZWdpc3Rlci4KKworLSB0aSxkc2NyLWtpY2stcmVncworICAgIG9mZnNldCBhbmQga2V5IHZhbHVlcyBvZiB0d28gImtpY2siIHJlZ2lzdGVycyB1c2VkIHRvIHdyaXRlIHByb3RlY3Qgb3RoZXIKKyAgICByZWdpc3RlcnMgaW4gRFNDUi4gT24gU29DcyB1c2luZyBraWNrIHJlZ2lzdGVycywgdGhlIGZpcnN0IGtleSBtdXN0IGJlCisgICAgd3JpdHRlbiB0byB0aGUgZmlyc3Qga2ljayByZWdpc3RlciBhbmQgdGhlIHNlY29uZCBrZXkgbXVzdCBiZSB3cml0dGVuIHRvCisgICAgdGhlIHNlY29uZCByZWdpc3RlciBiZWZvcmUgb3RoZXIgcmVnaXN0ZXJzIGluIHRoZSBhcmVhIGFyZSB3cml0ZS1lbmFibGVkLgorCistIHRpLGRzY3ItbWFjLWZ1c2UtcmVncworICAgIE1BQyBhZGRyZXNzZXMgYXJlIGNvbnRhaW5lZCBpbiB0d28gcmVnaXN0ZXJzLiBFYWNoIGVsZW1lbnQgb2YgYSBNQUMgYWRkcmVzcworICAgIGlzIGNvbnRhaW5lZCBpbiBhIHNpbmdsZSBieXRlLiBUaGlzIHByb3BlcnR5IGhhcyB0d28gdHVwbGVzLiBFYWNoIHR1cGxlIGhhcworICAgIGEgcmVnaXN0ZXIgb2Zmc2V0IGFuZCBmb3VyIGNlbGxzIHJlcHJlc2VudGluZyBieXRlcyBpbiB0aGUgcmVnaXN0ZXIgZnJvbQorICAgIG1vc3Qgc2lnbmlmaWNhbnQgdG8gbGVhc3QuIFRoZSB2YWx1ZSBvZiB0aGVzZSBmb3VyIGNlbGxzIGlzIHRoZSBNQUMgYnl0ZQorICAgIGluZGV4ICgxLTYpIG9mIHRoZSBieXRlIHdpdGhpbiB0aGUgcmVnaXN0ZXIuIEEgdmFsdWUgb2YgMCBtZWFucyB0aGUgYnl0ZQorICAgIGlzIHVudXNlZCBpbiB0aGUgTUFDIGFkZHJlc3MuCisKKy0gdGksZHNjci1kZXZzdGF0ZS1jdGwtcmVncworICAgIFRoaXMgcHJvcGVydHkgZGVzY3JpYmVzIHRoZSBiaXRmaWVsZHMgdXNlZCB0byBjb250cm9sIHRoZSBzdGF0ZSBvZiBkZXZpY2VzLgorICAgIEVhY2ggdHVwbGUgZGVzY3JpYmVzIGEgcmFuZ2Ugb2YgaWRlbnRpY2FsIGJpdGZpZWxkcyB1c2VkIHRvIGNvbnRyb2wgb25lIG9yCisgICAgbW9yZSBkZXZpY2VzIChvbmUgYml0ZmllbGQgcGVyIGRldmljZSkuIFRoZSBsYXlvdXQgb2YgZWFjaCB0dXBsZSBpczoKKworICAgICAgICBzdGFydF9pZCBudW1faWRzIHJlZyBlbmFibGUgZGlzYWJsZSBzdGFydF9iaXQgbmJpdHMKKworICAgIFdoZXJlOgorICAgICAgICBzdGFydF9pZCBpcyBkZXZpY2UgaWQgZm9yIHRoZSBmaXJzdCBkZXZpY2UgY29udHJvbCBpbiB0aGUgcmFuZ2UKKyAgICAgICAgbnVtX2lkcyBpcyB0aGUgbnVtYmVyIG9mIGRldmljZSBjb250cm9scyBpbiB0aGUgcmFuZ2UKKyAgICAgICAgcmVnIGlzIHRoZSBvZmZzZXQgb2YgdGhlIHJlZ2lzdGVyIGhvbGRpbmcgdGhlIGNvbnRyb2wgYml0cworICAgICAgICBlbmFibGUgaXMgdGhlIHZhbHVlIHRvIGVuYWJsZSBhIGRldmljZQorICAgICAgICBkaXNhYmxlIGlzIHRoZSB2YWx1ZSB0byBkaXNhYmxlIGEgZGV2aWNlICgweGZmZmZmZmZmIGlmIGNhbm5vdCBkaXNhYmxlKQorICAgICAgICBzdGFydF9iaXQgaXMgdGhlIGJpdCBudW1iZXIgb2YgdGhlIGZpcnN0IGJpdCBpbiB0aGUgcmFuZ2UKKyAgICAgICAgbmJpdHMgaXMgdGhlIG51bWJlciBvZiBiaXRzIHBlciBkZXZpY2UgY29udHJvbAorCistIHRpLGRzY3ItZGV2c3RhdGUtc3RhdC1yZWdzCisgICAgVGhpcyBwcm9wZXJ0eSBkZXNjcmliZXMgdGhlIGJpdGZpZWxkcyB1c2VkIHRvIHByb3ZpZGUgZGV2aWNlIHN0YXRlIHN0YXR1cworICAgIGZvciBkZXZpY2Ugc3RhdGVzIGNvbnRyb2xsZWQgYnkgdGhlIERTQ1IuIEVhY2ggdHVwbGUgZGVzY3JpYmVzIGEgcmFuZ2Ugb2YKKyAgICBpZGVudGljYWwgYml0ZmllbGRzIHVzZWQgdG8gcHJvdmlkZSBzdGF0dXMgZm9yIG9uZSBvciBtb3JlIGRldmljZXMgKG9uZQorICAgIGJpdGZpZWxkIHBlciBkZXZpY2UpLiBUaGUgbGF5b3V0IG9mIGVhY2ggdHVwbGUgaXM6CisKKyAgICAgICAgc3RhcnRfaWQgbnVtX2lkcyByZWcgZW5hYmxlIGRpc2FibGUgc3RhcnRfYml0IG5iaXRzCisKKyAgICBXaGVyZToKKyAgICAgICAgc3RhcnRfaWQgaXMgZGV2aWNlIGlkIGZvciB0aGUgZmlyc3QgZGV2aWNlIHN0YXR1cyBpbiB0aGUgcmFuZ2UKKyAgICAgICAgbnVtX2lkcyBpcyB0aGUgbnVtYmVyIG9mIGRldmljZXMgY292ZXJlZCBieSB0aGUgcmFuZ2UKKyAgICAgICAgcmVnIGlzIHRoZSBvZmZzZXQgb2YgdGhlIHJlZ2lzdGVyIGhvbGRpbmcgdGhlIHN0YXR1cyBiaXRzCisgICAgICAgIGVuYWJsZSBpcyB0aGUgdmFsdWUgaW5kaWNhdGluZyBkZXZpY2UgaXMgZW5hYmxlZAorICAgICAgICBkaXNhYmxlIGlzIHRoZSB2YWx1ZSBpbmRpY2F0aW5nIGRldmljZSBpcyBkaXNhYmxlZAorICAgICAgICBzdGFydF9iaXQgaXMgdGhlIGJpdCBudW1iZXIgb2YgdGhlIGZpcnN0IGJpdCBpbiB0aGUgcmFuZ2UKKyAgICAgICAgbmJpdHMgaXMgdGhlIG51bWJlciBvZiBiaXRzIHBlciBkZXZpY2Ugc3RhdHVzCisKKy0gdGksZHNjci1wcml2cGVybQorICAgIE9mZnNldCBhbmQgZGVmYXVsdCB2YWx1ZSBmb3IgcmVnaXN0ZXIgdXNlZCB0byBzZXQgYWNjZXNzIHByaXZpbGVnZSBmb3IKKyAgICBzb21lIFNvQyBkZXZpY2VzLgorCisKK0V4YW1wbGU6CisKKwlkZXZpY2Utc3RhdGUtY29uZmlnLXJlZ3NAMmE4MDAwMCB7CisJCWNvbXBhdGlibGUgPSAidGksYzY0eCtkc2NyIjsKKwkJcmVnID0gPDB4MDJhODAwMDAgMHg0MTAwMD47CisKKwkJdGksZHNjci1kZXZzdGF0ID0gPDA+OworCQl0aSxkc2NyLXNpbGljb24tcmV2ID0gPDggMjggMHhmPjsKKwkJdGksZHNjci1ybWlpLXJlc2V0cyA9IDwweDQwMDIwIDB4MDAwNDAwMDA+OworCisJCXRpLGRzY3ItbG9ja2VkLXJlZ3MgPSA8MHg0MDAwOCAweDQwMDA0IDB4MGYwYTBiMDA+OworCQl0aSxkc2NyLWRldnN0YXRlLWN0bC1yZWdzID0KKwkJCSA8MCAxMiAweDQwMDA4IDEgMCAgMCAgMgorCQkJICAxMiAxIDB4NDAwMDggMyAwIDMwICAyCisJCQkgIDEzIDIgMHg0MDAyYyAxIDB4ZmZmZmZmZmYgMCAxPjsKKwkJdGksZHNjci1kZXZzdGF0ZS1zdGF0LXJlZ3MgPQorCQkJPDAgMTAgMHg0MDAxNCAxIDAgIDAgIDMKKwkJCSAxMCAyIDB4NDAwMTggMSAwICAwICAzPjsKKworCQl0aSxkc2NyLW1hYy1mdXNlLXJlZ3MgPSA8MHg3MDAgMSAyIDMgNAorCQkJCQkgMHg3MDQgNSA2IDAgMD47CisKKwkJdGksZHNjci1wcml2cGVybSA9IDwweDQxYyAweGFhYWFhYWFhPjsKKworCQl0aSxkc2NyLWtpY2stcmVncyA9IDwweDM4IDB4ODNFNzBCMTMKKwkJCQkgICAgIDB4M2MgMHg5NUE0RjFFMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jNngvZW1pZmEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2M2eC9lbWlmYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZmNmU5YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jNngvZW1pZmEudHh0CkBAIC0wLDAgKzEsNjIgQEAKK0V4dGVybmFsIE1lbW9yeSBJbnRlcmZhY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGVtaWZhIG5vZGUgZGVzY3JpYmVzIGEgc2ltcGxlIGV4dGVybmFsIGJ1cyBjb250cm9sbGVyIGZvdW5kIG9uIHNvbWUgQzZYCitTb0NzLiBUaGlzIGludGVyZmFjZSBwcm92aWRlcyBleHRlcm5hbCBidXNzZXMgd2l0aCBhIG51bWJlciBvZiBjaGlwIHNlbGVjdHMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogbXVzdCBiZSAidGksYzY0eCtlbWlmYSIsICJzaW1wbGUtYnVzIgorLSByZWc6IHJlZ2lzdGVyIGFyZWEgYmFzZSBhbmQgc2l6ZQorLSAjYWRkcmVzcy1jZWxsczogbXVzdCBiZSAyIChjaGlwLXNlbGVjdCArIG9mZnNldCkKKy0gI3NpemUtY2VsbHM6IG11c3QgYmUgMQorLSByYW5nZXM6IG1hcHBpbmcgZnJvbSBFTUlGQSBzcGFjZSB0byBwYXJlbnQgc3BhY2UKKworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIHRpLGRzY3ItZGV2LWVuYWJsZTogRGV2aWNlIElEIGlmIEVNSUYgaXMgZW5hYmxlZC9kaXNhYmxlZCBmcm9tIERTQ1IKKworLSB0aSxlbWlmYS1idXJzdC1wcmlvcml0eToKKyAgICAgIE51bWJlciBvZiBtZW1vcnkgdHJhbnNmZXJzIGFmdGVyIHdoaWNoIHRoZSBFTUlGIHdpbGwgZWxldmF0ZSB0aGUgcHJpb3JpdHkKKyAgICAgIG9mIHRoZSBvbGRlc3QgY29tbWFuZCBpbiB0aGUgY29tbWFuZCBGSUZPLiBTZXR0aW5nIHRoaXMgZmllbGQgdG8gMjU1CisgICAgICBkaXNhYmxlcyB0aGlzIGZlYXR1cmUsIHRoZXJlYnkgYWxsb3dpbmcgb2xkIGNvbW1hbmRzIHRvIHN0YXkgaW4gdGhlIEZJRk8KKyAgICAgIGluZGVmaW5pdGVseS4KKworLSB0aSxlbWlmYS1jZS1jb25maWc6CisgICAgICBDb25maWd1cmF0aW9uIHZhbHVlcyBmb3IgZWFjaCBvZiB0aGUgc3VwcG9ydGVkIGNoaXAgc2VsZWN0cy4KKworRXhhbXBsZToKKworCWVtaWZhQDcwMDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSxjNjR4K2VtaWZhIiwgInNpbXBsZS1idXMiOworCQkjYWRkcmVzcy1jZWxscyA9IDwyPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCXJlZyA9IDwweDcwMDAwMDAwIDB4MTAwPjsKKwkJcmFuZ2VzID0gPDB4MiAweDAgMHhhMDAwMDAwMCAweDAwMDAwMDA4CisJCSAgICAgICAgICAweDMgMHgwIDB4YjAwMDAwMDAgMHgwMDQwMDAwMAorCQkJICAweDQgMHgwIDB4YzAwMDAwMDAgMHgxMDAwMDAwMAorCQkJICAweDUgMHgwIDB4RDAwMDAwMDAgMHgxMDAwMDAwMD47CisKKwkJdGksZHNjci1kZXYtZW5hYmxlID0gPDEzPjsKKwkJdGksZW1pZmEtYnVyc3QtcHJpb3JpdHkgPSA8MjU1PjsKKwkJdGksZW1pZmEtY2UtY29uZmlnID0gPDB4MDAyNDAxMjAKKwkJCQkgICAgICAweDAwMjQwMTIwCisJCQkJICAgICAgMHgwMDI0MDEyMgorCQkJCSAgICAgIDB4MDAyNDAxMjI+OworCisJCWZsYXNoQDMsMCB7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDE+OworCQkJY29tcGF0aWJsZSA9ICJjZmktZmxhc2giOworCQkJcmVnID0gPDB4MyAweDAgMHg0MDAwMDA+OworCQkJYmFuay13aWR0aCA9IDwxPjsKKwkJCWRldmljZS13aWR0aCA9IDwxPjsKKwkJCXBhcnRpdGlvbkAwIHsKKwkJCQlyZWcgPSA8MHgwIDB4NDAwMDAwPjsKKwkJCQlsYWJlbCA9ICJOT1IiOworCQkJfTsKKwkJfTsKKwl9OworCitUaGlzIHNob3dzIGEgZmxhc2ggY2hpcCBhdHRhY2hlZCB0byBjaGlwIHNlbGVjdCAzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2M2eC9zb2MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2M2eC9zb2MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxZTQ5NzMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYzZ4L3NvYy50eHQKQEAgLTAsMCArMSwyOCBAQAorQzZYIFN5c3RlbS1vbi1DaGlwCistLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiAic2ltcGxlLWJ1cyIKKy0gI2FkZHJlc3MtY2VsbHM6IG11c3QgYmUgMQorLSAjc2l6ZS1jZWxsczogbXVzdCBiZSAxCistIHJhbmdlcworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIG1vZGVsOiBzcGVjaWZpYyBTb0MgbW9kZWwKKworLSBub2RlcyBmb3IgSVAgYmxvY2tzIHdpdGhpbiBTb0MKKworCitFeGFtcGxlOgorCisJc29jIHsKKwkJY29tcGF0aWJsZSA9ICJzaW1wbGUtYnVzIjsKKwkJbW9kZWwgPSAidG1zMzIwYzY0NTUiOworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCXJhbmdlczsKKworCQkuLi4KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2M2eC90aW1lcjY0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jNngvdGltZXI2NC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU5MTFmZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jNngvdGltZXI2NC50eHQKQEAgLTAsMCArMSwyNiBAQAorVGltZXI2NAorLS0tLS0tLQorCitUaGUgdGltZXI2NCBub2RlIGRlc2NyaWJlcyBDNlggZXZlbnQgdGltZXJzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IG11c3QgYmUgInRpLGM2NHgrdGltZXI2NCIKKy0gcmVnOiBiYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgcmVnaXN0ZXIgcmVnaW9uCistIGludGVycnVwdC1wYXJlbnQ6IGludGVycnVwdCBjb250cm9sbGVyCistIGludGVycnVwdHM6IGludGVycnVwdCBpZAorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIHRpLGRzY3ItZGV2LWVuYWJsZTogRGV2aWNlIElEIHVzZWQgdG8gZW5hYmxlIHRpbWVyIElQIHRocm91Z2ggRFNDUiBpbnRlcmZhY2UuCisKKy0gdGksY29yZS1tYXNrOiBvbiBtdWx0aS1jb3JlIFNvQ3MsIGJpdG1hc2sgb2YgY29yZXMgYWxsb3dlZCB0byB1c2UgdGhpcyB0aW1lci4KKworRXhhbXBsZToKKwl0aW1lcjA6IHRpbWVyQDI1ZTAwMDAgeworCQljb21wYXRpYmxlID0gInRpLGM2NHgrdGltZXI2NCI7CisJCXRpLGNvcmUtbWFzayA9IDwgMHgwMSA+OworCQlyZWcgPSA8MHgyNWUwMDAwIDB4NDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZtZWdhbW9kX3BpYz47CisJCWludGVycnVwdHMgPSA8IDE2ID47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jaG9zZW4udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nob3Nlbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFlOWQ4MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jaG9zZW4udHh0CkBAIC0wLDAgKzEsNTQgQEAKK1RoZSBjaG9zZW4gbm9kZQorLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBjaG9zZW4gbm9kZSBkb2VzIG5vdCByZXByZXNlbnQgYSByZWFsIGRldmljZSwgYnV0IHNlcnZlcyBhcyBhIHBsYWNlCitmb3IgcGFzc2luZyBkYXRhIGJldHdlZW4gZmlybXdhcmUgYW5kIHRoZSBvcGVyYXRpbmcgc3lzdGVtLCBsaWtlIGJvb3QKK2FyZ3VtZW50cy4gRGF0YSBpbiB0aGUgY2hvc2VuIG5vZGUgZG9lcyBub3QgcmVwcmVzZW50IHRoZSBoYXJkd2FyZS4KKworCitzdGRvdXQtcGF0aCBwcm9wZXJ0eQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRGV2aWNlIHRyZWVzIG1heSBzcGVjaWZ5IHRoZSBkZXZpY2UgdG8gYmUgdXNlZCBmb3IgYm9vdCBjb25zb2xlIG91dHB1dAord2l0aCBhIHN0ZG91dC1wYXRoIHByb3BlcnR5IHVuZGVyIC9jaG9zZW4sIGFzIGRlc2NyaWJlZCBpbiBlUEFQUiwgZS5nLgorCisvIHsKKwljaG9zZW4geworCQlzdGRvdXQtcGF0aCA9ICIvc2VyaWFsQGYwMDoxMTUyMDAiOworCX07CisKKwlzZXJpYWxAZjAwIHsKKwkJY29tcGF0aWJsZSA9ICJ2ZW5kb3Isc29tZS11YXJ0IjsKKwkJcmVnID0gPDB4ZjAwIDB4MTA+OworCX07Cit9OworCitJZiB0aGUgY2hhcmFjdGVyICI6IiBpcyBwcmVzZW50IGluIHRoZSB2YWx1ZSwgdGhpcyB0ZXJtaW5hdGVzIHRoZSBwYXRoLgorVGhlIG1lYW5pbmcgb2YgYW55IGNoYXJhY3RlcnMgZm9sbG93aW5nIHRoZSAiOiIgaXMgZGV2aWNlLXNwZWNpZmljLCBhbmQKK211c3QgYmUgc3BlY2lmaWVkIGluIHRoZSByZWxldmFudCBiaW5kaW5nIGRvY3VtZW50YXRpb24uCisKK0ZvciBVQVJUIGRldmljZXMsIHRoZSBwcmVmZXJyZWQgYmluZGluZyBpcyBhIHN0cmluZyBpbiB0aGUgZm9ybToKKworCTxiYXVkPns8cGFyaXR5Pns8Yml0cz57PGZsb3c+fX19CisKK3doZXJlCisKKwliYXVkCS0gYmF1ZCByYXRlIGluIGRlY2ltYWwKKwlwYXJpdHkJLSAnbicgKG5vbmUpLCAnbycsIChvZGQpIG9yICdlJyAoZXZlbikKKwliaXRzCS0gbnVtYmVyIG9mIGRhdGEgYml0cworCWZsb3cJLSAncicgKHJ0cykKKworRm9yIGV4YW1wbGU6IDExNTIwMG44cgorCitJbXBsZW1lbnRhdGlvbiBub3RlOiBMaW51eCB3aWxsIGxvb2sgZm9yIHRoZSBwcm9wZXJ0eSAibGludXgsc3Rkb3V0LXBhdGgiIG9yCitvbiBQb3dlclBDICJzdGRvdXQiIGlmICJzdGRvdXQtcGF0aCIgaXMgbm90IGZvdW5kLiAgSG93ZXZlciwgdGhlCisibGludXgsc3Rkb3V0LXBhdGgiIGFuZCAic3Rkb3V0IiBwcm9wZXJ0aWVzIGFyZSBkZXByZWNhdGVkLiBOZXcgcGxhdGZvcm1zCitzaG91bGQgb25seSB1c2UgdGhlICJzdGRvdXQtcGF0aCIgcHJvcGVydHkuCisKK2xpbnV4LGJvb3RlZC1mcm9tLWtleGVjCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIHByb3BlcnR5IGlzIHNldCAoY3VycmVudGx5IG9ubHkgb24gUG93ZXJQQywgYW5kIG9ubHkgbmVlZGVkIG9uCitib29rM2UpIGJ5IHNvbWUgdmVyc2lvbnMgb2Yga2V4ZWMtdG9vbHMgdG8gdGVsbCB0aGUgbmV3IGtlcm5lbCB0aGF0IGl0CitpcyBiZWluZyBib290ZWQgYnkga2V4ZWMsIGFzIHRoZSBib290aW5nIGVudmlyb25tZW50IG1heSBkaWZmZXIgKGUuZy4KK2EgZGlmZmVyZW50IHNlY29uZGFyeSBDUFUgcmVsZWFzZSBtZWNoYW5pc20pCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svYWxwaGFzY2FsZSxhY2MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2FscGhhc2NhbGUsYWNjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmU2N2U4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2FscGhhc2NhbGUsYWNjLnR4dApAQCAtMCwwICsxLDExNSBAQAorQWxwaGFzY2FsZSBDbG9jayBDb250cm9sbGVyCisKK1RoZSBBQ0MgKEFscGhhc2NhbGUgQ2xvY2sgQ29udHJvbGxlcikgaXMgcmVzcG9uc2libGUgb2YgY2hvaXNpbmcgcHJvcGVyCitjbG9jayBzb3VyY2UsIHNldHRpbmcgZGV2aWRlcnMgYW5kIGNsb2NrIGdhdGVzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciB0aGUgQUNDIG5vZGU6CisgLSBjb21wYXRpYmxlOiBtdXN0IGJlICJhbHBoYXNjYWxlLGFzbTkyNjAtY2xvY2stY29udHJvbGxlciIKKyAtIHJlZzogbXVzdCBjb250YWluIHRoZSBBQ0MgcmVnaXN0ZXIgYmFzZSBhbmQgc2l6ZQorIC0gI2Nsb2NrLWNlbGxzIDogc2hhbGwgYmUgc2V0IHRvIDEuCisKK1NpbXBsZSBvbmUtY2VsbCBjbG9jayBzcGVjaWZpZXIgZm9ybWF0IGlzIHVzZWQsIHdoZXJlIHRoZSBvbmx5IGNlbGwgaXMgdXNlZAorYXMgYW4gaW5kZXggb2YgdGhlIGNsb2NrIGluc2lkZSB0aGUgcHJvdmlkZXIuCitJdCBpcyBlbmNvdXJhZ2VkIHRvIHVzZSBkdC1iaW5kaW5nIGZvciBjbG9jayBpbmRleCBkZWZpbml0aW9ucy4gU29DIHNwZWNpZmljCitkdC1iaW5kaW5nIHNob3VsZCBiZSBpbmNsdWRlZCB0byB0aGUgZGV2aWNlIHRyZWUgZGVzY3JpcHRvci4gRm9yIGV4YW1wbGUKK0FscGhhc2NhbGUgQVNNOTI2MDoKKyNpbmNsdWRlIDxkdC1iaW5kaW5ncy9jbG9jay9hbHBoYXNjYWxlLGFzbTkyNjAuaD4KKworVGhpcyBiaW5kaW5nIGNvbnRhaW5zIHR3byB0eXBlcyBvZiBjbG9jayBwcm92aWRlcnM6CisgX0FIQl8gLSBBSEIgZ2F0ZTsKKyBfU1lTXyAtIGFkanVzdGFibGUgY2xvY2sgc291cmNlLiBOb3QgYWxsIHBlcmlwaGVyYWwgaGF2ZSBfU1lTXyBjbG9jayBwcm92aWRlci4KK0FsbCBjbG9jayBzcGVjaWZpYyBkZXRhaWxzIGNhbiBiZSBmb3VuZCBpbiB0aGUgU29DIGRvY3VtZW50YXRpb24uCitDTEtJRF9BSEJfUk9NCQkwCitDTEtJRF9BSEJfUkFNCQkxCitDTEtJRF9BSEJfR1BJTwkJMgorQ0xLSURfQUhCX01BQwkJMworQ0xLSURfQUhCX0VNSQkJNAorQ0xLSURfQUhCX1VTQjAJCTUKK0NMS0lEX0FIQl9VU0IxCQk2CitDTEtJRF9BSEJfRE1BMAkJNworQ0xLSURfQUhCX0RNQTEJCTgKK0NMS0lEX0FIQl9VQVJUMAkJOQorQ0xLSURfQUhCX1VBUlQxCQkxMAorQ0xLSURfQUhCX1VBUlQyCQkxMQorQ0xLSURfQUhCX1VBUlQzCQkxMgorQ0xLSURfQUhCX1VBUlQ0CQkxMworQ0xLSURfQUhCX1VBUlQ1CQkxNAorQ0xLSURfQUhCX1VBUlQ2CQkxNQorQ0xLSURfQUhCX1VBUlQ3CQkxNgorQ0xLSURfQUhCX1VBUlQ4CQkxNworQ0xLSURfQUhCX1VBUlQ5CQkxOAorQ0xLSURfQUhCX0kyUzAJCTE5CitDTEtJRF9BSEJfSTJDMAkJMjAKK0NMS0lEX0FIQl9JMkMxCQkyMQorQ0xLSURfQUhCX1NTUDAJCTIyCitDTEtJRF9BSEJfSU9DT05GSUcJMjMKK0NMS0lEX0FIQl9XRFQJCTI0CitDTEtJRF9BSEJfQ0FOMAkJMjUKK0NMS0lEX0FIQl9DQU4xCQkyNgorQ0xLSURfQUhCX01QV00JCTI3CitDTEtJRF9BSEJfU1BJMAkJMjgKK0NMS0lEX0FIQl9TUEkxCQkyOQorQ0xLSURfQUhCX1FFSQkJMzAKK0NMS0lEX0FIQl9RVUFEU1BJMAkzMQorQ0xLSURfQUhCX0NBTUlGCQkzMgorQ0xLSURfQUhCX0xDRElGCQkzMworQ0xLSURfQUhCX1RJTUVSMAkzNAorQ0xLSURfQUhCX1RJTUVSMQkzNQorQ0xLSURfQUhCX1RJTUVSMgkzNgorQ0xLSURfQUhCX1RJTUVSMwkzNworQ0xLSURfQUhCX0lSUQkJMzgKK0NMS0lEX0FIQl9SVEMJCTM5CitDTEtJRF9BSEJfTkFORAkJNDAKK0NMS0lEX0FIQl9BREMwCQk0MQorQ0xLSURfQUhCX0xFRAkJNDIKK0NMS0lEX0FIQl9EQUMwCQk0MworQ0xLSURfQUhCX0xDRAkJNDQKK0NMS0lEX0FIQl9JMlMxCQk0NQorQ0xLSURfQUhCX01BQzEJCTQ2CisKK0NMS0lEX1NZU19DUFUJCTQ3CitDTEtJRF9TWVNfQUhCCQk0OAorQ0xLSURfU1lTX0kyUzBNCQk0OQorQ0xLSURfU1lTX0kyUzBTCQk1MAorQ0xLSURfU1lTX0kyUzFNCQk1MQorQ0xLSURfU1lTX0kyUzFTCQk1MgorQ0xLSURfU1lTX1VBUlQwCQk1MworQ0xLSURfU1lTX1VBUlQxCQk1NAorQ0xLSURfU1lTX1VBUlQyCQk1NQorQ0xLSURfU1lTX1VBUlQzCQk1NgorQ0xLSURfU1lTX1VBUlQ0CQk1NgorQ0xLSURfU1lTX1VBUlQ1CQk1NworQ0xLSURfU1lTX1VBUlQ2CQk1OAorQ0xLSURfU1lTX1VBUlQ3CQk1OQorQ0xLSURfU1lTX1VBUlQ4CQk2MAorQ0xLSURfU1lTX1VBUlQ5CQk2MQorQ0xLSURfU1lTX1NQSTAJCTYyCitDTEtJRF9TWVNfU1BJMQkJNjMKK0NMS0lEX1NZU19RVUFEU1BJCTY0CitDTEtJRF9TWVNfU1NQMAkJNjUKK0NMS0lEX1NZU19OQU5ECQk2NgorQ0xLSURfU1lTX1RSQUNFCQk2NworQ0xLSURfU1lTX0NBTU0JCTY4CitDTEtJRF9TWVNfV0RUCQk2OQorQ0xLSURfU1lTX0NMS09VVAk3MAorQ0xLSURfU1lTX01BQwkJNzEKK0NMS0lEX1NZU19MQ0QJCTcyCitDTEtJRF9TWVNfQURDQU5BCTczCisKK0V4YW1wbGUgb2YgY2xvY2sgY29uc3VtZXIgd2l0aCBfU1lTXyBhbmQgX0FIQl8gc2lua3MuCit1YXJ0NDogc2VyaWFsQDgwMDEwMDAwIHsKKwljb21wYXRpYmxlID0gImFscGhhc2NhbGUsYXNtOTI2MC11YXJ0IjsKKwlyZWcgPSA8MHg4MDAxMDAwMCAweDQwMDA+OworCWNsb2NrcyA9IDwmYWNjIENMS0lEX1NZU19VQVJUND4sIDwmYWNjIENMS0lEX0FIQl9VQVJUND47CisJaW50ZXJydXB0cyA9IDwxOT47CisJc3RhdHVzID0gImRpc2FibGVkIjsKK307CisKK0Nsb2NrIGNvbnN1bWVyIHdpdGggb25seSBvbmUsIF9BSEJfIHNpbmsuCit0aW1lcjA6IHRpbWVyQDgwMDg4MDAwIHsKKwljb21wYXRpYmxlID0gImFscGhhc2NhbGUsYXNtOTI2MC10aW1lciI7CisJcmVnID0gPDB4ODAwODgwMDAgMHg0MDAwPjsKKwljbG9ja3MgPSA8JmFjYyBDTEtJRF9BSEJfVElNRVIwPjsKKwlpbnRlcnJ1cHRzID0gPDI5PjsKK307CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9hbHRyX3NvY2ZwZ2EudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2FsdHJfc29jZnBnYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjcyZTgwZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9hbHRyX3NvY2ZwZ2EudHh0CkBAIC0wLDAgKzEsMzAgQEAKK0RldmljZSBUcmVlIENsb2NrIGJpbmRpbmdzIGZvciBBbHRlcmEncyBTb0NGUEdBIHBsYXRmb3JtCisKK1RoaXMgYmluZGluZyB1c2VzIHRoZSBjb21tb24gY2xvY2sgYmluZGluZ1sxXS4KKworWzFdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNoYWxsIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCSJhbHRyLHNvY2ZwZ2EtcGxsLWNsb2NrIiAtIGZvciBhIFBMTCBjbG9jaworCSJhbHRyLHNvY2ZwZ2EtcGVyaXAtY2xvY2siIC0gVGhlIHBlcmlwaGVyYWwgY2xvY2sgZGl2aWRlZCBmcm9tIHRoZQorCQlQTEwgY2xvY2suCisJImFsdHIsc29jZnBnYS1nYXRlLWNsayIgLSBDbG9ja3MgdGhhdCBkaXJlY3RseSBmZWVkIHBlcmlwaGVyYWxzIGFuZAorCQljYW4gZ2V0IGdhdGVkLgorCistIHJlZyA6IHNoYWxsIGJlIHRoZSBjb250cm9sIHJlZ2lzdGVyIG9mZnNldCBmcm9tIENMT0NLX01BTkFHRVIncyBiYXNlIGZvciB0aGUgY2xvY2suCistIGNsb2NrcyA6IHNoYWxsIGJlIHRoZSBpbnB1dCBwYXJlbnQgY2xvY2sgcGhhbmRsZSBmb3IgdGhlIGNsb2NrLiBUaGlzIGlzCisJZWl0aGVyIGFuIG9zY2lsbGF0b3Igb3IgYSBwbGwgb3V0cHV0LgorLSAjY2xvY2stY2VsbHMgOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nLCBzaGFsbCBiZSBzZXQgdG8gMC4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gZml4ZWQtZGl2aWRlciA6IElmIGNsb2NrcyBoYXZlIGEgZml4ZWQgZGl2aWRlciB2YWx1ZSwgdXNlIHRoaXMgcHJvcGVydHkuCistIGNsay1nYXRlIDogRm9yICJzb2NmcGdhLWdhdGUtY2xrIiwgY2xrLWdhdGUgY29udGFpbnMgdGhlIGdhdGluZyByZWdpc3RlcgorICAgICAgICBhbmQgdGhlIGJpdCBpbmRleC4KKy0gZGl2LXJlZyA6IEZvciAic29jZnBnYS1nYXRlLWNsayIgYW5kICJzb2NmcGdhLXBlcmlwaC1jbG9jayIsIGRpdi1yZWcgY29udGFpbnMKKwl0aGUgZGl2aWRlciByZWdpc3RlciwgYml0IHNoaWZ0LCBhbmQgd2lkdGguCistIGNsay1waGFzZSA6IEZvciB0aGUgc2RtbWNfY2xrLCBjb250YWlucyB0aGUgdmFsdWUgb2YgdGhlIGNsb2NrIHBoYXNlIHRoYXQgY29udHJvbHMKKwl0aGUgU0RNTUMgQ0lVIGNsb2NrLiBUaGUgZmlyc3QgdmFsdWUgaXMgdGhlIGNsa19zYW1wbGUoc21wc2VsKSwgYW5kIHRoZSBzZWNvbmQKKwl2YWx1ZSBpcyB0aGUgY2Nsa19pbl9kcnYoZHJ2c2VsKS4gVGhlIGNsay1waGFzZSBpcyB1c2VkIHRvIGVuYWJsZSB0aGUgY29ycmVjdAorCWhvbGQvZGVsYXkgdGltZXMgdGhhdCBpcyBuZWVkZWQgZm9yIHRoZSBTRC9NTUMgQ0lVIGNsb2NrLiBUaGUgdmFsdWVzIG9mIGJvdGgKKwljYW4gYmUgMC0zMTUgZGVncmVlcywgaW4gNDUgZGVncmVlIGluY3JlbWVudHMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svYW1sb2dpYyxtZXNvbjhiLWNsa2MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2FtbG9naWMsbWVzb244Yi1jbGtjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjdiM2ZhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2FtbG9naWMsbWVzb244Yi1jbGtjLnR4dApAQCAtMCwwICsxLDQwIEBACisqIEFtbG9naWMgTWVzb244YiBDbG9jayBhbmQgUmVzZXQgVW5pdAorCitUaGUgQW1sb2dpYyBNZXNvbjhiIGNsb2NrIGNvbnRyb2xsZXIgZ2VuZXJhdGVzIGFuZCBzdXBwbGllcyBjbG9jayB0byB2YXJpb3VzCitjb250cm9sbGVycyB3aXRoaW4gdGhlIFNvQy4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImFtbG9naWMsbWVzb244Yi1jbGtjIgorLSByZWc6IGl0IG11c3QgYmUgY29tcG9zZWQgYnkgdHdvIHR1cGxlczoKKwkwKSBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIHh0YWwgcmVnaXN0ZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkKKwkgICBtYXBwZWQgcmVnaW9uLgorCTEpIHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY2xvY2sgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeQorCSAgIG1hcHBlZCByZWdpb24uCisKKy0gI2Nsb2NrLWNlbGxzOiBzaG91bGQgYmUgMS4KKworRWFjaCBjbG9jayBpcyBhc3NpZ25lZCBhbiBpZGVudGlmaWVyIGFuZCBjbGllbnQgbm9kZXMgY2FuIHVzZSB0aGlzIGlkZW50aWZpZXIKK3RvIHNwZWNpZnkgdGhlIGNsb2NrIHdoaWNoIHRoZXkgY29uc3VtZS4gQWxsIGF2YWlsYWJsZSBjbG9ja3MgYXJlIGRlZmluZWQgYXMKK3ByZXByb2Nlc3NvciBtYWNyb3MgaW4gdGhlIGR0LWJpbmRpbmdzL2Nsb2NrL21lc29uOGItY2xrYy5oIGhlYWRlciBhbmQgY2FuIGJlCit1c2VkIGluIGRldmljZSB0cmVlIHNvdXJjZXMuCisKK0V4YW1wbGU6IENsb2NrIGNvbnRyb2xsZXIgbm9kZToKKworCWNsa2M6IGNsb2NrLWNvbnRyb2xsZXJAYzExMDQwMDAgeworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJCWNvbXBhdGlibGUgPSAiYW1sb2dpYyxtZXNvbjhiLWNsa2MiOworCQlyZWcgPSA8MHhjMTEwODAwMCAweDQ+LCA8MHhjMTEwNDAwMCAweDQ2MD47CisJfTsKKworCitFeGFtcGxlOiBVQVJUIGNvbnRyb2xsZXIgbm9kZSB0aGF0IGNvbnN1bWVzIHRoZSBjbG9jayBnZW5lcmF0ZWQgYnkgdGhlIGNsb2NrCisgIGNvbnRyb2xsZXI6CisKKwl1YXJ0X0FPOiBzZXJpYWxAYzgxMDA0YzAgeworCQljb21wYXRpYmxlID0gImFtbG9naWMsbWVzb24tdWFydCI7CisJCXJlZyA9IDwweGM4MTAwNGMwIDB4MTQ+OworCQlpbnRlcnJ1cHRzID0gPDAgOTAgMT47CisJCWNsb2NrcyA9IDwmY2xrYyBDTEtJRF9DTEs4MT47CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9hcm0taW50ZWdyYXRvci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svYXJtLWludGVncmF0b3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExZjVmOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svYXJtLWludGVncmF0b3IudHh0CkBAIC0wLDAgKzEsMzQgQEAKK0Nsb2NrIGJpbmRpbmdzIGZvciBBUk0gSW50ZWdyYXRvciBhbmQgVmVyc2F0aWxlIENvcmUgTW9kdWxlIGNsb2NrcworCitBdXhpbGlhcnkgT3NjaWxsYXRvciBDbG9jaworCitUaGlzIGlzIGEgY29uZmlndXJhYmxlIGNsb2NrIGZlZCBmcm9tIGEgMjQgTUh6IGNocnlzdGFsLAordXNlZCBmb3IgZ2VuZXJhdGluZyBlLmcuIHZpZGVvIGNsb2Nrcy4gSXQgaXMgbG9jYXRlZCBvbiB0aGUKK2NvcmUgbW9kdWxlIGFuZCB0aGVyZSBpcyBvbmx5IG9uZSBvZiB0aGVzZS4KKworVGhpcyBjbG9jayBub2RlICptdXN0KiBiZSBhIHN1Ym5vZGUgb2YgdGhlIGNvcmUgbW9kdWxlLCBzaW5jZQoraXQgb2J0YWlucyB0aGUgYmFzZSBhZGRyZXNzIGZvciBpdCdzIGFkZHJlc3MgcmFuZ2UgZnJvbSBpdHMKK3BhcmVudCBub2RlLgorCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IG11c3QgYmUgImFybSxpbnRlZ3JhdG9yLWNtLWF1eG9zYyIgb3IgImFybSx2ZXJzYXRpbGUtY20tYXV4b3NjIgorLSAjY2xvY2stY2VsbHM6IG11c3QgYmUgPDA+CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrczogcGFyZW50IGNsb2NrKHMpCisKK0V4YW1wbGU6CisKK2NvcmUtbW9kdWxlQDEwMDAwMDAwIHsKKwl4dGFsMjRtaHo6IHh0YWwyNG1oekAyNE0geworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCWNvbXBhdGlibGUgPSAiZml4ZWQtY2xvY2siOworCQljbG9jay1mcmVxdWVuY3kgPSA8MjQwMDAwMDA+OworCX07CisJYXV4b3NjOiBjbV9hdXhfb3NjQDI1TSB7CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJhcm0saW50ZWdyYXRvci1jbS1hdXhvc2MiOworCQljbG9ja3MgPSA8Jnh0YWwyNG1oej47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svYXQ5MS1jbG9jay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svYXQ5MS1jbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTgxYmM4YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9hdDkxLWNsb2NrLnR4dApAQCAtMCwwICsxLDQ5OCBAQAorRGV2aWNlIFRyZWUgQ2xvY2sgYmluZGluZ3MgZm9yIGFyY2gtYXQ5MQorCitUaGlzIGJpbmRpbmcgdXNlcyB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmdbMV0uCisKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaGFsbCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKwkiYXRtZWwsYXQ5MXNhbTl4NS1zY2tjIjoKKwkJYXQ5MSBTQ0tDIChTbG93IENsb2NrIENvbnRyb2xsZXIpCisJCVRoaXMgbm9kZSBjb250YWlucyB0aGUgc2xvdyBjbG9jayBkZWZpbml0aW9ucy4KKworCSJhdG1lbCxhdDkxc2FtOXg1LWNsay1zbG93LW9zYyI6CisJCWF0OTEgc2xvdyBvc2NpbGxhdG9yCisKKwkiYXRtZWwsYXQ5MXNhbTl4NS1jbGstc2xvdy1yYy1vc2MiOgorCQlhdDkxIGludGVybmFsIHNsb3cgUkMgb3NjaWxsYXRvcgorCisJImF0bWVsLGF0OTFybTkyMDAtcG1jIiBvcgorCSJhdG1lbCxhdDkxc2FtOWc0NS1wbWMiIG9yCisJImF0bWVsLGF0OTFzYW05bjEyLXBtYyIgb3IKKwkiYXRtZWwsYXQ5MXNhbTl4NS1wbWMiIG9yCisJImF0bWVsLHNhbWE1ZDMtcG1jIjoKKwkJYXQ5MSBQTUMgKFBvd2VyIE1hbmFnZW1lbnQgQ29udHJvbGxlcikKKwkJQWxsIGF0OTEgc3BlY2lmaWMgY2xvY2tzIChjbG9ja3MgZGVmaW5lZCBiZWxvdykgbXVzdCBiZSBjaGlsZAorCQlub2RlIG9mIHRoZSBQTUMgbm9kZS4KKworCSJhdG1lbCxhdDkxc2FtOXg1LWNsay1zbG93IiAodW5kZXIgc2NrYyBub2RlKQorCW9yCisJImF0bWVsLGF0OTFzYW05MjYwLWNsay1zbG93IiAodW5kZXIgcG1jIG5vZGUpOgorCQlhdDkxIHNsb3cgY2xrCisKKwkiYXRtZWwsYXQ5MXJtOTIwMC1jbGstbWFpbi1vc2MiCisJImF0bWVsLGF0OTFzYW05eDUtY2xrLW1haW4tcmMtb3NjIgorCQlhdDkxIG1haW4gY2xrIHNvdXJjZXMKKworCSJhdG1lbCxhdDkxc2FtOXg1LWNsay1tYWluIgorCSJhdG1lbCxhdDkxcm05MjAwLWNsay1tYWluIjoKKwkJYXQ5MSBtYWluIGNsb2NrCisKKwkiYXRtZWwsYXQ5MXJtOTIwMC1jbGstbWFzdGVyIiBvcgorCSJhdG1lbCxhdDkxc2FtOXg1LWNsay1tYXN0ZXIiOgorCQlhdDkxIG1hc3RlciBjbG9jaworCisJImF0bWVsLGF0OTFzYW05eDUtY2xrLXBlcmlwaGVyYWwiIG9yCisJImF0bWVsLGF0OTFybTkyMDAtY2xrLXBlcmlwaGVyYWwiOgorCQlhdDkxIHBlcmlwaGVyYWwgY2xvY2tzCisKKwkiYXRtZWwsYXQ5MXJtOTIwMC1jbGstcGxsIiBvcgorCSJhdG1lbCxhdDkxc2FtOWc0NS1jbGstcGxsIiBvcgorCSJhdG1lbCxhdDkxc2FtOWcyMC1jbGstcGxsYiIgb3IKKwkiYXRtZWwsc2FtYTVkMy1jbGstcGxsIjoKKwkJYXQ5MSBwbGwgY2xvY2tzCisKKwkiYXRtZWwsYXQ5MXNhbTl4NS1jbGstcGxsZGl2IjoKKwkJYXQ5MSBwbGxhIGRpdmlzb3IKKworCSJhdG1lbCxhdDkxcm05MjAwLWNsay1wcm9ncmFtbWFibGUiIG9yCisJImF0bWVsLGF0OTFzYW05ZzQ1LWNsay1wcm9ncmFtbWFibGUiIG9yCisJImF0bWVsLGF0OTFzYW05eDUtY2xrLXByb2dyYW1tYWJsZSI6CisJCWF0OTEgcHJvZ3JhbW1hYmxlIGNsb2NrcworCisJImF0bWVsLGF0OTFzYW05eDUtY2xrLXNtZCI6CisJCWF0OTEgU01EIChTb2Z0IE1vZGVtKSBjbG9jaworCisJImF0bWVsLGF0OTFybTkyMDAtY2xrLXN5c3RlbSI6CisJCWF0OTEgc3lzdGVtIGNsb2NrcworCisJImF0bWVsLGF0OTFybTkyMDAtY2xrLXVzYiIgb3IKKwkiYXRtZWwsYXQ5MXNhbTl4NS1jbGstdXNiIiBvcgorCSJhdG1lbCxhdDkxc2FtOW4xMi1jbGstdXNiIjoKKwkJYXQ5MSB1c2IgY2xvY2sKKworCSJhdG1lbCxhdDkxc2FtOXg1LWNsay11dG1pIjoKKwkJYXQ5MSB1dG1pIGNsb2NrCisKKwkiYXRtZWwsc2FtYTVkNC1jbGstaDMybXgiOgorCQlhdDkxIGgzMm14IGNsb2NrCisKKwkiYXRtZWwsc2FtYTVkMi1jbGstZ2VuZXJhdGVkIjoKKwkJYXQ5MSBnZW5lcmF0ZWQgY2xvY2sKKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgU0NLQyBub2RlOgorLSByZWcgOiBkZWZpbmVzIHRoZSBJTyBtZW1vcnkgcmVzZXJ2ZWQgZm9yIHRoZSBTQ0tDLgorLSAjc2l6ZS1jZWxscyA6IHNoYWxsIGJlIDAgKHJlZyBpcyB1c2VkIHRvIGVuY29kZSBjbGsgaWQpLgorLSAjYWRkcmVzcy1jZWxscyA6IHNoYWxsIGJlIDEgKHJlZyBpcyB1c2VkIHRvIGVuY29kZSBjbGsgaWQpLgorCisKK0ZvciBleGFtcGxlOgorCXNja2M6IHNja2NAZmZmZmZlNTAgeworCQljb21wYXRpYmxlID0gImF0bWVsLHNhbWE1ZDMtcG1jIjsKKwkJcmVnID0gPDB4ZmZmZmZlNTAgMHg0PgorCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisKKwkJLyogcHV0IGF0OTEgc2xvdyBjbG9ja3MgaGVyZSAqLworCX07CisKKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgaW50ZXJuYWwgc2xvdyBSQyBvc2NpbGxhdG9yOgorLSAjY2xvY2stY2VsbHMgOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBzaGFsbCBiZSBzZXQgdG8gMC4KKy0gY2xvY2stZnJlcXVlbmN5IDogZGVmaW5lIHRoZSBpbnRlcm5hbCBSQyBvc2NpbGxhdG9yIGZyZXF1ZW5jeS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gY2xvY2stYWNjdXJhY3kgOiBkZWZpbmUgdGhlIGludGVybmFsIFJDIG9zY2lsbGF0b3IgYWNjdXJhY3kuCisKK0ZvciBleGFtcGxlOgorCXNsb3dfcmNfb3NjOiBzbG93X3JjX29zYyB7CisJCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXNhbTl4NS1jbGstc2xvdy1yYy1vc2MiOworCQljbG9jay1mcmVxdWVuY3kgPSA8MzI3Njg+OworCQljbG9jay1hY2N1cmFjeSA9IDw1MDAwMDAwMD47CisJfTsKKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3Igc2xvdyBvc2NpbGxhdG9yOgorLSAjY2xvY2stY2VsbHMgOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBzaGFsbCBiZSBzZXQgdG8gMC4KKy0gY2xvY2tzIDogc2hhbGwgZW5jb2RlIHRoZSBtYWluIG9zYyBzb3VyY2UgY2xrIHNvdXJjZXMgKHNlZSBhdG1lbCBkYXRhc2hlZXQpLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBhdG1lbCxvc2MtYnlwYXNzIDogYm9vbGVhbiBwcm9wZXJ0eS4gU2V0IHRoaXMgd2hlbiBhIGNsb2NrIHNpZ25hbCBpcyBkaXJlY3RseQorICBwcm92aWRlZCBvbiBYSU4uCisKK0ZvciBleGFtcGxlOgorCXNsb3dfb3NjOiBzbG93X29zYyB7CisJCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXJtOTIwMC1jbGstc2xvdy1vc2MiOworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCWNsb2NrcyA9IDwmc2xvd194dGFsPjsKKwl9OworCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBzbG93IGNsb2NrOgorLSAjY2xvY2stY2VsbHMgOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBzaGFsbCBiZSBzZXQgdG8gMC4KKy0gY2xvY2tzIDogc2hhbGwgZW5jb2RlIHRoZSBzbG93IGNsayBzb3VyY2VzIChzZWUgYXRtZWwgZGF0YXNoZWV0KS4KKworRm9yIGV4YW1wbGU6CisJY2xrMzJrOiBzbGNrIHsKKwkJY29tcGF0aWJsZSA9ICJhdG1lbCxhdDkxc2FtOXg1LWNsay1zbG93IjsKKwkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQljbG9ja3MgPSA8JnNsb3dfcmNfb3NjICZzbG93X29zYz47CisJfTsKKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgUE1DIG5vZGU6CistIHJlZyA6IGRlZmluZXMgdGhlIElPIG1lbW9yeSByZXNlcnZlZCBmb3IgdGhlIFBNQy4KKy0gI3NpemUtY2VsbHMgOiBzaGFsbCBiZSAwIChyZWcgaXMgdXNlZCB0byBlbmNvZGUgY2xrIGlkKS4KKy0gI2FkZHJlc3MtY2VsbHMgOiBzaGFsbCBiZSAxIChyZWcgaXMgdXNlZCB0byBlbmNvZGUgY2xrIGlkKS4KKy0gaW50ZXJydXB0cyA6IHNoYWxsIGJlIHNldCB0byBQTUMgaW50ZXJydXB0IGxpbmUuCistIGludGVycnVwdC1jb250cm9sbGVyIDogdGVsbCB0aGF0IHRoZSBQTUMgaXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIuCistICNpbnRlcnJ1cHQtY2VsbHMgOiBtdXN0IGJlIHNldCB0byAxLiBUaGUgZmlyc3QgY2VsbCBlbmNvZGVzIHRoZSBpbnRlcnJ1cHQgaWQsCisJYW5kIHJlZmxlY3QgdGhlIGJpdCBwb3NpdGlvbiBpbiB0aGUgUE1DX0VSL0RSL1NSIHJlZ2lzdGVycy4KKwlZb3UgY2FuIHVzZSB0aGUgZHQgbWFjcm9zIGRlZmluZWQgaW4gZHQtYmluZGluZ3MvY2xvY2svYXQ5MS5oLgorCTAgKEFUOTFfUE1DX01PU0NTKSAtPiBtYWluIG9zY2lsbGF0b3IgcmVhZHkKKwkxIChBVDkxX1BNQ19MT0NLQSkgLT4gUExMIEEgcmVhZHkKKwkyIChBVDkxX1BNQ19MT0NLQikgLT4gUExMIEIgcmVhZHkKKwkzIChBVDkxX1BNQ19NQ0tSRFkpIC0+IG1hc3RlciBjbG9jayByZWFkeQorCTYgKEFUOTFfUE1DX0xPQ0tVKSAtPiBVVE1JIFBMTCBjbG9jayByZWFkeQorCTggLi4gMTUgKEFUOTFfUE1DX1BDS1JEWShpZCkpIC0+IHByb2dyYW1tYWJsZSBjbG9jayByZWFkeQorCTE2IChBVDkxX1BNQ19NT1NDU0VMUykgLT4gbWFpbiBvc2NpbGxhdG9yIHNlbGVjdGVkCisJMTcgKEFUOTFfUE1DX01PU0NSQ1MpIC0+IFJDIG1haW4gb3NjaWxsYXRvciBzdGFiaWxpemVkCisJMTggKEFUOTFfUE1DX0NGREVWKSAtPiBjbG9jayBmYWlsdXJlIGRldGVjdGVkCisKK0ZvciBleGFtcGxlOgorCXBtYzogcG1jQGZmZmZmYzAwIHsKKwkJY29tcGF0aWJsZSA9ICJhdG1lbCxzYW1hNWQzLXBtYyI7CisJCWludGVycnVwdHMgPSA8MSA0IDc+OworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCisJCS8qIHB1dCBhdDkxIGNsb2NrcyBoZXJlICovCisJfTsKKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgbWFpbiBjbG9jayBpbnRlcm5hbCBSQyBvc2NpbGxhdG9yOgorLSBpbnRlcnJ1cHQtcGFyZW50IDogbXVzdCByZWZlcmVuY2UgdGhlIFBNQyBub2RlLgorLSBpbnRlcnJ1cHRzIDogc2hhbGwgYmUgc2V0IHRvICI8MD4iLgorLSBjbG9jay1mcmVxdWVuY3kgOiBkZWZpbmUgdGhlIGludGVybmFsIFJDIG9zY2lsbGF0b3IgZnJlcXVlbmN5LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjbG9jay1hY2N1cmFjeSA6IGRlZmluZSB0aGUgaW50ZXJuYWwgUkMgb3NjaWxsYXRvciBhY2N1cmFjeS4KKworRm9yIGV4YW1wbGU6CisJbWFpbl9yY19vc2M6IG1haW5fcmNfb3NjIHsKKwkJY29tcGF0aWJsZSA9ICJhdG1lbCxhdDkxc2FtOXg1LWNsay1tYWluLXJjLW9zYyI7CisJCWludGVycnVwdC1wYXJlbnQgPSA8JnBtYz47CisJCWludGVycnVwdHMgPSA8MD47CisJCWNsb2NrLWZyZXF1ZW5jeSA9IDwxMjAwMDAwMD47CisJCWNsb2NrLWFjY3VyYWN5ID0gPDUwMDAwMDAwPjsKKwl9OworCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBtYWluIGNsb2NrIG9zY2lsbGF0b3I6CistIGludGVycnVwdC1wYXJlbnQgOiBtdXN0IHJlZmVyZW5jZSB0aGUgUE1DIG5vZGUuCistIGludGVycnVwdHMgOiBzaGFsbCBiZSBzZXQgdG8gIjwwPiIuCistICNjbG9jay1jZWxscyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IHNoYWxsIGJlIHNldCB0byAwLgorLSBjbG9ja3MgOiBzaGFsbCBlbmNvZGUgdGhlIG1haW4gb3NjIHNvdXJjZSBjbGsgc291cmNlcyAoc2VlIGF0bWVsIGRhdGFzaGVldCkuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGF0bWVsLG9zYy1ieXBhc3MgOiBib29sZWFuIHByb3BlcnR5LiBTcGVjaWZpZWQgaWYgYSBjbG9jayBzaWduYWwgaXMgcHJvdmlkZWQKKyAgb24gWElOLgorCisgIGNsb2NrIHNpZ25hbCBpcyBkaXJlY3RseSBwcm92aWRlZCBvbiBYSU4gcGluLgorCitGb3IgZXhhbXBsZToKKwltYWluX29zYzogbWFpbl9vc2MgeworCQljb21wYXRpYmxlID0gImF0bWVsLGF0OTFybTkyMDAtY2xrLW1haW4tb3NjIjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmcG1jPjsKKwkJaW50ZXJydXB0cyA9IDwwPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQljbG9ja3MgPSA8Jm1haW5feHRhbD47CisJfTsKKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgbWFpbiBjbG9jazoKKy0gaW50ZXJydXB0LXBhcmVudCA6IG11c3QgcmVmZXJlbmNlIHRoZSBQTUMgbm9kZS4KKy0gaW50ZXJydXB0cyA6IHNoYWxsIGJlIHNldCB0byAiPDA+Ii4KKy0gI2Nsb2NrLWNlbGxzIDogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzsgc2hhbGwgYmUgc2V0IHRvIDAuCistIGNsb2NrcyA6IHNoYWxsIGVuY29kZSB0aGUgbWFpbiBjbGsgc291cmNlcyAoc2VlIGF0bWVsIGRhdGFzaGVldCkuCisKK0ZvciBleGFtcGxlOgorCW1haW46IG1haW5jayB7CisJCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXNhbTl4NS1jbGstbWFpbiI7CisJCWludGVycnVwdC1wYXJlbnQgPSA8JnBtYz47CisJCWludGVycnVwdHMgPSA8MD47CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJY2xvY2tzID0gPCZtYWluX3JjX29zYyAmbWFpbl9vc2M+OworCX07CisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIG1hc3RlciBjbG9jazoKKy0gaW50ZXJydXB0LXBhcmVudCA6IG11c3QgcmVmZXJlbmNlIHRoZSBQTUMgbm9kZS4KKy0gaW50ZXJydXB0cyA6IHNoYWxsIGJlIHNldCB0byAiPDM+Ii4KKy0gI2Nsb2NrLWNlbGxzIDogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzsgc2hhbGwgYmUgc2V0IHRvIDAuCistIGNsb2NrcyA6IHNoYWxsIGJlIHRoZSBtYXN0ZXIgY2xvY2sgc291cmNlcyAoc2VlIGF0bWVsIGRhdGFzaGVldCkgcGhhbmRsZXMuCisJZS5nLiAiPCZjazMyaz4sIDwmbWFpbj4sIDwmcGxsYT4sIDwmcGxsYj4iLgorLSBhdG1lbCxjbGstb3V0cHV0LXJhbmdlIDogbWluaW11bSBhbmQgbWF4aW11bSBjbG9jayBmcmVxdWVuY3kgKHR3byB1MzIKKwkJCSAgIGZpZWxkcykuCisJICAgZS5nLiBvdXRwdXQgPSA8MCAxMzMwMDAwMDA+OyA8PT4gMCB0byAxMzNNSHouCistIGF0bWVsLGNsay1kaXZpc29ycyA6IG1hc3RlciBjbG9jayBkaXZpc29ycyB0YWJsZSAoZm91ciB1MzIgZmllbGRzKS4KKwkJMCA8PT4gcmVzZXJ2ZWQgdmFsdWUuCisJCWUuZy4gZGl2aXNvcnMgPSA8MSAyIDQgNj47CistIGF0bWVsLG1hc3Rlci1jbGstaGF2ZS1kaXYzLXByZXMgOiBzb21lIFNvQyB1c2UgdGhlIHJlc2VydmVkIHZhbHVlIDcgaW4gdGhlCisJCQkJICAgIFBSRVMgZmllbGQgYXMgQ0xPQ0tfRElWMyAoZS5nIHNhbTl4NSkuCisKK0ZvciBleGFtcGxlOgorCW1jazogbWNrIHsKKwkJY29tcGF0aWJsZSA9ICJhdG1lbCxhdDkxcm05MjAwLWNsay1tYXN0ZXIiOworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZwbWM+OworCQlpbnRlcnJ1cHRzID0gPDM+OworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCWF0bWVsLGNsay1vdXRwdXQtcmFuZ2UgPSA8MCAxMzMwMDAwMDA+OworCQlhdG1lbCxjbGstZGl2aXNvcnMgPSA8MSAyIDQgMD47CisJfTsKKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgcGVyaXBoZXJhbCBjbG9ja3M6CistICNzaXplLWNlbGxzIDogc2hhbGwgYmUgMCAocmVnIGlzIHVzZWQgdG8gZW5jb2RlIGNsayBpZCkuCistICNhZGRyZXNzLWNlbGxzIDogc2hhbGwgYmUgMSAocmVnIGlzIHVzZWQgdG8gZW5jb2RlIGNsayBpZCkuCistIGNsb2NrcyA6IHNoYWxsIGJlIHRoZSBtYXN0ZXIgY2xvY2sgcGhhbmRsZS4KKwllLmcuIGNsb2NrcyA9IDwmbWNrPjsKKy0gbmFtZTogZGV2aWNlIHRyZWUgbm9kZSBkZXNjcmliaW5nIGEgc3BlY2lmaWMgcGVyaXBoZXJhbCBjbG9jay4KKwkqICNjbG9jay1jZWxscyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IHNoYWxsIGJlIHNldCB0byAwLgorCSogcmVnOiBwZXJpcGhlcmFsIGlkLiBTZWUgQXRtZWwncyBkYXRhc2hlZXRzIHRvIGdldCBhIGZ1bGwKKwkgIGxpc3Qgb2YgcGVyaXBoZXJhbCBpZHMuCisJKiBhdG1lbCxjbGstb3V0cHV0LXJhbmdlIDogbWluaW11bSBhbmQgbWF4aW11bSBjbG9jayBmcmVxdWVuY3kKKwkgICh0d28gdTMyIGZpZWxkcykuIE9ubHkgdmFsaWQgb24gYXQ5MXNhbTl4NS1jbGstcGVyaXBoZXJhbAorCSAgY29tcGF0aWJsZSBJUHMuCisKK0ZvciBleGFtcGxlOgorCXBlcmlwaDogcGVyaXBoY2sgeworCQljb21wYXRpYmxlID0gImF0bWVsLGF0OTFzYW05eDUtY2xrLXBlcmlwaGVyYWwiOworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCWNsb2NrcyA9IDwmbWNrPjsKKworCQlzc2MwX2NsayB7CisJCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCQlyZWcgPSA8Mj47CisJCQlhdG1lbCxjbGstb3V0cHV0LXJhbmdlID0gPDAgMTMzMDAwMDAwPjsKKwkJfTsKKworCQl1c2FydDBfY2xrIHsKKwkJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJCXJlZyA9IDwzPjsKKwkJCWF0bWVsLGNsay1vdXRwdXQtcmFuZ2UgPSA8MCA2NjAwMDAwMD47CisJCX07CisJfTsKKworCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBwbGwgY2xvY2tzOgorLSBpbnRlcnJ1cHQtcGFyZW50IDogbXVzdCByZWZlcmVuY2UgdGhlIFBNQyBub2RlLgorLSBpbnRlcnJ1cHRzIDogc2hhbGwgYmUgc2V0IHRvICI8MT4iLgorLSAjY2xvY2stY2VsbHMgOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBzaGFsbCBiZSBzZXQgdG8gMC4KKy0gY2xvY2tzIDogc2hhbGwgYmUgdGhlIG1haW4gY2xvY2sgcGhhbmRsZS4KKy0gcmVnIDogcGxsIGlkLgorCTAgLT4gUExMIEEKKwkxIC0+IFBMTCBCCistIGF0bWVsLGNsay1pbnB1dC1yYW5nZSA6IG1pbmltdW0gYW5kIG1heGltdW0gc291cmNlIGNsb2NrIGZyZXF1ZW5jeSAodHdvIHUzMgorCQkJICBmaWVsZHMpLgorCSAgZS5nLiBpbnB1dCA9IDwxIDMyMDAwMDAwPjsgPD0+IDEgdG8gMzJNSHouCistICNhdG1lbCxwbGwtY2xrLW91dHB1dC1yYW5nZS1jZWxscyA6IG51bWJlciBvZiBjZWxscyByZXNlcnZlZCBmb3IgcGxsIG91dHB1dAorCQkJCSAgICAgIHJhbmdlIGRlc2NyaXB0aW9uLiBTb3VsZCBiZSBzZXQgdG8gMiwgMworCQkJCSAgICAgIG9yIDQuCisJKiAxc3QgYW5kIDJuZCBjZWxscyByZXByZXNlbnQgdGhlIGZyZXF1ZW5jeSByYW5nZSAobWluLW1heCkuCisJKiAzcmQgY2VsbCBpcyBvcHRpb25hbCBhbmQgcmVwcmVzZW50cyB0aGUgT1VUIGZpZWxkIHZhbHVlIGZvciB0aGUgZ2l2ZW4KKwkgIHJhbmdlLgorCSogNHRoIGNlbGwgaXMgb3B0aW9uYWwgYW5kIHJlcHJlc2VudHMgdGhlIElDUExMIGZpZWxkIChQTExJQ1BSCisJICByZWdpc3RlcikKKy0gYXRtZWwscGxsLWNsay1vdXRwdXQtcmFuZ2VzIDogcGxsIG91dHB1dCBmcmVxdWVuY3kgcmFuZ2VzICsgb3B0aW9uYWwgcGFyYW1ldGVyCisJCQkJZGVwZW5kaW5nIG9uICNhdG1lbCxwbGwtb3V0cHV0LXJhbmdlLWNlbGxzCisJCQkJcHJvcGVydHkgdmFsdWUuCisKK0ZvciBleGFtcGxlOgorCXBsbGE6IHBsbGFjayB7CisJCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXNhbTlnNDUtY2xrLXBsbCI7CisJCWludGVycnVwdC1wYXJlbnQgPSA8JnBtYz47CisJCWludGVycnVwdHMgPSA8MT47CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJY2xvY2tzID0gPCZtYWluPjsKKwkJcmVnID0gPDA+OworCQlhdG1lbCxjbGstaW5wdXQtcmFuZ2UgPSA8MjAwMDAwMCAzMjAwMDAwMD47CisJCSNhdG1lbCxwbGwtY2xrLW91dHB1dC1yYW5nZS1jZWxscyA9IDw0PjsKKwkJYXRtZWwscGxsLWNsay1vdXRwdXQtcmFuZ2VzID0gPDc0NTAwMDAwIDgwMDAwMDAwMCAwIDAKKwkJCQkJICAgICAgIDY5NTAwMDAwIDc1MDAwMDAwMCAxIDAKKwkJCQkJICAgICAgIDY0NTAwMDAwIDcwMDAwMDAwMCAyIDAKKwkJCQkJICAgICAgIDU5NTAwMDAwIDY1MDAwMDAwMCAzIDAKKwkJCQkJICAgICAgIDU0NTAwMDAwIDYwMDAwMDAwMCAwIDEKKwkJCQkJICAgICAgIDQ5NTAwMDAwIDU1MDAwMDAwMCAxIDEKKwkJCQkJICAgICAgIDQ0NTAwMDAwIDUwMDAwMDAwMCAyIDEKKwkJCQkJICAgICAgIDQwMDAwMDAwIDQ1MDAwMDAwMCAzIDE+OworCX07CisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHBsbGRpdiBjbG9ja3MgKHBsbGRpdiA9IHBsbCAvIDIpOgorLSAjY2xvY2stY2VsbHMgOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBzaGFsbCBiZSBzZXQgdG8gMC4KKy0gY2xvY2tzIDogc2hhbGwgYmUgdGhlIHBsbGEgY2xvY2sgcGhhbmRsZS4KKworVGhlIHBsbCBkaXZpc29yIGlzIGVxdWFsIHRvIDIgYW5kIGNhbm5vdCBiZSBjaGFuZ2VkLgorCitGb3IgZXhhbXBsZToKKwlwbGxhZGl2OiBwbGxhZGl2Y2sgeworCQljb21wYXRpYmxlID0gImF0bWVsLGF0OTFzYW05eDUtY2xrLXBsbGRpdiI7CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJY2xvY2tzID0gPCZwbGxhPjsKKwl9OworCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBwcm9ncmFtbWFibGUgY2xvY2tzOgorLSBpbnRlcnJ1cHQtcGFyZW50IDogbXVzdCByZWZlcmVuY2UgdGhlIFBNQyBub2RlLgorLSAjc2l6ZS1jZWxscyA6IHNoYWxsIGJlIDAgKHJlZyBpcyB1c2VkIHRvIGVuY29kZSBjbGsgaWQpLgorLSAjYWRkcmVzcy1jZWxscyA6IHNoYWxsIGJlIDEgKHJlZyBpcyB1c2VkIHRvIGVuY29kZSBjbGsgaWQpLgorLSBjbG9ja3MgOiBzaGFsbCBiZSB0aGUgcHJvZ3JhbW1hYmxlIGNsb2NrIHNvdXJjZSBwaGFuZGxlcy4KKwllLmcuIGNsb2NrcyA9IDwmY2xrMzJrPiwgPCZtYWluPiwgPCZwbGxhPiwgPCZwbGxiPjsKKy0gbmFtZTogZGV2aWNlIHRyZWUgbm9kZSBkZXNjcmliaW5nIGEgc3BlY2lmaWMgcHJvZyBjbG9jay4KKwkqICNjbG9jay1jZWxscyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IHNoYWxsIGJlIHNldCB0byAwLgorCSogcmVnIDogcHJvZ3JhbW1hYmxlIGNsb2NrIGlkIChyZWdpc3RlciBvZmZzZXQgZnJvbSAgUENLeAorCQkJIHJlZ2lzdGVyKS4KKwkqIGludGVycnVwdHMgOiBzaGFsbCBiZSBzZXQgdG8gIjwoOCArIGlkKT4iLgorCitGb3IgZXhhbXBsZToKKwlwcm9nOiBwcm9nY2sgeworCQljb21wYXRpYmxlID0gImF0bWVsLGF0OTFzYW05ZzQ1LWNsay1wcm9ncmFtbWFibGUiOworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JnBtYz47CisJCWNsb2NrcyA9IDwmY2xrMzJrPiwgPCZtYWluPiwgPCZwbGxhZGl2PiwgPCZ1dG1pPiwgPCZtY2s+OworCisJCXByb2cwIHsKKwkJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJCXJlZyA9IDwwPjsKKwkJCWludGVycnVwdHMgPSA8OD47CisJCX07CisKKwkJcHJvZzEgeworCQkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQkJcmVnID0gPDE+OworCQkJaW50ZXJydXB0cyA9IDw5PjsKKwkJfTsKKwl9OworCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHNtZCBjbG9jazoKKy0gI2Nsb2NrLWNlbGxzIDogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzsgc2hhbGwgYmUgc2V0IHRvIDAuCistIGNsb2NrcyA6IHNoYWxsIGJlIHRoZSBzbWQgY2xvY2sgc291cmNlIHBoYW5kbGVzLgorCWUuZy4gY2xvY2tzID0gPCZwbGxhZGl2PiwgPCZ1dG1pPjsKKworRm9yIGV4YW1wbGU6CisJc21kOiBzbWRjayB7CisJCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXNhbTl4NS1jbGstc21kIjsKKwkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQljbG9ja3MgPSA8JnBsbGFkaXY+LCA8JnV0bWk+OworCX07CisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHN5c3RlbSBjbG9ja3M6CistICNzaXplLWNlbGxzIDogc2hhbGwgYmUgMCAocmVnIGlzIHVzZWQgdG8gZW5jb2RlIGNsayBpZCkuCistICNhZGRyZXNzLWNlbGxzIDogc2hhbGwgYmUgMSAocmVnIGlzIHVzZWQgdG8gZW5jb2RlIGNsayBpZCkuCistIG5hbWU6IGRldmljZSB0cmVlIG5vZGUgZGVzY3JpYmluZyBhIHNwZWNpZmljIHN5c3RlbSBjbG9jay4KKwkqICNjbG9jay1jZWxscyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IHNoYWxsIGJlIHNldCB0byAwLgorCSogcmVnOiBzeXN0ZW0gY2xvY2sgaWQgKGJpdCBwb3NpdGlvbiBpbiBTQ0VSL1NDRFIvU0NTUiByZWdpc3RlcnMpLgorCSAgICAgIFNlZSBBdG1lbCdzIGRhdGFzaGVldCB0byBnZXQgYSBmdWxsIGxpc3Qgb2Ygc3lzdGVtIGNsb2NrIGlkcy4KKworRm9yIGV4YW1wbGU6CisJc3lzdGVtOiBzeXN0ZW1jayB7CisJCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXJtOTIwMC1jbGstc3lzdGVtIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCisJCWRkcmNrIHsKKwkJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJCXJlZyA9IDwyPjsKKwkJCWNsb2NrcyA9IDwmbWNrPjsKKwkJfTsKKworCQl1aHBjayB7CisJCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCQlyZWcgPSA8Nj47CisJCQljbG9ja3MgPSA8JnVzYj47CisJCX07CisKKwkJdWRwY2sgeworCQkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQkJcmVnID0gPDc+OworCQkJY2xvY2tzID0gPCZ1c2I+OworCQl9OworCX07CisKKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgdXNiIGNsb2NrOgorLSAjY2xvY2stY2VsbHMgOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBzaGFsbCBiZSBzZXQgdG8gMC4KKy0gY2xvY2tzIDogc2hhbGwgYmUgdGhlIHNtZCBjbG9jayBzb3VyY2UgcGhhbmRsZXMuCisJZS5nLiBjbG9ja3MgPSA8JnBsbGI+OworLSBhdG1lbCxjbGstZGl2aXNvcnMgKG9ubHkgYXZhaWxhYmxlIGZvciAiYXRtZWwsYXQ5MXJtOTIwMC1jbGstdXNiIik6CisJdXNiIGNsb2NrIGRpdmlzb3IgdGFibGUuCisJZS5nLiBkaXZpc29ycyA9IDwxIDIgNCAwPjsKKworRm9yIGV4YW1wbGU6CisJdXNiOiB1c2JjayB7CisJCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXNhbTl4NS1jbGstdXNiIjsKKwkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQljbG9ja3MgPSA8JnBsbGFkaXY+LCA8JnV0bWk+OworCX07CisKKwl1c2I6IHVzYmNrIHsKKwkJY29tcGF0aWJsZSA9ICJhdG1lbCxhdDkxcm05MjAwLWNsay11c2IiOworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCWNsb2NrcyA9IDwmcGxsYj47CisJCWF0bWVsLGNsay1kaXZpc29ycyA9IDwxIDIgNCAwPjsKKwl9OworCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHV0bWkgY2xvY2s6CistIGludGVycnVwdC1wYXJlbnQgOiBtdXN0IHJlZmVyZW5jZSB0aGUgUE1DIG5vZGUuCistIGludGVycnVwdHMgOiBzaGFsbCBiZSBzZXQgdG8gIjxBVDkxX1BNQ19MT0NLVSBJUlFfVFlQRV9MRVZFTF9ISUdIPiIuCistICNjbG9jay1jZWxscyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IHNoYWxsIGJlIHNldCB0byAwLgorLSBjbG9ja3MgOiBzaGFsbCBiZSB0aGUgbWFpbiBjbG9jayBzb3VyY2UgcGhhbmRsZS4KKworRm9yIGV4YW1wbGU6CisJdXRtaTogdXRtaWNrIHsKKwkJY29tcGF0aWJsZSA9ICJhdG1lbCxhdDkxc2FtOXg1LWNsay11dG1pIjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmcG1jPjsKKwkJaW50ZXJydXB0cyA9IDxBVDkxX1BNQ19MT0NLVSBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQljbG9ja3MgPSA8Jm1haW4+OworCX07CisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIDMyIGJpdHMgYnVzIE1hdHJpeCBjbG9jayAoaDMybXggY2xvY2spOgorLSAjY2xvY2stY2VsbHMgOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBzaGFsbCBiZSBzZXQgdG8gMC4KKy0gY2xvY2tzIDogc2hhbGwgYmUgdGhlIG1hc3RlciBjbG9jayBzb3VyY2UgcGhhbmRsZS4KKworRm9yIGV4YW1wbGU6CisJaDMyY2s6IGgzMm14Y2sgeworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCWNvbXBhdGlibGUgPSAiYXRtZWwsc2FtYTVkNC1jbGstaDMybXgiOworCQljbG9ja3MgPSA8Jm1jaz47CisJfTsKKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgZ2VuZXJhdGVkIGNsb2NrczoKKy0gI3NpemUtY2VsbHMgOiBzaGFsbCBiZSAwIChyZWcgaXMgdXNlZCB0byBlbmNvZGUgY2xrIGlkKS4KKy0gI2FkZHJlc3MtY2VsbHMgOiBzaGFsbCBiZSAxIChyZWcgaXMgdXNlZCB0byBlbmNvZGUgY2xrIGlkKS4KKy0gY2xvY2tzIDogc2hhbGwgYmUgdGhlIGdlbmVyYXRlZCBjbG9jayBzb3VyY2UgcGhhbmRsZXMuCisJZS5nLiBjbG9ja3MgPSA8JmNsazMyaz4sIDwmbWFpbj4sIDwmcGxsYWRpdj4sIDwmdXRtaT4sIDwmbWNrPiwgPCZhdWRpb19wbGxfcG1jPjsKKy0gbmFtZTogZGV2aWNlIHRyZWUgbm9kZSBkZXNjcmliaW5nIGEgc3BlY2lmaWMgZ2VuZXJhdGVkIGNsb2NrLgorCSogI2Nsb2NrLWNlbGxzIDogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzsgc2hhbGwgYmUgc2V0IHRvIDAuCisJKiByZWc6IHBlcmlwaGVyYWwgaWQuIFNlZSBBdG1lbCdzIGRhdGFzaGVldHMgdG8gZ2V0IGEgZnVsbAorCSAgbGlzdCBvZiBwZXJpcGhlcmFsIGlkcy4KKwkqIGF0bWVsLGNsay1vdXRwdXQtcmFuZ2UgOiBtaW5pbXVtIGFuZCBtYXhpbXVtIGNsb2NrIGZyZXF1ZW5jeQorCSAgKHR3byB1MzIgZmllbGRzKS4KKworRm9yIGV4YW1wbGU6CisJZ2NrIHsKKwkJY29tcGF0aWJsZSA9ICJhdG1lbCxzYW1hNWQyLWNsay1nZW5lcmF0ZWQiOworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJCWNsb2NrcyA9IDwmY2xrMzJrPiwgPCZtYWluPiwgPCZwbGxhZGl2PiwgPCZ1dG1pPiwgPCZtY2s+LCA8JmF1ZGlvX3BsbF9wbWM+OworCisJCXRjYjBfZ2NsazogdGNiMF9nY2xrIHsKKwkJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJCXJlZyA9IDwzNT47CisJCQlhdG1lbCxjbGstb3V0cHV0LXJhbmdlID0gPDAgODMwMDAwMDA+OworCQl9OworCisJCXB3bV9nY2xrOiBwd21fZ2NsayB7CisJCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCQlyZWcgPSA8Mzg+OworCQkJYXRtZWwsY2xrLW91dHB1dC1yYW5nZSA9IDwwIDgzMDAwMDAwPjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2F4aS1jbGtnZW4udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2F4aS1jbGtnZW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwZTE3MDQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svYXhpLWNsa2dlbi50eHQKQEAgLTAsMCArMSwyMiBAQAorQmluZGluZyBmb3IgdGhlIGF4aS1jbGtnZW4gY2xvY2sgZ2VuZXJhdG9yCisKK1RoaXMgYmluZGluZyB1c2VzIHRoZSBjb21tb24gY2xvY2sgYmluZGluZ1sxXS4KKworWzFdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNoYWxsIGJlICJhZGksYXhpLWNsa2dlbi0xLjAwLmEiIG9yICJhZGksYXhpLWNsa2dlbi0yLjAwLmEiLgorLSAjY2xvY2stY2VsbHMgOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBTaG91bGQgYWx3YXlzIGJlIHNldCB0byAwLgorLSByZWcgOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGF4aS1jbGtnZW4gcmVnaXN0ZXIgc2V0LgorLSBjbG9ja3MgOiBQaGFuZGxlIGFuZCBjbG9jayBzcGVjaWZpZXIgZm9yIHRoZSBwYXJlbnQgY2xvY2suCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrLW91dHB1dC1uYW1lcyA6IEZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmcuCisKK0V4YW1wbGU6CisJY2xvY2tAMHhmZjAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiYWRpLGF4aS1jbGtnZW4iOworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCXJlZyA9IDwweGZmMDAwMDAwIDB4MTAwMD47CisJCWNsb2NrcyA9IDwmb3NjIDE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svYnJjbSxiY20yODM1LWNwcm1hbi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svYnJjbSxiY20yODM1LWNwcm1hbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU2YTFkZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9icmNtLGJjbTI4MzUtY3BybWFuLnR4dApAQCAtMCwwICsxLDQ1IEBACitCcm9hZGNvbSBCQ00yODM1IENQUk1BTiBjbG9ja3MKKworVGhpcyBiaW5kaW5nIHVzZXMgdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nOgorICAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKKworVGhlIENQUk1BTiBjbG9jayBjb250cm9sbGVyIGdlbmVyYXRlcyBjbG9ja3MgaW4gdGhlIGF1ZGlvIHBvd2VyIGRvbWFpbgorb2YgdGhlIEJDTTI4MzUuICBUaGVyZSBpcyBhIGxldmVsIG9mIFBMTHMgZGVyaXZpbmcgZnJvbSBhbiBleHRlcm5hbAorb3NjaWxsYXRvciwgYSBsZXZlbCBvZiBQTEwgZGl2aWRlcnMgdGhhdCBwcm9kdWNlIGNoYW5uZWxzIG9mZiBvZiB0aGUKK2ZldyBQTExzLCBhbmQgYSBsZXZlbCBvZiBtb3N0bHktZ2VuZXJpYyBjbG9jayBnZW5lcmF0b3JzIHNvdXJjaW5nIGZyb20KK3RoZSBQTEwgY2hhbm5lbHMuICBNb3N0IG90aGVyIGhhcmR3YXJlIGNvbXBvbmVudHMgc291cmNlIGZyb20gdGhlCitjbG9jayBnZW5lcmF0b3JzLCBidXQgYSBmZXcgKGxpa2UgdGhlIEFSTSBvciBIRE1JKSB3aWxsIHNvdXJjZSBmcm9tCit0aGUgUExMIGRpdmlkZXJzIGRpcmVjdGx5LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOglTaG91bGQgYmUgImJyY20sYmNtMjgzNS1jcHJtYW4iCistICNjbG9jay1jZWxsczoJU2hvdWxkIGJlIDwxPi4gVGhlIHBlcm1pdHRlZCBjbG9jay1zcGVjaWZpZXIgdmFsdWVzIGNhbiBiZQorCQkgIGZvdW5kIGluIGluY2x1ZGUvZHQtYmluZGluZ3MvY2xvY2svYmNtMjgzNS5oCistIHJlZzoJCVNwZWNpZmllcyBiYXNlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIHJlZ2lzdGVycworLSBjbG9ja3M6CVRoZSBleHRlcm5hbCBvc2NpbGxhdG9yIGNsb2NrIHBoYW5kbGUKKworRXhhbXBsZToKKworCWNsa19vc2M6IGNsb2NrQDMgeworCQljb21wYXRpYmxlID0gImZpeGVkLWNsb2NrIjsKKwkJcmVnID0gPDM+OworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJvc2MiOworCQljbG9jay1mcmVxdWVuY3kgPSA8MTkyMDAwMDA+OworCX07CisKKwljbG9ja3M6IGNwcm1hbkA3ZTEwMTAwMCB7CisJCWNvbXBhdGlibGUgPSAiYnJjbSxiY20yODM1LWNwcm1hbiI7CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKwkJcmVnID0gPDB4N2UxMDEwMDAgMHgyMDAwPjsKKwkJY2xvY2tzID0gPCZjbGtfb3NjPjsKKwl9OworCisJaTJjMDogaTJjQDdlMjA1MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJicmNtLGJjbTI4MzUtaTJjIjsKKwkJcmVnID0gPDB4N2UyMDUwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwyIDIxPjsKKwkJY2xvY2tzID0gPCZjbG9ja3MgQkNNMjgzNV9DTE9DS19WUFU+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9icmNtLGlwcm9jLWNsb2Nrcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svYnJjbSxpcHJvYy1jbG9ja3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZTY1YTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svYnJjbSxpcHJvYy1jbG9ja3MudHh0CkBAIC0wLDAgKzEsMjEwIEBACitCcm9hZGNvbSBpUHJvYyBGYW1pbHkgQ2xvY2tzCisKK1RoaXMgYmluZGluZyB1c2VzIHRoZSBjb21tb24gY2xvY2sgYmluZGluZzoKKyAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CisKK1RoZSBpUHJvYyBjbG9jayBjb250cm9sbGVyIG1hbmFnZXMgY2xvY2tzIHRoYXQgYXJlIGNvbW1vbiB0byB0aGUgaVByb2MgZmFtaWx5LgorQW4gU29DIGZyb20gdGhlIGlQcm9jIGZhbWlseSBtYXkgaGF2ZSBzZXZlcmFsIFBQTHMsIGUuZy4sIEFSTVBMTCwgR0VOUExMLAorTENQTEwwLCBNSVBJUExMLCBhbmQgZXRjLiwgYWxsIGRlcml2ZWQgZnJvbSBhbiBvbmJvYXJkIGNyeXN0YWwuIEVhY2ggUExMCitjb21wcmlzZXMgb2Ygc2V2ZXJhbCBsZWFmIGNsb2NrcworCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBhIFBMTCBhbmQgaXRzIGxlYWYgY2xvY2tzOgorCistIGNvbXBhdGlibGU6CisgICAgU2hvdWxkIGhhdmUgYSB2YWx1ZSBvZiB0aGUgZm9ybSAiYnJjbSw8c29jPi08cGxsPiIuIEZvciBleGFtcGxlLCBHRU5QTEwgb24KK0N5Z251cyBoYXMgYSBjb21wYXRpYmxlIHN0cmluZyBvZiAiYnJjbSxjeWdudXMtZ2VucGxsIgorCistICNjbG9jay1jZWxsczoKKyAgICBIYXZlIGEgdmFsdWUgb2YgPDE+IHNpbmNlIHRoZXJlIGFyZSBtb3JlIHRoYW4gMSBsZWFmIGNsb2NrIG9mIGEgZ2l2ZW4gUExMCisKKy0gcmVnOgorICAgIERlZmluZSB0aGUgYmFzZSBhbmQgcmFuZ2Ugb2YgdGhlIEkvTyBhZGRyZXNzIHNwYWNlIHRoYXQgY29udGFpbiB0aGUgaVByb2MKK2Nsb2NrIGNvbnRyb2wgcmVnaXN0ZXJzIHJlcXVpcmVkIGZvciB0aGUgUExMCisKKy0gY2xvY2tzOgorICAgIFRoZSBpbnB1dCBwYXJlbnQgY2xvY2sgcGhhbmRsZSBmb3IgdGhlIFBMTC4gRm9yIG1vc3QgaVByb2MgUExMcywgdGhpcyBpcyBhbgorb25ib2FyZCBjcnlzdGFsIHdpdGggYSBmaXhlZCByYXRlCisKKy0gY2xvY2stb3V0cHV0LW5hbWVzOgorICAgIEFuIG9yZGVyZWQgbGlzdCBvZiBzdHJpbmdzIGRlZmluaW5nIHRoZSBuYW1lcyBvZiB0aGUgY2xvY2tzCisKK0V4YW1wbGU6CisKKwlvc2M6IG9zY2lsbGF0b3IgeworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCWNvbXBhdGlibGUgPSAiZml4ZWQtY2xvY2siOworCQljbG9jay1mcmVxdWVuY3kgPSA8MjUwMDAwMDA+OworCX07CisKKwlnZW5wbGw6IGdlbnBsbCB7CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKwkJY29tcGF0aWJsZSA9ICJicmNtLGN5Z251cy1nZW5wbGwiOworCQlyZWcgPSA8MHgwMzAxZDAwMCAweDJjPiwgPDB4MDMwMWMwMjAgMHg0PjsKKwkJY2xvY2tzID0gPCZvc2M+OworCQljbG9jay1vdXRwdXQtbmFtZXMgPSAiZ2VucGxsIiwgImF4aTIxIiwgIjI1MG1oeiIsICJpaG9zdF9zeXMiLAorCQkJCSAgICAgImVuZXRfc3ciLCAiYXVkaW9fMTI1IiwgImNhbiI7CisJfTsKKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgQVNJVSBjbG9ja3M6CisKK0FTSVUgY2xvY2tzIGFyZSBhIHNwZWNpYWwgY2FzZS4gVGhlc2UgY2xvY2tzIGFyZSBkZXJpdmVkIGRpcmVjdGx5IGZyb20gdGhlCityZWZlcmVuY2UgY2xvY2sgb2YgdGhlIG9uYm9hcmQgY3J5c3RhbAorCistIGNvbXBhdGlibGU6CisgICAgU2hvdWxkIGhhdmUgYSB2YWx1ZSBvZiB0aGUgZm9ybSAiYnJjbSw8c29jPi1hc2l1LWNsayIuIEZvciBleGFtcGxlLCBBU0lVCitjbG9ja3MgZm9yIEN5Z251cyBoYXZlIGEgY29tcGF0aWJsZSBzdHJpbmcgb2YgImJyY20sY3lnbnVzLWFzaXUtY2xrIgorCistICNjbG9jay1jZWxsczoKKyAgICBIYXZlIGEgdmFsdWUgb2YgPDE+IHNpbmNlIHRoZXJlIGFyZSBtb3JlIHRoYW4gMSBBU0lVIGNsb2NrcworCistIHJlZzoKKyAgICBEZWZpbmUgdGhlIGJhc2UgYW5kIHJhbmdlIG9mIHRoZSBJL08gYWRkcmVzcyBzcGFjZSB0aGF0IGNvbnRhaW4gdGhlIGlQcm9jCitjbG9jayBjb250cm9sIHJlZ2lzdGVycyByZXF1aXJlZCBmb3IgQVNJVSBjbG9ja3MKKworLSBjbG9ja3M6CisgICAgVGhlIGlucHV0IHBhcmVudCBjbG9jayBwaGFuZGxlIGZvciB0aGUgQVNJVSBjbG9jaywgaS5lLiwgdGhlIG9uYm9hcmQKK2NyeXN0YWwKKworLSBjbG9jay1vdXRwdXQtbmFtZXM6CisgICAgQW4gb3JkZXJlZCBsaXN0IG9mIHN0cmluZ3MgZGVmaW5pbmcgdGhlIG5hbWVzIG9mIHRoZSBBU0lVIGNsb2NrcworCitFeGFtcGxlOgorCisJb3NjOiBvc2NpbGxhdG9yIHsKKwkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQljb21wYXRpYmxlID0gImZpeGVkLWNsb2NrIjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDI1MDAwMDAwPjsKKwl9OworCisJYXNpdV9jbGtzOiBhc2l1X2Nsa3MgeworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJCWNvbXBhdGlibGUgPSAiYnJjbSxjeWdudXMtYXNpdS1jbGsiOworCQlyZWcgPSA8MHgwMzAxZDA0OCAweGM+LCA8MHgxODBhYTAyNCAweDQ+OworCQljbG9ja3MgPSA8Jm9zYz47CisJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJrZXlwYWQiLCAiYWRjL3RvdWNoIiwgInB3bSI7CisJfTsKKworQ3lnbnVzCistLS0tLS0KK1BMTCBhbmQgbGVhZiBjbG9jayBjb21wYXRpYmxlIHN0cmluZ3MgZm9yIEN5Z251cyBhcmU6CisgICAgImJyY20sY3lnbnVzLWFybXBsbCIKKyAgICAiYnJjbSxjeWdudXMtZ2VucGxsIgorICAgICJicmNtLGN5Z251cy1sY3BsbDAiCisgICAgImJyY20sY3lnbnVzLW1pcGlwbGwiCisgICAgImJyY20sY3lnbnVzLWFzaXUtY2xrIgorCitUaGUgZm9sbG93aW5nIHRhYmxlIGRlZmluZXMgdGhlIHNldCBvZiBQTEwvY2xvY2sgaW5kZXggYW5kIElEIGZvciBDeWdudXMuCitUaGVzZSBjbG9jayBJRHMgYXJlIGRlZmluZWQgaW46CisgICAgImluY2x1ZGUvZHQtYmluZGluZ3MvY2xvY2svYmNtLWN5Z251cy5oIgorCisgICAgQ2xvY2sgICAgICBTb3VyY2UgKFBhcmVudCkgIEluZGV4ICAgSUQKKyAgICAtLS0gICAgICAgIC0tLS0tICAgICAgICAgICAgLS0tLS0gICAtLS0tLS0tLS0KKyAgICBjcnlzdGFsICAgIE4vQSAgICAgICAgICAgICAgTi9BICAgICBOL0EKKworICAgIGFybXBsbCAgICAgY3J5c3RhbCAgICAgICAgICBOL0EgICAgIE4vQQorCisgICAga2V5cGFkICAgICBjcnlzdGFsIChBU0lVKSAgIDAgICAgICAgQkNNX0NZR05VU19BU0lVX0tFWVBBRF9DTEsKKyAgICBhZGMvdHNjICAgIGNyeXN0YWwgKEFTSVUpICAgMSAgICAgICBCQ01fQ1lHTlVTX0FTSVVfQURDX0NMSworICAgIHB3bSAgICAgICAgY3J5c3RhbCAoQVNJVSkgICAyICAgICAgIEJDTV9DWUdOVVNfQVNJVV9QV01fQ0xLCisKKyAgICBnZW5wbGwgICAgIGNyeXN0YWwgICAgICAgICAgMCAgICAgICBCQ01fQ1lHTlVTX0dFTlBMTAorICAgIGF4aTIxICAgICAgZ2VucGxsICAgICAgICAgICAxICAgICAgIEJDTV9DWUdOVVNfR0VOUExMX0FYSTIxX0NMSworICAgIDI1MG1oeiAgICAgZ2VucGxsICAgICAgICAgICAyICAgICAgIEJDTV9DWUdOVVNfR0VOUExMXzI1ME1IWl9DTEsKKyAgICBpaG9zdF9zeXMgIGdlbnBsbCAgICAgICAgICAgMyAgICAgICBCQ01fQ1lHTlVTX0dFTlBMTF9JSE9TVF9TWVNfQ0xLCisgICAgZW5ldF9zdyAgICBnZW5wbGwgICAgICAgICAgIDQgICAgICAgQkNNX0NZR05VU19HRU5QTExfRU5FVF9TV19DTEsKKyAgICBhdWRpb18xMjUgIGdlbnBsbCAgICAgICAgICAgNSAgICAgICBCQ01fQ1lHTlVTX0dFTlBMTF9BVURJT18xMjVfQ0xLCisgICAgY2FuICAgICAgICBnZW5wbGwgICAgICAgICAgIDYgICAgICAgQkNNX0NZR05VU19HRU5QTExfQ0FOX0NMSworCisgICAgbGNwbGwwICAgICBjcnlzdGFsICAgICAgICAgIDAgICAgICAgQkNNX0NZR05VU19MQ1BMTDAKKyAgICBwY2llX3BoeSAgIGxjcGxsMCAgICAgICAgICAgMSAgICAgICBCQ01fQ1lHTlVTX0xDUExMMF9QQ0lFX1BIWV9SRUZfQ0xLCisgICAgZGRyX3BoeSAgICBsY3BsbDAgICAgICAgICAgIDIgICAgICAgQkNNX0NZR05VU19MQ1BMTDBfRERSX1BIWV9DTEsKKyAgICBzZGlvICAgICAgIGxjcGxsMCAgICAgICAgICAgMyAgICAgICBCQ01fQ1lHTlVTX0xDUExMMF9TRElPX0NMSworICAgIHVzYl9waHkgICAgbGNwbGwwICAgICAgICAgICA0ICAgICAgIEJDTV9DWUdOVVNfTENQTEwwX1VTQl9QSFlfUkVGX0NMSworICAgIHNtYXJ0X2NhcmQgbGNwbGwwICAgICAgICAgICA1ICAgICAgIEJDTV9DWUdOVVNfTENQTEwwX1NNQVJUX0NBUkRfQ0xLCisgICAgY2g1X3VudXNlZCBsY3BsbDAgICAgICAgICAgIDYgICAgICAgQkNNX0NZR05VU19MQ1BMTDBfQ0g1X1VOVVNFRAorCisgICAgbWlwaXBsbCAgICBjcnlzdGFsICAgICAgICAgIDAgICAgICAgQkNNX0NZR05VU19NSVBJUExMCisgICAgY2gwX3VudXNlZCBtaXBpcGxsICAgICAgICAgIDEgICAgICAgQkNNX0NZR05VU19NSVBJUExMX0NIMF9VTlVTRUQKKyAgICBjaDFfbGNkICAgIG1pcGlwbGwgICAgICAgICAgMiAgICAgICBCQ01fQ1lHTlVTX01JUElQTExfQ0gxX0xDRAorICAgIGNoMl92M2QgICAgbWlwaXBsbCAgICAgICAgICAzICAgICAgIEJDTV9DWUdOVVNfTUlQSVBMTF9DSDJfVjNECisgICAgY2gzX3VudXNlZCBtaXBpcGxsICAgICAgICAgIDQgICAgICAgQkNNX0NZR05VU19NSVBJUExMX0NIM19VTlVTRUQKKyAgICBjaDRfdW51c2VkIG1pcGlwbGwgICAgICAgICAgNSAgICAgICBCQ01fQ1lHTlVTX01JUElQTExfQ0g0X1VOVVNFRAorICAgIGNoNV91bnVzZWQgbWlwaXBsbCAgICAgICAgICA2ICAgICAgIEJDTV9DWUdOVVNfTUlQSVBMTF9DSDVfVU5VU0VECisKK05vcnRoc3RhciBhbmQgTm9ydGhzdGFyIFBsdXMKKy0tLS0tLQorUExMIGFuZCBsZWFmIGNsb2NrIGNvbXBhdGlibGUgc3RyaW5ncyBmb3IgTm9ydGhzdGFyIGFuZCBOb3J0aHN0YXIgUGx1cyBhcmU6CisgImJyY20sbnNwLWFybXBsbCIKKyAiYnJjbSxuc3AtZ2VucGxsIgorICJicmNtLG5zcC1sY3BsbDAiCisKK1RoZSBmb2xsb3dpbmcgdGFibGUgZGVmaW5lcyB0aGUgc2V0IG9mIFBMTC9jbG9jayBpbmRleCBhbmQgSUQgZm9yIE5vcnRoc3RhciBhbmQKK05vcnRoc3RhciBQbHVzLiAgVGhlc2UgY2xvY2sgSURzIGFyZSBkZWZpbmVkIGluOgorICAgICJpbmNsdWRlL2R0LWJpbmRpbmdzL2Nsb2NrL2JjbS1uc3AuaCIKKworICAgIENsb2NrCVNvdXJjZQkJSW5kZXgJSUQKKyAgICAtLS0JCS0tLS0tCQktLS0tLQktLS0tLS0tLS0KKyAgICBjcnlzdGFsCU4vQQkJTi9BCU4vQQorCisgICAgYXJtcGxsCWNyeXN0YWwJCU4vQQlOL0EKKworICAgIGdlbnBsbAljcnlzdGFsCQkwCUJDTV9OU1BfR0VOUExMCisgICAgcGh5CQlnZW5wbGwJCTEJQkNNX05TUF9HRU5QTExfUEhZX0NMSworICAgIGV0aGVybmV0Y2xrCWdlbnBsbAkJMglCQ01fTlNQX0dFTlBMTF9FTkVUX1NXX0NMSworICAgIHVzYmNsawlnZW5wbGwJCTMJQkNNX05TUF9HRU5QTExfVVNCX1BIWV9SRUZfQ0xLCisgICAgaXByb2NmYXN0CWdlbnBsbAkJNAlCQ01fTlNQX0dFTlBMTF9JUFJPQ0ZBU1RfQ0xLCisgICAgc2F0YTEJZ2VucGxsCQk1CUJDTV9OU1BfR0VOUExMX1NBVEExX0NMSworICAgIHNhdGEyCWdlbnBsbAkJNglCQ01fTlNQX0dFTlBMTF9TQVRBMl9DTEsKKworICAgIGxjcGxsMAljcnlzdGFsCQkwCUJDTV9OU1BfTENQTEwwCisgICAgcGNpZV9waHkJbGNwbGwwCQkxCUJDTV9OU1BfTENQTEwwX1BDSUVfUEhZX1JFRl9DTEsKKyAgICBzZGlvCWxjcGxsMAkJMglCQ01fTlNQX0xDUExMMF9TRElPX0NMSworICAgIGRkcl9waHkJbGNwbGwwCQkzCUJDTV9OU1BfTENQTEwwX0REUl9QSFlfQ0xLCisKK05vcnRoc3RhciAyCistLS0tLS0tLS0tLQorUExMIGFuZCBsZWFmIGNsb2NrIGNvbXBhdGlibGUgc3RyaW5ncyBmb3IgTm9ydGhzdGFyIDIgYXJlOgorICAgICJicmNtLG5zMi1nZW5wbGwtc2NyIgorICAgICJicmNtLG5zMi1nZW5wbGwtc3ciCisgICAgImJyY20sbnMyLWxjcGxsLWRkciIKKyAgICAiYnJjbSxuczItbGNwbGwtcG9ydHMiCisKK1RoZSBmb2xsb3dpbmcgdGFibGUgZGVmaW5lcyB0aGUgc2V0IG9mIFBMTC9jbG9jayBpbmRleCBhbmQgSUQgZm9yIE5vcnRoc3RhciAyLgorVGhlc2UgY2xvY2sgSURzIGFyZSBkZWZpbmVkIGluOgorICAgICJpbmNsdWRlL2R0LWJpbmRpbmdzL2Nsb2NrL2JjbS1uczIuaCIKKworICAgIENsb2NrCVNvdXJjZQkJSW5kZXgJSUQKKyAgICAtLS0JCS0tLS0tCQktLS0tLQktLS0tLS0tLS0KKyAgICBjcnlzdGFsCU4vQQkJTi9BCU4vQQorCisgICAgZ2VucGxsX3NjcgljcnlzdGFsCQkwCUJDTV9OUzJfR0VOUExMX1NDUgorICAgIHNjcgkJZ2VucGxsX3NjcgkxCUJDTV9OUzJfR0VOUExMX1NDUl9TQ1JfQ0xLCisgICAgZnMJCWdlbnBsbF9zY3IJMglCQ01fTlMyX0dFTlBMTF9TQ1JfRlNfQ0xLCisgICAgYXVkaW9fcmVmCWdlbnBsbF9zY3IJMwlCQ01fTlMyX0dFTlBMTF9TQ1JfQVVESU9fQ0xLCisgICAgY2gzX3VudXNlZAlnZW5wbGxfc2NyCTQJQkNNX05TMl9HRU5QTExfU0NSX0NIM19VTlVTRUQKKyAgICBjaDRfdW51c2VkCWdlbnBsbF9zY3IJNQlCQ01fTlMyX0dFTlBMTF9TQ1JfQ0g0X1VOVVNFRAorICAgIGNoNV91bnVzZWQJZ2VucGxsX3Njcgk2CUJDTV9OUzJfR0VOUExMX1NDUl9DSDVfVU5VU0VECisKKyAgICBnZW5wbGxfc3cJY3J5c3RhbAkJMAlCQ01fTlMyX0dFTlBMTF9TVworICAgIHJwZQkJZ2VucGxsX3N3CTEJQkNNX05TMl9HRU5QTExfU1dfUlBFX0NMSworICAgIDI1MAkJZ2VucGxsX3N3CTIJQkNNX05TMl9HRU5QTExfU1dfMjUwX0NMSworICAgIG5pYwkJZ2VucGxsX3N3CTMJQkNNX05TMl9HRU5QTExfU1dfTklDX0NMSworICAgIGNoaW1wCWdlbnBsbF9zdwk0CUJDTV9OUzJfR0VOUExMX1NXX0NISU1QX0NMSworICAgIHBvcnQJZ2VucGxsX3N3CTUJQkNNX05TMl9HRU5QTExfU1dfUE9SVF9DTEsKKyAgICBzZGlvCWdlbnBsbF9zdwk2CUJDTV9OUzJfR0VOUExMX1NXX1NESU9fQ0xLCisKKyAgICBsY3BsbF9kZHIJY3J5c3RhbAkJMAlCQ01fTlMyX0xDUExMX0REUgorICAgIHBjaWVfc2F0YV91c2IgbGNwbGxfZGRyCTEJQkNNX05TMl9MQ1BMTF9ERFJfUENJRV9TQVRBX1VTQl9DTEsKKyAgICBkZHIJCWxjcGxsX2RkcgkyCUJDTV9OUzJfTENQTExfRERSX0REUl9DTEsKKyAgICBjaDJfdW51c2VkCWxjcGxsX2RkcgkzCUJDTV9OUzJfTENQTExfRERSX0NIMl9VTlVTRUQKKyAgICBjaDNfdW51c2VkCWxjcGxsX2Rkcgk0CUJDTV9OUzJfTENQTExfRERSX0NIM19VTlVTRUQKKyAgICBjaDRfdW51c2VkCWxjcGxsX2Rkcgk1CUJDTV9OUzJfTENQTExfRERSX0NINF9VTlVTRUQKKyAgICBjaDVfdW51c2VkCWxjcGxsX2Rkcgk2CUJDTV9OUzJfTENQTExfRERSX0NINV9VTlVTRUQKKworICAgIGxjcGxsX3BvcnRzCWNyeXN0YWwJCTAJQkNNX05TMl9MQ1BMTF9QT1JUUworICAgIHdhbgkJbGNwbGxfcG9ydHMJMQlCQ01fTlMyX0xDUExMX1BPUlRTX1dBTl9DTEsKKyAgICByZ21paQlsY3BsbF9wb3J0cwkyCUJDTV9OUzJfTENQTExfUE9SVFNfUkdNSUlfQ0xLCisgICAgY2gyX3VudXNlZAlsY3BsbF9wb3J0cwkzCUJDTV9OUzJfTENQTExfUE9SVFNfQ0gyX1VOVVNFRAorICAgIGNoM191bnVzZWQJbGNwbGxfcG9ydHMJNAlCQ01fTlMyX0xDUExMX1BPUlRTX0NIM19VTlVTRUQKKyAgICBjaDRfdW51c2VkCWxjcGxsX3BvcnRzCTUJQkNNX05TMl9MQ1BMTF9QT1JUU19DSDRfVU5VU0VECisgICAgY2g1X3VudXNlZAlsY3BsbF9wb3J0cwk2CUJDTV9OUzJfTENQTExfUE9SVFNfQ0g1X1VOVVNFRApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2JyY20sa29uYS1jY3UudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2JyY20sa29uYS1jY3UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyODZlMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svYnJjbSxrb25hLWNjdS50eHQKQEAgLTAsMCArMSwxMzkgQEAKK0Jyb2FkY29tIEtvbmEgRmFtaWx5IENsb2NrcworCitUaGlzIGJpbmRpbmcgaXMgYXNzb2NpYXRlZCB3aXRoIEJyb2FkY29tIFNvQ3MgaGF2aW5nICJLb25hIiBzdHlsZQorY2xvY2sgY29udHJvbCB1bml0cyAoQ0NVcykuICBBIENDVSBpcyBhIGNsb2NrIHByb3ZpZGVyIHRoYXQgbWFuYWdlcworYSBzZXQgb2YgY2xvY2sgc2lnbmFscy4gIEVhY2ggQ0NVIGlzIHJlcHJlc2VudGVkIGJ5IGEgbm9kZSBpbiB0aGUKK2RldmljZSB0cmVlLgorCitUaGlzIGJpbmRpbmcgdXNlcyB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmc6CisgICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlCisJU2hhbGwgaGF2ZSBhIHZhbHVlIG9mIHRoZSBmb3JtICJicmNtLDxtb2RlbD4tPHdoaWNoPi1jY3UiLAorCXdoZXJlIDxtb2RlbD4gaXMgYSBCcm9hZGNvbSBTb0MgbW9kZWwgbnVtYmVyIGFuZCA8d2hpY2g+IGlzCisJdGhlIG5hbWUgb2YgYSBkZWZpbmVkIENDVS4gIEZvciBleGFtcGxlOgorCSAgICAiYnJjbSxiY20xMTM1MS1yb290LWNjdSIKKwlUaGUgY29tcGF0aWJsZSBzdHJpbmdzIHVzZWQgZm9yIGVhY2ggc3VwcG9ydGVkIFNvQyBmYW1pbHkKKwlhcmUgZGVmaW5lZCBiZWxvdy4KKy0gcmVnCisJU2hhbGwgZGVmaW5lIHRoZSBiYXNlIGFuZCByYW5nZSBvZiB0aGUgYWRkcmVzcyBzcGFjZQorCWNvbnRhaW5pbmcgY2xvY2sgY29udHJvbCByZWdpc3RlcnMKKy0gI2Nsb2NrLWNlbGxzCisJU2hhbGwgaGF2ZSB2YWx1ZSA8MT4uICBUaGUgcGVybWl0dGVkIGNsb2NrLXNwZWNpZmllciB2YWx1ZXMKKwlhcmUgZGVmaW5lZCBiZWxvdy4KKy0gY2xvY2stb3V0cHV0LW5hbWVzCisJU2hhbGwgYmUgYW4gb3JkZXJlZCBsaXN0IG9mIHN0cmluZ3MgZGVmaW5pbmcgdGhlIG5hbWVzIG9mCisJdGhlIGNsb2NrcyBwcm92aWRlZCBieSB0aGUgQ0NVLgorCitEZXZpY2UgdHJlZSBleGFtcGxlOgorCisJc2xhdmVfY2N1OiBzbGF2ZV9jY3UgeworCQljb21wYXRpYmxlID0gImJyY20sYmNtMTEzNTEtc2xhdmUtY2N1IjsKKwkJcmVnID0gPDB4M2UwMTEwMDAgMHgwZjAwPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQljbG9jay1vdXRwdXQtbmFtZXMgPSAidWFydGIiLAorCQkJCSAgICAgInVhcnRiMiIsCisJCQkJICAgICAidWFydGIzIiwKKwkJCQkgICAgICJ1YXJ0YjQiOworCX07CisKKwlyZWZfY3J5c3RhbF9jbGs6IHJlZl9jcnlzdGFsIHsKKwkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQljb21wYXRpYmxlID0gImZpeGVkLWNsb2NrIjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDI2MDAwMDAwPjsKKwl9OworCisJdWFydEAzZTAwMjAwMCB7CisJCWNvbXBhdGlibGUgPSAiYnJjbSxiY20xMTM1MS1kdy1hcGItdWFydCIsICJzbnBzLGR3LWFwYi11YXJ0IjsKKwkJc3RhdHVzID0gImRpc2FibGVkIjsKKwkJcmVnID0gPDB4M2UwMDIwMDAgMHgxMDAwPjsKKwkJY2xvY2tzID0gPCZzbGF2ZV9jY3UgQkNNMjgxWFhfU0xBVkVfQ0NVX1VBUlRCMz47CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSA2NSBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJcmVnLXNoaWZ0ID0gPDI+OworCQlyZWctaW8td2lkdGggPSA8ND47CisJfTsKKworQkNNMjgxWFggZmFtaWx5CistLS0tLS0tLS0tLS0tLS0KK0NDVSBjb21wYXRpYmxlIHN0cmluZyB2YWx1ZXMgZm9yIFNvQ3MgaW4gdGhlIEJDTTI4MVhYIGZhbWlseSBhcmU6CisgICAgImJyY20sYmNtMTEzNTEtcm9vdC1jY3UiCisgICAgImJyY20sYmNtMTEzNTEtYW9uLWNjdSIKKyAgICAiYnJjbSxiY20xMTM1MS1odWItY2N1IgorICAgICJicmNtLGJjbTExMzUxLW1hc3Rlci1jY3UiCisgICAgImJyY20sYmNtMTEzNTEtc2xhdmUtY2N1IgorCitUaGUgZm9sbG93aW5nIHRhYmxlIGRlZmluZXMgdGhlIHNldCBvZiBDQ1VzIGFuZCBjbG9jayBzcGVjaWZpZXJzIGZvcgorQkNNMjgxWFggZmFtaWx5IGNsb2Nrcy4gIFdoZW4gYSBjbG9jayBjb25zdW1lciByZWZlcmVuY2VzIGEgY2xvY2tzLAoraXRzIHN5bWJvbGljIHNwZWNpZmllciAocmF0aGVyIHRoYW4gaXRzIG51bWVyaWMgaW5kZXggdmFsdWUpIHNob3VsZAorYmUgdXNlZC4gIFRoZXNlIHNwZWNpZmllcnMgYXJlIGRlZmluZWQgaW46CisgICAgImluY2x1ZGUvZHQtYmluZGluZ3MvY2xvY2svYmNtMjgxeHguaCIKKworICAgIENDVSAgICAgQ2xvY2sgICAgICAgICAgIFR5cGUgICAgSW5kZXggICBTcGVjaWZpZXIKKyAgICAtLS0gICAgIC0tLS0tICAgICAgICAgICAtLS0tICAgIC0tLS0tICAgLS0tLS0tLS0tCisgICAgcm9vdCAgICBmcmFjXzFtICAgICAgICAgcGVyaSAgICAgIDAgICAgIEJDTTI4MVhYX1JPT1RfQ0NVX0ZSQUNfMU0KKworICAgIGFvbiAgICAgaHViX3RpbWVyICAgICAgIHBlcmkgICAgICAwICAgICBCQ00yODFYWF9BT05fQ0NVX0hVQl9USU1FUgorICAgIGFvbiAgICAgcG11X2JzYyAgICAgICAgIHBlcmkgICAgICAxICAgICBCQ00yODFYWF9BT05fQ0NVX1BNVV9CU0MKKyAgICBhb24gICAgIHBtdV9ic2NfdmFyICAgICBwZXJpICAgICAgMiAgICAgQkNNMjgxWFhfQU9OX0NDVV9QTVVfQlNDX1ZBUgorCisgICAgaHViICAgICB0bW9uXzFtICAgICAgICAgcGVyaSAgICAgIDAgICAgIEJDTTI4MVhYX0hVQl9DQ1VfVE1PTl8xTQorCisgICAgbWFzdGVyICBzZGlvMSAgICAgICAgICAgcGVyaSAgICAgIDAgICAgIEJDTTI4MVhYX01BU1RFUl9DQ1VfU0RJTzEKKyAgICBtYXN0ZXIgIHNkaW8yICAgICAgICAgICBwZXJpICAgICAgMSAgICAgQkNNMjgxWFhfTUFTVEVSX0NDVV9TRElPMgorICAgIG1hc3RlciAgc2RpbzMgICAgICAgICAgIHBlcmkgICAgICAyICAgICBCQ00yODFYWF9NQVNURVJfQ0NVX1NESU8zCisgICAgbWFzdGVyICBzZGlvNCAgICAgICAgICAgcGVyaSAgICAgIDMgICAgIEJDTTI4MVhYX01BU1RFUl9DQ1VfU0RJTzQKKyAgICBtYXN0ZXIgIGRtYWMgICAgICAgICAgICBwZXJpICAgICAgNCAgICAgQkNNMjgxWFhfTUFTVEVSX0NDVV9ETUFDCisgICAgbWFzdGVyICB1c2JfaWMgICAgICAgICAgcGVyaSAgICAgIDUgICAgIEJDTTI4MVhYX01BU1RFUl9DQ1VfVVNCX0lDCisgICAgbWFzdGVyICBoc2ljMl80OG0gICAgICAgcGVyaSAgICAgIDYgICAgIEJDTTI4MVhYX01BU1RFUl9DQ1VfSFNJQ180OE0KKyAgICBtYXN0ZXIgIGhzaWMyXzEybSAgICAgICBwZXJpICAgICAgNyAgICAgQkNNMjgxWFhfTUFTVEVSX0NDVV9IU0lDXzEyTQorCisgICAgc2xhdmUgICB1YXJ0YiAgICAgICAgICAgcGVyaSAgICAgIDAgICAgIEJDTTI4MVhYX1NMQVZFX0NDVV9VQVJUQgorICAgIHNsYXZlICAgdWFydGIyICAgICAgICAgIHBlcmkgICAgICAxICAgICBCQ00yODFYWF9TTEFWRV9DQ1VfVUFSVEIyCisgICAgc2xhdmUgICB1YXJ0YjMgICAgICAgICAgcGVyaSAgICAgIDIgICAgIEJDTTI4MVhYX1NMQVZFX0NDVV9VQVJUQjMKKyAgICBzbGF2ZSAgIHVhcnRiNCAgICAgICAgICBwZXJpICAgICAgMyAgICAgQkNNMjgxWFhfU0xBVkVfQ0NVX1VBUlRCNAorICAgIHNsYXZlICAgc3NwMCAgICAgICAgICAgIHBlcmkgICAgICA0ICAgICBCQ00yODFYWF9TTEFWRV9DQ1VfU1NQMAorICAgIHNsYXZlICAgc3NwMiAgICAgICAgICAgIHBlcmkgICAgICA1ICAgICBCQ00yODFYWF9TTEFWRV9DQ1VfU1NQMgorICAgIHNsYXZlICAgYnNjMSAgICAgICAgICAgIHBlcmkgICAgICA2ICAgICBCQ00yODFYWF9TTEFWRV9DQ1VfQlNDMQorICAgIHNsYXZlICAgYnNjMiAgICAgICAgICAgIHBlcmkgICAgICA3ICAgICBCQ00yODFYWF9TTEFWRV9DQ1VfQlNDMgorICAgIHNsYXZlICAgYnNjMyAgICAgICAgICAgIHBlcmkgICAgICA4ICAgICBCQ00yODFYWF9TTEFWRV9DQ1VfQlNDMworICAgIHNsYXZlICAgcHdtICAgICAgICAgICAgIHBlcmkgICAgICA5ICAgICBCQ00yODFYWF9TTEFWRV9DQ1VfUFdNCisKKworQkNNMjE2NjQgZmFtaWx5CistLS0tLS0tLS0tLS0tLS0KK0NDVSBjb21wYXRpYmxlIHN0cmluZyB2YWx1ZXMgZm9yIFNvQ3MgaW4gdGhlIEJDTTIxNjY0IGZhbWlseSBhcmU6CisgICAgImJyY20sYmNtMjE2NjQtcm9vdC1jY3UiCisgICAgImJyY20sYmNtMjE2NjQtYW9uLWNjdSIKKyAgICAiYnJjbSxiY20yMTY2NC1tYXN0ZXItY2N1IgorICAgICJicmNtLGJjbTIxNjY0LXNsYXZlLWNjdSIKKworVGhlIGZvbGxvd2luZyB0YWJsZSBkZWZpbmVzIHRoZSBzZXQgb2YgQ0NVcyBhbmQgY2xvY2sgc3BlY2lmaWVycyBmb3IKK0JDTTIxNjY0IGZhbWlseSBjbG9ja3MuICBXaGVuIGEgY2xvY2sgY29uc3VtZXIgcmVmZXJlbmNlcyBhIGNsb2NrcywKK2l0cyBzeW1ib2xpYyBzcGVjaWZpZXIgKHJhdGhlciB0aGFuIGl0cyBudW1lcmljIGluZGV4IHZhbHVlKSBzaG91bGQKK2JlIHVzZWQuICBUaGVzZSBzcGVjaWZpZXJzIGFyZSBkZWZpbmVkIGluOgorICAgICJpbmNsdWRlL2R0LWJpbmRpbmdzL2Nsb2NrL2JjbTIxNjY0LmgiCisKKyAgICBDQ1UgICAgIENsb2NrICAgICAgICAgICBUeXBlICAgIEluZGV4ICAgU3BlY2lmaWVyCisgICAgLS0tICAgICAtLS0tLSAgICAgICAgICAgLS0tLSAgICAtLS0tLSAgIC0tLS0tLS0tLQorICAgIHJvb3QgICAgZnJhY18xbSAgICAgICAgIHBlcmkgICAgICAwICAgICBCQ00yMTY2NF9ST09UX0NDVV9GUkFDXzFNCisKKyAgICBhb24gICAgIGh1Yl90aW1lciAgICAgICBwZXJpICAgICAgMCAgICAgQkNNMjE2NjRfQU9OX0NDVV9IVUJfVElNRVIKKworICAgIG1hc3RlciAgc2RpbzEgICAgICAgICAgIHBlcmkgICAgICAwICAgICBCQ00yMTY2NF9NQVNURVJfQ0NVX1NESU8xCisgICAgbWFzdGVyICBzZGlvMiAgICAgICAgICAgcGVyaSAgICAgIDEgICAgIEJDTTIxNjY0X01BU1RFUl9DQ1VfU0RJTzIKKyAgICBtYXN0ZXIgIHNkaW8zICAgICAgICAgICBwZXJpICAgICAgMiAgICAgQkNNMjE2NjRfTUFTVEVSX0NDVV9TRElPMworICAgIG1hc3RlciAgc2RpbzQgICAgICAgICAgIHBlcmkgICAgICAzICAgICBCQ00yMTY2NF9NQVNURVJfQ0NVX1NESU80CisgICAgbWFzdGVyICBzZGlvMV9zbGVlcCAgICAgcGVyaSAgICAgIDQgICAgIEJDTTIxNjY0X01BU1RFUl9DQ1VfU0RJTzFfU0xFRVAKKyAgICBtYXN0ZXIgIHNkaW8yX3NsZWVwICAgICBwZXJpICAgICAgNSAgICAgQkNNMjE2NjRfTUFTVEVSX0NDVV9TRElPMl9TTEVFUAorICAgIG1hc3RlciAgc2RpbzNfc2xlZXAgICAgIHBlcmkgICAgICA2ICAgICBCQ00yMTY2NF9NQVNURVJfQ0NVX1NESU8zX1NMRUVQCisgICAgbWFzdGVyICBzZGlvNF9zbGVlcCAgICAgcGVyaSAgICAgIDcgICAgIEJDTTIxNjY0X01BU1RFUl9DQ1VfU0RJTzRfU0xFRVAKKworICAgIHNsYXZlICAgdWFydGIgICAgICAgICAgIHBlcmkgICAgICAwICAgICBCQ00yMTY2NF9TTEFWRV9DQ1VfVUFSVEIKKyAgICBzbGF2ZSAgIHVhcnRiMiAgICAgICAgICBwZXJpICAgICAgMSAgICAgQkNNMjE2NjRfU0xBVkVfQ0NVX1VBUlRCMgorICAgIHNsYXZlICAgdWFydGIzICAgICAgICAgIHBlcmkgICAgICAyICAgICBCQ00yMTY2NF9TTEFWRV9DQ1VfVUFSVEIzCisgICAgc2xhdmUgICB1YXJ0YjQgICAgICAgICAgcGVyaSAgICAgIDMgICAgIEJDTTIxNjY0X1NMQVZFX0NDVV9VQVJUQjQKKyAgICBzbGF2ZSAgIGJzYzEgICAgICAgICAgICBwZXJpICAgICAgNCAgICAgQkNNMjE2NjRfU0xBVkVfQ0NVX0JTQzEKKyAgICBzbGF2ZSAgIGJzYzIgICAgICAgICAgICBwZXJpICAgICAgNSAgICAgQkNNMjE2NjRfU0xBVkVfQ0NVX0JTQzIKKyAgICBzbGF2ZSAgIGJzYzMgICAgICAgICAgICBwZXJpICAgICAgNiAgICAgQkNNMjE2NjRfU0xBVkVfQ0NVX0JTQzMKKyAgICBzbGF2ZSAgIGJzYzQgICAgICAgICAgICBwZXJpICAgICAgNyAgICAgQkNNMjE2NjRfU0xBVkVfQ0NVX0JTQzQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jYWx4ZWRhLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jYWx4ZWRhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTZhYzFiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2NhbHhlZGEudHh0CkBAIC0wLDAgKzEsMTcgQEAKK0RldmljZSBUcmVlIENsb2NrIGJpbmRpbmdzIGZvciBDYWx4ZWRhIGhpZ2hiYW5rIHBsYXRmb3JtCisKK1RoaXMgYmluZGluZyB1c2VzIHRoZSBjb21tb24gY2xvY2sgYmluZGluZ1sxXS4KKworWzFdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNoYWxsIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCSJjYWx4ZWRhLGhiLXBsbC1jbG9jayIgLSBmb3IgYSBQTEwgY2xvY2sKKwkiY2FseGVkYSxoYi1hOXBlcmlwaC1jbG9jayIgLSBUaGUgQTkgcGVyaXBoZXJhbCBjbG9jayBkaXZpZGVkIGZyb20gdGhlCisJCUE5IGNsb2NrLgorCSJjYWx4ZWRhLGhiLWE5YnVzLWNsb2NrIiAtIFRoZSBBOSBidXMgY2xvY2sgZGl2aWRlZCBmcm9tIHRoZSBBOSBjbG9jay4KKwkiY2FseGVkYSxoYi1lbW1jLWNsb2NrIiAtIERpdmlkZWQgY2xvY2sgZm9yIE1NQy9TRCBjb250cm9sbGVyLgorLSByZWcgOiBzaGFsbCBiZSB0aGUgY29udHJvbCByZWdpc3RlciBvZmZzZXQgZnJvbSBTWVNSRUdzIGJhc2UgZm9yIHRoZSBjbG9jay4KKy0gY2xvY2tzIDogc2hhbGwgYmUgdGhlIGlucHV0IHBhcmVudCBjbG9jayBwaGFuZGxlIGZvciB0aGUgY2xvY2suIFRoaXMgaXMKKwllaXRoZXIgYW4gb3NjaWxsYXRvciBvciBhIHBsbCBvdXRwdXQuCistICNjbG9jay1jZWxscyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IHNoYWxsIGJlIHNldCB0byAwLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsay1leHlub3MtYXVkc3MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsay1leHlub3MtYXVkc3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MGU4ODMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xrLWV4eW5vcy1hdWRzcy50eHQKQEAgLTAsMCArMSw5NSBAQAorKiBTYW1zdW5nIEF1ZGlvIFN1YnN5c3RlbSBDbG9jayBDb250cm9sbGVyCisKK1RoZSBTYW1zdW5nIEF1ZGlvIFN1YnN5c3RlbSBjbG9jayBjb250cm9sbGVyIGdlbmVyYXRlcyBhbmQgc3VwcGxpZXMgY2xvY2tzCit0byBBdWRpbyBTdWJzeXN0ZW0gYmxvY2sgYXZhaWxhYmxlIGluIHRoZSBTNVBWMjEwIGFuZCBFeHlub3MgU29Dcy4gVGhlIGNsb2NrCitiaW5kaW5nIGRlc2NyaWJlZCBoZXJlIGlzIGFwcGxpY2FibGUgdG8gYWxsIFNvQ3MgaW4gRXh5bm9zIGZhbWlseS4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisgIC0gInNhbXN1bmcsZXh5bm9zNDIxMC1hdWRzcy1jbG9jayIgLSBjb250cm9sbGVyIGNvbXBhdGlibGUgd2l0aCBhbGwgRXh5bm9zNCBTb0NzLgorICAtICJzYW1zdW5nLGV4eW5vczUyNTAtYXVkc3MtY2xvY2siIC0gY29udHJvbGxlciBjb21wYXRpYmxlIHdpdGggRXh5bm9zNTI1MAorICAgIFNvQ3MuCisgIC0gInNhbXN1bmcsZXh5bm9zNTQyMC1hdWRzcy1jbG9jayIgLSBjb250cm9sbGVyIGNvbXBhdGlibGUgd2l0aCBFeHlub3M1NDIwCisgICAgU29Dcy4KKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgY29udHJvbGxlcidzIHJlZ2lzdGVyIHNldC4KKworLSAjY2xvY2stY2VsbHM6IHNob3VsZCBiZSAxLgorCistIGNsb2NrczoKKyAgLSBwbGxfcmVmOiBGaXhlZCByYXRlIFBMTCByZWZlcmVuY2UgY2xvY2ssIHBhcmVudCBvZiBtb3V0X2F1ZHNzLiAiZmluX3BsbCIKKyAgICBpcyB1c2VkIGlmIG5vdCBzcGVjaWZpZWQuCisgIC0gcGxsX2luOiBJbnB1dCBQTEwgdG8gdGhlIEF1ZGlvU1MgYmxvY2ssIHBhcmVudCBvZiBtb3V0X2F1ZHNzLiAiZm91dF9lcGxsIgorICAgIGlzIHVzZWQgaWYgbm90IHNwZWNpZmllZC4KKyAgLSBjZGNsazogRXh0ZXJuYWwgaTJzIGNsb2NrLCBwYXJlbnQgb2YgbW91dF9pMnMuICJjZGNsazAiIGlzIHVzZWQgaWYgbm90CisgICAgc3BlY2lmaWVkLgorICAtIHNjbGtfYXVkaW86IEF1ZGlvIGJ1cyBjbG9jaywgcGFyZW50IG9mIG1vdXRfaTJzLiAic2Nsa19hdWRpbzAiIGlzIHVzZWQgaWYKKyAgICBub3Qgc3BlY2lmaWVkLgorICAtIHNjbGtfcGNtX2luOiBQQ00gY2xvY2ssIHBhcmVudCBvZiBzY2xrX3BjbS4gICJzY2xrX3BjbTAiIGlzIHVzZWQgaWYgbm90CisgICAgc3BlY2lmaWVkLgorCistIGNsb2NrLW5hbWVzOiBBbGlhc2VzIGZvciB0aGUgYWJvdmUgY2xvY2tzLiBUaGV5IHNob3VsZCBiZSAicGxsX3JlZiIsCisgICJwbGxfaW4iLCAiY2RjbGsiLCAic2Nsa19hdWRpbyIsIGFuZCAic2Nsa19wY21faW4iIHJlc3BlY3RpdmVseS4KKworVGhlIGZvbGxvd2luZyBpcyB0aGUgbGlzdCBvZiBjbG9ja3MgZ2VuZXJhdGVkIGJ5IHRoZSBjb250cm9sbGVyLiBFYWNoIGNsb2NrIGlzCithc3NpZ25lZCBhbiBpZGVudGlmaWVyIGFuZCBjbGllbnQgbm9kZXMgdXNlIHRoaXMgaWRlbnRpZmllciB0byBzcGVjaWZ5IHRoZQorY2xvY2sgd2hpY2ggdGhleSBjb25zdW1lLiBTb21lIG9mIHRoZSBjbG9ja3MgYXJlIGF2YWlsYWJsZSBvbmx5IG9uIGEgcGFydGljdWxhcgorRXh5bm9zNCBTb0MgYW5kIHRoaXMgaXMgc3BlY2lmaWVkIHdoZXJlIGFwcGxpY2FibGUuCisKK1Byb3ZpZGVkIGNsb2NrczoKKworQ2xvY2sgICAgICAgICAgIElEICAgICAgU29DIChpZiBzcGVjaWZpYykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK21vdXRfYXVkc3MgICAgICAwCittb3V0X2kycyAgICAgICAgMQorZG91dF9zcnAgICAgICAgIDIKK2RvdXRfYXVkX2J1cyAgICAzCitkb3V0X2kycyAgICAgICAgNAorc3JwX2NsayAgICAgICAgIDUKK2kyc19idXMgICAgICAgICA2CitzY2xrX2kycyAgICAgICAgNworcGNtX2J1cyAgICAgICAgIDgKK3NjbGtfcGNtICAgICAgICA5CithZG1hICAgICAgICAgICAgMTAgICAgICBFeHlub3M1NDIwCisKK0V4YW1wbGUgMTogQW4gZXhhbXBsZSBvZiBhIGNsb2NrIGNvbnRyb2xsZXIgbm9kZSB1c2luZyB0aGUgZGVmYXVsdCBpbnB1dAorCSAgIGNsb2NrIG5hbWVzIGlzIGxpc3RlZCBiZWxvdy4KKworY2xvY2tfYXVkc3M6IGF1ZHNzLWNsb2NrLWNvbnRyb2xsZXJAMzgxMDAwMCB7CisJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczUyNTAtYXVkc3MtY2xvY2siOworCXJlZyA9IDwweDAzODEwMDAwIDB4MEM+OworCSNjbG9jay1jZWxscyA9IDwxPjsKK307CisKK0V4YW1wbGUgMjogQW4gZXhhbXBsZSBvZiBhIGNsb2NrIGNvbnRyb2xsZXIgbm9kZSB3aXRoIHRoZSBpbnB1dCBjbG9ja3MKKyAgICAgICAgICAgc3BlY2lmaWVkLgorCitjbG9ja19hdWRzczogYXVkc3MtY2xvY2stY29udHJvbGxlckAzODEwMDAwIHsKKwljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTI1MC1hdWRzcy1jbG9jayI7CisJcmVnID0gPDB4MDM4MTAwMDAgMHgwQz47CisJI2Nsb2NrLWNlbGxzID0gPDE+OworCWNsb2NrcyA9IDwmY2xvY2sgMT4sIDwmY2xvY2sgNz4sIDwmY2xvY2sgMTM4PiwgPCZjbG9jayAxNjA+LAorCQk8JmV4dF9pMnNfY2xrPjsKKwljbG9jay1uYW1lcyA9ICJwbGxfcmVmIiwgInBsbF9pbiIsICJzY2xrX2F1ZGlvIiwgInNjbGtfcGNtX2luIiwgImNkY2xrIjsKK307CisKK0V4YW1wbGUgMzogSTJTIGNvbnRyb2xsZXIgbm9kZSB0aGF0IGNvbnN1bWVzIHRoZSBjbG9jayBnZW5lcmF0ZWQgYnkgdGhlIGNsb2NrCisgICAgICAgICAgIGNvbnRyb2xsZXIuIFJlZmVyIHRvIHRoZSBzdGFuZGFyZCBjbG9jayBiaW5kaW5ncyBmb3IgaW5mb3JtYXRpb24KKyAgICAgICAgICAgYWJvdXQgJ2Nsb2NrcycgYW5kICdjbG9jay1uYW1lcycgcHJvcGVydHkuCisKK2kyczA6IGkyc0AwMzgzMDAwMCB7CisJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGkycy12NSI7CisJcmVnID0gPDB4MDM4MzAwMDAgMHgxMDA+OworCWRtYXMgPSA8JnBkbWEwIDEwCisJCSZwZG1hMCA5CisJCSZwZG1hMCA4PjsKKwlkbWEtbmFtZXMgPSAidHgiLCAicngiLCAidHgtc2VjIjsKKwljbG9ja3MgPSA8JmNsb2NrX2F1ZHNzIEVYWU5PU19JMlNfQlVTPiwKKwkJPCZjbG9ja19hdWRzcyBFWFlOT1NfSTJTX0JVUz4sCisJCTwmY2xvY2tfYXVkc3MgRVhZTk9TX1NDTEtfSTJTPiwKKwkJPCZjbG9ja19hdWRzcyBFWFlOT1NfTU9VVF9BVURTUz4sCisJCTwmY2xvY2tfYXVkc3MgRVhZTk9TX01PVVRfSTJTPjsKKwljbG9jay1uYW1lcyA9ICJpaXMiLCAiaTJzX29wY2xrMCIsICJpMnNfb3BjbGsxIiwKKwkibW91dF9hdWRzcyIsICJtb3V0X2kycyI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsay1wYWxtYXMtY2xrMzJrZy1jbG9ja3MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsay1wYWxtYXMtY2xrMzJrZy1jbG9ja3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyMDg4ODYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xrLXBhbG1hcy1jbGszMmtnLWNsb2Nrcy50eHQKQEAgLTAsMCArMSwzNSBAQAorKiBQYWxtYXMgMzJLSHogY2xvY2tzICoKKworUGFsbWFzIGRldmljZSBoYXMgdHdvIGNsb2NrIG91dHB1dCBwaW5zIGZvciAzMktIeiwgS0cgYW5kIEtHX0FVRElPLgorCitUaGlzIGJpbmRpbmcgdXNlcyB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmcgLi9jbG9jay1iaW5kaW5ncy50eHQuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOgkidGkscGFsbWFzLWNsazMya2ciIGZvciBjbGszMmtnIGNsb2NrCisJCSJ0aSxwYWxtYXMtY2xrMzJrZ2F1ZGlvIiBmb3IgY2xrMzJrZ2F1ZGlvIGNsb2NrCistICNjbG9jay1jZWxscyA6IHNoYWxsIGJlIHNldCB0byAwLgorCitPcHRpb25hbCBwcm9wZXJ0eToKKy0gdGksZXh0ZXJuYWwtc2xlZXAtY29udHJvbDogVGhlIGV4dGVybmFsIGVuYWJsZSBpbnB1dCBwaW5zIGNvbnRyb2xsZWQgdGhlCisJZW5hYmxlL2Rpc2FibGUgb2YgY2xvY2tzLiAgVGhlIGV4dGVybmFsIGVuYWJsZSBpbnB1dCBwaW5zIEVOQUJMRTEsCisJRU5BQkxFMiBhbmQgTlNMRUVQLiBUaGUgdmFsaWQgdmFsdWVzIGZvciB0aGUgZXh0ZXJuYWwgcGlucyBhcmU6CisJCVBBTE1BU19FWFRfQ09OVFJPTF9QSU5fRU5BQkxFMSBmb3IgRU5BQkxFMSBwaW4KKwkJUEFMTUFTX0VYVF9DT05UUk9MX1BJTl9FTkFCTEUyIGZvciBFTkFCTEUyIHBpbgorCQlQQUxNQVNfRVhUX0NPTlRST0xfUElOX05TTEVFUCBmb3IgTlNMRUVQIHBpbgorCU9wdGlvbiAwIG9yIG1pc3NpbmcgdGhpcyBwcm9wZXJ0eSBtZWFucyB0aGUgY2xvY2sgaXMgZW5hYmxlZC9kaXNhYmxlZAorCXZpYSByZWdpc3RlciBhY2Nlc3MgYW5kIHRoZXNlIHBpbnMgZG8gbm90IGhhdmUgYW55IGNvbnRyb2wuCisJVGhlIG1hY3JvcyBvZiBleHRlcm5hbCBjb250cm9sIHBpbnMgZm9yIERUUyBpcyBkZWZpbmVkIGF0CisJZHQtYmluZGluZ3MvbWZkL3BhbG1hcy5oCisKK0V4YW1wbGU6CisJI2luY2x1ZGUgPGR0LWJpbmRpbmdzL21mZC9wYWxtYXMuaD4KKwkuLi4KKwlwYWxtYXM6IHRwczY1OTEzQDU4IHsKKwkJLi4uCisJCWNsazMya2c6IHBhbG1hc19jbGszMmtAMCB7CisJCQljb21wYXRpYmxlID0gInRpLHBhbG1hcy1jbGszMmtnIjsKKwkJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJCXRpLGV4dGVybmFsLXNsZWVwLWNvbnRyb2wgPSA8UEFMTUFTX0VYVF9DT05UUk9MX1BJTl9OU0xFRVA+OworCQl9OworCQkuLi4KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsay1zNXB2MjEwLWF1ZHNzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbGstczVwdjIxMC1hdWRzcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZjODY5YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbGstczVwdjIxMC1hdWRzcy50eHQKQEAgLTAsMCArMSw1MyBAQAorKiBTYW1zdW5nIEF1ZGlvIFN1YnN5c3RlbSBDbG9jayBDb250cm9sbGVyCisKK1RoZSBTYW1zdW5nIEF1ZGlvIFN1YnN5c3RlbSBjbG9jayBjb250cm9sbGVyIGdlbmVyYXRlcyBhbmQgc3VwcGxpZXMgY2xvY2tzCit0byBBdWRpbyBTdWJzeXN0ZW0gYmxvY2sgYXZhaWxhYmxlIGluIHRoZSBTNVBWMjEwIGFuZCBjb21wYXRpYmxlIFNvQ3MuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJzYW1zdW5nLHM1cHYyMTAtYXVkc3MtY2xvY2siLgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBjb250cm9sbGVyJ3MgcmVnaXN0ZXIgc2V0LgorCistICNjbG9jay1jZWxsczogc2hvdWxkIGJlIDEuCisKKy0gY2xvY2tzOgorICAtIGhjbGs6IEFIQiBidXMgY2xvY2sgb2YgdGhlIEF1ZGlvIFN1YnN5c3RlbS4KKyAgLSB4eHRpOiBPcHRpb25hbCBmaXhlZCByYXRlIFBMTCByZWZlcmVuY2UgY2xvY2ssIHBhcmVudCBvZiBtb3V0X2F1ZHNzLiBJZgorICAgIG5vdCBzcGVjaWZpZWQgKGkuZS4geHVzYnh0aSBpcyB1c2VkIGZvciBQTEwgcmVmZXJlbmNlKSwgaXQgaXMgZml4ZWQgdG8KKyAgICBhIGNsb2NrIG5hbWVkICJ4eHRpIi4KKyAgLSBmb3V0X2VwbGw6IElucHV0IFBMTCB0byB0aGUgQXVkaW9TUyBibG9jaywgcGFyZW50IG9mIG1vdXRfYXVkc3MuCisgIC0gaWlzY2RjbGswOiBPcHRpb25hbCBleHRlcm5hbCBpMnMgY2xvY2ssIHBhcmVudCBvZiBtb3V0X2kycy4gSWYgbm90CisgICAgc3BlY2lmaWVkLCBpdCBpcyBmaXhlZCB0byBhIGNsb2NrIG5hbWVkICJpaXNjZGNsazAiLgorICAtIHNjbGtfYXVkaW8wOiBBdWRpbyBidXMgY2xvY2ssIHBhcmVudCBvZiBtb3V0X2kycy4KKworLSBjbG9jay1uYW1lczogQWxpYXNlcyBmb3IgdGhlIGFib3ZlIGNsb2Nrcy4gVGhleSBzaG91bGQgYmUgImhjbGsiLAorICAieHh0aSIsICJmb3V0X2VwbGwiLCAiaWlzY2RjbGswIiwgYW5kICJzY2xrX2F1ZGlvMCIgcmVzcGVjdGl2ZWx5LgorCitBbGwgYXZhaWxhYmxlIGNsb2NrcyBhcmUgZGVmaW5lZCBhcyBwcmVwcm9jZXNzb3IgbWFjcm9zIGluCitkdC1iaW5kaW5ncy9jbG9jay9zNXB2MjEwLWF1ZHNzLWNsay5oIGhlYWRlciBhbmQgY2FuIGJlIHVzZWQgaW4gZGV2aWNlCit0cmVlIHNvdXJjZXMuCisKK0V4YW1wbGU6IENsb2NrIGNvbnRyb2xsZXIgbm9kZS4KKworCWNsa19hdWRzczogY2xvY2stY29udHJvbGxlckBjMDkwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxzNXB2MjEwLWF1ZHNzLWNsb2NrIjsKKwkJcmVnID0gPDB4YzA5MDAwMDAgMHgxMDAwPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQljbG9jay1uYW1lcyA9ICJoY2xrIiwgInh4dGkiLAorCQkJCSJmb3V0X2VwbGwiLCAic2Nsa19hdWRpbzAiOworCQljbG9ja3MgPSA8JmNsb2NrcyBET1VUX0hDTEtQPiwgPCZ4eHRpPiwKKwkJCQk8JmNsb2NrcyBGT1VUX0VQTEw+LCA8JmNsb2NrcyBTQ0xLX0FVRElPMD47CisJfTsKKworRXhhbXBsZTogSTJTIGNvbnRyb2xsZXIgbm9kZSB0aGF0IGNvbnN1bWVzIHRoZSBjbG9jayBnZW5lcmF0ZWQgYnkgdGhlIGNsb2NrCisJIGNvbnRyb2xsZXIuIFJlZmVyIHRvIHRoZSBzdGFuZGFyZCBjbG9jayBiaW5kaW5ncyBmb3IgaW5mb3JtYXRpb24KKyAgICAgICAgIGFib3V0ICdjbG9ja3MnIGFuZCAnY2xvY2stbmFtZXMnIHByb3BlcnR5LgorCisJaTJzMDogaTJzQDAzODMwMDAwIHsKKwkJLyogLi4uICovCisJCWNsb2NrLW5hbWVzID0gImlpcyIsICJpMnNfb3BjbGswIiwKKwkJCQkiaTJzX29wY2xrMSI7CisJCWNsb2NrcyA9IDwmY2xrX2F1ZHNzIENMS19JMlM+LCA8JmNsa19hdWRzcyBDTEtfSTJTPiwKKwkJCQk8JmNsa19hdWRzcyBDTEtfRE9VVF9BVURfQlVTPjsKKwkJLyogLi4uICovCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlYzQ4OWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CkBAIC0wLDAgKzEsMTcwIEBACitUaGlzIGJpbmRpbmcgaXMgYSB3b3JrLWluLXByb2dyZXNzLCBhbmQgYXJlIGJhc2VkIG9uIHNvbWUgZXhwZXJpbWVudGFsCit3b3JrIGJ5IGJlbmhbMV0uCisKK1NvdXJjZXMgb2YgY2xvY2sgc2lnbmFsIGNhbiBiZSByZXByZXNlbnRlZCBieSBhbnkgbm9kZSBpbiB0aGUgZGV2aWNlCit0cmVlLiAgVGhvc2Ugbm9kZXMgYXJlIGRlc2lnbmF0ZWQgYXMgY2xvY2sgcHJvdmlkZXJzLiAgQ2xvY2sgY29uc3VtZXIKK25vZGVzIHVzZSBhIHBoYW5kbGUgYW5kIGNsb2NrIHNwZWNpZmllciBwYWlyIHRvIGNvbm5lY3QgY2xvY2sgcHJvdmlkZXIKK291dHB1dHMgdG8gY2xvY2sgaW5wdXRzLiAgU2ltaWxhciB0byB0aGUgZ3BpbyBzcGVjaWZpZXJzLCBhIGNsb2NrCitzcGVjaWZpZXIgaXMgYW4gYXJyYXkgb2YgemVybywgb25lIG9yIG1vcmUgY2VsbHMgaWRlbnRpZnlpbmcgdGhlIGNsb2NrCitvdXRwdXQgb24gYSBkZXZpY2UuICBUaGUgbGVuZ3RoIG9mIGEgY2xvY2sgc3BlY2lmaWVyIGlzIGRlZmluZWQgYnkgdGhlCit2YWx1ZSBvZiBhICNjbG9jay1jZWxscyBwcm9wZXJ0eSBpbiB0aGUgY2xvY2sgcHJvdmlkZXIgbm9kZS4KKworWzFdIGh0dHA6Ly9wYXRjaHdvcmsub3psYWJzLm9yZy9wYXRjaC8zMTU1MS8KKworPT1DbG9jayBwcm92aWRlcnM9PQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorI2Nsb2NrLWNlbGxzOgkgICBOdW1iZXIgb2YgY2VsbHMgaW4gYSBjbG9jayBzcGVjaWZpZXI7IFR5cGljYWxseSAwIGZvciBub2RlcworCQkgICB3aXRoIGEgc2luZ2xlIGNsb2NrIG91dHB1dCBhbmQgMSBmb3Igbm9kZXMgd2l0aCBtdWx0aXBsZQorCQkgICBjbG9jayBvdXRwdXRzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorY2xvY2stb3V0cHV0LW5hbWVzOiBSZWNvbW1lbmRlZCB0byBiZSBhIGxpc3Qgb2Ygc3RyaW5ncyBvZiBjbG9jayBvdXRwdXQgc2lnbmFsCisJCSAgICBuYW1lcyBpbmRleGVkIGJ5IHRoZSBmaXJzdCBjZWxsIGluIHRoZSBjbG9jayBzcGVjaWZpZXIuCisJCSAgICBIb3dldmVyLCB0aGUgbWVhbmluZyBvZiBjbG9jay1vdXRwdXQtbmFtZXMgaXMgZG9tYWluCisJCSAgICBzcGVjaWZpYyB0byB0aGUgY2xvY2sgcHJvdmlkZXIsIGFuZCBpcyBvbmx5IHByb3ZpZGVkIHRvCisJCSAgICBlbmNvdXJhZ2UgdXNpbmcgdGhlIHNhbWUgbWVhbmluZyBmb3IgdGhlIG1ham9yaXR5IG9mIGNsb2NrCisJCSAgICBwcm92aWRlcnMuICBUaGlzIGZvcm1hdCBtYXkgbm90IHdvcmsgZm9yIGNsb2NrIHByb3ZpZGVycworCQkgICAgdXNpbmcgYSBjb21wbGV4IGNsb2NrIHNwZWNpZmllciBmb3JtYXQuICBJbiB0aG9zZSBjYXNlcyBpdAorCQkgICAgaXMgcmVjb21tZW5kZWQgdG8gb21pdCB0aGlzIHByb3BlcnR5IGFuZCBjcmVhdGUgYSBiaW5kaW5nCisJCSAgICBzcGVjaWZpYyBuYW1lcyBwcm9wZXJ0eS4KKworCQkgICAgQ2xvY2sgY29uc3VtZXIgbm9kZXMgbXVzdCBuZXZlciBkaXJlY3RseSByZWZlcmVuY2UKKwkJICAgIHRoZSBwcm92aWRlcidzIGNsb2NrLW91dHB1dC1uYW1lcyBwcm9wZXJ0eS4KKworRm9yIGV4YW1wbGU6CisKKyAgICBvc2NpbGxhdG9yIHsKKyAgICAgICAgI2Nsb2NrLWNlbGxzID0gPDE+OworICAgICAgICBjbG9jay1vdXRwdXQtbmFtZXMgPSAiY2tpbCIsICJja2loIjsKKyAgICB9OworCistIHRoaXMgbm9kZSBkZWZpbmVzIGEgZGV2aWNlIHdpdGggdHdvIGNsb2NrIG91dHB1dHMsIHRoZSBmaXJzdCBuYW1lZAorICAiY2tpbCIgYW5kIHRoZSBzZWNvbmQgbmFtZWQgImNraWgiLiAgQ29uc3VtZXIgbm9kZXMgYWx3YXlzIHJlZmVyZW5jZQorICBjbG9ja3MgYnkgaW5kZXguIFRoZSBuYW1lcyBzaG91bGQgcmVmbGVjdCB0aGUgY2xvY2sgb3V0cHV0IHNpZ25hbAorICBuYW1lcyBmb3IgdGhlIGRldmljZS4KKworY2xvY2staW5kaWNlczoJICAgSWYgdGhlIGlkZW50aWZ5aW5nIG51bWJlciBmb3IgdGhlIGNsb2NrcyBpbiB0aGUgbm9kZQorCQkgICBpcyBub3QgbGluZWFyIGZyb20gemVybywgdGhlbiB0aGlzIGFsbG93cyB0aGUgbWFwcGluZyBvZgorCQkgICBpZGVudGlmaWVycyBpbnRvIHRoZSBjbG9jay1vdXRwdXQtbmFtZXMgYXJyYXkuCisKK0ZvciBleGFtcGxlLCBpZiB3ZSBoYXZlIHR3byBjbG9ja3MgPCZvc2NpbGxhdG9yIDE+IGFuZCA8Jm9zY2lsbGF0b3IgMz46CisKKwlvc2NpbGxhdG9yIHsKKwkJY29tcGF0aWJsZSA9ICJteWNsb2NrdHlwZSI7CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKwkJY2xvY2staW5kaWNlcyA9IDwxPiwgPDM+OworCQljbG9jay1vdXRwdXQtbmFtZXMgPSAiY2xrYSIsICJjbGtiIjsKKwl9CisKKwlUaGlzIGVuc3VyZXMgd2UgZG8gbm90IGhhdmUgYW55IGVtcHR5IHN0cmluZ3MgaW4gY2xvY2stb3V0cHV0LW5hbWVzCisKKworPT1DbG9jayBjb25zdW1lcnM9PQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorY2xvY2tzOgkJTGlzdCBvZiBwaGFuZGxlIGFuZCBjbG9jayBzcGVjaWZpZXIgcGFpcnMsIG9uZSBwYWlyCisJCWZvciBlYWNoIGNsb2NrIGlucHV0IHRvIHRoZSBkZXZpY2UuICBOb3RlOiBpZiB0aGUKKwkJY2xvY2sgcHJvdmlkZXIgc3BlY2lmaWVzICcwJyBmb3IgI2Nsb2NrLWNlbGxzLCB0aGVuCisJCW9ubHkgdGhlIHBoYW5kbGUgcG9ydGlvbiBvZiB0aGUgcGFpciB3aWxsIGFwcGVhci4KKworT3B0aW9uYWwgcHJvcGVydGllczoKK2Nsb2NrLW5hbWVzOglMaXN0IG9mIGNsb2NrIGlucHV0IG5hbWUgc3RyaW5ncyBzb3J0ZWQgaW4gdGhlIHNhbWUKKwkJb3JkZXIgYXMgdGhlIGNsb2NrcyBwcm9wZXJ0eS4gIENvbnN1bWVycyBkcml2ZXJzCisJCXdpbGwgdXNlIGNsb2NrLW5hbWVzIHRvIG1hdGNoIGNsb2NrIGlucHV0IG5hbWVzCisJCXdpdGggY2xvY2tzIHNwZWNpZmllcnMuCitjbG9jay1yYW5nZXM6CUVtcHR5IHByb3BlcnR5IGluZGljYXRpbmcgdGhhdCBjaGlsZCBub2RlcyBjYW4gaW5oZXJpdCBuYW1lZAorCQljbG9ja3MgZnJvbSB0aGlzIG5vZGUuIFVzZWZ1bCBmb3IgYnVzIG5vZGVzIHRvIHByb3ZpZGUgYQorCQljbG9jayB0byB0aGVpciBjaGlsZHJlbi4KKworRm9yIGV4YW1wbGU6CisKKyAgICBkZXZpY2UgeworICAgICAgICBjbG9ja3MgPSA8Jm9zYyAxPiwgPCZyZWYgMD47CisgICAgICAgIGNsb2NrLW5hbWVzID0gImJhdWQiLCAicmVnaXN0ZXIiOworICAgIH07CisKKworVGhpcyByZXByZXNlbnRzIGEgZGV2aWNlIHdpdGggdHdvIGNsb2NrIGlucHV0cywgbmFtZWQgImJhdWQiIGFuZCAicmVnaXN0ZXIiLgorVGhlIGJhdWQgY2xvY2sgaXMgY29ubmVjdGVkIHRvIG91dHB1dCAxIG9mIHRoZSAmb3NjIGRldmljZSwgYW5kIHRoZSByZWdpc3RlcgorY2xvY2sgaXMgY29ubmVjdGVkIHRvIG91dHB1dCAwIG9mIHRoZSAmcmVmLgorCis9PUV4YW1wbGU9PQorCisgICAgLyogZXh0ZXJuYWwgb3NjaWxsYXRvciAqLworICAgIG9zYzogb3NjaWxsYXRvciB7CisgICAgICAgIGNvbXBhdGlibGUgPSAiZml4ZWQtY2xvY2siOworICAgICAgICAjY2xvY2stY2VsbHMgPSA8MT47CisgICAgICAgIGNsb2NrLWZyZXF1ZW5jeSAgPSA8MzI2Nzg+OworICAgICAgICBjbG9jay1vdXRwdXQtbmFtZXMgPSAib3NjIjsKKyAgICB9OworCisgICAgLyogcGhhc2UtbG9ja2VkLWxvb3AgZGV2aWNlLCBnZW5lcmF0ZXMgYSBoaWdoZXIgZnJlcXVlbmN5IGNsb2NrCisgICAgICogZnJvbSB0aGUgZXh0ZXJuYWwgb3NjaWxsYXRvciByZWZlcmVuY2UgKi8KKyAgICBwbGw6IHBsbEA0YzAwMCB7CisgICAgICAgIGNvbXBhdGlibGUgPSAidmVuZG9yLHNvbWUtcGxsLWludGVyZmFjZSIKKyAgICAgICAgI2Nsb2NrLWNlbGxzID0gPDE+OworICAgICAgICBjbG9ja3MgPSA8Jm9zYyAwPjsKKyAgICAgICAgY2xvY2stbmFtZXMgPSAicmVmIjsKKyAgICAgICAgcmVnID0gPDB4NGMwMDAgMHgxMDAwPjsKKyAgICAgICAgY2xvY2stb3V0cHV0LW5hbWVzID0gInBsbCIsICJwbGwtc3dpdGNoZWQiOworICAgIH07CisKKyAgICAvKiBVQVJULCB1c2luZyB0aGUgbG93IGZyZXF1ZW5jeSBvc2NpbGxhdG9yIGZvciB0aGUgYmF1ZCBjbG9jaywKKyAgICAgKiBhbmQgdGhlIGhpZ2ggZnJlcXVlbmN5IHN3aXRjaGVkIFBMTCBvdXRwdXQgZm9yIHJlZ2lzdGVyCisgICAgICogY2xvY2tpbmcgKi8KKyAgICB1YXJ0QGEwMDAgeworICAgICAgICBjb21wYXRpYmxlID0gImZzbCxpbXgtdWFydCI7CisgICAgICAgIHJlZyA9IDwweGEwMDAgMHgxMDAwPjsKKyAgICAgICAgaW50ZXJydXB0cyA9IDwzMz47CisgICAgICAgIGNsb2NrcyA9IDwmb3NjIDA+LCA8JnBsbCAxPjsKKyAgICAgICAgY2xvY2stbmFtZXMgPSAiYmF1ZCIsICJyZWdpc3RlciI7CisgICAgfTsKKworVGhpcyBEVCBmcmFnbWVudCBkZWZpbmVzIHRocmVlIGRldmljZXM6IGFuIGV4dGVybmFsIG9zY2lsbGF0b3IgdG8gcHJvdmlkZSBhCitsb3ctZnJlcXVlbmN5IHJlZmVyZW5jZSBjbG9jaywgYSBQTEwgZGV2aWNlIHRvIGdlbmVyYXRlIGEgaGlnaGVyIGZyZXF1ZW5jeQorY2xvY2sgc2lnbmFsLCBhbmQgYSBVQVJULgorCisqIFRoZSBvc2NpbGxhdG9yIGlzIGZpeGVkLWZyZXF1ZW5jeSwgYW5kIHByb3ZpZGVzIG9uZSBjbG9jayBvdXRwdXQsIG5hbWVkICJvc2MiLgorKiBUaGUgUExMIGlzIGJvdGggYSBjbG9jayBwcm92aWRlciBhbmQgYSBjbG9jayBjb25zdW1lci4gSXQgdXNlcyB0aGUgY2xvY2sKKyAgc2lnbmFsIGdlbmVyYXRlZCBieSB0aGUgZXh0ZXJuYWwgb3NjaWxsYXRvciwgYW5kIHByb3ZpZGVzIHR3byBvdXRwdXQgc2lnbmFscworICAoInBsbCIgYW5kICJwbGwtc3dpdGNoZWQiKS4KKyogVGhlIFVBUlQgaGFzIGl0cyBiYXVkIGNsb2NrIGNvbm5lY3RlZCB0aGUgZXh0ZXJuYWwgb3NjaWxsYXRvciBhbmQgaXRzCisgIHJlZ2lzdGVyIGNsb2NrIGNvbm5lY3RlZCB0byB0aGUgUExMIGNsb2NrICh0aGUgInBsbC1zd2l0Y2hlZCIgc2lnbmFsKQorCis9PUFzc2lnbmVkIGNsb2NrIHBhcmVudHMgYW5kIHJhdGVzPT0KKworU29tZSBwbGF0Zm9ybXMgbWF5IHJlcXVpcmUgaW5pdGlhbCBjb25maWd1cmF0aW9uIG9mIGRlZmF1bHQgcGFyZW50IGNsb2NrcworYW5kIGNsb2NrIGZyZXF1ZW5jaWVzLiBTdWNoIGEgY29uZmlndXJhdGlvbiBjYW4gYmUgc3BlY2lmaWVkIGluIGEgZGV2aWNlIHRyZWUKK25vZGUgdGhyb3VnaCBhc3NpZ25lZC1jbG9ja3MsIGFzc2lnbmVkLWNsb2NrLXBhcmVudHMgYW5kIGFzc2lnbmVkLWNsb2NrLXJhdGVzCitwcm9wZXJ0aWVzLiBUaGUgYXNzaWduZWQtY2xvY2stcGFyZW50cyBwcm9wZXJ0eSBzaG91bGQgY29udGFpbiBhIGxpc3Qgb2YgcGFyZW50CitjbG9ja3MgaW4gdGhlIGZvcm0gb2YgYSBwaGFuZGxlIGFuZCBjbG9jayBzcGVjaWZpZXIgcGFpciBhbmQgdGhlCithc3NpZ25lZC1jbG9jay1yYXRlcyBwcm9wZXJ0eSBzaG91bGQgY29udGFpbiBhIGxpc3Qgb2YgZnJlcXVlbmNpZXMgaW4gSHouIEJvdGgKK3RoZXNlIHByb3BlcnRpZXMgc2hvdWxkIGNvcnJlc3BvbmQgdG8gdGhlIGNsb2NrcyBsaXN0ZWQgaW4gdGhlIGFzc2lnbmVkLWNsb2NrcworcHJvcGVydHkuCisKK1RvIHNraXAgc2V0dGluZyBwYXJlbnQgb3IgcmF0ZSBvZiBhIGNsb2NrIGl0cyBjb3JyZXNwb25kaW5nIGVudHJ5IHNob3VsZCBiZQorc2V0IHRvIDAsIG9yIGNhbiBiZSBvbWl0dGVkIGlmIGl0IGlzIG5vdCBmb2xsb3dlZCBieSBhbnkgbm9uLXplcm8gZW50cnkuCisKKyAgICB1YXJ0QGEwMDAgeworICAgICAgICBjb21wYXRpYmxlID0gImZzbCxpbXgtdWFydCI7CisgICAgICAgIHJlZyA9IDwweGEwMDAgMHgxMDAwPjsKKyAgICAgICAgLi4uCisgICAgICAgIGNsb2NrcyA9IDwmb3NjIDA+LCA8JnBsbCAxPjsKKyAgICAgICAgY2xvY2stbmFtZXMgPSAiYmF1ZCIsICJyZWdpc3RlciI7CisKKyAgICAgICAgYXNzaWduZWQtY2xvY2tzID0gPCZjbGtjb24gMD4sIDwmcGxsIDI+OworICAgICAgICBhc3NpZ25lZC1jbG9jay1wYXJlbnRzID0gPCZwbGwgMj47CisgICAgICAgIGFzc2lnbmVkLWNsb2NrLXJhdGVzID0gPDA+LCA8NDYwODAwPjsKKyAgICB9OworCitJbiB0aGlzIGV4YW1wbGUgdGhlIDwmcGxsIDI+IGNsb2NrIGlzIHNldCBhcyBwYXJlbnQgb2YgY2xvY2sgPCZjbGtjb24gMD4gYW5kCit0aGUgPCZwbGwgMj4gY2xvY2sgaXMgYXNzaWduZWQgYSBmcmVxdWVuY3kgdmFsdWUgb2YgNDYwODAwIEh6LgorCitDb25maWd1cmluZyBhIGNsb2NrJ3MgcGFyZW50IGFuZCByYXRlIHRocm91Z2ggdGhlIGRldmljZSBub2RlIHRoYXQgY29uc3VtZXMKK3RoZSBjbG9jayBjYW4gYmUgZG9uZSBvbmx5IGZvciBjbG9ja3MgdGhhdCBoYXZlIGEgc2luZ2xlIHVzZXIuIFNwZWNpZnlpbmcKK2NvbmZsaWN0aW5nIHBhcmVudCBvciByYXRlIGNvbmZpZ3VyYXRpb24gaW4gbXVsdGlwbGUgY29uc3VtZXIgbm9kZXMgZm9yCithIHNoYXJlZCBjbG9jayBpcyBmb3JiaWRkZW4uCisKK0NvbmZpZ3VyYXRpb24gb2YgY29tbW9uIGNsb2Nrcywgd2hpY2ggYWZmZWN0IG11bHRpcGxlIGNvbnN1bWVyIGRldmljZXMgY2FuCitiZSBzaW1pbGFybHkgc3BlY2lmaWVkIGluIHRoZSBjbG9jayBwcm92aWRlciBub2RlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2NscHM3MTF4LWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbHBzNzExeC1jbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U1YTc0NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbHBzNzExeC1jbG9jay50eHQKQEAgLTAsMCArMSwxOSBAQAorKiBDbG9jayBiaW5kaW5ncyBmb3IgdGhlIENpcnJ1cyBMb2dpYyBDTFBTNzExWCBDUFVzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgICAgICAgOiBTaGFsbCBjb250YWluICJjaXJydXMsY2xwczcxMXgtY2xrIi4KKy0gcmVnICAgICAgICAgICAgICA6IEFkZHJlc3Mgb2YgdGhlIGludGVybmFsIHJlZ2lzdGVyIHNldC4KKy0gc3RhcnR1cC1mcmVxdWVuY3k6IEZhY3Rvcnkgc2V0IENQVSBzdGFydHVwIGZyZXF1ZW5jeSBpbiBIWi4KKy0gI2Nsb2NrLWNlbGxzICAgICA6IFNob3VsZCBiZSA8MT4uCisKK1RoZSBjbG9jayBjb25zdW1lciBzaG91bGQgc3BlY2lmeSB0aGUgZGVzaXJlZCBjbG9jayBieSBoYXZpbmcgdGhlIGNsb2NrCitJRCBpbiBpdHMgImNsb2NrcyIgcGhhbmRsZSBjZWxsLiBTZWUgaW5jbHVkZS9kdC1iaW5kaW5ncy9jbG9jay9jbHBzNzExeC1jbG9jay5oCitmb3IgdGhlIGZ1bGwgbGlzdCBvZiBDTFBTNzExWCBjbG9jayBJRHMuCisKK0V4YW1wbGU6CisJY2xrczogY2xrc0A4MDAwMDAwMCB7CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKwkJY29tcGF0aWJsZSA9ICJjaXJydXMsZXA3MzEyLWNsayIsICJjaXJydXMsY2xwczcxMXgtY2xrIjsKKwkJcmVnID0gPDB4ODAwMDAwMDAgMHhjMDAwPjsKKwkJc3RhcnR1cC1mcmVxdWVuY3kgPSA8NzM3MjgwMDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY3NyLGF0bGFzNy1jYXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2NzcixhdGxhczctY2FyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGQ2ZDEzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2NzcixhdGxhczctY2FyLnR4dApAQCAtMCwwICsxLDU1IEBACisqIENsb2NrIGFuZCByZXNldCBiaW5kaW5ncyBmb3IgQ1NSIGF0bGFzNworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgInNpcmYsYXRsYXM3LWNhciIKKy0gcmVnOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldAorLSAjY2xvY2stY2VsbHM6IFNob3VsZCBiZSA8MT4KKy0gI3Jlc2V0LWNlbGxzOiBTaG91bGQgYmUgPDE+CisKK1RoZSBjbG9jayBjb25zdW1lciBzaG91bGQgc3BlY2lmeSB0aGUgZGVzaXJlZCBjbG9jayBieSBoYXZpbmcgdGhlIGNsb2NrCitJRCBpbiBpdHMgImNsb2NrcyIgcGhhbmRsZSBjZWxsLgorVGhlIElEIGxpc3QgYXRsYXM3X2Nsa3MgZGVmaW5lZCBpbiBkcml2ZXJzL2Nsay9zaXJmL2Nsay1hdGxhczcuYworCitUaGUgcmVzZXQgY29uc3VtZXIgc2hvdWxkIHNwZWNpZnkgdGhlIGRlc2lyZWQgcmVzZXQgYnkgaGF2aW5nIHRoZSByZXNldAorSUQgaW4gaXRzICJyZXNldCIgcGhhbmRsZSBjZWxsLgorVGhlIElEIGxpc3QgYXRsYXM3X3Jlc2V0X3VuaXQgZGVmaW5lZCBpbiBkcml2ZXJzL2Nsay9zaXJmL2Nsay1hdGxhczcuYworCitFeGFtcGxlczogQ2xvY2sgYW5kIHJlc2V0IGNvbnRyb2xsZXIgbm9kZToKKworY2FyOiBjbG9jay1jb250cm9sbGVyQDE4NjIwMDAwIHsKKwljb21wYXRpYmxlID0gInNpcmYsYXRsYXM3LWNhciI7CisJcmVnID0gPDB4MTg2MjAwMDAgMHgxMDAwPjsKKwkjY2xvY2stY2VsbHMgPSA8MT47CisJI3Jlc2V0LWNlbGxzID0gPDE+OworfTsKKworRXhhbXBsZXM6IENvbnN1bWVycyB1c2luZyBjbG9jayBvciByZXNldDoKKwordGltZXJAMTBkYzAwMDAgeworCWNvbXBhdGlibGUgPSAic2lyZixtYWNyby10aWNrIjsKKwlyZWcgPSA8MHgxMGRjMDAwMCAweDEwMDA+OworCWNsb2NrcyA9IDwmY2FyIDU0PjsKKwlpbnRlcnJ1cHRzID0gPDAgMCAwPiwKKwkJICAgPDAgMSAwPiwKKwkJICAgPDAgMiAwPiwKKwkJICAgPDAgNDkgMD4sCisJCSAgIDwwIDUwIDA+LAorCQkgICA8MCA1MSAwPjsKK307CisKK3VhcnQxOiB1YXJ0QDE4MDIwMDAwIHsKKwljZWxsLWluZGV4ID0gPDE+OworCWNvbXBhdGlibGUgPSAic2lyZixtYWNyby11YXJ0IjsKKwlyZWcgPSA8MHgxODAyMDAwMCAweDEwMDA+OworCWNsb2NrcyA9IDwmY2xrcyA5NT47CisJaW50ZXJydXB0cyA9IDwwIDE4IDA+OworCWZpZm9zaXplID0gPDMyPjsKK307CisKK3ZwcEAxMzExMDAwMCB7CisJY29tcGF0aWJsZSA9ICJzaXJmLHByaW1hMi12cHAiOworCXJlZyA9IDwweDEzMTEwMDAwIDB4MTAwMDA+OworCWludGVycnVwdHMgPSA8MCAzMSAwPjsKKwljbG9ja3MgPSA8JmNhciA4NT47CisJcmVzZXRzID0gPCZjYXIgMjk+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9lZm0zMi1jbG9jay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svZWZtMzItY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2M2QyOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svZWZtMzItY2xvY2sudHh0CkBAIC0wLDAgKzEsMTEgQEAKKyogQ2xvY2sgYmluZGluZ3MgZm9yIEVuZXJneSBNaWNybyBlZm0zMiBHaWFudCBHZWNrbydzIENsb2NrIE1hbmFnZW1lbnQgVW5pdAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImVmbTMyZ2csY211IgorLSByZWc6IEJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQKKy0gaW50ZXJydXB0czogSW50ZXJydXB0IHVzZWQgYnkgdGhlIENNVQorLSAjY2xvY2stY2VsbHM6IFNob3VsZCBiZSA8MT4KKworVGhlIGNsb2NrIGNvbnN1bWVyIHNob3VsZCBzcGVjaWZ5IHRoZSBkZXNpcmVkIGNsb2NrIGJ5IGhhdmluZyB0aGUgY2xvY2sgSUQgaW4KK2l0cyAiY2xvY2tzIiBwaGFuZGxlIGNlbGwuIFRoZSBoZWFkZXIgZWZtMzItY2xrLmggY29udGFpbnMgYSBsaXN0IG9mIGF2YWlsYWJsZQorSURzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2VtZXYyLWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9lbWV2Mi1jbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY4Y2E2MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9lbWV2Mi1jbG9jay50eHQKQEAgLTAsMCArMSw5OCBAQAorRGV2aWNlIHRyZWUgQ2xvY2sgYmluZGluZ3MgZm9yIFJlbmVzYXMgRU1NQSBNb2JpbGUgRVYyCisKK1RoaXMgYmluZGluZyB1c2VzIHRoZSBjb21tb24gY2xvY2sgYmluZGluZy4KKworKiBTTVUKK1N5c3RlbSBNYW5hZ2VtZW50IFVuaXQgZGVzY3JpYmVkIGluIHVzZXIncyBtYW51YWwgUjE5VUgwMDM3RUoxMDAwX1NNVS4KK1RoaXMgaXMgbm90IGEgY2xvY2sgcHJvdmlkZXIsIGJ1dCBjbG9ja3MgdW5kZXIgU01VIGRlcGVuZCBvbiBpdC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJyZW5lc2FzLGVtZXYyLXNtdSIKKy0gcmVnOiBBZGRyZXNzIGFuZCBTaXplIG9mIFNNVSByZWdpc3RlcnMKKworKiBTTVVfQ0xLRElWCitGdW5jdGlvbiBibG9jayB3aXRoIGFuIGlucHV0IG11eCBhbmQgYSBkaXZpZGVyLCB3aGljaCBjb3JyZXNwb25kcyB0bworIlNlcmlhbCBjbG9jayBnZW5lcmF0b3IiIGluIGZpZy4iQ2xvY2sgU3lzdGVtIE92ZXJ2aWV3IiBvZiB0aGUgbWFudWFsLAorYW5kICJ4eHggZnJlcXVlbmN5IGRpdmlzaW9uIHNldHRpbmcgcmVnaXN0ZXIiIChYWFhDTEtESVYpIHJlZ2lzdGVycy4KK1RoaXMgbWFrZXMgaW50ZXJuYWwgKG5laXRoZXIgaW5wdXQgbm9yIG91dHB1dCkgY2xvY2sgdGhhdCBpcyBwcm92aWRlZAordG8gaW5wdXQgb2YgeHh4R0NMSyBibG9jay4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJyZW5lc2FzLGVtZXYyLXNtdS1jbGtkaXYiCistIHJlZzogQnl0ZSBvZmZzZXQgZnJvbSBTTVUgYmFzZSBhbmQgQml0IHBvc2l0aW9uIGluIHRoZSByZWdpc3RlcgorLSBjbG9ja3M6IFBhcmVudCBjbG9ja3MuIElucHV0IGNsb2NrcyBhcyBkZXNjcmliZWQgaW4gY2xvY2stYmluZGluZ3MudHh0CistICNjbG9jay1jZWxsczogU2hvdWxkIGJlIDwwPgorCisqIFNNVV9HQ0xLCitDbG9jayBnYXRpbmcgbm9kZSBzaG93biBhcyAiQ2xvY2sgc3RvcCBwcm9jZXNzaW5nIGJsb2NrIiBpbiB0aGUKK2ZpZy4iQ2xvY2sgU3lzdGVtIE92ZXJ2aWV3IiBvZiB0aGUgbWFudWFsLgorUmVnaXN0ZXJzIGFyZSAieHh4IGNsb2NrIGdhdGUgY29udHJvbCByZWdpc3RlciIgKFhYWEdDTEtDVFJMKS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJyZW5lc2FzLGVtZXYyLXNtdS1nY2xrIgorLSByZWc6IEJ5dGUgb2Zmc2V0IGZyb20gU01VIGJhc2UgYW5kIEJpdCBwb3NpdGlvbiBpbiB0aGUgcmVnaXN0ZXIKKy0gY2xvY2tzOiBJbnB1dCBjbG9jayBhcyBkZXNjcmliZWQgaW4gY2xvY2stYmluZGluZ3MudHh0CistICNjbG9jay1jZWxsczogU2hvdWxkIGJlIDwwPgorCitFeGFtcGxlIG9mIHByb3ZpZGVyOgorCit1c2lhX3UwX3NjbGtkaXY6IHVzaWFfdTBfc2Nsa2RpdiB7CisJY29tcGF0aWJsZSA9ICJyZW5lc2FzLGVtZXYyLXNtdS1jbGtkaXYiOworCXJlZyA9IDwweDYxMCAwPjsKKwljbG9ja3MgPSA8JnBsbDNfZm8+LCA8JnBsbDRfZm8+LCA8JnBsbDFfZm8+LCA8Jm9zYzFfZm8+OworCSNjbG9jay1jZWxscyA9IDwwPjsKK307CisKK3VzaWFfdTBfc2NsazogdXNpYV91MF9zY2xrIHsKKwljb21wYXRpYmxlID0gInJlbmVzYXMsZW1ldjItc211LWdjbGsiOworCXJlZyA9IDwweDRhMCAxPjsKKwljbG9ja3MgPSA8JnVzaWFfdTBfc2Nsa2Rpdj47CisJI2Nsb2NrLWNlbGxzID0gPDA+OworfTsKKworRXhhbXBsZSBvZiBjb25zdW1lcjoKKworc2VyaWFsQGUxMDIwMDAwIHsKKwljb21wYXRpYmxlID0gInJlbmVzYXMsZW0tdWFydCI7CisJcmVnID0gPDB4ZTEwMjAwMDAgMHgzOD47CisJaW50ZXJydXB0cyA9IDwwIDggMD47CisJY2xvY2tzID0gPCZ1c2lhX3UwX3NjbGs+OworCWNsb2NrLW5hbWVzID0gInNjbGsiOworfTsKKworRXhhbXBsZSBvZiBjbG9jay10cmVlIGRlc2NyaXB0aW9uOgorCisgVGhpcyBkZXNjcmliZXMgYSBjbG9jayBwYXRoIGluIHRoZSBjbG9jayB0cmVlCisgIGMzMmtpIC0+IHBsbDNfZm8gLT4gdXNpYV91MF9zY2xrZGl2IC0+IHVzaWFfdTBfc2NsaworCitzbXVAZTAxMTAwMDAgeworCWNvbXBhdGlibGUgPSAicmVuZXNhcyxlbWV2Mi1zbXUiOworCXJlZyA9IDwweGUwMTEwMDAwIDB4MTAwMDA+OworCSNhZGRyZXNzLWNlbGxzID0gPDI+OworCSNzaXplLWNlbGxzID0gPDA+OworCisJYzMya2k6IGMzMmtpIHsKKwkJY29tcGF0aWJsZSA9ICJmaXhlZC1jbG9jayI7CisJCWNsb2NrLWZyZXF1ZW5jeSA9IDwzMjc2OD47CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwl9OworCXBsbDNfZm86IHBsbDNfZm8geworCQljb21wYXRpYmxlID0gImZpeGVkLWZhY3Rvci1jbG9jayI7CisJCWNsb2NrcyA9IDwmYzMya2k+OworCQljbG9jay1kaXYgPSA8MT47CisJCWNsb2NrLW11bHQgPSA8NzAwMD47CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwl9OworCXVzaWFfdTBfc2Nsa2RpdjogdXNpYV91MF9zY2xrZGl2IHsKKwkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLGVtZXYyLXNtdS1jbGtkaXYiOworCQlyZWcgPSA8MHg2MTAgMD47CisJCWNsb2NrcyA9IDwmcGxsM19mbz47CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwl9OworCXVzaWFfdTBfc2NsazogdXNpYV91MF9zY2xrIHsKKwkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLGVtZXYyLXNtdS1nY2xrIjsKKwkJcmVnID0gPDB4NGEwIDE+OworCQljbG9ja3MgPSA8JnVzaWFfdTBfc2Nsa2Rpdj47CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9leHlub3MzMjUwLWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9leHlub3MzMjUwLWNsb2NrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTczOGI4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2V4eW5vczMyNTAtY2xvY2sudHh0CkBAIC0wLDAgKzEsNTcgQEAKKyogU2Ftc3VuZyBFeHlub3MzMjUwIENsb2NrIENvbnRyb2xsZXIKKworVGhlIEV4eW5vczMyNTAgY2xvY2sgY29udHJvbGxlciBnZW5lcmF0ZXMgYW5kIHN1cHBsaWVzIGNsb2NrIHRvIHZhcmlvdXMKK2NvbnRyb2xsZXJzIHdpdGhpbiB0aGUgRXh5bm9zMzI1MCBTb0MuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nLgorICAtICJzYW1zdW5nLGV4eW5vczMyNTAtY211IiAtIGNvbnRyb2xsZXIgY29tcGF0aWJsZSB3aXRoIEV4eW5vczMyNTAgU29DLgorICAtICJzYW1zdW5nLGV4eW5vczMyNTAtY211LWRtYyIgLSBjb250cm9sbGVyIGNvbXBhdGlibGUgd2l0aAorICAgIEV4eW5vczMyNTAgU29DIGZvciBEeW5hbWljIE1lbW9yeSBDb250cm9sbGVyIGRvbWFpbi4KKyAgLSAic2Ftc3VuZyxleHlub3MzMjUwLWNtdS1pc3AiIC0gSVNQIGJsb2NrIGNsb2NrIGNvbnRyb2xsZXIgY29tcGF0aWJsZQorICAgICB3aXRoIEV4eW5vczMyNTAgU09DCisKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgIHJlZ2lvbi4KKworLSAjY2xvY2stY2VsbHM6IHNob3VsZCBiZSAxLgorCitFYWNoIGNsb2NrIGlzIGFzc2lnbmVkIGFuIGlkZW50aWZpZXIgYW5kIGNsaWVudCBub2RlcyBjYW4gdXNlIHRoaXMgaWRlbnRpZmllcgordG8gc3BlY2lmeSB0aGUgY2xvY2sgd2hpY2ggdGhleSBjb25zdW1lLgorCitBbGwgYXZhaWxhYmxlIGNsb2NrcyBhcmUgZGVmaW5lZCBhcyBwcmVwcm9jZXNzb3IgbWFjcm9zIGluCitkdC1iaW5kaW5ncy9jbG9jay9leHlub3MzMjUwLmggaGVhZGVyIGFuZCBjYW4gYmUgdXNlZCBpbiBkZXZpY2UKK3RyZWUgc291cmNlcy4KKworRXhhbXBsZSAxOiBFeGFtcGxlcyBvZiBjbG9jayBjb250cm9sbGVyIG5vZGVzIGFyZSBsaXN0ZWQgYmVsb3cuCisKKwljbXU6IGNsb2NrLWNvbnRyb2xsZXJAMTAwMzAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zMzI1MC1jbXUiOworCQlyZWcgPSA8MHgxMDAzMDAwMCAweDIwMDAwPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCX07CisKKwljbXVfZG1jOiBjbG9jay1jb250cm9sbGVyQDEwNUMwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczMyNTAtY211LWRtYyI7CisJCXJlZyA9IDwweDEwNUMwMDAwIDB4MjAwMD47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKwl9OworCisJY211X2lzcDogY2xvY2stY29udHJvbGxlckAxMDA0ODAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3MzMjUwLWNtdS1pc3AiOworCQlyZWcgPSA8MHgxMDA0ODAwMCAweDEwMDA+OworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJfTsKKworRXhhbXBsZSAyOiBVQVJUIGNvbnRyb2xsZXIgbm9kZSB0aGF0IGNvbnN1bWVzIHRoZSBjbG9jayBnZW5lcmF0ZWQgYnkgdGhlIGNsb2NrCisJICAgY29udHJvbGxlci4gUmVmZXIgdG8gdGhlIHN0YW5kYXJkIGNsb2NrIGJpbmRpbmdzIGZvciBpbmZvcm1hdGlvbgorCSAgIGFib3V0ICdjbG9ja3MnIGFuZCAnY2xvY2stbmFtZXMnIHByb3BlcnR5LgorCisJc2VyaWFsQDEzODAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczQyMTAtdWFydCI7CisJCXJlZyA9IDwweDEzODAwMDAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDEwOSAwPjsKKwkJY2xvY2tzID0gPCZjbXUgQ0xLX1VBUlQwPiwgPCZjbXUgQ0xLX1NDTEtfVUFSVDA+OworCQljbG9jay1uYW1lcyA9ICJ1YXJ0IiwgImNsa191YXJ0X2JhdWQwIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2V4eW5vczQtY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2V4eW5vczQtY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1YTViMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svZXh5bm9zNC1jbG9jay50eHQKQEAgLTAsMCArMSw0MyBAQAorKiBTYW1zdW5nIEV4eW5vczQgQ2xvY2sgQ29udHJvbGxlcgorCitUaGUgRXh5bm9zNCBjbG9jayBjb250cm9sbGVyIGdlbmVyYXRlcyBhbmQgc3VwcGxpZXMgY2xvY2sgdG8gdmFyaW91cyBjb250cm9sbGVycword2l0aGluIHRoZSBFeHlub3M0IFNvQy4gVGhlIGNsb2NrIGJpbmRpbmcgZGVzY3JpYmVkIGhlcmUgaXMgYXBwbGljYWJsZSB0byBhbGwKK1NvQydzIGluIHRoZSBFeHlub3M0IGZhbWlseS4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcuCisgIC0gInNhbXN1bmcsZXh5bm9zNDIxMC1jbG9jayIgLSBjb250cm9sbGVyIGNvbXBhdGlibGUgd2l0aCBFeHlub3M0MjEwIFNvQy4KKyAgLSAic2Ftc3VuZyxleHlub3M0NDEyLWNsb2NrIiAtIGNvbnRyb2xsZXIgY29tcGF0aWJsZSB3aXRoIEV4eW5vczQ0MTIgU29DLgorCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICByZWdpb24uCisKKy0gI2Nsb2NrLWNlbGxzOiBzaG91bGQgYmUgMS4KKworRWFjaCBjbG9jayBpcyBhc3NpZ25lZCBhbiBpZGVudGlmaWVyIGFuZCBjbGllbnQgbm9kZXMgY2FuIHVzZSB0aGlzIGlkZW50aWZpZXIKK3RvIHNwZWNpZnkgdGhlIGNsb2NrIHdoaWNoIHRoZXkgY29uc3VtZS4KKworQWxsIGF2YWlsYWJsZSBjbG9ja3MgYXJlIGRlZmluZWQgYXMgcHJlcHJvY2Vzc29yIG1hY3JvcyBpbgorZHQtYmluZGluZ3MvY2xvY2svZXh5bm9zNC5oIGhlYWRlciBhbmQgY2FuIGJlIHVzZWQgaW4gZGV2aWNlCit0cmVlIHNvdXJjZXMuCisKK0V4YW1wbGUgMTogQW4gZXhhbXBsZSBvZiBhIGNsb2NrIGNvbnRyb2xsZXIgbm9kZSBpcyBsaXN0ZWQgYmVsb3cuCisKKwljbG9jazogY2xvY2stY29udHJvbGxlckAweDEwMDMwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczQyMTAtY2xvY2siOworCQlyZWcgPSA8MHgxMDAzMDAwMCAweDIwMDAwPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCX07CisKK0V4YW1wbGUgMjogVUFSVCBjb250cm9sbGVyIG5vZGUgdGhhdCBjb25zdW1lcyB0aGUgY2xvY2sgZ2VuZXJhdGVkIGJ5IHRoZSBjbG9jaworCSAgIGNvbnRyb2xsZXIuIFJlZmVyIHRvIHRoZSBzdGFuZGFyZCBjbG9jayBiaW5kaW5ncyBmb3IgaW5mb3JtYXRpb24KKwkgICBhYm91dCAnY2xvY2tzJyBhbmQgJ2Nsb2NrLW5hbWVzJyBwcm9wZXJ0eS4KKworCXNlcmlhbEAxMzgyMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M0MjEwLXVhcnQiOworCQlyZWcgPSA8MHgxMzgyMDAwMCAweDEwMD47CisJCWludGVycnVwdHMgPSA8MCA1NCAwPjsKKwkJY2xvY2tzID0gPCZjbG9jayBDTEtfVUFSVDI+LCA8JmNsb2NrIENMS19TQ0xLX1VBUlQyPjsKKwkJY2xvY2stbmFtZXMgPSAidWFydCIsICJjbGtfdWFydF9iYXVkMCI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9leHlub3M0NDE1LWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9leHlub3M0NDE1LWNsb2NrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDdkOThiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2V4eW5vczQ0MTUtY2xvY2sudHh0CkBAIC0wLDAgKzEsMzggQEAKKyogU2Ftc3VuZyBFeHlub3M0NDE1IENsb2NrIENvbnRyb2xsZXIKKworVGhlIEV4eW5vczQ0MTUgY2xvY2sgY29udHJvbGxlciBnZW5lcmF0ZXMgYW5kIHN1cHBsaWVzIGNsb2NrIHRvIHZhcmlvdXMKK2NvbnN1bWVyIGRldmljZXMgd2l0aGluIHRoZSBFeHlub3M0NDE1IFNvQy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisgIC0gInNhbXN1bmcsZXh5bm9zNDQxNS1jbXUiIC0gZm9yIHRoZSBtYWluIHN5c3RlbSBjbG9ja3MgY29udHJvbGxlcgorICAgIChDTVVfTEVGVEJVUywgQ01VX1JJR0hUQlVTLCBDTVVfVE9QLCBDTVVfQ1BVIGNsb2NrIGRvbWFpbnMpLgorICAtICJzYW1zdW5nLGV4eW5vczQ0MTUtY211LWRtYyIgLSBmb3IgdGhlIEV4eW5vczQ0MTUgU29DIERSQU0gTWVtb3J5CisgICAgQ29udHJvbGxlciAoRE1DKSBkb21haW4gY2xvY2sgY29udHJvbGxlci4KKworLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorCistICNjbG9jay1jZWxsczogc2hvdWxkIGJlIDEuCisKK0VhY2ggY2xvY2sgaXMgYXNzaWduZWQgYW4gaWRlbnRpZmllciBhbmQgY2xpZW50IG5vZGVzIGNhbiB1c2UgdGhpcyBpZGVudGlmaWVyCit0byBzcGVjaWZ5IHRoZSBjbG9jayB3aGljaCB0aGV5IGNvbnN1bWUuCisKK0FsbCBhdmFpbGFibGUgY2xvY2tzIGFyZSBkZWZpbmVkIGFzIHByZXByb2Nlc3NvciBtYWNyb3MgaW4KK2R0LWJpbmRpbmdzL2Nsb2NrL2V4eW5vczQ0MTUuaCBoZWFkZXIgYW5kIGNhbiBiZSB1c2VkIGluIGRldmljZQordHJlZSBzb3VyY2VzLgorCitFeGFtcGxlIDE6IEFuIGV4YW1wbGUgb2YgYSBjbG9jayBjb250cm9sbGVyIG5vZGUgaXMgbGlzdGVkIGJlbG93LgorCisJY211OiBjbG9jay1jb250cm9sbGVyQDEwMDMwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczQ0MTUtY211IjsKKwkJcmVnID0gPDB4MTAwMzAwMDAgMHgxODAwMD47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKwl9OworCisJY211LWRtYzogY2xvY2stY29udHJvbGxlckAxMDVDMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M0NDE1LWNtdS1kbWMiOworCQlyZWcgPSA8MHgxMDVDMDAwMCAweDMwMDA+OworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9leHlub3M1MjUwLWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9leHlub3M1MjUwLWNsb2NrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzZlYWNkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2V4eW5vczUyNTAtY2xvY2sudHh0CkBAIC0wLDAgKzEsNDEgQEAKKyogU2Ftc3VuZyBFeHlub3M1MjUwIENsb2NrIENvbnRyb2xsZXIKKworVGhlIEV4eW5vczUyNTAgY2xvY2sgY29udHJvbGxlciBnZW5lcmF0ZXMgYW5kIHN1cHBsaWVzIGNsb2NrIHRvIHZhcmlvdXMKK2NvbnRyb2xsZXJzIHdpdGhpbiB0aGUgRXh5bm9zNTI1MCBTb0MuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nLgorICAtICJzYW1zdW5nLGV4eW5vczUyNTAtY2xvY2siIC0gY29udHJvbGxlciBjb21wYXRpYmxlIHdpdGggRXh5bm9zNTI1MCBTb0MuCisKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgIHJlZ2lvbi4KKworLSAjY2xvY2stY2VsbHM6IHNob3VsZCBiZSAxLgorCitFYWNoIGNsb2NrIGlzIGFzc2lnbmVkIGFuIGlkZW50aWZpZXIgYW5kIGNsaWVudCBub2RlcyBjYW4gdXNlIHRoaXMgaWRlbnRpZmllcgordG8gc3BlY2lmeSB0aGUgY2xvY2sgd2hpY2ggdGhleSBjb25zdW1lLgorCitBbGwgYXZhaWxhYmxlIGNsb2NrcyBhcmUgZGVmaW5lZCBhcyBwcmVwcm9jZXNzb3IgbWFjcm9zIGluCitkdC1iaW5kaW5ncy9jbG9jay9leHlub3M1MjUwLmggaGVhZGVyIGFuZCBjYW4gYmUgdXNlZCBpbiBkZXZpY2UKK3RyZWUgc291cmNlcy4KKworRXhhbXBsZSAxOiBBbiBleGFtcGxlIG9mIGEgY2xvY2sgY29udHJvbGxlciBub2RlIGlzIGxpc3RlZCBiZWxvdy4KKworCWNsb2NrOiBjbG9jay1jb250cm9sbGVyQDB4MTAwMTAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTI1MC1jbG9jayI7CisJCXJlZyA9IDwweDEwMDEwMDAwIDB4MzAwMDA+OworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJfTsKKworRXhhbXBsZSAyOiBVQVJUIGNvbnRyb2xsZXIgbm9kZSB0aGF0IGNvbnN1bWVzIHRoZSBjbG9jayBnZW5lcmF0ZWQgYnkgdGhlIGNsb2NrCisJICAgY29udHJvbGxlci4gUmVmZXIgdG8gdGhlIHN0YW5kYXJkIGNsb2NrIGJpbmRpbmdzIGZvciBpbmZvcm1hdGlvbgorCSAgIGFib3V0ICdjbG9ja3MnIGFuZCAnY2xvY2stbmFtZXMnIHByb3BlcnR5LgorCisJc2VyaWFsQDEzODIwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczQyMTAtdWFydCI7CisJCXJlZyA9IDwweDEzODIwMDAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDU0IDA+OworCQljbG9ja3MgPSA8JmNsb2NrIENMS19VQVJUMj4sIDwmY2xvY2sgQ0xLX1NDTEtfVUFSVDI+OworCQljbG9jay1uYW1lcyA9ICJ1YXJ0IiwgImNsa191YXJ0X2JhdWQwIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2V4eW5vczUyNjAtY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2V4eW5vczUyNjAtY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0OTZiMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svZXh5bm9zNTI2MC1jbG9jay50eHQKQEAgLTAsMCArMSwxOTAgQEAKKyogU2Ftc3VuZyBFeHlub3M1MjYwIENsb2NrIENvbnRyb2xsZXIKKworRXh5bm9zNTI2MCBoYXMgMTMgY2xvY2sgY29udHJvbGxlcnMgd2hpY2ggYXJlIGluc3RhbnRpYXRlZAoraW5kZXBlbmRlbnRseSBmcm9tIHRoZSBkZXZpY2UtdHJlZS4gVGhlc2UgY2xvY2sgY29udHJvbGxlcnMKK2dlbmVyYXRlIGFuZCBzdXBwbHkgY2xvY2tzIHRvIHZhcmlvdXMgaGFyZHdhcmUgYmxvY2tzIHdpdGhpbgordGhlIFNvQy4KKworRWFjaCBjbG9jayBpcyBhc3NpZ25lZCBhbiBpZGVudGlmaWVyIGFuZCBjbGllbnQgbm9kZXMgY2FuIHVzZQordGhpcyBpZGVudGlmaWVyIHRvIHNwZWNpZnkgdGhlIGNsb2NrIHdoaWNoIHRoZXkgY29uc3VtZS4gQWxsCithdmFpbGFibGUgY2xvY2tzIGFyZSBkZWZpbmVkIGFzIHByZXByb2Nlc3NvciBtYWNyb3MgaW4KK2R0LWJpbmRpbmdzL2Nsb2NrL2V4eW5vczUyNjAtY2xrLmggaGVhZGVyIGFuZCBjYW4gYmUgdXNlZCBpbgorZGV2aWNlIHRyZWUgc291cmNlcy4KKworRXh0ZXJuYWwgY2xvY2tzOgorCitUaGVyZSBhcmUgc2V2ZXJhbCBjbG9ja3MgdGhhdCBhcmUgZ2VuZXJhdGVkIG91dHNpZGUgdGhlIFNvQy4gSXQKK2lzIGV4cGVjdGVkIHRoYXQgdGhleSBhcmUgZGVmaW5lZCB1c2luZyBzdGFuZGFyZCBjbG9jayBiaW5kaW5ncword2l0aCBmb2xsb3dpbmcgY2xvY2stb3V0cHV0LW5hbWVzOgorCisgLSAiZmluX3BsbCIgLSBQTEwgaW5wdXQgY2xvY2sgZnJvbSBYWFRJCisgLSAieHJ0Y3h0aSIgLSBpbnB1dCBjbG9jayBmcm9tIFhSVENYVEkKKyAtICJpb2Nsa19wY21fZXh0Y2xrIiAtIHBjbSBleHRlcm5hbCBvcGVyYXRpb24gY2xvY2sKKyAtICJpb2Nsa19zcGRpZl9leHRjbGsiIC0gc3BkaWYgZXh0ZXJuYWwgb3BlcmF0aW9uIGNsb2NrCisgLSAiaW9jbGtfaTJzX2NkY2xrIiAtIGkyczAgY29kZWMgY2xvY2sKKworUGh5IGNsb2NrczoKKworVGhlcmUgYXJlIHNldmVyYWwgY2xvY2tzIHdoaWNoIGFyZSBnZW5lcmF0ZWQgYnkgc3BlY2lmaWMgUEhZcy4KK1RoZXNlIGNsb2NrcyBhcmUgZmVkIGludG8gdGhlIGNsb2NrIGNvbnRyb2xsZXIgYW5kIHRoZW4gcm91dGVkIHRvCit0aGUgaGFyZHdhcmUgYmxvY2tzLiBUaGVzZSBjbG9ja3MgYXJlIGRlZmluZWQgYXMgZml4ZWQgY2xvY2tzIGluIHRoZQorZHJpdmVyIHdpdGggZm9sbG93aW5nIG5hbWVzOgorCisgLSAicGh5Y2xrX2RwdHhfcGh5X2NoM190eGRfY2xrIiAtIGRwIHBoeSBjbG9jayBmb3IgY2hhbm5lbCAzCisgLSAicGh5Y2xrX2RwdHhfcGh5X2NoMl90eGRfY2xrIiAtIGRwIHBoeSBjbG9jayBmb3IgY2hhbm5lbCAyCisgLSAicGh5Y2xrX2RwdHhfcGh5X2NoMV90eGRfY2xrIiAtIGRwIHBoeSBjbG9jayBmb3IgY2hhbm5lbCAxCisgLSAicGh5Y2xrX2RwdHhfcGh5X2NoMF90eGRfY2xrIiAtIGRwIHBoeSBjbG9jayBmb3IgY2hhbm5lbCAwCisgLSAicGh5Y2xrX2hkbWlfcGh5X3RtZHNfY2xrbyIgLSBoZG1pIHBoeSB0bWRzIGNsb2NrCisgLSAicGh5Y2xrX2hkbWlfcGh5X3BpeGVsX2Nsa28iIC0gaGRtaSBwaHkgcGl4ZWwgY2xvY2sKKyAtICJwaHljbGtfaGRtaV9saW5rX29fdG1kc19jbGtoaSIgLSBoZG1pIHBoeSBmb3IgaGRtaSBsaW5rCisgLSAicGh5Y2xrX2RwdHhfcGh5X29fcmVmX2Nsa18yNG0iIC0gZHAgcGh5IHJlZmVyZW5jZSBjbG9jaworIC0gInBoeWNsa19kcHR4X3BoeV9jbGtfZGl2MiIKKyAtICJwaHljbGtfbWlwaV9kcGh5XzRsX21fcnhjbGtlc2MwIgorIC0gInBoeWNsa191c2Job3N0MjBfcGh5X3BoeWNsb2NrIiAtIHVzYiAyLjAgcGh5IGNsb2NrCisgLSAicGh5Y2xrX3VzYmhvc3QyMF9waHlfZnJlZWNsayIKKyAtICJwaHljbGtfdXNiaG9zdDIwX3BoeV9jbGs0OG1vaGNpIgorIC0gInBoeWNsa191c2JkcmQzMF91ZHJkMzBfcGlwZV9wY2xrIgorIC0gInBoeWNsa191c2JkcmQzMF91ZHJkMzBfcGh5Y2xvY2siIC0gdXNiIDMuMCBwaHkgY2xvY2sKKworUmVxdWlyZWQgUHJvcGVydGllcyBmb3IgQ2xvY2sgQ29udHJvbGxlcjoKKworIC0gY29tcGF0aWJsZTogc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nLgorCTEpICJzYW1zdW5nLGV4eW5vczUyNjAtY2xvY2stdG9wIgorCTIpICJzYW1zdW5nLGV4eW5vczUyNjAtY2xvY2stcGVyaSIKKwkzKSAic2Ftc3VuZyxleHlub3M1MjYwLWNsb2NrLWVnbCIKKwk0KSAic2Ftc3VuZyxleHlub3M1MjYwLWNsb2NrLWtmYyIKKwk1KSAic2Ftc3VuZyxleHlub3M1MjYwLWNsb2NrLWcyZCIKKwk2KSAic2Ftc3VuZyxleHlub3M1MjYwLWNsb2NrLW1pZiIKKwk3KSAic2Ftc3VuZyxleHlub3M1MjYwLWNsb2NrLW1mYyIKKwk4KSAic2Ftc3VuZyxleHlub3M1MjYwLWNsb2NrLWczZCIKKwk5KSAic2Ftc3VuZyxleHlub3M1MjYwLWNsb2NrLWZzeXMiCisJMTApICJzYW1zdW5nLGV4eW5vczUyNjAtY2xvY2stYXVkIgorCTExKSAic2Ftc3VuZyxleHlub3M1MjYwLWNsb2NrLWlzcCIKKwkxMikgInNhbXN1bmcsZXh5bm9zNTI2MC1jbG9jay1nc2NsIgorCTEzKSAic2Ftc3VuZyxleHlub3M1MjYwLWNsb2NrLWRpc3AiCisKKyAtIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCB0aGUgbGVuZ3RoIG9mCisJbWVtb3J5IG1hcHBlZCByZWdpb24uCisKKyAtICNjbG9jay1jZWxsczogc2hvdWxkIGJlIDEuCisKKyAtIGNsb2NrczogbGlzdCBvZiBjbG9jayBpZGVudGlmaWVycyB3aGljaCBhcmUgZmVkIGFzIHRoZSBpbnB1dCB0bworCXRoZSBnaXZlbiBjbG9jayBjb250cm9sbGVyLiBQbGVhc2UgcmVmZXIgdGhlIG5leHQgc2VjdGlvbiB0byBmaW5kCisJdGhlIGlucHV0IGNsb2NrcyBmb3IgYSBnaXZlbiBjb250cm9sbGVyLgorCisgLSBjbG9jay1uYW1lczogbGlzdCBvZiBuYW1lcyBvZiBjbG9ja3Mgd2hpY2ggYXJlIGZlZCBhcyB0aGUgaW5wdXQKKwl0byB0aGUgZ2l2ZW4gY2xvY2sgY29udHJvbGxlci4KKworSW5wdXQgY2xvY2tzIGZvciB0b3AgY2xvY2sgY29udHJvbGxlcjoKKwktIGZpbl9wbGwKKwktIGRvdXRfbWVtX3BsbAorCS0gZG91dF9idXNfcGxsCisJLSBkb3V0X21lZGlhX3BsbAorCitJbnB1dCBjbG9ja3MgZm9yIHBlcmkgY2xvY2sgY29udHJvbGxlcjoKKwktIGZpbl9wbGwKKwktIGlvY2xrX3BjbV9leHRjbGsKKwktIGlvY2xrX2kyc19jZGNsaworCS0gaW9jbGtfc3BkaWZfZXh0Y2xrCisJLSBwaHljbGtfaGRtaV9waHlfcmVmX2NrbworCS0gZG91dF9hY2xrX3BlcmlfNjYKKwktIGRvdXRfc2Nsa19wZXJpX3VhcnQwCisJLSBkb3V0X3NjbGtfcGVyaV91YXJ0MQorCS0gZG91dF9zY2xrX3BlcmlfdWFydDIKKwktIGRvdXRfc2Nsa19wZXJpX3NwaTBfYgorCS0gZG91dF9zY2xrX3Blcmlfc3BpMV9iCisJLSBkb3V0X3NjbGtfcGVyaV9zcGkyX2IKKwktIGRvdXRfYWNsa19wZXJpX2F1ZAorCS0gZG91dF9zY2xrX3Blcmlfc3BpMF9iCisKK0lucHV0IGNsb2NrcyBmb3IgZWdsIGNsb2NrIGNvbnRyb2xsZXI6CisJLSBmaW5fcGxsCisJLSBkb3V0X2J1c19wbGwKKworSW5wdXQgY2xvY2tzIGZvciBrZmMgY2xvY2sgY29udHJvbGxlcjoKKwktIGZpbl9wbGwKKwktIGRvdXRfbWVkaWFfcGxsCisKK0lucHV0IGNsb2NrcyBmb3IgZzJkIGNsb2NrIGNvbnRyb2xsZXI6CisJLSBmaW5fcGxsCisJLSBkb3V0X2FjbGtfZzJkXzMzMworCitJbnB1dCBjbG9ja3MgZm9yIG1pZiBjbG9jayBjb250cm9sbGVyOgorCS0gZmluX3BsbAorCitJbnB1dCBjbG9ja3MgZm9yIG1mYyBjbG9jayBjb250cm9sbGVyOgorCS0gZmluX3BsbAorCS0gZG91dF9hY2xrX21mY18zMzMKKworSW5wdXQgY2xvY2tzIGZvciBnM2QgY2xvY2sgY29udHJvbGxlcjoKKwktIGZpbl9wbGwKKworSW5wdXQgY2xvY2tzIGZvciBmc3lzIGNsb2NrIGNvbnRyb2xsZXI6CisJLSBmaW5fcGxsCisJLSBwaHljbGtfdXNiaG9zdDIwX3BoeV9waHljbG9jaworCS0gcGh5Y2xrX3VzYmhvc3QyMF9waHlfZnJlZWNsaworCS0gcGh5Y2xrX3VzYmhvc3QyMF9waHlfY2xrNDhtb2hjaQorCS0gcGh5Y2xrX3VzYmRyZDMwX3VkcmQzMF9waXBlX3BjbGsKKwktIHBoeWNsa191c2JkcmQzMF91ZHJkMzBfcGh5Y2xvY2sKKwktIGRvdXRfYWNsa19mc3lzXzIwMAorCitJbnB1dCBjbG9ja3MgZm9yIGF1ZCBjbG9jayBjb250cm9sbGVyOgorCS0gZmluX3BsbAorCS0gZm91dF9hdWRfcGxsCisJLSBpb2Nsa19pMnNfY2RjbGsKKwktIGlvY2xrX3BjbV9leHRjbGsKKworSW5wdXQgY2xvY2tzIGZvciBpc3AgY2xvY2sgY29udHJvbGxlcjoKKwktIGZpbl9wbGwKKwktIGRvdXRfYWNsa19pc3AxXzI2NgorCS0gZG91dF9hY2xrX2lzcDFfNDAwCisJLSBtb3V0X2FjbGtfaXNwMV8yNjYKKworSW5wdXQgY2xvY2tzIGZvciBnc2NsIGNsb2NrIGNvbnRyb2xsZXI6CisJLSBmaW5fcGxsCisJLSBkb3V0X2FjbGtfZ3NjbF80MDAKKwktIGRvdXRfYWNsa19nc2NsXzMzMworCitJbnB1dCBjbG9ja3MgZm9yIGRpc3AgY2xvY2sgY29udHJvbGxlcjoKKwktIGZpbl9wbGwKKwktIHBoeWNsa19kcHR4X3BoeV9jaDNfdHhkX2NsaworCS0gcGh5Y2xrX2RwdHhfcGh5X2NoMl90eGRfY2xrCisJLSBwaHljbGtfZHB0eF9waHlfY2gxX3R4ZF9jbGsKKwktIHBoeWNsa19kcHR4X3BoeV9jaDBfdHhkX2NsaworCS0gcGh5Y2xrX2hkbWlfcGh5X3RtZHNfY2xrbworCS0gcGh5Y2xrX2hkbWlfcGh5X3JlZl9jbGtvCisJLSBwaHljbGtfaGRtaV9waHlfcGl4ZWxfY2xrbworCS0gcGh5Y2xrX2hkbWlfbGlua19vX3RtZHNfY2xraGkKKwktIHBoeWNsa19taXBpX2RwaHlfNGxfbV90eGJ5dGVfY2xraHMKKwktIHBoeWNsa19kcHR4X3BoeV9vX3JlZl9jbGtfMjRtCisJLSBwaHljbGtfZHB0eF9waHlfY2xrX2RpdjIKKwktIHBoeWNsa19taXBpX2RwaHlfNGxfbV9yeGNsa2VzYzAKKwktIHBoeWNsa19oZG1pX3BoeV9yZWZfY2tvCisJLSBpb2Nsa19zcGRpZl9leHRjbGsKKwktIGRvdXRfYWNsa19wZXJpX2F1ZAorCS0gZG91dF9hY2xrX2Rpc3BfMjIyCisJLSBkb3V0X3NjbGtfZGlzcF9waXhlbAorCS0gZG91dF9hY2xrX2Rpc3BfMzMzCisKK0V4YW1wbGUgMTogQW4gZXhhbXBsZSBvZiBhIGNsb2NrIGNvbnRyb2xsZXIgbm9kZSBpcyBsaXN0ZWQgYmVsb3cuCisKKwljbG9ja19tZmM6IGNsb2NrLWNvbnRyb2xsZXJAMTEwOTAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTI2MC1jbG9jay1tZmMiOworCQljbG9jayA9IDwmZmluX3BsbD4sIDwmY2xvY2tfdG9wIFRPUF9ET1VUX0FDTEtfTUZDXzMzMz47CisJCWNsb2NrLW5hbWVzID0gImZpbl9wbGwiLCAiZG91dF9hY2xrX21mY18zMzMiOworCQlyZWcgPSA8MHgxMTA5MDAwMCAweDEwMDAwPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCX07CisKK0V4YW1wbGUgMjogVUFSVCBjb250cm9sbGVyIG5vZGUgdGhhdCBjb25zdW1lcyB0aGUgY2xvY2sgZ2VuZXJhdGVkIGJ5IHRoZQorCQlwZXJpIGNsb2NrIGNvbnRyb2xsZXIuIFJlZmVyIHRvIHRoZSBzdGFuZGFyZCBjbG9jayBiaW5kaW5ncyBmb3IKKwkJaW5mb3JtYXRpb24gYWJvdXQgJ2Nsb2NrcycgYW5kICdjbG9jay1uYW1lcycgcHJvcGVydHkuCisKKwlzZXJpYWxAMTJDMDAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNDIxMC11YXJ0IjsKKwkJcmVnID0gPDB4MTJDMDAwMDAgMHgxMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMTQ2IDA+OworCQljbG9ja3MgPSA8JmNsb2NrX3BlcmkgUEVSSV9QQ0xLX1VBUlQwPiwgPCZjbG9ja19wZXJpIFBFUklfU0NMS19VQVJUMD47CisJCWNsb2NrLW5hbWVzID0gInVhcnQiLCAiY2xrX3VhcnRfYmF1ZDAiOworCX07CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9leHlub3M1NDEwLWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9leHlub3M1NDEwLWNsb2NrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWFiNjM1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2V4eW5vczU0MTAtY2xvY2sudHh0CkBAIC0wLDAgKzEsNDUgQEAKKyogU2Ftc3VuZyBFeHlub3M1NDEwIENsb2NrIENvbnRyb2xsZXIKKworVGhlIEV4eW5vczU0MTAgY2xvY2sgY29udHJvbGxlciBnZW5lcmF0ZXMgYW5kIHN1cHBsaWVzIGNsb2NrIHRvIHZhcmlvdXMKK2NvbnRyb2xsZXJzIHdpdGhpbiB0aGUgRXh5bm9zNTQxMCBTb0MuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJzYW1zdW5nLGV4eW5vczU0MTAtY2xvY2siCisKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgIHJlZ2lvbi4KKworLSAjY2xvY2stY2VsbHM6IHNob3VsZCBiZSAxLgorCitBbGwgYXZhaWxhYmxlIGNsb2NrcyBhcmUgZGVmaW5lZCBhcyBwcmVwcm9jZXNzb3IgbWFjcm9zIGluCitkdC1iaW5kaW5ncy9jbG9jay9leHlub3M1NDEwLmggaGVhZGVyIGFuZCBjYW4gYmUgdXNlZCBpbiBkZXZpY2UKK3RyZWUgc291cmNlcy4KKworRXh0ZXJuYWwgY2xvY2s6CisKK1RoZXJlIGlzIGNsb2NrIHRoYXQgaXMgZ2VuZXJhdGVkIG91dHNpZGUgdGhlIFNvQy4gSXQKK2lzIGV4cGVjdGVkIHRoYXQgaXQgaXMgZGVmaW5lZCB1c2luZyBzdGFuZGFyZCBjbG9jayBiaW5kaW5ncword2l0aCBmb2xsb3dpbmcgY2xvY2stb3V0cHV0LW5hbWU6CisKKyAtICJmaW5fcGxsIiAtIFBMTCBpbnB1dCBjbG9jayBmcm9tIFhYVEkKKworRXhhbXBsZSAxOiBBbiBleGFtcGxlIG9mIGEgY2xvY2sgY29udHJvbGxlciBub2RlIGlzIGxpc3RlZCBiZWxvdy4KKworCWNsb2NrOiBjbG9jay1jb250cm9sbGVyQDB4MTAwMTAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTQxMC1jbG9jayI7CisJCXJlZyA9IDwweDEwMDEwMDAwIDB4MzAwMDA+OworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJfTsKKworRXhhbXBsZSAyOiBVQVJUIGNvbnRyb2xsZXIgbm9kZSB0aGF0IGNvbnN1bWVzIHRoZSBjbG9jayBnZW5lcmF0ZWQgYnkgdGhlIGNsb2NrCisJICAgY29udHJvbGxlci4gUmVmZXIgdG8gdGhlIHN0YW5kYXJkIGNsb2NrIGJpbmRpbmdzIGZvciBpbmZvcm1hdGlvbgorCSAgIGFib3V0ICdjbG9ja3MnIGFuZCAnY2xvY2stbmFtZXMnIHByb3BlcnR5LgorCisJc2VyaWFsQDEyQzIwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczQyMTAtdWFydCI7CisJCXJlZyA9IDwweDEyQzAwMDAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDUxIDA+OworCQljbG9ja3MgPSA8JmNsb2NrIENMS19VQVJUMD4sIDwmY2xvY2sgQ0xLX1NDTEtfVUFSVDA+OworCQljbG9jay1uYW1lcyA9ICJ1YXJ0IiwgImNsa191YXJ0X2JhdWQwIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2V4eW5vczU0MjAtY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2V4eW5vczU0MjAtY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1NGY0MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svZXh5bm9zNTQyMC1jbG9jay50eHQKQEAgLTAsMCArMSw0MiBAQAorKiBTYW1zdW5nIEV4eW5vczU0MjAgQ2xvY2sgQ29udHJvbGxlcgorCitUaGUgRXh5bm9zNTQyMCBjbG9jayBjb250cm9sbGVyIGdlbmVyYXRlcyBhbmQgc3VwcGxpZXMgY2xvY2sgdG8gdmFyaW91cworY29udHJvbGxlcnMgd2l0aGluIHRoZSBFeHlub3M1NDIwIFNvQyBhbmQgZm9yIHRoZSBFeHlub3M1ODAwIFNvQy4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcuCisgIC0gInNhbXN1bmcsZXh5bm9zNTQyMC1jbG9jayIgLSBjb250cm9sbGVyIGNvbXBhdGlibGUgd2l0aCBFeHlub3M1NDIwIFNvQy4KKyAgLSAic2Ftc3VuZyxleHlub3M1ODAwLWNsb2NrIiAtIGNvbnRyb2xsZXIgY29tcGF0aWJsZSB3aXRoIEV4eW5vczU4MDAgU29DLgorCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICByZWdpb24uCisKKy0gI2Nsb2NrLWNlbGxzOiBzaG91bGQgYmUgMS4KKworRWFjaCBjbG9jayBpcyBhc3NpZ25lZCBhbiBpZGVudGlmaWVyIGFuZCBjbGllbnQgbm9kZXMgY2FuIHVzZSB0aGlzIGlkZW50aWZpZXIKK3RvIHNwZWNpZnkgdGhlIGNsb2NrIHdoaWNoIHRoZXkgY29uc3VtZS4KKworQWxsIGF2YWlsYWJsZSBjbG9ja3MgYXJlIGRlZmluZWQgYXMgcHJlcHJvY2Vzc29yIG1hY3JvcyBpbgorZHQtYmluZGluZ3MvY2xvY2svZXh5bm9zNTQyMC5oIGhlYWRlciBhbmQgY2FuIGJlIHVzZWQgaW4gZGV2aWNlCit0cmVlIHNvdXJjZXMuCisKK0V4YW1wbGUgMTogQW4gZXhhbXBsZSBvZiBhIGNsb2NrIGNvbnRyb2xsZXIgbm9kZSBpcyBsaXN0ZWQgYmVsb3cuCisKKwljbG9jazogY2xvY2stY29udHJvbGxlckAweDEwMDEwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczU0MjAtY2xvY2siOworCQlyZWcgPSA8MHgxMDAxMDAwMCAweDMwMDAwPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCX07CisKK0V4YW1wbGUgMjogVUFSVCBjb250cm9sbGVyIG5vZGUgdGhhdCBjb25zdW1lcyB0aGUgY2xvY2sgZ2VuZXJhdGVkIGJ5IHRoZSBjbG9jaworCSAgIGNvbnRyb2xsZXIuIFJlZmVyIHRvIHRoZSBzdGFuZGFyZCBjbG9jayBiaW5kaW5ncyBmb3IgaW5mb3JtYXRpb24KKwkgICBhYm91dCAnY2xvY2tzJyBhbmQgJ2Nsb2NrLW5hbWVzJyBwcm9wZXJ0eS4KKworCXNlcmlhbEAxMzgyMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M0MjEwLXVhcnQiOworCQlyZWcgPSA8MHgxMzgyMDAwMCAweDEwMD47CisJCWludGVycnVwdHMgPSA8MCA1NCAwPjsKKwkJY2xvY2tzID0gPCZjbG9jayBDTEtfVUFSVDI+LCA8JmNsb2NrIENMS19TQ0xLX1VBUlQyPjsKKwkJY2xvY2stbmFtZXMgPSAidWFydCIsICJjbGtfdWFydF9iYXVkMCI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9leHlub3M1NDMzLWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9leHlub3M1NDMzLWNsb2NrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzM3OWIwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2V4eW5vczU0MzMtY2xvY2sudHh0CkBAIC0wLDAgKzEsNDYyIEBACisqIFNhbXN1bmcgRXh5bm9zNTQzMyBDTVUgKENsb2NrIE1hbmFnZW1lbnQgVW5pdHMpCisKK1RoZSBFeHlub3M1NDMzIGNsb2NrIGNvbnRyb2xsZXIgZ2VuZXJhdGVzIGFuZCBzdXBwbGllcyBjbG9jayB0byB2YXJpb3VzCitjb250cm9sbGVycyB3aXRoaW4gdGhlIEV4eW5vczU0MzMgU29DLgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZy4KKyAgLSAic2Ftc3VuZyxleHlub3M1NDMzLWNtdS10b3AiICAgLSBjbG9jayBjb250cm9sbGVyIGNvbXBhdGlibGUgZm9yIENNVV9UT1AKKyAgICB3aGljaCBnZW5lcmF0ZXMgY2xvY2tzIGZvciBJTUVNL0ZTWVMvRzNEL0dTQ0wvSEVWQy9NU0NML0cyRC9NRkMvUEVSSUMvUEVSSVMKKyAgICBkb21haW5zIGFuZCBidXMgY2xvY2tzLgorICAtICJzYW1zdW5nLGV4eW5vczU0MzMtY211LWNwaWYiICAtIGNsb2NrIGNvbnRyb2xsZXIgY29tcGF0aWJsZSBmb3IgQ01VX0NQSUYKKyAgICB3aGljaCBnZW5lcmF0ZXMgY2xvY2tzIGZvciBMTEkgKExvdyBMYXRlbmN5IEludGVyZmFjZSkgSVAuCisgIC0gInNhbXN1bmcsZXh5bm9zNTQzMy1jbXUtbWlmIiAgIC0gY2xvY2sgY29udHJvbGxlciBjb21wYXRpYmxlIGZvciBDTVVfTUlGCisgICAgd2hpY2ggZ2VuZXJhdGVzIGNsb2NrcyBmb3IgRFJBTSBNZW1vcnkgQ29udHJvbGxlciBkb21haW4uCisgIC0gInNhbXN1bmcsZXh5bm9zNTQzMy1jbXUtcGVyaWMiIC0gY2xvY2sgY29udHJvbGxlciBjb21wYXRpYmxlIGZvciBDTVVfUEVSSUMKKyAgICB3aGljaCBnZW5lcmF0ZXMgY2xvY2tzIGZvciBVQVJUL0kyQy9TUEkvSTJTL1BDTS9TUERJRi9QV00vU0xJTUJVUyBJUHMuCisgIC0gInNhbXN1bmcsZXh5bm9zNTQzMy1jbXUtcGVyaXMiIC0gY2xvY2sgY29udHJvbGxlciBjb21wYXRpYmxlIGZvciBDTVVfUEVSSVMKKyAgICB3aGljaCBnZW5lcmF0ZXMgY2xvY2tzIGZvciBQTVUvVE1VL01DVC9XRFQvUlRDL1NFQ0tFWS9UWlBDIElQcy4KKyAgLSAic2Ftc3VuZyxleHlub3M1NDMzLWNtdS1mc3lzIiAgLSBjbG9jayBjb250cm9sbGVyIGNvbXBhdGlibGUgZm9yIENNVV9GU1lTCisgICAgd2hpY2ggZ2VuZXJhdGVzIGNsb2NrcyBmb3IgVVNCL1VGUy9TRE1NQy9UU0kvUERNQSBJUHMuCisgIC0gInNhbXN1bmcsZXh5bm9zNTQzMy1jbXUtZzJkIiAgIC0gY2xvY2sgY29udHJvbGxlciBjb21wYXRpYmxlIGZvciBDTVVfRzJECisgICAgd2hpY2ggZ2VuZXJhdGVzIGNsb2NrcyBmb3IgRzJEL01ETUEgSVBzLgorICAtICJzYW1zdW5nLGV4eW5vczU0MzMtY211LWRpc3AiICAtIGNsb2NrIGNvbnRyb2xsZXIgY29tcGF0aWJsZSBmb3IgQ01VX0RJU1AKKyAgICB3aGljaCBnZW5lcmF0ZXMgY2xvY2tzIGZvciBEaXNwbGF5IChERUNPTi9IRE1JL0RTSU0vTUlYRVIpIElQcy4KKyAgLSAic2Ftc3VuZyxleHlub3M1NDMzLWNtdS1hdWQiICAgLSBjbG9jayBjb250cm9sbGVyIGNvbXBhdGlibGUgZm9yIENNVV9BVUQKKyAgICB3aGljaCBnZW5lcmF0ZXMgY2xvY2tzIGZvciBDb3J0ZXgtQTUvQlVTL0FVRElPIGNsb2Nrcy4KKyAgLSAic2Ftc3VuZyxleHlub3M1NDMzLWNtdS1idXMwIiwgInNhbXN1bmcsZXh5bm9zNTQzMy1jbXUtYnVzMSIKKyAgICBhbmQgInNhbXN1bmcsZXh5bm9zNTQzMy1jbXUtYnVzMiIgLSBjbG9jayBjb250cm9sbGVyIGNvbXBhdGlibGUgZm9yIENNVV9CVVMKKyAgICB3aGljaCBnZW5lcmF0ZXMgZ2xvYmFsIGRhdGEgYnVzZXMgY2xvY2sgYW5kIGdsb2JhbCBwZXJpcGhlcmFsIGJ1c2VzIGNsb2NrLgorICAtICJzYW1zdW5nLGV4eW5vczU0MzMtY211LWczZCIgIC0gY2xvY2sgY29udHJvbGxlciBjb21wYXRpYmxlIGZvciBDTVVfRzNECisgICAgd2hpY2ggZ2VuZXJhdGVzIGNsb2NrcyBmb3IgM0QgR3JhcGhpY3MgRW5naW5lIElQLgorICAtICJzYW1zdW5nLGV4eW5vczU0MzMtY211LWdzY2wiICAtIGNsb2NrIGNvbnRyb2xsZXIgY29tcGF0aWJsZSBmb3IgQ01VX0dTQ0wKKyAgICB3aGljaCBnZW5lcmF0ZXMgY2xvY2tzIGZvciBHU0NBTEVSIElQcy4KKyAgLSAic2Ftc3VuZyxleHlub3M1NDMzLWNtdS1hcG9sbG8iLSBjbG9jayBjb250cm9sbGVyIGNvbXBhdGlibGUgZm9yIENNVV9BUE9MTE8KKyAgICB3aGljaCBnZW5lcmF0ZXMgY2xvY2tzIGZvciBDb3J0ZXgtQTUzIFF1YWQtY29yZSBwcm9jZXNzb3IuCisgIC0gInNhbXN1bmcsZXh5bm9zNTQzMy1jbXUtYXRsYXMiIC0gY2xvY2sgY29udHJvbGxlciBjb21wYXRpYmxlIGZvciBDTVVfQVRMQVMKKyAgICB3aGljaCBnZW5lcmF0ZXMgY2xvY2tzIGZvciBDb3J0ZXgtQTU3IFF1YWQtY29yZSBwcm9jZXNzb3IsIENvcmVTaWdodCBhbmQKKyAgICBMMiBjYWNoZSBjb250cm9sbGVyLgorICAtICJzYW1zdW5nLGV4eW5vczU0MzMtY211LW1zY2wiIC0gY2xvY2sgY29udHJvbGxlciBjb21wYXRpYmxlIGZvciBDTVVfTVNDTAorICAgIHdoaWNoIGdlbmVyYXRlcyBjbG9ja3MgZm9yIE0yTSAoTWVtb3J5IHRvIE1lbW9yeSkgc2NhbGVyIGFuZCBKUEVHIElQcy4KKyAgLSAic2Ftc3VuZyxleHlub3M1NDMzLWNtdS1tZmMiICAtIGNsb2NrIGNvbnRyb2xsZXIgY29tcGF0aWJsZSBmb3IgQ01VX01GQworICAgIHdoaWNoIGdlbmVyYXRlcyBjbG9ja3MgZm9yIE1GQyhNdWx0aS1Gb3JtYXQgQ29kZWMpIElQLgorICAtICJzYW1zdW5nLGV4eW5vczU0MzMtY211LWhldmMiIC0gY2xvY2sgY29udHJvbGxlciBjb21wYXRpYmxlIGZvciBDTVVfSEVWQworICAgIHdoaWNoIGdlbmVyYXRlcyBjbG9ja3MgZm9yIEhFVkMoSGlnaCBFZmZpY2llbmN5IFZpZGVvIENvZGVjKSBkZWNvZGVyIElQLgorICAtICJzYW1zdW5nLGV4eW5vczU0MzMtY211LWlzcCIgLSBjbG9jayBjb250cm9sbGVyIGNvbXBhdGlibGUgZm9yIENNVV9JU1AKKyAgICB3aGljaCBnZW5lcmF0ZXMgY2xvY2tzIGZvciBGSU1DLUlTUC9EUkMvU0NMQy9ESVMvM0ROUiBJUHMuCisgIC0gInNhbXN1bmcsZXh5bm9zNTQzMy1jbXUtY2FtMCIgLSBjbG9jayBjb250cm9sbGVyIGNvbXBhdGlibGUgZm9yIENNVV9DQU0wCisgICAgd2hpY2ggZ2VuZXJhdGVzIGNsb2NrcyBmb3IgTUlQSV9DU0lTezB8MX0vRklNQ19MSVRFX3tBfEJ8RH0vRklNQ18zQUF7MHwxfQorICAgIElQcy4KKyAgLSAic2Ftc3VuZyxleHlub3M1NDMzLWNtdS1jYW0xIiAtIGNsb2NrIGNvbnRyb2xsZXIgY29tcGF0aWJsZSBmb3IgQ01VX0NBTTEKKyAgICB3aGljaCBnZW5lcmF0ZXMgY2xvY2tzIGZvciBDb3J0ZXgtQTUvTUlQSV9DU0lTMi9GSU1DLUxJVEVfQy9GSU1DLUZEIElQcy4KKworLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorCistICNjbG9jay1jZWxsczogc2hvdWxkIGJlIDEuCisKKy0gY2xvY2tzOiBsaXN0IG9mIHRoZSBjbG9jayBjb250cm9sbGVyIGlucHV0IGNsb2NrIGlkZW50aWZpZXJzLAorCWZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmdzLiBQbGVhc2UgcmVmZXIgdGhlIG5leHQgc2VjdGlvbgorCXRvIGZpbmQgdGhlIGlucHV0IGNsb2NrcyBmb3IgYSBnaXZlbiBjb250cm9sbGVyLgorCistIGNsb2NrLW5hbWVzOiBsaXN0IG9mIHRoZSBjbG9jayBjb250cm9sbGVyIGlucHV0IGNsb2NrIG5hbWVzLAorCWFzIGRlc2NyaWJlZCBpbiBjbG9jay1iaW5kaW5ncy50eHQuCisKKwlJbnB1dCBjbG9ja3MgZm9yIHRvcCBjbG9jayBjb250cm9sbGVyOgorCQktIG9zY2NsaworCQktIHNjbGtfbXBoeV9wbGwKKwkJLSBzY2xrX21mY19wbGwKKwkJLSBzY2xrX2J1c19wbGwKKworCUlucHV0IGNsb2NrcyBmb3IgY3BpZiBjbG9jayBjb250cm9sbGVyOgorCQktIG9zY2NsaworCisJSW5wdXQgY2xvY2tzIGZvciBtaWYgY2xvY2sgY29udHJvbGxlcjoKKwkJLSBvc2NjbGsKKwkJLSBzY2xrX21waHlfcGxsCisKKwlJbnB1dCBjbG9ja3MgZm9yIGZzeXMgY2xvY2sgY29udHJvbGxlcjoKKwkJLSBvc2NjbGsKKwkJLSBzY2xrX3Vmc19tcGh5CisJCS0gZGl2X2FjbGtfZnN5c18yMDAKKwkJLSBzY2xrX3BjaWVfMTAwX2ZzeXMKKwkJLSBzY2xrX3Vmc3VuaXByb19mc3lzCisJCS0gc2Nsa19tbWMyX2ZzeXMKKwkJLSBzY2xrX21tYzFfZnN5cworCQktIHNjbGtfbW1jMF9mc3lzCisJCS0gc2Nsa191c2Job3N0MzBfZnN5cworCQktIHNjbGtfdXNiZHJkMzBfZnN5cworCisJSW5wdXQgY2xvY2tzIGZvciBnMmQgY2xvY2sgY29udHJvbGxlcjoKKwkJLSBvc2NjbGsKKwkJLSBhY2xrX2cyZF8yNjYKKwkJLSBhY2xrX2cyZF80MDAKKworCUlucHV0IGNsb2NrcyBmb3IgZGlzcCBjbG9jayBjb250cm9sbGVyOgorCQktIG9zY2NsaworCQktIHNjbGtfZHNpbTFfZGlzcAorCQktIHNjbGtfZHNpbTBfZGlzcAorCQktIHNjbGtfZHNkX2Rpc3AKKwkJLSBzY2xrX2RlY29uX3R2X2VjbGtfZGlzcAorCQktIHNjbGtfZGVjb25fdmNsa19kaXNwCisJCS0gc2Nsa19kZWNvbl9lY2xrX2Rpc3AKKwkJLSBzY2xrX2RlY29uX3R2X3ZjbGtfZGlzcAorCQktIGFjbGtfZGlzcF8zMzMKKworCUlucHV0IGNsb2NrcyBmb3IgYnVzMCBjbG9jayBjb250cm9sbGVyOgorCQktIGFjbGtfYnVzMF80MDAKKworCUlucHV0IGNsb2NrcyBmb3IgYnVzMSBjbG9jayBjb250cm9sbGVyOgorCQktIGFjbGtfYnVzMV80MDAKKworCUlucHV0IGNsb2NrcyBmb3IgYnVzMiBjbG9jayBjb250cm9sbGVyOgorCQktIG9zY2NsaworCQktIGFjbGtfYnVzMl80MDAKKworCUlucHV0IGNsb2NrcyBmb3IgZzNkIGNsb2NrIGNvbnRyb2xsZXI6CisJCS0gb3NjY2xrCisJCS0gYWNsa19nM2RfNDAwCisKKwlJbnB1dCBjbG9ja3MgZm9yIGdzY2wgY2xvY2sgY29udHJvbGxlcjoKKwkJLSBvc2NjbGsKKwkJLSBhY2xrX2dzY2xfMTExCisJCS0gYWNsa19nc2NsXzMzMworCisJSW5wdXQgY2xvY2tzIGZvciBhcG9sbG8gY2xvY2sgY29udHJvbGxlcjoKKwkJLSBvc2NjbGsKKwkJLSBzY2xrX2J1c19wbGxfYXBvbGxvCisKKwlJbnB1dCBjbG9ja3MgZm9yIGF0bGFzIGNsb2NrIGNvbnRyb2xsZXI6CisJCS0gb3NjY2xrCisJCS0gc2Nsa19idXNfcGxsX2F0bGFzCisKKwlJbnB1dCBjbG9ja3MgZm9yIG1zY2wgY2xvY2sgY29udHJvbGxlcjoKKwkJLSBvc2NjbGsKKwkJLSBzY2xrX2pwZWdfbXNjbAorCQktIGFjbGtfbXNjbF80MDAKKworCUlucHV0IGNsb2NrcyBmb3IgbWZjIGNsb2NrIGNvbnRyb2xsZXI6CisJCS0gb3NjY2xrCisJCS0gYWNsa19tZmNfNDAwCisKKwlJbnB1dCBjbG9ja3MgZm9yIGhldmMgY2xvY2sgY29udHJvbGxlcjoKKwkJLSBvc2NjbGsKKwkJLSBhY2xrX2hldmNfNDAwCisKKwlJbnB1dCBjbG9ja3MgZm9yIGlzcCBjbG9jayBjb250cm9sbGVyOgorCQktIG9zY2NsaworCQktIGFjbGtfaXNwX2Rpc180MDAKKwkJLSBhY2xrX2lzcF80MDAKKworCUlucHV0IGNsb2NrcyBmb3IgY2FtMCBjbG9jayBjb250cm9sbGVyOgorCQktIG9zY2NsaworCQktIGFjbGtfY2FtMF8zMzMKKwkJLSBhY2xrX2NhbTBfNDAwCisJCS0gYWNsa19jYW0wXzU1MgorCisJSW5wdXQgY2xvY2tzIGZvciBjYW0xIGNsb2NrIGNvbnRyb2xsZXI6CisJCS0gb3NjY2xrCisJCS0gc2Nsa19pc3BfdWFydF9jYW0xCisJCS0gc2Nsa19pc3Bfc3BpMV9jYW0xCisJCS0gc2Nsa19pc3Bfc3BpMF9jYW0xCisJCS0gYWNsa19jYW0xXzMzMworCQktIGFjbGtfY2FtMV80MDAKKwkJLSBhY2xrX2NhbTFfNTUyCisKK0VhY2ggY2xvY2sgaXMgYXNzaWduZWQgYW4gaWRlbnRpZmllciBhbmQgY2xpZW50IG5vZGVzIGNhbiB1c2UgdGhpcyBpZGVudGlmaWVyCit0byBzcGVjaWZ5IHRoZSBjbG9jayB3aGljaCB0aGV5IGNvbnN1bWUuCisKK0FsbCBhdmFpbGFibGUgY2xvY2tzIGFyZSBkZWZpbmVkIGFzIHByZXByb2Nlc3NvciBtYWNyb3MgaW4KK2R0LWJpbmRpbmdzL2Nsb2NrL2V4eW5vczU0MzMuaCBoZWFkZXIgYW5kIGNhbiBiZSB1c2VkIGluIGRldmljZQordHJlZSBzb3VyY2VzLgorCitFeGFtcGxlIDE6IEV4YW1wbGVzIG9mICdvc2NjbGsnIHNvdXJjZSBjbG9jayBub2RlIGFyZSBsaXN0ZWQgYmVsb3cuCisKKwl4eHRpOiB4eHRpIHsKKwkJY29tcGF0aWJsZSA9ICJmaXhlZC1jbG9jayI7CisJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJvc2NjbGsiOworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJfTsKKworRXhhbXBsZSAyOiBFeGFtcGxlcyBvZiBjbG9jayBjb250cm9sbGVyIG5vZGVzIGFyZSBsaXN0ZWQgYmVsb3cuCisKKwljbXVfdG9wOiBjbG9jay1jb250cm9sbGVyQDEwMDMwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczU0MzMtY211LXRvcCI7CisJCXJlZyA9IDwweDEwMDMwMDAwIDB4MGMwND47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKworCQljbG9jay1uYW1lcyA9ICJvc2NjbGsiLAorCQkJInNjbGtfbXBoeV9wbGwiLAorCQkJInNjbGtfbWZjX3BsbCIsCisJCQkic2Nsa19idXNfcGxsIjsKKwkJY2xvY2tzID0gPCZ4eHRpPiwKKwkJICAgICAgIDwmY211X2NwaWYgQ0xLX1NDTEtfTVBIWV9QTEw+LAorCQkgICAgICAgPCZjbXVfbWlmIENMS19TQ0xLX01GQ19QTEw+LAorCQkgICAgICAgPCZjbXVfbWlmIENMS19TQ0xLX0JVU19QTEw+OworCX07CisKKwljbXVfY3BpZjogY2xvY2stY29udHJvbGxlckAxMGZjMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M1NDMzLWNtdS1jcGlmIjsKKwkJcmVnID0gPDB4MTBmYzAwMDAgMHgwYzA0PjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCisJCWNsb2NrLW5hbWVzID0gIm9zY2NsayI7CisJCWNsb2NrcyA9IDwmeHh0aT47CisJfTsKKworCWNtdV9taWY6IGNsb2NrLWNvbnRyb2xsZXJAMTA1YjAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTQzMy1jbXUtbWlmIjsKKwkJcmVnID0gPDB4MTA1YjAwMDAgMHgxMDBjPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCisJCWNsb2NrLW5hbWVzID0gIm9zY2NsayIsCisJCQkic2Nsa19tcGh5X3BsbCI7CisJCWNsb2NrcyA9IDwmeHh0aT4sCisJCSAgICAgICA8JmNtdV9jcGlmIENMS19TQ0xLX01QSFlfUExMPjsKKwl9OworCisJY211X3BlcmljOiBjbG9jay1jb250cm9sbGVyQDE0YzgwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczU0MzMtY211LXBlcmljIjsKKwkJcmVnID0gPDB4MTRjODAwMDAgMHgwYjA4PjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCX07CisKKwljbXVfcGVyaXM6IGNsb2NrLWNvbnRyb2xsZXJAMTAwNDAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTQzMy1jbXUtcGVyaXMiOworCQlyZWcgPSA8MHgxMDA0MDAwMCAweDBiMjA+OworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJfTsKKworCWNtdV9mc3lzOiBjbG9jay1jb250cm9sbGVyQDE1NmUwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczU0MzMtY211LWZzeXMiOworCQlyZWcgPSA8MHgxNTZlMDAwMCAweDBiMDQ+OworCQkjY2xvY2stY2VsbHMgPSA8MT47CisKKwkJY2xvY2stbmFtZXMgPSAib3NjY2xrIiwKKwkJCSJzY2xrX3Vmc19tcGh5IiwKKwkJCSJkaXZfYWNsa19mc3lzXzIwMCIsCisJCQkic2Nsa19wY2llXzEwMF9mc3lzIiwKKwkJCSJzY2xrX3Vmc3VuaXByb19mc3lzIiwKKwkJCSJzY2xrX21tYzJfZnN5cyIsCisJCQkic2Nsa19tbWMxX2ZzeXMiLAorCQkJInNjbGtfbW1jMF9mc3lzIiwKKwkJCSJzY2xrX3VzYmhvc3QzMF9mc3lzIiwKKwkJCSJzY2xrX3VzYmRyZDMwX2ZzeXMiOworCQljbG9ja3MgPSA8Jnh4dGk+LAorCQkgICAgICAgPCZjbXVfY3BpZiBDTEtfU0NMS19VRlNfTVBIWT4sCisJCSAgICAgICA8JmNtdV90b3AgQ0xLX0RJVl9BQ0xLX0ZTWVNfMjAwPiwKKwkJICAgICAgIDwmY211X3RvcCBDTEtfU0NMS19QQ0lFXzEwMF9GU1lTPiwKKwkJICAgICAgIDwmY211X3RvcCBDTEtfU0NMS19VRlNVTklQUk9fRlNZUz4sCisJCSAgICAgICA8JmNtdV90b3AgQ0xLX1NDTEtfTU1DMl9GU1lTPiwKKwkJICAgICAgIDwmY211X3RvcCBDTEtfU0NMS19NTUMxX0ZTWVM+LAorCQkgICAgICAgPCZjbXVfdG9wIENMS19TQ0xLX01NQzBfRlNZUz4sCisJCSAgICAgICA8JmNtdV90b3AgQ0xLX1NDTEtfVVNCSE9TVDMwX0ZTWVM+LAorCQkgICAgICAgPCZjbXVfdG9wIENMS19TQ0xLX1VTQkRSRDMwX0ZTWVM+OworCX07CisKKwljbXVfZzJkOiBjbG9jay1jb250cm9sbGVyQDEyNDYwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczU0MzMtY211LWcyZCI7CisJCXJlZyA9IDwweDEyNDYwMDAwIDB4MGIwOD47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKworCQljbG9jay1uYW1lcyA9ICJvc2NjbGsiLAorCQkJImFjbGtfZzJkXzI2NiIsCisJCQkiYWNsa19nMmRfNDAwIjsKKwkJY2xvY2tzID0gPCZ4eHRpPiwKKwkJICAgICAgIDwmY211X3RvcCBDTEtfQUNMS19HMkRfMjY2PiwKKwkJICAgICAgIDwmY211X3RvcCBDTEtfQUNMS19HMkRfNDAwPjsKKwl9OworCisJY211X2Rpc3A6IGNsb2NrLWNvbnRyb2xsZXJAMTNiOTAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTQzMy1jbXUtZGlzcCI7CisJCXJlZyA9IDwweDEzYjkwMDAwIDB4MGMwND47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKworCQljbG9jay1uYW1lcyA9ICJvc2NjbGsiLAorCQkJInNjbGtfZHNpbTFfZGlzcCIsCisJCQkic2Nsa19kc2ltMF9kaXNwIiwKKwkJCSJzY2xrX2RzZF9kaXNwIiwKKwkJCSJzY2xrX2RlY29uX3R2X2VjbGtfZGlzcCIsCisJCQkic2Nsa19kZWNvbl92Y2xrX2Rpc3AiLAorCQkJInNjbGtfZGVjb25fZWNsa19kaXNwIiwKKwkJCSJzY2xrX2RlY29uX3R2X3ZjbGtfZGlzcCIsCisJCQkiYWNsa19kaXNwXzMzMyI7CisJCWNsb2NrcyA9IDwmeHh0aT4sCisJCSAgICAgICA8JmNtdV9taWYgQ0xLX1NDTEtfRFNJTTFfRElTUD4sCisJCSAgICAgICA8JmNtdV9taWYgQ0xLX1NDTEtfRFNJTTBfRElTUD4sCisJCSAgICAgICA8JmNtdV9taWYgQ0xLX1NDTEtfRFNEX0RJU1A+LAorCQkgICAgICAgPCZjbXVfbWlmIENMS19TQ0xLX0RFQ09OX1RWX0VDTEtfRElTUD4sCisJCSAgICAgICA8JmNtdV9taWYgQ0xLX1NDTEtfREVDT05fVkNMS19ESVNQPiwKKwkJICAgICAgIDwmY211X21pZiBDTEtfU0NMS19ERUNPTl9FQ0xLX0RJU1A+LAorCQkgICAgICAgPCZjbXVfbWlmIENMS19TQ0xLX0RFQ09OX1RWX1ZDTEtfRElTUD4sCisJCSAgICAgICA8JmNtdV9taWYgQ0xLX0FDTEtfRElTUF8zMzM+OworCX07CisKKwljbXVfYXVkOiBjbG9jay1jb250cm9sbGVyQDExNGMwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczU0MzMtY211LWF1ZCI7CisJCXJlZyA9IDwweDExNGMwMDAwIDB4MGIwND47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKwl9OworCisJY211X2J1czA6IGNsb2NrLWNvbnRyb2xsZXJAMTM2MDAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTQzMy1jbXUtYnVzMCI7CisJCXJlZyA9IDwweDEzNjAwMDAwIDB4MGIwND47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKworCQljbG9jay1uYW1lcyA9ICJhY2xrX2J1czBfNDAwIjsKKwkJY2xvY2tzID0gPCZjbXVfdG9wIENMS19BQ0xLX0JVUzBfNDAwPjsKKwl9OworCisJY211X2J1czE6IGNsb2NrLWNvbnRyb2xsZXJAMTQ4MDAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTQzMy1jbXUtYnVzMSI7CisJCXJlZyA9IDwweDE0ODAwMDAwIDB4MGIwND47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKworCQljbG9jay1uYW1lcyA9ICJhY2xrX2J1czFfNDAwIjsKKwkJY2xvY2tzID0gPCZjbXVfdG9wIENMS19BQ0xLX0JVUzFfNDAwPjsKKwl9OworCisJY211X2J1czI6IGNsb2NrLWNvbnRyb2xsZXJAMTM0MDAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTQzMy1jbXUtYnVzMiI7CisJCXJlZyA9IDwweDEzNDAwMDAwIDB4MGIwND47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKworCQljbG9jay1uYW1lcyA9ICJvc2NjbGsiLCAiYWNsa19idXMyXzQwMCI7CisJCWNsb2NrcyA9IDwmeHh0aT4sIDwmY211X21pZiBDTEtfQUNMS19CVVMyXzQwMD47CisJfTsKKworCWNtdV9nM2Q6IGNsb2NrLWNvbnRyb2xsZXJAMTRhYTAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTQzMy1jbXUtZzNkIjsKKwkJcmVnID0gPDB4MTRhYTAwMDAgMHgxMDAwPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCisJCWNsb2NrLW5hbWVzID0gIm9zY2NsayIsICJhY2xrX2czZF80MDAiOworCQljbG9ja3MgPSA8Jnh4dGk+LCA8JmNtdV90b3AgQ0xLX0FDTEtfRzNEXzQwMD47CisJfTsKKworCWNtdV9nc2NsOiBjbG9jay1jb250cm9sbGVyQDEzY2YwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczU0MzMtY211LWdzY2wiOworCQlyZWcgPSA8MHgxM2NmMDAwMCAweDBiMTA+OworCQkjY2xvY2stY2VsbHMgPSA8MT47CisKKwkJY2xvY2stbmFtZXMgPSAib3NjY2xrIiwKKwkJCSJhY2xrX2dzY2xfMTExIiwKKwkJCSJhY2xrX2dzY2xfMzMzIjsKKwkJY2xvY2tzID0gPCZ4eHRpPiwKKwkJCTwmY211X3RvcCBDTEtfQUNMS19HU0NMXzExMT4sCisJCQk8JmNtdV90b3AgQ0xLX0FDTEtfR1NDTF8zMzM+OworCX07CisKKwljbXVfYXBvbGxvOiBjbG9jay1jb250cm9sbGVyQDExOTAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczU0MzMtY211LWFwb2xsbyI7CisJCXJlZyA9IDwweDExOTAwMDAwIDB4MTA4OD47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKworCQljbG9jay1uYW1lcyA9ICJvc2NjbGsiLCAic2Nsa19idXNfcGxsX2Fwb2xsbyI7CisJCWNsb2NrcyA9IDwmeHh0aT4sIDwmY211X21pZiBDTEtfU0NMS19CVVNfUExMX0FQT0xMTz47CisJfTsKKworCWNtdV9hdGxhczogY2xvY2stY29udHJvbGxlckAxMTgwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M1NDMzLWNtdS1hdGxhcyI7CisJCXJlZyA9IDwweDExODAwMDAwIDB4MTA4OD47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKworCQljbG9jay1uYW1lcyA9ICJvc2NjbGsiLCAic2Nsa19idXNfcGxsX2F0bGFzIjsKKwkJY2xvY2tzID0gPCZ4eHRpPiwgPCZjbXVfbWlmIENMS19TQ0xLX0JVU19QTExfQVRMQVM+OworCX07CisKKwljbXVfbXNjbDogY2xvY2stY29udHJvbGxlckAxMDVkMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M1NDMzLWNtdS1tc2NsIjsKKwkJcmVnID0gPDB4MTA1ZDAwMDAgMHgwYjEwPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCisJCWNsb2NrLW5hbWVzID0gIm9zY2NsayIsCisJCQkic2Nsa19qcGVnX21zY2wiLAorCQkJImFjbGtfbXNjbF80MDAiOworCQljbG9ja3MgPSA8Jnh4dGk+LAorCQkgICAgICAgPCZjbXVfdG9wIENMS19TQ0xLX0pQRUdfTVNDTD4sCisJCSAgICAgICA8JmNtdV90b3AgQ0xLX0FDTEtfTVNDTF80MDA+OworCX07CisKKwljbXVfbWZjOiBjbG9jay1jb250cm9sbGVyQDE1MjgwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczU0MzMtY211LW1mYyI7CisJCXJlZyA9IDwweDE1MjgwMDAwIDB4MGIwOD47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKworCQljbG9jay1uYW1lcyA9ICJvc2NjbGsiLCAiYWNsa19tZmNfNDAwIjsKKwkJY2xvY2tzID0gPCZ4eHRpPiwgPCZjbXVfdG9wIENMS19BQ0xLX01GQ180MDA+OworCX07CisKKwljbXVfaGV2YzogY2xvY2stY29udHJvbGxlckAxNGY4MDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M1NDMzLWNtdS1oZXZjIjsKKwkJcmVnID0gPDB4MTRmODAwMDAgMHgwYjA4PjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCisJCWNsb2NrLW5hbWVzID0gIm9zY2NsayIsICJhY2xrX2hldmNfNDAwIjsKKwkJY2xvY2tzID0gPCZ4eHRpPiwgPCZjbXVfdG9wIENMS19BQ0xLX0hFVkNfNDAwPjsKKwl9OworCisJY211X2lzcDogY2xvY2stY29udHJvbGxlckAxNDZkMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M1NDMzLWNtdS1pc3AiOworCQlyZWcgPSA8MHgxNDZkMDAwMCAweDBiMGM+OworCQkjY2xvY2stY2VsbHMgPSA8MT47CisKKwkJY2xvY2stbmFtZXMgPSAib3NjY2xrIiwKKwkJCSJhY2xrX2lzcF9kaXNfNDAwIiwKKwkJCSJhY2xrX2lzcF80MDAiOworCQljbG9ja3MgPSA8Jnh4dGk+LAorCQkgICAgICAgPCZjbXVfdG9wIENMS19BQ0xLX0lTUF9ESVNfNDAwPiwKKwkJICAgICAgIDwmY211X3RvcCBDTEtfQUNMS19JU1BfNDAwPjsKKwl9OworCisJY211X2NhbTA6IGNsb2NrLWNvbnRyb2xsZXJAMTIwZDAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTQzMy1jbXUtY2FtMCI7CisJCXJlZyA9IDwweDEyMGQwMDAwIDB4MGIwYz47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKworCQljbG9jay1uYW1lcyA9ICJvc2NjbGsiLAorCQkJImFjbGtfY2FtMF8zMzMiLAorCQkJImFjbGtfY2FtMF80MDAiLAorCQkJImFjbGtfY2FtMF81NTIiOworCQljbG9ja3MgPSA8Jnh4dGk+LAorCQkgICAgICAgPCZjbXVfdG9wIENMS19BQ0xLX0NBTTBfMzMzPiwKKwkJICAgICAgIDwmY211X3RvcCBDTEtfQUNMS19DQU0wXzQwMD4sCisJCSAgICAgICA8JmNtdV90b3AgQ0xLX0FDTEtfQ0FNMF81NTI+OworCX07CisKKwljbXVfY2FtMTogY2xvY2stY29udHJvbGxlckAxNDVkMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M1NDMzLWNtdS1jYW0xIjsKKwkJcmVnID0gPDB4MTQ1ZDAwMDAgMHgwYjA4PjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCisJCWNsb2NrLW5hbWVzID0gIm9zY2NsayIsCisJCQkic2Nsa19pc3BfdWFydF9jYW0xIiwKKwkJCSJzY2xrX2lzcF9zcGkxX2NhbTEiLAorCQkJInNjbGtfaXNwX3NwaTBfY2FtMSIsCisJCQkiYWNsa19jYW0xXzMzMyIsCisJCQkiYWNsa19jYW0xXzQwMCIsCisJCQkiYWNsa19jYW0xXzU1MiI7CisJCWNsb2NrcyA9IDwmeHh0aT4sCisJCSAgICAgICA8JmNtdV90b3AgQ0xLX1NDTEtfSVNQX1VBUlRfQ0FNMT4sCisJCSAgICAgICA8JmNtdV90b3AgQ0xLX1NDTEtfSVNQX1NQSTFfQ0FNMT4sCisJCSAgICAgICA8JmNtdV90b3AgQ0xLX1NDTEtfSVNQX1NQSTBfQ0FNMT4sCisJCSAgICAgICA8JmNtdV90b3AgQ0xLX0FDTEtfQ0FNMV8zMzM+LAorCQkgICAgICAgPCZjbXVfdG9wIENMS19BQ0xLX0NBTTFfNDAwPiwKKwkJICAgICAgIDwmY211X3RvcCBDTEtfQUNMS19DQU0xXzU1Mj47CisJfTsKKworRXhhbXBsZSAzOiBVQVJUIGNvbnRyb2xsZXIgbm9kZSB0aGF0IGNvbnN1bWVzIHRoZSBjbG9jayBnZW5lcmF0ZWQgYnkgdGhlIGNsb2NrCisJICAgY29udHJvbGxlci4KKworCXNlcmlhbF8wOiBzZXJpYWxAMTRDMTAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTQzMy11YXJ0IjsKKwkJcmVnID0gPDB4MTRDMTAwMDAgMHgxMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgNDIxIDA+OworCQljbG9ja3MgPSA8JmNtdV9wZXJpYyBDTEtfUENMS19VQVJUMD4sCisJCQkgPCZjbXVfcGVyaWMgQ0xLX1NDTEtfVUFSVDA+OworCQljbG9jay1uYW1lcyA9ICJ1YXJ0IiwgImNsa191YXJ0X2JhdWQwIjsKKwkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwkJcGluY3RybC0wID0gPCZ1YXJ0MF9idXM+OworCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svZXh5bm9zNTQ0MC1jbG9jay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svZXh5bm9zNTQ0MC1jbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY3MDA1ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9leHlub3M1NDQwLWNsb2NrLnR4dApAQCAtMCwwICsxLDI4IEBACisqIFNhbXN1bmcgRXh5bm9zNTQ0MCBDbG9jayBDb250cm9sbGVyCisKK1RoZSBFeHlub3M1NDQwIGNsb2NrIGNvbnRyb2xsZXIgZ2VuZXJhdGVzIGFuZCBzdXBwbGllcyBjbG9jayB0byB2YXJpb3VzCitjb250cm9sbGVycyB3aXRoaW4gdGhlIEV4eW5vczU0NDAgU29DLgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAic2Ftc3VuZyxleHlub3M1NDQwLWNsb2NrIi4KKworLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorCistICNjbG9jay1jZWxsczogc2hvdWxkIGJlIDEuCisKK0VhY2ggY2xvY2sgaXMgYXNzaWduZWQgYW4gaWRlbnRpZmllciBhbmQgY2xpZW50IG5vZGVzIGNhbiB1c2UgdGhpcyBpZGVudGlmaWVyCit0byBzcGVjaWZ5IHRoZSBjbG9jayB3aGljaCB0aGV5IGNvbnN1bWUuCisKK0FsbCBhdmFpbGFibGUgY2xvY2tzIGFyZSBkZWZpbmVkIGFzIHByZXByb2Nlc3NvciBtYWNyb3MgaW4KK2R0LWJpbmRpbmdzL2Nsb2NrL2V4eW5vczU0NDAuaCBoZWFkZXIgYW5kIGNhbiBiZSB1c2VkIGluIGRldmljZQordHJlZSBzb3VyY2VzLgorCitFeGFtcGxlOiBBbiBleGFtcGxlIG9mIGEgY2xvY2sgY29udHJvbGxlciBub2RlIGlzIGxpc3RlZCBiZWxvdy4KKworCWNsb2NrOiBjbG9jay1jb250cm9sbGVyQDB4MTAwMTAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTQ0MC1jbG9jayI7CisJCXJlZyA9IDwweDE2MDAwMCAweDEwMDAwPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svZXh5bm9zNy1jbG9jay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svZXh5bm9zNy1jbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJmMWU3NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9leHlub3M3LWNsb2NrLnR4dApAQCAtMCwwICsxLDEwOCBAQAorKiBTYW1zdW5nIEV4eW5vczcgQ2xvY2sgQ29udHJvbGxlcgorCitFeHlub3M3IGNsb2NrIGNvbnRyb2xsZXIgaGFzIHZhcmlvdXMgYmxvY2tzIHdoaWNoIGFyZSBpbnN0YW50aWF0ZWQKK2luZGVwZW5kZW50bHkgZnJvbSB0aGUgZGV2aWNlLXRyZWUuIFRoZXNlIGNsb2NrIGNvbnRyb2xsZXJzCitnZW5lcmF0ZSBhbmQgc3VwcGx5IGNsb2NrcyB0byB2YXJpb3VzIGhhcmR3YXJlIGJsb2NrcyB3aXRoaW4KK3RoZSBTb0MuCisKK0VhY2ggY2xvY2sgaXMgYXNzaWduZWQgYW4gaWRlbnRpZmllciBhbmQgY2xpZW50IG5vZGVzIGNhbiB1c2UKK3RoaXMgaWRlbnRpZmllciB0byBzcGVjaWZ5IHRoZSBjbG9jayB3aGljaCB0aGV5IGNvbnN1bWUuIEFsbAorYXZhaWxhYmxlIGNsb2NrcyBhcmUgZGVmaW5lZCBhcyBwcmVwcm9jZXNzb3IgbWFjcm9zIGluCitkdC1iaW5kaW5ncy9jbG9jay9leHlub3M3LWNsay5oIGhlYWRlciBhbmQgY2FuIGJlIHVzZWQgaW4KK2RldmljZSB0cmVlIHNvdXJjZXMuCisKK0V4dGVybmFsIGNsb2NrczoKKworVGhlcmUgYXJlIHNldmVyYWwgY2xvY2tzIHRoYXQgYXJlIGdlbmVyYXRlZCBvdXRzaWRlIHRoZSBTb0MuIEl0CitpcyBleHBlY3RlZCB0aGF0IHRoZXkgYXJlIGRlZmluZWQgdXNpbmcgc3RhbmRhcmQgY2xvY2sgYmluZGluZ3MKK3dpdGggZm9sbG93aW5nIGNsb2NrLW91dHB1dC1uYW1lczoKKworIC0gImZpbl9wbGwiIC0gUExMIGlucHV0IGNsb2NrIGZyb20gWFhUSQorCitSZXF1aXJlZCBQcm9wZXJ0aWVzIGZvciBDbG9jayBDb250cm9sbGVyOgorCisgLSBjb21wYXRpYmxlOiBjbG9jayBjb250cm9sbGVycyB3aWxsIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZworCWNvbXBhdGlibGUgc3RyaW5ncyB0byBpbmRpY2F0ZSB0aGUgY2xvY2sgY29udHJvbGxlcgorCWZ1bmN0aW9uYWxpdHkuCisKKwktICJzYW1zdW5nLGV4eW5vczctY2xvY2stdG9wYyIKKwktICJzYW1zdW5nLGV4eW5vczctY2xvY2stdG9wMCIKKwktICJzYW1zdW5nLGV4eW5vczctY2xvY2stdG9wMSIKKwktICJzYW1zdW5nLGV4eW5vczctY2xvY2stY2NvcmUiCisJLSAic2Ftc3VuZyxleHlub3M3LWNsb2NrLXBlcmljMCIKKwktICJzYW1zdW5nLGV4eW5vczctY2xvY2stcGVyaWMxIgorCS0gInNhbXN1bmcsZXh5bm9zNy1jbG9jay1wZXJpcyIKKwktICJzYW1zdW5nLGV4eW5vczctY2xvY2stZnN5czAiCisJLSAic2Ftc3VuZyxleHlub3M3LWNsb2NrLWZzeXMxIgorCS0gInNhbXN1bmcsZXh5bm9zNy1jbG9jay1tc2NsIgorCS0gInNhbXN1bmcsZXh5bm9zNy1jbG9jay1hdWQiCisKKyAtIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCB0aGUgbGVuZ3RoIG9mCisJbWVtb3J5IG1hcHBlZCByZWdpb24uCisKKyAtICNjbG9jay1jZWxsczogc2hvdWxkIGJlIDEuCisKKyAtIGNsb2NrczogbGlzdCBvZiBjbG9jayBpZGVudGlmaWVycyB3aGljaCBhcmUgZmVkIGFzIHRoZSBpbnB1dCB0bworCXRoZSBnaXZlbiBjbG9jayBjb250cm9sbGVyLiBQbGVhc2UgcmVmZXIgdGhlIG5leHQgc2VjdGlvbiB0bworCWZpbmQgdGhlIGlucHV0IGNsb2NrcyBmb3IgYSBnaXZlbiBjb250cm9sbGVyLgorCistIGNsb2NrLW5hbWVzOiBsaXN0IG9mIG5hbWVzIG9mIGNsb2NrcyB3aGljaCBhcmUgZmVkIGFzIHRoZSBpbnB1dAorCXRvIHRoZSBnaXZlbiBjbG9jayBjb250cm9sbGVyLgorCitJbnB1dCBjbG9ja3MgZm9yIHRvcDAgY2xvY2sgY29udHJvbGxlcjoKKwktIGZpbl9wbGwKKwktIGRvdXRfc2Nsa19idXMwX3BsbAorCS0gZG91dF9zY2xrX2J1czFfcGxsCisJLSBkb3V0X3NjbGtfY2NfcGxsCisJLSBkb3V0X3NjbGtfbWZjX3BsbAorCS0gZG91dF9zY2xrX2F1ZF9wbGwKKworSW5wdXQgY2xvY2tzIGZvciB0b3AxIGNsb2NrIGNvbnRyb2xsZXI6CisJLSBmaW5fcGxsCisJLSBkb3V0X3NjbGtfYnVzMF9wbGwKKwktIGRvdXRfc2Nsa19idXMxX3BsbAorCS0gZG91dF9zY2xrX2NjX3BsbAorCS0gZG91dF9zY2xrX21mY19wbGwKKworSW5wdXQgY2xvY2tzIGZvciBjY29yZSBjbG9jayBjb250cm9sbGVyOgorCS0gZmluX3BsbAorCS0gZG91dF9hY2xrX2Njb3JlXzEzMworCitJbnB1dCBjbG9ja3MgZm9yIHBlcmljMCBjbG9jayBjb250cm9sbGVyOgorCS0gZmluX3BsbAorCS0gZG91dF9hY2xrX3BlcmljMF82NgorCS0gc2Nsa191YXJ0MAorCitJbnB1dCBjbG9ja3MgZm9yIHBlcmljMSBjbG9jayBjb250cm9sbGVyOgorCS0gZmluX3BsbAorCS0gZG91dF9hY2xrX3BlcmljMV82NgorCS0gc2Nsa191YXJ0MQorCS0gc2Nsa191YXJ0MgorCS0gc2Nsa191YXJ0MworCS0gc2Nsa19zcGkwCisJLSBzY2xrX3NwaTEKKwktIHNjbGtfc3BpMgorCS0gc2Nsa19zcGkzCisJLSBzY2xrX3NwaTQKKwktIHNjbGtfaTJzMQorCS0gc2Nsa19wY20xCisJLSBzY2xrX3NwZGlmCisKK0lucHV0IGNsb2NrcyBmb3IgcGVyaXMgY2xvY2sgY29udHJvbGxlcjoKKwktIGZpbl9wbGwKKwktIGRvdXRfYWNsa19wZXJpc182NgorCitJbnB1dCBjbG9ja3MgZm9yIGZzeXMwIGNsb2NrIGNvbnRyb2xsZXI6CisJLSBmaW5fcGxsCisJLSBkb3V0X2FjbGtfZnN5czBfMjAwCisJLSBkb3V0X3NjbGtfbW1jMgorCitJbnB1dCBjbG9ja3MgZm9yIGZzeXMxIGNsb2NrIGNvbnRyb2xsZXI6CisJLSBmaW5fcGxsCisJLSBkb3V0X2FjbGtfZnN5czFfMjAwCisJLSBkb3V0X3NjbGtfbW1jMAorCS0gZG91dF9zY2xrX21tYzEKKworSW5wdXQgY2xvY2tzIGZvciBhdWQgY2xvY2sgY29udHJvbGxlcjoKKwktIGZpbl9wbGwKKwktIGZvdXRfYXVkX3BsbApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2ZpeGVkLWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9maXhlZC1jbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY0MWE2NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9maXhlZC1jbG9jay50eHQKQEAgLTAsMCArMSwyMyBAQAorQmluZGluZyBmb3Igc2ltcGxlIGZpeGVkLXJhdGUgY2xvY2sgc291cmNlcy4KKworVGhpcyBiaW5kaW5nIHVzZXMgdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nWzFdLgorCitbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hhbGwgYmUgImZpeGVkLWNsb2NrIi4KKy0gI2Nsb2NrLWNlbGxzIDogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzsgc2hhbGwgYmUgc2V0IHRvIDAuCistIGNsb2NrLWZyZXF1ZW5jeSA6IGZyZXF1ZW5jeSBvZiBjbG9jayBpbiBIei4gU2hvdWxkIGJlIGEgc2luZ2xlIGNlbGwuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrLWFjY3VyYWN5IDogYWNjdXJhY3kgb2YgY2xvY2sgaW4gcHBiIChwYXJ0cyBwZXIgYmlsbGlvbikuCisJCSAgIFNob3VsZCBiZSBhIHNpbmdsZSBjZWxsLgorLSBjbG9jay1vdXRwdXQtbmFtZXMgOiBGcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nLgorCitFeGFtcGxlOgorCWNsb2NrIHsKKwkJY29tcGF0aWJsZSA9ICJmaXhlZC1jbG9jayI7CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDEwMDAwMDAwMDA+OworCQljbG9jay1hY2N1cmFjeSA9IDwxMDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svZml4ZWQtZmFjdG9yLWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9maXhlZC1mYWN0b3ItY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiYWU4NTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svZml4ZWQtZmFjdG9yLWNsb2NrLnR4dApAQCAtMCwwICsxLDI0IEBACitCaW5kaW5nIGZvciBzaW1wbGUgZml4ZWQgZmFjdG9yIHJhdGUgY2xvY2sgc291cmNlcy4KKworVGhpcyBiaW5kaW5nIHVzZXMgdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nWzFdLgorCitbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hhbGwgYmUgImZpeGVkLWZhY3Rvci1jbG9jayIuCistICNjbG9jay1jZWxscyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IHNoYWxsIGJlIHNldCB0byAwLgorLSBjbG9jay1kaXY6IGZpeGVkIGRpdmlkZXIuCistIGNsb2NrLW11bHQ6IGZpeGVkIG11bHRpcGxpZXIuCistIGNsb2NrczogcGFyZW50IGNsb2NrLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjbG9jay1vdXRwdXQtbmFtZXMgOiBGcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nLgorCitFeGFtcGxlOgorCWNsb2NrIHsKKwkJY29tcGF0aWJsZSA9ICJmaXhlZC1mYWN0b3ItY2xvY2siOworCQljbG9ja3MgPSA8JnBhcmVudGNsaz47CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJY2xvY2stZGl2ID0gPDI+OworCQljbG9jay1tdWx0ID0gPDE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svZnVqaXRzdSxtYjg2czcwLWNyZzExLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9mdWppdHN1LG1iODZzNzAtY3JnMTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzMjM5NjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svZnVqaXRzdSxtYjg2czcwLWNyZzExLnR4dApAQCAtMCwwICsxLDI2IEBACitGdWppdHN1IENSRzExIGNsb2NrIGRyaXZlciBiaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllcyA6CistIGNvbXBhdGlibGUgOiBTaGFsbCBjb250YWluICJmdWppdHN1LG1iODZzNzAtY3JnMTEiCistICNjbG9jay1jZWxscyA6IFNoYWxsIGJlIDMge2NudHJsciBkb21haW4gcG9ydH0KKworVGhlIGNvbnN1bWVyIHNwZWNpZmllcyB0aGUgZGVzaXJlZCBjbG9jayBwb2ludGluZyB0byBpdHMgcGhhbmRsZS4KKworRXhhbXBsZToKKworCWNsb2NrOiBjcmcxMSB7CisJCWNvbXBhdGlibGUgPSAiZnVqaXRzdSxtYjg2czcwLWNyZzExIjsKKwkJI2Nsb2NrLWNlbGxzID0gPDM+OworCX07CisKKwltaHU6IG1odTBAMmIxZjAwMDAgeworCQkjbWJveC1jZWxscyA9IDwxPjsKKwkJY29tcGF0aWJsZSA9ICJhcm0sbWh1IjsKKwkJcmVnID0gPDAgMHgyQjFGMDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMzYgND4sIC8qIExQIE5vbi1TZWMgKi8KKwkJCSAgICAgPDAgMzUgND4sIC8qIEhQIE5vbi1TZWMgKi8KKwkJCSAgICAgPDAgMzcgND47IC8qIFNlY3VyZSAqLworCQljbG9ja3MgPSA8JmNsb2NrIDAgMiAxPjsgLyogQ250cmxyOjAgRG9tYWluOjIgUG9ydDoxICovCisJCWNsb2NrLW5hbWVzID0gImNsayI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9ncGlvLWdhdGUtY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2dwaW8tZ2F0ZS1jbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMzNzlmZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9ncGlvLWdhdGUtY2xvY2sudHh0CkBAIC0wLDAgKzEsMjEgQEAKK0JpbmRpbmcgZm9yIHNpbXBsZSBncGlvIGdhdGVkIGNsb2NrLgorCitUaGlzIGJpbmRpbmcgdXNlcyB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmdbMV0uCisKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaGFsbCBiZSAiZ3Bpby1nYXRlLWNsb2NrIi4KKy0gI2Nsb2NrLWNlbGxzIDogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzsgc2hhbGwgYmUgc2V0IHRvIDAuCistIGVuYWJsZS1ncGlvcyA6IEdQSU8gcmVmZXJlbmNlIGZvciBlbmFibGluZyBhbmQgZGlzYWJsaW5nIHRoZSBjbG9jay4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gY2xvY2tzOiBNYXhpbXVtIG9mIG9uZSBwYXJlbnQgY2xvY2sgaXMgc3VwcG9ydGVkLgorCitFeGFtcGxlOgorCWNsb2NrIHsKKwkJY29tcGF0aWJsZSA9ICJncGlvLWdhdGUtY2xvY2siOworCQljbG9ja3MgPSA8JnBhcmVudGNsaz47CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJZW5hYmxlLWdwaW9zID0gPCZncGlvIDEgR1BJT19BQ1RJVkVfSElHSD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9ncGlvLW11eC1jbG9jay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svZ3Bpby1tdXgtY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiZTFlMDMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svZ3Bpby1tdXgtY2xvY2sudHh0CkBAIC0wLDAgKzEsMTkgQEAKK0JpbmRpbmcgZm9yIHNpbXBsZSBncGlvIGNsb2NrIG11bHRpcGxleGVyLgorCitUaGlzIGJpbmRpbmcgdXNlcyB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmdbMV0uCisKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaGFsbCBiZSAiZ3Bpby1tdXgtY2xvY2siLgorLSBjbG9ja3M6IGxpc3Qgb2YgdHdvIHJlZmVyZW5jZXMgdG8gcGFyZW50IGNsb2Nrcy4KKy0gI2Nsb2NrLWNlbGxzIDogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzsgc2hhbGwgYmUgc2V0IHRvIDAuCistIHNlbGVjdC1ncGlvcyA6IEdQSU8gcmVmZXJlbmNlIGZvciBzZWxlY3RpbmcgdGhlIHBhcmVudCBjbG9jay4KKworRXhhbXBsZToKKwljbG9jayB7CisJCWNvbXBhdGlibGUgPSAiZ3Bpby1tdXgtY2xvY2siOworCQljbG9ja3MgPSA8JnBhcmVudGNsazE+LCA8JnBhcmVudGNsazI+OworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCXNlbGVjdC1ncGlvcyA9IDwmZ3BpbyAxIEdQSU9fQUNUSVZFX0hJR0g+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaGkzNjIwLWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9oaTM2MjAtY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhZDYyNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaGkzNjIwLWNsb2NrLnR4dApAQCAtMCwwICsxLDIwIEBACisqIEhpc2lsaWNvbiBIaTM2MjAgQ2xvY2sgQ29udHJvbGxlcgorCitUaGUgSGkzNjIwIGNsb2NrIGNvbnRyb2xsZXIgZ2VuZXJhdGVzIGFuZCBzdXBwbGllcyBjbG9jayB0byB2YXJpb3VzCitjb250cm9sbGVycyB3aXRoaW4gdGhlIEhpMzYyMCBTb0MuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nLgorICAtICJoaXNpbGljb24saGkzNjIwLWNsb2NrIiAtIGNvbnRyb2xsZXIgY29tcGF0aWJsZSB3aXRoIEhpMzYyMCBTb0MuCisgIC0gImhpc2lsaWNvbixoaTM2MjAtbW1jLWNsb2NrIiAtIGNvbnRyb2xsZXIgc3BlY2lmaWMgZm9yIEhpMzYyMCBtbWMuCisKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgIHJlZ2lvbi4KKworLSAjY2xvY2stY2VsbHM6IHNob3VsZCBiZSAxLgorCitFYWNoIGNsb2NrIGlzIGFzc2lnbmVkIGFuIGlkZW50aWZpZXIgYW5kIGNsaWVudCBub2RlcyB1c2UgdGhpcyBpZGVudGlmaWVyCit0byBzcGVjaWZ5IHRoZSBjbG9jayB3aGljaCB0aGV5IGNvbnN1bWUuCisKK0FsbCB0aGVzZSBpZGVudGlmaWVyIGNvdWxkIGJlIGZvdW5kIGluIDxkdC1iaW5kaW5ncy9jbG9jay9oaTM2MjAtY2xvY2suaD4uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaGk2MjIwLWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9oaTYyMjAtY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0ZDVmZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaGk2MjIwLWNsb2NrLnR4dApAQCAtMCwwICsxLDUxIEBACisqIEhpc2lsaWNvbiBIaTYyMjAgQ2xvY2sgQ29udHJvbGxlcgorCitDbG9jayBjb250cm9sIHJlZ2lzdGVycyByZXNpZGUgaW4gZGlmZmVyZW50IEhpNjIyMCBzeXN0ZW0gY29udHJvbGxlcnMsCitwbGVhc2UgcmVmZXIgdGhlIGZvbGxvd2luZyBkb2N1bWVudCB0byBrbm93IG1vcmUgYWJvdXQgdGhlIGJpbmRpbmcgcnVsZXMKK2ZvciB0aGVzZSBzeXN0ZW0gY29udHJvbGxlcnM6CisKK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vaGlzaWxpY29uL2hpc2lsaWNvbi50eHQKKworUmVxdWlyZWQgUHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiB0aGUgY29tcGF0aWJsZSBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgc3RyaW5ncyB0bworCWluZGljYXRlIHRoZSBjbG9jayBjb250cm9sbGVyIGZ1bmN0aW9uYWxpdHkuCisKKwktICJoaXNpbGljb24saGk2MjIwLWFvY3RybCIKKwktICJoaXNpbGljb24saGk2MjIwLXN5c2N0cmwiCisJLSAiaGlzaWxpY29uLGhpNjIyMC1tZWRpYWN0cmwiCisJLSAiaGlzaWxpY29uLGhpNjIyMC1wbWN0cmwiCisJLSAiaGlzaWxpY29uLGhpNjIyMC1zdHViLWNsayIKKworLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorCistICNjbG9jay1jZWxsczogc2hvdWxkIGJlIDEuCisKK09wdGlvbmFsIFByb3BlcnRpZXM6CisKKy0gaGlzaWxpY29uLGhpNjIyMC1jbGstc3JhbTogcGhhbmRsZSB0byB0aGUgc3lzY29uIG1hbmFnaW5nIHRoZSBTb0MgaW50ZXJuYWwgc3JhbTsKKyAgdGhlIGRyaXZlciBuZWVkIHVzZSB0aGUgc3JhbSB0byBwYXNzIHBhcmFtZXRlcnMgZm9yIGZyZXF1ZW5jeSBjaGFuZ2UuCisKKy0gbWJveGVzOiB1c2UgdGhlIGxhYmVsIHJlZmVyZW5jZSBmb3IgdGhlIG1haWxib3ggYXMgdGhlIGZpcnN0IHBhcmFtZXRlciwgdGhlCisgIHNlY29uZCBwYXJhbWV0ZXIgaXMgdGhlIGNoYW5uZWwgbnVtYmVyLgorCitFeGFtcGxlIDE6CisJc3lzX2N0cmw6IHN5c19jdHJsQGY3MDMwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJoaXNpbGljb24saGk2MjIwLXN5c2N0cmwiLCAic3lzY29uIjsKKwkJcmVnID0gPDB4MCAweGY3MDMwMDAwIDB4MCAweDIwMDA+OworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJfTsKKworRXhhbXBsZSAyOgorCXN0dWJfY2xvY2s6IHN0dWJfY2xvY2sgeworCQljb21wYXRpYmxlID0gImhpc2lsaWNvbixoaTYyMjAtc3R1Yi1jbGsiOworCQloaXNpbGljb24saGk2MjIwLWNsay1zcmFtID0gPCZzcmFtPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQltYm94ZXMgPSA8Jm1haWxib3ggMT47CisJfTsKKworRWFjaCBjbG9jayBpcyBhc3NpZ25lZCBhbiBpZGVudGlmaWVyIGFuZCBjbGllbnQgbm9kZXMgdXNlIHRoaXMgaWRlbnRpZmllcgordG8gc3BlY2lmeSB0aGUgY2xvY2sgd2hpY2ggdGhleSBjb25zdW1lLgorCitBbGwgdGhlc2UgaWRlbnRpZmllciBjb3VsZCBiZSBmb3VuZCBpbiA8ZHQtYmluZGluZ3MvY2xvY2svaGk2MjIwLWNsb2NrLmg+LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2hpeDVoZDItY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2hpeDVoZDItY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4OTRhNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaGl4NWhkMi1jbG9jay50eHQKQEAgLTAsMCArMSwzMSBAQAorKiBIaXNpbGljb24gSGl4NWhkMiBDbG9jayBDb250cm9sbGVyCisKK1RoZSBoaXg1aGQyIGNsb2NrIGNvbnRyb2xsZXIgZ2VuZXJhdGVzIGFuZCBzdXBwbGllcyBjbG9jayB0byB2YXJpb3VzCitjb250cm9sbGVycyB3aXRoaW4gdGhlIGhpeDVoZDIgU29DLgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiaGlzaWxpY29uLGhpeDVoZDItY2xvY2siCistIHJlZzogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQKKy0gI2Nsb2NrLWNlbGxzOiBTaG91bGQgYmUgPDE+CisKK0VhY2ggY2xvY2sgaXMgYXNzaWduZWQgYW4gaWRlbnRpZmllciBhbmQgY2xpZW50IG5vZGVzIHVzZSB0aGlzIGlkZW50aWZpZXIKK3RvIHNwZWNpZnkgdGhlIGNsb2NrIHdoaWNoIHRoZXkgY29uc3VtZS4KKworQWxsIHRoZXNlIGlkZW50aWZpZXIgY291bGQgYmUgZm91bmQgaW4gPGR0LWJpbmRpbmdzL2Nsb2NrL2hpeDVoZDItY2xvY2suaD4uCisKK0V4YW1wbGVzOgorCWNsb2NrOiBjbG9ja0BmOGEyMjAwMCB7CisJCWNvbXBhdGlibGUgPSAiaGlzaWxpY29uLGhpeDVoZDItY2xvY2siOworCQlyZWcgPSA8MHhmOGEyMjAwMCAweDEwMDA+OworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJfTsKKworCXVhcnQwOiB1YXJ0QGY4YjAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0scGwwMTEiLCAiYXJtLHByaW1lY2VsbCI7CisJCXJlZyA9IDwweGY4YjAwMDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MCA0OSA0PjsKKwkJY2xvY2tzID0gPCZjbG9jayBISVg1SEQyX0ZJWEVEXzgzTT47CisJCWNsb2NrLW5hbWVzID0gImFwYl9wY2xrIjsKKwkJc3RhdHVzID0gImRpc2FibGVkIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2lteDEtY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2lteDEtY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3YWRmNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaW14MS1jbG9jay50eHQKQEAgLTAsMCArMSwyNiBAQAorKiBDbG9jayBiaW5kaW5ncyBmb3IgRnJlZXNjYWxlIGkuTVgxIENQVXMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJmc2wsaW14MS1jY20iLgorLSByZWc6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0LgorLSAjY2xvY2stY2VsbHM6IFNob3VsZCBiZSA8MT4uCisKK1RoZSBjbG9jayBjb25zdW1lciBzaG91bGQgc3BlY2lmeSB0aGUgZGVzaXJlZCBjbG9jayBieSBoYXZpbmcgdGhlIGNsb2NrCitJRCBpbiBpdHMgImNsb2NrcyIgcGhhbmRsZSBjZWxsLiBTZWUgaW5jbHVkZS9kdC1iaW5kaW5ncy9jbG9jay9pbXgxLWNsb2NrLmgKK2ZvciB0aGUgZnVsbCBsaXN0IG9mIGkuTVgxIGNsb2NrIElEcy4KKworRXhhbXBsZXM6CisJY2xrczogY2NtQDAwMjFiMDAwIHsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQljb21wYXRpYmxlID0gImZzbCxpbXgxLWNjbSI7CisJCXJlZyA9IDwweDAwMjFiMDAwIDB4MTAwMD47CisJfTsKKworCXB3bTogcHdtQDAwMjA4MDAwIHsKKwkJI3B3bS1jZWxscyA9IDwyPjsKKwkJY29tcGF0aWJsZSA9ICJmc2wsaW14MS1wd20iOworCQlyZWcgPSA8MHgwMDIwODAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDM0PjsKKwkJY2xvY2tzID0gPCZjbGtzIElNWDFfQ0xLX0RVTU1ZPiwgPCZjbGtzIElNWDFfQ0xLX1BFUjE+OworCQljbG9jay1uYW1lcyA9ICJpcGciLCAicGVyIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2lteDIxLWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbXgyMS1jbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNiMGRiNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbXgyMS1jbG9jay50eHQKQEAgLTAsMCArMSwyOCBAQAorKiBDbG9jayBiaW5kaW5ncyBmb3IgRnJlZXNjYWxlIGkuTVgyMQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlICA6IFNob3VsZCBiZSAiZnNsLGlteDIxLWNjbSIuCistIHJlZyAgICAgICAgIDogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQuCistIGludGVycnVwdHMgIDogU2hvdWxkIGNvbnRhaW4gQ0NNIGludGVycnVwdC4KKy0gI2Nsb2NrLWNlbGxzOiBTaG91bGQgYmUgPDE+LgorCitUaGUgY2xvY2sgY29uc3VtZXIgc2hvdWxkIHNwZWNpZnkgdGhlIGRlc2lyZWQgY2xvY2sgYnkgaGF2aW5nIHRoZSBjbG9jaworSUQgaW4gaXRzICJjbG9ja3MiIHBoYW5kbGUgY2VsbC4gU2VlIGluY2x1ZGUvZHQtYmluZGluZ3MvY2xvY2svaW14MjEtY2xvY2suaAorZm9yIHRoZSBmdWxsIGxpc3Qgb2YgaS5NWDIxIGNsb2NrIElEcy4KKworRXhhbXBsZXM6CisJY2xrczogY2NtQDEwMDI3MDAweworCQljb21wYXRpYmxlID0gImZzbCxpbXgyMS1jY20iOworCQlyZWcgPSA8MHgxMDAyNzAwMCAweDgwMD47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKwl9OworCisJdWFydDE6IHNlcmlhbEAxMDAwYTAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGlteDIxLXVhcnQiOworCQlyZWcgPSA8MHgxMDAwYTAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDIwPjsKKwkJY2xvY2tzID0gPCZjbGtzIElNWDIxX0NMS19VQVJUMV9JUEdfR0FURT4sCisJCQkgPCZjbGtzIElNWDIxX0NMS19QRVIxPjsKKwkJY2xvY2stbmFtZXMgPSAiaXBnIiwgInBlciI7CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbXgyMy1jbG9jay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaW14MjMtY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwODNjMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaW14MjMtY2xvY2sudHh0CkBAIC0wLDAgKzEsNzEgQEAKKyogQ2xvY2sgYmluZGluZ3MgZm9yIEZyZWVzY2FsZSBpLk1YMjMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJmc2wsaW14MjMtY2xrY3RybCIKKy0gcmVnOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldAorLSAjY2xvY2stY2VsbHM6IFNob3VsZCBiZSA8MT4KKworVGhlIGNsb2NrIGNvbnN1bWVyIHNob3VsZCBzcGVjaWZ5IHRoZSBkZXNpcmVkIGNsb2NrIGJ5IGhhdmluZyB0aGUgY2xvY2sKK0lEIGluIGl0cyAiY2xvY2tzIiBwaGFuZGxlIGNlbGwuICBUaGUgZm9sbG93aW5nIGlzIGEgZnVsbCBsaXN0IG9mIGkuTVgyMworY2xvY2tzIGFuZCBJRHMuCisKKwlDbG9jawkJSUQKKwktLS0tLS0tLS0tLS0tLS0tLS0KKwlyZWZfeHRhbAkwCisJcGxsCQkxCisJcmVmX2NwdQkJMgorCXJlZl9lbWkJCTMKKwlyZWZfcGl4CQk0CisJcmVmX2lvCQk1CisJc2FpZl9zZWwJNgorCWxjZGlmX3NlbAk3CisJZ3BtaV9zZWwJOAorCXNzcF9zZWwJCTkKKwllbWlfc2VsCQkxMAorCWNwdQkJMTEKKwlldG1fc2VsCQkxMgorCWNwdV9wbGwJCTEzCisJY3B1X3h0YWwJMTQKKwloYnVzCQkxNQorCXhidXMJCTE2CisJbGNkaWZfZGl2CTE3CisJc3NwX2RpdgkJMTgKKwlncG1pX2RpdgkxOQorCWVtaV9wbGwJCTIwCisJZW1pX3h0YWwJMjEKKwlldG1fZGl2CQkyMgorCXNhaWZfZGl2CTIzCisJY2xrMzJrX2RpdgkyNAorCXJ0YwkJMjUKKwlhZGMJCTI2CisJc3BkaWZfZGl2CTI3CisJY2xrMzJrCQkyOAorCWRyaQkJMjkKKwlwd20JCTMwCisJZmlsdAkJMzEKKwl1YXJ0CQkzMgorCXNzcAkJMzMKKwlncG1pCQkzNAorCXNwZGlmCQkzNQorCWVtaQkJMzYKKwlzYWlmCQkzNworCWxjZGlmCQkzOAorCWV0bQkJMzkKKwl1c2IJCTQwCisJdXNiX3BoeQkJNDEKKworRXhhbXBsZXM6CisKK2Nsa3M6IGNsa2N0cmxAODAwNDAwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDIzLWNsa2N0cmwiOworCXJlZyA9IDwweDgwMDQwMDAwIDB4MjAwMD47CisJI2Nsb2NrLWNlbGxzID0gPDE+OworfTsKKworYXVhcnQwOiBzZXJpYWxAODAwNmMwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDIzLWF1YXJ0IjsKKwlyZWcgPSA8MHg4MDA2YzAwMCAweDIwMDA+OworCWludGVycnVwdHMgPSA8MjQgMjUgMjM+OworCWNsb2NrcyA9IDwmY2xrcyAzMj47CisJc3RhdHVzID0gImRpc2FibGVkIjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaW14MjUtY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2lteDI1LWNsb2NrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTZiMzEyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2lteDI1LWNsb2NrLnR4dApAQCAtMCwwICsxLDE2MSBAQAorKiBDbG9jayBiaW5kaW5ncyBmb3IgRnJlZXNjYWxlIGkuTVgyNQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImZzbCxpbXgyNS1jY20iCistIHJlZzogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQKKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gQ0NNIGludGVycnVwdAorLSAjY2xvY2stY2VsbHM6IFNob3VsZCBiZSA8MT4KKworVGhlIGNsb2NrIGNvbnN1bWVyIHNob3VsZCBzcGVjaWZ5IHRoZSBkZXNpcmVkIGNsb2NrIGJ5IGhhdmluZyB0aGUgY2xvY2sKK0lEIGluIGl0cyAiY2xvY2tzIiBwaGFuZGxlIGNlbGwuICBUaGUgZm9sbG93aW5nIGlzIGEgZnVsbCBsaXN0IG9mIGkuTVgyNQorY2xvY2tzIGFuZCBJRHMuCisKKwlDbG9jawkJCUlECisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJZHVtbXkJCQkwCisJb3NjCQkJMQorCW1wbGwJCQkyCisJdXBsbAkJCTMKKwltcGxsX2NwdV8zXzQJCTQKKwljcHVfc2VsCQkJNQorCWNwdQkJCTYKKwlhaGIJCQk3CisJdXNiX2RpdgkJCTgKKwlpcGcJCQk5CisJcGVyMF9zZWwJCTEwCisJcGVyMV9zZWwJCTExCisJcGVyMl9zZWwJCTEyCisJcGVyM19zZWwJCTEzCisJcGVyNF9zZWwJCTE0CisJcGVyNV9zZWwJCTE1CisJcGVyNl9zZWwJCTE2CisJcGVyN19zZWwJCTE3CisJcGVyOF9zZWwJCTE4CisJcGVyOV9zZWwJCTE5CisJcGVyMTBfc2VsCQkyMAorCXBlcjExX3NlbAkJMjEKKwlwZXIxMl9zZWwJCTIyCisJcGVyMTNfc2VsCQkyMworCXBlcjE0X3NlbAkJMjQKKwlwZXIxNV9zZWwJCTI1CisJcGVyMAkJCTI2CisJcGVyMQkJCTI3CisJcGVyMgkJCTI4CisJcGVyMwkJCTI5CisJcGVyNAkJCTMwCisJcGVyNQkJCTMxCisJcGVyNgkJCTMyCisJcGVyNwkJCTMzCisJcGVyOAkJCTM0CisJcGVyOQkJCTM1CisJcGVyMTAJCQkzNgorCXBlcjExCQkJMzcKKwlwZXIxMgkJCTM4CisJcGVyMTMJCQkzOQorCXBlcjE0CQkJNDAKKwlwZXIxNQkJCTQxCisJY3NpX2lwZ19wZXIJCTQyCisJZXBpdF9pcGdfcGVyCQk0MworCWVzYWlfaXBnX3BlcgkJNDQKKwllc2RoYzFfaXBnX3BlcgkJNDUKKwllc2RoYzJfaXBnX3BlcgkJNDYKKwlncHRfaXBnX3BlcgkJNDcKKwlpMmNfaXBnX3BlcgkJNDgKKwlsY2RjX2lwZ19wZXIJCTQ5CisJbmZjX2lwZ19wZXIJCTUwCisJb3dpcmVfaXBnX3BlcgkJNTEKKwlwd21faXBnX3BlcgkJNTIKKwlzaW0xX2lwZ19wZXIJCTUzCisJc2ltMl9pcGdfcGVyCQk1NAorCXNzaTFfaXBnX3BlcgkJNTUKKwlzc2kyX2lwZ19wZXIJCTU2CisJdWFydF9pcGdfcGVyCQk1NworCWF0YV9haGIJCQk1OAorCXJlc2VydmVkCQk1OQorCWNzaV9haGIJCQk2MAorCWVtaV9haGIJCQk2MQorCWVzYWlfYWhiCQk2MgorCWVzZGhjMV9haGIJCTYzCisJZXNkaGMyX2FoYgkJNjQKKwlmZWNfYWhiCQkJNjUKKwlsY2RjX2FoYgkJNjYKKwlydGljX2FoYgkJNjcKKwlzZG1hX2FoYgkJNjgKKwlzbGNkY19haGIJCTY5CisJdXNib3RnX2FoYgkJNzAKKwlyZXNlcnZlZAkJNzEKKwlyZXNlcnZlZAkJNzIKKwlyZXNlcnZlZAkJNzMKKwlyZXNlcnZlZAkJNzQKKwljYW4xX2lwZwkJNzUKKwljYW4yX2lwZwkJNzYKKwljc2lfaXBnCQkJNzcKKwljc3BpMV9pcGcJCTc4CisJY3NwaTJfaXBnCQk3OQorCWNzcGkzX2lwZwkJODAKKwlkcnlpY2VfaXBnCQk4MQorCWVjdF9pcGcJCQk4MgorCWVwaXQxX2lwZwkJODMKKwllcGl0Ml9pcGcJCTg0CisJcmVzZXJ2ZWQJCTg1CisJZXNkaGMxX2lwZwkJODYKKwllc2RoYzJfaXBnCQk4NworCWZlY19pcGcJCQk4OAorCXJlc2VydmVkCQk4OQorCXJlc2VydmVkCQk5MAorCXJlc2VydmVkCQk5MQorCWdwdDFfaXBnCQk5MgorCWdwdDJfaXBnCQk5MworCWdwdDNfaXBnCQk5NAorCWdwdDRfaXBnCQk5NQorCXJlc2VydmVkCQk5NgorCXJlc2VydmVkCQk5NworCXJlc2VydmVkCQk5OAorCWlpbV9pcGcJCQk5OQorCXJlc2VydmVkCQkxMDAKKwlyZXNlcnZlZAkJMTAxCisJa3BwX2lwZwkJCTEwMgorCWxjZGNfaXBnCQkxMDMKKwlyZXNlcnZlZAkJMTA0CisJcHdtMV9pcGcJCTEwNQorCXB3bTJfaXBnCQkxMDYKKwlwd20zX2lwZwkJMTA3CisJcHdtNF9pcGcJCTEwOAorCXJuZ2JfaXBnCQkxMDkKKwlyZXNlcnZlZAkJMTEwCisJc2NjX2lwZwkJCTExMQorCXNkbWFfaXBnCQkxMTIKKwlzaW0xX2lwZwkJMTEzCisJc2ltMl9pcGcJCTExNAorCXNsY2RjX2lwZwkJMTE1CisJc3BiYV9pcGcJCTExNgorCXNzaTFfaXBnCQkxMTcKKwlzc2kyX2lwZwkJMTE4CisJdHNjX2lwZwkJCTExOQorCXVhcnQxX2lwZwkJMTIwCisJdWFydDJfaXBnCQkxMjEKKwl1YXJ0M19pcGcJCTEyMgorCXVhcnQ0X2lwZwkJMTIzCisJdWFydDVfaXBnCQkxMjQKKwlyZXNlcnZlZAkJMTI1CisJd2R0X2lwZwkJCTEyNgorCWNrb19kaXYJCQkxMjcKKwlja29fc2VsCQkJMTI4CisJY2tvCQkJMTI5CisKK0V4YW1wbGVzOgorCitjbGtzOiBjY21ANTNmODAwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDI1LWNjbSI7CisJcmVnID0gPDB4NTNmODAwMDAgMHg0MDAwPjsKKwlpbnRlcnJ1cHRzID0gPDMxPjsKK307CisKK3VhcnQxOiBzZXJpYWxANDNmOTAwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDI1LXVhcnQiLCAiZnNsLGlteDIxLXVhcnQiOworCXJlZyA9IDwweDQzZjkwMDAwIDB4NDAwMD47CisJaW50ZXJydXB0cyA9IDw0NT47CisJY2xvY2tzID0gPCZjbGtzIDc5PiwgPCZjbGtzIDUwPjsKKwljbG9jay1uYW1lcyA9ICJpcGciLCAicGVyIjsKKwlzdGF0dXMgPSAiZGlzYWJsZWQiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbXgyNy1jbG9jay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaW14MjctY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjMDVkZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaW14MjctY2xvY2sudHh0CkBAIC0wLDAgKzEsMjggQEAKKyogQ2xvY2sgYmluZGluZ3MgZm9yIEZyZWVzY2FsZSBpLk1YMjcKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJmc2wsaW14MjctY2NtIgorLSByZWc6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0CistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIENDTSBpbnRlcnJ1cHQKKy0gI2Nsb2NrLWNlbGxzOiBTaG91bGQgYmUgPDE+CisKK1RoZSBjbG9jayBjb25zdW1lciBzaG91bGQgc3BlY2lmeSB0aGUgZGVzaXJlZCBjbG9jayBieSBoYXZpbmcgdGhlIGNsb2NrCitJRCBpbiBpdHMgImNsb2NrcyIgcGhhbmRsZSBjZWxsLiBTZWUgaW5jbHVkZS9kdC1iaW5kaW5ncy9jbG9jay9pbXgyNy1jbG9jay5oCitmb3IgdGhlIGZ1bGwgbGlzdCBvZiBpLk1YMjcgY2xvY2sgSURzLgorCitFeGFtcGxlczoKKwljbGtzOiBjY21AMTAwMjcwMDB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGlteDI3LWNjbSI7CisJCXJlZyA9IDwweDEwMDI3MDAwIDB4MTAwMD47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKwl9OworCisJdWFydDE6IHNlcmlhbEAxMDAwYTAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGlteDI3LXVhcnQiLCAiZnNsLGlteDIxLXVhcnQiOworCQlyZWcgPSA8MHgxMDAwYTAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDIwPjsKKwkJY2xvY2tzID0gPCZjbGtzIElNWDI3X0NMS19VQVJUMV9JUEdfR0FURT4sCisJCQkgPCZjbGtzIElNWDI3X0NMS19QRVIxX0dBVEU+OworCQljbG9jay1uYW1lcyA9ICJpcGciLCAicGVyIjsKKwkJc3RhdHVzID0gImRpc2FibGVkIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2lteDI4LWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbXgyOC1jbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY1ODdhZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbXgyOC1jbG9jay50eHQKQEAgLTAsMCArMSw5NCBAQAorKiBDbG9jayBiaW5kaW5ncyBmb3IgRnJlZXNjYWxlIGkuTVgyOAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImZzbCxpbXgyOC1jbGtjdHJsIgorLSByZWc6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0CistICNjbG9jay1jZWxsczogU2hvdWxkIGJlIDwxPgorCitUaGUgY2xvY2sgY29uc3VtZXIgc2hvdWxkIHNwZWNpZnkgdGhlIGRlc2lyZWQgY2xvY2sgYnkgaGF2aW5nIHRoZSBjbG9jaworSUQgaW4gaXRzICJjbG9ja3MiIHBoYW5kbGUgY2VsbC4gIFRoZSBmb2xsb3dpbmcgaXMgYSBmdWxsIGxpc3Qgb2YgaS5NWDI4CitjbG9ja3MgYW5kIElEcy4KKworCUNsb2NrCQlJRAorCS0tLS0tLS0tLS0tLS0tLS0tLQorCXJlZl94dGFsCTAKKwlwbGwwCQkxCisJcGxsMQkJMgorCXBsbDIJCTMKKwlyZWZfY3B1CQk0CisJcmVmX2VtaQkJNQorCXJlZl9pbzAJCTYKKwlyZWZfaW8xCQk3CisJcmVmX3BpeAkJOAorCXJlZl9oc2FkYwk5CisJcmVmX2dwbWkJMTAKKwlzYWlmMF9zZWwJMTEKKwlzYWlmMV9zZWwJMTIKKwlncG1pX3NlbAkxMworCXNzcDBfc2VsCTE0CisJc3NwMV9zZWwJMTUKKwlzc3AyX3NlbAkxNgorCXNzcDNfc2VsCTE3CisJZW1pX3NlbAkJMTgKKwlldG1fc2VsCQkxOQorCWxjZGlmX3NlbAkyMAorCWNwdQkJMjEKKwlwdHBfc2VsCQkyMgorCWNwdV9wbGwJCTIzCisJY3B1X3h0YWwJMjQKKwloYnVzCQkyNQorCXhidXMJCTI2CisJc3NwMF9kaXYJMjcKKwlzc3AxX2RpdgkyOAorCXNzcDJfZGl2CTI5CisJc3NwM19kaXYJMzAKKwlncG1pX2RpdgkzMQorCWVtaV9wbGwJCTMyCisJZW1pX3h0YWwJMzMKKwlsY2RpZl9kaXYJMzQKKwlldG1fZGl2CQkzNQorCXB0cAkJMzYKKwlzYWlmMF9kaXYJMzcKKwlzYWlmMV9kaXYJMzgKKwljbGszMmtfZGl2CTM5CisJcnRjCQk0MAorCWxyYWRjCQk0MQorCXNwZGlmX2Rpdgk0MgorCWNsazMyawkJNDMKKwlwd20JCTQ0CisJdWFydAkJNDUKKwlzc3AwCQk0NgorCXNzcDEJCTQ3CisJc3NwMgkJNDgKKwlzc3AzCQk0OQorCWdwbWkJCTUwCisJc3BkaWYJCTUxCisJZW1pCQk1MgorCXNhaWYwCQk1MworCXNhaWYxCQk1NAorCWxjZGlmCQk1NQorCWV0bQkJNTYKKwlmZWMJCTU3CisJY2FuMAkJNTgKKwljYW4xCQk1OQorCXVzYjAJCTYwCisJdXNiMQkJNjEKKwl1c2IwX3BoeQk2MgorCXVzYjFfcGh5CTYzCisJZW5ldF9vdXQJNjQKKworRXhhbXBsZXM6CisKK2Nsa3M6IGNsa2N0cmxAODAwNDAwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDI4LWNsa2N0cmwiOworCXJlZyA9IDwweDgwMDQwMDAwIDB4MjAwMD47CisJI2Nsb2NrLWNlbGxzID0gPDE+OworfTsKKworYXVhcnQwOiBzZXJpYWxAODAwNmEwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDI4LWF1YXJ0IiwgImZzbCxpbXgyMy1hdWFydCI7CisJcmVnID0gPDB4ODAwNmEwMDAgMHgyMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDExMiA3MCA3MT47CisJY2xvY2tzID0gPCZjbGtzIDQ1PjsKKwlzdGF0dXMgPSAiZGlzYWJsZWQiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbXgzMS1jbG9jay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaW14MzEtY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxNjNkNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaW14MzEtY2xvY2sudHh0CkBAIC0wLDAgKzEsOTEgQEAKKyogQ2xvY2sgYmluZGluZ3MgZm9yIEZyZWVzY2FsZSBpLk1YMzEKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJmc2wsaW14MzEtY2NtIgorLSByZWc6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0CistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIENDTSBpbnRlcnJ1cHQKKy0gI2Nsb2NrLWNlbGxzOiBTaG91bGQgYmUgPDE+CisKK1RoZSBjbG9jayBjb25zdW1lciBzaG91bGQgc3BlY2lmeSB0aGUgZGVzaXJlZCBjbG9jayBieSBoYXZpbmcgdGhlIGNsb2NrCitJRCBpbiBpdHMgImNsb2NrcyIgcGhhbmRsZSBjZWxsLiAgVGhlIGZvbGxvd2luZyBpcyBhIGZ1bGwgbGlzdCBvZiBpLk1YMzEKK2Nsb2NrcyBhbmQgSURzLgorCisJQ2xvY2sJCSAgICBJRAorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJZHVtbXkJICAgICAgICAgICAgIDAKKwlja2loICAgICAgICAgICAgICAgICAxCisJY2tpbCAgICAgICAgICAgICAgICAgMgorCW1wbGwgICAgICAgICAgICAgICAgIDMKKwlzcGxsICAgICAgICAgICAgICAgICA0CisJdXBsbCAgICAgICAgICAgICAgICAgNQorCW1jdV9tYWluICAgICAgICAgICAgIDYKKwloc3AgICAgICAgICAgICAgICAgICA3CisJYWhiICAgICAgICAgICAgICAgICAgOAorCW5mYyAgICAgICAgICAgICAgICAgIDkKKwlpcGcgICAgICAgICAgICAgICAgICAxMAorCXBlcl9kaXYgICAgICAgICAgICAgIDExCisJcGVyICAgICAgICAgICAgICAgICAgMTIKKwljc2lfc2VsICAgICAgICAgICAgICAxMworCWZpcl9zZWwgICAgICAgICAgICAgIDE0CisJY3NpX2RpdiAgICAgICAgICAgICAgMTUKKwl1c2JfZGl2X3ByZSAgICAgICAgICAxNgorCXVzYl9kaXZfcG9zdCAgICAgICAgIDE3CisJZmlyX2Rpdl9wcmUgICAgICAgICAgMTgKKwlmaXJfZGl2X3Bvc3QgICAgICAgICAxOQorCXNkaGMxX2dhdGUgICAgICAgICAgIDIwCisJc2RoYzJfZ2F0ZSAgICAgICAgICAgMjEKKwlncHRfZ2F0ZSAgICAgICAgICAgICAyMgorCWVwaXQxX2dhdGUgICAgICAgICAgIDIzCisJZXBpdDJfZ2F0ZSAgICAgICAgICAgMjQKKwlpaW1fZ2F0ZSAgICAgICAgICAgICAyNQorCWF0YV9nYXRlICAgICAgICAgICAgIDI2CisJc2RtYV9nYXRlICAgICAgICAgICAgMjcKKwljc3BpM19nYXRlICAgICAgICAgICAyOAorCXJuZ19nYXRlICAgICAgICAgICAgIDI5CisJdWFydDFfZ2F0ZSAgICAgICAgICAgMzAKKwl1YXJ0Ml9nYXRlICAgICAgICAgICAzMQorCXNzaTFfZ2F0ZSAgICAgICAgICAgIDMyCisJaTJjMV9nYXRlICAgICAgICAgICAgMzMKKwlpMmMyX2dhdGUgICAgICAgICAgICAzNAorCWkyYzNfZ2F0ZSAgICAgICAgICAgIDM1CisJaGFudHJvX2dhdGUgICAgICAgICAgMzYKKwltc3RpY2sxX2dhdGUgICAgICAgICAzNworCW1zdGljazJfZ2F0ZSAgICAgICAgIDM4CisJY3NpX2dhdGUgICAgICAgICAgICAgMzkKKwlydGNfZ2F0ZSAgICAgICAgICAgICA0MAorCXdkb2dfZ2F0ZSAgICAgICAgICAgIDQxCisJcHdtX2dhdGUgICAgICAgICAgICAgNDIKKwlzaW1fZ2F0ZSAgICAgICAgICAgICA0MworCWVjdF9nYXRlICAgICAgICAgICAgIDQ0CisJdXNiX2dhdGUgICAgICAgICAgICAgNDUKKwlrcHBfZ2F0ZSAgICAgICAgICAgICA0NgorCWlwdV9nYXRlICAgICAgICAgICAgIDQ3CisJdWFydDNfZ2F0ZSAgICAgICAgICAgNDgKKwl1YXJ0NF9nYXRlICAgICAgICAgICA0OQorCXVhcnQ1X2dhdGUgICAgICAgICAgIDUwCisJb3dpcmVfZ2F0ZSAgICAgICAgICAgNTEKKwlzc2kyX2dhdGUgICAgICAgICAgICA1MgorCWNzcGkxX2dhdGUgICAgICAgICAgIDUzCisJY3NwaTJfZ2F0ZSAgICAgICAgICAgNTQKKwlnYWNjX2dhdGUgICAgICAgICAgICA1NQorCWVtaV9nYXRlICAgICAgICAgICAgIDU2CisJcnRpY19nYXRlICAgICAgICAgICAgNTcKKwlmaXJpX2dhdGUgICAgICAgICAgICA1OAorCitFeGFtcGxlczoKKworY2xrczogY2NtQDUzZjgwMDAweworCWNvbXBhdGlibGUgPSAiZnNsLGlteDMxLWNjbSI7CisJcmVnID0gPDB4NTNmODAwMDAgMHg0MDAwPjsKKwlpbnRlcnJ1cHRzID0gPDMxPiwgPDUzPjsKKwkjY2xvY2stY2VsbHMgPSA8MT47Cit9OworCit1YXJ0MTogc2VyaWFsQDQzZjkwMDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxpbXgzMS11YXJ0IiwgImZzbCxpbXgyMS11YXJ0IjsKKwlyZWcgPSA8MHg0M2Y5MDAwMCAweDQwMDA+OworCWludGVycnVwdHMgPSA8NDU+OworCWNsb2NrcyA9IDwmY2xrcyAxMD4sIDwmY2xrcyAzMD47CisJY2xvY2stbmFtZXMgPSAiaXBnIiwgInBlciI7CisJc3RhdHVzID0gImRpc2FibGVkIjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaW14MzUtY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2lteDM1LWNsb2NrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDk3ODMyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2lteDM1LWNsb2NrLnR4dApAQCAtMCwwICsxLDExNCBAQAorKiBDbG9jayBiaW5kaW5ncyBmb3IgRnJlZXNjYWxlIGkuTVgzNQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImZzbCxpbXgzNS1jY20iCistIHJlZzogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQKKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gQ0NNIGludGVycnVwdAorLSAjY2xvY2stY2VsbHM6IFNob3VsZCBiZSA8MT4KKworVGhlIGNsb2NrIGNvbnN1bWVyIHNob3VsZCBzcGVjaWZ5IHRoZSBkZXNpcmVkIGNsb2NrIGJ5IGhhdmluZyB0aGUgY2xvY2sKK0lEIGluIGl0cyAiY2xvY2tzIiBwaGFuZGxlIGNlbGwuICBUaGUgZm9sbG93aW5nIGlzIGEgZnVsbCBsaXN0IG9mIGkuTVgzNQorY2xvY2tzIGFuZCBJRHMuCisKKwlDbG9jawkJCUlECisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJY2tpaAkJCTAKKwltcGxsCQkJMQorCXBwbGwJCQkyCisJbXBsbF8wNzUJCTMKKwlhcm0JCQk0CisJaHNwCQkJNQorCWhzcF9kaXYJCQk2CisJaHNwX3NlbAkJCTcKKwlhaGIJCQk4CisJaXBnCQkJOQorCWFybV9wZXJfZGl2CQkxMAorCWFoYl9wZXJfZGl2CQkxMQorCWlwZ19wZXIJCQkxMgorCXVhcnRfc2VsCQkxMworCXVhcnRfZGl2CQkxNAorCWVzZGhjX3NlbAkJMTUKKwllc2RoYzFfZGl2CQkxNgorCWVzZGhjMl9kaXYJCTE3CisJZXNkaGMzX2RpdgkJMTgKKwlzcGRpZl9zZWwJCTE5CisJc3BkaWZfZGl2X3ByZQkJMjAKKwlzcGRpZl9kaXZfcG9zdAkJMjEKKwlzc2lfc2VsCQkJMjIKKwlzc2kxX2Rpdl9wcmUJCTIzCisJc3NpMV9kaXZfcG9zdAkJMjQKKwlzc2kyX2Rpdl9wcmUJCTI1CisJc3NpMl9kaXZfcG9zdAkJMjYKKwl1c2Jfc2VsCQkJMjcKKwl1c2JfZGl2CQkJMjgKKwluZmNfZGl2CQkJMjkKKwlhc3JjX2dhdGUJCTMwCisJcGF0YV9nYXRlCQkzMQorCWF1ZG11eF9nYXRlCQkzMgorCWNhbjFfZ2F0ZQkJMzMKKwljYW4yX2dhdGUJCTM0CisJY3NwaTFfZ2F0ZQkJMzUKKwljc3BpMl9nYXRlCQkzNgorCWVjdF9nYXRlCQkzNworCWVkaW9fZ2F0ZQkJMzgKKwllbWlfZ2F0ZQkJMzkKKwllcGl0MV9nYXRlCQk0MAorCWVwaXQyX2dhdGUJCTQxCisJZXNhaV9nYXRlCQk0MgorCWVzZGhjMV9nYXRlCQk0MworCWVzZGhjMl9nYXRlCQk0NAorCWVzZGhjM19nYXRlCQk0NQorCWZlY19nYXRlCQk0NgorCWdwaW8xX2dhdGUJCTQ3CisJZ3BpbzJfZ2F0ZQkJNDgKKwlncGlvM19nYXRlCQk0OQorCWdwdF9nYXRlCQk1MAorCWkyYzFfZ2F0ZQkJNTEKKwlpMmMyX2dhdGUJCTUyCisJaTJjM19nYXRlCQk1MworCWlvbXV4Y19nYXRlCQk1NAorCWlwdV9nYXRlCQk1NQorCWtwcF9nYXRlCQk1NgorCW1sYl9nYXRlCQk1NworCW1zaGNfZ2F0ZQkJNTgKKwlvd2lyZV9nYXRlCQk1OQorCXB3bV9nYXRlCQk2MAorCXJuZ2NfZ2F0ZQkJNjEKKwlydGNfZ2F0ZQkJNjIKKwlydGljX2dhdGUJCTYzCisJc2NjX2dhdGUJCTY0CisJc2RtYV9nYXRlCQk2NQorCXNwYmFfZ2F0ZQkJNjYKKwlzcGRpZl9nYXRlCQk2NworCXNzaTFfZ2F0ZQkJNjgKKwlzc2kyX2dhdGUJCTY5CisJdWFydDFfZ2F0ZQkJNzAKKwl1YXJ0Ml9nYXRlCQk3MQorCXVhcnQzX2dhdGUJCTcyCisJdXNib3RnX2dhdGUJCTczCisJd2RvZ19nYXRlCQk3NAorCW1heF9nYXRlCQk3NQorCWFkbXV4X2dhdGUJCTc2CisJY3NpX2dhdGUJCTc3CisJY3NpX2RpdgkJCTc4CisJY3NpX3NlbAkJCTc5CisJaWltX2dhdGUJCTgwCisJZ3B1MmRfZ2F0ZQkJODEKKwlja2xpX2dhdGUJCTgyCisKK0V4YW1wbGVzOgorCitjbGtzOiBjY21ANTNmODAwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDM1LWNjbSI7CisJcmVnID0gPDB4NTNmODAwMDAgMHg0MDAwPjsKKwlpbnRlcnJ1cHRzID0gPDMxPjsKKwkjY2xvY2stY2VsbHMgPSA8MT47Cit9OworCitlc2RoYzE6IGVzZGhjQDUzZmI0MDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxpbXgzNS1lc2RoYyI7CisJcmVnID0gPDB4NTNmYjQwMDAgMHg0MDAwPjsKKwlpbnRlcnJ1cHRzID0gPDc+OworCWNsb2NrcyA9IDwmY2xrcyA5PiwgPCZjbGtzIDg+LCA8JmNsa3MgNDM+OworCWNsb2NrLW5hbWVzID0gImlwZyIsICJhaGIiLCAicGVyIjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaW14NS1jbG9jay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaW14NS1jbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FkYzRkMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbXg1LWNsb2NrLnR4dApAQCAtMCwwICsxLDI5IEBACisqIENsb2NrIGJpbmRpbmdzIGZvciBGcmVlc2NhbGUgaS5NWDUKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJmc2wsPHNvYz4tY2NtIiAsIHdoZXJlIDxzb2M+IGNhbiBiZSBpbXg1MSBvciBpbXg1MworLSByZWc6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0CistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIENDTSBpbnRlcnJ1cHQKKy0gI2Nsb2NrLWNlbGxzOiBTaG91bGQgYmUgPDE+CisKK1RoZSBjbG9jayBjb25zdW1lciBzaG91bGQgc3BlY2lmeSB0aGUgZGVzaXJlZCBjbG9jayBieSBoYXZpbmcgdGhlIGNsb2NrCitJRCBpbiBpdHMgImNsb2NrcyIgcGhhbmRsZSBjZWxsLiBTZWUgaW5jbHVkZS9kdC1iaW5kaW5ncy9jbG9jay9pbXg1LWNsb2NrLmgKK2ZvciB0aGUgZnVsbCBsaXN0IG9mIGkuTVg1IGNsb2NrIElEcy4KKworRXhhbXBsZXMgKGZvciBteDUzKToKKworY2xrczogY2NtQDUzZmQ0MDAweworCWNvbXBhdGlibGUgPSAiZnNsLGlteDUzLWNjbSI7CisJcmVnID0gPDB4NTNmZDQwMDAgMHg0MDAwPjsKKwlpbnRlcnJ1cHRzID0gPDAgNzEgMHgwNCAwIDcyIDB4MDQ+OworCSNjbG9jay1jZWxscyA9IDwxPjsKK307CisKK2NhbjE6IGNhbkA1M2ZjODAwMCB7CisJY29tcGF0aWJsZSA9ICJmc2wsaW14NTMtZmxleGNhbiIsICJmc2wscDEwMTAtZmxleGNhbiI7CisJcmVnID0gPDB4NTNmYzgwMDAgMHg0MDAwPjsKKwlpbnRlcnJ1cHRzID0gPDgyPjsKKwljbG9ja3MgPSA8JmNsa3MgSU1YNV9DTEtfQ0FOMV9JUEdfR0FURT4sIDwmY2xrcyBJTVg1X0NMS19DQU4xX1NFUklBTF9HQVRFPjsKKwljbG9jay1uYW1lcyA9ICJpcGciLCAicGVyIjsKKwlzdGF0dXMgPSAiZGlzYWJsZWQiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbXg2cS1jbG9jay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaW14NnEtY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyNTI5MTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaW14NnEtY2xvY2sudHh0CkBAIC0wLDAgKzEsMzEgQEAKKyogQ2xvY2sgYmluZGluZ3MgZm9yIEZyZWVzY2FsZSBpLk1YNiBRdWFkCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAiZnNsLGlteDZxLWNjbSIKKy0gcmVnOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldAorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBDQ00gaW50ZXJydXB0CistICNjbG9jay1jZWxsczogU2hvdWxkIGJlIDwxPgorCitUaGUgY2xvY2sgY29uc3VtZXIgc2hvdWxkIHNwZWNpZnkgdGhlIGRlc2lyZWQgY2xvY2sgYnkgaGF2aW5nIHRoZSBjbG9jaworSUQgaW4gaXRzICJjbG9ja3MiIHBoYW5kbGUgY2VsbC4gIFNlZSBpbmNsdWRlL2R0LWJpbmRpbmdzL2Nsb2NrL2lteDZxZGwtY2xvY2suaAorZm9yIHRoZSBmdWxsIGxpc3Qgb2YgaS5NWDYgUXVhZCBhbmQgRHVhbExpdGUgY2xvY2sgSURzLgorCitFeGFtcGxlczoKKworI2luY2x1ZGUgPGR0LWJpbmRpbmdzL2Nsb2NrL2lteDZxZGwtY2xvY2suaD4KKworY2xrczogY2NtQDAyMGM0MDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxpbXg2cS1jY20iOworCXJlZyA9IDwweDAyMGM0MDAwIDB4NDAwMD47CisJaW50ZXJydXB0cyA9IDwwIDg3IDB4MDQgMCA4OCAweDA0PjsKKwkjY2xvY2stY2VsbHMgPSA8MT47Cit9OworCit1YXJ0MTogc2VyaWFsQDAyMDIwMDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxpbXg2cS11YXJ0IiwgImZzbCxpbXgyMS11YXJ0IjsKKwlyZWcgPSA8MHgwMjAyMDAwMCAweDQwMDA+OworCWludGVycnVwdHMgPSA8MCAyNiAweDA0PjsKKwljbG9ja3MgPSA8JmNsa3MgSU1YNlFETF9DTEtfVUFSVF9JUEc+LCA8JmNsa3MgSU1YNlFETF9DTEtfVUFSVF9TRVJJQUw+OworCWNsb2NrLW5hbWVzID0gImlwZyIsICJwZXIiOworCXN0YXR1cyA9ICJkaXNhYmxlZCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2lteDZzbC1jbG9jay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaW14NnNsLWNsb2NrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWU0MGJkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2lteDZzbC1jbG9jay50eHQKQEAgLTAsMCArMSwxMCBAQAorKiBDbG9jayBiaW5kaW5ncyBmb3IgRnJlZXNjYWxlIGkuTVg2IFNvbG9MaXRlCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAiZnNsLGlteDZzbC1jY20iCistIHJlZzogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQKKy0gI2Nsb2NrLWNlbGxzOiBTaG91bGQgYmUgPDE+CisKK1RoZSBjbG9jayBjb25zdW1lciBzaG91bGQgc3BlY2lmeSB0aGUgZGVzaXJlZCBjbG9jayBieSBoYXZpbmcgdGhlIGNsb2NrCitJRCBpbiBpdHMgImNsb2NrcyIgcGhhbmRsZSBjZWxsLiAgU2VlIGluY2x1ZGUvZHQtYmluZGluZ3MvY2xvY2svaW14NnNsLWNsb2NrLmgKK2ZvciB0aGUgZnVsbCBsaXN0IG9mIGkuTVg2IFNvbG9MaXRlIGNsb2NrIElEcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbXg2c3gtY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2lteDZzeC1jbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjIzNjJiOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbXg2c3gtY2xvY2sudHh0CkBAIC0wLDAgKzEsMTMgQEAKKyogQ2xvY2sgYmluZGluZ3MgZm9yIEZyZWVzY2FsZSBpLk1YNiBTb2xvWAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImZzbCxpbXg2c3gtY2NtIgorLSByZWc6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0CistICNjbG9jay1jZWxsczogU2hvdWxkIGJlIDwxPgorLSBjbG9ja3M6IGxpc3Qgb2YgY2xvY2sgc3BlY2lmaWVycywgbXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIHJlcXVpcmVkCisgIGVudHJ5IGluIGNsb2NrLW5hbWVzCistIGNsb2NrLW5hbWVzOiBzaG91bGQgaW5jbHVkZSBlbnRyaWVzICJja2lsIiwgIm9zYyIsICJpcHBfZGkwIiBhbmQgImlwcF9kaTEiCisKK1RoZSBjbG9jayBjb25zdW1lciBzaG91bGQgc3BlY2lmeSB0aGUgZGVzaXJlZCBjbG9jayBieSBoYXZpbmcgdGhlIGNsb2NrCitJRCBpbiBpdHMgImNsb2NrcyIgcGhhbmRsZSBjZWxsLiAgU2VlIGluY2x1ZGUvZHQtYmluZGluZ3MvY2xvY2svaW14NnN4LWNsb2NrLmgKK2ZvciB0aGUgZnVsbCBsaXN0IG9mIGkuTVg2IFNvbG9YIGNsb2NrIElEcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbXg2dWwtY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2lteDZ1bC1jbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTcxZDUwMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbXg2dWwtY2xvY2sudHh0CkBAIC0wLDAgKzEsMTMgQEAKKyogQ2xvY2sgYmluZGluZ3MgZm9yIEZyZWVzY2FsZSBpLk1YNiBVbHRyYUxpdGUKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJmc2wsaW14NnVsLWNjbSIKKy0gcmVnOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldAorLSAjY2xvY2stY2VsbHM6IFNob3VsZCBiZSA8MT4KKy0gY2xvY2tzOiBsaXN0IG9mIGNsb2NrIHNwZWNpZmllcnMsIG11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCByZXF1aXJlZAorICBlbnRyeSBpbiBjbG9jay1uYW1lcworLSBjbG9jay1uYW1lczogc2hvdWxkIGluY2x1ZGUgZW50cmllcyAiY2tpbCIsICJvc2MiLCAiaXBwX2RpMCIgYW5kICJpcHBfZGkxIgorCitUaGUgY2xvY2sgY29uc3VtZXIgc2hvdWxkIHNwZWNpZnkgdGhlIGRlc2lyZWQgY2xvY2sgYnkgaGF2aW5nIHRoZSBjbG9jaworSUQgaW4gaXRzICJjbG9ja3MiIHBoYW5kbGUgY2VsbC4gIFNlZSBpbmNsdWRlL2R0LWJpbmRpbmdzL2Nsb2NrL2lteDZ1bC1jbG9jay5oCitmb3IgdGhlIGZ1bGwgbGlzdCBvZiBpLk1YNiBVbHRyYUxpdGUgY2xvY2sgSURzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2lteDdkLWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbXg3ZC1jbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQzMDI2ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbXg3ZC1jbG9jay50eHQKQEAgLTAsMCArMSwxMyBAQAorKiBDbG9jayBiaW5kaW5ncyBmb3IgRnJlZXNjYWxlIGkuTVg3IER1YWwKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJmc2wsaW14N2QtY2NtIgorLSByZWc6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0CistICNjbG9jay1jZWxsczogU2hvdWxkIGJlIDwxPgorLSBjbG9ja3M6IGxpc3Qgb2YgY2xvY2sgc3BlY2lmaWVycywgbXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIHJlcXVpcmVkCisgIGVudHJ5IGluIGNsb2NrLW5hbWVzCistIGNsb2NrLW5hbWVzOiBzaG91bGQgaW5jbHVkZSBlbnRyaWVzICJja2lsIiwgIm9zYyIKKworVGhlIGNsb2NrIGNvbnN1bWVyIHNob3VsZCBzcGVjaWZ5IHRoZSBkZXNpcmVkIGNsb2NrIGJ5IGhhdmluZyB0aGUgY2xvY2sKK0lEIGluIGl0cyAiY2xvY2tzIiBwaGFuZGxlIGNlbGwuICBTZWUgaW5jbHVkZS9kdC1iaW5kaW5ncy9jbG9jay9pbXg3ZC1jbG9jay5oCitmb3IgdGhlIGZ1bGwgbGlzdCBvZiBpLk1YNyBEdWFsIGNsb2NrIElEcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbmdlbmljLGNndS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaW5nZW5pYyxjZ3UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4ZDQxMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaW5nZW5pYyxjZ3UudHh0CkBAIC0wLDAgKzEsNTMgQEAKK0luZ2VuaWMgU29DIENHVSBiaW5kaW5nCisKK1RoZSBDR1UgaW4gYW4gSW5nZW5pYyBTb0MgcHJvdmlkZXMgYWxsIHRoZSBjbG9ja3MgZ2VuZXJhdGVkIG9uLWNoaXAuIEl0Cit0eXBpY2FsbHkgaW5jbHVkZXMgYSB2YXJpZXR5IG9mIFBMTHMsIG11bHRpcGxleGVycywgZGl2aWRlcnMgJiBnYXRlcyBpbiBvcmRlcgordG8gcHJvdmlkZSBtYW55IGRpZmZlcmVudCBjbG9jayBzaWduYWxzIGRlcml2ZWQgZnJvbSBvbmx5IDIgZXh0ZXJuYWwgc291cmNlCitjbG9ja3MuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImluZ2VuaWMsPHNvY3R5cGU+LWNndSIuCisgIEZvciBleGFtcGxlICJpbmdlbmljLGp6NDc0MC1jZ3UiIG9yICJpbmdlbmljLGp6NDc4MC1jZ3UiLgorLSByZWcgOiBUaGUgYWRkcmVzcyAmIGxlbmd0aCBvZiB0aGUgQ0dVIHJlZ2lzdGVycy4KKy0gY2xvY2tzIDogTGlzdCBvZiBwaGFuZGxlICYgY2xvY2sgc3BlY2lmaWVycyBmb3IgY2xvY2tzIGV4dGVybmFsIHRvIHRoZSBDR1UuCisgIFR3byBzdWNoIGV4dGVybmFsIGNsb2NrcyBzaG91bGQgYmUgc3BlY2lmaWVkIC0gZmlyc3QgdGhlIGV4dGVybmFsIGNyeXN0YWwKKyAgImV4dCIgYW5kIHNlY29uZCB0aGUgUlRDIGNsb2NrIHNvdXJjZSAicnRjIi4KKy0gY2xvY2stbmFtZXMgOiBMaXN0IG9mIG5hbWUgc3RyaW5ncyBmb3IgdGhlIGV4dGVybmFsIGNsb2Nrcy4KKy0gI2Nsb2NrLWNlbGxzOiBTaG91bGQgYmUgMS4KKyAgQ2xvY2sgY29uc3VtZXJzIHNwZWNpZnkgdGhpcyBhcmd1bWVudCB0byBpZGVudGlmeSBhIGNsb2NrLiBUaGUgdmFsaWQgdmFsdWVzCisgIG1heSBiZSBmb3VuZCBpbiA8ZHQtYmluZGluZ3MvY2xvY2svPHNvY3R5cGU+LWNndS5oPi4KKworRXhhbXBsZSBTb0MgaW5jbHVkZSBmaWxlOgorCisvIHsKKwljZ3U6IGp6NDc0MC1jZ3UgeworCQljb21wYXRpYmxlID0gImluZ2VuaWMsano0NzQwLWNndSI7CisJCXJlZyA9IDwweDEwMDAwMDAwIDB4MTAwPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCX07CisKKwl1YXJ0MDogc2VyaWFsQDEwMDMwMDAwIHsKKwkJY2xvY2tzID0gPCZjZ3UgSlo0NzQwX0NMS19VQVJUMD47CisJfTsKK307CisKK0V4YW1wbGUgYm9hcmQgZmlsZToKKworLyB7CisJZXh0OiBjbG9ja0AwIHsKKwkJY29tcGF0aWJsZSA9ICJmaXhlZC1jbG9jayI7CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDEyMDAwMDAwPjsKKwl9OworCisJcnRjOiBjbG9ja0AxIHsKKwkJY29tcGF0aWJsZSA9ICJmaXhlZC1jbG9jayI7CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDMyNzY4PjsKKwl9OworCisJJmNndSB7CisJCWNsb2NrcyA9IDwmZXh0PiA8JnJ0Yz47CisJCWNsb2NrLW5hbWVzOiAiZXh0IiwgInJ0YyI7CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2sva2V5c3RvbmUtZ2F0ZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2sva2V5c3RvbmUtZ2F0ZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVhYTE4NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9rZXlzdG9uZS1nYXRlLnR4dApAQCAtMCwwICsxLDI5IEBACitTdGF0dXM6IFVuc3RhYmxlIC0gQUJJIGNvbXBhdGliaWxpdHkgbWF5IGJlIGJyb2tlbiBpbiB0aGUgZnV0dXJlCisKK0JpbmRpbmcgZm9yIEtleXN0b25lIGdhdGUgY29udHJvbCBkcml2ZXIgd2hpY2ggdXNlcyBQU0MgY29udHJvbGxlciBJUC4KKworVGhpcyBiaW5kaW5nIHVzZXMgdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nWzFdLgorCitbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hhbGwgYmUgInRpLGtleXN0b25lLHBzYy1jbG9jayIuCistICNjbG9jay1jZWxscyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IHNoYWxsIGJlIHNldCB0byAwLgorLSBjbG9ja3MgOiBwYXJlbnQgY2xvY2sgcGhhbmRsZQorLSByZWcgOglwc2MgY29udHJvbCBhbmQgZG9tYWluIGFkZHJlc3MgYWRkcmVzcyBzcGFjZQorLSByZWctbmFtZXMgOiBwc2MgY29udHJvbCBhbmQgZG9tYWluIHJlZ2lzdGVycworLSBkb21haW4taWQgOiBwc2MgZG9tYWluIGlkIG5lZWRlZCB0byBjaGVjayB0aGUgdHJhbnNpdGlvbiBzdGF0ZSByZWdpc3RlcgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjbG9jay1vdXRwdXQtbmFtZXMgOiBGcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nIHRvIG92ZXJyaWRlIHRoZQorCQkJZGVmYXVsdCBvdXRwdXQgY2xvY2sgbmFtZQorRXhhbXBsZToKKwljbGt1c2I6IGNsa3VzYiB7CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJ0aSxrZXlzdG9uZSxwc2MtY2xvY2siOworCQljbG9ja3MgPSA8JmNoaXBjbGsxNj47CisJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJ1c2IiOworCQlyZWcgPSA8MHgwMjM1MDAwOCAweGIwMD4sIDwweDAyMzUwMDAwIDB4NDAwPjsKKwkJcmVnLW5hbWVzID0gImNvbnRyb2wiLCAiZG9tYWluIjsKKwkJZG9tYWluLWlkID0gPDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2sva2V5c3RvbmUtcGxsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9rZXlzdG9uZS1wbGwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NTcwZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2sva2V5c3RvbmUtcGxsLnR4dApAQCAtMCwwICsxLDg0IEBACitTdGF0dXM6IFVuc3RhYmxlIC0gQUJJIGNvbXBhdGliaWxpdHkgbWF5IGJlIGJyb2tlbiBpbiB0aGUgZnV0dXJlCisKK0JpbmRpbmcgZm9yIGtleXN0b25lIFBMTHMuIFRoZSBtYWluIFBMTCBJUCB0eXBpY2FsbHkgaGFzIGEgbXVsdGlwbGllciwKK2EgZGl2aWRlciBhbmQgYSBwb3N0IGRpdmlkZXIuIFRoZSBhZGRpdGlvbmFsIFBMTCBJUHMgbGlrZSBBUk1QTEwsIEREUlBMTAorYW5kIFBBUExMIGFyZSBjb250cm9sbGVkIGJ5IHRoZSBtZW1vcnkgbWFwcGVkIHJlZ2lzdGVyIHdoZXJlIGFzIHRoZSBNYWluCitQTEwgaXMgY29udHJvbGxlZCBieSBhIFBMTCBjb250cm9sbGVyIHJlZ2lzdGVycyBhbG9uZyB3aXRoIG1lbW9yeSBtYXBwZWQKK3JlZ2lzdGVycy4KKworVGhpcyBiaW5kaW5nIHVzZXMgdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nWzFdLgorCitbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSAjY2xvY2stY2VsbHMgOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBzaGFsbCBiZSBzZXQgdG8gMC4KKy0gY29tcGF0aWJsZSA6IHNoYWxsIGJlICJ0aSxrZXlzdG9uZSxtYWluLXBsbC1jbG9jayIgb3IgInRpLGtleXN0b25lLHBsbC1jbG9jayIKKy0gY2xvY2tzIDogcGFyZW50IGNsb2NrIHBoYW5kbGUKKy0gcmVnIC0gcGxsIGNvbnRyb2wwIGFuZCBwbGwgbXVsdGlwbGVyIHJlZ2lzdGVycworLSByZWctbmFtZXMgOiBjb250cm9sLCBtdWx0aXBsaWVyIGFuZCBwb3N0LWRpdmlkZXIuIFRoZSBtdWx0aXBsaWVyIGFuZAorCQlwb3N0LWRpdmlkZXIgcmVnaXN0ZXJzIGFyZSBhcHBsaWNhYmxlIG9ubHkgZm9yIG1haW4gcGxsIGNsb2NrCistIGZpeGVkLXBvc3RkaXYgOiBmaXhlZCBwb3N0IGRpdmlkZXIgdmFsdWUuIElmIGFic2VudCwgdXNlIGNsa29kIHJlZ2lzdGVyIGJpdHMKKwkJZm9yIHBvc3RkaXYKKworRXhhbXBsZToKKwltYWlucGxsY2xrOiBtYWlucGxsY2xrQDIzMTAxMTAgeworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCWNvbXBhdGlibGUgPSAidGksa2V5c3RvbmUsbWFpbi1wbGwtY2xvY2siOworCQljbG9ja3MgPSA8JnJlZmNsa3N5cz47CisJCXJlZyA9IDwweDAyNjIwMzUwIDQ+LCA8MHgwMjMxMDExMCA0PiwgPDB4MDIzMTAxMDggND47CisJCXJlZy1uYW1lcyA9ICJjb250cm9sIiwgIm11bHRpcGxpZXIiLCAicG9zdC1kaXZpZGVyIjsKKwkJZml4ZWQtcG9zdGRpdiA9IDwyPjsKKwl9OworCisJcGFwbGxjbGs6IHBhcGxsY2xrQDI2MjAzNTggeworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCWNvbXBhdGlibGUgPSAidGksa2V5c3RvbmUscGxsLWNsb2NrIjsKKwkJY2xvY2tzID0gPCZyZWZjbGtwYXNzPjsKKwkJY2xvY2stb3V0cHV0LW5hbWVzID0gInBhLXBsbC1jbGsiOworCQlyZWcgPSA8MHgwMjYyMDM1OCA0PjsKKwkJcmVnLW5hbWVzID0gImNvbnRyb2wiOworCX07CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistICNjbG9jay1jZWxscyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IHNoYWxsIGJlIHNldCB0byAwLgorLSBjb21wYXRpYmxlIDogc2hhbGwgYmUgInRpLGtleXN0b25lLHBsbC1tdXgtY2xvY2siCistIGNsb2NrcyA6IGxpbmsgcGhhbmRsZXMgb2YgcGFyZW50IGNsb2NrcworLSByZWcgLSBwbGwgbXV4IHJlZ2lzdGVyCistIGJpdC1zaGlmdCA6IG51bWJlciBvZiBiaXRzIHRvIHNoaWZ0IHRoZSBiaXQtbWFzaworLSBiaXQtbWFzayA6IGFyYml0cmFyeSBiaXRtYXNrIGZvciBwcm9ncmFtbWluZyB0aGUgbXV4CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrLW91dHB1dC1uYW1lcyA6IEZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmcuCisKK0V4YW1wbGU6CisJbWFpbm11eGNsazogbWFpbm11eGNsa0AyMzEwMTA4IHsKKwkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQljb21wYXRpYmxlID0gInRpLGtleXN0b25lLHBsbC1tdXgtY2xvY2siOworCQljbG9ja3MgPSA8Jm1haW5wbGxjbGs+LCA8JnJlZmNsa21haW4+OworCQlyZWcgPSA8MHgwMjMxMDEwOCA0PjsKKwkJYml0LXNoaWZ0ID0gPDIzPjsKKwkJYml0LW1hc2sgPSA8MT47CisJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJtYWlubXV4Y2xrIjsKKwl9OworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSAjY2xvY2stY2VsbHMgOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBzaGFsbCBiZSBzZXQgdG8gMC4KKy0gY29tcGF0aWJsZSA6IHNoYWxsIGJlICJ0aSxrZXlzdG9uZSxwbGwtZGl2aWRlci1jbG9jayIKKy0gY2xvY2tzIDogcGFyZW50IGNsb2NrIHBoYW5kbGUKKy0gcmVnIC0gcGxsIG11eCByZWdpc3RlcgorLSBiaXQtc2hpZnQgOiBudW1iZXIgb2YgYml0cyB0byBzaGlmdCB0aGUgYml0LW1hc2sKKy0gYml0LW1hc2sgOiBhcmJpdHJhcnkgYml0bWFzayBmb3IgcHJvZ3JhbW1pbmcgdGhlIGRpdmlkZXIKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gY2xvY2stb3V0cHV0LW5hbWVzIDogRnJvbSBjb21tb24gY2xvY2sgYmluZGluZy4KKworRXhhbXBsZToKKwlnZW10cmFjZWNsazogZ2VtdHJhY2VjbGtAMjMxMDEyMCB7CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJ0aSxrZXlzdG9uZSxwbGwtZGl2aWRlci1jbG9jayI7CisJCWNsb2NrcyA9IDwmbWFpbm11eGNsaz47CisJCXJlZyA9IDwweDAyMzEwMTIwIDQ+OworCQliaXQtc2hpZnQgPSA8MD47CisJCWJpdC1tYXNrID0gPDg+OworCQljbG9jay1vdXRwdXQtbmFtZXMgPSAiZ2VtdHJhY2VjbGsiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbHBjMTg1MC1jY3UudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2xwYzE4NTAtY2N1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTk3YzEyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2xwYzE4NTAtY2N1LnR4dApAQCAtMCwwICsxLDc3IEBACisqIE5YUCBMUEMxODUwIENsb2NrIENvbnRyb2wgVW5pdCAoQ0NVKQorCitFYWNoIENHVSBiYXNlIGNsb2NrIGhhcyBzZXZlcmFsIGNsb2NrIGJyYW5jaGVzIHdoaWNoIGNhbiBiZSB0dXJuZWQgb24KK29yIG9mZiBpbmRlcGVuZGVudGx5IGJ5IHRoZSBDbG9jayBDb250cm9sIFVuaXRzIENDVTEgb3IgQ0NVMi4gVGhlCiticmFuY2ggY2xvY2tzIGFyZSBkaXN0cmlidXRlZCBiZXR3ZWVuIENDVTEgYW5kIENDVTIuCisKKyAtIEFib3ZlIHRleHQgdGFrZW4gZnJvbSBOWFAgTFBDMTg1MCBVc2VyIE1hbnVhbC4KKworVGhpcyBiaW5kaW5nIHVzZXMgdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nOgorICAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZToKKwlTaG91bGQgYmUgIm54cCxscGMxODUwLWNjdSIKKy0gcmVnOgorCVNoYWxsIGRlZmluZSB0aGUgYmFzZSBhbmQgcmFuZ2Ugb2YgdGhlIGFkZHJlc3Mgc3BhY2UKKwljb250YWluaW5nIGNsb2NrIGNvbnRyb2wgcmVnaXN0ZXJzCistICNjbG9jay1jZWxsczoKKwlTaGFsbCBoYXZlIHZhbHVlIDwxPi4gIFRoZSBwZXJtaXR0ZWQgY2xvY2stc3BlY2lmaWVyIHZhbHVlcworCWFyZSB0aGUgYnJhbmNoIGNsb2NrIG5hbWVzIGRlZmluZWQgaW4gdGFibGUgYmVsb3cuCistIGNsb2NrczoKKwlTaGFsbCBjb250YWluIGEgbGlzdCBvZiBwaGFuZGxlcyBmb3IgdGhlIGJhc2UgY2xvY2tzIHJvdXRlZAorCWZyb20gdGhlIENHVSB0byB0aGUgc3BlY2lmaWMgQ0NVLiBTZWUgbWFwcGluZyBvZiBiYXNlIGNsb2NrcworCWFuZCBDQ1UgaW4gdGFibGUgYmVsb3cuCistIGNsb2NrLW5hbWVzOgorCVNoYWxsIGNvbnRhaW4gYSBsaXN0IG9mIG5hbWVzIGZvciB0aGUgYmFzZSBjbG9jayByb3V0ZWQKKwlmcm9tIHRoZSBDR1UgdG8gdGhlIHNwZWNpZmljIENDVS4gVmFsaWQgQ0NVIGNsb2NrIG5hbWVzOgorCSJiYXNlX3VzYjBfY2xrIiwgICJiYXNlX3BlcmlwaF9jbGsiLCAiYmFzZV91c2IxX2NsayIsCisJImJhc2VfY3B1X2NsayIsICAgImJhc2Vfc3BpZmlfY2xrIiwgICJiYXNlX3NwaV9jbGsiLAorCSJiYXNlX2FwYjFfY2xrIiwgICJiYXNlX2FwYjNfY2xrIiwgICAiYmFzZV9hZGNoc19jbGsiLAorCSJiYXNlX3NkaW9fY2xrIiwgICJiYXNlX3NzcDBfY2xrIiwgICAiYmFzZV9zc3AxX2NsayIsCisJImJhc2VfdWFydDBfY2xrIiwgImJhc2VfdWFydDFfY2xrIiwgICJiYXNlX3VhcnQyX2NsayIsCisJImJhc2VfdWFydDNfY2xrIiwgImJhc2VfYXVkaW9fY2xrIgorCitXaGljaCBicmFuY2ggY2xvY2tzIHRoYXQgYXJlIGF2YWlsYWJsZSBvbiB0aGUgQ0NVIGRlcGVuZHMgb24gdGhlCitzcGVjaWZpYyBMUEMgcGFydC4gQ2hlY2sgdGhlIHVzZXIgbWFudWFsIGZvciB5b3VyIHNwZWNpZmljIHBhcnQuCisKK0EgbGlzdCBvZiBDQ1UgY2xvY2tzIGNhbiBiZSBmb3VuZCBpbiBkdC1iaW5kaW5ncy9jbG9jay9scGMxOHh4LWNjdS5oLgorCitFeGFtcGxlIGJvYXJkIGZpbGU6CisKK3NvYyB7CisJY2N1MTogY2xvY2stY29udHJvbGxlckA0MDA1MTAwMCB7CisJCWNvbXBhdGlibGUgPSAibnhwLGxwYzE4NTAtY2N1IjsKKwkJcmVnID0gPDB4NDAwNTEwMDAgMHgxMDAwPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQljbG9ja3MgPSA8JmNndSBCQVNFX0FQQjNfQ0xLPiwgICA8JmNndSBCQVNFX0FQQjFfQ0xLPiwKKwkJCSA8JmNndSBCQVNFX1NQSUZJX0NMSz4sICA8JmNndSBCQVNFX0NQVV9DTEs+LAorCQkJIDwmY2d1IEJBU0VfUEVSSVBIX0NMSz4sIDwmY2d1IEJBU0VfVVNCMF9DTEs+LAorCQkJIDwmY2d1IEJBU0VfVVNCMV9DTEs+LCAgIDwmY2d1IEJBU0VfU1BJX0NMSz47CisJCWNsb2NrLW5hbWVzID0gImJhc2VfYXBiM19jbGsiLCAgICJiYXNlX2FwYjFfY2xrIiwKKwkJCSAgICAgICJiYXNlX3NwaWZpX2NsayIsICAiYmFzZV9jcHVfY2xrIiwKKwkJCSAgICAgICJiYXNlX3BlcmlwaF9jbGsiLCAiYmFzZV91c2IwX2NsayIsCisJCQkgICAgICAiYmFzZV91c2IxX2NsayIsICAgImJhc2Vfc3BpX2NsayI7CisJfTsKKworCWNjdTI6IGNsb2NrLWNvbnRyb2xsZXJANDAwNTIwMDAgeworCQljb21wYXRpYmxlID0gIm54cCxscGMxODUwLWNjdSI7CisJCXJlZyA9IDwweDQwMDUyMDAwIDB4MTAwMD47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKwkJY2xvY2tzID0gPCZjZ3UgQkFTRV9BVURJT19DTEs+LCA8JmNndSBCQVNFX1VBUlQzX0NMSz4sCisJCQkgPCZjZ3UgQkFTRV9VQVJUMl9DTEs+LCA8JmNndSBCQVNFX1VBUlQxX0NMSz4sCisJCQkgPCZjZ3UgQkFTRV9VQVJUMF9DTEs+LCA8JmNndSBCQVNFX1NTUDFfQ0xLPiwKKwkJCSA8JmNndSBCQVNFX1NTUDBfQ0xLPiwgIDwmY2d1IEJBU0VfU0RJT19DTEs+OworCQljbG9jay1uYW1lcyA9ICJiYXNlX2F1ZGlvX2NsayIsICJiYXNlX3VhcnQzX2NsayIsCisJCQkgICAgICAiYmFzZV91YXJ0Ml9jbGsiLCAiYmFzZV91YXJ0MV9jbGsiLAorCQkJICAgICAgImJhc2VfdWFydDBfY2xrIiwgImJhc2Vfc3NwMV9jbGsiLAorCQkJICAgICAgImJhc2Vfc3NwMF9jbGsiLCAgImJhc2Vfc2Rpb19jbGsiOworCX07CisKKwkvKiBBIHVzZXIgb2YgQ0NVIGJyYWNoIGNsb2NrcyAqLworCXVhcnQxOiBzZXJpYWxANDAwODIwMDAgeworCQkuLi4KKwkJY2xvY2tzID0gPCZjY3UyIENMS19BUEIwX1VBUlQxPiwgPCZjY3UxIENMS19DUFVfVUFSVDE+OworCQkuLi4KKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9scGMxODUwLWNndS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbHBjMTg1MC1jZ3UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjYzMyYTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbHBjMTg1MC1jZ3UudHh0CkBAIC0wLDAgKzEsMTMxIEBACisqIE5YUCBMUEMxODUwIENsb2NrIEdlbmVyYXRpb24gVW5pdCAoQ0dVKQorCitUaGUgQ0dVIGdlbmVyYXRlcyBtdWx0aXBsZSBpbmRlcGVuZGVudCBjbG9ja3MgZm9yIHRoZSBjb3JlIGFuZCB0aGUKK3BlcmlwaGVyYWwgYmxvY2tzIG9mIHRoZSBMUEMxOHh4LiBFYWNoIGluZGVwZW5kZW50IGNsb2NrIGlzIGNhbGxlZAorYSBiYXNlIGNsb2NrIGFuZCBpdHNlbGYgaXMgb25lIG9mIHRoZSBpbnB1dHMgdG8gdGhlIHR3byBDbG9jaworQ29udHJvbCBVbml0cyAoQ0NVcykgd2hpY2ggY29udHJvbCB0aGUgYnJhbmNoIGNsb2NrcyB0byB0aGUKK2luZGl2aWR1YWwgcGVyaXBoZXJhbHMuCisKK1RoZSBDR1Ugc2VsZWN0cyB0aGUgaW5wdXRzIHRvIHRoZSBjbG9jayBnZW5lcmF0b3JzIGZyb20gbXVsdGlwbGUKK2Nsb2NrIHNvdXJjZXMsIGNvbnRyb2xzIHRoZSBjbG9jayBnZW5lcmF0aW9uLCBhbmQgcm91dGVzIHRoZSBvdXRwdXRzCitvZiB0aGUgY2xvY2sgZ2VuZXJhdG9ycyB0aHJvdWdoIHRoZSBjbG9jayBzb3VyY2UgYnVzIHRvIHRoZSBvdXRwdXQKK3N0YWdlcy4gRWFjaCBvdXRwdXQgc3RhZ2UgcHJvdmlkZXMgYW4gaW5kZXBlbmRlbnQgY2xvY2sgc291cmNlIGFuZAorY29ycmVzcG9uZHMgdG8gb25lIG9mIHRoZSBiYXNlIGNsb2NrcyBmb3IgdGhlIExQQzE4eHguCisKKyAtIEFib3ZlIHRleHQgdGFrZW4gZnJvbSBOWFAgTFBDMTg1MCBVc2VyIE1hbnVhbC4KKworCitUaGlzIGJpbmRpbmcgdXNlcyB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmc6CisgICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOgorCVNob3VsZCBiZSAibnhwLGxwYzE4NTAtY2d1IgorLSByZWc6CisJU2hhbGwgZGVmaW5lIHRoZSBiYXNlIGFuZCByYW5nZSBvZiB0aGUgYWRkcmVzcyBzcGFjZQorCWNvbnRhaW5pbmcgY2xvY2sgY29udHJvbCByZWdpc3RlcnMKKy0gI2Nsb2NrLWNlbGxzOgorCVNoYWxsIGhhdmUgdmFsdWUgPDE+LiAgVGhlIHBlcm1pdHRlZCBjbG9jay1zcGVjaWZpZXIgdmFsdWVzCisJYXJlIHRoZSBiYXNlIGNsb2NrIG51bWJlcnMgZGVmaW5lZCBiZWxvdy4KKy0gY2xvY2tzOgorCVNoYWxsIGNvbnRhaW4gYSBsaXN0IG9mIHBoYW5kbGVzIGZvciB0aGUgZXh0ZXJuYWwgaW5wdXQKKwlzb3VyY2VzIHRvIHRoZSBDR1UuIFRoZSBsaXN0IHNoYWxsIGJlIGluIHRoZSBmb2xsb3dpbmcKKwlvcmRlcjogeHRhbCwgMzJraHosIGVuZXRfcnhfY2xrLCBlbmV0X3R4X2NsaywgZ3BfY2xraW4uCistIGNsb2NrLWluZGljZXM6CisJU2hhbGwgYmUgYW4gb3JkZXJlZCBsaXN0IG9mIG51bWJlcnMgZGVmaW5pbmcgdGhlIGJhc2UgY2xvY2sKKwludW1iZXIgcHJvdmlkZWQgYnkgdGhlIENHVS4KKy0gY2xvY2stb3V0cHV0LW5hbWVzOgorCVNoYWxsIGJlIGFuIG9yZGVyZWQgbGlzdCBvZiBzdHJpbmdzIGRlZmluaW5nIHRoZSBuYW1lcyBvZgorCXRoZSBjbG9ja3MgcHJvdmlkZWQgYnkgdGhlIENHVS4KKworV2hpY2ggYmFzZSBjbG9ja3MgdGhhdCBhcmUgYXZhaWxhYmxlIG9uIHRoZSBDR1UgZGVwZW5kcyBvbiB0aGUKK3NwZWNpZmljIExQQyBwYXJ0LiBCYXNlIGNsb2NrcyBhcmUgbnVtYmVyZWQgZnJvbSAwIHRvIDI3LgorCitOdW1iZXI6CQlOYW1lOgkJCURlc2NyaXB0aW9uOgorIDAJCUJBU0VfU0FGRV9DTEsJCUJhc2Ugc2FmZSBjbG9jayAoYWx3YXlzIG9uKSBmb3IgV1dEVAorIDEJCUJBU0VfVVNCMF9DTEsJCUJhc2UgY2xvY2sgZm9yIFVTQjAKKyAyCQlCQVNFX1BFUklQSF9DTEsJCUJhc2UgY2xvY2sgZm9yIENvcnRleC1NMFNVQiBzdWJzeXN0ZW0sCisJCQkJCVNQSSwgYW5kIFNHUElPCisgMwkJQkFTRV9VU0IxX0NMSwkJQmFzZSBjbG9jayBmb3IgVVNCMQorIDQJCUJBU0VfQ1BVX0NMSwkJU3lzdGVtIGJhc2UgY2xvY2sgZm9yIEFSTSBDb3J0ZXgtTSBjb3JlCisJCQkJCWFuZCBBUEIgcGVyaXBoZXJhbCBibG9ja3MgIzAgYW5kICMyCisgNQkJQkFTRV9TUElGSV9DTEsJCUJhc2UgY2xvY2sgZm9yIFNQSUZJCisgNgkJQkFTRV9TUElfQ0xLCQlCYXNlIGNsb2NrIGZvciBTUEkKKyA3CQlCQVNFX1BIWV9SWF9DTEsJCUJhc2UgY2xvY2sgZm9yIEV0aGVybmV0IFBIWSBSZWNlaXZlIGNsb2NrCisgOAkJQkFTRV9QSFlfVFhfQ0xLCQlCYXNlIGNsb2NrIGZvciBFdGhlcm5ldCBQSFkgVHJhbnNtaXQgY2xvY2sKKyA5CQlCQVNFX0FQQjFfQ0xLCQlCYXNlIGNsb2NrIGZvciBBUEIgcGVyaXBoZXJhbCBibG9jayAjIDEKKzEwCQlCQVNFX0FQQjNfQ0xLCQlCYXNlIGNsb2NrIGZvciBBUEIgcGVyaXBoZXJhbCBibG9jayAjIDMKKzExCQlCQVNFX0xDRF9DTEsJCUJhc2UgY2xvY2sgZm9yIExDRAorMTIJCUJBU0VfQURDSFNfQ0xLCQlCYXNlIGNsb2NrIGZvciBBRENIUworMTMJCUJBU0VfU0RJT19DTEsJCUJhc2UgY2xvY2sgZm9yIFNEL01NQworMTQJCUJBU0VfU1NQMF9DTEsJCUJhc2UgY2xvY2sgZm9yIFNTUDAKKzE1CQlCQVNFX1NTUDFfQ0xLCQlCYXNlIGNsb2NrIGZvciBTU1AxCisxNgkJQkFTRV9VQVJUMF9DTEsJCUJhc2UgY2xvY2sgZm9yIFVBUlQwCisxNwkJQkFTRV9VQVJUMV9DTEsJCUJhc2UgY2xvY2sgZm9yIFVBUlQxCisxOAkJQkFTRV9VQVJUMl9DTEsJCUJhc2UgY2xvY2sgZm9yIFVBUlQyCisxOQkJQkFTRV9VQVJUM19DTEsJCUJhc2UgY2xvY2sgZm9yIFVBUlQzCisyMAkJQkFTRV9PVVRfQ0xLCQlCYXNlIGNsb2NrIGZvciBDTEtPVVQgcGluCisyNC0yMQkJLQkJCVJlc2VydmVkCisyNQkJQkFTRV9BVURJT19DTEsJCUJhc2UgY2xvY2sgZm9yIGF1ZGlvIHN5c3RlbSAoSTJTKQorMjYgCQlCQVNFX0NHVV9PVVQwX0NMSwlCYXNlIGNsb2NrIGZvciBDR1VfT1VUMCBjbG9jayBvdXRwdXQKKzI3IAkJQkFTRV9DR1VfT1VUMV9DTEsJQmFzZSBjbG9jayBmb3IgQ0dVX09VVDEgY2xvY2sgb3V0cHV0CisKK0JBU0VfUEVSSVBIX0NMSyBhbmQgQkFTRV9TUElfQ0xLIGlzIG9ubHkgYXZhaWxhYmxlIG9uIExQQzQzeHguCitCQVNFX0FEQ0hTX0NMSyBpcyBvbmx5IGF2YWlsYWJsZSBvbiBMUEM0MzcwLgorCisKK0V4YW1wbGUgYm9hcmQgZmlsZToKKworLyB7CisJY2xvY2tzIHsKKwkJeHRhbDogeHRhbCB7CisJCQljb21wYXRpYmxlID0gImZpeGVkLWNsb2NrIjsKKwkJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJCWNsb2NrLWZyZXF1ZW5jeSA9IDwxMjAwMDAwMD47CisJCX07CisKKwkJeHRhbDMyOiB4dGFsMzIgeworCQkJY29tcGF0aWJsZSA9ICJmaXhlZC1jbG9jayI7CisJCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCQljbG9jay1mcmVxdWVuY3kgPSA8MzI3Njg+OworCQl9OworCisJCWVuZXRfcnhfY2xrOiBlbmV0X3J4X2NsayB7CisJCQljb21wYXRpYmxlID0gImZpeGVkLWNsb2NrIjsKKwkJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJCWNsb2NrLWZyZXF1ZW5jeSA9IDwwPjsKKwkJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJlbmV0X3J4X2NsayI7CisJCX07CisKKwkJZW5ldF90eF9jbGs6IGVuZXRfdHhfY2xrIHsKKwkJCWNvbXBhdGlibGUgPSAiZml4ZWQtY2xvY2siOworCQkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQkJY2xvY2stZnJlcXVlbmN5ID0gPDA+OworCQkJY2xvY2stb3V0cHV0LW5hbWVzID0gImVuZXRfdHhfY2xrIjsKKwkJfTsKKworCQlncF9jbGtpbjogZ3BfY2xraW4geworCQkJY29tcGF0aWJsZSA9ICJmaXhlZC1jbG9jayI7CisJCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCQljbG9jay1mcmVxdWVuY3kgPSA8MD47CisJCQljbG9jay1vdXRwdXQtbmFtZXMgPSAiZ3BfY2xraW4iOworCQl9OworCX07CisKKwlzb2MgeworCQljZ3U6IGNsb2NrLWNvbnRyb2xsZXJANDAwNTAwMDAgeworCQkJY29tcGF0aWJsZSA9ICJueHAsbHBjMTg1MC1jZ3UiOworCQkJcmVnID0gPDB4NDAwNTAwMDAgMHgxMDAwPjsKKwkJCSNjbG9jay1jZWxscyA9IDwxPjsKKwkJCWNsb2NrcyA9IDwmeHRhbD4sIDwmY3JlZ19jbGsgMT4sIDwmZW5ldF9yeF9jbGs+LCA8JmVuZXRfdHhfY2xrPiwgPCZncF9jbGtpbj47CisJCX07CisKKwkJLyogQSBDR1UgYW5kIENDVSBjbG9jayBjb25zdW1lciAqLworCQlsY2RjOiBsY2RjQDQwMDA4MDAwIHsKKwkJCS4uLgorCQkJY2xvY2tzID0gPCZjZ3UgQkFTRV9MQ0RfQ0xLPiwgPCZjY3UxIENMS19DUFVfTENEPjsKKwkJCWNsb2NrLW5hbWVzID0gImNsY2RjbGsiLCAiYXBiX3BjbGsiOworCQkJLi4uCisJCX07CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbHNpLGF4bTU1MTYtY2xrcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbHNpLGF4bTU1MTYtY2xrcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NlOTdjZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9sc2ksYXhtNTUxNi1jbGtzLnR4dApAQCAtMCwwICsxLDI5IEBACitBWE01NTE2IGNsb2NrIGRyaXZlciBiaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllcyA6CistIGNvbXBhdGlibGUgOiBzaGFsbCBjb250YWluICJsc2ksYXhtNTUxNi1jbGtzIgorLSByZWcgOiBzaGFsbCBjb250YWluIGJhc2UgcmVnaXN0ZXIgbG9jYXRpb24gYW5kIGxlbmd0aAorLSAjY2xvY2stY2VsbHMgOiBzaGFsbCBjb250YWluIDEKKworVGhlIGNvbnN1bWVyIHNwZWNpZmllcyB0aGUgZGVzaXJlZCBjbG9jayBieSBoYXZpbmcgdGhlIGNsb2NrIElEIGluIGl0cyAiY2xvY2tzIgorcGhhbmRsZSBjZWxsLiBTZWUgPGR0LWJpbmRpbmdzL2Nsb2NrL2xzaSxheHhpYS1jbG9jay5oPiBmb3IgdGhlIGxpc3Qgb2YKK3N1cHBvcnRlZCBjbG9jayBJRHMuCisKK0V4YW1wbGU6CisKKwljbGtzOiBjbG9jay1jb250cm9sbGVyQDIwMTAwMjAwMDAgeworCQljb21wYXRpYmxlID0gImxzaSxheG01NTE2LWNsa3MiOworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJCXJlZyA9IDwweDIwIDB4MTAwMjAwMDAgMCAweDIwMDAwPjsKKwl9OworCisJc2VyaWFsMDogdWFydEAyMDEwMDgwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0scGwwMTEiLCAiYXJtLHByaW1lY2VsbCI7CisJCXJlZyA9IDwweDIwIDB4MTAwODAwMDAgMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgNTYgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWNsb2NrcyA9IDwmY2xrcyBBWFhJQV9DTEtfUEVSPjsKKwkJY2xvY2stbmFtZXMgPSAiYXBiX3BjbGsiOworCX07CisJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCX07CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9tYXJ2ZWxsLGJlcmxpbi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbWFydmVsbCxiZXJsaW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MTFjNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbWFydmVsbCxiZXJsaW4udHh0CkBAIC0wLDAgKzEsMzEgQEAKK0RldmljZSBUcmVlIENsb2NrIGJpbmRpbmdzIGZvciBNYXJ2ZWxsIEJlcmxpbgorCitUaGlzIGJpbmRpbmcgdXNlcyB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmdbMV0uCisKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CisKK0Nsb2NrIHJlbGF0ZWQgcmVnaXN0ZXJzIGFyZSBzcHJlYWQgYW1vbmcgdGhlIGNoaXAgY29udHJvbCByZWdpc3RlcnMuIEJlcmxpbgorY2xvY2sgbm9kZSBzaG91bGQgYmUgYSBzdWItbm9kZSBvZiB0aGUgY2hpcCBjb250cm9sbGVyIG5vZGUuIE1hcnZlbGwgQmVybGluMgorKEJHMiwgQkcyQ0QsIEJHMlEpIFNvQ3Mgc2hhcmUgdGhlIHNhbWUgSVAgZm9yIFBMTHMgYW5kIGNsb2Nrcywgd2l0aCBzb21lCittaW5vciBkaWZmZXJlbmNlcyBpbiBmZWF0dXJlcyBhbmQgcmVnaXN0ZXIgbGF5b3V0LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBtdXN0IGJlICJtYXJ2ZWxsLGJlcmxpbjItY2xrIiBvciAibWFydmVsbCxiZXJsaW4ycS1jbGsiCistICNjbG9jay1jZWxsczogbXVzdCBiZSAxCistIGNsb2NrczogbXVzdCBiZSB0aGUgaW5wdXQgcGFyZW50IGNsb2NrIHBoYW5kbGUKKy0gY2xvY2stbmFtZXM6IG5hbWUgb2YgdGhlIGlucHV0IHBhcmVudCBjbG9jaworCUFsbG93ZWQgY2xvY2stbmFtZXMgZm9yIHRoZSByZWZlcmVuY2UgY2xvY2tzIGFyZQorCSJyZWZjbGsiIGZvciB0aGUgU29DcyBvc2NpbGxhdG9yIGlucHV0IG9uIGFsbCBTb0NzLAorCWFuZCBTb0Mtc3BlY2lmaWMgaW5wdXQgY2xvY2tzIGZvcgorCUJHMi9CRzJDRDogInZpZGVvX2V4dDAiIGZvciB0aGUgZXh0ZXJuYWwgdmlkZW8gY2xvY2sgaW5wdXQKKworCitFeGFtcGxlOgorCitjaGlwX2NsazogY2xvY2sgeworCWNvbXBhdGlibGUgPSAibWFydmVsbCxiZXJsaW4ycS1jbGsiOworCisJI2Nsb2NrLWNlbGxzID0gPDE+OworCWNsb2NrcyA9IDwmcmVmY2xrPjsKKwljbG9jay1uYW1lcyA9ICJyZWZjbGsiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9tYXJ2ZWxsLG1tcDIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL21hcnZlbGwsbW1wMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYzNzZhMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9tYXJ2ZWxsLG1tcDIudHh0CkBAIC0wLDAgKzEsMjEgQEAKKyogTWFydmVsbCBNTVAyIENsb2NrIENvbnRyb2xsZXIKKworVGhlIE1NUDIgY2xvY2sgc3Vic3lzdGVtIGdlbmVyYXRlcyBhbmQgc3VwcGxpZXMgY2xvY2sgdG8gdmFyaW91cworY29udHJvbGxlcnMgd2l0aGluIHRoZSBNTVAyIFNvQy4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcuCisgIC0gIm1hcnZlbGwsbW1wMi1jbG9jayIgLSBjb250cm9sbGVyIGNvbXBhdGlibGUgd2l0aCBNTVAyIFNvQy4KKworLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY2xvY2sgc3Vic3lzdGVtIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICByZWdpb24uIFRoZXJlIGFyZSAzIHBsYWNlcyBpbiBTT0MgaGFzIGNsb2NrIGNvbnRyb2wgbG9naWM6CisgICJtcG11IiwgImFwbXUiLCAiYXBiYyIuIFNvIHRocmVlIHJlZyBzcGFjZXMgbmVlZCB0byBiZSBkZWZpbmVkLgorCistICNjbG9jay1jZWxsczogc2hvdWxkIGJlIDEuCistICNyZXNldC1jZWxsczogc2hvdWxkIGJlIDEuCisKK0VhY2ggY2xvY2sgaXMgYXNzaWduZWQgYW4gaWRlbnRpZmllciBhbmQgY2xpZW50IG5vZGVzIHVzZSB0aGlzIGlkZW50aWZpZXIKK3RvIHNwZWNpZnkgdGhlIGNsb2NrIHdoaWNoIHRoZXkgY29uc3VtZS4KKworQWxsIHRoZXNlIGlkZW50aWZpZXIgY291bGQgYmUgZm91bmQgaW4gPGR0LWJpbmRpbmdzL2Nsb2NrL21hcnZlbGwtbW1wMi5oPi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9tYXJ2ZWxsLHB4YTE2OC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbWFydmVsbCxweGExNjgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MmViMWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbWFydmVsbCxweGExNjgudHh0CkBAIC0wLDAgKzEsMjEgQEAKKyogTWFydmVsbCBQWEExNjggQ2xvY2sgQ29udHJvbGxlcgorCitUaGUgUFhBMTY4IGNsb2NrIHN1YnN5c3RlbSBnZW5lcmF0ZXMgYW5kIHN1cHBsaWVzIGNsb2NrIHRvIHZhcmlvdXMKK2NvbnRyb2xsZXJzIHdpdGhpbiB0aGUgUFhBMTY4IFNvQy4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcuCisgIC0gIm1hcnZlbGwscHhhMTY4LWNsb2NrIiAtIGNvbnRyb2xsZXIgY29tcGF0aWJsZSB3aXRoIFBYQTE2OCBTb0MuCisKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNsb2NrIHN1YnN5c3RlbSBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLiBUaGVyZSBhcmUgMyBwbGFjZXMgaW4gU09DIGhhcyBjbG9jayBjb250cm9sIGxvZ2ljOgorICAibXBtdSIsICJhcG11IiwgImFwYmMiLiBTbyB0aHJlZSByZWcgc3BhY2VzIG5lZWQgdG8gYmUgZGVmaW5lZC4KKworLSAjY2xvY2stY2VsbHM6IHNob3VsZCBiZSAxLgorLSAjcmVzZXQtY2VsbHM6IHNob3VsZCBiZSAxLgorCitFYWNoIGNsb2NrIGlzIGFzc2lnbmVkIGFuIGlkZW50aWZpZXIgYW5kIGNsaWVudCBub2RlcyB1c2UgdGhpcyBpZGVudGlmaWVyCit0byBzcGVjaWZ5IHRoZSBjbG9jayB3aGljaCB0aGV5IGNvbnN1bWUuCisKK0FsbCB0aGVzZSBpZGVudGlmaWVyIGNvdWxkIGJlIGZvdW5kIGluIDxkdC1iaW5kaW5ncy9jbG9jay9tYXJ2ZWxsLHB4YTE2OC5oPi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9tYXJ2ZWxsLHB4YTE5MjgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL21hcnZlbGwscHhhMTkyOC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA5YzVhMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9tYXJ2ZWxsLHB4YTE5MjgudHh0CkBAIC0wLDAgKzEsMjEgQEAKKyogTWFydmVsbCBQWEExOTI4IENsb2NrIENvbnRyb2xsZXJzCisKK1RoZSBQWEExOTI4IGNsb2NrIHN1YnN5c3RlbSBnZW5lcmF0ZXMgYW5kIHN1cHBsaWVzIGNsb2NrIHRvIHZhcmlvdXMKK2NvbnRyb2xsZXJzIHdpdGhpbiB0aGUgUFhBMTkyOCBTb0MuIFRoZSBQWEExOTI4IGNvbnRhaW5zIDMgY2xvY2sgY29udHJvbGxlcgorYmxvY2tzIGNhbGxlZCBBUE1VLCBNUE1VLCBhbmQgQVBCQyByb3VnaGx5IGNvcnJlc3BvbmRpbmcgdG8gaW50ZXJuYWwgYnVzZXMuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nLgorICAtICJtYXJ2ZWxsLHB4YTE5MjgtYXBtdSIgLSBBUE1VIGNvbnRyb2xsZXIgY29tcGF0aWJsZQorICAtICJtYXJ2ZWxsLHB4YTE5MjgtbXBtdSIgLSBNUE1VIGNvbnRyb2xsZXIgY29tcGF0aWJsZQorICAtICJtYXJ2ZWxsLHB4YTE5MjgtYXBiYyIgLSBBUEJDIGNvbnRyb2xsZXIgY29tcGF0aWJsZQorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY2xvY2sgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorLSAjY2xvY2stY2VsbHM6IHNob3VsZCBiZSAxLgorLSAjcmVzZXQtY2VsbHM6IHNob3VsZCBiZSAxLgorCitFYWNoIGNsb2NrIGlzIGFzc2lnbmVkIGFuIGlkZW50aWZpZXIgYW5kIGNsaWVudCBub2RlcyB1c2UgdGhlIGNsb2NrIGNvbnRyb2xsZXIKK3BoYW5kbGUgYW5kIHRoaXMgaWRlbnRpZmllciB0byBzcGVjaWZ5IHRoZSBjbG9jayB3aGljaCB0aGV5IGNvbnN1bWUuCisKK0FsbCB0aGVzZSBpZGVudGlmaWVycyBjYW4gYmUgZm91bmQgaW4gPGR0LWJpbmRpbmdzL2Nsb2NrL21hcnZlbGwscHhhMTkyOC5oPi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9tYXJ2ZWxsLHB4YTkxMC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbWFydmVsbCxweGE5MTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5ZjQxZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbWFydmVsbCxweGE5MTAudHh0CkBAIC0wLDAgKzEsMjEgQEAKKyogTWFydmVsbCBQWEE5MTAgQ2xvY2sgQ29udHJvbGxlcgorCitUaGUgUFhBOTEwIGNsb2NrIHN1YnN5c3RlbSBnZW5lcmF0ZXMgYW5kIHN1cHBsaWVzIGNsb2NrIHRvIHZhcmlvdXMKK2NvbnRyb2xsZXJzIHdpdGhpbiB0aGUgUFhBOTEwIFNvQy4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcuCisgIC0gIm1hcnZlbGwscHhhOTEwLWNsb2NrIiAtIGNvbnRyb2xsZXIgY29tcGF0aWJsZSB3aXRoIFBYQTkxMCBTb0MuCisKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNsb2NrIHN1YnN5c3RlbSBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLiBUaGVyZSBhcmUgNCBwbGFjZXMgaW4gU09DIGhhcyBjbG9jayBjb250cm9sIGxvZ2ljOgorICAibXBtdSIsICJhcG11IiwgImFwYmMiLCAiYXBiY3AiLiBTbyBmb3VyIHJlZyBzcGFjZXMgbmVlZCB0byBiZSBkZWZpbmVkLgorCistICNjbG9jay1jZWxsczogc2hvdWxkIGJlIDEuCistICNyZXNldC1jZWxsczogc2hvdWxkIGJlIDEuCisKK0VhY2ggY2xvY2sgaXMgYXNzaWduZWQgYW4gaWRlbnRpZmllciBhbmQgY2xpZW50IG5vZGVzIHVzZSB0aGlzIGlkZW50aWZpZXIKK3RvIHNwZWNpZnkgdGhlIGNsb2NrIHdoaWNoIHRoZXkgY29uc3VtZS4KKworQWxsIHRoZXNlIGlkZW50aWZpZXIgY291bGQgYmUgZm91bmQgaW4gPGR0LWJpbmRpbmdzL2Nsb2NrL21hcnZlbGwtcHhhOTEwLmg+LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL21heGltLG1heDc3Njg2LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9tYXhpbSxtYXg3NzY4Ni50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM0MDczOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9tYXhpbSxtYXg3NzY4Ni50eHQKQEAgLTAsMCArMSw0NiBAQAorQmluZGluZyBmb3IgTWF4aW0gTUFYNzc2ODYgMzJrIGNsb2NrIGdlbmVyYXRvciBibG9jaworCitUaGlzIGlzIGEgcGFydCBvZiBkZXZpY2UgdHJlZSBiaW5kaW5ncyBvZiBNQVg3NzY4NiBtdWx0aS1mdW5jdGlvbiBkZXZpY2UuCitNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBiaW5kaW5ncy9tZmQvbWF4Nzc2ODYudHh0IGZpbGUuCisKK1RoZSBNQVg3NzY4NiBjb250YWlucyB0aHJlZSAzMi43NjhraHogY2xvY2sgb3V0cHV0cyB0aGF0IGNhbiBiZSBjb250cm9sbGVkCisoZ2F0ZWQvdW5nYXRlZCkgb3ZlciBJMkMuCisKK0ZvbGxvd2luZyBwcm9wZXJ0aWVzIHNob3VsZCBiZSBwcmVzZW5kIGluIG1haW4gZGV2aWNlIG5vZGUgb2YgdGhlIE1GRCBjaGlwLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistICNjbG9jay1jZWxsczogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzsgc2hhbGwgYmUgc2V0IHRvIDEuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrLW91dHB1dC1uYW1lczogRnJvbSBjb21tb24gY2xvY2sgYmluZGluZy4KKworRWFjaCBjbG9jayBpcyBhc3NpZ25lZCBhbiBpZGVudGlmaWVyIGFuZCBjbGllbnQgbm9kZXMgY2FuIHVzZSB0aGlzIGlkZW50aWZpZXIKK3RvIHNwZWNpZnkgdGhlIGNsb2NrIHdoaWNoIHRoZXkgY29uc3VtZS4gRm9sbG93aW5nIGluZGljZXMgYXJlIGFsbG93ZWQ6CisgICAgLSAwOiAzMmtoel9hcCBjbG9jaywKKyAgICAtIDE6IDMya2h6X2NwIGNsb2NrLAorICAgIC0gMjogMzJraHpfcG1pYyBjbG9jay4KKworQ2xvY2tzIGFyZSBkZWZpbmVkIGFzIHByZXByb2Nlc3NvciBtYWNyb3MgaW4gZHQtYmluZGluZ3MvY2xvY2svbWF4aW0sbWF4Nzc2ODYuaAoraGVhZGVyIGFuZCBjYW4gYmUgdXNlZCBpbiBkZXZpY2UgdHJlZSBzb3VyY2VzLgorCitFeGFtcGxlOiBOb2RlIG9mIHRoZSBNRkQgY2hpcAorCisJbWF4Nzc2ODY6IG1heDc3Njg2QDA5IHsKKwkJY29tcGF0aWJsZSA9ICJtYXhpbSxtYXg3NzY4NiI7CisJCWludGVycnVwdC1wYXJlbnQgPSA8Jndha2V1cF9laW50PjsKKwkJaW50ZXJydXB0cyA9IDwyNiAwPjsKKwkJcmVnID0gPDB4MDk+OworCQkjY2xvY2stY2VsbHMgPSA8MT47CisKKwkJLyogLi4uICovCisJfTsKKworRXhhbXBsZTogQ2xvY2sgY29uc3VtZXIgbm9kZQorCisJZm9vQDAgeworCQljb21wYXRpYmxlID0gImJhcixmb28iOworCQkvKiAuLi4gKi8KKwkJY2xvY2stbmFtZXMgPSAibXktY2xvY2siOworCQljbG9ja3MgPSA8Jm1heDc3Njg2IE1BWDc3Njg2X0NMS19QTUlDPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL21heGltLG1heDc3ODAyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9tYXhpbSxtYXg3NzgwMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZkYzc4MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9tYXhpbSxtYXg3NzgwMi50eHQKQEAgLTAsMCArMSw0NCBAQAorQmluZGluZyBmb3IgTWF4aW0gTUFYNzc4MDIgMzJrIGNsb2NrIGdlbmVyYXRvciBibG9jaworCitUaGlzIGlzIGEgcGFydCBvZiBkZXZpY2UgdHJlZSBiaW5kaW5ncyBvZiBNQVg3NzgwMiBtdWx0aS1mdW5jdGlvbiBkZXZpY2UuCitNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBiaW5kaW5ncy9tZmQvbWF4Nzc4MDIudHh0IGZpbGUuCisKK1RoZSBNQVg3NzgwMiBjb250YWlucyB0d28gMzIuNzY4a2h6IGNsb2NrIG91dHB1dHMgdGhhdCBjYW4gYmUgY29udHJvbGxlZAorKGdhdGVkL3VuZ2F0ZWQpIG92ZXIgSTJDLgorCitGb2xsb3dpbmcgcHJvcGVydGllcyBzaG91bGQgYmUgcHJlc2VudCBpbiBtYWluIGRldmljZSBub2RlIG9mIHRoZSBNRkQgY2hpcC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gI2Nsb2NrLWNlbGxzOiBGcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBzaGFsbCBiZSBzZXQgdG8gMS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gY2xvY2stb3V0cHV0LW5hbWVzOiBGcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nLgorCitFYWNoIGNsb2NrIGlzIGFzc2lnbmVkIGFuIGlkZW50aWZpZXIgYW5kIGNsaWVudCBub2RlcyBjYW4gdXNlIHRoaXMgaWRlbnRpZmllcgordG8gc3BlY2lmeSB0aGUgY2xvY2sgd2hpY2ggdGhleSBjb25zdW1lLiBGb2xsb3dpbmcgaW5kaWNlcyBhcmUgYWxsb3dlZDoKKyAgICAgLSAwOiAzMmtoel9hcCBjbG9jaywKKyAgICAgLSAxOiAzMmtoel9jcCBjbG9jay4KKworQ2xvY2tzIGFyZSBkZWZpbmVkIGFzIHByZXByb2Nlc3NvciBtYWNyb3MgaW4gZHQtYmluZGluZ3MvY2xvY2svbWF4aW0sbWF4Nzc4MDIuaAoraGVhZGVyIGFuZCBjYW4gYmUgdXNlZCBpbiBkZXZpY2UgdHJlZSBzb3VyY2VzLgorCitFeGFtcGxlOiBOb2RlIG9mIHRoZSBNRkQgY2hpcAorCisJbWF4Nzc4MDI6IG1heDc3ODAyQDA5IHsKKwkJY29tcGF0aWJsZSA9ICJtYXhpbSxtYXg3NzgwMiI7CisJCWludGVycnVwdC1wYXJlbnQgPSA8Jndha2V1cF9laW50PjsKKwkJaW50ZXJydXB0cyA9IDwyNiAwPjsKKwkJcmVnID0gPDB4MDk+OworCQkjY2xvY2stY2VsbHMgPSA8MT47CisKKwkJLyogLi4uICovCisJfTsKKworRXhhbXBsZTogQ2xvY2sgY29uc3VtZXIgbm9kZQorCisJZm9vQDAgeworCQljb21wYXRpYmxlID0gImJhcixmb28iOworCQkvKiAuLi4gKi8KKwkJY2xvY2stbmFtZXMgPSAibXktY2xvY2siOworCQljbG9ja3MgPSA8Jm1heDc3ODAyIE1BWDc3ODAyX0NMS18zMktfQVA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbW94YSxtb3hhcnQtY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL21veGEsbW94YXJ0LWNsb2NrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWRlYTg0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL21veGEsbW94YXJ0LWNsb2NrLnR4dApAQCAtMCwwICsxLDQ4IEBACitEZXZpY2UgVHJlZSBDbG9jayBiaW5kaW5ncyBmb3IgYXJjaC1tb3hhcnQKKworVGhpcyBiaW5kaW5nIHVzZXMgdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nWzFdLgorCitbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCitNT1hBIEFSVCBTb0NzIGFsbG93IHRvIGRldGVybWluZSBQTEwgb3V0cHV0IGFuZCBBUEIgZnJlcXVlbmNpZXMKK2J5IHJlYWRpbmcgcmVnaXN0ZXJzIGhvbGRpbmcgbXVsdGlwbGllciBhbmQgZGl2aXNvciBpbmZvcm1hdGlvbi4KKworCitQTEw6CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBNdXN0IGJlICJtb3hhLG1veGFydC1wbGwtY2xvY2siCistICNjbG9jay1jZWxscyA6IFNob3VsZCBiZSAwCistIHJlZyA6IFNob3VsZCBjb250YWluIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCistIGNsb2NrcyA6IFNob3VsZCBjb250YWluIHBoYW5kbGUgKyBjbG9jay1zcGVjaWZpZXIgZm9yIHRoZSBwYXJlbnQgY2xvY2sKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gY2xvY2stb3V0cHV0LW5hbWVzIDogU2hvdWxkIGNvbnRhaW4gY2xvY2sgbmFtZQorCisKK0FQQjoKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IE11c3QgYmUgIm1veGEsbW94YXJ0LWFwYi1jbG9jayIKKy0gI2Nsb2NrLWNlbGxzIDogU2hvdWxkIGJlIDAKKy0gcmVnIDogU2hvdWxkIGNvbnRhaW4gcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKy0gY2xvY2tzIDogU2hvdWxkIGNvbnRhaW4gcGhhbmRsZSArIGNsb2NrLXNwZWNpZmllciBmb3IgdGhlIHBhcmVudCBjbG9jaworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjbG9jay1vdXRwdXQtbmFtZXMgOiBTaG91bGQgY29udGFpbiBjbG9jayBuYW1lCisKKworRm9yIGV4YW1wbGU6CisKKwljbGtfcGxsOiBjbGtfcGxsQDk4MTAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJtb3hhLG1veGFydC1wbGwtY2xvY2siOworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCXJlZyA9IDwweDk4MTAwMDAwIDB4MzQ+OworCX07CisKKwljbGtfYXBiOiBjbGtfYXBiQDk4MTAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJtb3hhLG1veGFydC1hcGItY2xvY2siOworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCXJlZyA9IDwweDk4MTAwMDAwIDB4MzQ+OworCQljbG9ja3MgPSA8JmNsa19wbGw+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbXQ4MTczLWNwdS1kdmZzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9tdDgxNzMtY3B1LWR2ZnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyYjQ1N2MKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbXQ4MTczLWNwdS1kdmZzLnR4dApAQCAtMCwwICsxLDgzIEBACitEZXZpY2UgVHJlZSBDbG9jayBiaW5kaW5zIGZvciBDUFUgRFZGUyBvZiBNZWRpYXRlayBNVDgxNzMgU29DCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNsb2NrczogQSBsaXN0IG9mIHBoYW5kbGUgKyBjbG9jay1zcGVjaWZpZXIgcGFpcnMgZm9yIHRoZSBjbG9ja3MgbGlzdGVkIGluIGNsb2NrIG5hbWVzLgorLSBjbG9jay1uYW1lczogU2hvdWxkIGNvbnRhaW4gdGhlIGZvbGxvd2luZzoKKwkiY3B1IgkJLSBUaGUgbXVsdGlwbGV4ZXIgZm9yIGNsb2NrIGlucHV0IG9mIENQVSBjbHVzdGVyLgorCSJpbnRlcm1lZGlhdGUiCS0gQSBwYXJlbnQgb2YgImNwdSIgY2xvY2sgd2hpY2ggaXMgdXNlZCBhcyAiaW50ZXJtZWRpYXRlIiBjbG9jaworCQkJICBzb3VyY2UgKHVzdWFsbHkgTUFJTlBMTCkgd2hlbiB0aGUgb3JpZ2luYWwgQ1BVIFBMTCBpcyB1bmRlcgorCQkJICB0cmFuc2l0aW9uIGFuZCBub3Qgc3RhYmxlIHlldC4KKwlQbGVhc2UgcmVmZXIgdG8gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsay9jbG9jay1iaW5kaW5ncy50eHQgZm9yCisJZ2VuZXJpYyBjbG9jayBjb25zdW1lciBwcm9wZXJ0aWVzLgorLSBwcm9jLXN1cHBseTogUmVndWxhdG9yIGZvciBWcHJvYyBvZiBDUFUgY2x1c3Rlci4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gc3JhbS1zdXBwbHk6IFJlZ3VsYXRvciBmb3IgVnNyYW0gb2YgQ1BVIGNsdXN0ZXIuIFdoZW4gcHJlc2VudCwgdGhlIGNwdWZyZXEgZHJpdmVyCisJICAgICAgIG5lZWRzIHRvIGRvICJ2b2x0YWdlIHRyYWNraW5nIiB0byBzdGVwIGJ5IHN0ZXAgc2NhbGUgdXAvZG93biBWcHJvYyBhbmQKKwkgICAgICAgVnNyYW0gdG8gZml0IFNvQyBzcGVjaWZpYyBuZWVkcy4gV2hlbiBhYnNlbnQsIHRoZSB2b2x0YWdlIHNjYWxpbmcKKwkgICAgICAgZmxvdyBpcyBoYW5kbGVkIGJ5IGhhcmR3YXJlLCBoZW5jZSBubyBzb2Z0d2FyZSAidm9sdGFnZSB0cmFja2luZyIgaXMKKwkgICAgICAgbmVlZGVkLgorCitFeGFtcGxlOgorLS0tLS0tLS0KKwljcHUwOiBjcHVAMCB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNTMiOworCQlyZWcgPSA8MHgwMDA+OworCQllbmFibGUtbWV0aG9kID0gInBzY2kiOworCQljcHUtaWRsZS1zdGF0ZXMgPSA8JkNQVV9TTEVFUF8wPjsKKwkJY2xvY2tzID0gPCZpbmZyYWNmZyBDTEtfSU5GUkFfQ0E1M1NFTD4sCisJCQkgPCZhcG1peGVkc3lzIENMS19BUE1JWEVEX01BSU5QTEw+OworCQljbG9jay1uYW1lcyA9ICJjcHUiLCAiaW50ZXJtZWRpYXRlIjsKKwl9OworCisJY3B1MTogY3B1QDEgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTUzIjsKKwkJcmVnID0gPDB4MDAxPjsKKwkJZW5hYmxlLW1ldGhvZCA9ICJwc2NpIjsKKwkJY3B1LWlkbGUtc3RhdGVzID0gPCZDUFVfU0xFRVBfMD47CisJCWNsb2NrcyA9IDwmaW5mcmFjZmcgQ0xLX0lORlJBX0NBNTNTRUw+LAorCQkJIDwmYXBtaXhlZHN5cyBDTEtfQVBNSVhFRF9NQUlOUExMPjsKKwkJY2xvY2stbmFtZXMgPSAiY3B1IiwgImludGVybWVkaWF0ZSI7CisJfTsKKworCWNwdTI6IGNwdUAxMDAgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTU3IjsKKwkJcmVnID0gPDB4MTAwPjsKKwkJZW5hYmxlLW1ldGhvZCA9ICJwc2NpIjsKKwkJY3B1LWlkbGUtc3RhdGVzID0gPCZDUFVfU0xFRVBfMD47CisJCWNsb2NrcyA9IDwmaW5mcmFjZmcgQ0xLX0lORlJBX0NBNTdTRUw+LAorCQkJIDwmYXBtaXhlZHN5cyBDTEtfQVBNSVhFRF9NQUlOUExMPjsKKwkJY2xvY2stbmFtZXMgPSAiY3B1IiwgImludGVybWVkaWF0ZSI7CisJfTsKKworCWNwdTM6IGNwdUAxMDEgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTU3IjsKKwkJcmVnID0gPDB4MTAxPjsKKwkJZW5hYmxlLW1ldGhvZCA9ICJwc2NpIjsKKwkJY3B1LWlkbGUtc3RhdGVzID0gPCZDUFVfU0xFRVBfMD47CisJCWNsb2NrcyA9IDwmaW5mcmFjZmcgQ0xLX0lORlJBX0NBNTdTRUw+LAorCQkJIDwmYXBtaXhlZHN5cyBDTEtfQVBNSVhFRF9NQUlOUExMPjsKKwkJY2xvY2stbmFtZXMgPSAiY3B1IiwgImludGVybWVkaWF0ZSI7CisJfTsKKworCSZjcHUwIHsKKwkJcHJvYy1zdXBwbHkgPSA8Jm10NjM5N192cGNhMTVfcmVnPjsKKwl9OworCisJJmNwdTEgeworCQlwcm9jLXN1cHBseSA9IDwmbXQ2Mzk3X3ZwY2ExNV9yZWc+OworCX07CisKKwkmY3B1MiB7CisJCXByb2Mtc3VwcGx5ID0gPCZkYTkyMTFfdmNwdV9yZWc+OworCQlzcmFtLXN1cHBseSA9IDwmbXQ2Mzk3X3ZzcmFtY2E3X3JlZz47CisJfTsKKworCSZjcHUzIHsKKwkJcHJvYy1zdXBwbHkgPSA8JmRhOTIxMV92Y3B1X3JlZz47CisJCXNyYW0tc3VwcGx5ID0gPCZtdDYzOTdfdnNyYW1jYTdfcmVnPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL212ZWJ1LWNvcmUtY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL212ZWJ1LWNvcmUtY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MGMyYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbXZlYnUtY29yZS1jbG9jay50eHQKQEAgLTAsMCArMSw3OCBAQAorKiBDb3JlIENsb2NrIGJpbmRpbmdzIGZvciBNYXJ2ZWxsIE1WRUJVIFNvQ3MKKworTWFydmVsbCBNVkVCVSBTb0NzIHVzdWFsbHkgYWxsb3cgdG8gZGV0ZXJtaW5lIGNvcmUgY2xvY2sgZnJlcXVlbmNpZXMgYnkKK3JlYWRpbmcgdGhlIFNhbXBsZS1BdC1SZXNldCAoU0FSKSByZWdpc3Rlci4gVGhlIGNvcmUgY2xvY2sgY29uc3VtZXIgc2hvdWxkCitzcGVjaWZ5IHRoZSBkZXNpcmVkIGNsb2NrIGJ5IGhhdmluZyB0aGUgY2xvY2sgSUQgaW4gaXRzICJjbG9ja3MiIHBoYW5kbGUgY2VsbC4KKworVGhlIGZvbGxvd2luZyBpcyBhIGxpc3Qgb2YgcHJvdmlkZWQgSURzIGFuZCBjbG9jayBuYW1lcyBvbiBBcm1hZGEgMzcwL1hQOgorIDAgPSB0Y2xrICAgIChJbnRlcm5hbCBCdXMgY2xvY2spCisgMSA9IGNwdWNsayAgKENQVSBjbG9jaykKKyAyID0gbmJjbGsgICAoTDIgQ2FjaGUgY2xvY2spCisgMyA9IGhjbGsgICAgKERSQU0gY29udHJvbCBjbG9jaykKKyA0ID0gZHJhbWNsayAoRERSIGNsb2NrKQorCitUaGUgZm9sbG93aW5nIGlzIGEgbGlzdCBvZiBwcm92aWRlZCBJRHMgYW5kIGNsb2NrIG5hbWVzIG9uIEFybWFkYSAzNzU6CisgMCA9IHRjbGsgICAgKEludGVybmFsIEJ1cyBjbG9jaykKKyAxID0gY3B1Y2xrICAoQ1BVIGNsb2NrKQorIDIgPSBsMmNsayAgIChMMiBDYWNoZSBjbG9jaykKKyAzID0gZGRyY2xrICAoRERSIGNsb2NrKQorCitUaGUgZm9sbG93aW5nIGlzIGEgbGlzdCBvZiBwcm92aWRlZCBJRHMgYW5kIGNsb2NrIG5hbWVzIG9uIEFybWFkYSAzODAvMzg1OgorIDAgPSB0Y2xrICAgIChJbnRlcm5hbCBCdXMgY2xvY2spCisgMSA9IGNwdWNsayAgKENQVSBjbG9jaykKKyAyID0gbDJjbGsgICAoTDIgQ2FjaGUgY2xvY2spCisgMyA9IGRkcmNsayAgKEREUiBjbG9jaykKKworVGhlIGZvbGxvd2luZyBpcyBhIGxpc3Qgb2YgcHJvdmlkZWQgSURzIGFuZCBjbG9jayBuYW1lcyBvbiBBcm1hZGEgMzl4OgorIDAgPSB0Y2xrICAgIChJbnRlcm5hbCBCdXMgY2xvY2spCisgMSA9IGNwdWNsayAgKENQVSBjbG9jaykKKyAyID0gbmJjbGsgICAoQ29oZXJlbnQgRmFicmljIGNsb2NrKQorIDMgPSBoY2xrICAgIChTRFJBTSBDb250cm9sbGVyIEludGVybmFsIENsb2NrKQorIDQgPSBkY2xrICAgIChTRFJBTSBJbnRlcmZhY2UgQ2xvY2spCisgNSA9IHJlZmNsayAgKFJlZmVyZW5jZSBDbG9jaykKKworVGhlIGZvbGxvd2luZyBpcyBhIGxpc3Qgb2YgcHJvdmlkZWQgSURzIGFuZCBjbG9jayBuYW1lcyBvbiBLaXJrd29vZCBhbmQgRG92ZToKKyAwID0gdGNsayAgIChJbnRlcm5hbCBCdXMgY2xvY2spCisgMSA9IGNwdWNsayAoQ1BVMCBjbG9jaykKKyAyID0gbDJjbGsgIChMMiBDYWNoZSBjbG9jayBkZXJpdmVkIGZyb20gQ1BVMCBjbG9jaykKKyAzID0gZGRyY2xrIChERFIgY29udHJvbGxlciBjbG9jayBkZXJpdmVkIGZyb20gQ1BVMCBjbG9jaykKKworVGhlIGZvbGxvd2luZyBpcyBhIGxpc3Qgb2YgcHJvdmlkZWQgSURzIGFuZCBjbG9jayBuYW1lcyBvbiBPcmlvbjV4OgorIDAgPSB0Y2xrICAgKEludGVybmFsIEJ1cyBjbG9jaykKKyAxID0gY3B1Y2xrIChDUFUwIGNsb2NrKQorIDIgPSBkZHJjbGsgKEREUiBjb250cm9sbGVyIGNsb2NrIGRlcml2ZWQgZnJvbSBDUFUwIGNsb2NrKQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hhbGwgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisJIm1hcnZlbGwsYXJtYWRhLTM3MC1jb3JlLWNsb2NrIiAtIEZvciBBcm1hZGEgMzcwIFNvQyBjb3JlIGNsb2NrcworCSJtYXJ2ZWxsLGFybWFkYS0zNzUtY29yZS1jbG9jayIgLSBGb3IgQXJtYWRhIDM3NSBTb0MgY29yZSBjbG9ja3MKKwkibWFydmVsbCxhcm1hZGEtMzgwLWNvcmUtY2xvY2siIC0gRm9yIEFybWFkYSAzODAvMzg1IFNvQyBjb3JlIGNsb2NrcworCSJtYXJ2ZWxsLGFybWFkYS0zOTAtY29yZS1jbG9jayIgLSBGb3IgQXJtYWRhIDM5eCBTb0MgY29yZSBjbG9ja3MKKwkibWFydmVsbCxhcm1hZGEteHAtY29yZS1jbG9jayIgLSBGb3IgQXJtYWRhIFhQIFNvQyBjb3JlIGNsb2NrcworCSJtYXJ2ZWxsLGRvdmUtY29yZS1jbG9jayIgLSBmb3IgRG92ZSBTb0MgY29yZSBjbG9ja3MKKwkibWFydmVsbCxraXJrd29vZC1jb3JlLWNsb2NrIiAtIGZvciBLaXJrd29vZCBTb0MgKGV4Y2VwdCBtdjg4ZjYxODApCisJIm1hcnZlbGwsbXY4OGY2MTgwLWNvcmUtY2xvY2siIC0gZm9yIEtpcmt3b29kIE1WODhmNjE4MCBTb0MKKwkibWFydmVsbCxtdjg4ZjUxODItY29yZS1jbG9jayIgLSBmb3IgT3Jpb24gTVY4OEY1MTgyIFNvQworCSJtYXJ2ZWxsLG12ODhmNTI4MS1jb3JlLWNsb2NrIiAtIGZvciBPcmlvbiBNVjg4RjUyODEgU29DCisJIm1hcnZlbGwsbXY4OGY2MTgzLWNvcmUtY2xvY2siIC0gZm9yIE9yaW9uIE1WODhGNjE4MyBTb0MKKy0gcmVnIDogc2hhbGwgYmUgdGhlIHJlZ2lzdGVyIGFkZHJlc3Mgb2YgdGhlIFNhbXBsZS1BdC1SZXNldCAoU0FSKSByZWdpc3RlcgorLSAjY2xvY2stY2VsbHMgOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBzaGFsbCBiZSBzZXQgdG8gMQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjbG9jay1vdXRwdXQtbmFtZXMgOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBhbGxvd3Mgb3ZlcndyaXRlIGRlZmF1bHQgY2xvY2sKKwlvdXRwdXQgbmFtZXMgKCJ0Y2xrIiwgImNwdWNsayIsICJsMmNsayIsICJkZHJjbGsiKQorCitFeGFtcGxlOgorCitjb3JlX2NsazogY29yZS1jbG9ja3NAZDAyMTQgeworCWNvbXBhdGlibGUgPSAibWFydmVsbCxkb3ZlLWNvcmUtY2xvY2siOworCXJlZyA9IDwweGQwMjE0IDB4ND47CisJI2Nsb2NrLWNlbGxzID0gPDE+OworfTsKKworc3BpMDogc3BpQDEwNjAwIHsKKwljb21wYXRpYmxlID0gIm1hcnZlbGwsb3Jpb24tc3BpIjsKKwkvKiAuLi4gKi8KKwkvKiBnZXQgdGNsayBmcm9tIGNvcmUgY2xvY2sgcHJvdmlkZXIgKi8KKwljbG9ja3MgPSA8JmNvcmVfY2xrIDA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9tdmVidS1jb3JlZGl2LWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9tdmVidS1jb3JlZGl2LWNsb2NrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjA1NjJhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL212ZWJ1LWNvcmVkaXYtY2xvY2sudHh0CkBAIC0wLDAgKzEsMjIgQEAKKyogQ29yZSBEaXZpZGVyIENsb2NrIGJpbmRpbmdzIGZvciBNYXJ2ZWxsIE1WRUJVIFNvQ3MKKworVGhlIGZvbGxvd2luZyBpcyBhIGxpc3Qgb2YgcHJvdmlkZWQgSURzIGFuZCBjbG9jayBuYW1lcyBvbiBBcm1hZGEgMzcwL1hQOgorIDAgPSBuYW5kIChOQU5EIGNsb2NrKQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogbXVzdCBiZSAibWFydmVsbCxhcm1hZGEtMzcwLWNvcmVkaXYtY2xvY2siLAorCQkgICAgICAgIm1hcnZlbGwsYXJtYWRhLTM3NS1jb3JlZGl2LWNsb2NrIiwKKwkJICAgICAgICJtYXJ2ZWxsLGFybWFkYS0zODAtY29yZWRpdi1jbG9jayIsCisKKy0gcmVnIDogbXVzdCBiZSB0aGUgcmVnaXN0ZXIgYWRkcmVzcyBvZiBDb3JlIERpdmlkZXIgY29udHJvbCByZWdpc3RlcgorLSAjY2xvY2stY2VsbHMgOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBzaGFsbCBiZSBzZXQgdG8gMQorLSBjbG9ja3MgOiBtdXN0IGJlIHNldCB0byB0aGUgcGFyZW50J3MgcGhhbmRsZQorCitFeGFtcGxlOgorCitjb3JlZGl2X2NsazogY29yZWRpdi1jbG9ja3NAMTg3NDAgeworCWNvbXBhdGlibGUgPSAibWFydmVsbCxhcm1hZGEtMzcwLWNvcmVkaXYtY2xvY2siOworCXJlZyA9IDwweDE4NzQwIDB4Yz47CisJI2Nsb2NrLWNlbGxzID0gPDE+OworCWNsb2NrcyA9IDwmcGxsPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbXZlYnUtY3B1LWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9tdmVidS1jcHUtY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5YzIxNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbXZlYnUtY3B1LWNsb2NrLnR4dApAQCAtMCwwICsxLDIyIEBACitEZXZpY2UgVHJlZSBDbG9jayBiaW5kaW5ncyBmb3IgY3B1IGNsb2NrIG9mIE1hcnZlbGwgRUJVIHBsYXRmb3JtcworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hhbGwgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisJIm1hcnZlbGwsYXJtYWRhLXhwLWNwdS1jbG9jayIgLSBjcHUgY2xvY2tzIGZvciBBcm1hZGEgWFAKKy0gcmVnIDogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBjbG9jayBjb21wbGV4IHJlZ2lzdGVyIHNldCwgZm9sbG93ZWQKKyAgICAgICAgYnkgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBQTVUgREZTIHJlZ2lzdGVycworLSAjY2xvY2stY2VsbHMgOiBzaG91bGQgYmUgc2V0IHRvIDEuCistIGNsb2NrcyA6IHNoYWxsIGJlIHRoZSBpbnB1dCBwYXJlbnQgY2xvY2sgcGhhbmRsZSBmb3IgdGhlIGNsb2NrLgorCitjcHVjbGs6IGNsb2NrLWNvbXBsZXhAZDAwMTg3MDAgeworCSNjbG9jay1jZWxscyA9IDwxPjsKKwljb21wYXRpYmxlID0gIm1hcnZlbGwsYXJtYWRhLXhwLWNwdS1jbG9jayI7CisJcmVnID0gPDB4ZDAwMTg3MDAgMHhBMD4sIDwweDFjMDU0IDB4MTA+OworCWNsb2NrcyA9IDwmY29yZWNsayAxPjsKK30KKworY3B1QDAgeworCWNvbXBhdGlibGUgPSAibWFydmVsbCxzaGVldmEtdjciOworCXJlZyA9IDwwPjsKKwljbG9ja3MgPSA8JmNwdWNsayAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbXZlYnUtZ2F0ZWQtY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL212ZWJ1LWdhdGVkLWNsb2NrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjBlNjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL212ZWJ1LWdhdGVkLWNsb2NrLnR4dApAQCAtMCwwICsxLDE5MiBAQAorKiBHYXRlZCBDbG9jayBiaW5kaW5ncyBmb3IgTWFydmVsbCBFQlUgU29DcworCitNYXJ2ZWxsIEFybWFkYSAzNzAvMzc1LzM4MC8zODUvMzl4L1hQLCBEb3ZlIGFuZCBLaXJrd29vZCBhbGxvdyBzb21lCitwZXJpcGhlcmFsIGNsb2NrcyB0byBiZSBnYXRlZCB0byBzYXZlIHNvbWUgcG93ZXIuIFRoZSBjbG9jayBjb25zdW1lcgorc2hvdWxkIHNwZWNpZnkgdGhlIGRlc2lyZWQgY2xvY2sgYnkgaGF2aW5nIHRoZSBjbG9jayBJRCBpbiBpdHMKKyJjbG9ja3MiIHBoYW5kbGUgY2VsbC4gVGhlIGNsb2NrIElEIGlzIGRpcmVjdGx5IG1hcHBlZCB0byB0aGUKK2NvcnJlc3BvbmRpbmcgY2xvY2sgZ2F0aW5nIGNvbnRyb2wgYml0IGluIEhXIHRvIGVhc2UgbWFudWFsIGNsb2NrCitsb29rdXAgaW4gZGF0YXNoZWV0LgorCitUaGUgZm9sbG93aW5nIGlzIGEgbGlzdCBvZiBwcm92aWRlZCBJRHMgZm9yIEFybWFkYSAzNzA6CitJRAlDbG9jawlQZXJpcGhlcmFsCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMAlBdWRpbwlBQzk3IENudHJsCisxCXBleDBfZW4JUENJZSAwIENsb2NrIG91dAorMglwZXgxX2VuCVBDSWUgMSBDbG9jayBvdXQKKzMJZ2UxCUdpZ2FiaXQgRXRoZXJuZXQgMQorNAlnZTAJR2lnYWJpdCBFdGhlcm5ldCAwCis1CXBleDAJUENJZSBDbnRybCAwCis5CXBleDEJUENJZSBDbnRybCAxCisxNQlzYXRhMAlTQVRBIEhvc3QgMAorMTcJc2RpbwlTREhDSSBIb3N0CisyMwljcnlwdG8JQ0VTQSAoY3J5cHRvIGVuZ2luZSkKKzI1CXRkbQlUaW1lIERpdmlzaW9uIE1wbHgKKzI4CWRkcglERFIgQ250cmwKKzMwCXNhdGExCVNBVEEgSG9zdCAwCisKK1RoZSBmb2xsb3dpbmcgaXMgYSBsaXN0IG9mIHByb3ZpZGVkIElEcyBmb3IgQXJtYWRhIDM3NToKK0lECUNsb2NrCQlQZXJpcGhlcmFsCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMgltdQkJTWFuYWdlbWVudCBVbml0CiszCXBwCQlQYWNrZXQgUHJvY2Vzc29yCis0CXB0cAkJUFRQCis1CXBleDAJCVBDSWUgMCBDbG9jayBvdXQKKzYJcGV4MQkJUENJZSAxIENsb2NrIG91dAorOAlhdWRpbwkJQXVkaW8gQ250cmwKKzExCW5kX2NsawkJTmFuZCBGbGFzaCBDbnRybAorMTQJc2F0YTBfbGluawlTQVRBIDAgTGluaworMTUJc2F0YTBfY29yZQlTQVRBIDAgQ29yZQorMTYJdXNiMwkJVVNCMyBIb3N0CisxNwlzZGlvCQlTREhDSSBIb3N0CisxOAl1c2IJCVVTQiBIb3N0CisxOQlnb3AJCUdpZ2FiaXQgRXRoZXJuZXQgTUFDCisyMAlzYXRhMV9saW5rCVNBVEEgMSBMaW5rCisyMQlzYXRhMV9jb3JlCVNBVEEgMSBDb3JlCisyMgl4b3IwCQlYT1IgRE1BIDAKKzIzCXhvcjEJCVhPUiBETUEgMAorMjQJY29wcm8JCUNvcHJvY2Vzc29yCisyNQl0ZG0JCVRpbWUgRGl2aXNpb24gTXBseAorMjgJY3J5cHRvMF9lbmMJQ3J5cHRvZ3JhcGhpYyBVbml0IFBvcnQgMCBFbmNyeXB0aW9uCisyOQljcnlwdG8wX2NvcmUJQ3J5cHRvZ3JhcGhpYyBVbml0IFBvcnQgMCBDb3JlCiszMAljcnlwdG8xX2VuYwlDcnlwdG9ncmFwaGljIFVuaXQgUG9ydCAxIEVuY3J5cHRpb24KKzMxCWNyeXB0bzFfY29yZQlDcnlwdG9ncmFwaGljIFVuaXQgUG9ydCAxIENvcmUKKworVGhlIGZvbGxvd2luZyBpcyBhIGxpc3Qgb2YgcHJvdmlkZWQgSURzIGZvciBBcm1hZGEgMzgwLzM4NToKK0lECUNsb2NrCQlQZXJpcGhlcmFsCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMAlhdWRpbwkJQXVkaW8KKzIJZ2UyCQlHaWdhYml0IEV0aGVybmV0IDIKKzMJZ2UxCQlHaWdhYml0IEV0aGVybmV0IDEKKzQJZ2UwCQlHaWdhYml0IEV0aGVybmV0IDAKKzUJcGV4MQkJUENJZSAxCis2CXBleDIJCVBDSWUgMgorNwlwZXgzCQlQQ0llIDMKKzgJcGV4MAkJUENJZSAwCis5CXVzYjNoMAkJVVNCMyBIb3N0IDAKKzEwCXVzYjNoMQkJVVNCMyBIb3N0IDEKKzExCXVzYjNkCQlVU0IzIERldmljZQorMTMJYm0JCUJ1ZmZlciBNYW5hZ2VtZW50CisxNAljcnlwdG8weglDcnlwdG9ncmFwaGljIDAgWgorMTUJc2F0YTAJCVNBVEEgMAorMTYJY3J5cHRvMXoJQ3J5cHRvZ3JhcGhpYyAxIFoKKzE3CXNkaW8JCVNESU8KKzE4CXVzYjIJCVVTQiAyCisyMQljcnlwdG8xCQlDcnlwdG9ncmFwaGljIDEKKzIyCXhvcjAJCVhPUiAwCisyMwljcnlwdG8wCQlDcnlwdG9ncmFwaGljIDAKKzI1CXRkbQkJVGltZSBEaXZpc2lvbiBNdWx0aXBsZXhpbmcKKzI4CXhvcjEJCVhPUiAxCiszMAlzYXRhMQkJU0FUQSAxCisKK1RoZSBmb2xsb3dpbmcgaXMgYSBsaXN0IG9mIHByb3ZpZGVkIElEcyBmb3IgQXJtYWRhIDM5eDoKK0lECUNsb2NrCQlQZXJpcGhlcmFsCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorNQlwZXgxCQlQQ0llIDEKKzYJcGV4MgkJUENJZSAyCis3CXBleDMJCVBDSWUgMworOAlwZXgwCQlQQ0llIDAKKzkJdXNiM2gwCQlVU0IzIEhvc3QgMAorMTcJc2RpbwkJU0RJTworMjIJeG9yMAkJWE9SIDAKKzI4CXhvcjEJCVhPUiAxCisKK1RoZSBmb2xsb3dpbmcgaXMgYSBsaXN0IG9mIHByb3ZpZGVkIElEcyBmb3IgQXJtYWRhIFhQOgorSUQJQ2xvY2sJUGVyaXBoZXJhbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzAJYXVkaW8JQXVkaW8gQ250cmwKKzEJZ2UzCUdpZ2FiaXQgRXRoZXJuZXQgMworMglnZTIJR2lnYWJpdCBFdGhlcm5ldCAyCiszCWdlMQlHaWdhYml0IEV0aGVybmV0IDEKKzQJZ2UwCUdpZ2FiaXQgRXRoZXJuZXQgMAorNQlwZXgwCVBDSWUgQ250cmwgMAorNglwZXgxCVBDSWUgQ250cmwgMQorNwlwZXgyCVBDSWUgQ250cmwgMgorOAlwZXgzCVBDSWUgQ250cmwgMworMTMJYnAKKzE0CXNhdGEwbG5rCisxNQlzYXRhMAlTQVRBIEhvc3QgMAorMTYJbGNkCUxDRCBDbnRybAorMTcJc2RpbwlTREhDSSBIb3N0CisxOAl1c2IwCVVTQiBIb3N0IDAKKzE5CXVzYjEJVVNCIEhvc3QgMQorMjAJdXNiMglVU0IgSG9zdCAyCisyMgl4b3IwCVhPUiBETUEgMAorMjMJY3J5cHRvCUNFU0EgZW5naW5lCisyNQl0ZG0JVGltZSBEaXZpc2lvbiBNcGx4CisyOAl4b3IxCVhPUiBETUEgMQorMjkJc2F0YTFsbmsKKzMwCXNhdGExCVNBVEEgSG9zdCAwCisKK1RoZSBmb2xsb3dpbmcgaXMgYSBsaXN0IG9mIHByb3ZpZGVkIElEcyBmb3IgRG92ZToKK0lECUNsb2NrCVBlcmlwaGVyYWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiswCXVzYjAJVVNCIEhvc3QgMAorMQl1c2IxCVVTQiBIb3N0IDEKKzIJZ2UJR2lnYWJpdCBFdGhlcm5ldAorMwlzYXRhCVNBVEEgSG9zdAorNAlwZXgwCVBDSWUgQ250cmwgMAorNQlwZXgxCVBDSWUgQ250cmwgMQorOAlzZGlvMAlTREhDSSBIb3N0IDAKKzkJc2RpbzEJU0RIQ0kgSG9zdCAxCisxMAluYW5kCU5BTkQgQ250cmwKKzExCWNhbWVyYQlDYW1lcmEgQ250cmwKKzEyCWkyczAJSTJTIENudHJsIDAKKzEzCWkyczEJSTJTIENudHJsIDEKKzE1CWNyeXB0bwlDRVNBIGVuZ2luZQorMjEJYWM5NwlBQzk3IENudHJsCisyMglwZG1hCVBlcmlwaGVyYWwgRE1BCisyMwl4b3IwCVhPUiBETUEgMAorMjQJeG9yMQlYT1IgRE1BIDEKKzMwCWdlcGh5CUdpZ2FiaXQgRXRoZXJuZWwgUEhZCitOb3RlOiBnZXBoeSgzMCkgaXMgaW1wbGVtZW50ZWQgYXMgYSBwYXJlbnQgY2xvY2sgb2YgZ2UoMikKKworVGhlIGZvbGxvd2luZyBpcyBhIGxpc3Qgb2YgcHJvdmlkZWQgSURzIGZvciBLaXJrd29vZDoKK0lECUNsb2NrCVBlcmlwaGVyYWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiswCWdlMAlHaWdhYml0IEV0aGVybmV0IDAKKzIJcGV4MAlQQ0llIENudHJsIDAKKzMJdXNiMAlVU0IgSG9zdCAwCis0CXNkaW8JU0RJTyBDbnRybAorNQl0c3UJVHJhbnNwLiBTdHJlYW0gVW5pdAorNglkdW5pdAlTRFJBTSBDbnRybAorNwlydW5pdAlSdW5pdAorOAl4b3IwCVhPUiBETUEgMAorOQlhdWRpbwlJMlMgQ250cmwgMAorMTQJc2F0YTAJU0FUQSBIb3N0IDAKKzE1CXNhdGExCVNBVEEgSG9zdCAxCisxNgl4b3IxCVhPUiBETUEgMQorMTcJY3J5cHRvCUNFU0EgZW5naW5lCisxOAlwZXgxCVBDSWUgQ250cmwgMQorMTkJZ2UxCUdpZ2FiaXQgRXRoZXJuZXQgMQorMjAJdGRtCVRpbWUgRGl2aXNpb24gTXBseAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hhbGwgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisJIm1hcnZlbGwsYXJtYWRhLTM3MC1nYXRpbmctY2xvY2siIC0gZm9yIEFybWFkYSAzNzAgU29DIGNsb2NrIGdhdGluZworCSJtYXJ2ZWxsLGFybWFkYS0zNzUtZ2F0aW5nLWNsb2NrIiAtIGZvciBBcm1hZGEgMzc1IFNvQyBjbG9jayBnYXRpbmcKKwkibWFydmVsbCxhcm1hZGEtMzgwLWdhdGluZy1jbG9jayIgLSBmb3IgQXJtYWRhIDM4MC8zODUgU29DIGNsb2NrIGdhdGluZworCSJtYXJ2ZWxsLGFybWFkYS0zOTAtZ2F0aW5nLWNsb2NrIiAtIGZvciBBcm1hZGEgMzl4IFNvQyBjbG9jayBnYXRpbmcKKwkibWFydmVsbCxhcm1hZGEteHAtZ2F0aW5nLWNsb2NrIiAtIGZvciBBcm1hZGEgWFAgU29DIGNsb2NrIGdhdGluZworCSJtYXJ2ZWxsLGRvdmUtZ2F0aW5nLWNsb2NrIiAtIGZvciBEb3ZlIFNvQyBjbG9jayBnYXRpbmcKKwkibWFydmVsbCxraXJrd29vZC1nYXRpbmctY2xvY2siIC0gZm9yIEtpcmt3b29kIFNvQyBjbG9jayBnYXRpbmcKKy0gcmVnIDogc2hhbGwgYmUgdGhlIHJlZ2lzdGVyIGFkZHJlc3Mgb2YgdGhlIENsb2NrIEdhdGluZyBDb250cm9sIHJlZ2lzdGVyCistICNjbG9jay1jZWxscyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IHNoYWxsIGJlIHNldCB0byAxCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrcyA6IGRlZmF1bHQgcGFyZW50IGNsb2NrIHBoYW5kbGUgKGUuZy4gdGNsaykKKworRXhhbXBsZToKKworZ2F0ZV9jbGs6IGNsb2NrLWdhdGluZy1jb250cm9sQGQwMDM4IHsKKwljb21wYXRpYmxlID0gIm1hcnZlbGwsZG92ZS1nYXRpbmctY2xvY2siOworCXJlZyA9IDwweGQwMDM4IDB4ND47CisJLyogZGVmYXVsdCBwYXJlbnQgY2xvY2sgaXMgdGNsayAqLworCWNsb2NrcyA9IDwmY29yZV9jbGsgMD47CisJI2Nsb2NrLWNlbGxzID0gPDE+OworfTsKKworc2RpbzA6IHNkaW9AOTIwMDAgeworCWNvbXBhdGlibGUgPSAibWFydmVsbCxkb3ZlLXNkaGNpIjsKKwkvKiBnZXQgY2xrIGdhdGUgYml0IDggKHNkaW8wKSAqLworCWNsb2NrcyA9IDwmZ2F0ZV9jbGsgOD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL25zcGlyZS1jbG9jay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbnNwaXJlLWNsb2NrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzNiYzhiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL25zcGlyZS1jbG9jay50eHQKQEAgLTAsMCArMSwyNCBAQAorVEktTlNQSVJFIENsb2NrcworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBWYWxpZCBjb21wYXRpYmxlIHByb3BlcnRpZXMgaW5jbHVkZToKKwkibHNpLG5zcGlyZS1jeC1haGItZGl2aWRlciIgZm9yIHRoZSBBSEIgZGl2aWRlciBpbiB0aGUgQ1ggbW9kZWwKKwkibHNpLG5zcGlyZS1jbGFzc2ljLWFoYi1kaXZpZGVyIiBmb3IgdGhlIEFIQiBkaXZpZGVyIGluIHRoZSBvbGRlciBtb2RlbAorCSJsc2ksbnNwaXJlLWN4LWNsb2NrIiBmb3IgdGhlIGJhc2UgY2xvY2sgaW4gdGhlIENYIG1vZGVsCisJImxzaSxuc3BpcmUtY2xhc3NpYy1jbG9jayIgZm9yIHRoZSBiYXNlIGNsb2NrIGluIHRoZSBvbGRlciBtb2RlbAorCistIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorCXJlZ2lvbi4KKworT3B0aW9uYWw6CistIGNsb2NrczogRm9yIHRoZSAibnNwaXJlLSotYWhiLWRpdmlkZXIiIGNvbXBhdGlibGUgY2xvY2tzLCB0aGlzIGlzIHRoZSBwYXJlbnQKKwljbG9jayB3aGVyZSBpdCBkaXZpZGVzIHRoZSByYXRlIGZyb20uCisKK0V4YW1wbGU6CisKK2FoYl9jbGsgeworCSNjbG9jay1jZWxscyA9IDwwPjsKKwljb21wYXRpYmxlID0gImxzaSxuc3BpcmUtY3gtY2xvY2siOworCXJlZyA9IDwweDkwMEIwMDAwIDB4ND47CisJY2xvY2tzID0gPCZiYXNlX2Nsaz47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL252aWRpYSx0ZWdyYTExNC1jYXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL252aWRpYSx0ZWdyYTExNC1jYXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhY2VhOWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbnZpZGlhLHRlZ3JhMTE0LWNhci50eHQKQEAgLTAsMCArMSw2MyBAQAorTlZJRElBIFRlZ3JhMTE0IENsb2NrIEFuZCBSZXNldCBDb250cm9sbGVyCisKK1RoaXMgYmluZGluZyB1c2VzIHRoZSBjb21tb24gY2xvY2sgYmluZGluZzoKK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKKworVGhlIENBUiAoQ2xvY2sgQW5kIFJlc2V0KSBDb250cm9sbGVyIG9uIFRlZ3JhIGlzIHRoZSBIVyBtb2R1bGUgcmVzcG9uc2libGUKK2ZvciBtdXhpbmcgYW5kIGdhdGluZyBUZWdyYSdzIGNsb2NrcywgYW5kIHNldHRpbmcgdGhlaXIgcmF0ZXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJudmlkaWEsdGVncmExMTQtY2FyIgorLSByZWcgOiBTaG91bGQgY29udGFpbiBDQVIgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKy0gY2xvY2tzIDogU2hvdWxkIGNvbnRhaW4gcGhhbmRsZSBhbmQgY2xvY2sgc3BlY2lmaWVycyBmb3IgdHdvIGNsb2NrczoKKyAgdGhlIDMyIEtIeiAiMzJrX2luIiwgYW5kIHRoZSBib2FyZC1zcGVjaWZpYyBvc2NpbGxhdG9yICJvc2MiLgorLSAjY2xvY2stY2VsbHMgOiBTaG91bGQgYmUgMS4KKyAgSW4gY2xvY2sgY29uc3VtZXJzLCB0aGlzIGNlbGwgcmVwcmVzZW50cyB0aGUgY2xvY2sgSUQgZXhwb3NlZCBieSB0aGUKKyAgQ0FSLiBUaGUgYXNzaWdubWVudHMgbWF5IGJlIGZvdW5kIGluIGhlYWRlciBmaWxlCisgIDxkdC1iaW5kaW5ncy9jbG9jay90ZWdyYTExNC1jYXIuaD4uCistICNyZXNldC1jZWxscyA6IFNob3VsZCBiZSAxLgorICBJbiBjbG9jayBjb25zdW1lcnMsIHRoaXMgY2VsbCByZXByZXNlbnRzIHRoZSBiaXQgbnVtYmVyIGluIHRoZSBDQVIncworICBhcnJheSBvZiBDTEtfUlNUX0NPTlRST0xMRVJfUlNUX0RFVklDRVNfKiByZWdpc3RlcnMuCisKK0V4YW1wbGUgU29DIGluY2x1ZGUgZmlsZToKKworLyB7CisJdGVncmFfY2FyOiBjbG9jayB7CisJCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMTE0LWNhciI7CisJCXJlZyA9IDwweDYwMDA2MDAwIDB4MTAwMD47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKwkJI3Jlc2V0LWNlbGxzID0gPDE+OworCX07CisKKwl1c2JAYzUwMDQwMDAgeworCQljbG9ja3MgPSA8JnRlZ3JhX2NhciBURUdSQTExNF9DTEtfVVNCMj47CisJfTsKK307CisKK0V4YW1wbGUgYm9hcmQgZmlsZToKKworLyB7CisJY2xvY2tzIHsKKwkJY29tcGF0aWJsZSA9ICJzaW1wbGUtYnVzIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCisJCW9zYzogY2xvY2tAMCB7CisJCQljb21wYXRpYmxlID0gImZpeGVkLWNsb2NrIjsKKwkJCXJlZyA9IDwwPjsKKwkJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJCWNsb2NrLWZyZXF1ZW5jeSA9IDwxMjAwMDAwMD47CisJCX07CisKKwkJY2xrXzMyazogY2xvY2tAMSB7CisJCQljb21wYXRpYmxlID0gImZpeGVkLWNsb2NrIjsKKwkJCXJlZyA9IDwxPjsKKwkJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJCWNsb2NrLWZyZXF1ZW5jeSA9IDwzMjc2OD47CisJCX07CisJfTsKKworCSZ0ZWdyYV9jYXIgeworCQljbG9ja3MgPSA8JmNsa18zMms+IDwmb3NjPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9udmlkaWEsdGVncmExMjQtY2FyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9udmlkaWEsdGVncmExMjQtY2FyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjAyZmI0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL252aWRpYSx0ZWdyYTEyNC1jYXIudHh0CkBAIC0wLDAgKzEsMTA3IEBACitOVklESUEgVGVncmExMjQgYW5kIFRlZ3JhMTMyIENsb2NrIEFuZCBSZXNldCBDb250cm9sbGVyCisKK1RoaXMgYmluZGluZyB1c2VzIHRoZSBjb21tb24gY2xvY2sgYmluZGluZzoKK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKKworVGhlIENBUiAoQ2xvY2sgQW5kIFJlc2V0KSBDb250cm9sbGVyIG9uIFRlZ3JhIGlzIHRoZSBIVyBtb2R1bGUgcmVzcG9uc2libGUKK2ZvciBtdXhpbmcgYW5kIGdhdGluZyBUZWdyYSdzIGNsb2NrcywgYW5kIHNldHRpbmcgdGhlaXIgcmF0ZXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJudmlkaWEsdGVncmExMjQtY2FyIiBvciAibnZpZGlhLHRlZ3JhMTMyLWNhciIKKy0gcmVnIDogU2hvdWxkIGNvbnRhaW4gQ0FSIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCistIGNsb2NrcyA6IFNob3VsZCBjb250YWluIHBoYW5kbGUgYW5kIGNsb2NrIHNwZWNpZmllcnMgZm9yIHR3byBjbG9ja3M6CisgIHRoZSAzMiBLSHogIjMya19pbiIsIGFuZCB0aGUgYm9hcmQtc3BlY2lmaWMgb3NjaWxsYXRvciAib3NjIi4KKy0gI2Nsb2NrLWNlbGxzIDogU2hvdWxkIGJlIDEuCisgIEluIGNsb2NrIGNvbnN1bWVycywgdGhpcyBjZWxsIHJlcHJlc2VudHMgdGhlIGNsb2NrIElEIGV4cG9zZWQgYnkgdGhlCisgIENBUi4gVGhlIGFzc2lnbm1lbnRzIG1heSBiZSBmb3VuZCBpbiB0aGUgaGVhZGVyIGZpbGVzCisgIDxkdC1iaW5kaW5ncy9jbG9jay90ZWdyYTEyNC1jYXItY29tbW9uLmg+ICh3aGljaCBjb3ZlcnMgSURzIGNvbW1vbgorICB0byBUZWdyYTEyNCBhbmQgVGVncmExMzIpIGFuZCA8ZHQtYmluZGluZ3MvY2xvY2svdGVncmExMjQtY2FyLmg+CisgIChmb3IgVGVncmExMjQtc3BlY2lmaWMgY2xvY2tzKS4KKy0gI3Jlc2V0LWNlbGxzIDogU2hvdWxkIGJlIDEuCisgIEluIGNsb2NrIGNvbnN1bWVycywgdGhpcyBjZWxsIHJlcHJlc2VudHMgdGhlIGJpdCBudW1iZXIgaW4gdGhlIENBUidzCisgIGFycmF5IG9mIENMS19SU1RfQ09OVFJPTExFUl9SU1RfREVWSUNFU18qIHJlZ2lzdGVycy4KKy0gbnZpZGlhLGV4dGVybmFsLW1lbW9yeS1jb250cm9sbGVyIDogcGhhbmRsZSBvZiB0aGUgRU1DIGRyaXZlci4KKworVGhlIG5vZGUgc2hvdWxkIGNvbnRhaW4gYSAiZW1jLXRpbWluZ3MiIHN1Ym5vZGUgZm9yIGVhY2ggc3VwcG9ydGVkIFJBTSB0eXBlIChzZWUKK2ZpZWxkIFJBTV9DT0RFIGluIHJlZ2lzdGVyIFBNQ19TVFJBUFBJTkdfT1BUX0EpLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciAiZW1jLXRpbWluZ3MiIG5vZGVzIDoKKy0gbnZpZGlhLHJhbS1jb2RlIDogU2hvdWxkIGNvbnRhaW4gdGhlIHZhbHVlIG9mIFJBTV9DT0RFIHRoaXMgdGltaW5nIHNldAorICBpcyB1c2VkIGZvci4KKworRWFjaCAiZW1jLXRpbWluZ3MiIG5vZGUgc2hvdWxkIGNvbnRhaW4gYSAidGltaW5nIiBzdWJub2RlIGZvciBldmVyeSBzdXBwb3J0ZWQKK0VNQyBjbG9jayByYXRlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciAidGltaW5nIiBub2RlcyA6CistIGNsb2NrLWZyZXF1ZW5jeSA6IFNob3VsZCBjb250YWluIHRoZSBtZW1vcnkgY2xvY2sgcmF0ZSB0byB3aGljaCB0aGlzIHRpbWluZworcmVsYXRlcy4KKy0gbnZpZGlhLHBhcmVudC1jbG9jay1mcmVxdWVuY3kgOiBTaG91bGQgY29udGFpbiB0aGUgcmF0ZSBhdCB3aGljaCB0aGUgY3VycmVudAorcGFyZW50IG9mIHRoZSBFTUMgY2xvY2sgc2hvdWxkIGJlIHJ1bm5pbmcgYXQgdGhpcyB0aW1pbmcuCistIGNsb2NrcyA6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKyAgU2VlIC4uL2Nsb2Nrcy9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCistIGNsb2NrLW5hbWVzIDogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgLSBlbWMtcGFyZW50IDogdGhlIGNsb2NrIHRoYXQgc2hvdWxkIGJlIHRoZSBwYXJlbnQgb2YgdGhlIEVNQyBjbG9jayBhdCB0aGlzCit0aW1pbmcuCisKK0V4YW1wbGUgU29DIGluY2x1ZGUgZmlsZToKKworLyB7CisJdGVncmFfY2FyOiBjbG9ja0A2MDAwNjAwMCB7CisJCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMTI0LWNhciI7CisJCXJlZyA9IDwweDYwMDA2MDAwIDB4MTAwMD47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKwkJI3Jlc2V0LWNlbGxzID0gPDE+OworCQludmlkaWEsZXh0ZXJuYWwtbWVtb3J5LWNvbnRyb2xsZXIgPSA8JmVtYz47CisJfTsKKworCXVzYkBjNTAwNDAwMCB7CisJCWNsb2NrcyA9IDwmdGVncmFfY2FyIFRFR1JBMTI0X0NMS19VU0IyPjsKKwl9OworfTsKKworRXhhbXBsZSBib2FyZCBmaWxlOgorCisvIHsKKwljbG9ja3MgeworCQljb21wYXRpYmxlID0gInNpbXBsZS1idXMiOworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJb3NjOiBjbG9ja0AwIHsKKwkJCWNvbXBhdGlibGUgPSAiZml4ZWQtY2xvY2siOworCQkJcmVnID0gPDA+OworCQkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQkJY2xvY2stZnJlcXVlbmN5ID0gPDExMjQwMDAwMD47CisJCX07CisKKwkJY2xrXzMyazogY2xvY2tAMSB7CisJCQljb21wYXRpYmxlID0gImZpeGVkLWNsb2NrIjsKKwkJCXJlZyA9IDwxPjsKKwkJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJCWNsb2NrLWZyZXF1ZW5jeSA9IDwzMjc2OD47CisJCX07CisJfTsKKworCSZ0ZWdyYV9jYXIgeworCQljbG9ja3MgPSA8JmNsa18zMms+IDwmb3NjPjsKKwl9OworCisJY2xvY2tANjAwMDYwMDAgeworCQllbWMtdGltaW5ncy0zIHsKKwkJCW52aWRpYSxyYW0tY29kZSA9IDwzPjsKKworCQkJdGltaW5nLTEyNzUwMDAwIHsKKwkJCQljbG9jay1mcmVxdWVuY3kgPSA8MTI3NTAwMDA+OworCQkJCW52aWRpYSxwYXJlbnQtY2xvY2stZnJlcXVlbmN5ID0gPDQwODAwMDAwMD47CisJCQkJY2xvY2tzID0gPCZ0ZWdyYV9jYXIgVEVHUkExMjRfQ0xLX1BMTF9QPjsKKwkJCQljbG9jay1uYW1lcyA9ICJlbWMtcGFyZW50IjsKKwkJCX07CisJCQl0aW1pbmctMjA0MDAwMDAgeworCQkJCWNsb2NrLWZyZXF1ZW5jeSA9IDwyMDQwMDAwMD47CisJCQkJbnZpZGlhLHBhcmVudC1jbG9jay1mcmVxdWVuY3kgPSA8NDA4MDAwMDAwPjsKKwkJCQljbG9ja3MgPSA8JnRlZ3JhX2NhciBURUdSQTEyNF9DTEtfUExMX1A+OworCQkJCWNsb2NrLW5hbWVzID0gImVtYy1wYXJlbnQiOworCQkJfTsKKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9udmlkaWEsdGVncmExMjQtZGZsbC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbnZpZGlhLHRlZ3JhMTI0LWRmbGwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlN2U1ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbnZpZGlhLHRlZ3JhMTI0LWRmbGwudHh0CkBAIC0wLDAgKzEsNzkgQEAKK05WSURJQSBUZWdyYTEyNCBERkxMIEZDUFUgY2xvY2tzb3VyY2UKKworVGhpcyBiaW5kaW5nIHVzZXMgdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nOgorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCitUaGUgREZMTCBJUCBibG9jayBvbiBUZWdyYSBpcyBhIHJvb3QgY2xvY2tzb3VyY2UgZGVzaWduZWQgZm9yIGNsb2NraW5nCit0aGUgZmFzdCBDUFUgY2x1c3Rlci4gSXQgY29uc2lzdHMgb2YgYSBmcmVlLXJ1bm5pbmcgdm9sdGFnZSBjb250cm9sbGVkCitvc2NpbGxhdG9yIGNvbm5lY3RlZCB0byB0aGUgQ1BVIHZvbHRhZ2UgcmFpbCAoVkREX0NQVSksIGFuZCBhIGNsb3NlZCBsb29wCitjb250cm9sIG1vZHVsZSB0aGF0IHdpbGwgYXV0b21hdGljYWxseSBhZGp1c3QgdGhlIFZERF9DUFUgdm9sdGFnZSBieQorY29tbXVuaWNhdGluZyB3aXRoIGFuIG9mZi1jaGlwIFBNSUMgZWl0aGVyIHZpYSBhbiBJMkMgYnVzIG9yIHZpYSBQV00gc2lnbmFscy4KK0N1cnJlbnRseSBvbmx5IHRoZSBJMkMgbW9kZSBpcyBzdXBwb3J0ZWQgYnkgdGhlc2UgYmluZGluZ3MuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgIm52aWRpYSx0ZWdyYTEyNC1kZmxsIgorLSByZWcgOiBEZWZpbmVzIHRoZSBmb2xsb3dpbmcgc2V0IG9mIHJlZ2lzdGVycywgaW4gdGhlIG9yZGVyIGxpc3RlZDoKKyAgICAgICAgLSByZWdpc3RlcnMgZm9yIHRoZSBERkxMIGNvbnRyb2wgbG9naWMuCisgICAgICAgIC0gcmVnaXN0ZXJzIGZvciB0aGUgSTJDIG91dHB1dCBsb2dpYy4KKyAgICAgICAgLSByZWdpc3RlcnMgZm9yIHRoZSBpbnRlZ3JhdGVkIEkyQyBtYXN0ZXIgY29udHJvbGxlci4KKyAgICAgICAgLSBsb29rLXVwIHRhYmxlIFJBTSBmb3Igdm9sdGFnZSByZWdpc3RlciB2YWx1ZXMuCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIHRoZSBERkxMIGJsb2NrIGludGVycnVwdC4KKy0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCisgIFNlZSBjbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCistIGNsb2NrLW5hbWVzOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAtIHNvYzogQ2xvY2sgc291cmNlIGZvciB0aGUgREZMTCBjb250cm9sIGxvZ2ljLgorICAtIHJlZjogVGhlIGNsb3NlZCBsb29wIHJlZmVyZW5jZSBjbG9jaworICAtIGkyYzogQ2xvY2sgc291cmNlIGZvciB0aGUgaW50ZWdyYXRlZCBJMkMgbWFzdGVyLgorLSByZXNldHM6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiByZXNldC1uYW1lcy4KKyAgU2VlIC4uL3Jlc2V0L3Jlc2V0LnR4dCBmb3IgZGV0YWlscy4KKy0gcmVzZXQtbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIC0gZHZjbzogUmVzZXQgY29udHJvbCBmb3IgdGhlIERGTEwgRFZDTy4KKy0gI2Nsb2NrLWNlbGxzOiBNdXN0IGJlIDAuCistIGNsb2NrLW91dHB1dC1uYW1lczogTmFtZSBvZiB0aGUgY2xvY2sgb3V0cHV0LgorLSB2ZGQtY3B1LXN1cHBseTogUmVndWxhdG9yIGZvciB0aGUgQ1BVIHZvbHRhZ2UgcmFpbCB0aGF0IHRoZSBERkxMCisgIGhhcmR3YXJlIHdpbGwgc3RhcnQgY29udHJvbGxpbmcuIFRoZSByZWd1bGF0b3Igd2lsbCBiZSBxdWVyaWVkIGZvcgorICB0aGUgSTJDIHJlZ2lzdGVyLCBjb250cm9sIHZhbHVlcyBhbmQgc3VwcG9ydGVkIHZvbHRhZ2VzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciB0aGUgY29udHJvbCBsb29wIHBhcmFtZXRlcnM6CistIG52aWRpYSxzYW1wbGUtcmF0ZTogU2FtcGxlIHJhdGUgb2YgdGhlIERGTEwgY29udHJvbCBsb29wLgorLSBudmlkaWEsZHJvb3AtY3RybDogU2VlIHRoZSByZWdpc3RlciBDTF9EVkZTX0RST09QX0NUUkwgaW4gdGhlIFRSTS4KKy0gbnZpZGlhLGZvcmNlLW1vZGU6IFNlZSB0aGUgZmllbGQgREZMTF9QQVJBTVNfRk9SQ0VfTU9ERSBpbiB0aGUgVFJNLgorLSBudmlkaWEsY2Y6IE51bWVyaWMgdmFsdWUsIHNlZSB0aGUgZmllbGQgREZMTF9QQVJBTVNfQ0ZfUEFSQU0gaW4gdGhlIFRSTS4KKy0gbnZpZGlhLGNpOiBOdW1lcmljIHZhbHVlLCBzZWUgdGhlIGZpZWxkIERGTExfUEFSQU1TX0NJX1BBUkFNIGluIHRoZSBUUk0uCistIG52aWRpYSxjZzogTnVtZXJpYyB2YWx1ZSwgc2VlIHRoZSBmaWVsZCBERkxMX1BBUkFNU19DR19QQVJBTSBpbiB0aGUgVFJNLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzIGZvciB0aGUgY29udHJvbCBsb29wIHBhcmFtZXRlcnM6CistIG52aWRpYSxjZy1zY2FsZTogQm9vbGVhbiB2YWx1ZSwgc2VlIHRoZSBmaWVsZCBERkxMX1BBUkFNU19DR19TQ0FMRSBpbiB0aGUgVFJNLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBJMkMgbW9kZToKKy0gbnZpZGlhLGkyYy1mcy1yYXRlOiBJMkMgdHJhbnNmZXIgcmF0ZSwgaWYgdXNpbmcgZnVsbCBzcGVlZCBtb2RlLgorCitFeGFtcGxlOgorCitjbG9ja0AwLDcwMTEwMDAwIHsKKyAgICAgICAgY29tcGF0aWJsZSA9ICJudmlkaWEsdGVncmExMjQtZGZsbCI7CisgICAgICAgIHJlZyA9IDwwIDB4NzAxMTAwMDAgMCAweDEwMD4sIC8qIERGTEwgY29udHJvbCAqLworICAgICAgICAgICAgICA8MCAweDcwMTEwMDAwIDAgMHgxMDA+LCAvKiBJMkMgb3V0cHV0IGNvbnRyb2wgKi8KKyAgICAgICAgICAgICAgPDAgMHg3MDExMDEwMCAwIDB4MTAwPiwgLyogSW50ZWdyYXRlZCBJMkMgY29udHJvbGxlciAqLworICAgICAgICAgICAgICA8MCAweDcwMTEwMjAwIDAgMHgxMDA+OyAvKiBMb29rLXVwIHRhYmxlIFJBTSAqLworICAgICAgICBpbnRlcnJ1cHRzID0gPEdJQ19TUEkgNjIgSVJRX1RZUEVfTEVWRUxfSElHSD47CisgICAgICAgIGNsb2NrcyA9IDwmdGVncmFfY2FyIFRFR1JBMTI0X0NMS19ERkxMX1NPQz4sCisgICAgICAgICAgICAgICAgIDwmdGVncmFfY2FyIFRFR1JBMTI0X0NMS19ERkxMX1JFRj4sCisgICAgICAgICAgICAgICAgIDwmdGVncmFfY2FyIFRFR1JBMTI0X0NMS19JMkM1PjsKKyAgICAgICAgY2xvY2stbmFtZXMgPSAic29jIiwgInJlZiIsICJpMmMiOworICAgICAgICByZXNldHMgPSA8JnRlZ3JhX2NhciBURUdSQTEyNF9SU1RfREZMTF9EVkNPPjsKKyAgICAgICAgcmVzZXQtbmFtZXMgPSAiZHZjbyI7CisgICAgICAgICNjbG9jay1jZWxscyA9IDwwPjsKKyAgICAgICAgY2xvY2stb3V0cHV0LW5hbWVzID0gImRmbGxDUFVfb3V0IjsKKyAgICAgICAgdmRkLWNwdS1zdXBwbHkgPSA8JnZkZF9jcHU+OworICAgICAgICBzdGF0dXMgPSAib2theSI7CisKKyAgICAgICAgbnZpZGlhLHNhbXBsZS1yYXRlID0gPDEyNTAwPjsKKyAgICAgICAgbnZpZGlhLGRyb29wLWN0cmwgPSA8MHgwMDAwMGYwMD47CisgICAgICAgIG52aWRpYSxmb3JjZS1tb2RlID0gPDE+OworICAgICAgICBudmlkaWEsY2YgPSA8MTA+OworICAgICAgICBudmlkaWEsY2kgPSA8MD47CisgICAgICAgIG52aWRpYSxjZyA9IDwyPjsKKworICAgICAgICBudmlkaWEsaTJjLWZzLXJhdGUgPSA8NDAwMDAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbnZpZGlhLHRlZ3JhMjAtY2FyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9udmlkaWEsdGVncmEyMC1jYXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNTkwMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svbnZpZGlhLHRlZ3JhMjAtY2FyLnR4dApAQCAtMCwwICsxLDYzIEBACitOVklESUEgVGVncmEyMCBDbG9jayBBbmQgUmVzZXQgQ29udHJvbGxlcgorCitUaGlzIGJpbmRpbmcgdXNlcyB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmc6CitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CisKK1RoZSBDQVIgKENsb2NrIEFuZCBSZXNldCkgQ29udHJvbGxlciBvbiBUZWdyYSBpcyB0aGUgSFcgbW9kdWxlIHJlc3BvbnNpYmxlCitmb3IgbXV4aW5nIGFuZCBnYXRpbmcgVGVncmEncyBjbG9ja3MsIGFuZCBzZXR0aW5nIHRoZWlyIHJhdGVzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIDoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAibnZpZGlhLHRlZ3JhMjAtY2FyIgorLSByZWcgOiBTaG91bGQgY29udGFpbiBDQVIgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKy0gY2xvY2tzIDogU2hvdWxkIGNvbnRhaW4gcGhhbmRsZSBhbmQgY2xvY2sgc3BlY2lmaWVycyBmb3IgdHdvIGNsb2NrczoKKyAgdGhlIDMyIEtIeiAiMzJrX2luIiwgYW5kIHRoZSBib2FyZC1zcGVjaWZpYyBvc2NpbGxhdG9yICJvc2MiLgorLSAjY2xvY2stY2VsbHMgOiBTaG91bGQgYmUgMS4KKyAgSW4gY2xvY2sgY29uc3VtZXJzLCB0aGlzIGNlbGwgcmVwcmVzZW50cyB0aGUgY2xvY2sgSUQgZXhwb3NlZCBieSB0aGUKKyAgQ0FSLiBUaGUgYXNzaWdubWVudHMgbWF5IGJlIGZvdW5kIGluIGhlYWRlciBmaWxlCisgIDxkdC1iaW5kaW5ncy9jbG9jay90ZWdyYTIwLWNhci5oPi4KKy0gI3Jlc2V0LWNlbGxzIDogU2hvdWxkIGJlIDEuCisgIEluIGNsb2NrIGNvbnN1bWVycywgdGhpcyBjZWxsIHJlcHJlc2VudHMgdGhlIGJpdCBudW1iZXIgaW4gdGhlIENBUidzCisgIGFycmF5IG9mIENMS19SU1RfQ09OVFJPTExFUl9SU1RfREVWSUNFU18qIHJlZ2lzdGVycy4KKworRXhhbXBsZSBTb0MgaW5jbHVkZSBmaWxlOgorCisvIHsKKwl0ZWdyYV9jYXI6IGNsb2NrIHsKKwkJY29tcGF0aWJsZSA9ICJudmlkaWEsdGVncmEyMC1jYXIiOworCQlyZWcgPSA8MHg2MDAwNjAwMCAweDEwMDA+OworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJCSNyZXNldC1jZWxscyA9IDwxPjsKKwl9OworCisJdXNiQGM1MDA0MDAwIHsKKwkJY2xvY2tzID0gPCZ0ZWdyYV9jYXIgVEVHUkEyMF9DTEtfVVNCMj47CisJfTsKK307CisKK0V4YW1wbGUgYm9hcmQgZmlsZToKKworLyB7CisJY2xvY2tzIHsKKwkJY29tcGF0aWJsZSA9ICJzaW1wbGUtYnVzIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCisJCW9zYzogY2xvY2tAMCB7CisJCQljb21wYXRpYmxlID0gImZpeGVkLWNsb2NrIjsKKwkJCXJlZyA9IDwwPjsKKwkJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJCWNsb2NrLWZyZXF1ZW5jeSA9IDwxMjAwMDAwMD47CisJCX07CisKKwkJY2xrXzMyazogY2xvY2tAMSB7CisJCQljb21wYXRpYmxlID0gImZpeGVkLWNsb2NrIjsKKwkJCXJlZyA9IDwxPjsKKwkJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJCWNsb2NrLWZyZXF1ZW5jeSA9IDwzMjc2OD47CisJCX07CisJfTsKKworCSZ0ZWdyYV9jYXIgeworCQljbG9ja3MgPSA8JmNsa18zMms+IDwmb3NjPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9udmlkaWEsdGVncmEzMC1jYXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL252aWRpYSx0ZWdyYTMwLWNhci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM2MThjZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9udmlkaWEsdGVncmEzMC1jYXIudHh0CkBAIC0wLDAgKzEsNjMgQEAKK05WSURJQSBUZWdyYTMwIENsb2NrIEFuZCBSZXNldCBDb250cm9sbGVyCisKK1RoaXMgYmluZGluZyB1c2VzIHRoZSBjb21tb24gY2xvY2sgYmluZGluZzoKK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKKworVGhlIENBUiAoQ2xvY2sgQW5kIFJlc2V0KSBDb250cm9sbGVyIG9uIFRlZ3JhIGlzIHRoZSBIVyBtb2R1bGUgcmVzcG9uc2libGUKK2ZvciBtdXhpbmcgYW5kIGdhdGluZyBUZWdyYSdzIGNsb2NrcywgYW5kIHNldHRpbmcgdGhlaXIgcmF0ZXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJudmlkaWEsdGVncmEzMC1jYXIiCistIHJlZyA6IFNob3VsZCBjb250YWluIENBUiByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorLSBjbG9ja3MgOiBTaG91bGQgY29udGFpbiBwaGFuZGxlIGFuZCBjbG9jayBzcGVjaWZpZXJzIGZvciB0d28gY2xvY2tzOgorICB0aGUgMzIgS0h6ICIzMmtfaW4iLCBhbmQgdGhlIGJvYXJkLXNwZWNpZmljIG9zY2lsbGF0b3IgIm9zYyIuCistICNjbG9jay1jZWxscyA6IFNob3VsZCBiZSAxLgorICBJbiBjbG9jayBjb25zdW1lcnMsIHRoaXMgY2VsbCByZXByZXNlbnRzIHRoZSBjbG9jayBJRCBleHBvc2VkIGJ5IHRoZQorICBDQVIuIFRoZSBhc3NpZ25tZW50cyBtYXkgYmUgZm91bmQgaW4gaGVhZGVyIGZpbGUKKyAgPGR0LWJpbmRpbmdzL2Nsb2NrL3RlZ3JhMzAtY2FyLmg+LgorLSAjcmVzZXQtY2VsbHMgOiBTaG91bGQgYmUgMS4KKyAgSW4gY2xvY2sgY29uc3VtZXJzLCB0aGlzIGNlbGwgcmVwcmVzZW50cyB0aGUgYml0IG51bWJlciBpbiB0aGUgQ0FSJ3MKKyAgYXJyYXkgb2YgQ0xLX1JTVF9DT05UUk9MTEVSX1JTVF9ERVZJQ0VTXyogcmVnaXN0ZXJzLgorCitFeGFtcGxlIFNvQyBpbmNsdWRlIGZpbGU6CisKKy8geworCXRlZ3JhX2NhcjogY2xvY2sgeworCQljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTMwLWNhciI7CisJCXJlZyA9IDwweDYwMDA2MDAwIDB4MTAwMD47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKwkJI3Jlc2V0LWNlbGxzID0gPDE+OworCX07CisKKwl1c2JAYzUwMDQwMDAgeworCQljbG9ja3MgPSA8JnRlZ3JhX2NhciBURUdSQTMwX0NMS19VU0IyPjsKKwl9OworfTsKKworRXhhbXBsZSBib2FyZCBmaWxlOgorCisvIHsKKwljbG9ja3MgeworCQljb21wYXRpYmxlID0gInNpbXBsZS1idXMiOworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJb3NjOiBjbG9ja0AwIHsKKwkJCWNvbXBhdGlibGUgPSAiZml4ZWQtY2xvY2siOworCQkJcmVnID0gPDA+OworCQkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQkJY2xvY2stZnJlcXVlbmN5ID0gPDEyMDAwMDAwPjsKKwkJfTsKKworCQljbGtfMzJrOiBjbG9ja0AxIHsKKwkJCWNvbXBhdGlibGUgPSAiZml4ZWQtY2xvY2siOworCQkJcmVnID0gPDE+OworCQkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQkJY2xvY2stZnJlcXVlbmN5ID0gPDMyNzY4PjsKKwkJfTsKKwl9OworCisJJnRlZ3JhX2NhciB7CisJCWNsb2NrcyA9IDwmY2xrXzMyaz4gPCZvc2M+OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3Bpc3RhY2hpby1jbG9jay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcGlzdGFjaGlvLWNsb2NrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjhkYjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3Bpc3RhY2hpby1jbG9jay50eHQKQEAgLTAsMCArMSwxMjMgQEAKK0ltYWdpbmF0aW9uIFRlY2hub2xvZ2llcyBQaXN0YWNoaW8gU29DIGNsb2NrIGNvbnRyb2xsZXJzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQaXN0YWNoaW8gaGFzIGZvdXIgY2xvY2sgY29udHJvbGxlcnMgKGNvcmUgY2xvY2ssIHBlcmlwaGVyYWwgY2xvY2ssIHBlcmlwaGVyYWwKK2dlbmVyYWwgY29udHJvbCwgYW5kIHRvcCBnZW5lcmFsIGNvbnRyb2wpIHdoaWNoIGFyZSBpbnN0YW50aWF0ZWQgaW5kaXZpZHVhbGx5Citmcm9tIHRoZSBkZXZpY2UtdHJlZS4KKworRXh0ZXJuYWwgY2xvY2tzOgorLS0tLS0tLS0tLS0tLS0tLQorCitUaGVyZSBhcmUgdGhyZWUgZXh0ZXJuYWwgaW5wdXRzIHRvIHRoZSBjbG9jayBjb250cm9sbGVycyB3aGljaCBzaG91bGQgYmUKK2RlZmluZWQgd2l0aCB0aGUgZm9sbG93aW5nIGNsb2NrLW91dHB1dC1uYW1lczoKKy0gInh0YWwiOiBFeHRlcm5hbCA1Mk1oeiBvc2NpbGxhdG9yIChyZXF1aXJlZCkKKy0gImF1ZGlvX2Nsa19pbiI6IEFsdGVybmF0ZSBhdWRpbyByZWZlcmVuY2UgY2xvY2sgKG9wdGlvbmFsKQorLSAiZW5ldF9jbGtfaW4iOiBBbHRlcm5hdGUgZXRoZXJuZXQgUEhZIGNsb2NrIChvcHRpb25hbCkKKworQ29yZSBjbG9jayBjb250cm9sbGVyOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgY29yZSBjbG9jayBjb250cm9sbGVyIGdlbmVyYXRlcyBjbG9ja3MgZm9yIHRoZSBDUFUsIFJQVSAoV2lGaSArIEJUCitjby1wcm9jZXNzb3IpLCBhdWRpbywgYW5kIHNldmVyYWwgcGVyaXBoZXJhbHMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IE11c3QgYmUgImltZyxwaXN0YWNoaW8tY2xrIi4KKy0gcmVnOiBNdXN0IGNvbnRhaW4gdGhlIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBjb3JlIGNsb2NrIGNvbnRyb2xsZXIuCistICNjbG9jay1jZWxsczogTXVzdCBiZSAxLiAgVGhlIHNpbmdsZSBjZWxsIGlzIHRoZSBjbG9jayBpZGVudGlmaWVyLgorICBTZWUgZHQtYmluZGluZ3MvY2xvY2svcGlzdGFjaGlvLWNsay5oIGZvciB0aGUgbGlzdCBvZiB2YWxpZCBpZGVudGlmaWVycy4KKy0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggY2xvY2sgaW4gY2xvY2stbmFtZXMuCistIGNsb2NrLW5hbWVzOiBNdXN0IGluY2x1ZGUgInh0YWwiIChzZWUgIkV4dGVybmFsIGNsb2NrcyIpIGFuZAorICAiYXVkaW9fY2xrX2luX2dhdGUiLCAiZW5ldF9jbGtfaW5fZ2F0ZSIgd2hpY2ggYXJlIGdlbmVyYXRlZCBieSB0aGUKKyAgdG9wLWxldmVsIGdlbmVyYWwgY29udHJvbC4KKworRXhhbXBsZToKKwljbGtfY29yZTogY2xvY2stY29udHJvbGxlckAxODE0NDAwMCB7CisJCWNvbXBhdGlibGUgPSAiaW1nLHBpc3RhY2hpby1jbGsiOworCQlyZWcgPSA8MHgxODE0NDAwMCAweDgwMD47CisJCWNsb2NrcyA9IDwmeHRhbD4sIDwmY3JfdG9wIEVYVF9DTEtfQVVESU9fSU4+LAorCQkJIDwmY3JfdG9wIEVYVF9DTEtfRU5FVF9JTj47CisJCWNsb2NrLW5hbWVzID0gInh0YWwiLCAiYXVkaW9fY2xrX2luX2dhdGUiLCAiZW5ldF9jbGtfaW5fZ2F0ZSI7CisKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCX07CisKK1BlcmlwaGVyYWwgY2xvY2sgY29udHJvbGxlcjoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHBlcmlwaGVyYWwgY2xvY2sgY29udHJvbGxlciBnZW5lcmF0ZXMgY2xvY2tzIGZvciB0aGUgRERSLCBST00sIGFuZCBvdGhlcgorcGVyaXBoZXJhbHMuICBUaGUgcGVyaXBoZXJhbCBzeXN0ZW0gY2xvY2sgKCJwZXJpcGhfc3lzIikgZ2VuZXJhdGVkIGJ5IHRoZSBjb3JlCitjbG9jayBjb250cm9sbGVyIGlzIHRoZSBpbnB1dCBjbG9jayB0byB0aGUgcGVyaXBoZXJhbCBjbG9jayBjb250cm9sbGVyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBNdXN0IGJlICJpbWcscGlzdGFjaGlvLXBlcmlwaC1jbGsiLgorLSByZWc6IE11c3QgY29udGFpbiB0aGUgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHBlcmlwaGVyYWwgY2xvY2sKKyAgY29udHJvbGxlci4KKy0gI2Nsb2NrLWNlbGxzOiBNdXN0IGJlIDEuICBUaGUgc2luZ2xlIGNlbGwgaXMgdGhlIGNsb2NrIGlkZW50aWZpZXIuCisgIFNlZSBkdC1iaW5kaW5ncy9jbG9jay9waXN0YWNoaW8tY2xrLmggZm9yIHRoZSBsaXN0IG9mIHZhbGlkIGlkZW50aWZpZXJzLgorLSBjbG9ja3M6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBjbG9jayBpbiBjbG9jay1uYW1lcy4KKy0gY2xvY2stbmFtZXM6IE11c3QgaW5jbHVkZSAicGVyaXBoX3N5cyIsIHRoZSBwZXJpcGhlcmFsIHN5c3RlbSBjbG9jayBnZW5lcmF0ZWQKKyAgYnkgdGhlIGNvcmUgY2xvY2sgY29udHJvbGxlci4KKworRXhhbXBsZToKKwljbGtfcGVyaXBoOiBjbG9jay1jb250cm9sbGVyQDE4MTQ0ODAwIHsKKwkJY29tcGF0aWJsZSA9ICJpbWcscGlzdGFjaGlvLWNsay1wZXJpcGgiOworCQlyZWcgPSA8MHgxODE0NDgwMCAweDgwMD47CisJCWNsb2NrcyA9IDwmY2xrX2NvcmUgQ0xLX1BFUklQSF9TWVM+OworCQljbG9jay1uYW1lcyA9ICJwZXJpcGhfc3lzIjsKKworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJfTsKKworUGVyaXBoZXJhbCBnZW5lcmFsIGNvbnRyb2w6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHBlcmlwaGVyYWwgZ2VuZXJhbCBjb250cm9sIGJsb2NrIGdlbmVyYXRlcyBzeXN0ZW0gaW50ZXJmYWNlIGNsb2NrcyBhbmQKK3Jlc2V0cyBmb3IgdmFyaW91cyBwZXJpcGhlcmFscy4gIEl0IGFsc28gY29udGFpbnMgbWlzY2VsbGFuZW91cyBwZXJpcGhlcmFsCitjb250cm9sIHJlZ2lzdGVycy4gIFRoZSBzeXN0ZW0gY2xvY2sgKCJzeXMiKSBnZW5lcmF0ZWQgYnkgdGhlIHBlcmlwaGVyYWwgY2xvY2sKK2NvbnRyb2xsZXIgaXMgdGhlIGlucHV0IGNsb2NrIHRvIHRoZSBzeXN0ZW0gY2xvY2sgY29udHJvbGxlci4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogTXVzdCBpbmNsdWRlICJpbWcscGlzdGFjaGlvLXBlcmlwaC1jciIgYW5kICJzeXNjb24iLgorLSByZWc6IE11c3QgY29udGFpbiB0aGUgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHBlcmlwaGVyYWwgZ2VuZXJhbAorICBjb250cm9sIHJlZ2lzdGVycy4KKy0gI2Nsb2NrLWNlbGxzOiBNdXN0IGJlIDEuICBUaGUgc2luZ2xlIGNlbGwgaXMgdGhlIGNsb2NrIGlkZW50aWZpZXIuCisgIFNlZSBkdC1iaW5kaW5ncy9jbG9jay9waXN0YWNoaW8tY2xrLmggZm9yIHRoZSBsaXN0IG9mIHZhbGlkIGlkZW50aWZpZXJzLgorLSBjbG9ja3M6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBjbG9jayBpbiBjbG9jay1uYW1lcy4KKy0gY2xvY2stbmFtZXM6IE11c3QgaW5jbHVkZSAic3lzIiwgdGhlIHN5c3RlbSBjbG9jayBnZW5lcmF0ZWQgYnkgdGhlIHBlcmlwaGVyYWwKKyAgY2xvY2sgY29udHJvbGxlci4KKworRXhhbXBsZToKKwljcl9wZXJpcGg6IHN5c2NvbkAxODE0NDgwMCB7CisJCWNvbXBhdGlibGUgPSAiaW1nLHBpc3RhY2hpby1jci1wZXJpcGgiLCAic3lzY29uIjsKKwkJcmVnID0gPDB4MTgxNDgwMDAgMHgxMDAwPjsKKwkJY2xvY2tzID0gPCZjbG9ja19wZXJpcGggUEVSSVBIX0NMS19QRVJJUEhfU1lTPjsKKwkJY2xvY2stbmFtZXMgPSAic3lzIjsKKworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJfTsKKworVG9wLWxldmVsIGdlbmVyYWwgY29udHJvbDoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSB0b3AtbGV2ZWwgZ2VuZXJhbCBjb250cm9sIGJsb2NrIGNvbnRhaW5zIG1pc2NlbGxhbmVvdXMgY29udHJvbCByZWdpc3RlcnMgYW5kCitnYXRlcyBmb3IgdGhlIGV4dGVybmFsIGNsb2NrcyAiYXVkaW9fY2xrX2luIiBhbmQgImVuZXRfY2xrX2luIi4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogTXVzdCBpbmNsdWRlICJpbWcscGlzdGFjaGlvLWNyLXRvcCIgYW5kICJzeXNjb24iLgorLSByZWc6IE11c3QgY29udGFpbiB0aGUgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHRvcC1sZXZlbAorICBjb250cm9sIHJlZ2lzdGVycy4KKy0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggY2xvY2sgaW4gY2xvY2stbmFtZXMuCistIGNsb2NrLW5hbWVzOiBUd28gb3B0aW9uYWwgY2xvY2tzLCAiYXVkaW9fY2xrX2luIiBhbmQgImVuZXRfY2xrX2luIiAoc2VlCisgICJFeHRlcm5hbCBjbG9ja3MiKS4KKy0gI2Nsb2NrLWNlbGxzOiBNdXN0IGJlIDEuICBUaGUgc2luZ2xlIGNlbGwgaXMgdGhlIGNsb2NrIGlkZW50aWZpZXIuCisgIFNlZSBkdC1iaW5kaW5ncy9jbG9jay9waXN0YWNoaW8tY2xrLmggZm9yIHRoZSBsaXN0IG9mIHZhbGlkIGlkZW50aWZpZXJzLgorCitFeGFtcGxlOgorCWNyX3RvcDogc3lzY29uQDE4MTQ0ODAwIHsKKwkJY29tcGF0aWJsZSA9ICJpbWcscGlzdGFjaGlvLWNyLXRvcCIsICJzeXNjb24iOworCQlyZWcgPSA8MHgxODE0OTAwMCAweDIwMD47CisJCWNsb2NrcyA9IDwmYXVkaW9fcmVmY2xrPiwgPCZleHRfZW5ldF9pbj47CisJCWNsb2NrLW5hbWVzID0gImF1ZGlvX2Nsa19pbiIsICJlbmV0X2Nsa19pbiI7CisKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcHJpbWEyLWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9wcmltYTItY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwMTY5NzkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcHJpbWEyLWNsb2NrLnR4dApAQCAtMCwwICsxLDczIEBACisqIENsb2NrIGJpbmRpbmdzIGZvciBDU1IgU2lSRnByaW1hSUkKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJzaXJmLHByaW1hMi1jbGtjIgorLSByZWc6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0CistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIGNsb2NrIGNvbnRyb2xsZXIgaW50ZXJydXB0CistICNjbG9jay1jZWxsczogU2hvdWxkIGJlIDwxPgorCitUaGUgY2xvY2sgY29uc3VtZXIgc2hvdWxkIHNwZWNpZnkgdGhlIGRlc2lyZWQgY2xvY2sgYnkgaGF2aW5nIHRoZSBjbG9jaworSUQgaW4gaXRzICJjbG9ja3MiIHBoYW5kbGUgY2VsbC4gIFRoZSBmb2xsb3dpbmcgaXMgYSBmdWxsIGxpc3Qgb2YgcHJpbWEyCitjbG9ja3MgYW5kIElEcy4KKworCUNsb2NrCQkJSUQKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlydGMJCQkwCisJb3NjICAgICAgICAgICAgIAkxCisJcGxsMSAgICAgICAgICAgIAkyCisJcGxsMiAgICAgICAgICAgIAkzCisJcGxsMyAgICAgICAgICAgIAk0CisJbWVtICAgICAgICAgICAgIAk1CisJc3lzICAgICAgICAgICAgIAk2CisJc2VjdXJpdHkgICAgICAgIAk3CisJZHNwICAgICAgICAgICAgIAk4CisJZ3BzICAgICAgICAgICAgIAk5CisJbWYgICAgICAgICAgICAgIAkxMAorCWlvICAgICAgICAgICAgICAJMTEKKwljcHUgICAgICAgICAgICAgCTEyCisJdWFydDAgICAgICAgICAgIAkxMworCXVhcnQxICAgICAgICAgICAJMTQKKwl1YXJ0MiAgICAgICAgICAgCTE1CisJdHNjICAgICAgICAgICAgIAkxNgorCWkyYzAgICAgICAgICAgICAJMTcKKwlpMmMxICAgICAgICAgICAgCTE4CisJc3BpMCAgICAgICAgICAgIAkxOQorCXNwaTEgICAgICAgICAgICAJMjAKKwlwd21jICAgICAgICAgICAgCTIxCisJZWZ1c2UgICAgICAgICAgIAkyMgorCXB1bHNlICAgICAgICAgICAJMjMKKwlkbWFjMCAgICAgICAgICAgCTI0CisJZG1hYzEgICAgICAgICAgIAkyNQorCW5hbmQgICAgICAgICAgICAJMjYKKwlhdWRpbyAgICAgICAgICAgCTI3CisJdXNwMCAgICAgICAgICAgIAkyOAorCXVzcDEgICAgICAgICAgICAJMjkKKwl1c3AyICAgICAgICAgICAgCTMwCisJdmlwICAgICAgICAgICAgIAkzMQorCWdmeCAgICAgICAgICAgICAJMzIKKwltbSAgICAgICAgICAgICAgCTMzCisJbGNkICAgICAgICAgICAgIAkzNAorCXZwcCAgICAgICAgICAgICAJMzUKKwltbWMwMSAgICAgICAgICAgCTM2CisJbW1jMjMgICAgICAgICAgIAkzNworCW1tYzQ1ICAgICAgICAgICAJMzgKKwl1c2JwbGwgICAgICAgICAgCTM5CisJdXNiMCAgICAgICAgICAgIAk0MAorCXVzYjEJCQk0MQorCitFeGFtcGxlczoKKworY2xrczogY2xvY2stY29udHJvbGxlckA4ODAwMDAwMCB7CisJY29tcGF0aWJsZSA9ICJzaXJmLHByaW1hMi1jbGtjIjsKKwlyZWcgPSA8MHg4ODAwMDAwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8Mz47CisJI2Nsb2NrLWNlbGxzID0gPDE+OworfTsKKworaTJjMDogaTJjQGIwMGUwMDAwIHsKKwljZWxsLWluZGV4ID0gPDA+OworCWNvbXBhdGlibGUgPSAic2lyZixwcmltYTItaTJjIjsKKwlyZWcgPSA8MHhiMDBlMDAwMCAweDEwMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDI0PjsKKwljbG9ja3MgPSA8JmNsa3MgMTc+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9wd20tY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3B3bS1jbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNkYjg3NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9wd20tY2xvY2sudHh0CkBAIC0wLDAgKzEsMjYgQEAKK0JpbmRpbmcgZm9yIGFuIGV4dGVybmFsIGNsb2NrIHNpZ25hbCBkcml2ZW4gYnkgYSBQV00gcGluLgorCitUaGlzIGJpbmRpbmcgdXNlcyB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmdbMV0gYW5kIHRoZSBjb21tb24gUFdNIGJpbmRpbmdbMl0uCisKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CitbMl0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9wd20udHh0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaGFsbCBiZSAicHdtLWNsb2NrIi4KKy0gI2Nsb2NrLWNlbGxzIDogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzsgc2hhbGwgYmUgc2V0IHRvIDAuCistIHB3bXMgOiBmcm9tIGNvbW1vbiBQV00gYmluZGluZzsgdGhpcyBkZXRlcm1pbmVzIHRoZSBjbG9jayBmcmVxdWVuY3kKKyAgdmlhIHRoZSBwZXJpb2QgZ2l2ZW4gaW4gdGhlIFBXTSBzcGVjaWZpZXIuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrLW91dHB1dC1uYW1lcyA6IEZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmcuCistIGNsb2NrLWZyZXF1ZW5jeSA6IEV4YWN0IG91dHB1dCBmcmVxdWVuY3ksIGluIGNhc2UgdGhlIFBXTSBwZXJpb2QKKyAgaXMgbm90IGV4YWN0IGJ1dCB3YXMgcm91bmRlZCB0byBuYW5vc2Vjb25kcy4KKworRXhhbXBsZToKKwljbG9jayB7CisJCWNvbXBhdGlibGUgPSAicHdtLWNsb2NrIjsKKwkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQljbG9jay1mcmVxdWVuY3kgPSA8MjUwMDAwMDA+OworCQljbG9jay1vdXRwdXQtbmFtZXMgPSAibWlwaV9tY2xrIjsKKwkJcHdtcyA9IDwmcHdtMiAwIDQwPjsgLyogMSAvIDQwIG5zID0gMjUgTUh6ICovCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9weGEtY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3B4YS1jbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGI0YTkwMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9weGEtY2xvY2sudHh0CkBAIC0wLDAgKzEsMTYgQEAKKyogQ2xvY2sgYmluZGluZ3MgZm9yIE1hcnZlbGwgUFhBIGNoaXBzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAibWFydmVsbCxweGEtY2xvY2tzIgorLSAjY2xvY2stY2VsbHM6IFNob3VsZCBiZSA8MT4KKworVGhlIGNsb2NrIGNvbnN1bWVyIHNob3VsZCBzcGVjaWZ5IHRoZSBkZXNpcmVkIGNsb2NrIGJ5IGhhdmluZyB0aGUgY2xvY2sKK0lEIGluIGl0cyAiY2xvY2tzIiBwaGFuZGxlIGNlbGwgKHNlZSBpbmNsdWRlLy4uLi9weGEtY2xvY2suaCkuCisKK0V4YW1wbGVzOgorCitweGEyeHhfY2xrczogcHhhMnh4X2Nsa3NANDEzMDAwMDQgeworICAgICAgICBjb21wYXRpYmxlID0gIm1hcnZlbGwscHhhLWNsb2NrcyI7CisgICAgICAgICNjbG9jay1jZWxscyA9IDwxPjsKKyAgICAgICAgc3RhdHVzID0gIm9rYXkiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9xY2EsYXRoNzktcGxsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9xY2EsYXRoNzktcGxsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMGZjMmMxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3FjYSxhdGg3OS1wbGwudHh0CkBAIC0wLDAgKzEsMzMgQEAKK0JpbmRpbmcgZm9yIFF1YWxjb21tIEF0aGVyb3MgQVI3eHh4L0FSOVhYWCBQTEwgY29udHJvbGxlcgorCitUaGUgUFBMIGNvbnRyb2xsZXIgcHJvdmlkZXMgdGhlIDMgbWFpbiBjbG9ja3Mgb2YgdGhlIFNvQzogQ1BVLCBERFIgYW5kIEFIQi4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogaGFzIHRvIGJlICJxY2EsPHNvY3R5cGU+LWNwdS1pbnRjIiBhbmQgb25lIG9mIHRoZSBmb2xsb3dpbmcKKyAgZmFsbGJhY2tzOgorICAtICJxY2EsYXI3MTAwLXBsbCIKKyAgLSAicWNhLGFyNzI0MC1wbGwiCisgIC0gInFjYSxhcjkxMzAtcGxsIgorICAtICJxY2EsYXI5MzMwLXBsbCIKKyAgLSAicWNhLGFyOTM0MC1wbGwiCisgIC0gInFjYSxxY2E5NTUwLXBsbCIKKy0gcmVnOiBCYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIGNvbnRyb2xsZXJzIG1lbW9yeSBhcmVhCistIGNsb2NrLW5hbWVzOiBOYW1lIG9mIHRoZSBpbnB1dCBjbG9jaywgaGFzIHRvIGJlICJyZWYiCistIGNsb2NrczogcGhhbmRsZSBvZiB0aGUgZXh0ZXJuYWwgcmVmZXJlbmNlIGNsb2NrCistICNjbG9jay1jZWxsczogaGFzIHRvIGJlIG9uZQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjbG9jay1vdXRwdXQtbmFtZXM6IHNob3VsZCBiZSAiY3B1IiwgImRkciIsICJhaGIiCisKK0V4YW1wbGU6CisKKwltZW1vcnktY29udHJvbGxlckAxODA1MDAwMCB7CisJCWNvbXBhdGlibGUgPSAicWNhLGFyOTEzMi1wcGwiLCAicWNhLGFyOTEzMC1wbGwiOworCQlyZWcgPSA8MHgxODA1MDAwMCAweDIwPjsKKworCQljbG9jay1uYW1lcyA9ICJyZWYiOworCQljbG9ja3MgPSA8JmV4dG9zYz47CisKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQljbG9jay1vdXRwdXQtbmFtZXMgPSAiY3B1IiwgImRkciIsICJhaGIiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcWNvbSxnY2MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3Fjb20sZ2NjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTJkZmFhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3Fjb20sZ2NjLnR4dApAQCAtMCwwICsxLDMxIEBACitRdWFsY29tbSBHbG9iYWwgQ2xvY2sgJiBSZXNldCBDb250cm9sbGVyIEJpbmRpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIDoKKy0gY29tcGF0aWJsZSA6IHNoYWxsIGNvbnRhaW4gb25seSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKworCQkJInFjb20sZ2NjLWFwcTgwNjQiCisJCQkicWNvbSxnY2MtYXBxODA4NCIKKwkJCSJxY29tLGdjYy1pcHE4MDY0IgorCQkJInFjb20sZ2NjLW1zbTg2NjAiCisJCQkicWNvbSxnY2MtbXNtODkxNiIKKwkJCSJxY29tLGdjYy1tc204OTYwIgorCQkJInFjb20sZ2NjLW1zbTg5NzQiCisJCQkicWNvbSxnY2MtbXNtODk3NHBybyIKKwkJCSJxY29tLGdjYy1tc204OTc0cHJvLWFjIgorCistIHJlZyA6IHNoYWxsIGNvbnRhaW4gYmFzZSByZWdpc3RlciBsb2NhdGlvbiBhbmQgbGVuZ3RoCistICNjbG9jay1jZWxscyA6IHNoYWxsIGNvbnRhaW4gMQorLSAjcmVzZXQtY2VsbHMgOiBzaGFsbCBjb250YWluIDEKKworT3B0aW9uYWwgcHJvcGVydGllcyA6CistICNwb3dlci1kb21haW4tY2VsbHMgOiBzaGFsbCBjb250YWluIDEKKworRXhhbXBsZToKKwljbG9jay1jb250cm9sbGVyQDkwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicWNvbSxnY2MtbXNtODk2MCI7CisJCXJlZyA9IDwweDkwMDAwMCAweDQwMDA+OworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJCSNyZXNldC1jZWxscyA9IDwxPjsKKwkJI3Bvd2VyLWRvbWFpbi1jZWxscyA9IDwxPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3Fjb20sbGNjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9xY29tLGxjYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ3NTViZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9xY29tLGxjYy50eHQKQEAgLTAsMCArMSwyMSBAQAorUXVhbGNvbW0gTFBBU1MgQ2xvY2sgJiBSZXNldCBDb250cm9sbGVyIEJpbmRpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIDoKKy0gY29tcGF0aWJsZSA6IHNoYWxsIGNvbnRhaW4gb25seSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKworCQkJInFjb20sbGNjLW1zbTg5NjAiCisJCQkicWNvbSxsY2MtYXBxODA2NCIKKwkJCSJxY29tLGxjYy1pcHE4MDY0IgorCistIHJlZyA6IHNoYWxsIGNvbnRhaW4gYmFzZSByZWdpc3RlciBsb2NhdGlvbiBhbmQgbGVuZ3RoCistICNjbG9jay1jZWxscyA6IHNoYWxsIGNvbnRhaW4gMQorLSAjcmVzZXQtY2VsbHMgOiBzaGFsbCBjb250YWluIDEKKworRXhhbXBsZToKKwljbG9jay1jb250cm9sbGVyQDI4MDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJxY29tLGxjYy1pcHE4MDY0IjsKKwkJcmVnID0gPDB4MjgwMDAwMDAgMHgxMDAwPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQkjcmVzZXQtY2VsbHMgPSA8MT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9xY29tLG1tY2MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3Fjb20sbW1jYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRlNzYxNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9xY29tLG1tY2MudHh0CkBAIC0wLDAgKzEsMjcgQEAKK1F1YWxjb21tIE11bHRpbWVkaWEgQ2xvY2sgJiBSZXNldCBDb250cm9sbGVyIEJpbmRpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllcyA6CistIGNvbXBhdGlibGUgOiBzaGFsbCBjb250YWluIG9ubHkgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisKKwkJCSJxY29tLG1tY2MtYXBxODA2NCIKKwkJCSJxY29tLG1tY2MtYXBxODA4NCIKKwkJCSJxY29tLG1tY2MtbXNtODY2MCIKKwkJCSJxY29tLG1tY2MtbXNtODk2MCIKKwkJCSJxY29tLG1tY2MtbXNtODk3NCIKKworLSByZWcgOiBzaGFsbCBjb250YWluIGJhc2UgcmVnaXN0ZXIgbG9jYXRpb24gYW5kIGxlbmd0aAorLSAjY2xvY2stY2VsbHMgOiBzaGFsbCBjb250YWluIDEKKy0gI3Jlc2V0LWNlbGxzIDogc2hhbGwgY29udGFpbiAxCisKK09wdGlvbmFsIHByb3BlcnRpZXMgOgorLSAjcG93ZXItZG9tYWluLWNlbGxzIDogc2hhbGwgY29udGFpbiAxCisKK0V4YW1wbGU6CisJY2xvY2stY29udHJvbGxlckA0MDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJxY29tLG1tY2MtbXNtODk2MCI7CisJCXJlZyA9IDwweDQwMDAwMDAgMHgxMDAwPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQkjcmVzZXQtY2VsbHMgPSA8MT47CisJCSNwb3dlci1kb21haW4tY2VsbHMgPSA8MT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9xb3JpcS1jbG9jay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcW9yaXEtY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2YTNlYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcW9yaXEtY2xvY2sudHh0CkBAIC0wLDAgKzEsMTkyIEBACisqIENsb2NrIEJsb2NrIG9uIEZyZWVzY2FsZSBRb3JJUSBQbGF0Zm9ybXMKKworRnJlZXNjYWxlIFFvcklRIGNoaXBzIHRha2UgcHJpbWFyeSBjbG9ja2luZyBpbnB1dCBmcm9tIHRoZSBleHRlcm5hbAorU1lTQ0xLIHNpZ25hbC4gVGhlIFNZU0NMSyBpbnB1dCAoZnJlcXVlbmN5KSBpcyBtdWx0aXBsaWVkIHVzaW5nCittdWx0aXBsZSBwaGFzZSBsb2NrZWQgbG9vcHMgKFBMTCkgdG8gY3JlYXRlIGEgdmFyaWV0eSBvZiBmcmVxdWVuY2llcword2hpY2ggY2FuIHRoZW4gYmUgcGFzc2VkIHRvIGEgdmFyaWV0eSBvZiBpbnRlcm5hbCBsb2dpYywgaW5jbHVkaW5nCitjb3JlcyBhbmQgcGVyaXBoZXJhbCBJUCBibG9ja3MuCitQbGVhc2UgcmVmZXIgdG8gdGhlIFJlZmVyZW5jZSBNYW51YWwgZm9yIGRldGFpbHMuCisKK0FsbCByZWZlcmVuY2VzIHRvICIxLjAiIGFuZCAiMi4wIiByZWZlciB0byB0aGUgUW9ySVEgY2hhc3NpcyB2ZXJzaW9uIHRvCit3aGljaCB0aGUgY2hpcCBjb21wbGllcy4KKworQ2hhc3NpcyBWZXJzaW9uCQlFeGFtcGxlIENoaXBzCistLS0tLS0tLS0tLS0tLS0JCS0tLS0tLS0tLS0tLS0KKzEuMAkJCXA0MDgwLCBwNTAyMCwgcDUwNDAKKzIuMAkJCXQ0MjQwLCBiNDg2MAorCisxLiBDbG9jayBCbG9jayBCaW5kaW5nCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBjb250YWluIGEgY2hpcC1zcGVjaWZpYyBjbG9jayBibG9jayBjb21wYXRpYmxlCisJc3RyaW5nIGFuZCAoaWYgYXBwbGljYWJsZSkgbWF5IGNvbnRhaW4gYSBjaGFzc2lzLXZlcnNpb24gY2xvY2sKKwljb21wYXRpYmxlIHN0cmluZy4KKworCUNoaXAtc3BlY2lmaWMgc3RyaW5ncyBhcmUgb2YgdGhlIGZvcm0gImZzbCw8Y2hpcD4tY2xvY2tnZW4iLCBzdWNoIGFzOgorCSogImZzbCxwMjA0MS1jbG9ja2dlbiIKKwkqICJmc2wscDMwNDEtY2xvY2tnZW4iCisJKiAiZnNsLHA0MDgwLWNsb2NrZ2VuIgorCSogImZzbCxwNTAyMC1jbG9ja2dlbiIKKwkqICJmc2wscDUwNDAtY2xvY2tnZW4iCisJKiAiZnNsLHQ0MjQwLWNsb2NrZ2VuIgorCSogImZzbCxiNDQyMC1jbG9ja2dlbiIKKwkqICJmc2wsYjQ4NjAtY2xvY2tnZW4iCisJKiAiZnNsLGxzMTAyMWEtY2xvY2tnZW4iCisJQ2hhc3Npcy12ZXJzaW9uIGNsb2NrIHN0cmluZ3MgaW5jbHVkZToKKwkqICJmc2wscW9yaXEtY2xvY2tnZW4tMS4wIjogZm9yIGNoYXNzaXMgMS4wIGNsb2NrcworCSogImZzbCxxb3JpcS1jbG9ja2dlbi0yLjAiOiBmb3IgY2hhc3NpcyAyLjAgY2xvY2tzCistIHJlZzogRGVzY3JpYmVzIHRoZSBhZGRyZXNzIG9mIHRoZSBkZXZpY2UncyByZXNvdXJjZXMgd2l0aGluIHRoZQorCWFkZHJlc3Mgc3BhY2UgZGVmaW5lZCBieSBpdHMgcGFyZW50IGJ1cywgYW5kIHJlc291cmNlIHplcm8KKwlyZXByZXNlbnRzIHRoZSBjbG9jayByZWdpc3RlciBzZXQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gcmFuZ2VzOiBBbGxvd3MgdmFsaWQgdHJhbnNsYXRpb24gYmV0d2VlbiBjaGlsZCdzIGFkZHJlc3Mgc3BhY2UgYW5kCisJcGFyZW50J3MuIE11c3QgYmUgcHJlc2VudCBpZiB0aGUgZGV2aWNlIGhhcyBzdWItbm9kZXMuCistICNhZGRyZXNzLWNlbGxzOiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyB1c2VkIHRvIHJlcHJlc2VudAorCXBoeXNpY2FsIGJhc2UgYWRkcmVzc2VzLiAgTXVzdCBiZSBwcmVzZW50IGlmIHRoZSBkZXZpY2UgaGFzCisJc3ViLW5vZGVzIGFuZCBzZXQgdG8gMSBpZiBwcmVzZW50CistICNzaXplLWNlbGxzOiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyB1c2VkIHRvIHJlcHJlc2VudAorCXRoZSBzaXplIG9mIGFuIGFkZHJlc3MuIE11c3QgYmUgcHJlc2VudCBpZiB0aGUgZGV2aWNlIGhhcworCXN1Yi1ub2RlcyBhbmQgc2V0IHRvIDEgaWYgcHJlc2VudAorLSBjbG9jay1mcmVxdWVuY3k6IElucHV0IHN5c3RlbSBjbG9jayBmcmVxdWVuY3kgKFNZU0NMSykKKy0gY2xvY2tzOiBJZiBjbG9jay1mcmVxdWVuY3kgaXMgbm90IHNwZWNpZmllZCwgc3lzY2xrIG1heSBiZSBwcm92aWRlZAorCWFzIGFuIGlucHV0IGNsb2NrLiAgRWl0aGVyIGNsb2NrLWZyZXF1ZW5jeSBvciBjbG9ja3MgbXVzdCBiZQorCXByb3ZpZGVkLgorCisyLiBDbG9jayBQcm92aWRlcgorCitUaGUgY2xvY2tnZW4gbm9kZSBzaG91bGQgYWN0IGFzIGEgY2xvY2sgcHJvdmlkZXIsIHRob3VnaCBpbiBvbGRlciBkZXZpY2UKK3RyZWVzIHRoZSBjaGlsZHJlbiBvZiB0aGUgY2xvY2tnZW4gbm9kZSBhcmUgdGhlIGNsb2NrIHByb3ZpZGVycy4KKworV2hlbiB0aGUgY2xvY2tnZW4gbm9kZSBpcyBhIGNsb2NrIHByb3ZpZGVyLCAjY2xvY2stY2VsbHMgPSA8Mj4uCitUaGUgZmlyc3QgY2VsbCBvZiB0aGUgY2xvY2sgc3BlY2lmaWVyIGlzIHRoZSBjbG9jayB0eXBlLCBhbmQgdGhlCitzZWNvbmQgY2VsbCBpcyB0aGUgY2xvY2sgaW5kZXggZm9yIHRoZSBzcGVjaWZpZWQgdHlwZS4KKworCVR5cGUjCU5hbWUJCUluZGV4IENlbGwKKwkwCXN5c2NsawkJbXVzdCBiZSAwCisJMQljbXV4CQlpbmRleCAobiBpbiBDTEtDbkNTUikKKwkyCWh3YWNjZWwJCWluZGV4IChuIGluIENMS0NHbkhXQUNTUikKKwkzCWZtYW4JCTAgZm9yIGZtMSwgMSBmb3IgZm0yCisJNAlwbGF0Zm9ybSBwbGwJMD1wbGwsIDE9cGxsLzIsIDI9cGxsLzMsIDM9cGxsLzQKKworMy4gRXhhbXBsZQorCisJY2xvY2tnZW46IGdsb2JhbC11dGlsaXRpZXNAZTEwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxwNTAyMC1jbG9ja2dlbiIsICJmc2wscW9yaXEtY2xvY2tnZW4tMS4wIjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDEzMzMzMzMzMz47CisJCXJlZyA9IDwweGUxMDAwIDB4MTAwMD47CisJCSNjbG9jay1jZWxscyA9IDwyPjsKKwl9OworCisJZm1hbkA0MDAwMDAgeworCQkuLi4KKwkJY2xvY2tzID0gPCZjbG9ja2dlbiAzIDA+OworCQkuLi4KKwl9OworfQorNC4gTGVnYWN5IENoaWxkIE5vZGVzCisKK05PVEU6IFRoZXNlIG5vZGVzIGFyZSBkZXByZWNhdGVkLiAgS2VybmVscyBzaG91bGQgY29udGludWUgdG8gc3VwcG9ydAorZGV2aWNlIHRyZWVzIHdpdGggdGhlc2Ugbm9kZXMsIGJ1dCBuZXcgZGV2aWNlIHRyZWVzIHNob3VsZCBub3QgdXNlIHRoZW0uCisKK01vc3Qgb2YgdGhlIGJpbmRpbmdzIGFyZSBmcm9tIHRoZSBjb21tb24gY2xvY2sgYmluZGluZ1sxXS4KKyBbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGluY2x1ZGUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisJKiAiZnNsLHFvcmlxLWNvcmUtcGxsLTEuMCIgZm9yIGNvcmUgUExMIGNsb2NrcyAodjEuMCkKKwkqICJmc2wscW9yaXEtY29yZS1wbGwtMi4wIiBmb3IgY29yZSBQTEwgY2xvY2tzICh2Mi4wKQorCSogImZzbCxxb3JpcS1jb3JlLW11eC0xLjAiIGZvciBjb3JlIG11eCBjbG9ja3MgKHYxLjApCisJKiAiZnNsLHFvcmlxLWNvcmUtbXV4LTIuMCIgZm9yIGNvcmUgbXV4IGNsb2NrcyAodjIuMCkKKwkqICJmc2wscW9yaXEtc3lzY2xrLTEuMCI6IGZvciBpbnB1dCBzeXN0ZW0gY2xvY2sgKHYxLjApLgorCQlJdCB0YWtlcyBwYXJlbnQncyBjbG9jay1mcmVxdWVuY3kgYXMgaXRzIGNsb2NrLgorCSogImZzbCxxb3JpcS1zeXNjbGstMi4wIjogZm9yIGlucHV0IHN5c3RlbSBjbG9jayAodjIuMCkuCisJCUl0IHRha2VzIHBhcmVudCdzIGNsb2NrLWZyZXF1ZW5jeSBhcyBpdHMgY2xvY2suCisJKiAiZnNsLHFvcmlxLXBsYXRmb3JtLXBsbC0xLjAiIGZvciB0aGUgcGxhdGZvcm0gUExMIGNsb2NrICh2MS4wKQorCSogImZzbCxxb3JpcS1wbGF0Zm9ybS1wbGwtMi4wIiBmb3IgdGhlIHBsYXRmb3JtIFBMTCBjbG9jayAodjIuMCkKKy0gI2Nsb2NrLWNlbGxzOiBGcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nLiBUaGUgbnVtYmVyIG9mIGNlbGxzIGluIGEKKwljbG9jay1zcGVjaWZpZXIuIFNob3VsZCBiZSA8MD4gZm9yICJmc2wscW9yaXEtc3lzY2xrLVsxLDJdLjAiCisJY2xvY2tzLCBvciA8MT4gZm9yICJmc2wscW9yaXEtY29yZS1wbGwtWzEsMl0uMCIgY2xvY2tzLgorCUZvciAiZnNsLHFvcmlxLWNvcmUtcGxsLVsxLDJdLjAiIGNsb2NrcywgdGhlIHNpbmdsZQorCWNsb2NrLXNwZWNpZmllciBjZWxsIG1heSB0YWtlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorCSogMCAtIGVxdWFsIHRvIHRoZSBQTEwgZnJlcXVlbmN5CisJKiAxIC0gZXF1YWwgdG8gdGhlIFBMTCBmcmVxdWVuY3kgZGl2aWRlZCBieSAyCisJKiAyIC0gZXF1YWwgdG8gdGhlIFBMTCBmcmVxdWVuY3kgZGl2aWRlZCBieSA0CisKK1JlY29tbWVuZGVkIHByb3BlcnRpZXM6CistIGNsb2NrczogU2hvdWxkIGJlIHRoZSBwaGFuZGxlIG9mIGlucHV0IHBhcmVudCBjbG9jaworLSBjbG9jay1uYW1lczogRnJvbSBjb21tb24gY2xvY2sgYmluZGluZywgaW5kaWNhdGVzIHRoZSBjbG9jayBuYW1lCistIGNsb2NrLW91dHB1dC1uYW1lczogRnJvbSBjb21tb24gY2xvY2sgYmluZGluZywgaW5kaWNhdGVzIHRoZSBuYW1lcyBvZgorCW91dHB1dCBjbG9ja3MKKy0gcmVnOiBTaG91bGQgYmUgdGhlIG9mZnNldCBhbmQgbGVuZ3RoIG9mIGNsb2NrIGJsb2NrIGJhc2UgYWRkcmVzcy4KKwlUaGUgbGVuZ3RoIHNob3VsZCBiZSA0LgorCitMZWdhY3kgRXhhbXBsZToKKy8geworCWNsb2NrZ2VuOiBnbG9iYWwtdXRpbGl0aWVzQGUxMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wscDUwMjAtY2xvY2tnZW4iLCAiZnNsLHFvcmlxLWNsb2NrZ2VuLTEuMCI7CisJCXJhbmdlcyA9IDwweDAgMHhlMTAwMCAweDEwMDA+OworCQljbG9jay1mcmVxdWVuY3kgPSA8MTMzMzMzMzMzPjsKKwkJcmVnID0gPDB4ZTEwMDAgMHgxMDAwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCisJCXN5c2Nsazogc3lzY2xrIHsKKwkJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLHFvcmlxLXN5c2Nsay0xLjAiOworCQkJY2xvY2stb3V0cHV0LW5hbWVzID0gInN5c2NsayI7CisJCX07CisKKwkJcGxsMDogcGxsMEA4MDAgeworCQkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQkJcmVnID0gPDB4ODAwIDB4ND47CisJCQljb21wYXRpYmxlID0gImZzbCxxb3JpcS1jb3JlLXBsbC0xLjAiOworCQkJY2xvY2tzID0gPCZzeXNjbGs+OworCQkJY2xvY2stb3V0cHV0LW5hbWVzID0gInBsbDAiLCAicGxsMC1kaXYyIjsKKwkJfTsKKworCQlwbGwxOiBwbGwxQDgyMCB7CisJCQkjY2xvY2stY2VsbHMgPSA8MT47CisJCQlyZWcgPSA8MHg4MjAgMHg0PjsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLHFvcmlxLWNvcmUtcGxsLTEuMCI7CisJCQljbG9ja3MgPSA8JnN5c2Nsaz47CisJCQljbG9jay1vdXRwdXQtbmFtZXMgPSAicGxsMSIsICJwbGwxLWRpdjIiOworCQl9OworCisJCW11eDA6IG11eDBAMCB7CisJCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCQlyZWcgPSA8MHgwIDB4ND47CisJCQljb21wYXRpYmxlID0gImZzbCxxb3JpcS1jb3JlLW11eC0xLjAiOworCQkJY2xvY2tzID0gPCZwbGwwIDA+LCA8JnBsbDAgMT4sIDwmcGxsMSAwPiwgPCZwbGwxIDE+OworCQkJY2xvY2stbmFtZXMgPSAicGxsMCIsICJwbGwwLWRpdjIiLCAicGxsMSIsICJwbGwxLWRpdjIiOworCQkJY2xvY2stb3V0cHV0LW5hbWVzID0gImNtdXgwIjsKKwkJfTsKKworCQltdXgxOiBtdXgxQDIwIHsKKwkJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJCXJlZyA9IDwweDIwIDB4ND47CisJCQljb21wYXRpYmxlID0gImZzbCxxb3JpcS1jb3JlLW11eC0xLjAiOworCQkJY2xvY2tzID0gPCZwbGwwIDA+LCA8JnBsbDAgMT4sIDwmcGxsMSAwPiwgPCZwbGwxIDE+OworCQkJY2xvY2stbmFtZXMgPSAicGxsMCIsICJwbGwwLWRpdjIiLCAicGxsMSIsICJwbGwxLWRpdjIiOworCQkJY2xvY2stb3V0cHV0LW5hbWVzID0gImNtdXgxIjsKKwkJfTsKKworCQlwbGF0Zm9ybS1wbGw6IHBsYXRmb3JtLXBsbEBjMDAgeworCQkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQkJcmVnID0gPDB4YzAwIDB4ND47CisJCQljb21wYXRpYmxlID0gImZzbCxxb3JpcS1wbGF0Zm9ybS1wbGwtMS4wIjsKKwkJCWNsb2NrcyA9IDwmc3lzY2xrPjsKKwkJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJwbGF0Zm9ybS1wbGwiLCAicGxhdGZvcm0tcGxsLWRpdjIiOworCQl9OworCX07Cit9OworCitFeGFtcGxlIGZvciBsZWdhY3kgY2xvY2sgY29uc3VtZXI6CisKKy8geworCWNwdTA6IFBvd2VyUEMsZTU1MDBAMCB7CisJCS4uLgorCQljbG9ja3MgPSA8Jm11eDA+OworCQkuLi4KKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9yZW5lc2FzLGNwZy1kaXY2LWNsb2Nrcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcmVuZXNhcyxjcGctZGl2Ni1jbG9ja3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4ZGNmMDMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcmVuZXNhcyxjcGctZGl2Ni1jbG9ja3MudHh0CkBAIC0wLDAgKzEsMzYgQEAKKyogUmVuZXNhcyBDUEcgRElWNiBDbG9jaworCitUaGUgQ1BHIERJVjYgY2xvY2tzIGFyZSB2YXJpYWJsZSBmYWN0b3IgY2xvY2tzIHByb3ZpZGVkIGJ5IHRoZSBDbG9jayBQdWxzZQorR2VuZXJhdG9yIChDUEcpLiBUaGVpciBjbG9jayBpbnB1dCBpcyBkaXZpZGVkIGJ5IGEgY29uZmlndXJhYmxlIGZhY3RvciBmcm9tIDEKK3RvIDY0LgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZTogTXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZworICAgIC0gInJlbmVzYXMscjhhNzNhNC1kaXY2LWNsb2NrIiBmb3IgUjhBNzNBNCAoUi1Nb2JpbGUgQVBFNikgRElWNiBjbG9ja3MKKyAgICAtICJyZW5lc2FzLHI4YTc3NDAtZGl2Ni1jbG9jayIgZm9yIFI4QTc3NDAgKFItTW9iaWxlIEExKSBESVY2IGNsb2NrcworICAgIC0gInJlbmVzYXMscjhhNzc5MC1kaXY2LWNsb2NrIiBmb3IgUjhBNzc5MCAoUi1DYXIgSDIpIERJVjYgY2xvY2tzCisgICAgLSAicmVuZXNhcyxyOGE3NzkxLWRpdjYtY2xvY2siIGZvciBSOEE3NzkxIChSLUNhciBNMi1XKSBESVY2IGNsb2NrcworICAgIC0gInJlbmVzYXMscjhhNzc5My1kaXY2LWNsb2NrIiBmb3IgUjhBNzc5MyAoUi1DYXIgTTItTikgRElWNiBjbG9ja3MKKyAgICAtICJyZW5lc2FzLHI4YTc3OTQtZGl2Ni1jbG9jayIgZm9yIFI4QTc3OTQgKFItQ2FyIEUyKSBESVY2IGNsb2NrcworICAgIC0gInJlbmVzYXMsc2g3M2EwLWRpdjYtY2xvY2siIGZvciBTSDczQTAgKFNILU1vYmlsZSBBRzUpIERJVjYgY2xvY2tzCisgICAgYW5kICJyZW5lc2FzLGNwZy1kaXY2LWNsb2NrIiBhcyBhIGZhbGxiYWNrLgorICAtIHJlZzogQmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIG1lbW9yeSByZXNvdXJjZSB1c2VkIGJ5IHRoZSBESVY2IGNsb2NrCisgIC0gY2xvY2tzOiBSZWZlcmVuY2UgdG8gdGhlIHBhcmVudCBjbG9jayhzKTsgZWl0aGVyIG9uZSwgZm91ciwgb3IgZWlnaHQKKyAgICBjbG9ja3MgbXVzdCBiZSBzcGVjaWZpZWQuICBGb3IgY2xvY2tzIHdpdGggbXVsdGlwbGUgcGFyZW50cywgaW52YWxpZAorICAgIHNldHRpbmdzIG11c3QgYmUgc3BlY2lmaWVkIGFzICI8MD4iLgorICAtICNjbG9jay1jZWxsczogTXVzdCBiZSAwCisgIC0gY2xvY2stb3V0cHV0LW5hbWVzOiBUaGUgbmFtZSBvZiB0aGUgY2xvY2sgYXMgYSBmcmVlLWZvcm0gc3RyaW5nCisKKworRXhhbXBsZQorLS0tLS0tLQorCisJc2RoaTJfY2xrOiBzZGhpMl9jbGtAZTYxNTAwN2MgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMscjhhNzNhNC1kaXY2LWNsb2NrIiwgInJlbmVzYXMsY3BnLWRpdjYtY2xvY2siOworCQlyZWcgPSA8MCAweGU2MTUwMDdjIDAgND47CisJCWNsb2NrcyA9IDwmcGxsMV9kaXYyX2Nsaz4sIDwmY3BnX2Nsb2NrcyBSOEE3M0E0X0NMS19QTEwyUz4sCisJCQkgPDA+LCA8JmV4dGFsMl9jbGs+OworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJzZGhpMmNrIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3JlbmVzYXMsY3BnLW1zc3IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3JlbmVzYXMsY3BnLW1zc3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5Mjk3ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcmVuZXNhcyxjcGctbXNzci50eHQKQEAgLTAsMCArMSw2OSBAQAorKiBSZW5lc2FzIENsb2NrIFB1bHNlIEdlbmVyYXRvciAvIE1vZHVsZSBTdGFuZGJ5IGFuZCBTb2Z0d2FyZSBSZXNldAorCitPbiBSZW5lc2FzIEFSTSBTb0NzIChTSC9SLU1vYmlsZSwgUi1DYXIsIFJaKSwgdGhlIENQRyAoQ2xvY2sgUHVsc2UgR2VuZXJhdG9yKQorYW5kIE1TU1IgKE1vZHVsZSBTdGFuZGJ5IGFuZCBTb2Z0d2FyZSBSZXNldCkgYmxvY2tzIGFyZSBpbnRpbWF0ZWx5IGNvbm5lY3RlZCwKK2FuZCBzaGFyZSB0aGUgc2FtZSByZWdpc3RlciBibG9jay4KKworVGhleSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25hbGl0aWVzOgorICAtIFRoZSBDUEcgYmxvY2sgZ2VuZXJhdGVzIHZhcmlvdXMgY29yZSBjbG9ja3MsCisgIC0gVGhlIE1TU1IgYmxvY2sgcHJvdmlkZXMgdHdvIGZ1bmN0aW9uczoKKyAgICAgIDEuIE1vZHVsZSBTdGFuZGJ5LCBwcm92aWRpbmcgYSBDbG9jayBEb21haW4gdG8gY29udHJvbCB0aGUgY2xvY2sgc3VwcGx5CisJIHRvIGluZGl2aWR1YWwgU29DIGRldmljZXMsCisgICAgICAyLiBSZXNldCBDb250cm9sLCB0byBwZXJmb3JtIGEgc29mdHdhcmUgcmVzZXQgb2YgaW5kaXZpZHVhbCBTb0MgZGV2aWNlcy4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiBNdXN0IGJlIG9uZSBvZjoKKyAgICAgIC0gInJlbmVzYXMscjhhNzc5NS1jcGctbXNzciIgZm9yIHRoZSByOGE3Nzk1IFNvQworCisgIC0gcmVnOiBCYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgbWVtb3J5IHJlc291cmNlIHVzZWQgYnkgdGhlIENQRy9NU1NSCisgICAgYmxvY2sKKworICAtIGNsb2NrczogUmVmZXJlbmNlcyB0byBleHRlcm5hbCBwYXJlbnQgY2xvY2tzLCBvbmUgZW50cnkgZm9yIGVhY2ggZW50cnkgaW4KKyAgICBjbG9jay1uYW1lcworICAtIGNsb2NrLW5hbWVzOiBMaXN0IG9mIGV4dGVybmFsIHBhcmVudCBjbG9jayBuYW1lcy4gVmFsaWQgbmFtZXMgYXJlOgorICAgICAgLSAiZXh0YWwiIChyOGE3Nzk1KQorICAgICAgLSAiZXh0YWxyIiAocjhhNzc5NSkKKworICAtICNjbG9jay1jZWxsczogTXVzdCBiZSAyCisgICAgICAtIEZvciBDUEcgY29yZSBjbG9ja3MsIHRoZSB0d28gY2xvY2sgc3BlY2lmaWVyIGNlbGxzIG11c3QgYmUgIkNQR19DT1JFIgorCWFuZCBhIGNvcmUgY2xvY2sgcmVmZXJlbmNlLCBhcyBkZWZpbmVkIGluCisJPGR0LWJpbmRpbmdzL2Nsb2NrLyotY3BnLW1zc3IuaD4uCisgICAgICAtIEZvciBtb2R1bGUgY2xvY2tzLCB0aGUgdHdvIGNsb2NrIHNwZWNpZmllciBjZWxscyBtdXN0IGJlICJDUEdfTU9EIiBhbmQKKwlhIG1vZHVsZSBudW1iZXIsIGFzIGRlZmluZWQgaW4gdGhlIGRhdGFzaGVldC4KKworICAtICNwb3dlci1kb21haW4tY2VsbHM6IE11c3QgYmUgMAorICAgICAgLSBTb0MgZGV2aWNlcyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBDUEcvTVNTUiBDbG9jayBEb21haW4gYW5kIGNhbiBiZQorCXBvd2VyLW1hbmFnZWQgdGhyb3VnaCBNb2R1bGUgU3RhbmRieSBzaG91bGQgcmVmZXIgdG8gdGhlIENQRyBkZXZpY2UKKwlub2RlIGluIHRoZWlyICJwb3dlci1kb21haW5zIiBwcm9wZXJ0eSwgYXMgZG9jdW1lbnRlZCBieSB0aGUgZ2VuZXJpYyBQTQorCURvbWFpbiBiaW5kaW5ncyBpbgorCURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9wb3dlcl9kb21haW4udHh0LgorCisKK0V4YW1wbGVzCistLS0tLS0tLQorCisgIC0gQ1BHIGRldmljZSBub2RlOgorCisJY3BnOiBjbG9jay1jb250cm9sbGVyQGU2MTUwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLHI4YTc3OTUtY3BnLW1zc3IiOworCQlyZWcgPSA8MCAweGU2MTUwMDAwIDAgMHgxMDAwPjsKKwkJY2xvY2tzID0gPCZleHRhbF9jbGs+LCA8JmV4dGFscl9jbGs+OworCQljbG9jay1uYW1lcyA9ICJleHRhbCIsICJleHRhbHIiOworCQkjY2xvY2stY2VsbHMgPSA8Mj47CisJCSNwb3dlci1kb21haW4tY2VsbHMgPSA8MD47CisJfTsKKworCisgIC0gQ1BHL01TU1IgQ2xvY2sgRG9tYWluIG1lbWJlciBkZXZpY2Ugbm9kZToKKworCXNjaWYyOiBzZXJpYWxAZTZlODgwMDAgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMsc2NpZi1yOGE3Nzk1IiwgInJlbmVzYXMsc2NpZiI7CisJCXJlZyA9IDwwIDB4ZTZlODgwMDAgMCA2ND47CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSAxNjQgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWNsb2NrcyA9IDwmY3BnIENQR19NT0QgMzEwPjsKKwkJY2xvY2stbmFtZXMgPSAic2NpX2ljayI7CisJCWRtYXMgPSA8JmRtYWMxIDB4MTM+LCA8JmRtYWMxIDB4MTI+OworCQlkbWEtbmFtZXMgPSAidHgiLCAicngiOworCQlwb3dlci1kb21haW5zID0gPCZjcGc+OworCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcmVuZXNhcyxjcGctbXN0cC1jbG9ja3MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3JlbmVzYXMsY3BnLW1zdHAtY2xvY2tzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNmVkMTgxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3JlbmVzYXMsY3BnLW1zdHAtY2xvY2tzLnR4dApAQCAtMCwwICsxLDU5IEBACisqIFJlbmVzYXMgQ1BHIE1vZHVsZSBTdG9wIChNU1RQKSBDbG9ja3MKKworVGhlIENQRyBjYW4gZ2F0ZSBTb0MgZGV2aWNlIGNsb2Nrcy4gVGhlIGdhdGVzIGFyZSBvcmdhbml6ZWQgaW4gZ3JvdXBzIG9mIHVwIHRvCiszMiBnYXRlcy4KKworVGhpcyBkZXZpY2UgdHJlZSBiaW5kaW5nIGRlc2NyaWJlcyBhIHNpbmdsZSAzMiBnYXRlIGNsb2NrcyBncm91cCBwZXIgbm9kZS4KK0Nsb2NrcyBhcmUgcmVmZXJlbmNlZCBieSB1c2VyIG5vZGVzIGJ5IHRoZSBNU1RQIG5vZGUgcGhhbmRsZSBhbmQgdGhlIGNsb2NrCitpbmRleCBpbiB0aGUgZ3JvdXAsIGZyb20gMCB0byAzMS4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGU6IE11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcKKyAgICAtICJyZW5lc2FzLHI3czcyMTAwLW1zdHAtY2xvY2tzIiBmb3IgUjdTNzIxMDAgKFJaKSBNU1RQIGdhdGUgY2xvY2tzCisgICAgLSAicmVuZXNhcyxyOGE3M2E0LW1zdHAtY2xvY2tzIiBmb3IgUjhBNzNBNCAoUi1Nb2JpbGUgQVBFNikgTVNUUCBnYXRlIGNsb2NrcworICAgIC0gInJlbmVzYXMscjhhNzc0MC1tc3RwLWNsb2NrcyIgZm9yIFI4QTc3NDAgKFItTW9iaWxlIEExKSBNU1RQIGdhdGUgY2xvY2tzCisgICAgLSAicmVuZXNhcyxyOGE3Nzc4LW1zdHAtY2xvY2tzIiBmb3IgUjhBNzc3OCAoUi1DYXIgTTEpIE1TVFAgZ2F0ZSBjbG9ja3MKKyAgICAtICJyZW5lc2FzLHI4YTc3NzktbXN0cC1jbG9ja3MiIGZvciBSOEE3Nzc5IChSLUNhciBIMSkgTVNUUCBnYXRlIGNsb2NrcworICAgIC0gInJlbmVzYXMscjhhNzc5MC1tc3RwLWNsb2NrcyIgZm9yIFI4QTc3OTAgKFItQ2FyIEgyKSBNU1RQIGdhdGUgY2xvY2tzCisgICAgLSAicmVuZXNhcyxyOGE3NzkxLW1zdHAtY2xvY2tzIiBmb3IgUjhBNzc5MSAoUi1DYXIgTTItVykgTVNUUCBnYXRlIGNsb2NrcworICAgIC0gInJlbmVzYXMscjhhNzc5My1tc3RwLWNsb2NrcyIgZm9yIFI4QTc3OTMgKFItQ2FyIE0yLU4pIE1TVFAgZ2F0ZSBjbG9ja3MKKyAgICAtICJyZW5lc2FzLHI4YTc3OTQtbXN0cC1jbG9ja3MiIGZvciBSOEE3Nzk0IChSLUNhciBFMikgTVNUUCBnYXRlIGNsb2NrcworICAgIC0gInJlbmVzYXMsc2g3M2EwLW1zdHAtY2xvY2tzIiBmb3IgU0g3M0EwIChTSC1Nb2JpbGVBRzUpIE1TVFAgZ2F0ZSBjbG9ja3MKKyAgICBhbmQgInJlbmVzYXMsY3BnLW1zdHAtY2xvY2tzIiBhcyBhIGZhbGxiYWNrLgorICAtIHJlZzogQmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIEkvTyBtYXBwZWQgcmVnaXN0ZXJzIHVzZWQgYnkgdGhlIE1TVFAKKyAgICBjbG9ja3MuIFRoZSBmaXJzdCByZWdpc3RlciBpcyB0aGUgY2xvY2sgY29udHJvbCByZWdpc3RlciBhbmQgaXMgbWFuZGF0b3J5LgorICAgIFRoZSBzZWNvbmQgcmVnaXN0ZXIgaXMgdGhlIGNsb2NrIHN0YXR1cyByZWdpc3RlciBhbmQgaXMgb3B0aW9uYWwgd2hlbiBub3QKKyAgICBpbXBsZW1lbnRlZCBpbiBoYXJkd2FyZS4KKyAgLSBjbG9ja3M6IFJlZmVyZW5jZSB0byB0aGUgcGFyZW50IGNsb2Nrcywgb25lIHBlciBvdXRwdXQgY2xvY2suIFRoZSBwYXJlbnRzCisgICAgbXVzdCBhcHBlYXIgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIG91dHB1dCBjbG9ja3MuCisgIC0gI2Nsb2NrLWNlbGxzOiBNdXN0IGJlIDEKKyAgLSBjbG9jay1vdXRwdXQtbmFtZXM6IFRoZSBuYW1lIG9mIHRoZSBjbG9ja3MgYXMgZnJlZS1mb3JtIHN0cmluZ3MKKyAgLSBjbG9jay1pbmRpY2VzOiBJbmRpY2VzIG9mIHRoZSBnYXRlIGNsb2NrcyBpbnRvIHRoZSBncm91cCAoMCB0byAzMSkKKworVGhlIGNsb2NrcywgY2xvY2stb3V0cHV0LW5hbWVzIGFuZCBjbG9jay1pbmRpY2VzIHByb3BlcnRpZXMgY29udGFpbiBvbmUgZW50cnkKK3BlciBnYXRlIGNsb2NrLiBUaGUgTVNUUCBncm91cHMgYXJlIHNwYXJzZWx5IHBvcHVsYXRlZC4gVW5pbXBsZW1lbnRlZCBnYXRlCitjbG9ja3MgbXVzdCBub3QgYmUgZGVjbGFyZWQuCisKKworRXhhbXBsZQorLS0tLS0tLQorCisJI2luY2x1ZGUgPGR0LWJpbmRpbmdzL2Nsb2NrL3I4YTc3OTAtY2xvY2suaD4KKworCW1zdHAzX2Nsa3M6IG1zdHAzX2Nsa3NAZTYxNTAxM2MgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMscjhhNzc5MC1tc3RwLWNsb2NrcyIsICJyZW5lc2FzLGNwZy1tc3RwLWNsb2NrcyI7CisJCXJlZyA9IDwwIDB4ZTYxNTAxM2MgMCA0PiwgPDAgMHhlNjE1MDA0OCAwIDQ+OworCQljbG9ja3MgPSA8JmNwX2Nsaz4sIDwmbW1jMV9jbGs+LCA8JnNkM19jbGs+LCA8JnNkMl9jbGs+LAorCQkJIDwmY3BnX2Nsb2NrcyBSOEE3NzkwX0NMS19TRDE+LCA8JmNwZ19jbG9ja3MgUjhBNzc5MF9DTEtfU0QwPiwKKwkJCSA8Jm1tYzBfY2xrPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQljbG9jay1vdXRwdXQtbmFtZXMgPQorCQkJInRwdTAiLCAibW1jaWYxIiwgInNkaGkzIiwgInNkaGkyIiwKKwkJCSAic2RoaTEiLCAic2RoaTAiLCAibW1jaWYwIjsKKwkJY2xvY2staW5kaWNlcyA9IDwKKwkJCVI4QTc3OTBfQ0xLX1RQVTAgUjhBNzc5MF9DTEtfTU1DSUYxIFI4QTc3OTBfQ0xLX1NESEkzCisJCQlSOEE3NzkwX0NMS19TREhJMiBSOEE3NzkwX0NMS19TREhJMSBSOEE3NzkwX0NMS19TREhJMAorCQkJUjhBNzc5MF9DTEtfTU1DSUYwCisJCT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9yZW5lc2FzLGg4MzAwLWRpdi1jbG9jay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcmVuZXNhcyxoODMwMC1kaXYtY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2YzJiNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcmVuZXNhcyxoODMwMC1kaXYtY2xvY2sudHh0CkBAIC0wLDAgKzEsMjQgQEAKKyogUmVuZXNhcyBIOC8zMDAgZGl2aWRlciBjbG9jaworCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZTogTXVzdCBiZSAicmVuZXNhcyxzaDczYTAtaDgzMDAtZGl2LWNsb2NrIgorCisgIC0gY2xvY2tzOiBSZWZlcmVuY2UgdG8gdGhlIHBhcmVudCBjbG9ja3MgKCJleHRhbDEiIGFuZCAiZXh0YWwyIikKKworICAtICNjbG9jay1jZWxsczogTXVzdCBiZSAxCisKKyAgLSByZWc6IEJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBkaXZpZGUgcmF0ZSBzZWxlY3RvcgorCisgIC0gcmVuZXNhcyx3aWR0aDogYml0IHdpZHRoIG9mIHNlbGVjdG9yCisKK0V4YW1wbGUKKy0tLS0tLS0KKworCQljY2xrOiBjY2xrIHsKKwkJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxoODMwMC1kaXYtY2xvY2siOworCQkJY2xvY2tzID0gPCZ4Y2xrPjsKKwkJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJCXJlZyA9IDwweGZlZTAxYiAyPjsKKwkJCXJlbmVzYXMsd2lkdGggPSA8Mj47CisJCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcmVuZXNhcyxoOHMyNjc4LXBsbC1jbG9jay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcmVuZXNhcyxoOHMyNjc4LXBsbC1jbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTAwY2RhZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9yZW5lc2FzLGg4czI2NzgtcGxsLWNsb2NrLnR4dApAQCAtMCwwICsxLDIzIEBACitSZW5lc2FzIEg4UzI2NzggUExMIGNsb2NrCisKK1RoaXMgZGV2aWNlIGlzIENsb2NrIG11bHRpcGx5ZXIKKworUmVxdWlyZWQgUHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGU6IE11c3QgYmUgInJlbmVzYXMsaDhzMjY3OC1wbGwtY2xvY2siCisKKyAgLSBjbG9ja3M6IFJlZmVyZW5jZSB0byB0aGUgcGFyZW50IGNsb2NrcworCisgIC0gI2Nsb2NrLWNlbGxzOiBNdXN0IGJlIDAKKworICAtIHJlZzogVHdvIHJhdGUgc2VsZWN0b3IgKE11bHRpcGx5IC8gRGl2aWRlKSByZWdpc3RlciBhZGRyZXNzCisKK0V4YW1wbGUKKy0tLS0tLS0KKworCQlwbGxjbGs6IHBsbGNsayB7CisJCQljb21wYXRpYmxlID0gInJlbmVzYXMsaDhzMjY3OC1wbGwtY2xvY2siOworCQkJY2xvY2tzID0gPCZ4Y2xrPjsKKwkJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJCXJlZyA9IDwweGZlZTAzYiAyPiwgPDB4ZmVlMDQ1IDI+OworCQl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3JlbmVzYXMscjhhNzNhNC1jcGctY2xvY2tzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9yZW5lc2FzLHI4YTczYTQtY3BnLWNsb2Nrcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNlOTIzOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9yZW5lc2FzLHI4YTczYTQtY3BnLWNsb2Nrcy50eHQKQEAgLTAsMCArMSwzMyBAQAorKiBSZW5lc2FzIFI4QTczQTQgQ2xvY2sgUHVsc2UgR2VuZXJhdG9yIChDUEcpCisKK1RoZSBDUEcgZ2VuZXJhdGVzIGNvcmUgY2xvY2tzIGZvciB0aGUgUjhBNzNBNCBTb0MuIEl0IGluY2x1ZGVzIGZpdmUgUExMcworYW5kIHNldmVyYWwgZml4ZWQgcmF0aW8gZGl2aWRlcnMuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlOiBNdXN0IGJlICJyZW5lc2FzLHI4YTczYTQtY3BnLWNsb2NrcyIKKworICAtIHJlZzogQmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIG1lbW9yeSByZXNvdXJjZSB1c2VkIGJ5IHRoZSBDUEcKKworICAtIGNsb2NrczogUmVmZXJlbmNlIHRvIHRoZSBwYXJlbnQgY2xvY2tzICgiZXh0YWwxIiBhbmQgImV4dGFsMiIpCisKKyAgLSAjY2xvY2stY2VsbHM6IE11c3QgYmUgMQorCisgIC0gY2xvY2stb3V0cHV0LW5hbWVzOiBUaGUgbmFtZXMgb2YgdGhlIGNsb2Nrcy4gU3VwcG9ydGVkIGNsb2NrcyBhcmUgIm1haW4iLAorICAgICJwbGwwIiwgInBsbDEiLCAicGxsMiIsICJwbGwycyIsICJwbGwyaCIsICJ6IiwgInoyIiwgImkiLCAibTMiLCAiYiIsCisgICAgIm0xIiwgIm0yIiwgInp4IiwgInpzIiwgYW5kICJocCIuCisKKworRXhhbXBsZQorLS0tLS0tLQorCisgICAgICAgIGNwZ19jbG9ja3M6IGNwZ19jbG9ja3NAZTYxNTAwMDAgeworICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAicmVuZXNhcyxyOGE3M2E0LWNwZy1jbG9ja3MiOworICAgICAgICAgICAgICAgIHJlZyA9IDwwIDB4ZTYxNTAwMDAgMCAweDEwMDAwPjsKKyAgICAgICAgICAgICAgICBjbG9ja3MgPSA8JmV4dGFsMV9jbGs+LCA8JmV4dGFsMl9jbGs+OworICAgICAgICAgICAgICAgICNjbG9jay1jZWxscyA9IDwxPjsKKyAgICAgICAgICAgICAgICBjbG9jay1vdXRwdXQtbmFtZXMgPSAibWFpbiIsICJwbGwwIiwgInBsbDEiLCAicGxsMiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBsbDJzIiwgInBsbDJoIiwgInoiLCAiejIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpIiwgIm0zIiwgImIiLCAibTEiLCAibTIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ6eCIsICJ6cyIsICJocCI7CisgICAgICAgIH07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcmVuZXNhcyxyOGE3NzQwLWNwZy1jbG9ja3MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3JlbmVzYXMscjhhNzc0MC1jcGctY2xvY2tzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzAzMzAyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3JlbmVzYXMscjhhNzc0MC1jcGctY2xvY2tzLnR4dApAQCAtMCwwICsxLDQxIEBACitUaGVzZSBiaW5kaW5ncyBzaG91bGQgYmUgY29uc2lkZXJlZCBFWFBFUklNRU5UQUwgZm9yIG5vdy4KKworKiBSZW5lc2FzIFI4QTc3NDAgIENsb2NrIFB1bHNlIEdlbmVyYXRvciAoQ1BHKQorCitUaGUgQ1BHIGdlbmVyYXRlcyBjb3JlIGNsb2NrcyBmb3IgdGhlIFI4QTc3NDAgU29DLiBJdCBpbmNsdWRlcyB0aHJlZSBQTExzCithbmQgc2V2ZXJhbCBmaXhlZCByYXRpbyBhbmQgdmFyaWFibGUgcmF0aW8gZGl2aWRlcnMuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlOiBNdXN0IGJlICJyZW5lc2FzLHI4YTc3NDAtY3BnLWNsb2NrcyIKKworICAtIHJlZzogQmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIG1lbW9yeSByZXNvdXJjZSB1c2VkIGJ5IHRoZSBDUEcKKworICAtIGNsb2NrczogUmVmZXJlbmNlIHRvIHRoZSB0aHJlZSBwYXJlbnQgY2xvY2tzCisgIC0gI2Nsb2NrLWNlbGxzOiBNdXN0IGJlIDEKKyAgLSBjbG9jay1vdXRwdXQtbmFtZXM6IFRoZSBuYW1lcyBvZiB0aGUgY2xvY2tzLiBTdXBwb3J0ZWQgY2xvY2tzIGFyZQorICAgICJzeXN0ZW0iLCAicGxsYzAiLCAicGxsYzEiLCAicGxsYzIiLCAiciIsICJ1c2IyNHMiLCAiaSIsICJ6ZyIsICJiIiwKKyAgICAibTEiLCAiaHAiLCAiaHBwIiwgInVzYnAiLCAicyIsICJ6YiIsICJtMyIsIGFuZCAiY3AiLgorCisgIC0gcmVuZXNhcyxtb2RlOiBib2FyZC1zcGVjaWZpYyBzZXR0aW5ncyBvZiB0aGUgTURfQ0sqIGJpdHMKKworCitFeGFtcGxlCistLS0tLS0tCisKK2NwZ19jbG9ja3M6IGNwZ19jbG9ja3NAZTYxNTAwMDAgeworICAgICAgICBjb21wYXRpYmxlID0gInJlbmVzYXMscjhhNzc0MC1jcGctY2xvY2tzIjsKKyAgICAgICAgcmVnID0gPDB4ZTYxNTAwMDAgMHgxMDAwMD47CisgICAgICAgIGNsb2NrcyA9IDwmZXh0YWwxX2Nsaz4sIDwmZXh0YWwyX2Nsaz4sIDwmZXh0YWxyX2Nsaz47CisgICAgICAgICNjbG9jay1jZWxscyA9IDwxPjsKKyAgICAgICAgY2xvY2stb3V0cHV0LW5hbWVzID0gInN5c3RlbSIsICJwbGxjMCIsICJwbGxjMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwbGxjMiIsICJyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzYjI0cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpIiwgInpnIiwgImIiLCAibTEiLCAiaHAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHBwIiwgInVzYnAiLCAicyIsICJ6YiIsICJtMyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjcCI7Cit9OworCismY3BnX2Nsb2NrcyB7CisJcmVuZXNhcyxtb2RlID0gPDB4MDU+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9yZW5lc2FzLHI4YTc3NzgtY3BnLWNsb2Nrcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcmVuZXNhcyxyOGE3Nzc4LWNwZy1jbG9ja3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0Y2RhZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcmVuZXNhcyxyOGE3Nzc4LWNwZy1jbG9ja3MudHh0CkBAIC0wLDAgKzEsNDggQEAKKyogUmVuZXNhcyBSOEE3Nzc4IENsb2NrIFB1bHNlIEdlbmVyYXRvciAoQ1BHKQorCitUaGUgQ1BHIGdlbmVyYXRlcyBjb3JlIGNsb2NrcyBmb3IgdGhlIFI4QTc3NzguIEl0IGluY2x1ZGVzIHR3byBQTExzIGFuZAorc2V2ZXJhbCBmaXhlZCByYXRpbyBkaXZpZGVycy4KK1RoZSBDUEcgYWxzbyBwcm92aWRlcyBhIENsb2NrIERvbWFpbiBmb3IgU29DIGRldmljZXMsIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlCitDUEcgTW9kdWxlIFN0b3AgKE1TVFApIENsb2Nrcy4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGU6IE11c3QgYmUgInJlbmVzYXMscjhhNzc3OC1jcGctY2xvY2tzIgorICAtIHJlZzogQmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIG1lbW9yeSByZXNvdXJjZSB1c2VkIGJ5IHRoZSBDUEcKKyAgLSAjY2xvY2stY2VsbHM6IE11c3QgYmUgMQorICAtIGNsb2NrLW91dHB1dC1uYW1lczogVGhlIG5hbWVzIG9mIHRoZSBjbG9ja3MuIFN1cHBvcnRlZCBjbG9ja3MgYXJlCisgICAgInBsbGEiLCAicGxsYiIsICJiIiwgIm91dCIsICJwIiwgInMiLCBhbmQgInMxIi4KKyAgLSAjcG93ZXItZG9tYWluLWNlbGxzOiBNdXN0IGJlIDAKKworU29DIGRldmljZXMgdGhhdCBhcmUgcGFydCBvZiB0aGUgQ1BHL01TVFAgQ2xvY2sgRG9tYWluIGFuZCBjYW4gYmUgcG93ZXItbWFuYWdlZAordGhyb3VnaCBhbiBNU1RQIGNsb2NrIHNob3VsZCByZWZlciB0byB0aGUgQ1BHIGRldmljZSBub2RlIGluIHRoZWlyCisicG93ZXItZG9tYWlucyIgcHJvcGVydHksIGFzIGRvY3VtZW50ZWQgYnkgdGhlIGdlbmVyaWMgUE0gZG9tYWluIGJpbmRpbmdzIGluCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvcG93ZXJfZG9tYWluLnR4dC4KKworCitFeGFtcGxlcworLS0tLS0tLS0KKworICAtIENQRyBkZXZpY2Ugbm9kZToKKworCWNwZ19jbG9ja3M6IGNwZ19jbG9ja3NAZmZjODAwMDAgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMscjhhNzc3OC1jcGctY2xvY2tzIjsKKwkJcmVnID0gPDB4ZmZjODAwMDAgMHg4MD47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKwkJY2xvY2tzID0gPCZleHRhbF9jbGs+OworCQljbG9jay1vdXRwdXQtbmFtZXMgPSAicGxsYSIsICJwbGxiIiwgImIiLAorCQkJCSAgICAgIm91dCIsICJwIiwgInMiLCAiczEiOworCQkjcG93ZXItZG9tYWluLWNlbGxzID0gPDA+OworCX07CisKKworICAtIENQRy9NU1RQIENsb2NrIERvbWFpbiBtZW1iZXIgZGV2aWNlIG5vZGU6CisKKwlzZGhpMDogc2RAZmZlNGMwMDAgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMsc2RoaS1yOGE3Nzc4IjsKKwkJcmVnID0gPDB4ZmZlNGMwMDAgMHgxMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgODcgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWNsb2NrcyA9IDwmbXN0cDNfY2xrcyBSOEE3Nzc4X0NMS19TREhJMD47CisJCXBvd2VyLWRvbWFpbnMgPSA8JmNwZ19jbG9ja3M+OworCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcmVuZXNhcyxyOGE3Nzc5LWNwZy1jbG9ja3MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3JlbmVzYXMscjhhNzc3OS1jcGctY2xvY2tzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzgxNTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3JlbmVzYXMscjhhNzc3OS1jcGctY2xvY2tzLnR4dApAQCAtMCwwICsxLDQ5IEBACisqIFJlbmVzYXMgUjhBNzc3OSBDbG9jayBQdWxzZSBHZW5lcmF0b3IgKENQRykKKworVGhlIENQRyBnZW5lcmF0ZXMgY29yZSBjbG9ja3MgZm9yIHRoZSBSOEE3Nzc5LiBJdCBpbmNsdWRlcyBvbmUgUExMIGFuZAorc2V2ZXJhbCBmaXhlZCByYXRpbyBkaXZpZGVycy4KK1RoZSBDUEcgYWxzbyBwcm92aWRlcyBhIENsb2NrIERvbWFpbiBmb3IgU29DIGRldmljZXMsIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlCitDUEcgTW9kdWxlIFN0b3AgKE1TVFApIENsb2Nrcy4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGU6IE11c3QgYmUgInJlbmVzYXMscjhhNzc3OS1jcGctY2xvY2tzIgorICAtIHJlZzogQmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIG1lbW9yeSByZXNvdXJjZSB1c2VkIGJ5IHRoZSBDUEcKKworICAtIGNsb2NrczogUmVmZXJlbmNlIHRvIHRoZSBwYXJlbnQgY2xvY2sKKyAgLSAjY2xvY2stY2VsbHM6IE11c3QgYmUgMQorICAtIGNsb2NrLW91dHB1dC1uYW1lczogVGhlIG5hbWVzIG9mIHRoZSBjbG9ja3MuIFN1cHBvcnRlZCBjbG9ja3MgYXJlICJwbGxhIiwKKyAgICAieiIsICJ6cyIsICJzIiwgInMxIiwgInAiLCAiYiIsICJvdXQiLgorICAtICNwb3dlci1kb21haW4tY2VsbHM6IE11c3QgYmUgMAorCitTb0MgZGV2aWNlcyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBDUEcvTVNUUCBDbG9jayBEb21haW4gYW5kIGNhbiBiZSBwb3dlci1tYW5hZ2VkCit0aHJvdWdoIGFuIE1TVFAgY2xvY2sgc2hvdWxkIHJlZmVyIHRvIHRoZSBDUEcgZGV2aWNlIG5vZGUgaW4gdGhlaXIKKyJwb3dlci1kb21haW5zIiBwcm9wZXJ0eSwgYXMgZG9jdW1lbnRlZCBieSB0aGUgZ2VuZXJpYyBQTSBkb21haW4gYmluZGluZ3MgaW4KK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9wb3dlcl9kb21haW4udHh0LgorCisKK0V4YW1wbGVzCistLS0tLS0tLQorCisgIC0gQ1BHIGRldmljZSBub2RlOgorCisJY3BnX2Nsb2NrczogY3BnX2Nsb2Nrc0BmZmM4MDAwMCB7CisJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxyOGE3Nzc5LWNwZy1jbG9ja3MiOworCQlyZWcgPSA8MHhmZmM4MDAwMCAweDMwPjsKKwkJY2xvY2tzID0gPCZleHRhbF9jbGs+OworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJwbGxhIiwgInoiLCAienMiLCAicyIsICJzMSIsICJwIiwKKwkJICAgICAgICAgICAgICAgICAgICAgImIiLCAib3V0IjsKKwkJI3Bvd2VyLWRvbWFpbi1jZWxscyA9IDwwPjsKKwl9OworCisKKyAgLSBDUEcvTVNUUCBDbG9jayBEb21haW4gbWVtYmVyIGRldmljZSBub2RlOgorCisJc2F0YTogc2F0YUBmYzYwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxzYXRhLXI4YTc3NzkiLCAicmVuZXNhcyxyY2FyLXNhdGEiOworCQlyZWcgPSA8MHhmYzYwMDAwMCAweDIwMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMTAwIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQljbG9ja3MgPSA8Jm1zdHAxX2Nsa3MgUjhBNzc3OV9DTEtfU0FUQT47CisJCXBvd2VyLWRvbWFpbnMgPSA8JmNwZ19jbG9ja3M+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcmVuZXNhcyxyY2FyLWdlbjItY3BnLWNsb2Nrcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcmVuZXNhcyxyY2FyLWdlbjItY3BnLWNsb2Nrcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE5YThlZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9yZW5lc2FzLHJjYXItZ2VuMi1jcGctY2xvY2tzLnR4dApAQCAtMCwwICsxLDU5IEBACisqIFJlbmVzYXMgUi1DYXIgR2VuMiBDbG9jayBQdWxzZSBHZW5lcmF0b3IgKENQRykKKworVGhlIENQRyBnZW5lcmF0ZXMgY29yZSBjbG9ja3MgZm9yIHRoZSBSLUNhciBHZW4yIFNvQ3MuIEl0IGluY2x1ZGVzIHRocmVlIFBMTHMKK2FuZCBzZXZlcmFsIGZpeGVkIHJhdGlvIGRpdmlkZXJzLgorVGhlIENQRyBhbHNvIHByb3ZpZGVzIGEgQ2xvY2sgRG9tYWluIGZvciBTb0MgZGV2aWNlcywgaW4gY29tYmluYXRpb24gd2l0aCB0aGUKK0NQRyBNb2R1bGUgU3RvcCAoTVNUUCkgQ2xvY2tzLgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZTogTXVzdCBiZSBvbmUgb2YKKyAgICAtICJyZW5lc2FzLHI4YTc3OTAtY3BnLWNsb2NrcyIgZm9yIHRoZSByOGE3NzkwIENQRworICAgIC0gInJlbmVzYXMscjhhNzc5MS1jcGctY2xvY2tzIiBmb3IgdGhlIHI4YTc3OTEgQ1BHCisgICAgLSAicmVuZXNhcyxyOGE3NzkzLWNwZy1jbG9ja3MiIGZvciB0aGUgcjhhNzc5MyBDUEcKKyAgICAtICJyZW5lc2FzLHI4YTc3OTQtY3BnLWNsb2NrcyIgZm9yIHRoZSByOGE3Nzk0IENQRworICAgIGFuZCAicmVuZXNhcyxyY2FyLWdlbjItY3BnLWNsb2NrcyIgYXMgYSBmYWxsYmFjay4KKworICAtIHJlZzogQmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIG1lbW9yeSByZXNvdXJjZSB1c2VkIGJ5IHRoZSBDUEcKKworICAtIGNsb2NrczogUmVmZXJlbmNlcyB0byB0aGUgcGFyZW50IGNsb2NrczogZmlyc3QgdG8gdGhlIEVYVEFMIGNsb2NrLCBzZWNvbmQKKyAgICB0byB0aGUgVVNCX0VYVEFMIGNsb2NrCisgIC0gI2Nsb2NrLWNlbGxzOiBNdXN0IGJlIDEKKyAgLSBjbG9jay1vdXRwdXQtbmFtZXM6IFRoZSBuYW1lcyBvZiB0aGUgY2xvY2tzLiBTdXBwb3J0ZWQgY2xvY2tzIGFyZSAibWFpbiIsCisgICAgInBsbDAiLCAicGxsMSIsICJwbGwzIiwgImxiIiwgInFzcGkiLCAic2RoIiwgInNkMCIsICJzZDEiLCAieiIsICJyY2FuIiwgYW5kCisgICAgImFkc3AiCisgIC0gI3Bvd2VyLWRvbWFpbi1jZWxsczogTXVzdCBiZSAwCisKK1NvQyBkZXZpY2VzIHRoYXQgYXJlIHBhcnQgb2YgdGhlIENQRy9NU1RQIENsb2NrIERvbWFpbiBhbmQgY2FuIGJlIHBvd2VyLW1hbmFnZWQKK3Rocm91Z2ggYW4gTVNUUCBjbG9jayBzaG91bGQgcmVmZXIgdG8gdGhlIENQRyBkZXZpY2Ugbm9kZSBpbiB0aGVpcgorInBvd2VyLWRvbWFpbnMiIHByb3BlcnR5LCBhcyBkb2N1bWVudGVkIGJ5IHRoZSBnZW5lcmljIFBNIGRvbWFpbiBiaW5kaW5ncyBpbgorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3Bvd2VyX2RvbWFpbi50eHQuCisKKworRXhhbXBsZXMKKy0tLS0tLS0tCisKKyAgLSBDUEcgZGV2aWNlIG5vZGU6CisKKwljcGdfY2xvY2tzOiBjcGdfY2xvY2tzQGU2MTUwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLHI4YTc3OTAtY3BnLWNsb2NrcyIsCisJCQkgICAgICJyZW5lc2FzLHJjYXItZ2VuMi1jcGctY2xvY2tzIjsKKwkJcmVnID0gPDAgMHhlNjE1MDAwMCAwIDB4MTAwMD47CisJCWNsb2NrcyA9IDwmZXh0YWxfY2xrICZ1c2JfZXh0YWxfY2xrPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQljbG9jay1vdXRwdXQtbmFtZXMgPSAibWFpbiIsICJwbGwwLCAicGxsMSIsICJwbGwzIiwKKwkJCQkgICAgICJsYiIsICJxc3BpIiwgInNkaCIsICJzZDAiLCAic2QxIiwgInoiLAorCQkJCSAgICAgInJjYW4iLCAiYWRzcCI7CisJCSNwb3dlci1kb21haW4tY2VsbHMgPSA8MD47CisJfTsKKworCisgIC0gQ1BHL01TVFAgQ2xvY2sgRG9tYWluIG1lbWJlciBkZXZpY2Ugbm9kZToKKworCXRoZXJtYWxAZTYxZjAwMDAgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMsdGhlcm1hbC1yOGE3NzkwIiwgInJlbmVzYXMscmNhci10aGVybWFsIjsKKwkJcmVnID0gPDAgMHhlNjFmMDAwMCAwIDB4MTQ+LCA8MCAweGU2MWYwMTAwIDAgMHgzOD47CisJCWludGVycnVwdHMgPSA8MCA2OSBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJY2xvY2tzID0gPCZtc3RwNV9jbGtzIFI4QTc3OTBfQ0xLX1RIRVJNQUw+OworCQlwb3dlci1kb21haW5zID0gPCZjcGdfY2xvY2tzPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3JlbmVzYXMscnotY3BnLWNsb2Nrcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcmVuZXNhcyxyei1jcGctY2xvY2tzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjUxYTMzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3JlbmVzYXMscnotY3BnLWNsb2Nrcy50eHQKQEAgLTAsMCArMSw1NCBAQAorKiBSZW5lc2FzIFJaIENsb2NrIFB1bHNlIEdlbmVyYXRvciAoQ1BHKQorCitUaGUgQ1BHIGdlbmVyYXRlcyBjb3JlIGNsb2NrcyBmb3IgdGhlIFJaIFNvQ3MuIEl0IGluY2x1ZGVzIHRoZSBQTEwsIHZhcmlhYmxlCitDUFUgYW5kIEdQVSBjbG9ja3MsIGFuZCBzZXZlcmFsIGZpeGVkIHJhdGlvIGRpdmlkZXJzLgorVGhlIENQRyBhbHNvIHByb3ZpZGVzIGEgQ2xvY2sgRG9tYWluIGZvciBTb0MgZGV2aWNlcywgaW4gY29tYmluYXRpb24gd2l0aCB0aGUKK0NQRyBNb2R1bGUgU3RvcCAoTVNUUCkgQ2xvY2tzLgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZTogTXVzdCBiZSBvbmUgb2YKKyAgICAtICJyZW5lc2FzLHI3czcyMTAwLWNwZy1jbG9ja3MiIGZvciB0aGUgcjdzNzIxMDAgQ1BHCisgICAgYW5kICJyZW5lc2FzLHJ6LWNwZy1jbG9ja3MiIGFzIGEgZmFsbGJhY2suCisgIC0gcmVnOiBCYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgbWVtb3J5IHJlc291cmNlIHVzZWQgYnkgdGhlIENQRworICAtIGNsb2NrczogUmVmZXJlbmNlcyB0byBwb3NzaWJsZSBwYXJlbnQgY2xvY2tzLiBPcmRlciBtdXN0IG1hdGNoIGNsb2NrIG1vZGVzCisgICAgaW4gdGhlIGRhdGFzaGVldC4gRm9yIHRoZSByN3M3MjEwMCwgdGhpcyBpcyBleHRhbCwgdXNiX3gxLgorICAtICNjbG9jay1jZWxsczogTXVzdCBiZSAxCisgIC0gY2xvY2stb3V0cHV0LW5hbWVzOiBUaGUgbmFtZXMgb2YgdGhlIGNsb2Nrcy4gU3VwcG9ydGVkIGNsb2NrcyBhcmUgInBsbCIsCisgICAgImkiLCBhbmQgImciCisgIC0gI3Bvd2VyLWRvbWFpbi1jZWxsczogTXVzdCBiZSAwCisKK1NvQyBkZXZpY2VzIHRoYXQgYXJlIHBhcnQgb2YgdGhlIENQRy9NU1RQIENsb2NrIERvbWFpbiBhbmQgY2FuIGJlIHBvd2VyLW1hbmFnZWQKK3Rocm91Z2ggYW4gTVNUUCBjbG9jayBzaG91bGQgcmVmZXIgdG8gdGhlIENQRyBkZXZpY2Ugbm9kZSBpbiB0aGVpcgorInBvd2VyLWRvbWFpbnMiIHByb3BlcnR5LCBhcyBkb2N1bWVudGVkIGJ5IHRoZSBnZW5lcmljIFBNIGRvbWFpbiBiaW5kaW5ncyBpbgorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3Bvd2VyX2RvbWFpbi50eHQuCisKKworRXhhbXBsZXMKKy0tLS0tLS0tCisKKyAgLSBDUEcgZGV2aWNlIG5vZGU6CisKKwljcGdfY2xvY2tzOiBjcGdfY2xvY2tzQGZjZmUwMDAwIHsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQljb21wYXRpYmxlID0gInJlbmVzYXMscjdzNzIxMDAtY3BnLWNsb2NrcyIsCisJCQkgICAgICJyZW5lc2FzLHJ6LWNwZy1jbG9ja3MiOworCQlyZWcgPSA8MHhmY2ZlMDAwMCAweDE4PjsKKwkJY2xvY2tzID0gPCZleHRhbF9jbGs+LCA8JnVzYl94MV9jbGs+OworCQljbG9jay1vdXRwdXQtbmFtZXMgPSAicGxsIiwgImkiLCAiZyI7CisJCSNwb3dlci1kb21haW4tY2VsbHMgPSA8MD47CisJfTsKKworCisgIC0gQ1BHL01TVFAgQ2xvY2sgRG9tYWluIG1lbWJlciBkZXZpY2Ugbm9kZToKKworCW10dTI6IHRpbWVyQGZjZmYwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLG10dTItcjdzNzIxMDAiLCAicmVuZXNhcyxtdHUyIjsKKwkJcmVnID0gPDB4ZmNmZjAwMDAgMHg0MDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMTA3IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQlpbnRlcnJ1cHQtbmFtZXMgPSAidGdpMGEiOworCQljbG9ja3MgPSA8Jm1zdHAzX2Nsa3MgUjdTNzIxMDBfQ0xLX01UVTI+OworCQljbG9jay1uYW1lcyA9ICJmY2siOworCQlwb3dlci1kb21haW5zID0gPCZjcGdfY2xvY2tzPjsKKwkJc3RhdHVzID0gImRpc2FibGVkIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3JlbmVzYXMsc2g3M2EwLWNwZy1jbG9ja3MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3JlbmVzYXMsc2g3M2EwLWNwZy1jbG9ja3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4OTc4ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcmVuZXNhcyxzaDczYTAtY3BnLWNsb2Nrcy50eHQKQEAgLTAsMCArMSwzNSBAQAorVGhlc2UgYmluZGluZ3Mgc2hvdWxkIGJlIGNvbnNpZGVyZWQgRVhQRVJJTUVOVEFMIGZvciBub3cuCisKKyogUmVuZXNhcyBTSDczQTAgQ2xvY2sgUHVsc2UgR2VuZXJhdG9yIChDUEcpCisKK1RoZSBDUEcgZ2VuZXJhdGVzIGNvcmUgY2xvY2tzIGZvciB0aGUgU0g3M0EwIFNvQy4gSXQgaW5jbHVkZXMgZm91ciBQTExzCithbmQgc2V2ZXJhbCBmaXhlZCByYXRpbyBkaXZpZGVycy4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGU6IE11c3QgYmUgInJlbmVzYXMsc2g3M2EwLWNwZy1jbG9ja3MiCisKKyAgLSByZWc6IEJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBtZW1vcnkgcmVzb3VyY2UgdXNlZCBieSB0aGUgQ1BHCisKKyAgLSBjbG9ja3M6IFJlZmVyZW5jZSB0byB0aGUgcGFyZW50IGNsb2NrcyAoImV4dGFsMSIgYW5kICJleHRhbDIiKQorCisgIC0gI2Nsb2NrLWNlbGxzOiBNdXN0IGJlIDEKKworICAtIGNsb2NrLW91dHB1dC1uYW1lczogVGhlIG5hbWVzIG9mIHRoZSBjbG9ja3MuIFN1cHBvcnRlZCBjbG9ja3MgYXJlICJtYWluIiwKKyAgICAicGxsMCIsICJwbGwxIiwgInBsbDIiLCAicGxsMyIsICJkc2kwcGh5IiwgImRzaTFwaHkiLCAiemciLCAibTMiLCAiYiIsCisgICAgIm0xIiwgIm0yIiwgInoiLCAiengiLCBhbmQgImhwIi4KKworCitFeGFtcGxlCistLS0tLS0tCisKKyAgICAgICAgY3BnX2Nsb2NrczogY3BnX2Nsb2Nrc0BlNjE1MDAwMCB7CisgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJyZW5lc2FzLHNoNzNhMC1jcGctY2xvY2tzIjsKKyAgICAgICAgICAgICAgICByZWcgPSA8MCAweGU2MTUwMDAwIDAgMHgxMDAwMD47CisgICAgICAgICAgICAgICAgY2xvY2tzID0gPCZleHRhbDFfY2xrPiwgPCZleHRhbDJfY2xrPjsKKyAgICAgICAgICAgICAgICAjY2xvY2stY2VsbHMgPSA8MT47CisgICAgICAgICAgICAgICAgY2xvY2stb3V0cHV0LW5hbWVzID0gIm1haW4iLCAicGxsMCIsICJwbGwxIiwgInBsbDIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwbGwzIiwgImRzaTBwaHkiLCAiZHNpMXBoeSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInpnIiwgIm0zIiwgImIiLCAibTEiLCAibTIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ6IiwgInp4IiwgImhwIjsKKyAgICAgICAgfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9yb2NrY2hpcCxyazMxODgtY3J1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9yb2NrY2hpcCxyazMxODgtY3J1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzJiZjVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3JvY2tjaGlwLHJrMzE4OC1jcnUudHh0CkBAIC0wLDAgKzEsNjEgQEAKKyogUm9ja2NoaXAgUkszMTg4L1JLMzA2NiBDbG9jayBhbmQgUmVzZXQgVW5pdAorCitUaGUgUkszMTg4L1JLMzA2NiBjbG9jayBjb250cm9sbGVyIGdlbmVyYXRlcyBhbmQgc3VwcGxpZXMgY2xvY2sgdG8gdmFyaW91cworY29udHJvbGxlcnMgd2l0aGluIHRoZSBTb0MgYW5kIGFsc28gaW1wbGVtZW50cyBhIHJlc2V0IGNvbnRyb2xsZXIgZm9yIFNvQworcGVyaXBoZXJhbHMuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJyb2NrY2hpcCxyazMxODgtY3J1IiwgInJvY2tjaGlwLHJrMzE4OGEtY3J1IiBvcgorCQkJInJvY2tjaGlwLHJrMzA2NmEtY3J1IgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorLSAjY2xvY2stY2VsbHM6IHNob3VsZCBiZSAxLgorLSAjcmVzZXQtY2VsbHM6IHNob3VsZCBiZSAxLgorCitPcHRpb25hbCBQcm9wZXJ0aWVzOgorCistIHJvY2tjaGlwLGdyZjogcGhhbmRsZSB0byB0aGUgc3lzY29uIG1hbmFnaW5nIHRoZSAiZ2VuZXJhbCByZWdpc3RlciBmaWxlcyIKKyAgSWYgbWlzc2luZyBwbGwgcmF0ZXMgYXJlIG5vdCBjaGFuZ2FibGUsIGR1ZSB0byB0aGUgbWlzc2luZyBwbGwgbG9jayBzdGF0dXMuCisKK0VhY2ggY2xvY2sgaXMgYXNzaWduZWQgYW4gaWRlbnRpZmllciBhbmQgY2xpZW50IG5vZGVzIGNhbiB1c2UgdGhpcyBpZGVudGlmaWVyCit0byBzcGVjaWZ5IHRoZSBjbG9jayB3aGljaCB0aGV5IGNvbnN1bWUuIEFsbCBhdmFpbGFibGUgY2xvY2tzIGFyZSBkZWZpbmVkIGFzCitwcmVwcm9jZXNzb3IgbWFjcm9zIGluIHRoZSBkdC1iaW5kaW5ncy9jbG9jay9yazMxODgtY3J1LmggYW5kCitkdC1iaW5kaW5ncy9jbG9jay9yazMwNjYtY3J1LmggaGVhZGVycyBhbmQgY2FuIGJlIHVzZWQgaW4gZGV2aWNlIHRyZWUgc291cmNlcy4KK1NpbWlsYXIgbWFjcm9zIGV4aXN0IGZvciB0aGUgcmVzZXQgc291cmNlcyBpbiB0aGVzZSBmaWxlcy4KKworRXh0ZXJuYWwgY2xvY2tzOgorCitUaGVyZSBhcmUgc2V2ZXJhbCBjbG9ja3MgdGhhdCBhcmUgZ2VuZXJhdGVkIG91dHNpZGUgdGhlIFNvQy4gSXQgaXMgZXhwZWN0ZWQKK3RoYXQgdGhleSBhcmUgZGVmaW5lZCB1c2luZyBzdGFuZGFyZCBjbG9jayBiaW5kaW5ncyB3aXRoIGZvbGxvd2luZworY2xvY2stb3V0cHV0LW5hbWVzOgorIC0gInhpbjI0bSIgLSBjcnlzdGFsIGlucHV0IC0gcmVxdWlyZWQsCisgLSAieGluMzJrIiAtIHJ0YyBjbG9jayAtIG9wdGlvbmFsLAorIC0gInhpbjI3bSIgLSAyN21oeiBjcnlzdGFsIGlucHV0IG9uIHJrMzA2NiAtIG9wdGlvbmFsLAorIC0gImV4dF9oc2FkYyIgLSBleHRlcm5hbCBIU0FEQyBjbG9jayAtIG9wdGlvbmFsLAorIC0gImV4dF9jaWYwIiAtIGV4dGVybmFsIGNhbWVyYSBjbG9jayAtIG9wdGlvbmFsLAorIC0gImV4dF9ybWlpIiAtIGV4dGVybmFsIFJNSUkgY2xvY2sgLSBvcHRpb25hbCwKKyAtICJleHRfanRhZyIgLSBleHRlcm5hbEpUQUcgY2xvY2sgLSBvcHRpb25hbAorCitFeGFtcGxlOiBDbG9jayBjb250cm9sbGVyIG5vZGU6CisKKwljcnU6IGNydUAyMDAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicm9ja2NoaXAscmszMTg4LWNydSI7CisJCXJlZyA9IDwweDIwMDAwMDAwIDB4MTAwMD47CisJCXJvY2tjaGlwLGdyZiA9IDwmZ3JmPjsKKworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJCSNyZXNldC1jZWxscyA9IDwxPjsKKwl9OworCitFeGFtcGxlOiBVQVJUIGNvbnRyb2xsZXIgbm9kZSB0aGF0IGNvbnN1bWVzIHRoZSBjbG9jayBnZW5lcmF0ZWQgYnkgdGhlIGNsb2NrCisgIGNvbnRyb2xsZXI6CisKKwl1YXJ0MDogc2VyaWFsQDEwMTI0MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzbnBzLGR3LWFwYi11YXJ0IjsKKwkJcmVnID0gPDB4MTAxMjQwMDAgMHg0MDA+OworCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMzQgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCXJlZy1zaGlmdCA9IDwyPjsKKwkJcmVnLWlvLXdpZHRoID0gPDE+OworCQljbG9ja3MgPSA8JmNydSBTQ0xLX1VBUlQwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3JvY2tjaGlwLHJrMzI4OC1jcnUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3JvY2tjaGlwLHJrMzI4OC1jcnUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZmJiNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svcm9ja2NoaXAscmszMjg4LWNydS50eHQKQEAgLTAsMCArMSw2MSBAQAorKiBSb2NrY2hpcCBSSzMyODggQ2xvY2sgYW5kIFJlc2V0IFVuaXQKKworVGhlIFJLMzI4OCBjbG9jayBjb250cm9sbGVyIGdlbmVyYXRlcyBhbmQgc3VwcGxpZXMgY2xvY2sgdG8gdmFyaW91cworY29udHJvbGxlcnMgd2l0aGluIHRoZSBTb0MgYW5kIGFsc28gaW1wbGVtZW50cyBhIHJlc2V0IGNvbnRyb2xsZXIgZm9yIFNvQworcGVyaXBoZXJhbHMuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJyb2NrY2hpcCxyazMyODgtY3J1IgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorLSAjY2xvY2stY2VsbHM6IHNob3VsZCBiZSAxLgorLSAjcmVzZXQtY2VsbHM6IHNob3VsZCBiZSAxLgorCitPcHRpb25hbCBQcm9wZXJ0aWVzOgorCistIHJvY2tjaGlwLGdyZjogcGhhbmRsZSB0byB0aGUgc3lzY29uIG1hbmFnaW5nIHRoZSAiZ2VuZXJhbCByZWdpc3RlciBmaWxlcyIKKyAgSWYgbWlzc2luZyBwbGwgcmF0ZXMgYXJlIG5vdCBjaGFuZ2FibGUsIGR1ZSB0byB0aGUgbWlzc2luZyBwbGwgbG9jayBzdGF0dXMuCisKK0VhY2ggY2xvY2sgaXMgYXNzaWduZWQgYW4gaWRlbnRpZmllciBhbmQgY2xpZW50IG5vZGVzIGNhbiB1c2UgdGhpcyBpZGVudGlmaWVyCit0byBzcGVjaWZ5IHRoZSBjbG9jayB3aGljaCB0aGV5IGNvbnN1bWUuIEFsbCBhdmFpbGFibGUgY2xvY2tzIGFyZSBkZWZpbmVkIGFzCitwcmVwcm9jZXNzb3IgbWFjcm9zIGluIHRoZSBkdC1iaW5kaW5ncy9jbG9jay9yazMyODgtY3J1LmggaGVhZGVycyBhbmQgY2FuIGJlCit1c2VkIGluIGRldmljZSB0cmVlIHNvdXJjZXMuIFNpbWlsYXIgbWFjcm9zIGV4aXN0IGZvciB0aGUgcmVzZXQgc291cmNlcyBpbgordGhlc2UgZmlsZXMuCisKK0V4dGVybmFsIGNsb2NrczoKKworVGhlcmUgYXJlIHNldmVyYWwgY2xvY2tzIHRoYXQgYXJlIGdlbmVyYXRlZCBvdXRzaWRlIHRoZSBTb0MuIEl0IGlzIGV4cGVjdGVkCit0aGF0IHRoZXkgYXJlIGRlZmluZWQgdXNpbmcgc3RhbmRhcmQgY2xvY2sgYmluZGluZ3Mgd2l0aCBmb2xsb3dpbmcKK2Nsb2NrLW91dHB1dC1uYW1lczoKKyAtICJ4aW4yNG0iIC0gY3J5c3RhbCBpbnB1dCAtIHJlcXVpcmVkLAorIC0gInhpbjMyayIgLSBydGMgY2xvY2sgLSBvcHRpb25hbCwKKyAtICJleHRfaTJzIiAtIGV4dGVybmFsIEkyUyBjbG9jayAtIG9wdGlvbmFsLAorIC0gImV4dF9oc2FkYyIgLSBleHRlcm5hbCBIU0FEQyBjbG9jayAtIG9wdGlvbmFsLAorIC0gImV4dF9lZHBfMjRtIiAtIGV4dGVybmFsIGRpc3BsYXkgcG9ydCBjbG9jayAtIG9wdGlvbmFsLAorIC0gImV4dF92aXAiIC0gZXh0ZXJuYWwgVklQIGNsb2NrIC0gb3B0aW9uYWwsCisgLSAiZXh0X2lzcCIgLSBleHRlcm5hbCBJU1AgY2xvY2sgLSBvcHRpb25hbCwKKyAtICJleHRfanRhZyIgLSBleHRlcm5hbCBKVEFHIGNsb2NrIC0gb3B0aW9uYWwKKworRXhhbXBsZTogQ2xvY2sgY29udHJvbGxlciBub2RlOgorCisJY3J1OiBjcnVAMjAwMDAwMDAgeworCQljb21wYXRpYmxlID0gInJvY2tjaGlwLHJrMzE4OC1jcnUiOworCQlyZWcgPSA8MHgyMDAwMDAwMCAweDEwMDA+OworCQlyb2NrY2hpcCxncmYgPSA8JmdyZj47CisKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQkjcmVzZXQtY2VsbHMgPSA8MT47CisJfTsKKworRXhhbXBsZTogVUFSVCBjb250cm9sbGVyIG5vZGUgdGhhdCBjb25zdW1lcyB0aGUgY2xvY2sgZ2VuZXJhdGVkIGJ5IHRoZSBjbG9jaworICBjb250cm9sbGVyOgorCisJdWFydDA6IHNlcmlhbEAxMDEyNDAwMCB7CisJCWNvbXBhdGlibGUgPSAic25wcyxkdy1hcGItdWFydCI7CisJCXJlZyA9IDwweDEwMTI0MDAwIDB4NDAwPjsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDM0IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQlyZWctc2hpZnQgPSA8Mj47CisJCXJlZy1pby13aWR0aCA9IDwxPjsKKwkJY2xvY2tzID0gPCZjcnUgU0NMS19VQVJUMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9yb2NrY2hpcCxyazMzNjgtY3J1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9yb2NrY2hpcCxyazMzNjgtY3J1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzhiYmNmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3JvY2tjaGlwLHJrMzM2OC1jcnUudHh0CkBAIC0wLDAgKzEsNjEgQEAKKyogUm9ja2NoaXAgUkszMzY4IENsb2NrIGFuZCBSZXNldCBVbml0CisKK1RoZSBSSzMzNjggY2xvY2sgY29udHJvbGxlciBnZW5lcmF0ZXMgYW5kIHN1cHBsaWVzIGNsb2NrIHRvIHZhcmlvdXMKK2NvbnRyb2xsZXJzIHdpdGhpbiB0aGUgU29DIGFuZCBhbHNvIGltcGxlbWVudHMgYSByZXNldCBjb250cm9sbGVyIGZvciBTb0MKK3BlcmlwaGVyYWxzLgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAicm9ja2NoaXAscmszMzY4LWNydSIKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgIHJlZ2lvbi4KKy0gI2Nsb2NrLWNlbGxzOiBzaG91bGQgYmUgMS4KKy0gI3Jlc2V0LWNlbGxzOiBzaG91bGQgYmUgMS4KKworT3B0aW9uYWwgUHJvcGVydGllczoKKworLSByb2NrY2hpcCxncmY6IHBoYW5kbGUgdG8gdGhlIHN5c2NvbiBtYW5hZ2luZyB0aGUgImdlbmVyYWwgcmVnaXN0ZXIgZmlsZXMiCisgIElmIG1pc3NpbmcsIHBsbCByYXRlcyBhcmUgbm90IGNoYW5nZWFibGUsIGR1ZSB0byB0aGUgbWlzc2luZyBwbGwgbG9jayBzdGF0dXMuCisKK0VhY2ggY2xvY2sgaXMgYXNzaWduZWQgYW4gaWRlbnRpZmllciBhbmQgY2xpZW50IG5vZGVzIGNhbiB1c2UgdGhpcyBpZGVudGlmaWVyCit0byBzcGVjaWZ5IHRoZSBjbG9jayB3aGljaCB0aGV5IGNvbnN1bWUuIEFsbCBhdmFpbGFibGUgY2xvY2tzIGFyZSBkZWZpbmVkIGFzCitwcmVwcm9jZXNzb3IgbWFjcm9zIGluIHRoZSBkdC1iaW5kaW5ncy9jbG9jay9yazMzNjgtY3J1LmggaGVhZGVycyBhbmQgY2FuIGJlCit1c2VkIGluIGRldmljZSB0cmVlIHNvdXJjZXMuIFNpbWlsYXIgbWFjcm9zIGV4aXN0IGZvciB0aGUgcmVzZXQgc291cmNlcyBpbgordGhlc2UgZmlsZXMuCisKK0V4dGVybmFsIGNsb2NrczoKKworVGhlcmUgYXJlIHNldmVyYWwgY2xvY2tzIHRoYXQgYXJlIGdlbmVyYXRlZCBvdXRzaWRlIHRoZSBTb0MuIEl0IGlzIGV4cGVjdGVkCit0aGF0IHRoZXkgYXJlIGRlZmluZWQgdXNpbmcgc3RhbmRhcmQgY2xvY2sgYmluZGluZ3Mgd2l0aCBmb2xsb3dpbmcKK2Nsb2NrLW91dHB1dC1uYW1lczoKKyAtICJ4aW4yNG0iIC0gY3J5c3RhbCBpbnB1dCAtIHJlcXVpcmVkLAorIC0gInhpbjMyayIgLSBydGMgY2xvY2sgLSBvcHRpb25hbCwKKyAtICJleHRfaTJzIiAtIGV4dGVybmFsIEkyUyBjbG9jayAtIG9wdGlvbmFsLAorIC0gImV4dF9nbWFjIiAtIGV4dGVybmFsIEdNQUMgY2xvY2sgLSBvcHRpb25hbAorIC0gImV4dF9oc2FkYyIgLSBleHRlcm5hbCBIU0FEQyBjbG9jayAtIG9wdGlvbmFsLAorIC0gImV4dF9pc3AiIC0gZXh0ZXJuYWwgSVNQIGNsb2NrIC0gb3B0aW9uYWwsCisgLSAiZXh0X2p0YWciIC0gZXh0ZXJuYWwgSlRBRyBjbG9jayAtIG9wdGlvbmFsCisgLSAiZXh0X3ZpcCIgLSBleHRlcm5hbCBWSVAgY2xvY2sgLSBvcHRpb25hbCwKKyAtICJ1c2JvdGdfb3V0IiAtIG91dHB1dCBjbG9jayBvZiB0aGUgcGxsIGluIHRoZSBvdGcgcGh5CisKK0V4YW1wbGU6IENsb2NrIGNvbnRyb2xsZXIgbm9kZToKKworCWNydTogY2xvY2stY29udHJvbGxlckBmZjc2MDAwMCB7CisJCWNvbXBhdGlibGUgPSAicm9ja2NoaXAscmszMzY4LWNydSI7CisJCXJlZyA9IDwweDAgMHhmZjc2MDAwMCAweDAgMHgxMDAwPjsKKwkJcm9ja2NoaXAsZ3JmID0gPCZncmY+OworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJCSNyZXNldC1jZWxscyA9IDwxPjsKKwl9OworCitFeGFtcGxlOiBVQVJUIGNvbnRyb2xsZXIgbm9kZSB0aGF0IGNvbnN1bWVzIHRoZSBjbG9jayBnZW5lcmF0ZWQgYnkgdGhlIGNsb2NrCisgIGNvbnRyb2xsZXI6CisKKwl1YXJ0MDogc2VyaWFsQDEwMTI0MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzbnBzLGR3LWFwYi11YXJ0IjsKKwkJcmVnID0gPDB4MTAxMjQwMDAgMHg0MDA+OworCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMzQgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCXJlZy1zaGlmdCA9IDwyPjsKKwkJcmVnLWlvLXdpZHRoID0gPDE+OworCQljbG9ja3MgPSA8JmNydSBTQ0xLX1VBUlQwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3JvY2tjaGlwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9yb2NrY2hpcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJmNjc2OQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9yb2NrY2hpcC50eHQKQEAgLTAsMCArMSw3NyBAQAorRGV2aWNlIFRyZWUgQ2xvY2sgYmluZGluZ3MgZm9yIGFyY2gtcm9ja2NoaXAKKworVGhpcyBiaW5kaW5nIHVzZXMgdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nWzFdLgorCitbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCis9PSBHYXRlIGNsb2NrcyA9PQorCitUaGVzZSBiaW5kaW5ncyBhcmUgZGVwcmVjYXRlZCEKK1BsZWFzZSB1c2UgdGhlIHNvYyBzcGVjaWZpYyBDUlUgYmluZGluZ3MgaW5zdGVhZC4KKworVGhlIGdhdGUgcmVnaXN0ZXJzIGZvcm0gYSBjb250aW51b3MgYmxvY2sgd2hpY2ggbWFrZXMgdGhlIGR0IG5vZGUKK3N0cnVjdHVyZSBhIG1hdHRlciBvZiB0YXN0ZSwgYXMgZWl0aGVyIGFsbCBnYXRlcyBjYW4gYmUgcHV0IGludG8KK29uZSBnYXRlIGNsb2NrIHNwYW5uaW5nIGFsbCByZWdpc3RlcnMgb3IgdGhleSBjYW4gYmUgZGl2aWRlZCBpbnRvCit0aGUgMTAgaW5kaXZpZHVhbCBnYXRlcyBjb250YWluaW5nIDE2IGNsb2NrcyBlYWNoLgorVGhlIGNvZGUgc3VwcG9ydHMgYm90aCBhcHByb2FjaGVzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogInJvY2tjaGlwLHJrMjkyOC1nYXRlLWNsayIKKy0gcmVnIDogc2hhbGwgYmUgdGhlIGNvbnRyb2wgcmVnaXN0ZXIgYWRkcmVzcyhlcykgZm9yIHRoZSBjbG9jay4KKy0gI2Nsb2NrLWNlbGxzIDogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzsgc2hhbGwgYmUgc2V0IHRvIDEKKy0gY2xvY2stb3V0cHV0LW5hbWVzIDogdGhlIGNvcnJlc3BvbmRpbmcgZ2F0ZSBuYW1lcyB0aGF0IHRoZSBjbG9jayBjb250cm9scworLSBjbG9ja3MgOiBzaG91bGQgY29udGFpbiB0aGUgcGFyZW50IGNsb2NrIGZvciBlYWNoIGluZGl2aWR1YWwgZ2F0ZSwKKyAgdGhlcmVmb3JlIHRoZSBudW1iZXIgb2YgY2xvY2tzIGVsZW1lbnRzIHNob3VsZCBtYXRjaCB0aGUgbnVtYmVyIG9mCisgIGNsb2NrLW91dHB1dC1uYW1lcworCitFeGFtcGxlIHVzaW5nIG11bHRpcGxlIGdhdGUgY2xvY2tzOgorCisJCWNsa19nYXRlczA6IGdhdGUtY2xrQDIwMDAwMGQwIHsKKwkJCWNvbXBhdGlibGUgPSAicm9ja2NoaXAscmsyOTI4LWdhdGUtY2xrIjsKKwkJCXJlZyA9IDwweDIwMDAwMGQwIDB4ND47CisJCQljbG9ja3MgPSA8JmR1bW15PiwgPCZkdW1teT4sCisJCQkJIDwmZHVtbXk+LCA8JmR1bW15PiwKKwkJCQkgPCZkdW1teT4sIDwmZHVtbXk+LAorCQkJCSA8JmR1bW15PiwgPCZkdW1teT4sCisJCQkJIDwmZHVtbXk+LCA8JmR1bW15PiwKKwkJCQkgPCZkdW1teT4sIDwmZHVtbXk+LAorCQkJCSA8JmR1bW15PiwgPCZkdW1teT4sCisJCQkJIDwmZHVtbXk+LCA8JmR1bW15PjsKKworCQkJY2xvY2stb3V0cHV0LW5hbWVzID0KKwkJCQkiZ2F0ZV9jb3JlX3BlcmlwaCIsICJnYXRlX2NwdV9ncGxsIiwKKwkJCQkiZ2F0ZV9kZHJwaHkiLCAiZ2F0ZV9hY2xrX2NwdSIsCisJCQkJImdhdGVfaGNsa19jcHUiLCAiZ2F0ZV9wY2xrX2NwdSIsCisJCQkJImdhdGVfYXRjbGtfY3B1IiwgImdhdGVfaTJzMCIsCisJCQkJImdhdGVfaTJzMF9mcmFjIiwgImdhdGVfaTJzMSIsCisJCQkJImdhdGVfaTJzMV9mcmFjIiwgImdhdGVfaTJzMiIsCisJCQkJImdhdGVfaTJzMl9mcmFjIiwgImdhdGVfc3BkaWYiLAorCQkJCSJnYXRlX3NwZGlmX2ZyYWMiLCAiZ2F0ZV90ZXN0Y2xrIjsKKworCQkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQl9OworCisJCWNsa19nYXRlczE6IGdhdGUtY2xrQDIwMDAwMGQ0IHsKKwkJCWNvbXBhdGlibGUgPSAicm9ja2NoaXAscmsyOTI4LWdhdGUtY2xrIjsKKwkJCXJlZyA9IDwweDIwMDAwMGQ0IDB4ND47CisJCQljbG9ja3MgPSA8JnhpbjI0bT4sIDwmeGluMjRtPiwKKwkJCQkgPCZ4aW4yNG0+LCA8JmR1bW15PiwKKwkJCQkgPCZkdW1teT4sIDwmeGluMjRtPiwKKwkJCQkgPCZ4aW4yNG0+LCA8JmR1bW15PiwKKwkJCQkgPCZ4aW4yNG0+LCA8JmR1bW15PiwKKwkJCQkgPCZ4aW4yNG0+LCA8JmR1bW15PiwKKwkJCQkgPCZ4aW4yNG0+LCA8JmR1bW15PiwKKwkJCQkgPCZ4aW4yNG0+LCA8JmR1bW15PjsKKworCQkJY2xvY2stb3V0cHV0LW5hbWVzID0KKwkJCQkiZ2F0ZV90aW1lcjAiLCAiZ2F0ZV90aW1lcjEiLAorCQkJCSJnYXRlX3RpbWVyMiIsICJnYXRlX2p0YWciLAorCQkJCSJnYXRlX2FjbGtfbGNkYzFfc3JjIiwgImdhdGVfb3RncGh5MCIsCisJCQkJImdhdGVfb3RncGh5MSIsICJnYXRlX2Rkcl9ncGxsIiwKKwkJCQkiZ2F0ZV91YXJ0MCIsICJnYXRlX2ZyYWNfdWFydDAiLAorCQkJCSJnYXRlX3VhcnQxIiwgImdhdGVfZnJhY191YXJ0MSIsCisJCQkJImdhdGVfdWFydDIiLCAiZ2F0ZV9mcmFjX3VhcnQyIiwKKwkJCQkiZ2F0ZV91YXJ0MyIsICJnYXRlX2ZyYWNfdWFydDMiOworCisJCQkjY2xvY2stY2VsbHMgPSA8MT47CisJCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc2Ftc3VuZyxzM2MyNDEwLWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zYW1zdW5nLHMzYzI0MTAtY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyMjUwNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc2Ftc3VuZyxzM2MyNDEwLWNsb2NrLnR4dApAQCAtMCwwICsxLDUwIEBACisqIFNhbXN1bmcgUzNDMjQxMCBDbG9jayBDb250cm9sbGVyCisKK1RoZSBTM0MyNDEwIGNsb2NrIGNvbnRyb2xsZXIgZ2VuZXJhdGVzIGFuZCBzdXBwbGllcyBjbG9jayB0byB2YXJpb3VzIGNvbnRyb2xsZXJzCit3aXRoaW4gdGhlIFNvQy4gVGhlIGNsb2NrIGJpbmRpbmcgZGVzY3JpYmVkIGhlcmUgaXMgYXBwbGljYWJsZSB0byB0aGUgczNjMjQxMCwKK3MzYzI0NDAgYW5kIHMzYzI0NDIgU29DcyBpbiB0aGUgczNjMjR4IGZhbWlseS4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcuCisgIC0gInNhbXN1bmcsczNjMjQxMC1jbG9jayIgLSBjb250cm9sbGVyIGNvbXBhdGlibGUgd2l0aCBTM0MyNDEwIFNvQy4KKyAgLSAic2Ftc3VuZyxzM2MyNDQwLWNsb2NrIiAtIGNvbnRyb2xsZXIgY29tcGF0aWJsZSB3aXRoIFMzQzI0NDAgU29DLgorICAtICJzYW1zdW5nLHMzYzI0NDItY2xvY2siIC0gY29udHJvbGxlciBjb21wYXRpYmxlIHdpdGggUzNDMjQ0MiBTb0MuCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICByZWdpb24uCistICNjbG9jay1jZWxsczogc2hvdWxkIGJlIDEuCisKK0VhY2ggY2xvY2sgaXMgYXNzaWduZWQgYW4gaWRlbnRpZmllciBhbmQgY2xpZW50IG5vZGVzIGNhbiB1c2UgdGhpcyBpZGVudGlmaWVyCit0byBzcGVjaWZ5IHRoZSBjbG9jayB3aGljaCB0aGV5IGNvbnN1bWUuIFNvbWUgb2YgdGhlIGNsb2NrcyBhcmUgYXZhaWxhYmxlIG9ubHkKK29uIGEgcGFydGljdWxhciBTb0MuCisKK0FsbCBhdmFpbGFibGUgY2xvY2tzIGFyZSBkZWZpbmVkIGFzIHByZXByb2Nlc3NvciBtYWNyb3MgaW4KK2R0LWJpbmRpbmdzL2Nsb2NrL3MzYzI0MTAuaCBoZWFkZXIgYW5kIGNhbiBiZSB1c2VkIGluIGRldmljZQordHJlZSBzb3VyY2VzLgorCitFeHRlcm5hbCBjbG9ja3M6CisKK1RoZSB4dGkgY2xvY2sgdXNlZCBhcyBpbnB1dCBmb3IgdGhlIHBsbHMgaXMgZ2VuZXJhdGVkIG91dHNpZGUgdGhlIFNvQy4gSXQgaXMKK2V4cGVjdGVkIHRoYXQgaXMgYXJlIGRlZmluZWQgdXNpbmcgc3RhbmRhcmQgY2xvY2sgYmluZGluZ3Mgd2l0aCBhCitjbG9jay1vdXRwdXQtbmFtZXMgdmFsdWUgb2YgInh0aSIuCisKK0V4YW1wbGU6IENsb2NrIGNvbnRyb2xsZXIgbm9kZToKKworCWNsb2NrczogY2xvY2stY29udHJvbGxlckA0YzAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxzM2MyNDEwLWNsb2NrIjsKKwkJcmVnID0gPDB4NGMwMDAwMDAgMHgyMD47CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKwl9OworCitFeGFtcGxlOiBVQVJUIGNvbnRyb2xsZXIgbm9kZSB0aGF0IGNvbnN1bWVzIHRoZSBjbG9jayBnZW5lcmF0ZWQgYnkgdGhlIGNsb2NrCisgIGNvbnRyb2xsZXIgKHJlZmVyIHRvIHRoZSBzdGFuZGFyZCBjbG9jayBiaW5kaW5ncyBmb3IgaW5mb3JtYXRpb24gYWJvdXQKKyAgImNsb2NrcyIgYW5kICJjbG9jay1uYW1lcyIgcHJvcGVydGllcyk6CisKKwlzZXJpYWxANTAwMDQwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsczNjMjQ0MC11YXJ0IjsKKwkJcmVnID0gPDB4NTAwMDQwMDAgMHg0MDAwPjsKKwkJaW50ZXJydXB0cyA9IDwxIDIzIDMgND4sIDwxIDIzIDQgND47CisJCWNsb2NrLW5hbWVzID0gInVhcnQiLCAiY2xrX3VhcnRfYmF1ZDIiOworCQljbG9ja3MgPSA8JmNsb2NrcyBQQ0xLX1VBUlQwPiwgPCZjbG9ja3MgUENMS19VQVJUMD47CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zYW1zdW5nLHMzYzI0MTItY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3NhbXN1bmcsczNjMjQxMi1jbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI0MzA5NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zYW1zdW5nLHMzYzI0MTItY2xvY2sudHh0CkBAIC0wLDAgKzEsNTAgQEAKKyogU2Ftc3VuZyBTM0MyNDEyIENsb2NrIENvbnRyb2xsZXIKKworVGhlIFMzQzI0MTIgY2xvY2sgY29udHJvbGxlciBnZW5lcmF0ZXMgYW5kIHN1cHBsaWVzIGNsb2NrIHRvIHZhcmlvdXMgY29udHJvbGxlcnMKK3dpdGhpbiB0aGUgU29DLiBUaGUgY2xvY2sgYmluZGluZyBkZXNjcmliZWQgaGVyZSBpcyBhcHBsaWNhYmxlIHRvIHRoZSBzM2MyNDEyCithbmQgczNjMjQxMyBTb0NzIGluIHRoZSBzM2MyNHggZmFtaWx5LgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAic2Ftc3VuZyxzM2MyNDEyLWNsb2NrIgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorLSAjY2xvY2stY2VsbHM6IHNob3VsZCBiZSAxLgorCitFYWNoIGNsb2NrIGlzIGFzc2lnbmVkIGFuIGlkZW50aWZpZXIgYW5kIGNsaWVudCBub2RlcyBjYW4gdXNlIHRoaXMgaWRlbnRpZmllcgordG8gc3BlY2lmeSB0aGUgY2xvY2sgd2hpY2ggdGhleSBjb25zdW1lLiBTb21lIG9mIHRoZSBjbG9ja3MgYXJlIGF2YWlsYWJsZSBvbmx5CitvbiBhIHBhcnRpY3VsYXIgU29DLgorCitBbGwgYXZhaWxhYmxlIGNsb2NrcyBhcmUgZGVmaW5lZCBhcyBwcmVwcm9jZXNzb3IgbWFjcm9zIGluCitkdC1iaW5kaW5ncy9jbG9jay9zM2MyNDEyLmggaGVhZGVyIGFuZCBjYW4gYmUgdXNlZCBpbiBkZXZpY2UKK3RyZWUgc291cmNlcy4KKworRXh0ZXJuYWwgY2xvY2tzOgorCitUaGVyZSBhcmUgc2V2ZXJhbCBjbG9ja3MgdGhhdCBhcmUgZ2VuZXJhdGVkIG91dHNpZGUgdGhlIFNvQy4gSXQgaXMgZXhwZWN0ZWQKK3RoYXQgdGhleSBhcmUgZGVmaW5lZCB1c2luZyBzdGFuZGFyZCBjbG9jayBiaW5kaW5ncyB3aXRoIGZvbGxvd2luZworY2xvY2stb3V0cHV0LW5hbWVzOgorIC0gInh0aSIgLSBjcnlzdGFsIGlucHV0IC0gcmVxdWlyZWQsCisgLSAiZXh0IiAtIGV4dGVybmFsIGNsb2NrIHNvdXJjZSAtIG9wdGlvbmFsLAorCitFeGFtcGxlOiBDbG9jayBjb250cm9sbGVyIG5vZGU6CisKKwljbG9ja3M6IGNsb2NrLWNvbnRyb2xsZXJANGMwMDAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsczNjMjQxMi1jbG9jayI7CisJCXJlZyA9IDwweDRjMDAwMDAwIDB4MjA+OworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJfTsKKworRXhhbXBsZTogVUFSVCBjb250cm9sbGVyIG5vZGUgdGhhdCBjb25zdW1lcyB0aGUgY2xvY2sgZ2VuZXJhdGVkIGJ5IHRoZSBjbG9jaworICBjb250cm9sbGVyIChyZWZlciB0byB0aGUgc3RhbmRhcmQgY2xvY2sgYmluZGluZ3MgZm9yIGluZm9ybWF0aW9uIGFib3V0CisgICJjbG9ja3MiIGFuZCAiY2xvY2stbmFtZXMiIHByb3BlcnRpZXMpOgorCisJc2VyaWFsQDUwMDA0MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLHMzYzI0MTItdWFydCI7CisJCXJlZyA9IDwweDUwMDA0MDAwIDB4NDAwMD47CisJCWludGVycnVwdHMgPSA8MSAyMyAzIDQ+LCA8MSAyMyA0IDQ+OworCQljbG9jay1uYW1lcyA9ICJ1YXJ0IiwgImNsa191YXJ0X2JhdWQyIiwgImNsa191YXJ0X2JhdWQzIjsKKwkJY2xvY2tzID0gPCZjbG9ja3MgUENMS19VQVJUMD4sIDwmY2xvY2tzIFBDTEtfVUFSVDA+LAorCQkJIDwmY2xvY2tzIFNDTEtfVUFSVD47CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zYW1zdW5nLHMzYzI0NDMtY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3NhbXN1bmcsczNjMjQ0My1jbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY3YmIwNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zYW1zdW5nLHMzYzI0NDMtY2xvY2sudHh0CkBAIC0wLDAgKzEsNTYgQEAKKyogU2Ftc3VuZyBTM0MyNDQzIENsb2NrIENvbnRyb2xsZXIKKworVGhlIFMzQzI0NDMgY2xvY2sgY29udHJvbGxlciBnZW5lcmF0ZXMgYW5kIHN1cHBsaWVzIGNsb2NrIHRvIHZhcmlvdXMgY29udHJvbGxlcnMKK3dpdGhpbiB0aGUgU29DLiBUaGUgY2xvY2sgYmluZGluZyBkZXNjcmliZWQgaGVyZSBpcyBhcHBsaWNhYmxlIHRvIGFsbCBTb0NzIGluCit0aGUgczNjMjR4IGZhbWlseSBzdGFydGluZyB3aXRoIHRoZSBzM2MyNDQzLgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZy4KKyAgLSAic2Ftc3VuZyxzM2MyNDE2LWNsb2NrIiAtIGNvbnRyb2xsZXIgY29tcGF0aWJsZSB3aXRoIFMzQzI0MTYgU29DLgorICAtICJzYW1zdW5nLHMzYzI0NDMtY2xvY2siIC0gY29udHJvbGxlciBjb21wYXRpYmxlIHdpdGggUzNDMjQ0MyBTb0MuCisgIC0gInNhbXN1bmcsczNjMjQ1MC1jbG9jayIgLSBjb250cm9sbGVyIGNvbXBhdGlibGUgd2l0aCBTM0MyNDUwIFNvQy4KKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgIHJlZ2lvbi4KKy0gI2Nsb2NrLWNlbGxzOiBzaG91bGQgYmUgMS4KKworRWFjaCBjbG9jayBpcyBhc3NpZ25lZCBhbiBpZGVudGlmaWVyIGFuZCBjbGllbnQgbm9kZXMgY2FuIHVzZSB0aGlzIGlkZW50aWZpZXIKK3RvIHNwZWNpZnkgdGhlIGNsb2NrIHdoaWNoIHRoZXkgY29uc3VtZS4gU29tZSBvZiB0aGUgY2xvY2tzIGFyZSBhdmFpbGFibGUgb25seQorb24gYSBwYXJ0aWN1bGFyIFNvQy4KKworQWxsIGF2YWlsYWJsZSBjbG9ja3MgYXJlIGRlZmluZWQgYXMgcHJlcHJvY2Vzc29yIG1hY3JvcyBpbgorZHQtYmluZGluZ3MvY2xvY2svczNjMjQ0My5oIGhlYWRlciBhbmQgY2FuIGJlIHVzZWQgaW4gZGV2aWNlCit0cmVlIHNvdXJjZXMuCisKK0V4dGVybmFsIGNsb2NrczoKKworVGhlcmUgYXJlIHNldmVyYWwgY2xvY2tzIHRoYXQgYXJlIGdlbmVyYXRlZCBvdXRzaWRlIHRoZSBTb0MuIEl0IGlzIGV4cGVjdGVkCit0aGF0IHRoZXkgYXJlIGRlZmluZWQgdXNpbmcgc3RhbmRhcmQgY2xvY2sgYmluZGluZ3Mgd2l0aCBmb2xsb3dpbmcKK2Nsb2NrLW91dHB1dC1uYW1lczoKKyAtICJ4dGkiIC0gY3J5c3RhbCBpbnB1dCAtIHJlcXVpcmVkLAorIC0gImV4dCIgLSBleHRlcm5hbCBjbG9jayBzb3VyY2UgLSBvcHRpb25hbCwKKyAtICJleHRfaTJzIiAtIGV4dGVybmFsIEkyUyBjbG9jayAtIG9wdGlvbmFsLAorIC0gImV4dF91YXJ0IiAtIGV4dGVybmFsIHVhcnQgY2xvY2sgLSBvcHRpb25hbCwKKworRXhhbXBsZTogQ2xvY2sgY29udHJvbGxlciBub2RlOgorCisJY2xvY2tzOiBjbG9jay1jb250cm9sbGVyQDRjMDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLHMzYzI0MTYtY2xvY2siOworCQlyZWcgPSA8MHg0YzAwMDAwMCAweDQwPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCX07CisKK0V4YW1wbGU6IFVBUlQgY29udHJvbGxlciBub2RlIHRoYXQgY29uc3VtZXMgdGhlIGNsb2NrIGdlbmVyYXRlZCBieSB0aGUgY2xvY2sKKyAgY29udHJvbGxlciAocmVmZXIgdG8gdGhlIHN0YW5kYXJkIGNsb2NrIGJpbmRpbmdzIGZvciBpbmZvcm1hdGlvbiBhYm91dAorICAiY2xvY2tzIiBhbmQgImNsb2NrLW5hbWVzIiBwcm9wZXJ0aWVzKToKKworCXNlcmlhbEA1MDAwNDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxzM2MyNDQwLXVhcnQiOworCQlyZWcgPSA8MHg1MDAwNDAwMCAweDQwMDA+OworCQlpbnRlcnJ1cHRzID0gPDEgMjMgMyA0PiwgPDEgMjMgNCA0PjsKKwkJY2xvY2stbmFtZXMgPSAidWFydCIsICJjbGtfdWFydF9iYXVkMiIsCisJCQkJImNsa191YXJ0X2JhdWQzIjsKKwkJY2xvY2tzID0gPCZjbG9ja3MgUENMS19VQVJUMD4sIDwmY2xvY2tzIFBDTEtfVUFSVDA+LAorCQkJCTwmY2xvY2tzIFNDTEtfVUFSVD47CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zYW1zdW5nLHMzYzY0eHgtY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3NhbXN1bmcsczNjNjR4eC1jbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmExNzFkYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zYW1zdW5nLHMzYzY0eHgtY2xvY2sudHh0CkBAIC0wLDAgKzEsNzcgQEAKKyogU2Ftc3VuZyBTM0M2NHh4IENsb2NrIENvbnRyb2xsZXIKKworVGhlIFMzQzY0eHggY2xvY2sgY29udHJvbGxlciBnZW5lcmF0ZXMgYW5kIHN1cHBsaWVzIGNsb2NrIHRvIHZhcmlvdXMgY29udHJvbGxlcnMKK3dpdGhpbiB0aGUgU29DLiBUaGUgY2xvY2sgYmluZGluZyBkZXNjcmliZWQgaGVyZSBpcyBhcHBsaWNhYmxlIHRvIGFsbCBTb0NzIGluCit0aGUgUzNDNjR4eCBmYW1pbHkuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nLgorICAtICJzYW1zdW5nLHMzYzY0MDAtY2xvY2siIC0gY29udHJvbGxlciBjb21wYXRpYmxlIHdpdGggUzNDNjQwMCBTb0MuCisgIC0gInNhbXN1bmcsczNjNjQxMC1jbG9jayIgLSBjb250cm9sbGVyIGNvbXBhdGlibGUgd2l0aCBTM0M2NDEwIFNvQy4KKworLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorCistICNjbG9jay1jZWxsczogc2hvdWxkIGJlIDEuCisKK0VhY2ggY2xvY2sgaXMgYXNzaWduZWQgYW4gaWRlbnRpZmllciBhbmQgY2xpZW50IG5vZGVzIGNhbiB1c2UgdGhpcyBpZGVudGlmaWVyCit0byBzcGVjaWZ5IHRoZSBjbG9jayB3aGljaCB0aGV5IGNvbnN1bWUuIFNvbWUgb2YgdGhlIGNsb2NrcyBhcmUgYXZhaWxhYmxlIG9ubHkKK29uIGEgcGFydGljdWxhciBTM0M2NHh4IFNvQyBhbmQgdGhpcyBpcyBzcGVjaWZpZWQgd2hlcmUgYXBwbGljYWJsZS4KKworQWxsIGF2YWlsYWJsZSBjbG9ja3MgYXJlIGRlZmluZWQgYXMgcHJlcHJvY2Vzc29yIG1hY3JvcyBpbgorZHQtYmluZGluZ3MvY2xvY2svc2Ftc3VuZyxzM2M2NHh4LWNsb2NrLmggaGVhZGVyIGFuZCBjYW4gYmUgdXNlZCBpbiBkZXZpY2UKK3RyZWUgc291cmNlcy4KKworRXh0ZXJuYWwgY2xvY2tzOgorCitUaGVyZSBhcmUgc2V2ZXJhbCBjbG9ja3MgdGhhdCBhcmUgZ2VuZXJhdGVkIG91dHNpZGUgdGhlIFNvQy4gSXQgaXMgZXhwZWN0ZWQKK3RoYXQgdGhleSBhcmUgZGVmaW5lZCB1c2luZyBzdGFuZGFyZCBjbG9jayBiaW5kaW5ncyB3aXRoIGZvbGxvd2luZworY2xvY2stb3V0cHV0LW5hbWVzOgorIC0gImZpbl9wbGwiIC0gUExMIGlucHV0IGNsb2NrICh4dGFsL2V4dGNsaykgLSByZXF1aXJlZCwKKyAtICJ4dXNieHRpIiAtIFVTQiB4dGFsIC0gcmVxdWlyZWQsCisgLSAiaWlzY2RjbGswIiAtIEkyUzAgY29kZWMgY2xvY2sgLSBvcHRpb25hbCwKKyAtICJpaXNjZGNsazEiIC0gSTJTMSBjb2RlYyBjbG9jayAtIG9wdGlvbmFsLAorIC0gImlpc2NkY2xrMiIgLSBJMlMyIGNvZGVjIGNsb2NrIC0gb3B0aW9uYWwsCisgLSAicGNtY2RjbGswIiAtIFBDTTAgY29kZWMgY2xvY2sgLSBvcHRpb25hbCwKKyAtICJwY21jZGNsazEiIC0gUENNMSBjb2RlYyBjbG9jayAtIG9wdGlvbmFsLCBvbmx5IFMzQzY0MTAuCisKK0V4YW1wbGU6IENsb2NrIGNvbnRyb2xsZXIgbm9kZToKKworCWNsb2NrOiBjbG9jay1jb250cm9sbGVyQDdlMDBmMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLHMzYzY0MTAtY2xvY2siOworCQlyZWcgPSA8MHg3ZTAwZjAwMCAweDEwMDA+OworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJfTsKKworRXhhbXBsZTogUmVxdWlyZWQgZXh0ZXJuYWwgY2xvY2tzOgorCisJZmluX3BsbDogY2xvY2stZmluLXBsbCB7CisJCWNvbXBhdGlibGUgPSAiZml4ZWQtY2xvY2siOworCQljbG9jay1vdXRwdXQtbmFtZXMgPSAiZmluX3BsbCI7CisJCWNsb2NrLWZyZXF1ZW5jeSA9IDwxMjAwMDAwMD47CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwl9OworCisJeHVzYnh0aTogY2xvY2steHVzYnh0aSB7CisJCWNvbXBhdGlibGUgPSAiZml4ZWQtY2xvY2siOworCQljbG9jay1vdXRwdXQtbmFtZXMgPSAieHVzYnh0aSI7CisJCWNsb2NrLWZyZXF1ZW5jeSA9IDw0ODAwMDAwMD47CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwl9OworCitFeGFtcGxlOiBVQVJUIGNvbnRyb2xsZXIgbm9kZSB0aGF0IGNvbnN1bWVzIHRoZSBjbG9jayBnZW5lcmF0ZWQgYnkgdGhlIGNsb2NrCisgIGNvbnRyb2xsZXIgKHJlZmVyIHRvIHRoZSBzdGFuZGFyZCBjbG9jayBiaW5kaW5ncyBmb3IgaW5mb3JtYXRpb24gYWJvdXQKKyAgImNsb2NrcyIgYW5kICJjbG9jay1uYW1lcyIgcHJvcGVydGllcyk6CisKKwkJdWFydDA6IHNlcmlhbEA3ZjAwNTAwMCB7CisJCQljb21wYXRpYmxlID0gInNhbXN1bmcsczNjNjQwMC11YXJ0IjsKKwkJCXJlZyA9IDwweDdmMDA1MDAwIDB4MTAwPjsKKwkJCWludGVycnVwdC1wYXJlbnQgPSA8JnZpYzE+OworCQkJaW50ZXJydXB0cyA9IDw1PjsKKwkJCWNsb2NrLW5hbWVzID0gInVhcnQiLCAiY2xrX3VhcnRfYmF1ZDIiLAorCQkJCQkiY2xrX3VhcnRfYmF1ZDMiOworCQkJY2xvY2tzID0gPCZjbG9jayBQQ0xLX1VBUlQwPiwgPCZjbG9ja3MgUENMS19VQVJUMD4sCisJCQkJCTwmY2xvY2sgU0NMS19VQVJUPjsKKwkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc2Ftc3VuZyxzNXB2MjEwLWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zYW1zdW5nLHM1cHYyMTAtY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZmQ5NDAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc2Ftc3VuZyxzNXB2MjEwLWNsb2NrLnR4dApAQCAtMCwwICsxLDc4IEBACisqIFNhbXN1bmcgUzVQNjQ0Mi9TNVBDMTEwL1M1UFYyMTAgQ2xvY2sgQ29udHJvbGxlcgorCitTYW1zdW5nIFM1UDY0NDIsIFM1UEMxMTAgYW5kIFM1UFYyMTAgU29DcyBjb250YWluIGludGVncmF0ZWQgY2xvY2sKK2NvbnRyb2xsZXIsIHdoaWNoIGdlbmVyYXRlcyBhbmQgc3VwcGxpZXMgY2xvY2sgdG8gdmFyaW91cyBjb250cm9sbGVycword2l0aGluIHRoZSBTb0MuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlIG9uZSBvZiBmb2xsb3dpbmc6CisJLSAic2Ftc3VuZyxzNXB2MjEwLWNsb2NrIiA6IGZvciBjbG9jayBjb250cm9sbGVyIG9mIFNhbXN1bmcKKwkgIFM1UEMxMTAvUzVQVjIxMCBTb0NzLAorCS0gInNhbXN1bmcsczVwNjQ0Mi1jbG9jayIgOiBmb3IgY2xvY2sgY29udHJvbGxlciBvZiBTYW1zdW5nCisJICBTNVA2NDQyIFNvQy4KKworLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorCistICNjbG9jay1jZWxsczogc2hvdWxkIGJlIDEuCisKK0FsbCBhdmFpbGFibGUgY2xvY2tzIGFyZSBkZWZpbmVkIGFzIHByZXByb2Nlc3NvciBtYWNyb3MgaW4KK2R0LWJpbmRpbmdzL2Nsb2NrL3M1cHYyMTAuaCBoZWFkZXIgYW5kIGNhbiBiZSB1c2VkIGluIGRldmljZSB0cmVlIHNvdXJjZXMuCisKK0V4dGVybmFsIGNsb2NrczoKKworVGhlcmUgYXJlIHNldmVyYWwgY2xvY2tzIHRoYXQgYXJlIGdlbmVyYXRlZCBvdXRzaWRlIHRoZSBTb0MuIEl0IGlzIGV4cGVjdGVkCit0aGF0IHRoZXkgYXJlIGRlZmluZWQgdXNpbmcgc3RhbmRhcmQgY2xvY2sgYmluZGluZ3Mgd2l0aCBmb2xsb3dpbmcKK2Nsb2NrLW91dHB1dC1uYW1lczoKKyAtICJ4eHRpIjogZXh0ZXJuYWwgY3J5c3RhbCBvc2NpbGxhdG9yIGNvbm5lY3RlZCB0byBYWFRJIGFuZCBYWFRPIHBpbnMgb2YKK3RoZSBTb0MsCisgLSAieHVzYnh0aSI6IGV4dGVybmFsIGNyeXN0YWwgb3NjaWxsYXRvciBjb25uZWN0ZWQgdG8gWFVTQlhUSSBhbmQgWFVTQlhUTworcGlucyBvZiB0aGUgU29DLAorCitBIHN1YnNldCBvZiBhYm92ZSBjbG9ja3MgYXZhaWxhYmxlIG9uIGdpdmVuIGJvYXJkIHNoYWxsIGJlIHNwZWNpZmllZCBpbgorYm9hcmQgZGV2aWNlIHRyZWUsIGluY2x1ZGluZyB0aGUgc3lzdGVtIGJhc2UgY2xvY2ssIGFzIHNlbGVjdGVkIGJ5IFhPTVswXQorcGluIG9mIHRoZSBTb0MuIFJlZmVyIHRvIGdlbmVyaWMgZml4ZWQgcmF0ZSBjbG9jayBiaW5kaW5ncworZG9jdW1lbnRhdGlvblsxXSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBob3cgdG8gc3BlY2lmeSB0aGVzZSBjbG9ja3MuCisKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svZml4ZWQtY2xvY2sudHh0CisKK0V4YW1wbGU6IENsb2NrIGNvbnRyb2xsZXIgbm9kZToKKworCWNsb2NrOiBjbG9jay1jb250cm9sbGVyQDdlMDBmMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLHM1cHYyMTAtY2xvY2siOworCQlyZWcgPSA8MHg3ZTAwZjAwMCAweDEwMDA+OworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJfTsKKworRXhhbXBsZTogUmVxdWlyZWQgZXh0ZXJuYWwgY2xvY2tzOgorCisJeHh0aTogY2xvY2steHh0aSB7CisJCWNvbXBhdGlibGUgPSAiZml4ZWQtY2xvY2siOworCQljbG9jay1vdXRwdXQtbmFtZXMgPSAieHh0aSI7CisJCWNsb2NrLWZyZXF1ZW5jeSA9IDwyNDAwMDAwMD47CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwl9OworCisJeHVzYnh0aTogY2xvY2steHVzYnh0aSB7CisJCWNvbXBhdGlibGUgPSAiZml4ZWQtY2xvY2siOworCQljbG9jay1vdXRwdXQtbmFtZXMgPSAieHVzYnh0aSI7CisJCWNsb2NrLWZyZXF1ZW5jeSA9IDwyNDAwMDAwMD47CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwl9OworCitFeGFtcGxlOiBVQVJUIGNvbnRyb2xsZXIgbm9kZSB0aGF0IGNvbnN1bWVzIHRoZSBjbG9jayBnZW5lcmF0ZWQgYnkgdGhlIGNsb2NrCisgIGNvbnRyb2xsZXIgKHJlZmVyIHRvIHRoZSBzdGFuZGFyZCBjbG9jayBiaW5kaW5ncyBmb3IgaW5mb3JtYXRpb24gYWJvdXQKKyAgImNsb2NrcyIgYW5kICJjbG9jay1uYW1lcyIgcHJvcGVydGllcyk6CisKKwl1YXJ0MDogc2VyaWFsQGUyOTAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLHM1cHYyMTAtdWFydCI7CisJCXJlZyA9IDwweGUyOTAwMDAwIDB4NDAwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmdmljMT47CisJCWludGVycnVwdHMgPSA8MTA+OworCQljbG9jay1uYW1lcyA9ICJ1YXJ0IiwgImNsa191YXJ0X2JhdWQwIiwKKwkJCQkiY2xrX3VhcnRfYmF1ZDEiOworCQljbG9ja3MgPSA8JmNsb2NrcyBVQVJUMD4sIDwmY2xvY2tzIFVBUlQwPiwKKwkJCQk8JmNsb2NrcyBTQ0xLX1VBUlQwPjsKKwkJc3RhdHVzID0gImRpc2FibGVkIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3NpbGFicyxzaTUxNC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc2lsYWJzLHNpNTE0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTFhOWRiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3NpbGFicyxzaTUxNC50eHQKQEAgLTAsMCArMSwyNCBAQAorQmluZGluZyBmb3IgU2lsaWNvbiBMYWJzIDUxNCBwcm9ncmFtbWFibGUgSTJDIGNsb2NrIGdlbmVyYXRvci4KKworUmVmZXJlbmNlCitUaGlzIGJpbmRpbmcgdXNlcyB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmdbMV0uIERldGFpbHMgYWJvdXQgdGhlIGRldmljZSBjYW4gYmUKK2ZvdW5kIGluIHRoZSBkYXRhc2hlZXRbMl0uCisKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CitbMl0gU2k1MTQgZGF0YXNoZWV0CisgICAgaHR0cDovL3d3dy5zaWxhYnMuY29tL1N1cHBvcnQlMjBEb2N1bWVudHMvVGVjaG5pY2FsRG9jcy9zaTUxNC5wZGYKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGU6IFNoYWxsIGJlICJzaWxhYnMsc2k1MTQiCisgLSByZWc6IEkyQyBkZXZpY2UgYWRkcmVzcy4KKyAtICNjbG9jay1jZWxsczogRnJvbSBjb21tb24gY2xvY2sgYmluZGluZ3M6IFNoYWxsIGJlIDAuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgLSBjbG9jay1vdXRwdXQtbmFtZXM6IEZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmdzLiBSZWNvbW1lbmRlZCB0byBiZSAic2k1MTQiLgorCitFeGFtcGxlOgorCXNpNTE0OiBjbG9jay1nZW5lcmF0b3JANTUgeworCQlyZWcgPSA8MHg1NT47CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJzaWxhYnMsc2k1MTQiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc2lsYWJzLHNpNTM1MS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc2lsYWJzLHNpNTM1MS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhiMjgzMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zaWxhYnMsc2k1MzUxLnR4dApAQCAtMCwwICsxLDEyMSBAQAorQmluZGluZyBmb3IgU2lsaWNvbiBMYWJzIFNpNTM1MWEvYi9jIHByb2dyYW1tYWJsZSBpMmMgY2xvY2sgZ2VuZXJhdG9yLgorCitSZWZlcmVuY2UKK1sxXSBTaTUzNTFBL0IvQyBEYXRhIFNoZWV0CisgICAgaHR0cDovL3d3dy5zaWxhYnMuY29tL1N1cHBvcnQlMjBEb2N1bWVudHMvVGVjaG5pY2FsRG9jcy9TaTUzNTEucGRmCisKK1RoZSBTaTUzNTFhL2IvYyBhcmUgcHJvZ3JhbW1hYmxlIGkyYyBjbG9jayBnZW5lcmF0b3JzIHdpdGggdXAgdG8gOCBvdXRwdXQKK2Nsb2Nrcy4gU2k1MzUxYSBhbHNvIGhhcyBhIHJlZHVjZWQgcGluLWNvdW50IHBhY2thZ2UgKE1TT1AxMCkgd2hlcmUgb25seQorMyBvdXRwdXQgY2xvY2tzIGFyZSBhY2Nlc3NpYmxlLiBUaGUgaW50ZXJuYWwgc3RydWN0dXJlIG9mIHRoZSBjbG9jaworZ2VuZXJhdG9ycyBjYW4gYmUgZm91bmQgaW4gWzFdLgorCis9PUkyQyBkZXZpY2Ugbm9kZT09CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNoYWxsIGJlIG9uZSBvZiAic2lsYWJzLHNpNTM1MXthLGEtbXNvcCxiLGN9Ii4KKy0gcmVnOiBpMmMgZGV2aWNlIGFkZHJlc3MsIHNoYWxsIGJlIDB4NjAgb3IgMHg2MS4KKy0gI2Nsb2NrLWNlbGxzOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBzaGFsbCBiZSBzZXQgdG8gMS4KKy0gY2xvY2tzOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBsaXN0IG9mIHBhcmVudCBjbG9jaworICBoYW5kbGVzLCBzaGFsbCBiZSB4dGFsIHJlZmVyZW5jZSBjbG9jayBvciB4dGFsIGFuZCBjbGtpbiBmb3IKKyAgc2k1MzUxYyBvbmx5LiBDb3JyZXNwb25kaW5nIGNsb2NrIGlucHV0IG5hbWVzIGFyZSAieHRhbCIgYW5kCisgICJjbGtpbiIgcmVzcGVjdGl2ZWx5LgorLSAjYWRkcmVzcy1jZWxsczogc2hhbGwgYmUgc2V0IHRvIDEuCistICNzaXplLWNlbGxzOiBzaGFsbCBiZSBzZXQgdG8gMC4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gc2lsYWJzLHBsbC1zb3VyY2U6IHBhaXIgb2YgKG51bWJlciwgc291cmNlKSBmb3IgZWFjaCBwbGwuIEFsbG93cworICB0byBvdmVyd3JpdGUgY2xvY2sgc291cmNlIG9mIHBsbCBBIChudW1iZXI9MCkgb3IgQiAobnVtYmVyPTEpLgorCis9PUNoaWxkIG5vZGVzPT0KKworRWFjaCBvZiB0aGUgY2xvY2sgb3V0cHV0cyBjYW4gYmUgb3ZlcndyaXR0ZW4gaW5kaXZpZHVhbGx5IGJ5Cit1c2luZyBhIGNoaWxkIG5vZGUgdG8gdGhlIEkyQyBkZXZpY2Ugbm9kZS4gSWYgYSBjaGlsZCBub2RlIGZvciBhIGNsb2NrCitvdXRwdXQgaXMgbm90IHNldCwgdGhlIGVlcHJvbSBjb25maWd1cmF0aW9uIGlzIG5vdCBvdmVyd3JpdHRlbi4KKworUmVxdWlyZWQgY2hpbGQgbm9kZSBwcm9wZXJ0aWVzOgorLSByZWc6IG51bWJlciBvZiBjbG9jayBvdXRwdXQuCisKK09wdGlvbmFsIGNoaWxkIG5vZGUgcHJvcGVydGllczoKKy0gc2lsYWJzLGNsb2NrLXNvdXJjZTogc291cmNlIGNsb2NrIG9mIHRoZSBvdXRwdXQgZGl2aWRlciBzdGFnZSBOLCBzaGFsbCBiZQorICAwID0gbXVsdGlzeW50aCBOCisgIDEgPSBtdWx0aXN5bnRoIDAgZm9yIG91dHB1dCBjbG9ja3MgMC0zLCBlbHNlIG11bHRpc3ludGg0CisgIDIgPSB4dGFsCisgIDMgPSBjbGtpbiAoc2k1MzUxYyBvbmx5KQorLSBzaWxhYnMsZHJpdmUtc3RyZW5ndGg6IG91dHB1dCBkcml2ZSBzdHJlbmd0aCBpbiBtQSwgc2hhbGwgYmUgb25lIG9mIHsyLDQsNiw4fS4KKy0gc2lsYWJzLG11bHRpc3ludGgtc291cmNlOiBzb3VyY2UgcGxsIEEoMCkgb3IgQigxKSBvZiBjb3JyZXNwb25kaW5nIG11bHRpc3ludGgKKyAgZGl2aWRlci4KKy0gc2lsYWJzLHBsbC1tYXN0ZXI6IGJvb2xlYW4sIG11bHRpc3ludGggY2FuIGNoYW5nZSBwbGwgZnJlcXVlbmN5LgorLSBzaWxhYnMsZGlzYWJsZS1zdGF0ZSA6IGNsb2NrIG91dHB1dCBkaXNhYmxlIHN0YXRlLCBzaGFsbCBiZQorICAwID0gY2xvY2sgb3V0cHV0IGlzIGRyaXZlbiBMT1cgd2hlbiBkaXNhYmxlZAorICAxID0gY2xvY2sgb3V0cHV0IGlzIGRyaXZlbiBISUdIIHdoZW4gZGlzYWJsZWQKKyAgMiA9IGNsb2NrIG91dHB1dCBpcyBGTE9BVElORyAoSElHSC1aKSB3aGVuIGRpc2FibGVkCisgIDMgPSBjbG9jayBvdXRwdXQgaXMgTkVWRVIgZGlzYWJsZWQKKworPT1FeGFtcGxlPT0KKworLyogMjVNSHogcmVmZXJlbmNlIGNyeXN0YWwgKi8KK3JlZjI1OiByZWYyNU0geworCWNvbXBhdGlibGUgPSAiZml4ZWQtY2xvY2siOworCSNjbG9jay1jZWxscyA9IDwwPjsKKwljbG9jay1mcmVxdWVuY3kgPSA8MjUwMDAwMDA+OworfTsKKworaTJjLW1hc3Rlci1ub2RlIHsKKworCS8qIFNpNTM1MWEgbXNvcDEwIGkyYyBjbG9jayBnZW5lcmF0b3IgKi8KKwlzaTUzNTFhOiBjbG9jay1nZW5lcmF0b3JANjAgeworCQljb21wYXRpYmxlID0gInNpbGFicyxzaTUzNTFhLW1zb3AiOworCQlyZWcgPSA8MHg2MD47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCisJCS8qIGNvbm5lY3QgeHRhbCBpbnB1dCB0byAyNU1IeiByZWZlcmVuY2UgKi8KKwkJY2xvY2tzID0gPCZyZWYyNT47CisJCWNsb2NrLW5hbWVzID0gInh0YWwiOworCisJCS8qIGNvbm5lY3QgeHRhbCBpbnB1dCBhcyBzb3VyY2Ugb2YgcGxsMCBhbmQgcGxsMSAqLworCQlzaWxhYnMscGxsLXNvdXJjZSA9IDwwIDA+LCA8MSAwPjsKKworCQkvKgorCQkgKiBvdmVyd3JpdGUgY2xrb3V0MCBjb25maWd1cmF0aW9uIHdpdGg6CisJCSAqIC0gOG1BIG91dHB1dCBkcml2ZSBzdHJlbmd0aAorCQkgKiAtIHBsbDAgYXMgY2xvY2sgc291cmNlIG9mIG11bHRpc3ludGgwCisJCSAqIC0gbXVsdGlzeW50aDAgYXMgY2xvY2sgc291cmNlIG9mIG91dHB1dCBkaXZpZGVyCisJCSAqIC0gbXVsdGlzeW50aDAgY2FuIGNoYW5nZSBwbGwwCisJCSAqIC0gc2V0IGluaXRpYWwgY2xvY2sgZnJlcXVlbmN5IG9mIDc0LjI1TUh6CisJCSAqLworCQljbGtvdXQwIHsKKwkJCXJlZyA9IDwwPjsKKwkJCXNpbGFicyxkcml2ZS1zdHJlbmd0aCA9IDw4PjsKKwkJCXNpbGFicyxtdWx0aXN5bnRoLXNvdXJjZSA9IDwwPjsKKwkJCXNpbGFicyxjbG9jay1zb3VyY2UgPSA8MD47CisJCQlzaWxhYnMscGxsLW1hc3RlcjsKKwkJCWNsb2NrLWZyZXF1ZW5jeSA9IDw3NDI1MDAwMD47CisJCX07CisKKwkJLyoKKwkJICogb3ZlcndyaXRlIGNsa291dDEgY29uZmlndXJhdGlvbiB3aXRoOgorCQkgKiAtIDRtQSBvdXRwdXQgZHJpdmUgc3RyZW5ndGgKKwkJICogLSBwbGwxIGFzIGNsb2NrIHNvdXJjZSBvZiBtdWx0aXN5bnRoMQorCQkgKiAtIG11bHRpc3ludGgxIGFzIGNsb2NrIHNvdXJjZSBvZiBvdXRwdXQgZGl2aWRlcgorCQkgKiAtIG11bHRpc3ludGgxIGNhbiBjaGFuZ2UgcGxsMQorCQkgKi8KKwkJY2xrb3V0MSB7CisJCQlyZWcgPSA8MT47CisJCQlzaWxhYnMsZHJpdmUtc3RyZW5ndGggPSA8ND47CisJCQlzaWxhYnMsbXVsdGlzeW50aC1zb3VyY2UgPSA8MT47CisJCQlzaWxhYnMsY2xvY2stc291cmNlID0gPDA+OworCQkJcGxsLW1hc3RlcjsKKwkJfTsKKworCQkvKgorCQkgKiBvdmVyd3JpdGUgY2xrb3V0MiBjb25maWd1cmF0aW9uIHdpdGg6CisJCSAqIC0geHRhbCBhcyBjbG9jayBzb3VyY2Ugb2Ygb3V0cHV0IGRpdmlkZXIKKwkJICovCisJCWNsa291dDIgeworCQkJcmVnID0gPDI+OworCQkJc2lsYWJzLGNsb2NrLXNvdXJjZSA9IDwyPjsKKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zaWxhYnMsc2k1NzAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3NpbGFicyxzaTU3MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA5ZjIxZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zaWxhYnMsc2k1NzAudHh0CkBAIC0wLDAgKzEsMzkgQEAKK0JpbmRpbmcgZm9yIFNpbGljb24gTGFicyA1NzAsIDU3MSwgNTk4IGFuZCA1OTkgcHJvZ3JhbW1hYmxlCitJMkMgY2xvY2sgZ2VuZXJhdG9ycy4KKworUmVmZXJlbmNlCitUaGlzIGJpbmRpbmcgdXNlcyB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmdbMV0uIERldGFpbHMgYWJvdXQgdGhlIGRldmljZXMgY2FuIGJlCitmb3VuZCBpbiB0aGUgZGF0YSBzaGVldHNbMl1bM10uCisKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CitbMl0gU2k1NzAvNTcxIERhdGEgU2hlZXQKKyAgICBodHRwOi8vd3d3LnNpbGFicy5jb20vU3VwcG9ydCUyMERvY3VtZW50cy9UZWNobmljYWxEb2NzL3NpNTcwLnBkZgorWzNdIFNpNTk4LzU5OSBEYXRhIFNoZWV0CisgICAgaHR0cDovL3d3dy5zaWxhYnMuY29tL1N1cHBvcnQlMjBEb2N1bWVudHMvVGVjaG5pY2FsRG9jcy9zaTU5OC05OS5wZGYKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGU6IFNoYWxsIGJlIG9uZSBvZiAic2lsYWJzLHNpNTcwIiwgInNpbGFicyxzaTU3MSIsCisJCQkgICAgICAgInNpbGFicyxzaTU5OCIsICJzaWxhYnMsc2k1OTkiCisgLSByZWc6IEkyQyBkZXZpY2UgYWRkcmVzcy4KKyAtICNjbG9jay1jZWxsczogRnJvbSBjb21tb24gY2xvY2sgYmluZGluZ3M6IFNoYWxsIGJlIDAuCisgLSBmYWN0b3J5LWZvdXQ6IEZhY3Rvcnkgc2V0IGRlZmF1bHQgZnJlcXVlbmN5LiBUaGlzIGZyZXF1ZW5jeSBpcyBwYXJ0IHNwZWNpZmljLgorCQkgVGhlIGNvcnJlY3QgZnJlcXVlbmN5IGZvciB0aGUgcGFydCB1c2VkIGhhcyB0byBiZSBwcm92aWRlZCBpbgorCQkgb3JkZXIgdG8gZ2VuZXJhdGUgdGhlIGNvcnJlY3Qgb3V0cHV0IGZyZXF1ZW5jaWVzLiBGb3IgbW9yZQorCQkgZGV0YWlscywgcGxlYXNlIHJlZmVyIHRvIHRoZSBkYXRhIHNoZWV0LgorIC0gdGVtcGVyYXR1cmUtc3RhYmlsaXR5OiBUZW1wZXJhdHVyZSBzdGFiaWxpdHkgb2YgdGhlIGRldmljZSBpbiBQUE0uIFNob3VsZCBiZQorCQkJICBvbmUgb2Y6IDcsIDIwLCA1MCBvciAxMDAuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgLSBjbG9jay1vdXRwdXQtbmFtZXM6IEZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmdzLiBSZWNvbW1lbmRlZCB0byBiZSAic2k1NzAiLgorIC0gY2xvY2stZnJlcXVlbmN5OiBPdXRwdXQgZnJlcXVlbmN5IHRvIGdlbmVyYXRlLiBUaGlzIGRlZmluZXMgdGhlIG91dHB1dAorCQkgICAgZnJlcXVlbmN5IHNldCBkdXJpbmcgYm9vdC4gSXQgY2FuIGJlIHJlcHJvZ3JhbW1lZCBkdXJpbmcKKwkJICAgIHJ1bnRpbWUgdGhyb3VnaCB0aGUgY29tbW9uIGNsb2NrIGZyYW1ld29yay4KKworRXhhbXBsZToKKwlzaTU3MDogY2xvY2stZ2VuZXJhdG9yQDVkIHsKKwkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQljb21wYXRpYmxlID0gInNpbGFicyxzaTU3MCI7CisJCXRlbXBlcmF0dXJlLXN0YWJpbGl0eSA9IDw1MD47CisJCXJlZyA9IDwweDVkPjsKKwkJZmFjdG9yeS1mb3V0ID0gPDE1NjI1MDAwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdCxub21hZGlrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdCxub21hZGlrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGUwY2YxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3N0LG5vbWFkaWsudHh0CkBAIC0wLDAgKzEsMTA0IEBACitTVCBNaWNyb2VsZWN0cm9uaWNzIE5vbWFkaWsgU1JDIFN5c3RlbSBSZXNldCBhbmQgQ29udHJvbAorCitUaGlzIGJpbmRpbmcgdXNlcyB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmc6CitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CisKK1RoZSBOb21hZGlrIFNSQyBjb250cm9sbGVyIGlzIHJlc3BvbnNpYmxlIG9mIGNvbnRyb2xsaW5nIGNocnlzdGFscywKK1BMTHMgYW5kIGNsb2NrIGdhdGVzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciB0aGUgU1JDIG5vZGU6CistIGNvbXBhdGlibGU6IG11c3QgYmUgInN0ZXJpY3Nzb24sbm9tYWRpay1zcmMiCistIHJlZzogbXVzdCBjb250YWluIHRoZSBTUkMgcmVnaXN0ZXIgYmFzZSBhbmQgc2l6ZQorCitPcHRpb25hbCBwcm9wZXJ0aWVzIGZvciB0aGUgU1JDIG5vZGU6CistIGRpc2FibGUtc3h0YWxvOiBpZiBwcmVzZW50IHRoaXMgd2lsbCBkaXNhYmxlIHRoZSBTWFRBTE8KKyAgaS5lLiB0aGUgZHJpdmVyIG91dHB1dCBmb3IgdGhlIHNsb3cgMzJrSHogY2hyeXN0YWwsIGlmIHRoZQorICBib2FyZCBoYXMgaXRzIG93biBjaXJjdWl0cnkgZm9yIHByb3ZpZGluZyB0aGlzIG9zY2lsbGF0b3IKKy0gZGlzYWJsZS1teHRhbDogaWYgcHJlc2VudCB0aGlzIHdpbGwgZGlzYWJsZSB0aGUgTVhUQUxPLAorICBpLmUuIHRoZSBkcml2ZXIgb3V0cHV0IGZvciB0aGUgbWFpbiAofjE5LjIgTUh6KSBjaHJ5c3RhbCwKKyAgaWYgdGhlIGJvYXJkIGhhcyBpdHMgb3duIGNpcmN1aXRyeSBmb3IgcHJvdmlkaW5nIHRoaXMKKyAgb3NjaWxsYXRvcgorCisKK1BMTCBub2RlczogdGhlc2Ugbm9kZXMgcmVwcmVzZW50IHRoZSB0d28gUExMcyBvbiB0aGUgc3lzdGVtLAord2hpY2ggc2hvdWxkIGJvdGggaGF2ZSB0aGUgbWFpbiBjaHJ5c3RhbCwgcmVwcmVzZW50ZWQgYXMgYQorZml4ZWQgZnJlcXVlbmN5IGNsb2NrLCBhcyBwYXJlbnQuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHRoZSB0d28gUExMIG5vZGVzOgorLSBjb21wYXRpYmxlOiBtdXN0IGJlICJzdCxub21hZGlrLXBsbC1jbG9jayIKKy0gY2xvY2stY2VsbHM6IG11c3QgYmUgMAorLSBjbG9jay1pZDogbXVzdCBiZSAxIG9yIDIgZm9yIFBMTDEgYW5kIFBMTDIgcmVzcGVjdGl2ZWx5CistIGNsb2NrczogdGhpcyBjbG9jayB3aWxsIGhhdmUgbWFpbiBjaHJ5c3RhbCBhcyBwYXJlbnQKKworCitIQ0xLIG5vZGVzOiB0aGVzZSByZXByZXNlbnQgdGhlIGNsb2NrIGdhdGVzIG9uIGluZGl2aWR1YWwKK2xpbmVzIGZyb20gdGhlIEhDTEsgY2xvY2sgdHJlZSBhbmQgdGhlIGdhdGUgZm9yIGluZGl2aWR1YWwKK2xpbmVzIGZyb20gdGhlIFBDTEsgY2xvY2sgdHJlZS4KKworUmVxdWlyZXMgcHJvcGVydGllcyBmb3IgdGhlIEhDTEsgbm9kZXM6CistIGNvbXBhdGlibGU6IG11c3QgYmUgInN0LG5vbWFkaWstaGNsay1jbG9jayIKKy0gY2xvY2stY2VsbHM6IG11c3QgYmUgMAorLSBjbG9jay1pZDogbXVzdCBiZSB0aGUgY2xvY2sgSUQgZnJvbSAwIHRvIDYzIGFjY29yZGluZyB0bworICB0aGlzIHRhYmxlOgorCisJMDogIEhDTEtETUEwCisJMTogIEhDTEtTTUMKKwkyOiAgSENMS1NEUkFNCisJMzogIEhDTEtETUExCisJNDogIEhDTEtDTENECisJNTogIFBDTEtJUkRBCisJNjogIFBDTEtTU1AKKwk3OiAgUENMS1VBUlQwCisJODogIFBDTEtTREkKKwk5OiAgUENMS0kyQzAKKwkxMDogUENMS0kyQzEKKwkxMTogUENMS1VBUlQxCisJMTI6IFBDTE1TUDAKKwkxMzogSENMS1VTQgorCTE0OiBIQ0xLRElGCisJMTU6IEhDTEtTQUEKKwkxNjogSENMS1NWQQorCTE3OiBQQ0xLSFNJCisJMTg6IFBDTEtYVEkKKwkxOTogUENMS1VBUlQyCisJMjA6IFBDTEtNU1AxCisJMjE6IFBDTEtNU1AyCisJMjI6IFBDTEtPV00KKwkyMzogSENMS0hQSQorCTI0OiBQQ0xLU0tFCisJMjU6IFBDTEtIU0VNCisJMjY6IEhDTEszRAorCTI3OiBIQ0xLSEFTSAorCTI4OiBIQ0xLQ1JZUAorCTI5OiBQQ0xLTVNIQworCTMwOiBIQ0xLVVNCTQorCTMxOiBIQ0xLUk5HCisJKDMyLCAzMywgMzQsIDM1IFJFU0VSVkVEKQorCTM2OiBDTERDTEsKKwkzNzogSVJEQUNMSworCTM4OiBTU1BJQ0xLCisJMzk6IFVBUlQwQ0xLCisJNDA6IFNESUNMSworCTQxOiBJMkMwQ0xLCisJNDI6IEkyQzFDTEsKKwk0MzogVUFSVDFDTEsKKwk0NDogTVNQQ0xLMAorCTQ1OiBVU0JDTEsKKwk0NjogRElGQ0xLCisJNDc6IElQSTJDQ0xLCisJNDg6IElQQk1DQ0xLCisJNDk6IEhTSUNMS1JYCisJNTA6IEhTSUNMS1RYCisJNTE6IFVBUlQyQ0xLCisJNTI6IE1TUENMSzEKKwk1MzogTVNQQ0xLMgorCTU0OiBPV01DTEsKKwkoNTUgUkVTRVJWRUQpCisJNTY6IFNLRUNMSworCSg1NyBSRVNFUlZFRCkKKwk1ODogM0RDTEsKKwk1OTogUENMS01TUDMKKwk2MDogTVNQQ0xLMworCTYxOiBNU0hDQ0xLCisJNjI6IFVTQk1DTEsKKwk2MzogUk5HQ0NMSwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3N0LHN0bTMyLXJjYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc3Qsc3RtMzItcmNjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWUzMjA1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3N0LHN0bTMyLXJjYy50eHQKQEAgLTAsMCArMSw2NSBAQAorU1RNaWNyb2VsZWN0cm9uaWNzIFNUTTMyIFJlc2V0IGFuZCBDbG9jayBDb250cm9sbGVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIFJDQyBJUCBpcyBib3RoIGEgcmVzZXQgYW5kIGEgY2xvY2sgY29udHJvbGxlci4gVGhpcyBkb2N1bWVudGF0aW9uIG9ubHkKK2Rlc2NyaWJlcyB0aGUgY2xvY2sgcGFydC4KKworUGxlYXNlIGFsc28gcmVmZXIgdG8gY2xvY2stYmluZGluZ3MudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBjb21tb24gY2xvY2sKK2NvbnRyb2xsZXIgYmluZGluZyB1c2FnZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJzdCxzdG0zMmY0Mnh4LXJjYyIKKy0gcmVnOiBzaG91bGQgYmUgcmVnaXN0ZXIgYmFzZSBhbmQgbGVuZ3RoIGFzIGRvY3VtZW50ZWQgaW4gdGhlCisgIGRhdGFzaGVldAorLSAjY2xvY2stY2VsbHM6IDIsIGRldmljZSBub2RlcyBzaG91bGQgc3BlY2lmeSB0aGUgY2xvY2sgaW4gdGhlaXIgImNsb2NrcyIKKyAgcHJvcGVydHksIGNvbnRhaW5pbmcgYSBwaGFuZGxlIHRvIHRoZSBjbG9jayBkZXZpY2Ugbm9kZSwgYW4gaW5kZXggc2VsZWN0aW5nCisgIGJldHdlZW4gZ2F0ZWQgY2xvY2tzIGFuZCBvdGhlciBjbG9ja3MgYW5kIGFuIGluZGV4IHNwZWNpZnlpbmcgdGhlIGNsb2NrIHRvCisgIHVzZS4KKworRXhhbXBsZToKKworCXJjYzogcmNjQDQwMDIzODAwIHsKKwkJI2Nsb2NrLWNlbGxzID0gPDI+CisJCWNvbXBhdGlibGUgPSAic3Qsc3RtMzJmNDJ4eC1yY2MiLCAic3Qsc3RtMzItcmNjIjsKKwkJcmVnID0gPDB4NDAwMjM4MDAgMHg0MDA+OworCX07CisKK1NwZWNpZnlpbmcgZ2F0ZWQgY2xvY2tzCis9PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgcHJpbWFyeSBpbmRleCBtdXN0IGJlIHNldCB0byAwLgorCitUaGUgc2Vjb25kYXJ5IGluZGV4IGlzIHRoZSBiaXQgbnVtYmVyIHdpdGhpbiB0aGUgUkNDIHJlZ2lzdGVyIGJhbmssIHN0YXJ0aW5nCitmcm9tIHRoZSBmaXJzdCBSQ0MgY2xvY2sgZW5hYmxlIHJlZ2lzdGVyIChSQ0NfQUhCMUVOUiwgYWRkcmVzcyBvZmZzZXQgMHgzMCkuCisKK0l0IGlzIGNhbGN1bGF0ZWQgYXM6IGluZGV4ID0gcmVnaXN0ZXJfb2Zmc2V0IC8gNCAqIDMyICsgYml0X29mZnNldC4KK1doZXJlIGJpdF9vZmZzZXQgaXMgdGhlIGJpdCBvZmZzZXQgd2l0aGluIHRoZSByZWdpc3RlciAoTFNCIGlzIDAsIE1TQiBpcyAzMSkuCisKK0V4YW1wbGU6CisKKwkvKiBHYXRlZCBjbG9jaywgQUhCMSBiaXQgMCAoR1BJT0EpICovCisJLi4uIHsKKwkJY2xvY2tzID0gPCZyY2MgMCAwPgorCX07CisKKwkvKiBHYXRlZCBjbG9jaywgQUhCMiBiaXQgNCAoQ1JZUCkgKi8KKwkuLi4geworCQljbG9ja3MgPSA8JnJjYyAwIDM2PgorCX07CisKK1NwZWNpZnlpbmcgb3RoZXIgY2xvY2tzCis9PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgcHJpbWFyeSBpbmRleCBtdXN0IGJlIHNldCB0byAxLgorCitUaGUgc2Vjb25kYXJ5IGluZGV4IGlzIGJvdW5kIHdpdGggdGhlIGZvbGxvd2luZyBtYWdpYyBudW1iZXJzOgorCisJMAlTWVNUSUNLCisJMQlGQ0xLCisKK0V4YW1wbGU6CisKKwkvKiBNaXNjIGNsb2NrLCBGQ0xLICovCisJLi4uIHsKKwkJY2xvY2tzID0gPCZyY2MgMSAxPgorCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc3Qvc3QsY2xrZ2VuLWRpdm11eC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc3Qvc3QsY2xrZ2VuLWRpdm11eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI0NzY1MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdC9zdCxjbGtnZW4tZGl2bXV4LnR4dApAQCAtMCwwICsxLDQ5IEBACitCaW5kaW5nIGZvciBhIFNUIGRpdmlkZXIgYW5kIG11bHRpcGxleGVyIGNsb2NrIGRyaXZlci4KKworVGhpcyBiaW5kaW5nIHVzZXMgdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nWzFdLgorQmFzZSBhZGRyZXNzIGlzIGxvY2F0ZWQgdG8gdGhlIHBhcmVudCBub2RlLiBTZWUgY2xvY2sgYmluZGluZ1syXQorCitbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorWzJdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdC9zdCxjbGtnZW4udHh0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHNoYWxsIGJlOgorCSJzdCxjbGtnZW5hLWRpdm11eC1jNjUtaHMiLAkic3QsY2xrZ2VuYS1kaXZtdXgiCisJInN0LGNsa2dlbmEtZGl2bXV4LWM2NS1scyIsCSJzdCxjbGtnZW5hLWRpdm11eCIKKwkic3QsY2xrZ2VuYS1kaXZtdXgtYzMyLW9kZjAiLAkic3QsY2xrZ2VuYS1kaXZtdXgiCisJInN0LGNsa2dlbmEtZGl2bXV4LWMzMi1vZGYxIiwJInN0LGNsa2dlbmEtZGl2bXV4IgorCSJzdCxjbGtnZW5hLWRpdm11eC1jMzItb2RmMiIsCSJzdCxjbGtnZW5hLWRpdm11eCIKKwkic3QsY2xrZ2VuYS1kaXZtdXgtYzMyLW9kZjMiLAkic3QsY2xrZ2VuYS1kaXZtdXgiCisKKy0gI2Nsb2NrLWNlbGxzIDogRnJvbSBjb21tb24gY2xvY2sgYmluZGluZzsgc2hhbGwgYmUgc2V0IHRvIDEuCisKKy0gY2xvY2tzIDogRnJvbSBjb21tb24gY2xvY2sgYmluZGluZworCistIGNsb2NrLW91dHB1dC1uYW1lcyA6IEZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmcuCisKK0V4YW1wbGU6CisKKwljbG9ja2dlbi1hQGZkMzQ1MDAwIHsKKwkJcmVnID0gPDB4ZmQzNDUwMDAgMHhiNTA+OworCisJCWNsa19tX2ExX2RpdjE6IGNsay1tLWExLWRpdjEgeworCQkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQkJY29tcGF0aWJsZSA9ICJzdCxjbGtnZW5hLWRpdm11eC1jMzItb2RmMSIsCisJCQkJICAgICAic3QsY2xrZ2VuYS1kaXZtdXgiOworCisJCQljbG9ja3MgPSA8JmNsa19tX2ExX29zY19wcmVkaXY+LAorCQkJCSA8JmNsa19tX2ExX3BsbDAgMT4sIC8qIFBMTDAgUEhJMSAqLworCQkJCSA8JmNsa19tX2ExX3BsbDEgMT47IC8qIFBMTDEgUEhJMSAqLworCisJCQljbG9jay1vdXRwdXQtbmFtZXMgPSAiY2xrLW0tcngtaWNuLXRzIiwKKwkJCQkJICAgICAiY2xrLW0tcngtaWNuLXZkcC0wIiwKKwkJCQkJICAgICAiIiwgLyogdW51c2VkICovCisJCQkJCSAgICAgImNsay1tLXBydi10MS1idXMiLAorCQkJCQkgICAgICJjbGstbS1pY24tcmVnLTEyIiwKKwkJCQkJICAgICAiY2xrLW0taWNuLXJlZy0xMCIsCisJCQkJCSAgICAgIiIsIC8qIHVudXNlZCAqLworCQkJCQkgICAgICJjbGstbS1pY24tc3QyMzEiOworCQl9OworCX07CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdC9zdCxjbGtnZW4tbXV4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdC9zdCxjbGtnZW4tbXV4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWZhOTFjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3N0L3N0LGNsa2dlbi1tdXgudHh0CkBAIC0wLDAgKzEsMzYgQEAKK0JpbmRpbmcgZm9yIGEgU1QgbXVsdGlwbGV4ZWQgY2xvY2sgZHJpdmVyLgorCitUaGlzIGJpbmRpbmcgc3VwcG9ydHMgb25seSBzaW1wbGUgaW5kZXhlZCBtdWx0aXBsZXhlcnMsIGl0IGRvZXMgbm90CitzdXBwb3J0IHRhYmxlIGJhc2VkIHBhcmVudCBpbmRleCB0byBoYXJkd2FyZSB2YWx1ZSB0cmFuc2xhdGlvbnMuCisKK1RoaXMgYmluZGluZyB1c2VzIHRoZSBjb21tb24gY2xvY2sgYmluZGluZ1sxXS4KKworWzFdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogc2hhbGwgYmU6CisJInN0LHN0aWg0MTYtY2xrZ2VuYy12Y2MtaGQiLAkic3QsY2xrZ2VuLW11eCIKKwkic3Qsc3RpaDQxNi1jbGtnZW5mLXZjYy1mdmRwIiwJInN0LGNsa2dlbi1tdXgiCisJInN0LHN0aWg0MTYtY2xrZ2VuZi12Y2MtaHZhIiwgCSJzdCxjbGtnZW4tbXV4IgorCSJzdCxzdGloNDE2LWNsa2dlbmYtdmNjLWhkIiwJInN0LGNsa2dlbi1tdXgiCisJInN0LHN0aWg0MTYtY2xrZ2VuZi12Y2Mtc2QiLAkic3QsY2xrZ2VuLW11eCIKKwkic3Qsc3RpaDQxNS1jbGtnZW4tYTktbXV4IiwJInN0LGNsa2dlbi1tdXgiCisJInN0LHN0aWg0MTYtY2xrZ2VuLWE5LW11eCIsCSJzdCxjbGtnZW4tbXV4IgorCSJzdCxzdGloNDA3LWNsa2dlbi1hOS1tdXgiLAkic3QsY2xrZ2VuLW11eCIKKworLSAjY2xvY2stY2VsbHMgOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBzaGFsbCBiZSBzZXQgdG8gMC4KKworLSByZWcgOiBBIEJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQuCisKKy0gY2xvY2tzIDogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZworCitFeGFtcGxlOgorCisJY2xrX21faHZhOiBjbGstbS1odmFAZmQ2OTA4NjggeworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCWNvbXBhdGlibGUgPSAic3Qsc3RpaDQxNi1jbGtnZW5mLXZjYy1odmEiLCAic3QsY2xrZ2VuLW11eCI7CisJCXJlZyA9IDwweGZkNjkwODY4IDQ+OworCisJCWNsb2NrcyA9IDwmY2xvY2tnZW5fZiAxPiwgPCZjbGtfbV9hMV9kaXYwIDM+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc3Qvc3QsY2xrZ2VuLXBsbC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc3Qvc3QsY2xrZ2VuLXBsbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ0YjNhMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdC9zdCxjbGtnZW4tcGxsLnR4dApAQCAtMCwwICsxLDUyIEBACitCaW5kaW5nIGZvciBhIFNUIHBsbCBjbG9jayBkcml2ZXIuCisKK1RoaXMgYmluZGluZyB1c2VzIHRoZSBjb21tb24gY2xvY2sgYmluZGluZ1sxXS4KK0Jhc2UgYWRkcmVzcyBpcyBsb2NhdGVkIHRvIHRoZSBwYXJlbnQgbm9kZS4gU2VlIGNsb2NrIGJpbmRpbmdbMl0KKworWzFdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKK1syXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc3Qvc3QsY2xrZ2VuLnR4dAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiBzaGFsbCBiZToKKwkic3QsY2xrZ2VuYS1wcmVkaXYtYzY1IiwJInN0LGNsa2dlbmEtcHJlZGl2IgorCSJzdCxjbGtnZW5hLXByZWRpdi1jMzIiLAkic3QsY2xrZ2VuYS1wcmVkaXYiCisKKwkic3QsY2xrZ2VuYS1wbGxzLWM2NSIKKwkic3QscGxscy1jMzItYTF4LTAiLAkJInN0LGNsa2dlbi1wbGxzLWMzMiIKKwkic3QscGxscy1jMzItYTF4LTEiLAkJInN0LGNsa2dlbi1wbGxzLWMzMiIKKwkic3Qsc3RpaDQxNS1wbGxzLWMzMi1hOSIsCSJzdCxjbGtnZW4tcGxscy1jMzIiCisJInN0LHN0aWg0MTUtcGxscy1jMzItZGRyIiwJInN0LGNsa2dlbi1wbGxzLWMzMiIKKwkic3Qsc3RpaDQxNi1wbGxzLWMzMi1hOSIsCSJzdCxjbGtnZW4tcGxscy1jMzIiCisJInN0LHN0aWg0MTYtcGxscy1jMzItZGRyIiwJInN0LGNsa2dlbi1wbGxzLWMzMiIKKwkic3Qsc3RpaDQwNy1wbGxzLWMzMi1hMCIsCSJzdCxjbGtnZW4tcGxscy1jMzIiCisJInN0LHN0aWg0MDctcGxscy1jMzItYTkiLAkic3QsY2xrZ2VuLXBsbHMtYzMyIgorCSJzc3QscGxscy1jMzItY3hfMCIsCQkic3QsY2xrZ2VuLXBsbHMtYzMyIgorCSJzc3QscGxscy1jMzItY3hfMSIsCQkic3QsY2xrZ2VuLXBsbHMtYzMyIgorCSJzdCxzdGloNDE4LXBsbHMtYzI4LWE5IiwJInN0LGNsa2dlbi1wbGxzLWMzMiIKKworCSJzdCxzdGloNDE1LWdwdS1wbGwtYzMyIiwJInN0LGNsa2dlbmdwdS1wbGwtYzMyIgorCSJzdCxzdGloNDE2LWdwdS1wbGwtYzMyIiwJInN0LGNsa2dlbmdwdS1wbGwtYzMyIgorCistICNjbG9jay1jZWxscyA6IEZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IHNoYWxsIGJlIHNldCB0byAxLgorCistIGNsb2NrcyA6IEZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmcKKworLSBjbG9jay1vdXRwdXQtbmFtZXMgOiBGcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nLgorCitFeGFtcGxlOgorCisJY2xvY2tnZW4tYUBmZWU2MjAwMCB7CisJCXJlZyA9IDwweGZlZTYyMDAwIDB4YjQ4PjsKKworCQljbGtfc19hMF9wbGw6IGNsay1zLWEwLXBsbCB7CisJCQkjY2xvY2stY2VsbHMgPSA8MT47CisJCQljb21wYXRpYmxlID0gInN0LGNsa2dlbmEtcGxscy1jNjUiOworCisJCQljbG9ja3MgPSA8JmNsa19zeXNpbj47CisKKwkJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJjbGstcy1hMC1wbGwwLWhzIiwKKwkJCQkJICAgICAiY2xrLXMtYTAtcGxsMC1scyIsCisJCQkJCSAgICAgImNsay1zLWEwLXBsbDEiOworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc3Qvc3QsY2xrZ2VuLXByZWRpdi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc3Qvc3QsY2xrZ2VuLXByZWRpdi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA0NzY2YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdC9zdCxjbGtnZW4tcHJlZGl2LnR4dApAQCAtMCwwICsxLDM2IEBACitCaW5kaW5nIGZvciBhIFNUIHByZS1kaXZpZGVyIGNsb2NrIGRyaXZlci4KKworVGhpcyBiaW5kaW5nIHVzZXMgdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nWzFdLgorQmFzZSBhZGRyZXNzIGlzIGxvY2F0ZWQgdG8gdGhlIHBhcmVudCBub2RlLiBTZWUgY2xvY2sgYmluZGluZ1syXQorCitbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorWzJdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdC9zdCxjbGtnZW4udHh0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHNoYWxsIGJlOgorCSJzdCxjbGtnZW5hLXByZWRpdi1jNjUiLAkic3QsY2xrZ2VuYS1wcmVkaXYiCisJInN0LGNsa2dlbmEtcHJlZGl2LWMzMiIsCSJzdCxjbGtnZW5hLXByZWRpdiIKKworLSAjY2xvY2stY2VsbHMgOiBGcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBzaGFsbCBiZSBzZXQgdG8gMC4KKworLSBjbG9ja3MgOiBGcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nCisKKy0gY2xvY2stb3V0cHV0LW5hbWVzIDogRnJvbSBjb21tb24gY2xvY2sgYmluZGluZy4KKworRXhhbXBsZToKKworCWNsb2NrZ2VuLWFAZmQzNDUwMDAgeworCQlyZWcgPSA8MHhmZDM0NTAwMCAweGI1MD47CisKKwkJY2xrX21fYTJfb3NjX3ByZWRpdjogY2xrLW0tYTItb3NjLXByZWRpdiB7CisJCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCQljb21wYXRpYmxlID0gInN0LGNsa2dlbmEtcHJlZGl2LWMzMiIsCisJCQkJICAgICAic3QsY2xrZ2VuYS1wcmVkaXYiOworCisJCQljbG9ja3MgPSA8JmNsa19zeXNpbj47CisKKwkJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJjbGstbS1hMi1vc2MtcHJlZGl2IjsKKwkJfTsKKwl9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc3Qvc3QsY2xrZ2VuLXZjYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc3Qvc3QsY2xrZ2VuLXZjYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA5YjNlZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdC9zdCxjbGtnZW4tdmNjLnR4dApAQCAtMCwwICsxLDYxIEBACitCaW5kaW5nIGZvciBhIHR5cGUgb2YgU1RNaWNyb2VsZWN0cm9uaWNzIGNsb2NrIGNyb3NzYmFyIChWQ0MpLgorCitUaGUgY3Jvc3NiYXIgY2FuIHRha2UgdXAgdG8gNCBpbnB1dCBjbG9ja3MgYW5kIGNvbnRyb2wgdXAgdG8gMTYKK291dHB1dCBjbG9ja3MuIE5vdCBhbGwgaW5wdXRzIG9yIG91dHB1dHMgaGF2ZSB0byBiZSBpbiB1c2UgaW4gYQorcGFydGljdWxhciBpbnN0YW50aWF0aW9uLiBFYWNoIG91dHB1dCBjYW4gYmUgaW5kaXZpZHVhbGx5IGVuYWJsZWQsCitzZWxlY3QgYW55IG9mIHRoZSBpbnB1dCBjbG9ja3MgYW5kIGFwcGx5IGEgZGl2aWRlIChieSAxLDIsNCBvciA4KSB0bwordGhhdCBzZWxlY3RlZCBjbG9jay4KKworVGhpcyBiaW5kaW5nIHVzZXMgdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nWzFdLgorCitbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiBzaGFsbCBiZToKKwkic3Qsc3RpaDQxNi1jbGtnZW5jIiwJCSJzdCx2Y2MiCisJInN0LHN0aWg0MTYtY2xrZ2VuZiIsCQkic3QsdmNjIgorCistICNjbG9jay1jZWxscyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IHNoYWxsIGJlIHNldCB0byAxLgorCistIHJlZyA6IEEgQmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldC4KKworLSBjbG9ja3MgOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nCisKKy0gY2xvY2stb3V0cHV0LW5hbWVzIDogRnJvbSBjb21tb24gY2xvY2sgYmluZGluZy4gVGhlIGJsb2NrIGhhcyAxNgorICAgICAgICAgICAgICAgICAgICAgICBjbG9jayBvdXRwdXRzIGJ1dCBub3QgYWxsIG9mIHRoZW0gaW4gYSBzcGVjaWZpYyBpbnN0YW5jZQorICAgICAgICAgICAgICAgICAgICAgICBoYXZlIHRvIGJlIHVzZWQgaW4gdGhlIFNvQy4gSWYgYSBjbG9jayBuYW1lIGlzIGxlZnQgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgYW4gZW1wdHkgc3RyaW5nIHRoZW4gbm8gY2xvY2sgd2lsbCBiZSBjcmVhdGVkIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGFzc29jaWF0ZWQgd2l0aCB0aGF0IHN0cmluZyBpbmRleC4gSWYgZmV3ZXIgdGhhbgorICAgICAgICAgICAgICAgICAgICAgICAxNiBzdHJpbmdzIGFyZSBwcm92aWRlZCB0aGVuIG5vIGNsb2NrcyB3aWxsIGJlIGNyZWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSByZW1haW5pbmcgb3V0cHV0cy4KKworRXhhbXBsZToKKworCWNsb2NrZ2VuX2NfdmNjOiBjbG9ja2dlbi1jLXZjY0AweGZlODMwOGFjIHsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQljb21wYXRpYmxlID0gInN0LHN0aWg0MTYtY2xrZ2VuYyIsICJzdCxjbGtnZW4tdmNjIjsKKwkJcmVnID0gPDB4ZmU4MzA4YWMgMTI+OworCisJCWNsb2NrcyA9IDwmY2xrX3NfdmNjX2hkPiwKKwkJCSA8JmNsb2NrZ2VuX2MgMT4sCisJCQkgPCZjbGtfc190bWRzX2Zyb21waHk+LAorCQkJIDwmY2xvY2tnZW5fYyAyPjsKKworCQljbG9jay1vdXRwdXQtbmFtZXMgID0gImNsay1zLXBpeC1oZG1pIiwKKwkJCQkgICAgICAiY2xrLXMtcGl4LWR2byIsCisJCQkJICAgICAgImNsay1zLW91dC1kdm8iLAorCQkJCSAgICAgICJjbGstcy1waXgtaGQiLAorCQkJCSAgICAgICJjbGstcy1oZGRhYyIsCisJCQkJICAgICAgImNsay1zLWRlbmMiLAorCQkJCSAgICAgICJjbGstcy1zZGRhYyIsCisJCQkJICAgICAgImNsay1zLXBpeC1tYWluIiwKKwkJCQkgICAgICAiY2xrLXMtcGl4LWF1eCIsCisJCQkJICAgICAgImNsay1zLXN0ZmUtZnJjLTAiLAorCQkJCSAgICAgICJjbGstcy1yZWYtbWNydSIsCisJCQkJICAgICAgImNsay1zLXNsYXZlLW1jcnUiLAorCQkJCSAgICAgICJjbGstcy10bWRzLWhkbWkiLAorCQkJCSAgICAgICJjbGstcy1oZG1pLXJlamVjdC1wbGwiLAorCQkJCSAgICAgICJjbGstcy10aHNlbnMiOworCX07CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdC9zdCxjbGtnZW4udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3N0L3N0LGNsa2dlbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg5NzhmMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdC9zdCxjbGtnZW4udHh0CkBAIC0wLDAgKzEsMTAwIEBACitCaW5kaW5nIGZvciBhIENsb2NrZ2VuIGhhcmR3YXJlIGJsb2NrIGZvdW5kIG9uCitjZXJ0YWluIFNUTWljcm9lbGVjdHJvbmljcyBjb25zdW1lciBlbGVjdHJvbmljcyBTb0MgZGV2aWNlcy4KKworQSBDbG9ja2dlbiBub2RlIGNhbiBjb250YWluIHBsbCwgZGl2aXNlciBvciBtdWx0aXBsZXhlciBub2Rlcy4KKworV2Ugd2lsbCBmaW5kIG9ubHkgdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgQ2xvY2tnZW4sIHRoaXMgYmFzZQorYWRkcmVzcyBpcyBjb21tb24gb2YgYWxsIHN1Ym5vZGUuCisKKwljbG9ja2dlbl9ub2RlIHsKKwkJcmVnID0gPD47CisKKwkJcGxsX25vZGUgeworCQkJLi4uCisJCX07CisKKwkJcHJlZGl2X25vZGUgeworCQkJLi4uCisJCX07CisKKwkJZGl2bXV4X25vZGUgeworCQkJLi4uCisJCX07CisKKwkJcXVhZGZzX25vZGUgeworCQkJLi4uCisJCX07CisKKwkJbXV4X25vZGUgeworCQkJLi4uCisJCX07CisKKwkJdmNjX25vZGUgeworCQkJLi4uCisJCX07CisKKwkJZmxleGdlbl9ub2RlIHsKKwkJCS4uLgorCQl9OworCQkuLi4KKwl9OworCitUaGlzIGJpbmRpbmcgdXNlcyB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmdbMV0uCitFYWNoIHN1Ym5vZGUgc2hvdWxkIHVzZSB0aGUgYmluZGluZyBkaXNjcmliZSBpbiBbMl0uLls3XQorCitbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorWzJdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdCxjbGtnZW4tZGl2bXV4LnR4dAorWzNdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdCxjbGtnZW4tbXV4LnR4dAorWzRdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdCxjbGtnZW4tcGxsLnR4dAorWzVdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdCxjbGtnZW4tcHJlZGl2LnR4dAorWzZdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdCx2Y2MudHh0CitbN10gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3N0LHF1YWRmcy50eHQKK1s4XSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc3QsZmxleGdlbi50eHQKKworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSByZWcgOiBBIEJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQuCisKK0V4YW1wbGU6CisKKwljbG9ja2dlbi1hQGZlZTYyMDAwIHsKKworCQlyZWcgPSA8MHhmZWU2MjAwMCAweGI0OD47CisKKwkJY2xrX3NfYTBfcGxsOiBjbGstcy1hMC1wbGwgeworCQkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQkJY29tcGF0aWJsZSA9ICJzdCxjbGtnZW5hLXBsbHMtYzY1IjsKKworCQkJY2xvY2tzID0gPCZjbGstc3lzaW4+OworCisJCQljbG9jay1vdXRwdXQtbmFtZXMgPSAiY2xrLXMtYTAtcGxsMC1ocyIsCisJCQkJCSAgICAgImNsay1zLWEwLXBsbDAtbHMiLAorCQkJCQkgICAgICJjbGstcy1hMC1wbGwxIjsKKwkJfTsKKworCQljbGtfc19hMF9vc2NfcHJlZGl2OiBjbGstcy1hMC1vc2MtcHJlZGl2IHsKKwkJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJCWNvbXBhdGlibGUgPSAic3QsY2xrZ2VuYS1wcmVkaXYtYzY1IiwKKwkJCQkgICAgICJzdCxjbGtnZW5hLXByZWRpdiI7CisKKwkJCWNsb2NrcyA9IDwmY2xrX3N5c2luPjsKKworCQkJY2xvY2stb3V0cHV0LW5hbWVzID0gImNsay1zLWEwLW9zYy1wcmVkaXYiOworCQl9OworCisJCWNsa19zX2EwX2hzOiBjbGstcy1hMC1ocyB7CisJCQkjY2xvY2stY2VsbHMgPSA8MT47CisJCQljb21wYXRpYmxlID0gInN0LGNsa2dlbmEtZGl2bXV4LWM2NS1ocyIsCisJCQkJICAgICAic3QsY2xrZ2VuYS1kaXZtdXgiOworCisJCQljbG9ja3MgPSA8JmNsay1zX2EwX29zY19wcmVkaXY+LAorCQkJCSA8JmNsay1zX2EwX3BsbCAwPiwgLyogcGxsMCBocyAqLworCQkJCSA8JmNsay1zX2EwX3BsbCAyPjsgLyogcGxsMSAqLworCisJCQljbG9jay1vdXRwdXQtbmFtZXMgPSAiY2xrLXMtZmRtYS0wIiwKKwkJCQkJICAgICAiY2xrLXMtZmRtYS0xIiwKKwkJCQkJICAgICAiIjsgLyogY2xrLXMtaml0LXNlbnNlICovCisJCQkJCSAgICAgLyogZm91cnRoIG91dHB1dCB1bnVzZWQgKi8KKwkJfTsKKwl9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc3Qvc3QsZmxleGdlbi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc3Qvc3QsZmxleGdlbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdlZTVjNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdC9zdCxmbGV4Z2VuLnR4dApAQCAtMCwwICsxLDExOSBAQAorQmluZGluZyBmb3IgYSB0eXBlIG9mIGZsZXhnZW4gc3RydWN0dXJlIGZvdW5kIG9uIGNlcnRhaW4KK1NUTWljcm9lbGVjdHJvbmljcyBjb25zdW1lciBlbGVjdHJvbmljcyBTb0MgZGV2aWNlcworCitUaGlzIHN0cnVjdHVyZSBpbmNsdWRlczoKKy0gYSBjbG9jayBjcm9zcyBiYXIgKHJlcHJlc2VudGVkIGJ5IGEgbXV4IGVsZW1lbnQpCistIGEgcHJlIGFuZCBmaW5hbCBkaXZpZGVycyAocmVwcmVzZW50ZWQgYnkgYSBkaXZpZGVyIGFuZCBnYXRlIGVsZW1lbnRzKQorCitGbGV4Z2VuIHN0cnVjdHVyZSBpcyBhIHBhcnQgb2YgQ2xvY2tnZW5bMV0uCisKK1BsZWFzZSBmaW5kIGFuIGV4YW1wbGUgYmVsb3c6CisKKyAgICBDbG9ja2dlbiBibG9jayBkaWFncmFtCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgfCAgICAgICAgICAgICAgICAgICAgIEZsZXhnZW4gc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgIHwgICAgLS0tLS0tLSAgICAgICAtLS0tLS0tLSAgICAgICAtLS0tLS0tLSAgICB8ICAgfAorY2xrX3N5c2luICAgICAgICAgICAgfCAgIHwgICAgICAgfCAgICAgfCAgICAgICAgfCAgICAgfCAgICAgICAgfCAgIHwgICB8CistLS18LS0tLS0tLS0tLS0tLS0tLS18LS0+fCAgICAgICB8ICAgICB8ICAgICAgICB8ICAgICB8ICAgICAgICB8ICAgfCAgIHwKKyAgIHwgfCAgICAgICAgICAgICAgIHwgICB8ICAgICAgIHwgICAgIHwgICAgICAgIHwgICAgIHwgICAgICAgIHwgICB8ICAgfAorICAgfCB8ICAgLS0tLS0tLSAgICAgfCAgIHwgICAgICAgfCAgICAgfFByZSAgICAgfCAgICAgfEZpbmFsICAgfCAgIHwgICB8CisgICB8IHwgIHxQTEwwICAgfCAgICB8ICAgfCAgICAgICB8ICAgICB8RGl2aWRlcnN8ICAgICB8RGl2aWRlcnN8ICAgfCAgIHwKKyAgIHwgfC0+fCAgICAgICB8ICAgIHwgICB8ICAgICAgIHwgICAgIHwgIHgzMiAgIHwgICAgIHwgIHgzMiAgIHwgICB8ICAgfAorICAgfCB8ICB8ICBvZGZfMHwtLS0tfC0tPnwgICAgICAgfCAgICAgfCAgICAgICAgfCAgICAgfCAgICAgICAgfCAgIHwgICB8CisgICB8IHwgIHwgICAgICAgfCAgICB8ICAgfCAgICAgICB8ICAgICB8ICAgICAgICB8ICAgICB8ICAgICAgICB8ICAgfCAgIHwKKyAgIHwgfCAgfCAgICAgICB8ICAgIHwgICB8ICAgICAgIHwgICAgIHwgICAgICAgIHwgICAgIHwgICAgICAgIHwgICB8ICAgfAorICAgfCB8ICB8ICAgICAgIHwgICAgfCAgIHwgICAgICAgfCAgICAgfCAgICAgICAgfCAgICAgfCAgICAgICAgfCAgIHwgICB8CisgICB8IHwgIHwgICAgICAgfCAgICB8ICAgfCAgICAgICB8ICAgICB8ICAgICAgICB8ICAgICB8ICAgICAgICB8ICAgfCAgIHwKKyAgIHwgfCAgIC0tLS0tLS0gICAgIHwgICB8ICAgICAgIHwgICAgIHwgICAgICAgIHwgICAgIHwgICAgICAgIHwgICB8ICAgfAorICAgfCB8ICAgICAgICAgICAgICAgfCAgIHwgICAgICAgfCAgICAgfCAgICAgICAgfCAgICAgfCAgICAgICAgfCAgIHwgICB8CisgICB8IHwgICAtLS0tLS0tICAgICB8ICAgfCBDbG9jayB8ICAgICB8ICAgICAgICB8ICAgICB8ICAgICAgICB8ICAgfCAgIHwKKyAgIHwgfCAgfFBMTDEgICB8ICAgIHwgICB8ICAgICAgIHwgICAgIHwgICAgICAgIHwgICAgIHwgICAgICAgIHwgICB8ICAgfAorICAgfCB8LT58ICAgICAgIHwgICAgfCAgIHwgQ3Jvc3MgfCAgICAgfCAgICAgICAgfCAgICAgfCAgICAgICAgfCAgIHwgICB8CisgICB8IHwgIHwgIG9kZl8wfC0tLS18LS0+fCAgICAgICB8ICAgICB8ICAgICAgICB8ICAgICB8ICAgICAgICB8IENMS19ESVZbMzE6MF0KKyAgIHwgfCAgfCAgICAgICB8ICAgIHwgICB8IEJhciAgIHw9PT09PnwgICAgICAgIHw9PT09PnwgICAgICAgIHw9PT18PT09PT09PT09PgorICAgfCB8ICB8ICAgICAgIHwgICAgfCAgIHwgICAgICAgfCAgICAgfCAgICAgICAgfCAgICAgfCAgICAgICAgfCAgIHwgICB8CisgICB8IHwgIHwgICAgICAgfCAgICB8ICAgfCAgICAgICB8ICAgICB8ICAgICAgICB8ICAgICB8ICAgICAgICB8ICAgfCAgIHwKKyAgIHwgfCAgfCAgICAgICB8ICAgIHwgICB8ICAgICAgIHwgICAgIHwgICAgICAgIHwgICAgIHwgICAgICAgIHwgICB8ICAgfAorICAgfCB8ICAgLS0tLS0tLSAgICAgfCAgIHwgICAgICAgfCAgICAgfCAgICAgICAgfCAgICAgfCAgICAgICAgfCAgIHwgICB8CisgICB8IHwgICAgICAgICAgICAgICB8ICAgfCAgICAgICB8ICAgICB8ICAgICAgICB8ICAgICB8ICAgICAgICB8ICAgfCAgIHwKKyAgIHwgfCAgIC0tLS0tLS0gICAgIHwgICB8ICAgICAgIHwgICAgIHwgICAgICAgIHwgICAgIHwgICAgICAgIHwgICB8ICAgfAorICAgfCB8ICB8UVVBREZTIHwgICAgfCAgIHwgICAgICAgfCAgICAgfCAgICAgICAgfCAgICAgfCAgICAgICAgfCAgIHwgICB8CisgICB8IHwtPnwgICAgY2gwfC0tLS18LS0+fCAgICAgICB8ICAgICB8ICAgICAgICB8ICAgICB8ICAgICAgICB8ICAgfCAgIHwKKyAgIHwgICAgfCAgICAgICB8ICAgIHwgICB8ICAgICAgIHwgICAgIHwgICAgICAgIHwgICAgIHwgICAgICAgIHwgICB8ICAgfAorICAgfCAgICB8ICAgIGNoMXwtLS0tfC0tPnwgICAgICAgfCAgICAgfCAgICAgICAgfCAgICAgfCAgICAgICAgfCAgIHwgICB8CisgICB8ICAgIHwgICAgICAgfCAgICB8ICAgfCAgICAgICB8ICAgICB8ICAgICAgICB8ICAgICB8ICAgICAgICB8ICAgfCAgIHwKKyAgIHwgICAgfCAgICBjaDJ8LS0tLXwtLT58ICAgICAgIHwgICAgIHwgRElWICAgIHwgICAgIHwgRElWICAgIHwgICB8ICAgfAorICAgfCAgICB8ICAgICAgIHwgICAgfCAgIHwgICAgICAgfCAgICAgfCAgMSB0byAgfCAgICAgfCAgMSB0byAgfCAgIHwgICB8CisgICB8ICAgIHwgICAgY2gzfC0tLS18LS0+fCAgICAgICB8ICAgICB8ICAgMTAyNCB8ICAgICB8ICAgICA2NCB8ICAgfCAgIHwKKyAgIHwgICAgIC0tLS0tLS0gICAgIHwgICB8ICAgICAgIHwgICAgIHwgICAgICAgIHwgICAgIHwgICAgICAgIHwgICB8ICAgfAorICAgfCAgICAgICAgICAgICAgICAgfCAgICAtLS0tLS0tICAgICAgIC0tLS0tLS0tICAgICAgIC0tLS0tLS0tICAgIHwgICB8CisgICB8ICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBiaW5kaW5nIHVzZXMgdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nWzJdLgorCitbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3N0L3N0LGNsa2dlbi50eHQKK1syXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaGFsbCBiZToKKyAgInN0LGZsZXhnZW4iCisKKy0gI2Nsb2NrLWNlbGxzIDogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzsgc2hhbGwgYmUgc2V0IHRvIDEgKG11bHRpcGxlIGNsb2NrCisgIG91dHB1dHMpLgorCistIGNsb2NrcyA6IG11c3QgYmUgc2V0IHRvIHRoZSBwYXJlbnQncyBwaGFuZGxlLiBpdCdzIGNvdWxkIGJlIG91dHB1dCBjbG9ja3Mgb2YKKyAgYSBxdWFkc2ZzIG9yL2FuZCBhIHBsbCBvci9hbmQgY2xrX3N5c2luICh1cCB0byA3IGNsb2NrcykKKworLSBjbG9jay1vdXRwdXQtbmFtZXMgOiBMaXN0IG9mIHN0cmluZ3MgdXNlZCB0byBuYW1lIHRoZSBjbG9jayBvdXRwdXRzLgorCitFeGFtcGxlOgorCisJY2xrX3NfYzBfZmxleGdlbjogY2xrLXMtYzAtZmxleGdlbiB7CisKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQljb21wYXRpYmxlID0gInN0LGZsZXhnZW4iOworCisJCWNsb2NrcyA9IDwmY2xrX3NfYzBfcGxsMCAwPiwKKwkJCSA8JmNsa19zX2MwX3BsbDEgMD4sCisJCQkgPCZjbGtfc19jMF9xdWFkZnMgMD4sCisJCQkgPCZjbGtfc19jMF9xdWFkZnMgMT4sCisJCQkgPCZjbGtfc19jMF9xdWFkZnMgMj4sCisJCQkgPCZjbGtfc19jMF9xdWFkZnMgMz4sCisJCQkgPCZjbGtfc3lzaW4+OworCisJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJjbGstaWNuLWdwdSIsCisJCQkJICAgICAiY2xrLWZkbWEiLAorCQkJCSAgICAgImNsay1uYW5kIiwKKwkJCQkgICAgICJjbGstaHZhIiwKKwkJCQkgICAgICJjbGstcHJvYy1zdGZlIiwKKwkJCQkgICAgICJjbGstcHJvYy10cCIsCisJCQkJICAgICAiY2xrLXJ4LWljbi1kbXUiLAorCQkJCSAgICAgImNsay1yeC1pY24taHZhIiwKKwkJCQkgICAgICJjbGstaWNuLWNwdSIsCisJCQkJICAgICAiY2xrLXR4LWljbi1kbXUiLAorCQkJCSAgICAgImNsay1tbWMtMCIsCisJCQkJICAgICAiY2xrLW1tYy0xIiwKKwkJCQkgICAgICJjbGstanBlZ2RlYyIsCisJCQkJICAgICAiY2xrLWV4dDJmYTkiLAorCQkJCSAgICAgImNsay1pYy1iZGlzcC0wIiwKKwkJCQkgICAgICJjbGstaWMtYmRpc3AtMSIsCisJCQkJICAgICAiY2xrLXBwLWRtdSIsCisJCQkJICAgICAiY2xrLXZpZC1kbXUiLAorCQkJCSAgICAgImNsay1kc3MtbHBjIiwKKwkJCQkgICAgICJjbGstc3QyMzEtYXVkLTAiLAorCQkJCSAgICAgImNsay1zdDIzMS1ncC0xIiwKKwkJCQkgICAgICJjbGstc3QyMzEtZG11IiwKKwkJCQkgICAgICJjbGstaWNuLWxtaSIsCisJCQkJICAgICAiY2xrLXR4LWljbi1kaXNwLTEiLAorCQkJCSAgICAgImNsay1pY24tc2JjIiwKKwkJCQkgICAgICJjbGstc3RmZS1mcmMyIiwKKwkJCQkgICAgICJjbGstZXRoLXBoeSIsCisJCQkJICAgICAiY2xrLWV0aC1yZWYtcGh5Y2xrIiwKKwkJCQkgICAgICJjbGstZmxhc2gtcHJvbWlwIiwKKwkJCQkgICAgICJjbGstbWFpbi1kaXNwIiwKKwkJCQkgICAgICJjbGstYXV4LWRpc3AiLAorCQkJCSAgICAgImNsay1jb21wby1kdnAiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc3Qvc3QscXVhZGZzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdC9zdCxxdWFkZnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlZGViOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc3Qvc3QscXVhZGZzLnR4dApAQCAtMCwwICsxLDQ4IEBACitCaW5kaW5nIGZvciBhIHR5cGUgb2YgcXVhZCBjaGFubmVsIGRpZ2l0YWwgZnJlcXVlbmN5IHN5bnRoZXNpemVyIGZvdW5kIG9uCitjZXJ0YWluIFNUTWljcm9lbGVjdHJvbmljcyBjb25zdW1lciBlbGVjdHJvbmljcyBTb0MgZGV2aWNlcy4KKworVGhpcyB2ZXJzaW9uIGNvbnRhaW5zIGEgcHJvZ3JhbW1hYmxlIFBMTCB3aGljaCBjYW4gZ2VuZXJhdGUgdXAgdG8gMjE2LCA0MzIKK29yIDY2ME1IeiAoZnJvbSBhIDMwTUh6IG9zY2lsbGF0b3IgaW5wdXQpIGFzIHRoZSBpbnB1dCB0byB0aGUgZGlnaXRhbAorc3ludGhlc2l6ZXJzLgorCitUaGlzIGJpbmRpbmcgdXNlcyB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmdbMV0uCisKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaGFsbCBiZToKKyAgInN0LHN0aWg0MTYtcXVhZGZzMjE2IiwJInN0LHF1YWRmcyIKKyAgInN0LHN0aWg0MTYtcXVhZGZzNDMyIiwJInN0LHF1YWRmcyIKKyAgInN0LHN0aWg0MTYtcXVhZGZzNjYwLUUiLAkic3QscXVhZGZzIgorICAic3Qsc3RpaDQxNi1xdWFkZnM2NjAtRiIsCSJzdCxxdWFkZnMiCisgICJzdCxzdGloNDA3LXF1YWRmczY2MC1DIiwJInN0LHF1YWRmcyIKKyAgInN0LHN0aWg0MDctcXVhZGZzNjYwLUQiLAkic3QscXVhZGZzIgorCisKKy0gI2Nsb2NrLWNlbGxzIDogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzsgc2hhbGwgYmUgc2V0IHRvIDEuCisKKy0gcmVnIDogQSBCYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0LgorCistIGNsb2NrcyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmcKKworLSBjbG9jay1vdXRwdXQtbmFtZXMgOiBGcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nLiBUaGUgYmxvY2sgaGFzIDQKKyAgICAgICAgICAgICAgICAgICAgICAgY2xvY2sgb3V0cHV0cyBidXQgbm90IGFsbCBvZiB0aGVtIGluIGEgc3BlY2lmaWMgaW5zdGFuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgaGF2ZSB0byBiZSB1c2VkIGluIHRoZSBTb0MuIElmIGEgY2xvY2sgbmFtZSBpcyBsZWZ0IGFzCisgICAgICAgICAgICAgICAgICAgICAgIGFuIGVtcHR5IHN0cmluZyB0aGVuIG5vIGNsb2NrIHdpbGwgYmUgY3JlYXRlZCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCBhc3NvY2lhdGVkIHdpdGggdGhhdCBzdHJpbmcgaW5kZXguIElmIGZld2VyIHRoYW4KKyAgICAgICAgICAgICAgICAgICAgICAgNCBzdHJpbmdzIGFyZSBwcm92aWRlZCB0aGVuIG5vIGNsb2NrcyB3aWxsIGJlIGNyZWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSByZW1haW5pbmcgb3V0cHV0cy4KKworRXhhbXBsZToKKworCWNsb2NrZ2VuX2U6IGNsb2NrZ2VuLWVAZmQzMjA4YmMgeworICAgICAgICAgICAgICAgICNjbG9jay1jZWxscyA9IDwxPjsKKyAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gInN0LHN0aWg0MTYtcXVhZGZzNjYwLUUiLCAic3QscXVhZGZzIjsKKyAgICAgICAgICAgICAgICByZWcgPSA8MHhmZDMyMDhiYyAweEIwPjsKKworICAgICAgICAgICAgICAgIGNsb2NrcyA9IDwmY2xrX3N5c2luPjsKKyAgICAgICAgICAgICAgICBjbG9jay1vdXRwdXQtbmFtZXMgPSAiY2xrLW0tcGl4LW1kdHAtMCIsCisJCQkJICAgICAiY2xrLW0tcGl4LW1kdHAtMSIsCisJCQkJICAgICAiY2xrLW0tcGl4LW1kdHAtMiIsCisJCQkJICAgICAiY2xrLW0tbXBlbHBjIjsKKyAgICAgICAgfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdGUtdTMwMC1zeXNjb24tY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3N0ZS11MzAwLXN5c2Nvbi1jbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NhZmNiOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdGUtdTMwMC1zeXNjb24tY2xvY2sudHh0CkBAIC0wLDAgKzEsODAgQEAKK0Nsb2NrIGJpbmRpbmdzIGZvciBTVC1Fcmljc3NvbiBVMzAwIFN5c3RlbSBDb250cm9sbGVyIENsb2NrcworCitCaW5kaW5ncyBmb3IgdGhlIGdhdGVkIHN5c3RlbSBjb250cm9sbGVyIGNsb2NrczoKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogbXVzdCBiZSAic3Rlcmljc3Nvbix1MzAwLXN5c2Nvbi1jbGsiCistICNjbG9jay1jZWxsczogbXVzdCBiZSA8MD4KKy0gY2xvY2stdHlwZTogc3BlY2lmaWVzIHRoZSB0eXBlIG9mIGNsb2NrOgorICAwID0gc2xvdyBjbG9jaworICAxID0gZmFzdCBjbG9jaworICAyID0gcmVzdC9yZW1haW5pbmcgY2xvY2sKKy0gY2xvY2staWQ6IHNwZWNpZmllcyB0aGUgY2xvY2sgaW4gdGhlIHR5cGUgcmFuZ2UKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gY2xvY2tzOiBwYXJlbnQgY2xvY2socykKKworVGhlIGF2YWlsYWJsZSBjbG9ja3MgcGVyIHR5cGUgYXJlIGFzIGZvbGxvd3M6CisKK1R5cGU6ICBJRDogICBDbG9jazoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKzAgICAgICAwICAgICBTbG93IHBlcmlwaGVyYWwgYnJpZGdlIGNsb2NrCiswICAgICAgMSAgICAgVUFSVDAgY2xvY2sKKzAgICAgICA0ICAgICBHUElPIGNsb2NrCiswICAgICAgNiAgICAgUlRDIGNsb2NrCiswICAgICAgNyAgICAgQXBwbGljYXRpb24gdGltZXIgY2xvY2sKKzAgICAgICA4ICAgICBBY2Nlc3MgdGltZXIgY2xvY2sKKworMSAgICAgIDAgICAgIEZhc3QgcGVyaXBoZXJhbCBicmlkZ2UgY2xvY2sKKzEgICAgICAxICAgICBJMkMgYnVzIDAgY2xvY2sKKzEgICAgICAyICAgICBJMkMgYnVzIDEgY2xvY2sKKzEgICAgICA1ICAgICBNTUMgaW50ZXJmYWNlIHBlcmlwaGVyYWwgKHNpbGljb24pIGNsb2NrCisxICAgICAgNiAgICAgU1BJIGNsb2NrCisKKzIgICAgICAzICAgICBDUFUgY2xvY2sKKzIgICAgICA0ICAgICBETUEgY29udHJvbGxlciBjbG9jaworMiAgICAgIDUgICAgIEV4dGVybmFsIE1lbW9yeSBJbnRlcmZhY2UgKEVNSUYpIGNsb2NrCisyICAgICAgNiAgICAgTkFORCBmbGFzayBpbnRlcmZhY2UgY2xvY2sKKzIgICAgICA4ICAgICBYR0FNIGdyYXBoaWNzIGVuZ2luZSBjbG9jaworMiAgICAgIDkgICAgIFNoYXJlZCBFeHRlcm5hbCBNZW1vcnkgSW50ZXJmYWNlIChTRU1JKSBjbG9jaworMiAgICAgIDEwICAgIEFIQiBTdWJzeXN0ZW0gQnJpZGdlIGNsb2NrCisyICAgICAgMTIgICAgSW50ZXJydXB0IGNvbnRyb2xsZXIgY2xvY2sKKworRXhhbXBsZToKKworZ3Bpb19jbGs6IGdwaW9fY2xrQDEzTSB7CisJI2Nsb2NrLWNlbGxzID0gPDA+OworCWNvbXBhdGlibGUgPSAic3Rlcmljc3Nvbix1MzAwLXN5c2Nvbi1jbGsiOworCWNsb2NrLXR5cGUgPSA8MD47IC8qIFNsb3cgKi8KKwljbG9jay1pZCA9IDw0PjsKKwljbG9ja3MgPSA8JnNsb3dfY2xrPjsKK307CisKK2dwaW86IGdwaW9AYzAwMTYwMDAgeworCWNvbXBhdGlibGUgPSAic3Rlcmljc3NvbixncGlvLWNvaDkwMSI7CisJKC4uLikKKwljbG9ja3MgPSA8JmdwaW9fY2xrPjsKK307CisKKworQmluZGluZ3MgZm9yIHRoZSBNTUMvU0QgY2FyZCBjbG9jazoKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogbXVzdCBiZSAic3Rlcmljc3Nvbix1MzAwLXN5c2Nvbi1tY2xrIgorLSAjY2xvY2stY2VsbHM6IG11c3QgYmUgPDA+CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrczogcGFyZW50IGNsb2NrKHMpCisKK21tY19tY2xrOiBtbWNfbWNsayB7CisJI2Nsb2NrLWNlbGxzID0gPDA+OworCWNvbXBhdGlibGUgPSAic3Rlcmljc3Nvbix1MzAwLXN5c2Nvbi1tY2xrIjsKKwljbG9ja3MgPSA8Jm1tY19wY2xrPjsKK307CisKK21tY3NkOiBtbWNzZEBjMDAwMTAwMCB7CisJY29tcGF0aWJsZSA9ICJhcm0scGwxOHgiLCAiYXJtLHByaW1lY2VsbCI7CisJY2xvY2tzID0gPCZtbWNfcGNsaz4sIDwmbW1jX21jbGs+OworCWNsb2NrLW5hbWVzID0gImFwYl9wY2xrIiwgIm1jbGsiOworCSguLi4pCit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3N1bnhpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdW54aS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThjNzRhNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdW54aS50eHQKQEAgLTAsMCArMSwyMDcgQEAKK0RldmljZSBUcmVlIENsb2NrIGJpbmRpbmdzIGZvciBhcmNoLXN1bnhpCisKK1RoaXMgYmluZGluZyB1c2VzIHRoZSBjb21tb24gY2xvY2sgYmluZGluZ1sxXS4KKworWzFdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNoYWxsIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCSJhbGx3aW5uZXIsc3VuNGktYTEwLW9zYy1jbGsiIC0gZm9yIGEgZ2F0YWJsZSBvc2NpbGxhdG9yCisJImFsbHdpbm5lcixzdW40aS1hMTAtcGxsMS1jbGsiIC0gZm9yIHRoZSBtYWluIFBMTCBjbG9jayBhbmQgUExMNAorCSJhbGx3aW5uZXIsc3VuNmktYTMxLXBsbDEtY2xrIiAtIGZvciB0aGUgbWFpbiBQTEwgY2xvY2sgb24gQTMxCisJImFsbHdpbm5lcixzdW44aS1hMjMtcGxsMS1jbGsiIC0gZm9yIHRoZSBtYWluIFBMTCBjbG9jayBvbiBBMjMKKwkiYWxsd2lubmVyLHN1bjlpLWE4MC1wbGw0LWNsayIgLSBmb3IgdGhlIHBlcmlwaGVyYWwgUExMcyBvbiBBODAKKwkiYWxsd2lubmVyLHN1bjRpLWExMC1wbGw1LWNsayIgLSBmb3IgdGhlIFBMTDUgY2xvY2sKKwkiYWxsd2lubmVyLHN1bjRpLWExMC1wbGw2LWNsayIgLSBmb3IgdGhlIFBMTDYgY2xvY2sKKwkiYWxsd2lubmVyLHN1bjZpLWEzMS1wbGw2LWNsayIgLSBmb3IgdGhlIFBMTDYgY2xvY2sgb24gQTMxCisJImFsbHdpbm5lcixzdW45aS1hODAtZ3QtY2xrIiAtIGZvciB0aGUgR1QgYnVzIGNsb2NrIG9uIEE4MAorCSJhbGx3aW5uZXIsc3VuNGktYTEwLWNwdS1jbGsiIC0gZm9yIHRoZSBDUFUgbXVsdGlwbGV4ZXIgY2xvY2sKKwkiYWxsd2lubmVyLHN1bjRpLWExMC1heGktY2xrIiAtIGZvciB0aGUgQVhJIGNsb2NrCisJImFsbHdpbm5lcixzdW44aS1hMjMtYXhpLWNsayIgLSBmb3IgdGhlIEFYSSBjbG9jayBvbiBBMjMKKwkiYWxsd2lubmVyLHN1bjRpLWExMC1nYXRlcy1jbGsiIC0gZm9yIGdlbmVyaWMgZ2F0ZXMgb24gYWxsIGNvbXBhdGlibGUgU29DcworCSJhbGx3aW5uZXIsc3VuNGktYTEwLWF4aS1nYXRlcy1jbGsiIC0gZm9yIHRoZSBBWEkgZ2F0ZXMKKwkiYWxsd2lubmVyLHN1bjRpLWExMC1haGItY2xrIiAtIGZvciB0aGUgQUhCIGNsb2NrCisJImFsbHdpbm5lcixzdW41aS1hMTMtYWhiLWNsayIgLSBmb3IgdGhlIEFIQiBjbG9jayBvbiBBMTMKKwkiYWxsd2lubmVyLHN1bjlpLWE4MC1haGItY2xrIiAtIGZvciB0aGUgQUhCIGJ1cyBjbG9ja3Mgb24gQTgwCisJImFsbHdpbm5lcixzdW40aS1hMTAtYWhiLWdhdGVzLWNsayIgLSBmb3IgdGhlIEFIQiBnYXRlcyBvbiBBMTAKKwkiYWxsd2lubmVyLHN1bjVpLWExMy1haGItZ2F0ZXMtY2xrIiAtIGZvciB0aGUgQUhCIGdhdGVzIG9uIEExMworCSJhbGx3aW5uZXIsc3VuNWktYTEwcy1haGItZ2F0ZXMtY2xrIiAtIGZvciB0aGUgQUhCIGdhdGVzIG9uIEExMHMKKwkiYWxsd2lubmVyLHN1bjdpLWEyMC1haGItZ2F0ZXMtY2xrIiAtIGZvciB0aGUgQUhCIGdhdGVzIG9uIEEyMAorCSJhbGx3aW5uZXIsc3VuNmktYTMxLWFyMTAwLWNsayIgLSBmb3IgdGhlIEFSMTAwIG9uIEEzMQorCSJhbGx3aW5uZXIsc3VuNmktYTMxLWFoYjEtY2xrIiAtIGZvciB0aGUgQUhCMSBjbG9jayBvbiBBMzEKKwkiYWxsd2lubmVyLHN1bjZpLWEzMS1haGIxLWdhdGVzLWNsayIgLSBmb3IgdGhlIEFIQjEgZ2F0ZXMgb24gQTMxCisJImFsbHdpbm5lcixzdW44aS1hMjMtYWhiMS1nYXRlcy1jbGsiIC0gZm9yIHRoZSBBSEIxIGdhdGVzIG9uIEEyMworCSJhbGx3aW5uZXIsc3VuOWktYTgwLWFoYjAtZ2F0ZXMtY2xrIiAtIGZvciB0aGUgQUhCMCBnYXRlcyBvbiBBODAKKwkiYWxsd2lubmVyLHN1bjlpLWE4MC1haGIxLWdhdGVzLWNsayIgLSBmb3IgdGhlIEFIQjEgZ2F0ZXMgb24gQTgwCisJImFsbHdpbm5lcixzdW45aS1hODAtYWhiMi1nYXRlcy1jbGsiIC0gZm9yIHRoZSBBSEIyIGdhdGVzIG9uIEE4MAorCSJhbGx3aW5uZXIsc3VuNGktYTEwLWFwYjAtY2xrIiAtIGZvciB0aGUgQVBCMCBjbG9jaworCSJhbGx3aW5uZXIsc3VuNmktYTMxLWFwYjAtY2xrIiAtIGZvciB0aGUgQVBCMCBjbG9jayBvbiBBMzEKKwkiYWxsd2lubmVyLHN1bjhpLWEyMy1hcGIwLWNsayIgLSBmb3IgdGhlIEFQQjAgY2xvY2sgb24gQTIzCisJImFsbHdpbm5lcixzdW45aS1hODAtYXBiMC1jbGsiIC0gZm9yIHRoZSBBUEIwIGJ1cyBjbG9jayBvbiBBODAKKwkiYWxsd2lubmVyLHN1bjRpLWExMC1hcGIwLWdhdGVzLWNsayIgLSBmb3IgdGhlIEFQQjAgZ2F0ZXMgb24gQTEwCisJImFsbHdpbm5lcixzdW41aS1hMTMtYXBiMC1nYXRlcy1jbGsiIC0gZm9yIHRoZSBBUEIwIGdhdGVzIG9uIEExMworCSJhbGx3aW5uZXIsc3VuNWktYTEwcy1hcGIwLWdhdGVzLWNsayIgLSBmb3IgdGhlIEFQQjAgZ2F0ZXMgb24gQTEwcworCSJhbGx3aW5uZXIsc3VuNmktYTMxLWFwYjAtZ2F0ZXMtY2xrIiAtIGZvciB0aGUgQVBCMCBnYXRlcyBvbiBBMzEKKwkiYWxsd2lubmVyLHN1bjdpLWEyMC1hcGIwLWdhdGVzLWNsayIgLSBmb3IgdGhlIEFQQjAgZ2F0ZXMgb24gQTIwCisJImFsbHdpbm5lcixzdW44aS1hMjMtYXBiMC1nYXRlcy1jbGsiIC0gZm9yIHRoZSBBUEIwIGdhdGVzIG9uIEEyMworCSJhbGx3aW5uZXIsc3VuOGktaDMtYXBiMC1nYXRlcy1jbGsiIC0gZm9yIHRoZSBBUEIwIGdhdGVzIG9uIEgzCisJImFsbHdpbm5lcixzdW45aS1hODAtYXBiMC1nYXRlcy1jbGsiIC0gZm9yIHRoZSBBUEIwIGdhdGVzIG9uIEE4MAorCSJhbGx3aW5uZXIsc3VuNGktYTEwLWFwYjEtY2xrIiAtIGZvciB0aGUgQVBCMSBjbG9jaworCSJhbGx3aW5uZXIsc3VuOWktYTgwLWFwYjEtY2xrIiAtIGZvciB0aGUgQVBCMSBidXMgY2xvY2sgb24gQTgwCisJImFsbHdpbm5lcixzdW40aS1hMTAtYXBiMS1nYXRlcy1jbGsiIC0gZm9yIHRoZSBBUEIxIGdhdGVzIG9uIEExMAorCSJhbGx3aW5uZXIsc3VuNWktYTEzLWFwYjEtZ2F0ZXMtY2xrIiAtIGZvciB0aGUgQVBCMSBnYXRlcyBvbiBBMTMKKwkiYWxsd2lubmVyLHN1bjVpLWExMHMtYXBiMS1nYXRlcy1jbGsiIC0gZm9yIHRoZSBBUEIxIGdhdGVzIG9uIEExMHMKKwkiYWxsd2lubmVyLHN1bjZpLWEzMS1hcGIxLWdhdGVzLWNsayIgLSBmb3IgdGhlIEFQQjEgZ2F0ZXMgb24gQTMxCisJImFsbHdpbm5lcixzdW43aS1hMjAtYXBiMS1nYXRlcy1jbGsiIC0gZm9yIHRoZSBBUEIxIGdhdGVzIG9uIEEyMAorCSJhbGx3aW5uZXIsc3VuOGktYTIzLWFwYjEtZ2F0ZXMtY2xrIiAtIGZvciB0aGUgQVBCMSBnYXRlcyBvbiBBMjMKKwkiYWxsd2lubmVyLHN1bjlpLWE4MC1hcGIxLWdhdGVzLWNsayIgLSBmb3IgdGhlIEFQQjEgZ2F0ZXMgb24gQTgwCisJImFsbHdpbm5lcixzdW42aS1hMzEtYXBiMi1nYXRlcy1jbGsiIC0gZm9yIHRoZSBBUEIyIGdhdGVzIG9uIEEzMQorCSJhbGx3aW5uZXIsc3VuOGktYTIzLWFwYjItZ2F0ZXMtY2xrIiAtIGZvciB0aGUgQVBCMiBnYXRlcyBvbiBBMjMKKwkiYWxsd2lubmVyLHN1bjVpLWExMy1tYnVzLWNsayIgLSBmb3IgdGhlIE1CVVMgY2xvY2sgb24gQTEzCisJImFsbHdpbm5lcixzdW40aS1hMTAtbW1jLWNsayIgLSBmb3IgdGhlIE1NQyBjbG9jaworCSJhbGx3aW5uZXIsc3VuOWktYTgwLW1tYy1jbGsiIC0gZm9yIG1tYyBtb2R1bGUgY2xvY2tzIG9uIEE4MAorCSJhbGx3aW5uZXIsc3VuOWktYTgwLW1tYy1jb25maWctY2xrIiAtIGZvciBtbWMgZ2F0ZXMgKyByZXNldHMgb24gQTgwCisJImFsbHdpbm5lcixzdW40aS1hMTAtbW9kMC1jbGsiIC0gZm9yIHRoZSBtb2R1bGUgMCBmYW1pbHkgb2YgY2xvY2tzCisJImFsbHdpbm5lcixzdW45aS1hODAtbW9kMC1jbGsiIC0gZm9yIG1vZHVsZSAwIChzdG9yYWdlKSBjbG9ja3Mgb24gQTgwCisJImFsbHdpbm5lcixzdW44aS1hMjMtbWJ1cy1jbGsiIC0gZm9yIHRoZSBNQlVTIGNsb2NrIG9uIEEyMworCSJhbGx3aW5uZXIsc3VuN2ktYTIwLW91dC1jbGsiIC0gZm9yIHRoZSBleHRlcm5hbCBvdXRwdXQgY2xvY2tzCisJImFsbHdpbm5lcixzdW43aS1hMjAtZ21hYy1jbGsiIC0gZm9yIHRoZSBHTUFDIGNsb2NrIG1vZHVsZSBvbiBBMjAvQTMxCisJImFsbHdpbm5lcixzdW40aS1hMTAtdXNiLWNsayIgLSBmb3IgdXNiIGdhdGVzICsgcmVzZXRzIG9uIEExMCAvIEEyMAorCSJhbGx3aW5uZXIsc3VuNWktYTEzLXVzYi1jbGsiIC0gZm9yIHVzYiBnYXRlcyArIHJlc2V0cyBvbiBBMTMKKwkiYWxsd2lubmVyLHN1bjZpLWEzMS11c2ItY2xrIiAtIGZvciB1c2IgZ2F0ZXMgKyByZXNldHMgb24gQTMxCisJImFsbHdpbm5lcixzdW44aS1hMjMtdXNiLWNsayIgLSBmb3IgdXNiIGdhdGVzICsgcmVzZXRzIG9uIEEyMworCSJhbGx3aW5uZXIsc3VuOWktYTgwLXVzYi1tb2QtY2xrIiAtIGZvciB1c2IgZ2F0ZXMgKyByZXNldHMgb24gQTgwCisJImFsbHdpbm5lcixzdW45aS1hODAtdXNiLXBoeS1jbGsiIC0gZm9yIHVzYiBwaHkgZ2F0ZXMgKyByZXNldHMgb24gQTgwCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIGFsbCBjbG9ja3M6CistIHJlZyA6IHNoYWxsIGJlIHRoZSBjb250cm9sIHJlZ2lzdGVyIGFkZHJlc3MgZm9yIHRoZSBjbG9jay4KKy0gY2xvY2tzIDogc2hhbGwgYmUgdGhlIGlucHV0IHBhcmVudCBjbG9jayhzKSBwaGFuZGxlIGZvciB0aGUgY2xvY2suIEZvcgorCW11bHRpcGxleGVkIGNsb2NrcywgdGhlIGxpc3Qgb3JkZXIgbXVzdCBtYXRjaCB0aGUgaGFyZHdhcmUKKwlwcm9ncmFtbWluZyBvcmRlci4KKy0gI2Nsb2NrLWNlbGxzIDogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzsgc2hhbGwgYmUgc2V0IHRvIDAgZXhjZXB0IGZvcgorCXRoZSBmb2xsb3dpbmcgY29tcGF0aWJsZXMgd2hlcmUgaXQgc2hhbGwgYmUgc2V0IHRvIDE6CisJImFsbHdpbm5lciwqLWdhdGVzLWNsayIsICJhbGx3aW5uZXIsc3VuNGktcGxsNS1jbGsiLAorCSJhbGx3aW5uZXIsc3VuNGktcGxsNi1jbGsiLCAiYWxsd2lubmVyLHN1bjZpLWEzMS1wbGw2LWNsayIsCisJImFsbHdpbm5lciwqLXVzYi1jbGsiLCAiYWxsd2lubmVyLCotbW1jLWNsayIsCisJImFsbHdpbm5lciwqLW1tYy1jb25maWctY2xrIgorLSBjbG9jay1vdXRwdXQtbmFtZXMgOiBzaGFsbCBiZSB0aGUgY29ycmVzcG9uZGluZyBuYW1lcyBvZiB0aGUgb3V0cHV0cy4KKwlJZiB0aGUgY2xvY2sgbW9kdWxlIG9ubHkgaGFzIG9uZSBvdXRwdXQsIHRoZSBuYW1lIHNoYWxsIGJlIHRoZQorCW1vZHVsZSBuYW1lLgorCitBbmQgImFsbHdpbm5lciwqLXVzYi1jbGsiIGNsb2NrcyBhbHNvIHJlcXVpcmU6CistIHJlc2V0LWNlbGxzIDogc2hhbGwgYmUgc2V0IHRvIDEKKworVGhlICJhbGx3aW5uZXIsc3VuOWktYTgwLW1tYy1jb25maWctY2xrIiBjbG9jayBhbHNvIHJlcXVpcmVzOgorLSAjcmVzZXQtY2VsbHMgOiBzaGFsbCBiZSBzZXQgdG8gMQorLSByZXNldHMgOiBzaGFsbCBiZSB0aGUgcmVzZXQgY29udHJvbCBwaGFuZGxlIGZvciB0aGUgbW1jIGJsb2NrLgorCitGb3IgImFsbHdpbm5lcixzdW43aS1hMjAtZ21hYy1jbGsiLCB0aGUgcGFyZW50IGNsb2NrcyBzaGFsbCBiZSBmaXhlZCByYXRlCitkdW1teSBjbG9ja3MgYXQgMjUgTUh6IGFuZCAxMjUgTUh6LCByZXNwZWN0aXZlbHkuIFNlZSBleGFtcGxlLgorCitDbG9jayBjb25zdW1lcnMgc2hvdWxkIHNwZWNpZnkgdGhlIGRlc2lyZWQgY2xvY2tzIHRoZXkgdXNlIHdpdGggYQorImNsb2NrcyIgcGhhbmRsZSBjZWxsLiBDb25zdW1lcnMgdGhhdCBhcmUgdXNpbmcgYSBnYXRlZCBjbG9jayBzaG91bGQKK3Byb3ZpZGUgYW4gYWRkaXRpb25hbCBJRCBpbiB0aGVpciBjbG9jayBwcm9wZXJ0eS4gVGhpcyBJRCBpcyB0aGUKK29mZnNldCBvZiB0aGUgYml0IGNvbnRyb2xsaW5nIHRoaXMgcGFydGljdWxhciBnYXRlIGluIHRoZSByZWdpc3Rlci4KK0ZvciB0aGUgb3RoZXIgY2xvY2tzIHdpdGggIiNjbG9jay1jZWxscyIgPSAxLCB0aGUgYWRkaXRpb25hbCBJRCBzaGFsbAorcmVmZXIgdG8gdGhlIGluZGV4IG9mIHRoZSBvdXRwdXQuCisKK0ZvciAiYWxsd2lubmVyLHN1bjZpLWEzMS1wbGw2LWNsayIsIHRoZXJlIGFyZSAyIG91dHB1dHMuIFRoZSBmaXJzdCBvdXRwdXQKK2lzIHRoZSBub3JtYWwgUExMNiBvdXRwdXQsIG9yICJwbGw2Ii4gVGhlIHNlY29uZCBvdXRwdXQgaXMgcmF0ZSBkb3VibGVkCitQTEw2LCBvciAicGxsNngyIi4KKworVGhlICJhbGx3aW5uZXIsKi1tbWMtY2xrIiBjbG9ja3MgaGF2ZSB0aHJlZSBkaWZmZXJlbnQgb3V0cHV0czogdGhlCittYWluIGNsb2NrLCB3aXRoIHRoZSBJRCAwLCBhbmQgdGhlIG91dHB1dCBhbmQgc2FtcGxlIGNsb2Nrcywgd2l0aCB0aGUKK0lEcyAxIGFuZCAyLCByZXNwZWN0aXZlbHkuCisKK1RoZSAiYWxsd2lubmVyLHN1bjlpLWE4MC1tbWMtY29uZmlnLWNsayIgY2xvY2sgaGFzIG9uZSBjbG9jay9yZXNldCBvdXRwdXQKK3BlciBtbWMgY29udHJvbGxlci4gVGhlIG51bWJlciBvZiBvdXRwdXRzIGlzIGRldGVybWluZWQgYnkgdGhlIHNpemUgb2YKK3RoZSBhZGRyZXNzIGJsb2NrLCB3aGljaCBpcyByZWxhdGVkIHRvIHRoZSBvdmVyYWxsIG1tYyBibG9jay4KKworRm9yIGV4YW1wbGU6CisKK29zYzI0TTogY2xrQDAxYzIwMDUwIHsKKwkjY2xvY2stY2VsbHMgPSA8MD47CisJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNGktYTEwLW9zYy1jbGsiOworCXJlZyA9IDwweDAxYzIwMDUwIDB4ND47CisJY2xvY2tzID0gPCZvc2MyNE1fZml4ZWQ+OworCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJvc2MyNE0iOworfTsKKworcGxsMTogY2xrQDAxYzIwMDAwIHsKKwkjY2xvY2stY2VsbHMgPSA8MD47CisJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNGktYTEwLXBsbDEtY2xrIjsKKwlyZWcgPSA8MHgwMWMyMDAwMCAweDQ+OworCWNsb2NrcyA9IDwmb3NjMjRNPjsKKwljbG9jay1vdXRwdXQtbmFtZXMgPSAicGxsMSI7Cit9OworCitwbGw1OiBjbGtAMDFjMjAwMjAgeworCSNjbG9jay1jZWxscyA9IDwxPjsKKwljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW40aS1wbGw1LWNsayI7CisJcmVnID0gPDB4MDFjMjAwMjAgMHg0PjsKKwljbG9ja3MgPSA8Jm9zYzI0TT47CisJY2xvY2stb3V0cHV0LW5hbWVzID0gInBsbDVfZGRyIiwgInBsbDVfb3RoZXIiOworfTsKKworcGxsNjogY2xrQDAxYzIwMDI4IHsKKwkjY2xvY2stY2VsbHMgPSA8MT47CisJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNmktYTMxLXBsbDYtY2xrIjsKKwlyZWcgPSA8MHgwMWMyMDAyOCAweDQ+OworCWNsb2NrcyA9IDwmb3NjMjRNPjsKKwljbG9jay1vdXRwdXQtbmFtZXMgPSAicGxsNiIsICJwbGw2eDIiOworfTsKKworY3B1OiBjcHVAMDFjMjAwNTQgeworCSNjbG9jay1jZWxscyA9IDwwPjsKKwljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW40aS1hMTAtY3B1LWNsayI7CisJcmVnID0gPDB4MDFjMjAwNTQgMHg0PjsKKwljbG9ja3MgPSA8Jm9zYzMyaz4sIDwmb3NjMjRNPiwgPCZwbGwxPjsKKwljbG9jay1vdXRwdXQtbmFtZXMgPSAiY3B1IjsKK307CisKK21tYzBfY2xrOiBjbGtAMDFjMjAwODggeworCSNjbG9jay1jZWxscyA9IDwxPjsKKwljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW40aS1hMTAtbW1jLWNsayI7CisJcmVnID0gPDB4MDFjMjAwODggMHg0PjsKKwljbG9ja3MgPSA8Jm9zYzI0TT4sIDwmcGxsNiAxPiwgPCZwbGw1IDE+OworCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJtbWMwIiwgIm1tYzBfb3V0cHV0IiwgIm1tYzBfc2FtcGxlIjsKK307CisKK21paV9waHlfdHhfY2xrOiBjbGtAMiB7CisJI2Nsb2NrLWNlbGxzID0gPDA+OworCWNvbXBhdGlibGUgPSAiZml4ZWQtY2xvY2siOworCWNsb2NrLWZyZXF1ZW5jeSA9IDwyNTAwMDAwMD47CisJY2xvY2stb3V0cHV0LW5hbWVzID0gIm1paV9waHlfdHgiOworfTsKKworZ21hY19pbnRfdHhfY2xrOiBjbGtAMyB7CisJI2Nsb2NrLWNlbGxzID0gPDA+OworCWNvbXBhdGlibGUgPSAiZml4ZWQtY2xvY2siOworCWNsb2NrLWZyZXF1ZW5jeSA9IDwxMjUwMDAwMDA+OworCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJnbWFjX2ludF90eCI7Cit9OworCitnbWFjX2NsazogY2xrQDAxYzIwMTY0IHsKKwkjY2xvY2stY2VsbHMgPSA8MD47CisJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuN2ktYTIwLWdtYWMtY2xrIjsKKwlyZWcgPSA8MHgwMWMyMDE2NCAweDQ+OworCS8qCisJICogVGhlIGZpcnN0IGNsb2NrIG11c3QgYmUgZml4ZWQgYXQgMjVNSHo7CisJICogdGhlIHNlY29uZCBjbG9jayBtdXN0IGJlIGZpeGVkIGF0IDEyNU1IegorCSAqLworCWNsb2NrcyA9IDwmbWlpX3BoeV90eF9jbGs+LCA8JmdtYWNfaW50X3R4X2Nsaz47CisJY2xvY2stb3V0cHV0LW5hbWVzID0gImdtYWMiOworfTsKKworbW1jX2NvbmZpZ19jbGs6IGNsa0AwMWMxMzAwMCB7CisJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuOWktYTgwLW1tYy1jb25maWctY2xrIjsKKwlyZWcgPSA8MHgwMWMxMzAwMCAweDEwPjsKKwljbG9ja3MgPSA8JmFoYjBfZ2F0ZXMgOD47CisJY2xvY2stbmFtZXMgPSAiYWhiIjsKKwlyZXNldHMgPSA8JmFoYjBfcmVzZXRzIDg+OworCXJlc2V0LW5hbWVzID0gImFoYiI7CisJI2Nsb2NrLWNlbGxzID0gPDE+OworCSNyZXNldC1jZWxscyA9IDwxPjsKKwljbG9jay1vdXRwdXQtbmFtZXMgPSAibW1jMF9jb25maWciLCAibW1jMV9jb25maWciLAorCQkJICAgICAibW1jMl9jb25maWciLCAibW1jM19jb25maWciOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay90aSxjZGNlNzA2LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay90aSxjZGNlNzA2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTY4MzZlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3RpLGNkY2U3MDYudHh0CkBAIC0wLDAgKzEsNDIgQEAKK0JpbmRpbmdzIGZvciBUZXhhcyBJbnN0cnVtZW50cyBDRENFNzA2IHByb2dyYW1tYWJsZSAzLVBMTCBjbG9jaworc3ludGhlc2l6ZXIvbXVsdGlwbGllci9kaXZpZGVyLgorCitSZWZlcmVuY2U6IGh0dHA6Ly93d3cudGkuY29tL2xpdC9kcy9zeW1saW5rL2NkY2U3MDYucGRmCisKK0kyQyBkZXZpY2Ugbm9kZSByZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaGFsbCBiZSAidGksY2RjZTcwNiIuCistIHJlZzogaTJjIGRldmljZSBhZGRyZXNzLCBzaGFsbCBiZSBpbiByYW5nZSBbMHg2OC4uLjB4NmJdLgorLSAjY2xvY2stY2VsbHM6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IHNoYWxsIGJlIHNldCB0byAxLgorLSBjbG9ja3M6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IGxpc3Qgb2YgcGFyZW50IGNsb2NrCisgIGhhbmRsZXMsIHNoYWxsIGJlIHJlZmVyZW5jZSBjbG9jayhzKSBjb25uZWN0ZWQgdG8gQ0xLX0lOMAorICBhbmQgQ0xLX0lOMSBwaW5zLgorLSBjbG9jay1uYW1lczogc2hhbGwgYmUgY2xrX2luMCBhbmQvb3IgY2xrX2luMS4gVXNlIGNsa19pbjAKKyAgaW4gY2FzZSBvZiBjcnlzdGFsIG9zY2lsbGF0b3Igb3IgZGlmZmVyZW50aWFsIHNpZ25hbCBpbnB1dAorICBjb25maWd1cmF0aW9uLiBVc2UgY2xrX2luMCBhbmQgY2xrX2luMSBpbiBjYXNlIG9mIGluZGVwZW5kZW50CisgIHNpbmdsZS1lbmRlZCBMVkNNT1MgaW5wdXRzIGNvbmZpZ3VyYXRpb24uCisKK0V4YW1wbGU6CisKKwljbG9ja3MgeworCQljbGs1NDogY2xrNTQgeworCQkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQkJY29tcGF0aWJsZSA9ICJmaXhlZC1jbG9jayI7CisJCQljbG9jay1mcmVxdWVuY3kgPSA8NTQwMDAwMDA+OworCQl9OworCX07CisJLi4uCisJaTJjMDogaTJjLW1hc3RlckAwZDA5MDAwMCB7CisJCS4uLgorCQljZGNlNzA2OiBjbG9jay1zeW50aEA2OSB7CisJCQljb21wYXRpYmxlID0gInRpLGNkY2U3MDYiOworCQkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQkJcmVnID0gPDB4Njk+OworCQkJY2xvY2tzID0gPCZjbGs1ND47CisJCQljbG9jay1uYW1lcyA9ICJjbGtfaW4wIjsKKwkJfTsKKwl9OworCS4uLgorCXNpbXBsZS1hdWRpby1jYXJkLGNvZGVjIHsKKwkJLi4uCisJCWNsb2NrcyA9IDwmY2RjZTcwNiA0PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3RpLGNkY2U5MjUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3RpLGNkY2U5MjUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjNzY2OWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGksY2RjZTkyNS50eHQKQEAgLTAsMCArMSw0MiBAQAorQmluZGluZyBmb3IgVE8gQ0RDRTkyNSBwcm9ncmFtbWFibGUgSTJDIGNsb2NrIHN5bnRoZXNpemVycy4KKworUmVmZXJlbmNlCitUaGlzIGJpbmRpbmcgdXNlcyB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmdbMV0uCisKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CitbMl0gaHR0cDovL3d3dy50aS5jb20vcHJvZHVjdC9jZGNlOTI1CisKK1RoZSBkcml2ZXIgcHJvdmlkZXMgY2xvY2sgc291cmNlcyBmb3IgZWFjaCBvdXRwdXQgWTEgdGhyb3VnaCBZNS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGU6IFNoYWxsIGJlICJ0aSxjZGNlOTI1IgorIC0gcmVnOiBJMkMgZGV2aWNlIGFkZHJlc3MuCisgLSBjbG9ja3M6IFBvaW50cyB0byBhIGZpeGVkIHBhcmVudCBjbG9jayB0aGF0IHByb3ZpZGVzIHRoZSBpbnB1dCBmcmVxdWVuY3kuCisgLSAjY2xvY2stY2VsbHM6IEZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmdzOiBTaGFsbCBiZSAxLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorIC0geHRhbC1sb2FkLXBmOiBDcnlzdGFsIGxvYWQtY2FwYWNpdG9yIHZhbHVlIHRvIGZpbmUtdHVuZSBwZXJmb3JtYW5jZSBvbiBhCisgICAgICAgICAgICAgICAgIGJvYXJkLCBvciB0byBjb21wZW5zYXRlIGZvciBleHRlcm5hbCBpbmZsdWVuY2VzLgorCitGb3IgYm90aCBQTEwxIGFuZCBQTEwyIGFuIG9wdGlvbmFsIGNoaWxkIG5vZGUgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBzcHJlYWQKK3NwZWN0cnVtIGNsb2NraW5nIHBhcmFtZXRlcnMgZm9yIGEgYm9hcmQuCisgIC0gc3ByZWFkLXNwZWN0cnVtOiBTU0MgbW9kZSBhcyBkZWZpbmVkIGluIHRoZSBkYXRhIHNoZWV0LgorICAtIHNwcmVhZC1zcGVjdHJ1bS1jZW50ZXI6IFVzZSAiY2VudGVyZWQiIG1vZGUgaW5zdGVhZCBvZiAibWF4IiBtb2RlLiBXaGVuCisgICAgcHJlc2VudCwgdGhlIGNsb2NrIHJ1bnMgYXQgdGhlIHJlcXVlc3RlZCBmcmVxdWVuY3kgb24gYXZlcmFnZS4gT3RoZXJ3aXNlCisgICAgdGhlIHJlcXVlc3RlZCBmcmVxdWVuY3kgaXMgdGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIFNDQyByYW5nZS4KKworCitFeGFtcGxlOgorCisJY2xvY2tnZW46IGNkY2U5MjVwd0A2NCB7CisJCWNvbXBhdGlibGUgPSAiY2RjZTkyNSI7CisJCXJlZyA9IDwweDY0PjsKKwkJY2xvY2tzID0gPCZ4dGFsXzI3TWh6PjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQl4dGFsLWxvYWQtcGYgPSA8NT47CisJCS8qIFBMTCBvcHRpb25zIHRvIGdldCBTU0MgMSUgY2VudGVyZWQgKi8KKwkJUExMMiB7CisJCQlzcHJlYWQtc3BlY3RydW0gPSA8ND47CisJCQlzcHJlYWQtc3BlY3RydW0tY2VudGVyOworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGkta2V5c3RvbmUtcGxsY3RybC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGkta2V5c3RvbmUtcGxsY3RybC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U2YTgxZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay90aS1rZXlzdG9uZS1wbGxjdHJsLnR4dApAQCAtMCwwICsxLDIwIEBACisqIERldmljZSB0cmVlIGJpbmRpbmdzIGZvciBUZXhhcyBJbnN0cnVtZW50cyBrZXlzdG9uZSBwbGwgY29udHJvbGxlcgorCitUaGUgbWFpbiBwbGwgY29udHJvbGxlciB1c2VkIHRvIGRyaXZlIHRoZUM2NnggQ29yZVBhY3MsIHRoZSBzd2l0Y2ggZmFicmljLAorYW5kIGEgbWFqb3JpdHkgb2YgdGhlIHBlcmlwaGVyYWwgY2xvY2tzIChhbGwgYnV0IHRoZSBBUk0gQ29yZVBhY3MsIEREUjMgYW5kCit0aGUgTkVUQ1AgbW9kdWxlcykgcmVxdWlyZXMgYSBQTEwgQ29udHJvbGxlciB0byBtYW5hZ2UgdGhlIHZhcmlvdXMgY2xvY2sKK2RpdmlzaW9ucywgZ2F0aW5nLCBhbmQgc3luY2hyb25pemF0aW9uLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6CQkidGksa2V5c3RvbmUtcGxsY3RybCIsICJzeXNjb24iCisKKy0gcmVnOgkJCWNvbnRhaW5zIG9mZnNldC9sZW5ndGggdmFsdWUgZm9yIHBsbCBjb250cm9sbGVyCisJCQlyZWdpc3RlcnMgc3BhY2UuCisKK0V4YW1wbGU6CisKK3BsbGN0cmw6IHBsbC1jb250cm9sbGVyQDB4MDIzMTAwMDAgeworCWNvbXBhdGlibGUgPSAidGksa2V5c3RvbmUtcGxsY3RybCIsICJzeXNjb24iOworCXJlZyA9IDwweDAyMzEwMDAwIDB4MjAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGkvYXBsbC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGkvYXBsbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRlNGRkNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay90aS9hcGxsLnR4dApAQCAtMCwwICsxLDQ1IEBACitCaW5kaW5nIGZvciBUZXhhcyBJbnN0cnVtZW50cyBBUExMIGNsb2NrLgorCitCaW5kaW5nIHN0YXR1czogVW5zdGFibGUgLSBBQkkgY29tcGF0aWJpbGl0eSBtYXkgYmUgYnJva2VuIGluIHRoZSBmdXR1cmUKKworVGhpcyBiaW5kaW5nIHVzZXMgdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nWzFdLiAgSXQgYXNzdW1lcyBhCityZWdpc3Rlci1tYXBwZWQgQVBMTCB3aXRoIHVzdWFsbHkgdHdvIHNlbGVjdGFibGUgaW5wdXQgY2xvY2tzCisocmVmZXJlbmNlIGNsb2NrIGFuZCBieXBhc3MgY2xvY2spLCB3aXRoIGFuYWxvZyBwaGFzZSBsb2NrZWQKK2xvb3AgbG9naWMgZm9yIG11bHRpcGx5aW5nIHRoZSBpbnB1dCBjbG9jayB0byBhIGRlc2lyZWQgb3V0cHV0CitjbG9jay4gVGhpcyBjbG9jayBhbHNvIHR5cGljYWxseSBzdXBwb3J0cyBkaWZmZXJlbnQgb3BlcmF0aW9uCittb2RlcyAobG9ja2VkLCBsb3cgcG93ZXIgc3RvcCBldGMuKSBBUExMIG1vc3RseSBiZWhhdmVzIGxpa2UKK2Egc3VidHlwZSBvZiBhIERQTEwgWzJdLCBhbHRob3VnaCBhIHNpbXBsaWZpZWQgb25lIGF0IHRoYXQuCisKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CitbMl0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3RpL2RwbGwudHh0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaGFsbCBiZSAidGksZHJhNy1hcGxsLWNsb2NrIiBvciAidGksb21hcDItYXBsbC1jbG9jayIKKy0gI2Nsb2NrLWNlbGxzIDogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzsgc2hhbGwgYmUgc2V0IHRvIDAuCistIGNsb2NrcyA6IGxpbmsgcGhhbmRsZXMgb2YgcGFyZW50IGNsb2NrcyAoY2xrLXJlZiBhbmQgY2xrLWJ5cGFzcykKKy0gcmVnIDogYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIGNvbnRyb2xsaW5nIHRoZSBBUExMLgorICBJdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gb2YgcmVnaXN0ZXJzIGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6CisJImNvbnRyb2wiIC0gY29udGFpbnMgdGhlIGNvbnRyb2wgcmVnaXN0ZXIgb2Zmc2V0CisJImlkbGVzdCIgLSBjb250YWlucyB0aGUgaWRsZXN0IHJlZ2lzdGVyIG9mZnNldAorCSJhdXRvaWRsZSIgLSBjb250YWlucyB0aGUgYXV0b2lkbGUgcmVnaXN0ZXIgb2Zmc2V0IChPTUFQMiBvbmx5KQorLSB0aSxjbG9jay1mcmVxdWVuY3kgOiBzdGF0aWMgY2xvY2sgZnJlcXVlbmN5IGZvciB0aGUgY2xvY2sgKE9NQVAyIG9ubHkpCistIHRpLGlkbGVzdC1zaGlmdCA6IGJpdC1zaGlmdCBmb3IgdGhlIGlkbGVzdCBmaWVsZCAoT01BUDIgb25seSkKKy0gdGksYml0LXNoaWZ0IDogYml0LXNoaWZ0IGZvciBlbmFibGUgYW5kIGF1dG9pZGxlIGZpZWxkcyAoT01BUDIgb25seSkKKworRXhhbXBsZXM6CisJYXBsbF9wY2llX2NrOiBhcGxsX3BjaWVfY2sgeworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCWNsb2NrcyA9IDwmYXBsbF9wY2llX2luX2Nsa19tdXg+LCA8JmRwbGxfcGNpZV9yZWZfY2s+OworCQlyZWcgPSA8MHgwMjFjPiwgPDB4MDIyMD47CisJCWNvbXBhdGlibGUgPSAidGksZHJhNy1hcGxsLWNsb2NrIjsKKwl9OworCisJYXBsbDk2X2NrOiBhcGxsOTZfY2sgeworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCWNvbXBhdGlibGUgPSAidGksb21hcDItYXBsbC1jbG9jayI7CisJCWNsb2NrcyA9IDwmc3lzX2NrPjsKKwkJdGksYml0LXNoaWZ0ID0gPDI+OworCQl0aSxpZGxlc3Qtc2hpZnQgPSA8OD47CisJCXRpLGNsb2NrLWZyZXF1ZW5jeSA9IDw5NjAwMDAwMD47CisJCXJlZyA9IDwweDA1MDA+LCA8MHgwNTMwPiwgPDB4MDUyMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay90aS9hdXRvaWRsZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGkvYXV0b2lkbGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjNzM1ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGkvYXV0b2lkbGUudHh0CkBAIC0wLDAgKzEsMzkgQEAKK0JpbmRpbmcgZm9yIFRleGFzIEluc3RydW1lbnRzIGF1dG9pZGxlIGNsb2NrLgorCitCaW5kaW5nIHN0YXR1czogVW5zdGFibGUgLSBBQkkgY29tcGF0aWJpbGl0eSBtYXkgYmUgYnJva2VuIGluIHRoZSBmdXR1cmUKKworVGhpcyBiaW5kaW5nIHVzZXMgdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nWzFdLiBJdCBhc3N1bWVzIGEgcmVnaXN0ZXIgbWFwcGVkCitjbG9jayB3aGljaCBjYW4gYmUgcHV0IHRvIGlkbGUgYXV0b21hdGljYWxseSBieSBoYXJkd2FyZSBiYXNlZCBvbiB0aGUgdXNhZ2UKK2FuZCBhIGNvbmZpZ3VyYXRpb24gYml0IHNldHRpbmcuIEF1dG9pZGxlIGNsb2NrIGlzIG5ldmVyIGFuIGluZGl2aWR1YWwKK2Nsb2NrLCBpdCBpcyBhbHdheXMgYSBkZXJpdmF0aXZlIG9mIHNvbWUgYmFzaWMgY2xvY2sgbGlrZSBhIGdhdGUsIGRpdmlkZXIsCitvciBmaXhlZC1mYWN0b3IuCisKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIHJlZyA6IG9mZnNldCBmb3IgdGhlIHJlZ2lzdGVyIGNvbnRyb2xsaW5nIHRoZSBhdXRvaWRsZQorLSB0aSxhdXRvaWRsZS1zaGlmdCA6IGJpdCBzaGlmdCBvZiB0aGUgYXV0b2lkbGUgZW5hYmxlIGJpdAorLSB0aSxpbnZlcnQtYXV0b2lkbGUtYml0IDogYXV0b2lkbGUgaXMgZW5hYmxlZCBieSBzZXR0aW5nIHRoZSBiaXQgdG8gMAorCitFeGFtcGxlczoKKwlkcGxsX2NvcmVfbTRfY2s6IGRwbGxfY29yZV9tNF9jayB7CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJ0aSxkaXZpZGVyLWNsb2NrIjsKKwkJY2xvY2tzID0gPCZkcGxsX2NvcmVfeDJfY2s+OworCQl0aSxtYXgtZGl2ID0gPDMxPjsKKwkJdGksYXV0b2lkbGUtc2hpZnQgPSA8OD47CisJCXJlZyA9IDwweDJkMzg+OworCQl0aSxpbmRleC1zdGFydHMtYXQtb25lOworCQl0aSxpbnZlcnQtYXV0b2lkbGUtYml0OworCX07CisKKwlkcGxsX3VzYl9jbGtkY29sZG9fY2s6IGRwbGxfdXNiX2Nsa2Rjb2xkb19jayB7CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJ0aSxmaXhlZC1mYWN0b3ItY2xvY2siOworCQljbG9ja3MgPSA8JmRwbGxfdXNiX2NrPjsKKwkJdGksY2xvY2stZGl2ID0gPDE+OworCQl0aSxhdXRvaWRsZS1zaGlmdCA9IDw4PjsKKwkJcmVnID0gPDB4MDFiND47CisJCXRpLGNsb2NrLW11bHQgPSA8MT47CisJCXRpLGludmVydC1hdXRvaWRsZS1iaXQ7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay90aS9jbG9ja2RvbWFpbi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGkvY2xvY2tkb21haW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiNzZiM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGkvY2xvY2tkb21haW4udHh0CkBAIC0wLDAgKzEsMjQgQEAKK0JpbmRpbmcgZm9yIFRleGFzIEluc3RydW1lbnRzIGNsb2NrZG9tYWluLgorCitCaW5kaW5nIHN0YXR1czogVW5zdGFibGUgLSBBQkkgY29tcGF0aWJpbGl0eSBtYXkgYmUgYnJva2VuIGluIHRoZSBmdXR1cmUKKworVGhpcyBiaW5kaW5nIHVzZXMgdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nWzFdIGluIGNvbnN1bWVyIHJvbGUuCitFdmVyeSBjbG9jayBvbiBUSSBTb0MgYmVsb25ncyB0byBvbmUgY2xvY2tkb21haW4sIGJ1dCBzb2Z0d2FyZQorb25seSBuZWVkcyB0aGlzIGluZm9ybWF0aW9uIGZvciBzcGVjaWZpYyBjbG9ja3Mgd2hpY2ggcmVxdWlyZQordGhlaXIgcGFyZW50IGNsb2NrZG9tYWluIHRvIGJlIGNvbnRyb2xsZWQgd2hlbiB0aGUgY2xvY2sgaXMKK2VuYWJsZWQvZGlzYWJsZWQuIFRoaXMgYmluZGluZyBkb2Vzbid0IGRlZmluZSBhIG5ldyBjbG9jaworYmluZGluZyB0eXBlLCBpdCBpcyB1c2VkIHRvIGdyb3VwIGV4aXN0aW5nIGNsb2NrIG5vZGVzIHVuZGVyCitoYXJkd2FyZSBoaWVyYXJjaHkuCisKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaGFsbCBiZSAidGksY2xvY2tkb21haW4iCistICNjbG9jay1jZWxscyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IHNoYWxsIGJlIHNldCB0byAwLgorLSBjbG9ja3MgOiBsaW5rIHBoYW5kbGVzIG9mIGNsb2NrcyB3aXRoaW4gdGhpcyBkb21haW4KKworRXhhbXBsZXM6CisJZHNzX2Nsa2RtOiBkc3NfY2xrZG0geworCQljb21wYXRpYmxlID0gInRpLGNsb2NrZG9tYWluIjsKKwkJY2xvY2tzID0gPCZkc3MxX2Fsd29uX2Zja18zNDMwZXMyPiwgPCZkc3NfaWNrXzM0MzBlczI+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGkvY29tcG9zaXRlLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay90aS9jb21wb3NpdGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNDNjNDcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGkvY29tcG9zaXRlLnR4dApAQCAtMCwwICsxLDU0IEBACitCaW5kaW5nIGZvciBUSSBjb21wb3NpdGUgY2xvY2suCisKK0JpbmRpbmcgc3RhdHVzOiBVbnN0YWJsZSAtIEFCSSBjb21wYXRpYmlsaXR5IG1heSBiZSBicm9rZW4gaW4gdGhlIGZ1dHVyZQorCitUaGlzIGJpbmRpbmcgdXNlcyB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmdbMV0uIEl0IGFzc3VtZXMgYQorcmVnaXN0ZXItbWFwcGVkIGNvbXBvc2l0ZSBjbG9jayB3aXRoIG11bHRpcGxlIGRpZmZlcmVudCBzdWItdHlwZXM7CisKK2EgbXVsdGlwbGV4ZXIgY2xvY2sgd2l0aCBtdWx0aXBsZSBpbnB1dCBjbG9jayBzaWduYWxzIG9yIHBhcmVudHMsIG9uZQorb2Ygd2hpY2ggY2FuIGJlIHNlbGVjdGVkIGFzIG91dHB1dCwgdGhpcyBiZWhhdmVzIGV4YWN0bHkgYXMgWzJdCisKK2FuIGFkanVzdGFibGUgY2xvY2sgcmF0ZSBkaXZpZGVyLCB0aGlzIGJlaGF2ZXMgZXhhY3RseSBhcyBbM10KKworYSBnYXRpbmcgZnVuY3Rpb24gd2hpY2ggY2FuIGJlIHVzZWQgdG8gZW5hYmxlIGFuZCBkaXNhYmxlIHRoZSBvdXRwdXQKK2Nsb2NrLCB0aGlzIGJlaGF2ZXMgZXhhY3RseSBhcyBbNF0KKworVGhlIGJpbmRpbmcgbXVzdCBwcm92aWRlIGEgbGlzdCBvZiB0aGUgY29tcG9uZW50IGNsb2NrcyB0aGF0IHNoYWxsIGJlCittZXJnZWQgdG8gdGhpcyBjbG9jay4gVGhlIGNvbXBvbmVudCBjbG9ja3Mgc2hhbGwgYmUgb2Ygb25lIG9mIHRoZQorInRpLCpjb21wb3NpdGUqLWNsb2NrIiB0eXBlcy4KKworWzFdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKK1syXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGkvbXV4LnR4dAorWzNdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay90aS9kaXZpZGVyLnR4dAorWzRdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay90aS9nYXRlLnR4dAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hhbGwgYmU6ICJ0aSxjb21wb3NpdGUtY2xvY2siCistIGNsb2NrcyA6IGxpbmsgcGhhbmRsZXMgb2YgY29tcG9uZW50IGNsb2NrcworLSAjY2xvY2stY2VsbHMgOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBzaGFsbCBiZSBzZXQgdG8gMC4KKworRXhhbXBsZXM6CisKK3VzYl9sNF9nYXRlX2ljazogdXNiX2w0X2dhdGVfaWNrIHsKKwkjY2xvY2stY2VsbHMgPSA8MD47CisJY29tcGF0aWJsZSA9ICJ0aSxjb21wb3NpdGUtaW50ZXJmYWNlLWNsb2NrIjsKKwljbG9ja3MgPSA8Jmw0X2ljaz47CisJdGksYml0LXNoaWZ0ID0gPDU+OworCXJlZyA9IDwweDBhMTA+OworfTsKKwordXNiX2w0X2Rpdl9pY2s6IHVzYl9sNF9kaXZfaWNrIHsKKwkjY2xvY2stY2VsbHMgPSA8MD47CisJY29tcGF0aWJsZSA9ICJ0aSxjb21wb3NpdGUtZGl2aWRlci1jbG9jayI7CisJY2xvY2tzID0gPCZsNF9pY2s+OworCXRpLGJpdC1zaGlmdCA9IDw0PjsKKwl0aSxtYXgtZGl2ID0gPDE+OworCXJlZyA9IDwweDBhNDA+OworCXRpLGluZGV4LXN0YXJ0cy1hdC1vbmU7Cit9OworCit1c2JfbDRfaWNrOiB1c2JfbDRfaWNrIHsKKwkjY2xvY2stY2VsbHMgPSA8MD47CisJY29tcGF0aWJsZSA9ICJ0aSxjb21wb3NpdGUtY2xvY2siOworCWNsb2NrcyA9IDwmdXNiX2w0X2dhdGVfaWNrPiwgPCZ1c2JfbDRfZGl2X2ljaz47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3RpL2RpdmlkZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3RpL2RpdmlkZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1YTZmNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGkvZGl2aWRlci50eHQKQEAgLTAsMCArMSwxMTQgQEAKK0JpbmRpbmcgZm9yIFRJIGRpdmlkZXIgY2xvY2sKKworQmluZGluZyBzdGF0dXM6IFVuc3RhYmxlIC0gQUJJIGNvbXBhdGliaWxpdHkgbWF5IGJlIGJyb2tlbiBpbiB0aGUgZnV0dXJlCisKK1RoaXMgYmluZGluZyB1c2VzIHRoZSBjb21tb24gY2xvY2sgYmluZGluZ1sxXS4gIEl0IGFzc3VtZXMgYQorcmVnaXN0ZXItbWFwcGVkIGFkanVzdGFibGUgY2xvY2sgcmF0ZSBkaXZpZGVyIHRoYXQgZG9lcyBub3QgZ2F0ZSBhbmQgaGFzCitvbmx5IG9uZSBpbnB1dCBjbG9jayBvciBwYXJlbnQuICBCeSBkZWZhdWx0IHRoZSB2YWx1ZSBwcm9ncmFtbWVkIGludG8KK3RoZSByZWdpc3RlciBpcyBvbmUgbGVzcyB0aGFuIHRoZSBhY3R1YWwgZGl2aXNvciB2YWx1ZS4gIEUuZzoKKworcmVnaXN0ZXIgdmFsdWUJCWFjdHVhbCBkaXZpc29yIHZhbHVlCiswCQkJMQorMQkJCTIKKzIJCQkzCisKK1RoaXMgYXNzdW1wdGlvbiBtYXkgYmUgbW9kaWZpZWQgYnkgdGhlIGZvbGxvd2luZyBvcHRpb25hbCBwcm9wZXJ0aWVzOgorCit0aSxpbmRleC1zdGFydHMtYXQtb25lIC0gdmFsaWQgZGl2aXNvciB2YWx1ZXMgc3RhcnQgYXQgMSwgbm90IHRoZSBkZWZhdWx0CitvZiAwLiAgRS5nOgorcmVnaXN0ZXIgdmFsdWUJCWFjdHVhbCBkaXZpc29yIHZhbHVlCisxCQkJMQorMgkJCTIKKzMJCQkzCisKK3RpLGluZGV4LXBvd2VyLW9mLXR3byAtIHZhbGlkIGRpdmlzb3IgdmFsdWVzIGFyZSBwb3dlcnMgb2YgdHdvLiAgRS5nOgorcmVnaXN0ZXIgdmFsdWUJCWFjdHVhbCBkaXZpc29yIHZhbHVlCiswCQkJMQorMQkJCTIKKzIJCQk0CisKK0FkZGl0aW9uYWxseSBhbiBhcnJheSBvZiB2YWxpZCBkaXZpZGVycyBtYXkgYmUgc3VwcGxpZWQgbGlrZSBzbzoKKworCXRpLGRpdmlkZXJzID0gPDQ+LCA8OD4sIDwwPiwgPDE2PjsKKworV2hpY2ggd2lsbCBtYXAgdGhlIHJlc3VsdGluZyB2YWx1ZXMgdG8gYSBkaXZpc29yIHRhYmxlIGJ5IHRoZWlyIGluZGV4OgorcmVnaXN0ZXIgdmFsdWUJCWFjdHVhbCBkaXZpc29yIHZhbHVlCiswCQkJNAorMQkJCTgKKzIJCQk8aW52YWxpZCBkaXZpc29yLCBza2lwcGVkPgorMwkJCTE2CisKK0FueSB6ZXJvIHZhbHVlIGluIHRoaXMgYXJyYXkgbWVhbnMgdGhlIGNvcnJlc3BvbmRpbmcgYml0LXZhbHVlIGlzIGludmFsaWQKK2FuZCBtdXN0IG5vdCBiZSB1c2VkLgorCitUaGUgYmluZGluZyBtdXN0IGFsc28gcHJvdmlkZSB0aGUgcmVnaXN0ZXIgdG8gY29udHJvbCB0aGUgZGl2aWRlciBhbmQKK3VubGVzcyB0aGUgZGl2aWRlciBhcnJheSBpcyBwcm92aWRlZCwgbWluIGFuZCBtYXggZGl2aWRlcnMuIE9wdGlvbmFsbHkKK3RoZSBudW1iZXIgb2YgYml0cyB0byBzaGlmdCB0aGF0IG1hc2ssIGlmIG5lY2Vzc2FyeS4gSWYgdGhlIHNoaWZ0IHZhbHVlCitpcyBtaXNzaW5nIGl0IGlzIHRoZSBzYW1lIGFzIHN1cHBseWluZyBhIHplcm8gc2hpZnQuCisKK1RoaXMgYmluZGluZyBjYW4gYWxzbyBvcHRpb25hbGx5IHByb3ZpZGUgc3VwcG9ydCB0byB0aGUgaGFyZHdhcmUgYXV0b2lkbGUKK2ZlYXR1cmUsIHNlZSBbMl0uCisKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CitbMl0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3RpL2F1dG9pZGxlLnR4dAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hhbGwgYmUgInRpLGRpdmlkZXItY2xvY2siIG9yICJ0aSxjb21wb3NpdGUtZGl2aWRlci1jbG9jayIuCistICNjbG9jay1jZWxscyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IHNoYWxsIGJlIHNldCB0byAwLgorLSBjbG9ja3MgOiBsaW5rIHRvIHBoYW5kbGUgb2YgcGFyZW50IGNsb2NrCistIHJlZyA6IG9mZnNldCBmb3IgcmVnaXN0ZXIgY29udHJvbGxpbmcgYWRqdXN0YWJsZSBkaXZpZGVyCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrLW91dHB1dC1uYW1lcyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmcuCistIHRpLGRpdmlkZXJzIDogYXJyYXkgb2YgaW50ZWdlcnMgZGVmaW5pbmcgZGl2aXNvcnMKKy0gdGksYml0LXNoaWZ0IDogbnVtYmVyIG9mIGJpdHMgdG8gc2hpZnQgdGhlIGRpdmlkZXIgdmFsdWUsIGRlZmF1bHRzIHRvIDAKKy0gdGksbWluLWRpdiA6IG1pbiBkaXZpc29yIGZvciBkaXZpZGluZyB0aGUgaW5wdXQgY2xvY2sgcmF0ZSwgb25seQorICBuZWVkZWQgaWYgdGhlIGZpcnN0IGRpdmlzb3IgaXMgb2Zmc2V0IGZyb20gdGhlIGRlZmF1bHQgdmFsdWUgKDEpCistIHRpLG1heC1kaXYgOiBtYXggZGl2aXNvciBmb3IgZGl2aWRpbmcgdGhlIGlucHV0IGNsb2NrIHJhdGUsIG9ubHkgbmVlZGVkCisgIGlmIHRpLGRpdmlkZXJzIGlzIG5vdCBkZWZpbmVkLgorLSB0aSxpbmRleC1zdGFydHMtYXQtb25lIDogdmFsaWQgZGl2aXNvciBwcm9ncmFtbWluZyBzdGFydHMgYXQgMSwgbm90IHplcm8sCisgIG9ubHkgdmFsaWQgaWYgdGksZGl2aWRlcnMgaXMgbm90IGRlZmluZWQuCistIHRpLGluZGV4LXBvd2VyLW9mLXR3byA6IHZhbGlkIGRpdmlzb3IgcHJvZ3JhbW1pbmcgbXVzdCBiZSBhIHBvd2VyIG9mIHR3bywKKyAgb25seSB2YWxpZCBpZiB0aSxkaXZpZGVycyBpcyBub3QgZGVmaW5lZC4KKy0gdGksYXV0b2lkbGUtc2hpZnQgOiBiaXQgc2hpZnQgb2YgdGhlIGF1dG9pZGxlIGVuYWJsZSBiaXQgZm9yIHRoZSBjbG9jaywKKyAgc2VlIFsyXQorLSB0aSxpbnZlcnQtYXV0b2lkbGUtYml0IDogYXV0b2lkbGUgaXMgZW5hYmxlZCBieSBzZXR0aW5nIHRoZSBiaXQgdG8gMCwKKyAgc2VlIFsyXQorLSB0aSxzZXQtcmF0ZS1wYXJlbnQgOiBjbGtfc2V0X3JhdGUgaXMgcHJvcGFnYXRlZCB0byBwYXJlbnQKKworRXhhbXBsZXM6CitkcGxsX3VzYl9tMl9jazogZHBsbF91c2JfbTJfY2tANGEwMDgxOTAgeworCSNjbG9jay1jZWxscyA9IDwwPjsKKwljb21wYXRpYmxlID0gInRpLGRpdmlkZXItY2xvY2siOworCWNsb2NrcyA9IDwmZHBsbF91c2JfY2s+OworCXRpLG1heC1kaXYgPSA8MTI3PjsKKwlyZWcgPSA8MHgxOTA+OworCXRpLGluZGV4LXN0YXJ0cy1hdC1vbmU7Cit9OworCithZXNzX2ZjbGs6IGFlc3NfZmNsa0A0YTAwNDUyOCB7CisJI2Nsb2NrLWNlbGxzID0gPDA+OworCWNvbXBhdGlibGUgPSAidGksZGl2aWRlci1jbG9jayI7CisJY2xvY2tzID0gPCZhYmVfY2xrPjsKKwl0aSxiaXQtc2hpZnQgPSA8MjQ+OworCXJlZyA9IDwweDUyOD47CisJdGksbWF4LWRpdiA9IDwyPjsKK307CisKK2RwbGxfY29yZV9tM3gyX2Rpdl9jazogZHBsbF9jb3JlX20zeDJfZGl2X2NrIHsKKwkjY2xvY2stY2VsbHMgPSA8MD47CisJY29tcGF0aWJsZSA9ICJ0aSxjb21wb3NpdGUtZGl2aWRlci1jbG9jayI7CisJY2xvY2tzID0gPCZkcGxsX2NvcmVfeDJfY2s+OworCXRpLG1heC1kaXYgPSA8MzE+OworCXJlZyA9IDwweDAxMzQ+OworCXRpLGluZGV4LXN0YXJ0cy1hdC1vbmU7Cit9OworCitzc2lfc3NyX2Rpdl9mY2tfMzQzMGVzMjogc3NpX3Nzcl9kaXZfZmNrXzM0MzBlczIgeworCSNjbG9jay1jZWxscyA9IDwwPjsKKwljb21wYXRpYmxlID0gInRpLGNvbXBvc2l0ZS1kaXZpZGVyLWNsb2NrIjsKKwljbG9ja3MgPSA8JmNvcmV4Ml9mY2s+OworCXRpLGJpdC1zaGlmdCA9IDw4PjsKKwlyZWcgPSA8MHgwYTQwPjsKKwl0aSxkaXZpZGVycyA9IDwwPiwgPDE+LCA8Mj4sIDwzPiwgPDQ+LCA8MD4sIDw2PiwgPDA+LCA8OD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3RpL2RwbGwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3RpL2RwbGwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNTcwMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGkvZHBsbC50eHQKQEAgLTAsMCArMSw4NSBAQAorQmluZGluZyBmb3IgVGV4YXMgSW5zdHJ1bWVudHMgRFBMTCBjbG9jay4KKworQmluZGluZyBzdGF0dXM6IFVuc3RhYmxlIC0gQUJJIGNvbXBhdGliaWxpdHkgbWF5IGJlIGJyb2tlbiBpbiB0aGUgZnV0dXJlCisKK1RoaXMgYmluZGluZyB1c2VzIHRoZSBjb21tb24gY2xvY2sgYmluZGluZ1sxXS4gIEl0IGFzc3VtZXMgYQorcmVnaXN0ZXItbWFwcGVkIERQTEwgd2l0aCB1c3VhbGx5IHR3byBzZWxlY3RhYmxlIGlucHV0IGNsb2NrcworKHJlZmVyZW5jZSBjbG9jayBhbmQgYnlwYXNzIGNsb2NrKSwgd2l0aCBkaWdpdGFsIHBoYXNlIGxvY2tlZAorbG9vcCBsb2dpYyBmb3IgbXVsdGlwbHlpbmcgdGhlIGlucHV0IGNsb2NrIHRvIGEgZGVzaXJlZCBvdXRwdXQKK2Nsb2NrLiBUaGlzIGNsb2NrIGFsc28gdHlwaWNhbGx5IHN1cHBvcnRzIGRpZmZlcmVudCBvcGVyYXRpb24KK21vZGVzIChsb2NrZWQsIGxvdyBwb3dlciBzdG9wIGV0Yy4pIFRoaXMgYmluZGluZyBoYXMgc2V2ZXJhbAorc3ViLXR5cGVzLCB3aGljaCBlZmZlY3RpdmVseSByZXN1bHQgaW4gc2xpZ2h0bHkgZGlmZmVyZW50IHNldHVwCitmb3IgdGhlIGFjdHVhbCBEUExMIGNsb2NrLgorCitbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hhbGwgYmUgb25lIG9mOgorCQkidGksb21hcDMtZHBsbC1jbG9jayIsCisJCSJ0aSxvbWFwMy1kcGxsLWNvcmUtY2xvY2siLAorCQkidGksb21hcDMtZHBsbC1wZXItY2xvY2siLAorCQkidGksb21hcDMtZHBsbC1wZXItai10eXBlLWNsb2NrIiwKKwkJInRpLG9tYXA0LWRwbGwtY2xvY2siLAorCQkidGksb21hcDQtZHBsbC14Mi1jbG9jayIsCisJCSJ0aSxvbWFwNC1kcGxsLWNvcmUtY2xvY2siLAorCQkidGksb21hcDQtZHBsbC1tNHhlbi1jbG9jayIsCisJCSJ0aSxvbWFwNC1kcGxsLWotdHlwZS1jbG9jayIsCisJCSJ0aSxvbWFwNS1tcHUtZHBsbC1jbG9jayIsCisJCSJ0aSxhbTMtZHBsbC1uby1nYXRlLWNsb2NrIiwKKwkJInRpLGFtMy1kcGxsLWotdHlwZS1jbG9jayIsCisJCSJ0aSxhbTMtZHBsbC1uby1nYXRlLWotdHlwZS1jbG9jayIsCisJCSJ0aSxhbTMtZHBsbC1jbG9jayIsCisJCSJ0aSxhbTMtZHBsbC1jb3JlLWNsb2NrIiwKKwkJInRpLGFtMy1kcGxsLXgyLWNsb2NrIiwKKwkJInRpLG9tYXAyLWRwbGwtY29yZS1jbG9jayIsCisKKy0gI2Nsb2NrLWNlbGxzIDogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzsgc2hhbGwgYmUgc2V0IHRvIDAuCistIGNsb2NrcyA6IGxpbmsgcGhhbmRsZXMgb2YgcGFyZW50IGNsb2NrcywgZmlyc3QgZW50cnkgbGlzdHMgcmVmZXJlbmNlIGNsb2NrCisgIGFuZCBzZWNvbmQgZW50cnkgYnlwYXNzIGNsb2NrCistIHJlZyA6IG9mZnNldHMgZm9yIHRoZSByZWdpc3RlciBzZXQgZm9yIGNvbnRyb2xsaW5nIHRoZSBEUExMLgorICBSZWdpc3RlcnMgYXJlIGxpc3RlZCBpbiBmb2xsb3dpbmcgb3JkZXI6CisJImNvbnRyb2wiIC0gY29udGFpbnMgdGhlIGNvbnRyb2wgcmVnaXN0ZXIgYmFzZSBhZGRyZXNzCisJImlkbGVzdCIgLSBjb250YWlucyB0aGUgaWRsZSBzdGF0dXMgcmVnaXN0ZXIgYmFzZSBhZGRyZXNzCisJIm11bHQtZGl2MSIgLSBjb250YWlucyB0aGUgbXVsdGlwbGllciAvIGRpdmlkZXIgcmVnaXN0ZXIgYmFzZSBhZGRyZXNzCisJImF1dG9pZGxlIiAtIGNvbnRhaW5zIHRoZSBhdXRvaWRsZSByZWdpc3RlciBiYXNlIGFkZHJlc3MgKG9wdGlvbmFsKQorICB0aSxhbTMtKiBkcGxsIHR5cGVzIGRvIG5vdCBoYXZlIGF1dG9pZGxlIHJlZ2lzdGVyCisgIHRpLG9tYXAyLSogZHBsbCB0eXBlIGRvZXMgbm90IHN1cHBvcnQgaWRsZXN0IC8gYXV0b2lkbGUgcmVnaXN0ZXJzCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIERQTEwgbW9kZSBzZXR0aW5nIC0gZGVmaW5pbmcgYW55IG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcgb3ZlcnJpZGVzCisgIGRlZmF1bHQgc2V0dGluZy4KKwktIHRpLGxvdy1wb3dlci1zdG9wIDogRFBMTCBzdXBwb3J0cyBsb3cgcG93ZXIgc3RvcCBtb2RlLCBnYXRpbmcgb3V0cHV0CisJLSB0aSxsb3ctcG93ZXItYnlwYXNzIDogRFBMTCBvdXRwdXQgbWF0Y2hlcyByYXRlIG9mIHBhcmVudCBieXBhc3MgY2xvY2sKKwktIHRpLGxvY2sgOiBEUExMIGxvY2tzIGluIHByb2dyYW1tZWQgcmF0ZQorCitFeGFtcGxlczoKKwlkcGxsX2NvcmVfY2s6IGRwbGxfY29yZV9ja0A0NGUwMDQ5MCB7CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJ0aSxvbWFwNC1kcGxsLWNvcmUtY2xvY2siOworCQljbG9ja3MgPSA8JnN5c19jbGtpbl9jaz4sIDwmc3lzX2Nsa2luX2NrPjsKKwkJcmVnID0gPDB4NDkwPiwgPDB4NDVjPiwgPDB4NDg4PiwgPDB4NDY4PjsKKwl9OworCisJZHBsbDJfY2s6IGRwbGwyX2NrQDQ4MDA0MDA0IHsKKwkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQljb21wYXRpYmxlID0gInRpLG9tYXAzLWRwbGwtY2xvY2siOworCQljbG9ja3MgPSA8JnN5c19jaz4sIDwmZHBsbDJfZmNrPjsKKwkJdGksbG93LXBvd2VyLXN0b3A7CisJCXRpLGxvdy1wb3dlci1ieXBhc3M7CisJCXRpLGxvY2s7CisJCXJlZyA9IDwweDQ+LCA8MHgyND4sIDwweDM0PiwgPDB4NDA+OworCX07CisKKwlkcGxsX2NvcmVfY2s6IGRwbGxfY29yZV9ja0A0NGUwMDQ5MCB7CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJ0aSxhbTMtZHBsbC1jb3JlLWNsb2NrIjsKKwkJY2xvY2tzID0gPCZzeXNfY2xraW5fY2s+LCA8JnN5c19jbGtpbl9jaz47CisJCXJlZyA9IDwweDkwPiwgPDB4NWM+LCA8MHg2OD47CisJfTsKKworCWRwbGxfY2s6IGRwbGxfY2sgeworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCWNvbXBhdGlibGUgPSAidGksb21hcDItZHBsbC1jb3JlLWNsb2NrIjsKKwkJY2xvY2tzID0gPCZzeXNfY2s+LCA8JnN5c19jaz47CisJCXJlZyA9IDwweDA1MDA+LCA8MHgwNTQwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3RpL2RyYTctYXRsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay90aS9kcmE3LWF0bC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg1ZThjMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay90aS9kcmE3LWF0bC50eHQKQEAgLTAsMCArMSw5NiBAQAorRGV2aWNlIFRyZWUgQ2xvY2sgYmluZGluZ3MgZm9yIEFUTCAoQXVkaW8gVHJhY2tpbmcgTG9naWMpIG9mIERSQTcgU29DLgorCitUaGUgQVRMIElQIGlzIHVzZWQgdG8gZ2VuZXJhdGUgY2xvY2sgdG8gYmUgdXNlZCB0byBzeW5jaHJvbml6ZSBiYXNlYmFuZCBhbmQKK2F1ZGlvIGNvZGVjLiBBIHNpbmdsZSBBVEwgSVAgcHJvdmlkZXMgZm91ciBBVEwgY2xvY2sgaW5zdGFuY2VzIHNoYXJpbmcgdGhlIHNhbWUKK2Z1bmN0aW9uYWwgY2xvY2sgYnV0IGNhbiBiZSBjb25maWd1cmVkIHRvIHByb3ZpZGUgZGlmZmVyZW50IGNsb2Nrcy4KK0FUTCBjYW4gbWFpbnRhaW4gYSBjbG9jayBhdmVyYWdlcyB0byBzb21lIGRlc2lyZWQgZnJlcXVlbmN5IGJhc2VkIG9uIHRoZSBid3MvYXdzCitzaWduYWxzIC0gY2FuIGNvbXBlbnNhdGUgdGhlIGRyaWZ0IGJldHdlZW4gdGhlIHR3byB3cyBzaWduYWwuCisKK0luIG9yZGVyIHRvIHByb3ZpZGUgdGhlIHN1cHBvcnQgZm9yIEFUTCBhbmQgaXQncyBvdXRwdXQgY2xvY2tzICh3aGljaCBjYW4gYmUgdXNlZAoraW50ZXJuYWxseSB3aXRoaW4gdGhlIFNvQyBvciBleHRlcm5hbCBjb21wb25lbnRzKSB0d28gc2V0cyBvZiBiaW5kaW5ncyBpcyBuZWVkZWQ6CisKK0Nsb2NrIHRyZWUgYmluZGluZzoKK1RoaXMgYmluZGluZyB1c2VzIHRoZSBjb21tb24gY2xvY2sgYmluZGluZ1sxXS4KK1RvIGJlIGFibGUgdG8gaW50ZWdyYXRlIHRoZSBBVEwgY2xvY2tzIHdpdGggRFQgY2xvY2sgdHJlZS4KK1Byb3ZpZGVzIGNjZiBsZXZlbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgQVRMIGNsb2NrcyB0byBiZSB1c2VkIGJ5IGRyaXZlcnMuCitTaW5jZSB0aGUgY2xvY2sgaW5zdGFuY2VzIGFyZSBwYXJ0IG9mIGEgc2luZ2xlIElQIHRoaXMgYmluZGluZyBpcyB1c2VkIGFzIGEgbm9kZQorZm9yIHRoZSBEVCBjbG9jayB0cmVlLCB0aGUgSVAgZHJpdmVyIGlzIG5lZWRlZCB0byBoYW5kbGUgdGhlIGFjdHVhbCBjb25maWd1cmF0aW9uCitvZiB0aGUgSVAuCisKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaGFsbCBiZSAidGksZHJhNy1hdGwtY2xvY2siCistICNjbG9jay1jZWxscyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IHNoYWxsIGJlIHNldCB0byAwLgorLSBjbG9ja3MgOiBsaW5rIHBoYW5kbGVzIHRvIGZ1bmN0aW9uYWwgY2xvY2sgb2YgQVRMCisKK0JpbmRpbmcgZm9yIHRoZSBJUCBkcml2ZXI6CitUaGlzIGJpbmRpbmcgaXMgdXNlZCB0byBjb25maWd1cmUgdGhlIElQIGRyaXZlciB3aGljaCBpcyBnb2luZyB0byBoYW5kbGUgdGhlCitjb25maWd1cmF0aW9uIG9mIHRoZSBJUCBmb3IgdGhlIEFUTCBjbG9jayBpbnN0YW5jZXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaGFsbCBiZSAidGksZHJhNy1hdGwiCistIHJlZyA6IGJhc2UgYWRkcmVzcyBmb3IgdGhlIEFUTCBJUAorLSB0aSxwcm92aWRlZC1jbG9ja3MgOiBMaXN0IG9mIHBoYW5kbGVzIHRvIHRoZSBjbG9ja3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBBVEwKKy0gY2xvY2tzIDogbGluayBwaGFuZGxlcyB0byBmdW5jdGlvbmFsIGNsb2NrIG9mIEFUTAorLSBjbG9jay1uYW1lcyA6IFNoYWxsIGJlIHNldCB0byAiZmNrIgorLSB0aSxod21vZHMgOiBTaGFsbCBiZSBzZXQgdG8gImF0bCIKKworT3B0aW9uYWwgcHJvcGVydGllczoKK0NvbmZpZ3VyYXRpb24gb2YgQVRMIGluc3RhbmNlczoKKy0gYXRsezAvMS8yLzN9IHsKKwktIGJ3cyA6IEJhc2ViYW5kIHdvcmQgc2VsZWN0IHNpZ25hbCBzZWxlY3Rpb24KKwktIGF3cyA6IEF1ZGlvIHdvcmQgc2VsZWN0IHNpZ25hbCBzZWxlY3Rpb24KK307CisKK0ZvciB2YWxpZCB3b3JkIHNlbGVjdCBzaWduYWxzLCBzZWUgdGhlIGR0LWJpbmRpbmdzL2Nsay90aS1kcmE3LWF0bC5oIGluY2x1ZGUKK2ZpbGUuCisKK0V4YW1wbGVzOgorLyogY2xvY2sgYmluZGluZ3MgZm9yIGF0bCBwcm92aWRlZCBjbG9ja3MgKi8KK2F0bF9jbGtpbjBfY2s6IGF0bF9jbGtpbjBfY2sgeworCSNjbG9jay1jZWxscyA9IDwwPjsKKwljb21wYXRpYmxlID0gInRpLGRyYTctYXRsLWNsb2NrIjsKKwljbG9ja3MgPSA8JmF0bF9nZmNsa19tdXg+OworfTsKKworYXRsX2Nsa2luMV9jazogYXRsX2Nsa2luMV9jayB7CisJI2Nsb2NrLWNlbGxzID0gPDA+OworCWNvbXBhdGlibGUgPSAidGksZHJhNy1hdGwtY2xvY2siOworCWNsb2NrcyA9IDwmYXRsX2dmY2xrX211eD47Cit9OworCithdGxfY2xraW4yX2NrOiBhdGxfY2xraW4yX2NrIHsKKwkjY2xvY2stY2VsbHMgPSA8MD47CisJY29tcGF0aWJsZSA9ICJ0aSxkcmE3LWF0bC1jbG9jayI7CisJY2xvY2tzID0gPCZhdGxfZ2ZjbGtfbXV4PjsKK307CisKK2F0bF9jbGtpbjNfY2s6IGF0bF9jbGtpbjNfY2sgeworCSNjbG9jay1jZWxscyA9IDwwPjsKKwljb21wYXRpYmxlID0gInRpLGRyYTctYXRsLWNsb2NrIjsKKwljbG9ja3MgPSA8JmF0bF9nZmNsa19tdXg+OworfTsKKworLyogYmluZGluZyBmb3IgdGhlIElQICovCithdGw6IGF0bEA0ODQzYzAwMCB7CisJY29tcGF0aWJsZSA9ICJ0aSxkcmE3LWF0bCI7CisJcmVnID0gPDB4NDg0M2MwMDAgMHgzZmY+OworCXRpLGh3bW9kcyA9ICJhdGwiOworCXRpLHByb3ZpZGVkLWNsb2NrcyA9IDwmYXRsX2Nsa2luMF9jaz4sIDwmYXRsX2Nsa2luMV9jaz4sCisJCQkJPCZhdGxfY2xraW4yX2NrPiwgPCZhdGxfY2xraW4zX2NrPjsKKwljbG9ja3MgPSA8JmF0bF9nZmNsa19tdXg+OworCWNsb2NrLW5hbWVzID0gImZjayI7CisJc3RhdHVzID0gImRpc2FibGVkIjsKK307CisKKyNpbmNsdWRlIDxkdC1iaW5kaW5ncy9jbGsvdGktZHJhNy1hdGwuaD4KKworJmF0bCB7CisJc3RhdHVzID0gIm9rYXkiOworCisJYXRsMiB7CisJCWJ3cyA9IDxEUkE3X0FUTF9XU19NQ0FTUDJfRlNYPjsKKwkJYXdzID0gPERSQTdfQVRMX1dTX01DQVNQM19GU1g+OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3RpL2ZhcGxsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay90aS9mYXBsbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE5YjNmMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay90aS9mYXBsbC50eHQKQEAgLTAsMCArMSwzMyBAQAorQmluZGluZyBmb3IgVGV4YXMgSW5zdHJ1bWVudHMgRkFQTEwgY2xvY2suCisKK0JpbmRpbmcgc3RhdHVzOiBVbnN0YWJsZSAtIEFCSSBjb21wYXRpYmlsaXR5IG1heSBiZSBicm9rZW4gaW4gdGhlIGZ1dHVyZQorCitUaGlzIGJpbmRpbmcgdXNlcyB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmdbMV0uIEl0IGFzc3VtZXMgYQorcmVnaXN0ZXItbWFwcGVkIEZBUExMIHdpdGggdXN1YWxseSB0d28gc2VsZWN0YWJsZSBpbnB1dCBjbG9ja3MKKyhyZWZlcmVuY2UgY2xvY2sgYW5kIGJ5cGFzcyBjbG9jayksIGFuZCBvbmUgb3IgbW9yZSBjaGlsZAorc3ludGVzaXplcnMuCisKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaGFsbCBiZSAidGksZG04MTYtZmFwbGwtY2xvY2siCistICNjbG9jay1jZWxscyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IHNoYWxsIGJlIHNldCB0byAwLgorLSBjbG9ja3MgOiBsaW5rIHBoYW5kbGVzIG9mIHBhcmVudCBjbG9ja3MgKGNsay1yZWYgYW5kIGNsay1ieXBhc3MpCistIHJlZyA6IGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciBjb250cm9sbGluZyB0aGUgRkFQTEwuCisKK0V4YW1wbGVzOgorCW1haW5fZmFwbGw6IG1haW5fZmFwbGwgeworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJCWNvbXBhdGlibGUgPSAidGksZG04MTYtZmFwbGwtY2xvY2siOworCQlyZWcgPSA8MHg0MDAgMHg0MD47CisJCWNsb2NrcyA9IDwmc3lzX2Nsa2luX2NrICZzeXNfY2xraW5fY2s+OworCQljbG9jay1pbmRpY2VzID0gPDE+LCA8Mj4sIDwzPiwgPDQ+LCA8NT4sCisJCQkJPDY+LCA8Nz47CisJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJtYWluX3BsbF9jbGsxIiwKKwkJCQkgICAgICJtYWluX3BsbF9jbGsyIiwKKwkJCQkgICAgICJtYWluX3BsbF9jbGszIiwKKwkJCQkgICAgICJtYWluX3BsbF9jbGs0IiwKKwkJCQkgICAgICJtYWluX3BsbF9jbGs1IiwKKwkJCQkgICAgICJtYWluX3BsbF9jbGs2IiwKKwkJCQkgICAgICJtYWluX3BsbF9jbGs3IjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3RpL2ZpeGVkLWZhY3Rvci1jbG9jay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGkvZml4ZWQtZmFjdG9yLWNsb2NrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjJiMzZkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3RpL2ZpeGVkLWZhY3Rvci1jbG9jay50eHQKQEAgLTAsMCArMSw0MyBAQAorQmluZGluZyBmb3IgVEkgZml4ZWQgZmFjdG9yIHJhdGUgY2xvY2sgc291cmNlcy4KKworQmluZGluZyBzdGF0dXM6IFVuc3RhYmxlIC0gQUJJIGNvbXBhdGliaWxpdHkgbWF5IGJlIGJyb2tlbiBpbiB0aGUgZnV0dXJlCisKK1RoaXMgYmluZGluZyB1c2VzIHRoZSBjb21tb24gY2xvY2sgYmluZGluZ1sxXSwgYW5kIGFsc28gdXNlcyB0aGUgYXV0b2lkbGUKK3N1cHBvcnQgZnJvbSBUSSBhdXRvaWRsZSBjbG9jayBbMl0uCisKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CitbMl0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3RpL2F1dG9pZGxlLnR4dAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hhbGwgYmUgInRpLGZpeGVkLWZhY3Rvci1jbG9jayIuCistICNjbG9jay1jZWxscyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IHNoYWxsIGJlIHNldCB0byAwLgorLSB0aSxjbG9jay1kaXY6IGZpeGVkIGRpdmlkZXIuCistIHRpLGNsb2NrLW11bHQ6IGZpeGVkIG11bHRpcGxpZXIuCistIGNsb2NrczogcGFyZW50IGNsb2NrLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSB0aSxhdXRvaWRsZS1zaGlmdDogYml0IHNoaWZ0IG9mIHRoZSBhdXRvaWRsZSBlbmFibGUgYml0IGZvciB0aGUgY2xvY2ssCisgIHNlZSBbMl0KKy0gcmVnOiBvZmZzZXQgZm9yIHRoZSBhdXRvaWRsZSByZWdpc3RlciBvZiB0aGlzIGNsb2NrLCBzZWUgWzJdCistIHRpLGludmVydC1hdXRvaWRsZS1iaXQ6IGF1dG9pZGxlIGlzIGVuYWJsZWQgYnkgc2V0dGluZyB0aGUgYml0IHRvIDAsIHNlZSBbMl0KKy0gdGksc2V0LXJhdGUtcGFyZW50OiBjbGtfc2V0X3JhdGUgaXMgcHJvcGFnYXRlZCB0byBwYXJlbnQKKworRXhhbXBsZToKKwljbG9jayB7CisJCWNvbXBhdGlibGUgPSAidGksZml4ZWQtZmFjdG9yLWNsb2NrIjsKKwkJY2xvY2tzID0gPCZwYXJlbnRjbGs+OworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCXRpLGNsb2NrLWRpdiA9IDwyPjsKKwkJdGksY2xvY2stbXVsdCA9IDwxPjsKKwl9OworCisJZHBsbF91c2JfY2xrZGNvbGRvX2NrOiBkcGxsX3VzYl9jbGtkY29sZG9fY2sgeworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCWNvbXBhdGlibGUgPSAidGksZml4ZWQtZmFjdG9yLWNsb2NrIjsKKwkJY2xvY2tzID0gPCZkcGxsX3VzYl9jaz47CisJCXRpLGNsb2NrLWRpdiA9IDwxPjsKKwkJdGksYXV0b2lkbGUtc2hpZnQgPSA8OD47CisJCXJlZyA9IDwweDAxYjQ+OworCQl0aSxjbG9jay1tdWx0ID0gPDE+OworCQl0aSxpbnZlcnQtYXV0b2lkbGUtYml0OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGkvZ2F0ZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGkvZ2F0ZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmOGZkZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay90aS9nYXRlLnR4dApAQCAtMCwwICsxLDEwNiBAQAorQmluZGluZyBmb3IgVGV4YXMgSW5zdHJ1bWVudHMgZ2F0ZSBjbG9jay4KKworQmluZGluZyBzdGF0dXM6IFVuc3RhYmxlIC0gQUJJIGNvbXBhdGliaWxpdHkgbWF5IGJlIGJyb2tlbiBpbiB0aGUgZnV0dXJlCisKK1RoaXMgYmluZGluZyB1c2VzIHRoZSBjb21tb24gY2xvY2sgYmluZGluZ1sxXS4gVGhpcyBjbG9jayBpcworcXVpdGUgbXVjaCBzaW1pbGFyIHRvIHRoZSBiYXNpYyBnYXRlLWNsb2NrIFsyXSwgaG93ZXZlciwKK2l0IHN1cHBvcnRzIGEgbnVtYmVyIG9mIGFkZGl0aW9uYWwgZmVhdHVyZXMuIElmIG5vIHJlZ2lzdGVyCitpcyBwcm92aWRlZCBmb3IgdGhpcyBjbG9jaywgdGhlIGNvZGUgYXNzdW1lcyB0aGF0IGEgY2xvY2tkb21haW4KK3dpbGwgYmUgY29udHJvbGxlZCBpbnN0ZWFkIGFuZCB0aGUgY29ycmVzcG9uZGluZyBody1vcHMgZm9yCit0aGF0IGlzIHVzZWQuCisKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CitbMl0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2dhdGUtY2xvY2sudHh0CitbM10gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3RpL2Nsb2NrZG9tYWluLnR4dAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hhbGwgYmUgb25lIG9mOgorICAidGksZ2F0ZS1jbG9jayIgLSBiYXNpYyBnYXRlIGNsb2NrCisgICJ0aSx3YWl0LWdhdGUtY2xvY2siIC0gZ2F0ZSBjbG9jayB3aGljaCB3YWl0cyB1bnRpbCBjbG9jayBpcyBhY3RpdmUgYmVmb3JlCisJCQkgcmV0dXJuaW5nIGZyb20gY2xrX2VuYWJsZSgpCisgICJ0aSxkc3MtZ2F0ZS1jbG9jayIgLSBnYXRlIGNsb2NrIHdpdGggRFNTIHNwZWNpZmljIGhhcmR3YXJlIGhhbmRsaW5nCisgICJ0aSxhbTM1eHgtZ2F0ZS1jbG9jayIgLSBnYXRlIGNsb2NrIHdpdGggQU0zNXh4IHNwZWNpZmljIGhhcmR3YXJlIGhhbmRsaW5nCisgICJ0aSxjbGtkbS1nYXRlLWNsb2NrIiAtIGNsb2NrZG9tYWluIGdhdGUgY2xvY2ssIHdoaWNoIGRlcml2ZXMgaXRzIGZ1bmN0aW9uYWwKKwkJCSAgY2xvY2sgZGlyZWN0bHkgZnJvbSBhIGNsb2NrZG9tYWluLCBzZWUgWzNdIGhvdworCQkJICB0byBtYXAgY2xvY2tkb21haW5zIHByb3Blcmx5CisgICJ0aSxoc2Rpdi1nYXRlLWNsb2NrIiAtIGdhdGUgY2xvY2sgd2l0aCBPTUFQMzZ4eCBzcGVjaWZpYyBoYXJkd2FyZSBoYW5kbGluZywKKwkJCSAgcmVxdWlyZWQgZm9yIGEgaGFyZHdhcmUgZXJyYXRhCisgICJ0aSxjb21wb3NpdGUtZ2F0ZS1jbG9jayIgLSBjb21wb3NpdGUgZ2F0ZSBjbG9jaywgdG8gYmUgcGFydCBvZiBjb21wb3NpdGUKKwkJCSAgICAgIGNsb2NrCisgICJ0aSxjb21wb3NpdGUtbm8td2FpdC1nYXRlLWNsb2NrIiAtIGNvbXBvc2l0ZSBnYXRlIGNsb2NrIHRoYXQgZG9lcyBub3Qgd2FpdAorCQkJCSAgICAgIGZvciBjbG9jayB0byBiZSBhY3RpdmUgYmVmb3JlIHJldHVybmluZworCQkJCSAgICAgIGZyb20gY2xrX2VuYWJsZSgpCistICNjbG9jay1jZWxscyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IHNoYWxsIGJlIHNldCB0byAwCistIGNsb2NrcyA6IGxpbmsgdG8gcGhhbmRsZSBvZiBwYXJlbnQgY2xvY2sKKy0gcmVnIDogb2Zmc2V0IGZvciByZWdpc3RlciBjb250cm9sbGluZyBhZGp1c3RhYmxlIGdhdGUsIG5vdCBuZWVkZWQgZm9yCisJdGksY2xrZG0tZ2F0ZS1jbG9jayB0eXBlCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHRpLGJpdC1zaGlmdCA6IGJpdCBzaGlmdCBmb3IgcHJvZ3JhbW1pbmcgdGhlIGNsb2NrIGdhdGUsIGludmFsaWQgZm9yCisJCSB0aSxjbGtkbS1nYXRlLWNsb2NrIHR5cGUKKy0gdGksc2V0LWJpdC10by1kaXNhYmxlIDogaW52ZXJ0cyBkZWZhdWx0IGdhdGUgcHJvZ3JhbW1pbmcuIFNldHRpbmcgdGhlIGJpdAorICBnYXRlcyB0aGUgY2xvY2sgYW5kIGNsZWFyaW5nIHRoZSBiaXQgdW5nYXRlcyB0aGUgY2xvY2suCisKK0V4YW1wbGVzOgorCW1tY2hzMl9mY2s6IG1tY2hzMl9mY2tANDgwMDRhMDAgeworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCWNvbXBhdGlibGUgPSAidGksZ2F0ZS1jbG9jayI7CisJCWNsb2NrcyA9IDwmY29yZV85Nm1fZmNrPjsKKwkJcmVnID0gPDB4MGEwMD47CisJCXRpLGJpdC1zaGlmdCA9IDwyNT47CisJfTsKKworCXVhcnQ0X2Zja19hbTM1eHg6IHVhcnQ0X2Zja19hbTM1eHggeworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCWNvbXBhdGlibGUgPSAidGksd2FpdC1nYXRlLWNsb2NrIjsKKwkJY2xvY2tzID0gPCZjb3JlXzQ4bV9mY2s+OworCQlyZWcgPSA8MHgwYTAwPjsKKwkJdGksYml0LXNoaWZ0ID0gPDIzPjsKKwl9OworCisJZHNzMV9hbHdvbl9mY2tfMzQzMGVzMjogZHNzMV9hbHdvbl9mY2tfMzQzMGVzMkA0ODAwNGUwMCB7CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJ0aSxkc3MtZ2F0ZS1jbG9jayI7CisJCWNsb2NrcyA9IDwmZHBsbDRfbTR4Ml9jaz47CisJCXJlZyA9IDwweDBlMDA+OworCQl0aSxiaXQtc2hpZnQgPSA8MD47CisJfTsKKworCWVtYWNfaWNrOiBlbWFjX2lja0A0ODAwMjU5YyB7CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJ0aSxhbTM1eHgtZ2F0ZS1jbG9jayI7CisJCWNsb2NrcyA9IDwmaXBzc19pY2s+OworCQlyZWcgPSA8MHgwNTljPjsKKwkJdGksYml0LXNoaWZ0ID0gPDE+OworCX07CisKKwllbXVfc3JjX2NrOiBlbXVfc3JjX2NrIHsKKwkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQljb21wYXRpYmxlID0gInRpLGNsa2RtLWdhdGUtY2xvY2siOworCQljbG9ja3MgPSA8JmVtdV9zcmNfbXV4X2NrPjsKKwl9OworCisJZHBsbDRfbTJ4Ml9jazogZHBsbDRfbTJ4Ml9ja0A0ODAwNGQwMCB7CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJ0aSxoc2Rpdi1nYXRlLWNsb2NrIjsKKwkJY2xvY2tzID0gPCZkcGxsNF9tMngyX211bF9jaz47CisJCXRpLGJpdC1zaGlmdCA9IDwweDFiPjsKKwkJcmVnID0gPDB4MGQwMD47CisJCXRpLHNldC1iaXQtdG8tZGlzYWJsZTsKKwl9OworCisJdmx5bnFfZ2F0ZV9mY2s6IHZseW5xX2dhdGVfZmNrIHsKKwkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQljb21wYXRpYmxlID0gInRpLGNvbXBvc2l0ZS1nYXRlLWNsb2NrIjsKKwkJY2xvY2tzID0gPCZjb3JlX2NrPjsKKwkJdGksYml0LXNoaWZ0ID0gPDM+OworCQlyZWcgPSA8MHgwMjAwPjsKKwl9OworCisJc3lzX2Nsa291dDJfc3JjX2dhdGU6IHN5c19jbGtvdXQyX3NyY19nYXRlIHsKKwkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQljb21wYXRpYmxlID0gInRpLGNvbXBvc2l0ZS1uby13YWl0LWdhdGUtY2xvY2siOworCQljbG9ja3MgPSA8JmNvcmVfY2s+OworCQl0aSxiaXQtc2hpZnQgPSA8MTU+OworCQlyZWcgPSA8MHgwMDcwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3RpL2ludGVyZmFjZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGkvaW50ZXJmYWNlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTExYTQwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3RpL2ludGVyZmFjZS50eHQKQEAgLTAsMCArMSw1NiBAQAorQmluZGluZyBmb3IgVGV4YXMgSW5zdHJ1bWVudHMgaW50ZXJmYWNlIGNsb2NrLgorCitCaW5kaW5nIHN0YXR1czogVW5zdGFibGUgLSBBQkkgY29tcGF0aWJpbGl0eSBtYXkgYmUgYnJva2VuIGluIHRoZSBmdXR1cmUKKworVGhpcyBiaW5kaW5nIHVzZXMgdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nWzFdLiBUaGlzIGNsb2NrIGlzCitxdWl0ZSBtdWNoIHNpbWlsYXIgdG8gdGhlIGJhc2ljIGdhdGUtY2xvY2sgWzJdLCBob3dldmVyLAoraXQgc3VwcG9ydHMgYSBudW1iZXIgb2YgYWRkaXRpb25hbCBmZWF0dXJlcywgaW5jbHVkaW5nCitjb21wYW5pb24gY2xvY2sgZmluZGluZyAobWF0Y2ggY29ycmVzcG9uZGluZyBmdW5jdGlvbmFsIGdhdGUKK2Nsb2NrKSBhbmQgaGFyZHdhcmUgYXV0b2lkbGUgZW5hYmxlIC8gZGlzYWJsZS4KKworWzFdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKK1syXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svZ2F0ZS1jbG9jay50eHQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNoYWxsIGJlIG9uZSBvZjoKKyAgInRpLG9tYXAzLWludGVyZmFjZS1jbG9jayIgLSBiYXNpYyBPTUFQMyBpbnRlcmZhY2UgY2xvY2sKKyAgInRpLG9tYXAzLW5vLXdhaXQtaW50ZXJmYWNlLWNsb2NrIiAtIGludGVyZmFjZSBjbG9jayB3aGljaCBoYXMgbm8gaGFyZHdhcmUKKwkJCQkgICAgICAgY2FwYWJpbGl0eSBmb3Igd2FpdGluZyBjbG9jayB0byBiZSByZWFkeQorICAidGksb21hcDMtaHNvdGd1c2ItaW50ZXJmYWNlLWNsb2NrIiAtIGludGVyZmFjZSBjbG9jayB3aXRoIFVTQiBzcGVjaWZpYyBIVworCQkJCQloYW5kbGluZworICAidGksb21hcDMtZHNzLWludGVyZmFjZS1jbG9jayIgLSBpbnRlcmZhY2UgY2xvY2sgd2l0aCBEU1Mgc3BlY2lmaWMgSFcgaGFuZGxpbmcKKyAgInRpLG9tYXAzLXNzaS1pbnRlcmZhY2UtY2xvY2siIC0gaW50ZXJmYWNlIGNsb2NrIHdpdGggU1NJIHNwZWNpZmljIEhXIGhhbmRsaW5nCisgICJ0aSxhbTM1eHgtaW50ZXJmYWNlLWNsb2NrIiAtIGludGVyZmFjZSBjbG9jayB3aXRoIEFNMzV4eCBzcGVjaWZpYyBIVyBoYW5kbGluZworICAidGksb21hcDI0MzAtaW50ZXJmYWNlLWNsb2NrIiAtIGludGVyZmFjZSBjbG9jayB3aXRoIE9NQVAyNDMwIHNwZWNpZmljIEhXCisJCQkJICBoYW5kbGluZworLSAjY2xvY2stY2VsbHMgOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBzaGFsbCBiZSBzZXQgdG8gMAorLSBjbG9ja3MgOiBsaW5rIHRvIHBoYW5kbGUgb2YgcGFyZW50IGNsb2NrCistIHJlZyA6IGJhc2UgYWRkcmVzcyBmb3IgdGhlIGNvbnRyb2wgcmVnaXN0ZXIKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdGksYml0LXNoaWZ0IDogYml0IHNoaWZ0IGZvciB0aGUgYml0IGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgY2xvY2sgKGRlZmF1bHQgMCkKKworRXhhbXBsZXM6CisJYWVzMV9pY2s6IGFlczFfaWNrQDQ4MDA0YTE0IHsKKwkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQljb21wYXRpYmxlID0gInRpLG9tYXAzLWludGVyZmFjZS1jbG9jayI7CisJCWNsb2NrcyA9IDwmc2VjdXJpdHlfbDRfaWNrMj47CisJCXJlZyA9IDwweDQ4MDA0YTE0IDB4ND47CisJCXRpLGJpdC1zaGlmdCA9IDwzPjsKKwl9OworCisJY2FtX2ljazogY2FtX2lja0A0ODAwNGYxMCB7CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJ0aSxvbWFwMy1uby13YWl0LWludGVyZmFjZS1jbG9jayI7CisJCWNsb2NrcyA9IDwmbDRfaWNrPjsKKwkJcmVnID0gPDB4NDgwMDRmMTAgMHg0PjsKKwkJdGksYml0LXNoaWZ0ID0gPDA+OworCX07CisKKwlzc2lfaWNrXzM0MzBlczI6IHNzaV9pY2tfMzQzMGVzMkA0ODAwNGExMCB7CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJ0aSxvbWFwMy1zc2ktaW50ZXJmYWNlLWNsb2NrIjsKKwkJY2xvY2tzID0gPCZzc2lfbDRfaWNrPjsKKwkJcmVnID0gPDB4NDgwMDRhMTAgMHg0PjsKKwkJdGksYml0LXNoaWZ0ID0gPDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGkvbXV4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay90aS9tdXgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMGQxNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGkvbXV4LnR4dApAQCAtMCwwICsxLDc2IEBACitCaW5kaW5nIGZvciBUSSBtdXggY2xvY2suCisKK0JpbmRpbmcgc3RhdHVzOiBVbnN0YWJsZSAtIEFCSSBjb21wYXRpYmlsaXR5IG1heSBiZSBicm9rZW4gaW4gdGhlIGZ1dHVyZQorCitUaGlzIGJpbmRpbmcgdXNlcyB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmdbMV0uICBJdCBhc3N1bWVzIGEKK3JlZ2lzdGVyLW1hcHBlZCBtdWx0aXBsZXhlciB3aXRoIG11bHRpcGxlIGlucHV0IGNsb2NrIHNpZ25hbHMgb3IKK3BhcmVudHMsIG9uZSBvZiB3aGljaCBjYW4gYmUgc2VsZWN0ZWQgYXMgb3V0cHV0LiAgVGhpcyBjbG9jayBkb2VzIG5vdAorZ2F0ZSBvciBhZGp1c3QgdGhlIHBhcmVudCByYXRlIHZpYSBhIGRpdmlkZXIgb3IgbXVsdGlwbGllci4KKworQnkgZGVmYXVsdCB0aGUgImNsb2NrcyIgcHJvcGVydHkgbGlzdHMgdGhlIHBhcmVudHMgaW4gdGhlIHNhbWUgb3JkZXIKK2FzIHRoZXkgYXJlIHByb2dyYW1tZWQgaW50byB0aGUgcmVnc3Rlci4gIEUuZzoKKworCWNsb2NrcyA9IDwmZm9vX2Nsb2NrPiwgPCZiYXJfY2xvY2s+LCA8JmJhel9jbG9jaz47CisKK3Jlc3VsdHMgaW4gcHJvZ3JhbW1pbmcgdGhlIHJlZ2lzdGVyIGFzIGZvbGxvd3M6CisKK3JlZ2lzdGVyIHZhbHVlCQlzZWxlY3RlZCBwYXJlbnQgY2xvY2sKKzAJCQlmb29fY2xvY2sKKzEJCQliYXJfY2xvY2sKKzIJCQliYXpfY2xvY2sKKworU29tZSBjbG9jayBjb250cm9sbGVyIElQcyBkbyBub3QgYWxsb3cgYSB2YWx1ZSBvZiB6ZXJvIHRvIGJlIHByb2dyYW1tZWQKK2ludG8gdGhlIHJlZ2lzdGVyLCBpbnN0ZWFkIGluZGV4aW5nIGJlZ2lucyBhdCAxLiAgVGhlIG9wdGlvbmFsIHByb3BlcnR5CisiaW5kZXgtc3RhcnRzLWF0LW9uZSIgbW9kaWZpZWQgdGhlIHNjaGVtZSBhcyBmb2xsb3dzOgorCityZWdpc3RlciB2YWx1ZQkJc2VsZWN0ZWQgY2xvY2sgcGFyZW50CisxCQkJZm9vX2Nsb2NrCisyCQkJYmFyX2Nsb2NrCiszCQkJYmF6X2Nsb2NrCisKK1RoZSBiaW5kaW5nIG11c3QgcHJvdmlkZSB0aGUgcmVnaXN0ZXIgdG8gY29udHJvbCB0aGUgbXV4LiBPcHRpb25hbGx5Cit0aGUgbnVtYmVyIG9mIGJpdHMgdG8gc2hpZnQgdGhlIGNvbnRyb2wgZmllbGQgaW4gdGhlIHJlZ2lzdGVyIGNhbiBiZQorc3VwcGxpZWQuIElmIHRoZSBzaGlmdCB2YWx1ZSBpcyBtaXNzaW5nIGl0IGlzIHRoZSBzYW1lIGFzIHN1cHBseWluZworYSB6ZXJvIHNoaWZ0LgorCitbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hhbGwgYmUgInRpLG11eC1jbG9jayIgb3IgInRpLGNvbXBvc2l0ZS1tdXgtY2xvY2siLgorLSAjY2xvY2stY2VsbHMgOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOyBzaGFsbCBiZSBzZXQgdG8gMC4KKy0gY2xvY2tzIDogbGluayBwaGFuZGxlcyBvZiBwYXJlbnQgY2xvY2tzCistIHJlZyA6IHJlZ2lzdGVyIG9mZnNldCBmb3IgcmVnaXN0ZXIgY29udHJvbGxpbmcgYWRqdXN0YWJsZSBtdXgKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdGksYml0LXNoaWZ0IDogbnVtYmVyIG9mIGJpdHMgdG8gc2hpZnQgdGhlIGJpdC1tYXNrLCBkZWZhdWx0cyB0bworICAwIGlmIG5vdCBwcmVzZW50CistIHRpLGluZGV4LXN0YXJ0cy1hdC1vbmUgOiB2YWxpZCBpbnB1dCBzZWxlY3QgcHJvZ3JhbW1pbmcgc3RhcnRzIGF0IDEsIG5vdAorICB6ZXJvCistIHRpLHNldC1yYXRlLXBhcmVudCA6IGNsa19zZXRfcmF0ZSBpcyBwcm9wYWdhdGVkIHRvIHBhcmVudCBjbG9jaywKKyAgbm90IHN1cHBvcnRlZCBieSB0aGUgY29tcG9zaXRlLW11eC1jbG9jayBzdWJ0eXBlCisKK0V4YW1wbGVzOgorCitzeXNfY2xraW5fY2s6IHN5c19jbGtpbl9ja0A0YTMwNjExMCB7CisJI2Nsb2NrLWNlbGxzID0gPDA+OworCWNvbXBhdGlibGUgPSAidGksbXV4LWNsb2NrIjsKKwljbG9ja3MgPSA8JnZpcnRfMTIwMDAwMDBfY2s+LCA8JnZpcnRfMTMwMDAwMDBfY2s+LCA8JnZpcnRfMTY4MDAwMDBfY2s+LCA8JnZpcnRfMTkyMDAwMDBfY2s+LCA8JnZpcnRfMjYwMDAwMDBfY2s+LCA8JnZpcnRfMjcwMDAwMDBfY2s+LCA8JnZpcnRfMzg0MDAwMDBfY2s+OworCXJlZyA9IDwweDAxMTA+OworCXRpLGluZGV4LXN0YXJ0cy1hdC1vbmU7Cit9OworCithYmVfZHBsbF9ieXBhc3NfY2xrX211eF9jazogYWJlX2RwbGxfYnlwYXNzX2Nsa19tdXhfY2tANGEzMDYxMDggeworCSNjbG9jay1jZWxscyA9IDwwPjsKKwljb21wYXRpYmxlID0gInRpLG11eC1jbG9jayI7CisJY2xvY2tzID0gPCZzeXNfY2xraW5fY2s+LCA8JnN5c18zMmtfY2s+OworCXRpLGJpdC1zaGlmdCA9IDwyND47CisJcmVnID0gPDB4MDEwOD47Cit9OworCittY2JzcDVfbXV4X2ZjazogbWNic3A1X211eF9mY2sgeworCSNjbG9jay1jZWxscyA9IDwwPjsKKwljb21wYXRpYmxlID0gInRpLGNvbXBvc2l0ZS1tdXgtY2xvY2siOworCWNsb2NrcyA9IDwmY29yZV85Nm1fZmNrPiwgPCZtY2JzcF9jbGtzPjsKKwl0aSxiaXQtc2hpZnQgPSA8ND47CisJcmVnID0gPDB4MDJkOD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3V4NTAwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay91eDUwMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUyYmQ0YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay91eDUwMC50eHQKQEAgLTAsMCArMSw2NCBAQAorQ2xvY2sgYmluZGluZ3MgZm9yIFNULUVyaWNzc29uIFV4NTAwIGNsb2NrcworCitSZXF1aXJlZCBwcm9wZXJ0aWVzIDoKKy0gY29tcGF0aWJsZSA6IHNoYWxsIGNvbnRhaW4gb25seSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKyAgInN0ZXJpY3Nzb24sdTg1MDAtY2xrcyIKKyAgInN0ZXJpY3Nzb24sdTg1NDAtY2xrcyIKKyAgInN0ZXJpY3Nzb24sdTk1NDAtY2xrcyIKKy0gcmVnIDogc2hhbGwgY29udGFpbiBiYXNlIHJlZ2lzdGVyIGxvY2F0aW9uIGFuZCBsZW5ndGggZm9yCisgIENMS1JTVDEsIDIsIDMsIDUsIGFuZCA2IGluIGFuIGFycmF5LiBOb3RlIHRoZSBhYnNlbmNlIG9mCisgIENMS1JTVDQsIHdoaWNoIGRvZXMgbm90IGV4aXN0LgorCitSZXF1aXJlZCBzdWJub2RlczoKKy0gcHJjbXUtY2xvY2s6IGEgc3Vibm9kZSB3aXRoIG9uZSBjbG9jayBjZWxsIGZvciBQUkNNVSAocG93ZXIsCisgIHJlc2V0LCBjb250cm9sIHVuaXQpIGNsb2Nrcy4gVGhlIGNlbGwgaW5kaWNhdGVzIHdoaWNoIFBSQ01VCisgIGNsb2NrIGluIHRoZSBwcmNtdS1jbG9jayBub2RlIHRoZSBjb25zdW1lciB3YW50cyB0byB1c2UuCistIHByY2MtcGVyaXBoLWNsb2NrOiBhIHN1Ym5vZGUgd2l0aCB0d28gY2xvY2sgY2VsbHMgZm9yCisgIFBSQ0MgKHByb2dyYW1tYWJsZSByZXNldC0gYW5kIGNsb2NrIGNvbnRyb2xsZXIpIHBlcmlwaGVyYWwgY2xvY2tzLgorICBUaGUgZmlyc3QgY2VsbCBpbmRpY2F0ZXMgd2hpY2ggUFJDQyBibG9jayB0aGUgY29uc3VtZXIKKyAgd2FudHMgdG8gdXNlLCBwb3NzaWJsZSB2YWx1ZXMgYXJlIDEsIDIsIDMsIDUsIDYuIFRoZSBzZWNvbmQKKyAgY2VsbCBpbmRpY2F0ZXMgd2hpY2ggY2xvY2sgaW5zaWRlIHRoZSBQUkNDIGJsb2NrIGl0IHdhbnRzLAorICBwb3NzaWJsZSB2YWx1ZXMgYXJlIDAgdGhydSAzMS4KKy0gcHJjYy1rZXJuZWwtY2xvY2s6IGEgc3Vibm9kZSB3aXRoIHR3byBjbG9jayBjZWxscyBmb3IKKyAgUFJDQyAocHJvZ3JhbW1hYmxlIHJlc2V0LSBhbmQgY2xvY2sgY29udHJvbGxlcikga2VybmVsIGNsb2NrcworICBUaGUgZmlyc3QgY2VsbCBpbmRpY2F0ZXMgd2hpY2ggUFJDQyBibG9jayB0aGUgY29uc3VtZXIKKyAgd2FudHMgdG8gdXNlLCBwb3NzaWJsZSB2YWx1ZXMgYXJlIDEsIDIsIDMsIDUsIDYuIFRoZSBzZWNvbmQKKyAgY2VsbCBpbmRpY2F0ZXMgd2hpY2ggY2xvY2sgaW5zaWRlIHRoZSBQUkNDIGJsb2NrIGl0IHdhbnRzLAorICBwb3NzaWJsZSB2YWx1ZXMgYXJlIDAgdGhydSAzMS4KKy0gcnRjMzJrLWNsb2NrOiBhIHN1Ym5vZGUgd2l0aCB6ZXJvIGNsb2NrIGNlbGxzIGZvciB0aGUgMzJrSHoKKyAgUlRDIGNsb2NrLgorLSBzbXAtdHdkLWNsb2NrOiBhIHN1Ym5vZGUgZm9yIHRoZSBBUk0gU01QIFRpbWVyIFdhdGNoZG9nIGNsdXN0ZXIKKyAgd2l0aCB6ZXJvIGNsb2NrIGNlbGxzLgorCitFeGFtcGxlOgorCitjbG9ja3MgeworCWNvbXBhdGlibGUgPSAic3Rlcmljc3Nvbix1ODUwMC1jbGtzIjsKKwkvKgorCSAqIFJlZ2lzdGVycyBmb3IgdGhlIENMS1JTVCBibG9jayBvbiBwZXJpcGhlcmFsCisJICogZ3JvdXBzIDEsIDIsIDMsIDUsIDYsCisJICovCisJcmVnID0gPDB4ODAxMmYwMDAgMHgxMDAwPiwgPDB4ODAxMWYwMDAgMHgxMDAwPiwKKwkgICAgPDB4ODAwMGYwMDAgMHgxMDAwPiwgPDB4YTAzZmYwMDAgMHgxMDAwPiwKKwkgICAgPDB4YTAzY2YwMDAgMHgxMDAwPjsKKworCXByY211X2NsazogcHJjbXUtY2xvY2sgeworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJfTsKKworCXByY2NfcGNsazogcHJjYy1wZXJpcGgtY2xvY2sgeworCQkjY2xvY2stY2VsbHMgPSA8Mj47CisJfTsKKworCXByY2Nfa2NsazogcHJjYy1rZXJuZWwtY2xvY2sgeworCQkjY2xvY2stY2VsbHMgPSA8Mj47CisJfTsKKworCXJ0Y19jbGs6IHJ0YzMyay1jbG9jayB7CisJCSNjbG9jay1jZWxscyA9IDwwPjsKKwl9OworCisJc21wX3R3ZF9jbGs6IHNtcC10d2QtY2xvY2sgeworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdmY2MTAtY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3ZmNjEwLWNsb2NrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2Y5ZjFhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3ZmNjEwLWNsb2NrLnR4dApAQCAtMCwwICsxLDQxIEBACisqIENsb2NrIGJpbmRpbmdzIGZvciBGcmVlc2NhbGUgVnlicmlkIFZGNjEwIFNPQworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImZzbCx2ZjYxMC1jY20iCistIHJlZzogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQKKy0gI2Nsb2NrLWNlbGxzOiBTaG91bGQgYmUgPDE+CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrczogbGlzdCBvZiBjbG9jayBpZGVudGlmaWVycyB3aGljaCBhcmUgZXh0ZXJuYWwgaW5wdXQgY2xvY2tzIHRvIHRoZQorCWdpdmVuIGNsb2NrIGNvbnRyb2xsZXIuIFBsZWFzZSByZWZlciB0aGUgbmV4dCBzZWN0aW9uIHRvIGZpbmQKKwl0aGUgaW5wdXQgY2xvY2tzIGZvciBhIGdpdmVuIGNvbnRyb2xsZXIuCistIGNsb2NrLW5hbWVzOiBsaXN0IG9mIG5hbWVzIG9mIGNsb2NrcyB3aGljaCBhcmUgZXh0ZXJhbCBpbnB1dCBjbG9ja3MgdG8gdGhlCisJZ2l2ZW4gY2xvY2sgY29udHJvbGxlci4KKworSW5wdXQgY2xvY2tzIGZvciB0b3AgY2xvY2sgY29udHJvbGxlcjoKKwktIHN4b3NjIChleHRlcm5hbCBjcnlzdGFsIG9zY2lsbGF0b3IgMzJLSHosIHJlY29tbWVuZGVkKQorCS0gZnhvc2MgKGV4dGVybmFsIGNyeXN0YWwgb3NjaWxsYXRvciAyNE1IeiwgcmVjb21tZW5kZWQpCisJLSBhdWRpb19leHQKKwktIGVuZXRfZXh0CisKK1RoZSBjbG9jayBjb25zdW1lciBzaG91bGQgc3BlY2lmeSB0aGUgZGVzaXJlZCBjbG9jayBieSBoYXZpbmcgdGhlIGNsb2NrCitJRCBpbiBpdHMgImNsb2NrcyIgcGhhbmRsZSBjZWxsLiBTZWUgaW5jbHVkZS9kdC1iaW5kaW5ncy9jbG9jay92ZjYxMC1jbG9jay5oCitmb3IgdGhlIGZ1bGwgbGlzdCBvZiBWRjYxMCBjbG9jayBJRHMuCisKK0V4YW1wbGVzOgorCitjbGtzOiBjY21ANDAwNmIwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLHZmNjEwLWNjbSI7CisJcmVnID0gPDB4NDAwNmIwMDAgMHgxMDAwPjsKKwkjY2xvY2stY2VsbHMgPSA8MT47CisJY2xvY2tzID0gPCZzeG9zYz4sIDwmZnhvc2M+OworCWNsb2NrLW5hbWVzID0gInN4b3NjIiwgImZ4b3NjIjsKK307CisKK3VhcnQxOiBzZXJpYWxANDAwMjgwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLHZmNjEwLXVhcnQiOworCXJlZyA9IDwweDQwMDI4MDAwIDB4MTAwMD47CisJaW50ZXJydXB0cyA9IDwwIDYyIDB4MDQ+OworCWNsb2NrcyA9IDwmY2xrcyBWRjYxMF9DTEtfVUFSVDE+OworCWNsb2NrLW5hbWVzID0gImlwZyI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3Z0ODUwMC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdnQ4NTAwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWQ3MWNjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3Z0ODUwMC50eHQKQEAgLTAsMCArMSw3NCBAQAorRGV2aWNlIFRyZWUgQ2xvY2sgYmluZGluZ3MgZm9yIGFyY2gtdnQ4NTAwCisKK1RoaXMgYmluZGluZyB1c2VzIHRoZSBjb21tb24gY2xvY2sgYmluZGluZ1sxXS4KKworWzFdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNoYWxsIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCSJ2aWEsdnQ4NTAwLXBsbC1jbG9jayIgLSBmb3IgYSBWVDg1MDAvV004NTA1IFBMTCBjbG9jaworCSJ3bSx3bTg2NTAtcGxsLWNsb2NrIiAtIGZvciBhIFdNODY1MCBQTEwgY2xvY2sKKwkid20sd204NzUwLXBsbC1jbG9jayIgLSBmb3IgYSBXTTg3NTAgUExMIGNsb2NrCisJIndtLHdtODg1MC1wbGwtY2xvY2siIC0gZm9yIGEgV004ODUwIFBMTCBjbG9jaworCSJ2aWEsdnQ4NTAwLWRldmljZS1jbG9jayIgLSBmb3IgYSBWVC9XTSBkZXZpY2UgY2xvY2sKKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgUExMIGNsb2NrczoKKy0gcmVnIDogc2hhbGwgYmUgdGhlIGNvbnRyb2wgcmVnaXN0ZXIgb2Zmc2V0IGZyb20gUE1DIGJhc2UgZm9yIHRoZSBwbGwgY2xvY2suCistIGNsb2NrcyA6IHNoYWxsIGJlIHRoZSBpbnB1dCBwYXJlbnQgY2xvY2sgcGhhbmRsZSBmb3IgdGhlIGNsb2NrLiBUaGlzIHNob3VsZAorCWJlIHRoZSByZWZlcmVuY2UgY2xvY2suCistICNjbG9jay1jZWxscyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IHNoYWxsIGJlIHNldCB0byAwLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBkZXZpY2UgY2xvY2tzOgorLSBjbG9ja3MgOiBzaGFsbCBiZSB0aGUgaW5wdXQgcGFyZW50IGNsb2NrIHBoYW5kbGUgZm9yIHRoZSBjbG9jay4gVGhpcyBzaG91bGQKKwliZSBhIHBsbCBvdXRwdXQuCistICNjbG9jay1jZWxscyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc7IHNoYWxsIGJlIHNldCB0byAwLgorCisKK0RldmljZSBDbG9ja3MKKworRGV2aWNlIGNsb2NrcyBhcmUgcmVxdWlyZWQgdG8gaGF2ZSBvbmUgb3IgYm90aCBvZiB0aGUgZm9sbG93aW5nIHNldHMgb2YKK3Byb3BlcnRpZXM6CisKKworR2F0ZWQgZGV2aWNlIGNsb2NrczoKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gZW5hYmxlLXJlZyA6IHNoYWxsIGJlIHRoZSByZWdpc3RlciBvZmZzZXQgZnJvbSBQTUMgYmFzZSBmb3IgdGhlIGVuYWJsZQorCXJlZ2lzdGVyLgorLSBlbmFibGUtYml0IDogc2hhbGwgYmUgdGhlIGJpdCB3aXRoaW4gZW5hYmxlLXJlZyB0byBlbmFibGUvZGlzYWJsZSB0aGUgY2xvY2suCisKKworRGl2aXNvciBkZXZpY2UgY2xvY2tzOgorCitSZXF1aXJlZCBwcm9wZXJ0eToKKy0gZGl2aXNvci1yZWcgOiBzaGFsbCBiZSB0aGUgcmVnaXN0ZXIgb2Zmc2V0IGZyb20gUE1DIGJhc2UgZm9yIHRoZSBkaXZpc29yCisJcmVnaXN0ZXIuCitPcHRpb25hbCBwcm9wZXJ0eToKKy0gZGl2aXNvci1tYXNrIDogc2hhbGwgYmUgdGhlIG1hc2sgZm9yIHRoZSBkaXZpc29yIHJlZ2lzdGVyLiBEZWZhdWx0cyB0byAweDFmCisJaWYgbm90IHNwZWNpZmllZC4KKworCitGb3IgZXhhbXBsZToKKworcmVmMjU6IHJlZjI1TSB7CisJI2Nsb2NrLWNlbGxzID0gPDA+OworCWNvbXBhdGlibGUgPSAiZml4ZWQtY2xvY2siOworCWNsb2NrLWZyZXF1ZW5jeSA9IDwyNTAwMDAwMD47Cit9OworCitwbGxhOiBwbGxhIHsKKwkjY2xvY2stY2VsbHMgPSA8MD47CisJY29tcGF0aWJsZSA9ICJ3bSx3bTg2NTAtcGxsLWNsb2NrIjsKKwljbG9ja3MgPSA8JnJlZjI1PjsKKwlyZWcgPSA8MHgyMDA+OworfTsKKworc2RoYzogc2RoYyB7CisJI2Nsb2NrLWNlbGxzID0gPDA+OworCWNvbXBhdGlibGUgPSAidmlhLHZ0ODUwMC1kZXZpY2UtY2xvY2siOworCWNsb2NrcyA9IDwmcGxsYj47CisJZGl2aXNvci1yZWcgPSA8MHgzMjg+OworCWRpdmlzb3ItbWFzayA9IDwweDNmPjsKKwllbmFibGUtcmVnID0gPDB4MjU0PjsKKwllbmFibGUtYml0ID0gPDE4PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2sveGdlbmUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3hnZW5lLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzRlZjc3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3hnZW5lLnR4dApAQCAtMCwwICsxLDExMSBAQAorRGV2aWNlIFRyZWUgQ2xvY2sgYmluZGluZ3MgZm9yIEFQTSBYLUdlbmUKKworVGhpcyBiaW5kaW5nIHVzZXMgdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nWzFdLgorCitbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hhbGwgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisJImFwbSx4Z2VuZS1zb2NwbGwtY2xvY2siIC0gZm9yIGEgWC1HZW5lIFNvQyBQTEwgY2xvY2sKKwkiYXBtLHhnZW5lLXBjcHBsbC1jbG9jayIgLSBmb3IgYSBYLUdlbmUgUENQIFBMTCBjbG9jaworCSJhcG0seGdlbmUtZGV2aWNlLWNsb2NrIiAtIGZvciBhIFgtR2VuZSBkZXZpY2UgY2xvY2sKKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgU29DIG9yIFBDUCBQTEwgY2xvY2tzOgorLSByZWcgOiBzaGFsbCBiZSB0aGUgcGh5c2ljYWwgUExMIHJlZ2lzdGVyIGFkZHJlc3MgZm9yIHRoZSBwbGwgY2xvY2suCistIGNsb2NrcyA6IHNoYWxsIGJlIHRoZSBpbnB1dCBwYXJlbnQgY2xvY2sgcGhhbmRsZSBmb3IgdGhlIGNsb2NrLiBUaGlzIHNob3VsZAorCWJlIHRoZSByZWZlcmVuY2UgY2xvY2suCistICNjbG9jay1jZWxscyA6IHNoYWxsIGJlIHNldCB0byAxLgorLSBjbG9jay1vdXRwdXQtbmFtZXMgOiBzaGFsbCBiZSB0aGUgbmFtZSBvZiB0aGUgUExMIHJlZmVyZW5jZWQgYnkgZGVyaXZlCisgIGNsb2NrLgorT3B0aW9uYWwgcHJvcGVydGllcyBmb3IgUExMIGNsb2NrczoKKy0gY2xvY2stbmFtZXMgOiBzaGFsbCBiZSB0aGUgbmFtZSBvZiB0aGUgUExMLiBJZiBtaXNzaW5nLCB1c2UgdGhlIGRldmljZSBuYW1lLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBkZXZpY2UgY2xvY2tzOgorLSByZWcgOiBzaGFsbCBiZSBhIGxpc3Qgb2YgYWRkcmVzcyBhbmQgbGVuZ3RoIHBhaXJzIGRlc2NyaWJpbmcgdGhlIENTUgorICAgICAgICAgcmVzZXQgYW5kL29yIHRoZSBkaXZpZGVyLiBFaXRoZXIgbWF5IGJlIG9taXR0ZWQsIGJ1dCBhdCBsZWFzdAorICAgICAgICAgb25lIG11c3QgYmUgcHJlc2VudC4KKyAtIHJlZy1uYW1lcyA6IHNoYWxsIGJlIGEgc3RyaW5nIGxpc3QgZGVzY3JpYmluZyB0aGUgcmVnIHJlc291cmNlLiBUaGlzCisgICAgICAgICAgICAgICBtYXkgaW5jbHVkZSAiY3NyLXJlZyIgYW5kL29yICJkaXYtcmVnIi4gSWYgdGhpcyBwcm9wZXJ0eQorICAgICAgICAgICAgICAgaXMgbm90IHByZXNlbnQsIHRoZSByZWcgcHJvcGVydHkgaXMgYXNzdW1lZCB0byBkZXNjcmliZQorICAgICAgICAgICAgICAgb25seSAiY3NyLXJlZyIuCistIGNsb2NrcyA6IHNoYWxsIGJlIHRoZSBpbnB1dCBwYXJlbnQgY2xvY2sgcGhhbmRsZSBmb3IgdGhlIGNsb2NrLgorLSAjY2xvY2stY2VsbHMgOiBzaGFsbCBiZSBzZXQgdG8gMS4KKy0gY2xvY2stb3V0cHV0LW5hbWVzIDogc2hhbGwgYmUgdGhlIG5hbWUgb2YgdGhlIGRldmljZSByZWZlcmVuY2VkLgorT3B0aW9uYWwgcHJvcGVydGllcyBmb3IgZGV2aWNlIGNsb2NrczoKKy0gY2xvY2stbmFtZXMgOiBzaGFsbCBiZSB0aGUgbmFtZSBvZiB0aGUgZGV2aWNlIGNsb2NrLiBJZiBtaXNzaW5nLCB1c2UgdGhlCisgICAgICAgICAgICAgICAgZGV2aWNlIG5hbWUuCistIGNzci1vZmZzZXQgOiBPZmZzZXQgdG8gdGhlIENTUiByZXNldCByZWdpc3RlciBmcm9tIHRoZSByZXNldCBhZGRyZXNzIGJhc2UuCisgICAgICAgICAgICAgICBEZWZhdWx0IGlzIDAuCistIGNzci1tYXNrIDogQ1NSIHJlc2V0IG1hc2sgYml0LiBEZWZhdWx0IGlzIDB4Ri4KKy0gZW5hYmxlLW9mZnNldCA6IE9mZnNldCB0byB0aGUgZW5hYmxlIHJlZ2lzdGVyIGZyb20gdGhlIHJlc2V0IGFkZHJlc3MgYmFzZS4KKyAgICAgICAgICAgICAgICAgIERlZmF1bHQgaXMgMHg4LgorLSBlbmFibGUtbWFzayA6IENTUiBlbmFibGUgbWFzayBiaXQuIERlZmF1bHQgaXMgMHhGLgorLSBkaXZpZGVyLW9mZnNldCA6IE9mZnNldCB0byB0aGUgZGl2aWRlciBDU1IgcmVnaXN0ZXIgZnJvbSB0aGUgZGl2aWRlciBiYXNlLgorICAgICAgICAgICAgICAgICAgIERlZmF1bHQgaXMgMHgwLgorLSBkaXZpZGVyLXdpZHRoIDogV2lkdGggb2YgdGhlIGRpdmlkZXIgcmVnaXN0ZXIuIERlZmF1bHQgaXMgMC4KKy0gZGl2aWRlci1zaGlmdCA6IEJpdCBzaGlmdCBvZiB0aGUgZGl2aWRlciByZWdpc3Rlci4gRGVmYXVsdCBpcyAwLgorCitGb3IgZXhhbXBsZToKKworCXBjcHBsbDogcGNwcGxsQDE3MDAwMTAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcG0seGdlbmUtcGNwcGxsLWNsb2NrIjsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQljbG9ja3MgPSA8JnJlZmNsayAwPjsKKwkJY2xvY2stbmFtZXMgPSAicGNwcGxsIjsKKwkJcmVnID0gPDB4MCAweDE3MDAwMTAwIDB4MCAweDEwMDA+OworCQljbG9jay1vdXRwdXQtbmFtZXMgPSAicGNwcGxsIjsKKwkJdHlwZSA9IDwwPjsKKwl9OworCisJc29jcGxsOiBzb2NwbGxAMTcwMDAxMjAgeworCQljb21wYXRpYmxlID0gImFwbSx4Z2VuZS1zb2NwbGwtY2xvY2siOworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJCWNsb2NrcyA9IDwmcmVmY2xrIDA+OworCQljbG9jay1uYW1lcyA9ICJzb2NwbGwiOworCQlyZWcgPSA8MHgwIDB4MTcwMDAxMjAgMHgwIDB4MTAwMD47CisJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJzb2NwbGwiOworCQl0eXBlID0gPDE+OworCX07CisKKwlxbWxjbGs6IHFtbGNsayB7CisJCWNvbXBhdGlibGUgPSAiYXBtLHhnZW5lLWRldmljZS1jbG9jayI7CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKwkJY2xvY2tzID0gPCZzb2NwbGxkaXYyIDA+OworCQljbG9jay1uYW1lcyA9ICJxbWxjbGsiOworCQlyZWcgPSA8MHgwIDB4MTcwM0MwMDAgMHgwIDB4MTAwMD47CisJCXJlZy1uYW1lID0gImNzci1yZWciOworCQljbG9jay1vdXRwdXQtbmFtZXMgPSAicW1sY2xrIjsKKwl9OworCisJZXRoY2xrOiBldGhjbGsgeworCQljb21wYXRpYmxlID0gImFwbSx4Z2VuZS1kZXZpY2UtY2xvY2siOworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJCWNsb2NrcyA9IDwmc29jcGxsZGl2MiAwPjsKKwkJY2xvY2stbmFtZXMgPSAiZXRoY2xrIjsKKwkJcmVnID0gPDB4MCAweDE3MDAwMDAwIDB4MCAweDEwMDA+OworCQlyZWctbmFtZXMgPSAiZGl2LXJlZyI7CisJCWRpdmlkZXItb2Zmc2V0ID0gPDB4MjM4PjsKKwkJZGl2aWRlci13aWR0aCA9IDwweDk+OworCQlkaXZpZGVyLXNoaWZ0ID0gPDB4MD47CisJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJldGhjbGsiOworCX07CisKKwlhcGJjbGs6IGFwYmNsayB7CisJCWNvbXBhdGlibGUgPSAiYXBtLHhnZW5lLWRldmljZS1jbG9jayI7CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKwkJY2xvY2tzID0gPCZhaGJjbGsgMD47CisJCWNsb2NrLW5hbWVzID0gImFwYmNsayI7CisJCXJlZyA9IDwweDAgMHgxRjJBQzAwMCAweDAgMHgxMDAwCisJCQkweDAgMHgxRjJBQzAwMCAweDAgMHgxMDAwPjsKKwkJcmVnLW5hbWVzID0gImNzci1yZWciLCAiZGl2LXJlZyI7CisJCWNzci1vZmZzZXQgPSA8MHgwPjsKKwkJY3NyLW1hc2sgPSA8MHgyMDA+OworCQllbmFibGUtb2Zmc2V0ID0gPDB4OD47CisJCWVuYWJsZS1tYXNrID0gPDB4MjAwPjsKKwkJZGl2aWRlci1vZmZzZXQgPSA8MHgxMD47CisJCWRpdmlkZXItd2lkdGggPSA8MHgyPjsKKwkJZGl2aWRlci1zaGlmdCA9IDwweDA+OworCQlmbGFncyA9IDwweDg+OworCQljbG9jay1vdXRwdXQtbmFtZXMgPSAiYXBiY2xrIjsKKwl9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svengyOTY3MDItY2xrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay96eDI5NjcwMi1jbGsudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MDQ0MmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svengyOTY3MDItY2xrLnR4dApAQCAtMCwwICsxLDM1IEBACitEZXZpY2UgVHJlZSBDbG9jayBiaW5kaW5ncyBmb3IgWlRFIHp4Mjk2NzAyCisKK1RoaXMgYmluZGluZyB1c2VzIHRoZSBjb21tb24gY2xvY2sgYmluZGluZ1sxXS4KKworWzFdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNoYWxsIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCSJ6dGUsengyOTY3MDItdG9wY3JtLWNsayI6CisJCXp4Mjk2NzAyIHRvcCBjbG9jayBzZWxlY3Rpb24sIGRpdmlkZXIgYW5kIGdhdGluZworCisJInp0ZSx6eDI5NjcwMi1sc3AwY3JwbS1jbGsiIGFuZAorCSJ6dGUsengyOTY3MDItbHNwMWNycG0tY2xrIjoKKwkJengyOTY3MDIgZGV2aWNlIGxldmVsIGNsb2NrIHNlbGVjdGlvbiBhbmQgZ2F0aW5nCisKKy0gcmVnOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldAorCitUaGUgY2xvY2sgY29uc3VtZXIgc2hvdWxkIHNwZWNpZnkgdGhlIGRlc2lyZWQgY2xvY2sgYnkgaGF2aW5nIHRoZSBjbG9jaworSUQgaW4gaXRzICJjbG9ja3MiIHBoYW5kbGUgY2VsbC4gU2VlIGluY2x1ZGUvZHQtYmluZGluZ3MvY2xvY2svengyOTY3MDItY2xvY2suaAorZm9yIHRoZSBmdWxsIGxpc3Qgb2YgengyOTY3MDIgY2xvY2sgSURzLgorCisKK3RvcGNsazogdG9wY3JtQDB4MDk4MDAwMDAgeworICAgICAgICBjb21wYXRpYmxlID0gInp0ZSx6eDI5NjcwMi10b3Bjcm0tY2xrIjsKKyAgICAgICAgcmVnID0gPDB4MDk4MDAwMDAgMHgxMDAwPjsKKyAgICAgICAgI2Nsb2NrLWNlbGxzID0gPDE+OworfTsKKwordWFydDA6IHNlcmlhbEAweDA5NDA1MDAwIHsKKyAgICAgICAgY29tcGF0aWJsZSA9ICJ6dGUsengyOTY3MDItdWFydCI7CisgICAgICAgIHJlZyA9IDwweDA5NDA1MDAwIDB4MTAwMD47CisgICAgICAgIGludGVycnVwdHMgPSA8R0lDX1NQSSAzNyBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKyAgICAgICAgY2xvY2tzID0gPCZsc3AxY2xrIFpYMjk2NzAyX1VBUlQwX1BDTEs+OworICAgICAgICBzdGF0dXMgPSAiZGlzYWJsZWQiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay96eW5xLTcwMDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3p5bnEtNzAwMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkzNzQ2YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay96eW5xLTcwMDAudHh0CkBAIC0wLDAgKzEsMTEwIEBACitEZXZpY2UgVHJlZSBDbG9jayBiaW5kaW5ncyBmb3IgdGhlIFp5bnEgNzAwMCBFUFAKKworVGhlIFp5bnEgRVBQIGhhcyBzZXZlcmFsIGRpZmZlcmVudCBjbGsgcHJvdmlkZXJzLCBlYWNoIHdpdGggdGhlcmUgb3duIGJpbmRpbmdzLgorVGhlIHB1cnBvc2Ugb2YgdGhpcyBkb2N1bWVudCBpcyB0byBkb2N1bWVudCB0aGVpciB1c2FnZS4KKworU2VlIGNsb2NrX2JpbmRpbmdzLnR4dCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgZ2VuZXJpYyBjbG9jayBiaW5kaW5ncy4KK1NlZSBDaGFwdGVyIDI1IG9mIFp5bnEgVFJNIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFp5bnEgY2xvY2tzLgorCis9PSBDbG9jayBDb250cm9sbGVyID09CitUaGUgY2xvY2sgY29udHJvbGxlciBpcyBhIGxvZ2ljYWwgYWJzdHJhY3Rpb24gb2YgWnlucSdzIGNsb2NrIHRyZWUuIEl0IHJlYWRzCityZXF1aXJlZCBpbnB1dCBjbG9jayBmcmVxdWVuY2llcyBmcm9tIHRoZSBkZXZpY2V0cmVlIGFuZCBhY3RzIGFzIGNsb2NrIHByb3ZpZGVyCitmb3IgYWxsIGNsb2NrIGNvbnN1bWVycyBvZiBQUyBjbG9ja3MuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSAjY2xvY2stY2VsbHMgOiBNdXN0IGJlIDEKKyAtIGNvbXBhdGlibGUgOiAieGxueCxwczctY2xrYyIKKyAtIHJlZyA6IFNMQ1Igb2Zmc2V0IGFuZCBzaXplIHRha2VuIHZpYSBzeXNjb24gPCAweDEwMCAweDEwMCA+CisgLSBwcy1jbGstZnJlcXVlbmN5IDogRnJlcXVlbmN5IG9mIHRoZSBvc2NpbGxhdG9yIHByb3ZpZGluZyBwc19jbGsgaW4gSFoKKwkJICAgICAgKHVzdWFsbHkgMzMgTUh6IG9zY2lsbGF0b3JzIGFyZSB1c2VkIGZvciBaeW5xIHBsYXRmb3JtcykKKyAtIGNsb2NrLW91dHB1dC1uYW1lcyA6IExpc3Qgb2Ygc3RyaW5ncyB1c2VkIHRvIG5hbWUgdGhlIGNsb2NrIG91dHB1dHMuIFNoYWxsIGJlCisJCQlhIGxpc3Qgb2YgdGhlIG91dHB1dHMgZ2l2ZW4gYmVsb3cuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgLSBjbG9ja3MgOiBhcyBkZXNjcmliZWQgaW4gdGhlIGNsb2NrIGJpbmRpbmdzCisgLSBjbG9jay1uYW1lcyA6IGFzIGRlc2NyaWJlZCBpbiB0aGUgY2xvY2sgYmluZGluZ3MKKyAtIGZjbGstZW5hYmxlIDogQml0IG1hc2sgdG8gZW5hYmxlIEZDTEtzIHN0YXRpY2FsbHkgYXQgYm9vdCB0aW1lLgorCQkgQml0IFswLi4zXSBjb3JyZXNwb25kIHRvIEZDTEswLi5GQ0xLMy4gVGhlIGNvcnJlc3BvbmRpbmcKKwkJIEZDTEsgd2lsbCBvbmx5IGJlIGVuYWJsZWQgaWYgaXQgaXMgYWN0dWFsbHkgcnVubmluZyBhdAorCQkgYm9vdCB0aW1lLgorCitDbG9jayBpbnB1dHM6CitUaGUgZm9sbG93aW5nIHN0cmluZ3MgYXJlIG9wdGlvbmFsIHBhcmFtZXRlcnMgdG8gdGhlICdjbG9jay1uYW1lcycgcHJvcGVydHkgaW4KK29yZGVyIHRvIHByb3ZpZGUgYW4gb3B0aW9uYWwgKEUpTUlPIGNsb2NrIHNvdXJjZS4KKyAtIHN3ZHRfZXh0X2NsaworIC0gZ2VtMF9lbWlvX2NsaworIC0gZ2VtMV9lbWlvX2NsaworIC0gbWlvX2Nsa19YWAkJIyB3aXRoIFhYID0gMDAuLjUzCisuLi4KKworQ2xvY2sgb3V0cHV0czoKKyAwOiAgYXJtcGxsCisgMTogIGRkcnBsbAorIDI6ICBpb3BsbAorIDM6ICBjcHVfNm9yNHgKKyA0OiAgY3B1XzNvcjJ4CisgNTogIGNwdV8yeAorIDY6ICBjcHVfMXgKKyA3OiAgZGRyMngKKyA4OiAgZGRyM3gKKyA5OiAgZGNpCisgMTA6IGxxc3BpCisgMTE6IHNtYworIDEyOiBwY2FwCisgMTM6IGdlbTAKKyAxNDogZ2VtMQorIDE1OiBmY2xrMAorIDE2OiBmY2xrMQorIDE3OiBmY2xrMgorIDE4OiBmY2xrMworIDE5OiBjYW4wCisgMjA6IGNhbjEKKyAyMTogc2RpbzAKKyAyMjogc2RpbzEKKyAyMzogdWFydDAKKyAyNDogdWFydDEKKyAyNTogc3BpMAorIDI2OiBzcGkxCisgMjc6IGRtYQorIDI4OiB1c2IwX2FwZXIKKyAyOTogdXNiMV9hcGVyCisgMzA6IGdlbTBfYXBlcgorIDMxOiBnZW0xX2FwZXIKKyAzMjogc2RpbzBfYXBlcgorIDMzOiBzZGlvMV9hcGVyCisgMzQ6IHNwaTBfYXBlcgorIDM1OiBzcGkxX2FwZXIKKyAzNjogY2FuMF9hcGVyCisgMzc6IGNhbjFfYXBlcgorIDM4OiBpMmMwX2FwZXIKKyAzOTogaTJjMV9hcGVyCisgNDA6IHVhcnQwX2FwZXIKKyA0MTogdWFydDFfYXBlcgorIDQyOiBncGlvX2FwZXIKKyA0MzogbHFzcGlfYXBlcgorIDQ0OiBzbWNfYXBlcgorIDQ1OiBzd2R0CisgNDY6IGRiZ190cmMKKyA0NzogZGJnX2FwYgorCitFeGFtcGxlOgorCWNsa2M6IGNsa2NAMTAwIHsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQljb21wYXRpYmxlID0gInhsbngscHM3LWNsa2MiOworCQlwcy1jbGstZnJlcXVlbmN5ID0gPDMzMzMzMzMzPjsKKwkJcmVnID0gPDB4MTAwIDB4MTAwPjsKKwkJY2xvY2stb3V0cHV0LW5hbWVzID0gImFybXBsbCIsICJkZHJwbGwiLCAiaW9wbGwiLCAiY3B1XzZvcjR4IiwKKwkJCQkiY3B1XzNvcjJ4IiwgImNwdV8yeCIsICJjcHVfMXgiLCAiZGRyMngiLCAiZGRyM3giLAorCQkJCSJkY2kiLCAibHFzcGkiLCAic21jIiwgInBjYXAiLCAiZ2VtMCIsICJnZW0xIiwKKwkJCQkiZmNsazAiLCAiZmNsazEiLCAiZmNsazIiLCAiZmNsazMiLCAiY2FuMCIsICJjYW4xIiwKKwkJCQkic2RpbzAiLCAic2RpbzEiLCAidWFydDAiLCAidWFydDEiLCAic3BpMCIsICJzcGkxIiwKKwkJCQkiZG1hIiwgInVzYjBfYXBlciIsICJ1c2IxX2FwZXIiLCAiZ2VtMF9hcGVyIiwKKwkJCQkiZ2VtMV9hcGVyIiwgInNkaW8wX2FwZXIiLCAic2RpbzFfYXBlciIsCisJCQkJInNwaTBfYXBlciIsICJzcGkxX2FwZXIiLCAiY2FuMF9hcGVyIiwgImNhbjFfYXBlciIsCisJCQkJImkyYzBfYXBlciIsICJpMmMxX2FwZXIiLCAidWFydDBfYXBlciIsICJ1YXJ0MV9hcGVyIiwKKwkJCQkiZ3Bpb19hcGVyIiwgImxxc3BpX2FwZXIiLCAic21jX2FwZXIiLCAic3dkdCIsCisJCQkJImRiZ190cmMiLCAiZGJnX2FwYiI7CisJCSMgb3B0aW9uYWwgcHJvcHMKKwkJY2xvY2tzID0gPCZjbGtjIDE2PiwgPCZjbGtfZm9vPjsKKwkJY2xvY2stbmFtZXMgPSAiZ2VtMV9lbWlvX2NsayIsICJjYW5fbWlvX2Nsa18yMyI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jb21tb24tcHJvcGVydGllcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY29tbW9uLXByb3BlcnRpZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxOTM5NzkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY29tbW9uLXByb3BlcnRpZXMudHh0CkBAIC0wLDAgKzEsNjAgQEAKK0NvbW1vbiBwcm9wZXJ0aWVzCisKK1RoZSBlUEFQUiBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGRlZmluZSBhbnkgcHJvcGVydGllcyByZWxhdGVkIHRvIGhhcmR3YXJlCitieXRlc3dhcHBpbmcsIGJ1dCBlbmRpYW5uZXNzIGlzc3VlcyBzaG93IHVwIGZyZXF1ZW50bHkgaW4gcG9ydGluZyBMaW51eCB0bworZGlmZmVyZW50IG1hY2hpbmUgdHlwZXMuICBUaGlzIGRvY3VtZW50IGF0dGVtcHRzIHRvIHByb3ZpZGUgYSBjb25zaXN0ZW50Cit3YXkgb2YgaGFuZGxpbmcgYnl0ZXN3YXBwaW5nIGFjcm9zcyBkcml2ZXJzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorIC0gYmlnLWVuZGlhbjogQm9vbGVhbjsgZm9yY2UgYmlnIGVuZGlhbiByZWdpc3RlciBhY2Nlc3NlcworICAgdW5jb25kaXRpb25hbGx5IChlLmcuIGlvcmVhZDMyYmUvaW93cml0ZTMyYmUpLiAgVXNlIHRoaXMgaWYgeW91CisgICBrbm93IHRoZSBwZXJpcGhlcmFsIGFsd2F5cyBuZWVkcyB0byBiZSBhY2Nlc3NlZCBpbiBCRSBtb2RlLgorIC0gbGl0dGxlLWVuZGlhbjogQm9vbGVhbjsgZm9yY2UgbGl0dGxlIGVuZGlhbiByZWdpc3RlciBhY2Nlc3NlcworICAgdW5jb25kaXRpb25hbGx5IChlLmcuIHJlYWRsL3dyaXRlbCkuICBVc2UgdGhpcyBpZiB5b3Uga25vdyB0aGUKKyAgIHBlcmlwaGVyYWwgYWx3YXlzIG5lZWRzIHRvIGJlIGFjY2Vzc2VkIGluIExFIG1vZGUuCisgLSBuYXRpdmUtZW5kaWFuOiBCb29sZWFuOyBhbHdheXMgdXNlIHJlZ2lzdGVyIGFjY2Vzc2VzIG1hdGNoZWQgdG8gdGhlCisgICBlbmRpYW5uZXNzIG9mIHRoZSBrZXJuZWwgYmluYXJ5IChlLmcuIExFIHZtbGludXggLT4gcmVhZGwvd3JpdGVsLAorICAgQkUgdm1saW51eCAtPiBpb3JlYWQzMmJlL2lvd3JpdGUzMmJlKS4gIEluIHRoaXMgY2FzZSBubyBieXRlc3dhcHMKKyAgIHdpbGwgZXZlciBiZSBwZXJmb3JtZWQuICBVc2UgdGhpcyBpZiB0aGUgaGFyZHdhcmUgInNlbGYtYWRqdXN0cyIKKyAgIHJlZ2lzdGVyIGVuZGlhbm5lc3MgYmFzZWQgb24gdGhlIENQVSdzIGNvbmZpZ3VyZWQgZW5kaWFubmVzcy4KKworSWYgYSBiaW5kaW5nIHN1cHBvcnRzIHRoZXNlIHByb3BlcnRpZXMsIHRoZW4gdGhlIGJpbmRpbmcgc2hvdWxkIGFsc28KK3NwZWNpZnkgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaWYgbm9uZSBvZiB0aGVzZSBwcm9wZXJ0aWVzIGFyZSBwcmVzZW50LgorSW4gc3VjaCBjYXNlcywgbGl0dGxlLWVuZGlhbiBpcyB0aGUgcHJlZmVycmVkIGRlZmF1bHQsIGJ1dCBpdCBpcyBub3QKK2EgcmVxdWlyZW1lbnQuICBUaGUgb2ZfZGV2aWNlX2lzX2JpZ19lbmRpYW4oKSBhbmQgb2ZfZmR0X2lzX2JpZ19lbmRpYW4oKQoraGVscGVyIGZ1bmN0aW9ucyBkbyBhc3N1bWUgdGhhdCBsaXR0bGUtZW5kaWFuIGlzIHRoZSBkZWZhdWx0LCBiZWNhdXNlCittb3N0IGV4aXN0aW5nIChQQ0ktYmFzZWQpIGRyaXZlcnMgaW1wbGljaXRseSBkZWZhdWx0IHRvIExFIGJ5IHVzaW5nCityZWFkbC93cml0ZWwgZm9yIE1NSU8gYWNjZXNzZXMuCisKK0V4YW1wbGVzOgorU2NlbmFyaW8gMSA6IENQVSBpbiBMRSBtb2RlICYgZGV2aWNlIGluIExFIG1vZGUuCitkZXY6IGRldkA0MDAzMTAwMCB7CisJICAgICAgY29tcGF0aWJsZSA9ICJuYW1lIjsKKwkgICAgICByZWcgPSA8MHg0MDAzMTAwMCAweDEwMDA+OworCSAgICAgIC4uLgorCSAgICAgIG5hdGl2ZS1lbmRpYW47Cit9OworCitTY2VuYXJpbyAyIDogQ1BVIGluIExFIG1vZGUgJiBkZXZpY2UgaW4gQkUgbW9kZS4KK2RldjogZGV2QDQwMDMxMDAwIHsKKwkgICAgICBjb21wYXRpYmxlID0gIm5hbWUiOworCSAgICAgIHJlZyA9IDwweDQwMDMxMDAwIDB4MTAwMD47CisJICAgICAgLi4uCisJICAgICAgYmlnLWVuZGlhbjsKK307CisKK1NjZW5hcmlvIDMgOiBDUFUgaW4gQkUgbW9kZSAmIGRldmljZSBpbiBCRSBtb2RlLgorZGV2OiBkZXZANDAwMzEwMDAgeworCSAgICAgIGNvbXBhdGlibGUgPSAibmFtZSI7CisJICAgICAgcmVnID0gPDB4NDAwMzEwMDAgMHgxMDAwPjsKKwkgICAgICAuLi4KKwkgICAgICBuYXRpdmUtZW5kaWFuOworfTsKKworU2NlbmFyaW8gNCA6IENQVSBpbiBCRSBtb2RlICYgZGV2aWNlIGluIExFIG1vZGUuCitkZXY6IGRldkA0MDAzMTAwMCB7CisJICAgICAgY29tcGF0aWJsZSA9ICJuYW1lIjsKKwkgICAgICByZWcgPSA8MHg0MDAzMTAwMCAweDEwMDA+OworCSAgICAgIC4uLgorCSAgICAgIGxpdHRsZS1lbmRpYW47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NwdWZyZXEvYXJtX2JpZ19saXR0bGVfZHQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NwdWZyZXEvYXJtX2JpZ19saXR0bGVfZHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MTU2OTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3B1ZnJlcS9hcm1fYmlnX2xpdHRsZV9kdC50eHQKQEAgLTAsMCArMSw2NSBAQAorR2VuZXJpYyBBUk0gYmlnIExJVFRMRSBjcHVmcmVxIGRyaXZlcidzIERUIGdsdWUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgaXMgRFQgc3BlY2lmaWMgZ2x1ZSBsYXllciBmb3IgZ2VuZXJpYyBjcHVmcmVxIGRyaXZlciBmb3IgYmlnIExJVFRMRQorc3lzdGVtcy4KKworQm90aCByZXF1aXJlZCBhbmQgb3B0aW9uYWwgcHJvcGVydGllcyBsaXN0ZWQgYmVsb3cgbXVzdCBiZSBkZWZpbmVkCit1bmRlciBub2RlIC9jcHVzL2NwdUB4LiBXaGVyZSB4IGlzIHRoZSBmaXJzdCBjcHUgaW5zaWRlIGEgY2x1c3Rlci4KKworRklYTUU6IENwdXMgc2hvdWxkIGJvb3QgaW4gdGhlIG9yZGVyIHNwZWNpZmllZCBpbiBEVCBhbmQgYWxsIGNwdXMgZm9yIGEgY2x1c3RlcgorbXVzdCBiZSBwcmVzZW50IGNvbnRpZ3VvdXNseS4gR2VuZXJpYyBEVCBkcml2ZXIgd2lsbCBjaGVjayBvbmx5IG5vZGUgJ3gnIGZvcgorY3B1OnguCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIG9wZXJhdGluZy1wb2ludHM6IFJlZmVyIHRvIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9vcHAudHh0CisgIGZvciBkZXRhaWxzCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrLWxhdGVuY3k6IFNwZWNpZnkgdGhlIHBvc3NpYmxlIG1heGltdW0gdHJhbnNpdGlvbiBsYXRlbmN5IGZvciBjbG9jaywKKyAgaW4gdW5pdCBvZiBuYW5vc2Vjb25kcy4KKworRXhhbXBsZXM6CisKK2NwdXMgeworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDA+OworCisJY3B1QDAgeworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTE1IjsKKwkJcmVnID0gPDA+OworCQluZXh0LWxldmVsLWNhY2hlID0gPCZMMj47CisJCW9wZXJhdGluZy1wb2ludHMgPSA8CisJCQkvKiBrSHogICAgdVYgKi8KKwkJCTc5MjAwMCAgMTEwMDAwMAorCQkJMzk2MDAwICA5NTAwMDAKKwkJCTE5ODAwMCAgODUwMDAwCisJCT47CisJCWNsb2NrLWxhdGVuY3kgPSA8NjEwMzY+OyAvKiB0d28gQ0xLMzIgcGVyaW9kcyAqLworCX07CisKKwljcHVAMSB7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hMTUiOworCQlyZWcgPSA8MT47CisJCW5leHQtbGV2ZWwtY2FjaGUgPSA8JkwyPjsKKwl9OworCisJY3B1QDEwMCB7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNyI7CisJCXJlZyA9IDwxMDA+OworCQluZXh0LWxldmVsLWNhY2hlID0gPCZMMj47CisJCW9wZXJhdGluZy1wb2ludHMgPSA8CisJCQkvKiBrSHogICAgdVYgKi8KKwkJCTc5MjAwMCAgOTUwMDAwCisJCQkzOTYwMDAgIDc1MDAwMAorCQkJMTk4MDAwICA0NTAwMDAKKwkJPjsKKwkJY2xvY2stbGF0ZW5jeSA9IDw2MTAzNj47IC8qIHR3byBDTEszMiBwZXJpb2RzICovCisJfTsKKworCWNwdUAxMDEgeworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTciOworCQlyZWcgPSA8MTAxPjsKKwkJbmV4dC1sZXZlbC1jYWNoZSA9IDwmTDI+OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NwdWZyZXEvY3B1ZnJlcS1kdC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3B1ZnJlcS9jcHVmcmVxLWR0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDFjOThmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NwdWZyZXEvY3B1ZnJlcS1kdC50eHQKQEAgLTAsMCArMSw2NCBAQAorR2VuZXJpYyBjcHVmcmVxIGRyaXZlcgorCitJdCBpcyBhIGdlbmVyaWMgRFQgYmFzZWQgY3B1ZnJlcSBkcml2ZXIgZm9yIGZyZXF1ZW5jeSBtYW5hZ2VtZW50LiAgSXQgc3VwcG9ydHMKK2JvdGggdW5pcHJvY2Vzc29yIChVUCkgYW5kIHN5bW1ldHJpYyBtdWx0aXByb2Nlc3NvciAoU01QKSBzeXN0ZW1zIHdoaWNoIHNoYXJlCitjbG9jayBhbmQgdm9sdGFnZSBhY3Jvc3MgYWxsIENQVXMuCisKK0JvdGggcmVxdWlyZWQgYW5kIG9wdGlvbmFsIHByb3BlcnRpZXMgbGlzdGVkIGJlbG93IG11c3QgYmUgZGVmaW5lZAordW5kZXIgbm9kZSAvY3B1cy9jcHVAMC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gTm9uZQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBvcGVyYXRpbmctcG9pbnRzOiBSZWZlciB0byBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvb3BwLnR4dCBmb3IKKyAgZGV0YWlscy4gT1BQcyAqbXVzdCogYmUgc3VwcGxpZWQgZWl0aGVyIHZpYSBEVCwgaS5lLiB0aGlzIHByb3BlcnR5LCBvcgorICBwb3B1bGF0ZWQgYXQgcnVudGltZS4KKy0gY2xvY2stbGF0ZW5jeTogU3BlY2lmeSB0aGUgcG9zc2libGUgbWF4aW11bSB0cmFuc2l0aW9uIGxhdGVuY3kgZm9yIGNsb2NrLAorICBpbiB1bml0IG9mIG5hbm9zZWNvbmRzLgorLSB2b2x0YWdlLXRvbGVyYW5jZTogU3BlY2lmeSB0aGUgQ1BVIHZvbHRhZ2UgdG9sZXJhbmNlIGluIHBlcmNlbnRhZ2UuCistICNjb29saW5nLWNlbGxzOgorLSBjb29saW5nLW1pbi1sZXZlbDoKKy0gY29vbGluZy1tYXgtbGV2ZWw6CisgICAgIFBsZWFzZSByZWZlciB0byBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGhlcm1hbC90aGVybWFsLnR4dC4KKworRXhhbXBsZXM6CisKK2NwdXMgeworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDA+OworCisJY3B1QDAgeworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTkiOworCQlyZWcgPSA8MD47CisJCW5leHQtbGV2ZWwtY2FjaGUgPSA8JkwyPjsKKwkJb3BlcmF0aW5nLXBvaW50cyA9IDwKKwkJCS8qIGtIeiAgICB1ViAqLworCQkJNzkyMDAwICAxMTAwMDAwCisJCQkzOTYwMDAgIDk1MDAwMAorCQkJMTk4MDAwICA4NTAwMDAKKwkJPjsKKwkJY2xvY2stbGF0ZW5jeSA9IDw2MTAzNj47IC8qIHR3byBDTEszMiBwZXJpb2RzICovCisJCSNjb29saW5nLWNlbGxzID0gPDI+OworCQljb29saW5nLW1pbi1sZXZlbCA9IDwwPjsKKwkJY29vbGluZy1tYXgtbGV2ZWwgPSA8Mj47CisJfTsKKworCWNwdUAxIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE5IjsKKwkJcmVnID0gPDE+OworCQluZXh0LWxldmVsLWNhY2hlID0gPCZMMj47CisJfTsKKworCWNwdUAyIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE5IjsKKwkJcmVnID0gPDI+OworCQluZXh0LWxldmVsLWNhY2hlID0gPCZMMj47CisJfTsKKworCWNwdUAzIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE5IjsKKwkJcmVnID0gPDM+OworCQluZXh0LWxldmVsLWNhY2hlID0gPCZMMj47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3B1ZnJlcS9jcHVmcmVxLWV4eW5vczU0NDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NwdWZyZXEvY3B1ZnJlcS1leHlub3M1NDQwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWZmMWE1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NwdWZyZXEvY3B1ZnJlcS1leHlub3M1NDQwLnR4dApAQCAtMCwwICsxLDI4IEBACisKK0V4eW5vczU0NDAgY3B1ZnJlcSBkcml2ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworRXh5bm9zNTQ0MCBTb0MgY3B1ZnJlcSBkcml2ZXIgZm9yIENQVSBmcmVxdWVuY3kgc2NhbGluZy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gaW50ZXJydXB0czogSW50ZXJydXB0IHRvIGtub3cgdGhlIGNvbXBsZXRpb24gb2YgY3B1IGZyZXF1ZW5jeSBjaGFuZ2UuCistIG9wZXJhdGluZy1wb2ludHM6IFRhYmxlIG9mIGZyZXF1ZW5jaWVzIGFuZCB2b2x0YWdlIENQVSBjb3VsZCBiZSB0cmFuc2l0aW9uZWQgaW50bywKKwlpbiB0aGUgZGVjcmVhc2luZyBvcmRlci4gRnJlcXVlbmN5IHNob3VsZCBiZSBpbiBLSHogdW5pdHMgYW5kIHZvbHRhZ2UKKwlzaG91bGQgYmUgaW4gbWljcm92b2x0cy4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gY2xvY2stbGF0ZW5jeTogQ2xvY2sgbW9uaXRvciBsYXRlbmN5IGluIG1pY3Jvc2Vjb25kLgorCitBbGwgdGhlIHJlcXVpcmVkIGxpc3RlZCBhYm92ZSBtdXN0IGJlIGRlZmluZWQgdW5kZXIgbm9kZSBjcHVmcmVxLgorCitFeGFtcGxlOgorLS0tLS0tLS0KKwljcHVmcmVxQDE2MDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M1NDQwLWNwdWZyZXEiOworCQlyZWcgPSA8MHgxNjAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDU3IDA+OworCQlvcGVyYXRpbmctcG9pbnRzID0gPAorCQkJCTEwMDAwMDAgOTc1MDAwCisJCQkJODAwMDAwICA5MjUwMDA+OworCQljbG9jay1sYXRlbmN5ID0gPDEwMDAwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcHVmcmVxL2NwdWZyZXEtc3BlYXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NwdWZyZXEvY3B1ZnJlcS1zcGVhci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjNkNDQ5OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcHVmcmVxL2NwdWZyZXEtc3BlYXIudHh0CkBAIC0wLDAgKzEsNDIgQEAKK1NQRUFyIGNwdWZyZXEgZHJpdmVyCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NQRUFyIFNvQyBjcHVmcmVxIGRyaXZlciBmb3IgQ1BVIGZyZXF1ZW5jeSBzY2FsaW5nLgorSXQgc3VwcG9ydHMgYm90aCB1bmlwcm9jZXNzb3IgKFVQKSBhbmQgc3ltbWV0cmljIG11bHRpcHJvY2Vzc29yIChTTVApIHN5c3RlbXMKK3doaWNoIHNoYXJlIGNsb2NrIGFjcm9zcyBhbGwgQ1BVcy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY3B1ZnJlcV90Ymw6IFRhYmxlIG9mIGZyZXF1ZW5jaWVzIENQVSBjb3VsZCBiZSB0cmFuc2l0aW9uZWQgaW50bywgaW4gdGhlCisgIGluY3JlYXNpbmcgb3JkZXIuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrLWxhdGVuY3k6IFNwZWNpZnkgdGhlIHBvc3NpYmxlIG1heGltdW0gdHJhbnNpdGlvbiBsYXRlbmN5IGZvciBjbG9jaywgaW4KKyAgdW5pdCBvZiBuYW5vc2Vjb25kcy4KKworQm90aCByZXF1aXJlZCBhbmQgb3B0aW9uYWwgcHJvcGVydGllcyBsaXN0ZWQgYWJvdmUgbXVzdCBiZSBkZWZpbmVkIHVuZGVyIG5vZGUKKy9jcHVzL2NwdUAwLgorCitFeGFtcGxlczoKKy0tLS0tLS0tCitjcHVzIHsKKworCTwuLi4+CisKKwljcHVAMCB7CisJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hOSI7CisJCXJlZyA9IDwwPjsKKworCQk8Li4uPgorCisJCWNwdWZyZXFfdGJsID0gPCAxNjYwMDAKKwkJCQkyMDAwMDAKKwkJCQkyNTAwMDAKKwkJCQkzMDAwMDAKKwkJCQk0MDAwMDAKKwkJCQk1MDAwMDAKKwkJCQk2MDAwMDAgPjsKKwl9OworCisJPC4uLj4KKworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcHVmcmVxL3RlZ3JhMTI0LWNwdWZyZXEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NwdWZyZXEvdGVncmExMjQtY3B1ZnJlcS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjE2NjlmYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcHVmcmVxL3RlZ3JhMTI0LWNwdWZyZXEudHh0CkBAIC0wLDAgKzEsNDQgQEAKK1RlZ3JhMTI0IENQVSBmcmVxdWVuY3kgc2NhbGluZyBkcml2ZXIgYmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQm90aCByZXF1aXJlZCBhbmQgb3B0aW9uYWwgcHJvcGVydGllcyBsaXN0ZWQgYmVsb3cgbXVzdCBiZSBkZWZpbmVkCit1bmRlciBub2RlIC9jcHVzL2NwdUAwLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjbG9ja3M6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKyAgU2VlIC4uL2Nsb2Nrcy9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCistIGNsb2NrLW5hbWVzOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAtIGNwdV9nOiBDbG9jayBtdXggZm9yIHRoZSBmYXN0IENQVSBjbHVzdGVyLgorICAtIGNwdV9scDogQ2xvY2sgbXV4IGZvciB0aGUgbG93LXBvd2VyIENQVSBjbHVzdGVyLgorICAtIHBsbF94OiBGYXN0IFBMTCBjbG9ja3NvdXJjZS4KKyAgLSBwbGxfcDogQXV4aWxpYXJ5IFBMTCB1c2VkIGR1cmluZyBmYXN0IFBMTCByYXRlIGNoYW5nZXMuCisgIC0gZGZsbDogRmFzdCBERkxMIGNsb2Nrc291cmNlIHRoYXQgYWxzbyBhdXRvbWF0aWNhbGx5IHNjYWxlcyBDUFUgdm9sdGFnZS4KKy0gdmRkLWNwdS1zdXBwbHk6IFJlZ3VsYXRvciBmb3IgQ1BVIHZvbHRhZ2UKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gY2xvY2stbGF0ZW5jeTogU3BlY2lmeSB0aGUgcG9zc2libGUgbWF4aW11bSB0cmFuc2l0aW9uIGxhdGVuY3kgZm9yIGNsb2NrLAorICBpbiB1bml0IG9mIG5hbm9zZWNvbmRzLgorCitFeGFtcGxlOgorLS0tLS0tLS0KK2NwdXMgeworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDA+OworCisJY3B1QDAgeworCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTE1IjsKKwkJcmVnID0gPDA+OworCisJCWNsb2NrcyA9IDwmdGVncmFfY2FyIFRFR1JBMTI0X0NMS19DQ0xLX0c+LAorCQkJIDwmdGVncmFfY2FyIFRFR1JBMTI0X0NMS19DQ0xLX0xQPiwKKwkJCSA8JnRlZ3JhX2NhciBURUdSQTEyNF9DTEtfUExMX1g+LAorCQkJIDwmdGVncmFfY2FyIFRFR1JBMTI0X0NMS19QTExfUD4sCisJCQkgPCZkZmxsPjsKKwkJY2xvY2stbmFtZXMgPSAiY3B1X2ciLCAiY3B1X2xwIiwgInBsbF94IiwgInBsbF9wIiwgImRmbGwiOworCQljbG9jay1sYXRlbmN5ID0gPDMwMDAwMD47CisJCXZkZC1jcHUtc3VwcGx5OiA8JnZkZF9jcHU+OworCX07CisKKwk8Li4uPgorfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcmlzL2F4aXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NyaXMvYXhpcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDIwOWNhMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcmlzL2F4aXMudHh0CkBAIC0wLDAgKzEsOSBAQAorQXhpcyBDb21tdW5pY2F0aW9ucyBBQgorQVJUUEVDIHNlcmllcyBTb0MgRGV2aWNlIFRyZWUgQmluZGluZ3MKKworCitDUklTdjMyIGJhc2VkIFNvQ3MgYXJlIEVUUkFYIEZTIGFuZCBBUlRQRUMtMzoKKworICAgIC0gY29tcGF0aWJsZSA9ICJheGlzLGNyaXN2MzIiOworCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcmlzL2JvYXJkcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3Jpcy9ib2FyZHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzM2RkMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3Jpcy9ib2FyZHMudHh0CkBAIC0wLDAgKzEsOCBAQAorQm9hcmRzIGJhc2VkIG9uIHRoZSBDUklTIFNvQ3M6CisKK1JlcXVpcmVkIHJvb3Qgbm9kZSBwcm9wZXJ0aWVzOgorICAgIC0gY29tcGF0aWJsZSA9IHNob3VsZCBiZSBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nOgorCS0gImF4aXMsZGV2ODgiCS0gZm9yIEF4aXMgZGV2Ym9hcmQgODggd2l0aCBFVFJBWCBGUworCitPcHRpb25hbDoKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NyeXB0by9hbWQtY2NwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcnlwdG8vYW1kLWNjcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM2MTE4MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcnlwdG8vYW1kLWNjcC50eHQKQEAgLTAsMCArMSwxOSBAQAorKiBBTUQgQ3J5cHRvZ3JhcGhpYyBDb3Byb2Nlc3NvciBkcml2ZXIgKGNjcCkKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJhbWQsY2NwLXNlYXR0bGUtdjFhIgorLSByZWc6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistIGludGVycnVwdC1wYXJlbnQ6IFNob3VsZCBiZSB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyCisgIHRoYXQgc2VydmljZXMgaW50ZXJydXB0cyBmb3IgdGhpcyBkZXZpY2UKKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gdGhlIENDUCBpbnRlcnJ1cHQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gZG1hLWNvaGVyZW50OiBQcmVzZW50IGlmIGRtYSBvcGVyYXRpb25zIGFyZSBjb2hlcmVudAorCitFeGFtcGxlOgorCWNjcEBlMDEwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiYW1kLGNjcC1zZWF0dGxlLXYxYSI7CisJCXJlZyA9IDwwIDB4ZTAxMDAwMDAgMCAweDEwMDAwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ2ljPjsKKwkJaW50ZXJydXB0cyA9IDwwIDMgND47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcnlwdG8vYXRtZWwtY3J5cHRvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcnlwdG8vYXRtZWwtY3J5cHRvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmFhYjNkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NyeXB0by9hdG1lbC1jcnlwdG8udHh0CkBAIC0wLDAgKzEsNjggQEAKKyogQXRtZWwgSFcgY3J5cHRvZ3JhcGhpYyBhY2NlbGVyYXRvcnMKKworVGhlc2UgYXJlIHRoZSBIVyBjcnlwdG9ncmFwaGljIGFjY2VsZXJhdG9ycyBmb3VuZCBvbiBzb21lIEF0bWVsIHByb2R1Y3RzLgorCisqIEFkdmFuY2VkIEVuY3J5cHRpb24gU3RhbmRhcmQgKEFFUykKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAiYXRtZWwsYXQ5MXNhbTlnNDYtYWVzIi4KKy0gcmVnOiBTaG91bGQgY29udGFpbiBBRVMgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGguCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIHRoZSBJUlEgbGluZSBmb3IgdGhlIEFFUy4KKy0gZG1hczogTGlzdCBvZiB0d28gRE1BIHNwZWNpZmllcnMgYXMgZGVzY3JpYmVkIGluCisgICAgICAgIGF0bWVsLWRtYS50eHQgYW5kIGRtYS50eHQgZmlsZXMuCistIGRtYS1uYW1lczogQ29udGFpbnMgb25lIGlkZW50aWZpZXIgc3RyaW5nIGZvciBlYWNoIERNQSBzcGVjaWZpZXIKKyAgICAgICAgICAgICBpbiB0aGUgZG1hcyBwcm9wZXJ0eS4KKworRXhhbXBsZToKK2Flc0BmODAzODAwMCB7CisJY29tcGF0aWJsZSA9ICJhdG1lbCxhdDkxc2FtOWc0Ni1hZXMiOworCXJlZyA9IDwweGY4MDM4MDAwIDB4MTAwPjsKKwlpbnRlcnJ1cHRzID0gPDQzIDQgMD47CisJZG1hcyA9IDwmZG1hMSAyIDE4PiwKKwkgICAgICAgPCZkbWExIDIgMTk+OworCWRtYS1uYW1lcyA9ICJ0eCIsICJyeCI7CisKKyogVHJpcGxlIERhdGEgRW5jcnlwdGlvbiBTdGFuZGFyZCAoVHJpcGxlIERFUykKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAiYXRtZWwsYXQ5MXNhbTlnNDYtdGRlcyIuCistIHJlZzogU2hvdWxkIGNvbnRhaW4gVERFUyByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aC4KKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gdGhlIElSUSBsaW5lIGZvciB0aGUgVERFUy4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gZG1hczogTGlzdCBvZiB0d28gRE1BIHNwZWNpZmllcnMgYXMgZGVzY3JpYmVkIGluCisgICAgICAgIGF0bWVsLWRtYS50eHQgYW5kIGRtYS50eHQgZmlsZXMuCistIGRtYS1uYW1lczogQ29udGFpbnMgb25lIGlkZW50aWZpZXIgc3RyaW5nIGZvciBlYWNoIERNQSBzcGVjaWZpZXIKKyAgICAgICAgICAgICBpbiB0aGUgZG1hcyBwcm9wZXJ0eS4KKworRXhhbXBsZToKK3RkZXNAZjgwM2MwMDAgeworCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXNhbTlnNDYtdGRlcyI7CisJcmVnID0gPDB4ZjgwM2MwMDAgMHgxMDA+OworCWludGVycnVwdHMgPSA8NDQgNCAwPjsKKwlkbWFzID0gPCZkbWExIDIgMjA+LAorCSAgICAgICA8JmRtYTEgMiAyMT47CisJZG1hLW5hbWVzID0gInR4IiwgInJ4IjsKK307CisKKyogU2VjdXJlIEhhc2ggQWxnb3JpdGhtIChTSEEpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImF0bWVsLGF0OTFzYW05ZzQ2LXNoYSIuCistIHJlZzogU2hvdWxkIGNvbnRhaW4gU0hBIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoLgorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiB0aGUgSVJRIGxpbmUgZm9yIHRoZSBTSEEuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGRtYXM6IE9uZSBETUEgc3BlY2lmaWVycyBhcyBkZXNjcmliZWQgaW4KKyAgICAgICAgYXRtZWwtZG1hLnR4dCBhbmQgZG1hLnR4dCBmaWxlcy4KKy0gZG1hLW5hbWVzOiBDb250YWlucyBvbmUgaWRlbnRpZmllciBzdHJpbmcgZm9yIGVhY2ggRE1BIHNwZWNpZmllcgorICAgICAgICAgICAgIGluIHRoZSBkbWFzIHByb3BlcnR5LiBPbmx5IG9uZSAidHgiIHN0cmluZyBuZWVkZWQuCisKK0V4YW1wbGU6CitzaGFAZjgwMzQwMDAgeworCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXNhbTlnNDYtc2hhIjsKKwlyZWcgPSA8MHhmODAzNDAwMCAweDEwMD47CisJaW50ZXJydXB0cyA9IDw0MiA0IDA+OworCWRtYXMgPSA8JmRtYTEgMiAxNz47CisJZG1hLW5hbWVzID0gInR4IjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL2ZzbC1kY3AudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NyeXB0by9mc2wtZGNwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTQ5ZTUwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NyeXB0by9mc2wtZGNwLnR4dApAQCAtMCwwICsxLDE3IEBACitGcmVlc2NhbGUgRENQIChEYXRhIENvLVByb2Nlc3NvcikgZm91bmQgb24gaS5NWDIzL2kuTVgyOCAuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImZzbCw8c29jPi1kY3AiCistIHJlZyA6IFNob3VsZCBjb250YWluIE1YUyBEQ1AgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKy0gaW50ZXJydXB0cyA6IFNob3VsZCBjb250YWluIE1YUyBEQ1AgaW50ZXJydXB0IG51bWJlcnMsIFZNSSBJUlEgYW5kIERDUCBJUlEKKyAgICAgICAgICAgICAgIG11c3QgYmUgc3VwcGxpZWQsIG9wdGlvbmFsbHkgU2VjdXJlIElSUSBjYW4gYmUgcHJlc2VudCwgYnV0CisJICAgICAgIGlzIGN1cnJlbnRseSBub3QgaW1wbGVtZW50ZWQgYW5kIG5vdCB1c2VkLgorCitFeGFtcGxlOgorCitkY3BAODAwMjgwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDI4LWRjcCIsICJmc2wsaW14MjMtZGNwIjsKKwlyZWcgPSA8MHg4MDAyODAwMCAweDIwMDA+OworCWludGVycnVwdHMgPSA8NTIgNTM+OworCXN0YXR1cyA9ICJva2F5IjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL2ZzbC1pbXgtc2FoYXJhLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcnlwdG8vZnNsLWlteC1zYWhhcmEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YTM1YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL2ZzbC1pbXgtc2FoYXJhLnR4dApAQCAtMCwwICsxLDE1IEBACitGcmVlc2NhbGUgU0FIQVJBIENyeXB0b2dyYXBoaWMgQWNjZWxlcmF0b3IgaW5jbHVkZWQgaW4gc29tZSBpLk1YIGNoaXBzLgorQ3VycmVudGx5IG9ubHkgaS5NWDI3IGFuZCBpLk1YNTMgYXJlIHN1cHBvcnRlZC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAiZnNsLDxzb2M+LXNhaGFyYSIKKy0gcmVnIDogU2hvdWxkIGNvbnRhaW4gU0FIQVJBIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCistIGludGVycnVwdHMgOiBTaG91bGQgY29udGFpbiBTQUhBUkEgaW50ZXJydXB0IG51bWJlcgorCitFeGFtcGxlOgorCitzYWhAMTAwMjUwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDI3LXNhaGFyYSI7CisJcmVnID0gPAkweDEwMDI1MDAwIDB4ODAwPjsKKwlpbnRlcnJ1cHRzID0gPDc1PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL2ZzbC1zZWMyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcnlwdG8vZnNsLXNlYzIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwZDkyNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL2ZzbC1zZWMyLnR4dApAQCAtMCwwICsxLDcwIEBACitGcmVlc2NhbGUgU29DIFNFQyBTZWN1cml0eSBFbmdpbmVzIHZlcnNpb25zIDEueC0yLngtMy54CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBjb250YWluIGVudHJpZXMgZm9yIHRoaXMgYW5kIGJhY2t3YXJkIGNvbXBhdGlibGUKKyAgU0VDIHZlcnNpb25zLCBoaWdoIHRvIGxvdywgZS5nLiwgImZzbCxzZWMyLjEiLCAiZnNsLHNlYzIuMCIgKFNFQzIvMykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5nLiwgImZzbCxzZWMxLjIiLCAiZnNsLHNlYzEuMCIgKFNFQzEpCisgICAgd2FybmluZzogU0VDMSBhbmQgU0VDMiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlCistIHJlZyA6IE9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKy0gaW50ZXJydXB0cyA6IHRoZSBTRUMncyBpbnRlcnJ1cHQgbnVtYmVyCistIGZzbCxudW0tY2hhbm5lbHMgOiBBbiBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzCisgIGF2YWlsYWJsZS4KKy0gZnNsLGNoYW5uZWwtZmlmby1sZW4gOiBBbiBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mCisgIGRlc2NyaXB0b3IgcG9pbnRlcnMgZWFjaCBjaGFubmVsIGZldGNoIGZpZm8gY2FuIGhvbGQuCistIGZzbCxleGVjLXVuaXRzLW1hc2sgOiBUaGUgYml0bWFzayByZXByZXNlbnRpbmcgd2hhdCBleGVjdXRpb24gdW5pdHMKKyAgKEVVcykgYXJlIGF2YWlsYWJsZS4gSXQncyBhIHNpbmdsZSAzMi1iaXQgY2VsbC4gRVUgaW5mb3JtYXRpb24KKyAgc2hvdWxkIGJlIGVuY29kZWQgZm9sbG93aW5nIHRoZSBTRUMncyBEZXNjcmlwdG9yIEhlYWRlciBEd29yZAorICBFVV9TRUwwIGZpZWxkIGRvY3VtZW50YXRpb24sIGkuZS4gYXMgZm9sbG93czoKKworCWJpdCAwICA9IHJlc2VydmVkIC0gc2hvdWxkIGJlIDAKKwliaXQgMSAgPSBzZXQgaWYgU0VDIGhhcyB0aGUgQVJDNCBFVSAoQUZFVSkKKwliaXQgMiAgPSBzZXQgaWYgU0VDIGhhcyB0aGUgREVTLzNERVMgRVUgKERFVSkKKwliaXQgMyAgPSBzZXQgaWYgU0VDIGhhcyB0aGUgbWVzc2FnZSBkaWdlc3QgRVUgKE1ERVUvTURFVS1BKQorCWJpdCA0ICA9IHNldCBpZiBTRUMgaGFzIHRoZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvciBFVSAoUk5HKQorCWJpdCA1ICA9IHNldCBpZiBTRUMgaGFzIHRoZSBwdWJsaWMga2V5IEVVIChQS0VVKQorCWJpdCA2ICA9IHNldCBpZiBTRUMgaGFzIHRoZSBBRVMgRVUgKEFFU1UpCisJYml0IDcgID0gc2V0IGlmIFNFQyBoYXMgdGhlIEthc3VtaSBFVSAoS0VVKQorCWJpdCA4ICA9IHNldCBpZiBTRUMgaGFzIHRoZSBDUkMgRVUgKENSQ1UpCisJYml0IDExID0gc2V0IGlmIFNFQyBoYXMgdGhlIG1lc3NhZ2UgZGlnZXN0IEVVIGV4dGVuZGVkIGFsZyBzZXQgKE1ERVUtQikKKworcmVtYWluaW5nIGJpdHMgYXJlIHJlc2VydmVkIGZvciBmdXR1cmUgU0VDIEVVcy4KKworLSBmc2wsZGVzY3JpcHRvci10eXBlcy1tYXNrIDogVGhlIGJpdG1hc2sgcmVwcmVzZW50aW5nIHdoYXQgZGVzY3JpcHRvcnMKKyAgYXJlIGF2YWlsYWJsZS4gSXQncyBhIHNpbmdsZSAzMi1iaXQgY2VsbC4gRGVzY3JpcHRvciB0eXBlIGluZm9ybWF0aW9uCisgIHNob3VsZCBiZSBlbmNvZGVkIGZvbGxvd2luZyB0aGUgU0VDJ3MgRGVzY3JpcHRvciBIZWFkZXIgRHdvcmQgREVTQ19UWVBFCisgIGZpZWxkIGRvY3VtZW50YXRpb24sIGkuZS4gYXMgZm9sbG93czoKKworCWJpdCAwICA9IHNldCBpZiBTRUMgc3VwcG9ydHMgdGhlIGFlc3VfY3RyX25vbnNub29wIGRlc2MuIHR5cGUKKwliaXQgMSAgPSBzZXQgaWYgU0VDIHN1cHBvcnRzIHRoZSBpcHNlY19lc3AgZGVzY3JpcHRvciB0eXBlCisJYml0IDIgID0gc2V0IGlmIFNFQyBzdXBwb3J0cyB0aGUgY29tbW9uX25vbnNub29wIGRlc2MuIHR5cGUKKwliaXQgMyAgPSBzZXQgaWYgU0VDIHN1cHBvcnRzIHRoZSA4MDIuMTFpIEFFUyBjY21wIGRlc2MuIHR5cGUKKwliaXQgNCAgPSBzZXQgaWYgU0VDIHN1cHBvcnRzIHRoZSBobWFjX3Nub29wX25vX2FmZXUgZGVzYy4gdHlwZQorCWJpdCA1ICA9IHNldCBpZiBTRUMgc3VwcG9ydHMgdGhlIHNydHAgZGVzY3JpcHRvciB0eXBlCisJYml0IDYgID0gc2V0IGlmIFNFQyBzdXBwb3J0cyB0aGUgbm9uX2htYWNfc25vb3Bfbm9fYWZldSBkZXNjLnR5cGUKKwliaXQgNyAgPSBzZXQgaWYgU0VDIHN1cHBvcnRzIHRoZSBwa2V1X2Fzc2VtYmxlIGRlc2NyaXB0b3IgdHlwZQorCWJpdCA4ICA9IHNldCBpZiBTRUMgc3VwcG9ydHMgdGhlIGFlc3Vfa2V5X2V4cGFuZF9vdXRwdXQgZGVzYy50eXBlCisJYml0IDkgID0gc2V0IGlmIFNFQyBzdXBwb3J0cyB0aGUgcGtldV9wdG11bCBkZXNjcmlwdG9yIHR5cGUKKwliaXQgMTAgPSBzZXQgaWYgU0VDIHN1cHBvcnRzIHRoZSBjb21tb25fbm9uc25vb3BfYWZldSBkZXNjLiB0eXBlCisJYml0IDExID0gc2V0IGlmIFNFQyBzdXBwb3J0cyB0aGUgcGtldV9wdGFkZF9kYmwgZGVzY3JpcHRvciB0eXBlCisKKyAgLi5hbmQgc28gb24gYW5kIHNvIGZvcnRoLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIGludGVycnVwdC1wYXJlbnQgOiB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyIHRoYXQKKyAgc2VydmljZXMgaW50ZXJydXB0cyBmb3IgdGhpcyBkZXZpY2UuCisKK0V4YW1wbGU6CisKKwkvKiBNUEM4NTQ4RSAqLworCWNyeXB0b0AzMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLHNlYzIuMSIsICJmc2wsc2VjMi4wIjsKKwkJcmVnID0gPDB4MzAwMDAgMHgxMDAwMD47CisJCWludGVycnVwdHMgPSA8MjkgMj47CisJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1waWM+OworCQlmc2wsbnVtLWNoYW5uZWxzID0gPDQ+OworCQlmc2wsY2hhbm5lbC1maWZvLWxlbiA9IDwyND47CisJCWZzbCxleGVjLXVuaXRzLW1hc2sgPSA8MHhmZT47CisJCWZzbCxkZXNjcmlwdG9yLXR5cGVzLW1hc2sgPSA8MHgxMmIwZWJmPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NyeXB0by9mc2wtc2VjNC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL2ZzbC1zZWM0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGVjYTM0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NyeXB0by9mc2wtc2VjNC50eHQKQEAgLTAsMCArMSw1MzcgQEAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorU0VDIDQgRGV2aWNlIFRyZWUgQmluZGluZworQ29weXJpZ2h0IChDKSAyMDA4LTIwMTEgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IgSW5jLgorCisgQ09OVEVOVFMKKyAgIC1PdmVydmlldworICAgLVNFQyA0IE5vZGUKKyAgIC1Kb2IgUmluZyBOb2RlCisgICAtUnVuIFRpbWUgSW50ZWdyaXR5IENoZWNrIChSVElDKSBOb2RlCisgICAtUnVuIFRpbWUgSW50ZWdyaXR5IENoZWNrIChSVElDKSBNZW1vcnkgTm9kZQorICAgLVNlY3VyZSBOb24tVm9sYXRpbGUgU3RvcmFnZSAoU05WUykgTm9kZQorICAgLVNlY3VyZSBOb24tVm9sYXRpbGUgU3RvcmFnZSAoU05WUykgTG93IFBvd2VyIChMUCkgUlRDIE5vZGUKKyAgIC1GdWxsIEV4YW1wbGUKKworTk9URTogdGhlIFNFQyA0IGlzIGFsc28ga25vd24gYXMgRnJlZXNjYWxlJ3MgQ3J5cHRvZ3JhcGhpYyBBY2NlbGVyYXRvcgorQWNjZWxlcmF0b3IgYW5kIEFzc3VyYW5jZSBNb2R1bGUgKENBQU0pLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK092ZXJ2aWV3CisKK0RFU0NSSVBUSU9OCisKK1NFQyA0IGgvdyBjYW4gcHJvY2VzcyByZXF1ZXN0cyBmcm9tIDIgdHlwZXMgb2Ygc291cmNlcy4KKzEuIERQQUEgUXVldWUgSW50ZXJmYWNlIChIVyBpbnRlcmZhY2UgYmV0d2VlbiBRdWV1ZSBNYW5hZ2VyICYgU0VDIDQpLgorMi4gSm9iIFJpbmdzIChIVyBpbnRlcmZhY2UgYmV0d2VlbiBjb3JlcyAmIFNFQyA0IHJlZ2lzdGVycykuCisKK0hpZ2ggU3BlZWQgRGF0YSBQYXRoIENvbmZpZ3VyYXRpb246CisKK0hXIGludGVyZmFjZSBiZXR3ZWVuIFFNICYgU0VDIDQgYW5kIGFsc28gQk0gJiBTRUMgNCwgb24gRFBBQS1lbmFibGVkIHBhcnRzCitzdWNoIGFzIHRoZSBQNDA4MC4gIFRoZSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIGRlcXVldWVzIHRoZSBRSSBjYW4gbWFrZSBpcworZXF1YWwgdG8gdGhlIG51bWJlciBvZiBEZXNjcmlwdG9yIENvbnRyb2xsZXIgKERFQ08pIGVuZ2luZXMgaW4gYSBwYXJ0aWN1bGFyCitTRUMgdmVyc2lvbi4gIEUuZy4sIHRoZSBTRUMgNC4wIGluIHRoZSBQNDA4MCBoYXMgNSBERUNPcyBhbmQgY2FuIHRodXMKK2RlcXVldWUgZnJvbSA1IHN1YnBvcnRhbHMgc2ltdWx0YW5lb3VzbHkuCisKK0pvYiBSaW5nIERhdGEgUGF0aCBDb25maWd1cmF0aW9uOgorCitFYWNoIEpSIGlzIGxvY2F0ZWQgb24gYSBzZXBhcmF0ZSA0ayBwYWdlLCB0aGV5IG1heSAob3IgbWF5IG5vdCkgYmUgbWFkZSB2aXNpYmxlCitpbiB0aGUgbWVtb3J5IHBhcnRpdGlvbiBkZXZvdGVkIHRvIGEgcGFydGljdWxhciBjb3JlLiAgVGhlIFA0MDgwIGhhcyA0IEpScywgc28KK3VwIHRvIDQgSlJzIGNhbiBiZSBjb25maWd1cmVkOyBhbmQgYWxsIDQgSlJzIHByb2Nlc3MgcmVxdWVzdHMgaW4gcGFyYWxsZWwuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorU0VDIDQgTm9kZQorCitEZXNjcmlwdGlvbgorCisgICAgTm9kZSBkZWZpbmVzIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIFNFQyA0IGJsb2NrLgorICAgIFRoaXMgYmxvY2sgc3BlY2lmaWVzIHRoZSBhZGRyZXNzIHJhbmdlIG9mIGFsbCBnbG9iYWwKKyAgICBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBmb3IgdGhlIFNFQyA0IGJsb2NrLiAgSXQKKyAgICBhbHNvIHJlY2VpdmVzIGludGVycnVwdHMgZnJvbSB0aGUgUnVuIFRpbWUgSW50ZWdyaXR5IENoZWNrCisgICAgKFJUSUMpIGZ1bmN0aW9uIHdpdGhpbiB0aGUgU0VDIDQgYmxvY2suCisKK1BST1BFUlRJRVMKKworICAgLSBjb21wYXRpYmxlCisgICAgICBVc2FnZTogcmVxdWlyZWQKKyAgICAgIFZhbHVlIHR5cGU6IDxzdHJpbmc+CisgICAgICBEZWZpbml0aW9uOiBNdXN0IGluY2x1ZGUgImZzbCxzZWMtdjQuMCIKKworICAgLSBmc2wsc2VjLWVyYQorICAgICAgVXNhZ2U6IG9wdGlvbmFsCisgICAgICBWYWx1ZSB0eXBlOiA8dTMyPgorICAgICAgRGVmaW5pdGlvbjogQSBzdGFuZGFyZCBwcm9wZXJ0eS4gRGVmaW5lIHRoZSAnRVJBJyBvZiB0aGUgU0VDCisgICAgICAgICAgZGV2aWNlLgorCisgICAtICNhZGRyZXNzLWNlbGxzCisgICAgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgICAgVmFsdWUgdHlwZTogPHUzMj4KKyAgICAgICBEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiAgRGVmaW5lcyB0aGUgbnVtYmVyIG9mIGNlbGxzCisgICAgICAgICAgIGZvciByZXByZXNlbnRpbmcgcGh5c2ljYWwgYWRkcmVzc2VzIGluIGNoaWxkIG5vZGVzLgorCisgICAtICNzaXplLWNlbGxzCisgICAgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgICAgVmFsdWUgdHlwZTogPHUzMj4KKyAgICAgICBEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiAgRGVmaW5lcyB0aGUgbnVtYmVyIG9mIGNlbGxzCisgICAgICAgICAgIGZvciByZXByZXNlbnRpbmcgdGhlIHNpemUgb2YgcGh5c2ljYWwgYWRkcmVzc2VzIGluCisgICAgICAgICAgIGNoaWxkIG5vZGVzLgorCisgICAtIHJlZworICAgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgICBWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorICAgICAgRGVmaW5pdGlvbjogQSBzdGFuZGFyZCBwcm9wZXJ0eS4gIFNwZWNpZmllcyB0aGUgcGh5c2ljYWwKKyAgICAgICAgICBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIFNFQzQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMuCisgICAgICAgICAgcmVnaXN0ZXJzCisKKyAgIC0gcmFuZ2VzCisgICAgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgICAgVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKyAgICAgICBEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiAgU3BlY2lmaWVzIHRoZSBwaHlzaWNhbCBhZGRyZXNzCisgICAgICAgICAgIHJhbmdlIG9mIHRoZSBTRUMgNC4wIHJlZ2lzdGVyIHNwYWNlICgtU05WUyBub3QgaW5jbHVkZWQpLiAgQQorICAgICAgICAgICB0cmlwbGV0IHRoYXQgaW5jbHVkZXMgdGhlIGNoaWxkIGFkZHJlc3MsIHBhcmVudCBhZGRyZXNzLCAmCisgICAgICAgICAgIGxlbmd0aC4KKworICAgLSBpbnRlcnJ1cHRzCisgICAgICBVc2FnZTogcmVxdWlyZWQKKyAgICAgIFZhbHVlIHR5cGU6IDxwcm9wX2VuY29kZWQtYXJyYXk+CisgICAgICBEZWZpbml0aW9uOiAgU3BlY2lmaWVzIHRoZSBpbnRlcnJ1cHRzIGdlbmVyYXRlZCBieSB0aGlzCisgICAgICAgICAgIGRldmljZS4gIFRoZSB2YWx1ZSBvZiB0aGUgaW50ZXJydXB0cyBwcm9wZXJ0eQorICAgICAgICAgICBjb25zaXN0cyBvZiBvbmUgaW50ZXJydXB0IHNwZWNpZmllci4gVGhlIGZvcm1hdAorICAgICAgICAgICBvZiB0aGUgc3BlY2lmaWVyIGlzIGRlZmluZWQgYnkgdGhlIGJpbmRpbmcgZG9jdW1lbnQKKyAgICAgICAgICAgZGVzY3JpYmluZyB0aGUgbm9kZSdzIGludGVycnVwdCBwYXJlbnQuCisKKyAgIC0gaW50ZXJydXB0LXBhcmVudAorICAgICAgVXNhZ2U6IChyZXF1aXJlZCBpZiBpbnRlcnJ1cHQgcHJvcGVydHkgaXMgZGVmaW5lZCkKKyAgICAgIFZhbHVlIHR5cGU6IDxwaGFuZGxlPgorICAgICAgRGVmaW5pdGlvbjogQSBzaW5nbGUgPHBoYW5kbGU+IHZhbHVlIHRoYXQgcG9pbnRzCisgICAgICAgICAgdG8gdGhlIGludGVycnVwdCBwYXJlbnQgdG8gd2hpY2ggdGhlIGNoaWxkIGRvbWFpbgorICAgICAgICAgIGlzIGJlaW5nIG1hcHBlZC4KKworICAgLSBjbG9ja3MKKyAgICAgIFVzYWdlOiByZXF1aXJlZCBpZiBTRUMgNC4wIHJlcXVpcmVzIGV4cGxpY2l0IGVuYWJsZW1lbnQgb2YgY2xvY2tzCisgICAgICBWYWx1ZSB0eXBlOiA8cHJvcF9lbmNvZGVkLWFycmF5PgorICAgICAgRGVmaW5pdGlvbjogIEEgbGlzdCBvZiBwaGFuZGxlIGFuZCBjbG9jayBzcGVjaWZpZXIgcGFpcnMgZGVzY3JpYmluZworICAgICAgICAgIHRoZSBjbG9ja3MgcmVxdWlyZWQgZm9yIGVuYWJsaW5nIGFuZCBkaXNhYmxpbmcgU0VDIDQuMC4KKworICAgLSBjbG9jay1uYW1lcworICAgICAgVXNhZ2U6IHJlcXVpcmVkIGlmIFNFQyA0LjAgcmVxdWlyZXMgZXhwbGljaXQgZW5hYmxlbWVudCBvZiBjbG9ja3MKKyAgICAgIFZhbHVlIHR5cGU6IDxzdHJpbmc+CisgICAgICBEZWZpbml0aW9uOiBBIGxpc3Qgb2YgY2xvY2sgbmFtZSBzdHJpbmdzIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZQorICAgICAgICAgIGNsb2NrcyBwcm9wZXJ0eS4KKworICAgTm90ZTogQWxsIG90aGVyIHN0YW5kYXJkIHByb3BlcnRpZXMgKHNlZSB0aGUgZVBBUFIpIGFyZSBhbGxvd2VkCisgICBidXQgYXJlIG9wdGlvbmFsLgorCisKK0VYQU1QTEUKKwljcnlwdG9AMzAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsc2VjLXY0LjAiOworCQlmc2wsc2VjLWVyYSA9IDwyPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQlyZWcgPSA8MHgzMDAwMDAgMHgxMDAwMD47CisJCXJhbmdlcyA9IDwwIDB4MzAwMDAwIDB4MTAwMDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZtcGljPjsKKwkJaW50ZXJydXB0cyA9IDw5MiAyPjsKKwkJY2xvY2tzID0gPCZjbGtzIElNWDZRRExfQ0xLX0NBQU1fTUVNPiwKKwkJCSA8JmNsa3MgSU1YNlFETF9DTEtfQ0FBTV9BQ0xLPiwKKwkJCSA8JmNsa3MgSU1YNlFETF9DTEtfQ0FBTV9JUEc+LAorCQkJIDwmY2xrcyBJTVg2UURMX0NMS19FSU1fU0xPVz47CisJCWNsb2NrLW5hbWVzID0gIm1lbSIsICJhY2xrIiwgImlwZyIsICJlbWlfc2xvdyI7CisJfTsKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitKb2IgUmluZyAoSlIpIE5vZGUKKworICAgIENoaWxkIG9mIHRoZSBjcnlwdG8gbm9kZSBkZWZpbmVzIGRhdGEgcHJvY2Vzc2luZyBpbnRlcmZhY2UgdG8gU0VDIDQKKyAgICBhY3Jvc3MgdGhlIHBlcmlwaGVyYWwgYnVzIGZvciBwdXJwb3NlcyBvZiBwcm9jZXNzaW5nCisgICAgY3J5cHRvZ3JhcGhpYyBkZXNjcmlwdG9ycy4gVGhlIHNwZWNpZmllZCBhZGRyZXNzCisgICAgcmFuZ2UgY2FuIGJlIG1hZGUgdmlzaWJsZSB0byBvbmUgKG9yIG1vcmUpIGNvcmVzLgorICAgIFRoZSBpbnRlcnJ1cHQgZGVmaW5lZCBmb3IgdGhpcyBub2RlIGlzIGNvbnRyb2xsZWQgd2l0aGluCisgICAgdGhlIGFkZHJlc3MgcmFuZ2Ugb2YgdGhpcyBub2RlLgorCisgIC0gY29tcGF0aWJsZQorICAgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgICBWYWx1ZSB0eXBlOiA8c3RyaW5nPgorICAgICAgRGVmaW5pdGlvbjogTXVzdCBpbmNsdWRlICJmc2wsc2VjLXY0LjAtam9iLXJpbmciCisKKyAgLSByZWcKKyAgICAgIFVzYWdlOiByZXF1aXJlZAorICAgICAgVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKyAgICAgIERlZmluaXRpb246IFNwZWNpZmllcyBhIHR3byBKUiBwYXJhbWV0ZXJzOiAgYW4gb2Zmc2V0IGZyb20KKyAgICAgICAgICB0aGUgcGFyZW50IHBoeXNpY2FsIGFkZHJlc3MgYW5kIHRoZSBsZW5ndGggdGhlIEpSIHJlZ2lzdGVycy4KKworICAgLSBmc2wsbGlvZG4KKyAgICAgICBVc2FnZTogb3B0aW9uYWwtYnV0LXJlY29tbWVuZGVkCisgICAgICAgVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKyAgICAgICBEZWZpbml0aW9uOgorICAgICAgICAgICBTcGVjaWZpZXMgdGhlIExJT0ROIHRvIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aAorICAgICAgICAgICB0aGUgcHBpZC10by1saW9kbiB0YWJsZSB0aGF0IHNwZWNpZmllcyB0aGUgUFBJRCB0byBMSU9ETiBtYXBwaW5nLgorICAgICAgICAgICBOZWVkZWQgaWYgdGhlIFBBTVUgaXMgdXNlZC4gIFZhbHVlIGlzIGEgMTIgYml0IHZhbHVlCisgICAgICAgICAgIHdoZXJlIHZhbHVlIGlzIGEgTElPRE4gSUQgZm9yIHRoaXMgSlIuIFRoaXMgcHJvcGVydHkgaXMKKyAgICAgICAgICAgbm9ybWFsbHkgc2V0IGJ5IGJvb3QgZmlybXdhcmUuCisKKyAgIC0gaW50ZXJydXB0cworICAgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgICBWYWx1ZSB0eXBlOiA8cHJvcF9lbmNvZGVkLWFycmF5PgorICAgICAgRGVmaW5pdGlvbjogIFNwZWNpZmllcyB0aGUgaW50ZXJydXB0cyBnZW5lcmF0ZWQgYnkgdGhpcworICAgICAgICAgICBkZXZpY2UuICBUaGUgdmFsdWUgb2YgdGhlIGludGVycnVwdHMgcHJvcGVydHkKKyAgICAgICAgICAgY29uc2lzdHMgb2Ygb25lIGludGVycnVwdCBzcGVjaWZpZXIuIFRoZSBmb3JtYXQKKyAgICAgICAgICAgb2YgdGhlIHNwZWNpZmllciBpcyBkZWZpbmVkIGJ5IHRoZSBiaW5kaW5nIGRvY3VtZW50CisgICAgICAgICAgIGRlc2NyaWJpbmcgdGhlIG5vZGUncyBpbnRlcnJ1cHQgcGFyZW50LgorCisgICAtIGludGVycnVwdC1wYXJlbnQKKyAgICAgIFVzYWdlOiAocmVxdWlyZWQgaWYgaW50ZXJydXB0IHByb3BlcnR5IGlzIGRlZmluZWQpCisgICAgICBWYWx1ZSB0eXBlOiA8cGhhbmRsZT4KKyAgICAgIERlZmluaXRpb246IEEgc2luZ2xlIDxwaGFuZGxlPiB2YWx1ZSB0aGF0IHBvaW50cworICAgICAgICAgIHRvIHRoZSBpbnRlcnJ1cHQgcGFyZW50IHRvIHdoaWNoIHRoZSBjaGlsZCBkb21haW4KKyAgICAgICAgICBpcyBiZWluZyBtYXBwZWQuCisKK0VYQU1QTEUKKwlqckAxMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsc2VjLXY0LjAtam9iLXJpbmciOworCQlyZWcgPSA8MHgxMDAwIDB4MTAwMD47CisJCWZzbCxsaW9kbiA9IDwweDA4MT47CisJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1waWM+OworCQlpbnRlcnJ1cHRzID0gPDg4IDI+OworCX07CisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitSdW4gVGltZSBJbnRlZ3JpdHkgQ2hlY2sgKFJUSUMpIE5vZGUKKworICBDaGlsZCBub2RlIG9mIHRoZSBjcnlwdG8gbm9kZS4gIERlZmluZXMgYSByZWdpc3RlciBzcGFjZSB0aGF0CisgIGNvbnRhaW5zIHVwIHRvIDUgc2V0cyBvZiBhZGRyZXNzZXMgYW5kIHRoZWlyIGxlbmd0aHMgKHNpemVzKSB0aGF0CisgIHdpbGwgYmUgY2hlY2tlZCBhdCBydW4gdGltZS4gIEFmdGVyIGFuIGluaXRpYWwgaGFzaCByZXN1bHQgaXMKKyAgY2FsY3VsYXRlZCwgdGhlc2UgYWRkcmVzc2VzIGFyZSBjaGVja2VkIGJ5IEhXIHRvIG1vbml0b3IgYW55CisgIGNoYW5nZS4gIElmIGFueSBtZW1vcnkgaXMgbW9kaWZpZWQsIGEgU2VjdXJpdHkgVmlvbGF0aW9uIGlzCisgIHRyaWdnZXJlZCAoc2VlIFNOVlMgZGVmaW5pdGlvbikuCisKKworICAtIGNvbXBhdGlibGUKKyAgICAgIFVzYWdlOiByZXF1aXJlZAorICAgICAgVmFsdWUgdHlwZTogPHN0cmluZz4KKyAgICAgIERlZmluaXRpb246IE11c3QgaW5jbHVkZSAiZnNsLHNlYy12NC4wLXJ0aWMiLgorCisgICAtICNhZGRyZXNzLWNlbGxzCisgICAgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgICAgVmFsdWUgdHlwZTogPHUzMj4KKyAgICAgICBEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiAgRGVmaW5lcyB0aGUgbnVtYmVyIG9mIGNlbGxzCisgICAgICAgICAgIGZvciByZXByZXNlbnRpbmcgcGh5c2ljYWwgYWRkcmVzc2VzIGluIGNoaWxkIG5vZGVzLiAgTXVzdAorICAgICAgICAgICBoYXZlIGEgdmFsdWUgb2YgMS4KKworICAgLSAjc2l6ZS1jZWxscworICAgICAgIFVzYWdlOiByZXF1aXJlZAorICAgICAgIFZhbHVlIHR5cGU6IDx1MzI+CisgICAgICAgRGVmaW5pdGlvbjogQSBzdGFuZGFyZCBwcm9wZXJ0eS4gIERlZmluZXMgdGhlIG51bWJlciBvZiBjZWxscworICAgICAgICAgICBmb3IgcmVwcmVzZW50aW5nIHRoZSBzaXplIG9mIHBoeXNpY2FsIGFkZHJlc3NlcyBpbgorICAgICAgICAgICBjaGlsZCBub2Rlcy4gIE11c3QgaGF2ZSBhIHZhbHVlIG9mIDEuCisKKyAgLSByZWcKKyAgICAgIFVzYWdlOiByZXF1aXJlZAorICAgICAgVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKyAgICAgIERlZmluaXRpb246IEEgc3RhbmRhcmQgcHJvcGVydHkuICBTcGVjaWZpZXMgYSB0d28gcGFyYW1ldGVyczoKKyAgICAgICAgICBhbiBvZmZzZXQgZnJvbSB0aGUgcGFyZW50IHBoeXNpY2FsIGFkZHJlc3MgYW5kIHRoZSBsZW5ndGgKKyAgICAgICAgICB0aGUgU0VDNCByZWdpc3RlcnMuCisKKyAgIC0gcmFuZ2VzCisgICAgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgICAgVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKyAgICAgICBEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiAgU3BlY2lmaWVzIHRoZSBwaHlzaWNhbCBhZGRyZXNzCisgICAgICAgICAgIHJhbmdlIG9mIHRoZSBTRUMgNCByZWdpc3RlciBzcGFjZSAoLVNOVlMgbm90IGluY2x1ZGVkKS4gIEEKKyAgICAgICAgICAgdHJpcGxldCB0aGF0IGluY2x1ZGVzIHRoZSBjaGlsZCBhZGRyZXNzLCBwYXJlbnQgYWRkcmVzcywgJgorICAgICAgICAgICBsZW5ndGguCisKK0VYQU1QTEUKKwlydGljQDYwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxzZWMtdjQuMC1ydGljIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQlyZWcgPSA8MHg2MDAwIDB4MTAwPjsKKwkJcmFuZ2VzID0gPDB4MCAweDYxMDAgMHhlMDA+OworCX07CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUnVuIFRpbWUgSW50ZWdyaXR5IENoZWNrIChSVElDKSBNZW1vcnkgTm9kZQorICBBIGNoaWxkIG5vZGUgdGhhdCBkZWZpbmVzIGluZGl2aWR1YWwgUlRJQyBtZW1vcnkgcmVnaW9ucyB0aGF0IGFyZSB1c2VkIHRvCisgIHBlcmZvcm0gcnVuLXRpbWUgaW50ZWdyaXR5IGNoZWNrIG9mIG1lbW9yeSBhcmVhcyB0aGF0IHNob3VsZCBub3QgbW9kaWZpZWQuCisgIFRoZSBub2RlIGRlZmluZXMgYSByZWdpc3RlciB0aGF0IGNvbnRhaW5zIHRoZSBtZW1vcnkgYWRkcmVzcyAmCisgIGxlbmd0aCAoY29tYmluZWQpIGFuZCBhIHNlY29uZCByZWdpc3RlciB0aGF0IGNvbnRhaW5zIHRoZSBoYXNoIHJlc3VsdAorICBpbiBiaWcgZW5kaWFuIGZvcm1hdC4KKworICAtIGNvbXBhdGlibGUKKyAgICAgIFVzYWdlOiByZXF1aXJlZAorICAgICAgVmFsdWUgdHlwZTogPHN0cmluZz4KKyAgICAgIERlZmluaXRpb246IE11c3QgaW5jbHVkZSAiZnNsLHNlYy12NC4wLXJ0aWMtbWVtb3J5Ii4KKworICAtIHJlZworICAgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgICBWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorICAgICAgRGVmaW5pdGlvbjogQSBzdGFuZGFyZCBwcm9wZXJ0eS4gIFNwZWNpZmllcyB0d28gcGFyYW1ldGVyczoKKyAgICAgICAgICBhbiBvZmZzZXQgZnJvbSB0aGUgcGFyZW50IHBoeXNpY2FsIGFkZHJlc3MgYW5kIHRoZSBsZW5ndGg6CisKKyAgICAgICAgICAxLiBUaGUgbG9jYXRpb24gb2YgdGhlIFJUSUMgbWVtb3J5IGFkZHJlc3MgJiBsZW5ndGggcmVnaXN0ZXJzLgorICAgICAgICAgIDIuIFRoZSBsb2NhdGlvbiBSVElDIGhhc2ggcmVzdWx0LgorCisgIC0gZnNsLHJ0aWMtcmVnaW9uCisgICAgICAgVXNhZ2U6IG9wdGlvbmFsLWJ1dC1yZWNvbW1lbmRlZAorICAgICAgIFZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisgICAgICAgRGVmaW5pdGlvbjoKKyAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBIVyBhZGRyZXNzICgzNiBiaXQgYWRkcmVzcykgZm9yIHRoaXMgcmVnaW9uCisgICAgICAgICAgIGZvbGxvd2VkIGJ5IHRoZSBsZW5ndGggb2YgdGhlIEhXIHBhcnRpdGlvbiB0byBiZSBjaGVja2VkOworICAgICAgICAgICB0aGUgYWRkcmVzcyBpcyByZXByZXNlbnRlZCBhcyBhIDY0IGJpdCBxdWFudGl0eSBmb2xsb3dlZAorICAgICAgICAgICBieSBhIDMyIGJpdCBsZW5ndGguCisKKyAgIC0gZnNsLGxpb2RuCisgICAgICAgVXNhZ2U6IG9wdGlvbmFsLWJ1dC1yZWNvbW1lbmRlZAorICAgICAgIFZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisgICAgICAgRGVmaW5pdGlvbjoKKyAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBMSU9ETiB0byBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGgKKyAgICAgICAgICAgdGhlIHBwaWQtdG8tbGlvZG4gdGFibGUgdGhhdCBzcGVjaWZpZXMgdGhlIFBQSUQgdG8gTElPRE4KKyAgICAgICAgICAgbWFwcGluZy4gIE5lZWRlZCBpZiB0aGUgUEFNVSBpcyB1c2VkLiAgVmFsdWUgaXMgYSAxMiBiaXQgdmFsdWUKKyAgICAgICAgICAgd2hlcmUgdmFsdWUgaXMgYSBMSU9ETiBJRCBmb3IgdGhpcyBSVElDIG1lbW9yeSByZWdpb24uIFRoaXMKKyAgICAgICAgICAgcHJvcGVydHkgaXMgbm9ybWFsbHkgc2V0IGJ5IGJvb3QgZmlybXdhcmUuCisKK0VYQU1QTEUKKwlydGljLWFAMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLHNlYy12NC4wLXJ0aWMtbWVtb3J5IjsKKwkJcmVnID0gPDB4MDAgMHgyMCAweDEwMCAweDgwPjsKKwkJZnNsLGxpb2RuICAgPSA8MHgwM2M+OworCQlmc2wscnRpYy1yZWdpb24gID0gPDB4MTIzNDU2NzggMHgxMjM0NTY3OCAweDEyMzQ1Njc4PjsKKwl9OworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1NlY3VyZSBOb24tVm9sYXRpbGUgU3RvcmFnZSAoU05WUykgTm9kZQorCisgICAgTm9kZSBkZWZpbmVzIGFkZHJlc3MgcmFuZ2UgYW5kIHRoZSBhc3NvY2lhdGVkCisgICAgaW50ZXJydXB0IGZvciB0aGUgU05WUyBmdW5jdGlvbi4gIFRoaXMgZnVuY3Rpb24KKyAgICBtb25pdG9ycyBzZWN1cml0eSBzdGF0ZSBpbmZvcm1hdGlvbiAmIHJlcG9ydHMKKyAgICBzZWN1cml0eSB2aW9sYXRpb25zLiBUaGlzIGFsc28gaW5jbHVkZWQgcnRjLAorICAgIHN5c3RlbSBwb3dlciBvZmYgYW5kIE9OL09GRiBrZXkuCisKKyAgLSBjb21wYXRpYmxlCisgICAgICBVc2FnZTogcmVxdWlyZWQKKyAgICAgIFZhbHVlIHR5cGU6IDxzdHJpbmc+CisgICAgICBEZWZpbml0aW9uOiBNdXN0IGluY2x1ZGUgImZzbCxzZWMtdjQuMC1tb24iIGFuZCAic3lzY29uIi4KKworICAtIHJlZworICAgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgICBWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorICAgICAgRGVmaW5pdGlvbjogQSBzdGFuZGFyZCBwcm9wZXJ0eS4gIFNwZWNpZmllcyB0aGUgcGh5c2ljYWwKKyAgICAgICAgICBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIFNFQzQgY29uZmlndXJhdGlvbgorICAgICAgICAgIHJlZ2lzdGVycy4KKworICAgLSAjYWRkcmVzcy1jZWxscworICAgICAgIFVzYWdlOiByZXF1aXJlZAorICAgICAgIFZhbHVlIHR5cGU6IDx1MzI+CisgICAgICAgRGVmaW5pdGlvbjogQSBzdGFuZGFyZCBwcm9wZXJ0eS4gIERlZmluZXMgdGhlIG51bWJlciBvZiBjZWxscworICAgICAgICAgICBmb3IgcmVwcmVzZW50aW5nIHBoeXNpY2FsIGFkZHJlc3NlcyBpbiBjaGlsZCBub2Rlcy4gIE11c3QKKyAgICAgICAgICAgaGF2ZSBhIHZhbHVlIG9mIDEuCisKKyAgIC0gI3NpemUtY2VsbHMKKyAgICAgICBVc2FnZTogcmVxdWlyZWQKKyAgICAgICBWYWx1ZSB0eXBlOiA8dTMyPgorICAgICAgIERlZmluaXRpb246IEEgc3RhbmRhcmQgcHJvcGVydHkuICBEZWZpbmVzIHRoZSBudW1iZXIgb2YgY2VsbHMKKyAgICAgICAgICAgZm9yIHJlcHJlc2VudGluZyB0aGUgc2l6ZSBvZiBwaHlzaWNhbCBhZGRyZXNzZXMgaW4KKyAgICAgICAgICAgY2hpbGQgbm9kZXMuICBNdXN0IGhhdmUgYSB2YWx1ZSBvZiAxLgorCisgICAtIHJhbmdlcworICAgICAgIFVzYWdlOiByZXF1aXJlZAorICAgICAgIFZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisgICAgICAgRGVmaW5pdGlvbjogQSBzdGFuZGFyZCBwcm9wZXJ0eS4gIFNwZWNpZmllcyB0aGUgcGh5c2ljYWwgYWRkcmVzcworICAgICAgICAgICByYW5nZSBvZiB0aGUgU05WUyByZWdpc3RlciBzcGFjZS4gIEEgdHJpcGxldCB0aGF0IGluY2x1ZGVzCisgICAgICAgICAgIHRoZSBjaGlsZCBhZGRyZXNzLCBwYXJlbnQgYWRkcmVzcywgJiBsZW5ndGguCisKKyAgIC0gaW50ZXJydXB0cworICAgICAgVXNhZ2U6IG9wdGlvbmFsCisgICAgICBWYWx1ZSB0eXBlOiA8cHJvcF9lbmNvZGVkLWFycmF5PgorICAgICAgRGVmaW5pdGlvbjogIFNwZWNpZmllcyB0aGUgaW50ZXJydXB0cyBnZW5lcmF0ZWQgYnkgdGhpcworICAgICAgICAgICBkZXZpY2UuICBUaGUgdmFsdWUgb2YgdGhlIGludGVycnVwdHMgcHJvcGVydHkKKyAgICAgICAgICAgY29uc2lzdHMgb2Ygb25lIGludGVycnVwdCBzcGVjaWZpZXIuIFRoZSBmb3JtYXQKKyAgICAgICAgICAgb2YgdGhlIHNwZWNpZmllciBpcyBkZWZpbmVkIGJ5IHRoZSBiaW5kaW5nIGRvY3VtZW50CisgICAgICAgICAgIGRlc2NyaWJpbmcgdGhlIG5vZGUncyBpbnRlcnJ1cHQgcGFyZW50LgorCisgICAtIGludGVycnVwdC1wYXJlbnQKKyAgICAgIFVzYWdlOiAocmVxdWlyZWQgaWYgaW50ZXJydXB0IHByb3BlcnR5IGlzIGRlZmluZWQpCisgICAgICBWYWx1ZSB0eXBlOiA8cGhhbmRsZT4KKyAgICAgIERlZmluaXRpb246IEEgc2luZ2xlIDxwaGFuZGxlPiB2YWx1ZSB0aGF0IHBvaW50cworICAgICAgICAgIHRvIHRoZSBpbnRlcnJ1cHQgcGFyZW50IHRvIHdoaWNoIHRoZSBjaGlsZCBkb21haW4KKyAgICAgICAgICBpcyBiZWluZyBtYXBwZWQuCisKK0VYQU1QTEUKKwlzZWNfbW9uQDMxNDAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLHNlYy12NC4wLW1vbiIsICJzeXNjb24iOworCQlyZWcgPSA8MHgzMTQwMDAgMHgxMDAwPjsKKwkJcmFuZ2VzID0gPDAgMHgzMTQwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmbXBpYz47CisJCWludGVycnVwdHMgPSA8OTMgMj47CisJfTsKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitTZWN1cmUgTm9uLVZvbGF0aWxlIFN0b3JhZ2UgKFNOVlMpIExvdyBQb3dlciAoTFApIFJUQyBOb2RlCisKKyAgQSBTTlZTIGNoaWxkIG5vZGUgdGhhdCBkZWZpbmVzIFNOVlMgTFAgUlRDLgorCisgIC0gY29tcGF0aWJsZQorICAgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgICBWYWx1ZSB0eXBlOiA8c3RyaW5nPgorICAgICAgRGVmaW5pdGlvbjogTXVzdCBpbmNsdWRlICJmc2wsc2VjLXY0LjAtbW9uLXJ0Yy1scCIuCisKKyAgLSBpbnRlcnJ1cHRzCisgICAgICBVc2FnZTogcmVxdWlyZWQKKyAgICAgIFZhbHVlIHR5cGU6IDxwcm9wX2VuY29kZWQtYXJyYXk+CisgICAgICBEZWZpbml0aW9uOiBTcGVjaWZpZXMgdGhlIGludGVycnVwdHMgZ2VuZXJhdGVkIGJ5IHRoaXMKKwkgICBkZXZpY2UuICBUaGUgdmFsdWUgb2YgdGhlIGludGVycnVwdHMgcHJvcGVydHkKKwkgICBjb25zaXN0cyBvZiBvbmUgaW50ZXJydXB0IHNwZWNpZmllci4gVGhlIGZvcm1hdAorCSAgIG9mIHRoZSBzcGVjaWZpZXIgaXMgZGVmaW5lZCBieSB0aGUgYmluZGluZyBkb2N1bWVudAorCSAgIGRlc2NyaWJpbmcgdGhlIG5vZGUncyBpbnRlcnJ1cHQgcGFyZW50LgorCisgLSByZWdtYXAKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cGhhbmRsZT4KKwlEZWZpbml0aW9uOiB0aGlzIGlzIHBoYW5kbGUgdG8gdGhlIHJlZ2lzdGVyIG1hcCBub2RlLgorCisgLSBvZmZzZXQKKwlVc2FnZTogb3B0aW9uCisJdmFsdWUgdHlwZTogPHUzMj4KKwlEZWZpbml0aW9uOiBMUCByZWdpc3RlciBvZmZzZXQuIGRlZmF1bHQgaXQgaXMgMHgzNC4KKworRVhBTVBMRQorCXNlY19tb25fcnRjX2xwQDEgeworCQljb21wYXRpYmxlID0gImZzbCxzZWMtdjQuMC1tb24tcnRjLWxwIjsKKwkJaW50ZXJydXB0cyA9IDw5MyAyPjsKKwkJcmVnbWFwID0gPCZzbnZzPjsKKwkJb2Zmc2V0ID0gPDB4MzQ+OworCX07CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorU3lzdGVtIE9OL09GRiBrZXkgZHJpdmVyCisKKyAgVGhlIHNudnMtcHdya2V5IGlzIGRlc2lnbmVkIHRvIGVuYWJsZSBQT1dFUiBrZXkgZnVuY3Rpb24gd2hpY2ggY29udHJvbGxlZAorICBieSBTTlZTIE9OT0ZGLCB0aGUgZHJpdmVyIGNhbiByZXBvcnQgdGhlIHN0YXR1cyBvZiBQT1dFUiBrZXkgYW5kIHdha2V1cAorICBzeXN0ZW0gaWYgcHJlc3NlZCBhZnRlciBzeXN0ZW0gc3VzcGVuZC4KKworICAtIGNvbXBhdGlibGU6CisgICAgICBVc2FnZTogcmVxdWlyZWQKKyAgICAgIFZhbHVlIHR5cGU6IDxzdHJpbmc+CisgICAgICBEZWZpbml0aW9uOiBNdXNoIGluY2x1ZGUgImZzbCxzZWMtdjQuMC1wd3JrZXkiLgorCisgIC0gaW50ZXJydXB0czoKKyAgICAgIFVzYWdlOiByZXF1aXJlZAorICAgICAgVmFsdWUgdHlwZTogPHByb3BfZW5jb2RlZC1hcnJheT4KKyAgICAgIERlZmluaXRpb246IFRoZSBTTlZTIE9OL09GRiBpbnRlcnJ1cHQgbnVtYmVyIHRvIHRoZSBDUFUocykuCisKKyAgLSBsaW51eCxrZXljb2RlOgorICAgICAgVXNhZ2U6IG9wdGlvbgorICAgICAgVmFsdWUgdHlwZTogPGludD4KKyAgICAgIERlZmluaXRpb246IEtleWNvZGUgdG8gZW1pdCwgS0VZX1BPV0VSIGJ5IGRlZmF1bHQuCisKKyAgLSB3YWtldXAtc291cmNlOgorICAgICAgVXNhZ2U6IG9wdGlvbgorICAgICAgVmFsdWUgdHlwZTogPGJvbz4KKyAgICAgIERlZmluaXRpb246IEJ1dHRvbiBjYW4gd2FrZS11cCB0aGUgc3lzdGVtLgorCisgLSByZWdtYXA6CisgICAgICBVc2FnZTogcmVxdWlyZWQ6CisgICAgICBWYWx1ZSB0eXBlOiA8cGhhbmRsZT4KKyAgICAgIERlZmluaXRpb246IHRoaXMgaXMgcGhhbmRsZSB0byB0aGUgcmVnaXN0ZXIgbWFwIG5vZGUuCisKK0VYQU1QTEU6CisJc252cy1wd3JrZXlAMHgwMjBjYzAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLHNlYy12NC4wLXB3cmtleSI7CisJCXJlZ21hcCA9IDwmc252cz47CisJCWludGVycnVwdHMgPSA8MCA0IDB4ND4KKwkgICAgICAgIGxpbnV4LGtleWNvZGUgPSA8MTE2PjsgLyogS0VZX1BPV0VSICovCisJCXdha2V1cC1zb3VyY2U7CisJfTsKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitGVUxMIEVYQU1QTEUKKworCWNyeXB0bzogY3J5cHRvQDMwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLHNlYy12NC4wIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQlyZWcgPSA8MHgzMDAwMDAgMHgxMDAwMD47CisJCXJhbmdlcyA9IDwwIDB4MzAwMDAwIDB4MTAwMDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZtcGljPjsKKwkJaW50ZXJydXB0cyA9IDw5MiAyPjsKKworCQlzZWNfanIwOiBqckAxMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLHNlYy12NC4wLWpvYi1yaW5nIjsKKwkJCXJlZyA9IDwweDEwMDAgMHgxMDAwPjsKKwkJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1waWM+OworCQkJaW50ZXJydXB0cyA9IDw4OCAyPjsKKwkJfTsKKworCQlzZWNfanIxOiBqckAyMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLHNlYy12NC4wLWpvYi1yaW5nIjsKKwkJCXJlZyA9IDwweDIwMDAgMHgxMDAwPjsKKwkJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1waWM+OworCQkJaW50ZXJydXB0cyA9IDw4OSAyPjsKKwkJfTsKKworCQlzZWNfanIyOiBqckAzMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLHNlYy12NC4wLWpvYi1yaW5nIjsKKwkJCXJlZyA9IDwweDMwMDAgMHgxMDAwPjsKKwkJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1waWM+OworCQkJaW50ZXJydXB0cyA9IDw5MCAyPjsKKwkJfTsKKworCQlzZWNfanIzOiBqckA0MDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLHNlYy12NC4wLWpvYi1yaW5nIjsKKwkJCXJlZyA9IDwweDQwMDAgMHgxMDAwPjsKKwkJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1waWM+OworCQkJaW50ZXJydXB0cyA9IDw5MSAyPjsKKwkJfTsKKworCQlydGljQDYwMDAgeworCQkJY29tcGF0aWJsZSA9ICJmc2wsc2VjLXY0LjAtcnRpYyI7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDE+OworCQkJcmVnID0gPDB4NjAwMCAweDEwMD47CisJCQlyYW5nZXMgPSA8MHgwIDB4NjEwMCAweGUwMD47CisKKwkJCXJ0aWNfYTogcnRpYy1hQDAgeworCQkJCWNvbXBhdGlibGUgPSAiZnNsLHNlYy12NC4wLXJ0aWMtbWVtb3J5IjsKKwkJCQlyZWcgPSA8MHgwMCAweDIwIDB4MTAwIDB4ODA+OworCQkJfTsKKworCQkJcnRpY19iOiBydGljLWJAMjAgeworCQkJCWNvbXBhdGlibGUgPSAiZnNsLHNlYy12NC4wLXJ0aWMtbWVtb3J5IjsKKwkJCQlyZWcgPSA8MHgyMCAweDIwIDB4MjAwIDB4ODA+OworCQkJfTsKKworCQkJcnRpY19jOiBydGljLWNANDAgeworCQkJCWNvbXBhdGlibGUgPSAiZnNsLHNlYy12NC4wLXJ0aWMtbWVtb3J5IjsKKwkJCQlyZWcgPSA8MHg0MCAweDIwIDB4MzAwIDB4ODA+OworCQkJfTsKKworCQkJcnRpY19kOiBydGljLWRANjAgeworCQkJCWNvbXBhdGlibGUgPSAiZnNsLHNlYy12NC4wLXJ0aWMtbWVtb3J5IjsKKwkJCQlyZWcgPSA8MHg2MCAweDIwIDB4NTAwIDB4ODA+OworCQkJfTsKKwkJfTsKKwl9OworCisJc2VjX21vbjogc2VjX21vbkAzMTQwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxzZWMtdjQuMC1tb24iOworCQlyZWcgPSA8MHgzMTQwMDAgMHgxMDAwPjsKKwkJcmFuZ2VzID0gPDAgMHgzMTQwMDAgMHgxMDAwPjsKKworCQlzZWNfbW9uX3J0Y19scEAzNCB7CisJCQljb21wYXRpYmxlID0gImZzbCxzZWMtdjQuMC1tb24tcnRjLWxwIjsKKwkJCXJlZ21hcCA9IDwmc2VjX21vbj47CisJCQlvZmZzZXQgPSA8MHgzND47CisJCQlpbnRlcnJ1cHRzID0gPDkzIDI+OworCQl9OworCisJCXNudnMtcHdya2V5QDB4MDIwY2MwMDAgeworCQkJY29tcGF0aWJsZSA9ICJmc2wsc2VjLXY0LjAtcHdya2V5IjsKKwkJCXJlZ21hcCA9IDwmc2VjX21vbj47CisJCQlpbnRlcnJ1cHRzID0gPDAgNCAweDQ+OworCQkJbGludXgsa2V5Y29kZSA9IDwxMTY+OyAvKiBLRVlfUE9XRVIgKi8KKwkJCXdha2V1cC1zb3VyY2U7CisJCX07CisJfTsKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL2ZzbC1zZWM2LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcnlwdG8vZnNsLXNlYzYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZjhhM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL2ZzbC1zZWM2LnR4dApAQCAtMCwwICsxLDE1NyBAQAorU0VDIDYgaXMgYXMgRnJlZXNjYWxlJ3MgQ3J5cHRvZ3JhcGhpYyBBY2NlbGVyYXRvciBhbmQgQXNzdXJhbmNlIE1vZHVsZSAoQ0FBTSkuCitDdXJyZW50bHkgRnJlZXNjYWxlIHBvd2VycGMgY2hpcCBDMjlYIGlzIGVtYmVkZGVkIHdpdGggU0VDIDYuCitTRUMgNiBkZXZpY2UgdHJlZSBiaW5kaW5nIGluY2x1ZGU6CisgICAtU0VDIDYgTm9kZQorICAgLUpvYiBSaW5nIE5vZGUKKyAgIC1GdWxsIEV4YW1wbGUKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitTRUMgNiBOb2RlCisKK0Rlc2NyaXB0aW9uCisKKyAgICBOb2RlIGRlZmluZXMgdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgU0VDIDYgYmxvY2suCisgICAgVGhpcyBibG9jayBzcGVjaWZpZXMgdGhlIGFkZHJlc3MgcmFuZ2Ugb2YgYWxsIGdsb2JhbAorICAgIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGZvciB0aGUgU0VDIDYgYmxvY2suCisgICAgRm9yIGV4YW1wbGUsIEluIEMyOTMsIHdlIGNvdWxkIHNlZSB0aHJlZSBTRUMgNiBub2RlLgorCitQUk9QRVJUSUVTCisKKyAgIC0gY29tcGF0aWJsZQorICAgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgICBWYWx1ZSB0eXBlOiA8c3RyaW5nPgorICAgICAgRGVmaW5pdGlvbjogTXVzdCBpbmNsdWRlICJmc2wsc2VjLXY2LjAiLgorCisgICAtIGZzbCxzZWMtZXJhCisgICAgICBVc2FnZTogb3B0aW9uYWwKKyAgICAgIFZhbHVlIHR5cGU6IDx1MzI+CisgICAgICBEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiBEZWZpbmUgdGhlICdFUkEnIG9mIHRoZSBTRUMKKyAgICAgICAgICBkZXZpY2UuCisKKyAgIC0gI2FkZHJlc3MtY2VsbHMKKyAgICAgICBVc2FnZTogcmVxdWlyZWQKKyAgICAgICBWYWx1ZSB0eXBlOiA8dTMyPgorICAgICAgIERlZmluaXRpb246IEEgc3RhbmRhcmQgcHJvcGVydHkuICBEZWZpbmVzIHRoZSBudW1iZXIgb2YgY2VsbHMKKyAgICAgICAgICAgZm9yIHJlcHJlc2VudGluZyBwaHlzaWNhbCBhZGRyZXNzZXMgaW4gY2hpbGQgbm9kZXMuCisKKyAgIC0gI3NpemUtY2VsbHMKKyAgICAgICBVc2FnZTogcmVxdWlyZWQKKyAgICAgICBWYWx1ZSB0eXBlOiA8dTMyPgorICAgICAgIERlZmluaXRpb246IEEgc3RhbmRhcmQgcHJvcGVydHkuICBEZWZpbmVzIHRoZSBudW1iZXIgb2YgY2VsbHMKKyAgICAgICAgICAgZm9yIHJlcHJlc2VudGluZyB0aGUgc2l6ZSBvZiBwaHlzaWNhbCBhZGRyZXNzZXMgaW4KKyAgICAgICAgICAgY2hpbGQgbm9kZXMuCisKKyAgIC0gcmVnCisgICAgICBVc2FnZTogcmVxdWlyZWQKKyAgICAgIFZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisgICAgICBEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiAgU3BlY2lmaWVzIHRoZSBwaHlzaWNhbAorICAgICAgICAgIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgU0VDIDYgY29uZmlndXJhdGlvbiByZWdpc3RlcnMuCisKKyAgIC0gcmFuZ2VzCisgICAgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgICAgVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKyAgICAgICBEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiAgU3BlY2lmaWVzIHRoZSBwaHlzaWNhbCBhZGRyZXNzCisgICAgICAgICAgIHJhbmdlIG9mIHRoZSBTRUMgNi4wIHJlZ2lzdGVyIHNwYWNlICgtU05WUyBub3QgaW5jbHVkZWQpLiAgQQorICAgICAgICAgICB0cmlwbGV0IHRoYXQgaW5jbHVkZXMgdGhlIGNoaWxkIGFkZHJlc3MsIHBhcmVudCBhZGRyZXNzLCAmCisgICAgICAgICAgIGxlbmd0aC4KKworICAgTm90ZTogQWxsIG90aGVyIHN0YW5kYXJkIHByb3BlcnRpZXMgKHNlZSB0aGUgZVBBUFIpIGFyZSBhbGxvd2VkCisgICBidXQgYXJlIG9wdGlvbmFsLgorCitFWEFNUExFCisJY3J5cHRvQGEwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsc2VjLXY2LjAiOworCQlmc2wsc2VjLWVyYSA9IDw2PjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQlyZWcgPSA8MHhhMDAwMCAweDIwMDAwPjsKKwkJcmFuZ2VzID0gPDAgMHhhMDAwMCAweDIwMDAwPjsKKwl9OworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0pvYiBSaW5nIChKUikgTm9kZQorCisgICAgQ2hpbGQgb2YgdGhlIGNyeXB0byBub2RlIGRlZmluZXMgZGF0YSBwcm9jZXNzaW5nIGludGVyZmFjZSB0byBTRUMgNgorICAgIGFjcm9zcyB0aGUgcGVyaXBoZXJhbCBidXMgZm9yIHB1cnBvc2VzIG9mIHByb2Nlc3NpbmcKKyAgICBjcnlwdG9ncmFwaGljIGRlc2NyaXB0b3JzLiBUaGUgc3BlY2lmaWVkIGFkZHJlc3MKKyAgICByYW5nZSBjYW4gYmUgbWFkZSB2aXNpYmxlIHRvIG9uZSAob3IgbW9yZSkgY29yZXMuCisgICAgVGhlIGludGVycnVwdCBkZWZpbmVkIGZvciB0aGlzIG5vZGUgaXMgY29udHJvbGxlZCB3aXRoaW4KKyAgICB0aGUgYWRkcmVzcyByYW5nZSBvZiB0aGlzIG5vZGUuCisKKyAgLSBjb21wYXRpYmxlCisgICAgICBVc2FnZTogcmVxdWlyZWQKKyAgICAgIFZhbHVlIHR5cGU6IDxzdHJpbmc+CisgICAgICBEZWZpbml0aW9uOiBNdXN0IGluY2x1ZGUgImZzbCxzZWMtdjYuMC1qb2ItcmluZyIuCisKKyAgLSByZWcKKyAgICAgIFVzYWdlOiByZXF1aXJlZAorICAgICAgVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKyAgICAgIERlZmluaXRpb246IFNwZWNpZmllcyBhIHR3byBKUiBwYXJhbWV0ZXJzOiAgYW4gb2Zmc2V0IGZyb20KKyAgICAgICAgICAgdGhlIHBhcmVudCBwaHlzaWNhbCBhZGRyZXNzIGFuZCB0aGUgbGVuZ3RoIHRoZSBKUiByZWdpc3RlcnMuCisKKyAgIC0gaW50ZXJydXB0cworICAgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgICBWYWx1ZSB0eXBlOiA8cHJvcF9lbmNvZGVkLWFycmF5PgorICAgICAgRGVmaW5pdGlvbjogIFNwZWNpZmllcyB0aGUgaW50ZXJydXB0cyBnZW5lcmF0ZWQgYnkgdGhpcworICAgICAgICAgICBkZXZpY2UuICBUaGUgdmFsdWUgb2YgdGhlIGludGVycnVwdHMgcHJvcGVydHkKKyAgICAgICAgICAgY29uc2lzdHMgb2Ygb25lIGludGVycnVwdCBzcGVjaWZpZXIuIFRoZSBmb3JtYXQKKyAgICAgICAgICAgb2YgdGhlIHNwZWNpZmllciBpcyBkZWZpbmVkIGJ5IHRoZSBiaW5kaW5nIGRvY3VtZW50CisgICAgICAgICAgIGRlc2NyaWJpbmcgdGhlIG5vZGUncyBpbnRlcnJ1cHQgcGFyZW50LgorCitFWEFNUExFCisJanJAMTAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLHNlYy12Ni4wLWpvYi1yaW5nIjsKKwkJcmVnID0gPDB4MTAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDQ5IDIgMCAwPjsKKwl9OworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitGdWxsIEV4YW1wbGUKKworU2luY2Ugc29tZSBjaGlwcyBtYXkgY29udGFpbiBtb3JlIHRoYW4gb25lIFNFQywgdGhlIGR0c2kgY29udGFpbnMKK29ubHkgdGhlIG5vZGUgY29udGVudHMsIG5vdCB0aGUgbm9kZSBpdHNlbGYuICBBIGNoaXAgdXNpbmcgdGhlIFNFQworc2hvdWxkIGluY2x1ZGUgdGhlIGR0c2kgaW5zaWRlIGVhY2ggU0VDIG5vZGUuICBFeGFtcGxlOgorCitJbiBxb3JpcS1zZWM2LjAuZHRzaToKKworCWNvbXBhdGlibGUgPSAiZnNsLHNlYy12Ni4wIjsKKwlmc2wsc2VjLWVyYSA9IDw2PjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwxPjsKKworCWpyQDEwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxzZWMtdjYuMC1qb2ItcmluZyIsCisJCQkgICAgICJmc2wsc2VjLXY1LjItam9iLXJpbmciLAorCQkJICAgICAiZnNsLHNlYy12NS4wLWpvYi1yaW5nIiwKKwkJCSAgICAgImZzbCxzZWMtdjQuNC1qb2ItcmluZyIsCisJCQkgICAgICJmc2wsc2VjLXY0LjAtam9iLXJpbmciOworCQlyZWcJICAgPSA8MHgxMDAwIDB4MTAwMD47CisJfTsKKworCWpyQDIwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxzZWMtdjYuMC1qb2ItcmluZyIsCisJCQkgICAgICJmc2wsc2VjLXY1LjItam9iLXJpbmciLAorCQkJICAgICAiZnNsLHNlYy12NS4wLWpvYi1yaW5nIiwKKwkJCSAgICAgImZzbCxzZWMtdjQuNC1qb2ItcmluZyIsCisJCQkgICAgICJmc2wsc2VjLXY0LjAtam9iLXJpbmciOworCQlyZWcJICAgPSA8MHgyMDAwIDB4MTAwMD47CisJfTsKKworSW4gdGhlIEMyOTMgZGV2aWNlIHRyZWUsIHdlIGFkZCB0aGUgaW5jbHVkZSBvZiBwdWJsaWMgcHJvcGVydHk6CisKKwljcnlwdG9AYTAwMDAgeworCQkvaW5jbHVkZS8gInFvcmlxLXNlYzYuMC5kdHNpIgorCX0KKworCWNyeXB0b0BhMDAwMCB7CisJCXJlZyA9IDwweGEwMDAwIDB4MjAwMDA+OworCQlyYW5nZXMgPSA8MCAweGEwMDAwIDB4MjAwMDA+OworCisJCWpyQDEwMDAgeworCQkJaW50ZXJydXB0cyA9IDw0OSAyIDAgMD47CisJCX07CisKKwkJanJAMjAwMCB7CisJCQlpbnRlcnJ1cHRzID0gPDUwIDIgMCAwPjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NyeXB0by9pbWctaGFzaC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL2ltZy1oYXNoLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWEzZDc1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NyeXB0by9pbWctaGFzaC50eHQKQEAgLTAsMCArMSwyNyBAQAorSW1hZ2luYXRpb24gVGVjaG5vbG9naWVzIGhhcmR3YXJlIGhhc2ggYWNjZWxlcmF0b3IKKworVGhlIGhhc2ggYWNjZWxlcmF0b3IgcHJvdmlkZXMgaGFyZHdhcmUgaGFzaGluZyBhY2NlbGVyYXRpb24gZm9yCitTSEExLCBTSEEyMjQsIFNIQTI1NiBhbmQgTUQ1IGhhc2hlcworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiAiaW1nLGhhc2gtYWNjZWxlcmF0b3IiCistIHJlZyA6IE9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBtb2R1bGUsIGFuZCB0aGUgRE1BIHBvcnQKKy0gaW50ZXJydXB0cyA6IFRoZSBkZXNpZ25hdGVkIElSUSBsaW5lIGZvciB0aGUgaGFzaGluZyBtb2R1bGUuCistIGRtYXMgOiBETUEgc3BlY2lmaWVyIGFzIHBlciBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2RtYS50eHQKKy0gZG1hLW5hbWVzIDogU2hvdWxkIGJlICJ0eCIKKy0gY2xvY2tzIDogQ2xvY2sgc3BlY2lmaWVycworLSBjbG9jay1uYW1lcyA6ICJzeXMiIFVzZWQgdG8gY2xvY2sgdGhlIGhhc2ggYmxvY2sgcmVnaXN0ZXJzCisJCSJoYXNoIiBVc2VkIHRvIGNsb2NrIGRhdGEgdGhyb3VnaCB0aGUgYWNjZWxlcmF0b3IKKworRXhhbXBsZToKKworCWhhc2g6IGhhc2hAMTgxNDk2MDAgeworCWNvbXBhdGlibGUgPSAiaW1nLGhhc2gtYWNjZWxlcmF0b3IiOworCQlyZWcgPSA8MHgxODE0OTYwMCAweDEwMD4sIDwweDE4MTAxMTAwIDB4ND47CisJCWludGVycnVwdHMgPSA8R0lDX1NIQVJFRCA1OSBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJZG1hcyA9IDwmZG1hIDggMHhmZmZmZmZmZiAwPjsKKwkJZG1hLW5hbWVzID0gInR4IjsKKwkJY2xvY2tzID0gPCZjcl9wZXJpcGggU1lTX0NMS19IQVNIPiwgPCZjbGtfcGVyaXBoIFBFUklQSF9DTEtfUk9NPjsKKwkJY2xvY2stbmFtZXMgPSAic3lzIiwgImhhc2giOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL21hcnZlbGwtY2VzYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL21hcnZlbGwtY2VzYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZjNmE0YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcnlwdG8vbWFydmVsbC1jZXNhLnR4dApAQCAtMCwwICsxLDQ1IEBACitNYXJ2ZWxsIENyeXB0b2dyYXBoaWMgRW5naW5lcyBBbmQgU2VjdXJpdHkgQWNjZWxlcmF0b3IKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHN0cmluZworCSAgICAgICJtYXJ2ZWxsLG9yaW9uLWNyeXB0byIKKwkgICAgICAibWFydmVsbCxraXJrd29vZC1jcnlwdG8iCisJICAgICAgIm1hcnZlbGwsZG92ZS1jcnlwdG8iCisJICAgICAgIm1hcnZlbGwsYXJtYWRhLTM3MC1jcnlwdG8iCisJICAgICAgIm1hcnZlbGwsYXJtYWRhLXhwLWNyeXB0byIKKwkgICAgICAibWFydmVsbCxhcm1hZGEtMzc1LWNyeXB0byIKKwkgICAgICAibWFydmVsbCxhcm1hZGEtMzh4LWNyeXB0byIKKy0gcmVnOiBiYXNlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGVuZ2luZSBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgICAgICByZWdpb24uIENhbiBhbHNvIGNvbnRhaW4gYW4gZW50cnkgZm9yIHRoZSBTUkFNIGF0dGFjaGVkIHRvIHRoZSBDRVNBLAorICAgICAgIGJ1dCB0aGlzIHJlcHJlc2VudGF0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIG1hcnZlbGwsY3J5cHRvLXNyYW1zIHNob3VsZAorICAgICAgIGJlIHVzZWQgaW5zdGVhZAorLSByZWctbmFtZXM6ICJyZWdzIi4gQ2FuIGNvbnRhaW4gYW4gInNyYW0iIGVudHJ5LCBidXQgdGhpcyByZXByZXNlbnRhdGlvbgorCSAgICAgaXMgZGVwcmVjYXRlZCBhbmQgbWFydmVsbCxjcnlwdG8tc3JhbXMgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZAorLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgbnVtYmVyCistIGNsb2NrczogcmVmZXJlbmNlIHRvIHRoZSBjcnlwdG8gZW5naW5lcyBjbG9ja3MuIFRoaXMgcHJvcGVydHkgaXMgbm90CisJICByZXF1aXJlZCBmb3Igb3Jpb24gYW5kIGtpcmt3b29kIHBsYXRmb3JtcworLSBjbG9jay1uYW1lczogImNlc2FYIiBhbmQgImNlc2F6WCIsIFggc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IHRoZSBjcnlwdG8gZW5naW5lCisJICAgICAgIGlkLgorCSAgICAgICBUaGlzIHByb3BlcnR5IGlzIG5vdCByZXF1aXJlZCBmb3IgdGhlIG9yaW9uIGFuZCBraXJrd29vcmQKKwkgICAgICAgcGxhdGZvcm1zLgorCSAgICAgICAiY2VzYXpYIiBjbG9ja3MgYXJlIG5vdCByZXF1aXJlZCBvbiBhcm1hZGEtMzcwIHBsYXRmb3JtcworLSBtYXJ2ZWxsLGNyeXB0by1zcmFtczogcGhhbmRsZSB0byBjcnlwdG8gU1JBTSBkZWZpbml0aW9ucworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBtYXJ2ZWxsLGNyeXB0by1zcmFtLXNpemU6IFNSQU0gc2l6ZSByZXNlcnZlZCBmb3IgY3J5cHRvIG9wZXJhdGlvbnMsIGlmIG5vdAorCQkJICAgIHNwZWNpZmllZCB0aGUgd2hvbGUgU1JBTSBpcyB1c2VkICgyS0IpCisKKworRXhhbXBsZXM6CisKKwljcnlwdG9AOTAwMDAgeworCQljb21wYXRpYmxlID0gIm1hcnZlbGwsYXJtYWRhLXhwLWNyeXB0byI7CisJCXJlZyA9IDwweDkwMDAwIDB4MTAwMDA+OworCQlyZWctbmFtZXMgPSAicmVncyI7CisJCWludGVycnVwdHMgPSA8NDg+LCA8NDk+OworCQljbG9ja3MgPSA8JmdhdGVjbGsgMjM+LCA8JmdhdGVjbGsgMjM+OworCQljbG9jay1uYW1lcyA9ICJjZXNhMCIsICJjZXNhMSI7CisJCW1hcnZlbGwsY3J5cHRvLXNyYW1zID0gPCZjcnlwdG9fc3JhbTA+LCA8JmNyeXB0b19zcmFtMT47CisJCW1hcnZlbGwsY3J5cHRvLXNyYW0tc2l6ZSA9IDwweDYwMD47CisJCXN0YXR1cyA9ICJva2F5IjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NyeXB0by9tdl9jZXNhLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcnlwdG8vbXZfY2VzYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBjMzVmMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcnlwdG8vbXZfY2VzYS50eHQKQEAgLTAsMCArMSwzMyBAQAorTWFydmVsbCBDcnlwdG9ncmFwaGljIEVuZ2luZXMgQW5kIFNlY3VyaXR5IEFjY2VsZXJhdG9yCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBzdHJpbmcKKwkgICAgICAibWFydmVsbCxvcmlvbi1jcnlwdG8iCisJICAgICAgIm1hcnZlbGwsa2lya3dvb2QtY3J5cHRvIgorCSAgICAgICJtYXJ2ZWxsLGRvdmUtY3J5cHRvIgorLSByZWc6IGJhc2UgcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgZW5naW5lIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICAgICAgIHJlZ2lvbi4gQ2FuIGFsc28gY29udGFpbiBhbiBlbnRyeSBmb3IgdGhlIFNSQU0gYXR0YWNoZWQgdG8gdGhlIENFU0EsCisgICAgICAgYnV0IHRoaXMgcmVwcmVzZW50YXRpb24gaXMgZGVwcmVjYXRlZCBhbmQgbWFydmVsbCxjcnlwdG8tc3JhbXMgc2hvdWxkCisgICAgICAgYmUgdXNlZCBpbnN0ZWFkCistIHJlZy1uYW1lczogInJlZ3MiLiBDYW4gY29udGFpbiBhbiAic3JhbSIgZW50cnksIGJ1dCB0aGlzIHJlcHJlc2VudGF0aW9uCisJICAgICBpcyBkZXByZWNhdGVkIGFuZCBtYXJ2ZWxsLGNyeXB0by1zcmFtcyBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkCistIGludGVycnVwdHM6IGludGVycnVwdCBudW1iZXIKKy0gY2xvY2tzOiByZWZlcmVuY2UgdG8gdGhlIGNyeXB0byBlbmdpbmVzIGNsb2Nrcy4gVGhpcyBwcm9wZXJ0eSBpcyBvbmx5CisJICByZXF1aXJlZCBmb3IgRG92ZSBwbGF0Zm9ybXMKKy0gbWFydmVsbCxjcnlwdG8tc3JhbXM6IHBoYW5kbGUgdG8gY3J5cHRvIFNSQU0gZGVmaW5pdGlvbnMKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gbWFydmVsbCxjcnlwdG8tc3JhbS1zaXplOiBTUkFNIHNpemUgcmVzZXJ2ZWQgZm9yIGNyeXB0byBvcGVyYXRpb25zLCBpZiBub3QKKwkJCSAgICBzcGVjaWZpZWQgdGhlIHdob2xlIFNSQU0gaXMgdXNlZCAoMktCKQorCitFeGFtcGxlczoKKworCWNyeXB0b0AzMDAwMCB7CisJCWNvbXBhdGlibGUgPSAibWFydmVsbCxvcmlvbi1jcnlwdG8iOworCQlyZWcgPSA8MHgzMDAwMCAweDEwMDAwPjsKKwkJcmVnLW5hbWVzID0gInJlZ3MiOworCQlpbnRlcnJ1cHRzID0gPDIyPjsKKwkJbWFydmVsbCxjcnlwdG8tc3JhbXMgPSA8JmNyeXB0b19zcmFtPjsKKwkJbWFydmVsbCxjcnlwdG8tc3JhbS1zaXplID0gPDB4NjAwPjsKKwkJc3RhdHVzID0gIm9rYXkiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL29tYXAtYWVzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcnlwdG8vb21hcC1hZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkOTcxNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL29tYXAtYWVzLnR4dApAQCAtMCwwICsxLDMxIEBACitPTUFQIFNvQyBBRVMgY3J5cHRvIE1vZHVsZQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiBTaG91bGQgY29udGFpbiBlbnRyaWVzIGZvciB0aGlzIGFuZCBiYWNrd2FyZCBjb21wYXRpYmxlCisgIEFFUyB2ZXJzaW9uczoKKyAgLSAidGksb21hcDItYWVzIiBmb3IgT01BUDIuCisgIC0gInRpLG9tYXAzLWFlcyIgZm9yIE9NQVAzLgorICAtICJ0aSxvbWFwNC1hZXMiIGZvciBPTUFQNCBhbmQgQU0zM1hYLgorICBOb3RlIHRoYXQgdGhlIE9NQVAyIGFuZCAzIHZlcnNpb25zIGFyZSBjb21wYXRpYmxlIChPTUFQMyBzdXBwb3J0cworICBtb3JlIGFsZ29yaXRobXMpIGJ1dCB0aGV5IGFyZSBpbmNvbXBhdGlibGUgd2l0aCBPTUFQNC4KKy0gdGksaHdtb2RzOiBOYW1lIG9mIHRoZSBod21vZCBhc3NvY2lhdGVkIHdpdGggdGhlIEFFUyBtb2R1bGUKKy0gcmVnIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIG1vZHVsZQorLSBpbnRlcnJ1cHRzIDogdGhlIGludGVycnVwdC1zcGVjaWZpZXIgZm9yIHRoZSBBRVMgbW9kdWxlLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBkbWFzOiBETUEgc3BlY2lmaWVycyBmb3IgdHggYW5kIHJ4IGRtYS4gU2VlIHRoZSBETUEgY2xpZW50IGJpbmRpbmcsCisJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9kbWEudHh0CistIGRtYS1uYW1lczogRE1BIHJlcXVlc3QgbmFtZXMgc2hvdWxkIGluY2x1ZGUgInR4IiBhbmQgInJ4IiBpZiBwcmVzZW50LgorCitFeGFtcGxlOgorCS8qIEFNMzM1eCAqLworCWFlczogYWVzQDUzNTAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSxvbWFwNC1hZXMiOworCQl0aSxod21vZHMgPSAiYWVzIjsKKwkJcmVnID0gPDB4NTM1MDAwMDAgMHhhMD47CisJCWludGVycnVwdHMgPSA8MTAyPjsKKwkJZG1hcyA9IDwmZWRtYSA2PiwKKwkJICAgICAgIDwmZWRtYSA1PjsKKwkJZG1hLW5hbWVzID0gInR4IiwgInJ4IjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NyeXB0by9vbWFwLWRlcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL29tYXAtZGVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGM2M2JmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NyeXB0by9vbWFwLWRlcy50eHQKQEAgLTAsMCArMSwzMCBAQAorT01BUCBTb0MgREVTIGNyeXB0byBNb2R1bGUKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogU2hvdWxkIGNvbnRhaW4gInRpLG9tYXA0LWRlcyIKKy0gdGksaHdtb2RzOiBOYW1lIG9mIHRoZSBod21vZCBhc3NvY2lhdGVkIHdpdGggdGhlIERFUyBtb2R1bGUKKy0gcmVnIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIG1vZHVsZQorLSBpbnRlcnJ1cHRzIDogdGhlIGludGVycnVwdC1zcGVjaWZpZXIgZm9yIHRoZSBERVMgbW9kdWxlCistIGNsb2NrcyA6IEEgcGhhbmRsZSB0byB0aGUgZnVuY3Rpb25hbCBjbG9jayBub2RlIG9mIHRoZSBERVMgbW9kdWxlCisgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcworLSBjbG9jay1uYW1lcyA6IE5hbWUgb2YgdGhlIGZ1bmN0aW9uYWwgY2xvY2ssIHNob3VsZCBiZSAiZmNrIgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBkbWFzOiBETUEgc3BlY2lmaWVycyBmb3IgdHggYW5kIHJ4IGRtYS4gU2VlIHRoZSBETUEgY2xpZW50IGJpbmRpbmcsCisJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9kbWEudHh0CisJRWFjaCBlbnRyeSBjb3JyZXNwb25kcyB0byBhbiBlbnRyeSBpbiBkbWEtbmFtZXMKKy0gZG1hLW5hbWVzOiBETUEgcmVxdWVzdCBuYW1lcyBzaG91bGQgaW5jbHVkZSAidHgiIGFuZCAicngiIGlmIHByZXNlbnQKKworRXhhbXBsZToKKwkvKiBEUkE3eHggU29DICovCisJZGVzOiBkZXNANDgwYTUwMDAgeworCQljb21wYXRpYmxlID0gInRpLG9tYXA0LWRlcyI7CisJCXRpLGh3bW9kcyA9ICJkZXMiOworCQlyZWcgPSA8MHg0ODBhNTAwMCAweGEwPjsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDgyIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQlkbWFzID0gPCZzZG1hIDExNz4sIDwmc2RtYSAxMTY+OworCQlkbWEtbmFtZXMgPSAidHgiLCAicngiOworCQljbG9ja3MgPSA8JmwzX2ljbGtfZGl2PjsKKwkJY2xvY2stbmFtZXMgPSAiZmNrIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NyeXB0by9vbWFwLXNoYW0udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NyeXB0by9vbWFwLXNoYW0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkOTExNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL29tYXAtc2hhbS50eHQKQEAgLTAsMCArMSwyOCBAQAorT01BUCBTb0MgU0hBIGNyeXB0byBNb2R1bGUKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogU2hvdWxkIGNvbnRhaW4gZW50cmllcyBmb3IgdGhpcyBhbmQgYmFja3dhcmQgY29tcGF0aWJsZQorICBTSEFNIHZlcnNpb25zOgorICAtICJ0aSxvbWFwMi1zaGFtIiBmb3IgT01BUDIgJiBPTUFQMy4KKyAgLSAidGksb21hcDQtc2hhbSIgZm9yIE9NQVA0IGFuZCBBTTMzWFguCisgIC0gInRpLG9tYXA1LXNoYW0iIGZvciBPTUFQNSwgRFJBNyBhbmQgQU00M1hYLgorLSB0aSxod21vZHM6IE5hbWUgb2YgdGhlIGh3bW9kIGFzc29jaWF0ZWQgd2l0aCB0aGUgU0hBTSBtb2R1bGUKKy0gcmVnIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIG1vZHVsZQorLSBpbnRlcnJ1cHRzIDogdGhlIGludGVycnVwdC1zcGVjaWZpZXIgZm9yIHRoZSBTSEFNIG1vZHVsZS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gZG1hczogRE1BIHNwZWNpZmllcnMgZm9yIHRoZSByeCBkbWEuIFNlZSB0aGUgRE1BIGNsaWVudCBiaW5kaW5nLAorCURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvZG1hLnR4dAorLSBkbWEtbmFtZXM6IERNQSByZXF1ZXN0IG5hbWUuIFNob3VsZCBiZSAicngiIGlmIGEgZG1hIGlzIHByZXNlbnQuCisKK0V4YW1wbGU6CisJLyogQU0zMzV4ICovCisJc2hhbTogc2hhbUA1MzEwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAidGksb21hcDQtc2hhbSI7CisJCXRpLGh3bW9kcyA9ICJzaGFtIjsKKwkJcmVnID0gPDB4NTMxMDAwMDAgMHgyMDA+OworCQlpbnRlcnJ1cHRzID0gPDEwOT47CisJCWRtYXMgPSA8JmVkbWEgMzY+OworCQlkbWEtbmFtZXMgPSAicngiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL3BpY29jaGlwLXNwYWNjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcnlwdG8vcGljb2NoaXAtc3BhY2MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NjA5ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL3BpY29jaGlwLXNwYWNjLnR4dApAQCAtMCwwICsxLDIzIEBACitQaWNvY2hpcCBwaWNvWGNlbGwgU1BBY2MgKFNlY3VyaXR5IFByb3RvY29sIEFjY2VsZXJhdG9yKSBiaW5kaW5ncworCitQaWNvY2hpcCBwaWNvWGNlbGwgZGV2aWNlcyBjb250YWluIGNyeXB0byBvZmZsb2FkIGVuZ2luZXMgdGhhdCBtYXkgYmUgdXNlZCBmb3IKK0lQU0VDIGFuZCBmZW10b2NlbGwgbGF5ZXIgMiBjaXBoZXJpbmcuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZSA6ICJwaWNvY2hpcCxzcGFjYy1pcHNlYyIgZm9yIHRoZSBJUFNFQyBvZmZsb2FkIGVuZ2luZQorICAgICJwaWNvY2hpcCxzcGFjYy1sMiIgZm9yIHRoZSBmZW10b2NlbGwgbGF5ZXIgMiBjaXBoZXJpbmcgZW5naW5lLgorICAtIHJlZyA6IE9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoaXMgZGV2aWNlCisgIC0gaW50ZXJydXB0LXBhcmVudCA6IFRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGF0IGNvbnRyb2xzIHRoZSBTUEFjYworICAgIGludGVycnVwdC4KKyAgLSBpbnRlcnJ1cHRzIDogVGhlIGludGVycnVwdCBsaW5lIGZyb20gdGhlIFNQQWNjLgorICAtIHJlZi1jbG9jayA6IFRoZSBpbnB1dCBjbG9jayB0aGF0IGRyaXZlcyB0aGUgU1BBY2MuCisKK0V4YW1wbGUgU1BBY2Mgbm9kZToKKworc3BhY2NAMTAwMDAgeworCWNvbXBhdGlibGUgPSAicGljb2NoaXAsc3BhY2MtaXBzZWMiOworCXJlZyA9IDwweDEwMDAwMCAweDEwMDAwPjsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZ2aWMwPjsKKwlpbnRlcnJ1cHRzID0gPDI0PjsKKwlyZWYtY2xvY2sgPSA8Jmlwc2VjX2Nsaz4sICJyZWYiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcnlwdG8vcWNvbS1xY2UudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NyeXB0by9xY29tLXFjZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRkNTNiMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcnlwdG8vcWNvbS1xY2UudHh0CkBAIC0wLDAgKzEsMjUgQEAKK1F1YWxjb21tIGNyeXB0byBlbmdpbmUgZHJpdmVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSAgOiBzaG91bGQgYmUgInFjb20sY3J5cHRvLXY1LjEiCistIHJlZyAgICAgICAgIDogc3BlY2lmaWVzIGJhc2UgcGh5c2ljYWwgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgcmVnaXN0ZXJzIG1hcAorLSBjbG9ja3MgICAgICA6IHBoYW5kbGUgdG8gY2xvY2stY29udHJvbGxlciBwbHVzIGNsb2NrLXNwZWNpZmllciBwYWlyCistIGNsb2NrLW5hbWVzIDogImlmYWNlIiBjbG9ja3MgcmVnaXN0ZXIgaW50ZXJmYWNlCisgICAgICAgICAgICAgICAgImJ1cyIgY2xvY2tzIGRhdGEgdHJhbnNmZXIgaW50ZXJmYWNlCisgICAgICAgICAgICAgICAgImNvcmUiIGNsb2NrcyByZXN0IG9mIHRoZSBjcnlwdG8gYmxvY2sKKy0gZG1hcyAgICAgICAgOiBETUEgc3BlY2lmaWVycyBmb3IgdHggYW5kIHJ4IGRtYSBjaGFubmVscy4gRm9yIG1vcmUgc2VlCisgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9kbWEudHh0CistIGRtYS1uYW1lcyAgIDogRE1BIHJlcXVlc3QgbmFtZXMgc2hvdWxkIGJlICJyeCIgYW5kICJ0eCIKKworRXhhbXBsZToKKwljcnlwdG9AZmQ0NWEwMDAgeworCQljb21wYXRpYmxlID0gInFjb20sY3J5cHRvLXY1LjEiOworCQlyZWcgPSA8MHhmZDQ1YTAwMCAweDYwMDA+OworCQljbG9ja3MgPSA8JmdjYyBHQ0NfQ0UyX0FIQl9DTEs+LAorCQkJIDwmZ2NjIEdDQ19DRTJfQVhJX0NMSz4sCisJCQkgPCZnY2MgR0NDX0NFMl9DTEs+OworCQljbG9jay1uYW1lcyA9ICJpZmFjZSIsICJidXMiLCAiY29yZSI7CisJCWRtYXMgPSA8JmNyeXB0b2JhbSAyPiwgPCZjcnlwdG9iYW0gMz47CisJCWRtYS1uYW1lcyA9ICJyeCIsICJ0eCI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcnlwdG8vc2Ftc3VuZy1zc3MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NyeXB0by9zYW1zdW5nLXNzcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTZkYWZhOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcnlwdG8vc2Ftc3VuZy1zc3MudHh0CkBAIC0wLDAgKzEsMzQgQEAKK1NhbXN1bmcgU29DIFNTUyAoU2VjdXJpdHkgU3ViU3lzdGVtKSBtb2R1bGUKKworVGhlIFNTUyBtb2R1bGUgaW4gUzVQVjIxMCBTb0Mgc3VwcG9ydHMgdGhlIGZvbGxvd2luZzoKKy0tIEZlZWRlciAoRmVlZEN0cmwpCistLSBBZHZhbmNlZCBFbmNyeXB0aW9uIFN0YW5kYXJkIChBRVMpCistLSBEYXRhIEVuY3J5cHRpb24gU3RhbmRhcmQgKERFUykvM0RFUworLS0gUHVibGljIEtleSBBY2NlbGVyYXRvciAoUEtBKQorLS0gU0hBLTEvU0hBLTI1Ni9NRDUvSE1BQyAoU0hBLTEvU0hBLTI1Ni9NRDUpL1BSTkcKKy0tIFBSTkc6IFBzZXVkbyBSYW5kb20gTnVtYmVyIEdlbmVyYXRvcgorCitUaGUgU1NTIG1vZHVsZSBpbiBFeHlub3M0IChFeHlub3M0MjEwKSBhbmQKK0V4eW5vczUgKEV4eW5vczU0MjAgYW5kIEV4eW5vczUyNTApIFNvQ3MKK3N1cHBvcnRzIHRoZSBmb2xsb3dpbmcgYWxzbzoKKy0tIEFSQ0ZPVVIgKEFSQzQpCistLSBUcnVlIFJhbmRvbSBOdW1iZXIgR2VuZXJhdG9yIChUUk5HKQorLS0gU2VjdXJlIEtleSBNYW5hZ2VyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBjb250YWluIGVudHJpZXMgZm9yIHRoaXMgYW5kIGJhY2t3YXJkIGNvbXBhdGlibGUKKyAgU1NTIHZlcnNpb25zOgorICAtICJzYW1zdW5nLHM1cHYyMTAtc2Vjc3MiIGZvciBTNVBWMjEwIFNvQy4KKyAgLSAic2Ftc3VuZyxleHlub3M0MjEwLXNlY3NzIiBmb3IgRXh5bm9zNDIxMCwgRXh5bm9zNDIxMiwgRXh5bm9zNDQxMiwgRXh5bm9zNTI1MCwKKwkJRXh5bm9zNTI2MCBhbmQgRXh5bm9zNTQyMCBTb0NzLgorLSByZWcgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgbW9kdWxlCistIGludGVycnVwdHMgOiBpbnRlcnJ1cHQgc3BlY2lmaWVycyBvZiBTU1MgbW9kdWxlIGludGVycnVwdHMsIHNob3VsZCBjb250YWluCisJCWZvbGxvd2luZyBlbnRyaWVzOgorCQktIGZpcnN0IDogZmVlZCBjb250cm9sIGludGVycnVwdCAocmVxdWlyZWQgZm9yIGFsbCB2YXJpYW50cyksCisJCS0gc2Vjb25kIDogaGFzaCBpbnRlcnJ1cHQgKHJlcXVpcmVkIG9ubHkgZm9yIHNhbXN1bmcsczVwdjIxMC1zZWNzcykuCisKKy0gY2xvY2tzIDogbGlzdCBvZiBjbG9jayBwaGFuZGxlIGFuZCBzcGVjaWZpZXIgcGFpcnMgZm9yIGFsbCBjbG9ja3MgIGxpc3RlZCBpbgorCQljbG9jay1uYW1lcyBwcm9wZXJ0eS4KKy0gY2xvY2stbmFtZXMgOiBsaXN0IG9mIGRldmljZSBjbG9jayBpbnB1dCBuYW1lczsgc2hvdWxkIGNvbnRhaW4gb25lIGVudHJ5CisJCSJzZWNzcyIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL3N1bjRpLXNzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcnlwdG8vc3VuNGktc3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkMzhlOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL3N1bjRpLXNzLnR4dApAQCAtMCwwICsxLDIzIEBACisqIEFsbHdpbm5lciBTZWN1cml0eSBTeXN0ZW0gZm91bmQgb24gQTIwIFNvQworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJhbGx3aW5uZXIsc3VuNGktYTEwLWNyeXB0byIuCistIHJlZzogU2hvdWxkIGNvbnRhaW4gdGhlIFNlY3VyaXR5IFN5c3RlbSByZWdpc3RlciBsb2NhdGlvbiBhbmQgbGVuZ3RoLgorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiB0aGUgSVJRIGxpbmUgZm9yIHRoZSBTZWN1cml0eSBTeXN0ZW0uCistIGNsb2NrcyA6IExpc3Qgb2YgY2xvY2sgc3BlY2lmaWVycywgY29ycmVzcG9uZGluZyB0byBhaGIgYW5kIHNzLgorLSBjbG9jay1uYW1lcyA6IE5hbWUgb2YgdGhlIGZ1bmN0aW9uYWwgY2xvY2ssIHNob3VsZCBiZQorCSogImFoYiIgOiBBSEIgZ2F0aW5nIGNsb2NrCisJKiAibW9kIiA6IFNTIGNvbnRyb2xsZXIgY2xvY2sKKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAtIHJlc2V0cyA6IHBoYW5kbGUgKyByZXNldCBzcGVjaWZpZXIgcGFpcgorIC0gcmVzZXQtbmFtZXMgOiBtdXN0IGNvbnRhaW4gImFoYiIKKworRXhhbXBsZToKKwljcnlwdG86IGNyeXB0by1lbmdpbmVAMDFjMTUwMDAgeworCQljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW40aS1hMTAtY3J5cHRvIjsKKwkJcmVnID0gPDB4MDFjMTUwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDg2IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQljbG9ja3MgPSA8JmFoYl9nYXRlcyA1PiwgPCZzc19jbGs+OworCQljbG9jay1uYW1lcyA9ICJhaGIiLCAibW9kIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RldmZyZXEvZXZlbnQvZXh5bm9zLXBwbXUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RldmZyZXEvZXZlbnQvZXh5bm9zLXBwbXUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlMzZjMWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGV2ZnJlcS9ldmVudC9leHlub3MtcHBtdS50eHQKQEAgLTAsMCArMSwxNDcgQEAKKworKiBTYW1zdW5nIEV4eW5vcyBQUE1VIChQbGF0Zm9ybSBQZXJmb3JtYW5jZSBNb25pdG9yaW5nIFVuaXQpIGRldmljZQorCitUaGUgU2Ftc3VuZyBFeHlub3MgU29DIGhhcyBQUE1VIChQbGF0Zm9ybSBQZXJmb3JtYW5jZSBNb25pdG9yaW5nIFVuaXQpIGZvcgorZWFjaCBJUC4gUFBNVSBwcm92aWRlcyB0aGUgcHJpbWl0aXZlIHZhbHVlcyB0byBnZXQgcGVyZm9ybWFuY2UgZGF0YS4gVGhlc2UKK1BQTVUgZXZlbnRzIHByb3ZpZGUgaW5mb3JtYXRpb24gb2YgdGhlIFNvQydzIGJlaGF2aW9ycyBzbyB0aGF0IHlvdSBtYXkKK3VzZSB0byBhbmFseXplIHN5c3RlbSBwZXJmb3JtYW5jZSwgdG8gbWFrZSBiZWhhdmlvcnMgdmlzaWJsZSBhbmQgdG8gY291bnQKK3VzYWdlcyBvZiBlYWNoIElQIChETUMsIENQVSwgUklHSFRCVVMsIExFRlRCVVMsIENBTSBpbnRlcmZhY2UsIExDRCwgRzNELCBNRkMpLgorVGhlIEV4eW5vcyBQUE1VIGRyaXZlciB1c2VzIHRoZSBkZXZmcmVxLWV2ZW50IGNsYXNzIHRvIHByb3ZpZGUgZXZlbnQgZGF0YQordG8gdmFyaW91cyBkZXZmcmVxIGRldmljZXMuIFRoZSBkZXZmcmVxIGRldmljZXMgd291bGQgdXNlIHRoZSBldmVudCBkYXRhIHdoZW4KK2RlcnRlcm1pbmcgdGhlIGN1cnJlbnQgc3RhdGUgb2YgZWFjaCBJUC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJzYW1zdW5nLGV4eW5vcy1wcG11IiBvciAic2Ftc3VuZyxleHlub3MtcHBtdS12Mi4KKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgZWFjaCBQUE1VIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZCByZWdpb24uCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrLW5hbWVzIDogdGhlIG5hbWUgb2YgY2xvY2sgdXNlZCBieSB0aGUgUFBNVSwgInBwbXUiCistIGNsb2NrcyA6IHBoYW5kbGVzIGZvciBjbG9jayBzcGVjaWZpZWQgaW4gImNsb2NrLW5hbWVzIiBwcm9wZXJ0eQorCitFeGFtcGxlMSA6IFBQTVV2MSBub2RlcyBpbiBleHlub3MzMjUwLmR0c2kgYXJlIGxpc3RlZCBiZWxvdy4KKworCQlwcG11X2RtYzA6IHBwbXVfZG1jMEAxMDZhMDAwMCB7CisJCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zLXBwbXUiOworCQkJcmVnID0gPDB4MTA2YTAwMDAgMHgyMDAwPjsKKwkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJCX07CisKKwkJcHBtdV9kbWMxOiBwcG11X2RtYzFAMTA2YjAwMDAgeworCQkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vcy1wcG11IjsKKwkJCXJlZyA9IDwweDEwNmIwMDAwIDB4MjAwMD47CisJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCQl9OworCisJCXBwbXVfY3B1OiBwcG11X2NwdUAxMDZjMDAwMCB7CisJCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zLXBwbXUiOworCQkJcmVnID0gPDB4MTA2YzAwMDAgMHgyMDAwPjsKKwkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJCX07CisKKwkJcHBtdV9yaWdodGJ1czogcHBtdV9yaWdodGJ1c0AxMTJhMDAwMCB7CisJCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zLXBwbXUiOworCQkJcmVnID0gPDB4MTEyYTAwMDAgMHgyMDAwPjsKKwkJCWNsb2NrcyA9IDwmY211IENMS19QUE1VUklHSFQ+OworCQkJY2xvY2stbmFtZXMgPSAicHBtdSI7CisJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCQl9OworCisJCXBwbXVfbGVmdGJ1czogcHBtdV9sZWZ0YnVzMEAxMTZhMDAwMCB7CisJCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zLXBwbXUiOworCQkJcmVnID0gPDB4MTE2YTAwMDAgMHgyMDAwPjsKKwkJCWNsb2NrcyA9IDwmY211IENMS19QUE1VTEVGVD47CisJCQljbG9jay1uYW1lcyA9ICJwcG11IjsKKwkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJCX07CisKK0V4YW1wbGUyIDogRXZlbnRzIG9mIGVhY2ggUFBNVSBub2RlIGluIGV4eW5vczMyNTAtcmluYXRvLmR0cyBhcmUgbGlzdGVkIGJlbG93LgorCisJJnBwbXVfZG1jMCB7CisJCXN0YXR1cyA9ICJva2F5IjsKKworCQlldmVudHMgeworCQkJcHBtdV9kbWMwXzM6IHBwbXUtZXZlbnQzLWRtYzAgeworCQkJCWV2ZW50LW5hbWUgPSAicHBtdS1ldmVudDMtZG1jMCI7CisJCQl9OworCisJCQlwcG11X2RtYzBfMjogcHBtdS1ldmVudDItZG1jMCB7CisJCQkJZXZlbnQtbmFtZSA9ICJwcG11LWV2ZW50Mi1kbWMwIjsKKwkJCX07CisKKwkJCXBwbXVfZG1jMF8xOiBwcG11LWV2ZW50MS1kbWMwIHsKKwkJCQlldmVudC1uYW1lID0gInBwbXUtZXZlbnQxLWRtYzAiOworCQkJfTsKKworCQkJcHBtdV9kbWMwXzA6IHBwbXUtZXZlbnQwLWRtYzAgeworCQkJCWV2ZW50LW5hbWUgPSAicHBtdS1ldmVudDAtZG1jMCI7CisJCQl9OworCQl9OworCX07CisKKwkmcHBtdV9kbWMxIHsKKwkJc3RhdHVzID0gIm9rYXkiOworCisJCWV2ZW50cyB7CisJCQlwcG11X2RtYzFfMzogcHBtdS1ldmVudDMtZG1jMSB7CisJCQkJZXZlbnQtbmFtZSA9ICJwcG11LWV2ZW50My1kbWMxIjsKKwkJCX07CisJCX07CisJfTsKKworCSZwcG11X2xlZnRidXMgeworCQlzdGF0dXMgPSAib2theSI7CisKKwkJZXZlbnRzIHsKKwkJCXBwbXVfbGVmdGJ1c18zOiBwcG11LWV2ZW50My1sZWZ0YnVzIHsKKwkJCQlldmVudC1uYW1lID0gInBwbXUtZXZlbnQzLWxlZnRidXMiOworCQkJfTsKKwkJfTsKKwl9OworCisJJnBwbXVfcmlnaHRidXMgeworCQlzdGF0dXMgPSAib2theSI7CisKKwkJZXZlbnRzIHsKKwkJCXBwbXVfcmlnaHRidXNfMzogcHBtdS1ldmVudDMtcmlnaHRidXMgeworCQkJCWV2ZW50LW5hbWUgPSAicHBtdS1ldmVudDMtcmlnaHRidXMiOworCQkJfTsKKwkJfTsKKwl9OworCitFeGFtcGxlMyA6IFBQTVV2MiBub2RlcyBpbiBleHlub3M1NDMzLmR0c2kgYXJlIGxpc3RlZCBiZWxvdy4KKworCQlwcG11X2QwX2NwdTogcHBtdV9kMF9jcHVAMTA0ODAwMDAgeworCQkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vcy1wcG11LXYyIjsKKwkJCXJlZyA9IDwweDEwNDgwMDAwIDB4MjAwMD47CisJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCQl9OworCisJCXBwbXVfZDBfZ2VuZXJhbDogcHBtdV9kMF9nZW5lcmFsQDEwNDkwMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3MtcHBtdS12MiI7CisJCQlyZWcgPSA8MHgxMDQ5MDAwMCAweDIwMDA+OworCQkJc3RhdHVzID0gImRpc2FibGVkIjsKKwkJfTsKKworCQlwcG11X2QwX3J0OiBwcG11X2QwX3J0QDEwNGEwMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3MtcHBtdS12MiI7CisJCQlyZWcgPSA8MHgxMDRhMDAwMCAweDIwMDA+OworCQkJc3RhdHVzID0gImRpc2FibGVkIjsKKwkJfTsKKworCQlwcG11X2QxX2NwdTogcHBtdV9kMV9jcHVAMTA0YjAwMDAgeworCQkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vcy1wcG11LXYyIjsKKwkJCXJlZyA9IDwweDEwNGIwMDAwIDB4MjAwMD47CisJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCQl9OworCisJCXBwbXVfZDFfZ2VuZXJhbDogcHBtdV9kMV9nZW5lcmFsQDEwNGMwMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3MtcHBtdS12MiI7CisJCQlyZWcgPSA8MHgxMDRjMDAwMCAweDIwMDA+OworCQkJc3RhdHVzID0gImRpc2FibGVkIjsKKwkJfTsKKworCQlwcG11X2QxX3J0OiBwcG11X2QxX3J0QDEwNGQwMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3MtcHBtdS12MiI7CisJCQlyZWcgPSA8MHgxMDRkMDAwMCAweDIwMDA+OworCQkJc3RhdHVzID0gImRpc2FibGVkIjsKKwkJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2FybSxwbDExeC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9hcm0scGwxMXgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlMzAzOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9hcm0scGwxMXgudHh0CkBAIC0wLDAgKzEsMTA5IEBACisqIEFSTSBQcmltZUNlbGwgQ29sb3IgTENEIENvbnRyb2xsZXIgUEwxMTAvUEwxMTEKKworU2VlIGFsc28gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9wcmltZWNlbGwudHh0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogbXVzdCBiZSBvbmUgb2Y6CisJImFybSxwbDExMCIsICJhcm0scHJpbWVjZWxsIgorCSJhcm0scGwxMTEiLCAiYXJtLHByaW1lY2VsbCIKKworLSByZWc6IGJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgY29udHJvbCByZWdpc3RlcnMgYmxvY2sKKworLSBpbnRlcnJ1cHQtbmFtZXM6IGVpdGhlciB0aGUgc2luZ2xlIGVudHJ5ICJjb21iaW5lZCIgcmVwcmVzZW50aW5nIGEKKwljb21iaW5lZCBpbnRlcnJ1cHQgb3V0cHV0IChDTENESU5UUiksIG9yIHRoZSBmb3VyIGVudHJpZXMKKwkibWJlIiwgInZjb21wIiwgImxuYnUiLCAiZnVmIiByZXByZXNlbnRpbmcgdGhlIGluZGl2aWR1YWwKKwlDTENETUJFSU5UUiwgQ0xDRFZDT01QSU5UUiwgQ0xDRExOQlVJTlRSLCBDTENERlVGSU5UUiBpbnRlcnJ1cHRzCisKKy0gaW50ZXJydXB0czogY29udGFpbnMgYW4gaW50ZXJydXB0IHNwZWNpZmllciBmb3IgZWFjaCBlbnRyeSBpbgorCWludGVycnVwdC1uYW1lcworCistIGNsb2NrLW5hbWVzOiBzaG91bGQgY29udGFpbiAiY2xjZGNsayIgYW5kICJhcGJfcGNsayIKKworLSBjbG9ja3M6IGNvbnRhaW5zIHBoYW5kbGUgYW5kIGNsb2NrIHNwZWNpZmllciBwYWlycyBmb3IgdGhlIGVudHJpZXMKKwlpbiB0aGUgY2xvY2stbmFtZXMgcHJvcGVydHkuIFNlZQorCURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5nL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIG1lbW9yeS1yZWdpb246IHBoYW5kbGUgdG8gYSBub2RlIGRlc2NyaWJpbmcgbWVtb3J5IChzZWUKKwlEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzZXJ2ZWQtbWVtb3J5L3Jlc2VydmVkLW1lbW9yeS50eHQpCisJdG8gYmUgdXNlZCBmb3IgdGhlIGZyYW1lYnVmZmVyOyBpZiBub3QgcHJlc2VudCwgdGhlIGZyYW1lYnVmZmVyCisJbWF5IGJlIGxvY2F0ZWQgYW55d2hlcmUgaW4gdGhlIG1lbW9yeQorCistIG1heC1tZW1vcnktYmFuZHdpZHRoOiBtYXhpbXVtIGJhbmR3aWR0aCBpbiBieXRlcyBwZXIgc2Vjb25kIHRoYXQgdGhlCisJY2VsbCdzIG1lbW9yeSBpbnRlcmZhY2UgY2FuIGhhbmRsZTsgaWYgbm90IHByZXNlbnQsIHRoZSBtZW1vcnkKKwlpbnRlcmZhY2UgaXMgZmFzdCBlbm91Z2ggdG8gaGFuZGxlIGFsbCBwb3NzaWJsZSB2aWRlbyBtb2RlcworCitSZXF1aXJlZCBzdWItbm9kZXM6CisKKy0gcG9ydDogZGVzY3JpYmVzIExDRCBwYW5lbCBzaWduYWxzLCBmb2xsb3dpbmcgdGhlIGNvbW1vbiBiaW5kaW5nCisJZm9yIHZpZGVvIHRyYW5zbWl0dGVyIGludGVyZmFjZXM7IHNlZQorCURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS92aWRlby1pbnRlcmZhY2VzLnR4dDsKKwl3aGVuIGl0IGlzIGEgVEZUIHBhbmVsLCB0aGUgcG9ydCdzIGVuZHBvaW50IG11c3QgZGVmaW5lIHRoZQorCWZvbGxvd2luZyBwcm9wZXJ0eToKKworCS0gYXJtLHBsMTF4LHRmdC1yMGcwYjAtcGFkczogYW4gYXJyYXkgb2YgdGhyZWUgMzItYml0IHZhbHVlcywKKwkJZGVmaW5pbmcgdGhlIHdheSBDTEQgcGFkcyBhcmUgd2lyZWQgdXA7IGZpcnN0IHZhbHVlCisJCWNvbnRhaW5zIGluZGV4IG9mIHRoZSAiQ0xEIiBleHRlcm5hbCBwaW4gKHBhZCkgdXNlZAorCQlhcyBSMCAoZmlyc3QgYml0IG9mIHRoZSByZWQgY29tcG9uZW50KSwgc2Vjb25kIHZhbHVlCisJICAgICAgICBpbmRleCBvZiB0aGUgcGFkIHVzZWQgYXMgRzAsIHRoaXJkIHZhbHVlIGluZGV4IG9mIHRoZQorCQlwYWQgdXNlZCBhcyBCMCwgc2VlIGFsc28gIkxDRCBwYW5lbCBzaWduYWwgbXVsdGlwbGV4aW5nCisJCWRldGFpbHMiIHBhcmFncmFwaHMgaW4gdGhlIFBMMTEwL1BMMTExIFRlY2huaWNhbAorCQlSZWZlcmVuY2UgTWFudWFsczsgdGhpcyBpbXBsaWNpdGx5IGRlZmluZXMgYXZhaWxhYmxlCisJCWNvbG9yIG1vZGVzLCBmb3IgZXhhbXBsZToKKwkJLSBQTDExMSBURlQgNDo0OjQgcGFuZWw6CisJCQlhcm0scGwxMXgsdGZ0LXIwZzBiMC1wYWRzID0gPDQgMTUgMjA+OworCQktIFBMMTEwIFRGVCAoMTopNTo1OjUgcGFuZWw6CisJCQlhcm0scGwxMXgsdGZ0LXIwZzBiMC1wYWRzID0gPDEgNyAxMz47CisJCS0gUEwxMTEgVEZUICgxOik1OjU6NSBwYW5lbDoKKwkJCWFybSxwbDExeCx0ZnQtcjBnMGIwLXBhZHMgPSA8MyAxMSAxOT47CisJCS0gUEwxMTEgVEZUIDU6Njo1IHBhbmVsOgorCQkJYXJtLHBsMTF4LHRmdC1yMGcwYjAtcGFkcyA9IDwzIDEwIDE5PjsKKwkJLSBQTDExMCBhbmQgUEwxMTEgVEZUIDg6ODo4IHBhbmVsOgorCQkJYXJtLHBsMTF4LHRmdC1yMGcwYjAtcGFkcyA9IDwwIDggMTY+OworCQktIFBMMTEwIGFuZCBQTDExMSBURlQgODo4OjggcGFuZWwsIFIgJiBCIGNvbXBvbmVudHMgc3dhcHBlZDoKKwkJCWFybSxwbDExeCx0ZnQtcjBnMGIwLXBhZHMgPSA8MTYgOCAwPjsKKworCitFeGFtcGxlOgorCisJY2xjZEAxMDAyMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiYXJtLHBsMTExIiwgImFybSxwcmltZWNlbGwiOworCQlyZWcgPSA8MHgxMDAyMDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHQtbmFtZXMgPSAiY29tYmluZWQiOworCQlpbnRlcnJ1cHRzID0gPDAgNDQgND47CisJCWNsb2NrcyA9IDwmb3NjY2xrMT4sIDwmb3NjY2xrMj47CisJCWNsb2NrLW5hbWVzID0gImNsY2RjbGsiLCAiYXBiX3BjbGsiOworCQltYXgtbWVtb3J5LWJhbmR3aWR0aCA9IDw5NDM3MTg0MD47IC8qIEJwcywgMTAyNHg3NjhANjAgMTZicHAgKi8KKworCQlwb3J0IHsKKwkJCWNsY2RfcGFkczogZW5kcG9pbnQgeworCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmY2xjZF9wYW5lbD47CisJCQkJYXJtLHBsMTF4LHRmdC1yMGcwYjAtcGFkcyA9IDwwIDggMTY+OworCQkJfTsKKwkJfTsKKworCX07CisKKwlwYW5lbCB7CisJCWNvbXBhdGlibGUgPSAicGFuZWwtZHBpIjsKKworCQlwb3J0IHsKKwkJCWNsY2RfcGFuZWw6IGVuZHBvaW50IHsKKwkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmNsY2RfcGFkcz47CisJCQl9OworCQl9OworCisJCXBhbmVsLXRpbWluZyB7CisJCQljbG9jay1mcmVxdWVuY3kgPSA8MjUxNzUwMDA+OworCQkJaGFjdGl2ZSA9IDw2NDA+OworCQkJaGJhY2stcG9yY2ggPSA8NDA+OworCQkJaGZyb250LXBvcmNoID0gPDI0PjsKKwkJCWhzeW5jLWxlbiA9IDw5Nj47CisJCQl2YWN0aXZlID0gPDQ4MD47CisJCQl2YmFjay1wb3JjaCA9IDwzMj47CisJCQl2ZnJvbnQtcG9yY2ggPSA8MTE+OworCQkJdnN5bmMtbGVuID0gPDI+OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9hcm1hZGEvbWFydmVsbCxkb3ZlLWxjZC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9hcm1hZGEvbWFydmVsbCxkb3ZlLWxjZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY1MjVlYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2FybWFkYS9tYXJ2ZWxsLGRvdmUtbGNkLnR4dApAQCAtMCwwICsxLDMwIEBACitEZXZpY2UgVHJlZSBiaW5kaW5ncyBmb3IgQXJtYWRhIERSTSBDUlRDIGRyaXZlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZTogdmFsdWUgc2hvdWxkIGJlICJtYXJ2ZWxsLGRvdmUtbGNkIi4KKyAtIHJlZzogYmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSBMQ0QgY29udHJvbGxlcgorIC0gaW50ZXJydXB0czogc2luZ2xlIGludGVycnVwdCBudW1iZXIgZm9yIHRoZSBMQ0QgY29udHJvbGxlcgorIC0gcG9ydDogdmlkZW8gb3V0cHV0IHBvcnQgd2l0aCBlbmRwb2ludHMsIGFzIGRlc2NyaWJlZCBieSBncmFwaC50eHQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKworIC0gY2xvY2tzOiBhcyBkZXNjcmliZWQgYnkgY2xvY2stYmluZGluZ3MudHh0CisgLSBjbG9jay1uYW1lczogYXMgZGVzY3JpYmVkIGJ5IGNsb2NrLWJpbmRpbmdzLnR4dAorCSJheGljbGsiIC0gYXhpIGJ1cyBjbG9jayBmb3IgcGl4ZWwgY2xvY2sKKwkicGxsZGl2aWRlciIgLSBwbGwgZGl2aWRlciBjbG9jayBmb3IgcGl4ZWwgY2xvY2sKKwkiZXh0X3JlZl9jbGswIiAtIGV4dGVybmFsIGNsb2NrIDAgZm9yIHBpeGVsIGNsb2NrCisJImV4dF9yZWZfY2xrMSIgLSBleHRlcm5hbCBjbG9jayAxIGZvciBwaXhlbCBjbG9jaworCitOb3RlOiBhbGwgY2xvY2tzIGFyZSBvcHRpb25hbCBidXQgYXQgbGVhc3Qgb25lIG11c3QgYmUgc3BlY2lmaWVkLgorRnVydGhlciBjbG9ja3MgbWF5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUgYWNjb3JkaW5nIHRvIHJlcXVpcmVtZW50cyBvZgorZGlmZmVyZW50IFNvQ3MuCisKK0V4YW1wbGU6CisKKwlsY2QwOiBsY2QtY29udHJvbGxlckA4MjAwMDAgeworCQljb21wYXRpYmxlID0gIm1hcnZlbGwsZG92ZS1sY2QiOworCQlyZWcgPSA8MHg4MjAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDw0Nz47CisJCWNsb2NrcyA9IDwmc2k1MzUxIDA+OworCQljbG9jay1uYW1lcyA9ICJleHRfcmVmX2Nsa18xIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYXRtZWwsbGNkYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9hdG1lbCxsY2RjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2I4ZGEwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYXRtZWwsbGNkYy50eHQKQEAgLTAsMCArMSw4OSBAQAorQXRtZWwgTENEQyBGcmFtZWJ1ZmZlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6CisJImF0bWVsLGF0OTFzYW05MjYxLWxjZGMiICwgCisJImF0bWVsLGF0OTFzYW05MjYzLWxjZGMiICwKKwkiYXRtZWwsYXQ5MXNhbTlnMTAtbGNkYyIgLAorCSJhdG1lbCxhdDkxc2FtOWc0NS1sY2RjIiAsCisJImF0bWVsLGF0OTFzYW05ZzQ1ZXMtbGNkYyIgLAorCSJhdG1lbCxhdDkxc2FtOXJsLWxjZGMiICwKKwkiYXRtZWwsYXQzMmFwLWxjZGMiCistIHJlZyA6IFNob3VsZCBjb250YWluIDEgcmVnaXN0ZXIgcmFuZ2VzKGFkZHJlc3MgYW5kIGxlbmd0aCkuCisJQ2FuIGNvbnRhaW4gYW4gYWRkaXRpb25hbCByZWdpc3RlciByYW5nZShhZGRyZXNzIGFuZCBsZW5ndGgpCisJZm9yIGZpeGVkIGZyYW1lYnVmZmVyIG1lbW9yeS4gVXNlZnVsIGZvciBkZWRpY2F0ZWQgbWVtb3JpZXMuCistIGludGVycnVwdHMgOiBmcmFtZWJ1ZmZlciBjb250cm9sbGVyIGludGVycnVwdAorLSBkaXNwbGF5OiBhIHBoYW5kbGUgcG9pbnRpbmcgdG8gdGhlIGRpc3BsYXkgbm9kZQorCitSZXF1aXJlZCBub2RlczoKKy0gZGlzcGxheTogYSBkaXNwbGF5IG5vZGUgaXMgcmVxdWlyZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbGNkIHBhbmVsCisJVGhpcyBzaG91bGQgYmUgaW4gdGhlIGJvYXJkIGR0cy4KKy0gZGVmYXVsdC1tb2RlOiBhIHZpZGVvbW9kZSB3aXRoaW4gdGhlIGRpc3BsYXkgd2l0aCB0aW1pbmcgcGFyYW1ldGVycworCWFzIHNwZWNpZmllZCBiZWxvdy4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gbGNkLXN1cHBseTogUmVndWxhdG9yIGZvciBMQ0Qgc3VwcGx5IHZvbHRhZ2UuCisKK0V4YW1wbGU6CisKKwlmYjA6IGZiQDB4MDA1MDAwMDAgeworCQljb21wYXRpYmxlID0gImF0bWVsLGF0OTFzYW05ZzQ1LWxjZGMiOworCQlyZWcgPSA8MHgwMDUwMDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDIzIDMgMD47CisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmcGluY3RybF9mYj47CisJCWRpc3BsYXkgPSA8JmRpc3BsYXkwPjsKKwkJc3RhdHVzID0gIm9rYXkiOworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisKKwl9OworCitFeGFtcGxlIGZvciBmaXhlZCBmcmFtZWJ1ZmZlciBtZW1vcnk6CisKKwlmYjA6IGZiQDB4MDA1MDAwMDAgeworCQljb21wYXRpYmxlID0gImF0bWVsLGF0OTFzYW05MjYzLWxjZGMiOworCQlyZWcgPSA8MHgwMDcwMDAwMCAweDEwMDAgMHg3MDAwMDAwMCAweDIwMDAwMD47CisJCVsuLi5dCisJfTsKKworQXRtZWwgTENEQyBEaXNwbGF5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUmVxdWlyZWQgcHJvcGVydGllcyAoYXMgcGVyIG9mX3ZpZGVvbW9kZV9oZWxwZXIpOgorCisgLSBhdG1lbCxkbWFjb246IGRtYSBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb24KKyAtIGF0bWVsLGxjZGNvbjI6IGxjZCBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb24KKyAtIGF0bWVsLGd1YXJkLXRpbWU6IGxjZCBndWFyZCB0aW1lIChEZWxheSBpbiBmcmFtZSBwZXJpb2RzKQorIC0gYml0cy1wZXItcGl4ZWw6IGxjZCBwYW5lbCBiaXQtZGVwdGguCisKK09wdGlvbmFsIHByb3BlcnRpZXMgKGFzIHBlciBvZl92aWRlb21vZGVfaGVscGVyKToKKyAtIGF0bWVsLGxjZGNvbi1iYWNrbGlnaHQ6IGVuYWJsZSBiYWNrbGlnaHQKKyAtIGF0bWVsLGxjZGNvbi1iYWNrbGlnaHQtaW52ZXJ0ZWQ6IGludmVydCBiYWNrbGlnaHQgUFdNIHBvbGFyaXR5CisgLSBhdG1lbCxsY2Qtd2lyaW5nLW1vZGU6IGxjZCB3aXJpbmcgbW9kZSAiUkdCIiBvciAiQlJHIgorIC0gYXRtZWwscG93ZXItY29udHJvbC1ncGlvOiBncGlvIHRvIHBvd2VyIG9uIG9yIG9mZiB0aGUgTENEIChhcyBtYW55IGFzIG5lZWRlZCkKKworRXhhbXBsZToKKwlkaXNwbGF5MDogZGlzcGxheSB7CisJCWJpdHMtcGVyLXBpeGVsID0gPDMyPjsKKwkJYXRtZWwsbGNkY29uLWJhY2tsaWdodDsKKwkJYXRtZWwsZG1hY29uID0gPDB4MT47CisJCWF0bWVsLGxjZGNvbjIgPSA8MHg4MDAwODAwMj47CisJCWF0bWVsLGd1YXJkLXRpbWUgPSA8OT47CisJCWF0bWVsLGxjZC13aXJpbmctbW9kZSA9IDwxPjsKKworCQlkaXNwbGF5LXRpbWluZ3MgeworCQkJbmF0aXZlLW1vZGUgPSA8JnRpbWluZzA+OworCQkJdGltaW5nMDogdGltaW5nMCB7CisJCQkJY2xvY2stZnJlcXVlbmN5ID0gPDkwMDAwMDA+OworCQkJCWhhY3RpdmUgPSA8NDgwPjsKKwkJCQl2YWN0aXZlID0gPDI3Mj47CisJCQkJaGJhY2stcG9yY2ggPSA8MT47CisJCQkJaGZyb250LXBvcmNoID0gPDE+OworCQkJCXZiYWNrLXBvcmNoID0gPDQwPjsKKwkJCQl2ZnJvbnQtcG9yY2ggPSA8MT47CisJCQkJaHN5bmMtbGVuID0gPDQ1PjsKKwkJCQl2c3luYy1sZW4gPSA8MT47CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9hdG1lbC9obGNkYy1kYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9hdG1lbC9obGNkYy1kYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJjMWE5MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2F0bWVsL2hsY2RjLWRjLnR4dApAQCAtMCwwICsxLDUzIEBACitEZXZpY2UtVHJlZSBiaW5kaW5ncyBmb3IgQXRtZWwncyBITENEQyAoSGlnaCBMQ0QgQ29udHJvbGxlcikgRFJNIGRyaXZlcgorCitUaGUgQXRtZWwgSExDREMgRGlzcGxheSBDb250cm9sbGVyIGlzIHN1YmRldmljZSBvZiB0aGUgSExDREMgTUZEIGRldmljZS4KK1NlZSAuLi9tZmQvYXRtZWwtaGxjZGMudHh0IGZvciBtb3JlIGRldGFpbHMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiB2YWx1ZSBzaG91bGQgYmUgImF0bWVsLGhsY2RjLWRpc3BsYXktY29udHJvbGxlciIKKyAtIHBpbmN0cmwtbmFtZXM6IHRoZSBwaW4gY29udHJvbCBzdGF0ZSBuYW1lcy4gU2hvdWxkIGNvbnRhaW4gImRlZmF1bHQiLgorIC0gcGluY3RybC0wOiBzaG91bGQgY29udGFpbiB0aGUgZGVmYXVsdCBwaW5jdHJsIHN0YXRlcy4KKyAtICNhZGRyZXNzLWNlbGxzOiBzaG91bGQgYmUgc2V0IHRvIDEuCisgLSAjc2l6ZS1jZWxsczogc2hvdWxkIGJlIHNldCB0byAwLgorCitSZXF1aXJlZCBjaGlsZHJlbiBub2RlczoKKyBDaGlsZHJlbiBub2RlcyBhcmUgZW5jb2RpbmcgYXZhaWxhYmxlIG91dHB1dCBwb3J0cyBhbmQgdGhlaXIgY29ubmVjdGlvbnMKKyB0byBleHRlcm5hbCBkZXZpY2VzIHVzaW5nIHRoZSBPRiBncmFwaCByZXByZW5zZW50YXRpb24gKHNlZSAuLi9ncmFwaC50eHQpLgorIEF0IGxlYXN0IG9uZSBwb3J0IG5vZGUgaXMgcmVxdWlyZWQuCisKK0V4YW1wbGU6CisKKwlobGNkYzogaGxjZGNAZjAwMzAwMDAgeworCQljb21wYXRpYmxlID0gImF0bWVsLHNhbWE1ZDMtaGxjZGMiOworCQlyZWcgPSA8MHhmMDAzMDAwMCAweDIwMDA+OworCQlpbnRlcnJ1cHRzID0gPDM2IElSUV9UWVBFX0xFVkVMX0hJR0ggMD47CisJCWNsb2NrcyA9IDwmbGNkY19jbGs+LCA8JmxjZGNrPiwgPCZjbGszMms+OworCQljbG9jay1uYW1lcyA9ICJwZXJpcGhfY2xrIiwic3lzX2NsayIsICJzbG93X2NsayI7CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisKKwkJaGxjZGMtZGlzcGxheS1jb250cm9sbGVyIHsKKwkJCWNvbXBhdGlibGUgPSAiYXRtZWwsaGxjZGMtZGlzcGxheS1jb250cm9sbGVyIjsKKwkJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfbGNkX2Jhc2UgJnBpbmN0cmxfbGNkX3JnYjg4OD47CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCisJCQlwb3J0QDAgeworCQkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJCSNzaXplLWNlbGxzID0gPDA+OworCQkJCXJlZyA9IDwwPjsKKworCQkJCWhsY2RjX3BhbmVsX291dHB1dDogZW5kcG9pbnRAMCB7CisJCQkJCXJlZyA9IDwwPjsKKwkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZwYW5lbF9pbnB1dD47CisJCQkJfTsKKwkJCX07CisJCX07CisKKwkJaGxjZGNfcHdtOiBobGNkYy1wd20geworCQkJY29tcGF0aWJsZSA9ICJhdG1lbCxobGNkYy1wd20iOworCQkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwkJCXBpbmN0cmwtMCA9IDwmcGluY3RybF9sY2RfcHdtPjsKKwkJCSNwd20tY2VsbHMgPSA8Mz47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyY20sYmNtLXZjNC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmNtLGJjbS12YzQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2YTk2MWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmNtLGJjbS12YzQudHh0CkBAIC0wLDAgKzEsNjUgQEAKK0Jyb2FkY29tIFZDNCAoVmlkZW9Db3JlNCkgR1BVCisKK1RoZSBWQzQgZGV2aWNlIHByZXNlbnQgb24gdGhlIFJhc3BiZXJyeSBQaSBpbmNsdWRlcyBhIGRpc3BsYXkgc3lzdGVtCit3aXRoIEhETUkgb3V0cHV0IGFuZCB0aGUgSFZTIChIYXJkd2FyZSBWaWRlbyBTY2FsZXIpIGZvciBjb21wb3NpdGluZworZGlzcGxheSBwbGFuZXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIFZDNDoKKy0gY29tcGF0aWJsZToJU2hvdWxkIGJlICJicmNtLGJjbTI4MzUtdmM0IgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBQaXhlbCBWYWx2ZToKKy0gY29tcGF0aWJsZToJU2hvdWxkIGJlIG9uZSBvZiAiYnJjbSxiY20yODM1LXBpeGVsdmFsdmUwIiwKKwkJICAiYnJjbSxiY20yODM1LXBpeGVsdmFsdmUxIiwgb3IgImJyY20sYmNtMjgzNS1waXhlbHZhbHZlMiIKKy0gcmVnOgkJUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIFBWJ3MgcmVnaXN0ZXJzCistIGludGVycnVwdHM6CVRoZSBpbnRlcnJ1cHQgbnVtYmVyCisJCSAgU2VlIGJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2JyY20sYmNtMjgzNS1hcm1jdHJsLWljLnR4dAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBIVlM6CistIGNvbXBhdGlibGU6CVNob3VsZCBiZSAiYnJjbSxiY20yODM1LWh2cyIKKy0gcmVnOgkJUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIEhWUydzIHJlZ2lzdGVycworLSBpbnRlcnJ1cHRzOglUaGUgaW50ZXJydXB0IG51bWJlcgorCQkgIFNlZSBiaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9icmNtLGJjbTI4MzUtYXJtY3RybC1pYy50eHQKKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgSERNSQorLSBjb21wYXRpYmxlOglTaG91bGQgYmUgImJyY20sYmNtMjgzNS1oZG1pIgorLSByZWc6CQlQaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgdHdvIHJlZ2lzdGVyIHJhbmdlcworCQkgICgiSERNSSIgYW5kICJIRCIsIGluIHRoYXQgb3JkZXIpCistIGludGVycnVwdHM6CVRoZSBpbnRlcnJ1cHQgbnVtYmVycworCQkgIFNlZSBiaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9icmNtLGJjbTI4MzUtYXJtY3RybC1pYy50eHQKKy0gZGRjOgkJcGhhbmRsZSBvZiB0aGUgSTJDIGNvbnRyb2xsZXIgdXNlZCBmb3IgRERDIEVESUQgcHJvYmluZworLSBjbG9ja3M6CWEpIGhkbWk6IFRoZSBIRE1JIHN0YXRlIG1hY2hpbmUgY2xvY2sKKwkJYikgcGl4ZWw6IFRoZSBwaXhlbCBjbG9jay4KKworT3B0aW9uYWwgcHJvcGVydGllcyBmb3IgSERNSToKKy0gaHBkLWdwaW9zOglUaGUgR1BJTyBwaW4gZm9yIEhETUkgaG90cGx1ZyBkZXRlY3QgKGlmIGl0IGRvZXNuJ3QgYXBwZWFyCisJCSAgYXMgYW4gaW50ZXJydXB0L3N0YXR1cyBiaXQgaW4gdGhlIEhETUkgY29udHJvbGxlcgorCQkgIGl0c2VsZikuICBTZWUgYmluZGluZ3MvcGluY3RybC9icmNtLGJjbTI4MzUtZ3Bpby50eHQKKworRXhhbXBsZToKK3BpeGVsdmFsdmVAN2U4MDcwMDAgeworCWNvbXBhdGlibGUgPSAiYnJjbSxiY20yODM1LXBpeGVsdmFsdmUyIjsKKwlyZWcgPSA8MHg3ZTgwNzAwMCAweDEwMD47CisJaW50ZXJydXB0cyA9IDwyIDEwPjsgLyogcGl4ZWx2YWx2ZSAqLworfTsKKworaHZzQDdlNDAwMDAwIHsKKwljb21wYXRpYmxlID0gImJyY20sYmNtMjgzNS1odnMiOworCXJlZyA9IDwweDdlNDAwMDAwIDB4NjAwMD47CisJaW50ZXJydXB0cyA9IDwyIDE+OworfTsKKworaGRtaTogaGRtaUA3ZTkwMjAwMCB7CisJY29tcGF0aWJsZSA9ICJicmNtLGJjbTI4MzUtaGRtaSI7CisJcmVnID0gPDB4N2U5MDIwMDAgMHg2MDA+LAorCSAgICAgIDwweDdlODA4MDAwIDB4MTAwPjsKKwlpbnRlcnJ1cHRzID0gPDIgOD4sIDwyIDk+OworCWRkYyA9IDwmaTJjMj47CisJaHBkLWdwaW9zID0gPCZncGlvIDQ2IEdQSU9fQUNUSVZFX0hJR0g+OworCWNsb2NrcyA9IDwmY2xvY2tzIEJDTTI4MzVfUExMSF9QSVg+LAorCQkgPCZjbG9ja3MgQkNNMjgzNV9DTE9DS19IU00+OworCWNsb2NrLW5hbWVzID0gInBpeGVsIiwgImhkbWkiOworfTsKKwordmM0OiBncHUgeworCWNvbXBhdGlibGUgPSAiYnJjbSxiY20yODM1LXZjNCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL2FkaSxhZHY3MTIzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRnZS9hZGksYWR2NzEyMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTZiMmIyYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRnZS9hZGksYWR2NzEyMy50eHQKQEAgLTAsMCArMSw1MCBAQAorQW5hbG9nIERldmljZSBBRFY3MTIzIFZpZGVvIERBQworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgQURWNzEyMyBpcyBhIGRpZ2l0YWwtdG8tYW5hbG9nIGNvbnZlcnRlciB0aGF0IG91dHB1dHMgVkdBIHNpZ25hbHMgZnJvbSBhCitwYXJhbGxlbCB2aWRlbyBpbnB1dC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImFkaSxhZHY3MTIzIgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIHBzYXZlLWdwaW9zOiBQb3dlciBzYXZlIGNvbnRyb2wgR1BJTworCitSZXF1aXJlZCBub2RlczoKKworVGhlIEFEVjcxMjMgaGFzIHR3byB2aWRlbyBwb3J0cy4gVGhlaXIgY29ubmVjdGlvbnMgYXJlIG1vZGVsZWQgdXNpbmcgdGhlIE9GCitncmFwaCBiaW5kaW5ncyBzcGVjaWZpZWQgaW4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dyYXBoLnR4dC4KKworLSBWaWRlbyBwb3J0IDAgZm9yIERQSSBpbnB1dAorLSBWaWRlbyBwb3J0IDEgZm9yIFZHQSBvdXRwdXQKKworCitFeGFtcGxlCistLS0tLS0tCisKKwlhZHY3MTIzOiBlbmNvZGVyQDAgeworCQljb21wYXRpYmxlID0gImFkaSxhZHY3MTIzIjsKKworCQlwb3J0cyB7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCisJCQlwb3J0QDAgeworCQkJCXJlZyA9IDwwPjsKKworCQkJCWFkdjcxMjNfaW46IGVuZHBvaW50QDAgeworCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmRwaV9vdXQ+OworCQkJCX07CisJCQl9OworCisJCQlwb3J0QDEgeworCQkJCXJlZyA9IDwxPjsKKworCQkJCWFkdjcxMjNfb3V0OiBlbmRwb2ludEAwIHsKKwkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZ2Z2FfY29ubmVjdG9yX2luPjsKKwkJCQl9OworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL2FkaSxhZHY3NTExLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRnZS9hZGksYWR2NzUxMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZjMjVlZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRnZS9hZGksYWR2NzUxMS50eHQKQEAgLTAsMCArMSw4OCBAQAorQW5hbG9nIERldmljZSBBRFY3NTExKFcpLzEzIEhETUkgRW5jb2RlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBBRFY3NTExLCBBRFY3NTExVyBhbmQgQURWNzUxMyBhcmUgSERNSSBhdWRpbyBhbmQgdmlkZW8gdHJhbnNtaXR0ZXJzCitjb21wYXRpYmxlIHdpdGggSERNSSAxLjQgYW5kIERWSSAxLjAuIFRoZXkgc3VwcG9ydCBjb2xvciBzcGFjZSBjb252ZXJzaW9uLAorUy9QRElGLCBDRUMgYW5kIEhEQ1AuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlIG9uZSBvZiAiYWRpLGFkdjc1MTEiLCAiYWRpLGFkdjc1MTF3IiBvciAiYWRpLGFkdjc1MTMiCistIHJlZzogSTJDIHNsYXZlIGFkZHJlc3MKKworVGhlIEFEVjc1MTEgc3VwcG9ydHMgYSBsYXJnZSBudW1iZXIgb2YgaW5wdXQgZGF0YSBmb3JtYXRzIHRoYXQgZGlmZmVyIGJ5IHRoZWlyCitjb2xvciBkZXB0aCwgY29sb3IgZm9ybWF0LCBjbG9jayBtb2RlLCBiaXQganVzdGlmaWNhdGlvbiBhbmQgcmFuZG9tCithcnJhbmdlbWVudCBvZiBjb21wb25lbnRzIG9uIHRoZSBkYXRhIGJ1cy4gVGhlIGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcKK3Byb3BlcnRpZXMgZGVzY3JpYmUgdGhlIGlucHV0IGFuZCBtYXAgZGlyZWN0bHkgdG8gdGhlIHZpZGVvIGlucHV0IHRhYmxlcyBvZiB0aGUKK0FEVjc1MTEgZGF0YXNoZWV0IHRoYXQgZG9jdW1lbnQgYWxsIHRoZSBzdXBwb3J0ZWQgY29tYmluYXRpb25zLgorCistIGFkaSxpbnB1dC1kZXB0aDogTnVtYmVyIG9mIGJpdHMgcGVyIGNvbG9yIGNvbXBvbmVudCBhdCB0aGUgaW5wdXQgKDgsIDEwIG9yCisgIDEyKS4KKy0gYWRpLGlucHV0LWNvbG9yc3BhY2U6IFRoZSBpbnB1dCBjb2xvciBzcGFjZSwgb25lIG9mICJyZ2IiLCAieXV2NDIyIiBvcgorICAieXV2NDQ0Ii4KKy0gYWRpLGlucHV0LWNsb2NrOiBUaGUgaW5wdXQgY2xvY2sgdHlwZSwgb25lIG9mICIxeCIgKG9uZSBjbG9jayBjeWNsZSBwZXIKKyAgcGl4ZWwpLCAiMngiICh0d28gY2xvY2sgY3ljbGVzIHBlciBwaXhlbCksICJkZHIiIChvbmUgY2xvY2sgY3ljbGUgcGVyIHBpeGVsLAorICBkYXRhIGRyaXZlbiBvbiBib3RoIGVkZ2VzKS4KKworVGhlIGZvbGxvd2luZyBpbnB1dCBmb3JtYXQgcHJvcGVydGllcyBhcmUgcmVxdWlyZWQgZXhjZXB0IGluICJyZ2IgMXgiIGFuZAorInl1djQ0NCAxeCIgbW9kZXMsIGluIHdoaWNoIGNhc2UgdGhleSBtdXN0IG5vdCBiZSBzcGVjaWZpZWQuCisKKy0gYWRpLGlucHV0LXN0eWxlOiBUaGUgaW5wdXQgY29tcG9uZW50cyBhcnJhbmdlbWVudCB2YXJpYW50ICgxLCAyIG9yIDMpLCBhcworICBsaXN0ZWQgaW4gdGhlIGlucHV0IGZvcm1hdCB0YWJsZXMgaW4gdGhlIGRhdGFzaGVldC4KKy0gYWRpLGlucHV0LWp1c3RpZmljYXRpb246IFRoZSBpbnB1dCBiaXQganVzdGlmaWNhdGlvbiAoImxlZnQiLCAiZXZlbmx5IiwKKyAgInJpZ2h0IikuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gaW50ZXJydXB0czogU3BlY2lmaWVyIGZvciB0aGUgQURWNzUxMSBpbnRlcnJ1cHQKKy0gcGQtZ3Bpb3M6IFNwZWNpZmllciBmb3IgdGhlIEdQSU8gY29ubmVjdGVkIHRvIHRoZSBwb3dlciBkb3duIHNpZ25hbAorCistIGFkaSxjbG9jay1kZWxheTogVmlkZW8gZGF0YSBjbG9jayBkZWxheSByZWxhdGl2ZSB0byB0aGUgcGl4ZWwgY2xvY2ssIGluIHBzCisgICgtMTIwMCBwcyAuLiAxNjAwIHBzKS4gRGVmYXVsdHMgdG8gbm8gZGVsYXkuCistIGFkaSxlbWJlZGRlZC1zeW5jOiBUaGUgaW5wdXQgdXNlcyBzeW5jaHJvbml6YXRpb24gc2lnbmFscyBlbWJlZGRlZCBpbiB0aGUKKyAgZGF0YSBzdHJlYW0gKHNpbWlsYXIgdG8gQlQuNjU2KS4gRGVmYXVsdHMgdG8gc2VwYXJhdGUgSC9WIHN5bmNocm9uaXphdGlvbgorICBzaWduYWxzLgorCitSZXF1aXJlZCBub2RlczoKKworVGhlIEFEVjc1MTEgaGFzIHR3byB2aWRlbyBwb3J0cy4gVGhlaXIgY29ubmVjdGlvbnMgYXJlIG1vZGVsbGVkIHVzaW5nIHRoZSBPRgorZ3JhcGggYmluZGluZ3Mgc3BlY2lmaWVkIGluIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncmFwaC50eHQuCisKKy0gVmlkZW8gcG9ydCAwIGZvciB0aGUgUkdCIG9yIFlVViBpbnB1dAorLSBWaWRlbyBwb3J0IDEgZm9yIHRoZSBIRE1JIG91dHB1dAorCisKK0V4YW1wbGUKKy0tLS0tLS0KKworCWFkdjc1MTF3OiBoZG1pQDM5IHsKKwkJY29tcGF0aWJsZSA9ICJhZGksYWR2NzUxMXciOworCQlyZWcgPSA8Mzk+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvMz47CisJCWludGVycnVwdHMgPSA8MjkgSVJRX1RZUEVfRURHRV9GQUxMSU5HPjsKKworCQlhZGksaW5wdXQtZGVwdGggPSA8OD47CisJCWFkaSxpbnB1dC1jb2xvcnNwYWNlID0gInJnYiI7CisJCWFkaSxpbnB1dC1jbG9jayA9ICIxeCI7CisJCWFkaSxpbnB1dC1zdHlsZSA9IDwxPjsKKwkJYWRpLGlucHV0LWp1c3RpZmljYXRpb24gPSAiZXZlbmx5IjsKKworCQlwb3J0cyB7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCisJCQlwb3J0QDAgeworCQkJCXJlZyA9IDwwPjsKKwkJCQlhZHY3NTExd19pbjogZW5kcG9pbnQgeworCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmRwaV9vdXQ+OworCQkJCX07CisJCQl9OworCisJCQlwb3J0QDEgeworCQkJCXJlZyA9IDwxPjsKKwkJCQlhZHY3NTExX291dDogZW5kcG9pbnQgeworCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmhkbWlfY29ubmVjdG9yX2luPjsKKwkJCQl9OworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL2R3X2hkbWkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL2R3X2hkbWkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjMTQ1MmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmlkZ2UvZHdfaGRtaS50eHQKQEAgLTAsMCArMSw1MCBAQAorRGVzaWduV2FyZSBIRE1JIGJyaWRnZSBiaW5kaW5ncworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBwbGF0Zm9ybSBzcGVjaWZpYyBzdWNoIGFzOgorICAgKiAic25wcyxkdy1oZG1pLXR4IgorICAgKiAiZnNsLGlteDZxLWhkbWkiCisgICAqICJmc2wsaW14NmRsLWhkbWkiCisgICAqICJyb2NrY2hpcCxyazMyODgtZHctaGRtaSIKKy0gcmVnOiBQaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgY29udHJvbGxlcidzIHJlZ2lzdGVycy4KKy0gaW50ZXJydXB0czogVGhlIEhETUkgaW50ZXJydXB0IG51bWJlcgorLSBjbG9ja3MsIGNsb2NrLW5hbWVzIDogbXVzdCBoYXZlIHRoZSBwaGFuZGxlcyB0byB0aGUgSERNSSBpYWhiIGFuZCBpc2ZyIGNsb2NrcywKKyAgYXMgZGVzY3JpYmVkIGluIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQsCisgIHRoZSBjbG9ja3MgYXJlIHNvYyBzcGVjaWZpYywgdGhlIGNsb2NrLW5hbWVzIHNob3VsZCBiZSAiaWFoYiIsICJpc2ZyIgorLXBvcnRAW1hdOiBTb0Mgc3BlY2lmaWMgcG9ydCBub2RlcyB3aXRoIGVuZHBvaW50IGRlZmluaXRpb25zIGFzIGRlZmluZWQKKyAgIGluIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS92aWRlby1pbnRlcmZhY2VzLnR4dCwKKyAgIHBsZWFzZSByZWZlciB0byB0aGUgU29DIHNwZWNpZmljIGJpbmRpbmcgZG9jdW1lbnQ6CisgICAgKiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9pbXgvaGRtaS50eHQKKyAgICAqIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3JvY2tjaGlwL2R3X2hkbWktcm9ja2NoaXAudHh0CisKK09wdGlvbmFsIHByb3BlcnRpZXMKKy0gcmVnLWlvLXdpZHRoOiB0aGUgd2lkdGggb2YgdGhlIHJlZzoxLDQsIGRlZmF1bHQgc2V0IHRvIDEgaWYgbm90IHByZXNlbnQKKy0gZGRjLWkyYy1idXM6IHBoYW5kbGUgb2YgYW4gSTJDIGNvbnRyb2xsZXIgdXNlZCBmb3IgRERDIEVESUQgcHJvYmluZworLSBjbG9ja3MsIGNsb2NrLW5hbWVzOiBwaGFuZGxlIHRvIHRoZSBIRE1JIENFQyBjbG9jaywgbmFtZSBzaG91bGQgYmUgImNlYyIKKworRXhhbXBsZToKKwloZG1pOiBoZG1pQDAxMjAwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxpbXg2cS1oZG1pIjsKKwkJcmVnID0gPDB4MDAxMjAwMDAgMHg5MDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDExNSAweDA0PjsKKwkJZ3ByID0gPCZncHI+OworCQljbG9ja3MgPSA8JmNsa3MgMTIzPiwgPCZjbGtzIDEyND47CisJCWNsb2NrLW5hbWVzID0gImlhaGIiLCAiaXNmciI7CisJCWRkYy1pMmMtYnVzID0gPCZpMmMyPjsKKworCQlwb3J0QDAgeworCQkJcmVnID0gPDA+OworCisJCQloZG1pX211eF8wOiBlbmRwb2ludCB7CisJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZpcHUxX2RpMF9oZG1pPjsKKwkJCX07CisJCX07CisKKwkJcG9ydEAxIHsKKwkJCXJlZyA9IDwxPjsKKworCQkJaGRtaV9tdXhfMTogZW5kcG9pbnQgeworCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmaXB1MV9kaTFfaGRtaT47CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmlkZ2UvcHM4NjIyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRnZS9wczg2MjIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ODljMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmlkZ2UvcHM4NjIyLnR4dApAQCAtMCwwICsxLDMxIEBACitwczg2MjItYnJpZGdlIGJpbmRpbmdzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisJLSBjb21wYXRpYmxlOiAicGFyYWRlLHBzODYyMiIgb3IgInBhcmFkZSxwczg2MjUiCisJLSByZWc6IGZpcnN0IGkyYyBhZGRyZXNzIG9mIHRoZSBicmlkZ2UKKwktIHNsZWVwLWdwaW9zOiBPRiBkZXZpY2UtdHJlZSBncGlvIHNwZWNpZmljYXRpb24gZm9yIFBEXyBwaW4uCisJLSByZXNldC1ncGlvczogT0YgZGV2aWNlLXRyZWUgZ3BpbyBzcGVjaWZpY2F0aW9uIGZvciBSU1RfIHBpbi4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKwktIGxhbmUtY291bnQ6IG51bWJlciBvZiBEUCBsYW5lcyB0byB1c2UKKwktIHVzZS1leHRlcm5hbC1wd206IGJhY2tsaWdodCB3aWxsIGJlIGNvbnRyb2xsZWQgYnkgYW4gZXh0ZXJuYWwgUFdNCisJLSB2aWRlbyBpbnRlcmZhY2VzOiBEZXZpY2Ugbm9kZSBjYW4gY29udGFpbiB2aWRlbyBpbnRlcmZhY2UgcG9ydAorCQkJICAgIG5vZGVzIGZvciBwYW5lbCBhY2NvcmRpbmcgdG8gWzFdLgorCitbMV06IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS92aWRlby1pbnRlcmZhY2VzLnR4dAorCitFeGFtcGxlOgorCWx2ZHMtYnJpZGdlQDQ4IHsKKwkJY29tcGF0aWJsZSA9ICJwYXJhZGUscHM4NjIyIjsKKwkJcmVnID0gPDB4NDg+OworCQlzbGVlcC1ncGlvcyA9IDwmZ3BjMyA2IDEgMCAwPjsKKwkJcmVzZXQtZ3Bpb3MgPSA8JmdwYzMgMSAxIDAgMD47CisJCWxhbmUtY291bnQgPSA8MT47CisJCXBvcnRzIHsKKwkJCXBvcnRAMCB7CisJCQkJYnJpZGdlX291dDogZW5kcG9pbnQgeworCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JnBhbmVsX2luPjsKKwkJCQl9OworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL3B0bjM0NjAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL3B0bjM0NjAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MTk3MWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmlkZ2UvcHRuMzQ2MC50eHQKQEAgLTAsMCArMSwzOSBAQAorcHRuMzQ2MCBicmlkZ2UgYmluZGluZ3MKKworUmVxdWlyZWQgcHJvcGVydGllczoKKwktIGNvbXBhdGlibGU6ICJueHAscHRuMzQ2MCIKKwktIHJlZzogaTJjIGFkZHJlc3Mgb2YgdGhlIGJyaWRnZQorCS0gcG93ZXJkb3duLWdwaW86IE9GIGRldmljZS10cmVlIGdwaW8gc3BlY2lmaWNhdGlvbiAgZm9yIFBEX04gcGluLgorCS0gcmVzZXQtZ3BpbzogT0YgZGV2aWNlLXRyZWUgZ3BpbyBzcGVjaWZpY2F0aW9uIGZvciBSU1RfTiBwaW4uCisJLSBlZGlkLWVtdWxhdGlvbjogVGhlIEVESUQgZW11bGF0aW9uIGVudHJ5IHRvIHVzZQorCQkrLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKworCQl8IFZhbHVlIHwgUmVzb2x1dGlvbiB8IERlc2NyaXB0aW9uICAgICAgfAorCQl8ICAgMCAgIHwgIDEwMjR4NzY4ICB8IE5YUCBHZW5lcmljICAgICAgfAorCQl8ICAgMSAgIHwgIDE5MjB4MTA4MCB8IE5YUCBHZW5lcmljICAgICAgfAorCQl8ICAgMiAgIHwgIDE5MjB4MTA4MCB8IE5YUCBHZW5lcmljICAgICAgfAorCQl8ICAgMyAgIHwgIDE2MDB4OTAwICB8IFNhbXN1bmcgTFRNMjAwS1QgfAorCQl8ICAgNCAgIHwgIDE5MjB4MTA4MCB8IFNhbXN1bmcgTFRNMjMwSFQgfAorCQl8ICAgNSAgIHwgIDEzNjZ4NzY4ICB8IE5YUCBHZW5lcmljICAgICAgfAorCQl8ICAgNiAgIHwgIDE2MDB4OTAwICB8IENoaU1laSBNMjE1SEdFICAgfAorCQkrLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKworCisJLSB2aWRlbyBpbnRlcmZhY2VzOiBEZXZpY2Ugbm9kZSBjYW4gY29udGFpbiB2aWRlbyBpbnRlcmZhY2UgcG9ydAorCQkJICAgIG5vZGVzIGZvciBwYW5lbCBhY2NvcmRpbmcgdG8gWzFdLgorCitbMV06IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS92aWRlby1pbnRlcmZhY2VzLnR4dAorCitFeGFtcGxlOgorCWx2ZHMtYnJpZGdlQDIwIHsKKwkJY29tcGF0aWJsZSA9ICJueHAscHRuMzQ2MCI7CisJCXJlZyA9IDwweDIwPjsKKwkJcG93ZXJkb3duLWdwaW8gPSA8JmdweTIgNSAxIDAgMD47CisJCXJlc2V0LWdwaW8gPSA8JmdweDEgNSAxIDAgMD47CisJCWVkaWQtZW11bGF0aW9uID0gPDU+OworCQlwb3J0cyB7CisJCQlwb3J0QDAgeworCQkJCWJyaWRnZV9vdXQ6IGVuZHBvaW50IHsKKwkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZwYW5lbF9pbj47CisJCQkJfTsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRnZS90ZGE5OTh4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRnZS90ZGE5OTh4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWU0YmNlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL3RkYTk5OHgudHh0CkBAIC0wLDAgKzEsMjkgQEAKK0RldmljZS1UcmVlIGJpbmRpbmdzIGZvciB0aGUgTlhQIFREQTk5OHggSERNSSB0cmFuc21pdHRlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOworICAtIGNvbXBhdGlibGU6IG11c3QgYmUgIm54cCx0ZGE5OTh4IgorCisgIC0gcmVnOiBJMkMgYWRkcmVzcworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIGludGVycnVwdHM6IGludGVycnVwdCBudW1iZXIgYW5kIHRyaWdnZXIgdHlwZQorCWRlZmF1bHQ6IHBvbGxpbmcKKworICAtIHBpbmN0cmwtMDogcGluIGNvbnRyb2wgZ3JvdXAgdG8gYmUgdXNlZCBmb3IKKwlzY3JlZW4gcGx1Zy91bnBsdWcgaW50ZXJydXB0LgorCisgIC0gcGluY3RybC1uYW1lczogbXVzdCBjb250YWluIGEgImRlZmF1bHQiIGVudHJ5LgorCisgIC0gdmlkZW8tcG9ydHM6IDI0IGJpdHMgdmFsdWUgd2hpY2ggZGVmaW5lcyBob3cgdGhlIHZpZGVvIGNvbnRyb2xsZXIKKwlvdXRwdXQgaXMgd2lyZWQgdG8gdGhlIFREQTk5OHggaW5wdXQgLSBkZWZhdWx0OiA8MHgyMzAxNDU+CisKK0V4YW1wbGU6CisKKwl0ZGE5OTh4OiBoZG1pLWVuY29kZXIgeworCQljb21wYXRpYmxlID0gIm54cCx0ZGE5OTh4IjsKKwkJcmVnID0gPDB4NzA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvMD47CisJCWludGVycnVwdHMgPSA8MjcgMj47CQkvKiBmYWxsaW5nIGVkZ2UgKi8KKwkJcGluY3RybC0wID0gPCZwbXhfY2FtZXJhPjsKKwkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL3RoaW5lLHRoYzYzbHZkbTgzZC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmlkZ2UvdGhpbmUsdGhjNjNsdmRtODNkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjdlMjM2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYnJpZGdlL3RoaW5lLHRoYzYzbHZkbTgzZC50eHQKQEAgLTAsMCArMSw1MCBAQAorVEhpbmUgRWxlY3Ryb25pY3MgVEhDNjNMVkRNODNEIExWRFMgc2VyaWFsaXplcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgVEhDNjNMVkRNODNEIGlzIGFuIExWRFMgc2VyaWFsaXplciBkZXNpZ25lZCB0byBzdXBwb3J0IHBpeGVsIGRhdGEKK3RyYW5zbWlzc2lvbiBiZXR3ZWVuIGEgaG9zdCBhbmQgYSBmbGF0IHBhbmVsLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAidGhpbmUsdGhjNjNsdmRtODNkIgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIHB3ZG4tZ3Bpb3M6IFBvd2VyIGRvd24gY29udHJvbCBHUElPCisKK1JlcXVpcmVkIG5vZGVzOgorCitUaGUgVEhDNjNMVkRNODNEIGhhcyB0d28gdmlkZW8gcG9ydHMuIFRoZWlyIGNvbm5lY3Rpb25zIGFyZSBtb2RlbGVkIHVzaW5nIHRoZQorT0ZncmFwaCBiaW5kaW5ncyBzcGVjaWZpZWQgaW4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dyYXBoLnR4dC4KKworLSBWaWRlbyBwb3J0IDAgZm9yIENNT1MvVFRMIGlucHV0CistIFZpZGVvIHBvcnQgMSBmb3IgTFZEUyBvdXRwdXQKKworCitFeGFtcGxlCistLS0tLS0tCisKKwlsdmRzX2VuYzogZW5jb2RlckAwIHsKKwkJY29tcGF0aWJsZSA9ICJ0aGluZSx0aGM2M2x2ZG04M2QiOworCisJCXBvcnRzIHsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJCXBvcnRAMCB7CisJCQkJcmVnID0gPDA+OworCisJCQkJbHZkc19lbmNfaW46IGVuZHBvaW50QDAgeworCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JnJnYl9vdXQ+OworCQkJCX07CisJCQl9OworCisJCQlwb3J0QDEgeworCQkJCXJlZyA9IDwxPjsKKworCQkJCWx2ZHNfZW5jX291dDogZW5kcG9pbnRAMCB7CisJCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmcGFuZWxfaW4+OworCQkJCX07CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9jaXJydXMsY2xwczcxMXgtZmIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvY2lycnVzLGNscHM3MTF4LWZiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjg1YmU4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvY2lycnVzLGNscHM3MTF4LWZiLnR4dApAQCAtMCwwICsxLDQ3IEBACisqIEN1cnJ1cyBMb2dpYyBDTFBTNzExWCBGcmFtZWJ1ZmZlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaGFsbCBjb250YWluICJjaXJydXMsY2xwczcxMXgtZmIiLgorLSByZWcgICAgICAgOiBQaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgY29udHJvbGxlcidzIHJlZ2lzdGVycyArCisgICAgICAgICAgICAgIGxvY2F0aW9uIGFuZCBzaXplIG9mIHRoZSBmcmFtZWJ1ZmZlciBtZW1vcnkuCistIGNsb2NrcyAgICA6IHBoYW5kbGUgKyBjbG9jayBzcGVjaWZpZXIgcGFpciBvZiB0aGUgRkIgcmVmZXJlbmNlIGNsb2NrLgorLSBkaXNwbGF5ICAgOiBwaGFuZGxlIHRvIGEgZGlzcGxheSBub2RlIGFzIGRlc2NyaWJlZCBpbgorICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9kaXNwbGF5LXRpbWluZy50eHQuCisgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgdGhlIGRpc3BsYXkgbm9kZSBoYXMgdG8gZGVmaW5lIHByb3BlcnRpZXM6CisgIC0gYml0cy1wZXItcGl4ZWw6IEJpdHMgcGVyIHBpeGVsLgorICAtIGFjLXByZXNjYWxlICAgOiBMQ0QgQUMgYmlhcyBmcmVxdWVuY3kuIFRoaXMgZnJlcXVlbmN5IGlzIHRoZSByZXF1aXJlZAorICAgICAgICAgICAgICAgICAgICBBQyBiaWFzIGZyZXF1ZW5jeSBmb3IgYSBnaXZlbiBtYW51ZmFjdHVyZXIncyBMQ0QgcGxhdGUuCisgIC0gY21hcC1pbnZlcnQgICA6IEludmVydCB0aGUgY29sb3IgbGV2ZWxzIChPcHRpb25hbCkuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGxjZC1zdXBwbHk6IFJlZ3VsYXRvciBmb3IgTENEIHN1cHBseSB2b2x0YWdlLgorCitFeGFtcGxlOgorCWZiOiBmYkA4MDAwMDJjMCB7CisJCWNvbXBhdGlibGUgPSAiY2lycnVzLGVwNzMxMi1mYiIsICJjaXJydXMsY2xwczcxMXgtZmIiOworCQlyZWcgPSA8MHg4MDAwMDJjMCAweGQ0ND4sIDwweDYwMDAwMDAwIDB4YzAwMD47CisJCWNsb2NrcyA9IDwmY2xrcyAyPjsKKwkJbGNkLXN1cHBseSA9IDwmcmVnNXYwPjsKKwkJZGlzcGxheSA9IDwmZGlzcGxheT47CisJfTsKKworCWRpc3BsYXk6IGRpc3BsYXkgeworCQltb2RlbCA9ICIzMjB4MjQweDQiOworCQluYXRpdmUtbW9kZSA9IDwmdGltaW5nMD47CisJCWJpdHMtcGVyLXBpeGVsID0gPDQ+OworCQlhYy1wcmVzY2FsZSA9IDwxNz47CisKKwkJZGlzcGxheS10aW1pbmdzIHsKKwkJCXRpbWluZzA6IDMyMHgyNDAgeworCQkJCWhhY3RpdmUgPSA8MzIwPjsKKwkJCQloYmFjay1wb3JjaCA9IDwwPjsKKwkJCQloZnJvbnQtcG9yY2ggPSA8MD47CisJCQkJaHN5bmMtbGVuID0gPDA+OworCQkJCXZhY3RpdmUgPSA8MjQwPjsKKwkJCQl2YmFjay1wb3JjaCA9IDwwPjsKKwkJCQl2ZnJvbnQtcG9yY2ggPSA8MD47CisJCQkJdnN5bmMtbGVuID0gPDA+OworCQkJCWNsb2NrLWZyZXF1ZW5jeSA9IDw2NTAwMDAwPjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2Nvbm5lY3Rvci9hbmFsb2ctdHYtY29ubmVjdG9yLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2Nvbm5lY3Rvci9hbmFsb2ctdHYtY29ubmVjdG9yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzA5NzBjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvY29ubmVjdG9yL2FuYWxvZy10di1jb25uZWN0b3IudHh0CkBAIC0wLDAgKzEsMjUgQEAKK0FuYWxvZyBUViBDb25uZWN0b3IKKz09PT09PT09PT09PT09PT09PT0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImNvbXBvc2l0ZS12aWRlby1jb25uZWN0b3IiIG9yICJzdmlkZW8tY29ubmVjdG9yIgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBsYWJlbDogYSBzeW1ib2xpYyBuYW1lIGZvciB0aGUgY29ubmVjdG9yCisKK1JlcXVpcmVkIG5vZGVzOgorLSBWaWRlbyBwb3J0IGZvciBUViBpbnB1dAorCitFeGFtcGxlCistLS0tLS0tCisKK3R2OiBjb25uZWN0b3IgeworCWNvbXBhdGlibGUgPSAiY29tcG9zaXRlLXZpZGVvLWNvbm5lY3RvciI7CisJbGFiZWwgPSAidHYiOworCisJcG9ydCB7CisJCXR2X2Nvbm5lY3Rvcl9pbjogZW5kcG9pbnQgeworCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZ2ZW5jX291dD47CisJCX07CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9jb25uZWN0b3IvZHZpLWNvbm5lY3Rvci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9jb25uZWN0b3IvZHZpLWNvbm5lY3Rvci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM1M2Y3YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2Nvbm5lY3Rvci9kdmktY29ubmVjdG9yLnR4dApAQCAtMCwwICsxLDM1IEBACitEVkkgQ29ubmVjdG9yCis9PT09PT09PT09PT09PQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiZHZpLWNvbm5lY3RvciIKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gbGFiZWw6IGEgc3ltYm9saWMgbmFtZSBmb3IgdGhlIGNvbm5lY3RvcgorLSBkZGMtaTJjLWJ1czogcGhhbmRsZSB0byB0aGUgaTJjIGJ1cyB0aGF0IGlzIGNvbm5lY3RlZCB0byBEVkkgRERDCistIGFuYWxvZzogdGhlIGNvbm5lY3RvciBoYXMgRFZJIGFuYWxvZyBwaW5zCistIGRpZ2l0YWw6IHRoZSBjb25uZWN0b3IgaGFzIERWSSBkaWdpdGFsIHBpbnMKKy0gZHVhbC1saW5rOiB0aGUgY29ubmVjdG9yIGhhcyBwaW5zIGZvciBEVkkgZHVhbC1saW5rCisKK1JlcXVpcmVkIG5vZGVzOgorLSBWaWRlbyBwb3J0IGZvciBEVkkgaW5wdXQKKworTm90ZTogT25lIChvciBib3RoKSBvZiAnYW5hbG9nJyBvciAnZGlnaXRhbCcgbXVzdCBiZSBzZXQuCisKK0V4YW1wbGUKKy0tLS0tLS0KKworZHZpMDogY29ubmVjdG9yQDAgeworCWNvbXBhdGlibGUgPSAiZHZpLWNvbm5lY3RvciI7CisJbGFiZWwgPSAiZHZpIjsKKworCWRpZ2l0YWw7CisKKwlkZGMtaTJjLWJ1cyA9IDwmaTJjMz47CisKKwlwb3J0IHsKKwkJZHZpX2Nvbm5lY3Rvcl9pbjogZW5kcG9pbnQgeworCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZ0ZnA0MTBfb3V0PjsKKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2Nvbm5lY3Rvci9oZG1pLWNvbm5lY3Rvci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9jb25uZWN0b3IvaGRtaS1jb25uZWN0b3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjZDU2NjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9jb25uZWN0b3IvaGRtaS1jb25uZWN0b3IudHh0CkBAIC0wLDAgKzEsMjkgQEAKK0hETUkgQ29ubmVjdG9yCis9PT09PT09PT09PT09PQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiaGRtaS1jb25uZWN0b3IiCistIHR5cGU6IHRoZSBIRE1JIGNvbm5lY3RvciB0eXBlOiAiYSIsICJiIiwgImMiLCAiZCIgb3IgImUiCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGxhYmVsOiBhIHN5bWJvbGljIG5hbWUgZm9yIHRoZSBjb25uZWN0b3IKKy0gaHBkLWdwaW9zOiBIUEQgR1BJTyBudW1iZXIKKworUmVxdWlyZWQgbm9kZXM6CistIFZpZGVvIHBvcnQgZm9yIEhETUkgaW5wdXQKKworRXhhbXBsZQorLS0tLS0tLQorCitoZG1pMDogY29ubmVjdG9yQDEgeworCWNvbXBhdGlibGUgPSAiaGRtaS1jb25uZWN0b3IiOworCWxhYmVsID0gImhkbWkiOworCisJdHlwZSA9ICJhIjsKKworCXBvcnQgeworCQloZG1pX2Nvbm5lY3Rvcl9pbjogZW5kcG9pbnQgeworCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZ0cGQxMnMwMTVfb3V0PjsKKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2Nvbm5lY3Rvci92Z2EtY29ubmVjdG9yLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2Nvbm5lY3Rvci92Z2EtY29ubmVjdG9yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzI3ZjI5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvY29ubmVjdG9yL3ZnYS1jb25uZWN0b3IudHh0CkBAIC0wLDAgKzEsMzYgQEAKK1ZHQSBDb25uZWN0b3IKKz09PT09PT09PT09PT0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiAidmdhLWNvbm5lY3RvciIKKworT3B0aW9uYWwgcHJvcGVydGllczoKKworLSBsYWJlbDogYSBzeW1ib2xpYyBuYW1lIGZvciB0aGUgY29ubmVjdG9yIGNvcnJlc3BvbmRpbmcgdG8gYSBoYXJkd2FyZSBsYWJlbAorLSBkZGMtaTJjLWJ1czogcGhhbmRsZSB0byB0aGUgSTJDIGJ1cyB0aGF0IGlzIGNvbm5lY3RlZCB0byBWR0EgRERDCisKK1JlcXVpcmVkIG5vZGVzOgorCitUaGUgVkdBIGNvbm5lY3RvciBpbnRlcm5hbCBjb25uZWN0aW9ucyBhcmUgbW9kZWxlZCB1c2luZyB0aGUgT0YgZ3JhcGggYmluZGluZ3MKK3NwZWNpZmllZCBpbiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3JhcGgudHh0LgorCitUaGUgVkdBIGNvbm5lY3RvciBoYXMgYSBzaW5nbGUgcG9ydCB0aGF0IG11c3QgYmUgY29ubmVjdGVkIHRvIGEgdmlkZW8gc291cmNlCitwb3J0LgorCisKK0V4YW1wbGUKKy0tLS0tLS0KKwordmdhMDogY29ubmVjdG9yQDAgeworCWNvbXBhdGlibGUgPSAidmdhLWNvbm5lY3RvciI7CisJbGFiZWwgPSAidmdhIjsKKworCWRkYy1pMmMtYnVzID0gPCZpMmMzPjsKKworCXBvcnQgeworCQl2Z2FfY29ubmVjdG9yX2luOiBlbmRwb2ludCB7CisJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmFkdjcxMjNfb3V0PjsKKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2V4eW5vcy9leHlub3MtbWljLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2V4eW5vcy9leHlub3MtbWljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmJhMmVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvZXh5bm9zL2V4eW5vcy1taWMudHh0CkBAIC0wLDAgKzEsNTEgQEAKK0RldmljZS1UcmVlIGJpbmRpbmdzIGZvciBTYW1zdW5nIEV4eW5vcyBTb0MgbW9iaWxlIGltYWdlIGNvbXByZXNzb3IgKE1JQykKKworTUlDIChtb2JpbGUgaW1hZ2UgY29tcHJlc3NvcikgcmVzaWRlcyBiZXR3ZWVuIGRlY29uIGFuZCBtaXBpIGRzaS4gTWlwaSBkc2kgaXMKK25vdCBjYXBhYmxlIHRvIHRyYW5zZmVyIGhpZ2ggcmVzb2x0dWlvbiBmcmFtZSBkYXRhIGFzIGRlY29uIGNhbiBzZW5kLiBNSUMKK3NvbHZlcyB0aGlzIHByb2JsZW0gYnkgY29tcHJlc3NpbmcgdGhlIGZyYW1lIGRhdGEgYnkgMS8yIGJlZm9yZSBpdCBpcwordHJhbnNmZXJyZWQgdGhyb3VnaCBtaXBpIGRzaS4gVGhlIGNvbXByZXNzZWQgZnJhbWUgZGF0YSBtdXN0IGJlIHVuY29tcHJlc3NlZCBpbgordGhlIHBhbmVsIFBDQi4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogdmFsdWUgc2hvdWxkIGJlICJzYW1zdW5nLGV4eW5vczU0MzMtbWljIi4KKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgTUlDIHJlZ2lzdGVycyBzZXQgYW5kIHN5c3RlbQorICAgICAgIHJlZ2lzdGVyIG9mIG1pYy4KKy0gY2xvY2tzOiBtdXN0IGluY2x1ZGUgY2xvY2sgc3BlY2lmaWVycyBjb3JyZXNwb25kaW5nIHRvIGVudHJpZXMgaW4gdGhlCisJICBjbG9jay1uYW1lcyBwcm9wZXJ0eS4KKy0gY2xvY2stbmFtZXM6IGxpc3Qgb2YgY2xvY2sgbmFtZXMgc29ydGVkIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBjbG9ja3MKKwkgICAgICAgcHJvcGVydHkuIE11c3QgY29udGFpbiAicGNsa19taWMwIiwgInNjbGtfcmdiX3ZjbGtfdG9fbWljMCIuCistIHNhbXN1bmcsZGlzcC1zeXNjb246IHRoZSByZWZlcmVuY2Ugbm9kZSBmb3Igc3lzY29uIGZvciBESVNQIGJsb2NrLgorLSBwb3J0czogY29udGFpbnMgYSBwb3J0IHdoaWNoIGlzIGNvbm5lY3RlZCB0byBkZWNvbiBub2RlIGFuZCBkc2kgbm9kZS4KKwkgYWRkcmVzcy1jZWxscyBhbmQgc2l6ZS1jZWxscyBtdXN0IDEgYW5kIDAsIHJlc3BlY3RpdmVseS4KKy0gcG9ydDogY29udGFpbnMgYW4gZW5kcG9pbnQgbm9kZSB3aGljaCBpcyBjb25uZWN0ZWQgdG8gdGhlIGVuZHBvaW50IGluIHRoZQorCWRlY29uIG5vZGUgb3IgZHNpIG5vZGUuIFRoZSByZWcgdmFsdWUgbXVzdCBiZSAwIGFuZCAxIHJlc3BlY3RpdmVseS4KKworRXhhbXBsZToKK1NvQyBzcGVjaWZpYyBEVCBlbnRyeToKK21pYzogbWljQDEzOTMwMDAwIHsKKwljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTQzMy1taWMiOworCXJlZyA9IDwweDEzOTMwMDAwIDB4NDg+OworCWNsb2NrcyA9IDwmY211X2Rpc3AgQ0xLX1BDTEtfTUlDMD4sCisJICAgICAgIDwmY211X2Rpc3AgQ0xLX1NDTEtfUkdCX1ZDTEtfVE9fTUlDMD47CisJY2xvY2stbmFtZXMgPSAicGNsa19taWMwIiwgInNjbGtfcmdiX3ZjbGtfdG9fbWljMCI7CisJc2Ftc3VuZyxkaXNwLXN5c2NvbiA9IDwmc3lzY29uX2Rpc3A+OworCisJcG9ydHMgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJcG9ydEAwIHsKKwkJCXJlZyA9IDwwPjsKKwkJCW1pY190b19kZWNvbjogZW5kcG9pbnQgeworCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmZGVjb25fdG9fbWljPjsKKwkJCX07CisJCX07CisKKwkJcG9ydEAxIHsKKwkJCXJlZyA9IDwxPjsKKwkJCW1pY190b19kc2k6IGVuZHBvaW50IHsKKwkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmRzaV90b19taWM+OworCQkJfTsKKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2V4eW5vcy9leHlub3M1NDMzLWRlY29uLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2V4eW5vcy9leHlub3M1NDMzLWRlY29uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzdhZmJmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvZXh5bm9zL2V4eW5vczU0MzMtZGVjb24udHh0CkBAIC0wLDAgKzEsNjUgQEAKK0RldmljZS1UcmVlIGJpbmRpbmdzIGZvciBTYW1zdW5nIEV4eW5vcyBTb0MgZGlzcGxheSBjb250cm9sbGVyIChERUNPTikKKworREVDT04gKERpc3BsYXkgYW5kIEVuaGFuY2VtZW50IENvbnRyb2xsZXIpIGlzIHRoZSBEaXNwbGF5IENvbnRyb2xsZXIgZm9yIHRoZQorRXh5bm9zIHNlcmllcyBvZiBTb0NzIHdoaWNoIHRyYW5zZmVycyB0aGUgaW1hZ2UgZGF0YSBmcm9tIGEgdmlkZW8gbWVtb3J5CitidWZmZXIgdG8gYW4gZXh0ZXJuYWwgTENEIGludGVyZmFjZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogdmFsdWUgc2hvdWxkIGJlICJzYW1zdW5nLGV4eW5vczU0MzMtZGVjb24iOworLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBERUNPTiByZWdpc3RlcnMgc2V0LgorLSBpbnRlcnJ1cHRzOiBzaG91bGQgY29udGFpbiBhIGxpc3Qgb2YgYWxsIERFQ09OIElQIGJsb2NrIGludGVycnVwdHMgaW4gdGhlCisJICAgICAgb3JkZXI6IFZTWU5DLCBMQ0RfU1lTVEVNLiBUaGUgaW50ZXJydXB0IHNwZWNpZmllciBmb3JtYXQKKwkgICAgICBkZXBlbmRzIG9uIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB1c2VkLgorLSBpbnRlcnJ1cHQtbmFtZXM6IHNob3VsZCBjb250YWluIHRoZSBpbnRlcnJ1cHQgbmFtZXM6ICJ2c3luYyIsICJsY2Rfc3lzIgorCQkgICBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGV5IHdlcmUgbGlzdGVkIGluIHRoZSBpbnRlcnJ1cHRzCisJCSAgIHByb3BlcnR5LgorLSBjbG9ja3M6IG11c3QgaW5jbHVkZSBjbG9jayBzcGVjaWZpZXJzIGNvcnJlc3BvbmRpbmcgdG8gZW50cmllcyBpbiB0aGUKKwkgIGNsb2NrLW5hbWVzIHByb3BlcnR5LgorLSBjbG9jay1uYW1lczogbGlzdCBvZiBjbG9jayBuYW1lcyBzb3J0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIGNsb2NrcworCSAgICAgICBwcm9wZXJ0eS4gTXVzdCBjb250YWluICJhY2xrX2RlY29uIiwgImFjbGtfc21tdV9kZWNvbjB4IiwKKwkgICAgICAgImFjbGtfeGl1X2RlY29uMHgiLCAicGNsa19zbW11X2RlY29uMHgiLCBjbGtfZGVjb25fdmNsayIsCisJICAgICAgICJzY2xrX2RlY29uX2VjbGsiCistIHBvcnRzOiBjb250YWlucyBhIHBvcnQgd2hpY2ggaXMgY29ubmVjdGVkIHRvIG1pYyBub2RlLiBhZGRyZXNzLWNlbGxzIGFuZAorCSBzaXplLWNlbGxzIG11c3QgMSBhbmQgMCwgcmVzcGVjdGl2ZWx5LgorLSBwb3J0OiBjb250YWlucyBhbiBlbmRwb2ludCBub2RlIHdoaWNoIGlzIGNvbm5lY3RlZCB0byB0aGUgZW5kcG9pbnQgaW4gdGhlIG1pYworCW5vZGUuIFRoZSByZWcgdmFsdWUgbXVzZXQgYmUgMC4KKy0gaTgwLWlmLXRpbWluZ3M6IHNwZWNpZnkgd2hldGhlciB0aGUgcGFuZWwgd2hpY2ggaXMgY29ubmVjdGVkIHRvIGRlY29uIHVzZXMKKwkJICBpODAgbGNkIGludGVyZmFjZSBvciBtaXBpIHZpZGVvIGludGVyZmFjZS4gVGhpcyBub2RlIGNvbnRhaW5zCisJCSAgbm8gdGltaW5nIGluZm9ybWF0aW9uIGFzIHRoYXQgb2YgZmltZCBkb2VzLiBCZWNhdXNlIHRoZXJlIGlzCisJCSAgbm8gcmVnaXN0ZXIgaW4gZGVjb24gdG8gc3BlY2lmeSBpODAgaW50ZXJmYWNlIHRpbWluZyB2YWx1ZSwKKwkJICBpdCBpcyBub3QgbmVlZGVkLCBidXQgbWFrZSBpdCByZW1haW4gdG8gdXNlIHNhbWUga2luZCBvZiBub2RlCisJCSAgaW4gZmltZCBhbmQgZXh5bm9zNyBkZWNvbi4KKworRXhhbXBsZToKK1NvQyBzcGVjaWZpYyBEVCBlbnRyeToKK2RlY29uOiBkZWNvbkAxMzgwMDAwMCB7CisJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczU0MzMtZGVjb24iOworCXJlZyA9IDwweDEzODAwMDAwIDB4MjEwND47CisJY2xvY2tzID0gPCZjbXVfZGlzcCBDTEtfQUNMS19ERUNPTj4sIDwmY211X2Rpc3AgQ0xLX0FDTEtfU01NVV9ERUNPTjBYPiwKKwkJPCZjbXVfZGlzcCBDTEtfQUNMS19YSVVfREVDT04wWD4sCisJCTwmY211X2Rpc3AgQ0xLX1BDTEtfU01NVV9ERUNPTjBYPiwKKwkJPCZjbXVfZGlzcCBDTEtfU0NMS19ERUNPTl9WQ0xLPiwKKwkJPCZjbXVfZGlzcCBDTEtfU0NMS19ERUNPTl9FQ0xLPjsKKwljbG9jay1uYW1lcyA9ICJhY2xrX2RlY29uIiwgImFjbGtfc21tdV9kZWNvbjB4IiwgImFjbGtfeGl1X2RlY29uMHgiLAorCQkicGNsa19zbW11X2RlY29uMHgiLCAic2Nsa19kZWNvbl92Y2xrIiwgInNjbGtfZGVjb25fZWNsayI7CisJaW50ZXJydXB0LW5hbWVzID0gInZzeW5jIiwgImxjZF9zeXMiOworCWludGVycnVwdHMgPSA8MCAyMDIgMD4sIDwwIDIwMyAwPjsKKworCXBvcnRzIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCisJCXBvcnRAMCB7CisJCQlyZWcgPSA8MD47CisJCQlkZWNvbl90b19taWM6IGVuZHBvaW50IHsKKwkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8Jm1pY190b19kZWNvbj47CisJCQl9OworCQl9OworCX07Cit9OworCitCb2FyZCBzcGVjaWZpYyBEVCBlbnRyeToKKyZkZWNvbiB7CisJaTgwLWlmLXRpbWluZ3MgeworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvZXh5bm9zL2V4eW5vczctZGVjb24udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvZXh5bm9zL2V4eW5vczctZGVjb24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5MzhjYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9leHlub3MvZXh5bm9zNy1kZWNvbi50eHQKQEAgLTAsMCArMSw2OCBAQAorRGV2aWNlLVRyZWUgYmluZGluZ3MgZm9yIFNhbXN1bmcgRXh5bm9zNyBTb0MgZGlzcGxheSBjb250cm9sbGVyIChERUNPTikKKworREVDT04gKERpc3BsYXkgYW5kIEVuaGFuY2VtZW50IENvbnRyb2xsZXIpIGlzIHRoZSBEaXNwbGF5IENvbnRyb2xsZXIgZm9yIHRoZQorRXh5bm9zNyBzZXJpZXMgb2YgU29DcyB3aGljaCB0cmFuc2ZlcnMgdGhlIGltYWdlIGRhdGEgZnJvbSBhIHZpZGVvIG1lbW9yeQorYnVmZmVyIHRvIGFuIGV4dGVybmFsIExDRCBpbnRlcmZhY2UuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHZhbHVlIHNob3VsZCBiZSAic2Ftc3VuZyxleHlub3M3LWRlY29uIjsKKworLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBERUNPTiByZWdpc3RlcnMgc2V0LgorCistIGludGVycnVwdC1wYXJlbnQ6IHNob3VsZCBiZSB0aGUgcGhhbmRsZSBvZiB0aGUgZGVjb24gY29udHJvbGxlcidzCisJCXBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlci4KKworLSBpbnRlcnJ1cHRzOiBzaG91bGQgY29udGFpbiBhIGxpc3Qgb2YgYWxsIERFQ09OIElQIGJsb2NrIGludGVycnVwdHMgaW4gdGhlCisJCSBvcmRlcjogRklGTyBMZXZlbCwgVlNZTkMsIExDRF9TWVNURU0uIFRoZSBpbnRlcnJ1cHQgc3BlY2lmaWVyCisJCSBmb3JtYXQgZGVwZW5kcyBvbiB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgdXNlZC4KKworLSBpbnRlcnJ1cHQtbmFtZXM6IHNob3VsZCBjb250YWluIHRoZSBpbnRlcnJ1cHQgbmFtZXM6ICJmaWZvIiwgInZzeW5jIiwKKwkibGNkX3N5cyIsIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZXkgd2VyZSBsaXN0ZWQgaW4gdGhlIGludGVycnVwdHMKKyAgICAgICAgcHJvcGVydHkuCisKKy0gcGluY3RybC0wOiBwaW4gY29udHJvbCBncm91cCB0byBiZSB1c2VkIGZvciB0aGlzIGNvbnRyb2xsZXIuCisKKy0gcGluY3RybC1uYW1lczogbXVzdCBjb250YWluIGEgImRlZmF1bHQiIGVudHJ5LgorCistIGNsb2NrczogbXVzdCBpbmNsdWRlIGNsb2NrIHNwZWNpZmllcnMgY29ycmVzcG9uZGluZyB0byBlbnRyaWVzIGluIHRoZQorICAgICAgICAgY2xvY2stbmFtZXMgcHJvcGVydHkuCisKKy0gY2xvY2stbmFtZXM6IGxpc3Qgb2YgY2xvY2sgbmFtZXMgc29ydGVkIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBjbG9ja3MKKyAgICAgICAgICAgICAgIHByb3BlcnR5LiBNdXN0IGNvbnRhaW4gInBjbGtfZGVjb24wIiwgImFjbGtfZGVjb24wIiwKKwkgICAgICAgImRlY29uMF9lY2xrIiwgImRlY29uMF92Y2xrIi4KKy0gaTgwLWlmLXRpbWluZ3M6IHRpbWluZyBjb25maWd1cmF0aW9uIGZvciBsY2QgaTgwIGludGVyZmFjZSBzdXBwb3J0LgorCitPcHRpb25hbCBQcm9wZXJ0aWVzOgorLSBzYW1zdW5nLHBvd2VyLWRvbWFpbjogYSBwaGFuZGxlIHRvIERFQ09OIHBvd2VyIGRvbWFpbiBub2RlLgorLSBkaXNwbGF5LXRpbWluZ3M6IHRpbWluZyBzZXR0aW5ncyBmb3IgREVDT04sIGFzIGRlc2NyaWJlZCBpbiBkb2N1bWVudCBbMV0uCisJCUNhbiBiZSB1c2VkIGluIGNhc2UgdGltaW5ncyBjYW5ub3QgYmUgcHJvdmlkZWQgb3RoZXJ3aXNlCisJCW9yIHRvIG92ZXJyaWRlIHRpbWluZ3MgcHJvdmlkZWQgYnkgdGhlIHBhbmVsLgorCitbMV06IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2Rpc3BsYXktdGltaW5nLnR4dAorCitFeGFtcGxlOgorCitTb0Mgc3BlY2lmaWMgRFQgZW50cnk6CisKKwlkZWNvbkAxMzkzMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M3LWRlY29uIjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmY29tYmluZXI+OworCQlyZWcgPSA8MHgxMzkzMDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHQtbmFtZXMgPSAibGNkX3N5cyIsICJ2c3luYyIsICJmaWZvIjsKKwkJaW50ZXJydXB0cyA9IDwwIDE4OCAwPiwgPDAgMTg5IDA+LCA8MCAxOTAgMD47CisJCWNsb2NrcyA9IDwmY2xvY2tfZGlzcCBQQ0xLX0RFQ09OX0lOVD4sCisJCQkgPCZjbG9ja19kaXNwIEFDTEtfREVDT05fSU5UPiwKKwkJCSA8JmNsb2NrX2Rpc3AgU0NMS19ERUNPTl9JTlRfRUNMSz4sCisJCQkgPCZjbG9ja19kaXNwIFNDTEtfREVDT05fSU5UX0VYVENMS1BMTD47CisJCWNsb2NrLW5hbWVzID0gInBjbGtfZGVjb24wIiwgImFjbGtfZGVjb24wIiwgImRlY29uMF9lY2xrIiwKKwkJCQkiZGVjb24wX3ZjbGsiOworCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCX07CisKK0JvYXJkIHNwZWNpZmljIERUIGVudHJ5OgorCisJZGVjb25AMTM5MzAwMDAgeworCQlwaW5jdHJsLTAgPSA8JmxjZF9jbGsgJnB3bTFfb3V0PjsKKwkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwkJc3RhdHVzID0gIm9rYXkiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9leHlub3MvZXh5bm9zX2RwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2V4eW5vcy9leHlub3NfZHAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0NjkzZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9leHlub3MvZXh5bm9zX2RwLnR4dApAQCAtMCwwICsxLDEyMCBAQAorVGhlIEV4eW5vcyBkaXNwbGF5IHBvcnQgaW50ZXJmYWNlIHNob3VsZCBiZSBjb25maWd1cmVkIGJhc2VkIG9uCit0aGUgdHlwZSBvZiBwYW5lbCBjb25uZWN0ZWQgdG8gaXQuCisKK1dlIHVzZSB0d28gbm9kZXM6CisJLWRwLWNvbnRyb2xsZXIgbm9kZQorCS1kcHR4LXBoeSBub2RlKGRlZmluZWQgaW5zaWRlIGRwLWNvbnRyb2xsZXIgbm9kZSkKKworRm9yIHRoZSBEUC1QSFkgaW5pdGlhbGl6YXRpb24sIHdlIHVzZSB0aGUgZHB0eC1waHkgbm9kZS4KK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIGRwdHgtcGh5OiBkZXByZWNhdGVkLCB1c2UgcGh5cyBhbmQgcGh5LW5hbWVzCisJLXJlZzogZGVwcmVjYXRlZAorCQlCYXNlIGFkZHJlc3Mgb2YgRFAgUEhZIHJlZ2lzdGVyLgorCS1zYW1zdW5nLGVuYWJsZS1tYXNrOiBkZXByZWNhdGVkCisJCVRoZSBiaXQtbWFzayB1c2VkIHRvIGVuYWJsZS9kaXNhYmxlIERQIFBIWS4KKworRm9yIHRoZSBQYW5lbCBpbml0aWFsaXphdGlvbiwgd2UgcmVhZCBkYXRhIGZyb20gZHAtY29udHJvbGxlciBub2RlLgorUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgZHAtY29udHJvbGxlcjoKKwktY29tcGF0aWJsZToKKwkJc2hvdWxkIGJlICJzYW1zdW5nLGV4eW5vczUtZHAiLgorCS1yZWc6CisJCXBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoCisJCW9mIG1lbW9yeSBtYXBwZWQgcmVnaW9uLgorCS1pbnRlcnJ1cHRzOgorCQlpbnRlcnJ1cHQgY29tYmluZXIgdmFsdWVzLgorCS1jbG9ja3M6CisJCWZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc6IGhhbmRsZSB0byBkcCBjbG9jay4KKwktY2xvY2stbmFtZXM6CisJCWZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc6IFNoYWxsIGJlICJkcCIuCisJLWludGVycnVwdC1wYXJlbnQ6CisJCXBoYW5kbGUgdG8gSW50ZXJydXB0IGNvbWJpbmVyIG5vZGUuCisJLXBoeXM6CisJCWZyb20gZ2VuZXJhbCBQSFkgYmluZGluZzogdGhlIHBoYW5kbGUgZm9yIHRoZSBQSFkgZGV2aWNlLgorCS1waHktbmFtZXM6CisJCWZyb20gZ2VuZXJhbCBQSFkgYmluZGluZzogU2hvdWxkIGJlICJkcCIuCisJLXNhbXN1bmcsY29sb3Itc3BhY2U6CisJCWlucHV0IHZpZGVvIGRhdGEgZm9ybWF0LgorCQkJQ09MT1JfUkdCID0gMCwgQ09MT1JfWUNCQ1I0MjIgPSAxLCBDT0xPUl9ZQ0JDUjQ0NCA9IDIKKwktc2Ftc3VuZyxkeW5hbWljLXJhbmdlOgorCQlkeW5hbWljIHJhbmdlIGZvciBpbnB1dCB2aWRlbyBkYXRhLgorCQkJVkVTQSA9IDAsIENFQSA9IDEKKwktc2Ftc3VuZyx5Y2Jjci1jb2VmZjoKKwkJWUNiQ3IgY28tZWZmaWNpZW50cyBmb3IgaW5wdXQgdmlkZW8uCisJCQlDT0xPUl9ZQ0JDUjYwMSA9IDAsIENPTE9SX1lDQkNSNzA5ID0gMQorCS1zYW1zdW5nLGNvbG9yLWRlcHRoOgorCQludW1iZXIgb2YgYml0cyBwZXIgY29sb3VyIGNvbXBvbmVudC4KKwkJCUNPTE9SXzYgPSAwLCBDT0xPUl84ID0gMSwgQ09MT1JfMTAgPSAyLCBDT0xPUl8xMiA9IDMKKwktc2Ftc3VuZyxsaW5rLXJhdGU6CisJCWxpbmsgcmF0ZSBzdXBwb3J0ZWQgYnkgdGhlIHBhbmVsLgorCQkJTElOS19SQVRFXzFfNjJHQlBTID0gMHg2LCBMSU5LX1JBVEVfMl83MEdCUFMgPSAweDBBCisJLXNhbXN1bmcsbGFuZS1jb3VudDoKKwkJbnVtYmVyIG9mIGxhbmVzIHN1cHBvcnRlZCBieSB0aGUgcGFuZWwuCisJCQlMQU5FX0NPVU5UMSA9IDEsIExBTkVfQ09VTlQyID0gMiwgTEFORV9DT1VOVDQgPSA0CisJLSBkaXNwbGF5LXRpbWluZ3M6IHRpbWluZ3MgZm9yIHRoZSBjb25uZWN0ZWQgcGFuZWwgYXMgZGVzY3JpYmVkIGJ5CisJCURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2Rpc3BsYXktdGltaW5nLnR4dAorCitPcHRpb25hbCBwcm9wZXJ0aWVzIGZvciBkcC1jb250cm9sbGVyOgorCS1pbnRlcmxhY2VkOgorCQlpbnRlcmxhY2Ugc2NhbiBtb2RlLgorCQkJUHJvZ3Jlc3NpdmUgaWYgZGVmaW5lZCwgSW50ZXJsYWNlZCBpZiBub3QgZGVmaW5lZAorCS12c3luYy1hY3RpdmUtaGlnaDoKKwkJVlNZTkMgcG9sYXJpdHkgY29uZmlndXJhdGlvbi4KKwkJCUhpZ2ggaWYgZGVmaW5lZCwgTG93IGlmIG5vdCBkZWZpbmVkCisJLWhzeW5jLWFjdGl2ZS1oaWdoOgorCQlIU1lOQyBwb2xhcml0eSBjb25maWd1cmF0aW9uLgorCQkJSGlnaCBpZiBkZWZpbmVkLCBMb3cgaWYgbm90IGRlZmluZWQKKwktc2Ftc3VuZyxocGQtZ3BpbzoKKwkJSG90cGx1ZyBkZXRlY3QgR1BJTy4KKwkJCUluZGljYXRlcyB3aGljaCBHUElPIHNob3VsZCBiZSB1c2VkIGZvciBob3RwbHVnCisJCQlkZXRlY3Rpb24KKwktdmlkZW8gaW50ZXJmYWNlczogRGV2aWNlIG5vZGUgY2FuIGNvbnRhaW4gdmlkZW8gaW50ZXJmYWNlIHBvcnQKKwkJCSAgICBub2RlcyBhY2NvcmRpbmcgdG8gWzFdLgorCitbMV06IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS92aWRlby1pbnRlcmZhY2VzLnR4dAorCitFeGFtcGxlOgorCitTT0Mgc3BlY2lmaWMgcG9ydGlvbjoKKwlkcC1jb250cm9sbGVyIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczUtZHAiOworCQlyZWcgPSA8MHgxNDViMDAwMCAweDEwMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwxMCAzPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmY29tYmluZXI+OworCQljbG9ja3MgPSA8JmNsb2NrIDM0Mj47CisJCWNsb2NrLW5hbWVzID0gImRwIjsKKworCQlwaHlzID0gPCZkcF9waHk+OworCQlwaHktbmFtZXMgPSAiZHAiOworCX07CisKK0JvYXJkIFNwZWNpZmljIHBvcnRpb246CisJZHAtY29udHJvbGxlciB7CisJCXNhbXN1bmcsY29sb3Itc3BhY2UgPSA8MD47CisJCXNhbXN1bmcsZHluYW1pYy1yYW5nZSA9IDwwPjsKKwkJc2Ftc3VuZyx5Y2Jjci1jb2VmZiA9IDwwPjsKKwkJc2Ftc3VuZyxjb2xvci1kZXB0aCA9IDwxPjsKKwkJc2Ftc3VuZyxsaW5rLXJhdGUgPSA8MHgwYT47CisJCXNhbXN1bmcsbGFuZS1jb3VudCA9IDw0PjsKKworCQlkaXNwbGF5LXRpbWluZ3MgeworCQkJbmF0aXZlLW1vZGUgPSA8JmxjZF90aW1pbmc+OworCQkJbGNkX3RpbWluZzogMTM2Nng3NjggeworCQkJCWNsb2NrLWZyZXF1ZW5jeSA9IDw3MDU4OTI4MD47CisJCQkJaGFjdGl2ZSA9IDwxMzY2PjsKKwkJCQl2YWN0aXZlID0gPDc2OD47CisJCQkJaGZyb250LXBvcmNoID0gPDQwPjsKKwkJCQloYmFjay1wb3JjaCA9IDw0MD47CisJCQkJaHN5bmMtbGVuID0gPDMyPjsKKwkJCQl2YmFjay1wb3JjaCA9IDwxMD47CisJCQkJdmZyb250LXBvcmNoID0gPDEyPjsKKwkJCQl2c3luYy1sZW4gPSA8Nj47CisJCQl9OworCQl9OworCisJCXBvcnRzIHsKKwkJCXBvcnRAMCB7CisJCQkJZHBfb3V0OiBlbmRwb2ludCB7CisJCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmYnJpZGdlX2luPjsKKwkJCQl9OworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvZXh5bm9zL2V4eW5vc19kc2ltLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2V4eW5vcy9leHlub3NfZHNpbS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGU2ZjBjMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2V4eW5vcy9leHlub3NfZHNpbS50eHQKQEAgLTAsMCArMSwxMDMgQEAKK0V4eW5vcyBNSVBJIERTSSBNYXN0ZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiB2YWx1ZSBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcKKwkJInNhbXN1bmcsZXh5bm9zMzI1MC1taXBpLWRzaSIgLyogZm9yIEV4eW5vczMyNTAvMzQ3MiBTb0NzICovCisJCSJzYW1zdW5nLGV4eW5vczQyMTAtbWlwaS1kc2kiIC8qIGZvciBFeHlub3M0IFNvQ3MgKi8KKwkJInNhbXN1bmcsZXh5bm9zNDQxNS1taXBpLWRzaSIgLyogZm9yIEV4eW5vczQ0MTUgU29DICovCisJCSJzYW1zdW5nLGV4eW5vczU0MTAtbWlwaS1kc2kiIC8qIGZvciBFeHlub3M1NDEwLzU0MjAvNTQ0MCBTb0NzICovCisJCSJzYW1zdW5nLGV4eW5vczU0MzMtbWlwaS1kc2kiIC8qIGZvciBFeHlub3M1NDMzIFNvQ3MgKi8KKyAgLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlcnMgc2V0IGZvciB0aGUgZGV2aWNlCisgIC0gaW50ZXJydXB0czogc2hvdWxkIGNvbnRhaW4gRFNJIGludGVycnVwdAorICAtIGNsb2NrczogbGlzdCBvZiBjbG9jayBzcGVjaWZpZXJzLCBtdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggcmVxdWlyZWQKKyAgICBlbnRyeSBpbiBjbG9jay1uYW1lcworICAtIGNsb2NrLW5hbWVzOiBzaG91bGQgaW5jbHVkZSAiYnVzX2NsayJhbmQgInNjbGtfbWlwaSIgZW50cmllcworCQkgdGhlIHVzZSBvZiAicGxsX2NsayIgaXMgZGVwcmVjYXRlZAorICAtIHBoeXM6IGxpc3Qgb2YgcGh5IHNwZWNpZmllcnMsIG11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCByZXF1aXJlZAorICAgIGVudHJ5IGluIHBoeS1uYW1lcworICAtIHBoeS1uYW1lczogc2hvdWxkIGluY2x1ZGUgImRzaW0iIGVudHJ5CisgIC0gdmRkY29yZS1zdXBwbHk6IE1JUEkgRFNJTSBDb3JlIHZvbHRhZ2Ugc3VwcGx5IChlLmcuIDEuMVYpCisgIC0gdmRkaW8tc3VwcGx5OiBNSVBJIERTSU0gSS9PIGFuZCBQTEwgdm9sdGFnZSBzdXBwbHkgKGUuZy4gMS44VikKKyAgLSBzYW1zdW5nLHBsbC1jbG9jay1mcmVxdWVuY3k6IHNwZWNpZmllcyBmcmVxdWVuY3kgb2YgdGhlIG9zY2lsbGF0b3IgY2xvY2sKKyAgLSAjYWRkcmVzcy1jZWxscywgI3NpemUtY2VsbHM6IHNob3VsZCBiZSBzZXQgcmVzcGVjdGl2ZWx5IHRvIDwxPiBhbmQgPDA+CisgICAgYWNjb3JkaW5nIHRvIERTSSBob3N0IGJpbmRpbmdzIChzZWUgTUlQSSBEU0kgYmluZGluZ3MgWzFdKQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIHBvd2VyLWRvbWFpbnM6IGEgcGhhbmRsZSB0byBEU0lNIHBvd2VyIGRvbWFpbiBub2RlCisKK0NoaWxkIG5vZGVzOgorICBTaG91bGQgY29udGFpbiBEU0kgcGVyaXBoZXJhbCBub2RlcyAoc2VlIE1JUEkgRFNJIGJpbmRpbmdzIFsxXSkuCisKK1ZpZGVvIGludGVyZmFjZXM6CisgIERldmljZSBub2RlIGNhbiBjb250YWluIHZpZGVvIGludGVyZmFjZSBwb3J0IG5vZGVzIGFjY29yZGluZyB0byBbMl0uCisgIFRoZSBmb2xsb3dpbmcgYXJlIHByb3BlcnRpZXMgc3BlY2lmaWMgdG8gdGhvc2Ugbm9kZXM6CisKKyAgcG9ydCBub2RlIGluYm91bmQ6CisgICAgLSByZWc6IChyZXF1aXJlZCkgbXVzdCBiZSAwLgorICBwb3J0IG5vZGUgb3V0Ym91bmQ6CisgICAgLSByZWc6IChyZXF1aXJlZCkgbXVzdCBiZSAxLgorCisgIGVuZHBvaW50IG5vZGUgY29ubmVjdGVkIGZyb20gbWljIG5vZGUgKHJlZyA9IDApOgorICAgIC0gcmVtb3RlLWVuZHBvaW50OiBzcGVjaWZpZXMgdGhlIGVuZHBvaW50IGluIG1pYyBub2RlLiBUaGlzIG5vZGUgaXMgcmVxdWlyZWQKKwkJICAgICAgIGZvciBFeHlub3M1NDMzIG1pcGkgZHNpLiBTbyBtaWMgY2FuIGFjY2VzcyB0byBwYW5lbCBub2RlCisJCSAgICAgICB0aG91Z2hvdXQgdGhpcyBkc2kgbm9kZS4KKyAgZW5kcG9pbnQgbm9kZSBjb25uZWN0ZWQgdG8gcGFuZWwgbm9kZSAocmVnID0gMSk6CisgICAgLSByZW1vdGUtZW5kcG9pbnQ6IHNwZWNpZmllcyB0aGUgZW5kcG9pbnQgaW4gcGFuZWwgbm9kZS4gVGhpcyBub2RlIGlzCisJCSAgICAgICByZXF1aXJlZCBpbiBhbGwga2luZHMgb2YgZXh5bm9zIG1pcGkgZHNpIHRvIHJlcHJlc2VudAorCQkgICAgICAgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBtaXBpIGRzaSBhbmQgcGFuZWwuCisgICAgLSBzYW1zdW5nLGJ1cnN0LWNsb2NrLWZyZXF1ZW5jeTogc3BlY2lmaWVzIERTSSBmcmVxdWVuY3kgaW4gaGlnaC1zcGVlZCBidXJzdAorICAgICAgbW9kZQorICAgIC0gc2Ftc3VuZyxlc2MtY2xvY2stZnJlcXVlbmN5OiBzcGVjaWZpZXMgRFNJIGZyZXF1ZW5jeSBpbiBlc2NhcGUgbW9kZQorCitbMV06IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L21pcGktZHNpLWJ1cy50eHQKK1syXTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3ZpZGVvLWludGVyZmFjZXMudHh0CisKK0V4YW1wbGU6CisKKwlkc2lAMTFDODAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNDIxMC1taXBpLWRzaSI7CisJCXJlZyA9IDwweDExQzgwMDAwIDB4MTAwMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgNzkgMD47CisJCWNsb2NrcyA9IDwmY2xvY2sgMjg2PiwgPCZjbG9jayAxNDM+OworCQljbG9jay1uYW1lcyA9ICJidXNfY2xrIiwgInNjbGtfbWlwaSI7CisJCXBoeXMgPSA8Jm1pcGlfcGh5IDE+OworCQlwaHktbmFtZXMgPSAiZHNpbSI7CisJCXZkZGNvcmUtc3VwcGx5ID0gPCZ2dXNiX3JlZz47CisJCXZkZGlvLXN1cHBseSA9IDwmdm1pcGlfcmVnPjsKKwkJcG93ZXItZG9tYWlucyA9IDwmcGRfbGNkMD47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJc2Ftc3VuZyxwbGwtY2xvY2stZnJlcXVlbmN5ID0gPDI0MDAwMDAwPjsKKworCQlwYW5lbEAxIHsKKwkJCXJlZyA9IDwwPjsKKwkJCS4uLgorCQkJcG9ydCB7CisJCQkJcGFuZWxfZXA6IGVuZHBvaW50IHsKKwkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZkc2lfZXA+OworCQkJCX07CisJCQl9OworCQl9OworCisJCXBvcnRzIHsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJCXBvcnRAMCB7CisJCQkJcmVnID0gPDA+OworCQkJCWRlY29uX3RvX21pYzogZW5kcG9pbnQgeworCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8Jm1pY190b19kZWNvbj47CisJCQkJfTsKKwkJCX07CisKKwkJCXBvcnRAMSB7CisJCQkJcmVnID0gPDE+OworCQkJCWRzaV9lcDogZW5kcG9pbnQgeworCQkJCQlyZWcgPSA8MD47CisJCQkJCXNhbXN1bmcsYnVyc3QtY2xvY2stZnJlcXVlbmN5ID0gPDUwMDAwMDAwMD47CisJCQkJCXNhbXN1bmcsZXNjLWNsb2NrLWZyZXF1ZW5jeSA9IDwyMDAwMDAwMD47CisJCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmcGFuZWxfZXA+OworCQkJCX07CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9leHlub3MvZXh5bm9zX2hkbWkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvZXh5bm9zL2V4eW5vc19oZG1pLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmQ4Y2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvZXh5bm9zL2V4eW5vc19oZG1pLnR4dApAQCAtMCwwICsxLDQzIEBACitEZXZpY2UtVHJlZSBiaW5kaW5ncyBmb3IgZHJtIGhkbWkgZHJpdmVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHZhbHVlIHNob3VsZCBiZSBvbmUgYW1vbmcgdGhlIGZvbGxvd2luZzoKKwkxKSAic2Ftc3VuZyxleHlub3M1LWhkbWkiIDxERVBSRUNBVEVEPgorCTIpICJzYW1zdW5nLGV4eW5vczQyMTAtaGRtaSIKKwkzKSAic2Ftc3VuZyxleHlub3M0MjEyLWhkbWkiCisJNCkgInNhbXN1bmcsZXh5bm9zNTQyMC1oZG1pIgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgaGRtaSBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKwlyZWdpb24uCistIGludGVycnVwdHM6IGludGVycnVwdCBudW1iZXIgdG8gdGhlIGNwdS4KKy0gaHBkLWdwaW86IGZvbGxvd2luZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaG90cGx1ZyBncGlvIHBpbi4KKwlhKSBwaGFuZGxlIG9mIHRoZSBncGlvIGNvbnRyb2xsZXIgbm9kZS4KKwliKSBwaW4gbnVtYmVyIHdpdGhpbiB0aGUgZ3BpbyBjb250cm9sbGVyLgorCWMpIG9wdGlvbmFsIGZsYWdzIGFuZCBwdWxsIHVwL2Rvd24uCistIGNsb2NrczogbGlzdCBvZiBjbG9jayBJRHMgZnJvbSBTb0MgY2xvY2sgZHJpdmVyLgorCWEpIGhkbWk6IEdhdGUgb2YgSERNSSBJUCBidXMgY2xvY2suCisJYikgc2Nsa19oZG1pOiBHYXRlIG9mIEhETUkgc3BlY2lhbCBjbG9jay4KKwljKSBzY2xrX3BpeGVsOiBQaXhlbCBzcGVjaWFsIGNsb2NrLCBvbmUgb2YgdGhlIHR3byBwb3NzaWJsZSBpbnB1dHMgb2YKKwkJSERNSSBjbG9jayBtdXguCisJZCkgc2Nsa19oZG1pcGh5OiBIRE1JIFBIWSBjbG9jayBvdXRwdXQsIG9uZSBvZiB0d28gcG9zc2libGUgaW5wdXRzIG9mCisJCUhETUkgY2xvY2sgbXV4LgorCWUpIG1vdXRfaGRtaTogSXQgaXMgcmVxdWlyZWQgYnkgdGhlIGRyaXZlciB0byBzd2l0Y2ggYmV0d2VlbiB0aGUgMgorCQlwYXJlbnRzIGkuZS4gc2Nsa19waXhlbCBhbmQgc2Nsa19oZG1pcGh5LiBJZiBoZG1pcGh5IGlzIHN0YWJsZQorCQlhZnRlciBjb25maWd1cmF0aW9uLCBwYXJlbnQgaXMgc2V0IHRvIHNjbGtfaGRtaXBoeSBlbHNlCisJCXNjbGtfcGl4ZWwuCistIGNsb2NrLW5hbWVzOiBhbGlhc2VzIGFzIHBlciBkcml2ZXIgcmVxdWlyZW1lbnRzIGZvciBhYm92ZSBjbG9jayBJRHM6CisJImhkbWkiLCAic2Nsa19oZG1pIiwgInNjbGtfcGl4ZWwiLCAic2Nsa19oZG1pcGh5IiBhbmQgIm1vdXRfaGRtaSIuCistIGRkYzogcGhhbmRsZSB0byB0aGUgaGRtaSBkZGMgbm9kZQorLSBwaHk6IHBoYW5kbGUgdG8gdGhlIGhkbWkgcGh5IG5vZGUKKy0gc2Ftc3VuZyxzeXNjb24tcGhhbmRsZTogcGhhbmRsZSBmb3Igc3lzdGVtIGNvbnRyb2xsZXIgbm9kZSBmb3IgUE1VLgorCitFeGFtcGxlOgorCisJaGRtaSB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M0MjEyLWhkbWkiOworCQlyZWcgPSA8MHgxNDUzMDAwMCAweDEwMDAwMD47CisJCWludGVycnVwdHMgPSA8MCA5NSAwPjsKKwkJaHBkLWdwaW8gPSA8JmdweDMgNyAxPjsKKwkJZGRjID0gPCZoZG1pX2RkY19ub2RlPjsKKwkJcGh5ID0gPCZoZG1pX3BoeV9ub2RlPjsKKwkJc2Ftc3VuZyxzeXNjb24tcGhhbmRsZSA9IDwmcG11X3N5c3RlbV9jb250cm9sbGVyPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvZXh5bm9zL2V4eW5vc19oZG1pZGRjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2V4eW5vcy9leHlub3NfaGRtaWRkYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFlZWU5NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2V4eW5vcy9leHlub3NfaGRtaWRkYy50eHQKQEAgLTAsMCArMSwxNSBAQAorRGV2aWNlLVRyZWUgYmluZGluZ3MgZm9yIGhkbWlkZGMgZHJpdmVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHZhbHVlIHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZworCTEpICJzYW1zdW5nLGV4eW5vczUtaGRtaWRkYyIgPERFUFJFQ0FURUQ+CisJMikgInNhbXN1bmcsZXh5bm9zNDIxMC1oZG1pZGRjIgorCistIHJlZzogSTJDIGFkZHJlc3Mgb2YgdGhlIGhkbWlkZGMgZGV2aWNlLgorCitFeGFtcGxlOgorCisJaGRtaWRkYyB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M0MjEwLWhkbWlkZGMiOworCQlyZWcgPSA8MHg1MD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2V4eW5vcy9leHlub3NfaGRtaXBoeS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9leHlub3MvZXh5bm9zX2hkbWlwaHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MmY2NDEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9leHlub3MvZXh5bm9zX2hkbWlwaHkudHh0CkBAIC0wLDAgKzEsMTUgQEAKK0RldmljZS1UcmVlIGJpbmRpbmdzIGZvciBoZG1pcGh5IGRyaXZlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiB2YWx1ZSBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisJMSkgInNhbXN1bmcsZXh5bm9zNS1oZG1pcGh5IiA8REVQUkVDQVRFRD4KKwkyKSAic2Ftc3VuZyxleHlub3M0MjEwLWhkbWlwaHkiLgorCTMpICJzYW1zdW5nLGV4eW5vczQyMTItaGRtaXBoeSIuCistIHJlZzogSTJDIGFkZHJlc3Mgb2YgdGhlIGhkbWlwaHkgZGV2aWNlLgorCitFeGFtcGxlOgorCisJaGRtaXBoeSB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M0MjEwLWhkbWlwaHkiOworCQlyZWcgPSA8MHgzOD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2V4eW5vcy9leHlub3NfbWl4ZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvZXh5bm9zL2V4eW5vc19taXhlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UzODEyOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2V4eW5vcy9leHlub3NfbWl4ZXIudHh0CkBAIC0wLDAgKzEsMjYgQEAKK0RldmljZS1UcmVlIGJpbmRpbmdzIGZvciBtaXhlciBkcml2ZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogdmFsdWUgc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCTEpICJzYW1zdW5nLGV4eW5vczUtbWl4ZXIiIDxERVBSRUNBVEVEPgorCTIpICJzYW1zdW5nLGV4eW5vczQyMTAtbWl4ZXIiCisJMykgInNhbXN1bmcsZXh5bm9zNDIxMi1taXhlciIKKwk0KSAic2Ftc3VuZyxleHlub3M1MjUwLW1peGVyIgorCTUpICJzYW1zdW5nLGV4eW5vczU0MjAtbWl4ZXIiCisKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIG1peGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorCXJlZ2lvbi4KKy0gaW50ZXJydXB0czogaW50ZXJydXB0IG51bWJlciB0byB0aGUgY3B1LgorLSBjbG9ja3M6IGxpc3Qgb2YgY2xvY2sgSURzIGZyb20gU29DIGNsb2NrIGRyaXZlci4KKwlhKSBtaXhlcjogR2F0ZSBvZiBNaXhlciBJUCBidXMgY2xvY2suCisJYikgc2Nsa19oZG1pOiBIRE1JIFNwZWNpYWwgY2xvY2ssIG9uZSBvZiB0aGUgdHdvIHBvc3NpYmxlIGlucHV0cyBvZgorICAgICAgICAgICAgICAgbWl4ZXIgbXV4LgorCWMpIGhkbWk6IEdhdGUgb2YgSERNSSBJUCBidXMgY2xvY2ssIG5lZWRlZCB0b2dldGhlciB3aXRoIHNjbGtfaGRtaS4KKworRXhhbXBsZToKKworCW1peGVyIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczUyNTAtbWl4ZXIiOworCQlyZWcgPSA8MHgxNDQ1MDAwMCAweDEwMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDk0IDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9leHlub3Mvc2Ftc3VuZy1maW1kLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2V4eW5vcy9zYW1zdW5nLWZpbWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3YzNjZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9leHlub3Mvc2Ftc3VuZy1maW1kLnR4dApAQCAtMCwwICsxLDExMCBAQAorRGV2aWNlLVRyZWUgYmluZGluZ3MgZm9yIFNhbXN1bmcgU29DIGRpc3BsYXkgY29udHJvbGxlciAoRklNRCkKKworRklNRCAoRnVsbHkgSW50ZXJhY3RpdmUgTW9iaWxlIERpc3BsYXkpIGlzIHRoZSBEaXNwbGF5IENvbnRyb2xsZXIgZm9yIHRoZQorU2Ftc3VuZyBzZXJpZXMgb2YgU29DcyB3aGljaCB0cmFuc2ZlcnMgdGhlIGltYWdlIGRhdGEgZnJvbSBhIHZpZGVvIG1lbW9yeQorYnVmZmVyIHRvIGFuIGV4dGVybmFsIExDRCBpbnRlcmZhY2UuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHZhbHVlIHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZworCQkic2Ftc3VuZyxzM2MyNDQzLWZpbWQiOyAvKiBmb3IgUzNDMjRYWCBTb0NzICovCisJCSJzYW1zdW5nLHMzYzY0MDAtZmltZCI7IC8qIGZvciBTM0M2NFhYIFNvQ3MgKi8KKwkJInNhbXN1bmcsczVwdjIxMC1maW1kIjsgLyogZm9yIFM1UFYyMTAgU29DICovCisJCSJzYW1zdW5nLGV4eW5vczMyNTAtZmltZCI7IC8qIGZvciBFeHlub3MzMjUwLzM0NzIgU29DcyAqLworCQkic2Ftc3VuZyxleHlub3M0MjEwLWZpbWQiOyAvKiBmb3IgRXh5bm9zNCBTb0NzICovCisJCSJzYW1zdW5nLGV4eW5vczQ0MTUtZmltZCI7IC8qIGZvciBFeHlub3M0NDE1IFNvQyAqLworCQkic2Ftc3VuZyxleHlub3M1MjUwLWZpbWQiOyAvKiBmb3IgRXh5bm9zNSBTb0NzICovCisKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgRklNRCByZWdpc3RlcnMgc2V0LgorCistIGludGVycnVwdC1wYXJlbnQ6IHNob3VsZCBiZSB0aGUgcGhhbmRsZSBvZiB0aGUgZmltZCBjb250cm9sbGVyJ3MKKwkJcGFyZW50IGludGVycnVwdCBjb250cm9sbGVyLgorCistIGludGVycnVwdHM6IHNob3VsZCBjb250YWluIGEgbGlzdCBvZiBhbGwgRklNRCBJUCBibG9jayBpbnRlcnJ1cHRzIGluIHRoZQorCQkgb3JkZXI6IEZJRk8gTGV2ZWwsIFZTWU5DLCBMQ0RfU1lTVEVNLiBUaGUgaW50ZXJydXB0IHNwZWNpZmllcgorCQkgZm9ybWF0IGRlcGVuZHMgb24gdGhlIGludGVycnVwdCBjb250cm9sbGVyIHVzZWQuCisKKy0gaW50ZXJydXB0LW5hbWVzOiBzaG91bGQgY29udGFpbiB0aGUgaW50ZXJydXB0IG5hbWVzOiAiZmlmbyIsICJ2c3luYyIsCisJImxjZF9zeXMiLCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGV5IHdlcmUgbGlzdGVkIGluIHRoZSBpbnRlcnJ1cHRzCisgICAgICAgIHByb3BlcnR5LgorCistIHBpbmN0cmwtMDogcGluIGNvbnRyb2wgZ3JvdXAgdG8gYmUgdXNlZCBmb3IgdGhpcyBjb250cm9sbGVyLgorCistIHBpbmN0cmwtbmFtZXM6IG11c3QgY29udGFpbiBhICJkZWZhdWx0IiBlbnRyeS4KKworLSBjbG9ja3M6IG11c3QgaW5jbHVkZSBjbG9jayBzcGVjaWZpZXJzIGNvcnJlc3BvbmRpbmcgdG8gZW50cmllcyBpbiB0aGUKKyAgICAgICAgIGNsb2NrLW5hbWVzIHByb3BlcnR5LgorCistIGNsb2NrLW5hbWVzOiBsaXN0IG9mIGNsb2NrIG5hbWVzIHNvcnRlZCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgY2xvY2tzCisgICAgICAgICAgICAgICBwcm9wZXJ0eS4gTXVzdCBjb250YWluICJzY2xrX2ZpbWQiIGFuZCAiZmltZCIuCisKK09wdGlvbmFsIFByb3BlcnRpZXM6CistIHBvd2VyLWRvbWFpbnM6IGEgcGhhbmRsZSB0byBGSU1EIHBvd2VyIGRvbWFpbiBub2RlLgorLSBzYW1zdW5nLGludmVydC12ZGVuOiB2aWRlbyBlbmFibGUgc2lnbmFsIGlzIGludmVydGVkCistIHNhbXN1bmcsaW52ZXJ0LXZjbGs6IHZpZGVvIGNsb2NrIHNpZ25hbCBpcyBpbnZlcnRlZAorLSBkaXNwbGF5LXRpbWluZ3M6IHRpbWluZyBzZXR0aW5ncyBmb3IgRklNRCwgYXMgZGVzY3JpYmVkIGluIGRvY3VtZW50IFsxXS4KKwkJQ2FuIGJlIHVzZWQgaW4gY2FzZSB0aW1pbmdzIGNhbm5vdCBiZSBwcm92aWRlZCBvdGhlcndpc2UKKwkJb3IgdG8gb3ZlcnJpZGUgdGltaW5ncyBwcm92aWRlZCBieSB0aGUgcGFuZWwuCistIHNhbXN1bmcsc3lzcmVnOiBoYW5kbGUgdG8gc3lzY29uIHVzZWQgdG8gY29udHJvbCB0aGUgc3lzdGVtIHJlZ2lzdGVycworLSBpODAtaWYtdGltaW5nczogdGltaW5nIGNvbmZpZ3VyYXRpb24gZm9yIGxjZCBpODAgaW50ZXJmYWNlIHN1cHBvcnQuCisgIC0gY3Mtc2V0dXA6IGNsb2NrIGN5Y2xlcyBmb3IgdGhlIGFjdGl2ZSBwZXJpb2Qgb2YgYWRkcmVzcyBzaWduYWwgaXMgZW5hYmxlZAorICAgICAgICAgICAgICB1bnRpbCBjaGlwIHNlbGVjdCBpcyBlbmFibGVkLgorICAgICAgICAgICAgICBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCB2YWx1ZSgwKSB3aWxsIGJlIHVzZWQuCisgIC0gd3Itc2V0dXA6IGNsb2NrIGN5Y2xlcyBmb3IgdGhlIGFjdGl2ZSBwZXJpb2Qgb2YgQ1Mgc2lnbmFsIGlzIGVuYWJsZWQgdW50aWwKKyAgICAgICAgICAgICAgd3JpdGUgc2lnbmFsIGlzIGVuYWJsZWQuCisgICAgICAgICAgICAgIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHZhbHVlKDApIHdpbGwgYmUgdXNlZC4KKyAgLSB3ci1hY3RpdmU6IGNsb2NrIGN5Y2xlcyBmb3IgdGhlIGFjdGl2ZSBwZXJpb2Qgb2YgQ1MgaXMgZW5hYmxlZC4KKyAgICAgICAgICAgICAgIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHZhbHVlKDEpIHdpbGwgYmUgdXNlZC4KKyAgLSB3ci1ob2xkOiBjbG9jayBjeWNsZXMgZm9yIHRoZSBhY3RpdmUgcGVyaW9kIG9mIENTIGlzIGRpc2FibGVkIHVudGlsIHdyaXRlCisgICAgICAgICAgICAgc2lnbmFsIGlzIGRpc2FibGVkLgorICAgICAgICAgICAgIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHZhbHVlKDApIHdpbGwgYmUgdXNlZC4KKworICBUaGUgcGFyYW1ldGVycyBhcmUgZGVmaW5lZCBhczoKKworICAgIFZDTEsoaW50ZXJuYWwpICBfX3w/Pz8/Pz98X19fX198Pz8/Pz8/fF9fX19ffD8/Pz8/P3xfX19fX3w/Pz8/Pz98X19fX198Pz8KKyAgICAgICAgICAgICAgICAgICAgICA6ICAgICAgICAgICAgOiAgICAgICAgICAgIDogICAgICAgICAgICA6ICAgICAgICAgICAgOgorICAgIEFkZHJlc3MgT3V0cHV0ICAtLTo8WFhYWFhYWFhYWFg6WFhYWFhYWFhYWFhYOlhYWFhYWFhYWFhYWDpYWFhYWFhYWFhYWFg6WFgKKyAgICAgICAgICAgICAgICAgICAgICB8IGNzLXNldHVwKzEgfCAgICAgICAgICAgIDogICAgICAgICAgICA6ICAgICAgICAgICAgOgorICAgICAgICAgICAgICAgICAgICAgIHw8LS0tLS0tLS0tLT58ICAgICAgICAgICAgOiAgICAgICAgICAgIDogICAgICAgICAgICA6CisgICAgQ2hpcCBTZWxlY3QgICAgID8/Pz8/Pz8/Pz8/Pz8/P3xfX19fX19fX19fX186X19fX19fX19fX19fOl9fX19fX19fX19fX3w/PworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdyLXNldHVwKzEgfCAgICAgICAgICAgIHwgd3ItaG9sZCsxICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHw8LS0tLS0tLS0tLT58ICAgICAgICAgICAgfDwtLS0tLS0tLS0tPnwKKyAgICBXcml0ZSBFbmFibGUgICAgPz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/P3xfX19fX19fX19fX198Pz8/Pz8/Pz8/Pz8/Pz8/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdyLWFjdGl2ZSsxfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfDwtLS0tLS0tLS0tPnwKKyAgICBWaWRlbyBEYXRhICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYPi0tCisKK1RoZSBkZXZpY2Ugbm9kZSBjYW4gY29udGFpbiAncG9ydCcgY2hpbGQgbm9kZXMgYWNjb3JkaW5nIHRvIHRoZSBiaW5kaW5ncyBkZWZpbmVkCitpbiBbMl0uIFRoZSBmb2xsb3dpbmcgYXJlIHByb3BlcnRpZXMgc3BlY2lmaWMgdG8gdGhvc2Ugbm9kZXM6CistIHJlZzogKHJlcXVpcmVkKSBwb3J0IGluZGV4LCBjYW4gYmU6CisJCTAgLSBmb3IgQ0FNSUYwIGlucHV0LAorCQkxIC0gZm9yIENBTUlGMSBpbnB1dCwKKwkJMiAtIGZvciBDQU1JRjIgaW5wdXQsCisJCTMgLSBmb3IgcGFyYWxsZWwgb3V0cHV0LAorCQk0IC0gZm9yIHdyaXRlLWJhY2sgaW50ZXJmYWNlCisKK1sxXTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvZGlzcGxheS10aW1pbmcudHh0CitbMl06IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS92aWRlby1pbnRlcmZhY2VzLnR4dAorCitFeGFtcGxlOgorCitTb0Mgc3BlY2lmaWMgRFQgZW50cnk6CisKKwlmaW1kQDExYzAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczQyMTAtZmltZCI7CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmNvbWJpbmVyPjsKKwkJcmVnID0gPDB4MTFjMDAwMDAgMHgyMDAwMD47CisJCWludGVycnVwdC1uYW1lcyA9ICJmaWZvIiwgInZzeW5jIiwgImxjZF9zeXMiOworCQlpbnRlcnJ1cHRzID0gPDExIDA+LCA8MTEgMT4sIDwxMSAyPjsKKwkJY2xvY2tzID0gPCZjbG9jayAxNDA+LCA8JmNsb2NrIDI4Mz47CisJCWNsb2NrLW5hbWVzID0gInNjbGtfZmltZCIsICJmaW1kIjsKKwkJcG93ZXItZG9tYWlucyA9IDwmcGRfbGNkMD47CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJfTsKKworQm9hcmQgc3BlY2lmaWMgRFQgZW50cnk6CisKKwlmaW1kQDExYzAwMDAwIHsKKwkJcGluY3RybC0wID0gPCZsY2RfY2xrICZsY2RfZGF0YTI0ICZwd20xX291dD47CisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXN0YXR1cyA9ICJva2F5IjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvZnNsLGRjdS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9mc2wsZGN1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmYxYmU5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvZnNsLGRjdS50eHQKQEAgLTAsMCArMSwyMiBAQAorRGV2aWNlIFRyZWUgYmluZGluZ3MgZm9yIEZyZWVzY2FsZSBEQ1UgRFJNIERyaXZlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOgkJU2hvdWxkIGJlIG9uZSBvZgorCSogImZzbCxsczEwMjFhLWRjdSIuCisJKiAiZnNsLHZmNjEwLWRjdSIuCisKKy0gcmVnOgkJCUFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciBkY3UuCistIGNsb2NrczoJCUZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc6IGhhbmRsZSB0byBkY3UgY2xvY2suCistIGNsb2NrLW5hbWVzOgkJRnJvbSBjb21tb24gY2xvY2sgYmluZGluZzogU2hhbGwgYmUgImRjdSIuCistIGJpZy1lbmRpYW4JCUJvb2xlYW4gcHJvcGVydHksIExTMTAyMUEgRENVIHJlZ2lzdGVycyBhcmUgYmlnLWVuZGlhbi4KKy0gZnNsLHBhbmVsOgkJVGhlIHBoYW5kbGUgdG8gcGFuZWwgbm9kZS4KKworRXhhbXBsZXM6CitkY3U6IGRjdUAyY2UwMDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxsczEwMjFhLWRjdSI7CisJcmVnID0gPDB4MCAweDJjZTAwMDAgMHgwIDB4MTAwMDA+OworCWNsb2NrcyA9IDwmcGxhdGZvcm1fY2xrIDA+OworCWNsb2NrLW5hbWVzID0gImRjdSI7CisJYmlnLWVuZGlhbjsKKwlmc2wscGFuZWwgPSA8JnBhbmVsPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9pbXgvZnNsLGlteC1mYi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9pbXgvZnNsLGlteC1mYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBkNWY4ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2lteC9mc2wsaW14LWZiLnR4dApAQCAtMCwwICsxLDU1IEBACitGcmVlc2NhbGUgaW14MjEgRnJhbWVidWZmZXIKKworVGhpcyBmcmFtZWJ1ZmZlciBkcml2ZXIgc3VwcG9ydHMgZGV2aWNlcyBpbXgxLCBpbXgyMSwgaW14MjUsIGFuZCBpbXgyNy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJmc2wsPGNoaXA+LWZiIiwgY2hpcCBzaG91bGQgYmUgaW14MSBvciBpbXgyMQorLSByZWcgOiBTaG91bGQgY29udGFpbiAxIHJlZ2lzdGVyIHJhbmdlcyhhZGRyZXNzIGFuZCBsZW5ndGgpCistIGludGVycnVwdHMgOiBPbmUgaW50ZXJydXB0IG9mIHRoZSBmYiBkZXYKKworUmVxdWlyZWQgbm9kZXM6CistIGRpc3BsYXk6IFBoYW5kbGUgdG8gYSBkaXNwbGF5IG5vZGUgYXMgZGVzY3JpYmVkIGluCisJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvZGlzcGxheS10aW1pbmcudHh0CisJQWRkaXRpb25hbCwgdGhlIGRpc3BsYXkgbm9kZSBoYXMgdG8gZGVmaW5lIHByb3BlcnRpZXM6CisJLSBiaXRzLXBlci1waXhlbDogQml0cyBwZXIgcGl4ZWwKKwktIGZzbCxwY3I6IExDREMgUENSIHZhbHVlCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGxjZC1zdXBwbHk6IFJlZ3VsYXRvciBmb3IgTENEIHN1cHBseSB2b2x0YWdlLgorLSBmc2wsZG1hY3I6IERNQSBDb250cm9sIFJlZ2lzdGVyIHZhbHVlLiBUaGlzIGlzIG9wdGlvbmFsLiBCeSBkZWZhdWx0LCB0aGUKKwlyZWdpc3RlciBpcyBub3QgbW9kaWZpZWQgYXMgcmVjb21tZW5kZWQgYnkgdGhlIGRhdGFzaGVldC4KKy0gZnNsLGxwY2NyOiBDb250cmFzdCBDb250cm9sIFJlZ2lzdGVyIHZhbHVlLiBUaGlzIHByb3BlcnR5IHByb3ZpZGVzIHRoZQorCWRlZmF1bHQgdmFsdWUgZm9yIHRoZSBjb250cmFzdCBjb250cm9sIHJlZ2lzdGVyLgorCUlmIHRoYXQgcHJvcGVydHkgaXMgb21pdHRlZCwgdGhlIHJlZ2lzdGVyIGlzIHplcm9lZC4KKy0gZnNsLGxzY3IxOiBMQ0RDIFNoYXJwIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgdmFsdWUuCisKK0V4YW1wbGU6CisKKwlpbXhmYjogZmJAMTAwMjEwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxpbXgyMS1mYiI7CisJCWludGVycnVwdHMgPSA8NjE+OworCQlyZWcgPSA8MHgxMDAyMTAwMCAweDEwMDA+OworCQlkaXNwbGF5ID0gPCZkaXNwbGF5MD47CisJfTsKKworCS4uLgorCisJZGlzcGxheTA6IGRpc3BsYXkwIHsKKwkJbW9kZWwgPSAiUHJpbWV2aWV3LVBEMDUwVkwxIjsKKwkJbmF0aXZlLW1vZGUgPSA8JnRpbWluZ19kaXNwMD47CisJCWJpdHMtcGVyLXBpeGVsID0gPDE2PjsKKwkJZnNsLHBjciA9IDwweGYwYzg4MDgwPjsJLyogbm9uLXN0YW5kYXJkIGJ1dCByZXF1aXJlZCAqLworCQlkaXNwbGF5LXRpbWluZ3MgeworCQkJdGltaW5nX2Rpc3AwOiA2NDB4NDgwIHsKKwkJCQloYWN0aXZlID0gPDY0MD47CisJCQkJdmFjdGl2ZSA9IDw0ODA+OworCQkJCWhiYWNrLXBvcmNoID0gPDExMj47CisJCQkJaGZyb250LXBvcmNoID0gPDM2PjsKKwkJCQloc3luYy1sZW4gPSA8MzI+OworCQkJCXZiYWNrLXBvcmNoID0gPDMzPjsKKwkJCQl2ZnJvbnQtcG9yY2ggPSA8MzM+OworCQkJCXZzeW5jLWxlbiA9IDwyPjsKKwkJCQljbG9jay1mcmVxdWVuY3kgPSA8MjUwMDAwMDA+OworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvaW14L2ZzbC1pbXgtZHJtLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2lteC9mc2wtaW14LWRybS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTcxYzNlZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2lteC9mc2wtaW14LWRybS50eHQKQEAgLTAsMCArMSwxMDUgQEAKK0ZyZWVzY2FsZSBpLk1YIERSTSBtYXN0ZXIgZGV2aWNlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZnJlZXNjYWxlIGkuTVggRFJNIG1hc3RlciBkZXZpY2UgaXMgYSB2aXJ0dWFsIGRldmljZSBuZWVkZWQgdG8gbGlzdCBhbGwKK0lQVSBvciBvdGhlciBkaXNwbGF5IGludGVyZmFjZSBub2RlcyB0aGF0IGNvbXByaXNlIHRoZSBncmFwaGljcyBzdWJzeXN0ZW0uCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAiZnNsLGlteC1kaXNwbGF5LXN1YnN5c3RlbSIKKy0gcG9ydHM6IFNob3VsZCBjb250YWluIGEgbGlzdCBvZiBwaGFuZGxlcyBwb2ludGluZyB0byBkaXNwbGF5IGludGVyZmFjZSBwb3J0cworICBvZiBJUFUgZGV2aWNlcworCitleGFtcGxlOgorCitkaXNwbGF5LXN1YnN5c3RlbSB7CisJY29tcGF0aWJsZSA9ICJmc2wsZGlzcGxheS1zdWJzeXN0ZW0iOworCXBvcnRzID0gPCZpcHVfZGkwPjsKK307CisKKworRnJlZXNjYWxlIGkuTVggSVBVdjMKKz09PT09PT09PT09PT09PT09PT09CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAiZnNsLDxjaGlwPi1pcHUiCistIHJlZzogc2hvdWxkIGJlIHJlZ2lzdGVyIGJhc2UgYW5kIGxlbmd0aCBhcyBkb2N1bWVudGVkIGluIHRoZQorICBkYXRhc2hlZXQKKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gc3luYyBpbnRlcnJ1cHQgYW5kIGVycm9yIGludGVycnVwdCwKKyAgaW4gdGhpcyBvcmRlci4KKy0gcmVzZXRzOiBwaGFuZGxlIHBvaW50aW5nIHRvIHRoZSBzeXN0ZW0gcmVzZXQgY29udHJvbGxlciBhbmQKKyAgICAgICAgICByZXNldCBsaW5lIGluZGV4LCBzZWUgcmVzZXQvZnNsLGlteC1zcmMudHh0IGZvciBkZXRhaWxzCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBwb3J0QFswLTNdOiBQb3J0IG5vZGVzIHdpdGggZW5kcG9pbnQgZGVmaW5pdGlvbnMgYXMgZGVmaW5lZCBpbgorICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvdmlkZW8taW50ZXJmYWNlcy50eHQuCisgIFBvcnRzIDAgYW5kIDEgc2hvdWxkIGNvcnJlc3BvbmQgdG8gQ1NJMCBhbmQgQ1NJMSwKKyAgcG9ydHMgMiBhbmQgMyBzaG91bGQgY29ycmVzcG9uZCB0byBESTAgYW5kIERJMSwgcmVzcGVjdGl2ZWx5LgorCitleGFtcGxlOgorCitpcHU6IGlwdUAxODAwMDAwMCB7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47CisJY29tcGF0aWJsZSA9ICJmc2wsaW14NTMtaXB1IjsKKwlyZWcgPSA8MHgxODAwMDAwMCAweDA4MDAwMDAwMD47CisJaW50ZXJydXB0cyA9IDwxMSAxMD47CisJcmVzZXRzID0gPCZzcmMgMj47CisKKwlpcHVfZGkwOiBwb3J0QDIgeworCQlyZWcgPSA8Mj47CisKKwkJaXB1X2RpMF9kaXNwMDogZW5kcG9pbnQgeworCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZkaXNwbGF5X2luPjsKKwkJfTsKKwl9OworfTsKKworUGFyYWxsZWwgZGlzcGxheSBzdXBwb3J0Cis9PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJmc2wsaW14LXBhcmFsbGVsLWRpc3BsYXkiCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBpbnRlcmZhY2VfcGl4X2ZtdDogSG93IHRoaXMgZGlzcGxheSBpcyBjb25uZWN0ZWQgdG8gdGhlCisgIGRpc3BsYXkgaW50ZXJmYWNlLiBDdXJyZW50bHkgc3VwcG9ydGVkIHR5cGVzOiAicmdiMjQiLCAicmdiNTY1IiwgImJncjY2NiIKKyAgYW5kICJsdmRzNjY2Ii4KKy0gZWRpZDogdmVyYmF0aW0gRURJRCBkYXRhIGJsb2NrIGRlc2NyaWJpbmcgYXR0YWNoZWQgZGlzcGxheS4KKy0gZGRjOiBwaGFuZGxlIGRlc2NyaWJpbmcgdGhlIGkyYyBidXMgaGFuZGxpbmcgdGhlIGRpc3BsYXkgZGF0YQorICBjaGFubmVsCistIHBvcnRAWzAtMV06IFBvcnQgbm9kZXMgd2l0aCBlbmRwb2ludCBkZWZpbml0aW9ucyBhcyBkZWZpbmVkIGluCisgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS92aWRlby1pbnRlcmZhY2VzLnR4dC4KKyAgUG9ydCAwIGlzIHRoZSBpbnB1dCBwb3J0IGNvbm5lY3RlZCB0byB0aGUgSVBVIGRpc3BsYXkgaW50ZXJmYWNlLAorICBwb3J0IDEgaXMgdGhlIG91dHB1dCBwb3J0IGNvbm5lY3RlZCB0byBhIHBhbmVsLgorCitleGFtcGxlOgorCitkaXNwbGF5QGRpMCB7CisJY29tcGF0aWJsZSA9ICJmc2wsaW14LXBhcmFsbGVsLWRpc3BsYXkiOworCWVkaWQgPSBbZWRpZC1kYXRhXTsKKwlpbnRlcmZhY2UtcGl4LWZtdCA9ICJyZ2IyNCI7CisKKwlwb3J0QDAgeworCQlyZWcgPSA8MD47CisKKwkJZGlzcGxheV9pbjogZW5kcG9pbnQgeworCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZpcHVfZGkwX2Rpc3AwPjsKKwkJfTsKKwl9OworCisJcG9ydEAxIHsKKwkJcmVnID0gPDE+OworCisJCWRpc3BsYXlfb3V0OiBlbmRwb2ludCB7CisJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JnBhbmVsX2luPjsKKwkJfTsKKwl9OworfTsKKworcGFuZWwgeworCS4uLgorCisJcG9ydCB7CisJCXBhbmVsX2luOiBlbmRwb2ludCB7CisJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmRpc3BsYXlfb3V0PjsKKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2lteC9oZG1pLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2lteC9oZG1pLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjc1NmNmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvaW14L2hkbWkudHh0CkBAIC0wLDAgKzEsNTggQEAKK0RldmljZS1UcmVlIGJpbmRpbmdzIGZvciBIRE1JIFRyYW5zbWl0dGVyCisKK0hETUkgVHJhbnNtaXR0ZXIKKz09PT09PT09PT09PT09PT0KKworVGhlIEhETUkgVHJhbnNtaXR0ZXIgaXMgYSBTeW5vcHN5cyBEZXNpZ25XYXJlIEhETUkgMS40IFRYIGNvbnRyb2xsZXIgSVAKK3dpdGggYWNjb21wYW55aW5nIFBIWSBJUC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtICNhZGRyZXNzLWNlbGxzIDogc2hvdWxkIGJlIDwxPgorIC0gI3NpemUtY2VsbHMgOiBzaG91bGQgYmUgPDA+CisgLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJmc2wsaW14NnEtaGRtaSIgb3IgImZzbCxpbXg2ZGwtaGRtaSIuCisgLSBncHIgOiBzaG91bGQgYmUgPCZncHI+LgorICAgVGhlIHBoYW5kbGUgcG9pbnRzIHRvIHRoZSBpb211eGMtZ3ByIHJlZ2lvbiBjb250YWluaW5nIHRoZSBIRE1JCisgICBtdWx0aXBsZXhlciBjb250cm9sIHJlZ2lzdGVyLgorIC0gY2xvY2tzLCBjbG9jay1uYW1lcyA6IHBoYW5kbGVzIHRvIHRoZSBIRE1JIGlhaGIgYW5kIGlzcmYgY2xvY2tzLCBhcyBkZXNjcmliZWQKKyAgIGluIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQgYW5kCisgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svaW14NnEtY2xvY2sudHh0LgorIC0gcG9ydEBbMC00XTogVXAgdG8gZm91ciBwb3J0IG5vZGVzIHdpdGggZW5kcG9pbnQgZGVmaW5pdGlvbnMgYXMgZGVmaW5lZCBpbgorICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3ZpZGVvLWludGVyZmFjZXMudHh0LAorICAgY29ycmVzcG9uZGluZyB0byB0aGUgZm91ciBpbnB1dHMgdG8gdGhlIEhETUkgbXVsdGlwbGV4ZXIuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgLSBkZGMtaTJjLWJ1czogcGhhbmRsZSBvZiBhbiBJMkMgY29udHJvbGxlciB1c2VkIGZvciBEREMgRURJRCBwcm9iaW5nCisKK2V4YW1wbGU6CisKKwlncHI6IGlvbXV4Yy1ncHJAMDIwZTAwMDAgeworCQkvKiAuLi4gKi8KKwl9OworCisgICAgICAgIGhkbWk6IGhkbWlAMDEyMDAwMCB7CisgICAgICAgICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSA8MT47CisgICAgICAgICAgICAgICAgI3NpemUtY2VsbHMgPSA8MD47CisgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJmc2wsaW14NnEtaGRtaSI7CisgICAgICAgICAgICAgICAgcmVnID0gPDB4MDAxMjAwMDAgMHg5MDAwPjsKKyAgICAgICAgICAgICAgICBpbnRlcnJ1cHRzID0gPDAgMTE1IDB4MDQ+OworICAgICAgICAgICAgICAgIGdwciA9IDwmZ3ByPjsKKyAgICAgICAgICAgICAgICBjbG9ja3MgPSA8JmNsa3MgMTIzPiwgPCZjbGtzIDEyND47CisgICAgICAgICAgICAgICAgY2xvY2stbmFtZXMgPSAiaWFoYiIsICJpc2ZyIjsKKyAgICAgICAgICAgICAgICBkZGMtaTJjLWJ1cyA9IDwmaTJjMj47CisKKyAgICAgICAgICAgICAgICBwb3J0QDAgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVnID0gPDA+OworCisgICAgICAgICAgICAgICAgICAgICAgICBoZG1pX211eF8wOiBlbmRwb2ludCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZS1lbmRwb2ludCA9IDwmaXB1MV9kaTBfaGRtaT47CisgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICBwb3J0QDEgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVnID0gPDE+OworCisgICAgICAgICAgICAgICAgICAgICAgICBoZG1pX211eF8xOiBlbmRwb2ludCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZS1lbmRwb2ludCA9IDwmaXB1MV9kaTFfaGRtaT47CisgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH07CisgICAgICAgIH07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9pbXgvbGRiLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2lteC9sZGIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhMTc1ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9pbXgvbGRiLnR4dApAQCAtMCwwICsxLDE0NiBAQAorRGV2aWNlLVRyZWUgYmluZGluZ3MgZm9yIExWRFMgRGlzcGxheSBCcmlkZ2UgKGxkYikKKworTFZEUyBEaXNwbGF5IEJyaWRnZQorPT09PT09PT09PT09PT09PT09PQorCitUaGUgTFZEUyBEaXNwbGF5IEJyaWRnZSBkZXZpY2UgdHJlZSBub2RlIGNvbnRhaW5zIHVwIHRvIHR3byBsdmRzLWNoYW5uZWwKK25vZGVzIGRlc2NyaWJpbmcgZWFjaCBvZiB0aGUgdHdvIExWRFMgZW5jb2RlciBjaGFubmVscyBvZiB0aGUgYnJpZGdlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gI2FkZHJlc3MtY2VsbHMgOiBzaG91bGQgYmUgPDE+CisgLSAjc2l6ZS1jZWxscyA6IHNob3VsZCBiZSA8MD4KKyAtIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImZzbCxpbXg1My1sZGIiIG9yICJmc2wsaW14NnEtbGRiIi4KKyAgICAgICAgICAgICAgICBCb3RoIExEQiB2ZXJzaW9ucyBhcmUgc2ltaWxhciwgYnV0IGkuTVg2IGhhcyBhbiBhZGRpdGlvbmFsCisgICAgICAgICAgICAgICAgbXVsdGlwbGV4ZXIgaW4gdGhlIGZyb250IHRvIHNlbGVjdCBhbnkgb2YgdGhlIGZvdXIgSVBVIGRpc3BsYXkKKyAgICAgICAgICAgICAgICBpbnRlcmZhY2VzIGFzIGlucHV0IGZvciBlYWNoIExWRFMgY2hhbm5lbC4KKyAtIGdwciA6IHNob3VsZCBiZSA8Jmdwcj4gb24gaS5NWDUzIGFuZCBpLk1YNnEuCisgICAgICAgICBUaGUgcGhhbmRsZSBwb2ludHMgdG8gdGhlIGlvbXV4Yy1ncHIgcmVnaW9uIGNvbnRhaW5pbmcgdGhlIExWRFMKKyAgICAgICAgIGNvbnRyb2wgcmVnaXN0ZXIuCistIGNsb2NrcywgY2xvY2stbmFtZXMgOiBwaGFuZGxlcyB0byB0aGUgTERCIGRpdmlkZXIgYW5kIHNlbGVjdG9yIGNsb2NrcyBhbmQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBkaXNwbGF5IGludGVyZmFjZSBzZWxlY3RvciBjbG9ja3MsIGFzIGRlc2NyaWJlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorICAgICAgICBUaGUgZm9sbG93aW5nIGNsb2NrcyBhcmUgZXhwZWN0ZWQgb24gaS5NWDUzOgorICAgICAgICAgICAgICAgICJkaTBfcGxsIiAtIExEQiBMVkRTIGNoYW5uZWwgMCBtdXgKKyAgICAgICAgICAgICAgICAiZGkxX3BsbCIgLSBMREIgTFZEUyBjaGFubmVsIDEgbXV4CisgICAgICAgICAgICAgICAgImRpMCIgLSBMREIgTFZEUyBjaGFubmVsIDAgZ2F0ZQorICAgICAgICAgICAgICAgICJkaTEiIC0gTERCIExWRFMgY2hhbm5lbCAxIGdhdGUKKyAgICAgICAgICAgICAgICAiZGkwX3NlbCIgLSBJUFUxIERJMCBtdXgKKyAgICAgICAgICAgICAgICAiZGkxX3NlbCIgLSBJUFUxIERJMSBtdXgKKyAgICAgICAgT24gaS5NWDZxIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBjbG9ja3MgYXJlIG5lZWRlZDoKKyAgICAgICAgICAgICAgICAiZGkyX3NlbCIgLSBJUFUyIERJMCBtdXgKKyAgICAgICAgICAgICAgICAiZGkzX3NlbCIgLSBJUFUyIERJMSBtdXgKKyAgICAgICAgVGhlIG5lZWRlZCBjbG9jayBudW1iZXJzIGZvciBlYWNoIGFyZSBkb2N1bWVudGVkIGluCisgICAgICAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbXg1LWNsb2NrLnR4dCwgYW5kIGluCisgICAgICAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbXg2cS1jbG9jay50eHQuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgLSBwaW5jdHJsLW5hbWVzIDogc2hvdWxkIGJlICJkZWZhdWx0IiBvbiBpLk1YNTMsIG5vdCB1c2VkIG9uIGkuTVg2cQorIC0gcGluY3RybC0wIDogYSBwaGFuZGxlIHBvaW50aW5nIHRvIExWRFMgcGluIHNldHRpbmdzIG9uIGkuTVg1MywKKyAgICAgICAgICAgICAgIG5vdCB1c2VkIG9uIGkuTVg2cQorIC0gZnNsLGR1YWwtY2hhbm5lbCA6IGJvb2xlYW4uIGlmIGl0IGV4aXN0cywgb25seSBMVkRTIGNoYW5uZWwgMCBzaG91bGQKKyAgIGJlIGNvbmZpZ3VyZWQgLSBvbmUgaW5wdXQgd2lsbCBiZSBkaXN0cmlidXRlZCBvbiBib3RoIG91dHB1dHMgaW4gZHVhbAorICAgY2hhbm5lbCBtb2RlCisKK0xWRFMgQ2hhbm5lbAorPT09PT09PT09PT09CisKK0VhY2ggTFZEUyBDaGFubmVsIGhhcyB0byBjb250YWluIGVpdGhlciBhbiBvZiBncmFwaCBsaW5rIHRvIGEgcGFuZWwgZGV2aWNlIG5vZGUKK29yIGEgZGlzcGxheS10aW1pbmdzIG5vZGUgdGhhdCBkZXNjcmliZXMgdGhlIHZpZGVvIHRpbWluZ3MgZm9yIHRoZSBjb25uZWN0ZWQKK0xWRFMgZGlzcGxheSBhcyB3ZWxsIGFzIHRoZSBmc2wsZGF0YS1tYXBwaW5nIGFuZCBmc2wsZGF0YS13aWR0aCBwcm9wZXJ0aWVzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gcmVnIDogc2hvdWxkIGJlIDwwPiBvciA8MT4KKyAtIHBvcnQ6IElucHV0IGFuZCBvdXRwdXQgcG9ydCBub2RlcyB3aXRoIGVuZHBvaW50IGRlZmluaXRpb25zIGFzIGRlZmluZWQgaW4KKyAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncmFwaC50eHQuCisgICBPbiBpLk1YNSwgdGhlIGludGVybmFsIHR3by1pbnB1dC1tdWx0aXBsZXhlciBpcyB1c2VkLiBEdWUgdG8gaGFyZHdhcmUKKyAgIGxpbWl0YXRpb25zLCBvbmx5IG9uZSBpbnB1dCBwb3J0IChwb3J0QFswLDFdKSBjYW4gYmUgdXNlZCBmb3IgZWFjaCBjaGFubmVsCisgICAobHZkcy1jaGFubmVsQFswLDFdLCByZXNwZWN0aXZlbHkpLgorICAgT24gaS5NWDYsIHRoZXJlIHNob3VsZCBiZSBmb3VyIGlucHV0IHBvcnRzIChwb3J0QFswLTNdKSB0aGF0IGNvcnJlc3BvbmQKKyAgIHRvIHRoZSBmb3VyIExWRFMgbXVsdGlwbGV4ZXIgaW5wdXRzLgorICAgQSBzaW5nbGUgb3V0cHV0IHBvcnQgKHBvcnRAMiBvbiBpLk1YNSwgcG9ydEA0IG9uIGkuTVg2KSBtdXN0IGJlIGNvbm5lY3RlZAorICAgdG8gYSBwYW5lbCBpbnB1dCBwb3J0LiBPcHRpb25hbGx5LCB0aGUgb3V0cHV0IHBvcnQgY2FuIGJlIGxlZnQgb3V0IGlmCisgICBkaXNwbGF5LXRpbWluZ3MgYXJlIHVzZWQgaW5zdGVhZC4KKworT3B0aW9uYWwgcHJvcGVydGllcyAocmVxdWlyZWQgaWYgZGlzcGxheS10aW1pbmdzIGFyZSB1c2VkKToKKyAtIGRpc3BsYXktdGltaW5ncyA6IEEgbm9kZSB0aGF0IGRlc2NyaWJlcyB0aGUgZGlzcGxheSB0aW1pbmdzIGFzIGRlZmluZWQgaW4KKyAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2Rpc3BsYXktdGltaW5nLnR4dC4KKyAtIGZzbCxkYXRhLW1hcHBpbmcgOiBzaG91bGQgYmUgInNwd2ciIG9yICJqZWlkYSIKKyAgICAgICAgICAgICAgICAgICAgICBUaGlzIGRlc2NyaWJlcyBob3cgdGhlIGNvbG9yIGJpdHMgYXJlIGxhaWQgb3V0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWQgTFZEUyBzaWduYWwuCisgLSBmc2wsZGF0YS13aWR0aCA6IHNob3VsZCBiZSA8MTg+IG9yIDwyND4KKworZXhhbXBsZToKKworZ3ByOiBpb211eGMtZ3ByQDUzZmE4MDAwIHsKKwkvKiAuLi4gKi8KK307CisKK2xkYjogbGRiQDUzZmE4MDA4IHsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwljb21wYXRpYmxlID0gImZzbCxpbXg1My1sZGIiOworCWdwciA9IDwmZ3ByPjsKKwljbG9ja3MgPSA8JmNsa3MgSU1YNV9DTEtfTERCX0RJMF9TRUw+LAorCQkgPCZjbGtzIElNWDVfQ0xLX0xEQl9ESTFfU0VMPiwKKwkJIDwmY2xrcyBJTVg1X0NMS19JUFVfREkwX1NFTD4sCisJCSA8JmNsa3MgSU1YNV9DTEtfSVBVX0RJMV9TRUw+LAorCQkgPCZjbGtzIElNWDVfQ0xLX0xEQl9ESTBfR0FURT4sCisJCSA8JmNsa3MgSU1YNV9DTEtfTERCX0RJMV9HQVRFPjsKKwljbG9jay1uYW1lcyA9ICJkaTBfcGxsIiwgImRpMV9wbGwiLAorCQkgICAgICAiZGkwX3NlbCIsICJkaTFfc2VsIiwKKwkJICAgICAgImRpMCIsICJkaTEiOworCisJLyogVXNpbmcgYW4gb2YtZ3JhcGggZW5kcG9pbnQgbGluayB0byBjb25uZWN0IHRoZSBwYW5lbCAqLworCWx2ZHMtY2hhbm5lbEAwIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQlyZWcgPSA8MD47CisKKwkJcG9ydEAwIHsKKwkJCXJlZyA9IDwwPjsKKworCQkJbHZkczBfaW46IGVuZHBvaW50IHsKKwkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmlwdV9kaTBfbHZkczA+OworCQkJfTsKKwkJfTsKKworCQlwb3J0QDIgeworCQkJcmVnID0gPDI+OworCisJCQlsdmRzMF9vdXQ6IGVuZHBvaW50IHsKKwkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JnBhbmVsX2luPjsKKwkJCX07CisJCX07CisJfTsKKworCS8qIFVzaW5nIGRpc3BsYXktdGltaW5ncyBhbmQgZnNsLGRhdGEtbWFwcGluZy93aWR0aCBpbnN0ZWFkICovCisJbHZkcy1jaGFubmVsQDEgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJCXJlZyA9IDwxPjsKKwkJZnNsLGRhdGEtbWFwcGluZyA9ICJzcHdnIjsKKwkJZnNsLGRhdGEtd2lkdGggPSA8MjQ+OworCisJCWRpc3BsYXktdGltaW5ncyB7CisJCQkvKiAuLi4gKi8KKwkJfTsKKworCQlwb3J0QDEgeworCQkJcmVnID0gPDE+OworCisJCQlsdmRzMV9pbjogZW5kcG9pbnQgeworCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmaXB1X2RpMV9sdmRzMT47CisJCQl9OworCQl9OworCX07Cit9OworCitwYW5lbDogbHZkcy1wYW5lbCB7CisJLyogLi4uICovCisKKwlwb3J0IHsKKwkJcGFuZWxfaW46IGVuZHBvaW50IHsKKwkJCXJlbW90ZS1lbmRwb2ludCA9IDwmbHZkczBfb3V0PjsKKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L21hcnZlbGwscHhhMnh4LWxjZGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvbWFydmVsbCxweGEyeHgtbGNkYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA5YzQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L21hcnZlbGwscHhhMnh4LWxjZGMudHh0CkBAIC0wLDAgKzEsMzQgQEAKK1BYQSBMQ0QgQ29udHJvbGxlcgorLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlIDogb25lIG9mIHRoZXNlCisJIm1hcnZlbGwscHhhMnh4LWxjZGMiLAorCSJtYXJ2ZWxsLHB4YTI3MC1sY2RjIiwKKwkibWFydmVsbCxweGEzMDAtbGNkYyIKKyAtIHJlZyA6IHNob3VsZCBjb250YWluIDEgcmVnaXN0ZXIgcmFuZ2UgKGFkZHJlc3MgYW5kIGxlbmd0aCkuCisgLSBpbnRlcnJ1cHRzIDogZnJhbWVidWZmZXIgY29udHJvbGxlciBpbnRlcnJ1cHQuCisgLSBjbG9ja3M6IHBoYW5kbGUgdG8gaW5wdXQgY2xvY2tzCisKK1JlcXVpcmVkIG5vZGVzOgorIC0gcG9ydDogY29ubmVjdGlvbiB0byB0aGUgTENEIHBhbmVsIChzZWUgdmlkZW8taW50ZXJmYWNlcy50eHQpCisJIFRoaXMgbm9kZSBtdXN0IGhhdmUgaXRzIHByb3BlcnRpZXMgYnVzLXdpZHRoIGFuZCByZW1vdGUtZW5kcG9pbnQgc2V0LgorCSBJZiB0aGUgcGFuZWwgaXMgbm90IGEgVEZUIGNvbG9yIHBhbmVsLCB0aGVuIGEgImxjZC10eXBlIiBwcm9wZXJ0eSBpbgorCSB0aGUgcGFuZWwgc2hvdWxkIHNwZWNpZnkgdGhlIHBhbmVsIHR5cGUuCisJIFRoaXMgcGFuZWwgbm9kZSBzaG91bGQgYmUgaW4gdGhlIGJvYXJkIGR0cy4KKworRXhhbXBsZToKKwlsY2QtY29udHJvbGxlckA0MDUwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAibWFydmVsbCxweGEyeHgtbGNkYyI7CisJCXJlZyA9IDwweDQ0MDAwMDAwIDB4MTAwMDA+OworCQlpbnRlcnJ1cHRzID0gPDE3PjsKKwkJY2xvY2tzID0gPCZjbGtzIENMS19MQ0Q+OworCQlzdGF0dXMgPSAib2theSI7CisKKwkJcG9ydCB7CisJCQlsY2RjX291dDogZW5kcG9pbnQgeworCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmcGFuZWxfaW4+OworCQkJCWJ1cy13aWR0aCA9IDwxNj47CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9taXBpLWRzaS1idXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvbWlwaS1kc2ktYnVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzNjMjcyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvbWlwaS1kc2ktYnVzLnR4dApAQCAtMCwwICsxLDk4IEBACitNSVBJIERTSSAoRGlzcGxheSBTZXJpYWwgSW50ZXJmYWNlKSBidXNzZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgTUlQSSBEaXNwbGF5IFNlcmlhbCBJbnRlcmZhY2Ugc3BlY2lmaWVzIGEgc2VyaWFsIGJ1cyBhbmQgYSBwcm90b2NvbCBmb3IKK2NvbW11bmljYXRpb24gYmV0d2VlbiBhIGhvc3QgYW5kIHVwIHRvIGZvdXIgcGVyaXBoZXJhbHMuIFRoaXMgZG9jdW1lbnQgd2lsbAorZGVmaW5lIHRoZSBzeW50YXggdXNlZCB0byByZXByZXNlbnQgYSBEU0kgYnVzIGluIGEgZGV2aWNlIHRyZWUuCisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIERTSSBidXMtc3BlY2lmaWMgcHJvcGVydGllcyBvbmx5IG9yIGRlZmluZXMgZXhpc3RpbmcKK3N0YW5kYXJkIHByb3BlcnRpZXMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIERTSSBidXMuCisKK0VhY2ggRFNJIGhvc3QgcHJvdmlkZXMgYSBEU0kgYnVzLiBUaGUgRFNJIGhvc3QgY29udHJvbGxlcidzIG5vZGUgY29udGFpbnMgYQorc2V0IG9mIHByb3BlcnRpZXMgdGhhdCBjaGFyYWN0ZXJpemUgdGhlIGJ1cy4gQ2hpbGQgbm9kZXMgZGVzY3JpYmUgaW5kaXZpZHVhbAorcGVyaXBoZXJhbHMgb24gdGhhdCBidXMuCisKK1RoZSBmb2xsb3dpbmcgYXNzdW1lcyB0aGF0IG9ubHkgYSBzaW5nbGUgcGVyaXBoZXJhbCBpcyBjb25uZWN0ZWQgdG8gYSBEU0kKK2hvc3QuIEV4cGVyaWVuY2Ugc2hvd3MgdGhhdCB0aGlzIGlzIHRydWUgZm9yIHRoZSBsYXJnZSBtYWpvcml0eSBvZiBzZXR1cHMuCisKK0RTSSBob3N0CistLS0tLS0tLQorCitJbiBhZGRpdGlvbiB0byB0aGUgc3RhbmRhcmQgcHJvcGVydGllcyBhbmQgdGhvc2UgZGVmaW5lZCBieSB0aGUgcGFyZW50IGJ1cyBvZgorYSBEU0kgaG9zdCwgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGFwcGx5IHRvIGEgbm9kZSByZXByZXNlbnRpbmcgYSBEU0kgaG9zdC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gI2FkZHJlc3MtY2VsbHM6IFRoZSBudW1iZXIgb2YgY2VsbHMgcmVxdWlyZWQgdG8gcmVwcmVzZW50IGFuIGFkZHJlc3Mgb24gdGhlCisgIGJ1cy4gRFNJIHBlcmlwaGVyYWxzIGFyZSBhZGRyZXNzZWQgdXNpbmcgYSAyLWJpdCB2aXJ0dWFsIGNoYW5uZWwgbnVtYmVyLCBzbworICBhIG1heGltdW0gb2YgNCBkZXZpY2VzIGNhbiBiZSBhZGRyZXNzZWQgb24gYSBzaW5nbGUgYnVzLiBIZW5jZSB0aGUgdmFsdWUgb2YKKyAgdGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUgMS4KKy0gI3NpemUtY2VsbHM6IFNob3VsZCBiZSAwLiBUaGVyZSBhcmUgY2FzZXMgd2hlcmUgaXQgbWFrZXMgc2Vuc2UgdG8gdXNlIGEKKyAgZGlmZmVyZW50IHZhbHVlIGhlcmUuIFNlZSBiZWxvdy4KKworRFNJIHBlcmlwaGVyYWwKKy0tLS0tLS0tLS0tLS0tCisKK1BlcmlwaGVyYWxzIGFyZSByZXByZXNlbnRlZCBhcyBjaGlsZCBub2RlcyBvZiB0aGUgRFNJIGhvc3QncyBub2RlLiBQcm9wZXJ0aWVzCitkZXNjcmliZWQgaGVyZSBhcHBseSB0byBhbGwgRFNJIHBlcmlwaGVyYWxzLCBidXQgaW5kaXZpZHVhbCBiaW5kaW5ncyBtYXkgd2FudAordG8gZGVmaW5lIGFkZGl0aW9uYWwsIGRldmljZS1zcGVjaWZpYyBwcm9wZXJ0aWVzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSByZWc6IFRoZSB2aXJ0dWFsIGNoYW5uZWwgbnVtYmVyIG9mIGEgRFNJIHBlcmlwaGVyYWwuIE11c3QgYmUgaW4gdGhlIHJhbmdlCisgIGZyb20gMCB0byAzLgorCitTb21lIERTSSBwZXJpcGhlcmFscyByZXNwb25kIHRvIG1vcmUgdGhhbiBhIHNpbmdsZSB2aXJ0dWFsIGNoYW5uZWwuIEluIHRoYXQKK2Nhc2UgdHdvIGFsdGVybmF0aXZlIHJlcHJlc2VudGF0aW9ucyBjYW4gYmUgY2hvc2VuOgorLSBUaGUgcmVnIHByb3BlcnR5IGNhbiB0YWtlIG11bHRpcGxlIGVudHJpZXMsIG9uZSBmb3IgZWFjaCB2aXJ0dWFsIGNoYW5uZWwKKyAgdGhhdCB0aGUgcGVyaXBoZXJhbCByZXNwb25kcyB0by4KKy0gSWYgdGhlIHZpcnR1YWwgY2hhbm5lbHMgdGhhdCBhIHBlcmlwaGVyYWwgcmVzcG9uZHMgdG8gYXJlIGNvbnNlY3V0aXZlLCB0aGUKKyAgI3NpemUtY2VsbHMgY2FuIGJlIHNldCB0byAxLiBUaGUgZmlyc3QgY2VsbCBvZiBlYWNoIGVudHJ5IGluIHRoZSByZWcKKyAgcHJvcGVydHkgaXMgdGhlIG51bWJlciBvZiB0aGUgZmlyc3QgdmlydHVhbCBjaGFubmVsIGFuZCB0aGUgc2Vjb25kIGNlbGwgaXMKKyAgdGhlIG51bWJlciBvZiBjb25zZWN1dGl2ZSB2aXJ0dWFsIGNoYW5uZWxzLgorCitFeGFtcGxlCistLS0tLS0tCisKKwlkc2ktaG9zdCB7CisJCS4uLgorCisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQkvKiBwZXJpcGhlcmFsIHJlc3BvbmRzIHRvIHZpcnR1YWwgY2hhbm5lbCAwICovCisJCXBlcmlwaGVyYWxAMCB7CisJCQljb21wYXRpYmxlID0gIi4uLiI7CisJCQlyZWcgPSA8MD47CisJCX07CisKKwkJLi4uCisJfTsKKworCWRzaS1ob3N0IHsKKwkJLi4uCisKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCisJCS8qIHBlcmlwaGVyYWwgcmVzcG9uZHMgdG8gdmlydHVhbCBjaGFubmVscyAwIGFuZCAyICovCisJCXBlcmlwaGVyYWxAMCB7CisJCQljb21wYXRpYmxlID0gIi4uLiI7CisJCQlyZWcgPSA8MCwgMj47CisJCX07CisKKwkJLi4uCisJfTsKKworCWRzaS1ob3N0IHsKKwkJLi4uCisKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCisJCS8qIHBlcmlwaGVyYWwgcmVzcG9uZHMgdG8gdmlydHVhbCBjaGFubmVscyAxLCAyIGFuZCAzICovCisJCXBlcmlwaGVyYWxAMSB7CisJCQljb21wYXRpYmxlID0gIi4uLiI7CisJCQlyZWcgPSA8MSAzPjsKKwkJfTsKKworCQkuLi4KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvbXNtL2RzaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9tc20vZHNpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzQ0YjllCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvbXNtL2RzaS50eHQKQEAgLTAsMCArMSwxNDkgQEAKK1F1YWxjb21tIFRlY2hub2xvZ2llcyBJbmMuIGFkcmVuby9zbmFwZHJhZ29uIERTSSBvdXRwdXQKKworRFNJIENvbnRyb2xsZXI6CitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOgorICAqICJxY29tLG1kc3MtZHNpLWN0cmwiCistIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVycyBvZiBjb250cm9sbGVyCistIHJlZy1uYW1lczogVGhlIG5hbWVzIG9mIHJlZ2lzdGVyIHJlZ2lvbnMuIFRoZSBmb2xsb3dpbmcgcmVnaW9ucyBhcmUgcmVxdWlyZWQ6CisgICogImRzaV9jdHJsIgorLSBxY29tLGRzaS1ob3N0LWluZGV4OiBUaGUgSUQgb2YgRFNJIGNvbnRyb2xsZXIgaGFyZHdhcmUgaW5zdGFuY2UuIFRoaXMgc2hvdWxkCisgIGJlIDAgb3IgMSwgc2luY2Ugd2UgaGF2ZSAyIERTSSBjb250cm9sbGVycyBhdCBtb3N0IGZvciBub3cuCistIGludGVycnVwdHM6IFRoZSBpbnRlcnJ1cHQgc2lnbmFsIGZyb20gdGhlIERTSSBibG9jay4KKy0gcG93ZXItZG9tYWluczogU2hvdWxkIGJlIDwmbW1jYyBNRFNTX0dEU0M+LgorLSBjbG9ja3M6IGRldmljZSBjbG9ja3MKKyAgU2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorLSBjbG9jay1uYW1lczogdGhlIGZvbGxvd2luZyBjbG9ja3MgYXJlIHJlcXVpcmVkOgorICAqICJidXNfY2xrIgorICAqICJieXRlX2NsayIKKyAgKiAiY29yZV9jbGsiCisgICogImNvcmVfbW1zc19jbGsiCisgICogImlmYWNlX2NsayIKKyAgKiAibWRwX2NvcmVfY2xrIgorICAqICJwaXhlbF9jbGsiCistIHZkZC1zdXBwbHk6IHBoYW5kbGUgdG8gdmRkIHJlZ3VsYXRvciBkZXZpY2Ugbm9kZQorLSB2ZGRpby1zdXBwbHk6IHBoYW5kbGUgdG8gdmRkLWlvIHJlZ3VsYXRvciBkZXZpY2Ugbm9kZQorLSB2ZGRhLXN1cHBseTogcGhhbmRsZSB0byB2ZGRhIHJlZ3VsYXRvciBkZXZpY2Ugbm9kZQorLSBxY29tLGRzaS1waHk6IHBoYW5kbGUgdG8gRFNJIFBIWSBkZXZpY2Ugbm9kZQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBwYW5lbEAwOiBOb2RlIG9mIHBhbmVsIGNvbm5lY3RlZCB0byB0aGlzIERTSSBjb250cm9sbGVyLgorICBTZWUgZmlsZXMgaW4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvIGZvciBlYWNoIHN1cHBvcnRlZAorICBwYW5lbC4KKy0gcWNvbSxkdWFsLWRzaS1tb2RlOiBCb29sZWFuIHZhbHVlIGluZGljYXRpbmcgaWYgdGhlIERTSSBjb250cm9sbGVyIGlzCisgIGRyaXZpbmcgYSBwYW5lbCB3aGljaCBuZWVkcyAyIERTSSBsaW5rcy4KKy0gcWNvbSxtYXN0ZXItZHNpOiBCb29sZWFuIHZhbHVlIGluZGljYXRpbmcgaWYgdGhlIERTSSBjb250cm9sbGVyIGlzIGRyaXZpbmcKKyAgdGhlIG1hc3RlciBsaW5rIG9mIHRoZSAyLURTSSBwYW5lbC4KKy0gcWNvbSxzeW5jLWR1YWwtZHNpOiBCb29sZWFuIHZhbHVlIGluZGljYXRpbmcgaWYgdGhlIERTSSBjb250cm9sbGVyIGlzCisgIGRyaXZpbmcgYSAyLURTSSBwYW5lbCB3aG9zZSAyIGxpbmtzIG5lZWQgcmVjZWl2ZSBjb21tYW5kIHNpbXVsdGFuZW91c2x5LgorLSBpbnRlcnJ1cHQtcGFyZW50OiBwaGFuZGxlIHRvIHRoZSBNRFAgYmxvY2sgaWYgdGhlIGludGVycnVwdCBzaWduYWwgaXMgcm91dGVkCisgIHRocm91Z2ggTURQIGJsb2NrCistIHBpbmN0cmwtbmFtZXM6IHRoZSBwaW4gY29udHJvbCBzdGF0ZSBuYW1lczsgc2hvdWxkIGNvbnRhaW4gImRlZmF1bHQiCistIHBpbmN0cmwtMDogdGhlIGRlZmF1bHQgcGluY3RybCBzdGF0ZSAoYWN0aXZlKQorLSBwaW5jdHJsLW46IHRoZSAic2xlZXAiIHBpbmN0cmwgc3RhdGUKKy0gcG9ydDogRFNJIGNvbnRyb2xsZXIgb3V0cHV0IHBvcnQuIFRoaXMgY29udGFpbnMgb25lIGVuZHBvaW50IHN1Ym5vZGUsIHdpdGggaXRzCisgIHJlbW90ZS1lbmRwb2ludCBzZXQgdG8gdGhlIHBoYW5kbGUgb2YgdGhlIGNvbm5lY3RlZCBwYW5lbCdzIGVuZHBvaW50LgorICBTZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dyYXBoLnR4dCBmb3IgZGV2aWNlIGdyYXBoIGluZm8uCisKK0RTSSBQSFk6CitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBDb3VsZCBiZSB0aGUgZm9sbG93aW5nCisgICogInFjb20sZHNpLXBoeS0yOG5tLWhwbSIKKyAgKiAicWNvbSxkc2ktcGh5LTI4bm0tbHAiCisgICogInFjb20sZHNpLXBoeS0yMG5tIgorLSByZWc6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlcnMgb2YgUExMLCBQSFkgYW5kIFBIWQorICByZWd1bGF0b3IKKy0gcmVnLW5hbWVzOiBUaGUgbmFtZXMgb2YgcmVnaXN0ZXIgcmVnaW9ucy4gVGhlIGZvbGxvd2luZyByZWdpb25zIGFyZSByZXF1aXJlZDoKKyAgKiAiZHNpX3BsbCIKKyAgKiAiZHNpX3BoeSIKKyAgKiAiZHNpX3BoeV9yZWd1bGF0b3IiCistIHFjb20sZHNpLXBoeS1pbmRleDogVGhlIElEIG9mIERTSSBQSFkgaGFyZHdhcmUgaW5zdGFuY2UuIFRoaXMgc2hvdWxkCisgIGJlIDAgb3IgMSwgc2luY2Ugd2UgaGF2ZSAyIERTSSBQSFlzIGF0IG1vc3QgZm9yIG5vdy4KKy0gcG93ZXItZG9tYWluczogU2hvdWxkIGJlIDwmbW1jYyBNRFNTX0dEU0M+LgorLSBjbG9ja3M6IGRldmljZSBjbG9ja3MKKyAgU2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorLSBjbG9jay1uYW1lczogdGhlIGZvbGxvd2luZyBjbG9ja3MgYXJlIHJlcXVpcmVkOgorICAqICJpZmFjZV9jbGsiCistIHZkZGlvLXN1cHBseTogcGhhbmRsZSB0byB2ZGQtaW8gcmVndWxhdG9yIGRldmljZSBub2RlCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHFjb20sZHNpLXBoeS1yZWd1bGF0b3ItbGRvLW1vZGU6IEJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyBpZiB0aGUgTERPIG1vZGUgUEhZCisgIHJlZ3VsYXRvciBpcyB3YW50ZWQuCisKK0V4YW1wbGU6CisJbWRzc19kc2kwOiBxY29tLG1kc3NfZHNpQGZkOTIyODAwIHsKKwkJY29tcGF0aWJsZSA9ICJxY29tLG1kc3MtZHNpLWN0cmwiOworCQlxY29tLGRzaS1ob3N0LWluZGV4ID0gPDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZtZHNzX21kcD47CisJCWludGVycnVwdHMgPSA8NCAwPjsKKwkJcmVnLW5hbWVzID0gImRzaV9jdHJsIjsKKwkJcmVnID0gPDB4ZmQ5MjI4MDAgMHgyMDA+OworCQlwb3dlci1kb21haW5zID0gPCZtbWNjIE1EU1NfR0RTQz47CisJCWNsb2NrLW5hbWVzID0KKwkJCSJidXNfY2xrIiwKKwkJCSJieXRlX2NsayIsCisJCQkiY29yZV9jbGsiLAorCQkJImNvcmVfbW1zc19jbGsiLAorCQkJImlmYWNlX2NsayIsCisJCQkibWRwX2NvcmVfY2xrIiwKKwkJCSJwaXhlbF9jbGsiOworCQljbG9ja3MgPQorCQkJPCZtbWNjIE1EU1NfQVhJX0NMSz4sCisJCQk8Jm1tY2MgTURTU19CWVRFMF9DTEs+LAorCQkJPCZtbWNjIE1EU1NfRVNDMF9DTEs+LAorCQkJPCZtbWNjIE1NU1NfTUlTQ19BSEJfQ0xLPiwKKwkJCTwmbW1jYyBNRFNTX0FIQl9DTEs+LAorCQkJPCZtbWNjIE1EU1NfTURQX0NMSz4sCisJCQk8Jm1tY2MgTURTU19QQ0xLMF9DTEs+OworCQl2ZGRhLXN1cHBseSA9IDwmcG1hODA4NF9sMj47CisJCXZkZC1zdXBwbHkgPSA8JnBtYTgwODRfbDIyPjsKKwkJdmRkaW8tc3VwcGx5ID0gPCZwbWE4MDg0X2wxMj47CisKKwkJcWNvbSxkc2ktcGh5ID0gPCZtZHNzX2RzaV9waHkwPjsKKworCQlxY29tLGR1YWwtZHNpLW1vZGU7CisJCXFjb20sbWFzdGVyLWRzaTsKKwkJcWNvbSxzeW5jLWR1YWwtZHNpOworCisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCIsICJzbGVlcCI7CisJCXBpbmN0cmwtMCA9IDwmbWRzc19kc2lfYWN0aXZlPjsKKwkJcGluY3RybC0xID0gPCZtZHNzX2RzaV9zdXNwZW5kPjsKKworCQlwYW5lbDogcGFuZWxAMCB7CisJCQljb21wYXRpYmxlID0gInNoYXJwLGxxMTAxcjFzeDAxIjsKKwkJCXJlZyA9IDwwPjsKKwkJCWxpbmsyID0gPCZzZWNvbmRhcnk+OworCisJCQlwb3dlci1zdXBwbHkgPSA8Li4uPjsKKwkJCWJhY2tsaWdodCA9IDwuLi4+OworCisJCQlwb3J0IHsKKwkJCQlwYW5lbF9pbjogZW5kcG9pbnQgeworCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmRzaTBfb3V0PjsKKwkJCQl9OworCQkJfTsKKwkJfTsKKworCQlwb3J0IHsKKwkJCWRzaTBfb3V0OiBlbmRwb2ludCB7CisJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZwYW5lbF9pbj47CisJCQl9OworCQl9OworCX07CisKKwltZHNzX2RzaV9waHkwOiBxY29tLG1kc3NfZHNpX3BoeUBmZDkyMmEwMCB7CisJCWNvbXBhdGlibGUgPSAicWNvbSxkc2ktcGh5LTI4bm0taHBtIjsKKwkJcWNvbSxkc2ktcGh5LWluZGV4ID0gPDA+OworCQlyZWctbmFtZXMgPQorCQkJImRzaV9wbGwiLAorCQkJImRzaV9waHkiLAorCQkJImRzaV9waHlfcmVndWxhdG9yIjsKKwkJcmVnID0gICA8MHhmZDkyMmEwMCAweGQ0PiwKKwkJCTwweGZkOTIyYjAwIDB4MmIwPiwKKwkJCTwweGZkOTIyZDgwIDB4N2I+OworCQljbG9jay1uYW1lcyA9ICJpZmFjZV9jbGsiOworCQljbG9ja3MgPSA8Jm1tY2MgTURTU19BSEJfQ0xLPjsKKwkJdmRkaW8tc3VwcGx5ID0gPCZwbWE4MDg0X2wxMj47CisKKwkJcWNvbSxkc2ktcGh5LXJlZ3VsYXRvci1sZG8tbW9kZTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvbXNtL2VkcC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9tc20vZWRwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTIwZjZlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvbXNtL2VkcC50eHQKQEAgLTAsMCArMSw2MCBAQAorUXVhbGNvbW0gVGVjaG5vbG9naWVzIEluYy4gYWRyZW5vL3NuYXBkcmFnb24gZURQIG91dHB1dAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOgorICAqICJxY29tLG1kc3MtZWRwIgorLSByZWc6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlcnMgb2YgY29udHJvbGxlciBhbmQgUExMCistIHJlZy1uYW1lczogVGhlIG5hbWVzIG9mIHJlZ2lzdGVyIHJlZ2lvbnMuIFRoZSBmb2xsb3dpbmcgcmVnaW9ucyBhcmUgcmVxdWlyZWQ6CisgICogImVkcCIKKyAgKiAicGxsX2Jhc2UiCistIGludGVycnVwdHM6IFRoZSBpbnRlcnJ1cHQgc2lnbmFsIGZyb20gdGhlIGVEUCBibG9jay4KKy0gcG93ZXItZG9tYWluczogU2hvdWxkIGJlIDwmbW1jYyBNRFNTX0dEU0M+LgorLSBjbG9ja3M6IGRldmljZSBjbG9ja3MKKyAgU2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorLSBjbG9jay1uYW1lczogdGhlIGZvbGxvd2luZyBjbG9ja3MgYXJlIHJlcXVpcmVkOgorICAqICJjb3JlX2NsayIKKyAgKiAiaWZhY2VfY2xrIgorICAqICJtZHBfY29yZV9jbGsiCisgICogInBpeGVsX2NsayIKKyAgKiAibGlua19jbGsiCistICNjbG9jay1jZWxsczogVGhlIHZhbHVlIHNob3VsZCBiZSAxLgorLSB2ZGRhLXN1cHBseTogcGhhbmRsZSB0byB2ZGRhIHJlZ3VsYXRvciBkZXZpY2Ugbm9kZQorLSBsdmwtdmRkLXN1cHBseTogcGhhbmRsZSB0byByZWd1bGF0b3IgZGV2aWNlIG5vZGUgd2hpY2ggaXMgdXNlZCB0byBzdXBwbHkgcG93ZXIKKyAgdG8gSFBEIHJlY2VpdmluZyBjaGlwCistIHBhbmVsLWVuLWdwaW9zOiBHUElPIHBpbiB0byBzdXBwbHkgcG93ZXIgdG8gcGFuZWwuCistIHBhbmVsLWhwZC1ncGlvczogR1BJTyBwaW4gdXNlZCBmb3IgZURQIGhwZC4KKworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBpbnRlcnJ1cHQtcGFyZW50OiBwaGFuZGxlIHRvIHRoZSBNRFAgYmxvY2sgaWYgdGhlIGludGVycnVwdCBzaWduYWwgaXMgcm91dGVkCisgIHRocm91Z2ggTURQIGJsb2NrCisKK0V4YW1wbGU6CisJbWRzc19lZHA6IHFjb20sbWRzc19lZHBAZmQ5MjM0MDAgeworCQkJY29tcGF0aWJsZSA9ICJxY29tLG1kc3MtZWRwIjsKKwkJCXJlZy1uYW1lcyA9CisJCQkJImVkcCIsCisJCQkJInBsbF9iYXNlIjsKKwkJCXJlZyA9CTwweGZkOTIzNDAwIDB4NzAwPiwKKwkJCQk8MHhmZDkyM2EwMCAweGQ0PjsKKwkJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1kc3NfbWRwPjsKKwkJCWludGVycnVwdHMgPSA8MTIgMD47CisJCQlwb3dlci1kb21haW5zID0gPCZtbWNjIE1EU1NfR0RTQz47CisJCQljbG9jay1uYW1lcyA9CisJCQkJImNvcmVfY2xrIiwKKwkJCQkicGl4ZWxfY2xrIiwKKwkJCQkiaWZhY2VfY2xrIiwKKwkJCQkibGlua19jbGsiLAorCQkJCSJtZHBfY29yZV9jbGsiOworCQkJY2xvY2tzID0KKwkJCQk8Jm1tY2MgTURTU19FRFBBVVhfQ0xLPiwKKwkJCQk8Jm1tY2MgTURTU19FRFBQSVhFTF9DTEs+LAorCQkJCTwmbW1jYyBNRFNTX0FIQl9DTEs+LAorCQkJCTwmbW1jYyBNRFNTX0VEUExJTktfQ0xLPiwKKwkJCQk8Jm1tY2MgTURTU19NRFBfQ0xLPjsKKwkJCSNjbG9jay1jZWxscyA9IDwxPjsKKwkJCXZkZGEtc3VwcGx5ID0gPCZwbWE4MDg0X2wxMj47CisJCQlsdmwtdmRkLXN1cHBseSA9IDwmbHZsX3ZyZWc+OworCQkJcGFuZWwtZW4tZ3Bpb3MgPSA8JnRsbW0gMTM3IDA+OworCQkJcGFuZWwtaHBkLWdwaW9zID0gPCZ0bG1tIDEwMyAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvbXNtL2dwdS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9tc20vZ3B1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2QwYTU4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvbXNtL2dwdS50eHQKQEAgLTAsMCArMSw1MiBAQAorUXVhbGNvbW0gYWRyZW5vL3NuYXBkcmFnb24gR1BVCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJxY29tLGFkcmVuby0zeHgiCistIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlcnMuCistIGludGVycnVwdHM6IFRoZSBpbnRlcnJ1cHQgc2lnbmFsIGZyb20gdGhlIGdwdS4KKy0gY2xvY2tzOiBkZXZpY2UgY2xvY2tzCisgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorLSBjbG9jay1uYW1lczogdGhlIGZvbGxvd2luZyBjbG9ja3MgYXJlIHJlcXVpcmVkOgorICAqICJjb3JlX2NsayIKKyAgKiAiaWZhY2VfY2xrIgorICAqICJtZW1faWZhY2VfY2xrIgorLSBxY29tLGNoaXBpZDogZ3B1IGNoaXAtaWQuICBOb3RlIHRoaXMgbWF5IGJlY29tZSBvcHRpb25hbCBmb3IgZnV0dXJlCisgIGRldmljZXMgaWYgd2UgY2FuIHJlbGlhYmx5IHJlYWQgdGhlIGNoaXBpZCBmcm9tIGh3CistIHFjb20sZ3B1LXB3cmxldmVsczogbGlzdCBvZiBvcGVyYXRpbmcgcG9pbnRzCisgIC0gY29tcGF0aWJsZTogInFjb20sZ3B1LXB3cmxldmVscyIKKyAgLSBmb3IgZWFjaCBxY29tLGdwdS1wd3JsZXZlbDoKKyAgICAtIHFjb20sZ3B1LWZyZXE6IHJlcXVlc3RlZCBncHUgY2xvY2sgc3BlZWQKKyAgICAtIE5PVEU6IGRvd25zdHJlYW0gYW5kcm9pZCBkcml2ZXIgZGVmaW5lcyBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgdG8KKyAgICAgIGNvbmZpZ3VyZSBtZW1vcnkgYmFuZHdpZHRoIHNjYWxpbmcgcGVyIE9QUC4KKworRXhhbXBsZToKKworLyB7CisJLi4uCisKKwlncHU6IHFjb20sa2dzbC0zZDBANDMwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicWNvbSxhZHJlbm8tM3h4IjsKKwkJcmVnID0gPDB4MDQzMDAwMDAgMHgyMDAwMD47CisJCXJlZy1uYW1lcyA9ICJrZ3NsXzNkMF9yZWdfbWVtb3J5IjsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDgwIDA+OworCQlpbnRlcnJ1cHQtbmFtZXMgPSAia2dzbF8zZDBfaXJxIjsKKwkJY2xvY2stbmFtZXMgPQorCQkgICAgImNvcmVfY2xrIiwKKwkJICAgICJpZmFjZV9jbGsiLAorCQkgICAgIm1lbV9pZmFjZV9jbGsiOworCQljbG9ja3MgPQorCQkgICAgPCZtbWNjIEdGWDNEX0NMSz4sCisJCSAgICA8Jm1tY2MgR0ZYM0RfQUhCX0NMSz4sCisJCSAgICA8Jm1tY2MgTU1TU19JTUVNX0FIQl9DTEs+OworCQlxY29tLGNoaXBpZCA9IDwweDAzMDIwMTAwPjsKKwkJcWNvbSxncHUtcHdybGV2ZWxzIHsKKwkJCWNvbXBhdGlibGUgPSAicWNvbSxncHUtcHdybGV2ZWxzIjsKKwkJCXFjb20sZ3B1LXB3cmxldmVsQDAgeworCQkJCXFjb20sZ3B1LWZyZXEgPSA8NDUwMDAwMDAwPjsKKwkJCX07CisJCQlxY29tLGdwdS1wd3JsZXZlbEAxIHsKKwkJCQlxY29tLGdwdS1mcmVxID0gPDI3MDAwMDAwPjsKKwkJCX07CisJCX07CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9tc20vaGRtaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9tc20vaGRtaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc5ZWUyZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L21zbS9oZG1pLnR4dApAQCAtMCwwICsxLDU4IEBACitRdWFsY29tbSBhZHJlbm8vc25hcGRyYWdvbiBoZG1pIG91dHB1dAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBvbmUgb2YgdGhlIGZvbGxvd2luZworICAgKiAicWNvbSxoZG1pLXR4LTg5OTYiCisgICAqICJxY29tLGhkbWktdHgtODk5NCIKKyAgICogInFjb20saGRtaS10eC04MDg0IgorICAgKiAicWNvbSxoZG1pLXR4LTg5NzQiCisgICAqICJxY29tLGhkbWktdHgtODY2MCIKKyAgICogInFjb20saGRtaS10eC04OTYwIgorLSByZWc6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBjb250cm9sbGVyJ3MgcmVnaXN0ZXJzCistIHJlZy1uYW1lczogImNvcmVfcGh5c2ljYWwiCistIGludGVycnVwdHM6IFRoZSBpbnRlcnJ1cHQgc2lnbmFsIGZyb20gdGhlIGhkbWkgYmxvY2suCistIGNsb2NrczogZGV2aWNlIGNsb2NrcworICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKy0gcWNvbSxoZG1pLXR4LWRkYy1jbGstZ3BpbzogZGRjIGNsayBwaW4KKy0gcWNvbSxoZG1pLXR4LWRkYy1kYXRhLWdwaW86IGRkYyBkYXRhIHBpbgorLSBxY29tLGhkbWktdHgtaHBkLWdwaW86IGhwZCBwaW4KKy0gY29yZS12ZGRhLXN1cHBseTogcGhhbmRsZSB0byBzdXBwbHkgcmVndWxhdG9yCistIGhkbWktbXV4LXN1cHBseTogcGhhbmRsZSB0byBtdXggcmVndWxhdG9yCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHFjb20saGRtaS10eC1tdXgtZW4tZ3BpbzogaGRtaSBtdXggZW5hYmxlIHBpbgorLSBxY29tLGhkbWktdHgtbXV4LXNlbC1ncGlvOiBoZG1pIG11eCBzZWxlY3QgcGluCistIHBvd2VyLWRvbWFpbnM6IHJlZmVyZW5jZSB0byB0aGUgcG93ZXIgZG9tYWluKHMpLCBpZiBhdmFpbGFibGUuCistIHBpbmN0cmwtbmFtZXM6IHRoZSBwaW4gY29udHJvbCBzdGF0ZSBuYW1lczsgc2hvdWxkIGNvbnRhaW4gImRlZmF1bHQiCistIHBpbmN0cmwtMDogdGhlIGRlZmF1bHQgcGluY3RybCBzdGF0ZSAoYWN0aXZlKQorLSBwaW5jdHJsLTE6IHRoZSAic2xlZXAiIHBpbmN0cmwgc3RhdGUKKworRXhhbXBsZToKKworLyB7CisJLi4uCisKKwloZG1pOiBxY29tLGhkbWktdHgtODk2MEA0YTAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJxY29tLGhkbWktdHgtODk2MCI7CisJCXJlZy1uYW1lcyA9ICJjb3JlX3BoeXNpY2FsIjsKKwkJcmVnID0gPDB4MDRhMDAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDc5IDA+OworCQlwb3dlci1kb21haW5zID0gPCZtbWNjIE1EU1NfR0RTQz47CisJCWNsb2NrLW5hbWVzID0KKwkJICAgICJjb3JlX2NsayIsCisJCSAgICAibWFzdGVyX2lmYWNlX2NsayIsCisJCSAgICAic2xhdmVfaWZhY2VfY2xrIjsKKwkJY2xvY2tzID0KKwkJICAgIDwmbW1jYyBIRE1JX0FQUF9DTEs+LAorCQkgICAgPCZtbWNjIEhETUlfTV9BSEJfQ0xLPiwKKwkJICAgIDwmbW1jYyBIRE1JX1NfQUhCX0NMSz47CisJCXFjb20saGRtaS10eC1kZGMtY2xrID0gPCZtc21ncGlvIDcwIEdQSU9fQUNUSVZFX0hJR0g+OworCQlxY29tLGhkbWktdHgtZGRjLWRhdGEgPSA8Jm1zbWdwaW8gNzEgR1BJT19BQ1RJVkVfSElHSD47CisJCXFjb20saGRtaS10eC1ocGQgPSA8Jm1zbWdwaW8gNzIgR1BJT19BQ1RJVkVfSElHSD47CisJCWNvcmUtdmRkYS1zdXBwbHkgPSA8JnBtODkyMV9oZG1pX212cz47CisJCWhkbWktbXV4LXN1cHBseSA9IDwmZXh0XzNwM3Y+OworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiLCAic2xlZXAiOworCQlwaW5jdHJsLTAgPSA8JmhwZF9hY3RpdmUgICZkZGNfYWN0aXZlICAmY2VjX2FjdGl2ZT47CisJCXBpbmN0cmwtMSA9IDwmaHBkX3N1c3BlbmQgJmRkY19zdXNwZW5kICZjZWNfc3VzcGVuZD47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9tc20vbWRwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L21zbS9tZHAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4MzNlZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9tc20vbWRwLnR4dApAQCAtMCwwICsxLDQ5IEBACitRdWFsY29tbSBhZHJlbm8vc25hcGRyYWdvbiBkaXNwbGF5IGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZToKKyAgKiAicWNvbSxtZHAiIC0gbWRwNAorLSByZWc6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBjb250cm9sbGVyJ3MgcmVnaXN0ZXJzLgorLSBpbnRlcnJ1cHRzOiBUaGUgaW50ZXJydXB0IHNpZ25hbCBmcm9tIHRoZSBkaXNwbGF5IGNvbnRyb2xsZXIuCistIGNvbm5lY3RvcnM6IGFycmF5IG9mIHBoYW5kbGVzIGZvciBvdXRwdXQgZGV2aWNlKHMpCistIGNsb2NrczogZGV2aWNlIGNsb2NrcworICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKy0gY2xvY2stbmFtZXM6IHRoZSBmb2xsb3dpbmcgY2xvY2tzIGFyZSByZXF1aXJlZDoKKyAgKiAiY29yZV9jbGsiCisgICogImlmYWNlX2NsayIKKyAgKiAic3JjX2NsayIKKyAgKiAiaGRtaV9jbGsiCisgICogIm1wZF9jbGsiCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGdwdXM6IHBoYW5kbGUgZm9yIGdwdSBkZXZpY2UKKy0gY2xvY2stbmFtZXM6IHRoZSBmb2xsb3dpbmcgY2xvY2tzIGFyZSBvcHRpb25hbDoKKyAgKiAibHV0X2NsayIKKworRXhhbXBsZToKKworLyB7CisJLi4uCisKKwltZHA6IHFjb20sbWRwQDUxMDAwMDAgeworCQljb21wYXRpYmxlID0gInFjb20sbWRwIjsKKwkJcmVnID0gPDB4MDUxMDAwMDAgMHhmMDAwMD47CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSA3NSAwPjsKKwkJY29ubmVjdG9ycyA9IDwmaGRtaT47CisJCWdwdXMgPSA8JmdwdT47CisJCWNsb2NrLW5hbWVzID0KKwkJICAgICJjb3JlX2NsayIsCisJCSAgICAiaWZhY2VfY2xrIiwKKwkJICAgICJsdXRfY2xrIiwKKwkJICAgICJzcmNfY2xrIiwKKwkJICAgICJoZG1pX2NsayIsCisJCSAgICAibWRwX2NsayI7CisJCWNsb2NrcyA9CisJCSAgICA8Jm1tY2MgTURQX1NSQz4sCisJCSAgICA8Jm1tY2MgTURQX0FIQl9DTEs+LAorCQkgICAgPCZtbWNjIE1EUF9MVVRfQ0xLPiwKKwkJICAgIDwmbW1jYyBUVl9TUkM+LAorCQkgICAgPCZtbWNjIEhETUlfVFZfQ0xLPiwKKwkJICAgIDwmbW1jYyBNRFBfVFZfQ0xLPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L214c2ZiLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L214c2ZiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmVjNTE3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvbXhzZmIudHh0CkBAIC0wLDAgKzEsNDkgQEAKKyogRnJlZXNjYWxlIE1YUyBMQ0QgSW50ZXJmYWNlIChMQ0RJRikKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJmc2wsPGNoaXA+LWxjZGlmIi4gIFN1cHBvcnRlZCBjaGlwcyBpbmNsdWRlCisgIGlteDIzIGFuZCBpbXgyOC4KKy0gcmVnOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgbGNkaWYKKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gbGNkaWYgaW50ZXJydXB0cworLSBkaXNwbGF5IDogcGhhbmRsZSB0byBkaXNwbGF5IG5vZGUgKHNlZSBiZWxvdyBmb3IgZGV0YWlscykKKworKiBkaXNwbGF5IG5vZGUKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gYml0cy1wZXItcGl4ZWwgOiA8MTY+IGZvciBSR0I1NjUsIDwzMj4gZm9yIFJHQjg4OC82NjYuCistIGJ1cy13aWR0aCA6IG51bWJlciBvZiBkYXRhIGxpbmVzLiAgQ291bGQgYmUgPDg+LCA8MTY+LCA8MTg+IG9yIDwyND4uCisKK1JlcXVpcmVkIHN1Yi1ub2RlOgorLSBkaXNwbGF5LXRpbWluZ3MgOiBSZWZlciB0byBiaW5kaW5nIGRvYyBkaXNwbGF5LXRpbWluZy50eHQgZm9yIGRldGFpbHMuCisKK0V4YW1wbGVzOgorCitsY2RpZkA4MDAzMDAwMCB7CisJY29tcGF0aWJsZSA9ICJmc2wsaW14MjgtbGNkaWYiOworCXJlZyA9IDwweDgwMDMwMDAwIDIwMDA+OworCWludGVycnVwdHMgPSA8MzggODY+OworCisJZGlzcGxheTogZGlzcGxheSB7CisJCWJpdHMtcGVyLXBpeGVsID0gPDMyPjsKKwkJYnVzLXdpZHRoID0gPDI0PjsKKworCQlkaXNwbGF5LXRpbWluZ3MgeworCQkJbmF0aXZlLW1vZGUgPSA8JnRpbWluZzA+OworCQkJdGltaW5nMDogdGltaW5nMCB7CisJCQkJY2xvY2stZnJlcXVlbmN5ID0gPDMzNTAwMDAwPjsKKwkJCQloYWN0aXZlID0gPDgwMD47CisJCQkJdmFjdGl2ZSA9IDw0ODA+OworCQkJCWhmcm9udC1wb3JjaCA9IDwxNjQ+OworCQkJCWhiYWNrLXBvcmNoID0gPDg5PjsKKwkJCQloc3luYy1sZW4gPSA8MTA+OworCQkJCXZiYWNrLXBvcmNoID0gPDIzPjsKKwkJCQl2ZnJvbnQtcG9yY2ggPSA8MTA+OworCQkJCXZzeW5jLWxlbiA9IDwxMD47CisJCQkJaHN5bmMtYWN0aXZlID0gPDA+OworCQkJCXZzeW5jLWFjdGl2ZSA9IDwwPjsKKwkJCQlkZS1hY3RpdmUgPSA8MT47CisJCQkJcGl4ZWxjbGstYWN0aXZlID0gPDA+OworCQkJfTsKKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2FtcGlyZSxhbTgwMDQ4MHIzdG1xd2ExaC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9hbXBpcmUsYW04MDA0ODByM3RtcXdhMWgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzZTJjYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9hbXBpcmUsYW04MDA0ODByM3RtcXdhMWgudHh0CkBAIC0wLDAgKzEsNyBAQAorQW1waXJlIEFNLTgwMDQ4MFIzVE1RVy1BMUggNy4wIiBXVkdBIFRGVCBMQ0QgcGFuZWwKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJhbXBpcmUsYW04MDA0ODByM3RtcXdhMWgiCisKK1RoaXMgYmluZGluZyBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHNpbXBsZS1wYW5lbCBiaW5kaW5nLCB3aGljaCBpcyBzcGVjaWZpZWQKK2luIHNpbXBsZS1wYW5lbC50eHQgaW4gdGhpcyBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9hdW8sYjA4MHVhbjAxLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2F1byxiMDgwdWFuMDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZTBlMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9hdW8sYjA4MHVhbjAxLnR4dApAQCAtMCwwICsxLDcgQEAKK0FVIE9wdHJvbmljcyBDb3Jwb3JhdGlvbiA4LjAiIFdVWEdBIFRGVCBMQ0QgcGFuZWwKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJhdW8sYjEwMWVhbjAxIgorCitUaGlzIGJpbmRpbmcgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBzaW1wbGUtcGFuZWwgYmluZGluZywgd2hpY2ggaXMgc3BlY2lmaWVkCitpbiBzaW1wbGUtcGFuZWwudHh0IGluIHRoaXMgZGlyZWN0b3J5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvYXVvLGIxMDFhdzAzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2F1byxiMTAxYXcwMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJlMDg4YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2F1byxiMTAxYXcwMy50eHQKQEAgLTAsMCArMSw3IEBACitBVSBPcHRyb25pY3MgQ29ycG9yYXRpb24gMTAuMSIgV1NWR0EgVEZUIExDRCBwYW5lbAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImF1byxiMTAxYXcwMyIKKworVGhpcyBiaW5kaW5nIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgc2ltcGxlLXBhbmVsIGJpbmRpbmcsIHdoaWNoIGlzIHNwZWNpZmllZAoraW4gc2ltcGxlLXBhbmVsLnR4dCBpbiB0aGlzIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2F1byxiMTAxZWFuMDEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvYXVvLGIxMDFlYW4wMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU5MGIwNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2F1byxiMTAxZWFuMDEudHh0CkBAIC0wLDAgKzEsNyBAQAorQVUgT3B0cm9uaWNzIENvcnBvcmF0aW9uIDEwLjEiIFdTVkdBIFRGVCBMQ0QgcGFuZWwKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJhdW8sYjEwMWVhbjAxIgorCitUaGlzIGJpbmRpbmcgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBzaW1wbGUtcGFuZWwgYmluZGluZywgd2hpY2ggaXMgc3BlY2lmaWVkCitpbiBzaW1wbGUtcGFuZWwudHh0IGluIHRoaXMgZGlyZWN0b3J5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvYXVvLGIxMDF4dG4wMS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9hdW8sYjEwMXh0bjAxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODlkNTExCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvYXVvLGIxMDF4dG4wMS50eHQKQEAgLTAsMCArMSw3IEBACitBVSBPcHRyb25pY3MgQ29ycG9yYXRpb24gMTAuMSIgV1hHQSBURlQgTENEIHBhbmVsCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiYXVvLGIxMDF4dG4wMSIKKworVGhpcyBiaW5kaW5nIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgc2ltcGxlLXBhbmVsIGJpbmRpbmcsIHdoaWNoIGlzIHNwZWNpZmllZAoraW4gc2ltcGxlLXBhbmVsLnR4dCBpbiB0aGlzIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2F1byxiMTE2eHcwMy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9hdW8sYjExNnh3MDMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5MGQwYTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9hdW8sYjExNnh3MDMudHh0CkBAIC0wLDAgKzEsNyBAQAorQVUgT3B0cm9uaWNzIENvcnBvcmF0aW9uIDExLjYiIEhEICgxMzY2eDc2OCkgY29sb3IgVEZULUxDRCBwYW5lbAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImF1byxiMTE2eHcwMyIKKworVGhpcyBiaW5kaW5nIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgc2ltcGxlLXBhbmVsIGJpbmRpbmcsIHdoaWNoIGlzIHNwZWNpZmllZAoraW4gc2ltcGxlLXBhbmVsLnR4dCBpbiB0aGlzIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2F1byxiMTMzaHRuMDEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvYXVvLGIxMzNodG4wMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAyMjI2YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2F1byxiMTMzaHRuMDEudHh0CkBAIC0wLDAgKzEsNyBAQAorQVUgT3B0cm9uaWNzIENvcnBvcmF0aW9uIDEzLjMiIEZIRCAoMTkyMHgxMDgwKSBjb2xvciBURlQtTENEIHBhbmVsCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiYXVvLGIxMzNodG4wMSIKKworVGhpcyBiaW5kaW5nIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgc2ltcGxlLXBhbmVsIGJpbmRpbmcsIHdoaWNoIGlzIHNwZWNpZmllZAoraW4gc2ltcGxlLXBhbmVsLnR4dCBpbiB0aGlzIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2F1byxiMTMzeHRuMDEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvYXVvLGIxMzN4dG4wMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ0M2I3YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2F1byxiMTMzeHRuMDEudHh0CkBAIC0wLDAgKzEsNyBAQAorQVUgT3B0cm9uaWNzIENvcnBvcmF0aW9uIDEzLjMiIFdYR0EgKDEzNjZ4NzY4KSBURlQgTENEIHBhbmVsCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiYXVvLGIxMzN4dG4wMSIKKworVGhpcyBiaW5kaW5nIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgc2ltcGxlLXBhbmVsIGJpbmRpbmcsIHdoaWNoIGlzIHNwZWNpZmllZAoraW4gc2ltcGxlLXBhbmVsLnR4dCBpbiB0aGlzIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2F2aWMsdG0wNzBkZGgwMy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9hdmljLHRtMDcwZGRoMDMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2ZjJmM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9hdmljLHRtMDcwZGRoMDMudHh0CkBAIC0wLDAgKzEsNyBAQAorU2hhbmdoYWkgQVZJQyBPcHRvZWxlY3Ryb25pY3MgNyIgMTAyNHg2MDAgY29sb3IgVEZULUxDRCBwYW5lbAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImF2aWMsdG0wNzBkZGgwMyIKKworVGhpcyBiaW5kaW5nIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgc2ltcGxlLXBhbmVsIGJpbmRpbmcsIHdoaWNoIGlzIHNwZWNpZmllZAoraW4gc2ltcGxlLXBhbmVsLnR4dCBpbiB0aGlzIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2NodW5naHdhLGNsYWExMDF3YTAxYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9jaHVuZ2h3YSxjbGFhMTAxd2EwMWEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyNDYxNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9jaHVuZ2h3YSxjbGFhMTAxd2EwMWEudHh0CkBAIC0wLDAgKzEsNyBAQAorQ2h1bmdod2EgUGljdHVyZSBUdWJlcyBMdGQuIDEwLjEiIFdYR0EgVEZUIExDRCBwYW5lbAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImNodW5naHdhLGNsYWExMDF3YTAxYSIKKworVGhpcyBiaW5kaW5nIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgc2ltcGxlLXBhbmVsIGJpbmRpbmcsIHdoaWNoIGlzIHNwZWNpZmllZAoraW4gc2ltcGxlLXBhbmVsLnR4dCBpbiB0aGlzIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2NodW5naHdhLGNsYWExMDF3YjAzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2NodW5naHdhLGNsYWExMDF3YjAzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWIyYzA1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvY2h1bmdod2EsY2xhYTEwMXdiMDMudHh0CkBAIC0wLDAgKzEsNyBAQAorQ2h1bmdod2EgUGljdHVyZSBUdWJlcyBMdGQuIDEwLjEiIFdYR0EgVEZUIExDRCBwYW5lbAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImNodW5naHdhLGNsYWExMDF3YjAzIgorCitUaGlzIGJpbmRpbmcgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBzaW1wbGUtcGFuZWwgYmluZGluZywgd2hpY2ggaXMgc3BlY2lmaWVkCitpbiBzaW1wbGUtcGFuZWwudHh0IGluIHRoaXMgZGlyZWN0b3J5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvZGlzcGxheS10aW1pbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvZGlzcGxheS10aW1pbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxZDRhMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9kaXNwbGF5LXRpbWluZy50eHQKQEAgLTAsMCArMSwxMTAgQEAKK2Rpc3BsYXktdGltaW5nIGJpbmRpbmdzCis9PT09PT09PT09PT09PT09PT09PT09PQorCitkaXNwbGF5LXRpbWluZ3Mgbm9kZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworcmVxdWlyZWQgcHJvcGVydGllczoKKyAtIG5vbmUKKworb3B0aW9uYWwgcHJvcGVydGllczoKKyAtIG5hdGl2ZS1tb2RlOiBUaGUgbmF0aXZlIG1vZGUgZm9yIHRoZSBkaXNwbGF5LCBpbiBjYXNlIG11bHRpcGxlIG1vZGVzIGFyZQorCQlwcm92aWRlZC4gV2hlbiBvbWl0dGVkLCBhc3N1bWUgdGhlIGZpcnN0IG5vZGUgaXMgdGhlIG5hdGl2ZS4KKwordGltaW5nIHN1Ym5vZGUKKy0tLS0tLS0tLS0tLS0tCisKK3JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBoYWN0aXZlLCB2YWN0aXZlOiBkaXNwbGF5IHJlc29sdXRpb24KKyAtIGhmcm9udC1wb3JjaCwgaGJhY2stcG9yY2gsIGhzeW5jLWxlbjogaG9yaXpvbnRhbCBkaXNwbGF5IHRpbWluZyBwYXJhbWV0ZXJzCisgICBpbiBwaXhlbHMKKyAgIHZmcm9udC1wb3JjaCwgdmJhY2stcG9yY2gsIHZzeW5jLWxlbjogdmVydGljYWwgZGlzcGxheSB0aW1pbmcgcGFyYW1ldGVycyBpbgorICAgbGluZXMKKyAtIGNsb2NrLWZyZXF1ZW5jeTogZGlzcGxheSBjbG9jayBpbiBIegorCitvcHRpb25hbCBwcm9wZXJ0aWVzOgorIC0gaHN5bmMtYWN0aXZlOiBoc3luYyBwdWxzZSBpcyBhY3RpdmUgbG93L2hpZ2gvaWdub3JlZAorIC0gdnN5bmMtYWN0aXZlOiB2c3luYyBwdWxzZSBpcyBhY3RpdmUgbG93L2hpZ2gvaWdub3JlZAorIC0gZGUtYWN0aXZlOiBkYXRhLWVuYWJsZSBwdWxzZSBpcyBhY3RpdmUgbG93L2hpZ2gvaWdub3JlZAorIC0gcGl4ZWxjbGstYWN0aXZlOiB3aXRoCisJCQktIGFjdGl2ZSBoaWdoID0gZHJpdmUgcGl4ZWwgZGF0YSBvbiByaXNpbmcgZWRnZS8KKwkJCQkJc2FtcGxlIGRhdGEgb24gZmFsbGluZyBlZGdlCisJCQktIGFjdGl2ZSBsb3cgID0gZHJpdmUgcGl4ZWwgZGF0YSBvbiBmYWxsaW5nIGVkZ2UvCisJCQkJCXNhbXBsZSBkYXRhIG9uIHJpc2luZyBlZGdlCisJCQktIGlnbm9yZWQgICAgID0gaWdub3JlZAorIC0gaW50ZXJsYWNlZCAoYm9vbCk6IGJvb2xlYW4gdG8gZW5hYmxlIGludGVybGFjZWQgbW9kZQorIC0gZG91Ymxlc2NhbiAoYm9vbCk6IGJvb2xlYW4gdG8gZW5hYmxlIGRvdWJsZXNjYW4gbW9kZQorIC0gZG91YmxlY2xrIChib29sKTogYm9vbGVhbiB0byBlbmFibGUgZG91YmxlY2xvY2sgbW9kZQorCitBbGwgdGhlIG9wdGlvbmFsIHByb3BlcnRpZXMgdGhhdCBhcmUgbm90IGJvb2wgZm9sbG93IHRoZSBmb2xsb3dpbmcgbG9naWM6CisgICAgPDE+OiBoaWdoIGFjdGl2ZQorICAgIDwwPjogbG93IGFjdGl2ZQorICAgIG9taXR0ZWQ6IG5vdCB1c2VkIG9uIGhhcmR3YXJlCisKK1RoZXJlIGFyZSBkaWZmZXJlbnQgd2F5cyBvZiBkZXNjcmliaW5nIHRoZSBjYXBhYmlsaXRpZXMgb2YgYSBkaXNwbGF5LiBUaGUKK2RldmljZXRyZWUgcmVwcmVzZW50YXRpb24gY29ycmVzcG9uZHMgdG8gdGhlIG9uZSBjb21tb25seSBmb3VuZCBpbiBkYXRhc2hlZXRzCitmb3IgZGlzcGxheXMuIElmIGEgZGlzcGxheSBzdXBwb3J0cyBtdWx0aXBsZSBzaWduYWwgdGltaW5ncywgdGhlIG5hdGl2ZS1tb2RlCitjYW4gYmUgc3BlY2lmaWVkLgorCitUaGUgcGFyYW1ldGVycyBhcmUgZGVmaW5lZCBhczoKKworICArLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLSsKKyAgfCAgICAgICAgICB8ICAgICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICB8ICAgICAgICB8dmJhY2tfcG9yY2ggICAgICAgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICB8CisgIHwgICAgICAgICAgfCAgICAgICAg4oaTICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICB8CisgICstLS0tLS0tLS0tIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0tLS0tLS0tLSstLS0tLS0tKworICB8ICAgICAgICAgICMgICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIHwgICAgICAgfAorICB8ICAgICAgICAgICMgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgaGJhY2sgICAjICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIGhmcm9udCAgfCBoc3luYyB8CisgIHwgICBwb3JjaCAgIyAgICAgICAgfCAgICAgICBoYWN0aXZlICAgICAgICAgICAgICAjICBwb3JjaCAgIHwgIGxlbiAgfAorICB8PC0tLS0tLS0tPiM8LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+IzwtLS0tLS0tLT58PC0tLS0tPnwKKyAgfCAgICAgICAgICAjICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgfCAgICAgICB8CisgIHwgICAgICAgICAgIyAgICAgICAgfHZhY3RpdmUgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIHwgICAgICAgfAorICB8ICAgICAgICAgICMgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICAjICAgICAgICDihpMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICB8ICAgICAgIHwKKyAgKy0tLS0tLS0tLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLS0tLS0tLS0tKy0tLS0tLS0rCisgIHwgICAgICAgICAgfCAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICB8CisgIHwgICAgICAgICAgfCAgICAgICAgfHZmcm9udF9wb3JjaCAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgfAorICB8ICAgICAgICAgIHwgICAgICAgIOKGkyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgfAorICArLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLSsKKyAgfCAgICAgICAgICB8ICAgICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICB8ICAgICAgICB8dnN5bmNfbGVuICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICB8CisgIHwgICAgICAgICAgfCAgICAgICAg4oaTICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICB8CisgICstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tKworCitFeGFtcGxlOgorCisJZGlzcGxheS10aW1pbmdzIHsKKwkJbmF0aXZlLW1vZGUgPSA8JnRpbWluZzA+OworCQl0aW1pbmcwOiAxMDgwcDI0IHsKKwkJCS8qIDE5MjB4MTA4MHAyNCAqLworCQkJY2xvY2stZnJlcXVlbmN5ID0gPDUyMDAwMDAwPjsKKwkJCWhhY3RpdmUgPSA8MTkyMD47CisJCQl2YWN0aXZlID0gPDEwODA+OworCQkJaGZyb250LXBvcmNoID0gPDI1PjsKKwkJCWhiYWNrLXBvcmNoID0gPDI1PjsKKwkJCWhzeW5jLWxlbiA9IDwyNT47CisJCQl2YmFjay1wb3JjaCA9IDwyPjsKKwkJCXZmcm9udC1wb3JjaCA9IDwyPjsKKwkJCXZzeW5jLWxlbiA9IDwyPjsKKwkJCWhzeW5jLWFjdGl2ZSA9IDwxPjsKKwkJfTsKKwl9OworCitFdmVyeSByZXF1aXJlZCBwcm9wZXJ0eSBhbHNvIHN1cHBvcnRzIHRoZSB1c2Ugb2YgcmFuZ2VzLCBzbyB0aGUgY29tbW9ubHkgdXNlZAorZGF0YXNoZWV0IGRlc2NyaXB0aW9uIHdpdGggbWluaW11bSwgdHlwaWNhbCBhbmQgbWF4aW11bSB2YWx1ZXMgY2FuIGJlIHVzZWQuCisKK0V4YW1wbGU6CisKKwl0aW1pbmcxOiB0aW1pbmcgeworCQkvKiAxOTIweDEwODBwMjQgKi8KKwkJY2xvY2stZnJlcXVlbmN5ID0gPDE0ODUwMDAwMD47CisJCWhhY3RpdmUgPSA8MTkyMD47CisJCXZhY3RpdmUgPSA8MTA4MD47CisJCWhzeW5jLWxlbiA9IDwwIDQ0IDYwPjsKKwkJaGZyb250LXBvcmNoID0gPDgwIDg4IDk1PjsKKwkJaGJhY2stcG9yY2ggPSA8MTAwIDE0OCAxNjA+OworCQl2ZnJvbnQtcG9yY2ggPSA8MCA0IDY+OworCQl2YmFjay1wb3JjaCA9IDwwIDM2IDUwPjsKKwkJdnN5bmMtbGVuID0gPDAgNSA2PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvZWR0LGV0MDU3MDkwZGh1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2VkdCxldDA1NzA5MGRodS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDkwM2Q3YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2VkdCxldDA1NzA5MGRodS50eHQKQEAgLTAsMCArMSw3IEBACitFbWVyZ2luZyBEaXNwbGF5IFRlY2hub2xvZ3kgQ29ycC4gNS43IiBWR0EgVEZUIExDRCBwYW5lbAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImVkdCxldDA1NzA5MGRodSIKKworVGhpcyBiaW5kaW5nIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgc2ltcGxlLXBhbmVsIGJpbmRpbmcsIHdoaWNoIGlzIHNwZWNpZmllZAoraW4gc2ltcGxlLXBhbmVsLnR4dCBpbiB0aGlzIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2VkdCxldDA3MDA4MGRoNi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9lZHQsZXQwNzAwODBkaDYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwY2IzOGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9lZHQsZXQwNzAwODBkaDYudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0VtZXJnaW5nIERpc3BsYXkgVGVjaG5vbG9neSBDb3JwLiBFVDA3MDA4MERINiA3LjAiIFdWR0EgVEZUIExDRCBwYW5lbAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImVkdCxldDA3MDA4MGRoNiIKKworVGhpcyBwYW5lbCBpcyB0aGUgc2FtZSBhcyBFVE0wNzAwRzBESDYgZXhjZXB0IGZvciB0aGUgdG91Y2hzY3JlZW4uCitFVDA3MDA4MERINiBpcyB0aGUgbW9kZWwgd2l0aCByZXNpc3RpdmUgdG91Y2guCisKK1RoaXMgYmluZGluZyBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHNpbXBsZS1wYW5lbCBiaW5kaW5nLCB3aGljaCBpcyBzcGVjaWZpZWQKK2luIHNpbXBsZS1wYW5lbC50eHQgaW4gdGhpcyBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9lZHQsZXRtMDcwMGcwZGg2LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2VkdCxldG0wNzAwZzBkaDYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlNGIxODAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9lZHQsZXRtMDcwMGcwZGg2LnR4dApAQCAtMCwwICsxLDEwIEBACitFbWVyZ2luZyBEaXNwbGF5IFRlY2hub2xvZ3kgQ29ycC4gRVRNMDcwMEcwREg2IDcuMCIgV1ZHQSBURlQgTENEIHBhbmVsCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiZWR0LGV0bTA3MDBnMGRoNiIKKworVGhpcyBwYW5lbCBpcyB0aGUgc2FtZSBhcyBFVDA3MDA4MERINiBleGNlcHQgZm9yIHRoZSB0b3VjaHNjcmVlbi4KK0VUTTA3MDBHMERINiBpcyB0aGUgbW9kZWwgd2l0aCBjYXBhY2l0aXZlIG11bHRpdG91Y2guCisKK1RoaXMgYmluZGluZyBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHNpbXBsZS1wYW5lbCBiaW5kaW5nLCB3aGljaCBpcyBzcGVjaWZpZWQKK2luIHNpbXBsZS1wYW5lbC50eHQgaW4gdGhpcyBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9mb3hsaW5rLGZsNTAwd3ZyMDAtYTB0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2ZveGxpbmssZmw1MDB3dnIwMC1hMHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0N2Y5ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9mb3hsaW5rLGZsNTAwd3ZyMDAtYTB0LnR4dApAQCAtMCwwICsxLDcgQEAKK0ZveGxpbmsgR3JvdXAgNSIgV1ZHQSBURlQgTENEIHBhbmVsCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiZm94bGluayxmbDUwMHd2cjAwLWEwdCIKKworVGhpcyBiaW5kaW5nIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgc2ltcGxlLXBhbmVsIGJpbmRpbmcsIHdoaWNoIGlzIHNwZWNpZmllZAoraW4gc2ltcGxlLXBhbmVsLnR4dCBpbiB0aGlzIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2dpYW50cGx1cyxncGc0ODI3MzlxczUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvZ2lhbnRwbHVzLGdwZzQ4MjczOXFzNS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRiMGI2MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2dpYW50cGx1cyxncGc0ODI3MzlxczUudHh0CkBAIC0wLDAgKzEsNyBAQAorR2lhbnRQbHVzIEdQRzQ4MjczUVM1IDQuMyIgKDQ4MHgyNzIpIFdRVkdBIFRGVCBMQ0QgcGFuZWwKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJnaWFudHBsdXMsZ3BnNDgyNzNxczUiCisKK1RoaXMgYmluZGluZyBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHNpbXBsZS1wYW5lbCBiaW5kaW5nLCB3aGljaCBpcyBzcGVjaWZpZWQKK2luIHNpbXBsZS1wYW5lbC50eHQgaW4gdGhpcyBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9oYW5uc3Rhcixoc2QwNzBwd3cxLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2hhbm5zdGFyLGhzZDA3MHB3dzEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkYTFkNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9oYW5uc3Rhcixoc2QwNzBwd3cxLnR4dApAQCAtMCwwICsxLDcgQEAKK0hhbm5TdGFyIERpc3BsYXkgQ29ycC4gSFNEMDcwUFdXMSA3LjAiIFdYR0EgVEZUIExDRCBwYW5lbAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImhhbm5zdGFyLGhzZDA3MHB3dzEiCisKK1RoaXMgYmluZGluZyBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHNpbXBsZS1wYW5lbCBiaW5kaW5nLCB3aGljaCBpcyBzcGVjaWZpZWQKK2luIHNpbXBsZS1wYW5lbC50eHQgaW4gdGhpcyBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9oYW5uc3Rhcixoc2QxMDBweG4xLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2hhbm5zdGFyLGhzZDEwMHB4bjEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNzAzMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9oYW5uc3Rhcixoc2QxMDBweG4xLnR4dApAQCAtMCwwICsxLDcgQEAKK0hhbm5TdGFyIERpc3BsYXkgQ29ycC4gSFNEMTAwUFhOMSAxMC4xIiBYR0EgTFZEUyBwYW5lbAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImhhbm5zdGFyLGhzZDEwMHB4bjEiCisKK1RoaXMgYmluZGluZyBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHNpbXBsZS1wYW5lbCBiaW5kaW5nLCB3aGljaCBpcyBzcGVjaWZpZWQKK2luIHNpbXBsZS1wYW5lbC50eHQgaW4gdGhpcyBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9oaXQsdHgyM2QzOHZtMGNhYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9oaXQsdHgyM2QzOHZtMGNhYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRjYWFhZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2hpdCx0eDIzZDM4dm0wY2FhLnR4dApAQCAtMCwwICsxLDcgQEAKK0hpdGFjaGkgTHRkLiBDb3Jwb3JhdGlvbiA5IiBXVkdBICg4MDB4NDgwKSBURlQgTENEIHBhbmVsCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiaGl0LHR4MjNkMzh2bTBjYWEiCisKK1RoaXMgYmluZGluZyBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHNpbXBsZS1wYW5lbCBiaW5kaW5nLCB3aGljaCBpcyBzcGVjaWZpZWQKK2luIHNpbXBsZS1wYW5lbC50eHQgaW4gdGhpcyBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9pbm5vbHV4LGF0MDQzdG4yNC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9pbm5vbHV4LGF0MDQzdG4yNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEwNDIyNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2lubm9sdXgsYXQwNDN0bjI0LnR4dApAQCAtMCwwICsxLDcgQEAKK0lubm9sdXggQVQwNDNUTjI0IDQuMyIgV1FWR0EgVEZUIExDRCBwYW5lbAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImlubm9sdXgsYXQwNDN0bjI0IgorCitUaGlzIGJpbmRpbmcgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBzaW1wbGUtcGFuZWwgYmluZGluZywgd2hpY2ggaXMgc3BlY2lmaWVkCitpbiBzaW1wbGUtcGFuZWwudHh0IGluIHRoaXMgZGlyZWN0b3J5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvaW5ub2x1eCxnMTIxaTEtbDAxLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2lubm9sdXgsZzEyMWkxLWwwMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc0M2IwNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2lubm9sdXgsZzEyMWkxLWwwMS50eHQKQEAgLTAsMCArMSw3IEBACitJbm5vbHV4IENvcnBvcmF0aW9uIDEyLjEiIFdYR0EgKDEyODB4ODAwKSBURlQgTENEIHBhbmVsCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiaW5ub2x1eCxnMTIxaTEtbDAxIgorCitUaGlzIGJpbmRpbmcgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBzaW1wbGUtcGFuZWwgYmluZGluZywgd2hpY2ggaXMgc3BlY2lmaWVkCitpbiBzaW1wbGUtcGFuZWwudHh0IGluIHRoaXMgZGlyZWN0b3J5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvaW5ub2x1eCxuMTE2YmdlLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2lubm9sdXgsbjExNmJnZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgxYmI5MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2lubm9sdXgsbjExNmJnZS50eHQKQEAgLTAsMCArMSw3IEBACitJbm5vbHV4IENvcnBvcmF0aW9uIDExLjYiIFdYR0EgKDEzNjZ4NzY4KSBURlQgTENEIHBhbmVsCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiaW5ub2x1eCxuMTE2YmdlIgorCitUaGlzIGJpbmRpbmcgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBzaW1wbGUtcGFuZWwgYmluZGluZywgd2hpY2ggaXMgc3BlY2lmaWVkCitpbiBzaW1wbGUtcGFuZWwudHh0IGluIHRoaXMgZGlyZWN0b3J5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvaW5ub2x1eCxuMTU2YmdlLWwyMS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9pbm5vbHV4LG4xNTZiZ2UtbDIxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODI1ODQ0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvaW5ub2x1eCxuMTU2YmdlLWwyMS50eHQKQEAgLTAsMCArMSw3IEBACitJbm5vTHV4IDE1LjYiIFdYR0EgVEZUIExDRCBwYW5lbAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImlubm9sdXgsbjE1NmJnZS1sMjEiCisKK1RoaXMgYmluZGluZyBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHNpbXBsZS1wYW5lbCBiaW5kaW5nLCB3aGljaCBpcyBzcGVjaWZpZWQKK2luIHNpbXBsZS1wYW5lbC50eHQgaW4gdGhpcyBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9pbm5vbHV4LHpqMDcwbmEtMDFwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2lubm9sdXgsemowNzBuYS0wMXAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNGY4N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9pbm5vbHV4LHpqMDcwbmEtMDFwLnR4dApAQCAtMCwwICsxLDcgQEAKK0lubm9sdXggQ29ycG9yYXRpb24gNy4wIiBXU1ZHQSAoMTAyNHg2MDApIFRGVCBMQ0QgcGFuZWwKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJpbm5vbHV4LHpqMDcwbmEtMDFwIgorCitUaGlzIGJpbmRpbmcgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBzaW1wbGUtcGFuZWwgYmluZGluZywgd2hpY2ggaXMgc3BlY2lmaWVkCitpbiBzaW1wbGUtcGFuZWwudHh0IGluIHRoaXMgZGlyZWN0b3J5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvbGcsbGIwNzB3djgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvbGcsbGIwNzB3djgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3NTg4ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9sZyxsYjA3MHd2OC50eHQKQEAgLTAsMCArMSw3IEBACitMRyA3IiAoODAweDQ4MCBwaXhlbHMpIFRGVCBMQ0QgcGFuZWwKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJsZyxsYjA3MHd2OCIKKworVGhpcyBiaW5kaW5nIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgc2ltcGxlLXBhbmVsIGJpbmRpbmcsIHdoaWNoIGlzIHNwZWNpZmllZAoraW4gc2ltcGxlLXBhbmVsLnR4dCBpbiB0aGlzIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2xnLGxkMDcwd3gzLXNsMDEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvbGcsbGQwNzB3eDMtc2wwMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWU2NDljYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2xnLGxkMDcwd3gzLXNsMDEudHh0CkBAIC0wLDAgKzEsNyBAQAorTEcgQ29ycG9yYXRpb24gNyIgV1hHQSBURlQgTENEIHBhbmVsCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAibGcsbGQwNzB3eDMtc2wwMSIKKworVGhpcyBiaW5kaW5nIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgc2ltcGxlLXBhbmVsIGJpbmRpbmcsIHdoaWNoIGlzIHNwZWNpZmllZAoraW4gc2ltcGxlLXBhbmVsLnR4dCBpbiB0aGlzIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2xnLGxnNDU3My50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9sZyxsZzQ1NzMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNDQ0MWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9sZyxsZzQ1NzMudHh0CkBAIC0wLDAgKzEsMTkgQEAKK0xHIExHNDU3MyBURlQgTGlxdWlkIENyeXN0YWwgRGlzcGxheSB3aXRoIFNQSSBjb250cm9sIGJ1cworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6ICJsZyxsZzQ1NzMiCisgIC0gcmVnOiBhZGRyZXNzIG9mIHRoZSBwYW5lbCBvbiB0aGUgU1BJIGJ1cworCitUaGUgcGFuZWwgbXVzdCBvYmV5IHJ1bGVzIGZvciBTUEkgc2xhdmUgZGV2aWNlIHNwZWNpZmllZCBpbiBkb2N1bWVudCBbMV0uCisKK1sxXTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktYnVzLnR4dAorCitFeGFtcGxlOgorCisJbGNkX3BhbmVsOiBkaXNwbGF5QDAgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCWNvbXBhdGlibGUgPSAibGcsbGc0NTczIjsKKwkJc3BpLW1heC1mcmVxdWVuY3kgPSA8MTAwMDAwMDA+OworCQlyZWcgPSA8MD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2xnLGxoNTAwd3gxLXNkMDMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvbGcsbGg1MDB3eDEtc2QwMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA0ZmQyYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2xnLGxoNTAwd3gxLXNkMDMudHh0CkBAIC0wLDAgKzEsNyBAQAorTEcgQ29ycG9yYXRpb24gNSIgSEQgVEZUIExDRCBwYW5lbAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImxnLGxoNTAwd3gxLXNkMDMiCisKK1RoaXMgYmluZGluZyBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHNpbXBsZS1wYW5lbCBiaW5kaW5nLCB3aGljaCBpcyBzcGVjaWZpZWQKK2luIHNpbXBsZS1wYW5lbC50eHQgaW4gdGhpcyBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9sZyxscDEyOXFlLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2xnLGxwMTI5cWUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmMjYyZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9sZyxscDEyOXFlLnR4dApAQCAtMCwwICsxLDcgQEAKK0xHIDEyLjkiICgyNTYweDE3MDAgcGl4ZWxzKSBURlQgTENEIHBhbmVsCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAibGcsbHAxMjlxZSIKKworVGhpcyBiaW5kaW5nIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgc2ltcGxlLXBhbmVsIGJpbmRpbmcsIHdoaWNoIGlzIHNwZWNpZmllZAoraW4gc2ltcGxlLXBhbmVsLnR4dCBpbiB0aGlzIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2xncGhpbGlwcyxsYjAzNXEwMi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9sZ3BoaWxpcHMsbGIwMzVxMDIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMWU2NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9sZ3BoaWxpcHMsbGIwMzVxMDIudHh0CkBAIC0wLDAgKzEsMzMgQEAKK0xHLlBoaWxpcHMgTEIwMzVRMDIgUGFuZWwKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImxncGhpbGlwcyxsYjAzNXEwMiIKKy0gZW5hYmxlLWdwaW9zOiBwYW5lbCBlbmFibGUgZ3BpbworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBsYWJlbDogYSBzeW1ib2xpYyBuYW1lIGZvciB0aGUgcGFuZWwKKworUmVxdWlyZWQgbm9kZXM6CistIFZpZGVvIHBvcnQgZm9yIERQSSBpbnB1dAorCitFeGFtcGxlCistLS0tLS0tCisKK2xjZC1wYW5lbDogcGFuZWxAMCB7CisJY29tcGF0aWJsZSA9ICJsZ3BoaWxpcHMsbGIwMzVxMDIiOworCXJlZyA9IDwwPjsKKwlzcGktbWF4LWZyZXF1ZW5jeSA9IDwxMDAwMDA+OworCXNwaS1jcG9sOworCXNwaS1jcGhhOworCisJbGFiZWwgPSAibGNkIjsKKworCWVuYWJsZS1ncGlvcyA9IDwmZ3BpbzcgNyAwPjsKKworCXBvcnQgeworCQlsY2RfaW46IGVuZHBvaW50IHsKKwkJCXJlbW90ZS1lbmRwb2ludCA9IDwmZHBpX291dD47CisJCX07CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9uZWMsbmw0ODI3aGMxOS0wNWIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvbmVjLG5sNDgyN2hjMTktMDViLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTE5MTRkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvbmVjLG5sNDgyN2hjMTktMDViLnR4dApAQCAtMCwwICsxLDcgQEAKK05FQyBMQ0QgVGVjaG5vbG9naWVzLEx0ZC4gV1FWR0EgVEZUIExDRCBwYW5lbAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgIm5lYyxubDQ4MjdoYzE5LTA1YiIKKworVGhpcyBiaW5kaW5nIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgc2ltcGxlLXBhbmVsIGJpbmRpbmcsIHdoaWNoIGlzIHNwZWNpZmllZAoraW4gc2ltcGxlLXBhbmVsLnR4dCBpbiB0aGlzIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL29rYXlhLHJzODAwNDgwdC03eDBncC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9va2F5YSxyczgwMDQ4MHQtN3gwZ3AudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkZjhlMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9va2F5YSxyczgwMDQ4MHQtN3gwZ3AudHh0CkBAIC0wLDAgKzEsNyBAQAorT0tBWUEgRWxlY3RyaWMgQW1lcmljYSwgSW5jLiBSUzgwMDQ4MFQtN1gwR1AgNyIgV1ZHQSBMQ0QgcGFuZWwKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJva2F5YSxyczgwMDQ4MHQtN3gwZ3AiCisKK1RoaXMgYmluZGluZyBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHNpbXBsZS1wYW5lbCBiaW5kaW5nLCB3aGljaCBpcyBzcGVjaWZpZWQKK2luIHNpbXBsZS1wYW5lbC50eHQgaW4gdGhpcyBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9vcnR1c3RlY2gsY29tNDNoNG04NXVsYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9vcnR1c3RlY2gsY29tNDNoNG04NXVsYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGUxOWU5MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL29ydHVzdGVjaCxjb200M2g0bTg1dWxjLnR4dApAQCAtMCwwICsxLDcgQEAKK09ydHVzVGVjaCBDT000M0g0TTg1VUxDIEJsYW52aWV3IDMuNyIgVEZULUxDRCBwYW5lbAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgIm9ydHVzdGVjaCxjb200M2g0bTg1dWxjIgorCitUaGlzIGJpbmRpbmcgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBzaW1wbGUtcGFuZWwgYmluZGluZywgd2hpY2ggaXMgc3BlY2lmaWVkCitpbiBzaW1wbGUtcGFuZWwudHh0IGluIHRoaXMgZGlyZWN0b3J5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvcGFuYXNvbmljLHZ2eDEwZjAwNGIwMC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9wYW5hc29uaWMsdnZ4MTBmMDA0YjAwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzI4YjAzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvcGFuYXNvbmljLHZ2eDEwZjAwNGIwMC50eHQKQEAgLTAsMCArMSw3IEBACitQYW5hc29uaWMgQ29ycG9yYXRpb24gMTAuMSIgV1VYR0EgVEZUIExDRCBwYW5lbAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgInBhbmFzb25pYyx2dngxMGYwMDRiMDAiCisKK1RoaXMgYmluZGluZyBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHNpbXBsZS1wYW5lbCBiaW5kaW5nLCB3aGljaCBpcyBzcGVjaWZpZWQKK2luIHNpbXBsZS1wYW5lbC50eHQgaW4gdGhpcyBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9wYW5lbC1kcGkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvcGFuZWwtZHBpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTZjODk0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvcGFuZWwtZHBpLnR4dApAQCAtMCwwICsxLDQ1IEBACitHZW5lcmljIE1JUEkgRFBJIFBhbmVsCis9PT09PT09PT09PT09PT09PT09PT09CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJwYW5lbC1kcGkiCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGxhYmVsOiBhIHN5bWJvbGljIG5hbWUgZm9yIHRoZSBwYW5lbAorLSBlbmFibGUtZ3Bpb3M6IHBhbmVsIGVuYWJsZSBncGlvCisKK1JlcXVpcmVkIG5vZGVzOgorLSAicGFuZWwtdGltaW5nIiBjb250YWluaW5nIHZpZGVvIHRpbWluZ3MKKyAgKERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2Rpc3BsYXktdGltaW5nLnR4dCkKKy0gVmlkZW8gcG9ydCBmb3IgRFBJIGlucHV0CisKK0V4YW1wbGUKKy0tLS0tLS0KKworbGNkMDogZGlzcGxheUAwIHsKKyAgICAgICAgY29tcGF0aWJsZSA9ICJzYW1zdW5nLGx0ZTQzMHdxLWYwYyIsICJwYW5lbC1kcGkiOworICAgICAgICBsYWJlbCA9ICJsY2QiOworCisgICAgICAgIHBvcnQgeworICAgICAgICAgICAgbGNkX2luOiBlbmRwb2ludCB7CisgICAgICAgICAgICAgICAgICAgIHJlbW90ZS1lbmRwb2ludCA9IDwmZHBpX291dD47CisgICAgICAgICAgICB9OworICAgICAgICB9OworCisgICAgICAgIHBhbmVsLXRpbWluZyB7CisgICAgICAgICAgICAgICAgY2xvY2stZnJlcXVlbmN5ID0gPDkyMDAwMDA+OworICAgICAgICAgICAgICAgIGhhY3RpdmUgPSA8NDgwPjsKKyAgICAgICAgICAgICAgICB2YWN0aXZlID0gPDI3Mj47CisgICAgICAgICAgICAgICAgaGZyb250LXBvcmNoID0gPDg+OworICAgICAgICAgICAgICAgIGhiYWNrLXBvcmNoID0gPDQ+OworICAgICAgICAgICAgICAgIGhzeW5jLWxlbiA9IDw0MT47CisgICAgICAgICAgICAgICAgdmJhY2stcG9yY2ggPSA8Mj47CisgICAgICAgICAgICAgICAgdmZyb250LXBvcmNoID0gPDQ+OworICAgICAgICAgICAgICAgIHZzeW5jLWxlbiA9IDwxMD47CisKKyAgICAgICAgICAgICAgICBoc3luYy1hY3RpdmUgPSA8MD47CisgICAgICAgICAgICAgICAgdnN5bmMtYWN0aXZlID0gPDA+OworICAgICAgICAgICAgICAgIGRlLWFjdGl2ZSA9IDwxPjsKKyAgICAgICAgICAgICAgICBwaXhlbGNsay1hY3RpdmUgPSA8MT47CisgICAgICAgIH07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvcGFuZWwtZHNpLWNtLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3BhbmVsLWRzaS1jbS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGNlNDhlYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3BhbmVsLWRzaS1jbS50eHQKQEAgLTAsMCArMSwyOSBAQAorR2VuZXJpYyBNSVBJIERTSSBDb21tYW5kIE1vZGUgUGFuZWwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJwYW5lbC1kc2ktY20iCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGxhYmVsOiBhIHN5bWJvbGljIG5hbWUgZm9yIHRoZSBwYW5lbAorLSByZXNldC1ncGlvczogcGFuZWwgcmVzZXQgZ3BpbworLSB0ZS1ncGlvczogcGFuZWwgVEUgZ3BpbworCitSZXF1aXJlZCBub2RlczoKKy0gVmlkZW8gcG9ydCBmb3IgRFNJIGlucHV0CisKK0V4YW1wbGUKKy0tLS0tLS0KKworbGNkMDogZGlzcGxheSB7CisJY29tcGF0aWJsZSA9ICJ0cG8sdGFhbCIsICJwYW5lbC1kc2ktY20iOworCWxhYmVsID0gImxjZDAiOworCisJcmVzZXQtZ3Bpb3MgPSA8JmdwaW80IDYgR1BJT19BQ1RJVkVfSElHSD47CisKKwlwb3J0IHsKKwkJbGNkMF9pbjogZW5kcG9pbnQgeworCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZkc2kxX291dF9lcD47CisJCX07CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9zYW1zdW5nLGxkOTA0MC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9zYW1zdW5nLGxkOTA0MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM1OTVkOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3NhbXN1bmcsbGQ5MDQwLnR4dApAQCAtMCwwICsxLDY2IEBACitTYW1zdW5nIExEOTA0MCBBTU9MRUQgTENEIHBhcmFsbGVsIFJHQiBwYW5lbCB3aXRoIFNQSSBjb250cm9sIGJ1cworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6ICJzYW1zdW5nLGxkOTA0MCIKKyAgLSByZWc6IGFkZHJlc3Mgb2YgdGhlIHBhbmVsIG9uIFNQSSBidXMKKyAgLSB2ZGQzLXN1cHBseTogY29yZSB2b2x0YWdlIHN1cHBseQorICAtIHZjaS1zdXBwbHk6IHZvbHRhZ2Ugc3VwcGx5IGZvciBhbmFsb2cgY2lyY3VpdHMKKyAgLSByZXNldC1ncGlvczogYSBHUElPIHNwZWMgZm9yIHRoZSByZXNldCBwaW4KKyAgLSBkaXNwbGF5LXRpbWluZ3M6IHRpbWluZ3MgZm9yIHRoZSBjb25uZWN0ZWQgcGFuZWwgYWNjb3JkaW5nIHRvIFsxXQorCitUaGUgcGFuZWwgbXVzdCBvYmV5IHJ1bGVzIGZvciBTUEkgc2xhdmUgZGV2aWNlIHNwZWNpZmllZCBpbiBkb2N1bWVudCBbMl0uCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgIC0gcG93ZXItb24tZGVsYXk6IGRlbGF5IGFmdGVyIHR1cm5pbmcgcmVndWxhdG9ycyBvbiBbbXNdCisgIC0gcmVzZXQtZGVsYXk6IGRlbGF5IGFmdGVyIHJlc2V0IHNlcXVlbmNlIFttc10KKyAgLSBwYW5lbC13aWR0aC1tbTogcGh5c2ljYWwgcGFuZWwgd2lkdGggW21tXQorICAtIHBhbmVsLWhlaWdodC1tbTogcGh5c2ljYWwgcGFuZWwgaGVpZ2h0IFttbV0KKworVGhlIGRldmljZSBub2RlIGNhbiBjb250YWluIG9uZSAncG9ydCcgY2hpbGQgbm9kZSB3aXRoIG9uZSBjaGlsZAorJ2VuZHBvaW50JyBub2RlLCBhY2NvcmRpbmcgdG8gdGhlIGJpbmRpbmdzIGRlZmluZWQgaW4gWzNdLiBUaGlzCitub2RlIHNob3VsZCBkZXNjcmliZSBwYW5lbCdzIHZpZGVvIGJ1cy4KKworWzFdOiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9kaXNwbGF5LXRpbWluZy50eHQKK1syXTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktYnVzLnR4dAorWzNdOiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvdmlkZW8taW50ZXJmYWNlcy50eHQKKworRXhhbXBsZToKKworCWxjZEAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGxkOTA0MCI7CisJCXJlZyA9IDwwPjsKKwkJdmRkMy1zdXBwbHkgPSA8JmxkbzdfcmVnPjsKKwkJdmNpLXN1cHBseSA9IDwmbGRvMTdfcmVnPjsKKwkJcmVzZXQtZ3Bpb3MgPSA8JmdweTQgNSAwPjsKKwkJc3BpLW1heC1mcmVxdWVuY3kgPSA8MTIwMDAwMD47CisJCXNwaS1jcG9sOworCQlzcGktY3BoYTsKKwkJcG93ZXItb24tZGVsYXkgPSA8MTA+OworCQlyZXNldC1kZWxheSA9IDwxMD47CisJCXBhbmVsLXdpZHRoLW1tID0gPDkwPjsKKwkJcGFuZWwtaGVpZ2h0LW1tID0gPDE1ND47CisKKwkJZGlzcGxheS10aW1pbmdzIHsKKwkJCXRpbWluZyB7CisJCQkJY2xvY2stZnJlcXVlbmN5ID0gPDIzNDkyMzcwPjsKKwkJCQloYWN0aXZlID0gPDQ4MD47CisJCQkJdmFjdGl2ZSA9IDw4MDA+OworCQkJCWhiYWNrLXBvcmNoID0gPDE2PjsKKwkJCQloZnJvbnQtcG9yY2ggPSA8MTY+OworCQkJCXZiYWNrLXBvcmNoID0gPDI+OworCQkJCXZmcm9udC1wb3JjaCA9IDwyOD47CisJCQkJaHN5bmMtbGVuID0gPDI+OworCQkJCXZzeW5jLWxlbiA9IDwxPjsKKwkJCQloc3luYy1hY3RpdmUgPSA8MD47CisJCQkJdnN5bmMtYWN0aXZlID0gPDA+OworCQkJCWRlLWFjdGl2ZSA9IDwwPjsKKwkJCQlwaXhlbGNsay1hY3RpdmUgPSA8MD47CisJCQl9OworCQl9OworCisJCXBvcnQgeworCQkJbGNkX2VwOiBlbmRwb2ludCB7CisJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZmaW1kX2RwaV9lcD47CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9zYW1zdW5nLGx0bjEwMW50MDUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvc2Ftc3VuZyxsdG4xMDFudDA1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjUyMmM2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvc2Ftc3VuZyxsdG4xMDFudDA1LnR4dApAQCAtMCwwICsxLDcgQEAKK1NhbXN1bmcgRWxlY3Ryb25pY3MgMTAuMSIgV1NWR0EgVEZUIExDRCBwYW5lbAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgInNhbXN1bmcsbHRuMTAxbnQwNSIKKworVGhpcyBiaW5kaW5nIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgc2ltcGxlLXBhbmVsIGJpbmRpbmcsIHdoaWNoIGlzIHNwZWNpZmllZAoraW4gc2ltcGxlLXBhbmVsLnR4dCBpbiB0aGlzIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3NhbXN1bmcsbHRuMTQwYXQyOS0zMDEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvc2Ftc3VuZyxsdG4xNDBhdDI5LTMwMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdmOTY5ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3NhbXN1bmcsbHRuMTQwYXQyOS0zMDEudHh0CkBAIC0wLDAgKzEsNyBAQAorU2Ftc3VuZyBFbGVjdHJvbmljcyAxNCIgV1hHQSAoMTM2Nng3NjgpIFRGVCBMQ0QgcGFuZWwKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJzYW1zdW5nLGx0bjE0MGF0MjktMzAxIgorCitUaGlzIGJpbmRpbmcgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBzaW1wbGUtcGFuZWwgYmluZGluZywgd2hpY2ggaXMgc3BlY2lmaWVkCitpbiBzaW1wbGUtcGFuZWwudHh0IGluIHRoaXMgZGlyZWN0b3J5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvc2Ftc3VuZyxzNmU4YWEwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3NhbXN1bmcsczZlOGFhMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU3MDFjOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3NhbXN1bmcsczZlOGFhMC50eHQKQEAgLTAsMCArMSw1NiBAQAorU2Ftc3VuZyBTNkU4QUEwIEFNT0xFRCBMQ0QgNS4zIGluY2ggcGFuZWwKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiAic2Ftc3VuZyxzNmU4YWEwIgorICAtIHJlZzogdGhlIHZpcnR1YWwgY2hhbm5lbCBudW1iZXIgb2YgYSBEU0kgcGVyaXBoZXJhbAorICAtIHZkZDMtc3VwcGx5OiBjb3JlIHZvbHRhZ2Ugc3VwcGx5CisgIC0gdmNpLXN1cHBseTogdm9sdGFnZSBzdXBwbHkgZm9yIGFuYWxvZyBjaXJjdWl0cworICAtIHJlc2V0LWdwaW9zOiBhIEdQSU8gc3BlYyBmb3IgdGhlIHJlc2V0IHBpbgorICAtIGRpc3BsYXktdGltaW5nczogdGltaW5ncyBmb3IgdGhlIGNvbm5lY3RlZCBwYW5lbCBhcyBkZXNjcmliZWQgYnkgWzFdCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgIC0gcG93ZXItb24tZGVsYXk6IGRlbGF5IGFmdGVyIHR1cm5pbmcgcmVndWxhdG9ycyBvbiBbbXNdCisgIC0gcmVzZXQtZGVsYXk6IGRlbGF5IGFmdGVyIHJlc2V0IHNlcXVlbmNlIFttc10KKyAgLSBpbml0LWRlbGF5OiBkZWxheSBhZnRlciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBbbXNdCisgIC0gcGFuZWwtd2lkdGgtbW06IHBoeXNpY2FsIHBhbmVsIHdpZHRoIFttbV0KKyAgLSBwYW5lbC1oZWlnaHQtbW06IHBoeXNpY2FsIHBhbmVsIGhlaWdodCBbbW1dCisgIC0gZmxpcC1ob3Jpem9udGFsOiBib29sZWFuIHRvIGZsaXAgaW1hZ2UgaG9yaXpvbnRhbGx5CisgIC0gZmxpcC12ZXJ0aWNhbDogYm9vbGVhbiB0byBmbGlwIGltYWdlIHZlcnRpY2FsbHkKKworVGhlIGRldmljZSBub2RlIGNhbiBjb250YWluIG9uZSAncG9ydCcgY2hpbGQgbm9kZSB3aXRoIG9uZSBjaGlsZAorJ2VuZHBvaW50JyBub2RlLCBhY2NvcmRpbmcgdG8gdGhlIGJpbmRpbmdzIGRlZmluZWQgaW4gWzJdLiBUaGlzCitub2RlIHNob3VsZCBkZXNjcmliZSBwYW5lbCdzIHZpZGVvIGJ1cy4KKworWzFdOiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9kaXNwbGF5LXRpbWluZy50eHQKK1syXTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3ZpZGVvLWludGVyZmFjZXMudHh0CisKK0V4YW1wbGU6CisKKwlwYW5lbCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxzNmU4YWEwIjsKKwkJcmVnID0gPDA+OworCQl2ZGQzLXN1cHBseSA9IDwmdmNjbGNkX3JlZz47CisJCXZjaS1zdXBwbHkgPSA8JnZsY2RfcmVnPjsKKwkJcmVzZXQtZ3Bpb3MgPSA8JmdweTQgNSAwPjsKKwkJcG93ZXItb24tZGVsYXk9IDw1MD47CisJCXJlc2V0LWRlbGF5ID0gPDEwMD47CisJCWluaXQtZGVsYXkgPSA8MTAwPjsKKwkJcGFuZWwtd2lkdGgtbW0gPSA8NTg+OworCQlwYW5lbC1oZWlnaHQtbW0gPSA8MTAzPjsKKwkJZmxpcC1ob3Jpem9udGFsOworCQlmbGlwLXZlcnRpY2FsOworCisJCWRpc3BsYXktdGltaW5ncyB7CisJCQl0aW1pbmcwOiB0aW1pbmctMCB7CisJCQkJY2xvY2stZnJlcXVlbmN5ID0gPDU3MTUzNjAwPjsKKwkJCQloYWN0aXZlID0gPDcyMD47CisJCQkJdmFjdGl2ZSA9IDwxMjgwPjsKKwkJCQloZnJvbnQtcG9yY2ggPSA8NT47CisJCQkJaGJhY2stcG9yY2ggPSA8NT47CisJCQkJaHN5bmMtbGVuID0gPDU+OworCQkJCXZmcm9udC1wb3JjaCA9IDwxMz47CisJCQkJdmJhY2stcG9yY2ggPSA8MT47CisJCQkJdnN5bmMtbGVuID0gPDI+OworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvc2hhcnAsbHExMDFyMXN4MDEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvc2hhcnAsbHExMDFyMXN4MDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1MjJiYjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9zaGFycCxscTEwMXIxc3gwMS50eHQKQEAgLTAsMCArMSw0OSBAQAorU2hhcnAgTWljcm9lbGVjdHJvbmljcyAxMC4xIiBXUVhHQSBURlQgTENEIHBhbmVsCisKK1RoaXMgcGFuZWwgcmVxdWlyZXMgYSBkdWFsLWNoYW5uZWwgRFNJIGhvc3QgdG8gb3BlcmF0ZS4gSXQgc3VwcG9ydHMgdHdvIG1vZGVzOgorLSBsZWZ0LXJpZ2h0OiBlYWNoIGNoYW5uZWwgZHJpdmVzIHRoZSBsZWZ0IG9yIHJpZ2h0IGhhbGYgb2YgdGhlIHNjcmVlbgorLSBldmVuLW9kZDogZWFjaCBjaGFubmVsIGRyaXZlcyB0aGUgZXZlbiBvciBvZGQgbGluZXMgb2YgdGhlIHNjcmVlbgorCitFYWNoIG9mIHRoZSBEU0kgY2hhbm5lbHMgY29udHJvbHMgYSBzZXBhcmF0ZSBEU0kgcGVyaXBoZXJhbC4gVGhlIHBlcmlwaGVyYWwKK2RyaXZlbiBieSB0aGUgZmlyc3QgbGluayAoRFNJLUxJTksxKSwgbGVmdCBvciBldmVuLCBpcyBjb25zaWRlcmVkIHRoZSBwcmltYXJ5CitwZXJpcGhlcmFsIGFuZCBjb250cm9scyB0aGUgZGV2aWNlLiBUaGUgJ2xpbmsyJyBwcm9wZXJ0eSBjb250YWlucyBhIHBoYW5kbGUKK3RvIHRoZSBwZXJpcGhlcmFsIGRyaXZlbiBieSB0aGUgc2Vjb25kIGxpbmsgKERTSS1MSU5LMiwgcmlnaHQgb3Igb2RkKS4KKworTm90ZSB0aGF0IGluIHZpZGVvIG1vZGUgdGhlIERTSS1MSU5LMSBpbnRlcmZhY2UgYWx3YXlzIHByb3ZpZGVzIHRoZSBsZWZ0L2V2ZW4KK3BpeGVscyBhbmQgRFNJLUxJTksyIGFsd2F5cyBwcm92aWRlcyB0aGUgcmlnaHQvb2RkIHBpeGVscy4gSW4gY29tbWFuZCBtb2RlIGl0CitpcyBwb3NzaWJsZSB0byBwcm9ncmFtIGVpdGhlciBsaW5rIHRvIGRyaXZlIHRoZSBsZWZ0L2V2ZW4gb3IgcmlnaHQvb2RkIHBpeGVscworYnV0IGZvciB0aGUgc2FrZSBvZiBjb25zaXN0ZW5jeSB0aGlzIGJpbmRpbmcgYXNzdW1lcyB0aGF0IHRoZSBzYW1lIGFzc2lnbm1lbnQKK2lzIGNob3NlbiBhcyBmb3IgdmlkZW8gbW9kZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJzaGFycCxscTEwMXIxc3gwMSIKKy0gcmVnOiBEU0kgdmlydHVhbCBjaGFubmVsIG9mIHRoZSBwZXJpcGhlcmFsCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgKGZvciBEU0ktTElOSzEgb25seSk6CistIGxpbmsyOiBwaGFuZGxlIHRvIHRoZSBEU0kgcGVyaXBoZXJhbCBvbiB0aGUgc2Vjb25kYXJ5IGxpbmsuIE5vdGUgdGhhdCB0aGUKKyAgcHJlc2VuY2Ugb2YgdGhpcyBwcm9wZXJ0eSBtYXJrcyB0aGUgY29udGFpbmluZyBub2RlIGFzIERTSS1MSU5LMS4KKy0gcG93ZXItc3VwcGx5OiBwaGFuZGxlIG9mIHRoZSByZWd1bGF0b3IgdGhhdCBwcm92aWRlcyB0aGUgc3VwcGx5IHZvbHRhZ2UKKworT3B0aW9uYWwgcHJvcGVydGllcyAoZm9yIERTSS1MSU5LMSBvbmx5KToKKy0gYmFja2xpZ2h0OiBwaGFuZGxlIG9mIHRoZSBiYWNrbGlnaHQgZGV2aWNlIGF0dGFjaGVkIHRvIHRoZSBwYW5lbAorCitFeGFtcGxlOgorCisJZHNpQDU0MzAwMDAwIHsKKwkJcGFuZWw6IHBhbmVsQDAgeworCQkJY29tcGF0aWJsZSA9ICJzaGFycCxscTEwMXIxc3gwMSI7CisJCQlyZWcgPSA8MD47CisKKwkJCWxpbmsyID0gPCZzZWNvbmRhcnk+OworCisJCQlwb3dlci1zdXBwbHkgPSA8Li4uPjsKKwkJCWJhY2tsaWdodCA9IDwuLi4+OworCQl9OworCX07CisKKwlkc2lANTQ0MDAwMDAgeworCQlzZWNvbmRhcnk6IHBhbmVsQDAgeworCQkJY29tcGF0aWJsZSA9ICJzaGFycCxscTEwMXIxc3gwMSI7CisJCQlyZWcgPSA8MD47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3NoYXJwLGxzMDM3djdkdzAxLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3NoYXJwLGxzMDM3djdkdzAxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2M4OTgxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvc2hhcnAsbHMwMzd2N2R3MDEudHh0CkBAIC0wLDAgKzEsNDMgQEAKK1NIQVJQIExTMDM3VjdEVzAxIFRGVC1MQ0QgcGFuZWwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJzaGFycCxsczAzN3Y3ZHcwMSIKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gbGFiZWw6IGEgc3ltYm9saWMgbmFtZSBmb3IgdGhlIHBhbmVsCistIGVuYWJsZS1ncGlvczogYSBHUElPIHNwZWMgZm9yIHRoZSBvcHRpb25hbCBlbmFibGUgcGluLgorICBUaGlzIHBpbiBpcyB0aGUgSU5JIHBpbiBhcyBzcGVjaWZpZWQgaW4gdGhlIExTMDM3VjdEVzAxLnBkZiBmaWxlLgorLSByZXNldC1ncGlvczogYSBHUElPIHNwZWMgZm9yIHRoZSBvcHRpb25hbCByZXNldCBwaW4uCisgIFRoaXMgcGluIGlzIHRoZSBSRVNCIHBpbiBhcyBzcGVjaWZpZWQgaW4gdGhlIExTMDM3VjdEVzAxLnBkZiBmaWxlLgorLSBtb2RlLWdwaW9zOiBhIEdQSU8KKyAgb3JkZXJlZCBNTywgTFIsIGFuZCBVRCBhcyBzcGVjaWZpZWQgaW4gdGhlIExTMDM3VjdEVzAxLnBkZiBmaWxlLgorCitSZXF1aXJlZCBub2RlczoKKy0gVmlkZW8gcG9ydCBmb3IgRFBJIGlucHV0CisKK1RoaXMgcGFuZWwgY2FuIGhhdmUgemVybyB0byBmaXZlIEdQSU9zIHRvIGNvbmZpZ3VyZSB0byBjaGFuZ2UgY29uZmlndXJhdGlvbgorYmV0d2VlbiBRVkdBIGFuZCBWR0EgbW9kZSBhbmQgdGhlIHNjYW4gZGlyZWN0aW9uLiBBcyB0aGVzZSBwaW5zIGNhbiBiZSBhbHNvCitjb25maWd1cmVkIHdpdGggZXh0ZXJuYWwgcHVsbHMsIGFsbCB0aGUgR1BJT3MgYXJlIGNvbnNpZGVyZWQgb3B0aW9uYWwgd2l0aCBob2xlcworaW4gdGhlIGFycmF5LgorCitFeGFtcGxlCistLS0tLS0tCisKK0V4YW1wbGUgd2hlbiBjb25uZWN0ZWQgdG8gYSBvbWFwMisgYmFzZWQgZGV2aWNlOgorCitsY2QwOiBkaXNwbGF5IHsKKwljb21wYXRpYmxlID0gInNoYXJwLGxzMDM3djdkdzAxIjsKKwlwb3dlci1zdXBwbHkgPSA8JmxjZF8zdjM+OworCWVuYWJsZS1ncGlvcyA9IDwmZ3BpbzUgMjQgR1BJT19BQ1RJVkVfSElHSD47CS8qIGdwaW8xNTIsIGxjZCBJTkkgKi8KKwlyZXNldC1ncGlvcyA9IDwmZ3BpbzUgMjcgR1BJT19BQ1RJVkVfSElHSD47CS8qIGdwaW8xNTUsIGxjZCBSRVNCICovCisJbW9kZS1ncGlvcyA9IDwmZ3BpbzUgMjYgR1BJT19BQ1RJVkVfSElHSAkvKiBncGlvMTU0LCBsY2QgTU8gKi8KKwkJICAgICAgJmdwaW8xIDIgR1BJT19BQ1RJVkVfSElHSAkJLyogZ3BpbzIsIGxjZCBMUiAqLworCQkgICAgICAmZ3BpbzEgMyBHUElPX0FDVElWRV9ISUdIPjsJLyogZ3BpbzMsIGxjZCBVRCAqLworCisJcG9ydCB7CisJCWxjZF9pbjogZW5kcG9pbnQgeworCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZkcGlfb3V0PjsKKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3NoZWxseSxzY2EwNzAxMC1iZm4tbG5uLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3NoZWxseSxzY2EwNzAxMC1iZm4tbG5uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzFlYTllCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvc2hlbGx5LHNjYTA3MDEwLWJmbi1sbm4udHh0CkBAIC0wLDAgKzEsNyBAQAorU2hlbGx5IFNDQTA3MDEwLUJGTi1MTk4gNy4wIiBXVkdBIFRGVCBMQ0QgcGFuZWwKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJzaGVsbHksc2NhMDcwMTAtYmZuLWxubiIKKworVGhpcyBiaW5kaW5nIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgc2ltcGxlLXBhbmVsIGJpbmRpbmcsIHdoaWNoIGlzIHNwZWNpZmllZAoraW4gc2ltcGxlLXBhbmVsLnR4dCBpbiB0aGlzIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3NpbXBsZS1wYW5lbC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9zaW1wbGUtcGFuZWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNDFiYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9zaW1wbGUtcGFuZWwudHh0CkBAIC0wLDAgKzEsMjEgQEAKK1NpbXBsZSBkaXNwbGF5IHBhbmVsCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIHBvd2VyLXN1cHBseTogcmVndWxhdG9yIHRvIHByb3ZpZGUgdGhlIHN1cHBseSB2b2x0YWdlCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGRkYy1pMmMtYnVzOiBwaGFuZGxlIG9mIGFuIEkyQyBjb250cm9sbGVyIHVzZWQgZm9yIEREQyBFRElEIHByb2JpbmcKKy0gZW5hYmxlLWdwaW9zOiBHUElPIHBpbiB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgcGFuZWwKKy0gYmFja2xpZ2h0OiBwaGFuZGxlIG9mIHRoZSBiYWNrbGlnaHQgZGV2aWNlIGF0dGFjaGVkIHRvIHRoZSBwYW5lbAorCitFeGFtcGxlOgorCisJcGFuZWw6IHBhbmVsIHsKKwkJY29tcGF0aWJsZSA9ICJjcHR0LGNsYWExMDF3YjAxIjsKKwkJZGRjLWkyYy1idXMgPSA8JnBhbmVsZGRjPjsKKworCQlwb3dlci1zdXBwbHkgPSA8JnZkZF9wbmxfcmVnPjsKKwkJZW5hYmxlLWdwaW9zID0gPCZncGlvIDkwIDA+OworCisJCWJhY2tsaWdodCA9IDwmYmFja2xpZ2h0PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvc29ueSxhY3g1NjVha20udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvc29ueSxhY3g1NjVha20udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMjMzMzIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9zb255LGFjeDU2NWFrbS50eHQKQEAgLTAsMCArMSwzMCBAQAorU29ueSBBQ1g1NjVBS00gU0RJIFBhbmVsCis9PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInNvbnksYWN4NTY1YWttIgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBsYWJlbDogYSBzeW1ib2xpYyBuYW1lIGZvciB0aGUgcGFuZWwKKy0gcmVzZXQtZ3Bpb3M6IHBhbmVsIHJlc2V0IGdwaW8KKworUmVxdWlyZWQgbm9kZXM6CistIFZpZGVvIHBvcnQgZm9yIFNESSBpbnB1dAorCitFeGFtcGxlCistLS0tLS0tCisKK2FjeDU2NWFrbUAyIHsKKwljb21wYXRpYmxlID0gInNvbnksYWN4NTY1YWttIjsKKwlzcGktbWF4LWZyZXF1ZW5jeSA9IDw2MDAwMDAwPjsKKwlyZWcgPSA8Mj47CisKKwlsYWJlbCA9ICJsY2QiOworCXJlc2V0LWdwaW9zID0gPCZncGlvMyAyNiBHUElPX0FDVElWRV9ISUdIPjsgLyogOTAgKi8KKworCXBvcnQgeworCQlsY2RfaW46IGVuZHBvaW50IHsKKwkJCXJlbW90ZS1lbmRwb2ludCA9IDwmc2RpX291dD47CisJCX07CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC90b3Bwb2x5LHRkMDI4dHRlYzEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvdG9wcG9seSx0ZDAyOHR0ZWMxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTc1ZGMzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvdG9wcG9seSx0ZDAyOHR0ZWMxLnR4dApAQCAtMCwwICsxLDMwIEBACitUb3Bwb2x5IFREMDI4VFRFQzEgUGFuZWwKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAidG9wcG9seSx0ZDAyOHR0ZWMxIgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBsYWJlbDogYSBzeW1ib2xpYyBuYW1lIGZvciB0aGUgcGFuZWwKKworUmVxdWlyZWQgbm9kZXM6CistIFZpZGVvIHBvcnQgZm9yIERQSSBpbnB1dAorCitFeGFtcGxlCistLS0tLS0tCisKK2xjZC1wYW5lbDogdGQwMjh0dGVjMUAwIHsKKwljb21wYXRpYmxlID0gInRvcHBvbHksdGQwMjh0dGVjMSI7CisJcmVnID0gPDA+OworCXNwaS1tYXgtZnJlcXVlbmN5ID0gPDEwMDAwMD47CisJc3BpLWNwb2w7CisJc3BpLWNwaGE7CisKKwlsYWJlbCA9ICJsY2QiOworCXBvcnQgeworCQlsY2RfaW46IGVuZHBvaW50IHsKKwkJCXJlbW90ZS1lbmRwb2ludCA9IDwmZHBpX291dD47CisJCX07CisJfTsKK307CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3Rwbyx0ZDA0M210ZWExLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3Rwbyx0ZDA0M210ZWExLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzZkNjI5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvdHBvLHRkMDQzbXRlYTEudHh0CkBAIC0wLDAgKzEsMzMgQEAKK1RQTyBURDA0M01URUExIFBhbmVsCis9PT09PT09PT09PT09PT09PT09PQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAidHBvLHRkMDQzbXRlYTEiCistIHJlc2V0LWdwaW9zOiBwYW5lbCByZXNldCBncGlvCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGxhYmVsOiBhIHN5bWJvbGljIG5hbWUgZm9yIHRoZSBwYW5lbAorCitSZXF1aXJlZCBub2RlczoKKy0gVmlkZW8gcG9ydCBmb3IgRFBJIGlucHV0CisKK0V4YW1wbGUKKy0tLS0tLS0KKworbGNkLXBhbmVsOiBwYW5lbEAwIHsKKwljb21wYXRpYmxlID0gInRwbyx0ZDA0M210ZWExIjsKKwlyZWcgPSA8MD47CisJc3BpLW1heC1mcmVxdWVuY3kgPSA8MTAwMDAwPjsKKwlzcGktY3BvbDsKKwlzcGktY3BoYTsKKworCWxhYmVsID0gImxjZCI7CisKKwlyZXNldC1ncGlvcyA9IDwmZ3BpbzcgNyAwPjsKKworCXBvcnQgeworCQlsY2RfaW46IGVuZHBvaW50IHsKKwkJCXJlbW90ZS1lbmRwb2ludCA9IDwmZHBpX291dD47CisJCX07CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9yZW5lc2FzLGR1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3JlbmVzYXMsZHUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjY2Q0ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9yZW5lc2FzLGR1LnR4dApAQCAtMCwwICsxLDkyIEBACisqIFJlbmVzYXMgUi1DYXIgRGlzcGxheSBVbml0IChEVSkKKworUmVxdWlyZWQgUHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGU6IG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcuCisgICAgLSAicmVuZXNhcyxkdS1yOGE3Nzc5IiBmb3IgUjhBNzc3OSAoUi1DYXIgSDEpIGNvbXBhdGlibGUgRFUKKyAgICAtICJyZW5lc2FzLGR1LXI4YTc3OTAiIGZvciBSOEE3NzkwIChSLUNhciBIMikgY29tcGF0aWJsZSBEVQorICAgIC0gInJlbmVzYXMsZHUtcjhhNzc5MSIgZm9yIFI4QTc3OTEgKFItQ2FyIE0yLVcpIGNvbXBhdGlibGUgRFUKKyAgICAtICJyZW5lc2FzLGR1LXI4YTc3OTMiIGZvciBSOEE3NzkzIChSLUNhciBNMi1OKSBjb21wYXRpYmxlIERVCisgICAgLSAicmVuZXNhcyxkdS1yOGE3Nzk0IiBmb3IgUjhBNzc5NCAoUi1DYXIgRTIpIGNvbXBhdGlibGUgRFUKKworICAtIHJlZzogQSBsaXN0IG9mIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIGVhY2ggbWVtb3J5IHJlc291cmNlLCBvbmUgZm9yCisgICAgZWFjaCBlbnRyeSBpbiB0aGUgcmVnLW5hbWVzIHByb3BlcnR5LgorICAtIHJlZy1uYW1lczogTmFtZSBvZiB0aGUgbWVtb3J5IHJlc291cmNlcy4gVGhlIERVIHJlcXVpcmVzIG9uZSBtZW1vcnkKKyAgICByZXNvdXJjZSBmb3IgdGhlIERVIGNvcmUgKG5hbWVkICJkdSIpIGFuZCBvbmUgbWVtb3J5IHJlc291cmNlIGZvciBlYWNoCisgICAgTFZEUyBlbmNvZGVyIChuYW1lZCAibHZkcy54IiB3aXRoICJ4IiBiZWluZyB0aGUgTFZEUyBjb250cm9sbGVyIG51bWVyaWNhbAorICAgIGluZGV4KS4KKworICAtIGludGVycnVwdC1wYXJlbnQ6IHBoYW5kbGUgb2YgdGhlIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlci4KKyAgLSBpbnRlcnJ1cHRzOiBJbnRlcnJ1cHQgc3BlY2lmaWVycyBmb3IgdGhlIERVIGludGVycnVwdHMuCisKKyAgLSBjbG9ja3M6IEEgbGlzdCBvZiBwaGFuZGxlcyArIGNsb2NrLXNwZWNpZmllciBwYWlycywgb25lIGZvciBlYWNoIGVudHJ5IGluCisgICAgdGhlIGNsb2NrLW5hbWVzIHByb3BlcnR5LgorICAtIGNsb2NrLW5hbWVzOiBOYW1lIG9mIHRoZSBjbG9ja3MuIFRoaXMgcHJvcGVydHkgaXMgbW9kZWwtZGVwZW5kZW50LgorICAgIC0gUjhBNzc3OSB1c2VzIGEgc2luZ2xlIGZ1bmN0aW9uYWwgY2xvY2suIFRoZSBjbG9jayBkb2Vzbid0IG5lZWQgdG8gYmUKKyAgICAgIG5hbWVkLgorICAgIC0gUjhBNzc5WzAxMzRdIHVzZSBvbmUgZnVuY3Rpb25hbCBjbG9jayBwZXIgY2hhbm5lbCBhbmQgb25lIGNsb2NrIHBlciBMVkRTCisgICAgICBlbmNvZGVyIChpZiBhdmFpbGFibGUpLiBUaGUgZnVuY3Rpb25hbCBjbG9ja3MgbXVzdCBiZSBuYW1lZCAiZHUueCIgd2l0aAorICAgICAgIngiIGJlaW5nIHRoZSBjaGFubmVsIG51bWVyaWNhbCBpbmRleC4gVGhlIExWRFMgY2xvY2tzIG11c3QgYmUgbmFtZWQKKyAgICAgICJsdmRzLngiIHdpdGggIngiIGJlaW5nIHRoZSBMVkRTIGVuY29kZXIgbnVtZXJpY2FsIGluZGV4LgorICAgIC0gSW4gYWRkaXRpb24gdG8gdGhlIGZ1bmN0aW9uYWwgYW5kIGVuY29kZXIgY2xvY2tzLCBhbGwgRFUgdmVyc2lvbnMgYWxzbworICAgICAgc3VwcG9ydCBleHRlcm5hbGx5IHN1cHBsaWVkIHBpeGVsIGNsb2Nrcy4gVGhvc2UgY2xvY2tzIGFyZSBvcHRpb25hbC4KKyAgICAgIFdoZW4gc3VwcGxpZWQgdGhleSBtdXN0IGJlIG5hbWVkICJkY2xraW4ueCIgd2l0aCAieCIgYmVpbmcgdGhlIGlucHV0CisgICAgICBjbG9jayBudW1lcmljYWwgaW5kZXguCisKK1JlcXVpcmVkIG5vZGVzOgorCitUaGUgY29ubmVjdGlvbnMgdG8gdGhlIERVIG91dHB1dCB2aWRlbyBwb3J0cyBhcmUgbW9kZWxlZCB1c2luZyB0aGUgT0YgZ3JhcGgKK2JpbmRpbmdzIHNwZWNpZmllZCBpbiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3JhcGgudHh0LgorCitUaGUgZm9sbG93aW5nIHRhYmxlIGxpc3RzIGZvciBlYWNoIHN1cHBvcnRlZCBtb2RlbCB0aGUgcG9ydCBudW1iZXIKK2NvcnJlc3BvbmRpbmcgdG8gZWFjaCBEVSBvdXRwdXQuCisKKwkJUG9ydCAwCQlQb3J0MQkJUG9ydDIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUjhBNzc3OSAoSDEpCURQQUQgMAkJRFBBRCAxCQktCisgUjhBNzc5MCAoSDIpCURQQUQJCUxWRFMgMAkJTFZEUyAxCisgUjhBNzc5MSAoTTItVykJRFBBRAkJTFZEUyAwCQktCisgUjhBNzc5MyAoTTItTikJRFBBRAkJTFZEUyAwCQktCisgUjhBNzc5NCAoRTIpCURQQUQgMAkJRFBBRCAxCQktCisKKworRXhhbXBsZTogUjhBNzc5MCAoUi1DYXIgSDIpIERVCisKKwlkdTogZHVAZmViMDAwMDAgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMsZHUtcjhhNzc5MCI7CisJCXJlZyA9IDwwIDB4ZmViMDAwMDAgMCAweDcwMDAwPiwKKwkJICAgICAgPDAgMHhmZWI5MDAwMCAwIDB4MWM+LAorCQkgICAgICA8MCAweGZlYjk0MDAwIDAgMHgxYz47CisJCXJlZy1uYW1lcyA9ICJkdSIsICJsdmRzLjAiLCAibHZkcy4xIjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ2ljPjsKKwkJaW50ZXJydXB0cyA9IDwwIDI1NiBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKKwkJCSAgICAgPDAgMjY4IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8MCAyNjkgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWNsb2NrcyA9IDwmbXN0cDdfY2xrcyBSOEE3NzkwX0NMS19EVTA+LAorCQkgICAgICAgICA8Jm1zdHA3X2Nsa3MgUjhBNzc5MF9DTEtfRFUxPiwKKwkJICAgICAgICAgPCZtc3RwN19jbGtzIFI4QTc3OTBfQ0xLX0RVMj4sCisJCSAgICAgICAgIDwmbXN0cDdfY2xrcyBSOEE3NzkwX0NMS19MVkRTMD4sCisJCSAgICAgICAgIDwmbXN0cDdfY2xrcyBSOEE3NzkwX0NMS19MVkRTMT47CisJCWNsb2NrLW5hbWVzID0gImR1LjAiLCAiZHUuMSIsICJkdS4yIiwgImx2ZHMuMCIsICJsdmRzLjEiOworCisJCXBvcnRzIHsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJCXBvcnRAMCB7CisJCQkJcmVnID0gPDA+OworCQkJCWR1X291dF9yZ2I6IGVuZHBvaW50IHsKKwkJCQl9OworCQkJfTsKKwkJCXBvcnRAMSB7CisJCQkJcmVnID0gPDE+OworCQkJCWR1X291dF9sdmRzMDogZW5kcG9pbnQgeworCQkJCX07CisJCQl9OworCQkJcG9ydEAyIHsKKwkJCQlyZWcgPSA8Mj47CisJCQkJZHVfb3V0X2x2ZHMxOiBlbmRwb2ludCB7CisJCQkJfTsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3JvY2tjaGlwL2R3X2hkbWktcm9ja2NoaXAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcm9ja2NoaXAvZHdfaGRtaS1yb2NrY2hpcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY4MDkxZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3JvY2tjaGlwL2R3X2hkbWktcm9ja2NoaXAudHh0CkBAIC0wLDAgKzEsNDYgQEAKK1JvY2tjaGlwIHNwZWNpZmljIGV4dGVuc2lvbnMgdG8gdGhlIFN5bm9wc3lzIERlc2lnbndhcmUgSERNSQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInJvY2tjaGlwLHJrMzI4OC1kdy1oZG1pIjsKKy0gcmVnOiBQaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgY29udHJvbGxlcidzIHJlZ2lzdGVycy4KKy0gY2xvY2tzOiBwaGFuZGxlIHRvIGhkbWkgaWFoYiBhbmQgaXNmciBjbG9ja3MuCistIGNsb2NrLW5hbWVzOiBzaG91bGQgYmUgImlhaGIiICJpc2ZyIgorLSByb2NrY2hpcCxncmY6IHRoaXMgc29jIHNob3VsZCBzZXQgR1JGIHJlZ3MgdG8gbXV4IHZvcGwvdm9wYi4KKy0gaW50ZXJydXB0czogSERNSSBpbnRlcnJ1cHQgbnVtYmVyCistIHBvcnRzOiBjb250YWluIGEgcG9ydCBub2RlIHdpdGggZW5kcG9pbnQgZGVmaW5pdGlvbnMgYXMgZGVmaW5lZCBpbgorICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvdmlkZW8taW50ZXJmYWNlcy50eHQuIEZvcgorICB2b3BiLHNldCB0aGUgcmVnID0gPDA+IGFuZCBzZXQgdGhlIHJlZyA9IDwxPiBmb3Igdm9wbC4KKy0gcmVnLWlvLXdpZHRoOiB0aGUgd2lkdGggb2YgdGhlIHJlZzoxLDQsIHRoZSB2YWx1ZSBzaG91bGQgYmUgNCBvbgorICByazMyODggcGxhdGZvcm0KKworT3B0aW9uYWwgcHJvcGVydGllcworLSBkZGMtaTJjLWJ1czogcGhhbmRsZSBvZiBhbiBJMkMgY29udHJvbGxlciB1c2VkIGZvciBEREMgRURJRCBwcm9iaW5nCistIGNsb2NrcywgY2xvY2stbmFtZXM6IHBoYW5kbGUgdG8gdGhlIEhETUkgQ0VDIGNsb2NrLCBuYW1lIHNob3VsZCBiZSAiY2VjIgorCitFeGFtcGxlOgoraGRtaTogaGRtaUBmZjk4MDAwMCB7CisJY29tcGF0aWJsZSA9ICJyb2NrY2hpcCxyazMyODgtZHctaGRtaSI7CisJcmVnID0gPDB4ZmY5ODAwMDAgMHgyMDAwMD47CisJcmVnLWlvLXdpZHRoID0gPDQ+OworCWRkYy1pMmMtYnVzID0gPCZpMmM1PjsKKwlyb2NrY2hpcCxncmYgPSA8JmdyZj47CisJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDEwMyBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwljbG9ja3MgPSA8JmNydSAgUENMS19IRE1JX0NUUkw+LCA8JmNydSBTQ0xLX0hETUlfSERDUD47CisJY2xvY2stbmFtZXMgPSAiaWFoYiIsICJpc2ZyIjsKKwlzdGF0dXMgPSAiZGlzYWJsZWQiOworCXBvcnRzIHsKKwkJaGRtaV9pbjogcG9ydCB7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCQkJaGRtaV9pbl92b3BiOiBlbmRwb2ludEAwIHsKKwkJCQlyZWcgPSA8MD47CisJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZ2b3BiX291dF9oZG1pPjsKKwkJCX07CisJCQloZG1pX2luX3ZvcGw6IGVuZHBvaW50QDEgeworCQkJCXJlZyA9IDwxPjsKKwkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JnZvcGxfb3V0X2hkbWk+OworCQkJfTsKKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3JvY2tjaGlwL3JvY2tjaGlwLWRybS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9yb2NrY2hpcC9yb2NrY2hpcC1kcm0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MDdhZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9yb2NrY2hpcC9yb2NrY2hpcC1kcm0udHh0CkBAIC0wLDAgKzEsMTkgQEAKK1JvY2tjaGlwIERSTSBtYXN0ZXIgZGV2aWNlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgUm9ja2NoaXAgRFJNIG1hc3RlciBkZXZpY2UgaXMgYSB2aXJ0dWFsIGRldmljZSBuZWVkZWQgdG8gbGlzdCBhbGwKK3ZvcCBkZXZpY2VzIG9yIG90aGVyIGRpc3BsYXkgaW50ZXJmYWNlIG5vZGVzIHRoYXQgY29tcHJpc2UgdGhlCitncmFwaGljcyBzdWJzeXN0ZW0uCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAicm9ja2NoaXAsZGlzcGxheS1zdWJzeXN0ZW0iCistIHBvcnRzOiBTaG91bGQgY29udGFpbiBhIGxpc3Qgb2YgcGhhbmRsZXMgcG9pbnRpbmcgdG8gZGlzcGxheSBpbnRlcmZhY2UgcG9ydAorICBvZiB2b3AgZGV2aWNlcy4gdm9wIGRlZmluaXRpb25zIGFzIGRlZmluZWQgaW4KKyAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcm9ja2NoaXAvcm9ja2NoaXAtdm9wLnR4dAorCitleGFtcGxlOgorCitkaXNwbGF5LXN1YnN5c3RlbSB7CisJY29tcGF0aWJsZSA9ICJyb2NrY2hpcCxkaXNwbGF5LXN1YnN5c3RlbSI7CisJcG9ydHMgPSA8JnZvcGxfb3V0PiwgPCZ2b3BiX291dD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcm9ja2NoaXAvcm9ja2NoaXAtdm9wLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3JvY2tjaGlwL3JvY2tjaGlwLXZvcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE1MzUxZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3JvY2tjaGlwL3JvY2tjaGlwLXZvcC50eHQKQEAgLTAsMCArMSw1OCBAQAorZGV2aWNlLXRyZWUgYmluZGluZ3MgZm9yIHJvY2tjaGlwIHNvYyBkaXNwbGF5IGNvbnRyb2xsZXIgKHZvcCkKKworVk9QIChWaXN1YWwgT3V0cHV0IFByb2Nlc3NvcikgaXMgdGhlIERpc3BsYXkgQ29udHJvbGxlciBmb3IgdGhlIFJvY2tjaGlwCitzZXJpZXMgb2YgU29DcyB3aGljaCB0cmFuc2ZlcnMgdGhlIGltYWdlIGRhdGEgZnJvbSBhIHZpZGVvIG1lbW9yeQorYnVmZmVyIHRvIGFuIGV4dGVybmFsIExDRCBpbnRlcmZhY2UuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHZhbHVlIHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZworCQkicm9ja2NoaXAscmszMjg4LXZvcCI7CisKKy0gaW50ZXJydXB0czogc2hvdWxkIGNvbnRhaW4gYSBsaXN0IG9mIGFsbCBWT1AgSVAgYmxvY2sgaW50ZXJydXB0cyBpbiB0aGUKKwkJIG9yZGVyOiBWU1lOQywgTENEX1NZU1RFTS4gVGhlIGludGVycnVwdCBzcGVjaWZpZXIKKwkJIGZvcm1hdCBkZXBlbmRzIG9uIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB1c2VkLgorCistIGNsb2NrczogbXVzdCBpbmNsdWRlIGNsb2NrIHNwZWNpZmllcnMgY29ycmVzcG9uZGluZyB0byBlbnRyaWVzIGluIHRoZQorCQljbG9jay1uYW1lcyBwcm9wZXJ0eS4KKworLSBjbG9jay1uYW1lczogTXVzdCBjb250YWluCisJCWFjbGtfdm9wOiBmb3IgZGRyIGJ1ZmZlciB0cmFuc2Zlci4KKwkJaGNsa192b3A6IGZvciBhaGIgYnVzIHRvIFIvVyB0aGUgcGh5IHJlZ3MuCisJCWRjbGtfdm9wOiBwaXhlbCBjbG9jay4KKworLSByZXNldHM6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiByZXNldC1uYW1lcy4KKyAgU2VlIC4uL3Jlc2V0L3Jlc2V0LnR4dCBmb3IgZGV0YWlscy4KKy0gcmVzZXQtbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIC0gYXhpCisgIC0gYWhiCisgIC0gZGNsaworCistIGlvbW11czogcmVxdWlyZWQgYSBpb21tdSBub2RlCisKKy0gcG9ydDogQSBwb3J0IG5vZGUgd2l0aCBlbmRwb2ludCBkZWZpbml0aW9ucyBhcyBkZWZpbmVkIGluCisgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS92aWRlby1pbnRlcmZhY2VzLnR4dC4KKworRXhhbXBsZToKK1NvQyBzcGVjaWZpYyBEVCBlbnRyeToKKwl2b3BiOiB2b3BiQGZmOTMwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJyb2NrY2hpcCxyazMyODgtdm9wIjsKKwkJcmVnID0gPDB4ZmY5MzAwMDAgMHgxOWM+OworCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMTUgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWNsb2NrcyA9IDwmY3J1IEFDTEtfVk9QMD4sIDwmY3J1IERDTEtfVk9QMD4sIDwmY3J1IEhDTEtfVk9QMD47CisJCWNsb2NrLW5hbWVzID0gImFjbGtfdm9wIiwgImRjbGtfdm9wIiwgImhjbGtfdm9wIjsKKwkJcmVzZXRzID0gPCZjcnUgU1JTVF9MQ0RDMV9BWEk+LCA8JmNydSBTUlNUX0xDREMxX0FIQj4sIDwmY3J1IFNSU1RfTENEQzFfRENMSz47CisJCXJlc2V0LW5hbWVzID0gImF4aSIsICJhaGIiLCAiZGNsayI7CisJCWlvbW11cyA9IDwmdm9wYl9tbXU+OworCQl2b3BiX291dDogcG9ydCB7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCQkJdm9wYl9vdXRfZWRwOiBlbmRwb2ludEAwIHsKKwkJCQlyZWcgPSA8MD47CisJCQkJcmVtb3RlLWVuZHBvaW50PTwmZWRwX2luX3ZvcGI+OworCQkJfTsKKwkJCXZvcGJfb3V0X2hkbWk6IGVuZHBvaW50QDEgeworCQkJCXJlZyA9IDwxPjsKKwkJCQlyZW1vdGUtZW5kcG9pbnQ9PCZoZG1pX2luX3ZvcGI+OworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvc2ltcGxlLWZyYW1lYnVmZmVyLXN1bnhpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3NpbXBsZS1mcmFtZWJ1ZmZlci1zdW54aS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ2YmE2NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3NpbXBsZS1mcmFtZWJ1ZmZlci1zdW54aS50eHQKQEAgLTAsMCArMSwzMyBAQAorU3VueGkgc3BlY2lmaWMgU2ltcGxlIEZyYW1lYnVmZmVyIGJpbmRpbmdzCisKK1RoaXMgYmluZGluZyBkb2N1bWVudHMgc3VueGkgc3BlY2lmaWMgZXh0ZW5zaW9ucyB0byB0aGUgc2ltcGxlLWZyYW1lYnVmZmVyCitiaW5kaW5ncy4gVGhlIHN1bnhpIHNpbXBsZWZiIHUtYm9vdCBjb2RlIHJlbGllcyBvbiB0aGUgZGV2aWNldHJlZSBjb250YWluaW5nCitwcmUtcG9wdWxhdGVkIHNpbXBsZWZiIG5vZGVzLgorCitUaGVzZSBleHRlbnNpb25zIGFyZSBpbnRlbmRlZCBzbyB0aGF0IHUtYm9vdCBjYW4gc2VsZWN0IHRoZSByaWdodCBub2RlIGJhc2VkCitvbiB3aGljaCBwaXBlbGluZSBpcyBiZWluZyB1c2VkLiBBcyBzdWNoIHRoZXkgYXJlIHNvbGVseSBpbnRlbmRlZCBmb3IKK2Zpcm13YXJlIC8gYm9vdGxvYWRlciB1c2UsIGFuZCB0aGUgT1Mgc2hvdWxkIGlnbm9yZSB0aGVtLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiYWxsd2lubmVyLHNpbXBsZS1mcmFtZWJ1ZmZlciIKKy0gYWxsd2lubmVyLHBpcGVsaW5lLCBvbmUgb2Y6CisgICJkZV9iZTAtbGNkMCIKKyAgImRlX2JlMS1sY2QxIgorICAiZGVfYmUwLWxjZDAtaGRtaSIKKyAgImRlX2JlMS1sY2QxLWhkbWkiCisKK0V4YW1wbGU6CisKK2Nob3NlbiB7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MT47CisJcmFuZ2VzOworCisJZnJhbWVidWZmZXJAMCB7CisJCWNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHNpbXBsZS1mcmFtZWJ1ZmZlciIsICJzaW1wbGUtZnJhbWVidWZmZXIiOworCQlhbGx3aW5uZXIscGlwZWxpbmUgPSAiZGVfYmUwLWxjZDAtaGRtaSI7CisJCWNsb2NrcyA9IDwmcGxsNSAxPiwgPCZhaGJfZ2F0ZXMgMzY+LCA8JmFoYl9nYXRlcyA0Mz4sCisJCQkgPCZhaGJfZ2F0ZXMgNDQ+OworCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvc2ltcGxlLWZyYW1lYnVmZmVyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3NpbXBsZS1mcmFtZWJ1ZmZlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ3NGVmNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3NpbXBsZS1mcmFtZWJ1ZmZlci50eHQKQEAgLTAsMCArMSw4NiBAQAorU2ltcGxlIEZyYW1lYnVmZmVyCisKK0Egc2ltcGxlIGZyYW1lLWJ1ZmZlciBkZXNjcmliZXMgYSBmcmFtZS1idWZmZXIgc2V0dXAgYnkgZmlybXdhcmUgb3IKK3RoZSBib290bG9hZGVyLCB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlIGRpc3BsYXkgaGFyZHdhcmUgaGFzIGFscmVhZHkKK2JlZW4gc2V0IHVwIHRvIHNjYW4gb3V0IGZyb20gdGhlIG1lbW9yeSBwb2ludGVkIHRvIGJ5IHRoZSByZWcgcHJvcGVydHkuCisKK1NpbmNlIHNpbXBsZWZiIG5vZGVzIHJlcHJlc2VudCBydW50aW1lIGluZm9ybWF0aW9uIHRoZXkgbXVzdCBiZSBzdWItbm9kZXMgb2YKK3RoZSBjaG9zZW4gbm9kZSAoKikuIFNpbXBsZWZiIG5vZGVzIG11c3QgYmUgbmFtZWQgImZyYW1lYnVmZmVyQDxhZGRyZXNzPiIuCisKK0lmIHRoZSBkZXZpY2V0cmVlIGNvbnRhaW5zIG5vZGVzIGZvciB0aGUgZGlzcGxheSBoYXJkd2FyZSB1c2VkIGJ5IGEgc2ltcGxlZmIsCit0aGVuIHRoZSBzaW1wbGVmYiBub2RlIG11c3QgY29udGFpbiBhIHByb3BlcnR5IGNhbGxlZCAiZGlzcGxheSIsIHdoaWNoCitjb250YWlucyBhIHBoYW5kbGUgcG9pbnRpbmcgdG8gdGhlIHByaW1hcnkgZGlzcGxheSBodyBub2RlLCBzbyB0aGF0IHRoZSBPUwora25vd3Mgd2hpY2ggc2ltcGxlZmIgdG8gZGlzYWJsZSB3aGVuIGhhbmRpbmcgb3ZlciBjb250cm9sIHRvIGEgZHJpdmVyIGZvciB0aGUKK3JlYWwgaGFyZHdhcmUuIFRoZSBiaW5kaW5ncyBmb3IgdGhlIGh3IG5vZGVzIG11c3Qgc3BlY2lmeSB3aGljaCBub2RlIGlzCitjb25zaWRlcmVkIHRoZSBwcmltYXJ5IG5vZGUuCisKK0l0IGlzIGFkdmlzZWQgdG8gYWRkIGRpc3BsYXkjIGFsaWFzZXMgdG8gaGVscCB0aGUgT1MgZGV0ZXJtaW5lIGhvdyB0byBudW1iZXIKK3RoaW5ncy4gSWYgZGlzcGxheSMgYWxpYXNlcyBhcmUgdXNlZCwgdGhlbiBpZiB0aGUgc2ltcGxlZmIgbm9kZSBjb250YWlucyBhCisiZGlzcGxheSIgcHJvcGVydHkgdGhlbiB0aGUgL2FsaWFzZXMvZGlzcGxheSMgcGF0aCBtdXN0IHBvaW50IHRvIHRoZSBkaXNwbGF5CitodyBub2RlIHRoZSAiZGlzcGxheSIgcHJvcGVydHkgcG9pbnRzIHRvLCBvdGhlcndpc2UgaXQgbXVzdCBwb2ludCBkaXJlY3RseQordG8gdGhlIHNpbXBsZWZiIG5vZGUuCisKK0lmIGEgc2ltcGxlZmIgbm9kZSByZXByZXNlbnRzIHRoZSBwcmVmZXJyZWQgY29uc29sZSBmb3IgdXNlciBpbnRlcmFjdGlvbiwKK3RoZW4gdGhlIGNob3NlbiBub2RlJ3Mgc3Rkb3V0LXBhdGggcHJvcGVydHkgc2hvdWxkIHBvaW50IHRvIGl0LCBvciB0byB0aGUKK3ByaW1hcnkgZGlzcGxheSBodyBub2RlLCBhcyB3aXRoIGRpc3BsYXkjIGFsaWFzZXMuIElmIGRpc3BsYXkgYWxpYXNlcyBhcmUKK3VzZWQgdGhlbiBpdCBzaG91bGQgYmUgc2V0IHRvIHRoZSBhbGlhcyBpbnN0ZWFkLgorCitJdCBpcyBhZHZpc2VkIHRoYXQgZGV2aWNldHJlZSBmaWxlcyBjb250YWluIHByZS1maWxsZWQsIGRpc2FibGVkIGZyYW1lYnVmZmVyCitub2Rlcywgc28gdGhhdCB0aGUgZmlybXdhcmUgb25seSBuZWVkcyB0byB1cGRhdGUgdGhlIG1vZGUgaW5mb3JtYXRpb24gYW5kCitlbmFibGUgdGhlbS4gVGhpcyB3YXkgaWYgZS5nLiBsYXRlciBvbiBzdXBwb3J0IGZvciBtb3JlIGRpc3BsYXkgY2xvY2tzIGdldAorYWRkZWQsIHRoZSBzaW1wbGVmYiBub2RlcyB3aWxsIGFscmVhZHkgY29udGFpbiB0aGlzIGluZm8gYW5kIHRoZSBmaXJtd2FyZQorZG9lcyBub3QgbmVlZCB0byBiZSB1cGRhdGVkLgorCitJZiBwcmUtZmlsbGVkIGZyYW1lYnVmZmVyIG5vZGVzIGFyZSB1c2VkLCB0aGUgZmlybXdhcmUgbWF5IG5lZWQgZXh0cmEKK2luZm9ybWF0aW9uIHRvIGZpbmQgdGhlIHJpZ2h0IG5vZGUuIEluIHRoYXQgY2FzZSBhbiBleHRyYSBwbGF0Zm9ybSBzcGVjaWZpYworY29tcGF0aWJsZSBhbmQgcGxhdGZvcm0gc3BlY2lmaWMgcHJvcGVydGllcyBzaG91bGQgYmUgdXNlZCBhbmQgZG9jdW1lbnRlZCwKK3NlZSBlLmcuIHNpbXBsZS1mcmFtZWJ1ZmZlci1zdW54aS50eHQgLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAic2ltcGxlLWZyYW1lYnVmZmVyIgorLSByZWc6IFNob3VsZCBjb250YWluIHRoZSBsb2NhdGlvbiBhbmQgc2l6ZSBvZiB0aGUgZnJhbWVidWZmZXIgbWVtb3J5LgorLSB3aWR0aDogVGhlIHdpZHRoIG9mIHRoZSBmcmFtZWJ1ZmZlciBpbiBwaXhlbHMuCistIGhlaWdodDogVGhlIGhlaWdodCBvZiB0aGUgZnJhbWVidWZmZXIgaW4gcGl4ZWxzLgorLSBzdHJpZGU6IFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gZWFjaCBsaW5lIG9mIHRoZSBmcmFtZWJ1ZmZlci4KKy0gZm9ybWF0OiBUaGUgZm9ybWF0IG9mIHRoZSBmcmFtZWJ1ZmZlciBzdXJmYWNlLiBWYWxpZCB2YWx1ZXMgYXJlOgorICAtIHI1ZzZiNSAoMTYtYml0IHBpeGVscywgZFsxNToxMV09ciwgZFsxMDo1XT1nLCBkWzQ6MF09YikuCisgIC0gYThiOGc4cjggKDMyLWJpdCBwaXhlbHMsIGRbMzE6MjRdPWEsIGRbMjM6MTZdPWIsIGRbMTU6OF09ZywgZFs3OjBdPXIpLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjbG9ja3MgOiBMaXN0IG9mIGNsb2NrcyB1c2VkIGJ5IHRoZSBmcmFtZWJ1ZmZlci4gQ2xvY2tzIGxpc3RlZCBoZXJlCisgICAgICAgICAgIGFyZSBleHBlY3RlZCB0byBhbHJlYWR5IGJlIGNvbmZpZ3VyZWQgY29ycmVjdGx5LiBUaGUgT1MgbXVzdAorICAgICAgICAgICBlbnN1cmUgdGhlc2UgY2xvY2tzIGFyZSBub3QgbW9kaWZpZWQgb3IgZGlzYWJsZWQgd2hpbGUgdGhlCisgICAgICAgICAgIHNpbXBsZSBmcmFtZWJ1ZmZlciByZW1haW5zIGFjdGl2ZS4KKy0gZGlzcGxheSA6IHBoYW5kbGUgcG9pbnRpbmcgdG8gdGhlIHByaW1hcnkgZGlzcGxheSBoYXJkd2FyZSBub2RlCisKK0V4YW1wbGU6CisKK2FsaWFzZXMgeworCWRpc3BsYXkwID0gJmxjZGMwOworfQorCitjaG9zZW4geworCWZyYW1lYnVmZmVyMDogZnJhbWVidWZmZXJAMWQzODUwMDAgeworCQljb21wYXRpYmxlID0gInNpbXBsZS1mcmFtZWJ1ZmZlciI7CisJCXJlZyA9IDwweDFkMzg1MDAwICgxNjAwICogMTIwMCAqIDIpPjsKKwkJd2lkdGggPSA8MTYwMD47CisJCWhlaWdodCA9IDwxMjAwPjsKKwkJc3RyaWRlID0gPCgxNjAwICogMik+OworCQlmb3JtYXQgPSAicjVnNmI1IjsKKwkJY2xvY2tzID0gPCZhaGJfZ2F0ZXMgMzY+LCA8JmFoYl9nYXRlcyA0Mz4sIDwmYWhiX2dhdGVzIDQ0PjsKKwkJZGlzcGxheSA9IDwmbGNkYzA+OworCX07CisJc3Rkb3V0LXBhdGggPSAiZGlzcGxheTAiOworfTsKKworc29jQDAxYzAwMDAwIHsKKwlsY2RjMDogbGNkY0AxYzBjMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNGktYTEwLWxjZGMiOworCQkuLi4KKwl9OworfTsKKworCisqKSBPbGRlciBkZXZpY2V0cmVlIGZpbGVzIG1heSBoYXZlIGEgY29tcGF0aWJsZSA9ICJzaW1wbGUtZnJhbWVidWZmZXIiIG5vZGUKK2luIGEgZGlmZmVyZW50IHBsYWNlLCBvcGVyYXRpbmcgc3lzdGVtcyBtdXN0IGZpcnN0IGVudW1lcmF0ZSBhbnkgY29tcGF0aWJsZQorbm9kZXMgZm91bmQgdW5kZXIgY2hvc2VuIGFuZCB0aGVuIGNoZWNrIGZvciBvdGhlciBjb21wYXRpYmxlIG5vZGVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvc201MDFmYi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9zbTUwMWZiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDlmMDA5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvc201MDFmYi50eHQKQEAgLTAsMCArMSwzNCBAQAorKiBTTSBTTTUwMQorCitUaGUgU00gU001MDEgaXMgYSBMQ0QgY29udHJvbGxlciwgd2l0aCBwcm9wZXIgaGFyZHdhcmUsIGl0IGNhbiBhbHNvCitkcml2ZSBEVkkgbW9uaXRvcnMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgInNtaSxzbTUwMSIuCistIHJlZyA6IGNvbnRhaW4gdHdvIGVudHJpZXM6CisgICAgLSBGaXJzdCBlbnRyeTogU3lzdGVtIENvbmZpZ3VyYXRpb24gcmVnaXN0ZXIKKyAgICAtIFNlY29uZCBlbnRyeTogSU8gc3BhY2UgKERpc3BsYXkgQ29udHJvbGxlciByZWdpc3RlcikKKy0gaW50ZXJydXB0cyA6IFNNSSBpbnRlcnJ1cHQgdG8gdGhlIGNwdSBzaG91bGQgYmUgZGVzY3JpYmVkIGhlcmUuCistIGludGVycnVwdC1wYXJlbnQgOiB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyIHRoYXQKKyAgc2VydmljZXMgaW50ZXJydXB0cyBmb3IgdGhpcyBkZXZpY2UuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIG1vZGUgOiBzZWxlY3QgYSB2aWRlbyBtb2RlOgorICAgIDx4cmVzPng8eXJlcz5bLTxicHA+XVtAPHJlZnJlc2g+XQorLSBlZGlkIDogdmVyYmF0aW0gRURJRCBkYXRhIGJsb2NrIGRlc2NyaWJpbmcgYXR0YWNoZWQgZGlzcGxheS4KKyAgRGF0YSBmcm9tIHRoZSBkZXRhaWxlZCB0aW1pbmcgZGVzY3JpcHRvciB3aWxsIGJlIHVzZWQgdG8KKyAgcHJvZ3JhbSB0aGUgZGlzcGxheSBjb250cm9sbGVyLgorLSBsaXR0bGUtZW5kaWFuOiBhdmFpbGFibGUgb24gYmlnIGVuZGlhbiBzeXN0ZW1zLCB0bworICBzZXQgZGlmZmVyZW50IGZvcmVpZ24gZW5kaWFuLgorLSBiaWctZW5kaWFuOiBhdmFpbGFibGUgb24gbGl0dGxlIGVuZGlhbiBzeXN0ZW1zLCB0bworICBzZXQgZGlmZmVyZW50IGZvcmVpZ24gZW5kaWFuLgorCitFeGFtcGxlIGZvciBNUEM1MjAwOgorCWRpc3BsYXlAMSwwIHsKKwkJY29tcGF0aWJsZSA9ICJzbWksc201MDEiOworCQlyZWcgPSA8MSAweDAwMDAwMDAwIDB4MDA4MDAwMDAKKwkJICAgICAgIDEgMHgwM2UwMDAwMCAweDAwMjAwMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwxIDEgMz47CisJCW1vZGUgPSAiNjQweDQ4MC0zMkA2MCI7CisJCWVkaWQgPSBbZWRpZC1kYXRhXTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvc3NkMTI4OWZiLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3NzZDEyODlmYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZjZDVlNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3NzZDEyODlmYi50eHQKQEAgLTAsMCArMSwxMyBAQAorKiBTb2xvbW9uIFNTRDEyODkgRnJhbWVidWZmZXIgRHJpdmVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJzb2xvbW9uLHNzZDEyODlmYiIuIFRoZSBvbmx5IHN1cHBvcnRlZCBidXMgZm9yCisgICAgbm93IGlzIGxiYy4KKyAgLSByZWc6IFNob3VsZCBjb250YWluIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgb24gdGhlIExCQyBidXMuIFRoZSBkZXRhaWwKKyAgICB3YXMgZGVzY3JpYmVkIGluIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9sYmMudHh0CisKK0V4YW1wbGVzOgorZGlzcGxheUAyLDAgeworCWNvbXBhdGlibGUgPSAic29sb21vbixzc2QxMjg5ZmIiOworCXJlZyA9IDwweDIgMHgwMDAwIDB4MDAwND47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvc3NkMTMwN2ZiLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3NzZDEzMDdmYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIzMWVkNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3NzZDEzMDdmYi50eHQKQEAgLTAsMCArMSw1MCBAQAorKiBTb2xvbW9uIFNTRDEzMDcgRnJhbWVidWZmZXIgRHJpdmVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJzb2xvbW9uLDxjaGlwPmZiLTxidXM+Ii4gVGhlIG9ubHkgc3VwcG9ydGVkIGJ1cyBmb3IKKyAgICBub3cgaXMgaTJjLCBhbmQgdGhlIHN1cHBvcnRlZCBjaGlwcyBhcmUgc3NkMTMwNSwgc3NkMTMwNiwgc3NkMTMwNyBhbmQKKyAgICBzc2QxMzA5LgorICAtIHJlZzogU2hvdWxkIGNvbnRhaW4gYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBvbiB0aGUgSTJDIGJ1cy4gTW9zdCBsaWtlbHkKKyAgICAgICAgIDB4M2Mgb3IgMHgzZAorICAtIHB3bTogU2hvdWxkIGNvbnRhaW4gdGhlIHB3bSB0byB1c2UgYWNjb3JkaW5nIHRvIHRoZSBPRiBkZXZpY2UgdHJlZSBQV00KKyAgICAgICAgIHNwZWNpZmljYXRpb24gWzBdLiBPbmx5IHJlcXVpcmVkIGZvciB0aGUgc3NkMTMwNy4KKyAgLSByZXNldC1ncGlvczogU2hvdWxkIGNvbnRhaW4gdGhlIEdQSU8gdXNlZCB0byByZXNldCB0aGUgT0xFRCBkaXNwbGF5CisgIC0gc29sb21vbixoZWlnaHQ6IEhlaWdodCBpbiBwaXhlbCBvZiB0aGUgc2NyZWVuIGRyaXZlbiBieSB0aGUgY29udHJvbGxlcgorICAtIHNvbG9tb24sd2lkdGg6IFdpZHRoIGluIHBpeGVsIG9mIHRoZSBzY3JlZW4gZHJpdmVuIGJ5IHRoZSBjb250cm9sbGVyCisgIC0gc29sb21vbixwYWdlLW9mZnNldDogT2Zmc2V0IG9mIHBhZ2VzIChiYW5kIG9mIDggcGl4ZWxzKSB0aGF0IHRoZSBzY3JlZW4gaXMKKyAgICBtYXBwZWQgdG8uCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgIC0gcmVzZXQtYWN0aXZlLWxvdzogSXMgdGhlIHJlc2V0IGdwaW8gaXMgYWN0aXZlIG9uIHBoeXNpY2FsIGxvdz8KKyAgLSBzb2xvbW9uLHNlZ21lbnQtbm8tcmVtYXA6IERpc3BsYXkgbmVlZHMgbm9ybWFsIChub24taW52ZXJ0ZWQpIGRhdGEgY29sdW1uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBzZWdtZW50IG1hcHBpbmcKKyAgLSBzb2xvbW9uLGNvbS1zZXE6IERpc3BsYXkgdXNlcyBzZXF1ZW50aWFsIENPTSBwaW4gY29uZmlndXJhdGlvbgorICAtIHNvbG9tb24sY29tLWxycmVtYXA6IERpc3BsYXkgdXNlcyBsZWZ0LXJpZ2h0IENPTSBwaW4gcmVtYXAKKyAgLSBzb2xvbW9uLGNvbS1pbnZkaXI6IERpc3BsYXkgdXNlcyBpbnZlcnRlZCBDT00gcGluIHNjYW4gZGlyZWN0aW9uCisgIC0gc29sb21vbixjb20tb2Zmc2V0OiBOdW1iZXIgb2YgdGhlIENPTSBwaW4gd2lyZWQgdG8gdGhlIGZpcnN0IGRpc3BsYXkgbGluZQorICAtIHNvbG9tb24scHJlY2hhcmdlcDE6IExlbmd0aCBvZiBkZXNlbGVjdCBwZXJpb2QgKHBoYXNlIDEpIGluIGNsb2NrIGN5Y2xlcy4KKyAgLSBzb2xvbW9uLHByZWNoYXJnZXAyOiBMZW5ndGggb2YgcHJlY2hhcmdlIHBlcmlvZCAocGhhc2UgMikgaW4gY2xvY2sgY3ljbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbmVlZHMgdG8gYmUgdGhlIGhpZ2hlciwgdGhlIGhpZ2hlciB0aGUgY2FwYWNpdGFuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgT0xFRCdzIHBpeGVscyBpcworCitbMF06IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vcHdtLnR4dAorCitFeGFtcGxlczoKK3NzZDEzMDc6IG9sZWRAM2MgeworICAgICAgICBjb21wYXRpYmxlID0gInNvbG9tb24sc3NkMTMwN2ZiLWkyYyI7CisgICAgICAgIHJlZyA9IDwweDNjPjsKKyAgICAgICAgcHdtcyA9IDwmcHdtIDQgMzAwMD47CisgICAgICAgIHJlc2V0LWdwaW9zID0gPCZncGlvMiA3PjsKKyAgICAgICAgcmVzZXQtYWN0aXZlLWxvdzsKK307CisKK3NzZDEzMDY6IG9sZWRAM2MgeworICAgICAgICBjb21wYXRpYmxlID0gInNvbG9tb24sc3NkMTMwNmZiLWkyYyI7CisgICAgICAgIHJlZyA9IDwweDNjPjsKKyAgICAgICAgcHdtcyA9IDwmcHdtIDQgMzAwMD47CisgICAgICAgIHJlc2V0LWdwaW9zID0gPCZncGlvMiA3PjsKKyAgICAgICAgcmVzZXQtYWN0aXZlLWxvdzsKKyAgICAgICAgc29sb21vbixjb20tbHJyZW1hcDsKKyAgICAgICAgc29sb21vbixjb20taW52ZGlyOworICAgICAgICBzb2xvbW9uLGNvbS1vZmZzZXQgPSA8MzI+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3N0LHN0aWg0eHgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvc3Qsc3RpaDR4eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM1MmVkMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3N0LHN0aWg0eHgudHh0CkBAIC0wLDAgKzEsMjQxIEBACitTVE1pY3JvZWxlY3Ryb25pY3Mgc3RpaDR4eCBwbGF0Zm9ybXMKKworLSBzdGktdnRnOiB2aWRlbyB0aW1pbmcgZ2VuZXJhdG9yCisgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogInN0LHZ0ZyIKKyAgLSByZWc6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgSVAgcmVnaXN0ZXJzIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZCByZWdpb24uCisgIE9wdGlvbmFsIHByb3BlcnRpZXM6CisgIC0gaW50ZXJydXB0cyA6IFZURyBpbnRlcnJ1cHQgbnVtYmVyIHRvIHRoZSBDUFUuCisgIC0gc3Qsc2xhdmU6IHBoYW5kbGUgb24gYSBzbGF2ZSB2dGcKKworLSBzdGktdnRhYzogdmlkZW8gdGltaW5nIGFkdmFuY2VkIGludGVyIGR5ZSBjb21tdW5pY2F0aW9uIFJ4IGFuZCBUWAorICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6ICJzdCx2dGFjLW1haW4iIG9yICJzdCx2dGFjLWF1eCIKKyAgLSByZWc6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgSVAgcmVnaXN0ZXJzIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZCByZWdpb24uCisgIC0gY2xvY2tzOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOiBoYW5kbGUgaGFyZHdhcmUgSVAgbmVlZGVkIGNsb2NrcywgdGhlCisgICAgbnVtYmVyIG9mIGNsb2NrcyBtYXkgZGVwZW5kIG9mIHRoZSBTb0MgdHlwZS4KKyAgICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKyAgLSBjbG9jay1uYW1lczogbmFtZXMgb2YgdGhlIGNsb2NrcyBsaXN0ZWQgaW4gY2xvY2tzIHByb3BlcnR5IGluIHRoZSBzYW1lCisgICAgb3JkZXIuCisKKy0gc3RpLWRpc3BsYXktc3Vic3lzdGVtOiBNYXN0ZXIgZGV2aWNlIGZvciBEUk0gc3ViLWNvbXBvbmVudHMKKyAgVGhpcyBkZXZpY2UgbXVzdCBiZSB0aGUgcGFyZW50IG9mIGFsbCB0aGUgc3ViLWNvbXBvbmVudHMgYW5kIGlzIHJlc3BvbnNpYmxlCisgIG9mIGJpbmQgdGhlbS4KKyAgUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiAic3Qsc3RpLWRpc3BsYXktc3Vic3lzdGVtIgorICAtIHJhbmdlczogdG8gYWxsb3cgcHJvYmluZyBvZiBzdWJkZXZpY2VzCisKKy0gc3RpLWNvbXBvc2l0b3I6IGZyYW1lIGNvbXBvc2l0b3IgZW5naW5lCisgIG11c3QgYmUgYSBjaGlsZCBvZiBzdGktZGlzcGxheS1zdWJzeXN0ZW0KKyAgUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiAic3Qsc3RpaDxjaGlwPi1jb21wb3NpdG9yIgorICAtIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBJUCByZWdpc3RlcnMgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkIHJlZ2lvbi4KKyAgLSBjbG9ja3M6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc6IGhhbmRsZSBoYXJkd2FyZSBJUCBuZWVkZWQgY2xvY2tzLCB0aGUKKyAgICBudW1iZXIgb2YgY2xvY2tzIG1heSBkZXBlbmQgb2YgdGhlIFNvQyB0eXBlLgorICAgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorICAtIGNsb2NrLW5hbWVzOiBuYW1lcyBvZiB0aGUgY2xvY2tzIGxpc3RlZCBpbiBjbG9ja3MgcHJvcGVydHkgaW4gdGhlIHNhbWUKKyAgICBvcmRlci4KKyAgLSByZXNldHM6IHJlc2V0cyB0byBiZSB1c2VkIGJ5IHRoZSBkZXZpY2UKKyAgICBTZWUgLi4vcmVzZXQvcmVzZXQudHh0IGZvciBkZXRhaWxzLgorICAtIHJlc2V0LW5hbWVzOiBuYW1lcyBvZiB0aGUgcmVzZXRzIGxpc3RlZCBpbiByZXNldHMgcHJvcGVydHkgaW4gdGhlIHNhbWUKKyAgICBvcmRlci4KKyAgLSBzdCx2dGc6IHBoYW5kbGUocykgb24gdnRnIGRldmljZSAobWFpbiBhbmQgYXV4KSBub2Rlcy4KKworLSBzdGktdHZvdXQ6IHZpZGVvIG91dCBoYXJkd2FyZSBibG9jaworICBtdXN0IGJlIGEgY2hpbGQgb2Ygc3RpLWRpc3BsYXktc3Vic3lzdGVtCisgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogInN0LHN0aWg8Y2hpcD4tdHZvdXQiCisgIC0gcmVnOiBQaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIElQIHJlZ2lzdGVycyBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQgcmVnaW9uLgorICAtIHJlZy1uYW1lczogbmFtZXMgb2YgdGhlIG1hcHBlZCBtZW1vcnkgcmVnaW9ucyBsaXN0ZWQgaW4gcmVncyBwcm9wZXJ0eSBpbgorICAgIHRoZSBzYW1lIG9yZGVyLgorICAtIHJlc2V0czogcmVzZXRzIHRvIGJlIHVzZWQgYnkgdGhlIGRldmljZQorICAgIFNlZSAuLi9yZXNldC9yZXNldC50eHQgZm9yIGRldGFpbHMuCisgIC0gcmVzZXQtbmFtZXM6IG5hbWVzIG9mIHRoZSByZXNldHMgbGlzdGVkIGluIHJlc2V0cyBwcm9wZXJ0eSBpbiB0aGUgc2FtZQorICAgIG9yZGVyLgorCistIHN0aS1oZG1pOiBoZG1pIG91dHB1dCBibG9jaworICBtdXN0IGJlIGEgY2hpbGQgb2Ygc3RpLWRpc3BsYXktc3Vic3lzdGVtCisgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogInN0LHN0aWg8Y2hpcD4taGRtaSI7CisgIC0gcmVnOiBQaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIElQIHJlZ2lzdGVycyBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQgcmVnaW9uLgorICAtIHJlZy1uYW1lczogbmFtZXMgb2YgdGhlIG1hcHBlZCBtZW1vcnkgcmVnaW9ucyBsaXN0ZWQgaW4gcmVncyBwcm9wZXJ0eSBpbgorICAgIHRoZSBzYW1lIG9yZGVyLgorICAtIGludGVycnVwdHMgOiBIRE1JIGludGVycnVwdCBudW1iZXIgdG8gdGhlIENQVS4KKyAgLSBpbnRlcnJ1cHQtbmFtZXM6IG5hbWVzIG9mIHRoZSBpbnRlcnJ1cHRzIGxpc3RlZCBpbiBpbnRlcnJ1cHRzIHByb3BlcnR5IGluCisgICAgdGhlIHNhbWUgb3JkZXIKKyAgLSBjbG9ja3M6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc6IGhhbmRsZSBoYXJkd2FyZSBJUCBuZWVkZWQgY2xvY2tzLCB0aGUKKyAgICBudW1iZXIgb2YgY2xvY2tzIG1heSBkZXBlbmQgb2YgdGhlIFNvQyB0eXBlLgorICAtIGNsb2NrLW5hbWVzOiBuYW1lcyBvZiB0aGUgY2xvY2tzIGxpc3RlZCBpbiBjbG9ja3MgcHJvcGVydHkgaW4gdGhlIHNhbWUKKyAgICBvcmRlci4KKyAgLSBkZGM6IHBoYW5kbGUgb2YgYW4gSTJDIGNvbnRyb2xsZXIgdXNlZCBmb3IgRERDIEVESUQgcHJvYmluZworCitzdGktaGRhOgorICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICBtdXN0IGJlIGEgY2hpbGQgb2Ygc3RpLWRpc3BsYXktc3Vic3lzdGVtCisgIC0gY29tcGF0aWJsZTogInN0LHN0aWg8Y2hpcD4taGRhIgorICAtIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBJUCByZWdpc3RlcnMgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkIHJlZ2lvbi4KKyAgLSByZWctbmFtZXM6IG5hbWVzIG9mIHRoZSBtYXBwZWQgbWVtb3J5IHJlZ2lvbnMgbGlzdGVkIGluIHJlZ3MgcHJvcGVydHkgaW4KKyAgICB0aGUgc2FtZSBvcmRlci4KKyAgLSBjbG9ja3M6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc6IGhhbmRsZSBoYXJkd2FyZSBJUCBuZWVkZWQgY2xvY2tzLCB0aGUKKyAgICBudW1iZXIgb2YgY2xvY2tzIG1heSBkZXBlbmQgb2YgdGhlIFNvQyB0eXBlLgorICAgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorICAtIGNsb2NrLW5hbWVzOiBuYW1lcyBvZiB0aGUgY2xvY2tzIGxpc3RlZCBpbiBjbG9ja3MgcHJvcGVydHkgaW4gdGhlIHNhbWUKKyAgICBvcmRlci4KKworc3RpLWR2bzoKKyAgUmVxdWlyZWQgcHJvcGVydGllczoKKyAgbXVzdCBiZSBhIGNoaWxkIG9mIHN0aS1kaXNwbGF5LXN1YnN5c3RlbQorICAtIGNvbXBhdGlibGU6ICJzdCxzdGloPGNoaXA+LWR2byIKKyAgLSByZWc6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgSVAgcmVnaXN0ZXJzIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZCByZWdpb24uCisgIC0gcmVnLW5hbWVzOiBuYW1lcyBvZiB0aGUgbWFwcGVkIG1lbW9yeSByZWdpb25zIGxpc3RlZCBpbiByZWdzIHByb3BlcnR5IGluCisgICAgdGhlIHNhbWUgb3JkZXIuCisgIC0gY2xvY2tzOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOiBoYW5kbGUgaGFyZHdhcmUgSVAgbmVlZGVkIGNsb2NrcywgdGhlCisgICAgbnVtYmVyIG9mIGNsb2NrcyBtYXkgZGVwZW5kIG9mIHRoZSBTb0MgdHlwZS4KKyAgICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKyAgLSBjbG9jay1uYW1lczogbmFtZXMgb2YgdGhlIGNsb2NrcyBsaXN0ZWQgaW4gY2xvY2tzIHByb3BlcnR5IGluIHRoZSBzYW1lCisgICAgb3JkZXIuCisgIC0gcGluY3RybC0wOiBwaW4gY29udHJvbCBoYW5kbGUKKyAgLSBwaW5jdHJsLW5hbWVzOiBuYW1lcyBvZiB0aGUgcGluIGNvbnRyb2wgc3RhdGVzIHRvIHVzZQorICAtIHN0aSxwYW5lbDogcGhhbmRsZSBvZiB0aGUgcGFuZWwgY29ubmVjdGVkIHRvIHRoZSBEVk8gb3V0cHV0CisKK3N0aS1ocXZkcDoKKyAgbXVzdCBiZSBhIGNoaWxkIG9mIHN0aS1kaXNwbGF5LXN1YnN5c3RlbQorICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6ICJzdCxzdGloPGNoaXA+LWhxdmRwIgorICAtIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBJUCByZWdpc3RlcnMgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkIHJlZ2lvbi4KKyAgLSBjbG9ja3M6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc6IGhhbmRsZSBoYXJkd2FyZSBJUCBuZWVkZWQgY2xvY2tzLCB0aGUKKyAgICBudW1iZXIgb2YgY2xvY2tzIG1heSBkZXBlbmQgb2YgdGhlIFNvQyB0eXBlLgorICAgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorICAtIGNsb2NrLW5hbWVzOiBuYW1lcyBvZiB0aGUgY2xvY2tzIGxpc3RlZCBpbiBjbG9ja3MgcHJvcGVydHkgaW4gdGhlIHNhbWUKKyAgICBvcmRlci4KKyAgLSByZXNldHM6IHJlc2V0cyB0byBiZSB1c2VkIGJ5IHRoZSBkZXZpY2UKKyAgICBTZWUgLi4vcmVzZXQvcmVzZXQudHh0IGZvciBkZXRhaWxzLgorICAtIHJlc2V0LW5hbWVzOiBuYW1lcyBvZiB0aGUgcmVzZXRzIGxpc3RlZCBpbiByZXNldHMgcHJvcGVydHkgaW4gdGhlIHNhbWUKKyAgICBvcmRlci4KKyAgLSBzdCx2dGc6IHBoYW5kbGUgb24gdnRnIG1haW4gZGV2aWNlIG5vZGUuCisKK0V4YW1wbGU6CisKKy8geworCS4uLgorCisJdnRnX21haW5fc2xhdmU6IHN0aS12dGctbWFpbi1zbGF2ZUBmZTg1QTgwMCB7CisJCWNvbXBhdGlibGUJPSAic3QsdnRnIjsKKwkJcmVnCQk9IDwweGZlODVBODAwIDB4MzAwPjsKKwkJaW50ZXJydXB0cwk9IDxHSUNfU1BJIDE3NSBJUlFfVFlQRV9OT05FPjsKKwl9OworCisJdnRnX21haW46IHN0aS12dGctbWFpbi1tYXN0ZXJAZmQzNDgwMDAgeworCQljb21wYXRpYmxlCT0gInN0LHZ0ZyI7CisJCXJlZwkJPSA8MHhmZDM0ODAwMCAweDQwMD47CisJCXN0LHNsYXZlCT0gPCZ2dGdfbWFpbl9zbGF2ZT47CisJfTsKKworCXZ0Z19hdXhfc2xhdmU6IHN0aS12dGctYXV4LXNsYXZlQGZkMzQ4NDAwIHsKKwkJY29tcGF0aWJsZQk9ICJzdCx2dGciOworCQlyZWcJCT0gPDB4ZmU4NTgyMDAgMHgzMDA+OworCQlpbnRlcnJ1cHRzCT0gPEdJQ19TUEkgMTc2IElSUV9UWVBFX05PTkU+OworCX07CisKKwl2dGdfYXV4OiBzdGktdnRnLWF1eC1tYXN0ZXJAZmQzNDg0MDAgeworCQljb21wYXRpYmxlCT0gInN0LHZ0ZyI7CisJCXJlZwkJPSA8MHhmZDM0ODQwMCAweDQwMD47CisJCXN0LHNsYXZlCT0gPCZ2dGdfYXV4X3NsYXZlPjsKKwl9OworCisKKwlzdGktdnRhYy1yeC1tYWluQGZlZTgyODAwIHsKKwkJY29tcGF0aWJsZQk9ICJzdCx2dGFjLW1haW4iOworCQlyZWcJCT0gPDB4ZmVlODI4MDAgMHgyMDA+OworCQljbG9jay1uYW1lcyAgICAgPSAidnRhYyI7CisJCWNsb2NrcyAgICAgICAgICA9IDwmY2xrX21fYTJfZGl2MCBDTEtfTV9WVEFDX01BSU5fUEhZPjsKKwl9OworCisJc3RpLXZ0YWMtcngtYXV4QGZlZTgyYTAwIHsKKwkJY29tcGF0aWJsZQk9ICJzdCx2dGFjLWF1eCI7CisJCXJlZwkJPSA8MHhmZWU4MmEwMCAweDIwMD47CisJCWNsb2NrLW5hbWVzICAgICA9ICJ2dGFjIjsKKwkJY2xvY2tzICAgICAgICAgID0gPCZjbGtfbV9hMl9kaXYwIENMS19NX1ZUQUNfQVVYX1BIWT47CisJfTsKKworCXN0aS12dGFjLXR4LW1haW5AZmQzNDkwMDAgeworCQljb21wYXRpYmxlCT0gInN0LHZ0YWMtbWFpbiI7CisJCXJlZwkJPSA8MHhmZDM0OTAwMCAweDIwMD4sIDwweGZkMzIwMDAwIDB4MTAwMDA+OworCQljbG9jay1uYW1lcyAgICAgPSAidnRhYyI7CisJCWNsb2NrcyAgICAgICAgICAgPSA8JmNsa19zX2ExX2hzIENMS19TX1ZUQUNfVFhfUEhZPjsKKwl9OworCisJc3RpLXZ0YWMtdHgtYXV4QGZkMzQ5MjAwIHsKKwkJY29tcGF0aWJsZQk9ICJzdCx2dGFjLWF1eCI7CisJCXJlZwkJPSA8MHhmZDM0OTIwMCAweDIwMD4sIDwweGZkMzIwMDAwIDB4MTAwMDA+OworCQljbG9jay1uYW1lcyAgICAgPSAidnRhYyI7CisJCWNsb2NrcyAgICAgICAgICA9IDwmY2xrX3NfYTFfaHMgQ0xLX1NfVlRBQ19UWF9QSFk+OworCX07CisKKwlzdGktZGlzcGxheS1zdWJzeXN0ZW0geworCQljb21wYXRpYmxlID0gInN0LHN0aS1kaXNwbGF5LXN1YnN5c3RlbSI7CisJCXJhbmdlczsKKworCQlzdGktY29tcG9zaXRvckBmZDM0MDAwMCB7CisJCQljb21wYXRpYmxlCT0gInN0LHN0aWg0MTYtY29tcG9zaXRvciI7CisJCQlyZWcJCT0gPDB4ZmQzNDAwMDAgMHgxMDAwPjsKKwkJCWNsb2NrLW5hbWVzCT0gImNvbXBvX21haW4iLCAiY29tcG9fYXV4IiwKKwkJCSAgICAgICAgICAgICAgICAgICJwaXhfbWFpbiIsICJwaXhfYXV4IjsKKwkJCWNsb2NrcyAgICAgICAgICA9IDwmY2xrX21fYTJfZGl2MSBDTEtfTV9DT01QT19NQUlOPiwgPCZjbGtfbV9hMl9kaXYxIENMS19NX0NPTVBPX0FVWD4sCisJCQkJCSAgPCZjbG9ja2dlbl9jX3ZjYyBDTEtfU19QSVhfTUFJTj4sIDwmY2xvY2tnZW5fY192Y2MgQ0xLX1NfUElYX0FVWD47CisJCQlyZXNldC1uYW1lcyAgICAgPSAiY29tcG8tbWFpbiIsICJjb21wby1hdXgiOworCQkJcmVzZXRzICAgICAgICAgID0gPCZzb2Z0cmVzZXQgU1RJSDQxNl9DT01QT19NX1NPRlRSRVNFVD4sIDwmc29mdHJlc2V0IFNUSUg0MTZfQ09NUE9fQV9TT0ZUUkVTRVQ+OworCQkJc3QsdnRnCQk9IDwmdnRnX21haW4+LCA8JnZ0Z19hdXg+OworCQl9OworCisJCXN0aS10dm91dEBmZTAwMDAwMCB7CisJCQljb21wYXRpYmxlCT0gInN0LHN0aWg0MTYtdHZvdXQiOworCQkJcmVnCQk9IDwweGZlMDAwMDAwIDB4MTAwMD4sIDwweGZlODVhMDAwIDB4NDAwPiwgPDB4ZmU4MzAwMDAgMHgxMDAwMD47CisJCQlyZWctbmFtZXMJPSAidHZvdXQtcmVnIiwgImhkYS1yZWciLCAic3lzY2ZnIjsKKwkJCXJlc2V0LW5hbWVzICAgICA9ICJ0dm91dCI7CisJCQlyZXNldHMgICAgICAgICAgPSA8JnNvZnRyZXNldCBTVElINDE2X0hEVFZPVVRfU09GVFJFU0VUPjsKKwkJfTsKKworCQlzdGktaGRtaUBmZTg1YzAwMCB7CisJCQljb21wYXRpYmxlCT0gInN0LHN0aWg0MTYtaGRtaSI7CisJCQlyZWcJCT0gPDB4ZmU4NWMwMDAgMHgxMDAwPiwgPDB4ZmU4MzAwMDAgMHgxMDAwMD47CisJCQlyZWctbmFtZXMJPSAiaGRtaS1yZWciLCAic3lzY2ZnIjsKKwkJCWludGVycnVwdHMJPSA8R0lDX1NQSSAxNzMgSVJRX1RZUEVfTk9ORT47CisJCQlpbnRlcnJ1cHQtbmFtZXMJPSAiaXJxIjsKKwkJCWNsb2NrLW5hbWVzCT0gInBpeCIsICJ0bWRzIiwgInBoeSIsICJhdWRpbyI7CisJCQljbG9ja3MgICAgICAgICAgPSA8JmNsb2NrZ2VuX2NfdmNjIENMS19TX1BJWF9IRE1JPiwgPCZjbG9ja2dlbl9jX3ZjYyBDTEtfU19UTURTX0hETUk+LCA8JmNsb2NrZ2VuX2NfdmNjIENMS19TX0hETUlfUkVKRUNUX1BMTD4sIDwmY2xvY2tnZW5fYjEgQ0xLX1NfUENNXzA+OworCQl9OworCisJCXN0aS1oZGFAZmU4NWEwMDAgeworCQkJY29tcGF0aWJsZQk9ICJzdCxzdGloNDE2LWhkYSI7CisJCQlyZWcJCT0gPDB4ZmU4NWEwMDAgMHg0MDA+LCA8MHhmZTgzMDg1YyAweDQ+OworCQkJcmVnLW5hbWVzCT0gImhkYS1yZWciLCAidmlkZW8tZGFjcy1jdHJsIjsKKwkJCWNsb2NrLW5hbWVzCT0gInBpeCIsICJoZGRhYyI7CisJCQljbG9ja3MgICAgICAgICAgPSA8JmNsb2NrZ2VuX2NfdmNjIENMS19TX1BJWF9IRD4sIDwmY2xvY2tnZW5fY192Y2MgQ0xLX1NfSEREQUM+OworCQl9OworCisJCXN0aS1kdm9AOGQwMDQwMCB7CisJCQljb21wYXRpYmxlCT0gInN0LHN0aWg0MDctZHZvIjsKKwkJCXJlZwkJPSA8MHg4ZDAwNDAwIDB4MjAwPjsKKwkJCXJlZy1uYW1lcwk9ICJkdm8tcmVnIjsKKwkJCWNsb2NrLW5hbWVzCT0gImR2b19waXgiLCAiZHZvIiwKKwkJCQkJICAibWFpbl9wYXJlbnQiLCAiYXV4X3BhcmVudCI7CisJCQljbG9ja3MJCT0gPCZjbGtfc19kMl9mbGV4Z2VuIENMS19QSVhfRFZPPiwgPCZjbGtfc19kMl9mbGV4Z2VuIENMS19EVk8+LAorCQkJCQkgIDwmY2xrX3NfZDJfcXVhZGZzIDA+LCA8JmNsa19zX2QyX3F1YWRmcyAxPjsKKwkJCXBpbmN0cmwtbmFtZXMJPSAiZGVmYXVsdCI7CisJCQlwaW5jdHJsLTAJPSA8JnBpbmN0cmxfZHZvPjsKKwkJCXN0aSxwYW5lbAk9IDwmcGFuZWxfZHZvPjsKKwkJfTsKKworCQlzdGktaHF2ZHBAOWMwMDAwMDAgeworCQkJCWNvbXBhdGlibGUJPSAic3Qsc3RpaDQwNy1ocXZkcCI7CisJCQkJcmVnCQk9IDwweDlDMDAwMDAgMHgxMDAwMDA+OworCQkJCWNsb2NrLW5hbWVzCT0gImhxdmRwIiwgInBpeF9tYWluIjsKKwkJCQljbG9ja3MJCT0gPCZjbGtfc19jMF9mbGV4Z2VuIENMS19NQUlOX0RJU1A+LCA8JmNsa19zX2QyX2ZsZXhnZW4gQ0xLX1BJWF9NQUlOX0RJU1A+OworCQkJCXJlc2V0LW5hbWVzICAgICA9ICJocXZkcCI7CisJCQkJcmVzZXRzICAgICAgICAgID0gPCZzb2Z0cmVzZXQgU1RJSDQwN19IRFFWRFBfU09GVFJFU0VUPjsKKwkJCQlzdCx2dGcJCT0gPCZ2dGdfbWFpbj47CisJCX07CisJfTsKKwkuLi4KK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90ZWdyYS9udmlkaWEsdGVncmExMTQtbWlwaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90ZWdyYS9udmlkaWEsdGVncmExMTQtbWlwaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRhMjVjZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RlZ3JhL252aWRpYSx0ZWdyYTExNC1taXBpLnR4dApAQCAtMCwwICsxLDQxIEBACitOVklESUEgVGVncmEgTUlQSSBwYWQgY2FsaWJyYXRpb24gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAibnZpZGlhLHRlZ3JhPGNoaXA+LW1pcGkiCistIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlcnMuCistIGNsb2NrczogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIGNsb2NrLW5hbWVzLgorICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKy0gY2xvY2stbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIC0gbWlwaS1jYWwKKy0gI252aWRpYSxtaXBpLWNhbGlicmF0ZS1jZWxsczogU2hvdWxkIGJlIDEuIFRoZSBjZWxsIGlzIGEgYml0bWFzayBvZiB0aGUgcGFkcworICB0aGF0IG5lZWQgdG8gYmUgY2FsaWJyYXRlZCBmb3IgYSBnaXZlbiBkZXZpY2UuCisKK1VzZXIgbm9kZXMgbmVlZCB0byBjb250YWluIGFuIG52aWRpYSxtaXBpLWNhbGlicmF0ZSBwcm9wZXJ0eSB0aGF0IGhhcyBhCitwaGFuZGxlIHRvIHJlZmVyIHRvIHRoZSBjYWxpYnJhdGlvbiBjb250cm9sbGVyIG5vZGUgYW5kIGEgYml0bWFzayBvZiB0aGUgcGFkcwordGhhdCBuZWVkIHRvIGJlIGNhbGlicmF0ZWQuCisKK0V4YW1wbGU6CisKKwltaXBpOiBtaXBpQDcwMGUzMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJudmlkaWEsdGVncmExMTQtbWlwaSI7CisJCXJlZyA9IDwweDcwMGUzMDAwIDB4MTAwPjsKKwkJY2xvY2tzID0gPCZ0ZWdyYV9jYXIgVEVHUkExMTRfQ0xLX01JUElfQ0FMPjsKKwkJY2xvY2stbmFtZXMgPSAibWlwaS1jYWwiOworCQkjbnZpZGlhLG1pcGktY2FsaWJyYXRlLWNlbGxzID0gPDE+OworCX07CisKKwkuLi4KKworCWhvc3QxeEA1MDAwMDAwMCB7CisJCS4uLgorCisJCWRzaUA1NDMwMDAwMCB7CisJCQkuLi4KKworCQkJbnZpZGlhLG1pcGktY2FsaWJyYXRlID0gPCZtaXBpIDB4MDYwPjsKKworCQkJLi4uCisJCX07CisKKwkJLi4uCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RlZ3JhL252aWRpYSx0ZWdyYTIwLWhvc3QxeC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90ZWdyYS9udmlkaWEsdGVncmEyMC1ob3N0MXgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzYmQ4YzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90ZWdyYS9udmlkaWEsdGVncmEyMC1ob3N0MXgudHh0CkBAIC0wLDAgKzEsMzgwIEBACitOVklESUEgVGVncmEgaG9zdDF4CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJudmlkaWEsdGVncmE8Y2hpcD4taG9zdDF4IgorLSByZWc6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBjb250cm9sbGVyJ3MgcmVnaXN0ZXJzLgorLSBpbnRlcnJ1cHRzOiBUaGUgaW50ZXJydXB0IG91dHB1dHMgZnJvbSB0aGUgY29udHJvbGxlci4KKy0gI2FkZHJlc3MtY2VsbHM6IFRoZSBudW1iZXIgb2YgY2VsbHMgdXNlZCB0byByZXByZXNlbnQgcGh5c2ljYWwgYmFzZSBhZGRyZXNzZXMKKyAgaW4gdGhlIGhvc3QxeCBhZGRyZXNzIHNwYWNlLiBTaG91bGQgYmUgMS4KKy0gI3NpemUtY2VsbHM6IFRoZSBudW1iZXIgb2YgY2VsbHMgdXNlZCB0byByZXByZXNlbnQgdGhlIHNpemUgb2YgYW4gYWRkcmVzcworICByYW5nZSBpbiB0aGUgaG9zdDF4IGFkZHJlc3Mgc3BhY2UuIFNob3VsZCBiZSAxLgorLSByYW5nZXM6IFRoZSBtYXBwaW5nIG9mIHRoZSBob3N0MXggYWRkcmVzcyBzcGFjZSB0byB0aGUgQ1BVIGFkZHJlc3Mgc3BhY2UuCistIGNsb2NrczogTXVzdCBjb250YWluIG9uZSBlbnRyeSwgZm9yIHRoZSBtb2R1bGUgY2xvY2suCisgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorLSByZXNldHM6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiByZXNldC1uYW1lcy4KKyAgU2VlIC4uL3Jlc2V0L3Jlc2V0LnR4dCBmb3IgZGV0YWlscy4KKy0gcmVzZXQtbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIC0gaG9zdDF4CisKK1RoZSBob3N0MXggdG9wLWxldmVsIG5vZGUgZGVmaW5lcyBhIG51bWJlciBvZiBjaGlsZHJlbiwgZWFjaCByZXByZXNlbnRpbmcgb25lCitvZiB0aGUgZm9sbG93aW5nIGhvc3QxeCBjbGllbnQgbW9kdWxlczoKKworLSBtcGU6IHZpZGVvIGVuY29kZXIKKworICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6ICJudmlkaWEsdGVncmE8Y2hpcD4tbXBlIgorICAtIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlcnMuCisgIC0gaW50ZXJydXB0czogVGhlIGludGVycnVwdCBvdXRwdXRzIGZyb20gdGhlIGNvbnRyb2xsZXIuCisgIC0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gb25lIGVudHJ5LCBmb3IgdGhlIG1vZHVsZSBjbG9jay4KKyAgICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKyAgLSByZXNldHM6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiByZXNldC1uYW1lcy4KKyAgICBTZWUgLi4vcmVzZXQvcmVzZXQudHh0IGZvciBkZXRhaWxzLgorICAtIHJlc2V0LW5hbWVzOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAgIC0gbXBlCisKKy0gdmk6IHZpZGVvIGlucHV0CisKKyAgUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiAibnZpZGlhLHRlZ3JhPGNoaXA+LXZpIgorICAtIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlcnMuCisgIC0gaW50ZXJydXB0czogVGhlIGludGVycnVwdCBvdXRwdXRzIGZyb20gdGhlIGNvbnRyb2xsZXIuCisgIC0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gb25lIGVudHJ5LCBmb3IgdGhlIG1vZHVsZSBjbG9jay4KKyAgICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKyAgLSByZXNldHM6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiByZXNldC1uYW1lcy4KKyAgICBTZWUgLi4vcmVzZXQvcmVzZXQudHh0IGZvciBkZXRhaWxzLgorICAtIHJlc2V0LW5hbWVzOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAgIC0gdmkKKworLSBlcHA6IGVuY29kZXIgcHJlLXByb2Nlc3NvcgorCisgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogIm52aWRpYSx0ZWdyYTxjaGlwPi1lcHAiCisgIC0gcmVnOiBQaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgY29udHJvbGxlcidzIHJlZ2lzdGVycy4KKyAgLSBpbnRlcnJ1cHRzOiBUaGUgaW50ZXJydXB0IG91dHB1dHMgZnJvbSB0aGUgY29udHJvbGxlci4KKyAgLSBjbG9ja3M6IE11c3QgY29udGFpbiBvbmUgZW50cnksIGZvciB0aGUgbW9kdWxlIGNsb2NrLgorICAgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorICAtIHJlc2V0czogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIHJlc2V0LW5hbWVzLgorICAgIFNlZSAuLi9yZXNldC9yZXNldC50eHQgZm9yIGRldGFpbHMuCisgIC0gcmVzZXQtbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgICAgLSBlcHAKKworLSBpc3A6IGltYWdlIHNpZ25hbCBwcm9jZXNzb3IKKworICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6ICJudmlkaWEsdGVncmE8Y2hpcD4taXNwIgorICAtIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlcnMuCisgIC0gaW50ZXJydXB0czogVGhlIGludGVycnVwdCBvdXRwdXRzIGZyb20gdGhlIGNvbnRyb2xsZXIuCisgIC0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gb25lIGVudHJ5LCBmb3IgdGhlIG1vZHVsZSBjbG9jay4KKyAgICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKyAgLSByZXNldHM6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiByZXNldC1uYW1lcy4KKyAgICBTZWUgLi4vcmVzZXQvcmVzZXQudHh0IGZvciBkZXRhaWxzLgorICAtIHJlc2V0LW5hbWVzOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAgIC0gaXNwCisKKy0gZ3IyZDogMkQgZ3JhcGhpY3MgZW5naW5lCisKKyAgUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiAibnZpZGlhLHRlZ3JhPGNoaXA+LWdyMmQiCisgIC0gcmVnOiBQaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgY29udHJvbGxlcidzIHJlZ2lzdGVycy4KKyAgLSBpbnRlcnJ1cHRzOiBUaGUgaW50ZXJydXB0IG91dHB1dHMgZnJvbSB0aGUgY29udHJvbGxlci4KKyAgLSBjbG9ja3M6IE11c3QgY29udGFpbiBvbmUgZW50cnksIGZvciB0aGUgbW9kdWxlIGNsb2NrLgorICAgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorICAtIHJlc2V0czogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIHJlc2V0LW5hbWVzLgorICAgIFNlZSAuLi9yZXNldC9yZXNldC50eHQgZm9yIGRldGFpbHMuCisgIC0gcmVzZXQtbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgICAgLSAyZAorCistIGdyM2Q6IDNEIGdyYXBoaWNzIGVuZ2luZQorCisgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogIm52aWRpYSx0ZWdyYTxjaGlwPi1ncjNkIgorICAtIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlcnMuCisgIC0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCisgICAgU2VlIC4uL2Nsb2Nrcy9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCisgIC0gY2xvY2stbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgICAgKFRoaXMgcHJvcGVydHkgbWF5IGJlIG9taXR0ZWQgaWYgdGhlIG9ubHkgY2xvY2sgaW4gdGhlIGxpc3QgaXMgIjNkIikKKyAgICAtIDNkCisgICAgICBUaGlzIE1VU1QgYmUgdGhlIGZpcnN0IGVudHJ5LgorICAgIC0gM2QyIChPbmx5IHJlcXVpcmVkIG9uIFNvQ3Mgd2l0aCB0d28gM0QgY2xvY2tzKQorICAtIHJlc2V0czogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIHJlc2V0LW5hbWVzLgorICAgIFNlZSAuLi9yZXNldC9yZXNldC50eHQgZm9yIGRldGFpbHMuCisgIC0gcmVzZXQtbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgICAgLSAzZAorICAgIC0gM2QyIChPbmx5IHJlcXVpcmVkIG9uIFNvQ3Mgd2l0aCB0d28gM0QgY2xvY2tzKQorCistIGRjOiBkaXNwbGF5IGNvbnRyb2xsZXIKKworICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6ICJudmlkaWEsdGVncmE8Y2hpcD4tZGMiCisgIC0gcmVnOiBQaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgY29udHJvbGxlcidzIHJlZ2lzdGVycy4KKyAgLSBpbnRlcnJ1cHRzOiBUaGUgaW50ZXJydXB0IG91dHB1dHMgZnJvbSB0aGUgY29udHJvbGxlci4KKyAgLSBjbG9ja3M6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKyAgICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKyAgLSBjbG9jay1uYW1lczogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgICAtIGRjCisgICAgICBUaGlzIE1VU1QgYmUgdGhlIGZpcnN0IGVudHJ5LgorICAgIC0gcGFyZW50CisgIC0gcmVzZXRzOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gcmVzZXQtbmFtZXMuCisgICAgU2VlIC4uL3Jlc2V0L3Jlc2V0LnR4dCBmb3IgZGV0YWlscy4KKyAgLSByZXNldC1uYW1lczogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgICAtIGRjCisgIC0gbnZpZGlhLGhlYWQ6IFRoZSBudW1iZXIgb2YgdGhlIGRpc3BsYXkgY29udHJvbGxlciBoZWFkLiBUaGlzIGlzIHVzZWQgdG8KKyAgICBzZXR1cCB0aGUgdmFyaW91cyB0eXBlcyBvZiBvdXRwdXQgdG8gcmVjZWl2ZSB2aWRlbyBkYXRhIGZyb20gdGhlIGdpdmVuCisgICAgaGVhZC4KKworICBFYWNoIGRpc3BsYXkgY29udHJvbGxlciBub2RlIGhhcyBhIGNoaWxkIG5vZGUsIG5hbWVkICJyZ2IiLCB0aGF0IHJlcHJlc2VudHMKKyAgdGhlIFJHQiBvdXRwdXQgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb250cm9sbGVyLiBJdCBjYW4gdGFrZSB0aGUgZm9sbG93aW5nCisgIG9wdGlvbmFsIHByb3BlcnRpZXM6CisgIC0gbnZpZGlhLGRkYy1pMmMtYnVzOiBwaGFuZGxlIG9mIGFuIEkyQyBjb250cm9sbGVyIHVzZWQgZm9yIEREQyBFRElEIHByb2JpbmcKKyAgLSBudmlkaWEsaHBkLWdwaW86IHNwZWNpZmllcyBhIEdQSU8gdXNlZCBmb3IgaG90cGx1ZyBkZXRlY3Rpb24KKyAgLSBudmlkaWEsZWRpZDogc3VwcGxpZXMgYSBiaW5hcnkgRURJRCBibG9iCisgIC0gbnZpZGlhLHBhbmVsOiBwaGFuZGxlIG9mIGEgZGlzcGxheSBwYW5lbAorCistIGhkbWk6IEhpZ2ggRGVmaW5pdGlvbiBNdWx0aW1lZGlhIEludGVyZmFjZQorCisgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogIm52aWRpYSx0ZWdyYTxjaGlwPi1oZG1pIgorICAtIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlcnMuCisgIC0gaW50ZXJydXB0czogVGhlIGludGVycnVwdCBvdXRwdXRzIGZyb20gdGhlIGNvbnRyb2xsZXIuCisgIC0gaGRtaS1zdXBwbHk6IHN1cHBseSBmb3IgdGhlICs1ViBIRE1JIGNvbm5lY3RvciBwaW4KKyAgLSB2ZGQtc3VwcGx5OiByZWd1bGF0b3IgZm9yIHN1cHBseSB2b2x0YWdlCisgIC0gcGxsLXN1cHBseTogcmVndWxhdG9yIGZvciBQTEwKKyAgLSBjbG9ja3M6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKyAgICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKyAgLSBjbG9jay1uYW1lczogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgICAtIGhkbWkKKyAgICAgIFRoaXMgTVVTVCBiZSB0aGUgZmlyc3QgZW50cnkuCisgICAgLSBwYXJlbnQKKyAgLSByZXNldHM6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiByZXNldC1uYW1lcy4KKyAgICBTZWUgLi4vcmVzZXQvcmVzZXQudHh0IGZvciBkZXRhaWxzLgorICAtIHJlc2V0LW5hbWVzOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAgIC0gaGRtaQorCisgIE9wdGlvbmFsIHByb3BlcnRpZXM6CisgIC0gbnZpZGlhLGRkYy1pMmMtYnVzOiBwaGFuZGxlIG9mIGFuIEkyQyBjb250cm9sbGVyIHVzZWQgZm9yIEREQyBFRElEIHByb2JpbmcKKyAgLSBudmlkaWEsaHBkLWdwaW86IHNwZWNpZmllcyBhIEdQSU8gdXNlZCBmb3IgaG90cGx1ZyBkZXRlY3Rpb24KKyAgLSBudmlkaWEsZWRpZDogc3VwcGxpZXMgYSBiaW5hcnkgRURJRCBibG9iCisgIC0gbnZpZGlhLHBhbmVsOiBwaGFuZGxlIG9mIGEgZGlzcGxheSBwYW5lbAorCistIHR2bzogVFYgZW5jb2RlciBvdXRwdXQKKworICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6ICJudmlkaWEsdGVncmE8Y2hpcD4tdHZvIgorICAtIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlcnMuCisgIC0gaW50ZXJydXB0czogVGhlIGludGVycnVwdCBvdXRwdXRzIGZyb20gdGhlIGNvbnRyb2xsZXIuCisgIC0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gb25lIGVudHJ5LCBmb3IgdGhlIG1vZHVsZSBjbG9jay4KKyAgICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKworLSBkc2k6IGRpc3BsYXkgc2VyaWFsIGludGVyZmFjZQorCisgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogIm52aWRpYSx0ZWdyYTxjaGlwPi1kc2kiCisgIC0gcmVnOiBQaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgY29udHJvbGxlcidzIHJlZ2lzdGVycy4KKyAgLSBjbG9ja3M6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKyAgICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKyAgLSBjbG9jay1uYW1lczogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgICAtIGRzaQorICAgICAgVGhpcyBNVVNUIGJlIHRoZSBmaXJzdCBlbnRyeS4KKyAgICAtIGxwCisgICAgLSBwYXJlbnQKKyAgLSByZXNldHM6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiByZXNldC1uYW1lcy4KKyAgICBTZWUgLi4vcmVzZXQvcmVzZXQudHh0IGZvciBkZXRhaWxzLgorICAtIHJlc2V0LW5hbWVzOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAgIC0gZHNpCisgIC0gYXZkZC1kc2ktc3VwcGx5OiBwaGFuZGxlIG9mIGEgc3VwcGx5IHRoYXQgcG93ZXJzIHRoZSBEU0kgY29udHJvbGxlcgorICAtIG52aWRpYSxtaXBpLWNhbGlicmF0ZTogU2hvdWxkIGNvbnRhaW4gYSBwaGFuZGxlIGFuZCBhIHNwZWNpZmllciBzcGVjaWZ5aW5nCisgICAgd2hpY2ggcGFkcyBhcmUgdXNlZCBieSB0aGlzIERTSSBvdXRwdXQgYW5kIG5lZWQgdG8gYmUgY2FsaWJyYXRlZC4gU2VlIGFsc28KKyAgICAuLi9kaXNwbGF5L3RlZ3JhL252aWRpYSx0ZWdyYTExNC1taXBpLnR4dC4KKworICBPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIG52aWRpYSxkZGMtaTJjLWJ1czogcGhhbmRsZSBvZiBhbiBJMkMgY29udHJvbGxlciB1c2VkIGZvciBEREMgRURJRCBwcm9iaW5nCisgIC0gbnZpZGlhLGhwZC1ncGlvOiBzcGVjaWZpZXMgYSBHUElPIHVzZWQgZm9yIGhvdHBsdWcgZGV0ZWN0aW9uCisgIC0gbnZpZGlhLGVkaWQ6IHN1cHBsaWVzIGEgYmluYXJ5IEVESUQgYmxvYgorICAtIG52aWRpYSxwYW5lbDogcGhhbmRsZSBvZiBhIGRpc3BsYXkgcGFuZWwKKyAgLSBudmlkaWEsZ2FuZ2VkLW1vZGU6IGNvbnRhaW5zIGEgcGhhbmRsZSB0byBhIHNlY29uZCBEU0kgY29udHJvbGxlciB0byBnYW5nCisgICAgdXAgd2l0aCBpbiBvcmRlciB0byBzdXBwb3J0IHVwIHRvIDggZGF0YSBsYW5lcworCistIHNvcjogc2VyaWFsIG91dHB1dCByZXNvdXJjZQorCisgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogU2hvdWxkIGJlOgorICAgIC0gIm52aWRpYSx0ZWdyYTEyNC1zb3IiOiBmb3IgVGVncmExMjQgYW5kIFRlZ3JhMTMyCisgICAgLSAibnZpZGlhLHRlZ3JhMTMyLXNvciI6IGZvciBUZWdyYTEzMgorICAgIC0gIm52aWRpYSx0ZWdyYTIxMC1zb3IiOiBmb3IgVGVncmEyMTAKKyAgICAtICJudmlkaWEsdGVncmEyMTAtc29yMSI6IGZvciBUZWdyYTIxMAorICAtIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlcnMuCisgIC0gaW50ZXJydXB0czogVGhlIGludGVycnVwdCBvdXRwdXRzIGZyb20gdGhlIGNvbnRyb2xsZXIuCisgIC0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCisgICAgU2VlIC4uL2Nsb2Nrcy9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCisgIC0gY2xvY2stbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgICAgLSBzb3I6IGNsb2NrIGlucHV0IGZvciB0aGUgU09SIGhhcmR3YXJlCisgICAgLSBwYXJlbnQ6IGlucHV0IGZvciB0aGUgcGl4ZWwgY2xvY2sKKyAgICAtIGRwOiByZWZlcmVuY2UgY2xvY2sgZm9yIHRoZSBTT1IgY2xvY2sKKyAgICAtIHNhZmU6IHNhZmUgcmVmZXJlbmNlIGZvciB0aGUgU09SIGNsb2NrIGR1cmluZyBwb3dlciB1cAorICAtIHJlc2V0czogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIHJlc2V0LW5hbWVzLgorICAgIFNlZSAuLi9yZXNldC9yZXNldC50eHQgZm9yIGRldGFpbHMuCisgIC0gcmVzZXQtbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgICAgLSBzb3IKKworICBPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIG52aWRpYSxkZGMtaTJjLWJ1czogcGhhbmRsZSBvZiBhbiBJMkMgY29udHJvbGxlciB1c2VkIGZvciBEREMgRURJRCBwcm9iaW5nCisgIC0gbnZpZGlhLGhwZC1ncGlvOiBzcGVjaWZpZXMgYSBHUElPIHVzZWQgZm9yIGhvdHBsdWcgZGV0ZWN0aW9uCisgIC0gbnZpZGlhLGVkaWQ6IHN1cHBsaWVzIGEgYmluYXJ5IEVESUQgYmxvYgorICAtIG52aWRpYSxwYW5lbDogcGhhbmRsZSBvZiBhIGRpc3BsYXkgcGFuZWwKKworICBPcHRpb25hbCBwcm9wZXJ0aWVzIHdoZW4gZHJpdmluZyBhbiBlRFAgb3V0cHV0OgorICAtIG52aWRpYSxkcGF1eDogcGhhbmRsZSB0byBhIERpc3BheVBvcnQgQVVYIGludGVyZmFjZQorCistIGRwYXV4OiBEaXNwbGF5UG9ydCBBVVggaW50ZXJmYWNlCisgIC0gY29tcGF0aWJsZTogRm9yIFRlZ3JhMTI0LCBtdXN0IGNvbnRhaW4gIm52aWRpYSx0ZWdyYTEyNC1kcGF1eCIuICBPdGhlcndpc2UsCisgICAgbXVzdCBjb250YWluICcibnZpZGlhLDxjaGlwPi1kcGF1eCIsICJudmlkaWEsdGVncmExMjQtZHBhdXgiJywgd2hlcmUKKyAgICA8Y2hpcD4gaXMgdGVncmExMzIuCisgIC0gcmVnOiBQaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgY29udHJvbGxlcidzIHJlZ2lzdGVycy4KKyAgLSBpbnRlcnJ1cHRzOiBUaGUgaW50ZXJydXB0IG91dHB1dHMgZnJvbSB0aGUgY29udHJvbGxlci4KKyAgLSBjbG9ja3M6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKyAgICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKyAgLSBjbG9jay1uYW1lczogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgICAtIGRwYXV4OiBjbG9jayBpbnB1dCBmb3IgdGhlIERQQVVYIGhhcmR3YXJlCisgICAgLSBwYXJlbnQ6IHJlZmVyZW5jZSBjbG9jaworICAtIHJlc2V0czogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIHJlc2V0LW5hbWVzLgorICAgIFNlZSAuLi9yZXNldC9yZXNldC50eHQgZm9yIGRldGFpbHMuCisgIC0gcmVzZXQtbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgICAgLSBkcGF1eAorICAtIHZkZC1zdXBwbHk6IHBoYW5kbGUgb2YgYSBzdXBwbHkgdGhhdCBwb3dlcnMgdGhlIERpc3BsYXlQb3J0IGxpbmsKKworRXhhbXBsZToKKworLyB7CisJLi4uCisKKwlob3N0MXggeworCQljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTIwLWhvc3QxeCIsICJzaW1wbGUtYnVzIjsKKwkJcmVnID0gPDB4NTAwMDAwMDAgMHgwMDAyNDAwMD47CisJCWludGVycnVwdHMgPSA8MCA2NSAweDA0ICAgLyogbXBjb3JlIHN5bmNwdCAqLworCQkJICAgICAgMCA2NyAweDA0PjsgLyogbXBjb3JlIGdlbmVyYWwgKi8KKwkJY2xvY2tzID0gPCZ0ZWdyYV9jYXIgVEVHUkEyMF9DTEtfSE9TVDFYPjsKKwkJcmVzZXRzID0gPCZ0ZWdyYV9jYXIgMjg+OworCQlyZXNldC1uYW1lcyA9ICJob3N0MXgiOworCisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKworCQlyYW5nZXMgPSA8MHg1NDAwMDAwMCAweDU0MDAwMDAwIDB4MDQwMDAwMDA+OworCisJCW1wZSB7CisJCQljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTIwLW1wZSI7CisJCQlyZWcgPSA8MHg1NDA0MDAwMCAweDAwMDQwMDAwPjsKKwkJCWludGVycnVwdHMgPSA8MCA2OCAweDA0PjsKKwkJCWNsb2NrcyA9IDwmdGVncmFfY2FyIFRFR1JBMjBfQ0xLX01QRT47CisJCQlyZXNldHMgPSA8JnRlZ3JhX2NhciA2MD47CisJCQlyZXNldC1uYW1lcyA9ICJtcGUiOworCQl9OworCisJCXZpIHsKKwkJCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMjAtdmkiOworCQkJcmVnID0gPDB4NTQwODAwMDAgMHgwMDA0MDAwMD47CisJCQlpbnRlcnJ1cHRzID0gPDAgNjkgMHgwND47CisJCQljbG9ja3MgPSA8JnRlZ3JhX2NhciBURUdSQTIwX0NMS19WST47CisJCQlyZXNldHMgPSA8JnRlZ3JhX2NhciAxMDA+OworCQkJcmVzZXQtbmFtZXMgPSAidmkiOworCQl9OworCisJCWVwcCB7CisJCQljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTIwLWVwcCI7CisJCQlyZWcgPSA8MHg1NDBjMDAwMCAweDAwMDQwMDAwPjsKKwkJCWludGVycnVwdHMgPSA8MCA3MCAweDA0PjsKKwkJCWNsb2NrcyA9IDwmdGVncmFfY2FyIFRFR1JBMjBfQ0xLX0VQUD47CisJCQlyZXNldHMgPSA8JnRlZ3JhX2NhciAxOT47CisJCQlyZXNldC1uYW1lcyA9ICJlcHAiOworCQl9OworCisJCWlzcCB7CisJCQljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTIwLWlzcCI7CisJCQlyZWcgPSA8MHg1NDEwMDAwMCAweDAwMDQwMDAwPjsKKwkJCWludGVycnVwdHMgPSA8MCA3MSAweDA0PjsKKwkJCWNsb2NrcyA9IDwmdGVncmFfY2FyIFRFR1JBMjBfQ0xLX0lTUD47CisJCQlyZXNldHMgPSA8JnRlZ3JhX2NhciAyMz47CisJCQlyZXNldC1uYW1lcyA9ICJpc3AiOworCQl9OworCisJCWdyMmQgeworCQkJY29tcGF0aWJsZSA9ICJudmlkaWEsdGVncmEyMC1ncjJkIjsKKwkJCXJlZyA9IDwweDU0MTQwMDAwIDB4MDAwNDAwMDA+OworCQkJaW50ZXJydXB0cyA9IDwwIDcyIDB4MDQ+OworCQkJY2xvY2tzID0gPCZ0ZWdyYV9jYXIgVEVHUkEyMF9DTEtfR1IyRD47CisJCQlyZXNldHMgPSA8JnRlZ3JhX2NhciAyMT47CisJCQlyZXNldC1uYW1lcyA9ICIyZCI7CisJCX07CisKKwkJZ3IzZCB7CisJCQljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTIwLWdyM2QiOworCQkJcmVnID0gPDB4NTQxODAwMDAgMHgwMDA0MDAwMD47CisJCQljbG9ja3MgPSA8JnRlZ3JhX2NhciBURUdSQTIwX0NMS19HUjNEPjsKKwkJCXJlc2V0cyA9IDwmdGVncmFfY2FyIDI0PjsKKwkJCXJlc2V0LW5hbWVzID0gIjNkIjsKKwkJfTsKKworCQlkY0A1NDIwMDAwMCB7CisJCQljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTIwLWRjIjsKKwkJCXJlZyA9IDwweDU0MjAwMDAwIDB4MDAwNDAwMDA+OworCQkJaW50ZXJydXB0cyA9IDwwIDczIDB4MDQ+OworCQkJY2xvY2tzID0gPCZ0ZWdyYV9jYXIgVEVHUkEyMF9DTEtfRElTUDE+LAorCQkJCSA8JnRlZ3JhX2NhciBURUdSQTIwX0NMS19QTExfUD47CisJCQljbG9jay1uYW1lcyA9ICJkYyIsICJwYXJlbnQiOworCQkJcmVzZXRzID0gPCZ0ZWdyYV9jYXIgMjc+OworCQkJcmVzZXQtbmFtZXMgPSAiZGMiOworCisJCQlyZ2IgeworCQkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJCQl9OworCQl9OworCisJCWRjQDU0MjQwMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMjAtZGMiOworCQkJcmVnID0gPDB4NTQyNDAwMDAgMHgwMDA0MDAwMD47CisJCQlpbnRlcnJ1cHRzID0gPDAgNzQgMHgwND47CisJCQljbG9ja3MgPSA8JnRlZ3JhX2NhciBURUdSQTIwX0NMS19ESVNQMj4sCisJCQkJIDwmdGVncmFfY2FyIFRFR1JBMjBfQ0xLX1BMTF9QPjsKKwkJCWNsb2NrLW5hbWVzID0gImRjIiwgInBhcmVudCI7CisJCQlyZXNldHMgPSA8JnRlZ3JhX2NhciAyNj47CisJCQlyZXNldC1uYW1lcyA9ICJkYyI7CisKKwkJCXJnYiB7CisJCQkJc3RhdHVzID0gImRpc2FibGVkIjsKKwkJCX07CisJCX07CisKKwkJaGRtaSB7CisJCQljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTIwLWhkbWkiOworCQkJcmVnID0gPDB4NTQyODAwMDAgMHgwMDA0MDAwMD47CisJCQlpbnRlcnJ1cHRzID0gPDAgNzUgMHgwND47CisJCQljbG9ja3MgPSA8JnRlZ3JhX2NhciBURUdSQTIwX0NMS19IRE1JPiwKKwkJCQkgPCZ0ZWdyYV9jYXIgVEVHUkEyMF9DTEtfUExMX0RfT1VUMD47CisJCQljbG9jay1uYW1lcyA9ICJoZG1pIiwgInBhcmVudCI7CisJCQlyZXNldHMgPSA8JnRlZ3JhX2NhciA1MT47CisJCQlyZXNldC1uYW1lcyA9ICJoZG1pIjsKKwkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJCX07CisKKwkJdHZvIHsKKwkJCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMjAtdHZvIjsKKwkJCXJlZyA9IDwweDU0MmMwMDAwIDB4MDAwNDAwMDA+OworCQkJaW50ZXJydXB0cyA9IDwwIDc2IDB4MDQ+OworCQkJY2xvY2tzID0gPCZ0ZWdyYV9jYXIgVEVHUkEyMF9DTEtfVFZPPjsKKwkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJCX07CisKKwkJZHNpIHsKKwkJCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMjAtZHNpIjsKKwkJCXJlZyA9IDwweDU0MzAwMDAwIDB4MDAwNDAwMDA+OworCQkJY2xvY2tzID0gPCZ0ZWdyYV9jYXIgVEVHUkEyMF9DTEtfRFNJPiwKKwkJCQkgPCZ0ZWdyYV9jYXIgVEVHUkEyMF9DTEtfUExMX0RfT1VUMD47CisJCQljbG9jay1uYW1lcyA9ICJkc2kiLCAicGFyZW50IjsKKwkJCXJlc2V0cyA9IDwmdGVncmFfY2FyIDQ4PjsKKwkJCXJlc2V0LW5hbWVzID0gImRzaSI7CisJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCQl9OworCX07CisKKwkuLi4KK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90aS90aSxkcmE3LWRzcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90aS90aSxkcmE3LWRzcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMwZjllYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RpL3RpLGRyYTctZHNzLnR4dApAQCAtMCwwICsxLDY5IEBACitUZXhhcyBJbnN0cnVtZW50cyBEUkE3eCBEaXNwbGF5IFN1YnN5c3RlbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RpL3RpLG9tYXAtZHNzLnR4dCBmb3IgZ2VuZXJpYworZGVzY3JpcHRpb24gYWJvdXQgT01BUCBEaXNwbGF5IFN1YnN5c3RlbSBiaW5kaW5ncy4KKworRFNTIENvcmUKKy0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ0aSxkcmE3LWRzcyIKKy0gcmVnOiBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNwYWNlcyBmb3IgJ2RzcycKKy0gdGksaHdtb2RzOiAiZHNzX2NvcmUiCistIGNsb2NrczogaGFuZGxlIHRvIGZjbGsKKy0gY2xvY2stbmFtZXM6ICJmY2siCistIHN5c2NvbjogcGhhbmRsZSB0byBjb250cm9sIG1vZHVsZSBjb3JlIHN5c2NvbiBub2RlCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKK1NvbWUgRFJBN3h4IFNvQ3MgaGF2ZSBvbmUgZGVkaWNhdGVkIHZpZGVvIFBMTCwgc29tZSBoYXZlIHR3by4gVGhlc2UgcHJvcGVydGllcworY2FuIGJlIHVzZWQgdG8gZGVzY3JpYmUgdGhlIHZpZGVvIFBMTHM6CisKKy0gcmVnOiBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNwYWNlcyBmb3IgJ3BsbDFfY2xrY3RybCcsCisgICdwbGwxJywgJ3BsbDJfY2xrY3RybCcsICdwbGwyJworLSBjbG9ja3M6IGhhbmRsZSB0byB2aWRlbzEgcGxsIGNsb2NrIGFuZCB2aWRlbzIgcGxsIGNsb2NrCistIGNsb2NrLW5hbWVzOiAidmlkZW8xX2NsayIgYW5kICJ2aWRlbzJfY2xrIgorCitSZXF1aXJlZCBub2RlczoKKy0gRElTUEMKKworT3B0aW9uYWwgbm9kZXM6CistIERTUyBTdWJtb2R1bGVzOiBIRE1JCistIFZpZGVvIHBvcnQgZm9yIERQSSBvdXRwdXQKKworRFBJIEVuZHBvaW50IHJlcXVpcmVkIHByb3BlcnRpZXM6CistIGRhdGEtbGluZXM6IG51bWJlciBvZiBsaW5lcyB1c2VkCisKKworRElTUEMKKy0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ0aSxkcmE3LWRpc3BjIgorLSByZWc6IGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc3BhY2UKKy0gdGksaHdtb2RzOiAiZHNzX2Rpc3BjIgorLSBpbnRlcnJ1cHRzOiB0aGUgRElTUEMgaW50ZXJydXB0CistIGNsb2NrczogaGFuZGxlIHRvIGZjbGsKKy0gY2xvY2stbmFtZXM6ICJmY2siCisKK0hETUkKKy0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInRpLGRyYTctaGRtaSIKKy0gcmVnOiBhZGRyZXNzZXMgYW5kIGxlbmd0aHMgb2YgdGhlIHJlZ2lzdGVyIHNwYWNlcyBmb3IgJ3dwJywgJ3BsbCcsICdwaHknLAorICAgICAgICdjb3JlJworLSByZWctbmFtZXM6ICJ3cCIsICJwbGwiLCAicGh5IiwgImNvcmUiCistIGludGVycnVwdHM6IHRoZSBIRE1JIGludGVycnVwdCBsaW5lCistIHRpLGh3bW9kczogImRzc19oZG1pIgorLSB2ZGRhLXN1cHBseTogdmRkYSBwb3dlciBzdXBwbHkKKy0gY2xvY2tzOiBoYW5kbGVzIHRvIGZjbGsgYW5kIHBsbCBjbG9jaworLSBjbG9jay1uYW1lczogImZjayIsICJzeXNfY2xrIgorCitPcHRpb25hbCBub2RlczoKKy0gVmlkZW8gcG9ydCBmb3IgSERNSSBvdXRwdXQKKworSERNSSBFbmRwb2ludCBvcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBsYW5lczogbGlzdCBvZiA4IHBpbiBudW1iZXJzIGZvciB0aGUgSERNSSBsYW5lczogQ0xLKywgQ0xLLSwgRDArLCBEMC0sCisgIEQxKywgRDEtLCBEMissIEQyLS4gKGRlZmF1bHQ6IDAsMSwyLDMsNCw1LDYsNykKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RpL3RpLG9tYXAtZHNzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RpL3RpLG9tYXAtZHNzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWVmMjk1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvdGkvdGksb21hcC1kc3MudHh0CkBAIC0wLDAgKzEsMjExIEBACitUZXhhcyBJbnN0cnVtZW50cyBPTUFQIERpc3BsYXkgU3Vic3lzdGVtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0dlbmVyaWMgRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBkb2N1bWVudCBpcyBhIGdlbmVyaWMgZGVzY3JpcHRpb24gb2YgdGhlIE9NQVAgRGlzcGxheSBTdWJzeXN0ZW0gYmluZGluZ3MuCitCaW5kaW5nIGRldGFpbHMgZm9yIGVhY2ggT01BUCBTb0MgdmVyc2lvbiBhcmUgZGVzY3JpYmVkIGluIHJlc3BlY3RpdmUgYmluZGluZworZG9jdW1lbnRhdGlvbi4KKworVGhlIE9NQVAgRGlzcGxheSBTdWJzeXN0ZW0gKERTUykgaGFyZHdhcmUgY29uc2lzdHMgb2YgRFNTIENvcmUsIERJU1BDIG1vZHVsZSBhbmQKK2EgbnVtYmVyIG9mIGVuY29kZXIgbW9kdWxlcy4gQWxsIERTUyB2ZXJzaW9ucyBjb250YWluIERTUyBDb3JlIGFuZCBESVNQQywgYnV0Cit0aGUgZW5jb2RlciBtb2R1bGVzIHZhcnkuCisKK1RoZSBEU1MgQ29yZSBpcyB0aGUgcGFyZW50IG9mIHRoZSBvdGhlciBEU1MgbW9kdWxlcywgYW5kIG1hbmFnZXMgY2xvY2sgcm91dGluZywKK2ludGVncmF0aW9uIHRvIHRoZSBTb0MsIGV0Yy4KKworRElTUEMgaXMgdGhlIGRpc3BsYXkgY29udHJvbGxlciwgd2hpY2ggcmVhZHMgcGl4ZWxzIGZyb20gdGhlIG1lbW9yeSBhbmQgb3V0cHV0cworYSBSR0IgcGl4ZWwgc3RyZWFtIHRvIGVuY29kZXJzLgorCitUaGUgZW5jb2RlciBtb2R1bGVzIGVuY29kZSB0aGUgcmVjZWl2ZWQgUkdCIHBpeGVsIHN0cmVhbSB0byBhIHZpZGVvIG91dHB1dCBsaWtlCitIRE1JLCBNSVBJIERQSSwgZXRjLgorCitWaWRlbyBQb3J0cworLS0tLS0tLS0tLS0KKworVGhlIERTUyBDb3JlIGFuZCB0aGUgZW5jb2RlcnMgaGF2ZSB2aWRlbyBwb3J0IG91dHB1dHMuIFRoZSBzdHJ1Y3R1cmUgb2YgdGhlCit2aWRlbyBwb3J0cyBpcyBkZXNjcmliZWQgaW4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dyYXBoLnR4dCwKK2FuZCB0aGUgcHJvcGVydGllcyBmb3IgdGhlIHBvcnRzIGFuZCBlbmRwb2ludHMgZm9yIGVhY2ggZW5jb2RlciBhcmUKK2Rlc2NyaWJlZCBpbiB0aGUgU29DJ3MgRFNTIGJpbmRpbmcgZG9jdW1lbnRhdGlvbi4KKworVGhlIHZpZGVvIHBvcnRzIGFyZSB1c2VkIHRvIGRlc2NyaWJlIHRoZSBjb25uZWN0aW9ucyB0byBleHRlcm5hbCBoYXJkd2FyZSwgbGlrZQorcGFuZWxzIG9yIGV4dGVybmFsIGVuY29kZXJzLgorCitBbGlhc2VzCistLS0tLS0tCisKK1RoZSBib2FyZCBkdHMgZmlsZSBtYXkgZGVmaW5lIGFsaWFzZXMgZm9yIGRpc3BsYXlzIHRvIGFzc2lnbiAiZGlzcGxheVgiIHN0eWxlCituYW1lIGZvciBlYWNoIGRpc3BsYXkuIElmIG5vIGFsaWFzZXMgYXJlIGRlZmluZWQsIGEgc2VtaS1yYW5kb20gbnVtYmVyIGlzIHVzZWQKK2ZvciB0aGUgZGlzcGxheS4KKworRXhhbXBsZQorLS0tLS0tLQorCitBIHNob3J0ZW5lZCBleGFtcGxlIG9mIHRoZSBEU1MgZGVzY3JpcHRpb24gZm9yIE9NQVA0LCB3aXRoIG5vbi1yZWxldmFudCBwYXJ0cworcmVtb3ZlZCwgZGVmaW5lZCBpbiBvbWFwNC5kdHNpOgorCitkc3M6IGRzc0A1ODAwMDAwMCB7CisJY29tcGF0aWJsZSA9ICJ0aSxvbWFwNC1kc3MiOworCXJlZyA9IDwweDU4MDAwMDAwIDB4ODA+OworCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJdGksaHdtb2RzID0gImRzc19jb3JlIjsKKwljbG9ja3MgPSA8JmRzc19kc3NfY2xrPjsKKwljbG9jay1uYW1lcyA9ICJmY2siOworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDE+OworCXJhbmdlczsKKworCWRpc3BjQDU4MDAxMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSxvbWFwNC1kaXNwYyI7CisJCXJlZyA9IDwweDU4MDAxMDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSAyNSBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJdGksaHdtb2RzID0gImRzc19kaXNwYyI7CisJCWNsb2NrcyA9IDwmZHNzX2Rzc19jbGs+OworCQljbG9jay1uYW1lcyA9ICJmY2siOworCX07CisKKwloZG1pOiBlbmNvZGVyQDU4MDA2MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSxvbWFwNC1oZG1pIjsKKwkJcmVnID0gPDB4NTgwMDYwMDAgMHgyMDA+LAorCQkgICAgICA8MHg1ODAwNjIwMCAweDEwMD4sCisJCSAgICAgIDwweDU4MDA2MzAwIDB4MTAwPiwKKwkJICAgICAgPDB4NTgwMDY0MDAgMHgxMDAwPjsKKwkJcmVnLW5hbWVzID0gIndwIiwgInBsbCIsICJwaHkiLCAiY29yZSI7CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSAxMDEgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJCXRpLGh3bW9kcyA9ICJkc3NfaGRtaSI7CisJCWNsb2NrcyA9IDwmZHNzXzQ4bWh6X2Nsaz4sIDwmZHNzX3N5c19jbGs+OworCQljbG9jay1uYW1lcyA9ICJmY2siLCAic3lzX2NsayI7CisJfTsKK307CisKK0Egc2hvcnRlbmVkIGV4YW1wbGUgb2YgdGhlIGJvYXJkIGRlc2NyaXB0aW9uIGZvciBPTUFQNCBQYW5kYSBib2FyZCwgZGVmaW5lZCBpbgorb21hcDQtcGFuZGEuZHRzLgorCitUaGUgUGFuZGEgYm9hcmQgaGFzIGEgRFZJIGFuZCBhIEhETUkgY29ubmVjdG9yLCBhbmQgdGhlIGJvYXJkIGNvbnRhaW5zIGEgVEZQNDEwCitjaGlwIChNSVBJIERQSSB0byBEVkkgZW5jb2RlcikgYW5kIGEgVFBEMTJTMDE1IGNoaXAgKEhETUkgRVNEIHByb3RlY3Rpb24gJiBsZXZlbAorc2hpZnRlcikuIFRoZSB2aWRlbyBwaXBlbGluZXMgZm9yIHRoZSBjb25uZWN0b3JzIGFyZSBmb3JtZWQgYXMgZm9sbG93czoKKworRFNTIENvcmUgLS0oTUlQSSBEUEkpLS0+IFRGUDQxMCAtLShEVkkpLS0+IERWSSBDb25uZWN0b3IKK09NQVAgSERNSSAtLShIRE1JKS0tPiBUUEQxMlMwMTUgLS0oSERNSSktLT4gSERNSSBDb25uZWN0b3IKKworLyB7CisJYWxpYXNlcyB7CisJCWRpc3BsYXkwID0gJmR2aTA7CisJCWRpc3BsYXkxID0gJmhkbWkwOworCX07CisKKwl0ZnA0MTA6IGVuY29kZXJAMCB7CisJCWNvbXBhdGlibGUgPSAidGksdGZwNDEwIjsKKwkJZ3Bpb3MgPSA8JmdwaW8xIDAgR1BJT19BQ1RJVkVfTE9XPjsJLyogMCwgcG93ZXItZG93biAqLworCisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmdGZwNDEwX3BpbnM+OworCisJCXBvcnRzIHsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJCXBvcnRAMCB7CisJCQkJcmVnID0gPDA+OworCisJCQkJdGZwNDEwX2luOiBlbmRwb2ludEAwIHsKKwkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZkcGlfb3V0PjsKKwkJCQl9OworCQkJfTsKKworCQkJcG9ydEAxIHsKKwkJCQlyZWcgPSA8MT47CisKKwkJCQl0ZnA0MTBfb3V0OiBlbmRwb2ludEAwIHsKKwkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZkdmlfY29ubmVjdG9yX2luPjsKKwkJCQl9OworCQkJfTsKKwkJfTsKKwl9OworCisJZHZpMDogY29ubmVjdG9yQDAgeworCQljb21wYXRpYmxlID0gImR2aS1jb25uZWN0b3IiOworCQlsYWJlbCA9ICJkdmkiOworCisJCWkyYy1idXMgPSA8JmkyYzM+OworCisJCXBvcnQgeworCQkJZHZpX2Nvbm5lY3Rvcl9pbjogZW5kcG9pbnQgeworCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmdGZwNDEwX291dD47CisJCQl9OworCQl9OworCX07CisKKwl0cGQxMnMwMTU6IGVuY29kZXJAMSB7CisJCWNvbXBhdGlibGUgPSAidGksdHBkMTJzMDE1IjsKKworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JnRwZDEyczAxNV9waW5zPjsKKworCQlncGlvcyA9IDwmZ3BpbzIgMjggR1BJT19BQ1RJVkVfSElHSD4sCS8qIDYwLCBDVCBDUCBIUEQgKi8KKwkJCTwmZ3BpbzIgOSBHUElPX0FDVElWRV9ISUdIPiwJLyogNDEsIExTIE9FICovCisJCQk8JmdwaW8yIDMxIEdQSU9fQUNUSVZFX0hJR0g+OwkvKiA2MywgSFBEICovCisKKwkJcG9ydHMgeworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQkJcG9ydEAwIHsKKwkJCQlyZWcgPSA8MD47CisKKwkJCQl0cGQxMnMwMTVfaW46IGVuZHBvaW50QDAgeworCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmhkbWlfb3V0PjsKKwkJCQl9OworCQkJfTsKKworCQkJcG9ydEAxIHsKKwkJCQlyZWcgPSA8MT47CisKKwkJCQl0cGQxMnMwMTVfb3V0OiBlbmRwb2ludEAwIHsKKwkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZoZG1pX2Nvbm5lY3Rvcl9pbj47CisJCQkJfTsKKwkJCX07CisJCX07CisJfTsKKworCWhkbWkwOiBjb25uZWN0b3JAMSB7CisJCWNvbXBhdGlibGUgPSAiaGRtaS1jb25uZWN0b3IiOworCQlsYWJlbCA9ICJoZG1pIjsKKworCQlwb3J0IHsKKwkJCWhkbWlfY29ubmVjdG9yX2luOiBlbmRwb2ludCB7CisJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZ0cGQxMnMwMTVfb3V0PjsKKwkJCX07CisJCX07CisJfTsKK307CisKKyZkc3MgeworCXN0YXR1cyA9ICJvayI7CisKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCXBpbmN0cmwtMCA9IDwmZHNzX2RwaV9waW5zPjsKKworCXBvcnQgeworCQlkcGlfb3V0OiBlbmRwb2ludCB7CisJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JnRmcDQxMF9pbj47CisJCQlkYXRhLWxpbmVzID0gPDI0PjsKKwkJfTsKKwl9OworfTsKKworJmhkbWkgeworCXN0YXR1cyA9ICJvayI7CisJdmRkYS1zdXBwbHkgPSA8JnZkYWM+OworCisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwlwaW5jdHJsLTAgPSA8JmRzc19oZG1pX3BpbnM+OworCisJcG9ydCB7CisJCWhkbWlfb3V0OiBlbmRwb2ludCB7CisJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JnRwZDEyczAxNV9pbj47CisJCX07CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90aS90aSxvbWFwMi1kc3MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvdGkvdGksb21hcDItZHNzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmNkNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvdGkvdGksb21hcDItZHNzLnR4dApAQCAtMCwwICsxLDU0IEBACitUZXhhcyBJbnN0cnVtZW50cyBPTUFQMiBEaXNwbGF5IFN1YnN5c3RlbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RpL3RpLG9tYXAtZHNzLnR4dCBmb3IgZ2VuZXJpYworZGVzY3JpcHRpb24gYWJvdXQgT01BUCBEaXNwbGF5IFN1YnN5c3RlbSBiaW5kaW5ncy4KKworRFNTIENvcmUKKy0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ0aSxvbWFwMi1kc3MiCistIHJlZzogYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzcGFjZQorLSB0aSxod21vZHM6ICJkc3NfY29yZSIKKworT3B0aW9uYWwgbm9kZXM6CistIFZpZGVvIHBvcnQgZm9yIERQSSBvdXRwdXQKKworRFBJIEVuZHBvaW50IHJlcXVpcmVkIHByb3BlcnRpZXM6CistIGRhdGEtbGluZXM6IG51bWJlciBvZiBsaW5lcyB1c2VkCisKKworRElTUEMKKy0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ0aSxvbWFwMi1kaXNwYyIKKy0gcmVnOiBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNwYWNlCistIHRpLGh3bW9kczogImRzc19kaXNwYyIKKy0gaW50ZXJydXB0czogdGhlIERJU1BDIGludGVycnVwdAorCisKK1JGQkkKKy0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInRpLG9tYXAyLXJmYmkiCistIHJlZzogYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzcGFjZQorLSB0aSxod21vZHM6ICJkc3NfcmZiaSIKKworCitWRU5DCistLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ0aSxvbWFwMi12ZW5jIgorLSByZWc6IGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc3BhY2UKKy0gdGksaHdtb2RzOiAiZHNzX3ZlbmMiCistIHZkZGEtc3VwcGx5OiBwb3dlciBzdXBwbHkgZm9yIERBQworCitWRU5DIEVuZHBvaW50IHJlcXVpcmVkIHByb3BlcnRpZXM6CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIHRpLGludmVydC1wb2xhcml0eTogaW52ZXJ0IHRoZSBwb2xhcml0eSBvZiB0aGUgdmlkZW8gc2lnbmFsCistIHRpLGNoYW5uZWxzOiAxIGZvciBjb21wb3NpdGUsIDIgZm9yIHMtdmlkZW8KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RpL3RpLG9tYXAzLWRzcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90aS90aSxvbWFwMy1kc3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjNjZlMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90aS90aSxvbWFwMy1kc3MudHh0CkBAIC0wLDAgKzEsODMgQEAKK1RleGFzIEluc3RydW1lbnRzIE9NQVAzIERpc3BsYXkgU3Vic3lzdGVtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitTZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvdGkvdGksb21hcC1kc3MudHh0IGZvciBnZW5lcmljCitkZXNjcmlwdGlvbiBhYm91dCBPTUFQIERpc3BsYXkgU3Vic3lzdGVtIGJpbmRpbmdzLgorCitEU1MgQ29yZQorLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInRpLG9tYXAzLWRzcyIKKy0gcmVnOiBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNwYWNlCistIHRpLGh3bW9kczogImRzc19jb3JlIgorLSBjbG9ja3M6IGhhbmRsZSB0byBmY2xrCistIGNsb2NrLW5hbWVzOiAiZmNrIgorCitPcHRpb25hbCBub2RlczoKKy0gVmlkZW8gcG9ydHM6CisJLSBQb3J0IDA6IERQSSBvdXRwdXQKKwktIFBvcnQgMTogU0RJIG91dHB1dAorCitEUEkgRW5kcG9pbnQgcmVxdWlyZWQgcHJvcGVydGllczoKKy0gZGF0YS1saW5lczogbnVtYmVyIG9mIGxpbmVzIHVzZWQKKworU0RJIEVuZHBvaW50IHJlcXVpcmVkIHByb3BlcnRpZXM6CistIGRhdGFwYWlyczogbnVtYmVyIG9mIGRhdGFwYWlycyB1c2VkCisKKworRElTUEMKKy0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ0aSxvbWFwMy1kaXNwYyIKKy0gcmVnOiBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNwYWNlCistIHRpLGh3bW9kczogImRzc19kaXNwYyIKKy0gaW50ZXJydXB0czogdGhlIERJU1BDIGludGVycnVwdAorLSBjbG9ja3M6IGhhbmRsZSB0byBmY2xrCistIGNsb2NrLW5hbWVzOiAiZmNrIgorCisKK1JGQkkKKy0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInRpLG9tYXAzLXJmYmkiCistIHJlZzogYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzcGFjZQorLSB0aSxod21vZHM6ICJkc3NfcmZiaSIKKy0gY2xvY2tzOiBoYW5kbGVzIHRvIGZjbGsgYW5kIGljbGsKKy0gY2xvY2stbmFtZXM6ICJmY2siLCAiaWNrIgorCisKK1ZFTkMKKy0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInRpLG9tYXAzLXZlbmMiCistIHJlZzogYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzcGFjZQorLSB0aSxod21vZHM6ICJkc3NfdmVuYyIKKy0gdmRkYS1zdXBwbHk6IHBvd2VyIHN1cHBseSBmb3IgREFDCistIGNsb2NrczogaGFuZGxlIHRvIGZjbGsKKy0gY2xvY2stbmFtZXM6ICJmY2siCisKK1ZFTkMgRW5kcG9pbnQgcmVxdWlyZWQgcHJvcGVydGllczoKKy0gdGksaW52ZXJ0LXBvbGFyaXR5OiBpbnZlcnQgdGhlIHBvbGFyaXR5IG9mIHRoZSB2aWRlbyBzaWduYWwKKy0gdGksY2hhbm5lbHM6IDEgZm9yIGNvbXBvc2l0ZSwgMiBmb3Igcy12aWRlbworCisKK0RTSQorLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ0aSxvbWFwMy1kc2kiCistIHJlZzogYWRkcmVzc2VzIGFuZCBsZW5ndGhzIG9mIHRoZSByZWdpc3RlciBzcGFjZXMgZm9yICdwcm90bycsICdwaHknIGFuZCAncGxsJworLSByZWctbmFtZXM6ICJwcm90byIsICJwaHkiLCAicGxsIgorLSBpbnRlcnJ1cHRzOiB0aGUgRFNJIGludGVycnVwdCBsaW5lCistIHRpLGh3bW9kczogImRzc19kc2kxIgorLSB2ZGQtc3VwcGx5OiBwb3dlciBzdXBwbHkgZm9yIERTSQorLSBjbG9ja3M6IGhhbmRsZXMgdG8gZmNsayBhbmQgcGxsIGNsb2NrCistIGNsb2NrLW5hbWVzOiAiZmNrIiwgInN5c19jbGsiCisKK0RTSSBFbmRwb2ludCByZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBsYW5lczogbGlzdCBvZiBwaW4gbnVtYmVycyBmb3IgdGhlIERTSSBsYW5lczogQ0xLKywgQ0xLLSwgREFUQTArLCBEQVRBMC0sCisgIERBVEExKywgREFUQTEtLCAuLi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RpL3RpLG9tYXA0LWRzcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90aS90aSxvbWFwNC1kc3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNjI0ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90aS90aSxvbWFwNC1kc3MudHh0CkBAIC0wLDAgKzEsMTE1IEBACitUZXhhcyBJbnN0cnVtZW50cyBPTUFQNCBEaXNwbGF5IFN1YnN5c3RlbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RpL3RpLG9tYXAtZHNzLnR4dCBmb3IgZ2VuZXJpYworZGVzY3JpcHRpb24gYWJvdXQgT01BUCBEaXNwbGF5IFN1YnN5c3RlbSBiaW5kaW5ncy4KKworRFNTIENvcmUKKy0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ0aSxvbWFwNC1kc3MiCistIHJlZzogYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzcGFjZQorLSB0aSxod21vZHM6ICJkc3NfY29yZSIKKy0gY2xvY2tzOiBoYW5kbGUgdG8gZmNsaworLSBjbG9jay1uYW1lczogImZjayIKKworUmVxdWlyZWQgbm9kZXM6CistIERJU1BDCisKK09wdGlvbmFsIG5vZGVzOgorLSBEU1MgU3VibW9kdWxlczogUkZCSSwgVkVOQywgRFNJLCBIRE1JCistIFZpZGVvIHBvcnQgZm9yIERQSSBvdXRwdXQKKworRFBJIEVuZHBvaW50IHJlcXVpcmVkIHByb3BlcnRpZXM6CistIGRhdGEtbGluZXM6IG51bWJlciBvZiBsaW5lcyB1c2VkCisKKworRElTUEMKKy0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ0aSxvbWFwNC1kaXNwYyIKKy0gcmVnOiBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNwYWNlCistIHRpLGh3bW9kczogImRzc19kaXNwYyIKKy0gaW50ZXJydXB0czogdGhlIERJU1BDIGludGVycnVwdAorLSBjbG9ja3M6IGhhbmRsZSB0byBmY2xrCistIGNsb2NrLW5hbWVzOiAiZmNrIgorCisKK1JGQkkKKy0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInRpLG9tYXA0LXJmYmkiCistIHJlZzogYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzcGFjZQorLSB0aSxod21vZHM6ICJkc3NfcmZiaSIKKy0gY2xvY2tzOiBoYW5kbGVzIHRvIGZjbGsgYW5kIGljbGsKKy0gY2xvY2stbmFtZXM6ICJmY2siLCAiaWNrIgorCitPcHRpb25hbCBub2RlczoKKy0gVmlkZW8gcG9ydCBmb3IgUkZCSSBvdXRwdXQKKy0gUkZCSSBjb250cm9sbGVkIHBlcmlwaGVyYWxzCisKKworVkVOQworLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAidGksb21hcDQtdmVuYyIKKy0gcmVnOiBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNwYWNlCistIHRpLGh3bW9kczogImRzc192ZW5jIgorLSB2ZGRhLXN1cHBseTogcG93ZXIgc3VwcGx5IGZvciBEQUMKKy0gY2xvY2tzOiBoYW5kbGUgdG8gZmNsaworLSBjbG9jay1uYW1lczogImZjayIKKworT3B0aW9uYWwgbm9kZXM6CistIFZpZGVvIHBvcnQgZm9yIFZFTkMgb3V0cHV0CisKK1ZFTkMgRW5kcG9pbnQgcmVxdWlyZWQgcHJvcGVydGllczoKKy0gdGksaW52ZXJ0LXBvbGFyaXR5OiBpbnZlcnQgdGhlIHBvbGFyaXR5IG9mIHRoZSB2aWRlbyBzaWduYWwKKy0gdGksY2hhbm5lbHM6IDEgZm9yIGNvbXBvc2l0ZSwgMiBmb3Igcy12aWRlbworCisKK0RTSQorLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ0aSxvbWFwNC1kc2kiCistIHJlZzogYWRkcmVzc2VzIGFuZCBsZW5ndGhzIG9mIHRoZSByZWdpc3RlciBzcGFjZXMgZm9yICdwcm90bycsICdwaHknIGFuZCAncGxsJworLSByZWctbmFtZXM6ICJwcm90byIsICJwaHkiLCAicGxsIgorLSBpbnRlcnJ1cHRzOiB0aGUgRFNJIGludGVycnVwdCBsaW5lCistIHRpLGh3bW9kczogImRzc19kc2kxIiBvciAiZHNzX2RzaTIiCistIHZkZC1zdXBwbHk6IHBvd2VyIHN1cHBseSBmb3IgRFNJCistIGNsb2NrczogaGFuZGxlcyB0byBmY2xrIGFuZCBwbGwgY2xvY2sKKy0gY2xvY2stbmFtZXM6ICJmY2siLCAic3lzX2NsayIKKworT3B0aW9uYWwgbm9kZXM6CistIFZpZGVvIHBvcnQgZm9yIERTSSBvdXRwdXQKKy0gRFNJIGNvbnRyb2xsZWQgcGVyaXBoZXJhbHMKKworRFNJIEVuZHBvaW50IHJlcXVpcmVkIHByb3BlcnRpZXM6CistIGxhbmVzOiBsaXN0IG9mIHBpbiBudW1iZXJzIGZvciB0aGUgRFNJIGxhbmVzOiBDTEsrLCBDTEstLCBEQVRBMCssIERBVEEwLSwKKyAgREFUQTErLCBEQVRBMS0sIC4uLgorCisKK0hETUkKKy0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInRpLG9tYXA0LWhkbWkiCistIHJlZzogYWRkcmVzc2VzIGFuZCBsZW5ndGhzIG9mIHRoZSByZWdpc3RlciBzcGFjZXMgZm9yICd3cCcsICdwbGwnLCAncGh5JywKKyAgICAgICAnY29yZScKKy0gcmVnLW5hbWVzOiAid3AiLCAicGxsIiwgInBoeSIsICJjb3JlIgorLSBpbnRlcnJ1cHRzOiB0aGUgSERNSSBpbnRlcnJ1cHQgbGluZQorLSB0aSxod21vZHM6ICJkc3NfaGRtaSIKKy0gdmRkYS1zdXBwbHk6IHZkZGEgcG93ZXIgc3VwcGx5CistIGNsb2NrczogaGFuZGxlcyB0byBmY2xrIGFuZCBwbGwgY2xvY2sKKy0gY2xvY2stbmFtZXM6ICJmY2siLCAic3lzX2NsayIKKworT3B0aW9uYWwgbm9kZXM6CistIFZpZGVvIHBvcnQgZm9yIEhETUkgb3V0cHV0CisKK0hETUkgRW5kcG9pbnQgb3B0aW9uYWwgcHJvcGVydGllczoKKy0gbGFuZXM6IGxpc3Qgb2YgOCBwaW4gbnVtYmVycyBmb3IgdGhlIEhETUkgbGFuZXM6IENMSyssIENMSy0sIEQwKywgRDAtLAorICBEMSssIEQxLSwgRDIrLCBEMi0uIChkZWZhdWx0OiAwLDEsMiwzLDQsNSw2LDcpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90aS90aSxvbWFwNS1kc3MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvdGkvdGksb21hcDUtZHNzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMThhNDg2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvdGkvdGksb21hcDUtZHNzLnR4dApAQCAtMCwwICsxLDk2IEBACitUZXhhcyBJbnN0cnVtZW50cyBPTUFQNSBEaXNwbGF5IFN1YnN5c3RlbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RpL3RpLG9tYXAtZHNzLnR4dCBmb3IgZ2VuZXJpYworZGVzY3JpcHRpb24gYWJvdXQgT01BUCBEaXNwbGF5IFN1YnN5c3RlbSBiaW5kaW5ncy4KKworRFNTIENvcmUKKy0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ0aSxvbWFwNS1kc3MiCistIHJlZzogYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzcGFjZQorLSB0aSxod21vZHM6ICJkc3NfY29yZSIKKy0gY2xvY2tzOiBoYW5kbGUgdG8gZmNsaworLSBjbG9jay1uYW1lczogImZjayIKKworUmVxdWlyZWQgbm9kZXM6CistIERJU1BDCisKK09wdGlvbmFsIG5vZGVzOgorLSBEU1MgU3VibW9kdWxlczogUkZCSSwgRFNJLCBIRE1JCistIFZpZGVvIHBvcnQgZm9yIERQSSBvdXRwdXQKKworRFBJIEVuZHBvaW50IHJlcXVpcmVkIHByb3BlcnRpZXM6CistIGRhdGEtbGluZXM6IG51bWJlciBvZiBsaW5lcyB1c2VkCisKKworRElTUEMKKy0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ0aSxvbWFwNS1kaXNwYyIKKy0gcmVnOiBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNwYWNlCistIHRpLGh3bW9kczogImRzc19kaXNwYyIKKy0gaW50ZXJydXB0czogdGhlIERJU1BDIGludGVycnVwdAorLSBjbG9ja3M6IGhhbmRsZSB0byBmY2xrCistIGNsb2NrLW5hbWVzOiAiZmNrIgorCisKK1JGQkkKKy0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInRpLG9tYXA1LXJmYmkiCistIHJlZzogYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzcGFjZQorLSB0aSxod21vZHM6ICJkc3NfcmZiaSIKKy0gY2xvY2tzOiBoYW5kbGVzIHRvIGZjbGsgYW5kIGljbGsKKy0gY2xvY2stbmFtZXM6ICJmY2siLCAiaWNrIgorCitPcHRpb25hbCBub2RlczoKKy0gVmlkZW8gcG9ydCBmb3IgUkZCSSBvdXRwdXQKKy0gUkZCSSBjb250cm9sbGVkIHBlcmlwaGVyYWxzCisKKworRFNJCistLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInRpLG9tYXA1LWRzaSIKKy0gcmVnOiBhZGRyZXNzZXMgYW5kIGxlbmd0aHMgb2YgdGhlIHJlZ2lzdGVyIHNwYWNlcyBmb3IgJ3Byb3RvJywgJ3BoeScgYW5kICdwbGwnCistIHJlZy1uYW1lczogInByb3RvIiwgInBoeSIsICJwbGwiCistIGludGVycnVwdHM6IHRoZSBEU0kgaW50ZXJydXB0IGxpbmUKKy0gdGksaHdtb2RzOiAiZHNzX2RzaTEiIG9yICJkc3NfZHNpMiIKKy0gdmRkLXN1cHBseTogcG93ZXIgc3VwcGx5IGZvciBEU0kKKy0gY2xvY2tzOiBoYW5kbGVzIHRvIGZjbGsgYW5kIHBsbCBjbG9jaworLSBjbG9jay1uYW1lczogImZjayIsICJzeXNfY2xrIgorCitPcHRpb25hbCBub2RlczoKKy0gVmlkZW8gcG9ydCBmb3IgRFNJIG91dHB1dAorLSBEU0kgY29udHJvbGxlZCBwZXJpcGhlcmFscworCitEU0kgRW5kcG9pbnQgcmVxdWlyZWQgcHJvcGVydGllczoKKy0gbGFuZXM6IGxpc3Qgb2YgcGluIG51bWJlcnMgZm9yIHRoZSBEU0kgbGFuZXM6IENMSyssIENMSy0sIERBVEEwKywgREFUQTAtLAorICBEQVRBMSssIERBVEExLSwgLi4uCisKKworSERNSQorLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAidGksb21hcDUtaGRtaSIKKy0gcmVnOiBhZGRyZXNzZXMgYW5kIGxlbmd0aHMgb2YgdGhlIHJlZ2lzdGVyIHNwYWNlcyBmb3IgJ3dwJywgJ3BsbCcsICdwaHknLAorICAgICAgICdjb3JlJworLSByZWctbmFtZXM6ICJ3cCIsICJwbGwiLCAicGh5IiwgImNvcmUiCistIGludGVycnVwdHM6IHRoZSBIRE1JIGludGVycnVwdCBsaW5lCistIHRpLGh3bW9kczogImRzc19oZG1pIgorLSB2ZGRhLXN1cHBseTogdmRkYSBwb3dlciBzdXBwbHkKKy0gY2xvY2tzOiBoYW5kbGVzIHRvIGZjbGsgYW5kIHBsbCBjbG9jaworLSBjbG9jay1uYW1lczogImZjayIsICJzeXNfY2xrIgorCitPcHRpb25hbCBub2RlczoKKy0gVmlkZW8gcG9ydCBmb3IgSERNSSBvdXRwdXQKKworSERNSSBFbmRwb2ludCBvcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBsYW5lczogbGlzdCBvZiA4IHBpbiBudW1iZXJzIGZvciB0aGUgSERNSSBsYW5lczogQ0xLKywgQ0xLLSwgRDArLCBEMC0sCisgIEQxKywgRDEtLCBEMissIEQyLS4gKGRlZmF1bHQ6IDAsMSwyLDMsNCw1LDYsNykKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RpL3RpLG9wYTM2Mi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90aS90aSxvcGEzNjIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NjA4M2MKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90aS90aSxvcGEzNjIudHh0CkBAIC0wLDAgKzEsMzggQEAKK09QQTM2MiBhbmFsb2cgdmlkZW8gYW1wbGlmaWVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ0aSxvcGEzNjIiCistIGVuYWJsZS1ncGlvczogZW5hYmxlL2Rpc2FibGUgb3V0cHV0IGdwaW8KKworUmVxdWlyZWQgbm9kZToKKy0gVmlkZW8gcG9ydCAwIGZvciBvcGEzNjIgaW5wdXQKKy0gVmlkZW8gcG9ydCAxIGZvciBvcGEzNjIgb3V0cHV0CisKK0V4YW1wbGU6CisKK3R2X2FtcDogb3BhMzYyIHsKKwljb21wYXRpYmxlID0gInRpLG9wYTM2MiI7CisJZW5hYmxlLWdwaW9zID0gPCZncGlvMSAyMyAwPjsgIC8qIEdQSU8gdG8gZW5hYmxlIHZpZGVvIG91dCBhbXBsaWZpZXIgKi8KKworCXBvcnRzIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCisJCXBvcnRAMCB7CisJCQlyZWcgPSA8MD47CisJCQlvcGFfaW46IGVuZHBvaW50QDAgeworCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmdmVuY19vdXQ+OworCQkJfTsKKwkJfTsKKworCQlwb3J0QDEgeworCQkJcmVnID0gPDE+OworCQkJb3BhX291dDogZW5kcG9pbnRAMCB7CisJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZ0dl9jb25uZWN0b3JfaW4+OworCQkJfTsKKwkJfTsKKwl9OworfTsKKworCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RpL3RpLHRmcDQxMC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90aS90aSx0ZnA0MTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjYmUzMmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90aS90aSx0ZnA0MTAudHh0CkBAIC0wLDAgKzEsNDEgQEAKK1RGUDQxMCBEUEkgdG8gRFZJIGVuY29kZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInRpLHRmcDQxMCIKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gcG93ZXJkb3duLWdwaW9zOiBwb3dlci1kb3duIGdwaW8KKworUmVxdWlyZWQgbm9kZXM6CistIFZpZGVvIHBvcnQgMCBmb3IgRFBJIGlucHV0CistIFZpZGVvIHBvcnQgMSBmb3IgRFZJIG91dHB1dAorCitFeGFtcGxlCistLS0tLS0tCisKK3RmcDQxMDogZW5jb2RlckAwIHsKKwljb21wYXRpYmxlID0gInRpLHRmcDQxMCI7CisJcG93ZXJkb3duLWdwaW9zID0gPCZ0d2xfZ3BpbyAyIEdQSU9fQUNUSVZFX0xPVz47CisKKwlwb3J0cyB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQlwb3J0QDAgeworCQkJcmVnID0gPDA+OworCisJCQl0ZnA0MTBfaW46IGVuZHBvaW50QDAgeworCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmZHBpX291dD47CisJCQl9OworCQl9OworCisJCXBvcnRAMSB7CisJCQlyZWcgPSA8MT47CisKKwkJCXRmcDQxMF9vdXQ6IGVuZHBvaW50QDAgeworCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmZHZpX2Nvbm5lY3Rvcl9pbj47CisJCQl9OworCQl9OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvdGkvdGksdHBkMTJzMDE1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RpL3RpLHRwZDEyczAxNS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZlNmQzMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RpL3RpLHRwZDEyczAxNS50eHQKQEAgLTAsMCArMSw0NCBAQAorVFBEMTJTMDE1IEhETUkgbGV2ZWwgc2hpZnRlciBhbmQgRVNEIHByb3RlY3Rpb24gY2hpcAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAidGksdHBkMTJzMDE1IgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBncGlvczogQ1QgQ1AgSFBELCBMUyBPRSBhbmQgSFBEIGdwaW9zCisKK1JlcXVpcmVkIG5vZGVzOgorLSBWaWRlbyBwb3J0IDAgZm9yIEhETUkgaW5wdXQKKy0gVmlkZW8gcG9ydCAxIGZvciBIRE1JIG91dHB1dAorCitFeGFtcGxlCistLS0tLS0tCisKK3RwZDEyczAxNTogZW5jb2RlckAxIHsKKwljb21wYXRpYmxlID0gInRpLHRwZDEyczAxNSI7CisKKwlncGlvcyA9IDwmZ3BpbzIgMjggR1BJT19BQ1RJVkVfSElHSD4sCS8qIDYwLCBDVCBDUCBIUEQgKi8KKwkJPCZncGlvMiA5IEdQSU9fQUNUSVZFX0hJR0g+LAkvKiA0MSwgTFMgT0UgKi8KKwkJPCZncGlvMiAzMSBHUElPX0FDVElWRV9ISUdIPjsJLyogNjMsIEhQRCAqLworCisJcG9ydHMgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJcG9ydEAwIHsKKwkJCXJlZyA9IDwwPjsKKworCQkJdHBkMTJzMDE1X2luOiBlbmRwb2ludEAwIHsKKwkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmhkbWlfb3V0PjsKKwkJCX07CisJCX07CisKKwkJcG9ydEAxIHsKKwkJCXJlZyA9IDwxPjsKKworCQkJdHBkMTJzMDE1X291dDogZW5kcG9pbnRAMCB7CisJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZoZG1pX2Nvbm5lY3Rvcl9pbj47CisJCQl9OworCQl9OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvdGlsY2RjL3BhbmVsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RpbGNkYy9wYW5lbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIwYjMxYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RpbGNkYy9wYW5lbC50eHQKQEAgLTAsMCArMSw2NiBAQAorRGV2aWNlLVRyZWUgYmluZGluZ3MgZm9yIHRpbGNkYyBEUk0gZ2VuZXJpYyBwYW5lbCBvdXRwdXQgZHJpdmVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiB2YWx1ZSBzaG91bGQgYmUgInRpLHRpbGNkYyxwYW5lbCIuCisgLSBwYW5lbC1pbmZvOiBjb25maWd1cmF0aW9uIGluZm8gdG8gY29uZmlndXJlIExDREMgY29ycmVjdGx5IGZvciB0aGUgcGFuZWwKKyAgIC0gYWMtYmlhczogQUMgQmlhcyBQaW4gRnJlcXVlbmN5CisgICAtIGFjLWJpYXMtaW50cnB0OiBBQyBCaWFzIFBpbiBUcmFuc2l0aW9ucyBwZXIgSW50ZXJydXB0CisgICAtIGRtYS1idXJzdC1zejogRE1BIGJ1cnN0IHNpemUKKyAgIC0gYnBwOiBCaXRzIHBlciBwaXhlbAorICAgLSBmZGQ6IEZJRk8gRE1BIFJlcXVlc3QgRGVsYXkKKyAgIC0gc3luYy1lZGdlOiBIb3Jpem9udGFsIGFuZCBWZXJ0aWNhbCBTeW5jIEVkZ2U6IDA9cmlzaW5nIDE9ZmFsbGluZworICAgLSBzeW5jLWN0cmw6IEhvcml6b250YWwgYW5kIFZlcnRpY2FsIFN5bmM6IENvbnRyb2w6IDA9aWdub3JlCisgICAtIHJhc3Rlci1vcmRlcjogUmFzdGVyIERhdGEgT3JkZXIgU2VsZWN0OiAxPU1vc3QtdG8tbGVhc3QgMD1MZWFzdC10by1tb3N0CisgICAtIGZpZm8tdGg6IERNQSBGSUZPIHRocmVzaG9sZAorIC0gZGlzcGxheS10aW1pbmdzOiB0eXBpY2FsIHZpZGVvbW9kZSBvZiBsY2QgcGFuZWwuICBNdWx0aXBsZSB2aWRlbyBtb2RlcworICAgY2FuIGJlIGxpc3RlZCBpZiB0aGUgcGFuZWwgc3VwcG9ydHMgbXVsdGlwbGUgdGltaW5ncywgYnV0IHRoZSAnbmF0aXZlLW1vZGUnCisgICBzaG91bGQgYmUgdGhlIHByZWZlcnJlZC9kZWZhdWx0IHJlc29sdXRpb24uICBSZWZlciB0bworICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvZGlzcGxheS10aW1pbmcudHh0IGZvciBkaXNwbGF5CisgICB0aW1pbmcgYmluZGluZyBkZXRhaWxzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBiYWNrbGlnaHQ6IHBoYW5kbGUgb2YgdGhlIGJhY2tsaWdodCBkZXZpY2UgYXR0YWNoZWQgdG8gdGhlIHBhbmVsCistIGVuYWJsZS1ncGlvczogR1BJTyBwaW4gdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIHBhbmVsCisKK1JlY29tbWVuZGVkIHByb3BlcnRpZXM6CisgLSBwaW5jdHJsLW5hbWVzLCBwaW5jdHJsLTA6IHRoZSBwaW5jb250cm9sIHNldHRpbmdzIHRvIGNvbmZpZ3VyZQorICAgbXV4aW5nIHByb3Blcmx5IGZvciBwaW5zIHRoYXQgY29ubmVjdCB0byBURlA0MTAgZGV2aWNlCisKK0V4YW1wbGU6CisKKwkvKiBTZXR0aW5ncyBmb3IgQ0RUZWNoX1MwMzVRMDEgLyBMQ0QzIGNhcGU6ICovCisJbGNkMyB7CisJCWNvbXBhdGlibGUgPSAidGksdGlsY2RjLHBhbmVsIjsKKwkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwkJcGluY3RybC0wID0gPCZib25lX2xjZDNfY2FwZV9sY2RfcGlucz47CisJCWJhY2tsaWdodCA9IDwmYmFja2xpZ2h0PjsKKwkJZW5hYmxlLWdwaW9zID0gPCZncGlvMyAxOSAwPjsKKworCQlwYW5lbC1pbmZvIHsKKwkJCWFjLWJpYXMgICAgICAgICAgID0gPDI1NT47CisJCQlhYy1iaWFzLWludHJwdCAgICA9IDwwPjsKKwkJCWRtYS1idXJzdC1zeiAgICAgID0gPDE2PjsKKwkJCWJwcCAgICAgICAgICAgICAgID0gPDE2PjsKKwkJCWZkZCAgICAgICAgICAgICAgID0gPDB4ODA+OworCQkJc3luYy1lZGdlICAgICAgICAgPSA8MD47CisJCQlzeW5jLWN0cmwgICAgICAgICA9IDwxPjsKKwkJCXJhc3Rlci1vcmRlciAgICAgID0gPDA+OworCQkJZmlmby10aCAgICAgICAgICAgPSA8MD47CisJCX07CisJCWRpc3BsYXktdGltaW5ncyB7CisJCQluYXRpdmUtbW9kZSA9IDwmdGltaW5nMD47CisJCQl0aW1pbmcwOiAzMjB4MjQwIHsKKwkJCQloYWN0aXZlICAgICAgICAgPSA8MzIwPjsKKwkJCQl2YWN0aXZlICAgICAgICAgPSA8MjQwPjsKKwkJCQloYmFjay1wb3JjaCAgICAgPSA8MjE+OworCQkJCWhmcm9udC1wb3JjaCAgICA9IDw1OD47CisJCQkJaHN5bmMtbGVuICAgICAgID0gPDQ3PjsKKwkJCQl2YmFjay1wb3JjaCAgICAgPSA8MTE+OworCQkJCXZmcm9udC1wb3JjaCAgICA9IDwyMz47CisJCQkJdnN5bmMtbGVuICAgICAgID0gPDI+OworCQkJCWNsb2NrLWZyZXF1ZW5jeSA9IDw4MDAwMDAwPjsKKwkJCQloc3luYy1hY3RpdmUgICAgPSA8MD47CisJCQkJdnN5bmMtYWN0aXZlICAgID0gPDA+OworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvdGlsY2RjL3RmcDQxMC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90aWxjZGMvdGZwNDEwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNThhZTc3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvdGlsY2RjL3RmcDQxMC50eHQKQEAgLTAsMCArMSwyMSBAQAorRGV2aWNlLVRyZWUgYmluZGluZ3MgZm9yIHRpbGNkYyBEUk0gVEZQNDEwIG91dHB1dCBkcml2ZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGU6IHZhbHVlIHNob3VsZCBiZSAidGksdGlsY2RjLHRmcDQxMCIuCisgLSBpMmM6IHRoZSBwaGFuZGxlIGZvciB0aGUgaTJjIGRldmljZSB0byB1c2UgZm9yIEREQworCitSZWNvbW1lbmRlZCBwcm9wZXJ0aWVzOgorIC0gcGluY3RybC1uYW1lcywgcGluY3RybC0wOiB0aGUgcGluY29udHJvbCBzZXR0aW5ncyB0byBjb25maWd1cmUKKyAgIG11eGluZyBwcm9wZXJseSBmb3IgcGlucyB0aGF0IGNvbm5lY3QgdG8gVEZQNDEwIGRldmljZQorIC0gcG93ZXJkbi1ncGlvOiB0aGUgcG93ZXJkb3duIEdQSU8sIHB1bGxlZCBsb3cgdG8gcG93ZXIgZG93biB0aGUKKyAgIFRGUDQxMCBkZXZpY2UgKGZvciBEUE1TX09GRikKKworRXhhbXBsZToKKworCWR2aWNhcGUgeworCQljb21wYXRpYmxlID0gInRpLHRpbGNkYyx0ZnA0MTAiOworCQlpMmMgPSA8JmkyYzI+OworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JmJvbmVfZHZpX2NhcGVfZHZpXzAwQTFfcGlucz47CisJCXBvd2VyZG4tZ3BpbyA9IDwmZ3BpbzIgMzEgMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RpbGNkYy90aWxjZGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvdGlsY2RjL3RpbGNkYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjEzNmVlOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RpbGNkYy90aWxjZGMudHh0CkBAIC0wLDAgKzEsNTYgQEAKK0RldmljZS1UcmVlIGJpbmRpbmdzIGZvciB0aWxjZGMgRFJNIGRyaXZlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZTogdmFsdWUgc2hvdWxkIGJlICJ0aSxhbTMzeHgtdGlsY2RjIi4KKyAtIGludGVycnVwdHM6IHRoZSBpbnRlcnJ1cHQgbnVtYmVyCisgLSByZWc6IGJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgTENEQyBkZXZpY2UKKworUmVjb21tZW5kZWQgcHJvcGVydGllczoKKyAtIGludGVycnVwdC1wYXJlbnQ6IHRoZSBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgdGhhdAorICAgc2VydmljZXMgaW50ZXJydXB0cyBmb3IgdGhpcyBkZXZpY2UuCisgLSB0aSxod21vZHM6IE5hbWUgb2YgdGhlIGh3bW9kIGFzc29jaWF0ZWQgdG8gdGhlIExDREMKKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAtIG1heC1iYW5kd2lkdGg6IFRoZSBtYXhpbXVtIHBpeGVscyBwZXIgc2Vjb25kIHRoYXQgdGhlIG1lbW9yeQorICAgaW50ZXJmYWNlIC8gbGNkIGNvbnRyb2xsZXIgY29tYmluYXRpb24gY2FuIHN1c3RhaW4KKyAtIG1heC13aWR0aDogVGhlIG1heGltdW0gaG9yaXpvbnRhbCBwaXhlbCB3aWR0aCBzdXBwb3J0ZWQgYnkKKyAgIHRoZSBsY2QgY29udHJvbGxlci4KKyAtIG1heC1waXhlbGNsb2NrOiBUaGUgbWF4aW11bSBwaXhlbCBjbG9jayB0aGF0IGNhbiBiZSBzdXBwb3J0ZWQKKyAgIGJ5IHRoZSBsY2QgY29udHJvbGxlciBpbiBLSHouCisKK09wdGlvbmFsIG5vZGVzOgorCisgLSBwb3J0L3BvcnRzOiB0byBkZXNjcmliZSBhIGNvbm5lY3Rpb24gdG8gYW4gZXh0ZXJuYWwgZW5jb2Rlci4gVGhlCisgICBiaW5kaW5nIGZvbGxvd3MgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dyYXBoLnR4dCBhbmQKKyAgIHN1cHBvcnMgYSBzaW5nbGUgcG9ydCB3aXRoIGEgc2luZ2xlIGVuZHBvaW50LgorCitFeGFtcGxlOgorCisJZmI6IGZiQDQ4MzBlMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSxhbTMzeHgtdGlsY2RjIjsKKwkJcmVnID0gPDB4NDgzMGUwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmaW50Yz47CisJCWludGVycnVwdHMgPSA8MzY+OworCQl0aSxod21vZHMgPSAibGNkYyI7CisKKwkJcG9ydCB7CisJCQlsY2RjXzA6IGVuZHBvaW50QDAgeworCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmaGRtaV8wPjsKKwkJCX07CisJCX07CisJfTsKKworCXRkYTE5OTg4OiB0ZGExOTk4OCB7CisJCWNvbXBhdGlibGUgPSAibnhwLHRkYTk5OHgiOworCQlyZWcgPSA8MHg3MD47CisKKwkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IiwgIm9mZiI7CisJCXBpbmN0cmwtMCA9IDwmbnhwX2hkbWlfYm9uZWx0X3BpbnM+OworCQlwaW5jdHJsLTEgPSA8Jm54cF9oZG1pX2JvbmVsdF9vZmZfcGlucz47CisKKwkJcG9ydCB7CisJCQloZG1pXzA6IGVuZHBvaW50QDAgeworCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmbGNkY18wPjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3ZpYSx2dDg1MDAtZmIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvdmlhLHZ0ODUwMC1mYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg3MWUyMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3ZpYSx2dDg1MDAtZmIudHh0CkBAIC0wLDAgKzEsMzYgQEAKK1ZJQSBWVDg1MDAgRnJhbWVidWZmZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAidmlhLHZ0ODUwMC1mYiIKKy0gcmVnIDogU2hvdWxkIGNvbnRhaW4gMSByZWdpc3RlciByYW5nZXMoYWRkcmVzcyBhbmQgbGVuZ3RoKQorLSBpbnRlcnJ1cHRzIDogZnJhbWVidWZmZXIgY29udHJvbGxlciBpbnRlcnJ1cHQKKy0gYml0cy1wZXItcGl4ZWwgOiBiaXQgZGVwdGggb2YgZnJhbWVidWZmZXIgKDE2IG9yIDMyKQorCitSZXF1aXJlZCBzdWJub2RlczoKKy0gZGlzcGxheS10aW1pbmdzOiBzZWUgZGlzcGxheS10aW1pbmcudHh0IGZvciBpbmZvcm1hdGlvbgorCitFeGFtcGxlOgorCisJZmJAZDgwNTA4MDAgeworCQljb21wYXRpYmxlID0gInZpYSx2dDg1MDAtZmIiOworCQlyZWcgPSA8MHhkODAwZTQwMCAweDQwMD47CisJCWludGVycnVwdHMgPSA8MTI+OworCQliaXRzLXBlci1waXhlbCA9IDwxNj47CisKKwkJZGlzcGxheS10aW1pbmdzIHsKKwkJCW5hdGl2ZS1tb2RlID0gPCZ0aW1pbmcwPjsKKwkJCXRpbWluZzA6IDgwMHg0ODAgeworCQkJCWNsb2NrLWZyZXF1ZW5jeSA9IDwwPjsgLyogdW51c2VkIGJ1dCByZXF1aXJlZCAqLworCQkJCWhhY3RpdmUgPSA8ODAwPjsKKwkJCQl2YWN0aXZlID0gPDQ4MD47CisJCQkJaGZyb250LXBvcmNoID0gPDQwPjsKKwkJCQloYmFjay1wb3JjaCA9IDw4OD47CisJCQkJaHN5bmMtbGVuID0gPDA+OworCQkJCXZiYWNrLXBvcmNoID0gPDMyPjsKKwkJCQl2ZnJvbnQtcG9yY2ggPSA8MTE+OworCQkJCXZzeW5jLWxlbiA9IDwxPjsKKwkJCX07CisJCX07CisJfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvd20scHJpem0tZ2Utcm9wcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS93bSxwcml6bS1nZS1yb3BzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODUwZmEwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvd20scHJpem0tZ2Utcm9wcy50eHQKQEAgLTAsMCArMSwxMyBAQAorVklBL1dvbmRlcm1lZGlhIEdyYXBoaWNzIEVuZ2luZSBDb250cm9sbGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogIndtLHByaXptLWdlLXJvcHMiCistIHJlZyA6IFNob3VsZCBjb250YWluIDEgcmVnaXN0ZXIgcmFuZ2VzKGFkZHJlc3MgYW5kIGxlbmd0aCkKKworRXhhbXBsZToKKworCWdlX3JvcHNAZDgwNTA0MDAgeworCQljb21wYXRpYmxlID0gIndtLHByaXptLWdlLXJvcHMiOworCQlyZWcgPSA8MHhkODA1MDQwMCAweDEwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3dtLHdtODUwNS1mYi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS93bSx3bTg1MDUtZmIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiY2FkYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS93bSx3bTg1MDUtZmIudHh0CkBAIC0wLDAgKzEsMzMgQEAKK1dvbmRlcm1lZGlhIFdNODUwNSBGcmFtZWJ1ZmZlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJ3bSx3bTg1MDUtZmIiCistIHJlZyA6IFNob3VsZCBjb250YWluIDEgcmVnaXN0ZXIgcmFuZ2VzKGFkZHJlc3MgYW5kIGxlbmd0aCkKKy0gYml0cy1wZXItcGl4ZWwgOiBiaXQgZGVwdGggb2YgZnJhbWVidWZmZXIgKDE2IG9yIDMyKQorCitSZXF1aXJlZCBzdWJub2RlczoKKy0gZGlzcGxheS10aW1pbmdzOiBzZWUgZGlzcGxheS10aW1pbmcudHh0IGZvciBpbmZvcm1hdGlvbgorCitFeGFtcGxlOgorCisJZmJAZDgwNTE3MDAgeworCQljb21wYXRpYmxlID0gIndtLHdtODUwNS1mYiI7CisJCXJlZyA9IDwweGQ4MDUxNzAwIDB4MjAwPjsKKwkJYml0cy1wZXItcGl4ZWwgPSA8MTY+OworCisJCWRpc3BsYXktdGltaW5ncyB7CisJCQluYXRpdmUtbW9kZSA9IDwmdGltaW5nMD47CisJCQl0aW1pbmcwOiA4MDB4NDgwIHsKKwkJCQljbG9jay1mcmVxdWVuY3kgPSA8MD47IC8qIHVudXNlZCBidXQgcmVxdWlyZWQgKi8KKwkJCQloYWN0aXZlID0gPDgwMD47CisJCQkJdmFjdGl2ZSA9IDw0ODA+OworCQkJCWhmcm9udC1wb3JjaCA9IDw0MD47CisJCQkJaGJhY2stcG9yY2ggPSA8ODg+OworCQkJCWhzeW5jLWxlbiA9IDwwPjsKKwkJCQl2YmFjay1wb3JjaCA9IDwzMj47CisJCQkJdmZyb250LXBvcmNoID0gPDExPjsKKwkJCQl2c3luYy1sZW4gPSA8MT47CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2FkaSxheGktZG1hYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2FkaSxheGktZG1hYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdjYjFkMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvYWRpLGF4aS1kbWFjLnR4dApAQCAtMCwwICsxLDYxIEBACitBbmFsb2cgRGV2aWNlIEFYSS1ETUFDIERNQSBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiBNdXN0IGJlICJhZGksYXhpLWRtYWMtMS4wMC5hIi4KKyAtIHJlZzogU3BlY2lmaWNhdGlvbiBmb3IgdGhlIGNvbnRyb2xsZXJzIG1lbW9yeSBtYXBwZWQgcmVnaXN0ZXIgbWFwLgorIC0gaW50ZXJydXB0czogU3BlY2lmaWNhdGlvbiBmb3IgdGhlIGNvbnRyb2xsZXJzIGludGVycnVwdC4KKyAtIGNsb2NrczogUGhhbmRsZSBhbmQgc3BlY2lmaWVyIHRvIHRoZSBjb250cm9sbGVycyBBWEkgaW50ZXJmYWNlIGNsb2NrCisgLSAjZG1hLWNlbGxzOiBNdXN0IGJlIDEuCisKK1JlcXVpcmVkIHN1Yi1ub2RlczoKKyAtIGFkaSxjaGFubmVsczogVGhpcyBzdWItbm9kZSBtdXN0IGNvbnRhaW4gYSBzdWItbm9kZSBmb3IgZWFjaCBETUEgY2hhbm5lbC4gRm9yCisgICB0aGUgY2hhbm5lbCBzdWItbm9kZXMgdGhlIGZvbGxvd2luZyBiaW5kaW5ncyBhcHBseS4gVGhleSBtdXN0IG1hdGNoIHRoZQorICAgY29uZmlndXJhdGlvbiBvcHRpb25zIG9mIHRoZSBwZXJpcGhlcmFsIGFzIGl0IHdhcyBpbnN0YW50aWF0ZWQuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIGFkaSxjaGFubmVscyBzdWItbm9kZToKKyAtICNzaXplLWNlbGxzOiBNdXN0IGJlIDAKKyAtICNhZGRyZXNzLWNlbGxzOiBNdXN0IGJlIDEKKworUmVxdWlyZWQgY2hhbm5lbCBzdWItbm9kZSBwcm9wZXJ0aWVzOgorIC0gcmVnOiBXaGljaCBjaGFubmVsIHRoaXMgbm9kZSByZWZlcnMgdG8uCisgLSBhZGksbGVuZ3RoLXdpZHRoOiBXaWR0aCBvZiB0aGUgRE1BIHRyYW5zZmVyIGxlbmd0aCByZWdpc3Rlci4KKyAtIGFkaSxzb3VyY2UtYnVzLXdpZHRoLAorICAgYWRpLGRlc3RpbmF0aW9uLWJ1cy13aWR0aDogV2lkdGggb2YgdGhlIHNvdXJjZSBvciBkZXN0aW5hdGlvbiBidXMgaW4gYml0cy4KKyAtIGFkaSxzb3VyY2UtYnVzLXR5cGUsCisgICBhZGksZGVzdGluYXRpb24tYnVzLXR5cGU6IFR5cGUgb2YgdGhlIHNvdXJjZSBvciBkZXN0aW5hdGlvbiBidXMuIE11c3QgYmUgb25lCisgICBvZiB0aGUgZm9sbG93aW5nOgorCTAgKEFYSV9ETUFDX1RZUEVfQVhJX01NKTogTWVtb3J5IG1hcHBlZCBBWEkgaW50ZXJmYWNlCisJMSAoQVhJX0RNQUNfVFlQRV9BWElfU1RSRUFNKTogU3RyZWFtaW5nIEFYSSBpbnRlcmZhY2UKKwkyIChBWElfRE1BQ19UWVBFX0FYSV9GSUZPKTogRklGTyBpbnRlcmZhY2UKKworT3B0aW9uYWwgY2hhbm5lbCBwcm9wZXJ0aWVzOgorIC0gYWRpLGN5Y2xpYzogTXVzdCBiZSBzZXQgaWYgdGhlIGNoYW5uZWwgc3VwcG9ydHMgaGFyZHdhcmUgY3ljbGljIERNQQorICAgdHJhbnNmZXJzLgorIC0gYWRpLDJkOiBNdXN0IGJlIHNldCBpZiB0aGUgY2hhbm5lbCBzdXBwb3J0cyBoYXJkd2FyZSAyRCBETUEgdHJhbnNmZXJzLgorCitETUEgY2xpZW50cyBjb25uZWN0ZWQgdG8gdGhlIEFYSS1ETUFDIERNQSBjb250cm9sbGVyIG11c3QgdXNlIHRoZSBmb3JtYXQKK2Rlc2NyaWJlZCBpbiB0aGUgZG1hLnR4dCBmaWxlIHVzaW5nIGEgb25lLWNlbGwgc3BlY2lmaWVyLiBUaGUgdmFsdWUgb2YgdGhlCitzcGVjaWZpZXIgcmVmZXJzIHRvIHRoZSBETUEgY2hhbm5lbCBpbmRleC4KKworRXhhbXBsZToKKworZG1hOiBkbWFAN2M0MjAwMDAgeworCWNvbXBhdGlibGUgPSAiYWRpLGF4aS1kbWFjLTEuMDAuYSI7CisJcmVnID0gPDB4N2M0MjAwMDAgMHgxMDAwMD47CisJaW50ZXJydXB0cyA9IDwwIDU3IDA+OworCWNsb2NrcyA9IDwmY2xrYyAxNj47CisJI2RtYS1jZWxscyA9IDwxPjsKKworCWFkaSxjaGFubmVscyB7CisJCSNzaXplLWNlbGxzID0gPDA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKworCQlkbWEtY2hhbm5lbEAwIHsKKwkJCXJlZyA9IDwwPjsKKwkJCWFkaSxzb3VyY2UtYnVzLXdpZHRoID0gPDMyPjsKKwkJCWFkaSxzb3VyY2UtYnVzLXR5cGUgPSA8QURJX0FYSV9ETUFDX1RZUEVfTU1fQVhJPjsKKwkJCWFkaSxkZXN0aW5hdGlvbi1idXMtd2lkdGggPSA8NjQ+OworCQkJYWRpLGRlc3RpbmF0aW9uLWJ1cy10eXBlID0gPEFESV9BWElfRE1BQ19UWVBFX0ZJRk8+OworCQl9OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9hcG0teGdlbmUtZG1hLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvYXBtLXhnZW5lLWRtYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzUzZTBiMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvYXBtLXhnZW5lLWRtYS50eHQKQEAgLTAsMCArMSw0NyBAQAorQXBwbGllZCBNaWNybyBYLUdlbmUgU29DIERNQSBub2RlcworCitETUEgbm9kZXMgYXJlIGRlZmluZWQgdG8gZGVzY3JpYmUgb24tY2hpcCBETUEgaW50ZXJmYWNlcyBpbgorQVBNIFgtR2VuZSBTb0MuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIERNQSBpbnRlcmZhY2VzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImFwbSx4Z2VuZS1kbWEiLgorLSBkZXZpY2VfdHlwZTogc2V0IHRvICJkbWEiLgorLSByZWc6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlLgorICBJdCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gb2YgcmVnaXN0ZXJzIGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6CisgIDFzdCAtIERNQSBjb250cm9sIGFuZCBzdGF0dXMgcmVnaXN0ZXIgYWRkcmVzcyBzcGFjZS4KKyAgMm5kIC0gRGVzY3JpcHRvciByaW5nIGNvbnRyb2wgYW5kIHN0YXR1cyByZWdpc3RlciBhZGRyZXNzIHNwYWNlLgorICAzcmQgLSBEZXNjcmlwdG9yIHJpbmcgY29tbWFuZCByZWdpc3RlciBhZGRyZXNzIHNwYWNlLgorICA0dGggLSBTb2MgZWZ1c2UgcmVnaXN0ZXIgYWRkcmVzcyBzcGFjZS4KKy0gaW50ZXJydXB0czogRE1BIGhhcyA1IGludGVycnVwdHMgc291cmNlcy4gMXN0IGludGVycnVwdCBpcworICBETUEgZXJyb3IgcmVwb3J0aW5nIGludGVycnVwdC4gMm5kLCAzcmQsIDR0aCBhbmQgNXRoIGludGVycnVwdHMKKyAgYXJlIGNvbXBsZXRpb24gaW50ZXJydXB0cyBmb3IgZWFjaCBETUEgY2hhbm5lbHMuCistIGNsb2NrczogUmVmZXJlbmNlIHRvIHRoZSBjbG9jayBlbnRyeS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gZG1hLWNvaGVyZW50IDogUHJlc2VudCBpZiBkbWEgb3BlcmF0aW9ucyBhcmUgY29oZXJlbnQKKworRXhhbXBsZToKKwlkbWFjbGs6IGRtYWNsa0AxZjI3YzAwMCB7CisJCWNvbXBhdGlibGUgPSAiYXBtLHhnZW5lLWRldmljZS1jbG9jayI7CisJCSNjbG9jay1jZWxscyA9IDwxPjsKKwkJY2xvY2tzID0gPCZzb2NwbGxkaXYyIDA+OworCQlyZWcgPSA8MHgwIDB4MWYyN2MwMDAgMHgwIDB4MTAwMD47CisJCXJlZy1uYW1lcyA9ICJjc3ItcmVnIjsKKwkJY2xvY2stb3V0cHV0LW5hbWVzID0gImRtYWNsayI7CisJfTsKKworCWRtYTogZG1hQDFmMjcwMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiYXBtLHhnZW5lLXN0b3JtLWRtYSI7CisJCQlkZXZpY2VfdHlwZSA9ICJkbWEiOworCQkJcmVnID0gPDB4MCAweDFmMjcwMDAwIDB4MCAweDEwMDAwPiwKKwkJCSAgICAgIDwweDAgMHgxZjIwMDAwMCAweDAgMHgxMDAwMD4sCisJCQkgICAgICA8MHgwIDB4MWIwMDAwMDAgMHgwIDB4NDAwMDAwPiwKKwkJCSAgICAgIDwweDAgMHgxMDU0YTAwMCAweDAgMHgxMDA+OworCQkJaW50ZXJydXB0cyA9IDwweDAgMHg4MiAweDQ+LAorCQkJCSAgICAgPDB4MCAweGI4IDB4ND4sCisJCQkJICAgICA8MHgwIDB4YjkgMHg0PiwKKwkJCQkgICAgIDwweDAgMHhiYSAweDQ+LAorCQkJCSAgICAgPDB4MCAweGJiIDB4ND47CisJCQlkbWEtY29oZXJlbnQ7CisJCQljbG9ja3MgPSA8JmRtYWNsayAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9hcm0tcGwwOHgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9hcm0tcGwwOHgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhMDA5N2EKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2FybS1wbDA4eC50eHQKQEAgLTAsMCArMSw1NCBAQAorKiBBUk0gUHJpbWVDZWxscyBQTDA4MCBhbmQgUEwwODEgYW5kIGRlcml2YXRpdmVzIERNQSBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJhcm0scGwwODAiLCAiYXJtLHByaW1lY2VsbCI7CisJICAgICAgImFybSxwbDA4MSIsICJhcm0scHJpbWVjZWxsIjsKKy0gcmVnOiBBZGRyZXNzIHJhbmdlIG9mIHRoZSBQTDA4eCByZWdpc3RlcnMKKy0gaW50ZXJydXB0OiBUaGUgUEwwOHggaW50ZXJydXB0IG51bWJlcgorLSBjbG9ja3M6IFRoZSBjbG9jayBydW5uaW5nIHRoZSBJUCBjb3JlIGNsb2NrCistIGNsb2NrLW5hbWVzOiBNdXN0IGNvbnRhaW4gImFwYl9wY2xrIgorLSBsbGktYnVzLWludGVyZmFjZS1haGIxOiBpZiBBSEIgbWFzdGVyIDEgaXMgZWxpZ2libGUgZm9yIGZldGNoaW5nIExMSXMKKy0gbGxpLWJ1cy1pbnRlcmZhY2UtYWhiMjogaWYgQUhCIG1hc3RlciAyIGlzIGVsaWdpYmxlIGZvciBmZXRjaGluZyBMTElzCistIG1lbS1idXMtaW50ZXJmYWNlLWFoYjE6IGlmIEFIQiBtYXN0ZXIgMSBpcyBlbGlnaWJsZSBmb3IgZmV0Y2hpbmcgbWVtb3J5IGNvbnRlbnRzCistIG1lbS1idXMtaW50ZXJmYWNlLWFoYjI6IGlmIEFIQiBtYXN0ZXIgMiBpcyBlbGlnaWJsZSBmb3IgZmV0Y2hpbmcgbWVtb3J5IGNvbnRlbnRzCistICNkbWEtY2VsbHM6IG11c3QgYmUgPDI+LiBGaXJzdCBjZWxsIHNob3VsZCBjb250YWluIHRoZSBETUEgcmVxdWVzdCwKKyAgICAgICAgICAgICAgc2Vjb25kIGNlbGwgc2hvdWxkIGNvbnRhaW4gZWl0aGVyIDEgb3IgMiBkZXBlbmRpbmcgb24KKyAgICAgICAgICAgICAgd2hpY2ggQUhCIG1hc3RlciB0aGF0IGlzIHVzZWQuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGRtYS1jaGFubmVsczogY29udGFpbnMgdGhlIHRvdGFsIG51bWJlciBvZiBETUEgY2hhbm5lbHMgc3VwcG9ydGVkIGJ5IHRoZSBETUFDCistIGRtYS1yZXF1ZXN0czogY29udGFpbnMgdGhlIHRvdGFsIG51bWJlciBvZiBETUEgcmVxdWVzdHMgc3VwcG9ydGVkIGJ5IHRoZSBETUFDCistIG1lbWNweS1idXJzdC1zaXplOiB0aGUgc2l6ZSBvZiB0aGUgYnVyc3RzIGZvciBtZW1jcHk6IDEsIDQsIDgsIDE2LCAzMgorICA2NCwgMTI4IG9yIDI1NiBieXRlcyBhcmUgbGVnYWwgdmFsdWVzCistIG1lbWNweS1idXMtd2lkdGg6IHRoZSBidXMgd2lkdGggdXNlZCBmb3IgbWVtY3B5OiA4LCAxNiBvciAzMiBhcmUgbGVnYWwKKyAgdmFsdWVzCisKK0NsaWVudHMKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGRtYXM6IExpc3Qgb2YgRE1BIGNvbnRyb2xsZXIgcGhhbmRsZSwgcmVxdWVzdCBjaGFubmVsIGFuZCBBSEIgbWFzdGVyIGlkCistIGRtYS1uYW1lczogTmFtZXMgb2YgdGhlIGFmb3JlbWVudGlvbmVkIHJlcXVlc3RlZCBjaGFubmVscworCitFeGFtcGxlOgorCitkbWFjMDogZG1hLWNvbnRyb2xsZXJAMTAxMzAwMDAgeworCWNvbXBhdGlibGUgPSAiYXJtLHBsMDgwIiwgImFybSxwcmltZWNlbGwiOworCXJlZyA9IDwweDEwMTMwMDAwIDB4MTAwMD47CisJaW50ZXJydXB0LXBhcmVudCA9IDwmdmljYT47CisJaW50ZXJydXB0cyA9IDwxNT47CisJY2xvY2tzID0gPCZoY2xrZG1hMD47CisJY2xvY2stbmFtZXMgPSAiYXBiX3BjbGsiOworCWxsaS1idXMtaW50ZXJmYWNlLWFoYjE7CisJbGxpLWJ1cy1pbnRlcmZhY2UtYWhiMjsKKwltZW0tYnVzLWludGVyZmFjZS1haGIyOworCW1lbWNweS1idXJzdC1zaXplID0gPDI1Nj47CisJbWVtY3B5LWJ1cy13aWR0aCA9IDwzMj47CisJI2RtYS1jZWxscyA9IDwyPjsKK307CisKK2RldmljZUA0MDAwODAwMCB7CisJLi4uCisJZG1hcyA9IDwmZG1hYzAgMCAyCisJCSZkbWFjMCAxIDI+OworCWRtYS1uYW1lcyA9ICJ0eCIsICJyeCI7CisJLi4uCit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9hcm0tcGwzMzAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9hcm0tcGwzMzAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2NzU2NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2FybS1wbDMzMC50eHQKQEAgLTAsMCArMSw0NCBAQAorKiBBUk0gUHJpbWVDZWxsIFBMMzMwIERNQSBDb250cm9sbGVyCisKK1RoZSBBUk0gUHJpbWVDZWxsIFBMMzMwIERNQSBjb250cm9sbGVyIGNhbiBtb3ZlIGJsb2NrcyBvZiBtZW1vcnkgY29udGVudHMKK2JldHdlZW4gbWVtb3J5IGFuZCBwZXJpcGhlcmFscyBvciBtZW1vcnkgdG8gbWVtb3J5LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6IHNob3VsZCBpbmNsdWRlIGJvdGggImFybSxwbDMzMCIgYW5kICJhcm0scHJpbWVjZWxsIi4KKyAgLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgICByZWdpb24uCisgIC0gaW50ZXJydXB0czogaW50ZXJydXB0IG51bWJlciB0byB0aGUgY3B1LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIGRtYS1jb2hlcmVudCAgICAgIDogUHJlc2VudCBpZiBkbWEgb3BlcmF0aW9ucyBhcmUgY29oZXJlbnQKKyAgLSAjZG1hLWNlbGxzOiBtdXN0IGJlIDwxPi4gdXNlZCB0byByZXByZXNlbnQgdGhlIG51bWJlciBvZiBpbnRlZ2VyCisgICAgY2VsbHMgaW4gdGhlIGRtYXMgcHJvcGVydHkgb2YgY2xpZW50IGRldmljZS4KKyAgLSBkbWEtY2hhbm5lbHM6IGNvbnRhaW5zIHRoZSB0b3RhbCBudW1iZXIgb2YgRE1BIGNoYW5uZWxzIHN1cHBvcnRlZCBieSB0aGUgRE1BQworICAtIGRtYS1yZXF1ZXN0czogY29udGFpbnMgdGhlIHRvdGFsIG51bWJlciBvZiBETUEgcmVxdWVzdHMgc3VwcG9ydGVkIGJ5IHRoZSBETUFDCisKK0V4YW1wbGU6CisKKwlwZG1hMDogcGRtYUAxMjY4MDAwMCB7CisJCWNvbXBhdGlibGUgPSAiYXJtLHBsMzMwIiwgImFybSxwcmltZWNlbGwiOworCQlyZWcgPSA8MHgxMjY4MDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDk5PjsKKwkJI2RtYS1jZWxscyA9IDwxPjsKKwkJI2RtYS1jaGFubmVscyA9IDw4PjsKKwkJI2RtYS1yZXF1ZXN0cyA9IDwzMj47CisJfTsKKworQ2xpZW50IGRyaXZlcnMgKGRldmljZSBub2RlcyByZXF1aXJpbmcgZG1hIHRyYW5zZmVycyBmcm9tIGRldi10by1tZW0gb3IKK21lbS10by1kZXYpIHNob3VsZCBzcGVjaWZ5IHRoZSBETUEgY2hhbm5lbCBudW1iZXJzIGFuZCBkbWEgY2hhbm5lbCBuYW1lcworYXMgc2hvd24gYmVsb3cuCisKKyAgW3Byb3BlcnR5IG5hbWVdICA9IDxbcGhhbmRsZSBvZiB0aGUgZG1hIGNvbnRyb2xsZXJdIFtkbWEgcmVxdWVzdCBpZF0+OworICBbcHJvcGVydHkgbmFtZV0gID0gPFtkbWEgY2hhbm5lbCBuYW1lXT4KKworICAgICAgd2hlcmUgJ2RtYSByZXF1ZXN0IGlkJyBpcyB0aGUgZG1hIHJlcXVlc3QgbnVtYmVyIHdoaWNoIGlzIGNvbm5lY3RlZAorICAgICAgdG8gdGhlIGNsaWVudCBjb250cm9sbGVyLiBUaGUgJ3Byb3BlcnR5IG5hbWUnICdkbWFzJyBhbmQgJ2RtYS1uYW1lcycKKyAgICAgIGFzIHJlcXVpcmVkIGJ5IHRoZSBnZW5lcmljIGRtYSBkZXZpY2UgdHJlZSBiaW5kaW5nIGhlbHBlcnMuIFRoZSBkbWEKKyAgICAgIG5hbWVzIGNvcnJlc3BvbmQgMToxIHdpdGggdGhlIGRtYSByZXF1ZXN0IGlkcyBpbiB0aGUgZG1hcyBwcm9wZXJ0eS4KKworICBFeGFtcGxlOiAgZG1hcyA9IDwmcGRtYTAgMTIKKwkJICAgICZwZG1hMSAxMT47CisJICAgIGRtYS1uYW1lcyA9ICJ0eCIsICJyeCI7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2F0bWVsLWRtYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2F0bWVsLWRtYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY5YmNmNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvYXRtZWwtZG1hLnR4dApAQCAtMCwwICsxLDQyIEBACisqIEF0bWVsIERpcmVjdCBNZW1vcnkgQWNjZXNzIENvbnRyb2xsZXIgKERNQSkKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJhdG1lbCw8Y2hpcD4tZG1hIi4KKy0gcmVnOiBTaG91bGQgY29udGFpbiBETUEgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGguCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIERNQSBpbnRlcnJ1cHQuCistICNkbWEtY2VsbHM6IE11c3QgYmUgPDI+LCB1c2VkIHRvIHJlcHJlc2VudCB0aGUgbnVtYmVyIG9mIGludGVnZXIgY2VsbHMgaW4KK3RoZSBkbWFzIHByb3BlcnR5IG9mIGNsaWVudCBkZXZpY2VzLgorCitFeGFtcGxlOgorCitkbWEwOiBkbWFAZmZmZmVjMDAgeworCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXNhbTlnNDUtZG1hIjsKKwlyZWcgPSA8MHhmZmZmZWMwMCAweDIwMD47CisJaW50ZXJydXB0cyA9IDwyMT47CisJI2RtYS1jZWxscyA9IDwyPjsKK307CisKK0RNQSBjbGllbnRzIGNvbm5lY3RlZCB0byB0aGUgQXRtZWwgRE1BIGNvbnRyb2xsZXIgbXVzdCB1c2UgdGhlIGZvcm1hdAorZGVzY3JpYmVkIGluIHRoZSBkbWEudHh0IGZpbGUsIHVzaW5nIGEgdGhyZWUtY2VsbCBzcGVjaWZpZXIgZm9yIGVhY2ggY2hhbm5lbDoKK2EgcGhhbmRsZSBwbHVzIHR3byBpbnRlZ2VyIGNlbGxzLgorVGhlIHRocmVlIGNlbGxzIGluIG9yZGVyIGFyZToKKworMS4gQSBwaGFuZGxlIHBvaW50aW5nIHRvIHRoZSBETUEgY29udHJvbGxlci4KKzIuIFRoZSBtZW1vcnkgaW50ZXJmYWNlICgxNiBtb3N0IHNpZ25pZmljYW50IGJpdHMpLCB0aGUgcGVyaXBoZXJhbCBpbnRlcmZhY2UKKygxNiBsZXNzIHNpZ25pZmljYW50IGJpdHMpLgorMy4gUGFyYW1ldGVycyBmb3IgdGhlIGF0OTEgRE1BIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgd2hpY2ggYXJlIGRldmljZQorZGVwZW5kZW50OgorICAtIGJpdCA3LTA6IHBlcmlwaGVyYWwgaWRlbnRpZmllciBmb3IgdGhlIGhhcmR3YXJlIGhhbmRzaGFraW5nIGludGVyZmFjZS4gVGhlCisgIGlkZW50aWZpZXIgY2FuIGJlIGRpZmZlcmVudCBmb3IgdHggYW5kIHJ4LgorICAtIGJpdCAxMS04OiBGSUZPIGNvbmZpZ3VyYXRpb24uIDAgZm9yIGhhbGYgRklGTywgMSBmb3IgQUxBUCwgMiBmb3IgQVNBUC4KKworRXhhbXBsZToKKworaTJjMEBpMmNAZjgwMTAwMDAgeworCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXNhbTl4NS1pMmMiOworCXJlZyA9IDwweGY4MDEwMDAwIDB4MTAwPjsKKwlpbnRlcnJ1cHRzID0gPDkgNCA2PjsKKwlkbWFzID0gPCZkbWEwIDEgNz4sCisJICAgICAgIDwmZG1hMCAxIDg+OworCWRtYS1uYW1lcyA9ICJ0eCIsICJyeCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9hdG1lbC14ZG1hLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvYXRtZWwteGRtYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGViMmIzMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvYXRtZWwteGRtYS50eHQKQEAgLTAsMCArMSw1NCBAQAorKiBBdG1lbCBFeHRlbnNpYmxlIERpcmVjdCBNZW1vcnkgQWNjZXNzIENvbnRyb2xsZXIgKFhETUFDKQorCisqIFhETUEgQ29udHJvbGxlcgorUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJhdG1lbCw8Y2hpcD4tZG1hIi4KKyAgPGNoaXA+IGNvbXBhdGlibGUgZGVzY3JpcHRpb246CisgIC0gc2FtYTVkNDogZmlyc3QgU29DIGFkZGluZyB0aGUgWERNQUMKKy0gcmVnOiBTaG91bGQgY29udGFpbiBETUEgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGguCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIERNQSBpbnRlcnJ1cHQuCistICNkbWEtY2VsbHM6IE11c3QgYmUgPDE+LCB1c2VkIHRvIHJlcHJlc2VudCB0aGUgbnVtYmVyIG9mIGludGVnZXIgY2VsbHMgaW4KK3RoZSBkbWFzIHByb3BlcnR5IG9mIGNsaWVudCBkZXZpY2VzLgorICAtIFRoZSAxc3QgY2VsbCBzcGVjaWZpZXMgdGhlIGNoYW5uZWwgY29uZmlndXJhdGlvbiByZWdpc3RlcjoKKyAgICAtIGJpdCAxMzogU0lGLCBzb3VyY2UgaW50ZXJmYWNlIGlkZW50aWZpZXIsIHVzZWQgdG8gZ2V0IHRoZSBtZW1vcnkKKyAgICBpbnRlcmZhY2UgaWRlbnRpZmllciwKKyAgICAtIGJpdCAxNDogRElGLCBkZXN0aW5hdGlvbiBpbnRlcmZhY2UgaWRlbnRpZmllciwgdXNlZCB0byBnZXQgdGhlIHBlcmlwaGVyYWwKKyAgICBpbnRlcmZhY2UgaWRlbnRpZmllciwKKyAgICAtIGJpdCAzMC0yNDogUEVSSUQsIHBlcmlwaGVyYWwgaWRlbnRpZmllci4KKworRXhhbXBsZToKKworZG1hMTogZG1hLWNvbnRyb2xsZXJAZjAwMDQwMDAgeworCWNvbXBhdGlibGUgPSAiYXRtZWwsc2FtYTVkNC1kbWEiOworCXJlZyA9IDwweGYwMDA0MDAwIDB4MjAwPjsKKwlpbnRlcnJ1cHRzID0gPDUwIDQgMD47CisJI2RtYS1jZWxscyA9IDwxPjsKK307CisKKworKiBETUEgY2xpZW50cworRE1BIGNsaWVudHMgY29ubmVjdGVkIHRvIHRoZSBBdG1lbCBYRE1BIGNvbnRyb2xsZXIgbXVzdCB1c2UgdGhlIGZvcm1hdAorZGVzY3JpYmVkIGluIHRoZSBkbWEudHh0IGZpbGUsIHVzaW5nIGEgb25lLWNlbGwgc3BlY2lmaWVyIGZvciBlYWNoIGNoYW5uZWwuCitUaGUgdHdvIGNlbGxzIGluIG9yZGVyIGFyZToKKzEuIEEgcGhhbmRsZSBwb2ludGluZyB0byB0aGUgRE1BIGNvbnRyb2xsZXIuCisyLiBDaGFubmVsIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIuIENvbmZpZ3VyYWJsZSBmaWVsZHMgYXJlOgorICAgIC0gYml0IDEzOiBTSUYsIHNvdXJjZSBpbnRlcmZhY2UgaWRlbnRpZmllciwgdXNlZCB0byBnZXQgdGhlIG1lbW9yeQorICAgIGludGVyZmFjZSBpZGVudGlmaWVyLAorICAgIC0gYml0IDE0OiBESUYsIGRlc3RpbmF0aW9uIGludGVyZmFjZSBpZGVudGlmaWVyLCB1c2VkIHRvIGdldCB0aGUgcGVyaXBoZXJhbAorICAgIGludGVyZmFjZSBpZGVudGlmaWVyLAorICAtIGJpdCAzMC0yNDogUEVSSUQsIHBlcmlwaGVyYWwgaWRlbnRpZmllci4KKworRXhhbXBsZToKKworaTJjMjogaTJjQGY4MDI0MDAwIHsKKwljb21wYXRpYmxlID0gImF0bWVsLGF0OTFzYW05eDUtaTJjIjsKKwlyZWcgPSA8MHhmODAyNDAwMCAweDQwMDA+OworCWludGVycnVwdHMgPSA8MzQgNCA2PjsKKwlkbWFzID0gPCZkbWExCisJCShBVDkxX1hETUFDX0RUX01FTV9JRigwKSB8IEFUOTFfWERNQUNfRFRfUEVSX0lGKDEpCisJCSB8IEFUOTFfWERNQUNfRFRfUEVSSUQoNikpPiwKKwkgICAgICAgPCZkbWExCisJCShBVDkxX1hETUFDX0RUX01FTV9JRigwKSB8IEFUOTFfWERNQUNfRFRfUEVSX0lGKDEpCisJCXwgQVQ5MV9YRE1BQ19EVF9QRVJJRCg3KSk+OworCWRtYS1uYW1lcyA9ICJ0eCIsICJyeCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9icmNtLGJjbTI4MzUtZG1hLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvYnJjbSxiY20yODM1LWRtYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM5NjA3OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvYnJjbSxiY20yODM1LWRtYS50eHQKQEAgLTAsMCArMSw1NyBAQAorKiBCQ00yODM1IERNQSBjb250cm9sbGVyCisKK1RoZSBCQ00yODM1IERNQSBjb250cm9sbGVyIGhhcyAxNiBjaGFubmVscyBpbiB0b3RhbC4KK09ubHkgdGhlIGxvd2VyIDEzIGNoYW5uZWxzIGhhdmUgYW4gYXNzb2NpYXRlZCBJUlEuCitTb21lIGFyYml0cmFyeSBjaGFubmVscyBhcmUgdXNlZCBieSB0aGUgZmlybXdhcmUKKygxLDMsNiw3IGluIHRoZSBjdXJyZW50IGZpcm13YXJlIHZlcnNpb24pLgorVGhlIGNoYW5uZWxzIDAsMiBhbmQgMyBoYXZlIHNwZWNpYWwgZnVuY3Rpb25hbGl0eQorYW5kIHNob3VsZCBub3QgYmUgdXNlZCBieSB0aGUgZHJpdmVyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImJyY20sYmNtMjgzNS1kbWEiLgorLSByZWc6IFNob3VsZCBjb250YWluIERNQSByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aC4KKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gdGhlIERNQSBpbnRlcnJ1cHRzIGFzc29jaWF0ZWQKKwkJdG8gdGhlIERNQSBjaGFubmVscyBpbiBhc2NlbmRpbmcgb3JkZXIuCistICNkbWEtY2VsbHM6IE11c3QgYmUgPDE+LCB0aGUgY2VsbCBpbiB0aGUgZG1hcyBwcm9wZXJ0eSBvZiB0aGUKKwkJY2xpZW50IGRldmljZSByZXByZXNlbnRzIHRoZSBEUkVRIG51bWJlci4KKy0gYnJjbSxkbWEtY2hhbm5lbC1tYXNrOiBCaXQgbWFzayByZXByZXNlbnRpbmcgdGhlIGNoYW5uZWxzCisJCQkgbm90IHVzZWQgYnkgdGhlIGZpcm13YXJlIGluIGFzY2VuZGluZyBvcmRlciwKKwkJCSBpLmUuIGZpcnN0IGNoYW5uZWwgY29ycmVzcG9uZHMgdG8gTFNCLgorCitFeGFtcGxlOgorCitkbWE6IGRtYUA3ZTAwNzAwMCB7CisJY29tcGF0aWJsZSA9ICJicmNtLGJjbTI4MzUtZG1hIjsKKwlyZWcgPSA8MHg3ZTAwNzAwMCAweGYwMD47CisJaW50ZXJydXB0cyA9IDwxIDE2PiwKKwkJICAgICA8MSAxNz4sCisJCSAgICAgPDEgMTg+LAorCQkgICAgIDwxIDE5PiwKKwkJICAgICA8MSAyMD4sCisJCSAgICAgPDEgMjE+LAorCQkgICAgIDwxIDIyPiwKKwkJICAgICA8MSAyMz4sCisJCSAgICAgPDEgMjQ+LAorCQkgICAgIDwxIDI1PiwKKwkJICAgICA8MSAyNj4sCisJCSAgICAgPDEgMjc+LAorCQkgICAgIDwxIDI4PjsKKworCSNkbWEtY2VsbHMgPSA8MT47CisJYnJjbSxkbWEtY2hhbm5lbC1tYXNrID0gPDB4N2YzNT47Cit9OworCitETUEgY2xpZW50cyBjb25uZWN0ZWQgdG8gdGhlIEJDTTI4MzUgRE1BIGNvbnRyb2xsZXIgbXVzdCB1c2UgdGhlIGZvcm1hdAorZGVzY3JpYmVkIGluIHRoZSBkbWEudHh0IGZpbGUsIHVzaW5nIGEgdHdvLWNlbGwgc3BlY2lmaWVyIGZvciBlYWNoIGNoYW5uZWwuCisKK0V4YW1wbGU6CisKK2JjbTI4MzVfaTJzOiBpMnNAN2UyMDMwMDAgeworCWNvbXBhdGlibGUgPSAiYnJjbSxiY20yODM1LWkycyI7CisJcmVnID0gPAkweDdlMjAzMDAwIDB4MjA+LAorCSAgICAgIDwgMHg3ZTEwMTA5OCAweDAyPjsKKworCWRtYXMgPSA8JmRtYSAyPiwKKwkgICAgICAgPCZkbWEgMz47CisJZG1hLW5hbWVzID0gInR4IiwgInJ4IjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2RtYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2RtYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjMxMmZiMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvZG1hLnR4dApAQCAtMCwwICsxLDEwOSBAQAorKiBHZW5lcmljIERNQSBDb250cm9sbGVyIGFuZCBETUEgcmVxdWVzdCBiaW5kaW5ncworCitHZW5lcmljIGJpbmRpbmcgdG8gcHJvdmlkZSBhIHdheSBmb3IgYSBkcml2ZXIgdXNpbmcgRE1BIEVuZ2luZSB0byByZXRyaWV2ZSB0aGUKK0RNQSByZXF1ZXN0IG9yIGNoYW5uZWwgaW5mb3JtYXRpb24gdGhhdCBnb2VzIGZyb20gYSBoYXJkd2FyZSBkZXZpY2UgdG8gYSBETUEKK2NvbnRyb2xsZXIuCisKKworKiBETUEgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0eToKKy0gI2RtYS1jZWxsczogCQlNdXN0IGJlIGF0IGxlYXN0IDEuIFVzZWQgdG8gcHJvdmlkZSBETUEgY29udHJvbGxlcgorCQkJc3BlY2lmaWMgaW5mb3JtYXRpb24uIFNlZSBETUEgY2xpZW50IGJpbmRpbmcgYmVsb3cgZm9yCisJCQltb3JlIGRldGFpbHMuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGRtYS1jaGFubmVsczogCU51bWJlciBvZiBETUEgY2hhbm5lbHMgc3VwcG9ydGVkIGJ5IHRoZSBjb250cm9sbGVyLgorLSBkbWEtcmVxdWVzdHM6IAlOdW1iZXIgb2YgRE1BIHJlcXVlc3Qgc2lnbmFscyBzdXBwb3J0ZWQgYnkgdGhlCisJCQljb250cm9sbGVyLgorCitFeGFtcGxlOgorCisJZG1hOiBkbWFANDgwMDAwMDAgeworCQljb21wYXRpYmxlID0gInRpLG9tYXAtc2RtYSI7CisJCXJlZyA9IDwweDQ4MDAwMDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MCAxMiAweDQKKwkJCSAgICAgIDAgMTMgMHg0CisJCQkgICAgICAwIDE0IDB4NAorCQkJICAgICAgMCAxNSAweDQ+OworCQkjZG1hLWNlbGxzID0gPDE+OworCQlkbWEtY2hhbm5lbHMgPSA8MzI+OworCQlkbWEtcmVxdWVzdHMgPSA8MTI3PjsKKwl9OworCisqIERNQSByb3V0ZXIKKworRE1BIHJvdXRlcnMgYXJlIHRyYW5zcGFyZW50IElQIGJsb2NrcyB1c2VkIHRvIHJvdXRlIERNQSByZXF1ZXN0IGxpbmVzIGZyb20KK2RldmljZXMgdG8gdGhlIERNQSBjb250cm9sbGVyLiBTb21lIFNvQ3MgKGxpa2UgVEkgRFJBN3gpIGhhdmUgbW9yZSBwZXJpcGhlcmFscworaW50ZWdyYXRlZCB3aXRoIERNQSByZXF1ZXN0cyB0aGFuIHdoYXQgdGhlIERNQSBjb250cm9sbGVyIGNhbiBoYW5kbGUgZGlyZWN0bHkuCisKK1JlcXVpcmVkIHByb3BlcnR5OgorLSBkbWEtbWFzdGVyczoJCXBoYW5kbGUgb2YgdGhlIERNQSBjb250cm9sbGVyIG9yIGxpc3Qgb2YgcGhhbmRsZXMgZm9yCisJCQl0aGUgRE1BIGNvbnRyb2xsZXJzIHRoZSByb3V0ZXIgY2FuIGRpcmVjdCB0aGUgc2lnbmFsIHRvLgorLSAjZG1hLWNlbGxzOiAJCU11c3QgYmUgYXQgbGVhc3QgMS4gVXNlZCB0byBwcm92aWRlIERNQSByb3V0ZXIgc3BlY2lmaWMKKwkJCWluZm9ybWF0aW9uLiBTZWUgRE1BIGNsaWVudCBiaW5kaW5nIGJlbG93IGZvciBtb3JlCisJCQlkZXRhaWxzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBkbWEtcmVxdWVzdHM6IAlOdW1iZXIgb2YgaW5jb21pbmcgcmVxdWVzdCBsaW5lcyB0aGUgcm91dGVyIGNhbiBoYW5kbGUuCistIEluIHRoZSBub2RlIHBvaW50ZWQgYnkgdGhlIGRtYS1tYXN0ZXJzOgorCS0gZG1hLXJlcXVlc3RzOglUaGUgcm91dGVyIGRyaXZlciBtaWdodCBuZWVkIHRvIGxvb2sgZm9yIHRoaXMgaW4gb3JkZXIKKwkJCXRvIGNvbmZpZ3VyZSB0aGUgcm91dGluZy4KKworRXhhbXBsZToKKwlzZG1hX3hiYXI6IGRtYS1yb3V0ZXJANGEwMDJiNzggeworCQljb21wYXRpYmxlID0gInRpLGRyYTctZG1hLWNyb3NzYmFyIjsKKwkJcmVnID0gPDB4NGEwMDJiNzggMHhmYz47CisJCSNkbWEtY2VsbHMgPSA8MT47CisJCWRtYS1yZXF1ZXN0cyA9IDwyMDU+OworCQl0aSxkbWEtc2FmZS1tYXAgPSA8MD47CisJCWRtYS1tYXN0ZXJzID0gPCZzZG1hPjsKKwl9OworCisqIERNQSBjbGllbnQKKworQ2xpZW50IGRyaXZlcnMgc2hvdWxkIHNwZWNpZnkgdGhlIERNQSBwcm9wZXJ0eSB1c2luZyBhIHBoYW5kbGUgdG8gdGhlIGNvbnRyb2xsZXIKK2ZvbGxvd2VkIGJ5IERNQSBjb250cm9sbGVyIHNwZWNpZmljIGRhdGEuCisKK1JlcXVpcmVkIHByb3BlcnR5OgorLSBkbWFzOgkJCUxpc3Qgb2Ygb25lIG9yIG1vcmUgRE1BIHNwZWNpZmllcnMsIGVhY2ggY29uc2lzdGluZyBvZgorCQkJLSBBIHBoYW5kbGUgcG9pbnRpbmcgdG8gRE1BIGNvbnRyb2xsZXIgbm9kZQorCQkJLSBBIG51bWJlciBvZiBpbnRlZ2VyIGNlbGxzLCBhcyBkZXRlcm1pbmVkIGJ5IHRoZQorCQkJICAjZG1hLWNlbGxzIHByb3BlcnR5IGluIHRoZSBub2RlIHJlZmVyZW5jZWQgYnkgcGhhbmRsZQorCQkJICBjb250YWluaW5nIERNQSBjb250cm9sbGVyIHNwZWNpZmljIGluZm9ybWF0aW9uLiBUaGlzCisJCQkgIHR5cGljYWxseSBjb250YWlucyBhIERNQSByZXF1ZXN0IGxpbmUgbnVtYmVyIG9yIGEKKwkJCSAgY2hhbm5lbCBudW1iZXIsIGJ1dCBjYW4gY29udGFpbiBhbnkgZGF0YSB0aGF0IGlzCisJCQkgIHJlcXVpcmVkIGZvciBjb25maWd1cmluZyBhIGNoYW5uZWwuCistIGRtYS1uYW1lczogCQlDb250YWlucyBvbmUgaWRlbnRpZmllciBzdHJpbmcgZm9yIGVhY2ggRE1BIHNwZWNpZmllciBpbgorCQkJdGhlIGRtYXMgcHJvcGVydHkuIFRoZSBzcGVjaWZpYyBzdHJpbmdzIHRoYXQgY2FuIGJlIHVzZWQKKwkJCWFyZSBkZWZpbmVkIGluIHRoZSBiaW5kaW5nIG9mIHRoZSBETUEgY2xpZW50IGRldmljZS4KKwkJCU11bHRpcGxlIERNQSBzcGVjaWZpZXJzIGNhbiBiZSB1c2VkIHRvIHJlcHJlc2VudAorCQkJYWx0ZXJuYXRpdmVzIGFuZCBpbiB0aGlzIGNhc2UgdGhlIGRtYS1uYW1lcyBmb3IgdGhvc2UKKwkJCURNQSBzcGVjaWZpZXJzIG11c3QgYmUgaWRlbnRpY2FsIChzZWUgZXhhbXBsZXMpLgorCitFeGFtcGxlczoKKworMS4gQSBkZXZpY2Ugd2l0aCBvbmUgRE1BIHJlYWQgY2hhbm5lbCwgb25lIERNQSB3cml0ZSBjaGFubmVsOgorCisJaTJjMTogaTJjQDEgeworCQkuLi4KKwkJZG1hcyA9IDwmZG1hIDIJCS8qIHJlYWQgY2hhbm5lbCAqLworCQkJJmRtYSAzPjsJLyogd3JpdGUgY2hhbm5lbCAqLworCQlkbWEtbmFtZXMgPSAicngiLCAidHgiOworCQkuLi4KKwl9OworCisyLiBBIHNpbmdsZSByZWFkLXdyaXRlIGNoYW5uZWwgd2l0aCB0aHJlZSBhbHRlcm5hdGl2ZSBETUEgY29udHJvbGxlcnM6CisKKwlkbWFzID0gPCZkbWExIDUKKwkJJmRtYTIgNworCQkmZG1hMyAyPjsKKwlkbWEtbmFtZXMgPSAicngtdHgiLCAicngtdHgiLCAicngtdHgiOworCiszLiBBIGRldmljZSB3aXRoIHRocmVlIGNoYW5uZWxzLCBvbmUgb2Ygd2hpY2ggaGFzIHR3byBhbHRlcm5hdGl2ZXM6CisKKwlkbWFzID0gPCZkbWExIDIJCQkvKiByZWFkIGNoYW5uZWwgKi8KKwkJJmRtYTEgMwkJCS8qIHdyaXRlIGNoYW5uZWwgKi8KKwkJJmRtYTIgMAkJCS8qIGVycm9yIHJlYWQgKi8KKwkJJmRtYTMgMD47CQkvKiBhbHRlcm5hdGl2ZSBlcnJvciByZWFkICovCisJZG1hLW5hbWVzID0gInJ4IiwgInR4IiwgImVycm9yIiwgImVycm9yIjsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvZnNsLWVkbWEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9mc2wtZWRtYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkxZDdiZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvZnNsLWVkbWEudHh0CkBAIC0wLDAgKzEsNzYgQEAKKyogRnJlZXNjYWxlIGVuaGFuY2VkIERpcmVjdCBNZW1vcnkgQWNjZXNzKGVETUEpIENvbnRyb2xsZXIKKworICBUaGUgZURNQSBjaGFubmVscyBoYXZlIG11bHRpcGxleCBjYXBhYmlsaXR5IGJ5IHByb2dyYW1tYmxlIG1lbW9yeS1tYXBwZWQKK3JlZ2lzdGVycy4gY2hhbm5lbHMgYXJlIHNwbGl0IGludG8gdHdvIGdyb3VwcywgY2FsbGVkIERNQU1VWDAgYW5kIERNQU1VWDEsCitzcGVjaWZpYyBETUEgcmVxdWVzdCBzb3VyY2UgY2FuIG9ubHkgYmUgbXVsdGlwbGV4ZWQgYnkgYW55IGNoYW5uZWwgb2YgY2VydGFpbgorZ3JvdXAsIERNQU1VWDAgb3IgRE1BTVVYMSwgYnV0IG5vdCBib3RoLgorCisqIGVETUEgQ29udHJvbGxlcgorUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6CisJLSAiZnNsLHZmNjEwLWVkbWEiIGZvciBlRE1BIHVzZWQgc2ltaWxhciB0byB0aGF0IG9uIFZ5YnJpZCB2ZjYxMCBTb0MKKy0gcmVnIDogU3BlY2lmaWVzIGJhc2UgcGh5c2ljYWwgYWRkcmVzcyhzKSBhbmQgc2l6ZSBvZiB0aGUgZURNQSByZWdpc3RlcnMuCisJVGhlIDFzdCByZWdpb24gaXMgZURNQSBjb250cm9sIHJlZ2lzdGVyJ3MgYWRkcmVzcyBhbmQgc2l6ZS4KKwlUaGUgMm5kIGFuZCB0aGUgM3JkIHJlZ2lvbnMgYXJlIHByb2dyYW1tYWJsZSBjaGFubmVsIG11bHRpcGxleGluZworCWNvbnRyb2wgcmVnaXN0ZXIncyBhZGRyZXNzIGFuZCBzaXplLgorLSBpbnRlcnJ1cHRzIDogQSBsaXN0IG9mIGludGVycnVwdC1zcGVjaWZpZXJzLCBvbmUgZm9yIGVhY2ggZW50cnkgaW4KKwlpbnRlcnJ1cHQtbmFtZXMuCistIGludGVycnVwdC1uYW1lcyA6IFNob3VsZCBjb250YWluOgorCSJlZG1hLXR4IiAtIHRoZSB0cmFuc21pc3Npb24gaW50ZXJydXB0CisJImVkbWEtZXJyIiAtIHRoZSBlcnJvciBpbnRlcnJ1cHQKKy0gI2RtYS1jZWxscyA6IE11c3QgYmUgPDI+LgorCVRoZSAxc3QgY2VsbCBzcGVjaWZpZXMgdGhlIERNQU1VWCgwIGZvciBETUFNVVgwIGFuZCAxIGZvciBETUFNVVgxKS4KKwlTcGVjaWZpYyByZXF1ZXN0IHNvdXJjZSBjYW4gb25seSBiZSBtdWx0aXBsZXhlZCBieSBzcGVjaWZpYyBjaGFubmVscworCWdyb3VwIGNhbGxlZCBETUFNVVguCisJVGhlIDJuZCBjZWxsIHNwZWNpZmllcyB0aGUgcmVxdWVzdCBzb3VyY2Uoc2xvdCkgSUQuCisJU2VlIHRoZSBTb0MncyByZWZlcmVuY2UgbWFudWFsIGZvciBhbGwgdGhlIHN1cHBvcnRlZCByZXF1ZXN0IHNvdXJjZXMuCistIGRtYS1jaGFubmVscyA6IE51bWJlciBvZiBjaGFubmVscyBzdXBwb3J0ZWQgYnkgdGhlIGNvbnRyb2xsZXIKKy0gY2xvY2stbmFtZXMgOiBBIGxpc3Qgb2YgY2hhbm5lbCBncm91cCBjbG9jayBuYW1lcy4gU2hvdWxkIGNvbnRhaW46CisJImRtYW11eDAiIC0gY2xvY2sgbmFtZSBvZiBtdXgwIGdyb3VwCisJImRtYW11eDEiIC0gY2xvY2sgbmFtZSBvZiBtdXgxIGdyb3VwCistIGNsb2NrcyA6IEEgbGlzdCBvZiBwaGFuZGxlIGFuZCBjbG9jay1zcGVjaWZpZXIgcGFpcnMsIG9uZSBmb3IgZWFjaCBlbnRyeSBpbgorCWNsb2NrLW5hbWVzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBiaWctZW5kaWFuOiBJZiBwcmVzZW50IHJlZ2lzdGVycyBhbmQgaGFyZHdhcmUgc2NhdHRlci9nYXRoZXIgZGVzY3JpcHRvcnMKKwlvZiB0aGUgZURNQSBhcmUgaW1wbGVtZW50ZWQgaW4gYmlnIGVuZGlhbiBtb2RlLCBvdGhlcndpc2UgaW4gbGl0dGxlCisJbW9kZS4KKworCitFeGFtcGxlczoKKworZWRtYTA6IGRtYS1jb250cm9sbGVyQDQwMDE4MDAwIHsKKwkjZG1hLWNlbGxzID0gPDI+OworCWNvbXBhdGlibGUgPSAiZnNsLHZmNjEwLWVkbWEiOworCXJlZyA9IDwweDQwMDE4MDAwIDB4MjAwMD4sCisJCTwweDQwMDI0MDAwIDB4MTAwMD4sCisJCTwweDQwMDI1MDAwIDB4MTAwMD47CisJaW50ZXJydXB0cyA9IDwwIDggSVJRX1RZUEVfTEVWRUxfSElHSD4sCisJCTwwIDkgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJaW50ZXJydXB0LW5hbWVzID0gImVkbWEtdHgiLCAiZWRtYS1lcnIiOworCWRtYS1jaGFubmVscyA9IDwzMj47CisJY2xvY2stbmFtZXMgPSAiZG1hbXV4MCIsICJkbWFtdXgxIjsKKwljbG9ja3MgPSA8JmNsa3MgVkY2MTBfQ0xLX0RNQU1VWDA+LAorCQk8JmNsa3MgVkY2MTBfQ0xLX0RNQU1VWDE+OworfTsKKworCisqIERNQSBjbGllbnRzCitETUEgY2xpZW50IGRyaXZlcnMgdGhhdCB1c2VzIHRoZSBETUEgZnVuY3Rpb24gbXVzdCB1c2UgdGhlIGZvcm1hdCBkZXNjcmliZWQKK2luIHRoZSBkbWEudHh0IGZpbGUsIHVzaW5nIGEgdHdvLWNlbGwgc3BlY2lmaWVyIGZvciBlYWNoIGNoYW5uZWw6IHRoZSAxc3QKK3NwZWNpZmllcyB0aGUgY2hhbm5lbCBncm91cChETUFNVVgpIGluIHdoaWNoIHRoaXMgcmVxdWVzdCBjYW4gYmUgbXVsdGlwbGV4ZWQsCithbmQgdGhlIDJuZCBzcGVjaWZpZXMgdGhlIHJlcXVlc3Qgc291cmNlLgorCitFeGFtcGxlczoKKworc2FpMjogc2FpQDQwMDMxMDAwIHsKKwljb21wYXRpYmxlID0gImZzbCx2ZjYxMC1zYWkiOworCXJlZyA9IDwweDQwMDMxMDAwIDB4MTAwMD47CisJaW50ZXJydXB0cyA9IDwwIDg2IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCWNsb2NrLW5hbWVzID0gInNhaSI7CisJY2xvY2tzID0gPCZjbGtzIFZGNjEwX0NMS19TQUkyPjsKKwlkbWEtbmFtZXMgPSAidHgiLCAicngiOworCWRtYXMgPSA8JmVkbWEwIDAgMjE+LAorCQk8JmVkbWEwIDAgMjA+OworCXN0YXR1cyA9ICJkaXNhYmxlZCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9mc2wtaW14LWRtYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2ZzbC1pbXgtZG1hLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YmQ4ODQ3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9mc2wtaW14LWRtYS50eHQKQEAgLTAsMCArMSw0OCBAQAorKiBGcmVlc2NhbGUgRGlyZWN0IE1lbW9yeSBBY2Nlc3MgKERNQSkgQ29udHJvbGxlciBmb3IgaS5NWAorCitUaGlzIGRvY3VtZW50IHdpbGwgb25seSBkZXNjcmliZSBkaWZmZXJlbmNlcyB0byB0aGUgZ2VuZXJpYyBETUEgQ29udHJvbGxlciBhbmQKK0RNQSByZXF1ZXN0IGJpbmRpbmdzIGFzIGRlc2NyaWJlZCBpbiBkbWEvZG1hLnR4dCAuCisKKyogRE1BIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAiZnNsLDxjaGlwPi1kbWEiLiBjaGlwIGNhbiBiZSBpbXgxLCBpbXgyMSBvciBpbXgyNworLSByZWcgOiBTaG91bGQgY29udGFpbiBETUEgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKy0gaW50ZXJydXB0cyA6IEZpcnN0IGl0ZW0gc2hvdWxkIGJlIERNQSBpbnRlcnJ1cHQsIHNlY29uZCBvbmUgaXMgb3B0aW9uYWwgYW5kCisgICAgc2hvdWxkIGNvbnRhaW4gRE1BIEVycm9yIGludGVycnVwdAorLSAjZG1hLWNlbGxzIDogSGFzIHRvIGJlIDEuIGlteC1kbWEgZG9lcyBub3Qgc3VwcG9ydCBhbnl0aGluZyBlbHNlLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSAjZG1hLWNoYW5uZWxzIDogTnVtYmVyIG9mIERNQSBjaGFubmVscyBzdXBwb3J0ZWQuIFNob3VsZCBiZSAxNi4KKy0gI2RtYS1yZXF1ZXN0cyA6IE51bWJlciBvZiBETUEgcmVxdWVzdHMgc3VwcG9ydGVkLgorCitFeGFtcGxlOgorCisJZG1hOiBkbWFAMTAwMDEwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxpbXgyNy1kbWEiOworCQlyZWcgPSA8MHgxMDAwMTAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDMyIDMzPjsKKwkJI2RtYS1jZWxscyA9IDwxPjsKKwkJI2RtYS1jaGFubmVscyA9IDwxNj47CisJfTsKKworCisqIERNQSBjbGllbnQKKworQ2xpZW50cyBoYXZlIHRvIHNwZWNpZnkgdGhlIERNQSByZXF1ZXN0cyB3aXRoIHBoYW5kbGVzIGluIGEgbGlzdC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gZG1hczogTGlzdCBvZiBvbmUgb3IgbW9yZSBETUEgcmVxdWVzdCBzcGVjaWZpZXJzLiBPbmUgRE1BIHJlcXVlc3Qgc3BlY2lmaWVyCisgICAgY29uc2lzdHMgb2YgYSBwaGFuZGxlIHRvIHRoZSBETUEgY29udHJvbGxlciBmb2xsb3dlZCBieSB0aGUgaW50ZWdlcgorICAgIHNwZWNpZnlpbmcgdGhlIHJlcXVlc3QgbGluZS4KKy0gZG1hLW5hbWVzOiBMaXN0IG9mIHN0cmluZyBpZGVudGlmaWVycyBmb3IgdGhlIERNQSByZXF1ZXN0cy4gRm9yIHRoZSBjb3JyZWN0CisgICAgbmFtZXMsIGhhdmUgYSBsb29rIGF0IHRoZSBzcGVjaWZpYyBjbGllbnQgZHJpdmVyLgorCitFeGFtcGxlOgorCisJc2RoY2kxOiBzZGhjaUAxMDAxMzAwMCB7CisJCS4uLgorCQlkbWFzID0gPCZkbWEgNz47CisJCWRtYS1uYW1lcyA9ICJyeC10eCI7CisJCS4uLgorCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2ZzbC1pbXgtc2RtYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2ZzbC1pbXgtc2RtYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM4ZDNhYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvZnNsLWlteC1zZG1hLnR4dApAQCAtMCwwICsxLDg1IEBACisqIEZyZWVzY2FsZSBTbWFydCBEaXJlY3QgTWVtb3J5IEFjY2VzcyAoU0RNQSkgQ29udHJvbGxlciBmb3IgaS5NWAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlIG9uZSBvZgorICAgICAgImZzbCxpbXgyNS1zZG1hIgorICAgICAgImZzbCxpbXgzMS1zZG1hIiwgImZzbCxpbXgzMS10bzEtc2RtYSIsICJmc2wsaW14MzEtdG8yLXNkbWEiCisgICAgICAiZnNsLGlteDM1LXNkbWEiLCAiZnNsLGlteDM1LXRvMS1zZG1hIiwgImZzbCxpbXgzNS10bzItc2RtYSIKKyAgICAgICJmc2wsaW14NTEtc2RtYSIKKyAgICAgICJmc2wsaW14NTMtc2RtYSIKKyAgICAgICJmc2wsaW14NnEtc2RtYSIKKyAgVGhlIC10byB2YXJpYW50cyBzaG91bGQgYmUgcHJlZmVycmVkIHNpbmNlIHRoZXkgYWxsb3cgdG8gZGV0ZXJtaW5lIHRoZQorICBjb3JyZWN0IFJPTSBzY3JpcHQgYWRkcmVzc2VzIG5lZWRlZCBmb3IgdGhlIGRyaXZlciB0byB3b3JrIHdpdGhvdXQgYWRkaXRpb25hbAorICBmaXJtd2FyZS4KKy0gcmVnIDogU2hvdWxkIGNvbnRhaW4gU0RNQSByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorLSBpbnRlcnJ1cHRzIDogU2hvdWxkIGNvbnRhaW4gU0RNQSBpbnRlcnJ1cHQKKy0gI2RtYS1jZWxscyA6IE11c3QgYmUgPDM+LgorICBUaGUgZmlyc3QgY2VsbCBzcGVjaWZpZXMgdGhlIERNQSByZXF1ZXN0L2V2ZW50IElELiAgU2VlIGRldGFpbHMgYmVsb3cKKyAgYWJvdXQgdGhlIHNlY29uZCBhbmQgdGhpcmQgY2VsbC4KKy0gZnNsLHNkbWEtcmFtLXNjcmlwdC1uYW1lIDogU2hvdWxkIGNvbnRhaW4gdGhlIGZ1bGwgcGF0aCBvZiBTRE1BIFJBTQorICBzY3JpcHRzIGZpcm13YXJlCisKK1RoZSBzZWNvbmQgY2VsbCBvZiBkbWEgcGhhbmRsZSBzcGVjaWZpZXMgdGhlIHBlcmlwaGVyYWwgdHlwZSBvZiBETUEgdHJhbnNmZXIuCitUaGUgZnVsbCBJRCBvZiBwZXJpcGhlcmFsIHR5cGVzIGNhbiBiZSBmb3VuZCBiZWxvdy4KKworCUlECXRyYW5zZmVyIHR5cGUKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkwCU1DVSBkb21haW4gU1NJCisJMQlTaGFyZWQgU1NJCisJMglNTUMKKwkzCVNESEMKKwk0CU1DVSBkb21haW4gVUFSVAorCTUJU2hhcmVkIFVBUlQKKwk2CUZJUkkKKwk3CU1DVSBkb21haW4gQ1NQSQorCTgJU2hhcmVkIENTUEkKKwk5CVNJTQorCTEwCUFUQQorCTExCUNDTQorCTEyCUV4dGVybmFsIHBlcmlwaGVyYWwKKwkxMwlNZW1vcnkgU3RpY2sgSG9zdCBDb250cm9sbGVyCisJMTQJU2hhcmVkIE1lbW9yeSBTdGljayBIb3N0IENvbnRyb2xsZXIKKwkxNQlEU1AKKwkxNglNZW1vcnkKKwkxNwlGSUZPIHR5cGUgTWVtb3J5CisJMTgJU1BESUYKKwkxOQlJUFUgTWVtb3J5CisJMjAJQVNSQworCTIxCUVTQUkKKwkyMglTU0kgRHVhbCBGSUZPCShuZWVkcyBmaXJtd2FyZSB2ZXIgPj0gMikKKwkyMwlTaGFyZWQgQVNSQworCTI0CVNBSQorCitUaGUgdGhpcmQgY2VsbCBzcGVjaWZpZXMgdGhlIHRyYW5zZmVyIHByaW9yaXR5IGFzIGJlbG93LgorCisJSUQJdHJhbnNmZXIgcHJpb3JpdHkKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJMAlIaWdoCisJMQlNZWRpdW0KKwkyCUxvdworCitFeGFtcGxlczoKKworc2RtYUA4M2ZiMDAwMCB7CisJY29tcGF0aWJsZSA9ICJmc2wsaW14NTEtc2RtYSIsICJmc2wsaW14MzUtc2RtYSI7CisJcmVnID0gPDB4ODNmYjAwMDAgMHg0MDAwPjsKKwlpbnRlcnJ1cHRzID0gPDY+OworCSNkbWEtY2VsbHMgPSA8Mz47CisJZnNsLHNkbWEtcmFtLXNjcmlwdC1uYW1lID0gInNkbWEtaW14NTEuYmluIjsKK307CisKK0RNQSBjbGllbnRzIGNvbm5lY3RlZCB0byB0aGUgaS5NWCBTRE1BIGNvbnRyb2xsZXIgbXVzdCB1c2UgdGhlIGZvcm1hdAorZGVzY3JpYmVkIGluIHRoZSBkbWEudHh0IGZpbGUuCisKK0V4YW1wbGVzOgorCitzc2kyOiBzc2lANzAwMTQwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDUxLXNzaSIsICJmc2wsaW14MjEtc3NpIjsKKwlyZWcgPSA8MHg3MDAxNDAwMCAweDQwMDA+OworCWludGVycnVwdHMgPSA8MzA+OworCWNsb2NrcyA9IDwmY2xrcyA0OT47CisJZG1hcyA9IDwmc2RtYSAyNCAxIDA+LAorCSAgICAgICA8JnNkbWEgMjUgMSAwPjsKKwlkbWEtbmFtZXMgPSAicngiLCAidHgiOworCWZzbCxmaWZvLWRlcHRoID0gPDE1PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2ZzbC1teHMtZG1hLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvZnNsLW14cy1kbWEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMGUxODQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2ZzbC1teHMtZG1hLnR4dApAQCAtMCwwICsxLDYwIEBACisqIEZyZWVzY2FsZSBNWFMgRE1BCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImZzbCw8Y2hpcD4tZG1hLWFwYmgiIG9yICJmc2wsPGNoaXA+LWRtYS1hcGJ4IgorLSByZWcgOiBTaG91bGQgY29udGFpbiByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorLSBpbnRlcnJ1cHRzIDogU2hvdWxkIGNvbnRhaW4gdGhlIGludGVycnVwdCBudW1iZXJzIG9mIERNQSBjaGFubmVscy4KKyAgSWYgYSBjaGFubmVsIGlzIGVtcHR5L3Jlc2VydmVkLCAwIHNob3VsZCBiZSBmaWxsZWQgaW4gcGxhY2UuCistICNkbWEtY2VsbHMgOiBNdXN0IGJlIDwxPi4gIFRoZSBudW1iZXIgY2VsbCBzcGVjaWZpZXMgdGhlIGNoYW5uZWwgSUQuCistIGRtYS1jaGFubmVscyA6IE51bWJlciBvZiBjaGFubmVscyBzdXBwb3J0ZWQgYnkgdGhlIERNQSBjb250cm9sbGVyCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGludGVycnVwdC1uYW1lcyA6IE5hbWUgb2YgRE1BIGNoYW5uZWwgaW50ZXJydXB0cworCitTdXBwb3J0ZWQgY2hpcHM6CitpbXgyMywgaW14MjguCisKK0V4YW1wbGVzOgorCitkbWFfYXBiaDogZG1hLWFwYmhAODAwMDQwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDI4LWRtYS1hcGJoIjsKKwlyZWcgPSA8MHg4MDAwNDAwMCAweDIwMDA+OworCWludGVycnVwdHMgPSA8ODIgODMgODQgODUKKwkJICAgICAgODggODggODggODgKKwkJICAgICAgODggODggODggODgKKwkJICAgICAgODcgODYgMCAwPjsKKwlpbnRlcnJ1cHQtbmFtZXMgPSAic3NwMCIsICJzc3AxIiwgInNzcDIiLCAic3NwMyIsCisJCQkgICJncG1pMCIsICJnbXBpMSIsICJncG1pMiIsICJnbXBpMyIsCisJCQkgICJncG1pNCIsICJnbXBpNSIsICJncG1pNiIsICJnbXBpNyIsCisJCQkgICJoc2FkYyIsICJsY2RpZiIsICJlbXB0eSIsICJlbXB0eSI7CisJI2RtYS1jZWxscyA9IDwxPjsKKwlkbWEtY2hhbm5lbHMgPSA8MTY+OworfTsKKworZG1hX2FwYng6IGRtYS1hcGJ4QDgwMDI0MDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxpbXgyOC1kbWEtYXBieCI7CisJcmVnID0gPDB4ODAwMjQwMDAgMHgyMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDc4IDc5IDY2IDAKKwkJICAgICAgODAgODEgNjggNjkKKwkJICAgICAgNzAgNzEgNzIgNzMKKwkJICAgICAgNzQgNzUgNzYgNzc+OworCWludGVycnVwdC1uYW1lcyA9ICJhdWFydDQtcngiLCAiYXVhcnQ0LXR4IiwgInNwZGlmLXR4IiwgImVtcHR5IiwKKwkJCSAgInNhaWYwIiwgInNhaWYxIiwgImkyYzAiLCAiaTJjMSIsCisJCQkgICJhdWFydDAtcngiLCAiYXVhcnQwLXR4IiwgImF1YXJ0MS1yeCIsICJhdWFydDEtdHgiLAorCQkJICAiYXVhcnQyLXJ4IiwgImF1YXJ0Mi10eCIsICJhdWFydDMtcngiLCAiYXVhcnQzLXR4IjsKKwkjZG1hLWNlbGxzID0gPDE+OworCWRtYS1jaGFubmVscyA9IDwxNj47Cit9OworCitETUEgY2xpZW50cyBjb25uZWN0ZWQgdG8gdGhlIE1YUyBETUEgY29udHJvbGxlciBtdXN0IHVzZSB0aGUgZm9ybWF0CitkZXNjcmliZWQgaW4gdGhlIGRtYS50eHQgZmlsZS4KKworRXhhbXBsZXM6CisKK2F1YXJ0MDogc2VyaWFsQDgwMDZhMDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxpbXgyOC1hdWFydCIsICJmc2wsaW14MjMtYXVhcnQiOworCXJlZyA9IDwweDgwMDZhMDAwIDB4MjAwMD47CisJaW50ZXJydXB0cyA9IDwxMTI+OworCWRtYXMgPSA8JmRtYV9hcGJ4IDg+LCA8JmRtYV9hcGJ4IDk+OworCWRtYS1uYW1lcyA9ICJyeCIsICJ0eCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9pbWctbWRjLWRtYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2ltZy1tZGMtZG1hLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGMxMzQxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9pbWctbWRjLWRtYS50eHQKQEAgLTAsMCArMSw1NyBAQAorKiBJTUcgTXVsdGktdGhyZWFkZWQgRE1BIENvbnRyb2xsZXIgKE1EQykKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogTXVzdCBiZSAiaW1nLHBpc3RhY2hpby1tZGMtZG1hIi4KKy0gcmVnOiBNdXN0IGNvbnRhaW4gdGhlIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBNREMgcmVnaXN0ZXJzLgorLSBpbnRlcnJ1cHRzOiBNdXN0IGNvbnRhaW4gYWxsIHRoZSBwZXItY2hhbm5lbCBETUEgaW50ZXJydXB0cy4KKy0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCisgIFNlZSAuLi9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCistIGNsb2NrLW5hbWVzOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAtIHN5czogTURDIHN5c3RlbSBpbnRlcmZhY2UgY2xvY2suCistIGltZyxjci1wZXJpcGg6IE11c3QgY29udGFpbiBhIHBoYW5kbGUgdG8gdGhlIHBlcmlwaGVyYWwgY29udHJvbCBzeXNjb24KKyAgbm9kZSB3aGljaCBjb250YWlucyB0aGUgRE1BIHJlcXVlc3QgdG8gY2hhbm5lbCBtYXBwaW5nIHJlZ2lzdGVycy4KKy0gaW1nLG1heC1idXJzdC1tdWx0aXBsaWVyOiBNdXN0IGJlIHRoZSBtYXhpbXVtIHN1cHBvcnRlZCBidXJzdCBzaXplIG11bHRpcGxpZXIuCisgIFRoZSBtYXhpbXVtIGJ1cnN0IHNpemUgaXMgdGhpcyB2YWx1ZSBtdWx0aXBsaWVkIGJ5IHRoZSBoYXJkd2FyZS1yZXBvcnRlZCBidXMKKyAgd2lkdGguCistICNkbWEtY2VsbHM6IE11c3QgYmUgMzoKKyAgLSBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgcGVyaXBoZXJhbCdzIERNQSByZXF1ZXN0IGxpbmUuCisgIC0gVGhlIHNlY29uZCBjZWxsIGlzIGEgYml0bWFwIHNwZWNpZnlpbmcgdG8gd2hpY2ggY2hhbm5lbHMgdGhlIERNQSByZXF1ZXN0CisgICAgbGluZSBtYXkgYmUgbWFwcGVkIChpLmUuIGJpdCBOIHNldCBpbmRpY2F0ZXMgY2hhbm5lbCBOIGlzIHVzYWJsZSkuCisgIC0gVGhlIHRoaXJkIGNlbGwgaXMgdGhlIHRocmVhZCBJRCB0byBiZSB1c2VkIGJ5IHRoZSBjaGFubmVsLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBkbWEtY2hhbm5lbHM6IE51bWJlciBvZiBzdXBwb3J0ZWQgRE1BIGNoYW5uZWxzLCB1cCB0byAzMi4gIElmIG5vdCBzcGVjaWZpZWQKKyAgdGhlIG51bWJlciByZXBvcnRlZCBieSB0aGUgaGFyZHdhcmUgaXMgdXNlZC4KKworRXhhbXBsZToKKworbWRjOiBkbWEtY29udHJvbGxlckAxODE0MzAwMCB7CisJY29tcGF0aWJsZSA9ICJpbWcscGlzdGFjaGlvLW1kYy1kbWEiOworCXJlZyA9IDwweDE4MTQzMDAwIDB4MTAwMD47CisJaW50ZXJydXB0cyA9IDxHSUNfU0hBUkVEIDI3IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkgICAgIDxHSUNfU0hBUkVEIDI4IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkgICAgIDxHSUNfU0hBUkVEIDI5IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkgICAgIDxHSUNfU0hBUkVEIDMwIElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkgICAgIDxHSUNfU0hBUkVEIDMxIElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkgICAgIDxHSUNfU0hBUkVEIDMyIElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkgICAgIDxHSUNfU0hBUkVEIDMzIElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkgICAgIDxHSUNfU0hBUkVEIDM0IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkgICAgIDxHSUNfU0hBUkVEIDM1IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkgICAgIDxHSUNfU0hBUkVEIDM2IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkgICAgIDxHSUNfU0hBUkVEIDM3IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkgICAgIDxHSUNfU0hBUkVEIDM4IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCWNsb2NrcyA9IDwmc3lzdGVtX2Nsaz47CisJY2xvY2stbmFtZXMgPSAic3lzIjsKKworCWltZyxtYXgtYnVyc3QtbXVsdGlwbGllciA9IDwxNj47CisJaW1nLGNyLXBlcmlwaCA9IDwmY3JfcGVyaXBoPjsKKworCSNkbWEtY2VsbHMgPSA8Mz47Cit9OworCitzcGlAMTgxMDBmMDAgeworCS4uLgorCWRtYXMgPSA8Jm1kYyA5IDB4ZmZmZmZmZmYgMD4sIDwmbWRjIDEwIDB4ZmZmZmZmZmYgMD47CisJZG1hLW5hbWVzID0gInR4IiwgInJ4IjsKKwkuLi4KK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2p6NDc4MC1kbWEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9qejQ3ODAtZG1hLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjVmZWVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9qejQ3ODAtZG1hLnR4dApAQCAtMCwwICsxLDU2IEBACisqIEluZ2VuaWMgSlo0NzgwIERNQSBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJpbmdlbmljLGp6NDc4MC1kbWEiCistIHJlZzogU2hvdWxkIGNvbnRhaW4gdGhlIERNQSBjb250cm9sbGVyIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoLgorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiB0aGUgaW50ZXJydXB0IHNwZWNpZmllciBvZiB0aGUgRE1BIGNvbnRyb2xsZXIuCistIGludGVycnVwdC1wYXJlbnQ6IFNob3VsZCBiZSB0aGUgcGhhbmRsZSBvZiB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgdGhhdAorLSBjbG9ja3M6IFNob3VsZCBjb250YWluIGEgY2xvY2sgc3BlY2lmaWVyIGZvciB0aGUgSlo0NzgwIFBETUEgY2xvY2suCistICNkbWEtY2VsbHM6IE11c3QgYmUgPDI+LiBOdW1iZXIgb2YgaW50ZWdlciBjZWxscyBpbiB0aGUgZG1hcyBwcm9wZXJ0eSBvZgorICBETUEgY2xpZW50cyAoc2VlIGJlbG93KS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworLSBpbmdlbmljLHJlc2VydmVkLWNoYW5uZWxzOiBCaXRtYXNrIG9mIGNoYW5uZWxzIHRvIHJlc2VydmUgZm9yIGRldmljZXMgdGhhdAorICBuZWVkIGEgc3BlY2lmaWMgY2hhbm5lbC4gVGhlc2UgY2hhbm5lbHMgd2lsbCBvbmx5IGJlIGFzc2lnbmVkIHdoZW4gZXhwbGljaXRseQorICByZXF1ZXN0ZWQgYnkgYSBjbGllbnQuIFRoZSBwcmltYXJ5IHVzZSBmb3IgdGhpcyBpcyBjaGFubmVscyAwIGFuZCAxLCB3aGljaAorICBjYW4gYmUgY29uZmlndXJlZCB0byBoYXZlIHNwZWNpYWwgYmVoYXZpb3VyIGZvciBOQU5EL0JDSCB3aGVuIHVzaW5nCisgIHByb2dyYW1tYWJsZSBmaXJtd2FyZS4KKworRXhhbXBsZToKKworZG1hOiBkbWFAMTM0MjAwMDAgeworCWNvbXBhdGlibGUgPSAiaW5nZW5pYyxqejQ3ODAtZG1hIjsKKwlyZWcgPSA8MHgxMzQyMDAwMCAweDEwMDAwPjsKKworCWludGVycnVwdC1wYXJlbnQgPSA8JmludGM+OworCWludGVycnVwdHMgPSA8MTA+OworCisJY2xvY2tzID0gPCZjZ3UgSlo0NzgwX0NMS19QRE1BPjsKKworCSNkbWEtY2VsbHMgPSA8Mj47CisKKwlpbmdlbmljLHJlc2VydmVkLWNoYW5uZWxzID0gPDB4Mz47Cit9OworCitETUEgY2xpZW50cyBtdXN0IHVzZSB0aGUgZm9ybWF0IGRlc2NyaWJlZCBpbiBkbWEudHh0LCBnaXZpbmcgYSBwaGFuZGxlIHRvIHRoZQorRE1BIGNvbnRyb2xsZXIgcGx1cyB0aGUgZm9sbG93aW5nIDIgaW50ZWdlciBjZWxsczoKKworMS4gUmVxdWVzdCB0eXBlOiBUaGUgRE1BIHJlcXVlc3QgdHlwZSBmb3IgdHJhbnNmZXJzIHRvL2Zyb20gdGhlIGRldmljZSBvbgorICAgdGhlIGFsbG9jYXRlZCBjaGFubmVsLCBhcyBkZWZpbmVkIGluIHRoZSBTb0MgZG9jdW1lbnRhdGlvbi4KKworMi4gQ2hhbm5lbDogSWYgc2V0IHRvIDB4ZmZmZmZmZmYsIGFueSBhdmFpbGFibGUgY2hhbm5lbCB3aWxsIGJlIGFsbG9jYXRlZCBmb3IKKyAgIHRoZSBjbGllbnQuIE90aGVyd2lzZSwgdGhlIGV4YWN0IGNoYW5uZWwgc3BlY2lmaWVkIHdpbGwgYmUgdXNlZC4gVGhlIGNoYW5uZWwKKyAgIHNob3VsZCBiZSByZXNlcnZlZCBvbiB0aGUgRE1BIGNvbnRyb2xsZXIgdXNpbmcgdGhlIGluZ2VuaWMscmVzZXJ2ZWQtY2hhbm5lbHMKKyAgIHByb3BlcnR5LgorCitFeGFtcGxlOgorCit1YXJ0MDogc2VyaWFsQDEwMDMwMDAwIHsKKwkuLi4KKwlkbWFzID0gPCZkbWEgMHgxNCAweGZmZmZmZmZmCisJCSZkbWEgMHgxNSAweGZmZmZmZmZmPjsKKwlkbWEtbmFtZXMgPSAidHgiLCAicngiOworCS4uLgorfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvazNkbWEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9rM2RtYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNmOGQ3MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvazNkbWEudHh0CkBAIC0wLDAgKzEsNDYgQEAKKyogSGlzaWxpY29uIEszIERNQSBjb250cm9sbGVyCisKK1NlZSBkbWEudHh0IGZpcnN0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAiaGlzaWxpY29uLGszLWRtYS0xLjAiCistIHJlZzogU2hvdWxkIGNvbnRhaW4gRE1BIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoLgorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBvbmUgaW50ZXJydXB0IHNoYXJlZCBieSBhbGwgY2hhbm5lbAorLSAjZG1hLWNlbGxzOiBzZWUgZG1hLnR4dCwgc2hvdWxkIGJlIDEsIHBhcmEgbnVtYmVyCistIGRtYS1jaGFubmVsczogcGh5c2ljYWwgY2hhbm5lbHMgc3VwcG9ydGVkCistIGRtYS1yZXF1ZXN0czogdmlydHVhbCBjaGFubmVscyBzdXBwb3J0ZWQsIGVhY2ggdmlydHVhbCBjaGFubmVsCisJCWhhdmUgc3BlY2lmaWMgcmVxdWVzdCBsaW5lCistIGNsb2NrczogY2xvY2sgcmVxdWlyZWQKKworRXhhbXBsZToKKworQ29udHJvbGxlcjoKKwkJZG1hMDogZG1hQGZjZDAyMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiaGlzaWxpY29uLGszLWRtYS0xLjAiOworCQkJcmVnID0gPDB4ZmNkMDIwMDAgMHgxMDAwPjsKKwkJCSNkbWEtY2VsbHMgPSA8MT47CisJCQlkbWEtY2hhbm5lbHMgPSA8MTY+OworCQkJZG1hLXJlcXVlc3RzID0gPDI3PjsKKwkJCWludGVycnVwdHMgPSA8MCAxMiA0PjsKKwkJCWNsb2NrcyA9IDwmcGNsaz47CisJCQlzdGF0dXMgPSAiZGlzYWJsZSI7CisJCX07CisKK0NsaWVudDoKK1VzZSBzcGVjaWZpYyByZXF1ZXN0IGxpbmUgcGFzc2luZyBmcm9tIGRtYXgKK0ZvciBleGFtcGxlLCBpMmMwIHJlYWQgY2hhbm5lbCByZXF1ZXN0IGxpbmUgaXMgMTgsIHdoaWxlIHdyaXRlIGNoYW5uZWwgdXNlIDE5CisKKwkJaTJjMDogaTJjQGZjYjA4MDAwIHsKKwkJCWNvbXBhdGlibGUgPSAic25wcyxkZXNpZ253YXJlLWkyYyI7CisJCQlkbWFzID0JPCZkbWEwIDE4ICAgICAgICAgIC8qIHJlYWQgY2hhbm5lbCAqLworCQkJCSAmZG1hMCAxOT47ICAgICAgICAvKiB3cml0ZSBjaGFubmVsICovCisJCQlkbWEtbmFtZXMgPSAicngiLCAidHgiOworCQl9OworCisJCWkyYzE6IGkyY0BmY2IwOTAwMCB7CisJCQljb21wYXRpYmxlID0gInNucHMsZGVzaWdud2FyZS1pMmMiOworCQkJZG1hcyA9CTwmZG1hMCAyMCAgICAgICAgICAvKiByZWFkIGNoYW5uZWwgKi8KKwkJCQkgJmRtYTAgMjE+OyAgICAgICAgLyogd3JpdGUgY2hhbm5lbCAqLworCQkJZG1hLW5hbWVzID0gInJ4IiwgInR4IjsKKwkJfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9scGMxODUwLWRtYW11eC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2xwYzE4NTAtZG1hbXV4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Nzc0MGFkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9scGMxODUwLWRtYW11eC50eHQKQEAgLTAsMCArMSw1NCBAQAorTlhQIExQQzE4eHgvNDN4eCBETUEgTVVYIChETUEgcmVxdWVzdCByb3V0ZXIpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CSJueHAsbHBjMTg1MC1kbWFtdXgiCistIHJlZzoJCU1lbW9yeSBtYXAgZm9yIGFjY2Vzc2luZyBtb2R1bGUKKy0gI2RtYS1jZWxsczoJU2hvdWxkIGJlIHNldCB0byA8Mz4uCisJCSogMXN0IGNlbGwgY29udGFpbiB0aGUgbWFzdGVyIGRtYSByZXF1ZXN0IHNpZ25hbAorCQkqIDJuZCBjZWxsIGNvbnRhaW4gdGhlIG11eCB2YWx1ZSAoMC0zKSBmb3IgdGhlIHBlcmlwaGVyYWwKKwkJKiAzcmQgY2VsbCBjb250YWluIGVpdGhlciAxIG9yIDIgZGVwZW5kaW5nIG9uIHRoZSBBSEIKKwkJICBtYXN0ZXIgdXNlZC4KKy0gZG1hLXJlcXVlc3RzOglOdW1iZXIgb2YgRE1BIHJlcXVlc3RzIGZvciB0aGUgbXV4CistIGRtYS1tYXN0ZXJzOglwaGFuZGxlIHBvaW50aW5nIHRvIHRoZSBETUEgY29udHJvbGxlcgorCitUaGUgRE1BIGNvbnRyb2xsZXIgbm9kZSBuZWVkIHRvIGhhdmUgdGhlIGZvbGxvd2luZyBwb3JvcGVydGllczoKKy0gZG1hLXJlcXVlc3RzOglOdW1iZXIgb2YgRE1BIHJlcXVlc3RzIHRoZSBjb250cm9sbGVyIGNhbiBoYW5kbGUKKworRXhhbXBsZToKKworZG1hYzogZG1hQDQwMDAyMDAwIHsKKwljb21wYXRpYmxlID0gIm54cCxscGMxODUwLWdwZG1hIiwgImFybSxwbDA4MCIsICJhcm0scHJpbWVjZWxsIjsKKwlhcm0scHJpbWVjZWxsLXBlcmlwaGlkID0gPDB4MDAwNDEwODA+OworCXJlZyA9IDwweDQwMDAyMDAwIDB4MTAwMD47CisJaW50ZXJydXB0cyA9IDwyPjsKKwljbG9ja3MgPSA8JmNjdTEgQ0xLX0NQVV9ETUE+OworCWNsb2NrLW5hbWVzID0gImFwYl9wY2xrIjsKKwkjZG1hLWNlbGxzID0gPDI+OworCWRtYS1jaGFubmVscyA9IDw4PjsKKwlkbWEtcmVxdWVzdHMgPSA8MTY+OworCWxsaS1idXMtaW50ZXJmYWNlLWFoYjE7CisJbGxpLWJ1cy1pbnRlcmZhY2UtYWhiMjsKKwltZW0tYnVzLWludGVyZmFjZS1haGIxOworCW1lbS1idXMtaW50ZXJmYWNlLWFoYjI7CisJbWVtY3B5LWJ1cnN0LXNpemUgPSA8MjU2PjsKKwltZW1jcHktYnVzLXdpZHRoID0gPDMyPjsKK307CisKK2RtYW11eDogZG1hLW11eCB7CisJY29tcGF0aWJsZSA9ICJueHAsbHBjMTg1MC1kbWFtdXgiOworCSNkbWEtY2VsbHMgPSA8Mz47CisJZG1hLXJlcXVlc3RzID0gPDY0PjsKKwlkbWEtbWFzdGVycyA9IDwmZG1hYz47Cit9OworCit1YXJ0MDogc2VyaWFsQDQwMDgxMDAwIHsKKwljb21wYXRpYmxlID0gIm54cCxscGMxODUwLXVhcnQiLCAibnMxNjU1MGEiOworCXJlZyA9IDwweDQwMDgxMDAwIDB4MTAwMD47CisJcmVnLXNoaWZ0ID0gPDI+OworCWludGVycnVwdHMgPSA8MjQ+OworCWNsb2NrcyA9IDwmY2N1MiBDTEtfQVBCMF9VQVJUMD4sIDwmY2N1MSBDTEtfQ1BVX1VBUlQwPjsKKwljbG9jay1uYW1lcyA9ICJ1YXJ0Y2xrIiwgInJlZyI7CisJZG1hcyA9IDwmZG1hbXV4IDEgMSAyCisJCSZkbWFtdXggMiAxIDI+OworCWRtYS1uYW1lcyA9ICJ0eCIsICJyeCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9tbXAtZG1hLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvbW1wLWRtYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E4MDJmNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvbW1wLWRtYS50eHQKQEAgLTAsMCArMSw3NyBAQAorKiBNQVJWRUxMIE1NUCBETUEgY29udHJvbGxlcgorCitNYXJ2ZWxsIFBlcmlwaGVyYWwgRE1BIENvbnRyb2xsZXIKK1VzZWQgcGxhdGZvcm1zOiBweGE2ODgsIHB4YTkxMCwgcHhhM3h4LCBldGMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJtYXJ2ZWxsLHBkbWEtMS4wIgorLSByZWc6IFNob3VsZCBjb250YWluIERNQSByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aC4KKy0gaW50ZXJydXB0czogRWl0aGVyIGNvbnRhaW4gYWxsIG9mIHRoZSBwZXItY2hhbm5lbCBETUEgaW50ZXJydXB0cworCQlvciBvbmUgaXJxIGZvciBwZG1hIGRldmljZQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSAjZG1hLWNoYW5uZWxzOiBOdW1iZXIgb2YgRE1BIGNoYW5uZWxzIHN1cHBvcnRlZCBieSB0aGUgY29udHJvbGxlciAoZGVmYXVsdHMKKyAgdG8gMzIgd2hlbiBub3Qgc3BlY2lmaWVkKQorCisibWFydmVsbCxwZG1hLTEuMCIKK1VzZWQgcGxhdGZvcm1zOiBweGEyNXgsIHB4YTI3eCwgcHhhM3h4LCBweGE5M3gsIHB4YTE2OCwgcHhhOTEwLCBweGE2ODguCisKK0V4YW1wbGVzOgorCisvKgorICogRWFjaCBjaGFubmVsIGhhcyBzcGVjaWZpYyBpcnEKKyAqIElDVSBwYXJzZSBvdXQgaXJxIGNoYW5uZWwgZnJvbSBJQ1UgcmVnaXN0ZXIsCisgKiB3aGlsZSBETUEgY29udHJvbGxlciBtYXkgbm90IGFibGUgdG8gZGlzdGluZ3Vpc2ggdGhlIGlycSBjaGFubmVsCisgKiBVc2luZyB0aGlzIG1ldGhvZCwgaW50ZXJydXB0LXBhcmVudCBpcyByZXF1aXJlZCBhcyBkZW11eGVyCisgKiBGb3IgZXhhbXBsZSwgcHhhNjg4IGljdSByZWdpc3RlciAweDEyOCwgYml0IDB+MTUgaXMgUERNQSBjaGFubmVsIGlycSwKKyAqIDE4fjIxIGlzIEFETUEgaXJxCisgKi8KK3BkbWE6IGRtYS1jb250cm9sbGVyQGQ0MDAwMDAwIHsKKwkgICAgICBjb21wYXRpYmxlID0gIm1hcnZlbGwscGRtYS0xLjAiOworCSAgICAgIHJlZyA9IDwweGQ0MDAwMDAwIDB4MTAwMDA+OworCSAgICAgIGludGVycnVwdHMgPSA8MCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNT47CisJICAgICAgaW50ZXJydXB0LXBhcmVudCA9IDwmaW50Y211eDMyPjsKKwkgICAgICAjZG1hLWNoYW5uZWxzID0gPDE2PjsKKyAgICAgIH07CisKKy8qCisgKiBPbmUgaXJxIGZvciBhbGwgY2hhbm5lbHMKKyAqIERtYWVuZ2luZSBkcml2ZXIgKERNQSBjb250cm9sbGVyKSBkaXN0aW5ndWlzaCBpcnEgY2hhbm5lbCB2aWEKKyAqIHBhcnNpbmcgaW50ZXJuYWwgcmVnaXN0ZXIKKyAqLworcGRtYTogZG1hLWNvbnRyb2xsZXJAZDQwMDAwMDAgeworCSAgICAgIGNvbXBhdGlibGUgPSAibWFydmVsbCxwZG1hLTEuMCI7CisJICAgICAgcmVnID0gPDB4ZDQwMDAwMDAgMHgxMDAwMD47CisJICAgICAgaW50ZXJydXB0cyA9IDw0Nz47CisJICAgICAgI2RtYS1jaGFubmVscyA9IDwxNj47CisgICAgICB9OworCisKK01hcnZlbGwgVHdvIENoYW5uZWwgRE1BIENvbnRyb2xsZXIgdXNlZCBzcGVjaWZpY2FsbHkgZm9yIGF1ZGlvCitVc2VkIHBsYXRmb3JtczogcHhhNjg4LCBweGE5MTAKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJtYXJ2ZWxsLGFkbWEtMS4wIiBvciAibWFydmVsbCxweGE5MTAtc3F1IgorLSByZWc6IFNob3VsZCBjb250YWluIERNQSByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aC4KKy0gaW50ZXJydXB0czogRWl0aGVyIGNvbnRhaW4gYWxsIG9mIHRoZSBwZXItY2hhbm5lbCBETUEgaW50ZXJydXB0cworCQlvciBvbmUgaXJxIGZvciBkbWEgZGV2aWNlCisKKyJtYXJ2ZWxsLGFkbWEtMS4wIiB1c2VkIG9uIHB4YTY4OAorIm1hcnZlbGwscHhhOTEwLXNxdSIgdXNlZCBvbiBweGE5MTAKKworRXhhbXBsZXM6CisKKy8qIGVhY2ggY2hhbm5lbCBoYXMgc3BlY2lmaWMgaXJxICovCithZG1hMDogZG1hLWNvbnRyb2xsZXJAZDQyYTA4MDAgeworCSAgICAgIGNvbXBhdGlibGUgPSAibWFydmVsbCxhZG1hLTEuMCI7CisJICAgICAgcmVnID0gPDB4ZDQyYTA4MDAgMHgxMDA+OworCSAgICAgIGludGVycnVwdHMgPSA8MTggMTk+OworCSAgICAgIGludGVycnVwdC1wYXJlbnQgPSA8JmludGNtdXgzMj47CisgICAgICB9OworCisvKiBPbmUgaXJxIGZvciBhbGwgY2hhbm5lbHMgKi8KK3NxdTogZG1hLWNvbnRyb2xsZXJAZDQyYTA4MDAgeworCSAgICAgIGNvbXBhdGlibGUgPSAibWFydmVsbCxweGE5MTAtc3F1IjsKKwkgICAgICByZWcgPSA8MHhkNDJhMDgwMCAweDEwMD47CisJICAgICAgaW50ZXJydXB0cyA9IDw0Nj47CisgICAgICB9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9tb3hhLG1veGFydC1kbWEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9tb3hhLG1veGFydC1kbWEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhOWYzNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL21veGEsbW94YXJ0LWRtYS50eHQKQEAgLTAsMCArMSw0NSBAQAorTU9YQSBBUlQgRE1BIENvbnRyb2xsZXIKKworU2VlIGRtYS50eHQgZmlyc3QKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDoJTXVzdCBiZSAibW94YSxtb3hhcnQtZG1hIgorLSByZWcgOgkJU2hvdWxkIGNvbnRhaW4gcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKy0gaW50ZXJydXB0cyA6CVNob3VsZCBjb250YWluIGFuIGludGVycnVwdC1zcGVjaWZpZXIgZm9yIHRoZSBzb2xlCisJCWludGVycnVwdCBnZW5lcmF0ZWQgYnkgdGhlIGRldmljZQorLSAjZG1hLWNlbGxzIDoJU2hvdWxkIGJlIDEsIGEgc2luZ2xlIGNlbGwgaG9sZGluZyBhIGxpbmUgcmVxdWVzdCBudW1iZXIKKworRXhhbXBsZToKKworCWRtYTogZG1hQDkwNTAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJtb3hhLG1veGFydC1kbWEiOworCQlyZWcgPSA8MHg5MDUwMDA4MCAweDQwPjsKKwkJaW50ZXJydXB0cyA9IDwyNCAwPjsKKwkJI2RtYS1jZWxscyA9IDwxPjsKKwl9OworCisKK0NsaWVudHM6CisKK0RNQSBjbGllbnRzIGNvbm5lY3RlZCB0byB0aGUgTU9YQSBBUlQgRE1BIGNvbnRyb2xsZXIgbXVzdCB1c2UgdGhlIGZvcm1hdAorZGVzY3JpYmVkIGluIHRoZSBkbWEudHh0IGZpbGUsIHVzaW5nIGEgdHdvLWNlbGwgc3BlY2lmaWVyIGZvciBlYWNoIGNoYW5uZWw6CithIHBoYW5kbGUgcGx1cyBvbmUgaW50ZWdlciBjZWxscy4KK1RoZSB0d28gY2VsbHMgaW4gb3JkZXIgYXJlOgorCisxLiBBIHBoYW5kbGUgcG9pbnRpbmcgdG8gdGhlIERNQSBjb250cm9sbGVyLgorMi4gUGVyaXBoZXJhbCBpZGVudGlmaWVyIGZvciB0aGUgaGFyZHdhcmUgaGFuZHNoYWtpbmcgaW50ZXJmYWNlLgorCitFeGFtcGxlOgorVXNlIHNwZWNpZmljIHJlcXVlc3QgbGluZSBwYXNzaW5nIGZyb20gZG1hCitGb3IgZXhhbXBsZSwgTU1DIHJlcXVlc3QgbGluZSBpcyA1CisKKwlzZGhjaTogc2RoY2lAOThlMDAwMDAgeworCQljb21wYXRpYmxlID0gIm1veGEsbW94YXJ0LXNkaGNpIjsKKwkJcmVnID0gPDB4OThlMDAwMDAgMHg1Qz47CisJCWludGVycnVwdHMgPSA8NSAwPjsKKwkJY2xvY2tzID0gPCZjbGtfYXBiPjsKKwkJZG1hcyA9ICA8JmRtYSA1PiwKKwkJCTwmZG1hIDU+OworCQlkbWEtbmFtZXMgPSAidHgiLCAicngiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL21wYzUxMngtZG1hLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvbXBjNTEyeC1kbWEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2NTExZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL21wYzUxMngtZG1hLnR4dApAQCAtMCwwICsxLDI5IEBACisqIEZyZWVzY2FsZSBNUEM1MTJ4IGFuZCBNUEM4MzA4IERNQSBDb250cm9sbGVyCisKK1RoZSBETUEgY29udHJvbGxlciBpbiBGcmVlc2NhbGUgTVBDNTEyeCBhbmQgTVBDODMwOCBTb0NzIGNhbiBtb3ZlCitibG9ja3Mgb2YgbWVtb3J5IGNvbnRlbnRzIGJldHdlZW4gbWVtb3J5IGFuZCBwZXJpcGhlcmFscyBvcgorZnJvbSBtZW1vcnkgdG8gbWVtb3J5LgorCitSZWZlciB0byAiR2VuZXJpYyBETUEgQ29udHJvbGxlciBhbmQgRE1BIHJlcXVlc3QgYmluZGluZ3MiIGluCit0aGUgZG1hL2RtYS50eHQgZmlsZSBmb3IgYSBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIGJpbmRpbmcuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiZnNsLG1wYzUxMjEtZG1hIiBvciAiZnNsLG1wYzgzMDgtZG1hIjsKKy0gcmVnOiBzaG91bGQgY29udGFpbiB0aGUgRE1BIGNvbnRyb2xsZXIgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGg7CistIGludGVycnVwdCBmb3IgdGhlIERNQSBjb250cm9sbGVyOiBzeW50YXggb2YgaW50ZXJydXB0IGNsaWVudCBub2RlCisJaXMgZGVzY3JpYmVkIGluIGludGVycnVwdC1jb250cm9sbGVyL2ludGVycnVwdHMudHh0IGZpbGUuCistICNkbWEtY2VsbHM6IHRoZSBsZW5ndGggb2YgdGhlIERNQSBzcGVjaWZpZXIsIG11c3QgYmUgPDE+LgorCUVhY2ggY2hhbm5lbCBvZiB0aGlzIERNQSBjb250cm9sbGVyIGhhcyBhIHBlcmlwaGVyYWwgcmVxdWVzdCBsaW5lLAorCXRoZSBhc3NpZ25tZW50IGlzIGZpeGVkIGluIGhhcmR3YXJlLiBUaGlzIG9uZSBjZWxsCisJaW4gZG1hcyBwcm9wZXJ0eSBvZiBhIGNsaWVudCBkZXZpY2UgcmVwcmVzZW50cyB0aGUgY2hhbm5lbCBudW1iZXIuCisKK0V4YW1wbGU6CisKKwlkbWEwOiBkbWFAMTQwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxtcGM1MTIxLWRtYSI7CisJCXJlZyA9IDwweDE0MDAwIDB4MTgwMD47CisJCWludGVycnVwdHMgPSA8NjUgMHg4PjsKKwkJI2RtYS1jZWxscyA9IDwxPjsKKwl9OworCitETUEgY2xpZW50cyBtdXN0IHVzZSB0aGUgZm9ybWF0IGRlc2NyaWJlZCBpbiBkbWEvZG1hLnR4dCBmaWxlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9tdi14b3IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9tdi14b3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NmVmODEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL212LXhvci50eHQKQEAgLTAsMCArMSwzOCBAQAorKiBNYXJ2ZWxsIFhPUiBlbmdpbmVzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAibWFydmVsbCxvcmlvbi14b3IiIG9yICJtYXJ2ZWxsLGFybWFkYS0zODAteG9yIgorLSByZWc6IFNob3VsZCBjb250YWluIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoICh0d28gc2V0cykKKyAgICB0aGUgZmlyc3Qgc2V0IGlzIHRoZSBsb3cgcmVnaXN0ZXJzLCB0aGUgc2Vjb25kIHNldCB0aGUgaGlnaAorICAgIHJlZ2lzdGVycyBmb3IgdGhlIFhPUiBlbmdpbmUuCistIGNsb2NrczogcG9pbnRlciB0byB0aGUgcmVmZXJlbmNlIGNsb2NrCisKK1RoZSBEVCBub2RlIG11c3QgYWxzbyBjb250YWlucyBzdWItbm9kZXMgZm9yIGVhY2ggWE9SIGNoYW5uZWwgdGhhdCB0aGUKK1hPUiBlbmdpbmUgaGFzLiBUaG9zZSBzdWItbm9kZXMgaGF2ZSB0aGUgZm9sbG93aW5nIHJlcXVpcmVkCitwcm9wZXJ0aWVzOgorLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgb2YgdGhlIFhPUiBjaGFubmVsCisKK1RoZSBzdWItbm9kZXMgdXNlZCB0byBjb250YWluIG9uZSBvciBzZXZlcmFsIG9mIHRoZSBmb2xsb3dpbmcKK3Byb3BlcnRpZXMsIGJ1dCB0aGV5IGFyZSBub3cgZGVwcmVjYXRlZDoKKy0gZG1hY2FwLG1lbWNweSB0byBpbmRpY2F0ZSB0aGF0IHRoZSBYT1IgY2hhbm5lbCBpcyBjYXBhYmxlIG9mIG1lbWNweSBvcGVyYXRpb25zCistIGRtYWNhcCxtZW1zZXQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgWE9SIGNoYW5uZWwgaXMgY2FwYWJsZSBvZiBtZW1zZXQgb3BlcmF0aW9ucworLSBkbWFjYXAseG9yIHRvIGluZGljYXRlIHRoYXQgdGhlIFhPUiBjaGFubmVsIGlzIGNhcGFibGUgb2YgeG9yIG9wZXJhdGlvbnMKKy0gZG1hY2FwLGludGVycnVwdCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBYT1IgY2hhbm5lbCBpcyBjYXBhYmxlIG9mCisgIGdlbmVyYXRpbmcgaW50ZXJydXB0cworCitFeGFtcGxlOgorCit4b3JAZDAwNjA5MDAgeworCWNvbXBhdGlibGUgPSAibWFydmVsbCxvcmlvbi14b3IiOworCXJlZyA9IDwweGQwMDYwOTAwIDB4MTAwCisJICAgICAgIDB4ZDAwNjBiMDAgMHgxMDA+OworCWNsb2NrcyA9IDwmY29yZWNsayAwPjsKKwlzdGF0dXMgPSAib2theSI7CisKKwl4b3IwMCB7CisJICAgICAgaW50ZXJydXB0cyA9IDw1MT47CisJfTsKKwl4b3IwMSB7CisJICAgICAgaW50ZXJydXB0cyA9IDw1Mj47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL25icGZheGkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9uYnBmYXhpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWUyNTIyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9uYnBmYXhpLnR4dApAQCAtMCwwICsxLDYxIEBACisqIFJlbmVzYXMgIlR5cGUtQVhJIiBOQlBGQVhJKiBETUEgY29udHJvbGxlcnMKKworKiBETUEgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzCisKKy0gY29tcGF0aWJsZToJbXVzdCBiZSBvbmUgb2YKKwkJInJlbmVzYXMsbmJwZmF4aTY0ZG1hYzFiNCIKKwkJInJlbmVzYXMsbmJwZmF4aTY0ZG1hYzFiOCIKKwkJInJlbmVzYXMsbmJwZmF4aTY0ZG1hYzFiMTYiCisJCSJyZW5lc2FzLG5icGZheGk2NGRtYWM0YjQiCisJCSJyZW5lc2FzLG5icGZheGk2NGRtYWM0YjgiCisJCSJyZW5lc2FzLG5icGZheGk2NGRtYWM0YjE2IgorCQkicmVuZXNhcyxuYnBmYXhpNjRkbWFjOGI0IgorCQkicmVuZXNhcyxuYnBmYXhpNjRkbWFjOGI4IgorCQkicmVuZXNhcyxuYnBmYXhpNjRkbWFjOGIxNiIKKy0gI2RtYS1jZWxsczoJbXVzdCBiZSAyOiB0aGUgZmlyc3QgaW50ZWdlciBpcyBhIHRlcm1pbmFsIG51bWJlciwgdG8gd2hpY2ggdGhpcworCQlzbGF2ZSBpcyBjb25uZWN0ZWQsIHRoZSBzZWNvbmQgb25lIGlzIGZsYWdzLiBGbGFncyBpcyBhIGJpdG1hc2sKKwkJd2l0aCB0aGUgZm9sbG93aW5nIGJpdHMgZGVmaW5lZDoKKworI2RlZmluZSBOQlBGX1NMQVZFX1JRX0hJR0gJMQorI2RlZmluZSBOQlBGX1NMQVZFX1JRX0xPVwkyCisjZGVmaW5lIE5CUEZfU0xBVkVfUlFfTEVWRUwJNAorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCitZb3UgY2FuIHVzZSBkbWEtY2hhbm5lbHMgYW5kIGRtYS1yZXF1ZXN0cyBhcyBkZXNjcmliZWQgaW4gZG1hLnR4dCwgYWx0aG91Z2ggdGhleQord29uJ3QgYmUgdXNlZCwgdGhpcyBpbmZvcm1hdGlvbiBpcyBkZXJpdmVkIGZyb20gdGhlIGNvbXBhdGliaWxpdHkgc3RyaW5nLgorCitFeGFtcGxlOgorCisJZG1hOiBkbWEtY29udHJvbGxlckA0ODAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxuYnBmYXhpNjRkbWFjOGI0IjsKKwkJcmVnID0gPDB4NDgwMDAwMDAgMHg0MDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMTIgMHg0CisJCQkgICAgICAwIDEzIDB4NAorCQkJICAgICAgMCAxNCAweDQKKwkJCSAgICAgIDAgMTUgMHg0CisJCQkgICAgICAwIDE2IDB4NAorCQkJICAgICAgMCAxNyAweDQKKwkJCSAgICAgIDAgMTggMHg0CisJCQkgICAgICAwIDE5IDB4ND47CisJCSNkbWEtY2VsbHMgPSA8Mj47CisJCWRtYS1jaGFubmVscyA9IDw4PjsKKwkJZG1hLXJlcXVlc3RzID0gPDg+OworCX07CisKKyogRE1BIGNsaWVudAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCitkbWFzIGFuZCBkbWEtbmFtZXMgYXJlIHJlcXVpcmVkLCBhcyBkZXNjcmliZWQgaW4gZG1hLnR4dC4KKworRXhhbXBsZToKKworI2luY2x1ZGUgPGR0LWJpbmRpbmdzL2RtYS9uYnBmYXhpLmg+CisKKy4uLgorCQlkbWFzID0gPCZkbWEgMCAoTkJQRl9TTEFWRV9SUV9ISUdIIHwgTkJQRl9TTEFWRV9SUV9MRVZFTCkKKwkJCSZkbWEgMSAoTkJQRl9TTEFWRV9SUV9ISUdIIHwgTkJQRl9TTEFWRV9SUV9MRVZFTCk+OworCQlkbWEtbmFtZXMgPSAicngiLCAidHgiOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9xY29tX2FkbS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3Fjb21fYWRtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmNhYjkxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9xY29tX2FkbS50eHQKQEAgLTAsMCArMSw2MiBAQAorUUNPTSBBRE0gRE1BIENvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogbXVzdCBjb250YWluICJxY29tLGFkbSIgZm9yIElQUS9BUFE4MDY0IGFuZCBNU004OTYwCistIHJlZzogQWRkcmVzcyByYW5nZSBmb3IgRE1BIHJlZ2lzdGVycworLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBvbmUgaW50ZXJydXB0IHNoYXJlZCBieSBhbGwgY2hhbm5lbHMKKy0gI2RtYS1jZWxsczogbXVzdCBiZSA8Mj4uICBGaXJzdCBjZWxsIGRlbm90ZXMgdGhlIGNoYW5uZWwgbnVtYmVyLiAgU2Vjb25kIGNlbGwKKyAgZGVub3RlcyBDUkNJIChjbGllbnQgcmF0ZSBjb250cm9sIGludGVyZmFjZSkgZmxvdyBjb250cm9sIGFzc2lnbm1lbnQuCistIGNsb2NrczogU2hvdWxkIGNvbnRhaW4gdGhlIGNvcmUgY2xvY2sgYW5kIGludGVyZmFjZSBjbG9jay4KKy0gY2xvY2stbmFtZXM6IE11c3QgY29udGFpbiAiY29yZSIgZm9yIHRoZSBjb3JlIGNsb2NrIGFuZCAiaWZhY2UiIGZvciB0aGUKKyAgaW50ZXJmYWNlIGNsb2NrLgorLSByZXNldHM6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiByZXNldCBuYW1lcy4KKy0gcmVzZXQtbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIC0gY2xrCisgIC0gYzAKKyAgLSBjMQorICAtIGMyCistIHFjb20sZWU6IGluZGljYXRlcyB0aGUgc2VjdXJpdHkgZG9tYWluIGlkZW50aWZpZXIgdXNlZCBpbiB0aGUgc2VjdXJlIHdvcmxkLgorCitFeGFtcGxlOgorCQlhZG1fZG1hOiBkbWFAMTgzMDAwMDAgeworCQkJY29tcGF0aWJsZSA9ICJxY29tLGFkbSI7CisJCQlyZWcgPSA8MHgxODMwMDAwMCAweDEwMDAwMD47CisJCQlpbnRlcnJ1cHRzID0gPDAgMTcwIDA+OworCQkJI2RtYS1jZWxscyA9IDwyPjsKKworCQkJY2xvY2tzID0gPCZnY2MgQURNMF9DTEs+LCA8JmdjYyBBRE0wX1BCVVNfQ0xLPjsKKwkJCWNsb2NrLW5hbWVzID0gImNvcmUiLCAiaWZhY2UiOworCisJCQlyZXNldHMgPSA8JmdjYyBBRE0wX1JFU0VUPiwKKwkJCQk8JmdjYyBBRE0wX0MwX1JFU0VUPiwKKwkJCQk8JmdjYyBBRE0wX0MxX1JFU0VUPiwKKwkJCQk8JmdjYyBBRE0wX0MyX1JFU0VUPjsKKwkJCXJlc2V0LW5hbWVzID0gImNsayIsICJjMCIsICJjMSIsICJjMiI7CisJCQlxY29tLGVlID0gPDA+OworCQl9OworCitETUEgY2xpZW50cyBtdXN0IHVzZSB0aGUgZm9ybWF0IGRlc2NyaXB0ZWQgaW4gdGhlIGRtYS50eHQgZmlsZSwgdXNpbmcgYSB0aHJlZQorY2VsbCBzcGVjaWZpZXIgZm9yIGVhY2ggY2hhbm5lbC4KKworRWFjaCBkbWFzIHJlcXVlc3QgY29uc2lzdHMgb2YgMyBjZWxsczoKKyAxLiBwaGFuZGxlIHBvaW50aW5nIHRvIHRoZSBETUEgY29udHJvbGxlcgorIDIuIGNoYW5uZWwgbnVtYmVyCisgMy4gQ1JDSSBhc3NpZ25tZW50LCBpZiBhcHBsaWNhYmxlLiAgSWYgbm8gQ1JDSSBmbG93IGNvbnRyb2wgaXMgcmVxdWlyZWQsIHVzZSAwLgorICAgIFRoZSBDUkNJIGlzIHVzZWQgZm9yIGZsb3cgY29udHJvbC4gIEl0IGlkZW50aWZpZXMgdGhlIHBlcmlwaGVyYWwgZGV2aWNlIHRoYXQKKyAgICBpcyB0aGUgc291cmNlL2Rlc3RpbmF0aW9uIGZvciB0aGUgdHJhbnNmZXJyZWQgZGF0YS4KKworRXhhbXBsZToKKworCXNwaTQ6IHNwaUAxYTI4MDAwMCB7CisJCXN0YXR1cyA9ICJvayI7CisJCXNwaS1tYXgtZnJlcXVlbmN5ID0gPDUwMDAwMDAwPjsKKworCQlwaW5jdHJsLTAgPSA8JnNwaV9waW5zPjsKKwkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKworCQljcy1ncGlvcyA9IDwmcWNvbV9waW5tdXggMjAgMD47CisKKwkJZG1hcyA9IDwmYWRtX2RtYSA2IDk+LAorCQkJPCZhZG1fZG1hIDUgMTA+OworCQlkbWEtbmFtZXMgPSAicngiLCAidHgiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3Fjb21fYmFtX2RtYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3Fjb21fYmFtX2RtYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM5ZDQ4ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvcWNvbV9iYW1fZG1hLnR4dApAQCAtMCwwICsxLDQ0IEBACitRQ09NIEJBTSBETUEgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorICogInFjb20sYmFtLXYxLjQuMCIgZm9yIE1TTTg5NzQsIEFQUTgwNzQgYW5kIEFQUTgwODQKKyAqICJxY29tLGJhbS12MS4zLjAiIGZvciBBUFE4MDY0LCBJUFE4MDY0IGFuZCBNU004OTYwCisgKiAicWNvbSxiYW0tdjEuNy4wIiBmb3IgTVNNODkxNgorLSByZWc6IEFkZHJlc3MgcmFuZ2UgZm9yIERNQSByZWdpc3RlcnMKKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gdGhlIG9uZSBpbnRlcnJ1cHQgc2hhcmVkIGJ5IGFsbCBjaGFubmVscworLSAjZG1hLWNlbGxzOiBtdXN0IGJlIDwxPiwgdGhlIGNlbGwgaW4gdGhlIGRtYXMgcHJvcGVydHkgb2YgdGhlIGNsaWVudCBkZXZpY2UKKyAgcmVwcmVzZW50cyB0aGUgY2hhbm5lbCBudW1iZXIKKy0gY2xvY2tzOiByZXF1aXJlZCBjbG9jaworLSBjbG9jay1uYW1lczogbXVzdCBjb250YWluICJiYW1fY2xrIiBlbnRyeQorLSBxY29tLGVlIDogaW5kaWNhdGVzIHRoZSBhY3RpdmUgRXhlY3V0aW9uIEVudmlyb25tZW50IGlkZW50aWZpZXIgKDAtNykgdXNlZCBpbgorICB0aGUgc2VjdXJlIHdvcmxkLgorCitFeGFtcGxlOgorCisJdWFydC1iYW06IGRtYUBmOTk4NDAwMCA9IHsKKwkJY29tcGF0aWJsZSA9ICJxY29tLGJhbS12MS40LjAiOworCQlyZWcgPSA8MHhmOTk4NDAwMCAweDE1MDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDk0IDA+OworCQljbG9ja3MgPSA8JmdjYyBHQ0NfQkFNX0RNQV9BSEJfQ0xLPjsKKwkJY2xvY2stbmFtZXMgPSAiYmFtX2NsayI7CisJCSNkbWEtY2VsbHMgPSA8MT47CisJCXFjb20sZWUgPSA8MD47CisJfTsKKworRE1BIGNsaWVudHMgbXVzdCB1c2UgdGhlIGZvcm1hdCBkZXNjcmliZWQgaW4gdGhlIGRtYS50eHQgZmlsZSwgdXNpbmcgYSB0d28gY2VsbAorc3BlY2lmaWVyIGZvciBlYWNoIGNoYW5uZWwuCisKK0V4YW1wbGU6CisJc2VyaWFsQGY5OTFlMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJxY29tLG1zbS11YXJ0IjsKKwkJcmVnID0gPDB4Zjk5MWUwMDAgMHgxMDAwPgorCQkJPDB4Zjk5NDQwMDAgMHgxOTAwMD47CisJCWludGVycnVwdHMgPSA8MCAxMDggMD47CisJCWNsb2NrcyA9IDwmZ2NjIEdDQ19CTFNQMV9VQVJUMl9BUFBTX0NMSz4sCisJCQk8JmdjYyBHQ0NfQkxTUDFfQUhCX0NMSz47CisJCWNsb2NrLW5hbWVzID0gImNvcmUiLCAiaWZhY2UiOworCisJCWRtYXMgPSA8JnVhcnQtYmFtIDA+LCA8JnVhcnQtYmFtIDE+OworCQlkbWEtbmFtZXMgPSAicngiLCAidHgiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3JlbmVzYXMscmNhci1kbWFjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvcmVuZXNhcyxyY2FyLWRtYWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ZGFlZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3JlbmVzYXMscmNhci1kbWFjLnR4dApAQCAtMCwwICsxLDk1IEBACisqIFJlbmVzYXMgUi1DYXIgRE1BIENvbnRyb2xsZXIgRGV2aWNlIFRyZWUgYmluZGluZ3MKKworUmVuZXNhcyBSLUNhciBHZW5lcmF0aW9uIDIgU29DcyBoYXZlIG11bHRpcGxlIG11bHRpLWNoYW5uZWwgRE1BCitjb250cm9sbGVyIGluc3RhbmNlcyBuYW1lZCBETUFDIGNhcGFibGUgb2Ygc2VydmluZyBtdWx0aXBsZSBjbGllbnRzLiBDaGFubmVscworY2FuIGJlIGRlZGljYXRlZCB0byBzcGVjaWZpYyBjbGllbnRzIG9yIHNoYXJlZCBiZXR3ZWVuIGEgbGFyZ2UgbnVtYmVyIG9mCitjbGllbnRzLgorCitFYWNoIERNQSBjbGllbnQgaXMgY29ubmVjdGVkIHRvIG9uZSBkZWRpY2F0ZWQgcG9ydCBvZiB0aGUgRE1BQywgaWRlbnRpZmllZCBieQorYW4gOC1iaXQgcG9ydCBudW1iZXIgY2FsbGVkIHRoZSBNSUQvUklELiBBIERNQSBjb250cm9sbGVyIGNhbiB0aHVzIHNlcnZlIHVwIHRvCisyNTYgY2xpZW50cyBpbiB0b3RhbC4gV2hlbiB0aGUgbnVtYmVyIG9mIGhhcmR3YXJlIGNoYW5uZWxzIGlzIGxvd2VyIHRoYW4gdGhlCitudW1iZXIgb2YgY2xpZW50cyB0byBiZSBzZXJ2ZWQsIGNoYW5uZWxzIG11c3QgYmUgc2hhcmVkIGJldHdlZW4gbXVsdGlwbGUgRE1BCitjbGllbnRzLiBUaGUgYXNzb2NpYXRpb24gb2YgRE1BIGNsaWVudHMgdG8gRE1BQyBjaGFubmVscyBpcyBmdWxseSBkeW5hbWljIGFuZAorbm90IGRlc2NyaWJlZCBpbiB0aGVzZSBkZXZpY2UgdHJlZSBiaW5kaW5ncy4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBtdXN0IGNvbnRhaW4gInJlbmVzYXMscmNhci1kbWFjIgorCistIHJlZzogYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVycyBibG9jayBmb3IgdGhlIERNQUMKKworLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgc3BlY2lmaWVycyBmb3IgdGhlIERNQUMsIG9uZSBmb3IgZWFjaCBlbnRyeSBpbgorICBpbnRlcnJ1cHQtbmFtZXMuCistIGludGVycnVwdC1uYW1lczogb25lIGVudHJ5IHBlciBjaGFubmVsLCBuYW1lZCAiY2gldSIsIHdoZXJlICV1IGlzIHRoZQorICBjaGFubmVsIG51bWJlciByYW5naW5nIGZyb20gemVybyB0byB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIG1pbnVzIG9uZS4KKworLSBjbG9jay1uYW1lczogImZjayIgZm9yIHRoZSBmdW5jdGlvbmFsIGNsb2NrCistIGNsb2NrczogYSBsaXN0IG9mIHBoYW5kbGUgKyBjbG9jay1zcGVjaWZpZXIgcGFpcnMsIG9uZSBmb3IgZWFjaCBlbnRyeQorICBpbiBjbG9jay1uYW1lcy4KKy0gY2xvY2stbmFtZXM6IG11c3QgY29udGFpbiAiZmNrIiBmb3IgdGhlIGZ1bmN0aW9uYWwgY2xvY2suCisKKy0gI2RtYS1jZWxsczogbXVzdCBiZSA8MT4sIHRoZSBjZWxsIHNwZWNpZmllcyB0aGUgTUlEL1JJRCBvZiB0aGUgRE1BQyBwb3J0CisgIGNvbm5lY3RlZCB0byB0aGUgRE1BIGNsaWVudAorLSBkbWEtY2hhbm5lbHM6IG51bWJlciBvZiBETUEgY2hhbm5lbHMKKworRXhhbXBsZTogUjhBNzc5MCAoUi1DYXIgSDIpIFNZUy1ETUFDcworCisJZG1hYzA6IGRtYS1jb250cm9sbGVyQGU2NzAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLHJjYXItZG1hYyI7CisJCXJlZyA9IDwwIDB4ZTY3MDAwMDAgMCAweDIwMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDE5NyBJUlFfVFlQRV9MRVZFTF9ISUdICisJCQkgICAgICAwIDIwMCBJUlFfVFlQRV9MRVZFTF9ISUdICisJCQkgICAgICAwIDIwMSBJUlFfVFlQRV9MRVZFTF9ISUdICisJCQkgICAgICAwIDIwMiBJUlFfVFlQRV9MRVZFTF9ISUdICisJCQkgICAgICAwIDIwMyBJUlFfVFlQRV9MRVZFTF9ISUdICisJCQkgICAgICAwIDIwNCBJUlFfVFlQRV9MRVZFTF9ISUdICisJCQkgICAgICAwIDIwNSBJUlFfVFlQRV9MRVZFTF9ISUdICisJCQkgICAgICAwIDIwNiBJUlFfVFlQRV9MRVZFTF9ISUdICisJCQkgICAgICAwIDIwNyBJUlFfVFlQRV9MRVZFTF9ISUdICisJCQkgICAgICAwIDIwOCBJUlFfVFlQRV9MRVZFTF9ISUdICisJCQkgICAgICAwIDIwOSBJUlFfVFlQRV9MRVZFTF9ISUdICisJCQkgICAgICAwIDIxMCBJUlFfVFlQRV9MRVZFTF9ISUdICisJCQkgICAgICAwIDIxMSBJUlFfVFlQRV9MRVZFTF9ISUdICisJCQkgICAgICAwIDIxMiBJUlFfVFlQRV9MRVZFTF9ISUdICisJCQkgICAgICAwIDIxMyBJUlFfVFlQRV9MRVZFTF9ISUdICisJCQkgICAgICAwIDIxNCBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJaW50ZXJydXB0LW5hbWVzID0gImVycm9yIiwKKwkJCQkiY2gwIiwgImNoMSIsICJjaDIiLCAiY2gzIiwKKwkJCQkiY2g0IiwgImNoNSIsICJjaDYiLCAiY2g3IiwKKwkJCQkiY2g4IiwgImNoOSIsICJjaDEwIiwgImNoMTEiLAorCQkJCSJjaDEyIiwgImNoMTMiLCAiY2gxNCI7CisJCWNsb2NrcyA9IDwmbXN0cDJfY2xrcyBSOEE3NzkwX0NMS19TWVNfRE1BQzA+OworCQljbG9jay1uYW1lcyA9ICJmY2siOworCQkjZG1hLWNlbGxzID0gPDE+OworCQlkbWEtY2hhbm5lbHMgPSA8MTU+OworCX07CisKKwlkbWFjMTogZG1hLWNvbnRyb2xsZXJAZTY3MjAwMDAgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMscmNhci1kbWFjIjsKKwkJcmVnID0gPDAgMHhlNjcyMDAwMCAwIDB4MjAwMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMjIwIElSUV9UWVBFX0xFVkVMX0hJR0gKKwkJCSAgICAgIDAgMjE2IElSUV9UWVBFX0xFVkVMX0hJR0gKKwkJCSAgICAgIDAgMjE3IElSUV9UWVBFX0xFVkVMX0hJR0gKKwkJCSAgICAgIDAgMjE4IElSUV9UWVBFX0xFVkVMX0hJR0gKKwkJCSAgICAgIDAgMjE5IElSUV9UWVBFX0xFVkVMX0hJR0gKKwkJCSAgICAgIDAgMzA4IElSUV9UWVBFX0xFVkVMX0hJR0gKKwkJCSAgICAgIDAgMzA5IElSUV9UWVBFX0xFVkVMX0hJR0gKKwkJCSAgICAgIDAgMzEwIElSUV9UWVBFX0xFVkVMX0hJR0gKKwkJCSAgICAgIDAgMzExIElSUV9UWVBFX0xFVkVMX0hJR0gKKwkJCSAgICAgIDAgMzEyIElSUV9UWVBFX0xFVkVMX0hJR0gKKwkJCSAgICAgIDAgMzEzIElSUV9UWVBFX0xFVkVMX0hJR0gKKwkJCSAgICAgIDAgMzE0IElSUV9UWVBFX0xFVkVMX0hJR0gKKwkJCSAgICAgIDAgMzE1IElSUV9UWVBFX0xFVkVMX0hJR0gKKwkJCSAgICAgIDAgMzE2IElSUV9UWVBFX0xFVkVMX0hJR0gKKwkJCSAgICAgIDAgMzE3IElSUV9UWVBFX0xFVkVMX0hJR0gKKwkJCSAgICAgIDAgMzE4IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQlpbnRlcnJ1cHQtbmFtZXMgPSAiZXJyb3IiLAorCQkJCSJjaDAiLCAiY2gxIiwgImNoMiIsICJjaDMiLAorCQkJCSJjaDQiLCAiY2g1IiwgImNoNiIsICJjaDciLAorCQkJCSJjaDgiLCAiY2g5IiwgImNoMTAiLCAiY2gxMSIsCisJCQkJImNoMTIiLCAiY2gxMyIsICJjaDE0IjsKKwkJY2xvY2tzID0gPCZtc3RwMl9jbGtzIFI4QTc3OTBfQ0xLX1NZU19ETUFDMT47CisJCWNsb2NrLW5hbWVzID0gImZjayI7CisJCSNkbWEtY2VsbHMgPSA8MT47CisJCWRtYS1jaGFubmVscyA9IDwxNT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvcmVuZXNhcyx1c2ItZG1hYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3JlbmVzYXMsdXNiLWRtYWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0MGYzNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3JlbmVzYXMsdXNiLWRtYWMudHh0CkBAIC0wLDAgKzEsMzcgQEAKKyogUmVuZXNhcyBVU0IgRE1BIENvbnRyb2xsZXIgRGV2aWNlIFRyZWUgYmluZGluZ3MKKworUmVxdWlyZWQgUHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogbXVzdCBjb250YWluICJyZW5lc2FzLHVzYi1kbWFjIgorLSByZWc6IGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlcnMgYmxvY2sgZm9yIHRoZSBETUFDCistIGludGVycnVwdHM6IGludGVycnVwdCBzcGVjaWZpZXJzIGZvciB0aGUgRE1BQywgb25lIGZvciBlYWNoIGVudHJ5IGluCisgIGludGVycnVwdC1uYW1lcy4KKy0gaW50ZXJydXB0LW5hbWVzOiBvbmUgZW50cnkgcGVyIGNoYW5uZWwsIG5hbWVkICJjaCV1Iiwgd2hlcmUgJXUgaXMgdGhlCisgIGNoYW5uZWwgbnVtYmVyIHJhbmdpbmcgZnJvbSB6ZXJvIHRvIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgbWludXMgb25lLgorLSBjbG9ja3M6IGEgbGlzdCBvZiBwaGFuZGxlICsgY2xvY2stc3BlY2lmaWVyIHBhaXJzLgorLSAjZG1hLWNlbGxzOiBtdXN0IGJlIDwxPiwgdGhlIGNlbGwgc3BlY2lmaWVzIHRoZSBjaGFubmVsIG51bWJlciBvZiB0aGUgRE1BQworICBwb3J0IGNvbm5lY3RlZCB0byB0aGUgRE1BIGNsaWVudC4KKy0gZG1hLWNoYW5uZWxzOiBudW1iZXIgb2YgRE1BIGNoYW5uZWxzCisKK0V4YW1wbGU6IFI4QTc3OTAgKFItQ2FyIEgyKSBVU0ItRE1BQ3MKKworCXVzYl9kbWFjMDogZG1hLWNvbnRyb2xsZXJAZTY1YTAwMDAgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMsdXNiLWRtYWMiOworCQlyZWcgPSA8MCAweGU2NWEwMDAwIDAgMHgxMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMTA5IElSUV9UWVBFX0xFVkVMX0hJR0gKKwkJCSAgICAgIDAgMTA5IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQlpbnRlcnJ1cHQtbmFtZXMgPSAiY2gwIiwgImNoMSI7CisJCWNsb2NrcyA9IDwmbXN0cDNfY2xrcyBSOEE3NzkwX0NMS19VU0JETUFDMD47CisJCSNkbWEtY2VsbHMgPSA8MT47CisJCWRtYS1jaGFubmVscyA9IDwyPjsKKwl9OworCisJdXNiX2RtYWMxOiBkbWEtY29udHJvbGxlckBlNjViMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicmVuZXNhcyx1c2ItZG1hYyI7CisJCXJlZyA9IDwwIDB4ZTY1YjAwMDAgMCAweDEwMD47CisJCWludGVycnVwdHMgPSA8MCAxMTAgSVJRX1RZUEVfTEVWRUxfSElHSAorCQkJICAgICAgMCAxMTAgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWludGVycnVwdC1uYW1lcyA9ICJjaDAiLCAiY2gxIjsKKwkJY2xvY2tzID0gPCZtc3RwM19jbGtzIFI4QTc3OTBfQ0xLX1VTQkRNQUMxPjsKKwkJI2RtYS1jZWxscyA9IDwxPjsKKwkJZG1hLWNoYW5uZWxzID0gPDI+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3NoZG1hLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvc2hkbWEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhM2YzYjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3NoZG1hLnR4dApAQCAtMCwwICsxLDg0IEBACisqIFNIRE1BIERldmljZSBUcmVlIGJpbmRpbmdzCisKK1NoLS9yLW1vYmlsZSBhbmQgci1jYXIgc3lzdGVtcyBvZnRlbiBoYXZlIG11bHRpcGxlIGlkZW50aWNhbCBETUEgY29udHJvbGxlcgoraW5zdGFuY2VzLCBjYXBhYmxlIG9mIHNlcnZpbmcgYW55IG9mIGEgY29tbW9uIHNldCBvZiBETUEgc2xhdmUgZGV2aWNlcywgdXNpbmcKK3RoZSBzYW1lIGNvbmZpZ3VyYXRpb24uIFRvIGRlc2NyaWJlIHRoaXMgdG9wb2xvZ3kgd2UgcmVxdWlyZSBhbGwgY29tcGF0aWJsZQorU0hETUEgRFQgbm9kZXMgdG8gYmUgcGxhY2VkIHVuZGVyIGEgRE1BIG11bHRpcGxleGVyIG5vZGUuIEFsbCBzdWNoIGNvbXBhdGlibGUKK0RNQUMgaW5zdGFuY2VzIGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGNoYW5uZWxzIGFuZCB1c2UgdGhlIHNhbWUgRE1BCitkZXNjcmlwdG9ycy4gVGhlcmVmb3JlIHJlc3BlY3RpdmUgRE1BIERUIGJpbmRpbmdzIGNhbiBhbHNvIGFsbCBiZSBwbGFjZWQgaW4gdGhlCittdWx0aXBsZXhlciBub2RlLiBFdmVuIGlmIHRoZXJlIGlzIG9ubHkgb25lIHN1Y2ggRE1BQyBpbnN0YW5jZSBvbiBhIHN5c3RlbSwgaXQKK3N0aWxsIGhhcyB0byBiZSBwbGFjZWQgdW5kZXIgc3VjaCBhIG11bHRpcGxleGVyIG5vZGUuCisKKyogRE1BIG11bHRpcGxleGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CXNob3VsZCBiZSAicmVuZXNhcyxzaGRtYS1tdXgiCistICNkbWEtY2VsbHM6CXNob3VsZCBiZSA8MT4sIHNlZSAiZG1hcyIgcHJvcGVydHkgYmVsb3cKKworT3B0aW9uYWwgcHJvcGVydGllcyAoY3VycmVudGx5IHVudXNlZCk6CistIGRtYS1jaGFubmVsczoJbnVtYmVyIG9mIERNQSBjaGFubmVscworLSBkbWEtcmVxdWVzdHM6CW51bWJlciBvZiBETUEgcmVxdWVzdCBzaWduYWxzCisKKyogRE1BIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZToJc2hvdWxkIGJlIG9mIHRoZSBmb3JtICJyZW5lc2FzLHNoZG1hLTxzb2M+Iiwgd2hlcmUgPHNvYz4gc2hvdWxkCisJCWJlIHJlcGxhY2VkIHdpdGggdGhlIGRlc2lyZWQgU29DIG1vZGVsLCBlLmcuCisJCSJyZW5lc2FzLHNoZG1hLXI4YTczYTQiIGZvciB0aGUgc3lzdGVtIERNQUMgb24gcjhhNzNhNCBTb0MKKworRXhhbXBsZToKKwlkbWFjOiBkbWEtbXVsdGlwbGV4ZXJAMCB7CisJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxzaGRtYS1tdXgiOworCQkjZG1hLWNlbGxzID0gPDE+OworCQlkbWEtY2hhbm5lbHMgPSA8MjA+OworCQlkbWEtcmVxdWVzdHMgPSA8MjU2PjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mj47CisJCSNzaXplLWNlbGxzID0gPDI+OworCQlyYW5nZXM7CisKKwkJZG1hMDogZG1hLWNvbnRyb2xsZXJAZTY3MDAwMjAgeworCQkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLHNoZG1hLXI4YTczYTQiOworCQkJcmVnID0gPDAgMHhlNjcwMDAyMCAwIDB4ODllMD47CisJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZnaWM+OworCQkJaW50ZXJydXB0cyA9IDwwIDIyMCA0CisJCQkJCTAgMjAwIDQKKwkJCQkJMCAyMDEgNAorCQkJCQkwIDIwMiA0CisJCQkJCTAgMjAzIDQKKwkJCQkJMCAyMDQgNAorCQkJCQkwIDIwNSA0CisJCQkJCTAgMjA2IDQKKwkJCQkJMCAyMDcgNAorCQkJCQkwIDIwOCA0CisJCQkJCTAgMjA5IDQKKwkJCQkJMCAyMTAgNAorCQkJCQkwIDIxMSA0CisJCQkJCTAgMjEyIDQKKwkJCQkJMCAyMTMgNAorCQkJCQkwIDIxNCA0CisJCQkJCTAgMjE1IDQKKwkJCQkJMCAyMTYgNAorCQkJCQkwIDIxNyA0CisJCQkJCTAgMjE4IDQKKwkJCQkJMCAyMTkgND47CisJCQlpbnRlcnJ1cHQtbmFtZXMgPSAiZXJyb3IiLAorCQkJCQkiY2gwIiwgImNoMSIsICJjaDIiLCAiY2gzIiwKKwkJCQkJImNoNCIsICJjaDUiLCAiY2g2IiwgImNoNyIsCisJCQkJCSJjaDgiLCAiY2g5IiwgImNoMTAiLCAiY2gxMSIsCisJCQkJCSJjaDEyIiwgImNoMTMiLCAiY2gxNCIsICJjaDE1IiwKKwkJCQkJImNoMTYiLCAiY2gxNyIsICJjaDE4IiwgImNoMTkiOworCQl9OworCX07CisKKyogRE1BIGNsaWVudAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBkbWFzOgkJYSBsaXN0IG9mIDxbRE1BIG11bHRpcGxleGVyIHBoYW5kbGVdIFtNSUQvUklEIHZhbHVlXT4gcGFpcnMsCisJCXdoZXJlIE1JRC9SSUQgdmFsdWVzIGFyZSBmaXhlZCBoYW5kbGVzLCBzcGVjaWZpZWQgaW4gdGhlIFNvQworCQltYW51YWwKKy0gZG1hLW5hbWVzOglhIGxpc3Qgb2YgRE1BIGNoYW5uZWwgbmFtZXMsIG9uZSBwZXIgImRtYXMiIGVudHJ5CisKK0V4YW1wbGU6CisJZG1hcyA9IDwmZG1hYyAweGQxCisJCSZkbWFjIDB4ZDI+OworCWRtYS1uYW1lcyA9ICJ0eCIsICJyeCI7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3NpcmZzb2MtZG1hLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvc2lyZnNvYy1kbWEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjZDUyZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3NpcmZzb2MtZG1hLnR4dApAQCAtMCwwICsxLDQ0IEBACisqIENTUiBTaVJGU29DIERNQSBjb250cm9sbGVyCisKK1NlZSBkbWEudHh0IGZpcnN0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAic2lyZixwcmltYTItZG1hYyIsICJzaXJmLGF0bGFzNy1kbWFjIiBvcgorICAic2lyZixhdGxhczctZG1hYy12MiIKKy0gcmVnOiBTaG91bGQgY29udGFpbiBETUEgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGguCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIG9uZSBpbnRlcnJ1cHQgc2hhcmVkIGJ5IGFsbCBjaGFubmVsCistICNkbWEtY2VsbHM6IG11c3QgYmUgPDE+LiB1c2VkIHRvIHJlcHJlc2VudCB0aGUgbnVtYmVyIG9mIGludGVnZXIKKyAgICBjZWxscyBpbiB0aGUgZG1hcyBwcm9wZXJ0eSBvZiBjbGllbnQgZGV2aWNlLgorLSBjbG9ja3M6IGNsb2NrIHJlcXVpcmVkCisKK0V4YW1wbGU6CisKK0NvbnRyb2xsZXI6CitkbWFjMDogZG1hLWNvbnRyb2xsZXJAYjAwYjAwMDAgeworCWNvbXBhdGlibGUgPSAic2lyZixwcmltYTItZG1hYyI7CisJcmVnID0gPDB4YjAwYjAwMDAgMHgxMDAwMD47CisJaW50ZXJydXB0cyA9IDwxMj47CisJY2xvY2tzID0gPCZjbGtzIDI0PjsKKwkjZG1hLWNlbGxzID0gPDE+OworfTsKKworCitDbGllbnQ6CitGaWxsIHRoZSBzcGVjaWZpYyBkbWEgcmVxdWVzdCBsaW5lIGluIGRtYXMuIEluIHRoZSBiZWxvdyBleGFtcGxlLCBzcGkwIHJlYWQKK2NoYW5uZWwgcmVxdWVzdCBsaW5lIGlzIDkgb2YgdGhlIDJuZCBkbWEgY29udHJvbGxlciwgd2hpbGUgd3JpdGUgY2hhbm5lbCB1c2VzCis0IG9mIHRoZSAybmQgZG1hIGNvbnRyb2xsZXI7IHNwaTEgcmVhZCBjaGFubmVsIHJlcXVlc3QgbGluZSBpcyAxMiBvZiB0aGUgMXN0CitkbWEgY29udHJvbGxlciwgd2hpbGUgd3JpdGUgY2hhbm5lbCB1c2VzIDEzIG9mIHRoZSAxc3QgZG1hIGNvbnRyb2xsZXI6CisKK3NwaTA6IHNwaUBiMDBkMDAwMCB7CisJY29tcGF0aWJsZSA9ICJzaXJmLHByaW1hMi1zcGkiOworCWRtYXMgPSA8JmRtYWMxIDk+LAorCQk8JmRtYWMxIDQ+OworCWRtYS1uYW1lcyA9ICJyeCIsICJ0eCI7Cit9OworCitzcGkxOiBzcGlAYjAxNzAwMDAgeworCWNvbXBhdGlibGUgPSAic2lyZixwcmltYTItc3BpIjsKKwlkbWFzID0gPCZkbWFjMCAxMj4sCisJCTwmZG1hYzAgMTM+OworCWRtYS1uYW1lcyA9ICJyeCIsICJ0eCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9zbnBzLWRtYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3NucHMtZG1hLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjYxNTk4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9zbnBzLWRtYS50eHQKQEAgLTAsMCArMSw2MyBAQAorKiBTeW5vcHN5cyBEZXNpZ253YXJlIERNQSBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJzbnBzLGRtYS1zcGVhcjEzNDAiCistIHJlZzogQWRkcmVzcyByYW5nZSBvZiB0aGUgRE1BQyByZWdpc3RlcnMKKy0gaW50ZXJydXB0OiBTaG91bGQgY29udGFpbiB0aGUgRE1BQyBpbnRlcnJ1cHQgbnVtYmVyCistIGRtYS1jaGFubmVsczogTnVtYmVyIG9mIGNoYW5uZWxzIHN1cHBvcnRlZCBieSBoYXJkd2FyZQorLSBkbWEtcmVxdWVzdHM6IE51bWJlciBvZiBETUEgcmVxdWVzdCBsaW5lcyBzdXBwb3J0ZWQsIHVwIHRvIDE2CistIGRtYS1tYXN0ZXJzOiBOdW1iZXIgb2YgQUhCIG1hc3RlcnMgc3VwcG9ydGVkIGJ5IHRoZSBjb250cm9sbGVyCistICNkbWEtY2VsbHM6IG11c3QgYmUgPDM+CistIGNoYW5fYWxsb2NhdGlvbl9vcmRlcjogb3JkZXIgb2YgYWxsb2NhdGlvbiBvZiBjaGFubmVsLCAwIChkZWZhdWx0KTogYXNjZW5kaW5nLAorICAxOiBkZXNjZW5kaW5nCistIGNoYW5fcHJpb3JpdHk6IHByaW9yaXR5IG9mIGNoYW5uZWxzLiAwIChkZWZhdWx0KTogaW5jcmVhc2UgZnJvbSBjaGFuIDAtPm4sIDE6CisgIGluY3JlYXNlIGZyb20gY2hhbiBuLT4wCistIGJsb2NrX3NpemU6IE1heGltdW0gYmxvY2sgc2l6ZSBzdXBwb3J0ZWQgYnkgdGhlIGNvbnRyb2xsZXIKKy0gZGF0YV93aWR0aDogTWF4aW11bSBkYXRhIHdpZHRoIHN1cHBvcnRlZCBieSBoYXJkd2FyZSBwZXIgQUhCIG1hc3RlcgorICAoMCAtIDhiaXRzLCAxIC0gMTZiaXRzLCAuLi4sIDUgLSAyNTZiaXRzKQorCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGludGVycnVwdC1wYXJlbnQ6IFNob3VsZCBiZSB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyCisgIHRoYXQgc2VydmljZXMgaW50ZXJydXB0cyBmb3IgdGhpcyBkZXZpY2UKKy0gaXNfcHJpdmF0ZTogVGhlIGRldmljZSBjaGFubmVscyBzaG91bGQgYmUgbWFya2VkIGFzIHByaXZhdGUgYW5kIG5vdCBmb3IgYnkgdGhlCisgIGdlbmVyYWwgcHVycG9zZSBETUEgY2hhbm5lbCBhbGxvY2F0b3IuIEZhbHNlIGlmIG5vdCBwYXNzZWQuCisKK0V4YW1wbGU6CisKKwlkbWFob3N0OiBkbWFAZmMwMDAwMDAgeworCQljb21wYXRpYmxlID0gInNucHMsZG1hLXNwZWFyMTM0MCI7CisJCXJlZyA9IDwweGZjMDAwMDAwIDB4MTAwMD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JnZpYzE+OworCQlpbnRlcnJ1cHRzID0gPDEyPjsKKworCQlkbWEtY2hhbm5lbHMgPSA8OD47CisJCWRtYS1yZXF1ZXN0cyA9IDwxNj47CisJCWRtYS1tYXN0ZXJzID0gPDI+OworCQkjZG1hLWNlbGxzID0gPDM+OworCQljaGFuX2FsbG9jYXRpb25fb3JkZXIgPSA8MT47CisJCWNoYW5fcHJpb3JpdHkgPSA8MT47CisJCWJsb2NrX3NpemUgPSA8MHhmZmY+OworCQlkYXRhX3dpZHRoID0gPDMgMz47CisJfTsKKworRE1BIGNsaWVudHMgY29ubmVjdGVkIHRvIHRoZSBEZXNpZ253YXJlIERNQSBjb250cm9sbGVyIG11c3QgdXNlIHRoZSBmb3JtYXQKK2Rlc2NyaWJlZCBpbiB0aGUgZG1hLnR4dCBmaWxlLCB1c2luZyBhIGZvdXItY2VsbCBzcGVjaWZpZXIgZm9yIGVhY2ggY2hhbm5lbC4KK1RoZSBmb3VyIGNlbGxzIGluIG9yZGVyIGFyZToKKworMS4gQSBwaGFuZGxlIHBvaW50aW5nIHRvIHRoZSBETUEgY29udHJvbGxlcgorMi4gVGhlIERNQSByZXF1ZXN0IGxpbmUgbnVtYmVyCiszLiBTb3VyY2UgbWFzdGVyIGZvciB0cmFuc2ZlcnMgb24gYWxsb2NhdGVkIGNoYW5uZWwKKzQuIERlc3RpbmF0aW9uIG1hc3RlciBmb3IgdHJhbnNmZXJzIG9uIGFsbG9jYXRlZCBjaGFubmVsCisKK0V4YW1wbGU6CisJCisJc2VyaWFsQGUwMDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0scGwwMTEiLCAiYXJtLHByaW1lY2VsbCI7CisJCXJlZyA9IDwweGUwMDAwMDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MCAzNSAweDQ+OworCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCQlkbWFzID0gPCZkbWFob3N0IDEyIDAgMT4sCisJCQk8JmRtYWhvc3QgMTMgMCAxIDA+OworCQlkbWEtbmFtZXMgPSAicngiLCAicngiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3N0ZS1jb2g5MDEzMTgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9zdGUtY29oOTAxMzE4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTFhZDA1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9zdGUtY29oOTAxMzE4LnR4dApAQCAtMCwwICsxLDMyIEBACitTVC1Fcmljc3NvbiBDT0ggOTAxIDMxOCBETUEgQ29udHJvbGxlcgorCitUaGlzIGlzIGEgRE1BIGNvbnRyb2xsZXIgd2hpY2ggaGFzIGJlZ3VuIGFzIGEgZm9yayBvZiB0aGUKK0FSTSBQTDA4eCBQcmltZUNlbGwgVkhETCBjb2RlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgInN0ZXJpY3Nzb24sY29oOTAxMzE4IgorLSByZWc6IHJlZ2lzdGVyIGxvY2F0aW9ucyBhbmQgbGVuZ3RoCistIGludGVycnVwdHM6IHRoZSBzaW5nbGUgRE1BIElSUQorLSAjZG1hLWNlbGxzOiBtdXN0IGJlIHNldCB0byA8MT4sIGFzIHRoZSBjaGFubmVscyBvbiB0aGUKKyAgQ09IIDkwMSAzMTggYXJlIHNpbXBsZSBhbmQgaWRlbnRpZmllZCBieSBhIHNpbmdsZSBudW1iZXIKKy0gZG1hLWNoYW5uZWxzOiB0aGUgbnVtYmVyIG9mIERNQSBjaGFubmVscyBoYW5kbGVkCisKK0V4YW1wbGU6CisKK2RtYWM6IGRtYS1jb250cm9sbGVyQGMwMDAyMDAwMCB7CisJY29tcGF0aWJsZSA9ICJzdGVyaWNzc29uLGNvaDkwMTMxOCI7CisJcmVnID0gPDB4YzAwMjAwMDAgMHgxMDAwPjsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZ2aWNhPjsKKwlpbnRlcnJ1cHRzID0gPDI+OworCSNkbWEtY2VsbHMgPSA8MT47CisJZG1hLWNoYW5uZWxzID0gPDQwPjsKK307CisKK0NvbnN1bWVycyBleGFtcGxlOgorCit1YXJ0MDogc2VyaWFsQGMwMDEzMDAwIHsKKwljb21wYXRpYmxlID0gIi4uLiI7CisJKC4uLikKKwlkbWFzID0gPCZkbWFjIDE3ICZkbWFjIDE4PjsKKwlkbWEtbmFtZXMgPSAidHgiLCAicngiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvc3RlLWRtYTQwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvc3RlLWRtYTQwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTgwMGFiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9zdGUtZG1hNDAudHh0CkBAIC0wLDAgKzEsMTM5IEBACisqIERNQTQwIERNQSBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJzdGVyaWNzc29uLGRtYTQwIgorLSByZWc6IEFkZHJlc3MgcmFuZ2Ugb2YgdGhlIERNQUMgcmVnaXN0ZXJzCistIHJlZy1uYW1lczogTmFtZXMgb2YgdGhlIGFib3ZlIGFyZWFzIHRvIHVzZSBkdXJpbmcgcmVzb3VyY2UgbG9vay11cAorLSBpbnRlcnJ1cHQ6IFNob3VsZCBjb250YWluIHRoZSBETUFDIGludGVycnVwdCBudW1iZXIKKy0gI2RtYS1jZWxsczogbXVzdCBiZSA8Mz4KKy0gbWVtY3B5LWNoYW5uZWxzOiBDaGFubmVscyB0byBiZSB1c2VkIGZvciBtZW1jcHkKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gZG1hLWNoYW5uZWxzOiBOdW1iZXIgb2YgY2hhbm5lbHMgc3VwcG9ydGVkIGJ5IGhhcmR3YXJlIC0gaWYgbm90IHByZXNlbnQKKwkJdGhlIGRyaXZlciB3aWxsIGF0dGVtcHQgdG8gb2J0YWluIHRoZSBpbmZvcm1hdGlvbiBmcm9tIEgvVworLSBkaXNhYmxlZC1jaGFubmVsczogQ2hhbm5lbHMgd2hpY2ggY2FuIG5vdCBiZSB1c2VkCisKK0V4YW1wbGU6CisKKwlkbWE6IGRtYS1jb250cm9sbGVyQDgwMUMwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzdGVyaWNzc29uLGRiODUwMC1kbWE0MCIsICJzdGVyaWNzc29uLGRtYTQwIjsKKwkJcmVnID0gPDB4ODAxQzAwMDAgMHgxMDAwICAweDQwMDEwMDAwIDB4ODAwPjsKKwkJcmVnLW5hbWVzID0gImJhc2UiLCAibGNwYSI7CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmludGM+OworCQlpbnRlcnJ1cHRzID0gPDAgMjUgMHg0PjsKKworCQkjZG1hLWNlbGxzID0gPDI+OworCQltZW1jcHktY2hhbm5lbHMgID0gPDU2IDU3IDU4IDU5IDYwPjsKKwkJZGlzYWJsZWQtY2hhbm5lbHMgID0gPDEyPjsKKwkJZG1hLWNoYW5uZWxzID0gPDg+OworCX07CisKK0NsaWVudHMKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGRtYXM6IENvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGRtYSBjaGFubmVsIHJlcXVlc3RzCistIGRtYS1uYW1lczogTmFtZXMgb2YgdGhlIGFmb3JlbWVudGlvbmVkIHJlcXVlc3RlZCBjaGFubmVscworCitFYWNoIGRtYXMgcmVxdWVzdCBjb25zaXN0cyBvZiA0IGNlbGxzOgorICAxLiBBIHBoYW5kbGUgcG9pbnRpbmcgdG8gdGhlIERNQSBjb250cm9sbGVyCisgIDIuIERldmljZSBzaWduYWwgbnVtYmVyLCB0aGUgc2lnbmFsIGxpbmUgZm9yIHNpbmdsZSBhbmQgYnVyc3QgcmVxdWVzdHMKKyAgICAgY29ubmVjdGVkIGZyb20gdGhlIGRldmljZSB0byB0aGUgRE1BNDAgZW5naW5lCisgIDMuIFRoZSBETUEgcmVxdWVzdCBsaW5lIG51bWJlciAob25seSB3aGVuICd1c2UgZml4ZWQgY2hhbm5lbCcgaXMgc2V0KQorICA0LiBBIDMyYml0IG1hc2sgc3BlY2lmeWluZzsgbW9kZSwgZGlyZWN0aW9uIGFuZCBlbmRpYW5uZXNzCisgICAgIFtOQjogVGhpcyBsaXN0IHdpbGwgZ3Jvd10KKyAgICAgICAgMHgwMDAwMDAwMTogTW9kZToKKyAgICAgICAgICAgICAgICBMb2dpY2FsIGNoYW5uZWwgd2hlbiB1bnNldAorICAgICAgICAgICAgICAgIFBoeXNpY2FsIGNoYW5uZWwgd2hlbiBzZXQKKyAgICAgICAgMHgwMDAwMDAwMjogRGlyZWN0aW9uOgorICAgICAgICAgICAgICAgIE1lbW9yeSB0byBEZXZpY2Ugd2hlbiB1bnNldAorICAgICAgICAgICAgICAgIERldmljZSB0byBNZW1vcnkgd2hlbiBzZXQKKyAgICAgICAgMHgwMDAwMDAwNDogRW5kaWFubmVzczoKKyAgICAgICAgICAgICAgICBMaXR0bGUgZW5kaWFuIHdoZW4gdW5zZXQKKyAgICAgICAgICAgICAgICBCaWcgZW5kaWFuIHdoZW4gc2V0CisgICAgICAgIDB4MDAwMDAwMDg6IFVzZSBmaXhlZCBjaGFubmVsOgorICAgICAgICAgICAgICAgIFVzZSBhdXRvbWF0aWMgY2hhbm5lbCBzZWxlY3Rpb24gd2hlbiB1bnNldAorICAgICAgICAgICAgICAgIFVzZSBETUEgcmVxdWVzdCBsaW5lIG51bWJlciB3aGVuIHNldAorICAgICAgICAweDAwMDAwMDEwOiBTZXQgY2hhbm5lbCBhcyBoaWdoIHByaW9yaXR5OgorICAgICAgICAgICAgICAgIE5vcm1hbCBwcmlvcml0eSB3aGVuIHVuc2V0CisgICAgICAgICAgICAgICAgSGlnaCBwcmlvcml0eSB3aGVuIHNldAorCitFeGlzdGluZyBzaWduYWwgbnVtYmVycyBmb3IgdGhlIERCODUwMCBBU0lDLiBVbmxlc3Mgc3BlY2lmaWVkLCB0aGUgc2lnbmFscyBhcmUKK2JpZGlyZWN0aW9uYWwsIGkuZS4gdGhlIHNhbWUgZm9yIFJYIGFuZCBUWCBvcGVyYXRpb25zOgorCiswOiAgU1BJIGNvbnRyb2xsZXIgMAorMTogIFNEL01NQyBjb250cm9sbGVyIDAgKHVudXNlZCkKKzI6ICBTRC9NTUMgY29udHJvbGxlciAxICh1bnVzZWQpCiszOiAgU0QvTU1DIGNvbnRyb2xsZXIgMiAodW51c2VkKQorNDogIEkyQyBwb3J0IDEKKzU6ICBJMkMgcG9ydCAzCis2OiAgSTJDIHBvcnQgMgorNzogIEkyQyBwb3J0IDQKKzg6ICBTeW5jaHJvbm91cyBTZXJpYWwgUG9ydCBTU1AwCis5OiAgU3luY2hyb25vdXMgU2VyaWFsIFBvcnQgU1NQMQorMTA6IE11bHRpLUNoYW5uZWwgRGlzcGxheSBFbmdpbmUgTUNERSBSWAorMTE6IFVBUlQgcG9ydCAyCisxMjogVUFSVCBwb3J0IDEKKzEzOiBVQVJUIHBvcnQgMAorMTQ6IE11bHRpcmF0ZSBTZXJpYWwgUG9ydCBNU1AyCisxNTogSTJDIHBvcnQgMAorMTY6IFVTQiBPVEcgaW4vb3V0IGVuZHBvaW50cyA3ICYgMTUKKzE3OiBVU0IgT1RHIGluL291dCBlbmRwb2ludHMgNiAmIDE0CisxODogVVNCIE9URyBpbi9vdXQgZW5kcG9pbnRzIDUgJiAxMworMTk6IFVTQiBPVEcgaW4vb3V0IGVuZHBvaW50cyA0ICYgMTIKKzIwOiBTTElNYnVzIG9yIEhTSSBjaGFubmVsIDAKKzIxOiBTTElNYnVzIG9yIEhTSSBjaGFubmVsIDEKKzIyOiBTTElNYnVzIG9yIEhTSSBjaGFubmVsIDIKKzIzOiBTTElNYnVzIG9yIEhTSSBjaGFubmVsIDMKKzI0OiBNdWx0aW1lZGlhIERTUCBTWEEwCisyNTogTXVsdGltZWRpYSBEU1AgU1hBMQorMjY6IE11bHRpbWVkaWEgRFNQIFNYQTIKKzI3OiBNdWx0aW1lZGlhIERTUCBTWEEzCisyODogU0QvTU0gY29udHJvbGxlciAyCisyOTogU0QvTU0gY29udHJvbGxlciAwCiszMDogTVNQIHBvcnQgMSBvbiBEQjg1MDAgdjEsIE1TUCBwb3J0IDMgb24gREI4NTAwIHYyCiszMTogTVNQIHBvcnQgMCBvciBTTElNYnVzIGNoYW5uZWwgMAorMzI6IFNEL01NIGNvbnRyb2xsZXIgMQorMzM6IFNQSSBjb250cm9sbGVyIDIKKzM0OiBpMmMzIFJYMiBUWDIKKzM1OiBTUEkgY29udHJvbGxlciAxCiszNjogVVNCIE9URyBpbi9vdXQgZW5kcG9pbnRzIDMgJiAxMQorMzc6IFVTQiBPVEcgaW4vb3V0IGVuZHBvaW50cyAyICYgMTAKKzM4OiBVU0IgT1RHIGluL291dCBlbmRwb2ludHMgMSAmIDkKKzM5OiBVU0IgT1RHIGluL291dCBlbmRwb2ludHMgOAorNDA6IFNQSSBjb250cm9sbGVyIDMKKzQxOiBTRC9NTSBjb250cm9sbGVyIDMKKzQyOiBTRC9NTSBjb250cm9sbGVyIDQKKzQzOiBTRC9NTSBjb250cm9sbGVyIDUKKzQ0OiBNdWx0aW1lZGlhIERTUCBTWEE0Cis0NTogTXVsdGltZWRpYSBEU1AgU1hBNQorNDY6IFNMSU1idXMgY2hhbm5lbCA4IG9yIE11bHRpbWVkaWEgRFNQIFNYQTYKKzQ3OiBTTElNYnVzIGNoYW5uZWwgOSBvciBNdWx0aW1lZGlhIERTUCBTWEE3Cis0ODogQ3J5cHRvIEFjY2VsZXJhdG9yIDEKKzQ5OiBDcnlwdG8gQWNjZWxlcmF0b3IgMSBUWCBvciBIYXNoIEFjY2VsZXJhdG9yIDEgVFgKKzUwOiBIYXNoIEFjY2VsZXJhdG9yIDEgVFgKKzUxOiBtZW1jcHkgVFggKHRvIGJlIHVzZWQgYnkgdGhlIERNQSBkcml2ZXIgZm9yIG1lbWNweSBvcGVyYXRpb25zKQorNTI6IFNMSU1idXMgb3IgSFNJIGNoYW5uZWwgNAorNTM6IFNMSU1idXMgb3IgSFNJIGNoYW5uZWwgNQorNTQ6IFNMSU1idXMgb3IgSFNJIGNoYW5uZWwgNgorNTU6IFNMSU1idXMgb3IgSFNJIGNoYW5uZWwgNworNTY6IG1lbWNweSAodG8gYmUgdXNlZCBieSB0aGUgRE1BIGRyaXZlciBmb3IgbWVtY3B5IG9wZXJhdGlvbnMpCis1NzogbWVtY3B5ICh0byBiZSB1c2VkIGJ5IHRoZSBETUEgZHJpdmVyIGZvciBtZW1jcHkgb3BlcmF0aW9ucykKKzU4OiBtZW1jcHkgKHRvIGJlIHVzZWQgYnkgdGhlIERNQSBkcml2ZXIgZm9yIG1lbWNweSBvcGVyYXRpb25zKQorNTk6IG1lbWNweSAodG8gYmUgdXNlZCBieSB0aGUgRE1BIGRyaXZlciBmb3IgbWVtY3B5IG9wZXJhdGlvbnMpCis2MDogbWVtY3B5ICh0byBiZSB1c2VkIGJ5IHRoZSBETUEgZHJpdmVyIGZvciBtZW1jcHkgb3BlcmF0aW9ucykKKzYxOiBDcnlwdG8gQWNjZWxlcmF0b3IgMAorNjI6IENyeXB0byBBY2NlbGVyYXRvciAwIFRYIG9yIEhhc2ggQWNjZWxlcmF0b3IgMCBUWAorNjM6IEhhc2ggQWNjZWxlcmF0b3IgMCBUWAorCitFeGFtcGxlOgorCisJdWFydEA4MDEyMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiYXJtLHBsMDExIiwgImFybSxwcmltZWNlbGwiOworCQlyZWcgPSA8MHg4MDEyMDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMTEgMHg0PjsKKworCQlkbWFzID0gPCZkbWEgMTMgMCAweDI+LCAvKiBMb2dpY2FsIC0gRGV2VG9NZW0gKi8KKwkJICAgICAgIDwmZG1hIDEzIDAgMHgwPjsgLyogTG9naWNhbCAtIE1lbVRvRGV2ICovCisJCWRtYS1uYW1lcyA9ICJyeCIsICJyeCI7CisKKwkJc3RhdHVzID0gImRpc2FibGVkIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9zdW40aS1kbWEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9zdW40aS1kbWEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxNjM0YTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3N1bjRpLWRtYS50eHQKQEAgLTAsMCArMSw0NiBAQAorQWxsd2lubmVyIEExMCBETUEgQ29udHJvbGxlcgorCitUaGlzIGRyaXZlciBmb2xsb3dzIHRoZSBnZW5lcmljIERNQSBiaW5kaW5ncyBkZWZpbmVkIGluIGRtYS50eHQuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZToJTXVzdCBiZSAiYWxsd2lubmVyLHN1bjRpLWExMC1kbWEiCistIHJlZzoJCVNob3VsZCBjb250YWluIHRoZSByZWdpc3RlcnMgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGgKKy0gaW50ZXJydXB0czoJU2hvdWxkIGNvbnRhaW4gYSByZWZlcmVuY2UgdG8gdGhlIGludGVycnVwdCB1c2VkIGJ5IHRoaXMgZGV2aWNlCistIGNsb2NrczoJU2hvdWxkIGNvbnRhaW4gYSByZWZlcmVuY2UgdG8gdGhlIHBhcmVudCBBSEIgY2xvY2sKKy0gI2RtYS1jZWxscyA6CVNob3VsZCBiZSAyLCBmaXJzdCBjZWxsIGRlbm90aW5nIG5vcm1hbCBvciBkZWRpY2F0ZWQgZG1hLAorCQlzZWNvbmQgY2VsbCBob2xkaW5nIHRoZSByZXF1ZXN0IGxpbmUgbnVtYmVyLgorCitFeGFtcGxlOgorCWRtYTogZG1hLWNvbnRyb2xsZXJAMDFjMDIwMDAgeworCQljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW40aS1hMTAtZG1hIjsKKwkJcmVnID0gPDB4MDFjMDIwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwyNz47CisJCWNsb2NrcyA9IDwmYWhiX2dhdGVzIDY+OworCQkjZG1hLWNlbGxzID0gPDI+OworCX07CisKK0NsaWVudHM6CisKK0RNQSBjbGllbnRzIGNvbm5lY3RlZCB0byB0aGUgQWxsd2lubmVyIEExMCBETUEgY29udHJvbGxlciBtdXN0IHVzZSB0aGUKK2Zvcm1hdCBkZXNjcmliZWQgaW4gdGhlIGRtYS50eHQgZmlsZSwgdXNpbmcgYSB0aHJlZS1jZWxsIHNwZWNpZmllciBmb3IKK2VhY2ggY2hhbm5lbDogYSBwaGFuZGxlIHBsdXMgdHdvIGludGVnZXIgY2VsbHMuCitUaGUgdGhyZWUgY2VsbHMgaW4gb3JkZXIgYXJlOgorCisxLiBBIHBoYW5kbGUgcG9pbnRpbmcgdG8gdGhlIERNQSBjb250cm9sbGVyLgorMi4gV2hldGhlciBpdCBpcyB1c2luZyBub3JtYWwgKDApIG9yIGRlZGljYXRlZCAoMSkgY2hhbm5lbHMKKzMuIFRoZSBwb3J0IElEIGFzIHNwZWNpZmllZCBpbiB0aGUgZGF0YXNoZWV0CisKK0V4YW1wbGU6CisJc3BpMjogc3BpQDAxYzE3MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNGktYTEwLXNwaSI7CisJCXJlZyA9IDwweDAxYzE3MDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MCAxMiA0PjsKKwkJY2xvY2tzID0gPCZhaGJfZ2F0ZXMgMjI+LCA8JnNwaTJfY2xrPjsKKwkJY2xvY2stbmFtZXMgPSAiYWhiIiwgIm1vZCI7CisJCWRtYXMgPSA8JmRtYSAxIDI5PiwgPCZkbWEgMSAyOD47CisJCWRtYS1uYW1lcyA9ICJyeCIsICJ0eCI7CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9zdW42aS1kbWEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9zdW42aS1kbWEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxM2MxMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3N1bjZpLWRtYS50eHQKQEAgLTAsMCArMSw0OCBAQAorQWxsd2lubmVyIEEzMSBETUEgQ29udHJvbGxlcgorCitUaGlzIGRyaXZlciBmb2xsb3dzIHRoZSBnZW5lcmljIERNQSBiaW5kaW5ncyBkZWZpbmVkIGluIGRtYS50eHQuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZToJTXVzdCBiZSBvbmUgb2YKKwkJICAiYWxsd2lubmVyLHN1bjZpLWEzMS1kbWEiCisJCSAgImFsbHdpbm5lcixzdW44aS1hMjMtZG1hIgorCQkgICJhbGx3aW5uZXIsc3VuOGktaDMtZG1hIgorLSByZWc6CQlTaG91bGQgY29udGFpbiB0aGUgcmVnaXN0ZXJzIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoCistIGludGVycnVwdHM6CVNob3VsZCBjb250YWluIGEgcmVmZXJlbmNlIHRvIHRoZSBpbnRlcnJ1cHQgdXNlZCBieSB0aGlzIGRldmljZQorLSBjbG9ja3M6CVNob3VsZCBjb250YWluIGEgcmVmZXJlbmNlIHRvIHRoZSBwYXJlbnQgQUhCIGNsb2NrCistIHJlc2V0czoJU2hvdWxkIGNvbnRhaW4gYSByZWZlcmVuY2UgdG8gdGhlIHJlc2V0IGNvbnRyb2xsZXIgYXNzZXJ0aW5nCisJCXRoaXMgZGV2aWNlIGluIHJlc2V0CistICNkbWEtY2VsbHMgOglTaG91bGQgYmUgMSwgYSBzaW5nbGUgY2VsbCBob2xkaW5nIGEgbGluZSByZXF1ZXN0IG51bWJlcgorCitFeGFtcGxlOgorCWRtYTogZG1hLWNvbnRyb2xsZXJAMDFjMDIwMDAgeworCQljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW42aS1hMzEtZG1hIjsKKwkJcmVnID0gPDB4MDFjMDIwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDUwIDQ+OworCQljbG9ja3MgPSA8JmFoYjFfZ2F0ZXMgNj47CisJCXJlc2V0cyA9IDwmYWhiMV9yc3QgNj47CisJCSNkbWEtY2VsbHMgPSA8MT47CisJfTsKKworQ2xpZW50czoKKworRE1BIGNsaWVudHMgY29ubmVjdGVkIHRvIHRoZSBBMzEgRE1BIGNvbnRyb2xsZXIgbXVzdCB1c2UgdGhlIGZvcm1hdAorZGVzY3JpYmVkIGluIHRoZSBkbWEudHh0IGZpbGUsIHVzaW5nIGEgdHdvLWNlbGwgc3BlY2lmaWVyIGZvciBlYWNoCitjaGFubmVsOiBhIHBoYW5kbGUgcGx1cyBvbmUgaW50ZWdlciBjZWxscy4KK1RoZSB0d28gY2VsbHMgaW4gb3JkZXIgYXJlOgorCisxLiBBIHBoYW5kbGUgcG9pbnRpbmcgdG8gdGhlIERNQSBjb250cm9sbGVyLgorMi4gVGhlIHBvcnQgSUQgYXMgc3BlY2lmaWVkIGluIHRoZSBkYXRhc2hlZXQKKworRXhhbXBsZToKK3NwaTI6IHNwaUAwMWM2YTAwMCB7CisJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNmktYTMxLXNwaSI7CisJcmVnID0gPDB4MDFjNmEwMDAgMHgxMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDAgNjcgND47CisJY2xvY2tzID0gPCZhaGIxX2dhdGVzIDIyPiwgPCZzcGkyX2Nsaz47CisJY2xvY2stbmFtZXMgPSAiYWhiIiwgIm1vZCI7CisJZG1hcyA9IDwmZG1hIDI1PiwgPCZkbWEgMjU+OworCWRtYS1uYW1lcyA9ICJyeCIsICJ0eCI7CisJcmVzZXRzID0gPCZhaGIxX3JzdCAyMj47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS90ZWdyYTIwLWFwYmRtYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3RlZ3JhMjAtYXBiZG1hLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjkwOGU3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS90ZWdyYTIwLWFwYmRtYS50eHQKQEAgLTAsMCArMSw0NCBAQAorKiBOVklESUEgVGVncmEgQVBCIERNQSBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAibnZpZGlhLDxjaGlwPi1hcGJkbWEiCistIHJlZzogU2hvdWxkIGNvbnRhaW4gRE1BIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoLiBUaGlzIHNodWxkIGluY2x1ZGUKKyAgYWxsIG9mIHRoZSBwZXItY2hhbm5lbCByZWdpc3RlcnMuCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIGFsbCBvZiB0aGUgcGVyLWNoYW5uZWwgRE1BIGludGVycnVwdHMuCistIGNsb2NrczogTXVzdCBjb250YWluIG9uZSBlbnRyeSwgZm9yIHRoZSBtb2R1bGUgY2xvY2suCisgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorLSByZXNldHMgOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gcmVzZXQtbmFtZXMuCisgIFNlZSAuLi9yZXNldC9yZXNldC50eHQgZm9yIGRldGFpbHMuCistIHJlc2V0LW5hbWVzIDogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgLSBkbWEKKy0gI2RtYS1jZWxscyA6IE11c3QgYmUgPDE+LiBUaGlzIGRpY3RhdGVzIHRoZSBsZW5ndGggb2YgRE1BIHNwZWNpZmllcnMgaW4KKyAgY2xpZW50IG5vZGVzJyBkbWFzIHByb3BlcnRpZXMuIFRoZSBzcGVjaWZpZXIgcmVwcmVzZW50cyB0aGUgRE1BIHJlcXVlc3QKKyAgc2VsZWN0IHZhbHVlIGZvciB0aGUgcGVyaXBoZXJhbC4gRm9yIG1vcmUgZGV0YWlscywgY29uc3VsdCB0aGUgVGVncmEgVFJNJ3MKKyAgZG9jdW1lbnRhdGlvbiBvZiB0aGUgQVBCIERNQSBjaGFubmVsIGNvbnRyb2wgcmVnaXN0ZXIgUkVRX1NFTCBmaWVsZC4KKworRXhhbXBsZXM6CisKK2FwYmRtYTogZG1hQDYwMDBhMDAwIHsKKwljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTIwLWFwYmRtYSI7CisJcmVnID0gPDB4NjAwMGEwMDAgMHgxMjAwPjsKKwlpbnRlcnJ1cHRzID0gPCAwIDEzNiAweDA0CisJCSAgICAgICAwIDEzNyAweDA0CisJCSAgICAgICAwIDEzOCAweDA0CisJCSAgICAgICAwIDEzOSAweDA0CisJCSAgICAgICAwIDE0MCAweDA0CisJCSAgICAgICAwIDE0MSAweDA0CisJCSAgICAgICAwIDE0MiAweDA0CisJCSAgICAgICAwIDE0MyAweDA0CisJCSAgICAgICAwIDE0NCAweDA0CisJCSAgICAgICAwIDE0NSAweDA0CisJCSAgICAgICAwIDE0NiAweDA0CisJCSAgICAgICAwIDE0NyAweDA0CisJCSAgICAgICAwIDE0OCAweDA0CisJCSAgICAgICAwIDE0OSAweDA0CisJCSAgICAgICAwIDE1MCAweDA0CisJCSAgICAgICAwIDE1MSAweDA0ID47CisJY2xvY2tzID0gPCZ0ZWdyYV9jYXIgMzQ+OworCXJlc2V0cyA9IDwmdGVncmFfY2FyIDM0PjsKKwlyZXNldC1uYW1lcyA9ICJkbWEiOworCSNkbWEtY2VsbHMgPSA8MT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS90aS1kbWEtY3Jvc3NiYXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS90aS1kbWEtY3Jvc3NiYXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxNTJhNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3RpLWRtYS1jcm9zc2Jhci50eHQKQEAgLTAsMCArMSw2MyBAQAorVGV4YXMgSW5zdHJ1bWVudHMgRE1BIENyb3NzYmFyIChETUEgcmVxdWVzdCByb3V0ZXIpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CSJ0aSxkcmE3LWRtYS1jcm9zc2JhciIgZm9yIERSQTd4eCBETUEgY3Jvc3NiYXIKKwkJInRpLGFtMzM1eC1lZG1hLWNyb3NzYmFyIiBmb3IgQU0zMzV4IGFuZCBBTTQzN3gKKy0gcmVnOgkJTWVtb3J5IG1hcCBmb3IgYWNjZXNzaW5nIG1vZHVsZQorLSAjZG1hLWNlbGxzOglTaG91bGQgYmUgc2V0IHRvIHRvIG1hdGNoIHdpdGggdGhlIERNQSBjb250cm9sbGVyJ3MgZG1hLWNlbGxzCisJCWZvciB0aSxkcmE3LWRtYS1jcm9zc2JhciBhbmQgPDM+IGZvciB0aSxhbTMzNXgtZWRtYS1jcm9zc2Jhci4KKy0gZG1hLXJlcXVlc3RzOglOdW1iZXIgb2YgRE1BIHJlcXVlc3RzIHRoZSBjcm9zc2JhciBjYW4gcmVjZWl2ZQorLSBkbWEtbWFzdGVyczoJcGhhbmRsZSBwb2ludGluZyB0byB0aGUgRE1BIGNvbnRyb2xsZXIKKworVGhlIERNQSBjb250cm9sbGVyIG5vZGUgbmVlZCB0byBoYXZlIHRoZSBmb2xsb3dpbmcgcG9yb3BlcnRpZXM6CistIGRtYS1yZXF1ZXN0czoJTnVtYmVyIG9mIERNQSByZXF1ZXN0cyB0aGUgY29udHJvbGxlciBjYW4gaGFuZGxlCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHRpLGRtYS1zYWZlLW1hcDogU2FmZSByb3V0aW5nIHZhbHVlIGZvciB1bnVzZWQgcmVxdWVzdCBsaW5lcworCitOb3RlczoKK1doZW4gcmVxdWVzdGluZyBjaGFubmVsIHZpYSB0aSxkcmE3LWRtYS1jcm9zc2JhciwgdGhlIERNQSBjbGluZXQgbXVzdCByZXF1ZXN0Cit0aGUgRE1BIGV2ZW50IG51bWJlciBhcyBjcm9zc2JhciBJRCAoaW5wdXQgdG8gdGhlIERNQSBjcm9zc2JhcikuCisKK0ZvciB0aSxhbTMzNXgtZWRtYS1jcm9zc2JhcjogdGhlIG1lYW5pbmcgb2YgcGFyYW1ldGVycyBvZiBkbWFzIGZvciBjbGllbnRzOgorZG1hcyA9IDwmZWRtYV94YmFyIDEyIDAgMT47IHdoZXJlIDwxMj4gaXMgdGhlIERNQSByZXF1ZXN0IG51bWJlciwgPDA+IGlzIHRoZSBUQwordGhlIGV2ZW50IHNob3VsZCBiZSBhc3NpZ25lZCBhbmQgPDE+IGlzIHRoZSBtdXggc2VsZWN0aW9uIGZvciBpbiB0aGUgY3Jvc3NiYXIuCitXaGVuIG11eCAwIGlzIHVzZWQgdGhlIERNQSBjaGFubmVsIGNhbiBiZSByZXF1ZXN0ZWQgZGlyZWN0bHkgZnJvbSBlZG1hIG5vZGUuCisKK0V4YW1wbGU6CisKKy8qIERNQSBjb250cm9sbGVyICovCitzZG1hOiBkbWEtY29udHJvbGxlckA0YTA1NjAwMCB7CisJY29tcGF0aWJsZSA9ICJ0aSxvbWFwNDQzMC1zZG1hIjsKKwlyZWcgPSA8MHg0YTA1NjAwMCAweDEwMDA+OworCWludGVycnVwdHMgPQk8R0lDX1NQSSA3IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJPEdJQ19TUEkgOCBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKKwkJCTxHSUNfU1BJIDkgSVJRX1RZUEVfTEVWRUxfSElHSD4sCisJCQk8R0lDX1NQSSAxMCBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkjZG1hLWNlbGxzID0gPDE+OworCWRtYS1jaGFubmVscyA9IDwzMj47CisJZG1hLXJlcXVlc3RzID0gPDEyNz47Cit9OworCisvKiBETUEgY3Jvc3NiYXIgKi8KK3NkbWFfeGJhcjogZG1hLXJvdXRlckA0YTAwMmI3OCB7CisJY29tcGF0aWJsZSA9ICJ0aSxkcmE3LWRtYS1jcm9zc2JhciI7CisJcmVnID0gPDB4NGEwMDJiNzggMHhmYz47CisJI2RtYS1jZWxscyA9IDwxPjsKKwlkbWEtcmVxdWVzdHMgPSA8MjA1PjsKKwl0aSxkbWEtc2FmZS1tYXAgPSA8MD47CisJZG1hLW1hc3RlcnMgPSA8JnNkbWE+OworfTsKKworLyogRE1BIGNsaWVudCAqLwordWFydDE6IHNlcmlhbEA0ODA2YTAwMCB7CisJY29tcGF0aWJsZSA9ICJ0aSxvbWFwNC11YXJ0IjsKKwlyZWcgPSA8MHg0ODA2YTAwMCAweDEwMD47CisJaW50ZXJydXB0cy1leHRlbmRlZCA9IDwmZ2ljIEdJQ19TUEkgNjcgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJdGksaHdtb2RzID0gInVhcnQxIjsKKwljbG9jay1mcmVxdWVuY3kgPSA8NDgwMDAwMDA+OworCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJLyogUmVxdWVzdGluZyBjcm9zc2JhciBpbnB1dCA0OSBhbmQgNTAgKi8KKwlkbWFzID0gPCZzZG1hX3hiYXIgNDk+LCA8JnNkbWFfeGJhciA1MD47CisJZG1hLW5hbWVzID0gInR4IiwgInJ4IjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3RpLWVkbWEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS90aS1lZG1hLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzliNDJhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS90aS1lZG1hLnR4dApAQCAtMCwwICsxLDE0OCBAQAorVGV4YXMgSW5zdHJ1bWVudHMgZURNQQorCitUaGUgZURNQTMgY29uc2lzdHMgb2YgdHdvIGNvbXBvbmVudHM6IENoYW5uZWwgY29udHJvbGxlciAoQ0MpIGFuZCBUcmFuc2ZlcgorQ29udHJvbGxlcihzKSAoVEMpLiBUaGUgQ0MgaXMgdGhlIG1haW4gZW50cnkgZm9yIERNQSB1c2VycyBzaW5jZSBpdCBpcworcmVzcG9uc2libGUgZm9yIHRoZSBETUEgY2hhbm5lbCBoYW5kbGluZywgd2hpbGUgdGhlIFRDcyBhcmUgcmVzcG9uc2libGUgdG8KK2V4ZWN1dGUgdGhlIGFjdHVhbCBETUEgdGFuc2Zlci4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlRE1BMyBDaGFubmVsIENvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZToJInRpLGVkbWEzLXRwY2MiIGZvciB0aGUgY2hhbm5lbCBjb250cm9sbGVyKHMpCistICNkbWEtY2VsbHM6CVNob3VsZCBiZSBzZXQgdG8gPDI+LiBUaGUgZmlyc3QgbnVtYmVyIGlzIHRoZSBETUEgcmVxdWVzdAorCQludW1iZXIgYW5kIHRoZSBzZWNvbmQgaXMgdGhlIFRDIHRoZSBjaGFubmVsIGlzIHNlcnZpY2VkIG9uLgorLSByZWc6CQlNZW1vcnkgbWFwIG9mIGVETUEgQ0MKKy0gcmVnLW5hbWVzOgkiZWRtYTNfY2MiCistIGludGVycnVwdHM6CUludGVycnVwdCBsaW5lcyBmb3IgQ0NJTlQsIE1QRVJSIGFuZCBDQ0VSUklOVC4KKy0gaW50ZXJydXB0LW5hbWVzOiAiZWRtYTNfY2NpbnQiLCAiZW1kYTNfbXBlcnIiIGFuZCAiZWRtYTNfY2NlcnJpbnQiCistIHRpLHRwdGNzOglMaXN0IG9mIFRQVENzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZURNQSBpbiB0aGUgZm9sbG93aW5nIGZvcm06CisJCTwmdHB0Y19waGFuZGxlIFRDX3ByaW9yaXR5X251bWJlcj4uIFRoZSBoaWdoZXN0IHByaW9yaXR5IGlzIDAuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHRpLGh3bW9kczoJTmFtZSBvZiB0aGUgaHdtb2RzIGFzc29jaWF0ZWQgdG8gdGhlIGVETUEgQ0MKKy0gdGksZWRtYS1tZW1jcHktY2hhbm5lbHM6IExpc3Qgb2YgY2hhbm5lbHMgYWxsb2NhdGVkIHRvIGJlIHVzZWQgZm9yIG1lbWNweSwgaW93CisJCXRoZXNlIGNoYW5uZWxzIHdpbGwgYmUgU1cgdHJpZ2dlcmVkIGNoYW5uZWxzLiBTZWUgZXhhbXBsZS4KKy0gdGksZWRtYS1yZXNlcnZlZC1zbG90LXJhbmdlczogUGFSQU0gc2xvdCByYW5nZXMgd2hpY2ggc2hvdWxkIG5vdCBiZSB1c2VkIGJ5CisJCXRoZSBkcml2ZXIsIHRoZXkgYXJlIGFsbG9jYXRlZCB0byBiZSB1c2VkIGJ5IGZvciBleGFtcGxlIHRoZQorCQlEU1AuIFNlZSBleGFtcGxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VETUEzIFRyYW5zZmVyIENvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZToJInRpLGVkbWEzLXRwdGMiIGZvciB0aGUgdHJhbnNmZXIgY29udHJvbGxlcihzKQorLSByZWc6CQlNZW1vcnkgbWFwIG9mIGVETUEgVEMKKy0gaW50ZXJydXB0czoJSW50ZXJydXB0IG51bWJlciBmb3IgVENlcnJpbnQuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHRpLGh3bW9kczoJTmFtZSBvZiB0aGUgaHdtb2RzIGFzc29jaWF0ZWQgdG8gdGhlIGdpdmVuIGVETUEgVEMKKy0gaW50ZXJydXB0LW5hbWVzOiAiZWRtYTNfdGNlcnJpbnQiCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRXhhbXBsZToKKworZWRtYTogZWRtYUA0OTAwMDAwMCB7CisJY29tcGF0aWJsZSA9ICJ0aSxlZG1hMy10cGNjIjsKKwl0aSxod21vZHMgPSAidHBjYyI7CisJcmVnID0JPDB4NDkwMDAwMDAgMHgxMDAwMD47CisJcmVnLW5hbWVzID0gImVkbWEzX2NjIjsKKwlpbnRlcnJ1cHRzID0gPDEyIDEzIDE0PjsKKwlpbnRlcnJ1cHQtbmFtZXMgPSAiZWRtYTNfY2NpbnQiLCAiZW1kYTNfbXBlcnIiLCAiZWRtYTNfY2NlcnJpbnQiOworCWRtYS1yZXF1ZXN0cyA9IDw2ND47CisJI2RtYS1jZWxscyA9IDwyPjsKKworCXRpLHRwdGNzID0gPCZlZG1hX3RwdGMwIDc+LCA8JmVkbWFfdHB0YzEgNz4sIDwmZWRtYV90cHRjMiAwPjsKKworCS8qIENoYW5uZWwgMjAgYW5kIDIxIGlzIGFsbG9jYXRlZCBmb3IgbWVtY3B5ICovCisJdGksZWRtYS1tZW1jcHktY2hhbm5lbHMgPSA8MjAgMjE+OworCS8qIFRoZSBmb2xsb3dpbmcgUGFSQU0gc2xvdHMgYXJlIHJlc2VydmVkOiAzNS00NCBhbmQgMTAwLTEwOSAqLworCXRpLGVkbWEtcmVzZXJ2ZWQtc2xvdC1yYW5nZXMgPSA8MzUgMTA+LCA8MTAwIDEwPjsKK307CisKK2VkbWFfdHB0YzA6IHRwdGNANDk4MDAwMDAgeworCWNvbXBhdGlibGUgPSAidGksZWRtYTMtdHB0YyI7CisJdGksaHdtb2RzID0gInRwdGMwIjsKKwlyZWcgPQk8MHg0OTgwMDAwMCAweDEwMDAwMD47CisJaW50ZXJydXB0cyA9IDwxMTI+OworCWludGVycnVwdC1uYW1lcyA9ICJlZG0zX3RjZXJyaW50IjsKK307CisKK2VkbWFfdHB0YzE6IHRwdGNANDk5MDAwMDAgeworCWNvbXBhdGlibGUgPSAidGksZWRtYTMtdHB0YyI7CisJdGksaHdtb2RzID0gInRwdGMxIjsKKwlyZWcgPQk8MHg0OTkwMDAwMCAweDEwMDAwMD47CisJaW50ZXJydXB0cyA9IDwxMTM+OworCWludGVycnVwdC1uYW1lcyA9ICJlZG0zX3RjZXJyaW50IjsKK307CisKK2VkbWFfdHB0YzI6IHRwdGNANDlhMDAwMDAgeworCWNvbXBhdGlibGUgPSAidGksZWRtYTMtdHB0YyI7CisJdGksaHdtb2RzID0gInRwdGMyIjsKKwlyZWcgPQk8MHg0OWEwMDAwMCAweDEwMDAwMD47CisJaW50ZXJydXB0cyA9IDwxMTQ+OworCWludGVycnVwdC1uYW1lcyA9ICJlZG0zX3RjZXJyaW50IjsKK307CisKK3NoYW06IHNoYW1ANTMxMDAwMDAgeworCWNvbXBhdGlibGUgPSAidGksb21hcDQtc2hhbSI7CisJdGksaHdtb2RzID0gInNoYW0iOworCXJlZyA9IDwweDUzMTAwMDAwIDB4MjAwPjsKKwlpbnRlcnJ1cHRzID0gPDEwOT47CisJLyogRE1BIGNoYW5uZWwgMzYgZXhlY3V0ZWQgb24gZURNQSBUQzAgLSBsb3cgcHJpb3JpdHkgcXVldWUgKi8KKwlkbWFzID0gPCZlZG1hIDM2IDA+OworCWRtYS1uYW1lcyA9ICJyeCI7Cit9OworCittY2FzcDA6IG1jYXNwQDQ4MDM4MDAwIHsKKwljb21wYXRpYmxlID0gInRpLGFtMzN4eC1tY2FzcC1hdWRpbyI7CisJdGksaHdtb2RzID0gIm1jYXNwMCI7CisJcmVnID0gPDB4NDgwMzgwMDAgMHgyMDAwPiwKKwkJPDB4NDYwMDAwMDAgMHg0MDAwMDA+OworCXJlZy1uYW1lcyA9ICJtcHUiLCAiZGF0IjsKKwlpbnRlcnJ1cHRzID0gPDgwPiwgPDgxPjsKKwlpbnRlcnJ1cHQtbmFtZXMgPSAidHgiLCAicngiOworCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJLyogRE1BIGNoYW5uZWxzIDggYW5kIDkgZXhlY3V0ZWQgb24gZURNQSBUQzIgLSBoaWdoIHByaW9yaXR5IHF1ZXVlICovCisJZG1hcyA9IDwmZWRtYSA4IDI+LAorCSAgICAgICA8JmVkbWEgOSAyPjsKKwlkbWEtbmFtZXMgPSAidHgiLCAicngiOworfTsKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitERVBSRUNBVEVEIGJpbmRpbmcsIG5ldyBEVFMgZmlsZXMgbXVzdCB1c2UgdGhlIHRpLGVkbWEzLXRwY2MvdGksZWRtYTMtdHB0YworYmluZGluZy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJ0aSxlZG1hMyIKKy0gI2RtYS1jZWxsczogU2hvdWxkIGJlIHNldCB0byA8MT4KKyAgICAgICAgICAgICAgQ2xpZW50cyBzaG91bGQgdXNlIGEgc2luZ2xlIGNoYW5uZWwgbnVtYmVyIHBlciBETUEgcmVxdWVzdC4KKy0gcmVnOiBNZW1vcnkgbWFwIGZvciBhY2Nlc3NpbmcgbW9kdWxlCistIGludGVycnVwdC1wYXJlbnQ6IEludGVycnVwdCBjb250cm9sbGVyIHRoZSBpbnRlcnJ1cHQgaXMgcm91dGVkIHRocm91Z2gKKy0gaW50ZXJydXB0czogRXhhY3RseSAzIGludGVycnVwdHMgbmVlZCB0byBiZSBzcGVjaWZpZWQgaW4gdGhlIG9yZGVyOgorICAgICAgICAgICAgICAxLiBUcmFuc2ZlciBjb21wbGV0aW9uIGludGVycnVwdC4KKyAgICAgICAgICAgICAgMi4gTWVtb3J5IHByb3RlY3Rpb24gaW50ZXJydXB0LgorICAgICAgICAgICAgICAzLiBFcnJvciBpbnRlcnJ1cHQuCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSB0aSxod21vZHM6IE5hbWUgb2YgdGhlIGh3bW9kcyBhc3NvY2lhdGVkIHRvIHRoZSBFRE1BCistIHRpLGVkbWEteGJhci1ldmVudC1tYXA6IENyb3NzYmFyIGV2ZW50IHRvIGNoYW5uZWwgbWFwCisKK0RlcHJlY2F0ZWQgcHJvcGVydGllczoKK0xpc3RlZCBoZXJlIGluIGNhc2Ugb25lIHdhbnRzIHRvIGJvb3QgYW4gb2xkIGtlcm5lbCB3aXRoIG5ldyBEVEIuIFRoZXNlCitwcm9wZXJ0aWVzIG1pZ2h0IG5lZWQgdG8gYmUgYWRkZWQgdG8gdGhlIG5ldyBEVFMgZmlsZXMuCistIHRpLGVkbWEtcmVnaW9uczogTnVtYmVyIG9mIHJlZ2lvbnMKKy0gdGksZWRtYS1zbG90czogTnVtYmVyIG9mIHNsb3RzCistIGRtYS1jaGFubmVsczogU3BlY2lmeSB0b3RhbCBETUEgY2hhbm5lbHMgcGVyIENDCisKK0V4YW1wbGU6CisKK2VkbWE6IGVkbWFANDkwMDAwMDAgeworCXJlZyA9IDwweDQ5MDAwMDAwIDB4MTAwMDA+OworCWludGVycnVwdC1wYXJlbnQgPSA8JmludGM+OworCWludGVycnVwdHMgPSA8MTIgMTMgMTQ+OworCWNvbXBhdGlibGUgPSAidGksZWRtYTMiOworCXRpLGh3bW9kcyA9ICJ0cGNjIiwgInRwdGMwIiwgInRwdGMxIiwgInRwdGMyIjsKKwkjZG1hLWNlbGxzID0gPDE+OworCXRpLGVkbWEteGJhci1ldmVudC1tYXAgPSAvYml0cy8gMTYgPDEgMTIKKwkJCQkJICAgIDIgMTM+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEveGlsaW54L3hpbGlueF9kbWEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS94aWxpbngveGlsaW54X2RtYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI5MWM0MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEveGlsaW54L3hpbGlueF9kbWEudHh0CkBAIC0wLDAgKzEsNjUgQEAKK1hpbGlueCBBWEkgRE1BIGVuZ2luZSwgaXQgZG9lcyB0cmFuc2ZlcnMgYmV0d2VlbiBtZW1vcnkgYW5kIEFYSTQgc3RyZWFtCit0YXJnZXQgZGV2aWNlcy4gSXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gaGF2ZSBvbmUgY2hhbm5lbCBvciB0d28gY2hhbm5lbHMuCitJZiBjb25maWd1cmVkIGFzIHR3byBjaGFubmVscywgb25lIGlzIHRvIHRyYW5zbWl0IHRvIHRoZSBkZXZpY2UgYW5kIGFub3RoZXIKK2lzIHRvIHJlY2VpdmUgZnJvbSB0aGUgZGV2aWNlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgInhsbngsYXhpLWRtYS0xLjAwLmEiCistICNkbWEtY2VsbHM6IFNob3VsZCBiZSA8MT4sIHNlZSAiZG1hcyIgcHJvcGVydHkgYmVsb3cKKy0gcmVnOiBTaG91bGQgY29udGFpbiBETUEgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGguCistIGRtYS1jaGFubmVsIGNoaWxkIG5vZGU6IFNob3VsZCBoYXZlIGF0bGVhc3Qgb25lIGNoYW5uZWwgYW5kIGNhbiBoYXZlIHVwdG8KKwl0d28gY2hhbm5lbHMgcGVyIGRldmljZS4gVGhpcyBub2RlIHNwZWNpZmllcyB0aGUgcHJvcGVydGllcyBvZiBlYWNoCisJRE1BIGNoYW5uZWwgKHNlZSBjaGlsZCBub2RlIHByb3BlcnRpZXMgYmVsb3cpLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSB4bG54LGluY2x1ZGUtc2c6IFRlbGxzIHdoZXRoZXIgY29uZmlndXJlZCBmb3IgU2NhdHRlci1tb2RlIGluCisJdGhlIGhhcmR3YXJlLgorCitSZXF1aXJlZCBjaGlsZCBub2RlIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IEl0IHNob3VsZCBiZSBlaXRoZXIgInhsbngsYXhpLWRtYS1tbTJzLWNoYW5uZWwiIG9yCisJInhsbngsYXhpLWRtYS1zMm1tLWNoYW5uZWwiLgorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBwZXIgY2hhbm5lbCBETUEgaW50ZXJydXB0cy4KKy0geGxueCxkYXRhd2lkdGg6IFNob3VsZCBjb250YWluIHRoZSBzdHJlYW0gZGF0YSB3aWR0aCwgdGFrZSB2YWx1ZXMKKwl7MzIsNjQuLi4xMDI0fS4KKworT3B0aW9uIGNoaWxkIG5vZGUgcHJvcGVydGllczoKKy0geGxueCxpbmNsdWRlLWRyZTogVGVsbHMgd2hldGhlciBoYXJkd2FyZSBpcyBjb25maWd1cmVkIGZvciBEYXRhCisJUmVhbGlnbm1lbnQgRW5naW5lLgorCitFeGFtcGxlOgorKysrKysrKysKKworYXhpX2RtYV8wOiBheGlkbWFANDA0MDAwMDAgeworCWNvbXBhdGlibGUgPSAieGxueCxheGktZG1hLTEuMDAuYSI7CisJI2RtYV9jZWxscyA9IDwxPjsKKwlyZWcgPSA8IDB4NDA0MDAwMDAgMHgxMDAwMCA+OworCWRtYS1jaGFubmVsQDQwNDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJ4bG54LGF4aS1kbWEtbW0ycy1jaGFubmVsIjsKKwkJaW50ZXJydXB0cyA9IDwgMCA1OSA0ID47CisJCXhsbngsZGF0YXdpZHRoID0gPDB4NDA+OworCX0gOworCWRtYS1jaGFubmVsQDQwNDAwMDMwIHsKKwkJY29tcGF0aWJsZSA9ICJ4bG54LGF4aS1kbWEtczJtbS1jaGFubmVsIjsKKwkJaW50ZXJydXB0cyA9IDwgMCA1OCA0ID47CisJCXhsbngsZGF0YXdpZHRoID0gPDB4NDA+OworCX0gOworfSA7CisKKworKiBETUEgY2xpZW50CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGRtYXM6IGEgbGlzdCBvZiA8W0RNQSBkZXZpY2UgcGhhbmRsZV0gW0NoYW5uZWwgSURdPiBwYWlycywKKwl3aGVyZSBDaGFubmVsIElEIGlzICcwJyBmb3Igd3JpdGUvdHggYW5kICcxJyBmb3IgcmVhZC9yeAorCWNoYW5uZWwuCistIGRtYS1uYW1lczogYSBsaXN0IG9mIERNQSBjaGFubmVsIG5hbWVzLCBvbmUgcGVyICJkbWFzIiBlbnRyeQorCitFeGFtcGxlOgorKysrKysrKysKKworZG1hdGVzdF8wOiBkbWF0ZXN0QDAgeworCWNvbXBhdGlibGUgPSJ4bG54LGF4aS1kbWEtdGVzdC0xLjAwLmEiOworCWRtYXMgPSA8JmF4aV9kbWFfMCAwCisJCSZheGlfZG1hXzAgMT47CisJZG1hLW5hbWVzID0gImRtYTAiLCAiZG1hMSI7Cit9IDsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEveGlsaW54L3hpbGlueF92ZG1hLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEveGlsaW54L3hpbGlueF92ZG1hLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGM0ZDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS94aWxpbngveGlsaW54X3ZkbWEudHh0CkBAIC0wLDAgKzEsNzUgQEAKK1hpbGlueCBBWEkgVkRNQSBlbmdpbmUsIGl0IGRvZXMgdHJhbnNmZXJzIGJldHdlZW4gbWVtb3J5IGFuZCB2aWRlbyBkZXZpY2VzLgorSXQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gaGF2ZSBvbmUgY2hhbm5lbCBvciB0d28gY2hhbm5lbHMuIElmIGNvbmZpZ3VyZWQKK2FzIHR3byBjaGFubmVscywgb25lIGlzIHRvIHRyYW5zbWl0IHRvIHRoZSB2aWRlbyBkZXZpY2UgYW5kIGFub3RoZXIgaXMKK3RvIHJlY2VpdmUgZnJvbSB0aGUgdmlkZW8gZGV2aWNlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgInhsbngsYXhpLXZkbWEtMS4wMC5hIgorLSAjZG1hLWNlbGxzOiBTaG91bGQgYmUgPDE+LCBzZWUgImRtYXMiIHByb3BlcnR5IGJlbG93CistIHJlZzogU2hvdWxkIGNvbnRhaW4gVkRNQSByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aC4KKy0geGxueCxudW0tZnN0b3JlczogU2hvdWxkIGJlIHRoZSBudW1iZXIgb2YgZnJhbWVidWZmZXJzIGFzIGNvbmZpZ3VyZWQgaW4gaC93LgorLSBkbWEtY2hhbm5lbCBjaGlsZCBub2RlOiBTaG91bGQgaGF2ZSBhdCBsZWFzdCBvbmUgY2hhbm5lbCBhbmQgY2FuIGhhdmUgdXAgdG8KKwl0d28gY2hhbm5lbHMgcGVyIGRldmljZS4gVGhpcyBub2RlIHNwZWNpZmllcyB0aGUgcHJvcGVydGllcyBvZiBlYWNoCisJRE1BIGNoYW5uZWwgKHNlZSBjaGlsZCBub2RlIHByb3BlcnRpZXMgYmVsb3cpLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSB4bG54LGluY2x1ZGUtc2c6IFRlbGxzIGNvbmZpZ3VyZWQgZm9yIFNjYXR0ZXItbW9kZSBpbgorCXRoZSBoYXJkd2FyZS4KKy0geGxueCxmbHVzaC1mc3luYzogVGVsbHMgd2hpY2ggY2hhbm5lbCB0byBGbHVzaCBvbiBGcmFtZSBzeW5jLgorCUl0IHRha2VzIGZvbGxvd2luZyB2YWx1ZXM6CisJezF9LCBmbHVzaCBib3RoIGNoYW5uZWxzCisJezJ9LCBmbHVzaCBtbTJzIGNoYW5uZWwKKwl7M30sIGZsdXNoIHMybW0gY2hhbm5lbAorCitSZXF1aXJlZCBjaGlsZCBub2RlIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IEl0IHNob3VsZCBiZSBlaXRoZXIgInhsbngsYXhpLXZkbWEtbW0ycy1jaGFubmVsIiBvcgorCSJ4bG54LGF4aS12ZG1hLXMybW0tY2hhbm5lbCIuCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIHBlciBjaGFubmVsIFZETUEgaW50ZXJydXB0cy4KKy0geGxueCxkYXRhd2lkdGg6IFNob3VsZCBjb250YWluIHRoZSBzdHJlYW0gZGF0YSB3aWR0aCwgdGFrZSB2YWx1ZXMKKwl7MzIsNjQuLi4xMDI0fS4KKworT3B0aW9uYWwgY2hpbGQgbm9kZSBwcm9wZXJ0aWVzOgorLSB4bG54LGluY2x1ZGUtZHJlOiBUZWxscyBoYXJkd2FyZSBpcyBjb25maWd1cmVkIGZvciBEYXRhCisJUmVhbGlnbm1lbnQgRW5naW5lLgorLSB4bG54LGdlbmxvY2stbW9kZTogVGVsbHMgR2VubG9jayBzeW5jaHJvbml6YXRpb24gaXMKKwllbmFibGVkL2Rpc2FibGVkIGluIGhhcmR3YXJlLgorCitFeGFtcGxlOgorKysrKysrKysKKworYXhpX3ZkbWFfMDogYXhpdmRtYUA0MDAzMDAwMCB7CisJY29tcGF0aWJsZSA9ICJ4bG54LGF4aS12ZG1hLTEuMDAuYSI7CisJI2RtYV9jZWxscyA9IDwxPjsKKwlyZWcgPSA8IDB4NDAwMzAwMDAgMHgxMDAwMCA+OworCXhsbngsbnVtLWZzdG9yZXMgPSA8MHg4PjsKKwl4bG54LGZsdXNoLWZzeW5jID0gPDB4MT47CisJZG1hLWNoYW5uZWxANDAwMzAwMDAgeworCQljb21wYXRpYmxlID0gInhsbngsYXhpLXZkbWEtbW0ycy1jaGFubmVsIjsKKwkJaW50ZXJydXB0cyA9IDwgMCA1NCA0ID47CisJCXhsbngsZGF0YXdpZHRoID0gPDB4NDA+OworCX0gOworCWRtYS1jaGFubmVsQDQwMDMwMDMwIHsKKwkJY29tcGF0aWJsZSA9ICJ4bG54LGF4aS12ZG1hLXMybW0tY2hhbm5lbCI7CisJCWludGVycnVwdHMgPSA8IDAgNTMgNCA+OworCQl4bG54LGRhdGF3aWR0aCA9IDwweDQwPjsKKwl9IDsKK30gOworCisKKyogRE1BIGNsaWVudAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBkbWFzOiBhIGxpc3Qgb2YgPFtWaWRlbyBETUEgZGV2aWNlIHBoYW5kbGVdIFtDaGFubmVsIElEXT4gcGFpcnMsCisJd2hlcmUgQ2hhbm5lbCBJRCBpcyAnMCcgZm9yIHdyaXRlL3R4IGFuZCAnMScgZm9yIHJlYWQvcngKKwljaGFubmVsLgorLSBkbWEtbmFtZXM6IGEgbGlzdCBvZiBETUEgY2hhbm5lbCBuYW1lcywgb25lIHBlciAiZG1hcyIgZW50cnkKKworRXhhbXBsZToKKysrKysrKysrCisKK3ZkbWF0ZXN0XzA6IHZkbWF0ZXN0QDAgeworCWNvbXBhdGlibGUgPSJ4bG54LGF4aS12ZG1hLXRlc3QtMS4wMC5hIjsKKwlkbWFzID0gPCZheGlfdmRtYV8wIDAKKwkJJmF4aV92ZG1hXzAgMT47CisJZG1hLW5hbWVzID0gInZkbWEwIiwgInZkbWExIjsKK30gOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS96eGRtYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3p4ZG1hLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjA3Y2ViCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS96eGRtYS50eHQKQEAgLTAsMCArMSwzOCBAQAorKiBaVEUgWlgyOTY3MDIgRE1BIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJ6dGUsengyOTY3MDItZG1hIgorLSByZWc6IFNob3VsZCBjb250YWluIERNQSByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aC4KKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gb25lIGludGVycnVwdCBzaGFyZWQgYnkgYWxsIGNoYW5uZWwKKy0gI2RtYS1jZWxsczogc2VlIGRtYS50eHQsIHNob3VsZCBiZSAxLCBwYXJhIG51bWJlcgorLSBkbWEtY2hhbm5lbHM6IHBoeXNpY2FsIGNoYW5uZWxzIHN1cHBvcnRlZAorLSBkbWEtcmVxdWVzdHM6IHZpcnR1YWwgY2hhbm5lbHMgc3VwcG9ydGVkLCBlYWNoIHZpcnR1YWwgY2hhbm5lbAorCQloYXZlIHNwZWNpZmljIHJlcXVlc3QgbGluZQorLSBjbG9ja3M6IGNsb2NrIHJlcXVpcmVkCisKK0V4YW1wbGU6CisKK0NvbnRyb2xsZXI6CisJZG1hOiBkbWEtY29udHJvbGxlckAweDA5YzAwMDAweworCQljb21wYXRpYmxlID0gInp0ZSx6eDI5NjcwMi1kbWEiOworCQlyZWcgPSA8MHgwOWMwMDAwMCAweDEwMDA+OworCQljbG9ja3MgPSA8JnRvcGNsayBaWDI5NjcwMl9ETUFfQUNMSz47CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSA2NiBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJI2RtYS1jZWxscyA9IDwxPjsKKwkJZG1hLWNoYW5uZWxzID0gPDI0PjsKKwkJZG1hLXJlcXVlc3RzID0gPDI0PjsKKwl9OworCitDbGllbnQ6CitVc2Ugc3BlY2lmaWMgcmVxdWVzdCBsaW5lIHBhc3NpbmcgZnJvbSBkbWF4CitGb3IgZXhhbXBsZSwgc3BkaWYwIHR4IGNoYW5uZWwgcmVxdWVzdCBsaW5lIGlzIDQKKwlzcGRpZjA6IHNwZGlmMEAwYjAwNDAwMCB7CisJCSNzb3VuZC1kYWktY2VsbHMgPSA8MD47CisJCWNvbXBhdGlibGUgPSAienRlLHp4Mjk2NzAyLXNwZGlmIjsKKwkJcmVnID0gPDB4MGIwMDQwMDAgMHgxMDAwPjsKKwkJY2xvY2tzID0gPCZsc3AwY2xrIFpYMjk2NzAyX1NQRElGMF9ESVY+OworCQljbG9jay1uYW1lcyA9ICJ0eCI7CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSAyMSBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJZG1hcyA9IDwmZG1hIDQ+OworCQlkbWEtbmFtZXMgPSAidHgiOworCX0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9lZGFjL2FwbS14Z2VuZS1lZGFjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9lZGFjL2FwbS14Z2VuZS1lZGFjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGUyYTMxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2VkYWMvYXBtLXhnZW5lLWVkYWMudHh0CkBAIC0wLDAgKzEsMTAyIEBACisqIEFQTSBYLUdlbmUgU29DIEVEQUMgbm9kZQorCitFREFDIG5vZGUgaXMgZGVmaW5lZCB0byBkZXNjcmliZSBvbi1jaGlwIGVycm9yIGRldGVjdGlvbiBhbmQgY29ycmVjdGlvbi4KK1RoZSBmb2xsb3cgZXJyb3IgdHlwZXMgYXJlIHN1cHBvcnRlZDoKKworICBtZW1vcnkgY29udHJvbGxlcgktIE1lbW9yeSBjb250cm9sbGVyCisgIFBNRCAoTDEvTDIpCQktIFByb2Nlc3NvciBtb2R1bGUgdW5pdCAoUE1EKSBMMS9MMiBjYWNoZQorICBMMwkJCS0gTDMgY2FjaGUgY29udHJvbGxlcgorICBTb0MJCQktIFNvQyBJUCdzIHN1Y2ggYXMgRXRoZXJuZXQsIFNBVEEsIGFuZCBldGMKKworVGhlIGZvbGxvd2luZyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgRURBQyBEVCBub2RlIGJpbmRpbmcuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUJCTogU2hhbGwgYmUgImFwbSx4Z2VuZS1lZGFjIi4KKy0gcmVnbWFwLWNzdwkJOiBSZWdtYXAgb2YgdGhlIENQVSBzd2l0Y2ggZmFicmljIChDU1cpIHJlc291cmNlLgorLSByZWdtYXAtbWNiYQkJOiBSZWdtYXAgb2YgdGhlIE1DQi1BIChtZW1vcnkgYnJpZGdlKSByZXNvdXJjZS4KKy0gcmVnbWFwLW1jYmIJCTogUmVnbWFwIG9mIHRoZSBNQ0ItQiAobWVtb3J5IGJyaWRnZSkgcmVzb3VyY2UuCistIHJlZ21hcC1lZnVzZQkJOiBSZWdtYXAgb2YgdGhlIFBNRCBlZnVzZSByZXNvdXJjZS4KKy0gcmVnCQkJOiBGaXJzdCByZXNvdXJjZSBzaGFsbCBiZSB0aGUgQ1BVIGJ1cyAoUENQKSByZXNvdXJjZS4KKy0gaW50ZXJydXB0cyAgICAgICAgICAgIDogSW50ZXJydXB0LXNwZWNpZmllciBmb3IgTUNVLCBQTUQsIEwzLCBvciBTb0MgZXJyb3IKKwkJCSAgSVJRKHMpLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBtZW1vcnkgY29udHJvbGxlciBzdWJub2RlOgorLSBjb21wYXRpYmxlCQk6IFNoYWxsIGJlICJhcG0seGdlbmUtZWRhYy1tYyIuCistIHJlZwkJCTogRmlyc3QgcmVzb3VyY2Ugc2hhbGwgYmUgdGhlIG1lbW9yeSBjb250cm9sbGVyIHVuaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKE1DVSkgcmVzb3VyY2UuCistIG1lbW9yeS1jb250cm9sbGVyCTogSW5zdGFuY2UgbnVtYmVyIG9mIHRoZSBtZW1vcnkgY29udHJvbGxlci4KKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgUE1EIHN1Ym5vZGU6CistIGNvbXBhdGlibGUJCTogU2hhbGwgYmUgImFwbSx4Z2VuZS1lZGFjLXBtZCIgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImFwbSx4Z2VuZS1lZGFjLXBtZC12MiIuCistIHJlZwkJCTogRmlyc3QgcmVzb3VyY2Ugc2hhbGwgYmUgdGhlIFBNRCByZXNvdXJjZS4KKy0gcG1kLWNvbnRyb2xsZXIJOiBJbnN0YW5jZSBudW1iZXIgb2YgdGhlIFBNRCBjb250cm9sbGVyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBMMyBzdWJub2RlOgorLSBjb21wYXRpYmxlCQk6IFNoYWxsIGJlICJhcG0seGdlbmUtZWRhYy1sMyIgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImFwbSx4Z2VuZS1lZGFjLWwzLXYyIi4KKy0gcmVnCQkJOiBGaXJzdCByZXNvdXJjZSBzaGFsbCBiZSB0aGUgTDMgRURBQyByZXNvdXJjZS4KKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgU29DIHN1Ym5vZGU6CistIGNvbXBhdGlibGUJCTogU2hhbGwgYmUgImFwbSx4Z2VuZS1lZGFjLXNvYy12MSIgZm9yIHJldmlzaW9uIDEgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImFwbSx4Z2VuZS1lZGFjLWwzLXNvYyIgZm9yIGdlbmVyYWwgdmFsdWUgcmVwb3J0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkuCistIHJlZwkJCTogRmlyc3QgcmVzb3VyY2Ugc2hhbGwgYmUgdGhlIFNvQyBFREFDIHJlc291cmNlLgorCitFeGFtcGxlOgorCWNzdzogY3N3QDdlMjAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcG0seGdlbmUtY3N3IiwgInN5c2NvbiI7CisJCXJlZyA9IDwweDAgMHg3ZTIwMDAwMCAweDAgMHgxMDAwPjsKKwl9OworCisJbWNiYTogbWNiYUA3ZTcwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiYXBtLHhnZW5lLW1jYiIsICJzeXNjb24iOworCQlyZWcgPSA8MHgwIDB4N2U3MDAwMDAgMHgwIDB4MTAwMD47CisJfTsKKworCW1jYmI6IG1jYmJAN2U3MjAwMDAgeworCQljb21wYXRpYmxlID0gImFwbSx4Z2VuZS1tY2IiLCAic3lzY29uIjsKKwkJcmVnID0gPDB4MCAweDdlNzIwMDAwIDB4MCAweDEwMDA+OworCX07CisKKwllZnVzZTogZWZ1c2VAMTA1NGEwMDAgeworCQljb21wYXRpYmxlID0gImFwbSx4Z2VuZS1lZnVzZSIsICJzeXNjb24iOworCQlyZWcgPSA8MHgwIDB4MTA1NGEwMDAgMHgwIDB4MjA+OworCX07CisKKwllZGFjQDc4ODAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcG0seGdlbmUtZWRhYyI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDI+OworCQkjc2l6ZS1jZWxscyA9IDwyPjsKKwkJcmFuZ2VzOworCQlyZWdtYXAtY3N3ID0gPCZjc3c+OworCQlyZWdtYXAtbWNiYSA9IDwmbWNiYT47CisJCXJlZ21hcC1tY2JiID0gPCZtY2JiPjsKKwkJcmVnbWFwLWVmdXNlID0gPCZlZnVzZT47CisJCXJlZyA9IDwweDAgMHg3ODgwMDAwMCAweDAgMHgxMDA+OworCQlpbnRlcnJ1cHRzID0gPDB4MCAweDIwIDB4ND4sCisJCQkgICAgIDwweDAgMHgyMSAweDQ+LAorCQkJICAgICA8MHgwIDB4MjcgMHg0PjsKKworCQllZGFjbWNAN2U4MDAwMDAgeworCQkJY29tcGF0aWJsZSA9ICJhcG0seGdlbmUtZWRhYy1tYyI7CisJCQlyZWcgPSA8MHgwIDB4N2U4MDAwMDAgMHgwIDB4MTAwMD47CisJCQltZW1vcnktY29udHJvbGxlciA9IDwwPjsKKwkJfTsKKworCQllZGFjcG1kQDdjMDAwMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiYXBtLHhnZW5lLWVkYWMtcG1kIjsKKwkJCXJlZyA9IDwweDAgMHg3YzAwMDAwMCAweDAgMHgyMDAwMDA+OworCQkJcG1kLWNvbnRyb2xsZXIgPSA8MD47CisJCX07CisKKwkJZWRhY2wzQDdlNjAwMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiYXBtLHhnZW5lLWVkYWMtbDMiOworCQkJcmVnID0gPDB4MCAweDdlNjAwMDAwIDB4MCAweDEwMDA+OworCQl9OworCisJCWVkYWNzb2NAN2U5MzAwMDAgeworCQkJY29tcGF0aWJsZSA9ICJhcG0seGdlbmUtZWRhYy1zb2MtdjEiOworCQkJcmVnID0gPDB4MCAweDdlOTMwMDAwIDB4MCAweDEwMDA+OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZWVwcm9tL2F0MjUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2VlcHJvbS9hdDI1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDM0NDcxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2VlcHJvbS9hdDI1LnR4dApAQCAtMCwwICsxLDM1IEBACitFRVBST01zIChTUEkpIGNvbXBhdGlibGUgd2l0aCBBdG1lbCBhdDI1LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogImF0bWVsLGF0MjUiLgorLSByZWcgOiBjaGlwIHNlbGVjdCBudW1iZXIKKy0gc3BpLW1heC1mcmVxdWVuY3kgOiBtYXggc3BpIGZyZXF1ZW5jeSB0byB1c2UKKy0gcGFnZXNpemUgOiBzaXplIG9mIHRoZSBlZXByb20gcGFnZQorLSBzaXplIDogdG90YWwgZWVwcm9tIHNpemUgaW4gYnl0ZXMKKy0gYWRkcmVzcy13aWR0aCA6IG51bWJlciBvZiBhZGRyZXNzIGJpdHMgKG9uZSBvZiA4LCAxNiwgb3IgMjQpCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHNwaS1jcGhhIDogU1BJIHNoaWZ0ZWQgY2xvY2sgcGhhc2UsIGFzIHBlciBzcGktYnVzIGJpbmRpbmdzLgorLSBzcGktY3BvbCA6IFNQSSBpbnZlcnNlIGNsb2NrIHBvbGFyaXR5LCBhcyBwZXIgc3BpLWJ1cyBiaW5kaW5ncy4KKy0gcmVhZC1vbmx5IDogdGhpcyBwYXJhbWV0ZXItbGVzcyBwcm9wZXJ0eSBkaXNhYmxlcyB3cml0ZXMgdG8gdGhlIGVlcHJvbQorCitPYnNvbGV0ZSBsZWdhY3kgcHJvcGVydGllcyBhcmUgY2FuIGJlIHVzZWQgaW4gcGxhY2Ugb2YgInNpemUiLCAicGFnZXNpemUiLAorImFkZHJlc3Mtd2lkdGgiLCBhbmQgInJlYWQtb25seSI6CistIGF0MjUsYnl0ZS1sZW4gOiB0b3RhbCBlZXByb20gc2l6ZSBpbiBieXRlcworLSBhdDI1LGFkZHItbW9kZSA6IGFkZHItbW9kZSBmbGFncywgYXMgZGVmaW5lZCBpbiBpbmNsdWRlL2xpbnV4L3NwaS9lZXByb20uaAorLSBhdDI1LHBhZ2Utc2l6ZSA6IHNpemUgb2YgdGhlIGVlcHJvbSBwYWdlCisKK0FkZGl0aW9uYWwgY29tcGF0aWJsZSBwcm9wZXJ0aWVzIGFyZSBhbHNvIGFsbG93ZWQuCisKK0V4YW1wbGU6CisJYXQyNUAwIHsKKwkJY29tcGF0aWJsZSA9ICJhdG1lbCxhdDI1IiwgInN0LG05NTI1NiI7CisJCXJlZyA9IDwwPgorCQlzcGktbWF4LWZyZXF1ZW5jeSA9IDw1MDAwMDAwPjsKKwkJc3BpLWNwaGE7CisJCXNwaS1jcG9sOworCisJCXBhZ2VzaXplID0gPDY0PjsKKwkJc2l6ZSA9IDwzMjc2OD47CisJCWFkZHJlc3Mtd2lkdGggPSA8MTY+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZWVwcm9tL2VlcHJvbS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZWVwcm9tL2VlcHJvbS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM0MmMxMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9lZXByb20vZWVwcm9tLnR4dApAQCAtMCwwICsxLDI4IEBACitFRVBST01zIChJMkMpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICI8bWFudWZhY3R1cmVyPiw8dHlwZT4iCisJCSBJZiB0aGVyZSBpcyBubyBzcGVjaWZpYyBkcml2ZXIgZm9yIDxtYW51ZmFjdHVyZXI+LCBhIGdlbmVyaWMKKwkJIGRyaXZlciBiYXNlZCBvbiA8dHlwZT4gaXMgc2VsZWN0ZWQuIFBvc3NpYmxlIHR5cGVzIGFyZToKKwkJIDI0YzAwLCAyNGMwMSwgMjRjMDIsIDI0YzA0LCAyNGMwOCwgMjRjMTYsIDI0YzMyLCAyNGM2NCwKKwkJIDI0YzEyOCwgMjRjMjU2LCAyNGM1MTIsIDI0YzEwMjQsIHNwZAorCisgIC0gcmVnIDogdGhlIEkyQyBhZGRyZXNzIG9mIHRoZSBFRVBST00KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworICAtIHBhZ2VzaXplIDogdGhlIGxlbmd0aCBvZiB0aGUgcGFnZXNpemUgZm9yIHdyaXRpbmcuIFBsZWFzZSBjb25zdWx0IHRoZQorICAgICAgICAgICAgICAgbWFudWFsIG9mIHlvdXIgZGV2aWNlLCB0aGF0IHZhbHVlIHZhcmllcyBhIGxvdC4gQSB3cm9uZyB2YWx1ZQorCSAgICAgICBtYXkgcmVzdWx0IGluIGRhdGEgbG9zcyEgSWYgbm90IHNwZWNpZmllZCwgYSBzYWZldHkgdmFsdWUgb2YKKwkgICAgICAgJzEnIGlzIHVzZWQgd2hpY2ggd2lsbCBiZSB2ZXJ5IHNsb3cuCisKKyAgLSByZWFkLW9ubHk6IHRoaXMgcGFyYW1ldGVybGVzcyBwcm9wZXJ0eSBkaXNhYmxlcyB3cml0ZXMgdG8gdGhlIGVlcHJvbQorCitFeGFtcGxlOgorCitlZXByb21ANTIgeworCWNvbXBhdGlibGUgPSAiYXRtZWwsMjRjMzIiOworCXJlZyA9IDwweDUyPjsKKwlwYWdlc2l6ZSA9IDwzMj47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2V4dGNvbi9leHRjb24tYXJpem9uYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZXh0Y29uL2V4dGNvbi1hcml6b25hLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTcwNWZhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2V4dGNvbi9leHRjb24tYXJpem9uYS50eHQKQEAgLTAsMCArMSwxNSBAQAorQ2lycnVzIExvZ2ljIEFyaXpvbmEgY2xhc3MgYXVkaW8gU29DcworCitUaGVzZSBkZXZpY2VzIGFyZSBhdWRpbyBTb0NzIHdpdGggZXh0ZW5zaXZlIGRpZ2l0YWwgY2FwYWJpbGl0aWVzIGFuZCBhIHJhbmdlCitvZiBhbmFsb2d1ZSBJL08uCisKK1RoaXMgZG9jdW1lbnQgbGlzdHMgRXh0Y29uIHNwZWNpZmljIGJpbmRpbmdzLCBzZWUgdGhlIHByaW1hcnkgYmluZGluZyBkb2N1bWVudDoKKyAgLi4vbWZkL2FyaXpvbmEudHh0CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKyAgLSB3bGYsaHBkZXQtY2hhbm5lbCA6IEhlYWRwaG9uZSBkZXRlY3Rpb24gY2hhbm5lbC4KKyAgICBBUklaT05BX0FDQ0RFVF9NT0RFX0hQTCBvciAxIC0gSGVhZHBob25lIGRldGVjdCBtb2RlIGlzIHNldCB0byBIUERFVEwKKyAgICBBUklaT05BX0FDQ0RFVF9NT0RFX0hQUiBvciAyIC0gSGVhZHBob25lIGRldGVjdCBtb2RlIGlzIHNldCB0byBIUERFVFIKKyAgICBJZiB0aGlzIG5vZGUgaXMgbm90IG1lbnRpb25lZCBvciBpZiB0aGUgdmFsdWUgaXMgdW5rbm93biwgdGhlbgorICAgIGhlYWRwaG9uZSBkZXRlY3Rpb24gbW9kZSBpcyBzZXQgdG8gSFBERVRMLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2V4dGNvbi9leHRjb24tcGFsbWFzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9leHRjb24vZXh0Y29uLXBhbG1hcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYxZDVhZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9leHRjb24vZXh0Y29uLXBhbG1hcy50eHQKQEAgLTAsMCArMSwyMiBAQAorRVhUQ09OIEZPUiBQQUxNQVMvVFdMIENISVBTCisKK1BBTE1BUyBVU0IgQ09NUEFSQVRPUgorUmVxdWlyZWQgUHJvcGVydGllczoKKyAtIGNvbXBhdGlibGU6IHNob3VsZCBjb250YWluIG9uZSBvZjoKKyAgICogInRpLHBhbG1hcy11c2ItdmlkIi4KKyAgICogInRpLHR3bDYwMzUtdXNiLXZpZCIuCisgICAqICJ0aSxwYWxtYXMtdXNiIiAoREVQUkVDQVRFRCAtIHVzZSAidGkscGFsbWFzLXVzYi12aWQiKS4KKyAgICogInRpLHR3bDYwMzUtdXNiIiAoREVQUkVDQVRFRCAtIHVzZSAidGksdHdsNjAzNS11c2ItdmlkIikuCisKK09wdGlvbmFsIFByb3BlcnRpZXM6CisgLSB0aSx3YWtldXAgOiBUbyBlbmFibGUgdGhlIHdha2V1cCBjb21wYXJhdG9yIGluIHByb2JlCisgLSB0aSxlbmFibGUtaWQtZGV0ZWN0aW9uOiBQZXJmb3JtIElEIGRldGVjdGlvbi4gSWYgaWQtZ3BpbyBpcyBzcGVjaWZpZWQKKwkJaXQgcGVyZm9ybXMgaWQtZGV0ZWN0aW9uIHVzaW5nIEdQSU8gZWxzZSB1c2luZyBPVEcgY29yZS4KKyAtIHRpLGVuYWJsZS12YnVzLWRldGVjdGlvbjogUGVyZm9ybSBWQlVTIGRldGVjdGlvbi4KKyAtIGlkLWdwaW86IGdwaW8gZm9yIEdQSU8gSUQgZGV0ZWN0aW9uLiBTZWUgZ3BpbyBiaW5kaW5nLgorIC0gZGVib3VuY2UtZGVsYXktbXM6IGRlYm91bmNlIGRlbGF5IGZvciBHUElPIElEIHBpbiBpbiBtaWxsaXNlY29uZHMuCisKK3BhbG1hcy11c2IgeworICAgICAgIGNvbXBhdGlibGUgPSAidGksdHdsNjAzNS11c2IiLCAidGkscGFsbWFzLXVzYiI7CisgICAgICAgdGksd2FrZXVwOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9leHRjb24vZXh0Y29uLXJ0ODk3M2EudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2V4dGNvbi9leHRjb24tcnQ4OTczYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRlZGU3ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9leHRjb24vZXh0Y29uLXJ0ODk3M2EudHh0CkBAIC0wLDAgKzEsMjUgQEAKKworKiBSaWNodGVrIFJUODk3M0EgLSBNaWNybyBVU0IgU3dpdGNoIGRldmljZQorCitUaGUgUmljaHRlayBSVDg5NzNBIGlzIE1pY3JvIFVTQiBTd2l0Y2ggd2l0aCBPVlAgYW5kIEkyQyBpbnRlcmZhY2UuIFRoZSBSVDg5NzNBCitpcyBhIFVTQiBwb3J0IGFjY2Vzc29yeSBkZXRlY3RvciBhbmQgc3dpdGNoIHRoYXQgaXMgb3B0aW1pemVkIHRvIHByb3RlY3QgbG93Cit2b2x0YWdlIHN5c3RlbSBmcm9tIGFibm9ybWFsIGhpZ2ggaW5wdXQgdm9sdGFnZSAodXAgdG8gMjhWKSBhbmQgc3VwcG9ydHMgaGlnaAorc3BlZWQgVVNCIG9wZXJhdGlvbi4gQWxzbywgUlQ4OTczQSBzdXBwb3J0ICdhdXRvLWNvbmZpZ3VyYXRpb24nIG1vZGUuCitJZiBhdXRvLWNvbmZpZ3VyYXRpb24gbW9kZSBpcyBlbmFibGVkLCBSVDg5NzNBIHdvdWxkIGNvbnRyb2wgaW50ZXJuYWwgaC93IHBhdGNoCitmb3IgVVNCIEQtL0QrIHN3aXRjaGluZy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJyaWNodGVrLHJ0ODk3M2EtbXVpYyIKKy0gcmVnOiBTcGVjaWZpZXMgdGhlIEkyQyBzbGF2ZSBhZGRyZXNzIG9mIHRoZSBNVUlDIGJsb2NrLiBJdCBzaG91bGQgYmUgMHgxNAorLSBpbnRlcnJ1cHQtcGFyZW50OiBTcGVjaWZpZXMgdGhlIHBoYW5kbGUgb2YgdGhlIGludGVycnVwdCBjb250cm9sbGVyIHRvIHdoaWNoCisgIHRoZSBpbnRlcnJ1cHRzIGZyb20gcnQ4OTczYSBhcmUgZGVsaXZlcmVkIHRvLgorLSBpbnRlcnJ1cHRzOiBJbnRlcnJ1cHQgc3BlY2lmaWVycyBmb3IgZGV0ZWN0aW9uIGludGVycnVwdCBzb3VyY2VzLgorCitFeGFtcGxlOgorCisJcnQ4OTczYUAxNCB7CisJCWNvbXBhdGlibGUgPSAicmljaHRlayxydDg5NzNhLW11aWMiOworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncHgxPjsKKwkJaW50ZXJydXB0cyA9IDw1IDA+OworCQlyZWcgPSA8MHgxND47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9leHRjb24vZXh0Y29uLXNtNTUwMi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZXh0Y29uL2V4dGNvbi1zbTU1MDIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlY2RhMjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZXh0Y29uL2V4dGNvbi1zbTU1MDIudHh0CkBAIC0wLDAgKzEsMjMgQEAKKworKiBTTTU1MDIgTVVJQyAoTWljcm8tVVNCIEludGVyZmFjZSBDb250cm9sbGVyKSBkZXZpY2UKKworVGhlIFNpbGljb24gTWl0dXMgU001NTAyIGlzIGEgTVVJQyAoTWljcm8tVVNCIEludGVyZmFjZSBDb250cm9sbGVyKSBkZXZpY2UKK3doaWNoIGNhbiBkZXRlY3QgdGhlIHN0YXRlIG9mIGV4dGVybmFsIGFjY2Vzc29yeSB3aGVuIGV4dGVybmFsIGFjY2Vzc29yeSBpcworYXR0YWNoZWQgb3IgZGV0YWNoZWQgYW5kIGJ1dHRvbiBpcyBwcmVzc2VkIG9yIHJlbGVhc2VkLiBJdCBpcyBpbnRlcmZhY2VkIHRvCit0aGUgaG9zdCBjb250cm9sbGVyIHVzaW5nIGFuIEkyQyBpbnRlcmZhY2UuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAic2lsaWNvbm1pdHVzLHNtNTUwMi1tdWljIgorLSByZWc6IFNwZWNpZmllcyB0aGUgSTJDIHNsYXZlIGFkZHJlc3Mgb2YgdGhlIE1VSUMgYmxvY2suIEl0IHNob3VsZCBiZSAweDI1CistIGludGVycnVwdC1wYXJlbnQ6IFNwZWNpZmllcyB0aGUgcGhhbmRsZSBvZiB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgdG8gd2hpY2gKKyAgdGhlIGludGVycnVwdHMgZnJvbSBzbTU1MDIgYXJlIGRlbGl2ZXJlZCB0by4KKy0gaW50ZXJydXB0czogSW50ZXJydXB0IHNwZWNpZmllcnMgZm9yIGRldGVjdGlvbiBpbnRlcnJ1cHQgc291cmNlcy4KKworRXhhbXBsZToKKworCXNtNTUwMkAyNSB7CisJCWNvbXBhdGlibGUgPSAic2lsaWNvbm1pdHVzLHNtNTUwMi1tdWljIjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3B4MT47CisJCWludGVycnVwdHMgPSA8NSAwPjsKKwkJcmVnID0gPDB4MjU+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZXh0Y29uL2V4dGNvbi11c2ItZ3Bpby50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZXh0Y29uL2V4dGNvbi11c2ItZ3Bpby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYwYjkwMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9leHRjb24vZXh0Y29uLXVzYi1ncGlvLnR4dApAQCAtMCwwICsxLDE4IEBACitVU0IgR1BJTyBFeHRjb24gZGV2aWNlCisKK1RoaXMgaXMgYSB2aXJ0dWFsIGRldmljZSB1c2VkIHRvIGdlbmVyYXRlIFVTQiBjYWJsZSBzdGF0ZXMgZnJvbSB0aGUgVVNCIElEIHBpbgorY29ubmVjdGVkIHRvIGEgR1BJTyBwaW4uCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAibGludXgsZXh0Y29uLXVzYi1ncGlvIgorLSBpZC1ncGlvOiBncGlvIGZvciBVU0IgSUQgcGluLiBTZWUgZ3BpbyBiaW5kaW5nLgorCitFeGFtcGxlOiBFeGFtcGxlcyBvZiBleHRjb24tdXNiLWdwaW8gbm9kZSBpbiBkcmE3LWV2bS5kdHMgYXMgbGlzdGVkIGJlbG93OgorCWV4dGNvbl91c2IxIHsKKwkJY29tcGF0aWJsZSA9ICJsaW51eCxleHRjb24tdXNiLWdwaW8iOworCQlpZC1ncGlvID0gPCZncGlvNiAxIEdQSU9fQUNUSVZFX0hJR0g+OworCX0KKworCSZvbWFwX2R3YzNfMSB7CisJCWV4dGNvbiA9IDwmZXh0Y29uX3VzYjE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZnBnYS9hbHRlcmEtc29jZnBnYS1mcGdhLW1nci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZnBnYS9hbHRlcmEtc29jZnBnYS1mcGdhLW1nci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDUyZjMzNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9mcGdhL2FsdGVyYS1zb2NmcGdhLWZwZ2EtbWdyLnR4dApAQCAtMCwwICsxLDE3IEBACitBbHRlcmEgU09DRlBHQSBGUEdBIE1hbmFnZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBjb250YWluICJhbHRyLHNvY2ZwZ2EtZnBnYS1tZ3IiCistIHJlZyAgICAgICAgOiBiYXNlIGFkZHJlc3MgYW5kIHNpemUgZm9yIG1lbW9yeSBtYXBwZWQgaW8uCisgICAgICAgICAgICAgICAtIFRoZSBmaXJzdCBpbmRleCBpcyBmb3IgRlBHQSBtYW5hZ2VyIHJlZ2lzdGVyIGFjY2Vzcy4KKyAgICAgICAgICAgICAgIC0gVGhlIHNlY29uZCBpbmRleCBpcyBmb3Igd3JpdGluZyBGUEdBIGNvbmZpZ3VyYXRpb24gZGF0YS4KKy0gaW50ZXJydXB0cyA6IGludGVycnVwdCBmb3IgdGhlIEZQR0EgTWFuYWdlciBkZXZpY2UuCisKK0V4YW1wbGU6CisKKwlocHNfMF9mcGdhbWdyOiBmcGdhbWdyQGZmNzA2MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhbHRyLHNvY2ZwZ2EtZnBnYS1tZ3IiOworCQlyZWcgPSA8MHhGRjcwNjAwMCAweDEwMDAKKwkJICAgICAgIDB4RkZCOTAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDE3NSA0PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ZwZ2EveGlsaW54LXp5bnEtZnBnYS1tZ3IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ZwZ2EveGlsaW54LXp5bnEtZnBnYS1tZ3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwMThhYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZnBnYS94aWxpbngtenlucS1mcGdhLW1nci50eHQKQEAgLTAsMCArMSwxOSBAQAorWGlsaW54IFp5bnEgRlBHQSBNYW5hZ2VyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CQlzaG91bGQgY29udGFpbiAieGxueCx6eW5xLWRldmNmZy0xLjAiCistIHJlZzoJCQliYXNlIGFkZHJlc3MgYW5kIHNpemUgZm9yIG1lbW9yeSBtYXBwZWQgaW8KKy0gaW50ZXJydXB0czoJCWludGVycnVwdCBmb3IgdGhlIEZQR0EgbWFuYWdlciBkZXZpY2UKKy0gY2xvY2tzOgkJcGhhbmRsZSBmb3IgY2xvY2tzIHJlcXVpcmVkIG9wZXJhdGlvbgorLSBjbG9jay1uYW1lczoJCW5hbWUgZm9yIHRoZSBjbG9jaywgc2hvdWxkIGJlICJyZWZfY2xrIgorLSBzeXNjb246CQlwaGFuZGxlIGZvciBhY2Nlc3MgdG8gU0xDUiByZWdpc3RlcnMKKworRXhhbXBsZToKKwlkZXZjZmc6IGRldmNmZ0BmODAwNzAwMCB7CisJCWNvbXBhdGlibGUgPSAieGxueCx6eW5xLWRldmNmZy0xLjAiOworCQlyZWcgPSA8MHhmODAwNzAwMCAweDEwMD47CisJCWludGVycnVwdHMgPSA8MCA4IDQ+OworCQljbG9ja3MgPSA8JmNsa2MgMTI+OworCQljbG9jay1uYW1lcyA9ICJyZWZfY2xrIjsKKwkJc3lzY29uID0gPCZzbGNyPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Z1c2UvbnZpZGlhLHRlZ3JhMjAtZnVzZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZnVzZS9udmlkaWEsdGVncmEyMC1mdXNlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTM3MmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Z1c2UvbnZpZGlhLHRlZ3JhMjAtZnVzZS50eHQKQEAgLTAsMCArMSw0MCBAQAorTlZJRElBIFRlZ3JhMjAvVGVncmEzMC9UZWdyMTE0L1RlZ3JhMTI0IGZ1c2UgYmxvY2suCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBGb3IgVGVncmEyMCwgbXVzdCBjb250YWluICJudmlkaWEsdGVncmEyMC1lZnVzZSIuICBGb3IgVGVncmEzMCwKKyAgbXVzdCBjb250YWluICJudmlkaWEsdGVncmEzMC1lZnVzZSIuICBGb3IgVGVncmExMTQsIG11c3QgY29udGFpbgorICAibnZpZGlhLHRlZ3JhMTE0LWVmdXNlIi4gIEZvciBUZWdyYTEyNCwgbXVzdCBjb250YWluICJudmlkaWEsdGVncmExMjQtZWZ1c2UiLgorICBPdGhlcndpc2UsIG11c3QgY29udGFpbiAibnZpZGlhLDxjaGlwPi1lZnVzZSIsIHBsdXMgb25lIG9mIHRoZSBhYm92ZSwgd2hlcmUKKyAgPGNoaXA+IGlzIHRlZ3JhMTMyLgorICBEZXRhaWxzOgorICBudmlkaWEsdGVncmEyMC1lZnVzZTogVGVncmEyMCByZXF1aXJlcyB1c2luZyBBUEIgRE1BIHRvIHJlYWQgdGhlIGZ1c2UgZGF0YQorCWR1ZSB0byBhIGhhcmR3YXJlIGJ1Zy4gVGVncmEyMCBhbHNvIGxhY2tzIGNlcnRhaW4gaW5mb3JtYXRpb24gd2hpY2ggaXMKKwlhdmFpbGFibGUgaW4gbGF0ZXIgZ2VuZXJhdGlvbnMgc3VjaCBhcyBmYWIgY29kZSwgbG90IGNvZGUsIHdhZmVyIGlkLC4uCisgIG52aWRpYSx0ZWdyYTMwLWVmdXNlLCBudmlkaWEsdGVncmExMTQtZWZ1c2UgYW5kIG52aWRpYSx0ZWdyYTEyNC1lZnVzZToKKwlUaGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGVzZSBTb0NzIGFyZSB0aGUgc2l6ZSBvZiB0aGUgZWZ1c2UgYXJyYXksCisJdGhlIGxvY2F0aW9uIG9mIHRoZSBzcGFyZSAoT0VNIHByb2dyYW1tYWJsZSkgYml0cyBhbmQgdGhlIGxvY2F0aW9uIG9mCisJdGhlIHNwZWVkbyBkYXRhLgorLSByZWc6IFNob3VsZCBjb250YWluIDEgZW50cnk6IHRoZSBlbnRyeSBnaXZlcyB0aGUgcGh5c2ljYWwgYWRkcmVzcyBhbmQgbGVuZ3RoCisgICAgICAgb2YgdGhlIGZ1c2UgcmVnaXN0ZXJzLgorLSBjbG9ja3M6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKyAgU2VlIC4uL2Nsb2Nrcy9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCistIGNsb2NrLW5hbWVzOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAtIGZ1c2UKKy0gcmVzZXRzOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gcmVzZXQtbmFtZXMuCisgIFNlZSAuLi9yZXNldC9yZXNldC50eHQgZm9yIGRldGFpbHMuCistIHJlc2V0LW5hbWVzOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorIC0gZnVzZQorCitFeGFtcGxlOgorCisJZnVzZUA3MDAwZjgwMCB7CisJCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMjAtZWZ1c2UiOworCQlyZWcgPSA8MHg3MDAwZjgwMCAweDQwMD4sCisJCSAgICAgIDwweDcwMDAwMDAwIDB4NDAwPjsKKwkJY2xvY2tzID0gPCZ0ZWdyYV9jYXIgVEVHUkEyMF9DTEtfRlVTRT47CisJCWNsb2NrLW5hbWVzID0gImZ1c2UiOworCQlyZXNldHMgPSA8JnRlZ3JhX2NhciAzOT47CisJCXJlc2V0LW5hbWVzID0gImZ1c2UiOworCX07CisKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vOHh4eF9ncGlvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvLzh4eHhfZ3Bpby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk4Y2ZjOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvLzh4eHhfZ3Bpby50eHQKQEAgLTAsMCArMSw3NCBAQAorR1BJTyBjb250cm9sbGVycyBvbiBNUEM4eHh4IFNvQ3MKKworVGhpcyBpcyBmb3IgdGhlIG5vbi1RRS9DUE0vR1VUcyBHUElPIGNvbnRyb2xsZXJzIGFzIGZvdW5kIG9uCis4MzQ5LCA4NTcyLCA4NjEwIGFuZCBjb21wYXRpYmxlLgorCitFdmVyeSBHUElPIGNvbnRyb2xsZXIgbm9kZSBtdXN0IGhhdmUgI2dwaW8tY2VsbHMgcHJvcGVydHkgZGVmaW5lZCwKK3RoaXMgaW5mb3JtYXRpb24gd2lsbCBiZSB1c2VkIHRvIHRyYW5zbGF0ZSBncGlvLXNwZWNpZmllcnMuCitTZWUgYmluZGluZ3MvZ3Bpby9ncGlvLnR4dCBmb3IgZGV0YWlscyBvZiBob3cgdG8gc3BlY2lmeSBHUElPCitpbmZvcm1hdGlvbiBmb3IgZGV2aWNlcy4KKworVGhlIEdQSU8gbW9kdWxlIHVzdWFsbHkgaXMgY29ubmVjdGVkIHRvIHRoZSBTb0MncyBpbnRlcm5hbCBpbnRlcnJ1cHQKK2NvbnRyb2xsZXIsIHNlZSBiaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlcnJ1cHRzLnR4dCAodGhlCitpbnRlcnJ1cHQgY2xpZW50IG5vZGVzIHNlY3Rpb24pIGZvciBkZXRhaWxzIGhvdyB0byBzcGVjaWZ5IHRoaXMgR1BJTworbW9kdWxlJ3MgaW50ZXJydXB0LgorCitUaGUgR1BJTyBtb2R1bGUgbWF5IHNlcnZlIGFzIGFub3RoZXIgaW50ZXJydXB0IGNvbnRyb2xsZXIgKGNhc2NhZGVkIHRvCit0aGUgU29DJ3MgaW50ZXJuYWwgaW50ZXJydXB0IGNvbnRyb2xsZXIpLiAgU2VlIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlcgorbm9kZXMgc2VjdGlvbiBpbiBiaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlcnJ1cHRzLnR4dCBmb3IKK2RldGFpbHMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CQkiZnNsLDxjaGlwPi1ncGlvIiBmb2xsb3dlZCBieSAiZnNsLG1wYzgzNDktZ3BpbyIKKwkJCWZvciA4M3h4LCAiZnNsLG1wYzg1NzItZ3BpbyIgZm9yIDg1eHgsIG9yCisJCQkiZnNsLG1wYzg2MTAtZ3BpbyIgZm9yIDg2eHguCistICNncGlvLWNlbGxzOgkJU2hvdWxkIGJlIHR3by4gVGhlIGZpcnN0IGNlbGwgaXMgdGhlIHBpbiBudW1iZXIKKwkJCWFuZCB0aGUgc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IG9wdGlvbmFsCisJCQlwYXJhbWV0ZXJzIChjdXJyZW50bHkgdW51c2VkKS4KKy0gaW50ZXJydXB0LXBhcmVudDoJUGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyIHRoYXQKKwkJCXNlcnZpY2VzIGludGVycnVwdHMgZm9yIHRoaXMgZGV2aWNlLgorLSBpbnRlcnJ1cHRzOgkJSW50ZXJydXB0IG1hcHBpbmcgZm9yIEdQSU8gSVJRLgorLSBncGlvLWNvbnRyb2xsZXI6CU1hcmtzIHRoZSBwb3J0IGFzIEdQSU8gY29udHJvbGxlci4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXI6CUVtcHR5IGJvb2xlYW4gcHJvcGVydHkgd2hpY2ggbWFya3MgdGhlIEdQSU8KKwkJCW1vZHVsZSBhcyBhbiBJUlEgY29udHJvbGxlci4KKy0gI2ludGVycnVwdC1jZWxsczoJU2hvdWxkIGJlIHR3by4gIERlZmluZXMgdGhlIG51bWJlciBvZiBpbnRlZ2VyCisJCQljZWxscyByZXF1aXJlZCB0byBzcGVjaWZ5IGFuIGludGVycnVwdCB3aXRoaW4KKwkJCXRoaXMgaW50ZXJydXB0IGNvbnRyb2xsZXIuICBUaGUgZmlyc3QgY2VsbAorCQkJZGVmaW5lcyB0aGUgcGluIG51bWJlciwgdGhlIHNlY29uZCBjZWxsCisJCQlkZWZpbmVzIGFkZGl0aW9uYWwgZmxhZ3MgKHRyaWdnZXIgdHlwZSwKKwkJCXRyaWdnZXIgcG9sYXJpdHkpLiAgTm90ZSB0aGF0IHRoZSBhdmFpbGFibGUKKwkJCXNldCBvZiB0cmlnZ2VyIGNvbmRpdGlvbnMgc3VwcG9ydGVkIGJ5IHRoZQorCQkJR1BJTyBtb2R1bGUgZGVwZW5kcyBvbiB0aGUgYWN0dWFsIFNvQy4KKworRXhhbXBsZSBvZiBncGlvLWNvbnRyb2xsZXIgbm9kZXMgZm9yIGEgTVBDODM0NyBTb0M6CisKKwlncGlvMTogZ3Bpby1jb250cm9sbGVyQGMwMCB7CisJCSNncGlvLWNlbGxzID0gPDI+OworCQljb21wYXRpYmxlID0gImZzbCxtcGM4MzQ3LWdwaW8iLCAiZnNsLG1wYzgzNDktZ3BpbyI7CisJCXJlZyA9IDwweGMwMCAweDEwMD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmlwaWM+OworCQlpbnRlcnJ1cHRzID0gPDc0IDB4OD47CisJCWdwaW8tY29udHJvbGxlcjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJfTsKKworCWdwaW8yOiBncGlvLWNvbnRyb2xsZXJAZDAwIHsKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzgzNDctZ3BpbyIsICJmc2wsbXBjODM0OS1ncGlvIjsKKwkJcmVnID0gPDB4ZDAwIDB4MTAwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmaXBpYz47CisJCWludGVycnVwdHMgPSA8NzUgMHg4PjsKKwkJZ3Bpby1jb250cm9sbGVyOworCX07CisKK0V4YW1wbGUgb2YgYSBwZXJpcGhlcmFsIHVzaW5nIHRoZSBHUElPIG1vZHVsZSBhcyBhbiBJUlEgY29udHJvbGxlcjoKKworCWZ1bmt5ZnBnYUAwIHsKKwkJY29tcGF0aWJsZSA9ICJmdW5reS1mcGdhIjsKKwkJLi4uCisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8xPjsKKwkJaW50ZXJydXB0cyA9IDw0IDM+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9hYmlsaXMsdGIxMHgtZ3Bpby50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9hYmlsaXMsdGIxMHgtZ3Bpby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA2MTFhYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2FiaWxpcyx0YjEweC1ncGlvLnR4dApAQCAtMCwwICsxLDM2IEBACisqIEFiaWxpcyBUQjEweCBHUElPIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgUHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJhYmlsaXMsdGIxMHgtZ3BpbyIKKy0gcmVnOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorLSBncGlvLWNvbnRyb2xsZXI6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIGdwaW8gY29udHJvbGxlci4KKy0gI2dwaW8tY2VsbHM6IFNob3VsZCBiZSA8Mj4uIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBwaW4gbnVtYmVyIGFuZCB0aGUKKyAgc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IG9wdGlvbmFsIHBhcmFtZXRlcnM6CisgICAtIGJpdCAwIHNwZWNpZmllcyBwb2xhcml0eSAoMCBmb3Igbm9ybWFsLCAxIGZvciBpbnZlcnRlZCkuCistIGFiaWxpcyxuZ3BpbzogdGhlIG51bWJlciBvZiBHUElPIHBpbnMgdGhpcyBkcml2ZXIgY29udHJvbHMuCisKK09wdGlvbmFsIFByb3BlcnRpZXM6CistIGludGVycnVwdC1jb250cm9sbGVyOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIuCistICNpbnRlcnJ1cHQtY2VsbHM6IFNob3VsZCBiZSA8MT4uIEludGVycnVwdHMgYXJlIHRyaWdnZXJlZCBvbiBib3RoIGVkZ2VzLgorLSBpbnRlcnJ1cHRzOiBEZWZpbmVzIHRoZSBpbnRlcnJ1cHQgbGluZSBjb25uZWN0aW5nIHRoaXMgR1BJTyBjb250cm9sbGVyIHRvCisgIGl0cyBwYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIuCistIGludGVycnVwdC1wYXJlbnQ6IERlZmluZXMgdGhlIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlci4KKworR1BJTyByYW5nZXMgYXJlIHNwZWNpZmllZCBhcyBkZXNjcmliZWQgaW4KK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8udHh0CisKK0V4YW1wbGU6CisKKwlncGlvYTogZ3Bpb0BGRjE0MDAwMCB7CisJCWNvbXBhdGlibGUgPSAiYWJpbGlzLHRiMTB4LWdwaW8iOworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwxPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmdGIxMHhfaWN0bD47CisJCWludGVycnVwdHMgPSA8MjcgMj47CisJCXJlZyA9IDwweEZGMTQwMDAwIDB4MTAwMD47CisJCWdwaW8tY29udHJvbGxlcjsKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCWFiaWxpcyxuZ3BpbyA9IDwzPjsKKwkJZ3Bpby1yYW5nZXMgPSA8JmlvbXV4IDAgMCAwPjsKKwkJZ3Bpby1yYW5nZXMtZ3JvdXAtbmFtZXMgPSAiZ3Bpb2FfcGlucyI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2JyY20sYnJjbXN0Yi1ncGlvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2JyY20sYnJjbXN0Yi1ncGlvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDA1YjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vYnJjbSxicmNtc3RiLWdwaW8udHh0CkBAIC0wLDAgKzEsODYgQEAKK0Jyb2FkY29tIFNUQiAiVVBHIEdJTyIgR1BJTyBjb250cm9sbGVyCisKK1RoZSBjb250cm9sbGVyJ3MgcmVnaXN0ZXJzIGFyZSBvcmdhbml6ZWQgYXMgc2V0cyBvZiBlaWdodCAzMi1iaXQKK3JlZ2lzdGVycyB3aXRoIGVhY2ggc2V0IGNvbnRyb2xsaW5nIGEgYmFuayBvZiB1cCB0byAzMiBwaW5zLiAgQSBzaW5nbGUKK2ludGVycnVwdCBpcyBzaGFyZWQgZm9yIGFsbCBvZiB0aGUgYmFua3MgaGFuZGxlZCBieSB0aGUgY29udHJvbGxlci4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOgorICAgIE11c3QgYmUgImJyY20sYnJjbXN0Yi1ncGlvIgorCistIHJlZzoKKyAgICBEZWZpbmUgdGhlIGJhc2UgYW5kIHJhbmdlIG9mIHRoZSBJL08gYWRkcmVzcyBzcGFjZSBjb250YWluaW5nCisgICAgdGhlIGJyY21zdGIgR1BJTyBjb250cm9sbGVyIHJlZ2lzdGVycworCistICNncGlvLWNlbGxzOgorICAgIFNob3VsZCBiZSA8Mj4uICBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgcGluIG51bWJlciAod2l0aGluIHRoZSBjb250cm9sbGVyJ3MKKyAgICBwaW4gc3BhY2UpLCBhbmQgdGhlIHNlY29uZCBpcyB1c2VkIGZvciB0aGUgZm9sbG93aW5nOgorICAgIGJpdFswXTogcG9sYXJpdHkgKDAgZm9yIGFjdGl2ZS1oaWdoLCAxIGZvciBhY3RpdmUtbG93KQorCistIGdwaW8tY29udHJvbGxlcjoKKyAgICBTcGVjaWZpZXMgdGhhdCB0aGUgbm9kZSBpcyBhIEdQSU8gY29udHJvbGxlci4KKworLSBicmNtLGdwaW8tYmFuay13aWR0aHM6CisgICAgTnVtYmVyIG9mIEdQSU8gbGluZXMgZm9yIGVhY2ggYmFuay4gIE51bWJlciBvZiBlbGVtZW50cyBtdXN0CisgICAgY29ycmVzcG9uZCB0byBudW1iZXIgb2YgYmFua3Mgc3VnZ2VzdGVkIGJ5IHRoZSAncmVnJyBwcm9wZXJ0eS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworLSBpbnRlcnJ1cHRzOgorICAgIFRoZSBpbnRlcnJ1cHQgc2hhcmVkIGJ5IGFsbCBHUElPIGxpbmVzIGZvciB0aGlzIGNvbnRyb2xsZXIuCisKKy0gaW50ZXJydXB0LXBhcmVudDoKKyAgICBwaGFuZGxlIG9mIHRoZSBwYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIKKworLSBpbnRlcnJ1cHRzLWV4dGVuZGVkOgorICAgIEFsdGVybmF0ZSBmb3JtIG9mIHNwZWNpZnlpbmcgaW50ZXJydXB0cyBhbmQgcGFyZW50cyB0aGF0IGFsbG93cyBmb3IKKyAgICBtdWx0aXBsZSBwYXJlbnRzLiAgVGhpcyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgJ2ludGVycnVwdHMnIGFuZAorICAgICdpbnRlcnJ1cHQtcGFyZW50Jy4gIFdha2V1cC1jYXBhYmxlIEdQSU8gY29udHJvbGxlcnMgb2Z0ZW4gcm91dGUgdGhlaXIKKyAgICB3YWtldXAgaW50ZXJydXB0IGxpbmVzIHRocm91Z2ggYSBkaWZmZXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIgdGhhbiB0aGUKKyAgICBwcmltYXJ5IGludGVycnVwdCBsaW5lLCBtYWtpbmcgdGhpcyBwcm9wZXJ0eSBuZWNlc3NhcnkuCisKKy0gI2ludGVycnVwdC1jZWxsczoKKyAgICBTaG91bGQgYmUgPDI+LiAgVGhlIGZpcnN0IGNlbGwgaXMgdGhlIEdQSU8gbnVtYmVyLCB0aGUgc2Vjb25kIHNob3VsZCBzcGVjaWZ5CisgICAgZmxhZ3MuICBUaGUgZm9sbG93aW5nIHN1YnNldCBvZiBmbGFncyBpcyBzdXBwb3J0ZWQ6CisgICAgLSBiaXRzWzM6MF0gdHJpZ2dlciB0eXBlIGFuZCBsZXZlbCBmbGFncworICAgICAgICAxID0gbG93LXRvLWhpZ2ggZWRnZSB0cmlnZ2VyZWQKKyAgICAgICAgMiA9IGhpZ2gtdG8tbG93IGVkZ2UgdHJpZ2dlcmVkCisgICAgICAgIDQgPSBhY3RpdmUgaGlnaCBsZXZlbC1zZW5zaXRpdmUKKyAgICAgICAgOCA9IGFjdGl2ZSBsb3cgbGV2ZWwtc2Vuc2l0aXZlCisgICAgICBWYWxpZCBjb21iaW5hdGlvbnMgYXJlIDEsIDIsIDMsIDQsIDguCisgICAgU2VlIGFsc28gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2ludGVycnVwdHMudHh0CisKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXI6CisgICAgTWFya3MgdGhlIGRldmljZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyCisKKy0gd2FrZXVwLXNvdXJjZToKKyAgICBHUElPcyBmb3IgdGhpcyBjb250cm9sbGVyIGNhbiBiZSB1c2VkIGFzIGEgd2FrZXVwIHNvdXJjZQorCitFeGFtcGxlOgorCXVwZ19naW86IGdwaW9AZjA0MGE3MDAgeworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKwkJY29tcGF0aWJsZSA9ICJicmNtLGJjbTc0NDUtZ3BpbyIsICJicmNtLGJyY21zdGItZ3BpbyI7CisJCWdwaW8tY29udHJvbGxlcjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCXJlZyA9IDwweGYwNDBhNzAwIDB4ODA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpcnEwX2ludGM+OworCQlpbnRlcnJ1cHRzID0gPDB4Nj47CisJCWJyY20sZ3Bpby1iYW5rLXdpZHRocyA9IDwzMiAzMiAzMiAyND47CisJfTsKKworCXVwZ19naW9fYW9uOiBncGlvQGYwNDE3MmMwIHsKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJCWNvbXBhdGlibGUgPSAiYnJjbSxiY203NDQ1LWdwaW8iLCAiYnJjbSxicmNtc3RiLWdwaW8iOworCQlncGlvLWNvbnRyb2xsZXI7CisJCWludGVycnVwdC1jb250cm9sbGVyOworCQlyZWcgPSA8MHhmMDQxNzJjMCAweDQwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmaXJxMF9hb25faW50Yz47CisJCWludGVycnVwdHMgPSA8MHg2PjsKKwkJaW50ZXJydXB0cy1leHRlbmRlZCA9IDwmaXJxMF9hb25faW50YyAweDY+LAorCQkJPCZhb25fcG1fbDJfaW50YyAweDU+OworCQl3YWtldXAtc291cmNlOworCQlicmNtLGdwaW8tYmFuay13aWR0aHMgPSA8MTggND47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2JyY20sa29uYS1ncGlvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2JyY20sa29uYS1ncGlvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTYzYmM5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vYnJjbSxrb25hLWdwaW8udHh0CkBAIC0wLDAgKzEsNTIgQEAKK0Jyb2FkY29tIEtvbmEgRmFtaWx5IEdQSU8KKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBHUElPIGRyaXZlciBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgQnJvYWRjb20gU29DczoKKyAgQkNNMTExMzAsIEJDTTExMTQwLCBCQ00xMTM1MSwgQkNNMjgxNDUsIEJDTTI4MTU1CisKK1RoZSBCcm9hZGNvbSBHUElPIENvbnRyb2xsZXIgSVAgY2FuIGJlIGNvbmZpZ3VyZWQgcHJpb3IgdG8gc3ludGhlc2lzIHRvCitzdXBwb3J0IHVwIHRvIDggYmFua3Mgb2YgMzIgR1BJT3Mgd2hlcmUgZWFjaCBiYW5rIGhhcyBpdHMgb3duIElSUS4gVGhlCitHUElPIGNvbnRyb2xsZXIgb25seSBzdXBwb3J0cyBlZGdlLCBub3QgbGV2ZWwsIHRyaWdnZXJpbmcgb2YgaW50ZXJydXB0cy4KKworUmVxdWlyZWQgcHJvcGVydGllcworLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGNvbXBhdGlibGU6ICJicmNtLGJjbTExMzUxLWdwaW8iLCAiYnJjbSxrb25hLWdwaW8iCistIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlcnMuCistIGludGVycnVwdHM6IFRoZSBpbnRlcnJ1cHQgb3V0cHV0cyBmcm9tIHRoZSBjb250cm9sbGVyLiBUaGVyZSBpcyBvbmUgR1BJTworICBpbnRlcnJ1cHQgcGVyIEdQSU8gYmFuay4gVGhlIG51bWJlciBvZiBpbnRlcnJ1cHRzIGxpc3RlZCBkZXBlbmRzIG9uIHRoZQorICBudW1iZXIgb2YgR1BJTyBiYW5rcyBvbiB0aGUgU29DLiBUaGUgaW50ZXJydXB0cyBtdXN0IGJlIG9yZGVyZWQgYnkgYmFuaywKKyAgc3RhcnRpbmcgd2l0aCBiYW5rIDAuIFRoZXJlIGlzIGFsd2F5cyBhIDE6MSBtYXBwaW5nIGJldHdlZW4gYmFua3MgYW5kCisgIElSUXMuCistICNncGlvLWNlbGxzOiBTaG91bGQgYmUgPDI+LiBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgcGluIG51bWJlciwgdGhlIHNlY29uZAorICBjZWxsIGlzIHVzZWQgdG8gc3BlY2lmeSBvcHRpb25hbCBwYXJhbWV0ZXJzOgorICAtIGJpdCAwIHNwZWNpZmllcyBwb2xhcml0eSAoMCBmb3Igbm9ybWFsLCAxIGZvciBpbnZlcnRlZCkKKyAgU2VlIGFsc28gImdwaW8tc3BlY2lmaWVyIiBpbiAuLi4vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8udHh0LgorLSAjaW50ZXJydXB0LWNlbGxzOiBTaG91bGQgYmUgPDI+LiBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgR1BJTyBudW1iZXIuIFRoZQorICBzZWNvbmQgY2VsbCBpcyB1c2VkIHRvIHNwZWNpZnkgZmxhZ3MuIFRoZSBmb2xsb3dpbmcgc3Vic2V0IG9mIGZsYWdzIGlzCisgIHN1cHBvcnRlZDoKKyAgLSB0cmlnZ2VyIHR5cGUgKGJpdHNbMTowXSk6CisgICAgICAxID0gbG93LXRvLWhpZ2ggZWRnZSB0cmlnZ2VyZWQuCisgICAgICAyID0gaGlnaC10by1sb3cgZWRnZSB0cmlnZ2VyZWQuCisgICAgICAzID0gbG93LXRvLWhpZ2ggb3IgaGlnaC10by1sb3cgZWRnZSB0cmlnZ2VyZWQKKyAgICAgIFZhbGlkIHZhbHVlcyBhcmUgMSwgMiwgMworICBTZWUgYWxzbyAuLi4vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlcnJ1cHRzLnR4dC4KKy0gZ3Bpby1jb250cm9sbGVyOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYSBHUElPIGNvbnRyb2xsZXIuCistIGludGVycnVwdC1jb250cm9sbGVyOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIuCisKK0V4YW1wbGU6CisJZ3BpbzogZ3Bpb0AzNTAwMzAwMCB7CisJCWNvbXBhdGlibGUgPSAiYnJjbSxiY20xMTM1MS1ncGlvIiwgImJyY20sa29uYS1ncGlvIjsKKwkJcmVnID0gPDB4MzUwMDMwMDAgMHg4MDA+OworCQlpbnRlcnJ1cHRzID0KKwkJICAgICAgIDxHSUNfU1BJIDEwNiBJUlFfVFlQRV9MRVZFTF9ISUdICisJCQlHSUNfU1BJIDExNSBJUlFfVFlQRV9MRVZFTF9ISUdICisJCQlHSUNfU1BJIDExNCBJUlFfVFlQRV9MRVZFTF9ISUdICisJCQlHSUNfU1BJIDExMyBJUlFfVFlQRV9MRVZFTF9ISUdICisJCQlHSUNfU1BJIDExMiBJUlFfVFlQRV9MRVZFTF9ISUdICisJCQlHSUNfU1BJIDExMSBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJCWdwaW8tY29udHJvbGxlcjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2Nhdml1bS1vY3Rlb24tZ3Bpby50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9jYXZpdW0tb2N0ZW9uLWdwaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNmRjZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9jYXZpdW0tb2N0ZW9uLWdwaW8udHh0CkBAIC0wLDAgKzEsNDkgQEAKKyogR2VuZXJhbCBQdXJwb3NlIElucHV0IE91dHB1dCAoR1BJTykgYnVzLgorCitQcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiY2F2aXVtLG9jdGVvbi0zODYwLWdwaW8iCisKKyAgQ29tcGF0aWJpbGl0eSB3aXRoIGFsbCBjbjNYWFgsIGNuNVhYWCBhbmQgY242WFhYIFNPQ3MuCisKKy0gcmVnOiBUaGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBHUElPIHVuaXQncyByZWdpc3RlciBiYW5rLgorCistIGdwaW8tY29udHJvbGxlcjogVGhpcyBpcyBhIEdQSU8gY29udHJvbGxlci4KKworLSAjZ3Bpby1jZWxsczogTXVzdCBiZSA8Mj4uICBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgR1BJTyBwaW4uCisKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXI6IFRoZSBHUElPIGNvbnRyb2xsZXIgaXMgYWxzbyBhbiBpbnRlcnJ1cHQKKyAgY29udHJvbGxlciwgbWFueSBvZiBpdHMgcGlucyBtYXkgYmUgY29uZmlndXJlZCBhcyBhbiBpbnRlcnJ1cHQKKyAgc291cmNlLgorCistICNpbnRlcnJ1cHQtY2VsbHM6IE11c3QgYmUgPDI+LiAgVGhlIGZpcnN0IGNlbGwgaXMgdGhlIEdQSU8gcGluCisgICBjb25uZWN0ZWQgdG8gdGhlIGludGVycnVwdCBzb3VyY2UuICBUaGUgc2Vjb25kIGNlbGwgaXMgdGhlIGludGVycnVwdAorICAgdHJpZ2dlcmluZyBwcm90b2NvbCBhbmQgbWF5IGhhdmUgb25lIG9mIGZvdXIgdmFsdWVzOgorICAgMSAtIGVkZ2UgdHJpZ2dlcmVkIG9uIHRoZSByaXNpbmcgZWRnZS4KKyAgIDIgLSBlZGdlIHRyaWdnZXJlZCBvbiB0aGUgZmFsbGluZyBlZGdlCisgICA0IC0gbGV2ZWwgdHJpZ2dlcmVkIGFjdGl2ZSBoaWdoLgorICAgOCAtIGxldmVsIHRyaWdnZXJlZCBhY3RpdmUgbG93LgorCistIGludGVycnVwdHM6IEludGVycnVwdCByb3V0aW5nIGZvciBlYWNoIHBpbi4KKworRXhhbXBsZToKKworCWdwaW8tY29udHJvbGxlckAxMDcwMDAwMDAwODAwIHsKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCWNvbXBhdGlibGUgPSAiY2F2aXVtLG9jdGVvbi0zODYwLWdwaW8iOworCQlyZWcgPSA8MHgxMDcwMCAweDAwMDAwODAwIDB4MCAweDEwMD47CisJCWdwaW8tY29udHJvbGxlcjsKKwkJLyogSW50ZXJydXB0cyBhcmUgc3BlY2lmaWVkIGJ5IHR3byBwYXJ0czoKKwkJICogMSkgR1BJTyBwaW4gbnVtYmVyICgwLi4xNSkKKwkJICogMikgVHJpZ2dlcmluZyAoMSAtIGVkZ2UgcmlzaW5nCisJCSAqCQkgIDIgLSBlZGdlIGZhbGxpbmcKKwkJICoJCSAgNCAtIGxldmVsIGFjdGl2ZSBoaWdoCisJCSAqCQkgIDggLSBsZXZlbCBhY3RpdmUgbG93KQorCQkgKi8KKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJCS8qIFRoZSBHUElPIHBpbiBjb25uZWN0IHRvIDE2IGNvbnNlY3V0aXZlIENVSSBiaXRzICovCisJCWludGVycnVwdHMgPSA8MCAxNj4sIDwwIDE3PiwgPDAgMTg+LCA8MCAxOT4sCisJCQkgICAgIDwwIDIwPiwgPDAgMjE+LCA8MCAyMj4sIDwwIDIzPiwKKwkJCSAgICAgPDAgMjQ+LCA8MCAyNT4sIDwwIDI2PiwgPDAgMjc+LAorCQkJICAgICA8MCAyOD4sIDwwIDI5PiwgPDAgMzA+LCA8MCAzMT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2NpcnJ1cyxjbHBzNzExeC1tY3RybC1ncGlvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2NpcnJ1cyxjbHBzNzExeC1tY3RybC1ncGlvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGFlOWY4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vY2lycnVzLGNscHM3MTF4LW1jdHJsLWdwaW8udHh0CkBAIC0wLDAgKzEsMTcgQEAKKyogQVJNIENpcnJ1cyBMb2dpYyBDTFBTNzExWCBTWVNGTEcxIE1DVFJMIEdQSU9zCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBjb250YWluICJjaXJydXMsY2xwczcxMXgtbWN0cmwtZ3BpbyIuCistIGdwaW8tY29udHJvbGxlcjogTWFya3MgdGhlIGRldmljZSBub2RlIGFzIGEgZ3BpbyBjb250cm9sbGVyLgorLSAjZ3Bpby1jZWxsczogU2hvdWxkIGJlIHR3by4gVGhlIGZpcnN0IGNlbGwgaXMgdGhlIHBpbiBudW1iZXIgYW5kCisgIHRoZSBzZWNvbmQgY2VsbCBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGdwaW8gcG9sYXJpdHk6CisgICAgMCA9IEFjdGl2ZSBoaWdoLAorICAgIDEgPSBBY3RpdmUgbG93LgorCitFeGFtcGxlOgorCXN5c2dwaW86IHN5c2dwaW8geworCQljb21wYXRpYmxlID0gImNpcnJ1cyxlcDczMTItbWN0cmwtZ3BpbyIsCisJCQkgICAgICJjaXJydXMsY2xwczcxMXgtbWN0cmwtZ3BpbyI7CisJCWdwaW8tY29udHJvbGxlcjsKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2ZzbC1pbXgtZ3Bpby50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9mc2wtaW14LWdwaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiZDIyZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9mc2wtaW14LWdwaW8udHh0CkBAIC0wLDAgKzEsMzIgQEAKKyogRnJlZXNjYWxlIGkuTVgvTVhDIEdQSU8gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJmc2wsPHNvYz4tZ3BpbyIKKy0gcmVnIDogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKy0gaW50ZXJydXB0cyA6IFNob3VsZCBiZSB0aGUgcG9ydCBpbnRlcnJ1cHQgc2hhcmVkIGJ5IGFsbCAzMiBwaW5zLCBpZgorICBvbmUgbnVtYmVyLiAgSWYgdHdvIG51bWJlcnMsIHRoZSBmaXJzdCBvbmUgaXMgdGhlIGludGVycnVwdCBzaGFyZWQKKyAgYnkgbG93IDE2IHBpbnMgYW5kIHRoZSBzZWNvbmQgb25lIGlzIGZvciBoaWdoIDE2IHBpbnMuCistIGdwaW8tY29udHJvbGxlciA6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIGdwaW8gY29udHJvbGxlci4KKy0gI2dwaW8tY2VsbHMgOiBTaG91bGQgYmUgdHdvLiAgVGhlIGZpcnN0IGNlbGwgaXMgdGhlIHBpbiBudW1iZXIgYW5kCisgIHRoZSBzZWNvbmQgY2VsbCBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGdwaW8gcG9sYXJpdHk6CisgICAgICAwID0gYWN0aXZlIGhpZ2gKKyAgICAgIDEgPSBhY3RpdmUgbG93CistIGludGVycnVwdC1jb250cm9sbGVyOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIuCistICNpbnRlcnJ1cHQtY2VsbHMgOiBTaG91bGQgYmUgMi4gIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBHUElPIG51bWJlci4KKyAgVGhlIHNlY29uZCBjZWxsIGJpdHNbMzowXSBpcyB1c2VkIHRvIHNwZWNpZnkgdHJpZ2dlciB0eXBlIGFuZCBsZXZlbCBmbGFnczoKKyAgICAgIDEgPSBsb3ctdG8taGlnaCBlZGdlIHRyaWdnZXJlZC4KKyAgICAgIDIgPSBoaWdoLXRvLWxvdyBlZGdlIHRyaWdnZXJlZC4KKyAgICAgIDQgPSBhY3RpdmUgaGlnaCBsZXZlbC1zZW5zaXRpdmUuCisgICAgICA4ID0gYWN0aXZlIGxvdyBsZXZlbC1zZW5zaXRpdmUuCisKK0V4YW1wbGU6CisKK2dwaW8wOiBncGlvQDczZjg0MDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxpbXg1MS1ncGlvIiwgImZzbCxpbXgzNS1ncGlvIjsKKwlyZWcgPSA8MHg3M2Y4NDAwMCAweDQwMDA+OworCWludGVycnVwdHMgPSA8NTAgNTE+OworCWdwaW8tY29udHJvbGxlcjsKKwkjZ3Bpby1jZWxscyA9IDwyPjsKKwlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2Z1aml0c3UsbWI4NnM3MC1ncGlvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2Z1aml0c3UsbWI4NnM3MC1ncGlvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWYzNTNmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZnVqaXRzdSxtYjg2czcwLWdwaW8udHh0CkBAIC0wLDAgKzEsMjAgQEAKK0Z1aml0c3UgTUI4NlM3eCBHUElPIENvbnRyb2xsZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJmdWppdHN1LG1iODZzNzAtZ3BpbyIKKy0gcmVnOiBCYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiByZWdpc3RlciBzcGFjZQorLSBjbG9ja3M6IFNwZWNpZnkgdGhlIGNsb2NrCistIGdwaW8tY29udHJvbGxlcjogTWFya3MgdGhlIGRldmljZSBub2RlIGFzIGEgZ3BpbyBjb250cm9sbGVyLgorLSAjZ3Bpby1jZWxsczogU2hvdWxkIGJlIDwyPi4gVGhlIGZpcnN0IGNlbGwgaXMgdGhlIHBpbiBudW1iZXIgYW5kIHRoZQorICBzZWNvbmQgY2VsbCBpcyB1c2VkIHRvIHNwZWNpZnkgb3B0aW9uYWwgcGFyYW1ldGVyczoKKyAgIC0gYml0IDAgc3BlY2lmaWVzIHBvbGFyaXR5ICgwIGZvciBub3JtYWwsIDEgZm9yIGludmVydGVkKS4KKworRXhhbXBsZXM6CisJZ3BpbzA6IGdwaW9AMzEwMDAwMDAgeworCQljb21wYXRpYmxlID0gImZ1aml0c3UsbWI4NnM3MC1ncGlvIjsKKwkJcmVnID0gPDAgMHgzMTAwMDAwMCAweDEwMDAwPjsKKwkJZ3Bpby1jb250cm9sbGVyOworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJY2xvY2tzID0gPCZjbGsgMCAyIDE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLTc0eDE2NC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLTc0eDE2NC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MyNjA4MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tNzR4MTY0LnR4dApAQCAtMCwwICsxLDIyIEBACisqIEdlbmVyaWMgOC1iaXRzIHNoaWZ0IHJlZ2lzdGVyIEdQSU8gZHJpdmVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImZhaXJjaGlsZCw3NGhjNTk1IgorLSByZWcgOiBjaGlwIHNlbGVjdCBudW1iZXIKKy0gZ3Bpby1jb250cm9sbGVyIDogTWFya3MgdGhlIGRldmljZSBub2RlIGFzIGEgZ3BpbyBjb250cm9sbGVyLgorLSAjZ3Bpby1jZWxscyA6IFNob3VsZCBiZSB0d28uICBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgcGluIG51bWJlciBhbmQKKyAgdGhlIHNlY29uZCBjZWxsIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgZ3BpbyBwb2xhcml0eToKKyAgICAgIDAgPSBhY3RpdmUgaGlnaAorICAgICAgMSA9IGFjdGl2ZSBsb3cKKy0gcmVnaXN0ZXJzLW51bWJlcjogTnVtYmVyIG9mIGRhaXN5LWNoYWluZWQgc2hpZnQgcmVnaXN0ZXJzCisKK0V4YW1wbGU6CisKK2dwaW81OiBncGlvNUAwIHsKKwljb21wYXRpYmxlID0gImZhaXJjaGlsZCw3NGhjNTk1IjsKKwlyZWcgPSA8MD47CisJZ3Bpby1jb250cm9sbGVyOworCSNncGlvLWNlbGxzID0gPDI+OworCXJlZ2lzdGVycy1udW1iZXIgPSA8ND47CisJc3BpLW1heC1mcmVxdWVuY3kgPSA8MTAwMDAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLTc0eHgtbW1pby50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLTc0eHgtbW1pby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JiMWE5ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tNzR4eC1tbWlvLnR4dApAQCAtMCwwICsxLDMwIEBACisqIDc0WFggTU1JTyBHUElPIGRyaXZlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgY29udGFpbiBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKyAgICJ0aSw3NDFnMTI1IjogZm9yIDc0MUcxMjUgKDEtYml0IElucHV0KSwKKyAgICJ0aSw3NDFnMTc0IjogZm9yIDc0MUc3NCAoMS1iaXQgT3V0cHV0KSwKKyAgICJ0aSw3NDJnMTI1IjogZm9yIDc0MkcxMjUgKDItYml0IElucHV0KSwKKyAgICJ0aSw3NDc0IiAgIDogZm9yIDc0NzQgKDItYml0IE91dHB1dCksCisgICAidGksNzQxMjUiICA6IGZvciA3NDEyNSAoNC1iaXQgSW5wdXQpLAorICAgInRpLDc0MTc1IiAgOiBmb3IgNzQxNzUgKDQtYml0IE91dHB1dCksCisgICAidGksNzQzNjUiICA6IGZvciA3NDM2NSAoNi1iaXQgSW5wdXQpLAorICAgInRpLDc0MTc0IiAgOiBmb3IgNzQxNzQgKDYtYml0IE91dHB1dCksCisgICAidGksNzQyNDQiICA6IGZvciA3NDI0NCAoOC1iaXQgSW5wdXQpLAorICAgInRpLDc0MjczIiAgOiBmb3IgNzQyNzMgKDgtYml0IE91dHB1dCksCisgICAidGksNzQxNjI0IiA6IGZvciA3NDE2MjQgKDE2LWJpdCBJbnB1dCksCisgICAidGksNzQxNjM3NCI6IGZvciA3NDE2Mzc0ICgxNi1iaXQgT3V0cHV0KS4KKy0gcmVnOiBQaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCB3aGVyZSBJQyByZXNpZGVzLgorLSBncGlvLWNvbnRyb2xsZXI6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIGdwaW8gY29udHJvbGxlci4KKy0gI2dwaW8tY2VsbHM6IFNob3VsZCBiZSB0d28uIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBwaW4gbnVtYmVyIGFuZAorICAgdGhlIHNlY29uZCBjZWxsIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgR1BJTyBwb2xhcml0eToKKyAgICAwID0gQWN0aXZlIEhpZ2gsCisgICAgMSA9IEFjdGl2ZSBMb3cuCisKK0V4YW1wbGU6CisJY3RybDogZ3Bpb0AzMDAwODAwNCB7CisJCWNvbXBhdGlibGUgPSAidGksNzQxNzQiOworCQlyZWcgPSA8MHgzMDAwODAwNCAweDE+OworCQlncGlvLWNvbnRyb2xsZXI7CisJCSNncGlvLWNlbGxzID0gPDI+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLWFkbnAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1hZG5wLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjY2YjI3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1hZG5wLnR4dApAQCAtMCwwICsxLDM0IEBACitBdmlvbmljIERlc2lnbiBOLWJpdCBHUElPIGV4cGFuZGVyIGJpbmRpbmdzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiYWQsZ3Bpby1hZG5wIgorLSByZWc6IFRoZSBJMkMgc2xhdmUgYWRkcmVzcyBmb3IgdGhpcyBkZXZpY2UuCistIGludGVycnVwdC1wYXJlbnQ6IHBoYW5kbGUgb2YgdGhlIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlci4KKy0gaW50ZXJydXB0czogSW50ZXJydXB0IHNwZWNpZmllciBmb3IgdGhlIGNvbnRyb2xsZXJzIGludGVycnVwdC4KKy0gI2dwaW8tY2VsbHM6IFNob3VsZCBiZSAyLiBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgR1BJTyBudW1iZXIgYW5kIHRoZQorICBzZWNvbmQgY2VsbCBpcyB1c2VkIHRvIHNwZWNpZnkgb3B0aW9uYWwgcGFyYW1ldGVyczoKKyAgLSBiaXQgMDogcG9sYXJpdHkgKDA6IG5vcm1hbCwgMTogaW52ZXJ0ZWQpCistIGdwaW8tY29udHJvbGxlcjogTWFya3MgdGhlIGRldmljZSBhcyBhIEdQSU8gY29udHJvbGxlcgorLSBuci1ncGlvczogVGhlIG51bWJlciBvZiBwaW5zIHN1cHBvcnRlZCBieSB0aGUgY29udHJvbGxlci4KKworVGhlIEdQSU8gZXhwYW5kZXIgY2FuIG9wdGlvbmFsbHkgYmUgdXNlZCBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlciwgaW4KK3doaWNoIGNhc2UgaXQgdXNlcyB0aGUgZGVmYXVsdCB0d28gY2VsbCBzcGVjaWZpZXIgYXMgZGVzY3JpYmVkIGluCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaW50ZXJydXB0cy50eHQuCisKK0V4YW1wbGU6CisKKwlncGlvZXh0OiBncGlvLWNvbnRyb2xsZXJANDEgeworCQljb21wYXRpYmxlID0gImFkLGdwaW8tYWRucCI7CisJCXJlZyA9IDwweDQxPjsKKworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvPjsKKwkJaW50ZXJydXB0cyA9IDwxNjAgMT47CisKKwkJZ3Bpby1jb250cm9sbGVyOworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKworCQluci1ncGlvcyA9IDw2ND47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tYWx0ZXJhLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tYWx0ZXJhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmY1MDE0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1hbHRlcmEudHh0CkBAIC0wLDAgKzEsNDMgQEAKK0FsdGVyYSBHUElPIGNvbnRyb2xsZXIgYmluZGluZ3MKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZToKKyAgLSAiYWx0cixwaW8tMS4wIgorLSByZWc6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBjb250cm9sbGVyJ3MgcmVnaXN0ZXJzLgorLSAjZ3Bpby1jZWxscyA6IFNob3VsZCBiZSAyCisgIC0gVGhlIGZpcnN0IGNlbGwgaXMgdGhlIGdwaW8gb2Zmc2V0IG51bWJlci4KKyAgLSBUaGUgc2Vjb25kIGNlbGwgaXMgcmVzZXJ2ZWQgYW5kIGlzIGN1cnJlbnRseSB1bnVzZWQuCistIGdwaW8tY29udHJvbGxlciA6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIEdQSU8gY29udHJvbGxlci4KKy0gaW50ZXJydXB0LWNvbnRyb2xsZXI6IE1hcmsgdGhlIGRldmljZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyCistICNpbnRlcnJ1cHQtY2VsbHMgOiBTaG91bGQgYmUgMS4gVGhlIGludGVycnVwdCB0eXBlIGlzIGZpeGVkIGluIHRoZSBoYXJkd2FyZS4KKyAgLSBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgR1BJTyBvZmZzZXQgbnVtYmVyIHdpdGhpbiB0aGUgR1BJTyBjb250cm9sbGVyLgorLSBpbnRlcnJ1cHRzOiBTcGVjaWZ5IHRoZSBpbnRlcnJ1cHQuCistIGFsdHIsaW50ZXJydXB0LXRyaWdnZXI6IFNwZWNpZmllcyB0aGUgaW50ZXJydXB0IHRyaWdnZXIgdHlwZSB0aGUgR1BJTworICBoYXJkd2FyZSBpcyBzeW50aGVzaXplZC4gVGhpcyBmaWVsZCBpcyByZXF1aXJlZCBpZiB0aGUgQWx0ZXJhIEdQSU8gY29udHJvbGxlcgorICB1c2VkIGhhcyBJUlEgZW5hYmxlZCBhcyB0aGUgaW50ZXJydXB0IHR5cGUgaXMgbm90IHNvZnR3YXJlIGNvbnRyb2xsZWQsCisgIGJ1dCBoYXJkd2FyZSBzeW50aGVzaXplZC4gUmVxdWlyZWQgaWYgR1BJTyBpcyB1c2VkIGFzIGFuIGludGVycnVwdAorICBjb250cm9sbGVyLiBUaGUgdmFsdWUgaXMgZGVmaW5lZCBpbiA8ZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaXJxLmg+CisgIE9ubHkgdGhlIGZvbGxvd2luZyBmbGFncyBhcmUgc3VwcG9ydGVkOgorICAgIElSUV9UWVBFX0VER0VfUklTSU5HCisgICAgSVJRX1RZUEVfRURHRV9GQUxMSU5HCisgICAgSVJRX1RZUEVfRURHRV9CT1RICisgICAgSVJRX1RZUEVfTEVWRUxfSElHSAorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBhbHRyLG5ncGlvOiBXaWR0aCBvZiB0aGUgR1BJTyBiYW5rLiBUaGlzIGRlZmluZXMgaG93IG1hbnkgcGlucyB0aGUKKyAgR1BJTyBkZXZpY2UgaGFzLiBSYW5nZXMgYmV0d2VlbiAxLTMyLiBPcHRpb25hbCBhbmQgZGVmYXVsdHMgdG8gMzIgaWYgbm90CisgIHNwZWNpZmllZC4KKworRXhhbXBsZToKKworZ3Bpb19hbHRyOiBncGlvQDB4ZmYyMDAwMDAgeworCWNvbXBhdGlibGUgPSAiYWx0cixwaW8tMS4wIjsKKwlyZWcgPSA8MHhmZjIwMDAwMCAweDEwPjsKKwlpbnRlcnJ1cHRzID0gPDAgNDUgND47CisJYWx0cixuZ3BpbyA9IDwzMj47CisJYWx0cixpbnRlcnJ1cHQtdHJpZ2dlciA9IDxJUlFfVFlQRV9FREdFX1JJU0lORz47CisJI2dwaW8tY2VsbHMgPSA8Mj47CisJZ3Bpby1jb250cm9sbGVyOworCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJaW50ZXJydXB0LWNvbnRyb2xsZXI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1hdGg3OS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLWF0aDc5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTIyODUxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1hdGg3OS50eHQKQEAgLTAsMCArMSwzOCBAQAorQmluZGluZyBmb3IgUXVhbGNvbW0gQXRoZXJvcyBBUjd4eHgvQVI5eHh4IEdQSU8gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBoYXMgdG8gYmUgInFjYSw8c29jdHlwZT4tZ3BpbyIgYW5kIG9uZSBvZiB0aGUgZm9sbG93aW5nCisgIGZhbGxiYWNrczoKKyAgLSAicWNhLGFyNzEwMC1ncGlvIgorICAtICJxY2EsYXI5MzQwLWdwaW8iCistIHJlZzogQmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSBjb250cm9sbGVycyBtZW1vcnkgYXJlYQorLSBncGlvLWNvbnRyb2xsZXIgOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYSBHUElPIGNvbnRyb2xsZXIuCistICNncGlvLWNlbGxzIDogU2hvdWxkIGJlIHR3by4gVGhlIGZpcnN0IGNlbGwgaXMgdGhlIHBpbiBudW1iZXIgYW5kIHRoZQorICBzZWNvbmQgY2VsbCBpcyB1c2VkIHRvIHNwZWNpZnkgb3B0aW9uYWwgcGFyYW1ldGVycy4KKy0gbmdwaW9zOiBTaG91bGQgYmUgc2V0IHRvIHRoZSBudW1iZXIgb2YgR1BJT3MgYXZhaWxhYmxlIG9uIHRoZSBTb0MuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGludGVycnVwdC1wYXJlbnQ6IHBoYW5kbGUgb2YgdGhlIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlci4KKy0gaW50ZXJydXB0czogSW50ZXJydXB0IHNwZWNpZmllciBmb3IgdGhlIGNvbnRyb2xsZXJzIGludGVycnVwdC4KKy0gaW50ZXJydXB0LWNvbnRyb2xsZXIgOiBJZGVudGlmaWVzIHRoZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyCistICNpbnRlcnJ1cHQtY2VsbHMgOiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8gZW5jb2RlIGludGVycnVwdAorCQkgICAgIHNvdXJjZSwgc2hvdWxkIGJlIDIKKworUGxlYXNlIHJlZmVyIHRvIGludGVycnVwdHMudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBkZXRhaWxzIG9mIHRoZSBjb21tb24KK0ludGVycnVwdCBDb250cm9sbGVycyBiaW5kaW5ncyB1c2VkIGJ5IGNsaWVudCBkZXZpY2VzLgorCitFeGFtcGxlOgorCisJZ3Bpb0AxODA0MDAwMCB7CisJCWNvbXBhdGlibGUgPSAicWNhLGFyOTEzMi1ncGlvIiwgInFjYSxhcjcxMDAtZ3BpbyI7CisJCXJlZyA9IDwweDE4MDQwMDAwIDB4MzA+OworCQlpbnRlcnJ1cHRzID0gPDI+OworCisJCW5ncGlvcyA9IDwyMj47CisKKwkJZ3Bpby1jb250cm9sbGVyOworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1hdGxhczcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1hdGxhczcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3ZTEyM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLWF0bGFzNy50eHQKQEAgLTAsMCArMSw1MCBAQAorQ1NSIFNpUkZhdGxhczcgR1BJTyBjb250cm9sbGVyIGJpbmRpbmdzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUJOiAic2lyZixhdGxhczctZ3BpbyIKKy0gcmVnCQk6IEFkZHJlc3MgcmFuZ2Ugb2YgdGhlIHBpbmN0cmwgcmVnaXN0ZXJzCistIGludGVycnVwdHMJOiBJbnRlcnJ1cHRzIHVzZWQgYnkgZXZlcnkgR1BJTyBncm91cAorLSBncGlvLWJhbmtzCTogSG93IG1hbnkgZ3BpbyBiYW5rcyBvbiB0aGlzIGNvbnRyb2xsZXIKKy0gZ3Bpby1jb250cm9sbGVyIDogSW5kaWNhdGVzIHRoaXMgZGV2aWNlIGlzIGEgR1BJTyBjb250cm9sbGVyCistIGludGVycnVwdC1jb250cm9sbGVyICA6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlcgorCitUaGUgR1BJTyBjb250cm9sbGVyIGFsc28gYWN0cyBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlci4gSXQgdXNlcyB0aGUgZGVmYXVsdAordHdvIGNlbGxzIHNwZWNpZmllciBhcyBkZXNjcmliZWQgaW4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzLworaW50ZXJydXB0LWNvbnRyb2xsZXIvaW50ZXJydXB0cy50eHQuCisKK0V4YW1wbGU6CisKKwlncGlvXzA6IGdwaW9fbWVkaWFtQDE3MDQwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzaXJmLGF0bGFzNy1ncGlvIjsKKwkJcmVnID0gPDB4MTcwNDAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDEzIDA+LCA8MCAxNCAwPjsKKworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKworCQlncGlvLWNvbnRyb2xsZXI7CisJCWludGVycnVwdC1jb250cm9sbGVyOworCisJCWdwaW8tYmFua3MgPSA8Mj47CisJCWdwaW8tcmFuZ2VzID0gPCZwaW5jdHJsIDAgMCAwPiwKKwkJCQk8JnBpbmN0cmwgMzIgMCAwPjsKKwkJZ3Bpby1yYW5nZXMtZ3JvdXAtbmFtZXMgPSAibHZkc19ncGlvX2dycCIsCisJCQkJCSJ1YXJ0X25hbmRfZ3Bpb19ncnAiOworCX07CisKKwlsZWRzIHsKKwkJY29tcGF0aWJsZSA9ICJncGlvLWxlZHMiOworCisJCWxlZDEgeworCQkJZ3Bpb3MgPSA8JmdwaW9fMSAxNSAwPjsKKwkJCS4uLgorCQl9OworCisJCWxlZDIgeworCQkJZ3Bpb3MgPSA8JmdwaW9fMiAzNCAwPjsKKwkJCS4uLgorCQl9OworCX07CisKK1BsZWFzZSByZWZlciB0byBncGlvLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgZGV0YWlscyBvZiB0aGUgY29tbW9uCitncGlvIHByb3BlcnRpZXMgdXNlZCBieSBkZXZpY2VzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1jbHBzNzExeC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLWNscHM3MTF4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMGQwNDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1jbHBzNzExeC50eHQKQEAgLTAsMCArMSwyOCBAQAorQ2lycnVzIExvZ2ljIENMUFM3MTFYIEdQSU8gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImNpcnJ1cyxjbHBzNzExeC1ncGlvIgorLSByZWc6IFBoeXNpY2FsIGJhc2UgR1BJTyBjb250cm9sbGVyIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoLgorICBUaGVyZSBzaG91bGQgYmUgdHdvIHJlZ2lzdGVycywgZmlyc3QgaXMgREFUQSByZWdpc3RlciwgdGhlIHNlY29uZAorICBpcyBESVJFQ1RJT04uCistIGdwaW8tY29udHJvbGxlcjogTWFya3MgdGhlIGRldmljZSBub2RlIGFzIGEgZ3BpbyBjb250cm9sbGVyLgorLSAjZ3Bpby1jZWxsczogU2hvdWxkIGJlIHR3by4gVGhlIGZpcnN0IGNlbGwgaXMgdGhlIHBpbiBudW1iZXIgYW5kCisgIHRoZSBzZWNvbmQgY2VsbCBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGdwaW8gcG9sYXJpdHk6CisgICAgMCA9IGFjdGl2ZSBoaWdoCisgICAgMSA9IGFjdGl2ZSBsb3cKKworTm90ZTogRWFjaCBHUElPIHBvcnQgc2hvdWxkIGhhdmUgYW4gYWxpYXMgY29ycmVjdGx5IG51bWJlcmVkIGluICJhbGlhc2VzIgorbm9kZS4KKworRXhhbXBsZToKKworYWxpYXNlcyB7CisJZ3BpbzAgPSAmcG9ydGE7Cit9OworCitwb3J0YTogZ3Bpb0A4MDAwMDAwMCB7CisJY29tcGF0aWJsZSA9ICJjaXJydXMsY2xwczcxMXgtZ3BpbyI7CisJcmVnID0gPDB4ODAwMDAwMDAgMHgxPiwgPDB4ODAwMDAwNDAgMHgxPjsKKwlncGlvLWNvbnRyb2xsZXI7CisJI2dwaW8tY2VsbHMgPSA8Mj47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1kYXZpbmNpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tZGF2aW5jaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA3OWJhNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tZGF2aW5jaS50eHQKQEAgLTAsMCArMSw2MiBAQAorRGF2aW5jaS9LZXlzdG9uZSBHUElPIGNvbnRyb2xsZXIgYmluZGluZ3MKKworUmVxdWlyZWQgUHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJ0aSxkbTY0NDEtZ3BpbyIsICJ0aSxrZXlzdG9uZS1ncGlvIgorCistIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCB0aGUgc2l6ZSBvZiBtZW1vcnkgbWFwcGVkCisgICAgICAgcmVnaXN0ZXJzLgorCistIGdwaW8tY29udHJvbGxlciA6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIGdwaW8gY29udHJvbGxlci4KKworLSAjZ3Bpby1jZWxscyA6IFNob3VsZCBiZSB0d28uCisgIC0gZmlyc3QgY2VsbCBpcyB0aGUgcGluIG51bWJlcgorICAtIHNlY29uZCBjZWxsIGlzIHVzZWQgdG8gc3BlY2lmeSBvcHRpb25hbCBwYXJhbWV0ZXJzICh1bnVzZWQpCisKKy0gaW50ZXJydXB0LXBhcmVudDogcGhhbmRsZSBvZiB0aGUgcGFyZW50IGludGVycnVwdCBjb250cm9sbGVyLgorCistIGludGVycnVwdHM6IEFycmF5IG9mIEdQSU8gaW50ZXJydXB0IG51bWJlci4gT25seSBiYW5rZWQgb3IgdW5iYW5rZWQgSVJRcyBhcmUKKwkgICAgICBzdXBwb3J0ZWQgYXQgYSB0aW1lLgorCistIHRpLG5ncGlvOiBUaGUgbnVtYmVyIG9mIEdQSU8gcGlucyBzdXBwb3J0ZWQuCisKKy0gdGksZGF2aW5jaS1ncGlvLXVuYmFua2VkOiBUaGUgbnVtYmVyIG9mIEdQSU9zIHRoYXQgaGF2ZSBhbiBpbmRpdmlkdWFsIGludGVycnVwdAorCQkgICAgICAgICAgICAgbGluZSB0byBwcm9jZXNzb3IuCisKK1RoZSBHUElPIGNvbnRyb2xsZXIgYWxzbyBhY3RzIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyLiBJdCB1c2VzIHRoZSBkZWZhdWx0Cit0d28gY2VsbHMgc3BlY2lmaWVyIGFzIGRlc2NyaWJlZCBpbiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvCitpbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlcnJ1cHRzLnR4dC4KKworRXhhbXBsZToKKworZ3BpbzogZ3Bpb0AxZTI2MDAwIHsKKwljb21wYXRpYmxlID0gInRpLGRtNjQ0MS1ncGlvIjsKKwlncGlvLWNvbnRyb2xsZXI7CisJI2dwaW8tY2VsbHMgPSA8Mj47CisJcmVnID0gPDB4MjI2MDAwIDB4MTAwMD47CisJaW50ZXJydXB0LXBhcmVudCA9IDwmaW50Yz47CisJaW50ZXJydXB0cyA9IDw0MiBJUlFfVFlQRV9FREdFX0JPVEggNDMgSVJRX1RZUEVfRURHRV9CT1RICisJCTQ0IElSUV9UWVBFX0VER0VfQk9USCA0NSBJUlFfVFlQRV9FREdFX0JPVEgKKwkJNDYgSVJRX1RZUEVfRURHRV9CT1RIIDQ3IElSUV9UWVBFX0VER0VfQk9USAorCQk0OCBJUlFfVFlQRV9FREdFX0JPVEggNDkgSVJRX1RZUEVfRURHRV9CT1RICisJCTUwIElSUV9UWVBFX0VER0VfQk9USD47CisJdGksbmdwaW8gPSA8MTQ0PjsKKwl0aSxkYXZpbmNpLWdwaW8tdW5iYW5rZWQgPSA8MD47CisJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKK307CisKK2xlZHMgeworCWNvbXBhdGlibGUgPSAiZ3Bpby1sZWRzIjsKKworCWxlZDEgeworCQlsYWJlbCA9ICJkYXZpbmNpOmdyZWVuOnVzcjEiOworCQlncGlvcyA9IDwmZ3BpbyAxMCBHUElPX0FDVElWRV9ISUdIPjsKKwkJLi4uCisJfTsKKworCWxlZDIgeworCQlsYWJlbCA9ICJkYXZpbmNpOnJlZDpkZWJ1ZzEiOworCQlncGlvcyA9IDwmZ3BpbyAxMSBHUElPX0FDVElWRV9ISUdIPjsKKwkJLi4uCisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLWRzcC1rZXlzdG9uZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLWRzcC1rZXlzdG9uZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM3ZTZjNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tZHNwLWtleXN0b25lLnR4dApAQCAtMCwwICsxLDM5IEBACitLZXlzdG9uZSAyIERTUCBHUElPIGNvbnRyb2xsZXIgYmluZGluZ3MKKworSE9TVCBPUyB1c2VybGFuZCBydW5uaW5nIG9uIEFSTSBjYW4gc2VuZCBpbnRlcnJ1cHRzIHRvIERTUCBjb3JlcyB1c2luZwordGhlIERTUCBHUElPIGNvbnRyb2xsZXIgSVAuIEl0IHByb3ZpZGVzIDI4IElSUSBzaWduYWxzIHBlciBlYWNoIERTUCBjb3JlLgorVGhpcyBpcyBvbmUgb2YgdGhlIGNvbXBvbmVudCB1c2VkIGJ5IHRoZSBJUEMgbWVjaGFuaXNtIHVzZWQgb24gS2V5c3RvbmUgU09Dcy4KKworRm9yIGV4YW1wbGUgVENJNjYzOEsySyBTb0MgaGFzIDggRFNQIEdQSU8gY29udHJvbGxlcnM6CisgLSA4IGZvciBDNjZ4IENvcmVQYWN4IENQVXMgMC03CisKK0tleXN0b25lIDIgRFNQIEdQSU8gY29udHJvbGxlciBoYXMgc3BlY2lmaWMgZmVhdHVyZXM6CistIGVhY2ggR1BJTyBjYW4gYmUgY29uZmlndXJlZCBvbmx5IGFzIG91dHB1dCBwaW47CistIHNldHRpbmcgR1BJTyB2YWx1ZSB0byAxIGNhdXNlcyBJUlEgZ2VuZXJhdGlvbiBvbiB0YXJnZXQgRFNQIGNvcmU7CistIHJlYWRpbmcgcGluIHZhbHVlIHJldHVybnMgMCAtIGlmIElSUSB3YXMgaGFuZGxlZCBvciAxIC0gSVJRIGlzIHN0aWxsCisgIHBlbmRpbmcuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAidGksa2V5c3RvbmUtZHNwLWdwaW8iCistIHRpLHN5c2Nvbi1kZXY6IHBoYW5kbGUvb2Zmc2V0IHBhaXIuIFRoZSBwaGFuZGxlIHRvIHN5c2NvbiB1c2VkIHRvCisgIGFjY2VzcyBkZXZpY2Ugc3RhdGUgY29udHJvbCByZWdpc3RlcnMgYW5kIHRoZSBvZmZzZXQgb2YgZGV2aWNlJ3Mgc3BlY2lmaWMKKyAgcmVnaXN0ZXJzIHdpdGhpbiBkZXZpY2Ugc3RhdGUgY29udHJvbCByZWdpc3RlcnMgcmFuZ2UuCistIGdwaW8tY29udHJvbGxlcjogTWFya3MgdGhlIGRldmljZSBub2RlIGFzIGEgZ3BpbyBjb250cm9sbGVyLgorLSAjZ3Bpby1jZWxsczogU2hvdWxkIGJlIDIuCisKK1BsZWFzZSByZWZlciB0byBncGlvLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgZGV0YWlscyBvZiB0aGUgY29tbW9uIEdQSU8KK2JpbmRpbmdzIHVzZWQgYnkgY2xpZW50IGRldmljZXMuCisKK0V4YW1wbGU6CisJZHNwZ3BpbzA6IGtleXN0b25lX2RzcF9ncGlvQDAyNjIwMjQwIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSxrZXlzdG9uZS1kc3AtZ3BpbyI7CisJCXRpLHN5c2Nvbi1kZXYgPSA8JmRldmN0cmwgMHgyNDA+OworCQlncGlvLWNvbnRyb2xsZXI7CisJCSNncGlvLWNlbGxzID0gPDI+OworCX07CisKKwlkc3AwOiBkc3AwIHsKKwkJY29tcGF0aWJsZSA9ICJsaW51eCxycHJvYy11c2VyIjsKKwkJLi4uCisJCWtpY2stZ3BpbyA9IDwmZHNwZ3BpbzAgMjc+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLWV0cmF4ZnMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1ldHJheGZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzAxOTRhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1ldHJheGZzLnR4dApAQCAtMCwwICsxLDIyIEBACitBeGlzIEVUUkFYIEZTIEdlbmVyYWwgSS9PIGNvbnRyb2xsZXIgYmluZGluZ3MKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBvbmUgb2Y6CisgIC0gImF4aXMsZXRyYXhmcy1naW8iCisgIC0gImF4aXMsYXJ0cGVjMy1naW8iCistIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlcnMuCistICNncGlvLWNlbGxzOiBTaG91bGQgYmUgMworICAtIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBncGlvIG9mZnNldCBudW1iZXIuCisgIC0gVGhlIHNlY29uZCBjZWxsIGlzIHJlc2VydmVkIGFuZCBpcyBjdXJyZW50bHkgdW51c2VkLgorICAtIFRoZSB0aGlyZCBjZWxsIGlzIHRoZSBwb3J0IG51bWJlciAoaGV4KS4KKy0gZ3Bpby1jb250cm9sbGVyOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYSBHUElPIGNvbnRyb2xsZXIuCisKK0V4YW1wbGU6CisKKwlnaW86IGdwaW9AYjAwMWEwMDAgeworCQljb21wYXRpYmxlID0gImF4aXMsZXRyYXhmcy1naW8iOworCQlyZWcgPSA8MHhiMDAxYTAwMCAweDEwMDA+OworCQlncGlvLWNvbnRyb2xsZXI7CisJCSNncGlvLWNlbGxzID0gPDM+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLWZhbi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLWZhbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM5YTc0MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tZmFuLnR4dApAQCAtMCwwICsxLDQwIEBACitCaW5kaW5ncyBmb3IgZmFuIGNvbm5lY3RlZCB0byBHUElPIGxpbmVzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAiZ3Bpby1mYW4iCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGdwaW9zOiBTcGVjaWZpZXMgdGhlIHBpbnMgdGhhdCBtYXAgdG8gYml0cyBpbiB0aGUgY29udHJvbCB2YWx1ZSwKKyAgb3JkZXJlZCBNU0ItLT5MU0IuCistIGdwaW8tZmFuLHNwZWVkLW1hcDogQSBtYXBwaW5nIG9mIHBvc3NpYmxlIGZhbiBSUE0gc3BlZWRzIGFuZCB0aGUKKyAgY29udHJvbCB2YWx1ZSB0aGF0IHNob3VsZCBiZSBzZXQgdG8gYWNoaWV2ZSB0aGVtLiBUaGlzIGFycmF5CisgIG11c3QgaGF2ZSB0aGUgUlBNIHZhbHVlcyBpbiBhc2NlbmRpbmcgb3JkZXIuCistIGFsYXJtLWdwaW9zOiBUaGlzIHBpbiBnb2luZyBhY3RpdmUgaW5kaWNhdGVzIHNvbWV0aGluZyBpcyB3cm9uZyB3aXRoCisgIHRoZSBmYW4sIGFuZCBhIHVkZXYgZXZlbnQgd2lsbCBiZSBmaXJlZC4KKy0gY29vbGluZy1jZWxsczogSWYgdXNlZCBhcyBhIGNvb2xpbmcgZGV2aWNlLCBtdXN0IGJlIDwyPgorICBBbHNvIHNlZTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RoZXJtYWwvdGhlcm1hbC50eHQKKyAgbWluIGFuZCBtYXggc3RhdGVzIGFyZSBkZXJpdmVkIGZyb20gdGhlIHNwZWVkLW1hcCBvZiB0aGUgZmFuLgorCitOb3RlOiBBdCBsZWFzdCBvbmUgdGhlICJncGlvcyIgb3IgImFsYXJtLWdwaW9zIiBwcm9wZXJ0aWVzIG11c3QgYmUgc2V0LgorCitFeGFtcGxlczoKKworCWdwaW9fZmFuIHsKKwkJY29tcGF0aWJsZSA9ICJncGlvLWZhbiI7CisJCWdwaW9zID0gPCZncGlvMSAxNCAxCisJCQkgJmdwaW8xIDEzIDE+OworCQlncGlvLWZhbixzcGVlZC1tYXAgPSA8MCAgICAwCisJCQkJICAgICAgMzAwMCAxCisJCQkJICAgICAgNjAwMCAyPjsKKwkJYWxhcm0tZ3Bpb3MgPSA8JmdwaW8xIDE1IDE+OworCX07CisJZ3Bpb19mYW5fY29vbDogZ3Bpb19mYW4geworCQljb21wYXRpYmxlID0gImdwaW8tZmFuIjsKKwkJZ3Bpb3MgPSA8JmdwaW8yIDE0IDEKKwkJCSAmZ3BpbzIgMTMgMT47CisJCWdwaW8tZmFuLHNwZWVkLW1hcCA9CTwwICAgIDA+LAorCQkJCQk8MzAwMCAxPiwKKwkJCQkJPDYwMDAgMj47CisJCWFsYXJtLWdwaW9zID0gPCZncGlvMiAxNSAxPjsKKwkJI2Nvb2xpbmctY2VsbHMgPSA8Mj47IC8qIG1pbiBmb2xsb3dlZCBieSBtYXggKi8KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1ncmdwaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1ncmdwaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0NjY1OTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLWdyZ3Bpby50eHQKQEAgLTAsMCArMSwyNiBAQAorQWVyb2ZsZXggR2Fpc2xlciBHUkdQSU8gR2VuZXJhbCBQdXJwb3NlIEkvTyBjb3Jlcy4KKworVGhlIEdSR1BJTyBHUElPIGNvcmUgaXMgYXZhaWxhYmxlIGluIHRoZSBHUkxJQiBWSERMIElQIGNvcmUgbGlicmFyeS4KKworTm90ZTogSW4gdGhlIG9yZGluYXJ5IGVudmlyb25tZW50IGZvciB0aGUgR1JHUElPIGNvcmUsIGEgTGVvbiBTUEFSQyBzeXN0ZW0sCit0aGVzZSBwcm9wZXJ0aWVzIGFyZSBidWlsdCBmcm9tIGluZm9ybWF0aW9uIGluIHRoZSBBTUJBIHBsdWcmcGxheS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBuYW1lIDogU2hvdWxkIGJlICJHQUlTTEVSX0dQSU8iIG9yICIwMV8wMWEiCisKKy0gcmVnIDogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKworLSBpbnRlcnJ1cHRzIDogSW50ZXJydXB0IG51bWJlcnMgZm9yIHRoaXMgZGV2aWNlCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gbmJpdHMgOiBUaGUgbnVtYmVyIG9mIGdwaW8gbGluZXMuIElmIG5vdCBwcmVzZW50IGRyaXZlciBhc3N1bWVzIDMyIGxpbmVzLgorCistIGlycW1hcCA6IEFuIGFycmF5IHdpdGggYW4gaW5kZXggZm9yIGVhY2ggZ3BpbyBsaW5lLiBBbiBpbmRleCBpcyBlaXRoZXIgYSB2YWxpZAorCWluZGV4IGludG8gdGhlIGludGVycnVwdHMgcHJvcGVydHkgYXJyYXksIG9yIDB4ZmZmZmZmZmYgdGhhdCBpbmRpY2F0ZXMKKwlubyBpcnEgZm9yIHRoYXQgbGluZS4gRHJpdmVyIHByb3ZpZGVzIG5vIGludGVycnVwdCBzdXBwb3J0IGlmIG5vdAorCXByZXNlbnQuCisKK0ZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIGxvb2sgaW4gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBHTElCIElQIGNvcmUgbGlicmFyeToKK2h0dHA6Ly93d3cuZ2Fpc2xlci5jb20vcHJvZHVjdHMvZ3JsaWIvZ3JpcC5wZGYKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tbHAzOTQzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tbHAzOTQzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGZjYjdkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1scDM5NDMudHh0CkBAIC0wLDAgKzEsMzcgQEAKK1RJL05hdGlvbmFsIFNlbWljb25kdWN0b3IgTFAzOTQzIEdQSU8gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6ICJ0aSxscDM5NDMtZ3BpbyIKKyAgLSBncGlvLWNvbnRyb2xsZXI6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIEdQSU8gY29udHJvbGxlci4KKyAgLSAjZ3Bpby1jZWxsczogU2hvdWxkIGJlIDIuIFNlZSBncGlvLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgYQorICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiBvZiB0aGUgY2VsbHMgZm9ybWF0LgorCitFeGFtcGxlOgorU2ltcGxlIExFRCBjb250cm9scyB3aXRoIExQMzk0MyBHUElPIGNvbnRyb2xsZXIKKworJmkyYzQgeworCWxwMzk0M0A2MCB7CisJCWNvbXBhdGlibGUgPSAidGksbHAzOTQzIjsKKwkJcmVnID0gPDB4NjA+OworCisJCWdwaW9leDogZ3BpbyB7CisJCQljb21wYXRpYmxlID0gInRpLGxwMzk0My1ncGlvIjsKKwkJCWdwaW8tY29udHJvbGxlcjsKKwkJCSNncGlvLWNlbGxzID0gPDI+OworCQl9OworCX07Cit9OworCitsZWRzIHsKKwljb21wYXRpYmxlID0gImdwaW8tbGVkcyI7CisJaW5kaWNhdG9yMSB7CisJCWxhYmVsID0gImluZGkxIjsKKwkJZ3Bpb3MgPSA8JmdwaW9leCA5IEdQSU9fQUNUSVZFX0xPVz47CisJfTsKKworCWluZGljYXRvcjIgeworCQlsYWJlbCA9ICJpbmRpMiI7CisJCWdwaW9zID0gPCZncGlvZXggMTAgR1BJT19BQ1RJVkVfTE9XPjsKKwkJZGVmYXVsdC1zdGF0ZSA9ICJvZmYiOworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1tYXg3MzJ4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tbWF4NzMyeC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZkYzg0MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tbWF4NzMyeC50eHQKQEAgLTAsMCArMSw1OSBAQAorKiBNQVg3MzJ4LWNvbXBhdGlibGUgSS9PIGV4cGFuZGVycworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6IFNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKyAgICAtICJtYXhpbSxtYXg3MzE5IjogRm9yIHRoZSBNYXhpbSBNQVg3MzE5CisgICAgLSAibWF4aW0sbWF4NzMyMCI6IEZvciB0aGUgTWF4aW0gTUFYNzMyMAorICAgIC0gIm1heGltLG1heDczMjEiOiBGb3IgdGhlIE1heGltIE1BWDczMjEKKyAgICAtICJtYXhpbSxtYXg3MzIyIjogRm9yIHRoZSBNYXhpbSBNQVg3MzIyCisgICAgLSAibWF4aW0sbWF4NzMyMyI6IEZvciB0aGUgTWF4aW0gTUFYNzMyMworICAgIC0gIm1heGltLG1heDczMjQiOiBGb3IgdGhlIE1heGltIE1BWDczMjQKKyAgICAtICJtYXhpbSxtYXg3MzI1IjogRm9yIHRoZSBNYXhpbSBNQVg3MzI1CisgICAgLSAibWF4aW0sbWF4NzMyNiI6IEZvciB0aGUgTWF4aW0gTUFYNzMyNgorICAgIC0gIm1heGltLG1heDczMjciOiBGb3IgdGhlIE1heGltIE1BWDczMjcKKyAgLSByZWc6IEkyQyBzbGF2ZSBhZGRyZXNzIGZvciB0aGlzIGRldmljZS4KKyAgLSBncGlvLWNvbnRyb2xsZXI6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIEdQSU8gY29udHJvbGxlci4KKyAgLSAjZ3Bpby1jZWxsczogU2hvdWxkIGJlIDIuCisgICAgLSBmaXJzdCBjZWxsIGlzIHRoZSBHUElPIG51bWJlcgorICAgIC0gc2Vjb25kIGNlbGwgc3BlY2lmaWVzIEdQSU8gZmxhZ3MsIGFzIGRlZmluZWQgaW4gPGR0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oPi4KKyAgICAgIE9ubHkgdGhlIEdQSU9fQUNUSVZFX0hJR0ggYW5kIEdQSU9fQUNUSVZFX0xPVyBmbGFncyBhcmUgc3VwcG9ydGVkLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCisgIFRoZSBJL08gZXhwYW5kZXIgY2FuIGRldGVjdCBpbnB1dCBzdGF0ZSBjaGFuZ2VzLCBhbmQgdGh1cyBvcHRpb25hbGx5IGFjdCBhcworICBhbiBpbnRlcnJ1cHQgY29udHJvbGxlci4gV2hlbiB0aGUgZXhwYW5kZXIgaW50ZXJydXB0IGxpbmUgaXMgY29ubmVjdGVkIGFsbCB0aGUKKyAgZm9sbG93aW5nIHByb3BlcnRpZXMgbXVzdCBiZSBzZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgdGhlCisgIGludGVycnVwdCBjb250cm9sbGVyIGRldmljZSB0cmVlIGJpbmRpbmdzIGRvY3VtZW50YXRpb24gYXZhaWxhYmxlIGF0CisgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlcnJ1cHRzLnR4dC4KKworICAtIGludGVycnVwdC1jb250cm9sbGVyOiBJZGVudGlmaWVzIHRoZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyLgorICAtICNpbnRlcnJ1cHQtY2VsbHM6IE51bWJlciBvZiBjZWxscyB0byBlbmNvZGUgYW4gaW50ZXJydXB0IHNvdXJjZSwgc2hhbGwgYmUgMi4KKyAgICAtIGZpcnN0IGNlbGwgaXMgdGhlIHBpbiBudW1iZXIKKyAgICAtIHNlY29uZCBjZWxsIGlzIHVzZWQgdG8gc3BlY2lmeSBmbGFncworICAtIGludGVycnVwdC1wYXJlbnQ6IHBoYW5kbGUgb2YgdGhlIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlci4KKyAgLSBpbnRlcnJ1cHRzOiBJbnRlcnJ1cHQgc3BlY2lmaWVyIGZvciB0aGUgY29udHJvbGxlcnMgaW50ZXJydXB0LgorCitQbGVhc2UgcmVmZXIgdG8gZ3Bpby50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGRldGFpbHMgb2YgdGhlIGNvbW1vbiBHUElPCitiaW5kaW5ncyB1c2VkIGJ5IGNsaWVudCBkZXZpY2VzLgorCitFeGFtcGxlIDEuIE1BWDczMjUgd2l0aCBpbnRlcnJ1cHQgc3VwcG9ydCBlbmFibGVkIChDT05GSUdfR1BJT19NQVg3MzJYX0lSUT15KToKKworCWV4cGFuZGVyOiBtYXg3MzI1QDZkIHsKKwkJY29tcGF0aWJsZSA9ICJtYXhpbSxtYXg3MzI1IjsKKwkJcmVnID0gPDB4NmQ+OworCQlncGlvLWNvbnRyb2xsZXI7CisJCSNncGlvLWNlbGxzID0gPDI+OworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzQ+OworCQlpbnRlcnJ1cHRzID0gPDI5IElSUV9UWVBFX0VER0VfRkFMTElORz47CisJfTsKKworRXhhbXBsZSAyLiBNQVg3MzI1IHdpdGggaW50ZXJydXB0IHN1cHBvcnQgZGlzYWJsZWQgKENPTkZJR19HUElPX01BWDczMlhfSVJRPW4pOgorCisJZXhwYW5kZXI6IG1heDczMjVANmQgeworCQljb21wYXRpYmxlID0gIm1heGltLG1heDczMjUiOworCQlyZWcgPSA8MHg2ZD47CisJCWdwaW8tY29udHJvbGxlcjsKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tbWNwMjNzMDgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1tY3AyM3MwOC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjMzMzJiOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tbWNwMjNzMDgudHh0CkBAIC0wLDAgKzEsODUgQEAKK01pY3JvY2hpcCBNQ1AyMzA4L01DUDIzUzA4L01DUDIzMDE3L01DUDIzUzE3IGRyaXZlciBmb3IKKzgtLzE2LWJpdCBJL08gZXhwYW5kZXIgd2l0aCBzZXJpYWwgaW50ZXJmYWNlIChJMkMvU1BJKQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlCisgICAgLSAibWNwLG1jcDIzczA4IiAoREVQUkVDQVRFRCkgZm9yICA4IEdQSU8gU1BJIHZlcnNpb24KKyAgICAtICJtY3AsbWNwMjNzMTciIChERVBSRUNBVEVEKSBmb3IgMTYgR1BJTyBTUEkgdmVyc2lvbgorICAgIC0gIm1jcCxtY3AyMzAwOCIgKERFUFJFQ0FURUQpIGZvciAgOCBHUElPIEkyQyB2ZXJzaW9uIG9yCisgICAgLSAibWNwLG1jcDIzMDE3IiAoREVQUkVDQVRFRCkgZm9yIDE2IEdQSU8gSTJDIHZlcnNpb24gb2YgdGhlIGNoaXAKKworICAgIC0gIm1pY3JvY2hpcCxtY3AyM3MwOCIgZm9yICA4IEdQSU8gU1BJIHZlcnNpb24KKyAgICAtICJtaWNyb2NoaXAsbWNwMjNzMTciIGZvciAxNiBHUElPIFNQSSB2ZXJzaW9uCisgICAgLSAibWljcm9jaGlwLG1jcDIzMDA4IiBmb3IgIDggR1BJTyBJMkMgdmVyc2lvbiBvcgorICAgIC0gIm1pY3JvY2hpcCxtY3AyMzAxNyIgZm9yIDE2IEdQSU8gSTJDIHZlcnNpb24gb2YgdGhlIGNoaXAKKyAgICBOT1RFOiBEbyBub3QgdXNlIHRoZSBvbGQgbWNwIHByZWZpeCBhbnkgbW9yZS4gSXQgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZQorICAgIHJlbW92ZWQuCistICNncGlvLWNlbGxzIDogU2hvdWxkIGJlIHR3by4KKyAgLSBmaXJzdCBjZWxsIGlzIHRoZSBwaW4gbnVtYmVyCisgIC0gc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IGZsYWdzLiBGbGFncyBhcmUgY3VycmVudGx5IHVudXNlZC4KKy0gZ3Bpby1jb250cm9sbGVyIDogTWFya3MgdGhlIGRldmljZSBub2RlIGFzIGEgR1BJTyBjb250cm9sbGVyLgorLSByZWcgOiBGb3IgYW4gYWRkcmVzcyBvbiBpdHMgYnVzLiBJMkMgdXNlcyB0aGlzIGEgdGhlIEkyQyBhZGRyZXNzIG9mIHRoZSBjaGlwLgorICAgICAgICBTUEkgdXNlcyB0aGlzIHRvIHNwZWNpZnkgdGhlIGNoaXBzZWxlY3QgbGluZSB3aGljaCB0aGUgY2hpcCBpcworICAgICAgICBjb25uZWN0ZWQgdG8uIFRoZSBkcml2ZXIgYW5kIHRoZSBTUEkgdmFyaWFudCBvZiB0aGUgY2hpcCBzdXBwb3J0CisgICAgICAgIG11bHRpcGxlIGNoaXBzIG9uIHRoZSBzYW1lIGNoaXBzZWxlY3QuIEhhdmUgYSBsb29rIGF0CisgICAgICAgIG1pY3JvY2hpcCxzcGktcHJlc2VudC1tYXNrIGJlbG93LgorCitSZXF1aXJlZCBkZXZpY2Ugc3BlY2lmaWMgcHJvcGVydGllcyAob25seSBmb3IgU1BJIGNoaXBzKToKKy0gbWNwLHNwaS1wcmVzZW50LW1hc2sgKERFUFJFQ0FURUQpCistIG1pY3JvY2hpcCxzcGktcHJlc2VudC1tYXNrIDogVGhpcyBpcyBhIHByZXNlbnQgZmxhZywgdGhhdCBtYWtlcyBvbmx5IHNlbnNlIGZvciBTUEkKKyAgICAgICAgY2hpcHMgLSBhcyB0aGUgbmFtZSBzdWdnZXN0cy4gTXVsdGlwbGUgU1BJIGNoaXBzIGNhbiBzaGFyZSB0aGUgc2FtZQorICAgICAgICBTUEkgY2hpcHNlbGVjdC4gU2V0IGEgYml0IGluIGJpdDAtNyBpbiB0aGlzIG1hc2sgdG8gMSBpZiB0aGVyZSBpcyBhCisgICAgICAgIGNoaXAgY29ubmVjdGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgc3BpIGFkZHJlc3Mgc2V0LiBGb3IgZXhhbXBsZSBpZgorICAgICAgICB5b3UgaGF2ZSBhIGNoaXAgd2l0aCBhZGRyZXNzIDMgY29ubmVjdGVkLCB5b3UgaGF2ZSB0byBzZXQgYml0MyB0byAxLAorICAgICAgICB3aGljaCBpcyAweDA4LiBtY3AyM3MwOCBjaGlwIHZhcmlhbnQgb25seSBzdXBwb3J0cyBiaXRzIDAtMy4gSXQgaXMgbm90CisgICAgICAgIHBvc3NpYmxlIHRvIG1peCBtY3AyM3MwOCBhbmQgbWNwMjNzMTcgb24gdGhlIHNhbWUgY2hpcHNlbGVjdC4gU2V0IGF0CisgICAgICAgIGxlYXN0IG9uZSBiaXQgdG8gMSBmb3IgU1BJIGNoaXBzLgorICAgIE5PVEU6IERvIG5vdCB1c2UgdGhlIG9sZCBtY3AgcHJlZml4IGFueSBtb3JlLiBJdCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlCisgICAgcmVtb3ZlZC4KKy0gc3BpLW1heC1mcmVxdWVuY3kgPSBUaGUgbWF4aW11bSBmcmVxdWVuY3kgdGhpcyBjaGlwIGlzIGFibGUgdG8gaGFuZGxlCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistICNpbnRlcnJ1cHQtY2VsbHMgOiBTaG91bGQgYmUgdHdvLgorICAtIGZpcnN0IGNlbGwgaXMgdGhlIHBpbiBudW1iZXIKKyAgLSBzZWNvbmQgY2VsbCBpcyB1c2VkIHRvIHNwZWNpZnkgZmxhZ3MuCistIGludGVycnVwdC1jb250cm9sbGVyOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYSBpbnRlcnJ1cHQgY29udHJvbGxlci4KK05PVEU6IFRoZSBpbnRlcnJ1cHQgZnVuY3Rpb25hbGl0eSBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgaTJjIHZlcnNpb25zIG9mIHRoZQorY2hpcHMuIFRoZSBzcGkgY2hpcHMgY2FuIGFsc28gZG8gdGhlIGludGVycnVwdHMsIGJ1dCB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQgYnkKK3RoZSBsaW51eCBkcml2ZXIgeWV0LgorCitPcHRpb25hbCBkZXZpY2Ugc3BlY2lmaWMgcHJvcGVydGllczoKKy0gbWljcm9jaGlwLGlycS1taXJyb3I6IFNldHMgdGhlIG1pcnJvciBmbGFnIGluIHRoZSBJT0NPTiByZWdpc3Rlci4gRGV2aWNlcworICAgICAgICB3aXRoIHR3byBpbnRlcnJ1cHQgb3V0cHV0cyAodGhlc2UgYXJlIHRoZSBkZXZpY2VzIGVuZGluZyB3aXRoIDE3IGFuZAorICAgICAgICB0aG9zZSB0aGF0IGhhdmUgMTYgSU9zKSBoYXZlIHR3byBJTyBiYW5rczogSU8gMC03IGZvcm0gYmFuayAxIGFuZAorICAgICAgICBJTyA4LTE1IGFyZSBiYW5rIDIuIFRoZXNlIGNoaXBzIGhhdmUgdHdvIGRpZmZlcmVudCBpbnRlcnJ1cHQgb3V0cHV0czoKKyAgICAgICAgT25lIGZvciBiYW5rIDEgYW5kIGFub3RoZXIgZm9yIGJhbmsgMi4gSWYgaXJxLW1pcnJvciBpcyBzZXQsIGJvdGgKKyAgICAgICAgaW50ZXJydXB0cyBhcmUgZ2VuZXJhdGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIGJhbmsgdGhhdCBhbiBpbnB1dCBjaGFuZ2UKKyAgICAgICAgb2NjdXJyZWQgb24uIElmIGl0IGlzIG5vdCBzZXQsIHRoZSBpbnRlcnJ1cHQgYXJlIG9ubHkgZ2VuZXJhdGVkIGZvciB0aGUKKyAgICAgICAgYmFuayB0aGV5IGJlbG9uZyB0by4KKyAgICAgICAgT24gZGV2aWNlcyB3aXRoIG9ubHkgb25lIGludGVycnVwdCBvdXRwdXQgdGhpcyBwcm9wZXJ0eSBpcyB1c2VsZXNzLgorLSBtaWNyb2NoaXAsaXJxLWFjdGl2ZS1oaWdoOiBTZXRzIHRoZSBJTlRQT0wgZmxhZyBpbiB0aGUgSU9DT04gcmVnaXN0ZXIuIFRoaXMKKyAgICAgICAgY29uZmlndXJlcyB0aGUgSVJRIG91dHB1dCBwb2xhcml0eSBhcyBhY3RpdmUgaGlnaC4KKworRXhhbXBsZSBJMkMgKHdpdGggaW50ZXJydXB0KToKK2dwaW9tMTogZ3Bpb0AyMCB7CisgICAgICAgIGNvbXBhdGlibGUgPSAibWljcm9jaGlwLG1jcDIzMDE3IjsKKyAgICAgICAgZ3Bpby1jb250cm9sbGVyOworICAgICAgICAjZ3Bpby1jZWxscyA9IDwyPjsKKyAgICAgICAgcmVnID0gPDB4MjA+OworCisgICAgICAgIGludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8xPjsKKyAgICAgICAgaW50ZXJydXB0cyA9IDwxNyBJUlFfVFlQRV9MRVZFTF9MT1c+OworICAgICAgICBpbnRlcnJ1cHQtY29udHJvbGxlcjsKKyAgICAgICAgI2ludGVycnVwdC1jZWxscz08Mj47CisgICAgICAgIG1pY3JvY2hpcCxpcnEtbWlycm9yOworfTsKKworRXhhbXBsZSBTUEk6CitncGlvbTE6IGdwaW9AMCB7CisgICAgICAgIGNvbXBhdGlibGUgPSAibWljcm9jaGlwLG1jcDIzczE3IjsKKyAgICAgICAgZ3Bpby1jb250cm9sbGVyOworICAgICAgICAjZ3Bpby1jZWxscyA9IDwyPjsKKyAgICAgICAgc3BpLXByZXNlbnQtbWFzayA9IDwweDAxPjsKKyAgICAgICAgcmVnID0gPDA+OworICAgICAgICBzcGktbWF4LWZyZXF1ZW5jeSA9IDwxMDAwMDAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLW1tLWxhbnRpcS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLW1tLWxhbnRpcS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkzZDUxNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tbW0tbGFudGlxLnR4dApAQCAtMCwwICsxLDM4IEBACitMYW50aXEgU29DIEV4dGVybmFsIEJ1cyBtZW1vcnkgbWFwcGVkIEdQSU8gY29udHJvbGxlcgorCitCeSBhdHRhY2hpbmcgaGFyZHdhcmUgbGF0Y2hlcyB0byB0aGUgRUJVIGl0IGlzIHBvc3NpYmxlIHRvIGNyZWF0ZSBvdXRwdXQKK29ubHkgZ3Bpb3MuIFRoaXMgZHJpdmVyIGNvbmZpZ3VyZXMgYSBzcGVjaWFsIG1lbW9yeSBhZGRyZXNzLCB3aGljaCB3aGVuCit3cml0dGVuIHRvIG91dHB1dHMgMTYgYml0IHRvIHRoZSBsYXRjaGVzLgorCitUaGUgbm9kZSBkZXNjcmliaW5nIHRoZSBtZW1vcnkgbWFwcGVkIEdQSU9zIG5lZWRzIHRvIGJlIGEgY2hpbGQgb2YgdGhlIG5vZGUKK2Rlc2NyaWJpbmcgdGhlICJsYW50aXEsbG9jYWxidXMiLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJsYW50aXEsZ3Bpby1tbS1sYW50aXEiCistIHJlZyA6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistICNncGlvLWNlbGxzIDogU2hvdWxkIGJlIHR3by4gIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBwaW4gbnVtYmVyIGFuZAorICB0aGUgc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IG9wdGlvbmFsIHBhcmFtZXRlcnMgKGN1cnJlbnRseQorICB1bnVzZWQpLgorLSBncGlvLWNvbnRyb2xsZXIgOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYSBncGlvIGNvbnRyb2xsZXIuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGxhbnRpcSxzaGFkb3cgOiBUaGUgZGVmYXVsdCB2YWx1ZSB0aGF0IHdlIHNoYWxsIGFzc3VtZSBhcyBhbHJlYWR5IHNldCBvbiB0aGUKKyAgc2hpZnQgcmVnaXN0ZXIgY2FzY2FkZS4KKworRXhhbXBsZToKKworbG9jYWxidXNAMCB7CisJI2FkZHJlc3MtY2VsbHMgPSA8Mj47CisJI3NpemUtY2VsbHMgPSA8MT47CisJcmFuZ2VzID0gPDAgMCAweDAgMHgzZmZmZmZmIC8qIGFkZHJzZWwwICovCisJCTEgMCAweDQwMDAwMDAgMHg0MDAwMDEwPjsgLyogYWRkc2VsMSAqLworCWNvbXBhdGlibGUgPSAibGFudGlxLGxvY2FsYnVzIiwgInNpbXBsZS1idXMiOworCisJZ3Bpb19tbTA6IGdwaW9ANDAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAibGFudGlxLGdwaW8tbW0iOworCQlyZWcgPSA8MSAweDAgMHgxMD47CisJCWdwaW8tY29udHJvbGxlcjsKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCWxhbnRpcSxzaGFkb3cgPSA8MHg3N2Y+CisJfTsKK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tbXBjOHh4eC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLW1wYzh4eHgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMGJjNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLW1wYzh4eHgudHh0CkBAIC0wLDAgKzEsMjYgQEAKKyogRnJlZXNjYWxlIE1QQzUxMngvTVBDOHh4eC9MYXllcnNjYXBlIEdQSU8gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJmc2wsPHNvYz4tZ3BpbyIKKyAgVGhlIGZvbGxvd2luZyA8c29jPnMgYXJlIGtub3duIHRvIGJlIHN1cHBvcnRlZDoKKyAgICBtcGM1MTIxLCBtcGM1MTI1LCBtcGM4MzQ5LCBtcGM4NTcyLCBtcGM4NjEwLCBwcTMsIHFvcmlxLgorLSByZWcgOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorLSBpbnRlcnJ1cHRzIDogU2hvdWxkIGJlIHRoZSBwb3J0IGludGVycnVwdCBzaGFyZWQgYnkgYWxsIDMyIHBpbnMuCistICNncGlvLWNlbGxzIDogU2hvdWxkIGJlIHR3by4gIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBwaW4gbnVtYmVyIGFuZAorICB0aGUgc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBncGlvIHBvbGFyaXR5OgorICAgICAgMCA9IGFjdGl2ZSBoaWdoCisgICAgICAxID0gYWN0aXZlIGxvdworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBsaXR0bGUtZW5kaWFuIDogR1BJTyByZWdpc3RlcnMgYXJlIHVzZWQgYXMgbGl0dGxlIGVuZGlhbi4gSWYgbm90CisgICAgICAgICAgICAgICAgICBwcmVzZW50IHJlZ2lzdGVycyBhcmUgdXNlZCBhcyBiaWcgZW5kaWFuIGJ5IGRlZmF1bHQuCisKK0V4YW1wbGU6CisKK2dwaW8wOiBncGlvQDExMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLG1wYzUxMjUtZ3BpbyI7CisJI2dwaW8tY2VsbHMgPSA8Mj47CisJcmVnID0gPDB4MTEwMCAweDA4MD47CisJaW50ZXJydXB0cyA9IDw3OCAweDg+OworCXN0YXR1cyA9ICJva2F5IjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLW12ZWJ1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tbXZlYnUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2ZjNiZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLW12ZWJ1LnR4dApAQCAtMCwwICsxLDUzIEBACisqIE1hcnZlbGwgRUJVIEdQSU8gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgIm1hcnZlbGwsb3Jpb24tZ3BpbyIsICJtYXJ2ZWxsLG12NzgyMDAtZ3BpbyIKKyAgb3IgIm1hcnZlbGwsYXJtYWRheHAtZ3BpbyIuICJtYXJ2ZWxsLG9yaW9uLWdwaW8iIHNob3VsZCBiZSB1c2VkIGZvcgorICBPcmlvbiwgS2lya3dvb2QsIERvdmUsIERpc2NvdmVyeSAoZXhjZXB0IE1WNzgyMDApIGFuZCBBcm1hZGEKKyAgMzcwLiAibWFydmVsbCxtdjc4MjAwLWdwaW8iIHNob3VsZCBiZSB1c2VkIGZvciB0aGUgRGlzY292ZXJ5CisgIE1WNzgyMDAuICJtYXJ2ZWwsYXJtYWRheHAtZ3BpbyIgc2hvdWxkIGJlIHVzZWQgZm9yIGFsbCBBcm1hZGEgWFAKKyAgU29DcyAoTVY3ODIzMCwgTVY3ODI2MCwgTVY3ODQ2MCkuCisKKy0gcmVnOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZS4gT25seSBvbmUKKyAgZW50cnkgaXMgZXhwZWN0ZWQsIGV4Y2VwdCBmb3IgdGhlICJtYXJ2ZWxsLGFybWFkYXhwLWdwaW8iIHZhcmlhbnQKKyAgZm9yIHdoaWNoIHR3byBlbnRyaWVzIGFyZSBleHBlY3RlZDogb25lIGZvciB0aGUgZ2VuZXJhbCByZWdpc3RlcnMsCisgIG9uZSBmb3IgdGhlIHBlci1jcHUgcmVnaXN0ZXJzLgorCistIGludGVycnVwdHM6IFRoZSBsaXN0IG9mIGludGVycnVwdHMgdGhhdCBhcmUgdXNlZCBmb3IgYWxsIHRoZSBwaW5zCisgIG1hbmFnZWQgYnkgdGhpcyBHUElPIGJhbmsuIFRoZXJlIGNhbiBiZSBtb3JlIHRoYW4gb25lIGludGVycnVwdAorICAoZXhhbXBsZTogMSBpbnRlcnJ1cHQgcGVyIDggcGlucyBvbiBBcm1hZGEgWFAsIHdoaWNoIG1lYW5zIDQKKyAgaW50ZXJydXB0cyBwZXIgYmFuayBvZiAzMiBHUElPcykuCisKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXI6IGlkZW50aWZpZXMgdGhlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIKKworLSAjaW50ZXJydXB0LWNlbGxzOiBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8gZW5jb2RlIGFuCisgIGludGVycnVwdCBzb3VyY2UuIFNob3VsZCBiZSB0d28uCisgIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBHUElPIG51bWJlci4KKyAgVGhlIHNlY29uZCBjZWxsIGlzIHVzZWQgdG8gc3BlY2lmeSBmbGFnczoKKyAgICBiaXRzWzM6MF0gdHJpZ2dlciB0eXBlIGFuZCBsZXZlbCBmbGFnczoKKyAgICAgIDEgPSBsb3ctdG8taGlnaCBlZGdlIHRyaWdnZXJlZC4KKyAgICAgIDIgPSBoaWdoLXRvLWxvdyBlZGdlIHRyaWdnZXJlZC4KKyAgICAgIDQgPSBhY3RpdmUgaGlnaCBsZXZlbC1zZW5zaXRpdmUuCisgICAgICA4ID0gYWN0aXZlIGxvdyBsZXZlbC1zZW5zaXRpdmUuCisKKy0gZ3Bpby1jb250cm9sbGVyOiBtYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYSBncGlvIGNvbnRyb2xsZXIKKworLSBuZ3Bpb3M6IG51bWJlciBvZiBHUElPcyB0aGlzIGNvbnRyb2xsZXIgaGFzCisKKy0gI2dwaW8tY2VsbHM6IFNob3VsZCBiZSB0d28uIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBwaW4gbnVtYmVyLiBUaGUKKyAgc2Vjb25kIGNlbGwgaXMgcmVzZXJ2ZWQgZm9yIGZsYWdzLCB1bnVzZWQgYXQgdGhlIG1vbWVudC4KKworRXhhbXBsZToKKworCQlncGlvMDogZ3Bpb0BkMDAxODEwMCB7CisJCQljb21wYXRpYmxlID0gIm1hcnZlbGwsYXJtYWRheHAtZ3BpbyI7CisJCQlyZWcgPSA8MHhkMDAxODEwMCAweDQwPiwKKwkJCSAgICA8MHhkMDAxODgwMCAweDMwPjsKKwkJCW5ncGlvcyA9IDwzMj47CisJCQlncGlvLWNvbnRyb2xsZXI7CisJCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJCWludGVycnVwdC1jb250cm9sbGVyOworCQkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKwkJCWludGVycnVwdHMgPSA8MTY+LCA8MTc+LCA8MTg+LCA8MTk+OworCQl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1teHMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1teHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlNjc3YTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLW14cy50eHQKQEAgLTAsMCArMSw4OCBAQAorKiBGcmVlc2NhbGUgTVhTIEdQSU8gY29udHJvbGxlcgorCitUaGUgRnJlZXNjYWxlIE1YUyBHUElPIGNvbnRyb2xsZXIgaXMgcGFydCBvZiBNWFMgUElOIGNvbnRyb2xsZXIuICBUaGUKK0dQSU9zIGFyZSBvcmdhbml6ZWQgaW4gcG9ydC9iYW5rLiAgRWFjaCBwb3J0IGNvbnNpc3RzIG9mIDMyIEdQSU9zLgorCitBcyB0aGUgR1BJTyBjb250cm9sbGVyIGlzIGVtYmVkZGVkIGluIHRoZSBQSU4gY29udHJvbGxlciBhbmQgYWxsIHRoZQorR1BJTyBwb3J0cyBzaGFyZSB0aGUgc2FtZSBJTyBzcGFjZSB3aXRoIFBJTiBjb250cm9sbGVyLCB0aGUgR1BJTyBub2RlCit3aWxsIGJlIHJlcHJlc2VudGVkIGFzIHN1Yi1ub2RlcyBvZiBNWFMgcGluY3RybCBub2RlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBHUElPIG5vZGU6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImZzbCw8c29jPi1ncGlvIi4gIFRoZSBzdXBwb3J0ZWQgU29DcyBpbmNsdWRlCisgIGlteDIzIGFuZCBpbXgyOC4KKy0gaW50ZXJydXB0cyA6IFNob3VsZCBiZSB0aGUgcG9ydCBpbnRlcnJ1cHQgc2hhcmVkIGJ5IGFsbCAzMiBwaW5zLgorLSBncGlvLWNvbnRyb2xsZXIgOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYSBncGlvIGNvbnRyb2xsZXIuCistICNncGlvLWNlbGxzIDogU2hvdWxkIGJlIHR3by4gIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBwaW4gbnVtYmVyIGFuZAorICB0aGUgc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBncGlvIHBvbGFyaXR5OgorICAgICAgMCA9IGFjdGl2ZSBoaWdoCisgICAgICAxID0gYWN0aXZlIGxvdworLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogTWFya3MgdGhlIGRldmljZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyLgorLSAjaW50ZXJydXB0LWNlbGxzIDogU2hvdWxkIGJlIDIuICBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgR1BJTyBudW1iZXIuCisgIFRoZSBzZWNvbmQgY2VsbCBiaXRzWzM6MF0gaXMgdXNlZCB0byBzcGVjaWZ5IHRyaWdnZXIgdHlwZSBhbmQgbGV2ZWwgZmxhZ3M6CisgICAgICAxID0gbG93LXRvLWhpZ2ggZWRnZSB0cmlnZ2VyZWQuCisgICAgICAyID0gaGlnaC10by1sb3cgZWRnZSB0cmlnZ2VyZWQuCisgICAgICA0ID0gYWN0aXZlIGhpZ2ggbGV2ZWwtc2Vuc2l0aXZlLgorICAgICAgOCA9IGFjdGl2ZSBsb3cgbGV2ZWwtc2Vuc2l0aXZlLgorCitOb3RlOiBFYWNoIEdQSU8gcG9ydCBzaG91bGQgaGF2ZSBhbiBhbGlhcyBjb3JyZWN0bHkgbnVtYmVyZWQgaW4gImFsaWFzZXMiCitub2RlLgorCitFeGFtcGxlczoKKworYWxpYXNlcyB7CisJZ3BpbzAgPSAmZ3BpbzA7CisJZ3BpbzEgPSAmZ3BpbzE7CisJZ3BpbzIgPSAmZ3BpbzI7CisJZ3BpbzMgPSAmZ3BpbzM7CisJZ3BpbzQgPSAmZ3BpbzQ7Cit9OworCitwaW5jdHJsQDgwMDE4MDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxpbXgyOC1waW5jdHJsIiwgInNpbXBsZS1idXMiOworCXJlZyA9IDwweDgwMDE4MDAwIDIwMDA+OworCisJZ3BpbzA6IGdwaW9AMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGlteDI4LWdwaW8iOworCQlpbnRlcnJ1cHRzID0gPDEyNz47CisJCWdwaW8tY29udHJvbGxlcjsKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCWludGVycnVwdC1jb250cm9sbGVyOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCX07CisKKwlncGlvMTogZ3Bpb0AxIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsaW14MjgtZ3BpbyI7CisJCWludGVycnVwdHMgPSA8MTI2PjsKKwkJZ3Bpby1jb250cm9sbGVyOworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJfTsKKworCWdwaW8yOiBncGlvQDIgeworCQljb21wYXRpYmxlID0gImZzbCxpbXgyOC1ncGlvIjsKKwkJaW50ZXJydXB0cyA9IDwxMjU+OworCQlncGlvLWNvbnRyb2xsZXI7CisJCSNncGlvLWNlbGxzID0gPDI+OworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKwl9OworCisJZ3BpbzM6IGdwaW9AMyB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGlteDI4LWdwaW8iOworCQlpbnRlcnJ1cHRzID0gPDEyND47CisJCWdwaW8tY29udHJvbGxlcjsKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCWludGVycnVwdC1jb250cm9sbGVyOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCX07CisKKwlncGlvNDogZ3Bpb0A0IHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsaW14MjgtZ3BpbyI7CisJCWludGVycnVwdHMgPSA8MTIzPjsKKwkJZ3Bpby1jb250cm9sbGVyOworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLW5tay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLW5tay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMxNWFjNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tbm1rLnR4dApAQCAtMCwwICsxLDMxIEBACitOb21hZGlrIEdQSU8gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlICAgICAgICAgICAgOiBTaG91bGQgYmUgInN0LG5vbWFkaWstZ3BpbyIuCistIHJlZyAgICAgICAgICAgICAgICAgICA6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBjb250cm9sbGVyJ3MgcmVnaXN0ZXJzLgorLSBpbnRlcnJ1cHRzICAgICAgICAgICAgOiBUaGUgaW50ZXJydXB0IG91dHB1dHMgZnJvbSB0aGUgY29udHJvbGxlci4KKy0gI2dwaW8tY2VsbHMgICAgICAgICAgIDogU2hvdWxkIGJlIHR3bzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgcGluIG51bWJlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IG9wdGlvbmFsIHBhcmFtZXRlcnM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIGJpdHNbMzowXSB0cmlnZ2VyIHR5cGUgYW5kIGxldmVsIGZsYWdzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPSBsb3ctdG8taGlnaCBlZGdlIHRyaWdnZXJlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyID0gaGlnaC10by1sb3cgZWRnZSB0cmlnZ2VyZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCA9IGFjdGl2ZSBoaWdoIGxldmVsLXNlbnNpdGl2ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4ID0gYWN0aXZlIGxvdyBsZXZlbC1zZW5zaXRpdmUuCistIGdwaW8tY29udHJvbGxlciAgICAgICA6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIEdQSU8gY29udHJvbGxlci4KKy0gaW50ZXJydXB0LWNvbnRyb2xsZXIgIDogTWFya3MgdGhlIGRldmljZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyLgorLSBncGlvLWJhbmsgICAgICAgICAgICAgOiBTcGVjaWZpZXMgd2hpY2ggYmFuayBhIGNvbnRyb2xsZXIgb3ducy4KKy0gc3Qsc3VwcG9ydHMtc2xlZXBtb2RlIDogU3BlY2lmaWVzIHdoZXRoZXIgY29udHJvbGxlciBjYW4gc2xlZXAgb3Igbm90CisKK0V4YW1wbGU6CisKKyAgICAgICAgICAgICAgICBncGlvMTogZ3Bpb0A4MDEyZTA4MCB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gInN0LG5vbWFkaWstZ3BpbyI7CisgICAgICAgICAgICAgICAgICAgICAgICByZWcgPSAgPDB4ODAxMmUwODAgMHg4MD47CisgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRzID0gPDAgMTIwIDB4ND47CisgICAgICAgICAgICAgICAgICAgICAgICAjZ3Bpby1jZWxscyA9IDwyPjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdwaW8tY29udHJvbGxlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdC1jb250cm9sbGVyOworICAgICAgICAgICAgICAgICAgICAgICAgc3Qsc3VwcG9ydHMtc2xlZXBtb2RlOworICAgICAgICAgICAgICAgICAgICAgICAgZ3Bpby1iYW5rID0gPDE+OworICAgICAgICAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLW9tYXAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1vbWFwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDk1MDUyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1vbWFwLnR4dApAQCAtMCwwICsxLDM5IEBACitPTUFQIEdQSU8gY29udHJvbGxlciBiaW5kaW5ncworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOgorICAtICJ0aSxvbWFwMi1ncGlvIiBmb3IgT01BUDIgY29udHJvbGxlcnMKKyAgLSAidGksb21hcDMtZ3BpbyIgZm9yIE9NQVAzIGNvbnRyb2xsZXJzCisgIC0gInRpLG9tYXA0LWdwaW8iIGZvciBPTUFQNCBjb250cm9sbGVycworLSBncGlvLWNvbnRyb2xsZXIgOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYSBHUElPIGNvbnRyb2xsZXIuCistICNncGlvLWNlbGxzIDogU2hvdWxkIGJlIHR3by4KKyAgLSBmaXJzdCBjZWxsIGlzIHRoZSBwaW4gbnVtYmVyCisgIC0gc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IG9wdGlvbmFsIHBhcmFtZXRlcnMgKHVudXNlZCkKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXI6IE1hcmsgdGhlIGRldmljZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyLgorLSAjaW50ZXJydXB0LWNlbGxzIDogU2hvdWxkIGJlIDIuCisgIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBHUElPIG51bWJlci4KKyAgVGhlIHNlY29uZCBjZWxsIGlzIHVzZWQgdG8gc3BlY2lmeSBmbGFnczoKKyAgICBiaXRzWzM6MF0gdHJpZ2dlciB0eXBlIGFuZCBsZXZlbCBmbGFnczoKKyAgICAgIDEgPSBsb3ctdG8taGlnaCBlZGdlIHRyaWdnZXJlZC4KKyAgICAgIDIgPSBoaWdoLXRvLWxvdyBlZGdlIHRyaWdnZXJlZC4KKyAgICAgIDQgPSBhY3RpdmUgaGlnaCBsZXZlbC1zZW5zaXRpdmUuCisgICAgICA4ID0gYWN0aXZlIGxvdyBsZXZlbC1zZW5zaXRpdmUuCisKK09NQVAgc3BlY2lmaWMgcHJvcGVydGllczoKKy0gdGksaHdtb2RzOgkJTmFtZSBvZiB0aGUgaHdtb2QgYXNzb2NpYXRlZCB0byB0aGUgR1BJTzoKKwkJCSJncGlvPFg+IiwgPFg+IGJlaW5nIHRoZSAxLWJhc2VkIGluc3RhbmNlIG51bWJlcgorCQkJZnJvbSB0aGUgSFcgc3BlYy4KKy0gdGksZ3Bpby1hbHdheXMtb246IAlJbmRpY2F0ZXMgaWYgYSBHUElPIGJhbmsgaXMgYWx3YXlzIHBvd2VyZWQgYW5kCisJCQlzbyB3aWxsIG5ldmVyIGxvc2UgaXRzIGxvZ2ljIHN0YXRlLgorCisKK0V4YW1wbGU6CisKK2dwaW80OiBncGlvNCB7CisgICAgY29tcGF0aWJsZSA9ICJ0aSxvbWFwNC1ncGlvIjsKKyAgICB0aSxod21vZHMgPSAiZ3BpbzQiOworICAgIGdwaW8tY29udHJvbGxlcjsKKyAgICAjZ3Bpby1jZWxscyA9IDwyPjsKKyAgICBpbnRlcnJ1cHQtY29udHJvbGxlcjsKKyAgICAjaW50ZXJydXB0LWNlbGxzID0gPDI+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tcGFsbWFzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tcGFsbWFzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGI1YjUyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1wYWxtYXMudHh0CkBAIC0wLDAgKzEsMjcgQEAKK1BhbG1hcyBHUElPIGNvbnRyb2xsZXIgYmluZGluZ3MKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZToKKyAgLSAidGkscGFsYW1zLWdwaW8iIGZvciBwYWxtYSBzZXJpZXMgb2YgdGhlIEdQSU8gY29udHJvbGxlcgorICAtICJ0aSx0cHM4MDAzNi1ncGlvIiBmb3IgUGFsbWEgc2VyaWVzIGRldmljZSBUUFM4MDAzNi4KKyAgLSAidGksdHBzNjU5MTMtZ3BpbyIgZm9yIHBhbG1hIHNlcmllcyBkZXZpY2UgVFBTNjU5MTMuCisgIC0gInRpLHRwczY1OTE0LWdwaW8iIGZvciBwYWxtYSBzZXJpZXMgZGV2aWNlIFRQUzY1OTE0LgorLSAjZ3Bpby1jZWxscyA6IFNob3VsZCBiZSB0d28uCisgIC0gZmlyc3QgY2VsbCBpcyB0aGUgZ3BpbyBwaW4gbnVtYmVyCisgIC0gc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBncGlvIHBvbGFyaXR5OgorICAgICAgMCA9IGFjdGl2ZSBoaWdoCisgICAgICAxID0gYWN0aXZlIGxvdworLSBncGlvLWNvbnRyb2xsZXIgOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYSBHUElPIGNvbnRyb2xsZXIuCisKK05vdGU6IFRoaXMgZ3BpbyBub2RlIHdpbGwgYmUgc3ViIG5vZGUgb2YgcGFsbWFzIG5vZGUuCisKK0V4YW1wbGU6CisJcGFsbWFzOiB0cHM2NTkxM0A1OCB7CisJCTo6Ojo6Ojo6Ojo6CisJCXBhbG1hc19ncGlvOiBwYWxtYXNfZ3BpbyB7CisJCQljb21wYXRpYmxlID0gInRpLHBhbG1hcy1ncGlvIjsKKwkJCWdwaW8tY29udHJvbGxlcjsKKwkJCSNncGlvLWNlbGxzID0gPDI+OworCQl9OworCQk6Ojo6Ojo6Ojo6OgorCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLXBjYTk1M3gudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1wY2E5NTN4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2RmOTkzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1wY2E5NTN4LnR4dApAQCAtMCwwICsxLDQwIEBACisqIE5YUCBQQ0E5NTN4IEkyQyBHUElPIG11bHRpcGxleGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiBIYXMgdG8gY29udGFpbiBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKwlueHAscGNhOTUwNQorCW54cCxwY2E5NTM0CisJbnhwLHBjYTk1MzUKKwlueHAscGNhOTUzNgorCW54cCxwY2E5NTM3CisJbnhwLHBjYTk1MzgKKwlueHAscGNhOTUzOQorCW54cCxwY2E5NTU0CisJbnhwLHBjYTk1NTUKKwlueHAscGNhOTU1NgorCW54cCxwY2E5NTU3CisJbnhwLHBjYTk1NzQKKwlueHAscGNhOTU3NQorCW54cCxwY2E5Njk4CisJbWF4aW0sbWF4NzMxMAorCW1heGltLG1heDczMTIKKwltYXhpbSxtYXg3MzEzCisJbWF4aW0sbWF4NzMxNQorCXRpLHBjYTYxMDcKKwl0aSx0Y2E2NDA4CisJdGksdGNhNjQxNgorCXRpLHRjYTY0MjQKKwl0aSx0Y2E5NTM5CisJZXhhcix4cmExMjAyCisKK0V4YW1wbGU6CisKKworCWdwaW9AMjAgeworCQljb21wYXRpYmxlID0gIm54cCxwY2E5NTA1IjsKKwkJcmVnID0gPDB4MjA+OworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfcGNhOTUwNT47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8zPjsKKwkJaW50ZXJydXB0cyA9IDwyMyBJUlFfVFlQRV9MRVZFTF9MT1c+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLXBjZjg1N3gudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1wY2Y4NTd4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGE0ZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1wY2Y4NTd4LnR4dApAQCAtMCwwICsxLDcxIEBACisqIFBDRjg1N3gtY29tcGF0aWJsZSBJL08gZXhwYW5kZXJzCisKK1RoZSBQQ0Y4NTd4LWNvbXBhdGlibGUgY2hpcHMgaGF2ZSAicXVhc2ktYmlkaXJlY3Rpb25hbCIgSS9PIGxpbmVzIHRoYXQgY2FuIGJlCitkcml2ZW4gaGlnaCBieSBhIHB1bGwtdXAgY3VycmVudCBzb3VyY2Ugb3IgZHJpdmVuIGxvdyB0byBncm91bmQuIFRoaXMgY29tYmluZXMKK3RoZSBkaXJlY3Rpb24gYW5kIG91dHB1dCBsZXZlbCBpbnRvIGEgc2luZ2xlIGJpdCBwZXIgbGluZSwgd2hpY2ggY2FuJ3QgYmUgcmVhZAorYmFjay4gV2UgY2FuJ3QgYWN0dWFsbHkga25vdyBhdCBpbml0aWFsaXphdGlvbiB0aW1lIHdoZXRoZXIgYSBsaW5lIGlzIGNvbmZpZ3VyZWQKKyhhKSBhcyBvdXRwdXQgYW5kIGRyaXZpbmcgdGhlIHNpZ25hbCBsb3cvaGlnaCwgb3IgKGIpIGFzIGlucHV0IGFuZCByZXBvcnRpbmcgYQorbG93L2hpZ2ggdmFsdWUsIHdpdGhvdXQga25vd2luZyB0aGUgbGFzdCB2YWx1ZSB3cml0dGVuIHNpbmNlIHRoZSBjaGlwIGNhbWUgb3V0CitvZiByZXNldCAoaWYgYW55KS4gVGhlIG9ubHkgcmVsaWFibGUgc29sdXRpb24gZm9yIHNldHRpbmcgdXAgbGluZSBkaXJlY3Rpb24gaXMKK3RodXMgdG8gZG8gaXQgZXhwbGljaXRseS4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZy4KKyAgICAtICJtYXhpbSxtYXg3MzI4IjogRm9yIHRoZSBNYXhpbSBNQVg3Mzc4CisgICAgLSAibWF4aW0sbWF4NzMyOSI6IEZvciB0aGUgTWF4aW0gTUFYNzMyOQorICAgIC0gIm54cCxwY2E4NTc0IjogRm9yIHRoZSBOWFAgUENBODU3NAorICAgIC0gIm54cCxwY2E4NTc1IjogRm9yIHRoZSBOWFAgUENBODU3NQorICAgIC0gIm54cCxwY2E5NjcwIjogRm9yIHRoZSBOWFAgUENBOTY3MAorICAgIC0gIm54cCxwY2E5NjcxIjogRm9yIHRoZSBOWFAgUENBOTY3MQorICAgIC0gIm54cCxwY2E5NjcyIjogRm9yIHRoZSBOWFAgUENBOTY3MgorICAgIC0gIm54cCxwY2E5NjczIjogRm9yIHRoZSBOWFAgUENBOTY3MworICAgIC0gIm54cCxwY2E5Njc0IjogRm9yIHRoZSBOWFAgUENBOTY3NAorICAgIC0gIm54cCxwY2E5Njc1IjogRm9yIHRoZSBOWFAgUENBOTY3NQorICAgIC0gIm54cCxwY2Y4NTc0IjogRm9yIHRoZSBOWFAgUENGODU3NAorICAgIC0gIm54cCxwY2Y4NTc0YSI6IEZvciB0aGUgTlhQIFBDRjg1NzRBCisgICAgLSAibnhwLHBjZjg1NzUiOiBGb3IgdGhlIE5YUCBQQ0Y4NTc1CisgICAgLSAidGksdGNhOTU1NCI6IEZvciB0aGUgVEkgVENBOTU1NAorCisgIC0gcmVnOiBJMkMgc2xhdmUgYWRkcmVzcy4KKworICAtIGdwaW8tY29udHJvbGxlcjogTWFya3MgdGhlIGRldmljZSBub2RlIGFzIGEgZ3BpbyBjb250cm9sbGVyLgorICAtICNncGlvLWNlbGxzOiBTaG91bGQgYmUgMi4gVGhlIGZpcnN0IGNlbGwgaXMgdGhlIEdQSU8gbnVtYmVyIGFuZCB0aGUgc2Vjb25kCisgICAgY2VsbCBzcGVjaWZpZXMgR1BJTyBmbGFncywgYXMgZGVmaW5lZCBpbiA8ZHQtYmluZGluZ3MvZ3Bpby9ncGlvLmg+LiBPbmx5IHRoZQorICAgIEdQSU9fQUNUSVZFX0hJR0ggYW5kIEdQSU9fQUNUSVZFX0xPVyBmbGFncyBhcmUgc3VwcG9ydGVkLgorCitPcHRpb25hbCBQcm9wZXJ0aWVzOgorCisgIC0gbGluZXMtaW5pdGlhbC1zdGF0ZXM6IEJpdG1hc2sgdGhhdCBzcGVjaWZpZXMgdGhlIGluaXRpYWwgc3RhdGUgb2YgZWFjaAorICBsaW5lLiBXaGVuIGEgYml0IGlzIHNldCB0byB6ZXJvLCB0aGUgY29ycmVzcG9uZGluZyBsaW5lIHdpbGwgYmUgaW5pdGlhbGl6ZWQgdG8KKyAgdGhlIGlucHV0IChwdWxsZWQtdXApIHN0YXRlLiBXaGVuIHRoZSAgYml0IGlzIHNldCB0byBvbmUsIHRoZSBsaW5lIHdpbGwgYmUKKyAgaW5pdGlhbGl6ZWQgdGhlIGxvdy1sZXZlbCBvdXRwdXQgc3RhdGUuIElmIHRoZSBwcm9wZXJ0eSBpcyBub3Qgc3BlY2lmaWVkCisgIGFsbCBsaW5lcyB3aWxsIGJlIGluaXRpYWxpemVkIHRvIHRoZSBpbnB1dCBzdGF0ZS4KKworICBUaGUgSS9PIGV4cGFuZGVyIGNhbiBkZXRlY3QgaW5wdXQgc3RhdGUgY2hhbmdlcywgYW5kIHRodXMgb3B0aW9uYWxseSBhY3QgYXMKKyAgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIuIFdoZW4gdGhlIGV4cGFuZGVyIGludGVycnVwdCBsaW5lIGlzIGNvbm5lY3RlZCBhbGwgdGhlCisgIGZvbGxvd2luZyBwcm9wZXJ0aWVzIG11c3QgYmUgc2V0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBwbGVhc2Ugc2VlIHRoZQorICBpbnRlcnJ1cHQgY29udHJvbGxlciBkZXZpY2UgdHJlZSBiaW5kaW5ncyBkb2N1bWVudGF0aW9uIGF2YWlsYWJsZSBhdAorICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaW50ZXJydXB0cy50eHQuCisKKyAgLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogSWRlbnRpZmllcyB0aGUgbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlci4KKyAgLSAjaW50ZXJydXB0LWNlbGxzOiBOdW1iZXIgb2YgY2VsbHMgdG8gZW5jb2RlIGFuIGludGVycnVwdCBzb3VyY2UsIHNoYWxsIGJlIDIuCisgIC0gaW50ZXJydXB0LXBhcmVudDogcGhhbmRsZSBvZiB0aGUgcGFyZW50IGludGVycnVwdCBjb250cm9sbGVyLgorICAtIGludGVycnVwdHM6IEludGVycnVwdCBzcGVjaWZpZXIgZm9yIHRoZSBjb250cm9sbGVycyBpbnRlcnJ1cHQuCisKKworUGxlYXNlIHJlZmVyIHRvIGdwaW8udHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBkZXRhaWxzIG9mIHRoZSBjb21tb24gR1BJTworYmluZGluZ3MgdXNlZCBieSBjbGllbnQgZGV2aWNlcy4KKworRXhhbXBsZTogUENGODU3NSBJL08gZXhwYW5kZXIgbm9kZQorCisJcGNmODU3NTogZ3Bpb0AyMCB7CisJCWNvbXBhdGlibGUgPSAibnhwLHBjZjg1NzUiOworCQlyZWcgPSA8MHgyMD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmlycXBpbjI+OworCQlpbnRlcnJ1cHRzID0gPDMgMD47CisJCWdwaW8tY29udHJvbGxlcjsKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCWludGVycnVwdC1jb250cm9sbGVyOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLXBvd2Vyb2ZmLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tcG93ZXJvZmYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0ZWFiOTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLXBvd2Vyb2ZmLnR4dApAQCAtMCwwICsxLDM2IEBACitEcml2ZXIgYSBHUElPIGxpbmUgdGhhdCBjYW4gYmUgdXNlZCB0byB0dXJuIHRoZSBwb3dlciBvZmYuCisKK1RoZSBkcml2ZXIgc3VwcG9ydHMgYm90aCBsZXZlbCB0cmlnZ2VyZWQgYW5kIGVkZ2UgdHJpZ2dlcmVkIHBvd2VyIG9mZi4KK0F0IGRyaXZlciBsb2FkIHRpbWUsIHRoZSBkcml2ZXIgd2lsbCByZXF1ZXN0IHRoZSBnaXZlbiBncGlvIGxpbmUgYW5kCitpbnN0YWxsIGEgcG1fcG93ZXJfb2ZmIGhhbmRsZXIuIElmIHRoZSBvcHRpb25hbCBwcm9wZXJ0aWVzICdpbnB1dCcgaXMKK25vdCBmb3VuZCwgdGhlIEdQSU8gbGluZSB3aWxsIGJlIGRyaXZlbiBpbiB0aGUgaW5hY3RpdmUKK3N0YXRlLiBPdGhlcndpc2UgaXRzIGNvbmZpZ3VyZWQgYXMgYW4gaW5wdXQuCisKK1doZW4gdGhlIHBtX3Bvd2VyX29mZiBpcyBjYWxsZWQsIHRoZSBncGlvIGlzIGNvbmZpZ3VyZWQgYXMgYW4gb3V0cHV0LAorYW5kIGRyaXZlIGFjdGl2ZSwgc28gdHJpZ2dlcmluZyBhIGxldmVsIHRyaWdnZXJlZCBwb3dlciBvZmYKK2NvbmRpdGlvbi4gVGhpcyB3aWxsIGFsc28gY2F1c2UgYW4gaW5hY3RpdmUtPmFjdGl2ZSBlZGdlIGNvbmRpdGlvbiwgc28KK3RyaWdnZXJpbmcgcG9zaXRpdmUgZWRnZSB0cmlnZ2VyZWQgcG93ZXIgb2ZmLiBBZnRlciBhIGRlbGF5IG9mIDEwMG1zLAordGhlIEdQSU8gaXMgc2V0IHRvIGluYWN0aXZlLCB0aHVzIGNhdXNpbmcgYW4gYWN0aXZlLT5pbmFjdGl2ZSBlZGdlLAordHJpZ2dlcmluZyBuZWdhdGl2ZSBlZGdlIHRyaWdnZXJlZCBwb3dlciBvZmYuIEFmdGVyIGFub3RoZXIgMTAwbXMKK2RlbGF5IHRoZSBHUElPIGlzIGRyaXZlciBhY3RpdmUgYWdhaW4uIElmIHRoZSBwb3dlciBpcyBzdGlsbCBvbiBhbmQKK3RoZSBDUFUgc3RpbGwgcnVubmluZyBhZnRlciBhIDMwMDBtcyBkZWxheSwgYSBXQVJOX09OKDEpIGlzIGVtaXR0ZWQuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImdwaW8tcG93ZXJvZmYiLgorLSBncGlvcyA6IFRoZSBHUElPIHRvIHNldCBoaWdoL2xvdywgc2VlICJncGlvcyBwcm9wZXJ0eSIgaW4KKyAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby50eHQuIElmIHRoZSBwaW4gc2hvdWxkIGJlCisgIGxvdyB0byBwb3dlciBkb3duIHRoZSBib2FyZCBzZXQgaXQgdG8gIkFjdGl2ZSBMb3ciLCBvdGhlcndpc2Ugc2V0CisgIGdwaW8gdG8gIkFjdGl2ZSBIaWdoIi4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gaW5wdXQgOiBJbml0aWFsbHkgY29uZmlndXJlIHRoZSBHUElPIGxpbmUgYXMgYW4gaW5wdXQuIE9ubHkgcmVjb25maWd1cmUKKyAgaXQgdG8gYW4gb3V0cHV0IHdoZW4gdGhlIHBtX3Bvd2VyX29mZiBmdW5jdGlvbiBpcyBjYWxsZWQuIElmIHRoaXMgb3B0aW9uYWwKKyAgcHJvcGVydHkgaXMgbm90IHNwZWNpZmllZCwgdGhlIEdQSU8gaXMgaW5pdGlhbGl6ZWQgYXMgYW4gb3V0cHV0IGluIGl0cworICBpbmFjdGl2ZSBzdGF0ZS4KKworRXhhbXBsZXM6CisKK2dwaW8tcG93ZXJvZmYgeworCWNvbXBhdGlibGUgPSAiZ3Bpby1wb3dlcm9mZiI7CisJZ3Bpb3MgPSA8JmdwaW8gNCAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLXJlc3RhcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1yZXN0YXJ0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjM3MDFiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1yZXN0YXJ0LnR4dApAQCAtMCwwICsxLDU0IEBACitEcml2ZSBhIEdQSU8gbGluZSB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlc3RhcnQgdGhlIHN5c3RlbSBmcm9tIGEgcmVzdGFydAoraGFuZGxlci4KKworVGhpcyBiaW5kaW5nIHN1cHBvcnRzIGxldmVsIGFuZCBlZGdlIHRyaWdnZXJlZCByZXNldC4gIEF0IGRyaXZlciBsb2FkCit0aW1lLCB0aGUgZHJpdmVyIHdpbGwgcmVxdWVzdCB0aGUgZ2l2ZW4gZ3BpbyBsaW5lIGFuZCBpbnN0YWxsIGEgcmVzdGFydAoraGFuZGxlci4gSWYgdGhlIG9wdGlvbmFsIHByb3BlcnRpZXMgJ29wZW4tc291cmNlJyBpcyBub3QgZm91bmQsIHRoZSBHUElPIGxpbmUKK3dpbGwgYmUgZHJpdmVuIGluIHRoZSBpbmFjdGl2ZSBzdGF0ZS4gIE90aGVyd2lzZSBpdHMgbm90IGRyaXZlbiB1bnRpbAordGhlIHJlc3RhcnQgaXMgaW5pdGlhdGVkLgorCitXaGVuIHRoZSBzeXN0ZW0gaXMgcmVzdGFydGVkLCB0aGUgcmVzdGFydCBoYW5kbGVyIHdpbGwgYmUgaW52b2tlZCBpbgorcHJpb3JpdHkgb3JkZXIuICBUaGUgZ3BpbyBpcyBjb25maWd1cmVkIGFzIGFuIG91dHB1dCwgYW5kIGRyaXZlbiBhY3RpdmUsCit0cmlnZ2VyaW5nIGEgbGV2ZWwgdHJpZ2dlcmVkIHJlc2V0IGNvbmRpdGlvbi4gVGhpcyB3aWxsIGFsc28gY2F1c2UgYW4KK2luYWN0aXZlLT5hY3RpdmUgZWRnZSBjb25kaXRpb24sIHRyaWdnZXJpbmcgcG9zaXRpdmUgZWRnZSB0cmlnZ2VyZWQKK3Jlc2V0LiBBZnRlciBhIGRlbGF5IHNwZWNpZmllZCBieSBhY3RpdmUtZGVsYXksIHRoZSBHUElPIGlzIHNldCB0bworaW5hY3RpdmUsIHRodXMgY2F1c2luZyBhbiBhY3RpdmUtPmluYWN0aXZlIGVkZ2UsIHRyaWdnZXJpbmcgbmVnYXRpdmUgZWRnZQordHJpZ2dlcmVkIHJlc2V0LiBBZnRlciBhIGRlbGF5IHNwZWNpZmllZCBieSBpbmFjdGl2ZS1kZWxheSwgdGhlIEdQSU8KK2lzIGRyaXZlbiBhY3RpdmUgYWdhaW4uICBBZnRlciBhIGRlbGF5IHNwZWNpZmllZCBieSB3YWl0LWRlbGF5LCB0aGUKK3Jlc3RhcnQgaGFuZGxlciBjb21wbGV0ZXMgYWxsb3dpbmcgb3RoZXIgcmVzdGFydCBoYW5kbGVycyB0byBiZSBhdHRlbXB0ZWQuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImdwaW8tcmVzdGFydCIuCistIGdwaW9zIDogVGhlIEdQSU8gdG8gc2V0IGhpZ2gvbG93LCBzZWUgImdwaW9zIHByb3BlcnR5IiBpbgorICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLnR4dC4gSWYgdGhlIHBpbiBzaG91bGQgYmUKKyAgbG93IHRvIHJlc2V0IHRoZSBib2FyZCBzZXQgaXQgdG8gIkFjdGl2ZSBMb3ciLCBvdGhlcndpc2Ugc2V0CisgIGdwaW8gdG8gIkFjdGl2ZSBIaWdoIi4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gb3Blbi1zb3VyY2UgOiBUcmVhdCB0aGUgR1BJTyBhcyBiZWluZyBvcGVuIHNvdXJjZSBhbmQgZGVmZXIgZHJpdmluZworICBpdCB0byB3aGVuIHRoZSByZXN0YXJ0IGlzIGluaXRpYXRlZC4gIElmIHRoaXMgb3B0aW9uYWwgcHJvcGVydHkgaXMgbm90CisgIHNwZWNpZmllZCwgdGhlIEdQSU8gaXMgaW5pdGlhbGl6ZWQgYXMgYW4gb3V0cHV0IGluIGl0cyBpbmFjdGl2ZSBzdGF0ZS4KKy0gcHJpb3JpdHkgOiBBIHByaW9yaXR5IHJhbmdpbmcgZnJvbSAwIHRvIDI1NSAoZGVmYXVsdCAxMjgpIGFjY29yZGluZyB0bworICB0aGUgZm9sbG93aW5nIGd1aWRlbGluZXM6CisJMDoJUmVzdGFydCBoYW5kbGVyIG9mIGxhc3QgcmVzb3J0LCB3aXRoIGxpbWl0ZWQgcmVzdGFydAorCQljYXBhYmlsaXRpZXMKKwkxMjg6CURlZmF1bHQgcmVzdGFydCBoYW5kbGVyOyB1c2UgaWYgbm8gb3RoZXIgcmVzdGFydCBoYW5kbGVyIGlzCisJCWV4cGVjdGVkIHRvIGJlIGF2YWlsYWJsZSwgYW5kL29yIGlmIHJlc3RhcnQgZnVuY3Rpb25hbGl0eSBpcworCQlzdWZmaWNpZW50IHRvIHJlc3RhcnQgdGhlIGVudGlyZSBzeXN0ZW0KKwkyNTU6CUhpZ2hlc3QgcHJpb3JpdHkgcmVzdGFydCBoYW5kbGVyLCB3aWxsIHByZWVtcHQgYWxsIG90aGVyCisJCXJlc3RhcnQgaGFuZGxlcnMKKy0gYWN0aXZlLWRlbGF5OiBEZWxheSAoZGVmYXVsdCAxMDApIHRvIHdhaXQgYWZ0ZXIgZHJpdmluZyBncGlvIGFjdGl2ZSBbbXNdCistIGluYWN0aXZlLWRlbGF5OiBEZWxheSAoZGVmYXVsdCAxMDApIHRvIHdhaXQgYWZ0ZXIgZHJpdmluZyBncGlvIGluYWN0aXZlIFttc10KKy0gd2FpdC1kZWxheTogRGVsYXkgKGRlZmF1bHQgMzAwMCkgdG8gd2FpdCBhZnRlciBjb21wbGV0aW5nIHJlc3RhcnQKKyAgc2VxdWVuY2UgW21zXQorCitFeGFtcGxlczoKKworZ3Bpby1yZXN0YXJ0IHsKKwljb21wYXRpYmxlID0gImdwaW8tcmVzdGFydCI7CisJZ3Bpb3MgPSA8JmdwaW8gNCAwPjsKKwlwcmlvcml0eSA9IDwxMjg+OworCWFjdGl2ZS1kZWxheSA9IDwxMDA+OworCWluYWN0aXZlLWRlbGF5ID0gPDEwMD47CisJd2FpdC1kZWxheSA9IDwzMDAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLXNhbXN1bmcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1zYW1zdW5nLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Mzc1NjI1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1zYW1zdW5nLnR4dApAQCAtMCwwICsxLDQxIEBACitTYW1zdW5nIEV4eW5vczQgR1BJTyBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IENvbXBhdGlibGUgcHJvcGVydHkgdmFsdWUgc2hvdWxkIGJlICJzYW1zdW5nLGV4eW5vczQtZ3Bpbz4iLgorCistIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICByZWdpb24uCisKKy0gI2dwaW8tY2VsbHM6IFNob3VsZCBiZSA0LiBUaGUgc3ludGF4IG9mIHRoZSBncGlvIHNwZWNpZmllciB1c2VkIGJ5IGNsaWVudCBub2RlcworICBzaG91bGQgYmUgdGhlIGZvbGxvd2luZyB3aXRoIHZhbHVlcyBkZXJpdmVkIGZyb20gdGhlIFNvQyB1c2VyIG1hbnVhbC4KKyAgICAgPFtwaGFuZGxlIG9mIHRoZSBncGlvIGNvbnRyb2xsZXIgbm9kZV0KKyAgICAgIFtwaW4gbnVtYmVyIHdpdGhpbiB0aGUgZ3BpbyBjb250cm9sbGVyXQorICAgICAgW211eCBmdW5jdGlvbl0KKyAgICAgIFtmbGFncyBhbmQgcHVsbCB1cC9kb3duXQorICAgICAgW2RyaXZlIHN0cmVuZ3RoXT4KKworICBWYWx1ZXMgZm9yIGdwaW8gc3BlY2lmaWVyOgorICAtIFBpbiBudW1iZXI6IGlzIGEgdmFsdWUgYmV0d2VlbiAwIHRvIDcuCisgIC0gRmxhZ3MgYW5kIFB1bGwgVXAvRG93bjogMCAtIFB1bGwgVXAvRG93biBEaXNhYmxlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC0gUHVsbCBEb3duIEVuYWJsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMyAtIFB1bGwgVXAgRW5hYmxlZC4KKyAgICAgICAgICBCaXQgMTYgKDB4MDAwMTAwMDApIC0gSW5wdXQgaXMgYWN0aXZlIGxvdy4KKyAgLSBEcml2ZSBTdHJlbmd0aDogMCAtIDF4LAorICAgICAgICAgICAgICAgICAgICAxIC0gM3gsCisgICAgICAgICAgICAgICAgICAgIDIgLSAyeCwKKyAgICAgICAgICAgICAgICAgICAgMyAtIDR4CisKKy0gZ3Bpby1jb250cm9sbGVyOiBTcGVjaWZpZXMgdGhhdCB0aGUgbm9kZSBpcyBhIGdwaW8gY29udHJvbGxlci4KKy0gI2FkZHJlc3MtY2VsbHM6IHNob3VsZCBiZSAxLgorLSAjc2l6ZS1jZWxsczogc2hvdWxkIGJlIDEuCisKK0V4YW1wbGU6CisKKwlncGEwOiBncGlvLWNvbnRyb2xsZXJAMTE0MDAwMDAgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M0LWdwaW8iOworCQlyZWcgPSA8MHgxMTQwMDAwMCAweDIwPjsKKwkJI2dwaW8tY2VsbHMgPSA8ND47CisJCWdwaW8tY29udHJvbGxlcjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1zdGVyaWNzc29uLWNvaDkwMS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLXN0ZXJpY3Nzb24tY29oOTAxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDY2NWI0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1zdGVyaWNzc29uLWNvaDkwMS50eHQKQEAgLTAsMCArMSw3IEBACitTVC1Fcmljc3NvbiBDT0ggOTAxIDU3MS8zIEdQSU8gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBDb21wYXRpYmxlIHByb3BlcnR5IHZhbHVlIHNob3VsZCBiZSAic3Rlcmljc3NvbixncGlvLWNvaDkwMSIKKy0gcmVnOiBQaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgIHJlZ2lvbi4KKy0gaW50ZXJydXB0czogdGhlIDAuLi5uIGludGVycnVwdHMgYXNzaWduZWQgdG8gdGhlIGRpZmZlcmVudCBHUElPIHBvcnRzL2JhbmtzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1zdG1wZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLXN0bXBlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGU0Y2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby1zdG1wZS50eHQKQEAgLTAsMCArMSwxOCBAQAorU1RNUEUgZ3BpbworLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZTogInN0LHN0bXBlLWdwaW8iCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgLSBzdCxub3JlcXVlc3QtbWFzazogYml0bWFzayBzcGVjaWZ5aW5nIHdoaWNoIEdQSU9zIHNob3VsZCBfbm90XyBiZSByZXF1ZXN0YWJsZQorICAgZHVlIHRvIGRpZmZlcmVudCB1c2FnZSAoZS5nLiB0b3VjaCwga2V5cGFkKQorCitOb2RlIG5hbWUgbXVzdCBiZSBzdG1wZV9ncGlvIGFuZCBzaG91bGQgYmUgY2hpbGQgbm9kZSBvZiBzdG1wZSBub2RlIHRvIHdoaWNoIGl0CitiZWxvbmdzLgorCitFeGFtcGxlOgorCXN0bXBlX2dwaW8geworCQljb21wYXRpYmxlID0gInN0LHN0bXBlLWdwaW8iOworCQlzdCxub3JlcXVlc3QtbWFzayA9IDwweDIwPjsJLy9ncGlvIDUgY2FuJ3QgYmUgdXNlZAorCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLXN0cC14d2F5LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tc3RwLXh3YXkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1NGRlMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLXN0cC14d2F5LnR4dApAQCAtMCwwICsxLDQyIEBACitMYW50aXEgU29DIFNlcmlhbCBUbyBQYXJhbGxlbCAoU1RQKSBHUElPIGNvbnRyb2xsZXIKKworVGhlIFNlcmlhbCBUbyBQYXJhbGxlbCAoU1RQKSBpcyBmb3VuZCBvbiBNSVBTIGJhc2VkIExhbnRpcSBzb2NzLiBJdCBpcyBhCitwZXJpcGhlcmFsIGNvbnRyb2xsZXIgdXNlZCB0byBkcml2ZSBleHRlcm5hbCBzaGlmdCByZWdpc3RlciBjYXNjYWRlcy4gQXQgbW9zdAorMyBncm91cHMgb2YgOCBiaXRzIGNhbiBiZSBkcml2ZW4uIFRoZSBoYXJkd2FyZSBpcyBhYmxlIHRvIGFsbG93IHRoZSBEU0wgbW9kZW0KK3RvIGRyaXZlIHRoZSAyIExTQnMgb2YgdGhlIGNhc2NhZGUgYXV0b21hdGljYWxseS4KKworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJsYW50aXEsZ3Bpby1zdHAteHdheSIKKy0gcmVnIDogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKy0gI2dwaW8tY2VsbHMgOiBTaG91bGQgYmUgdHdvLiAgVGhlIGZpcnN0IGNlbGwgaXMgdGhlIHBpbiBudW1iZXIgYW5kCisgIHRoZSBzZWNvbmQgY2VsbCBpcyB1c2VkIHRvIHNwZWNpZnkgb3B0aW9uYWwgcGFyYW1ldGVycyAoY3VycmVudGx5CisgIHVudXNlZCkuCistIGdwaW8tY29udHJvbGxlciA6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIGdwaW8gY29udHJvbGxlci4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gbGFudGlxLHNoYWRvdyA6IFRoZSBkZWZhdWx0IHZhbHVlIHRoYXQgd2Ugc2hhbGwgYXNzdW1lIGFzIGFscmVhZHkgc2V0IG9uIHRoZQorICBzaGlmdCByZWdpc3RlciBjYXNjYWRlLgorLSBsYW50aXEsZ3JvdXBzIDogU2V0IHRoZSAzIGJpdCBtYXNrIHRvIHNlbGVjdCB3aGljaCBvZiB0aGUgMyBncm91cHMgYXJlIGVuYWJsZWQKKyAgaW4gdGhlIHNoaWZ0IHJlZ2lzdGVyIGNhc2NhZGUuCistIGxhbnRpcSxkc2wgOiBUaGUgZHNsIGNvcmUgY2FuIGNvbnRyb2wgdGhlIDIgTFNCcyBvZiB0aGUgZ3BpbyBjYXNjYWRlLiBUaGlzIDIgYml0CisgIHByb3BlcnR5IGNhbiBlbmFibGUgdGhpcyBmZWF0dXJlLgorLSBsYW50aXEscGh5MSA6IFRoZSBncGh5MSBjb3JlIGNhbiBjb250cm9sIDMgYml0cyBvZiB0aGUgZ3BpbyBjYXNjYWRlLgorLSBsYW50aXEscGh5MiA6IFRoZSBncGh5MiBjb3JlIGNhbiBjb250cm9sIDMgYml0cyBvZiB0aGUgZ3BpbyBjYXNjYWRlLgorLSBsYW50aXEscmlzaW5nIDogdXNlIHJpc2luZyBpbnN0ZWFkIG9mIGZhbGxpbmcgZWRnZSBmb3IgdGhlIHNoaWZ0IHJlZ2lzdGVyCisKK0V4YW1wbGU6CisKK2dwaW8xOiBzdHBARTEwMEJCMCB7CisJY29tcGF0aWJsZSA9ICJsYW50aXEsZ3Bpby1zdHAteHdheSI7CisJcmVnID0gPDB4RTEwMEJCMCAweDQwPjsKKwkjZ3Bpby1jZWxscyA9IDwyPjsKKwlncGlvLWNvbnRyb2xsZXI7CisKKwlsYW50aXEsc2hhZG93ID0gPDB4ZmZmZj47CisJbGFudGlxLGdyb3VwcyA9IDwweDc+OworCWxhbnRpcSxkc2wgPSA8MHgzPjsKKwlsYW50aXEscGh5MSA9IDwweDc+OworCWxhbnRpcSxwaHkyID0gPDB4Nz47CisJLyogbGFudGlxLHJpc2luZzsgKi8KK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLXN4MTUweC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLXN4MTUweC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEyYmI4NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tc3gxNTB4LnR4dApAQCAtMCwwICsxLDQwIEBACitTRU1URUNIIFNYMTUweCBHUElPIGV4cGFuZGVyIGJpbmRpbmdzCisKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgInNlbXRlY2gsc3gxNTA2cSIsCisJCQkic2VtdGVjaCxzeDE1MDhxIiwKKwkJCSJzZW10ZWNoLHN4MTUwOXEiLgorCistIHJlZzogVGhlIEkyQyBzbGF2ZSBhZGRyZXNzIGZvciB0aGlzIGRldmljZS4KKworLSBpbnRlcnJ1cHQtcGFyZW50OiBwaGFuZGxlIG9mIHRoZSBwYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIuCisKKy0gaW50ZXJydXB0czogSW50ZXJydXB0IHNwZWNpZmllciBmb3IgdGhlIGNvbnRyb2xsZXJzIGludGVycnVwdC4KKworLSAjZ3Bpby1jZWxsczogU2hvdWxkIGJlIDIuIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBHUElPIG51bWJlciBhbmQgdGhlCisJCXNlY29uZCBjZWxsIGlzIHVzZWQgdG8gc3BlY2lmeSBvcHRpb25hbCBwYXJhbWV0ZXJzOgorCQliaXQgMDogcG9sYXJpdHkgKDA6IG5vcm1hbCwgMTogaW52ZXJ0ZWQpCisKKy0gZ3Bpby1jb250cm9sbGVyOiBNYXJrcyB0aGUgZGV2aWNlIGFzIGEgR1BJTyBjb250cm9sbGVyLgorCistIGludGVycnVwdC1jb250cm9sbGVyOiBNYXJrcyB0aGUgZGV2aWNlIGFzIGEgaW50ZXJydXB0IGNvbnRyb2xsZXIuCisKK1RoZSBHUElPIGV4cGFuZGVyIGNhbiBvcHRpb25hbGx5IGJlIHVzZWQgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIsIGluCit3aGljaCBjYXNlIGl0IHVzZXMgdGhlIGRlZmF1bHQgdHdvIGNlbGwgc3BlY2lmaWVyIGFzIGRlc2NyaWJlZCBpbgorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2ludGVycnVwdHMudHh0LgorCitFeGFtcGxlOgorCisJaTJjX2dwaW9fZXhwYW5kZXJAMjB7CisJCSNncGlvLWNlbGxzID0gPDI+OworCQkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCQljb21wYXRpYmxlID0gInNlbXRlY2gsc3gxNTA2cSI7CisJCXJlZyA9IDwweDIwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3Bpb18xPjsKKwkJaW50ZXJydXB0cyA9IDwxNiAwPjsKKworCQlncGlvLWNvbnRyb2xsZXI7CisJCWludGVycnVwdC1jb250cm9sbGVyOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLXR3bDQwMzAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby10d2w0MDMwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Njc4OGZkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby10d2w0MDMwLnR4dApAQCAtMCwwICsxLDI5IEBACit0d2w0MDMwIEdQSU8gY29udHJvbGxlciBiaW5kaW5ncworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOgorICAtICJ0aSx0d2w0MDMwLWdwaW8iIGZvciB0d2w0MDMwIEdQSU8gY29udHJvbGxlcgorLSAjZ3Bpby1jZWxscyA6IFNob3VsZCBiZSB0d28uCisgIC0gZmlyc3QgY2VsbCBpcyB0aGUgcGluIG51bWJlcgorICAtIHNlY29uZCBjZWxsIGlzIHVzZWQgdG8gc3BlY2lmeSBvcHRpb25hbCBwYXJhbWV0ZXJzICh1bnVzZWQpCistIGdwaW8tY29udHJvbGxlciA6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIEdQSU8gY29udHJvbGxlci4KKy0gI2ludGVycnVwdC1jZWxscyA6IFNob3VsZCBiZSAyLgorLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogTWFyayB0aGUgZGV2aWNlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIKKyAgVGhlIGZpcnN0IGNlbGwgaXMgdGhlIEdQSU8gbnVtYmVyLgorICBUaGUgc2Vjb25kIGNlbGwgaXMgbm90IHVzZWQuCistIHRpLHVzZS1sZWRzIDogRW5hYmxlcyBMRURBIGFuZCBMRURCIG91dHB1dHMgaWYgc2V0CistIHRpLGRlYm91bmNlIDogaWYgbi10aCBiaXQgaXMgc2V0LCBkZWJvdW5jZXMgR1BJTy1uCistIHRpLG1tYy1jZCA6IGlmIG4tdGggYml0IGlzIHNldCwgR1BJTy1uIGNvbnRyb2xzIFZNTUMobisxKQorLSB0aSxwdWxsdXBzIDogaWYgbi10aCBiaXQgaXMgc2V0LCBzZXQgYSBwdWxsdXAgb24gR1BJTy1uCistIHRpLHB1bGxkb3ducyA6IGlmIG4tdGggYml0IGlzIHNldCwgc2V0IGEgcHVsbGRvd24gb24gR1BJTy1uCisKK0V4YW1wbGU6CisKK3R3bF9ncGlvOiBncGlvIHsKKyAgICBjb21wYXRpYmxlID0gInRpLHR3bDQwMzAtZ3BpbyI7CisgICAgI2dwaW8tY2VsbHMgPSA8Mj47CisgICAgZ3Bpby1jb250cm9sbGVyOworICAgICNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisgICAgaW50ZXJydXB0LWNvbnRyb2xsZXI7CisgICAgdGksdXNlLWxlZHM7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby10ejEwOTAtcGRjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tdHoxMDkwLXBkYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZkOThmZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tdHoxMDkwLXBkYy50eHQKQEAgLTAsMCArMSw0NSBAQAorSW1nVGVjIFRaMTA5MCBQREMgR1BJTyBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IENvbXBhdGlibGUgcHJvcGVydHkgdmFsdWUgc2hvdWxkIGJlICJpbWcsdHoxMDkwLXBkYy1ncGlvIi4KKworLSByZWc6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLiBUaGlzIHN0YXJ0cyBhdCBhbmQgY292ZXIgdGhlIFNPQ19HUElPX0NPTlRST0wgcmVnaXN0ZXJzLgorCistIGdwaW8tY29udHJvbGxlcjogU3BlY2lmaWVzIHRoYXQgdGhlIG5vZGUgaXMgYSBncGlvIGNvbnRyb2xsZXIuCisKKy0gI2dwaW8tY2VsbHM6IFNob3VsZCBiZSAyLiBUaGUgc3ludGF4IG9mIHRoZSBncGlvIHNwZWNpZmllciB1c2VkIGJ5IGNsaWVudAorICBub2RlcyBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlcy4KKyAgICAgPFtwaGFuZGxlIG9mIHRoZSBncGlvIGNvbnRyb2xsZXIgbm9kZV0KKyAgICAgIFtQREMgZ3BpbyBudW1iZXJdCisgICAgICBbZ3BpbyBmbGFnc10+CisKKyAgVmFsdWVzIGZvciBncGlvIHNwZWNpZmllcjoKKyAgLSBHUElPIG51bWJlcjogYSB2YWx1ZSBpbiB0aGUgcmFuZ2UgMCB0byA2LgorICAtIEdQSU8gZmxhZ3M6IGJpdCBmaWVsZCBvZiBmbGFncywgYXMgZGVmaW5lZCBpbiA8ZHQtYmluZGluZ3MvZ3Bpby9ncGlvLmg+LgorICAgIE9ubHkgdGhlIGZvbGxvd2luZyBmbGFncyBhcmUgc3VwcG9ydGVkOgorICAgICAgR1BJT19BQ1RJVkVfSElHSAorICAgICAgR1BJT19BQ1RJVkVfTE9XCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGdwaW8tcmFuZ2VzOiBNYXBwaW5nIHRvIHBpbiBjb250cm9sbGVyIHBpbnMgKGFzIGRlc2NyaWJlZCBpbgorICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLnR4dCkKKworLSBpbnRlcnJ1cHRzOiBJbmRpdmlkdWFsIHN5c3dha2UgaW50ZXJydXB0cyAob3RoZXIgR1BJT3MgY2Fubm90IGludGVycnVwdCkKKworCitFeGFtcGxlOgorCisJcGRjX2dwaW9zOiBncGlvLWNvbnRyb2xsZXJAMDIwMDY1MDAgeworCQlncGlvLWNvbnRyb2xsZXI7CisJCSNncGlvLWNlbGxzID0gPDI+OworCisJCWNvbXBhdGlibGUgPSAiaW1nLHR6MTA5MC1wZGMtZ3BpbyI7CisJCXJlZyA9IDwweDAyMDA2NTAwIDB4MTAwPjsKKworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZwZGM+OworCQlpbnRlcnJ1cHRzID0JPDggIElSUV9UWVBFX05PTkU+LAkvKiBTeXN3YWtlIDAgKi8KKwkJCQk8OSAgSVJRX1RZUEVfTk9ORT4sCS8qIFN5c3dha2UgMSAqLworCQkJCTwxMCBJUlFfVFlQRV9OT05FPjsJLyogU3lzd2FrZSAyICovCisJCWdwaW8tcmFuZ2VzID0gPCZwZGNfcGluY3RybCAwIDAgNz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tdHoxMDkwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tdHoxMDkwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzRjZGYzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby10ejEwOTAudHh0CkBAIC0wLDAgKzEsODggQEAKK0ltZ1RlYyBUWjEwOTAgR1BJTyBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IENvbXBhdGlibGUgcHJvcGVydHkgdmFsdWUgc2hvdWxkIGJlICJpbWcsdHoxMDkwLWdwaW8iLgorCistIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICByZWdpb24uCisKKy0gI2FkZHJlc3MtY2VsbHM6IFNob3VsZCBiZSAxIChmb3IgYmFuayBzdWJub2RlcykKKworLSAjc2l6ZS1jZWxsczogU2hvdWxkIGJlIDAgKGZvciBiYW5rIHN1Ym5vZGVzKQorCistIEVhY2ggYmFuayBvZiBHUElPcyBzaG91bGQgaGF2ZSBhIHN1Ym5vZGUgdG8gcmVwcmVzZW50IGl0LgorCisgIEJhbmsgc3Vibm9kZSByZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIHJlZzogSW5kZXggb2YgYmFuayBpbiB0aGUgcmFuZ2UgMCB0byAyLgorCisgIC0gZ3Bpby1jb250cm9sbGVyOiBTcGVjaWZpZXMgdGhhdCB0aGUgbm9kZSBpcyBhIGdwaW8gY29udHJvbGxlci4KKworICAtICNncGlvLWNlbGxzOiBTaG91bGQgYmUgMi4gVGhlIHN5bnRheCBvZiB0aGUgZ3BpbyBzcGVjaWZpZXIgdXNlZCBieSBjbGllbnQKKyAgICBub2RlcyBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHZhbHVlcy4KKyAgICAgICA8W3BoYW5kbGUgb2YgdGhlIGdwaW8gY29udHJvbGxlciBub2RlXQorICAgICAgICBbZ3BpbyBudW1iZXIgd2l0aGluIHRoZSBncGlvIGJhbmtdCisgICAgICAgIFtncGlvIGZsYWdzXT4KKworICAgIFZhbHVlcyBmb3IgZ3BpbyBzcGVjaWZpZXI6CisgICAgLSBHUElPIG51bWJlcjogYSB2YWx1ZSBpbiB0aGUgcmFuZ2UgMCB0byAyOS4KKyAgICAtIEdQSU8gZmxhZ3M6IGJpdCBmaWVsZCBvZiBmbGFncywgYXMgZGVmaW5lZCBpbiA8ZHQtYmluZGluZ3MvZ3Bpby9ncGlvLmg+LgorICAgICAgT25seSB0aGUgZm9sbG93aW5nIGZsYWdzIGFyZSBzdXBwb3J0ZWQ6CisgICAgICAgIEdQSU9fQUNUSVZFX0hJR0gKKyAgICAgICAgR1BJT19BQ1RJVkVfTE9XCisKKyAgQmFuayBzdWJub2RlIG9wdGlvbmFsIHByb3BlcnRpZXM6CisgIC0gZ3Bpby1yYW5nZXM6IE1hcHBpbmcgdG8gcGluIGNvbnRyb2xsZXIgcGlucyAoYXMgZGVzY3JpYmVkIGluCisgICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby50eHQpCisKKyAgLSBpbnRlcnJ1cHRzOiBJbnRlcnJ1cHQgZm9yIHRoZSBlbnRpcmUgYmFuaworCisgIC0gaW50ZXJydXB0LWNvbnRyb2xsZXI6IFNwZWNpZmllcyB0aGF0IHRoZSBub2RlIGlzIGFuIGludGVycnVwdCBjb250cm9sbGVyCisKKyAgLSAjaW50ZXJydXB0LWNlbGxzOiBTaG91bGQgYmUgMi4gVGhlIHN5bnRheCBvZiB0aGUgaW50ZXJydXB0IHNwZWNpZmllciB1c2VkIGJ5CisgICAgY2xpZW50IG5vZGVzIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgdmFsdWVzLgorICAgICAgIDxbcGhhbmRsZSBvZiB0aGUgaW50ZXJ1cnVwdCBjb250cm9sbGVyXQorICAgICAgICBbZ3BpbyBudW1iZXIgd2l0aGluIHRoZSBncGlvIGJhbmtdCisgICAgICAgIFtpcnEgZmxhZ3NdPgorCisgICAgVmFsdWVzIGZvciBpcnEgc3BlY2lmaWVyOgorICAgIC0gR1BJTyBudW1iZXI6IGEgdmFsdWUgaW4gdGhlIHJhbmdlIDAgdG8gMjkKKyAgICAtIElSUSBmbGFnczogdmFsdWUgdG8gZGVzY3JpYmUgZWRnZSBhbmQgbGV2ZWwgdHJpZ2dlcmluZywgYXMgZGVmaW5lZCBpbgorICAgICAgPGR0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oPi4gT25seSB0aGUgZm9sbG93aW5nIGZsYWdzIGFyZQorICAgICAgc3VwcG9ydGVkOgorICAgICAgICBJUlFfVFlQRV9FREdFX1JJU0lORworICAgICAgICBJUlFfVFlQRV9FREdFX0ZBTExJTkcKKyAgICAgICAgSVJRX1RZUEVfRURHRV9CT1RICisgICAgICAgIElSUV9UWVBFX0xFVkVMX0hJR0gKKyAgICAgICAgSVJRX1RZUEVfTEVWRUxfTE9XCisKKworCitFeGFtcGxlOgorCisJZ3Bpb3M6IGdwaW8tY29udHJvbGxlckAwMjAwNTgwMCB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJpbWcsdHoxMDkwLWdwaW8iOworCQlyZWcgPSA8MHgwMjAwNTgwMCAweDkwPjsKKworCQkvKiBiYW5rIDAgd2l0aCBhbiBpbnRlcnJ1cHQgKi8KKwkJZ3Bpb3MwOiBiYW5rQDAgeworCQkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCQkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCQkJcmVnID0gPDA+OworCQkJaW50ZXJydXB0cyA9IDwxMyBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJCWdwaW8tY29udHJvbGxlcjsKKwkJCWdwaW8tcmFuZ2VzID0gPCZwaW5jdHJsIDAgMCAzMD47CisJCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJfTsKKworCQkvKiBiYW5rIDIgd2l0aG91dCBpbnRlcnJ1cHQgKi8KKwkJZ3Bpb3MyOiBiYW5rQDIgeworCQkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCQlyZWcgPSA8Mj47CisJCQlncGlvLWNvbnRyb2xsZXI7CisJCQlncGlvLXJhbmdlcyA9IDwmcGluY3RybCAwIDYwIDMwPjsKKwkJfTsKKwl9OworCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tdmY2MTAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby12ZjYxMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM2Y2M5OQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tdmY2MTAudHh0CkBAIC0wLDAgKzEsNTUgQEAKKyogRnJlZXNjYWxlIFZGNjEwIFBPUlQvR1BJTyBtb2R1bGUKKworVGhlIEZyZWVzY2FsZSBQT1JUL0dQSU8gbW9kdWxlcyBhcmUgdHdvIGFkamFjZW50IG1vZHVsZXMgcHJvdmlkaW5nIEdQSU8KK2Z1bmN0aW9uYWxpdHkuIEVhY2ggcGFpciBzZXJ2ZXMgMzIgR1BJT3MuIFRoZSBWRjYxMCBoYXMgNSBpbnN0YW5jZXMgb2YKK2VhY2gsIGFuZCBlYWNoIFBPUlQgbW9kdWxlIGhhcyBpdHMgb3duIGludGVycnVwdC4KKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgR1BJTyBub2RlOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJmc2wsPHNvYz4tZ3BpbyIsIGN1cnJlbnRseSAiZnNsLHZmNjEwLWdwaW8iCistIHJlZyA6IFRoZSBmaXJzdCByZWcgdHVwbGUgcmVwcmVzZW50cyB0aGUgUE9SVCBtb2R1bGUsIHRoZSBzZWNvbmQgdHVwbGUKKyAgdGhlIEdQSU8gbW9kdWxlLgorLSBpbnRlcnJ1cHRzIDogU2hvdWxkIGJlIHRoZSBwb3J0IGludGVycnVwdCBzaGFyZWQgYnkgYWxsIDMyIHBpbnMuCistIGdwaW8tY29udHJvbGxlciA6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIGdwaW8gY29udHJvbGxlci4KKy0gI2dwaW8tY2VsbHMgOiBTaG91bGQgYmUgdHdvLiBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgcGluIG51bWJlciBhbmQKKyAgdGhlIHNlY29uZCBjZWxsIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgZ3BpbyBwb2xhcml0eToKKyAgICAgIDAgPSBhY3RpdmUgaGlnaAorICAgICAgMSA9IGFjdGl2ZSBsb3cKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXI6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlci4KKy0gI2ludGVycnVwdC1jZWxscyA6IFNob3VsZCBiZSAyLiAgVGhlIGZpcnN0IGNlbGwgaXMgdGhlIEdQSU8gbnVtYmVyLgorICBUaGUgc2Vjb25kIGNlbGwgYml0c1szOjBdIGlzIHVzZWQgdG8gc3BlY2lmeSB0cmlnZ2VyIHR5cGUgYW5kIGxldmVsIGZsYWdzOgorICAgICAgMSA9IGxvdy10by1oaWdoIGVkZ2UgdHJpZ2dlcmVkLgorICAgICAgMiA9IGhpZ2gtdG8tbG93IGVkZ2UgdHJpZ2dlcmVkLgorICAgICAgNCA9IGFjdGl2ZSBoaWdoIGxldmVsLXNlbnNpdGl2ZS4KKyAgICAgIDggPSBhY3RpdmUgbG93IGxldmVsLXNlbnNpdGl2ZS4KKworTm90ZTogRWFjaCBHUElPIHBvcnQgc2hvdWxkIGhhdmUgYW4gYWxpYXMgY29ycmVjdGx5IG51bWJlcmVkIGluICJhbGlhc2VzIgorbm9kZS4KKworRXhhbXBsZXM6CisKK2FsaWFzZXMgeworCWdwaW8wID0gJmdwaW8xOworCWdwaW8xID0gJmdwaW8yOworfTsKKworZ3BpbzE6IGdwaW9ANDAwNDkwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLHZmNjEwLWdwaW8iOworCXJlZyA9IDwweDQwMDQ5MDAwIDB4MTAwMCAweDQwMGZmMDAwIDB4NDA+OworCWludGVycnVwdHMgPSA8MCAxMDcgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJZ3Bpby1jb250cm9sbGVyOworCSNncGlvLWNlbGxzID0gPDI+OworCWludGVycnVwdC1jb250cm9sbGVyOworCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJZ3Bpby1yYW5nZXMgPSA8JmlvbXV4YyAwIDAgMzI+OworfTsKKworZ3BpbzI6IGdwaW9ANDAwNGEwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLHZmNjEwLWdwaW8iOworCXJlZyA9IDwweDQwMDRhMDAwIDB4MTAwMCAweDQwMGZmMDQwIDB4NDA+OworCWludGVycnVwdHMgPSA8MCAxMDggSVJRX1RZUEVfTEVWRUxfSElHSD47CisJZ3Bpby1jb250cm9sbGVyOworCSNncGlvLWNlbGxzID0gPDI+OworCWludGVycnVwdC1jb250cm9sbGVyOworCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJZ3Bpby1yYW5nZXMgPSA8JmlvbXV4YyAwIDMyIDMyPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLXhnZW5lLXNiLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8teGdlbmUtc2IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhZTEzMDAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLXhnZW5lLXNiLnR4dApAQCAtMCwwICsxLDMyIEBACitBUE0gWC1HZW5lIFN0YW5kYnkgR1BJTyBjb250cm9sbGVyIGJpbmRpbmdzCisKK1RoaXMgaXMgYSBncGlvIGNvbnRyb2xsZXIgaW4gdGhlIHN0YW5kYnkgZG9tYWluLgorCitUaGVyZSBhcmUgMjAgR1BJTyBwaW5zIGZyb20gMC4uMjEuIFRoZXJlIGlzIG5vIEdQSU9fRFMxNCBvciBHUElPX0RTMTUsCitvbmx5IEdQSU9fRFM4Li5HUElPX0RTMTMgc3VwcG9ydCBpbnRlcnJ1cHRzLiBUaGUgSVJRIG1hcHBpbmcKK2lzIGN1cnJlbnRseSAxLXRvLTEgb24gaW50ZXJydXB0cyAweDI4IHRocnUgMHgyZC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImFwbSx4Z2VuZS1ncGlvLXNiIiBmb3IgdGhlIFgtR2VuZSBTdGFuZGJ5IEdQSU8gY29udHJvbGxlcgorLSByZWc6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgY29udHJvbGxlcidzIHJlZ2lzdGVycworLSAjZ3Bpby1jZWxsczogU2hvdWxkIGJlIHR3by4KKwktIGZpcnN0IGNlbGwgaXMgdGhlIHBpbiBudW1iZXIKKwktIHNlY29uZCBjZWxsIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgZ3BpbyBwb2xhcml0eToKKwkJMCA9IGFjdGl2ZSBoaWdoCisJCTEgPSBhY3RpdmUgbG93CistIGdwaW8tY29udHJvbGxlcjogTWFya3MgdGhlIGRldmljZSBub2RlIGFzIGEgR1BJTyBjb250cm9sbGVyLgorLSBpbnRlcnJ1cHRzOiBTaGFsbCBjb250YWluIGV4YWN0bHkgNiBpbnRlcnJ1cHRzLgorCitFeGFtcGxlOgorCXNiZ3Bpbzogc2JncGlvQDE3MDAxMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcG0seGdlbmUtZ3Bpby1zYiI7CisJCXJlZyA9IDwweDAgMHgxNzAwMTAwMCAweDAgMHg0MDA+OworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJZ3Bpby1jb250cm9sbGVyOworCQlpbnRlcnJ1cHRzID0gCTwweDAgMHgyOCAweDE+LAorCQkJCTwweDAgMHgyOSAweDE+LAorCQkJCTwweDAgMHgyYSAweDE+LAorCQkJCTwweDAgMHgyYiAweDE+LAorCQkJCTwweDAgMHgyYyAweDE+LAorCQkJCTwweDAgMHgyZCAweDE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLXhnZW5lLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8teGdlbmUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2ZGJiMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLXhnZW5lLnR4dApAQCAtMCwwICsxLDIyIEBACitBUE0gWC1HZW5lIFNvQyBHUElPIGNvbnRyb2xsZXIgYmluZGluZ3MKKworVGhpcyBpcyBhIGdwaW8gY29udHJvbGxlciB0aGF0IGlzIHBhcnQgb2YgdGhlIGZsYXNoIGNvbnRyb2xsZXIuCitUaGlzIGdwaW8gY29udHJvbGxlciBjb250cm9scyBhIHRvdGFsIG9mIDQ4IGdwaW9zLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiYXBtLHhnZW5lLWdwaW8iIGZvciBYLUdlbmUgR1BJTyBjb250cm9sbGVyCistIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSBjb250cm9sbGVyJ3MgcmVnaXN0ZXJzCistICNncGlvLWNlbGxzOiBTaG91bGQgYmUgdHdvLgorCS0gZmlyc3QgY2VsbCBpcyB0aGUgcGluIG51bWJlcgorCS0gc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBncGlvIHBvbGFyaXR5OgorCQkwID0gYWN0aXZlIGhpZ2gKKwkJMSA9IGFjdGl2ZSBsb3cKKy0gZ3Bpby1jb250cm9sbGVyOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYSBHUElPIGNvbnRyb2xsZXIuCisKK0V4YW1wbGU6CisJZ3BpbzA6IGdwaW8wQDE3MDFjMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcG0seGdlbmUtZ3BpbyI7CisJCXJlZyA9IDwweDAgMHgxNzAxYzAwMCAweDAgMHg0MD47CisJCWdwaW8tY29udHJvbGxlcjsKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8teGlsaW54LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8teGlsaW54LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2JmNGJlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby14aWxpbngudHh0CkBAIC0wLDAgKzEsNDggQEAKK1hpbGlueCBwbGIvYXhpIEdQSU8gY29udHJvbGxlcgorCitEdWFsIGNoYW5uZWwgR1BJTyBjb250cm9sbGVyIHdpdGggY29uZmlndXJhYmxlIG51bWJlciBvZiBwaW5zCisoZnJvbSAxIHRvIDMyIHBlciBjaGFubmVsKS4gRXZlcnkgcGluIGNhbiBiZSBjb25maWd1cmVkIGFzCitpbnB1dC9vdXRwdXQvdHJpc3RhdGUuIEJvdGggY2hhbm5lbHMgc2hhcmUgdGhlIHNhbWUgZ2xvYmFsIElSUSBidXQKK2xvY2FsIGludGVycnVwdHMgY2FuIGJlIGVuYWJsZWQgb24gY2hhbm5lbCBiYXNpcy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAieGxueCx4cHMtZ3Bpby0xLjAwLmEiCistIHJlZyA6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistICNncGlvLWNlbGxzIDogU2hvdWxkIGJlIHR3by4gVGhlIGZpcnN0IGNlbGwgaXMgdGhlIHBpbiBudW1iZXIgYW5kIHRoZQorICBzZWNvbmQgY2VsbCBpcyB1c2VkIHRvIHNwZWNpZnkgb3B0aW9uYWwgcGFyYW1ldGVycyAoY3VycmVudGx5IHVudXNlZCkuCistIGdwaW8tY29udHJvbGxlciA6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIEdQSU8gY29udHJvbGxlci4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gaW50ZXJydXB0cyA6IEludGVycnVwdCBtYXBwaW5nIGZvciBHUElPIElSUS4KKy0gaW50ZXJydXB0LXBhcmVudCA6IFBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGF0CisgIHNlcnZpY2VzIGludGVycnVwdHMgZm9yIHRoaXMgZGV2aWNlLgorLSB4bG54LGFsbC1pbnB1dHMgOiBpZiBuLXRoIGJpdCBpcyBzZXR1cCwgR1BJTy1uIGlzIGlucHV0CistIHhsbngsZG91dC1kZWZhdWx0IDogaWYgbi10aCBiaXQgaXMgMSwgR1BJTy1uIGRlZmF1bHQgdmFsdWUgaXMgMQorLSB4bG54LGdwaW8td2lkdGggOiBncGlvIHdpZHRoCistIHhsbngsdHJpLWRlZmF1bHQgOiBpZiBuLXRoIGJpdCBpcyAxLCBHUElPLW4gaXMgaW4gdHJpc3RhdGUgbW9kZQorLSB4bG54LGlzLWR1YWwgOiBpZiAxLCBjb250cm9sbGVyIGFsc28gdXNlcyB0aGUgc2Vjb25kIGNoYW5uZWwKKy0geGxueCxhbGwtaW5wdXRzLTIgOiBhcyBhYm92ZSBidXQgZm9yIHRoZSBzZWNvbmQgY2hhbm5lbAorLSB4bG54LGRvdXQtZGVmYXVsdC0yIDogYXMgYWJvdmUgYnV0IHRoZSBzZWNvbmQgY2hhbm5lbAorLSB4bG54LGdwaW8yLXdpZHRoIDogYXMgYWJvdmUgYnV0IGZvciB0aGUgc2Vjb25kIGNoYW5uZWwKKy0geGxueCx0cmktZGVmYXVsdC0yIDogYXMgYWJvdmUgYnV0IGZvciB0aGUgc2Vjb25kIGNoYW5uZWwKKworCitFeGFtcGxlOgorZ3BpbzogZ3Bpb0A0MDAwMDAwMCB7CisJI2dwaW8tY2VsbHMgPSA8Mj47CisJY29tcGF0aWJsZSA9ICJ4bG54LHhwcy1ncGlvLTEuMDAuYSI7CisJZ3Bpby1jb250cm9sbGVyIDsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZtaWNyb2JsYXplXzBfaW50Yz47CisJaW50ZXJydXB0cyA9IDwgNiAyID47CisJcmVnID0gPCAweDQwMDAwMDAwIDB4MTAwMDAgPjsKKwl4bG54LGFsbC1pbnB1dHMgPSA8MHgwPjsKKwl4bG54LGFsbC1pbnB1dHMtMiA9IDwweDA+OworCXhsbngsZG91dC1kZWZhdWx0ID0gPDB4MD47CisJeGxueCxkb3V0LWRlZmF1bHQtMiA9IDwweDA+OworCXhsbngsZ3Bpby13aWR0aCA9IDwweDI+OworCXhsbngsZ3BpbzItd2lkdGggPSA8MHgyPjsKKwl4bG54LGludGVycnVwdC1wcmVzZW50ID0gPDB4MT47CisJeGxueCxpcy1kdWFsID0gPDB4MT47CisJeGxueCx0cmktZGVmYXVsdCA9IDwweGZmZmZmZmZmPjsKKwl4bG54LHRyaS1kZWZhdWx0LTIgPSA8MHhmZmZmZmZmZj47Cit9IDsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8teGxwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8teGxwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjJlZTRkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby14bHAudHh0CkBAIC0wLDAgKzEsNDcgQEAKK05ldGxvZ2ljIFhMUCBGYW1pbHkgR1BJTworPT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgR1BJTyBkcml2ZXIgaXMgdXNlZCBmb3IgZm9sbG93aW5nIE5ldGxvZ2ljIFhMUCBTb0NzOgorCVhMUDgzMiwgWExQMzE2LCBYTFAyMDgsIFhMUDk4MCwgWExQNTMyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorICAtICJuZXRsb2dpYyx4bHA4MzItZ3BpbyI6IEZvciBOZXRsb2dpYyBYTFA4MzIKKyAgLSAibmV0bG9naWMseGxwMzE2LWdwaW8iOiBGb3IgTmV0bG9naWMgWExQMzE2CisgIC0gIm5ldGxvZ2ljLHhscDIwOC1ncGlvIjogRm9yIE5ldGxvZ2ljIFhMUDIwOAorICAtICJuZXRsb2dpYyx4bHA5ODAtZ3BpbyI6IEZvciBOZXRsb2dpYyBYTFA5ODAKKyAgLSAibmV0bG9naWMseGxwNTMyLWdwaW8iOiBGb3IgTmV0bG9naWMgWExQNTMyCistIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlcnMuCistICNncGlvLWNlbGxzOiBTaG91bGQgYmUgdHdvLiBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgcGluIG51bWJlciBhbmQgdGhlIHNlY29uZAorICBjZWxsIGlzIHVzZWQgdG8gc3BlY2lmeSBvcHRpb25hbCBwYXJhbWV0ZXJzIChjdXJyZW50bHkgdW51c2VkKS4KKy0gZ3Bpby1jb250cm9sbGVyOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYSBHUElPIGNvbnRyb2xsZXIuCistIG5yLWdwaW9zOiBOdW1iZXIgb2YgR1BJTyBwaW5zIHN1cHBvcnRlZCBieSB0aGUgY29udHJvbGxlci4KKy0gaW50ZXJydXB0LWNlbGxzOiBTaG91bGQgYmUgdHdvLiBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgR1BJTyBOdW1iZXIuIFRoZQorICBzZWNvbmQgY2VsbCBpcyB1c2VkIHRvIHNwZWNpZnkgZmxhZ3MuIFRoZSBmb2xsb3dpbmcgc3Vic2V0IG9mIGZsYWdzIGlzCisgIHN1cHBvcnRlZDoKKyAgLSB0cmlnZ2VyIHR5cGU6CisJMSA9IGxvdyB0byBoaWdoIGVkZ2UgdHJpZ2dlcmVkLgorCTIgPSBoaWdoIHRvIGxvdyBlZGdlIHRyaWdnZXJlZC4KKwk0ID0gYWN0aXZlIGhpZ2ggbGV2ZWwtc2Vuc2l0aXZlLgorCTggPSBhY3RpdmUgbG93IGxldmVsLXNlbnNpdGl2ZS4KKy0gaW50ZXJydXB0czogSW50ZXJydXB0IG51bWJlciBmb3IgdGhpcyBkZXZpY2UuCistIGludGVycnVwdC1wYXJlbnQ6IHBoYW5kbGUgb2YgdGhlIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlci4KKy0gaW50ZXJydXB0LWNvbnRyb2xsZXI6IElkZW50aWZpZXMgdGhlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIuCisKK0V4YW1wbGU6CisKKwlncGlvOiB4bHBfZ3Bpb0AzNDAwMCB7CisJCWNvbXBhdGlibGUgPSAibmV0bG9naWMseGxwMzE2LWdwaW8iOworCQlyZWcgPSA8MCAweDM0MTAwIDB4MTAwMAorCQkgICAgICAgMCAweDM1MTAwIDB4MTAwMD47CisJCSNncGlvLWNlbGxzID0gPDI+OworCQlncGlvLWNvbnRyb2xsZXI7CisJCW5yLWdwaW9zID0gPDU3PjsKKworCQkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZwaWM+OworCQlpbnRlcnJ1cHRzID0gPDM5PjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8temV2aW8udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby16ZXZpby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM3YmQ5YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8temV2aW8udHh0CkBAIC0wLDAgKzEsMTYgQEAKK1pldmlvIEdQSU8gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImxzaSx6ZXZpby1ncGlvIgorLSByZWc6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistICNncGlvLWNlbGxzOiBTaG91bGQgYmUgdHdvLiBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgcGluIG51bWJlciBhbmQgdGhlCisgIHNlY29uZCBjZWxsIGlzIHVzZWQgdG8gc3BlY2lmeSBvcHRpb25hbCBwYXJhbWV0ZXJzIChjdXJyZW50bHkgdW51c2VkKS4KKy0gZ3Bpby1jb250cm9sbGVyOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYSBHUElPIGNvbnRyb2xsZXIuCisKK0V4YW1wbGU6CisJZ3BpbzogZ3Bpb0A5MDAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAibHNpLHpldmlvLWdwaW8iOworCQlyZWcgPSA8MHg5MDAwMDAwMCAweDEwMDA+OworCQlncGlvLWNvbnRyb2xsZXI7CisJCSNncGlvLWNlbGxzID0gPDI+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLXp5bnEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby16eW5xLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjU0MjY1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby16eW5xLnR4dApAQCAtMCwwICsxLDM1IEBACitYaWxpbnggWnlucSBHUElPIGNvbnRyb2xsZXIgRGV2aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gI2dwaW8tY2VsbHMgCQk6IFNob3VsZCBiZSB0d28KKwkJCSAgLSBGaXJzdCBjZWxsIGlzIHRoZSBHUElPIGxpbmUgbnVtYmVyCisJCQkgIC0gU2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IG9wdGlvbmFsCisJCQkgICAgcGFyYW1ldGVycyAodW51c2VkKQorLSBjb21wYXRpYmxlCQk6IFNob3VsZCBiZSAieGxueCx6eW5xLWdwaW8tMS4wIiBvciAieGxueCx6eW5xbXAtZ3Bpby0xLjAiCistIGNsb2NrcwkJOiBDbG9jayBzcGVjaWZpZXIgKHNlZSBjbG9jayBiaW5kaW5ncyBmb3IgZGV0YWlscykKKy0gZ3Bpby1jb250cm9sbGVyCTogTWFya3MgdGhlIGRldmljZSBub2RlIGFzIGEgR1BJTyBjb250cm9sbGVyLgorLSBpbnRlcnJ1cHRzCQk6IEludGVycnVwdCBzcGVjaWZpZXIgKHNlZSBpbnRlcnJ1cHQgYmluZGluZ3MgZm9yCisJCQkgIGRldGFpbHMpCistIGludGVycnVwdC1wYXJlbnQJOiBNdXN0IGJlIGNvcmUgaW50ZXJydXB0IGNvbnRyb2xsZXIKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXIJOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIuCistICNpbnRlcnJ1cHQtY2VsbHMgCTogU2hvdWxkIGJlIDIuICBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgR1BJTyBudW1iZXIuCisJCQkgIFRoZSBzZWNvbmQgY2VsbCBiaXRzWzM6MF0gaXMgdXNlZCB0byBzcGVjaWZ5IHRyaWdnZXIgdHlwZSBhbmQgbGV2ZWwgZmxhZ3M6CisJCQkgICAgICAxID0gbG93LXRvLWhpZ2ggZWRnZSB0cmlnZ2VyZWQuCisJCQkgICAgICAyID0gaGlnaC10by1sb3cgZWRnZSB0cmlnZ2VyZWQuCisJCQkgICAgICA0ID0gYWN0aXZlIGhpZ2ggbGV2ZWwtc2Vuc2l0aXZlLgorCQkJICAgICAgOCA9IGFjdGl2ZSBsb3cgbGV2ZWwtc2Vuc2l0aXZlLgorLSByZWcJCQk6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCisKK0V4YW1wbGU6CisJZ3Bpb0BlMDAwYTAwMCB7CisJCSNncGlvLWNlbGxzID0gPDI+OworCQljb21wYXRpYmxlID0gInhsbngsenlucS1ncGlvLTEuMCI7CisJCWNsb2NrcyA9IDwmY2xrYyA0Mj47CisJCWdwaW8tY29udHJvbGxlcjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmaW50Yz47CisJCWludGVycnVwdHMgPSA8MCAyMCA0PjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJCXJlZyA9IDwweGUwMDBhMDAwIDB4MTAwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY5Y2RmNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8udHh0CkBAIC0wLDAgKzEsMjgxIEBACitTcGVjaWZ5aW5nIEdQSU8gaW5mb3JtYXRpb24gZm9yIGRldmljZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzEpIGdwaW9zIHByb3BlcnR5CistLS0tLS0tLS0tLS0tLS0tLQorCitOb2RlcyB0aGF0IG1ha2VzIHVzZSBvZiBHUElPcyBzaG91bGQgc3BlY2lmeSB0aGVtIHVzaW5nIG9uZSBvciBtb3JlCitwcm9wZXJ0aWVzLCBlYWNoIGNvbnRhaW5pbmcgYSAnZ3Bpby1saXN0JzoKKworCWdwaW8tbGlzdCA6Oj0gPHNpbmdsZS1ncGlvPiBbZ3Bpby1saXN0XQorCXNpbmdsZS1ncGlvIDo6PSA8Z3Bpby1waGFuZGxlPiA8Z3Bpby1zcGVjaWZpZXI+CisJZ3Bpby1waGFuZGxlIDogcGhhbmRsZSB0byBncGlvIGNvbnRyb2xsZXIgbm9kZQorCWdwaW8tc3BlY2lmaWVyIDogQXJyYXkgb2YgI2dwaW8tY2VsbHMgc3BlY2lmeWluZyBzcGVjaWZpYyBncGlvCisJCQkgKGNvbnRyb2xsZXIgc3BlY2lmaWMpCisKK0dQSU8gcHJvcGVydGllcyBzaG91bGQgYmUgbmFtZWQgIls8bmFtZT4tXWdwaW9zIiwgd2l0aCA8bmFtZT4gYmVpbmcgdGhlIHB1cnBvc2UKK29mIHRoaXMgR1BJTyBmb3IgdGhlIGRldmljZS4gV2hpbGUgYSBub24tZXhpc3RlbnQgPG5hbWU+IGlzIGNvbnNpZGVyZWQgdmFsaWQKK2ZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMgKHJlc29sdmluZyB0byB0aGUgImdwaW9zIiBwcm9wZXJ0eSksIGl0IGlzIG5vdCBhbGxvd2VkCitmb3IgbmV3IGJpbmRpbmdzLiBBbHNvLCBHUElPIHByb3BlcnRpZXMgbmFtZWQgIls8bmFtZT4tXWdwaW8iIGFyZSB2YWxpZCBhbmQgb2xkCitiaW5kaW5ncyB1c2UgaXQsIGJ1dCBhcmUgb25seSBzdXBwb3J0ZWQgZm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucyBhbmQgc2hvdWxkIG5vdAorYmUgdXNlZCBmb3IgbmV3ZXIgYmluZGluZ3Mgc2luY2UgaXQgaGFzIGJlZW4gZGVwcmVjYXRlZC4KKworR1BJTyBwcm9wZXJ0aWVzIGNhbiBjb250YWluIG9uZSBvciBtb3JlIEdQSU8gcGhhbmRsZXMsIGJ1dCBvbmx5IGluIGV4Y2VwdGlvbmFsCitjYXNlcyBzaG91bGQgdGhleSBjb250YWluIG1vcmUgdGhhbiBvbmUuIElmIHlvdXIgZGV2aWNlIHVzZXMgc2V2ZXJhbCBHUElPcyB3aXRoCitkaXN0aW5jdCBmdW5jdGlvbnMsIHJlZmVyZW5jZSBlYWNoIG9mIHRoZW0gdW5kZXIgaXRzIG93biBwcm9wZXJ0eSwgZ2l2aW5nIGl0IGEKK21lYW5pbmdmdWwgbmFtZS4gVGhlIG9ubHkgY2FzZSB3aGVyZSBhbiBhcnJheSBvZiBHUElPcyBpcyBhY2NlcHRlZCBpcyB3aGVuCitzZXZlcmFsIEdQSU9zIHNlcnZlIHRoZSBzYW1lIGZ1bmN0aW9uIChlLmcuIGEgcGFyYWxsZWwgZGF0YSBsaW5lKS4KKworVGhlIGV4YWN0IHB1cnBvc2Ugb2YgZWFjaCBncGlvcyBwcm9wZXJ0eSBtdXN0IGJlIGRvY3VtZW50ZWQgaW4gdGhlIGRldmljZSB0cmVlCitiaW5kaW5nIG9mIHRoZSBkZXZpY2UuCisKK1RoZSBmb2xsb3dpbmcgZXhhbXBsZSBjb3VsZCBiZSB1c2VkIHRvIGRlc2NyaWJlIEdQSU8gcGlucyB1c2VkIGFzIGRldmljZSBlbmFibGUKK2FuZCBiaXQtYmFuZ2VkIGRhdGEgc2lnbmFsczoKKworCWdwaW8xOiBncGlvMSB7CisJCWdwaW8tY29udHJvbGxlcgorCQkgI2dwaW8tY2VsbHMgPSA8Mj47CisJfTsKKwlncGlvMjogZ3BpbzIgeworCQlncGlvLWNvbnRyb2xsZXIKKwkJICNncGlvLWNlbGxzID0gPDE+OworCX07CisJWy4uLl0KKworCWVuYWJsZS1ncGlvcyA9IDwmZ3BpbzIgMj47CisJZGF0YS1ncGlvcyA9IDwmZ3BpbzEgMTIgMD4sCisJCSAgICAgPCZncGlvMSAxMyAwPiwKKwkJICAgICA8JmdwaW8xIDE0IDA+LAorCQkgICAgIDwmZ3BpbzEgMTUgMD47CisKK05vdGUgdGhhdCBncGlvLXNwZWNpZmllciBsZW5ndGggaXMgY29udHJvbGxlciBkZXBlbmRlbnQuICBJbiB0aGUKK2Fib3ZlIGV4YW1wbGUsICZncGlvMSB1c2VzIDIgY2VsbHMgdG8gc3BlY2lmeSBhIGdwaW8sIHdoaWxlICZncGlvMgorb25seSB1c2VzIG9uZS4KKworZ3Bpby1zcGVjaWZpZXIgbWF5IGVuY29kZTogYmFuaywgcGluIHBvc2l0aW9uIGluc2lkZSB0aGUgYmFuaywKK3doZXRoZXIgcGluIGlzIG9wZW4tZHJhaW4gYW5kIHdoZXRoZXIgcGluIGlzIGxvZ2ljYWxseSBpbnZlcnRlZC4KKworRXhhY3QgbWVhbmluZyBvZiBlYWNoIHNwZWNpZmllciBjZWxsIGlzIGNvbnRyb2xsZXIgc3BlY2lmaWMsIGFuZCBtdXN0CitiZSBkb2N1bWVudGVkIGluIHRoZSBkZXZpY2UgdHJlZSBiaW5kaW5nIGZvciB0aGUgZGV2aWNlLgorCitNb3N0IGNvbnRyb2xsZXJzIGFyZSBob3dldmVyIHNwZWNpZnlpbmcgYSBnZW5lcmljIGZsYWcgYml0ZmllbGQKK2luIHRoZSBsYXN0IGNlbGwsIHNvIGZvciB0aGVzZSwgdXNlIHRoZSBtYWNyb3MgZGVmaW5lZCBpbgoraW5jbHVkZS9kdC1iaW5kaW5ncy9ncGlvL2dwaW8uaCB3aGVuZXZlciBwb3NzaWJsZToKKworRXhhbXBsZSBvZiBhIG5vZGUgdXNpbmcgR1BJT3M6CisKKwlub2RlIHsKKwkJZW5hYmxlLWdwaW9zID0gPCZxZV9waW9fZSAxOCBHUElPX0FDVElWRV9ISUdIPjsKKwl9OworCitHUElPX0FDVElWRV9ISUdIIGlzIDAsIHNvIGluIHRoaXMgZXhhbXBsZSBncGlvLXNwZWNpZmllciBpcyAiMTggMCIgYW5kIGVuY29kZXMKK0dQSU8gcGluIG51bWJlciwgYW5kIEdQSU8gZmxhZ3MgYXMgYWNjZXB0ZWQgYnkgdGhlICJxZV9waW9fZSIgZ3Bpby1jb250cm9sbGVyLgorCitPcHRpb25hbCBzdGFuZGFyZCBiaXRmaWVsZCBzcGVjaWZpZXJzIGZvciB0aGUgbGFzdCBjZWxsOgorCistIEJpdCAwOiAwIG1lYW5zIGFjdGl2ZSBoaWdoLCAxIG1lYW5zIGFjdGl2ZSBsb3cKKy0gQml0IDE6IDEgbWVhbnMgc2luZ2xlLWVuZGVkIHdpcmluZywgc2VlOgorICAgICAgICAgICBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TaW5nbGUtZW5kZWRfdHJpb2RlCisJICAgV2hlbiB1c2VkIHdpdGggYWN0aXZlLWxvdywgdGhpcyBtZWFucyBvcGVuIGRyYWluL2NvbGxlY3Rvciwgc2VlOgorICAgICAgICAgICBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9PcGVuX2NvbGxlY3RvcgorCSAgIFdoZW4gdXNlZCB3aXRoIGFjdGl2ZS1oaWdoLCB0aGlzIG1lYW5zIG9wZW4gc291cmNlL2VtaXR0ZXIKKworMS4xKSBHUElPIHNwZWNpZmllciBiZXN0IHByYWN0aWNlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBIGdwaW8tc3BlY2lmaWVyIHNob3VsZCBjb250YWluIGEgZmxhZyBpbmRpY2F0aW5nIHRoZSBHUElPIHBvbGFyaXR5OyBhY3RpdmUtCitoaWdoIG9yIGFjdGl2ZS1sb3cuIElmIGl0IGRvZXMsIHRoZSBmb2xsb3dpbmcgYmVzdCBwcmFjdGljZXMgc2hvdWxkIGJlCitmb2xsb3dlZDoKKworVGhlIGdwaW8tc3BlY2lmaWVyJ3MgcG9sYXJpdHkgZmxhZyBzaG91bGQgcmVwcmVzZW50IHRoZSBwaHlzaWNhbCBsZXZlbCBhdCB0aGUKK0dQSU8gY29udHJvbGxlciB0aGF0IGFjaGlldmVzIChvciByZXByZXNlbnRzLCBmb3IgaW5wdXRzKSBhIGxvZ2ljYWxseSBhc3NlcnRlZAordmFsdWUgYXQgdGhlIGRldmljZS4gVGhlIGV4YWN0IGRlZmluaXRpb24gb2YgbG9naWNhbGx5IGFzc2VydGVkIHNob3VsZCBiZQorZGVmaW5lZCBieSB0aGUgYmluZGluZyBmb3IgdGhlIGRldmljZS4gSWYgdGhlIGJvYXJkIGludmVydHMgdGhlIHNpZ25hbCBiZXR3ZWVuCit0aGUgR1BJTyBjb250cm9sbGVyIGFuZCB0aGUgZGV2aWNlLCB0aGVuIHRoZSBncGlvLXNwZWNpZmllciB3aWxsIHJlcHJlc2VudCB0aGUKK29wcG9zaXRlIHBoeXNpY2FsIGxldmVsIHRoYW4gdGhlIHNpZ25hbCBhdCB0aGUgZGV2aWNlJ3MgcGluLgorCitXaGVuIHRoZSBkZXZpY2UncyBzaWduYWwgcG9sYXJpdHkgaXMgY29uZmlndXJhYmxlLCB0aGUgYmluZGluZyBmb3IgdGhlCitkZXZpY2UgbXVzdCBlaXRoZXI6CisKK2EpIERlZmluZSBhIHNpbmdsZSBzdGF0aWMgcG9sYXJpdHkgZm9yIHRoZSBzaWduYWwsIHdpdGggdGhlIGV4cGVjdGF0aW9uIHRoYXQKK2FueSBzb2Z0d2FyZSB1c2luZyB0aGF0IGJpbmRpbmcgd291bGQgc3RhdGljYWxseSBwcm9ncmFtIHRoZSBkZXZpY2UgdG8gdXNlCit0aGF0IHNpZ25hbCBwb2xhcml0eS4KKworVGhlIHN0YXRpYyBjaG9pY2Ugb2YgcG9sYXJpdHkgbWF5IGJlIGVpdGhlcjoKKworYTEpIChQcmVmZXJyZWQpIERpY3RhdGVkIGJ5IGEgYmluZGluZy1zcGVjaWZpYyBEVCBwcm9wZXJ0eS4KKworb3I6CisKK2EyKSBEZWZpbmVkIHN0YXRpY2FsbHkgYnkgdGhlIERUIGJpbmRpbmcgaXRzZWxmLgorCitJbiBwYXJ0aWN1bGFyLCB0aGUgcG9sYXJpdHkgY2Fubm90IGJlIGRlcml2ZWQgZnJvbSB0aGUgZ3Bpby1zcGVjaWZpZXIsIHNpbmNlCit0aGF0IHdvdWxkIHByZXZlbnQgdGhlIERUIGZyb20gc2VwYXJhdGVseSByZXByZXNlbnRpbmcgdGhlIHR3byBvcnRob2dvbmFsCitjb25jZXB0cyBvZiBjb25maWd1cmFibGUgc2lnbmFsIHBvbGFyaXR5IGluIHRoZSBkZXZpY2UsIGFuZCBwb3NzaWJsZSBib2FyZC0KK2xldmVsIHNpZ25hbCBpbnZlcnNpb24uCisKK29yOgorCitiKSBQaWNrIGEgc2luZ2xlIG9wdGlvbiBmb3IgZGV2aWNlIHNpZ25hbCBwb2xhcml0eSwgYW5kIGRvY3VtZW50IHRoaXMgY2hvaWNlCitpbiB0aGUgYmluZGluZy4gVGhlIGdwaW8tc3BlY2lmaWVyIHNob3VsZCByZXByZXNlbnQgdGhlIHBvbGFyaXR5IG9mIHRoZSBzaWduYWwKKyhhdCB0aGUgR1BJTyBjb250cm9sbGVyKSBhc3N1bWluZyB0aGF0IHRoZSBkZXZpY2UgaXMgY29uZmlndXJlZCBmb3IgdGhpcworcGFydGljdWxhciBzaWduYWwgcG9sYXJpdHkgY2hvaWNlLiBJZiBzb2Z0d2FyZSBjaG9vc2VzIHRvIHByb2dyYW0gdGhlIGRldmljZQordG8gZ2VuZXJhdGUgb3IgcmVjZWl2ZSBhIHNpZ25hbCBvZiB0aGUgb3Bwb3NpdGUgcG9sYXJpdHksIHNvZnR3YXJlIHdpbGwgYmUKK3Jlc3BvbnNpYmxlIGZvciBjb3JyZWN0bHkgaW50ZXJwcmV0aW5nIChpbnZlcnRpbmcpIHRoZSBHUElPIHNpZ25hbCBhdCB0aGUgR1BJTworY29udHJvbGxlci4KKworMikgZ3Bpby1jb250cm9sbGVyIG5vZGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRXZlcnkgR1BJTyBjb250cm9sbGVyIG5vZGUgbXVzdCBjb250YWluIGJvdGggYW4gZW1wdHkgImdwaW8tY29udHJvbGxlciIKK3Byb3BlcnR5LCBhbmQgYSAjZ3Bpby1jZWxscyBpbnRlZ2VyIHByb3BlcnR5LCB3aGljaCBpbmRpY2F0ZXMgdGhlIG51bWJlciBvZgorY2VsbHMgaW4gYSBncGlvLXNwZWNpZmllci4KKworT3B0aW9uYWxseSwgYSBHUElPIGNvbnRyb2xsZXIgbWF5IGhhdmUgYSAibmdwaW9zIiBwcm9wZXJ0eS4gVGhpcyBwcm9wZXJ0eQoraW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgaW4tdXNlIHNsb3RzIG9mIGF2YWlsYWJsZSBzbG90cyBmb3IgR1BJT3MuIFRoZQordHlwaWNhbCBleGFtcGxlIGlzIHNvbWV0aGluZyBsaWtlIHRoaXM6IHRoZSBoYXJkd2FyZSByZWdpc3RlciBpcyAzMiBiaXRzCit3aWRlLCBidXQgb25seSAxOCBvZiB0aGUgYml0cyBoYXZlIGEgcGh5c2ljYWwgY291bnRlcnBhcnQuIFRoZSBkcml2ZXIgaXMKK2dlbmVyYWxseSB3cml0dGVuIHNvIHRoYXQgYWxsIDMyIGJpdHMgY2FuIGJlIHVzZWQsIGJ1dCB0aGUgSVAgYmxvY2sgaXMgcmV1c2VkCitpbiBhIGxvdCBvZiBkZXNpZ25zLCBzb21lIHVzaW5nIGFsbCAzMiBiaXRzLCBzb21lIHVzaW5nIDE4IGFuZCBzb21lIHVzaW5nCisxMi4gSW4gdGhpcyBjYXNlLCBzZXR0aW5nICJuZ3Bpb3MgPSA8MTg+OyIgaW5mb3JtcyB0aGUgZHJpdmVyIHRoYXQgb25seSB0aGUKK2ZpcnN0IDE4IEdQSU9zLCBhdCBsb2NhbCBvZmZzZXQgMCAuLiAxNywgYXJlIGluIHVzZS4KKworSWYgdGhlc2UgR1BJT3MgZG8gbm90IGhhcHBlbiB0byBiZSB0aGUgZmlyc3QgTiBHUElPcyBhdCBvZmZzZXQgMC4uLk4tMSwgYW4KK2FkZGl0aW9uYWwgYml0bWFzayBpcyBuZWVkZWQgdG8gc3BlY2lmeSB3aGljaCBHUElPcyBhcmUgYWN0dWFsbHkgaW4gdXNlLAorYW5kIHdoaWNoIGFyZSBkdW1taWVzLiBUaGUgYmluZGluZ3MgZm9yIHRoaXMgY2FzZSBoYXMgbm90IHlldCBiZWVuCitzcGVjaWZpZWQsIGJ1dCBzaG91bGQgYmUgc3BlY2lmaWVkIGlmL3doZW4gc3VjaCBoYXJkd2FyZSBhcHBlYXJzLgorCitFeGFtcGxlOgorCitncGlvLWNvbnRyb2xsZXJAMDAwMDAwMDAgeworCWNvbXBhdGlibGUgPSAiZm9vIjsKKwlyZWcgPSA8MHgwMDAwMDAwMCAweDEwMDA+OworCWdwaW8tY29udHJvbGxlcjsKKwkjZ3Bpby1jZWxscyA9IDwyPjsKKwluZ3Bpb3MgPSA8MTg+OworfQorCitUaGUgR1BJTyBjaGlwIG1heSBjb250YWluIEdQSU8gaG9nIGRlZmluaXRpb25zLiBHUElPIGhvZ2dpbmcgaXMgYSBtZWNoYW5pc20KK3Byb3ZpZGluZyBhdXRvbWF0aWMgR1BJTyByZXF1ZXN0IGFuZCBjb25maWd1cmF0aW9uIGFzIHBhcnQgb2YgdGhlCitncGlvLWNvbnRyb2xsZXIncyBkcml2ZXIgcHJvYmUgZnVuY3Rpb24uCisKK0VhY2ggR1BJTyBob2cgZGVmaW5pdGlvbiBpcyByZXByZXNlbnRlZCBhcyBhIGNoaWxkIG5vZGUgb2YgdGhlIEdQSU8gY29udHJvbGxlci4KK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGdwaW8taG9nOiAgIEEgcHJvcGVydHkgc3BlY2lmeWluZyB0aGF0IHRoaXMgY2hpbGQgbm9kZSByZXByZXNlbnQgYSBHUElPIGhvZy4KKy0gZ3Bpb3M6ICAgICAgU3RvcmUgdGhlIEdQSU8gaW5mb3JtYXRpb24gKGlkLCBmbGFncywgLi4uKS4gU2hhbGwgY29udGFpbiB0aGUKKwkgICAgICBudW1iZXIgb2YgY2VsbHMgc3BlY2lmaWVkIGluIGl0cyBwYXJlbnQgbm9kZSAoR1BJTyBjb250cm9sbGVyCisJICAgICAgbm9kZSkuCitPbmx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgc2Nhbm5lZCBpbiB0aGUgb3JkZXIgc2hvd24gYmVsb3cuCitUaGlzIG1lYW5zIHRoYXQgd2hlbiBtdWx0aXBsZSBwcm9wZXJ0aWVzIGFyZSBwcmVzZW50IHRoZXkgd2lsbCBiZSBzZWFyY2hlZAoraW4gdGhlIG9yZGVyIHByZXNlbnRlZCBiZWxvdyBhbmQgdGhlIGZpcnN0IG1hdGNoIGlzIHRha2VuIGFzIHRoZSBpbnRlbmRlZAorY29uZmlndXJhdGlvbi4KKy0gaW5wdXQ6ICAgICAgQSBwcm9wZXJ0eSBzcGVjaWZ5aW5nIHRvIHNldCB0aGUgR1BJTyBkaXJlY3Rpb24gYXMgaW5wdXQuCistIG91dHB1dC1sb3cgIEEgcHJvcGVydHkgc3BlY2lmeWluZyB0byBzZXQgdGhlIEdQSU8gZGlyZWN0aW9uIGFzIG91dHB1dCB3aXRoCisJICAgICAgdGhlIHZhbHVlIGxvdy4KKy0gb3V0cHV0LWhpZ2ggQSBwcm9wZXJ0eSBzcGVjaWZ5aW5nIHRvIHNldCB0aGUgR1BJTyBkaXJlY3Rpb24gYXMgb3V0cHV0IHdpdGgKKwkgICAgICB0aGUgdmFsdWUgaGlnaC4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gbGluZS1uYW1lOiAgVGhlIEdQSU8gbGFiZWwgbmFtZS4gSWYgbm90IHByZXNlbnQgdGhlIG5vZGUgbmFtZSBpcyB1c2VkLgorCitFeGFtcGxlIG9mIHR3byBTT0MgR1BJTyBiYW5rcyBkZWZpbmVkIGFzIGdwaW8tY29udHJvbGxlciBub2RlczoKKworCXFlX3Bpb19hOiBncGlvLWNvbnRyb2xsZXJAMTQwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLHFlLXBhcmlvLWJhbmstYSIsICJmc2wscWUtcGFyaW8tYmFuayI7CisJCXJlZyA9IDwweDE0MDAgMHgxOD47CisJCWdwaW8tY29udHJvbGxlcjsKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisKKwkJbGluZV9iIHsKKwkJCWdwaW8taG9nOworCQkJZ3Bpb3MgPSA8NiAwPjsKKwkJCW91dHB1dC1sb3c7CisJCQlsaW5lLW5hbWUgPSAiZm9vLWJhci1ncGlvIjsKKwkJfTsKKwl9OworCisJcWVfcGlvX2U6IGdwaW8tY29udHJvbGxlckAxNDYwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wscWUtcGFyaW8tYmFuay1lIiwgImZzbCxxZS1wYXJpby1iYW5rIjsKKwkJcmVnID0gPDB4MTQ2MCAweDE4PjsKKwkJZ3Bpby1jb250cm9sbGVyOworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwl9OworCisyLjEpIGdwaW8tIGFuZCBwaW4tY29udHJvbGxlciBpbnRlcmFjdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU29tZSBvciBhbGwgb2YgdGhlIEdQSU9zIHByb3ZpZGVkIGJ5IGEgR1BJTyBjb250cm9sbGVyIG1heSBiZSByb3V0ZWQgdG8gcGlucworb24gdGhlIHBhY2thZ2UgdmlhIGEgcGluIGNvbnRyb2xsZXIuIFRoaXMgYWxsb3dzIG11eGluZyB0aG9zZSBwaW5zIGJldHdlZW4KK0dQSU8gYW5kIG90aGVyIGZ1bmN0aW9ucy4KKworSXQgaXMgdXNlZnVsIHRvIHJlcHJlc2VudCB3aGljaCBHUElPcyBjb3JyZXNwb25kIHRvIHdoaWNoIHBpbnMgb24gd2hpY2ggcGluCitjb250cm9sbGVycy4gVGhlIGdwaW8tcmFuZ2VzIHByb3BlcnR5IGRlc2NyaWJlZCBiZWxvdyByZXByZXNlbnRzIHRoaXMsIGFuZAorY29udGFpbnMgaW5mb3JtYXRpb24gc3RydWN0dXJlcyBhcyBmb2xsb3dzOgorCisJZ3Bpby1yYW5nZS1saXN0IDo6PSA8c2luZ2xlLWdwaW8tcmFuZ2U+IFtncGlvLXJhbmdlLWxpc3RdCisJc2luZ2xlLWdwaW8tcmFuZ2UgOjo9IDxudW1lcmljLWdwaW8tcmFuZ2U+IHwgPG5hbWVkLWdwaW8tcmFuZ2U+CisJbnVtZXJpYy1ncGlvLXJhbmdlIDo6PQorCQkJPHBpbmN0cmwtcGhhbmRsZT4gPGdwaW8tYmFzZT4gPHBpbmN0cmwtYmFzZT4gPGNvdW50PgorCW5hbWVkLWdwaW8tcmFuZ2UgOjo9IDxwaW5jdHJsLXBoYW5kbGU+IDxncGlvLWJhc2U+ICc8MCAwPicKKwlwaW5jdHJsLXBoYW5kbGUgOiBwaGFuZGxlIHRvIHBpbiBjb250cm9sbGVyIG5vZGUKKwlncGlvLWJhc2UgOiBCYXNlIEdQSU8gSUQgaW4gdGhlIEdQSU8gY29udHJvbGxlcgorCXBpbmN0cmwtYmFzZSA6IEJhc2UgcGluY3RybCBwaW4gSUQgaW4gdGhlIHBpbiBjb250cm9sbGVyCisJY291bnQgOiBUaGUgbnVtYmVyIG9mIEdQSU9zL3BpbnMgaW4gdGhpcyByYW5nZQorCitUaGUgInBpbiBjb250cm9sbGVyIG5vZGUiIG1lbnRpb25lZCBhYm92ZSBtdXN0IGNvbmZvcm0gdG8gdGhlIGJpbmRpbmdzCitkZXNjcmliZWQgaW4gLi4vcGluY3RybC9waW5jdHJsLWJpbmRpbmdzLnR4dC4KKworSW4gY2FzZSBuYW1lZCBncGlvIHJhbmdlcyBhcmUgdXNlZCAocmFuZ2VzIHdpdGggYm90aCA8cGluY3RybC1iYXNlPiBhbmQKKzxjb3VudD4gc2V0IHRvIDApLCB0aGUgcHJvcGVydHkgZ3Bpby1yYW5nZXMtZ3JvdXAtbmFtZXMgY29udGFpbnMgb25lIHN0cmluZworZm9yIGV2ZXJ5IHNpbmdsZS1ncGlvLXJhbmdlIGluIGdwaW8tcmFuZ2VzOgorCWdwaW9yYW5nZS1uYW1lcy1saXN0IDo6PSA8Z3Bpb3JhbmdlLW5hbWU+IFtncGlvcmFuZ2UtbmFtZXMtbGlzdF0KKwlncGlvcmFuZ2UtbmFtZSA6IE5hbWUgb2YgdGhlIHBpbmdyb3VwIGFzc29jaWF0ZWQgdG8gdGhlIEdQSU8gcmFuZ2UgaW4KKwkJCXRoZSByZXNwZWN0aXZlIHBpbiBjb250cm9sbGVyLgorCitFbGVtZW50cyBvZiBncGlvcmFuZ2UtbmFtZXMtbGlzdCBjb3JyZXNwb25kaW5nIHRvIG51bWVyaWMgcmFuZ2VzIGNvbnRhaW4KK3RoZSBlbXB0eSBzdHJpbmcuIEVsZW1lbnRzIG9mIGdwaW9yYW5nZS1uYW1lcy1saXN0IGNvcnJlc3BvbmRpbmcgdG8gbmFtZWQKK3JhbmdlcyBjb250YWluIHRoZSBuYW1lIG9mIGEgcGluIGdyb3VwIGRlZmluZWQgaW4gdGhlIHJlc3BlY3RpdmUgcGluCitjb250cm9sbGVyLiBUaGUgbnVtYmVyIG9mIHBpbnMvR1BJT3MgaW4gdGhlIHJhbmdlIGlzIHRoZSBudW1iZXIgb2YgcGlucyBpbgordGhhdCBwaW4gZ3JvdXAuCisKK1ByZXZpb3VzIHZlcnNpb25zIG9mIHRoaXMgYmluZGluZyByZXF1aXJlZCBhbGwgcGluIGNvbnRyb2xsZXIgbm9kZXMgdGhhdAord2VyZSByZWZlcmVuY2VkIGJ5IGFueSBncGlvLXJhbmdlcyBwcm9wZXJ0eSB0byBjb250YWluIGEgcHJvcGVydHkgbmFtZWQKKyNncGlvLXJhbmdlLWNlbGxzIHdpdGggdmFsdWUgPDM+LiBUaGlzIHJlcXVpcmVtZW50IGlzIG5vdyBkZXByZWNhdGVkLgorSG93ZXZlciwgdGhhdCBwcm9wZXJ0eSBtYXkgc3RpbGwgZXhpc3QgaW4gb2xkZXIgZGV2aWNlIHRyZWVzIGZvcgorY29tcGF0aWJpbGl0eSByZWFzb25zLCBhbmQgd291bGQgc3RpbGwgYmUgcmVxdWlyZWQgZXZlbiBpbiBuZXcgZGV2aWNlCit0cmVlcyB0aGF0IG5lZWQgdG8gYmUgY29tcGF0aWJsZSB3aXRoIG9sZGVyIHNvZnR3YXJlLgorCitFeGFtcGxlIDE6CisKKwlxZV9waW9fZTogZ3Bpby1jb250cm9sbGVyQDE0NjAgeworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJY29tcGF0aWJsZSA9ICJmc2wscWUtcGFyaW8tYmFuay1lIiwgImZzbCxxZS1wYXJpby1iYW5rIjsKKwkJcmVnID0gPDB4MTQ2MCAweDE4PjsKKwkJZ3Bpby1jb250cm9sbGVyOworCQlncGlvLXJhbmdlcyA9IDwmcGluY3RybDEgMCAyMCAxMD4sIDwmcGluY3RybDIgMTAgNTAgMjA+OworCX07CisKK0hlcmUsIGEgc2luZ2xlIEdQSU8gY29udHJvbGxlciBoYXMgR1BJT3MgMC4uOSByb3V0ZWQgdG8gcGluIGNvbnRyb2xsZXIKK3BpbmN0cmwxJ3MgcGlucyAyMC4uMjksIGFuZCBHUElPcyAxMC4uMTkgcm91dGVkIHRvIHBpbiBjb250cm9sbGVyIHBpbmN0cmwyJ3MKK3BpbnMgNTAuLjU5LgorCitFeGFtcGxlIDI6CisKKwlncGlvX3Bpb19pOiBncGlvLWNvbnRyb2xsZXJAMTRCMCB7CisJCSNncGlvLWNlbGxzID0gPDI+OworCQljb21wYXRpYmxlID0gImZzbCxxZS1wYXJpby1iYW5rLWUiLCAiZnNsLHFlLXBhcmlvLWJhbmsiOworCQlyZWcgPSA8MHgxNDgwIDB4MTg+OworCQlncGlvLWNvbnRyb2xsZXI7CisJCWdwaW8tcmFuZ2VzID0JCQk8JnBpbmN0cmwxIDAgMjAgMTA+LAorCQkJCQkJPCZwaW5jdHJsMiAxMCAwIDA+LAorCQkJCQkJPCZwaW5jdHJsMSAxNSAwIDEwPiwKKwkJCQkJCTwmcGluY3RybDIgMjUgMCAwPjsKKwkJZ3Bpby1yYW5nZXMtZ3JvdXAtbmFtZXMgPQkiIiwKKwkJCQkJCSJmb28iLAorCQkJCQkJIiIsCisJCQkJCQkiYmFyIjsKKwl9OworCitIZXJlLCB0aHJlZSBHUElPIHJhbmdlcyBhcmUgZGVmaW5lZCB3cnQuIHR3byBwaW4gY29udHJvbGxlcnMuIHBpbmN0cmwxIEdQSU8KK3JhbmdlcyBhcmUgZGVmaW5lZCB1c2luZyBwaW4gbnVtYmVycyB3aGVyZWFzIHRoZSBHUElPIHJhbmdlcyB3cnQuIHBpbmN0cmwyCithcmUgbmFtZWQgImZvbyIgYW5kICJiYXIiLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpb19hdG1lbC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvX2F0bWVsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWY4YzBkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpb19hdG1lbC50eHQKQEAgLTAsMCArMSwyNSBAQAorKiBBdG1lbCBHUElPIGNvbnRyb2xsZXIgKFBJTykKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImF0bWVsLDxjaGlwPi1ncGlvIiwgd2hlcmUgPGNoaXA+IGlzIGF0OTFybTkyMDAgb3IgYXQ5MXNhbTl4NS4KKy0gcmVnOiBTaG91bGQgY29udGFpbiBHUElPIGNvbnRyb2xsZXIgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKy0gaW50ZXJydXB0czogU2hvdWxkIGJlIHRoZSBwb3J0IGludGVycnVwdCBzaGFyZWQgYnkgYWxsIHRoZSBwaW5zLgorLSAjZ3Bpby1jZWxsczogU2hvdWxkIGJlIHR3by4gIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBwaW4gbnVtYmVyIGFuZAorICB0aGUgc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IG9wdGlvbmFsIHBhcmFtZXRlcnMgKGN1cnJlbnRseQorICB1bnVzZWQpLgorLSBncGlvLWNvbnRyb2xsZXI6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIEdQSU8gY29udHJvbGxlci4KKworb3B0aW9uYWwgcHJvcGVydGllczoKKy0gI2dwaW8tbGluZXM6IE51bWJlciBvZiBncGlvIGlmIGFic2VudCAzMi4KKworCitFeGFtcGxlOgorCXBpb0E6IGdwaW9AZmZmZmYyMDAgeworCQljb21wYXRpYmxlID0gImF0bWVsLGF0OTFybTkyMDAtZ3BpbyI7CisJCXJlZyA9IDwweGZmZmZmMjAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDwyIDQ+OworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJZ3Bpby1jb250cm9sbGVyOworCQkjZ3Bpby1saW5lcyA9IDwxOT47CisJfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpb19scGMzMnh4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW9fbHBjMzJ4eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDk4MTkzNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW9fbHBjMzJ4eC50eHQKQEAgLTAsMCArMSw0MyBAQAorTlhQIExQQzMyeHggU29DIEdQSU8gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBtdXN0IGJlICJueHAsbHBjMzIyMC1ncGlvIgorLSByZWc6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBjb250cm9sbGVyJ3MgcmVnaXN0ZXJzLgorLSBncGlvLWNvbnRyb2xsZXI6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIEdQSU8gY29udHJvbGxlci4KKy0gI2dwaW8tY2VsbHM6IFNob3VsZCBiZSAzOgorICAgMSkgYmFuazoKKyAgICAgIDA6IEdQSU8gUDAKKyAgICAgIDE6IEdQSU8gUDEKKyAgICAgIDI6IEdQSU8gUDIKKyAgICAgIDM6IEdQSU8gUDMKKyAgICAgIDQ6IEdQSSBQMworICAgICAgNTogR1BPIFAzCisgICAyKSBwaW4gbnVtYmVyCisgICAzKSBvcHRpb25hbCBwYXJhbWV0ZXJzOgorICAgICAgLSBiaXQgMCBzcGVjaWZpZXMgcG9sYXJpdHkgKDAgZm9yIG5vcm1hbCwgMSBmb3IgaW52ZXJ0ZWQpCistIHJlZzogSW5kZXggb2YgdGhlIEdQSU8gZ3JvdXAKKworRXhhbXBsZToKKworCWdwaW86IGdwaW9ANDAwMjgwMDAgeworCQljb21wYXRpYmxlID0gIm54cCxscGMzMjIwLWdwaW8iOworCQlyZWcgPSA8MHg0MDAyODAwMCAweDEwMDA+OworCQlncGlvLWNvbnRyb2xsZXI7CisJCSNncGlvLWNlbGxzID0gPDM+OyAvKiBiYW5rLCBwaW4sIGZsYWdzICovCisJfTsKKworCWxlZHMgeworCQljb21wYXRpYmxlID0gImdwaW8tbGVkcyI7CisKKwkJbGVkMCB7CisJCQlncGlvcyA9IDwmZ3BpbyA1IDEgMT47IC8qIEdQT19QMyAxLCBhY3RpdmUgbG93ICovCisJCQlsaW51eCxkZWZhdWx0LXRyaWdnZXIgPSAiaGVhcnRiZWF0IjsKKwkJCWRlZmF1bHQtc3RhdGUgPSAib2ZmIjsKKwkJfTsKKworCQlsZWQxIHsKKwkJCWdwaW9zID0gPCZncGlvIDUgMTQgMT47IC8qIEdQT19QMyAxNCwgYWN0aXZlIGxvdyAqLworCQkJbGludXgsZGVmYXVsdC10cmlnZ2VyID0gInRpbWVyIjsKKwkJCWRlZmF1bHQtc3RhdGUgPSAib2ZmIjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vbW94YSxtb3hhcnQtZ3Bpby50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9tb3hhLG1veGFydC1ncGlvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGU4ZjE4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vbW94YSxtb3hhcnQtZ3Bpby50eHQKQEAgLTAsMCArMSwxOSBAQAorTU9YQSBBUlQgR1BJTyBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gI2dwaW8tY2VsbHMgOiBTaG91bGQgYmUgMiwgVGhlIGZpcnN0IGNlbGwgaXMgdGhlIHBpbiBudW1iZXIsCisJCXRoZSBzZWNvbmQgY2VsbCBpcyB1c2VkIHRvIHNwZWNpZnkgcG9sYXJpdHk6CisJCQkwID0gYWN0aXZlIGhpZ2gKKwkJCTEgPSBhY3RpdmUgbG93CistIGNvbXBhdGlibGUgOiBNdXN0IGJlICJtb3hhLG1veGFydC1ncGlvIgorLSByZWcgOiBTaG91bGQgY29udGFpbiByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorCitFeGFtcGxlOgorCisJZ3BpbzogZ3Bpb0A5ODcwMDAwMCB7CisJCWdwaW8tY29udHJvbGxlcjsKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCWNvbXBhdGlibGUgPSAibW94YSxtb3hhcnQtZ3BpbyI7CisJCXJlZyA9CTwweDk4NzAwMDAwIDB4Qz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL21ydmwtZ3Bpby50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9tcnZsLWdwaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ZDE5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9tcnZsLWdwaW8udHh0CkBAIC0wLDAgKzEsNjkgQEAKKyogTWFydmVsbCBQWEEgR1BJTyBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImludGVsLHB4YTI1eC1ncGlvIiwgImludGVsLHB4YTI2eC1ncGlvIiwKKwkJImludGVsLHB4YTI3eC1ncGlvIiwgImludGVsLHB4YTN4eC1ncGlvIiwKKwkJIm1hcnZlbGwscHhhOTN4LWdwaW8iLCAibWFydmVsbCxtbXAtZ3BpbyIsCisJCSJtYXJ2ZWxsLG1tcDItZ3BpbyIgb3IgbWFydmVsbCxweGExOTI4LWdwaW8uCistIHJlZyA6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistIGludGVycnVwdHMgOiBTaG91bGQgYmUgdGhlIHBvcnQgaW50ZXJydXB0IHNoYXJlZCBieSBhbGwgZ3BpbyBwaW5zLgorICBUaGVyZSdyZSB0aHJlZSBncGlvIGludGVycnVwdHMgaW4gYXJjaC1weGEsIGFuZCB0aGV5J3JlIGdwaW8wLAorICBncGlvMSBhbmQgZ3Bpb19tdXguIFRoZXJlJ3JlIG9ubHkgb25lIGdwaW8gaW50ZXJydXB0IGluIGFyY2gtbW1wLAorICBncGlvX211eC4KKy0gaW50ZXJydXB0LW5hbWVzIDogU2hvdWxkIGJlIHRoZSBuYW1lcyBvZiBpcnEgcmVzb3VyY2VzLiBFYWNoIGludGVycnVwdAorICB1c2VzIGl0cyBvd24gaW50ZXJydXB0IG5hbWUsIHNvIHRoZXJlIHNob3VsZCBiZSBhcyBtYW55IGludGVycnVwdCBuYW1lcworICBhcyByZWZlcmVuY2VkIGludGVycnVwdHMuCistIGludGVycnVwdC1jb250cm9sbGVyIDogSWRlbnRpZmllcyB0aGUgbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlci4KKy0gI2ludGVycnVwdC1jZWxsczogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgbmVlZGVkIHRvIGVuY29kZSBhbgorICBpbnRlcnJ1cHQgc291cmNlLgorLSBncGlvLWNvbnRyb2xsZXIgOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYSBncGlvIGNvbnRyb2xsZXIuCistICNncGlvLWNlbGxzIDogU2hvdWxkIGJlIG9uZS4gIEl0IGlzIHRoZSBwaW4gbnVtYmVyLgorCitFeGFtcGxlIGZvciBhIE1NUCBwbGF0Zm9ybToKKworCWdwaW86IGdwaW9AZDQwMTkwMDAgeworCQljb21wYXRpYmxlID0gIm1hcnZlbGwsbW1wLWdwaW8iOworCQlyZWcgPSA8MHhkNDAxOTAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDQ5PjsKKwkJaW50ZXJydXB0LW5hbWVzID0gImdwaW9fbXV4IjsKKwkJZ3Bpby1jb250cm9sbGVyOworCQkjZ3Bpby1jZWxscyA9IDwxPjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisgICAgICB9OworCitFeGFtcGxlIGZvciBhIFBYQTN4eCBwbGF0Zm9ybToKKworCWdwaW86IGdwaW9ANDBlMDAwMDAgeworCQljb21wYXRpYmxlID0gImludGVsLHB4YTN4eC1ncGlvIjsKKwkJcmVnID0gPDB4NDBlMDAwMDAgMHgxMDAwMD47CisJCWludGVycnVwdC1uYW1lcyA9ICJncGlvMCIsICJncGlvMSIsICJncGlvX211eCI7CisJCWludGVycnVwdHMgPSA8OCA5IDEwPjsKKwkJZ3Bpby1jb250cm9sbGVyOworCQkjZ3Bpby1jZWxscyA9IDwweDI+OworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwweDI+OworCX07CisKKyogTWFydmVsbCBPcmlvbiBHUElPIENvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSAgICAgICAgIDogU2hvdWxkIGJlICJtYXJ2ZWxsLG9yaW9uLWdwaW8iCistIHJlZyAgICAgICAgICAgICAgICA6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciBjb250cm9sbGVyLgorLSBncGlvLWNvbnRyb2xsZXIgICAgOiBTbyB3ZSBrbm93IHRoaXMgaXMgYSBncGlvIGNvbnRyb2xsZXIuCistIG5ncGlvICAgICAgICAgICAgICA6IEhvdyBtYW55IGdwaW9zIHRoaXMgY29udHJvbGxlciBoYXMuCistIGludGVycnVwdHMJICAgICA6IFVwIHRvIDQgSW50ZXJydXB0cyBmb3IgdGhlIGNvbnRyb2xsZXIuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIG1hc2stb2Zmc2V0ICAgICAgICA6IEZvciBTTVAgT3Jpb25zLCBvZmZzZXQgZm9yIE50aCBDUFUKKworRXhhbXBsZToKKworCQlncGlvMDogZ3Bpb0AxMDEwMCB7CisJCQljb21wYXRpYmxlID0gIm1hcnZlbGwsb3Jpb24tZ3BpbyI7CisJCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJCWdwaW8tY29udHJvbGxlcjsKKwkJCXJlZyA9IDwweDEwMTAwIDB4NDA+OworCQkJbmdwaW8gPSA8MzI+OworCQkJaW50ZXJydXB0cyA9IDwzNT4sIDwzNj4sIDwzNz4sIDwzOD47CisJCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9uZXR4YmlnLWdwaW8tZXh0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL25ldHhiaWctZ3Bpby1leHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZWMyZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9uZXR4YmlnLWdwaW8tZXh0LnR4dApAQCAtMCwwICsxLDIyIEBACitCaW5kaW5nIGZvciB0aGUgR1BJTyBleHRlbnNpb24gYnVzIGZvdW5kIG9uIHNvbWUgTGFDaWUvU2VhZ2F0ZSBib2FyZHMKKyhFeGFtcGxlOiAyQmlnLzVCaWcgTmV0d29yayB2MiwgMkJpZyBOQVMpLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAibGFjaWUsbmV0eGJpZy1ncGlvLWV4dCIuCistIGFkZHItZ3Bpb3M6IEdQSU9zIHJlcHJlc2VudGluZyB0aGUgYWRkcmVzcyByZWdpc3RlciAoTFNCIC0+IE1TQikuCistIGRhdGEtZ3Bpb3M6IEdQSU9zIHJlcHJlc2VudGluZyB0aGUgZGF0YSByZWdpc3RlciAoTFNCIC0+IE1TQikuCistIGVuYWJsZS1ncGlvOiBsYXRjaGVzIHRoZSBuZXcgY29uZmlndXJhdGlvbiAoYWRkcmVzcywgZGF0YSkgb24gcmFpc2luZyBlZGdlLgorCitFeGFtcGxlOgorCituZXR4YmlnX2dwaW9fZXh0OiBuZXR4YmlnLWdwaW8tZXh0IHsKKwljb21wYXRpYmxlID0gImxhY2llLG5ldHhiaWctZ3Bpby1leHQiOworCisJYWRkci1ncGlvcyA9IDwmZ3BpbzEgMTUgR1BJT19BQ1RJVkVfSElHSAorCQkgICAgICAmZ3BpbzEgMTYgR1BJT19BQ1RJVkVfSElHSAorCQkgICAgICAmZ3BpbzEgMTcgR1BJT19BQ1RJVkVfSElHSD47CisJZGF0YS1ncGlvcyA9IDwmZ3BpbzEgMTIgR1BJT19BQ1RJVkVfSElHSAorCQkgICAgICAmZ3BpbzEgMTMgR1BJT19BQ1RJVkVfSElHSAorCQkgICAgICAmZ3BpbzEgMTQgR1BJT19BQ1RJVkVfSElHSD47CisJZW5hYmxlLWdwaW8gPSA8JmdwaW8wIDI5IEdQSU9fQUNUSVZFX0hJR0g+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL252aWRpYSx0ZWdyYTIwLWdwaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vbnZpZGlhLHRlZ3JhMjAtZ3Bpby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDIzYzk1MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL252aWRpYSx0ZWdyYTIwLWdwaW8udHh0CkBAIC0wLDAgKzEsNDAgQEAKK05WSURJQSBUZWdyYSBHUElPIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJudmlkaWEsdGVncmE8Y2hpcD4tZ3BpbyIKKy0gcmVnIDogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlcnMuCistIGludGVycnVwdHMgOiBUaGUgaW50ZXJydXB0IG91dHB1dHMgZnJvbSB0aGUgY29udHJvbGxlci4gRm9yIFRlZ3JhMjAsCisgIHRoZXJlIHNob3VsZCBiZSA3IGludGVycnVwdHMgc3BlY2lmaWVkLCBhbmQgZm9yIFRlZ3JhMzAsIHRoZXJlIHNob3VsZAorICBiZSA4IGludGVycnVwdHMgc3BlY2lmaWVkLgorLSAjZ3Bpby1jZWxscyA6IFNob3VsZCBiZSB0d28uIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBwaW4gbnVtYmVyIGFuZCB0aGUKKyAgc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IG9wdGlvbmFsIHBhcmFtZXRlcnM6CisgIC0gYml0IDAgc3BlY2lmaWVzIHBvbGFyaXR5ICgwIGZvciBub3JtYWwsIDEgZm9yIGludmVydGVkKQorLSBncGlvLWNvbnRyb2xsZXIgOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYSBHUElPIGNvbnRyb2xsZXIuCistICNpbnRlcnJ1cHQtY2VsbHMgOiBTaG91bGQgYmUgMi4KKyAgVGhlIGZpcnN0IGNlbGwgaXMgdGhlIEdQSU8gbnVtYmVyLgorICBUaGUgc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IGZsYWdzOgorICAgIGJpdHNbMzowXSB0cmlnZ2VyIHR5cGUgYW5kIGxldmVsIGZsYWdzOgorICAgICAgMSA9IGxvdy10by1oaWdoIGVkZ2UgdHJpZ2dlcmVkLgorICAgICAgMiA9IGhpZ2gtdG8tbG93IGVkZ2UgdHJpZ2dlcmVkLgorICAgICAgNCA9IGFjdGl2ZSBoaWdoIGxldmVsLXNlbnNpdGl2ZS4KKyAgICAgIDggPSBhY3RpdmUgbG93IGxldmVsLXNlbnNpdGl2ZS4KKyAgICAgIFZhbGlkIGNvbWJpbmF0aW9ucyBhcmUgMSwgMiwgMywgNCwgOC4KKy0gaW50ZXJydXB0LWNvbnRyb2xsZXIgOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIuCisKK0V4YW1wbGU6CisKK2dwaW86IGdwaW9ANjAwMGQwMDAgeworCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMjAtZ3BpbyI7CisJcmVnID0gPCAweDYwMDBkMDAwIDB4MTAwMCA+OworCWludGVycnVwdHMgPSA8IDAgMzIgMHgwNAorCQkgICAgICAgMCAzMyAweDA0CisJCSAgICAgICAwIDM0IDB4MDQKKwkJICAgICAgIDAgMzUgMHgwNAorCQkgICAgICAgMCA1NSAweDA0CisJCSAgICAgICAwIDg3IDB4MDQKKwkJICAgICAgIDAgODkgMHgwNCA+OworCSNncGlvLWNlbGxzID0gPDI+OworCWdwaW8tY29udHJvbGxlcjsKKwkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCWludGVycnVwdC1jb250cm9sbGVyOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL254cCxscGMxODUwLWdwaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vbnhwLGxwYzE4NTAtZ3Bpby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI3Y2RkNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL254cCxscGMxODUwLWdwaW8udHh0CkBAIC0wLDAgKzEsMzkgQEAKK05YUCBMUEMxOHh4LzQzeHggR1BJTyBjb250cm9sbGVyIERldmljZSBUcmVlIEJpbmRpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlCQk6IFNob3VsZCBiZSAibnhwLGxwYzE4NTAtZ3BpbyIKKy0gcmVnCQkJOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorLSBjbG9ja3MJCTogQ2xvY2sgc3BlY2lmaWVyIChzZWUgY2xvY2sgYmluZGluZ3MgZm9yIGRldGFpbHMpCistIGdwaW8tY29udHJvbGxlcgk6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIEdQSU8gY29udHJvbGxlci4KKy0gI2dwaW8tY2VsbHMgCQk6IFNob3VsZCBiZSB0d28KKwkJCSAgLSBGaXJzdCBjZWxsIGlzIHRoZSBHUElPIGxpbmUgbnVtYmVyCisJCQkgIC0gU2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IHBvbGFyaXR5CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGdwaW8tcmFuZ2VzCQk6IE1hcHBpbmcgYmV0d2VlbiBHUElPIGFuZCBwaW5jdHJsCisKK0V4YW1wbGU6CisjZGVmaW5lIExQQ19HUElPKHBvcnQsIHBpbikJKHBvcnQgKiAzMiArIHBpbikKKyNkZWZpbmUgTFBDX1BJTihwb3J0LCBwaW4pCSgweCMjcG9ydCAqIDMyICsgcGluKQorCitncGlvOiBncGlvQDQwMGY0MDAwIHsKKwljb21wYXRpYmxlID0gIm54cCxscGMxODUwLWdwaW8iOworCXJlZyA9IDwweDQwMGY0MDAwIDB4NDAwMD47CisJY2xvY2tzID0gPCZjY3UxIENMS19DUFVfR1BJTz47CisJZ3Bpby1jb250cm9sbGVyOworCSNncGlvLWNlbGxzID0gPDI+OworCWdwaW8tcmFuZ2VzID0JPCZwaW5jdHJsIExQQ19HUElPKDAsMCkgIExQQ19QSU4oMCwwKSAgMj4sCisJCQkuLi4KKwkJCTwmcGluY3RybCBMUENfR1BJTyg3LDE5KSBMUENfUElOKGYsNSkgIDc+OworfTsKKworZ3Bpb19qb3lzdGljayB7CisJY29tcGF0aWJsZSA9ICJncGlvLWtleXMtcG9sbGVkIjsKKwkuLi4KKworCWJ1dHRvbkAwIHsKKwkJLi4uCisJCWdwaW9zID0gPCZncGlvIExQQ19HUElPKDQsOCkgR1BJT19BQ1RJVkVfTE9XPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL3BsMDYxLWdwaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vcGwwNjEtZ3Bpby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkwNThkMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL3BsMDYxLWdwaW8udHh0CkBAIC0wLDAgKzEsMTAgQEAKK0FSTSBQTDA2MSBHUElPIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJhcm0scGwwNjEiLCAiYXJtLHByaW1lY2VsbCIKKy0gI2dwaW8tY2VsbHMgOiBTaG91bGQgYmUgdHdvLiBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgcGluIG51bWJlciBhbmQgdGhlCisgIHNlY29uZCBjZWxsIGlzIHVzZWQgdG8gc3BlY2lmeSBvcHRpb25hbCBwYXJhbWV0ZXJzOgorICAtIGJpdCAwIHNwZWNpZmllcyBwb2xhcml0eSAoMCBmb3Igbm9ybWFsLCAxIGZvciBpbnZlcnRlZCkKKy0gZ3Bpby1jb250cm9sbGVyIDogTWFya3MgdGhlIGRldmljZSBub2RlIGFzIGEgR1BJTyBjb250cm9sbGVyLgorLSBpbnRlcnJ1cHRzIDogSW50ZXJydXB0IG1hcHBpbmcgZm9yIEdQSU8gSVJRLgorLSBncGlvLXJhbmdlcyA6IEludGVyYWN0aW9uIHdpdGggdGhlIFBJTkNUUkwgc3Vic3lzdGVtLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vcmVuZXNhcyxncGlvLXJjYXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vcmVuZXNhcyxncGlvLXJjYXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2MGUyZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9yZW5lc2FzLGdwaW8tcmNhci50eHQKQEAgLTAsMCArMSw2NCBAQAorKiBSZW5lc2FzIFItQ2FyIEdQSU8gQ29udHJvbGxlcgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZTogc2hvdWxkIGNvbnRhaW4gb25lIG9mIHRoZSBmb2xsb3dpbmcuCisgICAgLSAicmVuZXNhcyxncGlvLXI4YTc3NzgiOiBmb3IgUjhBNzc3OCAoUi1Nb2JpbGUgTTEpIGNvbXBhdGlibGUgR1BJTyBjb250cm9sbGVyLgorICAgIC0gInJlbmVzYXMsZ3Bpby1yOGE3Nzc5IjogZm9yIFI4QTc3NzkgKFItQ2FyIEgxKSBjb21wYXRpYmxlIEdQSU8gY29udHJvbGxlci4KKyAgICAtICJyZW5lc2FzLGdwaW8tcjhhNzc5MCI6IGZvciBSOEE3NzkwIChSLUNhciBIMikgY29tcGF0aWJsZSBHUElPIGNvbnRyb2xsZXIuCisgICAgLSAicmVuZXNhcyxncGlvLXI4YTc3OTEiOiBmb3IgUjhBNzc5MSAoUi1DYXIgTTItVykgY29tcGF0aWJsZSBHUElPIGNvbnRyb2xsZXIuCisgICAgLSAicmVuZXNhcyxncGlvLXI4YTc3OTMiOiBmb3IgUjhBNzc5MyAoUi1DYXIgTTItTikgY29tcGF0aWJsZSBHUElPIGNvbnRyb2xsZXIuCisgICAgLSAicmVuZXNhcyxncGlvLXI4YTc3OTQiOiBmb3IgUjhBNzc5NCAoUi1DYXIgRTIpIGNvbXBhdGlibGUgR1BJTyBjb250cm9sbGVyLgorICAgIC0gInJlbmVzYXMsZ3Bpby1yOGE3Nzk1IjogZm9yIFI4QTc3OTUgKFItQ2FyIEgzKSBjb21wYXRpYmxlIEdQSU8gY29udHJvbGxlci4KKyAgICAtICJyZW5lc2FzLGdwaW8tcmNhciI6IGZvciBnZW5lcmljIFItQ2FyIEdQSU8gY29udHJvbGxlci4KKworICAtIHJlZzogQmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgZWFjaCBtZW1vcnkgcmVzb3VyY2UgdXNlZCBieSB0aGUgR1BJTworICAgIGNvbnRyb2xsZXIgaGFyZHdhcmUgbW9kdWxlLgorCisgIC0gaW50ZXJydXB0LXBhcmVudDogcGhhbmRsZSBvZiB0aGUgcGFyZW50IGludGVycnVwdCBjb250cm9sbGVyLgorICAtIGludGVycnVwdHM6IEludGVycnVwdCBzcGVjaWZpZXIgZm9yIHRoZSBjb250cm9sbGVycyBpbnRlcnJ1cHQuCisKKyAgLSBncGlvLWNvbnRyb2xsZXI6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIGdwaW8gY29udHJvbGxlci4KKyAgLSAjZ3Bpby1jZWxsczogU2hvdWxkIGJlIDIuIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBHUElPIG51bWJlciBhbmQgdGhlIHNlY29uZAorICAgIGNlbGwgc3BlY2lmaWVzIEdQSU8gZmxhZ3MsIGFzIGRlZmluZWQgaW4gPGR0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oPi4gT25seSB0aGUKKyAgICBHUElPX0FDVElWRV9ISUdIIGFuZCBHUElPX0FDVElWRV9MT1cgZmxhZ3MgYXJlIHN1cHBvcnRlZC4KKyAgLSBncGlvLXJhbmdlczogUmFuZ2Ugb2YgcGlucyBtYW5hZ2VkIGJ5IHRoZSBHUElPIGNvbnRyb2xsZXIuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKyAgLSBjbG9ja3M6IE11c3QgY29udGFpbiBhIHJlZmVyZW5jZSB0byB0aGUgZnVuY3Rpb25hbCBjbG9jay4gIFRoZSBwcm9wZXJ0eSBpcworICAgIG1hbmRhdG9yeSBpZiB0aGUgaGFyZHdhcmUgaW1wbGVtZW50cyBhIGNvbnRyb2xsYWJsZSBmdW5jdGlvbmFsIGNsb2NrIGZvcgorICAgIHRoZSBHUElPIGluc3RhbmNlLgorCitQbGVhc2UgcmVmZXIgdG8gZ3Bpby50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGRldGFpbHMgb2YgZ3Bpby1yYW5nZXMgcHJvcGVydHkKK2FuZCB0aGUgY29tbW9uIEdQSU8gYmluZGluZ3MgdXNlZCBieSBjbGllbnQgZGV2aWNlcy4KKworVGhlIEdQSU8gY29udHJvbGxlciBhbHNvIGFjdHMgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIuIEl0IHVzZXMgdGhlIGRlZmF1bHQKK3R3byBjZWxscyBzcGVjaWZpZXIgYXMgZGVzY3JpYmVkIGluIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy8KK2ludGVycnVwdC1jb250cm9sbGVyL2ludGVycnVwdHMudHh0LgorCitFeGFtcGxlOiBSOEE3Nzc5IChSLUNhciBIMSkgR1BJTyBjb250cm9sbGVyIG5vZGVzCisKKwlncGlvMDogZ3Bpb0BmZmM0MDAwMCB7CisJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxncGlvLXI4YTc3NzkiLCAicmVuZXNhcyxncGlvLXJjYXIiOworCQlyZWcgPSA8MHhmZmM0MDAwMCAweDJjPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ2ljPjsKKwkJaW50ZXJydXB0cyA9IDwwIDE0MSAweDQ+OworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJZ3Bpby1jb250cm9sbGVyOworCQlncGlvLXJhbmdlcyA9IDwmcGZjIDAgMCAzMj47CisJCWludGVycnVwdC1jb250cm9sbGVyOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCX07CisJLi4uCisJZ3BpbzY6IGdwaW9AZmZjNDYwMDAgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMsZ3Bpby1yOGE3Nzc5IiwgInJlbmVzYXMsZ3Bpby1yY2FyIjsKKwkJcmVnID0gPDB4ZmZjNDYwMDAgMHgyYz47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdpYz47CisJCWludGVycnVwdHMgPSA8MCAxNDcgMHg0PjsKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCWdwaW8tY29udHJvbGxlcjsKKwkJZ3Bpby1yYW5nZXMgPSA8JnBmYyAwIDE5MiA5PjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL3NucHMtZHdhcGItZ3Bpby50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9zbnBzLWR3YXBiLWdwaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkNWQyYzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9zbnBzLWR3YXBiLWdwaW8udHh0CkBAIC0wLDAgKzEsNjAgQEAKKyogU3lub3BzeXMgRGVzaWduV2FyZSBBUEIgR1BJTyBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgY29udGFpbiAic25wcyxkdy1hcGItZ3BpbyIKKy0gcmVnIDogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UuCistICNhZGRyZXNzLWNlbGxzIDogc2hvdWxkIGJlIDEgKGZvciBhZGRyZXNzaW5nIHBvcnQgc3Vibm9kZXMpLgorLSAjc2l6ZS1jZWxscyA6IHNob3VsZCBiZSAwIChwb3J0IHN1Ym5vZGVzKS4KKworVGhlIEdQSU8gY29udHJvbGxlciBoYXMgYSBjb25maWd1cmFibGUgbnVtYmVyIG9mIHBvcnRzLCBlYWNoIG9mIHdoaWNoIGFyZQorcmVwcmVzZW50ZWQgYXMgY2hpbGQgbm9kZXMgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAic25wcyxkdy1hcGItZ3Bpby1wb3J0IgorLSBncGlvLWNvbnRyb2xsZXIgOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYSBncGlvIGNvbnRyb2xsZXIuCistICNncGlvLWNlbGxzIDogU2hvdWxkIGJlIHR3by4gIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBwaW4gbnVtYmVyIGFuZAorICB0aGUgc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBncGlvIHBvbGFyaXR5OgorICAgICAgMCA9IGFjdGl2ZSBoaWdoCisgICAgICAxID0gYWN0aXZlIGxvdworLSByZWcgOiBUaGUgaW50ZWdlciBwb3J0IGluZGV4IG9mIHRoZSBwb3J0LCBhIHNpbmdsZSBjZWxsLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBpbnRlcnJ1cHQtY29udHJvbGxlciA6IFRoZSBmaXJzdCBwb3J0IG1heSBiZSBjb25maWd1cmVkIHRvIGJlIGFuIGludGVycnVwdAorY29udHJvbGxlci4KKy0gI2ludGVycnVwdC1jZWxscyA6IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNlbGxzIG5lZWRlZCB0byBlbmNvZGUgYW4KKyAgaW50ZXJydXB0LiAgU2hhbGwgYmUgc2V0IHRvIDIuICBUaGUgZmlyc3QgY2VsbCBkZWZpbmVzIHRoZSBpbnRlcnJ1cHQgbnVtYmVyLAorICB0aGUgc2Vjb25kIGVuY29kZXMgdGhlIHRyaWdlciBmbGFncyBlbmNvZGVkIGFzIGRlc2NyaWJlZCBpbgorICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0cy50eHQKKy0gaW50ZXJydXB0LXBhcmVudCA6IFRoZSBwYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIuCistIGludGVycnVwdHMgOiBUaGUgaW50ZXJydXB0IHRvIHRoZSBwYXJlbnQgY29udHJvbGxlciByYWlzZWQgd2hlbiBHUElPcworICBnZW5lcmF0ZSB0aGUgaW50ZXJydXB0cy4KKy0gc25wcyxuci1ncGlvcyA6IFRoZSBudW1iZXIgb2YgcGlucyBpbiB0aGUgcG9ydCwgYSBzaW5nbGUgY2VsbC4KKworRXhhbXBsZToKKworZ3BpbzogZ3Bpb0AyMDAwMCB7CisJY29tcGF0aWJsZSA9ICJzbnBzLGR3LWFwYi1ncGlvIjsKKwlyZWcgPSA8MHgyMDAwMCAweDEwMDA+OworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDA+OworCisJcG9ydGE6IGdwaW8tY29udHJvbGxlckAwIHsKKwkJY29tcGF0aWJsZSA9ICJzbnBzLGR3LWFwYi1ncGlvLXBvcnQiOworCQlncGlvLWNvbnRyb2xsZXI7CisJCSNncGlvLWNlbGxzID0gPDI+OworCQlzbnBzLG5yLWdwaW9zID0gPDg+OworCQlyZWcgPSA8MD47CisJCWludGVycnVwdC1jb250cm9sbGVyOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZ2aWMxPjsKKwkJaW50ZXJydXB0cyA9IDwwPjsKKwl9OworCisJcG9ydGI6IGdwaW8tY29udHJvbGxlckAxIHsKKwkJY29tcGF0aWJsZSA9ICJzbnBzLGR3LWFwYi1ncGlvLXBvcnQiOworCQlncGlvLWNvbnRyb2xsZXI7CisJCSNncGlvLWNlbGxzID0gPDI+OworCQlzbnBzLG5yLWdwaW9zID0gPDg+OworCQlyZWcgPSA8MT47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9zb2RhdmlsbGUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vc29kYXZpbGxlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjNlZmYyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vc29kYXZpbGxlLnR4dApAQCAtMCwwICsxLDQ4IEBACitHUElPIGNvbnRyb2xsZXIgb24gQ0U0MTAwIC8gU29kYXZpbGxlIFNvQ3MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgYmluZGluZ3MgZm9yIENFNDEwMCdzIEdQSU8gY29udHJvbGxlciBtYXRjaCB0aGUgZ2VuZXJpYyBkZXNjcmlwdGlvbgord2hpY2ggaXMgY292ZXJlZCBieSB0aGUgZ3Bpby50eHQgZmlsZSBpbiB0aGlzIGZvbGRlci4KKworVGhlIG9ubHkgYWRkaXRpb25hbCBwcm9wZXJ0eSBpcyB0aGUgaW50ZWwsbXV4Y3RsIHByb3BlcnR5IHdoaWNoIGhvbGRzIHRoZQordmFsdWUgd2hpY2ggaXMgd3JpdHRlbiBpbnRvIHRoZSBNVVhDTlRMIHJlZ2lzdGVyLgorCitUaGVyZSBpcyBubyBjb21wYXRpYmxlIHByb3BlcnR5IGZvciBub3cgYmVjYXVzZSB0aGUgZHJpdmVyIGlzIHByb2JlZCB2aWEKK1BDSSBpZCAodmVuZG9yIDB4ODA4NiBkZXZpY2UgMHgyZTY3KS4KKworVGhlIGludGVycnVwdCBzcGVjaWZpZXIgY29uc2lzdHMgb2YgdHdvIGNlbGxzIGVuY29kZWQgYXMgZm9sbG93czoKKyAtIDwxc3QgY2VsbD46IFRoZSBpbnRlcnJ1cHQtbnVtYmVyIHRoYXQgaWRlbnRpZmllcyB0aGUgaW50ZXJydXB0IHNvdXJjZS4KKyAtIDwybmQgY2VsbD46IFRoZSBsZXZlbC1zZW5zZSBpbmZvcm1hdGlvbiwgZW5jb2RlZCBhcyBmb2xsb3dzOgorCQk0IC0gYWN0aXZlIGhpZ2ggbGV2ZWwtc2Vuc2l0aXZlCisJCTggLSBhY3RpdmUgbG93IGxldmVsLXNlbnNpdGl2ZQorCitFeGFtcGxlIG9mIHRoZSBHUElPIGRldmljZSBhbmQgb25lIHVzZXI6CisKKwlwY2lncGlvOiBncGlvQGIsMSB7CisJCQkvKiB0d28gY2VsbHMgZm9yIEdQSU8gYW5kIGludGVycnVwdCAqLworCQkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCQkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCQkJY29tcGF0aWJsZSA9ICJwY2k4MDg2LDJlNjcuMiIsCisJCQkJCSAgICJwY2k4MDg2LDJlNjciLAorCQkJCQkgICAicGNpY2xhc3NmZjAwMDAiLAorCQkJCQkgICAicGNpY2xhc3NmZjAwIjsKKworCQkJcmVnID0gPDB4MTU5MDAgMHgwIDB4MCAweDAgMHgwPjsKKwkJCS8qIEludGVycnVwdCBsaW5lIG9mIHRoZSBncGlvIGRldmljZSAqLworCQkJaW50ZXJydXB0cyA9IDwxNSAxPjsKKwkJCS8qIEl0IGlzIGFuIGludGVycnVwdCBhbmQgR1BJTyBjb250cm9sbGVyIGl0c2VsZiAqLworCQkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCQlncGlvLWNvbnRyb2xsZXI7CisJCQlpbnRlbCxtdXhjdGwgPSA8MD47CisJfTsKKworCXRlc3R1c2VyQDIwIHsKKwkJCWNvbXBhdGlibGUgPSAiZXhhbXBsZSx0ZXN0dXNlciI7CisJCQkvKiBVc2VyIHRoZSAxMXRoIEdQSU8gbGluZSBhcyBhbiBhY3RpdmUgaGlnaCB0cmlnZ2VyZWQKKwkJCSAqIGxldmVsIGludGVycnVwdAorCQkJICovCisJCQlpbnRlcnJ1cHRzID0gPDExIDg+OworCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmcGNpZ3Bpbz47CisJCQkvKiBVc2UgdGhpcyBHUElPIGFsc28gd2l0aCB0aGUgZ3BpbyBmdW5jdGlvbnMgKi8KKwkJCWdwaW9zID0gPCZwY2lncGlvIDExIDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9zcGVhcl9zcGljcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9zcGVhcl9zcGljcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZjMzdlYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL3NwZWFyX3NwaWNzLnR4dApAQCAtMCwwICsxLDUwIEBACis9PT0gU1QgTWljcm9lbGVjdHJvbmljcyBTUEVBciBTUEkgQ1MgRHJpdmVyID09PQorCitTUEVBciBwbGF0Zm9ybSBwcm92aWRlcyBhIHByb3Zpc2lvbiB0byBjb250cm9sIGNoaXBzZWxlY3RzIG9mIEFSTSBQTDAyMiBQcmltZQorQ2VsbCBzcGkgY29udHJvbGxlciB0aHJvdWdoIGl0cyBzeXN0ZW0gcmVnaXN0ZXJzLCB3aGljaCBvdGhlcndpc2UgcmVtYWlucyB1bmRlcgorUEwwMjIgY29udHJvbC4gSWYgY2hpcHNlbGVjdCByZW1haW4gdW5kZXIgUEwwMjIgY29udHJvbCB0aGVuIHRoZXkgd291bGQgYmUKK3JlbGVhc2VkIGFzIHNvb24gYXMgdHJhbnNmZXIgaXMgb3ZlciBhbmQgVHhGSUZPIGJlY29tZXMgZW1wdHkuIFRoaXMgaXMgbm90CitkZXNpcmVkIGJ5IHNvbWUgb2YgdGhlIGRldmljZSBwcm90b2NvbHMgYWJvdmUgc3BpIHdoaWNoIGV4cGVjdCAobXVsdGlwbGUpCit0cmFuc2ZlcnMgd2l0aG91dCByZWxlYXNpbmcgdGhlaXIgY2hpcHNlbGVjdHMuCisKK0NoaXBzZWxlY3RzIGNhbiBiZSBjb250cm9sbGVkIGJ5IHNvZnR3YXJlIGJ5IHR1cm5pbmcgdGhlbSBhcyBHUElPcy4gU1BFQXIKK3Byb3ZpZGVzIGFub3RoZXIgaW50ZXJmYWNlIHRocm91Z2ggc3lzdGVtIHJlZ2lzdGVycyB0aHJvdWdoIHdoaWNoIHNvZnR3YXJlIGNhbgorZGlyZWN0bHkgY29udHJvbCBlYWNoIFBMMDIyIGNoaXBzZWxlY3QuIEhlbmNlLCBpdCBpcyBuYXR1cmFsIGZvciBTUEVBciB0byBleHBvcnQKK3RoZSBjb250cm9sIG9mIHRoaXMgaW50ZXJmYWNlIGFzIGdwaW8uCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgKiBjb21wYXRpYmxlOiBzaG91bGQgYmUgZGVmaW5lZCBhcyAic3Qsc3BlYXItc3BpY3MtZ3BpbyIKKyAgKiByZWc6IG1lbnRpb25pbmcgYWRkcmVzcyByYW5nZSBvZiBzcGljcyBjb250cm9sbGVyCisgICogc3Qtc3BpY3MscGVyaXBjZmctcmVnOiBwZXJpcGhlcmFsIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgb2Zmc2V0CisgICogc3Qtc3BpY3Msc3ctZW5hYmxlLWJpdDogYml0IG9mZnNldCB0byBlbmFibGUgc3cgY29udHJvbAorICAqIHN0LXNwaWNzLGNzLXZhbHVlLWJpdDogYml0IG9mZnNldCB0byBkcml2ZSBjaGlwc2VsZWN0IGxvdyBvciBoaWdoCisgICogc3Qtc3BpY3MsY3MtZW5hYmxlLW1hc2s6IGNoaXAgc2VsZWN0IG51bWJlciBiaXQgbWFzaworICAqIHN0LXNwaWNzLGNzLWVuYWJsZS1zaGlmdDogY2hpcCBzZWxlY3QgbnVtYmVyIHByb2dyYW0gb2Zmc2V0CisgICogZ3Bpby1jb250cm9sbGVyOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgZ3BpbyBjb250cm9sbGVyCisgICogI2dwaW8tY2VsbHM6IHNob3VsZCBiZSAxIGFuZCB3aWxsIG1lbnRpb24gY2hpcCBzZWxlY3QgbnVtYmVyCisKK0FsbCB0aGUgYWJvdmUgYml0IG9mZnNldHMgYXJlIHdpdGhpbiBwZXJpcGNmZyByZWdpc3Rlci4KKworRXhhbXBsZToKKy0tLS0tLS0KK3NwaWNzOiBzcGljc0BlMDcwMDAwMHsKKyAgICAgICAgY29tcGF0aWJsZSA9ICJzdCxzcGVhci1zcGljcy1ncGlvIjsKKyAgICAgICAgcmVnID0gPDB4ZTA3MDAwMDAgMHgxMDAwPjsKKyAgICAgICAgc3Qtc3BpY3MscGVyaXBjZmctcmVnID0gPDB4M2IwPjsKKyAgICAgICAgc3Qtc3BpY3Msc3ctZW5hYmxlLWJpdCA9IDwxMj47CisgICAgICAgIHN0LXNwaWNzLGNzLXZhbHVlLWJpdCA9IDwxMT47CisgICAgICAgIHN0LXNwaWNzLGNzLWVuYWJsZS1tYXNrID0gPDM+OworICAgICAgICBzdC1zcGljcyxjcy1lbmFibGUtc2hpZnQgPSA8OD47CisgICAgICAgIGdwaW8tY29udHJvbGxlcjsKKyAgICAgICAgI2dwaW8tY2VsbHMgPSA8Mj47Cit9OworCisKK3NwaTA6IHNwaUBlMDEwMDAwMCB7CisgICAgICAgIHN0YXR1cyA9ICJva2F5IjsKKyAgICAgICAgbnVtLWNzID0gPDM+OworICAgICAgICBjcy1ncGlvcyA9IDwmZ3BpbzEgNyAwPiwgPCZzcGljcyAwPiwKKyAgICAgICAgICAgICAgICAgICA8JnNwaWNzIDE+OworCS4uLgorfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vengyOTY3MDItZ3Bpby50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby96eDI5NjcwMi1ncGlvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGFiMTU2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vengyOTY3MDItZ3Bpby50eHQKQEAgLTAsMCArMSwyNCBAQAorWlRFIFpYMjk2NzAyIEdQSU8gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogInp0ZSx6eDI5NjcwMi1ncGlvIgorLSAjZ3Bpby1jZWxscyA6IFNob3VsZCBiZSB0d28uIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBwaW4gbnVtYmVyIGFuZCB0aGUKKyAgc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IG9wdGlvbmFsIHBhcmFtZXRlcnM6CisgIC0gYml0IDAgc3BlY2lmaWVzIHBvbGFyaXR5ICgwIGZvciBub3JtYWwsIDEgZm9yIGludmVydGVkKQorLSBncGlvLWNvbnRyb2xsZXIgOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYSBHUElPIGNvbnRyb2xsZXIuCistIGludGVycnVwdHMgOiBJbnRlcnJ1cHQgbWFwcGluZyBmb3IgR1BJTyBJUlEuCistIGdwaW8tcmFuZ2VzIDogSW50ZXJhY3Rpb24gd2l0aCB0aGUgUElOQ1RSTCBzdWJzeXN0ZW0uCisKK2dwaW8xOiBncGlvQGIwMDgwNDAgeworCWNvbXBhdGlibGUgPSAienRlLHp4Mjk2NzAyLWdwaW8iOworCXJlZyA9IDwweGIwMDgwNDAgMHg0MD47CisJZ3Bpby1jb250cm9sbGVyOworCSNncGlvLWNlbGxzID0gPDI+OworCWdwaW8tcmFuZ2VzID0gPCAmcG14MCAwIDU0IDIgJnBteDAgMiA1OSAxND47CisJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDI2IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCWludGVycnVwdC1wYXJlbnQgPSA8JmludGM+OworCWludGVycnVwdC1jb250cm9sbGVyOworCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJY2xvY2stbmFtZXMgPSAiZ3Bpb19wY2xrIjsKKwljbG9ja3MgPSA8JmxzcDBjbGsgWlgyOTY3MDJfR1BJT19DTEs+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncHUvbnZpZGlhLGdrMjBhLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncHUvbnZpZGlhLGdrMjBhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2JmZThlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwdS9udmlkaWEsZ2syMGEudHh0CkBAIC0wLDAgKzEsNDMgQEAKK05WSURJQSBHSzIwQSBHcmFwaGljcyBQcm9jZXNzaW5nIFVuaXQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogIm52aWRpYSw8Y2hpcD4tPGdwdT4iCisgIEN1cnJlbnRseSByZWNvZ25pemVkIHZhbHVlczoKKyAgLSBudmlkaWEsdGVncmExMjQtZ2syMGEKKy0gcmVnOiBQaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgY29udHJvbGxlcidzIHJlZ2lzdGVycy4KKyAgTXVzdCBjb250YWluIHR3byBlbnRyaWVzOgorICAtIGZpcnN0IGVudHJ5IGZvciBiYXIwCisgIC0gc2Vjb25kIGVudHJ5IGZvciBiYXIxCistIGludGVycnVwdHM6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBpbnRlcnJ1cHQtbmFtZXMuCisgIFNlZSAuLi9pbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlcnJ1cHRzLnR4dCBmb3IgZGV0YWlscy4KKy0gaW50ZXJydXB0LW5hbWVzOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAtIHN0YWxsCisgIC0gbm9uc3RhbGwKKy0gdmRkLXN1cHBseTogcmVndWxhdG9yIGZvciBzdXBwbHkgdm9sdGFnZS4KKy0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCisgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorLSBjbG9jay1uYW1lczogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgLSBncHUKKyAgLSBwd3IKKy0gcmVzZXRzOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gcmVzZXQtbmFtZXMuCisgIFNlZSAuLi9yZXNldC9yZXNldC50eHQgZm9yIGRldGFpbHMuCistIHJlc2V0LW5hbWVzOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAtIGdwdQorCitFeGFtcGxlOgorCisJZ3B1QDAsNTcwMDAwMDAgeworCQljb21wYXRpYmxlID0gIm52aWRpYSxnazIwYSI7CisJCXJlZyA9IDwweDAgMHg1NzAwMDAwMCAweDAgMHgwMTAwMDAwMD4sCisJCSAgICAgIDwweDAgMHg1ODAwMDAwMCAweDAgMHgwMTAwMDAwMD47CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSAxNTcgSVJRX1RZUEVfTEVWRUxfSElHSD4sCisJCQkgICAgIDxHSUNfU1BJIDE1OCBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJaW50ZXJydXB0LW5hbWVzID0gInN0YWxsIiwgIm5vbnN0YWxsIjsKKwkJdmRkLXN1cHBseSA9IDwmdmRkX2dwdT47CisJCWNsb2NrcyA9IDwmdGVncmFfY2FyIFRFR1JBMTI0X0NMS19HUFU+LAorCQkJIDwmdGVncmFfY2FyIFRFR1JBMTI0X0NMS19QTExfUF9PVVQ1PjsKKwkJY2xvY2stbmFtZXMgPSAiZ3B1IiwgInB3ciI7CisJCXJlc2V0cyA9IDwmdGVncmFfY2FyIDE4ND47CisJCXJlc2V0LW5hbWVzID0gImdwdSI7CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncHUvc2Ftc3VuZy1nMmQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwdS9zYW1zdW5nLWcyZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRmMzU4ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncHUvc2Ftc3VuZy1nMmQudHh0CkBAIC0wLDAgKzEsMjggQEAKKyogU2Ftc3VuZyAyRCBHcmFwaGljcyBBY2NlbGVyYXRvcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGUgOiB2YWx1ZSBzaG91bGQgYmUgb25lIGFtb25nIHRoZSBmb2xsb3dpbmc6CisJKGEpICJzYW1zdW5nLHM1cHYyMTAtZzJkIiBmb3IgRzJEIElQIHByZXNlbnQgaW4gUzVQVjIxMCAmIEV4eW5vczQyMTAgU29DCisJKGIpICJzYW1zdW5nLGV4eW5vczQyMTItZzJkIiBmb3IgRzJEIElQIHByZXNlbnQgaW4gRXh5bm9zNHgxMiBTb0NzCisJKGMpICJzYW1zdW5nLGV4eW5vczUyNTAtZzJkIiBmb3IgRzJEIElQIHByZXNlbnQgaW4gRXh5bm9zNTI1MCBTb0MKKworICAtIHJlZyA6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgSVAgcmVnaXN0ZXJzIGFuZCBsZW5ndGggb2YgbWVtb3J5CisJICBtYXBwZWQgcmVnaW9uLgorCisgIC0gaW50ZXJydXB0cyA6IEcyRCBpbnRlcnJ1cHQgbnVtYmVyIHRvIHRoZSBDUFUuCisgIC0gY2xvY2tzIDogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzogaGFuZGxlIHRvIEcyRCBjbG9ja3MuCisgIC0gY2xvY2stbmFtZXMgOiBuYW1lcyBvZiBjbG9ja3MgbGlzdGVkIGluIGNsb2NrcyBwcm9wZXJ0eSwgaW4gdGhlIHNhbWUKKwkJICBvcmRlciwgZGVwZW5kaW5nIG9uIFNvQyB0eXBlOgorCQkgIC0gZm9yIFM1UFYyMTAgYW5kIEV4eW5vczQgYmFzZWQgU29DczogImZpbWcyZCIgYW5kCisJCSAgICAic2Nsa19maW1nMmQiCisJCSAgLSBmb3IgRXh5bm9zNTI1MCBTb0M6ICJmaW1nMmQiLgorCitFeGFtcGxlOgorCWcyZEAxMjgwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxzNXB2MjEwLWcyZCI7CisJCXJlZyA9IDwweDEyODAwMDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MCA4OSAwPjsKKwkJY2xvY2tzID0gPCZjbG9jayAxNzc+LCA8JmNsb2NrIDI3Nz47CisJCWNsb2NrLW5hbWVzID0gInNjbGtfZmltZzJkIiwgImZpbWcyZCI7CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncHUvc2Ftc3VuZy1yb3RhdG9yLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncHUvc2Ftc3VuZy1yb3RhdG9yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmNkMWVkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwdS9zYW1zdW5nLXJvdGF0b3IudHh0CkBAIC0wLDAgKzEsMjcgQEAKKyogU2Ftc3VuZyBJbWFnZSBSb3RhdG9yCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZSA6IHZhbHVlIHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKwkoYSkgInNhbXN1bmcsZXh5bm9zNDIxMC1yb3RhdG9yIiBmb3IgUm90YXRvciBJUCBpbiBFeHlub3M0MjEwCisJKGIpICJzYW1zdW5nLGV4eW5vczQyMTItcm90YXRvciIgZm9yIFJvdGF0b3IgSVAgaW4gRXh5bm9zNDIxMi80NDEyCisJKGMpICJzYW1zdW5nLGV4eW5vczUyNTAtcm90YXRvciIgZm9yIFJvdGF0b3IgSVAgaW4gRXh5bm9zNTI1MAorCisgIC0gcmVnIDogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBJUCByZWdpc3RlcnMgYW5kIGxlbmd0aCBvZiBtZW1vcnkKKwkgIG1hcHBlZCByZWdpb24uCisKKyAgLSBpbnRlcnJ1cHRzIDogSW50ZXJydXB0IHNwZWNpZmllciBmb3Igcm90YXRvciBpbnRlcnJ1cHQsIGFjY29yZGluZyB0byBmb3JtYXQKKwkJIHNwZWNpZmljIHRvIGludGVycnVwdCBwYXJlbnQuCisKKyAgLSBjbG9ja3MgOiBDbG9jayBzcGVjaWZpZXIgZm9yIHJvdGF0b3IgY2xvY2ssIGFjY29yZGluZyB0byBnZW5lcmljIGNsb2NrCisJICAgICBiaW5kaW5ncy4gKFNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svZXh5bm9zKi50eHQpCisKKyAgLSBjbG9jay1uYW1lcyA6IE5hbWVzIG9mIGNsb2Nrcy4gRm9yIGV4eW5vcyByb3RhdG9yLCBpdCBzaG91bGQgYmUgInJvdGF0b3IiLgorCitFeGFtcGxlOgorCXJvdGF0b3JAMTI4MTAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNDIxMC1yb3RhdG9yIjsKKwkJcmVnID0gPDB4MTI4MTAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDgzIDA+OworCQljbG9ja3MgPSA8JmNsb2NrIDI3OD47CisJCWNsb2NrLW5hbWVzID0gInJvdGF0b3IiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3JhcGgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dyYXBoLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2IxYzZhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dyYXBoLnR4dApAQCAtMCwwICsxLDEyOSBAQAorQ29tbW9uIGJpbmRpbmdzIGZvciBkZXZpY2UgZ3JhcGhzCisKK0dlbmVyYWwgY29uY2VwdAorLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBoaWVyYXJjaGljYWwgb3JnYW5pc2F0aW9uIG9mIHRoZSBkZXZpY2UgdHJlZSBpcyB3ZWxsIHN1aXRlZCB0byBkZXNjcmliZQorY29udHJvbCBmbG93IHRvIGRldmljZXMsIGJ1dCB0aGVyZSBjYW4gYmUgbW9yZSBjb21wbGV4IGNvbm5lY3Rpb25zIGJldHdlZW4KK2RldmljZXMgdGhhdCB3b3JrIHRvZ2V0aGVyIHRvIGZvcm0gYSBsb2dpY2FsIGNvbXBvdW5kIGRldmljZSwgZm9sbG93aW5nIGFuCithcmJpdHJhcmlseSBjb21wbGV4IGdyYXBoLgorVGhlcmUgYWxyZWFkeSBpcyBhIHNpbXBsZSBkaXJlY3RlZCBncmFwaCBiZXR3ZWVuIGRldmljZXMgdHJlZSBub2RlcyB1c2luZworcGhhbmRsZSBwcm9wZXJ0aWVzIHBvaW50aW5nIHRvIG90aGVyIG5vZGVzIHRvIGRlc2NyaWJlIGNvbm5lY3Rpb25zIHRoYXQKK2NhbiBub3QgYmUgaW5mZXJyZWQgZnJvbSBkZXZpY2UgdHJlZSBwYXJlbnQtY2hpbGQgcmVsYXRpb25zaGlwcy4gVGhlIGRldmljZQordHJlZSBncmFwaCBiaW5kaW5ncyBkZXNjcmliZWQgaGVyZWluIGFic3RyYWN0IG1vcmUgY29tcGxleCBkZXZpY2VzIHRoYXQgY2FuCitoYXZlIG11bHRpcGxlIHNwZWNpZmlhYmxlIHBvcnRzLCBlYWNoIG9mIHdoaWNoIGNhbiBiZSBsaW5rZWQgdG8gb25lIG9yIG1vcmUKK3BvcnRzIG9mIG90aGVyIGRldmljZXMuCisKK1RoZXNlIGNvbW1vbiBiaW5kaW5ncyBkbyBub3QgY29udGFpbiBhbnkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRpcmVjdGlvbiBvcgordHlwZSBvZiB0aGUgY29ubmVjdGlvbnMsIHRoZXkganVzdCBtYXAgdGhlaXIgZXhpc3RlbmNlLiBTcGVjaWZpYyBwcm9wZXJ0aWVzCittYXkgYmUgZGVzY3JpYmVkIGJ5IHNwZWNpYWxpemVkIGJpbmRpbmdzIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBjb25uZWN0aW9uLgorCitUbyBzZWUgaG93IHRoaXMgYmluZGluZyBhcHBsaWVzIHRvIHZpZGVvIHBpcGVsaW5lcywgZm9yIGV4YW1wbGUsIHNlZQorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3ZpZGVvLWludGVyZmFjZXMudHh0LgorSGVyZSB0aGUgcG9ydHMgZGVzY3JpYmUgZGF0YSBpbnRlcmZhY2VzLCBhbmQgdGhlIGxpbmtzIGJldHdlZW4gdGhlbSBhcmUKK3RoZSBjb25uZWN0aW5nIGRhdGEgYnVzZXMuIEEgc2luZ2xlIHBvcnQgd2l0aCBtdWx0aXBsZSBjb25uZWN0aW9ucyBjYW4KK2NvcnJlc3BvbmQgdG8gbXVsdGlwbGUgZGV2aWNlcyBiZWluZyBjb25uZWN0ZWQgdG8gdGhlIHNhbWUgcGh5c2ljYWwgYnVzLgorCitPcmdhbmlzYXRpb24gb2YgcG9ydHMgYW5kIGVuZHBvaW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUG9ydHMgYXJlIGRlc2NyaWJlZCBieSBjaGlsZCAncG9ydCcgbm9kZXMgY29udGFpbmVkIGluIHRoZSBkZXZpY2Ugbm9kZS4KK0VhY2ggcG9ydCBub2RlIGNvbnRhaW5zIGFuICdlbmRwb2ludCcgc3Vibm9kZSBmb3IgZWFjaCByZW1vdGUgZGV2aWNlIHBvcnQKK2Nvbm5lY3RlZCB0byB0aGlzIHBvcnQuIElmIGEgc2luZ2xlIHBvcnQgaXMgY29ubmVjdGVkIHRvIG1vcmUgdGhhbiBvbmUKK3JlbW90ZSBkZXZpY2UsIGFuICdlbmRwb2ludCcgY2hpbGQgbm9kZSBtdXN0IGJlIHByb3ZpZGVkIGZvciBlYWNoIGxpbmsuCitJZiBtb3JlIHRoYW4gb25lIHBvcnQgaXMgcHJlc2VudCBpbiBhIGRldmljZSBub2RlIG9yIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUKK2VuZHBvaW50IGF0IGEgcG9ydCwgb3IgYSBwb3J0IG5vZGUgbmVlZHMgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGEgc2VsZWN0ZWQKK2hhcmR3YXJlIGludGVyZmFjZSwgYSBjb21tb24gc2NoZW1lIHVzaW5nICcjYWRkcmVzcy1jZWxscycsICcjc2l6ZS1jZWxscycKK2FuZCAncmVnJyBwcm9wZXJ0aWVzIGlzIHVzZWQgbnVtYmVyIHRoZSBub2Rlcy4KKworZGV2aWNlIHsKKyAgICAgICAgLi4uCisgICAgICAgICNhZGRyZXNzLWNlbGxzID0gPDE+OworICAgICAgICAjc2l6ZS1jZWxscyA9IDwwPjsKKworICAgICAgICBwb3J0QDAgeworCSAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJICAgICAgICAjc2l6ZS1jZWxscyA9IDwwPjsKKwkJcmVnID0gPDA+OworCisgICAgICAgICAgICAgICAgZW5kcG9pbnRAMCB7CisJCQlyZWcgPSA8MD47CisJCQkuLi4KKwkJfTsKKyAgICAgICAgICAgICAgICBlbmRwb2ludEAxIHsKKwkJCXJlZyA9IDwxPjsKKwkJCS4uLgorCQl9OworICAgICAgICB9OworCisgICAgICAgIHBvcnRAMSB7CisJCXJlZyA9IDwxPjsKKworCQllbmRwb2ludCB7IC4uLiB9OworCX07Cit9OworCitBbGwgJ3BvcnQnIG5vZGVzIGNhbiBiZSBncm91cGVkIHVuZGVyIGFuIG9wdGlvbmFsICdwb3J0cycgbm9kZSwgd2hpY2gKK2FsbG93cyB0byBzcGVjaWZ5ICNhZGRyZXNzLWNlbGxzLCAjc2l6ZS1jZWxscyBwcm9wZXJ0aWVzIGZvciB0aGUgJ3BvcnQnCitub2RlcyBpbmRlcGVuZGVudGx5IGZyb20gYW55IG90aGVyIGNoaWxkIGRldmljZSBub2RlcyBhIGRldmljZSBtaWdodAoraGF2ZS4KKworZGV2aWNlIHsKKyAgICAgICAgLi4uCisgICAgICAgIHBvcnRzIHsKKyAgICAgICAgICAgICAgICAjYWRkcmVzcy1jZWxscyA9IDwxPjsKKyAgICAgICAgICAgICAgICAjc2l6ZS1jZWxscyA9IDwwPjsKKworICAgICAgICAgICAgICAgIHBvcnRAMCB7CisgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBvaW50QDAgeyAuLi4gfTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBvaW50QDEgeyAuLi4gfTsKKyAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgcG9ydEAxIHsgLi4uIH07CisgICAgICAgIH07Cit9OworCitMaW5rcyBiZXR3ZWVuIGVuZHBvaW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRWFjaCBlbmRwb2ludCBzaG91bGQgY29udGFpbiBhICdyZW1vdGUtZW5kcG9pbnQnIHBoYW5kbGUgcHJvcGVydHkgdGhhdCBwb2ludHMKK3RvIHRoZSBjb3JyZXNwb25kaW5nIGVuZHBvaW50IGluIHRoZSBwb3J0IG9mIHRoZSByZW1vdGUgZGV2aWNlLiBJbiB0dXJuLCB0aGUKK3JlbW90ZSBlbmRwb2ludCBzaG91bGQgY29udGFpbiBhICdyZW1vdGUtZW5kcG9pbnQnIHByb3BlcnR5LiBJZiBpdCBoYXMgb25lLAoraXQgbXVzdCBub3QgcG9pbnQgdG8gYW5vdGhlciB0aGFuIHRoZSBsb2NhbCBlbmRwb2ludC4gVHdvIGVuZHBvaW50cyB3aXRoIHRoZWlyCisncmVtb3RlLWVuZHBvaW50JyBwaGFuZGxlcyBwb2ludGluZyBhdCBlYWNoIG90aGVyIGZvcm0gYSBsaW5rIGJldHdlZW4gdGhlCitjb250YWluaW5nIHBvcnRzLgorCitkZXZpY2UtMSB7CisgICAgICAgIHBvcnQgeworICAgICAgICAgICAgICAgIGRldmljZV8xX291dHB1dDogZW5kcG9pbnQgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlLWVuZHBvaW50ID0gPCZkZXZpY2VfMl9pbnB1dD47CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKK307CisKK2RldmljZS0yIHsKKyAgICAgICAgcG9ydCB7CisgICAgICAgICAgICAgICAgZGV2aWNlXzJfaW5wdXQ6IGVuZHBvaW50IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZS1lbmRwb2ludCA9IDwmZGV2aWNlXzFfb3V0cHV0PjsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICB9OworfTsKKworCitSZXF1aXJlZCBwcm9wZXJ0aWVzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgJ3BvcnQnIG9yIG1vcmUgdGhhbiBvbmUgJ2VuZHBvaW50JyBub2RlIG9yICdyZWcnCitwcm9wZXJ0eSBpcyBwcmVzZW50IGluIHBvcnQgYW5kL29yIGVuZHBvaW50IG5vZGVzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcworYXJlIHJlcXVpcmVkIGluIGEgcmVsZXZhbnQgcGFyZW50IG5vZGU6CisKKyAtICNhZGRyZXNzLWNlbGxzIDogbnVtYmVyIG9mIGNlbGxzIHJlcXVpcmVkIHRvIGRlZmluZSBwb3J0L2VuZHBvaW50CisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIsIHNob3VsZCBiZSAxLgorIC0gI3NpemUtY2VsbHMgICAgOiBzaG91bGQgYmUgemVyby4KKworT3B0aW9uYWwgZW5kcG9pbnQgcHJvcGVydGllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIHJlbW90ZS1lbmRwb2ludDogcGhhbmRsZSB0byBhbiAnZW5kcG9pbnQnIHN1Ym5vZGUgb2YgYSByZW1vdGUgZGV2aWNlIG5vZGUuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9oODMwMC9jcHUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2g4MzAwL2NwdS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBjZDU4NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9oODMwMC9jcHUudHh0CkBAIC0wLDAgKzEsMTMgQEAKKyogSDgvMzAwIENQVSBiaW5kaW5ncworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IENvbXBhdGlibGUgcHJvcGVydHkgdmFsdWUgc2hvdWxkIGJlICJyZW5lc2FzLGg4MzAwIi4KKy0gY2xvY2stZnJlcXVlbmN5OiBDb250YWlucyB0aGUgY2xvY2sgZnJlcXVlbmN5IGZvciBDUFUsIGluIEh6LgorCitFeGFtcGxlOgorCisJCWNwdUAwIHsKKwkJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxoODMwMCI7CisJCQljbG9jay1mcmVxdWVuY3kgPSA8MjAwMDAwMDA+OworCQl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2hzaS9jbGllbnQtZGV2aWNlcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaHNpL2NsaWVudC1kZXZpY2VzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDRjOWEzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2hzaS9jbGllbnQtZGV2aWNlcy50eHQKQEAgLTAsMCArMSw0NCBAQAorRWFjaCBIU0kgcG9ydCBpcyBzdXBwb3NlZCB0byBoYXZlIG9uZSBjaGlsZCBub2RlLCB3aGljaAorc3ltYm9scyB0aGUgcmVtb3RlIGRldmljZSBjb25uZWN0ZWQgdG8gdGhlIEhTSSBwb3J0LiBUaGUKK2ZvbGxvd2luZyBwcm9wZXJ0aWVzIGFyZSBzdGFuZGFyZGl6ZWQgZm9yIEhTSSBjbGllbnRzOgorCitSZXF1aXJlZCBIU0kgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzOgorCistIGhzaS1jaGFubmVsLWlkczoJQSBsaXN0IG9mIGNoYW5uZWwgaWRzCisKKy0gaHNpLXJ4LW1vZGU6CQlSZWNlaXZlciBCaXQgdHJhbnNtaXNzaW9uIG1vZGUgKCJzdHJlYW0iIG9yICJmcmFtZSIpCistIGhzaS10eC1tb2RlOgkJVHJhbnNtaXR0ZXIgQml0IHRyYW5zbWlzc2lvbiBtb2RlICgic3RyZWFtIiBvciAiZnJhbWUiKQorLSBoc2ktbW9kZToJCU1heSBiZSB1c2VkIGluc3RlYWQgaHNpLXJ4LW1vZGUgYW5kIGhzaS10eC1tb2RlIGlmCisJCQl0aGUgdHJhbnNtaXNzaW9uIG1vZGUgaXMgdGhlIHNhbWUgZm9yIHJlY2VpdmVyIGFuZAorCQkJdHJhbnNtaXR0ZXIKKy0gaHNpLXNwZWVkLWticHM6CU1heCBiaXQgdHJhbnNtaXNzaW9uIHNwZWVkIGluIGtiaXQvcworLSBoc2ktZmxvdzoJCVJYIGZsb3cgdHlwZSAoInN5bmNocm9uaXplZCIgb3IgInBpcGVsaW5lIikKKy0gaHNpLWFyYi1tb2RlOgkJQXJiaXRyYXRpb24gbW9kZSBmb3IgVFggZnJhbWUgKCJyb3VuZC1yb2JpbiIsICJwcmlvcml0eSIpCisKK09wdGlvbmFsIEhTSSBjb25maWd1cmF0aW9uIHByb3BlcnRpZXM6CisKKy0gaHNpLWNoYW5uZWwtbmFtZXM6CUEgbGlzdCB3aXRoIG9uZSBuYW1lIHBlciBjaGFubmVsIHNwZWNpZmllZCBpbiB0aGUKKwkJCWhzaS1jaGFubmVsLWlkcyBwcm9wZXJ0eQorCisKK0RldmljZSBUcmVlIG5vZGUgZXhhbXBsZSBmb3IgYW4gSFNJIGNsaWVudDoKKworaHNpLWNvbnRyb2xsZXIgeworCWhzaS1wb3J0IHsKKwkJbW9kZW06IGhzaS1jbGllbnQgeworCQkJY29tcGF0aWJsZSA9ICJub2tpYSxuOTAwLW1vZGVtIjsKKworCQkJaHNpLWNoYW5uZWwtaWRzID0gPDA+LCA8MT4sIDwyPiwgPDM+OworCQkJaHNpLWNoYW5uZWwtbmFtZXMgPSAibWNzYWFiLWNvbnRyb2wiLAorCQkJCQkgICAgInNwZWVjaC1jb250cm9sIiwKKwkJCQkJICAgICJzcGVlY2gtZGF0YSIsCisJCQkJCSAgICAibWNzYWFiLWRhdGEiOworCQkJaHNpLXNwZWVkLWticHMgPSA8NTUwMDA+OworCQkJaHNpLW1vZGUgPSAiZnJhbWUiOworCQkJaHNpLWZsb3cgPSAic3luY2hyb25pemVkIjsKKwkJCWhzaS1hcmItbW9kZSA9ICJyb3VuZC1yb2JpbiI7CisKKwkJCS8qIG1vcmUgY2xpZW50IHNwZWNpZmljIHByb3BlcnRpZXMgKi8KKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9oc2kvbm9raWEtbW9kZW0udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2hzaS9ub2tpYS1tb2RlbS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE5Nzk3OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9oc2kvbm9raWEtbW9kZW0udHh0CkBAIC0wLDAgKzEsNTcgQEAKK05va2lhIG1vZGVtIGNsaWVudCBiaW5kaW5ncworCitUaGUgTm9raWEgbW9kZW0gSFNJIGNsaWVudCBmb2xsb3dzIHRoZSBjb21tb24gSFNJIGNsaWVudCBiaW5kaW5nCithbmQgaW5oZXJpdHMgYWxsIHJlcXVpcmVkIHByb3BlcnRpZXMuIFRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbAorcHJvcGVydGllcyBhcmUgbmVlZGVkIGJ5IHRoZSBOb2tpYSBtb2RlbSBIU0kgY2xpZW50OgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOgkJU2hvdWxkIGJlIG9uZSBvZgorICAgICAgIm5va2lhLG45MDAtbW9kZW0iCistIGhzaS1jaGFubmVsLW5hbWVzOglTaG91bGQgY29udGFpbiB0aGUgZm9sbG93aW5nIHN0cmluZ3MKKyAgICAgICJtY3NhYWItY29udHJvbCIKKyAgICAgICJzcGVlY2gtY29udHJvbCIKKyAgICAgICJzcGVlY2gtZGF0YSIKKyAgICAgICJtY3NhYWItZGF0YSIKKy0gZ3Bpb3M6CQlTaG91bGQgcHJvdmlkZSBhIEdQSU8gaGFuZGxlciBmb3IgZWFjaCBHUElPIGxpc3RlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgZ3Bpby1uYW1lcworLSBncGlvLW5hbWVzOgkJU2hvdWxkIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBzdHJpbmdzCisgICAgICAiY210X2FwZXNscHgiCisgICAgICAiY210X3JzdF9ycSIKKyAgICAgICJjbXRfZW4iCisgICAgICAiY210X3JzdCIKKyAgICAgICJjbXRfYnNpIgorLSBpbnRlcnJ1cHRzOgkJU2hvdWxkIGJlIElSUSBoYW5kbGUgZm9yIG1vZGVtJ3MgcmVzZXQgaW5kaWNhdGlvbgorCitFeGFtcGxlOgorCismc3NpX3BvcnQgeworCW1vZGVtOiBoc2ktY2xpZW50IHsKKwkJY29tcGF0aWJsZSA9ICJub2tpYSxuOTAwLW1vZGVtIjsKKworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8Jm1vZGVtX3BpbnM+OworCisJCWhzaS1jaGFubmVsLWlkcyA9IDwwPiwgPDE+LCA8Mj4sIDwzPjsKKwkJaHNpLWNoYW5uZWwtbmFtZXMgPSAibWNzYWFiLWNvbnRyb2wiLAorCQkJCSAgICAic3BlZWNoLWNvbnRyb2wiLAorCQkJCSAgICAic3BlZWNoLWRhdGEiLAorCQkJCSAgICAibWNzYWFiLWRhdGEiOworCQloc2ktc3BlZWQta2JwcyA9IDw1NTAwMD47CisJCWhzaS1tb2RlID0gImZyYW1lIjsKKwkJaHNpLWZsb3cgPSAic3luY2hyb25pemVkIjsKKwkJaHNpLWFyYi1tb2RlID0gInJvdW5kLXJvYmluIjsKKworCQlpbnRlcnJ1cHRzLWV4dGVuZGVkID0gPCZncGlvMyA4IElSUV9UWVBFX0VER0VfRkFMTElORz47IC8qIDcyICovCisKKwkJZ3Bpb3MgPSA8JmdwaW8zICA2IEdQSU9fQUNUSVZFX0hJR0g+LCAvKiA3MCAqLworCQkJPCZncGlvMyAgOSBHUElPX0FDVElWRV9ISUdIPiwgLyogNzMgKi8KKwkJCTwmZ3BpbzMgMTAgR1BJT19BQ1RJVkVfSElHSD4sIC8qIDc0ICovCisJCQk8JmdwaW8zIDExIEdQSU9fQUNUSVZFX0hJR0g+LCAvKiA3NSAqLworCQkJPCZncGlvNSAyOSBHUElPX0FDVElWRV9ISUdIPjsgLyogMTU3ICovCisJCWdwaW8tbmFtZXMgPSAiY210X2FwZXNscHgiLAorCQkJICAgICAiY210X3JzdF9ycSIsCisJCQkgICAgICJjbXRfZW4iLAorCQkJICAgICAiY210X3JzdCIsCisJCQkgICAgICJjbXRfYnNpIjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9oc2kvb21hcC1zc2kudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2hzaS9vbWFwLXNzaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjI2NjI1ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9oc2kvb21hcC1zc2kudHh0CkBAIC0wLDAgKzEsOTcgQEAKK09NQVAgU1NJIGNvbnRyb2xsZXIgYmluZGluZ3MKKworT01BUCBTeW5jaHJvbm91cyBTZXJpYWwgSW50ZXJmYWNlIChTU0kpIGNvbnRyb2xsZXIgaW1wbGVtZW50cyBhIGxlZ2FjeQordmFyaWFudCBvZiBNSVBJJ3MgSGlnaCBTcGVlZCBTeW5jaHJvbm91cyBTZXJpYWwgSW50ZXJmYWNlIChIU0kpLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOgkJU2hvdWxkIGluY2x1ZGUgInRpLG9tYXAzLXNzaSIuCistIHJlZy1uYW1lczoJCUNvbnRhaW5zIHRoZSB2YWx1ZXMgInN5cyIgYW5kICJnZGQiIChpbiB0aGlzIG9yZGVyKS4KKy0gcmVnOgkJCUNvbnRhaW5zIGEgbWF0Y2hpbmcgcmVnaXN0ZXIgc3BlY2lmaWVyIGZvciBlYWNoIGVudHJ5CisJCQlpbiByZWctbmFtZXMuCistIGludGVycnVwdC1uYW1lczoJQ29udGFpbnMgdGhlIHZhbHVlICJnZGRfbXB1Ii4KKy0gaW50ZXJydXB0czogCQlDb250YWlucyBtYXRjaGluZyBpbnRlcnJ1cHQgaW5mb3JtYXRpb24gZm9yIGVhY2ggZW50cnkKKwkJCWluIGludGVycnVwdC1uYW1lcy4KKy0gcmFuZ2VzOgkJUmVwcmVzZW50cyB0aGUgYnVzIGFkZHJlc3MgbWFwcGluZyBiZXR3ZWVuIHRoZSBtYWluCisJCQljb250cm9sbGVyIG5vZGUgYW5kIHRoZSBjaGlsZCBub2RlcyBiZWxvdy4KKy0gY2xvY2stbmFtZXM6CQlNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAic3NpX3Nzcl9mY2siOiBUaGUgT01BUCBjbG9jayBvZiB0aGF0IG5hbWUKKyAgInNzaV9zc3RfZmNrIjogVGhlIE9NQVAgY2xvY2sgb2YgdGhhdCBuYW1lCisgICJzc2lfaWNrIjogVGhlIE9NQVAgY2xvY2sgb2YgdGhhdCBuYW1lCistIGNsb2NrczoJCUNvbnRhaW5zIGEgbWF0Y2hpbmcgY2xvY2sgc3BlY2lmaWVyIGZvciBlYWNoIGVudHJ5IGluCisJCQljbG9jay1uYW1lcy4KKy0gI2FkZHJlc3MtY2VsbHM6CVNob3VsZCBiZSBzZXQgdG8gPDE+CistICNzaXplLWNlbGxzOgkJU2hvdWxkIGJlIHNldCB0byA8MT4KKworRWFjaCBwb3J0IGlzIHJlcHJlc2VudGVkIGFzIGEgc3ViLW5vZGUgb2YgdGhlIHRpLG9tYXAzLXNzaSBkZXZpY2UuCisKK1JlcXVpcmVkIFBvcnQgc3ViLW5vZGUgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZToJCVNob3VsZCBiZSBzZXQgdG8gdGhlIGZvbGxvd2luZyB2YWx1ZQorCQkJdGksb21hcDMtc3NpLXBvcnQgKGFwcGxpY2FibGUgdG8gT01BUDM0eHggZGV2aWNlcykKKy0gcmVnLW5hbWVzOgkJQ29udGFpbnMgdGhlIHZhbHVlcyAidHgiIGFuZCAicngiIChpbiB0aGlzIG9yZGVyKS4KKy0gcmVnOgkJCUNvbnRhaW5zIGEgbWF0Y2hpbmcgcmVnaXN0ZXIgc3BlY2lmaWVyIGZvciBlYWNoIGVudHJ5CisJCQlpbiByZWctbmFtZXMuCistIGludGVycnVwdC1wYXJlbnQJU2hvdWxkIGJlIGEgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyCistIGludGVycnVwdHM6CQlTaG91bGQgY29udGFpbiBpbnRlcnJ1cHQgc3BlY2lmaWVycyBmb3IgbXB1IGludGVycnVwdHMKKwkJCTAgYW5kIDEgKGluIHRoaXMgb3JkZXIpLgorLSB0aSxzc2ktY2F3YWtlLWdwaW86CURlZmluZXMgd2hpY2ggR1BJTyBwaW4gaXMgdXNlZCB0byBzaWduaWZ5IENBV0FLRQorCQkJZXZlbnRzIGZvciB0aGUgcG9ydC4gVGhpcyBpcyBhbiBvcHRpb25hbCBib2FyZC1zcGVjaWZpYworCQkJcHJvcGVydHkuIElmIGl0J3MgbWlzc2luZyB0aGUgcG9ydCB3aWxsIG5vdCBiZQorCQkJZW5hYmxlZC4KKworRXhhbXBsZSBmb3IgTm9raWEgTjkwMDoKKworc3NpLWNvbnRyb2xsZXJANDgwNTgwMDAgeworCWNvbXBhdGlibGUgPSAidGksb21hcDMtc3NpIjsKKworCS8qIG5lZWRlZCB1bnRpbCBod21vZCBpcyB1cGRhdGVkIHRvIHVzZSB0aGUgY29tcGF0aWJsZSBzdHJpbmcgKi8KKwl0aSxod21vZHMgPSAic3NpIjsKKworCXJlZyA9IDwweDQ4MDU4MDAwIDB4MTAwMD4sCisJICAgICAgPDB4NDgwNTkwMDAgMHgxMDAwPjsKKwlyZWctbmFtZXMgPSAic3lzIiwKKwkJICAgICJnZGQiOworCisJaW50ZXJydXB0cyA9IDw1NT47CisJaW50ZXJydXB0LW5hbWVzID0gImdkZF9tcHUiOworCisJY2xvY2tzID0gPCZzc2lfc3NyX2Zjaz4sCisJCSA8JnNzaV9zc3RfZmNrPiwKKwkJIDwmc3NpX2ljaz47CisJY2xvY2stbmFtZXMgPSAic3NpX3Nzcl9mY2siLAorCQkgICAgICAic3NpX3NzdF9mY2siLAorCQkgICAgICAic3NpX2ljayI7CisKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwxPjsKKwlyYW5nZXM7CisKKwlzc2ktcG9ydEA0ODA1YTAwMCB7CisJCWNvbXBhdGlibGUgPSAidGksb21hcDMtc3NpLXBvcnQiOworCisJCXJlZyA9IDwweDQ4MDVhMDAwIDB4ODAwPiwKKwkJICAgICAgPDB4NDgwNWE4MDAgMHg4MDA+OworCQlyZWctbmFtZXMgPSAidHgiLAorCQkJICAgICJyeCI7CisKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmaW50Yz47CisJCWludGVycnVwdHMgPSA8Njc+LAorCQkJICAgICA8Njg+OworCisJCXRpLHNzaS1jYXdha2UtZ3BpbyA9IDwmZ3BpbzUgMjMgR1BJT19BQ1RJVkVfSElHSD47IC8qIDE1MSAqLworCX0KKworCXNzaS1wb3J0QDQ4MDVhMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSxvbWFwMy1zc2ktcG9ydCI7CisKKwkJcmVnID0gPDB4NDgwNWIwMDAgMHg4MDA+LAorCQkgICAgICA8MHg0ODA1YjgwMCAweDgwMD47CisJCXJlZy1uYW1lcyA9ICJ0eCIsCisJCQkgICAgInJ4IjsKKworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpbnRjPjsKKwkJaW50ZXJydXB0cyA9IDw2OT4sCisJCQkgICAgIDw3MD47CisKKwkJc3RhdHVzID0gImRpc2FibGVkIjsgLyogc2Vjb25kIHBvcnQgaXMgbm90IHVzZWQgb24gTjkwMCAqLworCX0KK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od2xvY2svaHdsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od2xvY2svaHdsb2NrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODVkMWY1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bG9jay9od2xvY2sudHh0CkBAIC0wLDAgKzEsNTkgQEAKK0dlbmVyaWMgaHdsb2NrIGJpbmRpbmdzCis9PT09PT09PT09PT09PT09PT09PT09PQorCitHZW5lcmljIGJpbmRpbmdzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgdGhlIGh3bG9jayBwbGF0Zm9ybSBzcGVjaWZpYyBkcml2ZXIKK2ltcGxlbWVudGF0aW9ucy4KKworUGxlYXNlIGFsc28gbG9vayB0aHJvdWdoIHRoZSBpbmRpdmlkdWFsIHBsYXRmb3JtIHNwZWNpZmljIGh3bG9jayBiaW5kaW5nCitkb2N1bWVudGF0aW9ucyBmb3IgaWRlbnRpZnlpbmcgYW55IGFkZGl0aW9uYWwgcHJvcGVydGllcyBzcGVjaWZpYyB0byB0aGF0CitwbGF0Zm9ybS4KKworaHdsb2NrIHByb3ZpZGVyczoKKz09PT09PT09PT09PT09PT09CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistICNod2xvY2stY2VsbHM6ICAgICAgICBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8gcmVwcmVzZW50IGEKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljIGxvY2suCisKK2h3bG9jayB1c2VyczoKKz09PT09PT09PT09PT0KKworQ29uc3VtZXJzIHRoYXQgcmVxdWlyZSBzcGVjaWZpYyBod2xvY2socykgc2hvdWxkIHNwZWNpZnkgdGhlbSB1c2luZyB0aGUKK3Byb3BlcnR5ICJod2xvY2tzIiwgYW5kIGFuIG9wdGlvbmFsICJod2xvY2stbmFtZXMiIHByb3BlcnR5LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBod2xvY2tzOiAgICAgICAgICAgICAgTGlzdCBvZiBwaGFuZGxlIHRvIGEgaHdsb2NrIHByb3ZpZGVyIG5vZGUgYW5kIGFuCisgICAgICAgICAgICAgICAgICAgICAgICBhc3NvY2lhdGVkIGh3bG9jayBhcmdzIHNwZWNpZmllciBhcyBpbmRpY2F0ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICNod2xvY2stY2VsbHMuIFRoZSBsaXN0IGNhbiBoYXZlIGp1c3QgYSBzaW5nbGUgaHdsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICBvciBtdWx0aXBsZSBod2xvY2tzLCB3aXRoIGVhY2ggaHdsb2NrIHJlcHJlc2VudGVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICBhIHBoYW5kbGUgYW5kIGEgY29ycmVzcG9uZGluZyBhcmdzIHNwZWNpZmllci4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gaHdsb2NrLW5hbWVzOiAgICAgICAgIExpc3Qgb2YgaHdsb2NrIG5hbWUgc3RyaW5ncyBkZWZpbmVkIGluIHRoZSBzYW1lIG9yZGVyCisgICAgICAgICAgICAgICAgICAgICAgICBhcyB0aGUgaHdsb2Nrcywgd2l0aCBvbmUgbmFtZSBwZXIgaHdsb2NrLiBDb25zdW1lcnMgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICB1c2UgdGhlIGh3bG9jay1uYW1lcyB0byBtYXRjaCBhbmQgZ2V0IGEgc3BlY2lmaWMgaHdsb2NrLgorCisKKzEuIEV4YW1wbGUgb2YgYSBub2RlIHVzaW5nIGEgc2luZ2xlIHNwZWNpZmljIGh3bG9jazoKKworVGhlIGZvbGxvd2luZyBleGFtcGxlIGhhcyBhIG5vZGUgcmVxdWVzdGluZyBhIGh3bG9jayBpbiB0aGUgYmFuayBkZWZpbmVkIGJ5Cit0aGUgbm9kZSBod2xvY2sxLiBod2xvY2sxIGlzIGEgaHdsb2NrIHByb3ZpZGVyIHdpdGggYW4gYXJndW1lbnQgc3BlY2lmaWVyCitvZiBsZW5ndGggMS4KKworCW5vZGUgeworCQkuLi4KKwkJaHdsb2NrcyA9IDwmaHdsb2NrMSAyPjsKKwkJLi4uCisJfTsKKworMi4gRXhhbXBsZSBvZiBhIG5vZGUgdXNpbmcgbXVsdGlwbGUgc3BlY2lmaWMgaHdsb2NrczoKKworVGhlIGZvbGxvd2luZyBleGFtcGxlIGhhcyBhIG5vZGUgcmVxdWVzdGluZyB0d28gaHdsb2NrcywgYSBod2xvY2sgd2l0aGluCit0aGUgaHdsb2NrIGRldmljZSBub2RlICdod2xvY2sxJyB3aXRoICNod2xvY2stY2VsbHMgdmFsdWUgb2YgMSwgYW5kIGFub3RoZXIKK2h3bG9jayB3aXRoaW4gdGhlIGh3bG9jayBkZXZpY2Ugbm9kZSAnaHdsb2NrMicgd2l0aCAjaHdsb2NrLWNlbGxzIHZhbHVlIG9mIDIuCisKKwlub2RlIHsKKwkJLi4uCisJCWh3bG9ja3MgPSA8Jmh3bG9jazEgMj4sIDwmaHdsb2NrMiAwIDM+OworCQkuLi4KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bG9jay9vbWFwLWh3c3BpbmxvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bG9jay9vbWFwLWh3c3BpbmxvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjOTgwNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaHdsb2NrL29tYXAtaHdzcGlubG9jay50eHQKQEAgLTAsMCArMSwyNiBAQAorT01BUDQrIEh3U3BpbmxvY2sgRHJpdmVyCis9PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZToJCVNob3VsZCBiZSAidGksb21hcDQtaHdzcGlubG9jayIgZm9yCisJCQkgICAgT01BUDQ0eHgsIE9NQVA1NHh4LCBBTTMzeHgsIEFNNDN4eCwgRFJBN3h4IFNvQ3MKKy0gcmVnOgkJCUNvbnRhaW5zIHRoZSBod3NwaW5sb2NrIG1vZHVsZSByZWdpc3RlciBhZGRyZXNzIHNwYWNlCisJCQkoYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGgpCistIHRpLGh3bW9kczoJCU5hbWUgb2YgdGhlIGh3bW9kIGFzc29jaWF0ZWQgd2l0aCB0aGUgaHdzcGlubG9jayBkZXZpY2UKKy0gI2h3bG9jay1jZWxsczoJU2hvdWxkIGJlIDEuIFRoZSBPTUFQIGh3c3BpbmxvY2sgdXNlcnMgd2lsbCB1c2UgYQorCQkJMC1pbmRleGVkIHJlbGF0aXZlIGh3bG9jayBudW1iZXIgYXMgdGhlIGFyZ3VtZW50CisJCQlzcGVjaWZpZXIgdmFsdWUgZm9yIHJlcXVlc3RpbmcgYSBzcGVjaWZpYyBod3NwaW5sb2NrCisJCQl3aXRoaW4gYSBod3NwaW5sb2NrIGJhbmsuCisKK1BsZWFzZSBsb29rIGF0IHRoZSBnZW5lcmljIGh3bG9jayBiaW5kaW5nIGZvciB1c2FnZSBpbmZvcm1hdGlvbiBmb3IgY29uc3VtZXJzLAorIkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od2xvY2svaHdsb2NrLnR4dCIKKworRXhhbXBsZToKKworLyogT01BUDQgKi8KK2h3c3BpbmxvY2s6IHNwaW5sb2NrQDRhMGY2MDAwIHsKKwljb21wYXRpYmxlID0gInRpLG9tYXA0LWh3c3BpbmxvY2siOworCXJlZyA9IDwweDRhMGY2MDAwIDB4MTAwMD47CisJdGksaHdtb2RzID0gInNwaW5sb2NrIjsKKwkjaHdsb2NrLWNlbGxzID0gPDE+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od2xvY2svcWNvbS1od3NwaW5sb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od2xvY2svcWNvbS1od3NwaW5sb2NrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTYzZjUyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bG9jay9xY29tLWh3c3BpbmxvY2sudHh0CkBAIC0wLDAgKzEsMzkgQEAKK1F1YWxjb21tIEhhcmR3YXJlIE11dGV4IEJsb2NrOgorCitUaGUgaGFyZHdhcmUgYmxvY2sgcHJvdmlkZXMgbXV0ZXhlcyB1dGlsaXplZCBiZXR3ZWVuIGRpZmZlcmVudCBwcm9jZXNzb3JzIG9uCit0aGUgU29DIGFzIHBhcnQgb2YgdGhlIGNvbW11bmljYXRpb24gcHJvdG9jb2wgdXNlZCBieSB0aGVzZSBwcm9jZXNzb3JzLgorCistIGNvbXBhdGlibGU6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHN0cmluZz4KKwlEZWZpbml0aW9uOiBtdXN0IGJlIG9uZSBvZjoKKwkJICAgICJxY29tLHNmcGItbXV0ZXgiLAorCQkgICAgInFjb20sdGNzci1tdXRleCIKKworLSBzeXNjb246CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOiBvbmUgY2VsbCBjb250YWluaW5nOgorCQkgICAgc3lzY29uIHBoYW5kbGUKKwkJICAgIG9mZnNldCBvZiB0aGUgaHdtdXRleCBibG9jayB3aXRoaW4gdGhlIHN5c2NvbgorCQkgICAgc3RyaWRlIG9mIHRoZSBod211dGV4IHJlZ2lzdGVycworCistICNod2xvY2stY2VsbHM6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHUzMj4KKwlEZWZpbml0aW9uOiBtdXN0IGJlIDEsIHRoZSBzcGVjaWZpZWQgY2VsbCByZXByZXNlbnQgdGhlIGxvY2sgaWQKKwkJICAgIChod2xvY2sgc3RhbmRhcmQgcHJvcGVydHksIHNlZSBod2xvY2sudHh0KQorCitFeGFtcGxlOgorCisJdGNzcl9tdXRleF9ibG9jazogc3lzY29uQGZkNDg0MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzeXNjb24iOworCQlyZWcgPSA8MHhmZDQ4NDAwMCAweDIwMDA+OworCX07CisKKwlod2xvY2tAZmQ0ODQwMDAgeworCQljb21wYXRpYmxlID0gInFjb20sdGNzci1tdXRleCI7CisJCXN5c2NvbiA9IDwmdGNzcl9tdXRleF9ibG9jayAwIDB4ODA+OworCisJCSNod2xvY2stY2VsbHMgPSA8MT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od2xvY2svc2lyZixod3NwaW5sb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od2xvY2svc2lyZixod3NwaW5sb2NrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmIxMjQwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bG9jay9zaXJmLGh3c3BpbmxvY2sudHh0CkBAIC0wLDAgKzEsMjggQEAKK1NJUkYgSGFyZHdhcmUgc3BpbmxvY2sgZGV2aWNlIEJpbmRpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgOgorLSBjb21wYXRpYmxlIDogc2hhbGwgY29udGFpbiBvbmx5IG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCSJzaXJmLGh3c3BpbmxvY2siCisKKy0gcmVnIDogdGhlIHJlZ2lzdGVyIGFkZHJlc3Mgb2YgaHdzcGlubG9jaworCistICNod2xvY2stY2VsbHMgOiBod2xvY2sgdXNlcnMgb25seSB1c2UgdGhlIGh3bG9jayBpZCB0byByZXByZXNlbnQgYSBzcGVjaWZpYworCWh3bG9jaywgc28gdGhlIG51bWJlciBvZiBjZWxscyBzaG91bGQgYmUgPDE+IGhlcmUuCisKK1BsZWFzZSBsb29rIGF0IHRoZSBnZW5lcmljIGh3bG9jayBiaW5kaW5nIGZvciB1c2FnZSBpbmZvcm1hdGlvbiBmb3IgY29uc3VtZXJzLAorIkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od2xvY2svaHdsb2NrLnR4dCIKKworRXhhbXBsZSBvZiBod2xvY2sgcHJvdmlkZXI6CisJaHdsb2NrIHsKKwkJY29tcGF0aWJsZSA9ICJzaXJmLGh3c3BpbmxvY2siOworCQlyZWcgPSA8MHgxMzI0MDAwMCAweDAwMDEwMDAwPjsKKwkJI2h3bG9jay1jZWxscyA9IDwxPjsKKwl9OworCitFeGFtcGxlIG9mIGh3bG9jayB1c2VyczoKKwlub2RlIHsKKwkJLi4uCisJCWh3bG9ja3MgPSA8Jmh3bG9jayAyPjsKKwkJLi4uCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od21vbi9hZHMxMDE1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od21vbi9hZHMxMDE1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MThhNTA3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL2FkczEwMTUudHh0CkBAIC0wLDAgKzEsNzMgQEAKK0FEUzEwMTUgKEkyQykKKworVGhpcyBkZXZpY2UgaXMgYSAxMi1iaXQgQS1EIGNvbnZlcnRlciB3aXRoIDQgaW5wdXRzLgorCitUaGUgaW5wdXRzIGNhbiBiZSB1c2VkIHNpbmdsZSBlbmRlZCBvciBpbiBjZXJ0YWluIGRpZmZlcmVudGlhbCBjb21iaW5hdGlvbnMuCisKK0ZvciBjb25maWd1cmF0aW9uIGFsbCBwb3NzaWJsZSBjb21iaW5hdGlvbnMgYXJlIG1hcHBlZCB0byA4IGNoYW5uZWxzOgorICAwOiBWb2x0YWdlIG92ZXIgQUlOMCBhbmQgQUlOMS4KKyAgMTogVm9sdGFnZSBvdmVyIEFJTjAgYW5kIEFJTjMuCisgIDI6IFZvbHRhZ2Ugb3ZlciBBSU4xIGFuZCBBSU4zLgorICAzOiBWb2x0YWdlIG92ZXIgQUlOMiBhbmQgQUlOMy4KKyAgNDogVm9sdGFnZSBvdmVyIEFJTjAgYW5kIEdORC4KKyAgNTogVm9sdGFnZSBvdmVyIEFJTjEgYW5kIEdORC4KKyAgNjogVm9sdGFnZSBvdmVyIEFJTjIgYW5kIEdORC4KKyAgNzogVm9sdGFnZSBvdmVyIEFJTjMgYW5kIEdORC4KKworRWFjaCBjaGFubmVsIGNhbiBiZSBjb25maWd1cmVkIGluZGl2aWR1YWxseToKKyAtIHBnYSBpcyB0aGUgcHJvZ3JhbW1hYmxlIGdhaW4gYW1wbGlmaWVyICh2YWx1ZXMgYXJlIGZ1bGwgc2NhbGUpCisgICAgMDogKy8tIDYuMTQ0IFYKKyAgICAxOiArLy0gNC4wOTYgVgorICAgIDI6ICsvLSAyLjA0OCBWIChkZWZhdWx0KQorICAgIDM6ICsvLSAxLjAyNCBWCisgICAgNDogKy8tIDAuNTEyIFYKKyAgICA1OiArLy0gMC4yNTYgVgorIC0gZGF0YV9yYXRlIGluIHNhbXBsZXMgcGVyIHNlY29uZAorICAgIDA6IDEyOAorICAgIDE6IDI1MAorICAgIDI6IDQ5MAorICAgIDM6IDkyMAorICAgIDQ6IDE2MDAgKGRlZmF1bHQpCisgICAgNTogMjQwMAorICAgIDY6IDMzMDAKKworMSkgVGhlIC9hZHMxMDE1IG5vZGUKKworICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgICAtIGNvbXBhdGlibGUgOiBtdXN0IGJlICJ0aSxhZHMxMDE1IgorICAgLSByZWcgOiBJMkMgYnVzIGFkZHJlc3Mgb2YgdGhlIGRldmljZQorICAgLSAjYWRkcmVzcy1jZWxscyA6IG11c3QgYmUgPDE+CisgICAtICNzaXplLWNlbGxzIDogbXVzdCBiZSA8MD4KKworICBUaGUgbm9kZSBjb250YWlucyBjaGlsZCBub2RlcyBmb3IgZWFjaCBjaGFubmVsIHRoYXQgdGhlIHBsYXRmb3JtIHVzZXMuCisKKyAgRXhhbXBsZSBBRFMxMDE1IG5vZGU6CisKKyAgICBhZHMxMDE1QDQ5IHsKKwkgICAgY29tcGF0aWJsZSA9ICJ0aSxhZHMxMDE1IjsKKwkgICAgcmVnID0gPDB4NDk+OworCSAgICAjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkgICAgI3NpemUtY2VsbHMgPSA8MD47CisKKwkgICAgWyBjaGlsZCBub2RlIGRlZmluaXRpb25zLi4uIF0KKyAgICB9CisKKzIpIGNoYW5uZWwgbm9kZXMKKworICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgICAtIHJlZyA6IHRoZSBjaGFubmVsIG51bWJlcgorCisgIE9wdGlvbmFsIHByb3BlcnRpZXM6CisKKyAgIC0gdGksZ2FpbiA6IHRoZSBwcm9ncmFtbWFibGUgZ2FpbiBhbXBsaWZpZXIgc2V0dGluZworICAgLSB0aSxkYXRhcmF0ZSA6IHRoZSBjb252ZXJ0ZXIgZGF0YSByYXRlCisKKyAgRXhhbXBsZSBBRFMxMDE1IGNoYW5uZWwgbm9kZToKKworICAgIGNoYW5uZWxANCB7CisJICAgIHJlZyA9IDw0PjsKKwkgICAgdGksZ2FpbiA9IDwzPjsKKwkgICAgdGksZGF0YXJhdGUgPSA8NT47CisgICAgfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od21vbi9nNzYyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od21vbi9nNzYyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWNjNmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL2c3NjIudHh0CkBAIC0wLDAgKzEsNDcgQEAKK0dNVCBHNzYyL0c3NjMgUFdNIEZhbiBjb250cm9sbGVyCisKK1JlcXVpcmVkIG5vZGUgcHJvcGVydGllczoKKworIC0gImNvbXBhdGlibGUiOiBtdXN0IGJlIGVpdGhlciAiZ210LGc3NjIiIG9yICJnbXQsZzc2MyIKKyAtICJyZWciOiBJMkMgYnVzIGFkZHJlc3Mgb2YgdGhlIGRldmljZQorIC0gImNsb2NrcyI6IGEgZml4ZWQgY2xvY2sgcHJvdmlkaW5nIGlucHV0IGNsb2NrIGZyZXF1ZW5jeQorCSAgICAgb24gQ0xLIHBpbiBvZiB0aGUgY2hpcC4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworIC0gImZhbl9zdGFydHYiOiBmYW4gc3RhcnR1cCB2b2x0YWdlLiBBY2NlcHRlZCB2YWx1ZXMgYXJlIDAsIDEsIDIgYW5kIDMuCisJICAgICAgIFRoZSBoaWdoZXIgdGhlIG1vcmUuCisKKyAtICJwd21fcG9sYXJpdHkiOiBwd20gcG9sYXJpdHkuIEFjY2VwdGVkIHZhbHVlcyBhcmUgMCAocG9zaXRpdmUgZHV0eSkKKwkgICAgICAgYW5kIDEgKG5lZ2F0aXZlIGR1dHkpLgorCisgLSAiZmFuX2dlYXJfbW9kZSI6IGZhbiBnZWFyIG1vZGUuIFN1cHBvcnRlZCB2YWx1ZXMgYXJlIDAsIDEgYW5kIDIuCisKK0lmIGFuIG9wdGlvbmFsIHByb3BlcnR5IGlzIG5vdCBzZXQgaW4gLmR0cyBmaWxlLCB0aGVuIGN1cnJlbnQgdmFsdWUgaXMga2VwdAordW5tb2RpZmllZCAoZS5nLiB1LWJvb3QgaW5zdGFsbGVkIHZhbHVlKS4KKworQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBvcGVyYXRpb25hbCBwYXJhbWV0ZXJzIGZvciB0aGUgZGV2aWNlIGlzIGF2YWlsYWJsZQoraW4gRG9jdW1lbnRhdGlvbi9od21vbi9nNzYyLiBBIGRldGFpbGVkIGRhdGFzaGVldCBmb3IgdGhlIGRldmljZSBpcyBhdmFpbGFibGUKK2F0IGh0dHA6Ly9uYXRpc2JhZC5vcmcvTkFTL3JlZnMvR01UX0VEUy03NjJfNzYzLTA4MDcxMC0wLjIucGRmLgorCitFeGFtcGxlIGc3NjIgbm9kZToKKworICAgY2xvY2tzIHsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKworCWc3NjJfY2xrOiBmaXhlZGNsayB7CisJCSBjb21wYXRpYmxlID0gImZpeGVkLWNsb2NrIjsKKwkJICNjbG9jay1jZWxscyA9IDwwPjsKKwkJIGNsb2NrLWZyZXF1ZW5jeSA9IDw4MTkyPjsKKwl9CisgICB9CisKKyAgIGc3NjI6IGc3NjJAM2UgeworCWNvbXBhdGlibGUgPSAiZ210LGc3NjIiOworCXJlZyA9IDwweDNlPjsKKwljbG9ja3MgPSA8Jmc3NjJfY2xrPgorCWZhbl9nZWFyX21vZGUgPSA8MD47IC8qIGNoaXAgZGVmYXVsdCAqLworCWZhbl9zdGFydHYgPSA8MT47ICAgIC8qIGNoaXAgZGVmYXVsdCAqLworCXB3bV9wb2xhcml0eSA9IDwwPjsgIC8qIGNoaXAgZGVmYXVsdCAqLworICAgfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od21vbi9pYm1wb3dlcm52LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od21vbi9pYm1wb3dlcm52LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTMyNDJiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL2libXBvd2VybnYudHh0CkBAIC0wLDAgKzEsMjMgQEAKK0lCTSBQT1dFUk5WIHBsYXRmb3JtIHNlbnNvcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgbm9kZSBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBtdXN0IGJlIG9uZSBvZgorCQkiaWJtLG9wYWwtc2Vuc29yLWNvb2xpbmctZmFuIgorCQkiaWJtLG9wYWwtc2Vuc29yLWFtYi10ZW1wIgorCQkiaWJtLG9wYWwtc2Vuc29yLXBvd2VyLXN1cHBseSIKKwkJImlibSxvcGFsLXNlbnNvci1wb3dlciIKKy0gc2Vuc29yLWlkOiBhbiBvcGFxdWUgaWQgcHJvdmlkZWQgYnkgdGhlIGZpcm13YXJlIHRvIHRoZSBrZXJuZWwsIGlkZW50aWZpZXMgYQorCSAgICAgZ2l2ZW4gc2Vuc29yIGFuZCBpdHMgYXR0cmlidXRlIGRhdGEKKworRXhhbXBsZSBzZW5zb3JzIG5vZGU6CisKK2Nvb2xpbmctZmFuIzgtZGF0YSB7CisJc2Vuc29yLWlkID0gPDB4NzA1MjEwNz47CisJY29tcGF0aWJsZSA9ICJpYm0sb3BhbC1zZW5zb3ItY29vbGluZy1mYW4iOworfTsKKworYW1iLXRlbXAjMS10aHJzIHsKKwlzZW5zb3ItaWQgPSA8MHg1MDk2MDAwPjsKKwljb21wYXRpYmxlID0gImlibSxvcGFsLXNlbnNvci1hbWItdGVtcCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL2luYTJ4eC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaHdtb24vaW5hMnh4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmNkNWU4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL2luYTJ4eC50eHQKQEAgLTAsMCArMSwyMyBAQAoraW5hMnh4IHByb3BlcnRpZXMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogTXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKwktICJ0aSxpbmEyMDkiIGZvciBpbmEyMDkKKwktICJ0aSxpbmEyMTkiIGZvciBpbmEyMTkKKwktICJ0aSxpbmEyMjAiIGZvciBpbmEyMjAKKwktICJ0aSxpbmEyMjYiIGZvciBpbmEyMjYKKwktICJ0aSxpbmEyMzAiIGZvciBpbmEyMzAKKy0gcmVnOiBJMkMgYWRkcmVzcworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIHNodW50LXJlc2lzdG9yCisJU2h1bnQgcmVzaXN0b3IgdmFsdWUgaW4gbWljcm8tT2htCisKK0V4YW1wbGU6CisKK2luYTIyMEA0NCB7CisJY29tcGF0aWJsZSA9ICJ0aSxpbmEyMjAiOworCXJlZyA9IDwweDQ0PjsKKwlzaHVudC1yZXNpc3RvciA9IDwxMDAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaHdtb24vbG03MC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaHdtb24vbG03MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdmZDkyMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od21vbi9sbTcwLnR4dApAQCAtMCwwICsxLDIxIEBACisqIExNNzAvVE1QMTIxL0xNNzEvTE03NCB0aGVybW9tZXRlci4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogb25lIG9mCisJCSJ0aSxsbTcwIgorCQkidGksdG1wMTIxIgorCQkidGksbG03MSIKKwkJInRpLGxtNzQiCisKK1NlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1idXMudHh0IGZvciBtb3JlIHJlcXVpcmVkIGFuZAorb3B0aW9uYWwgcHJvcGVydGllcy4KKworRXhhbXBsZToKKworc3BpX21hc3RlciB7CisJdGVtcGVyYXR1cmUtc2Vuc29yQDAgeworCQljb21wYXRpYmxlID0gInRpLGxtNzAiOworCQlyZWcgPSA8MD47CisJCXNwaS1tYXgtZnJlcXVlbmN5ID0gPDEwMDAwMDA+OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL2xtOTAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL2xtOTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NjMyNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaHdtb24vbG05MC50eHQKQEAgLTAsMCArMSw0NCBAQAorKiBMTTkwIHNlcmllcyB0aGVybW9tZXRlci4KKworUmVxdWlyZWQgbm9kZSBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBtYW51ZmFjdHVyZXIgYW5kIGNoaXAgbmFtZSwgb25lIG9mCisJCSJhZGksYWRtMTAzMiIKKwkJImFkaSxhZHQ3NDYxIgorCQkiYWRpLGFkdDc0NjFhIgorCQkiZ210LGc3ODEiCisJCSJuYXRpb25hbCxsbTkwIgorCQkibmF0aW9uYWwsbG04NiIKKwkJIm5hdGlvbmFsLGxtODkiCisJCSJuYXRpb25hbCxsbTk5IgorCQkiZGFsbGFzLG1heDY2NDYiCisJCSJkYWxsYXMsbWF4NjY0NyIKKwkJImRhbGxhcyxtYXg2NjQ5IgorCQkiZGFsbGFzLG1heDY2NTciCisJCSJkYWxsYXMsbWF4NjY1OCIKKwkJImRhbGxhcyxtYXg2NjU5IgorCQkiZGFsbGFzLG1heDY2ODAiCisJCSJkYWxsYXMsbWF4NjY4MSIKKwkJImRhbGxhcyxtYXg2Njk1IgorCQkiZGFsbGFzLG1heDY2OTYiCisJCSJvbm5uLG5jdDEwMDgiCisJCSJ3aW5ib25kLHc4M2w3NzEiCisJCSJueHAsc2E1NjAwNCIKKworLSByZWc6IEkyQyBidXMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlCisKKy0gdmNjLXN1cHBseTogdmNjIHJlZ3VsYXRvciBmb3IgdGhlIHN1cHBseSB2b2x0YWdlLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBpbnRlcnJ1cHRzOiBDb250YWlucyBhIHNpbmdsZSBpbnRlcnJ1cHQgc3BlY2lmaWVyIHdoaWNoIGRlc2NyaWJlcyB0aGUKKyAgICAgICAgICAgICAgTE05MCAiLUFMRVJUIiBwaW4gb3V0cHV0LgorICAgICAgICAgICAgICBTZWUgaW50ZXJydXB0LWNvbnRyb2xsZXIvaW50ZXJydXB0cy50eHQgZm9yIHRoZSBmb3JtYXQuCisKK0V4YW1wbGUgTE05MCBub2RlOgorCit0ZW1wLXNlbnNvciB7CisJY29tcGF0aWJsZSA9ICJvbm5uLG5jdDEwMDgiOworCXJlZyA9IDwweDRjPjsKKwl2Y2Mtc3VwcGx5ID0gPCZwYWxtYXNfbGRvNl9yZWc+OworCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8+OworCWludGVycnVwdHMgPSA8VEVHUkFfR1BJTyhPLCA0KSBJUlFfVFlQRV9MRVZFTF9MT1c+OworfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL2x0YzI5NzgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL2x0YzI5NzgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3YWZiZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaHdtb24vbHRjMjk3OC50eHQKQEAgLTAsMCArMSw0NSBAQAorbHRjMjk3OAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgY29udGFpbiBvbmUgb2Y6CisgICogImxsdGMsbHRjMjk3NCIKKyAgKiAibGx0YyxsdGMyOTc1IgorICAqICJsbHRjLGx0YzI5NzciCisgICogImxsdGMsbHRjMjk3OCIKKyAgKiAibGx0YyxsdGMyOTgwIgorICAqICJsbHRjLGx0YzM4ODAiCisgICogImxsdGMsbHRjMzg4MiIKKyAgKiAibGx0YyxsdGMzODgzIgorICAqICJsbHRjLGx0YzM4ODYiCisgICogImxsdGMsbHRjMzg4NyIKKyAgKiAibGx0YyxsdG0yOTg3IgorICAqICJsbHRjLGx0bTQ2NzYiCistIHJlZzogSTJDIHNsYXZlIGFkZHJlc3MKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gcmVndWxhdG9yczogQSBub2RlIHRoYXQgaG91c2VzIGEgc3ViLW5vZGUgZm9yIGVhY2ggcmVndWxhdG9yIGNvbnRyb2xsZWQgYnkKKyAgdGhlIGRldmljZS4gRWFjaCBzdWItbm9kZSBpcyBpZGVudGlmaWVkIHVzaW5nIHRoZSBub2RlJ3MgbmFtZSwgd2l0aCB2YWxpZAorICB2YWx1ZXMgbGlzdGVkIGJlbG93LiBUaGUgY29udGVudCBvZiBlYWNoIHN1Yi1ub2RlIGlzIGRlZmluZWQgYnkgdGhlCisgIHN0YW5kYXJkIGJpbmRpbmcgZm9yIHJlZ3VsYXRvcnM7IHNlZSByZWd1bGF0b3IudHh0LgorCitWYWxpZCBuYW1lcyBvZiByZWd1bGF0b3JzIGRlcGVuZCBvbiBudW1iZXIgb2Ygc3VwcGxpZXMgc3VwcG9ydGVkIHBlciBkZXZpY2U6CisgICogbHRjMjk3NCwgbHRjMjk3NSA6IHZvdXQwIC0gdm91dDMKKyAgKiBsdGMyOTc3LCBsdGMyOTgwLCBsdG0yOTg3IDogdm91dDAgLSB2b3V0NworICAqIGx0YzI5NzggOiB2b3V0MCAtIHZvdXQ3CisgICogbHRjMzg4MCwgbHRjMzg4MiwgbHRjMzg4NiA6IHZvdXQwIC0gdm91dDEKKyAgKiBsdGMzODgzIDogdm91dDAKKyAgKiBsdG00Njc2IDogdm91dDAgLSB2b3V0MQorCitFeGFtcGxlOgorbHRjMjk3OEA1ZSB7CisJY29tcGF0aWJsZSA9ICJsbHRjLGx0YzI5NzgiOworCXJlZyA9IDwweDVlPjsKKwlyZWd1bGF0b3JzIHsKKwkJdm91dDAgeworCQkJcmVndWxhdG9yLW5hbWUgPSAiRlBHQS0yLjVWIjsKKwkJfTsKKwkJdm91dDIgeworCQkJcmVndWxhdG9yLW5hbWUgPSAiRlBHQS0xLjVWIjsKKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od21vbi9tYXg2Njk3LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od21vbi9tYXg2Njk3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Zjc5Mzk5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL21heDY2OTcudHh0CkBAIC0wLDAgKzEsNjQgQEAKK21heDY2OTcgcHJvcGVydGllcworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOgorCVNob3VsZCBiZSBvbmUgb2YKKwkJbWF4aW0sbWF4NjU4MQorCQltYXhpbSxtYXg2NjAyCisJCW1heGltLG1heDY2MjIKKwkJbWF4aW0sbWF4NjYzNgorCQltYXhpbSxtYXg2Njg5CisJCW1heGltLG1heDY2OTMKKwkJbWF4aW0sbWF4NjY5NAorCQltYXhpbSxtYXg2Njk3CisJCW1heGltLG1heDY2OTgKKwkJbWF4aW0sbWF4NjY5OQorLSByZWc6IEkyQyBhZGRyZXNzCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gc21idXMtdGltZW91dC1kaXNhYmxlCisJU2V0IHRvIGRpc2FibGUgU01CdXMgdGltZW91dC4gSWYgbm90IHNwZWNpZmllZCwgU01CdXMgdGltZW91dCB3aWxsIGJlCisJZW5hYmxlZC4KKy0gZXh0ZW5kZWQtcmFuZ2UtZW5hYmxlCisJT25seSB2YWxpZCBmb3IgTUFYNjU4MS4gU2V0IHRvIGVuYWJsZSBleHRlbmRlZCB0ZW1wZXJhdHVyZSByYW5nZS4KKwlFeHRlbmRlZCB0ZW1wZXJhdHVyZSB3aWxsIGJlIGRpc2FibGVkIGlmIG5vdCBzcGVjaWZpZWQuCistIGJldGEtY29tcGVuc2F0aW9uLWVuYWJsZQorCU9ubHkgdmFsaWQgZm9yIE1BWDY2OTMgYW5kIE1YNjY5NC4gU2V0IHRvIGVuYWJsZSBiZXRhIGNvbXBlbnNhdGlvbiBvbgorCXJlbW90ZSB0ZW1wZXJhdHVyZSBjaGFubmVsIDEuCisJQmV0YSBjb21wZW5zYXRpb24gd2lsbCBiZSBkaXNhYmxlZCBpZiBub3Qgc3BlY2lmaWVkLgorLSBhbGVydC1tYXNrCisJQWxlcnQgYml0IG1hc2suIEFsZXJ0IGRpc2FibGVkIGZvciBiaXRzIHNldC4KKwlTZWxlY3QgYml0IDAgZm9yIGxvY2FsIHRlbXBlcmF0dXJlLCBiaXQgMS4uNyBmb3IgcmVtb3RlIHRlbXBlcmF0dXJlcy4KKwlJZiBub3Qgc3BlY2lmaWVkLCBhbGVydCB3aWxsIGJlIGVuYWJsZWQgZm9yIGFsbCBjaGFubmVscy4KKy0gb3Zlci10ZW1wZXJhdHVyZS1tYXNrCisJT3Zlci10ZW1wZXJhdHVyZSBiaXQgbWFzay4gT3Zlci10ZW1wZXJhdHVyZSByZXBvcnRpbmcgZGlzYWJsZWQgZm9yCisJYml0cyBzZXQuCisJU2VsZWN0IGJpdCAwIGZvciBsb2NhbCB0ZW1wZXJhdHVyZSwgYml0IDEuLjcgZm9yIHJlbW90ZSB0ZW1wZXJhdHVyZXMuCisJSWYgbm90IHNwZWNpZmllZCwgb3Zlci10ZW1wZXJhdHVyZSByZXBvcnRpbmcgd2lsbCBiZSBlbmFibGVkIGZvciBhbGwKKwljaGFubmVscy4KKy0gcmVzaXN0YW5jZS1jYW5jZWxsYXRpb24KKwlCb29sZWFuIGZvciBhbGwgY2hpcHMgb3RoZXIgdGhhbiBNQVg2NTgxLiBTZXQgdG8gZW5hYmxlIHJlc2lzdGFuY2UKKwljYW5jZWxsYXRpb24gb24gcmVtb3RlIHRlbXBlcmF0dXJlIGNoYW5uZWwgMS4KKwlGb3IgTUFYNjU4MSwgcmVzaXN0YW5jZSBjYW5jZWxsYXRpb24gZW5hYmxlZCBmb3IgYWxsIGNoYW5uZWxzIGlmCisJc3BlY2lmaWVkIGFzIGJvb2xlYW4sIG90aGVyd2lzZSBhcyBwZXIgYml0IG1hc2sgc3BlY2lmaWVkLgorCU9ubHkgc3VwcG9ydGVkIGZvciByZW1vdGUgdGVtcGVyYXR1cmVzIChiaXQgMS4uNykuCisJSWYgbm90IHNwZWNpZmllZCwgcmVzaXN0YW5jZSBjYW5jZWxsYXRpb24gd2lsbCBiZSBkaXNhYmxlZCBmb3IgYWxsCisJY2hhbm5lbHMuCistIHRyYW5zaXN0b3ItaWRlYWxpdHkKKwlGb3IgTUFYNjU4MSBvbmx5LiBUd28gdmFsdWVzOyBmaXJzdCBpcyBiaXQgbWFzaywgc2Vjb25kIGlzIGlkZWFsaXR5CisJc2VsZWN0IHZhbHVlIGFzIHBlciBNQVg2NTgxIGRhdGEgc2hlZXQuIFNlbGVjdCBiaXQgMS4uNyBmb3IgcmVtb3RlCisJY2hhbm5lbHMuCisJVHJhbnNpc3RvciBpZGVhbGl0eSB3aWxsIGJlIGluaXRpYWxpemVkIHRvIGRlZmF1bHQgKDEuMDA4KSBpZiBub3QKKwlzcGVjaWZpZWQuCisKK0V4YW1wbGU6CisKK3RlbXAtc2Vuc29yQDFhIHsKKwljb21wYXRpYmxlID0gIm1heGltLG1heDY2OTciOworCXJlZyA9IDwweDFhPjsKKwlzbWJ1cy10aW1lb3V0LWRpc2FibGU7CisJcmVzaXN0YW5jZS1jYW5jZWxsYXRpb247CisJYWxlcnQtbWFzayA9IDwweDcyPjsKKwlvdmVyLXRlbXBlcmF0dXJlLW1hc2sgPSA8MHg3Zj47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL250Y190aGVybWlzdG9yLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od21vbi9udGNfdGhlcm1pc3Rvci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA0YTgwZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od21vbi9udGNfdGhlcm1pc3Rvci50eHQKQEAgLTAsMCArMSw0MiBAQAorTlRDIFRoZXJtaXN0b3IgaHdtb24gc2Vuc29ycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlcyBub2RlIHByb3BlcnRpZXM6CistICJjb21wYXRpYmxlIiB2YWx1ZSA6IG9uZSBvZgorCSJlcGNvcyxiNTczMzB2MjEwMyIKKwkibXVyYXRhLG5jcDE1d2I0NzMiCisJIm11cmF0YSxuY3AxOHdiNDczIgorCSJtdXJhdGEsbmNwMjF3YjQ3MyIKKwkibXVyYXRhLG5jcDAzd2I0NzMiCisJIm11cmF0YSxuY3AxNXdsMzMzIgorCSJtdXJhdGEsbmNwMDN3ZjEwNCIKKworLyogVXNhZ2Ugb2YgdmVuZG9yIG5hbWUgIm50YyIgaXMgZGVwcmVjYXRlZCAqLworPERFUFJFQ0FURUQ+CSJudGMsbmNwMTV3YjQ3MyIKKzxERVBSRUNBVEVEPgkibnRjLG5jcDE4d2I0NzMiCis8REVQUkVDQVRFRD4JIm50YyxuY3AyMXdiNDczIgorPERFUFJFQ0FURUQ+CSJudGMsbmNwMDN3YjQ3MyIKKzxERVBSRUNBVEVEPgkibnRjLG5jcDE1d2wzMzMiCisKKy0gInB1bGx1cC11diIJUHVsbCB1cCB2b2x0YWdlIGluIG1pY3JvIHZvbHRzCistICJwdWxsdXAtb2htIglQdWxsIHVwIHJlc2lzdG9yIHZhbHVlIGluIG9obXMKKy0gInB1bGxkb3duLW9obSIgUHVsbCBkb3duIHJlc2lzdG9yIHZhbHVlIGluIG9obXMKKy0gImNvbm5lY3RlZC1wb3NpdGl2ZSIgQWx3YXlzIE9OLCBJZiBub3Qgc3BlY2lmaWVkLgorCQlTdGF0dXMgY2hhbmdlIGlzIHBvc3NpYmxlLgorLSAiaW8tY2hhbm5lbHMiCUNoYW5uZWwgbm9kZSBvZiBBREMgdG8gYmUgdXNlZCBmb3IKKwkJY29udmVyc2lvbi4KKworT3B0aW9uYWwgbm9kZSBwcm9wZXJ0aWVzOgorLSAiI3RoZXJtYWwtc2Vuc29yLWNlbGxzIiBVc2VkIHRvIGV4cG9zZSBpdHNlbGYgdG8gdGhlcm1hbCBmdy4KKworUmVhZCBtb3JlIGFib3V0IGlpbyBiaW5kaW5ncyBhdAorCURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vaWlvLWJpbmRpbmdzLnR4dAorCitFeGFtcGxlOgorCW5jcDE1d2I0NzNAMCB7CisJCWNvbXBhdGlibGUgPSAibXVyYXRhLG5jcDE1d2I0NzMiOworCQlwdWxsdXAtdXYgPSA8MTgwMDAwMD47CisJCXB1bGx1cC1vaG0gPSA8NDcwMDA+OworCQlwdWxsZG93bi1vaG0gPSA8MD47CisJCWlvLWNoYW5uZWxzID0gPCZhZGMgMz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od21vbi9wd20tZmFuLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od21vbi9wd20tZmFuLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmQ1MzMyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL3B3bS1mYW4udHh0CkBAIC0wLDAgKzEsMzcgQEAKK0JpbmRpbmdzIGZvciBhIGZhbiBjb25uZWN0ZWQgdG8gdGhlIFBXTSBsaW5lcworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlCTogInB3bS1mYW4iCistIHB3bXMJCTogdGhlIFBXTSB0aGF0IGlzIHVzZWQgdG8gY29udHJvbCB0aGUgUFdNIGZhbgorLSBjb29saW5nLWxldmVscyAgICAgIDogUFdNIGR1dHkgY3ljbGUgdmFsdWVzIGluIGEgcmFuZ2UgZnJvbSAwIHRvIDI1NQorCQkJd2hpY2ggY29ycmVzcG9uZCB0byB0aGVybWFsIGNvb2xpbmcgc3RhdGVzCisKK0V4YW1wbGU6CisJZmFuMDogcHdtLWZhbiB7CisJCWNvbXBhdGlibGUgPSAicHdtLWZhbiI7CisJCWNvb2xpbmctbWluLXN0YXRlID0gPDA+OworCQljb29saW5nLW1heC1zdGF0ZSA9IDwzPjsKKwkJI2Nvb2xpbmctY2VsbHMgPSA8Mj47CisJCXB3bXMgPSA8JnB3bSAwIDEwMDAwIDA+OworCQljb29saW5nLWxldmVscyA9IDwwIDEwMiAxNzAgMjMwPjsKKwl9OworCisJdGhlcm1hbC16b25lcyB7CisJCWNwdV90aGVybWFsOiBjcHUtdGhlcm1hbCB7CisJCQkgICAgIHRoZXJtYWwtc2Vuc29ycyA9IDwmdG11IDA+OworCQkJICAgICBwb2xsaW5nLWRlbGF5LXBhc3NpdmUgPSA8MD47CisJCQkgICAgIHBvbGxpbmctZGVsYXkgPSA8MD47CisJCQkgICAgIHRyaXBzIHsKKwkJCQkJY3B1X2FsZXJ0MTogY3B1LWFsZXJ0MSB7CisJCQkJCQkgICAgdGVtcGVyYXR1cmUgPSA8MTAwMDAwPjsgLyogbWlsbGljZWxzaXVzICovCisJCQkJCQkgICAgaHlzdGVyZXNpcyA9IDwyMDAwPjsgLyogbWlsbGljZWxzaXVzICovCisJCQkJCQkgICAgdHlwZSA9ICJwYXNzaXZlIjsKKwkJCQkJfTsKKwkJCSAgICAgfTsKKwkJCSAgICAgY29vbGluZy1tYXBzIHsKKwkJCQkJbWFwMCB7CisJCQkJCQkgICAgdHJpcCA9IDwmY3B1X2FsZXJ0MT47CisJCQkJCQkgICAgY29vbGluZy1kZXZpY2UgPSA8JmZhbjAgMCAxPjsKKwkJCQkJfTsKKwkJCSAgICAgfTsKKwkJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od21vbi92ZXhwcmVzcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaHdtb24vdmV4cHJlc3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljMjdlZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaHdtb24vdmV4cHJlc3MudHh0CkBAIC0wLDAgKzEsMjMgQEAKK1ZlcnNhdGlsZSBFeHByZXNzIGh3bW9uIHNlbnNvcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZXMgbm9kZSBwcm9wZXJ0aWVzOgorLSAiY29tcGF0aWJsZSIgdmFsdWUgOiBvbmUgb2YKKwkiYXJtLHZleHByZXNzLXZvbHQiCisJImFybSx2ZXhwcmVzcy1hbXAiCisJImFybSx2ZXhwcmVzcy10ZW1wIgorCSJhcm0sdmV4cHJlc3MtcG93ZXIiCisJImFybSx2ZXhwcmVzcy1lbmVyZ3kiCistICJhcm0sdmV4cHJlc3Mtc3lzcmVnLGZ1bmMiIHdoZW4gY29udHJvbGxlZCB2aWEgdmV4cHJlc3Mtc3lzcmVnCisgIChzZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS92ZXhwcmVzcy1zeXNyZWcudHh0CisgIGZvciBtb3JlIGRldGFpbHMpCisKK09wdGlvbmFsIG5vZGUgcHJvcGVydGllczoKKy0gbGFiZWwgOiBzdHJpbmcgZGVzY3JpYmluZyB0aGUgbW9uaXRvcmVkIHZhbHVlCisKK0V4YW1wbGU6CisJZW5lcmd5QDAgeworCQljb21wYXRpYmxlID0gImFybSx2ZXhwcmVzcy1lbmVyZ3kiOworCQlhcm0sdmV4cHJlc3Mtc3lzcmVnLGZ1bmMgPSA8MTMgMD47CisJCWxhYmVsID0gIkExNSBKY29yZSI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvYnJjbSxiY20yODM1LWkyYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2JyY20sYmNtMjgzNS1pMmMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5ZGUzNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2JyY20sYmNtMjgzNS1pMmMudHh0CkBAIC0wLDAgKzEsMjAgQEAKK0Jyb2FkY29tIEJDTTI4MzUgSTJDIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAiYnJjbSxiY20yODM1LWkyYyIuCistIHJlZzogU2hvdWxkIGNvbnRhaW4gcmVnaXN0ZXIgbG9jYXRpb24gYW5kIGxlbmd0aC4KKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gaW50ZXJydXB0LgorLSBjbG9ja3MgOiBUaGUgY2xvY2sgZmVlZGluZyB0aGUgSTJDIGNvbnRyb2xsZXIuCisKK1JlY29tbWVuZGVkIHByb3BlcnRpZXM6CistIGNsb2NrLWZyZXF1ZW5jeSA6IGRlc2lyZWQgSTJDIGJ1cyBjbG9jayBmcmVxdWVuY3kgaW4gSHouCisKK0V4YW1wbGU6CisKK2kyY0AyMDIwNTAwMCB7CisJY29tcGF0aWJsZSA9ICJicmNtLGJjbTI4MzUtaTJjIjsKKwlyZWcgPSA8MHg3ZTIwNTAwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8MiAyMT47CisJY2xvY2tzID0gPCZjbGtfaTJjPjsKKwljbG9jay1mcmVxdWVuY3kgPSA8MTAwMDAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2JyY20saXByb2MtaTJjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvYnJjbSxpcHJvYy1pMmMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZjk4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2JyY20saXByb2MtaTJjLnR4dApAQCAtMCwwICsxLDM3IEBACitCcm9hZGNvbSBpUHJvYyBJMkMgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6CisgICAgTXVzdCBiZSAiYnJjbSxpcHJvYy1pMmMiCisKKy0gcmVnOgorICAgIERlZmluZSB0aGUgYmFzZSBhbmQgcmFuZ2Ugb2YgdGhlIEkvTyBhZGRyZXNzIHNwYWNlIHRoYXQgY29udGFpbiB0aGUgaVByb2MKKyAgICBJMkMgY29udHJvbGxlciByZWdpc3RlcnMKKworLSBpbnRlcnJ1cHRzOgorICAgIFNob3VsZCBjb250YWluIHRoZSBJMkMgaW50ZXJydXB0CisKKy0gY2xvY2stZnJlcXVlbmN5OgorICAgIFRoaXMgaXMgdGhlIEkyQyBidXMgY2xvY2suIE5lZWQgdG8gYmUgZWl0aGVyIDEwMDAwMCBvciA0MDAwMDAKKworLSAjYWRkcmVzcy1jZWxsczoKKyAgICBBbHdheXMgMSAoZm9yIEkyQyBhZGRyZXNzZXMpCisKKy0gI3NpemUtY2VsbHM6CisgICAgQWx3YXlzIDAKKworRXhhbXBsZToKKwlpMmMwOiBpMmNAMTgwMDgwMDAgeworCQljb21wYXRpYmxlID0gImJyY20saXByb2MtaTJjIjsKKwkJcmVnID0gPDB4MTgwMDgwMDAgMHgxMDA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSA4NSBJUlFfVFlQRV9OT05FPjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDEwMDAwMD47CisKKwkJY29kZWM6IHdtODc1MEAxYSB7CisJCQljb21wYXRpYmxlID0gIndsZix3bTg3NTAiOworCQkJcmVnID0gPDB4MWE+OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2JyY20sa29uYS1pMmMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9icmNtLGtvbmEtaTJjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjg3Yjc0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9icmNtLGtvbmEtaTJjLnR4dApAQCAtMCwwICsxLDM1IEBACitCcm9hZGNvbSBLb25hIEZhbWlseSBJMkMKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBJMkMgY29udHJvbGxlciBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgQnJvYWRjb20gU29DczoKKworICBCQ00xMTEzMAorICBCQ00xMTE0MAorICBCQ00xMTM1MQorICBCQ00yODE0NQorICBCQ00yODE1NQorCitSZXF1aXJlZCBQcm9wZXJ0aWVzCistLS0tLS0tLS0tLS0tLS0tLS0tCistIGNvbXBhdGlibGU6ICJicmNtLGJjbTExMzUxLWkyYyIsICJicmNtLGtvbmEtaTJjIgorLSByZWc6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIGNvbnRyb2xsZXIgcmVnaXN0ZXJzCistIGludGVycnVwdHM6IFRoZSBpbnRlcnJ1cHQgbnVtYmVyIHVzZWQgYnkgdGhlIGNvbnRyb2xsZXIKKy0gY2xvY2tzOiBjbG9jayBzcGVjaWZpZXIgZm9yIHRoZSBrb25hIGkyYyBleHRlcm5hbCBjbG9jaworLSBjbG9jay1mcmVxdWVuY3k6IFRoZSBJMkMgYnVzIGZyZXF1ZW5jeSBpbiBIegorLSAjYWRkcmVzcy1jZWxsczogU2hvdWxkIGJlIDwxPgorLSAjc2l6ZS1jZWxsczogU2hvdWxkIGJlIDwwPgorCitSZWZlciB0byBjbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBnZW5lcmljIGNsb2NrIGNvbnN1bWVyCitwcm9wZXJ0aWVzLgorCitFeGFtcGxlOgorCitpMmNAM2UwMTYwMDAgeworCWNvbXBhdGlibGUgPSAiYnJjbSxiY20xMTM1MS1pMmMiLCJicmNtLGtvbmEtaTJjIjsKKwlyZWcgPSA8MHgzZTAxNjAwMCAweDgwPjsKKwlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMTAzIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCWNsb2NrcyA9IDwmYnNjMV9jbGs+OworCWNsb2NrLWZyZXF1ZW5jeSA9IDw0MDAwMDA+OworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLWFyYi1ncGlvLWNoYWxsZW5nZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1hcmItZ3Bpby1jaGFsbGVuZ2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmZWFiYjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1hcmItZ3Bpby1jaGFsbGVuZ2UudHh0CkBAIC0wLDAgKzEsODYgQEAKK0dQSU8tYmFzZWQgSTJDIEFyYml0cmF0aW9uIFVzaW5nIGEgQ2hhbGxlbmdlICYgUmVzcG9uc2UgTWVjaGFuaXNtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorVGhpcyB1c2VzIEdQSU8gbGluZXMgYW5kIGEgY2hhbGxlbmdlICYgcmVzcG9uc2UgbWVjaGFuaXNtIHRvIGFyYml0cmF0ZSB3aG8gaXMKK3RoZSBtYXN0ZXIgb2YgYW4gSTJDIGJ1cyBpbiBhIG11bHRpbWFzdGVyIHNpdHVhdGlvbi4KKworSW4gbWFueSBjYXNlcyB1c2luZyBHUElPcyB0byBhcmJpdHJhdGUgaXMgbm90IG5lZWRlZCBhbmQgYSBkZXNpZ24gY2FuIHVzZQordGhlIHN0YW5kYXJkIEkyQyBtdWx0aS1tYXN0ZXIgcnVsZXMuICBVc2luZyBHUElPcyBpcyBnZW5lcmFsbHkgdXNlZnVsIGluCit0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcyBhIGRldmljZSBvbiB0aGUgYnVzIHRoYXQgaGFzIGVycmF0YSBhbmQvb3IgYnVncwordGhhdCBtYWtlcyBzdGFuZGFyZCBtdWx0aW1hc3RlciBtb2RlIG5vdCBmZWFzaWJsZS4KKworTm90ZSB0aGF0IHRoaXMgc2NoZW1lIHdvcmtzIHdlbGwgZW5vdWdoIGJ1dCBoYXMgc29tZSBkb3duc2lkZXM6CisqIEl0IGlzIG5vbnN0YW5kYXJkIChub3QgdXNpbmcgc3RhbmRhcmQgSTJDIG11bHRpbWFzdGVyKQorKiBIYXZpbmcgdHdvIG1hc3RlcnMgb24gYSBidXMgaW4gZ2VuZXJhbCBtYWtlcyBpdCByZWxhdGl2ZWx5IGhhcmQgdG8gZGVidWcKKyAgcHJvYmxlbXMgKGhhcmQgdG8gdGVsbCBpZiBpMmMgaXNzdWVzIHdlcmUgY2F1c2VkIGJ5IG9uZSBtYXN0ZXIsIGFub3RoZXIsIG9yCisgIHNvbWUgZGV2aWNlIG9uIHRoZSBidXMpLgorCisKK0FsZ29yaXRobToKKworQWxsIG1hc3RlcnMgb24gdGhlIGJ1cyBoYXZlIGEgJ2J1cyBjbGFpbScgbGluZSB3aGljaCBpcyBhbiBvdXRwdXQgdGhhdCB0aGUKK290aGVycyBjYW4gc2VlLiBUaGVzZSBhcmUgYWxsIGFjdGl2ZSBsb3cgd2l0aCBwdWxsLXVwcyBlbmFibGVkLiAgV2UnbGwKK2Rlc2NyaWJlIHRoZXNlIGxpbmVzIGFzOgorCistIE9VUl9DTEFJTTogb3V0cHV0IGZyb20gdXMgc2lnbmFsaW5nIHRvIG90aGVyIGhvc3RzIHRoYXQgd2Ugd2FudCB0aGUgYnVzCistIFRIRUlSX0NMQUlNUzogb3V0cHV0IGZyb20gb3RoZXJzIHNpZ25hbGluZyB0aGF0IHRoZXkgd2FudCB0aGUgYnVzCisKK1RoZSBiYXNpYyBhbGdvcml0aG0gaXMgdG8gYXNzZXJ0IHlvdXIgbGluZSB3aGVuIHlvdSB3YW50IHRoZSBidXMsIHRoZW4gbWFrZQorc3VyZSB0aGF0IHRoZSBvdGhlciBzaWRlIGRvZXNuJ3Qgd2FudCBpdCBhbHNvLiAgQSBkZXRhaWxlZCBleHBsYW5hdGlvbiBpcyBiZXN0Citkb25lIHdpdGggYW4gZXhhbXBsZS4KKworTGV0J3Mgc2F5IHdlIHdhbnQgdG8gY2xhaW0gdGhlIGJ1cy4gIFdlOgorMS4gQXNzZXJ0IE9VUl9DTEFJTS4KKzIuIFdhaXRzIGEgbGl0dGxlIGJpdCBmb3IgdGhlIG90aGVyIHNpZGVzIHRvIG5vdGljZSAoc2xldyB0aW1lLCBzYXkgMTAKKyAgIG1pY3Jvc2Vjb25kcykuCiszLiBDaGVjayBUSEVJUl9DTEFJTVMuICBJZiBub25lIGFyZSBhc3NlcnRlZCB0aGVuIHRoZSB3ZSBoYXZlIHRoZSBidXMgYW5kIHdlIGFyZQorICAgZG9uZS4KKzQuIE90aGVyd2lzZSwgd2FpdCBmb3IgYSBmZXcgbWlsbGlzZWNvbmRzIGFuZCBzZWUgaWYgVEhFSVJfQ0xBSU1TIGFyZSByZWxlYXNlZC4KKzUuIElmIG5vdCwgYmFjayBvZmYsIHJlbGVhc2UgdGhlIGNsYWltIGFuZCB3YWl0IGZvciBhIGZldyBtb3JlIG1pbGxpc2Vjb25kcy4KKzYuIEdvIGJhY2sgdG8gMSAodW50aWwgcmV0cnkgdGltZSBoYXMgZXhwaXJlZCkuCisKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogaTJjLWFyYi1ncGlvLWNoYWxsZW5nZQorLSBvdXItY2xhaW0tZ3BpbzogVGhlIEdQSU8gdGhhdCB3ZSB1c2UgdG8gY2xhaW0gdGhlIGJ1cy4KKy0gdGhlaXItY2xhaW0tZ3Bpb3M6IFRoZSBHUElPcyB0aGF0IHRoZSBvdGhlciBzaWRlcyB1c2UgdG8gY2xhaW0gdGhlIGJ1cy4KKyAgTm90ZSB0aGF0IHNvbWUgaW1wbGVtZW50YXRpb25zIG1heSBvbmx5IHN1cHBvcnQgYSBzaW5nbGUgb3RoZXIgbWFzdGVyLgorLSBTdGFuZGFyZCBJMkMgbXV4IHByb3BlcnRpZXMuIFNlZSBtdXgudHh0IGluIHRoaXMgZGlyZWN0b3J5LgorLSBTaW5nbGUgSTJDIGNoaWxkIGJ1cyBub2RlIGF0IHJlZyAwLiBTZWUgbXV4LnR4dCBpbiB0aGlzIGRpcmVjdG9yeS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gc2xldy1kZWxheS11czogbWljcm9zZWNvbmRzIHRvIHdhaXQgZm9yIGEgR1BJTyB0byBnbyBoaWdoLiBEZWZhdWx0IGlzIDEwIHVzLgorLSB3YWl0LXJldHJ5LXVzOiB3ZSdsbCBhdHRlbXB0IGFub3RoZXIgY2xhaW0gYWZ0ZXIgdGhpcyBtYW55IG1pY3Jvc2Vjb25kcy4KKyAgICBEZWZhdWx0IGlzIDMwMDAgdXMuCistIHdhaXQtZnJlZS11czogd2UnbGwgZ2l2ZSB1cCBhZnRlciB0aGlzIG1hbnkgbWljcm9zZWNvbmRzLiBEZWZhdWx0IGlzIDUwMDAwIHVzLgorCisKK0V4YW1wbGU6CisJaTJjQDEyQ0EwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhY21lLHNvbWUtaTJjLWRldmljZSI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwl9OworCisJaTJjLWFyYml0cmF0b3IgeworCQljb21wYXRpYmxlID0gImkyYy1hcmItZ3Bpby1jaGFsbGVuZ2UiOworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJaTJjLXBhcmVudCA9IDwmey9pMmNAMTJDQTAwMDB9PjsKKworCQlvdXItY2xhaW0tZ3BpbyA9IDwmZ3BmMCAzIDE+OworCQl0aGVpci1jbGFpbS1ncGlvcyA9IDwmZ3BlMCA0IDE+OworCQlzbGV3LWRlbGF5LXVzID0gPDEwPjsKKwkJd2FpdC1yZXRyeS11cyA9IDwzMDAwPjsKKwkJd2FpdC1mcmVlLXVzID0gPDUwMDAwPjsKKworCQlpMmNAMCB7CisJCQlyZWcgPSA8MD47CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCisJCQlpMmNANTIgeworCQkJCS8vIE5vcm1hbCBJMkMgZGV2aWNlCisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1hdDkxLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLWF0OTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlODFkYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1hdDkxLnR4dApAQCAtMCwwICsxLDYwIEBACitJMkMgZm9yIEF0bWVsIHBsYXRmb3JtcworCitSZXF1aXJlZCBwcm9wZXJ0aWVzIDoKKy0gY29tcGF0aWJsZSA6IE11c3QgYmUgImF0bWVsLGF0OTFybTkyMDAtaTJjIiwgImF0bWVsLGF0OTFzYW05MjYxLWkyYyIsCisgICAgICJhdG1lbCxhdDkxc2FtOTI2MC1pMmMiLCAiYXRtZWwsYXQ5MXNhbTlnMjAtaTJjIiwgImF0bWVsLGF0OTFzYW05ZzEwLWkyYyIsCisgICAgICJhdG1lbCxhdDkxc2FtOXg1LWkyYyIgb3IgImF0bWVsLHNhbWE1ZDItaTJjIgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgICAgcmVnaW9uLgorLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgbnVtYmVyIHRvIHRoZSBjcHUuCistICNhZGRyZXNzLWNlbGxzID0gPDE+OworLSAjc2l6ZS1jZWxscyA9IDwwPjsKKy0gY2xvY2tzOiBwaGFuZGxlcyB0byBpbnB1dCBjbG9ja3MuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrLWZyZXF1ZW5jeTogRGVzaXJlZCBJMkMgYnVzIGZyZXF1ZW5jeSBpbiBIeiwgb3RoZXJ3aXNlIGRlZmF1bHRzIHRvIDEwMDAwMAorLSBkbWFzOiBBIGxpc3Qgb2YgdHdvIGRtYSBzcGVjaWZpZXJzLCBvbmUgZm9yIGVhY2ggZW50cnkgaW4gZG1hLW5hbWVzLgorLSBkbWEtbmFtZXM6IHNob3VsZCBjb250YWluICJ0eCIgYW5kICJyeCIuCistIGF0bWVsLGZpZm8tc2l6ZTogbWF4aW11bSBudW1iZXIgb2YgZGF0YSB0aGUgUlggYW5kIFRYIEZJRk9zIGNhbiBzdG9yZSBmb3IgRklGTworICBjYXBhYmxlIEkyQyBjb250cm9sbGVycy4KKy0gQ2hpbGQgbm9kZXMgY29uZm9ybWluZyB0byBpMmMgYnVzIGJpbmRpbmcKKworRXhhbXBsZXMgOgorCitpMmMwOiBpMmNAZmZmODQwMDAgeworCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXNhbTlnMjAtaTJjIjsKKwlyZWcgPSA8MHhmZmY4NDAwMCAweDEwMD47CisJaW50ZXJydXB0cyA9IDwxMiA0IDY+OworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDA+OworCWNsb2NrcyA9IDwmdHdpMF9jbGs+OworCWNsb2NrLWZyZXF1ZW5jeSA9IDw0MDAwMDA+OworCisJMjRjNTEyQDUwIHsKKwkJY29tcGF0aWJsZSA9ICIyNGM1MTIiOworCQlyZWcgPSA8MHg1MD47CisJCXBhZ2VzaXplID0gPDEyOD47CisJfQorfQorCitpMmMwOiBpMmNAZjgwMzQ2MDAgeworCWNvbXBhdGlibGUgPSAiYXRtZWwsc2FtYTVkMi1pMmMiOworCXJlZyA9IDwweGY4MDM0NjAwIDB4MTAwPjsKKwlpbnRlcnJ1cHRzID0gPDE5IElSUV9UWVBFX0xFVkVMX0hJR0ggNz47CisJZG1hcyA9IDwmZG1hMAorCQkoQVQ5MV9YRE1BQ19EVF9NRU1fSUYoMCkgfCBBVDkxX1hETUFDX0RUX1BFUl9JRigxKSkKKwkJQVQ5MV9YRE1BQ19EVF9QRVJJRCgxMSk+LAorCSAgICAgICA8JmRtYTAKKwkJKEFUOTFfWERNQUNfRFRfTUVNX0lGKDApIHwgQVQ5MV9YRE1BQ19EVF9QRVJfSUYoMSkpCisJCUFUOTFfWERNQUNfRFRfUEVSSUQoMTIpPjsKKwlkbWEtbmFtZXMgPSAidHgiLCAicngiOworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDA+OworCWNsb2NrcyA9IDwmZmx4MD47CisJYXRtZWwsZmlmby1zaXplID0gPDE2PjsKKworCXdtODczMTogd204NzMxQDFhIHsKKwkJY29tcGF0aWJsZSA9ICJ3bTg3MzEiOworCQlyZWcgPSA8MHgxYT47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1heHhpYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1heHhpYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI5NmQ3OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLWF4eGlhLnR4dApAQCAtMCwwICsxLDMwIEBACitMU0kgQXh4aWEgSTJDCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgOgorLSBjb21wYXRpYmxlIDogTXVzdCBiZSAibHNpLGFwaTJjIgorLSByZWcgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistIGludGVycnVwdHMgOiB0aGUgaW50ZXJydXB0IHNwZWNpZmllcgorLSAjYWRkcmVzcy1jZWxscyA6IE11c3QgYmUgPDE+OworLSAjc2l6ZS1jZWxscyA6IE11c3QgYmUgPDA+OworLSBjbG9jay1uYW1lcyA6IE11c3QgY29udGFpbiAiaTJjIi4KKy0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggbmFtZSBpbiBjbG9jay1uYW1lcy4gU2VlIHRoZSBjb21tb24KKyAgY2xvY2sgYmluZGluZ3MuCisKK09wdGlvbmFsIHByb3BlcnRpZXMgOgorLSBjbG9jay1mcmVxdWVuY3kgOiBEZXNpcmVkIEkyQyBidXMgY2xvY2sgZnJlcXVlbmN5IGluIEh6LiBJZiBub3Qgc3BlY2lmaWVkLAorICB0aGUgZGVmYXVsdCAxMDAga0h6IGZyZXF1ZW5jeSB3aWxsIGJlIHVzZWQuIEFzIG9ubHkgTm9ybWFsIGFuZCBGYXN0IG1vZGVzCisgIGFyZSBzdXBwb3J0ZWQsIHBvc3NpYmxlIHZhbHVlcyBhcmUgMTAwMDAwIGFuZCA0MDAwMDAuCisKK0V4YW1wbGUgOgorCitpMmNAMDIwMTAwODQwMDAgeworCWNvbXBhdGlibGUgPSAibHNpLGFwaTJjIjsKKwlkZXZpY2VfdHlwZSA9ICJpMmMiOworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDA+OworCXJlZyA9IDwweDIwIDB4MTAwODQwMDAgMHgwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8MCAxOSA0PjsKKwljbG9ja3MgPSA8JmNsa19wZXI+OworCWNsb2NrLW5hbWVzID0gImkyYyI7CisJY2xvY2stZnJlcXVlbmN5ID0gPDQwMDAwMD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtYnJjbXN0Yi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1icmNtc3RiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmY3MjRlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtYnJjbXN0Yi50eHQKQEAgLTAsMCArMSwyOCBAQAorQnJvYWRjb20gc3RiIGJzYyBpaWMgbWFzdGVyIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImJyY20sYnJjbXN0Yi1pMmMiCistIGNsb2NrLWZyZXF1ZW5jeTogMzItYml0IGRlY2ltYWwgdmFsdWUgb2YgaWljIG1hc3RlciBjbG9jayBmcmVxZW5jeSBpbiBIegorCQkgICB2YWxpZCB2YWx1ZXMgYXJlIDM3NTAwMCwgMzkwMDAwLCAxODc1MDAsIDIwMDAwMAorCQkgICA5Mzc1MCwgOTc1MDAsIDQ2ODc1IGFuZCA1MDAwMAorLSByZWc6IHNwZWNpZmllcyB0aGUgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSByZWdpc3RlcnMKKworT3B0aW9uYWwgcHJvcGVydGllcyA6CisKKy0gaW50ZXJydXB0LXBhcmVudDogc3BlY2lmaWVzIHRoZSBwaGFuZGxlIHRvIHRoZSBwYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIKKyAgdGhpcyBvbmUgaXMgY2FzY2FkZWQgZnJvbQorLSBpbnRlcnJ1cHRzOiBzcGVjaWZpZXMgdGhlIGludGVycnVwdCBudW1iZXIsIHRoZSBpcnEgbGluZSB0byBiZSB1c2VkCistIGludGVycnVwdC1uYW1lczogSW50ZXJydXB0IG5hbWUgc3RyaW5nCisKK0V4YW1wbGU6CisKK2JzY2E6IGkyY0BmMDQwNjIwMCB7CisgICAgICBjbG9jay1mcmVxdWVuY3kgPSA8MzkwMDAwPjsKKyAgICAgIGNvbXBhdGlibGUgPSAiYnJjbSxicmNtc3RiLWkyYyI7CisgICAgICBpbnRlcnJ1cHQtcGFyZW50ID0gPCZpcnEwX2ludGM+OworICAgICAgcmVnID0gPDB4ZjA0MDYyMDAgMHg1OD47CisgICAgICBpbnRlcnJ1cHRzID0gPDB4MTg+OworICAgICAgaW50ZXJydXB0LW5hbWVzID0gInVwZ19ic2NhIjsKK307CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLWNhZGVuY2UudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtY2FkZW5jZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJhYTkwYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLWNhZGVuY2UudHh0CkBAIC0wLDAgKzEsMjggQEAKK0JpbmRpbmcgZm9yIHRoZSBDYWRlbmNlIEkyQyBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gcmVnOiBQaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlciBhcmVhLgorICAtIGNvbXBhdGlibGU6IFNob3VsZCBjb250YWluIG9uZSBvZjoKKwkJKiAiY2RucyxpMmMtcjFwMTAiCisJCU5vdGU6CVVzZSB0aGlzIHdoZW4gY2FkZW5jZSBpMmMgY29udHJvbGxlciB2ZXJzaW9uIDEuMCBpcyB1c2VkLgorCQkqICJjZG5zLGkyYy1yMXAxNCIKKwkJTm90ZToJVXNlIHRoaXMgd2hlbiBjYWRlbmNlIGkyYyBjb250cm9sbGVyIHZlcnNpb24gMS40IGlzIHVzZWQuCisgIC0gY2xvY2tzOiBJbnB1dCBjbG9jayBzcGVjaWZpZXIuIFJlZmVyIHRvIGNvbW1vbiBjbG9jayBiaW5kaW5ncy4KKyAgLSBpbnRlcnJ1cHRzOiBJbnRlcnJ1cHQgc3BlY2lmaWVyLiBSZWZlciB0byBpbnRlcnJ1cHQgYmluZGluZ3MuCisgIC0gI2FkZHJlc3MtY2VsbHM6IFNob3VsZCBiZSAxLgorICAtICNzaXplLWNlbGxzOiBTaG91bGQgYmUgMC4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAgLSBjbG9jay1mcmVxdWVuY3k6IERlc2lyZWQgb3BlcmF0aW5nIGZyZXF1ZW5jeSwgaW4gSHosIG9mIHRoZSBidXMuCisgIC0gY2xvY2stbmFtZXM6IElucHV0IGNsb2NrIG5hbWUsIHNob3VsZCBiZSAncGNsaycuCisKK0V4YW1wbGU6CisJaTJjQGUwMDA0MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJjZG5zLGkyYy1yMXAxMCI7CisJCWNsb2NrcyA9IDwmY2xrYyAzOD47CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSAyNSBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJcmVnID0gPDB4ZTAwMDQwMDAgMHgxMDAwPjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDQwMDAwMD47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtY2J1cy1ncGlvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLWNidXMtZ3Bpby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNlOWNkMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLWNidXMtZ3Bpby50eHQKQEAgLTAsMCArMSwyNyBAQAorRGV2aWNlIHRyZWUgYmluZGluZ3MgZm9yIGkyYy1jYnVzLWdwaW8gZHJpdmVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisJLSBjb21wYXRpYmxlID0gImkyYy1jYnVzLWdwaW8iOworCS0gZ3Bpb3M6IGNsaywgZGF0LCBzZWwKKwktICNhZGRyZXNzLWNlbGxzID0gPDE+OworCS0gI3NpemUtY2VsbHMgPSA8MD47CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisJLSBjaGlsZCBub2RlcyBjb25mb3JtaW5nIHRvIGkyYyBidXMgYmluZGluZworCitFeGFtcGxlOgorCitpMmNAMCB7CisJY29tcGF0aWJsZSA9ICJpMmMtY2J1cy1ncGlvIjsKKwlncGlvcyA9IDwmZ3BpbyA2NiAwIC8qIGNsayAqLworCQkgJmdwaW8gNjUgMCAvKiBkYXQgKi8KKwkJICZncGlvIDY0IDAgLyogc2VsICovCisJCT47CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47CisKKwlyZXR1LW1mZDogcmV0dUAxIHsKKwkJY29tcGF0aWJsZSA9ICJyZXR1LW1mZCI7CisJCXJlZyA9IDwweDE+OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtY3Jvcy1lYy10dW5uZWwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtY3Jvcy1lYy10dW5uZWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5OGYwMzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1jcm9zLWVjLXR1bm5lbC50eHQKQEAgLTAsMCArMSwzOSBAQAorSTJDIGJ1cyB0aGF0IHR1bm5lbHMgdGhyb3VnaCB0aGUgQ2hyb21lT1MgRUMgKGNyb3MtZWMpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK09uIHNvbWUgQ2hyb21lT1MgYm9hcmQgZGVzaWducyB3ZSd2ZSBnb3QgYSBjb25uZWN0aW9uIHRvIHRoZSBFQyAoZW1iZWRkZWQKK2NvbnRyb2xsZXIpIGJ1dCBubyBkaXJlY3QgY29ubmVjdGlvbiB0byBzb21lIGRldmljZXMgb24gdGhlIG90aGVyIHNpZGUgb2YKK3RoZSBFQyAobGlrZSBhIGJhdHRlcnkgYW5kIFBNSUMpLiAgVG8gZ2V0IGFjY2VzcyB0byB0aG9zZSBkZXZpY2VzIHdlIG5lZWQKK3RvIHR1bm5lbCBvdXIgaTJjIGNvbW1hbmRzIHRocm91Z2ggdGhlIEVDLgorCitUaGUgbm9kZSBmb3IgdGhpcyBkZXZpY2Ugc2hvdWxkIGJlIHVuZGVyIGEgY3Jvcy1lYyBub2RlIGxpa2UgZ29vZ2xlLGNyb3MtZWMtc3BpCitvciBnb29nbGUsY3Jvcy1lYy1pMmMuCisKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogZ29vZ2xlLGNyb3MtZWMtaTJjLXR1bm5lbAorLSBnb29nbGUscmVtb3RlLWJ1czogVGhlIEVDIGJ1cyB3ZSdkIGxpa2UgdG8gdGFsayB0by4KKworT3B0aW9uYWwgY2hpbGQgbm9kZXM6CistIE9uZSBub2RlIHBlciBJMkMgZGV2aWNlIGNvbm5lY3RlZCB0byB0aGUgdHVubmVsbGVkIEkyQyBidXMuCisKKworRXhhbXBsZToKKwljcm9zLWVjQDAgeworCQljb21wYXRpYmxlID0gImdvb2dsZSxjcm9zLWVjLXNwaSI7CisKKwkJLi4uCisKKwkJaTJjLXR1bm5lbCB7CisJCQljb21wYXRpYmxlID0gImdvb2dsZSxjcm9zLWVjLWkyYy10dW5uZWwiOworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQkJZ29vZ2xlLHJlbW90ZS1idXMgPSA8MD47CisKKwkJCWJhdHRlcnk6IHNicy1iYXR0ZXJ5QGIgeworCQkJCWNvbXBhdGlibGUgPSAic2JzLHNicy1iYXR0ZXJ5IjsKKwkJCQlyZWcgPSA8MHhiPjsKKwkJCQlzYnMscG9sbC1yZXRyeS1jb3VudCA9IDwxPjsKKwkJCX07CisJCX07CisJfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtZGF2aW5jaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1kYXZpbmNpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjEyM2UwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtZGF2aW5jaS50eHQKQEAgLTAsMCArMSwzMSBAQAorKiBUZXhhcyBJbnN0cnVtZW50cyBEYXZpbmNpL0tleXN0b25lIEkyQworCitUaGlzIGZpbGUgcHJvdmlkZXMgaW5mb3JtYXRpb24sIHdoYXQgdGhlIGRldmljZSBub2RlIGZvciB0aGUKK2RhdmluY2kva2V5c3RvbmUgaTJjIGludGVyZmFjZSBjb250YWlucy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInRpLGRhdmluY2ktaTJjIiBvciAidGksa2V5c3RvbmUtaTJjIjsKKy0gcmVnIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorCitSZWNvbW1lbmRlZCBwcm9wZXJ0aWVzIDoKKy0gaW50ZXJydXB0cyA6IHN0YW5kYXJkIGludGVycnVwdCBwcm9wZXJ0eS4KKy0gY2xvY2stZnJlcXVlbmN5IDogZGVzaXJlZCBJMkMgYnVzIGNsb2NrIGZyZXF1ZW5jeSBpbiBIei4KKy0gdGksaGFzLXBmdW5jOiBib29sZWFuOyBpZiBkZWZpbmVkLCBpdCBpbmRpY2F0ZXMgdGhhdCBTb0Mgc3VwcG9ydHMgUEZVTkMKKwlyZWdpc3RlcnMuIFBGVU5DIHJlZ2lzdGVycyBhbGxvdyB0byBzd2l0Y2ggSTJDIHBpbnMgdG8gZnVuY3Rpb24gYXMKKwlHUElPcywgc28gdGhleSBjYW4gYnkgdG9nZ2xlZCBtYW51YWxseS4KKworRXhhbXBsZSAoZW5id19jbWMgYm9hcmQpOgorCWkyY0AxYzIyMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSxkYXZpbmNpLWkyYyI7CisJCXJlZyA9IDwweDIyMDAwIDB4MTAwMD47CisJCWNsb2NrLWZyZXF1ZW5jeSA9IDwxMDAwMDA+OworCQlpbnRlcnJ1cHRzID0gPDE1PjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmaW50Yz47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQlkdHRANDggeworCQkJY29tcGF0aWJsZSA9ICJuYXRpb25hbCxsbTc1IjsKKwkJCXJlZyA9IDwweDQ4PjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtZGVzaWdud2FyZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1kZXNpZ253YXJlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWUyNmRjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtZGVzaWdud2FyZS50eHQKQEAgLTAsMCArMSw0NSBAQAorKiBTeW5vcHN5cyBEZXNpZ25XYXJlIEkyQworCitSZXF1aXJlZCBwcm9wZXJ0aWVzIDoKKworIC0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAic25wcyxkZXNpZ253YXJlLWkyYyIKKyAtIHJlZyA6IE9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKyAtIGludGVycnVwdHMgOiA8SVJRPiB3aGVyZSBJUlEgaXMgdGhlIGludGVycnVwdCBudW1iZXIuCisKK1JlY29tbWVuZGVkIHByb3BlcnRpZXMgOgorCisgLSBjbG9jay1mcmVxdWVuY3kgOiBkZXNpcmVkIEkyQyBidXMgY2xvY2sgZnJlcXVlbmN5IGluIEh6LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzIDoKKyAtIGkyYy1zZGEtaG9sZC10aW1lLW5zIDogc2hvdWxkIGNvbnRhaW4gdGhlIFNEQSBob2xkIHRpbWUgaW4gbmFub3NlY29uZHMuCisgICBUaGlzIG9wdGlvbiBpcyBvbmx5IHN1cHBvcnRlZCBpbiBoYXJkd2FyZSBibG9ja3MgdmVyc2lvbiAxLjExYSBvciBuZXdlci4KKworIC0gaTJjLXNjbC1mYWxsaW5nLXRpbWUtbnMgOiBzaG91bGQgY29udGFpbiB0aGUgU0NMIGZhbGxpbmcgdGltZSBpbiBuYW5vc2Vjb25kcy4KKyAgIFRoaXMgdmFsdWUgd2hpY2ggaXMgYnkgZGVmYXVsdCAzMDBucyBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlIHRMT1cgcGVyaW9kLgorCisgLSBpMmMtc2RhLWZhbGxpbmctdGltZS1ucyA6IHNob3VsZCBjb250YWluIHRoZSBTREEgZmFsbGluZyB0aW1lIGluIG5hbm9zZWNvbmRzLgorICAgVGhpcyB2YWx1ZSB3aGljaCBpcyBieSBkZWZhdWx0IDMwMG5zIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgdEhJR0ggcGVyaW9kLgorCitFeGFtcGxlIDoKKworCWkyY0BmMDAwMCB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJzbnBzLGRlc2lnbndhcmUtaTJjIjsKKwkJcmVnID0gPDB4ZjAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwxMT47CisJCWNsb2NrLWZyZXF1ZW5jeSA9IDw0MDAwMDA+OworCX07CisKKwlpMmNAMTEyMDAwMCB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJzbnBzLGRlc2lnbndhcmUtaTJjIjsKKwkJcmVnID0gPDB4MTEyMDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpY3RsPjsKKwkJaW50ZXJydXB0cyA9IDwxMiAxPjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDQwMDAwMD47CisJCWkyYy1zZGEtaG9sZC10aW1lLW5zID0gPDMwMD47CisJCWkyYy1zZGEtZmFsbGluZy10aW1lLW5zID0gPDMwMD47CisJCWkyYy1zY2wtZmFsbGluZy10aW1lLW5zID0gPDMwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLWRpZ2ljb2xvci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1kaWdpY29sb3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1N2EwOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1kaWdpY29sb3IudHh0CkBAIC0wLDAgKzEsMjUgQEAKK0NvbmV4YW50IERpZ2ljb2xvciBJMkMgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZTogbXVzdCBiZSAiY254dCxjeDkyNzU1LWkyYyIKKyAtIHJlZzogcGh5c2ljYWwgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBkZXZpY2UgcmVnaXN0ZXJzCisgLSBpbnRlcnJ1cHRzOiBhIHNpbmdsZSBpbnRlcnJ1cHQgc3BlY2lmaWVyCisgLSBjbG9ja3M6IGNsb2NrIGZvciB0aGUgZGV2aWNlCisgLSAjYWRkcmVzcy1jZWxsczogc2hvdWxkIGJlIDwxPgorIC0gI3NpemUtY2VsbHM6IHNob3VsZCBiZSA8MD4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gY2xvY2stZnJlcXVlbmN5OiB0aGUgZGVzaXJlZCBJMkMgYnVzIGNsb2NrIGZyZXF1ZW5jeSBpbiBIejsgaW4KKyAgYWJzZW5jZSBvZiB0aGlzIHByb3BlcnR5IHRoZSBkZWZhdWx0IHZhbHVlIGlzIHVzZWQgKDEwMCBrSHopLgorCitFeGFtcGxlOgorCisJaTJjOiBpMmNAZjAwMDAxMjAgeworCQljb21wYXRpYmxlID0gImNueHQsY3g5Mjc1NS1pMmMiOworCQlyZWcgPSA8MHhmMDAwMDEyMCAweDEwPjsKKwkJaW50ZXJydXB0cyA9IDwyOD47CisJCWNsb2NrcyA9IDwmbWFpbl9jbGs+OworCQljbG9jay1mcmVxdWVuY3kgPSA8MTAwMDAwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1lZm0zMi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1lZm0zMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBiMjVjMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLWVmbTMyLnR4dApAQCAtMCwwICsxLDM0IEBACisqIEVuZXJneW1pY3JvIGVmbTMyIGkyYyBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgOgorCisgLSByZWcgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCisgLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJlbmVyZ3ltaWNybyxlZm0zMi1pMmMiCisgLSBpbnRlcnJ1cHRzIDogdGhlIGludGVycnVwdCBudW1iZXIKKyAtIGNsb2NrcyA6IHJlZmVyZW5jZSB0byB0aGUgbW9kdWxlIGNsb2NrCisKK1JlY29tbWVuZGVkIHByb3BlcnRpZXMgOgorCisgLSBjbG9jay1mcmVxdWVuY3kgOiBtYXhpbWFsIEkyQyBidXMgY2xvY2sgZnJlcXVlbmN5IGluIEh6LgorIC0gZW5lcmd5bWljcm8sbG9jYXRpb24gOiBEZWNpZGVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgVVNBUlQgSS9PIHBpbnMuCisgICBBbGxvd2VkIHJhbmdlIDogWzAgLi4gNl0KKworRXhhbXBsZToKKwlpMmMwOiBpMmNANDAwMGEwMDAgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJCWNvbXBhdGlibGUgPSAiZW5lcmd5bWljcm8sZWZtMzItaTJjIjsKKwkJcmVnID0gPDB4NDAwMGEwMDAgMHg0MDA+OworCQlpbnRlcnJ1cHRzID0gPDk+OworCQljbG9ja3MgPSA8JmNtdSBjbGtfSEZQRVJDTEtJMkMwPjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDEwMDAwMD47CisJCXN0YXR1cyA9ICJvayI7CisJCWVuZXJneW1pY3JvLGxvY2F0aW9uID0gPDM+OworCisJCWVlcHJvbUA1MCB7CisJCQljb21wYXRpYmxlID0gIm1pY3JvY2hpcCwyNGMwMiI7CisJCQlyZWcgPSA8MHg1MD47CisJCQlwYWdlc2l6ZSA9IDwxNj47CisJCX07CisJfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtZW1ldjIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtZW1ldjIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlZDFlYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1lbWV2Mi50eHQKQEAgLTAsMCArMSwyMiBAQAorRGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbiBmb3IgUmVuZXNhcyBFTUVWMiBJSUMgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlICAgICAgOiAicmVuZXNhcyxpaWMtZW1ldjIiCistIHJlZyAgICAgICAgICAgICA6IGFkZHJlc3Mgc3RhcnQgYW5kIGFkZHJlc3MgcmFuZ2Ugc2l6ZSBvZiBkZXZpY2UKKy0gaW50ZXJydXB0cyAgICAgIDogc3BlY2lmaWVyIGZvciB0aGUgSUlDIGNvbnRyb2xsZXIgaW50ZXJydXB0CistIGNsb2NrcyAgICAgICAgICA6IHBoYW5kbGUgdG8gdGhlIElQIGNvcmUgU0NMSworLSBjbG9jay1uYW1lcyAgICAgOiBtdXN0IGJlICJzY2xrIgorLSAjYWRkcmVzcy1jZWxscyAgOiBzaG91bGQgYmUgPDE+CistICNzaXplLWNlbGxzICAgICA6IHNob3VsZCBiZSA8MD4KKworRXhhbXBsZToKKworCWlpYzA6IGkyY0BlMDA3MDAwMCB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLGlpYy1lbWV2MiI7CisJCXJlZyA9IDwweGUwMDcwMDAwIDB4Mjg+OworCQlpbnRlcnJ1cHRzID0gPDAgMzIgSVJRX1RZUEVfRURHRV9SSVNJTkc+OworCQljbG9ja3MgPSA8JmlpYzBfc2Nsaz47CisJCWNsb2NrLW5hbWVzID0gInNjbGsiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1leHlub3M1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLWV4eW5vczUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkYmMwYjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1leHlub3M1LnR4dApAQCAtMCwwICsxLDUzIEBACisqIFNhbXN1bmcncyBIaWdoIFNwZWVkIEkyQyBjb250cm9sbGVyCisKK1RoZSBTYW1zdW5nJ3MgSGlnaCBTcGVlZCBJMkMgY29udHJvbGxlciBpcyB1c2VkIHRvIGludGVyZmFjZSB3aXRoIEkyQyBkZXZpY2VzCithdCB2YXJpb3VzIHNwZWVkcyByYW5naW5nIGZyb20gMTAwa2h6IHRvIDMuNE1oei4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiB2YWx1ZSBzaG91bGQgYmUuCisJLT4gInNhbXN1bmcsZXh5bm9zNS1oc2kyYyIsIChERVBSRUNBVEVEKQorCQkJCWZvciBpMmMgY29tcGF0aWJsZSB3aXRoIEhTSTJDIGF2YWlsYWJsZQorCQkJCW9uIEV4eW5vczUyNTAgYW5kIEV4eW5vczU0MjAgU29Dcy4KKwktPiAic2Ftc3VuZyxleHlub3M1MjUwLWhzaTJjIiwgZm9yIGkyYyBjb21wYXRpYmxlIHdpdGggSFNJMkMgYXZhaWxhYmxlCisJCQkJb24gRXh5bm9zNTI1MCBhbmQgRXh5bm9zNTQyMCBTb0NzLgorCS0+ICJzYW1zdW5nLGV4eW5vczUyNjAtaHNpMmMiLCBmb3IgaTJjIGNvbXBhdGlibGUgd2l0aCBIU0kyQyBhdmFpbGFibGUKKwkJCQlvbiBFeHlub3M1MjYwIFNvQ3MuCisJLT4gInNhbXN1bmcsZXh5bm9zNy1oc2kyYyIsIGZvciBpMmMgY29tcGF0aWJsZSB3aXRoIEhTSTJDIGF2YWlsYWJsZQorCQkJCW9uIEV4eW5vczcgU29Dcy4KKworICAtIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICAgIHJlZ2lvbi4KKyAgLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgbnVtYmVyIHRvIHRoZSBjcHUuCisgIC0gI2FkZHJlc3MtY2VsbHM6IGFsd2F5cyAxIChmb3IgaTJjIGFkZHJlc3NlcykKKyAgLSAjc2l6ZS1jZWxsczogYWx3YXlzIDAKKworICAtIFBpbmN0cmw6CisgICAgLSBwaW5jdHJsLTA6IFBpbiBjb250cm9sIGdyb3VwIHRvIGJlIHVzZWQgZm9yIHRoaXMgY29udHJvbGxlci4KKyAgICAtIHBpbmN0cmwtbmFtZXM6IFNob3VsZCBjb250YWluIG9ubHkgb25lIHZhbHVlIC0gImRlZmF1bHQiLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIGNsb2NrLWZyZXF1ZW5jeTogRGVzaXJlZCBvcGVyYXRpbmcgZnJlcXVlbmN5IGluIEh6IG9mIHRoZSBidXMuCisgICAgLT4gSWYgbm90IHNwZWNpZmllZCwgdGhlIGJ1cyBvcGVyYXRlcyBpbiBmYXN0LXNwZWVkIG1vZGUgYXQKKyAgICAgICBhdCAxMDBraHouCisgICAgLT4gSWYgc3BlY2lmaWVkLCB0aGUgYnVzIG9wZXJhdGVzIGluIGhpZ2gtc3BlZWQgbW9kZSBvbmx5IGlmIHRoZQorICAgICAgIGNsb2NrLWZyZXF1ZW5jeSBpcyA+PSAxTWh6LgorCitFeGFtcGxlOgorCitoc2kyY0AxMmNhMDAwMCB7CisJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczUyNTAtaHNpMmMiOworCXJlZyA9IDwweDEyY2EwMDAwIDB4MTAwPjsKKwlpbnRlcnJ1cHRzID0gPDU2PjsKKwljbG9jay1mcmVxdWVuY3kgPSA8MTAwMDAwPjsKKworCXBpbmN0cmwtMCA9IDwmaTJjNF9idXM+OworCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKworCXMybXBzMTFfcG1pY0A2NiB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxzMm1wczExLXBtaWMiOworCQlyZWcgPSA8MHg2Nj47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1ncGlvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLWdwaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmOGVjOTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1ncGlvLnR4dApAQCAtMCwwICsxLDMyIEBACitEZXZpY2UtVHJlZSBiaW5kaW5ncyBmb3IgaTJjIGdwaW8gZHJpdmVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisJLSBjb21wYXRpYmxlID0gImkyYy1ncGlvIjsKKwktIGdwaW9zOiBzZGEgYW5kIHNjbCBncGlvCisKKworT3B0aW9uYWwgcHJvcGVydGllczoKKwktIGkyYy1ncGlvLHNkYS1vcGVuLWRyYWluOiBzZGEgYXMgb3BlbiBkcmFpbgorCS0gaTJjLWdwaW8sc2NsLW9wZW4tZHJhaW46IHNjbCBhcyBvcGVuIGRyYWluCisJLSBpMmMtZ3BpbyxzY2wtb3V0cHV0LW9ubHk6IHNjbCBhcyBvdXRwdXQgb25seQorCS0gaTJjLWdwaW8sZGVsYXktdXM6IGRlbGF5IGJldHdlZW4gR1BJTyBvcGVyYXRpb25zIChtYXkgZGVwZW5kIG9uIGVhY2ggcGxhdGZvcm0pCisJLSBpMmMtZ3Bpbyx0aW1lb3V0LW1zOiB0aW1lb3V0IHRvIGdldCBkYXRhCisKK0V4YW1wbGUgbm9kZXM6CisKK2kyY0AwIHsKKwljb21wYXRpYmxlID0gImkyYy1ncGlvIjsKKwlncGlvcyA9IDwmcGlvQSAyMyAwIC8qIHNkYSAqLworCQkgJnBpb0EgMjQgMCAvKiBzY2wgKi8KKwkJPjsKKwlpMmMtZ3BpbyxzZGEtb3Blbi1kcmFpbjsKKwlpMmMtZ3BpbyxzY2wtb3Blbi1kcmFpbjsKKwlpMmMtZ3BpbyxkZWxheS11cyA9IDwyPjsJLyogfjEwMCBrSHogKi8KKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKworCXJ2MzAyOWMyQDU2IHsKKwkJY29tcGF0aWJsZSA9ICJydjMwMjljMiI7CisJCXJlZyA9IDwweDU2PjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLWhpeDVoZDIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtaGl4NWhkMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk4YjM3NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLWhpeDVoZDIudHh0CkBAIC0wLDAgKzEsMjQgQEAKK0kyQyBmb3IgSGlzaWxpY29uIGhpeDVoZDIgY2hpcHNldCBwbGF0Zm9ybQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBNdXN0IGJlICJoaXNpbGljb24saGl4NWhkMi1pMmMiCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICAgICByZWdpb24uCistIGludGVycnVwdHM6IGludGVycnVwdCBudW1iZXIgdG8gdGhlIGNwdS4KKy0gI2FkZHJlc3MtY2VsbHMgPSA8MT47CistICNzaXplLWNlbGxzID0gPDA+OworLSBjbG9ja3M6IHBoYW5kbGVzIHRvIGlucHV0IGNsb2Nrcy4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gY2xvY2stZnJlcXVlbmN5OiBEZXNpcmVkIEkyQyBidXMgZnJlcXVlbmN5IGluIEh6LCBvdGhlcndpc2UgZGVmYXVsdHMgdG8gMTAwMDAwCistIENoaWxkIG5vZGVzIGNvbmZvcm1pbmcgdG8gaTJjIGJ1cyBiaW5kaW5nCisKK0V4YW1wbGVzOgorSTJDMEBmOGIxMDAwMCB7CisJY29tcGF0aWJsZSA9ICJoaXNpbGljb24saGl4NWhkMi1pMmMiOworCXJlZyA9IDwweGY4YjEwMDAwIDB4MTAwMD47CisJaW50ZXJydXB0cyA9IDwwIDM4IDQ+OworCWNsb2NrcyA9IDwmY2xvY2sgSElYNUhEMl9JMkMwX1JTVD47CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47Cit9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1pbWctc2NiLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLWltZy1zY2IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2NDYxNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1pbWctc2NiLnR4dApAQCAtMCwwICsxLDI2IEBACitJTUcgU2VyaWFsIENvbnRyb2wgQnVzIChTQ0IpIEkyQyBDb250cm9sbGVyCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJpbWcsc2NiLWkyYyIKKy0gcmVnOiBQaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiBjb250cm9sbGVyIHJlZ2lzdGVycworLSBpbnRlcnJ1cHRzOiBJbnRlcnJ1cHQgbnVtYmVyIHVzZWQgYnkgdGhlIGNvbnRyb2xsZXIKKy0gY2xvY2tzIDogU2hvdWxkIGNvbnRhaW4gYSBjbG9jayBzcGVjaWZpZXIgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMKKy0gY2xvY2stbmFtZXMgOiBTaG91bGQgY29udGFpbiB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgICAgICAgICAgICAgICAgInNjYiIsIGZvciB0aGUgU0NCIGNvcmUgY2xvY2suCisgICAgICAgICAgICAgICAgInN5cyIsIGZvciB0aGUgc3lzdGVtIGNsb2NrLgorLSBjbG9jay1mcmVxdWVuY3k6IFRoZSBJMkMgYnVzIGZyZXF1ZW5jeSBpbiBIegorLSAjYWRkcmVzcy1jZWxsczogU2hvdWxkIGJlIDwxPgorLSAjc2l6ZS1jZWxsczogU2hvdWxkIGJlIDwwPgorCitFeGFtcGxlOgorCitpMmNAMTgxMDAwMDAgeworCWNvbXBhdGlibGUgPSAiaW1nLHNjYi1pMmMiOworCXJlZyA9IDwweDE4MTAwMDAwIDB4MjAwPjsKKwlpbnRlcnJ1cHRzID0gPEdJQ19TSEFSRUQgMiBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwljbG9ja3MgPSA8JmkyYzBfY2xrPiwgPCZzeXN0ZW1fY2xrPjsKKwljbG9jay1uYW1lcyA9ICJzY2IiLCAic3lzIjsKKwljbG9jay1mcmVxdWVuY3kgPSA8NDAwMDAwPjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1pbXgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtaW14LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWI1ODM2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtaW14LnR4dApAQCAtMCwwICsxLDQ5IEBACisqIEZyZWVzY2FsZSBJbnRlciBJQyAoSTJDKSBhbmQgSGlnaCBTcGVlZCBJbnRlciBJQyAoSFMtSTJDKSBmb3IgaS5NWAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDoKKyAgLSAiZnNsLGlteDEtaTJjIiBmb3IgSTJDIGNvbXBhdGlibGUgd2l0aCB0aGUgb25lIGludGVncmF0ZWQgb24gaS5NWDEgU29DCisgIC0gImZzbCxpbXgyMS1pMmMiIGZvciBJMkMgY29tcGF0aWJsZSB3aXRoIHRoZSBvbmUgaW50ZWdyYXRlZCBvbiBpLk1YMjEgU29DCisgIC0gImZzbCx2ZjYxMC1pMmMiIGZvciBJMkMgY29tcGF0aWJsZSB3aXRoIHRoZSBvbmUgaW50ZWdyYXRlZCBvbiBWeWJyaWQgdmY2MTAgU29DCistIHJlZyA6IFNob3VsZCBjb250YWluIEkyQy9IUy1JMkMgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKy0gaW50ZXJydXB0cyA6IFNob3VsZCBjb250YWluIEkyQy9IUy1JMkMgaW50ZXJydXB0CistIGNsb2NrcyA6IFNob3VsZCBjb250YWluIHRoZSBJMkMvSFMtSTJDIGNsb2NrIHNwZWNpZmllcgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjbG9jay1mcmVxdWVuY3kgOiBDb25zdGFpbnMgZGVzaXJlZCBJMkMvSFMtSTJDIGJ1cyBjbG9jayBmcmVxdWVuY3kgaW4gSHouCisgIFRoZSBhYnNlbmNlIG9mIHRoZSBwcm9wb2VydHkgaW5kaWNhdGVzIHRoZSBkZWZhdWx0IGZyZXF1ZW5jeSAxMDAga0h6LgorLSBkbWFzOiBBIGxpc3Qgb2YgdHdvIGRtYSBzcGVjaWZpZXJzLCBvbmUgZm9yIGVhY2ggZW50cnkgaW4gZG1hLW5hbWVzLgorLSBkbWEtbmFtZXM6IHNob3VsZCBjb250YWluICJ0eCIgYW5kICJyeCIuCistIHNjbC1ncGlvczogc3BlY2lmeSB0aGUgZ3BpbyByZWxhdGVkIHRvIFNDTCBwaW4KKy0gc2RhLWdwaW9zOiBzcGVjaWZ5IHRoZSBncGlvIHJlbGF0ZWQgdG8gU0RBIHBpbgorLSBwaW5jdHJsOiBhZGQgZXh0cmEgcGluY3RybCB0byBjb25maWd1cmUgaTJjIHBpbnMgdG8gZ3BpbyBmdW5jdGlvbiBmb3IgaTJjCisgIGJ1cyByZWNvdmVyeSwgY2FsbCBpdCAiZ3BpbyIgc3RhdGUKKworRXhhbXBsZXM6CisKK2kyY0A4M2ZjNDAwMCB7IC8qIEkyQzIgb24gaS5NWDUxICovCisJY29tcGF0aWJsZSA9ICJmc2wsaW14NTEtaTJjIiwgImZzbCxpbXgyMS1pMmMiOworCXJlZyA9IDwweDgzZmM0MDAwIDB4NDAwMD47CisJaW50ZXJydXB0cyA9IDw2Mz47Cit9OworCitpMmNANzAwMzgwMDAgeyAvKiBIUy1JMkMgb24gaS5NWDUxICovCisJY29tcGF0aWJsZSA9ICJmc2wsaW14NTEtaTJjIiwgImZzbCxpbXgyMS1pMmMiOworCXJlZyA9IDwweDcwMDM4MDAwIDB4NDAwMD47CisJaW50ZXJydXB0cyA9IDw2ND47CisJY2xvY2stZnJlcXVlbmN5ID0gPDQwMDAwMD47Cit9OworCitpMmMwOiBpMmNANDAwNjYwMDAgeyAvKiBpMmMwIG9uIHZmNjEwICovCisJY29tcGF0aWJsZSA9ICJmc2wsdmY2MTAtaTJjIjsKKwlyZWcgPSA8MHg0MDA2NjAwMCAweDEwMDA+OworCWludGVycnVwdHMgPTwwIDcxIDB4MDQ+OworCWRtYXMgPSA8JmVkbWEwIDAgNTA+LAorCQk8JmVkbWEwIDAgNTE+OworCWRtYS1uYW1lcyA9ICJyeCIsInR4IjsKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiLCAiZ3BpbyI7CisJcGluY3RybC0wID0gPCZwaW5jdHJsX2kyYzE+OworCXBpbmN0cmwtMSA9IDwmcGluY3RybF9pMmMxX2dwaW8+OworCXNjbC1ncGlvcyA9IDwmZ3BpbzUgMjYgR1BJT19BQ1RJVkVfSElHSD47CisJc2RhLWdwaW9zID0gPCZncGlvNSAyNyBHUElPX0FDVElWRV9ISUdIPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1qejQ3ODAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtano0NzgwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzFlNGNjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtano0NzgwLnR4dApAQCAtMCwwICsxLDM1IEBACisqIEluZ2VuaWMgSlo0NzgwIEkyQyBCdXMgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImluZ2VuaWMsano0NzgwLWkyYyIKKy0gcmVnOiBTaG91bGQgY29udGFpbiB0aGUgYWRkcmVzcyAmIHNpemUgb2YgdGhlIEkyQyBjb250cm9sbGVyIHJlZ2lzdGVycy4KKy0gaW50ZXJydXB0czogU2hvdWxkIHNwZWNpZnkgdGhlIGludGVycnVwdCBwcm92aWRlZCBieSBwYXJlbnQuCistIGNsb2NrczogU2hvdWxkIGNvbnRhaW4gYSBzaW5nbGUgY2xvY2sgc3BlY2lmaWVyIGZvciB0aGUgSlo0NzgwIEkyQyBjbG9jay4KKy0gY2xvY2stZnJlcXVlbmN5OiBkZXNpcmVkIEkyQyBidXMgY2xvY2sgZnJlcXVlbmN5IGluIEh6LgorCitSZWNvbW1lbmRlZCBwcm9wZXJ0aWVzOgorLSBwaW5jdHJsLW5hbWVzOiBzaG91bGQgYmUgImRlZmF1bHQiOworLSBwaW5jdHJsLTA6IHBoYW5kbGUgdG8gcGluY3RybCBmdW5jdGlvbgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBpbnRlcnJ1cHQtcGFyZW50OiBTaG91bGQgYmUgdGhlIHBoYW5kbGUgb2YgdGhlIGludGVycnVwdCBjb250cm9sbGVyIHRoYXQKKyAgZGVsaXZlcnMgaW50ZXJydXB0cyB0byB0aGUgSTJDIGJsb2NrLgorCitFeGFtcGxlCisKKy8geworCWkyYzQ6IGkyYzRAMHgxMDA1NDAwMCB7CisJCWNvbXBhdGlibGUgPSAiaW5nZW5pYyxqejQ3ODAtaTJjIjsKKwkJcmVnID0gPDB4MTAwNTQwMDAgMHgxMDAwPjsKKworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpbnRjPjsKKwkJaW50ZXJydXB0cyA9IDw1Nj47CisKKwkJY2xvY2tzID0gPCZjZ3UgSlo0NzgwX0NMS19TTUI0PjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDEwMDAwMD47CisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmcGluc19pMmM0X2RhdGE+OworCisJfTsKK307CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLWxwYzJrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLWxwYzJrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTAxYWE2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtbHBjMmsudHh0CkBAIC0wLDAgKzEsMzMgQEAKK05YUCBJMkMgY29udHJvbGxlciBmb3IgTFBDMnh4eC8xNzh4LzE4eHgvNDN4eAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZTogbXVzdCBiZSAibnhwLGxwYzE3ODgtaTJjIgorIC0gcmVnOiBwaHlzaWNhbCBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGRldmljZSByZWdpc3RlcnMKKyAtIGludGVycnVwdHM6IGEgc2luZ2xlIGludGVycnVwdCBzcGVjaWZpZXIKKyAtIGNsb2NrczogY2xvY2sgZm9yIHRoZSBkZXZpY2UKKyAtICNhZGRyZXNzLWNlbGxzOiBzaG91bGQgYmUgPDE+CisgLSAjc2l6ZS1jZWxsczogc2hvdWxkIGJlIDwwPgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjbG9jay1mcmVxdWVuY3k6IHRoZSBkZXNpcmVkIEkyQyBidXMgY2xvY2sgZnJlcXVlbmN5IGluIEh6OyBpbgorICBhYnNlbmNlIG9mIHRoaXMgcHJvcGVydHkgdGhlIGRlZmF1bHQgdmFsdWUgaXMgdXNlZCAoMTAwIGtIeikuCisKK0V4YW1wbGU6CitpMmMwOiBpMmNANDAwYTEwMDAgeworCWNvbXBhdGlibGUgPSAibnhwLGxwYzE3ODgtaTJjIjsKKwlyZWcgPSA8MHg0MDBhMTAwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8MTg+OworCWNsb2NrcyA9IDwmY2N1MSBDTEtfQVBCMV9JMkMwPjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKK307CisKKyZpMmMwIHsKKwljbG9jay1mcmVxdWVuY3kgPSA8NDAwMDAwPjsKKworCWxtNzVANDggeworCQljb21wYXRpYmxlID0gIm54cCxsbTc1IjsKKwkJcmVnID0gPDB4NDg+OworCX07Cit9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1tZXNvbi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1tZXNvbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgyZjlhNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLW1lc29uLnR4dApAQCAtMCwwICsxLDI0IEBACitBbWxvZ2ljIE1lc29uIEkyQyBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiBtdXN0IGJlICJhbWxvZ2ljLG1lc29uNi1pMmMiCisgLSByZWc6IHBoeXNpY2FsIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgZGV2aWNlIHJlZ2lzdGVycworIC0gaW50ZXJydXB0czogYSBzaW5nbGUgaW50ZXJydXB0IHNwZWNpZmllcgorIC0gY2xvY2tzOiBjbG9jayBmb3IgdGhlIGRldmljZQorIC0gI2FkZHJlc3MtY2VsbHM6IHNob3VsZCBiZSA8MT4KKyAtICNzaXplLWNlbGxzOiBzaG91bGQgYmUgPDA+CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrLWZyZXF1ZW5jeTogdGhlIGRlc2lyZWQgSTJDIGJ1cyBjbG9jayBmcmVxdWVuY3kgaW4gSHo7IGluCisgIGFic2VuY2Ugb2YgdGhpcyBwcm9wZXJ0eSB0aGUgZGVmYXVsdCB2YWx1ZSBpcyB1c2VkICgxMDAga0h6KS4KKworRXhhbXBsZXM6CisKKwlpMmNAYzgxMDA1MDAgeworCQljb21wYXRpYmxlID0gImFtbG9naWMsbWVzb242LWkyYyI7CisJCXJlZyA9IDwweGM4MTAwNTAwIDB4MjA+OworCQlpbnRlcnJ1cHRzID0gPDAgOTIgMT47CisJCWNsb2NrcyA9IDwmY2xrODE+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLW1wYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1tcGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlYWNkNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1tcGMudHh0CkBAIC0wLDAgKzEsNjQgQEAKKyogSTJDCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgOgorCisgLSByZWcgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCisgLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJmc2wsQ0hJUC1pMmMiIHdoZXJlIENISVAgaXMgdGhlIG5hbWUgb2YgYQorICAgY29tcGF0aWJsZSBwcm9jZXNzb3IsIGUuZy4gbXBjODMxMywgbXBjODU0MywgbXBjODU0NCwgbXBjNTEyMSwKKyAgIG1wYzUyMDAgb3IgbXBjNTIwMGIuIEZvciB0aGUgbXBjNTEyMSwgYW4gYWRkaXRpb25hbCBub2RlCisgICAiZnNsLG1wYzUxMjEtaTJjLWN0cmwiIGlzIHJlcXVpcmVkIGFzIHNob3duIGluIHRoZSBleGFtcGxlIGJlbG93LgorCitSZWNvbW1lbmRlZCBwcm9wZXJ0aWVzIDoKKworIC0gaW50ZXJydXB0cyA6IDxhIGI+IHdoZXJlIGEgaXMgdGhlIGludGVycnVwdCBudW1iZXIgYW5kIGIgaXMgYQorICAgZmllbGQgdGhhdCByZXByZXNlbnRzIGFuIGVuY29kaW5nIG9mIHRoZSBzZW5zZSBhbmQgbGV2ZWwKKyAgIGluZm9ybWF0aW9uIGZvciB0aGUgaW50ZXJydXB0LiAgVGhpcyBzaG91bGQgYmUgZW5jb2RlZCBiYXNlZCBvbgorICAgdGhlIGluZm9ybWF0aW9uIGluIHNlY3Rpb24gMikgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIGludGVycnVwdAorICAgY29udHJvbGxlciB5b3UgaGF2ZS4KKyAtIGludGVycnVwdC1wYXJlbnQgOiB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyIHRoYXQKKyAgIHNlcnZpY2VzIGludGVycnVwdHMgZm9yIHRoaXMgZGV2aWNlLgorIC0gZnNsLHByZXNlcnZlLWNsb2NraW5nIDogYm9vbGVhbjsgaWYgZGVmaW5lZCwgdGhlIGNsb2NrIHNldHRpbmdzCisgICBmcm9tIHRoZSBib290bG9hZGVyIGFyZSBwcmVzZXJ2ZWQgKG5vdCB0b3VjaGVkKS4KKyAtIGNsb2NrLWZyZXF1ZW5jeSA6IGRlc2lyZWQgSTJDIGJ1cyBjbG9jayBmcmVxdWVuY3kgaW4gSHouCisgLSBmc2wsdGltZW91dCA6IEkyQyBidXMgdGltZW91dCBpbiBtaWNyb3NlY29uZHMuCisKK0V4YW1wbGVzIDoKKworCS8qIE1QQzUxMjEgYmFzZWQgYm9hcmQgKi8KKwlpMmNAMTc0MCB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJmc2wsbXBjNTEyMS1pMmMiLCAiZnNsLWkyYyI7CisJCXJlZyA9IDwweDE3NDAgMHgyMD47CisJCWludGVycnVwdHMgPSA8MTEgMHg4PjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmaXBpYz47CisJCWNsb2NrLWZyZXF1ZW5jeSA9IDwxMDAwMDA+OworCX07CisKKwlpMmNjb250cm9sQDE3NjAgeworCQljb21wYXRpYmxlID0gImZzbCxtcGM1MTIxLWkyYy1jdHJsIjsKKwkJcmVnID0gPDB4MTc2MCAweDg+OworCX07CisKKwkvKiBNUEM1MjAwQiBiYXNlZCBib2FyZCAqLworCWkyY0AzZDAwIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQljb21wYXRpYmxlID0gImZzbCxtcGM1MjAwYi1pMmMiLCJmc2wsbXBjNTIwMC1pMmMiLCJmc2wtaTJjIjsKKwkJcmVnID0gPDB4M2QwMCAweDQwPjsKKwkJaW50ZXJydXB0cyA9IDwyIDE1IDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZtcGM1MjAwX3BpYz47CisJCWZzbCxwcmVzZXJ2ZS1jbG9ja2luZzsKKwl9OworCisJLyogTVBDODU0NCBiYXNlIGJvYXJkICovCisJaTJjQDMxMDAgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzg1NDQtaTJjIiwgImZzbC1pMmMiOworCQlyZWcgPSA8MHgzMTAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDw0MyAyPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmbXBpYz47CisJCWNsb2NrLWZyZXF1ZW5jeSA9IDw0MDAwMDA+OworCQlmc2wsdGltZW91dCA9IDwxMDAwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLW10NjU3Ny50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1tdDY1NzcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjZTZmYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1tdDY1NzcudHh0CkBAIC0wLDAgKzEsNDEgQEAKKyogTWVkaWF0ZWsncyBJMkMgY29udHJvbGxlcgorCitUaGUgTWVkaWF0ZWsncyBJMkMgY29udHJvbGxlciBpcyB1c2VkIHRvIGludGVyZmFjZSB3aXRoIEkyQyBkZXZpY2VzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6IHZhbHVlIHNob3VsZCBiZSBlaXRoZXIgb2YgdGhlIGZvbGxvd2luZy4KKyAgICAgIChhKSAibWVkaWF0ZWssbXQ2NTc3LWkyYyIsIGZvciBpMmMgY29tcGF0aWJsZSB3aXRoIG10NjU3NyBpMmMuCisgICAgICAoYikgIm1lZGlhdGVrLG10NjU4OS1pMmMiLCBmb3IgaTJjIGNvbXBhdGlibGUgd2l0aCBtdDY1ODkgaTJjLgorICAgICAgKGMpICJtZWRpYXRlayxtdDgxMjctaTJjIiwgZm9yIGkyYyBjb21wYXRpYmxlIHdpdGggbXQ4MTI3IGkyYy4KKyAgICAgIChkKSAibWVkaWF0ZWssbXQ4MTM1LWkyYyIsIGZvciBpMmMgY29tcGF0aWJsZSB3aXRoIG10ODEzNSBpMmMuCisgICAgICAoZSkgIm1lZGlhdGVrLG10ODE3My1pMmMiLCBmb3IgaTJjIGNvbXBhdGlibGUgd2l0aCBtdDgxNzMgaTJjLgorICAtIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBkbWEgYmFzZSwgbGVuZ3RoIG9mIG1lbW9yeQorICAgIG1hcHBlZCByZWdpb24uCisgIC0gaW50ZXJydXB0czogaW50ZXJydXB0IG51bWJlciB0byB0aGUgY3B1LgorICAtIGNsb2NrLWRpdjogdGhlIGZpeGVkIHZhbHVlIGZvciBmcmVxdWVuY3kgZGl2aWRlciBvZiBjbG9jayBzb3VyY2UgaW4gaTJjCisgICAgbW9kdWxlLiBFYWNoIElDIG1heSBiZSBkaWZmZXJlbnQuCisgIC0gY2xvY2tzOiBjbG9jayBuYW1lIGZyb20gY2xvY2sgbWFuYWdlcgorICAtIGNsb2NrLW5hbWVzOiBNdXN0IGluY2x1ZGUgIm1haW4iIGFuZCAiZG1hIiwgaWYgZW5hYmxlIGhhdmUtcG1pYyBuZWVkIGluY2x1ZGUKKyAgICAicG1pYyIgZXh0cmEuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgIC0gY2xvY2stZnJlcXVlbmN5OiBGcmVxdWVuY3kgaW4gSHogb2YgdGhlIGJ1cyB3aGVuIHRyYW5zZmVyLCB0aGUgZGVmYXVsdCB2YWx1ZQorICAgIGlzIDEwMDAwMC4KKyAgLSBtZWRpYXRlayxoYXZlLXBtaWM6IHBsYXRmb3JtIGNhbiBjb250cm9sIGkyYyBmb3JtIHNwZWNpYWwgcG1pYyBzaWRlLgorICAgIE9ubHkgbXQ2NTg5IGFuZCBtdDgxMzUgc3VwcG9ydCB0aGlzIGZlYXR1cmUuCisgIC0gbWVkaWF0ZWssdXNlLXB1c2gtcHVsbDogSU8gY29uZmlnIHVzZSBwdXNoLXB1bGwgbW9kZS4KKworRXhhbXBsZToKKworCWkyYzA6IGkyY0AxMTAwZDAwMCB7CisJCQljb21wYXRpYmxlID0gIm1lZGlhdGVrLG10NjU3Ny1pMmMiOworCQkJcmVnID0gPDB4MTEwMGQwMDAgMHg3MD4sCisJCQkgICAgICA8MHgxMTAwMDMwMCAweDgwPjsKKwkJCWludGVycnVwdHMgPSA8R0lDX1NQSSA0NCBJUlFfVFlQRV9MRVZFTF9MT1c+OworCQkJY2xvY2stZnJlcXVlbmN5ID0gPDQwMDAwMD47CisJCQltZWRpYXRlayxoYXZlLXBtaWM7CisJCQljbG9jay1kaXYgPSA8MTY+OworCQkJY2xvY2tzID0gPCZpMmMwX2NrPiwgPCZhcF9kbWFfY2s+OworCQkJY2xvY2stbmFtZXMgPSAibWFpbiIsICJkbWEiOworCX07CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLW11eC1ncGlvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLW11eC1ncGlvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjcwOWE4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtbXV4LWdwaW8udHh0CkBAIC0wLDAgKzEsODEgQEAKK0dQSU8tYmFzZWQgSTJDIEJ1cyBNdXgKKworVGhpcyBiaW5kaW5nIGRlc2NyaWJlcyBhbiBJMkMgYnVzIG11bHRpcGxleGVyIHRoYXQgdXNlcyBHUElPcyB0bworcm91dGUgdGhlIEkyQyBzaWduYWxzLgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tKyAgKy0tLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGV2IHwgIHwgZGV2IHwKKyAgICArLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICArLS0tLS0rICArLS0tLS0rCisgICAgfCBTb0MgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgfAorICAgIHwgICAgICAgICAgICB8ICAgICAgICAgIC8tLS0tLS0tLSstLS0tLS0tLSsKKyAgICB8ICAgKy0tLS0tLSsgfCAgKy0tLS0tLSsgICAgY2hpbGQgYnVzIEEsIG9uIEdQSU8gdmFsdWUgc2V0IHRvIDAKKyAgICB8ICAgfCBJMkMgIHwtfC0tfCBNdXggIHwKKyAgICB8ICAgKy0tLS0tLSsgfCAgKy0tKy0tLSsgICAgY2hpbGQgYnVzIEIsIG9uIEdQSU8gdmFsdWUgc2V0IHRvIDEKKyAgICB8ICAgICAgICAgICAgfCAgICAgfCAgICBcLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSsKKyAgICB8ICAgKy0tLS0tLSsgfCAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgIHwKKyAgICB8ICAgfCBHUElPIHwtfC0tLS0tKyAgICAgICAgICAgICstLS0tLSsgICstLS0tLSsgICstLS0tLSsKKyAgICB8ICAgKy0tLS0tLSsgfCAgICAgICAgICAgICAgICAgIHwgZGV2IHwgIHwgZGV2IHwgIHwgZGV2IHwKKyAgICArLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICstLS0tLSsgICstLS0tLSsgICstLS0tLSsKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogaTJjLW11eC1ncGlvCistIGkyYy1wYXJlbnQ6IFRoZSBwaGFuZGxlIG9mIHRoZSBJMkMgYnVzIHRoYXQgdGhpcyBtdWx0aXBsZXhlcidzIG1hc3Rlci1zaWRlCisgIHBvcnQgaXMgY29ubmVjdGVkIHRvLgorLSBtdXgtZ3Bpb3M6IGxpc3Qgb2YgZ3Bpb3MgdXNlZCB0byBjb250cm9sIHRoZSBtdXhlcgorKiBTdGFuZGFyZCBJMkMgbXV4IHByb3BlcnRpZXMuIFNlZSBtdXgudHh0IGluIHRoaXMgZGlyZWN0b3J5LgorKiBJMkMgY2hpbGQgYnVzIG5vZGVzLiBTZWUgbXV4LnR4dCBpbiB0aGlzIGRpcmVjdG9yeS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gaWRsZS1zdGF0ZTogdmFsdWUgdG8gc2V0IHRoZSBtdXhlciB0byB3aGVuIGlkbGUuIFdoZW4gbm8gdmFsdWUgaXMKKyAgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvIHRoZSBsYXN0IHZhbHVlIHVzZWQuCisKK0ZvciBlYWNoIGkyYyBjaGlsZCBub2RlLCBhbiBJMkMgY2hpbGQgYnVzIHdpbGwgYmUgY3JlYXRlZC4gVGhleSB3aWxsCitiZSBudW1iZXJlZCBiYXNlZCBvbiB0aGVpciBvcmRlciBpbiB0aGUgZGV2aWNlIHRyZWUuCisKK1doZW5ldmVyIGFuIGFjY2VzcyBpcyBtYWRlIHRvIGEgZGV2aWNlIG9uIGEgY2hpbGQgYnVzLCB0aGUgdmFsdWUgc2V0CitpbiB0aGUgcmV2ZWxhbnQgbm9kZSdzIHJlZyBwcm9wZXJ0eSB3aWxsIGJlIG91dHB1dCB1c2luZyB0aGUgbGlzdCBvZgorR1BJT3MsIHRoZSBmaXJzdCBpbiB0aGUgbGlzdCBob2xkaW5nIHRoZSBsZWFzdC1zaWduaWZpY2FudCB2YWx1ZS4KKworSWYgYW4gaWRsZSBzdGF0ZSBpcyBkZWZpbmVkLCB1c2luZyB0aGUgaWRsZS1zdGF0ZSAob3B0aW9uYWwpIHByb3BlcnR5LAord2hlbmV2ZXIgYW4gYWNjZXNzIGlzIG5vdCBiZWluZyBtYWRlIHRvIGEgZGV2aWNlIG9uIGEgY2hpbGQgYnVzLCB0aGUKK0dQSU9zIHdpbGwgYmUgc2V0IGFjY29yZGluZyB0byB0aGUgaWRsZSB2YWx1ZS4KKworSWYgYW4gaWRsZSBzdGF0ZSBpcyBub3QgZGVmaW5lZCwgdGhlIG1vc3QgcmVjZW50bHkgdXNlZCB2YWx1ZSB3aWxsIGJlCitsZWZ0IHByb2dyYW1tZWQgaW50byBoYXJkd2FyZSB3aGVuZXZlciBubyBhY2Nlc3MgaXMgYmVpbmcgbWFkZSB0byBhCitkZXZpY2Ugb24gYSBjaGlsZCBidXMuCisKK0V4YW1wbGU6CisJaTJjbXV4IHsKKwkJY29tcGF0aWJsZSA9ICJpMmMtbXV4LWdwaW8iOworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJCW11eC1ncGlvcyA9IDwmZ3BpbzEgMjIgMCAmZ3BpbzEgMjMgMD47CisJCWkyYy1wYXJlbnQgPSA8JmkyYzE+OworCisJCWkyY0AxIHsKKwkJCXJlZyA9IDwxPjsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJCXNzZDEzMDc6IG9sZWRAM2MgeworCQkJCWNvbXBhdGlibGUgPSAic29sb21vbixzc2QxMzA3ZmItaTJjIjsKKwkJCQlyZWcgPSA8MHgzYz47CisJCQkJcHdtcyA9IDwmcHdtIDQgMzAwMD47CisJCQkJcmVzZXQtZ3Bpb3MgPSA8JmdwaW8yIDcgMT47CisJCQkJcmVzZXQtYWN0aXZlLWxvdzsKKwkJCX07CisJCX07CisKKwkJaTJjQDMgeworCQkJcmVnID0gPDM+OworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQkJcGNhOTU1NTogcGNhOTU1NUAyMCB7CisJCQkJY29tcGF0aWJsZSA9ICJueHAscGNhOTU1NSI7CisJCQkJZ3Bpby1jb250cm9sbGVyOworCQkJCSNncGlvLWNlbGxzID0gPDI+OworCQkJCXJlZyA9IDwweDIwPjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLW11eC1wY2E5NTR4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLW11eC1wY2E5NTR4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjUzZDVmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtbXV4LXBjYTk1NHgudHh0CkBAIC0wLDAgKzEsNTMgQEAKKyogTlhQIFBDQTk1NHggSTJDIGJ1cyBzd2l0Y2gKKworUmVxdWlyZWQgUHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGU6IE11c3QgY29udGFpbiBvbmUgb2YgdGhlIGZvbGxvd2luZy4KKyAgICAibnhwLHBjYTk1NDAiLCAibnhwLHBjYTk1NDIiLCAibnhwLHBjYTk1NDMiLCAibnhwLHBjYTk1NDQiLAorICAgICJueHAscGNhOTU0NSIsICJueHAscGNhOTU0NiIsICJueHAscGNhOTU0NyIsICJueHAscGNhOTU0OCIKKworICAtIHJlZzogVGhlIEkyQyBhZGRyZXNzIG9mIHRoZSBkZXZpY2UuCisKKyAgVGhlIGZvbGxvd2luZyByZXF1aXJlZCBwcm9wZXJ0aWVzIGFyZSBkZWZpbmVkIGV4dGVybmFsbHk6CisKKyAgLSBTdGFuZGFyZCBJMkMgbXV4IHByb3BlcnRpZXMuIFNlZSBpMmMtbXV4LnR4dCBpbiB0aGlzIGRpcmVjdG9yeS4KKyAgLSBJMkMgY2hpbGQgYnVzIG5vZGVzLiBTZWUgaTJjLW11eC50eHQgaW4gdGhpcyBkaXJlY3RvcnkuCisKK09wdGlvbmFsIFByb3BlcnRpZXM6CisKKyAgLSByZXNldC1ncGlvczogUmVmZXJlbmNlIHRvIHRoZSBHUElPIGNvbm5lY3RlZCB0byB0aGUgcmVzZXQgaW5wdXQuCisgIC0gaTJjLW11eC1pZGxlLWRpc2Nvbm5lY3Q6IEJvb2xlYW47IGlmIGRlZmluZWQsIGZvcmNlcyBtdXggdG8gZGlzY29ubmVjdCBhbGwKKyAgICBjaGlsZHJlbiBpbiBpZGxlIHN0YXRlLiBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgZXhhbXBsZSwgaWYgdGhlcmUgYXJlIHNldmVyYWwKKyAgICBtdWx0aXBsZXhlcnMgb24gdGhlIGJ1cyBhbmQgdGhlIGRldmljZXMgYmVoaW5kIHRoZW0gdXNlIHNhbWUgSTJDIGFkZHJlc3Nlcy4KKworCitFeGFtcGxlOgorCisJaTJjLXN3aXRjaEA3NCB7CisJCWNvbXBhdGlibGUgPSAibnhwLHBjYTk1NDgiOworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJCXJlZyA9IDwweDc0PjsKKworCQlpMmNAMiB7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCQkJcmVnID0gPDI+OworCisJCQllZXByb21ANTQgeworCQkJCWNvbXBhdGlibGUgPSAiYXQsMjRjMDgiOworCQkJCXJlZyA9IDwweDU0PjsKKwkJCX07CisJCX07CisKKwkJaTJjQDQgeworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJCXJlZyA9IDw0PjsKKworCQkJcnRjQDUxIHsKKwkJCQljb21wYXRpYmxlID0gIm54cCxwY2Y4NTYzIjsKKwkJCQlyZWcgPSA8MHg1MT47CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1tdXgtcGluY3RybC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1tdXgtcGluY3RybC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU4YWYxNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLW11eC1waW5jdHJsLnR4dApAQCAtMCwwICsxLDkzIEBACitQaW5jdHJsLWJhc2VkIEkyQyBCdXMgTXV4CisKK1RoaXMgYmluZGluZyBkZXNjcmliZXMgYW4gSTJDIGJ1cyBtdWx0aXBsZXhlciB0aGF0IHVzZXMgcGluIG11bHRpcGxleGluZyB0bworcm91dGUgdGhlIEkyQyBzaWduYWxzLCBhbmQgcmVwcmVzZW50cyB0aGUgcGluIG11bHRpcGxleGluZyBjb25maWd1cmF0aW9uCit1c2luZyB0aGUgcGluY3RybCBkZXZpY2UgdHJlZSBiaW5kaW5ncy4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tKyAgKy0tLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZXYgfCAgfCBkZXYgfAorICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgKy0tLS0tKyAgKy0tLS0tKworICAgIHwgU29DICAgICAgICAgICAgICAgICAgICB8ICAgICAgfCAgICAgICAgfAorICAgIHwgICAgICAgICAgICAgICAgICAgLy0tLS18LS0tLS0tKy0tLS0tLS0tKworICAgIHwgICArLS0tKyAgICstLS0tLS0rICAgICB8IGNoaWxkIGJ1cyBBLCBvbiBmaXJzdCBzZXQgb2YgcGlucworICAgIHwgICB8STJDfC0tLXxQaW5tdXh8ICAgICB8CisgICAgfCAgICstLS0rICAgKy0tLS0tLSsgICAgIHwgY2hpbGQgYnVzIEIsIG9uIHNlY29uZCBzZXQgb2YgcGlucworICAgIHwgICAgICAgICAgICAgICAgICAgXC0tLS18LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKworICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgfCAgICAgICAgfCAgICAgICAgfAorICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICArLS0tLS0rICArLS0tLS0rICArLS0tLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGV2IHwgIHwgZGV2IHwgIHwgZGV2IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tKyAgKy0tLS0tKyAgKy0tLS0tKworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBpMmMtbXV4LXBpbmN0cmwKKy0gaTJjLXBhcmVudDogVGhlIHBoYW5kbGUgb2YgdGhlIEkyQyBidXMgdGhhdCB0aGlzIG11bHRpcGxleGVyJ3MgbWFzdGVyLXNpZGUKKyAgcG9ydCBpcyBjb25uZWN0ZWQgdG8uCisKK0Fsc28gcmVxdWlyZWQgYXJlOgorCisqIFN0YW5kYXJkIHBpbmN0cmwgcHJvcGVydGllcyB0aGF0IHNwZWNpZnkgdGhlIHBpbiBtdXggc3RhdGUgZm9yIGVhY2ggY2hpbGQKKyAgYnVzLiBTZWUgLi4vcGluY3RybC9waW5jdHJsLWJpbmRpbmdzLnR4dC4KKworKiBTdGFuZGFyZCBJMkMgbXV4IHByb3BlcnRpZXMuIFNlZSBtdXgudHh0IGluIHRoaXMgZGlyZWN0b3J5LgorCisqIEkyQyBjaGlsZCBidXMgbm9kZXMuIFNlZSBtdXgudHh0IGluIHRoaXMgZGlyZWN0b3J5LgorCitGb3IgZWFjaCBuYW1lZCBzdGF0ZSBkZWZpbmVkIGluIHRoZSBwaW5jdHJsLW5hbWVzIHByb3BlcnR5LCBhbiBJMkMgY2hpbGQgYnVzCit3aWxsIGJlIGNyZWF0ZWQuIEkyQyBjaGlsZCBidXMgbnVtYmVycyBhcmUgYXNzaWduZWQgYmFzZWQgb24gdGhlIGluZGV4IGludG8KK3RoZSBwaW5jdHJsLW5hbWVzIHByb3BlcnR5LgorCitUaGUgb25seSBleGNlcHRpb24gaXMgdGhhdCBubyBidXMgd2lsbCBiZSBjcmVhdGVkIGZvciBhIHN0YXRlIG5hbWVkICJpZGxlIi4gSWYKK3N1Y2ggYSBzdGF0ZSBpcyBkZWZpbmVkLCBpdCBtdXN0IGJlIHRoZSBsYXN0IGVudHJ5IGluIHBpbmN0cmwtbmFtZXMuIEZvcgorZXhhbXBsZToKKworCXBpbmN0cmwtbmFtZXMgPSAiZGRjIiwgInB0YSIsICJpZGxlIiAgLT4gIGRkYyA9IGJ1cyAwLCBwdGEgPSBidXMgMQorCXBpbmN0cmwtbmFtZXMgPSAiZGRjIiwgImlkbGUiLCAicHRhIiAgLT4gIEludmFsaWQgKCJpZGxlIiBub3QgbGFzdCkKKwlwaW5jdHJsLW5hbWVzID0gImlkbGUiLCAiZGRjIiwgInB0YSIgIC0+ICBJbnZhbGlkICgiaWRsZSIgbm90IGxhc3QpCisKK1doZW5ldmVyIGFuIGFjY2VzcyBpcyBtYWRlIHRvIGEgZGV2aWNlIG9uIGEgY2hpbGQgYnVzLCB0aGUgcmVsZXZhbnQgcGluY3RybAorc3RhdGUgd2lsbCBiZSBwcm9ncmFtbWVkIGludG8gaGFyZHdhcmUuCisKK0lmIGFuIGlkbGUgc3RhdGUgaXMgZGVmaW5lZCwgd2hlbmV2ZXIgYW4gYWNjZXNzIGlzIG5vdCBiZWluZyBtYWRlIHRvIGEgZGV2aWNlCitvbiBhIGNoaWxkIGJ1cywgdGhlIGlkbGUgcGluY3RybCBzdGF0ZSB3aWxsIGJlIHByb2dyYW1tZWQgaW50byBoYXJkd2FyZS4KKworSWYgYW4gaWRsZSBzdGF0ZSBpcyBub3QgZGVmaW5lZCwgdGhlIG1vc3QgcmVjZW50bHkgdXNlZCBwaW5jdHJsIHN0YXRlIHdpbGwgYmUKK2xlZnQgcHJvZ3JhbW1lZCBpbnRvIGhhcmR3YXJlIHdoZW5ldmVyIG5vIGFjY2VzcyBpcyBiZWluZyBtYWRlIG9mIGEgZGV2aWNlIG9uCithIGNoaWxkIGJ1cy4KKworRXhhbXBsZToKKworCWkyY211eCB7CisJCWNvbXBhdGlibGUgPSAiaTJjLW11eC1waW5jdHJsIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCisJCWkyYy1wYXJlbnQgPSA8JmkyYzE+OworCisJCXBpbmN0cmwtbmFtZXMgPSAiZGRjIiwgInB0YSIsICJpZGxlIjsKKwkJcGluY3RybC0wID0gPCZzdGF0ZV9pMmNtdXhfZGRjPjsKKwkJcGluY3RybC0xID0gPCZzdGF0ZV9pMmNtdXhfcHRhPjsKKwkJcGluY3RybC0yID0gPCZzdGF0ZV9pMmNtdXhfaWRsZT47CisKKwkJaTJjQDAgeworCQkJcmVnID0gPDA+OworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQkJZWVwcm9tIHsKKwkJCQljb21wYXRpYmxlID0gImVlcHJvbSI7CisJCQkJcmVnID0gPDB4NTA+OworCQkJfTsKKwkJfTsKKworCQlpMmNAMSB7CisJCQlyZWcgPSA8MT47CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCisJCQllZXByb20geworCQkJCWNvbXBhdGlibGUgPSAiZWVwcm9tIjsKKwkJCQlyZWcgPSA8MHg1MD47CisJCQl9OworCQl9OworCX07CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLW11eC1yZWcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtbXV4LXJlZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg4NzgzZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLW11eC1yZWcudHh0CkBAIC0wLDAgKzEsNzQgQEAKK1JlZ2lzdGVyLWJhc2VkIEkyQyBCdXMgTXV4CisKK1RoaXMgYmluZGluZyBkZXNjcmliZXMgYW4gSTJDIGJ1cyBtdWx0aXBsZXhlciB0aGF0IHVzZXMgYSBzaW5nbGUgcmVnaXN0ZXIKK3RvIHJvdXRlIHRoZSBJMkMgc2lnbmFscy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogaTJjLW11eC1yZWcKKy0gaTJjLXBhcmVudDogVGhlIHBoYW5kbGUgb2YgdGhlIEkyQyBidXMgdGhhdCB0aGlzIG11bHRpcGxleGVyJ3MgbWFzdGVyLXNpZGUKKyAgcG9ydCBpcyBjb25uZWN0ZWQgdG8uCisqIFN0YW5kYXJkIEkyQyBtdXggcHJvcGVydGllcy4gU2VlIG11eC50eHQgaW4gdGhpcyBkaXJlY3RvcnkuCisqIEkyQyBjaGlsZCBidXMgbm9kZXMuIFNlZSBtdXgudHh0IGluIHRoaXMgZGlyZWN0b3J5LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSByZWc6IHRoaXMgcGFpciBvZiA8b2Zmc2V0IHNpemU+IHNwZWNpZmllcyB0aGUgcmVnaXN0ZXIgdG8gY29udHJvbCB0aGUgbXV4LgorICBUaGUgPG9mZnNldCBzaXplPiBkZXBlbmRzIG9uIGl0cyBwYXJlbnQgbm9kZS4gSXQgY2FuIGJlIGFueSBtZW1vcnktbWFwcGVkCisgIGFkZHJlc3MuIFRoZSBzaXplIG11c3QgYmUgZWl0aGVyIDEsIDIsIG9yIDQgYnl0ZXMuIElmIHJlZyBpcyBvbWl0dGVkLCB0aGUKKyAgcmVzb3VyY2Ugb2YgdGhpcyBkZXZpY2Ugd2lsbCBiZSB1c2VkLgorLSBsaXR0bGUtZW5kaWFuOiBUaGUgZXhpc3RlbmNlIGluZGljYXRlcyB0aGUgcmVnaXN0ZXIgaXMgaW4gbGl0dGxlIGVuZGlhbi4KKy0gYmlnLWVuZGlhbjogVGhlIGV4aXN0ZW5jZSBpbmRpY2F0ZXMgdGhlIHJlZ2lzdGVyIGlzIGluIGJpZyBlbmRpYW4uCisgIElmIGJvdGggbGl0dGxlLWVuZGlhbiBhbmQgYmlnLWVuZGlhbiBhcmUgb21pdHRlZCwgdGhlIGVuZGlhbm5lc3Mgb2YgdGhlCisgIENQVSB3aWxsIGJlIHVzZWQuCistIHdyaXRlLW9ubHk6IFRoZSBleGlzdGVuY2UgaW5kaWNhdGVzIHRoZSByZWdpc3RlciBpcyB3cml0ZS1vbmx5LgorLSBpZGxlLXN0YXRlOiB2YWx1ZSB0byBzZXQgdGhlIG11eGVyIHRvIHdoZW4gaWRsZS4gV2hlbiBubyB2YWx1ZSBpcworICBnaXZlbiwgaXQgZGVmYXVsdHMgdG8gdGhlIGxhc3QgdmFsdWUgdXNlZC4KKworV2hlbmV2ZXIgYW4gYWNjZXNzIGlzIG1hZGUgdG8gYSBkZXZpY2Ugb24gYSBjaGlsZCBidXMsIHRoZSB2YWx1ZSBzZXQKK2luIHRoZSByZXZlbGFudCBub2RlJ3MgcmVnIHByb3BlcnR5IHdpbGwgYmUgb3V0cHV0IHRvIHRoZSByZWdpc3Rlci4KKworSWYgYW4gaWRsZSBzdGF0ZSBpcyBkZWZpbmVkLCB1c2luZyB0aGUgaWRsZS1zdGF0ZSAob3B0aW9uYWwpIHByb3BlcnR5LAord2hlbmV2ZXIgYW4gYWNjZXNzIGlzIG5vdCBiZWluZyBtYWRlIHRvIGEgZGV2aWNlIG9uIGEgY2hpbGQgYnVzLCB0aGUKK3JlZ2lzdGVyIHdpbGwgYmUgc2V0IGFjY29yZGluZyB0byB0aGUgaWRsZSB2YWx1ZS4KKworSWYgYW4gaWRsZSBzdGF0ZSBpcyBub3QgZGVmaW5lZCwgdGhlIG1vc3QgcmVjZW50bHkgdXNlZCB2YWx1ZSB3aWxsIGJlCitsZWZ0IHByb2dyYW1tZWQgaW50byB0aGUgcmVnaXN0ZXIuCisKK0V4YW1wbGUgb2YgYSBtdXggb24gUENJZSBjYXJkLCB0aGUgaG9zdCBpcyBhIHBvd2VycGMgU29DIChiaWcgZW5kaWFuKToKKworCWkyYy1tdXggeworCQkvKiB0aGUgPG9mZnNldCBzaXplPiBkZXBlbmRzIG9uIHRoZSBhZGRyZXNzIHRyYW5zbGF0aW9uCisJCSAqIG9mIHRoZSBwYXJlbnQgZGV2aWNlLiBJZiBvbWl0dGVkLCBkZXZpY2UgcmVzb3VyY2UKKwkJICogd2lsbCBiZSB1c2VkIGluc3RlYWQuIFRoZSBzaXplIGlzIHRvIGRldGVybWluZQorCQkgKiB3aGV0aGVyIGlvd3JpdGUzMiwgaW93cml0ZTE2LCBvciBpb3dyaXRlOCB3aWxsIGJlIHVzZWQuCisJCSAqLworCQlyZWcgPSA8MHg2MDI4IDB4ND47CisJCWxpdHRsZS1lbmRpYW47CQkvKiBsaXR0bGUgZW5kaWFuIHJlZ2lzdGVyIG9uIFBDSWUgKi8KKwkJY29tcGF0aWJsZSA9ICJpMmMtbXV4LXJlZyI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJaTJjLXBhcmVudCA9IDwmaTJjMT47CisJCWkyY0AwIHsKKwkJCXJlZyA9IDwwPjsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJCXNpNTMzODogY2xvY2stZ2VuZXJhdG9yQDcwIHsKKwkJCQljb21wYXRpYmxlID0gInNpbGFicyxzaTUzMzgiOworCQkJCXJlZyA9IDwweDcwPjsKKwkJCQkvKiBvdGhlciBzdHVmZiAqLworCQkJfTsKKwkJfTsKKworCQlpMmNAMSB7CisJCQkvKiBkYXRhIGlzIHdyaXR0ZW4gdXNpbmcgaW93cml0ZTMyICovCisJCQlyZWcgPSA8MT47CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCisJCQlzaTUzMzg6IGNsb2NrLWdlbmVyYXRvckA3MCB7CisJCQkJY29tcGF0aWJsZSA9ICJzaWxhYnMsc2k1MzM4IjsKKwkJCQlyZWcgPSA8MHg3MD47CisJCQkJLyogb3RoZXIgc3R1ZmYgKi8KKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLW11eC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1tdXgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmODRjY2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1tdXgudHh0CkBAIC0wLDAgKzEsNjAgQEAKK0NvbW1vbiBpMmMgYnVzIG11bHRpcGxleGVyL3N3aXRjaCBwcm9wZXJ0aWVzLgorCitBbiBpMmMgYnVzIG11bHRpcGxleGVyL3N3aXRjaCB3aWxsIGhhdmUgc2V2ZXJhbCBjaGlsZCBidXNzZXMgdGhhdCBhcmUKK251bWJlcmVkIHVuaXF1ZWx5IGluIGEgZGV2aWNlIGRlcGVuZGVudCBtYW5uZXIuICBUaGUgbm9kZXMgZm9yIGFuIGkyYyBidXMKK211bHRpcGxleGVyL3N3aXRjaCB3aWxsIGhhdmUgb25lIGNoaWxkIG5vZGUgZm9yIGVhY2ggY2hpbGQKK2J1cy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gI2FkZHJlc3MtY2VsbHMgPSA8MT47CistICNzaXplLWNlbGxzID0gPDA+OworCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBjaGlsZCBub2RlczoKKy0gI2FkZHJlc3MtY2VsbHMgPSA8MT47CistICNzaXplLWNlbGxzID0gPDA+OworLSByZWcgOiBUaGUgc3ViLWJ1cyBudW1iZXIuCisKK09wdGlvbmFsIHByb3BlcnRpZXMgZm9yIGNoaWxkIG5vZGVzOgorLSBPdGhlciBwcm9wZXJ0aWVzIHNwZWNpZmljIHRvIHRoZSBtdWx0aXBsZXhlci9zd2l0Y2ggaGFyZHdhcmUuCistIENoaWxkIG5vZGVzIGNvbmZvcm1pbmcgdG8gaTJjIGJ1cyBiaW5kaW5nCisKKworRXhhbXBsZSA6CisKKwkvKgorCSAgIEFuIE5YUCBwY2E5NTQ4IDggY2hhbm5lbCBJMkMgbXVsdGlwbGV4ZXIgYXQgYWRkcmVzcyAweDcwCisJICAgd2l0aCB0d28gTlhQIHBjYTg1NzQgR1BJTyBleHBhbmRlcnMgYXR0YWNoZWQsIG9uZSBlYWNoIHRvCisJICAgcG9ydHMgMyBhbmQgNC4KKwkgKi8KKworCW11eEA3MCB7CisJCWNvbXBhdGlibGUgPSAibnhwLHBjYTk1NDgiOworCQlyZWcgPSA8MHg3MD47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQlpMmNAMyB7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCQkJcmVnID0gPDM+OworCisJCQlncGlvMTogZ3Bpb0AzOCB7CisJCQkJY29tcGF0aWJsZSA9ICJueHAscGNhODU3NCI7CisJCQkJcmVnID0gPDB4Mzg+OworCQkJCSNncGlvLWNlbGxzID0gPDI+OworCQkJCWdwaW8tY29udHJvbGxlcjsKKwkJCX07CisJCX07CisJCWkyY0A0IHsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MD47CisJCQlyZWcgPSA8ND47CisKKwkJCWdwaW8yOiBncGlvQDM4IHsKKwkJCQljb21wYXRpYmxlID0gIm54cCxwY2E4NTc0IjsKKwkJCQlyZWcgPSA8MHgzOD47CisJCQkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCQkJZ3Bpby1jb250cm9sbGVyOworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtbXY2NHh4eC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1tdjY0eHh4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzMwMDI2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtbXY2NHh4eC50eHQKQEAgLTAsMCArMSw0NCBAQAorCisqIE1hcnZlbGwgTVY2NFhYWCBJMkMgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIDoKKworIC0gcmVnICAgICAgICAgICAgIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorIC0gY29tcGF0aWJsZSAgICAgIDogU2hvdWxkIGJlIGVpdGhlcjoKKyAgICAgICAgICAgICAgICAgICAgIC0gImFsbHdpbm5lcixzdW40aS1hMTAtaTJjIgorICAgICAgICAgICAgICAgICAgICAgLSAiYWxsd2lubmVyLHN1bjZpLWEzMS1pMmMiCisgICAgICAgICAgICAgICAgICAgICAtICJtYXJ2ZWxsLG12NjR4eHgtaTJjIgorICAgICAgICAgICAgICAgICAgICAgLSAibWFydmVsbCxtdjc4MjMwLWkyYyIKKyAgICAgICAgICAgICAgICAgICAgIC0gIm1hcnZlbGwsbXY3ODIzMC1hMC1pMmMiCisgICAgICAgICAgICAgICAgICAgICAgICogTm90ZTogT25seSB1c2UgIm1hcnZlbGwsbXY3ODIzMC1hMC1pMmMiIGZvciBhCisgICAgICAgICAgICAgICAgICAgICAgICAgdmVyeSByYXJlLCBpbml0aWFsIHZlcnNpb24gb2YgdGhlIFNvQyB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgIGhhZCBicm9rZW4gb2ZmbG9hZCBzdXBwb3J0LiAgTGludXgKKyAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvLWRldGVjdHMgdGhpcyBhbmQgc2V0cyBpdCBhcHByb3ByaWF0ZWx5LgorIC0gaW50ZXJydXB0cyAgICAgIDogVGhlIGludGVycnVwdCBudW1iZXIKKworT3B0aW9uYWwgcHJvcGVydGllcyA6CisKKyAtIGNsb2NrLWZyZXF1ZW5jeSA6IERlc2lyZWQgSTJDIGJ1cyBjbG9jayBmcmVxdWVuY3kgaW4gSHouIElmIG5vdCBzZXQgdGhlCitkZWZhdWx0IGZyZXF1ZW5jeSBpcyAxMDBrSHoKKworIC0gcmVzZXRzICAgICAgICAgIDogcGhhbmRsZSB0byB0aGUgcGFyZW50IHJlc2V0IGNvbnRyb2xsZXIuIE1hbmRhdG9yeQorICAgICAgICAgICAgICAgICAgICAgd2hlbmV2ZXIgeW91J3JlIHVzaW5nIHRoZSAiYWxsd2lubmVyLHN1bjZpLWEzMS1pMmMiCisgICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlLgorCitFeGFtcGxlczoKKworCWkyY0AxMTAwMCB7CisJCWNvbXBhdGlibGUgPSAibWFydmVsbCxtdjY0eHh4LWkyYyI7CisJCXJlZyA9IDwweDExMDAwIDB4MjA+OworCQlpbnRlcnJ1cHRzID0gPDI5PjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDEwMDAwMD47CisJfTsKKworRm9yIHRoZSBBcm1hZGEgWFA6CisKKwlpMmNAMTEwMDAgeworCQljb21wYXRpYmxlID0gIm1hcnZlbGwsbXY3ODIzMC1pMmMiLCAibWFydmVsbCxtdjY0eHh4LWkyYyI7CisJCXJlZyA9IDwweDExMDAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDwyOT47CisJCWNsb2NrLWZyZXF1ZW5jeSA9IDwxMDAwMDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1teHMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtbXhzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTFjOGFjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtbXhzLnR4dApAQCAtMCwwICsxLDI1IEBACisqIEZyZWVzY2FsZSBNWFMgSW50ZXIgSUMgKEkyQykgQ29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImZzbCw8Y2hpcD4taTJjIgorLSByZWc6IFNob3VsZCBjb250YWluIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIEVSUk9SIGludGVycnVwdCBudW1iZXIKKy0gY2xvY2stZnJlcXVlbmN5OiBEZXNpcmVkIEkyQyBidXMgY2xvY2sgZnJlcXVlbmN5IGluIEh6LgorICAgICAgICAgICAgICAgICAgIE9ubHkgMTAwMDAwSHogYW5kIDQwMDAwMEh6IG1vZGVzIGFyZSBzdXBwb3J0ZWQuCistIGRtYXM6IERNQSBzcGVjaWZpZXIsIGNvbnNpc3Rpbmcgb2YgYSBwaGFuZGxlIHRvIERNQSBjb250cm9sbGVyIG5vZGUKKyAgYW5kIEkyQyBETUEgY2hhbm5lbCBJRC4KKyAgUmVmZXIgdG8gZG1hLnR4dCBhbmQgZnNsLW14cy1kbWEudHh0IGZvciBkZXRhaWxzLgorLSBkbWEtbmFtZXM6IE11c3QgYmUgInJ4LXR4Ii4KKworRXhhbXBsZXM6CisKK2kyYzA6IGkyY0A4MDA1ODAwMCB7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47CisJY29tcGF0aWJsZSA9ICJmc2wsaW14MjgtaTJjIjsKKwlyZWcgPSA8MHg4MDA1ODAwMCAyMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDExMT47CisJY2xvY2stZnJlcXVlbmN5ID0gPDEwMDAwMD47CisJZG1hcyA9IDwmZG1hX2FwYnggNj47CisJZG1hLW5hbWVzID0gInJ4LXR4IjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1ub21hZGlrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLW5vbWFkaWsudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyMDY1YjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1ub21hZGlrLnR4dApAQCAtMCwwICsxLDIzIEBACitJMkMgZm9yIE5vbWFkaWsgYmFzZWQgc3lzdGVtcworCitSZXF1aXJlZCAobm9uLXN0YW5kYXJkKSBwcm9wZXJ0aWVzOgorIC0gTmlsCisKK1JlY29tbWVuZGVkIChub24tc3RhbmRhcmQpIHByb3BlcnRpZXM6CisgLSBjbG9jay1mcmVxdWVuY3kgOiBNYXhpbXVtIGJ1cyBjbG9jayBmcmVxdWVuY3kgZm9yIHRoZSBkZXZpY2UKKworT3B0aW9uYWwgKG5vbi1zdGFuZGFyZCkgcHJvcGVydGllczoKKyAtIE5pbAorCitFeGFtcGxlIDoKKworaTJjQDgwMDA0MDAwIHsKKyAgICAgICAgY29tcGF0aWJsZSA9ICJzdGVyaWNzc29uLGRiODUwMC1pMmMiLCAic3Qsbm9tYWRpay1pMmMiOworICAgICAgICByZWcgPSA8MHg4MDAwNDAwMCAweDEwMDA+OworICAgICAgICBpbnRlcnJ1cHRzID0gPDAgMjEgMHg0PjsKKyAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSA8MT47CisgICAgICAgICNzaXplLWNlbGxzID0gPDA+OworICAgICAgICB2LWkyYy1zdXBwbHkgPSA8JmRiODUwMF92YXBlX3JlZz47CisKKyAgICAgICAgY2xvY2stZnJlcXVlbmN5ID0gPDQwMDAwMD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtb2NvcmVzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLW9jb3Jlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdiZWY5YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLW9jb3Jlcy50eHQKQEAgLTAsMCArMSw2OSBAQAorRGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbiBmb3IgaTJjLW9jb3JlcworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlICAgICAgOiAib3BlbmNvcmVzLGkyYy1vY29yZXMiIG9yICJhZXJvZmxleGdhaXNsZXIsaTJjbXN0IgorLSByZWcgICAgICAgICAgICAgOiBidXMgYWRkcmVzcyBzdGFydCBhbmQgYWRkcmVzcyByYW5nZSBzaXplIG9mIGRldmljZQorLSBpbnRlcnJ1cHRzICAgICAgOiBpbnRlcnJ1cHQgbnVtYmVyCistIGNsb2NrcyAgICAgICAgICA6IGhhbmRsZSB0byB0aGUgY29udHJvbGxlciBjbG9jazsgc2VlIHRoZSBub3RlIGJlbG93LgorICAgICAgICAgICAgICAgICAgICBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBvcGVuY29yZXMsaXAtY2xvY2stZnJlcXVlbmN5CistIG9wZW5jb3JlcyxpcC1jbG9jay1mcmVxdWVuY3k6IGZyZXF1ZW5jeSBvZiB0aGUgY29udHJvbGxlciBjbG9jayBpbiBIejsKKyAgICAgICAgICAgICAgICAgICAgc2VlIHRoZSBub3RlIGJlbG93LiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBjbG9ja3MKKy0gI2FkZHJlc3MtY2VsbHMgIDogc2hvdWxkIGJlIDwxPgorLSAjc2l6ZS1jZWxscyAgICAgOiBzaG91bGQgYmUgPDA+CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrLWZyZXF1ZW5jeSA6IGZyZXF1ZW5jeSBvZiBidXMgY2xvY2sgaW4gSHo7IHNlZSB0aGUgbm90ZSBiZWxvdy4KKyAgICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gMTAwIEtIeiB3aGVuIHRoZSBwcm9wZXJ0eSBpcyBub3Qgc3BlY2lmaWVkCistIHJlZy1zaGlmdCAgICAgICA6IGRldmljZSByZWdpc3RlciBvZmZzZXRzIGFyZSBzaGlmdGVkIGJ5IHRoaXMgdmFsdWUKKy0gcmVnLWlvLXdpZHRoICAgIDogaW8gcmVnaXN0ZXIgd2lkdGggaW4gYnl0ZXMgKDEsIDIgb3IgNCkKKy0gcmVnc3RlcCAgICAgICAgIDogZGVwcmVjYXRlZCwgdXNlIHJlZy1zaGlmdCBhYm92ZQorCitOb3RlCitjbG9jay1mcmVxdWVuY3kgcHJvcGVydHkgaXMgbWVhbnQgdG8gY29udHJvbCB0aGUgYnVzIGZyZXF1ZW5jeSBmb3IgaTJjIGJ1cworZHJpdmVycywgYnV0IGl0IHdhcyBpbmNvcnJlY3RseSB1c2VkIHRvIHNwZWNpZnkgaTJjIGNvbnRyb2xsZXIgaW5wdXQgY2xvY2sKK2ZyZXF1ZW5jeS4gU28gdGhlIGZvbGxvd2luZyBydWxlcyBhcmUgc2V0IHRvIGZpeCB0aGlzIHNpdHVhdGlvbjoKKy0gaWYgY2xvY2stZnJlcXVlbmN5IGlzIHByZXNlbnQgYW5kIG5laXRoZXIgb3BlbmNvcmVzLGlwLWNsb2NrLWZyZXF1ZW5jeSBub3IKKyAgY2xvY2tzIGFyZSwgdGhlbiBjbG9jay1mcmVxdWVuY3kgc3BlY2lmaWVzIGkyYyBjb250cm9sbGVyIGNsb2NrIGZyZXF1ZW5jeS4KKyAgVGhpcyBpcyB0byBrZWVwIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggc2V0dXBzIHVzaW5nIG9sZCBEVEIuIGkyYyBidXMKKyAgZnJlcXVlbmN5IGlzIGZpeGVkIGF0IDEwMCBLSHouCistIGlmIGNsb2NrcyBpcyBwcmVzZW50IGl0IHNwZWNpZmllcyBpMmMgY29udHJvbGxlciBjbG9jay4gY2xvY2stZnJlcXVlbmN5CisgIHByb3BlcnR5IHNwZWNpZmllcyBpMmMgYnVzIGZyZXF1ZW5jeS4KKy0gaWYgb3BlbmNvcmVzLGlwLWNsb2NrLWZyZXF1ZW5jeSBpcyBwcmVzZW50IGl0IHNwZWNpZmllcyBpMmMgY29udHJvbGxlcgorICBjbG9jayBmcmVxdWVuY3kuIGNsb2NrLWZyZXF1ZW5jeSBwcm9wZXJ0eSBzcGVjaWZpZXMgaTJjIGJ1cyBmcmVxdWVuY3kuCisKK0V4YW1wbGVzOgorCisJaTJjMDogb2NvcmVzQGEwMDAwMDAwIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQljb21wYXRpYmxlID0gIm9wZW5jb3JlcyxpMmMtb2NvcmVzIjsKKwkJcmVnID0gPDB4YTAwMDAwMDAgMHg4PjsKKwkJaW50ZXJydXB0cyA9IDwxMD47CisJCW9wZW5jb3JlcyxpcC1jbG9jay1mcmVxdWVuY3kgPSA8MjAwMDAwMDA+OworCisJCXJlZy1zaGlmdCA9IDwwPjsJLyogOCBiaXQgcmVnaXN0ZXJzICovCisJCXJlZy1pby13aWR0aCA9IDwxPjsJLyogOCBiaXQgcmVhZC93cml0ZSAqLworCisJCWR1bW15QDYwIHsKKwkJCWNvbXBhdGlibGUgPSAiZHVtbXkiOworCQkJcmVnID0gPDB4NjA+OworCQl9OworCX07CitvcgorCWkyYzA6IG9jb3Jlc0BhMDAwMDAwMCB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJvcGVuY29yZXMsaTJjLW9jb3JlcyI7CisJCXJlZyA9IDwweGEwMDAwMDAwIDB4OD47CisJCWludGVycnVwdHMgPSA8MTA+OworCQljbG9ja3MgPSA8Jm9zYz47CisJCWNsb2NrLWZyZXF1ZW5jeSA9IDw0MDAwMDA+OyAvKiBpMmMgYnVzIGZyZXF1ZW5jeSA0MDAgS0h6ICovCisKKwkJcmVnLXNoaWZ0ID0gPDA+OwkvKiA4IGJpdCByZWdpc3RlcnMgKi8KKwkJcmVnLWlvLXdpZHRoID0gPDE+OwkvKiA4IGJpdCByZWFkL3dyaXRlICovCisKKwkJZHVtbXlANjAgeworCQkJY29tcGF0aWJsZSA9ICJkdW1teSI7CisJCQlyZWcgPSA8MHg2MD47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLW9jdGVvbi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1vY3Rlb24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjZWQ4MmUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1vY3Rlb24udHh0CkBAIC0wLDAgKzEsMzQgQEAKKyogVHdvIFdpcmUgU2VyaWFsIEludGVyZmFjZSAoVFdTSSkgLyBJMkMKKworLSBjb21wYXRpYmxlOiAiY2F2aXVtLG9jdGVvbi0zODYwLXR3c2kiCisKKyAgQ29tcGF0aWJpbGl0eSB3aXRoIGFsbCBjbjNYWFgsIGNuNVhYWCBhbmQgY242WFhYIFNPQ3MuCisKKy0gcmVnOiBUaGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBUV1NJL0kyQyBidXMgY29udHJvbGxlciByZWdpc3RlciBiYW5rLgorCistICNhZGRyZXNzLWNlbGxzOiBNdXN0IGJlIDwxPi4KKworLSAjc2l6ZS1jZWxsczogTXVzdCBiZSA8MD4uICBJMkMgYWRkcmVzc2VzIGhhdmUgbm8gc2l6ZSBjb21wb25lbnQuCisKKy0gaW50ZXJydXB0czogQSBzaW5nbGUgaW50ZXJydXB0IHNwZWNpZmllci4KKworLSBjbG9jay1mcmVxdWVuY3k6IFRoZSBJMkMgYnVzIGNsb2NrIHJhdGUgaW4gSHouCisKK0V4YW1wbGU6CisJdHdzaTA6IGkyY0AxMTgwMDAwMDAxMDAwIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQljb21wYXRpYmxlID0gImNhdml1bSxvY3Rlb24tMzg2MC10d3NpIjsKKwkJcmVnID0gPDB4MTE4MDAgMHgwMDAwMTAwMCAweDAgMHgyMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgNDU+OworCQljbG9jay1mcmVxdWVuY3kgPSA8MTAwMDAwPjsKKworCQlydGNANjggeworCQkJY29tcGF0aWJsZSA9ICJkYWxsYXMsZHMxMzM3IjsKKwkJCXJlZyA9IDwweDY4PjsKKwkJfTsKKwkJdG1wQDRjIHsKKwkJCWNvbXBhdGlibGUgPSAidGksdG1wNDIxIjsKKwkJCXJlZyA9IDwweDRjPjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtb21hcC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1vbWFwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTQ5ODM5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtb21hcC50eHQKQEAgLTAsMCArMSwzMSBAQAorSTJDIGZvciBPTUFQIHBsYXRmb3JtcworCitSZXF1aXJlZCBwcm9wZXJ0aWVzIDoKKy0gY29tcGF0aWJsZSA6IE11c3QgYmUgInRpLG9tYXAyNDIwLWkyYyIsICJ0aSxvbWFwMjQzMC1pMmMiLCAidGksb21hcDMtaTJjIgorICBvciAidGksb21hcDQtaTJjIgorLSB0aSxod21vZHMgOiBNdXN0IGJlICJpMmM8bj4iLCBuIGJlaW5nIHRoZSBpbnN0YW5jZSBudW1iZXIgKDEtYmFzZWQpCistICNhZGRyZXNzLWNlbGxzID0gPDE+OworLSAjc2l6ZS1jZWxscyA9IDwwPjsKKworUmVjb21tZW5kZWQgcHJvcGVydGllcyA6CistIGNsb2NrLWZyZXF1ZW5jeSA6IERlc2lyZWQgSTJDIGJ1cyBjbG9jayBmcmVxdWVuY3kgaW4gSHouIE90aGVyd2lzZQorICB0aGUgZGVmYXVsdCAxMDAga0h6IGZyZXF1ZW5jeSB3aWxsIGJlIHVzZWQuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIENoaWxkIG5vZGVzIGNvbmZvcm1pbmcgdG8gaTJjIGJ1cyBiaW5kaW5nCisKK05vdGU6IEN1cnJlbnQgaW1wbGVtZW50YXRpb24gd2lsbCBmZXRjaCBiYXNlIGFkZHJlc3MsIGlycSBhbmQgZG1hCitmcm9tIG9tYXAgaHdtb2QgZGF0YSBiYXNlIGR1cmluZyBkZXZpY2UgcmVnaXN0cmF0aW9uLgorRnV0dXJlIHBsYW4gaXMgdG8gbWlncmF0ZSBod21vZCBkYXRhIGJhc2UgY29udGVudHMgaW50byBkZXZpY2UgdHJlZQorYmxvYiBzbyB0aGF0LCBhbGwgdGhlIHJlcXVpcmVkIGRhdGEgd2lsbCBiZSB1c2VkIGZyb20gZGV2aWNlIHRyZWUgZHRzCitmaWxlLgorCitFeGFtcGxlcyA6CisKK2kyYzE6IGkyY0AwIHsKKyAgICBjb21wYXRpYmxlID0gInRpLG9tYXAzLWkyYyI7CisgICAgI2FkZHJlc3MtY2VsbHMgPSA8MT47CisgICAgI3NpemUtY2VsbHMgPSA8MD47CisgICAgdGksaHdtb2RzID0gImkyYzEiOworICAgIGNsb2NrLWZyZXF1ZW5jeSA9IDw0MDAwMDA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLW9wYWwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtb3BhbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJiYzYxNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLW9wYWwudHh0CkBAIC0wLDAgKzEsMzcgQEAKK0RldmljZS10cmVlIGJpbmRpbmdzIGZvciBJMkMgT1BBTCBkcml2ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTW9zdCBvZiB0aGUgZGV2aWNlIG5vZGUgYW5kIHByb3BlcnRpZXMgbGF5b3V0IGlzIHNwZWNpZmljIHRvIHRoZSBmaXJtd2FyZSBhbmQKK3VzZWQgYnkgdGhlIGZpcm13YXJlIGl0c2VsZiBmb3IgY29uZmlndXJpbmcgdGhlIHBvcnQuIEZyb20gdGhlIGxpbnV4CitwZXJzcGVjdGl2ZSwgdGhlIHByb3BlcnRpZXMgb2YgdXNlIGFyZSAiaWJtLHBvcnQtbmFtZSIgYW5kICJpYm0sb3BhbC1pZCIuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gcmVnOiBQb3J0LWlkIHdpdGhpbiBhIGdpdmVuIG1hc3RlcgorLSBjb21wYXRpYmxlOiBtdXN0IGJlICJpYm0sb3BhbC1pMmMiCistIGlibSxvcGFsLWlkOiBSZWZlcnMgdG8gYSBzcGVjaWZpYyBidXMgYW5kIHVzZWQgdG8gaWRlbnRpZnkgaXQgd2hlbiBjYWxsaW5nCisJICAgICAgIHRoZSByZWxldmFudCBPUEFMIGZ1bmN0aW9ucy4KKy0gYnVzLWZyZXF1ZW5jeTogT3BlcmF0aW5nIGZyZXF1ZW5jeSBvZiB0aGUgaTJjIGJ1cyAoaW4gSFopLiBJbmZvcm1hdGlvbmFsIGZvcgorCQkgbGludXgsIHVzZWQgYnkgdGhlIEZXIHRob3VnaC4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gaWJtLHBvcnQtbmFtZTogRmlybXdhcmUgcHJvdmlkZXMgdGhpcyBuYW1lIHRoYXQgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgaTJjCisJCSBwb3J0LgorCitUaGUgbm9kZSBjb250YWlucyBhIG51bWJlciBvZiBvdGhlciBwcm9wZXJ0aWVzIHRoYXQgYXJlIHVzZWQgYnkgdGhlIEZXIGl0c2VsZgorYW5kIGRlcGVuZCBvbiB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgaW1wbGVtZW50YXRpb24uIFRoZSBleGFtcGxlIGJlbG93IGRlcGljdHMKK2EgUDggb24tY2hpcCBidXMuCisKK0V4YW1wbGU6CisKK2kyYy1idXNAMCB7CisJcmVnID0gPDB4MD47CisJYnVzLWZyZXF1ZW5jeSA9IDwweDYxYTgwPjsKKwljb21wYXRpYmxlID0gImlibSxwb3dlcjgtaTJjLXBvcnQiLCAiaWJtLG9wYWwtaTJjIjsKKwlpYm0sb3BhbC1pZCA9IDwweDE+OworCWlibSxwb3J0LW5hbWUgPSAicDhfMDAwMDAwMDBfZTFwMCI7CisJI2FkZHJlc3MtY2VsbHMgPSA8MHgxPjsKKwlwaGFuZGxlID0gPDB4MTAwMDAwMDY+OworCSNzaXplLWNlbGxzID0gPDB4MD47CisJbGludXgscGhhbmRsZSA9IDwweDEwMDAwMDA2PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1wbngudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtcG54LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTk4YWRhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtcG54LnR4dApAQCAtMCwwICsxLDM2IEBACisqIE5YUCBQTlggSTJDIENvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworIC0gcmVnOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCisgLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgIm54cCxwbngtaTJjIgorIC0gaW50ZXJydXB0czogY29uZmlndXJlIG9uZSBpbnRlcnJ1cHQgbGluZQorIC0gI2FkZHJlc3MtY2VsbHM6IGFsd2F5cyAxIChmb3IgaTJjIGFkZHJlc3NlcykKKyAtICNzaXplLWNlbGxzOiBhbHdheXMgMAorIC0gaW50ZXJydXB0LXBhcmVudDogdGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGF0CisgICBzZXJ2aWNlcyBpbnRlcnJ1cHRzIGZvciB0aGlzIGRldmljZS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworIC0gY2xvY2stZnJlcXVlbmN5OiBkZXNpcmVkIEkyQyBidXMgY2xvY2sgZnJlcXVlbmN5IGluIEh6LCBEZWZhdWx0OiAxMDAwMDAgSHoKKworRXhhbXBsZXM6CisKKwlpMmMxOiBpMmNANDAwYTAwMDAgeworCQljb21wYXRpYmxlID0gIm54cCxwbngtaTJjIjsKKwkJcmVnID0gPDB4NDAwYTAwMDAgMHgxMDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZtaWM+OworCQlpbnRlcnJ1cHRzID0gPDUxIDA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJfTsKKworCWkyYzI6IGkyY0A0MDBhODAwMCB7CisJCWNvbXBhdGlibGUgPSAibnhwLHBueC1pMmMiOworCQlyZWcgPSA8MHg0MDBhODAwMCAweDEwMD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1pYz47CisJCWludGVycnVwdHMgPSA8NTAgMD47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDEwMDAwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLXB4YS1wY2ktY2U0MTAwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLXB4YS1wY2ktY2U0MTAwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjliMTYyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtcHhhLXBjaS1jZTQxMDAudHh0CkBAIC0wLDAgKzEsOTMgQEAKK0NFNDEwMCBJMkMKKy0tLS0tLS0tLS0KKworQ0U0MTAwIGhhcyBvbmUgUENJIGRldmljZSB3aGljaCBpcyBkZXNjcmliZWQgYXMgdGhlIEkyQy1Db250cm9sbGVyLiBUaGlzCitQQ0kgZGV2aWNlIGhhcyB0aHJlZSBQQ0ktYmFycywgZWFjaCBiYXIgY29udGFpbnMgYSBjb21wbGV0ZSBJMkMKK2NvbnRyb2xsZXIuIFNvIHdlIGhhdmUgYSB0b3RhbCBvZiB0aHJlZSBpbmRlcGVuZGVudCBJMkMtQ29udHJvbGxlcnMKK3doaWNoIHNoYXJlIG9ubHkgYW4gaW50ZXJydXB0IGxpbmUuCitUaGUgZHJpdmVyIGlzIHByb2JlZCB2aWEgdGhlIFBDSS1JRCBhbmQgaXMgZ2F0aGVyaW5nIHRoZSBpbmZvcm1hdGlvbiBvZgorYXR0YWNoZWQgZGV2aWNlcyBmcm9tIHRoZSBkZXZpY2VzIHRyZWUuCitHcmFudCBMaWtlbHkgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSByYW5nZXMgcHJvcGVydHkgdG8gbWFwIHRoZSBQQ0ktQmFyCitudW1iZXIgdG8gaXRzIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHRvIHVzZSB0aGlzIHRvIGZpbmQgdGhlIGNoaWxkIG5vZGVzCitvZiB0aGUgc3BlY2lmaWMgSTJDIGNvbnRyb2xsZXIuIFRoaXMgd2VyZSBoaXMgZXhhY3Qgd29yZHM6CisKKyAgICAgICBIZXJlJ3Mgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMuICBFYWNoIGVudHJ5IGluCisgICAgICAgcmFuZ2VzIGRlc2NyaWJlcyBob3cgdGhlIHBhcmVudCBwY2kgYWRkcmVzcyBzcGFjZQorICAgICAgIChtaWRkbGUgZ3JvdXAgb2YgMykgaXMgdHJhbnNsYXRlZCB0byB0aGUgbG9jYWwKKyAgICAgICBhZGRyZXNzIHNwYWNlIChmaXJzdCBncm91cCBvZiAyKSBhbmQgdGhlIHNpemUgb2YKKyAgICAgICBlYWNoIHJhbmdlIChsYXN0IGNlbGwpLiAgSW4gdGhpcyBwYXJ0aWN1bGFyIGNhc2UsCisgICAgICAgdGhlIGZpcnN0IGNlbGwgb2YgdGhlIGxvY2FsIGFkZHJlc3MgaXMgY2hvc2VuIHRvIGJlCisgICAgICAgMToxIG1hcHBlZCB0byB0aGUgQkFScywgYW5kIHRoZSBzZWNvbmQgaXMgdGhlCisgICAgICAgb2Zmc2V0IGZyb20gYmUgYmFzZSBvZiB0aGUgQkFSICh3aGljaCB3b3VsZCBiZQorICAgICAgIG5vbi16ZXJvIGlmIHlvdSBoYWQgMiBvciBtb3JlIGRldmljZXMgbWFwcGVkIG9mZgorICAgICAgIHRoZSBzYW1lIEJBUikKKworICAgICAgIHJhbmdlcyBhbGxvd3MgdGhlIGFkZHJlc3MgbWFwcGluZyB0byBiZSBkZXNjcmliZWQKKyAgICAgICBpbiBhIHdheSB0aGF0IHRoZSBPUyBjYW4gaW50ZXJwcmV0IHdpdGhvdXQKKyAgICAgICByZXF1aXJpbmcgY3VzdG9tIGRldmljZSBkcml2ZXIgY29kZS4KKworVGhpcyBpcyBhbiBleGFtcGxlIHdoaWNoIGlzIHVzZWQgb24gRmFsY29uRmFsbHM6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlpMmMtY29udHJvbGxlckBiLDIgeworCQkjYWRkcmVzcy1jZWxscyA9IDwyPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCWNvbXBhdGlibGUgPSAicGNpODA4NiwyZTY4LjIiLAorCQkJCSJwY2k4MDg2LDJlNjgiLAorCQkJCSJwY2ljbGFzcyxmZjAwMDAiLAorCQkJCSJwY2ljbGFzcyxmZjAwIjsKKworCQlyZWcgPSA8MHgxNWEwMCAweDAgMHgwIDB4MCAweDA+OworCQlpbnRlcnJ1cHRzID0gPDE2IDE+OworCisJCS8qIGFzIGRlc2NyaWJlZCBieSBHcmFudCwgdGhlIGZpcnN0IG51bWJlciBpbiB0aGUgZ3JvdXAgb2YKKwkJKiB0aHJlZSBpcyB0aGUgYmFyIG51bWJlciBmb2xsb3dlZCBieSB0aGUgNjRiaXQgYmFyIGFkZHJlc3MKKwkJKiBmb2xsb3dlZCBieSBzaXplIG9mIHRoZSBtYXBwaW5nLiBUaGUgYmFyIGFkZHJlc3MKKwkJKiByZXF1aXJlcyBhbHNvIGEgdmFsaWQgdHJhbnNsYXRpb24gaW4gcGFyZW50cyByYW5nZXMKKwkJKiBwcm9wZXJ0eS4KKwkJKi8KKwkJcmFuZ2VzID0gPDAgMCAgIDB4MDIwMDAwMDAgMCAweGRmZmUwNTAwIDB4MTAwCisJCQkgIDEgMCAgIDB4MDIwMDAwMDAgMCAweGRmZmUwNjAwIDB4MTAwCisJCQkgIDIgMCAgIDB4MDIwMDAwMDAgMCAweGRmZmUwNzAwIDB4MTAwPjsKKworCQlpMmNAMCB7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCQkJY29tcGF0aWJsZSA9ICJpbnRlbCxjZTQxMDAtaTJjLWNvbnRyb2xsZXIiOworCisJCQkvKiBUaGUgZmlyc3QgbnVtYmVyIGluIHRoZSByZWcgcHJvcGVydHkgaXMgdGhlCisJCQkqIG51bWJlciBvZiB0aGUgYmFyCisJCQkqLworCQkJcmVnID0gPDAgMCAweDEwMD47CisKKwkJCS8qIFRoaXMgSTJDIGNvbnRyb2xsZXIgaGFzIG5vIGRldmljZXMgKi8KKwkJfTsKKworCQlpMmNAMSB7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCQkJY29tcGF0aWJsZSA9ICJpbnRlbCxjZTQxMDAtaTJjLWNvbnRyb2xsZXIiOworCQkJcmVnID0gPDEgMCAweDEwMD47CisKKwkJCS8qIFRoaXMgSTJDIGNvbnRyb2xsZXIgaGFzIG9uZSBncGlvIGNvbnRyb2xsZXIgKi8KKwkJCWdwaW9AMjYgeworCQkJCSNncGlvLWNlbGxzID0gPDI+OworCQkJCWNvbXBhdGlibGUgPSAidGkscGNmODU3NSI7CisJCQkJcmVnID0gPDB4MjY+OworCQkJCWdwaW8tY29udHJvbGxlcjsKKwkJCX07CisJCX07CisKKwkJaTJjQDIgeworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJCWNvbXBhdGlibGUgPSAiaW50ZWwsY2U0MTAwLWkyYy1jb250cm9sbGVyIjsKKwkJCXJlZyA9IDwyIDAgMHgxMDA+OworCisJCQlncGlvQDI2IHsKKwkJCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJCQljb21wYXRpYmxlID0gInRpLHBjZjg1NzUiOworCQkJCXJlZyA9IDwweDI2PjsKKwkJCQlncGlvLWNvbnRyb2xsZXI7CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1weGEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtcHhhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmI3OGFjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtcHhhLnR4dApAQCAtMCwwICsxLDMzIEBACisqIE1hcnZlbGwgTU1QIEkyQyBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgOgorCisgLSByZWcgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCisgLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJtcnZsLG1tcC10d3NpIiB3aGVyZSBtbXAgaXMgdGhlIG5hbWUgb2YgYQorICAgY29tcGF0aWJsZSBwcm9jZXNzb3IsIGUuZy4gcHhhMTY4LCBweGE5MTAsIG1tcDIsIG1tcDMuCisgICBGb3IgdGhlIHB4YTJ4eC9weGEzeHgsIGFuIGFkZGl0aW9uYWwgbm9kZSAibXJ2bCxweGEtaTJjIiBpcyByZXF1aXJlZAorICAgYXMgc2hvd24gaW4gdGhlIGV4YW1wbGUgYmVsb3cuCisKK1JlY29tbWVuZGVkIHByb3BlcnRpZXMgOgorCisgLSBpbnRlcnJ1cHRzIDogdGhlIGludGVycnVwdCBudW1iZXIKKyAtIGludGVycnVwdC1wYXJlbnQgOiB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyIHRoYXQKKyAgIHNlcnZpY2VzIGludGVycnVwdHMgZm9yIHRoaXMgZGV2aWNlLiBJZiB0aGUgcGFyZW50IGlzIHRoZSBkZWZhdWx0CisgICBpbnRlcnJ1cHQgY29udHJvbGxlciBpbiBkZXZpY2UgdHJlZSwgaXQgY291bGQgYmUgaWdub3JlZC4KKyAtIG1ydmwsaTJjLXBvbGxpbmcgOiBEaXNhYmxlIGludGVycnVwdCBvZiBpMmMgY29udHJvbGxlci4gUG9sbGluZworICAgc3RhdHVzIHJlZ2lzdGVyIG9mIGkyYyBjb250cm9sbGVyIGluc3RlYWQuCisgLSBtcnZsLGkyYy1mYXN0LW1vZGUgOiBFbmFibGUgZmFzdCBtb2RlIG9mIGkyYyBjb250cm9sbGVyLgorCitFeGFtcGxlczoKKwl0d3NpMTogaTJjQGQ0MDExMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJtcnZsLG1tcC10d3NpIjsKKwkJcmVnID0gPDB4ZDQwMTEwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDw3PjsKKwkJbXJ2bCxpMmMtZmFzdC1tb2RlOworCX07CisJCisJdHdzaTI6IGkyY0BkNDAyNTAwMCB7CisJCWNvbXBhdGlibGUgPSAibXJ2bCxtbXAtdHdzaSI7CisJCXJlZyA9IDwweGQ0MDI1MDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8NTg+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1yY2FyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLXJjYXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhNDA2ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1yY2FyLnR4dApAQCAtMCwwICsxLDMzIEBACitJMkMgZm9yIFItQ2FyIHBsYXRmb3JtcworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBNdXN0IGJlIG9uZSBvZgorCSJyZW5lc2FzLGkyYy1yY2FyIgorCSJyZW5lc2FzLGkyYy1yOGE3Nzc4IgorCSJyZW5lc2FzLGkyYy1yOGE3Nzc5IgorCSJyZW5lc2FzLGkyYy1yOGE3NzkwIgorCSJyZW5lc2FzLGkyYy1yOGE3NzkxIgorCSJyZW5lc2FzLGkyYy1yOGE3NzkyIgorCSJyZW5lc2FzLGkyYy1yOGE3NzkzIgorCSJyZW5lc2FzLGkyYy1yOGE3Nzk0IgorCSJyZW5lc2FzLGkyYy1yOGE3Nzk1IgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgc3BlY2lmaWVyLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjbG9jay1mcmVxdWVuY3k6IGRlc2lyZWQgSTJDIGJ1cyBjbG9jayBmcmVxdWVuY3kgaW4gSHouIFRoZSBhYnNlbmNlIG9mIHRoaXMKKyAgcHJvcG9lcnR5IGluZGljYXRlcyB0aGUgZGVmYXVsdCBmcmVxdWVuY3kgMTAwIGtIei4KKy0gY2xvY2tzOiBjbG9jayBzcGVjaWZpZXIuCisKK0V4YW1wbGVzIDoKKworaTJjMDogaTJjQGU2NTA4MDAwIHsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwljb21wYXRpYmxlID0gInJlbmVzYXMsaTJjLXI4YTc3OTEiOworCXJlZyA9IDwwIDB4ZTY1MDgwMDAgMCAweDQwPjsKKwlpbnRlcnJ1cHRzID0gPDAgMjg3IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCWNsb2NrcyA9IDwmbXN0cDlfY2xrcyBSOEE3NzkxX0NMS19JMkMwPjsKKwljbG9jay1mcmVxdWVuY3kgPSA8NDAwMDAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1yaWljLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLXJpaWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiY2M0NzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1yaWljLnR4dApAQCAtMCwwICsxLDI5IEBACitEZXZpY2UgdHJlZSBjb25maWd1cmF0aW9uIGZvciBSZW5lc2FzIFJJSUMgZHJpdmVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgICAgICA6ICJyZW5lc2FzLHJpaWMtPHNvY3R5cGU+Ii4gInJlbmVzYXMscmlpYy1yeiIgYXMgZmFsbGJhY2sKKy0gcmVnICAgICAgICAgICAgIDogYWRkcmVzcyBzdGFydCBhbmQgYWRkcmVzcyByYW5nZSBzaXplIG9mIGRldmljZQorLSBpbnRlcnJ1cHRzICAgICAgOiA4IGludGVycnVwdHMgKFRFSSwgUkksIFRJLCBTUEksIFNUSSwgTkFLSSwgQUxJLCBUTU9JKQorLSBjbG9jay1mcmVxdWVuY3kgOiBmcmVxdWVuY3kgb2YgYnVzIGNsb2NrIGluIEh6CistICNhZGRyZXNzLWNlbGxzICA6IHNob3VsZCBiZSA8MT4KKy0gI3NpemUtY2VsbHMgICAgIDogc2hvdWxkIGJlIDwwPgorCitQaW5jdHJsIHByb3BlcnRpZXMgbWlnaHQgYmUgbmVlZGVkLCB0b28uIFNlZSB0aGVyZS4KKworRXhhbXBsZToKKworCWkyYzA6IGkyY0BmY2ZlZTAwMCB7CisJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxyaWljLXI3czcyMTAwIiwgInJlbmVzYXMscmlpYy1yeiI7CisJCXJlZyA9IDwweGZjZmVlMDAwIDB4NDQ+OworCQlpbnRlcnJ1cHRzID0gPDAgMTU3IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8MCAxNTggSVJRX1RZUEVfRURHRV9SSVNJTkc+LAorCQkJICAgICA8MCAxNTkgSVJRX1RZUEVfRURHRV9SSVNJTkc+LAorCQkJICAgICA8MCAxNjAgSVJRX1RZUEVfTEVWRUxfSElHSD4sCisJCQkgICAgIDwwIDE2MSBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKKwkJCSAgICAgPDAgMTYyIElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8MCAxNjMgSVJRX1RZUEVfTEVWRUxfSElHSD4sCisJCQkgICAgIDwwIDE2NCBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDEwMDAwMD47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtcmszeC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1yazN4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGQ3MWJjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtcmszeC50eHQKQEAgLTAsMCArMSw1NiBAQAorKiBSb2NrY2hpcCBSSzN4eHggSTJDIGNvbnRyb2xsZXIKKworVGhpcyBkcml2ZXIgaW50ZXJmYWNlcyB3aXRoIHRoZSBuYXRpdmUgSTJDIGNvbnRyb2xsZXIgcHJlc2VudCBpbiBSb2NrY2hpcAorUkszeHh4IFNvQ3MuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgOgorCisgLSByZWcgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCisgLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJyb2NrY2hpcCxyazMwNjYtaTJjIiwgInJvY2tjaGlwLHJrMzE4OC1pMmMiIG9yCisJCSJyb2NrY2hpcCxyazMyODgtaTJjIi4KKyAtIGludGVycnVwdHMgOiBpbnRlcnJ1cHQgbnVtYmVyCisgLSBjbG9ja3MgOiBwYXJlbnQgY2xvY2sKKworUmVxdWlyZWQgb24gUkszMDY2LCBSSzMxODggOgorCisgLSByb2NrY2hpcCxncmYgOiB0aGUgcGhhbmRsZSBvZiB0aGUgc3lzY29uIG5vZGUgZm9yIHRoZSBnZW5lcmFsIHJlZ2lzdGVyCisJCSAgZmlsZSAoR1JGKQorIC0gb24gdGhvc2UgU29DcyBhbiBhbGlhcyB3aXRoIHRoZSBjb3JyZWN0IEkyQyBidXMgSUQgKGJpdCBvZmZzZXQgaW4gdGhlIEdSRikKKyAgIGlzIGFsc28gcmVxdWlyZWQuCisKK09wdGlvbmFsIHByb3BlcnRpZXMgOgorCisgLSBjbG9jay1mcmVxdWVuY3kgOiBTQ0wgZnJlcXVlbmN5IHRvIHVzZSAoaW4gSHopLiBJZiBvbWl0dGVkLCAxMDBrSHogaXMgdXNlZC4KKyAtIGkyYy1zY2wtcmlzaW5nLXRpbWUtbnMgOiBOdW1iZXIgb2YgbmFub3NlY29uZHMgdGhlIFNDTCBzaWduYWwgdGFrZXMgdG8gcmlzZQorCSh0KHIpIGluIEkyQyBzcGVjaWZpY2F0aW9uKS4gSWYgbm90IHNwZWNpZmllZCB0aGlzIGlzIGFzc3VtZWQgdG8gYmUKKwl0aGUgbWF4aW11bSB0aGUgc3BlY2lmaWNhdGlvbiBhbGxvd3MoMTAwMCBucyBmb3IgU3RhbmRhcmQtbW9kZSwKKwkzMDAgbnMgZm9yIEZhc3QtbW9kZSkgd2hpY2ggbWlnaHQgY2F1c2Ugc2xpZ2h0bHkgc2xvd2VyIGNvbW11bmljYXRpb24uCisgLSBpMmMtc2NsLWZhbGxpbmctdGltZS1ucyA6IE51bWJlciBvZiBuYW5vc2Vjb25kcyB0aGUgU0NMIHNpZ25hbCB0YWtlcyB0byBmYWxsCisJKHQoZikgaW4gdGhlIEkyQyBzcGVjaWZpY2F0aW9uKS4gSWYgbm90IHNwZWNpZmllZCB0aGlzIGlzIGFzc3VtZWQgdG8KKwliZSB0aGUgbWF4aW11bSB0aGUgc3BlY2lmaWNhdGlvbiBhbGxvd3MgKDMwMCBucykgd2hpY2ggbWlnaHQgY2F1c2UKKwlzbGlnaHRseSBzbG93ZXIgY29tbXVuaWNhdGlvbi4KKyAtIGkyYy1zZGEtZmFsbGluZy10aW1lLW5zIDogTnVtYmVyIG9mIG5hbm9zZWNvbmRzIHRoZSBTREEgc2lnbmFsIHRha2VzIHRvIGZhbGwKKwkodChmKSBpbiB0aGUgSTJDIHNwZWNpZmljYXRpb24pLiBJZiBub3Qgc3BlY2lmaWVkIHdlJ2xsIHVzZSB0aGUgU0NMCisJdmFsdWUgc2luY2UgdGhleSBhcmUgdGhlIHNhbWUgaW4gbmVhcmx5IGFsbCBjYXNlcy4KKworRXhhbXBsZToKKworYWxpYXNlcyB7CisJaTJjMCA9ICZpMmMwOworfQorCitpMmMwOiBpMmNAMjAwMmQwMDAgeworCWNvbXBhdGlibGUgPSAicm9ja2NoaXAscmszMTg4LWkyYyI7CisJcmVnID0gPDB4MjAwMmQwMDAgMHgxMDAwPjsKKwlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgNDAgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47CisKKwlyb2NrY2hpcCxncmYgPSA8JmdyZj47CisKKwljbG9jay1uYW1lcyA9ICJpMmMiOworCWNsb2NrcyA9IDwmY3J1IFBDTEtfSTJDMD47CisKKwlpMmMtc2NsLXJpc2luZy10aW1lLW5zID0gPDgwMD47CisJaTJjLXNjbC1mYWxsaW5nLXRpbWUtbnMgPSA8MTAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1zM2MyNDEwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLXMzYzI0MTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5YjMyNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1zM2MyNDEwLnR4dApAQCAtMCwwICsxLDYwIEBACisqIFNhbXN1bmcncyBJMkMgY29udHJvbGxlcgorCitUaGUgU2Ftc3VuZydzIEkyQyBjb250cm9sbGVyIGlzIHVzZWQgdG8gaW50ZXJmYWNlIHdpdGggSTJDIGRldmljZXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogdmFsdWUgc2hvdWxkIGJlIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nLgorICAgICAgKGEpICJzYW1zdW5nLCBzM2MyNDEwLWkyYyIsIGZvciBpMmMgY29tcGF0aWJsZSB3aXRoIHMzYzI0MTAgaTJjLgorICAgICAgKGIpICJzYW1zdW5nLCBzM2MyNDQwLWkyYyIsIGZvciBpMmMgY29tcGF0aWJsZSB3aXRoIHMzYzI0NDAgaTJjLgorICAgICAgKGMpICJzYW1zdW5nLCBzM2MyNDQwLWhkbWlwaHktaTJjIiwgZm9yIHMzYzI0NDAtbGlrZSBpMmMgdXNlZAorICAgICAgICAgIGluc2lkZSBIRE1JUEhZIGJsb2NrIGZvdW5kIG9uIHNldmVyYWwgc2Ftc3VuZyBTb0NzCisgICAgICAoZCkgInNhbXN1bmcsIGV4eW5vczU0NDAtaTJjIiwgZm9yIHMzYzI0NDAtbGlrZSBpMmMgdXNlZAorCSAgIG9uIEVYWU5PUzU0NDAgd2hpY2ggZG9lcyBub3QgbmVlZCBHUElPIGNvbmZpZ3VyYXRpb24uCisgICAgICAoZSkgInNhbXN1bmcsIGV4eW5vczUtc2F0YS1waHktaTJjIiwgZm9yIHMzYzI0NDAtbGlrZSBpMmMgdXNlZCBhcworCSAgIGEgaG9zdCB0byBTQVRBIFBIWSBjb250cm9sbGVyIG9uIGFuIGludGVybmFsIGJ1cy4KKyAgLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgICByZWdpb24uCisgIC0gaW50ZXJydXB0czogaW50ZXJydXB0IG51bWJlciB0byB0aGUgY3B1LgorICAtIHNhbXN1bmcsaTJjLXNkYS1kZWxheTogRGVsYXkgKGluIG5zKSBhcHBsaWVkIHRvIGRhdGEgbGluZSAoU0RBKSBlZGdlcy4KKworUmVxdWlyZWQgZm9yIGFsbCBjYXNlcyBleGNlcHQgInNhbXN1bmcsczNjMjQ0MC1oZG1pcGh5LWkyYyI6CisgIC0gU2Ftc3VuZyBHUElPIHZhcmlhbnQgKGRlcHJlY2F0ZWQpOgorICAgIC0gZ3Bpb3M6IFRoZSBvcmRlciBvZiB0aGUgZ3Bpb3Mgc2hvdWxkIGJlIHRoZSBmb2xsb3dpbmc6IDxTREEsIFNDTD4uCisgICAgICBUaGUgZ3BpbyBzcGVjaWZpZXIgZGVwZW5kcyBvbiB0aGUgZ3BpbyBjb250cm9sbGVyLiBSZXF1aXJlZCBpbiBhbGwKKyAgICAgIGNhc2VzIGV4Y2VwdCBmb3IgInNhbXN1bmcsczNjMjQ0MC1oZG1pcGh5LWkyYyIgd2hvc2UgaW5wdXQvb3V0cHV0CisgICAgICBsaW5lcyBhcmUgcGVybWFuZW50bHkgd2lyZWQgdG8gdGhlIHJlc3BlY3RpdmUgY2xpZW50YQorICAtIFBpbmN0cmwgdmFyaWFudCAocHJlZmVycmVkLCBpZiBhdmFpbGFibGUpOgorICAgIC0gcGluY3RybC0wOiBQaW4gY29udHJvbCBncm91cCB0byBiZSB1c2VkIGZvciB0aGlzIGNvbnRyb2xsZXIuCisgICAgLSBwaW5jdHJsLW5hbWVzOiBTaG91bGQgY29udGFpbiBvbmx5IG9uZSB2YWx1ZSAtICJkZWZhdWx0Ii4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAgLSBzYW1zdW5nLGkyYy1zbGF2ZS1hZGRyOiBTbGF2ZSBhZGRyZXNzIGluIG11bHRpLW1hc3RlciBlbnZpcm9ubWVudC4gSWYgbm90CisgICAgc3BlY2lmaWVkLCBkZWZhdWx0IHZhbHVlIGlzIDAuCisgIC0gc2Ftc3VuZyxpMmMtbWF4LWJ1cy1mcmVxOiBEZXNpcmVkIGZyZXF1ZW5jeSBpbiBIeiBvZiB0aGUgYnVzLiBJZiBub3QKKyAgICBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHZhbHVlIGluIEh6IGlzIDEwMDAwMC4KKyAgLSBzYW1zdW5nLHN5c3JlZy1waGFuZGxlIC0gaGFuZGxlIHRvIHN5c2NvbiB1c2VkIHRvIGNvbnRyb2wgdGhlIHN5c3RlbSByZWdpc3RlcnMKKworRXhhbXBsZToKKworCWkyY0AxMzg3MDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxzM2MyNDQwLWkyYyI7CisJCXJlZyA9IDwweDEzODcwMDAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDwzNDU+OworCQlzYW1zdW5nLGkyYy1zZGEtZGVsYXkgPSA8MTAwPjsKKwkJc2Ftc3VuZyxpMmMtbWF4LWJ1cy1mcmVxID0gPDEwMDAwMD47CisJCS8qIFNhbXN1bmcgR1BJTyB2YXJpYW50IGJlZ2lucyBoZXJlICovCisJCWdwaW9zID0gPCZncGQxIDIgMCAvKiBTREEgKi8KKwkJCSAmZ3BkMSAzIDAgLyogU0NMICovPjsKKwkJLyogU2Ftc3VuZyBHUElPIHZhcmlhbnQgZW5kcyBoZXJlICovCisJCS8qIFBpbmN0cmwgdmFyaWFudCBiZWdpbnMgaGVyZSAqLworCQlwaW5jdHJsLTAgPSA8JmkyYzNfYnVzPjsKKwkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwkJLyogUGluY3RybCB2YXJpYW50IGVuZHMgaGVyZSAqLworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJd204OTk0QDFhIHsKKwkJCWNvbXBhdGlibGUgPSAid2xmLHdtODk5NCI7CisJCQlyZWcgPSA8MHgxYT47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLXNoX21vYmlsZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1zaF9tb2JpbGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNGY5NGMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1zaF9tb2JpbGUudHh0CkBAIC0wLDAgKzEsNDEgQEAKK0RldmljZSB0cmVlIGNvbmZpZ3VyYXRpb24gZm9yIFJlbmVzYXMgSUlDIChzaF9tb2JpbGUpIGRyaXZlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlICAgICAgOiAicmVuZXNhcyxpaWMtPHNvY3R5cGU+Ii4gInJlbmVzYXMscm1vYmlsZS1paWMiIGFzIGZhbGxiYWNrCisJCSAgICAgRXhhbXBsZXMgd2l0aCBzb2N0eXBlcyBhcmU6CisJCQktICJyZW5lc2FzLGlpYy1yOGE3M2E0IiAoUi1Nb2JpbGUgQVBFNikKKwkJCS0gInJlbmVzYXMsaWljLXI4YTc3NDAiIChSLU1vYmlsZSBBMSkKKwkJCS0gInJlbmVzYXMsaWljLXI4YTc3OTAiIChSLUNhciBIMikKKwkJCS0gInJlbmVzYXMsaWljLXI4YTc3OTEiIChSLUNhciBNMi1XKQorCQkJLSAicmVuZXNhcyxpaWMtcjhhNzc5MiIgKFItQ2FyIFYySCkKKwkJCS0gInJlbmVzYXMsaWljLXI4YTc3OTMiIChSLUNhciBNMi1OKQorCQkJLSAicmVuZXNhcyxpaWMtcjhhNzc5NCIgKFItQ2FyIEUyKQorCQkJLSAicmVuZXNhcyxpaWMtcjhhNzc5NSIgKFItQ2FyIEgzKQorCQkJLSAicmVuZXNhcyxpaWMtc2g3M2EwIiAoU0gtTW9iaWxlIEFHNSkKKy0gcmVnICAgICAgICAgICAgIDogYWRkcmVzcyBzdGFydCBhbmQgYWRkcmVzcyByYW5nZSBzaXplIG9mIGRldmljZQorLSBpbnRlcnJ1cHRzICAgICAgOiBpbnRlcnJ1cHQgb2YgZGV2aWNlCistIGNsb2NrcyAgICAgICAgICA6IGNsb2NrIGZvciBkZXZpY2UKKy0gI2FkZHJlc3MtY2VsbHMgIDogc2hvdWxkIGJlIDwxPgorLSAjc2l6ZS1jZWxscyAgICAgOiBzaG91bGQgYmUgPDA+CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrLWZyZXF1ZW5jeSA6IGZyZXF1ZW5jeSBvZiBidXMgY2xvY2sgaW4gSHouIERlZmF1bHQgMTAwa0h6IGlmIHVuc2V0LgorLSBkbWFzICAgICAgICAgICAgOiBNdXN0IGNvbnRhaW4gYSBsaXN0IG9mIHR3byByZWZlcmVuY2VzIHRvIERNQQorCQkgICAgc3BlY2lmaWVycywgb25lIGZvciB0cmFuc21pc3Npb24sIGFuZCBvbmUgZm9yCisJCSAgICByZWNlcHRpb24uCistIGRtYS1uYW1lcyAgICAgICA6IE11c3QgY29udGFpbiBhIGxpc3Qgb2YgdHdvIERNQSBuYW1lcywgInR4IiBhbmQgInJ4Ii4KKworCitQaW5jdHJsIHByb3BlcnRpZXMgbWlnaHQgYmUgbmVlZGVkLCB0b28uIFNlZSB0aGVyZS4KKworRXhhbXBsZToKKworCWlpYzA6IGkyY0BlNjUwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxpaWMtcjhhNzc5MCIsICJyZW5lc2FzLHJtb2JpbGUtaWljIjsKKwkJcmVnID0gPDAgMHhlNjUwMDAwMCAwIDB4NDI1PjsKKwkJaW50ZXJydXB0cyA9IDwwIDE3NCBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJY2xvY2tzID0gPCZtc3RwM19jbGtzIFI4QTc3OTBfQ0xLX0lJQzA+OworCQljbG9jay1mcmVxdWVuY3kgPSA8NDAwMDAwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1zaXJmLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLXNpcmYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiYWY5ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1zaXJmLnR4dApAQCAtMCwwICsxLDE5IEBACitJMkMgZm9yIFNpUkZwcmltYUlJIHBsYXRmb3JtcworCitSZXF1aXJlZCBwcm9wZXJ0aWVzIDoKKy0gY29tcGF0aWJsZSA6IE11c3QgYmUgInNpcmYscHJpbWEyLWkyYyIKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgICAgIHJlZ2lvbi4KKy0gaW50ZXJydXB0czogaW50ZXJydXB0IG51bWJlciB0byB0aGUgY3B1LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjbG9jay1mcmVxdWVuY3kgOiBDb25zdGFpbnMgZGVzaXJlZCBJMkMvSFMtSTJDIGJ1cyBjbG9jayBmcmVxdWVuY3kgaW4gSHouCisgIFRoZSBhYnNlbmNlIG9mIHRoZSBwcm9wb2VydHkgaW5kaWNhdGVzIHRoZSBkZWZhdWx0IGZyZXF1ZW5jeSAxMDAga0h6LgorCitFeGFtcGxlcyA6CisKK2kyYzA6IGkyY0BiMDBlMDAwMCB7CisgICAgY29tcGF0aWJsZSA9ICJzaXJmLHByaW1hMi1pMmMiOworICAgIHJlZyA9IDwweGIwMGUwMDAwIDB4MTAwMDA+OworICAgIGludGVycnVwdHMgPSA8MjQ+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLXN0LWRkY2kyYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1zdC1kZGNpMmMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkODFhNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1zdC1kZGNpMmMudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1NUIE1pY3JvZWxlY3Ryb25pY3MgRERDIEkyQworCitSZXF1aXJlZCBwcm9wZXJ0aWVzIDoKKy0gY29tcGF0aWJsZSA6IE11c3QgYmUgInN0LGRkY2kyYyIKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgICAgIHJlZ2lvbi4KKy0gaW50ZXJydXB0czogaW50ZXJydXB0IG51bWJlciB0byB0aGUgY3B1LgorLSAjYWRkcmVzcy1jZWxscyA9IDwxPjsKKy0gI3NpemUtY2VsbHMgPSA8MD47CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIENoaWxkIG5vZGVzIGNvbmZvcm1pbmcgdG8gaTJjIGJ1cyBiaW5kaW5nCisKK0V4YW1wbGVzIDoKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtc3QudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtc3QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjMjZmZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1zdC50eHQKQEAgLTAsMCArMSw0MSBAQAorU1QgU1NDIGJpbmRpbmcsIGZvciBJMkMgbW9kZSBvcGVyYXRpb24KKworUmVxdWlyZWQgcHJvcGVydGllcyA6CistIGNvbXBhdGlibGUgOiBNdXN0IGJlICJzdCxjb21tcy1zc2MtaTJjIiBvciAic3QsY29tbXMtc3NjNC1pMmMiCistIHJlZyA6IE9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKy0gaW50ZXJydXB0cyA6IHRoZSBpbnRlcnJ1cHQgc3BlY2lmaWVyCistIGNsb2NrLW5hbWVzOiBNdXN0IGNvbnRhaW4gInNzYyIuCistIGNsb2NrczogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIG5hbWUgaW4gY2xvY2stbmFtZXMuIFNlZSB0aGUgY29tbW9uCisgIGNsb2NrIGJpbmRpbmdzLgorLSBBIHBpbmN0cmwgc3RhdGUgbmFtZWQgImRlZmF1bHQiIG11c3QgYmUgZGVmaW5lZCB0byBzZXQgcGlucyBpbiBtb2RlIG9mCisgIG9wZXJhdGlvbiBmb3IgSTJDIHRyYW5zZmVyLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzIDoKKy0gY2xvY2stZnJlcXVlbmN5IDogRGVzaXJlZCBJMkMgYnVzIGNsb2NrIGZyZXF1ZW5jeSBpbiBIei4gSWYgbm90IHNwZWNpZmllZCwKKyAgdGhlIGRlZmF1bHQgMTAwIGtIeiBmcmVxdWVuY3kgd2lsbCBiZSB1c2VkLiBBcyBvbmx5IE5vcm1hbCBhbmQgRmFzdCBtb2RlcworICBhcmUgc3VwcG9ydGVkLCBwb3NzaWJsZSB2YWx1ZXMgYXJlIDEwMDAwMCBhbmQgNDAwMDAwLgorLSBzdCxpMmMtbWluLXNjbC1wdWxzZS13aWR0aC11cyA6IFRoZSBtaW5pbXVtIHZhbGlkIFNDTCBwdWxzZSB3aWR0aCB0aGF0IGlzCisgIGFsbG93ZWQgdGhyb3VnaCB0aGUgZGVnbGl0Y2ggY2lyY3VpdC4gSW4gdW5pdHMgb2YgdXMuCistIHN0LGkyYy1taW4tc2RhLXB1bHNlLXdpZHRoLXVzIDogVGhlIG1pbmltdW0gdmFsaWQgU0RBIHB1bHNlIHdpZHRoIHRoYXQgaXMKKyAgYWxsb3dlZCB0aHJvdWdoIHRoZSBkZWdsaXRjaCBjaXJjdWl0LiBJbiB1bml0cyBvZiB1cy4KKy0gQSBwaW5jdHJsIHN0YXRlIG5hbWVkICJpZGxlIiBjb3VsZCBiZSBkZWZpbmVkIHRvIHNldCBwaW5zIGluIGlkbGUgc3RhdGUKKyAgd2hlbiBJMkMgaW5zdGFuY2UgaXMgbm90IHBlcmZvcm1pbmcgYSB0cmFuc2Zlci4KKy0gQSBwaW5jdHJsIHN0YXRlIG5hbWVkICJzbGVlcCIgY291bGQgYmUgZGVmaW5lZCB0byBzZXQgcGlucyBpbiBzbGVlcCBzdGF0ZQorICB3aGVuIGRyaXZlciBlbnRlcnMgaW4gc3VzcGVuZC4KKworCisKK0V4YW1wbGUgOgorCitpMmMwOiBpMmNAZmVkNDAwMDAgeworCWNvbXBhdGlibGUJPSAic3QsY29tbXMtc3NjNC1pMmMiOworCXJlZwkJPSA8MHhmZWQ0MDAwMCAweDExMD47CisJaW50ZXJydXB0cwk9ICA8R0lDX1NQSSAxODcgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJY2xvY2tzCQk9IDwmY2xrX3NfYTBfbHMgQ0xLX0lDTl9SRUc+OworCWNsb2NrLW5hbWVzCT0gInNzYyI7CisJY2xvY2stZnJlcXVlbmN5ID0gPDQwMDAwMD47CisJcGluY3RybC1uYW1lcwk9ICJkZWZhdWx0IjsKKwlwaW5jdHJsLTAJPSA8JnBpbmN0cmxfaTJjMF9kZWZhdWx0PjsKKwlzdCxpMmMtbWluLXNjbC1wdWxzZS13aWR0aC11cyA9IDwwPjsKKwlzdCxpMmMtbWluLXNkYS1wdWxzZS13aWR0aC11cyA9IDw1PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1zdW54aS1wMndpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLXN1bnhpLXAyd2kudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiNzY1NDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1zdW54aS1wMndpLnR4dApAQCAtMCwwICsxLDQxIEBACisKKyogQWxsd2lubmVyIFAyV0kgKFB1c2gvUHVsbCAyIFdpcmUgSW50ZXJmYWNlKSBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgOgorCisgLSByZWcgICAgICAgICAgICAgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlLgorIC0gY29tcGF0aWJsZSAgICAgIDogU2hvdWxkIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICAgLSAiYWxsd2lubmVyLHN1bjZpLWEzMS1wMndpIgorIC0gaW50ZXJydXB0cyAgICAgIDogVGhlIGludGVycnVwdCBsaW5lIGNvbm5lY3RlZCB0byB0aGUgUDJXSSBwZXJpcGhlcmFsLgorIC0gY2xvY2tzICAgICAgICAgIDogVGhlIGdhdGUgY2xrIGNvbm5lY3RlZCB0byB0aGUgUDJXSSBwZXJpcGhlcmFsLgorIC0gcmVzZXRzICAgICAgICAgIDogVGhlIHJlc2V0IGxpbmUgY29ubmVjdGVkIHRvIHRoZSBQMldJIHBlcmlwaGVyYWwuCisKK09wdGlvbmFsIHByb3BlcnRpZXMgOgorCisgLSBjbG9jay1mcmVxdWVuY3kgOiBEZXNpcmVkIFAyV0kgYnVzIGNsb2NrIGZyZXF1ZW5jeSBpbiBIei4gSWYgbm90IHNldCB0aGUKK2RlZmF1bHQgZnJlcXVlbmN5IGlzIDEwMGtIegorCitBIFAyV0kgbWF5IGNvbnRhaW4gb25lIGNoaWxkIG5vZGUgZW5jb2RpbmcgYSBQMldJIHNsYXZlIGRldmljZS4KKworU2xhdmUgZGV2aWNlIHByb3BlcnRpZXM6CisgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisgICAtIHJlZyAgICAgICAgICAgOiB0aGUgSTJDIHNsYXZlIGFkZHJlc3MgdXNlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uCisgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzIHRvIHN3aXRjaCBmcm9tIEkyQyB0byBQMldJIG1vZGUKKworRXhhbXBsZToKKworCXAyd2lAMDFmMDM0MDAgeworCQljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW42aS1hMzEtcDJ3aSI7CisJCXJlZyA9IDwweDAxZjAzNDAwIDB4NDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDM5IDQ+OworCQljbG9ja3MgPSA8JmFwYjBfZ2F0ZXMgMz47CisJCWNsb2NrLWZyZXF1ZW5jeSA9IDw2MDAwMDAwPjsKKwkJcmVzZXRzID0gPCZhcGIwX3JzdCAzPjsKKworCQlheHAyMjE6IHBtaWNANjggeworCQkJY29tcGF0aWJsZSA9ICJ4LXBvd2VycyxheHAyMjEiOworCQkJcmVnID0gPDB4Njg+OworCisJCQkvKiAuLi4gKi8KKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtdW5pcGhpZXItZi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy11bmlwaGllci1mLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2ZjNmY4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtdW5pcGhpZXItZi50eHQKQEAgLTAsMCArMSwyNSBAQAorVW5pUGhpZXIgSTJDIGNvbnRyb2xsZXIgKEZJRk8tYnVpbHRpbikKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJzb2Npb25leHQsdW5pcGhpZXItZmkyYyIuCistICNhZGRyZXNzLWNlbGxzOiBzaG91bGQgYmUgMS4KKy0gI3NpemUtY2VsbHM6IHNob3VsZCBiZSAwLgorLSByZWc6IG9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UuCistIGludGVycnVwdHM6IGEgc2luZ2xlIGludGVycnVwdCBzcGVjaWZpZXIuCistIGNsb2NrczogcGhhbmRsZSB0byB0aGUgaW5wdXQgY2xvY2suCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrLWZyZXF1ZW5jeTogZGVzaXJlZCBJMkMgYnVzIGZyZXF1ZW5jeSBpbiBIei4gIFRoZSBtYXhpbXVtIHN1cHBvcnRlZAorICB2YWx1ZSBpcyA0MDAwMDAuICBEZWZhdWx0cyB0byAxMDAwMDAgaWYgbm90IHNwZWNpZmllZC4KKworRXhhbXBsZXM6CisKKwlpMmMwOiBpMmNANTg3ODAwMDAgeworCQljb21wYXRpYmxlID0gInNvY2lvbmV4dCx1bmlwaGllci1maTJjIjsKKwkJcmVnID0gPDB4NTg3ODAwMDAgMHg4MD47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDQxIDQ+OworCQljbG9ja3MgPSA8JmkyY19jbGs+OworCQljbG9jay1mcmVxdWVuY3kgPSA8MTAwMDAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtdW5pcGhpZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtdW5pcGhpZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ZjlkOTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy11bmlwaGllci50eHQKQEAgLTAsMCArMSwyNSBAQAorVW5pUGhpZXIgSTJDIGNvbnRyb2xsZXIgKEZJRk8tbGVzcykKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJzb2Npb25leHQsdW5pcGhpZXItaTJjIi4KKy0gI2FkZHJlc3MtY2VsbHM6IHNob3VsZCBiZSAxLgorLSAjc2l6ZS1jZWxsczogc2hvdWxkIGJlIDAuCistIHJlZzogb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZS4KKy0gaW50ZXJydXB0czogYSBzaW5nbGUgaW50ZXJydXB0IHNwZWNpZmllci4KKy0gY2xvY2tzOiBwaGFuZGxlIHRvIHRoZSBpbnB1dCBjbG9jay4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gY2xvY2stZnJlcXVlbmN5OiBkZXNpcmVkIEkyQyBidXMgZnJlcXVlbmN5IGluIEh6LiAgVGhlIG1heGltdW0gc3VwcG9ydGVkCisgIHZhbHVlIGlzIDQwMDAwMC4gIERlZmF1bHRzIHRvIDEwMDAwMCBpZiBub3Qgc3BlY2lmaWVkLgorCitFeGFtcGxlczoKKworCWkyYzA6IGkyY0A1ODQwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic29jaW9uZXh0LHVuaXBoaWVyLWkyYyI7CisJCXJlZyA9IDwweDU4NDAwMDAwIDB4NDA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJCWludGVycnVwdHMgPSA8MCA0MSAxPjsKKwkJY2xvY2tzID0gPCZpMmNfY2xrPjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDEwMDAwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLXZlcnNhdGlsZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy12ZXJzYXRpbGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MWQzMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy12ZXJzYXRpbGUudHh0CkBAIC0wLDAgKzEsMTAgQEAKK2kyYyBDb250cm9sbGVyIG9uIEFSTSBWZXJzYXRpbGUgcGxhdGZvcm06CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBNdXN0IGJlICJhcm0sdmVyc2F0aWxlLWkyYyI7CistIHJlZworLSAjYWRkcmVzcy1jZWxscyA9IDwxPjsKKy0gI3NpemUtY2VsbHMgPSA8MD47CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIENoaWxkIG5vZGVzIGNvbmZvcm1pbmcgdG8gaTJjIGJ1cyBiaW5kaW5nCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy12dDg1MDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtdnQ4NTAwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGE0MjVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtdnQ4NTAwLnR4dApAQCAtMCwwICsxLDI0IEBACisqIFdvbmRlcm1lZGlhIEkyQyBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgOgorCisgLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJ3bSx3bTg1MDUtaTJjIgorIC0gcmVnIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorIC0gaW50ZXJydXB0cyA6IDxJUlE+IHdoZXJlIElSUSBpcyB0aGUgaW50ZXJydXB0IG51bWJlcgorIC0gY2xvY2tzIDogcGhhbmRsZSB0byB0aGUgSTJDIGNsb2NrIHNvdXJjZQorCitPcHRpb25hbCBwcm9wZXJ0aWVzIDoKKworIC0gY2xvY2stZnJlcXVlbmN5IDogZGVzaXJlZCBJMkMgYnVzIGNsb2NrIGZyZXF1ZW5jeSBpbiBIei4KKwlWYWxpZCB2YWx1ZXMgYXJlIDEwMDAwMCBhbmQgNDAwMDAwLgorCURlZmF1bHQgdG8gMTAwMDAwIGlmIG5vdCBzcGVjaWZpZWQsIG9yIGludmFsaWQgdmFsdWUuCisKK0V4YW1wbGUgOgorCisJaTJjXzA6IGkyY0BkODI4MDAwMCB7CisJCWNvbXBhdGlibGUgPSAid20sd204NTA1LWkyYyI7CisJCXJlZyA9IDwweGQ4MjgwMDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MTk+OworCQljbG9ja3MgPSA8JmNsa2kyYzA+OworCQljbG9jay1mcmVxdWVuY3kgPSA8NDAwMDAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMteGdlbmUtc2xpbXByby50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy14Z2VuZS1zbGltcHJvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmIyYzIwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMteGdlbmUtc2xpbXByby50eHQKQEAgLTAsMCArMSwxNSBAQAorQVBNIFgtR2VuZSBTTElNcHJvIE1haWxib3ggSTJDIERyaXZlcgorCitBbiBJMkMgY29udHJvbGxlciBhY2Nlc3NlZCBvdmVyIHRoZSAiU0xJTXBybyIgbWFpbGJveC4KKworUmVxdWlyZWQgcHJvcGVydGllcyA6CisKKyAtIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImFwbSx4Z2VuZS1zbGltcHJvLWkyYyIKKyAtIG1ib3hlcyA6IHVzZSB0aGUgbGFiZWwgcmVmZXJlbmNlIGZvciB0aGUgbWFpbGJveCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyLgorCSAgICBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0aGUgY2hhbm5lbCBudW1iZXIuCisKK0V4YW1wbGUgOgorCWkyY3NsaW1wcm8geworCQljb21wYXRpYmxlID0gImFwbSx4Z2VuZS1zbGltcHJvLWkyYyI7CisJCW1ib3hlcyA9IDwmbWFpbGJveCAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMteGlpYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy14aWljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWFiYmU5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMteGlpYy50eHQKQEAgLTAsMCArMSwyMiBAQAorWGlsaW54IElJQyBjb250cm9sbGVyOgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogTXVzdCBiZSAieGxueCx4cHMtaWljLTIuMDAuYSIKKy0gcmVnIDogSUlDIHJlZ2lzdGVyIGxvY2F0aW9uIGFuZCBsZW5ndGgKKy0gaW50ZXJydXB0cyA6IElJQyBjb250cm9sbGVyIHVudGVycnVwdAorLSAjYWRkcmVzcy1jZWxscyA9IDwxPgorLSAjc2l6ZS1jZWxscyA9IDwwPgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBDaGlsZCBub2RlcyBjb25mb3JtaW5nIHRvIGkyYyBidXMgYmluZGluZworCitFeGFtcGxlOgorCisJYXhpX2lpY18wOiBpMmNANDA4MDAwMDAgeworCQljb21wYXRpYmxlID0gInhsbngseHBzLWlpYy0yLjAwLmEiOworCQlpbnRlcnJ1cHRzID0gPCAxIDIgPjsKKwkJcmVnID0gPCAweDQwODAwMDAwIDB4MTAwMDAgPjsKKworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLXhscDl4eC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy14bHA5eHgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MThlZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy14bHA5eHgudHh0CkBAIC0wLDAgKzEsMjIgQEAKK0RldmljZSB0cmVlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBJMkMgY29udHJvbGxlciBvbiB0aGUgWExQOXh4LzV4eCBTb0MKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSAgICAgIDogc2hvdWxkIGJlICJuZXRsb2dpYyx4bHA5ODAtaTJjIgorLSByZWcgICAgICAgICAgICAgOiBidXMgYWRkcmVzcyBzdGFydCBhbmQgYWRkcmVzcyByYW5nZSBzaXplIG9mIGRldmljZQorLSBpbnRlcnJ1cHRzICAgICAgOiBpbnRlcnJ1cHQgbnVtYmVyCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrLWZyZXF1ZW5jeSA6IGZyZXF1ZW5jeSBvZiBidXMgY2xvY2sgaW4gSHoKKyAgICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gMTAwIEtIeiB3aGVuIHRoZSBwcm9wZXJ0eSBpcyBub3Qgc3BlY2lmaWVkCisKK0V4YW1wbGU6CisKK2kyYzA6IGkyY0AxMTMxMDAgeworCWNvbXBhdGlibGUgPSAibmV0bG9naWMseGxwOTgwLWkyYyI7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47CisJcmVnID0gPDAgMHgxMTMxMDAgMHgxMDA+OworCWNsb2NrLWZyZXF1ZW5jeSA9IDw0MDAwMDA+OworCWludGVycnVwdHMgPSA8MzA+OworCWludGVycnVwdC1wYXJlbnQgPSA8JnBpYz47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhOTkxNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy50eHQKQEAgLTAsMCArMSw0NSBAQAorR2VuZXJpYyBkZXZpY2UgdHJlZSBiaW5kaW5ncyBmb3IgSTJDIGJ1c3NlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyBnZW5lcmljIGJpbmRpbmdzIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGRlc2NyaWJlIEkyQworYnVzc2VzIGluIGEgZGV2aWNlIHRyZWUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSAjYWRkcmVzcy1jZWxscyAgLSBzaG91bGQgYmUgPDE+LiBSZWFkIG1vcmUgYWJvdXQgYWRkcmVzc2VzIGJlbG93LgorLSAjc2l6ZS1jZWxscyAgICAgLSBzaG91bGQgYmUgPDA+LgorLSBjb21wYXRpYmxlICAgICAgLSBuYW1lIG9mIEkyQyBidXMgY29udHJvbGxlciBmb2xsb3dpbmcgZ2VuZXJpYyBuYW1lcworCQkgICAgcmVjb21tZW5kZWQgcHJhY3RpY2UuCisKK0ZvciBvdGhlciByZXF1aXJlZCBwcm9wZXJ0aWVzIGUuZy4gdG8gZGVzY3JpYmUgcmVnaXN0ZXIgc2V0cywKK2Nsb2NrcywgZXRjLiBjaGVjayB0aGUgYmluZGluZyBkb2N1bWVudGF0aW9uIG9mIHRoZSBzcGVjaWZpYyBkcml2ZXIuCisKK1RoZSBjZWxscyBwcm9wZXJ0aWVzIGFib3ZlIGRlZmluZSB0aGF0IGFuIGFkZHJlc3Mgb2YgY2hpbGRyZW4gb2YgYW4gSTJDIGJ1cworYXJlIGRlc2NyaWJlZCBieSBhIHNpbmdsZSB2YWx1ZS4gVGhpcyBpcyB1c3VhbGx5IGEgNyBiaXQgYWRkcmVzcy4gSG93ZXZlciwKK2ZsYWdzIGNhbiBiZSBhdHRhY2hlZCB0byB0aGUgYWRkcmVzcy4gSTJDX1RFTl9CSVRfQUREUkVTUyBpcyB1c2VkIHRvIG1hcmsgYSAxMAorYml0IGFkZHJlc3MuIEl0IGlzIG5lZWRlZCB0byBhdm9pZCB0aGUgYW1iaWd1aXR5IGJldHdlZW4gZS5nLiBhIDcgYml0IGFkZHJlc3MKK29mIDB4NTAgYW5kIGEgMTAgYml0IGFkZHJlc3Mgb2YgMHgwNTAgd2hpY2gsIGluIHRoZW9yeSwgY2FuIGJlIG9uIHRoZSBzYW1lIGJ1cy4KK0Fub3RoZXIgZmxhZyBpcyBJMkNfT1dOX1NMQVZFX0FERFJFU1MgdG8gbWFyayBhZGRyZXNzZXMgb24gd2hpY2ggd2UgbGlzdGVuIHRvCitiZSBkZXZpY2VzIG91cnNlbHZlcy4KKworT3B0aW9uYWwgcHJvcGVydGllcworLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGVzZSBwcm9wZXJ0aWVzIG1heSBub3QgYmUgc3VwcG9ydGVkIGJ5IGFsbCBkcml2ZXJzLiBIb3dldmVyLCBpZiBhIGRyaXZlcgord2FudHMgdG8gc3VwcG9ydCBvbmUgb2YgdGhlIGJlbG93IGZlYXR1cmVzLCBpdCBzaG91bGQgYWRhcHQgdGhlIGJpbmRpbmdzIGJlbG93LgorCistIGNsb2NrLWZyZXF1ZW5jeQktIGZyZXF1ZW5jeSBvZiBidXMgY2xvY2sgaW4gSHouCistIHdha2V1cC1zb3VyY2UJCS0gZGV2aWNlIGNhbiBiZSB1c2VkIGFzIGEgd2FrZXVwIHNvdXJjZS4KKworLSBpbnRlcnJ1cHRzCQktIGludGVycnVwdHMgdXNlZCBieSB0aGUgZGV2aWNlLgorLSBpbnRlcnJ1cHQtbmFtZXMJLSAiaXJxIiBhbmQgIndha2V1cCIgbmFtZXMgYXJlIHJlY29nbml6ZWQgYnkgSTJDIGNvcmUsCisJCQkgIG90aGVyIG5hbWVzIGFyZSBsZWZ0IHRvIGluZGl2aWR1YWwgZHJpdmVycy4KKworQmluZGluZyBtYXkgY29udGFpbiBvcHRpb25hbCAiaW50ZXJydXB0cyIgcHJvcGVydHksIGRlc2NyaWJpbmcgaW50ZXJydXB0cwordXNlZCBieSB0aGUgZGV2aWNlLiBJMkMgY29yZSB3aWxsIGFzc2lnbiAiaXJxIiBpbnRlcnJ1cHQgKG9yIHRoZSB2ZXJ5IGZpcnN0CitpbnRlcnJ1cHQgaWYgbm90IHVzaW5nIGludGVycnVwdCBuYW1lcykgYXMgcHJpbWFyeSBpbnRlcnJ1cHQgZm9yIHRoZSBzbGF2ZS4KKworQWxzbywgaWYgZGV2aWNlIGlzIG1hcmtlZCBhcyBhIHdha2V1cCBzb3VyY2UsIEkyQyBjb3JlIHdpbGwgc2V0IHVwICJ3YWtldXAiCitpbnRlcnJ1cHQgZm9yIHRoZSBkZXZpY2UuIElmICJ3YWtldXAiIGludGVycnVwdCBuYW1lIGlzIG5vdCBwcmVzZW50IGluIHRoZQorYmluZGluZywgdGhlbiBwcmltYXJ5IGludGVycnVwdCB3aWxsIGJlIHVzZWQgYXMgd2FrZXVwIGludGVycnVwdC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvbnZpZGlhLHRlZ3JhMjAtaTJjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvbnZpZGlhLHRlZ3JhMjAtaTJjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTY3MTZiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9udmlkaWEsdGVncmEyMC1pMmMudHh0CkBAIC0wLDAgKzEsNzUgQEAKK05WSURJQSBUZWdyYTIwL1RlZ3JhMzAvVGVncmExMTQgSTJDIGNvbnRyb2xsZXIgZHJpdmVyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogRm9yIFRlZ3JhMjAsIG11c3QgYmUgb25lIG9mICJudmlkaWEsdGVncmEyMC1pMmMtZHZjIiBvcgorICAibnZpZGlhLHRlZ3JhMjAtaTJjIi4gIEZvciBUZWdyYTMwLCBtdXN0IGJlICJudmlkaWEsdGVncmEzMC1pMmMiLgorICBGb3IgVGVncmExMTQsIG11c3QgYmUgIm52aWRpYSx0ZWdyYTExNC1pMmMiLiAgT3RoZXJ3aXNlLCBtdXN0IGJlCisgICJudmlkaWEsPGNoaXA+LWkyYyIsIHBsdXMgYXQgbGVhc3Qgb25lIG9mIHRoZSBhYm92ZSwgd2hlcmUgPGNoaXA+IGlzCisgIHRlZ3JhMTI0LCB0ZWdyYTEzMiwgb3IgdGVncmEyMTAuCisgIERldGFpbHMgb2YgY29tcGF0aWJsZSBhcmUgYXMgZm9sbG93czoKKyAgbnZpZGlhLHRlZ3JhMjAtaTJjLWR2YzogVGVncmEyMCBoYXMgc3BlY2lmaWMgSTJDIGNvbnRyb2xsZXIgY2FsbGVkIGFzIERWQyBJMkMKKwljb250cm9sbGVyLiBUaGlzIG9ubHkgc3VwcG9ydCBtYXN0ZXIgbW9kZSBvZiBJMkMgY29tbXVuaWNhdGlvbi4gUmVnaXN0ZXIKKwlpbnRlcmZhY2Uvb2Zmc2V0IGFuZCBpbnRlcnJ1cHRzIGhhbmRsaW5nIGFyZSBkaWZmZXJlbnQgdGhhbiBnZW5lcmljIEkyQworCWNvbnRyb2xsZXIuIERyaXZlciBvZiBEVkMgSTJDIGNvbnRyb2xsZXIgaXMgb25seSBjb21wYXRpYmxlIHdpdGgKKwkibnZpZGlhLHRlZ3JhMjAtaTJjLWR2YyIuCisgIG52aWRpYSx0ZWdyYTIwLWkyYzogVGVncmEyMCBoYXMgNCBnZW5lcmljIEkyQyBjb250cm9sbGVyLiBUaGlzIGNhbiBzdXBwb3J0CisJbWFzdGVyIGFuZCBzbGF2ZSBtb2RlIG9mIEkyQyBjb21tdW5pY2F0aW9uLiBUaGUgaTJjLXRlZ3JhIGRyaXZlciBvbmx5CisJc3VwcG9ydCBtYXN0ZXIgbW9kZSBvZiBJMkMgY29tbXVuaWNhdGlvbi4gRHJpdmVyIG9mIEkyQyBjb250cm9sbGVyIGlzCisJb25seSBjb21wYXRpYmxlIHdpdGggIm52aWRpYSx0ZWdyYTIwLWkyYyIuCisgIG52aWRpYSx0ZWdyYTMwLWkyYzogVGVncmEzMCBoYXMgNSBnZW5lcmljIEkyQyBjb250cm9sbGVyLiBUaGlzIGNvbnRyb2xsZXIgaXMKKwl2ZXJ5IG11Y2ggc2ltaWxhciB0byBUZWdyYTIwIEkyQyBjb250cm9sbGVyIHdpdGggYWRkaXRpb25hbCBmZWF0dXJlOgorCUNvbnRpbnVlIFRyYW5zZmVyIFN1cHBvcnQuIFRoaXMgZmVhdHVyZSBoZWxwcyB0byBpbXBsZW1lbnQgTV9OT19TVEFSVAorCWFzIHBlciBJMkMgY29yZSBBUEkgdHJhbnNmZXIgZmxhZ3MuIERyaXZlciBvZiBJMkMgY29udHJvbGxlciBpcworCWNvbXBhdGlibGUgd2l0aCAibnZpZGlhLHRlZ3JhMzAtaTJjIiB0byBlbmFibGUgdGhlIGNvbnRpbnVlIHRyYW5zZmVyCisJc3VwcG9ydC4gVGhpcyBpcyBhbHNvIGNvbXBhdGlibGUgd2l0aCAibnZpZGlhLHRlZ3JhMjAtaTJjIiB3aXRob3V0CisJY29udGludWUgdHJhbnNmZXIgc3VwcG9ydC4KKyAgbnZpZGlhLHRlZ3JhMTE0LWkyYzogVGVncmExMTQgaGFzIDUgZ2VuZXJpYyBJMkMgY29udHJvbGxlci4gVGhpcyBjb250cm9sbGVyIGlzCisJdmVyeSBtdWNoIHNpbWlsYXIgdG8gVGVncmEzMCBJMkMgY29udHJvbGxlciB3aXRoIHNvbWUgaGFyZHdhcmUKKwltb2RpZmljYXRpb246CisJIC0gVGVncmEzMC9UZWdyYTIwIEkyQyBjb250cm9sbGVyIGhhcyAyIGNsb2NrIHNvdXJjZSBjYWxsZWQgZGl2LWNsayBhbmQKKwkgICBmYXN0LWNsay4gVGVncmExMTQgaGFzIG9ubHkgb25lIGNsb2NrIHNvdXJjZSBjYWxsZWQgYXMgZGl2LWNsayBhbmQKKwkgICBoZW5jZSBjbG9jayBtZWNoYW5pc20gaXMgY2hhbmdlZCBpbiBJMkMgY29udHJvbGxlci4KKwkgLSBUZWdyYTMwL1RlZ3JhMjAgSTJDIGNvbnRyb2xsZXIgaGFzIGVuYWJsZWQgcGVyIHBhY2tldCB0cmFuc2ZlciBieQorCSAgIGRlZmF1bHQgYW5kIHRoZXJlIGlzIG5vIHdheSB0byBkaXNhYmxlIGl0LiBUZWdyYTExNCBoYXMgdGhpcworCSAgIGludGVycnVwdCBkaXNhYmxlIGJ5IGRlZmF1bHQgYW5kIFNXIG5lZWQgdG8gZW5hYmxlIGV4cGxpY2l0bHkuCisJRHVlIHRvIGFib3ZlIGNoYW5nZXMsIFRlZ3JhMTE0IEkyQyBkcml2ZXIgbWFrZXMgaW5jb21wYXRpYmxlIHdpdGgKKwlwcmV2aW91cyBoYXJkd2FyZSBkcml2ZXIuIEhlbmNlLCB0ZWdyYTExNCBJMkMgY29udHJvbGxlciBpcyBjb21wYXRpYmxlCisJd2l0aCAibnZpZGlhLHRlZ3JhMTE0LWkyYyIuCistIHJlZzogU2hvdWxkIGNvbnRhaW4gSTJDIGNvbnRyb2xsZXIgcmVnaXN0ZXJzIHBoeXNpY2FsIGFkZHJlc3MgYW5kIGxlbmd0aC4KKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gSTJDIGNvbnRyb2xsZXIgaW50ZXJydXB0cy4KKy0gYWRkcmVzcy1jZWxsczogQWRkcmVzcyBjZWxscyBmb3IgSTJDIGRldmljZSBhZGRyZXNzLgorLSBzaXplLWNlbGxzOiBTaXplIG9mIHRoZSBJMkMgZGV2aWNlIGFkZHJlc3MuCistIGNsb2NrczogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIGNsb2NrLW5hbWVzLgorICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKy0gY2xvY2stbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIFRlZ3JhMjAvVGVncmEzMDoKKyAgLSBkaXYtY2xrCisgIC0gZmFzdC1jbGsKKyAgVGVncmExMTQ6CisgIC0gZGl2LWNsaworLSByZXNldHM6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiByZXNldC1uYW1lcy4KKyAgU2VlIC4uL3Jlc2V0L3Jlc2V0LnR4dCBmb3IgZGV0YWlscy4KKy0gcmVzZXQtbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIC0gaTJjCistIGRtYXM6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKyAgU2VlIC4uL2RtYS9kbWEudHh0IGZvciBkZXRhaWxzLgorLSBkbWEtbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIC0gcngKKyAgLSB0eAorCitFeGFtcGxlOgorCisJaTJjQDcwMDBjMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJudmlkaWEsdGVncmEyMC1pMmMiOworCQlyZWcgPSA8MHg3MDAwYzAwMCAweDEwMD47CisJCWludGVycnVwdHMgPSA8MCAzOCAweDA0PjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQljbG9ja3MgPSA8JnRlZ3JhX2NhciAxMj4sIDwmdGVncmFfY2FyIDEyND47CisJCWNsb2NrLW5hbWVzID0gImRpdi1jbGsiLCAiZmFzdC1jbGsiOworCQlyZXNldHMgPSA8JnRlZ3JhX2NhciAxMj47CisJCXJlc2V0LW5hbWVzID0gImkyYyI7CisJCWRtYXMgPSA8JmFwYmRtYSAxNj4sIDwmYXBiZG1hIDE2PjsKKwkJZG1hLW5hbWVzID0gInJ4IiwgInR4IjsKKwkJc3RhdHVzID0gImRpc2FibGVkIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9xY29tLGkyYy1xdXAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9xY29tLGkyYy1xdXAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjNzE3NTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL3Fjb20saTJjLXF1cC50eHQKQEAgLTAsMCArMSw0MCBAQAorUXVhbGNvbW0gVW5pdmVyc2FsIFBlcmlwaGVyYWwgKFFVUCkgSTJDIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGU6IFNob3VsZCBiZToKKyAgICogInFjb20saTJjLXF1cC12MS4xLjEiIGZvciA4NjYwLCA4OTYwIGFuZCA4MDY0LgorICAgKiAicWNvbSxpMmMtcXVwLXYyLjEuMSIgZm9yIDg5NzQgdjEuCisgICAqICJxY29tLGkyYy1xdXAtdjIuMi4xIiBmb3IgODk3NCB2MiBhbmQgbGF0ZXIuCisgLSByZWc6IFNob3VsZCBjb250YWluIFFVUCByZWdpc3RlciBhZGRyZXNzIGFuZCBsZW5ndGguCisgLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBJMkMgaW50ZXJydXB0LgorCisgLSBjbG9ja3M6IEEgbGlzdCBvZiBwaGFuZGxlcyArIGNsb2NrLXNwZWNpZmllcnMsIG9uZSBmb3IgZWFjaCBlbnRyeSBpbgorICAgY2xvY2stbmFtZXMuCisgLSBjbG9jay1uYW1lczogU2hvdWxkIGNvbnRhaW46CisgICAqICJjb3JlIiBmb3IgdGhlIGNvcmUgY2xvY2sKKyAgICogImlmYWNlIiBmb3IgdGhlIEFIQiBjbG9jaworCisgLSAjYWRkcmVzcy1jZWxsczogU2hvdWxkIGJlIDwxPiBBZGRyZXNzIGNlbGxzIGZvciBpMmMgZGV2aWNlIGFkZHJlc3MKKyAtICNzaXplLWNlbGxzOiBTaG91bGQgYmUgPDA+IGFzIGkyYyBhZGRyZXNzZXMgaGF2ZSBubyBzaXplIGNvbXBvbmVudAorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorIC0gY2xvY2stZnJlcXVlbmN5OiBTaG91bGQgc3BlY2lmeSB0aGUgZGVzaXJlZCBpMmMgYnVzIGNsb2NrIGZyZXF1ZW5jeSBpbiBIeiwKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdHMgdG8gMTAwa0h6IGlmIG9taXR0ZWQuCisKK0NoaWxkIG5vZGVzIHNob3VsZCBjb25mb3JtIHRvIGkyYyBidXMgYmluZGluZy4KKworRXhhbXBsZToKKworIGkyY0BmOTkyNDAwMCB7CisgCWNvbXBhdGlibGUgPSAicWNvbSxpMmMtcXVwLXYyLjIuMSI7CisgCXJlZyA9IDwweGY5OTI0MDAwIDB4MTAwMD47CisgCWludGVycnVwdHMgPSA8MCA5NiAwPjsKKworIAljbG9ja3MgPSA8JmdjYyBHQ0NfQkxTUDFfUVVQMl9JMkNfQVBQU19DTEs+LCA8JmdjYyBHQ0NfQkxTUDFfQUhCX0NMSz47CisgCWNsb2NrLW5hbWVzID0gImNvcmUiLCAiaWZhY2UiOworCisgCWNsb2NrLWZyZXF1ZW5jeSA9IDwzNTUwMDA+OworCisgCSNhZGRyZXNzLWNlbGxzID0gPDE+OworIAkjc2l6ZS1jZWxscyA9IDwwPjsKKyB9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy90cml2aWFsLWRldmljZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy90cml2aWFsLWRldmljZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1MGNmMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL3RyaXZpYWwtZGV2aWNlcy50eHQKQEAgLTAsMCArMSwxMDUgQEAKK1RoaXMgaXMgYSBsaXN0IG9mIHRyaXZpYWwgaTJjIGRldmljZXMgdGhhdCBoYXZlIHNpbXBsZSBkZXZpY2UgdHJlZQorYmluZGluZ3MsIGNvbnNpc3Rpbmcgb25seSBvZiBhIGNvbXBhdGlibGUgZmllbGQsIGFuIGFkZHJlc3MgYW5kCitwb3NzaWJseSBhbiBpbnRlcnJ1cHQgbGluZS4KKworSWYgYSBkZXZpY2UgbmVlZHMgbW9yZSBzcGVjaWZpYyBiaW5kaW5ncywgc3VjaCBhcyBwcm9wZXJ0aWVzIHRvCitkZXNjcmliZSBzb21lIGFzcGVjdCBvZiBpdCwgdGhlcmUgbmVlZHMgdG8gYmUgYSBzcGVjaWZpYyBiaW5kaW5nCitkb2N1bWVudCBmb3IgaXQganVzdCBsaWtlIGFueSBvdGhlciBkZXZpY2VzLgorCisKK0NvbXBhdGlibGUJCVZlbmRvciAvIENoaXAKKz09PT09PT09PT0JCT09PT09PT09PT09PT0KK2FicmFjb24sYWJiNXplczMJCUFCLVJUQ01DLTMyLjc2OGtIei1CNVpFLVMzOiBSZWFsIFRpbWUgQ2xvY2svQ2FsZW5kYXIgTW9kdWxlIHdpdGggSTJDIEludGVyZmFjZQorYWQsYWQ3NDE0CQlTTUJ1cy9JMkMgRGlnaXRhbCBUZW1wZXJhdHVyZSBTZW5zb3IgaW4gNi1QaW4gU09UIHdpdGggU01CdXMgQWxlcnQgYW5kIE92ZXIgVGVtcGVyYXR1cmUgUGluCithZCxhZG05MjQwCQlBRE05MjQwOiAgQ29tcGxldGUgU3lzdGVtIEhhcmR3YXJlIE1vbml0b3IgZm9yIHVQcm9jZXNzb3ItQmFzZWQgU3lzdGVtcworYWRpLGFkdDc0NjEJCSsvLTFDIFRETSBFeHRlbmRlZCBUZW1wIFJhbmdlIEkuQworYWR0NzQ2MQkJCSsvLTFDIFRETSBFeHRlbmRlZCBUZW1wIFJhbmdlIEkuQworYWRpLGFkdDc0NzMJCSsvLTFDIFRETSBFeHRlbmRlZCBUZW1wIFJhbmdlIEkuQworYWRpLGFkdDc0NzUJCSsvLTFDIFRETSBFeHRlbmRlZCBUZW1wIFJhbmdlIEkuQworYWRpLGFkdDc0NzYJCSsvLTFDIFRETSBFeHRlbmRlZCBUZW1wIFJhbmdlIEkuQworYWRpLGFkdDc0OTAJCSsvLTFDIFRETSBFeHRlbmRlZCBUZW1wIFJhbmdlIEkuQworYWRpLGFkeGwzNDUJCVRocmVlLUF4aXMgRGlnaXRhbCBBY2NlbGVyb21ldGVyCithZGksYWR4bDM0NgkJVGhyZWUtQXhpcyBEaWdpdGFsIEFjY2VsZXJvbWV0ZXIgKGJhY2t3YXJkLWNvbXBhdGliaWxpdHkgdmFsdWUgImFkaSxhZHhsMzQ1IiBtdXN0IGJlIGxpc3RlZCB0b28pCithdCwyNGMwOAkJaTJjIHNlcmlhbCBlZXByb20gICgyNGN4eCkKK2F0bWVsLDI0YzAwCQlpMmMgc2VyaWFsIGVlcHJvbSAgKDI0Y3h4KQorYXRtZWwsMjRjMDEJCWkyYyBzZXJpYWwgZWVwcm9tICAoMjRjeHgpCithdG1lbCwyNGMwMgkJaTJjIHNlcmlhbCBlZXByb20gICgyNGN4eCkKK2F0bWVsLDI0YzA0CQlpMmMgc2VyaWFsIGVlcHJvbSAgKDI0Y3h4KQorYXRtZWwsMjRjMTYJCWkyYyBzZXJpYWwgZWVwcm9tICAoMjRjeHgpCithdG1lbCwyNGMzMgkJaTJjIHNlcmlhbCBlZXByb20gICgyNGN4eCkKK2F0bWVsLDI0YzY0CQlpMmMgc2VyaWFsIGVlcHJvbSAgKDI0Y3h4KQorYXRtZWwsMjRjMTI4CQlpMmMgc2VyaWFsIGVlcHJvbSAgKDI0Y3h4KQorYXRtZWwsMjRjMjU2CQlpMmMgc2VyaWFsIGVlcHJvbSAgKDI0Y3h4KQorYXRtZWwsMjRjNTEyCQlpMmMgc2VyaWFsIGVlcHJvbSAgKDI0Y3h4KQorYXRtZWwsMjRjMTAyNAkJaTJjIHNlcmlhbCBlZXByb20gICgyNGN4eCkKK2F0bWVsLGF0OTdzYzMyMDR0CWkyYyB0cnVzdGVkIHBsYXRmb3JtIG1vZHVsZSAoVFBNKQorY2FwZWxsYSxjbTMyMTgxCQlDTTMyMTgxOiBBbWJpZW50IExpZ2h0IFNlbnNvcgorY2FwZWxsYSxjbTMyMzIJCUNNMzIzMjogQW1iaWVudCBMaWdodCBTZW5zb3IKK2NhdGFseXN0LDI0YzMyCQlpMmMgc2VyaWFsIGVlcHJvbQorY2lycnVzLGNzNDJsNTEJCUNpcnJ1cyBMb2dpYyBDUzQyTDUxIGF1ZGlvIGNvZGVjCitkYWxsYXMsZHMxMzA3CQk2NCB4IDgsIFNlcmlhbCwgSTJDIFJlYWwtVGltZSBDbG9jaworZGFsbGFzLGRzMTMzOAkJSTJDIFJUQyB3aXRoIDU2LUJ5dGUgTlYgUkFNCitkYWxsYXMsZHMxMzQwCQlJMkMgUlRDIHdpdGggVHJpY2tsZSBDaGFyZ2VyCitkYWxsYXMsZHMxMzc0CQlJMkMsIDMyLUJpdCBCaW5hcnkgQ291bnRlciBXYXRjaGRvZyBSVEMgd2l0aCBUcmlja2xlIENoYXJnZXIgYW5kIFJlc2V0IElucHV0L091dHB1dAorZGFsbGFzLGRzMTYzMQkJSGlnaC1QcmVjaXNpb24gRGlnaXRhbCBUaGVybW9tZXRlcgorZGFsbGFzLGRzMTY4MgkJVG90YWwtRWxhcHNlZC1UaW1lIFJlY29yZGVyIHdpdGggQWxhcm0KK2RhbGxhcyxkczE3NzUJCVRpbnkgRGlnaXRhbCBUaGVybW9tZXRlciBhbmQgVGhlcm1vc3RhdAorZGFsbGFzLGRzMzIzMgkJRXh0cmVtZWx5IEFjY3VyYXRlIEnCskMgUlRDIHdpdGggSW50ZWdyYXRlZCBDcnlzdGFsIGFuZCBTUkFNCitkYWxsYXMsZHM0NTEwCQlDUFUgU3VwZXJ2aXNvciB3aXRoIE5vbnZvbGF0aWxlIE1lbW9yeSBhbmQgUHJvZ3JhbW1hYmxlIEkvTworZGFsbGFzLGRzNzUJCURpZ2l0YWwgVGhlcm1vbWV0ZXIgYW5kIFRoZXJtb3N0YXQKK2RsZyxkYTkwNTMJCURBOTA1MzogZmxleGlibGUgc3lzdGVtIGxldmVsIFBNSUMgd2l0aCBtdWx0aWNvcmUgc3VwcG9ydAorZGxnLGRhOTA2MwkJREE5MDYzOiBzeXN0ZW0gUE1JQyBmb3IgcXVhZC1jb3JlIGFwcGxpY2F0aW9uIHByb2Nlc3NvcnMKK2Vwc29uLHJ4ODAyNQkJSGlnaC1TdGFiaWxpdHkuIEkyQy1CdXMgSU5URVJGQUNFIFJFQUwgVElNRSBDTE9DSyBNT0RVTEUKK2Vwc29uLHJ4ODU4MQkJSTJDLUJVUyBJTlRFUkZBQ0UgUkVBTCBUSU1FIENMT0NLIE1PRFVMRQorZnNsLG1hZzMxMTAJCU1BRzMxMTA6IFh0cmluc2ljIEhpZ2ggQWNjdXJhY3ksIDNEIE1hZ25ldG9tZXRlcgorZnNsLG1jMTM4OTIJCU1DMTM4OTI6IFBvd2VyIE1hbmFnZW1lbnQgSW50ZWdyYXRlZCBDaXJjdWl0IChQTUlDKSBmb3IgaS5NWDM1LzUxCitmc2wsbW1hODQ1MAkJTU1BODQ1MFE6IFh0cmluc2ljIExvdy1wb3dlciwgMy1heGlzIFh0cmluc2ljIEFjY2VsZXJvbWV0ZXIKK2ZzbCxtcHIxMjEJCU1QUjEyMTogUHJveGltaXR5IENhcGFjaXRpdmUgVG91Y2ggU2Vuc29yIENvbnRyb2xsZXIKK2ZzbCxzZ3RsNTAwMAkJU0dUTDUwMDA6IFVsdHJhIExvdy1Qb3dlciBBdWRpbyBDb2RlYworZ210LGc3NTEJCUc3NTE6IERpZ2l0YWwgVGVtcGVyYXR1cmUgU2Vuc29yIGFuZCBUaGVybWFsIFdhdGNoZG9nIHdpdGggVHdvLVdpcmUgSW50ZXJmYWNlCitpbmZpbmVvbixzbGI5NjM1dHQJSW5maW5lb24gU0xCOTYzNSAoU29mdC0pIEkyQyBUUE0gKG9sZCBwcm90b2NvbCwgbWF4IDEwMGtoeikKK2luZmluZW9uLHNsYjk2NDV0dAlJbmZpbmVvbiBTTEI5NjQ1IEkyQyBUUE0gKG5ldyBwcm90b2NvbCwgbWF4IDQwMGtoeikKK2lzaWwsaXNsMTIwNTcJCUludGVyc2lsIElTTDEyMDU3IEkyQyBSVEMgQ2hpcAoraXNpbCxpc2wyOTAyOAkJSW50ZXJzaWwgSVNMMjkwMjggQW1iaWVudCBMaWdodCBhbmQgUHJveGltaXR5IFNlbnNvcgorbWF4aW0sZHMxMDUwCQk1IEJpdCBQcm9ncmFtbWFibGUsIFB1bHNlLVdpZHRoIE1vZHVsYXRvcgorbWF4aW0sbWF4MTIzNwkJTG93LVBvd2VyLCA0LS8xMi1DaGFubmVsLCAyLVdpcmUgU2VyaWFsLCAxMi1CaXQgQURDcworbWF4aW0sbWF4NjYyNQkJOS1CaXQvMTItQml0IFRlbXBlcmF0dXJlIFNlbnNvcnMgd2l0aCBJwrJDLUNvbXBhdGlibGUgU2VyaWFsIEludGVyZmFjZQorbWMscnYzMDI5YzIJCVJlYWwgVGltZSBDbG9jayBNb2R1bGUgd2l0aCBJMkMtQnVzCituYXRpb25hbCxsbTYzCQlUZW1wZXJhdHVyZSBzZW5zb3Igd2l0aCBpbnRlZ3JhdGVkIGZhbiBjb250cm9sCituYXRpb25hbCxsbTc1CQlJMkMgVEVNUCBTRU5TT1IKK25hdGlvbmFsLGxtODAJCVNlcmlhbCBJbnRlcmZhY2UgQUNQSS1Db21wYXRpYmxlIE1pY3JvcHJvY2Vzc29yIFN5c3RlbSBIYXJkd2FyZSBNb25pdG9yCituYXRpb25hbCxsbTg1CQlUZW1wZXJhdHVyZSBzZW5zb3Igd2l0aCBpbnRlZ3JhdGVkIGZhbiBjb250cm9sCituYXRpb25hbCxsbTkyCQnCsTAuMzPCsEMgQWNjdXJhdGUsIDEyLUJpdCArIFNpZ24gVGVtcGVyYXR1cmUgU2Vuc29yIGFuZCBUaGVybWFsIFdpbmRvdyBDb21wYXJhdG9yIHdpdGggVHdvLVdpcmUgSW50ZXJmYWNlCitudXZvdG9uLG5wY3Q1MDEJCWkyYyB0cnVzdGVkIHBsYXRmb3JtIG1vZHVsZSAoVFBNKQorbnhwLHBjYTk1NTYJCU9jdGFsIFNNQnVzIGFuZCBJMkMgcmVnaXN0ZXJlZCBpbnRlcmZhY2UKK254cCxwY2E5NTU3CQk4LWJpdCBJMkMtYnVzIGFuZCBTTUJ1cyBJL08gcG9ydCB3aXRoIHJlc2V0CitueHAscGNmODU2MwkJUmVhbC10aW1lIGNsb2NrL2NhbGVuZGFyCitueHAscGNmODUwNjMJCVRpbnkgUmVhbC1UaW1lIENsb2NrCitva2ksbWw4NnY3NjY3CQlPS0kgTUw4NlY3NjY3IHZpZGVvIGRlY29kZXIKK292dGksb3Y1NjQyCQlPVjU2NDI6IENvbG9yIENNT1MgUVNYR0EgKDUtbWVnYXBpeGVsKSBJbWFnZSBTZW5zb3Igd2l0aCBPbW5pQlNJIGFuZCBFbWJlZGRlZCBUcnVlRm9jdXMKK3Blcmljb20scHQ3YzQzMzgJUmVhbC10aW1lIENsb2NrIE1vZHVsZQorcGx4LHBleDg2NDgJCTQ4LUxhbmUsIDEyLVBvcnQgUENJIEV4cHJlc3MgR2VuIDIgKDUuMCBHVC9zKSBTd2l0Y2gKK3B1bHNlZGxpZ2h0LGxpZGFyLWxpdGUtdjIJUHVsc2VkbGlnaHQgTElEQVIgcmFuZ2UtZmluZGluZyBzZW5zb3IKK3JhbXRyb24sMjRjNjQJCWkyYyBzZXJpYWwgZWVwcm9tICAoMjRjeHgpCityaWNvaCxyMjAyNXNkCQlJMkMgYnVzIFNFUklBTCBJTlRFUkZBQ0UgUkVBTC1USU1FIENMT0NLIElDCityaWNvaCxyMjIyMXRsCQlJMkMgYnVzIFNFUklBTCBJTlRFUkZBQ0UgUkVBTC1USU1FIENMT0NLIElDCityaWNvaCxyczVjMzcyYQkJSTJDIGJ1cyBTRVJJQUwgSU5URVJGQUNFIFJFQUwtVElNRSBDTE9DSyBJQworcmljb2gscnM1YzM3MmIJCUkyQyBidXMgU0VSSUFMIElOVEVSRkFDRSBSRUFMLVRJTUUgQ0xPQ0sgSUMKK3JpY29oLHJ2NWMzODYJCUkyQyBidXMgU0VSSUFMIElOVEVSRkFDRSBSRUFMLVRJTUUgQ0xPQ0sgSUMKK3JpY29oLHJ2NWMzODdhCQlJMkMgYnVzIFNFUklBTCBJTlRFUkZBQ0UgUkVBTC1USU1FIENMT0NLIElDCitzYW1zdW5nLDI0YWQweGQxCVM1MjRBRDBYRjEgKDEyOEsvMjU2Sy1iaXQgU2VyaWFsIEVFUFJPTSBmb3IgTG93IFBvd2VyKQorc2d4LHZ6ODl4CQlTR1ggU2Vuc29ydGVjaCBWWjg5WCBTZW5zb3JzCitzaWksczM1MzkwYQkJMi13aXJlIENNT1MgcmVhbC10aW1lIGNsb2NrCitza3l3b3Jrcyxza3k4MTQ1MglTa3l3b3JrcyBTS1k4MTQ1MjogU2l4LUNoYW5uZWwgV2hpdGUgTEVEIERyaXZlciB3aXRoIFRvdWNoIFBhbmVsIEJpYXMgU3VwcGx5CitzdC1taWNybywyNGMyNTYJCWkyYyBzZXJpYWwgZWVwcm9tICAoMjRjeHgpCitzdG0sbTQxdDAwCQlTZXJpYWwgQWNjZXNzIFRJTUVLRUVQRVIKK3N0bSxtNDF0NjIJCVNlcmlhbCByZWFsLXRpbWUgY2xvY2sgKFJUQykgd2l0aCBhbGFybQorc3RtLG00MXQ4MAkJTTQxVDgwIC0gU0VSSUFMIEFDQ0VTUyBSVEMgV0lUSCBBTEFSTVMKK3Rhb3MsdHNsMjU1MAkJQW1iaWVudCBMaWdodCBTZW5zb3Igd2l0aCBTTUJVUy9Ud28gV2lyZSBTZXJpYWwgSW50ZXJmYWNlCit0aSxhZHM3ODI4CQk4LUNoYW5uZWxzLCAxMi1iaXQgQURDCit0aSxhZHM3ODMwCQk4LUNoYW5uZWxzLCA4LWJpdCBBREMKK3RpLHRzYzIwMDMJCUkyQyBUb3VjaC1TY3JlZW4gQ29udHJvbGxlcgordGksdG1wMTAyCQlMb3cgUG93ZXIgRGlnaXRhbCBUZW1wZXJhdHVyZSBTZW5zb3Igd2l0aCBTTUJVUy9Ud28gV2lyZSBTZXJpYWwgSW50ZXJmYWNlCit0aSx0bXAxMDMJCUxvdyBQb3dlciBEaWdpdGFsIFRlbXBlcmF0dXJlIFNlbnNvciB3aXRoIFNNQlVTL1R3byBXaXJlIFNlcmlhbCBJbnRlcmZhY2UKK3RpLHRtcDI3NQkJRGlnaXRhbCBUZW1wZXJhdHVyZSBTZW5zb3IKK3dpbmJvbmQsd3BjdDMwMQkJaTJjIHRydXN0ZWQgcGxhdGZvcm0gbW9kdWxlIChUUE0pCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FjY2VsL2JtYTE4MC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FjY2VsL2JtYTE4MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGEzNjc5ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWNjZWwvYm1hMTgwLnR4dApAQCAtMCwwICsxLDI4IEBACisqIEJvc2NoIEJNQTE4MCAvIEJNQTI1MCB0cmlheGlhbCBhY2NlbGVyYXRpb24gc2Vuc29yCisKK2h0dHA6Ly9vbWFwd29ybGQuY29tL0JNQTE4MF8xMTFfMTAwMjgzOS5wZGYKK2h0dHA6Ly9hZS1ic3QucmVzb3VyY2UuYm9zY2guY29tL21lZGlhL3Byb2R1Y3RzL2Rva3VtZW50ZS9ibWEyNTAvYnN0LWJtYTI1MC1kczAwMi0wNS5wZGYKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImJvc2NoLGJtYTE4MCIgb3IgImJvc2NoLGJtYTI1MCIKKyAgLSByZWcgOiB0aGUgSTJDIGFkZHJlc3Mgb2YgdGhlIHNlbnNvcgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCisgIC0gaW50ZXJydXB0LXBhcmVudCA6IHNob3VsZCBiZSB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyCisKKyAgLSBpbnRlcnJ1cHRzIDogaW50ZXJydXB0IG1hcHBpbmcgZm9yIEdQSU8gSVJRLCBpdCBzaG91bGQgYnkgY29uZmlndXJlZCB3aXRoCisJCWZsYWdzIElSUV9UWVBFX0xFVkVMX0hJR0ggfCBJUlFfVFlQRV9FREdFX1JJU0lORworCQlGb3IgdGhlIGJtYTI1MCB0aGUgZmlyc3QgaW50ZXJydXB0IGxpc3RlZCBtdXN0IGJlIHRoZSBvbmUKKwkJY29ubmVjdGVkIHRvIHRoZSBJTlQxIHBpbiwgdGhlIHNlY29uZCAob3B0aW9uYWwpIGludGVycnVwdAorCQlsaXN0ZWQgbXVzdCBiZSB0aGUgb25lIGNvbm5lY3RlZCB0byB0aGUgSU5UMiBwaW4uCisKK0V4YW1wbGU6CisKK2JtYTE4MEA0MCB7CisJY29tcGF0aWJsZSA9ICJib3NjaCxibWExODAiOworCXJlZyA9IDwweDQwPjsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvNj47CisJaW50ZXJydXB0cyA9IDwxOCAoSVJRX1RZUEVfTEVWRUxfSElHSCB8IElSUV9UWVBFX0VER0VfUklTSU5HKT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hY2NlbC9saXMzMDIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hY2NlbC9saXMzMDIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhMTliZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FjY2VsL2xpczMwMi50eHQKQEAgLTAsMCArMSwxMTkgQEAKK0xJUzMwMiBhY2NlbGVyb21ldGVyIGRldmljZXRyZWUgYmluZGluZ3MKKworVGhpcyBkZXZpY2UgaXMgbWF0Y2hlZCB2aWEgaXRzIGJ1cyBkcml2ZXJzLCBhbmQgaGFzIGEgbnVtYmVyIG9mIHByb3BlcnRpZXMKK3RoYXQgYXBwbHkgaW4gb24gdGhlIGdlbmVyaWMgZGV2aWNlIChpbmRlcGVuZGVudCBmcm9tIHRoZSBidXMpLgorCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHRoZSBTUEkgYmluZGluZ3M6CisgLSBjb21wYXRpYmxlOiAJCXNob3VsZCBiZSBzZXQgdG8gInN0LGxpczNsdjAyZF9zcGkiCisgLSByZWc6CQkJdGhlIGNoaXBzZWxlY3QgaW5kZXgKKyAtIHNwaS1tYXgtZnJlcXVlbmN5OgltYXhpbWFsIGJ1cyBzcGVlZCwgc2hvdWxkIGJlIHNldCB0byAxMDAwMDAwIHVubGVzcworCQkJY29uc3RyYWluZWQgYnkgZXh0ZXJuYWwgY2lyY3VpdHJ5CisgLSBpbnRlcnJ1cHRzOgkJdGhlIGludGVycnVwdCBnZW5lcmF0ZWQgYnkgdGhlIGRldmljZQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciB0aGUgSTJDIGJpbmRpbmdzOgorIC0gY29tcGF0aWJsZToJCXNob3VsZCBiZSBzZXQgdG8gInN0LGxpczNsdjAyZCIKKyAtIHJlZzoJCQlpMmMgc2xhdmUgYWRkcmVzcworIC0gVmRkLXN1cHBseToJCVRoZSBpbnB1dCBzdXBwbHkgZm9yIFZkZAorIC0gVmRkX0lPLXN1cHBseToJVGhlIGlucHV0IHN1cHBseSBmb3IgVmRkX0lPCisKKworT3B0aW9uYWwgcHJvcGVydGllcyBmb3IgYWxsIGJ1cyBkcml2ZXJzOgorCisgLSBzdCxjbGljay1zaW5nbGUte3gseSx6fToJaWYgcHJlc2VudCwgdGVsbHMgdGhlIGRldmljZSB0byBpc3N1ZSBhbgorCQkJCWludGVycnVwdCBvbiBzaW5nbGUgY2xpY2sgZXZlbnRzIG9uIHRoZQorCQkJCXgveS96IGF4aXMuCisgLSBzdCxjbGljay1kb3VibGUte3gseSx6fToJaWYgcHJlc2VudCwgdGVsbHMgdGhlIGRldmljZSB0byBpc3N1ZSBhbgorCQkJCWludGVycnVwdCBvbiBkb3VibGUgY2xpY2sgZXZlbnRzIG9uIHRoZQorCQkJCXgveS96IGF4aXMuCisgLSBzdCxjbGljay10aHJlc2gte3gseSx6fToJc2V0IHRoZSB4L3kveiBheGlzIHRocmVzaG9sZAorIC0gc3QsY2xpY2stY2xpY2stdGltZS1saW1pdDoJY2xpY2sgdGltZSBsaW1pdCwgZnJvbSAwIHRvIDEyNy41bXNlYworCQkJCXdpdGggc3RlcCBvZiAwLjUgbXNlYworIC0gc3QsY2xpY2stbGF0ZW5jeToJCWNsaWNrIGxhdGVuY3ksIGZyb20gMCB0byAyNTUgbXNlYyB3aXRoCisJCQkJc3RlcCBvZiAxIG1zZWMuCisgLSBzdCxjbGljay13aW5kb3c6CQljbGljayB3aW5kb3csIGZyb20gMCB0byAyNTUgbXNlYyB3aXRoCisJCQkJc3RlcCBvZiAxIG1zZWMuCisgLSBzdCxpcnF7MSwyfS1kaXNhYmxlOgkJZGlzYWJsZSBJUlEgMS8yCisgLSBzdCxpcnF7MSwyfS1mZi13dS0xOgkJcmFpc2UgSVJRIDEvMiBvbiBGRl9XVV8xIGNvbmRpdGlvbgorIC0gc3QsaXJxezEsMn0tZmYtd3UtMjoJCXJhaXNlIElSUSAxLzIgb24gRkZfV1VfMiBjb25kaXRpb24KKyAtIHN0LGlycXsxLDJ9LWRhdGEtcmVhZHk6CXJhaXNlIElSUSAxLzIgb24gZGF0YSByZWFkeSBjb250aXRpb24KKyAtIHN0LGlycXsxLDJ9LWNsaWNrOgkJcmFpc2UgSVJRIDEvMiBvbiBjbGljayBjb25kaXRpb24KKyAtIHN0LGlycS1vcGVuLWRyYWluOgkJY29uc2lkZXIgSVJRIGxpbmVzIG9wZW4tZHJhaW4KKyAtIHN0LGlycS1hY3RpdmUtbG93OgkJbWFrZSBJUlEgbGluZXMgYWN0aXZlIGxvdworIC0gc3Qsd3UtZHVyYXRpb24tMToJCWR1cmF0aW9uIHJlZ2lzdGVyIGZvciBGcmVlLUZhbGwvV2FrZS1VcAorCQkJCWludGVycnVwdCAxCisgLSBzdCx3dS1kdXJhdGlvbi0yOgkJZHVyYXRpb24gcmVnaXN0ZXIgZm9yIEZyZWUtRmFsbC9XYWtlLVVwCisJCQkJaW50ZXJydXB0IDIKKyAtIHN0LHdha2V1cC17eCx5LHp9LXtsbyxoaX06CXNldCB3YWtldXAgY29uZGl0aW9uIG9uIHgveS96IGF4aXMgZm9yCisJCQkJdXBwZXIvbG93ZXIgbGltaXQKKyAtIHN0LHdha2V1cC10aHJlc2hvbGQ6CQlzZXQgd2FrZXVwIHRocmVzaG9sZAorIC0gc3Qsd2FrZXVwMi17eCx5LHp9LXtsbyxoaX06CXNldCB3YWtldXAgY29uZGl0aW9uIG9uIHgveS96IGF4aXMgZm9yCisJCQkJdXBwZXIvbG93ZXIgbGltaXQgZm9yIHNlY29uZCB3YWtldXAKKwkJCQllbmdpbmUuCisgLSBzdCx3YWtldXAyLXRocmVzaG9sZDoJc2V0IHdha2V1cCB0aHJlc2hvbGQgZm9yIHNlY29uZCB3YWtldXAKKwkJCQllbmdpbmUuCisgLSBzdCxoaWdocGFzcy1jdXRvZmYtaHo9OgkxLCAyLCA0IG9yIDggZm9yIDFIeiwgMkh6LCA0SHogb3IgOEh6IG9mCisJCQkJaGlnaHBhc3MgY3V0LW9mZiBmcmVxdWVuY3kKKyAtIHN0LGhpcGFzc3sxLDJ9LWRpc2FibGU6CWRpc2FibGUgaGlnaHBhc3MgMS8yLgorIC0gc3QsZGVmYXVsdC1yYXRlPToJCXNldCB0aGUgZGVmYXVsdCByYXRlCisgLSBzdCxheGlzLXt4LHksen09OgkJc2V0IHRoZSBheGlzIHRvIG1hcCB0byB0aGUgdGhyZWUgY29vcmRpbmF0ZXMuCisJCQkJTmVnYXRpdmUgdmFsdWVzIGNhbiBiZSB1c2VkIGZvciBpbnZlcnRlZCBheGlzLgorIC0gc3Qse21pbixtYXh9LWxpbWl0LXt4LHksen0Jc2V0IHRoZSBtaW4vbWF4IGxpbWl0cyBmb3IgeC95L3ogYXhpcworCQkJCSh1c2VkIGJ5IHNlbGYtdGVzdCkKKworCitFeGFtcGxlIGZvciBhIFNQSSBkZXZpY2Ugbm9kZToKKworCWxpczMwMkAwIHsKKwkJY29tcGF0aWJsZSA9ICJzdCxsaXMzMDJkbC1zcGkiOworCQlyZWcgPSA8MD47CisJCXNwaS1tYXgtZnJlcXVlbmN5ID0gPDEwMDAwMDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvPjsKKwkJaW50ZXJydXB0cyA9IDwxMDQgMD47CisKKwkJc3QsY2xpY2stc2luZ2xlLXg7CisJCXN0LGNsaWNrLXNpbmdsZS15OworCQlzdCxjbGljay1zaW5nbGUtejsKKwkJc3QsY2xpY2stdGhyZXNoLXggPSA8MTA+OworCQlzdCxjbGljay10aHJlc2gteSA9IDwxMD47CisJCXN0LGNsaWNrLXRocmVzaC16ID0gPDEwPjsKKwkJc3QsaXJxMS1jbGljazsKKwkJc3QsaXJxMi1jbGljazsKKwkJc3Qsd2FrZXVwLXgtbG87CisJCXN0LHdha2V1cC14LWhpOworCQlzdCx3YWtldXAteS1sbzsKKwkJc3Qsd2FrZXVwLXktaGk7CisJCXN0LHdha2V1cC16LWxvOworCQlzdCx3YWtldXAtei1oaTsKKwl9OworCitFeGFtcGxlIGZvciBhIEkyQyBkZXZpY2Ugbm9kZToKKworCWxpczMzMWRsaDogbGlzMzMxZGxoQDE4IHsKKwkJY29tcGF0aWJsZSA9ICJzdCxsaXMzMzFkbGgiLCAic3QsbGlzM2x2MDJkIjsKKwkJcmVnID0gPDB4MTg+OworCQlWZGQtc3VwcGx5ID0gPCZsaXMzX3JlZz47CisJCVZkZF9JTy1zdXBwbHkgPSA8JmxpczNfcmVnPjsKKworCQlzdCxjbGljay1zaW5nbGUteDsKKwkJc3QsY2xpY2stc2luZ2xlLXk7CisJCXN0LGNsaWNrLXNpbmdsZS16OworCQlzdCxjbGljay10aHJlc2gteCA9IDwxMD47CisJCXN0LGNsaWNrLXRocmVzaC15ID0gPDEwPjsKKwkJc3QsY2xpY2stdGhyZXNoLXogPSA8MTA+OworCQlzdCxpcnExLWNsaWNrOworCQlzdCxpcnEyLWNsaWNrOworCQlzdCx3YWtldXAteC1sbzsKKwkJc3Qsd2FrZXVwLXgtaGk7CisJCXN0LHdha2V1cC15LWxvOworCQlzdCx3YWtldXAteS1oaTsKKwkJc3Qsd2FrZXVwLXotbG87CisJCXN0LHdha2V1cC16LWhpOworCQlzdCxtaW4tbGltaXQteCA9IDwxMjA+OworCQlzdCxtaW4tbGltaXQteSA9IDwxMjA+OworCQlzdCxtaW4tbGltaXQteiA9IDwxNDA+OworCQlzdCxtYXgtbGltaXQteCA9IDw1NTA+OworCQlzdCxtYXgtbGltaXQteSA9IDw1NTA+OworCQlzdCxtYXgtbGltaXQteiA9IDw3NTA+OworCX07CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWNjZWwvbW1hODQ1Mi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FjY2VsL21tYTg0NTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzYzM3NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FjY2VsL21tYTg0NTIudHh0CkBAIC0wLDAgKzEsMjQgQEAKK0ZyZWVzY2FsZSBNTUE4NDUyUSwgTU1BODQ1M1EsIE1NQTg2NTJGQyBvciBNTUE4NjUzRkMgdHJpYXhpYWwgYWNjZWxlcm9tZXRlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZTogc2hvdWxkIGNvbnRhaW4gb25lIG9mCisgICAgKiAiZnNsLG1tYTg0NTIiCisgICAgKiAiZnNsLG1tYTg0NTMiCisgICAgKiAiZnNsLG1tYTg2NTIiCisgICAgKiAiZnNsLG1tYTg2NTMiCisgIC0gcmVnOiB0aGUgSTJDIGFkZHJlc3Mgb2YgdGhlIGNoaXAKKworT3B0aW9uYWwgcHJvcGVydGllczoKKworICAtIGludGVycnVwdC1wYXJlbnQ6IHNob3VsZCBiZSB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyCisgIC0gaW50ZXJydXB0czogaW50ZXJydXB0IG1hcHBpbmcgZm9yIEdQSU8gSVJRCisKK0V4YW1wbGU6CisKKwltbWE4NDUzZmNAMWQgeworCQljb21wYXRpYmxlID0gImZzbCxtbWE4NDUzIjsKKwkJcmVnID0gPDB4MWQ+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvMT47CisJCWludGVycnVwdHMgPSA8NSAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMvYXQ5MV9hZGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMvYXQ5MV9hZGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmODEzZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9hdDkxX2FkYy50eHQKQEAgLTAsMCArMSw4NyBAQAorKiBBVDkxJ3MgQW5hbG9nIHRvIERpZ2l0YWwgQ29udmVydGVyIChBREMpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJhdG1lbCw8Y2hpcD4tYWRjIgorICAgIDxjaGlwPiBjYW4gYmUgImF0OTFzYW05MjYwIiwgImF0OTFzYW05ZzQ1IiBvciAiYXQ5MXNhbTl4NSIKKyAgLSByZWc6IFNob3VsZCBjb250YWluIEFEQyByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorICAtIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIHRoZSBJUlEgbGluZSBmb3IgdGhlIEFEQworICAtIGNsb2NrLW5hbWVzOiB0dXBsZSBsaXN0aW5nIGlucHV0IGNsb2NrIG5hbWVzLgorCVJlcXVpcmVkIGVsZW1lbnRzOiAiYWRjX2NsayIsICJhZGNfb3BfY2xrIi4KKyAgLSBjbG9ja3M6IHBoYW5kbGVzIHRvIGlucHV0IGNsb2Nrcy4KKyAgLSBhdG1lbCxhZGMtY2hhbm5lbHMtdXNlZDogQml0bWFzayBvZiB0aGUgY2hhbm5lbHMgbXV4ZWQgYW5kIGVuYWJsZWQgZm9yIHRoaXMKKyAgICBkZXZpY2UKKyAgLSBhdG1lbCxhZGMtc3RhcnR1cC10aW1lOiBTdGFydHVwIFRpbWUgb2YgdGhlIEFEQyBpbiBtaWNyb3NlY29uZHMgYXMKKyAgICBkZWZpbmVkIGluIHRoZSBkYXRhc2hlZXQKKyAgLSBhdG1lbCxhZGMtdnJlZjogUmVmZXJlbmNlIHZvbHRhZ2UgaW4gbWlsbGl2b2x0cyBmb3IgdGhlIGNvbnZlcnNpb25zCisgIC0gYXRtZWwsYWRjLXJlczogTGlzdCBvZiByZXNvbHV0aW9ucyBpbiBiaXRzIHN1cHBvcnRlZCBieSB0aGUgQURDLiBMaXN0IHNpemUKKwkJICAgbXVzdCBiZSB0d28gYXQgbGVhc3QuCisgIC0gYXRtZWwsYWRjLXJlcy1uYW1lczogQ29udGFpbnMgb25lIGlkZW50aWZpZXIgc3RyaW5nIGZvciBlYWNoIHJlc29sdXRpb24KKwkJCSBpbiBhdG1lbCxhZGMtcmVzIHByb3BlcnR5LiAibG93cmVzIiBhbmQgImhpZ2hyZXMiCisJCQkgaWRlbnRpZmllcnMgYXJlIHJlcXVpcmVkLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIGF0bWVsLGFkYy11c2UtZXh0ZXJuYWwtdHJpZ2dlcnM6IEJvb2xlYW4gdG8gZW5hYmxlIHRoZSBleHRlcm5hbCB0cmlnZ2VycworICAtIGF0bWVsLGFkYy11c2UtcmVzOiBTdHJpbmcgY29ycmVzcG9uZGluZyB0byBhbiBpZGVudGlmaWVyIGZyb20KKwkJICAgICAgIGF0bWVsLGFkYy1yZXMtbmFtZXMgcHJvcGVydHkuIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBoaWdoZXN0CisJCSAgICAgICByZXNvbHV0aW9uIHdpbGwgYmUgdXNlZC4KKyAgLSBhdG1lbCxhZGMtc2xlZXAtbW9kZTogQm9vbGVhbiB0byBlbmFibGUgc2xlZXAgbW9kZSB3aGVuIG5vIGNvbnZlcnNpb24KKyAgLSBhdG1lbCxhZGMtc2FtcGxlLWhvbGQtdGltZTogU2FtcGxlIGFuZCBIb2xkIFRpbWUgaW4gbWljcm9zZWNvbmRzCisgIC0gYXRtZWwsYWRjLXRzLXdpcmVzOiBOdW1iZXIgb2YgdG91Y2hzY3JlZW4gd2lyZXMuIFNob3VsZCBiZSA0IG9yIDUuIElmIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIGlzIHNldCwgdGhlbiB0aGUgYWRjIGRyaXZlciB3aWxsIGVuYWJsZSB0b3VjaHNjcmVlbgorICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC4KKyAgICBOT1RFOiB3aGVuIGFkYyB0b3VjaHNjcmVlbiBpcyBlbmFibGVkLCB0aGUgYWRjIGhhcmR3YXJlIHRyaWdnZXIgd2lsbCBiZQorICAgICAgICAgIGRpc2FibGVkLiBTaW5jZSB0b3VjaHNjcmVlbiB3aWxsIG9jY3VweSB0aGUgdHJpZ2dlciByZWdpc3Rlci4KKyAgLSBhdG1lbCxhZGMtdHMtcHJlc3N1cmUtdGhyZXNob2xkOiBhIHByZXNzdXJlIHRocmVzaG9sZCBmb3IgdG91Y2hzY3JlZW4uIEl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZXMgdG91Y2ggZGV0ZWN0aW9uIG1vcmUgcHJlY2lzZS4KKworT3B0aW9uYWwgdHJpZ2dlciBOb2RlczoKKyAgLSBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAgICogdHJpZ2dlci1uYW1lOiBOYW1lIG9mIHRoZSB0cmlnZ2VyIGV4cG9zZWQgdG8gdGhlIHVzZXIKKyAgICAqIHRyaWdnZXItdmFsdWU6IFZhbHVlIHRvIHB1dCBpbiB0aGUgVHJpZ2dlciByZWdpc3RlcgorICAgICAgdG8gYWN0aXZhdGUgdGhpcyB0cmlnZ2VyCisgIC0gT3B0aW9uYWwgcHJvcGVydGllczoKKyAgICAqIHRyaWdnZXItZXh0ZXJuYWw6IElzIHRoZSB0cmlnZ2VyIGFuIGV4dGVybmFsIHRyaWdnZXI/CisKK0V4YW1wbGVzOgorYWRjMDogYWRjQGZmZmIwMDAwIHsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwljb21wYXRpYmxlID0gImF0bWVsLGF0OTFzYW05MjYwLWFkYyI7CisJcmVnID0gPDB4ZmZmYjAwMDAgMHgxMDA+OworCWludGVycnVwdHMgPSA8MjAgSVJRX1RZUEVfTEVWRUxfSElHSCAwPjsKKwljbG9ja3MgPSA8JmFkY19jbGs+LCA8JmFkY19vcF9jbGs+OworCWNsb2NrLW5hbWVzID0gImFkY19jbGsiLCAiYWRjX29wX2NsayI7CisJYXRtZWwsYWRjLWNoYW5uZWxzLXVzZWQgPSA8MHhmZj47CisJYXRtZWwsYWRjLXN0YXJ0dXAtdGltZSA9IDw0MD47CisJYXRtZWwsYWRjLXVzZS1leHRlcm5hbC10cmlnZ2VyczsKKwlhdG1lbCxhZGMtdnJlZiA9IDwzMzAwPjsKKwlhdG1lbCxhZGMtcmVzID0gPDggMTA+OworCWF0bWVsLGFkYy1yZXMtbmFtZXMgPSAibG93cmVzIiwgImhpZ2hyZXMiOworCWF0bWVsLGFkYy11c2UtcmVzID0gImxvd3JlcyI7CisKKwl0cmlnZ2VyQDAgeworCQlyZWcgPSA8MD47CisJCXRyaWdnZXItbmFtZSA9ICJleHRlcm5hbC1yaXNpbmciOworCQl0cmlnZ2VyLXZhbHVlID0gPDB4MT47CisJCXRyaWdnZXItZXh0ZXJuYWw7CisJfTsKKwl0cmlnZ2VyQDEgeworCQlyZWcgPSA8MT47CisJCXRyaWdnZXItbmFtZSA9ICJleHRlcm5hbC1mYWxsaW5nIjsKKwkJdHJpZ2dlci12YWx1ZSA9IDwweDI+OworCQl0cmlnZ2VyLWV4dGVybmFsOworCX07CisKKwl0cmlnZ2VyQDIgeworCQlyZWcgPSA8Mj47CisJCXRyaWdnZXItbmFtZSA9ICJleHRlcm5hbC1hbnkiOworCQl0cmlnZ2VyLXZhbHVlID0gPDB4Mz47CisJCXRyaWdnZXItZXh0ZXJuYWw7CisJfTsKKworCXRyaWdnZXJAMyB7CisJCXJlZyA9IDwzPjsKKwkJdHJpZ2dlci1uYW1lID0gImNvbnRpbnVvdXMiOworCQl0cmlnZ2VyLXZhbHVlID0gPDB4Nj47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9hdmlhLWh4NzExLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL2F2aWEtaHg3MTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNjI5NDAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9hdmlhLWh4NzExLnR4dApAQCAtMCwwICsxLDE4IEBACisqIEFWSUEgSFg3MTEgQURDIGNoaXAgZm9yIHdlaWdodCBjZWxscworICBCaXQtYmFuZ2luZyBkcml2ZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGU6CVNob3VsZCBiZSAiYXZpYSxoeDcxMSIKKyAtIHNjay1ncGlvczoJRGVmaW5pdGlvbiBvZiB0aGUgR1BJTyBmb3IgdGhlIGNsb2NrCisgLSBkb3V0LWdwaW9zOglEZWZpbml0aW9uIG9mIHRoZSBHUElPIGZvciBkYXRhLW91dAorCQlTZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby50eHQKKyAtIGF2ZGQtc3VwcGx5OglEZWZpbml0aW9uIG9mIHRoZSByZWd1bGF0b3IgdXNlZCBhcyBhbmFsb2cgc3VwcGx5CisKK0V4YW1wbGU6Cit3ZWlnaHRAMCB7CisJY29tcGF0aWJsZSA9ICJhdmlhLGh4NzExIjsKKwlzY2stZ3Bpb3MgPSA8JmdwaW8zIDEwIEdQSU9fQUNUSVZFX0hJR0g+OworCWRvdXQtZ3Bpb3MgPSA8JmdwaW8wIDcgR1BJT19BQ1RJVkVfSElHSD47CisJYXZkZC1zdXBweSA9IDwmYXZkZD47Cit9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9iZXJsaW4yX2FkYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9iZXJsaW4yX2FkYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA4MzM0YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL2JlcmxpbjJfYWRjLnR4dApAQCAtMCwwICsxLDE5IEBACisqIEJlcmxpbiBBbmFsb2cgdG8gRGlnaXRhbCBDb252ZXJ0ZXIgKEFEQykKKworVGhlIEJlcmxpbiBBREMgaGFzIDggY2hhbm5lbHMsIHdpdGggb25lIGNvbm5lY3RlZCB0byBhIHRlbXBlcmF0dXJlIHNlbnNvci4KK0l0IGlzIHBhcnQgb2YgdGhlIHN5c3RlbSBjb250cm9sbGVyIHJlZ2lzdGVyIHNldC4gVGhlIEFEQyBub2RlIHNob3VsZCBiZSBhCitzdWItbm9kZSBvZiB0aGUgc3lzdGVtIGNvbnRyb2xsZXIgbm9kZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogbXVzdCBiZSAibWFydmVsbCxiZXJsaW4yLWFkYyIKKy0gaW50ZXJydXB0czogdGhlIGludGVycnVwdHMgZm9yIHRoZSBBREMgYW5kIHRoZSB0ZW1wZXJhdHVyZSBzZW5zb3IKKy0gaW50ZXJydXB0LW5hbWVzOiBzaG91bGQgYmUgImFkYyIgYW5kICJ0c2VuIgorCitFeGFtcGxlOgorCithZGM6IGFkYyB7CisJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLGJlcmxpbjItYWRjIjsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZzaWM+OworCWludGVycnVwdHMgPSA8MTI+LCA8MTQ+OworCWludGVycnVwdC1uYW1lcyA9ICJhZGMiLCAidHNlbiI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMvY2MxMDAwMV9hZGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMvY2MxMDAwMV9hZGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNGY3NmQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9jYzEwMDAxX2FkYy50eHQKQEAgLTAsMCArMSwyMiBAQAorKiBDb3NtaWMgQ2lyY3VpdHMgLSBBbmFsb2cgdG8gRGlnaXRhbCBDb252ZXJ0ZXIgKENDLTEwMDAxLUFEQykKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImNvc21pYywxMDAwMS1hZGMiCisgIC0gcmVnOiBTaG91bGQgY29udGFpbiBhZGMgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGguCisgIC0gY2xvY2stbmFtZXM6IFNob3VsZCBjb250YWluICJhZGMiLgorICAtIGNsb2NrczogU2hvdWxkIGNvbnRhaW4gYSBjbG9jayBzcGVjaWZpZXIgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMKKyAgLSB2cmVmLXN1cHBseTogVGhlIHJlZ3VsYXRvciBzdXBwbHkgQURDIHJlZmVyZW5jZSB2b2x0YWdlLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIGFkYy1yZXNlcnZlZC1jaGFubmVsczogQml0bWFzayBvZiByZXNlcnZlZCBjaGFubmVscywKKyAgICBpLmUuIGNoYW5uZWxzIHRoYXQgY2Fubm90IGJlIHVzZWQgYnkgdGhlIE9TLgorCitFeGFtcGxlOgorYWRjOiBhZGNAMTgxMDE2MDAgeworCWNvbXBhdGlibGUgPSAiY29zbWljLDEwMDAxLWFkYyI7CisJcmVnID0gPDB4MTgxMDE2MDAgMHgyND47CisJYWRjLXJlc2VydmVkLWNoYW5uZWxzID0gPDB4Mj47CisJY2xvY2tzID0gPCZhZGNfY2xrPjsKKwljbG9jay1uYW1lcyA9ICJhZGMiOworCXZyZWYtc3VwcGx5ID0gPCZyZWdfMXY4PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9kYTkxNTAtZ3BhZGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMvZGE5MTUwLWdwYWRjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDcyMjhkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMvZGE5MTUwLWdwYWRjLnR4dApAQCAtMCwwICsxLDE2IEBACitEaWFsb2cgU2VtaWNvbmR1Y3RvciBEQTkxNTAgSUlPIEdQQURDIGJpbmRpbmdzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJkbGcsZGE5MTUwLWdwYWRjIiBmb3IgREE5MTUwIElJTyBHUEFEQworLSAjaW8tY2hhbm5lbC1jZWxsczogU2hvdWxkIGJlIHNldCB0byA8MT4KKyAgKFNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2lpby1iaW5kaW5ncy50eHQgZm9yIGZ1cnRoZXIgaW5mbykKKworRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gb24gR1BBREMgY2hhbm5lbHMsIHNlZSBkZXZpY2UgZGF0YXNoZWV0LgorCisKK0V4YW1wbGU6CisKKwlncGFkYzogZGE5MTUwLWdwYWRjIHsKKwkJY29tcGF0aWJsZSA9ICJkbGcsZGE5MTUwLWdwYWRjIjsKKwkJI2lvLWNoYW5uZWwtY2VsbHMgPSA8MT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL2hpODQzNS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9oaTg0MzUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiMDM0OGMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9oaTg0MzUudHh0CkBAIC0wLDAgKzEsMjEgQEAKK0hvbHQgSW50ZWdyYXRlZCBDaXJjdWl0cyBISS04NDM1IHRocmVzaG9sZCBkZXRlY3RvciBiaW5kaW5ncworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJob2x0LGhpODQzNSIKKyAtIHJlZzogc3BpIGNoaXAgc2VsZWN0IG51bWJlciBmb3IgdGhlIGRldmljZQorCitSZWNvbW1lbmRlZCBwcm9wZXJ0aWVzOgorIC0gc3BpLW1heC1mcmVxdWVuY3k6IGRlZmluaXRpb24gYXMgcGVyCisJCURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLWJ1cy50eHQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAtIGdwaW9zOiBHUElPIHVzZWQgZm9yIGNvbnRyb2xsaW5nIHRoZSByZXNldCBwaW4KKworRXhhbXBsZToKK3NlbnNvckAwIHsKKwljb21wYXRpYmxlID0gImhvbHQsaGk4NDM1IjsKKwlyZWcgPSA8MD47CisJZ3Bpb3MgPSA8JmdwaW82IDEgMD47CisKKwlzcGktbWF4LWZyZXF1ZW5jeSA9IDwxMDAwMDAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9tYXgxMDI3LWFkYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9tYXgxMDI3LWFkYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg3NzBjYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL21heDEwMjctYWRjLnR4dApAQCAtMCwwICsxLDIyIEBACisqIE1heGltIDEwMjcvMTAyOS8xMDMxIEFuYWxvZyB0byBEaWdpdGFsIENvbnZlcnRlciAoQURDKQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6IFNob3VsZCBiZSAibWF4aW0sbWF4MTAyNyIgb3IgIm1heGltLG1heDEwMjkiIG9yICJtYXhpbSxtYXgxMDMxIgorICAtIHJlZzogU1BJIGNoaXAgc2VsZWN0IG51bWJlciBmb3IgdGhlIGRldmljZQorICAtIGludGVycnVwdC1wYXJlbnQ6IHBoYW5kbGUgdG8gdGhlIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlcgorICBzZWU6IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlcnJ1cHRzLnR4dAorICAtIGludGVycnVwdHM6IElSUSBsaW5lIGZvciB0aGUgQURDCisgIHNlZTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2ludGVycnVwdHMudHh0CisKK1JlY29tbWVuZGVkIHByb3BlcnRpZXM6CistIHNwaS1tYXgtZnJlcXVlbmN5OiBEZWZpbml0aW9uIGFzIHBlcgorICAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktYnVzLnR4dAorCitFeGFtcGxlOgorYWRjQDAgeworCWNvbXBhdGlibGUgPSAibWF4aW0sbWF4MTAyNyI7CisJcmVnID0gPDA+OworCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW81PjsKKwlpbnRlcnJ1cHRzID0gPDE1IElSUV9UWVBFX0VER0VfUklTSU5HPjsKKwlzcGktbWF4LWZyZXF1ZW5jeSA9IDwxMDAwMDAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9tY3AzMjB4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL21jcDMyMHgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhMWYzYWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9tY3AzMjB4LnR4dApAQCAtMCwwICsxLDMxIEBACisqIE1pY3JvY2hpcCBBbmFsb2cgdG8gRGlnaXRhbCBDb252ZXJ0ZXIgKEFEQykKKworVGhlIG5vZGUgZm9yIHRoaXMgZHJpdmVyIG11c3QgYmUgYSBjaGlsZCBub2RlIG9mIGEgU1BJIGNvbnRyb2xsZXIsIGhlbmNlCithbGwgbWFuZGF0b3J5IHByb3BlcnRpZXMgZGVzY3JpYmVkIGluCisKKyAgICAgICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktYnVzLnR4dAorCittdXN0IGJlIHNwZWNpZmllZC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKwktIGNvbXBhdGlibGU6ICAJTXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZywgZGVwZW5kaW5nIG9uIHRoZQorCQkJbW9kZWw6CisJCQkJIm1jcDMwMDEiCisJCQkJIm1jcDMwMDIiCisJCQkJIm1jcDMwMDQiCisJCQkJIm1jcDMwMDgiCisJCQkJIm1jcDMyMDEiCisJCQkJIm1jcDMyMDIiCisJCQkJIm1jcDMyMDQiCisJCQkJIm1jcDMyMDgiCisJCQkJIm1jcDMzMDEiCisKKworRXhhbXBsZXM6CitzcGlfY29udHJvbGxlciB7CisJbWNwM3gweEAwIHsKKwkJY29tcGF0aWJsZSA9ICJtY3AzMDAyIjsKKwkJcmVnID0gPDA+OworCQlzcGktbWF4LWZyZXF1ZW5jeSA9IDwxMDAwMDAwPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL21jcDM0MjIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMvbWNwMzQyMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzMzMTM5YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL21jcDM0MjIudHh0CkBAIC0wLDAgKzEsMTcgQEAKKyogTWljcm9jaGlwIG1jcDM0MjIvMy80LzYvNy84IGNoaXAgZmFtaWx5IChBREMpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiBTaG91bGQgYmUKKwkibWljcm9jaGlwLG1jcDM0MjIiIG9yCisJIm1pY3JvY2hpcCxtY3AzNDIzIiBvcgorCSJtaWNyb2NoaXAsbWNwMzQyNCIgb3IKKwkibWljcm9jaGlwLG1jcDM0MjYiIG9yCisJIm1pY3JvY2hpcCxtY3AzNDI3IiBvcgorCSJtaWNyb2NoaXAsbWNwMzQyOCIKKyAtIHJlZzogSTJDIGFkZHJlc3MgZm9yIHRoZSBkZXZpY2UKKworRXhhbXBsZToKK2FkY0AwIHsKKwljb21wYXRpYmxlID0gIm1pY3JvY2hpcCxtY3AzNDI0IjsKKwlyZWcgPSA8MHg2OD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMvbnV2b3Rvbi1uYXU3ODAyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL251dm90b24tbmF1NzgwMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk1ODJlNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL251dm90b24tbmF1NzgwMi50eHQKQEAgLTAsMCArMSwxOCBAQAorKiBOdXZvdG9uIE5BVTc4MDIgQW5hbG9nIHRvIERpZ2l0YWwgQ29udmVydGVyIChBREMpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJudXZvdG9uLG5hdTc4MDIiCisgIC0gcmVnOiBTaG91bGQgY29udGFpbiB0aGUgQURDIEkyQyBhZGRyZXNzCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgIC0gbnV2b3Rvbix2bGRvOiBJbnRlcm5hbCByZWZlcmVuY2Ugdm9sdGFnZSBpbiBtaWxsaXZvbHRzIHRvIGJlCisgICAgY29uZmlndXJlZCB2YWxpZCB2YWx1ZXMgYXJlIGJldHdlZW4gMjQwMCBtViBhbmQgNDUwMCBtVi4KKyAgLSBpbnRlcnJ1cHRzOiBJUlEgbGluZSBmb3IgdGhlIEFEQy4gSWYgbm90IHVzZWQgdGhlIGRyaXZlciB3aWxsIHVzZQorICAgIHBvbGxpbmcuCisKK0V4YW1wbGU6CithZGMyOiBuYXU3ODAyQDJhIHsKKwljb21wYXRpYmxlID0gIm51dm90b24sbmF1NzgwMiI7CisJcmVnID0gPDB4MmE+OworCW51dm90b24sdmxkbyA9IDwzMDAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9xY29tLHNwbWktaWFkYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9xY29tLHNwbWktaWFkYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUzNmQ2ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL3Fjb20sc3BtaS1pYWRjLnR4dApAQCAtMCwwICsxLDQ2IEBACitRdWFsY29tbSdzIFNQTUkgUE1JQyBjdXJyZW50IEFEQworCitRUE5QIFBNSUMgY3VycmVudCBBREMgKElBREMpIHByb3ZpZGVzIGludGVyZmFjZSB0byBjbGllbnRzIHRvIHJlYWQgY3VycmVudC4KK0EgMTYgYml0IEFEQyBpcyB1c2VkIGZvciBjdXJyZW50IG1lYXN1cmVtZW50cy4gSUFEQyBjYW4gbWVhc3VyZSB0aGUgY3VycmVudAordGhyb3VnaCBhbiBleHRlcm5hbCByZXNpc3RvciAoY2hhbm5lbCAxKSBvciBpbnRlcm5hbCAoYnVpbHQtaW4pIHJlc2lzdG9yCisoY2hhbm5lbCAwKS4gV2hlbiB1c2luZyBhbiBleHRlcm5hbCByZXNpc3RvciBpdCBpcyB0byBiZSBkZXNjcmliZWQgYnkKK3Fjb20sZXh0ZXJuYWwtcmVzaXN0b3ItbWljcm8tb2htcyBwcm9wZXJ0eS4KKworSUFEQyBub2RlOgorCistIGNvbXBhdGlibGU6CisgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgVmFsdWUgdHlwZTogPHN0cmluZz4KKyAgICBEZWZpbml0aW9uOiBTaG91bGQgY29udGFpbiAicWNvbSxzcG1pLWlhZGMiLgorCistIHJlZzoKKyAgICBVc2FnZTogcmVxdWlyZWQKKyAgICBWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorICAgIERlZmluaXRpb246IElBREMgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggaW4gdGhlIFNQTUkgUE1JQyByZWdpc3RlciBtYXAKKworLSBpbnRlcnJ1cHRzOgorICAgIFVzYWdlOiBvcHRpb25hbAorICAgIFZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisgICAgRGVmaW5pdGlvbjogRW5kIG9mIEFEQyBjb252ZXJzaW9uLgorCistIHFjb20sZXh0ZXJuYWwtcmVzaXN0b3ItbWljcm8tb2htczoKKyAgICBVc2FnZTogb3B0aW9uYWwKKyAgICBWYWx1ZSB0eXBlOiA8dTMyPgorICAgIERlZmluaXRpb246IFNlbnNlIHJlc2lzdGVyIHZhbHVlIGluIG1pY3JvIE9obS4KKyAgICAgICAgICAgICAgICBJZiBub3QgZGVmaW5lZCB2YWx1ZSBvZiAxMDAwMCBtaWNybyBPaG1zIHdpbGwgYmUgdXNlZC4KKworRXhhbXBsZToKKwkvKiBJQURDIG5vZGUgKi8KKwlwbWljX2lhZGM6IGlhZGNAMzYwMCB7CisJCWNvbXBhdGlibGUgPSAicWNvbSxzcG1pLWlhZGMiOworCQlyZWcgPSA8MHgzNjAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDwweDAgMHgzNiAweDAgSVJRX1RZUEVfRURHRV9SSVNJTkc+OworCQlxY29tLGV4dGVybmFsLXJlc2lzdG9yLW1pY3JvLW9obXMgPSA8MTAwMDA+OworCQkjaW8tY2hhbm5lbC1jZWxscyAgPSA8MT47CisJfTsKKworCS8qIElJTyBjbGllbnQgbm9kZSAqLworCWJhdCB7CisJCWlvLWNoYW5uZWxzID0gPCZwbWljX2lhZGMgIDA+OworCQlpby1jaGFubmVsLW5hbWVzID0gImlhZGMiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9xY29tLHNwbWktdmFkYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9xY29tLHNwbWktdmFkYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZiNDYxMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL3Fjb20sc3BtaS12YWRjLnR4dApAQCAtMCwwICsxLDEyOSBAQAorUXVhbGNvbW0ncyBTUE1JIFBNSUMgdm9sdGFnZSBBREMKKworU1BNSSBQTUlDIHZvbHRhZ2UgQURDIChWQURDKSBwcm92aWRlcyBpbnRlcmZhY2UgdG8gY2xpZW50cyB0byByZWFkCit2b2x0YWdlLiBUaGUgVkFEQyBpcyBhIDE1LWJpdCBzaWdtYS1kZWx0YSBBREMuCisKK1ZBREMgbm9kZToKKworLSBjb21wYXRpYmxlOgorICAgIFVzYWdlOiByZXF1aXJlZAorICAgIFZhbHVlIHR5cGU6IDxzdHJpbmc+CisgICAgRGVmaW5pdGlvbjogU2hvdWxkIGNvbnRhaW4gInFjb20sc3BtaS12YWRjIi4KKworLSByZWc6CisgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKyAgICBEZWZpbml0aW9uOiBWQURDIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIGluIHRoZSBTUE1JIFBNSUMgcmVnaXN0ZXIgbWFwLgorCistICNhZGRyZXNzLWNlbGxzOgorICAgIFVzYWdlOiByZXF1aXJlZAorICAgIFZhbHVlIHR5cGU6IDx1MzI+CisgICAgRGVmaW5pdGlvbjogTXVzdCBiZSBvbmUuIENoaWxkIG5vZGUgJ3JlZycgcHJvcGVydHkgc2hvdWxkIGRlZmluZSBBREMKKyAgICAgICAgICAgIGNoYW5uZWwgbnVtYmVyLgorCistICNzaXplLWNlbGxzOgorICAgIFVzYWdlOiByZXF1aXJlZAorICAgIFZhbHVlIHR5cGU6IDx1MzI+CisgICAgRGVmaW5pdGlvbjogTXVzdCBiZSB6ZXJvLgorCistICNpby1jaGFubmVsLWNlbGxzOgorICAgIFVzYWdlOiByZXF1aXJlZAorICAgIFZhbHVlIHR5cGU6IDx1MzI+CisgICAgRGVmaW5pdGlvbjogTXVzdCBiZSBvbmUuIEZvciBkZXRhaWxzIGFib3V0IElJTyBiaW5kaW5ncyBzZWU6CisgICAgICAgICAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2lpby1iaW5kaW5ncy50eHQKKworLSBpbnRlcnJ1cHRzOgorICAgIFVzYWdlOiBvcHRpb25hbAorICAgIFZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisgICAgRGVmaW5pdGlvbjogRW5kIG9mIGNvbnZlcnNpb24gaW50ZXJydXB0LgorCitDaGFubmVsIG5vZGUgcHJvcGVydGllczoKKworLSByZWc6CisgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgVmFsdWUgdHlwZTogPHUzMj4KKyAgICBEZWZpbml0aW9uOiBBREMgY2hhbm5lbCBudW1iZXIuCisgICAgICAgICAgICBTZWUgaW5jbHVkZS9kdC1iaW5kaW5ncy9paW8vcWNvbSxzcG1pLXZhZGMuaAorCistIHFjb20sZGVjaW1hdGlvbjoKKyAgICBVc2FnZTogb3B0aW9uYWwKKyAgICBWYWx1ZSB0eXBlOiA8dTMyPgorICAgIERlZmluaXRpb246IFRoaXMgcGFyYW1ldGVyIGlzIHVzZWQgdG8gZGVjcmVhc2UgQURDIHNhbXBsaW5nIHJhdGUuCisgICAgICAgICAgICBRdWlja2VyIG1lYXN1cmVtZW50cyBjYW4gYmUgbWFkZSBieSByZWR1Y2luZyBkZWNpbWF0aW9uIHJhdGlvLgorICAgICAgICAgICAgVmFsaWQgdmFsdWVzIGFyZSA1MTIsIDEwMjQsIDIwNDgsIDQwOTYuCisgICAgICAgICAgICBJZiBwcm9wZXJ0eSBpcyBub3QgZm91bmQsIGRlZmF1bHQgdmFsdWUgb2YgNTEyIHdpbGwgYmUgdXNlZC4KKworLSBxY29tLHByZS1zY2FsaW5nOgorICAgIFVzYWdlOiBvcHRpb25hbAorICAgIFZhbHVlIHR5cGU6IDx1MzIgYXJyYXk+CisgICAgRGVmaW5pdGlvbjogVXNlZCBmb3Igc2NhbGluZyB0aGUgY2hhbm5lbCBpbnB1dCBzaWduYWwgYmVmb3JlIHRoZSBzaWduYWwgaXMKKyAgICAgICAgICAgIGZlZCB0byBWQURDLiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBub2RlIGlzIHRvIGtub3cgdGhlCisgICAgICAgICAgICBwcmUtZGV0ZXJtaW5lZCByYXRpbyBhbmQgdXNlIGl0IGZvciBwb3N0IHNjYWxpbmcuIFNlbGVjdCBvbmUgZnJvbQorICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBvcHRpb25zLgorICAgICAgICAgICAgPDEgMT4sIDwxIDM+LCA8MSA0PiwgPDEgNj4sIDwxIDIwPiwgPDEgOD4sIDwxMCA4MT4sIDwxIDEwPgorICAgICAgICAgICAgSWYgcHJvcGVydHkgaXMgbm90IGZvdW5kIGRlZmF1bHQgdmFsdWUgZGVwZW5kaW5nIG9uIGNoaXAgd2lsbCBiZSB1c2VkLgorCistIHFjb20scmF0aW9tZXRyaWM6CisgICAgVXNhZ2U6IG9wdGlvbmFsCisgICAgVmFsdWUgdHlwZTogPGVtcHR5PgorICAgIERlZmluaXRpb246IENoYW5uZWwgY2FsaWJyYXRpb24gdHlwZS4gSWYgdGhpcyBwcm9wZXJ0eSBpcyBzcGVjaWZpZWQKKyAgICAgICAgICAgIFZBREMgd2lsbCB1c2UgdGhlIFZERCByZWZlcmVuY2UgKDEuOFYpIGFuZCBHTkQgZm9yIGNoYW5uZWwKKyAgICAgICAgICAgIGNhbGlicmF0aW9uLiBJZiBwcm9wZXJ0eSBpcyBub3QgZm91bmQsIGNoYW5uZWwgd2lsbCBiZQorICAgICAgICAgICAgY2FsaWJyYXRlZCB3aXRoIDAuNjI1ViBhbmQgMS4yNVYgcmVmZXJlbmNlIGNoYW5uZWxzLCBhbHNvCisgICAgICAgICAgICBrbm93biBhcyBhYnNvbHV0ZSBjYWxpYnJhdGlvbi4KKworLSBxY29tLGh3LXNldHRsZS10aW1lOgorICAgIFVzYWdlOiBvcHRpb25hbAorICAgIFZhbHVlIHR5cGU6IDx1MzI+CisgICAgRGVmaW5pdGlvbjogVGltZSBiZXR3ZWVuIEFNVVggZ2V0dGluZyBjb25maWd1cmVkIGFuZCB0aGUgQURDIHN0YXJ0aW5nCisgICAgICAgICAgICBjb252ZXJzaW9uLiBEZWxheSA9IDEwMHVzICogKHZhbHVlKSBmb3IgdmFsdWUgPCAxMSwgYW5kCisgICAgICAgICAgICAybXMgKiAodmFsdWUgLSAxMCkgb3RoZXJ3aXNlLgorICAgICAgICAgICAgVmFsaWQgdmFsdWVzIGFyZTogMCwgMTAwLCAyMDAsIDMwMCwgNDAwLCA1MDAsIDYwMCwgNzAwLCA4MDAsCisgICAgICAgICAgICA5MDAgdXMgYW5kIDEsIDIsIDQsIDYsIDgsIDEwIG1zCisgICAgICAgICAgICBJZiBwcm9wZXJ0eSBpcyBub3QgZm91bmQsIGNoYW5uZWwgd2lsbCB1c2UgMHVzLgorCistIHFjb20sYXZnLXNhbXBsZXM6CisgICAgVXNhZ2U6IG9wdGlvbmFsCisgICAgVmFsdWUgdHlwZTogPHUzMj4KKyAgICBEZWZpbml0aW9uOiBOdW1iZXIgb2Ygc2FtcGxlcyB0byBiZSB1c2VkIGZvciBtZWFzdXJlbWVudC4KKyAgICAgICAgICAgIEF2ZXJhZ2luZyBwcm92aWRlcyB0aGUgb3B0aW9uIHRvIG9idGFpbiBhIHNpbmdsZSBtZWFzdXJlbWVudAorICAgICAgICAgICAgZnJvbSB0aGUgQURDIHRoYXQgaXMgYW4gYXZlcmFnZSBvZiBtdWx0aXBsZSBzYW1wbGVzLiBUaGUgdmFsdWUKKyAgICAgICAgICAgIHNlbGVjdGVkIGlzIDJeKHZhbHVlKS4KKyAgICAgICAgICAgIFZhbGlkIHZhbHVlcyBhcmU6IDEsIDIsIDQsIDgsIDE2LCAzMiwgNjQsIDEyOCwgMjU2LCA1MTIKKyAgICAgICAgICAgIElmIHByb3BlcnR5IGlzIG5vdCBmb3VuZCwgMSBzYW1wbGUgd2lsbCBiZSB1c2VkLgorCitOT1RFOgorCitGb2xsb3dpbmcgY2hhbm5lbHMsIGFsc28ga25vd24gYXMgcmVmZXJlbmNlIHBvaW50IGNoYW5uZWxzLCBhcmUgdXNlZCBmb3IKK3Jlc3VsdCBjYWxpYnJhdGlvbiBhbmQgdGhlaXIgY2hhbm5lbCBjb25maWd1cmF0aW9uIG5vZGVzIHNob3VsZCBiZSBkZWZpbmVkOgorVkFEQ19SRUZfNjI1TVYgYW5kL29yIFZBRENfU1BBUkUxKGJhc2VkIG9uIFBNSUMgdmVyc2lvbikgVkFEQ19SRUZfMTI1ME1WLAorVkFEQ19HTkRfUkVGIGFuZCBWQURDX1ZERF9WQURDLgorCitFeGFtcGxlOgorCisJLyogVkFEQyBub2RlICovCisJcG1pY192YWRjOiB2YWRjQDMxMDAgeworCQljb21wYXRpYmxlID0gInFjb20sc3BtaS12YWRjIjsKKwkJcmVnID0gPDB4MzEwMCAweDEwMD47CisJCWludGVycnVwdHMgPSA8MHgwIDB4MzEgMHgwIElSUV9UWVBFX0VER0VfUklTSU5HPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQkjaW8tY2hhbm5lbC1jZWxscyA9IDwxPjsKKwkJaW8tY2hhbm5lbC1yYW5nZXM7CisKKwkJLyogQ2hhbm5lbCBub2RlICovCisJCXVzYl9pZF9ub3B1bGwgeworCQkJcmVnID0gPFZBRENfTFJfTVVYMTBfVVNCX0lEPjsKKwkJCXFjb20sZGVjaW1hdGlvbiA9IDw1MTI+OworCQkJcWNvbSxyYXRpb21ldHJpYzsKKwkJCXFjb20saHctc2V0dGxlLXRpbWUgPSA8MjAwPjsKKwkJCXFjb20sYXZnLXNhbXBsZXMgPSA8MT47CisJCQlxY29tLHByZS1zY2FsaW5nID0gPDEgMz47CisJCX07CisJfTsKKworCS8qIElJTyBjbGllbnQgbm9kZSAqLworCXVzYiB7CisJCWlvLWNoYW5uZWxzID0gPCZwbWljX3ZhZGMgVkFEQ19MUl9NVVgxMF9VU0JfSUQ+OworCQlpby1jaGFubmVsLW5hbWVzID0gInZhZGMiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9yb2NrY2hpcC1zYXJhZGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMvcm9ja2NoaXAtc2FyYWRjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzlkNjU2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMvcm9ja2NoaXAtc2FyYWRjLnR4dApAQCAtMCwwICsxLDMxIEBACitSb2NrY2hpcCBTdWNjZXNzaXZlIEFwcHJveGltYXRpb24gUmVnaXN0ZXIgKFNBUikgQS9EIENvbnZlcnRlciBiaW5kaW5ncworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgInJvY2tjaGlwLHNhcmFkYyIgb3IgInJvY2tjaGlwLHJrMzA2Ni10c2FkYyIKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgICAgICAgcmVnaW9uLgorLSBpbnRlcnJ1cHRzOiBUaGUgaW50ZXJydXB0IG51bWJlciB0byB0aGUgY3B1LiBUaGUgaW50ZXJydXB0IHNwZWNpZmllciBmb3JtYXQKKyAgICAgICAgICAgICAgZGVwZW5kcyBvbiB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIuCistIGNsb2NrczogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIGNsb2NrLW5hbWVzLgorLSBjbG9jay1uYW1lczogU2hhbGwgYmUgInNhcmFkYyIgZm9yIHRoZSBjb252ZXJ0ZXItY2xvY2ssIGFuZCAiYXBiX3BjbGsiIGZvcgorICAgICAgICAgICAgICAgdGhlIHBlcmlwaGVyYWwgY2xvY2suCistIHZyZWYtc3VwcGx5OiBUaGUgcmVndWxhdG9yIHN1cHBseSBBREMgcmVmZXJlbmNlIHZvbHRhZ2UuCistICNpby1jaGFubmVsLWNlbGxzOiBTaG91bGQgYmUgMSwgc2VlIC4uL2lpby1iaW5kaW5ncy50eHQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gcmVzZXRzOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gcmVzZXQtbmFtZXMgaWYgbmVlZCBzdXBwb3J0CisJICB0aGlzIG9wdGlvbi4gU2VlIC4uL3Jlc2V0L3Jlc2V0LnR4dCBmb3IgZGV0YWlscy4KKy0gcmVzZXQtbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgbmFtZSAic2FyYWRjLWFwYiIuCisKK0V4YW1wbGU6CisJc2FyYWRjOiBzYXJhZGNAMjAwNmMwMDAgeworCQljb21wYXRpYmxlID0gInJvY2tjaGlwLHNhcmFkYyI7CisJCXJlZyA9IDwweDIwMDZjMDAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDI2IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQljbG9ja3MgPSA8JmNydSBTQ0xLX1NBUkFEQz4sIDwmY3J1IFBDTEtfU0FSQURDPjsKKwkJY2xvY2stbmFtZXMgPSAic2FyYWRjIiwgImFwYl9wY2xrIjsKKwkJcmVzZXRzID0gPCZjcnUgU1JTVF9TQVJBREM+OworCQlyZXNldC1uYW1lcyA9ICJzYXJhZGMtYXBiIjsKKwkJI2lvLWNoYW5uZWwtY2VsbHMgPSA8MT47CisJCXZyZWYtc3VwcGx5ID0gPCZ2Y2MxOD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL3RpLWFkYzEyOHMwNTIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMvdGktYWRjMTI4czA1Mi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVjYTZiNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL3RpLWFkYzEyOHMwNTIudHh0CkBAIC0wLDAgKzEsMTggQEAKKyogVGV4YXMgSW5zdHJ1bWVudHMnIEFEQzEyOFMwNTIgYW5kIEFEQzEyMlMwMjEgQURDIGNoaXAKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGU6IFNob3VsZCBiZSAidGksYWRjMTI4czA1MiIgb3IgInRpLGFkYzEyMnMwMjEiCisgLSByZWc6IHNwaSBjaGlwIHNlbGVjdCBudW1iZXIgZm9yIHRoZSBkZXZpY2UKKyAtIHZyZWYtc3VwcGx5OiBUaGUgcmVndWxhdG9yIHN1cHBseSBmb3IgQURDIHJlZmVyZW5jZSB2b2x0YWdlCisKK1JlY29tbWVuZGVkIHByb3BlcnRpZXM6CisgLSBzcGktbWF4LWZyZXF1ZW5jeTogRGVmaW5pdGlvbiBhcyBwZXIKKwkJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktYnVzLnR4dAorCitFeGFtcGxlOgorYWRjQDAgeworCWNvbXBhdGlibGUgPSAidGksYWRjMTI4czA1MiI7CisJcmVnID0gPDA+OworCXZyZWYtc3VwcGx5ID0gPCZ2ZGRfc3VwcGx5PjsKKwlzcGktbWF4LWZyZXF1ZW5jeSA9IDwxMDAwMDAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy90d2w0MDMwLW1hZGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMvdHdsNDAzMC1tYWRjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmRkMjE0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMvdHdsNDAzMC1tYWRjLnR4dApAQCAtMCwwICsxLDI0IEBACisqIFRXTDQwMzAgTW9uaXRvcmluZyBBbmFsb2cgdG8gRGlnaXRhbCBDb252ZXJ0ZXIgKE1BREMpCisKK1RoZSBNQURDIHN1YnN5c3RlbSBpbiB0aGUgVFdMNDAzMCBjb25zaXN0cyBvZiBhIDEwLWJpdCBBREMKK2NvbWJpbmVkIHdpdGggYSAxNi1pbnB1dCBhbmFsb2cgbXVsdGlwbGV4ZXIuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogU2hvdWxkIGNvbnRhaW4gInRpLHR3bDQwMzAtbWFkYyIuCisgIC0gaW50ZXJydXB0czogSVJRIGxpbmUgZm9yIHRoZSBNQURDIHN1Ym1vZHVsZS4KKyAgLSAjaW8tY2hhbm5lbC1jZWxsczogU2hvdWxkIGJlIHNldCB0byA8MT4uCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgIC0gdGksc3lzdGVtLXVzZXMtc2Vjb25kLW1hZGMtaXJxOiBib29sZWFuLCBzZXQgaWYgdGhlIHNlY29uZCBtYWRjIGlycSByZWdpc3RlcgorCQkJCSAgICBzaG91bGQgYmUgdXNlZCwgd2hpY2ggaXMgaW50ZW5kZWQgdG8gYmUgdXNlZAorCQkJCSAgICBieSBDby1Qcm9jZXNzb3JzIChlLmcuIGEgbW9kZW0pLgorCitFeGFtcGxlOgorCismdHdsIHsKKwltYWRjIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSx0d2w0MDMwLW1hZGMiOworCQlpbnRlcnJ1cHRzID0gPDM+OworCQkjaW8tY2hhbm5lbC1jZWxscyA9IDwxPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL3ZmNjEwLWFkYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy92ZjYxMC1hZGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhYWQwNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy92ZjYxMC1hZGMudHh0CkBAIC0wLDAgKzEsMzYgQEAKK0ZyZWVzY2FsZSB2ZjYxMCBBbmFsb2cgdG8gRGlnaXRhbCBDb252ZXJ0ZXIgYmluZGluZ3MKKworVGhlIGRldmljZXRyZWUgYmluZGluZ3MgYXJlIGZvciB0aGUgbmV3IEFEQyBkcml2ZXIgd3JpdHRlbiBmb3IKK3ZmNjEwL2kuTVg2c2x4IGFuZCB1cHdhcmQgU29DcyBmcm9tIEZyZWVzY2FsZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGNvbnRhaW4gImZzbCx2ZjYxMC1hZGMiCistIHJlZzogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiB0aGUgaW50ZXJydXB0IGZvciB0aGUgZGV2aWNlCistIGNsb2NrczogVGhlIGNsb2NrIGlzIG5lZWRlZCBieSB0aGUgQURDIGNvbnRyb2xsZXIsIEFEQyBjbG9jayBzb3VyY2UgaXMgaXBnIGNsb2NrLgorLSBjbG9jay1uYW1lczogTXVzdCBjb250YWluICJhZGMiLCBtYXRjaGluZyBlbnRyeSBpbiB0aGUgY2xvY2tzIHByb3BlcnR5LgorLSB2cmVmLXN1cHBseTogVGhlIHJlZ3VsYXRvciBzdXBwbHkgQURDIHJlZmVyZW5jZSB2b2x0YWdlLgorCitSZWNvbW1lbmRlZCBwcm9wZXJ0aWVzOgorLSBmc2wsYWRjay1tYXgtZnJlcXVlbmN5OiBNYXhpbXVtIGZyZXF1ZW5jaWVzIGFjY29yZGluZyB0byBkYXRhc2hlZXRzIG9wZXJhdGluZworICByZXF1aXJlbWVudHMuIFRocmVlIHZhbHVlcyBhcmUgcmVxdWlyZWQsIGRlcGVuZGluZyBvbiBjb252ZXJzaW9uIG1vZGU6CisgIC0gRnJlcXVlbmN5IGluIG5vcm1hbCBtb2RlIChBRExQQz0wLCBBREhTQz0wKQorICAtIEZyZXF1ZW5jeSBpbiBoaWdoLXNwZWVkIG1vZGUgKEFETFBDPTAsIEFESFNDPTEpCisgIC0gRnJlcXVlbmN5IGluIGxvdy1wb3dlciBtb2RlIChBRExQQz0xLCBBREhTQz0wKQorLSBtaW4tc2FtcGxlLXRpbWU6IE1pbmltdW0gc2FtcGxpbmcgdGltZSBpbiBuYW5vc2Vjb25kcy4gVGhpcyB2YWx1ZSBoYXMKKyAgdG8gYmUgY2hvc2VuIGFjY29yZGluZyB0byB0aGUgY29udmVyc2lvbiBtb2RlIGFuZCB0aGUgY29ubmVjdGVkIGFuYWxvZworICBzb3VyY2UgcmVzaXN0YW5jZSAoUl9hcykgYW5kIGNhcGFjaXRhbmNlIChDX2FzKS4gUmVmZXIgdGhlIGRhdGFzaGVldCdzCisgIG9wZXJhdGluZyByZXF1aXJlbWVudHMuIEEgc2FmZSBkZWZhdWx0IGFjcm9zcyBhIHdpZGUgcmFuZ2Ugb2YgUl9hcyBhbmQKKyAgQ19hcyBhcyB3ZWxsIGFzIGNvbnZlcnNpb24gbW9kZXMgaXMgMTAwMG5zLgorCitFeGFtcGxlOgorYWRjMDogYWRjQDQwMDNiMDAwIHsKKwljb21wYXRpYmxlID0gImZzbCx2ZjYxMC1hZGMiOworCXJlZyA9IDwweDQwMDNiMDAwIDB4MTAwMD47CisJaW50ZXJydXB0cyA9IDwwIDUzIDB4MDQ+OworCWNsb2NrcyA9IDwmY2xrcyBWRjYxMF9DTEtfQURDMD47CisJY2xvY2stbmFtZXMgPSAiYWRjIjsKKwlmc2wsYWRjay1tYXgtZnJlcXVlbmN5ID0gPDMwMDAwMDAwPiwgPDQwMDAwMDAwPiwKKwkJCQk8MjAwMDAwMDA+OworCXZyZWYtc3VwcGx5ID0gPCZyZWdfdmNjXzN2M19tY3U+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL3hpbGlueC14YWRjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL3hpbGlueC14YWRjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzEyNThlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMveGlsaW54LXhhZGMudHh0CkBAIC0wLDAgKzEsMTEzIEBACitYaWxpbnggWEFEQyBkZXZpY2UgZHJpdmVyCisKK1RoaXMgYmluZGluZyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIGJpbmRpbmdzIGZvciBib3RoIG9mIHRoZW0gc2luY2UgdGhlCitiaW5kaW5ncyBhcmUgdmVyeSBzaW1pbGFyLiBUaGUgWGlsaW54IFhBREMgaXMgYSBBREMgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlCitzZXJpZXMgNyBGUEdBcyBmcm9tIFhpbGlueC4gVGhlIFhBREMgaGFzIGEgRFJQIGludGVyZmFjZSBmb3IgY29tbXVuaWNhdGlvbi4KK0N1cnJlbnRseSB0d28gZGlmZmVyZW50IGZyb250ZW5kcyBmb3IgdGhlIERSUCBpbnRlcmZhY2UgZXhpc3QuIE9uZSB0aGF0IGlzIG9ubHkKK2F2YWlsYWJsZSBvbiB0aGUgWllOUSBmYW1pbHkgYXMgYSBoYXJkbWFjcm8gaW4gdGhlIFNvQyBwb3J0aW9uIG9mIHRoZSBaWU5RLiBUaGUKK290aGVyIG9uZSBpcyBhdmFpbGFibGUgb24gYWxsIHNlcmllcyA3IHBsYXRmb3JtcyBhbmQgaXMgYSBzb2Z0bWFjcm8gd2l0aCBhIEFYSQoraW50ZXJmYWNlLiBUaGlzIGJpbmRpbmcgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBiaW5kaW5ncyBmb3IgYm90aCBvZiB0aGVtIHNpbmNlCit0aGUgYmluZGluZ3MgYXJlIHZlcnkgc2ltaWxhci4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKwktIGNvbXBhdGlibGU6IFNob3VsZCBiZSBvbmUgb2YKKwkJKiAieGxueCx6eW5xLXhhZGMtMS4wMC5hIjogV2hlbiB1c2luZyB0aGUgWllOUSBkZXZpY2UKKwkJICBjb25maWd1cmF0aW9uIGludGVyZmFjZSB0byBpbnRlcmZhY2UgdG8gdGhlIFhBREMgaGFyZG1hY3JvLgorCQkqICJ4bG54LGF4aS14YWRjLTEuMDAuYSI6IFdoZW4gdXNpbmcgdGhlIGF4aS14YWRjIHBjb3JlIHRvCisJCSAgaW50ZXJmYWNlIHRvIHRoZSBYQURDIGhhcmRtYWNyby4KKwktIHJlZzogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKwktIGludGVycnVwdHM6IEludGVycnVwdCBmb3IgdGhlIFhBREMgY29udHJvbCBpbnRlcmZhY2UuCisJLSBjbG9ja3M6IFdoZW4gdXNpbmcgdGhlIFpZTlEgdGhpcyBtdXN0IGJlIHRoZSBaWU5RIFBDQVAgY2xvY2ssCisJICB3aGVuIHVzaW5nIHRoZSBBWEktWEFEQyBwY29yZSB0aGlzIG11c3QgYmUgdGhlIGNsb2NrIHRoYXQgcHJvdmlkZXMgdGhlCisJICBjbG9jayB0byB0aGUgQVhJIGJ1cyBpbnRlcmZhY2Ugb2YgdGhlIGNvcmUuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisJLSBpbnRlcnJ1cHQtcGFyZW50OiBwaGFuZGxlIHRvIHRoZSBwYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIKKwktIHhsbngsZXh0ZXJuYWwtbXV4OgorCQkqICJub25lIjogTm8gZXh0ZXJuYWwgbXVsdGlwbGV4ZXIgaXMgdXNlZCwgdGhpcyBpcyB0aGUgZGVmYXVsdAorCQkgIGlmIHRoZSBwcm9wZXJ0eSBpcyBvbWl0dGVkLgorCQkqICJzaW5nbGUiOiBFeHRlcm5hbCBtdWx0aXBsZXhlciBtb2RlIGlzIHVzZWQgd2l0aCBvbmUKKwkJICAgbXVsdGlwbGV4ZXIuCisJCSogImR1YWwiOiBFeHRlcm5hbCBtdWx0aXBsZXhlciBtb2RlIGlzIHVzZWQgd2l0aCB0d28KKwkJICBtdWx0aXBsZXhlcnMgZm9yIHNpbXVsdGFuZW91cyBzYW1wbGluZy4KKwktIHhsbngsZXh0ZXJuYWwtbXV4LWNoYW5uZWw6IENvbmZpZ3VyZXMgd2hpY2ggcGFpciBvZiBwaW5zIGlzIHVzZWQgdG8KKwkgIHNhbXBsZSBkYXRhIGluIGV4dGVybmFsIG11eCBtb2RlLgorCSAgVmFsaWQgdmFsdWVzIGZvciBzaW5nbGUgZXh0ZXJuYWwgbXVsdGlwbGV4ZXIgbW9kZSBhcmU6CisJCTA6IFZQL1ZOCisJCTE6IFZBVVhQWzBdL1ZBVVhOWzBdCisJCTI6IFZBVVhQWzFdL1ZBVVhOWzFdCisJCS4uLgorCQkxNjogVkFVWFBbMTVdL1ZBVVhOWzE1XQorCSAgVmFsaWQgdmFsdWVzIGZvciBkdWFsIGV4dGVybmFsIG11bHRpcGxleGVyIG1vZGUgYXJlOgorCQkxOiBWQVVYUFswXS9WQVVYTlswXSAtIFZBVVhQWzhdL1ZBVVhOWzhdCisJCTI6IFZBVVhQWzFdL1ZBVVhOWzFdIC0gVkFVWFBbOV0vVkFVWE5bOV0KKwkJLi4uCisJCTg6IFZBVVhQWzddL1ZBVVhOWzddIC0gVkFVWFBbMTVdL1ZBVVhOWzE1XQorCisJICBUaGlzIHByb3BlcnR5IG5lZWRzIHRvIGJlIHByZXNlbnQgaWYgdGhlIGRldmljZSBpcyBjb25maWd1cmVkIGZvcgorCSAgZXh0ZXJuYWwgbXVsdGlwbGV4ZXIgbW9kZSAoZWl0aGVyIHNpbmdsZSBvciBkdWFsKS4gSWYgdGhlIGRldmljZSBpcworCSAgbm90IHVzaW5nIGV4dGVybmFsIG11bHRpcGxleGVyIG1vZGUgdGhlIHByb3BlcnR5IGlzIGlnbm9yZWQuCisJLSB4bmx4LGNoYW5uZWxzOiBMaXN0IG9mIGV4dGVybmFsIGNoYW5uZWxzIHRoYXQgYXJlIGNvbm5lY3RlZCB0byB0aGUgQURDCisJICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCQkqICNhZGRyZXNzLWNlbGxzOiBTaG91bGQgYmUgMS4KKwkJKiAjc2l6ZS1jZWxsczogU2hvdWxkIGJlIDAuCisKKwkgIFRoZSBjaGlsZCBub2RlcyBvZiB0aGlzIG5vZGUgcmVwcmVzZW50IHRoZSBleHRlcm5hbCBjaGFubmVscyB3aGljaCBhcmUKKwkgIGNvbm5lY3RlZCB0byB0aGUgQURDLiBJZiB0aGUgcHJvcGVydHkgaXMgbm8gcHJlc2VudCBubyBleHRlcm5hbAorCSAgY2hhbm5lbHMgd2lsbCBiZSBhc3N1bWVkIHRvIGJlIGNvbm5lY3RlZC4KKworCSAgRWFjaCBjaGlsZCBub2RlIHJlcHJlc2VudHMgb25lIGNoYW5uZWwgYW5kIGhhcyB0aGUgZm9sbG93aW5nCisJICBwcm9wZXJ0aWVzOgorCQlSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCQkJKiByZWc6IFBhaXIgb2YgcGlucyB0aGUgY2hhbm5lbCBpcyBjb25uZWN0ZWQgdG8uCisJCQkJMDogVlAvVk4KKwkJCQkxOiBWQVVYUFswXS9WQVVYTlswXQorCQkJCTI6IFZBVVhQWzFdL1ZBVVhOWzFdCisJCQkJLi4uCisJCQkJMTY6IFZBVVhQWzE1XS9WQVVYTlsxNV0KKwkJCSAgTm90ZSBlYWNoIGNoYW5uZWwgbnVtYmVyIHNob3VsZCBvbmx5IGJlIHVzZWQgYXQgbW9zdAorCQkJICBvbmNlLgorCQlPcHRpb25hbCBwcm9wZXJ0aWVzOgorCQkJKiB4bG54LGJpcG9sYXI6IElmIHNldCB0aGUgY2hhbm5lbCBpcyB1c2VkIGluIGJpcG9sYXIKKwkJCSAgbW9kZS4KKworCitFeGFtcGxlczoKKwl4YWRjQGY4MDA3MTAwIHsKKwkJY29tcGF0aWJsZSA9ICJ4bG54LHp5bnEteGFkYy0xLjAwLmEiOworCQlyZWcgPSA8MHhmODAwNzEwMCAweDIwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDcgND47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdpYz47CisJCWNsb2NrcyA9IDwmcGNhcF9jbGs+OworCisJCXhsbngsY2hhbm5lbHMgeworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJCWNoYW5uZWxAMCB7CisJCQkJcmVnID0gPDA+OworCQkJfTsKKwkJCWNoYW5uZWxAMSB7CisJCQkJcmVnID0gPDE+OworCQkJfTsKKwkJCWNoYW5uZWxAOCB7CisJCQkJcmVnID0gPDg+OworCQkJfTsKKwkJfTsKKwl9OworCisJeGFkY0A0MzIwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAieGxueCxheGkteGFkYy0xLjAwLmEiOworCQlyZWcgPSA8MHg0MzIwMDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgNTMgND47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdpYz47CisJCWNsb2NrcyA9IDwmZnBnYTFfY2xrPjsKKworCQl4bG54LGNoYW5uZWxzIHsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MD47CisJCQljaGFubmVsQDAgeworCQkJCXJlZyA9IDwwPjsKKwkJCQl4bG54LGJpcG9sYXI7CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2RhYy9hZDczMDMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9kYWMvYWQ3MzAzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTQ2MTBmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9kYWMvYWQ3MzAzLnR4dApAQCAtMCwwICsxLDIzIEBACitBbmFsb2cgRGV2aWNlcyBBRDczMDMgREFDIGRldmljZSBkcml2ZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKwktIGNvbXBhdGlibGU6IE11c3QgYmUgImFkaSxhZDczMDMiCisJLSByZWc6IFNQSSBjaGlwIHNlbGVjdCBudW1iZXIgZm9yIHRoZSBkZXZpY2UKKwktIHNwaS1tYXgtZnJlcXVlbmN5OiBNYXggU1BJIGZyZXF1ZW5jeSB0byB1c2UgKDwgMzAwMDAwMDApCisJLSBWZGQtc3VwcGx5OiBQaGFuZGxlIHRvIHRoZSBWZGQgcG93ZXIgc3VwcGx5CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisJLSBSRUYtc3VwcGx5OiBQaGFuZGxlIHRvIHRoZSBleHRlcm5hbCByZWZlcmVuY2Ugdm9sdGFnZSBzdXBwbHkuIFRoaXMgc2hvdWxkCisJICBvbmx5IGJlIHNldCBpZiB0aGVyZSBpcyBhbiBleHRlcm5hbCByZWZlcmVuY2Ugdm9sdGFnZSBjb25uZWN0ZWQgdG8gdGhlIFJFRgorCSAgcGluLiBJZiB0aGUgcHJvcGVydHkgaXMgbm90IHNldCBWZGQvMiBpcyB1c2VkIGFzIHRoZSByZWZlcmVuY2Ugdm9sdGFnZS4KKworRXhhbXBsZToKKworCQlhZDczMDNANCB7CisJCQljb21wYXRpYmxlID0gImFkaSxhZDczMDMiOworCQkJcmVnID0gPDQ+OworCQkJc3BpLW1heC1mcmVxdWVuY3kgPSA8MTAwMDAwMDA+OworCQkJVmRkLXN1cHBseSA9IDwmdmRkX3N1cHBseT47CisJCQlhZGksdXNlLWV4dGVybmFsLXJlZmVyZW5jZTsKKwkJCVJFRi1zdXBwbHkgPSA8JnZyZWZfc3VwcGx5PjsKKwkJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vZGFjL21heDU4MjEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9kYWMvbWF4NTgyMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQyNzZjZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vZGFjL21heDU4MjEudHh0CkBAIC0wLDAgKzEsMTQgQEAKK01heGltIG1heDU4MjEgREFDIGRldmljZSBkcml2ZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKwktIGNvbXBhdGlibGU6IE11c3QgYmUgIm1heGltLG1heDU4MjEiCisJLSByZWc6IFNob3VsZCBjb250YWluIHRoZSBEQUMgSTJDIGFkZHJlc3MKKwktIHZyZWYtc3VwcGx5OiBQaGFuZGxlIHRvIHRoZSB2cmVmIHBvd2VyIHN1cHBseQorCitFeGFtcGxlOgorCisJbWF4NTgyMUAzOCB7CisJCWNvbXBhdGlibGUgPSAibWF4aW0sbWF4NTgyMSI7CisJCXJlZyA9IDwweDM4PjsKKwkJdnJlZi1zdXBwbHkgPSA8JnJlZ19tYXg1ODIxPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9kYWMvdGksZGFjNzUxMi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2RhYy90aSxkYWM3NTEyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGI0NTkzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9kYWMvdGksZGFjNzUxMi50eHQKQEAgLTAsMCArMSwyMCBAQAorVEkgREFDNzUxMiBERVZJQ0VUUkVFIEJJTkRJTkdTCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKwktICJjb21wYXRpYmxlIgkJTXVzdCBiZSBzZXQgdG8gInRpLGRhYzc1MTIiCisKK1Byb3BlcnR5IHJ1bGVzIGRlc2NyaWJlZCBpbiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1idXMudHh0CithcHBseS4gSW4gcGFydGljdWxhciwgInJlZyIgYW5kICJzcGktbWF4LWZyZXF1ZW5jeSIgcHJvcGVydGllcyBtdXN0IGJlIGdpdmVuLgorCisKK0V4YW1wbGU6CisKKwlzcGlfbWFzdGVyIHsKKwkJZGFjNzUxMjogZGFjNzUxMkAwIHsKKwkJCWNvbXBhdGlibGUgPSAidGksZGFjNzUxMiI7CisJCQlyZWcgPSA8MD47IC8qIENTMCAqLworCQkJc3BpLW1heC1mcmVxdWVuY3kgPSA8MTAwMDAwMD47CisJCX07CisJfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9mcmVxdWVuY3kvYWRmNDM1MC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2ZyZXF1ZW5jeS9hZGY0MzUwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGMxODFkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9mcmVxdWVuY3kvYWRmNDM1MC50eHQKQEAgLTAsMCArMSw4NiBAQAorQW5hbG9nIERldmljZXMgQURGNDM1MC9BREY0MzUxIGRldmljZSBkcml2ZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKwktIGNvbXBhdGlibGU6IFNob3VsZCBiZSBvbmUgb2YKKwkJKiAiYWRpLGFkZjQzNTAiOiBXaGVuIHVzaW5nIHRoZSBBREY0MzUwIGRldmljZQorCQkqICJhZGksYWRmNDM1MSI6IFdoZW4gdXNpbmcgdGhlIEFERjQzNTEgZGV2aWNlCisJLSByZWc6IFNQSSBjaGlwIHNlbGVjdCBudW1iZXJ0IGZvciB0aGUgZGV2aWNlCisJLSBzcGktbWF4LWZyZXF1ZW5jeTogTWF4IFNQSSBmcmVxdWVuY3kgdG8gdXNlICg8IDIwMDAwMDAwKQorCS0gY2xvY2tzOiBGcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nLiBDbG9jayBpcyBwaGFuZGxlIHRvIGNsb2NrIGZvcgorCQlBREY0MzV4IFJlZmVyZW5jZSBDbG9jayAoQ0xLSU4pLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCS0gZ3Bpb3M6CSBHUElPIExvY2sgZGV0ZWN0IC0gSWYgc2V0IHdpdGggYSB2YWxpZCBwaGFuZGxlIGFuZCBHUElPIG51bWJlciwKKwkJCXBsbCBsb2NrIHN0YXRlIGlzIHRlc3RlZCB1cG9uIHJlYWQuCisJLSBhZGksY2hhbm5lbC1zcGFjaW5nOiBDaGFubmVsIHNwYWNpbmcgaW4gSHogKGluZmx1ZW5jZXMgTU9EVUxVUykuCisJLSBhZGkscG93ZXItdXAtZnJlcXVlbmN5OglJZiBzZXQgaW4gSHogdGhlIFBMTCB0dW5lcyB0bworCQkJdGhlIGRlc2lyZWQgZnJlcXVlbmN5IG9uIHByb2JlLgorCS0gYWRpLHJlZmVyZW5jZS1kaXYtZmFjdG9yOiBJZiBzZXQgdGhlIGRyaXZlciBza2lwcyBkeW5hbWljIGNhbGN1bGF0aW9uCisJCQlhbmQgdXNlcyB0aGlzIGRlZmF1bHQgdmFsdWUgaW5zdGVhZC4KKwktIGFkaSxyZWZlcmVuY2UtZG91Ymxlci1lbmFibGU6IEVuYWJsZXMgcmVmZXJlbmNlIGRvdWJsZXIuCisJLSBhZGkscmVmZXJlbmNlLWRpdjItZW5hYmxlOiBFbmFibGVzIHJlZmVyZW5jZSBkaXZpZGVyLgorCS0gYWRpLHBoYXNlLWRldGVjdG9yLXBvbGFyaXR5LXBvc2l0aXZlLWVuYWJsZTogRW5hYmxlcyBwb3NpdGl2ZSBwaGFzZQorCQkJZGV0ZWN0b3IgcG9sYXJpdHkuIERlZmF1bHQgPSBuZWdhdGl2ZS4KKwktIGFkaSxsb2NrLWRldGVjdC1wcmVjaXNpb24tNm5zLWVuYWJsZTogRW5hYmxlcyA2bnMgbG9jayBkZXRlY3QgcHJlY2lzaW9uLgorCQkJRGVmYXVsdCA9IDEwbnMuCisJLSBhZGksbG9jay1kZXRlY3QtZnVuY3Rpb24taW50ZWdlci1uLWVuYWJsZTogRW5hYmxlcyBsb2NrIGRldGVjdAorCQkJZm9yIGludGVnZXItTiBtb2RlLiBEZWZhdWx0ID0gZmFjdGlvbmFsLU4gbW9kZS4KKwktIGFkaSxjaGFyZ2UtcHVtcC1jdXJyZW50OiBDaGFyZ2UgcHVtcCBjdXJyZW50IGluIG1BLgorCQkJRGVmYXVsdCA9IDI1MDBtQS4KKwktIGFkaSxtdXhvdXQtc2VsZWN0OiBPbiBjaGlwIG11bHRpcGxleGVyIG91dHB1dCBzZWxlY3Rpb24uCisJCQlWYWxpZCB2YWx1ZXMgZm9yIHRoZSBtdWx0aXBsZXhlciBvdXRwdXQgYXJlOgorCQkJMDogVGhyZWUtU3RhdGUgT3V0cHV0IChkZWZhdWx0KQorCQkJMTogRFZERAorCQkJMjogREdORAorCQkJMzogUi1Db3VudGVyIG91dHB1dAorCQkJNDogTi1EaXZpZGVyIG91dHB1dAorCQkJNTogQW5hbG9nIGxvY2sgZGV0ZWN0CisJCQk2OiBEaWdpdGFsIGxvY2sgZGV0ZWN0CisJLSBhZGksbG93LXNwdXItbW9kZS1lbmFibGU6IEVuYWJsZXMgbG93IHNwdXIgbW9kZS4KKwkJCURlZmF1bHQgPSBMb3cgbm9pc2UgbW9kZS4KKwktIGFkaSxjeWNsZS1zbGlwLXJlZHVjdGlvbi1lbmFibGU6IEVuYWJsZXMgY3ljbGUgc2xpcCByZWR1Y3Rpb24uCisJLSBhZGksY2hhcmdlLWNhbmNlbGxhdGlvbi1lbmFibGU6IEVuYWJsZWQgY2hhcmdlIHB1bXAKKwkJCWNoYXJnZSBjYW5jZWxsYXRpb24gZm9yIGludGVnZXItTiBtb2Rlcy4KKwktIGFkaSxhbnRpLWJhY2tsYXNoLTNucy1lbmFibGU6IEVuYWJsZXMgM25zIGFudGliYWNrbGFzaCBwdWxzZSB3aWR0aAorCQkJIGZvciBpbnRlZ2VyLU4gbW9kZXMuCisJLSBhZGksYmFuZC1zZWxlY3QtY2xvY2stbW9kZS1oaWdoLWVuYWJsZTogRW5hYmxlcyBmYXN0ZXIgYmFuZAorCQkJc2VsZWN0aW9uIGxvZ2ljLgorCS0gYWRpLDEyYml0LWNsay1kaXZpZGVyOiBDbG9jayBkaXZpZGVyIHZhbHVlIHVzZWQgd2hlbgorCQkJYWRpLDEyYml0LWNsa2Rpdi1tb2RlICE9IDAKKwktIGFkaSxjbGstZGl2aWRlci1tb2RlOgorCQkJVmFsaWQgdmFsdWVzIGZvciB0aGUgY2xrZGl2IG1vZGUgYXJlOgorCQkJMDogQ2xvY2sgZGl2aWRlciBvZmYgKGRlZmF1bHQpCisJCQkxOiBGYXN0IGxvY2sgZW5hYmxlCisJCQkyOiBQaGFzZSByZXN5bmMgZW5hYmxlCisJLSBhZGksYXV4LW91dHB1dC1lbmFibGU6IEVuYWJsZXMgYXV4aWxpYXJ5IFJGIG91dHB1dC4KKwktIGFkaSxhdXgtb3V0cHV0LWZ1bmRhbWVudGFsLWVuYWJsZTogU2VsZWN0cyBmdW5kYW1lbnRhbCBWQ08gb3V0cHV0IG9uCisJCQl0aGUgYXV4aWxpYXJ5IFJGIG91dHB1dC4gRGVmYXVsdCA9IE91dHB1dCBvZiBSRiBkaXZpZGVycy4KKwktIGFkaSxtdXRlLXRpbGwtbG9jay1lbmFibGU6IEVuYWJsZXMgTXV0ZS1UaWxsLUxvY2stRGV0ZWN0IGZ1bmN0aW9uLgorCS0gYWRpLG91dHB1dC1wb3dlcjogT3V0cHV0IHBvd2VyIHNlbGVjdGlvbi4KKwkJCVZhbGlkIHZhbHVlcyBmb3IgdGhlIHBvd2VyIG1vZGUgYXJlOgorCQkJMDogLTRkQm0gKGRlZmF1bHQpCisJCQkxOiAtMWRCbQorCQkJMjogKzJkQm0KKwkJCTM6ICs1ZEJtCisJLSBhZGksYXV4LW91dHB1dC1wb3dlcjogQXV4aWxpYXJ5IG91dHB1dCBwb3dlciBzZWxlY3Rpb24uCisJCQlWYWxpZCB2YWx1ZXMgZm9yIHRoZSBwb3dlciBtb2RlIGFyZToKKwkJCTA6IC00ZEJtIChkZWZhdWx0KQorCQkJMTogLTFkQm0KKwkJCTI6ICsyZEJtCisJCQkzOiArNWRCbQorCisKK0V4YW1wbGU6CisJCWxvX3BsbDBfcnhfYWRmNDM1MTogYWRmNDM1MS1yeC1scGNANCB7CisJCQljb21wYXRpYmxlID0gImFkaSxhZGY0MzUxIjsKKwkJCXJlZyA9IDw0PjsKKwkJCXNwaS1tYXgtZnJlcXVlbmN5ID0gPDEwMDAwMDAwPjsKKwkJCWNsb2NrcyA9IDwmY2xrMF9hZDk1MjMgOT47CisJCQljbG9jay1uYW1lcyA9ICJjbGtpbiI7CisJCQlhZGksY2hhbm5lbC1zcGFjaW5nID0gPDEwMDAwPjsKKwkJCWFkaSxwb3dlci11cC1mcmVxdWVuY3kgPSA8MjQwMDAwMDAwMD47CisJCQlhZGkscGhhc2UtZGV0ZWN0b3ItcG9sYXJpdHktcG9zaXRpdmUtZW5hYmxlOworCQkJYWRpLGNoYXJnZS1wdW1wLWN1cnJlbnQgPSA8MjUwMD47CisJCQlhZGksb3V0cHV0LXBvd2VyID0gPDM+OworCQkJYWRpLG11dGUtdGlsbC1sb2NrLWVuYWJsZTsKKwkJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vaHVtaWRpdHkvZGh0MTEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9odW1pZGl0eS9kaHQxMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNjMjRjMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vaHVtaWRpdHkvZGh0MTEudHh0CkBAIC0wLDAgKzEsMTQgQEAKKyogREhUMTEgaHVtaWRpdHkvdGVtcGVyYXR1cmUgc2Vuc29yIChhbmQgY29tcGF0aWJsZXMgbGlrZSBESFQyMikKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImRodDExIgorICAtIGdwaW9zOiBTaG91bGQgc3BlY2lmeSB0aGUgR1BJTyBjb25uZWN0ZWQgdG8gdGhlIHNlbnNvcidzIGRhdGEKKyAgICBsaW5lLCBzZWUgImdwaW9zIHByb3BlcnR5IiBpbgorICAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8udHh0LgorCitFeGFtcGxlOgorCitodW1pZGl0eV9zZW5zb3IgeworCWNvbXBhdGlibGUgPSAiZGh0MTEiOworCWdwaW9zID0gPCZncGlvMCA2IDA+OworfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9paW8tYmluZGluZ3MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9paW8tYmluZGluZ3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiNDQ3ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2lpby1iaW5kaW5ncy50eHQKQEAgLTAsMCArMSw5NyBAQAorVGhpcyBiaW5kaW5nIGlzIGRlcml2ZWQgZnJvbSBjbG9jayBiaW5kaW5ncywgYW5kIGJhc2VkIG9uIHN1Z2dlc3Rpb25zCitmcm9tIExhcnMtUGV0ZXIgQ2xhdXNlbiBbMV0uCisKK1NvdXJjZXMgb2YgSUlPIGNoYW5uZWxzIGNhbiBiZSByZXByZXNlbnRlZCBieSBhbnkgbm9kZSBpbiB0aGUgZGV2aWNlCit0cmVlLiBUaG9zZSBub2RlcyBhcmUgZGVzaWduYXRlZCBhcyBJSU8gcHJvdmlkZXJzLiBJSU8gY29uc3VtZXIKK25vZGVzIHVzZSBhIHBoYW5kbGUgYW5kIElJTyBzcGVjaWZpZXIgcGFpciB0byBjb25uZWN0IElJTyBwcm92aWRlcgorb3V0cHV0cyB0byBJSU8gaW5wdXRzLiBTaW1pbGFyIHRvIHRoZSBncGlvIHNwZWNpZmllcnMsIGFuIElJTworc3BlY2lmaWVyIGlzIGFuIGFycmF5IG9mIG9uZSBvciBtb3JlIGNlbGxzIGlkZW50aWZ5aW5nIHRoZSBJSU8KK291dHB1dCBvbiBhIGRldmljZS4gVGhlIGxlbmd0aCBvZiBhbiBJSU8gc3BlY2lmaWVyIGlzIGRlZmluZWQgYnkgdGhlCit2YWx1ZSBvZiBhICNpby1jaGFubmVsLWNlbGxzIHByb3BlcnR5IGluIHRoZSBJSU8gcHJvdmlkZXIgbm9kZS4KKworWzFdIGh0dHA6Ly9tYXJjLmluZm8vP2w9bGludXgtaWlvJm09MTM1OTAyMTE5NTA3NDgzJnc9MgorCis9PUlJTyBwcm92aWRlcnM9PQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorI2lvLWNoYW5uZWwtY2VsbHM6IE51bWJlciBvZiBjZWxscyBpbiBhbiBJSU8gc3BlY2lmaWVyOyBUeXBpY2FsbHkgMCBmb3Igbm9kZXMKKwkJICAgd2l0aCBhIHNpbmdsZSBJSU8gb3V0cHV0IGFuZCAxIGZvciBub2RlcyB3aXRoIG11bHRpcGxlCisJCSAgIElJTyBvdXRwdXRzLgorCitFeGFtcGxlIGZvciBhIHNpbXBsZSBjb25maWd1cmF0aW9uIHdpdGggbm8gdHJpZ2dlcjoKKworCWFkYzogdm9sdGFnZS1zZW5zb3JAMzUgeworCQljb21wYXRpYmxlID0gIm1heGltLG1heDExMzkiOworCQlyZWcgPSA8MHgzNT47CisJCSNpby1jaGFubmVsLWNlbGxzID0gPDE+OworCX07CisKK0V4YW1wbGUgZm9yIGEgY29uZmlndXJhdGlvbiB3aXRoIHRyaWdnZXI6CisKKwlhZGNAMzUgeworCQljb21wYXRpYmxlID0gInNvbWUtdmVuZG9yLHNvbWUtYWRjIjsKKwkJcmVnID0gPDB4MzU+OworCisJCWFkYzE6IGlpby1kZXZpY2VAMCB7CisJCQkjaW8tY2hhbm5lbC1jZWxscyA9IDwxPjsKKwkJCS8qIG90aGVyIHByb3BlcnRpZXMgKi8KKwkJfTsKKwkJYWRjMjogaWlvLWRldmljZUAxIHsKKwkJCSNpby1jaGFubmVsLWNlbGxzID0gPDE+OworCQkJLyogb3RoZXIgcHJvcGVydGllcyAqLworCQl9OworCX07CisKKz09SUlPIGNvbnN1bWVycz09CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6Citpby1jaGFubmVsczoJTGlzdCBvZiBwaGFuZGxlIGFuZCBJSU8gc3BlY2lmaWVyIHBhaXJzLCBvbmUgcGFpcgorCQlmb3IgZWFjaCBJSU8gaW5wdXQgdG8gdGhlIGRldmljZS4gTm90ZTogaWYgdGhlCisJCUlJTyBwcm92aWRlciBzcGVjaWZpZXMgJzAnIGZvciAjaW8tY2hhbm5lbC1jZWxscywKKwkJdGhlbiBvbmx5IHRoZSBwaGFuZGxlIHBvcnRpb24gb2YgdGhlIHBhaXIgd2lsbCBhcHBlYXIuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6Citpby1jaGFubmVsLW5hbWVzOgorCQlMaXN0IG9mIElJTyBpbnB1dCBuYW1lIHN0cmluZ3Mgc29ydGVkIGluIHRoZSBzYW1lCisJCW9yZGVyIGFzIHRoZSBpby1jaGFubmVscyBwcm9wZXJ0eS4gQ29uc3VtZXJzIGRyaXZlcnMKKwkJd2lsbCB1c2UgaW8tY2hhbm5lbC1uYW1lcyB0byBtYXRjaCBJSU8gaW5wdXQgbmFtZXMKKwkJd2l0aCBJSU8gc3BlY2lmaWVycy4KK2lvLWNoYW5uZWwtcmFuZ2VzOgorCQlFbXB0eSBwcm9wZXJ0eSBpbmRpY2F0aW5nIHRoYXQgY2hpbGQgbm9kZXMgY2FuIGluaGVyaXQgbmFtZWQKKwkJSUlPIGNoYW5uZWxzIGZyb20gdGhpcyBub2RlLiBVc2VmdWwgZm9yIGJ1cyBub2RlcyB0byBwcm92aWRlCisJCWFuZCBJSU8gY2hhbm5lbCB0byB0aGVpciBjaGlsZHJlbi4KKworRm9yIGV4YW1wbGU6CisKKwlkZXZpY2UgeworCQlpby1jaGFubmVscyA9IDwmYWRjIDE+LCA8JnJlZiAwPjsKKwkJaW8tY2hhbm5lbC1uYW1lcyA9ICJ2Y2MiLCAidmRkIjsKKwl9OworCitUaGlzIHJlcHJlc2VudHMgYSBkZXZpY2Ugd2l0aCB0d28gSUlPIGlucHV0cywgbmFtZWQgInZjYyIgYW5kICJ2ZGQiLgorVGhlIHZjYyBjaGFubmVsIGlzIGNvbm5lY3RlZCB0byBvdXRwdXQgMSBvZiB0aGUgJmFkYyBkZXZpY2UsIGFuZCB0aGUKK3ZkZCBjaGFubmVsIGlzIGNvbm5lY3RlZCB0byBvdXRwdXQgMCBvZiB0aGUgJnJlZiBkZXZpY2UuCisKKz09RXhhbXBsZT09CisKKwlhZGM6IG1heDExMzlAMzUgeworCQljb21wYXRpYmxlID0gIm1heGltLG1heDExMzkiOworCQlyZWcgPSA8MHgzNT47CisJCSNpby1jaGFubmVsLWNlbGxzID0gPDE+OworCX07CisKKwkuLi4KKworCWlpb19od21vbiB7CisJCWNvbXBhdGlibGUgPSAiaWlvLWh3bW9uIjsKKwkJaW8tY2hhbm5lbHMgPSA8JmFkYyAwPiwgPCZhZGMgMT4sIDwmYWRjIDI+LAorCQkJPCZhZGMgMz4sIDwmYWRjIDQ+LCA8JmFkYyA1PiwKKwkJCTwmYWRjIDY+LCA8JmFkYyA3PiwgPCZhZGMgOD4sCisJCQk8JmFkYyA5PjsKKwl9OworCisJc29tZV9jb25zdW1lciB7CisJCWNvbXBhdGlibGUgPSAic29tZS1jb25zdW1lciI7CisJCWlvLWNoYW5uZWxzID0gPCZhZGMgMTA+LCA8JmFkYyAxMT47CisJCWlvLWNoYW5uZWwtbmFtZXMgPSAiYWRjMSIsICJhZGMyIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9pbXUvaW52X21wdTYwNTAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9pbXUvaW52X21wdTYwNTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0ZDhmMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2ltdS9pbnZfbXB1NjA1MC50eHQKQEAgLTAsMCArMSwxNyBAQAorSW52ZW5TZW5zZSBNUFUtNjA1MCBTaXgtQXhpcyAoR3lybyArIEFjY2VsZXJvbWV0ZXIpIE1FTVMgTW90aW9uVHJhY2tpbmcgRGV2aWNlCisKK2h0dHA6Ly93d3cuaW52ZW5zZW5zZS5jb20vbWVtcy9neXJvL21wdTYwNTAuaHRtbAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiaW52ZW5zZW5zZSxtcHU2MDUwIgorIC0gcmVnIDogdGhlIEkyQyBhZGRyZXNzIG9mIHRoZSBzZW5zb3IKKyAtIGludGVycnVwdC1wYXJlbnQgOiBzaG91bGQgYmUgdGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlcgorIC0gaW50ZXJydXB0cyA6IGludGVycnVwdCBtYXBwaW5nIGZvciBHUElPIElSUQorCitFeGFtcGxlOgorCW1wdTYwNTBANjggeworCQljb21wYXRpYmxlID0gImludmVuc2Vuc2UsbXB1NjA1MCI7CisJCXJlZyA9IDwweDY4PjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzE+OworCQlpbnRlcnJ1cHRzID0gPDE4IDE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2xpZ2h0L2FwZHM5MzAwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vbGlnaHQvYXBkczkzMDAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZjY2YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2xpZ2h0L2FwZHM5MzAwLnR4dApAQCAtMCwwICsxLDIyIEBACisqIEF2YWdvIEFQRFM5MzAwIGFtYmllbnQgbGlnaHQgc2Vuc29yCisKK2h0dHA6Ly93d3cuYXZhZ290ZWNoLmNvbS9kb2NzL0FWMDItMTA3N0VOCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJhdmFnbyxhcGRzOTMwMCIKKyAgLSByZWcgOiB0aGUgSTJDIGFkZHJlc3Mgb2YgdGhlIHNlbnNvcgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCisgIC0gaW50ZXJydXB0LXBhcmVudCA6IHNob3VsZCBiZSB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyCisgIC0gaW50ZXJydXB0cyA6IGludGVycnVwdCBtYXBwaW5nIGZvciBHUElPIElSUQorCitFeGFtcGxlOgorCithcGRzOTMwMEAzOSB7CisJY29tcGF0aWJsZSA9ICJhdmFnbyxhcGRzOTMwMCI7CisJcmVnID0gPDB4Mzk+OworCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8yPjsKKwlpbnRlcnJ1cHRzID0gPDI5IDg+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vbGlnaHQvYXBkczk5NjAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9saWdodC9hcGRzOTk2MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc0YjcwOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vbGlnaHQvYXBkczk5NjAudHh0CkBAIC0wLDAgKzEsMjIgQEAKKyogQXZhZ28gQVBEUzk5NjAgZ2VzdHVyZS9SR0IvQUxTL3Byb3hpbWl0eSBzZW5zb3IKKworaHR0cDovL3d3dy5hdmFnb3RlY2guY29tL2RvY3MvQVYwMi00MTkxRU4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGU6IG11c3QgYmUgImF2YWdvLGFwZHM5OTYwIgorICAtIHJlZzogdGhlIEkyYyBhZGRyZXNzIG9mIHRoZSBzZW5zb3IKKyAgLSBpbnRlcnJ1cHQtcGFyZW50OiBzaG91bGQgYmUgdGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlcgorICAtIGludGVycnVwdHMgOiB0aGUgc29sZSBpbnRlcnJ1cHQgZ2VuZXJhdGVkIGJ5IHRoZSBkZXZpY2UKKworICBSZWZlciB0byBpbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlcnJ1cHRzLnR4dCBmb3IgZ2VuZXJpYyBpbnRlcnJ1cHQgY2xpZW50CisgIG5vZGUgYmluZGluZ3MuCisKK0V4YW1wbGU6CisKK2FwZHM5OTYwQDM5IHsKKwljb21wYXRpYmxlID0gImF2YWdvLGFwZHM5OTYwIjsKKwlyZWcgPSA8MHgzOT47CisJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzE+OworCWludGVycnVwdHMgPSA8MTYgMT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9saWdodC9jbTM2NjUxLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vbGlnaHQvY20zNjY1MS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzAzZTE5ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vbGlnaHQvY20zNjY1MS50eHQKQEAgLTAsMCArMSwyNiBAQAorKiBDYXBlbGxhIENNMzY2NTEgSTJDIFByb3hpbWl0eSBhbmQgQ29sb3IgTGlnaHQgc2Vuc29yCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IG11c3QgYmUgImNhcGVsbGEsY20zNjY1MSIKKy0gcmVnOiB0aGUgSTJDIGFkZHJlc3Mgb2YgdGhlIGRldmljZQorLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQtc3BlY2lmaWVyIGZvciB0aGUgc29sZSBpbnRlcnJ1cHQKKwkgICAgICBnZW5lcmF0ZWQgYnkgdGhlIGRldmljZQorLSB2bGVkLXN1cHBseTogcmVndWxhdG9yIGZvciB0aGUgSVIgTEVELiBJUl9MRUQgaXMgYSBwYXJ0CisJICAgICAgb2YgdGhlIGNtMzY2NTEgZm9yIHByb3hpbWl0eSBkZXRlY3Rpb24uCisJICAgICAgQXMgY292ZXJlZCBpbiAuLi8uLi9yZWd1bGF0b3IvcmVndWxhdG9yLnR4dAorCitFeGFtcGxlOgorCisJaTJjX2NtMzY2NTE6IGkyYy1ncGlvIHsKKwkJLyogLi4uICovCisKKwkJY20zNjY1MUAxOCB7CisJCQljb21wYXRpYmxlID0gImNhcGVsbGEsY20zNjY1MSI7CisJCQlyZWcgPSA8MHgxOD47CisJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncHgwPjsKKwkJCWludGVycnVwdHMgPSA8MiAwPjsKKwkJCXZsZWQtc3VwcGx5ID0gPCZwc19hbHNfcmVnPjsKKwkJfTsKKworCQkvKiAuLi4gKi8KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9saWdodC9ncDJhcDAyMGEwMGYudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9saWdodC9ncDJhcDAyMGEwMGYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyMzFjODIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2xpZ2h0L2dwMmFwMDIwYTAwZi50eHQKQEAgLTAsMCArMSwyMSBAQAorKiBTaGFycCBHUDJBUDAyMEEwMEYgSTJDIFByb3hpbWl0eS9BTFMgc2Vuc29yCisKK1RoZSBwcm94aW1pdHkgZGV0ZWN0b3Igc2Vuc29yIHJlcXVpcmVzIHBvd2VyIHN1cHBseQorZm9yIGl0cyBidWlsdC1pbiBsZWQuIEl0IGlzIGFsc28gZGVmaW5lZCBieSB0aGlzIGJpbmRpbmcuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJzaGFycCxncDJhcDAyMGEwMGYiCisgIC0gcmVnIDogdGhlIEkyQyBzbGF2ZSBhZGRyZXNzIG9mIHRoZSBsaWdodCBzZW5zb3IKKyAgLSBpbnRlcnJ1cHRzIDogaW50ZXJydXB0IHNwZWNpZmllciBmb3IgdGhlIHNvbGUgaW50ZXJydXB0IGdlbmVyYXRlZAorCQkgYnkgdGhlIGRldmljZQorICAtIHZsZWQtc3VwcGx5IDogVkxFRCBwb3dlciBzdXBwbHksIGFzIGNvdmVyZWQgaW4gLi4vcmVndWxhdG9yL3JlZ3VsYXRvci50eHQKKworRXhhbXBsZToKKworZ3AyYXAwMjBhMDBmQDM5IHsKKwljb21wYXRpYmxlID0gInNoYXJwLGdwMmFwMDIwYTAwZiI7CisJcmVnID0gPDB4Mzk+OworCWludGVycnVwdHMgPSA8MiAwPjsKKwl2bGVkLXN1cHBseSA9IDwuLi4+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vbGlnaHQvdHNsMjU2My50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2xpZ2h0L3RzbDI1NjMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5MWU4MDkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2xpZ2h0L3RzbDI1NjMudHh0CkBAIC0wLDAgKzEsMTkgQEAKKyogQU1TIFRBT1MgVFNMMjU2MyBhbWJpZW50IGxpZ2h0IHNlbnNvcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiYW1zdGFvcyx0c2wyNTYzIgorICAtIHJlZyA6IHRoZSBJMkMgYWRkcmVzcyBvZiB0aGUgc2Vuc29yCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKyAgLSBhbXN0YW9zLGNvdmVyLWNvbXAtZ2FpbiA6IGludGVnZXIgdXNlZCBhcyBtdWx0aXBsaWVyIGZvciBnYWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wZW5zYXRpb24gKGRlZmF1bHQgPSAxKQorCitFeGFtcGxlOgorCit0c2wyNTYzQDI5IHsKKwljb21wYXRpYmxlID0gImFtc3Rhb3MsdHNsMjU2MyI7CisJcmVnID0gPDB4Mjk+OworCWFtc3Rhb3MsY292ZXItY29tcC1nYWluID0gPDE2PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2xpZ2h0L3VzNTE4MmQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9saWdodC91czUxODJkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjBhNTMwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9saWdodC91czUxODJkLnR4dApAQCAtMCwwICsxLDM0IEBACisqIFVQSVNFTUkgdXM1MTgyZCBJMkMgQUxTIGFuZCBQcm94aW1pdHkgc2Vuc29yCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IG11c3QgYmUgInVwaXNlbWksdXNkNTE4MiIKKy0gcmVnOiB0aGUgSTJDIGFkZHJlc3Mgb2YgdGhlIGRldmljZQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSB1cGlzZW1pLGdsYXNzLWNvZWY6IGdsYXNzIGF0dGVudWF0aW9uIGZhY3RvciAtIGNvbXBlbnNhdGlvbiBmYWN0b3Igb2YKKyAgICAgICAgICAgICAgICAgICAgICByZXNvbHV0aW9uIDEwMDAgZm9yIG1hdGVyaWFsIHRyYW5zbWl0dGFuY2UuCistIHVwaXNlbWksZGFyay10aHM6IGFycmF5IG9mIDggZWxlbWVudHMgY29udGFpbmluZyAxNi1iaXQgdGhyZXNob2xkcyAoYWRjCisgICAgICAgICAgICAgICAgICAgIGNvdW50cykgY29ycmVzcG9uZGluZyB0byBldmVyeSBzY2FsZS4KKy0gdXBpc2VtaSx1cHBlci1kYXJrLWdhaW46IDgtYml0IGRhcmsgZ2FpbiBjb21wZW5zYXRpb24gZmFjdG9yKDQgaW50IGFuZCA0CisgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbmFsIGJpdHMgLSBRNC40KSBhcHBsaWVkIHdoZW4gbGlnaHQgPiB0aHJlc2hvbGQKKy0gdXBpc2VtaSxsb3dlci1kYXJrLWdhaW46IDgtYml0IGRhcmsgZ2FpbiBjb21wZW5zYXRpb24gZmFjdG9yKDQgaW50IGFuZCA0CisgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbmFsIGJpdHMgLSBRNC40KSBhcHBsaWVkIHdoZW4gbGlnaHQgPCB0aHJlc2hvbGQKKworSWYgdGhlIG9wdGlvbmFsIHByb3BlcnRpZXMgYXJlIG5vdCBzcGVjaWZpZWQgdGhlc2UgZmFjdG9ycyB3aWxsIGRlZmF1bHQgdG8gdGhlCit2YWx1ZXMgaW4gdGhlIGJlbG93IGV4YW1wbGUuCitUaGUgZ2xhc3MtY29lZiBkZWZhdWx0cyB0byBubyBjb21wZW5zYXRpb24gZm9yIHRoZSBjb3ZlcmluZyBtYXRlcmlhbC4KK1RoZSB0aHJlc2hvbGQgYXJyYXkgZGVmYXVsdHMgdG8gZXhwZXJpbWVudGFsIHZhbHVlcyB0aGF0IHdvcmsgd2l0aCBVUzUxODJECitzZW5zb3Igb24gZXZhbHVhdGlvbiBib2FyZCAtIHJvdWdobHkgYmV0d2VlbiAxMi0zMiBsdXguCitUaGVyZSB3aWxsIGJlIG5vIGRhcmstZ2FpbiBjb21wZW5zYXRpb24gYnkgZGVmYXVsdCB3aGVuIEFMUyA+IHRocmVzaAorKDAgKiBkYXJrLWdhaW4pLCBhbmQgYSAxLjM1IGNvbXBlbnNhdGlvbiBmYWN0b3Igd2hlbiBBTFMgPCB0aHJlc2guCisKK0V4YW1wbGU6CisKKyAgICB1c2Q1MTgyQDM5IHsKKyAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gInVwaXNlbWksdXNkNTE4MiI7CisgICAgICAgICAgICAgICAgcmVnID0gPDB4Mzk+OworICAgICAgICAgICAgICAgIHVwaXNlbWksZ2xhc3MtY29lZiA9IDwgMTAwMCA+OworICAgICAgICAgICAgICAgIHVwaXNlbWksZGFyay10aHMgPSAvYml0cy8gMTYgPDE3MCAyMDAgNTEyIDUxMiA4MDAgMjAwMCA0MDAwIDgwMDA+OworICAgICAgICAgICAgICAgIHVwaXNlbWksdXBwZXItZGFyay1nYWluID0gL2JpdHMvIDggPDB4MDA+OworICAgICAgICAgICAgICAgIHVwaXNlbWksbG93ZXItZGFyay1nYWluID0gL2JpdHMvIDggPDB4MTY+OworICAgIH07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL21hZ25ldG9tZXRlci9hazg5NzUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9tYWduZXRvbWV0ZXIvYWs4OTc1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTE2NzlmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9tYWduZXRvbWV0ZXIvYWs4OTc1LnR4dApAQCAtMCwwICsxLDE4IEBACisqIEFzYWhpS0FTRUkgQUs4OTc1IG1hZ25ldG9tZXRlciBzZW5zb3IKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImFzYWhpLWthc2VpLGFrODk3NSIKKyAgLSByZWcgOiB0aGUgSTJDIGFkZHJlc3Mgb2YgdGhlIG1hZ25ldG9tZXRlcgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCisgIC0gZ3Bpb3MgOiBzaG91bGQgYmUgZGV2aWNlIHRyZWUgaWRlbnRpZmllciBvZiB0aGUgbWFnbmV0b21ldGVyIERSRFkgcGluCisKK0V4YW1wbGU6CisKK2FrODk3NUAwYyB7CisgICAgICAgIGNvbXBhdGlibGUgPSAiYXNhaGkta2FzZWksYWs4OTc1IjsKKyAgICAgICAgcmVnID0gPDB4MGM+OworICAgICAgICBncGlvcyA9IDwmZ3BqMCA3IDA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vbWFnbmV0b21ldGVyL2JtYzE1MF9tYWduLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vbWFnbmV0b21ldGVyL2JtYzE1MF9tYWduLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjI2M2I3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9tYWduZXRvbWV0ZXIvYm1jMTUwX21hZ24udHh0CkBAIC0wLDAgKzEsMjIgQEAKKyogQm9zY2ggQk1DMTUwIG1hZ25ldG9tZXRlciBzZW5zb3IKKworaHR0cDovL2FlLWJzdC5yZXNvdXJjZS5ib3NjaC5jb20vbWVkaWEvcHJvZHVjdHMvZG9rdW1lbnRlL2JtYzE1MC9CU1QtQk1DMTUwLURTMDAwLTA0LnBkZgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiYm9zY2gsYm1jMTUwX21hZ24iCisgIC0gcmVnIDogdGhlIEkyQyBhZGRyZXNzIG9mIHRoZSBtYWduZXRvbWV0ZXIKKworT3B0aW9uYWwgcHJvcGVydGllczoKKworICAtIGludGVycnVwdC1wYXJlbnQgOiBwaGFuZGxlIHRvIHRoZSBwYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIKKyAgLSBpbnRlcnJ1cHRzIDogaW50ZXJydXB0IG1hcHBpbmcgZm9yIEdQSU8gSVJRCisKK0V4YW1wbGU6CisKK2JtYzE1MF9tYWduQDEyIHsKKyAgICAgICAgY29tcGF0aWJsZSA9ICJib3NjaCxibWMxNTBfbWFnbiI7CisgICAgICAgIHJlZyA9IDwweDEyPjsKKyAgICAgICAgaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzE+OworICAgICAgICBpbnRlcnJ1cHRzID0gPDAgMT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9tYWduZXRvbWV0ZXIvaG1jNTg0My50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL21hZ25ldG9tZXRlci9obWM1ODQzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTE5MWVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9tYWduZXRvbWV0ZXIvaG1jNTg0My50eHQKQEAgLTAsMCArMSwyMSBAQAorKiBIb25leXdlbGwgSE1DNTg0MyBtYWduZXRvbWV0ZXIgc2Vuc29yCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJob25leXdlbGwsaG1jNTg0MyIKKyAgT3RoZXIgbW9kZWxzIHdoaWNoIGFyZSBzdXBwb3J0ZWQgd2l0aCBkcml2ZXIgYXJlOgorCSJob25leXdlbGwsaG1jNTg4MyIKKwkiaG9uZXl3ZWxsLGhtYzU4ODNsIgorCSJob25leXdlbGwsaG1jNTk4MyIKKyAgLSByZWcgOiB0aGUgSTJDIGFkZHJlc3Mgb2YgdGhlIG1hZ25ldG9tZXRlciAtIHR5cGljYWxseSAweDFlCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKyAgLSBncGlvcyA6IHNob3VsZCBiZSBkZXZpY2UgdHJlZSBpZGVudGlmaWVyIG9mIHRoZSBtYWduZXRvbWV0ZXIgRFJEWSBwaW4KKworRXhhbXBsZToKKworaG1jNTg0M0AxZSB7CisgICAgICAgIGNvbXBhdGlibGUgPSAiaG9uZXl3ZWxsLGhtYzU4NDMiCisgICAgICAgIHJlZyA9IDwweDFlPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL21hZ25ldG9tZXRlci9tbWMzNTI0MC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL21hZ25ldG9tZXRlci9tbWMzNTI0MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTAxMjM1YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vbWFnbmV0b21ldGVyL21tYzM1MjQwLnR4dApAQCAtMCwwICsxLDEzIEBACisqIE1FTVNJQyBNTUMzNTI0MCBtYWduZXRvbWV0ZXIgc2Vuc29yCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJtZW1zaWMsbW1jMzUyNDAiCisgIC0gcmVnIDogdGhlIEkyQyBhZGRyZXNzIG9mIHRoZSBtYWduZXRvbWV0ZXIKKworRXhhbXBsZToKKworbW1jMzUyNDBAMzAgeworICAgICAgICBjb21wYXRpYmxlID0gIm1lbXNpYyxtbWMzNTI0MCI7CisgICAgICAgIHJlZyA9IDwweDMwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL3ByZXNzdXJlL2JtcDA4NS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL3ByZXNzdXJlL2JtcDA4NS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdhNmRlYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vcHJlc3N1cmUvYm1wMDg1LnR4dApAQCAtMCwwICsxLDI0IEBACitCTVAwODUvQk1QMTh4IGRpZ2l0YWwgcHJlc3N1cmUgc2Vuc29ycworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBib3NjaCxibXAwODUKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gY2hpcC1pZDogY29uZmlndXJhYmxlIGNoaXAgaWQgZm9yIG5vbi1kZWZhdWx0IGNoaXAgcmV2aXNpb25zCistIHRlbXAtbWVhc3VyZW1lbnQtcGVyaW9kOiB0ZW1wZXJhdHVyZSBtZWFzdXJlbWVudCBwZXJpb2QgKG1pbGxpc2Vjb25kcykKKy0gZGVmYXVsdC1vdmVyc2FtcGxpbmc6IGRlZmF1bHQgb3ZlcnNhbXBsaW5nIHZhbHVlIHRvIGJlIHVzZWQgYXQgc3RhcnR1cCwKKyAgdmFsdWUgcmFuZ2UgaXMgMC0zIHdpdGggcmlzaW5nIHNlbnNpdGl2aXR5LgorLSBpbnRlcnJ1cHQtcGFyZW50OiBzaG91bGQgYmUgdGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgbWFwcGluZyBmb3IgSVJRCisKK0V4YW1wbGU6CisKK3ByZXNzdXJlQDc3IHsKKwljb21wYXRpYmxlID0gImJvc2NoLGJtcDA4NSI7CisJcmVnID0gPDB4Nzc+OworCWNoaXAtaWQgPSA8MTA+OworCXRlbXAtbWVhc3VyZW1lbnQtcGVyaW9kID0gPDEwMD47CisJZGVmYXVsdC1vdmVyc2FtcGxpbmcgPSA8Mj47CisJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzA+OworCWludGVycnVwdHMgPSA8MjUgSVJRX1RZUEVfRURHRV9SSVNJTkc+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vcHJveGltaXR5L2FzMzkzNS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL3Byb3hpbWl0eS9hczM5MzUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMjNkZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL3Byb3hpbWl0eS9hczM5MzUudHh0CkBAIC0wLDAgKzEsMjggQEAKK0F1c3RyaWFuIE1pY3Jvc3lzdGVtcyBBUzM5MzUgRnJhbmtsaW4gbGlnaHRuaW5nIHNlbnNvciBkZXZpY2UgZHJpdmVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisJLSBjb21wYXRpYmxlOiBtdXN0IGJlICJhbXMsYXMzOTM1IgorCS0gcmVnOiBTUEkgY2hpcCBzZWxlY3QgbnVtYmVyIGZvciB0aGUgZGV2aWNlCisJLSBzcGktY3BoYTogU1BJIE1vZGUgMS4gUmVmZXIgdG8gc3BpL3NwaS1idXMudHh0IGZvciBnZW5lcmljIFNQSQorCXNsYXZlIG5vZGUgYmluZGluZ3MuCisJLSBpbnRlcnJ1cHQtcGFyZW50IDogc2hvdWxkIGJlIHRoZSBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIKKwktIGludGVycnVwdHMgOiB0aGUgc29sZSBpbnRlcnJ1cHQgZ2VuZXJhdGVkIGJ5IHRoZSBkZXZpY2UKKworCVJlZmVyIHRvIGludGVycnVwdC1jb250cm9sbGVyL2ludGVycnVwdHMudHh0IGZvciBnZW5lcmljCisJaW50ZXJydXB0IGNsaWVudCBub2RlIGJpbmRpbmdzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCS0gYW1zLHR1bmluZy1jYXBhY2l0b3ItcGY6IENhbGlicmF0aW9uIHR1bmluZyBjYXBhY2l0b3Igc3RlcHBpbmcKKwkgIHZhbHVlIDAgLSAxMjBwRi4gVGhpcyB3aWxsIHJlcXVpcmUgdXNpbmcgdGhlIGNhbGlicmF0aW9uIGRhdGEgZnJvbQorCSAgdGhlIG1hbnVmYWN0dXJlci4KKworRXhhbXBsZToKKworYXMzOTM1QDAgeworCWNvbXBhdGlibGUgPSAiYW1zLGFzMzkzNSI7CisJcmVnID0gPDA+OworCXNwaS1jcGhhOworCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8xPjsKKwlpbnRlcnJ1cHRzID0gPDE2IDE+OworCWFtcyx0dW5pbmctY2FwYWNpdG9yLXBmID0gPDgwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL3NlbnNvcmh1Yi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL3NlbnNvcmh1Yi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ1NzU3MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vc2Vuc29yaHViLnR4dApAQCAtMCwwICsxLDI1IEBACitTYW1zdW5nIFNlbnNvcmh1YiBkcml2ZXIKKworU2Vuc29yaHViIGlzIGEgTUNVIHdoaWNoIG1hbmFnZXMgc2V2ZXJhbCBzZW5zb3JzIGFuZCBhbHNvIHBsYXlzIHRoZSByb2xlCitvZiBhIHZpcnR1YWwgc2Vuc29yIGRldmljZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInNhbXN1bmcsc2Vuc29yaHViLXJpbmF0byIgb3IgInNhbXN1bmcsc2Vuc29yaHViLXRoZXJtb3N0YXQiCistIHNwaS1tYXgtZnJlcXVlbmN5OiBtYXggU1BJIGNsb2NrIGZyZXF1ZW5jeQorLSBpbnRlcnJ1cHQtcGFyZW50OiBpbnRlcnJ1cHQgcGFyZW50CistIGludGVycnVwdHM6IGNvbW11bmljYXRpb24gaW50ZXJydXB0CistIGFwLW1jdS1ncGlvczogW291dF0gYXAgdG8gc2Vuc29yaHViIGxpbmUgLSB1c2VkIGR1cmluZyBjb21tdW5pY2F0aW9uCistIG1jdS1hcC1ncGlvczogW2luXSBzZW5zb3JodWIgdG8gYXAgLSB1c2VkIGR1cmluZyBjb21tdW5pY2F0aW9uCistIG1jdS1yZXNldC1ncGlvczogW291dF0gc2Vuc29yaHViIHJlc2V0CisKK0V4YW1wbGU6CisKKwlzaHViX3NwaTogc2h1YiB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxzZW5zb3JodWItcmluYXRvIjsKKwkJc3BpLW1heC1mcmVxdWVuY3kgPSA8NTAwMDAwMD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdweDA+OworCQlpbnRlcnJ1cHRzID0gPDIgMD47CisJCWFwLW1jdS1ncGlvcyA9IDwmZ3B4MCAwIDA+OworCQltY3UtYXAtZ3Bpb3MgPSA8JmdweDAgNCAwPjsKKwkJbWN1LXJlc2V0LWdwaW9zID0gPCZncHgwIDUgMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vc3Qtc2Vuc29ycy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL3N0LXNlbnNvcnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzY2NkYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL3N0LXNlbnNvcnMudHh0CkBAIC0wLDAgKzEsNTkgQEAKK1NUTWljcm9lbGVjdHJvbmljcyBNRU1TIHNlbnNvcnMKKworVGhlIFNUTWljcm9lbGVjdHJvbmljcyBzZW5zb3IgZGV2aWNlcyBhcmUgcHJldHR5IHN0cmFpZ2h0LWZvcndhcmQgSTJDIG9yCitTUEkgZGV2aWNlcywgYWxsIHNoYXJpbmcgdGhlIHNhbWUgZGV2aWNlIHRyZWUgZGVzY3JpcHRpb25zIG5vIG1hdHRlciB3aGF0Cit0eXBlIG9mIHNlbnNvciBpdCBpcy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2VlIHRoZSBsaXN0IG9mIHZhbGlkIGNvbXBhdGlibGUgc3RyaW5ncyBiZWxvdworLSByZWc6IHRoZSBJMkMgb3IgU1BJIGFkZHJlc3MgdGhlIGRldmljZSB3aWxsIHJlc3BvbmQgdG8KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdmRkLXN1cHBseTogYW4gb3B0aW9uYWwgcmVndWxhdG9yIHRoYXQgbmVlZHMgdG8gYmUgb24gdG8gcHJvdmlkZSBWREQKKyAgcG93ZXIgdG8gdGhlIHNlbnNvci4KKy0gdmRkaW8tc3VwcGx5OiBhbiBvcHRpb25hbCByZWd1bGF0b3IgdGhhdCBuZWVkcyB0byBiZSBvbiB0byBwcm92aWRlIHRoZQorICBWREQgSU8gcG93ZXIgdG8gdGhlIHNlbnNvci4KKy0gc3QsZHJkeS1pbnQtcGluOiB0aGUgcGluIG9uIHRoZSBwYWNrYWdlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHNpZ25hbAorICAiZGF0YSByZWFkeSIgKHZhbGlkIHZhbHVlczogMSBvciAyKS4gVGhpcyBwcm9wZXJ0eSBpcyBub3QgY29uZmlndXJhYmxlCisgIG9uIGFsbCBzZW5zb3JzLgorCitTZW5zb3JzIG1heSBhbHNvIGhhdmUgYXBwbGljYWJsZSBwaW4gY29udHJvbCBzZXR0aW5ncywgdGhvc2UgdXNlIHRoZQorc3RhbmRhcmQgYmluZGluZ3MgZnJvbSBwaW5jdHJsL3BpbmN0cmwtYmluZGluZ3MudHh0LgorCitWYWxpZCBjb21wYXRpYmxlIHN0cmluZ3M6CisKK0FjY2VsZXJvbWV0ZXJzOgorLSBzdCxsaXMzbHYwMmRsLWFjY2VsCistIHN0LGxzbTMwM2RsaC1hY2NlbAorLSBzdCxsc20zMDNkbGhjLWFjY2VsCistIHN0LGxpczNkaC1hY2NlbAorLSBzdCxsc20zMzBkLWFjY2VsCistIHN0LGxzbTMzMGRsLWFjY2VsCistIHN0LGxzbTMzMGRsYy1hY2NlbAorLSBzdCxsaXMzMzFkbC1hY2NlbAorLSBzdCxsaXMzMzFkbGgtYWNjZWwKKy0gc3QsbHNtMzAzZGwtYWNjZWwKKy0gc3QsbHNtMzAzZGxtLWFjY2VsCistIHN0LGxzbTMzMC1hY2NlbAorLSBzdCxsc20zMDNhZ3ItYWNjZWwKKworR3lyb3Njb3BlczoKKy0gc3QsbDNnNDIwMGQtZ3lybworLSBzdCxsc20zMzBkLWd5cm8KKy0gc3QsbHNtMzMwZGwtZ3lybworLSBzdCxsc20zMzBkbGMtZ3lybworLSBzdCxsM2dkMjAtZ3lybworLSBzdCxsM2c0aXMtZ3lybworLSBzdCxsc20zMzAtZ3lybworCitNYWduZXRvbWV0ZXJzOgorLSBzdCxsc20zMDNhZ3ItbWFnbgorLSBzdCxsc20zMDNkbGgtbWFnbgorLSBzdCxsc20zMDNkbGhjLW1hZ24KKy0gc3QsbHNtMzAzZGxtLW1hZ24KKy0gc3QsbGlzM21kbC1tYWduCisKK1ByZXNzdXJlIHNlbnNvcnM6CistIHN0LGxwczAwMXdwLXByZXNzCistIHN0LGxwczI1aC1wcmVzcworLSBzdCxscHMzMzFhcC1wcmVzcwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby90ZW1wZXJhdHVyZS9tbHg5MDYxNC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL3RlbXBlcmF0dXJlL21seDkwNjE0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmU1N2IwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby90ZW1wZXJhdHVyZS9tbHg5MDYxNC50eHQKQEAgLTAsMCArMSwyNCBAQAorKiBNZWxleGlzIE1MWDkwNjE0IGNvbnRhY3RsZXNzIElSIHRlbXBlcmF0dXJlIHNlbnNvcgorCitodHRwOi8vbWVsZXhpcy5jb20vSW5mcmFyZWQtVGhlcm1vbWV0ZXItU2Vuc29ycy9JbmZyYXJlZC1UaGVybW9tZXRlci1TZW5zb3JzL01MWDkwNjE0LTYxNS5hc3B4CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgIm1lbGV4aXMsbWx4OTA2MTQiCisgIC0gcmVnOiB0aGUgSTJDIGFkZHJlc3Mgb2YgdGhlIHNlbnNvcgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCisgIC0gd2FrZXVwLWdwaW9zOiBkZXZpY2UgdHJlZSBpZGVudGlmaWVyIG9mIHRoZSBHUElPIGNvbm5lY3RlZCB0byB0aGUgU0RBIGxpbmUKKyAgICAgIHRvIGhvbGQgbG93IGluIG9yZGVyIHRvIHdha2UgdXAgdGhlIGRldmljZS4gIEluIG5vcm1hbCBvcGVyYXRpb24sIHRoZQorICAgICAgR1BJTyBpcyBzZXQgYXMgaW5wdXQgYW5kIHdpbGwgbm90IGludGVyZmVyZSBpbiBJMkMgY29tbXVuaWNhdGlvbi4gIFRoZXJlCisgICAgICBpcyBubyBuZWVkIGZvciBhIEdQSU8gZHJpdmluZyB0aGUgU0NMIGxpbmUuICBJZiBubyBHUElPIGlzIGdpdmVuLCBwb3dlcgorICAgICAgbWFuYWdlbWVudCBpcyBkaXNhYmxlZC4KKworRXhhbXBsZToKKworbWx4OTA2MTRANWEgeworCWNvbXBhdGlibGUgPSAibWVsZXhpcyxtbHg5MDYxNCI7CisJcmVnID0gPDB4NWE+OworCXdha2V1cC1ncGlvcyA9IDwmZ3BpbzAgMiBHUElPX0FDVElWRV9ISUdIPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvYWRzNzg0Ni50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvYWRzNzg0Ni50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNhMTYzOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9hZHM3ODQ2LnR4dApAQCAtMCwwICsxLDkyIEBACitEZXZpY2UgdHJlZSBiaW5kaW5ncyBmb3IgVEkncyBBRFM3ODQzLCBBRFM3ODQ1LCBBRFM3ODQ2LCBBRFM3ODczLCBUU0MyMDQ2CitTUEkgZHJpdmVuIHRvdWNoIHNjcmVlbiBjb250cm9sbGVycy4KKworVGhlIG5vZGUgZm9yIHRoaXMgZHJpdmVyIG11c3QgYmUgYSBjaGlsZCBub2RlIG9mIGEgU1BJIGNvbnRyb2xsZXIsIGhlbmNlCithbGwgbWFuZGF0b3J5IHByb3BlcnRpZXMgZGVzY3JpYmVkIGluCisKKwlEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1idXMudHh0CisKK211c3QgYmUgc3BlY2lmaWVkLgorCitBZGRpdGlvbmFsIHJlcXVpcmVkIHByb3BlcnRpZXM6CisKKwljb21wYXRpYmxlCQlNdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nLCBkZXBlbmRpbmcgb24gdGhlCisJCQkJbW9kZWw6CisJCQkJCSJ0aSx0c2MyMDQ2IgorCQkJCQkidGksYWRzNzg0MyIKKwkJCQkJInRpLGFkczc4NDUiCisJCQkJCSJ0aSxhZHM3ODQ2IgorCQkJCQkidGksYWRzNzg3MyIKKworCWludGVycnVwdC1wYXJlbnQKKwlpbnRlcnJ1cHRzCQlBbiBpbnRlcnJ1cHQgbm9kZSBkZXNjcmliaW5nIHRoZSBJUlEgbGluZSB0aGUgY2hpcCdzCisJCQkJIVBFTklSUSBwaW4gaXMgY29ubmVjdGVkIHRvLgorCXZjYy1zdXBwbHkJCUEgcmVndWxhdG9yIG5vZGUgZm9yIHRoZSBzdXBwbHkgdm9sdGFnZS4KKworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCisJdGksdnJlZi1kZWxheS11c2VjcwkJdnJlZiBzdXBwbHkgZGVsYXkgaW4gdXNlY3MsIDAgZm9yCisJCQkJCWV4dGVybmFsIHZyZWYgKHUxNikuCisJdGksdnJlZi1tdgkJCVRoZSBWUkVGIHZvbHRhZ2UsIGluIG1pbGxpdm9sdHMgKHUxNikuCisJdGksa2VlcC12cmVmLW9uCQkJc2V0IHRvIGtlZXAgdnJlZiBvbiBmb3IgZGlmZmVyZW50aWFsCisJCQkJCW1lYXN1cmVtZW50cyBhcyB3ZWxsCisJdGksc3dhcC14eQkJCXN3YXAgeCBhbmQgeSBheGlzCisJdGksc2V0dGxlLWRlbGF5LXVzZWMJCVNldHRsaW5nIHRpbWUgb2YgdGhlIGFuYWxvZyBzaWduYWxzOworCQkJCQlhIGZ1bmN0aW9uIG9mIFZjYyBhbmQgdGhlIGNhcGFjaXRhbmNlCisJCQkJCW9uIHRoZSBYL1kgZHJpdmVycy4gIElmIHNldCB0byBub24temVybywKKwkJCQkJdHdvIHNhbXBsZXMgYXJlIHRha2VuIHdpdGggc2V0dGxlX2RlbGF5CisJCQkJCXVzIGFwYXJ0LCBhbmQgdGhlIHNlY29uZCBvbmUgaXMgdXNlZC4KKwkJCQkJfjE1MCB1U2VjIHdpdGggMC4wMXVGIGNhcHMgKHUxNikuCisJdGkscGVuaXJxLXJlY2hlY2stZGVsYXktdXNlY3MJSWYgc2V0IHRvIG5vbi16ZXJvLCBhZnRlciBzYW1wbGVzIGFyZQorCQkJCQl0YWtlbiB0aGlzIGRlbGF5IGlzIGFwcGxpZWQgYW5kIHBlbmlycQorCQkJCQlpcyByZWNoZWNrZWQsIHRvIGhlbHAgYXZvaWQgZmFsc2UKKwkJCQkJZXZlbnRzLiAgVGhpcyB2YWx1ZSBpcyBhZmZlY3RlZCBieSB0aGUKKwkJCQkJbWF0ZXJpYWwgdXNlZCB0byBidWlsZCB0aGUgdG91Y2ggbGF5ZXIKKwkJCQkJKHUxNikuCisJdGkseC1wbGF0ZS1vaG1zCQkJUmVzaXN0YW5jZSBvZiB0aGUgWC1wbGF0ZSwKKwkJCQkJaW4gT2htcyAodTE2KS4KKwl0aSx5LXBsYXRlLW9obXMJCQlSZXNpc3RhbmNlIG9mIHRoZSBZLXBsYXRlLAorCQkJCQlpbiBPaG1zICh1MTYpLgorCXRpLHgtbWluCQkJTWluaW11bSB2YWx1ZSBvbiB0aGUgWCBheGlzICh1MTYpLgorCXRpLHktbWluCQkJTWluaW11bSB2YWx1ZSBvbiB0aGUgWSBheGlzICh1MTYpLgorCXRpLHgtbWF4CQkJTWF4aW11bSB2YWx1ZSBvbiB0aGUgWCBheGlzICh1MTYpLgorCXRpLHktbWF4CQkJTWluaW11bSB2YWx1ZSBvbiB0aGUgWSBheGlzICh1MTYpLgorCXRpLHByZXNzdXJlLW1pbgkJCU1pbmltdW0gcmVwb3J0ZWQgcHJlc3N1cmUgdmFsdWUKKwkJCQkJKHRocmVzaG9sZCkgLSB1MTYuCisJdGkscHJlc3N1cmUtbWF4CQkJTWF4aW11bSByZXBvcnRlZCBwcmVzc3VyZSB2YWx1ZSAodTE2KS4KKwl0aSxkZWJvdW5jZS1tYXgJCQlNYXggbnVtYmVyIG9mIGFkZGl0aW9uYWwgcmVhZGluZ3MgcGVyCisJCQkJCXNhbXBsZSAodTE2KS4KKwl0aSxkZWJvdW5jZS10b2wJCQlUb2xlcmFuY2UgdXNlZCBmb3IgZmlsdGVyaW5nICh1MTYpLgorCXRpLGRlYm91bmNlLXJlcAkJCUFkZGl0aW9uYWwgY29uc2VjdXRpdmUgZ29vZCByZWFkaW5ncworCQkJCQlyZXF1aXJlZCBhZnRlciB0aGUgZmlyc3QgdHdvICh1MTYpLgorCXRpLHBlbmRvd24tZ3Bpby1kZWJvdW5jZQlQbGF0Zm9ybSBzcGVjaWZpYyBkZWJvdW5jZSB0aW1lIGZvciB0aGUKKwkJCQkJcGVuZG93bi1ncGlvICh1MzIpLgorCXBlbmRvd24tZ3BpbwkJCUdQSU8gaGFuZGxlIGRlc2NyaWJpbmcgdGhlIHBpbiB0aGUgIVBFTklSUQorCQkJCQlsaW5lIGlzIGNvbm5lY3RlZCB0by4KKwl3YWtldXAtc291cmNlCQkJdXNlIGFueSBldmVudCBvbiB0b3VjaHNjcmVlbiBhcyB3YWtldXAgZXZlbnQuCisJCQkJCShMZWdhY3kgcHJvcGVydHkgc3VwcG9ydDogImxpbnV4LHdha2V1cCIpCisKKworRXhhbXBsZSBmb3IgYSBUU0MyMDQ2IGNoaXAgY29ubmVjdGVkIHRvIGFuIE1jU1BJIGNvbnRyb2xsZXIgb2YgYW4gT01BUCBTb0M6OgorCisJc3BpX2NvbnRyb2xsZXIgeworCQl0c2MyMDQ2QDAgeworCQkJcmVnID0gPDA+OwkvKiBDUzAgKi8KKwkJCWNvbXBhdGlibGUgPSAidGksdHNjMjA0NiI7CisJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvMT47CisJCQlpbnRlcnJ1cHRzID0gPDggMD47CS8qIEJPT1Q2IC8gR1BJTyA4ICovCisJCQlzcGktbWF4LWZyZXF1ZW5jeSA9IDwxMDAwMDAwPjsKKwkJCXBlbmRvd24tZ3BpbyA9IDwmZ3BpbzEgOCAwPjsKKwkJCXZjYy1zdXBwbHkgPSA8JnJlZ192Y2MzPjsKKworCQkJdGkseC1taW4gPSAvYml0cy8gMTYgPDA+OworCQkJdGkseC1tYXggPSAvYml0cy8gMTYgPDgwMDA+OworCQkJdGkseS1taW4gPSAvYml0cy8gMTYgPDA+OworCQkJdGkseS1tYXggPSAvYml0cy8gMTYgPDQ4MDA+OworCQkJdGkseC1wbGF0ZS1vaG1zID0gL2JpdHMvIDE2IDw0MD47CisJCQl0aSxwcmVzc3VyZS1tYXggPSAvYml0cy8gMTYgPDI1NT47CisKKwkJCXdha2V1cC1zb3VyY2U7CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9hdG1lbCxtYXh0b3VjaC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvYXRtZWwsbWF4dG91Y2gudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4NTI5MDYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvYXRtZWwsbWF4dG91Y2gudHh0CkBAIC0wLDAgKzEsMzIgQEAKK0F0bWVsIG1hWFRvdWNoIHRvdWNoc2NyZWVuL3RvdWNocGFkCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CisgICAgYXRtZWwsbWF4dG91Y2gKKworLSByZWc6IFRoZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlCisKKy0gaW50ZXJydXB0czogVGhlIHNpbmsgZm9yIHRoZSB0b3VjaHBhZCdzIElSUSBvdXRwdXQKKyAgICBTZWUgLi4vaW50ZXJydXB0LWNvbnRyb2xsZXIvaW50ZXJydXB0cy50eHQKKworT3B0aW9uYWwgcHJvcGVydGllcyBmb3IgbWFpbiB0b3VjaHBhZCBkZXZpY2U6CisKKy0gbGludXgsZ3Bpby1rZXltYXA6IFdoZW4gZW5hYmxlZCwgdGhlIFNQVF9HUElPUFdOX1QxOSBvYmplY3Qgc2VuZHMgbWVzc2FnZXMKKyAgICBvbiBHUElPIGJpdCBjaGFuZ2VzLiBBbiBhcnJheSBvZiB1cCB0byA4IGVudHJpZXMgY2FuIGJlIHByb3ZpZGVkCisgICAgaW5kaWNhdGluZyB0aGUgTGludXgga2V5Y29kZSBtYXBwZWQgdG8gZWFjaCBiaXQgb2YgdGhlIHN0YXR1cyBieXRlLAorICAgIHN0YXJ0aW5nIGF0IHRoZSBMU0IuIExpbnV4IGtleWNvZGVzIGFyZSBkZWZpbmVkIGluCisgICAgPGR0LWJpbmRpbmdzL2lucHV0L2lucHV0Lmg+LgorCisgICAgTm90ZTogdGhlIG51bWJlcmluZyBvZiB0aGUgR1BJT3MgYW5kIHRoZSBiaXQgdGhleSBzdGFydCBhdCB2YXJpZXMgYmV0d2VlbgorICAgIG1hWFRvdWNoIGRldmljZXMuIFlvdSBtdXN0IGVpdGhlciByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiwgb3IKKyAgICBleHBlcmltZW50IHRvIGRldGVybWluZSB3aGljaCBiaXQgY29ycmVzcG9uZHMgdG8gd2hpY2ggaW5wdXQuIFVzZQorICAgIEtFWV9SRVNFUlZFRCBmb3IgdW51c2VkIHBhZGRpbmcgdmFsdWVzLgorCitFeGFtcGxlOgorCisJdG91Y2hANGIgeworCQljb21wYXRpYmxlID0gImF0bWVsLG1heHRvdWNoIjsKKwkJcmVnID0gPDB4NGI+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvPjsKKwkJaW50ZXJydXB0cyA9IDxURUdSQV9HUElPKFcsIDMpIElSUV9UWVBFX0xFVkVMX0xPVz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9icmNtLGJjbS1rZXlwYWQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L2JyY20sYmNtLWtleXBhZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc3ZjUwYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9icmNtLGJjbS1rZXlwYWQudHh0CkBAIC0wLDAgKzEsMTA4IEBACisqIEJyb2FkY29tIEtleXBhZCBDb250cm9sbGVyIGRldmljZSB0cmVlIGJpbmRpbmdzCisKK0Jyb2FkY29tIEtleXBhZCBjb250cm9sbGVyIGlzIHVzZWQgdG8gaW50ZXJmYWNlIGEgU29DIHdpdGggYSBtYXRyaXgtdHlwZQora2V5cGFkIGRldmljZS4gVGhlIGtleXBhZCBjb250cm9sbGVyIHN1cHBvcnRzIG11bHRpcGxlIHJvdyBhbmQgY29sdW1uIGxpbmVzLgorQSBrZXkgY2FuIGJlIHBsYWNlZCBhdCBlYWNoIGludGVyc2VjdGlvbiBvZiBhIHVuaXF1ZSByb3cgYW5kIGEgdW5pcXVlIGNvbHVtbi4KK1RoZSBrZXlwYWQgY29udHJvbGxlciBjYW4gc2Vuc2UgYSBrZXktcHJlc3MgYW5kIGtleS1yZWxlYXNlIGFuZCByZXBvcnQgdGhlCitldmVudCB1c2luZyBhIGludGVycnVwdCB0byB0aGUgY3B1LgorCitUaGlzIGJpbmRpbmcgaXMgYmFzZWQgb24gdGhlIG1hdHJpeC1rZXltYXAgYmluZGluZyB3aXRoIHRoZSBmb2xsb3dpbmcKK2NoYW5nZXM6CisKK2tleXBhZCxudW0tcm93cyBhbmQga2V5cGFkLG51bS1jb2x1bW5zIGFyZSByZXF1aXJlZC4KKworUmVxdWlyZWQgU29DIFNwZWNpZmljIFByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiYnJjbSxiY20ta2V5cGFkIgorCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICByZWdpb24uCisKKy0gaW50ZXJydXB0czogVGhlIGludGVycnVwdCBudW1iZXIgdG8gdGhlIGNwdS4KKworQm9hcmQgU3BlY2lmaWMgUHJvcGVydGllczoKKy0ga2V5cGFkLG51bS1yb3dzOiBOdW1iZXIgb2Ygcm93IGxpbmVzIGNvbm5lY3RlZCB0byB0aGUga2V5cGFkCisgIGNvbnRyb2xsZXIuCisKKy0ga2V5cGFkLG51bS1jb2x1bW5zOiBOdW1iZXIgb2YgY29sdW1uIGxpbmVzIGNvbm5lY3RlZCB0byB0aGUKKyAga2V5cGFkIGNvbnRyb2xsZXIuCisKKy0gY29sLWRlYm91bmNlLWZpbHRlci1wZXJpb2Q6IFRoZSBkZWJvdW5jZSBwZXJpb2QgZm9yIHRoZSBDb2x1bW4gZmlsdGVyLgorCisJS0VZUEFEX0RFQk9VTkNFXzFfbXMJPQkwCisJS0VZUEFEX0RFQk9VTkNFXzJfbXMJPQkxCisJS0VZUEFEX0RFQk9VTkNFXzRfbXMJPQkyCisJS0VZUEFEX0RFQk9VTkNFXzhfbXMJPQkzCisJS0VZUEFEX0RFQk9VTkNFXzE2X21zCT0JNAorCUtFWVBBRF9ERUJPVU5DRV8zMl9tcwk9CTUKKwlLRVlQQURfREVCT1VOQ0VfNjRfbXMJPQk2CisJS0VZUEFEX0RFQk9VTkNFXzEyOF9tcwk9CTcKKworLSBzdGF0dXMtZGVib3VuY2UtZmlsdGVyLXBlcmlvZDogVGhlIGRlYm91bmNlIHBlcmlvZCBmb3IgdGhlIFN0YXR1cyBmaWx0ZXIuCisKKwlLRVlQQURfREVCT1VOQ0VfMV9tcwk9CTAKKwlLRVlQQURfREVCT1VOQ0VfMl9tcwk9CTEKKwlLRVlQQURfREVCT1VOQ0VfNF9tcwk9CTIKKwlLRVlQQURfREVCT1VOQ0VfOF9tcwk9CTMKKwlLRVlQQURfREVCT1VOQ0VfMTZfbXMJPQk0CisJS0VZUEFEX0RFQk9VTkNFXzMyX21zCT0JNQorCUtFWVBBRF9ERUJPVU5DRV82NF9tcwk9CTYKKwlLRVlQQURfREVCT1VOQ0VfMTI4X21zCT0JNworCistIHJvdy1vdXRwdXQtZW5hYmxlZDogQW4gb3B0aW9uYWwgcHJvcGVydHkgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSByb3cgb3IKKyAgY29sdW1uIGlzIGJlaW5nIHVzZWQgYXMgb3V0cHV0LiBJZiBzcGVjaWZpZWQgdGhlIHJvdyBpcyBiZWluZyB1c2VkCisgIGFzIHRoZSBvdXRwdXQuIEVsc2UgZGVmYXVsdHMgdG8gY29sdW1uLgorCistIHB1bGwtdXAtZW5hYmxlZDogQW4gb3B0aW9uYWwgcHJvcGVydHkgaW5kaWNhdGluZyB0aGUgS2V5cGFkIHNjYW4gbW9kZS4KKyAgSWYgc3BlY2lmaWVkIGltcGxpZXMgdGhlIGtleXBhZCBzY2FuIHB1bGwtdXAgaGFzIGJlZW4gZW5hYmxlZC4KKworLSBhdXRvcmVwZWF0OiBCb29sZWFuLCBFbmFibGUgYXV0byByZXBlYXQgZmVhdHVyZSBvZiBMaW51eCBpbnB1dAorCSAgc3Vic3lzdGVtIChvcHRpb25hbCkuCisKKy0gbGludXgsa2V5bWFwOiBUaGUga2V5bWFwIGZvciBrZXlzIGFzIGRlc2NyaWJlZCBpbiB0aGUgYmluZGluZyBkb2N1bWVudAorICBkZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L21hdHJpeC1rZXltYXAudHh0LgorCitFeGFtcGxlOgorI2luY2x1ZGUgImR0LWJpbmRpbmdzL2lucHV0L2lucHV0LmgiCisKKy8geworCWtleXBhZDoga2V5cGFkQDE4MGFjMDAwIHsKKwkJLyogUmVxdWlyZWQgU29DIHNwZWNpZmljIHByb3BlcnRpZXMgKi8KKwkJY29tcGF0aWJsZSA9ICJicmNtLGJjbS1rZXlwYWQiOworCisJCS8qIFJlcXVpcmVkIEJvYXJkIHNwZWNpZmljIHByb3BlcnRpZXMgKi8KKwkJa2V5cGFkLG51bS1yb3dzID0gPDU+OworCQlrZXlwYWQsbnVtLWNvbHVtbnMgPSA8NT47CisJCXN0YXR1cyA9ICJva2F5IjsKKworCQlsaW51eCxrZXltYXAgPSA8TUFUUklYX0tFWSgweDAwLCAweDAyLCBLRVlfRikgLyoga2V5X2ZvcndhcmQgKi8KKwkJTUFUUklYX0tFWSgweDAwLCAweDAzLCBLRVlfSE9NRSkgLyoga2V5X2hvbWUgKi8KKwkJTUFUUklYX0tFWSgweDAwLCAweDA0LCBLRVlfTSkgLyoga2V5X21lc3NhZ2UgKi8KKwkJTUFUUklYX0tFWSgweDAxLCAweDAwLCBLRVlfQSkgLyoga2V5X2NvbnRhY3RzICovCisJCU1BVFJJWF9LRVkoMHgwMSwgMHgwMSwgS0VZXzEpIC8qIGtleV8xICovCisJCU1BVFJJWF9LRVkoMHgwMSwgMHgwMiwgS0VZXzIpIC8qIGtleV8yICovCisJCU1BVFJJWF9LRVkoMHgwMSwgMHgwMywgS0VZXzMpIC8qIGtleV8zICovCisJCU1BVFJJWF9LRVkoMHgwMSwgMHgwNCwgS0VZX1MpIC8qIGtleV9zcGVha2VyICovCisJCU1BVFJJWF9LRVkoMHgwMiwgMHgwMCwgS0VZX1ApIC8qIGtleV9waG9uZSAqLworCQlNQVRSSVhfS0VZKDB4MDIsIDB4MDEsIEtFWV80KSAvKiBrZXlfNCAqLworCQlNQVRSSVhfS0VZKDB4MDIsIDB4MDIsIEtFWV81KSAvKiBrZXlfNSAqLworCQlNQVRSSVhfS0VZKDB4MDIsIDB4MDMsIEtFWV82KSAvKiBrZXlfNiAqLworCQlNQVRSSVhfS0VZKDB4MDIsIDB4MDQsIEtFWV9WT0xVTUVVUCkgLyoga2V5X3ZvbF91cCAqLworCQlNQVRSSVhfS0VZKDB4MDMsIDB4MDAsIEtFWV9DKSAvKiBrZXlfY2FsbF9sb2cgKi8KKwkJTUFUUklYX0tFWSgweDAzLCAweDAxLCBLRVlfNykgLyoga2V5XzcgKi8KKwkJTUFUUklYX0tFWSgweDAzLCAweDAyLCBLRVlfOCkgLyoga2V5XzggKi8KKwkJTUFUUklYX0tFWSgweDAzLCAweDAzLCBLRVlfOSkgLyoga2V5XzkgKi8KKwkJTUFUUklYX0tFWSgweDAzLCAweDA0LCBLRVlfVk9MVU1FRE9XTikgLyoga2V5X3ZvbF9kb3duICovCisJCU1BVFJJWF9LRVkoMHgwNCwgMHgwMCwgS0VZX0gpIC8qIGtleV9oZWFkc2V0ICovCisJCU1BVFJJWF9LRVkoMHgwNCwgMHgwMSwgS0VZX0tQQVNURVJJU0spIC8qIGtleV8qICovCisJCU1BVFJJWF9LRVkoMHgwNCwgMHgwMiwgS0VZXzApIC8qIGtleV8wICovCisJCU1BVFJJWF9LRVkoMHgwNCwgMHgwMywgS0VZX0dSQVZFKSAvKiBrZXlfIyAqLworCQlNQVRSSVhfS0VZKDB4MDQsIDB4MDQsIEtFWV9NVVRFKSAvKiBrZXlfbXV0ZSAqLworCQk+OworCisJCS8qIE9wdGlvbmFsIGJvYXJkIHNwZWNpZmljIHByb3BlcnRpZXMgKi8KKwkJY29sLWRlYm91bmNlLWZpbHRlci1wZXJpb2QgPSA8NT47CisJCXJvdy1vdXRwdXQtZW5hYmxlZDsKKwkJcHVsbC11cC1lbmFibGVkOworCisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvY2FwMTF4eC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvY2FwMTF4eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM2N2EwYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9jYXAxMXh4LnR4dApAQCAtMCwwICsxLDc4IEBACitEZXZpY2UgdHJlZSBiaW5kaW5ncyBmb3IgTWljcm9jaGlwIENBUDExeHggYmFzZWQgY2FwYWNpdGl2ZSB0b3VjaCBzZW5zb3JzCisKK1RoZSBub2RlIGZvciB0aGlzIGRldmljZSBtdXN0IGJlIGEgY2hpbGQgb2YgYSBJMkMgY29udHJvbGxlciBub2RlLCBhcyB0aGUKK2RldmljZSBjb21tdW5pY2F0aW9uIHZpYSBJMkMgb25seS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworCWNvbXBhdGlibGU6CQlNdXN0IGNvbnRhaW4gb25lIG9mOgorCQkJCQkibWljcm9jaGlwLGNhcDExMDYiCisJCQkJCSJtaWNyb2NoaXAsY2FwMTEyNiIKKwkJCQkJIm1pY3JvY2hpcCxjYXAxMTg4IgorCisJcmVnOgkJCVRoZSBJMkMgc2xhdmUgYWRkcmVzcyBvZiB0aGUgZGV2aWNlLgorCisJaW50ZXJydXB0czoJCVByb3BlcnR5IGRlc2NyaWJpbmcgdGhlIGludGVycnVwdCBsaW5lIHRoZQorCQkJCWRldmljZSdzIEFMRVJUIy9DTV9JUlEjIHBpbiBpcyBjb25uZWN0ZWQgdG8uCisJCQkJVGhlIGRldmljZSBvbmx5IGhhcyBvbmUgaW50ZXJydXB0IHNvdXJjZS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworCWF1dG9yZXBlYXQ6CQlFbmFibGVzIHRoZSBMaW51eCBpbnB1dCBzeXN0ZW0ncyBhdXRvcmVwZWF0CisJCQkJZmVhdHVyZSBvbiB0aGUgaW5wdXQgZGV2aWNlLgorCisJbWljcm9jaGlwLHNlbnNvci1nYWluOglEZWZpbmVzIHRoZSBnYWluIG9mIHRoZSBzZW5zb3IgY2lyY3VpdHJ5LiBUaGlzCisJCQkJZWZmZWN0aXZlbHkgY29udHJvbHMgdGhlIHNlbnNpdGl2aXR5LCBhcyBhCisJCQkJc21hbGxlciBkZWx0YSBjYXBhY2l0YW5jZSBpcyByZXF1aXJlZCB0bworCQkJCWdlbmVyYXRlIHRoZSBzYW1lIGRlbHRhIGNvdW50IHZhbHVlcy4KKwkJCQlWYWxpZCB2YWx1ZXMgYXJlIDEsIDIsIDQsIGFuZCA4LgorCQkJCUJ5IGRlZmF1bHQsIGEgZ2FpbiBvZiAxIGlzIHNldC4KKworCW1pY3JvY2hpcCxpcnEtYWN0aXZlLWhpZ2g6CUJ5IGRlZmF1bHQgdGhlIGludGVycnVwdCBwaW4gaXMgYWN0aXZlIGxvdworCQkJCW9wZW4gZHJhaW4uIFRoaXMgcHJvcGVydHkgYWxsb3dzIHVzaW5nIHRoZSBhY3RpdmUKKwkJCQloaWdoIHB1c2gtcHVsbCBvdXRwdXQuCisKKwlsaW51eCxrZXljb2RlczoJCVNwZWNpZmllcyBhbiBhcnJheSBvZiBudW1lcmljIGtleWNvZGUgdmFsdWVzIHRvCisJCQkJYmUgdXNlZCBmb3IgdGhlIGNoYW5uZWxzLiBJZiB0aGlzIHByb3BlcnR5IGlzCisJCQkJb21pdHRlZCwgS0VZX0EsIEtFWV9CLCBldGMgYXJlIHVzZWQgYXMKKwkJCQlkZWZhdWx0cy4gVGhlIGFycmF5IG11c3QgaGF2ZSBleGFjdGx5IHNpeAorCQkJCWVudHJpZXMuCisKK0V4YW1wbGU6CisKK2kyY19jb250cm9sbGVyIHsKKwljYXAxMTA2QDI4IHsKKwkJY29tcGF0aWJsZSA9ICJtaWNyb2NoaXAsY2FwMTEwNiI7CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8xPjsKKwkJaW50ZXJydXB0cyA9IDwwIDA+OworCQlyZWcgPSA8MHgyOD47CisJCWF1dG9yZXBlYXQ7CisJCW1pY3JvY2hpcCxzZW5zb3ItZ2FpbiA9IDwyPjsKKworCQlsaW51eCxrZXljb2RlcyA9IDwxMDM+LAkJLyogS0VZX1VQICovCisJCQkJIDwxMDY+LAkJLyogS0VZX1JJR0hUICovCisJCQkJIDwxMDg+LAkJLyogS0VZX0RPV04gKi8KKwkJCQkgPDEwNT4sCQkvKiBLRVlfTEVGVCAqLworCQkJCSA8MTA5PiwJCS8qIEtFWV9QQUdFRE9XTiAqLworCQkJCSA8MTA0PjsJCS8qIEtFWV9QQUdFVVAgKi8KKworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJdXNyQDAgeworCQkJbGFiZWwgPSAiY2FwMTF4eDpncmVlbjp1c3IwIjsKKwkJCXJlZyA9IDwwPjsKKwkJfTsKKworCQl1c3JAMSB7CisJCQlsYWJlbCA9ICJjYXAxMXh4OmdyZWVuOnVzcjEiOworCQkJcmVnID0gPDE+OworCQl9OworCisJCWFsaXZlQDIgeworCQkJbGFiZWwgPSAiY2FwMTF4eDpncmVlbjphbGl2ZSI7CisJCQlyZWcgPSA8Mj47CisJCQlsaW51eCxkZWZhdWx0X3RyaWdnZXIgPSAiaGVhcnRiZWF0IjsKKwkJfTsKKwl9OworfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L2NscHM3MTF4LWtleXBhZC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvY2xwczcxMXgta2V5cGFkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjhkMmJiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L2NscHM3MTF4LWtleXBhZC50eHQKQEAgLTAsMCArMSwyNyBAQAorKiBDaXJydXMgTG9naWMgQ0xQUzcxMVggbWF0cml4IGtleXBhZCBkZXZpY2UgdHJlZSBiaW5kaW5ncworCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAgICBTaGFsbCBjb250YWluICJjaXJydXMsY2xwczcxMXgta2V5cGFkIi4KKy0gcm93LWdwaW9zOiAgICAgTGlzdCBvZiBHUElPcyB1c2VkIGFzIHJvdyBsaW5lcy4KKy0gcG9sbC1pbnRlcnZhbDogUG9sbCBpbnRlcnZhbCB0aW1lIGluIG1pbGxpc2Vjb25kcy4KKy0gbGludXgsa2V5bWFwOiAgVGhlIGRlZmluaXRpb24gY2FuIGJlIGZvdW5kIGF0CisgICAgICAgICAgICAgICAgIGJpbmRpbmdzL2lucHV0L21hdHJpeC1rZXltYXAudHh0LgorCitPcHRpb25hbCBQcm9wZXJ0aWVzOgorLSBhdXRvcmVwZWF0OiAgICBFbmFibGUgYXV0b3JlcGVhdCBmZWF0dXJlLgorCitFeGFtcGxlOgorCWtleXBhZCB7CisJCWNvbXBhdGlibGUgPSAiY2lycnVzLGVwNzMxMi1rZXlwYWQiLCAiY2lycnVzLGNscHM3MTF4LWtleXBhZCI7CisJCWF1dG9yZXBlYXQ7CisJCXBvbGwtaW50ZXJ2YWwgPSA8MTIwPjsKKwkJcm93LWdwaW9zID0gPCZwb3J0YSAwIDA+LAorCQkJICAgIDwmcG9ydGEgMSAwPjsKKworCQlsaW51eCxrZXltYXAgPSA8CisJCQlNQVRSSVhfS0VZKDAsIDAsIEtFWV9VUCkKKwkJCU1BVFJJWF9LRVkoMCwgMSwgS0VZX0RPV04pCisJCQlNQVRSSVhfS0VZKDEsIDAsIEtFWV9MRUZUKQorCQkJTUFUUklYX0tFWSgxLCAxLCBLRVlfUklHSFQpCisJCT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9jcm9zLWVjLWtleWIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L2Nyb3MtZWMta2V5Yi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY2MzU1YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9jcm9zLWVjLWtleWIudHh0CkBAIC0wLDAgKzEsNzIgQEAKK0Nocm9tZU9TIEVDIEtleWJvYXJkCisKK0dvb2dsZSdzIENocm9tZU9TIEVDIEtleWJvYXJkIGlzIGEgc2ltcGxlIG1hdHJpeCBrZXlib2FyZCBpbXBsZW1lbnRlZCBvbgorYSBzZXBhcmF0ZSBFQyAoRW1iZWRkZWQgQ29udHJvbGxlcikgZGV2aWNlLiBJdCBwcm92aWRlcyBhIG1lc3NhZ2UgZm9yIHJlYWRpbmcKK2tleSBzY2FucyBmcm9tIHRoZSBFQy4gVGhlc2UgYXJlIHRoZW4gY29udmVydGVkIGludG8ga2V5Y29kZXMgZm9yIHByb2Nlc3NpbmcKK2J5IHRoZSBrZXJuZWwuCisKK1RoaXMgYmluZGluZyBpcyBiYXNlZCBvbiBtYXRyaXgta2V5bWFwLnR4dCBhbmQgZXh0ZW5kcy9tb2RpZmllcyBpdCBhcyBmb2xsb3dzOgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiZ29vZ2xlLGNyb3MtZWMta2V5YiIKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gZ29vZ2xlLG5lZWRzLWdob3N0LWZpbHRlcjogVHJ1ZSB0byBlbmFibGUgYSBnaG9zdCBmaWx0ZXIgZm9yIHRoZSBtYXRyaXgKK2tleWJvYXJkLiBUaGlzIGlzIHJlY29tbWVuZGVkIGlmIHRoZSBFQyBkb2VzIG5vdCBoYXZlIGl0cyBvd24gbG9naWMgb3IKK2hhcmR3YXJlIGZvciB0aGlzLgorCisKK0V4YW1wbGU6CisKK2Nyb3MtZWMta2V5YiB7CisJY29tcGF0aWJsZSA9ICJnb29nbGUsY3Jvcy1lYy1rZXliIjsKKwlrZXlwYWQsbnVtLXJvd3MgPSA8OD47CisJa2V5cGFkLG51bS1jb2x1bW5zID0gPDEzPjsKKwlnb29nbGUsbmVlZHMtZ2hvc3QtZmlsdGVyOworCS8qCisJICogS2V5bWFwIGVudHJpZXMgdGFrZSB0aGUgZm9ybSBvZiAweFJSQ0NLS0tLIHdoZXJlCisJICogUlI9Um93IENDPUNvbHVtbiBLS0tLPUtleSBDb2RlCisJICogVGhlIHZhbHVlcyBiZWxvdyBhcmUgZm9yIGEgVVMga2V5Ym9hcmQgbGF5b3V0IGFuZAorCSAqIGFyZSB0YWtlbiBmcm9tIHRoZSBMaW51eCBkcml2ZXIuIE5vdGUgdGhhdCB0aGUKKwkgKiAxMDJORCBrZXkgaXMgbm90IHVzZWQgZm9yIFVTIGtleWJvYXJkcy4KKwkgKi8KKwlsaW51eCxrZXltYXAgPSA8CisJCS8qIENBUFNMQ0sgRjEgICAgICAgICBCICAgICAgICAgIEYxMCAgICAgKi8KKwkJMHgwMDAxMDAzYSAweDAwMDIwMDNiIDB4MDAwMzAwMzAgMHgwMDA0MDA0NAorCQkvKiBOICAgICAgID0gICAgICAgICAgUl9BTFQgICAgICBFU0MgICAgICovCisJCTB4MDAwNjAwMzEgMHgwMDA4MDAwZCAweDAwMGEwMDY0IDB4MDEwMTAwMDEKKwkJLyogRjQgICAgICBHICAgICAgICAgIEY3ICAgICAgICAgSCAgICAgICAqLworCQkweDAxMDIwMDNlIDB4MDEwMzAwMjIgMHgwMTA0MDA0MSAweDAxMDYwMDIzCisJCS8qICcgICAgICAgRjkgICAgICAgICBCS1NQQUNFICAgIExfQ1RSTCAgKi8KKwkJMHgwMTA4MDAyOCAweDAxMDkwMDQzIDB4MDEwYjAwMGUgMHgwMjAwMDAxZAorCQkvKiBUQUIgICAgIEYzICAgICAgICAgVCAgICAgICAgICBGNiAgICAgICovCisJCTB4MDIwMTAwMGYgMHgwMjAyMDAzZCAweDAyMDMwMDE0IDB4MDIwNDAwNDAKKwkJLyogXSAgICAgICBZICAgICAgICAgIDEwMk5EICAgICAgWyAgICAgICAqLworCQkweDAyMDUwMDFiIDB4MDIwNjAwMTUgMHgwMjA3MDA1NiAweDAyMDgwMDFhCisJCS8qIEY4ICAgICAgR1JBVkUgICAgICBGMiAgICAgICAgIDUgICAgICAgKi8KKwkJMHgwMjA5MDA0MiAweDAzMDEwMDI5IDB4MDMwMjAwM2MgMHgwMzAzMDAwNgorCQkvKiBGNSAgICAgIDYgICAgICAgICAgLSAgICAgICAgICBcICAgICAgICovCisJCTB4MDMwNDAwM2YgMHgwMzA2MDAwNyAweDAzMDgwMDBjIDB4MDMwYjAwMmIKKwkJLyogUl9DVFJMICBBICAgICAgICAgIEQgICAgICAgICAgRiAgICAgICAqLworCQkweDA0MDAwMDYxIDB4MDQwMTAwMWUgMHgwNDAyMDAyMCAweDA0MDMwMDIxCisJCS8qIFMgICAgICAgSyAgICAgICAgICBKICAgICAgICAgIDsgICAgICAgKi8KKwkJMHgwNDA0MDAxZiAweDA0MDUwMDI1IDB4MDQwNjAwMjQgMHgwNDA4MDAyNworCQkvKiBMICAgICAgIEVOVEVSICAgICAgWiAgICAgICAgICBDICAgICAgICovCisJCTB4MDQwOTAwMjYgMHgwNDBiMDAxYyAweDA1MDEwMDJjIDB4MDUwMjAwMmUKKwkJLyogViAgICAgICBYICAgICAgICAgICwgICAgICAgICAgTSAgICAgICAqLworCQkweDA1MDMwMDJmIDB4MDUwNDAwMmQgMHgwNTA1MDAzMyAweDA1MDYwMDMyCisJCS8qIExfU0hJRlQgLyAgICAgICAgICAuICAgICAgICAgIFNQQUNFICAgKi8KKwkJMHgwNTA3MDAyYSAweDA1MDgwMDM1IDB4MDUwOTAwMzQgMHgwNTBCMDAzOQorCQkvKiAxICAgICAgIDMgICAgICAgICAgNCAgICAgICAgICAyICAgICAgICovCisJCTB4MDYwMTAwMDIgMHgwNjAyMDAwNCAweDA2MDMwMDA1IDB4MDYwNDAwMDMKKwkJLyogOCAgICAgICA3ICAgICAgICAgIDAgICAgICAgICAgOSAgICAgICAqLworCQkweDA2MDUwMDA5IDB4MDYwNjAwMDggMHgwNjA4MDAwYiAweDA2MDkwMDBhCisJCS8qIExfQUxUICAgRE9XTiAgICAgICBSSUdIVCAgICAgIFEgICAgICAgKi8KKwkJMHgwNjBhMDAzOCAweDA2MGIwMDZjIDB4MDYwYzAwNmEgMHgwNzAxMDAxMAorCQkvKiBFICAgICAgIFIgICAgICAgICAgVyAgICAgICAgICBJICAgICAgICovCisJCTB4MDcwMjAwMTIgMHgwNzAzMDAxMyAweDA3MDQwMDExIDB4MDcwNTAwMTcKKwkJLyogVSAgICAgICBSX1NISUZUICAgIFAgICAgICAgICAgTyAgICAgICAqLworCQkweDA3MDYwMDE2IDB4MDcwNzAwMzYgMHgwNzA4MDAxOSAweDA3MDkwMDE4CisJCS8qIFVQICAgICAgTEVGVCAgICAqLworCQkweDA3MGIwMDY3IDB4MDcwYzAwNjk+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9jeXByZXNzLGN5YXBhLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9jeXByZXNzLGN5YXBhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDkxYmE5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L2N5cHJlc3MsY3lhcGEudHh0CkBAIC0wLDAgKzEsNDQgQEAKK0N5cHJlc3MgSTJDIFRvdWNocGFkCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IG11c3QgYmUgImN5cHJlc3MsY3lhcGEiLgorLSByZWc6IEkyQyBhZGRyZXNzIG9mIHRoZSBjaGlwLgorLSBpbnRlcnJ1cHQtcGFyZW50OiBhIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciAoc2VlIGludGVycnVwdAorCWJpbmRpbmdbMF0pLgorLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgdG8gd2hpY2ggdGhlIGNoaXAgaXMgY29ubmVjdGVkIChzZWUgaW50ZXJydXB0CisJYmluZGluZ1swXSkuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHdha2V1cC1zb3VyY2U6IHRvdWNocGFkIGNhbiBiZSB1c2VkIGFzIGEgd2FrZXVwIHNvdXJjZS4KKy0gcGluY3RybC1uYW1lczogc2hvdWxkIGJlICJkZWZhdWx0IiAoc2VlIHBpbmN0cmwgYmluZGluZyBbMV0pLgorLSBwaW5jdHJsLTA6IGEgcGhhbmRsZSBwb2ludGluZyB0byB0aGUgcGluIHNldHRpbmdzIGZvciB0aGUgZGV2aWNlIChzZWUKKwlwaW5jdHJsIGJpbmRpbmcgWzFdKS4KKy0gdmNjLXN1cHBseTogYSBwaGFuZGxlIGZvciB0aGUgcmVndWxhdG9yIHN1cHBseWluZyAzLjNWIHBvd2VyLgorCitbMF06IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlcnJ1cHRzLnR4dAorWzFdOiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9waW5jdHJsLWJpbmRpbmdzLnR4dAorCitFeGFtcGxlOgorCSZpMmMwIHsKKwkJLyogLi4uICovCisKKwkJLyogQ3lwcmVzcyBHZW4zIHRvdWNocGFkICovCisJCXRvdWNocGFkQDY3IHsKKwkJCWNvbXBhdGlibGUgPSAiY3lwcmVzcyxjeWFwYSI7CisJCQlyZWcgPSA8MHg2Nz47CisJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvPjsKKwkJCWludGVycnVwdHMgPSA8MiBJUlFfVFlQRV9FREdFX0ZBTExJTkc+OwkvKiBHUElPIDIgKi8KKwkJCXdha2V1cC1zb3VyY2U7CisJCX07CisKKwkJLyogQ3lwcmVzcyBHZW41IGFuZCBsYXRlciB0b3VjaHBhZCAqLworCQl0b3VjaHBhZEAyNCB7CisJCQljb21wYXRpYmxlID0gImN5cHJlc3MsY3lhcGEiOworCQkJcmVnID0gPDB4MjQ+OworCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3Bpbz47CisJCQlpbnRlcnJ1cHRzID0gPDIgSVJRX1RZUEVfRURHRV9GQUxMSU5HPjsJLyogR1BJTyAyICovCisJCQl3YWtldXAtc291cmNlOworCQl9OworCisJCS8qIC4uLiAqLworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvZGE5MDYyLW9ua2V5LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9kYTkwNjItb25rZXkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiMGUwNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvZGE5MDYyLW9ua2V5LnR4dApAQCAtMCwwICsxLDMyIEBACisqIERpYWxvZyBEQTkwNjIvNjMgT25LZXkgTW9kdWxlCisKK1RoaXMgbW9kdWxlIGlzIHBhcnQgb2YgdGhlIERBOTA2Mi9EQTkwNjMuIEZvciBtb3JlIGRldGFpbHMgYWJvdXQgZW50aXJlCitjaGlwcyBzZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9kYTkwNjIudHh0IGFuZAorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9kYTkwNjMudHh0CisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIEtFWV9QT1dFUiwgS0VZX1NMRUVQIGFuZCBldmVudHMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlIG9uZSBvZjoKKwlkbGcsZGE5MDYyLW9ua2V5CisJZGxnLGRhOTA2My1vbmtleQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCisgIC0gZGxnLGRpc2FibGUta2V5LXBvd2VyIDogRGlzYWJsZSBwb3dlci1kb3duIHVzaW5nIGEgbG9uZyBrZXktcHJlc3MuIElmIHRoaXMKKyAgICBlbnRyeSBleGlzdHMgdGhlIE9uS2V5IGRyaXZlciB3aWxsIHJlbW92ZSBzdXBwb3J0IGZvciB0aGUgS0VZX1BPV0VSIGtleQorICAgIHByZXNzLiBJZiB0aGlzIGVudHJ5IGRvZXMgbm90IGV4aXN0IHRoZW4gYnkgZGVmYXVsdCB0aGUga2V5LXByZXNzCisgICAgdHJpZ2dlcmVkIHBvd2VyIGRvd24gaXMgZW5hYmxlZCBhbmQgdGhlIE9uS2V5IHdpbGwgc3VwcG9ydCBib3RoIEtFWV9QT1dFUgorICAgIGFuZCBLRVlfU0xFRVAuCisKK0V4YW1wbGU6CisKKwlwbWljMDogZGE5MDYyQDU4IHsKKworCQlvbmtleSB7CisJCQljb21wYXRpYmxlID0gImRsZyxkYTkwNjMtb25rZXkiOworCQkJZGxnLGRpc2FibGUta2V5LXBvd2VyOworCQl9OworCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9lM3gwLWJ1dHRvbi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvZTN4MC1idXR0b24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MTY2NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvZTN4MC1idXR0b24udHh0CkBAIC0wLDAgKzEsMjUgQEAKK05hdGlvbmFsIEluc3RydW1lbnRzIEV0dHVzIFJlc2VhcmNoIFVTUlAgRTN4MCBidXR0b24gZHJpdmVyCisKK1RoaXMgbW9kdWxlIGlzIHBhcnQgb2YgdGhlIE5JIEV0dHVzIFJlc2VhcmNoIFVTUlAgRTN4MCBTRFIuCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIGEgc2ltcGxlIHBvd2VyIGJ1dHRvbiBldmVudCB2aWEgdHdvIGludGVycnVwdHMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZworICAtICJldHR1cyxlM3gwLWJ1dHRvbiI6IEZvciBkZXZpY2VzIHN1Y2ggYXMgdGhlIE5JIEV0dHVzIFJlc2VhcmNoIFVTUlAgRTN4MAorLSBpbnRlcnJ1cHQtcGFyZW50OgorICAtIGEgcGhhbmRsZSB0byB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgdGhhdCBpdCBpcyBhdHRhY2hlZCB0by4KKy0gaW50ZXJydXB0czogc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nCisgIC0gPDAgMzAgMT4sIDwwIDMxIDE+OiBGb3IgZGV2aWNlcyBzdWNoIGFzIHRoZSBOSSBFdHR1cyBSZXNlYXJjaCBVU1JQIEUzeDAKKy0gaW50ZXJydXB0LW5hbWVzOiBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcKKyAgLSAicHJlc3MiLCAicmVsZWFzZSI6IEZvciBkZXZpY2VzIHN1Y2ggYXMgdGhlIE5JIEV0dHVzIFJlc2VhcmNoIFVTUlAgRTN4MAorCitOb3RlOiBJbnRlcnJ1cHQgbnVtYmVycyBtaWdodCB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgRlBHQSBjb25maWd1cmF0aW9uLgorCitFeGFtcGxlOgorCWJ1dHRvbiB7CisJCWNvbXBhdGlibGUgPSAiZXR0dXMsZTN4MC1idXR0b24iOworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpbnRjPjsKKwkJaW50ZXJydXB0cyA9IDwwIDMwIDE+LCA8MCAzMSAxPjsKKwkJaW50ZXJydXB0LW5hbWVzID0gInByZXNzIiwgInJlbGVhc2UiOworCX0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9lbGFuX2kyYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvZWxhbl9pMmMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlMzI0MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvZWxhbl9pMmMudHh0CkBAIC0wLDAgKzEsMzQgQEAKK0VsYW50ZWNoIEkyQyBUb3VjaHBhZAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBtdXN0IGJlICJlbGFuLGVrdGgzMDAwIi4KKy0gcmVnOiBJMkMgYWRkcmVzcyBvZiB0aGUgY2hpcC4KKy0gaW50ZXJydXB0LXBhcmVudDogYSBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgKHNlZSBpbnRlcnJ1cHQKKyAgYmluZGluZ1swXSkuCistIGludGVycnVwdHM6IGludGVycnVwdCB0byB3aGljaCB0aGUgY2hpcCBpcyBjb25uZWN0ZWQgKHNlZSBpbnRlcnJ1cHQKKyAgYmluZGluZ1swXSkuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHdha2V1cC1zb3VyY2U6IHRvdWNocGFkIGNhbiBiZSB1c2VkIGFzIGEgd2FrZXVwIHNvdXJjZS4KKy0gcGluY3RybC1uYW1lczogc2hvdWxkIGJlICJkZWZhdWx0IiAoc2VlIHBpbmN0cmwgYmluZGluZyBbMV0pLgorLSBwaW5jdHJsLTA6IGEgcGhhbmRsZSBwb2ludGluZyB0byB0aGUgcGluIHNldHRpbmdzIGZvciB0aGUgZGV2aWNlIChzZWUKKyAgcGluY3RybCBiaW5kaW5nIFsxXSkuCistIHZjYy1zdXBwbHk6IGEgcGhhbmRsZSBmb3IgdGhlIHJlZ3VsYXRvciBzdXBwbHlpbmcgMy4zViBwb3dlci4KKworWzBdOiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaW50ZXJydXB0cy50eHQKK1sxXTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcGluY3RybC1iaW5kaW5ncy50eHQKKworRXhhbXBsZToKKwkmaTJjMSB7CisJCS8qIC4uLiAqLworCisJCXRvdWNocGFkQDE1IHsKKwkJCWNvbXBhdGlibGUgPSAiZWxhbixla3RoMzAwMCI7CisJCQlyZWcgPSA8MHgxNT47CisJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvND47CisJCQlpbnRlcnJ1cHRzID0gPDB4MCBJUlFfVFlQRV9FREdFX0ZBTExJTkc+OworCQkJd2FrZXVwLXNvdXJjZTsKKwkJfTsKKworCQkvKiAuLi4gKi8KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L2VsYW50c19pMmMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L2VsYW50c19pMmMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhNzEwMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvZWxhbnRzX2kyYy50eHQKQEAgLTAsMCArMSwzNiBAQAorRWxhbnRlY2ggSTJDIFRvdWNoc2NyZWVuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IG11c3QgYmUgImVsYW4sZWt0aDM1MDAiLgorLSByZWc6IEkyQyBhZGRyZXNzIG9mIHRoZSBjaGlwLgorLSBpbnRlcnJ1cHQtcGFyZW50OiBhIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciAoc2VlIGludGVycnVwdAorICBiaW5kaW5nWzBdKS4KKy0gaW50ZXJydXB0czogaW50ZXJydXB0IHRvIHdoaWNoIHRoZSBjaGlwIGlzIGNvbm5lY3RlZCAoc2VlIGludGVycnVwdAorICBiaW5kaW5nWzBdKS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gd2FrZXVwLXNvdXJjZTogdG91Y2hzY3JlZW4gY2FuIGJlIHVzZWQgYXMgYSB3YWtldXAgc291cmNlLgorLSBwaW5jdHJsLW5hbWVzOiBzaG91bGQgYmUgImRlZmF1bHQiIChzZWUgcGluY3RybCBiaW5kaW5nIFsxXSkuCistIHBpbmN0cmwtMDogYSBwaGFuZGxlIHBvaW50aW5nIHRvIHRoZSBwaW4gc2V0dGluZ3MgZm9yIHRoZSBkZXZpY2UgKHNlZQorICBwaW5jdHJsIGJpbmRpbmcgWzFdKS4KKy0gcmVzZXQtZ3Bpb3M6IHJlc2V0IGdwaW8gdGhlIGNoaXAgaXMgY29ubmVjdGVkIHRvLgorLSB2Y2MzMy1zdXBwbHk6IGEgcGhhbmRsZSBmb3IgdGhlIHJlZ3VsYXRvciBzdXBwbHlpbmcgMy4zViBwb3dlci4KKy0gdmNjaW8tc3VwcGx5OiBhIHBoYW5kbGUgZm9yIHRoZSByZWd1bGF0b3Igc3VwcGx5aW5nIElPIHBvd2VyLgorCitbMF06IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlcnJ1cHRzLnR4dAorWzFdOiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9waW5jdHJsLWJpbmRpbmdzLnR4dAorCitFeGFtcGxlOgorCSZpMmMxIHsKKwkJLyogLi4uICovCisKKwkJdG91Y2hzY3JlZW5AMTAgeworCQkJY29tcGF0aWJsZSA9ICJlbGFuLGVrdGgzNTAwIjsKKwkJCXJlZyA9IDwweDEwPjsKKwkJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW80PjsKKwkJCWludGVycnVwdHMgPSA8MHgwIElSUV9UWVBFX0VER0VfRkFMTElORz47CisJCQl3YWtldXAtc291cmNlOworCQl9OworCisJCS8qIC4uLiAqLworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvZnNsLW1tYTg0NTAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L2ZzbC1tbWE4NDUwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjk2ZTU3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L2ZzbC1tbWE4NDUwLnR4dApAQCAtMCwwICsxLDEyIEBACisqIEZyZWVzY2FsZSBNTUE4NDUwIDMtQXhpcyBBY2NlbGVyb21ldGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAiZnNsLG1tYTg0NTAiLgorLSByZWc6IHRoZSBJMkMgYWRkcmVzcyBvZiBNTUE4NDUwCisKK0V4YW1wbGU6CisKK2FjY2VsZXJvbWV0ZXI6IG1tYTg0NTBAMWMgeworCWNvbXBhdGlibGUgPSAiZnNsLG1tYTg0NTAiOworCXJlZyA9IDwweDFjPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvZ3Bpby1iZWVwZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L2dwaW8tYmVlcGVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTA4NmUzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L2dwaW8tYmVlcGVyLnR4dApAQCAtMCwwICsxLDEzIEBACisqIEdQSU8gYmVlcGVyIGRldmljZSB0cmVlIGJpbmRpbmdzCisKK1JlZ2lzdGVyIGEgYmVlcGVyIGNvbm5lY3RlZCB0byBHUElPIHBpbi4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZToJU2hvdWxkIGJlICJncGlvLWJlZXBlciIuCistIGdwaW9zOglGcm9tIGNvbW1vbiBncGlvIGJpbmRpbmc7IGdwaW8gY29ubmVjdGlvbiB0byBiZWVwZXIgZW5hYmxlIHBpbi4KKworRXhhbXBsZToKKwliZWVwZXI6IGJlZXBlciB7CisJCWNvbXBhdGlibGUgPSAiZ3Bpby1iZWVwZXIiOworCQlncGlvcyA9IDwmZ3BpbzMgMjMgR1BJT19BQ1RJVkVfSElHSD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9ncGlvLWtleXMtcG9sbGVkLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9ncGlvLWtleXMtcG9sbGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWQwZmIxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L2dwaW8ta2V5cy1wb2xsZWQudHh0CkBAIC0wLDAgKzEsNDYgQEAKK0RldmljZS1UcmVlIGJpbmRpbmdzIGZvciBpbnB1dC9ncGlvX2tleXNfcG9sbGVkLmMga2V5Ym9hcmQgZHJpdmVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisJLSBjb21wYXRpYmxlID0gImdwaW8ta2V5cy1wb2xsZWQiOworCS0gcG9sbC1pbnRlcnZhbDogUG9sbCBpbnRlcnZhbCB0aW1lIGluIG1pbGxpc2Vjb25kcworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCS0gYXV0b3JlcGVhdDogQm9vbGVhbiwgRW5hYmxlIGF1dG8gcmVwZWF0IGZlYXR1cmUgb2YgTGludXggaW5wdXQKKwkgIHN1YnN5c3RlbS4KKworRWFjaCBidXR0b24gKGtleSkgaXMgcmVwcmVzZW50ZWQgYXMgYSBzdWItbm9kZSBvZiAiZ3Bpby1rZXlzLXBvbGxlZCI6CitTdWJub2RlIHByb3BlcnRpZXM6CisKKwktIGdwaW9zOiBPRiBkZXZpY2UtdHJlZSBncGlvIHNwZWNpZmljYXRpb24uCisJLSBsYWJlbDogRGVzY3JpcHRpdmUgbmFtZSBvZiB0aGUga2V5LgorCS0gbGludXgsY29kZTogS2V5IC8gQXhpcyBjb2RlIHRvIGVtaXQuCisKK09wdGlvbmFsIHN1Ym5vZGUtcHJvcGVydGllczoKKwktIGxpbnV4LGlucHV0LXR5cGU6IFNwZWNpZnkgZXZlbnQgdHlwZSB0aGlzIGJ1dHRvbi9rZXkgZ2VuZXJhdGVzLgorCSAgSWYgbm90IHNwZWNpZmllZCBkZWZhdWx0cyB0byA8MT4gPT0gRVZfS0VZLgorCS0gbGludXgsaW5wdXQtdmFsdWU6IElmIGxpbnV4LGlucHV0LXR5cGUgaXMgRVZfQUJTIG9yIEVWX1JFTCB0aGVuIHRoaXMKKwkgIHZhbHVlIGlzIHNlbnQgZm9yIGV2ZW50cyB0aGlzIGJ1dHRvbiBnZW5lcmF0ZXMgd2hlbiBwcmVzc2VkLgorCSAgRVZfQUJTL0VWX1JFTCBheGlzIHdpbGwgZ2VuZXJhdGUgYW4gZXZlbnQgd2l0aCBhIHZhbHVlIG9mIDAgd2hlbgorCSAgYWxsIGJ1dHRvbnMgd2l0aCBsaW51eCxpbnB1dC10eXBlID09IHR5cGUgYW5kIGxpbnV4LGNvZGUgPT0gYXhpcworCSAgYXJlIHJlbGVhc2VkLiBUaGlzIHZhbHVlIGlzIGludGVycHJldGVkIGFzIGEgc2lnbmVkIDMyIGJpdCB2YWx1ZSwKKwkgIGUuZy4gdG8gbWFrZSBhIGJ1dHRvbiBnZW5lcmF0ZSBhIHZhbHVlIG9mIC0xIHVzZToKKwkgIGxpbnV4LGlucHV0LXZhbHVlID0gPDB4ZmZmZmZmZmY+OyAvKiAtMSAqLworCS0gZGVib3VuY2UtaW50ZXJ2YWw6IERlYm91bmNpbmcgaW50ZXJ2YWwgdGltZSBpbiBtaWxsaXNlY29uZHMuCisJICBJZiBub3Qgc3BlY2lmaWVkIGRlZmF1bHRzIHRvIDUuCisJLSB3YWtldXAtc291cmNlOiBCb29sZWFuLCBidXR0b24gY2FuIHdha2UtdXAgdGhlIHN5c3RlbS4KKwkJCSAoTGVnYWN5IHByb3BlcnR5IHN1cHBvcnRlZDogImdwaW8ta2V5LHdha2V1cCIpCisKK0V4YW1wbGUgbm9kZXM6CisKKwlncGlvX2tleXNfcG9sbGVkIHsKKwkJCWNvbXBhdGlibGUgPSAiZ3Bpby1rZXlzLXBvbGxlZCI7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCQkJcG9sbC1pbnRlcnZhbCA9IDwxMDA+OworCQkJYXV0b3JlcGVhdDsKKwkJCWJ1dHRvbkAyMSB7CisJCQkJbGFiZWwgPSAiR1BJTyBLZXkgVVAiOworCQkJCWxpbnV4LGNvZGUgPSA8MTAzPjsKKwkJCQlncGlvcyA9IDwmZ3BpbzEgMCAxPjsKKwkJCX07CisJCQkuLi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9ncGlvLWtleXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L2dwaW8ta2V5cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YxMzMzZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9ncGlvLWtleXMudHh0CkBAIC0wLDAgKzEsNDkgQEAKK0RldmljZS1UcmVlIGJpbmRpbmdzIGZvciBpbnB1dC9ncGlvX2tleXMuYyBrZXlib2FyZCBkcml2ZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKwktIGNvbXBhdGlibGUgPSAiZ3Bpby1rZXlzIjsKKworT3B0aW9uYWwgcHJvcGVydGllczoKKwktIGF1dG9yZXBlYXQ6IEJvb2xlYW4sIEVuYWJsZSBhdXRvIHJlcGVhdCBmZWF0dXJlIG9mIExpbnV4IGlucHV0CisJICBzdWJzeXN0ZW0uCisKK0VhY2ggYnV0dG9uIChrZXkpIGlzIHJlcHJlc2VudGVkIGFzIGEgc3ViLW5vZGUgb2YgImdwaW8ta2V5cyI6CitTdWJub2RlIHByb3BlcnRpZXM6CisKKwktIGdwaW9zOiBPRiBkZXZpY2UtdHJlZSBncGlvIHNwZWNpZmljYXRpb24uCisJLSBpbnRlcnJ1cHRzOiB0aGUgaW50ZXJydXB0IGxpbmUgZm9yIHRoYXQgaW5wdXQuCisJLSBsYWJlbDogRGVzY3JpcHRpdmUgbmFtZSBvZiB0aGUga2V5LgorCS0gbGludXgsY29kZTogS2V5Y29kZSB0byBlbWl0LgorCitOb3RlIHRoYXQgZWl0aGVyICJpbnRlcnJ1cHRzIiBvciAiZ3Bpb3MiIHByb3BlcnRpZXMgY2FuIGJlIG9taXR0ZWQsIGJ1dCBub3QKK2JvdGggYXQgdGhlIHNhbWUgdGltZS4gU3BlY2lmeWluZyBib3RoIHByb3BlcnRpZXMgaXMgYWxsb3dlZC4KKworT3B0aW9uYWwgc3Vibm9kZS1wcm9wZXJ0aWVzOgorCS0gbGludXgsaW5wdXQtdHlwZTogU3BlY2lmeSBldmVudCB0eXBlIHRoaXMgYnV0dG9uL2tleSBnZW5lcmF0ZXMuCisJICBJZiBub3Qgc3BlY2lmaWVkIGRlZmF1bHRzIHRvIDwxPiA9PSBFVl9LRVkuCisJLSBkZWJvdW5jZS1pbnRlcnZhbDogRGVib3VuY2luZyBpbnRlcnZhbCB0aW1lIGluIG1pbGxpc2Vjb25kcy4KKwkgIElmIG5vdCBzcGVjaWZpZWQgZGVmYXVsdHMgdG8gNS4KKwktIHdha2V1cC1zb3VyY2U6IEJvb2xlYW4sIGJ1dHRvbiBjYW4gd2FrZS11cCB0aGUgc3lzdGVtLgorCQkJIChMZWdhY3kgcHJvcGVydHkgc3VwcG9ydGVkOiAiZ3Bpby1rZXksd2FrZXVwIikKKwktIGxpbnV4LGNhbi1kaXNhYmxlOiBCb29sZWFuLCBpbmRpY2F0ZXMgdGhhdCBidXR0b24gaXMgY29ubmVjdGVkCisJICB0byBkZWRpY2F0ZWQgKG5vdCBzaGFyZWQpIGludGVycnVwdCB3aGljaCBjYW4gYmUgZGlzYWJsZWQgdG8KKwkgIHN1cHByZXNzIGV2ZW50cyBmcm9tIHRoZSBidXR0b24uCisKK0V4YW1wbGUgbm9kZXM6CisKKwlncGlvX2tleXMgeworCQkJY29tcGF0aWJsZSA9ICJncGlvLWtleXMiOworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJCWF1dG9yZXBlYXQ7CisJCQlidXR0b25AMjEgeworCQkJCWxhYmVsID0gIkdQSU8gS2V5IFVQIjsKKwkJCQlsaW51eCxjb2RlID0gPDEwMz47CisJCQkJZ3Bpb3MgPSA8JmdwaW8xIDAgMT47CisJCQl9OworCQkJYnV0dG9uQDIyIHsKKwkJCQlsYWJlbCA9ICJHUElPIEtleSBET1dOIjsKKwkJCQlsaW51eCxjb2RlID0gPDEwOD47CisJCQkJaW50ZXJydXB0cyA9IDwxIElSUV9UWVBFX0xFVkVMX0hJR0ggNz47CisJCQl9OworCQkJLi4uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvZ3Bpby1tYXRyaXgta2V5cGFkLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9ncGlvLW1hdHJpeC1rZXlwYWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwZWEwOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvZ3Bpby1tYXRyaXgta2V5cGFkLnR4dApAQCAtMCwwICsxLDQ3IEBACisqIEdQSU8gZHJpdmVuIG1hdHJpeCBrZXlwYWQgZGV2aWNlIHRyZWUgYmluZGluZ3MKKworR1BJTyBkcml2ZW4gbWF0cml4IGtleXBhZCBpcyB1c2VkIHRvIGludGVyZmFjZSBhIFNvQyB3aXRoIGEgbWF0cml4IGtleXBhZC4KK1RoZSBtYXRyaXgga2V5cGFkIHN1cHBvcnRzIG11bHRpcGxlIHJvdyBhbmQgY29sdW1uIGxpbmVzLCBhIGtleSBjYW4gYmUKK3BsYWNlZCBhdCBlYWNoIGludGVyc2VjdGlvbiBvZiBhIHVuaXF1ZSByb3cgYW5kIGEgdW5pcXVlIGNvbHVtbi4gVGhlIG1hdHJpeAora2V5cGFkIGNhbiBzZW5zZSBhIGtleS1wcmVzcyBhbmQga2V5LXJlbGVhc2UgYnkgbWVhbnMgb2YgR1BJTyBsaW5lcyBhbmQKK3JlcG9ydCB0aGUgZXZlbnQgdXNpbmcgR1BJTyBpbnRlcnJ1cHRzIHRvIHRoZSBjcHUuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CQlTaG91bGQgYmUgImdwaW8tbWF0cml4LWtleXBhZCIKKy0gcm93LWdwaW9zOgkJTGlzdCBvZiBncGlvcyB1c2VkIGFzIHJvdyBsaW5lcy4gVGhlIGdwaW8gc3BlY2lmaWVyCisJCQlmb3IgdGhpcyBwcm9wZXJ0eSBkZXBlbmRzIG9uIHRoZSBncGlvIGNvbnRyb2xsZXIgdG8KKwkJCXdoaWNoIHRoZXNlIHJvdyBsaW5lcyBhcmUgY29ubmVjdGVkLgorLSBjb2wtZ3Bpb3M6CQlMaXN0IG9mIGdwaW9zIHVzZWQgYXMgY29sdW1uIGxpbmVzLiBUaGUgZ3BpbyBzcGVjaWZpZXIKKwkJCWZvciB0aGlzIHByb3BlcnR5IGRlcGVuZHMgb24gdGhlIGdwaW8gY29udHJvbGxlciB0bworCQkJd2hpY2ggdGhlc2UgY29sdW1uIGxpbmVzIGFyZSBjb25uZWN0ZWQuCistIGxpbnV4LGtleW1hcDoJCVRoZSBkZWZpbml0aW9uIGNhbiBiZSBmb3VuZCBhdAorCQkJYmluZGluZ3MvaW5wdXQvbWF0cml4LWtleW1hcC50eHQKKworT3B0aW9uYWwgUHJvcGVydGllczoKKy0gbGludXgsbm8tYXV0b3JlcGVhdDoJZG8gbm8gZW5hYmxlIGF1dG9yZXBlYXQgZmVhdHVyZS4KKy0gd2FrZXVwLXNvdXJjZToJdXNlIGFueSBldmVudCBvbiBrZXlwYWQgYXMgd2FrZXVwIGV2ZW50LgorCQkJKExlZ2FjeSBwcm9wZXJ0eSBzdXBwb3J0ZWQ6ICJsaW51eCx3YWtldXAiKQorLSBkZWJvdW5jZS1kZWxheS1tczoJZGVib3VuY2UgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzCistIGNvbC1zY2FuLWRlbGF5LXVzOglkZWxheSwgbWVhc3VyZWQgaW4gbWljcm9zZWNvbmRzLCB0aGF0IGlzIG5lZWRlZAorCQkJYmVmb3JlIHdlIGNhbiBzY2FuIGtleXBhZCBhZnRlciBhY3RpdmF0aW5nIGNvbHVtbiBncGlvCisKK0V4YW1wbGU6CisJbWF0cml4LWtleXBhZCB7CisJCWNvbXBhdGlibGUgPSAiZ3Bpby1tYXRyaXgta2V5cGFkIjsKKwkJZGVib3VuY2UtZGVsYXktbXMgPSA8NT47CisJCWNvbC1zY2FuLWRlbGF5LXVzID0gPDI+OworCisJCXJvdy1ncGlvcyA9IDwmZ3BpbzIgMjUgMAorCQkJICAgICAmZ3BpbzIgMjYgMAorCQkJICAgICAmZ3BpbzIgMjcgMD47CisKKwkJY29sLWdwaW9zID0gPCZncGlvMiAyMSAwCisJCQkgICAgICZncGlvMiAyMiAwPjsKKworCQlsaW51eCxrZXltYXAgPSA8MHgwMDAwMDA4QgorCQkJCTB4MDEwMDAwOUUKKwkJCQkweDAyMDAwMDY5CisJCQkJMHgwMDAxMDA2QQorCQkJCTB4MDEwMTAwMUMKKwkJCQkweDAyMDEwMDZDPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L2hpZC1vdmVyLWkyYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvaGlkLW92ZXItaTJjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODhlZGNiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L2hpZC1vdmVyLWkyYy50eHQKQEAgLTAsMCArMSwyOCBAQAorKiBISUQgb3ZlciBJMkMgRGV2aWNlLVRyZWUgYmluZGluZ3MKKworSElEIG92ZXIgSTJDIHByb3ZpZGVzIHN1cHBvcnQgZm9yIHZhcmlvdXMgSHVtYW4gSW50ZXJmYWNlIERldmljZXMgb3ZlciB0aGUKK0kyQyBidXMuIFRoZXNlIGRldmljZXMgY2FuIGJlIGZvciBleGFtcGxlIHRvdWNocGFkcywga2V5Ym9hcmRzLCB0b3VjaCBzY3JlZW5zCitvciBzZW5zb3JzLgorCitUaGUgc3BlY2lmaWNhdGlvbiBoYXMgYmVlbiB3cml0dGVuIGJ5IE1pY3Jvc29mdCBhbmQgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBoZXJlOgoraHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvaGFyZHdhcmUvaGg4NTIzODAuYXNweAorCitJZiB0aGlzIGJpbmRpbmcgaXMgdXNlZCwgdGhlIGtlcm5lbCBtb2R1bGUgaTJjLWhpZCB3aWxsIGhhbmRsZSB0aGUgY29tbXVuaWNhdGlvbgord2l0aCB0aGUgZGV2aWNlIGFuZCB0aGUgZ2VuZXJpYyBoaWQgY29yZSBsYXllciB3aWxsIGhhbmRsZSB0aGUgcHJvdG9jb2wuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IG11c3QgYmUgImhpZC1vdmVyLWkyYyIKKy0gcmVnOiBpMmMgc2xhdmUgYWRkcmVzcworLSBoaWQtZGVzY3ItYWRkcjogSElEIGRlc2NyaXB0b3IgYWRkcmVzcworLSBpbnRlcnJ1cHQtcGFyZW50OiB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyCistIGludGVycnVwdHM6IGludGVycnVwdCBsaW5lCisKK0V4YW1wbGU6CisKKwlpMmMtaGlkLWRldkAyYyB7CisJCWNvbXBhdGlibGUgPSAiaGlkLW92ZXItaTJjIjsKKwkJcmVnID0gPDB4MmM+OworCQloaWQtZGVzY3ItYWRkciA9IDwweDAwMjA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncHgzPjsKKwkJaW50ZXJydXB0cyA9IDwzIDI+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvaW14LWtleXBhZC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvaW14LWtleXBhZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmViYWY3ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9pbXgta2V5cGFkLnR4dApAQCAtMCwwICsxLDUzIEBACisqIEZyZWVzY2FsZSBpLk1YIEtleXBhZCBQb3J0KEtQUCkgZGV2aWNlIHRyZWUgYmluZGluZ3MKKworVGhlIEtQUCBpcyBkZXNpZ25lZCB0byBpbnRlcmZhY2Ugd2l0aCBhIGtleXBhZCBtYXRyaXggd2l0aCAyLXBvaW50IGNvbnRhY3QKK29yIDMtcG9pbnQgY29udGFjdCBrZXlzLiBUaGUgS1BQIGlzIGRlc2lnbmVkIHRvIHNpbXBsaWZ5IHRoZSBzb2Z0d2FyZSB0YXNrCitvZiBzY2FubmluZyBhIGtleXBhZCBtYXRyaXguIFRoZSBLUFAgaXMgY2FwYWJsZSBvZiBkZXRlY3RpbmcsIGRlYm91bmNpbmcsCithbmQgZGVjb2Rpbmcgb25lIG9yIG11bHRpcGxlIGtleXMgcHJlc3NlZCBzaW11bHRhbmVvdXNseSBvbiBhIGtleXBhZC4KKworUmVxdWlyZWQgU29DIFNwZWNpZmljIFByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAiZnNsLDxzb2M+LWtwcCIuCisKKy0gcmVnOiBQaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIEtQUCBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorCistIGludGVycnVwdHM6IFRoZSBLUFAgaW50ZXJydXB0IG51bWJlciB0byB0aGUgQ1BVKHMpLgorCistIGNsb2NrczogVGhlIGNsb2NrIHByb3ZpZGVkIGJ5IHRoZSBTb0MgdG8gdGhlIEtQUC4gU29tZSBTb0NzIHVzZSBkdW1teQorY2xvY2soVGhlIGNsb2NrIGZvciB0aGUgS1BQIGlzIHByb3ZpZGVkIGJ5IHRoZSBTb0NzIGF1dG9tYXRpY2FsbHkpLgorCitSZXF1aXJlZCBCb2FyZCBTcGVjaWZpYyBQcm9wZXJ0aWVzOgorLSBwaW5jdHJsLW5hbWVzOiBUaGUgZGVmaW5pdGlvbiBjYW4gYmUgZm91bmQgYXQKK3BpbmN0cmwvcGluY3RybC1iaW5kaW5ncy50eHQuCisKKy0gcGluY3RybC0wOiBUaGUgZGVmaW5pdGlvbiBjYW4gYmUgZm91bmQgYXQKK3BpbmN0cmwvcGluY3RybC1iaW5kaW5ncy50eHQuCisKKy0gbGludXgsa2V5bWFwOiBUaGUgZGVmaW5pdGlvbiBjYW4gYmUgZm91bmQgYXQKK2JpbmRpbmdzL2lucHV0L21hdHJpeC1rZXltYXAudHh0LgorCitFeGFtcGxlOgora3BwOiBrcHBANzNmOTQwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDUxLWtwcCIsICJmc2wsaW14MjEta3BwIjsKKwlyZWcgPSA8MHg3M2Y5NDAwMCAweDQwMDA+OworCWludGVycnVwdHMgPSA8NjA+OworCWNsb2NrcyA9IDwmY2xrcyAwPjsKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCXBpbmN0cmwtMCA9IDwmcGluY3RybF9rcHBfMT47CisJbGludXgsa2V5bWFwID0gPDB4MDAwMDAwNjcJLyogS0VZX1VQICovCisJCQkweDAwMDEwMDZjCS8qIEtFWV9ET1dOICovCisJCQkweDAwMDIwMDcyCS8qIEtFWV9WT0xVTUVET1dOICovCisJCQkweDAwMDMwMDY2CS8qIEtFWV9IT01FICovCisJCQkweDAxMDAwMDZhCS8qIEtFWV9SSUdIVCAqLworCQkJMHgwMTAxMDA2OQkvKiBLRVlfTEVGVCAqLworCQkJMHgwMTAyMDAxYwkvKiBLRVlfRU5URVIgKi8KKwkJCTB4MDEwMzAwNzMJLyogS0VZX1ZPTFVNRVVQICovCisJCQkweDAyMDAwMDQwCS8qIEtFWV9GNiAqLworCQkJMHgwMjAxMDA0MgkvKiBLRVlfRjggKi8KKwkJCTB4MDIwMjAwNDMJLyogS0VZX0Y5ICovCisJCQkweDAyMDMwMDQ0CS8qIEtFWV9GMTAgKi8KKwkJCTB4MDMwMDAwM2IJLyogS0VZX0YxICovCisJCQkweDAzMDEwMDNjCS8qIEtFWV9GMiAqLworCQkJMHgwMzAyMDAzZAkvKiBLRVlfRjMgKi8KKwkJCTB4MDMwMzAwNzQ+OwkvKiBLRVlfUE9XRVIgKi8KK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvaW5wdXQtcmVzZXQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L2lucHV0LXJlc2V0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmIyNjI2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L2lucHV0LXJlc2V0LnR4dApAQCAtMCwwICsxLDMzIEBACitJbnB1dDogc3lzcnEgcmVzZXQgc2VxdWVuY2UKKworQSBzaW1wbGUgYmluZGluZyB0byByZXByZXNlbnQgYSBzZXQgb2Yga2V5cyBhcyBkZXNjcmliZWQgaW4KK2luY2x1ZGUvdWFwaS9saW51eC9pbnB1dC5oLiBUaGlzIGlzIHRvIGNvbW11bmljYXRlIGEgc2VxdWVuY2Ugb2Yga2V5cyB0byB0aGUKK3N5c3JxIGRyaXZlci4gVXBvbiBob2xkaW5nIHRoZSBrZXlzIGZvciBhIHNwZWNpZmllZCBhbW91bnQgb2YgdGltZSAoaWYKK3NwZWNpZmllZCkgdGhlIHN5c3RlbSBpcyBzeW5jJ2VkIGFuZCByZXNldC4KKworS2V5IHNlcXVlbmNlcyBhcmUgZ2xvYmFsIHRvIHRoZSBzeXN0ZW0gYnV0IGFsbCB0aGUga2V5cyBpbiBhIHNldCBtdXN0IGJlIGNvbWluZworZnJvbSB0aGUgc2FtZSBpbnB1dCBkZXZpY2UuCisKK1RoZSAvY2hvc2VuIG5vZGUgc2hvdWxkIGNvbnRhaW4gYSAnbGludXgsc3lzcnEtcmVzZXQtc2VxJyBjaGlsZCBub2RlIHRvIGRlZmluZQorYSBzZXQgb2Yga2V5cy4KKworUmVxdWlyZWQgcHJvcGVydHk6CitzeXNycS1yZXNldC1zZXE6IGFycmF5IG9mIExpbnV4IGtleWNvZGVzLCBvbmUga2V5Y29kZSBwZXIgY2VsbC4KKworT3B0aW9uYWwgcHJvcGVydHk6Cit0aW1lb3V0LW1zOiBkdXJhdGlvbiBrZXlzIG11c3QgYmUgcHJlc3NlZCB0b2dldGhlciBpbiBtaWxsaXNlY29uZHMgYmVmb3JlCitnZW5lcmF0aW5nIGEgc3lzcnEuIElmIG9taXR0ZWQgdGhlIHN5c3RlbSBpcyByZWJvb3RlZCBpbW1lZGlhdGVseSB3aGVuIGEgdmFsaWQKK3NlcXVlbmNlIGhhcyBiZWVuIHJlY29nbml6ZWQuCisKK0V4YW1wbGU6CisKKyBjaG9zZW4geworICAgICAgICAgICAgICAgIGxpbnV4LHN5c3JxLXJlc2V0LXNlcSB7CisgICAgICAgICAgICAgICAgICAgICAgICBrZXlzZXQgPSA8MHgwMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBhPjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQtbXMgPSA8MzAwMD47CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgIH07CisKK1dvdWxkIHJlcHJlc2VudCBLRVlfMiwgS0VZXzMgYW5kIEtFWV85LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L2xwYzMyeHgta2V5LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9scGMzMnh4LWtleS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNmNjJmOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9scGMzMnh4LWtleS50eHQKQEAgLTAsMCArMSwzMSBAQAorTlhQIExQQzMyeHggS2V5IFNjYW4gSW50ZXJmYWNlCisKK1RoaXMgYmluZGluZyBpcyBiYXNlZCBvbiB0aGUgbWF0cml4LWtleW1hcCBiaW5kaW5nIHdpdGggdGhlIGZvbGxvd2luZworY2hhbmdlczoKKworUmVxdWlyZWQgUHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJueHAsbHBjMzIyMC1rZXkiCistIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICByZWdpb24uCistIGludGVycnVwdHM6IFRoZSBpbnRlcnJ1cHQgbnVtYmVyIHRvIHRoZSBjcHUuCistIG54cCxkZWJvdW5jZS1kZWxheS1tczogRGVib3VuY2UgZGVsYXkgaW4gbXMKKy0gbnhwLHNjYW4tZGVsYXktbXM6IFJlcGVhdGVkIHNjYW4gcGVyaW9kIGluIG1zCistIGxpbnV4LGtleW1hcDogdGhlIGtleS1jb2RlIHRvIGJlIHJlcG9ydGVkIHdoZW4gdGhlIGtleSBpcyBwcmVzc2VkCisgIGFuZCByZWxlYXNlZCwgc2VlIGFsc28KKyAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L21hdHJpeC1rZXltYXAudHh0CisKK05vdGU6IGtleXBhZCxudW0tcm93cyBhbmQga2V5cGFkLG51bS1jb2x1bW5zIGFyZSByZXF1aXJlZCwgYW5kIG11c3QgYmUgZXF1YWwKK3NpbmNlIExQQzMyeHggb25seSBzdXBwb3J0cyBzcXVhcmUgbWF0cmljZXMKKworRXhhbXBsZToKKworCWtleUA0MDA1MDAwMCB7CisJCWNvbXBhdGlibGUgPSAibnhwLGxwYzMyMjAta2V5IjsKKwkJcmVnID0gPDB4NDAwNTAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDw1NCAwPjsKKwkJa2V5cGFkLG51bS1yb3dzID0gPDE+OworCQlrZXlwYWQsbnVtLWNvbHVtbnMgPSA8MT47CisJCW54cCxkZWJvdW5jZS1kZWxheS1tcyA9IDwzPjsKKwkJbnhwLHNjYW4tZGVsYXktbXMgPSA8MzQ+OworCQlsaW51eCxrZXltYXAgPSA8MHgwMDAwMDAwMj47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9tYXRyaXgta2V5bWFwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9tYXRyaXgta2V5bWFwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTQ5MTlmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L21hdHJpeC1rZXltYXAudHh0CkBAIC0wLDAgKzEsMjcgQEAKK0Egc2ltcGxlIGNvbW1vbiBiaW5kaW5nIGZvciBtYXRyaXgtY29ubmVjdGVkIGtleSBib2FyZHMuIEN1cnJlbnRseSB0YXJnZXRlZCBhdAorZGVmaW5pbmcgdGhlIGtleXMgaW4gdGhlIHNjb3BlIG9mIGxpbnV4IGtleSBjb2RlcyBzaW5jZSB0aGF0IGlzIGEgc3RhYmxlIGFuZAorc3RhbmRhcmRpemVkIGludGVyZmFjZSBhdCB0aGlzIHRpbWUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGxpbnV4LGtleW1hcDogYW4gYXJyYXkgb2YgcGFja2VkIDEtY2VsbCBlbnRyaWVzIGNvbnRhaW5pbmcgdGhlIGVxdWl2YWxlbnQKKyAgb2Ygcm93LCBjb2x1bW4gYW5kIGxpbnV4IGtleS1jb2RlLiBUaGUgMzItYml0IGJpZyBlbmRpYW4gY2VsbCBpcyBwYWNrZWQKKyAgYXM6CisJcm93IDw8IDI0IHwgY29sdW1uIDw8IDE2IHwga2V5LWNvZGUKKworT3B0aW9uYWwgcHJvcGVydGllczoKK1Byb3BlcnRpZXMgZm9yIHRoZSBudW1iZXIgb2Ygcm93cyBhbmQgY29sdW1ucyBhcmUgb3B0aW9uYWwgYmVjYXVzZSBzb21lCitkcml2ZXJzIHdpbGwgdXNlIGZpeGVkIHZhbHVlcyBmb3IgdGhlc2UuCistIGtleXBhZCxudW0tcm93czogTnVtYmVyIG9mIHJvdyBsaW5lcyBjb25uZWN0ZWQgdG8gdGhlIGtleXBhZCBjb250cm9sbGVyLgorLSBrZXlwYWQsbnVtLWNvbHVtbnM6IE51bWJlciBvZiBjb2x1bW4gbGluZXMgY29ubmVjdGVkIHRvIHRoZSBrZXlwYWQKKyAgY29udHJvbGxlci4KKworU29tZSB1c2VycyBvZiB0aGlzIGJpbmRpbmcgbWlnaHQgY2hvb3NlIHRvIHNwZWNpZnkgc2Vjb25kYXJ5IGtleW1hcHMgZm9yCitjYXNlcyB3aGVyZSB0aGVyZSBpcyBhIG1vZGlmaWVyIGtleSBzdWNoIGFzIGEgRm4ga2V5LiBQcm9wb3NlZCBuYW1lcworZm9yIHNhaWQgcHJvcGVydGllcyBhcmUgImxpbnV4LGZuLWtleW1hcCIgb3Igd2l0aCBhbm90aGVyIGRlc2NyaXB0aXZlCit3b3JkIGZvciB0aGUgbW9kaWZpZXIgb3RoZXIgZnJvbSAiRm4iLgorCitFeGFtcGxlOgorCWxpbnV4LGtleW1hcCA9IDwgMHgwMDAzMDAxMgorCQkJIDB4MDEwMjAwM2EgPjsKKwlrZXlwYWQsbnVtLXJvd3MgPSA8Mj47CisJa2V5cGFkLG51bS1jb2x1bW5zID0gPDg+OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L252aWRpYSx0ZWdyYTIwLWtiYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvbnZpZGlhLHRlZ3JhMjAta2JjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmFhNzI5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L252aWRpYSx0ZWdyYTIwLWtiYy50eHQKQEAgLTAsMCArMSw1NSBAQAorKiBUZWdyYSBrZXlib2FyZCBjb250cm9sbGVyCitUaGUga2V5IGNvbnRyb2xsZXIgaGFzIG1heGltdW0gMjQgcGlucyB0byBtYWtlIG1hdHJpeCBrZXlwYWQuIEFueSBwaW4KK2NhbiBiZSBjb25maWd1cmVkIGFzIHJvdyBvciBjb2x1bW4uIFRoZSBtYXhpbXVtIGNvbHVtbiBwaW4gY2FuIGJlIDgKK2FuZCBtYXhpbXVtIHJvdyBwaW5zIGNhbiBiZSAxNiBmb3IgVGVncmEyMC9UZWdyYTMwLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAibnZpZGlhLHRlZ3JhMjAta2JjIgorLSByZWc6IFJlZ2lzdGVyIGJhc2UgYWRkcmVzcyBvZiBLQkMuCistIGludGVycnVwdHM6IEludGVycnVwdCBudW1iZXIgZm9yIHRoZSBLQkMuCistIG52aWRpYSxrYmMtcm93LXBpbnM6IFRoZSBLQkMgcGlucyB3aGljaCBhcmUgY29uZmlndXJlZCBhcyByb3cuIFRoaXMgaXMgYW4KKyAgYXJyYXkgb2YgcGluIG51bWJlcnMgd2hpY2ggaXMgdXNlZCBhcyByb3dzLgorLSBudmlkaWEsa2JjLWNvbC1waW5zOiBUaGUgS0JDIHBpbnMgd2hpY2ggYXJlIGNvbmZpZ3VyZWQgYXMgY29sdW1uLiBUaGlzIGlzIGFuCisgIGFycmF5IG9mIHBpbiBudW1iZXJzIHdoaWNoIGlzIHVzZWQgYXMgY29sdW1uLgorLSBsaW51eCxrZXltYXA6IFRoZSBrZXltYXAgZm9yIGtleXMgYXMgZGVzY3JpYmVkIGluIHRoZSBiaW5kaW5nIGRvY3VtZW50CisgIGRldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvbWF0cml4LWtleW1hcC50eHQuCistIGNsb2NrczogTXVzdCBjb250YWluIG9uZSBlbnRyeSwgZm9yIHRoZSBtb2R1bGUgY2xvY2suCisgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorLSByZXNldHM6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiByZXNldC1uYW1lcy4KKyAgU2VlIC4uL3Jlc2V0L3Jlc2V0LnR4dCBmb3IgZGV0YWlscy4KKy0gcmVzZXQtbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIC0ga2JjCisKK09wdGlvbmFsIHByb3BlcnRpZXMsIGluIGFkZGl0aW9uIHRvIHRob3NlIHNwZWNpZmllZCBieSB0aGUgc2hhcmVkCittYXRyaXgta2V5Ym9hcmQgYmluZGluZ3M6CisKKy0gbGludXgsZm4ta2V5bWFwOiBhIHNlY29uZCBrZXltYXAsIHNhbWUgc3BlY2lmaWNhdGlvbiBhcyB0aGUKKyAgbWF0cml4LWtleWJvYXJkLWNvbnRyb2xsZXIgc3BlYyBidXQgdG8gYmUgdXNlZCB3aGVuIHRoZSBLRVlfRk4gbW9kaWZpZXIKKyAga2V5IGlzIHByZXNzZWQuCistIG52aWRpYSxkZWJvdW5jZS1kZWxheS1tczogZGVsYXkgaW4gbWlsbGlzZWNvbmRzIHBlciByb3cgc2NhbiBmb3IgZGVib3VuY2luZworLSBudmlkaWEscmVwZWF0LWRlbGF5LW1zOiBkZWxheSBpbiBtaWxsaXNlY29uZHMgYmVmb3JlIHJlcGVhdCBzdGFydHMKKy0gbnZpZGlhLGdob3N0LWZpbHRlcjogZW5hYmxlIGdob3N0IGZpbHRlcmluZyBmb3IgdGhpcyBkZXZpY2UKKy0gd2FrZXVwLXNvdXJjZTogY29uZmlndXJlIGtleWJvYXJkIGFzIGEgd2FrZXVwIHNvdXJjZSBmb3Igc3VzcGVuZC9yZXN1bWUKKwkJIChMZWdhY3kgcHJvcGVydHkgc3VwcG9ydGVkOiAibnZpZGlhLHdha2V1cC1zb3VyY2UiKQorCitFeGFtcGxlOgorCitrZXlib2FyZDoga2V5Ym9hcmQgeworCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMjAta2JjIjsKKwlyZWcgPSA8MHg3MDAwZTIwMCAweDEwMD47CisJaW50ZXJydXB0cyA9IDwwIDg1IDB4MDQ+OworCWNsb2NrcyA9IDwmdGVncmFfY2FyIDM2PjsKKwlyZXNldHMgPSA8JnRlZ3JhX2NhciAzNj47CisJcmVzZXQtbmFtZXMgPSAia2JjIjsKKwludmlkaWEsZ2hvc3QtZmlsdGVyOworCW52aWRpYSxkZWJvdW5jZS1kZWxheS1tcyA9IDw2NDA+OworCW52aWRpYSxrYmMtcm93LXBpbnMgPSA8MCAxIDI+OyAgICAvKiBwaW4gMCwgMSwgMiBhcyByb3dzICovCisJbnZpZGlhLGtiYy1jb2wtcGlucyA9IDwxMSAxMiAxMz47IC8qIHBpbiAxMSwgMTIsIDEzIGFzIGNvbHVtbnMgKi8KKwlsaW51eCxrZXltYXAgPSA8MHgwMDAwMDA3NAorCQkJMHgwMDAxMDA2NworCQkJMHgwMDAyMDA2NgorCQkJMHgwMTAxMDA2OAorCQkJMHgwMjAwMDA2OQorCQkJMHgwMjAxMDA3MAorCQkJMHgwMjAyMDA3MT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L29tYXAta2V5cGFkLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9vbWFwLWtleXBhZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRlZDFjNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9vbWFwLWtleXBhZC50eHQKQEAgLTAsMCArMSwyOCBAQAorKiBUSSdzIEtleXBhZCBDb250cm9sbGVyIGRldmljZSB0cmVlIGJpbmRpbmdzCisKK1RJJ3MgS2V5cGFkIGNvbnRyb2xsZXIgaXMgdXNlZCB0byBpbnRlcmZhY2UgYSBTb0Mgd2l0aCBhIG1hdHJpeC10eXBlCitrZXlwYWQgZGV2aWNlLiBUaGUga2V5cGFkIGNvbnRyb2xsZXIgc3VwcG9ydHMgbXVsdGlwbGUgcm93IGFuZCBjb2x1bW4gbGluZXMuCitBIGtleSBjYW4gYmUgcGxhY2VkIGF0IGVhY2ggaW50ZXJzZWN0aW9uIG9mIGEgdW5pcXVlIHJvdyBhbmQgYSB1bmlxdWUgY29sdW1uLgorVGhlIGtleXBhZCBjb250cm9sbGVyIGNhbiBzZW5zZSBhIGtleS1wcmVzcyBhbmQga2V5LXJlbGVhc2UgYW5kIHJlcG9ydCB0aGUKK2V2ZW50IHVzaW5nIGEgaW50ZXJydXB0IHRvIHRoZSBjcHUuCisKK1RoaXMgYmluZGluZyBpcyBiYXNlZCBvbiB0aGUgbWF0cml4LWtleW1hcCBiaW5kaW5nIHdpdGggdGhlIGZvbGxvd2luZworY2hhbmdlczoKKwora2V5cGFkLG51bS1yb3dzIGFuZCBrZXlwYWQsbnVtLWNvbHVtbnMgYXJlIHJlcXVpcmVkLgorCitSZXF1aXJlZCBTb0MgU3BlY2lmaWMgUHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nCisgICAtICJ0aSxvbWFwNC1rZXlwYWQiOiBGb3IgY29udHJvbGxlcnMgY29tcGF0aWJsZSB3aXRoIG9tYXA0IGtleXBhZAorICAgICAgY29udHJvbGxlci4KKworT3B0aW9uYWwgUHJvcGVydGllcyBzcGVjaWZpYyB0byBsaW51eDoKKy0gbGludXgsa2V5cGFkLW5vLWF1dG9yZXBlYXQ6IGRvIG5vIGVuYWJsZSBhdXRvcmVwZWF0IGZlYXR1cmUuCisKK0V4YW1wbGU6CisJa2V5cGFkQDRhZTFjMDAweworCQljb21wYXRpYmxlID0gInRpLG9tYXA0LWtleXBhZCI7CisJCWtleXBhZCxudW0tcm93cyA9IDwyPjsKKwkJa2V5cGFkLG51bS1jb2x1bW5zID0gPDg+OworCQlsaW51eCxrZXlwYWQtbm8tYXV0b3JlcGVhdDsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3BzMmtleWItbW91c2UtYXBicHMyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9wczJrZXliLW1vdXNlLWFwYnBzMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAyOWM1NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9wczJrZXliLW1vdXNlLWFwYnBzMi50eHQKQEAgLTAsMCArMSwxNiBAQAorQWVyb2ZsZXggR2Fpc2xlciBBUEJQUzIgUFMvMiBDb3JlLCBzdXBwb3J0aW5nIEtleWJvYXJkIG9yIE1vdXNlLgorCitUaGUgQVBCUFMyIFBTLzIgY29yZSBpcyBhdmFpbGFibGUgaW4gdGhlIEdSTElCIFZIREwgSVAgY29yZSBsaWJyYXJ5LgorCitOb3RlOiBJbiB0aGUgb3JkaW5hcnkgZW52aXJvbm1lbnQgZm9yIHRoZSBBUEJQUzIgY29yZSwgYSBMRU9OIFNQQVJDIHN5c3RlbSwKK3RoZXNlIHByb3BlcnRpZXMgYXJlIGJ1aWx0IGZyb20gaW5mb3JtYXRpb24gaW4gdGhlIEFNQkEgcGx1ZyZwbGF5IGFuZCBmcm9tCitib290bG9hZGVyIHNldHRpbmdzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIG5hbWUgOiBTaG91bGQgYmUgIkdBSVNMRVJfQVBCUFMyIiBvciAiMDFfMDYwIgorLSByZWcgOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorLSBpbnRlcnJ1cHRzIDogSW50ZXJydXB0IG51bWJlcnMgZm9yIHRoaXMgZGV2aWNlCisKK0ZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIGxvb2sgaW4gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBHTElCIElQIGNvcmUgbGlicmFyeToKK2h0dHA6Ly93d3cuZ2Fpc2xlci5jb20vcHJvZHVjdHMvZ3JsaWIvZ3JpcC5wZGYKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9wd20tYmVlcGVyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9wd20tYmVlcGVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTMzMmFlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3B3bS1iZWVwZXIudHh0CkBAIC0wLDAgKzEsNyBAQAorKiBQV00gYmVlcGVyIGRldmljZSB0cmVlIGJpbmRpbmdzCisKK1JlZ2lzdGVycyBhIFBXTSBkZXZpY2UgYXMgYmVlcGVyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgInB3bS1iZWVwZXIiCistIHB3bXM6IHBoYW5kbGUgdG8gdGhlIHBoeXNpY2FsIFBXTSBkZXZpY2UKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9weGEyN3gta2V5cGFkLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9weGEyN3gta2V5cGFkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODY3NGY3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3B4YTI3eC1rZXlwYWQudHh0CkBAIC0wLDAgKzEsNjAgQEAKKyogTWFydmVsbCBQWEEgS2V5cGFkIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgUHJvcGVydGllcworLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJtYXJ2ZWxsLHB4YTI3eC1rZXlwYWQiCistIHJlZyA6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistIGludGVycnVwdHMgOiBUaGUgaW50ZXJydXB0IGZvciB0aGUga2V5cGFkIGNvbnRyb2xsZXIKKy0gbWFydmVsbCxkZWJvdW5jZS1pbnRlcnZhbCA6IEhvdyBsb25nIHRpbWUgdGhlIGtleSB3aWxsIGJlCisgIHJlY29nbml6ZWQgd2hlbiBpdCBpcyBwcmVzc2VkLiBJdCBpcyBhIHUzMiB2YWx1ZSwgYW5kIGJpdFszMToxNl0KKyAgaXMgZGVib3VuY2UgaW50ZXJ2YWwgZm9yIGRpcmVjdCBrZXkgYW5kIGJpdFsxNTowXSBpcyBkZWJvdW5jZQorICBpbnRlcnZhbCBmb3IgbWF0cml4IGtleS4gVGhlIHZhbHVlIGlzIGluIGJpbmFyeSBudW1iZXIgb2YgMm1zCisKK09wdGlvbmFsIFByb3BlcnRpZXMgRm9yIE1hdHJpeCBLZXllcworUGxlYXNlIHJlZmVyIHRvIG1hdHJpeC1rZXltYXAudHh0CisKK09wdGlvbmFsIFByb3BlcnRpZXMgZm9yIERpcmVjdCBLZXllcworLSBtYXJ2ZWxsLGRpcmVjdC1rZXktY291bnQgOiBIb3cgbWFueSBkaXJlY3Qga2V5ZXMgYXJlIHVzZWQuCistIG1hcnZlbGwsZGlyZWN0LWtleS1tYXNrIDogVGhlIG1hc2sgaW5kaWNhdGVzIHdoaWNoIGtleWVzCisgIGFyZSB1c2VkLiBJZiBiaXRbWF0gb2YgdGhlIG1hc2sgaXMgc2V0LCB0aGUgZGlyZWN0IGtleSBYCisgIGlzIHVzZWQuCistIG1hcnZlbGwsZGlyZWN0LWtleS1sb3ctYWN0aXZlIDogRGlyZWN0IGtleSBzdGF0dXMgcmVnaXN0ZXIKKyAgdGVsbHMgdGhlIGxldmVsIG9mIHBpbnMgdGhhdCBjb25uZWN0cyB0byB0aGUgZGlyZWN0IGtleWVzLgorICBXaGVuIHRoaXMgcHJvcGVydHkgaXMgc2V0LCBpdCBtZWFucyB0aGF0IHdoZW4gdGhlIHBpbiBsZXZlbAorICBpcyBsb3csIHRoZSBrZXkgaXMgcHJlc3NlZChhY3RpdmUpLgorLSBtYXJ2ZWxsLGRpcmVjdC1rZXktbWFwIDogSXQgaXMgYSB1MTYgYXJyYXkuIEVhY2ggaXRlbSBpbmRpY2F0ZXMKKyAgdGhlIGxpbnV4IGtleS1jb2RlIGZvciB0aGUgZGlyZWN0IGtleS4KKworT3B0aW9uYWwgUHJvcGVydGllcyBGb3IgUm90YXJ5CistIG1hcnZlbGwscm90YXJ5MCA6IEl0IGlzIGEgdTMyIHZhbHVlLiBCaXRbMzE6MTZdIGlzIHRoZQorICBsaW51eCBrZXktY29kZSBmb3Igcm90YXJ5IHVwLiBCaXRbMTU6MF0gaXMgdGhlIGxpbnV4IGtleS1jb2RlCisgIGZvciByb3RhcnkgZG93bi4gSXQgaXMgZm9yIHJvdGFyeSAwLgorLSBtYXJ2ZWxsLHJvdGFyeTEgOiBTYW1lIGFzIG1hcnZlbGwscm90YXJ5MC4gSXQgaXMgZm9yIHJvdGFyeSAxLgorLSBtYXJ2ZWxsLHJvdGFyeS1yZWwta2V5IDogV2hlbiByb3RhcnkgaXMgdXNlZCBmb3IgcmVsYXRpdmUgYXhlcworICBpbiB0aGUgZGV2aWNlLCB0aGUgdmFsdWUgaW5kaWNhdGVzIHRoZSBrZXktY29kZSBmb3IgcmVsYXRpdmUKKyAgYXhlcyBtZWFzdXJlbWVudCBpbiB0aGUgZGV2aWNlLiBJdCBpcyBhIHUzMiB2YWx1ZS4gQml0WzMxOjE2XQorICBpcyBmb3Igcm90YXJ5IDEsIGFuZCBCaXRbMTU6MF0gaXMgZm9yIHJvdGFyeSAwLgorCitFeGFtcGxlczoKKwlrZXlwYWQ6IGtleXBhZEBkNDAxMjAwMCB7CisJCWtleXBhZCxudW0tcm93cyA9IDwzPjsKKwkJa2V5cGFkLG51bS1jb2x1bW5zID0gPDU+OworCQlsaW51eCxrZXltYXAgPSA8MHgwMDAwMDAwZQkvKiBLRVlfQkFDS1NQQUNFICovCisJCQkJMHgwMDAxMDA2YgkvKiBLRVlfRU5EICovCisJCQkJMHgwMDAyMDA2MQkvKiBLRVlfUklHSFRDVFJMICovCisJCQkJMHgwMDAzMDAwYgkvKiBLRVlfMCAqLworCQkJCTB4MDAwNDAwMDIJLyogS0VZXzEgKi8KKwkJCQkweDAxMDAwMDhiCS8qIEtFWV9NRU5VICovCisJCQkJMHgwMTAxMDA2NgkvKiBLRVlfSE9NRSAqLworCQkJCTB4MDEwMjAwZTcJLyogS0VZX1NFTkQgKi8KKwkJCQkweDAxMDMwMDA5CS8qIEtFWV84ICovCisJCQkJMHgwMTA0MDAwYQkvKiBLRVlfOSAqLworCQkJCTB4MDIwMDAxNjAJLyogS0VZX09LICovCisJCQkJMHgwMjAxMDAwMwkvKiBLRVlfMiAqLworCQkJCTB4MDIwMjAwMDQJLyogS0VZXzMgKi8KKwkJCQkweDAyMDMwMDA1CS8qIEtFWV80ICovCisJCQkJMHgwMjA0MDAwNj47CS8qIEtFWV81ICovCisJCW1hcnZlbGwscm90YXJ5MCA9IDwweDAwNmMwMDY3PjsJLyogS0VZX1VQICYgS0VZX0RPV04gKi8KKwkJbWFydmVsbCxkaXJlY3Qta2V5LWNvdW50ID0gPDE+OworCQltYXJ2ZWxsLGRpcmVjdC1rZXktbWFwID0gPDB4MDAxYz47CisJCW1hcnZlbGwsZGVib3VuY2UtaW50ZXJ2YWwgPSA8MHgwMDFlMDAxZT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9xY29tLHBtODk0MS1wd3JrZXkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3Fjb20scG04OTQxLXB3cmtleS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdiZjU1ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9xY29tLHBtODk0MS1wd3JrZXkudHh0CkBAIC0wLDAgKzEsNDMgQEAKK1F1YWxjb21tIFBNODk0MSBQTUlDIFBvd2VyIEtleQorCitQUk9QRVJUSUVTCisKKy0gY29tcGF0aWJsZToKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8c3RyaW5nPgorCURlZmluaXRpb246IG11c3QgYmUgb25lIG9mOgorCQkgICAgInFjb20scG04OTQxLXB3cmtleSIKKworLSByZWc6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOiBiYXNlIGFkZHJlc3Mgb2YgcmVnaXN0ZXJzIGZvciBibG9jaworCistIGludGVycnVwdHM6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOiBrZXkgY2hhbmdlIGludGVycnVwdDsgVGhlIGZvcm1hdCBvZiB0aGUgc3BlY2lmaWVyIGlzCisJCSAgICBkZWZpbmVkIGJ5IHRoZSBiaW5kaW5nIGRvY3VtZW50IGRlc2NyaWJpbmcgdGhlIG5vZGUncworCQkgICAgaW50ZXJydXB0IHBhcmVudC4KKworLSBkZWJvdW5jZToKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8dTMyPgorCURlZmluaXRpb246IHRpbWUgaW4gbWljcm9zZWNvbmRzIHRoYXQga2V5IG11c3QgYmUgcHJlc3NlZCBvciByZWxlYXNlZAorCQkgICAgZm9yIHN0YXRlIGNoYW5nZSBpbnRlcnJ1cHQgdG8gdHJpZ2dlci4KKworLSBiaWFzLXB1bGwtdXA6CisJVXNhZ2U6IG9wdGlvbmFsCisJVmFsdWUgdHlwZTogPGVtcHR5PgorCURlZmluaXRpb246IHByZXNlbmNlIG9mIHRoaXMgcHJvcGVydHkgaW5kaWNhdGVzIHRoYXQgdGhlIEtQRFBXUl9OIHBpbgorCQkgICAgc2hvdWxkIGJlIGNvbmZpZ3VyZWQgZm9yIHB1bGwgdXAuCisKK0VYQU1QTEUKKworCXB3cmtleUA4MDAgeworCQljb21wYXRpYmxlID0gInFjb20scG04OTQxLXB3cmtleSI7CisJCXJlZyA9IDwweDgwMD47CisJCWludGVycnVwdHMgPSA8MHgwIDB4OCAwIElSUV9UWVBFX0VER0VfQk9USD47CisJCWRlYm91bmNlID0gPDE1NjI1PjsKKwkJYmlhcy1wdWxsLXVwOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvcWNvbSxwbTh4eHgta2V5cGFkLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9xY29tLHBtOHh4eC1rZXlwYWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhOWRjNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvcWNvbSxwbTh4eHgta2V5cGFkLnR4dApAQCAtMCwwICsxLDkwIEBACitRdWFsY29tbSBQTTh4eHggUE1JQyBLZXlwYWQKKworUFJPUEVSVElFUworCistIGNvbXBhdGlibGU6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHN0cmluZz4KKwlEZWZpbml0aW9uOiBtdXN0IGJlIG9uZSBvZjoKKwkJICAgICJxY29tLHBtODA1OC1rZXlwYWQiCisJCSAgICAicWNvbSxwbTg5MjEta2V5cGFkIgorCistIHJlZzoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IGFkZHJlc3Mgb2Yga2V5cGFkIGNvbnRyb2wgcmVnaXN0ZXIKKworLSBpbnRlcnJ1cHRzOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisJRGVmaW5pdGlvbjogdGhlIGZpcnN0IGludGVycnVwdCBzcGVjaWZpZXMgdGhlIGtleSBzZW5zZSBpbnRlcnJ1cHQKKwkJICAgIGFuZCB0aGUgc2Vjb25kIGludGVycnVwdCBzcGVjaWZpZXMgdGhlIGtleSBzdHVjayBpbnRlcnJ1cHQuCisJCSAgICBUaGUgZm9ybWF0IG9mIHRoZSBzcGVjaWZpZXIgaXMgZGVmaW5lZCBieSB0aGUgYmluZGluZworCQkgICAgZG9jdW1lbnQgZGVzY3JpYmluZyB0aGUgbm9kZSdzIGludGVycnVwdCBwYXJlbnQuCisKKy0gbGludXgsa2V5bWFwOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisJRGVmaW5pdGlvbjogdGhlIGxpbnV4IGtleW1hcC4gTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4KKwkJICAgIGlucHV0L21hdHJpeC1rZXltYXAudHh0LgorCistIGxpbnV4LGtleXBhZC1uby1hdXRvcmVwZWF0OgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IDxib29sPgorCURlZmluaXRpb246IGRvbid0IGVuYWJsZSBhdXRvcmVwZWF0IGZlYXR1cmUuCisKKy0gd2FrZXVwLXNvdXJjZToKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8Ym9vbD4KKwlEZWZpbml0aW9uOiB1c2UgYW55IGV2ZW50IG9uIGtleXBhZCBhcyB3YWtldXAgZXZlbnQuCisJCSAgICAoTGVnYWN5IHByb3BlcnR5IHN1cHBvcnRlZDogImxpbnV4LGtleXBhZC13YWtldXAiKQorCistIGtleXBhZCxudW0tcm93czoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8dTMyPgorCURlZmluaXRpb246IG51bWJlciBvZiByb3dzIGluIHRoZSBrZXltYXAuIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kCisJCSAgICBpbiBpbnB1dC9tYXRyaXgta2V5bWFwLnR4dC4KKworLSBrZXlwYWQsbnVtLWNvbHVtbnM6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHUzMj4KKwlEZWZpbml0aW9uOiBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUga2V5bWFwLiBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZQorCQkgICAgZm91bmQgaW4gaW5wdXQvbWF0cml4LWtleW1hcC50eHQuCisKKy0gZGVib3VuY2U6CisJVXNhZ2U6IG9wdGlvbmFsCisJVmFsdWUgdHlwZTogPHUzMj4KKwlEZWZpbml0aW9uOiB0aW1lIGluIG1pY3Jvc2Vjb25kcyB0aGF0IGtleSBtdXN0IGJlIHByZXNzZWQgb3IgcmVsZWFzZQorCQkgICAgZm9yIGtleSBzZW5zZSBpbnRlcnJ1cHQgdG8gdHJpZ2dlci4KKworLSBzY2FuLWRlbGF5OgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IDx1MzI+CisJRGVmaW5pdGlvbjogdGltZSBpbiBtaWNyb3NlY29uZHMgdG8gcGF1c2UgYmV0d2VlbiBzdWNjZXNzaXZlIHNjYW5zCisJCSAgICBvZiB0aGUgbWF0cml4IGFycmF5LgorCistIHJvdy1ob2xkOgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IDx1MzI+CisJRGVmaW5pdGlvbjogdGltZSBpbiBuYW5vc2Vjb25kcyB0byBwYXVzZSBiZXR3ZWVuIHNjYW5zIG9mIGVhY2ggcm93IGluCisJCSAgICB0aGUgbWF0cml4IGFycmF5LgorCitFWEFNUExFCisKKwlrZXlwYWRAMTQ4IHsKKwkJY29tcGF0aWJsZSA9ICJxY29tLHBtODkyMS1rZXlwYWQiOworCQlyZWcgPSA8MHgxNDg+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZwbWljaW50Yz47CisJCWludGVycnVwdHMgPSA8NzQgMT4sIDw3NSAxPjsKKwkJbGludXgsa2V5bWFwID0gPAorCQkJTUFUUklYX0tFWSgwLCAwLCBLRVlfVk9MVU1FVVApCisJCQlNQVRSSVhfS0VZKDAsIDEsIEtFWV9WT0xVTUVET1dOKQorCQkJTUFUUklYX0tFWSgwLCAyLCBLRVlfQ0FNRVJBX0ZPQ1VTKQorCQkJTUFUUklYX0tFWSgwLCAzLCBLRVlfQ0FNRVJBKQorCQkJPjsKKwkJa2V5cGFkLG51bS1yb3dzID0gPDE+OworCQlrZXlwYWQsbnVtLWNvbHVtbnMgPSA8NT47CisJCWRlYm91bmNlID0gPDE1PjsKKwkJc2Nhbi1kZWxheSA9IDwzMj47CisJCXJvdy1ob2xkID0gPDkxNTAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3Fjb20scG04eHh4LXB3cmtleS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvcWNvbSxwbTh4eHgtcHdya2V5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODg1MzZjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3Fjb20scG04eHh4LXB3cmtleS50eHQKQEAgLTAsMCArMSw0NiBAQAorUXVhbGNvbW0gUE04eHh4IFBNSUMgUG93ZXIgS2V5CisKK1BST1BFUlRJRVMKKworLSBjb21wYXRpYmxlOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxzdHJpbmc+CisJRGVmaW5pdGlvbjogbXVzdCBiZSBvbmUgb2Y6CisJCSAgICAicWNvbSxwbTgwNTgtcHdya2V5IgorCQkgICAgInFjb20scG04OTIxLXB3cmtleSIKKworLSByZWc6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOiBhZGRyZXNzIG9mIHBvd2VyIGtleSBjb250cm9sIHJlZ2lzdGVyCisKKy0gaW50ZXJydXB0czoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IHRoZSBmaXJzdCBpbnRlcnJ1cHQgc3BlY2lmaWVzIHRoZSBrZXkgcmVsZWFzZSBpbnRlcnJ1cHQKKwkJICAgIGFuZCB0aGUgc2Vjb25kIGludGVycnVwdCBzcGVjaWZpZXMgdGhlIGtleSBwcmVzcyBpbnRlcnJ1cHQuCisJCSAgICBUaGUgZm9ybWF0IG9mIHRoZSBzcGVjaWZpZXIgaXMgZGVmaW5lZCBieSB0aGUgYmluZGluZworCQkgICAgZG9jdW1lbnQgZGVzY3JpYmluZyB0aGUgbm9kZSdzIGludGVycnVwdCBwYXJlbnQuCisKKy0gZGVib3VuY2U6CisJVXNhZ2U6IG9wdGlvbmFsCisJVmFsdWUgdHlwZTogPHUzMj4KKwlEZWZpbml0aW9uOiB0aW1lIGluIG1pY3Jvc2Vjb25kcyB0aGF0IGtleSBtdXN0IGJlIHByZXNzZWQgb3IgcmVsZWFzZQorCQkgICAgZm9yIHN0YXRlIGNoYW5nZSBpbnRlcnJ1cHQgdG8gdHJpZ2dlci4KKworLSBwdWxsLXVwOgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IDxlbXB0eT4KKwlEZWZpbml0aW9uOiBwcmVzZW5jZSBvZiB0aGlzIHByb3BlcnR5IGluZGljYXRlcyB0aGF0IHRoZSBLUERQV1JfTiBwaW4KKwkJICAgIHNob3VsZCBiZSBjb25maWd1cmVkIGZvciBwdWxsIHVwLgorCitFWEFNUExFCisKKwlwd3JrZXlAMWMgeworCQljb21wYXRpYmxlID0gInFjb20scG04OTIxLXB3cmtleSI7CisJCXJlZyA9IDwweDFjPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmcG1pY2ludGM+OworCQlpbnRlcnJ1cHRzID0gPDUwIDE+LCA8NTEgMT47CisJCWRlYm91bmNlID0gPDE1NjI1PjsKKwkJcHVsbC11cDsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3Fjb20scG04eHh4LXZpYi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvcWNvbSxwbTh4eHgtdmliLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWQ0NjdiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3Fjb20scG04eHh4LXZpYi50eHQKQEAgLTAsMCArMSwyMiBAQAorUXVhbGNvbW0gUE04eHh4IFBNSUMgVmlicmF0b3IKKworUFJPUEVSVElFUworCistIGNvbXBhdGlibGU6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHN0cmluZz4KKwlEZWZpbml0aW9uOiBtdXN0IGJlIG9uZSBvZjoKKwkJICAgICJxY29tLHBtODA1OC12aWIiCisJCSAgICAicWNvbSxwbTg5MjEtdmliIgorCistIHJlZzoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IGFkZHJlc3Mgb2YgdmlicmF0aW9uIGNvbnRyb2wgcmVnaXN0ZXIKKworRVhBTVBMRQorCisJdmlicmF0b3JANGEgeworCQljb21wYXRpYmxlID0gInFjb20scG04MDU4LXZpYiI7CisJCXJlZyA9IDwweDRhPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3JlZ3VsYXRvci1oYXB0aWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3JlZ3VsYXRvci1oYXB0aWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlZDFjN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvcmVndWxhdG9yLWhhcHRpYy50eHQKQEAgLTAsMCArMSwyMSBAQAorKiBSZWd1bGF0b3IgSGFwdGljIERldmljZSBUcmVlIEJpbmRpbmdzCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJyZWd1bGF0b3ItaGFwdGljIgorIC0gaGFwdGljLXN1cHBseSA6IFBvd2VyIHN1cHBseSB0byB0aGUgaGFwdGljIG1vdG9yLgorCVsqXSByZWZlciBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3JlZ3VsYXRvci50eHQKKworIC0gbWF4LW1pY3Jvdm9sdCA6IFRoZSBtYXhpbXVtIHZvbHRhZ2UgdmFsdWUgc3VwcGxpZWQgdG8gdGhlIGhhcHRpYyBtb3Rvci4KKwkJW1RoZSB1bml0IG9mIHRoZSB2b2x0YWdlIGlzIGEgbWljcm9dCisKKyAtIG1pbi1taWNyb3ZvbHQgOiBUaGUgbWluaW11bSB2b2x0YWdlIHZhbHVlIHN1cHBsaWVkIHRvIHRoZSBoYXB0aWMgbW90b3IuCisJCVtUaGUgdW5pdCBvZiB0aGUgdm9sdGFnZSBpcyBhIG1pY3JvXQorCitFeGFtcGxlOgorCisJaGFwdGljcyB7CisJCWNvbXBhdGlibGUgPSAicmVndWxhdG9yLWhhcHRpYyI7CisJCWhhcHRpYy1zdXBwbHkgPSA8Jm1vdG9yX3JlZ3VsYXRvcj47CisJCW1heC1taWNyb3ZvbHQgPSA8MjcwMDAwMD47CisJCW1pbi1taWNyb3ZvbHQgPSA8MTEwMDAwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9yb3RhcnktZW5jb2Rlci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvcm90YXJ5LWVuY29kZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlOTljYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvcm90YXJ5LWVuY29kZXIudHh0CkBAIC0wLDAgKzEsNDYgQEAKK1JvdGFyeSBlbmNvZGVyIERUIGJpbmRpbmdzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGdwaW9zOiBhIHNwZWMgZm9yIHR3byBHUElPcyB0byBiZSB1c2VkCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGxpbnV4LGF4aXM6IHRoZSBpbnB1dCBzdWJzeXN0ZW0gYXhpcyB0byBtYXAgdG8gdGhpcyByb3RhcnkgZW5jb2Rlci4KKyAgRGVmYXVsdHMgdG8gMCAoQUJTX1ggLyBSRUxfWCkKKy0gcm90YXJ5LWVuY29kZXIsc3RlcHM6IE51bWJlciBvZiBzdGVwcyBpbiBhIGZ1bGwgdHVybmFyb3VuZCBvZiB0aGUKKyAgZW5jb2Rlci4gT25seSByZWxldmFudCBmb3IgYWJzb2x1dGUgYXhpcy4gRGVmYXVsdHMgdG8gMjQgd2hpY2ggaXMgYQorICB0eXBpY2FsIHZhbHVlIGZvciBzdWNoIGRldmljZXMuCistIHJvdGFyeS1lbmNvZGVyLHJlbGF0aXZlLWF4aXM6IHJlZ2lzdGVyIGEgcmVsYXRpdmUgYXhpcyByYXRoZXIgdGhhbiBhbgorICBhYnNvbHV0ZSBvbmUuIFJlbGF0aXZlIGF4aXMgd2lsbCBvbmx5IGdlbmVyYXRlICsxLy0xIGV2ZW50cyBvbiB0aGUgaW5wdXQKKyAgZGV2aWNlLCBoZW5jZSBubyBzdGVwcyBuZWVkIHRvIGJlIHBhc3NlZC4KKy0gcm90YXJ5LWVuY29kZXIscm9sbG92ZXI6IEF1dG9tYXRpYyByb2xsb3ZlIHdoZW4gdGhlIHJvdGFyeSB2YWx1ZSBiZWNvbWVzCisgIGdyZWF0ZXIgdGhhbiB0aGUgc3BlY2lmaWVkIHN0ZXBzIG9yIHNtYWxsZXIgdGhhbiAwLiBGb3IgYWJzb2x1dGUgYXhpcyBvbmx5LgorLSByb3RhcnktZW5jb2RlcixzdGVwcy1wZXItcGVyaW9kOiBOdW1iZXIgb2Ygc3RlcHMgKHN0YWJsZSBzdGF0ZXMpIHBlciBwZXJpb2QuCisgIFRoZSB2YWx1ZXMgaGF2ZSB0aGUgZm9sbG93aW5nIG1lYW5pbmc6CisgIDE6IEZ1bGwtcGVyaW9kIG1vZGUgKGRlZmF1bHQpCisgIDI6IEhhbGYtcGVyaW9kIG1vZGUKKyAgNDogUXVhcnRlci1wZXJpb2QgbW9kZQorLSB3YWtldXAtc291cmNlOiBCb29sZWFuLCByb3RhcnkgZW5jb2RlciBjYW4gd2FrZSB1cCB0aGUgc3lzdGVtLgorCitEZXByZWNhdGVkIHByb3BlcnRpZXM6CistIHJvdGFyeS1lbmNvZGVyLGhhbGYtcGVyaW9kOiBNYWtlcyB0aGUgZHJpdmVyIHdvcmsgb24gaGFsZi1wZXJpb2QgbW9kZS4KKyAgVGhpcyBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCBhICdzdGVwcy1wZXItcGVyaW9kICcgdmFsdWUgc2hvdWxkCisgIGJlIHVzZWQsIHN1Y2ggYXMgInJvdGFyeS1lbmNvZGVyLHN0ZXBzLXBlci1wZXJpb2QgPSA8Mj4iLgorCitTZWUgRG9jdW1lbnRhdGlvbi9pbnB1dC9yb3RhcnktZW5jb2Rlci50eHQgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKK0V4YW1wbGU6CisKKwkJcm90YXJ5QDAgeworCQkJY29tcGF0aWJsZSA9ICJyb3RhcnktZW5jb2RlciI7CisJCQlncGlvcyA9IDwmZ3BpbyAxOSAxPiwgPCZncGlvIDIwIDA+OyAvKiBHUElPMTkgaXMgaW52ZXJ0ZWQgKi8KKwkJCWxpbnV4LGF4aXMgPSA8MD47IC8qIFJFTF9YICovCisJCQlyb3RhcnktZW5jb2RlcixyZWxhdGl2ZS1heGlzOworCQl9OworCisJCXJvdGFyeUAxIHsKKwkJCWNvbXBhdGlibGUgPSAicm90YXJ5LWVuY29kZXIiOworCQkJZ3Bpb3MgPSA8JmdwaW8gMjEgMD4sIDwmZ3BpbyAyMiAwPjsKKwkJCWxpbnV4LGF4aXMgPSA8MT47IC8qIEFCU19ZICovCisJCQlyb3RhcnktZW5jb2RlcixzdGVwcyA9IDwyND47CisJCQlyb3RhcnktZW5jb2Rlcixyb2xsb3ZlcjsKKwkJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9zYW1zdW5nLWtleXBhZC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvc2Ftc3VuZy1rZXlwYWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMDVlNzQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvc2Ftc3VuZy1rZXlwYWQudHh0CkBAIC0wLDAgKzEsNzcgQEAKKyogU2Ftc3VuZydzIEtleXBhZCBDb250cm9sbGVyIGRldmljZSB0cmVlIGJpbmRpbmdzCisKK1NhbXN1bmcncyBLZXlwYWQgY29udHJvbGxlciBpcyB1c2VkIHRvIGludGVyZmFjZSBhIFNvQyB3aXRoIGEgbWF0cml4LXR5cGUKK2tleXBhZCBkZXZpY2UuIFRoZSBrZXlwYWQgY29udHJvbGxlciBzdXBwb3J0cyBtdWx0aXBsZSByb3cgYW5kIGNvbHVtbiBsaW5lcy4KK0Ega2V5IGNhbiBiZSBwbGFjZWQgYXQgZWFjaCBpbnRlcnNlY3Rpb24gb2YgYSB1bmlxdWUgcm93IGFuZCBhIHVuaXF1ZSBjb2x1bW4uCitUaGUga2V5cGFkIGNvbnRyb2xsZXIgY2FuIHNlbnNlIGEga2V5LXByZXNzIGFuZCBrZXktcmVsZWFzZSBhbmQgcmVwb3J0IHRoZQorZXZlbnQgdXNpbmcgYSBpbnRlcnJ1cHQgdG8gdGhlIGNwdS4KKworUmVxdWlyZWQgU29DIFNwZWNpZmljIFByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZworICAtICJzYW1zdW5nLHMzYzY0MTAta2V5cGFkIjogRm9yIGNvbnRyb2xsZXJzIGNvbXBhdGlibGUgd2l0aCBzM2M2NDEwIGtleXBhZAorICAgIGNvbnRyb2xsZXIuCisgIC0gInNhbXN1bmcsczVwdjIxMC1rZXlwYWQiOiBGb3IgY29udHJvbGxlcnMgY29tcGF0aWJsZSB3aXRoIHM1cHYyMTAga2V5cGFkCisgICAgY29udHJvbGxlci4KKworLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorCistIGludGVycnVwdHM6IFRoZSBpbnRlcnJ1cHQgbnVtYmVyIHRvIHRoZSBjcHUuCisKK1JlcXVpcmVkIEJvYXJkIFNwZWNpZmljIFByb3BlcnRpZXM6CistIHNhbXN1bmcsa2V5cGFkLW51bS1yb3dzOiBOdW1iZXIgb2Ygcm93IGxpbmVzIGNvbm5lY3RlZCB0byB0aGUga2V5cGFkCisgIGNvbnRyb2xsZXIuCisKKy0gc2Ftc3VuZyxrZXlwYWQtbnVtLWNvbHVtbnM6IE51bWJlciBvZiBjb2x1bW4gbGluZXMgY29ubmVjdGVkIHRvIHRoZQorICBrZXlwYWQgY29udHJvbGxlci4KKworLSBLZXlzIHJlcHJlc2VudGVkIGFzIGNoaWxkIG5vZGVzOiBFYWNoIGtleSBjb25uZWN0ZWQgdG8gdGhlIGtleXBhZAorICBjb250cm9sbGVyIGlzIHJlcHJlc2VudGVkIGFzIGEgY2hpbGQgbm9kZSB0byB0aGUga2V5cGFkIGNvbnRyb2xsZXIKKyAgZGV2aWNlIG5vZGUgYW5kIHNob3VsZCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcy4KKyAgLSBrZXlwYWQscm93OiB0aGUgcm93IG51bWJlciB0byB3aGljaCB0aGUga2V5IGlzIGNvbm5lY3RlZC4KKyAgLSBrZXlwYWQsY29sdW1uOiB0aGUgY29sdW1uIG51bWJlciB0byB3aGljaCB0aGUga2V5IGlzIGNvbm5lY3RlZC4KKyAgLSBsaW51eCxjb2RlOiB0aGUga2V5LWNvZGUgdG8gYmUgcmVwb3J0ZWQgd2hlbiB0aGUga2V5IGlzIHByZXNzZWQKKyAgICBhbmQgcmVsZWFzZWQuCisKKy0gcGluY3RybC0wOiBTaG91bGQgc3BlY2lmeSBwaW4gY29udHJvbCBncm91cHMgdXNlZCBmb3IgdGhpcyBjb250cm9sbGVyLgorLSBwaW5jdHJsLW5hbWVzOiBTaG91bGQgY29udGFpbiBvbmx5IG9uZSB2YWx1ZSAtICJkZWZhdWx0Ii4KKworT3B0aW9uYWwgUHJvcGVydGllczoKKy0gd2FrZXVwLXNvdXJjZTogdXNlIGFueSBldmVudCBvbiBrZXlwYWQgYXMgd2FrZXVwIGV2ZW50LgorCQkgKExlZ2FjeSBwcm9wZXJ0eSBzdXBwb3J0ZWQ6ICJsaW51eCxpbnB1dC13YWtldXAiKQorCitPcHRpb25hbCBQcm9wZXJ0aWVzIHNwZWNpZmljIHRvIGxpbnV4OgorLSBsaW51eCxrZXlwYWQtbm8tYXV0b3JlcGVhdDogZG8gbm8gZW5hYmxlIGF1dG9yZXBlYXQgZmVhdHVyZS4KKworCitFeGFtcGxlOgorCWtleXBhZEAxMDBBMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxzNXB2MjEwLWtleXBhZCI7CisJCXJlZyA9IDwweDEwMEEwMDAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDwxNzM+OworCQlzYW1zdW5nLGtleXBhZC1udW0tcm93cyA9IDwyPjsKKwkJc2Ftc3VuZyxrZXlwYWQtbnVtLWNvbHVtbnMgPSA8OD47CisJCWxpbnV4LGlucHV0LW5vLWF1dG9yZXBlYXQ7CisJCXdha2V1cC1zb3VyY2U7CisKKwkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwkJcGluY3RybC0wID0gPCZrZXlwYWRfcm93cyAma2V5cGFkX2NvbHVtbnM+OworCisJCWtleV8xIHsKKwkJCWtleXBhZCxyb3cgPSA8MD47CisJCQlrZXlwYWQsY29sdW1uID0gPDM+OworCQkJbGludXgsY29kZSA9IDwyPjsKKwkJfTsKKworCQlrZXlfMiB7CisJCQlrZXlwYWQscm93ID0gPDA+OworCQkJa2V5cGFkLGNvbHVtbiA9IDw0PjsKKwkJCWxpbnV4LGNvZGUgPSA8Mz47CisJCX07CisKKwkJa2V5XzMgeworCQkJa2V5cGFkLHJvdyA9IDwwPjsKKwkJCWtleXBhZCxjb2x1bW4gPSA8NT47CisJCQlsaW51eCxjb2RlID0gPDQ+OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvc252cy1wd3JrZXkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3NudnMtcHdya2V5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGMxNDI1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3NudnMtcHdya2V5LnR4dApAQCAtMCwwICsxIEBACitTZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NyeXB0by9mc2wtc2VjNC50eHQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9zcGVhci1rZXlib2FyZC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvc3BlYXIta2V5Ym9hcmQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhODQ2ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvc3BlYXIta2V5Ym9hcmQudHh0CkBAIC0wLDAgKzEsMjAgQEAKKyogU1BFQXIga2V5Ym9hcmQgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAic3Qsc3BlYXIzMDAta2JkIgorCitPcHRpb25hbCBwcm9wZXJ0aWVzLCBpbiBhZGRpdGlvbiB0byB0aG9zZSBzcGVjaWZpZWQgYnkgdGhlIHNoYXJlZAorbWF0cml4LWtleWJvYXJkIGJpbmRpbmdzOgorLSBhdXRvcmVwZWF0OiBib29sOiBlbmFibGVzIGtleSBhdXRvcmVwZWF0CistIHN0LG1vZGU6IGtleWJvYXJkIG1vZGU6IDAgLSA5eDksIDEgLSA2eDYsIDIgLSAyeDIKKworRXhhbXBsZToKKwora2JkQGZjNDAwMDAwIHsKKwljb21wYXRpYmxlID0gInN0LHNwZWFyMzAwLWtiZCI7CisJcmVnID0gPDB4ZmM0MDAwMDAgMHgxMDA+OworCWxpbnV4LGtleW1hcCA9IDwgMHgwMDAzMDAxMgorCQkJIDB4MDEwMjAwM2EgPjsKKwlhdXRvcmVwZWF0OworCXN0LG1vZGUgPSA8MD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3N0LWtleXNjYW4udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3N0LWtleXNjYW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxZWI0MjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvc3Qta2V5c2Nhbi50eHQKQEAgLTAsMCArMSw2MCBAQAorKiBTVCBLZXlzY2FuIGNvbnRyb2xsZXIgRGV2aWNlIFRyZWUgYmluZGluZ3MKKworVGhlIFNUIGtleXNjYW4gY29udHJvbGxlciBEZXZpY2UgVHJlZSBiaW5kaW5nIGlzIGJhc2VkIG9uIHRoZQorbWF0cml4LWtleW1hcC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInN0LHN0aS1rZXlzY2FuIgorCistIHJlZzogUmVnaXN0ZXIgYmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIHN0LWtleXNjYW4gY29udHJvbGxlci4KKworLSBpbnRlcnJ1cHRzOiBJbnRlcnJ1cHQgbnVtYmVyIGZvciB0aGUgc3Qta2V5c2NhbiBjb250cm9sbGVyLgorCistIGNsb2NrczogTXVzdCBjb250YWluIG9uZSBlbnRyeSwgZm9yIHRoZSBtb2R1bGUgY2xvY2suCisgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorCistIHBpbmN0cmw6IFNob3VsZCBzcGVjaWZ5IHBpbiBjb250cm9sIGdyb3VwcyB1c2VkIGZvciB0aGlzIGNvbnRyb2xsZXIuCisgIFNlZSAuLi9waW5jdHJsL3BpbmN0cmwtYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorCistIGxpbnV4LGtleW1hcDogVGhlIGtleW1hcCBmb3Iga2V5cyBhcyBkZXNjcmliZWQgaW4gdGhlIGJpbmRpbmcgZG9jdW1lbnQKKyAgZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9tYXRyaXgta2V5bWFwLnR4dC4KKworLSBrZXlwYWQsbnVtLXJvd3M6IE51bWJlciBvZiByb3cgbGluZXMgY29ubmVjdGVkIHRvIHRoZSBrZXlwYWQgY29udHJvbGxlci4KKworLSBrZXlwYWQsbnVtLWNvbHVtbnM6IE51bWJlciBvZiBjb2x1bW4gbGluZXMgY29ubmVjdGVkIHRvIHRoZSBrZXlwYWQKKyAgY29udHJvbGxlci4KKworT3B0aW9uYWwgcHJvcGVydHk6CistIHN0LGRlYm91bmNlX3VzOiBEZWJvdW5jaW5nIGludGVydmFsIHRpbWUgaW4gbWljcm9zZWNvbmRzCisKK0V4YW1wbGU6CisKK2tleXNjYW46IGtleXNjYW5AZmU0YjAwMDAgeworCWNvbXBhdGlibGUgPSAic3Qsc3RpLWtleXNjYW4iOworCXJlZyA9IDwweGZlNGIwMDAwIDB4MjAwMD47CisJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDIxMiBJUlFfVFlQRV9OT05FPjsKKwljbG9ja3MJPSA8JkNMS19TWVNJTj47CisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfa2V5c2Nhbj47CisKKwlrZXlwYWQsbnVtLXJvd3MgPSA8ND47CisJa2V5cGFkLG51bS1jb2x1bW5zID0gPDQ+OworCXN0LGRlYm91bmNlX3VzID0gPDUwMDA+OworCisJbGludXgsa2V5bWFwID0gPCBNQVRSSVhfS0VZKDB4MDAsIDB4MDAsIEtFWV9GMTMpCisJCQkgTUFUUklYX0tFWSgweDAwLCAweDAxLCBLRVlfRjkpCisJCQkgTUFUUklYX0tFWSgweDAwLCAweDAyLCBLRVlfRjUpCisJCQkgTUFUUklYX0tFWSgweDAwLCAweDAzLCBLRVlfRjEpCisJCQkgTUFUUklYX0tFWSgweDAxLCAweDAwLCBLRVlfRjE0KQorCQkJIE1BVFJJWF9LRVkoMHgwMSwgMHgwMSwgS0VZX0YxMCkKKwkJCSBNQVRSSVhfS0VZKDB4MDEsIDB4MDIsIEtFWV9GNikKKwkJCSBNQVRSSVhfS0VZKDB4MDEsIDB4MDMsIEtFWV9GMikKKwkJCSBNQVRSSVhfS0VZKDB4MDIsIDB4MDAsIEtFWV9GMTUpCisJCQkgTUFUUklYX0tFWSgweDAyLCAweDAxLCBLRVlfRjExKQorCQkJIE1BVFJJWF9LRVkoMHgwMiwgMHgwMiwgS0VZX0Y3KQorCQkJIE1BVFJJWF9LRVkoMHgwMiwgMHgwMywgS0VZX0YzKQorCQkJIE1BVFJJWF9LRVkoMHgwMywgMHgwMCwgS0VZX0YxNikKKwkJCSBNQVRSSVhfS0VZKDB4MDMsIDB4MDEsIEtFWV9GMTIpCisJCQkgTUFUUklYX0tFWSgweDAzLCAweDAyLCBLRVlfRjgpCisJCQkgTUFUUklYX0tFWSgweDAzLCAweDAzLCBLRVlfRjQpID47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9zdG1wZS1rZXlwYWQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3N0bXBlLWtleXBhZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJiYjc3MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9zdG1wZS1rZXlwYWQudHh0CkBAIC0wLDAgKzEsNDEgQEAKKyogU1RNUEUgS2V5cGFkCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlICAgICAgICAgICAgICAgOiAic3Qsc3RtcGUta2V5cGFkIgorIC0gbGludXgsa2V5bWFwICAgICAgICAgICAgIDogU2VlIC4vbWF0cml4LWtleW1hcC50eHQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAtIGRlYm91bmNlLWludGVydmFsICAgICAgICA6IERlYm91bmNpbmcgaW50ZXJ2YWwgdGltZSBpbiBtaWxsaXNlY29uZHMKKyAtIHN0LHNjYW4tY291bnQgICAgICAgICAgICA6IFNjYW5uaW5nIGN5Y2xlcyBlbGFwc2VkIGJlZm9yZSBrZXkgZGF0YSBpcyB1cGRhdGVkCisgLSBzdCxuby1hdXRvcmVwZWF0ICAgICAgICAgOiBJZiBzcGVjaWZpZWQgZGV2aWNlIHdpbGwgbm90IGF1dG9yZXBlYXQKKyAtIGtleXBhZCxudW0tcm93cyAgICAgICAgICA6IFNlZSAuL21hdHJpeC1rZXltYXAudHh0CisgLSBrZXlwYWQsbnVtLWNvbHVtbnMgICAgICAgOiBTZWUgLi9tYXRyaXgta2V5bWFwLnR4dAorCitFeGFtcGxlOgorCisJc3RtcGVfa2V5cGFkIHsKKwkJY29tcGF0aWJsZSA9ICJzdCxzdG1wZS1rZXlwYWQiOworCisJCWRlYm91bmNlLWludGVydmFsID0gPDY0PjsKKwkJc3Qsc2Nhbi1jb3VudCA9IDw4PjsKKwkJc3Qsbm8tYXV0b3JlcGVhdDsKKworCQlsaW51eCxrZXltYXAgPSA8MHgyMDUwMDZiCisJCQkJMHg0MDEwMDc0CisJCQkJMHgzMDUwMDcyCisJCQkJMHgxMDMwMDA0CisJCQkJMHg1MDIwMDZhCisJCQkJMHg1MDAwMDBhCisJCQkJMHg1MDA4YgorCQkJCTB4NzA2MDAxYworCQkJCTB4NDA1MDAwYgorCQkJCTB4NjA3MDAwMworCQkJCTB4MzA0MDA2NworCQkJCTB4MzAzMDA2YworCQkJCTB4NjA0MDBlNworCQkJCTB4NjAyMDA5ZQorCQkJCTB4NDAyMDA3MworCQkJCTB4NTA1MDAwMgorCQkJCTB4NDAzMDA2OQorCQkJCTB4MzAyMDAwOD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9zdW40aS1scmFkYy1rZXlzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9zdW40aS1scmFkYy1rZXlzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzU3ZTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3N1bjRpLWxyYWRjLWtleXMudHh0CkBAIC0wLDAgKzEsNjIgQEAKK0FsbHdpbm5lciBzdW40aSBsb3cgcmVzIGFkYyBhdHRhY2hlZCB0YWJsZXQga2V5cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiAiYWxsd2lubmVyLHN1bjRpLWExMC1scmFkYy1rZXlzIgorIC0gcmVnOiBtbWlvIGFkZHJlc3MgcmFuZ2Ugb2YgdGhlIGNoaXAKKyAtIGludGVycnVwdHM6IGludGVycnVwdCB0byB3aGljaCB0aGUgY2hpcCBpcyBjb25uZWN0ZWQKKyAtIHZyZWYtc3VwcGx5OiBwb3dlcnN1cHBseSBmb3IgdGhlIGxyYWRjIHJlZmVyZW5jZSB2b2x0YWdlCisKK0VhY2gga2V5IGlzIHJlcHJlc2VudGVkIGFzIGEgc3ViLW5vZGUgb2YgImFsbHdpbm5lcixzdW40aS1hMTAtbHJhZGMta2V5cyI6CisKK1JlcXVpcmVkIHN1Ym5vZGUtcHJvcGVydGllczoKKwktIGxhYmVsOiBEZXNjcmlwdGl2ZSBuYW1lIG9mIHRoZSBrZXkuCisJLSBsaW51eCxjb2RlOiBLZXljb2RlIHRvIGVtaXQuCisJLSBjaGFubmVsOiBDaGFubmVsIHRoaXMga2V5IGlzIGF0dGFjaGVkIHRvLCBtdXN0IGJlIDAgb3IgMS4KKwktIHZvbHRhZ2U6IFZvbHRhZ2UgaW4gwrVWIGF0IGxyYWRjIGlucHV0IHdoZW4gdGhpcyBrZXkgaXMgcHJlc3NlZC4KKworRXhhbXBsZToKKworI2luY2x1ZGUgPGR0LWJpbmRpbmdzL2lucHV0L2lucHV0Lmg+CisKKwlscmFkYzogbHJhZGNAMDFjMjI4MDAgeworCQljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW40aS1hMTAtbHJhZGMta2V5cyI7CisJCXJlZyA9IDwweDAxYzIyODAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDwzMT47CisJCXZyZWYtc3VwcGx5ID0gPCZyZWdfdmNjM3YwPjsKKworCQlidXR0b25AMTkxIHsKKwkJCWxhYmVsID0gIlZvbHVtZSBVcCI7CisJCQlsaW51eCxjb2RlID0gPEtFWV9WT0xVTUVVUD47CisJCQljaGFubmVsID0gPDA+OworCQkJdm9sdGFnZSA9IDwxOTEyNzQ+OworCQl9OworCisJCWJ1dHRvbkAzOTIgeworCQkJbGFiZWwgPSAiVm9sdW1lIERvd24iOworCQkJbGludXgsY29kZSA9IDxLRVlfVk9MVU1FRE9XTj47CisJCQljaGFubmVsID0gPDA+OworCQkJdm9sdGFnZSA9IDwzOTI2NDQ+OworCQl9OworCisJCWJ1dHRvbkA2MDEgeworCQkJbGFiZWwgPSAiTWVudSI7CisJCQlsaW51eCxjb2RlID0gPEtFWV9NRU5VPjsKKwkJCWNoYW5uZWwgPSA8MD47CisJCQl2b2x0YWdlID0gPDYwMTE1MT47CisJCX07CisKKwkJYnV0dG9uQDc5NSB7CisJCQlsYWJlbCA9ICJFbnRlciI7CisJCQlsaW51eCxjb2RlID0gPEtFWV9FTlRFUj47CisJCQljaGFubmVsID0gPDA+OworCQkJdm9sdGFnZSA9IDw3OTUwOTA+OworCQl9OworCisJCWJ1dHRvbkA5ODcgeworCQkJbGFiZWwgPSAiSG9tZSI7CisJCQlsaW51eCxjb2RlID0gPEtFWV9IT01FUEFHRT47CisJCQljaGFubmVsID0gPDA+OworCQkJdm9sdGFnZSA9IDw5ODczODc+OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdGNhODQxOF9rZXlwYWQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RjYTg0MThfa2V5cGFkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTUxODUwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RjYTg0MThfa2V5cGFkLnR4dApAQCAtMCwwICsxLDEwIEBACitUaGlzIGJpbmRpbmcgaXMgYmFzZWQgb24gdGhlIG1hdHJpeC1rZXltYXAgYmluZGluZyB3aXRoIHRoZSBmb2xsb3dpbmcKK2NoYW5nZXM6CisKK2tleXBhZCxudW0tcm93cyBhbmQga2V5cGFkLG51bS1jb2x1bW5zIGFyZSByZXF1aXJlZC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInRpLHRjYTg0MTgiCistIHJlZzogdGhlIEkyQyBhZGRyZXNzCistIGludGVycnVwdHM6IElSUSBsaW5lIG51bWJlciwgc2hvdWxkIHRyaWdnZXIgb24gZmFsbGluZyBlZGdlCistIGxpbnV4LGtleW1hcDogS2V5cyBkZWZpbml0aW9ucywgc2VlIGtleXBhZC1tYXRyaXguCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdGksZHJ2MjYweC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdGksZHJ2MjYweC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWUwOWM4ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90aSxkcnYyNjB4LnR4dApAQCAtMCwwICsxLDUwIEBACisqIFRleGFzIEluc3RydW1lbnRzIC0gZHJ2MjYweCBIYXB0aWNzIGRyaXZlciBmYW1pbHkKKworUmVxdWlyZWQgcHJvcGVydGllczoKKwktIGNvbXBhdGlibGUgLSBPbmUgb2Y6CisJCSJ0aSxkcnYyNjA0IiAtIERSVjI2MDQKKwkJInRpLGRydjI2MDUiIC0gRFJWMjYwNQorCQkidGksZHJ2MjYwNWwiIC0gRFJWMjYwNUwKKwktIHJlZyAtICBJMkMgc2xhdmUgYWRkcmVzcworCS0gdmJhdC1zdXBwbHkgLSBSZXF1aXJlZCBzdXBwbHkgcmVndWxhdG9yCisJLSBtb2RlIC0gUG93ZXIgdXAgbW9kZSBvZiB0aGUgY2hpcCAoZGVmaW5lZCBpbiBpbmNsdWRlL2R0LWJpbmRpbmdzL2lucHV0L3RpLWRydjI2MHguaCkKKwkJRFJWMjYwWF9MUkFfTU9ERSAtIExpbmVhciBSZXNvbmFuY2UgQWN0dWF0b3IgbW9kZSAoUGllem9lbGVjdHJpYykKKwkJRFJWMjYwWF9MUkFfTk9fQ0FMX01PREUgLSBUaGlzIGlzIGEgTFJBIE1vZGUgYnV0IHRoZXJlIGlzIG5vIGNhbGlicmF0aW9uCisJCQkJc2VxdWVuY2UgZHVyaW5nIGluaXQuICBBbmQgdGhlIGRldmljZSBpcyBjb25maWd1cmVkIGZvciByZWFsCisJCQkJdGltZSBwbGF5YmFjayBtb2RlIChSVFAgbW9kZSkuCisJCURSVjI2MFhfRVJNX01PREUgLSBFY2NlbnRyaWMgUm90YXRpbmcgTWFzcyBtb2RlIChSb3RhcnkgdmlicmF0b3IpCisJLSBsaWJyYXJ5LXNlbCAtIFRoZXNlIGFyZSBST00gYmFzZWQgd2F2ZWZvcm1zIHByZS1wcm9ncmFtbWVkIGludG8gdGhlIElDLgorCQkJCVRoaXMgc2hvdWxkIGJlIHNldCB0byBzZXQgdGhlIGxpYnJhcnkgdG8gdXNlIGF0IHBvd2VyIHVwLgorCQkJCShkZWZpbmVkIGluIGluY2x1ZGUvZHQtYmluZGluZ3MvaW5wdXQvdGktZHJ2MjYweC5oKQorCQlEUlYyNjBYX0xJQl9FTVBUWSAtIERvIG5vdCB1c2UgYSBwcmUtcHJvZ3JhbW1lZCBsaWJyYXJ5CisJCURSVjI2MFhfRVJNX0xJQl9BIC0gUHJlLXByb2dyYW1tZWQgTGlicmFyeQorCQlEUlYyNjBYX0VSTV9MSUJfQiAtIFByZS1wcm9ncmFtbWVkIExpYnJhcnkKKwkJRFJWMjYwWF9FUk1fTElCX0MgLSBQcmUtcHJvZ3JhbW1lZCBMaWJyYXJ5CisJCURSVjI2MFhfRVJNX0xJQl9EIC0gUHJlLXByb2dyYW1tZWQgTGlicmFyeQorCQlEUlYyNjBYX0VSTV9MSUJfRSAtIFByZS1wcm9ncmFtbWVkIExpYnJhcnkKKwkJRFJWMjYwWF9FUk1fTElCX0YgLSBQcmUtcHJvZ3JhbW1lZCBMaWJyYXJ5CisJCURSVjI2MFhfTElCX0xSQSAtIFByZS1wcm9ncmFtbWVkIExSQSBMaWJyYXJ5CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisJLSBlbmFibGUtZ3BpbyAtIGdwaW8gcGluIHRvIGVuYWJsZS9kaXNhYmxlIHRoZSBkZXZpY2UuCisJLSB2aWItcmF0ZWQtbXYgLSBUaGUgcmF0ZWQgdm9sdGFnZSBvZiB0aGUgYWN0dWF0b3IgaW4gbWlsbGl2b2x0cy4KKwkJCSAgSWYgdGhpcyBpcyBub3Qgc2V0IHRoZW4gdGhlIHZhbHVlIHdpbGwgYmUgZGVmYXVsdGVkIHRvCisJCQkgIDMuMiB2LgorCS0gdmliLW92ZXJkcml2ZS1tdiAtIFRoZSBvdmVyZHJpdmUgdm9sdGFnZSBvZiB0aGUgYWN0dWF0b3IgaW4gbWlsbGl2b2x0cy4KKwkJCSAgSWYgdGhpcyBpcyBub3Qgc2V0IHRoZW4gdGhlIHZhbHVlIHdpbGwgYmUgZGVmYXVsdGVkIHRvCisJCQkgIDMuMiB2LgorRXhhbXBsZToKKworaGFwdGljczogaGFwdGljc0A1YSB7CisJY29tcGF0aWJsZSA9ICJ0aSxkcnYyNjA1bCI7CisJcmVnID0gPDB4NWE+OworCXZiYXQtc3VwcGx5ID0gPCZ2YmF0PjsKKwllbmFibGUtZ3BpbyA9IDwmZ3BpbzEgMjggR1BJT19BQ1RJVkVfSElHSD47CisJbW9kZSA9IDxEUlYyNjBYX0xSQV9NT0RFPjsKKwlsaWJyYXJ5LXNlbCA9IDxEUlYyNjBYX0xJQl9MUkE+OworCXZpYi1yYXRlZC1tdiA9IDwzMjAwPjsKKwl2aWItb3ZlcmRyaXZlci1tdiA9IDwzMjAwPjsKK30KKworRm9yIG1vcmUgcHJvZHVjdCBpbmZvcm1hdGlvbiBwbGVhc2Ugc2VlIHRoZSBsaW5rIGJlbG93OgoraHR0cDovL3d3dy50aS5jb20vcHJvZHVjdC9kcnYyNjA1CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdGksZHJ2MjY2NS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdGksZHJ2MjY2NS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJhOTdhYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90aSxkcnYyNjY1LnR4dApAQCAtMCwwICsxLDE3IEBACisqIFRleGFzIEluc3RydW1lbnRzIC0gZHJ2MjY2NSBIYXB0aWNzIGRyaXZlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCS0gY29tcGF0aWJsZSAtICJ0aSxkcnYyNjY1IiAtIERSVjI2NjUKKwktIHJlZyAtICBJMkMgc2xhdmUgYWRkcmVzcworCS0gdmJhdC1zdXBwbHkgLSBSZXF1aXJlZCBzdXBwbHkgcmVndWxhdG9yCisKK0V4YW1wbGU6CisKK2hhcHRpY3M6IGhhcHRpY3NANTkgeworCWNvbXBhdGlibGUgPSAidGksZHJ2MjY2NSI7CisJcmVnID0gPDB4NTk+OworCXZiYXQtc3VwcGx5ID0gPCZ2YmF0PjsKK307CisKK0ZvciBtb3JlIHByb2R1Y3QgaW5mb3JtYXRpb24gcGxlYXNlIHNlZSB0aGUgbGluayBiZWxvdzoKK2h0dHA6Ly93d3cudGkuY29tL3Byb2R1Y3QvZHJ2MjY2NQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RpLGRydjI2NjcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RpLGRydjI2NjcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NjM4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdGksZHJ2MjY2Ny50eHQKQEAgLTAsMCArMSwxNyBAQAorKiBUZXhhcyBJbnN0cnVtZW50cyAtIGRydjI2NjcgSGFwdGljcyBkcml2ZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKwktIGNvbXBhdGlibGUgLSAidGksZHJ2MjY2NyIgLSBEUlYyNjY3CisJLSByZWcgLSAgSTJDIHNsYXZlIGFkZHJlc3MKKwktIHZiYXQtc3VwcGx5IC0gUmVxdWlyZWQgc3VwcGx5IHJlZ3VsYXRvcgorCitFeGFtcGxlOgorCitoYXB0aWNzOiBoYXB0aWNzQDU5IHsKKwljb21wYXRpYmxlID0gInRpLGRydjI2NjciOworCXJlZyA9IDwweDU5PjsKKwl2YmF0LXN1cHBseSA9IDwmdmJhdD47Cit9OworCitGb3IgbW9yZSBwcm9kdWN0IGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgdGhlIGxpbmsgYmVsb3c6CitodHRwOi8vd3d3LnRpLmNvbS9wcm9kdWN0L2RydjI2NjcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90aSxuc3BpcmUta2V5cGFkLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90aSxuc3BpcmUta2V5cGFkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTNkOTRkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RpLG5zcGlyZS1rZXlwYWQudHh0CkBAIC0wLDAgKzEsNjAgQEAKK1RJLU5TUElSRSBLZXlwYWQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogQ29tcGF0aWJsZSBwcm9wZXJ0eSB2YWx1ZSBzaG91bGQgYmUgInRpLG5zcGlyZS1rZXlwYWQiLgorCistIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBwZXJpcGhlcmFsIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICByZWdpb24uCisKKy0gaW50ZXJydXB0czogVGhlIGludGVycnVwdCBudW1iZXIgZm9yIHRoZSBwZXJpcGhlcmFsLgorCistIHNjYW4taW50ZXJ2YWw6IEhvdyBvZnRlbiB0byBzY2FuIGluIHVzLiBCYXNlZCBvbiBhIEFQQiBzcGVlZCBvZiAzM01IeiwgdGhlCisJbWF4aW11bSBhbmQgbWluaW11bSBkZWxheSB0aW1lIGlzIH4yMDAwdXMgYW5kIH41MDB1cyByZXNwZWN0aXZlbHkKKworLSByb3ctZGVsYXk6IEhvdyBsb25nIHRvIHdhaXQgYmVmb3JlIHNjYW5uaW5nIGVhY2ggcm93LgorCistIGNsb2NrczogVGhlIGNsb2NrIHRoaXMgcGVyaXBoZXJhbCBpcyBhdHRhY2hlZCB0by4KKworLSBsaW51eCxrZXltYXA6IFRoZSBrZXltYXAgdG8gdXNlCisJKHNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvbWF0cml4LWtleW1hcC50eHQpCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGFjdGl2ZS1sb3c6IFNwZWNpZnkgdGhhdCB0aGUga2V5cGFkIGlzIGFjdGl2ZSBsb3cgKGkuZS4gbG9naWNhbCBsb3cgc2lnbmlmaWVzCisJYSBrZXkgcHJlc3MpLgorCitFeGFtcGxlOgorCitpbnB1dCB7CisJY29tcGF0aWJsZSA9ICJ0aSxuc3BpcmUta2V5cGFkIjsKKwlyZWcgPSA8MHg5MDBFMDAwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8MTY+OworCisJc2Nhbi1pbnRlcnZhbCA9IDwxMDAwPjsKKwlyb3ctZGVsYXkgPSA8MjAwPjsKKworCWNsb2NrcyA9IDwmYXBiX3BjbGs+OworCisJbGludXgsa2V5bWFwID0gPAorCTB4MDAwMDAwMWMJMHgwMDAxMDAxYwkweDAwMDQwMDM5CisJMHgwMDA1MDAyYwkweDAwMDYwMDE1CTB4MDAwNzAwMGIKKwkweDAwMDgwMDBmCTB4MDEwMDAwMmQJMHgwMTAxMDAxMQorCTB4MDEwMjAwMmYJMHgwMTAzMDAwNAkweDAxMDQwMDE2CisJMHgwMTA1MDAxNAkweDAxMDYwMDFmCTB4MDEwNzAwMDIKKwkweDAxMGEwMDZhCTB4MDIwMDAwMTMJMHgwMjAxMDAxMAorCTB4MDIwMjAwMTkJMHgwMjAzMDAwNwkweDAyMDQwMDE4CisJMHgwMjA1MDAzMQkweDAyMDYwMDMyCTB4MDIwNzAwMDUKKwkweDAyMDgwMDI4CTB4MDIwOTAwNmMJMHgwMzAwMDAyNgorCTB4MDMwMTAwMjUJMHgwMzAyMDAyNAkweDAzMDMwMDBhCisJMHgwMzA0MDAxNwkweDAzMDUwMDIzCTB4MDMwNjAwMjIKKwkweDAzMDcwMDA4CTB4MDMwODAwMzUJMHgwMzA5MDA2OQorCTB4MDQwMDAwMjEJMHgwNDAxMDAxMgkweDA0MDIwMDIwCisJMHgwNDA0MDAyZQkweDA0MDUwMDMwCTB4MDQwNjAwMWUKKwkweDA0MDcwMDBkCTB4MDQwODAwMzcJMHgwNDA5MDA2NworCTB4MDUwMTAwMzgJMHgwNTAyMDAwYwkweDA1MDMwMDFiCisJMHgwNTA0MDAzNAkweDA1MDUwMDFhCTB4MDUwNjAwMDYKKwkweDA1MDgwMDI3CTB4MDUwOTAwMGUJMHgwNTBhMDA2ZgorCTB4MDYwMDAwMmIJMHgwNjAyMDA0ZQkweDA2MDMwMDY4CisJMHgwNjA0MDAwMwkweDA2MDUwMDZkCTB4MDYwNjAwMDkKKwkweDA2MDcwMDAxCTB4MDYwOTAwMGYJMHgwNzA4MDAyYQorCTB4MDcwOTAwMWQJMHgwNzBhMDAzMwk+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90aSxwYWxtYXMtcHdyYnV0dG9uLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90aSxwYWxtYXMtcHdyYnV0dG9uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2RkZThjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RpLHBhbG1hcy1wd3JidXR0b24udHh0CkBAIC0wLDAgKzEsMzYgQEAKK1RleGFzIEluc3RydW1lbnRzIFBhbG1hcyBmYW1pbHkgcG93ZXIgYnV0dG9uIG1vZHVsZQorCitUaGlzIG1vZHVsZSBpcyBwYXJ0IG9mIHRoZSBQYWxtYXMgZmFtaWx5IG9mIFBNSUNzLiBGb3IgbW9yZSBkZXRhaWxzCithYm91dCB0aGUgd2hvbGUgY2hpcCBzZWU6CitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3BhbG1hcy50eHQuCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIGEgc2ltcGxlIHBvd2VyIGJ1dHRvbiBldmVudCB2aWEgYW4gSW50ZXJydXB0LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcKKyAgIC0gInRpLHBhbG1hcy1wd3JidXR0b24iOiBGb3IgUGFsbWFzIGNvbXBhdGlibGUgcG93ZXIgb24gYnV0dG9uCistIGludGVycnVwdC1wYXJlbnQ6IFBhcmVudCBpbnRlcnJ1cHQgZGV2aWNlLCBtdXN0IGJlIGhhbmRsZSBvZiBwYWxtYXMgbm9kZS4KKy0gaW50ZXJydXB0czogSW50ZXJydXB0IG51bWJlciBvZiBwb3dlciBidXR0b24gc3VibW9kdWxlIG9uIGRldmljZS4KKworT3B0aW9uYWwgUHJvcGVydGllczoKKworLSB0aSxwYWxtYXMtbG9uZy1wcmVzcy1zZWNvbmRzOiBEdXJhdGlvbiBpbiBzZWNvbmRzIHdoaWNoIHRoZSBwb3dlcgorICBidXR0b24gc2hvdWxkIGJlIGtlcHQgcHJlc3NlZCBmb3IgUGFsbWFzIHRvIHBvd2VyIG9mZiBhdXRvbWF0aWNhbGx5LgorICBOT1RFOiBUaGlzIGRlcGVuZHMgb24gT1RQIHN1cHBvcnQgYW5kIFBPV0VSSE9MRCBzaWduYWwgY29uZmlndXJhdGlvbgorICBvbiBwbGF0Zm9ybS4gVmFsaWQgdmFsdWVzIGFyZSA2LCA4LCAxMCBhbmQgMTIuCistIHRpLHBhbG1hcy1wd3Jvbi1kZWJvdW5jZS1taWxsaS1zZWNvbmRzOiBEdXJhdGlvbiBpbiBtaWxsaXNlY29uZHMKKyAgd2hpY2ggdGhlIHBvd2VyIGJ1dHRvbiBzaG91bGQgYmUga2VwdCBwcmVzc2VkIGZvciBQYWxtYXMgdG8gcmVnaXN0ZXIKKyAgYSBwcmVzcyBmb3IgZGVib3VuY2luZyBwdXJwb3Nlcy4gTk9URTogVGhpcyBkZXBlbmRzIG9uIHNwZWNpZmljCisgIFBhbG1hcyB2YXJpYXRpb24gY2FwYWJpbGl0eS4gVmFsaWQgdmFsdWVzIGFyZSAxNSwgMTAwLCA1MDAgYW5kIDEwMDAuCisKK0V4YW1wbGU6CisKKyZwYWxtYXMgeworCXBhbG1hc19wd3JfYnV0dG9uOiBwd3JidXR0b24geworCQljb21wYXRpYmxlID0gInRpLHBhbG1hcy1wd3JidXR0b24iOworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZ0cHM2NTkwMzg+OworCQlpbnRlcnJ1cHRzID0gPDEgSVJRX1RZUEVfRURHRV9GQUxMSU5HPjsKKwkJdGkscGFsbWFzLWxvbmctcHJlc3Mtc2Vjb25kcyA9IDwxMj47CisJCXRpLHBhbG1hcy1wd3Jvbi1kZWJvdW5jZS1taWxsaS1zZWNvbmRzID0gPDE1PjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9hdW9fcGl4Y2lyX3RzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9hdW9fcGl4Y2lyX3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDBmMjFjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL2F1b19waXhjaXJfdHMudHh0CkBAIC0wLDAgKzEsMzAgQEAKKyogQVVPIGluLWNlbGwgdG91Y2hzY3JlZW4gY29udHJvbGxlciB1c2luZyBQaXhjaXIgc2Vuc29ycworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBtdXN0IGJlICJhdW8sYXVvX3BpeGNpcl90cyIKKy0gcmVnOiBJMkMgYWRkcmVzcyBvZiB0aGUgY2hpcAorLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgdG8gd2hpY2ggdGhlIGNoaXAgaXMgY29ubmVjdGVkCistIGdwaW9zOiBncGlvcyB0aGUgY2hpcCBpcyBjb25uZWN0ZWQgdG8KKyAgZmlyc3Qgb25lIGlzIHRoZSBpbnRlcnJ1cHQgZ3BpbyBhbmQgc2Vjb25kIG9uZSB0aGUgcmVzZXQgZ3BpbworLSB4LXNpemU6IGhvcml6b250YWwgcmVzb2x1dGlvbiBvZiB0b3VjaHNjcmVlbgorLSB5LXNpemU6IHZlcnRpY2FsIHJlc29sdXRpb24gb2YgdG91Y2hzY3JlZW4KKworRXhhbXBsZToKKworCWkyY0AwMDAwMDAwMCB7CisJCS8qIC4uLiAqLworCisJCWF1b19waXhjaXJfdHNANWMgeworCQkJY29tcGF0aWJsZSA9ICJhdW8sYXVvX3BpeGNpcl90cyI7CisJCQlyZWcgPSA8MHg1Yz47CisJCQlpbnRlcnJ1cHRzID0gPDIgMD47CisKKwkJCWdwaW9zID0gPCZncGYgMiAwIDI+LCAvKiBJTlQgKi8KKwkJCQk8JmdwZiA1IDEgMD47IC8qIFJTVCAqLworCisJCQl4LXNpemUgPSA8ODAwPjsKKwkJCXktc2l6ZSA9IDw2MDA+OworCQl9OworCisJCS8qIC4uLiAqLworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdG91Y2hzY3JlZW4vYnJjbSxpcHJvYy10b3VjaHNjcmVlbi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdG91Y2hzY3JlZW4vYnJjbSxpcHJvYy10b3VjaHNjcmVlbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRlMzM4MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9icmNtLGlwcm9jLXRvdWNoc2NyZWVuLnR4dApAQCAtMCwwICsxLDc2IEBACisqIEJyb2FkY29tJ3MgSVBST0MgVG91Y2hzY3JlZW4gQ29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBtdXN0IGJlICJicmNtLGlwcm9jLXRvdWNoc2NyZWVuIgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorLSBjbG9ja3M6ICBUaGUgY2xvY2sgcHJvdmlkZWQgYnkgdGhlIFNPQyB0byBkcml2ZXIgdGhlIHRzYworLSBjbG9jay1uYW1lOiAgbmFtZSBmb3IgdGhlIGNsb2NrCistIGludGVycnVwdHM6IFRoZSB0b3VjaHNjcmVlbiBjb250cm9sbGVyJ3MgaW50ZXJydXB0CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHNjYW5uaW5nX3BlcmlvZDogVGltZSBiZXR3ZWVuIHNjYW5zLiBFYWNoIHN0ZXAgaXMgMTAyNCB1cy4gIFZhbGlkIDEtMjU2LgorLSBkZWJvdW5jZV90aW1lb3V0OiBFYWNoIHN0ZXAgaXMgNTEyIHVzLiAgVmFsaWQgMC0yNTUKKy0gc2V0dGxpbmdfdGltZW91dDogVGhlIHNldHRsaW5nIGR1cmF0aW9uIChpbiBtcykgaXMgdGhlIGFtb3VudCBvZiB0aW1lCisgICAgICAgICAgICAgICAgICAgIHRoZSB0c2Mgd2FpdHMgdG8gYWxsb3cgdGhlIHZvbHRhZ2UgdG8gc2V0dGxlIGFmdGVyCisgICAgICAgICAgICAgICAgICAgIHR1cm5pbmcgb24gdGhlIGRyaXZlcnMgaW4gZGV0ZWN0aW9uIG1vZGUuCisgICAgICAgICAgICAgICAgICAgIFZhbGlkIHZhbHVlczogMC0xMQorICAgICAgICAgICAgICAgICAgICAwID0gIDAuMDA4IG1zCisgICAgICAgICAgICAgICAgICAgIDEgPSAgMC4wMSBtcworICAgICAgICAgICAgICAgICAgICAyID0gIDAuMDIgbXMKKyAgICAgICAgICAgICAgICAgICAgMyA9ICAwLjA0IG1zCisgICAgICAgICAgICAgICAgICAgIDQgPSAgMC4wOCBtcworICAgICAgICAgICAgICAgICAgICA1ID0gIDAuMTYgbXMKKyAgICAgICAgICAgICAgICAgICAgNiA9ICAwLjMyIG1zCisgICAgICAgICAgICAgICAgICAgIDcgPSAgMC42NCBtcworICAgICAgICAgICAgICAgICAgICA4ID0gIDEuMjggbXMKKyAgICAgICAgICAgICAgICAgICAgOSA9ICAyLjU2IG1zCisgICAgICAgICAgICAgICAgICAgMTAgPSAgNS4xMiBtcworICAgICAgICAgICAgICAgICAgIDExID0gMTAuMjQgbXMKKy0gdG91Y2hfdGltZW91dDogVGhlIGNvbnRpbnVvdXMgbnVtYmVyIG9mIHNjYW4gcGVyaW9kcyBpbiB3aGljaCB0b3VjaCBpcworICAgICAgICAgICAgICAgIG5vdCBkZXRlY3RlZCBiZWZvcmUgdGhlIGNvbnRyb2xsZXIgcmV0dXJucyB0byBpZGxlIHN0YXRlLgorICAgICAgICAgICAgICAgIFZhbGlkIHZhbHVlcyAwLTI1NS4KKy0gYXZlcmFnZV9kYXRhOiBOdW1iZXIgb2YgZGF0YSBzYW1wbGVzIHdoaWNoIGFyZSBhdmVyYWdlZCBiZWZvcmUgYSBmaW5hbAorICAgICAgICAgICAgICAgIGRhdGEgcG9pbnQgaXMgcGxhY2VkIGludG8gdGhlIEZJRk8KKyAgICAgICAgICAgICAgICBWYWxpZCB2YWx1ZXMgMC03CisgICAgICAgICAgICAgICAgMCA9ICAgMSBzYW1wbGUKKyAgICAgICAgICAgICAgICAxID0gICAyIHNhbXBsZXMKKyAgICAgICAgICAgICAgICAyID0gICA0IHNhbXBsZXMKKyAgICAgICAgICAgICAgICAzID0gICA4IHNhbXBsZXMKKyAgICAgICAgICAgICAgICA0ID0gIDE2IHNhbXBsZXMKKyAgICAgICAgICAgICAgICA1ID0gIDMyIHNhbXBsZXMKKyAgICAgICAgICAgICAgICA2ID0gIDY0IHNhbXBsZXMKKyAgICAgICAgICAgICAgICA3ID0gMTI4IHNhbXBsZXMKKy0gZmlmb190aHJlc2hvbGQ6IEludGVycnVwdCBpcyBnZW5lcmF0ZWQgd2hlbmV2ZXIgdGhlIG51bWJlciBvZiBmaWZvCisgICAgICAgICAgICAgICAgZW50cmllcyBleGNlZWRzIHRoaXMgdmFsdWUKKyAgICAgICAgICAgICAgICBWYWxpZCB2YWx1ZXMgMC0zMQorLSB0b3VjaHNjcmVlbi1zaXplLXg6IGhvcml6b250YWwgcmVzb2x1dGlvbiBvZiB0b3VjaHNjcmVlbiAoaW4gcGl4ZWxzKQorLSB0b3VjaHNjcmVlbi1zaXplLXk6IHZlcnRpY2FsIHJlc29sdXRpb24gb2YgdG91Y2hzY3JlZW4gKGluIHBpeGVscykKKy0gdG91Y2hzY3JlZW4tZnV6ei14OiBob3Jpem9udGFsIG5vaXNlIHZhbHVlIG9mIHRoZSBhYnNvbHV0ZSBpbnB1dAorICAgICAgICAgICAgICAgICAgICAgIGRldmljZSAoaW4gcGl4ZWxzKQorLSB0b3VjaHNjcmVlbi1mdXp6LXk6IHZlcnRpY2FsIG5vaXNlIHZhbHVlIG9mIHRoZSBhYnNvbHV0ZSBpbnB1dAorICAgICAgICAgICAgICAgICAgICAgIGRldmljZSAoaW4gcGl4ZWxzKQorLSB0b3VjaHNjcmVlbi1pbnZlcnRlZC14OiBYIGF4aXMgaXMgaW52ZXJ0ZWQgKGJvb2xlYW4pCistIHRvdWNoc2NyZWVuLWludmVydGVkLXk6IFkgYXhpcyBpcyBpbnZlcnRlZCAoYm9vbGVhbikKKworRXhhbXBsZToKKworCXRvdWNoc2NyZWVuOiB0c2NAMHgxODBBNjAwMCB7CisJCWNvbXBhdGlibGUgPSAiYnJjbSxpcHJvYy10b3VjaHNjcmVlbiI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJcmVnID0gPDB4MTgwQTYwMDAgMHg0MD47CisJCWNsb2NrcyA9IDwmYWRjX2Nsaz47CisJCWNsb2NrLW5hbWVzID0gInRzY19jbGsiOworCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMTY0IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCisJCXNjYW5uaW5nX3BlcmlvZCA9IDw1PjsKKwkJZGVib3VuY2VfdGltZW91dCA9IDw0MD47CisJCXNldHRsaW5nX3RpbWVvdXQgPSA8Nz47CisJCXRvdWNoX3RpbWVvdXQgPSA8MTA+OworCQlhdmVyYWdlX2RhdGEgPSA8NT47CisJCWZpZm9fdGhyZXNob2xkID0gPDE+OworCQkvKiBUb3VjaHNjcmVlbiBpcyByb3RhdGVkIDE4MCBkZWdyZWVzLiAqLworCQl0b3VjaHNjcmVlbi1pbnZlcnRlZC14OworCQl0b3VjaHNjcmVlbi1pbnZlcnRlZC15OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdG91Y2hzY3JlZW4vYnUyMTAxMy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdG91Y2hzY3JlZW4vYnUyMTAxMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E1YTJjOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9idTIxMDEzLnR4dApAQCAtMCwwICsxLDI4IEBACisqIFJvaG0gQlUyMTAxMyBUb3VjaCBTY3JlZW4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGUgICAgICAgICAgICAgIDogInJvaG0sYnUyMTAxM190cCIKKyAtIHJlZyAgICAgICAgICAgICAgICAgICAgIDogIEkyQyBkZXZpY2UgYWRkcmVzcworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorIC0gdG91Y2gtZ3BpbyAgICAgICAgICAgICAgOiBHUElPIHBpbiByZWdpc3RlcmluZyBhIHRvdWNoIGV2ZW50CisgLSA8c3VwcGx5X25hbWU+LXN1cHBseSAgICA6IFBoYW5kbGUgdG8gYSByZWd1bGF0b3Igc3VwcGx5CisgLSByb2htLHRvdWNoLW1heC14ICAgICAgICA6IE1heGltdW0gb3V0d2FyZCBwZXJtaXR0ZWQgbGltaXQgaW4gdGhlIFggYXhpcworIC0gcm9obSx0b3VjaC1tYXgteSAgICAgICAgOiBNYXhpbXVtIG91dHdhcmQgcGVybWl0dGVkIGxpbWl0IGluIHRoZSBZIGF4aXMKKyAtIHJvaG0sZmxpcC14ICAgICAgICAgICAgIDogRmxpcCB0b3VjaCBjb29yZGluYXRlcyBvbiB0aGUgWCBheGlzCisgLSByb2htLGZsaXAteSAgICAgICAgICAgICA6IEZsaXAgdG91Y2ggY29vcmRpbmF0ZXMgb24gdGhlIFkgYXhpcworCitFeGFtcGxlOgorCisJaTJjQDgwMTEwMDAwIHsKKwkJYnUyMTAxM190cEAweDVjIHsKKwkJCWNvbXBhdGlibGUgPSAicm9obSxidTIxMDEzX3RwIjsKKwkJCXJlZyA9IDwweDVjPjsKKwkJCXRvdWNoLWdwaW8gPSA8JmdwaW8yIDIwIDB4ND47CisJCQlhdmRkLXN1cHBseSA9IDwmYWI4NTAwX2xkb19hdXgxX3JlZz47CisKKwkJCXJvaG0sdG91Y2gtbWF4LXggPSA8Mzg0PjsKKwkJCXJvaG0sdG91Y2gtbWF4LXkgPSA8NzA0PjsKKwkJCXJvaG0sZmxpcC15OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdG91Y2hzY3JlZW4vY2hpcG9uZV9pY244MzE4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9jaGlwb25lX2ljbjgzMTgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMWY4ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdG91Y2hzY3JlZW4vY2hpcG9uZV9pY244MzE4LnR4dApAQCAtMCwwICsxLDQ2IEBACisqIENoaXBPbmUgaWNuODMxOCBJMkMgdG91Y2hzY3JlZW4gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZQkJICA6ICJjaGlwb25lLGljbjgzMTgiCisgLSByZWcJCQkgIDogSTJDIHNsYXZlIGFkZHJlc3Mgb2YgdGhlIGNoaXAgKDB4NDApCisgLSBpbnRlcnJ1cHQtcGFyZW50CSAgOiBhIHBoYW5kbGUgcG9pbnRpbmcgdG8gdGhlIGludGVycnVwdCBjb250cm9sbGVyCisJCQkgICAgc2VydmluZyB0aGUgaW50ZXJydXB0IGZvciB0aGlzIGNoaXAKKyAtIGludGVycnVwdHMJCSAgOiBpbnRlcnJ1cHQgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIGljbjgzMTggaW50ZXJydXB0CisgLSB3YWtlLWdwaW9zCQkgIDogR1BJTyBzcGVjaWZpY2F0aW9uIGZvciB0aGUgV0FLRSBpbnB1dAorIC0gdG91Y2hzY3JlZW4tc2l6ZS14CSAgOiBob3Jpem9udGFsIHJlc29sdXRpb24gb2YgdG91Y2hzY3JlZW4gKGluIHBpeGVscykKKyAtIHRvdWNoc2NyZWVuLXNpemUteQkgIDogdmVydGljYWwgcmVzb2x1dGlvbiBvZiB0b3VjaHNjcmVlbiAoaW4gcGl4ZWxzKQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorIC0gcGluY3RybC1uYW1lcwkgIDogc2hvdWxkIGJlICJkZWZhdWx0IgorIC0gcGluY3RybC0wOgkJICA6IGEgcGhhbmRsZSBwb2ludGluZyB0byB0aGUgcGluIHNldHRpbmdzIGZvciB0aGUKKwkJCSAgICBjb250cm9sIGdwaW9zCisgLSB0b3VjaHNjcmVlbi1mdXp6LXgJICA6IGhvcml6b250YWwgbm9pc2UgdmFsdWUgb2YgdGhlIGFic29sdXRlIGlucHV0CisJCQkgICAgZGV2aWNlIChpbiBwaXhlbHMpCisgLSB0b3VjaHNjcmVlbi1mdXp6LXkJICA6IHZlcnRpY2FsIG5vaXNlIHZhbHVlIG9mIHRoZSBhYnNvbHV0ZSBpbnB1dAorCQkJICAgIGRldmljZSAoaW4gcGl4ZWxzKQorIC0gdG91Y2hzY3JlZW4taW52ZXJ0ZWQteCA6IFggYXhpcyBpcyBpbnZlcnRlZCAoYm9vbGVhbikKKyAtIHRvdWNoc2NyZWVuLWludmVydGVkLXkgOiBZIGF4aXMgaXMgaW52ZXJ0ZWQgKGJvb2xlYW4pCisgLSB0b3VjaHNjcmVlbi1zd2FwcGVkLXgteQkgIDogWCBhbmQgWSBheGlzIGFyZSBzd2FwcGVkIChib29sZWFuKQorCQkJICAgIFN3YXBwaW5nIGlzIGRvbmUgYWZ0ZXIgaW52ZXJ0aW5nIHRoZSBheGlzCisKK0V4YW1wbGU6CisKK2kyY0AwMDAwMDAwMCB7CisJLyogLi4uICovCisKKwljaGlwb25lX2ljbjgzMThANDAgeworCQljb21wYXRpYmxlID0gImNoaXBvbmUsaWNuODMxOCI7CisJCXJlZyA9IDwweDQwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmcGlvPjsKKwkJaW50ZXJydXB0cyA9IDw5IElSUV9UWVBFX0VER0VfRkFMTElORz47IC8qIEVJTlQ5IChQRzkpICovCisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmdHNfd2FrZV9waW5fcDY2PjsKKwkJd2FrZS1ncGlvcyA9IDwmcGlvIDEgMyBHUElPX0FDVElWRV9ISUdIPjsgLyogUEIzICovCisJCXRvdWNoc2NyZWVuLXNpemUteCA9IDw4MDA+OworCQl0b3VjaHNjcmVlbi1zaXplLXkgPSA8NDgwPjsKKwkJdG91Y2hzY3JlZW4taW52ZXJ0ZWQteDsKKwkJdG91Y2hzY3JlZW4tc3dhcHBlZC14LXk7CisJfTsKKworCS8qIC4uLiAqLworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9jb2xpYnJpLXZmNTAtdHMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL2NvbGlicmktdmY1MC10cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ5ZTkzMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9jb2xpYnJpLXZmNTAtdHMudHh0CkBAIC0wLDAgKzEsMzYgQEAKKyogVG9yYWRleCBDb2xpYnJpIFZGNTAgVG91Y2hzY3JlZW4gZHJpdmVyCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgbXVzdCBiZSB0b3JhZGV4LHZmNTAtdG91Y2hzY3JlZW4KKy0gaW8tY2hhbm5lbHM6IGFkYyBjaGFubmVscyBiZWluZyB1c2VkIGJ5IHRoZSBDb2xpYnJpIFZGNTAgbW9kdWxlCistIHhwLWdwaW9zOiBGRVQgZ2F0ZSBkcml2ZXIgZm9yIGlucHV0IG9mIFgrCistIHhtLWdwaW9zOiBGRVQgZ2F0ZSBkcml2ZXIgZm9yIGlucHV0IG9mIFgtCistIHlwLWdwaW9zOiBGRVQgZ2F0ZSBkcml2ZXIgZm9yIGlucHV0IG9mIFkrCistIHltLWdwaW9zOiBGRVQgZ2F0ZSBkcml2ZXIgZm9yIGlucHV0IG9mIFktCistIGludGVycnVwdC1wYXJlbnQ6IHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSBpbnRlcnJ1cHRzOiBwZW4gaXJxIGludGVycnVwdCBmb3IgdG91Y2ggZGV0ZWN0aW9uCistIHBpbmN0cmwtbmFtZXM6ICJpZGxlIiwgImRlZmF1bHQiLCAiZ3Bpb3MiCistIHBpbmN0cmwtMDogcGluY3RybCBub2RlIGZvciBwZW4vdG91Y2ggZGV0ZWN0aW9uIHN0YXRlIHBpbm11eAorLSBwaW5jdHJsLTE6IHBpbmN0cmwgbm9kZSBmb3IgWC9ZIGFuZCBwcmVzc3VyZSBtZWFzdXJlbWVudCAoQURDKSBzdGF0ZSBwaW5tdXgKKy0gcGluY3RybC0yOiBwaW5jdHJsIG5vZGUgZm9yIGdwaW9zIGZ1bmN0aW9uaW5nIGFzIEZFVCBnYXRlIGRyaXZlcnMKKy0gdmY1MC10cy1taW4tcHJlc3N1cmU6IHByZXNzdXJlIGxldmVsIGF0IHdoaWNoIHRvIHN0b3AgbWVhc3VyaW5nIFgvWSB2YWx1ZXMKKworRXhhbXBsZToKKworCXRvdWNoY3RybDogdmY1MF90b3VjaGN0cmwgeworCQljb21wYXRpYmxlID0gInRvcmFkZXgsdmY1MC10b3VjaHNjcmVlbiI7CisJCWlvLWNoYW5uZWxzID0gPCZhZGMxIDA+LDwmYWRjMCAwPiwKKwkJCQk8JmFkYzAgMT4sPCZhZGMxIDI+OworCQl4cC1ncGlvcyA9IDwmZ3BpbzAgMTMgR1BJT19BQ1RJVkVfTE9XPjsKKwkJeG0tZ3Bpb3MgPSA8JmdwaW8yIDI5IEdQSU9fQUNUSVZFX0hJR0g+OworCQl5cC1ncGlvcyA9IDwmZ3BpbzAgMTIgR1BJT19BQ1RJVkVfTE9XPjsKKwkJeW0tZ3Bpb3MgPSA8JmdwaW8wIDQgR1BJT19BQ1RJVkVfSElHSD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8wPjsKKwkJaW50ZXJydXB0cyA9IDw4IElSUV9UWVBFX0xFVkVMX0xPVz47CisJCXBpbmN0cmwtbmFtZXMgPSAiaWRsZSIsImRlZmF1bHQiLCJncGlvcyI7CisJCXBpbmN0cmwtMCA9IDwmcGluY3RybF90b3VjaGN0cmxfaWRsZT47CisJCXBpbmN0cmwtMSA9IDwmcGluY3RybF90b3VjaGN0cmxfZGVmYXVsdD47CisJCXBpbmN0cmwtMiA9IDwmcGluY3RybF90b3VjaGN0cmxfZ3Bpb3M+OworCQl2ZjUwLXRzLW1pbi1wcmVzc3VyZSA9IDwyMDA+OworCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdG91Y2hzY3JlZW4vZWR0LWZ0NXgwNi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdG91Y2hzY3JlZW4vZWR0LWZ0NXgwNi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk5NTI4ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9lZHQtZnQ1eDA2LnR4dApAQCAtMCwwICsxLDU3IEBACitGb2NhbFRlY2ggRURULUZUNXgwNiBQb2x5dG91Y2ggZHJpdmVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZXJlIGFyZSAzIHZhcmlhbnRzIG9mIHRoZSBjaGlwIGZvciB2YXJpb3VzIHRvdWNoIHBhbmVsIHNpemVzCitGVDUyMDZHRTEgIDIuOCIgLi4gMy44IgorRlQ1MzA2REU0ICA0LjMiIC4uIDciCitGVDU0MDZFRTggIDciICAgLi4gOC45IgorRlQ1NTA2RUVHICA3IiAgIC4uIDguOSIKKworVGhlIHNvZnR3YXJlIGludGVyZmFjZSBpcyBpZGVudGljYWwgZm9yIGFsbCB0aG9zZSBjaGlwcywgc28gdGhhdAorY3VycmVudGx5IHRoZXJlIGlzIG5vIG5lZWQgZm9yIHRoZSBkcml2ZXIgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUKK2RpZmZlcmVudCBjaGlwcy4gTmV2ZXJ0aGVsZXNzIGRpc3RpbmN0IGNvbXBhdGlibGUgc3RyaW5ncyBhcmUgdXNlZCBzbwordGhhdCBhIGRpc3RpbmN0aW9uIGNhbiBiZSBhZGRlZCBpZiBuZWNlc3Nhcnkgd2l0aG91dCBjaGFuZ2luZyB0aGUgRFQKK2JpbmRpbmdzLgorCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiAgImVkdCxlZHQtZnQ1MjA2IgorICAgICAgICAgICBvcjogICJlZHQsZWR0LWZ0NTMwNiIKKyAgICAgICAgICAgb3I6ICAiZWR0LGVkdC1mdDU0MDYiCisgICAgICAgICAgIG9yOiAgImVkdCxlZHQtZnQ1NTA2IgorCisgLSByZWc6ICAgICAgICAgSTJDIHNsYXZlIGFkZHJlc3Mgb2YgdGhlIGNoaXAgKDB4MzgpCisgLSBpbnRlcnJ1cHQtcGFyZW50OiBhIHBoYW5kbGUgcG9pbnRpbmcgdG8gdGhlIGludGVycnVwdCBjb250cm9sbGVyCisgICAgICAgICAgICAgICAgICAgICBzZXJ2aW5nIHRoZSBpbnRlcnJ1cHQgZm9yIHRoaXMgY2hpcAorIC0gaW50ZXJydXB0czogICAgICAgaW50ZXJydXB0IHNwZWNpZmljYXRpb24gZm9yIHRoZSB0b3VjaGRldGVjdAorICAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgLSByZXNldC1ncGlvczogR1BJTyBzcGVjaWZpY2F0aW9uIGZvciB0aGUgUkVTRVQgaW5wdXQKKyAtIHdha2UtZ3Bpb3M6ICBHUElPIHNwZWNpZmljYXRpb24gZm9yIHRoZSBXQUtFIGlucHV0CisKKyAtIHBpbmN0cmwtbmFtZXM6IHNob3VsZCBiZSAiZGVmYXVsdCIKKyAtIHBpbmN0cmwtMDogICBhIHBoYW5kbGUgcG9pbnRpbmcgdG8gdGhlIHBpbiBzZXR0aW5ncyBmb3IgdGhlCisgICAgICAgICAgICAgICAgY29udHJvbCBncGlvcworCisgLSB0aHJlc2hvbGQ6ICAgYWxsb3dzIHNldHRpbmcgdGhlICJjbGljayItdGhyZXNob2xkIGluIHRoZSByYW5nZQorICAgICAgICAgICAgICAgIGZyb20gMjAgdG8gODAuCisKKyAtIGdhaW46ICAgICAgICBhbGxvd3Mgc2V0dGluZyB0aGUgc2Vuc2l0aXZpdHkgaW4gdGhlIHJhbmdlIGZyb20gMCB0bworICAgICAgICAgICAgICAgIDMxLiBOb3RlIHRoYXQgbG93ZXIgdmFsdWVzIGluZGljYXRlIGhpZ2hlcgorICAgICAgICAgICAgICAgIHNlbnNpdGl2aXR5LgorCisgLSBvZmZzZXQ6ICAgICAgYWxsb3dzIHNldHRpbmcgdGhlIGVkZ2UgY29tcGVuc2F0aW9uIGluIHRoZSByYW5nZSBmcm9tCisgICAgICAgICAgICAgICAgMCB0byAzMS4KKworRXhhbXBsZToKKwlwb2x5dG91Y2g6IGVkdC1mdDV4MDZAMzggeworCQljb21wYXRpYmxlID0gImVkdCxlZHQtZnQ1NDA2IiwgImVkdCxlZHQtZnQ1eDA2IjsKKwkJcmVnID0gPDB4Mzg+OworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JmVkdF9mdDV4MDZfcGlucz47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8yPjsKKwkJaW50ZXJydXB0cyA9IDw1IElSUV9UWVBFX0VER0VfRkFMTElORz47CisJCXJlc2V0LWdwaW9zID0gPCZncGlvMiA2IEdQSU9fQUNUSVZFX0xPVz47CisJCXdha2UtZ3Bpb3MgPSA8JmdwaW80IDkgR1BJT19BQ1RJVkVfSElHSD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9lZ2FsYXgtdHMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL2VnYWxheC10cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDlmYTE0ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9lZ2FsYXgtdHMudHh0CkBAIC0wLDAgKzEsMTkgQEAKKyogRUVUSSBlR2FsYXggTXVsdGlwbGUgVG91Y2ggQ29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBtdXN0IGJlICJlZXRpLGVnYWxheF90cyIKKy0gcmVnOiBpMmMgc2xhdmUgYWRkcmVzcworLSBpbnRlcnJ1cHQtcGFyZW50OiB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyCistIGludGVycnVwdHM6IHRvdWNoIGNvbnRyb2xsZXIgaW50ZXJydXB0CistIHdha2V1cC1ncGlvczogdGhlIGdwaW8gcGluIHRvIGJlIHVzZWQgZm9yIHdha2luZyB1cCB0aGUgY29udHJvbGxlcgorICBhbmQgYWxzbyB1c2VkIGFzIGlycSBwaW4KKworRXhhbXBsZToKKworCWVnYWxheF90c0AwNCB7CisJCWNvbXBhdGlibGUgPSAiZWV0aSxlZ2FsYXhfdHMiOworCQlyZWcgPSA8MHgwND47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8xPjsKKwkJaW50ZXJydXB0cyA9IDw5IDI+OworCQl3YWtldXAtZ3Bpb3MgPSA8JmdwaW8xIDkgMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9mb2NhbHRlY2gtZnQ2MjM2LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9mb2NhbHRlY2gtZnQ2MjM2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Nzc1MjFkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL2ZvY2FsdGVjaC1mdDYyMzYudHh0CkBAIC0wLDAgKzEsMzUgQEAKKyogRm9jYWxUZWNoIEZUNjIzNiBJMkMgdG91Y2hzY3JlZW4gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZQkJICA6ICJmb2NhbHRlY2gsZnQ2MjM2IgorIC0gcmVnCQkJICA6IEkyQyBzbGF2ZSBhZGRyZXNzIG9mIHRoZSBjaGlwICgweDM4KQorIC0gaW50ZXJydXB0LXBhcmVudAkgIDogYSBwaGFuZGxlIHBvaW50aW5nIHRvIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlcgorCQkJICAgIHNlcnZpbmcgdGhlIGludGVycnVwdCBmb3IgdGhpcyBjaGlwCisgLSBpbnRlcnJ1cHRzCQkgIDogaW50ZXJydXB0IHNwZWNpZmljYXRpb24gZm9yIHRoZSB0b3VjaCBjb250cm9sbGVyCisJCQkgICAgaW50ZXJydXB0CisgLSByZXNldC1ncGlvcwkJICA6IEdQSU8gc3BlY2lmaWNhdGlvbiBmb3IgdGhlIFJTVE4gaW5wdXQKKyAtIHRvdWNoc2NyZWVuLXNpemUteAkgIDogaG9yaXpvbnRhbCByZXNvbHV0aW9uIG9mIHRvdWNoc2NyZWVuIChpbiBwaXhlbHMpCisgLSB0b3VjaHNjcmVlbi1zaXplLXkJICA6IHZlcnRpY2FsIHJlc29sdXRpb24gb2YgdG91Y2hzY3JlZW4gKGluIHBpeGVscykKKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAtIHRvdWNoc2NyZWVuLWZ1enoteAkgIDogaG9yaXpvbnRhbCBub2lzZSB2YWx1ZSBvZiB0aGUgYWJzb2x1dGUgaW5wdXQKKwkJCSAgICBkZXZpY2UgKGluIHBpeGVscykKKyAtIHRvdWNoc2NyZWVuLWZ1enoteQkgIDogdmVydGljYWwgbm9pc2UgdmFsdWUgb2YgdGhlIGFic29sdXRlIGlucHV0CisJCQkgICAgZGV2aWNlIChpbiBwaXhlbHMpCisgLSB0b3VjaHNjcmVlbi1pbnZlcnRlZC14IDogWCBheGlzIGlzIGludmVydGVkIChib29sZWFuKQorIC0gdG91Y2hzY3JlZW4taW52ZXJ0ZWQteSA6IFkgYXhpcyBpcyBpbnZlcnRlZCAoYm9vbGVhbikKKyAtIHRvdWNoc2NyZWVuLXN3YXBwZWQteC15OiBYIGFuZCBZIGF4aXMgYXJlIHN3YXBwZWQgKGJvb2xlYW4pCisJCQkgICAgU3dhcHBpbmcgaXMgZG9uZSBhZnRlciBpbnZlcnRpbmcgdGhlIGF4aXMKKworRXhhbXBsZToKKworCWZ0NngwNkAzOCB7CisJCWNvbXBhdGlibGUgPSAiZm9jYWx0ZWNoLGZ0NjIzNiI7CisJCXJlZyA9IDwweDM4PjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3Bpbz47CisJCWludGVycnVwdHMgPSA8MjMgMj47CisJCXRvdWNoc2NyZWVuLXNpemUteCA9IDwzMjA+OworCQl0b3VjaHNjcmVlbi1zaXplLXkgPSA8NDgwPjsKKwkJdG91Y2hzY3JlZW4taW52ZXJ0ZWQteDsKKwkJdG91Y2hzY3JlZW4tc3dhcHBlZC14LXk7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9nb29kaXgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL2dvb2RpeC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJhOThlZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9nb29kaXgudHh0CkBAIC0wLDAgKzEsMjkgQEAKK0RldmljZSB0cmVlIGJpbmRpbmdzIGZvciBHb29kaXggR1Q5eHggc2VyaWVzIHRvdWNoc2NyZWVuIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworIC0gY29tcGF0aWJsZQkJOiBTaG91bGQgYmUgImdvb2RpeCxndDkxMSIKKwkJCQkgb3IgImdvb2RpeCxndDkxMTAiCisJCQkJIG9yICJnb29kaXgsZ3Q5MTIiCisJCQkJIG9yICJnb29kaXgsZ3Q5MjciCisJCQkJIG9yICJnb29kaXgsZ3Q5MjcxIgorCQkJCSBvciAiZ29vZGl4LGd0OTI4IgorCQkJCSBvciAiZ29vZGl4LGd0OTY3IgorIC0gcmVnCQkJOiBJMkMgYWRkcmVzcyBvZiB0aGUgY2hpcC4gU2hvdWxkIGJlIDB4NWQgb3IgMHgxNAorIC0gaW50ZXJydXB0LXBhcmVudAk6IEludGVycnVwdCBjb250cm9sbGVyIHRvIHdoaWNoIHRoZSBjaGlwIGlzIGNvbm5lY3RlZAorIC0gaW50ZXJydXB0cwkJOiBJbnRlcnJ1cHQgdG8gd2hpY2ggdGhlIGNoaXAgaXMgY29ubmVjdGVkCisKK0V4YW1wbGU6CisKKwlpMmNAMDAwMDAwMDAgeworCQkvKiAuLi4gKi8KKworCQlndDkyOEA1ZCB7CisJCQljb21wYXRpYmxlID0gImdvb2RpeCxndDkyOCI7CisJCQlyZWcgPSA8MHg1ZD47CisJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvPjsKKwkJCWludGVycnVwdHMgPSA8MCAwPjsKKwkJfTsKKworCQkvKiAuLi4gKi8KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL2lteDZ1bF90c2MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL2lteDZ1bF90c2MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1M2RmZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdG91Y2hzY3JlZW4vaW14NnVsX3RzYy50eHQKQEAgLTAsMCArMSwzNiBAQAorKiBGcmVlc2NhbGUgaS5NWDZVTCBUb3VjaCBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IG11c3QgYmUgImZzbCxpbXg2dWwtdHNjIi4KKy0gcmVnOiB0aGlzIHRvdWNoIGNvbnRyb2xsZXIgYWRkcmVzcyBhbmQgdGhlIEFEQzIgYWRkcmVzcy4KKy0gaW50ZXJydXB0czogdGhlIGludGVycnVwdCBvZiB0aGlzIHRvdWNoIGNvbnRyb2xsZXIgYW5kIEFEQzIuCistIGNsb2NrczogdGhlIHJvb3QgY2xvY2sgb2YgdG91Y2ggY29udHJvbGxlciBhbmQgQURDMi4KKy0gY2xvY2stbmFtZXM7IG11c3QgYmUgInRzYyIgYW5kICJhZGMiLgorLSB4bnVyLWdwaW86IHRoZSBYLSBncGlvIHRoaXMgY29udHJvbGxlciBjb25uZWN0IHRvLgorICBUaGlzIHhudXItZ3BpbyByZXR1cm5zIHRvIGxvdyBvbmNlIHRoZSBmaW5nZXIgbGVhdmUgdGhlIHRvdWNoIHNjcmVlbiAoVGhlCisgIGxhc3QgdG91Y2ggZXZlbnQgdGhlIHRvdWNoIGNvbnRyb2xsZXIgY2FwdHVyZSkuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIG1lYXN1cmUtZGVsYXktdGltZTogdGhlIHZhbHVlIG9mIG1lYXN1cmUgZGVsYXkgdGltZS4KKyAgQmVmb3JlIFgtYXhpcyBvciBZLWF4aXMgbWVhc3VyZW1lbnQsIHRoZSBzY3JlZW4gbmVlZCBzb21lIHRpbWUgYmVmb3JlCisgIGV2ZW4gcG90ZW50aWFsIGRpc3RyaWJ1dGlvbiByZWFkeS4KKyAgVGhpcyB2YWx1ZSBkZXBlbmRzIG9uIHRoZSB0b3VjaCBzY3JlZW4uCistIHByZS1jaGFyZ2UtdGltZTogdGhlIHRvdWNoIHNjcmVlbiBuZWVkIHNvbWUgdGltZSB0byBwcmVjaGFyZ2UuCisgIFRoaXMgdmFsdWUgZGVwZW5kcyBvbiB0aGUgdG91Y2ggc2NyZWVuLgorCitFeGFtcGxlOgorCXRzYzogdHNjQDAyMDQwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsaW14NnVsLXRzYyI7CisJCXJlZyA9IDwweDAyMDQwMDAwIDB4NDAwMD4sIDwweDAyMTljMDAwIDB4NDAwMD47CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSAzIElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8R0lDX1NQSSAxMDEgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWNsb2NrcyA9IDwmY2xrcyBJTVg2VUxfQ0xLX0lQRz4sCisJCQkgPCZjbGtzIElNWDZVTF9DTEtfQURDMj47CisJCWNsb2NrLW5hbWVzID0gInRzYyIsICJhZGMiOworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfdHNjPjsKKwkJeG51ci1ncGlvID0gPCZncGlvMSAzIEdQSU9fQUNUSVZFX0xPVz47CisJCW1lYXN1cmUtZGVsYXktdGltZSA9IDwweGZmZj47CisJCXByZS1jaGFyZ2UtdGltZSA9IDwweGZmZmY+OworCQlzdGF0dXMgPSAib2theSI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9scGMzMnh4LXRzYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdG91Y2hzY3JlZW4vbHBjMzJ4eC10c2MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxY2JmNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdG91Y2hzY3JlZW4vbHBjMzJ4eC10c2MudHh0CkBAIC0wLDAgKzEsMTYgQEAKKyogTlhQIExQQzMyeHggU29DIFRvdWNoc2NyZWVuIENvbnRyb2xsZXIgKFRTQykKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogbXVzdCBiZSAibnhwLGxwYzMyMjAtdHNjIgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorLSBpbnRlcnJ1cHRzOiBUaGUgVFNDL0FEQyBpbnRlcnJ1cHQKKworRXhhbXBsZToKKworCXRzY0A0MDA0ODAwMCB7CisJCWNvbXBhdGlibGUgPSAibnhwLGxwYzMyMjAtdHNjIjsKKwkJcmVnID0gPDB4NDAwNDgwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmbWljPjsKKwkJaW50ZXJydXB0cyA9IDwzOSAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL21tczExNC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdG91Y2hzY3JlZW4vbW1zMTE0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWQ0YzU2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL21tczExNC50eHQKQEAgLTAsMCArMSwzNCBAQAorKiBNRUxGQVMgTU1TMTE0IHRvdWNoc2NyZWVuIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogbXVzdCBiZSAibWVsZmFzLG1tczExNCIKKy0gcmVnOiBJMkMgYWRkcmVzcyBvZiB0aGUgY2hpcAorLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgdG8gd2hpY2ggdGhlIGNoaXAgaXMgY29ubmVjdGVkCistIHgtc2l6ZTogaG9yaXpvbnRhbCByZXNvbHV0aW9uIG9mIHRvdWNoc2NyZWVuCistIHktc2l6ZTogdmVydGljYWwgcmVzb2x1dGlvbiBvZiB0b3VjaHNjcmVlbgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjb250YWN0LXRocmVzaG9sZDoKKy0gbW92aW5nLXRocmVzaG9sZDoKKy0geC1pbnZlcnQ6IGludmVydCBYIGF4aXMKKy0geS1pbnZlcnQ6IGludmVydCBZIGF4aXMKKworRXhhbXBsZToKKworCWkyY0AwMDAwMDAwMCB7CisJCS8qIC4uLiAqLworCisJCXRvdWNoc2NyZWVuQDQ4IHsKKwkJCWNvbXBhdGlibGUgPSAibWVsZmFzLG1tczExNCI7CisJCQlyZWcgPSA8MHg0OD47CisJCQlpbnRlcnJ1cHRzID0gPDM5IDA+OworCQkJeC1zaXplID0gPDcyMD47CisJCQl5LXNpemUgPSA8MTI4MD47CisJCQljb250YWN0LXRocmVzaG9sZCA9IDwxMD47CisJCQltb3ZpbmctdGhyZXNob2xkID0gPDEwPjsKKwkJCXgtaW52ZXJ0OworCQkJeS1pbnZlcnQ7CisJCX07CisKKwkJLyogLi4uICovCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9waXhjaXJfaTJjX3RzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9waXhjaXJfaTJjX3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWIyNDBhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL3BpeGNpcl9pMmNfdHMudHh0CkBAIC0wLDAgKzEsMjkgQEAKKyogUGl4Y2lyIEkyQyB0b3VjaHNjcmVlbiBjb250cm9sbGVycworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBtdXN0IGJlICJwaXhjaXIscGl4Y2lyX3RzIiBvciAicGl4Y2lyLHBpeGNpcl90YW5nb2MiCistIHJlZzogSTJDIGFkZHJlc3Mgb2YgdGhlIGNoaXAKKy0gaW50ZXJydXB0czogaW50ZXJydXB0IHRvIHdoaWNoIHRoZSBjaGlwIGlzIGNvbm5lY3RlZAorLSBhdHRiLWdwaW86IEdQSU8gY29ubmVjdGVkIHRvIHRoZSBBVFRCIGxpbmUgb2YgdGhlIGNoaXAKKy0gdG91Y2hzY3JlZW4tc2l6ZS14OiBob3Jpem9udGFsIHJlc29sdXRpb24gb2YgdG91Y2hzY3JlZW4gKGluIHBpeGVscykKKy0gdG91Y2hzY3JlZW4tc2l6ZS15OiB2ZXJ0aWNhbCByZXNvbHV0aW9uIG9mIHRvdWNoc2NyZWVuIChpbiBwaXhlbHMpCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHJlc2V0LWdwaW86IEdQSU8gY29ubmVjdGVkIHRvIHRoZSBSRVNFVCBsaW5lIG9mIHRoZSBjaGlwCisKK0V4YW1wbGU6CisKKwlpMmNAMDAwMDAwMDAgeworCQkvKiAuLi4gKi8KKworCQlwaXhjaXJfdHNANWMgeworCQkJY29tcGF0aWJsZSA9ICJwaXhjaXIscGl4Y2lyX3RzIjsKKwkJCXJlZyA9IDwweDVjPjsKKwkJCWludGVycnVwdHMgPSA8MiAwPjsKKwkJCWF0dGItZ3BpbyA9IDwmZ3BmIDIgMCAyPjsKKwkJCXRvdWNoc2NyZWVuLXNpemUteCA9IDw4MDA+OworCQkJdG91Y2hzY3JlZW4tc2l6ZS15ID0gPDYwMD47CisJCX07CisKKwkJLyogLi4uICovCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9zaXRyb25peC1zdDEyMzIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL3NpdHJvbml4LXN0MTIzMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRhZDQ4YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9zaXRyb25peC1zdDEyMzIudHh0CkBAIC0wLDAgKzEsMjQgQEAKKyogU2l0cm9uaXggc3QxMjMyIHRvdWNoc2NyZWVuIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogbXVzdCBiZSAic2l0cm9uaXgsc3QxMjMyIgorLSByZWc6IEkyQyBhZGRyZXNzIG9mIHRoZSBjaGlwCistIGludGVycnVwdHM6IGludGVycnVwdCB0byB3aGljaCB0aGUgY2hpcCBpcyBjb25uZWN0ZWQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gZ3Bpb3M6IGEgcGhhbmRsZSB0byB0aGUgcmVzZXQgR1BJTworCitFeGFtcGxlOgorCisJaTJjQDAwMDAwMDAwIHsKKwkJLyogLi4uICovCisKKwkJdG91Y2hzY3JlZW5ANTUgeworCQkJY29tcGF0aWJsZSA9ICJzaXRyb25peCxzdDEyMzIiOworCQkJcmVnID0gPDB4NTU+OworCQkJaW50ZXJydXB0cyA9IDwyIDA+OworCQkJZ3Bpb3MgPSA8JmdwaW8xIDE2NiAwPjsKKwkJfTsKKworCQkvKiAuLi4gKi8KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL3N0bXBlLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9zdG1wZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI3YmFhMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9zdG1wZS50eHQKQEAgLTAsMCArMSw0MyBAQAorU1RNUEUgVG91Y2hzY3JlZW4KKy0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGU6ICJzdCxzdG1wZS10cyIKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gc3Qsc2FtcGxlLXRpbWU6IEFEQyBjb252ZXJzdGlvbiB0aW1lIGluIG51bWJlciBvZiBjbG9jay4gICgwIC0+IDM2IGNsb2NrcywgMSAtPgorICA0NCBjbG9ja3MsIDIgLT4gNTYgY2xvY2tzLCAzIC0+IDY0IGNsb2NrcywgNCAtPiA4MCBjbG9ja3MsIDUgLT4gOTYgY2xvY2tzLCA2CisgIC0+IDE0NCBjbG9ja3MpLCByZWNvbW1lbmRlZCBpcyA0LgorLSBzdCxtb2QtMTJiOiBBREMgQml0IG1vZGUgKDAgLT4gMTBiaXQgQURDLCAxIC0+IDEyYml0IEFEQykKKy0gc3QscmVmLXNlbDogQURDIHJlZmVyZW5jZSBzb3VyY2UgKDAgLT4gaW50ZXJuYWwgcmVmZXJlbmNlLCAxIC0+IGV4dGVybmFsCisgIHJlZmVyZW5jZSkKKy0gc3QsYWRjLWZyZXE6IEFEQyBDbG9jayBzcGVlZCAoMCAtPiAxLjYyNSBNSHosIDEgLT4gMy4yNSBNSHosIDIgfHwgMyAtPiA2LjUgTUh6KQorLSBzdCxhdmUtY3RybDogU2FtcGxlIGF2ZXJhZ2UgY29udHJvbCAoMCAtPiAxIHNhbXBsZSwgMSAtPiAyIHNhbXBsZXMsIDIgLT4gNAorICBzYW1wbGVzLCAzIC0+IDggc2FtcGxlcykKKy0gc3QsdG91Y2gtZGV0LWRlbGF5OiBUb3VjaCBkZXRlY3QgaW50ZXJydXB0IGRlbGF5ICgwIC0+IDEwIHVzLCAxIC0+IDUwIHVzLCAyIC0+CisgIDEwMCB1cywgMyAtPiA1MDAgdXMsIDQtPiAxIG1zLCA1IC0+IDUgbXMsIDYgLT4gMTAgbXMsIDcgLT4gNTAgbXMpIHJlY29tbWVuZGVkCisgIGlzIDMKKy0gc3Qsc2V0dGxpbmc6IFBhbmVsIGRyaXZlciBzZXR0bGluZyB0aW1lICgwIC0+IDEwIHVzLCAxIC0+IDEwMCB1cywgMiAtPiA1MDAgdXMsIDMKKyAgLT4gMSBtcywgNCAtPiA1IG1zLCA1IC0+IDEwIG1zLCA2IGZvciA1MCBtcywgNyAtPiAxMDAgbXMpIHJlY29tbWVuZGVkIGlzIDIKKy0gc3QsZnJhY3Rpb24tejogTGVuZ3RoIG9mIHRoZSBmcmFjdGlvbmFsIHBhcnQgaW4geiAoZnJhY3Rpb24teiAoWzAuLjddKSA9IENvdW50IG9mCisgIHRoZSBmcmFjdGlvbmFsIHBhcnQpIHJlY29tbWVuZGVkIGlzIDcKKy0gc3QsaS1kcml2ZTogY3VycmVudCBsaW1pdCB2YWx1ZSBvZiB0aGUgdG91Y2hzY3JlZW4gZHJpdmVycyAoMCAtPiAyMCBtQSB0eXBpY2FsIDM1CisgIG1BIG1heCwgMSAtPiA1MCBtQSB0eXBpY2FsIDgwIG1BIG1heCkKKworTm9kZSBuYW1lIG11c3QgYmUgc3RtcGVfdG91Y2hzY3JlZW4gYW5kIHNob3VsZCBiZSBjaGlsZCBub2RlIG9mIHN0bXBlIG5vZGUgdG8KK3doaWNoIGl0IGJlbG9uZ3MuCisKK0V4YW1wbGU6CisKKwlzdG1wZV90b3VjaHNjcmVlbiB7CisJCWNvbXBhdGlibGUgPSAic3Qsc3RtcGUtdHMiOworCQlzdCxzYW1wbGUtdGltZSA9IDw0PjsKKwkJc3QsbW9kLTEyYiA9IDwxPjsKKwkJc3QscmVmLXNlbCA9IDwwPjsKKwkJc3QsYWRjLWZyZXEgPSA8MT47CisJCXN0LGF2ZS1jdHJsID0gPDE+OworCQlzdCx0b3VjaC1kZXQtZGVsYXkgPSA8Mj47CisJCXN0LHNldHRsaW5nID0gPDI+OworCQlzdCxmcmFjdGlvbi16ID0gPDc+OworCQlzdCxpLWRyaXZlID0gPDE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdG91Y2hzY3JlZW4vc3VuNGkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL3N1bjRpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWFiZWNkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL3N1bjRpLnR4dApAQCAtMCwwICsxLDM4IEBACitzdW40aSByZXNpc3RpdmUgdG91Y2hzY3JlZW4gY29udHJvbGxlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGU6ICJhbGx3aW5uZXIsc3VuNGktYTEwLXRzIiwgImFsbHdpbm5lcixzdW41aS1hMTMtdHMiIG9yCisgICAiYWxsd2lubmVyLHN1bjZpLWEzMS10cyIKKyAtIHJlZzogbW1pbyBhZGRyZXNzIHJhbmdlIG9mIHRoZSBjaGlwCisgLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgdG8gd2hpY2ggdGhlIGNoaXAgaXMgY29ubmVjdGVkCisgLSAjdGhlcm1hbC1zZW5zb3ItY2VsbHM6IHNoYWxsIGJlIDAKKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAtIGFsbHdpbm5lcix0cy1hdHRhY2hlZAkgOiBib29sZWFuIGluZGljYXRpbmcgdGhhdCBhbiBhY3R1YWwgdG91Y2hzY3JlZW4KKwkJCQkgICBpcyBhdHRhY2hlZCB0byB0aGUgY29udHJvbGxlcgorIC0gYWxsd2lubmVyLHRwLXNlbnNpdGl2ZS1hZGp1c3QgOiBpbnRlZ2VyICg0IGJpdHMpCisJCQkJICAgYWRqdXN0IHNlbnNpdGl2aXR5IG9mIHBlbiBkb3duIGRldGVjdGlvbgorCQkJCSAgIGJldHdlZW4gMCAobGVhc3Qgc2Vuc2l0aXZlKSBhbmQgMTUKKwkJCQkgICAoZGVmYXVsdHMgdG8gMTUpCisgLSBhbGx3aW5uZXIsZmlsdGVyLXR5cGUJIDogaW50ZWdlciAoMiBiaXRzKQorCQkJCSAgIHNlbGVjdCBtZWRpYW4gYW5kIGF2ZXJhZ2luZyBmaWx0ZXIKKwkJCQkgICBzYW1wbGVzIHVzZWQgZm9yIG1lZGlhbiAvIGF2ZXJhZ2luZyBmaWx0ZXIKKwkJCQkgICAwOiA0LzIKKwkJCQkgICAxOiA1LzMKKwkJCQkgICAyOiA4LzQKKwkJCQkgICAzOiAxNi84CisJCQkJICAgKGRlZmF1bHRzIHRvIDEpCisKK0V4YW1wbGU6CisKKwlydHA6IHJ0cEAwMWMyNTAwMCB7CisJCWNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjRpLWExMC10cyI7CisJCXJlZyA9IDwweDAxYzI1MDAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDwyOT47CisJCWFsbHdpbm5lcix0cy1hdHRhY2hlZDsKKwkJI3RoZXJtYWwtc2Vuc29yLWNlbGxzID0gPDA+OworCQkvKiBzZW5zaXRpdmUvbm9pc3kgdG91Y2ggcGFuZWwgKi8KKwkJYWxsd2lubmVyLHRwLXNlbnNpdGl2ZS1hZGp1c3QgPSA8MD47CisJCWFsbHdpbm5lcixmaWx0ZXItdHlwZSA9IDwzPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL3N4ODY1NC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdG91Y2hzY3JlZW4vc3g4NjU0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWFhNmIzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL3N4ODY1NC50eHQKQEAgLTAsMCArMSwxNiBAQAorKiBTZW10ZWNoIFNYODY1NCBJMkMgVG91Y2hzY3JlZW4gQ29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBtdXN0IGJlICJzZW10ZWNoLHN4ODY1NCIKKy0gcmVnOiBpMmMgc2xhdmUgYWRkcmVzcworLSBpbnRlcnJ1cHQtcGFyZW50OiB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyCistIGludGVycnVwdHM6IHRvdWNoIGNvbnRyb2xsZXIgaW50ZXJydXB0CisKK0V4YW1wbGU6CisKKwlzeDg2NTRANDggeworCQljb21wYXRpYmxlID0gInNlbXRlY2gsc3g4NjU0IjsKKwkJcmVnID0gPDB4NDg+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvNj47CisJCWludGVycnVwdHMgPSA8MyBJUlFfVFlQRV9FREdFX0ZBTExJTkc+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdG91Y2hzY3JlZW4vdGktdHNjLWFkYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdG91Y2hzY3JlZW4vdGktdHNjLWFkYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjExNjNiZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi90aS10c2MtYWRjLnR4dApAQCAtMCwwICsxLDgzIEBACisqIFRJIC0gVFNDIEFEQyAoVG91c2Noc2NyZWVuIGFuZCBhbmFsb2cgZGlnaXRhbCBjb252ZXJ0ZXIpCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNoaWxkICJ0c2MiCisJdGksd2lyZXM6IFdpcmVzIHJlZmVyIHRvIGFwcGxpY2F0aW9uIG1vZGVzIGkuZS4gNC81Lzggd2lyZSB0b3VjaHNjcmVlbgorCQkgIHN1cHBvcnQgb24gdGhlIHBsYXRmb3JtLgorCXRpLHgtcGxhdGUtcmVzaXN0YW5jZTogWCBwbGF0ZSByZXNpc3RhbmNlCisJdGksY29vcmRpbmF0ZS1yZWFkb3V0czogVGhlIHNlcXVlbmNlciBzdXBwb3J0cyBhIHRvdGFsIG9mIDE2CisJCQkJcHJvZ3JhbW1hYmxlIHN0ZXBzIGVhY2ggc3RlcCBpcyB1c2VkIHRvCisJCQkJcmVhZCBhIHNpbmdsZSBjb29yZGluYXRlLiBBIHNpbmdsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb3V0IGlzIGVub3VnaCBidXQgbXVsdGlwbGUgcmVhZHMgY2FuCisJCQkJaW5jcmVhc2UgdGhlIHF1YWxpdHkuCisJCQkJQSB2YWx1ZSBvZiA1IG1lYW5zLCA1IHJlYWRzIGZvciBYLCA1IGZvcgorCQkJCVkgYW5kIDIgZm9yIFogKGFsd2F5cykuIFRoaXMgdXRpbGlzZXMgMTIKKwkJCQlvZiB0aGUgMTYgc29mdHdhcmUgc3RlcHMgYXZhaWxhYmxlLiBUaGUKKwkJCQlyZW1haW5pbmcgNCBjYW4gYmUgdXNlZCBieSB0aGUgQURDLgorCXRpLHdpcmUtY29uZmlnOiBEaWZmZXJlbnQgYm9hcmRzIGNvdWxkIGhhdmUgYSBkaWZmZXJlbnQgb3JkZXIgZm9yCisJCQljb25uZWN0aW5nIHdpcmVzIG9uIHRvdWNoc2NyZWVuLiBXZSBuZWVkIHRvIHByb3ZpZGUgYW4KKwkJCTggYml0IG51bWJlciB3aGVyZSBpbiB0aGUgMXN0IGZvdXIgYml0cyByZXByZXNlbnQgdGhlCisJCQlhbmFsb2cgbGluZXMgYW5kIHRoZSBuZXh0IDQgYml0cyByZXByZXNlbnQgcG9zaXRpdmUvCisJCQluZWdhdGl2ZSB0ZXJtaW5hbCBvbiB0aGF0IGlucHV0IGxpbmUuIE5vdGF0aW9ucyB0bworCQkJcmVwcmVzZW50IHRoZSBpbnB1dCBsaW5lcyBhbmQgdGVybWluYWxzIHJlc29lY3RpdmVseQorCQkJaXMgYXMgZm9sbG93czoKKwkJCUFJTjAgPSAwLCBBSU4xID0gMSBhbmQgc28gb24gdGlsbCBBSU43ID0gNy4KKwkJCVhQICA9IDAsIFhOID0gMSwgWVAgPSAyLCBZTiA9IDMuCistIGNoaWxkICJhZGMiCisJdGksYWRjLWNoYW5uZWxzOiBMaXN0IG9mIGFuYWxvZyBpbnB1dHMgYXZhaWxhYmxlIGZvciBBREMuCisJCQkgQUlOMCA9IDAsIEFJTjEgPSAxIGFuZCBzbyBvbiB0aWxsIEFJTjcgPSA3LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjaGlsZCAidHNjIgorCXRpLGNoYXJnZS1kZWxheTogTGVuZ3RoIG9mIHRvdWNoIHNjcmVlbiBjaGFyZ2UgZGVsYXkgc3RlcCBpbiB0ZXJtcyBvZgorCQkJIEFEQyBjbG9jayBjeWNsZXMuIENoYXJnZSBkZWxheSB2YWx1ZSBzaG91bGQgYmUgbGFyZ2UKKwkJCSBpbiBvcmRlciB0byBhdm9pZCBmYWxzZSBwZW4tdXAgZXZlbnRzLiBUaGlzIHZhbHVlCisJCQkgZWZmZWN0cyB0aGUgb3ZlcmFsbCBzYW1wbGluZyBzcGVlZCwgaGVuY2UgbmVlZCB0byBiZQorCQkJIGtlcHQgYXMgbG93IGFzIHBvc3NpYmxlLCB3aGlsZSBhdm9pZGluZyBmYWxzZSBwZW4tdXAKKwkJCSBldmVudC4gU3RhcnQgZnJvbSBhIGxvd2VyIHZhbHVlLCBzYXkgMHg0MDAsIGFuZAorCQkJIGluY3JlYXNlIHZhbHVlIHVudGlsIGZhbHNlIHBlbi11cCBldmVudHMgYXJlIGF2b2lkZWQuCisJCQkgVGhlIHBlbi11cCBkZXRlY3Rpb24gaGFwcGVucyBpbW1lZGlhdGVseSBhZnRlciB0aGUKKwkJCSBjaGFyZ2Ugc3RlcCwgc28gdGhpcyBkb2VzIGluIGZhY3QgZnVuY3Rpb24gYXMgYQorCQkJIGhhcmR3YXJlIGtub2IgZm9yIGFkanVzdGluZyB0aGUgYW1vdW50IG9mICJzZXR0bGluZworCQkJIHRpbWUiLgorCistIGNoaWxkICJhZGMiCisJdGksY2hhbi1zdGVwLW9wZW5kZWxheTogTGlzdCBvZiBvcGVuIGRlbGF5cyBmb3IgZWFjaCBjaGFubmVsIG9mCisJCQkJQURDIGluIHRoZSBvcmRlciBvZiB0aSxhZGMtY2hhbm5lbHMuIFRoZQorCQkJCXZhbHVlIGNvcnJlc3BvbmRzIHRvIHRoZSBudW1iZXIgb2YgQURDCisJCQkJY2xvY2sgY3ljbGVzIHRvIHdhaXQgYWZ0ZXIgYXBwbHlpbmcgdGhlCisJCQkJc3RlcCBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhbmQgYmVmb3JlCisJCQkJc2VuZGluZyB0aGUgc3RhcnQgb2YgQURDIGNvbnZlcnNpb24uCisJCQkJTWF4aW11bSB2YWx1ZSBpcyAweDNGRkZGLgorICAgICAgIHRpLGNoYW4tc3RlcC1zYW1wbGVkZWxheTogTGlzdCBvZiBzYW1wbGUgZGVsYXlzIGZvciBlYWNoIGNoYW5uZWwKKwkJCQkgIG9mIEFEQyBpbiB0aGUgb3JkZXIgb2YgdGksYWRjLWNoYW5uZWxzLgorCQkJCSAgVGhlIHZhbHVlIGNvcnJlc3BvbmRzIHRvIHRoZSBudW1iZXIgb2YKKwkJCQkgIEFEQyBjbG9jayBjeWNsZXMgdG8gc2FtcGxlICh0byBob2xkCisJCQkJICBzdGFydCBvZiBjb252ZXJzaW9uIGhpZ2gpLgorCQkJCSAgTWF4aW11bSB2YWx1ZSBpcyAweEZGLgorICAgICAgIHRpLGNoYW4tc3RlcC1hdmc6IE51bWJlciBvZiBhdmVyYWdlcyB0byBiZSBwZXJmb3JtZWQgZm9yIGVhY2gKKwkJCSAgY2hhbm5lbCBvZiBBREMuIElmIGF2ZXJhZ2UgaXMgMTYgdGhlbiBpbnB1dAorCQkJICBpcyBzYW1wbGVkIDE2IHRpbWVzIGFuZCBhdmVyYWdlZCB0byBnZXQgbW9yZQorCQkJICBhY2N1cmF0ZSB2YWx1ZS4gVGhpcyBpbmNyZWFzZXMgdGhlIHRpbWUgdGFrZW4KKwkJCSAgYnkgQURDIHRvIGdlbmVyYXRlIGEgc2FtcGxlLiBWYWxpZCByYW5nZSBpcyAwCisJCQkgIGF2ZXJhZ2UgdG8gMTYgYXZlcmFnZXMuIE1heGltdW0gdmFsdWUgaXMgMTYuCisKK0V4YW1wbGU6CisJdHNjYWRjOiB0c2NhZGNANDRlMGQwMDAgeworCQljb21wYXRpYmxlID0gInRpLGFtMzM1OS10c2NhZGMiOworCQl0c2MgeworCQkJdGksd2lyZXMgPSA8ND47CisJCQl0aSx4LXBsYXRlLXJlc2lzdGFuY2UgPSA8MjAwPjsKKwkJCXRpLGNvb3JkaWFudGUtcmVhZG91dHMgPSA8NT47CisJCQl0aSx3aXJlLWNvbmZpZyA9IDwweDAwIDB4MTEgMHgyMiAweDMzPjsKKwkJCXRpLGNoYXJnZS1kZWxheSA9IDwweDQwMD47CisJCX07CisKKwkJYWRjIHsKKwkJCXRpLGFkYy1jaGFubmVscyA9IDw0IDUgNiA3PjsKKwkJCXRpLGNoYW4tc3RlcC1vcGVuZGVsYXkgPSA8MHgwOTggMHgzZmZmZiAweDA5OCAweDA+OworCQkJdGksY2hhbi1zdGVwLXNhbXBsZWRlbGF5ID0gPDB4ZmYgMHgwIDB4ZiAweDA+OworCQkJdGksY2hhbi1zdGVwLWF2ZyA9IDwxNiAyIDQgOD47CisJCX07CisJfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL3RvdWNoc2NyZWVuLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi90b3VjaHNjcmVlbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWMyM2NhZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi90b3VjaHNjcmVlbi50eHQKQEAgLTAsMCArMSwyOSBAQAorR2VuZXJhbCBUb3VjaHNjcmVlbiBQcm9wZXJ0aWVzOgorCitPcHRpb25hbCBwcm9wZXJ0aWVzIGZvciBUb3VjaHNjcmVlbnM6CisgLSB0b3VjaHNjcmVlbi1zaXplLXgJCTogaG9yaXpvbnRhbCByZXNvbHV0aW9uIG9mIHRvdWNoc2NyZWVuCisJCQkJICAoaW4gcGl4ZWxzKQorIC0gdG91Y2hzY3JlZW4tc2l6ZS15CQk6IHZlcnRpY2FsIHJlc29sdXRpb24gb2YgdG91Y2hzY3JlZW4KKwkJCQkgIChpbiBwaXhlbHMpCisgLSB0b3VjaHNjcmVlbi1tYXgtcHJlc3N1cmUJOiBtYXhpbXVtIHJlcG9ydGVkIHByZXNzdXJlIChhcmJpdHJhcnkgcmFuZ2UKKwkJCQkgIGRlcGVuZGVudCBvbiB0aGUgY29udHJvbGxlcikKKyAtIHRvdWNoc2NyZWVuLWZ1enoteAkJOiBob3Jpem9udGFsIG5vaXNlIHZhbHVlIG9mIHRoZSBhYnNvbHV0ZSBpbnB1dAorCQkJCSAgZGV2aWNlIChpbiBwaXhlbHMpCisgLSB0b3VjaHNjcmVlbi1mdXp6LXkJCTogdmVydGljYWwgbm9pc2UgdmFsdWUgb2YgdGhlIGFic29sdXRlIGlucHV0CisJCQkJICBkZXZpY2UgKGluIHBpeGVscykKKyAtIHRvdWNoc2NyZWVuLWZ1enotcHJlc3N1cmUJOiBwcmVzc3VyZSBub2lzZSB2YWx1ZSBvZiB0aGUgYWJzb2x1dGUgaW5wdXQKKwkJCQkgIGRldmljZSAoYXJiaXRyYXJ5IHJhbmdlIGRlcGVuZGVudCBvbiB0aGUKKwkJCQkgIGNvbnRyb2xsZXIpCisgLSB0b3VjaHNjcmVlbi1pbnZlcnRlZC14CTogWCBheGlzIGlzIGludmVydGVkIChib29sZWFuKQorIC0gdG91Y2hzY3JlZW4taW52ZXJ0ZWQteQk6IFkgYXhpcyBpcyBpbnZlcnRlZCAoYm9vbGVhbikKKyAtIHRvdWNoc2NyZWVuLXN3YXBwZWQteC15CTogWCBhbmQgWSBheGlzIGFyZSBzd2FwcGVkIChib29sZWFuKQorCQkJCSAgU3dhcHBpbmcgaXMgZG9uZSBhZnRlciBpbnZlcnRpbmcgdGhlIGF4aXMKKworRGVwcmVjYXRlZCBwcm9wZXJ0aWVzIGZvciBUb3VjaHNjcmVlbnM6CisgLSB4LXNpemUJCQk6IGRlcHJlY2F0ZWQgbmFtZSBmb3IgdG91Y2hzY3JlZW4tc2l6ZS14CisgLSB5LXNpemUJCQk6IGRlcHJlY2F0ZWQgbmFtZSBmb3IgdG91Y2hzY3JlZW4tc2l6ZS15CisgLSBtb3ZpbmctdGhyZXNob2xkCQk6IGRlcHJlY2F0ZWQgbmFtZSBmb3IgYSBjb21iaW5hdGlvbiBvZgorCQkJCSAgdG91Y2hzY3JlZW4tZnV6ei14IGFuZCB0b3VjaHNjcmVlbi1mdXp6LXkKKyAtIGNvbnRhY3QtdGhyZXNob2xkCQk6IGRlcHJlY2F0ZWQgbmFtZSBmb3IgdG91Y2hzY3JlZW4tZnV6ei1wcmVzc3VyZQorIC0geC1pbnZlcnQJCQk6IGRlcHJlY2F0ZWQgbmFtZSBmb3IgdG91Y2hzY3JlZW4taW52ZXJ0ZWQteAorIC0geS1pbnZlcnQJCQk6IGRlcHJlY2F0ZWQgbmFtZSBmb3IgdG91Y2hzY3JlZW4taW52ZXJ0ZWQteQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL3RzYzIwMDUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL3RzYzIwMDUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MGMwNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdG91Y2hzY3JlZW4vdHNjMjAwNS50eHQKQEAgLTAsMCArMSw2NCBAQAorKiBUZXhhcyBJbnN0cnVtZW50cyB0c2MyMDA0IGFuZCB0c2MyMDA1IHRvdWNoc2NyZWVuIGNvbnRyb2xsZXJzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlCQkgICAgICA6ICJ0aSx0c2MyMDA0IiBvciAidGksdHNjMjAwNSIKKyAtIHJlZwkJCSAgICAgIDogRGV2aWNlIGFkZHJlc3MKKyAtIGludGVycnVwdHMJCSAgICAgIDogSVJRIHNwZWNpZmllcgorIC0gc3BpLW1heC1mcmVxdWVuY3kJICAgICAgOiBNYXhpbXVtIFNQSSBjbG9ja2luZyBzcGVlZCBvZiB0aGUgZGV2aWNlCisJCQkgICAgICAgIChmb3IgdHNjMjAwNSkKKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAtIHZpby1zdXBwbHkJCSAgICAgIDogUmVndWxhdG9yIHNwZWNpZmllcgorIC0gcmVzZXQtZ3Bpb3MJCSAgICAgIDogR1BJTyBzcGVjaWZpZXIgZm9yIHRoZSBjb250cm9sbGVyIHJlc2V0IGxpbmUKKyAtIHRpLHgtcGxhdGUtb2htcwkgICAgICA6IGludGVnZXIsIHJlc2lzdGFuY2Ugb2YgdGhlIHRvdWNoc2NyZWVuJ3MgWCBwbGF0ZXMKKwkJCQlpbiBvaG0gKGRlZmF1bHRzIHRvIDI4MCkKKyAtIHRpLGVzZC1yZWNvdmVyeS10aW1lb3V0LW1zIDogaW50ZWdlciwgaWYgdGhlIHRvdWNoc2NyZWVuIGRvZXMgbm90IHJlc3BvbmQgYWZ0ZXIKKwkJCQl0aGUgY29uZmlndXJlZCB0aW1lIChpbiBtaWxsaSBzZWNvbmRzKSwgdGhlIGRyaXZlcgorCQkJCXdpbGwgcmVzZXQgaXQuIFRoaXMgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KKyAtIHByb3BlcnRpZXMgZGVmaW5lZCBpbiB0b3VjaHNjcmVlbi50eHQKKworRXhhbXBsZToKKworJmkyYzMgeworCXRzYzIwMDRANDggeworCQljb21wYXRpYmxlID0gInRpLHRzYzIwMDQiOworCQlyZWcgPSA8MHg0OD47CisJCXZpby1zdXBwbHkgPSA8JnZpbz47CisKKwkJcmVzZXQtZ3Bpb3MgPSA8JmdwaW80IDggR1BJT19BQ1RJVkVfSElHSD47CisJCWludGVycnVwdHMtZXh0ZW5kZWQgPSA8JmdwaW8xIDI3IElSUV9UWVBFX0VER0VfUklTSU5HPjsKKworCQl0b3VjaHNjcmVlbi1mdXp6LXggPSA8ND47CisJCXRvdWNoc2NyZWVuLWZ1enoteSA9IDw3PjsKKwkJdG91Y2hzY3JlZW4tZnV6ei1wcmVzc3VyZSA9IDwyPjsKKwkJdG91Y2hzY3JlZW4tc2l6ZS14ID0gPDQwOTY+OworCQl0b3VjaHNjcmVlbi1zaXplLXkgPSA8NDA5Nj47CisJCXRvdWNoc2NyZWVuLW1heC1wcmVzc3VyZSA9IDwyMDQ4PjsKKworCQl0aSx4LXBsYXRlLW9obXMgPSA8MjgwPjsKKwkJdGksZXNkLXJlY292ZXJ5LXRpbWVvdXQtbXMgPSA8ODAwMD47CisJfTsKK30KKworJm1jc3BpMSB7CisJdHNjMjAwNUAwIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSx0c2MyMDA1IjsKKwkJc3BpLW1heC1mcmVxdWVuY3kgPSA8NjAwMDAwMD47CisJCXJlZyA9IDwwPjsKKworCQl2aW8tc3VwcGx5ID0gPCZ2aW8+OworCisJCXJlc2V0LWdwaW9zID0gPCZncGlvNCA4IEdQSU9fQUNUSVZFX0hJR0g+OyAvKiAxMDQgKi8KKwkJaW50ZXJydXB0cy1leHRlbmRlZCA9IDwmZ3BpbzQgNCBJUlFfVFlQRV9FREdFX1JJU0lORz47IC8qIDEwMCAqLworCisJCXRvdWNoc2NyZWVuLWZ1enoteCA9IDw0PjsKKwkJdG91Y2hzY3JlZW4tZnV6ei15ID0gPDc+OworCQl0b3VjaHNjcmVlbi1mdXp6LXByZXNzdXJlID0gPDI+OworCQl0b3VjaHNjcmVlbi1zaXplLXggPSA8NDA5Nj47CisJCXRvdWNoc2NyZWVuLXNpemUteSA9IDw0MDk2PjsKKwkJdG91Y2hzY3JlZW4tbWF4LXByZXNzdXJlID0gPDIwNDg+OworCisJCXRpLHgtcGxhdGUtb2htcyA9IDwyODA+OworCQl0aSxlc2QtcmVjb3ZlcnktdGltZW91dC1tcyA9IDw4MDAwPjsKKwl9OworfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL3RzYzIwMDcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL3RzYzIwMDcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMzY1ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdG91Y2hzY3JlZW4vdHNjMjAwNy50eHQKQEAgLTAsMCArMSw0MSBAQAorKiBUZXhhcyBJbnN0cnVtZW50cyB0c2MyMDA3IHRvdWNoc2NyZWVuIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogbXVzdCBiZSAidGksdHNjMjAwNyIuCistIHJlZzogSTJDIGFkZHJlc3Mgb2YgdGhlIGNoaXAuCistIHRpLHgtcGxhdGUtb2htczogWC1wbGF0ZSByZXNpc3RhbmNlIGluIG9obXMuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGdwaW9zOiB0aGUgaW50ZXJydXB0IGdwaW8gdGhlIGNoaXAgaXMgY29ubmVjdGVkIHRvICh0cm91Z2ggdGhlIHBlbmlycSBwaW4pLgorICBUaGUgcGVuaXJxIHBpbiBnb2VzIHRvIGxvdyB3aGVuIHRoZSBwYW5lbCBpcyB0b3VjaGVkLgorICAoc2VlIEdQSU8gYmluZGluZ1sxXSBmb3IgbW9yZSBkZXRhaWxzKS4KKy0gaW50ZXJydXB0LXBhcmVudDogdGhlIHBoYW5kbGUgZm9yIHRoZSBncGlvIGNvbnRyb2xsZXIKKyAgKHNlZSBpbnRlcnJ1cHQgYmluZGluZ1swXSkuCistIGludGVycnVwdHM6IChncGlvKSBpbnRlcnJ1cHQgdG8gd2hpY2ggdGhlIGNoaXAgaXMgY29ubmVjdGVkCisgIChzZWUgaW50ZXJydXB0IGJpbmRpbmdbMF0pLgorLSB0aSxtYXgtcnQ6IG1heGltdW0gcHJlc3N1cmUuCistIHRpLGZ1enp4OiBzcGVjaWZpZXMgdGhlIGFic29sdXRlIGlucHV0IGZ1enogeCB2YWx1ZS4KKyAgSWYgc2V0LCBpdCB3aWxsIHBlcm1pdCBub2lzZSBpbiB0aGUgZGF0YSB1cCB0byArLSB0aGUgdmFsdWUgZ2l2ZW4gdG8gdGhlIGZ1enoKKyAgcGFyYW1ldGVyLCB0aGF0IGlzIHVzZWQgdG8gZmlsdGVyIG5vaXNlIGZyb20gdGhlIGV2ZW50IHN0cmVhbS4KKy0gdGksZnV6enk6IHNwZWNpZmllcyB0aGUgYWJzb2x1dGUgaW5wdXQgZnV6eiB5IHZhbHVlLgorLSB0aSxmdXp6ejogc3BlY2lmaWVzIHRoZSBhYnNvbHV0ZSBpbnB1dCBmdXp6IHogdmFsdWUuCistIHRpLHBvbGwtcGVyaW9kOiBob3cgbXVjaCB0aW1lIHRvIHdhaXQgKGluIG1pbGxpc2Vjb25kcykgYmVmb3JlIHJlYWRpbmcgYWdhaW4gdGhlCisgIHZhbHVlcyBmcm9tIHRoZSB0c2MyMDA3LgorCitbMF06IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlcnJ1cHRzLnR4dAorWzFdOiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLnR4dAorCitFeGFtcGxlOgorCSZpMmMxIHsKKwkJLyogLi4uICovCisJCXRzYzIwMDdANDkgeworCQkJY29tcGF0aWJsZSA9ICJ0aSx0c2MyMDA3IjsKKwkJCXJlZyA9IDwweDQ5PjsKKwkJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW80PjsKKwkJCWludGVycnVwdHMgPSA8MHgwIDB4OD47CisJCQlncGlvcyA9IDwmZ3BpbzQgMCAwPjsKKwkJCXRpLHgtcGxhdGUtb2htcyA9IDwxODA+OworCQl9OworCisJCS8qIC4uLiAqLworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdG91Y2hzY3JlZW4vemZvcmNlX3RzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi96Zm9yY2VfdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzYzI3YzQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdG91Y2hzY3JlZW4vemZvcmNlX3RzLnR4dApAQCAtMCwwICsxLDM0IEBACisqIE5lb25vZGUgaW5mcmFyZWQgdG91Y2hzY3JlZW4gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBtdXN0IGJlICJuZW9ub2RlLHpmb3JjZSIKKy0gcmVnOiBJMkMgYWRkcmVzcyBvZiB0aGUgY2hpcAorLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgdG8gd2hpY2ggdGhlIGNoaXAgaXMgY29ubmVjdGVkCistIHJlc2V0LWdwaW9zOiByZXNldCBncGlvIHRoZSBjaGlwIGlzIGNvbm5lY3RlZCB0bworLSB4LXNpemU6IGhvcml6b250YWwgcmVzb2x1dGlvbiBvZiB0b3VjaHNjcmVlbgorLSB5LXNpemU6IHZlcnRpY2FsIHJlc29sdXRpb24gb2YgdG91Y2hzY3JlZW4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gaXJxLWdwaW9zIDogaW50ZXJydXB0IGdwaW8gdGhlIGNoaXAgaXMgY29ubmVjdGVkIHRvCistIHZkZC1zdXBwbHk6IFJlZ3VsYXRvciBjb250cm9sbGluZyB0aGUgY29udHJvbGxlciBzdXBwbHkKKworRXhhbXBsZToKKworCWkyY0AwMDAwMDAwMCB7CisJCS8qIC4uLiAqLworCisJCXpmb3JjZV90c0A1MCB7CisJCQljb21wYXRpYmxlID0gIm5lb25vZGUsemZvcmNlIjsKKwkJCXJlZyA9IDwweDUwPjsKKwkJCWludGVycnVwdHMgPSA8MiAwPjsKKwkJCXZkZC1zdXBwbHkgPSA8JnJlZ196Zm9yY2VfdmRkPjsKKworCQkJcmVzZXQtZ3Bpb3MgPSA8JmdwaW81IDkgMD47IC8qIFJTVCAqLworCQkJaXJxLWdwaW9zID0gPCZncGlvNSA2IDA+OyAvKiBJUlEsIG9wdGlvbmFsICovCisKKwkJCXgtc2l6ZSA9IDw4MDA+OworCQkJeS1zaXplID0gPDYwMD47CisJCX07CisKKwkJLyogLi4uICovCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90cHM2NTIxOC1wd3JidXR0b24udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RwczY1MjE4LXB3cmJ1dHRvbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMwZTBiOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90cHM2NTIxOC1wd3JidXR0b24udHh0CkBAIC0wLDAgKzEsMTcgQEAKK1RleGFzIEluc3RydW1lbnRzIFRQUzY1MjE4IHBvd2VyIGJ1dHRvbgorCitUaGlzIGRyaXZlciBwcm92aWRlcyBhIHNpbXBsZSBwb3dlciBidXR0b24gZXZlbnQgdmlhIGFuIEludGVycnVwdC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJ0aSx0cHM2NTIxOC1wd3JidXR0b24iCistIGludGVycnVwdHM6IHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZworICAgLSA8MyBJUlFfVFlQRV9FREdFX0JPVEg+OiBGb3IgY29udHJvbGxlcnMgY29tcGF0aWJsZSB3aXRoIHRwczY1MjE4CisKK0V4YW1wbGU6CisKKyZ0cHMgeworCXBvd2VyLWJ1dHRvbiB7CisJCWNvbXBhdGlibGUgPSAidGksdHBzNjUyMTgtcHdyYnV0dG9uIjsKKwkJaW50ZXJydXB0cyA9IDwzIElSUV9UWVBFX0VER0VfQk9USD47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvdHdsNDAzMC1rZXlwYWQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3R3bDQwMzAta2V5cGFkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGJlMmY3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3R3bDQwMzAta2V5cGFkLnR4dApAQCAtMCwwICsxLDI3IEBACisqIFRXTDQwMzAncyBLZXlwYWQgQ29udHJvbGxlciBkZXZpY2UgdHJlZSBiaW5kaW5ncworCitUV0w0MDMwJ3MgS2V5cGFkIGNvbnRyb2xsZXIgaXMgdXNlZCB0byBpbnRlcmZhY2UgYSBTb0Mgd2l0aCBhIG1hdHJpeC10eXBlCitrZXlwYWQgZGV2aWNlLiBUaGUga2V5cGFkIGNvbnRyb2xsZXIgc3VwcG9ydHMgbXVsdGlwbGUgcm93IGFuZCBjb2x1bW4gbGluZXMuCitBIGtleSBjYW4gYmUgcGxhY2VkIGF0IGVhY2ggaW50ZXJzZWN0aW9uIG9mIGEgdW5pcXVlIHJvdyBhbmQgYSB1bmlxdWUgY29sdW1uLgorVGhlIGtleXBhZCBjb250cm9sbGVyIGNhbiBzZW5zZSBhIGtleS1wcmVzcyBhbmQga2V5LXJlbGVhc2UgYW5kIHJlcG9ydCB0aGUKK2V2ZW50IHVzaW5nIGEgaW50ZXJydXB0IHRvIHRoZSBjcHUuCisKK1RoaXMgYmluZGluZyBpcyBiYXNlZCBvbiB0aGUgbWF0cml4LWtleW1hcCBiaW5kaW5nIHdpdGggdGhlIGZvbGxvd2luZworY2hhbmdlczoKKworICoga2V5cGFkLG51bS1yb3dzIGFuZCBrZXlwYWQsbnVtLWNvbHVtbnMgYXJlIHJlcXVpcmVkLgorCitSZXF1aXJlZCBTb0MgU3BlY2lmaWMgUHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nCisgICAtICJ0aSx0d2w0MDMwLWtleXBhZCI6IEZvciBjb250cm9sbGVycyBjb21wYXRpYmxlIHdpdGggdHdsNDAzMCBrZXlwYWQKKyAgICAgIGNvbnRyb2xsZXIuCistIGludGVycnVwdDogc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nCisgICAtIDwxPjogRm9yIGNvbnRyb2xsZXJzIGNvbXBhdGlibGUgd2l0aCB0d2w0MDMwIGtleXBhZCBjb250cm9sbGVyLgorCitFeGFtcGxlOgorCXR3bF9rZXlwYWQ6IGtleXBhZCB7CisJCWNvbXBhdGlibGUgPSAidGksdHdsNDAzMC1rZXlwYWQiOworCQlpbnRlcnJ1cHRzID0gPDE+OworCQlrZXlwYWQsbnVtLXJvd3MgPSA8OD47CisJCWtleXBhZCxudW0tY29sdW1ucyA9IDw4PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3R3bDQwMzAtcHdyYnV0dG9uLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90d2w0MDMwLXB3cmJ1dHRvbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg2NGE0NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90d2w0MDMwLXB3cmJ1dHRvbi50eHQKQEAgLTAsMCArMSwyMSBAQAorVGV4YXMgSW5zdHJ1bWVudHMgVFdMIGZhbWlseSAodHdsNDAzMCkgcHdyYnV0dG9uIG1vZHVsZQorCitUaGlzIG1vZHVsZSBpcyBwYXJ0IG9mIHRoZSBUV0w0MDMwLiBGb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSB3aG9sZQorY2hpcCBzZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC90d2wtZmFtaWxseS50eHQuCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIGEgc2ltcGxlIHBvd2VyIGJ1dHRvbiBldmVudCB2aWEgYW4gSW50ZXJydXB0LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcKKyAgIC0gInRpLHR3bDQwMzAtcHdyYnV0dG9uIjogRm9yIGNvbnRyb2xsZXJzIGNvbXBhdGlibGUgd2l0aCB0d2w0MDMwCistIGludGVycnVwdHM6IHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZworICAgLSA8OD46IEZvciBjb250cm9sbGVycyBjb21wYXRpYmxlIHdpdGggdHdsNDAzMAorCitFeGFtcGxlOgorCismdHdsIHsKKwl0d2xfcHdyYnV0dG9uOiBwd3JidXR0b24geworCQljb21wYXRpYmxlID0gInRpLHR3bDQwMzAtcHdyYnV0dG9uIjsKKwkJaW50ZXJydXB0cyA9IDw4PjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hYmlsaXMsdGIxMHgtaWN0bC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYWJpbGlzLHRiMTB4LWljdGwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNTJkNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYWJpbGlzLHRiMTB4LWljdGwudHh0CkBAIC0wLDAgKzEsMzggQEAKK1RCMTB4IFRvcCBMZXZlbCBJbnRlcnJ1cHQgQ29udHJvbGxlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBBYmlsaXMgVEIxMHggU09DIGNvbnRhaW5zIGEgY3VzdG9tIGludGVycnVwdCBjb250cm9sbGVyLiBJdCBwZXJmb3Jtcworb25lLXRvLW9uZSBtYXBwaW5nIG9mIGV4dGVybmFsIGludGVycnVwdCBzb3VyY2VzIHRvIENQVSBpbnRlcnJ1cHRzIGFuZAorcHJvdmlkZXMgc3VwcG9ydCBmb3IgcmVjb25maWd1cmFibGUgdHJpZ2dlciBtb2Rlcy4KKworUmVxdWlyZWQgcHJvcGVydGllcworLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAiYWJpbGlzLHRiMTB4LWljdGwiCistIHJlZzogc3BlY2lmaWVzIHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiByZWdpc3RlciByYW5nZS4KKy0gaW50ZXJydXB0LWNvbmdyb2xsZXI6IElkZW50aWZpZXMgdGhlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIuCistICNpbnRlcnJ1cHQgY2VsbHM6IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNlbGxzIHVzZWQgdG8gZW5jb2RlIGFuIGludGVycnVwdAorICBzb3VyY2UgY29ubmVjdGVkIHRvIHRoaXMgY29udHJvbGxlci4gVGhlIHZhbHVlIHNoYWxsIGJlIDIuCistIGludGVycnVwdC1wYXJlbnQ6IFNwZWNpZmllcyB0aGUgcGFyZW50IGludGVycnVwdCBjb250cm9sbGVyLgorLSBpbnRlcnJ1cHRzOiBTcGVjaWZpZXMgdGhlIGxpc3Qgb2YgaW50ZXJydXB0IGxpbmVzIHdoaWNoIGFyZSBoYW5kbGVkIGJ5CisgIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciBpbiB0aGUgcGFyZW50IGNvbnRyb2xsZXIncyBub3RhdGlvbi4gSW50ZXJydXB0cworICBhcmUgbWFwcGVkIG9uZS10by1vbmUgdG8gcGFyZW50IGludGVycnVwdHMuCisKK0V4YW1wbGUKKy0tLS0tLS0KKworaW50YzogaW50ZXJydXB0LWNvbnRyb2xsZXIgewkvKiBQYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIgKi8KKwlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkjaW50ZXJydXB0LWNlbGxzID0gPDE+OwkvKiBGb3IgZXhhbXBsZSBiZWxvdyAqLworCS8qIC4uLiAqLworfTsKKwordGIxMHhfaWN0bDogcGljQDIwMDAgewkJLyogVEIxMHggaW50ZXJydXB0IGNvbnRyb2xsZXIgKi8KKwljb21wYXRpYmxlID0gImFiaWxpcyx0YjEweC1pY3RsIjsKKwlyZWcgPSA8MHgyMDAwIDB4MjA+OworCWludGVycnVwdC1jb250cm9sbGVyOworCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJaW50ZXJydXB0LXBhcmVudCA9IDwmaW50Yz47CisJaW50ZXJydXB0cyA9IDw1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkKKwkJCTIwIDIxIDIyIDIzIDI0IDI1IDI2IDI3IDI4IDI5IDMwIDMxPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYWxsd2lubmVyLHN1bjRpLWljLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hbGx3aW5uZXIsc3VuNGktaWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyOTBjYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYWxsd2lubmVyLHN1bjRpLWljLnR4dApAQCAtMCwwICsxLDE4IEBACitBbGx3aW5uZXIgU3VueGkgSW50ZXJydXB0IENvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJhbGx3aW5uZXIsc3VuNGktYTEwLWljIgorLSByZWcgOiBTcGVjaWZpZXMgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSByZWdpc3RlcnMuCistIGludGVycnVwdC1jb250cm9sbGVyIDogSWRlbnRpZmllcyB0aGUgbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSAjaW50ZXJydXB0LWNlbGxzIDogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgbmVlZGVkIHRvIGVuY29kZSBhbgorICBpbnRlcnJ1cHQgc291cmNlLiBUaGUgdmFsdWUgc2hhbGwgYmUgMS4KKworRXhhbXBsZToKKworaW50YzogaW50ZXJydXB0LWNvbnRyb2xsZXIgeworCWNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjRpLWExMC1pYyI7CisJcmVnID0gPDB4MDFjMjA0MDAgMHg0MDA+OworCWludGVycnVwdC1jb250cm9sbGVyOworCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2FsbHdpbm5lcixzdW42N2ktc2Mtbm1pLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hbGx3aW5uZXIsc3VuNjdpLXNjLW5taS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFjNWNkYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hbGx3aW5uZXIsc3VuNjdpLXNjLW5taS50eHQKQEAgLTAsMCArMSwyNyBAQAorQWxsd2lubmVyIFN1bnhpIE5NSSBDb250cm9sbGVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJhbGx3aW5uZXIsc3VuN2ktYTIwLXNjLW5taSIgb3IKKyAgImFsbHdpbm5lcixzdW42aS1hMzEtc2Mtbm1pIgorLSByZWcgOiBTcGVjaWZpZXMgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSByZWdpc3RlcnMuCistIGludGVycnVwdC1jb250cm9sbGVyIDogSWRlbnRpZmllcyB0aGUgbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSAjaW50ZXJydXB0LWNlbGxzIDogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgbmVlZGVkIHRvIGVuY29kZSBhbgorICBpbnRlcnJ1cHQgc291cmNlLiBUaGUgdmFsdWUgc2hhbGwgYmUgMi4gVGhlIGZpcnN0IGNlbGwgaXMgdGhlIElSUSBudW1iZXIsIHRoZQorICBzZWNvbmQgY2VsbCB0aGUgdHJpZ2dlciB0eXBlIGFzIGRlZmluZWQgaW4gaW50ZXJydXB0LnR4dCBpbiB0aGlzIGRpcmVjdG9yeS4KKy0gaW50ZXJydXB0LXBhcmVudDogU3BlY2lmaWVzIHRoZSBwYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIuCistIGludGVycnVwdHM6IFNwZWNpZmllcyB0aGUgaW50ZXJydXB0IGxpbmUgKE5NSSkgd2hpY2ggaXMgaGFuZGxlZCBieQorICB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgaW4gdGhlIHBhcmVudCBjb250cm9sbGVyJ3Mgbm90YXRpb24uIFRoaXMgdmFsdWUKKyAgc2hhbGwgYmUgdGhlIE5NSS4KKworRXhhbXBsZToKKworc2Mtbm1pLWludGNAMDFjMDAwMzAgeworCWNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjdpLWEyMC1zYy1ubWkiOworCWludGVycnVwdC1jb250cm9sbGVyOworCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJcmVnID0gPDB4MDFjMDAwMzAgMHgwYz47CisJaW50ZXJydXB0LXBhcmVudCA9IDwmZ2ljPjsKKwlpbnRlcnJ1cHRzID0gPDAgMCA0PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYXJtLGdpYy12My50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYXJtLGdpYy12My50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgwM2U3NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hcm0sZ2ljLXYzLnR4dApAQCAtMCwwICsxLDEyMyBAQAorKiBBUk0gR2VuZXJpYyBJbnRlcnJ1cHQgQ29udHJvbGxlciwgdmVyc2lvbiAzCisKK0FBcmNoNjQgU01QIGNvcmVzIGFyZSBvZnRlbiBhc3NvY2lhdGVkIHdpdGggYSBHSUN2MywgcHJvdmlkaW5nIFByaXZhdGUKK1BlcmlwaGVyYWwgSW50ZXJydXB0cyAoUFBJKSwgU2hhcmVkIFBlcmlwaGVyYWwgSW50ZXJydXB0cyAoU1BJKSwKK1NvZnR3YXJlIEdlbmVyYXRlZCBJbnRlcnJ1cHRzIChTR0kpLCBhbmQgTG9jYWxpdHktc3BlY2lmaWMgUGVyaXBoZXJhbAorSW50ZXJydXB0cyAoTFBJKS4KKworTWFpbiBub2RlIHJlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBhdCBsZWFzdCBjb250YWluICAiYXJtLGdpYy12MyIuCistIGludGVycnVwdC1jb250cm9sbGVyIDogSWRlbnRpZmllcyB0aGUgbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSAjaW50ZXJydXB0LWNlbGxzIDogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgbmVlZGVkIHRvIGVuY29kZSBhbgorICBpbnRlcnJ1cHQgc291cmNlLiBNdXN0IGJlIGEgc2luZ2xlIGNlbGwgd2l0aCBhIHZhbHVlIG9mIGF0IGxlYXN0IDMuCisKKyAgVGhlIDFzdCBjZWxsIGlzIHRoZSBpbnRlcnJ1cHQgdHlwZTsgMCBmb3IgU1BJIGludGVycnVwdHMsIDEgZm9yIFBQSQorICBpbnRlcnJ1cHRzLiBPdGhlciB2YWx1ZXMgYXJlIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlLgorCisgIFRoZSAybmQgY2VsbCBjb250YWlucyB0aGUgaW50ZXJydXB0IG51bWJlciBmb3IgdGhlIGludGVycnVwdCB0eXBlLgorICBTUEkgaW50ZXJydXB0cyBhcmUgaW4gdGhlIHJhbmdlIFswLTk4N10uIFBQSSBpbnRlcnJ1cHRzIGFyZSBpbiB0aGUKKyAgcmFuZ2UgWzAtMTVdLgorCisgIFRoZSAzcmQgY2VsbCBpcyB0aGUgZmxhZ3MsIGVuY29kZWQgYXMgZm9sbG93czoKKwliaXRzWzM6MF0gdHJpZ2dlciB0eXBlIGFuZCBsZXZlbCBmbGFncy4KKwkJMSA9IGVkZ2UgdHJpZ2dlcmVkCisJCTQgPSBsZXZlbCB0cmlnZ2VyZWQKKworICBDZWxscyA0IGFuZCBiZXlvbmQgYXJlIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlLiBXaGVuIHRoZSAxc3QgY2VsbAorICBoYXMgYSB2YWx1ZSBvZiAwIG9yIDEsIGNlbGxzIDQgYW5kIGJleW9uZCBhY3QgYXMgcGFkZGluZywgYW5kIG1heSBiZQorICBpZ25vcmVkLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHBhZGRpbmcgY2VsbHMgaGF2ZSBhIHZhbHVlIG9mIDAuCisKKy0gcmVnIDogU3BlY2lmaWVzIGJhc2UgcGh5c2ljYWwgYWRkcmVzcyhzKSBhbmQgc2l6ZSBvZiB0aGUgR0lDCisgIHJlZ2lzdGVycywgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjoKKyAgLSBHSUMgRGlzdHJpYnV0b3IgaW50ZXJmYWNlIChHSUNEKQorICAtIEdJQyBSZWRpc3RyaWJ1dG9ycyAoR0lDUiksIG9uZSByYW5nZSBwZXIgcmVkaXN0cmlidXRvciByZWdpb24KKyAgLSBHSUMgQ1BVIGludGVyZmFjZSAoR0lDQykKKyAgLSBHSUMgSHlwZXJ2aXNvciBpbnRlcmZhY2UgKEdJQ0gpCisgIC0gR0lDIFZpcnR1YWwgQ1BVIGludGVyZmFjZSAoR0lDVikKKworICBHSUNDLCBHSUNIIGFuZCBHSUNWIGFyZSBvcHRpb25hbC4KKworLSBpbnRlcnJ1cHRzIDogSW50ZXJydXB0IHNvdXJjZSBvZiB0aGUgVkdJQyBtYWludGVuYW5jZSBpbnRlcnJ1cHQuCisKK09wdGlvbmFsCisKKy0gcmVkaXN0cmlidXRvci1zdHJpZGUgOiBJZiB1c2luZyBwYWRkaW5nIHBhZ2VzLCBzcGVjaWZpZXMgdGhlIHN0cmlkZQorICBvZiBjb25zZWN1dGl2ZSByZWRpc3RyaWJ1dG9ycy4gTXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0a0IuCisKKy0gI3JlZGlzdHJpYnV0b3ItcmVnaW9uczogVGhlIG51bWJlciBvZiBpbmRlcGVuZGVudCBjb250aWd1b3VzIHJlZ2lvbnMKKyAgb2NjdXBpZWQgYnkgdGhlIHJlZGlzdHJpYnV0b3JzLiBSZXF1aXJlZCBpZiBtb3JlIHRoYW4gb25lIHN1Y2gKKyAgcmVnaW9uIGlzIHByZXNlbnQuCisKK1N1Yi1ub2RlczoKKworR0lDdjMgaGFzIG9uZSBvciBtb3JlIEludGVycnVwdCBUcmFuc2xhdGlvbiBTZXJ2aWNlcyAoSVRTKSB0aGF0IGFyZQordXNlZCB0byByb3V0ZSBNZXNzYWdlIFNpZ25hbGxlZCBJbnRlcnJ1cHRzIChNU0kpIHRvIHRoZSBDUFVzLgorCitUaGVzZSBub2RlcyBtdXN0IGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGF0IGxlYXN0IGNvbnRhaW4gICJhcm0sZ2ljLXYzLWl0cyIuCistIG1zaS1jb250cm9sbGVyIDogQm9vbGVhbiBwcm9wZXJ0eS4gSWRlbnRpZmllcyB0aGUgbm9kZSBhcyBhbiBNU0kgY29udHJvbGxlcgorLSAjbXNpLWNlbGxzOiBNdXN0IGJlIDwxPi4gVGhlIHNpbmdsZSBtc2ktY2VsbCBpcyB0aGUgRGV2aWNlSUQgb2YgdGhlIGRldmljZQorICB3aGljaCB3aWxsIGdlbmVyYXRlIHRoZSBNU0kuCistIHJlZzogU3BlY2lmaWVzIHRoZSBiYXNlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIElUUworICByZWdpc3RlcnMuCisKK1RoZSBtYWluIEdJQyBub2RlIG11c3QgY29udGFpbiB0aGUgYXBwcm9wcmlhdGUgI2FkZHJlc3MtY2VsbHMsCisjc2l6ZS1jZWxscyBhbmQgcmFuZ2VzIHByb3BlcnRpZXMgZm9yIHRoZSByZWcgcHJvcGVydHkgb2YgYWxsIElUUworbm9kZXMuCisKK0V4YW1wbGVzOgorCisJZ2ljOiBpbnRlcnJ1cHQtY29udHJvbGxlckAyY2YwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiYXJtLGdpYy12MyI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mz47CisJCSNhZGRyZXNzLWNlbGxzID0gPDI+OworCQkjc2l6ZS1jZWxscyA9IDwyPjsKKwkJcmFuZ2VzOworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJcmVnID0gPDB4MCAweDJmMDAwMDAwIDAgMHgxMDAwMD4sCS8vIEdJQ0QKKwkJICAgICAgPDB4MCAweDJmMTAwMDAwIDAgMHgyMDAwMDA+LAkvLyBHSUNSCisJCSAgICAgIDwweDAgMHgyYzAwMDAwMCAwIDB4MjAwMD4sCS8vIEdJQ0MKKwkJICAgICAgPDB4MCAweDJjMDEwMDAwIDAgMHgyMDAwPiwJLy8gR0lDSAorCQkgICAgICA8MHgwIDB4MmMwMjAwMDAgMCAweDIwMDA+OwkvLyBHSUNWCisJCWludGVycnVwdHMgPSA8MSA5IDQ+OworCisJCWdpYy1pdHNAMmMyMDAwMDAgeworCQkJY29tcGF0aWJsZSA9ICJhcm0sZ2ljLXYzLWl0cyI7CisJCQltc2ktY29udHJvbGxlcjsKKwkJCSNtc2ktY2VsbHMgPSA8MT47CisJCQlyZWcgPSA8MHgwIDB4MmMyMDAwMDAgMCAweDIwMDAwMD47CisJCX07CisJfTsKKworCWdpYzogaW50ZXJydXB0LWNvbnRyb2xsZXJAMmMwMTAwMDAgeworCQljb21wYXRpYmxlID0gImFybSxnaWMtdjMiOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDM+OworCQkjYWRkcmVzcy1jZWxscyA9IDwyPjsKKwkJI3NpemUtY2VsbHMgPSA8Mj47CisJCXJhbmdlczsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCXJlZGlzdHJpYnV0b3Itc3RyaWRlID0gPDB4MCAweDQwMDAwPjsJLy8gMjU2a0Igc3RyaWRlCisJCSNyZWRpc3RyaWJ1dG9yLXJlZ2lvbnMgPSA8Mj47CisJCXJlZyA9IDwweDAgMHgyYzAxMDAwMCAwIDB4MTAwMDA+LAkvLyBHSUNECisJCSAgICAgIDwweDAgMHgyZDAwMDAwMCAwIDB4ODAwMDAwPiwJLy8gR0lDUiAxOiBDUFVzIDAtMzEKKwkJICAgICAgPDB4MCAweDJlMDAwMDAwIDAgMHg4MDAwMDA+OwkvLyBHSUNSIDI6IENQVXMgMzItNjMKKwkJICAgICAgPDB4MCAweDJjMDQwMDAwIDAgMHgyMDAwPiwJLy8gR0lDQworCQkgICAgICA8MHgwIDB4MmMwNjAwMDAgMCAweDIwMDA+LAkvLyBHSUNICisJCSAgICAgIDwweDAgMHgyYzA4MDAwMCAwIDB4MjAwMD47CS8vIEdJQ1YKKwkJaW50ZXJydXB0cyA9IDwxIDkgND47CisKKwkJZ2ljLWl0c0AyYzIwMDAwMCB7CisJCQljb21wYXRpYmxlID0gImFybSxnaWMtdjMtaXRzIjsKKwkJCW1zaS1jb250cm9sbGVyOworCQkJI21zaS1jZWxscyA9IDwxPjsKKwkJCXJlZyA9IDwweDAgMHgyYzIwMDAwMCAwIDB4MjAwMDAwPjsKKwkJfTsKKworCQlnaWMtaXRzQDJjNDAwMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiYXJtLGdpYy12My1pdHMiOworCQkJbXNpLWNvbnRyb2xsZXI7CisJCQkjbXNpLWNlbGxzID0gPDE+OworCQkJcmVnID0gPDB4MCAweDJjNDAwMDAwIDAgMHgyMDAwMDA+OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYXJtLGdpYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYXJtLGdpYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M1NjAyMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hcm0sZ2ljLnR4dApAQCAtMCwwICsxLDE2OCBAQAorKiBBUk0gR2VuZXJpYyBJbnRlcnJ1cHQgQ29udHJvbGxlcgorCitBUk0gU01QIGNvcmVzIGFyZSBvZnRlbiBhc3NvY2lhdGVkIHdpdGggYSBHSUMsIHByb3ZpZGluZyBwZXIgcHJvY2Vzc29yCitpbnRlcnJ1cHRzIChQUEkpLCBzaGFyZWQgcHJvY2Vzc29yIGludGVycnVwdHMgKFNQSSkgYW5kIHNvZnR3YXJlCitnZW5lcmF0ZWQgaW50ZXJydXB0cyAoU0dJKS4KKworUHJpbWFyeSBHSUMgaXMgYXR0YWNoZWQgZGlyZWN0bHkgdG8gdGhlIENQVSBhbmQgdHlwaWNhbGx5IGhhcyBQUElzIGFuZCBTR0lzLgorU2Vjb25kYXJ5IEdJQ3MgYXJlIGNhc2NhZGVkIGludG8gdGhlIHVwd2FyZCBpbnRlcnJ1cHQgY29udHJvbGxlciBhbmQgZG8gbm90CitoYXZlIFBQSXMgb3IgU0dJcy4KKworTWFpbiBub2RlIHJlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSBvbmUgb2Y6CisJImFybSxhcm0xMTc2anpmLWRldmNoaXAtZ2ljIgorCSJhcm0sYXJtMTFtcC1naWMiCisJImFybSxjb3J0ZXgtYTE1LWdpYyIKKwkiYXJtLGNvcnRleC1hNy1naWMiCisJImFybSxjb3J0ZXgtYTktZ2ljIgorCSJhcm0sZ2ljLTQwMCIKKwkiYXJtLHBsMzkwIgorCSJicmNtLGJyYWhtYS1iMTUtZ2ljIgorCSJxY29tLG1zbS04NjYwLXFnaWMiCisJInFjb20sbXNtLXFnaWMyIgorLSBpbnRlcnJ1cHQtY29udHJvbGxlciA6IElkZW50aWZpZXMgdGhlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIKKy0gI2ludGVycnVwdC1jZWxscyA6IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNlbGxzIG5lZWRlZCB0byBlbmNvZGUgYW4KKyAgaW50ZXJydXB0IHNvdXJjZS4gIFRoZSB0eXBlIHNoYWxsIGJlIGEgPHUzMj4gYW5kIHRoZSB2YWx1ZSBzaGFsbCBiZSAzLgorCisgIFRoZSAxc3QgY2VsbCBpcyB0aGUgaW50ZXJydXB0IHR5cGU7IDAgZm9yIFNQSSBpbnRlcnJ1cHRzLCAxIGZvciBQUEkKKyAgaW50ZXJydXB0cy4KKworICBUaGUgMm5kIGNlbGwgY29udGFpbnMgdGhlIGludGVycnVwdCBudW1iZXIgZm9yIHRoZSBpbnRlcnJ1cHQgdHlwZS4KKyAgU1BJIGludGVycnVwdHMgYXJlIGluIHRoZSByYW5nZSBbMC05ODddLiAgUFBJIGludGVycnVwdHMgYXJlIGluIHRoZQorICByYW5nZSBbMC0xNV0uCisKKyAgVGhlIDNyZCBjZWxsIGlzIHRoZSBmbGFncywgZW5jb2RlZCBhcyBmb2xsb3dzOgorCWJpdHNbMzowXSB0cmlnZ2VyIHR5cGUgYW5kIGxldmVsIGZsYWdzLgorCQkxID0gbG93LXRvLWhpZ2ggZWRnZSB0cmlnZ2VyZWQKKwkJMiA9IGhpZ2gtdG8tbG93IGVkZ2UgdHJpZ2dlcmVkIChpbnZhbGlkIGZvciBTUElzKQorCQk0ID0gYWN0aXZlIGhpZ2ggbGV2ZWwtc2Vuc2l0aXZlCisJCTggPSBhY3RpdmUgbG93IGxldmVsLXNlbnNpdGl2ZSAoaW52YWxpZCBmb3IgU1BJcykuCisJYml0c1sxNTo4XSBQUEkgaW50ZXJydXB0IGNwdSBtYXNrLiAgRWFjaCBiaXQgY29ycmVzcG9uZHMgdG8gZWFjaCBvZgorCXRoZSA4IHBvc3NpYmxlIGNwdXMgYXR0YWNoZWQgdG8gdGhlIEdJQy4gIEEgYml0IHNldCB0byAnMScgaW5kaWNhdGVkCisJdGhlIGludGVycnVwdCBpcyB3aXJlZCB0byB0aGF0IENQVS4gIE9ubHkgdmFsaWQgZm9yIFBQSSBpbnRlcnJ1cHRzLgorCUFsc28gbm90ZSB0aGF0IHRoZSBjb25maWd1cmFiaWxpdHkgb2YgUFBJIGludGVycnVwdHMgaXMgSU1QTEVNRU5UQVRJT04KKwlERUZJTkVEIGFuZCBhcyBzdWNoIG5vdCBndWFyYW50ZWVkIHRvIGJlIHByZXNlbnQgKG1vc3QgU29DIGF2YWlsYWJsZQorCWluIDIwMTQgc2VlbSB0byBpZ25vcmUgdGhlIHNldHRpbmcgb2YgdGhpcyBmbGFnIGFuZCB1c2UgdGhlIGhhcmR3YXJlCisJZGVmYXVsdCB2YWx1ZSkuCisKKy0gcmVnIDogU3BlY2lmaWVzIGJhc2UgcGh5c2ljYWwgYWRkcmVzcyhzKSBhbmQgc2l6ZSBvZiB0aGUgR0lDIHJlZ2lzdGVycy4gVGhlCisgIGZpcnN0IHJlZ2lvbiBpcyB0aGUgR0lDIGRpc3RyaWJ1dG9yIHJlZ2lzdGVyIGJhc2UgYW5kIHNpemUuIFRoZSAybmQgcmVnaW9uIGlzCisgIHRoZSBHSUMgY3B1IGludGVyZmFjZSByZWdpc3RlciBiYXNlIGFuZCBzaXplLgorCitPcHRpb25hbAorLSBpbnRlcnJ1cHRzCTogSW50ZXJydXB0IHNvdXJjZSBvZiB0aGUgcGFyZW50IGludGVycnVwdCBjb250cm9sbGVyIG9uCisgIHNlY29uZGFyeSBHSUNzLCBvciBWR0lDIG1haW50ZW5hbmNlIGludGVycnVwdCBvbiBwcmltYXJ5IEdJQyAoc2VlCisgIGJlbG93KS4KKworLSBjcHUtb2Zmc2V0CTogcGVyLWNwdSBvZmZzZXQgd2l0aGluIHRoZSBkaXN0cmlidXRvciBhbmQgY3B1IGludGVyZmFjZQorICByZWdpb25zLCB1c2VkIHdoZW4gdGhlIEdJQyBkb2Vzbid0IGhhdmUgYmFua2VkIHJlZ2lzdGVycy4gVGhlIG9mZnNldCBpcworICBjcHUtb2Zmc2V0ICogY3B1LW5yLgorCistIGNsb2NrcyAgICAgICAgOiBMaXN0IG9mIHBoYW5kbGUgYW5kIGNsb2NrLXNwZWNpZmljIHBhaXJzLCBvbmUgZm9yIGVhY2ggZW50cnkKKyAgaW4gY2xvY2stbmFtZXMuCistIGNsb2NrLW5hbWVzICAgOiBMaXN0IG9mIG5hbWVzIGZvciB0aGUgR0lDIGNsb2NrIGlucHV0KHMpLiBWYWxpZCBjbG9jayBuYW1lcworICBkZXBlbmQgb24gdGhlIEdJQyB2YXJpYW50OgorCSJpY19jbGsiIChmb3IgImFybSxhcm0xMW1wLWdpYyIpCisJIlBFUklQSENMS0VOIiAoZm9yICJhcm0sY29ydGV4LWExNS1naWMiKQorCSJQRVJJUEhDTEsiLCAiUEVSSVBIQ0xLRU4iIChmb3IgImFybSxjb3J0ZXgtYTktZ2ljIikKKwkiY2xrIiAoZm9yICJhcm0sZ2ljLTQwMCIpCisJImdjbGsiIChmb3IgImFybSxwbDM5MCIpCisKKy0gcG93ZXItZG9tYWlucyA6IEEgcGhhbmRsZSBhbmQgUE0gZG9tYWluIHNwZWNpZmllciBhcyBkZWZpbmVkIGJ5IGJpbmRpbmdzIG9mCisJCSAgdGhlIHBvd2VyIGNvbnRyb2xsZXIgc3BlY2lmaWVkIGJ5IHBoYW5kbGUsIHVzZWQgd2hlbiB0aGUgR0lDCisJCSAgaXMgcGFydCBvZiBhIFBvd2VyIG9yIENsb2NrIERvbWFpbi4KKworCitFeGFtcGxlOgorCisJaW50YzogaW50ZXJydXB0LWNvbnRyb2xsZXJAZmZmMTEwMDAgeworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTktZ2ljIjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwzPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCWludGVycnVwdC1jb250cm9sbGVyOworCQlyZWcgPSA8MHhmZmYxMTAwMCAweDEwMDA+LAorCQkgICAgICA8MHhmZmYxMDEwMCAweDEwMD47CisJfTsKKworCisqIEdJQyB2aXJ0dWFsaXphdGlvbiBleHRlbnNpb25zIChWR0lDKQorCitGb3IgQVJNIGNvcmVzIHRoYXQgc3VwcG9ydCB0aGUgdmlydHVhbGl6YXRpb24gZXh0ZW5zaW9ucywgYWRkaXRpb25hbAorcHJvcGVydGllcyBtdXN0IGJlIGRlc2NyaWJlZCAodGhleSBvbmx5IGV4aXN0IGlmIHRoZSBHSUMgaXMgdGhlCitwcmltYXJ5IGludGVycnVwdCBjb250cm9sbGVyKS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSByZWcgOiBBZGRpdGlvbmFsIHJlZ2lvbnMgc3BlY2lmeWluZyB0aGUgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIGFuZAorICBzaXplIG9mIHRoZSBWR0lDIHJlZ2lzdGVycy4gVGhlIGZpcnN0IGFkZGl0aW9uYWwgcmVnaW9uIGlzIHRoZSBHSUMKKyAgdmlydHVhbCBpbnRlcmZhY2UgY29udHJvbCByZWdpc3RlciBiYXNlIGFuZCBzaXplLiBUaGUgMm5kIGFkZGl0aW9uYWwKKyAgcmVnaW9uIGlzIHRoZSBHSUMgdmlydHVhbCBjcHUgaW50ZXJmYWNlIHJlZ2lzdGVyIGJhc2UgYW5kIHNpemUuCisKKy0gaW50ZXJydXB0cyA6IFZHSUMgbWFpbnRlbmFuY2UgaW50ZXJydXB0LgorCitFeGFtcGxlOgorCisJaW50ZXJydXB0LWNvbnRyb2xsZXJAMmMwMDEwMDAgeworCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTE1LWdpYyI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mz47CisJCWludGVycnVwdC1jb250cm9sbGVyOworCQlyZWcgPSA8MHgyYzAwMTAwMCAweDEwMDA+LAorCQkgICAgICA8MHgyYzAwMjAwMCAweDEwMDA+LAorCQkgICAgICA8MHgyYzAwNDAwMCAweDIwMDA+LAorCQkgICAgICA8MHgyYzAwNjAwMCAweDIwMDA+OworCQlpbnRlcnJ1cHRzID0gPDEgOSAweGYwND47CisJfTsKKworCisqIEdJQ3YybSBleHRlbnNpb24gZm9yIE1TSS9NU0kteCBzdXBwb3J0IChPcHRpb25hbCkKKworQ2VydGFpbiByZXZpc2lvbnMgb2YgR0lDLTQwMCBzdXBwb3J0cyBNU0kvTVNJLXggdmlhIFYyTSByZWdpc3RlciBmcmFtZShzKS4KK1RoaXMgaXMgZW5hYmxlZCBieSBzcGVjaWZ5aW5nIHYybSBzdWItbm9kZShzKS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlCSAgICA6IFRoZSB2YWx1ZSBoZXJlIHNob3VsZCBjb250YWluICJhcm0sZ2ljLXYybS1mcmFtZSIuCisKKy0gbXNpLWNvbnRyb2xsZXIgICAgOiBJZGVudGlmaWVzIHRoZSBub2RlIGFzIGFuIE1TSSBjb250cm9sbGVyLgorCistIHJlZwkJICAgIDogR0lDdjJtIE1TSSBpbnRlcmZhY2UgcmVnaXN0ZXIgYmFzZSBhbmQgc2l6ZQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIGFybSxtc2ktYmFzZS1zcGkgIDogV2hlbiB0aGUgTVNJX1RZUEVSIHJlZ2lzdGVyIGNvbnRhaW5zIGFuIGluY29ycmVjdAorICAJCSAgICAgIHZhbHVlLCB0aGlzIHByb3BlcnR5IHNob3VsZCBjb250YWluIHRoZSBTUEkgYmFzZSBvZgorCQkgICAgICB0aGUgTVNJIGZyYW1lLCBvdmVycmlkaW5nIHRoZSBIVyB2YWx1ZS4KKworLSBhcm0sbXNpLW51bS1zcGlzICA6IFdoZW4gdGhlIE1TSV9UWVBFUiByZWdpc3RlciBjb250YWlucyBhbiBpbmNvcnJlY3QKKyAgCQkgICAgICB2YWx1ZSwgdGhpcyBwcm9wZXJ0eSBzaG91bGQgY29udGFpbiB0aGUgbnVtYmVyIG9mCisJCSAgICAgIFNQSXMgYXNzaWduZWQgdG8gdGhlIGZyYW1lLCBvdmVycmlkaW5nIHRoZSBIVyB2YWx1ZS4KKworRXhhbXBsZToKKworCWludGVycnVwdC1jb250cm9sbGVyQGUxMTAxMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0sZ2ljLTQwMCI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mz47CisJCSNhZGRyZXNzLWNlbGxzID0gPDI+OworCQkjc2l6ZS1jZWxscyA9IDwyPjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCWludGVycnVwdHMgPSA8MSA4IDB4ZjA0PjsKKwkJcmFuZ2VzID0gPDAgMCAwIDB4ZTExMDAwMDAgMCAweDEwMDAwMD47CisJCXJlZyA9IDwweDAgMHhlMTExMDAwMCAwIDB4MDEwMDA+LAorCQkgICAgICA8MHgwIDB4ZTExMmYwMDAgMCAweDAyMDAwPiwKKwkJICAgICAgPDB4MCAweGUxMTQwMDAwIDAgMHgxMDAwMD4sCisJCSAgICAgIDwweDAgMHhlMTE2MDAwMCAwIDB4MTAwMDA+OworCQl2Mm0wOiB2Mm1AMHg4MDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiYXJtLGdpYy12Mm0tZnJhbWUiOworCQkJbXNpLWNvbnRyb2xsZXI7CisJCQlyZWcgPSA8MHgwIDB4ODAwMDAgMCAweDEwMDA+OworCQl9OworCisJCS4uLi4KKworCQl2Mm1OOiB2Mm1AMHg5MDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiYXJtLGdpYy12Mm0tZnJhbWUiOworCQkJbXNpLWNvbnRyb2xsZXI7CisJCQlyZWcgPSA8MHgwIDB4OTAwMDAgMCAweDEwMDA+OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYXJtLHZlcnNhdGlsZS1mcGdhLWlycS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYXJtLHZlcnNhdGlsZS1mcGdhLWlycS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzljZjYwNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hcm0sdmVyc2F0aWxlLWZwZ2EtaXJxLnR4dApAQCAtMCwwICsxLDM2IEBACisqIEFSTSBWZXJzYXRpbGUgRlBHQSBpbnRlcnJ1cHQgY29udHJvbGxlcgorCitPbmUgb3IgbW9yZSBGUEdBIElSUSBjb250cm9sbGVycyBjYW4gYmUgc3ludGhlc2l6ZWQgaW4gYW4gQVJNIHJlZmVyZW5jZSBib2FyZAorc3VjaCBhcyB0aGUgSW50ZWdyYXRvciBvciBWZXJzYXRpbGUgZmFtaWx5LiBUaGUgb3V0cHV0IG9mIHRoZXNlIGRpZmZlcmVudAorY29udHJvbGxlcnMgYXJlIE9SOmVkIHRvZ2V0aGVyIGFuZCBmZWQgdG8gdGhlIENQVSB0aWxlJ3MgSVJRIGlucHV0LiBFYWNoCitpbnN0YW5jZSBjYW4gaGFuZGxlIHVwIHRvIDMyIGludGVycnVwdHMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJhcm0sdmVyc2F0aWxlLWZwZ2EtaXJxIgorLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogSWRlbnRpZmllcyB0aGUgbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSAjaW50ZXJydXB0LWNlbGxzOiBUaGUgbnVtYmVyIG9mIGNlbGxzIHRvIGRlZmluZSB0aGUgaW50ZXJydXB0cy4gIE11c3QgYmUgMQorICBhcyB0aGUgRlBHQSBJUlEgY29udHJvbGxlciBoYXMgbm8gY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBpbnRlcnJ1cHQKKyAgc291cmNlcy4gIFRoZSBjZWxsIGlzIGEgdTMyIGFuZCBkZWZpbmVzIHRoZSBpbnRlcnJ1cHQgbnVtYmVyLgorLSByZWc6IFRoZSByZWdpc3RlciBiYW5rIGZvciB0aGUgRlBHQSBpbnRlcnJ1cHQgY29udHJvbGxlci4KKy0gY2xlYXItbWFzazogYSB1MzIgbnVtYmVyIHJlcHJlc2VudGluZyB0aGUgbWFzayB3cml0dGVuIHRvIGNsZWFyIGFsbCBJUlFzCisgIG9uIHRoZSBjb250cm9sbGVyIGF0IGJvb3QgZm9yIGV4YW1wbGUuCistIHZhbGlkLW1hc2s6IGEgdTMyIG51bWJlciByZXByZXNlbnRpbmcgYSBiaXQgbWFzayBkZXRlcm1pbmluZyB3aGljaCBvZgorICB0aGUgaW50ZXJydXB0cyBhcmUgdmFsaWQuIFVuY29ubmVjdGVkL3VudXNlZCBsaW5lcyBhcmUgc2V0IHRvIDAsIGFuZAorICB0aGUgc3lzdGVtIHRpbGwgbm90IG1ha2UgaXQgcG9zc2libGUgZm9yIGRldmljZXMgdG8gcmVxdWVzdCB0aGVzZQorICBpbnRlcnJ1cHRzLgorCitFeGFtcGxlOgorCitwaWM6IHBpY0AxNDAwMDAwMCB7CisgICAgICAgIGNvbXBhdGlibGUgPSAiYXJtLHZlcnNhdGlsZS1mcGdhLWlycSI7CisgICAgICAgICNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisgICAgICAgIGludGVycnVwdC1jb250cm9sbGVyOworICAgICAgICByZWcgPSA8MHgxNDAwMDAwMCAweDEwMD47CisgICAgICAgIGNsZWFyLW1hc2sgPSA8MHhmZmZmZmZmZj47CisgICAgICAgIHZhbGlkLW1hc2sgPSA8MHgwMDNmZmZmZj47Cit9OworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBpbnRlcnJ1cHRzOiBpZiB0aGUgRlBHQSBJUlEgY29udHJvbGxlciBpcyBjYXNjYWRlZCwgaS5lLiBpZiBpdHMgSVJRCisgIG91dHB1dCBpcyBzaW1wbHkgY29ubmVjdGVkIHRvIHRoZSBpbnB1dCBvZiBhbm90aGVyIElSUSBjb250cm9sbGVyLAorICB0aGVuIHRoZSBwYXJlbnQgSVJRIHNoYWxsIGJlIHNwZWNpZmllZCBpbiB0aGlzIHByb3BlcnR5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2FybSx2aWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2FybSx2aWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkNTI3MjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYXJtLHZpYy50eHQKQEAgLTAsMCArMSw0MSBAQAorKiBBUk0gVmVjdG9yZWQgSW50ZXJydXB0IENvbnRyb2xsZXIKKworT25lIG9yIG1vcmUgVmVjdG9yZWQgSW50ZXJydXB0IENvbnRyb2xsZXJzIChWSUMncykgY2FuIGJlIGNvbm5lY3RlZCBpbiBhbiBBUk0KK3N5c3RlbSBmb3IgaW50ZXJydXB0IHJvdXRpbmcuICBGb3IgbXVsdGlwbGUgY29udHJvbGxlcnMgdGhleSBjYW4gZWl0aGVyIGJlCituZXN0ZWQgb3IgaGF2ZSB0aGUgb3V0cHV0cyB3aXJlLU9SJ2QgdG9nZXRoZXIuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSBvbmUgb2YKKwkiYXJtLHBsMTkwLXZpYyIKKwkiYXJtLHBsMTkyLXZpYyIKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXIgOiBJZGVudGlmaWVzIHRoZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyCistICNpbnRlcnJ1cHQtY2VsbHMgOiBUaGUgbnVtYmVyIG9mIGNlbGxzIHRvIGRlZmluZSB0aGUgaW50ZXJydXB0cy4gIE11c3QgYmUgMSBhcworICB0aGUgVklDIGhhcyBubyBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGludGVycnVwdCBzb3VyY2VzLiAgVGhlIGNlbGwgaXMgYSB1MzIKKyAgYW5kIGRlZmluZXMgdGhlIGludGVycnVwdCBudW1iZXIuCistIHJlZyA6IFRoZSByZWdpc3RlciBiYW5rIGZvciB0aGUgVklDLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIGludGVycnVwdHMgOiBJbnRlcnJ1cHQgc291cmNlIGZvciBwYXJlbnQgY29udHJvbGxlcnMgaWYgdGhlIFZJQyBpcyBuZXN0ZWQuCistIHZhbGlkLW1hc2sgOiBBIG9uZSBjZWxsIGJpZyBiaXQgbWFzayBvZiB2YWxpZCBpbnRlcnJ1cHQgc291cmNlcy4gRWFjaCBiaXQKKyAgcmVwcmVzZW50cyBzaW5nbGUgaW50ZXJydXB0IHNvdXJjZSwgc3RhcnRpbmcgZnJvbSBzb3VyY2UgMCBhdCBMU2IgYW5kIGVuZGluZworICBhdCBzb3VyY2UgMzEgYXQgTVNiLiBBIGJpdCB0aGF0IGlzIHNldCBtZWFucyB0aGF0IHRoZSBzb3VyY2UgaXMgd2lyZWQgYW5kCisgIGNsZWFyIG1lYW5zIG90aGVyd2lzZS4gSWYgdW5zcGVjaWZpZWQsIGRlZmF1bHRzIHRvIGFsbCB2YWxpZC4KKy0gdmFsaWQtd2FrZXVwLW1hc2sgOiBBIG9uZSBjZWxsIGJpZyBiaXQgbWFzayBvZiBpbnRlcnJ1cHQgc291cmNlcyB0aGF0IGNhbiBiZQorICBjb25maWd1cmVkIGFzIHdha2UgdXAgc291cmNlIGZvciB0aGUgc3lzdGVtLiBPcmRlciBvZiBiaXRzIGlzIHRoZSBzYW1lIGFzIGZvcgorICB2YWxpZC1tYXNrIHByb3BlcnR5LiBBIHNldCBiaXQgbWVhbnMgdGhhdCB0aGlzIGludGVycnVwdCBzb3VyY2UgY2FuIGJlCisgIGNvbmZpZ3VyZWQgYXMgYSB3YWtlIHVwIHNvdXJjZSBmb3IgdGhlIHN5c3RlbS4gSWYgdW5zcGVjaWVkLCBkZWZhdWx0cyB0byBhbGwKKyAgaW50ZXJydXB0IHNvdXJjZXMgY29uZmlndXJhYmxlIGFzIHdha2UgdXAgc291cmNlcy4KKworRXhhbXBsZToKKworCXZpYzA6IGludGVycnVwdC1jb250cm9sbGVyQDYwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0scGwxOTItdmljIjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJCXJlZyA9IDwweDYwMDAwIDB4MTAwMD47CisKKwkJdmFsaWQtbWFzayA9IDwweGZmZmZmZjdmPjsKKwkJdmFsaWQtd2FrZXVwLW1hc2sgPSA8MHgwMDAwZmY3Zj47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hdG1lbCxhaWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2F0bWVsLGFpYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGU5ZjA5YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9hdG1lbCxhaWMudHh0CkBAIC0wLDAgKzEsNDIgQEAKKyogQWR2YW5jZWQgSW50ZXJydXB0IENvbnRyb2xsZXIgKEFJQykKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJhdG1lbCw8Y2hpcD4tYWljIgorICA8Y2hpcD4gY2FuIGJlICJhdDkxcm05MjAwIiwgInNhbWE1ZDIiLCAic2FtYTVkMyIgb3IgInNhbWE1ZDQiCistIGludGVycnVwdC1jb250cm9sbGVyOiBJZGVudGlmaWVzIHRoZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyLgorLSBpbnRlcnJ1cHQtcGFyZW50OiBGb3Igc2luZ2xlIEFJQyBzeXN0ZW0sIGl0IGlzIGFuIGVtcHR5IHByb3BlcnR5LgorLSAjaW50ZXJydXB0LWNlbGxzOiBUaGUgbnVtYmVyIG9mIGNlbGxzIHRvIGRlZmluZSB0aGUgaW50ZXJydXB0cy4gSXQgc2hvdWxkIGJlIDMuCisgIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBJUlEgbnVtYmVyIChha2EgIlBlcmlwaGVyYWwgSURlbnRpZmllciIgb24gZGF0YXNoZWV0KS4KKyAgVGhlIHNlY29uZCBjZWxsIGlzIHVzZWQgdG8gc3BlY2lmeSBmbGFnczoKKyAgICBiaXRzWzM6MF0gdHJpZ2dlciB0eXBlIGFuZCBsZXZlbCBmbGFnczoKKyAgICAgIDEgPSBsb3ctdG8taGlnaCBlZGdlIHRyaWdnZXJlZC4KKyAgICAgIDIgPSBoaWdoLXRvLWxvdyBlZGdlIHRyaWdnZXJlZC4KKyAgICAgIDQgPSBhY3RpdmUgaGlnaCBsZXZlbC1zZW5zaXRpdmUuCisgICAgICA4ID0gYWN0aXZlIGxvdyBsZXZlbC1zZW5zaXRpdmUuCisgICAgICBWYWxpZCBjb21iaW5hdGlvbnMgYXJlIDEsIDIsIDMsIDQsIDguCisgICAgICBEZWZhdWx0IGZsYWcgZm9yIGludGVybmFsIHNvdXJjZXMgc2hvdWxkIGJlIHNldCB0byA0IChhY3RpdmUgaGlnaCkuCisgIFRoZSB0aGlyZCBjZWxsIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgaXJxIHByaW9yaXR5IGZyb20gMCAobG93ZXN0KSB0byA3CisgIChoaWdoZXN0KS4KKy0gcmVnOiBTaG91bGQgY29udGFpbiBBSUMgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKy0gYXRtZWwsZXh0ZXJuYWwtaXJxczogdTMyIGFycmF5IG9mIGV4dGVybmFsIGlycXMuCisKK0V4YW1wbGVzOgorCS8qCisJICogQUlDCisJICovCisJYWljOiBpbnRlcnJ1cHQtY29udHJvbGxlckBmZmZmZjAwMCB7CisJCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXJtOTIwMC1haWMiOworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJaW50ZXJydXB0LXBhcmVudDsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwzPjsKKwkJcmVnID0gPDB4ZmZmZmYwMDAgMHgyMDA+OworCX07CisKKwkvKgorCSAqIEFuIGludGVycnVwdCBnZW5lcmF0aW5nIGRldmljZSB0aGF0IGlzIHdpcmVkIHRvIGFuIEFJQy4KKwkgKi8KKwlkbWE6IGRtYS1jb250cm9sbGVyQGZmZmZlYzAwIHsKKwkJY29tcGF0aWJsZSA9ICJhdG1lbCxhdDkxc2FtOWc0NS1kbWEiOworCQlyZWcgPSA8MHhmZmZmZWMwMCAweDIwMD47CisJCWludGVycnVwdHMgPSA8MjEgNCA1PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2F4aXMsY3Jpc3YzMi1pbnRjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9heGlzLGNyaXN2MzItaW50Yy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThiMTIzYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9heGlzLGNyaXN2MzItaW50Yy50eHQKQEAgLTAsMCArMSwyMyBAQAorKiBDUklTdjMyIEludGVycnVwdCBDb250cm9sbGVyCisKK0ludGVycnVwdCBjb250cm9sbGVyIGZvciB0aGUgQ1JJU3YzMiBTb0NzLgorCitNYWluIG5vZGUgcmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlOgorCSJheGlzLGNyaXN2MzItaW50YyIKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXIgOiBJZGVudGlmaWVzIHRoZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyCistICNpbnRlcnJ1cHQtY2VsbHMgOiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8gZW5jb2RlIGFuCisgIGludGVycnVwdCBzb3VyY2UuIFRoZSB0eXBlIHNoYWxsIGJlIGEgPHUzMj4gYW5kIHRoZSB2YWx1ZSBzaGFsbCBiZSAxLgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgaW50YyByZWdpc3RlcnMgbWFwLgorCitFeGFtcGxlOgorCisJaW50YzogaW50ZXJydXB0LWNvbnRyb2xsZXIgeworCQljb21wYXRpYmxlID0gImF4aXMsY3Jpc3YzMi1pbnRjIjsKKwkJcmVnID0gPDB4YjAwMWMwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJfTsKKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYnJjbSxiY20yODM1LWFybWN0cmwtaWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2JyY20sYmNtMjgzNS1hcm1jdHJsLWljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDZjOGJiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2JyY20sYmNtMjgzNS1hcm1jdHJsLWljLnR4dApAQCAtMCwwICsxLDEzMyBAQAorQkNNMjgzNSBUb3AtTGV2ZWwgKCJBUk1DVFJMIikgSW50ZXJydXB0IENvbnRyb2xsZXIKKworVGhlIEJDTTI4MzUgY29udGFpbnMgYSBjdXN0b20gdG9wLWxldmVsIGludGVycnVwdCBjb250cm9sbGVyLCB3aGljaCBzdXBwb3J0cworNzIgaW50ZXJydXB0IHNvdXJjZXMgdXNpbmcgYSAyLWxldmVsIHJlZ2lzdGVyIHNjaGVtZS4gVGhlIGludGVycnVwdAorY29udHJvbGxlciwgb3IgdGhlIEhXIGJsb2NrIGNvbnRhaW5pbmcgaXQsIGlzIHJlZmVycmVkIHRvIG9jY2FzaW9uYWxseQorYXMgImFybWN0cmwiIGluIHRoZSBTb0MgZG9jdW1lbnRhdGlvbiwgaGVuY2UgbmFtaW5nIG9mIHRoaXMgYmluZGluZy4KKworVGhlIEJDTTI4MzYgY29udGFpbnMgdGhlIHNhbWUgaW50ZXJydXB0IGNvbnRyb2xsZXIgd2l0aCB0aGUgc2FtZQoraW50ZXJydXB0cywgYnV0IHRoZSBwZXItQ1BVIGludGVycnVwdCBjb250cm9sbGVyIGlzIHRoZSByb290LCBhbmQgYW4KK2ludGVycnVwdCB0aGVyZSBpbmRpY2F0ZXMgdGhhdCB0aGUgQVJNQ1RSTCBoYXMgYW4gaW50ZXJydXB0IHRvIGhhbmRsZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJicmNtLGJjbTI4MzUtYXJtY3RybC1pYyIgb3IKKyAgICAgICAgICAgICAgICAgImJyY20sYmNtMjgzNi1hcm1jdHJsLWljIgorLSByZWcgOiBTcGVjaWZpZXMgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSByZWdpc3RlcnMuCistIGludGVycnVwdC1jb250cm9sbGVyIDogSWRlbnRpZmllcyB0aGUgbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSAjaW50ZXJydXB0LWNlbGxzIDogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgbmVlZGVkIHRvIGVuY29kZSBhbgorICBpbnRlcnJ1cHQgc291cmNlLiBUaGUgdmFsdWUgc2hhbGwgYmUgMi4KKworICBUaGUgMXN0IGNlbGwgaXMgdGhlIGludGVycnVwdCBiYW5rOyAwIGZvciBpbnRlcnJ1cHRzIGluIHRoZSAiSVJRIGJhc2ljCisgIHBlbmRpbmciIHJlZ2lzdGVyLCBvciAxLzIgcmVzcGVjdGl2ZWx5IGZvciBpbnRlcnJ1cHRzIGluIHRoZSAiSVJRIHBlbmRpbmcKKyAgMS8yIiByZWdpc3Rlci4KKworICBUaGUgMm5kIGNlbGwgY29udGFpbnMgdGhlIGludGVycnVwdCBudW1iZXIgd2l0aGluIHRoZSBiYW5rLiBWYWxpZCB2YWx1ZXMKKyAgYXJlIDAuLjcgZm9yIGJhbmsgMCwgYW5kIDAuLjMxIGZvciBiYW5rIDEuCisKK0FkZGl0aW9uYWwgcmVxdWlyZWQgcHJvcGVydGllcyBmb3IgYnJjbSxiY20yODM2LWFybWN0cmwtaWM6CistIGludGVycnVwdC1wYXJlbnQgOiBTcGVjaWZpZXMgdGhlIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlciB3aGVuIHRoaXMKKyAgY29udHJvbGxlciBpcyB0aGUgc2Vjb25kIGxldmVsLgorLSBpbnRlcnJ1cHRzIDogU3BlY2lmaWVzIHRoZSBpbnRlcnJ1cHQgb24gdGhlIHBhcmVudCBmb3IgdGhpcyBpbnRlcnJ1cHQKKyAgY29udHJvbGxlciB0byBoYW5kbGUuCisKK1RoZSBpbnRlcnJ1cHQgc291cmNlcyBhcmUgYXMgZm9sbG93czoKKworQmFuayAwOgorMDogQVJNX1RJTUVSCisxOiBBUk1fTUFJTEJPWAorMjogQVJNX0RPT1JCRUxMXzAKKzM6IEFSTV9ET09SQkVMTF8xCis0OiBWUFUwX0hBTFRFRAorNTogVlBVMV9IQUxURUQKKzY6IElMTEVHQUxfVFlQRTAKKzc6IElMTEVHQUxfVFlQRTEKKworQmFuayAxOgorMDogVElNRVIwCisxOiBUSU1FUjEKKzI6IFRJTUVSMgorMzogVElNRVIzCis0OiBDT0RFQzAKKzU6IENPREVDMQorNjogQ09ERUMyCis3OiBWQ19KUEVHCis4OiBJU1AKKzk6IFZDX1VTQgorMTA6IFZDXzNECisxMTogVFJBTlNQT1NFUgorMTI6IE1VTFRJQ09SRVNZTkMwCisxMzogTVVMVElDT1JFU1lOQzEKKzE0OiBNVUxUSUNPUkVTWU5DMgorMTU6IE1VTFRJQ09SRVNZTkMzCisxNjogRE1BMAorMTc6IERNQTEKKzE4OiBWQ19ETUEyCisxOTogVkNfRE1BMworMjA6IERNQTQKKzIxOiBETUE1CisyMjogRE1BNgorMjM6IERNQTcKKzI0OiBETUE4CisyNTogRE1BOQorMjY6IERNQTEwCisyNzogRE1BMTEKKzI4OiBETUExMgorMjk6IEFVWAorMzA6IEFSTQorMzE6IFZQVURNQQorCitCYW5rIDI6CiswOiBIT1NUUE9SVAorMTogVklERU9TQ0FMRVIKKzI6IENDUDJUWAorMzogU0RDCis0OiBEU0kwCis1OiBBVkUKKzY6IENBTTAKKzc6IENBTTEKKzg6IEhETUkwCis5OiBIRE1JMQorMTA6IFBJWEVMVkFMVkUxCisxMTogSTJDU1BJU0xWCisxMjogRFNJMQorMTM6IFBXQTAKKzE0OiBQV0ExCisxNTogQ1BSCisxNjogU01JCisxNzogR1BJTzAKKzE4OiBHUElPMQorMTk6IEdQSU8yCisyMDogR1BJTzMKKzIxOiBWQ19JMkMKKzIyOiBWQ19TUEkKKzIzOiBWQ19JMlNQQ00KKzI0OiBWQ19TRElPCisyNTogVkNfVUFSVAorMjY6IFNMSU1CVVMKKzI3OiBWRUMKKzI4OiBDUEcKKzI5OiBSTkcKKzMwOiBWQ19BUkFTQU5TRElPCiszMTogQVZTUE1PTgorCitFeGFtcGxlOgorCisvKiBCQ00yODM1LCBmaXJzdCBsZXZlbCAqLworaW50YzogaW50ZXJydXB0LWNvbnRyb2xsZXIgeworCWNvbXBhdGlibGUgPSAiYnJjbSxiY20yODM1LWFybWN0cmwtaWMiOworCXJlZyA9IDwweDdlMDBiMjAwIDB4MjAwPjsKKwlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworfTsKKworLyogQkNNMjgzNiwgc2Vjb25kIGxldmVsICovCitpbnRjOiBpbnRlcnJ1cHQtY29udHJvbGxlciB7CisJY29tcGF0aWJsZSA9ICJicmNtLGJjbTI4MzYtYXJtY3RybC1pYyI7CisJcmVnID0gPDB4N2UwMGIyMDAgMHgyMDA+OworCWludGVycnVwdC1jb250cm9sbGVyOworCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZsb2NhbF9pbnRjPjsKKwlpbnRlcnJ1cHRzID0gPDg+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9icmNtLGJjbTI4MzYtbDEtaW50Yy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYnJjbSxiY20yODM2LWwxLWludGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzMjBkY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYnJjbSxiY20yODM2LWwxLWludGMudHh0CkBAIC0wLDAgKzEsMzcgQEAKK0JDTTI4MzYgcGVyLUNQVSBpbnRlcnJ1cHQgY29udHJvbGxlcgorCitUaGUgQkNNMjgzNiBoYXMgYSBwZXItY3B1IGludGVycnVwdCBjb250cm9sbGVyIGZvciB0aGUgdGltZXIsIFBNVQorZXZlbnRzLCBhbmQgU01QIElQSXMuICBPbmUgb2YgdGhlIENQVXMgbWF5IHJlY2VpdmUgaW50ZXJydXB0cyBmb3IgdGhlCitwZXJpcGhlcmFsIChHUFUpIGV2ZW50cywgd2hpY2ggY2hhaW4gdG8gdGhlIEJDTTI4MzUtc3R5bGUgaW50ZXJydXB0Citjb250cm9sbGVyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6CSAJU2hvdWxkIGJlICJicmNtLGJjbTI4MzYtbDEtaW50YyIKKy0gcmVnOgkJCVNwZWNpZmllcyBiYXNlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlCisJCQkgIHJlZ2lzdGVycworLSBpbnRlcnJ1cHQtY29udHJvbGxlcjoJSWRlbnRpZmllcyB0aGUgbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSAjaW50ZXJydXB0LWNlbGxzOglTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8gZW5jb2RlIGFuCisJCQkgIGludGVycnVwdCBzb3VyY2UuIFRoZSB2YWx1ZSBzaGFsbCBiZSAxCisKK1BsZWFzZSByZWZlciB0byBpbnRlcnJ1cHRzLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgZGV0YWlscyBvZiB0aGUgY29tbW9uCitJbnRlcnJ1cHQgQ29udHJvbGxlcnMgYmluZGluZ3MgdXNlZCBieSBjbGllbnQgZGV2aWNlcy4KKworVGhlIGludGVycnVwdCBzb3VyY2VzIGFyZSBhcyBmb2xsb3dzOgorCiswOiBDTlRQU0lSUQorMTogQ05UUE5TSVJRCisyOiBDTlRIUElSUQorMzogQ05UVklSUQorODogR1BVX0ZBU1QKKzk6IFBNVV9GQVNUCisKK0V4YW1wbGU6CisKK2xvY2FsX2ludGM6IGxvY2FsX2ludGMgeworCWNvbXBhdGlibGUgPSAiYnJjbSxiY20yODM2LWwxLWludGMiOworCXJlZyA9IDwweDQwMDAwMDAwIDB4MTAwPjsKKwlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCWludGVycnVwdC1wYXJlbnQgPSA8JmxvY2FsX2ludGM+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9icmNtLGJjbTMzODAtbDItaW50Yy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYnJjbSxiY20zMzgwLWwyLWludGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmNDhhYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYnJjbSxiY20zMzgwLWwyLWludGMudHh0CkBAIC0wLDAgKzEsNDEgQEAKK0Jyb2FkY29tIEJDTTMzODAtc3R5bGUgTGV2ZWwgMSAvIExldmVsIDIgaW50ZXJydXB0IGNvbnRyb2xsZXIKKworVGhpcyBpbnRlcnJ1cHQgY29udHJvbGxlciBzaG93cyB1cCBpbiB2YXJpb3VzIGZvcm1zIG9uIG1hbnkgQkNNMzM4eC9CQ002M3h4CitjaGlwc2V0cy4gIEl0IGhhcyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisKKy0gb3V0cHV0cyBhIHNpbmdsZSBpbnRlcnJ1cHQgc2lnbmFsIHRvIGl0cyBpbnRlcnJ1cHQgY29udHJvbGxlciBwYXJlbnQKKworLSBjb250YWlucyBvbmUgb3IgbW9yZSBlbmFibGUvc3RhdHVzIHdvcmQgcGFpcnMsIHdoaWNoIG9mdGVuIGFwcGVhciBhdAorICBkaWZmZXJlbnQgb2Zmc2V0cyBpbiBkaWZmZXJlbnQgYmxvY2tzCisKKy0gbm8gYXRvbWljIHNldC9jbGVhciBvcGVyYXRpb25zCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJicmNtLGJjbTMzODAtbDItaW50YyIKKy0gcmVnOiBzcGVjaWZpZXMgb25lIG9yIG1vcmUgZW5hYmxlL3N0YXR1cyBwYWlycywgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6CisgIDxlbmFibGVfcmVnIDB4NCBzdGF0dXNfcmVnIDB4ND4uLi4KKy0gaW50ZXJydXB0LWNvbnRyb2xsZXI6IGlkZW50aWZpZXMgdGhlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIKKy0gI2ludGVycnVwdC1jZWxsczogc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgbmVlZGVkIHRvIGVuY29kZSBhbiBpbnRlcnJ1cHQKKyAgc291cmNlLCBzaG91bGQgYmUgMS4KKy0gaW50ZXJydXB0LXBhcmVudDogc3BlY2lmaWVzIHRoZSBwaGFuZGxlIHRvIHRoZSBwYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIKKyAgdGhpcyBvbmUgaXMgY2FzY2FkZWQgZnJvbQorLSBpbnRlcnJ1cHRzOiBzcGVjaWZpZXMgdGhlIGludGVycnVwdCBsaW5lIGluIHRoZSBpbnRlcnJ1cHQtcGFyZW50IGNvbnRyb2xsZXIKKyAgbm9kZSwgdmFsaWQgdmFsdWVzIGRlcGVuZCBvbiB0aGUgdHlwZSBvZiBwYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIKKworT3B0aW9uYWwgcHJvcGVydGllczoKKworLSBicmNtLGlycS1jYW4td2FrZTogaWYgcHJlc2VudCwgdGhpcyBtZWFucyB0aGUgTDIgY29udHJvbGxlciBjYW4gYmUgdXNlZCBhcyBhCisgIHdha2V1cCBzb3VyY2UgZm9yIHN5c3RlbSBzdXNwZW5kL3Jlc3VtZS4KKworRXhhbXBsZToKKworaXJxMF9pbnRjOiBpbnRlcnJ1cHQtY29udHJvbGxlckAxMDAwMDAyMCB7CisJY29tcGF0aWJsZSA9ICJicmNtLGJjbTMzODAtbDItaW50YyI7CisJcmVnID0gPDB4MTAwMDAwMjQgMHg0IDB4MTAwMDAwMmMgMHg0PiwKKwkgICAgICA8MHgxMDAwMDAyMCAweDQgMHgxMDAwMDAyOCAweDQ+OworCWludGVycnVwdC1jb250cm9sbGVyOworCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJaW50ZXJydXB0LXBhcmVudCA9IDwmY3B1X2ludGM+OworCWludGVycnVwdHMgPSA8Mj47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2JyY20sYmNtNzAzOC1sMS1pbnRjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9icmNtLGJjbTcwMzgtbDEtaW50Yy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MyMTdiMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9icmNtLGJjbTcwMzgtbDEtaW50Yy50eHQKQEAgLTAsMCArMSw1MiBAQAorQnJvYWRjb20gQkNNNzAzOC1zdHlsZSBMZXZlbCAxIGludGVycnVwdCBjb250cm9sbGVyCisKK1RoaXMgYmxvY2sgaXMgYSBmaXJzdCBsZXZlbCBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGF0IGlzIHR5cGljYWxseSBjb25uZWN0ZWQKK2RpcmVjdGx5IHRvIG9uZSBvZiB0aGUgSFcgSU5UIGxpbmVzIG9uIGVhY2ggQ1BVLiAgRXZlcnkgQkNNN3h4eCBzZXQtdG9wIGNoaXAKK3NpbmNlIEJDTTcwMzggaGFzIGNvbnRhaW5lZCB0aGlzIGhhcmR3YXJlLgorCitLZXkgZWxlbWVudHMgb2YgdGhlIGhhcmR3YXJlIGRlc2lnbiBpbmNsdWRlOgorCistIDY0LCA5NiwgMTI4LCBvciAxNjAgaW5jb21pbmcgbGV2ZWwgSVJRIGxpbmVzCisKKy0gTW9zdCBvbmNoaXAgcGVyaXBoZXJhbHMgYXJlIHdpcmVkIGRpcmVjdGx5IHRvIGFuIEwxIGlucHV0CisKKy0gQSBzZXBhcmF0ZSBpbnN0YW5jZSBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciBlYWNoIENQVSwgYWxsb3dpbmcgaW5kaXZpZHVhbAorICBwZXJpcGhlcmFsIElSUXMgdG8gYmUgcm91dGVkIHRvIGFueSBDUFUKKworLSBBdG9taWMgbWFzay91bm1hc2sgb3BlcmF0aW9ucworCistIE5vIHBvbGFyaXR5L2xldmVsL2VkZ2Ugc2V0dGluZ3MKKworLSBObyBGSUZPIG9yIHByaW9yaXR5IGVuY29kZXIgbG9naWM7IHNvZnR3YXJlIGlzIGV4cGVjdGVkIHRvIHJlYWQgYWxsCisgIDItNSBzdGF0dXMgd29yZHMgdG8gZGV0ZXJtaW5lIHdoaWNoIElSUXMgYXJlIHBlbmRpbmcKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImJyY20sYmNtNzAzOC1sMS1pbnRjIgorLSByZWc6IHNwZWNpZmllcyB0aGUgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSByZWdpc3RlcnM7CisgIHRoZSBudW1iZXIgb2Ygc3VwcG9ydGVkIElSUXMgaXMgaW5mZXJyZWQgZnJvbSB0aGUgc2l6ZSBhcmd1bWVudAorLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogaWRlbnRpZmllcyB0aGUgbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSAjaW50ZXJydXB0LWNlbGxzOiBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8gZW5jb2RlIGFuIGludGVycnVwdAorICBzb3VyY2UsIHNob3VsZCBiZSAxLgorLSBpbnRlcnJ1cHQtcGFyZW50OiBzcGVjaWZpZXMgdGhlIHBoYW5kbGUgdG8gdGhlIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlcihzKQorICB0aGlzIG9uZSBpcyBjYXNjYWRlZCBmcm9tCistIGludGVycnVwdHM6IHNwZWNpZmllcyB0aGUgaW50ZXJydXB0IGxpbmUocykgaW4gdGhlIGludGVycnVwdC1wYXJlbnQgY29udHJvbGxlcgorICBub2RlOyB2YWxpZCB2YWx1ZXMgZGVwZW5kIG9uIHRoZSB0eXBlIG9mIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlcgorCitJZiBtdWx0aXBsZSByZWcgcmFuZ2VzIGFuZCBpbnRlcnJ1cHQtcGFyZW50IGVudHJpZXMgYXJlIHByZXNlbnQgb24gYW4gU01QCitzeXN0ZW0sIHRoZSBkcml2ZXIgd2lsbCBhbGxvdyBJUlEgU01QIGFmZmluaXR5IHRvIGJlIHNldCB1cCB0aHJvdWdoIHRoZQorL3Byb2MvaXJxLyBpbnRlcmZhY2UuICBJbiB0aGUgc2ltcGxlc3QgcG9zc2libGUgY29uZmlndXJhdGlvbiwgb25seSBvbmUKK3JlZyByYW5nZSBhbmQgb25lIGludGVycnVwdC1wYXJlbnQgaXMgbmVlZGVkLgorCitFeGFtcGxlOgorCitwZXJpcGhfaW50YzogcGVyaXBoX2ludGNAMTA0MWE0MDAgeworICAgICAgICBjb21wYXRpYmxlID0gImJyY20sYmNtNzAzOC1sMS1pbnRjIjsKKyAgICAgICAgcmVnID0gPDB4MTA0MWE0MDAgMHgzMCAweDEwNDFhNjAwIDB4MzA+OworCisgICAgICAgIGludGVycnVwdC1jb250cm9sbGVyOworICAgICAgICAjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCisgICAgICAgIGludGVycnVwdC1wYXJlbnQgPSA8JmNwdV9pbnRjPjsKKyAgICAgICAgaW50ZXJydXB0cyA9IDwyPiwgPDM+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9icmNtLGJjbTcxMjAtbDItaW50Yy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYnJjbSxiY203MTIwLWwyLWludGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0YTliYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYnJjbSxiY203MTIwLWwyLWludGMudHh0CkBAIC0wLDAgKzEsOTAgQEAKK0Jyb2FkY29tIEJDTTcxMjAtc3R5bGUgTGV2ZWwgMiBpbnRlcnJ1cHQgY29udHJvbGxlcgorCitUaGlzIGludGVycnVwdCBjb250cm9sbGVyIGhhcmR3YXJlIGlzIGEgc2Vjb25kIGxldmVsIGludGVycnVwdCBjb250cm9sbGVyIHRoYXQKK2lzIGhvb2tlZCB0byBhIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlcjogZS5nOiBBUk0gR0lDIGZvciBBUk0tYmFzZWQKK3BsYXRmb3Jtcy4gSXQgY2FuIGJlIGZvdW5kIG9uIEJDTTd4eHggcHJvZHVjdHMgc3RhcnRpbmcgd2l0aCBCQ003MTIwLgorCitTdWNoIGFuIGludGVycnVwdCBjb250cm9sbGVyIGhhcyB0aGUgZm9sbG93aW5nIGhhcmR3YXJlIGRlc2lnbjoKKworLSBvdXRwdXRzIG11bHRpcGxlIGludGVycnVwdHMgc2lnbmFscyB0b3dhcmRzIGl0cyBpbnRlcnJ1cHQgY29udHJvbGxlciBwYXJlbnQKKworLSBjb250cm9scyBob3cgc29tZSBvZiB0aGUgaW50ZXJydXB0cyB3aWxsIGJlIGZsb3dpbmcsIHdoZXRoZXIgdGhleSB3aWxsCisgIGRpcmVjdGx5IG91dHB1dCBhbiBpbnRlcnJ1cHQgc2lnbmFsIHRvd2FyZHMgdGhlIGludGVycnVwdCBjb250cm9sbGVyIHBhcmVudCwKKyAgb3IgaWYgdGhleSB3aWxsIG91dHB1dCBhbiBpbnRlcnJ1cHQgc2lnbmFsIGF0IHRoaXMgMm5kIGxldmVsIGludGVycnVwdAorICBjb250cm9sbGVyLCBpbiBwYXJ0aWN1bGFyIGZvciBVQVJUcworCistIGhhcyBvbmUgMzItYml0IGVuYWJsZSB3b3JkIGFuZCBvbmUgMzItYml0IHN0YXR1cyB3b3JkCisKKy0gbm8gYXRvbWljIHNldC9jbGVhciBvcGVyYXRpb25zCisKKy0gbm90IGFsbCBiaXRzIHdpdGhpbiB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgYWN0dWFsbHkgbWFwIHRvIGFuIGludGVycnVwdAorCitUaGUgdHlwaWNhbCBoYXJkd2FyZSBsYXlvdXQgZm9yIHRoaXMgY29udHJvbGxlciBpcyByZXByZXNlbnRlZCBiZWxvdzoKKworMm5kIGxldmVsIGludGVycnVwdCBsaW5lCQlPdXRwdXRzIGZvciB0aGUgcGFyZW50IGNvbnRyb2xsZXIgKGUuZzogQVJNIEdJQykKKworMCAtLS0tLVsgTVVYIF0gLS0tLS0tLS0tLS0tfD09PT09PT09PT0+IEdJQyBpbnRlcnJ1cHQgNzUKKyAgICAgICAgICBcLS0tLS0tLS0tLS1cCisgICAgICAgICAgICAgICAgICAgICAgIHwKKzEgLS0tLS1bIE1VWCBdIC0tLS0tLS0tKS0tLXw9PT09PT09PT09PiBHSUMgaW50ZXJydXB0IDc2CisgICAgICAgICAgXC0tLS0tLS0tLS0tLXwKKyAgICAgICAgICAgICAgICAgICAgICAgfAorMiAtLS0tLVsgTVVYIF0gLS0tLS0tLS0pLS0tfD09PT09PT09PT0+IEdJQyBpbnRlcnJ1cHQgNzcKKyAgICAgICAgICBcLS0tLS0tLS0tLS0tfAorICAgICAgICAgICAgICAgICAgICAgICB8CiszIC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKzQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorNSAtLS0tLS0tLS0tLS0tLS0tLS0tLS18Cis3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS18PT09PT09PT09PT0+IEdJQyBpbnRlcnJ1cHQgNjYKKzkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorMTAgLS0tLS0tLS0tLS0tLS0tLS0tLS18CisxMSAtLS0tLS0tLS0tLS0tLS0tLS0tLS8KKworNiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cCisgICAgICAgICAgICAgICAgICAgICAgICAgICB8PT09PT09PT09PT0+IEdJQyBpbnRlcnJ1cHQgNjQKKzggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLworCisxMiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gWAorMTMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIFggCQkobm90IGNvbm5lY3RlZCkKKy4uCiszMSAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gWAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiYnJjbSxiY203MTIwLWwyLWludGMiCistIHJlZzogc3BlY2lmaWVzIHRoZSBiYXNlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIHJlZ2lzdGVycworLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogaWRlbnRpZmllcyB0aGUgbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSAjaW50ZXJydXB0LWNlbGxzOiBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8gZW5jb2RlIGFuIGludGVycnVwdAorICBzb3VyY2UsIHNob3VsZCBiZSAxLgorLSBpbnRlcnJ1cHQtcGFyZW50OiBzcGVjaWZpZXMgdGhlIHBoYW5kbGUgdG8gdGhlIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlcgorICB0aGlzIG9uZSBpcyBjYXNjYWRlZCBmcm9tCistIGludGVycnVwdHM6IHNwZWNpZmllcyB0aGUgaW50ZXJydXB0IGxpbmUocykgaW4gdGhlIGludGVycnVwdC1wYXJlbnQgY29udHJvbGxlcgorICBub2RlLCB2YWxpZCB2YWx1ZXMgZGVwZW5kIG9uIHRoZSB0eXBlIG9mIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSBicmNtLGludC1tYXAtbWFzazogMzItYml0cyBiaXQgbWFzayBkZXNjcmliaW5nIGhvdyBtYW55IGFuZCB3aGljaCBpbnRlcnJ1cHRzCisgIGFyZSB3aXJlZCB0byB0aGlzIDJuZCBsZXZlbCBpbnRlcnJ1cHQgY29udHJvbGxlciwgYW5kIGhvdyB0aGV5IG1hdGNoIHRoZWlyCisgIHJlc3BlY3RpdmUgaW50ZXJydXB0IHBhcmVudHMuIFNob3VsZCBtYXRjaCBleGFjdGx5IHRoZSBudW1iZXIgb2YgaW50ZXJydXB0cworICBzcGVjaWZpZWQgaW4gdGhlICdpbnRlcnJ1cHRzJyBwcm9wZXJ0eS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworLSBicmNtLGlycS1jYW4td2FrZTogaWYgcHJlc2VudCwgdGhpcyBtZWFucyB0aGUgTDIgY29udHJvbGxlciBjYW4gYmUgdXNlZCBhcyBhCisgIHdha2V1cCBzb3VyY2UgZm9yIHN5c3RlbSBzdXNwZW5kL3Jlc3VtZS4KKworLSBicmNtLGludC1md2QtbWFzazogaWYgcHJlc2VudCwgYSBiaXQgbWFzayB0byBjb25maWd1cmUgdGhlIGludGVycnVwdHMgd2hpY2gKKyAgaGF2ZSBhIG11eCBnYXRlLCB0eXBpY2FsbHkgVUFSVHMuIFNldHRpbmcgdGhlc2UgYml0cyB3aWxsIG1ha2UgdGhlaXIKKyAgcmVzcGVjdGl2ZSBpbnRlcnJ1cHQgb3V0cHV0cyBieXBhc3MgdGhpcyAybmQgbGV2ZWwgaW50ZXJydXB0IGNvbnRyb2xsZXIKKyAgY29tcGxldGVseTsgaXQgaXMgY29tcGxldGVseSB0cmFuc3BhcmVudCBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyCisgIHBhcmVudC4gVGhpcyBzaG91bGQgaGF2ZSBvbmUgMzItYml0IHdvcmQgcGVyIGVuYWJsZS9zdGF0dXMgcGFpci4KKworRXhhbXBsZToKKworaXJxMF9pbnRjOiBpbnRlcnJ1cHQtY29udHJvbGxlckBmMDQwNjgwMCB7CisJY29tcGF0aWJsZSA9ICJicmNtLGJjbTcxMjAtbDItaW50YyI7CisJaW50ZXJydXB0LXBhcmVudCA9IDwmaW50Yz47CisJI2ludGVycnVwdC1jZWxscyA9IDwxPjsKKwlyZWcgPSA8MHhmMDQwNjgwMCAweDg+OworCWludGVycnVwdC1jb250cm9sbGVyOworCWludGVycnVwdHMgPSA8MHgwIDB4NDIgMHgwPiwgPDB4MCAweDQwIDB4MD47CisJYnJjbSxpbnQtbWFwLW1hc2sgPSA8MHhlYjg+LCA8MHgxNDA+OworCWJyY20saW50LWZ3ZC1tYXNrID0gPDB4Nz47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2JyY20sbDItaW50Yy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYnJjbSxsMi1pbnRjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDgyNzNhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2JyY20sbDItaW50Yy50eHQKQEAgLTAsMCArMSwyOSBAQAorQnJvYWRjb20gR2VuZXJpYyBMZXZlbCAyIEludGVycnVwdCBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJicmNtLGwyLWludGMiCistIHJlZzogc3BlY2lmaWVzIHRoZSBiYXNlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIHJlZ2lzdGVycworLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogaWRlbnRpZmllcyB0aGUgbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSAjaW50ZXJydXB0LWNlbGxzOiBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8gZW5jb2RlIGFuCisgIGludGVycnVwdCBzb3VyY2UuIFNob3VsZCBiZSAxLgorLSBpbnRlcnJ1cHQtcGFyZW50OiBzcGVjaWZpZXMgdGhlIHBoYW5kbGUgdG8gdGhlIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlcgorICB0aGlzIGNvbnRyb2xsZXIgaXMgY2FjYWRlZCBmcm9tCistIGludGVycnVwdHM6IHNwZWNpZmllcyB0aGUgaW50ZXJydXB0IGxpbmUgaW4gdGhlIGludGVycnVwdC1wYXJlbnQgaXJxIHNwYWNlCisgIHRvIGJlIHVzZWQgZm9yIGNhc2NhZGluZworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIGJyY20saXJxLWNhbi13YWtlOiBJZiBwcmVzZW50LCB0aGlzIG1lYW5zIHRoZSBMMiBjb250cm9sbGVyIGNhbiBiZSB1c2VkIGFzIGEKKyAgd2FrZXVwIHNvdXJjZSBmb3Igc3lzdGVtIHN1c3BlbmQvcmVzdW1lLgorCitFeGFtcGxlOgorCitoaWZfaW50cjJfaW50YzogaW50ZXJydXB0LWNvbnRyb2xsZXJAZjA0NDEwMDAgeworCWNvbXBhdGlibGUgPSAiYnJjbSxsMi1pbnRjIjsKKwlyZWcgPSA8MHhmMDQ0MTAwMCAweDMwPjsKKwlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCWludGVycnVwdC1wYXJlbnQgPSA8JmludGM+OworCWludGVycnVwdHMgPSA8MHgwIDB4MjAgMHgwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvY2Rucyx4dGVuc2EtbXgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2NkbnMseHRlbnNhLW14LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGRlOTgwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2NkbnMseHRlbnNhLW14LnR4dApAQCAtMCwwICsxLDE4IEBACisqIFh0ZW5zYSBJbnRlcnJ1cHQgRGlzdHJpYnV0b3IgYW5kIFByb2dyYW1tYWJsZSBJbnRlcnJ1cHQgQ29udHJvbGxlciAoTVgpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAiY2Rucyx4dGVuc2EtbXgiLgorCitSZW1haW5pbmcgcHJvcGVydGllcyBoYXZlIGV4YWN0IHNhbWUgbWVhbmluZyBhcyBpbiBYdGVuc2EgUElDCisoc2VlIGNkbnMseHRlbnNhLXBpYy50eHQpLgorCitFeGFtcGxlczoKKwlwaWM6IHBpYyB7CisJCWNvbXBhdGlibGUgPSAiY2Rucyx4dGVuc2EtbXgiOworCQkvKiBvbmUgY2VsbDogaW50ZXJuYWwgaXJxIG51bWJlciwKKwkJICogdHdvIGNlbGxzOiBzZWNvbmQgY2VsbCA9PSAwOiBpbnRlcm5hbCBpcnEgbnVtYmVyCisJCSAqICAgICAgICAgICAgc2Vjb25kIGNlbGwgPT0gMTogZXh0ZXJuYWwgaXJxIG51bWJlcgorCQkgKi8KKwkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9jZG5zLHh0ZW5zYS1waWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2NkbnMseHRlbnNhLXBpYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI2ZWY0YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9jZG5zLHh0ZW5zYS1waWMudHh0CkBAIC0wLDAgKzEsMjUgQEAKKyogWHRlbnNhIGJ1aWx0LWluIFByb2dyYW1tYWJsZSBJbnRlcnJ1cHQgQ29udHJvbGxlciAoUElDKQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImNkbnMseHRlbnNhLXBpYyIuCistIGludGVycnVwdC1jb250cm9sbGVyOiBJZGVudGlmaWVzIHRoZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyLgorLSAjaW50ZXJydXB0LWNlbGxzOiBUaGUgbnVtYmVyIG9mIGNlbGxzIHRvIGRlZmluZSB0aGUgaW50ZXJydXB0cy4KKyAgSXQgbWF5IGJlIGVpdGhlciAxIG9yIDIuCisgIFdoZW4gaXQncyAxLCB0aGUgZmlyc3QgY2VsbCBpcyB0aGUgaW50ZXJuYWwgSVJRIG51bWJlci4KKyAgV2hlbiBpdCdzIDIsIHRoZSBmaXJzdCBjZWxsIGlzIHRoZSBJUlEgbnVtYmVyLCBhbmQgdGhlIHNlY29uZCBjZWxsCisgIHNwZWNpZmllcyB3aGV0aGVyIGl0J3MgaW50ZXJuYWwgKDApIG9yIGV4dGVybmFsICgxKS4KKyAgUGVyaWZlcmFscyBhcmUgdXN1YWxseSBjb25uZWN0ZWQgdG8gYSBmaXhlZCBleHRlcm5hbCBJUlEsIGJ1dCBmb3IgZGlmZmVyZW50CisgIGNvcmUgdmFyaWFudHMgaXQgbWF5IGJlIG1hcHBlZCB0byBkaWZmZXJlbnQgaW50ZXJuYWwgSVJRLgorICBJUlEgc2Vuc2l0aXZpdHkgYW5kIHByaW9yaXR5IGFyZSBmaXhlZCBmb3IgZWFjaCBjb3JlIHZhcmlhbnQgYW5kIG1heSBub3QgYmUKKyAgY2hhbmdlZCBhdCBydW50aW1lLgorCitFeGFtcGxlczoKKwlwaWM6IHBpYyB7CisJCWNvbXBhdGlibGUgPSAiY2Rucyx4dGVuc2EtcGljIjsKKwkJLyogb25lIGNlbGw6IGludGVybmFsIGlycSBudW1iZXIsCisJCSAqIHR3byBjZWxsczogc2Vjb25kIGNlbGwgPT0gMDogaW50ZXJuYWwgaXJxIG51bWJlcgorCQkgKiAgICAgICAgICAgIHNlY29uZCBjZWxsID09IDE6IGV4dGVybmFsIGlycSBudW1iZXIKKwkJICovCisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJCWludGVycnVwdC1jb250cm9sbGVyOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvY2lycnVzLGNscHM3MTF4LWludGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2NpcnJ1cyxjbHBzNzExeC1pbnRjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTkzMzljCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2NpcnJ1cyxjbHBzNzExeC1pbnRjLnR4dApAQCAtMCwwICsxLDQxIEBACitDaXJydXMgTG9naWMgQ0xQUzcxMVggSW50ZXJydXB0IENvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImNpcnJ1cyxjbHBzNzExeC1pbnRjIi4KKy0gcmVnOiBTcGVjaWZpZXMgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSByZWdpc3RlcnMgc2V0LgorLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogSWRlbnRpZmllcyB0aGUgbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlci4KKy0gI2ludGVycnVwdC1jZWxsczogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgbmVlZGVkIHRvIGVuY29kZSBhbgorICBpbnRlcnJ1cHQgc291cmNlLiBUaGUgdmFsdWUgc2hhbGwgYmUgMS4KKworVGhlIGludGVycnVwdCBzb3VyY2VzIGFyZSBhcyBmb2xsb3dzOgorSUQJTmFtZQlEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisxOglCTElOVAlCYXR0ZXJ5IGxvdyAoRklRKQorMzoJTUNJTlQJTWVkaWEgY2hhbmdlZCAoRklRKQorNDoJQ1NJTlQJQ09ERUMgc291bmQKKzU6CUVJTlQxCUV4dGVybmFsIDEKKzY6CUVJTlQyCUV4dGVybmFsIDIKKzc6CUVJTlQzCUV4dGVybmFsIDMKKzg6CVRDMU9JCVRDMSB1bmRlciBmbG93Cis5OglUQzJPSQlUQzIgdW5kZXIgZmxvdworMTA6CVJUQ01JCVJUQyBjb21wYXJlIG1hdGNoCisxMToJVElOVAk2NEh6IHRpY2sKKzEyOglVVFhJTlQxCVVBUlQxIHRyYW5zbWl0IEZJRk8gaGFsZiBlbXB0eQorMTM6CVVSWElOVDEJVUFSVDEgcmVjZWl2ZSBGSUZPIGhhbGYgZnVsbAorMTQ6CVVNU0lOVAlVQVJUMSBtb2RlbSBzdGF0dXMgY2hhbmdlZAorMTU6CVNTRU9USQlTU0kxIGVuZCBvZiB0cmFuc2ZlcgorMTY6CUtCRElOVAlLZXlib2FyZAorMTc6CVNTMlJYCVNTSTIgcmVjZWl2ZSBGSUZPIGhhbGYgb3IgZ3JlYXRlciBmdWxsCisxODoJU1MyVFgJU1NJMiB0cmFuc21pdCBGSUZPIGxlc3MgdGhhbiBoYWxmIGVtcHR5CisyODoJVVRYSU5UMglVQVJUMiB0cmFuc21pdCBGSUZPIGhhbGYgZW1wdHkKKzI5OglVUlhJTlQyCVVBUlQyIHJlY2VpdmUgRklGTyBoYWxmIGZ1bGwKKzMyOglEQUlJTlQJREFJIGludGVyZmFjZSAoRklRKQorCitFeGFtcGxlOgorCWludGM6IGludGVycnVwdC1jb250cm9sbGVyIHsKKwkJY29tcGF0aWJsZSA9ICJjaXJydXMsY2xwczcxMXgtaW50YyI7CisJCXJlZyA9IDwweDgwMDAwMDAwIDB4NDAwMD47CisJCWludGVycnVwdC1jb250cm9sbGVyOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvZGlnaWNvbG9yLWljLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9kaWdpY29sb3ItaWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyZDQxZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvZGlnaWNvbG9yLWljLnR4dApAQCAtMCwwICsxLDIxIEBACitDb25leGFudCBEaWdpY29sb3IgSW50ZXJydXB0IENvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJjbnh0LGN4OTI3NTUtaWMiCistIHJlZyA6IFNwZWNpZmllcyBiYXNlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIGludGVycnVwdCBjb250cm9sbGVyCisgIHJlZ2lzdGVycyAoSUMpIGFyZWEKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXIgOiBJZGVudGlmaWVzIHRoZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyCistICNpbnRlcnJ1cHQtY2VsbHMgOiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8gZW5jb2RlIGFuCisgIGludGVycnVwdCBzb3VyY2UuIFRoZSB2YWx1ZSBzaGFsbCBiZSAxLgorLSBzeXNjb246IEEgcGhhbmRsZSB0byB0aGUgc3lzY29uIG5vZGUgZGVzY3JpYmluZyBVQyByZWdpc3RlcnMKKworRXhhbXBsZToKKworCWludGM6IGludGVycnVwdC1jb250cm9sbGVyQGYwMDAwMDQwIHsKKwkJY29tcGF0aWJsZSA9ICJjbnh0LGN4OTI3NTUtaWMiOworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwxPjsKKwkJcmVnID0gPDB4ZjAwMDAwNDAgMHg0MD47CisJCXN5c2NvbiA9IDwmdWNfcmVncz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pbWcsbWV0YS1pbnRjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pbWcsbWV0YS1pbnRjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDk5NGFkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2ltZyxtZXRhLWludGMudHh0CkBAIC0wLDAgKzEsODIgQEAKKyogTWV0YSBFeHRlcm5hbCBUcmlnZ2VyIENvbnRyb2xsZXIgQmluZGluZworCitUaGlzIGJpbmRpbmcgc3BlY2lmaWVzIHdoYXQgcHJvcGVydGllcyBtdXN0IGJlIGF2YWlsYWJsZSBpbiB0aGUgZGV2aWNlIHRyZWUKK3JlcHJlc2VudGF0aW9uIG9mIGEgTWV0YSBleHRlcm5hbCB0cmlnZ2VyIGNvbnRyb2xsZXIuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgICAtIGNvbXBhdGlibGU6IFNwZWNpZmllcyB0aGUgY29tcGF0aWJpbGl0eSBsaXN0IGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIuCisgICAgICBUaGUgdHlwZSBzaGFsbCBiZSA8c3RyaW5nPiBhbmQgdGhlIHZhbHVlIHNoYWxsIGluY2x1ZGUgImltZyxtZXRhLWludGMiLgorCisgICAgLSBudW0tYmFua3M6IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGludGVycnVwdCBiYW5rcyAoZWFjaCBvZiB3aGljaCBjYW4KKyAgICAgIGhhbmRsZSAzMiBpbnRlcnJ1cHQgc291cmNlcykuCisKKyAgICAtIGludGVycnVwdC1jb250cm9sbGVyOiBUaGUgcHJlc2VuY2Ugb2YgdGhpcyBwcm9wZXJ0eSBpZGVudGlmaWVzIHRoZSBub2RlCisgICAgICBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlci4gTm8gcHJvcGVydHkgdmFsdWUgc2hhbGwgYmUgZGVmaW5lZC4KKworICAgIC0gI2ludGVycnVwdC1jZWxsczogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgbmVlZGVkIHRvIGVuY29kZSBhbgorICAgICAgaW50ZXJydXB0IHNvdXJjZS4gVGhlIHR5cGUgc2hhbGwgYmUgYSA8dTMyPiBhbmQgdGhlIHZhbHVlIHNoYWxsIGJlIDIuCisKKyAgICAtICNhZGRyZXNzLWNlbGxzOiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8gZW5jb2RlIGFuCisgICAgICBhZGRyZXNzLiBUaGUgdHlwZSBzaGFsbCBiZSA8dTMyPiBhbmQgdGhlIHZhbHVlIHNoYWxsIGJlIDAuIEFzIHN1Y2gsCisgICAgICAnaW50ZXJydXB0LW1hcCcgbm9kZXMgZG8gbm90IGhhdmUgdG8gc3BlY2lmeSBhIHBhcmVudCB1bml0IGFkZHJlc3MuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKyAgICAtIG5vLW1hc2s6IFRoZSBjb250cm9sbGVyIGRvZXNuJ3QgaGF2ZSBhbnkgbWFzayByZWdpc3RlcnMuCisKKyogSW50ZXJydXB0IFNwZWNpZmllciBEZWZpbml0aW9uCisKKyAgSW50ZXJydXB0IHNwZWNpZmllcnMgY29uc2lzdHMgb2YgMiBjZWxscyBlbmNvZGVkIGFzIGZvbGxvd3M6CisKKyAgICAtIDwxc3QtY2VsbD46IFRoZSBpbnRlcnJ1cHQtbnVtYmVyIHRoYXQgaWRlbnRpZmllcyB0aGUgaW50ZXJydXB0IHNvdXJjZS4KKworICAgIC0gPDJuZC1jZWxsPjogVGhlIExpbnV4IGludGVycnVwdCBmbGFncyBjb250YWluaW5nIGxldmVsLXNlbnNlIGluZm9ybWF0aW9uLAorICAgICAgICAgICAgICAgICAgZW5jb2RlZCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICAxID0gZWRnZSB0cmlnZ2VyZWQKKyAgICAgICAgICAgICAgICAgICAgNCA9IGxldmVsLXNlbnNpdGl2ZQorCisqIEV4YW1wbGVzCisKK0V4YW1wbGUgMToKKworCS8qCisJICogTWV0YSBleHRlcm5hbCB0cmlnZ2VyIGJsb2NrCisJICovCisJaW50YzogaW50YyB7CisJCS8vIFRoaXMgaXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIgbm9kZS4KKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisKKwkJLy8gTm8gYWRkcmVzcyBjZWxscyBzbyB0aGF0ICdpbnRlcnJ1cHQtbWFwJyBub2RlcyB3aGljaAorCQkvLyByZWZlcmVuY2UgdGhpcyBpbnRlcnJ1cHQgY29udHJvbGxlciBub2RlIGRvIG5vdCBuZWVkIGEgcGFyZW50CisJCS8vIGFkZHJlc3Mgc3BlY2lmaWVyLgorCQkjYWRkcmVzcy1jZWxscyA9IDwwPjsKKworCQkvLyBUd28gY2VsbHMgdG8gZW5jb2RlIGludGVycnVwdCBzb3VyY2VzLgorCQkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCisJCS8vIE51bWJlciBvZiBpbnRlcnJ1cHQgYmFua3MKKwkJbnVtLWJhbmtzID0gPDI+OworCisJCS8vIE5vIEhXTUFTS0VYVCBpcyBhdmFpbGFibGUgKHNwZWNpZnkgb24gQ2hvcnVzMiBhbmQgQ29tZXQgRVMxKQorCQluby1tYXNrOworCisJCS8vIENvbXBhdGlibGUgd2l0aCBNZXRhIGhhcmR3YXJlIHRyaWdnZXIgYmxvY2suCisJCWNvbXBhdGlibGUgPSAiaW1nLG1ldGEtaW50YyI7CisJfTsKKworRXhhbXBsZSAyOgorCisJLyoKKwkgKiBBbiBpbnRlcnJ1cHQgZ2VuZXJhdGluZyBkZXZpY2UgdGhhdCBpcyB3aXJlZCB0byBhIE1ldGEgZXh0ZXJuYWwKKwkgKiB0cmlnZ2VyIGJsb2NrLgorCSAqLworCXVhcnQxOiB1YXJ0QDB4MDIwMDRjMDAgeworCQkvLyBJbnRlcnJ1cHQgc291cmNlICc1JyB0aGF0IGlzIGxldmVsLXNlbnNpdGl2ZS4KKwkJLy8gTm90ZSB0aGF0IHRoZXJlIGFyZSBvbmx5IHR3byBjZWxscyBhcyBzcGVjaWZpZWQgaW4gdGhlCisJCS8vIGludGVycnVwdCBwYXJlbnQncyAnI2ludGVycnVwdC1jZWxscycgcHJvcGVydHkuCisJCWludGVycnVwdHMgPSA8NSA0IC8qIGxldmVsICovPjsKKworCQkvLyBUaGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgdGhhdCB0aGlzIGRldmljZSBpcyB3aXJlZCB0by4KKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmaW50Yz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pbWcscGRjLWludGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2ltZyxwZGMtaW50Yy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY5MTE4NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pbWcscGRjLWludGMudHh0CkBAIC0wLDAgKzEsMTA1IEBACisqIEltZ1RlYyBQb3dlcmRvd24gQ29udHJvbGxlciAoUERDKSBJbnRlcnJ1cHQgQ29udHJvbGxlciBCaW5kaW5nCisKK1RoaXMgYmluZGluZyBzcGVjaWZpZXMgd2hhdCBwcm9wZXJ0aWVzIG11c3QgYmUgYXZhaWxhYmxlIGluIHRoZSBkZXZpY2UgdHJlZQorcmVwcmVzZW50YXRpb24gb2YgYSBQREMgSVJRIGNvbnRyb2xsZXIuIFRoaXMgaGFzIGEgbnVtYmVyIG9mIGlucHV0IGludGVycnVwdAorbGluZXMgd2hpY2ggY2FuIHdha2UgdGhlIHN5c3RlbSwgYW5kIGFyZSBwYXNzZWQgb24gdGhyb3VnaCBvdXRwdXQgaW50ZXJydXB0CitsaW5lcy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAgIC0gY29tcGF0aWJsZTogU3BlY2lmaWVzIHRoZSBjb21wYXRpYmlsaXR5IGxpc3QgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlci4KKyAgICAgIFRoZSB0eXBlIHNoYWxsIGJlIDxzdHJpbmc+IGFuZCB0aGUgdmFsdWUgc2hhbGwgaW5jbHVkZSAiaW1nLHBkYy1pbnRjIi4KKworICAgIC0gcmVnOiBTcGVjaWZpZXMgdGhlIGJhc2UgUERDIHBoeXNpY2FsIGFkZHJlc3MocykgYW5kIHNpemUocykgb2YgdGhlCisgICAgICBhZGRyZXNzYWJsZSByZWdpc3RlciBzcGFjZS4gVGhlIHR5cGUgc2hhbGwgYmUgPHByb3AtZW5jb2RlZC1hcnJheT4uCisKKyAgICAtIGludGVycnVwdC1jb250cm9sbGVyOiBUaGUgcHJlc2VuY2Ugb2YgdGhpcyBwcm9wZXJ0eSBpZGVudGlmaWVzIHRoZSBub2RlCisgICAgICBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlci4gTm8gcHJvcGVydHkgdmFsdWUgc2hhbGwgYmUgZGVmaW5lZC4KKworICAgIC0gI2ludGVycnVwdC1jZWxsczogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgbmVlZGVkIHRvIGVuY29kZSBhbgorICAgICAgaW50ZXJydXB0IHNvdXJjZS4gVGhlIHR5cGUgc2hhbGwgYmUgYSA8dTMyPiBhbmQgdGhlIHZhbHVlIHNoYWxsIGJlIDIuCisKKyAgICAtIG51bS1wZXJpcHM6IE51bWJlciBvZiB3YWtpbmcgcGVyaXBoZXJhbHMuCisKKyAgICAtIG51bS1zeXN3YWtlczogTnVtYmVyIG9mIFN5c1dha2UgaW5wdXRzLgorCisgICAgLSBpbnRlcnJ1cHRzOiBMaXN0IG9mIGludGVycnVwdCBzcGVjaWZpZXJzLiBUaGUgZmlyc3Qgc3BlY2lmaWVyIHNoYWxsIGJlIHRoZQorICAgICAgc2hhcmVkIFN5c1dha2UgaW50ZXJydXB0LCBhbmQgcmVtYWluaW5nIHNwZWNpZmllcyBzaGFsbCBiZSBQREMgcGVyaXBoZXJhbAorICAgICAgaW50ZXJydXB0cyBpbiBvcmRlci4KKworKiBJbnRlcnJ1cHQgU3BlY2lmaWVyIERlZmluaXRpb24KKworICBJbnRlcnJ1cHQgc3BlY2lmaWVycyBjb25zaXN0cyBvZiAyIGNlbGxzIGVuY29kZWQgYXMgZm9sbG93czoKKworICAgIC0gPDFzdC1jZWxsPjogVGhlIGludGVycnVwdC1udW1iZXIgdGhhdCBpZGVudGlmaWVzIHRoZSBpbnRlcnJ1cHQgc291cmNlLgorICAgICAgICAgICAgICAgICAgICAwLTc6ICBQZXJpcGhlcmFsIGludGVycnVwdHMKKyAgICAgICAgICAgICAgICAgICAgOC0xNTogU3lzV2FrZSBpbnRlcnJ1cHRzCisKKyAgICAtIDwybmQtY2VsbD46IFRoZSBsZXZlbC1zZW5zZSBpbmZvcm1hdGlvbiwgZW5jb2RlZCB1c2luZyB0aGUgTGludXggaW50ZXJydXB0CisgICAgICAgICAgICAgICAgICBmbGFncyBhcyBmb2xsb3dzIChvbmx5IDQgdmFsaWQgZm9yIHBlcmlwaGVyYWwgaW50ZXJydXB0cyk6CisgICAgICAgICAgICAgICAgICAgIDAgPSBub25lIChkZWNpZGVkIGJ5IHNvZnR3YXJlKQorICAgICAgICAgICAgICAgICAgICAxID0gbG93LXRvLWhpZ2ggZWRnZSB0cmlnZ2VyZWQKKyAgICAgICAgICAgICAgICAgICAgMiA9IGhpZ2gtdG8tbG93IGVkZ2UgdHJpZ2dlcmVkCisgICAgICAgICAgICAgICAgICAgIDMgPSBib3RoIGVkZ2UgdHJpZ2dlcmVkCisgICAgICAgICAgICAgICAgICAgIDQgPSBhY3RpdmUtaGlnaCBsZXZlbC1zZW5zaXRpdmUgKHJlcXVpcmVkIGZvciBwZXJpcCBpcnFzKQorICAgICAgICAgICAgICAgICAgICA4ID0gYWN0aXZlLWxvdyBsZXZlbC1zZW5zaXRpdmUKKworKiBFeGFtcGxlcworCitFeGFtcGxlIDE6CisKKwkvKgorCSAqIFRaMTA5MCBQREMgYmxvY2sKKwkgKi8KKwlwZGM6IHBkY0AweDAyMDA2MDAwIHsKKwkJLy8gVGhpcyBpcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlciBub2RlLgorCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKworCQkvLyBUaHJlZSBjZWxscyB0byBlbmNvZGUgaW50ZXJydXB0IHNvdXJjZXMuCisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisKKwkJLy8gT2Zmc2V0IGFkZHJlc3Mgb2YgMHgwMjAwNjAwMCBhbmQgc2l6ZSBvZiAweDEwMDAuCisJCXJlZyA9IDwweDAyMDA2MDAwIDB4MTAwMD47CisKKwkJLy8gQ29tcGF0aWJsZSB3aXRoIE1ldGEgaGFyZHdhcmUgdHJpZ2dlciBibG9jay4KKwkJY29tcGF0aWJsZSA9ICJpbWcscGRjLWludGMiOworCisJCS8vIFRocmVlIHBlcmlwaGVyYWxzIGFyZSBjb25uZWN0ZWQuCisJCW51bS1wZXJpcHMgPSA8Mz47CisKKwkJLy8gRm91ciBTeXNXYWtlcyBhcmUgY29ubmVjdGVkLgorCQludW0tc3lzd2FrZXMgPSA8ND47CisKKwkJaW50ZXJydXB0cyA9IDwxOCA0IC8qIGxldmVsICovPiwgLyogU3lzd2FrZXMgKi8KKwkJCSAgICAgPDMwIDQgLyogbGV2ZWwgKi8+LCAvKiBQZXJpcGhlcmFsIDAgKFJUQykgKi8KKwkJCSAgICAgPDI5IDQgLyogbGV2ZWwgKi8+LCAvKiBQZXJpcGhlcmFsIDEgKElSKSAqLworCQkJICAgICA8MzEgNCAvKiBsZXZlbCAqLz47IC8qIFBlcmlwaGVyYWwgMiAoV0RUKSAqLworCX07CisKK0V4YW1wbGUgMjoKKworCS8qCisJICogQW4gU29DIHBlcmlwaGVyYWwgdGhhdCBpcyB3aXJlZCB0aHJvdWdoIHRoZSBQREMuCisJICovCisJcnRjMCB7CisJCS8vIFRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGF0IHRoaXMgZGV2aWNlIGlzIHdpcmVkIHRvLgorCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZwZGM+OworCisJCS8vIEludGVycnVwdCBzb3VyY2UgUGVyaXBoZXJhbCAwCisJCWludGVycnVwdHMgPSA8MCAgIC8qIFBlcmlwaGVyYWwgMCAoUlRDKSAqLworCQkgICAgICAgICAgICAgIDQ+ICAvKiBJUlFfVFlQRV9MRVZFTF9ISUdIICovCisJfTsKKworRXhhbXBsZSAzOgorCisJLyoKKwkgKiBBbiBpbnRlcnJ1cHQgZ2VuZXJhdGluZyBkZXZpY2UgdGhhdCBpcyB3aXJlZCB0byBhIFN5c1dha2UgcGluLgorCSAqLworCXRvdWNoc2NyZWVuMCB7CisJCS8vIFRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGF0IHRoaXMgZGV2aWNlIGlzIHdpcmVkIHRvLgorCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZwZGM+OworCisJCS8vIEludGVycnVwdCBzb3VyY2UgU3lzV2FrZSAwIHRoYXQgaXMgYWN0aXZlLWxvdyBsZXZlbC1zZW5zaXRpdmUKKwkJaW50ZXJydXB0cyA9IDw4IC8qIFN5c1dha2UwICovCisJCQkgICAgICA4IC8qIElSUV9UWVBFX0xFVkVMX0xPVyAqLz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pbmdlbmljLGludGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2luZ2VuaWMsaW50Yy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY4OWZiNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pbmdlbmljLGludGMudHh0CkBAIC0wLDAgKzEsMjggQEAKK0luZ2VuaWMgU29DIEludGVycnVwdCBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiaW5nZW5pYyw8c29jbmFtZT4taW50YyIuIFZhbGlkIHN0cmluZ3MgYXJlOgorICAgIGluZ2VuaWMsano0NzQwLWludGMKKyAgICBpbmdlbmljLGp6NDc3MC1pbnRjCisgICAgaW5nZW5pYyxqejQ3NzUtaW50YworICAgIGluZ2VuaWMsano0NzgwLWludGMKKy0gcmVnIDogU3BlY2lmaWVzIGJhc2UgcGh5c2ljYWwgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgcmVnaXN0ZXJzLgorLSBpbnRlcnJ1cHQtY29udHJvbGxlciA6IElkZW50aWZpZXMgdGhlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIKKy0gI2ludGVycnVwdC1jZWxscyA6IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNlbGxzIG5lZWRlZCB0byBlbmNvZGUgYW4KKyAgaW50ZXJydXB0IHNvdXJjZS4gVGhlIHZhbHVlIHNoYWxsIGJlIDEuCistIGludGVycnVwdC1wYXJlbnQgOiBwaGFuZGxlIG9mIHRoZSBDUFUgaW50ZXJydXB0IGNvbnRyb2xsZXIuCistIGludGVycnVwdHMgOiBTcGVjaWZpZXMgdGhlIENQVSBpbnRlcnJ1cHQgdGhlIGNvbnRyb2xsZXIgaXMgY29ubmVjdGVkIHRvLgorCitFeGFtcGxlOgorCitpbnRjOiBpbnRlcnJ1cHQtY29udHJvbGxlckAxMDAwMTAwMCB7CisJY29tcGF0aWJsZSA9ICJpbmdlbmljLGp6NDc0MC1pbnRjIjsKKwlyZWcgPSA8MHgxMDAwMTAwMCAweDE0PjsKKworCWludGVycnVwdC1jb250cm9sbGVyOworCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZjcHVpbnRjPjsKKwlpbnRlcnJ1cHRzID0gPDI+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlbCxjZTQxMDAtaW9hcGljLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlbCxjZTQxMDAtaW9hcGljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDE5ZjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2ludGVsLGNlNDEwMC1pb2FwaWMudHh0CkBAIC0wLDAgKzEsMjYgQEAKK0ludGVycnVwdCBjaGlwcworLS0tLS0tLS0tLS0tLS0tCisKKyogSW50ZWwgSS9PIEFkdmFuY2VkIFByb2dyYW1tYWJsZSBJbnRlcnJ1cHQgQ29udHJvbGxlciAoSU8gQVBJQykKKworICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICBjb21wYXRpYmxlID0gImludGVsLGNlNDEwMC1pb2FwaWMiOworICAgICAjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCisgIERldmljZSdzIGludGVycnVwdCBwcm9wZXJ0eToKKworICAgICBpbnRlcnJ1cHRzID0gPFAgUz47CisKKyAgVGhlIGZpcnN0IG51bWJlciAoUCkgcmVwcmVzZW50cyB0aGUgaW50ZXJydXB0IHBpbiB3aGljaCBpcyB3aXJlZCB0byB0aGUKKyAgSU8gQVBJQy4gVGhlIHNlY29uZCBudW1iZXIgKFMpIHJlcHJlc2VudHMgdGhlIHNlbnNlIG9mIGludGVycnVwdCB3aGljaAorICBzaG91bGQgYmUgY29uZmlndXJlZCBhbmQgY2FuIGJlIG9uZSBvZjoKKyAgICAwIC0gRWRnZSBSaXNpbmcKKyAgICAxIC0gTGV2ZWwgTG93CisgICAgMiAtIExldmVsIEhpZ2gKKyAgICAzIC0gRWRnZSBGYWxsaW5nCisKKyogTG9jYWwgQVBJQworICBSZXF1aXJlZCBwcm9wZXJ0eToKKworICAgICBjb21wYXRpYmxlID0gImludGVsLGNlNDEwMC1sYXBpYyI7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaW50ZXJydXB0cy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaW50ZXJydXB0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGEzYzQwOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlcnJ1cHRzLnR4dApAQCAtMCwwICsxLDExMCBAQAorU3BlY2lmeWluZyBpbnRlcnJ1cHQgaW5mb3JtYXRpb24gZm9yIGRldmljZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzEpIEludGVycnVwdCBjbGllbnQgbm9kZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTm9kZXMgdGhhdCBkZXNjcmliZSBkZXZpY2VzIHdoaWNoIGdlbmVyYXRlIGludGVycnVwdHMgbXVzdCBjb250YWluIGFuCisiaW50ZXJydXB0cyIgcHJvcGVydHksIGFuICJpbnRlcnJ1cHRzLWV4dGVuZGVkIiBwcm9wZXJ0eSwgb3IgYm90aC4gSWYgYm90aCBhcmUKK3ByZXNlbnQsIHRoZSBsYXR0ZXIgc2hvdWxkIHRha2UgcHJlY2VkZW5jZTsgdGhlIGZvcm1lciBtYXkgYmUgcHJvdmlkZWQgc2ltcGx5Citmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHNvZnR3YXJlIHRoYXQgZG9lcyBub3QgcmVjb2duaXplIHRoZSBsYXR0ZXIuIFRoZXNlCitwcm9wZXJ0aWVzIGNvbnRhaW4gYSBsaXN0IG9mIGludGVycnVwdCBzcGVjaWZpZXJzLCBvbmUgcGVyIG91dHB1dCBpbnRlcnJ1cHQuIFRoZQorZm9ybWF0IG9mIHRoZSBpbnRlcnJ1cHQgc3BlY2lmaWVyIGlzIGRldGVybWluZWQgYnkgdGhlIGludGVycnVwdCBjb250cm9sbGVyIHRvCit3aGljaCB0aGUgaW50ZXJydXB0cyBhcmUgcm91dGVkOyBzZWUgc2VjdGlvbiAyIGJlbG93IGZvciBkZXRhaWxzLgorCisgIEV4YW1wbGU6CisJaW50ZXJydXB0LXBhcmVudCA9IDwmaW50YzE+OworCWludGVycnVwdHMgPSA8NSAwPiwgPDYgMD47CisKK1RoZSAiaW50ZXJydXB0LXBhcmVudCIgcHJvcGVydHkgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBjb250cm9sbGVyIHRvIHdoaWNoCitpbnRlcnJ1cHRzIGFyZSByb3V0ZWQgYW5kIGNvbnRhaW5zIGEgc2luZ2xlIHBoYW5kbGUgcmVmZXJyaW5nIHRvIHRoZSBpbnRlcnJ1cHQKK2NvbnRyb2xsZXIgbm9kZS4gVGhpcyBwcm9wZXJ0eSBpcyBpbmhlcml0ZWQsIHNvIGl0IG1heSBiZSBzcGVjaWZpZWQgaW4gYW4KK2ludGVycnVwdCBjbGllbnQgbm9kZSBvciBpbiBhbnkgb2YgaXRzIHBhcmVudCBub2Rlcy4gSW50ZXJydXB0cyBsaXN0ZWQgaW4gdGhlCisiaW50ZXJydXB0cyIgcHJvcGVydHkgYXJlIGFsd2F5cyBpbiByZWZlcmVuY2UgdG8gdGhlIG5vZGUncyBpbnRlcnJ1cHQgcGFyZW50LgorCitUaGUgImludGVycnVwdHMtZXh0ZW5kZWQiIHByb3BlcnR5IGlzIGEgc3BlY2lhbCBmb3JtIGZvciB1c2Ugd2hlbiBhIG5vZGUgbmVlZHMKK3RvIHJlZmVyZW5jZSBtdWx0aXBsZSBpbnRlcnJ1cHQgcGFyZW50cy4gRWFjaCBlbnRyeSBpbiB0aGlzIHByb3BlcnR5IGNvbnRhaW5zCitib3RoIHRoZSBwYXJlbnQgcGhhbmRsZSBhbmQgdGhlIGludGVycnVwdCBzcGVjaWZpZXIuICJpbnRlcnJ1cHRzLWV4dGVuZGVkIgorc2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGEgZGV2aWNlIGhhcyBtdWx0aXBsZSBpbnRlcnJ1cHQgcGFyZW50cy4KKworICBFeGFtcGxlOgorCWludGVycnVwdHMtZXh0ZW5kZWQgPSA8JmludGMxIDUgMT4sIDwmaW50YzIgMSAwPjsKKworMikgSW50ZXJydXB0IGNvbnRyb2xsZXIgbm9kZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgZGV2aWNlIGlzIG1hcmtlZCBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlciB3aXRoIHRoZSAiaW50ZXJydXB0LWNvbnRyb2xsZXIiCitwcm9wZXJ0eS4gVGhpcyBpcyBhIGVtcHR5LCBib29sZWFuIHByb3BlcnR5LiBBbiBhZGRpdGlvbmFsICIjaW50ZXJydXB0LWNlbGxzIgorcHJvcGVydHkgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGNlbGxzIG5lZWRlZCB0byBzcGVjaWZ5IGEgc2luZ2xlIGludGVycnVwdC4KKworSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlcidzIGJpbmRpbmcgdG8gZGVmaW5lIHRoZQorbGVuZ3RoIGFuZCBmb3JtYXQgb2YgdGhlIGludGVycnVwdCBzcGVjaWZpZXIuIFRoZSBmb2xsb3dpbmcgdHdvIHZhcmlhbnRzIGFyZQorY29tbW9ubHkgdXNlZDoKKworICBhKSBvbmUgY2VsbAorICAtLS0tLS0tLS0tLQorICBUaGUgI2ludGVycnVwdC1jZWxscyBwcm9wZXJ0eSBpcyBzZXQgdG8gMSBhbmQgdGhlIHNpbmdsZSBjZWxsIGRlZmluZXMgdGhlCisgIGluZGV4IG9mIHRoZSBpbnRlcnJ1cHQgd2l0aGluIHRoZSBjb250cm9sbGVyLgorCisgIEV4YW1wbGU6CisKKwl2aWM6IGludGNAMTAxNDAwMDAgeworCQljb21wYXRpYmxlID0gImFybSx2ZXJzYXRpbGUtdmljIjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJCXJlZyA9IDwweDEwMTQwMDAwIDB4MTAwMD47CisJfTsKKworCXNpYzogaW50Y0AxMDAwMzAwMCB7CisJCWNvbXBhdGlibGUgPSAiYXJtLHZlcnNhdGlsZS1zaWMiOworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwxPjsKKwkJcmVnID0gPDB4MTAwMDMwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmdmljPjsKKwkJaW50ZXJydXB0cyA9IDwzMT47IC8qIENhc2NhZGVkIHRvIHZpYyAqLworCX07CisKKyAgYikgdHdvIGNlbGxzCisgIC0tLS0tLS0tLS0tLQorICBUaGUgI2ludGVycnVwdC1jZWxscyBwcm9wZXJ0eSBpcyBzZXQgdG8gMiBhbmQgdGhlIGZpcnN0IGNlbGwgZGVmaW5lcyB0aGUKKyAgaW5kZXggb2YgdGhlIGludGVycnVwdCB3aXRoaW4gdGhlIGNvbnRyb2xsZXIsIHdoaWxlIHRoZSBzZWNvbmQgY2VsbCBpcyB1c2VkCisgIHRvIHNwZWNpZnkgYW55IG9mIHRoZSBmb2xsb3dpbmcgZmxhZ3M6CisgICAgLSBiaXRzWzM6MF0gdHJpZ2dlciB0eXBlIGFuZCBsZXZlbCBmbGFncworICAgICAgICAxID0gbG93LXRvLWhpZ2ggZWRnZSB0cmlnZ2VyZWQKKyAgICAgICAgMiA9IGhpZ2gtdG8tbG93IGVkZ2UgdHJpZ2dlcmVkCisgICAgICAgIDQgPSBhY3RpdmUgaGlnaCBsZXZlbC1zZW5zaXRpdmUKKyAgICAgICAgOCA9IGFjdGl2ZSBsb3cgbGV2ZWwtc2Vuc2l0aXZlCisKKyAgRXhhbXBsZToKKworCWkyY0A3MDAwYzAwMCB7CisJCWdwaW9leHQ6IGdwaW8tYWRucEA0MSB7CisJCQljb21wYXRpYmxlID0gImFkLGdwaW8tYWRucCI7CisJCQlyZWcgPSA8MHg0MT47CisKKwkJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8+OworCQkJaW50ZXJydXB0cyA9IDwxNjAgMT47CisKKwkJCWdwaW8tY29udHJvbGxlcjsKKwkJCSNncGlvLWNlbGxzID0gPDE+OworCisJCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisKKwkJCW5yLWdwaW9zID0gPDY0PjsKKwkJfTsKKworCQlzeDg2MzRAMmIgeworCQkJY29tcGF0aWJsZSA9ICJzbXRjLHN4ODYzNCI7CisJCQlyZWcgPSA8MHgyYj47CisKKwkJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW9leHQ+OworCQkJaW50ZXJydXB0cyA9IDwzIDB4OD47CisKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJCXRocmVzaG9sZCA9IDwweDQwPjsKKwkJCXNlbnNpdGl2aXR5ID0gPDc+OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvbHNpLHpldmlvLWludGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2xzaSx6ZXZpby1pbnRjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWUzOGU3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2xzaSx6ZXZpby1pbnRjLnR4dApAQCAtMCwwICsxLDE4IEBACitUSS1OU1BJUkUgaW50ZXJydXB0IGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogQ29tcGF0aWJsZSBwcm9wZXJ0eSB2YWx1ZSBzaG91bGQgYmUgImxzaSx6ZXZpby1pbnRjIi4KKworLSByZWc6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKwlyZWdpb24uCisKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXIgOiBJZGVudGlmaWVzIHRoZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyCisKK0V4YW1wbGU6CisKK2ludGVycnVwdC1jb250cm9sbGVyIHsKKwljb21wYXRpYmxlID0gImxzaSx6ZXZpby1pbnRjIjsKKwlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwlyZWcgPSA8MHhEQzAwMDAwMCAweDEwMDA+OworCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL21hcnZlbGwsYXJtYWRhLTM3MC14cC1tcGljLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9tYXJ2ZWxsLGFybWFkYS0zNzAteHAtbXBpYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZjMDMxMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9tYXJ2ZWxsLGFybWFkYS0zNzAteHAtbXBpYy50eHQKQEAgLTAsMCArMSwzOCBAQAorTWFydmVsbCBBcm1hZGEgMzcwLCAzNzUsIDM4eCwgWFAgSW50ZXJydXB0IENvbnRyb2xsZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAibWFydmVsbCxtcGljIgorLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogSWRlbnRpZmllcyB0aGUgbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlci4KKy0gbXNpLWNvbnRyb2xsZXI6IElkZW50aWZpZXMgdGhlIG5vZGUgYXMgYW4gUENJIE1lc3NhZ2UgU2lnbmFsZWQKKyAgSW50ZXJydXB0IGNvbnRyb2xsZXIuCistICNpbnRlcnJ1cHQtY2VsbHM6IFRoZSBudW1iZXIgb2YgY2VsbHMgdG8gZGVmaW5lIHRoZSBpbnRlcnJ1cHRzLiBTaG91bGQgYmUgMS4KKyAgVGhlIGNlbGwgaXMgdGhlIElSUSBudW1iZXIKKworLSByZWc6IFNob3VsZCBjb250YWluIFBNSUMgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGguIEZpcnN0IHBhaXIKKyAgZm9yIHRoZSBtYWluIGludGVycnVwdCByZWdpc3RlcnMsIHNlY29uZCBwYWlyIGZvciB0aGUgcGVyLUNQVQorICBpbnRlcnJ1cHQgcmVnaXN0ZXJzLiBGb3IgdGhpcyBsYXN0IHBhaXIsIHRvIGJlIGNvbXBsaWFudCB3aXRoIFNNUAorICBzdXBwb3J0LCB0aGUgInZpcnR1YWwiIG11c3QgYmUgdXNlIChGb3IgdGhlIHJlY29yZCwgdGhlc2UgcmVnaXN0ZXJzCisgIGF1dG9tYXRpY2FsbHkgbWFwIHRvIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciByZWdpc3RlcnMgb2YgdGhlCisgIGN1cnJlbnQgQ1BVKQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIGludGVycnVwdHM6IElmIGRlZmluZWQsIHRoZW4gaXQgaW5kaWNhdGVzIHRoYXQgdGhpcyBNUElDIGlzCisgIGNvbm5lY3RlZCBhcyBhIHNsYXZlIHRvIGFub3RoZXIgaW50ZXJydXB0IGNvbnRyb2xsZXIuIFRoaXMgaXMKKyAgdHlwaWNhbGx5IHRoZSBjYXNlIG9uIEFybWFkYSAzNzUgYW5kIEFybWFkYSAzOHgsIHdoZXJlIHRoZSBNUElDIGlzCisgIGNvbm5lY3RlZCBhcyBhIHNsYXZlIHRvIHRoZSBDb3J0ZXgtQTkgR0lDLiBUaGUgcHJvdmlkZWQgaW50ZXJydXB0CisgIGluZGljYXRlIHRvIHdoaWNoIEdJQyBpbnRlcnJ1cHQgdGhlIE1QSUMgb3V0cHV0IGlzIGNvbm5lY3RlZC4KKworRXhhbXBsZToKKworICAgICAgICBtcGljOiBpbnRlcnJ1cHQtY29udHJvbGxlckBkMDAyMDAwMCB7CisgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAibWFydmVsbCxtcGljIjsKKyAgICAgICAgICAgICAgI2ludGVycnVwdC1jZWxscyA9IDwxPjsKKyAgICAgICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSA8MT47CisgICAgICAgICAgICAgICNzaXplLWNlbGxzID0gPDE+OworICAgICAgICAgICAgICBpbnRlcnJ1cHQtY29udHJvbGxlcjsKKyAgICAgICAgICAgICAgbXNpLWNvbnRyb2xsZXI7CisgICAgICAgICAgICAgIHJlZyA9IDwweGQwMDIwYTAwIDB4MWQwPiwKKyAgICAgICAgICAgICAgICAgICAgPDB4ZDAwMjEwNzAgMHg1OD47CisgICAgICAgIH07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvbWFydmVsbCxvcmlvbi1pbnRjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9tYXJ2ZWxsLG9yaW9uLWludGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjMTFhYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvbWFydmVsbCxvcmlvbi1pbnRjLnR4dApAQCAtMCwwICsxLDQ4IEBACitNYXJ2ZWxsIE9yaW9uIFNvQyBpbnRlcnJ1cHQgY29udHJvbGxlcnMKKworKiBNYWluIGludGVycnVwdCBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNoYWxsIGJlICJtYXJ2ZWxsLG9yaW9uLWludGMiCistIHJlZzogYmFzZSBhZGRyZXNzKGVzKSBvZiBpbnRlcnJ1cHQgcmVnaXN0ZXJzIHN0YXJ0aW5nIHdpdGggQ0FVU0UgcmVnaXN0ZXIKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXI6IGlkZW50aWZpZXMgdGhlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIKKy0gI2ludGVycnVwdC1jZWxsczogbnVtYmVyIG9mIGNlbGxzIHRvIGVuY29kZSBhbiBpbnRlcnJ1cHQgc291cmNlLCBzaGFsbCBiZSAxCisKK1RoZSBpbnRlcnJ1cHQgc291cmNlcyBtYXAgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBpbiB0aGUgaW50ZXJydXB0CityZWdpc3RlcnMsIGkuZS4KKy0gMCBtYXBzIHRvIGJpdCAwIG9mIGZpcnN0IGJhc2UgYWRkcmVzcywKKy0gMSBtYXBzIHRvIGJpdCAxIG9mIGZpcnN0IGJhc2UgYWRkcmVzcywKKy0gMzIgbWFwcyB0byBiaXQgMCBvZiBzZWNvbmQgYmFzZSBhZGRyZXNzLCBhbmQgc28gb24uCisKK0V4YW1wbGU6CisJaW50YzogaW50ZXJydXB0LWNvbnRyb2xsZXIgeworCQljb21wYXRpYmxlID0gIm1hcnZlbGwsb3Jpb24taW50YyI7CisJCWludGVycnVwdC1jb250cm9sbGVyOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCQkgLyogRG92ZSBoYXMgNjQgZmlyc3QgbGV2ZWwgaW50ZXJydXB0cyAqLworCQlyZWcgPSA8MHgyMDIwMCAweDEwPiwgPDB4MjAyMTAgMHgxMD47CisJfTsKKworKiBCcmlkZ2UgaW50ZXJydXB0IGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hhbGwgYmUgIm1hcnZlbGwsb3Jpb24tYnJpZGdlLWludGMiCistIHJlZzogYmFzZSBhZGRyZXNzIG9mIGJyaWRnZSBpbnRlcnJ1cHQgcmVnaXN0ZXJzIHN0YXJ0aW5nIHdpdGggQ0FVU0UgcmVnaXN0ZXIKKy0gaW50ZXJydXB0czogYnJpZGdlIGludGVycnVwdCBvZiB0aGUgbWFpbiBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogaWRlbnRpZmllcyB0aGUgbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSAjaW50ZXJydXB0LWNlbGxzOiBudW1iZXIgb2YgY2VsbHMgdG8gZW5jb2RlIGFuIGludGVycnVwdCBzb3VyY2UsIHNoYWxsIGJlIDEKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gbWFydmVsbCwjaW50ZXJydXB0czogbnVtYmVyIG9mIGludGVycnVwdHMgcHJvdmlkZWQgYnkgYnJpZGdlIGludGVycnVwdAorICAgICAgY29udHJvbGxlciwgZGVmYXVsdHMgdG8gMzIgaWYgbm90IHNldAorCitFeGFtcGxlOgorCWJyaWRnZV9pbnRjOiBpbnRlcnJ1cHQtY29udHJvbGxlciB7CisJCWNvbXBhdGlibGUgPSAibWFydmVsbCxvcmlvbi1icmlkZ2UtaW50YyI7CisJCWludGVycnVwdC1jb250cm9sbGVyOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCQlyZWcgPSA8MHgyMDExMCAweDg+OworCQlpbnRlcnJ1cHRzID0gPDA+OworCQkvKiBEb3ZlIGJyaWRnZSBwcm92aWRlcyA1IGludGVycnVwdHMgKi8KKwkJbWFydmVsbCwjaW50ZXJydXB0cyA9IDw1PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL21lZGlhdGVrLHN5c2lycS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvbWVkaWF0ZWssc3lzaXJxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmVmNmE4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL21lZGlhdGVrLHN5c2lycS50eHQKQEAgLTAsMCArMSwzMiBAQAorK01lZGlhdGVrIDY1eHgvNjd4eC84MXh4IHN5c2lycQorCitNZWRpYXRlayBTT0NzIHN5c2lycSBzdXBwb3J0IGNvbnRyb2xsYWJsZSBpcnEgaW52ZXJ0ZXIgZm9yIGVhY2ggR0lDIFNQSQoraW50ZXJydXB0LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mOgorCSJtZWRpYXRlayxtdDgxNzMtc3lzaXJxIgorCSJtZWRpYXRlayxtdDgxMzUtc3lzaXJxIgorCSJtZWRpYXRlayxtdDgxMjctc3lzaXJxIgorCSJtZWRpYXRlayxtdDY3OTUtc3lzaXJxIgorCSJtZWRpYXRlayxtdDY1OTItc3lzaXJxIgorCSJtZWRpYXRlayxtdDY1ODktc3lzaXJxIgorCSJtZWRpYXRlayxtdDY1ODItc3lzaXJxIgorCSJtZWRpYXRlayxtdDY1ODAtc3lzaXJxIgorCSJtZWRpYXRlayxtdDY1Nzctc3lzaXJxIgorLSBpbnRlcnJ1cHQtY29udHJvbGxlciA6IElkZW50aWZpZXMgdGhlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIKKy0gI2ludGVycnVwdC1jZWxscyA6IFVzZSB0aGUgc2FtZSBmb3JtYXQgYXMgc3BlY2lmaWVkIGJ5IEdJQyBpbgorICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2dpYy50eHQKKy0gaW50ZXJydXB0LXBhcmVudDogcGhhbmRsZSBvZiBpcnEgcGFyZW50IGZvciBzeXNpcnEuIFRoZSBwYXJlbnQgbXVzdAorICB1c2UgdGhlIHNhbWUgaW50ZXJydXB0LWNlbGxzIGZvcm1hdCBhcyBHSUMuCistIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBpbnRwb2wgcmVnaXN0ZXJzIGFuZCBsZW5ndGggb2YgbWVtb3J5CisgIG1hcHBlZCByZWdpb24uCisKK0V4YW1wbGU6CisJc3lzaXJxOiBpbnRlcnJ1cHQtY29udHJvbGxlckAxMDIwMDEwMCB7CisJCWNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ2NTg5LXN5c2lycSIsICJtZWRpYXRlayxtdDY1Nzctc3lzaXJxIjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mz47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdpYz47CisJCXJlZyA9IDwwIDB4MTAyMDAxMDAgMCAweDFjPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL21pcHMtZ2ljLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9taXBzLWdpYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFlNGMzOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9taXBzLWdpYy50eHQKQEAgLTAsMCArMSw2MCBAQAorTUlQUyBHbG9iYWwgSW50ZXJydXB0IENvbnRyb2xsZXIgKEdJQykKKworVGhlIE1JUFMgR0lDIHJvdXRlcyBleHRlcm5hbCBpbnRlcnJ1cHRzIHRvIGluZGl2aWR1YWwgVlBFcyBhbmQgSVJRIHBpbnMuCitJdCBhbHNvIHN1cHBvcnRzIGxvY2FsIChwZXItcHJvY2Vzc29yKSBpbnRlcnJ1cHRzIGFuZCBzb2Z0d2FyZS1nZW5lcmF0ZWQKK2ludGVycnVwdHMgd2hpY2ggY2FuIGJlIHVzZWQgYXMgSVBJcy4gIFRoZSBHSUMgYWxzbyBpbmNsdWRlcyBhIGZyZWUtcnVubmluZworZ2xvYmFsIHRpbWVyLCBwZXItQ1BVIGNvdW50L2NvbXBhcmUgdGltZXJzLCBhbmQgYSB3YXRjaGRvZy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAibXRpLGdpYyIuCistIGludGVycnVwdC1jb250cm9sbGVyIDogSWRlbnRpZmllcyB0aGUgbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSAjaW50ZXJydXB0LWNlbGxzIDogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgbmVlZGVkIHRvIGVuY29kZSBhbgorICBpbnRlcnJ1cHQgc3BlY2lmaWVyLiAgU2hvdWxkIGJlIDMuCisgIC0gVGhlIGZpcnN0IGNlbGwgaXMgdGhlIHR5cGUgb2YgaW50ZXJydXB0LCBsb2NhbCBvciBzaGFyZWQuCisgICAgU2VlIDxpbmNsdWRlL2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL21pcHMtZ2ljLmg+LgorICAtIFRoZSBzZWNvbmQgY2VsbCBpcyB0aGUgR0lDIGludGVycnVwdCBudW1iZXIuCisgIC0gVGhlIHRoaXJkIGNlbGwgZW5jb2RlcyB0aGUgaW50ZXJydXB0IGZsYWdzLgorICAgIFNlZSA8aW5jbHVkZS9kdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaD4gZm9yIGEgbGlzdCBvZiB2YWxpZAorICAgIGZsYWdzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSByZWcgOiBCYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgR0lDIHJlZ2lzdGVycy4gIElmIG5vdCBwcmVzZW50LAorICB0aGUgYmFzZSBhZGRyZXNzIHJlcG9ydGVkIGJ5IHRoZSBoYXJkd2FyZSBHQ1JfR0lDX0JBU0Ugd2lsbCBiZSB1c2VkLgorLSBtdGkscmVzZXJ2ZWQtY3B1LXZlY3RvcnMgOiBTcGVjaWZpZXMgdGhlIGxpc3Qgb2YgQ1BVIGludGVycnVwdCB2ZWN0b3JzCisgIHRvIHdoaWNoIHRoZSBHSUMgbWF5IG5vdCByb3V0ZSBpbnRlcnJ1cHRzLiAgVmFsaWQgdmFsdWVzIGFyZSAyIC0gNy4KKyAgVGhpcyBwcm9wZXJ0eSBpcyBpZ25vcmVkIGlmIHRoZSBDUFUgaXMgc3RhcnRlZCBpbiBFSUMgbW9kZS4KKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgdGltZXIgc3ViLW5vZGU6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgIm10aSxnaWMtdGltZXIiLgorLSBpbnRlcnJ1cHRzIDogSW50ZXJydXB0IGZvciB0aGUgR0lDIGxvY2FsIHRpbWVyLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzIGZvciB0aW1lciBzdWItbm9kZToKKy0gY2xvY2tzIDogR0lDIHRpbWVyIG9wZXJhdGluZyBjbG9jay4KKy0gY2xvY2stZnJlcXVlbmN5IDogQ2xvY2sgZnJlcXVlbmN5IGF0IHdoaWNoIHRoZSBHSUMgdGltZXJzIG9wZXJhdGUuCisKK05vdGUgdGhhdCBvbmUgb2YgY2xvY2tzIG9yIGNsb2NrLWZyZXF1ZW5jeSBtdXN0IGJlIHNwZWNpZmllZC4KKworRXhhbXBsZToKKworCWdpYzogaW50ZXJydXB0LWNvbnRyb2xsZXJAMWJkYzAwMDAgeworCQljb21wYXRpYmxlID0gIm10aSxnaWMiOworCQlyZWcgPSA8MHgxYmRjMDAwMCAweDIwMDAwPjsKKworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwzPjsKKworCQltdGkscmVzZXJ2ZWQtY3B1LXZlY3RvcnMgPSA8Nz47CisKKwkJdGltZXIgeworCQkJY29tcGF0aWJsZSA9ICJtdGksZ2ljLXRpbWVyIjsKKwkJCWludGVycnVwdHMgPSA8R0lDX0xPQ0FMIDEgSVJRX1RZUEVfTk9ORT47CisJCQljbG9jay1mcmVxdWVuY3kgPSA8NTAwMDAwMDA+OworCQl9OworCX07CisKKwl1YXJ0QDE4MTAxNDAwIHsKKwkJLi4uCisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdpYz47CisJCWludGVycnVwdHMgPSA8R0lDX1NIQVJFRCAyNCBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJLi4uCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9tcnZsLGludGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL21ydmwsaW50Yy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI1MzI3MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9tcnZsLGludGMudHh0CkBAIC0wLDAgKzEsNjAgQEAKKyogTWFydmVsbCBNTVAgSW50ZXJydXB0IGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAibXJ2bCxtbXAtaW50YyIsICJtcnZsLG1tcDItaW50YyIgb3IKKyAgIm1ydmwsbW1wMi1tdXgtaW50YyIKKy0gcmVnIDogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgb2YgdGhlIGludGVycnVwdCBjb250cm9sbGVyLgorICBJZiB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgaXMgaW50YywgYWRkcmVzcyBhbmQgbGVuZ3RoIG1lYW5zIHRoZSByYW5nZQorICBvZiB0aGUgd2hvbGQgaW50ZXJydXB0IGNvbnRyb2xsZXIuIElmIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciBpcyBtdXgtaW50YywKKyAgYWRkcmVzcyBhbmQgbGVuZ3RoIG1lYW5zIG9uZSByZWdpc3Rlci4gU2luY2UgYWRkcmVzcyBvZiBtdXgtaW50YyBpcyBpbiB0aGUKKyAgcmFuZ2Ugb2YgaW50Yy4gbXV4LWludGMgaXMgc2Vjb25kYXJ5IGludGVycnVwdCBjb250cm9sbGVyLgorLSByZWctbmFtZXMgOiBOYW1lIG9mIHRoZSByZWdpc3RlciBzZXQgb2YgdGhlIGludGVycnVwdCBjb250cm9sbGVyLiBJdCdzCisgIG9ubHkgcmVxdWlyZWQgaW4gbXV4LWludGMgaW50ZXJydXB0IGNvbnRyb2xsZXIuCistIGludGVycnVwdHMgOiBTaG91bGQgYmUgdGhlIHBvcnQgaW50ZXJydXB0IHNoYXJlZCBieSBtdXggaW50ZXJydXB0cy4gSXQncworICBvbmx5IHJlcXVpcmVkIGluIG11eC1pbnRjIGludGVycnVwdCBjb250cm9sbGVyLgorLSBpbnRlcnJ1cHQtY29udHJvbGxlciA6IElkZW50aWZpZXMgdGhlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIuCistICNpbnRlcnJ1cHQtY2VsbHMgOiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8gZW5jb2RlIGFuCisgIGludGVycnVwdCBzb3VyY2UuCistIG1ydmwsaW50Yy1uci1pcnFzIDogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgaW50ZXJydXB0cyBpbiB0aGUgaW50ZXJydXB0CisgIGNvbnRyb2xsZXIuCistIG1ydmwsY2xyLW1mcC1pcnEgOiBTcGVjaWZpZXMgdGhlIGludGVycnVwdCB0aGF0IG5lZWRzIHRvIGNsZWFyIE1GUCBlZGdlCisgIGRldGVjdGlvbiBmaXJzdC4KKworRXhhbXBsZToKKwlpbnRjOiBpbnRlcnJ1cHQtY29udHJvbGxlckBkNDI4MjAwMCB7CisJCWNvbXBhdGlibGUgPSAibXJ2bCxtbXAyLWludGMiOworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwxPjsKKwkJcmVnID0gPDB4ZDQyODIwMDAgMHgxMDAwPjsKKwkJbXJ2bCxpbnRjLW5yLWlycXMgPSA8NjQ+OworCX07CisKKwlpbnRjbXV4NEBkNDI4MjE1MCB7CisJCWNvbXBhdGlibGUgPSAibXJ2bCxtbXAyLW11eC1pbnRjIjsKKwkJaW50ZXJydXB0cyA9IDw0PjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJCXJlZyA9IDwweDE1MCAweDQ+LCA8MHgxNjggMHg0PjsKKwkJcmVnLW5hbWVzID0gIm11eCBzdGF0dXMiLCAibXV4IG1hc2siOworCQltcnZsLGludGMtbnItaXJxcyA9IDwyPjsKKwl9OworCisqIE1hcnZlbGwgT3Jpb24gSW50ZXJydXB0IGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllcworLSBjb21wYXRpYmxlIDogIFNob3VsZCBiZSAibWFydmVsbCxvcmlvbi1pbnRjIi4KKy0gI2ludGVycnVwdC1jZWxsczogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgbmVlZGVkIHRvIGVuY29kZSBhbgorICBpbnRlcnJ1cHQgc291cmNlLiBTdXBwb3J0ZWQgdmFsdWUgaXMgPDE+LgorLSBpbnRlcnJ1cHQtY29udHJvbGxlciA6IERlY2xhcmUgdGhpcyBub2RlIHRvIGJlIGFuIGludGVycnVwdCBjb250cm9sbGVyLgorLSByZWcgOiBJbnRlcnJ1cHQgbWFzayBhZGRyZXNzLiBBIGxpc3Qgb2YgNCBieXRlIHJhbmdlcywgb25lIHBlciBjb250cm9sbGVyLgorICAgICAgICBPbmUgZW50cnkgaW4gdGhlIGxpc3QgcmVwcmVzZW50cyAzMiBpbnRlcnJ1cHRzLgorCitFeGFtcGxlOgorCisJaW50YzogaW50ZXJydXB0LWNvbnRyb2xsZXIgeworICAgICAgICAJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLG9yaW9uLWludGMiLCAibWFydmVsbCxpbnRjIjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisgICAgICAgICAgICAgICAgcmVnID0gPDB4ZmVkMjAyMDQgMHgwND4sCisJCSAgICAgIDwweGZlZDIwMjE0IDB4MDQ+OworICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL21zaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvbXNpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjBjMDM0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL21zaS50eHQKQEAgLTAsMCArMSwxMzUgQEAKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBnZW5lcmljIGRldmljZSB0cmVlIGJpbmRpbmcgZm9yIE1TSSBjb250cm9sbGVycyBhbmQKK3RoZWlyIG1hc3RlcihzKS4KKworTWVzc2FnZSBTaWduYWxlZCBJbnRlcnJ1cHRzIChNU0lzKSBhcmUgYSBjbGFzcyBvZiBpbnRlcnJ1cHRzIGdlbmVyYXRlZCBieSBhCit3cml0ZSB0byBhbiBNTUlPIGFkZHJlc3MuCisKK01TSXMgd2VyZSBvcmlnaW5hbGx5IHNwZWNpZmllZCBieSBQQ0kgKGFuZCBhcmUgdXNlZCB3aXRoIFBDSWUpLCBidXQgbWF5IGFsc28gYmUKK3VzZWQgd2l0aCBvdGhlciBidXNzZXMsIGFuZCBoZW5jZSBhIG1lY2hhbmlzbSBpcyByZXF1aXJlZCB0byByZWxhdGUgZGV2aWNlcyBvbgordGhvc2UgYnVzc2VzIHRvIHRoZSBNU0kgY29udHJvbGxlcnMgd2hpY2ggdGhleSBhcmUgY2FwYWJsZSBvZiB1c2luZywKK3BvdGVudGlhbGx5IGluY2x1ZGluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorCitNU0lzIGFyZSBkaXN0aW5ndWlzaGVkIGJ5IHNvbWUgY29tYmluYXRpb24gb2Y6CisKKy0gVGhlIGRvb3JiZWxsICh0aGUgTU1JTyBhZGRyZXNzIHdyaXR0ZW4gdG8pLgorICAKKyAgRGV2aWNlcyBtYXkgYmUgY29uZmlndXJlZCBieSBzb2Z0d2FyZSB0byB3cml0ZSB0byBhcmJpdHJhcnkgZG9vcmJlbGxzIHdoaWNoCisgIHRoZXkgY2FuIGFkZHJlc3MuIEFuIE1TSSBjb250cm9sbGVyIG1heSBmZWF0dXJlIGEgbnVtYmVyIG9mIGRvb3JiZWxscy4KKworLSBUaGUgcGF5bG9hZCAodGhlIHZhbHVlIHdyaXR0ZW4gdG8gdGhlIGRvb3JiZWxsKS4KKyAgCisgIERldmljZXMgbWF5IGJlIGNvbmZpZ3VyZWQgdG8gd3JpdGUgYW4gYXJiaXRyYXJ5IHBheWxvYWQgY2hvc2VuIGJ5IHNvZnR3YXJlLgorICBNU0kgY29udHJvbGxlcnMgbWF5IGhhdmUgcmVzdHJpY3Rpb25zIG9uIHBlcm1pdHRlZCBwYXlsb2Fkcy4KKworLSBTaWRlYmFuZCBpbmZvcm1hdGlvbiBhY2NvbXBhbnlpbmcgdGhlIHdyaXRlLgorICAKKyAgVHlwaWNhbGx5IHRoaXMgaXMgbmVpdGhlciBjb25maWd1cmFibGUgbm9yIHByb2JlYWJsZSwgYW5kIGRlcGVuZHMgb24gdGhlIHBhdGgKKyAgdGFrZW4gdGhyb3VnaCB0aGUgbWVtb3J5IHN5c3RlbSAoaS5lLiBpdCBpcyBhIHByb3BlcnR5IG9mIHRoZSBjb21iaW5hdGlvbiBvZgorICBNU0kgY29udHJvbGxlciBhbmQgZGV2aWNlIHJhdGhlciB0aGFuIGEgcHJvcGVydHkgb2YgZWl0aGVyIGluIGlzb2xhdGlvbikuCisKKworTVNJIGNvbnRyb2xsZXJzOgorPT09PT09PT09PT09PT09PQorCitBbiBNU0kgY29udHJvbGxlciBzaWduYWxzIGludGVycnVwdHMgdG8gYSBDUFUgd2hlbiBhIHdyaXRlIGlzIG1hZGUgdG8gYW4gTU1JTworYWRkcmVzcyBieSBzb21lIG1hc3Rlci4gQW4gTVNJIGNvbnRyb2xsZXIgbWF5IGZlYXR1cmUgYSBudW1iZXIgb2YgZG9vcmJlbGxzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBtc2ktY29udHJvbGxlcjogSWRlbnRpZmllcyB0aGUgbm9kZSBhcyBhbiBNU0kgY29udHJvbGxlci4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gI21zaS1jZWxsczogVGhlIG51bWJlciBvZiBjZWxscyBpbiBhbiBtc2ktc3BlY2lmaWVyLCByZXF1aXJlZCBpZiBub3QgemVyby4KKworICBUeXBpY2FsbHkgdGhpcyB3aWxsIGVuY29kZSBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIHNpZGViYW5kIGRhdGEsIGFuZCB3aWxsCisgIG5vdCBlbmNvZGUgZG9vcmJlbGxzIG9yIHBheWxvYWRzIGFzIHRoZXNlIGNhbiBiZSBjb25maWd1cmVkIGR5bmFtaWNhbGx5LgorCisgIFRoZSBtZWFuaW5nIG9mIHRoZSBtc2ktc3BlY2lmaWVyIGlzIGRlZmluZWQgYnkgdGhlIGRldmljZSB0cmVlIGJpbmRpbmcgb2YKKyAgdGhlIHNwZWNpZmljIE1TSSBjb250cm9sbGVyLiAKKworCitNU0kgY2xpZW50cworPT09PT09PT09PT0KKworTVNJIGNsaWVudHMgYXJlIGRldmljZXMgd2hpY2ggZ2VuZXJhdGUgTVNJcy4gRm9yIGVhY2ggTVNJIHRoZXkgd2lzaCB0bworZ2VuZXJhdGUsIHRoZSBkb29yYmVsbCBhbmQgcGF5bG9hZCBtYXkgYmUgY29uZmlndXJlZCwgdGhvdWdoIHNpZGViYW5kCitpbmZvcm1hdGlvbiBtYXkgbm90IGJlIGNvbmZpZ3VyYWJsZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gbXNpLXBhcmVudDogQSBsaXN0IG9mIHBoYW5kbGUgKyBtc2ktc3BlY2lmaWVyIHBhaXJzLCBvbmUgZm9yIGVhY2ggTVNJCisgIGNvbnRyb2xsZXIgd2hpY2ggdGhlIGRldmljZSBpcyBjYXBhYmxlIG9mIHVzaW5nLgorCisgIFRoaXMgcHJvcGVydHkgaXMgdW5vcmRlcmVkLCBhbmQgTVNJcyBtYXkgYmUgYWxsb2NhdGVkIGZyb20gYW55IGNvbWJpbmF0aW9uIG9mCisgIE1TSSBjb250cm9sbGVycyBsaXN0ZWQgaW4gdGhlIG1zaS1wYXJlbnQgcHJvcGVydHkuCisKKyAgSWYgYSBkZXZpY2UgaGFzIHJlc3RyaWN0aW9ucyBvbiB0aGUgYWxsb2NhdGlvbiBvZiBNU0lzLCB0aGVzZSByZXN0cmljdGlvbnMKKyAgbXVzdCBiZSBkZXNjcmliZWQgd2l0aCBhZGRpdGlvbmFsIHByb3BlcnRpZXMuCisKKyAgV2hlbiAjbXNpLWNlbGxzIGlzIG5vbi16ZXJvLCBidXNzZXMgd2l0aCBhbiBtc2ktcGFyZW50IHdpbGwgcmVxdWlyZQorICBhZGRpdGlvbmFsIHByb3BlcnRpZXMgdG8gZGVzY3JpYmUgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGRldmljZXMgb24gdGhlIGJ1cworICBhbmQgdGhlIHNldCBvZiBNU0lzIHRoZXkgY2FuIHBvdGVudGlhbGx5IGdlbmVyYXRlLgorCisKK0V4YW1wbGUKKz09PT09PT0KKworLyB7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MT47CisKKwltc2lfYTogbXNpLWNvbnRyb2xsZXJAYSB7CisJCXJlZyA9IDwweGEgMHhmMDA+OworCQljb21wYXRpYmxlID0gInZlbmRvci1hLHNvbWUtY29udHJvbGxlciI7CisJCW1zaS1jb250cm9sbGVyOworCQkvKiBObyBzaWRlYmFuZCBkYXRhLCBzbyAjbXNpLWNlbGxzIG9taXR0ZWQgKi8KKwl9OworCisJbXNpX2I6IG1zaS1jb250cm9sbGVyQGIgeworCQlyZWcgPSA8MHhiIDB4ZjAwPjsKKwkJY29tcGF0aWJsZSA9ICJ2ZW5kb3ItYixhbm90aGVyLWNvbnRyb2xsZXIiOworCQltc2ktY29udHJvbGxlcjsKKwkJLyogRWFjaCBkZXZpY2UgaGFzIHNvbWUgdW5pcXVlIElEICovCisJCSNtc2ktY2VsbHMgPSA8MT47CisJfTsKKworCW1zaV9jOiBtc2ktY29udHJvbGxlckBjIHsKKwkJcmVnID0gPDB4YiAweGYwMD47CisJCWNvbXBhdGlibGUgPSAidmVuZG9yLWIsYW5vdGhlci1jb250cm9sbGVyIjsKKwkJbXNpLWNvbnRyb2xsZXI7CisJCS8qIEVhY2ggZGV2aWNlIGhhcyBzb21lIHVuaXF1ZSBJRCAqLworCQkjbXNpLWNlbGxzID0gPDE+OworCX07CisKKwlkZXZAMCB7CisJCXJlZyA9IDwweDAgMHhmMDA+OworCQljb21wYXRpYmxlID0gInZlbmRvci1jLHNvbWUtZGV2aWNlIjsKKworCQkvKiBDYW4gb25seSBnZW5lcmF0ZSBNU0lzIHRvIG1zaV9hICovCisJCW1zaS1wYXJlbnQgPSA8Jm1zaV9hPjsKKwl9OworCisJZGV2QDEgeworCQlyZWcgPSA8MHgxIDB4ZjAwPjsKKwkJY29tcGF0aWJsZSA9ICJ2ZW5kb3ItYyxzb21lLWRldmljZSI7CisKKwkJLyogCisJCSAqIENhbiBnZW5lcmF0ZSBNU0lzIHRvIGVpdGhlciBBIG9yIEIuCisJCSAqLworCQltc2ktcGFyZW50ID0gPCZtc2lfYT4sIDwmbXNpX2IgMHgxNz47CisJfTsKKworCWRldkAyIHsKKwkJcmVnID0gPDB4MiAweGYwMD47CisJCWNvbXBhdGlibGUgPSAidmVuZG9yLWMsc29tZS1kZXZpY2UiOworCQkvKgorCQkgKiBIYXMgZGlmZmVyZW50IElEcyBhdCBlYWNoIE1TSSBjb250cm9sbGVyLgorCQkgKiBDYW4gZ2VuZXJhdGUgTVNJcyB0byBhbGwgb2YgdGhlIE1TSSBjb250cm9sbGVycy4KKwkJICovCisJCW1zaS1wYXJlbnQgPSA8Jm1zaV9hPiwgPCZtc2lfYiAweDE3PiwgPCZtc2lfYyAweDUzPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9udmlkaWEsdGVncmEtaWN0bHIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL252aWRpYSx0ZWdyYS1pY3Rsci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA5OWZlMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9udmlkaWEsdGVncmEtaWN0bHIudHh0CkBAIC0wLDAgKzEsNDMgQEAKK05WSURJQSBMZWdhY3kgSW50ZXJydXB0IENvbnRyb2xsZXIKKworQWxsIFRlZ3JhIFNvQ3MgY29udGFpbiBhIGxlZ2FjeSBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGF0IHJvdXRlcworaW50ZXJydXB0cyB0byB0aGUgR0lDLCBhbmQgYWxzbyBzZXJ2ZXMgYXMgYSB3YWtldXAgc291cmNlLiBJdCBpcyBhbHNvCityZWZlcnJlZCB0byBhcyAiaWN0bHIiLCBoZW5jZSB0aGUgbmFtZSBvZiB0aGUgYmluZGluZy4KKworVGhlIEhXIGJsb2NrIGV4cG9zZXMgYSBudW1iZXIgb2YgaW50ZXJydXB0IGNvbnRyb2xsZXJzLCBlYWNoCitpbXBsZW1lbnRpbmcgYSBzZXQgb2YgMzIgaW50ZXJydXB0cy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlOiAibnZpZGlhLHRlZ3JhPGNoaXA+LWljdGxyIi4gVGhlIExJQyBvbgorICBzdWJzZXF1ZW50IFNvQ3MgcmVtYWluZWQgYmFja3dhcmRzLWNvbXBhdGlibGUgd2l0aCBUZWdyYTMwLCBzbyBvbgorICBUZWdyYSBnZW5lcmF0aW9ucyBsYXRlciB0aGFuIFRlZ3JhMzAgdGhlIGNvbXBhdGlibGUgdmFsdWUgc2hvdWxkCisgIGluY2x1ZGUgIm52aWRpYSx0ZWdyYTMwLWljdGxyIi4JCistIHJlZyA6IFNwZWNpZmllcyBiYXNlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIHJlZ2lzdGVycy4KKyAgRWFjaCBjb250cm9sbGVyIG11c3QgYmUgZGVzY3JpYmVkIHNlcGFyYXRlbHkgKFRlZ3JhMjAgaGFzIDQgb2YgdGhlbSwKKyAgd2hlcmVhcyBUZWdyYTMwIGFuZCBsYXRlciBoYXZlIDUiICAKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXIgOiBJZGVudGlmaWVzIHRoZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyLgorLSAjaW50ZXJydXB0LWNlbGxzIDogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgbmVlZGVkIHRvIGVuY29kZSBhbgorICBpbnRlcnJ1cHQgc291cmNlLiBUaGUgdmFsdWUgbXVzdCBiZSAzLgorLSBpbnRlcnJ1cHQtcGFyZW50IDogYSBwaGFuZGxlIHRvIHRoZSBHSUMgdGhlc2UgaW50ZXJydXB0cyBhcmUgcm91dGVkCisgIHRvLgorCitOb3RlczoKKworLSBCZWNhdXNlIHRoaXMgSFcgdWx0aW1hdGVseSByb3V0ZXMgaW50ZXJydXB0cyB0byB0aGUgR0lDLCB0aGUKKyAgaW50ZXJydXB0IHNwZWNpZmllciBtdXN0IGJlIHRoYXQgb2YgdGhlIEdJQy4KKy0gT25seSBTUElzIGNhbiB1c2UgdGhlIGljdGxyIGFzIGFuIGludGVycnVwdCBwYXJlbnQuIFNHSXMgYW5kIFBQSXMKKyAgYXJlIGV4cGxpY2l0bHkgZm9yYmlkZGVuLgorCitFeGFtcGxlOgorCisJaWN0bHI6IGludGVycnVwdC1jb250cm9sbGVyQDYwMDA0MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJudmlkaWEsdGVncmEyMC1pY3RsciIsICJudmlkaWEsdGVncmEtaWN0bHIiOworCQlyZWcgPSA8MHg2MDAwNDAwMCA2ND4sCisJCSAgICAgIDwweDYwMDA0MTAwIDY0PiwKKwkJICAgICAgPDB4NjAwMDQyMDAgNjQ+LAorCQkgICAgICA8MHg2MDAwNDMwMCA2ND47CisJCWludGVycnVwdC1jb250cm9sbGVyOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDM+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpbnRjPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL254cCxscGMzMjIwLW1pYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvbnhwLGxwYzMyMjAtbWljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzlhZGNhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL254cCxscGMzMjIwLW1pYy50eHQKQEAgLTAsMCArMSwzOCBAQAorKiBOWFAgTFBDMzJ4eCBNYWluIEludGVycnVwdCBDb250cm9sbGVyCisgIChNSUMsIGluY2x1ZGluZyBTSUMxIGFuZCBTSUMyIHNlY29uZGFyeSBjb250cm9sbGVycykKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJueHAsbHBjMzIyMC1taWMiCistIGludGVycnVwdC1jb250cm9sbGVyOiBJZGVudGlmaWVzIHRoZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyLgorLSBpbnRlcnJ1cHQtcGFyZW50OiBFbXB0eSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyIGl0c2VsZgorLSAjaW50ZXJydXB0LWNlbGxzOiBUaGUgbnVtYmVyIG9mIGNlbGxzIHRvIGRlZmluZSB0aGUgaW50ZXJydXB0cy4gU2hvdWxkIGJlIDIuCisgIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBJUlEgbnVtYmVyCisgIFRoZSBzZWNvbmQgY2VsbCBpcyB1c2VkIHRvIHNwZWNpZnkgbW9kZToKKyAgICAgIDEgPSBsb3ctdG8taGlnaCBlZGdlIHRyaWdnZXJlZAorICAgICAgMiA9IGhpZ2gtdG8tbG93IGVkZ2UgdHJpZ2dlcmVkCisgICAgICA0ID0gYWN0aXZlIGhpZ2ggbGV2ZWwtc2Vuc2l0aXZlCisgICAgICA4ID0gYWN0aXZlIGxvdyBsZXZlbC1zZW5zaXRpdmUKKyAgICAgIERlZmF1bHQgZm9yIGludGVybmFsIHNvdXJjZXMgc2hvdWxkIGJlIHNldCB0byA0IChhY3RpdmUgaGlnaCkuCistIHJlZzogU2hvdWxkIGNvbnRhaW4gTUlDIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCisKK0V4YW1wbGVzOgorCS8qCisJICogTUlDCisJICovCisJbWljOiBpbnRlcnJ1cHQtY29udHJvbGxlckA0MDAwODAwMCB7CisJCWNvbXBhdGlibGUgPSAibnhwLGxwYzMyMjAtbWljIjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCWludGVycnVwdC1wYXJlbnQ7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJCXJlZyA9IDwweDQwMDA4MDAwIDB4QzAwMD47CisJfTsKKworCS8qCisJICogQURDCisJICovCisJYWRjQDQwMDQ4MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJueHAsbHBjMzIyMC1hZGMiOworCQlyZWcgPSA8MHg0MDA0ODAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZtaWM+OworCQlpbnRlcnJ1cHRzID0gPDM5IDQ+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvb3Blbi1waWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL29wZW4tcGljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDlhOTAyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL29wZW4tcGljLnR4dApAQCAtMCwwICsxLDk4IEBACisqIE9wZW4gUElDIEJpbmRpbmcKKworVGhpcyBiaW5kaW5nIHNwZWNpZmllcyB3aGF0IHByb3BlcnRpZXMgbXVzdCBiZSBhdmFpbGFibGUgaW4gdGhlIGRldmljZSB0cmVlCityZXByZXNlbnRhdGlvbiBvZiBhbiBPcGVuIFBJQyBjb21wbGlhbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIuICBUaGlzIGJpbmRpbmcgaXMKK2Jhc2VkIG9uIHRoZSBiaW5kaW5nIGRlZmluZWQgZm9yIE9wZW4gUElDIGluIFsxXSBhbmQgaXMgYSBzdXBlcnNldCBvZiB0aGF0CitiaW5kaW5nLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgIE5PVEU6IE1hbnkgb2YgdGhlc2UgZGVzY3JpcHRpb25zIHdlcmUgcGFyYXBocmFzZWQgaGVyZSBmcm9tIFsxXSB0byBhaWQKKyAgICAgICAgcmVhZGFiaWxpdHkuCisKKyAgICAtIGNvbXBhdGlibGU6IFNwZWNpZmllcyB0aGUgY29tcGF0aWJpbGl0eSBsaXN0IGZvciB0aGUgUElDLiAgVGhlIHR5cGUKKyAgICAgIHNoYWxsIGJlIDxzdHJpbmc+IGFuZCB0aGUgdmFsdWUgc2hhbGwgaW5jbHVkZSAib3Blbi1waWMiLgorCisgICAgLSByZWc6IFNwZWNpZmllcyB0aGUgYmFzZSBwaHlzaWNhbCBhZGRyZXNzKHMpIGFuZCBzaXplKHMpIG9mIHRoaXMKKyAgICAgIFBJQydzIGFkZHJlc3NhYmxlIHJlZ2lzdGVyIHNwYWNlLiAgVGhlIHR5cGUgc2hhbGwgYmUgPHByb3AtZW5jb2RlZC1hcnJheT4uCisKKyAgICAtIGludGVycnVwdC1jb250cm9sbGVyOiBUaGUgcHJlc2VuY2Ugb2YgdGhpcyBwcm9wZXJ0eSBpZGVudGlmaWVzIHRoZSBub2RlCisgICAgICBhcyBhbiBPcGVuIFBJQy4gIE5vIHByb3BlcnR5IHZhbHVlIHNoYWxsIGJlIGRlZmluZWQuCisKKyAgICAtICNpbnRlcnJ1cHQtY2VsbHM6IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNlbGxzIG5lZWRlZCB0byBlbmNvZGUgYW4KKyAgICAgIGludGVycnVwdCBzb3VyY2UuICBUaGUgdHlwZSBzaGFsbCBiZSBhIDx1MzI+IGFuZCB0aGUgdmFsdWUgc2hhbGwgYmUgMi4KKworICAgIC0gI2FkZHJlc3MtY2VsbHM6IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNlbGxzIG5lZWRlZCB0byBlbmNvZGUgYW4KKyAgICAgIGFkZHJlc3MuICBUaGUgdHlwZSBzaGFsbCBiZSA8dTMyPiBhbmQgdGhlIHZhbHVlIHNoYWxsIGJlIDAuICBBcyBzdWNoLAorICAgICAgJ2ludGVycnVwdC1tYXAnIG5vZGVzIGRvIG5vdCBoYXZlIHRvIHNwZWNpZnkgYSBwYXJlbnQgdW5pdCBhZGRyZXNzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCisgICAgLSBwaWMtbm8tcmVzZXQ6IFRoZSBwcmVzZW5jZSBvZiB0aGlzIHByb3BlcnR5IGluZGljYXRlcyB0aGF0IHRoZSBQSUMKKyAgICAgIHNoYWxsIG5vdCBiZSByZXNldCBkdXJpbmcgcnVudGltZSBpbml0aWFsaXphdGlvbi4gIE5vIHByb3BlcnR5IHZhbHVlIHNoYWxsCisgICAgICBiZSBkZWZpbmVkLiAgVGhlIHByZXNlbmNlIG9mIHRoaXMgcHJvcGVydHkgYWxzbyBtYW5kYXRlcyB0aGF0IGFueQorICAgICAgaW5pdGlhbGl6YXRpb24gcmVsYXRlZCB0byBpbnRlcnJ1cHQgc291cmNlcyBzaGFsbCBiZSBsaW1pdGVkIHRvIHNvdXJjZXMKKyAgICAgIGV4cGxpY2l0bHkgcmVmZXJlbmNlZCBpbiB0aGUgZGV2aWNlIHRyZWUuCisKKyogSW50ZXJydXB0IFNwZWNpZmllciBEZWZpbml0aW9uCisKKyAgSW50ZXJydXB0IHNwZWNpZmllcnMgY29uc2lzdHMgb2YgMiBjZWxscyBlbmNvZGVkIGFzCisgIGZvbGxvd3M6CisKKyAgICAtIDwxc3QtY2VsbD46IFRoZSBpbnRlcnJ1cHQtbnVtYmVyIHRoYXQgaWRlbnRpZmllcyB0aGUgaW50ZXJydXB0IHNvdXJjZS4KKworICAgIC0gPDJuZC1jZWxsPjogVGhlIGxldmVsLXNlbnNlIGluZm9ybWF0aW9uLCBlbmNvZGVkIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDAgPSBsb3ctdG8taGlnaCBlZGdlIHRyaWdnZXJlZAorICAgICAgICAgICAgICAgICAgICAxID0gYWN0aXZlIGxvdyBsZXZlbC1zZW5zaXRpdmUKKyAgICAgICAgICAgICAgICAgICAgMiA9IGFjdGl2ZSBoaWdoIGxldmVsLXNlbnNpdGl2ZQorICAgICAgICAgICAgICAgICAgICAzID0gaGlnaC10by1sb3cgZWRnZSB0cmlnZ2VyZWQKKworKiBFeGFtcGxlcworCitFeGFtcGxlIDE6CisKKwkvKgorCSAqIEFuIE9wZW4gUElDIGludGVycnVwdCBjb250cm9sbGVyCisJICovCisJbXBpYzogcGljQDQwMDAwIHsKKwkJLy8gVGhpcyBpcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlciBub2RlLgorCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKworCQkvLyBObyBhZGRyZXNzIGNlbGxzIHNvIHRoYXQgJ2ludGVycnVwdC1tYXAnIG5vZGVzIHdoaWNoIHJlZmVyZW5jZQorCQkvLyB0aGlzIE9wZW4gUElDIG5vZGUgZG8gbm90IG5lZWQgYSBwYXJlbnQgYWRkcmVzcyBzcGVjaWZpZXIuCisJCSNhZGRyZXNzLWNlbGxzID0gPDA+OworCisJCS8vIFR3byBjZWxscyB0byBlbmNvZGUgaW50ZXJydXB0IHNvdXJjZXMuCisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisKKwkJLy8gT2Zmc2V0IGFkZHJlc3Mgb2YgMHg0MDAwMCBhbmQgc2l6ZSBvZiAweDQwMDAwLgorCQlyZWcgPSA8MHg0MDAwMCAweDQwMDAwPjsKKworCQkvLyBDb21wYXRpYmxlIHdpdGggT3BlbiBQSUMuCisJCWNvbXBhdGlibGUgPSAib3Blbi1waWMiOworCisJCS8vIFRoZSBQSUMgc2hhbGwgbm90IGJlIHJlc2V0LgorCQlwaWMtbm8tcmVzZXQ7CisJfTsKKworRXhhbXBsZSAyOgorCisJLyoKKwkgKiBBbiBpbnRlcnJ1cHQgZ2VuZXJhdGluZyBkZXZpY2UgdGhhdCBpcyB3aXJlZCB0byBhbiBPcGVuIFBJQy4KKwkgKi8KKwlzZXJpYWwwOiBzZXJpYWxANDUwMCB7CisJCS8vIEludGVycnVwdCBzb3VyY2UgJzQyJyB0aGF0IGlzIGFjdGl2ZSBoaWdoIGxldmVsLXNlbnNpdGl2ZS4KKwkJLy8gTm90ZSB0aGF0IHRoZXJlIGFyZSBvbmx5IHR3byBjZWxscyBhcyBzcGVjaWZpZWQgaW4gdGhlIGludGVycnVwdAorCQkvLyBwYXJlbnQncyAnI2ludGVycnVwdC1jZWxscycgcHJvcGVydHkuCisJCWludGVycnVwdHMgPSA8NDIgMj47CisKKwkJLy8gVGhlIGludGVycnVwdCBjb250cm9sbGVyIHRoYXQgdGhpcyBkZXZpY2UgaXMgd2lyZWQgdG8uCisJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1waWM+OworCX07CisKKyogUmVmZXJlbmNlcworCitbMV0gUG93ZXIub3JnIChUTSkgU3RhbmRhcmQgZm9yIEVtYmVkZGVkIFBvd2VyIEFyY2hpdGVjdHVyZSAoVE0pIFBsYXRmb3JtCisgICAgUmVxdWlyZW1lbnRzIChlUEFQUiksIFZlcnNpb24gMS4wLCBKdWx5IDIwMDguCisgICAgKGh0dHA6Ly93d3cucG93ZXIub3JnL3Jlc291cmNlcy9kb3dubG9hZHMvUG93ZXJfZVBBUFJfQVBQUk9WRURfdjEuMC5wZGYpCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9vcGVuY29yZXMsb3Ixay1waWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL29wZW5jb3JlcyxvcjFrLXBpYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVjMDRmYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9vcGVuY29yZXMsb3Ixay1waWMudHh0CkBAIC0wLDAgKzEsMjMgQEAKK09wZW5SSVNDIDEwMDAgUHJvZ3JhbW1hYmxlIEludGVycnVwdCBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAib3BlbmNvcmVzLG9yMWstcGljLWxldmVsIiBmb3IgdmFyaWFudHMgd2l0aAorICBsZXZlbCB0cmlnZ2VyZWQgaW50ZXJydXB0IGxpbmVzLCAib3BlbmNvcmVzLG9yMWstcGljLWVkZ2UiIGZvciB2YXJpYW50cyB3aXRoCisgIGVkZ2UgdHJpZ2dlcmVkIGludGVycnVwdCBsaW5lcyBvciAib3BlbmNvcmVzLG9yMTIwMC1waWMiIGZvciBtYWNoaW5lcworICB3aXRoIHRoZSBub24tc3BlYyBjb21wbGlhbnQgb3IxMjAwIHR5cGUgaW1wbGVtZW50YXRpb24uCisKKyAgIm9wZW5jb3JlcyxvcjFrLXBpYyIgaXMgYWxzbyBwcm92aWRlZCBhcyBhbiBhbGlhcyB0byAib3BlbmNvcmVzLG9yMTIwMC1waWMiLAorICBidXQgdGhpcyBpcyBvbmx5IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KKworLSBpbnRlcnJ1cHQtY29udHJvbGxlciA6IElkZW50aWZpZXMgdGhlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIKKy0gI2ludGVycnVwdC1jZWxscyA6IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNlbGxzIG5lZWRlZCB0byBlbmNvZGUgYW4KKyAgaW50ZXJydXB0IHNvdXJjZS4gVGhlIHZhbHVlIHNoYWxsIGJlIDEuCisKK0V4YW1wbGU6CisKK2ludGM6IGludGVycnVwdC1jb250cm9sbGVyIHsKKwljb21wYXRpYmxlID0gIm9wZW5jb3JlcyxvcjFrLXBpYy1sZXZlbCI7CisJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJI2ludGVycnVwdC1jZWxscyA9IDwxPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvcWNhLGF0aDc5LWNwdS1pbnRjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9xY2EsYXRoNzktY3B1LWludGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhYmNlNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvcWNhLGF0aDc5LWNwdS1pbnRjLnR4dApAQCAtMCwwICsxLDQ0IEBACitCaW5kaW5nIGZvciBRdWFsY29tbSBBdGhlcm9zIEFSN3h4eC9BUjlYWFggQ1BVIGludGVycnVwdCBjb250cm9sbGVyCisKK09uIG1vc3QgU29DIHRoZSBJUlEgY29udHJvbGxlciBuZWVkIHRvIGZsdXNoIHRoZSBERFIgRklGTyBiZWZvcmUgcnVubmluZwordGhlIGludGVycnVwdCBoYW5kbGVyIG9mIHNvbWUgZGV2aWNlcy4gVGhpcyBpcyBjb25maWd1cmVkIHVzaW5nIHRoZQorcWNhLGRkci13Yi1jaGFubmVscyBhbmQgcWNhLGRkci13Yi1jaGFubmVsLWludGVycnVwdHMgcHJvcGVydGllcy4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBoYXMgdG8gYmUgInFjYSw8c29jdHlwZT4tY3B1LWludGMiLCAicWNhLGFyNzEwMC1jcHUtaW50YyIKKyAgYXMgZmFsbGJhY2sKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXIgOiBJZGVudGlmaWVzIHRoZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyCistICNpbnRlcnJ1cHQtY2VsbHMgOiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8gZW5jb2RlIGludGVycnVwdAorCQkgICAgIHNvdXJjZSwgc2hvdWxkIGJlIDEgZm9yIGludGMKKworUGxlYXNlIHJlZmVyIHRvIGludGVycnVwdHMudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBkZXRhaWxzIG9mIHRoZSBjb21tb24KK0ludGVycnVwdCBDb250cm9sbGVycyBiaW5kaW5ncyB1c2VkIGJ5IGNsaWVudCBkZXZpY2VzLgorCitPcHRpb25hbCBQcm9wZXJ0aWVzOgorCistIHFjYSxkZHItd2ItY2hhbm5lbC1pbnRlcnJ1cHRzOiBMaXN0IG9mIHRoZSBpbnRlcnJ1cHRzIG5lZWRpbmcgYSB3cml0ZQorICBidWZmZXIgZmx1c2gKKy0gcWNhLGRkci13Yi1jaGFubmVsczogTGlzdCBvZiBwaGFuZGxlcyB0byB0aGUgd3JpdGUgYnVmZmVyIGNoYW5uZWxzIGZvcgorICBlYWNoIGludGVycnVwdC4gSWYgcWNhLGRkci13Yi1jaGFubmVsLWludGVycnVwdHMgaXMgbm90IHByZXNlbnQgdGhlIGludGVycnVwdAorICBkZWZhdWx0IHRvIHRoZSBlbnRyeSdzIGluZGV4LgorCitFeGFtcGxlOgorCisJaW50ZXJydXB0LWNvbnRyb2xsZXIgeworCQljb21wYXRpYmxlID0gInFjYSxhcjkxMzItY3B1LWludGMiLCAicWNhLGFyNzEwMC1jcHUtaW50YyI7CisKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisKKwkJcWNhLGRkci13Yi1jaGFubmVsLWludGVycnVwdHMgPSA8Mj4sIDwzPiwgPDQ+LCA8NT47CisJCXFjYSxkZHItd2ItY2hhbm5lbHMgPSA8JmRkcl9jdHJsIDM+LCA8JmRkcl9jdHJsIDI+LAorCQkJCQk8JmRkcl9jdHJsIDA+LCA8JmRkcl9jdHJsIDE+OworCX07CisKKwkuLi4KKworCWRkcl9jdHJsOiBtZW1vcnktY29udHJvbGxlckAxODAwMDAwMCB7CisJCS4uLgorCQkjcWNhLGRkci13Yi1jaGFubmVsLWNlbGxzID0gPDE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvcWNhLGF0aDc5LW1pc2MtaW50Yy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvcWNhLGF0aDc5LW1pc2MtaW50Yy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM5NmIxZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9xY2EsYXRoNzktbWlzYy1pbnRjLnR4dApAQCAtMCwwICsxLDQ2IEBACitCaW5kaW5nIGZvciBRdWFsY29tbSBBdGhlcm9zIEFSN3h4eC9BUjlYWFggTUlTQyBpbnRlcnJ1cHQgY29udHJvbGxlcgorCitUaGUgTUlTQyBpbnRlcnJ1cHQgY29udHJvbGxlciBpcyBhIHNlY29uZGFyeSBjb250cm9sbGVyIGZvciBsb3dlciBwcmlvcml0eQoraW50ZXJydXB0LgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBoYXMgdG8gYmUgInFjYSw8c29jdHlwZT4tY3B1LWludGMiLCAicWNhLGFyNzEwMC1taXNjLWludGMiIG9yCisgICJxY2EsPHNvY3R5cGU+LWNwdS1pbnRjIiwgInFjYSxhcjcyNDAtbWlzYy1pbnRjIgorLSByZWc6IEJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgY29udHJvbGxlcnMgbWVtb3J5IGFyZWEKKy0gaW50ZXJydXB0LXBhcmVudDogcGhhbmRsZSBvZiB0aGUgcGFyZW50IGludGVycnVwdCBjb250cm9sbGVyLgorLSBpbnRlcnJ1cHRzOiBJbnRlcnJ1cHQgc3BlY2lmaWVyIGZvciB0aGUgY29udHJvbGxlcnMgaW50ZXJydXB0LgorLSBpbnRlcnJ1cHQtY29udHJvbGxlciA6IElkZW50aWZpZXMgdGhlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIKKy0gI2ludGVycnVwdC1jZWxscyA6IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNlbGxzIG5lZWRlZCB0byBlbmNvZGUgaW50ZXJydXB0CisJCSAgICAgc291cmNlLCBzaG91bGQgYmUgMQorCitDb21wYXRpYmxlIGZhbGxiYWNrIGRlcGVuZHMgb24gdGhlIFNvQy4gVXNlIGFyNzEwMCBmb3IgYXI3MXh4IGFuZCBhcjkxM3gsCit1c2UgYXI3MjQwIGZvciBhbGwgb3RoZXIgU29Dcy4KKworUGxlYXNlIHJlZmVyIHRvIGludGVycnVwdHMudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBkZXRhaWxzIG9mIHRoZSBjb21tb24KK0ludGVycnVwdCBDb250cm9sbGVycyBiaW5kaW5ncyB1c2VkIGJ5IGNsaWVudCBkZXZpY2VzLgorCitFeGFtcGxlOgorCisJaW50ZXJydXB0LWNvbnRyb2xsZXJAMTgwNjAwMTAgeworCQljb21wYXRpYmxlID0gInFjYSxhcjkxMzItbWlzYy1pbnRjIiwgcWNhLGFyNzEwMC1taXNjLWludGMiOworCQlyZWcgPSA8MHgxODA2MDAxMCAweDQ+OworCisJCWludGVycnVwdC1wYXJlbnQgPSA8JmNwdWludGM+OworCQlpbnRlcnJ1cHRzID0gPDY+OworCisJCWludGVycnVwdC1jb250cm9sbGVyOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCX07CisKK0Fub3RoZXIgZXhhbXBsZToKKworCWludGVycnVwdC1jb250cm9sbGVyQDE4MDYwMDEwIHsKKwkJY29tcGF0aWJsZSA9ICJxY2EsYXI5MzMxLW1pc2MtaW50YyIsIHFjYSxhcjcyNDAtbWlzYy1pbnRjIjsKKwkJcmVnID0gPDB4MTgwNjAwMTAgMHg0PjsKKworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZjcHVpbnRjPjsKKwkJaW50ZXJydXB0cyA9IDw2PjsKKworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwxPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3JlbmVzYXMsaDgzMDBoLWludGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3JlbmVzYXMsaDgzMDBoLWludGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2ZThkODIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvcmVuZXNhcyxoODMwMGgtaW50Yy50eHQKQEAgLTAsMCArMSwyMiBAQAorKiBIOC8zMDBIIEludGVycnVwdCBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogaGFzIHRvIGJlICJyZW5lc2FzLGg4MzAwaC1pbnRjIiwgInJlbmVzYXMsaDgzMDAtaW50YyIgYXMgZmFsbGJhY2suCistICNpbnRlcnJ1cHQtY2VsbHM6IGhhcyB0byBiZSA8Mj46IGFuIGludGVycnVwdCBpbmRleCBhbmQgZmxhZ3MsIGFzIGRlZmluZWQgaW4KKyAgaW50ZXJydXB0cy50eHQgaW4gdGhpcyBkaXJlY3RvcnkKKy0gcmVnczogQmFzZSBhZGRyZXNzIG9mIGludGVycnVwdCBjb250cm9sbGVyIHJlZ2lzdGVycy4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworLSBhbnkgcHJvcGVydGllcywgbGlzdGVkIGluIGludGVycnVwdHMudHh0LCBhbmQgYW55IHN0YW5kYXJkIHJlc291cmNlIGFsbG9jYXRpb24KKyAgcHJvcGVydGllcworCitFeGFtcGxlOgorCisJaDhpbnRjOiBpbnRlcnJ1cHQtY29udHJvbGxlckBmZWUwMTIgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMsaDgzMDBoLWludGMiLCAicmVuZXNhcyxoODMwMC1pbnRjIjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCXJlZyA9IDwweGZlZTAxMiA3PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3JlbmVzYXMsaDhzLWludGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3JlbmVzYXMsaDhzLWludGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZGVkMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvcmVuZXNhcyxoOHMtaW50Yy50eHQKQEAgLTAsMCArMSwyMiBAQAorKiBIOFMgSW50ZXJydXB0IGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBoYXMgdG8gYmUgInJlbmVzYXMsaDhzLWludGMiLCAicmVuZXNhcyxoODMwMC1pbnRjIiBhcyBmYWxsYmFjay4KKy0gI2ludGVycnVwdC1jZWxsczogaGFzIHRvIGJlIDwyPjogYW4gaW50ZXJydXB0IGluZGV4IGFuZCBmbGFncywgYXMgZGVmaW5lZCBpbgorICBpbnRlcnJ1cHRzLnR4dCBpbiB0aGlzIGRpcmVjdG9yeQorLSByZWdzOiBCYXNlIGFkZHJlc3Mgb2YgaW50ZXJydXB0IGNvbnRyb2xsZXIgcmVnaXN0ZXJzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIGFueSBwcm9wZXJ0aWVzLCBsaXN0ZWQgaW4gaW50ZXJydXB0cy50eHQsIGFuZCBhbnkgc3RhbmRhcmQgcmVzb3VyY2UgYWxsb2NhdGlvbgorICBwcm9wZXJ0aWVzCisKK0V4YW1wbGU6CisKKwloOGludGM6IGludGVycnVwdC1jb250cm9sbGVyQGZmZmUwMCB7CisJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxoOHMtaW50YyIsICJyZW5lc2FzLGg4MzAwLWludGMiOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJcmVnID0gPDB4ZmZmZTAwIDI0PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3JlbmVzYXMsaW50Yy1pcnFwaW4udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3JlbmVzYXMsaW50Yy1pcnFwaW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3MmM1NTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvcmVuZXNhcyxpbnRjLWlycXBpbi50eHQKQEAgLTAsMCArMSw2MiBAQAorRFQgYmluZGluZ3MgZm9yIHRoZSBSLS9TSC1Nb2JpbGUgaXJxcGluIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBoYXMgdG8gYmUgInJlbmVzYXMsaW50Yy1pcnFwaW4tPHNvY3R5cGU+IiwgInJlbmVzYXMsaW50Yy1pcnFwaW4iCisgIGFzIGZhbGxiYWNrLgorICBFeGFtcGxlcyB3aXRoIHNvY3R5cGVzIGFyZToKKyAgICAtICJyZW5lc2FzLGludGMtaXJxcGluLXI4YTc3NDAiIChSLU1vYmlsZSBBMSkKKyAgICAtICJyZW5lc2FzLGludGMtaXJxcGluLXI4YTc3NzgiIChSLUNhciBNMUEpCisgICAgLSAicmVuZXNhcyxpbnRjLWlycXBpbi1yOGE3Nzc5IiAoUi1DYXIgSDEpCisgICAgLSAicmVuZXNhcyxpbnRjLWlycXBpbi1zaDczYTAiIChTSC1Nb2JpbGUgQUc1KQorCistIHJlZzogQmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgZWFjaCByZWdpc3RlciBiYW5rIHVzZWQgYnkgdGhlIGV4dGVybmFsCisgIElSUSBwaW5zIGRyaXZlbiBieSB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgaGFyZHdhcmUgbW9kdWxlLiBUaGUgYmFzZQorICBhZGRyZXNzZXMsIGxlbmd0aCBhbmQgbnVtYmVyIG9mIHJlcXVpcmVkIHJlZ2lzdGVyIGJhbmtzIHZhcmllcyB3aXRoIHNvY3R5cGUuCistIGludGVycnVwdC1jb250cm9sbGVyOiBJZGVudGlmaWVzIHRoZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyLgorLSAjaW50ZXJydXB0LWNlbGxzOiBoYXMgdG8gYmUgPDI+OiBhbiBpbnRlcnJ1cHQgaW5kZXggYW5kIGZsYWdzLCBhcyBkZWZpbmVkIGluCisgIGludGVycnVwdHMudHh0IGluIHRoaXMgZGlyZWN0b3J5LgorLSBpbnRlcnJ1cHRzOiBNdXN0IGNvbnRhaW4gYSBsaXN0IG9mIGludGVycnVwdCBzcGVjaWZpZXJzLiBGb3IgZWFjaCBpbnRlcnJ1cHQKKyAgcHJvdmlkZWQgYnkgdGhpcyBpcnFwaW4gY29udHJvbGxlciBpbnN0YW5jZSwgdGhlcmUgbXVzdCBiZSBvbmUgZW50cnksCisgIHJlZmVycmluZyB0byB0aGUgY29ycmVzcG9uZGluZyBwYXJlbnQgaW50ZXJydXB0LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIGFueSBwcm9wZXJ0aWVzLCBsaXN0ZWQgaW4gaW50ZXJydXB0cy50eHQsIGFuZCBhbnkgc3RhbmRhcmQgcmVzb3VyY2UgYWxsb2NhdGlvbgorICBwcm9wZXJ0aWVzCistIHNlbnNlLWJpdGZpZWxkLXdpZHRoOiB3aWR0aCBvZiBhIHNpbmdsZSBzZW5zZSBiaXRmaWVsZCBpbiB0aGUgU0VOU0UgcmVnaXN0ZXIsCisgIGlmIGRpZmZlcmVudCBmcm9tIHRoZSBkZWZhdWx0IDQgYml0cworLSBjb250cm9sLXBhcmVudDogZGlzYWJsZSBhbmQgZW5hYmxlIGludGVycnVwdHMgb24gdGhlIHBhcmVudCBpbnRlcnJ1cHQKKyAgY29udHJvbGxlciwgbmVlZGVkIGZvciBzb21lIGJyb2tlbiBpbXBsZW1lbnRhdGlvbnMKKy0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gYSByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uYWwgY2xvY2suICBUaGlzIHByb3BlcnR5IGlzCisgIG1hbmRhdG9yeSBpZiB0aGUgaGFyZHdhcmUgaW1wbGVtZW50cyBhIGNvbnRyb2xsYWJsZSBmdW5jdGlvbmFsIGNsb2NrIGZvcgorICB0aGUgaXJxcGluIGNvbnRyb2xsZXIgaW5zdGFuY2UuCistIHBvd2VyLWRvbWFpbnM6IE11c3QgY29udGFpbiBhIHJlZmVyZW5jZSB0byB0aGUgcG93ZXIgZG9tYWluLiBUaGlzIHByb3BlcnR5IGlzCisgIG1hbmRhdG9yeSBpZiB0aGUgaXJxcGluIGNvbnRyb2xsZXIgaW5zdGFuY2UgaXMgcGFydCBvZiBhIGNvbnRyb2xsYWJsZSBwb3dlcgorICBkb21haW4uCisKKworRXhhbXBsZQorLS0tLS0tLQorCisJaXJxcGluMTogaW50ZXJydXB0LWNvbnRyb2xsZXJAZTY5MDAwMDQgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMsaW50Yy1pcnFwaW4tcjhhNzc0MCIsCisJCQkgICAgICJyZW5lc2FzLGludGMtaXJxcGluIjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCXJlZyA9IDwweGU2OTAwMDA0IDQ+LAorCQkJPDB4ZTY5MDAwMTQgND4sCisJCQk8MHhlNjkwMDAyNCAxPiwKKwkJCTwweGU2OTAwMDQ0IDE+LAorCQkJPDB4ZTY5MDAwNjQgMT47CisJCWludGVycnVwdHMgPSA8MCAxNDkgSVJRX1RZUEVfTEVWRUxfSElHSAorCQkJICAgICAgMCAxNDkgSVJRX1RZUEVfTEVWRUxfSElHSAorCQkJICAgICAgMCAxNDkgSVJRX1RZUEVfTEVWRUxfSElHSAorCQkJICAgICAgMCAxNDkgSVJRX1RZUEVfTEVWRUxfSElHSAorCQkJICAgICAgMCAxNDkgSVJRX1RZUEVfTEVWRUxfSElHSAorCQkJICAgICAgMCAxNDkgSVJRX1RZUEVfTEVWRUxfSElHSAorCQkJICAgICAgMCAxNDkgSVJRX1RZUEVfTEVWRUxfSElHSAorCQkJICAgICAgMCAxNDkgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWNsb2NrcyA9IDwmbXN0cDJfY2xrcyBSOEE3NzQwX0NMS19JTlRDQT47CisJCXBvd2VyLWRvbWFpbnMgPSA8JnBkX2E0cz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9yZW5lc2FzLGlycWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3JlbmVzYXMsaXJxYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU1MDU0YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9yZW5lc2FzLGlycWMudHh0CkBAIC0wLDAgKzEsMzUgQEAKK0RUIGJpbmRpbmdzIGZvciB0aGUgUi1Nb2JpbGUvUi1DYXIgaW50ZXJydXB0IGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBoYXMgdG8gYmUgInJlbmVzYXMsaXJxYy08c29jdHlwZT4iLCAicmVuZXNhcyxpcnFjIiBhcyBmYWxsYmFjay4KKyAgRXhhbXBsZXMgd2l0aCBzb2N0eXBlcyBhcmU6CisgICAgLSAicmVuZXNhcyxpcnFjLXI4YTczYTQiIChSLU1vYmlsZSBBUEU2KQorICAgIC0gInJlbmVzYXMsaXJxYy1yOGE3NzkwIiAoUi1DYXIgSDIpCisgICAgLSAicmVuZXNhcyxpcnFjLXI4YTc3OTEiIChSLUNhciBNMi1XKQorICAgIC0gInJlbmVzYXMsaXJxYy1yOGE3NzkyIiAoUi1DYXIgVjJIKQorICAgIC0gInJlbmVzYXMsaXJxYy1yOGE3NzkzIiAoUi1DYXIgTTItTikKKyAgICAtICJyZW5lc2FzLGlycWMtcjhhNzc5NCIgKFItQ2FyIEUyKQorICAgIC0gInJlbmVzYXMsaW50Yy1leC1yOGE3Nzk1IiAoUi1DYXIgSDMpCistICNpbnRlcnJ1cHQtY2VsbHM6IGhhcyB0byBiZSA8Mj46IGFuIGludGVycnVwdCBpbmRleCBhbmQgZmxhZ3MsIGFzIGRlZmluZWQgaW4KKyAgaW50ZXJydXB0cy50eHQgaW4gdGhpcyBkaXJlY3RvcnkKKy0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gYSByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uYWwgY2xvY2suCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gYW55IHByb3BlcnRpZXMsIGxpc3RlZCBpbiBpbnRlcnJ1cHRzLnR4dCwgYW5kIGFueSBzdGFuZGFyZCByZXNvdXJjZSBhbGxvY2F0aW9uCisgIHByb3BlcnRpZXMKKworRXhhbXBsZToKKworCWlycWMwOiBpbnRlcnJ1cHQtY29udHJvbGxlckBlNjFjMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxpcnFjLXI4YTc3OTAiLCAicmVuZXNhcyxpcnFjIjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCXJlZyA9IDwwIDB4ZTYxYzAwMDAgMCAweDIwMD47CisJCWludGVycnVwdHMgPSA8MCAwIElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8MCAxIElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8MCAyIElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8MCAzIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQljbG9ja3MgPSA8Jm1zdHA0X2Nsa3MgUjhBNzc5MF9DTEtfSVJRQz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9zYW1zdW5nLGV4eW5vczQyMTAtY29tYmluZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3NhbXN1bmcsZXh5bm9zNDIxMC1jb21iaW5lci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU1ZjczNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9zYW1zdW5nLGV4eW5vczQyMTAtY29tYmluZXIudHh0CkBAIC0wLDAgKzEsNTIgQEAKKyogU2Ftc3VuZyBFeHlub3MgSW50ZXJydXB0IENvbWJpbmVyIENvbnRyb2xsZXIKKworU2Ftc3VuZydzIEV4eW5vczQgYXJjaGl0ZWN0dXJlIGluY2x1ZGVzIGEgaW50ZXJydXB0IGNvbWJpbmVyIGNvbnRyb2xsZXIgd2hpY2gKK2NhbiBjb21iaW5lIGludGVycnVwdCBzb3VyY2VzIGFzIGEgZ3JvdXAgYW5kIHByb3ZpZGUgYSBzaW5nbGUgaW50ZXJydXB0IHJlcXVlc3QKK2ZvciB0aGUgZ3JvdXAuIFRoZSBpbnRlcnJ1cHQgcmVxdWVzdCBmcm9tIGVhY2ggZ3JvdXAgYXJlIGNvbm5lY3RlZCB0byBhIHBhcmVudAoraW50ZXJydXB0IGNvbnRyb2xsZXIsIHN1Y2ggYXMgR0lDIGluIGNhc2Ugb2YgRXh5bm9zNDIxMC4KKworVGhlIGludGVycnVwdCBjb21iaW5lciBjb250cm9sbGVyIGNvbnNpc3RzIG9mIG11bHRpcGxlIGNvbWJpbmVycy4gVXAgdG8gZWlnaHQKK2ludGVycnVwdCBzb3VyY2VzIGNhbiBiZSBjb25uZWN0ZWQgdG8gYSBjb21iaW5lci4gVGhlIGNvbWJpbmVyIG91dHB1dHMgb25lCitjb21iaW5lZCBpbnRlcnJ1cHQgZm9yIGl0cyBlaWdodCBpbnRlcnJ1cHQgc291cmNlcy4gVGhlIGNvbWJpbmVkIGludGVycnVwdAoraXMgdXN1YWxseSBjb25uZWN0ZWQgdG8gYSBwYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIuCisKK0Egc2luZ2xlIG5vZGUgaW4gdGhlIGRldmljZSB0cmVlIGlzIHVzZWQgdG8gZGVzY3JpYmUgdGhlIGludGVycnVwdCBjb21iaW5lcgorY29udHJvbGxlciBtb2R1bGUgKHdoaWNoIGluY2x1ZGVzIG11bHRpcGxlIGNvbWJpbmVycykuIEEgY29tYmluZXIgaW4gdGhlCitpbnRlcnJ1cHQgY29udHJvbGxlciBtb2R1bGUgc2hhcmVzIGNvbmZpZy9jb250cm9sIHJlZ2lzdGVycyB3aXRoIG90aGVyCitjb21iaW5lcnMuIEZvciBleGFtcGxlLCBhIDMyLWJpdCBpbnRlcnJ1cHQgZW5hYmxlL2Rpc2FibGUgY29uZmlnIHJlZ2lzdGVyCitjYW4gYWNjb21tb2RhdGUgdXAgdG8gNCBpbnRlcnJ1cHQgY29tYmluZXJzICh3aXRoIGVhY2ggY29tYmluZXIgc3VwcG9ydGluZwordXAgdG8gOCBpbnRlcnJ1cHQgc291cmNlcykuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAic2Ftc3VuZyxleHlub3M0MjEwLWNvbWJpbmVyIi4KKy0gaW50ZXJydXB0LWNvbnRyb2xsZXI6IElkZW50aWZpZXMgdGhlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIuCistICNpbnRlcnJ1cHQtY2VsbHM6IHNob3VsZCBiZSA8Mj4uIFRoZSBtZWFuaW5nIG9mIHRoZSBjZWxscyBhcmUKKwkqIEZpcnN0IENlbGw6IENvbWJpbmVyIEdyb3VwIE51bWJlci4KKwkqIFNlY29uZCBDZWxsOiBJbnRlcnJ1cHQgbnVtYmVyIHdpdGhpbiB0aGUgZ3JvdXAuCistIHJlZzogQmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIGludGVycnVwdCBjb21iaW5lciByZWdpc3RlcnMuCistIGludGVycnVwdHM6IFRoZSBsaXN0IG9mIGludGVycnVwdHMgZ2VuZXJhdGVkIGJ5IHRoZSBjb21iaW5lcnMgd2hpY2ggYXJlIHRoZW4KKyAgICBjb25uZWN0ZWQgdG8gYSBwYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIuIFRoZSBmb3JtYXQgb2YgdGhlIGludGVycnVwdAorICAgIHNwZWNpZmllciBkZXBlbmRzIGluIHRoZSBpbnRlcnJ1cHQgcGFyZW50IGNvbnRyb2xsZXIuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHNhbXN1bmcsY29tYmluZXItbnI6IFRoZSBudW1iZXIgb2YgaW50ZXJydXB0IGNvbWJpbmVycyBzdXBwb3J0ZWQuIElmIHRoaXMKKyAgcHJvcGVydHkgaXMgbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgbnVtYmVyIG9mIGNvbWJpbmVycyBpcyBhc3N1bWVkCisgIHRvIGJlIDE2LgorLSBpbnRlcnJ1cHQtcGFyZW50OiBwSGFuZGxlIG9mIHRoZSBwYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIsIGlmIG5vdAorICBpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50IG5vZGUuCisKKworRXhhbXBsZToKKworCVRoZSBmb2xsb3dpbmcgaXMgYSBhbiBleGFtcGxlIGZyb20gdGhlIEV4eW5vczQyMTAgU29DIGR0c2kgZmlsZS4KKworCWNvbWJpbmVyOmludGVycnVwdC1jb250cm9sbGVyQDEwNDQwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczQyMTAtY29tYmluZXIiOworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKwkJcmVnID0gPDB4MTA0NDAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDAgMD4sIDwwIDEgMD4sIDwwIDIgMD4sIDwwIDMgMD4sCisJCQkgICAgIDwwIDQgMD4sIDwwIDUgMD4sIDwwIDYgMD4sIDwwIDcgMD4sCisJCQkgICAgIDwwIDggMD4sIDwwIDkgMD4sIDwwIDEwIDA+LCA8MCAxMSAwPiwKKwkJCSAgICAgPDAgMTIgMD4sIDwwIDEzIDA+LCA8MCAxNCAwPiwgPDAgMTUgMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9zYW1zdW5nLHMzYzI0eHgtaXJxLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9zYW1zdW5nLHMzYzI0eHgtaXJxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTRjNWE5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3NhbXN1bmcsczNjMjR4eC1pcnEudHh0CkBAIC0wLDAgKzEsNTMgQEAKK1NhbXN1bmcgUzNDMjRYWCBJbnRlcnJ1cHQgQ29udHJvbGxlcnMKKworVGhlIFMzQzI0WFggU29DcyBjb250YWluIGEgY3VzdG9tIHNldCBvZiBpbnRlcnJ1cHQgY29udHJvbGxlcnMgcHJvdmlkaW5nIGEKK3ZhcnlpbmcgbnVtYmVyIG9mIGludGVycnVwdCBzb3VyY2VzLiBUaGUgc2V0IGNvbnNpc3RzIG9mIGEgbWFpbi0gYW5kIHN1Yi0KK2NvbnRyb2xsZXIgYW5kIG9uIG5ld2VyIFNvQ3MgZXZlbiBhIHNlY29uZCBtYWluIGNvbnRyb2xsZXIuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IENvbXBhdGlibGUgcHJvcGVydHkgdmFsdWUgc2hvdWxkIGJlICJzYW1zdW5nLHMzYzI0MTAtaXJxIgorICBmb3IgbWFjaGluZXMgYmVmb3JlIHMzYzI0MTYgYW5kICJzYW1zdW5nLHMzYzI0MTYtaXJxIiBmb3IgczNjMjQxNiBhbmQgbGF0ZXIuCisKKy0gcmVnOiBQaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgIHJlZ2lvbi4KKworLSBpbnRlcnJ1cHQtY29udHJvbGxlciA6IElkZW50aWZpZXMgdGhlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIKKworLSAjaW50ZXJydXB0LWNlbGxzIDogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgbmVlZGVkIHRvIGVuY29kZSBhbgorICBpbnRlcnJ1cHQgc291cmNlLiBUaGUgdmFsdWUgc2hhbGwgYmUgNCBhbmQgaW50ZXJydXB0IGRlc2NyaXB0b3Igc2hhbGwKKyAgaGF2ZSB0aGUgZm9sbG93aW5nIGZvcm1hdDoKKyAgICAgIDxjdHJsX251bSBwYXJlbnRfaXJxIGN0cmxfaXJxIHR5cGU+CisKKyAgY3RybF9udW0gY29udGFpbnMgdGhlIGNvbnRyb2xsZXIgdG8gdXNlOgorICAgICAgLSAwIC4uLiBtYWluIGNvbnRyb2xsZXIKKyAgICAgIC0gMSAuLi4gc3ViIGNvbnRyb2xsZXIKKyAgICAgIC0gMiAuLi4gc2Vjb25kIG1haW4gY29udHJvbGxlciBvbiBzM2MyNDE2IGFuZCBzM2MyNDUwCisgIHBhcmVudF9pcnEgY29udGFpbnMgdGhlIHBhcmVudCBiaXQgaW4gdGhlIG1haW4gY29udHJvbGxlciBhbmQgd2lsbCBiZQorICAgICAgICAgICAgIGlnbm9yZWQgaW4gbWFpbiBjb250cm9sbGVycworICBjdHJsX2lycSBjb250YWlucyB0aGUgaW50ZXJydXB0IGJpdCBvZiB0aGUgY29udHJvbGxlcgorICB0eXBlIGNvbnRhaW5zIHRoZSB0cmlnZ2VyIHR5cGUgdG8gdXNlCisKK0V4YW1wbGU6CisKKwlpbnRlcnJ1cHQtY29udHJvbGxlckA0YTAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxzM2MyNDEwLWlycSI7CisJCXJlZyA9IDwweDRhMDAwMDAwIDB4MTAwPjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHM9PDQ+OworCX07CisKKwlbLi4uXQorCisJc2VyaWFsQDUwMDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLHMzYzI0MTAtdWFydCI7CisJCXJlZyA9IDwweDUwMDAwMDAwIDB4NDAwMD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JnN1YmludGM+OworCQlpbnRlcnJ1cHRzID0gPDEgMjggMCA0PiwgPDEgMjggMSA0PjsKKwl9OworCisJcnRjQDU3MDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLHMzYzI0MTAtcnRjIjsKKwkJcmVnID0gPDB4NTcwMDAwMDAgMHgxMDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpbnRjPjsKKwkJaW50ZXJydXB0cyA9IDwwIDMwIDAgMz4sIDwwIDggMCAzPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3NucHMsYXJjNzAwLWludGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3NucHMsYXJjNzAwLWludGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhNWQ1NjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvc25wcyxhcmM3MDAtaW50Yy50eHQKQEAgLTAsMCArMSwyNCBAQAorKiBBUkM3MDAgaW5jb3JlIEludGVycnVwdCBDb250cm9sbGVyCisKKyAgVGhlIGNvcmUgaW50ZXJydXB0IGNvbnRyb2xsZXIgcHJvdmlkZXMgMzIgcHJpb3JpdGlzZWQgaW50ZXJydXB0cyAoMiBsZXZlbHMpCisgIHRvIEFSQzcwMCBjb3JlLgorCitQcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6ICJzbnBzLGFyYzcwMC1pbnRjIgorLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogVGhpcyBpcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlci4KKy0gI2ludGVycnVwdC1jZWxsczogTXVzdCBiZSA8MT4uCisKKyAgU2luZ2xlIENlbGwgImludGVycnVwdHMiIHByb3BlcnR5IG9mIGEgZGV2aWNlIHNwZWNpZmllcyB0aGUgSVJRIG51bWJlcgorICBiZXR3ZWVuIDAgdG8gMzEKKworICBpbnRjIGFjY2Vzc2VkIHZpYSB0aGUgc3BlY2lhbCBBUkMgQVVYIHJlZ2lzdGVyIGludGVyZmFjZSwgaGVuY2UgInJlZyIgcHJvcGVydHkKKyAgaXMgbm90IHNwZWNpZmllZC4KKworRXhhbXBsZToKKworCWludGM6IGludGVycnVwdC1jb250cm9sbGVyIHsKKwkJY29tcGF0aWJsZSA9ICJzbnBzLGFyYzcwMC1pbnRjIjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9zbnBzLGFyY2hzLWlkdS1pbnRjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9zbnBzLGFyY2hzLWlkdS1pbnRjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGNiN2M3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3NucHMsYXJjaHMtaWR1LWludGMudHh0CkBAIC0wLDAgKzEsNDYgQEAKKyogQVJDLUhTIEludGVycnVwdCBEaXN0cmlidXRpb24gVW5pdAorCisgIFRoaXMgb3B0aW9uYWwgMm5kIGxldmVsIGludGVycnVwdCBjb250cm9sbGVyIGNhbiBiZSB1c2VkIGluIFNNUCBjb25maWd1cmF0aW9ucyBmb3IKKyAgZHluYW1pYyBJUlEgcm91dGluZywgbG9hZCBiYWxhbmNpbmcgb2YgY29tbW9uL2V4dGVybmFsIElSUXMgdG93YXJkcyBjb3JlIGludGMuCisKK1Byb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogInNucHMsYXJjaHMtaWR1LWludGMiCistIGludGVycnVwdC1jb250cm9sbGVyOiBUaGlzIGlzIGFuIGludGVycnVwdCBjb250cm9sbGVyLgorLSBpbnRlcnJ1cHQtcGFyZW50OiA8cmVmZXJlbmNlIHRvIHBhcmVudCBjb3JlIGludGM+CistICNpbnRlcnJ1cHQtY2VsbHM6IE11c3QgYmUgPDI+LgorLSBpbnRlcnJ1cHRzOiA8Li4uPiBzcGVjaWZpZXMgdGhlIHVwc3RyZWFtIGNvcmUgaXJxcworCisgIEZpcnN0IGNlbGwgc3BlY2lmaWVzIHRoZSAiY29tbW9uIiBJUlEgZnJvbSBwZXJpcGhlcmFsIHRvIElEVQorICBTZWNvbmQgY2VsbCBzcGVjaWZpZXMgdGhlIGlycSBkaXN0cmlidXRpb24gbW9kZSB0byBjb3JlcworICAgICAwPVJvdW5kIFJvYmluOyAxPWNwdTAsIDI9Y3B1MSwgND1jcHUyLCA4PWNwdTMKKworICBpbnRjIGFjY2Vzc2VkIHZpYSB0aGUgc3BlY2lhbCBBUkMgQVVYIHJlZ2lzdGVyIGludGVyZmFjZSwgaGVuY2UgInJlZyIgcHJvcGVydHkKKyAgaXMgbm90IHNwZWNpZmllZC4KKworRXhhbXBsZToKKwljb3JlX2ludGM6IGNvcmUtaW50ZXJydXB0LWNvbnRyb2xsZXIgeworCQljb21wYXRpYmxlID0gInNucHMsYXJjaHMtaW50YyI7CisJCWludGVycnVwdC1jb250cm9sbGVyOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCX07CisKKwlpZHVfaW50YzogaWR1LWludGVycnVwdC1jb250cm9sbGVyIHsKKwkJY29tcGF0aWJsZSA9ICJzbnBzLGFyY2hzLWlkdS1pbnRjIjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmNvcmVfaW50Yz47CisKKwkJLyoKKwkJICogPGh3aXJxICBkaXN0cmlidXRpb24+CisJCSAqIGRpc3RyaWJ1dGlvbjogMD1SUjsgMT1jcHUwLCAyPWNwdTEsIDQ9Y3B1MiwgOD1jcHUzCisJCSAqLworCQkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCisJCS8qIHVwc3RyZWFtIGNvcmUgaXJxczogZG93bnN0cmVhbSB0aGVzZSBhcmUgIkNPTU1PTiIgaXJxIDAsMS4uICAqLworCQlpbnRlcnJ1cHRzID0gPDI0IDI1IDI2IDI3IDI4IDI5IDMwIDMxPjsKKwl9OworCisJc29tZV9kZXZpY2U6IHNlcmlhbEBjMGZjMTAwMCB7CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmlkdV9pbnRjPjsKKwkJaW50ZXJydXB0cyA9IDwwIDA+OwkvKiB1cHN0cmVhbSBpZHUgSVJRICMyNCwgUm91bmQgUm9iaW4gKi8KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3NucHMsYXJjaHMtaW50Yy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvc25wcyxhcmNocy1pbnRjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWYzMjZkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3NucHMsYXJjaHMtaW50Yy50eHQKQEAgLTAsMCArMSwyMiBAQAorKiBBUkMtSFMgaW5jb3JlIEludGVycnVwdCBDb250cm9sbGVyIChQcm92aWRlZCBieSBjb3JlcyBpbXBsZW1lbnRpbmcgQVJDdjIgSVNBKQorCitQcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6ICJzbnBzLGFyY2hzLWludGMiCistIGludGVycnVwdC1jb250cm9sbGVyOiBUaGlzIGlzIGFuIGludGVycnVwdCBjb250cm9sbGVyLgorLSAjaW50ZXJydXB0LWNlbGxzOiBNdXN0IGJlIDwxPi4KKworICBTaW5nbGUgQ2VsbCAiaW50ZXJydXB0cyIgcHJvcGVydHkgb2YgYSBkZXZpY2Ugc3BlY2lmaWVzIHRoZSBJUlEgbnVtYmVyCisgIGJldHdlZW4gMTYgdG8gMjU2CisKKyAgaW50YyBhY2Nlc3NlZCB2aWEgdGhlIHNwZWNpYWwgQVJDIEFVWCByZWdpc3RlciBpbnRlcmZhY2UsIGhlbmNlICJyZWciIHByb3BlcnR5CisgIGlzIG5vdCBzcGVjaWZpZWQuCisKK0V4YW1wbGU6CisKKwlpbnRjOiBpbnRlcnJ1cHQtY29udHJvbGxlciB7CisJCWNvbXBhdGlibGUgPSAic25wcyxhcmNocy1pbnRjIjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJCWludGVycnVwdHMgPSA8MTYgMTcgMTggMTkgMjAgMjEgMjIgMjMgMjQgMjU+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvc25wcyxkdy1hcGItaWN0bC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvc25wcyxkdy1hcGItaWN0bC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDkyOTExNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9zbnBzLGR3LWFwYi1pY3RsLnR4dApAQCAtMCwwICsxLDMyIEBACitTeW5vcHN5cyBEZXNpZ25XYXJlIEFQQiBpbnRlcnJ1cHQgY29udHJvbGxlciAoZHdfYXBiX2ljdGwpCisKK1N5bm9wc3lzIERlc2lnbldhcmUgcHJvdmlkZXMgaW50ZXJydXB0IGNvbnRyb2xsZXIgSVAgZm9yIEFQQiBrbm93biBhcworZHdfYXBiX2ljdGwuIFRoZSBJUCBpcyB1c2VkIGFzIHNlY29uZGFyeSBpbnRlcnJ1cHQgY29udHJvbGxlciBpbiBzb21lIFNvQ3Mgd2l0aAorQVBCIGJ1cywgZS5nLiBNYXJ2ZWxsIEFybWFkYSAxNTAwLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaGFsbCBiZSAic25wcyxkdy1hcGItaWN0bCIKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgIHJlZ2lvbiBzdGFydGluZyB3aXRoIEVOQUJMRV9MT1cgcmVnaXN0ZXIKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXI6IGlkZW50aWZpZXMgdGhlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIKKy0gI2ludGVycnVwdC1jZWxsczogbnVtYmVyIG9mIGNlbGxzIHRvIGVuY29kZSBhbiBpbnRlcnJ1cHQtc3BlY2lmaWVyLCBzaGFsbCBiZSAxCistIGludGVycnVwdHM6IGludGVycnVwdCByZWZlcmVuY2UgdG8gcHJpbWFyeSBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSBpbnRlcnJ1cHQtcGFyZW50OiAob3B0aW9uYWwpIHJlZmVyZW5jZSBzcGVjaWZpYyBwcmltYXJ5IGludGVycnVwdCBjb250cm9sbGVyCisKK1RoZSBpbnRlcnJ1cHQgc291cmNlcyBtYXAgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYml0cyBpbiB0aGUgaW50ZXJydXB0CityZWdpc3RlcnMsIGkuZS4KKy0gMCBtYXBzIHRvIGJpdCAwIG9mIGxvdyBpbnRlcnJ1cHRzLAorLSAxIG1hcHMgdG8gYml0IDEgb2YgbG93IGludGVycnVwdHMsCistIDMyIG1hcHMgdG8gYml0IDAgb2YgaGlnaCBpbnRlcnJ1cHRzLAorLSAzMyBtYXBzIHRvIGJpdCAxIG9mIGhpZ2ggaW50ZXJydXB0cywKKy0gKG9wdGlvbmFsKSBmYXN0IGludGVycnVwdHMgc3RhcnQgYXQgNjQuCisKK0V4YW1wbGU6CisJYWljOiBpbnRlcnJ1cHQtY29udHJvbGxlckAzMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzbnBzLGR3LWFwYi1pY3RsIjsKKwkJcmVnID0gPDB4MzAwMCAweGMwMD47CisJCWludGVycnVwdC1jb250cm9sbGVyOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZnaWM+OworCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMyBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3N0LHNwZWFyM3h4LXNoaXJxLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9zdCxzcGVhcjN4eC1zaGlycS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE1YTAxMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9zdCxzcGVhcjN4eC1zaGlycS50eHQKQEAgLTAsMCArMSw0OCBAQAorKiBTUEVBciBTaGFyZWQgSVJRIGxheWVyIChzaGlycSkKKworU1BFQXIzeHggYXJjaGl0ZWN0dXJlIGluY2x1ZGVzIHNoYXJlZC9tdWx0aXBsZXhlZCBpcnFzIGZvciBjZXJ0YWluIHNldAorb2YgZGV2aWNlcy4gVGhlIG11bHRpcGxleG9yIHByb3ZpZGVzIGEgc2luZ2xlIGludGVycnVwdCB0byBwYXJlbnQKK2ludGVycnVwdCBjb250cm9sbGVyIChWSUMpIG9uIGJlaGFsZiBvZiBhIGdyb3VwIG9mIGRldmljZXMuCisKK1RoZXJlIGNhbiBiZSBtdWx0aXBsZSBncm91cHMgYXZhaWxhYmxlIG9uIFNQRUFyM3h4IHZhcmlhbnRzIGJ1dCBub3QKK2V4Y2VlZGluZyA0LiBUaGUgbnVtYmVyIG9mIGRldmljZXMgaW4gYSBncm91cCBjYW4gZGlmZmVyLCBmdXJ0aGVyIHRoZXkKK21heSBzaGFyZSBzYW1lIHNldCBvZiBzdGF0dXMvbWFzayByZWdpc3RlcnMgc3Bhbm5pbmcgYWNyb3NzIGRpZmZlcmVudAorYml0IG1hc2tzLiBBbHNvIGluIHNvbWUgY2FzZXMgdGhlIGdyb3VwIG1heSBub3QgaGF2ZSBlbmFibGUgb3Igb3RoZXIKK3JlZ2lzdGVycy4gVGhpcyBtYWtlcyBzb2Z0d2FyZSBsaXR0bGUgY29tcGxleC4KKworQSBzaW5nbGUgbm9kZSBpbiB0aGUgZGV2aWNlIHRyZWUgaXMgdXNlZCB0byBkZXNjcmliZSB0aGUgc2hhcmVkCitpbnRlcnJ1cHQgbXVsdGlwbGV4b3IgKG9uZSBub2RlIGZvciBhbGwgZ3JvdXBzKS4gQSBncm91cCBpbiB0aGUKK2ludGVycnVwdCBjb250cm9sbGVyIHNoYXJlcyBjb25maWcvY29udHJvbCByZWdpc3RlcnMgd2l0aCBvdGhlciBncm91cHMuCitGb3IgZXhhbXBsZSwgYSAzMi1iaXQgaW50ZXJydXB0IGVuYWJsZS9kaXNhYmxlIGNvbmZpZyByZWdpc3RlciBjYW4KK2FjY29tbW9kYXRlIHVwIHRvIDQgaW50ZXJydXB0IGdyb3Vwcy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiBzaG91bGQgYmUsIGVpdGhlciBvZgorICAgICAtICJzdCxzcGVhcjMwMC1zaGlycSIKKyAgICAgLSAic3Qsc3BlYXIzMTAtc2hpcnEiCisgICAgIC0gInN0LHNwZWFyMzIwLXNoaXJxIgorICAtIGludGVycnVwdC1jb250cm9sbGVyOiBJZGVudGlmaWVzIHRoZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyLgorICAtICNpbnRlcnJ1cHQtY2VsbHM6IHNob3VsZCBiZSA8MT4gd2hpY2ggYmFzaWNhbGx5IGNvbnRhaW5zIHRoZSBvZmZzZXQKKyAgICAoc3RhcnRpbmcgZnJvbSAwKSBvZiBpbnRlcnJ1cHRzIGZvciBhbGwgdGhlIGdyb3Vwcy4KKyAgLSByZWc6IEJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiBzaGlycSByZWdpc3RlcnMuCisgIC0gaW50ZXJydXB0czogVGhlIGxpc3Qgb2YgaW50ZXJydXB0cyBnZW5lcmF0ZWQgYnkgdGhlIGdyb3VwcyB3aGljaCBhcmUKKyAgICB0aGVuIGNvbm5lY3RlZCB0byBhIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlci4gRWFjaCBncm91cCBpcworICAgIGFzc29jaWF0ZWQgd2l0aCBvbmUgb2YgdGhlIGludGVycnVwdHMsIGhlbmNlIG51bWJlciBvZiBpbnRlcnJ1cHRzICh0bworICAgIHBhcmVudCkgaXMgZXF1YWwgdG8gbnVtYmVyIG9mIGdyb3Vwcy4gVGhlIGZvcm1hdCBvZiB0aGUgaW50ZXJydXB0CisgICAgc3BlY2lmaWVyIGRlcGVuZHMgaW4gdGhlIGludGVycnVwdCBwYXJlbnQgY29udHJvbGxlci4KKworICBPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIGludGVycnVwdC1wYXJlbnQ6IHBIYW5kbGUgb2YgdGhlIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlciwgaWYgbm90CisgICAgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBub2RlLgorCitFeGFtcGxlOgorCitUaGUgZm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgZnJvbSB0aGUgU1BFQXIzMjAgU29DIGR0c2kgZmlsZS4KKworc2hpcnE6IGludGVycnVwdC1jb250cm9sbGVyQDB4YjMwMDAwMDAgeworCWNvbXBhdGlibGUgPSAic3Qsc3BlYXIzMjAtc2hpcnEiOworCXJlZyA9IDwweGIzMDAwMDAwIDB4MTAwMD47CisJaW50ZXJydXB0cyA9IDwyOCAyOSAzMCAxPjsKKwkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCWludGVycnVwdC1jb250cm9sbGVyOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9zdCxzdGktaXJxLXN5c2NmZy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvc3Qsc3RpLWlycS1zeXNjZmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlZDYwMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvc3Qsc3RpLWlycS1zeXNjZmcudHh0CkBAIC0wLDAgKzEsMzUgQEAKK1NUTWljcm9lbGVjdHJvbmljcyBTVGkgU3lzdGVtIENvbmZpZ3VyYXRpb24gQ29udHJvbGxlZCBJUlFzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPbiBTVGkgYmFzZWQgc3lzdGVtczsgRXh0ZXJuYWwsIENUSSAoQ29yZSBTaWdodCksIFBNVSAoUGVyZm9ybWFuY2UgTWFuYWdlbWVudCksCithbmQgUEwzMTAgTDIgQ2FjaGUgSVJRcyBhcmUgY29udHJvbGxlZCB1c2luZyBTeXN0ZW0gQ29uZmlndXJhdGlvbiByZWdpc3RlcnMuCitUaGlzIGRyaXZlciBpcyB1c2VkIHRvIHVubWFzayB0aGVtIHByaW9yIHRvIHVzZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZQk6IFNob3VsZCBiZSBzZXQgdG8gb25lIG9mOgorCQkJInN0LHN0aWg0MTUtaXJxLXN5c2NmZyIKKwkJCSJzdCxzdGloNDE2LWlycS1zeXNjZmciCisJCQkic3Qsc3RpaDQwNy1pcnEtc3lzY2ZnIgorCQkJInN0LHN0aWQxMjctaXJxLXN5c2NmZyIKKy0gc3Qsc3lzY2ZnCTogUGhhbmRsZSB0byBDb3J0ZXgtQTkgSVJRIHN5c3RlbSBjb25maWcgcmVnaXN0ZXJzCistIHN0LGlycS1kZXZpY2UJOiBBcnJheSBvZiBJUlFzIHRvIGVuYWJsZSAtIHNob3VsZCBiZSAyIGluIGxlbmd0aAorLSBzdCxmaXEtZGV2aWNlCTogQXJyYXkgb2YgRklRcyB0byBlbmFibGUgLSBzaG91bGQgYmUgMiBpbiBsZW5ndGgKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gc3QsaW52ZXJ0LWV4dAk6IEV4dGVybmFsIElSUXMgY2FuIGJlIGludmVydGVkIGF0IHdpbGwuICBUaGlzIHByb3BlcnR5IGludmVydHMKKwkJICB0aGVzZSBJUlFzIHVzaW5nIGJpdHdpc2UgbG9naWMuICBBIG51bWJlciBvZiBkZWZpbmVzIGhhdmUgYmVlbgorCQkgIHByb3ZpZGVkIGZvciBjb252ZW5pZW5jZToKKwkJCVNUX0lSUV9TWVNDRkdfRVhUXzFfSU5WCisJCQlTVF9JUlFfU1lTQ0ZHX0VYVF8yX0lOVgorCQkJU1RfSVJRX1NZU0NGR19FWFRfM19JTlYKK0V4YW1wbGU6CisKK2lycS1zeXNjZmcgeworCWNvbXBhdGlibGUgICAgPSAic3Qsc3RpaDQxNi1pcnEtc3lzY2ZnIjsKKwlzdCxzeXNjZmcgICAgID0gPCZzeXNjZmdfY3B1PjsKKwlzdCxpcnEtZGV2aWNlID0gPFNUX0lSUV9TWVNDRkdfUE1VXzA+LAorCQkJPFNUX0lSUV9TWVNDRkdfUE1VXzE+OworCXN0LGZpcS1kZXZpY2UgPSA8U1RfSVJRX1NZU0NGR19ESVNBQkxFRD4sCisJCQk8U1RfSVJRX1NZU0NGR19ESVNBQkxFRD47CisJc3QsaW52ZXJ0LWV4dCA9IDwoU1RfSVJRX1NZU0NGR19FWFRfMV9JTlYgfCBTVF9JUlFfU1lTQ0ZHX0VYVF8zX0lOVik+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci90aSxjNjR4K21lZ2Ftb2QtcGljLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci90aSxjNjR4K21lZ2Ftb2QtcGljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MmJiNzk2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3RpLGM2NHgrbWVnYW1vZC1waWMudHh0CkBAIC0wLDAgKzEsMTA0IEBACitDNlggSW50ZXJydXB0IENoaXBzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogQzY0WCsgQ29yZSBJbnRlcnJ1cHQgQ29udHJvbGxlcgorCisgIFRoZSBjb3JlIGludGVycnVwdCBjb250cm9sbGVyIHByb3ZpZGVzIDE2IHByaW9yaXRpemVkIGludGVycnVwdHMgdG8gdGhlCisgIEM2NFgrIGNvcmUuIFByaW9yaXR5IDAgYW5kIDEgYXJlIHVzZWQgZm9yIHJlc2V0IGFuZCBOTUkgcmVzcGVjdGl2ZWx5LgorICBQcmlvcml0eSAyIGFuZCAzIGFyZSByZXNlcnZlZC4gUHJpb3JpdHkgNC0xNSBhcmUgdXNlZCBmb3IgaW50ZXJydXB0CisgIHNvdXJjZXMgY29taW5nIGZyb20gb3V0c2lkZSB0aGUgY29yZS4KKworICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorICAtIGNvbXBhdGlibGU6IFNob3VsZCBiZSAidGksYzY0eCtjb3JlLXBpYyI7CisgIC0gI2ludGVycnVwdC1jZWxsczogPDE+CisKKyAgSW50ZXJydXB0IFNwZWNpZmllciBEZWZpbml0aW9uCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTaW5nbGUgY2VsbCBzcGVjaWZ5aW5nIHRoZSBjb3JlIGludGVycnVwdCBwcmlvcml0eSBsZXZlbCAoNC0xNSkgd2hlcmUKKyAgNCBpcyBoaWdoZXN0IHByaW9yaXR5IGFuZCAxNSBpcyBsb3dlc3QgcHJpb3JpdHkuCisKKyAgRXhhbXBsZQorICAtLS0tLS0tCisgIGNvcmVfcGljOiBpbnRlcnJ1cHQtY29udHJvbGxlckAwIHsKKwlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCWNvbXBhdGlibGUgPSAidGksYzY0eCtjb3JlLXBpYyI7CisgIH07CisKKworCisqIEM2NHgrIE1lZ2Ftb2R1bGUgSW50ZXJydXB0IENvbnRyb2xsZXIKKworICBUaGUgbWVnYW1vZHVsZSBQSUMgY29uc2lzdHMgb2YgZm91ciBpbnRlcnJ1cHQgbXVwbGlwbGV4ZXJzIGVhY2ggb2Ygd2hpY2gKKyAgY29tYmluZSB1cCB0byAzMiBpbnRlcnJ1cHQgaW5wdXRzIGludG8gYSBzaW5nbGUgaW50ZXJydXB0IG91dHB1dCB3aGljaAorICBtYXkgYmUgY2FzY2FkZWQgaW50byB0aGUgY29yZSBpbnRlcnJ1cHQgY29udHJvbGxlci4gVGhlIG1lZ2Ftb2R1bGUgUElDCisgIGhhcyBhIHRvdGFsIG9mIDEyIG91dHB1dHMgY2FzY2FkaW5nIGludG8gdGhlIGNvcmUgaW50ZXJydXB0IGNvbnRyb2xsZXIuCisgIE9uZSBmb3IgZWFjaCBjb3JlIGludGVycnVwdCBwcmlvcml0eSBsZXZlbC4gSW4gYWRkaXRpb24gdG8gdGhlIGNvbWJpbmVkCisgIGludGVycnVwdCBzb3VyY2VzLCBpbmRpdmlkdWFsIG1lZ2Ftb2R1bGUgaW50ZXJydXB0cyBtYXkgYmUgY2FzY2FkZWQgdG8KKyAgdGhlIGNvcmUgaW50ZXJydXB0IGNvbnRyb2xsZXIuIFdoZW4gYW4gaW5kaXZpZHVhbCBpbnRlcnJ1cHQgaXMgY2FzY2FkZWQsCisgIGl0IGlzIG5vIGxvbmdlciBoYW5kbGVkIHRocm91Z2ggYSBtZWdhbW9kdWxlIGludGVycnVwdCBjb21iaW5lciBhbmQgaXMKKyAgY29uc2lkZXJlZCB0byBoYXZlIHRoZSBjb3JlIGludGVycnVwdCBjb250cm9sbGVyIGFzIHRoZSBwYXJlbnQuCisKKyAgUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgLSBjb21wYXRpYmxlOiAidGksYzY0eCttZWdhbW9kLXBpYyIKKyAgLSBpbnRlcnJ1cHQtY29udHJvbGxlcgorICAtICNpbnRlcnJ1cHQtY2VsbHM6IDwxPgorICAtIHJlZzogYmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIHJlZ2lzdGVyIGFyZWEKKyAgLSBpbnRlcnJ1cHQtcGFyZW50OiBtdXN0IGJlIGNvcmUgaW50ZXJydXB0IGNvbnRyb2xsZXIKKyAgLSBpbnRlcnJ1cHRzOiBUaGlzIHNob3VsZCBoYXZlIGZvdXIgY2VsbHM7IG9uZSBmb3IgZWFjaCBpbnRlcnJ1cHQgY29tYmluZXIuCisgICAgICAgICAgICAgICAgVGhlIGNlbGxzIGNvbnRhaW4gdGhlIGNvcmUgcHJpb3JpdHkgaW50ZXJydXB0IHRvIHdoaWNoIHRoZQorICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgY29tYmluZXIgb3V0cHV0IGlzIHdpcmVkLgorCisgIE9wdGlvbmFsIHByb3BlcnRpZXM6CisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIC0gdGksYzY0eCttZWdhbW9kLXBpYy1tdXg6IEFycmF5IG9mIDEyIGNlbGxzIGNvcnJlc3BuZGluZyB0byB0aGUgMTIgY29yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eSBpbnRlcnJ1cHRzLiBUaGUgZmlyc3QgY2VsbCBjb3JyZXNwb25kcyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlIHByaW9yaXR5IDQgYW5kIHRoZSBsYXN0IGNlbGwgY29ycmVzcG9uZHMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZSBwcmlvcml0eSAxNS4gVGhlIHZhbHVlIG9mIGVhY2ggY2VsbCBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVnYW1vZHVsZSBpbnRlcnJ1cHQgc291cmNlIHdoaWNoIGlzIE1VWGVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb3JlIGludGVycnVwdCBjb3JyZXNwb25kaW5nIHRvIHRoZSBjZWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uLiBBbGxvd2VkIHZhbHVlcyBhcmUgNCAtIDEyNy4gTWFwcGluZyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0cyAwIC0gMyAoY29tYmluZWQgaW50ZXJydXB0IHNvdXJjZXMpIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVkLgorCisgIEludGVycnVwdCBTcGVjaWZpZXIgRGVmaW5pdGlvbgorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU2luZ2xlIGNlbGwgc3BlY2lmeWluZyB0aGUgbWVnYW1vZHVsZSBpbnRlcnJ1cHQgc291cmNlICg0LTEyNykuIE5vdGUgdGhhdAorICBpbnRlcnJ1cHRzIG1hcHBlZCBkaXJlY3RseSB0byB0aGUgY29yZSB3aXRoICJ0aSxjNjR4K21lZ2Ftb2QtcGljLW11eCIgd2lsbAorICB1c2UgdGhlIGNvcmUgaW50ZXJydXB0IGNvbnRyb2xsZXIgYXMgdGhlaXIgcGFyZW50IGFuZCB0aGUgc3BlY2lmaWVyIHdpbGwKKyAgYmUgdGhlIGNvcmUgcHJpb3JpdHkgbGV2ZWwsIG5vdCB0aGUgbWVnYW1vZHVsZSBpbnRlcnJ1cHQgbnVtYmVyLgorCisgIEV4YW1wbGVzCisgIC0tLS0tLS0tCisgIG1lZ2Ftb2RfcGljOiBpbnRlcnJ1cHQtY29udHJvbGxlckAxODAwMDAwIHsKKwljb21wYXRpYmxlID0gInRpLGM2NHgrbWVnYW1vZC1waWMiOworCWludGVycnVwdC1jb250cm9sbGVyOworCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJcmVnID0gPDB4MTgwMDAwMCAweDEwMDA+OworCWludGVycnVwdC1wYXJlbnQgPSA8JmNvcmVfcGljPjsKKwlpbnRlcnJ1cHRzID0gPCAxMiAxMyAxNCAxNSA+OworICB9OworCisgIFRoaXMgaXMgYSBtaW5pbWFsIGV4YW1wbGUgd2hlcmUgYWxsIGluZGl2aWR1YWwgaW50ZXJydXB0cyBnbyB0aHJvdWdoIGEKKyAgY29tYmluZXIuIENvbWJpbmVyLTAgaXMgbWFwcGVkIHRvIGNvcmUgaW50ZXJydXB0IDEyLCBjb21iaW5lci0xIGlzIG1hcHBlZAorICB0byBpbnRlcnJ1cHQgMTMsIGV0Yy4KKworCisgIG1lZ2Ftb2RfcGljOiBpbnRlcnJ1cHQtY29udHJvbGxlckAxODAwMDAwIHsKKwljb21wYXRpYmxlID0gInRpLGM2NHgrbWVnYW1vZC1waWMiOworCWludGVycnVwdC1jb250cm9sbGVyOworCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJcmVnID0gPDB4MTgwMDAwMCAweDEwMDA+OworCWludGVycnVwdC1wYXJlbnQgPSA8JmNvcmVfcGljPjsKKwlpbnRlcnJ1cHRzID0gPCAxMiAxMyAxNCAxNSA+OworCXRpLGM2NHgrbWVnYW1vZC1waWMtbXV4ID0gPCAgMCAgMCAgMCAgMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIgIDAgIDAgIDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwICAwICAwICAwID47CisgIH07CisKKyAgVGhpcyB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgZXhhbXBsZSBleGNlcHQgdGhhdCBtZWdhbW9kdWxlIGludGVycnVwdCAzMiBpcworICBtYXBwZWQgZGlyZWN0bHkgdG8gY29yZSBwcmlvcml0eSBpbnRlcnJ1cHQgOC4gVGhlIG5vZGUgdXNpbmcgdGhpcyBpbnRlcnJ1cHQKKyAgbXVzdCBzZXQgdGhlIGNvcmUgY29udHJvbGxlciBhcyBpdHMgaW50ZXJydXB0IHBhcmVudCBhbmQgdXNlIDggaW4gdGhlCisgIGludGVycnVwdCBzcGVjaWZpZXIgdmFsdWUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvdGksY3AtaW50Yy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvdGksY3AtaW50Yy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk3ZThhMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci90aSxjcC1pbnRjLnR4dApAQCAtMCwwICsxLDI3IEBACisqIFRJIENvbW1vbiBQbGF0Zm9ybSBJbnRlcnJ1cHQgQ29udHJvbGxlcgorCitDb21tb24gUGxhdGZvcm0gSW50ZXJydXB0IENvbnRyb2xsZXIgKGNwX2ludGMpIGlzIHVzZWQgb24KK09NQVAtTDF4IFNvQ3MgYW5kIGNhbiBzdXBwb3J0IHNldmVyYWwgY29uZmlndXJhYmxlIG51bWJlcgorb2YgaW50ZXJydXB0cy4KKworTWFpbiBub2RlIHJlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZToKKwkidGksY3AtaW50YyIKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXIgOiBJZGVudGlmaWVzIHRoZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyCistICNpbnRlcnJ1cHQtY2VsbHMgOiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8gZW5jb2RlIGFuCisgIGludGVycnVwdCBzb3VyY2UuIFRoZSB0eXBlIHNoYWxsIGJlIGEgPHUzMj4gYW5kIHRoZSB2YWx1ZSBzaGFsbCBiZSAxLgorCisgIFRoZSBjZWxsIGNvbnRhaW5zIHRoZSBpbnRlcnJ1cHQgbnVtYmVyIGluIHRoZSByYW5nZSBbMC0xMjhdLgorLSB0aSxpbnRjLXNpemU6IE51bWJlciBvZiBpbnRlcnJ1cHRzIGhhbmRsZWQgYnkgdGhlIGludGVycnVwdCBjb250cm9sbGVyLgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgaW50YyByZWdpc3RlcnMgbWFwLgorCitFeGFtcGxlOgorCisJaW50YzogaW50ZXJydXB0LWNvbnRyb2xsZXJAMSB7CisJCWNvbXBhdGlibGUgPSAidGksY3AtaW50YyI7CisJCWludGVycnVwdC1jb250cm9sbGVyOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCQl0aSxpbnRjLXNpemUgPSA8MTAxPjsKKwkJcmVnID0gPDB4ZmZmZWUwMDAgMHgyMDAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3RpLGtleXN0b25lLWlycS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvdGksa2V5c3RvbmUtaXJxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWJiMTA2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3RpLGtleXN0b25lLWlycS50eHQKQEAgLTAsMCArMSwzNiBAQAorS2V5c3RvbmUgMiBJUlEgY29udHJvbGxlciBJUAorCitPbiBLZXlzdG9uZSBTT0NzLCBEU1AgY29yZXMgY2FuIHNlbmQgaW50ZXJydXB0cyB0byBBUk0KK2hvc3QgdXNpbmcgdGhlIElSUSBjb250cm9sbGVyIElQLiBJdCBwcm92aWRlcyAyOCBJUlEgc2lnbmFscyB0byBBUk0uCitUaGUgSVJRIGhhbmRsZXIgcnVubmluZyBvbiBIT1NUIE9TIGNhbiBpZGVudGlmeSBEU1Agc2lnbmFsIHNvdXJjZSBieQorYW5hbHl6aW5nIFNSQ0N4IGJpdHMgaW4gSVBDQVJ4IHJlZ2lzdGVycy4gVGhpcyBpcyBvbmUgb2YgdGhlIGNvbXBvbmVudAordXNlZCBieSB0aGUgSVBDIG1lY2hhbmlzbSB1c2VkIG9uIEtleXN0b25lIFNPQ3MuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAidGksa2V5c3RvbmUtaXJxIgorLSB0aSxzeXNjb24tZGV2IDogcGhhbmRsZSBhbmQgb2Zmc2V0IHBhaXIuIFRoZSBwaGFuZGxlIHRvIHN5c2NvbiB1c2VkIHRvCisJCQlhY2Nlc3MgZGV2aWNlIGNvbnRyb2wgcmVnaXN0ZXJzIGFuZCB0aGUgb2Zmc2V0IGluc2lkZQorCQkJZGV2aWNlIGNvbnRyb2wgcmVnaXN0ZXJzIHJhbmdlLgorLSBpbnRlcnJ1cHQtY29udHJvbGxlciA6IElkZW50aWZpZXMgdGhlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIKKy0gI2ludGVycnVwdC1jZWxscyA6IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNlbGxzIG5lZWRlZCB0byBlbmNvZGUgaW50ZXJydXB0CisJCQkJCSBzb3VyY2Ugc2hvdWxkIGJlIDEuCistIGludGVycnVwdHM6IGludGVycnVwdCByZWZlcmVuY2UgdG8gcHJpbWFyeSBpbnRlcnJ1cHQgY29udHJvbGxlcgorCitQbGVhc2UgcmVmZXIgdG8gaW50ZXJydXB0cy50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGRldGFpbHMgb2YgdGhlIGNvbW1vbgorSW50ZXJydXB0IENvbnRyb2xsZXJzIGJpbmRpbmdzIHVzZWQgYnkgY2xpZW50IGRldmljZXMuCisKK0V4YW1wbGU6CisJa2lycTA6IGtleXN0b25lX2lycTBAMDI2MjAyYTAgeworCQljb21wYXRpYmxlID0gInRpLGtleXN0b25lLWlycSI7CisJCXRpLHN5c2Nvbi1kZXYgPSA8JmRldmN0cmwgMHgyYTA+OworCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgNCBJUlFfVFlQRV9FREdFX1JJU0lORz47CisJCWludGVycnVwdC1jb250cm9sbGVyOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCX07CisKKwlkc3AwOiBkc3AwIHsKKwkJY29tcGF0aWJsZSA9ICJsaW51eCxycHJvYy11c2VyIjsKKwkJLi4uCisJCWludGVycnVwdC1wYXJlbnQgPSA8JmtpcnEwPjsKKwkJaW50ZXJydXB0cyA9IDwxMCAyPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3RpLG9tYXAtaW50Yy1pcnEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3RpLG9tYXAtaW50Yy1pcnEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4Y2U1ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvdGksb21hcC1pbnRjLWlycS50eHQKQEAgLTAsMCArMSwyOCBAQAorT21hcDIvMyBpbnRjIGNvbnRyb2xsZXIKKworT24gVEkgb21hcDIgYW5kIDMgdGhlIGludGMgaW50ZXJydXB0IGNvbnRyb2xsZXIgY2FuIHByb3ZpZGUKKzk2IG9yIDEyOCBJUlEgc2lnbmFscyB0byB0aGUgQVJNIGhvc3QgZGVwZW5kaW5nIG9uIHRoZSBTb0MuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2YKKwkJCSJ0aSxvbWFwMi1pbnRjIgorCQkJInRpLG9tYXAzLWludGMiCisJCQkidGksZG04MTQtaW50YyIKKwkJCSJ0aSxkbTgxNi1pbnRjIgorCQkJInRpLGFtMzN4eC1pbnRjIgorCistIGludGVycnVwdC1jb250cm9sbGVyIDogSWRlbnRpZmllcyB0aGUgbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSAjaW50ZXJydXB0LWNlbGxzIDogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgbmVlZGVkIHRvIGVuY29kZSBpbnRlcnJ1cHQKKwkJICAgICBzb3VyY2UsIHNob3VsZCBiZSAxIGZvciBpbnRjCistIGludGVycnVwdHM6IGludGVycnVwdCByZWZlcmVuY2UgdG8gcHJpbWFyeSBpbnRlcnJ1cHQgY29udHJvbGxlcgorCitQbGVhc2UgcmVmZXIgdG8gaW50ZXJydXB0cy50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGRldGFpbHMgb2YgdGhlIGNvbW1vbgorSW50ZXJydXB0IENvbnRyb2xsZXJzIGJpbmRpbmdzIHVzZWQgYnkgY2xpZW50IGRldmljZXMuCisKK0V4YW1wbGU6CisJaW50YzogaW50ZXJydXB0LWNvbnRyb2xsZXJANDgyMDAwMDAgeworCQljb21wYXRpYmxlID0gInRpLG9tYXAzLWludGMiOworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwxPjsKKwkJcmVnID0gPDB4NDgyMDAwMDAgMHgxMDAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3RpLG9tYXAyLWludGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3RpLG9tYXAyLWludGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyNTgzZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvdGksb21hcDItaW50Yy50eHQKQEAgLTAsMCArMSwyNyBAQAorKiBPTUFQIEludGVycnVwdCBDb250cm9sbGVyCisKK09NQVAyLzMgYXJlIHVzaW5nIGEgVEkgaW50ZXJydXB0IGNvbnRyb2xsZXIgdGhhdCBjYW4gc3VwcG9ydCBzZXZlcmFsCitjb25maWd1cmFibGUgbnVtYmVyIG9mIGludGVycnVwdHMuCisKK01haW4gbm9kZSByZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiBzaG91bGQgYmU6CisJInRpLG9tYXAyLWludGMiCistIGludGVycnVwdC1jb250cm9sbGVyIDogSWRlbnRpZmllcyB0aGUgbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSAjaW50ZXJydXB0LWNlbGxzIDogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgbmVlZGVkIHRvIGVuY29kZSBhbgorICBpbnRlcnJ1cHQgc291cmNlLiBUaGUgdHlwZSBzaGFsbCBiZSBhIDx1MzI+IGFuZCB0aGUgdmFsdWUgc2hhbGwgYmUgMS4KKworICBUaGUgY2VsbCBjb250YWlucyB0aGUgaW50ZXJydXB0IG51bWJlciBpbiB0aGUgcmFuZ2UgWzAtMTI4XS4KKy0gdGksaW50Yy1zaXplOiBOdW1iZXIgb2YgaW50ZXJydXB0cyBoYW5kbGVkIGJ5IHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlci4KKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIGludGMgcmVnaXN0ZXJzIG1hcC4KKworRXhhbXBsZToKKworCWludGM6IGludGVycnVwdC1jb250cm9sbGVyQDEgeworCQljb21wYXRpYmxlID0gInRpLG9tYXAyLWludGMiOworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwxPjsKKwkJdGksaW50Yy1zaXplID0gPDk2PjsKKwkJcmVnID0gPDB4NDgyMDAwMDAgMHgxMDAwPjsKKwl9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvdGksb21hcDQtd3VnZW4tbXB1IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3RpLG9tYXA0LXd1Z2VuLW1wdQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2VmZmEwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3RpLG9tYXA0LXd1Z2VuLW1wdQpAQCAtMCwwICsxLDMzIEBACitUSSBPTUFQNCBXYWtlLXVwIEdlbmVyYXRvcgorCitBbGwgVEkgT01BUDQvNSAoYW5kIHRoZWlyIGRlcml2YXRpdmVzKSBhbiBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGF0Cityb3V0ZXMgaW50ZXJydXB0cyB0byB0aGUgR0lDLCBhbmQgYWxzbyBzZXJ2ZXMgYXMgYSB3YWtldXAgc291cmNlLiBJdAoraXMgYWxzbyByZWZlcnJlZCB0byBhcyAiV1VHRU4tTVBVIiwgaGVuY2UgdGhlIG5hbWUgb2YgdGhlIGJpbmRpbmcuCisKK1JlZ3VpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBjb250YWluIGF0IGxlYXN0ICJ0aSxvbWFwNC13dWdlbi1tcHUiIG9yCisgICJ0aSxvbWFwNS13dWdlbi1tcHUiCistIHJlZyA6IFNwZWNpZmllcyBiYXNlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIHJlZ2lzdGVycy4KKy0gaW50ZXJydXB0LWNvbnRyb2xsZXIgOiBJZGVudGlmaWVzIHRoZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyLgorLSAjaW50ZXJydXB0LWNlbGxzIDogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgbmVlZGVkIHRvIGVuY29kZSBhbgorICBpbnRlcnJ1cHQgc291cmNlLiBUaGUgdmFsdWUgbXVzdCBiZSAzLgorLSBpbnRlcnJ1cHQtcGFyZW50IDogYSBwaGFuZGxlIHRvIHRoZSBHSUMgdGhlc2UgaW50ZXJydXB0cyBhcmUgcm91dGVkCisgIHRvLgorCitOb3RlczoKKworLSBCZWNhdXNlIHRoaXMgSFcgdWx0aW1hdGVseSByb3V0ZXMgaW50ZXJydXB0cyB0byB0aGUgR0lDLCB0aGUKKyAgaW50ZXJydXB0IHNwZWNpZmllciBtdXN0IGJlIHRoYXQgb2YgdGhlIEdJQy4KKy0gT25seSBTUElzIGNhbiB1c2UgdGhlIFdVR0VOIGFzIGFuIGludGVycnVwdCBwYXJlbnQuIFNHSXMgYW5kIFBQSXMKKyAgYXJlIGV4cGxpY2l0bHkgZm9yYmlkZW4uCisKK0V4YW1wbGU6CisKKyAgICAgICB3YWtldXBnZW46IGludGVycnVwdC1jb250cm9sbGVyQDQ4MjgxMDAwIHsKKyAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAidGksb21hcDUtd3VnZW4tbXB1IiwgInRpLG9tYXA0LXd1Z2VuLW1wdSI7CisgICAgICAgICAgICAgICBpbnRlcnJ1cHQtY29udHJvbGxlcjsKKyAgICAgICAgICAgICAgICNpbnRlcnJ1cHQtY2VsbHMgPSA8Mz47CisgICAgICAgICAgICAgICByZWcgPSA8MHg0ODI4MTAwMCAweDEwMDA+OworICAgICAgICAgICAgICAgaW50ZXJydXB0LXBhcmVudCA9IDwmZ2ljPjsKKyAgICAgICB9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3ZpYSx2dDg1MDAtaW50Yy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvdmlhLHZ0ODUwMC1pbnRjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTRjZTEwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3ZpYSx2dDg1MDAtaW50Yy50eHQKQEAgLTAsMCArMSwxNiBAQAorVklBL1dvbmRlcm1lZGlhIFZUODUwMCBJbnRlcnJ1cHQgQ29udHJvbGxlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJ2aWEsdnQ4NTAwLWludGMiCistIHJlZyA6IFNob3VsZCBjb250YWluIDEgcmVnaXN0ZXIgcmFuZ2VzKGFkZHJlc3MgYW5kIGxlbmd0aCkKKy0gI2ludGVycnVwdC1jZWxscyA6IHNob3VsZCBiZSA8MT4KKworRXhhbXBsZToKKworCWludGM6IGludGVycnVwdC1jb250cm9sbGVyQGQ4MTQwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJ2aWEsdnQ4NTAwLWludGMiOworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJcmVnID0gPDB4ZDgxNDAwMDAgMHgxMDAwMD47CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pb21tdS9hcm0sc21tdS12My50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW9tbXUvYXJtLHNtbXUtdjMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0Nzg2M2EKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW9tbXUvYXJtLHNtbXUtdjMudHh0CkBAIC0wLDAgKzEsNTkgQEAKKyogQVJNIFNNTVV2MyBBcmNoaXRlY3R1cmUgSW1wbGVtZW50YXRpb24KKworVGhlIFNNTVV2MyBhcmNoaXRlY3R1cmUgaXMgYSBzaWduaWZpY2FudCBkZXBhcmF0dXJlIGZyb20gcHJldmlvdXMKK3JldmlzaW9ucywgcmVwbGFjaW5nIHRoZSBNTUlPIHJlZ2lzdGVyIGludGVyZmFjZSB3aXRoIGluLW1lbW9yeSBjb21tYW5kCithbmQgZXZlbnQgcXVldWVzIGFuZCBhZGRpbmcgc3VwcG9ydCBmb3IgdGhlIEFUUyBhbmQgUFJJIGNvbXBvbmVudHMgb2YKK3RoZSBQQ0llIHNwZWNpZmljYXRpb24uCisKKyoqIFNNTVV2MyByZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgICAgICAgIDogU2hvdWxkIGluY2x1ZGU6CisKKyAgICAgICAgICAgICAgICAgICAgICAqICJhcm0sc21tdS12MyIgZm9yIGFueSBTTU1VdjMgY29tcGxpYW50CisgICAgICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbi4gVGhpcyBlbnRyeSBzaG91bGQgYmUgbGFzdCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgbGlzdC4KKworLSByZWcgICAgICAgICAgICAgICA6IEJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgU01NVS4KKworLSBpbnRlcnJ1cHRzICAgICAgICA6IE5vbi1zZWN1cmUgaW50ZXJydXB0IGxpc3QgZGVzY3JpYmluZyB0aGUgd2lyZWQKKyAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHQgc291cmNlcyBjb3JyZXNwb25kaW5nIHRvIGVudHJpZXMgaW4KKyAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHQtbmFtZXMuIElmIG5vIHdpcmVkIGludGVycnVwdHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudCB0aGVuIHRoaXMgcHJvcGVydHkgbWF5IGJlIG9taXR0ZWQuCisKKy0gaW50ZXJydXB0LW5hbWVzICAgOiBXaGVuIHRoZSBpbnRlcnJ1cHRzIHByb3BlcnR5IGlzIHByZXNlbnQsIHNob3VsZAorICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAqICJldmVudHEiICAgIC0gRXZlbnQgUXVldWUgbm90IGVtcHR5CisgICAgICAgICAgICAgICAgICAgICAgKiAicHJpcSIgICAgICAtIFBSSSBRdWV1ZSBub3QgZW1wdHkKKyAgICAgICAgICAgICAgICAgICAgICAqICJjbWRxLXN5bmMiIC0gQ01EX1NZTkMgY29tcGxldGUKKyAgICAgICAgICAgICAgICAgICAgICAqICJnZXJyb3IiICAgIC0gR2xvYmFsIEVycm9yIGFjdGl2YXRlZAorCisqKiBTTU1VdjMgb3B0aW9uYWwgcHJvcGVydGllczoKKworLSBkbWEtY29oZXJlbnQgICAgICA6IFByZXNlbnQgaWYgRE1BIG9wZXJhdGlvbnMgbWFkZSBieSB0aGUgU01NVSAocGFnZQorICAgICAgICAgICAgICAgICAgICAgIHRhYmxlIHdhbGtzLCBzdHJlYW0gdGFibGUgYWNjZXNzZXMgZXRjKSBhcmUgY2FjaGUKKyAgICAgICAgICAgICAgICAgICAgICBjb2hlcmVudCB3aXRoIHRoZSBDUFUuCisKKyAgICAgICAgICAgICAgICAgICAgICBOT1RFOiB0aGlzIG9ubHkgYXBwbGllcyB0byB0aGUgU01NVSBpdHNlbGYsIG5vdAorICAgICAgICAgICAgICAgICAgICAgIG1hc3RlcnMgY29ubmVjdGVkIHVwc3RyZWFtIG9mIHRoZSBTTU1VLgorCistIG1zaS1wYXJlbnQgICAgICAgIDogU2VlIHRoZSBnZW5lcmljIE1TSSBiaW5kaW5nIGRlc2NyaWJlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9tc2kudHh0CisgICAgICAgICAgICAgICAgICAgICAgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIG1zaS1wYXJlbnQgcHJvcGVydHkuCisKKy0gaGlzaWxpY29uLGJyb2tlbi1wcmVmZXRjaC1jbWQKKyAgICAgICAgICAgICAgICAgICAgOiBBdm9pZCBzZW5kaW5nIENNRF9QUkVGRVRDSF8qIGNvbW1hbmRzIHRvIHRoZSBTTU1VLgorCisqKiBFeGFtcGxlCisKKyAgICAgICAgc21tdUAyYjQwMDAwMCB7CisgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJhcm0sc21tdS12MyI7CisgICAgICAgICAgICAgICAgcmVnID0gPDB4MCAweDJiNDAwMDAwIDB4MCAweDIwMDAwPjsKKyAgICAgICAgICAgICAgICBpbnRlcnJ1cHRzID0gPEdJQ19TUEkgNzQgSVJRX1RZUEVfRURHRV9SSVNJTkc+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8R0lDX1NQSSA3NSBJUlFfVFlQRV9FREdFX1JJU0lORz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxHSUNfU1BJIDc3IElSUV9UWVBFX0VER0VfUklTSU5HPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdJQ19TUEkgNzkgSVJRX1RZUEVfRURHRV9SSVNJTkc+OworICAgICAgICAgICAgICAgIGludGVycnVwdC1uYW1lcyA9ICJldmVudHEiLCAicHJpcSIsICJjbWRxLXN5bmMiLCAiZ2Vycm9yIjsKKyAgICAgICAgICAgICAgICBkbWEtY29oZXJlbnQ7CisgICAgICAgICAgICAgICAgI2lvbW11LWNlbGxzID0gPDA+OworICAgICAgICAgICAgICAgIG1zaS1wYXJlbnQgPSA8Jml0cyAweGZmMDAwMD47CisgICAgICAgIH07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW9tbXUvYXJtLHNtbXUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lvbW11L2FybSxzbW11LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTgwNzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lvbW11L2FybSxzbW11LnR4dApAQCAtMCwwICsxLDc3IEBACisqIEFSTSBTeXN0ZW0gTU1VIEFyY2hpdGVjdHVyZSBJbXBsZW1lbnRhdGlvbgorCitBUk0gU29DcyBtYXkgY29udGFpbiBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQVJNIFN5c3RlbSBNZW1vcnkKK01hbmFnZW1lbnQgVW5pdCBBcmNoaXRlY3R1cmUsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHByb3ZpZGUgMSBvciAyIHN0YWdlcworb2YgYWRkcmVzcyB0cmFuc2xhdGlvbiB0byBidXMgbWFzdGVycyBleHRlcm5hbCB0byB0aGUgQ1BVLgorCitUaGUgU01NVSBtYXkgYWxzbyByYWlzZSBpbnRlcnJ1cHRzIGluIHJlc3BvbnNlIHRvIHZhcmlvdXMgZmF1bHQKK2NvbmRpdGlvbnMuCisKKyoqIFN5c3RlbSBNTVUgcmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlICAgIDogU2hvdWxkIGJlIG9uZSBvZjoKKworICAgICAgICAgICAgICAgICAgICAgICAgImFybSxzbW11LXYxIgorICAgICAgICAgICAgICAgICAgICAgICAgImFybSxzbW11LXYyIgorICAgICAgICAgICAgICAgICAgICAgICAgImFybSxtbXUtNDAwIgorICAgICAgICAgICAgICAgICAgICAgICAgImFybSxtbXUtNDAxIgorICAgICAgICAgICAgICAgICAgICAgICAgImFybSxtbXUtNTAwIgorCisgICAgICAgICAgICAgICAgICBkZXBlbmRpbmcgb24gdGhlIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24gYW5kL29yIHRoZQorICAgICAgICAgICAgICAgICAgdmVyc2lvbiBvZiB0aGUgYXJjaGl0ZWN0dXJlIGltcGxlbWVudGVkLgorCistIHJlZyAgICAgICAgICAgOiBCYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIFNNTVUuCisKKy0gI2dsb2JhbC1pbnRlcnJ1cHRzIDogVGhlIG51bWJlciBvZiBnbG9iYWwgaW50ZXJydXB0cyBleHBvc2VkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UuCisKKy0gaW50ZXJydXB0cyAgICA6IEludGVycnVwdCBsaXN0LCB3aXRoIHRoZSBmaXJzdCAjZ2xvYmFsLWlycXMgZW50cmllcworICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZGluZyB0byB0aGUgZ2xvYmFsIGludGVycnVwdHMgYW5kIGFueQorICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGVudHJpZXMgY29ycmVzcG9uZGluZyB0byBjb250ZXh0IGludGVycnVwdHMsCisgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgaW4gb3JkZXIgb2YgdGhlaXIgaW5kZXhpbmcgYnkgdGhlIFNNTVUuCisKKyAgICAgICAgICAgICAgICAgIEZvciBTTU1VdjIgaW1wbGVtZW50YXRpb25zLCB0aGVyZSBtdXN0IGJlIGV4YWN0bHkgb25lCisgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHQgcGVyIGNvbnRleHQgYmFuay4gSW4gdGhlIGNhc2Ugb2YgYSBzaW5nbGUsCisgICAgICAgICAgICAgICAgICBjb21iaW5lZCBpbnRlcnJ1cHQsIGl0IG11c3QgYmUgbGlzdGVkIG11bHRpcGxlIHRpbWVzLgorCistIG1tdS1tYXN0ZXJzICAgOiBBIGxpc3Qgb2YgcGhhbmRsZXMgdG8gZGV2aWNlIG5vZGVzIHJlcHJlc2VudGluZyBidXMKKyAgICAgICAgICAgICAgICAgIG1hc3RlcnMgZm9yIHdoaWNoIHRoZSBTTU1VIGNhbiBwcm92aWRlIGEgdHJhbnNsYXRpb24KKyAgICAgICAgICAgICAgICAgIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIFN0cmVhbUlEcyAoc2VlIGV4YW1wbGUgYmVsb3cpLgorICAgICAgICAgICAgICAgICAgRWFjaCBkZXZpY2Ugbm9kZSBsaW5rZWQgZnJvbSB0aGlzIGxpc3QgbXVzdCBoYXZlIGEKKyAgICAgICAgICAgICAgICAgICIjc3RyZWFtLWlkLWNlbGxzIiBwcm9wZXJ0eSwgaW5kaWNhdGluZyB0aGUgbnVtYmVyIG9mCisgICAgICAgICAgICAgICAgICBTdHJlYW1JRHMgYXNzb2NpYXRlZCB3aXRoIGl0LgorCisqKiBTeXN0ZW0gTU1VIG9wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gZG1hLWNvaGVyZW50ICA6IFByZXNlbnQgaWYgcGFnZSB0YWJsZSB3YWxrcyBtYWRlIGJ5IHRoZSBTTU1VIGFyZQorICAgICAgICAgICAgICAgICAgY2FjaGUgY29oZXJlbnQgd2l0aCB0aGUgQ1BVLgorCisgICAgICAgICAgICAgICAgICBOT1RFOiB0aGlzIG9ubHkgYXBwbGllcyB0byB0aGUgU01NVSBpdHNlbGYsIG5vdAorICAgICAgICAgICAgICAgICAgbWFzdGVycyBjb25uZWN0ZWQgdXBzdHJlYW0gb2YgdGhlIFNNTVUuCisKKy0gY2FseGVkYSxzbW11LXNlY3VyZS1jb25maWctYWNjZXNzIDogRW5hYmxlIHByb3BlciBoYW5kbGluZyBvZiBidWdneQorICAgICAgICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zIHRoYXQgYWx3YXlzIHVzZSBzZWN1cmUgYWNjZXNzIHRvCisgICAgICAgICAgICAgICAgICBTTU1VIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzLiBJbiB0aGlzIGNhc2Ugbm9uLXNlY3VyZQorICAgICAgICAgICAgICAgICAgYWxpYXNlcyBvZiBzZWN1cmUgcmVnaXN0ZXJzIGhhdmUgdG8gYmUgdXNlZCBkdXJpbmcKKyAgICAgICAgICAgICAgICAgIFNNTVUgY29uZmlndXJhdGlvbi4KKworRXhhbXBsZToKKworICAgICAgICBzbW11IHsKKyAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gImFybSxzbW11LXYxIjsKKyAgICAgICAgICAgICAgICByZWcgPSA8MHhiYTVlMDAwMCAweDEwMDAwPjsKKyAgICAgICAgICAgICAgICAjZ2xvYmFsLWludGVycnVwdHMgPSA8Mj47CisgICAgICAgICAgICAgICAgaW50ZXJydXB0cyA9IDwwIDMyIDQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8MCAzMyA0PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDAgMzQgND4sIC8qIFRoaXMgaXMgdGhlIGZpcnN0IGNvbnRleHQgaW50ZXJydXB0ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwwIDM1IDQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8MCAzNiA0PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDAgMzcgND47CisKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIFR3byBETUEgY29udHJvbGxlcnMsIHRoZSBmaXJzdCB3aXRoIHR3byBTdHJlYW1JRHMgKDB4ZDAxZAorICAgICAgICAgICAgICAgICAqIGFuZCAweGQwMWUpIGFuZCB0aGUgc2Vjb25kIHdpdGggb25seSBvbmUgKDB4ZDExYykuCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgbW11LW1hc3RlcnMgPSA8JmRtYTAgMHhkMDFkIDB4ZDAxZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8JmRtYTEgMHhkMTFjPjsKKyAgICAgICAgfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pb21tdS9pb21tdS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW9tbXUvaW9tbXUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhOGI0NjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW9tbXUvaW9tbXUudHh0CkBAIC0wLDAgKzEsMTgyIEBACitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgZ2VuZXJpYyBkZXZpY2UgdHJlZSBiaW5kaW5nIGZvciBJT01NVXMgYW5kIHRoZWlyCittYXN0ZXIocykuCisKKworSU9NTVUgZGV2aWNlIG5vZGU6Cis9PT09PT09PT09PT09PT09PT0KKworQW4gSU9NTVUgY2FuIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBzZXJ2aWNlczoKKworKiBSZW1hcCBhZGRyZXNzIHNwYWNlIHRvIGFsbG93IGRldmljZXMgdG8gYWNjZXNzIHBoeXNpY2FsIG1lbW9yeSByYW5nZXMgdGhhdAorICB0aGV5IG90aGVyd2lzZSB3b3VsZG4ndCBiZSBjYXBhYmxlIG9mIGFjY2Vzc2luZy4KKworICBFeGFtcGxlOiAzMi1iaXQgRE1BIHRvIDY0LWJpdCBwaHlzaWNhbCBhZGRyZXNzZXMKKworKiBJbXBsZW1lbnQgc2NhdHRlci1nYXRoZXIgYXQgcGFnZSBsZXZlbCBncmFudWxhcml0eSBzbyB0aGF0IHRoZSBkZXZpY2UgZG9lcworICBub3QgaGF2ZSB0by4KKworKiBQcm92aWRlIHN5c3RlbSBwcm90ZWN0aW9uIGFnYWluc3QgInJvZ3VlIiBETUEgYnkgZm9yY2luZyBhbGwgYWNjZXNzZXMgdG8gZ28KKyAgdGhyb3VnaCB0aGUgSU9NTVUgYW5kIGZhdWx0aW5nIHdoZW4gZW5jb3VudGVyaW5nIGFjY2Vzc2VzIHRvIHVubWFwcGVkCisgIGFkZHJlc3MgcmVnaW9ucy4KKworKiBQcm92aWRlIGFkZHJlc3Mgc3BhY2UgaXNvbGF0aW9uIGJldHdlZW4gbXVsdGlwbGUgY29udGV4dHMuCisKKyAgRXhhbXBsZTogVmlydHVhbGl6YXRpb24KKworRGV2aWNlIG5vZGVzIGNvbXBhdGlibGUgd2l0aCB0aGlzIGJpbmRpbmcgcmVwcmVzZW50IGhhcmR3YXJlIHdpdGggc29tZSBvZiB0aGUKK2Fib3ZlIGNhcGFiaWxpdGllcy4KKworSU9NTVVzIGNhbiBiZSBzaW5nbGUtbWFzdGVyIG9yIG11bHRpcGxlLW1hc3Rlci4gU2luZ2xlLW1hc3RlciBJT01NVSBkZXZpY2VzCit0eXBpY2FsbHkgaGF2ZSBhIGZpeGVkIGFzc29jaWF0aW9uIHRvIHRoZSBtYXN0ZXIgZGV2aWNlLCB3aGVyZWFzIG11bHRpcGxlLQorbWFzdGVyIElPTU1VIGRldmljZXMgY2FuIHRyYW5zbGF0ZSBhY2Nlc3NlcyBmcm9tIG1vcmUgdGhhbiBvbmUgbWFzdGVyLgorCitUaGUgZGV2aWNlIHRyZWUgbm9kZSBvZiB0aGUgSU9NTVUgZGV2aWNlJ3MgcGFyZW50IGJ1cyBtdXN0IGNvbnRhaW4gYSB2YWxpZAorImRtYS1yYW5nZXMiIHByb3BlcnR5IHRoYXQgZGVzY3JpYmVzIGhvdyB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZSBvZiB0aGUKK0lPTU1VIG1hcHMgdG8gbWVtb3J5LiBBbiBlbXB0eSAiZG1hLXJhbmdlcyIgcHJvcGVydHkgbWVhbnMgdGhhdCB0aGVyZSBpcyBhCisxOjEgbWFwcGluZyBmcm9tIElPTU1VIHRvIG1lbW9yeS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCistICNpb21tdS1jZWxsczogVGhlIG51bWJlciBvZiBjZWxscyBpbiBhbiBJT01NVSBzcGVjaWZpZXIgbmVlZGVkIHRvIGVuY29kZSBhbgorICBhZGRyZXNzLgorCitUaGUgbWVhbmluZyBvZiB0aGUgSU9NTVUgc3BlY2lmaWVyIGlzIGRlZmluZWQgYnkgdGhlIGRldmljZSB0cmVlIGJpbmRpbmcgb2YKK3RoZSBzcGVjaWZpYyBJT01NVS4gQmVsb3cgYXJlIGEgZmV3IGV4YW1wbGVzIG9mIHR5cGljYWwgdXNlLWNhc2VzOgorCistICNpb21tdS1jZWxscyA9IDwwPjogU2luZ2xlIG1hc3RlciBJT01NVSBkZXZpY2VzIGFyZSBub3QgY29uZmlndXJhYmxlIGFuZAorICB0aGVyZWZvcmUgbm8gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBuZWVkcyB0byBiZSBlbmNvZGVkIGluIHRoZSBzcGVjaWZpZXIuCisgIFRoaXMgbWF5IGFsc28gYXBwbHkgdG8gbXVsdGlwbGUgbWFzdGVyIElPTU1VIGRldmljZXMgdGhhdCBkbyBub3QgYWxsb3cgdGhlCisgIGFzc29jaWF0aW9uIG9mIG1hc3RlcnMgdG8gYmUgY29uZmlndXJlZC4gTm90ZSB0aGF0IGFuIElPTU1VIGNhbiBieSBkZXNpZ24KKyAgYmUgbXVsdGktbWFzdGVyIHlldCBvbmx5IGV4cG9zZSBhIHNpbmdsZSBtYXN0ZXIgaW4gYSBnaXZlbiBjb25maWd1cmF0aW9uLgorICBJbiBzdWNoIGNhc2VzIHRoZSBudW1iZXIgb2YgY2VsbHMgd2lsbCB1c3VhbGx5IGJlIDEgYXMgaW4gdGhlIG5leHQgY2FzZS4KKy0gI2lvbW11LWNlbGxzID0gPDE+OiBNdWx0aXBsZSBtYXN0ZXIgSU9NTVUgZGV2aWNlcyBtYXkgbmVlZCB0byBiZSBjb25maWd1cmVkCisgIGluIG9yZGVyIHRvIGVuYWJsZSB0cmFuc2xhdGlvbiBmb3IgYSBnaXZlbiBtYXN0ZXIuIEluIHN1Y2ggY2FzZXMgdGhlIHNpbmdsZQorICBhZGRyZXNzIGNlbGwgY29ycmVzcG9uZHMgdG8gdGhlIG1hc3RlciBkZXZpY2UncyBJRC4gSW4gc29tZSBjYXNlcyBtb3JlIHRoYW4KKyAgb25lIGNlbGwgY2FuIGJlIHJlcXVpcmVkIHRvIHJlcHJlc2VudCBhIHNpbmdsZSBtYXN0ZXIgSUQuCistICNpb21tdS1jZWxscyA9IDw0PjogU29tZSBJT01NVSBkZXZpY2VzIGFsbG93IHRoZSBETUEgd2luZG93IGZvciBtYXN0ZXJzIHRvCisgIGJlIGNvbmZpZ3VyZWQuIFRoZSBmaXJzdCBjZWxsIG9mIHRoZSBhZGRyZXNzIGluIHRoaXMgbWF5IGNvbnRhaW4gdGhlIG1hc3RlcgorICBkZXZpY2UncyBJRCBmb3IgZXhhbXBsZSwgd2hpbGUgdGhlIHNlY29uZCBjZWxsIGNvdWxkIGNvbnRhaW4gdGhlIHN0YXJ0IG9mCisgIHRoZSBETUEgd2luZG93IGZvciB0aGUgZ2l2ZW4gZGV2aWNlLiBUaGUgbGVuZ3RoIG9mIHRoZSBETUEgd2luZG93IGlzIGdpdmVuCisgIGJ5IHRoZSB0aGlyZCBhbmQgZm91cnRoIGNlbGxzLgorCitOb3RlIHRoYXQgdGhlc2UgYXJlIG1lcmVseSBleGFtcGxlcyBhbmQgcmVhbC13b3JsZCB1c2UtY2FzZXMgbWF5IHVzZSBkaWZmZXJlbnQKK2RlZmluaXRpb25zIHRvIHJlcHJlc2VudCB0aGVpciBpbmRpdmlkdWFsIG5lZWRzLiBBbHdheXMgcmVmZXIgdG8gdGhlIHNwZWNpZmljCitJT01NVSBiaW5kaW5nIGZvciB0aGUgZXhhY3QgbWVhbmluZyBvZiB0aGUgY2VsbHMgdGhhdCBtYWtlIHVwIHRoZSBzcGVjaWZpZXIuCisKKworSU9NTVUgbWFzdGVyIG5vZGU6Cis9PT09PT09PT09PT09PT09PT0KKworRGV2aWNlcyB0aGF0IGFjY2VzcyBtZW1vcnkgdGhyb3VnaCBhbiBJT01NVSBhcmUgY2FsbGVkIG1hc3RlcnMuIEEgZGV2aWNlIGNhbgoraGF2ZSBtdWx0aXBsZSBtYXN0ZXIgaW50ZXJmYWNlcyAodG8gb25lIG9yIG1vcmUgSU9NTVUgZGV2aWNlcykuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tLQorLSBpb21tdXM6IEEgbGlzdCBvZiBwaGFuZGxlIGFuZCBJT01NVSBzcGVjaWZpZXIgcGFpcnMgdGhhdCBkZXNjcmliZSB0aGUgSU9NTVUKKyAgbWFzdGVyIGludGVyZmFjZXMgb2YgdGhlIGRldmljZS4gT25lIGVudHJ5IGluIHRoZSBsaXN0IGRlc2NyaWJlcyBvbmUgbWFzdGVyCisgIGludGVyZmFjZSBvZiB0aGUgZGV2aWNlLgorCitXaGVuIGFuICJpb21tdXMiIHByb3BlcnR5IGlzIHNwZWNpZmllZCBpbiBhIGRldmljZSB0cmVlIG5vZGUsIHRoZSBJT01NVSB3aWxsCitiZSB1c2VkIGZvciBhZGRyZXNzIHRyYW5zbGF0aW9uLiBJZiBhICJkbWEtcmFuZ2VzIiBwcm9wZXJ0eSBleGlzdHMgaW4gdGhlCitkZXZpY2UncyBwYXJlbnQgbm9kZSBpdCB3aWxsIGJlIGlnbm9yZWQuIEFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGUgaXMgaWYgdGhlCityZWZlcmVuY2VkIElPTU1VIGlzIGRpc2FibGVkLCBpbiB3aGljaCBjYXNlIHRoZSAiZG1hLXJhbmdlcyIgcHJvcGVydHkgb2YgdGhlCitwYXJlbnQgc2hhbGwgdGFrZSBlZmZlY3QuIE5vdGUgdGhhdCBtZXJlbHkgZGlzYWJsaW5nIGEgZGV2aWNlIHRyZWUgbm9kZSBkb2VzCitub3QgZ3VhcmFudGVlIHRoYXQgdGhlIElPTU1VIGlzIHJlYWxseSBkaXNhYmxlZCBzaW5jZSB0aGUgaGFyZHdhcmUgbWF5IG5vdAoraGF2ZSBhIG1lYW5zIHRvIHR1cm4gb2ZmIHRyYW5zbGF0aW9uLiBCdXQgaXQgaXMgaW52YWxpZCBpbiBzdWNoIGNhc2VzIHRvCitkaXNhYmxlIHRoZSBJT01NVSdzIGRldmljZSB0cmVlIG5vZGUgaW4gdGhlIGZpcnN0IHBsYWNlIGJlY2F1c2UgaXQgd291bGQKK3ByZXZlbnQgYW55IGRyaXZlciBmcm9tIHByb3Blcmx5IHNldHRpbmcgdXAgdGhlIHRyYW5zbGF0aW9ucy4KKworCitOb3RlczoKKz09PT09PQorCitPbmUgcG9zc2libGUgZXh0ZW5zaW9uIHRvIHRoZSBhYm92ZSBpcyB0byB1c2UgYW4gImlvbW11cyIgcHJvcGVydHkgYWxvbmcgd2l0aAorYSAiZG1hLXJhbmdlcyIgcHJvcGVydHkgaW4gYSBidXMgZGV2aWNlIG5vZGUgKHN1Y2ggYXMgUENJIGhvc3QgYnJpZGdlcykuIFRoaXMKK2NhbiBiZSB1c2VmdWwgdG8gZGVzY3JpYmUgaG93IGNoaWxkcmVuIG9uIHRoZSBidXMgcmVsYXRlIHRvIHRoZSBJT01NVSBpZiB0aGV5CithcmUgbm90IGV4cGxpY2l0bHkgbGlzdGVkIGluIHRoZSBkZXZpY2UgdHJlZSAoZS5nLiBQQ0kgZGV2aWNlcykuIEhvd2V2ZXIsIHRoZQorcmVxdWlyZW1lbnRzIG9mIHRoYXQgdXNlLWNhc2UgaGF2ZW4ndCBiZWVuIGZ1bGx5IGRldGVybWluZWQgeWV0LiBJbXBsZW1lbnRpbmcKK3RoaXMgaXMgdGhlcmVmb3JlIG5vdCByZWNvbW1lbmRlZCB3aXRob3V0IGZ1cnRoZXIgZGlzY3Vzc2lvbiBhbmQgZXh0ZW5zaW9uIG9mCit0aGlzIGJpbmRpbmcuCisKKworRXhhbXBsZXM6Cis9PT09PT09PT0KKworU2luZ2xlLW1hc3RlciBJT01NVToKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlpb21tdSB7CisJCSNpb21tdS1jZWxscyA9IDwwPjsKKwl9OworCisJbWFzdGVyIHsKKwkJaW9tbXVzID0gPCZ7L2lvbW11fT47CisJfTsKKworTXVsdGlwbGUtbWFzdGVyIElPTU1VIHdpdGggZml4ZWQgYXNzb2NpYXRpb25zOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJLyogbXVsdGlwbGUtbWFzdGVyIElPTU1VICovCisJaW9tbXUgeworCQkvKgorCQkgKiBNYXN0ZXJzIGFyZSBzdGF0aWNhbGx5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIElPTU1VIGFuZCBzaGFyZQorCQkgKiB0aGUgc2FtZSBhZGRyZXNzIHRyYW5zbGF0aW9ucyBiZWNhdXNlIHRoZSBJT01NVSBkb2VzIG5vdAorCQkgKiBoYXZlIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBtYXN0ZXJzLgorCQkgKgorCQkgKiBDb25zZXF1ZW50bHkgYWRkcmVzcyB0cmFuc2xhdGlvbiBpcyBhbHdheXMgb24gb3Igb2ZmIGZvcgorCQkgKiBhbGwgbWFzdGVycyBhdCBhbnkgZ2l2ZW4gcG9pbnQgaW4gdGltZS4KKwkJICovCisJCSNpb21tdS1jZWxscyA9IDwwPjsKKwl9OworCisJLyogc3RhdGljIGFzc29jaWF0aW9uIHdpdGggSU9NTVUgKi8KKwltYXN0ZXJAMSB7CisJCXJlZyA9IDwxPjsKKwkJaW9tbXVzID0gPCZ7L2lvbW11fT47CisJfTsKKworCS8qIHN0YXRpYyBhc3NvY2lhdGlvbiB3aXRoIElPTU1VICovCisJbWFzdGVyQDIgeworCQlyZWcgPSA8Mj47CisJCWlvbW11cyA9IDwmey9pb21tdX0+OworCX07CisKK011bHRpcGxlLW1hc3RlciBJT01NVToKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCWlvbW11IHsKKwkJLyogdGhlIHNwZWNpZmllciByZXByZXNlbnRzIHRoZSBJRCBvZiB0aGUgbWFzdGVyICovCisJCSNpb21tdS1jZWxscyA9IDwxPjsKKwl9OworCisJbWFzdGVyQDEgeworCQkvKiBkZXZpY2UgaGFzIG1hc3RlciBJRCA0MiBpbiB0aGUgSU9NTVUgKi8KKwkJaW9tbXVzID0gPCZ7L2lvbW11fSA0Mj47CisJfTsKKworCW1hc3RlckAyIHsKKwkJLyogZGV2aWNlIGhhcyBtYXN0ZXIgSURzIDIzIGFuZCAyNCBpbiB0aGUgSU9NTVUgKi8KKwkJaW9tbXVzID0gPCZ7L2lvbW11fSAyMz4sIDwmey9pb21tdX0gMjQ+OworCX07CisKK011bHRpcGxlLW1hc3RlciBJT01NVSB3aXRoIGNvbmZpZ3VyYWJsZSBETUEgd2luZG93OgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwkvIHsKKwkJaW9tbXUgeworCQkJLyoKKwkJCSAqIE9uZSBjZWxsIGZvciB0aGUgbWFzdGVyIElEIGFuZCBvbmUgY2VsbCBmb3IgdGhlCisJCQkgKiBhZGRyZXNzIG9mIHRoZSBETUEgd2luZG93LiBUaGUgbGVuZ3RoIG9mIHRoZSBETUEKKwkJCSAqIHdpbmRvdyBpcyBlbmNvZGVkIGluIHR3byBjZWxscy4KKwkJCSAqCisJCQkgKiBUaGUgRE1BIHdpbmRvdyBpcyB0aGUgcmFuZ2UgYWRkcmVzc2FibGUgYnkgdGhlCisJCQkgKiBtYXN0ZXIgKGkuZS4gdGhlIEkvTyB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UpLgorCQkJICovCisJCQkjaW9tbXUtY2VsbHMgPSA8ND47CisJCX07CisKKwkJbWFzdGVyIHsKKwkJCS8qIG1hc3RlciBJRCA0MiwgNCBHaUIgRE1BIHdpbmRvdyBzdGFydGluZyBhdCAwICovCisJCQlpb21tdXMgPSA8JnsvaW9tbXV9ICA0MiAgMCAgMHgxIDB4MD47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pb21tdS9udmlkaWEsdGVncmEyMC1nYXJ0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pb21tdS9udmlkaWEsdGVncmEyMC1nYXJ0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTlkOTM2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lvbW11L252aWRpYSx0ZWdyYTIwLWdhcnQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK05WSURJQSBUZWdyYSAyMCBHQVJUCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJudmlkaWEsdGVncmEyMC1nYXJ0IgorLSByZWc6IFR3byBwYWlycyBvZiBjZWxscyBzcGVjaWZ5aW5nIHRoZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBzaXplIG9mCisgIHRoZSBtZW1vcnkgY29udHJvbGxlciByZWdpc3RlcnMgYW5kIHRoZSBHQVJUIGFwZXJ0dXJlIHJlc3BlY3RpdmVseS4KKworRXhhbXBsZToKKworCWdhcnQgeworCQljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTIwLWdhcnQiOworCQlyZWcgPSA8MHg3MDAwZjAyNCAweDAwMDAwMDE4CS8qIGNvbnRyb2xsZXIgcmVnaXN0ZXJzICovCisJCSAgICAgICAweDU4MDAwMDAwIDB4MDIwMDAwMDA+OwkvKiBHQVJUIGFwZXJ0dXJlICovCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pb21tdS9udmlkaWEsdGVncmEzMC1zbW11LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pb21tdS9udmlkaWEsdGVncmEzMC1zbW11LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWZiNTQzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lvbW11L252aWRpYSx0ZWdyYTMwLXNtbXUudHh0CkBAIC0wLDAgKzEsMjEgQEAKK05WSURJQSBUZWdyYSAzMCBJT01NVSBIL1csIFNNTVUgKFN5c3RlbSBNZW1vcnkgTWFuYWdlbWVudCBVbml0KQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogIm52aWRpYSx0ZWdyYTMwLXNtbXUiCistIHJlZyA6IFNob3VsZCBjb250YWluIDMgcmVnaXN0ZXIgYmFua3MoYWRkcmVzcyBhbmQgbGVuZ3RoKSBmb3IgZWFjaAorICBvZiB0aGUgU01NVSByZWdpc3RlciBibG9ja3MuCistIGludGVycnVwdHMgOiBTaG91bGQgY29udGFpbiBNQyBHZW5lcmFsIGludGVycnVwdC4KKy0gbnZpZGlhLCNhc2lkcyA6ICMgb2YgQVNJRHMKKy0gZG1hLXdpbmRvdyA6IElPVkEgc3RhcnQgYWRkcmVzcyBhbmQgbGVuZ3RoLgorLSBudmlkaWEsYWhiIDogcGhhbmRsZSB0byB0aGUgYWhiIGJ1cyBjb25uZWN0ZWQgdG8gU01NVS4KKworRXhhbXBsZToKKwlzbW11IHsKKwkJY29tcGF0aWJsZSA9ICJudmlkaWEsdGVncmEzMC1zbW11IjsKKwkJcmVnID0gPDB4NzAwMGYwMTAgMHgwMmMKKwkJICAgICAgIDB4NzAwMGYxZjAgMHgwMTAKKwkJICAgICAgIDB4NzAwMGYyMjggMHgwNWM+OworCQludmlkaWEsI2FzaWRzID0gPDQ+OwkJLyogIyBvZiBBU0lEcyAqLworCQlkbWEtd2luZG93ID0gPDAgMHg0MDAwMDAwMD47CS8qIElPVkEgc3RhcnQgJiBsZW5ndGggKi8KKwkJbnZpZGlhLGFoYiA9IDwmYWhiPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lvbW11L3JlbmVzYXMsaXBtbXUtdm1zYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW9tbXUvcmVuZXNhcyxpcG1tdS12bXNhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDI5MDgzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lvbW11L3JlbmVzYXMsaXBtbXUtdm1zYS50eHQKQEAgLTAsMCArMSw0MSBAQAorKiBSZW5lc2FzIFZNU0EtQ29tcGF0aWJsZSBJT01NVQorCitUaGUgSVBNTVUgaXMgYW4gSU9NTVUgaW1wbGVtZW50YXRpb24gY29tcGF0aWJsZSB3aXRoIHRoZSBBUk0gVk1TQSBwYWdlIHRhYmxlcy4KK0l0IHByb3ZpZGVzIGFkZHJlc3MgdHJhbnNsYXRpb24gZm9yIGJ1cyBtYXN0ZXJzIG91dHNpZGUgb2YgdGhlIENQVSwgZWFjaAorY29ubmVjdGVkIHRvIHRoZSBJUE1NVSB0aHJvdWdoIGEgcG9ydCBjYWxsZWQgbWljcm8tVExCLgorCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlOiBNdXN0IGNvbnRhaW4gInJlbmVzYXMsaXBtbXUtdm1zYSIuCisgIC0gcmVnOiBCYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIElQTU1VIHJlZ2lzdGVycy4KKyAgLSBpbnRlcnJ1cHRzOiBTcGVjaWZpZXJzIGZvciB0aGUgTU1VIGZhdWx0IGludGVycnVwdHMuIEZvciBpbnN0YW5jZXMgdGhhdAorICAgIHN1cHBvcnQgc2VjdXJlIG1vZGUgdHdvIGludGVycnVwdHMgbXVzdCBiZSBzcGVjaWZpZWQsIGZvciBub24tc2VjdXJlIGFuZAorICAgIHNlY3VyZSBtb2RlLCBpbiB0aGF0IG9yZGVyLiBGb3IgaW5zdGFuY2VzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBzZWN1cmUgbW9kZSBhCisgICAgc2luZ2xlIGludGVycnVwdCBtdXN0IGJlIHNwZWNpZmllZC4KKworICAtICNpb21tdS1jZWxsczogTXVzdCBiZSAxLgorCitFYWNoIGJ1cyBtYXN0ZXIgY29ubmVjdGVkIHRvIGFuIElQTU1VIG11c3QgcmVmZXJlbmNlIHRoZSBJUE1NVSBpbiBpdHMgZGV2aWNlCitub2RlIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0eToKKworICAtIGlvbW11czogQSByZWZlcmVuY2UgdG8gdGhlIElQTU1VIGluIHR3byBjZWxscy4gVGhlIGZpcnN0IGNlbGwgaXMgYSBwaGFuZGxlCisgICAgdG8gdGhlIElQTU1VIGFuZCB0aGUgc2Vjb25kIGNlbGwgdGhlIG51bWJlciBvZiB0aGUgbWljcm8tVExCIHRoYXQgdGhlCisgICAgZGV2aWNlIGlzIGNvbm5lY3RlZCB0by4KKworCitFeGFtcGxlOiBSOEE3NzkxIElQTU1VLU1YIGFuZCBWU1AxLUQwIGJ1cyBtYXN0ZXIKKworCWlwbW11X214OiBtbXVAZmU5NTEwMDAgeworCQljb21wYXRpYmxlID0gInJlbmFzYXMsaXBtbXUtdm1zYSI7CisJCXJlZyA9IDwwIDB4ZmU5NTEwMDAgMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMjIyIElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8MCAyMjEgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCSNpb21tdS1jZWxscyA9IDwxPjsKKwl9OworCisJdnNwMUBmZTkyODAwMCB7CisJCS4uLgorCQlpb21tdXMgPSA8JmlwbW11X214IDEzPjsKKwkJLi4uCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pb21tdS9yb2NrY2hpcCxpb21tdS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW9tbXUvcm9ja2NoaXAsaW9tbXUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhNTVhYzMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW9tbXUvcm9ja2NoaXAsaW9tbXUudHh0CkBAIC0wLDAgKzEsMjYgQEAKK1JvY2tjaGlwIElPTU1VCis9PT09PT09PT09PT09PQorCitBIFJvY2tjaGlwIERSTSBpb21tdSB0cmFuc2xhdGVzIGlvIHZpcnR1YWwgYWRkcmVzc2VzIHRvIHBoeXNpY2FsIGFkZHJlc3NlcyBmb3IKK2l0cyBtYXN0ZXIgZGV2aWNlLiAgRWFjaCBzbGF2ZSBkZXZpY2UgaXMgYm91bmQgdG8gYSBzaW5nbGUgbWFzdGVyIGRldmljZSwgYW5kCitzaGFyZXMgaXRzIGNsb2NrcywgcG93ZXIgZG9tYWluIGFuZCBpcnEuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgICAgICA6IFNob3VsZCBiZSAicm9ja2NoaXAsaW9tbXUiCistIHJlZyAgICAgICAgICAgICA6IEFkZHJlc3Mgc3BhY2UgZm9yIHRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycworLSBpbnRlcnJ1cHRzICAgICAgOiBJbnRlcnJ1cHQgc3BlY2lmaWVyIGZvciB0aGUgSU9NTVUgaW5zdGFuY2UKKy0gaW50ZXJydXB0LW5hbWVzIDogSW50ZXJydXB0IG5hbWUgZm9yIHRoZSBJT01NVSBpbnN0YW5jZQorLSAjaW9tbXUtY2VsbHMgICAgOiBTaG91bGQgYmUgPDA+LiAgVGhpcyBpbmRpY2F0ZXMgdGhlIGlvbW11IGlzIGEKKyAgICAgICAgICAgICAgICAgICAgInNpbmdsZS1tYXN0ZXIiIGRldmljZSwgYW5kIG5lZWRzIG5vIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICAgICAgdG8gYXNzb2NpYXRlIHdpdGggaXRzIG1hc3RlciBkZXZpY2UuICBTZWU6CisgICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pb21tdS9pb21tdS50eHQKKworRXhhbXBsZToKKworCXZvcGxfbW11OiBpb21tdUBmZjk0MDMwMCB7CisJCWNvbXBhdGlibGUgPSAicm9ja2NoaXAsaW9tbXUiOworCQlyZWcgPSA8MHhmZjk0MDMwMCAweDEwMD47CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSAxNiBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJaW50ZXJydXB0LW5hbWVzID0gInZvcGxfbW11IjsKKwkJI2lvbW11LWNlbGxzID0gPDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW9tbXUvc2Ftc3VuZyxzeXNtbXUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lvbW11L3NhbXN1bmcsc3lzbW11LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzYyMGZlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lvbW11L3NhbXN1bmcsc3lzbW11LnR4dApAQCAtMCwwICsxLDcwIEBACitTYW1zdW5nIEV4eW5vcyBJT01NVSBIL1csIFN5c3RlbSBNTVUgKFN5c3RlbSBNZW1vcnkgTWFuYWdlbWVudCBVbml0KQorCitTYW1zdW5nJ3MgRXh5bm9zIGFyY2hpdGVjdHVyZSBjb250YWlucyBTeXN0ZW0gTU1VcyB0aGF0IGVuYWJsZXMgc2NhdHRlcmVkCitwaHlzaWNhbCBtZW1vcnkgY2h1bmtzIHZpc2libGUgYXMgYSBjb250aWd1b3VzIHJlZ2lvbiB0byBETUEtY2FwYWJsZSBwZXJpcGhlcmFsCitkZXZpY2VzIGxpa2UgTUZDLCBGSU1DLCBGSU1ELCBHU2NhbGVyLCBGSU1DLUlTIGFuZCBzbyBmb3J0aC4KKworU3lzdGVtIE1NVSBpcyBhbiBJT01NVSBhbmQgc3VwcG9ydHMgaWRlbnRpY2FsIHRyYW5zbGF0aW9uIHRhYmxlIGZvcm1hdCB0bworQVJNdjcgdHJhbnNsYXRpb24gdGFibGVzIHdpdGggbWluaW11bSBzZXQgb2YgcGFnZSBwcm9wZXJ0aWVzIGluY2x1ZGluZyBhY2Nlc3MKK3Blcm1pc3Npb25zLCBzaGFyZWFiaWxpdHkgYW5kIHNlY3VyaXR5IHByb3RlY3Rpb24uIEluIGFkZGl0aW9uLCBTeXN0ZW0gTU1VIGhhcworYW5vdGhlciBjYXBhYmlsaXRpZXMgbGlrZSBMMiBUTEIgb3IgYmxvY2stZmV0Y2ggYnVmZmVycyB0byBtaW5pbWl6ZSB0cmFuc2xhdGlvbgorbGF0ZW5jeS4KKworU3lzdGVtIE1NVXMgYXJlIGluIG1hbnkgdG8gb25lIHJlbGF0aW9uIHdpdGggcGVyaXBoZXJhbCBkZXZpY2VzLCBpLmUuIHNpbmdsZQorcGVyaXBoZXJhbCBkZXZpY2UgbWlnaHQgaGF2ZSBtdWx0aXBsZSBTeXN0ZW0gTU1VcyAodXN1YWxseSBvbmUgZm9yIGVhY2ggYnVzCittYXN0ZXIpLCBidXQgb25lIFN5c3RlbSBNTVUgY2FuIGhhbmRsZSB0cmFuc2FjdGlvbnMgZnJvbSBvbmx5IG9uZSBwZXJpcGhlcmFsCitkZXZpY2UuIFRoZSByZWxhdGlvbiBiZXR3ZWVuIGEgU3lzdGVtIE1NVSBhbmQgdGhlIHBlcmlwaGVyYWwgZGV2aWNlIG5lZWRzIHRvIGJlCitkZWZpbmVkIGluIGRldmljZSBub2RlIG9mIHRoZSBwZXJpcGhlcmFsIGRldmljZS4KKworTUZDIGluIGFsbCBFeHlub3MgU29DcyBhbmQgRklNRCwgTTJNIFNjYWxlcnMgYW5kIEcyRCBpbiBFeHlub3M1NDIwIGhhcyAyIFN5c3RlbQorTU1Vcy4KKyogTUZDIGhhcyBvbmUgU3lzdGVtIE1NVSBvbiBpdHMgbGVmdCBhbmQgcmlnaHQgYnVzLgorKiBGSU1EIGluIEV4eW5vczU0MjAgaGFzIG9uZSBTeXN0ZW0gTU1VIGZvciB3aW5kb3cgMCBhbmQgNCwgdGhlIG90aGVyIHN5c3RlbSBNTVUKKyAgZm9yIHdpbmRvdyAxLCAyIGFuZCAzLgorKiBNMk0gU2NhbGVycyBhbmQgRzJEIGluIEV4eW5vczU0MjAgaGFzIG9uZSBTeXN0ZW0gTU1VIG9uIHRoZSByZWFkIGNoYW5uZWwgYW5kCisgIHRoZSBvdGhlciBTeXN0ZW0gTU1VIG9uIHRoZSB3cml0ZSBjaGFubmVsLgorVGhlIGRyaXZlcnMgbXVzdCBjb25zaWRlciBob3cgdG8gaGFuZGxlIHRob3NlIFN5c3RlbSBNTVVzLiBPbmUgb2YgdGhlIGlkZWEgaXMKK3RvIGltcGxlbWVudCBjaGlsZCBkZXZpY2VzIG9yIHN1Yi1kZXZpY2VzIHdoaWNoIGFyZSB0aGUgY2xpZW50IGRldmljZXMgb2YgdGhlCitTeXN0ZW0gTU1VLgorCitOb3RlOgorVGhlIGN1cnJlbnQgRFQgYmluZGluZyBmb3IgdGhlIEV4eW5vcyBTeXN0ZW0gTU1VIGlzIGluY29tcGxldGUuCitUaGUgZm9sbG93aW5nIHByb3BlcnRpZXMgY2FuIGJlIHJlbW92ZWQgb3IgY2hhbmdlZCwgaWYgZm91bmQgaW5jb21wYXRpYmxlIHdpdGgKK3RoZSAiR2VuZXJpYyBJT01NVSBCaW5kaW5nIiBzdXBwb3J0IGZvciBhdHRhY2hpbmcgZGV2aWNlcyB0byB0aGUgSU9NTVUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAic2Ftc3VuZyxleHlub3Mtc3lzbW11IgorLSByZWc6IEEgdHVwbGUgb2YgYmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIFN5c3RlbSBNTVUgcmVnaXN0ZXJzLgorLSBpbnRlcnJ1cHQtcGFyZW50OiBUaGUgcGhhbmRsZSBvZiB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgb2YgU3lzdGVtIE1NVQorLSBpbnRlcnJ1cHRzOiBBbiBpbnRlcnJ1cHQgc3BlY2lmaWVyIGZvciBpbnRlcnJ1cHQgc2lnbmFsIG9mIFN5c3RlbSBNTVUsCisJICAgICAgYWNjb3JkaW5nIHRvIHRoZSBmb3JtYXQgZGVmaW5lZCBieSBhIHBhcnRpY3VsYXIgaW50ZXJydXB0CisJICAgICAgY29udHJvbGxlci4KKy0gY2xvY2stbmFtZXM6IFNob3VsZCBiZSAic3lzbW11IiBpZiB0aGUgU3lzdGVtIE1NVSBpcyBuZWVkZWQgdG8gZ2F0ZSBpdHMgY2xvY2suCisJICAgICAgIE9wdGlvbmFsICJtYXN0ZXIiIGlmIHRoZSBjbG9jayB0byB0aGUgU3lzdGVtIE1NVSBpcyBnYXRlZCBieQorCSAgICAgICBhbm90aGVyIGdhdGUgY2xvY2sgb3RoZXIgdGhhbiAic3lzbW11Ii4KKwkgICAgICAgRXh5bm9zNCBTb0NzLCB0aGVyZSBuZWVkcyBubyAibWFzdGVyIiBjbG9jay4KKwkgICAgICAgRXh5bm9zNSBTb0NzLCBzb21lIFN5c3RlbSBNTVVzIG11c3QgaGF2ZSAibWFzdGVyIiBjbG9ja3MuCistIGNsb2NrczogUmVxdWlyZWQgaWYgdGhlIFN5c3RlbSBNTVUgaXMgbmVlZGVkIHRvIGdhdGUgaXRzIGNsb2NrLgorLSBwb3dlci1kb21haW5zOiBSZXF1aXJlZCBpZiB0aGUgU3lzdGVtIE1NVSBpcyBuZWVkZWQgdG8gZ2F0ZSBpdHMgcG93ZXIuCisJICBQbGVhc2UgcmVmZXIgdG8gdGhlIGZvbGxvd2luZyBkb2N1bWVudDoKKwkgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9wZC1zYW1zdW5nLnR4dAorCitFeGFtcGxlczoKKwlnc2NfMDogZ3NjQDEzZTAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczUtZ3NjIjsKKwkJcmVnID0gPDB4MTNlMDAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDg1IDA+OworCQlwb3dlci1kb21haW5zID0gPCZwZF9nc2M+OworCQljbG9ja3MgPSA8JmNsb2NrIENMS19HU0NMMD47CisJCWNsb2NrLW5hbWVzID0gImdzY2wiOworCX07CisKKwlzeXNtbXVfZ3NjMDogc3lzbW11QDEzRTgwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vcy1zeXNtbXUiOworCQlyZWcgPSA8MHgxM0U4MDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZjb21iaW5lcj47CisJCWludGVycnVwdHMgPSA8MiAwPjsKKwkJY2xvY2stbmFtZXMgPSAic3lzbW11IiwgIm1hc3RlciI7CisJCWNsb2NrcyA9IDwmY2xvY2sgQ0xLX1NNTVVfR1NDTDA+LCA8JmNsb2NrIENMS19HU0NMMD47CisJCXBvd2VyLWRvbWFpbnMgPSA8JnBkX2dzYz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pb21tdS90aSxvbWFwLWlvbW11LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pb21tdS90aSxvbWFwLWlvbW11LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmQxMGRkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lvbW11L3RpLG9tYXAtaW9tbXUudHh0CkBAIC0wLDAgKzEsNTkgQEAKK09NQVAyKyBJT01NVQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlIG9uZSBvZiwKKwkJInRpLG9tYXAyLWlvbW11IiBmb3IgT01BUDIvT01BUDMgSU9NTVUgaW5zdGFuY2VzCisJCSJ0aSxvbWFwNC1pb21tdSIgZm9yIE9NQVA0L09NQVA1IElPTU1VIGluc3RhbmNlcworCQkidGksZHJhNy1kc3AtaW9tbXUiIGZvciBEUkE3eHggRFNQIElPTU1VIGluc3RhbmNlcworCQkidGksZHJhNy1pb21tdSIgZm9yIERSQTd4eCBJT01NVSBpbnN0YW5jZXMKKy0gdGksaHdtb2RzICA6IE5hbWUgb2YgdGhlIGh3bW9kIGFzc29jaWF0ZWQgd2l0aCB0aGUgSU9NTVUgaW5zdGFuY2UKKy0gcmVnICAgICAgICA6IEFkZHJlc3Mgc3BhY2UgZm9yIHRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycworLSBpbnRlcnJ1cHRzIDogSW50ZXJydXB0IHNwZWNpZmllciBmb3IgdGhlIElPTU1VIGluc3RhbmNlCistICNpb21tdS1jZWxscyA6IFNob3VsZCBiZSAwLiBPTUFQIElPTU1VcyBhcmUgYWxsICJzaW5nbGUtbWFzdGVyIiBkZXZpY2VzLAorICAgICAgICAgICAgICAgICBhbmQgbmVlZHMgbm8gYWRkaXRpb25hbCBkYXRhIGluIHRoZSBwYXJncyBzcGVjaWZpZXIuIFBsZWFzZQorICAgICAgICAgICAgICAgICBhbHNvIHJlZmVyIHRvIHRoZSBnZW5lcmljIGJpbmRpbmdzIGRvY3VtZW50IGZvciBtb3JlIGluZm8KKyAgICAgICAgICAgICAgICAgb24gdGhpcyBwcm9wZXJ0eSwKKyAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pb21tdS9pb21tdS50eHQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdGksI3RsYi1lbnRyaWVzIDogTnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIHRyYW5zbGF0aW9uIGxvb2stYXNpZGUgYnVmZmVyLgorICAgICAgICAgICAgICAgICAgICBTaG91bGQgYmUgZWl0aGVyIDggb3IgMzIgKGRlZmF1bHQ6IDMyKQorLSB0aSxpb21tdS1idXMtZXJyLWJhY2sgOiBJbmRpY2F0ZXMgdGhlIElPTU1VIGluc3RhbmNlIHN1cHBvcnRzIHRocm93aW5nCisJCSAgICAgICAgICBiYWNrIGEgYnVzIGVycm9yIHJlc3BvbnNlIG9uIE1NVSBmYXVsdHMuCistIHRpLHN5c2Nvbi1tbXVjb25maWcgOiBTaG91bGQgYmUgYSBwYWlyIG9mIHRoZSBwaGFuZGxlIHRvIHRoZSBEU1BfU1lTVEVNCisgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb24gbm9kZSB0aGF0IGNvbnRhaW5zIHRoZSBhZGRpdGlvbmFsIGNvbnRyb2wKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGZvciBlbmFibGluZyB0aGUgTU1VLCBhbmQgdGhlIE1NVSBpbnN0YW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyICgwLWluZGV4ZWQpIHdpdGhpbiB0aGUgc3ViLXN5c3RlbS4gVGhpcyBwcm9wZXJ0eQorICAgICAgICAgICAgICAgICAgICAgICAgaXMgcmVxdWlyZWQgZm9yIERTUCBJT01NVSBpbnN0YW5jZXMgb24gRFJBN3h4IFNvQ3MuIFRoZQorICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UgbnVtYmVyIHNob3VsZCBiZSAwIGZvciBEU1AgTURNQSBNTVVzIGFuZCAxIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgRFNQIEVETUEgTU1Vcy4KKworRXhhbXBsZToKKwkvKiBPTUFQMyBJU1AgTU1VICovCisJbW11X2lzcDogbW11QDQ4MGJkNDAwIHsKKwkJI2lvbW11LWNlbGxzID0gPDA+OworCQljb21wYXRpYmxlID0gInRpLG9tYXAyLWlvbW11IjsKKwkJcmVnID0gPDB4NDgwYmQ0MDAgMHg4MD47CisJCWludGVycnVwdHMgPSA8MjQ+OworCQl0aSxod21vZHMgPSAibW11X2lzcCI7CisJCXRpLCN0bGItZW50cmllcyA9IDw4PjsKKwl9OworCisJLyogRFJBNzR4IERTUDIgTU1VcyAqLworCW1tdTBfZHNwMjogbW11QDQxNTAxMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSxkcmE3LWRzcC1pb21tdSI7CisJCXJlZyA9IDwweDQxNTAxMDAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDE0NiBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJdGksaHdtb2RzID0gIm1tdTBfZHNwMiI7CisJCSNpb21tdS1jZWxscyA9IDwwPjsKKwkJdGksc3lzY29uLW1tdWNvbmZpZyA9IDwmZHNwMl9zeXN0ZW0gMHgwPjsKKwl9OworCisJbW11MV9kc3AyOiBtbXVANDE1MDIwMDAgeworCQljb21wYXRpYmxlID0gInRpLGRyYTctZHNwLWlvbW11IjsKKwkJcmVnID0gPDB4NDE1MDIwMDAgMHgxMDA+OworCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMTQ3IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQl0aSxod21vZHMgPSAibW11MV9kc3AyIjsKKwkJI2lvbW11LWNlbGxzID0gPDA+OworCQl0aSxzeXNjb24tbW11Y29uZmlnID0gPCZkc3AyX3N5c3RlbSAweDE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaXBtaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaXBtaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVmMWE4NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pcG1pLnR4dApAQCAtMCwwICsxLDI1IEBACitJUE1JIGRldmljZQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mIGlwbWkta2NzLCBpcG1pLXNtaWMsIG9yIGlwbWktYnQKKy0gZGV2aWNlX3R5cGU6IHNob3VsZCBiZSBpcG1pCistIHJlZzogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gaW50ZXJydXB0czogVGhlIGludGVycnVwdCBmb3IgdGhlIGRldmljZS4gIFdpdGhvdXQgdGhpcyB0aGUgaW50ZXJmYWNlCisJaXMgcG9sbGVkLgorLSByZWctc2l6ZSAtIFRoZSBzaXplIG9mIHRoZSByZWdpc3Rlci4gIERlZmF1bHRzIHRvIDEKKy0gcmVnLXNwYWNpbmcgLSBUaGUgbnVtYmVyIG9mIGJ5dGVzIGJldHdlZW4gcmVnaXN0ZXIgc3RhcnRzLiAgRGVmYXVsdHMgdG8gMQorLSByZWctc2hpZnQgLSBUaGUgYW1vdW50IHRvIHNoaWZ0IHRoZSByZWdpc3RlcnMgdG8gdGhlIHJpZ2h0IHRvIGdldCB0aGUgZGF0YQorCWludG8gYml0IHplcm8uCisKK0V4YW1wbGU6CisKK3NtaWNAZmZmM2EwMDAgeworCWNvbXBhdGlibGUgPSAiaXBtaS1zbWljIjsKKwlkZXZpY2VfdHlwZSA9ICJpcG1pIjsKKwlyZWcgPSA8MHhmZmYzYTAwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8MCAyNCA0PjsKKwlyZWctc2l6ZSA9IDw0PjsKKwlyZWctc3BhY2luZyA9IDw0PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9iYWNrbGlnaHQvODhwbTg2MHgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvYmFja2xpZ2h0Lzg4cG04NjB4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjFkZjI3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvYmFja2xpZ2h0Lzg4cG04NjB4LnR4dApAQCAtMCwwICsxLDE1IEBACis4OHBtODYweC1iYWNrbGlnaHQgYmluZGluZ3MKKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAgLSBtYXJ2ZWxsLDg4cG04NjB4LWlzZXQ6IEN1cnJlbnQgc3VwcGxpZXMgb24gYmFja2xpZ2h0IGRldmljZS4KKyAgLSBtYXJ2ZWxsLDg4cG04NjB4LXB3bTogUFdNIGZyZXF1ZW5jeSBvbiBiYWNrbGlnaHQgZGV2aWNlLgorCitFeGFtcGxlOgorCisJYmFja2xpZ2h0cyB7CisJCWJhY2tsaWdodC0wIHsKKwkJCW1hcnZlbGwsODhwbTg2MHgtaXNldCA9IDw0PjsKKwkJCW1hcnZlbGwsODhwbTg2MHgtcHdtID0gPDM+OworCQl9OworCQliYWNrbGlnaHQtMiB7CisJCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9iYWNrbGlnaHQvZ3Bpby1iYWNrbGlnaHQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvYmFja2xpZ2h0L2dwaW8tYmFja2xpZ2h0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjFiZTY2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvYmFja2xpZ2h0L2dwaW8tYmFja2xpZ2h0LnR4dApAQCAtMCwwICsxLDE2IEBACitncGlvLWJhY2tsaWdodCBiaW5kaW5ncworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6ICJncGlvLWJhY2tsaWdodCIKKyAgLSBncGlvczogZGVzY3JpYmVzIHRoZSBncGlvIHRoYXQgaXMgdXNlZCBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBiYWNrbGlnaHQuCisgICAgcmVmZXIgdG8gYmluZGluZ3MvZ3Bpby9ncGlvLnR4dCBmb3IgbW9yZSBkZXRhaWxzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIGRlZmF1bHQtb246IGVuYWJsZSB0aGUgYmFja2xpZ2h0IGF0IGJvb3QuCisKK0V4YW1wbGU6CisJYmFja2xpZ2h0IHsKKwkJY29tcGF0aWJsZSA9ICJncGlvLWJhY2tsaWdodCI7CisJCWdwaW9zID0gPCZncGlvMyA0IEdQSU9fQUNUSVZFX0hJR0g+OworCQlkZWZhdWx0LW9uOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9iYWNrbGlnaHQvbHA4NTV4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2JhY2tsaWdodC9scDg1NXgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhM2VjYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9iYWNrbGlnaHQvbHA4NTV4LnR4dApAQCAtMCwwICsxLDcwIEBACitscDg1NXggYmluZGluZ3MKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiAidGksbHA4NTUwIiwgInRpLGxwODU1MSIsICJ0aSxscDg1NTIiLCAidGksbHA4NTUzIiwKKyAgICAgICAgICAgICAgICAidGksbHA4NTU1IiwgInRpLGxwODU1NiIsICJ0aSxscDg1NTciCisgIC0gcmVnOiBJMkMgc2xhdmUgYWRkcmVzcyAodTgpCisgIC0gZGV2LWN0cmw6IFZhbHVlIG9mIERFVklDRSBDT05UUk9MIHJlZ2lzdGVyICh1OCkuIEl0IGRlcGVuZHMgb24gdGhlIGRldmljZS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAgLSBibC1uYW1lOiBCYWNrbGlnaHQgZGV2aWNlIG5hbWUgKHN0cmluZykKKyAgLSBpbml0LWJydDogSW5pdGlhbCB2YWx1ZSBvZiBiYWNrbGlnaHQgYnJpZ2h0bmVzcyAodTgpCisgIC0gcHdtLXBlcmlvZDogUFdNIHBlcmlvZCB2YWx1ZS4gU2V0IG9ubHkgUFdNIGlucHV0IG1vZGUgdXNlZCAodTMyKQorICAtIHJvbS1hZGRyOiBSZWdpc3RlciBhZGRyZXNzIG9mIFJPTSBhcmVhIHRvIGJlIHVwZGF0ZWQgKHU4KQorICAtIHJvbS12YWw6IFJlZ2lzdGVyIHZhbHVlIHRvIGJlIHVwZGF0ZWQgKHU4KQorICAtIHBvd2VyLXN1cHBseTogUmVndWxhdG9yIHdoaWNoIGNvbnRyb2xzIHRoZSAzViByYWlsCisKK0V4YW1wbGU6CisKKwkvKiBMUDg1NTUgKi8KKwliYWNrbGlnaHRAMmMgeworCQljb21wYXRpYmxlID0gInRpLGxwODU1NSI7CisJCXJlZyA9IDwweDJjPjsKKworCQlkZXYtY3RybCA9IC9iaXRzLyA4IDwweDAwPjsKKwkJcHdtLXBlcmlvZCA9IDwxMDAwMD47CisKKwkJLyogNFYgT1YsIDQgb3V0cHV0IExFRDAgc3RyaW5nIGVuYWJsZWQgKi8KKwkJcm9tXzE0aCB7CisJCQlyb20tYWRkciA9IC9iaXRzLyA4IDwweDE0PjsKKwkJCXJvbS12YWwgPSAvYml0cy8gOCA8MHhjZj47CisJCX07CisKKwkJLyogSGVhdnkgc21vb3RoaW5nLCAyNG1zIHJhbXAgdGltZSBzdGVwICovCisJCXJvbV8xNWggeworCQkJcm9tLWFkZHIgPSAvYml0cy8gOCA8MHgxNT47CisJCQlyb20tdmFsID0gL2JpdHMvIDggPDB4Yzc+OworCQl9OworCisJCS8qIDQgb3V0cHV0IExFRDEgc3RyaW5nIGVuYWJsZWQgKi8KKwkJcm9tXzE5aCB7CisJCQlyb20tYWRkciA9IC9iaXRzLyA4IDwweDE5PjsKKwkJCXJvbS12YWwgPSAvYml0cy8gOCA8MHgwZj47CisJCX07CisJfTsKKworCS8qIExQODU1NiAqLworCWJhY2tsaWdodEAyYyB7CisJCWNvbXBhdGlibGUgPSAidGksbHA4NTU2IjsKKwkJcmVnID0gPDB4MmM+OworCisJCWJsLW5hbWUgPSAibGNkLWJsIjsKKwkJZGV2LWN0cmwgPSAvYml0cy8gOCA8MHg4NT47CisJCWluaXQtYnJ0ID0gL2JpdHMvIDggPDB4MTA+OworCX07CisKKwkvKiBMUDg1NTcgKi8KKwliYWNrbGlnaHRAMmMgeworCQljb21wYXRpYmxlID0gInRpLGxwODU1NyI7CisJCXJlZyA9IDwweDJjPjsKKwkJcG93ZXItc3VwcGx5ID0gPCZiYWNrbGlnaHRfdmRkPjsKKworCQlkZXYtY3RybCA9IC9iaXRzLyA4IDwweDQxPjsKKwkJaW5pdC1icnQgPSAvYml0cy8gOCA8MHgwYT47CisKKwkJLyogNFYgT1YsIDQgb3V0cHV0IExFRCBzdHJpbmcgZW5hYmxlZCAqLworCQlyb21fMTRoIHsKKwkJCXJvbS1hZGRyID0gL2JpdHMvIDggPDB4MTQ+OworCQkJcm9tLXZhbCA9IC9iaXRzLyA4IDwweGNmPjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvYmFja2xpZ2h0L21heDg5MjUtYmFja2xpZ2h0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2JhY2tsaWdodC9tYXg4OTI1LWJhY2tsaWdodC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRjZmZkYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2JhY2tsaWdodC9tYXg4OTI1LWJhY2tsaWdodC50eHQKQEAgLTAsMCArMSwxMCBAQAorODhwbTg2MHgtYmFja2xpZ2h0IGJpbmRpbmdzCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgIC0gbWF4aW0sbWF4ODkyNS1kdWFsLXN0cmluZzogd2hldGhlciBzdXBwb3J0IGR1YWwgc3RyaW5nCisKK0V4YW1wbGU6CisKKwliYWNrbGlnaHRzIHsKKwkJbWF4aW0sbWF4ODkyNS1kdWFsLXN0cmluZyA9IDwwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvYmFja2xpZ2h0L3BtODk0MS13bGVkLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2JhY2tsaWdodC9wbTg5NDEtd2xlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTViMjk0ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2JhY2tsaWdodC9wbTg5NDEtd2xlZC50eHQKQEAgLTAsMCArMSw0MiBAQAorQmluZGluZyBmb3IgUXVhbGNvbW0gUE04OTQxIFdMRUQgZHJpdmVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAicWNvbSxwbTg5NDEtd2xlZCIKKy0gcmVnOiBzbGF2ZSBhZGRyZXNzCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGRlZmF1bHQtYnJpZ2h0bmVzczogYnJpZ2h0bmVzcyB2YWx1ZSBvbiBib290LCB2YWx1ZSBmcm9tOiAwLTQwOTUKKwlkZWZhdWx0OiAyMDQ4CistIGxhYmVsOiBUaGUgbmFtZSBvZiB0aGUgYmFja2xpZ2h0IGRldmljZQorLSBxY29tLGNzLW91dDogYm9vbDsgZW5hYmxlIGN1cnJlbnQgc2luayBvdXRwdXQKKy0gcWNvbSxjYWJjOiBib29sOyBlbmFibGUgY29udGVudCBhZGFwdGl2ZSBiYWNrbGlnaHQgY29udHJvbAorLSBxY29tLGV4dC1nZW46IGJvb2w7IHVzZSBleHRlcm5hbGx5IGdlbmVyYXRlZCBtb2R1bGF0b3Igc2lnbmFsIHRvIGRpbQorLSBxY29tLGN1cnJlbnQtbGltaXQ6IG1BOyBwZXItc3RyaW5nIGN1cnJlbnQgbGltaXQ7IHZhbHVlIGZyb20gMCB0byAyNQorCWRlZmF1bHQ6IDIwbUEKKy0gcWNvbSxjdXJyZW50LWJvb3N0LWxpbWl0OiBtQTsgYm9vc3QgY3VycmVudCBsaW1pdDsgb25lIG9mOgorCTEwNSwgMzg1LCA1MjUsIDgwNSwgOTgwLCAxMjYwLCAxNDAwLCAxNjgwCisJZGVmYXVsdDogODA1bUEKKy0gcWNvbSxzd2l0Y2hpbmctZnJlcToga0h6OyBzd2l0Y2hpbmcgZnJlcXVlbmN5OyBvbmUgb2Y6CisJNjAwLCA2NDAsIDY4NSwgNzM4LCA4MDAsIDg3MiwgOTYwLCAxMDY2LCAxMjAwLCAxMzcxLAorCTE2MDAsIDE5MjAsIDI0MDAsIDMyMDAsIDQ4MDAsIDk2MDAsCisJZGVmYXVsdDogMTYwMGtIegorLSBxY29tLG92cDogVjsgT3Zlci12b2x0YWdlIHByb3RlY3Rpb24gbGltaXQ7IG9uZSBvZjoKKwkyNywgMjksIDMyLCAzNQorCWRlZmF1bHQ6IDI5VgorLSBxY29tLG51bS1zdHJpbmdzOiAjOyBudW1iZXIgb2YgbGVkIHN0cmluZ3MgYXR0YWNoZWQ7IHZhbHVlIGZyb20gMSB0byAzCisJZGVmYXVsdDogMgorCitFeGFtcGxlOgorCitwbTg5NDEtd2xlZEBkODAwIHsKKwljb21wYXRpYmxlID0gInFjb20scG04OTQxLXdsZWQiOworCXJlZyA9IDwweGQ4MDA+OworCWxhYmVsID0gImJhY2tsaWdodCI7CisKKwlxY29tLGNzLW91dDsKKwlxY29tLGN1cnJlbnQtbGltaXQgPSA8MjA+OworCXFjb20sY3VycmVudC1ib29zdC1saW1pdCA9IDw4MDU+OworCXFjb20sc3dpdGNoaW5nLWZyZXEgPSA8MTYwMD47CisJcWNvbSxvdnAgPSA8Mjk+OworCXFjb20sbnVtLXN0cmluZ3MgPSA8Mj47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvYmFja2xpZ2h0L3B3bS1iYWNrbGlnaHQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvYmFja2xpZ2h0L3B3bS1iYWNrbGlnaHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NGRiODYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9iYWNrbGlnaHQvcHdtLWJhY2tsaWdodC50eHQKQEAgLTAsMCArMSwzNSBAQAorcHdtLWJhY2tsaWdodCBiaW5kaW5ncworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6ICJwd20tYmFja2xpZ2h0IgorICAtIHB3bXM6IE9GIGRldmljZS10cmVlIFBXTSBzcGVjaWZpY2F0aW9uIChzZWUgUFdNIGJpbmRpbmdbMF0pCisgIC0gYnJpZ2h0bmVzcy1sZXZlbHM6IEFycmF5IG9mIGRpc3RpbmN0IGJyaWdodG5lc3MgbGV2ZWxzLiBUeXBpY2FsbHkgdGhlc2UKKyAgICAgIGFyZSBpbiB0aGUgcmFuZ2UgZnJvbSAwIHRvIDI1NSwgYnV0IGFueSByYW5nZSBzdGFydGluZyBhdCAwIHdpbGwgZG8uCisgICAgICBUaGUgYWN0dWFsIGJyaWdodG5lc3MgbGV2ZWwgKFBXTSBkdXR5IGN5Y2xlKSB3aWxsIGJlIGludGVycG9sYXRlZAorICAgICAgZnJvbSB0aGVzZSB2YWx1ZXMuIDAgbWVhbnMgYSAwJSBkdXR5IGN5Y2xlIChkYXJrZXN0L29mZiksIHdoaWxlIHRoZQorICAgICAgbGFzdCB2YWx1ZSBpbiB0aGUgYXJyYXkgcmVwcmVzZW50cyBhIDEwMCUgZHV0eSBjeWNsZSAoYnJpZ2h0ZXN0KS4KKyAgLSBkZWZhdWx0LWJyaWdodG5lc3MtbGV2ZWw6IHRoZSBkZWZhdWx0IGJyaWdodG5lc3MgbGV2ZWwgKGluZGV4IGludG8gdGhlCisgICAgICBhcnJheSBkZWZpbmVkIGJ5IHRoZSAiYnJpZ2h0bmVzcy1sZXZlbHMiIHByb3BlcnR5KQorICAtIHBvd2VyLXN1cHBseTogcmVndWxhdG9yIGZvciBzdXBwbHkgdm9sdGFnZQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIHB3bS1uYW1lczogYSBsaXN0IG9mIG5hbWVzIGZvciB0aGUgUFdNIGRldmljZXMgc3BlY2lmaWVkIGluIHRoZQorICAgICAgICAgICAgICAgInB3bXMiIHByb3BlcnR5IChzZWUgUFdNIGJpbmRpbmdbMF0pCisgIC0gZW5hYmxlLWdwaW9zOiBjb250YWlucyBhIHNpbmdsZSBHUElPIHNwZWNpZmllciBmb3IgdGhlIEdQSU8gd2hpY2ggZW5hYmxlcworICAgICAgICAgICAgICAgICAgYW5kIGRpc2FibGVzIHRoZSBiYWNrbGlnaHQgKHNlZSBHUElPIGJpbmRpbmdbMV0pCisKK1swXTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9wd20udHh0CitbMV06IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8udHh0CisKK0V4YW1wbGU6CisKKwliYWNrbGlnaHQgeworCQljb21wYXRpYmxlID0gInB3bS1iYWNrbGlnaHQiOworCQlwd21zID0gPCZwd20gMCA1MDAwMDAwPjsKKworCQlicmlnaHRuZXNzLWxldmVscyA9IDwwIDQgOCAxNiAzMiA2NCAxMjggMjU1PjsKKwkJZGVmYXVsdC1icmlnaHRuZXNzLWxldmVsID0gPDY+OworCisJCXBvd2VyLXN1cHBseSA9IDwmdmRkX2JsX3JlZz47CisJCWVuYWJsZS1ncGlvcyA9IDwmZ3BpbyA1OCAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvYmFja2xpZ2h0L3NreTgxNDUyLWJhY2tsaWdodC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9iYWNrbGlnaHQvc2t5ODE0NTItYmFja2xpZ2h0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmYyOTQwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvYmFja2xpZ2h0L3NreTgxNDUyLWJhY2tsaWdodC50eHQKQEAgLTAsMCArMSwyOSBAQAorU0tZODE0NTItYmFja2xpZ2h0IGJpbmRpbmdzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUJCTogTXVzdCBiZSAic2t5d29ya3Msc2t5ODE0NTItYmFja2xpZ2h0IgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBuYW1lCQkJOiBOYW1lIG9mIGJhY2tsaWdodCBkZXZpY2UuIERlZmF1bHQgaXMgJ2xjZC1iYWNrbGlnaHQnLgorLSBncGlvcwkJCTogR1BJTyB0byB1c2UgdG8gRU4gcGluLgorCQkJU2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8udHh0CistIGxlZC1zb3VyY2VzCQk6IExpc3Qgb2YgZW5hYmxlZCBjaGFubmVscyBmcm9tIDAgdG8gNS4KKwkJCVNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9jb21tb24udHh0CistIHNreXdvcmtzLGlnbm9yZS1wd20JOiBJZ25vcmUgYm90aCBQV00gaW5wdXQKKy0gc2t5d29ya3MsZHB3bS1tb2RlCTogRW5hYmxlIERQV00gZGltbWluZyBtb2RlLCBvdGhlcndpc2UgQW5hbG9nIGRpbW1pbmcuCistIHNreXdvcmtzLHBoYXNlLXNoaWZ0CTogRW5hYmxlIHBoYXNlIHNoaWZ0IG1vZGUKKy0gc2t5d29ya3Msc2hvcnQtZGV0ZWN0aW9uLXRocmVzaG9sZC12b2x0CisJCQk6IEl0IHNob3VsZCBiZSBvbmUgb2YgNCwgNSwgNiBhbmQgN1YuCistIHNreXdvcmtzLGN1cnJlbnQtbGltaXQtbUEKKwkJCTogSXQgc2hvdWxkIGJlIDIzMDBtQSBvciAyNzUwbUEuCisKK0V4YW1wbGU6CisKKwliYWNrbGlnaHQgeworCQljb21wYXRpYmxlID0gInNreXdvcmtzLHNreTgxNDUyLWJhY2tsaWdodCI7CisJCW5hbWUgPSAicHdtLWJhY2tsaWdodCI7CisJCWxlZC1zb3VyY2VzID0gPDAgMSAyIDU+OworCQlza3l3b3JrcyxpZ25vcmUtcHdtOworCQlza3l3b3JrcyxwaGFzZS1zaGlmdDsKKwkJc2t5d29ya3MsY3VycmVudC1saW1pdC1tQSA9IDwyMzAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvYmFja2xpZ2h0L3RwczY1MjE3LWJhY2tsaWdodC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9iYWNrbGlnaHQvdHBzNjUyMTctYmFja2xpZ2h0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmI5Mjc5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvYmFja2xpZ2h0L3RwczY1MjE3LWJhY2tsaWdodC50eHQKQEAgLTAsMCArMSwyNyBAQAorVFBTNjUyMTcgZmFtaWx5IG9mIHJlZ3VsYXRvcnMKKworVGhlIFRQUzY1MjE3IGNoaXAgY29udGFpbnMgYSBib29zdCBjb252ZXJ0ZXIgYW5kIGN1cnJlbnQgc2lua3Mgd2hpY2ggY2FuIGJlCit1c2VkIHRvIGRyaXZlIExFRHMgZm9yIHVzZSBhcyBiYWNrbGlnaHRzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAidGksdHBzNjUyMTciCistIHJlZzogSTJDIHNsYXZlIGFkZHJlc3MKKy0gYmFja2xpZ2h0OiBub2RlIGZvciBzcGVjaWZ5aW5nIFdMRUQxIGFuZCBXTEVEMiBsaW5lcyBpbiBUUFM2NTIxNworLSBpc2VsOiBzZWxlY3Rpb24gYml0LCB2YWxpZCB2YWx1ZXM6IDEgZm9yIElTRUwxIChsb3ctbGV2ZWwpIGFuZCAyIGZvciBJU0VMMiAoaGlnaC1sZXZlbCkKKy0gZmRpbTogUFdNIGRpbW1pbmcgZnJlcXVlbmN5LCB2YWxpZCB2YWx1ZXM6IDEwMCwgMjAwLCA1MDAsIDEwMDAKKy0gZGVmYXVsdC1icmlnaHRuZXNzOiB2YWxpZCB2YWx1ZXM6IDAtMTAwCisKK0VhY2ggcmVndWxhdG9yIGlzIGRlZmluZWQgdXNpbmcgdGhlIHN0YW5kYXJkIGJpbmRpbmcgZm9yIHJlZ3VsYXRvcnMuCisKK0V4YW1wbGU6CisKKwl0cHM6IHRwc0AyNCB7CisJCXJlZyA9IDwweDI0PjsKKwkJY29tcGF0aWJsZSA9ICJ0aSx0cHM2NTIxNyI7CisJCWJhY2tsaWdodCB7CisJCQlpc2VsID0gPDE+OyAgLyogMSAtIElTRVQxLCAyIElTRVQyICovCisJCQlmZGltID0gPDEwMD47IC8qIFRQUzY1MjE3X0JMX0ZESU1fMTAwSFogKi8KKwkJCWRlZmF1bHQtYnJpZ2h0bmVzcyA9IDw1MD47CisJCX07CisJfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvY29tbW9uLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2NvbW1vbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg0MTk4NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2NvbW1vbi50eHQKQEAgLTAsMCArMSw2NCBAQAorQ29tbW9uIGxlZHMgcHJvcGVydGllcy4KKworTEVEIGFuZCBmbGFzaCBMRUQgZGV2aWNlcyBwcm92aWRlIHRoZSBzYW1lIGJhc2ljIGZ1bmN0aW9uYWxpdHkgYXMgY3VycmVudAorcmVndWxhdG9ycywgYnV0IGV4dGVuZGVkIHdpdGggTEVEIGFuZCBmbGFzaCBMRUQgc3BlY2lmaWMgZmVhdHVyZXMgbGlrZQorYmxpbmtpbmcgcGF0dGVybnMsIGZsYXNoIHRpbWVvdXQsIGZsYXNoIGZhdWx0cyBhbmQgZXh0ZXJuYWwgZmxhc2ggc3Ryb2JlIG1vZGUuCisKK01hbnkgTEVEIGRldmljZXMgZXhwb3NlIG1vcmUgdGhhbiBvbmUgY3VycmVudCBvdXRwdXQgdGhhdCBjYW4gYmUgY29ubmVjdGVkCit0byBvbmUgb3IgbW9yZSBkaXNjcmV0ZSBMRUQgY29tcG9uZW50LiBTaW5jZSB0aGUgYXJyYW5nZW1lbnQgb2YgY29ubmVjdGlvbnMKK2NhbiBpbmZsdWVuY2UgdGhlIHdheSBvZiB0aGUgTEVEIGRldmljZSBpbml0aWFsaXphdGlvbiwgdGhlIExFRCBjb21wb25lbnRzCitoYXZlIHRvIGJlIHRpZ2h0bHkgY291cGxlZCB3aXRoIHRoZSBMRUQgZGV2aWNlIGJpbmRpbmcuIFRoZXkgYXJlIHJlcHJlc2VudGVkCitieSBjaGlsZCBub2RlcyBvZiB0aGUgcGFyZW50IExFRCBkZXZpY2UgYmluZGluZy4KKworT3B0aW9uYWwgcHJvcGVydGllcyBmb3IgY2hpbGQgbm9kZXM6CistIGxlZC1zb3VyY2VzIDogTGlzdCBvZiBkZXZpY2UgY3VycmVudCBvdXRwdXRzIHRoZSBMRUQgaXMgY29ubmVjdGVkIHRvLiBUaGUKKwkJb3V0cHV0cyBhcmUgaWRlbnRpZmllZCBieSB0aGUgbnVtYmVycyB0aGF0IG11c3QgYmUgZGVmaW5lZAorCQlpbiB0aGUgTEVEIGRldmljZSBiaW5kaW5nIGRvY3VtZW50YXRpb24uCistIGxhYmVsIDogVGhlIGxhYmVsIGZvciB0aGlzIExFRC4gSWYgb21pdHRlZCwgdGhlIGxhYmVsIGlzIHRha2VuIGZyb20gdGhlIG5vZGUKKwkgIG5hbWUgKGV4Y2x1ZGluZyB0aGUgdW5pdCBhZGRyZXNzKS4gSXQgaGFzIHRvIHVuaXF1ZWx5IGlkZW50aWZ5CisJICBhIGRldmljZSwgaS5lLiBubyBvdGhlciBMRUQgY2xhc3MgZGV2aWNlIGNhbiBiZSBhc3NpZ25lZCB0aGUgc2FtZQorCSAgbGFiZWwuCisKKy0gbGludXgsZGVmYXVsdC10cmlnZ2VyIDogIFRoaXMgcGFyYW1ldGVyLCBpZiBwcmVzZW50LCBpcyBhCisgICAgc3RyaW5nIGRlZmluaW5nIHRoZSB0cmlnZ2VyIGFzc2lnbmVkIHRvIHRoZSBMRUQuICBDdXJyZW50IHRyaWdnZXJzIGFyZToKKyAgICAgImJhY2tsaWdodCIgLSBMRUQgd2lsbCBhY3QgYXMgYSBiYWNrLWxpZ2h0LCBjb250cm9sbGVkIGJ5IHRoZSBmcmFtZWJ1ZmZlcgorCQkgICBzeXN0ZW0KKyAgICAgImRlZmF1bHQtb24iIC0gTEVEIHdpbGwgdHVybiBvbiAoYnV0IGZvciBsZWRzLWdwaW8gc2VlICJkZWZhdWx0LXN0YXRlIgorCQkgICAgcHJvcGVydHkgaW4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vbGVkLnR4dCkKKyAgICAgImhlYXJ0YmVhdCIgLSBMRUQgImRvdWJsZSIgZmxhc2hlcyBhdCBhIGxvYWQgYXZlcmFnZSBiYXNlZCByYXRlCisgICAgICJpZGUtZGlzayIgLSBMRUQgaW5kaWNhdGVzIGRpc2sgYWN0aXZpdHkKKyAgICAgInRpbWVyIiAtIExFRCBmbGFzaGVzIGF0IGEgZml4ZWQsIGNvbmZpZ3VyYWJsZSByYXRlCisKKy0gbGVkLW1heC1taWNyb2FtcCA6IE1heGltdW0gTEVEIHN1cHBseSBjdXJyZW50IGluIG1pY3JvYW1wZXJlcy4gVGhpcyBwcm9wZXJ0eQorICAgICAgICAgICAgICAgICAgICAgY2FuIGJlIG1hZGUgbWFuZGF0b3J5IGZvciB0aGUgYm9hcmQgY29uZmlndXJhdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgIGludHJvZHVjaW5nIGEgcmlzayBvZiBoYXJkd2FyZSBkYW1hZ2UgaW4gY2FzZSBhbiBleGNlc3NpdmUKKyAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgaXMgc2V0LgorICAgICAgICAgICAgICAgICAgICAgRm9yIGZsYXNoIExFRCBjb250cm9sbGVycyB3aXRoIGNvbmZpZ3VyYWJsZSBjdXJyZW50IHRoaXMKKyAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5IGlzIG1hbmRhdG9yeSBmb3IgdGhlIExFRHMgaW4gdGhlIG5vbi1mbGFzaCBtb2RlcworICAgICAgICAgICAgICAgICAgICAgKGUuZy4gdG9yY2ggb3IgaW5kaWNhdG9yKS4KKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgZmxhc2ggTEVEIGNoaWxkIG5vZGVzOgorLSBmbGFzaC1tYXgtbWljcm9hbXAgOiBNYXhpbXVtIGZsYXNoIExFRCBzdXBwbHkgY3VycmVudCBpbiBtaWNyb2FtcGVyZXMuCistIGZsYXNoLW1heC10aW1lb3V0LXVzIDogTWF4aW11bSB0aW1lb3V0IGluIG1pY3Jvc2Vjb25kcyBhZnRlciB3aGljaCB0aGUgZmxhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICBMRUQgaXMgdHVybmVkIG9mZi4KKworRm9yIGNvbnRyb2xsZXJzIHRoYXQgaGF2ZSBubyBjb25maWd1cmFibGUgY3VycmVudCB0aGUgZmxhc2gtbWF4LW1pY3JvYW1wCitwcm9wZXJ0eSBjYW4gYmUgb21pdHRlZC4KK0ZvciBjb250cm9sbGVycyB0aGF0IGhhdmUgbm8gY29uZmlndXJhYmxlIHRpbWVvdXQgdGhlIGZsYXNoLW1heC10aW1lb3V0LXVzCitwcm9wZXJ0eSBjYW4gYmUgb21pdHRlZC4KKworRXhhbXBsZXM6CisKK3N5c3RlbS1zdGF0dXMgeworCWxhYmVsID0gIlN0YXR1cyI7CisJbGludXgsZGVmYXVsdC10cmlnZ2VyID0gImhlYXJ0YmVhdCI7CisJLi4uCit9OworCitjYW1lcmEtZmxhc2ggeworCWxhYmVsID0gIkZsYXNoIjsKKwlsZWQtc291cmNlcyA9IDwwPiwgPDE+OworCWxlZC1tYXgtbWljcm9hbXAgPSA8NTAwMDA+OworCWZsYXNoLW1heC1taWNyb2FtcCA9IDwzMjAwMDA+OworCWZsYXNoLW1heC10aW1lb3V0LXVzID0gPDUwMDAwMD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvbGVkcy1hYXQxMjkwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2xlZHMtYWF0MTI5MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVjMGM1OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2xlZHMtYWF0MTI5MC50eHQKQEAgLTAsMCArMSw3MyBAQAorKiBTa3l3b3JrcyBTb2x1dGlvbnMsIEluYy4gQUFUMTI5MCBDdXJyZW50IFJlZ3VsYXRvciBmb3IgRmxhc2ggTEVEcworCitUaGUgZGV2aWNlIGlzIGNvbnRyb2xsZWQgdGhyb3VnaCB0d28gcGluczogRkxfRU4gYW5kIEVOX1NFVC4gVGhlIHBpbnMgd2hlbiwKK2Fzc2VydGVkIGhpZ2gsIGVuYWJsZSBmbGFzaCBzdHJvYmUgYW5kIG1vdmllIG1vZGUgKG1heCAxLzIgb2YgZmxhc2ggY3VycmVudCkKK3Jlc3BlY3RpdmVseS4gSW4gb3JkZXIgdG8gYWRkIGEgY2FwYWJpbGl0eSBvZiBzZWxlY3RpbmcgdGhlIHN0cm9iZSBzaWduYWwgc291cmNlCisoZS5nLiBDUFUgb3IgY2FtZXJhIHNlbnNvcikgdGhlcmUgaXMgYW4gYWRkaXRpb25hbCBzd2l0Y2ggcmVxdWlyZWQsIGluZGVwZW5kZW50CitvZiB0aGUgZmxhc2ggY2hpcC4gVGhlIHN3aXRjaCBpcyBjb250cm9sbGVkIHdpdGggcGluIGNvbnRyb2wuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IE11c3QgYmUgInNreXdvcmtzLGFhdDEyOTAiLgorLSBmbGVuLWdwaW9zIDogTXVzdCBiZSBkZXZpY2UgdHJlZSBpZGVudGlmaWVyIG9mIHRoZSBmbGFzaCBkZXZpY2UgRkxfRU4gcGluLgorLSBlbnNldC1ncGlvcyA6IE11c3QgYmUgZGV2aWNlIHRyZWUgaWRlbnRpZmllciBvZiB0aGUgZmxhc2ggZGV2aWNlIEVOX1NFVCBwaW4uCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHBpbmN0cmwtbmFtZXMgOiBNdXN0IGNvbnRhaW4gZW50cmllczogImRlZmF1bHQiLCAiaG9zdCIsICJpc3AiLiBFbnRyaWVzCisJCSJkZWZhdWx0IiBhbmQgImhvc3QiIG11c3QgcmVmZXIgdG8gdGhlIHNhbWUgcGluIGNvbmZpZ3VyYXRpb24KKwkJbm9kZSwgd2hpY2ggc2V0cyB0aGUgaG9zdCBhcyBhIHN0cm9iZSBzaWduYWwgcHJvdmlkZXIuIEVudHJ5CisJCSJpc3AiIG11c3QgcmVmZXIgdG8gdGhlIHBpbiBjb25maWd1cmF0aW9uIG5vZGUsIHdoaWNoIHNldHMgdGhlCisJCUlTUCBhcyBhIHN0cm9iZSBzaWduYWwgcHJvdmlkZXIuCisKK0EgZGlzY3JldGUgTEVEIGVsZW1lbnQgY29ubmVjdGVkIHRvIHRoZSBkZXZpY2UgbXVzdCBiZSByZXByZXNlbnRlZCBieSBhIGNoaWxkCitub2RlIC0gc2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2NvbW1vbi50eHQuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgb2YgdGhlIExFRCBjaGlsZCBub2RlOgorLSBsZWQtbWF4LW1pY3JvYW1wIDogc2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2NvbW1vbi50eHQKKy0gZmxhc2gtbWF4LW1pY3JvYW1wIDogc2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2NvbW1vbi50eHQKKyAgICAgICAgICAgICAgICAgICAgICAgTWF4aW11bSBmbGFzaCBMRUQgc3VwcGx5IGN1cnJlbnQgY2FuIGJlIGNhbGN1bGF0ZWQgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIGZvcm11bGE6IEkgPSAxQSAqIDE2MmtvaG0gLyBSc2V0LgorLSBmbGFzaC1tYXgtdGltZW91dC11cyA6IHNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9jb21tb24udHh0CisgICAgICAgICAgICAgICAgICAgICAgICAgTWF4aW11bSBmbGFzaCB0aW1lb3V0IGNhbiBiZSBjYWxjdWxhdGVkIHVzaW5nIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm11bGE6IFQgPSA4LjgyICogMTBeOSAqIEN0LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzIG9mIHRoZSBMRUQgY2hpbGQgbm9kZToKKy0gbGFiZWwgOiBzZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvY29tbW9uLnR4dAorCitFeGFtcGxlIChieSBDdCA9IDIyMG5GLCBSc2V0ID0gMTYwa29obSBhbmQgZXh5bm9zNDQxMi10cmF0czIgYm9hcmQgd2l0aAorYSBzd2l0Y2ggdGhhdCBhbGxvd3MgZm9yIHJvdXRpbmcgc3Ryb2JlIHNpZ25hbCBlaXRoZXIgZnJvbSB0aGUgaG9zdCBvciBmcm9tCit0aGUgY2FtZXJhIHNlbnNvcik6CisKKyNpbmNsdWRlICJleHlub3M0NDEyLmR0c2kiCisKK2FhdDEyOTAgeworCWNvbXBhdGlibGUgPSAic2t5d29ya3MsYWF0MTI5MCI7CisJZmxlbi1ncGlvcyA9IDwmZ3BqMSAxIEdQSU9fQUNUSVZFX0hJR0g+OworCWVuc2V0LWdwaW9zID0gPCZncGoxIDIgR1BJT19BQ1RJVkVfSElHSD47CisKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiLCAiaG9zdCIsICJpc3AiOworCXBpbmN0cmwtMCA9IDwmY2FtZXJhX2ZsYXNoX2hvc3Q+OworCXBpbmN0cmwtMSA9IDwmY2FtZXJhX2ZsYXNoX2hvc3Q+OworCXBpbmN0cmwtMiA9IDwmY2FtZXJhX2ZsYXNoX2lzcD47CisKKwljYW1lcmFfZmxhc2g6IGZsYXNoLWxlZCB7CisJCWxhYmVsID0gImFhdDEyOTAtZmxhc2giOworCQlsZWQtbWF4LW1pY3JvYW1wID0gPDUyMDgzMz47CisJCWZsYXNoLW1heC1taWNyb2FtcCA9IDwxMDEyNTAwPjsKKwkJZmxhc2gtbWF4LXRpbWVvdXQtdXMgPSA8MTk0MDAwMD47CisJfTsKK307CisKKyZwaW5jdHJsXzAgeworCWNhbWVyYV9mbGFzaF9ob3N0OiBjYW1lcmEtZmxhc2gtaG9zdCB7CisJCXNhbXN1bmcscGlucyA9ICJncGoxLTAiOworCQlzYW1zdW5nLHBpbi1mdW5jdGlvbiA9IDwxPjsKKwkJc2Ftc3VuZyxwaW4tdmFsID0gPDA+OworCX07CisKKwljYW1lcmFfZmxhc2hfaXNwOiBjYW1lcmEtZmxhc2gtaXNwIHsKKwkJc2Ftc3VuZyxwaW5zID0gImdwajEtMCI7CisJCXNhbXN1bmcscGluLWZ1bmN0aW9uID0gPDE+OworCQlzYW1zdW5nLHBpbi12YWwgPSA8MT47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9sZWRzLWJjbTYzMjgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvbGVkcy1iY202MzI4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjQ4YzFlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvbGVkcy1iY202MzI4LnR4dApAQCAtMCwwICsxLDMxOSBAQAorTEVEcyBjb25uZWN0ZWQgdG8gQnJvYWRjb20gQkNNNjMyOCBjb250cm9sbGVyCisKK1RoaXMgY29udHJvbGxlciBpcyBwcmVzZW50IG9uIEJDTTYzMTgsIEJDTTYzMjgsIEJDTTYzNjIgYW5kIEJDTTYzMjY4LgorSW4gdGhlc2UgU29DcyBpdCdzIHBvc3NpYmxlIHRvIGNvbnRyb2wgTEVEcyBib3RoIGFzIEdQSU9zIG9yIGJ5IGhhcmR3YXJlLgorSG93ZXZlciwgb24gc29tZSBkZXZpY2VzIHRoZXJlIGFyZSBTZXJpYWwgTEVEcyAoTEVEcyBjb25uZWN0ZWQgdG8gYSA3NHgxNjQKK2NvbnRyb2xsZXIpLCB3aGljaCBjYW4gZWl0aGVyIGJlIGNvbnRyb2xsZWQgYnkgc29mdHdhcmUgKGV4cG9ydGluZyB0aGUgNzR4MTY0CithcyBzcGktZ3Bpby4gU2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tNzR4MTY0LnR4dCksIG9yCitieSBoYXJkd2FyZSB1c2luZyB0aGlzIGRyaXZlci4KK1NvbWUgb2YgdGhlc2UgU2VyaWFsIExFRHMgYXJlIGhhcmR3YXJlIGNvbnRyb2xsZWQgKGUuZy4gZXRoZXJuZXQgTEVEcykgYW5kCitleHBvcnRpbmcgdGhlIDc0eDE2NCBhcyBzcGktZ3BpbyBwcmV2ZW50cyB0aG9zZSBMRURzIHRvIGJlIGhhcmR3YXJlCitjb250cm9sbGVkLCBzbyB0aGUgb25seSBjaGFuY2UgdG8ga2VlcCB0aGVtIHdvcmtpbmcgaXMgYnkgdXNpbmcgdGhpcyBkcml2ZXIuCisKK0JDTTYzMjggTEVEIGNvbnRyb2xsZXIgaGFzIGEgSFdESVMgcmVnaXN0ZXIsIHdoaWNoIGNvbnRyb2xzIHdoZXRoZXIgYSBMRUQKK3Nob3VsZCBiZSBjb250cm9sbGVkIGJ5IGEgaGFyZHdhcmUgc2lnbmFsIGluc3RlYWQgb2YgdGhlIE1PREUgcmVnaXN0ZXIgdmFsdWUsCit3aXRoIDAgbWVhbmluZyBoYXJkd2FyZSBjb250cm9sIGVuYWJsZWQgYW5kIDEgaGFyZHdhcmUgY29udHJvbCBkaXNhYmxlZC4gVGhpcworaXMgdXN1YWxseSAxOjEgZm9yIGhhcmR3YXJlIHRvIExFRCBzaWduYWxzLCBidXQgdGhyb3VnaCB0aGUgYWN0aXZpdHkvbGluaworcmVnaXN0ZXJzIHlvdSBoYXZlIHNvbWUgbGltaXRlZCBjb250cm9sIG92ZXIgcmVyb3V0aW5nIHRoZSBMRURzIChhcworZXhwbGFpbmVkIGxhdGVyIGluIGJyY20sbGluay1zaWduYWwtc291cmNlcykuIEV2ZW4gaWYgYSBMRUQgaXMgaGFyZHdhcmUKK2NvbnRyb2xsZWQgeW91IGFyZSBzdGlsbCBhYmxlIHRvIG1ha2UgaXQgYmxpbmsgb3IgbGlnaHQgaXQgdXAgaWYgaXQgaXNuJ3QsCitidXQgeW91IGNhbid0IHR1cm4gaXQgb2ZmIGlmIHRoZSBoYXJkd2FyZSBkZWNpZGVzIHRvIGxpZ2h0IGl0IHVwLiBGb3IgdGhpcworcmVhc29uLCBoYXJkd2FyZSBjb250cm9sbGVkIExFRHMgYXJlbid0IHJlZ2lzdGVyZWQgYXMgTEVEIGNsYXNzIGRldmljZXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiYnJjbSxiY202MzI4LWxlZHMiLgorICAtICNhZGRyZXNzLWNlbGxzIDogbXVzdCBiZSAxLgorICAtICNzaXplLWNlbGxzIDogbXVzdCBiZSAwLgorICAtIHJlZyA6IEJDTTYzMjggTEVEIGNvbnRyb2xsZXIgYWRkcmVzcyBhbmQgc2l6ZS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAgLSBicmNtLHNlcmlhbC1sZWRzIDogQm9vbGVhbiwgZW5hYmxlcyBTZXJpYWwgTEVEcy4KKyAgICBEZWZhdWx0IDogZmFsc2UKKyAgLSBicmNtLHNlcmlhbC1tdXggOiBCb29sZWFuLCBlbmFibGVzIFNlcmlhbCBMRURzIG11bHRpcGxleGluZy4KKyAgICBEZWZhdWx0IDogZmFsc2UKKyAgLSBicmNtLHNlcmlhbC1jbGstbG93IDogQm9vbGVhbiwgbWFrZXMgY2xvY2sgc2lnbmFsIGFjdGl2ZSBsb3cuCisgICAgRGVmYXVsdCA6IGZhbHNlCisgIC0gYnJjbSxzZXJpYWwtZGF0LWxvdyA6IEJvb2xlYW4sIG1ha2VzIGRhdGEgc2lnbmFsIGFjdGl2ZSBsb3cuCisgICAgRGVmYXVsdCA6IGZhbHNlCisgIC0gYnJjbSxzZXJpYWwtc2hpZnQtaW52IDogQm9vbGVhbiwgaW52ZXJ0cyBTZXJpYWwgTEVEcyBzaGlmdCBkaXJlY3Rpb24uCisgICAgRGVmYXVsdCA6IGZhbHNlCisKK0VhY2ggTEVEIGlzIHJlcHJlc2VudGVkIGFzIGEgc3ViLW5vZGUgb2YgdGhlIGJyY20sYmNtNjMyOC1sZWRzIGRldmljZS4KKworTEVEIHN1Yi1ub2RlIHJlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gcmVnIDogTEVEIHBpbiBudW1iZXIgKG9ubHkgTEVEcyAwIHRvIDIzIGFyZSB2YWxpZCkuCisKK0xFRCBzdWItbm9kZSBvcHRpb25hbCBwcm9wZXJ0aWVzOgorICBhKSBPcHRpb25hbCBwcm9wZXJ0aWVzIGZvciBzdWItbm9kZXMgcmVsYXRlZCB0byBzb2Z0d2FyZSBjb250cm9sbGVkIExFRHM6CisgICAgLSBsYWJlbCA6IHNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9jb21tb24udHh0CisgICAgLSBhY3RpdmUtbG93IDogQm9vbGVhbiwgbWFrZXMgTEVEIGFjdGl2ZSBsb3cuCisgICAgICBEZWZhdWx0IDogZmFsc2UKKyAgICAtIGRlZmF1bHQtc3RhdGUgOiBzZWUKKyAgICAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2xlZHMtZ3Bpby50eHQKKyAgICAtIGxpbnV4LGRlZmF1bHQtdHJpZ2dlciA6IHNlZQorICAgICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvY29tbW9uLnR4dAorCisgIGIpIE9wdGlvbmFsIHByb3BlcnRpZXMgZm9yIHN1Yi1ub2RlcyByZWxhdGVkIHRvIGhhcmR3YXJlIGNvbnRyb2xsZWQgTEVEczoKKyAgICAtIGJyY20saGFyZHdhcmUtY29udHJvbGxlZCA6IEJvb2xlYW4sIG1ha2VzIHRoaXMgTEVEIGhhcmR3YXJlIGNvbnRyb2xsZWQuCisgICAgICBEZWZhdWx0IDogZmFsc2UKKyAgICAtIGJyY20sbGluay1zaWduYWwtc291cmNlcyA6IEFuIGFycmF5IG9mIGhhcmR3YXJlIGxpbmsKKyAgICAgIHNpZ25hbCBzb3VyY2VzLiBVcCB0byBmb3VyIGxpbmsgaGFyZHdhcmUgc2lnbmFscyBjYW4gZ2V0IG11eGVkIGludG8KKyAgICAgIHRoZXNlIExFRHMuIE9ubHkgdmFsaWQgZm9yIExFRHMgMCB0byA3LCB3aGVyZSBMRUQgc2lnbmFscyAwIHRvIDMgbWF5CisgICAgICBiZSBtdXhlZCB0byBMRURzIDAgdG8gMywgYW5kIHNpZ25hbHMgNCB0byA3IG1heSBiZSBtdXhlZCB0byBMRURzCisgICAgICA0IHRvIDcuIEEgc2lnbmFsIGNhbiBiZSBtdXhlZCB0byBtb3JlIHRoYW4gb25lIExFRCwgYW5kIG9uZSBMRUQgY2FuCisgICAgICBoYXZlIG1vcmUgdGhhbiBvbmUgc291cmNlIHNpZ25hbC4KKyAgICAtIGJyY20sYWN0aXZpdHktc2lnbmFsLXNvdXJjZXMgOiBBbiBhcnJheSBvZiBoYXJkd2FyZSBhY3Rpdml0eQorICAgICAgc2lnbmFsIHNvdXJjZXMuIFVwIHRvIGZvdXIgYWN0aXZpdHkgaGFyZHdhcmUgc2lnbmFscyBjYW4gZ2V0IG11eGVkIGludG8KKyAgICAgIHRoZXNlIExFRHMuIE9ubHkgdmFsaWQgZm9yIExFRHMgMCB0byA3LCB3aGVyZSBMRUQgc2lnbmFscyAwIHRvIDMgbWF5CisgICAgICBiZSBtdXhlZCB0byBMRURzIDAgdG8gMywgYW5kIHNpZ25hbHMgNCB0byA3IG1heSBiZSBtdXhlZCB0byBMRURzCisgICAgICA0IHRvIDcuIEEgc2lnbmFsIGNhbiBiZSBtdXhlZCB0byBtb3JlIHRoYW4gb25lIExFRCwgYW5kIG9uZSBMRUQgY2FuCisgICAgICBoYXZlIG1vcmUgdGhhbiBvbmUgc291cmNlIHNpZ25hbC4KKworRXhhbXBsZXM6CitTY2VuYXJpbyAxIDogQkNNNjMyOCB3aXRoIDQgRVBIWSBMRURzCisJbGVkczA6IGxlZC1jb250cm9sbGVyQDEwMDAwODAwIHsKKwkJY29tcGF0aWJsZSA9ICJicmNtLGJjbTYzMjgtbGVkcyI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJcmVnID0gPDB4MTAwMDA4MDAgMHgyND47CisKKwkJYWxhcm1fcmVkQDIgeworCQkJcmVnID0gPDI+OworCQkJYWN0aXZlLWxvdzsKKwkJCWxhYmVsID0gInJlZDphbGFybSI7CisJCX07CisJCWluZXRfZ3JlZW5AMyB7CisJCQlyZWcgPSA8Mz47CisJCQlhY3RpdmUtbG93OworCQkJbGFiZWwgPSAiZ3JlZW46aW5ldCI7CisJCX07CisJCXBvd2VyX2dyZWVuQDQgeworCQkJcmVnID0gPDQ+OworCQkJYWN0aXZlLWxvdzsKKwkJCWxhYmVsID0gImdyZWVuOnBvd2VyIjsKKwkJCWRlZmF1bHQtc3RhdGUgPSAib24iOworCQl9OworCQllcGh5MF9zcGRAMTcgeworCQkJcmVnID0gPDE3PjsKKwkJCWJyY20saGFyZHdhcmUtY29udHJvbGxlZDsKKwkJfTsKKwkJZXBoeTFfc3BkQDE4IHsKKwkJCXJlZyA9IDwxOD47CisJCQlicmNtLGhhcmR3YXJlLWNvbnRyb2xsZWQ7CisJCX07CisJCWVwaHkyX3NwZEAxOSB7CisJCQlyZWcgPSA8MTk+OworCQkJYnJjbSxoYXJkd2FyZS1jb250cm9sbGVkOworCQl9OworCQllcGh5M19zcGRAMjAgeworCQkJcmVnID0gPDIwPjsKKwkJCWJyY20saGFyZHdhcmUtY29udHJvbGxlZDsKKwkJfTsKKwl9OworCitTY2VuYXJpbyAyIDogQkNNNjMyNjggd2l0aCBTZXJpYWwvR1BIWTAgTEVEcworCWxlZHMwOiBsZWQtY29udHJvbGxlckAxMDAwMTkwMCB7CisJCWNvbXBhdGlibGUgPSAiYnJjbSxiY202MzI4LWxlZHMiOworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJCXJlZyA9IDwweDEwMDAxOTAwIDB4MjQ+OworCQlicmNtLHNlcmlhbC1sZWRzOworCQlicmNtLHNlcmlhbC1kYXQtbG93OworCQlicmNtLHNlcmlhbC1zaGlmdC1pbnY7CisKKwkJZ3BoeTBfc3BkMEAwIHsKKwkJCXJlZyA9IDwwPjsKKwkJCWJyY20saGFyZHdhcmUtY29udHJvbGxlZDsKKwkJCWJyY20sbGluay1zaWduYWwtc291cmNlcyA9IDwwPjsKKwkJfTsKKwkJZ3BoeTBfc3BkMUAxIHsKKwkJCXJlZyA9IDwxPjsKKwkJCWJyY20saGFyZHdhcmUtY29udHJvbGxlZDsKKwkJCWJyY20sbGluay1zaWduYWwtc291cmNlcyA9IDwxPjsKKwkJfTsKKwkJaW5ldF9yZWRAMiB7CisJCQlyZWcgPSA8Mj47CisJCQlhY3RpdmUtbG93OworCQkJbGFiZWwgPSAicmVkOmluZXQiOworCQl9OworCQlkc2xfZ3JlZW5AMyB7CisJCQlyZWcgPSA8Mz47CisJCQlhY3RpdmUtbG93OworCQkJbGFiZWwgPSAiZ3JlZW46ZHNsIjsKKwkJfTsKKwkJdXNiX2dyZWVuQDQgeworCQkJcmVnID0gPDQ+OworCQkJYWN0aXZlLWxvdzsKKwkJCWxhYmVsID0gImdyZWVuOnVzYiI7CisJCX07CisJCXdwc19ncmVlbkA3IHsKKwkJCXJlZyA9IDw3PjsKKwkJCWFjdGl2ZS1sb3c7CisJCQlsYWJlbCA9ICJncmVlbjp3cHMiOworCQl9OworCQlpbmV0X2dyZWVuQDggeworCQkJcmVnID0gPDg+OworCQkJYWN0aXZlLWxvdzsKKwkJCWxhYmVsID0gImdyZWVuOmluZXQiOworCQl9OworCQllcGh5MF9hY3RAOSB7CisJCQlyZWcgPSA8OT47CisJCQlicmNtLGhhcmR3YXJlLWNvbnRyb2xsZWQ7CisJCX07CisJCWVwaHkxX2FjdEAxMCB7CisJCQlyZWcgPSA8MTA+OworCQkJYnJjbSxoYXJkd2FyZS1jb250cm9sbGVkOworCQl9OworCQllcGh5Ml9hY3RAMTEgeworCQkJcmVnID0gPDExPjsKKwkJCWJyY20saGFyZHdhcmUtY29udHJvbGxlZDsKKwkJfTsKKwkJZ3BoeTBfYWN0QDEyIHsKKwkJCXJlZyA9IDwxMj47CisJCQlicmNtLGhhcmR3YXJlLWNvbnRyb2xsZWQ7CisJCX07CisJCWVwaHkwX3NwZEAxMyB7CisJCQlyZWcgPSA8MTM+OworCQkJYnJjbSxoYXJkd2FyZS1jb250cm9sbGVkOworCQl9OworCQllcGh5MV9zcGRAMTQgeworCQkJcmVnID0gPDE0PjsKKwkJCWJyY20saGFyZHdhcmUtY29udHJvbGxlZDsKKwkJfTsKKwkJZXBoeTJfc3BkQDE1IHsKKwkJCXJlZyA9IDwxNT47CisJCQlicmNtLGhhcmR3YXJlLWNvbnRyb2xsZWQ7CisJCX07CisJCXBvd2VyX2dyZWVuQDIwIHsKKwkJCXJlZyA9IDwyMD47CisJCQlhY3RpdmUtbG93OworCQkJbGFiZWwgPSAiZ3JlZW46cG93ZXIiOworCQkJZGVmYXVsdC1zdGF0ZSA9ICJvbiI7CisJCX07CisJfTsKKworU2NlbmFyaW8gMyA6IEJDTTYzNjIgd2l0aCAxIExFRCBmb3IgZWFjaCBFUEhZCisJbGVkczA6IGxlZC1jb250cm9sbGVyQDEwMDAxOTAwIHsKKwkJY29tcGF0aWJsZSA9ICJicmNtLGJjbTYzMjgtbGVkcyI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJcmVnID0gPDB4MTAwMDE5MDAgMHgyND47CisKKwkJdXNiQDAgeworCQkJcmVnID0gPDA+OworCQkJYnJjbSxoYXJkd2FyZS1jb250cm9sbGVkOworCQkJYnJjbSxsaW5rLXNpZ25hbC1zb3VyY2VzID0gPDA+OworCQkJYnJjbSxhY3Rpdml0eS1zaWduYWwtc291cmNlcyA9IDwwPjsKKwkJCS8qIFVTQiBsaW5rL2FjdGl2aXR5IHJvdXRlZCB0byBVU0IgTEVEICovCisJCX07CisJCWluZXRAMSB7CisJCQlyZWcgPSA8MT47CisJCQlicmNtLGhhcmR3YXJlLWNvbnRyb2xsZWQ7CisJCQlicmNtLGFjdGl2aXR5LXNpZ25hbC1zb3VyY2VzID0gPDE+OworCQkJLyogSU5FVCBhY3Rpdml0eSByb3V0ZWQgdG8gSU5FVCBMRUQgKi8KKwkJfTsKKwkJZXBoeTBANCB7CisJCQlyZWcgPSA8ND47CisJCQlicmNtLGhhcmR3YXJlLWNvbnRyb2xsZWQ7CisJCQlicmNtLGxpbmstc2lnbmFsLXNvdXJjZXMgPSA8ND47CisJCQkvKiBFUEhZMCBsaW5rIHJvdXRlZCB0byBFUEhZMCBMRUQgKi8KKwkJfTsKKwkJZXBoeTFANSB7CisJCQlyZWcgPSA8NT47CisJCQlicmNtLGhhcmR3YXJlLWNvbnRyb2xsZWQ7CisJCQlicmNtLGxpbmstc2lnbmFsLXNvdXJjZXMgPSA8NT47CisJCQkvKiBFUEhZMSBsaW5rIHJvdXRlZCB0byBFUEhZMSBMRUQgKi8KKwkJfTsKKwkJZXBoeTJANiB7CisJCQlyZWcgPSA8Nj47CisJCQlicmNtLGhhcmR3YXJlLWNvbnRyb2xsZWQ7CisJCQlicmNtLGxpbmstc2lnbmFsLXNvdXJjZXMgPSA8Nj47CisJCQkvKiBFUEhZMiBsaW5rIHJvdXRlZCB0byBFUEhZMiBMRUQgKi8KKwkJfTsKKwkJZXBoeTNANyB7CisJCQlyZWcgPSA8Nz47CisJCQlicmNtLGhhcmR3YXJlLWNvbnRyb2xsZWQ7CisJCQlicmNtLGxpbmstc2lnbmFsLXNvdXJjZXMgPSA8Nz47CisJCQkvKiBFUEhZMyBsaW5rIHJvdXRlZCB0byBFUEhZMyBMRUQgKi8KKwkJfTsKKwkJcG93ZXJfZ3JlZW5AMjAgeworCQkJcmVnID0gPDIwPjsKKwkJCWFjdGl2ZS1sb3c7CisJCQlsYWJlbCA9ICJncmVlbjpwb3dlciI7CisJCQlkZWZhdWx0LXN0YXRlID0gIm9uIjsKKwkJfTsKKwl9OworCitTY2VuYXJpbyA0IDogQkNNNjM2MiB3aXRoIDEgTEVEIGZvciBhbGwgRVBIWXMKKwlsZWRzMDogbGVkLWNvbnRyb2xsZXJAMTAwMDE5MDAgeworCQljb21wYXRpYmxlID0gImJyY20sYmNtNjMyOC1sZWRzIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQlyZWcgPSA8MHgxMDAwMTkwMCAweDI0PjsKKworCQl1c2JAMCB7CisJCQlyZWcgPSA8MD47CisJCQlicmNtLGhhcmR3YXJlLWNvbnRyb2xsZWQ7CisJCQlicmNtLGxpbmstc2lnbmFsLXNvdXJjZXMgPSA8MCAxPjsKKwkJCWJyY20sYWN0aXZpdHktc2lnbmFsLXNvdXJjZXMgPSA8MCAxPjsKKwkJCS8qIFVTQi9JTkVUIGxpbmsvYWN0aXZpdHkgcm91dGVkIHRvIFVTQiBMRUQgKi8KKwkJfTsKKwkJZXBoeUA0IHsKKwkJCXJlZyA9IDw0PjsKKwkJCWJyY20saGFyZHdhcmUtY29udHJvbGxlZDsKKwkJCWJyY20sbGluay1zaWduYWwtc291cmNlcyA9IDw0IDUgNiA3PjsKKwkJCS8qIEVQSFkwLzEvMi8zIGxpbmsgcm91dGVkIHRvIEVQSFkwIExFRCAqLworCQl9OworCQlwb3dlcl9ncmVlbkAyMCB7CisJCQlyZWcgPSA8MjA+OworCQkJYWN0aXZlLWxvdzsKKwkJCWxhYmVsID0gImdyZWVuOnBvd2VyIjsKKwkJCWRlZmF1bHQtc3RhdGUgPSAib24iOworCQl9OworCX07CisKK1NjZW5hcmlvIDUgOiBCQ002MzYyIHdpdGggRVBIWSBMRURzIHN3YXBwZWQKKwlsZWRzMDogbGVkLWNvbnRyb2xsZXJAMTAwMDE5MDAgeworCQljb21wYXRpYmxlID0gImJyY20sYmNtNjMyOC1sZWRzIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQlyZWcgPSA8MHgxMDAwMTkwMCAweDI0PjsKKworCQl1c2JAMCB7CisJCQlyZWcgPSA8MD47CisJCQlicmNtLGhhcmR3YXJlLWNvbnRyb2xsZWQ7CisJCQlicmNtLGxpbmstc2lnbmFsLXNvdXJjZXMgPSA8MD47CisJCQlicmNtLGFjdGl2aXR5LXNpZ25hbC1zb3VyY2VzID0gPDAgMT47CisJCQkvKiBVU0IgbGluay9hY3QgYW5kIElORVQgYWN0IHJvdXRlZCB0byBVU0IgTEVEICovCisJCX07CisJCWVwaHkwQDQgeworCQkJcmVnID0gPDQ+OworCQkJYnJjbSxoYXJkd2FyZS1jb250cm9sbGVkOworCQkJYnJjbSxsaW5rLXNpZ25hbC1zb3VyY2VzID0gPDc+OworCQkJLyogRVBIWTMgbGluayByb3V0ZWQgdG8gRVBIWTAgTEVEICovCisJCX07CisJCWVwaHkxQDUgeworCQkJcmVnID0gPDU+OworCQkJYnJjbSxoYXJkd2FyZS1jb250cm9sbGVkOworCQkJYnJjbSxsaW5rLXNpZ25hbC1zb3VyY2VzID0gPDY+OworCQkJLyogRVBIWTIgbGluayByb3V0ZWQgdG8gRVBIWTEgTEVEICovCisJCX07CisJCWVwaHkyQDYgeworCQkJcmVnID0gPDY+OworCQkJYnJjbSxoYXJkd2FyZS1jb250cm9sbGVkOworCQkJYnJjbSxsaW5rLXNpZ25hbC1zb3VyY2VzID0gPDU+OworCQkJLyogRVBIWTEgbGluayByb3V0ZWQgdG8gRVBIWTIgTEVEICovCisJCX07CisJCWVwaHkzQDcgeworCQkJcmVnID0gPDc+OworCQkJYnJjbSxoYXJkd2FyZS1jb250cm9sbGVkOworCQkJYnJjbSxsaW5rLXNpZ25hbC1zb3VyY2VzID0gPDQ+OworCQkJLyogRVBIWTAgbGluayByb3V0ZWQgdG8gRVBIWTMgTEVEICovCisJCX07CisJCXBvd2VyX2dyZWVuQDIwIHsKKwkJCXJlZyA9IDwyMD47CisJCQlhY3RpdmUtbG93OworCQkJbGFiZWwgPSAiZ3JlZW46cG93ZXIiOworCQkJZGVmYXVsdC1zdGF0ZSA9ICJvbiI7CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2xlZHMtYmNtNjM1OC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9sZWRzLWJjbTYzNTgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyMmE1NWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9sZWRzLWJjbTYzNTgudHh0CkBAIC0wLDAgKzEsMTQ1IEBACitMRURzIGNvbm5lY3RlZCB0byBCcm9hZGNvbSBCQ002MzU4IGNvbnRyb2xsZXIKKworVGhpcyBjb250cm9sbGVyIGlzIHByZXNlbnQgb24gQkNNNjM1OCBhbmQgQkNNNjM2OC4KK0luIHRoZXNlIFNvQ3MgdGhlcmUgYXJlIFNlcmlhbCBMRURzIChMRURzIGNvbm5lY3RlZCB0byBhIDc0eDE2NCBjb250cm9sbGVyKSwKK3doaWNoIGNhbiBlaXRoZXIgYmUgY29udHJvbGxlZCBieSBzb2Z0d2FyZSAoZXhwb3J0aW5nIHRoZSA3NHgxNjQgYXMgc3BpLWdwaW8uCitTZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby03NHgxNjQudHh0KSwgb3IKK2J5IGhhcmR3YXJlIHVzaW5nIHRoaXMgZHJpdmVyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImJyY20sYmNtNjM1OC1sZWRzIi4KKyAgLSAjYWRkcmVzcy1jZWxscyA6IG11c3QgYmUgMS4KKyAgLSAjc2l6ZS1jZWxscyA6IG11c3QgYmUgMC4KKyAgLSByZWcgOiBCQ002MzU4IExFRCBjb250cm9sbGVyIGFkZHJlc3MgYW5kIHNpemUuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgIC0gYnJjbSxjbGstZGl2IDogU0NLIHNpZ25hbCBkaXZpZGVyLiBQb3NzaWJsZSB2YWx1ZXMgYXJlIDEsIDIsIDQgYW5kIDguCisgICAgRGVmYXVsdCA6IDEKKyAgLSBicmNtLGNsay1kYXQtbG93IDogQm9vbGVhbiwgbWFrZXMgY2xvY2sgYW5kIGRhdGEgc2lnbmFscyBhY3RpdmUgbG93LgorICAgIERlZmF1bHQgOiBmYWxzZQorCitFYWNoIExFRCBpcyByZXByZXNlbnRlZCBhcyBhIHN1Yi1ub2RlIG9mIHRoZSBicmNtLGJjbTYzNTgtbGVkcyBkZXZpY2UuCisKK0xFRCBzdWItbm9kZSByZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIHJlZyA6IExFRCBwaW4gbnVtYmVyIChvbmx5IExFRHMgMCB0byAzMSBhcmUgdmFsaWQpLgorCitMRUQgc3ViLW5vZGUgb3B0aW9uYWwgcHJvcGVydGllczoKKyAgLSBsYWJlbCA6IHNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9jb21tb24udHh0CisgIC0gYWN0aXZlLWxvdyA6IEJvb2xlYW4sIG1ha2VzIExFRCBhY3RpdmUgbG93LgorICAgIERlZmF1bHQgOiBmYWxzZQorICAtIGRlZmF1bHQtc3RhdGUgOiBzZWUKKyAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9sZWRzLWdwaW8udHh0CisgIC0gbGludXgsZGVmYXVsdC10cmlnZ2VyIDogc2VlCisgICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvY29tbW9uLnR4dAorCitFeGFtcGxlczoKK1NjZW5hcmlvIDEgOiBCQ002MzU4CisJbGVkczA6IGxlZC1jb250cm9sbGVyQGZmZmUwMGQwIHsKKwkJY29tcGF0aWJsZSA9ICJicmNtLGJjbTYzNTgtbGVkcyI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJcmVnID0gPDB4ZmZmZTAwZDAgMHg4PjsKKworCQlhbGFybV93aGl0ZSB7CisJCQlyZWcgPSA8MD47CisJCQlhY3RpdmUtbG93OworCQkJbGFiZWwgPSAid2hpdGU6YWxhcm0iOworCQl9OworCQl0dl93aGl0ZSB7CisJCQlyZWcgPSA8Mj47CisJCQlhY3RpdmUtbG93OworCQkJbGFiZWwgPSAid2hpdGU6dHYiOworCQl9OworCQl0ZWxfd2hpdGUgeworCQkJcmVnID0gPDM+OworCQkJYWN0aXZlLWxvdzsKKwkJCWxhYmVsID0gIndoaXRlOnRlbCI7CisJCX07CisJCWFkc2xfd2hpdGUgeworCQkJcmVnID0gPDQ+OworCQkJYWN0aXZlLWxvdzsKKwkJCWxhYmVsID0gIndoaXRlOmFkc2wiOworCQl9OworCX07CisKK1NjZW5hcmlvIDIgOiBCQ002MzY4CisJbGVkczA6IGxlZC1jb250cm9sbGVyQDEwMDAwMGQwIHsKKwkJY29tcGF0aWJsZSA9ICJicmNtLGJjbTYzNTgtbGVkcyI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJcmVnID0gPDB4MTAwMDAwZDAgMHg4PjsKKwkJYnJjbSxwb2wtbG93OworCQlicmNtLGNsay1kaXYgPSA8ND47CisKKwkJcG93ZXJfcmVkIHsKKwkJCXJlZyA9IDwwPjsKKwkJCWFjdGl2ZS1sb3c7CisJCQlsYWJlbCA9ICJyZWQ6cG93ZXIiOworCQl9OworCQlwb3dlcl9ncmVlbiB7CisJCQlyZWcgPSA8MT47CisJCQlhY3RpdmUtbG93OworCQkJbGFiZWwgPSAiZ3JlZW46cG93ZXIiOworCQkJZGVmYXVsdC1zdGF0ZSA9ICJvbiI7CisJCX07CisJCXBvd2VyX2JsdWUgeworCQkJcmVnID0gPDI+OworCQkJbGFiZWwgPSAiYmx1ZTpwb3dlciI7CisJCX07CisJCWJyb2FkYmFuZF9yZWQgeworCQkJcmVnID0gPDM+OworCQkJYWN0aXZlLWxvdzsKKwkJCWxhYmVsID0gInJlZDpicm9hZGJhbmQiOworCQl9OworCQlicm9hZGJhbmRfZ3JlZW4geworCQkJcmVnID0gPDQ+OworCQkJbGFiZWwgPSAiZ3JlZW46YnJvYWRiYW5kIjsKKwkJfTsKKwkJYnJvYWRiYW5kX2JsdWUgeworCQkJcmVnID0gPDU+OworCQkJYWN0aXZlLWxvdzsKKwkJCWxhYmVsID0gImJsdWU6YnJvYWRiYW5kIjsKKwkJfTsKKwkJd2lyZWxlc3NfcmVkIHsKKwkJCXJlZyA9IDw2PjsKKwkJCWFjdGl2ZS1sb3c7CisJCQlsYWJlbCA9ICJyZWQ6d2lyZWxlc3MiOworCQl9OworCQl3aXJlbGVzc19ncmVlbiB7CisJCQlyZWcgPSA8Nz47CisJCQlhY3RpdmUtbG93OworCQkJbGFiZWwgPSAiZ3JlZW46d2lyZWxlc3MiOworCQl9OworCQl3aXJlbGVzc19ibHVlIHsKKwkJCXJlZyA9IDw4PjsKKwkJCWxhYmVsID0gImJsdWU6d2lyZWxlc3MiOworCQl9OworCQlwaG9uZV9yZWQgeworCQkJcmVnID0gPDk+OworCQkJYWN0aXZlLWxvdzsKKwkJCWxhYmVsID0gInJlZDpwaG9uZSI7CisJCX07CisJCXBob25lX2dyZWVuIHsKKwkJCXJlZyA9IDwxMD47CisJCQlhY3RpdmUtbG93OworCQkJbGFiZWwgPSAiZ3JlZW46cGhvbmUiOworCQl9OworCQlwaG9uZV9ibHVlIHsKKwkJCXJlZyA9IDwxMT47CisJCQlsYWJlbCA9ICJibHVlOnBob25lIjsKKwkJfTsKKwkJdXBncmFkaW5nX3JlZCB7CisJCQlyZWcgPSA8MTI+OworCQkJYWN0aXZlLWxvdzsKKwkJCWxhYmVsID0gInJlZDp1cGdyYWRpbmciOworCQl9OworCQl1cGdyYWRpbmdfZ3JlZW4geworCQkJcmVnID0gPDEzPjsKKwkJCWFjdGl2ZS1sb3c7CisJCQlsYWJlbCA9ICJncmVlbjp1cGdyYWRpbmciOworCQl9OworCQl1cGdyYWRpbmdfYmx1ZSB7CisJCQlyZWcgPSA8MTQ+OworCQkJbGFiZWwgPSAiYmx1ZTp1cGdyYWRpbmciOworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9sZWRzLWdwaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvbGVkcy1ncGlvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWExZWJmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvbGVkcy1ncGlvLnR4dApAQCAtMCwwICsxLDY2IEBACitMRURzIGNvbm5lY3RlZCB0byBHUElPIGxpbmVzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImdwaW8tbGVkcyIuCisKK0VhY2ggTEVEIGlzIHJlcHJlc2VudGVkIGFzIGEgc3ViLW5vZGUgb2YgdGhlIGdwaW8tbGVkcyBkZXZpY2UuICBFYWNoCitub2RlJ3MgbmFtZSByZXByZXNlbnRzIHRoZSBuYW1lIG9mIHRoZSBjb3JyZXNwb25kaW5nIExFRC4KKworTEVEIHN1Yi1ub2RlIHByb3BlcnRpZXM6CistIGdwaW9zIDogIFNob3VsZCBzcGVjaWZ5IHRoZSBMRUQncyBHUElPLCBzZWUgImdwaW9zIHByb3BlcnR5IiBpbgorICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLnR4dC4gIEFjdGl2ZSBsb3cgTEVEcyBzaG91bGQgYmUKKyAgaW5kaWNhdGVkIHVzaW5nIGZsYWdzIGluIHRoZSBHUElPIHNwZWNpZmllci4KKy0gbGFiZWwgOiAgKG9wdGlvbmFsKQorICBzZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvY29tbW9uLnR4dAorLSBsaW51eCxkZWZhdWx0LXRyaWdnZXIgOiAgKG9wdGlvbmFsKQorICBzZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvY29tbW9uLnR4dAorLSBkZWZhdWx0LXN0YXRlOiAgKG9wdGlvbmFsKSBUaGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgTEVELiAgVmFsaWQKKyAgdmFsdWVzIGFyZSAib24iLCAib2ZmIiwgYW5kICJrZWVwIi4gIElmIHRoZSBMRUQgaXMgYWxyZWFkeSBvbiBvciBvZmYKKyAgYW5kIHRoZSBkZWZhdWx0LXN0YXRlIHByb3BlcnR5IGlzIHNldCB0aGUgdG8gc2FtZSB2YWx1ZSwgdGhlbiBubworICBnbGl0Y2ggc2hvdWxkIGJlIHByb2R1Y2VkIHdoZXJlIHRoZSBMRUQgbW9tZW50YXJpbHkgdHVybnMgb2ZmIChvcgorICBvbikuICBUaGUgImtlZXAiIHNldHRpbmcgd2lsbCBrZWVwIHRoZSBMRUQgYXQgd2hhdGV2ZXIgaXRzIGN1cnJlbnQKKyAgc3RhdGUgaXMsIHdpdGhvdXQgcHJvZHVjaW5nIGEgZ2xpdGNoLiAgVGhlIGRlZmF1bHQgaXMgb2ZmIGlmIHRoaXMKKyAgcHJvcGVydHkgaXMgbm90IHByZXNlbnQuCistIHJldGFpbi1zdGF0ZS1zdXNwZW5kZWQ6IChvcHRpb25hbCkgVGhlIHN1c3BlbmQgc3RhdGUgY2FuIGJlIHJldGFpbmVkLlN1Y2gKKyAgYXMgY2hhcmdlLWxlZCBncGlvLgorCitFeGFtcGxlczoKKworI2luY2x1ZGUgPGR0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oPgorCitsZWRzIHsKKwljb21wYXRpYmxlID0gImdwaW8tbGVkcyI7CisJaGRkIHsKKwkJbGFiZWwgPSAiSURFIEFjdGl2aXR5IjsKKwkJZ3Bpb3MgPSA8Jm1jdV9waW8gMCBHUElPX0FDVElWRV9MT1c+OworCQlsaW51eCxkZWZhdWx0LXRyaWdnZXIgPSAiaWRlLWRpc2siOworCX07CisKKwlmYXVsdCB7CisJCWdwaW9zID0gPCZtY3VfcGlvIDEgR1BJT19BQ1RJVkVfSElHSD47CisJCS8qIEtlZXAgTEVEIG9uIGlmIEJJT1MgZGV0ZWN0ZWQgaGFyZHdhcmUgZmF1bHQgKi8KKwkJZGVmYXVsdC1zdGF0ZSA9ICJrZWVwIjsKKwl9OworfTsKKworcnVuLWNvbnRyb2wgeworCWNvbXBhdGlibGUgPSAiZ3Bpby1sZWRzIjsKKwlyZWQgeworCQlncGlvcyA9IDwmbXBjODU3MiA2IEdQSU9fQUNUSVZFX0hJR0g+OworCQlkZWZhdWx0LXN0YXRlID0gIm9mZiI7CisJfTsKKwlncmVlbiB7CisJCWdwaW9zID0gPCZtcGM4NTcyIDcgR1BJT19BQ1RJVkVfSElHSD47CisJCWRlZmF1bHQtc3RhdGUgPSAib24iOworCX07Cit9OworCitsZWRzIHsKKwljb21wYXRpYmxlID0gImdwaW8tbGVkcyI7CisKKwljaGFyZ2VyLWxlZCB7CisJCWdwaW9zID0gPCZncGlvMSAyIEdQSU9fQUNUSVZFX0hJR0g+OworCQlsaW51eCxkZWZhdWx0LXRyaWdnZXIgPSAibWF4ODkwMy1jaGFyZ2VyLWNoYXJnaW5nIjsKKwkJcmV0YWluLXN0YXRlLXN1c3BlbmRlZDsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2xlZHMta3RkMjY5Mi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9sZWRzLWt0ZDI2OTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MzczNzQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9sZWRzLWt0ZDI2OTIudHh0CkBAIC0wLDAgKzEsNTAgQEAKKyogS2luZXRpYyBUZWNobm9sb2dpZXMgLSBLVEQyNjkyIEZsYXNoIExFRCBEcml2ZXIKKworS1REMjY5MiBpcyB0aGUgaWRlYWwgcG93ZXIgc29sdXRpb24gZm9yIGhpZ2gtcG93ZXIgZmxhc2ggTEVEcy4KK0l0IHVzZXMgRXhwcmVzc1dpcmUgc2luZ2xlLXdpcmUgcHJvZ3JhbW1pbmcgZm9yIG1heGltdW0gZmxleGliaWxpdHkuCisKK1RoZSBFeHByZXNzV2lyZSBpbnRlcmZhY2UgdGhyb3VnaCBDVFJMIHBpbiBjYW4gY29udHJvbCBMRUQgb24vb2ZmIGFuZAorZW5hYmxlL2Rpc2FibGUgdGhlIElDLCBNb3ZpZShtYXggMS8zIG9mIEZsYXNoIGN1cnJlbnQpIC8gRmxhc2ggbW9kZSBjdXJyZW50LAorRmxhc2ggdGltZW91dCwgTFZQKGxvdyB2b2x0YWdlIHByb3RlY3Rpb24pLgorCitBbHNvLCBXaGVuIHRoZSBBVVggcGluIGlzIHB1bGxlZCBoaWdoIHdoaWxlIENUUkwgcGluIGlzIGhpZ2gsCitMRUQgY3VycmVudCB3aWxsIGJlIHJhbXBlZCB1cCB0byB0aGUgZmxhc2gtbW9kZSBjdXJyZW50IGxldmVsLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJraW5ldGljLGt0ZDI2OTIiLgorLSBjdHJsLWdwaW9zIDogU3BlY2lmaWVyIG9mIHRoZSBHUElPIGNvbm5lY3RlZCB0byBDVFJMIHBpbi4KKy0gYXV4LWdwaW9zIDogU3BlY2lmaWVyIG9mIHRoZSBHUElPIGNvbm5lY3RlZCB0byBBVVggcGluLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSB2aW4tc3VwcGx5IDogInZpbiIgTEVEIHN1cHBseSAoMi43ViB0byA1LjVWKS4KKyAgU2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvcmVndWxhdG9yLnR4dAorCitBIGRpc2NyZXRlIExFRCBlbGVtZW50IGNvbm5lY3RlZCB0byB0aGUgZGV2aWNlIG11c3QgYmUgcmVwcmVzZW50ZWQgYnkgYSBjaGlsZAorbm9kZSAtIFNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9jb21tb24udHh0CisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIGZsYXNoIExFRCBjaGlsZCBub2RlczoKKyAgU2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2NvbW1vbi50eHQKKy0gbGVkLW1heC1taWNyb2FtcCA6IE1pbmltdW0gVGhyZXNob2xkIGZvciBUaW1lciBwcm90ZWN0aW9uCisgIGlzIGRlZmluZWQgaW50ZXJuYWxseSAoTWF4aW11bSAzMDBtQSkuCistIGZsYXNoLW1heC1taWNyb2FtcCA6IEZsYXNoIExFRCBtYXhpbXVtIGN1cnJlbnQKKyAgRm9ybXVsYSA6IEkobUEpID0gMTUwMDAgLyBSc2V0LgorLSBmbGFzaC1tYXgtdGltZW91dC11cyA6IEZsYXNoIExFRCBtYXhpbXVtIHRpbWVvdXQuCisKK09wdGlvbmFsIHByb3BlcnRpZXMgZm9yIGZsYXNoIExFRCBjaGlsZCBub2RlczoKKy0gbGFiZWwgOiBTZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvY29tbW9uLnR4dAorCitFeGFtcGxlOgorCitrdGQyNjkyIHsKKwljb21wYXRpYmxlID0gImtpbmV0aWMsa3RkMjY5MiI7CisJY3RybC1ncGlvcyA9IDwmZ3BjMCAxIDA+OworCWF1eC1ncGlvcyA9IDwmZ3BjMCAyIDA+OworCXZpbi1zdXBwbHkgPSA8JnZiYXQ+OworCisJZmxhc2gtbGVkIHsKKwkJbGFiZWwgPSAia3RkMjY5Mi1mbGFzaCI7CisJCWxlZC1tYXgtbWljcm9hbXAgPSA8MzAwMDAwPjsKKwkJZmxhc2gtbWF4LW1pY3JvYW1wID0gPDE1MDAwMDA+OworCQlmbGFzaC1tYXgtdGltZW91dC11cyA9IDwxODM1MDAwPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2xlZHMtbHA1NXh4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2xlZHMtbHA1NXh4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjY2YTQxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvbGVkcy1scDU1eHgudHh0CkBAIC0wLDAgKzEsMjI4IEBACitCaW5kaW5nIGZvciBUSS9OYXRpb25hbCBTZW1pY29uZHVjdG9yIExQNTV4eCBMZWQgRHJpdmVycworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBvbmUgb2YKKwluYXRpb25hbCxscDU1MjEKKwluYXRpb25hbCxscDU1MjMKKwl0aSxscDU1MjMxCisJdGksbHA1NTYyCisJdGksbHA4NTAxCisKKy0gcmVnOiBJMkMgc2xhdmUgYWRkcmVzcworLSBjbG9jay1tb2RlOiBJbnB1dCBjbG9jayBtb2RlLCAoMDogYXV0b21vZGUsIDE6IGludGVybmFsLCAyOiBleHRlcm5hbCkKKworRWFjaCBjaGlsZCBoYXMgb3duIHNwZWNpZmljIGN1cnJlbnQgc2V0dGluZ3MKKy0gbGVkLWN1cjogQ3VycmVudCBzZXR0aW5nIGF0IGVhY2ggbGVkIGNoYW5uZWwgKG1BIHgxMCwgMCBpZiBsZWQgaXMgbm90IGNvbm5lY3RlZCkKKy0gbWF4LWN1cjogTWF4aW11biBjdXJyZW50IGF0IGVhY2ggbGVkIGNoYW5uZWwuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGVuYWJsZS1ncGlvOiBHUElPIGF0dGFjaGVkIHRvIHRoZSBjaGlwJ3MgZW5hYmxlIHBpbgorLSBsYWJlbDogVXNlZCBmb3IgbmFtaW5nIExFRHMKKy0gcHdyLXNlbDogTFA4NTAxIHNwZWNpZmljIHByb3BlcnR5LiBQb3dlciBzZWxlY3Rpb24gZm9yIG91dHB1dCBjaGFubmVscy4KKyAgICAgICAgIDA6IEQxfjkgYXJlIGNvbm5lY3RlZCB0byBWREQKKyAgICAgICAgIDE6IEQxfjYgd2l0aCBWREQsIEQ3fjkgd2l0aCBWT1VUCisgICAgICAgICAyOiBEMX42IHdpdGggVk9VVCwgRDd+OSB3aXRoIFZERAorICAgICAgICAgMzogRDF+OSBhcmUgY29ubmVjdGVkIHRvIFZPVVQKKworQWx0ZXJuYXRpdmVseSwgZWFjaCBjaGlsZCBjYW4gaGF2ZSBhIHNwZWNpZmljIGNoYW5uZWwgbmFtZSBhbmQgdHJpZ2dlcjoKKy0gY2hhbi1uYW1lIChvcHRpb25hbCk6IG5hbWUgb2YgY2hhbm5lbAorLSBsaW51eCxkZWZhdWx0LXRyaWdnZXIgKG9wdGlvbmFsKTogc2VlCisgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2NvbW1vbi50eHQKKworZXhhbXBsZSAxKSBMUDU1MjEKKzMgTEVEIGNoYW5uZWxzLCBleHRlcm5hbCBjbG9jayB1c2VkLiBDaGFubmVsIG5hbWVzIGFyZSAnbHA1NTIxX3ByaTpjaGFubmVsMCcsCisnbHA1NTIxX3ByaTpjaGFubmVsMScgYW5kICdscDU1MjFfcHJpOmNoYW5uZWwyJywgd2l0aCBhIGhlYXJ0YmVhdCB0cmlnZ2VyCitvbiBjaGFubmVsIDAuCisKK2xwNTUyMUAzMiB7CisJY29tcGF0aWJsZSA9ICJuYXRpb25hbCxscDU1MjEiOworCXJlZyA9IDwweDMyPjsKKwlsYWJlbCA9ICJscDU1MjFfcHJpIjsKKwljbG9jay1tb2RlID0gL2JpdHMvIDggPDI+OworCisJY2hhbjAgeworCQlsZWQtY3VyID0gL2JpdHMvIDggPDB4MmY+OworCQltYXgtY3VyID0gL2JpdHMvIDggPDB4NWY+OworCQlsaW51eCxkZWZhdWx0LXRyaWdnZXIgPSAiaGVhcnRiZWF0IjsKKwl9OworCisJY2hhbjEgeworCQlsZWQtY3VyID0gL2JpdHMvIDggPDB4MmY+OworCQltYXgtY3VyID0gL2JpdHMvIDggPDB4NWY+OworCX07CisKKwljaGFuMiB7CisJCWxlZC1jdXIgPSAvYml0cy8gOCA8MHgyZj47CisJCW1heC1jdXIgPSAvYml0cy8gOCA8MHg1Zj47CisJfTsKK307CisKK2V4YW1wbGUgMikgTFA1NTIzCis5IExFRCBjaGFubmVscyB3aXRoIHNwZWNpZmljIG5hbWUuIEludGVybmFsIGNsb2NrIHVzZWQuCitUaGUgSTJDIHNsYXZlIGFkZHJlc3MgaXMgY29uZmlndXJhYmxlIHdpdGggQVNFTDEgYW5kIEFTRUwwIHBpbnMuCitBdmFpbGFibGUgYWRkcmVzc2VzIGFyZSAzMi8zMy8zNC8zNWguCisKK0FTRUwxICAgIEFTRUwwICAgIEFkZHJlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBHTkQgICAgICBHTkQgICAgICAgMzJoCisgR05EICAgICAgVkVOICAgICAgIDMzaAorIFZFTiAgICAgIEdORCAgICAgICAzNGgKKyBWRU4gICAgICBWRU4gICAgICAgMzVoCisKK2xwNTUyM0AzMiB7CisJY29tcGF0aWJsZSA9ICJuYXRpb25hbCxscDU1MjMiOworCXJlZyA9IDwweDMyPjsKKwljbG9jay1tb2RlID0gL2JpdHMvIDggPDE+OworCisJY2hhbjAgeworCQljaGFuLW5hbWUgPSAiZDEiOworCQlsZWQtY3VyID0gL2JpdHMvIDggPDB4MTQ+OworCQltYXgtY3VyID0gL2JpdHMvIDggPDB4MjA+OworCX07CisKKwljaGFuMSB7CisJCWNoYW4tbmFtZSA9ICJkMiI7CisJCWxlZC1jdXIgPSAvYml0cy8gOCA8MHgxND47CisJCW1heC1jdXIgPSAvYml0cy8gOCA8MHgyMD47CisJfTsKKworCWNoYW4yIHsKKwkJY2hhbi1uYW1lID0gImQzIjsKKwkJbGVkLWN1ciA9IC9iaXRzLyA4IDwweDE0PjsKKwkJbWF4LWN1ciA9IC9iaXRzLyA4IDwweDIwPjsKKwl9OworCisJY2hhbjMgeworCQljaGFuLW5hbWUgPSAiZDQiOworCQlsZWQtY3VyID0gL2JpdHMvIDggPDB4MTQ+OworCQltYXgtY3VyID0gL2JpdHMvIDggPDB4MjA+OworCX07CisKKwljaGFuNCB7CisJCWNoYW4tbmFtZSA9ICJkNSI7CisJCWxlZC1jdXIgPSAvYml0cy8gOCA8MHgxND47CisJCW1heC1jdXIgPSAvYml0cy8gOCA8MHgyMD47CisJfTsKKworCWNoYW41IHsKKwkJY2hhbi1uYW1lID0gImQ2IjsKKwkJbGVkLWN1ciA9IC9iaXRzLyA4IDwweDE0PjsKKwkJbWF4LWN1ciA9IC9iaXRzLyA4IDwweDIwPjsKKwl9OworCisJY2hhbjYgeworCQljaGFuLW5hbWUgPSAiZDciOworCQlsZWQtY3VyID0gL2JpdHMvIDggPDB4MTQ+OworCQltYXgtY3VyID0gL2JpdHMvIDggPDB4MjA+OworCX07CisKKwljaGFuNyB7CisJCWNoYW4tbmFtZSA9ICJkOCI7CisJCWxlZC1jdXIgPSAvYml0cy8gOCA8MHgxND47CisJCW1heC1jdXIgPSAvYml0cy8gOCA8MHgyMD47CisJfTsKKworCWNoYW44IHsKKwkJY2hhbi1uYW1lID0gImQ5IjsKKwkJbGVkLWN1ciA9IC9iaXRzLyA4IDwweDE0PjsKKwkJbWF4LWN1ciA9IC9iaXRzLyA4IDwweDIwPjsKKwl9OworfTsKKworZXhhbXBsZSAzKSBMUDU1NjIKKzQgY2hhbm5lbHMgYXJlIGRlZmluZWQuCisKK2xwNTU2MkAzMCB7CisJY29tcGF0aWJsZSA9ICJ0aSxscDU1NjIiOworCXJlZyA9IDwweDMwPjsKKwljbG9jay1tb2RlID0gL2JpdHMvOCA8Mj47CisKKwljaGFuMCB7CisJCWNoYW4tbmFtZSA9ICJSIjsKKwkJbGVkLWN1ciA9IC9iaXRzLyA4IDwweDIwPjsKKwkJbWF4LWN1ciA9IC9iaXRzLyA4IDwweDYwPjsKKwl9OworCisJY2hhbjEgeworCQljaGFuLW5hbWUgPSAiRyI7CisJCWxlZC1jdXIgPSAvYml0cy8gOCA8MHgyMD47CisJCW1heC1jdXIgPSAvYml0cy8gOCA8MHg2MD47CisJfTsKKworCWNoYW4yIHsKKwkJY2hhbi1uYW1lID0gIkIiOworCQlsZWQtY3VyID0gL2JpdHMvIDggPDB4MjA+OworCQltYXgtY3VyID0gL2JpdHMvIDggPDB4NjA+OworCX07CisKKwljaGFuMyB7CisJCWNoYW4tbmFtZSA9ICJXIjsKKwkJbGVkLWN1ciA9IC9iaXRzLyA4IDwweDIwPjsKKwkJbWF4LWN1ciA9IC9iaXRzLyA4IDwweDYwPjsKKwl9OworfTsKKworZXhhbXBsZSA0KSBMUDg1MDEKKzkgY2hhbm5lbHMgYXJlIGRlZmluZWQuIFRoZSAncHdyLXNlbCcgaXMgTFA4NTAxIHNwZWNpZmljIHByb3BlcnR5LgorT3RoZXJzIGFyZSBzYW1lIGFzIExQNTUyMy4KKworbHA4NTAxQDMyIHsKKwljb21wYXRpYmxlID0gInRpLGxwODUwMSI7CisJcmVnID0gPDB4MzI+OworCWNsb2NrLW1vZGUgPSAvYml0cy8gOCA8Mj47CisJcHdyLXNlbCA9IC9iaXRzLyA4IDwzPjsJLyogRDF+OSBjb25uZWN0ZWQgdG8gVk9VVCAqLworCisJY2hhbjAgeworCQljaGFuLW5hbWUgPSAiZDEiOworCQlsZWQtY3VyID0gL2JpdHMvIDggPDB4MTQ+OworCQltYXgtY3VyID0gL2JpdHMvIDggPDB4MjA+OworCX07CisKKwljaGFuMSB7CisJCWNoYW4tbmFtZSA9ICJkMiI7CisJCWxlZC1jdXIgPSAvYml0cy8gOCA8MHgxND47CisJCW1heC1jdXIgPSAvYml0cy8gOCA8MHgyMD47CisJfTsKKworCWNoYW4yIHsKKwkJY2hhbi1uYW1lID0gImQzIjsKKwkJbGVkLWN1ciA9IC9iaXRzLyA4IDwweDE0PjsKKwkJbWF4LWN1ciA9IC9iaXRzLyA4IDwweDIwPjsKKwl9OworCisJY2hhbjMgeworCQljaGFuLW5hbWUgPSAiZDQiOworCQlsZWQtY3VyID0gL2JpdHMvIDggPDB4MTQ+OworCQltYXgtY3VyID0gL2JpdHMvIDggPDB4MjA+OworCX07CisKKwljaGFuNCB7CisJCWNoYW4tbmFtZSA9ICJkNSI7CisJCWxlZC1jdXIgPSAvYml0cy8gOCA8MHgxND47CisJCW1heC1jdXIgPSAvYml0cy8gOCA8MHgyMD47CisJfTsKKworCWNoYW41IHsKKwkJY2hhbi1uYW1lID0gImQ2IjsKKwkJbGVkLWN1ciA9IC9iaXRzLyA4IDwweDE0PjsKKwkJbWF4LWN1ciA9IC9iaXRzLyA4IDwweDIwPjsKKwl9OworCisJY2hhbjYgeworCQljaGFuLW5hbWUgPSAiZDciOworCQlsZWQtY3VyID0gL2JpdHMvIDggPDB4MTQ+OworCQltYXgtY3VyID0gL2JpdHMvIDggPDB4MjA+OworCX07CisKKwljaGFuNyB7CisJCWNoYW4tbmFtZSA9ICJkOCI7CisJCWxlZC1jdXIgPSAvYml0cy8gOCA8MHgxND47CisJCW1heC1jdXIgPSAvYml0cy8gOCA8MHgyMD47CisJfTsKKworCWNoYW44IHsKKwkJY2hhbi1uYW1lID0gImQ5IjsKKwkJbGVkLWN1ciA9IC9iaXRzLyA4IDwweDE0PjsKKwkJbWF4LWN1ciA9IC9iaXRzLyA4IDwweDIwPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2xlZHMtbHA4ODYwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2xlZHMtbHA4ODYwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWQzOGRkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvbGVkcy1scDg4NjAudHh0CkBAIC0wLDAgKzEsMjkgQEAKKyogVGV4YXMgSW5zdHJ1bWVudHMgLSBscDg4NjAgNC1DaGFubmVsIExFRCBEcml2ZXIKKworVGhlIExQODg2MC1RMSBpcyBhbiBoaWdoLWVmZmljaWVuY3kgTEVECitkcml2ZXIgd2l0aCBib29zdCBjb250cm9sbGVyLiBJdCBoYXMgNCBoaWdoLXByZWNpc2lvbgorY3VycmVudCBzaW5rcyB0aGF0IGNhbiBiZSBjb250cm9sbGVkIGJ5IGEgUFdNIGlucHV0CitzaWduYWwsIGEgU1BJL0kyQyBtYXN0ZXIsIG9yIGJvdGguCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisJLSBjb21wYXRpYmxlOgorCQkidGksbHA4ODYwIgorCS0gcmVnIC0gIEkyQyBzbGF2ZSBhZGRyZXNzCisJLSBsYWJlbCAtIFVzZWQgZm9yIG5hbWluZyBMRURzCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisJLSBlbmFibGUtZ3BpbyAtIGdwaW8gcGluIHRvIGVuYWJsZS9kaXNhYmxlIHRoZSBkZXZpY2UuCisJLSBzdXBwbHkgLSAidmxlZCIgLSBMRUQgc3VwcGx5CisKK0V4YW1wbGU6CisKK2xlZHM6IGxlZHNANiB7CisJY29tcGF0aWJsZSA9ICJ0aSxscDg4NjAiOworCXJlZyA9IDwweDJkPjsKKwlsYWJlbCA9ICJkaXNwbGF5X2NsdXN0ZXIiOworCWVuYWJsZS1ncGlvID0gPCZncGlvMSAyOCBHUElPX0FDVElWRV9ISUdIPjsKKwl2bGVkLXN1cHBseSA9IDwmdmJhdHQ+OworfQorCitGb3IgbW9yZSBwcm9kdWN0IGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgdGhlIGxpbmsgYmVsb3c6CitodHRwOi8vd3d3LnRpLmNvbS9wcm9kdWN0L2xwODg2MC1xMQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvbGVkcy1uZXR4YmlnLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2xlZHMtbmV0eGJpZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVmOTJhMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2xlZHMtbmV0eGJpZy50eHQKQEAgLTAsMCArMSw5MiBAQAorQmluZGluZyBmb3IgdGhlIENQTEQgTEVEcyAoR1BJTyBleHRlbnNpb24gYnVzKSBmb3VuZCBvbiBzb21lIExhQ2llL1NlYWdhdGUKK2JvYXJkcyAoRXhhbXBsZTogMkJpZy81QmlnIE5ldHdvcmsgdjIsIDJCaWcgTkFTKS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImxhY2llLG5ldHhiaWctbGVkcyIuCistIGdwaW8tZXh0OiBQaGFuZGxlIGZvciB0aGUgZ3Bpby1leHQgYnVzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSB0aW1lcnM6IFRpbWVyIGFycmF5LiBFYWNoIHRpbWVyIGVudHJ5IGlzIHJlcHJlc2VudGVkIGJ5IHRocmVlIGludGVnZXJzOgorICBNb2RlIChncGlvLWV4dCBidXMpLCBkZWxheV9vbiBhbmQgZGVsYXlfb2ZmLgorCitFYWNoIExFRCBpcyByZXByZXNlbnRlZCBhcyBhIHN1Yi1ub2RlIG9mIHRoZSBuZXR4YmlnLWxlZHMgZGV2aWNlLgorCitSZXF1aXJlZCBzdWItbm9kZSBwcm9wZXJ0aWVzOgorLSBtb2RlLWFkZHI6IE1vZGUgcmVnaXN0ZXIgYWRkcmVzcyBvbiBncGlvLWV4dCBidXMuCistIG1vZGUtdmFsOiBNb2RlIHRvIHZhbHVlIG1hcHBpbmcuIEVhY2ggZW50cnkgaXMgcmVwcmVzZW50ZWQgYnkgdHdvIGludGVnZXJzOgorICBBIG1vZGUgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIG9uIHRoZSBncGlvLWV4dCBidXMuCistIGJyaWdodC1hZGRyOiBCcmlnaHRuZXNzIHJlZ2lzdGVyIGFkZHJlc3Mgb24gZ3Bpby1leHQgYnVzLgorLSBtYXgtYnJpZ2h0bmVzczogTWF4aW11bSBicmlnaHRuZXNzIHZhbHVlLgorCitPcHRpb25hbCBzdWItbm9kZSBwcm9wZXJ0aWVzOgorLSBsYWJlbDogTmFtZSBmb3IgdGhpcyBMRUQuIElmIG9taXR0ZWQsIHRoZSBsYWJlbCBpcyB0YWtlbiBmcm9tIHRoZSBub2RlIG5hbWUuCistIGxpbnV4LGRlZmF1bHQtdHJpZ2dlcjogVHJpZ2dlciBhc3NpZ25lZCB0byB0aGUgTEVELgorCitFeGFtcGxlOgorCituZXR4YmlnLWxlZHMgeworCWNvbXBhdGlibGUgPSAibGFjaWUsbmV0eGJpZy1sZWRzIjsKKworCWdwaW8tZXh0ID0gJmdwaW9fZXh0OworCisJdGltZXJzID0gPE5FVFhCSUdfTEVEX1RJTUVSMSA1MDAgNTAwCisJCSAgTkVUWEJJR19MRURfVElNRVIyIDUwMCAxMDAwPjsKKworCWJsdWUtcG93ZXIgeworCQlsYWJlbCA9ICJuZXR4YmlnOmJsdWU6cG93ZXIiOworCQltb2RlLWFkZHIgPSA8MD47CisJCW1vZGUtdmFsID0gPE5FVFhCSUdfTEVEX09GRiAwCisJCQkgICAgTkVUWEJJR19MRURfT04gMQorCQkJICAgIE5FVFhCSUdfTEVEX1RJTUVSMSAzCisJCQkgICAgTkVUWEJJR19MRURfVElNRVIyIDc+OworCQlicmlnaHQtYWRkciA9IDwxPjsKKwkJbWF4LWJyaWdodG5lc3MgPSA8Nz47CisJfTsKKwlyZWQtcG93ZXIgeworCQlsYWJlbCA9ICJuZXR4YmlnOnJlZDpwb3dlciI7CisJCW1vZGUtYWRkciA9IDwwPjsKKwkJbW9kZS12YWwgPSA8TkVUWEJJR19MRURfT0ZGIDAKKwkJCSAgICBORVRYQklHX0xFRF9PTiAyCisJCQkgICAgTkVUWEJJR19MRURfVElNRVIxIDQ+OworCQlicmlnaHQtYWRkciA9IDwxPjsKKwkJbWF4LWJyaWdodG5lc3MgPSA8Nz47CisJfTsKKwlibHVlLXNhdGEwIHsKKwkJbGFiZWwgPSAibmV0eGJpZzpibHVlOnNhdGEwIjsKKwkJbW9kZS1hZGRyID0gPDM+OworCQltb2RlLXZhbCA9IDxORVRYQklHX0xFRF9PRkYgMAorCQkJICAgIE5FVFhCSUdfTEVEX09OIDcKKwkJCSAgICBORVRYQklHX0xFRF9TQVRBIDEKKwkJCSAgICBORVRYQklHX0xFRF9USU1FUjEgMz47CisJCWJyaWdodC1hZGRyID0gPDI+OworCQltYXgtYnJpZ2h0bmVzcyA9IDw3PjsKKwl9OworCXJlZC1zYXRhMCB7CisJCWxhYmVsID0gIm5ldHhiaWc6cmVkOnNhdGEwIjsKKwkJbW9kZS1hZGRyID0gPDM+OworCQltb2RlLXZhbCA9IDxORVRYQklHX0xFRF9PRkYgMAorCQkJICAgIE5FVFhCSUdfTEVEX09OIDIKKwkJCSAgICBORVRYQklHX0xFRF9USU1FUjEgND47CisJCWJyaWdodC1hZGRyID0gPDI+OworCQltYXgtYnJpZ2h0bmVzcyA9IDw3PjsKKwl9OworCWJsdWUtc2F0YTEgeworCQlsYWJlbCA9ICJuZXR4YmlnOmJsdWU6c2F0YTEiOworCQltb2RlLWFkZHIgPSA8ND47CisJCW1vZGUtdmFsID0gPE5FVFhCSUdfTEVEX09GRiAwCisJCQkgICAgTkVUWEJJR19MRURfT04gNworCQkJICAgIE5FVFhCSUdfTEVEX1NBVEEgMQorCQkJICAgIE5FVFhCSUdfTEVEX1RJTUVSMSAzPjsKKwkJYnJpZ2h0LWFkZHIgPSA8Mj47CisJCW1heC1icmlnaHRuZXNzID0gPDc+OworCX07CisJcmVkLXNhdGExIHsKKwkJbGFiZWwgPSAibmV0eGJpZzpyZWQ6c2F0YTEiOworCQltb2RlLWFkZHIgPSA8ND47CisJCW1vZGUtdmFsID0gPE5FVFhCSUdfTEVEX09GRiAwCisJCQkgICAgTkVUWEJJR19MRURfT04gMgorCQkJICAgIE5FVFhCSUdfTEVEX1RJTUVSMSA0PjsKKwkJYnJpZ2h0LWFkZHIgPSA8Mj47CisJCW1heC1icmlnaHRuZXNzID0gPDc+OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvbGVkcy1uczIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvbGVkcy1uczIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmODEyNTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9sZWRzLW5zMi50eHQKQEAgLTAsMCArMSwzNSBAQAorQmluZGluZyBmb3IgZHVhbC1HUElPIExFRCBmb3VuZCBvbiBOZXR3b3JrIFNwYWNlIHYyIChhbmQgcGFyZW50cykuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJsYWNpZSxuczItbGVkcyIuCisKK0VhY2ggTEVEIGlzIHJlcHJlc2VudGVkIGFzIGEgc3ViLW5vZGUgb2YgdGhlIG5zMi1sZWRzIGRldmljZS4KKworUmVxdWlyZWQgc3ViLW5vZGUgcHJvcGVydGllczoKKy0gY21kLWdwaW86IENvbW1hbmQgTEVEIEdQSU8uIFNlZSBPRiBkZXZpY2UtdHJlZSBHUElPIHNwZWNpZmljYXRpb24uCistIHNsb3ctZ3BpbzogU2xvdyBMRUQgR1BJTy4gU2VlIE9GIGRldmljZS10cmVlIEdQSU8gc3BlY2lmaWNhdGlvbi4KKy0gbW9kZXMtbWFwOiBBIG1hcHBpbmcgYmV0d2VlbiBMRUQgbW9kZXMgKG9mZiwgb24gb3IgU0FUQSBhY3Rpdml0eSBibGlua2luZykgYW5kCisgIHRoZSBjb3JyZXNwb25kaW5nIGNtZC1ncGlvL3Nsb3ctZ3BpbyB2YWx1ZXMuIEFsbCB0aGUgR1BJTyB2YWx1ZXMgY29tYmluYXRpb25zCisgIHNob3VsZCBiZSBnaXZlbiBpbiBvcmRlciB0byBhdm9pZCBoYXZpbmcgYW4gdW5rbm93biBtb2RlIGF0IGRyaXZlciBwcm9iZSB0aW1lLgorCitPcHRpb25hbCBzdWItbm9kZSBwcm9wZXJ0aWVzOgorLSBsYWJlbDogTmFtZSBmb3IgdGhpcyBMRUQuIElmIG9taXR0ZWQsIHRoZSBsYWJlbCBpcyB0YWtlbiBmcm9tIHRoZSBub2RlIG5hbWUuCistIGxpbnV4LGRlZmF1bHQtdHJpZ2dlcjogVHJpZ2dlciBhc3NpZ25lZCB0byB0aGUgTEVELgorCitFeGFtcGxlOgorCisjaW5jbHVkZSA8ZHQtYmluZGluZ3MvbGVkcy9sZWRzLW5zMi5oPgorCituczItbGVkcyB7CisJY29tcGF0aWJsZSA9ICJsYWNpZSxuczItbGVkcyI7CisKKwlibHVlLXNhdGEgeworCQlsYWJlbCA9ICJuczI6Ymx1ZTpzYXRhIjsKKwkJc2xvdy1ncGlvID0gPCZncGlvMCAyOSAwPjsKKwkJY21kLWdwaW8gPSA8JmdwaW8wIDMwIDA+OworCQltb2Rlcy1tYXAgPSA8TlNfVjJfTEVEX09GRiAgMCAxCisJCQkgICAgIE5TX1YyX0xFRF9PTiAgIDEgMAorCQkJICAgICBOU19WMl9MRURfT04gICAwIDAKKwkJCSAgICAgTlNfVjJfTEVEX1NBVEEgMSAxPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2xlZHMtcG93ZXJudi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9sZWRzLXBvd2VybnYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2NjU1NjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9sZWRzLXBvd2VybnYudHh0CkBAIC0wLDAgKzEsMjYgQEAKK0RldmljZSBUcmVlIGJpbmRpbmcgZm9yIExFRHMgb24gSUJNIFBvd2VyIFN5c3RlbXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAiaWJtLG9wYWwtdjMtbGVkIi4KKy0gbGVkLW1vZGUgICA6IFNob3VsZCBiZSAibGlnaHRwYXRoIiBvciAiZ3VpZGluZ2xpZ2h0Ii4KKworRWFjaCBsb2NhdGlvbiBjb2RlIG9mIEZSVS9FbmNsb3N1cmUgbXVzdCBiZSBleHByZXNzZWQgaW4gdGhlCitmb3JtIG9mIGEgc3ViLW5vZGUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHRoZSBzdWIgbm9kZXM6CistIGxlZC10eXBlcyA6IFN1cHBvcnRlZCBMRUQgdHlwZXMgKGF0dGVudGlvbi9pZGVudGlmeS9mYXVsdCkgcHJvdmlkZWQKKyAgICAgICAgICAgICAgaW4gdGhlIGZvcm0gb2Ygc3RyaW5nIGFycmF5LgorCitFeGFtcGxlOgorCitsZWRzIHsKKwljb21wYXRpYmxlID0gImlibSxvcGFsLXYzLWxlZCI7CisJbGVkLW1vZGUgPSAibGlnaHRwYXRoIjsKKworCVU3OEM5LjAwMS5SU1QwMDI3LVAxLUMxIHsKKwkJbGVkLXR5cGVzID0gImlkZW50aWZ5IiwgImZhdWx0IjsKKwl9OworCS4uLgorCS4uLgorfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2xlZHMtcHdtLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2xlZHMtcHdtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzY1ODNjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvbGVkcy1wd20udHh0CkBAIC0wLDAgKzEsNTAgQEAKK0xFRCBjb25uZWN0ZWQgdG8gUFdNCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgInB3bS1sZWRzIi4KKworRWFjaCBMRUQgaXMgcmVwcmVzZW50ZWQgYXMgYSBzdWItbm9kZSBvZiB0aGUgcHdtLWxlZHMgZGV2aWNlLiAgRWFjaAorbm9kZSdzIG5hbWUgcmVwcmVzZW50cyB0aGUgbmFtZSBvZiB0aGUgY29ycmVzcG9uZGluZyBMRUQuCisKK0xFRCBzdWItbm9kZSBwcm9wZXJ0aWVzOgorLSBwd21zIDogUFdNIHByb3BlcnR5IHRvIHBvaW50IHRvIHRoZSBQV00gZGV2aWNlIChwaGFuZGxlKS9wb3J0IChpZCkgYW5kIHRvCisgIHNwZWNpZnkgdGhlIHBlcmlvZCB0aW1lIHRvIGJlIHVzZWQ6IDwmcGhhbmRsZSBpZCBwZXJpb2RfbnM+OworLSBwd20tbmFtZXMgOiAob3B0aW9uYWwpIE5hbWUgdG8gYmUgdXNlZCBieSB0aGUgUFdNIHN1YnN5c3RlbSBmb3IgdGhlIFBXTSBkZXZpY2UKKyAgRm9yIHRoZSBwd21zIGFuZCBwd20tbmFtZXMgcHJvcGVydHkgcGxlYXNlIHJlZmVyIHRvOgorICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3B3bS50eHQKKy0gbWF4LWJyaWdodG5lc3MgOiBNYXhpbXVtIGJyaWdodG5lc3MgcG9zc2libGUgZm9yIHRoZSBMRUQKKy0gYWN0aXZlLWxvdyA6IChvcHRpb25hbCkgRm9yIFBXTXMgd2hlcmUgdGhlIExFRCBpcyB3aXJlZCB0byBzdXBwbHkKKyAgcmF0aGVyIHRoYW4gZ3JvdW5kLgorLSBsYWJlbCA6ICAob3B0aW9uYWwpCisgIHNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9jb21tb24udHh0CistIGxpbnV4LGRlZmF1bHQtdHJpZ2dlciA6ICAob3B0aW9uYWwpCisgIHNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9jb21tb24udHh0CisKK0V4YW1wbGU6CisKK3R3bF9wd206IHB3bSB7CisJLyogcHJvdmlkZXMgdHdvIFBXTXMgKGlkIDAsIDEgZm9yIFBXTTEgYW5kIFBXTTIpICovCisJY29tcGF0aWJsZSA9ICJ0aSx0d2w2MDMwLXB3bSI7CisJI3B3bS1jZWxscyA9IDwyPjsKK307CisKK3R3bF9wd21sZWQ6IHB3bWxlZCB7CisJLyogcHJvdmlkZXMgb25lIFBXTSAoaWQgMCBmb3IgQ2hhcmluZyBpbmRpY2F0b3IgTEVEKSAqLworCWNvbXBhdGlibGUgPSAidGksdHdsNjAzMC1wd21sZWQiOworCSNwd20tY2VsbHMgPSA8Mj47Cit9OworCitwd21sZWRzIHsKKwljb21wYXRpYmxlID0gInB3bS1sZWRzIjsKKwlrcGFkIHsKKwkJbGFiZWwgPSAib21hcDQ6OmtleXBhZCI7CisJCXB3bXMgPSA8JnR3bF9wd20gMCA3ODEyNTAwPjsKKwkJbWF4LWJyaWdodG5lc3MgPSA8MTI3PjsKKwl9OworCisJY2hhcmdpbmcgeworCQlsYWJlbCA9ICJvbWFwNDpncmVlbjpjaHJnIjsKKwkJcHdtcyA9IDwmdHdsX3B3bWxlZCAwIDc4MTI1MDA+OworCQltYXgtYnJpZ2h0bmVzcyA9IDwyNTU+OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvbGVkcy10bGM1OTF4eC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9sZWRzLXRsYzU5MXh4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmJiZjcwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvbGVkcy10bGM1OTF4eC50eHQKQEAgLTAsMCArMSw0MCBAQAorTEVEcyBjb25uZWN0ZWQgdG8gdGxjNTkxMTYgb3IgdGxjNTkxMDgKKworUmVxdWlyZWQgcHJvcGVydGllcworLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgInRpLHRsYzU5MTE2IiBvciAidGksdGxjNTkxMDgiCistICNhZGRyZXNzLWNlbGxzOiBtdXN0IGJlIDEKKy0gI3NpemUtY2VsbHM6IG11c3QgYmUgMAorLSByZWc6IHR5cGljYWxseSAweDY4CisKK0VhY2ggbGVkIGlzIHJlcHJlc2VudGVkIGFzIGEgc3ViLW5vZGUgb2YgdGhlIHRpLHRsYzU5MTE2LgorU2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2NvbW1vbi50eHQKKworTEVEIHN1Yi1ub2RlIHByb3BlcnRpZXM6CistIHJlZzogbnVtYmVyIG9mIExFRCBsaW5lLCAwIHRvIDE1IG9yIDAgdG8gNworLSBsYWJlbDogKG9wdGlvbmFsKSBuYW1lIG9mIExFRAorLSBsaW51eCxkZWZhdWx0LXRyaWdnZXIgOiAob3B0aW9uYWwpCisKK0V4YW1wbGVzOgorCit0bGM1OTExNkA2OCB7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47CisJY29tcGF0aWJsZSA9ICJ0aSx0bGM1OTExNiI7CisJcmVnID0gPDB4Njg+OworCisJd2FuQDAgeworCQlsYWJlbCA9ICJ3cnQxOTAwYWM6YW1iZXI6d2FuIjsKKwkJcmVnID0gPDB4MD47CisJfTsKKworCTJnQDIgeworCQlsYWJlbCA9ICJ3cnQxOTAwYWM6d2hpdGU6MmciOworCQlyZWcgPSA8MHgyPjsKKwl9OworCisJYWxpdmVAOSB7CisJCWxhYmVsID0gIndydDE5MDBhYzpncmVlbjphbGl2ZSI7CisJCXJlZyA9IDwweDk+OworCQlsaW51eCxkZWZhdWx0X3RyaWdnZXIgPSAiaGVhcnRiZWF0IjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL3BjYTk2M3gudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvcGNhOTYzeC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFmYmU5OQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL3BjYTk2M3gudHh0CkBAIC0wLDAgKzEsNDggQEAKK0xFRHMgY29ubmVjdGVkIHRvIHBjYTk2MzIsIHBjYTk2MzMgb3IgcGNhOTYzNAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlIDogIm54cCxwY2E5NjMyIiwgIm54cCxwY2E5NjMzIiwgIm54cCxwY2E5NjM0IiBvciAibnhwLHBjYTk2MzUiCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIG54cCx0b3RlbS1wb2xlIDogdXNlIHRvdGVtIHBvbGUgKHB1c2gtcHVsbCkgaW5zdGVhZCBvZiBvcGVuLWRyYWluIChwY2E5NjMyIGRlZmF1bHRzCisgIHRvIG9wZW4tZHJhaW4sIG5ld2VyIGNoaXBzIHRvIHRvdGVtIHBvbGUpCistIG54cCxody1ibGluayA6IHVzZSBoYXJkd2FyZSBibGlua2luZyBpbnN0ZWFkIG9mIHNvZnR3YXJlIGJsaW5raW5nCisKK0VhY2ggbGVkIGlzIHJlcHJlc2VudGVkIGFzIGEgc3ViLW5vZGUgb2YgdGhlIG54cCxwY2E5NjN4IGRldmljZS4KKworTEVEIHN1Yi1ub2RlIHByb3BlcnRpZXM6CistIGxhYmVsIDogKG9wdGlvbmFsKSBzZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvY29tbW9uLnR4dAorLSByZWcgOiBudW1iZXIgb2YgTEVEIGxpbmUgKGNvdWxkIGJlIGZyb20gMCB0byAzIGluIHBjYTk2MzIgb3IgcGNhOTYzMywKKwkJMCB0byA3IGluIHBjYTk2MzQsIG9yIDAgdG8gMTUgaW4gcGNhOTYzNSkKKy0gbGludXgsZGVmYXVsdC10cmlnZ2VyIDogKG9wdGlvbmFsKQorICAgc2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2NvbW1vbi50eHQKKworRXhhbXBsZXM6CisKK3BjYTk2MzI6IHBjYTk2MzIgeworCWNvbXBhdGlibGUgPSAibnhwLHBjYTk2MzIiOworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDA+OworCXJlZyA9IDwweDYyPjsKKworCXJlZEAwIHsKKwkJbGFiZWwgPSAicmVkIjsKKwkJcmVnID0gPDA+OworCQlsaW51eCxkZWZhdWx0LXRyaWdnZXIgPSAibm9uZSI7CisJfTsKKwlncmVlbkAxIHsKKwkJbGFiZWwgPSAiZ3JlZW4iOworCQlyZWcgPSA8MT47CisJCWxpbnV4LGRlZmF1bHQtdHJpZ2dlciA9ICJub25lIjsKKwl9OworCWJsdWVAMiB7CisJCWxhYmVsID0gImJsdWUiOworCQlyZWcgPSA8Mj47CisJCWxpbnV4LGRlZmF1bHQtdHJpZ2dlciA9ICJub25lIjsKKwl9OworCXVudXNlZEAzIHsKKwkJbGFiZWwgPSAidW51c2VkIjsKKwkJcmVnID0gPDM+OworCQlsaW51eCxkZWZhdWx0LXRyaWdnZXIgPSAibm9uZSI7CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9yZWdpc3Rlci1iaXQtbGVkLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL3JlZ2lzdGVyLWJpdC1sZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3OWNlZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9yZWdpc3Rlci1iaXQtbGVkLnR4dApAQCAtMCwwICsxLDk5IEBACitEZXZpY2UgVHJlZSBCaW5kaW5ncyBmb3IgUmVnaXN0ZXIgQml0IExFRHMKKworUmVnaXN0ZXIgYml0IGxlZHMgYXJlIHVzZWQgd2l0aCBzeXNjb24gbXVsdGlmdW5jdGlvbmFsIGRldmljZXMKK3doZXJlIHNpbmdsZSBiaXRzIGluIGEgY2VydGFpbiByZWdpc3RlciBjYW4gdHVybiBvbi9vZmYgYQorc2luZ2xlIExFRC4gVGhlIHJlZ2lzdGVyIGJpdCBMRURzIGFwcGVhciBhcyBjaGlsZHJlbiB0byB0aGUKK3N5c2NvbiBkZXZpY2UsIHdpdGggdGhlIHByb3BlciBjb21wYXRpYmxlIHN0cmluZy4gRm9yIHRoZQorc3lzY29uIGJpbmRpbmdzIHNlZToKK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvc3lzY29uLnR4dAorCitFYWNoIExFRCBpcyByZXByZXNlbnRlZCBhcyBhIHN1Yi1ub2RlIG9mIHRoZSBzeXNjb24gZGV2aWNlLiBFYWNoCitub2RlJ3MgbmFtZSByZXByZXNlbnRzIHRoZSBuYW1lIG9mIHRoZSBjb3JyZXNwb25kaW5nIExFRC4KKworTEVEIHN1Yi1ub2RlIHByb3BlcnRpZXM6CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBtdXN0IGJlICJyZWdpc3Rlci1iaXQtbGVkIgorLSBvZmZzZXQgOiByZWdpc3RlciBvZmZzZXQgdG8gdGhlIHJlZ2lzdGVyIGNvbnRyb2xsaW5nIHRoaXMgTEVECistIG1hc2sgOiBiaXQgbWFzayBmb3IgdGhlIGJpdCBjb250cm9sbGluZyB0aGlzIExFRCBpbiB0aGUgcmVnaXN0ZXIKKyAgdHlwaWNhbGx5IDB4MDEsIDB4MDIsIDB4MDQgLi4uCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGxhYmVsIDogKG9wdGlvbmFsKQorICBzZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvY29tbW9uLnR4dAorLSBsaW51eCxkZWZhdWx0LXRyaWdnZXIgOiAob3B0aW9uYWwpCisgIHNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9jb21tb24udHh0CistIGRlZmF1bHQtc3RhdGU6IChvcHRpb25hbCkgVGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIExFRC4gVmFsaWQKKyAgdmFsdWVzIGFyZSAib24iLCAib2ZmIiwgYW5kICJrZWVwIi4gSWYgdGhlIExFRCBpcyBhbHJlYWR5IG9uIG9yIG9mZgorICBhbmQgdGhlIGRlZmF1bHQtc3RhdGUgcHJvcGVydHkgaXMgc2V0IHRoZSB0byBzYW1lIHZhbHVlLCB0aGVuIG5vCisgIGdsaXRjaCBzaG91bGQgYmUgcHJvZHVjZWQgd2hlcmUgdGhlIExFRCBtb21lbnRhcmlseSB0dXJucyBvZmYgKG9yCisgIG9uKS4gVGhlICJrZWVwIiBzZXR0aW5nIHdpbGwga2VlcCB0aGUgTEVEIGF0IHdoYXRldmVyIGl0cyBjdXJyZW50CisgIHN0YXRlIGlzLCB3aXRob3V0IHByb2R1Y2luZyBhIGdsaXRjaC4gIFRoZSBkZWZhdWx0IGlzIG9mZiBpZiB0aGlzCisgIHByb3BlcnR5IGlzIG5vdCBwcmVzZW50LgorCitFeGFtcGxlOgorCitzeXNjb246IHN5c2NvbkAxMDAwMDAwMCB7CisJY29tcGF0aWJsZSA9ICJhcm0scmVhbHZpZXctcGIxMTc2LXN5c2NvbiIsICJzeXNjb24iOworCXJlZyA9IDwweDEwMDAwMDAwIDB4MTAwMD47CisKKwlsZWRAMDguMCB7CisJCWNvbXBhdGlibGUgPSAicmVnaXN0ZXItYml0LWxlZCI7CisJCW9mZnNldCA9IDwweDA4PjsKKwkJbWFzayA9IDwweDAxPjsKKwkJbGFiZWwgPSAidmVyc2F0aWxlOjAiOworCQlsaW51eCxkZWZhdWx0LXRyaWdnZXIgPSAiaGVhcnRiZWF0IjsKKwkJZGVmYXVsdC1zdGF0ZSA9ICJvbiI7CisJfTsKKwlsZWRAMDguMSB7CisJCWNvbXBhdGlibGUgPSAicmVnaXN0ZXItYml0LWxlZCI7CisJCW9mZnNldCA9IDwweDA4PjsKKwkJbWFzayA9IDwweDAyPjsKKwkJbGFiZWwgPSAidmVyc2F0aWxlOjEiOworCQlsaW51eCxkZWZhdWx0LXRyaWdnZXIgPSAibW1jMCI7CisJCWRlZmF1bHQtc3RhdGUgPSAib2ZmIjsKKwl9OworCWxlZEAwOC4yIHsKKwkJY29tcGF0aWJsZSA9ICJyZWdpc3Rlci1iaXQtbGVkIjsKKwkJb2Zmc2V0ID0gPDB4MDg+OworCQltYXNrID0gPDB4MDQ+OworCQlsYWJlbCA9ICJ2ZXJzYXRpbGU6MiI7CisJCWxpbnV4LGRlZmF1bHQtdHJpZ2dlciA9ICJjcHUwIjsKKwkJZGVmYXVsdC1zdGF0ZSA9ICJvZmYiOworCX07CisJbGVkQDA4LjMgeworCQljb21wYXRpYmxlID0gInJlZ2lzdGVyLWJpdC1sZWQiOworCQlvZmZzZXQgPSA8MHgwOD47CisJCW1hc2sgPSA8MHgwOD47CisJCWxhYmVsID0gInZlcnNhdGlsZTozIjsKKwkJZGVmYXVsdC1zdGF0ZSA9ICJvZmYiOworCX07CisJbGVkQDA4LjQgeworCQljb21wYXRpYmxlID0gInJlZ2lzdGVyLWJpdC1sZWQiOworCQlvZmZzZXQgPSA8MHgwOD47CisJCW1hc2sgPSA8MHgxMD47CisJCWxhYmVsID0gInZlcnNhdGlsZTo0IjsKKwkJZGVmYXVsdC1zdGF0ZSA9ICJvZmYiOworCX07CisJbGVkQDA4LjUgeworCQljb21wYXRpYmxlID0gInJlZ2lzdGVyLWJpdC1sZWQiOworCQlvZmZzZXQgPSA8MHgwOD47CisJCW1hc2sgPSA8MHgyMD47CisJCWxhYmVsID0gInZlcnNhdGlsZTo1IjsKKwkJZGVmYXVsdC1zdGF0ZSA9ICJvZmYiOworCX07CisJbGVkQDA4LjYgeworCQljb21wYXRpYmxlID0gInJlZ2lzdGVyLWJpdC1sZWQiOworCQlvZmZzZXQgPSA8MHgwOD47CisJCW1hc2sgPSA8MHg0MD47CisJCWxhYmVsID0gInZlcnNhdGlsZTo2IjsKKwkJZGVmYXVsdC1zdGF0ZSA9ICJvZmYiOworCX07CisJbGVkQDA4LjcgeworCQljb21wYXRpYmxlID0gInJlZ2lzdGVyLWJpdC1sZWQiOworCQlvZmZzZXQgPSA8MHgwOD47CisJCW1hc2sgPSA8MHg4MD47CisJCWxhYmVsID0gInZlcnNhdGlsZTo3IjsKKwkJZGVmYXVsdC1zdGF0ZSA9ICJvZmYiOworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvdGNhNjUwNy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy90Y2E2NTA3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWQ5MTAyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvdGNhNjUwNy50eHQKQEAgLTAsMCArMSw0OSBAQAorTEVEcyBjb25uZWN0ZWQgdG8gdGNhNjUwNworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlIDogInRpLHRjYTY1MDciLgorLSAjYWRkcmVzcy1jZWxsczogbXVzdCBiZSAxCistICNzaXplLWNlbGxzOiBtdXN0IGJlIDAKKy0gcmVnOiB0eXBpY2FsbHkgMHg0NS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gZ3Bpby1jb250cm9sbGVyOiBhbGxvd3MgbGluZXMgdG8gYmUgdXNlZCBhcyBvdXRwdXQtb25seSBHUElPcy4KKy0gI2dwaW8tY2VsbHM6IGlmIHByZXNlbnQsIG11c3Qgbm90IGJlIDAuCisKK0VhY2ggbGVkIGlzIHJlcHJlc2VudGVkIGFzIGEgc3ViLW5vZGUgb2YgdGhlIHRpLHRjYTY1MDcgZGV2aWNlLgorCitMRUQgc3ViLW5vZGUgcHJvcGVydGllczoKKy0gbGFiZWwgOiAob3B0aW9uYWwpIHNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9jb21tb24udHh0CistIHJlZyA6IG51bWJlciBvZiBMRUQgbGluZSAoY291bGQgYmUgZnJvbSAwIHRvIDYpCistIGxpbnV4LGRlZmF1bHQtdHJpZ2dlciA6IChvcHRpb25hbCkKKyAgIHNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9jb21tb24udHh0CistIGNvbXBhdGlibGU6IGVpdGhlciAibGVkIiAodGhlIGRlZmF1bHQpIG9yICJncGlvIi4KKworRXhhbXBsZXM6CisKK3RjYTY1MDdANDUgeworCWNvbXBhdGlibGUgPSAidGksdGNhNjUwNyI7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47CisJcmVnID0gPDB4NDU+OworCisJZ3Bpby1jb250cm9sbGVyOworCSNncGlvLWNlbGxzID0gPDI+OworCisJbGVkMDogcmVkLWF1eEAwIHsKKwkJbGFiZWwgPSAicmVkOmF1eCI7CisJCXJlZyA9IDwweDA+OworCX07CisKKwlsZWQxOiBncmVlbi1hdXhAMSB7CisJCWxhYmVsID0gImdyZWVuOmF1eCI7CisJCXJlZyA9IDwweDU+OworCQlsaW51eCxkZWZhdWx0LXRyaWdnZXIgPSAiZGVmYXVsdC1vbiI7CisJfTsKKworCXdpZmktcmVzZXRANiB7CisJCXJlZyA9IDwweDY+OworCQljb21wYXRpYmxlID0gImdwaW8iOworCX07Cit9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbHBkZHIyL2xwZGRyMi10aW1pbmdzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9scGRkcjIvbHBkZHIyLXRpbWluZ3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljZWIxOWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbHBkZHIyL2xwZGRyMi10aW1pbmdzLnR4dApAQCAtMCwwICsxLDUyIEBACisqIEFDIHRpbWluZyBwYXJhbWV0ZXJzIG9mIExQRERSMihKRVNEMjA5LTIpIG1lbW9yaWVzIGZvciBhIGdpdmVuIHNwZWVkLWJpbgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJqZWRlYyxscGRkcjItdGltaW5ncyIKKy0gbWluLWZyZXEgOiBtaW5pbXVtIEREUiBjbG9jayBmcmVxdWVuY3kgZm9yIHRoZSBzcGVlZC1iaW4uIFR5cGUgaXMgPHUzMj4KKy0gbWF4LWZyZXEgOiBtYXhpbXVtIEREUiBjbG9jayBmcmVxdWVuY3kgZm9yIHRoZSBzcGVlZC1iaW4uIFR5cGUgaXMgPHUzMj4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworVGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIHJlcHJlc2VudCBBQyB0aW1pbmcgcGFyYW1ldGVycyBmcm9tIHRoZSBtZW1vcnkKK2RhdGEtc2hlZXQgb2YgdGhlIGRldmljZSBmb3IgYSBnaXZlbiBzcGVlZC1iaW4uIEFsbCB0aGVzZSBwcm9wZXJ0aWVzIGFyZQorb2YgdHlwZSA8dTMyPiBhbmQgdGhlIGRlZmF1bHQgdW5pdCBpcyBwcyAocGljbyBzZWNvbmRzKS4gUGFyYW1ldGVycyB3aXRoCithIGRpZmZlcmVudCB1bml0IGhhdmUgYSBzdWZmaXggaW5kaWNhdGluZyB0aGUgdW5pdCBzdWNoIGFzICd0UkFTLW1heC1ucycKKy0gdFJDRAorLSB0V1IKKy0gdFJBUy1taW4KKy0gdFJSRAorLSB0V1RSCistIHRYUAorLSB0UlRQCistIHREUVNDSy1tYXgKKy0gdEZBVworLSB0WlFDUworLSB0WlFpbml0CistIHRSUGFiCistIHRaUUNMCistIHRDS0VTUgorLSB0UkFTLW1heC1ucworLSB0RFFTQ0stbWF4LWRlcmF0ZWQKKworRXhhbXBsZToKKwordGltaW5nc19lbHBpZGFfRUNCMjQwQUJBQ05fNDAwbWh6OiBscGRkcjItdGltaW5nc0AwIHsKKwljb21wYXRpYmxlCT0gImplZGVjLGxwZGRyMi10aW1pbmdzIjsKKwltaW4tZnJlcQk9IDwxMDAwMDAwMD47CisJbWF4LWZyZXEJPSA8NDAwMDAwMDAwPjsKKwl0UlBhYgkJPSA8MjEwMDA+OworCXRSQ0QJCT0gPDE4MDAwPjsKKwl0V1IJCT0gPDE1MDAwPjsKKwl0UkFTLW1pbgk9IDw0MjAwMD47CisJdFJSRAkJPSA8MTAwMDA+OworCXRXVFIJCT0gPDc1MDA+OworCXRYUAkJPSA8NzUwMD47CisJdFJUUAkJPSA8NzUwMD47CisJdENLRVNSCQk9IDwxNTAwMD47CisJdERRU0NLLW1heAk9IDw1NTAwPjsKKwl0RkFXCQk9IDw1MDAwMD47CisJdFpRQ1MJCT0gPDkwMDAwPjsKKwl0WlFDTAkJPSA8MzYwMDAwPjsKKwl0WlFpbml0CQk9IDwxMDAwMDAwPjsKKwl0UkFTLW1heC1ucwk9IDw3MDAwMD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xwZGRyMi9scGRkcjIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xwZGRyMi9scGRkcjIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MzU0YTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbHBkZHIyL2xwZGRyMi50eHQKQEAgLTAsMCArMSwxMDIgQEAKKyogTFBERFIyIFNEUkFNIG1lbW9yaWVzIGNvbXBsaWFudCB0byBKRURFQyBKRVNEMjA5LTIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSBvbmUgb2YgLSAiamVkZWMsbHBkZHIyLW52bSIsICJqZWRlYyxscGRkcjItczIiLAorICAiamVkZWMsbHBkZHIyLXM0IgorCisgICJ0aSxqZWRlYy1scGRkcjItczIiIHNob3VsZCBiZSBsaXN0ZWQgaWYgdGhlIG1lbW9yeSBwYXJ0IGlzIExQRERSMi1TMiB0eXBlCisKKyAgInRpLGplZGVjLWxwZGRyMi1zNCIgc2hvdWxkIGJlIGxpc3RlZCBpZiB0aGUgbWVtb3J5IHBhcnQgaXMgTFBERFIyLVM0IHR5cGUKKworICAidGksamVkZWMtbHBkZHIyLW52bSIgc2hvdWxkIGJlIGxpc3RlZCBpZiB0aGUgbWVtb3J5IHBhcnQgaXMgTFBERFIyLU5WTSB0eXBlCisKKy0gZGVuc2l0eSAgOiA8dTMyPiByZXByZXNlbnRpbmcgZGVuc2l0eSBpbiBNYiAoTWVnYSBiaXRzKQorCistIGlvLXdpZHRoIDogPHUzMj4gcmVwcmVzZW50aW5nIGJ1cyB3aWR0aC4gUG9zc2libGUgdmFsdWVzIGFyZSA4LCAxNiwgYW5kIDMyCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKK1RoZSBmb2xsb3dpbmcgb3B0aW9uYWwgcHJvcGVydGllcyByZXByZXNlbnQgdGhlIG1pbmltdW0gdmFsdWUgb2Ygc29tZSBBQwordGltaW5nIHBhcmFtZXRlcnMgb2YgdGhlIEREUiBkZXZpY2UgaW4gdGVybXMgb2YgbnVtYmVyIG9mIGNsb2NrIGN5Y2xlcy4KK1RoZXNlIHZhbHVlcyBzaGFsbCBiZSBvYnRhaW5lZCBmcm9tIHRoZSBkZXZpY2UgZGF0YS1zaGVldC4KKy0gdFJSRC1taW4tdGNrCistIHRXVFItbWluLXRjaworLSB0WFAtbWluLXRjaworLSB0UlRQLW1pbi10Y2sKKy0gdENLRS1taW4tdGNrCistIHRSUGFiLW1pbi10Y2sKKy0gdFJDRC1taW4tdGNrCistIHRXUi1taW4tdGNrCistIHRSQVNtaW4tbWluLXRjaworLSB0Q0tFU1ItbWluLXRjaworLSB0RkFXLW1pbi10Y2sKKworQ2hpbGQgbm9kZXM6CistIFRoZSBscGRkcjIgbm9kZSBtYXkgaGF2ZSBvbmUgb3IgbW9yZSBjaGlsZCBub2RlcyBvZiB0eXBlICJscGRkcjItdGltaW5ncyIuCisgICJscGRkcjItdGltaW5ncyIgcHJvdmlkZXMgQUMgdGltaW5nIHBhcmFtZXRlcnMgb2YgdGhlIGRldmljZSBmb3IKKyAgYSBnaXZlbiBzcGVlZC1iaW4uIFRoZSB1c2VyIG1heSBwcm92aWRlIHRoZSB0aW1pbmdzIGZvciBhcyBtYW55CisgIHNwZWVkLWJpbnMgYXMgaXMgcmVxdWlyZWQuIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlLworICBiaW5kaW5ncy9scGRkcjIvbHBkZHIyLXRpbWluZ3MudHh0IGZvciBtb3JlIGluZm9ybWF0aW9uIG9uICJscGRkcjItdGltaW5ncyIKKworRXhhbXBsZToKKworZWxwaWRhX0VDQjI0MEFCQUNOIDogbHBkZHIyIHsKKwljb21wYXRpYmxlCT0gIkVscGlkYSxFQ0IyNDBBQkFDTiIsImplZGVjLGxwZGRyMi1zNCI7CisJZGVuc2l0eQkJPSA8MjA0OD47CisJaW8td2lkdGgJPSA8MzI+OworCisJdFJQYWItbWluLXRjawk9IDwzPjsKKwl0UkNELW1pbi10Y2sJPSA8Mz47CisJdFdSLW1pbi10Y2sJPSA8Mz47CisJdFJBU21pbi1taW4tdGNrCT0gPDM+OworCXRSUkQtbWluLXRjawk9IDwyPjsKKwl0V1RSLW1pbi10Y2sJPSA8Mj47CisJdFhQLW1pbi10Y2sJPSA8Mj47CisJdFJUUC1taW4tdGNrCT0gPDI+OworCXRDS0UtbWluLXRjawk9IDwzPjsKKwl0Q0tFU1ItbWluLXRjawk9IDwzPjsKKwl0RkFXLW1pbi10Y2sJPSA8OD47CisKKwl0aW1pbmdzX2VscGlkYV9FQ0IyNDBBQkFDTl80MDBtaHo6IGxwZGRyMi10aW1pbmdzQDAgeworCQljb21wYXRpYmxlCT0gImplZGVjLGxwZGRyMi10aW1pbmdzIjsKKwkJbWluLWZyZXEJPSA8MTAwMDAwMDA+OworCQltYXgtZnJlcQk9IDw0MDAwMDAwMDA+OworCQl0UlBhYgkJPSA8MjEwMDA+OworCQl0UkNECQk9IDwxODAwMD47CisJCXRXUgkJPSA8MTUwMDA+OworCQl0UkFTLW1pbgk9IDw0MjAwMD47CisJCXRSUkQJCT0gPDEwMDAwPjsKKwkJdFdUUgkJPSA8NzUwMD47CisJCXRYUAkJPSA8NzUwMD47CisJCXRSVFAJCT0gPDc1MDA+OworCQl0Q0tFU1IJCT0gPDE1MDAwPjsKKwkJdERRU0NLLW1heAk9IDw1NTAwPjsKKwkJdEZBVwkJPSA8NTAwMDA+OworCQl0WlFDUwkJPSA8OTAwMDA+OworCQl0WlFDTAkJPSA8MzYwMDAwPjsKKwkJdFpRaW5pdAkJPSA8MTAwMDAwMD47CisJCXRSQVMtbWF4LW5zCT0gPDcwMDAwPjsKKwl9OworCisJdGltaW5nc19lbHBpZGFfRUNCMjQwQUJBQ05fMjAwbWh6OiBscGRkcjItdGltaW5nc0AxIHsKKwkJY29tcGF0aWJsZQk9ICJqZWRlYyxscGRkcjItdGltaW5ncyI7CisJCW1pbi1mcmVxCT0gPDEwMDAwMDAwPjsKKwkJbWF4LWZyZXEJPSA8MjAwMDAwMDAwPjsKKwkJdFJQYWIJCT0gPDIxMDAwPjsKKwkJdFJDRAkJPSA8MTgwMDA+OworCQl0V1IJCT0gPDE1MDAwPjsKKwkJdFJBUy1taW4JPSA8NDIwMDA+OworCQl0UlJECQk9IDwxMDAwMD47CisJCXRXVFIJCT0gPDEwMDAwPjsKKwkJdFhQCQk9IDw3NTAwPjsKKwkJdFJUUAkJPSA8NzUwMD47CisJCXRDS0VTUgkJPSA8MTUwMDA+OworCQl0RFFTQ0stbWF4CT0gPDU1MDA+OworCQl0RkFXCQk9IDw1MDAwMD47CisJCXRaUUNTCQk9IDw5MDAwMD47CisJCXRaUUNMCQk9IDwzNjAwMDA+OworCQl0WlFpbml0CQk9IDwxMDAwMDAwPjsKKwkJdFJBUy1tYXgtbnMJPSA8NzAwMDA+OworCX07CisKK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tYWlsYm94L2FsdGVyYS1tYWlsYm94LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tYWlsYm94L2FsdGVyYS1tYWlsYm94LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjYxOTc5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21haWxib3gvYWx0ZXJhLW1haWxib3gudHh0CkBAIC0wLDAgKzEsNDkgQEAKK0FsdGVyYSBNYWlsYm94IERyaXZlcgorPT09PT09PT09PT09PT09PT09PT09CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOgkiYWx0cixtYWlsYm94LTEuMCIuCistIHJlZyA6IAlwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIG1haWxib3ggYW5kIGxlbmd0aCBvZgorCQltZW1vcnkgbWFwcGVkIHJlZ2lvbi4KKy0gI21ib3gtY2VsbHM6CUNvbW1vbiBtYWlsYm94IGJpbmRpbmcgcHJvcGVydHkgdG8gaWRlbnRpZnkgdGhlIG51bWJlcgorCQlvZiBjZWxscyByZXF1aXJlZCBmb3IgdGhlIG1haWxib3ggc3BlY2lmaWVyLiBTaG91bGQgYmUgMS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gaW50ZXJydXB0LXBhcmVudCA6CWludGVycnVwdCBzb3VyY2UgcGhhbmRsZS4KKy0gaW50ZXJydXB0cyA6CQlpbnRlcnJ1cHQgbnVtYmVyLiBUaGUgaW50ZXJydXB0IHNwZWNpZmllciBmb3JtYXQKKwkJCWRlcGVuZHMgb24gdGhlIGludGVycnVwdCBjb250cm9sbGVyIHBhcmVudC4KKworRXhhbXBsZToKKwltYm94X3R4OiBtYWlsYm94QDB4MTAwIHsKKwkJY29tcGF0aWJsZSA9ICJhbHRyLG1haWxib3gtMS4wIjsKKwkJcmVnID0gPDB4MTAwIDB4OD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8ICZnaWNfMCA+OworCQlpbnRlcnJ1cHRzID0gPDU+OworCQkjbWJveC1jZWxscyA9IDwxPjsKKwl9OworCisJbWJveF9yeDogbWFpbGJveEAweDIwMCB7CisJCWNvbXBhdGlibGUgPSAiYWx0cixtYWlsYm94LTEuMCI7CisJCXJlZyA9IDwweDIwMCAweDg+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCAmZ2ljXzAgPjsKKwkJaW50ZXJydXB0cyA9IDw2PjsKKwkJI21ib3gtY2VsbHMgPSA8MT47CisJfTsKKworTWFpbGJveCBjbGllbnQKKz09PT09PT09PT09PT09PQorIm1ib3hlcyIgYW5kIHRoZSBvcHRpb25hbCAibWJveC1uYW1lcyIgKHBsZWFzZSBzZWUKK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tYWlsYm94L21haWxib3gudHh0IGZvciBkZXRhaWxzKS4gRWFjaCB2YWx1ZQorb2YgdGhlIG1ib3hlcyBwcm9wZXJ0eSBzaG91bGQgY29udGFpbiBhIHBoYW5kbGUgdG8gdGhlIG1haWxib3ggY29udHJvbGxlcgorZGV2aWNlIG5vZGUgYW5kIHNlY29uZCBhcmd1bWVudCBpcyB0aGUgY2hhbm5lbCBpbmRleC4gSXQgbXVzdCBiZSAwIChoYXJkd2FyZQorc3VwcG9ydCBvbmx5IG9uZSBjaGFubmVsKS5UaGUgZXF1aXZhbGVudCAibWJveC1uYW1lcyIgcHJvcGVydHkgdmFsdWUgY2FuIGJlCit1c2VkIHRvIGdpdmUgYSBuYW1lIHRvIHRoZSBjb21tdW5pY2F0aW9uIGNoYW5uZWwgdG8gYmUgdXNlZCBieSB0aGUgY2xpZW50IHVzZXIuCisKK0V4YW1wbGU6CisJbWNsaWVudDA6IG1jbGllbnQwQDB4NDAwIHsKKwkJY29tcGF0aWJsZSA9ICJjbGllbnQtMS4wIjsKKwkJcmVnID0gPDB4NDAwIDB4MTA+OworCQltYm94LW5hbWVzID0gIm1ib3gtdHgiLCAibWJveC1yeCI7CisJCW1ib3hlcyA9IDwmbWJveF90eCAwPiwKKwkJCSA8Jm1ib3hfcnggMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tYWlsYm94L2FybS1taHUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21haWxib3gvYXJtLW1odS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDk3MWYwMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tYWlsYm94L2FybS1taHUudHh0CkBAIC0wLDAgKzEsNDMgQEAKK0FSTSBNSFUgTWFpbGJveCBEcml2ZXIKKz09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIEFSTSdzIE1lc3NhZ2UtSGFuZGxpbmctVW5pdCAoTUhVKSBpcyBhIG1haWxib3ggY29udHJvbGxlciB0aGF0IGhhcworMyBpbmRlcGVuZGVudCBjaGFubmVscy9saW5rcyB0byBjb21tdW5pY2F0ZSB3aXRoIHJlbW90ZSBwcm9jZXNzb3IocykuCisgTUhVIGxpbmtzIGFyZSBoYXJkd2lyZWQgb24gYSBwbGF0Zm9ybS4gQSBsaW5rIHJhaXNlcyBpbnRlcnJ1cHQgZm9yIGFueQorcmVjZWl2ZWQgZGF0YS4gSG93ZXZlciwgdGhlcmUgaXMgbm8gc3BlY2lmaWVkIHdheSBvZiBrbm93aW5nIGlmIHRoZSBzZW50CitkYXRhIGhhcyBiZWVuIHJlYWQgYnkgdGhlIHJlbW90ZS4gVGhpcyBkcml2ZXIgYXNzdW1lcyB0aGUgc2VuZGVyIHBvbGxzCitTVEFUIHJlZ2lzdGVyIGFuZCB0aGUgcmVtb3RlIGNsZWFycyBpdCBhZnRlciBoYXZpbmcgcmVhZCB0aGUgZGF0YS4KK1RoZSBsYXN0IGNoYW5uZWwgaXMgc3BlY2lmaWVkIHRvIGJlIGEgJ1NlY3VyZScgcmVzb3VyY2UsIGhlbmNlIGNhbid0IGJlCit1c2VkIGJ5IExpbnV4IHJ1bm5pbmcgTlMuCisKK01haWxib3ggRGV2aWNlIE5vZGU6Cis9PT09PT09PT09PT09PT09PT09PQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0gY29tcGF0aWJsZToJCVNoYWxsIGJlICJhcm0sbWh1IiAmICJhcm0scHJpbWVjZWxsIgorLSByZWc6CQkJQ29udGFpbnMgdGhlIG1haWxib3ggcmVnaXN0ZXIgYWRkcmVzcyByYW5nZSAoYmFzZQorCQkJYWRkcmVzcyBhbmQgbGVuZ3RoKQorLSAjbWJveC1jZWxscwkJU2hhbGwgYmUgMSAtIHRoZSBpbmRleCBvZiB0aGUgY2hhbm5lbCBuZWVkZWQuCistIGludGVycnVwdHM6CQlDb250YWlucyB0aGUgaW50ZXJydXB0IGluZm9ybWF0aW9uIGNvcnJlc3BvbmRpbmcgdG8KKwkJCWVhY2ggb2YgdGhlIDMgbGlua3Mgb2YgTUhVLgorCitFeGFtcGxlOgorLS0tLS0tLS0KKworCW1odTogbWFpbGJveEAyYjFmMDAwMCB7CisJCSNtYm94LWNlbGxzID0gPDE+OworCQljb21wYXRpYmxlID0gImFybSxtaHUiLCAiYXJtLHByaW1lY2VsbCI7CisJCXJlZyA9IDwwIDB4MmIxZjAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDM2IDQ+LCAvKiBMUC1Ob25TZWN1cmUgKi8KKwkJCSAgICAgPDAgMzUgND4sIC8qIEhQLU5vblNlY3VyZSAqLworCQkJICAgICA8MCAzNyA0PjsgLyogU2VjdXJlICovCisJCWNsb2NrcyA9IDwmY2xvY2sgMCAyIDE+OworCQljbG9jay1uYW1lcyA9ICJhcGJfcGNsayI7CisJfTsKKworCW1odV9jbGllbnQ6IHNjYkAyZTAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnVqaXRzdSxtYjg2czcwLXNjYi0xLjAiOworCQlyZWcgPSA8MCAweDJlMDAwMDAwIDB4NDAwMD47CisJCW1ib3hlcyA9IDwmbWh1IDE+OyAvKiBIUC1Ob25TZWN1cmUgKi8KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21haWxib3gvYnJjbSxiY20yODM1LW1ib3gudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21haWxib3gvYnJjbSxiY20yODM1LW1ib3gudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4OTM2MTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWFpbGJveC9icmNtLGJjbTI4MzUtbWJveC50eHQKQEAgLTAsMCArMSwyNiBAQAorQnJvYWRjb20gQkNNMjgzNSBWaWRlb0NvcmUgbWFpbGJveCBJUEMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOglTaG91bGQgYmUgImJyY20sYmNtMjgzNS1tYm94IgorLSByZWc6CQlTcGVjaWZpZXMgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSByZWdpc3RlcnMKKy0gaW50ZXJydXB0czoJVGhlIGludGVycnVwdCBudW1iZXIKKwkJICBTZWUgYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYnJjbSxiY20yODM1LWFybWN0cmwtaWMudHh0CistICNtYm94LWNlbGxzOglTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8gZW5jb2RlIGEgbWFpbGJveAorCQkgIGNoYW5uZWwuIFRoZSB2YWx1ZSBzaGFsbCBiZSAwLCBzaW5jZSB0aGVyZSBpcyBvbmx5IG9uZQorCQkgIG1haWxib3ggY2hhbm5lbCBpbXBsZW1lbnRlZCBieSB0aGUgZGV2aWNlLgorCitFeGFtcGxlOgorCittYWlsYm94OiBtYWlsYm94QDdlMDBiODAwIHsKKwljb21wYXRpYmxlID0gImJyY20sYmNtMjgzNS1tYm94IjsKKwlyZWcgPSA8MHg3ZTAwYjg4MCAweDQwPjsKKwlpbnRlcnJ1cHRzID0gPDAgMT47CisJI21ib3gtY2VsbHMgPSA8MD47Cit9OworCitmaXJtd2FyZTogZmlybXdhcmUgeworCWNvbXBhdGlibGUgPSAicmFzcGJlcnJ5cGksZmlybXdhcmUiOworCW1ib3hlcyA9IDwmbWFpbGJveD47CisJI3Bvd2VyLWRvbWFpbi1jZWxscyA9IDwxPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWFpbGJveC9tYWlsYm94LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tYWlsYm94L21haWxib3gudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMDViOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWFpbGJveC9tYWlsYm94LnR4dApAQCAtMCwwICsxLDMyIEBACisqIEdlbmVyaWMgTWFpbGJveCBDb250cm9sbGVyIGFuZCBjbGllbnQgZHJpdmVyIGJpbmRpbmdzCisKK0dlbmVyaWMgYmluZGluZyB0byBwcm92aWRlIGEgd2F5IGZvciBNYWlsYm94IGNvbnRyb2xsZXIgZHJpdmVycyB0bworYXNzaWduIGFwcHJvcHJpYXRlIG1haWxib3ggY2hhbm5lbCB0byBjbGllbnQgZHJpdmVycy4KKworKiBNYWlsYm94IENvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydHk6CistICNtYm94LWNlbGxzOiBNdXN0IGJlIGF0IGxlYXN0IDEuIE51bWJlciBvZiBjZWxscyBpbiBhIG1haWxib3gKKwkJc3BlY2lmaWVyLgorCitFeGFtcGxlOgorCW1haWxib3g6IG1haWxib3ggeworCQkuLi4KKwkJI21ib3gtY2VsbHMgPSA8MT47CisJfTsKKworCisqIE1haWxib3ggQ2xpZW50CisKK1JlcXVpcmVkIHByb3BlcnR5OgorLSBtYm94ZXM6IExpc3Qgb2YgcGhhbmRsZSBhbmQgbWFpbGJveCBjaGFubmVsIHNwZWNpZmllcnMuCisKK09wdGlvbmFsIHByb3BlcnR5OgorLSBtYm94LW5hbWVzOiBMaXN0IG9mIGlkZW50aWZpZXIgc3RyaW5ncyBmb3IgZWFjaCBtYWlsYm94IGNoYW5uZWwuCisKK0V4YW1wbGU6CisJcHdyX2NudHJsOiBwb3dlciB7CisJCS4uLgorCQltYm94LW5hbWVzID0gInB3ci1jdHJsIiwgInJwYyI7CisJCW1ib3hlcyA9IDwmbWFpbGJveCAwICZtYWlsYm94IDE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWFpbGJveC9vbWFwLW1haWxib3gudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21haWxib3gvb21hcC1tYWlsYm94LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjQwYzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21haWxib3gvb21hcC1tYWlsYm94LnR4dApAQCAtMCwwICsxLDEzOSBAQAorT01BUDIrIE1haWxib3ggRHJpdmVyCis9PT09PT09PT09PT09PT09PT09PT0KKworVGhlIE9NQVAgbWFpbGJveCBoYXJkd2FyZSBmYWNpbGl0YXRlcyBjb21tdW5pY2F0aW9uIGJldHdlZW4gZGlmZmVyZW50IHByb2Nlc3NvcnMKK3VzaW5nIGEgcXVldWVkIG1haWxib3ggaW50ZXJydXB0IG1lY2hhbmlzbS4gVGhlIElQIGJsb2NrIGlzIGV4dGVybmFsIHRvIHRoZQordmFyaW91cyBwcm9jZXNzb3Igc3Vic3lzdGVtcyBhbmQgaXMgY29ubmVjdGVkIG9uIGFuIGludGVyY29ubmVjdCBidXMuIFRoZQorY29tbXVuaWNhdGlvbiBpcyBhY2hpZXZlZCB0aHJvdWdoIGEgc2V0IG9mIHJlZ2lzdGVycyBmb3IgbWVzc2FnZSBzdG9yYWdlIGFuZAoraW50ZXJydXB0IGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzLgorCitFYWNoIG1haWxib3ggSVAgYmxvY2sgaGFzIGEgY2VydGFpbiBudW1iZXIgb2YgaC93IGZpZm8gcXVldWVzIGFuZCBvdXRwdXQKK2ludGVycnVwdCBsaW5lcy4gQW4gb3V0cHV0IGludGVycnVwdCBsaW5lIGlzIHJvdXRlZCB0byBhbiBpbnRlcnJ1cHQgY29udHJvbGxlcgord2l0aGluIGEgcHJvY2Vzc29yIHN1YnN5c3RlbSwgYW5kIHRoZXJlIGNhbiBiZSBtb3JlIHRoYW4gb25lIGxpbmUgZ29pbmcgdG8gYQorc3BlY2lmaWMgcHJvY2Vzc29yJ3MgaW50ZXJydXB0IGNvbnRyb2xsZXIuIFRoZSBpbnRlcnJ1cHQgbGluZSBjb25uZWN0aW9ucyBhcmUKK2ZpeGVkIGZvciBhbiBpbnN0YW5jZSBhbmQgYXJlIGRpY3RhdGVkIGJ5IHRoZSBJUCBpbnRlZ3JhdGlvbiBpbnRvIHRoZSBTb0MKKyhleGNsdWRpbmcgdGhlIFNvQ3MgdGhhdCBoYXZlIGEgSW50ZXJydXB0IENyb3NzYmFyIElQKS4gRWFjaCBpbnRlcnJ1cHQgbGluZSBpcworcHJvZ3JhbW1hYmxlIHRocm91Z2ggYSBzZXQgb2YgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzLCBhbmQgaGF2ZSBhIHJ4CithbmQgdHggaW50ZXJydXB0IHNvdXJjZSBwZXIgaC93IGZpZm8uIENvbW11bmljYXRpb24gYmV0d2VlbiBkaWZmZXJlbnQgcHJvY2Vzc29ycworaXMgYWNoaWV2ZWQgdGhyb3VnaCB0aGUgYXBwcm9wcmlhdGUgcHJvZ3JhbW1pbmcgb2YgdGhlIHJ4IGFuZCB0eCBpbnRlcnJ1cHQKK3NvdXJjZXMgb24gdGhlIGFwcHJvcHJpYXRlIGludGVycnVwdCBsaW5lcy4KKworVGhlIG51bWJlciBvZiBoL3cgZmlmbyBxdWV1ZXMgYW5kIGludGVycnVwdCBsaW5lcyBkaWN0YXRlIHRoZSB1c2FibGUgcmVnaXN0ZXJzLgorQWxsIHRoZSBjdXJyZW50IE9NQVAgU29DcyBleGNlcHQgZm9yIHRoZSBuZXdlc3QgRFJBN3h4IFNvQyBoYXMgYSBzaW5nbGUgSVAKK2luc3RhbmNlLiBEUkE3eHggaGFzIG11bHRpcGxlIGluc3RhbmNlcyB3aXRoIGRpZmZlcmVudCBudW1iZXIgb2YgaC93IGZpZm8gcXVldWVzCithbmQgaW50ZXJydXB0IGxpbmVzIGJldHdlZW4gZGlmZmVyZW50IGluc3RhbmNlcy4gVGhlIGludGVycnVwdCBsaW5lcyBjYW4gYWxzbyBiZQorcm91dGVkIHRvIGRpZmZlcmVudCBwcm9jZXNzb3Igc3ViLXN5c3RlbXMgb24gRFJBN3h4IGFzIHRoZXkgYXJlIHJvdXRlZCB0aHJvdWdoCit0aGUgQ3Jvc3NiYXIsIGEga2luZCBvZiBpbnRlcnJ1cHQgcm91dGVyL211bHRpcGxleGVyLgorCitNYWlsYm94IERldmljZSBOb2RlOgorPT09PT09PT09PT09PT09PT09PT0KK0EgTWFpbGJveCBkZXZpY2Ugbm9kZSBpcyB1c2VkIHRvIHJlcHJlc2VudCBhIE1haWxib3ggSVAgaW5zdGFuY2Ugd2l0aGluIGEgU29DLgorVGhlIHN1Yi1tYWlsYm94ZXMgYXJlIHJlcHJlc2VudGVkIGFzIGNoaWxkIG5vZGVzIG9mIHRoaXMgcGFyZW50IG5vZGUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tLQorLSBjb21wYXRpYmxlOgkJU2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nLAorCQkJICAgICJ0aSxvbWFwMi1tYWlsYm94IiBmb3IgT01BUDI0MjAsIE9NQVAyNDMwIFNvQ3MKKwkJCSAgICAidGksb21hcDMtbWFpbGJveCIgZm9yIE9NQVAzNDMwLCBPTUFQMzYzMCBTb0NzCisJCQkgICAgInRpLG9tYXA0LW1haWxib3giIGZvciBPTUFQNDR4eCwgT01BUDU0eHgsIEFNMzN4eCwKKwkJCQkJCSAgIEFNNDN4eCBhbmQgRFJBN3h4IFNvQ3MKKy0gcmVnOgkJCUNvbnRhaW5zIHRoZSBtYWlsYm94IHJlZ2lzdGVyIGFkZHJlc3MgcmFuZ2UgKGJhc2UKKwkJCWFkZHJlc3MgYW5kIGxlbmd0aCkKKy0gaW50ZXJydXB0czoJCUNvbnRhaW5zIHRoZSBpbnRlcnJ1cHQgaW5mb3JtYXRpb24gZm9yIHRoZSBtYWlsYm94CisJCQlkZXZpY2UuIFRoZSBmb3JtYXQgaXMgZGVwZW5kZW50IG9uIHdoaWNoIGludGVycnVwdAorCQkJY29udHJvbGxlciB0aGUgT01BUCBkZXZpY2UgdXNlcworLSB0aSxod21vZHM6CQlOYW1lIG9mIHRoZSBod21vZCBhc3NvY2lhdGVkIHdpdGggdGhlIG1haWxib3gKKy0gI21ib3gtY2VsbHM6CQlDb21tb24gbWFpbGJveCBiaW5kaW5nIHByb3BlcnR5IHRvIGlkZW50aWZ5IHRoZSBudW1iZXIKKwkJCW9mIGNlbGxzIHJlcXVpcmVkIGZvciB0aGUgbWFpbGJveCBzcGVjaWZpZXIuIFNob3VsZCBiZQorCQkJMQorLSB0aSxtYm94LW51bS11c2VyczoJTnVtYmVyIG9mIHRhcmdldHMgKHByb2Nlc3NvciBkZXZpY2VzKSB0aGF0IHRoZSBtYWlsYm94CisJCQlkZXZpY2UgY2FuIGludGVycnVwdAorLSB0aSxtYm94LW51bS1maWZvczoJTnVtYmVyIG9mIGgvdyBmaWZvIHF1ZXVlcyB3aXRoaW4gdGhlIG1haWxib3ggSVAgYmxvY2sKKworQ2hpbGQgTm9kZXM6Cis9PT09PT09PT09PT0KK0EgY2hpbGQgbm9kZSBpcyB1c2VkIGZvciByZXByZXNlbnRpbmcgdGhlIGFjdHVhbCBzdWItbWFpbGJveCBkZXZpY2UgdGhhdCBpcwordXNlZCBmb3IgdGhlIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgaG9zdCBwcm9jZXNzb3IgYW5kIGEgcmVtb3RlIHByb2Nlc3Nvci4KK0VhY2ggY2hpbGQgbm9kZSBzaG91bGQgaGF2ZSBhIHVuaXF1ZSBub2RlIG5hbWUgYWNyb3NzIGFsbCB0aGUgZGlmZmVyZW50CittYWlsYm94IGRldmljZSBub2Rlcy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCistIHRpLG1ib3gtdHg6CQlzdWItbWFpbGJveCBkZXNjcmlwdG9yIHByb3BlcnR5IGRlZmluaW5nIGEgVHggZmlmbworLSB0aSxtYm94LXJ4OgkJc3ViLW1haWxib3ggZGVzY3JpcHRvciBwcm9wZXJ0eSBkZWZpbmluZyBhIFJ4IGZpZm8KKworU3ViLW1haWxib3ggRGVzY3JpcHRvciBEYXRhCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0VhY2ggb2YgdGhlIGFib3ZlIHRpLG1ib3gtdHggYW5kIHRpLG1ib3gtcnggcHJvcGVydGllcyBzaG91bGQgaGF2ZSAzIGNlbGxzIG9mCitkYXRhIHRoYXQgcmVwcmVzZW50IHRoZSBmb2xsb3dpbmc6CisgICAgQ2VsbCAjMSAoZmlmb19pZCkgLSBtYWlsYm94IGZpZm8gaWQgdXNlZCBlaXRoZXIgZm9yIHRyYW5zbWl0dGluZworICAgICAgICAgICAgICAgICAgICAgICAgKHRpLG1ib3gtdHgpIG9yIGZvciByZWNlaXZpbmcgKHRpLG1ib3gtcngpCisgICAgQ2VsbCAjMiAoaXJxX2lkKSAgLSBpcnEgaWRlbnRpZmllciBpbmRleCBudW1iZXIgdG8gdXNlIGZyb20gdGhlIHBhcmVudCdzCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRzIGRhdGEuIFNob3VsZCBiZSAwIGZvciBtb3N0IG9mIHRoZSBjYXNlcywgYQorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpdmUgaW5kZXggdmFsdWUgaXMgc2VlbiBvbmx5IG9uIG1haWxib3hlcyB0aGF0IGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIGludGVycnVwdCBsaW5lcyBjb25uZWN0ZWQgdG8gdGhlIE1QVSBwcm9jZXNzb3IuCisgICAgQ2VsbCAjMyAodXNyX2lkKSAgLSBtYWlsYm94IHVzZXIgaWQgZm9yIGlkZW50aWZ5aW5nIHRoZSBpbnRlcnJ1cHQgbGluZQorICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NpYXRlZCB3aXRoIGdlbmVyYXRpbmcgYSB0eC9yeCBmaWZvIGludGVycnVwdC4KKworT3B0aW9uYWwgUHJvcGVydGllczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCistIHRpLG1ib3gtc2VuZC1ub2lycTogICBRdWlyayBmbGFnIHRvIGFsbG93IHRoZSBjbGllbnQgdXNlciBvZiB0aGlzIHN1Yi1tYWlsYm94CisgICAgICAgICAgICAgICAgICAgICAgICB0byBzZW5kIG1lc3NhZ2VzIHdpdGhvdXQgdHJpZ2dlcmluZyBhIFR4IHJlYWR5IGludGVycnVwdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0byBjb250cm9sIHRoZSBUeCB0aWNrZXIuIFNob3VsZCBiZSB1c2VkIG9ubHkgb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHN1Yi1tYWlsYm94ZXMgdXNlZCB0byBjb21tdW5pY2F0ZSB3aXRoIFdrdXBNMyByZW1vdGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvciBvbiBBTTMzeHgvQU00M3h4IFNvQ3MuCisKK01haWxib3ggVXNlcnM6Cis9PT09PT09PT09PT09PQorQSBkZXZpY2UgbmVlZGluZyB0byBjb21tdW5pY2F0ZSB3aXRoIGEgdGFyZ2V0IHByb2Nlc3NvciBkZXZpY2Ugc2hvdWxkIHNwZWNpZnkKK3RoZW0gdXNpbmcgdGhlIGNvbW1vbiBtYWlsYm94IGJpbmRpbmcgcHJvcGVydGllcywgIm1ib3hlcyIgYW5kIHRoZSBvcHRpb25hbAorIm1ib3gtbmFtZXMiIChwbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tYWlsYm94L21haWxib3gudHh0Citmb3IgZGV0YWlscykuIEVhY2ggdmFsdWUgb2YgdGhlIG1ib3hlcyBwcm9wZXJ0eSBzaG91bGQgY29udGFpbiBhIHBoYW5kbGUgdG8gdGhlCittYWlsYm94IGNvbnRyb2xsZXIgZGV2aWNlIG5vZGUgYW5kIGFuIGFyZ3Mgc3BlY2lmaWVyIHRoYXQgd2lsbCBiZSB0aGUgcGhhbmRsZSB0bwordGhlIGludGVuZGVkIHN1Yi1tYWlsYm94IGNoaWxkIG5vZGUgdG8gYmUgdXNlZCBmb3IgY29tbXVuaWNhdGlvbi4gVGhlIGVxdWl2YWxlbnQKKyJtYm94LW5hbWVzIiBwcm9wZXJ0eSB2YWx1ZSBjYW4gYmUgdXNlZCB0byBnaXZlIGEgbmFtZSB0byB0aGUgY29tbXVuaWNhdGlvbiBjaGFubmVsCit0byBiZSB1c2VkIGJ5IHRoZSBjbGllbnQgdXNlci4KKworCitFeGFtcGxlOgorLS0tLS0tLS0KKworLyogT01BUDQgKi8KK21haWxib3g6IG1haWxib3hANGEwZjQwMDAgeworCWNvbXBhdGlibGUgPSAidGksb21hcDQtbWFpbGJveCI7CisJcmVnID0gPDB4NGEwZjQwMDAgMHgyMDA+OworCWludGVycnVwdHMgPSA8R0lDX1NQSSAyNiBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwl0aSxod21vZHMgPSAibWFpbGJveCI7CisJI21ib3gtY2VsbHMgPSA8MT47CisJdGksbWJveC1udW0tdXNlcnMgPSA8Mz47CisJdGksbWJveC1udW0tZmlmb3MgPSA8OD47CisJbWJveF9pcHU6IG1ib3hfaXB1IHsKKwkJdGksbWJveC10eCA9IDwwIDAgMD47CisJCXRpLG1ib3gtcnggPSA8MSAwIDA+OworCX07CisJbWJveF9kc3A6IG1ib3hfZHNwIHsKKwkJdGksbWJveC10eCA9IDwzIDAgMD47CisJCXRpLG1ib3gtcnggPSA8MiAwIDA+OworCX07Cit9OworCitkc3AgeworCS4uLgorCW1ib3hlcyA9IDwmbWFpbGJveCAmbWJveF9kc3A+OworCS4uLgorfTsKKworLyogQU0zM3h4ICovCittYWlsYm94OiBtYWlsYm94QDQ4MEM4MDAwIHsKKwljb21wYXRpYmxlID0gInRpLG9tYXA0LW1haWxib3giOworCXJlZyA9IDwweDQ4MEM4MDAwIDB4MjAwPjsKKwlpbnRlcnJ1cHRzID0gPDc3PjsKKwl0aSxod21vZHMgPSAibWFpbGJveCI7CisJI21ib3gtY2VsbHMgPSA8MT47CisJdGksbWJveC1udW0tdXNlcnMgPSA8ND47CisJdGksbWJveC1udW0tZmlmb3MgPSA8OD47CisJbWJveF93a3VwbTM6IHdrdXBfbTMgeworCQl0aSxtYm94LXR4ID0gPDAgMCAwPjsKKwkJdGksbWJveC1yeCA9IDwwIDAgMz47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWFpbGJveC9zdGktbWFpbGJveC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWFpbGJveC9zdGktbWFpbGJveC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYxZWVjOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tYWlsYm94L3N0aS1tYWlsYm94LnR4dApAQCAtMCwwICsxLDUxIEBACitTVCBNaWNyb2VsZWN0cm9uaWNzIE1haWxib3ggRHJpdmVyCisKK0VhY2ggU1QgTWFpbGJveCBJUCBjdXJyZW50bHkgY29uc2lzdHMgb2YgNCBpbnN0YW5jZXMgb2YgMzIgY2hhbm5lbHMuICBNZXNzYWdlcworYXJlIHBhc3NlZCBiZXR3ZWVuIEFwcGxpY2F0aW9uIGFuZCBSZW1vdGUgcHJvY2Vzc29ycyB1c2luZyBzaGFyZWQgbWVtb3J5LgorCitDb250cm9sbGVyCistLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUJCTogU2hvdWxkIGJlICJzdCxzdGloNDA3LW1haWxib3giCistIHJlZwkJCTogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIGRldmljZSdzIHJlZ2lzdGVyIHNldAorLSBtYm94LW5hbWUJCTogTmFtZSBvZiB0aGUgbWFpbGJveAorLSAjbWJveC1jZWxsczoJCTogTXVzdCBiZSAyCisJCQkgIDwmcGhhbmRsZSBpbnN0YW5jZSBjaGFubmVsIGRpcmVjdGlvbj4KKwkJCSAgICBwaGFuZGxlICAgOiBMYWJlbCBuYW1lIG9mIGNvbnRyb2xsZXIKKwkJCSAgICBpbnN0YW5jZSAgOiBJbnN0YW5jZSBudW1iZXIKKwkJCSAgICBjaGFubmVsICAgOiBDaGFubmVsIG51bWJlcgorCitPcHRpb25hbCBwcm9wZXJ0aWVzCistIGludGVycnVwdHMJCTogQ29udGFpbnMgdGhlIElSUSBsaW5lIGZvciBhIFJ4IG1haWxib3gKKworRXhhbXBsZToKKworbWFpbGJveDA6IG1haWxib3hAMCAgeworCWNvbXBhdGlibGUJPSAic3Qsc3RpaDQwNy1tYWlsYm94IjsKKwlyZWcJCT0gPDB4MDhmMDAwMDAgMHgxMDAwPjsKKwlpbnRlcnJ1cHRzCT0gPEdJQ19TUEkgMSBJUlFfVFlQRV9OT05FPjsKKwkjbWJveC1jZWxscwk9IDwyPjsKKwltYm94LW5hbWUJPSAiYTkiOworfTsKKworQ2xpZW50CistLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZQkJOiBNYW55IChTZWUgdGhlIGNsaWVudCBkb2NzKQorLSByZWcJCQk6IFNoYXJlZCAoYmV0d2VlbiBBcHBsaWNhdGlvbiBhbmQgUmVtb3RlKSBtZW1vcnkgYWRkcmVzcworLSBtYm94ZXMJCTogU3RhbmRhcmQgcHJvcGVydHkgdG8gc3BlY2lmeSBhIE1haWxib3ggKFNlZSAuL21haWxib3gudHh0KQorCQkJICBDZWxscyBtdXN0IG1hdGNoICdtYm94LWNlbGxzJyAoU2VlIENvbnRyb2xsZXIgZG9jcyBhYm92ZSkKKworT3B0aW9uYWwgcHJvcGVydGllcworLSBtYm94LW5hbWVzCQk6IE5hbWUgZ2l2ZW4gdG8gY2hhbm5lbHMgc2VlbiBpbiB0aGUgJ21ib3hlcycgcHJvcGVydHkuCisKK0V4YW1wbGU6CisKK21haWxib3hfdGVzdCB7CisJY29tcGF0aWJsZQk9ICJtYWlsYm94X3Rlc3QiOworCXJlZwkJPSA8MHhbc2hhcmVkX21lbW9yeV9hZGRyZXNzXSwgW3NoYXJlZF9tZW1vcnlfc2l6ZV0+OworCW1ib3hlcwkJPSA8Jm1haWxib3gyIDAgMT4sIDwmbWFpbGJveDAgMiAxPjsKKwltYm94LW5hbWVzCT0gInR4IiwJInJ4IjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWFydmVsbC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWFydmVsbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWEyYjE2YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tYXJ2ZWxsLnR4dApAQCAtMCwwICsxLDUxNiBAQAorTWFydmVsbCBEaXNjb3ZlcnkgbXY2NFszNDVdNnggU3lzdGVtIENvbnRyb2xsZXIgY2hpcHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBNYXJ2ZWxsIG12NjRbMzQ1XTYwIHNlcmllcyBvZiBzeXN0ZW0gY29udHJvbGxlciBjaGlwcyBjb250YWluCittYW55IG9mIHRoZSBwZXJpcGhlcmFscyBuZWVkZWQgdG8gaW1wbGVtZW50IGEgY29tcGxldGUgY29tcHV0ZXIKK3N5c3RlbS4gIEluIHRoaXMgc2VjdGlvbiwgd2UgZGVmaW5lIGRldmljZSB0cmVlIG5vZGVzIHRvIGRlc2NyaWJlCit0aGUgc3lzdGVtIGNvbnRyb2xsZXIgY2hpcCBpdHNlbGYgYW5kIGVhY2ggb2YgdGhlIHBlcmlwaGVyYWxzCit3aGljaCBpdCBjb250YWlucy4gIENvbXBhdGlibGUgc3RyaW5nIHZhbHVlcyBmb3IgZWFjaCBub2RlIGFyZQorcHJlZml4ZWQgd2l0aCB0aGUgc3RyaW5nICJtYXJ2ZWxsLCIsIGZvciBNYXJ2ZWxsIFRlY2hub2xvZ3kgR3JvdXAgTHRkLgorCisxKSBUaGUgL3N5c3RlbS1jb250cm9sbGVyIG5vZGUKKworICBUaGlzIG5vZGUgaXMgdXNlZCB0byByZXByZXNlbnQgdGhlIHN5c3RlbS1jb250cm9sbGVyIGFuZCBtdXN0IGJlCisgIHByZXNlbnQgd2hlbiB0aGUgc3lzdGVtIHVzZXMgYSBzeXN0ZW0gY29udHJvbGxlciBjaGlwLiBUaGUgdG9wLWxldmVsCisgIHN5c3RlbS1jb250cm9sbGVyIG5vZGUgY29udGFpbnMgaW5mb3JtYXRpb24gdGhhdCBpcyBnbG9iYWwgdG8gYWxsCisgIGRldmljZXMgd2l0aGluIHRoZSBzeXN0ZW0gY29udHJvbGxlciBjaGlwLiBUaGUgbm9kZSBuYW1lIGJlZ2lucworICB3aXRoICJzeXN0ZW0tY29udHJvbGxlciIgZm9sbG93ZWQgYnkgdGhlIHVuaXQgYWRkcmVzcywgd2hpY2ggaXMKKyAgdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgbWVtb3J5LW1hcHBlZCByZWdpc3RlciBzZXQgZm9yIHRoZSBzeXN0ZW0KKyAgY29udHJvbGxlciBjaGlwLgorCisgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgICAtIHJhbmdlcyA6IERlc2NyaWJlcyB0aGUgdHJhbnNsYXRpb24gb2Ygc3lzdGVtIGNvbnRyb2xsZXIgYWRkcmVzc2VzCisgICAgICBmb3IgbWVtb3J5IG1hcHBlZCByZWdpc3RlcnMuCisgICAgLSBjbG9jay1mcmVxdWVuY3k6IENvbnRhaW5zIHRoZSBtYWluIGNsb2NrIGZyZXF1ZW5jeSBmb3IgdGhlIHN5c3RlbQorICAgICAgY29udHJvbGxlciBjaGlwLgorICAgIC0gcmVnIDogVGhpcyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZQorICAgICAgbWVtb3J5LW1hcHBlZCByZWdpc3RlcnMgY29udGFpbmVkIHdpdGhpbiB0aGUgc3lzdGVtIGNvbnRyb2xsZXIKKyAgICAgIGNoaXAuICBUaGUgYWRkcmVzcyBzcGVjaWZpZWQgaW4gdGhlICJyZWciIHByb3BlcnR5IHNob3VsZCBtYXRjaAorICAgICAgdGhlIHVuaXQgYWRkcmVzcyBvZiB0aGUgc3lzdGVtLWNvbnRyb2xsZXIgbm9kZS4KKyAgICAtICNhZGRyZXNzLWNlbGxzIDogQWRkcmVzcyByZXByZXNlbnRhdGlvbiBmb3Igc3lzdGVtIGNvbnRyb2xsZXIKKyAgICAgIGRldmljZXMuICBUaGlzIGZpZWxkIHJlcHJlc2VudHMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8KKyAgICAgIHJlcHJlc2VudCB0aGUgYWRkcmVzcyBvZiB0aGUgbWVtb3J5LW1hcHBlZCByZWdpc3RlcnMgb2YgZGV2aWNlcworICAgICAgd2l0aGluIHRoZSBzeXN0ZW0gY29udHJvbGxlciBjaGlwLgorICAgIC0gI3NpemUtY2VsbHMgOiBTaXplIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgbWVtb3J5LW1hcHBlZAorICAgICAgcmVnaXN0ZXJzIHdpdGhpbiB0aGUgc3lzdGVtIGNvbnRyb2xsZXIgY2hpcC4KKyAgICAtICNpbnRlcnJ1cHQtY2VsbHMgOiBEZWZpbmVzIHRoZSB3aWR0aCBvZiBjZWxscyB1c2VkIHRvIHJlcHJlc2VudAorICAgICAgaW50ZXJydXB0cy4KKworICBPcHRpb25hbCBwcm9wZXJ0aWVzOgorCisgICAgLSBtb2RlbCA6IFRoZSBzcGVjaWZpYyBtb2RlbCBvZiB0aGUgc3lzdGVtIGNvbnRyb2xsZXIgY2hpcC4gIFN1Y2gKKyAgICAgIGFzLCAibXY2NDM2MCIsICJtdjY0NDYwIiwgb3IgIm12NjQ1NjAiLgorICAgIC0gY29tcGF0aWJsZSA6IEEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBjb21wYXRpYmlsaXR5IGlkZW50aWZpZXJzCisgICAgICBvZiB0aGUgc3lzdGVtIGNvbnRyb2xsZXIgY2hpcC4KKworICBUaGUgc3lzdGVtLWNvbnRyb2xsZXIgbm9kZSBjb250YWlucyBjaGlsZCBub2RlcyBmb3IgZWFjaCBzeXN0ZW0KKyAgY29udHJvbGxlciBkZXZpY2UgdGhhdCB0aGUgcGxhdGZvcm0gdXNlcy4gIE5vZGVzIHNob3VsZCBub3QgYmUgY3JlYXRlZAorICBmb3IgZGV2aWNlcyB3aGljaCBleGlzdCBvbiB0aGUgc3lzdGVtIGNvbnRyb2xsZXIgY2hpcCBidXQgYXJlIG5vdCB1c2VkCisKKyAgRXhhbXBsZSBNYXJ2ZWxsIERpc2NvdmVyeSBtdjY0MzYwIHN5c3RlbS1jb250cm9sbGVyIG5vZGU6CisKKyAgICBzeXN0ZW0tY29udHJvbGxlckBmMTAwMDAwMCB7IC8qIE1hcnZlbGwgRGlzY292ZXJ5IG12NjQzNjAgKi8KKwkgICAgI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJICAgICNzaXplLWNlbGxzID0gPDE+OworCSAgICBtb2RlbCA9ICJtdjY0MzYwIjsgICAgICAgICAgICAgICAgICAgICAgLyogRGVmYXVsdCAqLworCSAgICBjb21wYXRpYmxlID0gIm1hcnZlbGwsbXY2NDM2MCI7CisJICAgIGNsb2NrLWZyZXF1ZW5jeSA9IDwxMzMzMzMzMzM+OworCSAgICByZWcgPSA8MHhmMTAwMDAwMCAweDEwMDAwPjsKKwkgICAgdmlydHVhbC1yZWcgPSA8MHhmMTAwMDAwMD47CisJICAgIHJhbmdlcyA9IDwweDg4MDAwMDAwIDB4ODgwMDAwMDAgMHgxMDAwMDAwIC8qIFBDSSAwIEkvTyBTcGFjZSAqLworCQkgICAgMHg4MDAwMDAwMCAweDgwMDAwMDAwIDB4ODAwMDAwMCAvKiBQQ0kgMCBNRU0gU3BhY2UgKi8KKwkJICAgIDB4YTAwMDAwMDAgMHhhMDAwMDAwMCAweDQwMDAwMDAgLyogVXNlciBGTEFTSCAqLworCQkgICAgMHgwMDAwMDAwMCAweGYxMDAwMDAwIDB4MDAxMDAwMCAvKiBCcmlkZ2UncyByZWdzICovCisJCSAgICAweGYyMDAwMDAwIDB4ZjIwMDAwMDAgMHgwMDQwMDAwPjsvKiBJbnRlZ3JhdGVkIFNSQU0gKi8KKworCSAgICBbIGNoaWxkIG5vZGUgZGVmaW5pdGlvbnMuLi4gXQorICAgIH0KKworMikgQ2hpbGQgbm9kZXMgb2YgL3N5c3RlbS1jb250cm9sbGVyCisKKyAgIGEpIE1hcnZlbGwgRGlzY292ZXJ5IE1ESU8gYnVzCisKKyAgIFRoZSBNRElPIGlzIGEgYnVzIHRvIHdoaWNoIHRoZSBQSFkgZGV2aWNlcyBhcmUgY29ubmVjdGVkLiAgRm9yIGVhY2gKKyAgIGRldmljZSB0aGF0IGV4aXN0cyBvbiB0aGlzIGJ1cywgYSBjaGlsZCBub2RlIHNob3VsZCBiZSBjcmVhdGVkLiAgU2VlCisgICB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgUEhZIG5vZGUgYmVsb3cgZm9yIGFuIGV4YW1wbGUgb2YgaG93IHRvIGRlZmluZQorICAgYSBQSFkuCisKKyAgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisgICAgIC0gI2FkZHJlc3MtY2VsbHMgOiBTaG91bGQgYmUgPDE+CisgICAgIC0gI3NpemUtY2VsbHMgOiBTaG91bGQgYmUgPDA+CisgICAgIC0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAibWFydmVsbCxtdjY0MzYwLW1kaW8iCisKKyAgIEV4YW1wbGU6CisKKyAgICAgbWRpbyB7CisJICAgICAjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkgICAgICNzaXplLWNlbGxzID0gPDA+OworCSAgICAgY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLG12NjQzNjAtbWRpbyI7CisKKwkgICAgIGV0aGVybmV0LXBoeUAwIHsKKwkJICAgICAuLi4uLi4KKwkgICAgIH07CisgICAgIH07CisKKworICAgYikgTWFydmVsbCBEaXNjb3ZlcnkgZXRoZXJuZXQgY29udHJvbGxlcgorCisgICBUaGUgRGlzY292ZXIgZXRoZXJuZXQgY29udHJvbGxlciBpcyBkZXNjcmliZWQgd2l0aCB0d28gbGV2ZWxzCisgICBvZiBub2Rlcy4gIFRoZSBmaXJzdCBsZXZlbCBkZXNjcmliZXMgYW4gZXRoZXJuZXQgc2lsaWNvbiBibG9jaworICAgYW5kIHRoZSBzZWNvbmQgbGV2ZWwgZGVzY3JpYmVzIHVwIHRvIDMgZXRoZXJuZXQgbm9kZXMgd2l0aGluCisgICB0aGF0IGJsb2NrLiAgVGhlIHJlYXNvbiBmb3IgdGhlIG11bHRpcGxlIGxldmVscyBpcyB0aGF0IHRoZQorICAgcmVnaXN0ZXJzIGZvciB0aGUgbm9kZSBhcmUgaW50ZXJsZWF2ZWQgd2l0aGluIGEgc2luZ2xlIHNldAorICAgb2YgcmVnaXN0ZXJzLiAgVGhlICJldGhlcm5ldC1ibG9jayIgbGV2ZWwgZGVzY3JpYmVzIHRoZQorICAgc2hhcmVkIHJlZ2lzdGVyIHNldCwgYW5kIHRoZSAiZXRoZXJuZXQiIG5vZGVzIGRlc2NyaWJlIGV0aGVybmV0CisgICBwb3J0LXNwZWNpZmljIHByb3BlcnRpZXMuCisKKyAgIEV0aGVybmV0IGJsb2NrIG5vZGUKKworICAgUmVxdWlyZWQgcHJvcGVydGllczoKKyAgICAgLSAjYWRkcmVzcy1jZWxscyA6IDwxPgorICAgICAtICNzaXplLWNlbGxzIDogPDA+CisgICAgIC0gY29tcGF0aWJsZSA6ICJtYXJ2ZWxsLG12NjQzNjAtZXRoLWJsb2NrIgorICAgICAtIHJlZyA6IE9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoaXMgYmxvY2sKKworICAgT3B0aW9uYWwgcHJvcGVydGllczoKKyAgICAgLSBjbG9ja3MgOiBQaGFuZGxlIHRvIHRoZSBjbG9jayBjb250cm9sIGRldmljZSBhbmQgZ2F0ZSBiaXQKKworICAgRXhhbXBsZSBEaXNjb3ZlcnkgRXRoZXJuZXQgYmxvY2sgbm9kZToKKyAgICAgZXRoZXJuZXQtYmxvY2tAMjAwMCB7CisJICAgICAjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkgICAgICNzaXplLWNlbGxzID0gPDA+OworCSAgICAgY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLG12NjQzNjAtZXRoLWJsb2NrIjsKKwkgICAgIHJlZyA9IDwweDIwMDAgMHgyMDAwPjsKKwkgICAgIGV0aGVybmV0QDAgeworCQkgICAgIC4uLi4uLi4KKwkgICAgIH07CisgICAgIH07CisKKyAgIEV0aGVybmV0IHBvcnQgbm9kZQorCisgICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAgICAtIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgIm1hcnZlbGwsbXY2NDM2MC1ldGgiLgorICAgICAtIHJlZyA6IFNob3VsZCBiZSA8MD4sIDwxPiwgb3IgPDI+LCBhY2NvcmRpbmcgdG8gd2hpY2ggcmVnaXN0ZXJzCisgICAgICAgd2l0aGluIHRoZSBzaWxpY29uIGJsb2NrIHRoZSBkZXZpY2UgdXNlcy4KKyAgICAgLSBpbnRlcnJ1cHRzIDogPGE+IHdoZXJlIGEgaXMgdGhlIGludGVycnVwdCBudW1iZXIgZm9yIHRoZSBwb3J0LgorICAgICAtIGludGVycnVwdC1wYXJlbnQgOiB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyCisgICAgICAgdGhhdCBzZXJ2aWNlcyBpbnRlcnJ1cHRzIGZvciB0aGlzIGRldmljZS4KKyAgICAgLSBwaHkgOiB0aGUgcGhhbmRsZSBmb3IgdGhlIFBIWSBjb25uZWN0ZWQgdG8gdGhpcyBldGhlcm5ldAorICAgICAgIGNvbnRyb2xsZXIuCisgICAgIC0gbG9jYWwtbWFjLWFkZHJlc3MgOiA2IGJ5dGVzLCBNQUMgYWRkcmVzcworCisgICBFeGFtcGxlIERpc2NvdmVyeSBFdGhlcm5ldCBwb3J0IG5vZGU6CisgICAgIGV0aGVybmV0QDAgeworCSAgICAgY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLG12NjQzNjAtZXRoIjsKKwkgICAgIHJlZyA9IDwwPjsKKwkgICAgIGludGVycnVwdHMgPSA8MzI+OworCSAgICAgaW50ZXJydXB0LXBhcmVudCA9IDwmUElDPjsKKwkgICAgIHBoeSA9IDwmUEhZMD47CisJICAgICBsb2NhbC1tYWMtYWRkcmVzcyA9IFsgMDAgMDAgMDAgMDAgMDAgMDAgXTsKKyAgICAgfTsKKworCisKKyAgIGMpIE1hcnZlbGwgRGlzY292ZXJ5IFBIWSBub2RlcworCisgICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAgICAtIGludGVycnVwdHMgOiA8YT4gd2hlcmUgYSBpcyB0aGUgaW50ZXJydXB0IG51bWJlciBmb3IgdGhpcyBwaHkuCisgICAgIC0gaW50ZXJydXB0LXBhcmVudCA6IHRoZSBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgdGhhdAorICAgICAgIHNlcnZpY2VzIGludGVycnVwdHMgZm9yIHRoaXMgZGV2aWNlLgorICAgICAtIHJlZyA6IFRoZSBJRCBudW1iZXIgZm9yIHRoZSBwaHksIHVzdWFsbHkgYSBzbWFsbCBpbnRlZ2VyCisKKyAgIEV4YW1wbGUgRGlzY292ZXJ5IFBIWSBub2RlOgorICAgICBldGhlcm5ldC1waHlAMSB7CisJICAgICBjb21wYXRpYmxlID0gImJyb2FkY29tLGJjbTU0MjEiOworCSAgICAgaW50ZXJydXB0cyA9IDw3Nj47ICAgICAgLyogR1BQIDEyICovCisJICAgICBpbnRlcnJ1cHQtcGFyZW50ID0gPCZQSUM+OworCSAgICAgcmVnID0gPDE+OworICAgICB9OworCisKKyAgIGQpIE1hcnZlbGwgRGlzY292ZXJ5IFNETUEgbm9kZXMKKworICAgUmVwcmVzZW50IERNQSBoYXJkd2FyZSBhc3NvY2lhdGVkIHdpdGggdGhlIE1QU0MgKG11bHRpcHJvdG9jb2wKKyAgIHNlcmlhbCBjb250cm9sbGVycykuCisKKyAgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisgICAgIC0gY29tcGF0aWJsZSA6ICJtYXJ2ZWxsLG12NjQzNjAtc2RtYSIKKyAgICAgLSByZWcgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGlzIGRldmljZQorICAgICAtIGludGVycnVwdHMgOiA8YT4gd2hlcmUgYSBpcyB0aGUgaW50ZXJydXB0IG51bWJlciBmb3IgdGhlIERNQQorICAgICAgIGRldmljZS4KKyAgICAgLSBpbnRlcnJ1cHQtcGFyZW50IDogdGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlcgorICAgICAgIHRoYXQgc2VydmljZXMgaW50ZXJydXB0cyBmb3IgdGhpcyBkZXZpY2UuCisKKyAgIEV4YW1wbGUgRGlzY292ZXJ5IFNETUEgbm9kZToKKyAgICAgc2RtYUA0MDAwIHsKKwkgICAgIGNvbXBhdGlibGUgPSAibWFydmVsbCxtdjY0MzYwLXNkbWEiOworCSAgICAgcmVnID0gPDB4NDAwMCAweGMxOD47CisJICAgICB2aXJ0dWFsLXJlZyA9IDwweGYxMDA0MDAwPjsKKwkgICAgIGludGVycnVwdHMgPSA8MzY+OworCSAgICAgaW50ZXJydXB0LXBhcmVudCA9IDwmUElDPjsKKyAgICAgfTsKKworCisgICBlKSBNYXJ2ZWxsIERpc2NvdmVyeSBCUkcgbm9kZXMKKworICAgUmVwcmVzZW50IGJhdWQgcmF0ZSBnZW5lcmF0b3IgaGFyZHdhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBNUFNDCisgICAobXVsdGlwcm90b2NvbCBzZXJpYWwgY29udHJvbGxlcnMpLgorCisgICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAgICAtIGNvbXBhdGlibGUgOiAibWFydmVsbCxtdjY0MzYwLWJyZyIKKyAgICAgLSByZWcgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGlzIGRldmljZQorICAgICAtIGNsb2NrLXNyYyA6IEEgdmFsdWUgZnJvbSAwIHRvIDE1IHdoaWNoIHNlbGVjdHMgdGhlIGNsb2NrCisgICAgICAgc291cmNlIGZvciB0aGUgYmF1ZCByYXRlIGdlbmVyYXRvci4gIFRoaXMgdmFsdWUgY29ycmVzcG9uZHMKKyAgICAgICB0byB0aGUgQ0xLUyB2YWx1ZSBpbiB0aGUgQlJHeCBjb25maWd1cmF0aW9uIHJlZ2lzdGVyLiAgU2VlCisgICAgICAgdGhlIG12NjR4NjAgVXNlcidzIE1hbnVhbC4KKyAgICAgLSBjbG9jay1mcmVxdWVuY2UgOiBUaGUgZnJlcXVlbmN5IChpbiBIeikgb2YgdGhlIGJhdWQgcmF0ZQorICAgICAgIGdlbmVyYXRvcidzIGlucHV0IGNsb2NrLgorICAgICAtIGN1cnJlbnQtc3BlZWQgOiBUaGUgY3VycmVudCBzcGVlZCBzZXR0aW5nIChwcmVzdW1hYmx5IGJ5CisgICAgICAgZmlybXdhcmUpIG9mIHRoZSBiYXVkIHJhdGUgZ2VuZXJhdG9yLgorCisgICBFeGFtcGxlIERpc2NvdmVyeSBCUkcgbm9kZToKKyAgICAgYnJnQGIyMDAgeworCSAgICAgY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLG12NjQzNjAtYnJnIjsKKwkgICAgIHJlZyA9IDwweGIyMDAgMHg4PjsKKwkgICAgIGNsb2NrLXNyYyA9IDw4PjsKKwkgICAgIGNsb2NrLWZyZXF1ZW5jeSA9IDwxMzMzMzMzMzM+OworCSAgICAgY3VycmVudC1zcGVlZCA9IDw5NjAwPjsKKyAgICAgfTsKKworCisgICBmKSBNYXJ2ZWxsIERpc2NvdmVyeSBDVU5JVCBub2RlcworCisgICBSZXByZXNlbnQgdGhlIFNlcmlhbCBDb21tdW5pY2F0aW9ucyBVbml0IGRldmljZSBoYXJkd2FyZS4KKworICAgUmVxdWlyZWQgcHJvcGVydGllczoKKyAgICAgLSByZWcgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGlzIGRldmljZQorCisgICBFeGFtcGxlIERpc2NvdmVyeSBDVU5JVCBub2RlOgorICAgICBjdW5pdEBmMjAwIHsKKwkgICAgIHJlZyA9IDwweGYyMDAgMHgyMDA+OworICAgICB9OworCisKKyAgIGcpIE1hcnZlbGwgRGlzY292ZXJ5IE1QU0NST1VUSU5HIG5vZGVzCisKKyAgIFJlcHJlc2VudCB0aGUgRGlzY292ZXJ5J3MgTVBTQyByb3V0aW5nIGhhcmR3YXJlCisKKyAgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisgICAgIC0gcmVnIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhpcyBkZXZpY2UKKworICAgRXhhbXBsZSBEaXNjb3ZlcnkgQ1VOSVQgbm9kZToKKyAgICAgbXBzY3JvdXRpbmdAYjUwMCB7CisJICAgICByZWcgPSA8MHhiNDAwIDB4Yz47CisgICAgIH07CisKKworICAgaCkgTWFydmVsbCBEaXNjb3ZlcnkgTVBTQ0lOVFIgbm9kZXMKKworICAgUmVwcmVzZW50IHRoZSBEaXNjb3ZlcnkncyBNUFNDIERNQSBpbnRlcnJ1cHQgaGFyZHdhcmUgcmVnaXN0ZXJzCisgICAoU0RNQSBjYXVzZSBhbmQgbWFzayByZWdpc3RlcnMpLgorCisgICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAgICAtIHJlZyA6IE9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoaXMgZGV2aWNlCisKKyAgIEV4YW1wbGUgRGlzY292ZXJ5IE1QU0NJTlRSIG5vZGU6CisgICAgIG1wc2ludHJAYjgwMCB7CisJICAgICByZWcgPSA8MHhiODAwIDB4MTAwPjsKKyAgICAgfTsKKworCisgICBpKSBNYXJ2ZWxsIERpc2NvdmVyeSBNUFNDIG5vZGVzCisKKyAgIFJlcHJlc2VudCB0aGUgRGlzY292ZXJ5J3MgTVBTQyAoTXVsdGlwcm90b2NvbCBTZXJpYWwgQ29udHJvbGxlcikKKyAgIHNlcmlhbCBwb3J0LgorCisgICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAgICAtIGNvbXBhdGlibGUgOiAibWFydmVsbCxtdjY0MzYwLW1wc2MiCisgICAgIC0gcmVnIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhpcyBkZXZpY2UKKyAgICAgLSBzZG1hIDogdGhlIHBoYW5kbGUgZm9yIHRoZSBTRE1BIG5vZGUgdXNlZCBieSB0aGlzIHBvcnQKKyAgICAgLSBicmcgOiB0aGUgcGhhbmRsZSBmb3IgdGhlIEJSRyBub2RlIHVzZWQgYnkgdGhpcyBwb3J0CisgICAgIC0gY3VuaXQgOiB0aGUgcGhhbmRsZSBmb3IgdGhlIENVTklUIG5vZGUgdXNlZCBieSB0aGlzIHBvcnQKKyAgICAgLSBtcHNjcm91dGluZyA6IHRoZSBwaGFuZGxlIGZvciB0aGUgTVBTQ1JPVVRJTkcgbm9kZSB1c2VkIGJ5IHRoaXMgcG9ydAorICAgICAtIG1wc2NpbnRyIDogdGhlIHBoYW5kbGUgZm9yIHRoZSBNUFNDSU5UUiBub2RlIHVzZWQgYnkgdGhpcyBwb3J0CisgICAgIC0gY2VsbC1pbmRleCA6IHRoZSBoYXJkd2FyZSBpbmRleCBvZiB0aGlzIGNlbGwgaW4gdGhlIE1QU0MgY29yZQorICAgICAtIG1heF9pZGxlIDogdmFsdWUgbmVlZGVkIGZvciBNUFNDIENIUjMgKE1heGltdW0gRnJhbWUgTGVuZ3RoKQorICAgICAgIHJlZ2lzdGVyCisgICAgIC0gaW50ZXJydXB0cyA6IDxhPiB3aGVyZSBhIGlzIHRoZSBpbnRlcnJ1cHQgbnVtYmVyIGZvciB0aGUgTVBTQy4KKyAgICAgLSBpbnRlcnJ1cHQtcGFyZW50IDogdGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlcgorICAgICAgIHRoYXQgc2VydmljZXMgaW50ZXJydXB0cyBmb3IgdGhpcyBkZXZpY2UuCisKKyAgIEV4YW1wbGUgRGlzY292ZXJ5IE1QU0NJTlRSIG5vZGU6CisgICAgIG1wc2NAODAwMCB7CisJICAgICBjb21wYXRpYmxlID0gIm1hcnZlbGwsbXY2NDM2MC1tcHNjIjsKKwkgICAgIHJlZyA9IDwweDgwMDAgMHgzOD47CisJICAgICB2aXJ0dWFsLXJlZyA9IDwweGYxMDA4MDAwPjsKKwkgICAgIHNkbWEgPSA8JlNETUEwPjsKKwkgICAgIGJyZyA9IDwmQlJHMD47CisJICAgICBjdW5pdCA9IDwmQ1VOSVQ+OworCSAgICAgbXBzY3JvdXRpbmcgPSA8Jk1QU0NST1VUSU5HPjsKKwkgICAgIG1wc2NpbnRyID0gPCZNUFNDSU5UUj47CisJICAgICBjZWxsLWluZGV4ID0gPDA+OworCSAgICAgbWF4X2lkbGUgPSA8NDA+OworCSAgICAgaW50ZXJydXB0cyA9IDw0MD47CisJICAgICBpbnRlcnJ1cHQtcGFyZW50ID0gPCZQSUM+OworICAgICB9OworCisKKyAgIGopIE1hcnZlbGwgRGlzY292ZXJ5IFdhdGNoIERvZyBUaW1lciBub2RlcworCisgICBSZXByZXNlbnQgdGhlIERpc2NvdmVyeSdzIHdhdGNoZG9nIHRpbWVyIGhhcmR3YXJlCisKKyAgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisgICAgIC0gY29tcGF0aWJsZSA6ICJtYXJ2ZWxsLG12NjQzNjAtd2R0IgorICAgICAtIHJlZyA6IE9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoaXMgZGV2aWNlCisKKyAgIEV4YW1wbGUgRGlzY292ZXJ5IFdhdGNoIERvZyBUaW1lciBub2RlOgorICAgICB3ZHRAYjQxMCB7CisJICAgICBjb21wYXRpYmxlID0gIm1hcnZlbGwsbXY2NDM2MC13ZHQiOworCSAgICAgcmVnID0gPDB4YjQxMCAweDg+OworICAgICB9OworCisKKyAgIGspIE1hcnZlbGwgRGlzY292ZXJ5IEkyQyBub2RlcworCisgICBSZXByZXNlbnQgdGhlIERpc2NvdmVyeSdzIEkyQyBoYXJkd2FyZQorCisgICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAgICAtIGRldmljZV90eXBlIDogImkyYyIKKyAgICAgLSBjb21wYXRpYmxlIDogIm1hcnZlbGwsbXY2NDM2MC1pMmMiCisgICAgIC0gcmVnIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhpcyBkZXZpY2UKKyAgICAgLSBpbnRlcnJ1cHRzIDogPGE+IHdoZXJlIGEgaXMgdGhlIGludGVycnVwdCBudW1iZXIgZm9yIHRoZSBJMkMuCisgICAgIC0gaW50ZXJydXB0LXBhcmVudCA6IHRoZSBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIKKyAgICAgICB0aGF0IHNlcnZpY2VzIGludGVycnVwdHMgZm9yIHRoaXMgZGV2aWNlLgorCisgICBFeGFtcGxlIERpc2NvdmVyeSBJMkMgbm9kZToKKwkgICAgIGNvbXBhdGlibGUgPSAibWFydmVsbCxtdjY0MzYwLWkyYyI7CisJICAgICByZWcgPSA8MHhjMDAwIDB4MjA+OworCSAgICAgdmlydHVhbC1yZWcgPSA8MHhmMTAwYzAwMD47CisJICAgICBpbnRlcnJ1cHRzID0gPDM3PjsKKwkgICAgIGludGVycnVwdC1wYXJlbnQgPSA8JlBJQz47CisgICAgIH07CisKKworICAgbCkgTWFydmVsbCBEaXNjb3ZlcnkgUElDIChQcm9ncmFtbWFibGUgSW50ZXJydXB0IENvbnRyb2xsZXIpIG5vZGVzCisKKyAgIFJlcHJlc2VudCB0aGUgRGlzY292ZXJ5J3MgUElDIGhhcmR3YXJlCisKKyAgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisgICAgIC0gI2ludGVycnVwdC1jZWxscyA6IDwxPgorICAgICAtICNhZGRyZXNzLWNlbGxzIDogPDA+CisgICAgIC0gY29tcGF0aWJsZSA6ICJtYXJ2ZWxsLG12NjQzNjAtcGljIgorICAgICAtIHJlZyA6IE9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoaXMgZGV2aWNlCisgICAgIC0gaW50ZXJydXB0LWNvbnRyb2xsZXIKKworICAgRXhhbXBsZSBEaXNjb3ZlcnkgUElDIG5vZGU6CisgICAgIHBpYyB7CisJICAgICAjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCSAgICAgI2FkZHJlc3MtY2VsbHMgPSA8MD47CisJICAgICBjb21wYXRpYmxlID0gIm1hcnZlbGwsbXY2NDM2MC1waWMiOworCSAgICAgcmVnID0gPDB4MCAweDg4PjsKKwkgICAgIGludGVycnVwdC1jb250cm9sbGVyOworICAgICB9OworCisKKyAgIG0pIE1hcnZlbGwgRGlzY292ZXJ5IE1QUCAoTXVsdGlwdXJwb3NlIFBpbnMpIG11bHRpcGxleGluZyBub2RlcworCisgICBSZXByZXNlbnQgdGhlIERpc2NvdmVyeSdzIE1QUCBoYXJkd2FyZQorCisgICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAgICAtIGNvbXBhdGlibGUgOiAibWFydmVsbCxtdjY0MzYwLW1wcCIKKyAgICAgLSByZWcgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGlzIGRldmljZQorCisgICBFeGFtcGxlIERpc2NvdmVyeSBNUFAgbm9kZToKKyAgICAgbXBwQGYwMDAgeworCSAgICAgY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLG12NjQzNjAtbXBwIjsKKwkgICAgIHJlZyA9IDwweGYwMDAgMHgxMD47CisgICAgIH07CisKKworICAgbikgTWFydmVsbCBEaXNjb3ZlcnkgR1BQIChHZW5lcmFsIFB1cnBvc2UgUGlucykgbm9kZXMKKworICAgUmVwcmVzZW50IHRoZSBEaXNjb3ZlcnkncyBHUFAgaGFyZHdhcmUKKworICAgUmVxdWlyZWQgcHJvcGVydGllczoKKyAgICAgLSBjb21wYXRpYmxlIDogIm1hcnZlbGwsbXY2NDM2MC1ncHAiCisgICAgIC0gcmVnIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhpcyBkZXZpY2UKKworICAgRXhhbXBsZSBEaXNjb3ZlcnkgR1BQIG5vZGU6CisgICAgIGdwcEBmMDAwIHsKKwkgICAgIGNvbXBhdGlibGUgPSAibWFydmVsbCxtdjY0MzYwLWdwcCI7CisJICAgICByZWcgPSA8MHhmMTAwIDB4MjA+OworICAgICB9OworCisKKyAgIG8pIE1hcnZlbGwgRGlzY292ZXJ5IFBDSSBob3N0IGJyaWRnZSBub2RlCisKKyAgIFJlcHJlc2VudHMgdGhlIERpc2NvdmVyeSdzIFBDSSBob3N0IGJyaWRnZSBkZXZpY2UuICBUaGUgcHJvcGVydGllcworICAgZm9yIHRoaXMgbm9kZSBjb25mb3JtIHRvIFJldiAyLjEgb2YgdGhlIFBDSSBCdXMgQmluZGluZyB0byBJRUVFCisgICAxMjc1LTE5OTQuICBBIHR5cGljYWwgdmFsdWUgZm9yIHRoZSBjb21wYXRpYmxlIHByb3BlcnR5IGlzCisgICAibWFydmVsbCxtdjY0MzYwLXBjaSIuCisKKyAgIEV4YW1wbGUgRGlzY292ZXJ5IFBDSSBob3N0IGJyaWRnZSBub2RlCisgICAgIHBjaUA4MDAwMDAwMCB7CisJICAgICAjYWRkcmVzcy1jZWxscyA9IDwzPjsKKwkgICAgICNzaXplLWNlbGxzID0gPDI+OworCSAgICAgI2ludGVycnVwdC1jZWxscyA9IDwxPjsKKwkgICAgIGRldmljZV90eXBlID0gInBjaSI7CisJICAgICBjb21wYXRpYmxlID0gIm1hcnZlbGwsbXY2NDM2MC1wY2kiOworCSAgICAgcmVnID0gPDB4Y2Y4IDB4OD47CisJICAgICByYW5nZXMgPSA8MHgwMTAwMDAwMCAweDAgICAgICAgIDB4MAorCQkJICAgICAweDg4MDAwMDAwIDB4MCAweDAxMDAwMDAwCisJCSAgICAgICAweDAyMDAwMDAwIDB4MCAweDgwMDAwMDAwCisJCQkgICAgIDB4ODAwMDAwMDAgMHgwIDB4MDgwMDAwMDA+OworCSAgICAgYnVzLXJhbmdlID0gPDAgMjU1PjsKKwkgICAgIGNsb2NrLWZyZXF1ZW5jeSA9IDw2NjAwMDAwMD47CisJICAgICBpbnRlcnJ1cHQtcGFyZW50ID0gPCZQSUM+OworCSAgICAgaW50ZXJydXB0LW1hcC1tYXNrID0gPDB4ZjgwMCAweDAgMHgwIDB4Nz47CisJICAgICBpbnRlcnJ1cHQtbWFwID0gPAorCQkgICAgIC8qIElEU0VMIDB4MGEgKi8KKwkJICAgICAweDUwMDAgMCAwIDEgJlBJQyA4MAorCQkgICAgIDB4NTAwMCAwIDAgMiAmUElDIDgxCisJCSAgICAgMHg1MDAwIDAgMCAzICZQSUMgOTEKKwkJICAgICAweDUwMDAgMCAwIDQgJlBJQyA5MworCisJCSAgICAgLyogSURTRUwgMHgwYiAqLworCQkgICAgIDB4NTgwMCAwIDAgMSAmUElDIDkxCisJCSAgICAgMHg1ODAwIDAgMCAyICZQSUMgOTMKKwkJICAgICAweDU4MDAgMCAwIDMgJlBJQyA4MAorCQkgICAgIDB4NTgwMCAwIDAgNCAmUElDIDgxCisKKwkJICAgICAvKiBJRFNFTCAweDBjICovCisJCSAgICAgMHg2MDAwIDAgMCAxICZQSUMgOTEKKwkJICAgICAweDYwMDAgMCAwIDIgJlBJQyA5MworCQkgICAgIDB4NjAwMCAwIDAgMyAmUElDIDgwCisJCSAgICAgMHg2MDAwIDAgMCA0ICZQSUMgODEKKworCQkgICAgIC8qIElEU0VMIDB4MGQgKi8KKwkJICAgICAweDY4MDAgMCAwIDEgJlBJQyA5MworCQkgICAgIDB4NjgwMCAwIDAgMiAmUElDIDgwCisJCSAgICAgMHg2ODAwIDAgMCAzICZQSUMgODEKKwkJICAgICAweDY4MDAgMCAwIDQgJlBJQyA5MQorCSAgICAgPjsKKyAgICAgfTsKKworCisgICBwKSBNYXJ2ZWxsIERpc2NvdmVyeSBDUFUgRXJyb3Igbm9kZXMKKworICAgUmVwcmVzZW50IHRoZSBEaXNjb3ZlcnkncyBDUFUgZXJyb3IgaGFuZGxlciBkZXZpY2UuCisKKyAgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisgICAgIC0gY29tcGF0aWJsZSA6ICJtYXJ2ZWxsLG12NjQzNjAtY3B1LWVycm9yIgorICAgICAtIHJlZyA6IE9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoaXMgZGV2aWNlCisgICAgIC0gaW50ZXJydXB0cyA6IHRoZSBpbnRlcnJ1cHQgbnVtYmVyIGZvciB0aGlzIGRldmljZQorICAgICAtIGludGVycnVwdC1wYXJlbnQgOiB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyCisgICAgICAgdGhhdCBzZXJ2aWNlcyBpbnRlcnJ1cHRzIGZvciB0aGlzIGRldmljZS4KKworICAgRXhhbXBsZSBEaXNjb3ZlcnkgQ1BVIEVycm9yIG5vZGU6CisgICAgIGNwdS1lcnJvckAwMDcwIHsKKwkgICAgIGNvbXBhdGlibGUgPSAibWFydmVsbCxtdjY0MzYwLWNwdS1lcnJvciI7CisJICAgICByZWcgPSA8MHg3MCAweDEwIDB4MTI4IDB4Mjg+OworCSAgICAgaW50ZXJydXB0cyA9IDwzPjsKKwkgICAgIGludGVycnVwdC1wYXJlbnQgPSA8JlBJQz47CisgICAgIH07CisKKworICAgcSkgTWFydmVsbCBEaXNjb3ZlcnkgU1JBTSBDb250cm9sbGVyIG5vZGVzCisKKyAgIFJlcHJlc2VudCB0aGUgRGlzY292ZXJ5J3MgU1JBTSBjb250cm9sbGVyIGRldmljZS4KKworICAgUmVxdWlyZWQgcHJvcGVydGllczoKKyAgICAgLSBjb21wYXRpYmxlIDogIm1hcnZlbGwsbXY2NDM2MC1zcmFtLWN0cmwiCisgICAgIC0gcmVnIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhpcyBkZXZpY2UKKyAgICAgLSBpbnRlcnJ1cHRzIDogdGhlIGludGVycnVwdCBudW1iZXIgZm9yIHRoaXMgZGV2aWNlCisgICAgIC0gaW50ZXJydXB0LXBhcmVudCA6IHRoZSBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIKKyAgICAgICB0aGF0IHNlcnZpY2VzIGludGVycnVwdHMgZm9yIHRoaXMgZGV2aWNlLgorCisgICBFeGFtcGxlIERpc2NvdmVyeSBTUkFNIENvbnRyb2xsZXIgbm9kZToKKyAgICAgc3JhbS1jdHJsQDAzODAgeworCSAgICAgY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLG12NjQzNjAtc3JhbS1jdHJsIjsKKwkgICAgIHJlZyA9IDwweDM4MCAweDgwPjsKKwkgICAgIGludGVycnVwdHMgPSA8MTM+OworCSAgICAgaW50ZXJydXB0LXBhcmVudCA9IDwmUElDPjsKKyAgICAgfTsKKworCisgICByKSBNYXJ2ZWxsIERpc2NvdmVyeSBQQ0kgRXJyb3IgSGFuZGxlciBub2RlcworCisgICBSZXByZXNlbnQgdGhlIERpc2NvdmVyeSdzIFBDSSBlcnJvciBoYW5kbGVyIGRldmljZS4KKworICAgUmVxdWlyZWQgcHJvcGVydGllczoKKyAgICAgLSBjb21wYXRpYmxlIDogIm1hcnZlbGwsbXY2NDM2MC1wY2ktZXJyb3IiCisgICAgIC0gcmVnIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhpcyBkZXZpY2UKKyAgICAgLSBpbnRlcnJ1cHRzIDogdGhlIGludGVycnVwdCBudW1iZXIgZm9yIHRoaXMgZGV2aWNlCisgICAgIC0gaW50ZXJydXB0LXBhcmVudCA6IHRoZSBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIKKyAgICAgICB0aGF0IHNlcnZpY2VzIGludGVycnVwdHMgZm9yIHRoaXMgZGV2aWNlLgorCisgICBFeGFtcGxlIERpc2NvdmVyeSBQQ0kgRXJyb3IgSGFuZGxlciBub2RlOgorICAgICBwY2ktZXJyb3JAMWQ0MCB7CisJICAgICBjb21wYXRpYmxlID0gIm1hcnZlbGwsbXY2NDM2MC1wY2ktZXJyb3IiOworCSAgICAgcmVnID0gPDB4MWQ0MCAweDQwIDB4YzI4IDB4ND47CisJICAgICBpbnRlcnJ1cHRzID0gPDEyPjsKKwkgICAgIGludGVycnVwdC1wYXJlbnQgPSA8JlBJQz47CisgICAgIH07CisKKworICAgcykgTWFydmVsbCBEaXNjb3ZlcnkgTWVtb3J5IENvbnRyb2xsZXIgbm9kZXMKKworICAgUmVwcmVzZW50IHRoZSBEaXNjb3ZlcnkncyBtZW1vcnkgY29udHJvbGxlciBkZXZpY2UuCisKKyAgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisgICAgIC0gY29tcGF0aWJsZSA6ICJtYXJ2ZWxsLG12NjQzNjAtbWVtLWN0cmwiCisgICAgIC0gcmVnIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhpcyBkZXZpY2UKKyAgICAgLSBpbnRlcnJ1cHRzIDogdGhlIGludGVycnVwdCBudW1iZXIgZm9yIHRoaXMgZGV2aWNlCisgICAgIC0gaW50ZXJydXB0LXBhcmVudCA6IHRoZSBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIKKyAgICAgICB0aGF0IHNlcnZpY2VzIGludGVycnVwdHMgZm9yIHRoaXMgZGV2aWNlLgorCisgICBFeGFtcGxlIERpc2NvdmVyeSBNZW1vcnkgQ29udHJvbGxlciBub2RlOgorICAgICBtZW0tY3RybEAxNDAwIHsKKwkgICAgIGNvbXBhdGlibGUgPSAibWFydmVsbCxtdjY0MzYwLW1lbS1jdHJsIjsKKwkgICAgIHJlZyA9IDwweDE0MDAgMHg2MD47CisJICAgICBpbnRlcnJ1cHRzID0gPDE3PjsKKwkgICAgIGludGVycnVwdC1wYXJlbnQgPSA8JlBJQz47CisgICAgIH07CisKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2F0bWVsLWlzaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvYXRtZWwtaXNpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTFmMDA4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2F0bWVsLWlzaS50eHQKQEAgLTAsMCArMSw1MSBAQAorQXRtZWwgSW1hZ2UgU2Vuc29yIEludGVyZmFjZSAoSVNJKSBTb0MgQ2FtZXJhIFN1YnN5c3RlbQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBtdXN0IGJlICJhdG1lbCxhdDkxc2FtOWc0NS1pc2kiCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVycyBzZXQgZm9yIHRoZSBkZXZpY2U7CistIGludGVycnVwdHM6IHNob3VsZCBjb250YWluIElSUSBsaW5lIGZvciB0aGUgSVNJOworLSBjbG9ja3M6IGxpc3Qgb2YgY2xvY2sgc3BlY2lmaWVycywgY29ycmVzcG9uZGluZyB0byBlbnRyaWVzIGluCisgICAgICAgICAgdGhlIGNsb2NrLW5hbWVzIHByb3BlcnR5OworLSBjbG9jay1uYW1lczogbXVzdCBjb250YWluICJpc2lfY2xrIiwgd2hpY2ggaXMgdGhlIGlzaSBwZXJpcGhlcmlhbCBjbG9jay4KKworSVNJIHN1cHBvcnRzIGEgc2luZ2xlIHBvcnQgbm9kZSB3aXRoIHBhcmFsbGVsIGJ1cy4gSXQgc2hvdWxkIGNvbnRhaW4gb25lCisncG9ydCcgY2hpbGQgbm9kZSB3aXRoIGNoaWxkICdlbmRwb2ludCcgbm9kZS4gUGxlYXNlIHJlZmVyIHRvIHRoZSBiaW5kaW5ncworZGVmaW5lZCBpbiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvdmlkZW8taW50ZXJmYWNlcy50eHQuCisKK0V4YW1wbGU6CisJaXNpOiBpc2lAZjAwMzQwMDAgeworCQljb21wYXRpYmxlID0gImF0bWVsLGF0OTFzYW05ZzQ1LWlzaSI7CisJCXJlZyA9IDwweGYwMDM0MDAwIDB4NDAwMD47CisJCWludGVycnVwdHMgPSA8MzcgSVJRX1RZUEVfTEVWRUxfSElHSCA1PjsKKworCQljbG9ja3MgPSA8JmlzaV9jbGs+OworCQljbG9jay1uYW1lcyA9ICJpc2lfY2xrIjsKKworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfaXNpPjsKKworCQlwb3J0IHsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJCWlzaV8wOiBlbmRwb2ludCB7CisJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZvdjI2NDBfMD47CisJCQkJYnVzLXdpZHRoID0gPDg+OworCQkJfTsKKwkJfTsKKwl9OworCisJaTJjMTogaTJjQGYwMDE4MDAwIHsKKwkJb3YyNjQwOiBjYW1lcmFAMHgzMCB7CisJCQljb21wYXRpYmxlID0gIm92dGksb3YyNjQwIjsKKwkJCXJlZyA9IDwweDMwPjsKKworCQkJcG9ydCB7CisJCQkJb3YyNjQwXzA6IGVuZHBvaW50IHsKKwkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZpc2lfMD47CisJCQkJCWJ1cy13aWR0aCA9IDw4PjsKKwkJCQl9OworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2NvZGEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2NvZGEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4NjVkMDQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvY29kYS50eHQKQEAgLTAsMCArMSwzMCBAQAorQ2hpcHMmTWVkaWEgQ29kYSBtdWx0aS1zdGFuZGFyZCBjb2RlYyBJUAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitDb2RhIGNvZGVjIElQcyBhcmUgcHJlc2VudCBpbiBpLk1YIFNvQ3MgaW4gdmFyaW91cyB2ZXJzaW9ucywKK2NhbGxlZCBWUFUgKFZpZGVvIFByb2Nlc3NpbmcgVW5pdCkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImZzbCw8Y2hpcD4tc3JjIiBmb3IgaS5NWCBTb0NzOgorICAoYSkgImZzbCxpbXgyNy12cHUiIGZvciBDb2RhRHg2IHByZXNlbnQgaW4gaS5NWDI3CisgIChiKSAiZnNsLGlteDUzLXZwdSIgZm9yIENPREE3NTQxIHByZXNlbnQgaW4gaS5NWDUzCisgIChjKSAiZnNsLGlteDZxLXZwdSIgZm9yIENPREE5NjAgcHJlc2VudCBpbiBpLk1YNnEKKy0gcmVnOiBzaG91bGQgYmUgcmVnaXN0ZXIgYmFzZSBhbmQgbGVuZ3RoIGFzIGRvY3VtZW50ZWQgaW4gdGhlCisgIFNvQyByZWZlcmVuY2UgbWFudWFsCistIGludGVycnVwdHMgOiBTaG91bGQgY29udGFpbiB0aGUgVlBVIGludGVycnVwdC4gRm9yIENPREE5NjAsCisgIGEgc2Vjb25kIGludGVycnVwdCBpcyBuZWVkZWQgZm9yIHRoZSBNSlBFRyB1bml0LgorLSBjbG9ja3MgOiBTaG91bGQgY29udGFpbiB0aGUgYWhiIGFuZCBwZXIgY2xvY2tzLCBpbiB0aGUgb3JkZXIKKyAgZGV0ZXJtaW5lZCBieSB0aGUgY2xvY2stbmFtZXMgcHJvcGVydHkuCistIGNsb2NrLW5hbWVzIDogU2hvdWxkIGJlICJhaGIiLCAicGVyIgorLSBpcmFtIDogcGhhbmRsZSBwb2ludGluZyB0byB0aGUgU1JBTSBkZXZpY2Ugbm9kZQorCitFeGFtcGxlOgorCit2cHU6IHZwdUA2M2ZmNDAwMCB7CisJY29tcGF0aWJsZSA9ICJmc2wsaW14NTMtdnB1IjsKKwlyZWcgPSA8MHg2M2ZmNDAwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8OT47CisJY2xvY2tzID0gPCZjbGtzIDYzPiwgPCZjbGtzIDYzPjsKKwljbG9jay1uYW1lcyA9ICJhaGIiLCAicGVyIjsKKwlpcmFtID0gPCZvY3JhbT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2V4eW5vcy1maW1jLWxpdGUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2V4eW5vcy1maW1jLWxpdGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiZjZmYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvZXh5bm9zLWZpbWMtbGl0ZS50eHQKQEAgLTAsMCArMSwxNiBAQAorRXh5bm9zNHgxMi9FeHlub3M1IFNvQyBzZXJpZXMgY2FtZXJhIGhvc3QgaW50ZXJmYWNlIChGSU1DLUxJVEUpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZQk6IHNob3VsZCBiZSBvbmUgb2Y6CisJCSAgInNhbXN1bmcsZXh5bm9zNDIxMi1maW1jLWxpdGUiIGZvciBFeHlub3M0MjEyLzQ0MTIgU29DcywKKwkJICAic2Ftc3VuZyxleHlub3M1MjUwLWZpbWMtbGl0ZSIgZm9yIEV4eW5vczUyNTAgY29tcGF0aWJsZQorCQkgICBkZXZpY2VzOworLSByZWcJCTogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSBkZXZpY2UgbWVtb3J5IG1hcHBlZAorCQkgIHJlZ2lzdGVyczsKKy0gaW50ZXJydXB0cwk6IHNob3VsZCBjb250YWluIEZJTUMtTElURSBpbnRlcnJ1cHQ7CistIGNsb2Nrcwk6IEZJTUMgTElURSBnYXRlIGNsb2NrIHNob3VsZCBiZSBzcGVjaWZpZWQgaW4gdGhpcyBwcm9wZXJ0eS4KKy0gY2xvY2stbmFtZXMJOiBzaG91bGQgY29udGFpbiAiZmxpdGUiIGVudHJ5LgorCitFYWNoIEZJTUMgZGV2aWNlIHNob3VsZCBoYXZlIGFuIGFsaWFzIGluIHRoZSBhbGlhc2VzIG5vZGUsIGluIHRoZSBmb3JtIG9mCitmaW1jLWxpdGU8bj4sIHdoZXJlIDxuPiBpcyBhbiBpbnRlZ2VyIHNwZWNpZnlpbmcgdGhlIElQIGJsb2NrIGluc3RhbmNlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2V4eW5vcy1qcGVnLWNvZGVjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9leHlub3MtanBlZy1jb2RlYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg5NDFkYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9leHlub3MtanBlZy1jb2RlYy50eHQKQEAgLTAsMCArMSwxNiBAQAorU2Ftc3VuZyBTNVAvRVhZTk9TIFNvQyBzZXJpZXMgSlBFRyBjb2RlYworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUJOiBzaG91bGQgYmUgb25lIG9mOgorCQkgICJzYW1zdW5nLHM1cHYyMTAtanBlZyIsICJzYW1zdW5nLGV4eW5vczQyMTAtanBlZyIsCisJCSAgInNhbXN1bmcsZXh5bm9zMzI1MC1qcGVnIiwgInNhbXN1bmcsZXh5bm9zNTQyMC1qcGVnIiwKKwkJICAic2Ftc3VuZyxleHlub3M1NDMzLWpwZWciOworLSByZWcJCTogYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBKUEVHIGNvZGVjIElQIHJlZ2lzdGVyIHNldDsKKy0gaW50ZXJydXB0cwk6IHNwZWNpZmllcyB0aGUgSlBFRyBjb2RlYyBJUCBpbnRlcnJ1cHQ7CistIGNsb2NrLW5hbWVzICAgOiBzaG91bGQgY29udGFpbjoKKwkJICAgLSAianBlZyIgZm9yIHRoZSBjb3JlIGdhdGUgY2xvY2ssCisJCSAgIC0gInNjbGsiIGZvciB0aGUgc3BlY2lhbCBjbG9jayAob3B0aW9uYWwpLgorLSBjbG9ja3MJOiBzaG91bGQgY29udGFpbiB0aGUgY2xvY2sgc3BlY2lmaWVyIGFuZCBjbG9jayBJRCBsaXN0CisJCSAgbWF0Y2hpbmcgZW50cmllcyBpbiB0aGUgY2xvY2stbmFtZXMgcHJvcGVydHk7IGZyb20KKwkJICB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmdzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2V4eW5vczQtZmltYy1pcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvZXh5bm9zNC1maW1jLWlzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWM5YWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2V4eW5vczQtZmltYy1pcy50eHQKQEAgLTAsMCArMSw0OSBAQAorRXh5bm9zNHgxMiBTb0Mgc2VyaWVzIEltYWdpbmcgU3Vic3lzdGVtIChGSU1DLUlTKQorCitUaGUgRklNQy1JUyBpcyBhIHN1YnN5c3RlbSBmb3IgcHJvY2Vzc2luZyBpbWFnZSBzaWduYWwgZnJvbSBhbiBpbWFnZSBzZW5zb3IuCitUaGUgRXh5bm9zNHgxMiBTb0Mgc2VyaWVzIEZJTUMtSVMgVjEuNSBjb21wcmlzZXMgb2YgYSBkZWRpY2F0ZWQgQVJNIENvcnRleC1BNQorcHJvY2Vzc29yLCBJU1AsIERSQyBhbmQgRkQgSVAgYmxvY2tzIGFuZCBwZXJpcGhlcmFsIGRldmljZXMgc3VjaCBhcyBVQVJULCBJMkMKK2FuZCBTUEkgYnVzIGNvbnRyb2xsZXJzLCBQV00gYW5kIEFEQy4KKworZmltYy1pcyBub2RlCistLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZQk6IHNob3VsZCBiZSAic2Ftc3VuZyxleHlub3M0MjEyLWZpbWMtaXMiIGZvciBFeHlub3M0MjEyIGFuZAorCQkgIEV4eW5vczQ0MTIgU29DczsKKy0gcmVnCQk6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlcnMgc2V0OworLSBpbnRlcnJ1cHRzCTogbXVzdCBjb250YWluIHR3byBGSU1DLUlTIGludGVycnVwdHMsIGluIG9yZGVyOiBJU1AwLCBJU1AxOworLSBjbG9ja3MJOiBsaXN0IG9mIGNsb2NrIHNwZWNpZmllcnMsIGNvcnJlc3BvbmRpbmcgdG8gZW50cmllcyBpbgorCQkgIGNsb2NrLW5hbWVzIHByb3BlcnR5OworLSBjbG9jay1uYW1lcwk6IG11c3QgY29udGFpbiAicHBtdWlzcHgiLCAicHBtdWlzcHgiLCAibGl0ZTAiLCAibGl0ZTEiCisJCSAgIm1wbGwiLCAic3lzcmVnIiwgImlzcCIsICJkcmMiLCAiZmQiLCAibWN1aXNwIiwgInVhcnQiLAorCQkgICJpc3BkaXYwIiwgImlzcGRpdjEiLCAibWN1aXNwZGl2MCIsICJtY3Vpc3BkaXYxIiwgImFjbGsyMDAiLAorCQkgICJkaXZfYWNsazIwMCIsICJhY2xrNDAwbWN1aXNwIiwgImRpdl9hY2xrNDAwbWN1aXNwIiBlbnRyaWVzLAorCQkgIG1hdGNoaW5nIGVudHJpZXMgaW4gdGhlIGNsb2NrcyBwcm9wZXJ0eS4KK3BtdSBzdWJub2RlCistLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gcmVnIDogbXVzdCBjb250YWluIFBNVSBwaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIHJlZ2lzdGVyIHNldC4KKworVGhlIGZvbGxvd2luZyBhcmUgdGhlIEZJTUMtSVMgcGVyaXBoZXJhbCBkZXZpY2Ugbm9kZXMgYW5kIGNhbiBiZSBzcGVjaWZpZWQKK2VpdGhlciBzdGFuZGFsb25lIG9yIGFzIHRoZSBmaW1jLWlzIG5vZGUgY2hpbGQgbm9kZXMuCisKK2kyYy1pc3AgKElTUCBJMkMgYnVzIGNvbnRyb2xsZXIpIG5vZGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlCTogc2hvdWxkIGJlICJzYW1zdW5nLGV4eW5vczQyMTItaTJjLWlzcCIgZm9yIEV4eW5vczQyMTIgYW5kCisJCSAgRXh5bm9zNDQxMiBTb0NzOworLSByZWcJCTogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVycyBzZXQ7CistIGNsb2Nrcwk6IG11c3QgY29udGFpbiBnYXRlIGNsb2NrIHNwZWNpZmllciBmb3IgdGhpcyBjb250cm9sbGVyOworLSBjbG9jay1uYW1lcwk6IG11c3QgY29udGFpbiAiaTJjX2lzcCIgZW50cnkuCisKK0ZvciB0aGUgYWJvdmUgbm9kZXMgaXQgaXMgcmVxdWlyZWQgdG8gc3BlY2lmeSBhIHBpbmN0cmwgc3RhdGUgbmFtZWQgImRlZmF1bHQiLAorYWNjb3JkaW5nIHRvIHRoZSBwaW5jdHJsIGJpbmRpbmdzIGRlZmluZWQgaW4gLi4vcGluY3RybC9waW5jdHJsLWJpbmRpbmdzLnR4dC4KKworRGV2aWNlIHRyZWUgbm9kZXMgb2YgdGhlIGltYWdlIHNlbnNvcnMnIGNvbnRyb2xsZWQgZGlyZWN0bHkgYnkgdGhlIEZJTUMtSVMKK2Zpcm13YXJlIG11c3QgYmUgY2hpbGQgbm9kZXMgb2YgdGhlaXIgY29ycmVzcG9uZGluZyBJU1AgSTJDIGJ1cyBjb250cm9sbGVyIG5vZGUuCitUaGUgZGF0YSBsaW5rIG9mIHRoZXNlIGltYWdlIHNlbnNvcnMgbXVzdCBiZSBzcGVjaWZpZWQgdXNpbmcgdGhlIGNvbW1vbiB2aWRlbworaW50ZXJmYWNlcyBiaW5kaW5ncywgZGVmaW5lZCBpbiB2aWRlby1pbnRlcmZhY2VzLnR4dC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9leHlub3M1LWdzYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvZXh5bm9zNS1nc2MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MDRkNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvZXh5bm9zNS1nc2MudHh0CkBAIC0wLDAgKzEsMzAgQEAKKyogU2Ftc3VuZyBFeHlub3M1IEctU2NhbGVyIGRldmljZQorCitHLVNjYWxlciBpcyB1c2VkIGZvciBzY2FsaW5nIGFuZCBjb2xvciBzcGFjZSBjb252ZXJzaW9uIG9uIEVYWU5PUzUgU29Dcy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJzYW1zdW5nLGV4eW5vczUtZ3NjIgorLSByZWc6IHNob3VsZCBjb250YWluIEctU2NhbGVyIHBoeXNpY2FsIGFkZHJlc3MgbG9jYXRpb24gYW5kIGxlbmd0aC4KKy0gaW50ZXJydXB0czogc2hvdWxkIGNvbnRhaW4gRy1TY2FsZXIgaW50ZXJydXB0IG51bWJlcgorCitFeGFtcGxlOgorCitnc2NfMDogIGdzY0AweDEzZTAwMDAwIHsKKwljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNS1nc2MiOworCXJlZyA9IDwweDEzZTAwMDAwIDB4MTAwMD47CisJaW50ZXJydXB0cyA9IDwwIDg1IDA+OworfTsKKworQWxpYXNlczoKK0VhY2ggRy1TY2FsZXIgbm9kZSBzaG91bGQgaGF2ZSBhIG51bWJlcmVkIGFsaWFzIGluIHRoZSBhbGlhc2VzIG5vZGUsCitpbiB0aGUgZm9ybSBvZiBnc2NOLCBOID0gMC4uLjMuIEctU2NhbGVyIGRyaXZlciB1c2VzIHRoZXNlIGFsaWFzZXMKK3RvIHJldHJpZXZlIHRoZSBkZXZpY2UgSURzIHVzaW5nICJvZl9hbGlhc19nZXRfaWQoKSIgY2FsbC4KKworRXhhbXBsZToKKworYWxpYXNlcyB7CisJZ3NjMCA9JmdzY18wOworCWdzYzEgPSZnc2NfMTsKKwlnc2MyID0mZ3NjXzI7CisJZ3NjMyA9JmdzY18zOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9ncGlvLWlyLXJlY2VpdmVyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9ncGlvLWlyLXJlY2VpdmVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmU3MjZlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2dwaW8taXItcmVjZWl2ZXIudHh0CkBAIC0wLDAgKzEsMTYgQEAKK0RldmljZS1UcmVlIGJpbmRpbmdzIGZvciBHUElPIElSIHJlY2VpdmVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisJLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImdwaW8taXItcmVjZWl2ZXIiLgorCS0gZ3Bpb3M6IHNwZWNpZmllcyBHUElPIHVzZWQgZm9yIElSIHNpZ25hbCByZWNlcHRpb24uCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisJLSBsaW51eCxyYy1tYXAtbmFtZTogTGludXggc3BlY2lmaWMgcmVtb3RlIGNvbnRyb2wgbWFwIG5hbWUuCisKK0V4YW1wbGUgbm9kZToKKworCWlyOiBpci1yZWNlaXZlciB7CisJCWNvbXBhdGlibGUgPSAiZ3Bpby1pci1yZWNlaXZlciI7CisJCWdwaW9zID0gPCZncGlvMCAxOSAxPjsKKwkJbGludXgscmMtbWFwLW5hbWUgPSAicmMtcmM2LW1jZSI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9oaXg1aGQyLWlyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9oaXg1aGQyLWlyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjVlNzYwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2hpeDVoZDItaXIudHh0CkBAIC0wLDAgKzEsMjUgQEAKK0RldmljZS1UcmVlIGJpbmRpbmdzIGZvciBoaXg1aGQyIGlyIElQCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisJLSBjb21wYXRpYmxlOiBTaG91bGQgY29udGFpbiAiaGlzaWxpY29uLGhpeDVoZDItaXIiLgorCS0gcmVnOiBCYXNlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkKKwkgIG1hcHBlZCByZWdpb24uCisJLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQtc3BlY2lmaWVyIGZvciB0aGUgc29sZSBpbnRlcnJ1cHQgZ2VuZXJhdGVkIGJ5CisJICB0aGUgZGV2aWNlLiBUaGUgaW50ZXJydXB0IHNwZWNpZmllciBmb3JtYXQgZGVwZW5kcyBvbiB0aGUgaW50ZXJydXB0CisJICBjb250cm9sbGVyIHBhcmVudC4KKwktIGNsb2NrczogY2xvY2sgcGhhbmRsZSBhbmQgc3BlY2lmaWVyIHBhaXIuCisJLSBoaXNpbGljb24scG93ZXItc3lzY29uOiBwaGFuZGxlIG9mIHN5c2NvbiB1c2VkIHRvIGNvbnRyb2wgcG93ZXIuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisJLSBsaW51eCxyYy1tYXAtbmFtZSA6IFJlbW90ZSBjb250cm9sIG1hcCBuYW1lLgorCitFeGFtcGxlIG5vZGU6CisKKwlpcjogaXJAZjgwMDEwMDAgeworCQljb21wYXRpYmxlID0gImhpc2lsaWNvbixoaXg1aGQyLWlyIjsKKwkJcmVnID0gPDB4ZjgwMDEwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDQ3IDQ+OworCQljbG9ja3MgPSA8JmNsb2NrIEhJWDVIRDJfRklYRURfMjRNPjsKKwkJaGlzaWxpY29uLHBvd2VyLXN5c2NvbiA9IDwmc3lzY3RybD47CisJCWxpbnV4LHJjLW1hcC1uYW1lID0gInJjLXRpdm8iOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL2FkcDE2NTMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9hZHAxNjUzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2U2NmYyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9hZHAxNjUzLnR4dApAQCAtMCwwICsxLDM3IEBACisqIEFuYWxvZyBEZXZpY2VzIEFEUDE2NTMgZmxhc2ggTEVEIGRyaXZlcgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZTogTXVzdCBjb250YWluICJhZGksYWRwMTY1MyIKKworICAtIHJlZzogSTJDIHNsYXZlIGFkZHJlc3MKKworICAtIGVuYWJsZS1ncGlvczogU3BlY2lmaWVyIG9mIHRoZSBHUElPIGNvbm5lY3RlZCB0byBFTiBwaW4KKworVGhlcmUgYXJlIHR3byBMRUQgb3V0cHV0cyBhdmFpbGFibGUgLSBmbGFzaCBhbmQgaW5kaWNhdG9yLiBPbmUgTEVEIGlzCityZXByZXNlbnRlZCBieSBvbmUgY2hpbGQgbm9kZSwgbm9kZXMgbmVlZCB0byBiZSBuYW1lZCAiZmxhc2giIGFuZCAiaW5kaWNhdG9yIi4KKworUmVxdWlyZWQgcHJvcGVydGllcyBvZiB0aGUgTEVEIGNoaWxkIG5vZGU6CistIG1heC1taWNyb2FtcCA6IHNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9jb21tb24udHh0CisKK1JlcXVpcmVkIHByb3BlcnRpZXMgb2YgdGhlIGZsYXNoIExFRCBjaGlsZCBub2RlOgorCistIGZsYXNoLW1heC1taWNyb2FtcCA6IHNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9jb21tb24udHh0CistIGZsYXNoLXRpbWVvdXQtdXMgOiBzZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvY29tbW9uLnR4dAorCitFeGFtcGxlOgorCisJYWRwMTY1MzogbGVkLWNvbnRyb2xsZXJAMzAgeworCQljb21wYXRpYmxlID0gImFkaSxhZHAxNjUzIjsKKwkJcmVnID0gPDB4MzA+OworCQllbmFibGUtZ3Bpb3MgPSA8JmdwaW8zIDI0IEdQSU9fQUNUSVZFX0hJR0g+OyAvKiA4OCAqLworCisJCWZsYXNoIHsKKwkJCWZsYXNoLXRpbWVvdXQtdXMgPSA8NTAwMDAwPjsKKwkJCWZsYXNoLW1heC1taWNyb2FtcCA9IDwzMjAwMDA+OworCQkJbWF4LW1pY3JvYW1wID0gPDUwMDAwPjsKKwkJfTsKKwkJaW5kaWNhdG9yIHsKKwkJCW1heC1taWNyb2FtcCA9IDwxNzUwMD47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvYWR2NzM0My50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL2FkdjczNDMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NTNiYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL2FkdjczNDMudHh0CkBAIC0wLDAgKzEsNDggQEAKKyogQW5hbG9nIERldmljZXMgYWR2NzM0MyB2aWRlbyBlbmNvZGVyCisKK1RoZSBBRFY3MzQzIGFyZSBoaWdoIHNwZWVkLCBkaWdpdGFsLXRvLWFuYWxvZyB2aWRlbyBlbmNvZGVycyBpbiBhIDY0LWxlYWQgTFFGUAorcGFja2FnZS4gU2l4IGhpZ2ggc3BlZWQsIDMuMyBWLCAxMS1iaXQgdmlkZW8gREFDcyBwcm92aWRlIHN1cHBvcnQgZm9yIGNvbXBvc2l0ZQorKENWQlMpLCBTLVZpZGVvIChZLUMpLCBhbmQgY29tcG9uZW50IChZUHJQYi9SR0IpIGFuYWxvZyBvdXRwdXRzIGluIHN0YW5kYXJkCitkZWZpbml0aW9uIChTRCksIGVuaGFuY2VkIGRlZmluaXRpb24gKEVEKSwgb3IgaGlnaCBkZWZpbml0aW9uIChIRCkgdmlkZW8KK2Zvcm1hdHMuCisKK1JlcXVpcmVkIFByb3BlcnRpZXMgOgorLSBjb21wYXRpYmxlOiBNdXN0IGJlICJhZGksYWR2NzM0MyIKKworT3B0aW9uYWwgUHJvcGVydGllcyA6CistIGFkaSxwb3dlci1tb2RlLXNsZWVwLW1vZGU6IG9uIGVuYWJsZSB0aGUgY3VycmVudCBjb25zdW1wdGlvbiBpcyByZWR1Y2VkIHRvCisJCQkgICAgICBtaWNybyBhbXBlcmUgbGV2ZWwuIEFsbCBEQUNzIGFuZCB0aGUgaW50ZXJuYWwgUExMCisJCQkgICAgICBjaXJjdWl0IGFyZSBkaXNhYmxlZC4KKy0gYWRpLHBvd2VyLW1vZGUtcGxsLWN0cmw6IFBMTCBhbmQgb3ZlcnNhbXBsaW5nIGNvbnRyb2wuIFRoaXMgY29udHJvbCBhbGxvd3MKKwkJCSAgIGludGVybmFsIFBMTCAxIGNpcmN1aXQgdG8gYmUgcG93ZXJlZCBkb3duIGFuZCB0aGUKKwkJCSAgIG92ZXJzYW1wbGluZyB0byBiZSBzd2l0Y2hlZCBvZmYuCistIGFkLGFkdjczNDMtcG93ZXItbW9kZS1kYWM6IGFycmF5IGNvbmZpZ3VyaW5nIHRoZSBwb3dlciBvbi9vZmYgREFDJ3MgMS4uNiwKKwkJCSAgICAgIDAgPSBPRkYgYW5kIDEgPSBPTiwgRGVmYXVsdCB2YWx1ZSB3aGVuIHRoaXMKKwkJCSAgICAgIHByb3BlcnR5IGlzIG5vdCBzcGVjaWZpZWQgaXMgPDAgMCAwIDAgMCAwPi4KKy0gYWQsYWR2NzM0My1zZC1jb25maWctZGFjLW91dDogYXJyYXkgY29uZmlndXJlIFNEIERBQyBPdXRwdXQncyAxIGFuZCAyLCAwID0gT0ZGCisJCQkJIGFuZCAxID0gT04sIERlZmF1bHQgdmFsdWUgd2hlbiB0aGlzIHByb3BlcnR5IGlzCisJCQkJIG5vdCBzcGVjaWZpZWQgaXMgPDAgMD4uCisKK0V4YW1wbGU6CisKK2kyYzBAMWMyMjAwMCB7CisJLi4uCisJLi4uCisKKwlhZHY3MzQzQDJhIHsKKwkJY29tcGF0aWJsZSA9ICJhZGksYWR2NzM0MyI7CisJCXJlZyA9IDwweDJhPjsKKworCQlwb3J0IHsKKwkJCWFkdjczNDNfMTogZW5kcG9pbnQgeworCQkJCQlhZGkscG93ZXItbW9kZS1zbGVlcC1tb2RlOworCQkJCQlhZGkscG93ZXItbW9kZS1wbGwtY3RybDsKKwkJCQkJLyogVXNlIERBQzEuLjMsIERBQzYgKi8KKwkJCQkJYWRpLGRhYy1lbmFibGUgPSA8MSAxIDEgMCAwIDE+OworCQkJCQkvKiBVc2UgU0QgREFDIG91dHB1dCAxICovCisJCQkJCWFkaSxzZC1kYWMtZW5hYmxlID0gPDEgMD47CisJCQl9OworCQl9OworCX07CisJLi4uCit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9hZHY3NjA0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvYWR2NzYwNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMzN2Y3NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvYWR2NzYwNC50eHQKQEAgLTAsMCArMSw3NSBAQAorKiBBbmFsb2cgRGV2aWNlcyBBRFY3NjA0LzExLzEyIHZpZGVvIGRlY29kZXIgd2l0aCBIRE1JIHJlY2VpdmVyCisKK1RoZSBBRFY3NjA0IGFuZCBBRFY3NjExLzEyIGFyZSBtdWx0aWZvcm1hdCB2aWRlbyBkZWNvZGVycyB3aXRoIGFuIGludGVncmF0ZWQKK0hETUkgcmVjZWl2ZXIuIFRoZSBBRFY3NjA0IGhhcyBmb3VyIG11bHRpcGxleGVkIEhETUkgaW5wdXRzIGFuZCBvbmUgYW5hbG9nCitpbnB1dCwgYW5kIHRoZSBBRFY3NjExIGhhcyBvbmUgSERNSSBpbnB1dCBhbmQgbm8gYW5hbG9nIGlucHV0LiBUaGUgNzYxMiBpcworc2ltaWxhciB0byB0aGUgNzYxMSBidXQgaGFzIDIgSERNSSBpbnB1dHMuCisKK1RoZXNlIGRldmljZSB0cmVlIGJpbmRpbmdzIHN1cHBvcnQgdGhlIEFEVjc2MTEvMTIgb25seSBhdCB0aGUgbW9tZW50LgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZTogTXVzdCBjb250YWluIG9uZSBvZiB0aGUgZm9sbG93aW5nCisgICAgLSAiYWRpLGFkdjc2MTEiIGZvciB0aGUgQURWNzYxMQorICAgIC0gImFkaSxhZHY3NjEyIiBmb3IgdGhlIEFEVjc2MTIKKworICAtIHJlZzogSTJDIHNsYXZlIGFkZHJlc3MKKworICAtIGhwZC1ncGlvczogUmVmZXJlbmNlcyB0byB0aGUgR1BJT3MgdGhhdCBjb250cm9sIHRoZSBIRE1JIGhvdC1wbHVnCisgICAgZGV0ZWN0aW9uIHBpbnMsIG9uZSBwZXIgSERNSSBpbnB1dC4gVGhlIGFjdGl2ZSBmbGFnIGluZGljYXRlcyB0aGUgR1BJTworICAgIGxldmVsIHRoYXQgZW5hYmxlcyBob3QtcGx1ZyBkZXRlY3Rpb24uCisKK1RoZSBkZXZpY2Ugbm9kZSBtdXN0IGNvbnRhaW4gb25lICdwb3J0JyBjaGlsZCBub2RlIHBlciBkZXZpY2UgaW5wdXQgYW5kIG91dHB1dAorcG9ydCwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB2aWRlbyBpbnRlcmZhY2UgYmluZGluZ3MgZGVmaW5lZCBpbgorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3ZpZGVvLWludGVyZmFjZXMudHh0LiBUaGUgcG9ydCBub2RlcworYXJlIG51bWJlcmVkIGFzIGZvbGxvd3MuCisKKyAgUG9ydAkJCUFEVjc2MTEgICAgQURWNzYxMgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIEhETUkJCQkwICAgICAgICAgICAgIDAsIDEKKyAgRGlnaXRhbCBvdXRwdXQJMSAgICAgICAgICAgICAgICAyCisKK1RoZSBkaWdpdGFsIG91dHB1dCBwb3J0IG5vZGUgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBlbmRwb2ludC4KKworT3B0aW9uYWwgUHJvcGVydGllczoKKworICAtIHJlc2V0LWdwaW9zOiBSZWZlcmVuY2UgdG8gdGhlIEdQSU8gY29ubmVjdGVkIHRvIHRoZSBkZXZpY2UncyByZXNldCBwaW4uCisKK09wdGlvbmFsIEVuZHBvaW50IFByb3BlcnRpZXM6CisKKyAgVGhlIGZvbGxvd2luZyB0aHJlZSBwcm9wZXJ0aWVzIGFyZSBkZWZpbmVkIGluIHZpZGVvLWludGVyZmFjZXMudHh0IGFuZCBhcmUKKyAgdmFsaWQgZm9yIHNvdXJjZSBlbmRwb2ludHMgb25seS4KKworICAtIGhzeW5jLWFjdGl2ZTogSG9yaXpvbnRhbCBzeW5jaHJvbml6YXRpb24gcG9sYXJpdHkuIERlZmF1bHRzIHRvIGFjdGl2ZSBsb3cuCisgIC0gdnN5bmMtYWN0aXZlOiBWZXJ0aWNhbCBzeW5jaHJvbml6YXRpb24gcG9sYXJpdHkuIERlZmF1bHRzIHRvIGFjdGl2ZSBsb3cuCisgIC0gcGNsay1zYW1wbGU6IFBpeGVsIGNsb2NrIHBvbGFyaXR5LiBEZWZhdWx0cyB0byBvdXRwdXQgb24gdGhlIGZhbGxpbmcgZWRnZS4KKworICBJZiBub25lIG9mIGhzeW5jLWFjdGl2ZSwgdnN5bmMtYWN0aXZlIGFuZCBwY2xrLXNhbXBsZSBpcyBzcGVjaWZpZWQgdGhlCisgIGVuZHBvaW50IHdpbGwgdXNlIGVtYmVkZGVkIEJULjY1NiBzeW5jaHJvbml6YXRpb24uCisKKyAgLSBkZWZhdWx0LWlucHV0OiBTZWxlY3Qgd2hpY2ggaW5wdXQgaXMgc2VsZWN0ZWQgYWZ0ZXIgcmVzZXQuCisKK0V4YW1wbGU6CisKKwloZG1pX3JlY2VpdmVyQDRjIHsKKwkJY29tcGF0aWJsZSA9ICJhZGksYWR2NzYxMSI7CisJCXJlZyA9IDwweDRjPjsKKworCQlyZXNldC1ncGlvcyA9IDwmaW9leHAgMCBHUElPX0FDVElWRV9MT1c+OworCQlocGQtZ3Bpb3MgPSA8JmlvZXhwIDIgR1BJT19BQ1RJVkVfSElHSD47CisKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCisJCWRlZmF1bHQtaW5wdXQgPSA8MD47CisKKwkJcG9ydEAwIHsKKwkJCXJlZyA9IDwwPjsKKwkJfTsKKwkJcG9ydEAxIHsKKwkJCXJlZyA9IDwxPjsKKwkJCWhkbWlfaW46IGVuZHBvaW50IHsKKwkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmNjZGNfaW4+OworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9tdDltMTExLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvbXQ5bTExMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ1YTMzNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvbXQ5bTExMS50eHQKQEAgLTAsMCArMSwyOCBAQAorTWljcm9uIDEuM01wIENNT1MgRGlnaXRhbCBJbWFnZSBTZW5zb3IKKworVGhlIE1pY3JvbiBNVDlNMTExIGlzIGEgQ01PUyBhY3RpdmUgcGl4ZWwgZGlnaXRhbCBpbWFnZSBzZW5zb3Igd2l0aCBhbiBhY3RpdmUKK2FycmF5IHNpemUgb2YgMTI4MEggeCAxMDI0Vi4gSXQgaXMgcHJvZ3JhbW1hYmxlIHRocm91Z2ggYSBzaW1wbGUgdHdvLXdpcmUgc2VyaWFsCitpbnRlcmZhY2UuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHZhbHVlIHNob3VsZCBiZSAibWljcm9uLG10OW0xMTEiCisKK0ZvciBmdXJ0aGVyIHJlYWRpbmcgb24gcG9ydCBub2RlIHJlZmVyIHRvCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvdmlkZW8taW50ZXJmYWNlcy50eHQuCisKK0V4YW1wbGU6CisKKwlpMmNfbWFzdGVyIHsKKwkJbXQ5bTExMUA1ZCB7CisJCQljb21wYXRpYmxlID0gIm1pY3JvbixtdDltMTExIjsKKwkJCXJlZyA9IDwweDVkPjsKKworCQkJcmVtb3RlID0gPCZweGFfY2FtZXJhPjsKKwkJCXBvcnQgeworCQkJCW10OW0xMTFfMTogZW5kcG9pbnQgeworCQkJCQlidXMtd2lkdGggPSA8OD47CisJCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmcHhhX2NhbWVyYT47CisJCQkJfTsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvbXQ5cDAzMS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL210OXAwMzEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiNjA0NDMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL210OXAwMzEudHh0CkBAIC0wLDAgKzEsNDAgQEAKKyogQXB0aW5hIDEvMi41LUluY2ggNU1wIENNT1MgRGlnaXRhbCBJbWFnZSBTZW5zb3IKKworVGhlIEFwdGluYSBNVDlQMDMxIGlzIGEgMS8yLjUtaW5jaCBDTU9TIGFjdGl2ZSBwaXhlbCBkaWdpdGFsIGltYWdlIHNlbnNvciB3aXRoCithbiBhY3RpdmUgYXJyYXkgc2l6ZSBvZiAyNTkySCB4IDE5NDRWLiBJdCBpcyBwcm9ncmFtbWFibGUgdGhyb3VnaCBhIHNpbXBsZQordHdvLXdpcmUgc2VyaWFsIGludGVyZmFjZS4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogdmFsdWUgc2hvdWxkIGJlIGVpdGhlciBvbmUgYW1vbmcgdGhlIGZvbGxvd2luZworCShhKSAiYXB0aW5hLG10OXAwMzEiIGZvciBtdDlwMDMxIHNlbnNvcgorCShiKSAiYXB0aW5hLG10OXAwMzFtIiBmb3IgbXQ5cDAzMW0gc2Vuc29yCisKKy0gaW5wdXQtY2xvY2stZnJlcXVlbmN5OiBJbnB1dCBjbG9jayBmcmVxdWVuY3kuCisKKy0gcGl4ZWwtY2xvY2stZnJlcXVlbmN5OiBQaXhlbCBjbG9jayBmcmVxdWVuY3kuCisKK09wdGlvbmFsIFByb3BlcnRpZXM6CistIHJlc2V0LWdwaW9zOiBDaGlwIHJlc2V0IEdQSU8KKworRm9yIGZ1cnRoZXIgcmVhZGluZyBvbiBwb3J0IG5vZGUgcmVmZXIgdG8KK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS92aWRlby1pbnRlcmZhY2VzLnR4dC4KKworRXhhbXBsZToKKworCWkyYzBAMWMyMjAwMCB7CisJCS4uLgorCQkuLi4KKwkJbXQ5cDAzMUA1ZCB7CisJCQljb21wYXRpYmxlID0gImFwdGluYSxtdDlwMDMxIjsKKwkJCXJlZyA9IDwweDVkPjsKKwkJCXJlc2V0LWdwaW9zID0gPCZncGlvMyAzMCAwPjsKKworCQkJcG9ydCB7CisJCQkJbXQ5cDAzMV8xOiBlbmRwb2ludCB7CisJCQkJCWlucHV0LWNsb2NrLWZyZXF1ZW5jeSA9IDw2MDAwMDAwPjsKKwkJCQkJcGl4ZWwtY2xvY2stZnJlcXVlbmN5ID0gPDk2MDAwMDAwPjsKKwkJCQl9OworCQkJfTsKKwkJfTsKKwkJLi4uCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvbXQ5djAzMi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL210OXYwMzIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMjU2NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL210OXYwMzIudHh0CkBAIC0wLDAgKzEsMzkgQEAKKyogQXB0aW5hIDEvMy1JbmNoIFdWR0EgQ01PUyBEaWdpdGFsIEltYWdlIFNlbnNvcgorCitUaGUgQXB0aW5hIE1UOVYwMzIgaXMgYSAxLzMtaW5jaCBDTU9TIGFjdGl2ZSBwaXhlbCBkaWdpdGFsIGltYWdlIHNlbnNvciB3aXRoCithbiBhY3RpdmUgYXJyYXkgc2l6ZSBvZiA3NTJIIHggNDgwVi4gSXQgaXMgcHJvZ3JhbW1hYmxlIHRocm91Z2ggYSBzaW1wbGUKK3R3by13aXJlIHNlcmlhbCBpbnRlcmZhY2UuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogdmFsdWUgc2hvdWxkIGJlIGVpdGhlciBvbmUgYW1vbmcgdGhlIGZvbGxvd2luZworCShhKSAiYXB0aW5hLG10OXYwMjIiIGZvciBNVDlWMDIyIGNvbG9yIHNlbnNvcgorCShiKSAiYXB0aW5hLG10OXYwMjJtIiBmb3IgTVQ5VjAyMiBtb25vY2hyb21lIHNlbnNvcgorCShjKSAiYXB0aW5hLG10OXYwMjQiIGZvciBNVDlWMDI0IGNvbG9yIHNlbnNvcgorCShkKSAiYXB0aW5hLG10OXYwMjRtIiBmb3IgTVQ5VjAyNCBtb25vY2hyb21lIHNlbnNvcgorCShlKSAiYXB0aW5hLG10OXYwMzIiIGZvciBNVDlWMDMyIGNvbG9yIHNlbnNvcgorCShmKSAiYXB0aW5hLG10OXYwMzJtIiBmb3IgTVQ5VjAzMiBtb25vY2hyb21lIHNlbnNvcgorCShnKSAiYXB0aW5hLG10OXYwMzQiIGZvciBNVDlWMDM0IGNvbG9yIHNlbnNvcgorCShoKSAiYXB0aW5hLG10OXYwMzRtIiBmb3IgTVQ5VjAzNCBtb25vY2hyb21lIHNlbnNvcgorCitPcHRpb25hbCBQcm9wZXJ0aWVzOgorCistIGxpbmstZnJlcXVlbmNpZXM6IExpc3Qgb2YgYWxsb3dlZCBsaW5rIGZyZXF1ZW5jaWVzIGluIEh6LiBFYWNoIGZyZXF1ZW5jeSBpcworCWV4cHJlc3NlZCBhcyBhIDY0LWJpdCBiaWctZW5kaWFuIGludGVnZXIuCisKK0ZvciBmdXJ0aGVyIHJlYWRpbmcgb24gcG9ydCBub2RlIHJlZmVyIHRvCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvdmlkZW8taW50ZXJmYWNlcy50eHQuCisKK0V4YW1wbGU6CisKKwltdDl2MDMyQDVjIHsKKwkJY29tcGF0aWJsZSA9ICJhcHRpbmEsbXQ5djAzMiI7CisJCXJlZyA9IDwweDVjPjsKKworCQlwb3J0IHsKKwkJCW10OXYwMzJfb3V0OiBlbmRwb2ludCB7CisJCQkJbGluay1mcmVxdWVuY2llcyA9IC9iaXRzLyA2NAorCQkJCQk8MTMwMDAwMDAgMjY2MDAwMDAgMjcwMDAwMDA+OworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9ub2tpYSxzbWlhLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvbm9raWEsc21pYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU1ZTFmYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvbm9raWEsc21pYS50eHQKQEAgLTAsMCArMSw2MyBAQAorU01JQS9TTUlBKysgc2Vuc29yCisKK1NNSUEgKFN0YW5kYXJkIE1vYmlsZSBJbWFnaW5nIEFyY2hpdGVjdHVyZSkgaXMgYW4gaW1hZ2Ugc2Vuc29yIHN0YW5kYXJkCitkZWZpbmVkIGpvaW50bHkgYnkgTm9raWEgYW5kIFNULiBTTUlBKyssIGRlZmluZWQgYnkgTm9raWEsIGlzIGFuIGV4dGVuc2lvbgorb2YgdGhhdC4gVGhlc2UgZGVmaW5pdGlvbnMgYXJlIHZhbGlkIGZvciBib3RoIHR5cGVzIG9mIHNlbnNvcnMuCisKK01vcmUgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgaW4KK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS92aWRlby1pbnRlcmZhY2VzLnR4dCAuCisKKworTWFuZGF0b3J5IHByb3BlcnRpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gY29tcGF0aWJsZTogIm5va2lhLHNtaWEiCistIHJlZzogSTJDIGFkZHJlc3MgKDB4MTAsIG9yIGFuIGFsdGVybmF0aXZlIGFkZHJlc3MpCistIHZhbmEtc3VwcGx5OiBBbmFsb2d1ZSB2b2x0YWdlIHN1cHBseSAoVkFOQSksIHR5cGljYWxseSAyLDggdm9sdHMgKHNlbnNvcgorICBkZXBlbmRlbnQpLgorLSBjbG9ja3M6IEV4dGVybmFsIGNsb2NrIHRvIHRoZSBzZW5zb3IKKy0gY2xvY2stZnJlcXVlbmN5OiBGcmVxdWVuY3kgb2YgdGhlIGV4dGVybmFsIGNsb2NrIHRvIHRoZSBzZW5zb3IKKy0gbGluay1mcmVxdWVuY2llczogTGlzdCBvZiBhbGxvd2VkIGRhdGEgbGluayBmcmVxdWVuY2llcy4gQW4gYXJyYXkgb2YKKyAgNjQtYml0IGVsZW1lbnRzLgorCisKK09wdGlvbmFsIHByb3BlcnRpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBub2tpYSxudm0tc2l6ZTogVGhlIHNpemUgb2YgdGhlIE5WTSwgaW4gYnl0ZXMuIElmIHRoZSBzaXplIGlzIG5vdCBnaXZlbiwKKyAgdGhlIE5WTSBjb250ZW50cyB3aWxsIG5vdCBiZSByZWFkLgorLSByZXNldC1ncGlvczogWFNIVVRET1dOIEdQSU8KKworCitFbmRwb2ludCBub2RlIG1hbmRhdG9yeSBwcm9wZXJ0aWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gY2xvY2stbGFuZXM6IDwwPgorLSBkYXRhLWxhbmVzOiA8MS4ubj4KKy0gcmVtb3RlLWVuZHBvaW50OiBBIHBoYW5kbGUgdG8gdGhlIGJ1cyByZWNlaXZlcidzIGVuZHBvaW50IG5vZGUuCisKKworRXhhbXBsZQorLS0tLS0tLQorCismaTJjMiB7CisJY2xvY2stZnJlcXVlbmN5ID0gPDQwMDAwMD47CisKKwlzbWlhcHBfMTogY2FtZXJhQDEwIHsKKwkJY29tcGF0aWJsZSA9ICJub2tpYSxzbWlhIjsKKwkJcmVnID0gPDB4MTA+OworCQlyZXNldC1ncGlvcyA9IDwmZ3BpbzMgMjAgMD47CisJCXZhbmEtc3VwcGx5ID0gPCZ2YXV4Mz47CisJCWNsb2NrcyA9IDwmb21hcDNfaXNwIDA+OworCQljbG9jay1mcmVxdWVuY3kgPSA8OTYwMDAwMD47CisJCW5va2lhLG52bS1zaXplID0gPDUxMj47IC8qIDggKiA2NCAqLworCQlsaW5rLWZyZXF1ZW5jaWVzID0gL2JpdHMvIDY0IDwxOTkyMDAwMDAgMjEwMDAwMDAwIDQ5OTIwMDAwMD47CisJCXBvcnQgeworCQkJc21pYXBwXzFfMTogZW5kcG9pbnQgeworCQkJCWNsb2NrLWxhbmVzID0gPDA+OworCQkJCWRhdGEtbGFuZXMgPSA8MSAyPjsKKwkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmNzaTJhX2VwPjsKKwkJCX07CisJCX07CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL292MjY0MC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL292MjY0MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQyOWI1YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvb3YyNjQwLnR4dApAQCAtMCwwICsxLDQ2IEBACisqIE9tbml2aXNpb24gT1YyNjQwIENNT1Mgc2Vuc29yCisKK1RoZSBPbW5pdmlzaW9uIE9WMjY0MCBzZW5zb3Igc3VwcG9ydCBtdWx0aXBsZSByZXNvbHV0aW9ucyBvdXRwdXQsIHN1Y2ggYXMKK0NJRiwgU1ZHQSwgVVhHQS4gSXQgYWxzbyBjYW4gc3VwcG9ydCBZVVY0MjIvNDIwLCBSR0I1NjUvNTU1IG9yIHJhdyBSR0IKK291dHB1dCBmb3JtYXQuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAib3Z0aSxvdjI2NDAiCistIGNsb2NrczogcmVmZXJlbmNlIHRvIHRoZSB4dmNsayBpbnB1dCBjbG9jay4KKy0gY2xvY2stbmFtZXM6IHNob3VsZCBiZSAieHZjbGsiLgorCitPcHRpb25hbCBQcm9wZXJ0aWVzOgorLSByZXNldGItZ3Bpb3M6IHJlZmVyZW5jZSB0byB0aGUgR1BJTyBjb25uZWN0ZWQgdG8gdGhlIHJlc2V0YiBwaW4sIGlmIGFueS4KKy0gcHdkbi1ncGlvczogcmVmZXJlbmNlIHRvIHRoZSBHUElPIGNvbm5lY3RlZCB0byB0aGUgcHdkbiBwaW4sIGlmIGFueS4KKworVGhlIGRldmljZSBub2RlIG11c3QgY29udGFpbiBvbmUgJ3BvcnQnIGNoaWxkIG5vZGUgZm9yIGl0cyBkaWdpdGFsIG91dHB1dAordmlkZW8gcG9ydCwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB2aWRlbyBpbnRlcmZhY2UgYmluZGluZ3MgZGVmaW5lZCBpbgorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3ZpZGVvLWludGVyZmFjZXMudHh0LgorCitFeGFtcGxlOgorCisJaTJjMTogaTJjQGYwMDE4MDAwIHsKKwkJb3YyNjQwOiBjYW1lcmFAMHgzMCB7CisJCQljb21wYXRpYmxlID0gIm92dGksb3YyNjQwIjsKKwkJCXJlZyA9IDwweDMwPjsKKworCQkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwkJCXBpbmN0cmwtMCA9IDwmcGluY3RybF9wY2sxICZwaW5jdHJsX292MjY0MF9wd2RuICZwaW5jdHJsX292MjY0MF9yZXNldGI+OworCisJCQlyZXNldGItZ3Bpb3MgPSA8JnBpb0UgMjQgR1BJT19BQ1RJVkVfTE9XPjsKKwkJCXB3ZG4tZ3Bpb3MgPSA8JnBpb0UgMjkgR1BJT19BQ1RJVkVfSElHSD47CisKKwkJCWNsb2NrcyA9IDwmcGNrMT47CisJCQljbG9jay1uYW1lcyA9ICJ4dmNsayI7CisKKwkJCWFzc2lnbmVkLWNsb2NrcyA9IDwmcGNrMT47CisJCQlhc3NpZ25lZC1jbG9jay1yYXRlcyA9IDwyNTAwMDAwMD47CisKKwkJCXBvcnQgeworCQkJCW92MjY0MF8wOiBlbmRwb2ludCB7CisJCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmaXNpXzA+OworCQkJCQlidXMtd2lkdGggPSA8OD47CisJCQkJfTsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvb3YyNjU5LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvb3YyNjU5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWJjN2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9vdjI2NTkudHh0CkBAIC0wLDAgKzEsMzggQEAKKyogT1YyNjU5IDEvNS1JbmNoIDJNcCBTT0MgQ2FtZXJhCisKK1RoZSBPbW5pdmlzaW9uIE9WMjY1OSBpcyBhIDEvNS1pbmNoIFNPQyBjYW1lcmEsIHdpdGggYW4gYWN0aXZlIGFycmF5IHNpemUgb2YKKzE2MzJIIHggMTIxMlYuIEl0IGlzIHByb2dyYW1tYWJsZSB0aHJvdWdoIGEgU0NDQi4gVGhlIE9WMjY1OSBzZW5zb3Igc3VwcG9ydHMKK211bHRpcGxlIHJlc29sdXRpb25zIG91dHB1dCwgc3VjaCBhcyBVWEdBLCBTVkdBLCA3MjBwLiBJdCBhbHNvIGNhbiBzdXBwb3J0CitZVVY0MjIsIFJHQjU2NS81NTUgb3IgcmF3IFJHQiBvdXRwdXQgZm9ybWF0cy4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogTXVzdCBiZSAib3Z0aSxvdjI2NTkiCistIHJlZzogSTJDIHNsYXZlIGFkZHJlc3MKKy0gY2xvY2tzOiByZWZlcmVuY2UgdG8gdGhlIHh2Y2xrIGlucHV0IGNsb2NrLgorLSBjbG9jay1uYW1lczogc2hvdWxkIGJlICJ4dmNsayIuCistIGxpbmstZnJlcXVlbmNpZXM6IHRhcmdldCBwaXhlbCBjbG9jayBmcmVxdWVuY3kuCisKK0ZvciBmdXJ0aGVyIHJlYWRpbmcgb24gcG9ydCBub2RlIHJlZmVyIHRvCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvdmlkZW8taW50ZXJmYWNlcy50eHQuCisKK0V4YW1wbGU6CisKKwlpMmMwQDFjMjIwMDAgeworCQkuLi4KKwkJLi4uCisJCSBvdjI2NTlAMzAgeworCQkJY29tcGF0aWJsZSA9ICJvdnRpLG92MjY1OSI7CisJCQlyZWcgPSA8MHgzMD47CisKKwkJCWNsb2NrcyA9IDwmY2xrX292MjY1OSAwPjsKKwkJCWNsb2NrLW5hbWVzID0gInh2Y2xrIjsKKworCQkJcG9ydCB7CisJCQkJb3YyNjU5XzA6IGVuZHBvaW50IHsKKwkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZ2cGZlX2VwPjsKKwkJCQkJbGluay1mcmVxdWVuY2llcyA9IC9iaXRzLyA2NCA8NzAwMDAwMDA+OworCQkJCX07CisJCQl9OworCQl9OworCQkuLi4KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy90YzM1ODc0My50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL3RjMzU4NzQzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjE4OTIxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy90YzM1ODc0My50eHQKQEAgLTAsMCArMSw0OCBAQAorKiBUb3NoaWJhIFRDMzU4NzQzIEhETUktUlggdG8gTUlQSSBDU0kyLVRYIEJyaWRnZQorCitUaGUgVG9zaGliYSBUQzM1ODc0MyBIRE1JLVJYIHRvIE1JUEkgQ1NJMi1UWCAoSDJDKSBpcyBhIGJyaWRnZSB0aGF0IGNvbnZlcnRzCithIEhETUkgc3RyZWFtIHRvIE1JUEkgQ1NJLTIgVFguIEl0IGlzIHByb2dyYW1tYWJsZSB0aHJvdWdoIEkyQy4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiB2YWx1ZSBzaG91bGQgYmUgInRvc2hpYmEsdGMzNTg3NDMiCistIGNsb2NrcywgY2xvY2stbmFtZXM6IHNob3VsZCBjb250YWluIGEgcGhhbmRsZSBsaW5rIHRvIHRoZSByZWZlcmVuY2UgY2xvY2sKKwkJICAgICAgIHNvdXJjZSwgdGhlIGNsb2NrIGlucHV0IGlzIG5hbWVkICJyZWZjbGsiLgorCitPcHRpb25hbCBQcm9wZXJ0aWVzOgorCistIHJlc2V0LWdwaW9zOiBncGlvIHBoYW5kbGUgR1BJTyBjb25uZWN0ZWQgdG8gdGhlIHJlc2V0IHBpbgorLSBpbnRlcnJ1cHRzLCBpbnRlcnJ1cHQtcGFyZW50OiBHUElPIGNvbm5lY3RlZCB0byB0aGUgaW50ZXJydXB0IHBpbgorLSBkYXRhLWxhbmVzOiBzaG91bGQgYmUgPDEgMiAzIDQ+IGZvciBmb3VyLWxhbmUgb3BlcmF0aW9uLAorCSAgICAgIG9yIDwxIDI+IGZvciB0d28tbGFuZSBvcGVyYXRpb24KKy0gY2xvY2stbGFuZXM6IHNob3VsZCBiZSA8MD4KKy0gY2xvY2stbm9uY29udGludW91czogUHJlc2VuY2Ugb2YgdGhpcyBib29sZWFuIHByb3BlcnR5IGRlY2lkZXMgd2hldGhlciB0aGUKKwkJICAgICAgIE1JUEkgQ1NJLTIgY2xvY2sgaXMgY29udGludW91cyBvciBub24tY29udGludW91cy4KKy0gbGluay1mcmVxdWVuY2llczogTGlzdCBvZiBhbGxvd2VkIGxpbmsgZnJlcXVlbmNpZXMgaW4gSHouIEVhY2ggZnJlcXVlbmN5IGlzCisJCSAgICBleHByZXNzZWQgYXMgYSA2NC1iaXQgYmlnLWVuZGlhbiBpbnRlZ2VyLiBUaGUgZnJlcXVlbmN5CisJCSAgICBpcyBoYWxmIG9mIHRoZSBicHMgcGVyIGxhbmUgZHVlIHRvIEREUiB0cmFuc21pc3Npb24uCisKK0ZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIG9uIHRoZSBNSVBJIENTSS0yIGVuZHBvaW50IG5vZGUgcHJvcGVydGllcywgc2VlCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvdmlkZW8taW50ZXJmYWNlcy50eHQuCisKK0V4YW1wbGU6CisKKwl0YzM1ODc0M0AwZiB7CisJCWNvbXBhdGlibGUgPSAidG9zaGliYSx0YzM1ODc0MyI7CisJCXJlZyA9IDwweDBmPjsKKwkJY2xvY2tzID0gPCZoZG1pX29zYz47CisJCWNsb2NrLW5hbWVzID0gInJlZmNsayI7CisJCXJlc2V0LWdwaW9zID0gPCZncGlvNiA5IEdQSU9fQUNUSVZFX0xPVz47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8yPjsKKwkJaW50ZXJydXB0cyA9IDw1IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCisJCXBvcnQgeworCQkJdGMzNTg3NDNfb3V0OiBlbmRwb2ludCB7CisJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZtaXBpX2NzaTJfaW4+OworCQkJCWRhdGEtbGFuZXMgPSA8MSAyIDMgND47CisJCQkJY2xvY2stbGFuZXMgPSA8MD47CisJCQkJY2xvY2stbm9uY29udGludW91czsKKwkJCQlsaW5rLWZyZXF1ZW5jaWVzID0gL2JpdHMvIDY0IDwyOTcwMDAwMDA+OworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy90aHM4MjAwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvdGhzODIwMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg1ZjZhZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvdGhzODIwMC50eHQKQEAgLTAsMCArMSwxOSBAQAorKiBUZXhhcyBJbnN0cnVtZW50cyBUSFM4MjAwIHZpZGVvIGVuY29kZXIKKworVGhlIHRoczgyMDAgZGV2aWNlIGlzIGEgZGlnaXRhbCB0byBhbmFsb2cgY29udmVydGVyIHVzZWQgaW4gRFZEIHBsYXllcnMsIHZpZGVvCityZWNvcmRlcnMsIHNldC10b3AgYm94ZXMuCisKK1JlcXVpcmVkIFByb3BlcnRpZXMgOgorLSBjb21wYXRpYmxlIDogdmFsdWUgbXVzdCBiZSAidGksdGhzODIwMCIKKworRXhhbXBsZToKKworCWkyYzBAMWMyMjAwMCB7CisJCS4uLgorCQkuLi4KKwkJdGhzODIwMEA1YyB7CisJCQljb21wYXRpYmxlID0gInRpLHRoczgyMDAiOworCQkJcmVnID0gPDB4NWM+OworCQl9OworCQkuLi4KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy90dnA1MTR4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvdHZwNTE0eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY3NTJjYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvdHZwNTE0eC50eHQKQEAgLTAsMCArMSw0NCBAQAorKiBUZXhhcyBJbnN0cnVtZW50cyBUVlA1MTR4IHZpZGVvIGRlY29kZXIKKworVGhlIFRWUDUxNDYvVFZQNTE0Nm0yL1RWUDUxNDcvVFZQNTE0N20xIGRldmljZSBpcyBoaWdoIHF1YWxpdHksIHNpbmdsZS1jaGlwCitkaWdpdGFsIHZpZGVvIGRlY29kZXIgdGhhdCBkaWdpdGl6ZXMgYW5kIGRlY29kZXMgYWxsIHBvcHVsYXIgYmFzZWJhbmQgYW5hbG9nCit2aWRlbyBmb3JtYXRzIGludG8gZGlnaXRhbCB2aWRlbyBjb21wb25lbnQuIFRoZSB0dnA1MTR4IGRlY29kZXIgc3VwcG9ydHMgYW5hbG9nLQordG8tZGlnaXRhbCAoQS9EKSBjb252ZXJzaW9uIG9mIGNvbXBvbmVudCBSR0IgYW5kIFlQYlByIHNpZ25hbHMgYXMgd2VsbCBhcyBBL0QKK2NvbnZlcnNpb24gYW5kIGRlY29kaW5nIG9mIE5UU0MsIFBBTCBhbmQgU0VDQU0gY29tcG9zaXRlIGFuZCBTLXZpZGVvIGludG8KK2NvbXBvbmVudCBZQ2JDci4KKworUmVxdWlyZWQgUHJvcGVydGllcyA6CistIGNvbXBhdGlibGUgOiB2YWx1ZSBzaG91bGQgYmUgZWl0aGVyIG9uZSBhbW9uZyB0aGUgZm9sbG93aW5nCisJKGEpICJ0aSx0dnA1MTQ2IiBmb3IgdHZwNTE0NiBkZWNvZGVyLgorCShiKSAidGksdHZwNTE0Nm0yIiBmb3IgdHZwNTE0Nm0yIGRlY29kZXIuCisJKGMpICJ0aSx0dnA1MTQ3IiBmb3IgdHZwNTE0NyBkZWNvZGVyLgorCShkKSAidGksdHZwNTE0N20xIiBmb3IgdHZwNTE0N20xIGRlY29kZXIuCisKKy0gaHN5bmMtYWN0aXZlOiBIU1lOQyBQb2xhcml0eSBjb25maWd1cmF0aW9uIGZvciBlbmRwb2ludC4KKworLSB2c3luYy1hY3RpdmU6IFZTWU5DIFBvbGFyaXR5IGNvbmZpZ3VyYXRpb24gZm9yIGVuZHBvaW50LgorCistIHBjbGstc2FtcGxlOiBDbG9jayBwb2xhcml0eSBvZiB0aGUgZW5kcG9pbnQuCisKK0ZvciBmdXJ0aGVyIHJlYWRpbmcgb24gcG9ydCBub2RlIHJlZmVyIHRvIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy8KK21lZGlhL3ZpZGVvLWludGVyZmFjZXMudHh0LgorCitFeGFtcGxlOgorCisJaTJjMEAxYzIyMDAwIHsKKwkJLi4uCisJCS4uLgorCQl0dnA1MTR4QDVjIHsKKwkJCWNvbXBhdGlibGUgPSAidGksdHZwNTE0NiI7CisJCQlyZWcgPSA8MHg1Yz47CisKKwkJCXBvcnQgeworCQkJCXR2cDUxNHhfMTogZW5kcG9pbnQgeworCQkJCQloc3luYy1hY3RpdmUgPSA8MT47CisJCQkJCXZzeW5jLWFjdGl2ZSA9IDwxPjsKKwkJCQkJcGNsay1zYW1wbGUgPSA8MD47CisJCQkJfTsKKwkJCX07CisJCX07CisJCS4uLgorCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL3R2cDcwMDIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy90dnA3MDAyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjI4YjVkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy90dnA3MDAyLnR4dApAQCAtMCwwICsxLDUzIEBACisqIFRleGFzIEluc3RydW1lbnRzIFRWNzAwMiB2aWRlbyBkZWNvZGVyCisKK1RoZSBUVlA3MDAyIGRldmljZSBzdXBwb3J0cyBkaWdpdGl6aW5nIG9mIHZpZGVvIGFuZCBncmFwaGljcyBzaWduYWwgaW4gUkdCIGFuZAorWVBiUHIgY29sb3Igc3BhY2UuCisKK1JlcXVpcmVkIFByb3BlcnRpZXMgOgorLSBjb21wYXRpYmxlIDogTXVzdCBiZSAidGksdHZwNzAwMiIKKworT3B0aW9uYWwgUHJvcGVydGllczoKKy0gaHN5bmMtYWN0aXZlOiBIU1lOQyBQb2xhcml0eSBjb25maWd1cmF0aW9uIGZvciB0aGUgYnVzLiBEZWZhdWx0IHZhbHVlIHdoZW4KKyAgdGhpcyBwcm9wZXJ0eSBpcyBub3Qgc3BlY2lmaWVkIGlzIDwwPi4KKworLSB2c3luYy1hY3RpdmU6IFZTWU5DIFBvbGFyaXR5IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBidXMuIERlZmF1bHQgdmFsdWUgd2hlbgorICB0aGlzIHByb3BlcnR5IGlzIG5vdCBzcGVjaWZpZWQgaXMgPDA+LgorCistIHBjbGstc2FtcGxlOiBDbG9jayBwb2xhcml0eSBvZiB0aGUgYnVzLiBEZWZhdWx0IHZhbHVlIHdoZW4gdGhpcyBwcm9wZXJ0eSBpcworICBub3Qgc3BlY2lmaWVkIGlzIDwwPi4KKworLSBzeW5jLW9uLWdyZWVuLWFjdGl2ZTogQWN0aXZlIHN0YXRlIG9mIFN5bmMtb24tZ3JlZW4gc2lnbmFsIHByb3BlcnR5IG9mIHRoZQorICBlbmRwb2ludC4KKyAgMCA9IE5vcm1hbCBPcGVyYXRpb24gKEFjdGl2ZSBMb3csIERlZmF1bHQpCisgIDEgPSBJbnZlcnRlZCBvcGVyYXRpb24KKworLSBmaWVsZC1ldmVuLWFjdGl2ZTogQWN0aXZlLWhpZ2ggRmllbGQgSUQgb3V0cHV0IHBvbGFyaXR5IGNvbnRyb2wgb2YgdGhlIGJ1cy4KKyAgVW5kZXIgbm9ybWFsIG9wZXJhdGlvbiwgdGhlIGZpZWxkIElEIG91dHB1dCBpcyBzZXQgdG8gbG9naWMgMSBmb3IgYW4gb2RkIGZpZWxkCisgIChmaWVsZCAxKSBhbmQgc2V0IHRvIGxvZ2ljIDAgZm9yIGFuIGV2ZW4gZmllbGQgKGZpZWxkIDApLgorICAwID0gTm9ybWFsIE9wZXJhdGlvbiAoQWN0aXZlIExvdywgRGVmYXVsdCkKKyAgMSA9IEZJRCBvdXRwdXQgcG9sYXJpdHkgaW52ZXJ0ZWQKKworRm9yIGZ1cnRoZXIgcmVhZGluZyBvZiBwb3J0IG5vZGUgcmVmZXIgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhLwordmlkZW8taW50ZXJmYWNlcy50eHQuCisKK0V4YW1wbGU6CisKKwlpMmMwQDFjMjIwMDAgeworCQkuLi4KKwkJLi4uCisJCXR2cDcwMDJANWMgeworCQkJY29tcGF0aWJsZSA9ICJ0aSx0dnA3MDAyIjsKKwkJCXJlZyA9IDwweDVjPjsKKworCQkJcG9ydCB7CisJCQkJdHZwNzAwMl8xOiBlbmRwb2ludCB7CisJCQkJCWhzeW5jLWFjdGl2ZSA9IDwxPjsKKwkJCQkJdnN5bmMtYWN0aXZlID0gPDE+OworCQkJCQlwY2xrLXNhbXBsZSA9IDwwPjsKKwkJCQkJc3luYy1vbi1ncmVlbi1hY3RpdmUgPSA8MT47CisJCQkJCWZpZWxkLWV2ZW4tYWN0aXZlID0gPDA+OworCQkJCX07CisJCQl9OworCQl9OworCQkuLi4KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2ltZy1pci1yZXYxLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pbWctaXItcmV2MS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQzNGNlNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pbWctaXItcmV2MS50eHQKQEAgLTAsMCArMSwzNCBAQAorKiBJbWdUZWMgSW5mcmFyZWQgKElSKSBkZWNvZGVyIHZlcnNpb24gMQorCitUaGlzIGJpbmRpbmcgaXMgZm9yIEltYWdpbmF0aW9uIFRlY2hub2xvZ2llcycgSW5mcmFyZWQgZGVjb2RlciBibG9jaywKK3NwZWNpZmljYWxseSBtYWpvciByZXZpc2lvbiAxLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOgkJU2hvdWxkIGJlICJpbWcsaXItcmV2MSIKKy0gcmVnOgkJCVBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mCisJCQltZW1vcnkgbWFwcGVkIHJlZ2lvbi4KKy0gaW50ZXJydXB0czoJCVRoZSBpbnRlcnJ1cHQgc3BlY2lmaWVyIHRvIHRoZSBjcHUuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrczoJCUxpc3Qgb2YgY2xvY2sgc3BlY2lmaWVycyBhcyBkZXNjcmliZWQgaW4gc3RhbmRhcmQKKwkJCWNsb2NrIGJpbmRpbmdzLgorCQkJVXAgdG8gMyBjbG9ja3MgbWF5IGJlIHNwZWNpZmllZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgorCQkJMXN0OglDb3JlIGNsb2NrIChkZWZhdWx0cyB0byAzMi43NjhLSHogaWYgb21pdHRlZCkuCisJCQkybmQ6CVN5c3RlbSBzaWRlIChmYXN0KSBjbG9jay4KKwkJCTNyZDoJUG93ZXIgbW9kdWxhdGlvbiBjbG9jay4KKy0gY2xvY2stbmFtZXM6CQlMaXN0IG9mIGNsb2NrIG5hbWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNsb2NrcworCQkJc3BlY2lmaWVkIGluIHRoZSBjbG9ja3MgcHJvcGVydHkuCisJCQlBY2NlcHRlZCBjbG9jayBuYW1lcyBhcmU6CisJCQkiY29yZSI6CUNvcmUgY2xvY2suCisJCQkic3lzIjoJU3lzdGVtIGNsb2NrLgorCQkJIm1vZCI6CVBvd2VyIG1vZHVsYXRpb24gY2xvY2suCisKK0V4YW1wbGU6CisKKwlpckAwMjAwNjIwMCB7CisJCWNvbXBhdGlibGUgPSAiaW1nLGlyLXJldjEiOworCQlyZWcgPSA8MHgwMjAwNjIwMCAweDEwMD47CisJCWludGVycnVwdHMgPSA8MjkgND47CisJCWNsb2NrcyA9IDwmY2xrXzMya2h6PjsKKwkJY2xvY2stbmFtZXMgPSAgImNvcmUiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvbWVzb24taXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL21lc29uLWlyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDc4NDhlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL21lc29uLWlyLnR4dApAQCAtMCwwICsxLDE0IEBACisqIEFtbG9naWMgTWVzb24gSVIgcmVtb3RlIGNvbnRyb2wgcmVjZWl2ZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGUJOiBzaG91bGQgYmUgImFtbG9naWMsbWVzb242LWlyIgorIC0gcmVnCQk6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBkZXZpY2UgcmVnaXN0ZXJzCisgLSBpbnRlcnJ1cHRzCTogYSBzaW5nbGUgc3BlY2lmaWVyIGZvciB0aGUgaW50ZXJydXB0IGZyb20gdGhlIGRldmljZQorCitFeGFtcGxlOgorCisJaXItcmVjZWl2ZXJAYzgxMDA0ODAgeworCQljb21wYXRpYmxlPSAiYW1sb2dpYyxtZXNvbjYtaXIiOworCQlyZWcgPSA8MHhjODEwMDQ4MCAweDIwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDE1IDE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvcHhhLWNhbWVyYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvcHhhLWNhbWVyYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFmNWI1ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9weGEtY2FtZXJhLnR4dApAQCAtMCwwICsxLDQzIEBACitNYXJ2ZWxsIFBYQSBjYW1lcmEgaG9zdCBpbnRlcmZhY2UKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGU6IFNob3VsZCBiZSAibWFydmVsbCxweGEyNzAtcWNpIgorIC0gcmVnOiByZWdpc3RlciBiYXNlIGFuZCBzaXplCisgLSBpbnRlcnJ1cHRzOiB0aGUgaW50ZXJydXB0IG51bWJlcgorIC0gYW55IHJlcXVpcmVkIGdlbmVyaWMgcHJvcGVydGllcyBkZWZpbmVkIGluIHZpZGVvLWludGVyZmFjZXMudHh0CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgLSBjbG9ja3M6IGlucHV0IGNsb2NrIChzZWUgY2xvY2stYmluZGluZ3MudHh0KQorIC0gY2xvY2stb3V0cHV0LW5hbWVzOiBzaG91bGQgY29udGFpbiB0aGUgbmFtZSBvZiB0aGUgY2xvY2sgZHJpdmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgc2Vuc29yIG1hc3RlciBjbG9jayBNQ0xLCisgLSBjbG9jay1mcmVxdWVuY3k6IGhvc3QgaW50ZXJmYWNlIGlzIGRyaXZpbmcgTUNMSywgYW5kIE1DTEsgcmF0ZSBpcyB0aGlzIHJhdGUKKworRXhhbXBsZToKKworCXB4YV9jYW1lcmE6IHB4YV9jYW1lcmFANTAwMDAwMDAgeworCQljb21wYXRpYmxlID0gIm1hcnZlbGwscHhhMjcwLXFjaSI7CisJCXJlZyA9IDwweDUwMDAwMDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MzM+OworCisJCWNsb2NrcyA9IDwmcHhhMnh4X2Nsa3MgMjQ+OworCQljbG9jay1uYW1lcyA9ICJjaWNsayI7CisJCWNsb2NrLWZyZXF1ZW5jeSA9IDw1MDAwMDAwMD47CisJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJxY2lfbWNsayI7CisKKwkJc3RhdHVzID0gIm9rYXkiOworCisJCXBvcnQgeworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQkJLyogUGFyYWxsZWwgYnVzIGVuZHBvaW50ICovCisJCQlxY2k6IGVuZHBvaW50QDAgeworCQkJCXJlZyA9IDwwPjsJCS8qIExvY2FsIGVuZHBvaW50ICMgKi8KKwkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8Jm10OW0xMTFfMT47CisJCQkJYnVzLXdpZHRoID0gPDg+OwkvKiBVc2VkIGRhdGEgbGluZXMgKi8KKwkJCQloc3luYy1hY3RpdmUgPSA8MD47CS8qIEFjdGl2ZSBsb3cgKi8KKwkJCQl2c3luYy1hY3RpdmUgPSA8MD47CS8qIEFjdGl2ZSBsb3cgKi8KKwkJCQlwY2xrLXNhbXBsZSA9IDwxPjsJLyogUmlzaW5nICovCisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvcmNhcl92aW4udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3JjYXJfdmluLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGFmZTZiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3JjYXJfdmluLnR4dApAQCAtMCwwICsxLDg4IEBACitSZW5lc2FzIFJDYXIgVmlkZW8gSW5wdXQgZHJpdmVyIChyY2FyX3ZpbikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgcmNhcl92aW4gZGV2aWNlIHByb3ZpZGVzIHZpZGVvIGlucHV0IGNhcGFiaWxpdGllcyBmb3IgdGhlIFJlbmVzYXMgUi1DYXIKK2ZhbWlseSBvZiBkZXZpY2VzLiBUaGUgY3VycmVudCBibG9ja3MgYXJlIGFsd2F5cyBzbGF2ZXMgYW5kIHN1cHBvdCBvbmUgaW5wdXQKK2NoYW5uZWwgd2hpY2ggY2FuIGJlIGVpdGhlciBSR0IsIFlVWVYgb3IgQlQ2NTYuCisKKyAtIGNvbXBhdGlibGU6IE11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcKKyAgIC0gInJlbmVzYXMsdmluLXI4YTc3OTQiIGZvciB0aGUgUjhBNzc5NCBkZXZpY2UKKyAgIC0gInJlbmVzYXMsdmluLXI4YTc3OTMiIGZvciB0aGUgUjhBNzc5MyBkZXZpY2UKKyAgIC0gInJlbmVzYXMsdmluLXI4YTc3OTEiIGZvciB0aGUgUjhBNzc5MSBkZXZpY2UKKyAgIC0gInJlbmVzYXMsdmluLXI4YTc3OTAiIGZvciB0aGUgUjhBNzc5MCBkZXZpY2UKKyAgIC0gInJlbmVzYXMsdmluLXI4YTc3NzkiIGZvciB0aGUgUjhBNzc3OSBkZXZpY2UKKyAgIC0gInJlbmVzYXMsdmluLXI4YTc3NzgiIGZvciB0aGUgUjhBNzc3OCBkZXZpY2UKKyAtIHJlZzogdGhlIHJlZ2lzdGVyIGJhc2UgYW5kIHNpemUgZm9yIHRoZSBkZXZpY2UgcmVnaXN0ZXJzCisgLSBpbnRlcnJ1cHRzOiB0aGUgaW50ZXJydXB0IGZvciB0aGUgZGV2aWNlCisgLSBjbG9ja3M6IFJlZmVyZW5jZSB0byB0aGUgcGFyZW50IGNsb2NrCisKK0FkZGl0aW9uYWxseSwgYW4gYWxpYXMgbmFtZWQgdmluWCB3aWxsIG5lZWQgdG8gYmUgY3JlYXRlZCB0byBzcGVjaWZ5Cit3aGljaCB2aWRlbyBpbnB1dCBkZXZpY2UgdGhpcyBpcy4KKworVGhlIHBlci1ib2FyZCBzZXR0aW5nczoKKyAtIHBvcnQgc3ViLW5vZGUgZGVzY3JpYmluZyBhIHNpbmdsZSBlbmRwb2ludCBjb25uZWN0ZWQgdG8gdGhlIHZpbgorICAgYXMgZGVzY3JpYmVkIGluIHZpZGVvLWludGVyZmFjZXMudHh0WzFdLiBPbmx5IHRoZSBmaXJzdCBvbmUgd2lsbAorICAgYmUgY29uc2lkZXJlZCBhcyBlYWNoIHZpbiBpbnRlcmZhY2UgaGFzIG9uZSBpbnB1dCBwb3J0LgorCisgICBUaGVzZSBzZXR0aW5ncyBhcmUgdXNlZCB0byB3b3JrIG91dCB2aWRlbyBpbnB1dCBmb3JtYXQgYW5kIHdpZHRocworICAgaW50byB0aGUgc3lzdGVtLgorCisKK0RldmljZSBub2RlIGV4YW1wbGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworCWFsaWFzZXMgeworCSAgICAgICB2aW4wID0gJnZpbjA7CisJfTsKKworICAgICAgICB2aW4wOiB2aW5AMHhlNmVmMDAwMCB7CisgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJyZW5lc2FzLHZpbi1yOGE3NzkwIjsKKyAgICAgICAgICAgICAgICBjbG9ja3MgPSA8Jm1zdHA4X2Nsa3MgUjhBNzc5MF9DTEtfVklOMD47CisgICAgICAgICAgICAgICAgcmVnID0gPDAgMHhlNmVmMDAwMCAwIDB4MTAwMD47CisgICAgICAgICAgICAgICAgaW50ZXJydXB0cyA9IDwwIDE4OCBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKyAgICAgICAgICAgICAgICBzdGF0dXMgPSAiZGlzYWJsZWQiOworICAgICAgICB9OworCitCb2FyZCBzZXR1cCBleGFtcGxlICh2aW4xIGNvbXBvc2l0ZSB2aWRlbyBpbnB1dCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCismaTJjMiAgIHsKKyAgICAgICAgc3RhdHVzID0gIm9rIjsKKyAgICAgICAgcGluY3RybC0wID0gPCZpMmMyX3BpbnM+OworICAgICAgICBwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCisgICAgICAgIGFkdjcxODBAMjAgeworICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAiYWRpLGFkdjcxODAiOworICAgICAgICAgICAgICAgIHJlZyA9IDwweDIwPjsKKyAgICAgICAgICAgICAgICByZW1vdGUgPSA8JnZpbjE+OworCisgICAgICAgICAgICAgICAgcG9ydCB7CisgICAgICAgICAgICAgICAgICAgICAgICBhZHY3MTgwOiBlbmRwb2ludCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1cy13aWR0aCA9IDw4PjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlLWVuZHBvaW50ID0gPCZ2aW4xZXAwPjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKK307CisKKy8qIGNvbXBvc2l0ZSB2aWRlbyBpbnB1dCAqLworJnZpbjEgeworICAgICAgICBwaW5jdHJsLTAgPSA8JnZpbjFfcGlucz47CisgICAgICAgIHBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisKKyAgICAgICAgc3RhdHVzID0gIm9rIjsKKworICAgICAgICBwb3J0IHsKKyAgICAgICAgICAgICAgICAjYWRkcmVzcy1jZWxscyA9IDwxPjsKKyAgICAgICAgICAgICAgICAjc2l6ZS1jZWxscyA9IDwwPjsKKworICAgICAgICAgICAgICAgIHZpbjFlcDA6IGVuZHBvaW50IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZS1lbmRwb2ludCA9IDwmYWR2NzE4MD47CisgICAgICAgICAgICAgICAgICAgICAgICBidXMtd2lkdGggPSA8OD47CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgfTsKK307CisKKworCitbMV0gdmlkZW8taW50ZXJmYWNlcy50eHQgY29tbW9uIHZpZGVvIG1lZGlhIGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3JlbmVzYXMsanB1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9yZW5lc2FzLGpwdS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNiOTQyMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9yZW5lc2FzLGpwdS50eHQKQEAgLTAsMCArMSwyNCBAQAorKiBSZW5lc2FzIEpQRUcgUHJvY2Vzc2luZyBVbml0CisKK1RoZSBKUEVHIHByb2Nlc3NpbmcgdW5pdCAoSlBVKSBpbmNvcnBvcmF0ZXMgdGhlIEpQRUcgY29kZWMgd2l0aCBhbiBlbmNvZGluZworYW5kIGRlY29kaW5nIGZ1bmN0aW9uIGNvbmZvcm1pbmcgdG8gdGhlIEpQRUcgYmFzZWxpbmUgcHJvY2Vzcywgc28gdGhhdCB0aGUgSlBVCitjYW4gZW5jb2RlIGltYWdlIGRhdGEgYW5kIGRlY29kZSBKUEVHIGRhdGEgcXVpY2tseS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiBzaG91bGQgY29udGFpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisJCQktICJyZW5lc2FzLGpwdS1yOGE3NzkwIiBmb3IgUi1DYXIgSDIKKwkJCS0gInJlbmVzYXMsanB1LXI4YTc3OTEiIGZvciBSLUNhciBNMi1XCisJCQktICJyZW5lc2FzLGpwdS1yOGE3NzkyIiBmb3IgUi1DYXIgVjJICisJCQktICJyZW5lc2FzLGpwdS1yOGE3NzkzIiBmb3IgUi1DYXIgTTItTgorCisgIC0gcmVnOiBCYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXJzIGJsb2NrIGZvciB0aGUgSlBVLgorICAtIGludGVycnVwdHM6IEpQVSBpbnRlcnJ1cHQgc3BlY2lmaWVyLgorICAtIGNsb2NrczogQSBwaGFuZGxlICsgY2xvY2stc3BlY2lmaWVyIHBhaXIgZm9yIHRoZSBKUFUgZnVuY3Rpb25hbCBjbG9jay4KKworRXhhbXBsZTogUjhBNzc5MCAoUi1DYXIgSDIpIEpQVSBub2RlCisJanBlZy1jb2RlY0BmZTk4MDAwMCB7CisJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxqcHUtcjhhNzc5MCI7CisJCXJlZyA9IDwwIDB4ZmU5ODAwMDAgMCAweDEwMzAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDI3MiBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJY2xvY2tzID0gPCZtc3RwMV9jbGtzIFI4QTc3OTBfQ0xLX0pQVT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9yZW5lc2FzLHZzcDEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3JlbmVzYXMsdnNwMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdmZTA4YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9yZW5lc2FzLHZzcDEudHh0CkBAIC0wLDAgKzEsNDMgQEAKKyogUmVuZXNhcyBWU1AxIFZpZGVvIFByb2Nlc3NpbmcgRW5naW5lCisKK1RoZSBWU1AxIGlzIGEgdmlkZW8gcHJvY2Vzc2luZyBlbmdpbmUgdGhhdCBzdXBwb3J0cyB1cC0vZG93bi1zY2FsaW5nLCBhbHBoYQorYmxlbmRpbmcsIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24gYW5kIHZhcmlvdXMgb3RoZXIgaW1hZ2UgcHJvY2Vzc2luZyBmZWF0dXJlcy4KK0l0IGNhbiBiZSBmb3VuZCBpbiB0aGUgUmVuZXNhcyBSLUNhciBzZWNvbmQgZ2VuZXJhdGlvbiBTb0NzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZTogTXVzdCBjb250YWluICJyZW5lc2FzLHZzcDEiCisKKyAgLSByZWc6IEJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlcnMgYmxvY2sgZm9yIHRoZSBWU1AxLgorICAtIGludGVycnVwdHM6IFZTUDEgaW50ZXJydXB0IHNwZWNpZmllci4KKyAgLSBjbG9ja3M6IEEgcGhhbmRsZSArIGNsb2NrLXNwZWNpZmllciBwYWlyIGZvciB0aGUgVlNQMSBmdW5jdGlvbmFsIGNsb2NrLgorCisgIC0gcmVuZXNhcywjcnBmOiBOdW1iZXIgb2YgUmVhZCBQaXhlbCBGb3JtYXR0ZXIgKFJQRikgbW9kdWxlcyBpbiB0aGUgVlNQMS4KKyAgLSByZW5lc2FzLCN1ZHM6IE51bWJlciBvZiBVcCBEb3duIFNjYWxlciAoVURTKSBtb2R1bGVzIGluIHRoZSBWU1AxLgorICAtIHJlbmVzYXMsI3dwZjogTnVtYmVyIG9mIFdyaXRlIFBpeGVsIEZvcm1hdHRlciAoV1BGKSBtb2R1bGVzIGluIHRoZSBWU1AxLgorCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKyAgLSByZW5lc2FzLGhhcy1saWY6IEJvb2xlYW4sIGluZGljYXRlcyB0aGF0IHRoZSBMQ0QgSW50ZXJmYWNlIChMSUYpIG1vZHVsZSBpcworICAgIGF2YWlsYWJsZS4KKyAgLSByZW5lc2FzLGhhcy1sdXQ6IEJvb2xlYW4sIGluZGljYXRlcyB0aGF0IHRoZSBMb29rIFVwIFRhYmxlIChMVVQpIG1vZHVsZSBpcworICAgIGF2YWlsYWJsZS4KKyAgLSByZW5lc2FzLGhhcy1zcnU6IEJvb2xlYW4sIGluZGljYXRlcyB0aGF0IHRoZSBTdXBlciBSZXNvbHV0aW9uIFVuaXQgKFNSVSkKKyAgICBtb2R1bGUgaXMgYXZhaWxhYmxlLgorCisKK0V4YW1wbGU6IFI4QTc3OTAgKFItQ2FyIEgyKSBWU1AxLVMgbm9kZQorCisJdnNwMUBmZTkyODAwMCB7CisJCWNvbXBhdGlibGUgPSAicmVuZXNhcyx2c3AxIjsKKwkJcmVnID0gPDAgMHhmZTkyODAwMCAwIDB4ODAwMD47CisJCWludGVycnVwdHMgPSA8MCAyNjcgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWNsb2NrcyA9IDwmbXN0cDFfY2xrcyBSOEE3NzkwX0NMS19WU1AxX1M+OworCisJCXJlbmVzYXMsaGFzLWx1dDsKKwkJcmVuZXNhcyxoYXMtc3J1OworCQlyZW5lc2FzLCNycGYgPSA8NT47CisJCXJlbmVzYXMsI3VkcyA9IDwzPjsKKwkJcmVuZXNhcywjd3BmID0gPDQ+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvczVwLW1mYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvczVwLW1mYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ1Nzg3ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9zNXAtbWZjLnR4dApAQCAtMCwwICsxLDUxIEBACisqIFNhbXN1bmcgTXVsdGkgRm9ybWF0IENvZGVjIChNRkMpCisKK011bHRpIEZvcm1hdCBDb2RlYyAoTUZDKSBpcyB0aGUgSVAgcHJlc2VudCBpbiBTYW1zdW5nIFNvQ3Mgd2hpY2gKK3N1cHBvcnRzIGhpZ2ggcmVzb2x1dGlvbiBkZWNvZGluZyBhbmQgZW5jb2RpbmcgZnVuY3Rpb25hbGl0aWVzLgorVGhlIE1GQyBkZXZpY2UgZHJpdmVyIGlzIGEgdjRsMiBkcml2ZXIgd2hpY2ggY2FuIGVuY29kZS9kZWNvZGUKK3ZpZGVvIHJhdy9lbGVtZW50YXJ5IHN0cmVhbXMgYW5kIGhhcyBzdXBwb3J0IGZvciBhbGwgcG9wdWxhcgordmlkZW8gY29kZWNzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGUgOiB2YWx1ZSBzaG91bGQgYmUgZWl0aGVyIG9uZSBhbW9uZyB0aGUgZm9sbG93aW5nCisJKGEpICJzYW1zdW5nLG1mYy12NSIgZm9yIE1GQyB2NSBwcmVzZW50IGluIEV4eW5vczQgU29DcworCShiKSAic2Ftc3VuZyxtZmMtdjYiIGZvciBNRkMgdjYgcHJlc2VudCBpbiBFeHlub3M1IFNvQ3MKKwkoYykgInNhbXN1bmcsbWZjLXY3IiBmb3IgTUZDIHY3IHByZXNlbnQgaW4gRXh5bm9zNTQyMCBTb0MKKwkoZCkgInNhbXN1bmcsbWZjLXY4IiBmb3IgTUZDIHY4IHByZXNlbnQgaW4gRXh5bm9zNTgwMCBTb0MKKworICAtIHJlZyA6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgSVAgcmVnaXN0ZXJzIGFuZCBsZW5ndGggb2YgbWVtb3J5CisJICBtYXBwZWQgcmVnaW9uLgorCisgIC0gaW50ZXJydXB0cyA6IE1GQyBpbnRlcnJ1cHQgbnVtYmVyIHRvIHRoZSBDUFUuCisgIC0gY2xvY2tzIDogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzogaGFuZGxlIHRvIG1mYyBjbG9jay4KKyAgLSBjbG9jay1uYW1lcyA6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc6IG11c3QgY29udGFpbiAibWZjIiwKKwkJICBjb3JyZXNwb25kaW5nIHRvIGVudHJ5IGluIHRoZSBjbG9ja3MgcHJvcGVydHkuCisKKyAgLSBzYW1zdW5nLG1mYy1yIDogQmFzZSBhZGRyZXNzIG9mIHRoZSBmaXJzdCBtZW1vcnkgYmFuayB1c2VkIGJ5IE1GQworCQkgICAgZm9yIERNQSBjb250aWd1b3VzIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBpdHMgc2l6ZS4KKworICAtIHNhbXN1bmcsbWZjLWwgOiBCYXNlIGFkZHJlc3Mgb2YgdGhlIHNlY29uZCBtZW1vcnkgYmFuayB1c2VkIGJ5IE1GQworCQkgICAgZm9yIERNQSBjb250aWd1b3VzIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBpdHMgc2l6ZS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAgLSBwb3dlci1kb21haW5zIDogcG93ZXItZG9tYWluIHByb3BlcnR5IGRlZmluZWQgd2l0aCBhIHBoYW5kbGUKKwkJCSAgIHRvIHJlc3BlY3RpdmUgcG93ZXIgZG9tYWluLgorCitFeGFtcGxlOgorU29DIHNwZWNpZmljIERUIGVudHJ5OgorCittZmM6IGNvZGVjQDEzNDAwMDAwIHsKKwljb21wYXRpYmxlID0gInNhbXN1bmcsbWZjLXY1IjsKKwlyZWcgPSA8MHgxMzQwMDAwMCAweDEwMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDAgOTQgMD47CisJcG93ZXItZG9tYWlucyA9IDwmcGRfbWZjPjsKKwljbG9ja3MgPSA8JmNsb2NrIDI3Mz47CisJY2xvY2stbmFtZXMgPSAibWZjIjsKK307CisKK0JvYXJkIHNwZWNpZmljIERUIGVudHJ5OgorCitjb2RlY0AxMzQwMDAwMCB7CisJc2Ftc3VuZyxtZmMtciA9IDwweDQzMDAwMDAwIDB4ODAwMDAwPjsKKwlzYW1zdW5nLG1mYy1sID0gPDB4NTEwMDAwMDAgMHg4MDAwMDA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9zYW1zdW5nLWZpbWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3NhbXN1bmctZmltYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTIyZDZmOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9zYW1zdW5nLWZpbWMudHh0CkBAIC0wLDAgKzEsMjExIEBACitTYW1zdW5nIFM1UC9FWFlOT1MgU29DIENhbWVyYSBTdWJzeXN0ZW0gKEZJTUMpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBTNVAvRXh5bm9zIFNvQyBDYW1lcmEgc3Vic3lzdGVtIGNvbXByaXNlcyBvZiBtdWx0aXBsZSBzdWItZGV2aWNlcworcmVwcmVzZW50ZWQgYnkgc2VwYXJhdGUgZGV2aWNlIHRyZWUgbm9kZXMuIEN1cnJlbnRseSB0aGlzIGluY2x1ZGVzOiBGSU1DIChpbgordGhlIFM1UCBTb0NzIHNlcmllcyBrbm93biBhcyBDQU1JRiksIE1JUEkgQ1NJUywgRklNQy1MSVRFIGFuZCBGSU1DLUlTIChJU1ApLgorCitUaGUgc3ViLXN1YmRldmljZXMgYXJlIGRlZmluZWQgYXMgY2hpbGQgbm9kZXMgb2YgdGhlIGNvbW1vbiAnY2FtZXJhJyBub2RlIHdoaWNoCithbHNvIGluY2x1ZGVzIGNvbW1vbiBwcm9wZXJ0aWVzIG9mIHRoZSB3aG9sZSBzdWJzeXN0ZW0gbm90IHJlYWxseSBzcGVjaWZpYyB0bworYW55IHNpbmdsZSBzdWItZGV2aWNlLCBsaWtlIGNvbW1vbiBjYW1lcmEgcG9ydCBwaW5zIG9yIHRoZSBDQU1DTEsgY2xvY2sgb3V0cHV0cworZm9yIGV4dGVybmFsIGltYWdlIHNlbnNvcnMgYXR0YWNoZWQgdG8gYW4gU29DLgorCitDb21tb24gJ2NhbWVyYScgbm9kZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBtdXN0IGJlICJzYW1zdW5nLGZpbWMiLCAic2ltcGxlLWJ1cyIKKy0gY2xvY2tzOiBsaXN0IG9mIGNsb2NrIHNwZWNpZmllcnMsIGNvcnJlc3BvbmRpbmcgdG8gZW50cmllcyBpbgorICB0aGUgY2xvY2stbmFtZXMgcHJvcGVydHk7CistIGNsb2NrLW5hbWVzIDogbXVzdCBjb250YWluICJzY2xrX2NhbTAiLCAic2Nsa19jYW0xIiwgInB4bF9hc3luYzAiLAorICAicHhsX2FzeW5jMSIgZW50cmllcywgbWF0Y2hpbmcgZW50cmllcyBpbiB0aGUgY2xvY2tzIHByb3BlcnR5LgorCistICNjbG9jay1jZWxsczogZnJvbSB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmdzICguLi9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQpLAorICBtdXN0IGJlIDEuIEEgY2xvY2sgcHJvdmlkZXIgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSAnY2FtZXJhJyBub2RlIGFuZCBpdCBzaG91bGQKKyAgYmUgcmVmZXJlbmNlZCBieSBleHRlcm5hbCBzZW5zb3JzIHRoYXQgdXNlIGNsb2NrcyBwcm92aWRlZCBieSB0aGUgU29DIG9uCisgIENBTV8qX0NMS09VVCBwaW5zLiBUaGUgY2xvY2sgc3BlY2lmaWVyIGNlbGwgc3RvcmVzIGFuIGluZGV4IG9mIGEgY2xvY2suCisgIFRoZSBpbmRpY2VzIGFyZSAwLCAxIGZvciBDQU1fQV9DTEtPVVQsIENBTV9CX0NMS09VVCBjbG9ja3MgcmVzcGVjdGl2ZWx5LgorCistIGNsb2NrLW91dHB1dC1uYW1lczogZnJvbSB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmdzLCBzaG91bGQgY29udGFpbiBuYW1lcyBvZgorICBjbG9ja3MgcmVnaXN0ZXJlZCBieSB0aGUgY2FtZXJhIHN1YnN5c3RlbSBjb3JyZXNwb25kaW5nIHRvIENBTV9BX0NMS09VVCwKKyAgQ0FNX0JfQ0xLT1VUIG91dHB1dCBjbG9ja3MgcmVzcGVjdGl2ZWx5LgorCitUaGUgcGluY3RybCBiaW5kaW5ncyBkZWZpbmVkIGluIC4uL3BpbmN0cmwvcGluY3RybC1iaW5kaW5ncy50eHQgbXVzdCBiZSB1c2VkCit0byBkZWZpbmUgYSByZXF1aXJlZCBwaW5jdHJsIHN0YXRlIG5hbWVkICJkZWZhdWx0IiBhbmQgb3B0aW9uYWwgcGluY3RybCBzdGF0ZXM6CisiaWRsZSIsICJhY3RpdmUtYSIsIGFjdGl2ZS1iIi4gVGhlc2Ugb3B0aW9uYWwgc3RhdGVzIGNhbiBiZSB1c2VkIHRvIHN3aXRjaCB0aGUKK2NhbWVyYSBwb3J0IHBpbm11eCBhdCBydW50aW1lLiBUaGUgImlkbGUiIHN0YXRlIHNob3VsZCBjb25maWd1cmUgYm90aCB0aGUgY2FtZXJhCitwb3J0cyBBIGFuZCBCIGludG8gaGlnaCBpbXBlZGFuY2Ugc3RhdGUsIGVzcGVjaWFsbHkgdGhlIENBTUNMSyBjbG9jayBvdXRwdXQKK3Nob3VsZCBiZSBpbmFjdGl2ZS4gRm9yIHRoZSAiYWN0aXZlLWEiIHN0YXRlIHRoZSBjYW1lcmEgcG9ydCBBIG11c3QgYmUgYWN0aXZhdGVkCithbmQgdGhlIHBvcnQgQiBkZWFjdGl2YXRlZCBhbmQgZm9yIHRoZSBzdGF0ZSAiYWN0aXZlLWIiIGl0IHNob3VsZCBiZSB0aGUgb3RoZXIKK3dheSBhcm91bmQuCisKK1RoZSAnY2FtZXJhJyBub2RlIG11c3QgaW5jbHVkZSBhdCBsZWFzdCBvbmUgJ2ZpbWMnIGNoaWxkIG5vZGUuCisKKworJ2ZpbWMnIGRldmljZSBub2RlcworLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6ICJzYW1zdW5nLHM1cHYyMTAtZmltYyIgZm9yIFM1UFYyMTAsICJzYW1zdW5nLGV4eW5vczQyMTAtZmltYyIKKyAgZm9yIEV4eW5vczQyMTAgYW5kICJzYW1zdW5nLGV4eW5vczQyMTItZmltYyIgZm9yIEV4eW5vczR4MTIgU29DczsKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXJzIHNldCBmb3IgdGhlIGRldmljZTsKKy0gaW50ZXJydXB0czogc2hvdWxkIGNvbnRhaW4gRklNQyBpbnRlcnJ1cHQ7CistIGNsb2NrczogbGlzdCBvZiBjbG9jayBzcGVjaWZpZXJzLCBtdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggcmVxdWlyZWQKKyAgZW50cnkgaW4gY2xvY2stbmFtZXM7CistIGNsb2NrLW5hbWVzOiBtdXN0IGNvbnRhaW4gImZpbWMiLCAic2Nsa19maW1jIiBlbnRyaWVzLgorLSBzYW1zdW5nLHBpeC1saW1pdHM6IGFuIGFycmF5IG9mIG1heGltdW0gc3VwcG9ydGVkIGltYWdlIHNpemVzIGluIHBpeGVscywgZm9yCisgIGRldGFpbHMgcmVmZXIgdG8gVGFibGUgMi0xIGluIHRoZSBTNVBWMjEwIFNvQyBVc2VyIE1hbnVhbDsgVGhlIG1lYW5pbmcgb2YKKyAgZWFjaCBjZWxsIGlzIGFzIGZvbGxvd3M6CisgIDAgLSBzY2FsZXIgaW5wdXQgaG9yaXpvbnRhbCBzaXplLAorICAxIC0gaW5wdXQgaG9yaXpvbnRhbCBzaXplIGZvciB0aGUgc2NhbGVyIGJ5cGFzc2VkLAorICAyIC0gUkVBTF9XSURUSCB3aXRob3V0IGlucHV0IHJvdGF0aW9uLAorICAzIC0gUkVBTF9IRUlHSFQgd2l0aCBpbnB1dCByb3RhdGlvbiwKKy0gc2Ftc3VuZyxzeXNyZWc6IGEgcGhhbmRsZSB0byB0aGUgU1lTUkVHIG5vZGUuCisKK0VhY2ggRklNQyBkZXZpY2Ugc2hvdWxkIGhhdmUgYW4gYWxpYXMgaW4gdGhlIGFsaWFzZXMgbm9kZSwgaW4gdGhlIGZvcm0gb2YKK2ZpbWM8bj4sIHdoZXJlIDxuPiBpcyBhbiBpbnRlZ2VyIHNwZWNpZnlpbmcgdGhlIElQIGJsb2NrIGluc3RhbmNlLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIGNsb2NrLWZyZXF1ZW5jeTogbWF4aW11bSBGSU1DIGxvY2FsIGNsb2NrIChMQ0xLKSBmcmVxdWVuY3k7CistIHNhbXN1bmcsbWluLXBpeC1zaXplczogYW4gYXJyYXkgc3BlY3lmaW5nIG1pbmltdW0gaW1hZ2Ugc2l6ZSBpbiBwaXhlbHMgYXQKKyAgdGhlIEZJTUMgaW5wdXQgYW5kIG91dHB1dCBETUEsIGluIHRoZSBmaXJzdCBhbmQgc2Vjb25kIGNlbGwgcmVzcGVjdGl2ZWx5LgorICBEZWZhdWx0IHZhbHVlIHdoZW4gdGhpcyBwcm9wZXJ0eSBpcyBub3QgcHJlc2VudCBpcyA8MTYgMTY+OworLSBzYW1zdW5nLG1pbi1waXgtYWxpZ25tZW50OiBtaW5pbXVtIHN1cHBvcnRlZCBpbWFnZSBoZWlnaHQgYWxpZ25tZW50IChmaXJzdAorICBjZWxsKSBhbmQgdGhlIGhvcml6b250YWwgaW1hZ2Ugb2Zmc2V0IChzZWNvbmQgY2VsbCkuIFRoZSB2YWx1ZXMgYXJlIGluIHBpeGVscworICBhbmQgZGVmYXVsdCB0byA8MiAxPiB3aGVuIHRoaXMgcHJvcGVydHkgaXMgbm90IHByZXNlbnQ7CistIHNhbXN1bmcsbWFpbnNjYWxlci1leHQ6IGEgYm9vbGVhbiBwcm9wZXJ0eSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIEZJTUMgSVAKKyAgc3VwcG9ydHMgZXh0ZW5kZWQgaW1hZ2Ugc2l6ZSBhbmQgaGFzIENJRVhURU4gcmVnaXN0ZXI7CistIHNhbXN1bmcscm90YXRvcnM6IGEgYml0bWFzayBzcGVjaWZ5aW5nIHdoZXRoZXIgdGhpcyBJUCBoYXMgdGhlIGlucHV0IGFuZAorICB0aGUgb3V0cHV0IHJvdGF0b3IuIEJpdHMgNCBhbmQgMCBjb3JyZXNwb25kIHRvIGlucHV0IGFuZCBvdXRwdXQgcm90YXRvcgorICByZXNwZWN0aXZlbHkuIElmIGEgcm90YXRvciBpcyBwcmVzZW50IGl0cyBjb3JyZXNwb25kaW5nIGJpdCBzaG91bGQgYmUgc2V0LgorICBEZWZhdWx0IHZhbHVlIHdoZW4gdGhpcyBwcm9wZXJ0eSBpcyBub3Qgc3BlY2lmaWVkIGlzIDB4MTEuCistIHNhbXN1bmcsY2FtLWlmOiBhIGJvbGVhbiBwcm9wZXJ0eSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIElQIGJsb2NrIGluY2x1ZGVzCisgIHRoZSBjYW1lcmEgaW5wdXQgaW50ZXJmYWNlLgorLSBzYW1zdW5nLGlzcC13YjogdGhpcyBwcm9wZXJ0eSBtdXN0IGJlIHByZXNlbnQgaWYgdGhlIElQIGJsb2NrIGhhcyB0aGUgSVNQCisgIHdyaXRlYmFjayBpbnB1dC4KKy0gc2Ftc3VuZyxsY2Qtd2I6IHRoaXMgcHJvcGVydHkgbXVzdCBiZSBwcmVzZW50IGlmIHRoZSBJUCBibG9jayBoYXMgdGhlIExDRAorICB3cml0ZWJhY2sgaW5wdXQuCisKKworJ3BhcmFsbGVsLXBvcnRzJyBub2RlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBub2RlIHNob3VsZCBjb250YWluIGNoaWxkICdwb3J0JyBub2RlcyBzcGVjaWZ5aW5nIGFjdGl2ZSBwYXJhbGxlbCB2aWRlbworaW5wdXQgcG9ydHMuIEl0IGluY2x1ZGVzIGNhbWVyYSBBIGFuZCBjYW1lcmEgQiBpbnB1dHMuICdyZWcnIHByb3BlcnR5IGluIHRoZQorcG9ydCBub2RlcyBzcGVjaWZpZXMgZGF0YSBpbnB1dCAtIDAsIDEgaW5kaWNhdGVzIGlucHV0IEEsIEIgcmVzcGVjdGl2ZWx5LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzCisKKy0gc2Ftc3VuZyxjYW1jbGstb3V0IChkZXByZWNhdGVkKSA6IHNwZWNpZmllcyBjbG9jayBvdXRwdXQgZm9yIHJlbW90ZSBzZW5zb3IsCisgIDAgLSBDQU1fQV9DTEtPVVQsIDEgLSBDQU1fQl9DTEtPVVQ7CisKK0ltYWdlIHNlbnNvciBub2RlcworLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBzZW5zb3IgZGV2aWNlIG5vZGVzIHNob3VsZCBiZSBhZGRlZCB0byB0aGVpciBjb250cm9sIGJ1cyBjb250cm9sbGVyIChlLmcuCitJMkMwKSBub2RlcyBhbmQgbGlua2VkIHRvIGEgcG9ydCBub2RlIGluIHRoZSBjc2lzIG9yIHRoZSBwYXJhbGxlbC1wb3J0cyBub2RlLAordXNpbmcgdGhlIGNvbW1vbiB2aWRlbyBpbnRlcmZhY2VzIGJpbmRpbmdzLCBkZWZpbmVkIGluIHZpZGVvLWludGVyZmFjZXMudHh0LgorCitFeGFtcGxlOgorCisJYWxpYXNlcyB7CisJCWZpbWMwID0gJmZpbWNfMDsKKwl9OworCisJLyogUGFyYWxsZWwgYnVzIElGIHNlbnNvciAqLworCWkyY18wOiBpMmNAMTM4NjAwMDAgeworCQlzNWs2YWE6IHNlbnNvckAzYyB7CisJCQljb21wYXRpYmxlID0gInNhbXN1bmcsczVrNmFhZngiOworCQkJcmVnID0gPDB4M2M+OworCQkJdmRkaW8tc3VwcGx5ID0gPC4uLj47CisKKwkJCWNsb2NrLWZyZXF1ZW5jeSA9IDwyNDAwMDAwMD47CisJCQljbG9ja3MgPSA8JmNhbWVyYSAxPjsKKwkJCWNsb2NrLW5hbWVzID0gIm1jbGsiOworCisJCQlwb3J0IHsKKwkJCQlzNWs2YWFfZXA6IGVuZHBvaW50IHsKKwkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZmaW1jMF9lcD47CisJCQkJCWJ1cy13aWR0aCA9IDw4PjsKKwkJCQkJaHN5bmMtYWN0aXZlID0gPDA+OworCQkJCQl2c3luYy1hY3RpdmUgPSA8MT47CisJCQkJCXBjbGstc2FtcGxlID0gPDE+OworCQkJCX07CisJCQl9OworCQl9OworCisJCS8qIE1JUEkgQ1NJLTIgYnVzIElGIHNlbnNvciAqLworCQlzNWM3M20zOiBzZW5zb3JAMHgxYSB7CisJCQljb21wYXRpYmxlID0gInNhbXN1bmcsczVjNzNtMyI7CisJCQlyZWcgPSA8MHgxYT47CisJCQl2ZGRpby1zdXBwbHkgPSA8Li4uPjsKKworCQkJY2xvY2stZnJlcXVlbmN5ID0gPDI0MDAwMDAwPjsKKwkJCWNsb2NrcyA9IDwmY2FtZXJhIDA+OworCQkJY2xvY2stbmFtZXMgPSAibWNsayI7CisKKwkJCXBvcnQgeworCQkJCXM1YzczbTNfMTogZW5kcG9pbnQgeworCQkJCQlkYXRhLWxhbmVzID0gPDEgMiAzIDQ+OworCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmNzaXMwX2VwPjsKKwkJCQl9OworCQkJfTsKKwkJfTsKKwl9OworCisJY2FtZXJhIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGZpbWMiLCAic2ltcGxlLWJ1cyI7CisJCWNsb2NrcyA9IDwmY2xvY2sgMTMyPiwgPCZjbG9jayAxMzM+LCA8JmNsb2NrIDM1MT4sCisJCQkgPCZjbG9jayAzNTI+OworCQljbG9jay1uYW1lcyA9ICJzY2xrX2NhbTAiLCAic2Nsa19jYW0xIiwgInB4bF9hc3luYzAiLAorCQkJICAgICAgInB4bF9hc3luYzEiOworCQkjY2xvY2stY2VsbHMgPSA8MT47CisJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJjYW1fYV9jbGtvdXQiLCAiY2FtX2JfY2xrb3V0IjsKKwkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwkJcGluY3RybC0wID0gPCZjYW1fcG9ydF9hX2Nsa19hY3RpdmU+OworCQlzdGF0dXMgPSAib2theSI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKworCQkvKiBwYXJhbGxlbCBjYW1lcmEgcG9ydHMgKi8KKwkJcGFyYWxsZWwtcG9ydHMgeworCQkJLyogY2FtZXJhIEEgaW5wdXQgKi8KKwkJCXBvcnRAMCB7CisJCQkJcmVnID0gPDA+OworCQkJCWZpbWMwX2VwOiBlbmRwb2ludCB7CisJCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmczVrNmFhX2VwPjsKKwkJCQkJYnVzLXdpZHRoID0gPDg+OworCQkJCQloc3luYy1hY3RpdmUgPSA8MD47CisJCQkJCXZzeW5jLWFjdGl2ZSA9IDwxPjsKKwkJCQkJcGNsay1zYW1wbGUgPSA8MT47CisJCQkJfTsKKwkJCX07CisJCX07CisKKwkJZmltY18wOiBmaW1jQDExODAwMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M0MjEwLWZpbWMiOworCQkJcmVnID0gPDB4MTE4MDAwMDAgMHgxMDAwPjsKKwkJCWludGVycnVwdHMgPSA8MCA4NSAwPjsKKwkJCXN0YXR1cyA9ICJva2F5IjsKKwkJfTsKKworCQljc2lzXzA6IGNzaXNAMTE4ODAwMDAgeworCQkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczQyMTAtY3NpcyI7CisJCQlyZWcgPSA8MHgxMTg4MDAwMCAweDEwMDA+OworCQkJaW50ZXJydXB0cyA9IDwwIDc4IDA+OworCQkJLyogY2FtZXJhIEMgaW5wdXQgKi8KKwkJCXBvcnRAMyB7CisJCQkJcmVnID0gPDM+OworCQkJCWNzaXMwX2VwOiBlbmRwb2ludCB7CisJCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmczVjNzNtM19lcD47CisJCQkJCWRhdGEtbGFuZXMgPSA8MSAyIDMgND47CisJCQkJCXNhbXN1bmcsY3Npcy1ocy1zZXR0bGUgPSA8MTI+OworCQkJCX07CisJCQl9OworCQl9OworCX07CisKK1RoZSBNSVBJLUNTSVMgZGV2aWNlIGJpbmRpbmcgaXMgZGVmaW5lZCBpbiBzYW1zdW5nLW1pcGktY3Npcy50eHQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvc2Ftc3VuZy1taXBpLWNzaXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3NhbXN1bmctbWlwaS1jc2lzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTQ1ZjBiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3NhbXN1bmctbWlwaS1jc2lzLnR4dApAQCAtMCwwICsxLDgxIEBACitTYW1zdW5nIFM1UC9FWFlOT1MgU29DIHNlcmllcyBNSVBJIENTSS0yIHJlY2VpdmVyIChNSVBJIENTSVMpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZQkgIDogInNhbXN1bmcsczVwdjIxMC1jc2lzIiBmb3IgUzVQVjIxMCAoUzVQQzExMCksCisJCSAgICAic2Ftc3VuZyxleHlub3M0MjEwLWNzaXMiIGZvciBFeHlub3M0MjEwIChTNVBDMjEwKSwKKwkJICAgICJzYW1zdW5nLGV4eW5vczQyMTItY3NpcyIgZm9yIEV4eW5vczQyMTIvRXh5bm9zNDQxMiwKKwkJICAgICJzYW1zdW5nLGV4eW5vczUyNTAtY3NpcyIgZm9yIEV4eW5vczUyNTA7CistIHJlZwkJICA6IG9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2U7CistIGludGVycnVwdHMgICAgICA6IHNob3VsZCBjb250YWluIE1JUEkgQ1NJUyBpbnRlcnJ1cHQ7IHRoZSBmb3JtYXQgb2YgdGhlCisJCSAgICBpbnRlcnJ1cHQgc3BlY2lmaWVyIGRlcGVuZHMgb24gdGhlIGludGVycnVwdCBjb250cm9sbGVyOworLSBidXMtd2lkdGgJICA6IG1heGltdW0gbnVtYmVyIG9mIGRhdGEgbGFuZXMgc3VwcG9ydGVkIChTb0Mgc3BlY2lmaWMpOworLSB2ZGRpby1zdXBwbHkgICAgOiBNSVBJIENTSVMgSS9PIGFuZCBQTEwgdm9sdGFnZSBzdXBwbHkgKGUuZy4gMS44Vik7CistIHZkZGNvcmUtc3VwcGx5ICA6IE1JUEkgQ1NJUyBDb3JlIHZvbHRhZ2Ugc3VwcGx5IChlLmcuIDEuMVYpOworLSBjbG9ja3MJICA6IGxpc3Qgb2YgY2xvY2sgc3BlY2lmaWVycywgY29ycmVzcG9uZGluZyB0byBlbnRyaWVzIGluCisJCSAgICBjbG9jay1uYW1lcyBwcm9wZXJ0eTsKKy0gY2xvY2stbmFtZXMJICA6IG11c3QgY29udGFpbiAiY3NpcyIsICJzY2xrX2NzaXMiIGVudHJpZXMsIG1hdGNoaW5nIGVudHJpZXMKKwkJICAgIGluIHRoZSBjbG9ja3MgcHJvcGVydHkuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gY2xvY2stZnJlcXVlbmN5IDogVGhlIElQJ3MgbWFpbiAoc3lzdGVtIGJ1cykgY2xvY2sgZnJlcXVlbmN5IGluIEh6LCBkZWZhdWx0CisJCSAgICB2YWx1ZSB3aGVuIHRoaXMgcHJvcGVydHkgaXMgbm90IHNwZWNpZmllZCBpcyAxNjYgTUh6OworLSBzYW1zdW5nLGNzaXMtd2NsayA6IENTSS0yIHdyYXBwZXIgY2xvY2sgc2VsZWN0aW9uLiBJZiB0aGlzIHByb3BlcnR5IGlzIHByZXNlbnQKKwkJICAgIGV4dGVybmFsIGNsb2NrIGZyb20gQ01VIHdpbGwgYmUgdXNlZCwgb3IgdGhlIGJ1cyBjbG9jayBpZgorCQkgICAgaWYgaXQncyBub3Qgc3BlY2lmaWVkLgorCitUaGUgZGV2aWNlIG5vZGUgc2hvdWxkIGNvbnRhaW4gb25lICdwb3J0JyBjaGlsZCBub2RlIHdpdGggb25lIGNoaWxkICdlbmRwb2ludCcKK25vZGUsIGFjY29yZGluZyB0byB0aGUgYmluZGluZ3MgZGVmaW5lZCBpbiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvCittZWRpYS92aWRlby1pbnRlcmZhY2VzLnR4dC4gVGhlIGZvbGxvd2luZyBhcmUgcHJvcGVydGllcyBzcGVjaWZpYyB0byB0aG9zZSBub2Rlcy4KKworcG9ydCBub2RlCistLS0tLS0tLS0KKworLSByZWcJCSAgOiAocmVxdWlyZWQpIG11c3QgYmUgMyBmb3IgY2FtZXJhIEMgaW5wdXQgKENTSVMwKSBvciA0IGZvcgorCQkgICAgY2FtZXJhIEQgaW5wdXQgKENTSVMxKTsKKworZW5kcG9pbnQgbm9kZQorLS0tLS0tLS0tLS0tLQorCistIGRhdGEtbGFuZXMJICA6IChyZXF1aXJlZCkgYW4gYXJyYXkgc3BlY2lmeWluZyBhY3RpdmUgcGh5c2ljYWwgTUlQSS1DU0kyCisJCSAgICBkYXRhIGlucHV0IGxhbmVzIGFuZCB0aGVpciBtYXBwaW5nIHRvIGxvZ2ljYWwgbGFuZXM7IHRoZQorCQkgICAgYXJyYXkncyBjb250ZW50IGlzIHVudXNlZCwgb25seSBpdHMgbGVuZ3RoIGlzIG1lYW5pbmdmdWw7CisKKy0gc2Ftc3VuZyxjc2lzLWhzLXNldHRsZSA6IChvcHRpb25hbCkgZGlmZmVyZW50aWFsIHJlY2VpdmVyIChIUy1SWCkgc2V0dGxlIHRpbWU7CisKKworRXhhbXBsZToKKworCXJlZzA6IHJlZ3VsYXRvckAwIHsKKwl9OworCisJcmVnMTogcmVndWxhdG9yQDEgeworCX07CisKKy8qIFNvQyBwcm9wZXJ0aWVzICovCisKKwljc2lzXzA6IGNzaXNAMTE4ODAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNDIxMC1jc2lzIjsKKwkJcmVnID0gPDB4MTE4ODAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDc4IDA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJfTsKKworLyogQm9hcmQgcHJvcGVydGllcyAqLworCisJY3Npc18wOiBjc2lzQDExODgwMDAwIHsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDE2NjAwMDAwMD47CisJCXZkZGlvLXN1cHBseSA9IDwmcmVnMD47CisJCXZkZGNvcmUtc3VwcGx5ID0gPCZyZWcxPjsKKwkJcG9ydCB7CisJCQlyZWcgPSA8Mz47IC8qIDMgLSBDU0lTMCwgNCAtIENTSVMxICovCisJCQljc2lzMF9lcDogZW5kcG9pbnQgeworCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwuLi4+OworCQkJCWRhdGEtbGFuZXMgPSA8MT4sIDwyPjsKKwkJCQlzYW1zdW5nLGNzaXMtaHMtc2V0dGxlID0gPDEyPjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9zYW1zdW5nLXM1YzczbTMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3NhbXN1bmctczVjNzNtMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM4NWM0NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9zYW1zdW5nLXM1YzczbTMudHh0CkBAIC0wLDAgKzEsOTcgQEAKK1NhbXN1bmcgUzVDNzNNMyA4TXAgY2FtZXJhIElTUAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBTNUM3M00zIGNhbWVyYSBJU1Agc3VwcG9ydHMgTUlQSSBDU0ktMiBhbmQgcGFyYWxsZWwgKElUVS1SIEJULjY1NikgdmlkZW8KK2RhdGEgYnVzc2VzLiBUaGUgSTJDIGJ1cyBpcyB0aGUgbWFpbiBjb250cm9sIGJ1cyBhbmQgYWRkaXRpb25hbGx5IHRoZSBTUEkgYnVzCitpcyB1c2VkLCBtb3N0bHkgZm9yIHRyYW5zZmVycmluZyB0aGUgZmlybXdhcmUgdG8gYW5kIGZyb20gdGhlIGRldmljZS4gVHdvCitzbGF2ZSBkZXZpY2Ugbm9kZXMgY29ycmVzcG9uZGluZyB0byB0aGVzZSBjb250cm9sIGJ1cyBpbnRlcmZhY2VzIGFyZSByZXF1aXJlZAorYW5kIHNob3VsZCBiZSBwbGFjZWQgdW5kZXIgcmVzcGVjdGl2ZSBidXMgY29udHJvbGxlciBub2Rlcy4KKworSTJDIHNsYXZlIGRldmljZSBub2RlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlCSAgICA6ICJzYW1zdW5nLHM1YzczbTMiOworLSByZWcJCSAgICA6IEkyQyBzbGF2ZSBhZGRyZXNzIG9mIHRoZSBzZW5zb3I7CistIHZkZC1pbnQtc3VwcGx5ICAgIDogZGlnaXRhbCBwb3dlciBzdXBwbHkgKDEuMlYpOworLSB2ZGRhLXN1cHBseQkgICAgOiBhbmFsb2cgcG93ZXIgc3VwcGx5ICgxLjJWKTsKKy0gdmRkLXJlZy1zdXBwbHkgICAgOiByZWd1bGF0b3IgaW5wdXQgcG93ZXIgc3VwcGx5ICgyLjhWKTsKKy0gdmRkaW8taG9zdC1zdXBwbHkgOiBob3N0IEkvTyBwb3dlciBzdXBwbHkgKDEuOFYgdG8gMi44Vik7CistIHZkZGlvLWNpcy1zdXBwbHkgIDogQ0lTIEkvTyBwb3dlciBzdXBwbHkgKDEuMlYgdG8gMS44Vik7CistIHZkZC1hZi1zdXBwbHkgICAgIDogbGVucyBwb3dlciBzdXBwbHkgKDIuOFYpOworLSB4c2h1dGRvd24tZ3Bpb3MgICA6IHNwZWNpZmllciBvZiBHUElPIGNvbm5lY3RlZCB0byB0aGUgWFNIVVRET1dOIHBpbjsKKy0gc3RhbmRieS1ncGlvcyAgICAgOiBzcGVjaWZpZXIgb2YgR1BJTyBjb25uZWN0ZWQgdG8gdGhlIFNUQU5EQlkgcGluOworLSBjbG9ja3MJICAgIDogc2hvdWxkIGNvbnRhaW4gbGlzdCBvZiBwaGFuZGxlIGFuZCBjbG9jayBzcGVjaWZpZXIgcGFpcnMKKwkJICAgICAgYWNjb3JkaW5nIHRvIGNvbW1vbiBjbG9jayBiaW5kaW5ncyBmb3IgdGhlIGNsb2NrcyBkZXNjcmliZWQKKwkJICAgICAgaW4gdGhlIGNsb2NrLW5hbWVzIHByb3BlcnR5OworLSBjbG9jay1uYW1lcwkgICAgOiBzaG91bGQgY29udGFpbiAiY2lzX2V4dGNsayIgZW50cnkgZm9yIHRoZSBDSVNfRVhUQ0xLIGNsb2NrOworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIGNsb2NrLWZyZXF1ZW5jeSAgIDogdGhlIGZyZXF1ZW5jeSBhdCB3aGljaCB0aGUgImNpc19leHRjbGsiIGNsb2NrIHNob3VsZCBiZQorCQkgICAgICBjb25maWd1cmVkIHRvIG9wZXJhdGUsIGluIEh6OyBpZiB0aGlzIHByb3BlcnR5IGlzIG5vdAorCQkgICAgICBzcGVjaWZpZWQgZGVmYXVsdCAyNCBNSHogdmFsdWUgd2lsbCBiZSB1c2VkLgorCitUaGUgY29tbW9uIHZpZGVvIGludGVyZmFjZXMgYmluZGluZ3MgKHNlZSB2aWRlby1pbnRlcmZhY2VzLnR4dCkgc2hvdWxkIGJlIHVzZWQKK3RvIHNwZWNpZnkgbGluayBmcm9tIHRoZSBTNUM3M00zIHRvIGFuIGV4dGVybmFsIGltYWdlIGRhdGEgcmVjZWl2ZXIuIFRoZSBTNUM3M00zCitkZXZpY2Ugbm9kZSBzaG91bGQgY29udGFpbiBvbmUgJ3BvcnQnIGNoaWxkIG5vZGUgd2l0aCBhbiAnZW5kcG9pbnQnIHN1Ym5vZGUgZm9yCit0aGlzIHB1cnBvc2UuIFRoZSBkYXRhIGxpbmsgZnJvbSBhIHJhdyBpbWFnZSBzZW5zb3IgdG8gdGhlIFM1QzczTTMgY2FuIGJlCitzaW1pbGFybHkgc3BlY2lmaWVkLCBidXQgaXQgaXMgb3B0aW9uYWwgc2luY2UgdGhlIFM1QzczTTMgSVNQIGFuZCBhIHJhdyBpbWFnZQorc2Vuc29yIGFyZSB1c3VhbGx5IGluc2VwYXJhYmxlIGFuZCBmb3JtIGEgaHlicmlkIG1vZHVsZS4KKworRm9sbG93aW5nIHByb3BlcnRpZXMgYXJlIHZhbGlkIGZvciB0aGUgZW5kcG9pbnQgbm9kZShzKToKKworZW5kcG9pbnQgc3Vibm9kZQorLS0tLS0tLS0tLS0tLS0tLQorCistIGRhdGEtbGFuZXMgOiAob3B0aW9uYWwpIHNwZWNpZmllcyBNSVBJIENTSS0yIGRhdGEgbGFuZXMgYXMgY292ZXJlZCBpbgorICB2aWRlby1pbnRlcmZhY2VzLnR4dC4gVGhpcyBzZW5zb3IgZG9lc24ndCBzdXBwb3J0IGRhdGEgbGFuZSByZW1hcHBpbmcKKyAgYW5kIHBoeXNpY2FsIGxhbmUgaW5kZXhlcyBpbiBzdWJzZXF1ZW50IGVsZW1lbnRzIG9mIHRoZSBhcnJheSBzaG91bGQKKyAgYmUgb25seSBjb25zZWN1dGl2ZSBhc2NlbmRpbmcgdmFsdWVzLgorCitTUEkgZGV2aWNlIG5vZGUKKy0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUJICAgIDogInNhbXN1bmcsczVjNzNtMyI7CisKK0ZvciBtb3JlIGRldGFpbHMgc2VlIGRlc2NyaXB0aW9uIG9mIHRoZSBTUEkgYnVzc2VzIGJpbmRpbmdzCisoLi4vc3BpL3NwaS1idXMudHh0KSBhbmQgYmluZGluZ3Mgb2YgYSBzcGVjaWZpYyBidXMgY29udHJvbGxlci4KKworRXhhbXBsZToKKworaTJjQDEzOEEwMDAwMDAgeworCS4uLgorCXM1YzczbTNAM2MgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsczVjNzNtMyI7CisJCXJlZyA9IDwweDNjPjsKKwkJdmRkLWludC1zdXBwbHkgPSA8JmJ1Y2s5X3JlZz47CisJCXZkZGEtc3VwcGx5ID0gPCZsZG8xN19yZWc+OworCQl2ZGQtcmVnLXN1cHBseSA9IDwmY2FtX2lvX3JlZz47CisJCXZkZGlvLWhvc3Qtc3VwcGx5ID0gPCZsZG8xOF9yZWc+OworCQl2ZGRpby1jaXMtc3VwcGx5ID0gPCZsZG85X3JlZz47CisJCXZkZC1hZi1zdXBwbHkgPSA8JmNhbV9hZl9yZWc+OworCQljbG9jay1mcmVxdWVuY3kgPSA8MjQwMDAwMDA+OworCQljbG9ja3MgPSA8JmNsayAwPjsKKwkJY2xvY2stbmFtZXMgPSAiY2lzX2V4dGNsayI7CisJCXJlc2V0LWdwaW9zID0gPCZncGYxIDMgMT47CisJCXN0YW5kYnktZ3Bpb3MgPSA8JmdwbTAgMSAxPjsKKwkJcG9ydCB7CisJCQlzNWM3M20zX2VwOiBlbmRwb2ludCB7CisJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZjc2lzMF9lcD47CisJCQkJZGF0YS1sYW5lcyA9IDwxIDIgMyA0PjsKKwkJCX07CisJCX07CisJfTsKK307CisKK3NwaUAxMzkyMDAwIHsKKwkuLi4KKwlzNWM3M20zX3NwaTogczVjNzNtM0AwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLHM1YzczbTMiOworCQlyZWcgPSA8MD47CisJCS4uLgorCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3NhbXN1bmctczVrNWJhZi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvc2Ftc3VuZy1zNWs1YmFmLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjUxZTA0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3NhbXN1bmctczVrNWJhZi50eHQKQEAgLTAsMCArMSw1OCBAQAorU2Ftc3VuZyBTNUs1QkFGIFVYR0EgMS81IiAyTSBDTU9TIEltYWdlIFNlbnNvciB3aXRoIGVtYmVkZGVkIFNvQyBJU1AKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZQkgIDogInNhbXN1bmcsczVrNWJhZiI7CistIHJlZwkJICA6IEkyQyBzbGF2ZSBhZGRyZXNzIG9mIHRoZSBzZW5zb3I7CistIHZkZGEtc3VwcGx5CSAgOiBhbmFsb2cgcG93ZXIgc3VwcGx5IDIuOFYgKDIuNlYgdG8gMy4wVik7CistIHZkZHJlZy1zdXBwbHkJICA6IHJlZ3VsYXRvciBpbnB1dCBwb3dlciBzdXBwbHkgMS44ViAoMS43ViB0byAxLjlWKQorCQkgICAgb3IgMi44ViAoMi42ViB0byAzLjApOworLSB2ZGRpby1zdXBwbHkJICA6IEkvTyBwb3dlciBzdXBwbHkgMS44ViAoMS42NVYgdG8gMS45NVYpCisJCSAgICBvciAyLjhWICgyLjVWIHRvIDMuMVYpOworLSBzdGJ5bi1ncGlvcwkgIDogR1BJTyBjb25uZWN0ZWQgdG8gU1REQllOIHBpbjsKKy0gcnN0bi1ncGlvcwkgIDogR1BJTyBjb25uZWN0ZWQgdG8gUlNUTiBwaW47CistIGNsb2NrcwkgIDogbGlzdCBvZiBwaGFuZGxlIGFuZCBjbG9jayBzcGVjaWZpZXIgcGFpcnMKKwkJICAgIGFjY29yZGluZyB0byBjb21tb24gY2xvY2sgYmluZGluZ3MgZm9yIHRoZQorCQkgICAgY2xvY2tzIGRlc2NyaWJlZCBpbiBjbG9jay1uYW1lczsKKy0gY2xvY2stbmFtZXMJICA6IHNob3VsZCBpbmNsdWRlICJtY2xrIiBmb3IgdGhlIHNlbnNvcidzIG1hc3RlciBjbG9jazsKKworT3B0aW9uYWwgcHJvcGVydGllczoKKworLSBjbG9jay1mcmVxdWVuY3kgOiB0aGUgZnJlcXVlbmN5IGF0IHdoaWNoIHRoZSAibWNsayIgY2xvY2sgc2hvdWxkIGJlCisJCSAgICBjb25maWd1cmVkIHRvIG9wZXJhdGUsIGluIEh6OyBpZiB0aGlzIHByb3BlcnR5IGlzIG5vdAorCQkgICAgc3BlY2lmaWVkIGRlZmF1bHQgMjQgTUh6IHZhbHVlIHdpbGwgYmUgdXNlZC4KKworVGhlIGRldmljZSBub2RlIHNob3VsZCBjb250YWluIG9uZSAncG9ydCcgY2hpbGQgbm9kZSB3aXRoIG9uZSBjaGlsZCAnZW5kcG9pbnQnCitub2RlLCBhY2NvcmRpbmcgdG8gdGhlIGJpbmRpbmdzIGRlZmluZWQgaW4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzLworbWVkaWEvdmlkZW8taW50ZXJmYWNlcy50eHQuIFRoZSBmb2xsb3dpbmcgYXJlIHByb3BlcnRpZXMgc3BlY2lmaWMgdG8gdGhvc2UKK25vZGVzLgorCitlbmRwb2ludCBub2RlCistLS0tLS0tLS0tLS0tCisKKy0gZGF0YS1sYW5lcyA6IChvcHRpb25hbCkgc3BlY2lmaWVzIE1JUEkgQ1NJLTIgZGF0YSBsYW5lcyBhcyBjb3ZlcmVkIGluCisJICAgICAgIHZpZGVvLWludGVyZmFjZXMudHh0LiBJZiBwcmVzZW50IGl0IHNob3VsZCBiZSA8MT4gLSB0aGUgZGV2aWNlCisJICAgICAgIHN1cHBvcnRzIG9ubHkgb25lIGRhdGEgbGFuZSB3aXRob3V0IHJlLW1hcHBpbmcuCisKK0V4YW1wbGU6CisKK3M1azViYWZ4QDJkIHsKKwljb21wYXRpYmxlID0gInNhbXN1bmcsczVrNWJhZiI7CisJcmVnID0gPDB4MmQ+OworCXZkZGEtc3VwcGx5ID0gPCZjYW1faW9fZW5fcmVnPjsKKwl2ZGRyZWctc3VwcGx5ID0gPCZ2dF9jb3JlXzE1dl9yZWc+OworCXZkZGlvLXN1cHBseSA9IDwmdnRjYW1fcmVnPjsKKwlzdGJ5bi1ncGlvcyA9IDwmZ3BsMiAwIDE+OworCXJzdG4tZ3Bpb3MgPSA8JmdwbDIgMSAxPjsKKwljbG9jay1uYW1lcyA9ICJtY2xrIjsKKwljbG9ja3MgPSA8JmNsb2NrX2NhbSAwPjsKKwljbG9jay1mcmVxdWVuY3kgPSA8MjQwMDAwMDA+OworCisJcG9ydCB7CisJCXM1azViYWZ4X2VwOiBlbmRwb2ludCB7CisJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmNzaXMxX2VwPjsKKwkJCWRhdGEtbGFuZXMgPSA8MT47CisJCX07CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvc2Ftc3VuZy1zNWs2YTMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3NhbXN1bmctczVrNmEzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jY2UwMWU4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3NhbXN1bmctczVrNmEzLnR4dApAQCAtMCwwICsxLDMzIEBACitTYW1zdW5nIFM1SzZBMyhZWCkgcmF3IGltYWdlIHNlbnNvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1M1SzZBMyhZWCkgaXMgYSByYXcgaW1hZ2Ugc2Vuc29yIHdpdGggTUlQSSBDU0ktMiBhbmQgQ0NQMiBpbWFnZSBkYXRhIGludGVyZmFjZXMKK2FuZCBDQ0kgKEkyQyBjb21wYXRpYmxlKSBjb250cm9sIGJ1cy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlCTogInNhbXN1bmcsczVrNmEzIjsKKy0gcmVnCQk6IEkyQyBzbGF2ZSBhZGRyZXNzIG9mIHRoZSBzZW5zb3I7CistIHN2ZGRhLXN1cHBseQk6IGNvcmUgdm9sdGFnZSBzdXBwbHk7CistIHN2ZGRpby1zdXBwbHkJOiBJL08gdm9sdGFnZSBzdXBwbHk7CistIGFmdmRkLXN1cHBseQk6IEFGIChhY3R1YXRvcikgdm9sdGFnZSBzdXBwbHk7CistIGdwaW9zCQk6IHNwZWNpZmllciBvZiBhIEdQSU8gY29ubmVjdGVkIHRvIHRoZSBSRVNFVCBwaW47CistIGNsb2Nrcwk6IHNob3VsZCBjb250YWluIGxpc3Qgb2YgcGhhbmRsZSBhbmQgY2xvY2sgc3BlY2lmaWVyIHBhaXJzCisJCSAgYWNjb3JkaW5nIHRvIGNvbW1vbiBjbG9jayBiaW5kaW5ncyBmb3IgdGhlIGNsb2NrcyBkZXNjcmliZWQKKwkJICBpbiB0aGUgY2xvY2stbmFtZXMgcHJvcGVydHk7CistIGNsb2NrLW5hbWVzCTogc2hvdWxkIGNvbnRhaW4gImV4dGNsayIgZW50cnkgZm9yIHRoZSBzZW5zb3IncyBFWFRDTEsgY2xvY2s7CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gY2xvY2stZnJlcXVlbmN5IDogdGhlIGZyZXF1ZW5jeSBhdCB3aGljaCB0aGUgImV4dGNsayIgY2xvY2sgc2hvdWxkIGJlCisJCSAgICBjb25maWd1cmVkIHRvIG9wZXJhdGUsIGluIEh6OyBpZiB0aGlzIHByb3BlcnR5IGlzIG5vdAorCQkgICAgc3BlY2lmaWVkIGRlZmF1bHQgMjQgTUh6IHZhbHVlIHdpbGwgYmUgdXNlZC4KKworVGhlIGNvbW1vbiB2aWRlbyBpbnRlcmZhY2VzIGJpbmRpbmdzIChzZWUgdmlkZW8taW50ZXJmYWNlcy50eHQpIHNob3VsZCBiZQordXNlZCB0byBzcGVjaWZ5IGxpbmsgdG8gdGhlIGltYWdlIGRhdGEgcmVjZWl2ZXIuIFRoZSBTNUs2QTMoWVgpIGRldmljZQorbm9kZSBzaG91bGQgY29udGFpbiBvbmUgJ3BvcnQnIGNoaWxkIG5vZGUgd2l0aCBhbiAnZW5kcG9pbnQnIHN1Ym5vZGUuCisKK0ZvbGxvd2luZyBwcm9wZXJ0aWVzIGFyZSB2YWxpZCBmb3IgdGhlIGVuZHBvaW50IG5vZGU6CisKKy0gZGF0YS1sYW5lcyA6IChvcHRpb25hbCkgc3BlY2lmaWVzIE1JUEkgQ1NJLTIgZGF0YSBsYW5lcyBhcyBjb3ZlcmVkIGluCisgIHZpZGVvLWludGVyZmFjZXMudHh0LiAgVGhlIHNlbnNvciBzdXBwb3J0cyBvbmx5IG9uZSBkYXRhIGxhbmUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvc2hfbW9iaWxlX2NldS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvc2hfbW9iaWxlX2NldS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNlNGU0NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9zaF9tb2JpbGVfY2V1LnR4dApAQCAtMCwwICsxLDE4IEBACitCaW5kaW5ncywgc3BlY2lmaWMgZm9yIHRoZSBzaF9tb2JpbGVfY2V1X2NhbWVyYS5jIGRyaXZlcjoKKyAtIGNvbXBhdGlibGU6IFNob3VsZCBiZSAicmVuZXNhcyxzaC1tb2JpbGUtY2V1IgorIC0gcmVnOiByZWdpc3RlciBiYXNlIGFuZCBzaXplCisgLSBpbnRlcnJ1cHRzOiB0aGUgaW50ZXJydXB0IG51bWJlcgorIC0gaW50ZXJydXB0LXBhcmVudDogdGhlIGludGVycnVwdCBjb250cm9sbGVyCisgLSByZW5lc2FzLG1heC13aWR0aDogbWF4aW11bSBpbWFnZSB3aWR0aCwgc3VwcG9ydGVkIG9uIHRoaXMgU29DCisgLSByZW5lc2FzLG1heC1oZWlnaHQ6IG1heGltdW0gaW1hZ2UgaGVpZ2h0LCBzdXBwb3J0ZWQgb24gdGhpcyBTb0MKKworRXhhbXBsZToKKworY2V1MDogY2V1QDB4ZmU5MTAwMDAgeworCWNvbXBhdGlibGUgPSAicmVuZXNhcyxzaC1tb2JpbGUtY2V1IjsKKwlyZWcgPSA8MHhmZTkxMDAwMCAweGEwPjsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpbnRjcz47CisJaW50ZXJydXB0cyA9IDwweDg4MD47CisJcmVuZXNhcyxtYXgtd2lkdGggPSA8ODE4OD47CisJcmVuZXNhcyxtYXgtaGVpZ2h0ID0gPDgxODg+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9zaTQ3MTMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3NpNDcxMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVlNTU1MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9zaTQ3MTMudHh0CkBAIC0wLDAgKzEsMzAgQEAKKyogU2lsaWNvbiBMYWJzIEZNIFJhZGlvIHRyYW5zbWl0dGVyCisKK1RoZSBTaWxpY29uIExhYnMgU2k0NzEzIGlzIGFuIEZNIHJhZGlvIHRyYW5zbWl0dGVyIHdpdGggcmVjZWl2ZSBwb3dlciBzY2FuCitzdXBwb3J0aW5nIDc2LTEwOCBNSHouIEl0IGluY2x1ZGVzIGFuIFJEUyBlbmNvZGVyIGFuZCBoYXMgYm90aCwgYSBzdGVyZW8tYW5hbG9nCithbmQgYSBkaWdpdGFsIGludGVyZmFjZSwgd2hpY2ggc3VwcG9ydHMgSTJTLCBsZWZ0LWp1c3RpZmllZCBhbmQgYSBjdXN0b20KK0RTUC1tb2RlIGZvcm1hdC4gSXQgaXMgcHJvZ3JhbW1hYmxlIHRocm91Z2ggYW4gSTJDIGludGVyZmFjZS4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGNvbnRhaW4gInNpbGFicyxzaTQ3MTMiCistIHJlZzogdGhlIEkyQyBhZGRyZXNzIG9mIHRoZSBkZXZpY2UKKworT3B0aW9uYWwgUHJvcGVydGllczoKKy0gaW50ZXJydXB0cy1leHRlbmRlZDogSW50ZXJydXB0IHNwZWNpZmllciBmb3IgdGhlIGNoaXBzIGludGVycnVwdAorLSByZXNldC1ncGlvczogR1BJTyBzcGVjaWZpZXIgZm9yIHRoZSBjaGlwcyByZXNldCBsaW5lCistIHZkZC1zdXBwbHk6IHBoYW5kbGUgZm9yIFZkZCByZWd1bGF0b3IKKy0gdmlvLXN1cHBseTogcGhhbmRsZSBmb3IgVmlvIHJlZ3VsYXRvcgorCitFeGFtcGxlOgorCismaTJjMiB7CisgICAgICAgIGZtdHg6IHNpNDcxM0A2MyB7CisgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJzaWxhYnMsc2k0NzEzIjsKKyAgICAgICAgICAgICAgICByZWcgPSA8MHg2Mz47CisKKyAgICAgICAgICAgICAgICBpbnRlcnJ1cHRzLWV4dGVuZGVkID0gPCZncGlvMiAyMSBJUlFfVFlQRV9FREdFX0ZBTExJTkc+OyAvKiA1MyAqLworICAgICAgICAgICAgICAgIHJlc2V0LWdwaW9zID0gPCZncGlvNiAzIEdQSU9fQUNUSVZFX0hJR0g+OyAvKiAxNjMgKi8KKyAgICAgICAgICAgICAgICB2aW8tc3VwcGx5ID0gPCZ2aW8+OworICAgICAgICAgICAgICAgIHZkZC1zdXBwbHkgPSA8JnZhdXgxPjsKKyAgICAgICAgfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvc3Qsc3RpaDR4eC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvc3Qsc3RpaDR4eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY2NTVjZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9zdCxzdGloNHh4LnR4dApAQCAtMCwwICsxLDMyIEBACitTVE1pY3JvZWxlY3Ryb25pY3Mgc3RpaDR4eCBwbGF0Zm9ybXMKKworYmRpc3A6IDJEIGJsaXR0ZXIgZm9yIFNUTWljcm9lbGVjdHJvbmljcyBTb0MuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAic3Qsc3RpaDQwNy1iZGlzcCIuCistIHJlZzogQkRJU1AgcGh5c2ljYWwgYWRkcmVzcyBsb2NhdGlvbiBhbmQgbGVuZ3RoLgorLSBpbnRlcnJ1cHRzOiBCRElTUCBpbnRlcnJ1cHQgbnVtYmVyLgorLSBjbG9ja3M6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc6IGhhbmRsZSBoYXJkd2FyZSBJUCBuZWVkZWQgY2xvY2tzLCB0aGUKKyAgbnVtYmVyIG9mIGNsb2NrcyBtYXkgZGVwZW5kIG9uIHRoZSBTb0MgdHlwZS4KKyAgU2VlIC4uL2Nsb2Nrcy9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCistIGNsb2NrLW5hbWVzOiBuYW1lcyBvZiB0aGUgY2xvY2tzIGxpc3RlZCBpbiBjbG9ja3MgcHJvcGVydHkgaW4gdGhlIHNhbWUgb3JkZXIuCisKK0V4YW1wbGU6CisKKwliZGlzcDA6YmRpc3BAOWYxMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic3Qsc3RpaDQwNy1iZGlzcCI7CisJCXJlZyA9IDwweDlmMTAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDM4IElSUV9UWVBFX05PTkU+OworCQljbG9jay1uYW1lcyA9ICJiZGlzcCI7CisJCWNsb2NrcyA9IDwmY2xrX3NfYzBfZmxleGdlbiBDTEtfSUNfQkRJU1BfMD47CisJfTsKKworQWxpYXNlczoKK0VhY2ggQkRJU1Agc2hvdWxkIGhhdmUgYSBudW1iZXJlZCBhbGlhcyBpbiB0aGUgYWxpYXNlcyBub2RlLCBpbiB0aGUgZm9ybSBvZgorYmRpc3BOLCBOID0gMCBvciAxLgorCitFeGFtcGxlOgorCisJYWxpYXNlcyB7CisJCWJkaXNwMCA9ICZiZGlzcDA7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9zdC1yYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvc3QtcmMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1YzQzMmQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvc3QtcmMudHh0CkBAIC0wLDAgKzEsMjkgQEAKK0RldmljZS1UcmVlIGJpbmRpbmdzIGZvciBTVCBJUkIgSVAKKworUmVxdWlyZWQgcHJvcGVydGllczoKKwktIGNvbXBhdGlibGU6IFNob3VsZCBjb250YWluICJzdCxjb21tcy1pcmIiLgorCS0gcmVnOiBCYXNlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkKKwkgIG1hcHBlZCByZWdpb24uCisJLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQtc3BlY2lmaWVyIGZvciB0aGUgc29sZSBpbnRlcnJ1cHQgZ2VuZXJhdGVkIGJ5CisJICB0aGUgZGV2aWNlLiBUaGUgaW50ZXJydXB0IHNwZWNpZmllciBmb3JtYXQgZGVwZW5kcyBvbiB0aGUgaW50ZXJydXB0CisJICBjb250cm9sbGVyIHBhcmVudC4KKwktIHJ4LW1vZGU6IGNhbiBiZSAiaW5mcmFyZWQiIG9yICJ1aGYiLiBUaGlzIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgTDEKKwkgIHByb3RvY29sIHVzZWQgZm9yIHJlY2VpdmluZyByZW1vdGUgY29udHJvbCBzaWduYWxzLiByeC1tb2RlIHNob3VsZAorCSAgYmUgcHJlc2VudCBpZmYgdGhlIHJ4IHBpbnMgYXJlIHdpcmVkIHVwLgorCS0gdHgtbW9kZTogc2hvdWxkIGJlICJpbmZyYXJlZCIuIFRoaXMgcHJvcGVydHkgc3BlY2lmaWVzIHRoZSBMMQorCSAgcHJvdG9jb2wgdXNlZCBmb3IgdHJhbnNtaXR0aW5nIHJlbW90ZSBjb250cm9sIHNpZ25hbHMuIHR4LW1vZGUgc2hvdWxkCisJICBiZSBwcmVzZW50IGlmZiB0aGUgdHggcGlucyBhcmUgd2lyZWQgdXAuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisJLSBwaW5jdHJsLW5hbWVzLCBwaW5jdHJsLTA6IHRoZSBwaW5jb250cm9sIHNldHRpbmdzIHRvIGNvbmZpZ3VyZSBtdXhpbmcKKwkgIHByb3Blcmx5IGZvciBJUkIgcGlucy4KKwktIGNsb2NrcyA6IHBoYW5kbGUgd2l0aCBjbG9jay1zcGVjaWZpZXIgcGFpciBmb3IgSVJCLgorCitFeGFtcGxlIG5vZGU6CisKKwlyYzogcmNAZmU1MTgwMDAgeworCQljb21wYXRpYmxlCT0gInN0LGNvbW1zLWlyYiI7CisJCXJlZwkJPSA8MHhmZTUxODAwMCAweDIzND47CisJCWludGVycnVwdHMJPSA8MCAyMDMgMD47CisJCXJ4LW1vZGUJCT0gImluZnJhcmVkIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3N0aWg0MDctYzhzZWN0cGZlLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9zdGloNDA3LWM4c2VjdHBmZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRkZWY3NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9zdGloNDA3LWM4c2VjdHBmZS50eHQKQEAgLTAsMCArMSw4OSBAQAorU1RNaWNyb2VsZWN0cm9uaWNzIFNUaSBjOHNlY3RwZmUgYmluZGluZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIGM4c2VjdHBmZSBkZXZpY2UgYmluZGluZ3MgdGhhdCBpcyB1c2VkIHRvIGdldCB0cmFuc3BvcnQKK3N0cmVhbSBkYXRhIGludG8gdGhlIFNvQyBvbiB0aGUgVFMgcGlucywgYW5kIGludG8gRERSIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmcuCisKK0l0IGlzIHR5cGljYWxseSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggb25lIG9yIG1vcmUgZGVtb2R1bGF0b3IgYW5kIHR1bmVyIGRldmljZXMKK3doaWNoIGNvbnZlcnRzIGZyb20gdGhlIFJGIHRvIGRpZ2l0YWwgZG9tYWluLiBEZW1vZHVsYXRvcnMgYW5kIHR1bmVycyBhcmUgdXN1YWxseQorbG9jYXRlZCBvbiBhbiBleHRlcm5hbCBEVkIgZnJvbnRlbmQgY2FyZCBjb25uZWN0ZWQgdG8gU29DIFRTIGlucHV0IHBpbnMuCisKK0N1cnJlbnRseSA3IFRTIGlucHV0ICh0c2luKSBjaGFubmVscyBhcmUgc3VwcG9ydGVkIG9uIHRoZSBzdGloNDA3IGZhbWlseSBTb0MuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgKGNvbnRyb2xsZXIgKHBhcmVudCkgbm9kZSk6CistIGNvbXBhdGlibGUJOiBTaG91bGQgYmUgInN0aWg0MDctYzhzZWN0cGZlIgorCistIHJlZwkJOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgcmVnaXN0ZXIgc2V0cyBmb3IgZWFjaCBkZXZpY2UgaW4KKwkJICAicmVnLW5hbWVzIgorCistIHJlZy1uYW1lcwk6IFRoZSBuYW1lcyBvZiB0aGUgcmVnaXN0ZXIgYWRkcmVzc2VzIGNvcnJlc3BvbmRpbmcgdG8gdGhlCisJCSAgcmVnaXN0ZXJzIGZpbGxlZCBpbiAicmVnIjoKKwkJCS0gYzhzZWN0cGZlOiBjOHNlY3RwZmUgcmVnaXN0ZXJzCisJCQktIGM4c2VjdHBmZS1yYW06IGM4c2VjdHBmZSBpbnRlcm5hbCBzcmFtCisKKy0gY2xvY2tzCTogcGhhbmRsZSBsaXN0IG9mIGM4c2VjdHBmZSBjbG9ja3MKKy0gY2xvY2stbmFtZXMJOiBzaG91bGQgYmUgImM4c2VjdHBmZSIKK1NlZTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCistIHBpbmN0cmwtbmFtZXMJOiBhIHBpbmN0cmwgc3RhdGUgbmFtZWQgdHNpbiVkLXNlcmlhbCBvciB0c2luJWQtcGFyYWxsZWwgKHdoZXJlICVkIGlzIHRzaW4tbnVtKQorCQkgICBtdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggdHNpbiBjaGlsZCBub2RlLgorLSBwaW5jdHJsLTAJOiBwaGFuZGxlIHJlZmVyZW5jaW5nIHBpbiBjb25maWd1cmF0aW9uIGZvciB0aGlzIHRzaW4gY29uZmlndXJhdGlvbgorU2VlOiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9waW5jdHJsLWJpbmRpbmcudHh0CisKKworUmVxdWlyZWQgcHJvcGVydGllcyAodHNpbiAoY2hpbGQpIG5vZGUpOgorCistIHRzaW4tbnVtCTogdHNpbiBpZCBvZiB0aGUgSW5wdXRCbG9jayAobXVzdCBiZSBiZXR3ZWVuIDAgdG8gNikKKy0gaTJjLWJ1cwk6IHBoYW5kbGUgdG8gdGhlIEkyQyBidXMgRFQgbm9kZSB3aGljaCB0aGUgZGVtb2R1bGF0b3JzICYgdHVuZXJzIG9uIHRoaXMgdHNpbiBjaGFubmVsIGFyZSBjb25uZWN0ZWQuCistIHJzdC1ncGlvCTogcmVzZXQgZ3BpbyBmb3IgdGhpcyB0c2luIGNoYW5uZWwuCisKK09wdGlvbmFsIHByb3BlcnRpZXMgKHRzaW4gKGNoaWxkKSBub2RlKToKKworLSBpbnZlcnQtdHMtY2xrCQk6IEJvb2wgcHJvcGVydHkgdG8gY29udHJvbCBzZW5zZSBvZiB0cyBpbnB1dCBjbG9jayAoZGF0YSBzdG9yZWQgb24gZmFsbGluZyBlZGdlIG9mIGNsaykuCistIHNlcmlhbC1ub3QtcGFyYWxsZWwJOiBCb29sIHByb3BlcnR5IHRvIGNvbmZpZ3VyZSBpbnB1dCBidXMgd2lkdGggKHNlcmlhbCBvbiB0c19kYXRhPDc+KS4KKy0gYXN5bmMtbm90LXN5bmMJOiBCb29sIHByb3BlcnR5IHRvIGNvbnRyb2wgaWYgZGF0YSBpcyByZWNlaXZlZCBpbiBhc3luY2hyb25vdXMgbW9kZQorCQkJICAgKGFsbCBiaXRzL2J5dGVzIHdpdGggdHNfdmFsaWQgb3IgdHNfcGFja2V0IGFzc2VydGVkIGFyZSB2YWxpZCkuCisKKy0gZHZiLWNhcmQJCTogRGVzY3JpYmVzIHRoZSBOSU0gY2FyZCBjb25uZWN0ZWQgdG8gdGhpcyB0c2luIGNoYW5uZWwuCisKK0V4YW1wbGU6CisKKy8qIHN0aWg0MTAgU29DIGIyMTIwICsgYjIwMDRhICsgc3R2MDM2Ny1wbGwoTklNQikgKyBzdHYwMzY3LXRkYTE4MjEyIChOSU1BKSBEVCBleGFtcGxlKSAqLworCisJYzhzZWN0cGZlQDA4YTIwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzdCxzdGloNDA3LWM4c2VjdHBmZSI7CisJCXN0YXR1cyA9ICJva2F5IjsKKwkJcmVnID0gPDB4MDhhMjAwMDAgMHgxMDAwMD4sIDwweDA4YTAwMDAwIDB4NDAwMD47CisJCXJlZy1uYW1lcyA9ICJzdGZlIiwgInN0ZmUtcmFtIjsKKwkJaW50ZXJydXB0cyA9IDwwIDM0IDA+LCA8MCAzNSAwPjsKKwkJaW50ZXJydXB0LW5hbWVzID0gInN0ZmUtZXJyb3ItaXJxIiwgInN0ZmUtaWRsZS1pcnEiOworCisJCXBpbmN0cmwtbmFtZXMJPSAidHNpbjAtc2VyaWFsIiwgInRzaW4wLXBhcmFsbGVsIiwgInRzaW4zLXNlcmlhbCIsCisJCQkJInRzaW40LXNlcmlhbCIsICJ0c2luNS1zZXJpYWwiOworCisJCXBpbmN0cmwtMAk9IDwmcGluY3RybF90c2luMF9zZXJpYWw+OworCQlwaW5jdHJsLTEJPSA8JnBpbmN0cmxfdHNpbjBfcGFyYWxsZWw+OworCQlwaW5jdHJsLTIJPSA8JnBpbmN0cmxfdHNpbjNfc2VyaWFsPjsKKwkJcGluY3RybC0zCT0gPCZwaW5jdHJsX3RzaW40X3NlcmlhbF9hbHQzPjsKKwkJcGluY3RybC00CT0gPCZwaW5jdHJsX3RzaW41X3NlcmlhbF9hbHQxPjsKKworCQljbG9ja3MgPSA8JmNsa19zX2MwX2ZsZXhnZW4gQ0xLX1BST0NfU1RGRT47CisJCWNsb2NrLW5hbWVzID0gInN0ZmUiOworCisJCS8qIHRzaW4wIGlzIFRTQSBvbiBOSU1BICovCisJCXRzaW4wOiBwb3J0QDAgeworCQkJdHNpbi1udW0JCT0gPDA+OworCQkJc2VyaWFsLW5vdC1wYXJhbGxlbDsKKwkJCWkyYy1idXMJCQk9IDwmc3NjMj47CisJCQlyc3QtZ3BpbwkJPSA8JnBpbzE1IDQgMD47CisJCQlkdmItY2FyZAkJPSA8U1RWMDM2N19UREExODIxMl9OSU1BXzE+OworCQl9OworCisJCXRzaW4zOiBwb3J0QDMgeworCQkJdHNpbi1udW0JCT0gPDM+OworCQkJc2VyaWFsLW5vdC1wYXJhbGxlbDsKKwkJCWkyYy1idXMJCQk9IDwmc3NjMz47CisJCQlyc3QtZ3BpbwkJPSA8JnBpbzE1IDcgMD47CisJCQlkdmItY2FyZAkJPSA8U1RWMDM2N19UREExODIxMl9OSU1CXzE+OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvc3VueGktaXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3N1bnhpLWlyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODExYTA2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3N1bnhpLWlyLnR4dApAQCAtMCwwICsxLDI1IEBACitEZXZpY2UtVHJlZSBiaW5kaW5ncyBmb3IgU1VOWEkgSVIgY29udHJvbGxlciBmb3VuZCBpbiBzdW5YaSBTb0MgZmFtaWx5CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUJICAgIDogImFsbHdpbm5lcixzdW40aS1hMTAtaXIiIG9yICJhbGx3aW5uZXIsc3VuNWktYTEzLWlyIgorLSBjbG9ja3MJICAgIDogbGlzdCBvZiBjbG9jayBzcGVjaWZpZXJzLCBjb3JyZXNwb25kaW5nIHRvCisJCSAgICAgIGVudHJpZXMgaW4gY2xvY2stbmFtZXMgcHJvcGVydHk7CistIGNsb2NrLW5hbWVzCSAgICA6IHNob3VsZCBjb250YWluICJhcGIiIGFuZCAiaXIiIGVudHJpZXM7CistIGludGVycnVwdHMJICAgIDogc2hvdWxkIGNvbnRhaW4gSVIgSVJRIG51bWJlcjsKKy0gcmVnCQkgICAgOiBzaG91bGQgY29udGFpbiBJTyBtYXAgYWRkcmVzcyBmb3IgSVIuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGxpbnV4LHJjLW1hcC1uYW1lIDogUmVtb3RlIGNvbnRyb2wgbWFwIG5hbWUuCistIHJlc2V0cyA6IHBoYW5kbGUgKyByZXNldCBzcGVjaWZpZXIgcGFpcgorCitFeGFtcGxlOgorCitpcjA6IGlyQDAxYzIxODAwIHsKKwljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW40aS1hMTAtaXIiOworCWNsb2NrcyA9IDwmYXBiMF9nYXRlcyA2PiwgPCZpcjBfY2xrPjsKKwljbG9jay1uYW1lcyA9ICJhcGIiLCAiaXIiOworCXJlc2V0cyA9IDwmYXBiMF9yc3QgMT47CisJaW50ZXJydXB0cyA9IDwwIDUgMT47CisJcmVnID0gPDB4MDFDMjE4MDAgMHg0MD47CisJbGludXgscmMtbWFwLW5hbWUgPSAicmMtcmM2LW1jZSI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3RpLG9tYXAzaXNwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS90aSxvbWFwM2lzcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWMyM2RlOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS90aSxvbWFwM2lzcC50eHQKQEAgLTAsMCArMSw3MSBAQAorT01BUCAzIElTUCBEZXZpY2UgVHJlZSBiaW5kaW5ncworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgRFQgZGVmaW5pdGlvbnMgY2FuIGJlIGZvdW5kIGluIGluY2x1ZGUvZHQtYmluZGluZ3MvbWVkaWEvb21hcDMtaXNwLmguCisKK1JlcXVpcmVkIHByb3BlcnRpZXMKKz09PT09PT09PT09PT09PT09PT0KKworY29tcGF0aWJsZQk6IG11c3QgY29udGFpbiAidGksb21hcDMtaXNwIgorCityZWcJCTogdGhlIHR3byByZWdpc3RlcnMgc2V0cyAocGh5c2ljYWwgYWRkcmVzcyBhbmQgbGVuZ3RoKSBmb3IgdGhlCisJCSAgSVNQLiBUaGUgZmlyc3Qgc2V0IGNvbnRhaW5zIHRoZSBjb3JlIElTUCByZWdpc3RlcnMgdXAgdG8KKwkJICB0aGUgZW5kIG9mIHRoZSBTQkwgYmxvY2suIFRoZSBzZWNvbmQgc2V0IGNvbnRhaW5zIHRoZQorCQkgIENTSSBQSFlzIGFuZCByZWNlaXZlcnMgcmVnaXN0ZXJzLgoraW50ZXJydXB0cwk6IHRoZSBJU1AgaW50ZXJydXB0IHNwZWNpZmllcgoraW9tbXVzCQk6IHBoYW5kbGUgYW5kIElPTU1VIHNwZWNpZmllciBmb3IgdGhlIElPTU1VIHRoYXQgc2VydmVzIHRoZSBJU1AKK3N5c2NvbgkJOiB0aGUgcGhhbmRsZSBhbmQgcmVnaXN0ZXIgb2Zmc2V0IHRvIHRoZSBDb21wbGV4IEkvTyBvciBDU0ktUEhZCisJCSAgcmVnaXN0ZXIKK3RpLHBoeS10eXBlCTogMCAtLSBPTUFQM0lTUF9QSFlfVFlQRV9DT01QTEVYX0lPIChlLmcuIDM0MzApCisJCSAgMSAtLSBPTUFQM0lTUF9QSFlfVFlQRV9DU0lQSFkgKGUuZy4gMzYzMCkKKyNjbG9jay1jZWxscwk6IE11c3QgYmUgMSAtLS0gdGhlIElTUCBwcm92aWRlcyB0d28gZXh0ZXJuYWwgY2xvY2tzLAorCQkgIGNhbV94Y2xrYSBhbmQgY2FtX3hjbGtiLCBhdCBpbmRpY2VzIDAgYW5kIDEsCisJCSAgcmVzcGVjdGl2ZWx5LiBQbGVhc2UgZmluZCBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbW1vbgorCQkgIGNsb2NrIGJpbmRpbmdzIGluIC4uL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dC4KKworUG9ydCBub2RlcyAob3B0aW9uYWwpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTW9yZSBkb2N1bWVudGF0aW9uIG9uIHRoZXNlIGJpbmRpbmdzIGlzIGF2YWlsYWJsZSBpbgordmlkZW8taW50ZXJmYWNlcy50eHQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorCityZWcJCTogVGhlIGludGVyZmFjZToKKwkJICAwIC0gcGFyYWxsZWwgKENDREMpCisJCSAgMSAtIENTSVBIWTEgLS0gQ1NJMkMgLyBDQ1AyQiBvbiAzNjMwOworCQkgICAgICBDU0kxIC0tIENTSWIgb24gMzQzMAorCQkgIDIgLSBDU0lQSFkyIC0tIENTSTJBIC8gQ0NQMkIgb24gMzYzMDsKKwkJICAgICAgQ1NJMiAtLSBDU0lhIG9uIDM0MzAKKworT3B0aW9uYWwgcHJvcGVydGllcworPT09PT09PT09PT09PT09PT09PQorCit2ZGQtY3NpcGh5MS1zdXBwbHkgOiB2b2x0YWdlIHN1cHBseSBvZiB0aGUgQ1NJLTIgUEhZIDEKK3ZkZC1jc2lwaHkyLXN1cHBseSA6IHZvbHRhZ2Ugc3VwcGx5IG9mIHRoZSBDU0ktMiBQSFkgMgorCitFbmRwb2ludCBub2RlcworLS0tLS0tLS0tLS0tLS0KKworbGFuZS1wb2xhcml0aWVzCTogbGFuZSBwb2xhcml0eSAocmVxdWlyZWQgb24gQ1NJLTIpCisJCSAgMCAtLSBub3QgaW52ZXJ0ZWQ7IDEgLS0gaW52ZXJ0ZWQKK2RhdGEtbGFuZXMJOiBhbiBhcnJheSBvZiBkYXRhIGxhbmVzIGZyb20gMSB0byAzLiBUaGUgbGVuZ3RoIGNhbgorCQkgIGJlIGVpdGhlciAxIG9yIDIuIChyZXF1aXJlZCBvbiBDU0ktMikKK2Nsb2NrLWxhbmVzCTogdGhlIGNsb2NrIGxhbmUgKGZyb20gMSB0byAzKS4gKHJlcXVpcmVkIG9uIENTSS0yKQorCisKK0V4YW1wbGUKKz09PT09PT0KKworCQlpc3BANDgwYmMwMDAgeworCQkJY29tcGF0aWJsZSA9ICJ0aSxvbWFwMy1pc3AiOworCQkJcmVnID0gPDB4NDgwYmMwMDAgMHgxMmZjCisJCQkgICAgICAgMHg0ODBiZDgwMCAweDA2MDA+OworCQkJaW50ZXJydXB0cyA9IDwyND47CisJCQlpb21tdXMgPSA8Jm1tdV9pc3A+OworCQkJc3lzY29uID0gPCZzY21fY29uZiAweDJmMD47CisJCQl0aSxwaHktdHlwZSA9IDxPTUFQM0lTUF9QSFlfVFlQRV9DU0lQSFk+OworCQkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQkJcG9ydHMgeworCQkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJCSNzaXplLWNlbGxzID0gPDA+OworCQkJfTsKKwkJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS90aS1hbTQzN3gtdnBmZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvdGktYW00Mzd4LXZwZmUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5MzJlNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvdGktYW00Mzd4LXZwZmUudHh0CkBAIC0wLDAgKzEsNjEgQEAKK1RleGFzIEluc3RydW1lbnRzIEFNNDM3eCBDQU1FUkEgKFZQRkUpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgVmlkZW8gUHJvY2Vzc2luZyBGcm9udCBFbmQgKFZQRkUpIGlzIGEga2V5IGNvbXBvbmVudCBmb3IgaW1hZ2UgY2FwdHVyZQorYXBwbGljYXRpb25zLiBUaGUgY2FwdHVyZSBtb2R1bGUgcHJvdmlkZXMgdGhlIHN5c3RlbSBpbnRlcmZhY2UgYW5kIHRoZQorcHJvY2Vzc2luZyBjYXBhYmlsaXR5IHRvIGNvbm5lY3QgUkFXIGltYWdlLXNlbnNvciBtb2R1bGVzIGFuZCB2aWRlbyBkZWNvZGVycwordG8gdGhlIEFNNDM3eCBkZXZpY2UuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IG11c3QgYmUgInRpLGFtNDM3eC12cGZlIgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlcnMgc2V0IGZvciB0aGUgZGV2aWNlOworLSBpbnRlcnJ1cHRzOiBzaG91bGQgY29udGFpbiBJUlEgbGluZSBmb3IgdGhlIFZQRkU7CistIHRpLGFtNDM3eC12cGZlLWludGVyZmFjZTogY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nLAorCTAgLSBSYXcgQmF5ZXIgSW50ZXJmYWNlLgorCTEgLSA4IEJpdCBCVDY1NiBJbnRlcmZhY2UuCisJMiAtIDEwIEJpdCBCVDY1NiBJbnRlcmZhY2UuCisJMyAtIFlDYkNyIDggQml0IEludGVyZmFjZS4KKwk0IC0gWUNiQ3IgMTYgQml0IEludGVyZmFjZS4KKworVlBGRSBzdXBwb3J0cyBhIHNpbmdsZSBwb3J0IG5vZGUgd2l0aCBwYXJhbGxlbCBidXMuIEl0IHNob3VsZCBjb250YWluIG9uZQorJ3BvcnQnIGNoaWxkIG5vZGUgd2l0aCBjaGlsZCAnZW5kcG9pbnQnIG5vZGUuIFBsZWFzZSByZWZlciB0byB0aGUgYmluZGluZ3MKK2RlZmluZWQgaW4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3ZpZGVvLWludGVyZmFjZXMudHh0LgorCitFeGFtcGxlOgorCXZwZmU6IHZwZmVAZjAwMzQwMDAgeworCQljb21wYXRpYmxlID0gInRpLGFtNDM3eC12cGZlIjsKKwkJcmVnID0gPDB4NDgzMjgwMDAgMHgyMDAwPjsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDUwIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCIsICJzbGVlcCI7CisJCXBpbmN0cmwtMCA9IDwmdnBmZV9waW5zX2RlZmF1bHQ+OworCQlwaW5jdHJsLTEgPSA8JnZwZmVfcGluc19zbGVlcD47CisKKwkJcG9ydCB7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCisJCQl2cGZlMF9lcDogZW5kcG9pbnQgeworCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmb3YyNjU5XzE+OworCQkJCXRpLGFtNDM3eC12cGZlLWludGVyZmFjZSA9IDwwPjsKKwkJCQlidXMtd2lkdGggPSA8OD47CisJCQkJaHN5bmMtYWN0aXZlID0gPDA+OworCQkJCXZzeW5jLWFjdGl2ZSA9IDwwPjsKKwkJCX07CisJCX07CisJfTsKKworCWkyYzE6IGkyY0A0ODAyYTAwMCB7CisKKwkJb3YyNjU5QDMwIHsKKwkJCWNvbXBhdGlibGUgPSAidGksb3YyNjU5IjsKKwkJCXJlZyA9IDwweDMwPjsKKworCQkJcG9ydCB7CisJCQkJb3YyNjU5XzE6IGVuZHBvaW50IHsKKwkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZ2cGZlMF9lcD47CisJCQkJCWJ1cy13aWR0aCA9IDw4PjsKKwkJCQkJbWNsay1mcmVxdWVuY3kgPSA8MTIwMDAwMDA+OworCQkJCX07CisJCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvdmlkZW8taW50ZXJmYWNlcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvdmlkZW8taW50ZXJmYWNlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNkMmEzNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS92aWRlby1pbnRlcmZhY2VzLnR4dApAQCAtMCwwICsxLDIzOSBAQAorQ29tbW9uIGJpbmRpbmdzIGZvciB2aWRlbyByZWNlaXZlciBhbmQgdHJhbnNtaXR0ZXIgaW50ZXJmYWNlcworCitHZW5lcmFsIGNvbmNlcHQKKy0tLS0tLS0tLS0tLS0tLQorCitWaWRlbyBkYXRhIHBpcGVsaW5lcyB1c3VhbGx5IGNvbnNpc3Qgb2YgZXh0ZXJuYWwgZGV2aWNlcywgZS5nLiBjYW1lcmEgc2Vuc29ycywKK2NvbnRyb2xsZWQgb3ZlciBhbiBJMkMsIFNQSSBvciBVQVJUIGJ1cywgYW5kIFNvQyBpbnRlcm5hbCBJUCBibG9ja3MsIGluY2x1ZGluZwordmlkZW8gRE1BIGVuZ2luZXMgYW5kIHZpZGVvIGRhdGEgcHJvY2Vzc29ycy4KKworU29DIGludGVybmFsIGJsb2NrcyBhcmUgZGVzY3JpYmVkIGJ5IERUIG5vZGVzLCBwbGFjZWQgc2ltaWxhcmx5IHRvIG90aGVyIFNvQworYmxvY2tzLiAgRXh0ZXJuYWwgZGV2aWNlcyBhcmUgcmVwcmVzZW50ZWQgYXMgY2hpbGQgbm9kZXMgb2YgdGhlaXIgcmVzcGVjdGl2ZQorYnVzIGNvbnRyb2xsZXIgbm9kZXMsIGUuZy4gSTJDLgorCitEYXRhIGludGVyZmFjZXMgb24gYWxsIHZpZGVvIGRldmljZXMgYXJlIGRlc2NyaWJlZCBieSB0aGVpciBjaGlsZCAncG9ydCcgbm9kZXMuCitDb25maWd1cmF0aW9uIG9mIGEgcG9ydCBkZXBlbmRzIG9uIG90aGVyIGRldmljZXMgcGFydGljaXBhdGluZyBpbiB0aGUgZGF0YQordHJhbnNmZXIgYW5kIGlzIGRlc2NyaWJlZCBieSAnZW5kcG9pbnQnIHN1Ym5vZGVzLgorCitkZXZpY2UgeworCS4uLgorCXBvcnRzIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCisJCXBvcnRAMCB7CisJCQkuLi4KKwkJCWVuZHBvaW50QDAgeyAuLi4gfTsKKwkJCWVuZHBvaW50QDEgeyAuLi4gfTsKKwkJfTsKKwkJcG9ydEAxIHsgLi4uIH07CisJfTsKK307CisKK0lmIGEgcG9ydCBjYW4gYmUgY29uZmlndXJlZCB0byB3b3JrIHdpdGggbW9yZSB0aGFuIG9uZSByZW1vdGUgZGV2aWNlIG9uIHRoZSBzYW1lCitidXMsIGFuICdlbmRwb2ludCcgY2hpbGQgbm9kZSBtdXN0IGJlIHByb3ZpZGVkIGZvciBlYWNoIG9mIHRoZW0uICBJZiBtb3JlIHRoYW4KK29uZSBwb3J0IGlzIHByZXNlbnQgaW4gYSBkZXZpY2Ugbm9kZSBvciB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGVuZHBvaW50IGF0IGEKK3BvcnQsIG9yIHBvcnQgbm9kZSBuZWVkcyB0byBiZSBhc3NvY2lhdGVkIHdpdGggYSBzZWxlY3RlZCBoYXJkd2FyZSBpbnRlcmZhY2UsCithIGNvbW1vbiBzY2hlbWUgdXNpbmcgJyNhZGRyZXNzLWNlbGxzJywgJyNzaXplLWNlbGxzJyBhbmQgJ3JlZycgcHJvcGVydGllcyBpcwordXNlZC4KKworQWxsICdwb3J0JyBub2RlcyBjYW4gYmUgZ3JvdXBlZCB1bmRlciBvcHRpb25hbCAncG9ydHMnIG5vZGUsIHdoaWNoIGFsbG93cyB0bworc3BlY2lmeSAjYWRkcmVzcy1jZWxscywgI3NpemUtY2VsbHMgcHJvcGVydGllcyBpbmRlcGVuZGVudGx5IGZvciB0aGUgJ3BvcnQnCithbmQgJ2VuZHBvaW50JyBub2RlcyBhbmQgYW55IGNoaWxkIGRldmljZSBub2RlcyBhIGRldmljZSBtaWdodCBoYXZlLgorCitUd28gJ2VuZHBvaW50JyBub2RlcyBhcmUgbGlua2VkIHdpdGggZWFjaCBvdGhlciB0aHJvdWdoIHRoZWlyICdyZW1vdGUtZW5kcG9pbnQnCitwaGFuZGxlcy4gIEFuIGVuZHBvaW50IHN1Ym5vZGUgb2YgYSBkZXZpY2UgY29udGFpbnMgYWxsIHByb3BlcnRpZXMgbmVlZGVkIGZvcgorY29uZmlndXJhdGlvbiBvZiB0aGlzIGRldmljZSBmb3IgZGF0YSBleGNoYW5nZSB3aXRoIG90aGVyIGRldmljZS4gIEluIG1vc3QKK2Nhc2VzIHByb3BlcnRpZXMgYXQgdGhlIHBlZXIgJ2VuZHBvaW50JyBub2RlcyB3aWxsIGJlIGlkZW50aWNhbCwgaG93ZXZlciB0aGV5CittaWdodCBuZWVkIHRvIGJlIGRpZmZlcmVudCB3aGVuIHRoZXJlIGlzIGFueSBzaWduYWwgbW9kaWZpY2F0aW9ucyBvbiB0aGUgYnVzCitiZXR3ZWVuIHR3byBkZXZpY2VzLCBlLmcuIHRoZXJlIGFyZSBsb2dpYyBzaWduYWwgaW52ZXJ0ZXJzIG9uIHRoZSBsaW5lcy4KKworSXQgaXMgYWxsb3dlZCBmb3IgbXVsdGlwbGUgZW5kcG9pbnRzIGF0IGEgcG9ydCB0byBiZSBhY3RpdmUgc2ltdWx0YW5lb3VzbHksCit3aGVyZSBzdXBwb3J0ZWQgYnkgYSBkZXZpY2UuICBGb3IgZXhhbXBsZSwgaW4gY2FzZSB3aGVyZSBhIGRhdGEgaW50ZXJmYWNlIG9mCithIGRldmljZSBpcyBwYXJ0aXRpb25lZCBpbnRvIG11bHRpcGxlIGRhdGEgYnVzc2VzLCBlLmcuIDE2LWJpdCBpbnB1dCBwb3J0CitkaXZpZGVkIGludG8gdHdvIHNlcGFyYXRlIElUVS1SIEJULjY1NiA4LWJpdCBidXNzZXMuICBJbiBzdWNoIGNhc2UgYnVzLXdpZHRoCithbmQgZGF0YS1zaGlmdCBwcm9wZXJ0aWVzIGNhbiBiZSB1c2VkIHRvIGFzc2lnbiBwaHlzaWNhbCBkYXRhIGxpbmVzIHRvIGVhY2gKK2VuZHBvaW50IG5vZGUgKGxvZ2ljYWwgYnVzKS4KKworCitSZXF1aXJlZCBwcm9wZXJ0aWVzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgJ3BvcnQnIG9yIG1vcmUgdGhhbiBvbmUgJ2VuZHBvaW50JyBub2RlIG9yICdyZWcnCitwcm9wZXJ0eSBpcyBwcmVzZW50IGluIHBvcnQgYW5kL29yIGVuZHBvaW50IG5vZGVzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcworYXJlIHJlcXVpcmVkIGluIGEgcmVsZXZhbnQgcGFyZW50IG5vZGU6CisKKyAtICNhZGRyZXNzLWNlbGxzIDogbnVtYmVyIG9mIGNlbGxzIHJlcXVpcmVkIHRvIGRlZmluZSBwb3J0L2VuZHBvaW50CisJCSAgICBpZGVudGlmaWVyLCBzaG91bGQgYmUgMS4KKyAtICNzaXplLWNlbGxzICAgIDogc2hvdWxkIGJlIHplcm8uCisKK09wdGlvbmFsIGVuZHBvaW50IHByb3BlcnRpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSByZW1vdGUtZW5kcG9pbnQ6IHBoYW5kbGUgdG8gYW4gJ2VuZHBvaW50JyBzdWJub2RlIG9mIGEgcmVtb3RlIGRldmljZSBub2RlLgorLSBzbGF2ZS1tb2RlOiBhIGJvb2xlYW4gcHJvcGVydHkgaW5kaWNhdGluZyB0aGF0IHRoZSBsaW5rIGlzIHJ1biBpbiBzbGF2ZSBtb2RlLgorICBUaGUgZGVmYXVsdCB3aGVuIHRoaXMgcHJvcGVydHkgaXMgbm90IHNwZWNpZmllZCBpcyBtYXN0ZXIgbW9kZS4gSW4gdGhlIHNsYXZlCisgIG1vZGUgaG9yaXpvbnRhbCBhbmQgdmVydGljYWwgc3luY2hyb25pemF0aW9uIHNpZ25hbHMgYXJlIHByb3ZpZGVkIHRvIHRoZQorICBzbGF2ZSBkZXZpY2UgKGRhdGEgc291cmNlKSBieSB0aGUgbWFzdGVyIGRldmljZSAoZGF0YSBzaW5rKS4gSW4gdGhlIG1hc3RlcgorICBtb2RlIHRoZSBkYXRhIHNvdXJjZSBkZXZpY2UgaXMgYWxzbyB0aGUgc291cmNlIG9mIHRoZSBzeW5jaHJvbml6YXRpb24gc2lnbmFscy4KKy0gYnVzLXdpZHRoOiBudW1iZXIgb2YgZGF0YSBsaW5lcyBhY3RpdmVseSB1c2VkLCB2YWxpZCBmb3IgdGhlIHBhcmFsbGVsIGJ1c3Nlcy4KKy0gZGF0YS1zaGlmdDogb24gdGhlIHBhcmFsbGVsIGRhdGEgYnVzc2VzLCBpZiBidXMtd2lkdGggaXMgdXNlZCB0byBzcGVjaWZ5IHRoZQorICBudW1iZXIgb2YgZGF0YSBsaW5lcywgZGF0YS1zaGlmdCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIGRhdGEgbGluZXMgYXJlCisgIHVzZWQsIGUuZy4gImJ1cy13aWR0aD08OD47IGRhdGEtc2hpZnQ9PDI+OyIgbWVhbnMsIHRoYXQgbGluZXMgOToyIGFyZSB1c2VkLgorLSBoc3luYy1hY3RpdmU6IGFjdGl2ZSBzdGF0ZSBvZiB0aGUgSFNZTkMgc2lnbmFsLCAwLzEgZm9yIExPVy9ISUdIIHJlc3BlY3RpdmVseS4KKy0gdnN5bmMtYWN0aXZlOiBhY3RpdmUgc3RhdGUgb2YgdGhlIFZTWU5DIHNpZ25hbCwgMC8xIGZvciBMT1cvSElHSCByZXNwZWN0aXZlbHkuCisgIE5vdGUsIHRoYXQgaWYgSFNZTkMgYW5kIFZTWU5DIHBvbGFyaXRpZXMgYXJlIG5vdCBzcGVjaWZpZWQsIGVtYmVkZGVkCisgIHN5bmNocm9uaXphdGlvbiBtYXkgYmUgcmVxdWlyZWQsIHdoZXJlIHN1cHBvcnRlZC4KKy0gZGF0YS1hY3RpdmU6IHNpbWlsYXIgdG8gSFNZTkMgYW5kIFZTWU5DLCBzcGVjaWZpZXMgZGF0YSBsaW5lIHBvbGFyaXR5LgorLSBmaWVsZC1ldmVuLWFjdGl2ZTogZmllbGQgc2lnbmFsIGxldmVsIGR1cmluZyB0aGUgZXZlbiBmaWVsZCBkYXRhIHRyYW5zbWlzc2lvbi4KKy0gcGNsay1zYW1wbGU6IHNhbXBsZSBkYXRhIG9uIHJpc2luZyAoMSkgb3IgZmFsbGluZyAoMCkgZWRnZSBvZiB0aGUgcGl4ZWwgY2xvY2sKKyAgc2lnbmFsLgorLSBzeW5jLW9uLWdyZWVuLWFjdGl2ZTogYWN0aXZlIHN0YXRlIG9mIFN5bmMtb24tZ3JlZW4gKFNvRykgc2lnbmFsLCAwLzEgZm9yCisgIExPVy9ISUdIIHJlc3BlY3RpdmVseS4KKy0gZGF0YS1sYW5lczogYW4gYXJyYXkgb2YgcGh5c2ljYWwgZGF0YSBsYW5lIGluZGV4ZXMuIFBvc2l0aW9uIG9mIGFuIGVudHJ5CisgIGRldGVybWluZXMgdGhlIGxvZ2ljYWwgbGFuZSBudW1iZXIsIHdoaWxlIHRoZSB2YWx1ZSBvZiBhbiBlbnRyeSBpbmRpY2F0ZXMKKyAgcGh5c2ljYWwgbGFuZSwgZS5nLiBmb3IgMi1sYW5lIE1JUEkgQ1NJLTIgYnVzIHdlIGNvdWxkIGhhdmUKKyAgImRhdGEtbGFuZXMgPSA8MSAyPjsiLCBhc3N1bWluZyB0aGUgY2xvY2sgbGFuZSBpcyBvbiBoYXJkd2FyZSBsYW5lIDAuCisgIFRoaXMgcHJvcGVydHkgaXMgdmFsaWQgZm9yIHNlcmlhbCBidXNzZXMgb25seSAoZS5nLiBNSVBJIENTSS0yKS4KKy0gY2xvY2stbGFuZXM6IGFuIGFycmF5IG9mIHBoeXNpY2FsIGNsb2NrIGxhbmUgaW5kZXhlcy4gUG9zaXRpb24gb2YgYW4gZW50cnkKKyAgZGV0ZXJtaW5lcyB0aGUgbG9naWNhbCBsYW5lIG51bWJlciwgd2hpbGUgdGhlIHZhbHVlIG9mIGFuIGVudHJ5IGluZGljYXRlcworICBwaHlzaWNhbCBsYW5lLCBlLmcuIGZvciBhIE1JUEkgQ1NJLTIgYnVzIHdlIGNvdWxkIGhhdmUgImNsb2NrLWxhbmVzID0gPDA+OyIsCisgIHdoaWNoIHBsYWNlcyB0aGUgY2xvY2sgbGFuZSBvbiBoYXJkd2FyZSBsYW5lIDAuIFRoaXMgcHJvcGVydHkgaXMgdmFsaWQgZm9yCisgIHNlcmlhbCBidXNzZXMgb25seSAoZS5nLiBNSVBJIENTSS0yKS4gTm90ZSB0aGF0IGZvciB0aGUgTUlQSSBDU0ktMiBidXMgdGhpcworICBhcnJheSBjb250YWlucyBvbmx5IG9uZSBlbnRyeS4KKy0gY2xvY2stbm9uY29udGludW91czogYSBib29sZWFuIHByb3BlcnR5IHRvIGFsbG93IE1JUEkgQ1NJLTIgbm9uLWNvbnRpbnVvdXMKKyAgY2xvY2sgbW9kZS4KKy0gbGluay1mcmVxdWVuY2llczogQWxsb3dlZCBkYXRhIGJ1cyBmcmVxdWVuY2llcy4gRm9yIE1JUEkgQ1NJLTIsIGZvcgorICBpbnN0YW5jZSwgdGhpcyBpcyB0aGUgYWN0dWFsIGZyZXF1ZW5jeSBvZiB0aGUgYnVzLCBub3QgYml0cyBwZXIgY2xvY2sgcGVyCisgIGxhbmUgdmFsdWUuIEFuIGFycmF5IG9mIDY0LWJpdCB1bnNpZ25lZCBpbnRlZ2Vycy4KKy0gbGFuZS1wb2xhcml0aWVzOiBhbiBhcnJheSBvZiBwb2xhcml0aWVzIG9mIHRoZSBsYW5lcyBzdGFydGluZyBmcm9tIHRoZSBjbG9jaworICBsYW5lIGFuZCBmb2xsb3dlZCBieSB0aGUgZGF0YSBsYW5lcyBpbiB0aGUgc2FtZSBvcmRlciBhcyBpbiBkYXRhLWxhbmVzLgorICBWYWxpZCB2YWx1ZXMgYXJlIDAgKG5vcm1hbCkgYW5kIDEgKGludmVydGVkKS4gVGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkKKyAgc2hvdWxkIGJlIHRoZSBjb21iaW5lZCBsZW5ndGggb2YgZGF0YS1sYW5lcyBhbmQgY2xvY2stbGFuZXMgcHJvcGVydGllcy4KKyAgSWYgdGhlIGxhbmUtcG9sYXJpdGllcyBwcm9wZXJ0eSBpcyBvbWl0dGVkLCB0aGUgdmFsdWUgbXVzdCBiZSBpbnRlcnByZXRlZAorICBhcyAwIChub3JtYWwpLiBUaGlzIHByb3BlcnR5IGlzIHZhbGlkIGZvciBzZXJpYWwgYnVzc2VzIG9ubHkuCisKKworRXhhbXBsZQorLS0tLS0tLQorCitUaGUgZXhhbXBsZSBzbmlwcGV0IGJlbG93IGRlc2NyaWJlcyB0d28gZGF0YSBwaXBlbGluZXMuICBvdjc3MnggYW5kIGlteDA3NCBhcmUKK2NhbWVyYSBzZW5zb3JzIHdpdGggYSBwYXJhbGxlbCBhbmQgc2VyaWFsIChNSVBJIENTSS0yKSB2aWRlbyBidXMgcmVzcGVjdGl2ZWx5LgorQm90aCBzZW5zb3JzIGFyZSBvbiB0aGUgSTJDIGNvbnRyb2wgYnVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGkyYzAgY29udHJvbGxlcgorbm9kZS4gIG92NzcyeCBzZW5zb3IgaXMgbGlua2VkIGRpcmVjdGx5IHRvIHRoZSBjZXUwIHZpZGVvIGhvc3QgaW50ZXJmYWNlLgoraW14MDc0IGlzIGxpbmtlZCB0byBjZXUwIHRocm91Z2ggdGhlIE1JUEkgQ1NJLTIgcmVjZWl2ZXIgKGNzaTIpLiBjZXUwIGhhcyBhCisoc2luZ2xlKSBETUEgZW5naW5lIHdyaXRpbmcgY2FwdHVyZWQgZGF0YSB0byBtZW1vcnkuICBjZXUwIG5vZGUgaGFzIGEgc2luZ2xlCisncG9ydCcgbm9kZSB3aGljaCBtYXkgaW5kaWNhdGUgdGhhdCBhdCBhbnkgdGltZSBvbmx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIGRhdGEKK3BpcGVsaW5lcyBjYW4gYmUgYWN0aXZlOiBvdjc3MnggLT4gY2V1MCBvciBpbXgwNzQgLT4gY3NpMiAtPiBjZXUwLgorCisJY2V1MDogY2V1QDB4ZmU5MTAwMDAgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMsc2gtbW9iaWxlLWNldSI7CisJCXJlZyA9IDwweGZlOTEwMDAwIDB4YTA+OworCQlpbnRlcnJ1cHRzID0gPDB4ODgwPjsKKworCQltY2xrOiBtYXN0ZXJfY2xvY2sgeworCQkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLGNldS1jbG9jayI7CisJCQkjY2xvY2stY2VsbHMgPSA8MT47CisJCQljbG9jay1mcmVxdWVuY3kgPSA8NTAwMDAwMDA+OwkvKiBNYXggY2xvY2sgZnJlcXVlbmN5ICovCisJCQljbG9jay1vdXRwdXQtbmFtZXMgPSAibWNsayI7CisJCX07CisKKwkJcG9ydCB7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCisJCQkvKiBQYXJhbGxlbCBidXMgZW5kcG9pbnQgKi8KKwkJCWNldTBfMTogZW5kcG9pbnRAMSB7CisJCQkJcmVnID0gPDE+OwkJLyogTG9jYWwgZW5kcG9pbnQgIyAqLworCQkJCXJlbW90ZSA9IDwmb3Y3NzJ4XzFfMT47CS8qIFJlbW90ZSBwaGFuZGxlICovCisJCQkJYnVzLXdpZHRoID0gPDg+OwkvKiBVc2VkIGRhdGEgbGluZXMgKi8KKwkJCQlkYXRhLXNoaWZ0ID0gPDI+OwkvKiBMaW5lcyA5OjIgYXJlIHVzZWQgKi8KKworCQkJCS8qIElmIGhzeW5jLWFjdGl2ZS92c3luYy1hY3RpdmUgYXJlIG1pc3NpbmcsCisJCQkJICAgZW1iZWRkZWQgQlQuNjU2IHN5bmMgaXMgdXNlZCAqLworCQkJCWhzeW5jLWFjdGl2ZSA9IDwwPjsJLyogQWN0aXZlIGxvdyAqLworCQkJCXZzeW5jLWFjdGl2ZSA9IDwwPjsJLyogQWN0aXZlIGxvdyAqLworCQkJCWRhdGEtYWN0aXZlID0gPDE+OwkvKiBBY3RpdmUgaGlnaCAqLworCQkJCXBjbGstc2FtcGxlID0gPDE+OwkvKiBSaXNpbmcgKi8KKwkJCX07CisKKwkJCS8qIE1JUEkgQ1NJLTIgYnVzIGVuZHBvaW50ICovCisJCQljZXUwXzA6IGVuZHBvaW50QDAgeworCQkJCXJlZyA9IDwwPjsKKwkJCQlyZW1vdGUgPSA8JmNzaTJfMj47CisJCQl9OworCQl9OworCX07CisKKwlpMmMwOiBpMmNAMHhmZmYyMDAwMCB7CisJCS4uLgorCQlvdjc3MnhfMTogY2FtZXJhQDB4MjEgeworCQkJY29tcGF0aWJsZSA9ICJvdnRpLG92NzcyeCI7CisJCQlyZWcgPSA8MHgyMT47CisJCQl2ZGRpby1zdXBwbHkgPSA8JnJlZ3VsYXRvcjE+OworCQkJdmRkY29yZS1zdXBwbHkgPSA8JnJlZ3VsYXRvcjI+OworCisJCQljbG9jay1mcmVxdWVuY3kgPSA8MjAwMDAwMDA+OworCQkJY2xvY2tzID0gPCZtY2xrIDA+OworCQkJY2xvY2stbmFtZXMgPSAieGNsayI7CisKKwkJCXBvcnQgeworCQkJCS8qIFdpdGggMSBlbmRwb2ludCBwZXIgcG9ydCBubyBuZWVkIGZvciBhZGRyZXNzZXMuICovCisJCQkJb3Y3NzJ4XzFfMTogZW5kcG9pbnQgeworCQkJCQlidXMtd2lkdGggPSA8OD47CisJCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmY2V1MF8xPjsKKwkJCQkJaHN5bmMtYWN0aXZlID0gPDE+OworCQkJCQl2c3luYy1hY3RpdmUgPSA8MD47IC8qIFdobyBjYW1lIHVwIHdpdGggYW4KKwkJCQkJCQkgICAgICAgaW52ZXJ0ZXIgaGVyZSA/Li4uICovCisJCQkJCWRhdGEtYWN0aXZlID0gPDE+OworCQkJCQlwY2xrLXNhbXBsZSA9IDwxPjsKKwkJCQl9OworCQkJfTsKKwkJfTsKKworCQlpbXgwNzQ6IGNhbWVyYUAweDFhIHsKKwkJCWNvbXBhdGlibGUgPSAic29ueSxpbXgwNzQiOworCQkJcmVnID0gPDB4MWE+OworCQkJdmRkaW8tc3VwcGx5ID0gPCZyZWd1bGF0b3IxPjsKKwkJCXZkZGNvcmUtc3VwcGx5ID0gPCZyZWd1bGF0b3IyPjsKKworCQkJY2xvY2stZnJlcXVlbmN5ID0gPDMwMDAwMDAwPjsJLyogU2hhcmVkIGNsb2NrIHdpdGggb3Y3NzJ4XzEgKi8KKwkJCWNsb2NrcyA9IDwmbWNsayAwPjsKKwkJCWNsb2NrLW5hbWVzID0gInN5c2NsayI7CQkvKiBBc3N1bWluZyB0aGlzIGlzIHRoZQorCQkJCQkJCSAgIG5hbWUgaW4gdGhlIGRhdGFzaGVldCAqLworCQkJcG9ydCB7CisJCQkJaW14MDc0XzE6IGVuZHBvaW50IHsKKwkJCQkJY2xvY2stbGFuZXMgPSA8MD47CisJCQkJCWRhdGEtbGFuZXMgPSA8MSAyPjsKKwkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZjc2kyXzE+OworCQkJCX07CisJCQl9OworCQl9OworCX07CisKKwljc2kyOiBjc2kyQDB4ZmZjOTAwMDAgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMsc2gtbW9iaWxlLWNzaTIiOworCQlyZWcgPSA8MHhmZmM5MDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDB4MTdhMD47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQlwb3J0QDEgeworCQkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLGNzaTJjIjsJLyogT25lIG9mIENTSTJJIGFuZCBDU0kyQy4gKi8KKwkJCXJlZyA9IDwxPjsJCQkvKiBDU0ktMiBQSFkgIzEgb2YgMjogUEhZX1MsCisJCQkJCQkJICAgUEhZX00gaGFzIHBvcnQgYWRkcmVzcyAwLAorCQkJCQkJCSAgIGlzIHVudXNlZC4gKi8KKwkJCWNzaTJfMTogZW5kcG9pbnQgeworCQkJCWNsb2NrLWxhbmVzID0gPDA+OworCQkJCWRhdGEtbGFuZXMgPSA8MiAxPjsKKwkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmlteDA3NF8xPjsKKwkJCX07CisJCX07CisJCXBvcnRAMiB7CisJCQlyZWcgPSA8Mj47CQkJLyogcG9ydCAyOiBsaW5rIHRvIHRoZSBDRVUgKi8KKworCQkJY3NpMl8yOiBlbmRwb2ludCB7CisJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZjZXUwXzA+OworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3hpbGlueC92aWRlby50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEveGlsaW54L3ZpZGVvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmQ0NmZhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3hpbGlueC92aWRlby50eHQKQEAgLTAsMCArMSwzNSBAQAorRFQgYmluZGluZ3MgZm9yIFhpbGlueCB2aWRlbyBJUCBjb3JlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitYaWxpbnggdmlkZW8gSVAgY29yZXMgcHJvY2VzcyB2aWRlbyBzdHJlYW1zIGJ5IGFjdGluZyBhcyB2aWRlbyBzaW5rcyBhbmQvb3IKK3NvdXJjZXMuIFRoZXkgYXJlIGNvbm5lY3RlZCBieSBsaW5rcyB0aHJvdWdoIHRoZWlyIGlucHV0IGFuZCBvdXRwdXQgcG9ydHMsCitjcmVhdGluZyBhIHZpZGVvIHBpcGVsaW5lLgorCitFYWNoIHZpZGVvIElQIGNvcmUgaXMgcmVwcmVzZW50ZWQgYnkgYW4gQU1CQSBidXMgY2hpbGQgbm9kZSBpbiB0aGUgZGV2aWNlCit0cmVlIHVzaW5nIGJpbmRpbmdzIGRvY3VtZW50ZWQgaW4gdGhpcyBkaXJlY3RvcnkuIENvbm5lY3Rpb25zIGJldHdlZW4gdGhlIElQCitjb3JlcyBhcmUgcmVwcmVzZW50ZWQgYXMgZGVmaW5lZCBpbiAuLi92aWRlby1pbnRlcmZhY2VzLnR4dC4KKworVGhlIHdob2xlICBwaXBlbGluZSBpcyByZXByZXNlbnRlZCBieSBhbiBBTUJBIGJ1cyBjaGlsZCBub2RlIGluIHRoZSBkZXZpY2UKK3RyZWUgdXNpbmcgYmluZGluZ3MgZG9jdW1lbnRlZCBpbiAuL3hsbngsdmlkZW8udHh0LgorCitDb21tb24gcHJvcGVydGllcworLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGFyZSBjb21tb24gdG8gYWxsIFhpbGlueCB2aWRlbyBJUCBjb3Jlcy4KKworLSB4bG54LHZpZGVvLWZvcm1hdDogVGhpcyBwcm9wZXJ0eSByZXByZXNlbnRzIGEgdmlkZW8gZm9ybWF0IHRyYW5zbWl0dGVkIG9uIGFuCisgIEFYSSBidXMgYmV0d2VlbiB2aWRlbyBJUCBjb3JlcywgdXNpbmcgaXRzIFZGIGNvZGUgYXMgZGVmaW5lZCBpbiAiQVhJNC1TdHJlYW0KKyAgVmlkZW8gSVAgYW5kIFN5c3RlbSBEZXNpZ24gR3VpZGUiIFtVRzkzNF0uIEhvdyB0aGUgZm9ybWF0IHJlbGF0ZXMgdG8gdGhlIElQCisgIGNvcmUgaXMgZGVjcmliZWQgaW4gdGhlIElQIGNvcmUgYmluZGluZ3MgZG9jdW1lbnRhdGlvbi4KKworLSB4bG54LHZpZGVvLXdpZHRoOiBUaGlzIHByb3BlcnR5IHF1YWxpZmllcyB0aGUgdmlkZW8gZm9ybWF0IHdpdGggdGhlIHNhbXBsZQorICB3aWR0aCBleHByZXNzZWQgYXMgYSBudW1iZXIgb2YgYml0cyBwZXIgcGl4ZWwgY29tcG9uZW50LiBBbGwgY29tcG9uZW50cyBtdXN0CisgIHVzZSB0aGUgc2FtZSB3aWR0aC4KKworLSB4bG54LGNmYS1wYXR0ZXJuOiBXaGVuIHRoZSB2aWRlbyBmb3JtYXQgaXMgc2V0IHRvIE1vbm8vU2Vuc29yLCB0aGlzIHByb3BlcnR5CisgIGRlc2NyaWJlcyB0aGUgc2Vuc29yJ3MgY29sb3IgZmlsdGVyIGFycmF5IHBhdHRlcm4uIFN1cHBvcnRlZCB2YWx1ZXMgYXJlCisgICJiZ2dyIiwgImdicmciLCAiZ3JiZyIsICJyZ2diIiBhbmQgIm1vbm8iLiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgcGF0dGVybgorICBkZWZhdWx0cyB0byAibW9ubyIuCisKKworW1VHOTM0XSBodHRwOi8vd3d3LnhpbGlueC5jb20vc3VwcG9ydC9kb2N1bWVudGF0aW9uL2lwX2RvY3VtZW50YXRpb24vYXhpX3ZpZGVvaXAvdjFfMC91ZzkzNF9heGlfdmlkZW9JUC5wZGYKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS94aWxpbngveGxueCx2LXRjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS94aWxpbngveGxueCx2LXRjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYWVkM2I0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3hpbGlueC94bG54LHYtdGMudHh0CkBAIC0wLDAgKzEsMzMgQEAKK1hpbGlueCBWaWRlbyBUaW1pbmcgQ29udHJvbGxlciAoVlRDKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBWaWRlbyBUaW1pbmcgQ29udHJvbGxlciBpcyBhIGdlbmVyYWwgcHVycG9zZSB2aWRlbyB0aW1pbmcgZ2VuZXJhdG9yIGFuZAorZGV0ZWN0b3IuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlOiBNdXN0IGJlICJ4bG54LHYtdGMtNi4xIi4KKworICAtIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVycyBzZXQgZm9yIHRoZSBkZXZpY2UuCisKKyAgLSBjbG9ja3M6IE11c3QgY29udGFpbiBhIGNsb2NrIHNwZWNpZmllciBmb3IgdGhlIFZUQyBjb3JlIGFuZCB0aW1pbmcKKyAgICBpbnRlcmZhY2VzIGNsb2NrLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCisgIC0geGxueCxkZXRlY3RvcjogVGhlIFZUQyBoYXMgYSB0aW1pbmcgZGV0ZWN0b3IKKyAgLSB4bG54LGdlbmVyYXRvcjogVGhlIFZUQyBoYXMgYSB0aW1pbmcgZ2VuZXJhdG9yCisKKyAgQXQgbGVhc3Qgb25lIG9mIHRoZSB4bG54LGRldGVjdG9yIGFuZCB4bG54LGdlbmVyYXRvciBwcm9wZXJ0aWVzIG11c3QgYmUKKyAgc3BlY2lmaWVkLgorCisKK0V4YW1wbGU6CisKKwl2dGM6IHZ0Y0A0M2M0MDAwMCB7CisJCWNvbXBhdGlibGUgPSAieGxueCx2LXRjLTYuMSI7CisJCXJlZyA9IDwweDQzYzQwMDAwIDB4MTAwMDA+OworCisJCWNsb2NrcyA9IDwmY2xrYyAxNT47CisJCXhsbngsZ2VuZXJhdG9yOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEveGlsaW54L3hsbngsdi10cGcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3hpbGlueC94bG54LHYtdHBnLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGQ4NmIzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3hpbGlueC94bG54LHYtdHBnLnR4dApAQCAtMCwwICsxLDcxIEBACitYaWxpbnggVmlkZW8gVGVzdCBQYXR0ZXJuIEdlbmVyYXRvciAoVFBHKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBNdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIG9mCisKKyAgICAieGxueCx2LXRwZy01LjAiIChUUEcgdmVyc2lvbiA1LjApCisgICAgInhsbngsdi10cGctNi4wIiAoVFBHIHZlcnNpb24gNi4wKQorCisgIFRQRyB2ZXJzaW9ucyBiYWNrd2FyZC1jb21wYXRpYmxlIHdpdGggcHJldmlvdXMgdmVyc2lvbnMgc2hvdWxkIGxpc3QgYWxsCisgIGNvbXBhdGlibGUgdmVyc2lvbnMgaW4gdGhlIG5ld2VyIHRvIG9sZGVyIG9yZGVyLgorCistIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVycyBzZXQgZm9yIHRoZSBkZXZpY2UuCisKKy0gY2xvY2tzOiBSZWZlcmVuY2UgdG8gdGhlIHZpZGVvIGNvcmUgY2xvY2suCisKKy0geGxueCx2aWRlby1mb3JtYXQsIHhsbngsdmlkZW8td2lkdGg6IFZpZGVvIGZvcm1hdCBhbmQgd2lkdGgsIGFzIGRlZmluZWQgaW4KKyAgdmlkZW8udHh0LgorCistIHBvcnQ6IFZpZGVvIHBvcnQsIHVzaW5nIHRoZSBEVCBiaW5kaW5ncyBkZWZpbmVkIGluIC4uL3ZpZGVvLWludGVyZmFjZXMudHh0LgorICBUaGUgVFBHIGhhcyBhIHNpbmdsZSBvdXRwdXQgcG9ydCBudW1iZXJlZCAwLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIHhsbngsdnRjOiBBIHBoYW5kbGUgcmVmZXJlbmNpbmcgdGhlIFZpZGVvIFRpbWluZyBDb250cm9sbGVyIHRoYXQgZ2VuZXJhdGVzCisgIHZpZGVvIHRpbWluZ3MgZm9yIHRoZSBUUEcgdGVzdCBwYXR0ZXJucy4KKworLSB0aW1pbmctZ3Bpb3M6IFNwZWNpZmllciBmb3IgYSBHUElPIHRoYXQgY29udHJvbHMgdGhlIHRpbWluZyBtdXggYXQgdGhlIFRQRworICBpbnB1dC4gVGhlIEdQSU8gYWN0aXZlIGxldmVsIGNvcnJlc3BvbmRzIHRvIHRoZSBzZWxlY3Rpb24gb2YgVlRDLWdlbmVyYXRlZAorICB2aWRlbyB0aW1pbmdzLgorCitUaGUgeGxueCx2dGMgYW5kIHRpbWluZy1ncGlvcyBwcm9wZXJ0aWVzIGFyZSBtYW5kYXRvcnkgd2hlbiB0aGUgVFBHIGlzCitzeW50aGVzaXplZCB3aXRoIHR3byBwb3J0cyBhbmQgZm9yYmlkZGVuIHdoZW4gc3ludGhlc2l6ZWQgd2l0aCBvbmUgcG9ydC4KKworRXhhbXBsZToKKworCXRwZ18wOiB0cGdANDAwNTAwMDAgeworCQljb21wYXRpYmxlID0gInhsbngsdi10cGctNi4wIiwgInhsbngsdi10cGctNS4wIjsKKwkJcmVnID0gPDB4NDAwNTAwMDAgMHgxMDAwMD47CisJCWNsb2NrcyA9IDwmY2xrYyAxNT47CisKKwkJeGxueCx2dGMgPSA8JnZ0Y18zPjsKKwkJdGltaW5nLWdwaW9zID0gPCZwczdfZ3Bpb18wIDU1IEdQSU9fQUNUSVZFX0xPVz47CisKKwkJcG9ydHMgeworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQkJcG9ydEAwIHsKKwkJCQlyZWcgPSA8MD47CisKKwkJCQl4bG54LHZpZGVvLWZvcm1hdCA9IDxYVklQX1ZGX1lVVl80MjI+OworCQkJCXhsbngsdmlkZW8td2lkdGggPSA8OD47CisKKwkJCQl0cGdfaW46IGVuZHBvaW50IHsKKwkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZhZHY3NjExX291dD47CisJCQkJfTsKKwkJCX07CisJCQlwb3J0QDEgeworCQkJCXJlZyA9IDwxPjsKKworCQkJCXhsbngsdmlkZW8tZm9ybWF0ID0gPFhWSVBfVkZfWVVWXzQyMj47CisJCQkJeGxueCx2aWRlby13aWR0aCA9IDw4PjsKKworCQkJCXRwZzFfb3V0OiBlbmRwb2ludCB7CisJCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmc3dpdGNoX2luMD47CisJCQkJfTsKKwkJCX06CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS94aWxpbngveGxueCx2aWRlby50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEveGlsaW54L3hsbngsdmlkZW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMDIyNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEveGlsaW54L3hsbngsdmlkZW8udHh0CkBAIC0wLDAgKzEsNTUgQEAKK1hpbGlueCBWaWRlbyBJUCBQaXBlbGluZSAoVklQUCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworR2VuZXJhbCBjb25jZXB0CistLS0tLS0tLS0tLS0tLS0KKworWGlsaW54IHZpZGVvIElQIHBpcGVsaW5lIHByb2Nlc3NlcyB2aWRlbyBzdHJlYW1zIHRocm91Z2ggb25lIG9yIG1vcmUgWGlsaW54Cit2aWRlbyBJUCBjb3Jlcy4gRWFjaCB2aWRlbyBJUCBjb3JlIGlzIHJlcHJlc2VudGVkIGFzIGRvY3VtZW50ZWQgaW4gdmlkZW8udHh0CithbmQgSVAgY29yZSBzcGVjaWZpYyBkb2N1bWVudGF0aW9uLCB4bG54LHYtKi50eHQsIGluIHRoaXMgZGlyZWN0b3J5LiBUaGUgRFQKK25vZGUgb2YgdGhlIFZJUFAgcmVwcmVzZW50cyBhcyBhIHRvcCBsZXZlbCBub2RlIG9mIHRoZSBwaXBlbGluZSBhbmQgZGVmaW5lcworbWFwcGluZ3MgYmV0d2VlbiBETUFzIGFuZCB0aGUgdmlkZW8gSVAgY29yZXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogTXVzdCBiZSAieGxueCx2aWRlbyIuCisKKy0gZG1hcywgZG1hLW5hbWVzOiBMaXN0IG9mIG9uZSBETUEgc3BlY2lmaWVyIGFuZCBpZGVudGlmaWVyIHN0cmluZyAoYXMgZGVmaW5lZAorICBpbiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2RtYS50eHQpIHBlciBwb3J0LiBFYWNoIHBvcnQKKyAgcmVxdWlyZXMgYSBETUEgY2hhbm5lbCB3aXRoIHRoZSBpZGVudGlmaWVyIHN0cmluZyBzZXQgdG8gInBvcnQiIGZvbGxvd2VkIGJ5CisgIHRoZSBwb3J0IGluZGV4LgorCistIHBvcnRzOiBWaWRlbyBwb3J0LCB1c2luZyB0aGUgRFQgYmluZGluZ3MgZGVmaW5lZCBpbiAuLi92aWRlby1pbnRlcmZhY2VzLnR4dC4KKworUmVxdWlyZWQgcG9ydCBwcm9wZXJ0aWVzOgorCistIGRpcmVjdGlvbjogc2hvdWxkIGJlIGVpdGhlciAiaW5wdXQiIG9yICJvdXRwdXQiIGRlcGVuZGluZyBvbiB0aGUgZGlyZWN0aW9uCisgIG9mIHN0cmVhbS4KKworRXhhbXBsZToKKworCXZpZGVvX2NhcCB7CisJCWNvbXBhdGlibGUgPSAieGxueCx2aWRlbyI7CisJCWRtYXMgPSA8JnZkbWFfMSAxPiwgPCZ2ZG1hXzMgMT47CisJCWRtYS1uYW1lcyA9ICJwb3J0MCIsICJwb3J0MSI7CisKKwkJcG9ydHMgeworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQkJcG9ydEAwIHsKKwkJCQlyZWcgPSA8MD47CisJCQkJZGlyZWN0aW9uID0gImlucHV0IjsKKwkJCQl2Y2FwMF9pbjA6IGVuZHBvaW50IHsKKwkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZzY2FsZXIwX291dD47CisJCQkJfTsKKwkJCX07CisJCQlwb3J0QDEgeworCQkJCXJlZyA9IDwxPjsKKwkJCQlkaXJlY3Rpb24gPSAiaW5wdXQiOworCQkJCXZjYXAwX2luMTogZW5kcG9pbnQgeworCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JnN3aXRjaF9vdXQxPjsKKwkJCQl9OworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lbW9yeS1jb250cm9sbGVycy9hcm0scGwxNzIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lbW9yeS1jb250cm9sbGVycy9hcm0scGwxNzIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyYjc3ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJzL2FybSxwbDE3Mi50eHQKQEAgLTAsMCArMSwxMjcgQEAKKyogRGV2aWNlIHRyZWUgYmluZGluZ3MgZm9yIEFSTSBQTDE3Mi9QTDE3NS9QTDE3NiBNdWx0aVBvcnQgTWVtb3J5IENvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOgkJTXVzdCBiZSAiYXJtLHByaW1lY2VsbCIgYW5kIGV4YWN0bHkgb25lIGZyb20KKwkJCSJhcm0scGwxNzIiLCAiYXJtLHBsMTc1IiBvciAiYXJtLHBsMTc2Ii4KKworLSByZWc6CQkJTXVzdCBjb250YWlucyBvZmZzZXQvbGVuZ3RoIHZhbHVlIGZvciBjb250cm9sbGVyLgorCistICNhZGRyZXNzLWNlbGxzOglNdXN0IGJlIDIuIFRoZSBwYXJ0aXRpb24gbnVtYmVyIGhhcyB0byBiZSBlbmNvZGVkIGluIHRoZQorCQkJZmlyc3QgYWRkcmVzcyBjZWxsIGFuZCBpdCBtYXkgYWNjZXB0IHZhbHVlcyAwLi5OLTEKKwkJCShOIC0gdG90YWwgbnVtYmVyIG9mIHBhcnRpdGlvbnMpLiBUaGUgc2Vjb25kIGNlbGwgaXMgdGhlCisJCQlvZmZzZXQgaW50byB0aGUgcGFydGl0aW9uLgorCistICNzaXplLWNlbGxzOgkJTXVzdCBiZSBzZXQgdG8gMS4KKworLSByYW5nZXM6CQlNdXN0IGNvbnRhaW4gb25lIG9yIG1vcmUgY2hpcCBzZWxlY3QgbWVtb3J5IHJlZ2lvbnMuCisKKy0gY2xvY2tzOgkJTXVzdCBjb250YWluIHJlZmVyZW5jZXMgdG8gY29udHJvbGxlciBjbG9ja3MuCisKKy0gY2xvY2stbmFtZXM6CQlNdXN0IGNvbnRhaW4gIm1wbWNjbGsiIGFuZCAiYXBiX3BjbGsiLgorCistIGNsb2NrLXJhbmdlczoJCUVtcHR5IHByb3BlcnR5IGluZGljYXRpbmcgdGhhdCBjaGlsZCBub2RlcyBjYW4gaW5oZXJpdAorCQkJbmFtZWQgY2xvY2tzLiBSZXF1aXJlZCBvbmx5IGlmIGNsb2NrIHRyZWUgZGF0YSBwcmVzZW50CisJCQlpbiBkZXZpY2UgdHJlZS4KKwkJCVNlZSBjbG9jay1iaW5kaW5ncy50eHQKKworQ2hpbGQgY2hpcC1zZWxlY3QgKGNzKSBub2RlcyBjb250YWluIHRoZSBtZW1vcnkgZGV2aWNlcyBub2RlcyBjb25uZWN0ZWQgdG8KK3N1Y2ggYXMgTk9SIChlLmcuIGNmaS1mbGFzaCkgYW5kIE5BTkQuCisKK1JlcXVpcmVkIGNoaWxkIGNzIG5vZGUgcHJvcGVydGllczoKKworLSAjYWRkcmVzcy1jZWxsczoJTXVzdCBiZSAyLgorCistICNzaXplLWNlbGxzOgkJTXVzdCBiZSAxLgorCistIHJhbmdlczoJCUVtcHR5IHByb3BlcnR5IGluZGljYXRpbmcgdGhhdCBjaGlsZCBub2RlcyBjYW4gaW5oZXJpdAorCQkJbWVtb3J5IGxheW91dC4KKworLSBjbG9jay1yYW5nZXM6CQlFbXB0eSBwcm9wZXJ0eSBpbmRpY2F0aW5nIHRoYXQgY2hpbGQgbm9kZXMgY2FuIGluaGVyaXQKKwkJCW5hbWVkIGNsb2Nrcy4gUmVxdWlyZWQgb25seSBpZiBjbG9jayB0cmVlIGRhdGEgcHJlc2VudAorCQkJaW4gZGV2aWNlIHRyZWUuCisKKy0gbXBtYyxjczoJCUNoaXAgc2VsZWN0IG51bWJlci4gSW5kaWNhdGVzIHRvIHRoZSBwbDAxNzIgZHJpdmVyCisJCQl3aGljaCBjaGlwc2VsZWN0IGlzIHVzZWQgZm9yIGFjY2Vzc2luZyB0aGUgbWVtb3J5LgorCistIG1wbWMsbWVtb3J5LXdpZHRoOglXaWR0aCBvZiB0aGUgY2hpcCBzZWxlY3QgbWVtb3J5LiBNdXN0IGJlIGVxdWFsIHRvCisJCQllaXRoZXIgOCwgMTYgb3IgMzIuCisKK09wdGlvbmFsIGNoaWxkIGNzIG5vZGUgY29uZmlnIHByb3BlcnRpZXM6CisKKy0gbXBtYyxhc3luYy1wYWdlLW1vZGU6CUVuYWJsZSBhc3luY2hyb25vdXMgcGFnZSBtb2RlLgorCistIG1wbWMsY3MtYWN0aXZlLWhpZ2g6CVNldCBjaGlwIHNlbGVjdCBwb2xhcml0eSB0byBhY3RpdmUgaGlnaC4KKworLSBtcG1jLGJ5dGUtbGFuZS1sb3c6CVNldCBieXRlIGxhbmUgc3RhdGUgdG8gbG93LgorCistIG1wbWMsZXh0ZW5kZWQtd2FpdDoJRW5hYmxlIGV4dGVuZGVkIHdhaXQuCisKKy0gbXBtYyxidWZmZXItZW5hYmxlOglFbmFibGUgd3JpdGUgYnVmZmVyLCBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCBieQorCQkJUEwxNzUgYW5kIFBMMTc2IGNvbnRyb2xsZXJzLgorCistIG1wbWMsd3JpdGUtcHJvdGVjdDoJRW5hYmxlIHdyaXRlIHByb3RlY3QuCisKK09wdGlvbmFsIGNoaWxkIGNzIG5vZGUgdGltaW5nIHByb3BlcnRpZXM6CisKKy0gbXBtYyx3cml0ZS1lbmFibGUtZGVsYXk6CURlbGF5IGZyb20gY2hpcCBzZWxlY3QgYXNzZXJ0aW9uIHRvIHdyaXRlCisJCQkJZW5hYmxlIChXRSBzaWduYWwpIGluIG5hbm8gc2Vjb25kcy4KKworLSBtcG1jLG91dHB1dC1lbmFibGUtZGVsYXk6CURlbGF5IGZyb20gY2hpcCBzZWxlY3QgYXNzZXJ0aW9uIHRvIG91dHB1dAorCQkJCWVuYWJsZSAoT0Ugc2lnbmFsKSBpbiBuYW5vIHNlY29uZHMuCisKKy0gbXBtYyx3cml0ZS1hY2Nlc3MtZGVsYXk6CURlbGF5IGZyb20gY2hpcCBzZWxlY3QgYXNzZXJ0aW9uIHRvIHdyaXRlCisJCQkJYWNjZXNzIGluIG5hbm8gc2Vjb25kcy4KKworLSBtcG1jLHJlYWQtYWNjZXNzLWRlbGF5OglEZWxheSBmcm9tIGNoaXAgc2VsZWN0IGFzc2VydGlvbiB0byByZWFkCisJCQkJYWNjZXNzIGluIG5hbm8gc2Vjb25kcy4KKworLSBtcG1jLHBhZ2UtbW9kZS1yZWFkLWRlbGF5OglEZWxheSBmb3IgYXN5bmNocm9ub3VzIHBhZ2UgbW9kZSBzZXF1ZW50aWFsCisJCQkJYWNjZXNzZXMgaW4gbmFubyBzZWNvbmRzLgorCistIG1wbWMsdHVybi1yb3VuZC1kZWxheToJRGVsYXkgYmV0d2VlbiBhY2Nlc3MgdG8gbWVtb3J5IGJhbmtzIGluIG5hbm8KKwkJCQlzZWNvbmRzLgorCitJZiBhbnkgb2YgdGhlIGFib3ZlIHRpbWluZyBwYXJhbWV0ZXJzIGFyZSBhYnNlbnQsIGN1cnJlbnQgcGFyYW1ldGVyIHZhbHVlIHdpbGwKK2JlIHRha2VuIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgSFcgcmVnLgorCitFeGFtcGxlIGZvciBwbDE3MiB3aXRoIG5vciBmbGFzaCBvbiBjaGlwIHNlbGVjdCAwIHNob3duIGJlbG93LgorCitlbWM6IG1lbW9yeS1jb250cm9sbGVyQDQwMDA1MDAwIHsKKwljb21wYXRpYmxlID0gImFybSxwbDE3MiIsICJhcm0scHJpbWVjZWxsIjsKKwlyZWcgPSA8MHg0MDAwNTAwMCAweDEwMDA+OworCWNsb2NrcyA9IDwmY2N1MSBDTEtfQ1BVX0VNQ0RJVj4sIDwmY2N1MSBDTEtfQ1BVX0VNQz47CisJY2xvY2stbmFtZXMgPSAibXBtY2NsayIsICJhcGJfcGNsayI7CisJI2FkZHJlc3MtY2VsbHMgPSA8Mj47CisJI3NpemUtY2VsbHMgPSA8MT47CisJcmFuZ2VzID0gPDAgMCAweDFjMDAwMDAwIDB4MTAwMDAwMAorCQkgIDEgMCAweDFkMDAwMDAwIDB4MTAwMDAwMAorCQkgIDIgMCAweDFlMDAwMDAwIDB4MTAwMDAwMAorCQkgIDMgMCAweDFmMDAwMDAwIDB4MTAwMDAwMD47CisKKwljczAgeworCQkjYWRkcmVzcy1jZWxscyA9IDwyPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCXJhbmdlczsKKworCQltcG1jLGNzID0gPDA+OworCQltcG1jLG1lbW9yeS13aWR0aCA9IDwxNj47CisJCW1wbWMsYnl0ZS1sYW5lLWxvdzsKKwkJbXBtYyx3cml0ZS1lbmFibGUtZGVsYXkgPSA8MD47CisJCW1wbWMsb3V0cHV0LWVuYWJsZS1kZWxheSA9IDwwPjsKKwkJbXBtYyxyZWFkLWVuYWJsZS1kZWxheSA9IDw3MD47CisJCW1wbWMscGFnZS1tb2RlLXJlYWQtZGVsYXkgPSA8NzA+OworCisJCWZsYXNoQDAsMCB7CisJCQljb21wYXRpYmxlID0gInNzdCxzc3QzOXZmMzIwIiwgImNmaS1mbGFzaCI7CisJCQlyZWcgPSA8MCAwIDB4NDAwMDAwPjsKKwkJCWJhbmstd2lkdGggPSA8Mj47CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDE+OworCQkJcGFydGl0aW9uQDAgeworCQkJCWxhYmVsID0gImRhdGEiOworCQkJCXJlZyA9IDwwIDB4NDAwMDAwPjsKKwkJCX07CisJCX07CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJzL2F0aDc5LWRkci1jb250cm9sbGVyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZW1vcnktY29udHJvbGxlcnMvYXRoNzktZGRyLWNvbnRyb2xsZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZTM1YTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJzL2F0aDc5LWRkci1jb250cm9sbGVyLnR4dApAQCAtMCwwICsxLDM1IEBACitCaW5kaW5nIGZvciBRdWFsY29tbSAgQXRoZXJvcyBBUjd4eHgvQVI5eHh4IEREUiBjb250cm9sbGVyCisKK1RoZSBERFIgY29udHJvbGxlciBvZiB0aGUgQVJ4eHggYW5kIEFSOXh4eCBmYW1pbGllcyBwcm92aWRlcyBhbiBpbnRlcmZhY2UKK3RvIGZsdXNoIHRoZSBGSUZPIGJldHdlZW4gdmFyaW91cyBkZXZpY2VzIGFuZCB0aGUgRERSLiBUaGlzIGlzIG1haW5seSB1c2VkCitieSB0aGUgSVJRIGNvbnRyb2xsZXIgdG8gZmx1c2ggdGhlIEZJRk8gYmVmb3JlIHJ1bm5pbmcgdGhlIGludGVycnVwdCBoYW5kbGVyCitvZiBzdWNoIGRldmljZXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogaGFzIHRvIGJlICJxY2EsPHNvYy10eXBlPi1kZHItY29udHJvbGxlciIsCisgICJxY2EsW2FyNzEwMHxhcjcyNDBdLWRkci1jb250cm9sbGVyIiBhcyBmYWxsYmFjay4KKyAgT24gU29DIHdpdGggUENJIHN1cHBvcnQgInFjYSxhcjcxMDAtZGRyLWNvbnRyb2xsZXIiIHNob3VsZCBiZSB1c2VkIGFzCisgIGZhbGxiYWNrLCBvdGhlcndpc2UgInFjYSxhcjcyNDAtZGRyLWNvbnRyb2xsZXIiIHNob3VsZCBiZSB1c2VkLgorLSByZWc6IEJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgY29udHJvbGxlcnMgbWVtb3J5IGFyZWEKKy0gI3FjYSxkZHItd2ItY2hhbm5lbC1jZWxsczogaGFzIHRvIGJlIDEsIHRoZSBpbmRleCBvZiB0aGUgd3JpdGUgYnVmZmVyCisgIGNoYW5uZWwKKworRXhhbXBsZToKKworCWRkcl9jdHJsOiBtZW1vcnktY29udHJvbGxlckAxODAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicWNhLGFyOTEzMi1kZHItY29udHJvbGxlciIsCisJCQkJInFjYSxhcjcyNDAtZGRyLWNvbnRyb2xsZXIiOworCQlyZWcgPSA8MHgxODAwMDAwMCAweDEwMD47CisKKwkJI3FjYSxkZHItd2ItY2hhbm5lbC1jZWxscyA9IDwxPjsKKwl9OworCisJLi4uCisKKwlpbnRlcnJ1cHQtY29udHJvbGxlciB7CisJCS4uLgorCQlxY2EsZGRyLXdiLWNoYW5uZWwtaW50ZXJydXB0cyA9IDwyPiwgPDM+LCA8ND4sIDw1PjsKKwkJcWNhLGRkci13Yi1jaGFubmVscyA9IDwmZGRyX2N0cmwgMz4sIDwmZGRyX2N0cmwgMj4sCisJCQkJCTwmZGRyX2N0cmwgMD4sIDwmZGRyX2N0cmwgMT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZW1vcnktY29udHJvbGxlcnMvY2FseGVkYS1kZHItY3RybHIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lbW9yeS1jb250cm9sbGVycy9jYWx4ZWRhLWRkci1jdHJsci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ5Njc1OQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZW1vcnktY29udHJvbGxlcnMvY2FseGVkYS1kZHItY3RybHIudHh0CkBAIC0wLDAgKzEsMTYgQEAKK0NhbHhlZGEgRERSIG1lbW9yeSBjb250cm9sbGVyCisKK1Byb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmU6CisgIC0gImNhbHhlZGEsaGItZGRyLWN0cmwiIGZvciBFQ1gtMTAwMAorICAtICJjYWx4ZWRhLGVjeC0yMDAwLWRkci1jdHJsIiBmb3IgRUNYLTIwMDAKKy0gcmVnIDogQWRkcmVzcyBhbmQgc2l6ZSBmb3IgRERSIGNvbnRyb2xsZXIgcmVnaXN0ZXJzLgorLSBpbnRlcnJ1cHRzIDogSW50ZXJydXB0IGZvciBERFIgY29udHJvbGxlci4KKworRXhhbXBsZToKKworCW1lbW9yeS1jb250cm9sbGVyQGZmZjAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJjYWx4ZWRhLGhiLWRkci1jdHJsIjsKKwkJcmVnID0gPDB4ZmZmMDAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDkxIDQ+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJzL2ZzbC9pZmMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lbW9yeS1jb250cm9sbGVycy9mc2wvaWZjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTQyN2IwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lbW9yeS1jb250cm9sbGVycy9mc2wvaWZjLnR4dApAQCAtMCwwICsxLDgyIEBACitJbnRlZ3JhdGVkIEZsYXNoIENvbnRyb2xsZXIKKworUHJvcGVydGllczoKKy0gbmFtZSA6IFNob3VsZCBiZSBpZmMKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBjb250YWluICJmc2wsaWZjIi4gVGhlIHZlcnNpb24gb2YgdGhlIGludGVncmF0ZWQKKyAgICAgICAgICAgICAgIGZsYXNoIGNvbnRyb2xsZXIgY2FuIGJlIGZvdW5kIGluIHRoZSBJRkNfUkVWIHJlZ2lzdGVyIGF0CisgICAgICAgICAgICAgICBvZmZzZXQgemVyby4KKworLSAjYWRkcmVzcy1jZWxscyA6IFNob3VsZCBiZSBlaXRoZXIgdHdvIG9yIHRocmVlLiAgVGhlIGZpcnN0IGNlbGwgaXMgdGhlCisgICAgICAgICAgICAgICAgICAgY2hpcHNlbGVjdCBudW1iZXIsIGFuZCB0aGUgcmVtYWluaW5nIGNlbGxzIGFyZSB0aGUKKyAgICAgICAgICAgICAgICAgICBvZmZzZXQgaW50byB0aGUgY2hpcHNlbGVjdC4KKy0gI3NpemUtY2VsbHMgOiBFaXRoZXIgb25lIG9yIHR3bywgZGVwZW5kaW5nIG9uIGhvdyBsYXJnZSBlYWNoIGNoaXBzZWxlY3QKKyAgICAgICAgICAgICAgICBjYW4gYmUuCistIHJlZyA6IE9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKy0gaW50ZXJydXB0czogSUZDIG1heSBoYXZlIG9uZSBvciB0d28gaW50ZXJydXB0cy4gIElmIHR3byBpbnRlcnJ1cHQKKyAgICAgICAgICAgICAgc3BlY2lmaWVycyBhcmUgcHJlc2VudCwgdGhlIGZpcnN0IGlzIHRoZSAiY29tbW9uIgorICAgICAgICAgICAgICBpbnRlcnJ1cHQgKENNX0VWVEVSX1NUQVQpLCBhbmQgdGhlIHNlY29uZCBpcyB0aGUgTkFORAorICAgICAgICAgICAgICBpbnRlcnJ1cHQgKE5BTkRfRVZURVJfU1RBVCkuICBJZiB0aGVyZSBpcyBvbmx5IG9uZSwKKyAgICAgICAgICAgICAgdGhhdCBpbnRlcnJ1cHQgcmVwb3J0cyBib3RoIHR5cGVzIG9mIGV2ZW50LgorCistIGxpdHRsZS1lbmRpYW4gOiBJZiB0aGlzIHByb3BlcnR5IGlzIGFic2VudCwgdGhlIGJpZy1lbmRpYW4gbW9kZSB3aWxsCisgICAgICAgICAgICAgICAgICBiZSBpbiB1c2UgYXMgZGVmYXVsdCBmb3IgcmVnaXN0ZXJzLgorCistIHJhbmdlcyA6IEVhY2ggcmFuZ2UgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgY2hpcHNlbGVjdCwgYW5kIGNvdmVycworICAgICAgICAgICB0aGUgZW50aXJlIGFjY2VzcyB3aW5kb3cgYXMgY29uZmlndXJlZC4KKworQ2hpbGQgZGV2aWNlIG5vZGVzIGRlc2NyaWJlIHRoZSBkZXZpY2VzIGNvbm5lY3RlZCB0byBJRkMgc3VjaCBhcyBOT1IgKGUuZy4KK2NmaS1mbGFzaCkgYW5kIE5BTkQgKGZzbCxpZmMtbmFuZCkuIFRoZXJlIG1pZ2h0IGJlIGJvYXJkIHNwZWNpZmljIGRldmljZXMKK2xpa2UgRlBHQXMsIENQTERzLCBldGMuCisKK0V4YW1wbGU6CisKKwlpZmNAZmZlMWUwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxpZmMiLCAic2ltcGxlLWJ1cyI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDI+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJcmVnID0gPDB4MCAweGZmZTFlMDAwIDAgMHgyMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwxNiAyIDE5IDI+OworCQlsaXR0bGUtZW5kaWFuOworCisJCS8qIE5PUiwgTkFORCBGbGFzaGVzIGFuZCBDUExEIG9uIGJvYXJkICovCisJCXJhbmdlcyA9IDwweDAgMHgwIDB4MCAweGVlMDAwMDAwIDB4MDIwMDAwMDAKKwkJCSAgMHgxIDB4MCAweDAgMHhmZmEwMDAwMCAweDAwMDEwMDAwCisJCQkgIDB4MyAweDAgMHgwIDB4ZmZiMDAwMDAgMHgwMDAyMDAwMD47CisKKwkJZmxhc2hAMCwwIHsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MT47CisJCQljb21wYXRpYmxlID0gImNmaS1mbGFzaCI7CisJCQlyZWcgPSA8MHgwIDB4MCAweDIwMDAwMDA+OworCQkJYmFuay13aWR0aCA9IDwyPjsKKwkJCWRldmljZS13aWR0aCA9IDwxPjsKKworCQkJcGFydGl0aW9uQDAgeworCQkJCS8qIDMyTUIgZm9yIHVzZXIgZGF0YSAqLworCQkJCXJlZyA9IDwweDAgMHgwMjAwMDAwMD47CisJCQkJbGFiZWwgPSAiTk9SIERhdGEiOworCQkJfTsKKwkJfTsKKworCQlmbGFzaEAxLDAgeworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLGlmYy1uYW5kIjsKKwkJCXJlZyA9IDwweDEgMHgwIDB4MTAwMDA+OworCisJCQlwYXJ0aXRpb25AMCB7CisJCQkJLyogVGhpcyBsb2NhdGlvbiBtdXN0IG5vdCBiZSBhbHRlcmVkICAqLworCQkJCS8qIDFNQiBmb3IgdS1ib290IEJvb3Rsb2FkZXIgSW1hZ2UgKi8KKwkJCQlyZWcgPSA8MHgwIDB4MDAxMDAwMDA+OworCQkJCWxhYmVsID0gIk5BTkQgVS1Cb290IEltYWdlIjsKKwkJCQlyZWFkLW9ubHk7CisJCQl9OworCQl9OworCisJCWNwbGRAMywwIHsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MT47CisJCQljb21wYXRpYmxlID0gImZzbCxwMTAxMHJkYi1jcGxkIjsKKwkJCXJlZyA9IDwweDMgMHgwIDB4MDAwMDAxZj47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZW1vcnktY29udHJvbGxlcnMvaW5nZW5pYyxqejQ3ODAtbmVtYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJzL2luZ2VuaWMsano0NzgwLW5lbWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5MzZiNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJzL2luZ2VuaWMsano0NzgwLW5lbWMudHh0CkBAIC0wLDAgKzEsNzUgQEAKKyogSW5nZW5pYyBKWjQ3ODAgTkFORC9leHRlcm5hbCBtZW1vcnkgY29udHJvbGxlciAoTkVNQykKKworVGhpcyBmaWxlIGRvY3VtZW50cyB0aGUgZGV2aWNlIHRyZWUgYmluZGluZ3MgZm9yIHRoZSBORU1DIGV4dGVybmFsIG1lbW9yeQorY29udHJvbGxlciBpbiBJbmdlbmljIEpaNDc4MAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgc2V0IHRvIG9uZSBvZjoKKyAgICAiaW5nZW5pYyxqejQ3ODAtbmVtYyIgKEpaNDc4MCkKKy0gcmVnOiBTaG91bGQgc3BlY2lmeSB0aGUgTkVNQyBjb250cm9sbGVyIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoLgorLSBjbG9ja3M6IENsb2NrIGZvciB0aGUgTkVNQyBjb250cm9sbGVyLgorLSAjYWRkcmVzcy1jZWxsczogTXVzdCBiZSBzZXQgdG8gMi4KKy0gI3NpemUtY2VsbHM6IE11c3QgYmUgc2V0IHRvIDEuCistIHJhbmdlczogQSBzZXQgb2YgcmFuZ2VzIGZvciBlYWNoIGJhbmsgZGVzY3JpYmluZyB0aGUgcGh5c2ljYWwgbWVtb3J5IGxheW91dC4KKyAgRWFjaCBzaG91bGQgc3BlY2lmeSB0aGUgZm9sbG93aW5nIDQgaW50ZWdlciB2YWx1ZXM6CisKKyAgICA8Y3MgbnVtYmVyPiAwIDxwaHlzaWNhbCBhZGRyZXNzIG9mIG1hcHBpbmc+IDxzaXplIG9mIG1hcHBpbmc+CisKK0VhY2ggY2hpbGQgb2YgdGhlIE5FTUMgbm9kZSBkZXNjcmliZXMgYSBkZXZpY2UgY29ubmVjdGVkIHRvIHRoZSBORU1DLgorCitSZXF1aXJlZCBjaGlsZCBub2RlIHByb3BlcnRpZXM6CistIHJlZzogU2hvdWxkIGNvbnRhaW4gYXQgbGVhc3Qgb25lIHJlZ2lzdGVyIHNwZWNpZmllciwgZ2l2ZW4gaW4gdGhlIGZvbGxvd2luZworICBmb3JtYXQ6CisKKyAgICA8Y3MgbnVtYmVyPiA8b2Zmc2V0PiA8c2l6ZT4KKworICBNdWx0aXBsZSByZWdpc3RlcnMgY2FuIGJlIHNwZWNpZmllZCBhY3Jvc3MgbXVsdGlwbGUgYmFua3MuIFRoaXMgaXMgbmVlZGVkLAorICBmb3IgZXhhbXBsZSwgZm9yIHBhY2thZ2VkIE5BTkQgZGV2aWNlcyB3aXRoIG11bHRpcGxlIGRpZXMuIFN1Y2ggZGV2aWNlcworICBzaG91bGQgYmUgZ3JvdXBlZCBpbnRvIGEgc2luZ2xlIG5vZGUuCisKK09wdGlvbmFsIGNoaWxkIG5vZGUgcHJvcGVydGllczoKKy0gaW5nZW5pYyxuZW1jLWJ1cy13aWR0aDogU3BlY2lmaWVzIHRoZSBidXMgd2lkdGggaW4gYml0cy4gRGVmYXVsdHMgdG8gOCBiaXRzLgorLSBpbmdlbmljLG5lbWMtdEFTOiBBZGRyZXNzIHNldHVwIHRpbWUgaW4gbmFub3NlY29uZHMuCistIGluZ2VuaWMsbmVtYy10QUg6IEFkZHJlc3MgaG9sZCB0aW1lIGluIG5hbm9zZWNvbmRzLgorLSBpbmdlbmljLG5lbWMtdEJQOiBCdXJzdCBwaXRjaCB0aW1lIGluIG5hbm9zZWNvbmRzLgorLSBpbmdlbmljLG5lbWMtdEFXOiBBY2Nlc3Mgd2FpdCB0aW1lIGluIG5hbm9zZWNvbmRzLgorLSBpbmdlbmljLG5lbWMtdFNUUlY6IFN0YXRpYyBtZW1vcnkgcmVjb3ZlcnkgdGltZSBpbiBuYW5vc2Vjb25kcy4KKworSWYgYSBjaGlsZCBub2RlIHJlZmVyZW5jZXMgbXVsdGlwbGUgYmFua3MgaW4gaXRzICJyZWciIHByb3BlcnR5LCB0aGUgc2FtZSB2YWx1ZQorZm9yIGFsbCBvcHRpb25hbCBwYXJhbWV0ZXJzIHdpbGwgYmUgY29uZmlndXJlZCBmb3IgYWxsIGJhbmtzLiBJZiBhbnkgb3B0aW9uYWwKK3BhcmFtZXRlcnMgYXJlIG9taXR0ZWQsIHRoZXkgd2lsbCBiZSBsZWZ0IHVuY2hhbmdlZCBmcm9tIHdoYXRldmVyIHRoZXkgYXJlCitjb25maWd1cmVkIHRvIHdoZW4gdGhlIE5FTUMgZGV2aWNlIGlzIHByb2JlZCAod2hpY2ggbWF5IGJlIHRoZSByZXNldCB2YWx1ZSBhcworZ2l2ZW4gaW4gdGhlIGhhcmR3YXJlIHJlZmVyZW5jZSBtYW51YWwsIG9yIGEgdmFsdWUgY29uZmlndXJlZCBieSB0aGUgYm9vdAorbG9hZGVyKS4KKworRXhhbXBsZSAoTkVNQyBub2RlIHdpdGggYSBOQU5EIGNoaWxkIGRldmljZSBhdHRhY2hlZCBhdCBDUzEpOgorCituZW1jOiBuZW1jQDEzNDEwMDAwIHsKKwljb21wYXRpYmxlID0gImluZ2VuaWMsano0NzgwLW5lbWMiOworCXJlZyA9IDwweDEzNDEwMDAwIDB4MTAwMDA+OworCisJI2FkZHJlc3MtY2VsbHMgPSA8Mj47CisJI3NpemUtY2VsbHMgPSA8MT47CisKKwlyYW5nZXMgPSA8MSAwIDB4MWIwMDAwMDAgMHgxMDAwMDAwCisJCSAgMiAwIDB4MWEwMDAwMDAgMHgxMDAwMDAwCisJCSAgMyAwIDB4MTkwMDAwMDAgMHgxMDAwMDAwCisJCSAgNCAwIDB4MTgwMDAwMDAgMHgxMDAwMDAwCisJCSAgNSAwIDB4MTcwMDAwMDAgMHgxMDAwMDAwCisJCSAgNiAwIDB4MTYwMDAwMDAgMHgxMDAwMDAwPjsKKworCWNsb2NrcyA9IDwmY2d1IEpaNDc4MF9DTEtfTkVNQz47CisKKwluYW5kOiBuYW5kQDEgeworCQljb21wYXRpYmxlID0gImluZ2VuaWMsano0NzgwLW5hbmQiOworCQlyZWcgPSA8MSAwIDB4MTAwMDAwMD47CisKKwkJaW5nZW5pYyxuZW1jLXRBUyA9IDwxMD47CisJCWluZ2VuaWMsbmVtYy10QUggPSA8NT47CisJCWluZ2VuaWMsbmVtYy10QlAgPSA8MTA+OworCQlpbmdlbmljLG5lbWMtdEFXID0gPDE1PjsKKwkJaW5nZW5pYyxuZW1jLXRTVFJWID0gPDEwMD47CisKKwkJLi4uCisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJzL212ZWJ1LWRldmJ1cy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJzL212ZWJ1LWRldmJ1cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWVlM2JjMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZW1vcnktY29udHJvbGxlcnMvbXZlYnUtZGV2YnVzLnR4dApAQCAtMCwwICsxLDE3OCBAQAorRGV2aWNlIHRyZWUgYmluZGluZ3MgZm9yIE1WRUJVIERldmljZSBCdXMgY29udHJvbGxlcnMKKworVGhlIERldmljZSBCdXMgY29udHJvbGxlciBhdmFpbGFibGUgaW4gc29tZSBNYXJ2ZWxsJ3MgU29DIGFsbG93cyB0byBjb250cm9sCitkaWZmZXJlbnQgdHlwZXMgb2Ygc3RhbmRhcmQgbWVtb3J5IGFuZCBJL08gZGV2aWNlcyBzdWNoIGFzIE5PUiwgTkFORCwgYW5kIEZQR0EuCitUaGUgYWN0dWFsIGRldmljZXMgYXJlIGluc3RhbnRpYXRlZCBmcm9tIHRoZSBjaGlsZCBub2RlcyBvZiBhIERldmljZSBCdXMgbm9kZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworIC0gY29tcGF0aWJsZTogICAgICAgICAgQXJtYWRhIDM3MC9YUCBTb0MgYXJlIHN1cHBvcnRlZCB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICJtYXJ2ZWxsLG12ZWJ1LWRldmJ1cyIgY29tcGF0aWJsZSBzdHJpbmcuCisKKyAgICAgICAgICAgICAgICAgICAgICAgIE9yaW9uNXggU29DIGFyZSBzdXBwb3J0ZWQgdXNpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAibWFydmVsbCxvcmlvbi1kZXZidXMiIGNvbXBhdGlibGUgc3RyaW5nLgorCisgLSByZWc6ICAgICAgICAgICAgICAgICBBIHJlc291cmNlIHNwZWNpZmllciBmb3IgdGhlIHJlZ2lzdGVyIHNwYWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyB0aGUgYmFzZSBhZGRyZXNzIG9mIGEgY2hpcCBzZWxlY3Qgd2l0aGluCisJCQl0aGUgY29udHJvbGxlcidzIHJlZ2lzdGVyIHNwYWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgKHNlZSB0aGUgZXhhbXBsZSBiZWxvdykKKworIC0gI2FkZHJlc3MtY2VsbHM6ICAgICAgTXVzdCBiZSBzZXQgdG8gMQorIC0gI3NpemUtY2VsbHM6ICAgICAgICAgTXVzdCBiZSBzZXQgdG8gMQorIC0gcmFuZ2VzOiAgICAgICAgICAgICAgTXVzdCBiZSBzZXQgdXAgdG8gcmVmbGVjdCB0aGUgbWVtb3J5IGxheW91dCB3aXRoIGZvdXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVnZXIgdmFsdWVzIGZvciBlYWNoIGNoaXAtc2VsZWN0IGxpbmUgaW4gdXNlOgorICAgICAgICAgICAgICAgICAgICAgICAgMCA8cGh5c2ljYWwgYWRkcmVzcyBvZiBtYXBwaW5nPiA8c2l6ZT4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworIC0gZGV2YnVzLGtlZXAtY29uZmlnICAgVGhpcyBwcm9wZXJ0eSBjYW4gb3B0aW9uYWxseSBiZSB1c2VkIHRvIGtlZXAKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSB0aW1pbmcgcGFyYW1ldGVycyBzZXQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBib290bG9hZGVyLiBJdCBtYWtlcyBhbGwgdGhlIHRpbWluZyBwcm9wZXJ0aWVzCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmliZWQgYmVsb3cgdW51c2VkLgorCitUaW1pbmcgcHJvcGVydGllcyBmb3IgY2hpbGQgbm9kZXM6CisKK1JlYWQgcGFyYW1ldGVyczoKKworIC0gZGV2YnVzLHR1cm4tb2ZmLXBzOiAgRGVmaW5lcyB0aGUgdGltZSBkdXJpbmcgd2hpY2ggdGhlIGNvbnRyb2xsZXIgZG9lcyBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlIHRoZSBBRCBidXMgYWZ0ZXIgdGhlIGNvbXBsZXRpb24gb2YgYSBkZXZpY2UgcmVhZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcHJldmVudHMgY29udGVudGlvbnMgb24gdGhlIERldmljZSBCdXMgYWZ0ZXIgYSByZWFkCisgICAgICAgICAgICAgICAgICAgICAgICBjeWNsZSBmcm9tIGEgc2xvdyBkZXZpY2UuCisgICAgICAgICAgICAgICAgICAgICAgICBNYW5kYXRvcnksIGV4Y2VwdCBpZiBkZXZidXMsa2VlcC1jb25maWcgaXMgdXNlZC4KKworIC0gZGV2YnVzLGJ1cy13aWR0aDogICAgRGVmaW5lcyB0aGUgYnVzIHdpZHRoLCBpbiBiaXRzIChlLmcuIDwxNj4pLgorICAgICAgICAgICAgICAgICAgICAgICAgTWFuZGF0b3J5LCBleGNlcHQgaWYgZGV2YnVzLGtlZXAtY29uZmlnIGlzIHVzZWQuCisKKyAtIGRldmJ1cyxiYWRyLXNrZXctcHM6IERlZmluZXMgdGhlIHRpbWUgZGVsYXkgZnJvbSBmcm9tIEFbMjowXSB0b2dnbGUsCisgICAgICAgICAgICAgICAgICAgICAgICB0byByZWFkIGRhdGEgc2FtcGxlLiBUaGlzIHBhcmFtZXRlciBpcyB1c2VmdWwgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICBzeW5jaHJvbm91cyBwaXBlbGluZWQgZGV2aWNlcywgd2hlcmUgdGhlIGFkZHJlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWNlZGVzIHRoZSByZWFkIGRhdGEgYnkgb25lIG9yIHR3byBjeWNsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBNYW5kYXRvcnksIGV4Y2VwdCBpZiBkZXZidXMsa2VlcC1jb25maWcgaXMgdXNlZC4KKworIC0gZGV2YnVzLGFjYy1maXJzdC1wczogRGVmaW5lcyB0aGUgdGltZSBkZWxheSBmcm9tIHRoZSBuZWdhdGlvbiBvZgorICAgICAgICAgICAgICAgICAgICAgICAgQUxFWzBdIHRvIHRoZSBjeWNsZSB0aGF0IHRoZSBmaXJzdCByZWFkIGRhdGEgaXMgc2FtcGxlZAorICAgICAgICAgICAgICAgICAgICAgICAgYnkgdGhlIGNvbnRyb2xsZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBNYW5kYXRvcnksIGV4Y2VwdCBpZiBkZXZidXMsa2VlcC1jb25maWcgaXMgdXNlZC4KKworIC0gZGV2YnVzLGFjYy1uZXh0LXBzOiAgRGVmaW5lcyB0aGUgdGltZSBkZWxheSBiZXR3ZWVuIHRoZSBjeWNsZSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVzIGRhdGEgTiBhbmQgdGhlIGN5Y2xlIHRoYXQgc2FtcGxlcyBkYXRhIE4rMQorICAgICAgICAgICAgICAgICAgICAgICAgKGluIGJ1cnN0IGFjY2Vzc2VzKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIE1hbmRhdG9yeSwgZXhjZXB0IGlmIGRldmJ1cyxrZWVwLWNvbmZpZyBpcyB1c2VkLgorCisgLSBkZXZidXMscmQtc2V0dXAtcHM6ICBEZWZpbmVzIHRoZSB0aW1lIGRlbGF5IGJldHdlZW4gREVWX0NTbiBhc3NlcnRpb24gdG8KKwkJCURFVl9PRW4gYXNzZXJ0aW9uLiBJZiBzZXQgdG8gMCAoZGVmYXVsdCksCisgICAgICAgICAgICAgICAgICAgICAgICBERVZfT0VuIGFuZCBERVZfQ1NuIGFyZSBhc3NlcnRlZCBhdCB0aGUgc2FtZSBjeWNsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGhhcyBubyBhZmZlY3Qgb24gPGFjYy1maXJzdC1wcz4gcGFyYW1ldGVyCisgICAgICAgICAgICAgICAgICAgICAgICAobm8gYWZmZWN0IG9uIGZpcnN0IGRhdGEgc2FtcGxlKS4gU2V0IDxyZC1zZXR1cC1wcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIGEgdmFsdWUgc21hbGxlciB0aGFuIDxhY2MtZmlyc3QtcHM+LgorICAgICAgICAgICAgICAgICAgICAgICAgTWFuZGF0b3J5IGZvciAibWFydmVsbCxtdmVidS1kZXZidXMiIGNvbXBhdGlibGUgc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IGlmIGRldmJ1cyxrZWVwLWNvbmZpZyBpcyB1c2VkLgorCisgLSBkZXZidXMscmQtaG9sZC1wczogICBEZWZpbmVzIHRoZSB0aW1lIGJldHdlZW4gdGhlIGxhc3QgZGF0YSBzYW1wbGUgdG8gdGhlCisJCQlkZS1hc3NlcnRpb24gb2YgREVWX0NTbi4gSWYgc2V0IHRvIDAgKGRlZmF1bHQpLAorCQkJREVWX09FbiBhbmQgREVWX0NTbiBhcmUgZGUtYXNzZXJ0ZWQgYXQgdGhlIHNhbWUgY3ljbGUKKwkJCSh0aGUgY3ljbGUgb2YgdGhlIGxhc3QgZGF0YSBzYW1wbGUpLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaGFzIG5vIGFmZmVjdCBvbiBERVZfT0VuIGRlLWFzc2VydGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIERFVl9PRW4gaXMgYWx3YXlzIGRlLWFzc2VydGVkIHRoZSBuZXh0IGN5Y2xlIGFmdGVyCisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IGRhdGEgc2FtcGxlZC4gQWxzbyB0aGlzIHBhcmFtZXRlciBoYXMgbm8KKyAgICAgICAgICAgICAgICAgICAgICAgIGFmZmVjdCBvbiA8dHVybi1vZmYtcHM+IHBhcmFtZXRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNldCA8cmQtaG9sZC1wcz4gdG8gYSB2YWx1ZSBzbWFsbGVyIHRoYW4gPHR1cm4tb2ZmLXBzPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIE1hbmRhdG9yeSBmb3IgIm1hcnZlbGwsbXZlYnUtZGV2YnVzIiBjb21wYXRpYmxlIHN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBpZiBkZXZidXMsa2VlcC1jb25maWcgaXMgdXNlZC4KKworV3JpdGUgcGFyYW1ldGVyczoKKworIC0gZGV2YnVzLGFsZS13ci1wczogICAgRGVmaW5lcyB0aGUgdGltZSBkZWxheSBmcm9tIHRoZSBBTEVbMF0gbmVnYXRpb24gY3ljbGUKKwkJCXRvIHRoZSBERVZfV0VuIGFzc2VydGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIE1hbmRhdG9yeS4KKworIC0gZGV2YnVzLHdyLWxvdy1wczogICAgRGVmaW5lcyB0aGUgdGltZSBkdXJpbmcgd2hpY2ggREVWX1dFbiBpcyBhY3RpdmUuCisgICAgICAgICAgICAgICAgICAgICAgICBBWzI6MF0gYW5kIERhdGEgYXJlIGtlcHQgdmFsaWQgYXMgbG9uZyBhcyBERVZfV0VuCisgICAgICAgICAgICAgICAgICAgICAgICBpcyBhY3RpdmUuIFRoaXMgcGFyYW1ldGVyIGRlZmluZXMgdGhlIHNldHVwIHRpbWUgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MgYW5kIGRhdGEgdG8gREVWX1dFbiByaXNlLgorICAgICAgICAgICAgICAgICAgICAgICAgTWFuZGF0b3J5LgorCisgLSBkZXZidXMsd3ItaGlnaC1wczogICBEZWZpbmVzIHRoZSB0aW1lIGR1cmluZyB3aGljaCBERVZfV0VuIGlzIGtlcHQKKyAgICAgICAgICAgICAgICAgICAgICAgIGluYWN0aXZlIChoaWdoKSBiZXR3ZWVuIGRhdGEgYmVhdHMgb2YgYSBidXJzdCB3cml0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIERFVl9BWzI6MF0gYW5kIERhdGEgYXJlIGtlcHQgdmFsaWQgKGRvIG5vdCB0b2dnbGUpIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgPHdyLWhpZ2gtcHM+IC0gPHRpY2s+IHBzLgorCQkJVGhpcyBwYXJhbWV0ZXIgZGVmaW5lcyB0aGUgaG9sZCB0aW1lIG9mIGFkZHJlc3MgYW5kCisJCQlkYXRhIGFmdGVyIERFVl9XRW4gcmlzZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIE1hbmRhdG9yeS4KKworIC0gZGV2YnVzLHN5bmMtZW5hYmxlOiBTeW5jaHJvbm91cyBkZXZpY2UgZW5hYmxlLgorICAgICAgICAgICAgICAgICAgICAgICAxOiBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgIDA6IEZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgIE1hbmRhdG9yeSBmb3IgIm1hcnZlbGwsbXZlYnUtZGV2YnVzIiBjb21wYXRpYmxlIHN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IGlmIGRldmJ1cyxrZWVwLWNvbmZpZyBpcyB1c2VkLgorCitBbiBleGFtcGxlIGZvciBhbiBBcm1hZGEgWFAgR1AgYm9hcmQsIHdpdGggYSAxNiBNaUIgTk9SIGRldmljZSBhcyBjaGlsZAoraXMgc2hvd2VkIGJlbG93LiBOb3RlIHRoYXQgdGhlIERldmljZSBCdXMgZHJpdmVyIGlzIGluIGNoYXJnZSBvZiBhbGxvY2F0aW5nCit0aGUgbWJ1cyBhZGRyZXNzIGRlY29kaW5nIHdpbmRvdyBmb3IgZWFjaCBvZiBpdHMgY2hpbGQgZGV2aWNlcy4KK1RoZSB3aW5kb3cgaXMgY3JlYXRlZCB1c2luZyB0aGUgY2hpcCBzZWxlY3Qgc3BlY2lmaWVkIGluIHRoZSBjaGlsZAorZGV2aWNlIG5vZGUgdG9nZXRoZXIgd2l0aCB0aGUgYmFzZSBhZGRyZXNzIGFuZCBzaXplIHNwZWNpZmllZCBpbiB0aGUgcmFuZ2VzCitwcm9wZXJ0eS4gRm9yIGluc3RhbmNlLCBpbiB0aGUgZXhhbXBsZSBiZWxvdyB0aGUgYWxsb2NhdGVkIGRlY29kaW5nIHdpbmRvdword2lsbCBzdGFydCBhdCBiYXNlIGFkZHJlc3MgMHhmMDAwMDAwMCwgd2l0aCBhIHNpemUgMHgxMDAwMDAwICgxNiBNaUIpCitmb3IgY2hpcCBzZWxlY3QgMCAoYS5rLmEgREVWX0JPT1RDUykuCisKK1RoaXMgYWRkcmVzcyB3aW5kb3cgaGFuZGxpbmcgaXMgZG9uZSBpbiB0aGlzIG12ZWJ1LWRldmJ1cyBvbmx5IGFzIGEgdGVtcG9yYXJ5Citzb2x1dGlvbi4gSXQgd2lsbCBiZSByZW1vdmVkIHdoZW4gdGhlIHN1cHBvcnQgZm9yIG1idXMgZGV2aWNlIHRyZWUgYmluZGluZyBpcworYWRkZWQuCisKK1RoZSByZWcgcHJvcGVydHkgaW1wbGljaXRseSBzcGVjaWZpZXMgdGhlIGNoaXAgc2VsZWN0IGFzIHRoaXM6CisKKyAgMHgxMDQwMDogREVWX0JPT1RDUworICAweDEwNDA4OiBERVZfQ1MwCisgIDB4MTA0MTA6IERFVl9DUzEKKyAgMHgxMDQxODogREVWX0NTMgorICAweDEwNDIwOiBERVZfQ1MzCisKK0V4YW1wbGU6CisKKwlkZXZidXMtYm9vdGNzQGQwMDEwNDAwIHsKKwkJc3RhdHVzID0gIm9rYXkiOworCQlyYW5nZXMgPSA8MCAweGYwMDAwMDAwIDB4MTAwMDAwMD47IC8qIEBhZGRyIDB4ZjAwMDAwMDAsIHNpemUgMHgxMDAwMDAwICovCisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKworCQkvKiBEZXZpY2UgQnVzIHBhcmFtZXRlcnMgYXJlIHJlcXVpcmVkICovCisKKwkJLyogUmVhZCBwYXJhbWV0ZXJzICovCisJCWRldmJ1cyxidXMtd2lkdGggICAgPSA8OD47CisJCWRldmJ1cyx0dXJuLW9mZi1wcyAgPSA8NjAwMDA+OworCQlkZXZidXMsYmFkci1za2V3LXBzID0gPDA+OworCQlkZXZidXMsYWNjLWZpcnN0LXBzID0gPDEyNDAwMD47CisJCWRldmJ1cyxhY2MtbmV4dC1wcyAgPSA8MjQ4MDAwPjsKKwkJZGV2YnVzLHJkLXNldHVwLXBzICA9IDwwPjsKKwkJZGV2YnVzLHJkLWhvbGQtcHMgICA9IDwwPjsKKworCQkvKiBXcml0ZSBwYXJhbWV0ZXJzICovCisJCWRldmJ1cyxzeW5jLWVuYWJsZSA9IDwwPjsKKwkJZGV2YnVzLHdyLWhpZ2gtcHMgID0gPDYwMDAwPjsKKwkJZGV2YnVzLHdyLWxvdy1wcyAgID0gPDYwMDAwPjsKKwkJZGV2YnVzLGFsZS13ci1wcyAgID0gPDYwMDAwPjsKKworCQlmbGFzaEAwIHsKKwkJCWNvbXBhdGlibGUgPSAiY2ZpLWZsYXNoIjsKKworCQkJLyogMTYgTWlCICovCisJCQlyZWcgPSA8MCAweDEwMDAwMDA+OworCQkJYmFuay13aWR0aCA9IDwyPjsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MT47CisKKwkJCS8qCisJCQkgKiBXZSBzcGxpdCB0aGUgMTYgTWlCIGluIHR3byBwYXJ0aXRpb25zLAorCQkJICoganVzdCBhcyBhbiBleGFtcGxlLgorCQkJICovCisJCQlwYXJ0aXRpb25AMCB7CisJCQkJbGFiZWwgPSAiRmlyc3QiOworCQkJCXJlZyA9IDwwIDB4ODAwMDAwPjsKKwkJCX07CisKKwkJCXBhcnRpdGlvbkA4MDAwMDAgeworCQkJCWxhYmVsID0gIlNlY29uZCI7CisJCQkJcmVnID0gPDB4ODAwMDAwIDB4ODAwMDAwPjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZW1vcnktY29udHJvbGxlcnMvbXZlYnUtc2RyYW0tY29udHJvbGxlci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJzL212ZWJ1LXNkcmFtLWNvbnRyb2xsZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5NjU3ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJzL212ZWJ1LXNkcmFtLWNvbnRyb2xsZXIudHh0CkBAIC0wLDAgKzEsMjEgQEAKK0RldmljZSBUcmVlIGJpbmRpbmdzIGZvciBNVkVCVSBTRFJBTSBjb250cm9sbGVycworCitUaGUgTWFydmVsbCBFQlUgU29DcyBhbGwgaGF2ZSBhIFNEUkFNIGNvbnRyb2xsZXIuIFRoZSBTRFJBTSBjb250cm9sbGVyCitkaWZmZXJzIGZyb20gb25lIFNvQyB2YXJpYW50IHRvIGFub3RoZXIsIGJ1dCB0aGV5IGFsc28gc2hhcmUgYSBudW1iZXIKK29mIGNvbW1vbmFsaXRpZXMuCisKK0ZvciBub3csIHRoaXMgRGV2aWNlIFRyZWUgYmluZGluZyBkb2N1bWVudGF0aW9uIG9ubHkgZG9jdW1lbnRzIHRoZQorQXJtYWRhIFhQIFNEUkFNIGNvbnRyb2xsZXIuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAtIGNvbXBhdGlibGU6IGZvciBBcm1hZGEgWFAsICJtYXJ2ZWxsLGFybWFkYS14cC1zZHJhbS1jb250cm9sbGVyIgorIC0gcmVnOiBhIHJlc291cmNlIHNwZWNpZmllciBmb3IgdGhlIHJlZ2lzdGVyIHNwYWNlLCB3aGljaCBzaG91bGQKKyAgIGluY2x1ZGUgYWxsIFNEUkFNIGNvbnRyb2xsZXIgcmVnaXN0ZXJzIGFzIHBlciB0aGUgZGF0YXNoZWV0LgorCitFeGFtcGxlOgorCitzZHJhbWNAMTQwMCB7CisJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLGFybWFkYS14cC1zZHJhbS1jb250cm9sbGVyIjsKKwlyZWcgPSA8MHgxNDAwIDB4NTAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJzL252aWRpYSx0ZWdyYS1tYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJzL252aWRpYSx0ZWdyYS1tYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzMzOGEyOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZW1vcnktY29udHJvbGxlcnMvbnZpZGlhLHRlZ3JhLW1jLnR4dApAQCAtMCwwICsxLDExNiBAQAorTlZJRElBIFRlZ3JhIE1lbW9yeSBDb250cm9sbGVyIGRldmljZSB0cmVlIGJpbmRpbmdzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworbWVtb3J5LWNvbnRyb2xsZXIgbm9kZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgIm52aWRpYSx0ZWdyYTxjaGlwPi1tYyIKKy0gcmVnOiBQaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgY29udHJvbGxlcidzIHJlZ2lzdGVycy4KKy0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCisgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorLSBjbG9jay1uYW1lczogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgLSBtYzogdGhlIG1vZHVsZSdzIGNsb2NrIGlucHV0CistIGludGVycnVwdHM6IFRoZSBpbnRlcnJ1cHQgb3V0cHV0cyBmcm9tIHRoZSBjb250cm9sbGVyLgorLSAjaW9tbXUtY2VsbHM6IFNob3VsZCBiZSAxLiBUaGUgc2luZ2xlIGNlbGwgb2YgdGhlIElPTU1VIHNwZWNpZmllciBkZWZpbmVzCisgIHRoZSBTV0dST1VQIG9mIHRoZSBtYXN0ZXIuCisKK1RoaXMgZGV2aWNlIGltcGxlbWVudHMgYW4gSU9NTVUgdGhhdCBjb21wbGllcyB3aXRoIHRoZSBnZW5lcmljIElPTU1VIGJpbmRpbmcuCitTZWUgLi4vaW9tbXUvaW9tbXUudHh0IGZvciBkZXRhaWxzLgorCitlbWMtdGltaW5ncyBzdWJub2RlCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBub2RlIHNob3VsZCBjb250YWluIGEgImVtYy10aW1pbmdzIiBzdWJub2RlIGZvciBlYWNoIHN1cHBvcnRlZCBSQU0gdHlwZSAoc2VlIGZpZWxkIFJBTV9DT0RFIGluCityZWdpc3RlciBQTUNfU1RSQVBQSU5HX09QVF9BKS4KKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgImVtYy10aW1pbmdzIiBub2RlcyA6CistIG52aWRpYSxyYW0tY29kZSA6IFNob3VsZCBjb250YWluIHRoZSB2YWx1ZSBvZiBSQU1fQ09ERSB0aGlzIHRpbWluZyBzZXQgaXMgdXNlZCBmb3IuCisKK3RpbWluZyBzdWJub2RlCistLS0tLS0tLS0tLS0tLQorCitFYWNoICJlbWMtdGltaW5ncyIgbm9kZSBzaG91bGQgY29udGFpbiBhIHN1Ym5vZGUgZm9yIGV2ZXJ5IHN1cHBvcnRlZCBFTUMgY2xvY2sgcmF0ZS4KKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgdGltaW5nIG5vZGVzIDoKKy0gY2xvY2stZnJlcXVlbmN5IDogU2hvdWxkIGNvbnRhaW4gdGhlIG1lbW9yeSBjbG9jayByYXRlIGluIEh6LgorLSBudmlkaWEsZW1lbS1jb25maWd1cmF0aW9uIDogVmFsdWVzIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIEVNRU0gcmVnaXN0ZXIgYmxvY2suIEZvciB0aGUgVGVncmExMjQgU29DCisoc2VlIHNlY3Rpb24gIjE1LjYuMSBNQyBSZWdpc3RlcnMiIGluIHRoZSBUUk0pLCB0aGVzZSBhcmUgdGhlIHJlZ2lzdGVycyB3aG9zZSB2YWx1ZXMgbmVlZCB0byBiZQorc3BlY2lmaWVkLCBhY2NvcmRpbmcgdG8gdGhlIGJvYXJkIGRvY3VtZW50YXRpb246CisKKwlNQ19FTUVNX0FSQl9DRkcKKwlNQ19FTUVNX0FSQl9PVVRTVEFORElOR19SRVEKKwlNQ19FTUVNX0FSQl9USU1JTkdfUkNECisJTUNfRU1FTV9BUkJfVElNSU5HX1JQCisJTUNfRU1FTV9BUkJfVElNSU5HX1JDCisJTUNfRU1FTV9BUkJfVElNSU5HX1JBUworCU1DX0VNRU1fQVJCX1RJTUlOR19GQVcKKwlNQ19FTUVNX0FSQl9USU1JTkdfUlJECisJTUNfRU1FTV9BUkJfVElNSU5HX1JBUDJQUkUKKwlNQ19FTUVNX0FSQl9USU1JTkdfV0FQMlBSRQorCU1DX0VNRU1fQVJCX1RJTUlOR19SMlIKKwlNQ19FTUVNX0FSQl9USU1JTkdfVzJXCisJTUNfRU1FTV9BUkJfVElNSU5HX1IyVworCU1DX0VNRU1fQVJCX1RJTUlOR19XMlIKKwlNQ19FTUVNX0FSQl9EQV9UVVJOUworCU1DX0VNRU1fQVJCX0RBX0NPVkVSUworCU1DX0VNRU1fQVJCX01JU0MwCisJTUNfRU1FTV9BUkJfTUlTQzEKKwlNQ19FTUVNX0FSQl9SSU5HMV9USFJPVFRMRQorCitFeGFtcGxlIFNvQyBpbmNsdWRlIGZpbGU6CisKKy8geworCW1jOiBtZW1vcnktY29udHJvbGxlckAwLDcwMDE5MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJudmlkaWEsdGVncmExMjQtbWMiOworCQlyZWcgPSA8MHgwIDB4NzAwMTkwMDAgMHgwIDB4MTAwMD47CisJCWNsb2NrcyA9IDwmdGVncmFfY2FyIFRFR1JBMTI0X0NMS19NQz47CisJCWNsb2NrLW5hbWVzID0gIm1jIjsKKworCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgNzcgSVJRX1RZUEVfTEVWRUxfSElHSD47CisKKwkJI2lvbW11LWNlbGxzID0gPDE+OworCX07CisKKwlzZGhjaUAwLDcwMGIwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJudmlkaWEsdGVncmExMjQtc2RoY2kiOworCQkuLi4KKwkJaW9tbXVzID0gPCZtYyBURUdSQV9TV0dST1VQX1NETU1DMUE+OworCX07Cit9OworCitFeGFtcGxlIGJvYXJkIGZpbGU6CisKKy8geworCW1lbW9yeS1jb250cm9sbGVyQDAsNzAwMTkwMDAgeworCQllbWMtdGltaW5ncy0zIHsKKwkJCW52aWRpYSxyYW0tY29kZSA9IDwzPjsKKworCQkJdGltaW5nLTEyNzUwMDAwIHsKKwkJCQljbG9jay1mcmVxdWVuY3kgPSA8MTI3NTAwMDA+OworCisJCQkJbnZpZGlhLGVtZW0tY29uZmlndXJhdGlvbiA9IDwKKwkJCQkJMHg0MDA0MDAwMSAvKiBNQ19FTUVNX0FSQl9DRkcgKi8KKwkJCQkJMHg4MDAwMDAwYSAvKiBNQ19FTUVNX0FSQl9PVVRTVEFORElOR19SRVEgKi8KKwkJCQkJMHgwMDAwMDAwMSAvKiBNQ19FTUVNX0FSQl9USU1JTkdfUkNEICovCisJCQkJCTB4MDAwMDAwMDEgLyogTUNfRU1FTV9BUkJfVElNSU5HX1JQICovCisJCQkJCTB4MDAwMDAwMDIgLyogTUNfRU1FTV9BUkJfVElNSU5HX1JDICovCisJCQkJCTB4MDAwMDAwMDAgLyogTUNfRU1FTV9BUkJfVElNSU5HX1JBUyAqLworCQkJCQkweDAwMDAwMDAyIC8qIE1DX0VNRU1fQVJCX1RJTUlOR19GQVcgKi8KKwkJCQkJMHgwMDAwMDAwMSAvKiBNQ19FTUVNX0FSQl9USU1JTkdfUlJEICovCisJCQkJCTB4MDAwMDAwMDIgLyogTUNfRU1FTV9BUkJfVElNSU5HX1JBUDJQUkUgKi8KKwkJCQkJMHgwMDAwMDAwOCAvKiBNQ19FTUVNX0FSQl9USU1JTkdfV0FQMlBSRSAqLworCQkJCQkweDAwMDAwMDAzIC8qIE1DX0VNRU1fQVJCX1RJTUlOR19SMlIgKi8KKwkJCQkJMHgwMDAwMDAwMiAvKiBNQ19FTUVNX0FSQl9USU1JTkdfVzJXICovCisJCQkJCTB4MDAwMDAwMDMgLyogTUNfRU1FTV9BUkJfVElNSU5HX1IyVyAqLworCQkJCQkweDAwMDAwMDA2IC8qIE1DX0VNRU1fQVJCX1RJTUlOR19XMlIgKi8KKwkJCQkJMHgwNjAzMDIwMyAvKiBNQ19FTUVNX0FSQl9EQV9UVVJOUyAqLworCQkJCQkweDAwMGEwNDAyIC8qIE1DX0VNRU1fQVJCX0RBX0NPVkVSUyAqLworCQkJCQkweDc3ZTMwMzAzIC8qIE1DX0VNRU1fQVJCX01JU0MwICovCisJCQkJCTB4NzAwMDBmMDMgLyogTUNfRU1FTV9BUkJfTUlTQzEgKi8KKwkJCQkJMHgwMDFmMDAwMCAvKiBNQ19FTUVNX0FSQl9SSU5HMV9USFJPVFRMRSAqLworCQkJCT47CisJCQl9OworCQl9OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lbW9yeS1jb250cm9sbGVycy9yZW5lc2FzLGg4MzAwLWJzYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJzL3JlbmVzYXMsaDgzMDAtYnNjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGY0MDZjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lbW9yeS1jb250cm9sbGVycy9yZW5lc2FzLGg4MzAwLWJzYy50eHQKQEAgLTAsMCArMSwxMiBAQAorKiBIOC8zMDAgYnVzIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiBNdXN0IGJlICJyZW5lc2FzLGg4MzAwLWJzYyIuCisgIC0gcmVnOiBCYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiBCU0MgcmVnaXN0ZXJzLgorCitFeGFtcGxlLgorCWJzYzogbWVtb3J5LWNvbnRyb2xsZXJAZmVlMDFlIHsKKwkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLGg4MzAwaC1ic2MiLCAicmVuZXNhcyxoODMwMC1ic2MiOworCQlyZWcgPSA8MHhmZWUwMWUgOD47CisJfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lbW9yeS1jb250cm9sbGVycy9yZW5lc2FzLW1lbW9yeS1jb250cm9sbGVycy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJzL3JlbmVzYXMtbWVtb3J5LWNvbnRyb2xsZXJzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Zjc4ZTZjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lbW9yeS1jb250cm9sbGVycy9yZW5lc2FzLW1lbW9yeS1jb250cm9sbGVycy50eHQKQEAgLTAsMCArMSw0NCBAQAorRFQgYmluZGluZ3MgZm9yIFJlbmVzYXMgUi1Nb2JpbGUgYW5kIFNILU1vYmlsZSBtZW1vcnkgY29udHJvbGxlcnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbmVzYXMgUi1Nb2JpbGUgYW5kIFNILU1vYmlsZSBTb0NzIGNvbnRhaW4gb25lIG9yIG1vcmUgbWVtb3J5IGNvbnRyb2xsZXJzLgorVGhlc2UgbWVtb3J5IGNvbnRyb2xsZXJzIGRpZmZlciBmcm9tIG9uZSBTb0MgdmFyaWFudCB0byBhbm90aGVyLCBhbmQgYXJlIGNhbGxlZAorYnkgZGlmZmVyZW50IG5hbWVzICgiRERSIEJ1cyBDb250cm9sbGVyIChEQlNDKSIsICJERFIzIEJ1cyBTdGF0ZSBDb250cm9sbGVyCisoREJTQzMpIiwgIlNEUkFNIEJ1cyBTdGF0ZSBDb250cm9sbGVyIChTQlNDKSIpLgorCitDdXJyZW50bHkgbWVtb3J5IGNvbnRyb2xsZXIgZGV2aWNlIG5vZGVzIGFyZSB1c2VkIG9ubHkgdG8gcmVmZXJlbmNlIFBNCitkb21haW5zLCBhbmQgcHJldmVudCB0aGVzZSBQTSBkb21haW5zIGZyb20gYmVpbmcgcG93ZXJlZCBkb3duLCB3aGljaCB3b3VsZAorY3Jhc2ggdGhlIHN5c3RlbS4KKworQXMgdGhlcmUgZXhpc3Qgbm8gYWN0dWFsIGRyaXZlcnMgZm9yIHRoZXNlIGNvbnRyb2xsZXJzIHlldCwgdGhlc2UgYmluZGluZ3MKK3Nob3VsZCBiZSBjb25zaWRlcmVkIEVYUEVSSU1FTlRBTCBmb3Igbm93LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6IE11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgU29DLXNwZWNpZmljIHZhbHVlczoKKwkJICAtICJyZW5lc2FzLGRic2MtcjhhNzNhNCIgKFItTW9iaWxlIEFQRTYpCisJCSAgLSAicmVuZXNhcyxkYnNjMy1yOGE3NzQwIiAoUi1Nb2JpbGUgQTEpCisJCSAgLSAicmVuZXNhcyxzYnNjLXNoNzNhMCIgKFNILU1vYmlsZSBBRzUpCisgIC0gcmVnOiBNdXN0IGNvbnRhaW4gdGhlIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBtZW1vcnkgY29udHJvbGxlcidzCisJIHJlZ2lzdGVycy4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAgLSBpbnRlcnJ1cHRzOiBNdXN0IGNvbnRhaW4gYSBsaXN0IG9mIGludGVycnVwdCBzcGVjaWZpZXJzIGZvciBtZW1vcnkKKwkJY29udHJvbGxlciBpbnRlcnJ1cHRzLCBpZiBhdmFpbGFibGUuCisgIC0gaW50ZXJydXB0LW5hbWVzOiBNdXN0IGNvbnRhaW4gYSBsaXN0IG9mIGludGVycnVwdCBuYW1lcyBjb3JyZXNwb25kaW5nIHRvCisJCSAgICAgdGhlIGludGVycnVwdHMgaW4gdGhlIGludGVycnVwdHMgcHJvcGVydHksIGlmIGF2YWlsYWJsZS4KKwkJICAgICBWYWxpZCBpbnRlcnJ1cHQgbmFtZXMgYXJlOgorCQkJLSAic2VjIiAoc2VjdXJlIGludGVycnVwdCkKKwkJCS0gInRlbXAiIChub3JtYWwgKHRlbXBlcmF0dXJlKSBpbnRlcnJ1cHQpCisgIC0gcG93ZXItZG9tYWluczogTXVzdCBjb250YWluIGEgcmVmZXJlbmNlIHRvIHRoZSBQTSBkb21haW4gdGhhdCB0aGUgbWVtb3J5CisJCSAgIGNvbnRyb2xsZXIgYmVsb25ncyB0bywgaWYgYXZhaWxhYmxlLgorCitFeGFtcGxlOgorCisJc2JzYzE6IG1lbW9yeS1jb250cm9sbGVyQGZlNDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLHNic2Mtc2g3M2EwIjsKKwkJcmVnID0gPDB4ZmU0MDAwMDAgMHg0MDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMzUgSVJRX1RZUEVfTEVWRUxfSElHSD4sCisJCQkgICAgIDwwIDM2IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQlpbnRlcnJ1cHQtbmFtZXMgPSAic2VjIiwgInRlbXAiOworCQlwb3dlci1kb21haW5zID0gPCZwZF9hNGJjMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZW1vcnktY29udHJvbGxlcnMvc3lub3BzeXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lbW9yeS1jb250cm9sbGVycy9zeW5vcHN5cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQzZDI2ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZW1vcnktY29udHJvbGxlcnMvc3lub3BzeXMudHh0CkBAIC0wLDAgKzEsMTUgQEAKK0JpbmRpbmcgZm9yIFN5bm9wc3lzIEludGVsbGlERFIgTXVsdGkgUHJvdG9jb2wgTWVtb3J5IENvbnRyb2xsZXIKKworVGhpcyBjb250cm9sbGVyIGhhcyBhbiBvcHRpb25hbCBFQ0Mgc3VwcG9ydCBpbiBoYWxmLWJ1cyB3aWR0aCAoMTYtYml0KQorY29uZmlndXJhdGlvbi4gVGhlIEVDQyBjb250cm9sbGVyIGNvcnJlY3RzIG9uZSBiaXQgZXJyb3IgYW5kIGRldGVjdHMKK3R3byBiaXQgZXJyb3JzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZTogU2hvdWxkIGJlICd4bG54LHp5bnEtZGRyYy1hMDUnCisgLSByZWc6IEJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgY29udHJvbGxlcnMgbWVtb3J5IGFyZWEKKworRXhhbXBsZToKKwltZW1vcnktY29udHJvbGxlckBmODAwNjAwMCB7CisJCWNvbXBhdGlibGUgPSAieGxueCx6eW5xLWRkcmMtYTA1IjsKKwkJcmVnID0gPDB4ZjgwMDYwMDAgMHgxMDAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lbW9yeS1jb250cm9sbGVycy90ZWdyYS1lbWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lbW9yeS1jb250cm9sbGVycy90ZWdyYS1lbWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1OWM2MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJzL3RlZ3JhLWVtYy50eHQKQEAgLTAsMCArMSwzNzQgQEAKK05WSURJQSBUZWdyYTEyNCBTb0MgRU1DIChleHRlcm5hbCBtZW1vcnkgY29udHJvbGxlcikKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVxdWlyZWQgcHJvcGVydGllcyA6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgIm52aWRpYSx0ZWdyYTEyNC1lbWMiLgorLSByZWcgOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgY29udHJvbGxlcidzIHJlZ2lzdGVycy4KKy0gbnZpZGlhLG1lbW9yeS1jb250cm9sbGVyIDogcGhhbmRsZSBvZiB0aGUgTUMgZHJpdmVyLgorCitUaGUgbm9kZSBzaG91bGQgY29udGFpbiBhICJlbWMtdGltaW5ncyIgc3Vibm9kZSBmb3IgZWFjaCBzdXBwb3J0ZWQgUkFNIHR5cGUKKyhzZWUgZmllbGQgUkFNX0NPREUgaW4gcmVnaXN0ZXIgUE1DX1NUUkFQUElOR19PUFRfQSksIHdpdGggaXRzIHVuaXQgYWRkcmVzcworYmVpbmcgaXRzIFJBTV9DT0RFLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciAiZW1jLXRpbWluZ3MiIG5vZGVzIDoKKy0gbnZpZGlhLHJhbS1jb2RlIDogU2hvdWxkIGNvbnRhaW4gdGhlIHZhbHVlIG9mIFJBTV9DT0RFIHRoaXMgdGltaW5nIHNldCBpcwordXNlZCBmb3IuCisKK0VhY2ggImVtYy10aW1pbmdzIiBub2RlIHNob3VsZCBjb250YWluIGEgInRpbWluZyIgc3Vibm9kZSBmb3IgZXZlcnkgc3VwcG9ydGVkCitFTUMgY2xvY2sgcmF0ZS4gVGhlICJ0aW1pbmciIHN1Ym5vZGVzIHNob3VsZCBoYXZlIHRoZSBjbG9jayByYXRlIGluIEh6IGFzCit0aGVpciB1bml0IGFkZHJlc3MuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yICJ0aW1pbmciIG5vZGVzIDoKKy0gY2xvY2stZnJlcXVlbmN5IDogU2hvdWxkIGNvbnRhaW4gdGhlIG1lbW9yeSBjbG9jayByYXRlIGluIEh6LgorLSBUaGUgZm9sbG93aW5nIHByb3BlcnRpZXMgY29udGFpbiBFTUMgdGltaW5nIGNoYXJhY3Rlcml6YXRpb24gdmFsdWVzCisoc3BlY2lmaWVkIGluIHRoZSBib2FyZCBkb2N1bWVudGF0aW9uKSA6CisgIC0gbnZpZGlhLGVtYy1hdXRvLWNhbC1jb25maWcgOiBFTUNfQVVUT19DQUxfQ09ORklHCisgIC0gbnZpZGlhLGVtYy1hdXRvLWNhbC1jb25maWcyIDogRU1DX0FVVE9fQ0FMX0NPTkZJRzIKKyAgLSBudmlkaWEsZW1jLWF1dG8tY2FsLWNvbmZpZzMgOiBFTUNfQVVUT19DQUxfQ09ORklHMworICAtIG52aWRpYSxlbWMtYXV0by1jYWwtaW50ZXJ2YWwgOiBFTUNfQVVUT19DQUxfSU5URVJWQUwKKyAgLSBudmlkaWEsZW1jLWJnYmlhcy1jdGwwIDogRU1DX0JHQklBU19DVEwwCisgIC0gbnZpZGlhLGVtYy1jZmcgOiBFTUNfQ0ZHCisgIC0gbnZpZGlhLGVtYy1jZmctMiA6IEVNQ19DRkdfMgorICAtIG52aWRpYSxlbWMtY3R0LXRlcm0tY3RybCA6IEVNQ19DVFRfVEVSTV9DVFJMCisgIC0gbnZpZGlhLGVtYy1tb2RlLTEgOiBNb2RlIFJlZ2lzdGVyIDEKKyAgLSBudmlkaWEsZW1jLW1vZGUtMiA6IE1vZGUgUmVnaXN0ZXIgMgorICAtIG52aWRpYSxlbWMtbW9kZS00IDogTW9kZSBSZWdpc3RlciA0CisgIC0gbnZpZGlhLGVtYy1tb2RlLXJlc2V0IDogTW9kZSBSZWdpc3RlciAwCisgIC0gbnZpZGlhLGVtYy1tcnMtd2FpdC1jbnQgOiBFTUNfTVJTX1dBSVRfQ05UCisgIC0gbnZpZGlhLGVtYy1zZWwtZHBkLWN0cmwgOiBFTUNfU0VMX0RQRF9DVFJMCisgIC0gbnZpZGlhLGVtYy14bTJkcXNwYWRjdHJsMiA6IEVNQ19YTTJEUVNQQURDVFJMMgorICAtIG52aWRpYSxlbWMtemNhbC1jbnQtbG9uZyA6IEVNQ19aQ0FMX1dBSVRfQ05UIGFmdGVyIGNsb2NrIGNoYW5nZQorICAtIG52aWRpYSxlbWMtemNhbC1pbnRlcnZhbCA6IEVNQ19aQ0FMX0lOVEVSVkFMCistIG52aWRpYSxlbWMtY29uZmlndXJhdGlvbiA6IEVNQyB0aW1pbmcgY2hhcmFjdGVyaXphdGlvbiBkYXRhLiBUaGVzZSBhcmUgdGhlCityZWdpc3RlcnMgKHNlZSBzZWN0aW9uICIxNS42LjIgRU1DIFJlZ2lzdGVycyIgaW4gdGhlIFRSTSkgd2hvc2UgdmFsdWVzIG5lZWQgdG8KK2JlIHNwZWNpZmllZCwgYWNjb3JkaW5nIHRvIHRoZSBib2FyZCBkb2N1bWVudGF0aW9uOgorCisJRU1DX1JDCisJRU1DX1JGQworCUVNQ19SRkNfU0xSCisJRU1DX1JBUworCUVNQ19SUAorCUVNQ19SMlcKKwlFTUNfVzJSCisJRU1DX1IyUAorCUVNQ19XMlAKKwlFTUNfUkRfUkNECisJRU1DX1dSX1JDRAorCUVNQ19SUkQKKwlFTUNfUkVYVAorCUVNQ19XRVhUCisJRU1DX1dEVgorCUVNQ19XRFZfTUFTSworCUVNQ19RVVNFCisJRU1DX1FVU0VfV0lEVEgKKwlFTUNfSUJETFkKKwlFTUNfRUlOUFVUCisJRU1DX0VJTlBVVF9EVVJBVElPTgorCUVNQ19QVVRFUk1fRVhUUkEKKwlFTUNfUFVURVJNX1dJRFRICisJRU1DX1BVVEVSTV9BREoKKwlFTUNfQ0RCX0NOVExfMQorCUVNQ19DREJfQ05UTF8yCisJRU1DX0NEQl9DTlRMXzMKKwlFTUNfUVJTVAorCUVNQ19RU0FGRQorCUVNQ19SRFYKKwlFTUNfUkRWX01BU0sKKwlFTUNfUkVGUkVTSAorCUVNQ19CVVJTVF9SRUZSRVNIX05VTQorCUVNQ19QUkVfUkVGUkVTSF9SRVFfQ05UCisJRU1DX1BERVgyV1IKKwlFTUNfUERFWDJSRAorCUVNQ19QQ0hHMlBERU4KKwlFTUNfQUNUMlBERU4KKwlFTUNfQVIyUERFTgorCUVNQ19SVzJQREVOCisJRU1DX1RYU1IKKwlFTUNfVFhTUkRMTAorCUVNQ19UQ0tFCisJRU1DX1RDS0VTUgorCUVNQ19UUEQKKwlFTUNfVEZBVworCUVNQ19UUlBBQgorCUVNQ19UQ0xLU1RBQkxFCisJRU1DX1RDTEtTVE9QCisJRU1DX1RSRUZCVworCUVNQ19GQklPX0NGRzYKKwlFTUNfT0RUX1dSSVRFCisJRU1DX09EVF9SRUFECisJRU1DX0ZCSU9fQ0ZHNQorCUVNQ19DRkdfRElHX0RMTAorCUVNQ19DRkdfRElHX0RMTF9QRVJJT0QKKwlFTUNfRExMX1hGT1JNX0RRUzAKKwlFTUNfRExMX1hGT1JNX0RRUzEKKwlFTUNfRExMX1hGT1JNX0RRUzIKKwlFTUNfRExMX1hGT1JNX0RRUzMKKwlFTUNfRExMX1hGT1JNX0RRUzQKKwlFTUNfRExMX1hGT1JNX0RRUzUKKwlFTUNfRExMX1hGT1JNX0RRUzYKKwlFTUNfRExMX1hGT1JNX0RRUzcKKwlFTUNfRExMX1hGT1JNX0RRUzgKKwlFTUNfRExMX1hGT1JNX0RRUzkKKwlFTUNfRExMX1hGT1JNX0RRUzEwCisJRU1DX0RMTF9YRk9STV9EUVMxMQorCUVNQ19ETExfWEZPUk1fRFFTMTIKKwlFTUNfRExMX1hGT1JNX0RRUzEzCisJRU1DX0RMTF9YRk9STV9EUVMxNAorCUVNQ19ETExfWEZPUk1fRFFTMTUKKwlFTUNfRExMX1hGT1JNX1FVU0UwCisJRU1DX0RMTF9YRk9STV9RVVNFMQorCUVNQ19ETExfWEZPUk1fUVVTRTIKKwlFTUNfRExMX1hGT1JNX1FVU0UzCisJRU1DX0RMTF9YRk9STV9RVVNFNAorCUVNQ19ETExfWEZPUk1fUVVTRTUKKwlFTUNfRExMX1hGT1JNX1FVU0U2CisJRU1DX0RMTF9YRk9STV9RVVNFNworCUVNQ19ETExfWEZPUk1fQUREUjAKKwlFTUNfRExMX1hGT1JNX0FERFIxCisJRU1DX0RMTF9YRk9STV9BRERSMgorCUVNQ19ETExfWEZPUk1fQUREUjMKKwlFTUNfRExMX1hGT1JNX0FERFI0CisJRU1DX0RMTF9YRk9STV9BRERSNQorCUVNQ19ETExfWEZPUk1fUVVTRTgKKwlFTUNfRExMX1hGT1JNX1FVU0U5CisJRU1DX0RMTF9YRk9STV9RVVNFMTAKKwlFTUNfRExMX1hGT1JNX1FVU0UxMQorCUVNQ19ETExfWEZPUk1fUVVTRTEyCisJRU1DX0RMTF9YRk9STV9RVVNFMTMKKwlFTUNfRExMX1hGT1JNX1FVU0UxNAorCUVNQ19ETExfWEZPUk1fUVVTRTE1CisJRU1DX0RMSV9UUklNX1RYRFFTMAorCUVNQ19ETElfVFJJTV9UWERRUzEKKwlFTUNfRExJX1RSSU1fVFhEUVMyCisJRU1DX0RMSV9UUklNX1RYRFFTMworCUVNQ19ETElfVFJJTV9UWERRUzQKKwlFTUNfRExJX1RSSU1fVFhEUVM1CisJRU1DX0RMSV9UUklNX1RYRFFTNgorCUVNQ19ETElfVFJJTV9UWERRUzcKKwlFTUNfRExJX1RSSU1fVFhEUVM4CisJRU1DX0RMSV9UUklNX1RYRFFTOQorCUVNQ19ETElfVFJJTV9UWERRUzEwCisJRU1DX0RMSV9UUklNX1RYRFFTMTEKKwlFTUNfRExJX1RSSU1fVFhEUVMxMgorCUVNQ19ETElfVFJJTV9UWERRUzEzCisJRU1DX0RMSV9UUklNX1RYRFFTMTQKKwlFTUNfRExJX1RSSU1fVFhEUVMxNQorCUVNQ19ETExfWEZPUk1fRFEwCisJRU1DX0RMTF9YRk9STV9EUTEKKwlFTUNfRExMX1hGT1JNX0RRMgorCUVNQ19ETExfWEZPUk1fRFEzCisJRU1DX0RMTF9YRk9STV9EUTQKKwlFTUNfRExMX1hGT1JNX0RRNQorCUVNQ19ETExfWEZPUk1fRFE2CisJRU1DX0RMTF9YRk9STV9EUTcKKwlFTUNfWE0yQ01EUEFEQ1RSTAorCUVNQ19YTTJDTURQQURDVFJMNAorCUVNQ19YTTJDTURQQURDVFJMNQorCUVNQ19YTTJEUVBBRENUUkwyCisJRU1DX1hNMkRRUEFEQ1RSTDMKKwlFTUNfWE0yQ0xLUEFEQ1RSTAorCUVNQ19YTTJDTEtQQURDVFJMMgorCUVNQ19YTTJDT01QUEFEQ1RSTAorCUVNQ19YTTJWVFRHRU5QQURDVFJMCisJRU1DX1hNMlZUVEdFTlBBRENUUkwyCisJRU1DX1hNMlZUVEdFTlBBRENUUkwzCisJRU1DX1hNMkRRU1BBRENUUkwzCisJRU1DX1hNMkRRU1BBRENUUkw0CisJRU1DX1hNMkRRU1BBRENUUkw1CisJRU1DX1hNMkRRU1BBRENUUkw2CisJRU1DX0RTUl9WVFRHRU5fRFJWCisJRU1DX1RYRFNSVlRUR0VOCisJRU1DX0ZCSU9fU1BBUkUKKwlFTUNfWkNBTF9XQUlUX0NOVAorCUVNQ19NUlNfV0FJVF9DTlQyCisJRU1DX0NUVAorCUVNQ19DVFRfRFVSQVRJT04KKwlFTUNfQ0ZHX1BJUEUKKwlFTUNfRFlOX1NFTEZfUkVGX0NPTlRST0wKKwlFTUNfUVBPUAorCitFeGFtcGxlIFNvQyBpbmNsdWRlIGZpbGU6CisKKy8geworCWVtY0AwLDcwMDFiMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJudmlkaWEsdGVncmExMjQtZW1jIjsKKwkJcmVnID0gPDB4MCAweDcwMDFiMDAwIDB4MCAweDEwMDA+OworCisJCW52aWRpYSxtZW1vcnktY29udHJvbGxlciA9IDwmbWM+OworCX07Cit9OworCitFeGFtcGxlIGJvYXJkIGZpbGU6CisKKy8geworCWVtY0AwLDcwMDFiMDAwIHsKKwkJZW1jLXRpbWluZ3MtMyB7CisJCQludmlkaWEscmFtLWNvZGUgPSA8Mz47CisKKwkJCXRpbWluZy0xMjc1MDAwMCB7CisJCQkJY2xvY2stZnJlcXVlbmN5ID0gPDEyNzUwMDAwPjsKKworCQkJCW52aWRpYSxlbWMtemNhbC1jbnQtbG9uZyA9IDwweDAwMDAwMDQyPjsKKwkJCQludmlkaWEsZW1jLWF1dG8tY2FsLWludGVydmFsID0gPDB4MDAxZmZmZmY+OworCQkJCW52aWRpYSxlbWMtY3R0LXRlcm0tY3RybCA9IDwweDAwMDAwODAyPjsKKwkJCQludmlkaWEsZW1jLWNmZyA9IDwweDczMjQwMDAwPjsKKwkJCQludmlkaWEsZW1jLWNmZy0yID0gPDB4MDAwMDA4YzU+OworCQkJCW52aWRpYSxlbWMtc2VsLWRwZC1jdHJsID0gPDB4MDAwNDAxMjg+OworCQkJCW52aWRpYSxlbWMtYmdiaWFzLWN0bDAgPSA8MHgwMDAwMDAwOD47CisJCQkJbnZpZGlhLGVtYy1hdXRvLWNhbC1jb25maWcgPSA8MHhhMTQzMDAwMD47CisJCQkJbnZpZGlhLGVtYy1hdXRvLWNhbC1jb25maWcyID0gPDB4MDAwMDAwMDA+OworCQkJCW52aWRpYSxlbWMtYXV0by1jYWwtY29uZmlnMyA9IDwweDAwMDAwMDAwPjsKKwkJCQludmlkaWEsZW1jLW1vZGUtcmVzZXQgPSA8MHg4MDAwMTIyMT47CisJCQkJbnZpZGlhLGVtYy1tb2RlLTEgPSA8MHg4MDEwMDAwMz47CisJCQkJbnZpZGlhLGVtYy1tb2RlLTIgPSA8MHg4MDIwMDAwOD47CisJCQkJbnZpZGlhLGVtYy1tb2RlLTQgPSA8MHgwMDAwMDAwMD47CisKKwkJCQludmlkaWEsZW1jLWNvbmZpZ3VyYXRpb24gPSA8CisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX1JDICovCisJCQkJCTB4MDAwMDAwMDMgLyogRU1DX1JGQyAqLworCQkJCQkweDAwMDAwMDAwIC8qIEVNQ19SRkNfU0xSICovCisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX1JBUyAqLworCQkJCQkweDAwMDAwMDAwIC8qIEVNQ19SUCAqLworCQkJCQkweDAwMDAwMDA0IC8qIEVNQ19SMlcgKi8KKwkJCQkJMHgwMDAwMDAwYSAvKiBFTUNfVzJSICovCisJCQkJCTB4MDAwMDAwMDMgLyogRU1DX1IyUCAqLworCQkJCQkweDAwMDAwMDBiIC8qIEVNQ19XMlAgKi8KKwkJCQkJMHgwMDAwMDAwMCAvKiBFTUNfUkRfUkNEICovCisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX1dSX1JDRCAqLworCQkJCQkweDAwMDAwMDAzIC8qIEVNQ19SUkQgKi8KKwkJCQkJMHgwMDAwMDAwMyAvKiBFTUNfUkVYVCAqLworCQkJCQkweDAwMDAwMDAwIC8qIEVNQ19XRVhUICovCisJCQkJCTB4MDAwMDAwMDYgLyogRU1DX1dEViAqLworCQkJCQkweDAwMDAwMDA2IC8qIEVNQ19XRFZfTUFTSyAqLworCQkJCQkweDAwMDAwMDA2IC8qIEVNQ19RVVNFICovCisJCQkJCTB4MDAwMDAwMDIgLyogRU1DX1FVU0VfV0lEVEggKi8KKwkJCQkJMHgwMDAwMDAwMCAvKiBFTUNfSUJETFkgKi8KKwkJCQkJMHgwMDAwMDAwNSAvKiBFTUNfRUlOUFVUICovCisJCQkJCTB4MDAwMDAwMDUgLyogRU1DX0VJTlBVVF9EVVJBVElPTiAqLworCQkJCQkweDAwMDEwMDAwIC8qIEVNQ19QVVRFUk1fRVhUUkEgKi8KKwkJCQkJMHgwMDAwMDAwMyAvKiBFTUNfUFVURVJNX1dJRFRIICovCisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX1BVVEVSTV9BREogKi8KKwkJCQkJMHgwMDAwMDAwMCAvKiBFTUNfQ0RCX0NOVExfMSAqLworCQkJCQkweDAwMDAwMDAwIC8qIEVNQ19DREJfQ05UTF8yICovCisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX0NEQl9DTlRMXzMgKi8KKwkJCQkJMHgwMDAwMDAwNCAvKiBFTUNfUVJTVCAqLworCQkJCQkweDAwMDAwMDBjIC8qIEVNQ19RU0FGRSAqLworCQkJCQkweDAwMDAwMDBkIC8qIEVNQ19SRFYgKi8KKwkJCQkJMHgwMDAwMDAwZiAvKiBFTUNfUkRWX01BU0sgKi8KKwkJCQkJMHgwMDAwMDA2MCAvKiBFTUNfUkVGUkVTSCAqLworCQkJCQkweDAwMDAwMDAwIC8qIEVNQ19CVVJTVF9SRUZSRVNIX05VTSAqLworCQkJCQkweDAwMDAwMDE4IC8qIEVNQ19QUkVfUkVGUkVTSF9SRVFfQ05UICovCisJCQkJCTB4MDAwMDAwMDIgLyogRU1DX1BERVgyV1IgKi8KKwkJCQkJMHgwMDAwMDAwMiAvKiBFTUNfUERFWDJSRCAqLworCQkJCQkweDAwMDAwMDAxIC8qIEVNQ19QQ0hHMlBERU4gKi8KKwkJCQkJMHgwMDAwMDAwMCAvKiBFTUNfQUNUMlBERU4gKi8KKwkJCQkJMHgwMDAwMDAwNyAvKiBFTUNfQVIyUERFTiAqLworCQkJCQkweDAwMDAwMDBmIC8qIEVNQ19SVzJQREVOICovCisJCQkJCTB4MDAwMDAwMDUgLyogRU1DX1RYU1IgKi8KKwkJCQkJMHgwMDAwMDAwNSAvKiBFTUNfVFhTUkRMTCAqLworCQkJCQkweDAwMDAwMDA0IC8qIEVNQ19UQ0tFICovCisJCQkJCTB4MDAwMDAwMDUgLyogRU1DX1RDS0VTUiAqLworCQkJCQkweDAwMDAwMDA0IC8qIEVNQ19UUEQgKi8KKwkJCQkJMHgwMDAwMDAwMCAvKiBFTUNfVEZBVyAqLworCQkJCQkweDAwMDAwMDAwIC8qIEVNQ19UUlBBQiAqLworCQkJCQkweDAwMDAwMDA1IC8qIEVNQ19UQ0xLU1RBQkxFICovCisJCQkJCTB4MDAwMDAwMDUgLyogRU1DX1RDTEtTVE9QICovCisJCQkJCTB4MDAwMDAwNjQgLyogRU1DX1RSRUZCVyAqLworCQkJCQkweDAwMDAwMDAwIC8qIEVNQ19GQklPX0NGRzYgKi8KKwkJCQkJMHgwMDAwMDAwMCAvKiBFTUNfT0RUX1dSSVRFICovCisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX09EVF9SRUFEICovCisJCQkJCTB4MTA2YWEyOTggLyogRU1DX0ZCSU9fQ0ZHNSAqLworCQkJCQkweDAwMmMwMGEwIC8qIEVNQ19DRkdfRElHX0RMTCAqLworCQkJCQkweDAwMDA4MDAwIC8qIEVNQ19DRkdfRElHX0RMTF9QRVJJT0QgKi8KKwkJCQkJMHgwMDA2NDAwMCAvKiBFTUNfRExMX1hGT1JNX0RRUzAgKi8KKwkJCQkJMHgwMDA2NDAwMCAvKiBFTUNfRExMX1hGT1JNX0RRUzEgKi8KKwkJCQkJMHgwMDA2NDAwMCAvKiBFTUNfRExMX1hGT1JNX0RRUzIgKi8KKwkJCQkJMHgwMDA2NDAwMCAvKiBFTUNfRExMX1hGT1JNX0RRUzMgKi8KKwkJCQkJMHgwMDA2NDAwMCAvKiBFTUNfRExMX1hGT1JNX0RRUzQgKi8KKwkJCQkJMHgwMDA2NDAwMCAvKiBFTUNfRExMX1hGT1JNX0RRUzUgKi8KKwkJCQkJMHgwMDA2NDAwMCAvKiBFTUNfRExMX1hGT1JNX0RRUzYgKi8KKwkJCQkJMHgwMDA2NDAwMCAvKiBFTUNfRExMX1hGT1JNX0RRUzcgKi8KKwkJCQkJMHgwMDA2NDAwMCAvKiBFTUNfRExMX1hGT1JNX0RRUzggKi8KKwkJCQkJMHgwMDA2NDAwMCAvKiBFTUNfRExMX1hGT1JNX0RRUzkgKi8KKwkJCQkJMHgwMDA2NDAwMCAvKiBFTUNfRExMX1hGT1JNX0RRUzEwICovCisJCQkJCTB4MDAwNjQwMDAgLyogRU1DX0RMTF9YRk9STV9EUVMxMSAqLworCQkJCQkweDAwMDY0MDAwIC8qIEVNQ19ETExfWEZPUk1fRFFTMTIgKi8KKwkJCQkJMHgwMDA2NDAwMCAvKiBFTUNfRExMX1hGT1JNX0RRUzEzICovCisJCQkJCTB4MDAwNjQwMDAgLyogRU1DX0RMTF9YRk9STV9EUVMxNCAqLworCQkJCQkweDAwMDY0MDAwIC8qIEVNQ19ETExfWEZPUk1fRFFTMTUgKi8KKwkJCQkJMHgwMDAwMDAwMCAvKiBFTUNfRExMX1hGT1JNX1FVU0UwICovCisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX0RMTF9YRk9STV9RVVNFMSAqLworCQkJCQkweDAwMDAwMDAwIC8qIEVNQ19ETExfWEZPUk1fUVVTRTIgKi8KKwkJCQkJMHgwMDAwMDAwMCAvKiBFTUNfRExMX1hGT1JNX1FVU0UzICovCisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX0RMTF9YRk9STV9RVVNFNCAqLworCQkJCQkweDAwMDAwMDAwIC8qIEVNQ19ETExfWEZPUk1fUVVTRTUgKi8KKwkJCQkJMHgwMDAwMDAwMCAvKiBFTUNfRExMX1hGT1JNX1FVU0U2ICovCisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX0RMTF9YRk9STV9RVVNFNyAqLworCQkJCQkweDAwMDAwMDAwIC8qIEVNQ19ETExfWEZPUk1fQUREUjAgKi8KKwkJCQkJMHgwMDAwMDAwMCAvKiBFTUNfRExMX1hGT1JNX0FERFIxICovCisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX0RMTF9YRk9STV9BRERSMiAqLworCQkJCQkweDAwMDAwMDAwIC8qIEVNQ19ETExfWEZPUk1fQUREUjMgKi8KKwkJCQkJMHgwMDAwMDAwMCAvKiBFTUNfRExMX1hGT1JNX0FERFI0ICovCisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX0RMTF9YRk9STV9BRERSNSAqLworCQkJCQkweDAwMDAwMDAwIC8qIEVNQ19ETExfWEZPUk1fUVVTRTggKi8KKwkJCQkJMHgwMDAwMDAwMCAvKiBFTUNfRExMX1hGT1JNX1FVU0U5ICovCisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX0RMTF9YRk9STV9RVVNFMTAgKi8KKwkJCQkJMHgwMDAwMDAwMCAvKiBFTUNfRExMX1hGT1JNX1FVU0UxMSAqLworCQkJCQkweDAwMDAwMDAwIC8qIEVNQ19ETExfWEZPUk1fUVVTRTEyICovCisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX0RMTF9YRk9STV9RVVNFMTMgKi8KKwkJCQkJMHgwMDAwMDAwMCAvKiBFTUNfRExMX1hGT1JNX1FVU0UxNCAqLworCQkJCQkweDAwMDAwMDAwIC8qIEVNQ19ETExfWEZPUk1fUVVTRTE1ICovCisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX0RMSV9UUklNX1RYRFFTMCAqLworCQkJCQkweDAwMDAwMDAwIC8qIEVNQ19ETElfVFJJTV9UWERRUzEgKi8KKwkJCQkJMHgwMDAwMDAwMCAvKiBFTUNfRExJX1RSSU1fVFhEUVMyICovCisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX0RMSV9UUklNX1RYRFFTMyAqLworCQkJCQkweDAwMDAwMDAwIC8qIEVNQ19ETElfVFJJTV9UWERRUzQgKi8KKwkJCQkJMHgwMDAwMDAwMCAvKiBFTUNfRExJX1RSSU1fVFhEUVM1ICovCisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX0RMSV9UUklNX1RYRFFTNiAqLworCQkJCQkweDAwMDAwMDAwIC8qIEVNQ19ETElfVFJJTV9UWERRUzcgKi8KKwkJCQkJMHgwMDAwMDAwMCAvKiBFTUNfRExJX1RSSU1fVFhEUVM4ICovCisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX0RMSV9UUklNX1RYRFFTOSAqLworCQkJCQkweDAwMDAwMDAwIC8qIEVNQ19ETElfVFJJTV9UWERRUzEwICovCisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX0RMSV9UUklNX1RYRFFTMTEgKi8KKwkJCQkJMHgwMDAwMDAwMCAvKiBFTUNfRExJX1RSSU1fVFhEUVMxMiAqLworCQkJCQkweDAwMDAwMDAwIC8qIEVNQ19ETElfVFJJTV9UWERRUzEzICovCisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX0RMSV9UUklNX1RYRFFTMTQgKi8KKwkJCQkJMHgwMDAwMDAwMCAvKiBFTUNfRExJX1RSSU1fVFhEUVMxNSAqLworCQkJCQkweDAwMGZjMDAwIC8qIEVNQ19ETExfWEZPUk1fRFEwICovCisJCQkJCTB4MDAwZmMwMDAgLyogRU1DX0RMTF9YRk9STV9EUTEgKi8KKwkJCQkJMHgwMDBmYzAwMCAvKiBFTUNfRExMX1hGT1JNX0RRMiAqLworCQkJCQkweDAwMGZjMDAwIC8qIEVNQ19ETExfWEZPUk1fRFEzICovCisJCQkJCTB4MDAwMGZjMDAgLyogRU1DX0RMTF9YRk9STV9EUTQgKi8KKwkJCQkJMHgwMDAwZmMwMCAvKiBFTUNfRExMX1hGT1JNX0RRNSAqLworCQkJCQkweDAwMDBmYzAwIC8qIEVNQ19ETExfWEZPUk1fRFE2ICovCisJCQkJCTB4MDAwMGZjMDAgLyogRU1DX0RMTF9YRk9STV9EUTcgKi8KKwkJCQkJMHgxMDAwMDI4MCAvKiBFTUNfWE0yQ01EUEFEQ1RSTCAqLworCQkJCQkweDAwMDAwMDAwIC8qIEVNQ19YTTJDTURQQURDVFJMNCAqLworCQkJCQkweDAwMTExMTExIC8qIEVNQ19YTTJDTURQQURDVFJMNSAqLworCQkJCQkweDAwMDAwMDAwIC8qIEVNQ19YTTJEUVBBRENUUkwyICovCisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX1hNMkRRUEFEQ1RSTDMgKi8KKwkJCQkJMHg3N2ZmYzA4MSAvKiBFTUNfWE0yQ0xLUEFEQ1RSTCAqLworCQkJCQkweDAwMDAwZTBlIC8qIEVNQ19YTTJDTEtQQURDVFJMMiAqLworCQkJCQkweDgxZjFmMTA4IC8qIEVNQ19YTTJDT01QUEFEQ1RSTCAqLworCQkJCQkweDA3MDcwMDA0IC8qIEVNQ19YTTJWVFRHRU5QQURDVFJMICovCisJCQkJCTB4MDAwMDAwM2YgLyogRU1DX1hNMlZUVEdFTlBBRENUUkwyICovCisJCQkJCTB4MDE2ZWVlZWUgLyogRU1DX1hNMlZUVEdFTlBBRENUUkwzICovCisJCQkJCTB4NTE0NTE0MDAgLyogRU1DX1hNMkRRU1BBRENUUkwzICovCisJCQkJCTB4MDA1MTQ1MTQgLyogRU1DX1hNMkRRU1BBRENUUkw0ICovCisJCQkJCTB4MDA1MTQ1MTQgLyogRU1DX1hNMkRRU1BBRENUUkw1ICovCisJCQkJCTB4NTE0NTE0MDAgLyogRU1DX1hNMkRRU1BBRENUUkw2ICovCisJCQkJCTB4MDAwMDAwM2YgLyogRU1DX0RTUl9WVFRHRU5fRFJWICovCisJCQkJCTB4MDAwMDAwMDcgLyogRU1DX1RYRFNSVlRUR0VOICovCisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX0ZCSU9fU1BBUkUgKi8KKwkJCQkJMHgwMDAwMDA0MiAvKiBFTUNfWkNBTF9XQUlUX0NOVCAqLworCQkJCQkweDAwMGUwMDBlIC8qIEVNQ19NUlNfV0FJVF9DTlQyICovCisJCQkJCTB4MDAwMDAwMDAgLyogRU1DX0NUVCAqLworCQkJCQkweDAwMDAwMDAzIC8qIEVNQ19DVFRfRFVSQVRJT04gKi8KKwkJCQkJMHgwMDAwZjJmMyAvKiBFTUNfQ0ZHX1BJUEUgKi8KKwkJCQkJMHg4MDAwMDFjNSAvKiBFTUNfRFlOX1NFTEZfUkVGX0NPTlRST0wgKi8KKwkJCQkJMHgwMDAwMDAwYSAvKiBFTUNfUVBPUCAqLworCQkJCT47CisJCQl9OworCQl9OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lbW9yeS1jb250cm9sbGVycy90aS1hZW1pZi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJzL3RpLWFlbWlmLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTkyNzE3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lbW9yeS1jb250cm9sbGVycy90aS1hZW1pZi50eHQKQEAgLTAsMCArMSwyMTAgQEAKKyogRGV2aWNlIHRyZWUgYmluZGluZ3MgZm9yIFRleGFzIGluc3RydW1lbnRzIEFFTUlGIGNvbnRyb2xsZXIKKworVGhlIEFzeW5jIEV4dGVybmFsIE1lbW9yeSBJbnRlcmZhY2UgKEVNSUYxNi9BRU1JRikgY29udHJvbGxlciBpcyBpbnRlbmRlZCB0bworcHJvdmlkZSBhIGdsdWUtbGVzcyBpbnRlcmZhY2UgdG8gYSB2YXJpZXR5IG9mIGFzeW5jaHJvbm91cyBtZW1vcnkgZGV2aWNlcyBsaWtlCitBU1JBIE0sIE5PUiBhbmQgTkFORCBtZW1vcnkuIEEgdG90YWwgb2YgMjU2TSBieXRlcyBvZiBhbnkgb2YgdGhlc2UgbWVtb3JpZXMKK2NhbiBiZSBhY2Nlc3NlZCBhdCBhbnkgZ2l2ZW4gdGltZSB2aWEgZm91ciBjaGlwIHNlbGVjdHMgd2l0aCA2NE0gYnl0ZSBhY2Nlc3MKK3BlciBjaGlwIHNlbGVjdC4gU3luY2hyb25vdXMgbWVtb3JpZXMgc3VjaCBhcyBERFIxIFNEIFJBTSwgU0RSIFNEUkFNCithbmQgTW9iaWxlIFNEUiBhcmUgbm90IHN1cHBvcnRlZC4KKworRG9jdW1lbnRhdGlvbjoKK0RhdmluY2kgRE02NDZ4IC0gaHR0cDovL3d3dy50aS5jb20vbGl0L3VnL3NwcnVlcTdjL3NwcnVlcTdjLnBkZgorT01BUC1MMTM4IChEQTg1MCkgLSBodHRwOi8vd3d3LnRpLmNvbS9saXQvdWcvc3BydWg3N2Evc3BydWg3N2EucGRmCitLZXN0b25lIC0gaHR0cDovL3d3dy50aS5jb20vbGl0L3VnL3NwcnVnejNhL3NwcnVnejNhLnBkZgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6CQkidGksZGF2aW5jaS1hZW1pZiIKKwkJCSJ0aSxrZXlzdG9uZS1hZW1pZiIKKwkJCSJ0aSxkYTg1MC1hZW1pZiIKKworLSByZWc6CQkJY29udGFpbnMgb2Zmc2V0L2xlbmd0aCB2YWx1ZSBmb3IgQUVNSUYgY29udHJvbCByZWdpc3RlcnMKKwkJCXNwYWNlLgorCistICNhZGRyZXNzLWNlbGxzOglNdXN0IGJlIDIuIFRoZSBwYXJ0aXRpb24gbnVtYmVyIGhhcyB0byBiZSBlbmNvZGVkIGluIHRoZQorCQkJZmlyc3QgYWRkcmVzcyBjZWxsIGFuZCBpdCBtYXkgYWNjZXB0IHZhbHVlcyAwLi5OLTEKKwkJCShOIC0gdG90YWwgbnVtYmVyIG9mIHBhcnRpdGlvbnMpLiBJdCdzIHJlY29tbWVuZGVkIHRvCisJCQlhc3NpZ24gTi0xIG51bWJlciBmb3IgdGhlIGNvbnRyb2wgcGFydGl0aW9uLiBUaGUgc2Vjb25kCisJCQljZWxsIGlzIHRoZSBvZmZzZXQgaW50byB0aGUgcGFydGl0aW9uLgorCistICNzaXplLWNlbGxzOgkJTXVzdCBiZSBzZXQgdG8gMS4KKworLSByYW5nZXM6CQlDb250YWlucyBtZW1vcnkgcmVnaW9ucy4gVGhlcmUgYXJlIHR3byB0eXBlcyBvZgorCQkJcmFuZ2VzL3BhcnRpdGlvbnM6CisJCQktIENTLXNwZWNpZmljIHBhcnRpdGlvbi9yYW5nZS4gSWYgY29udGludW91cywgbXVzdCBiZQorCQkJc2V0IHVwIHRvIHJlZmxlY3QgdGhlIG1lbW9yeSBsYXlvdXQgZm9yIDQgY2hpcHNlbGVjdHMsCisJCQlpZiBub3QgdGhlbiBhZGRpdGlvbmFsIHJhbmdlL3BhcnRpdGlvbiBjYW4gYmUgYWRkZWQgYW5kCisJCQljaGlsZCBkZXZpY2UgY2FuIHNlbGVjdCB0aGUgcHJvcGVyIG9uZS4KKwkJCS0gY29udHJvbCBwYXJ0aXRpb24gd2hpY2ggaXMgY29tbW9uIGZvciBhbGwgQ1MKKwkJCWludGVyZmFjZXMuCisKKy0gY2xvY2tzOgkJdGhlIGNsb2NrIGZlZWRpbmcgdGhlIGNvbnRyb2xsZXIgY2xvY2suIFJlcXVpcmVkIG9ubHkKKwkJCWlmIGNsb2NrIHRyZWUgZGF0YSBwcmVzZW50IGluIGRldmljZSB0cmVlLgorCQkJU2VlIGNsb2NrLWJpbmRpbmdzLnR4dAorCistIGNsb2NrLW5hbWVzOgkJY2xvY2sgbmFtZS4gSXQgaGFzIHRvIGJlICJhZW1pZiIuIFJlcXVpcmVkIG9ubHkgaWYgY2xvY2sKKwkJCXRyZWUgZGF0YSBwcmVzZW50IGluIGRldmljZSB0cmVlLCBpbiBhbm90aGVyIGNhc2UgZG9uJ3QKKwkJCXVzZSBpdC4KKwkJCVNlZSBjbG9jay1iaW5kaW5ncy50eHQKKworLSBjbG9jay1yYW5nZXM6CQlFbXB0eSBwcm9wZXJ0eSBpbmRpY2F0aW5nIHRoYXQgY2hpbGQgbm9kZXMgY2FuIGluaGVyaXQKKwkJCW5hbWVkIGNsb2Nrcy4gUmVxdWlyZWQgb25seSBpZiBjbG9jayB0cmVlIGRhdGEgcHJlc2VudAorCQkJaW4gZGV2aWNlIHRyZWUuCisJCQlTZWUgY2xvY2stYmluZGluZ3MudHh0CisKKworQ2hpbGQgY2hpcC1zZWxlY3QgKGNzKSBub2RlcyBjb250YWluIHRoZSBtZW1vcnkgZGV2aWNlcyBub2RlcyBjb25uZWN0ZWQgdG8KK3N1Y2ggYXMgTk9SIChlLmcuIGNmaS1mbGFzaCkgYW5kIE5BTkQgKHRpLGRhdmluY2ktbmFuZCwgc2VlIGRhdmluY2ktbmFuZC50eHQpLgorVGhlcmUgbWlnaHQgYmUgYm9hcmQgc3BlY2lmaWMgZGV2aWNlcyBsaWtlIEZQR0FzLgorCitSZXF1aXJlZCBjaGlsZCBjcyBub2RlIHByb3BlcnRpZXM6CisKKy0gI2FkZHJlc3MtY2VsbHM6CU11c3QgYmUgMi4KKworLSAjc2l6ZS1jZWxsczoJCU11c3QgYmUgMS4KKworLSByYW5nZXM6CQlFbXB0eSBwcm9wZXJ0eSBpbmRpY2F0aW5nIHRoYXQgY2hpbGQgbm9kZXMgY2FuIGluaGVyaXQKKwkJCW1lbW9yeSBsYXlvdXQuCisKKy0gY2xvY2stcmFuZ2VzOgkJRW1wdHkgcHJvcGVydHkgaW5kaWNhdGluZyB0aGF0IGNoaWxkIG5vZGVzIGNhbiBpbmhlcml0CisJCQluYW1lZCBjbG9ja3MuIFJlcXVpcmVkIG9ubHkgaWYgY2xvY2sgdHJlZSBkYXRhIHByZXNlbnQKKwkJCWluIGRldmljZSB0cmVlLgorCistIHRpLGNzLWNoaXBzZWxlY3Q6CW51bWJlciBvZiBjaGlwc2VsZWN0LiBJbmRpY2F0ZXMgb24gdGhlIGFlbWlmIGRyaXZlcgorCQkJd2hpY2ggY2hpcHNlbGVjdCBpcyB1c2VkIGZvciBhY2Nlc3NpbmcgdGhlIG1lbW9yeS4gRm9yCisJCQljb21wYXRpYmxlcyAidGksZGF2aW5jaS1hZW1pZiIgYW5kICJ0aSxrZXlzdG9uZS1hZW1pZiIKKwkJCWl0IGNhbiBiZSBpbiByYW5nZSBbMC0zXS4gRm9yIGNvbXBhdGlibGUKKwkJCSJ0aSxkYTg1MC1hZW1pZiIgcmFuZ2UgaXMgWzItNV0uCisKK09wdGlvbmFsIGNoaWxkIGNzIG5vZGUgcHJvcGVydGllczoKKworLSB0aSxjcy1idXMtd2lkdGg6CQl3aWR0aCBvZiB0aGUgYXN5bmNocm9ub3VzIGRldmljZSdzIGRhdGEgYnVzCisJCQkJOCBvciAxNiBpZiBub3QgcHJlc2V0IDgKKworLSB0aSxjcy1zZWxlY3Qtc3Ryb2JlLW1vZGU6CWVuYWJsZS9kaXNhYmxlIHNlbGVjdCBzdHJvYmUgbW9kZQorCQkJCUluIHNlbGVjdCBzdHJvYmUgbW9kZSBjaGlwIHNlbGVjdCBiZWhhdmVzIGFzCisJCQkJdGhlIHN0cm9iZSBhbmQgaXMgYWN0aXZlIG9ubHkgZHVyaW5nIHRoZSBzdHJvYmUKKwkJCQlwZXJpb2QuIElmIHByZXNlbnQgdGhlbiBlbmFibGUuCisKKy0gdGksY3MtZXh0ZW5kZWQtd2FpdC1tb2RlOgllbmFibGUvZGlzYWJsZSBleHRlbmRlZCB3YWl0IG1vZGUKKwkJCQlpZiBzZXQsIHRoZSBjb250cm9sbGVyIG1vbml0b3JzIHRoZSBFTUlGV0FJVCBwaW4KKwkJCQltYXBwZWQgdG8gdGhhdCBjaGlwIHNlbGVjdCB0byBkZXRlcm1pbmUgaWYgdGhlCisJCQkJZGV2aWNlIHdhbnRzIHRvIGV4dGVuZCB0aGUgc3Ryb2JlIHBlcmlvZC4gSWYKKwkJCQlwcmVzZW50IHRoZW4gZW5hYmxlLgorCistIHRpLGNzLW1pbi10dXJuYXJvdW5kLW5zOgltaW5pbXVtIHR1cm4gYXJvdW5kIHRpbWUsIG5zCisJCQkJVGltZSBiZXR3ZWVuIHRoZSBlbmQgb2Ygb25lIGFzeW5jaHJvbm91cyBtZW1vcnkKKwkJCQlhY2Nlc3MgYW5kIHRoZSBzdGFydCBvZiBhbm90aGVyIGFzeW5jaHJvbm91cworCQkJCW1lbW9yeSBhY2Nlc3MuIFRoaXMgZGVsYXkgaXMgbm90IGluY3VycmVkCisJCQkJYmV0d2VlbiBhIHJlYWQgZm9sbG93ZWQgYnkgcmVhZCBvciBhIHdyaXRlCisJCQkJZm9sbG93ZWQgYnkgYSB3cml0ZSB0byBzYW1lIGNoaXAgc2VsZWN0LgorCistIHRpLGNzLXJlYWQtc2V0dXAtbnM6CQlyZWFkIHNldHVwIHdpZHRoLCBucworCQkJCVRpbWUgYmV0d2VlbiB0aGUgYmVnaW5uaW5nIG9mIGEgbWVtb3J5IGN5Y2xlCisJCQkJYW5kIHRoZSBhY3RpdmF0aW9uIG9mIHJlYWQgc3Ryb2JlLgorCQkJCU1pbmltdW0gdmFsdWUgaXMgMSAoMCB0cmVhdGVkIGFzIDEpLgorCistIHRpLGNzLXJlYWQtc3Ryb2JlLW5zOgkJcmVhZCBzdHJvYmUgd2lkdGgsIG5zCisJCQkJVGltZSBiZXR3ZWVuIHRoZSBhY3RpdmF0aW9uIGFuZCBkZWFjdGl2YXRpb24gb2YKKwkJCQl0aGUgcmVhZCBzdHJvYmUuCisJCQkJTWluaW11bSB2YWx1ZSBpcyAxICgwIHRyZWF0ZWQgYXMgMSkuCisKKy0gdGksY3MtcmVhZC1ob2xkLW5zOgkJcmVhZCBob2xkIHdpZHRoLCBucworCQkJCVRpbWUgYmV0d2VlbiB0aGUgZGVhY3RpdmF0aW9uIG9mIHRoZSByZWFkCisJCQkJc3Ryb2JlIGFuZCB0aGUgZW5kIG9mIHRoZSBjeWNsZSAod2hpY2ggbWF5IGJlCisJCQkJZWl0aGVyIGFuIGFkZHJlc3MgY2hhbmdlIG9yIHRoZSBkZWFjdGl2YXRpb24gb2YKKwkJCQl0aGUgY2hpcCBzZWxlY3Qgc2lnbmFsLgorCQkJCU1pbmltdW0gdmFsdWUgaXMgMSAoMCB0cmVhdGVkIGFzIDEpLgorCistIHRpLGNzLXdyaXRlLXNldHVwLW5zOgkJd3JpdGUgc2V0dXAgd2lkdGgsIG5zCisJCQkJVGltZSBiZXR3ZWVuIHRoZSBiZWdpbm5pbmcgb2YgYSBtZW1vcnkgY3ljbGUKKwkJCQlhbmQgdGhlIGFjdGl2YXRpb24gb2Ygd3JpdGUgc3Ryb2JlLgorCQkJCU1pbmltdW0gdmFsdWUgaXMgMSAoMCB0cmVhdGVkIGFzIDEpLgorCistIHRpLGNzLXdyaXRlLXN0cm9iZS1uczoJd3JpdGUgc3Ryb2JlIHdpZHRoLCBucworCQkJCVRpbWUgYmV0d2VlbiB0aGUgYWN0aXZhdGlvbiBhbmQgZGVhY3RpdmF0aW9uIG9mCisJCQkJdGhlIHdyaXRlIHN0cm9iZS4KKwkJCQlNaW5pbXVtIHZhbHVlIGlzIDEgKDAgdHJlYXRlZCBhcyAxKS4KKworLSB0aSxjcy13cml0ZS1ob2xkLW5zOgkJd3JpdGUgaG9sZCB3aWR0aCwgbnMKKwkJCQlUaW1lIGJldHdlZW4gdGhlIGRlYWN0aXZhdGlvbiBvZiB0aGUgd3JpdGUKKwkJCQlzdHJvYmUgYW5kIHRoZSBlbmQgb2YgdGhlIGN5Y2xlICh3aGljaCBtYXkgYmUKKwkJCQllaXRoZXIgYW4gYWRkcmVzcyBjaGFuZ2Ugb3IgdGhlIGRlYWN0aXZhdGlvbiBvZgorCQkJCXRoZSBjaGlwIHNlbGVjdCBzaWduYWwuCisJCQkJTWluaW11bSB2YWx1ZSBpcyAxICgwIHRyZWF0ZWQgYXMgMSkuCisKK0lmIGFueSBvZiB0aGUgYWJvdmUgcGFyYW1ldGVycyBhcmUgYWJzZW50LCBjdXJyZW50IHBhcmFtZXRlciB2YWx1ZSB3aWxsIGJlIHRha2VuCitmcm9tIHRoZSBjb3JyZXNwb25kaW5nIEhXIHJlZy4KKworRXhhbXBsZSBmb3IgYWVtaWYsIGRhdmluY2kgbmFuZCBhbmQgbm9yIGZsYXNoIGNoaXAgc2VsZWN0IHNob3duIGJlbG93LgorCittZW1vcnktY29udHJvbGxlckAyMTAwMEEwMCB7CisJY29tcGF0aWJsZSA9ICJ0aSxkYXZpbmNpLWFlbWlmIjsKKwkjYWRkcmVzcy1jZWxscyA9IDwyPjsKKwkjc2l6ZS1jZWxscyA9IDwxPjsKKwljbG9ja3MgPSA8JmNsa2FlbWlmIDA+OworCWNsb2NrLW5hbWVzID0gImFlbWlmIjsKKwljbG9jay1yYW5nZXM7CisJcmVnID0gPDB4MjEwMDBBMDAgMHgwMDAwMDEwMD47CisJcmFuZ2VzID0gPDAgMCAweDcwMDAwMDAwIDB4MTAwMDAwMDAKKwkJICAxIDAgMHgyMTAwMEEwMCAweDAwMDAwMTAwPjsKKwkJICAvKgorCQkgICAqIFBhcnRpdGlvbjA6IENTLXNwZWNpZmljIG1lbW9yeSByYW5nZSB3aGljaCBpcworCQkgICAqIGltcGxlbWVudGVkIGFzIGNvbnRpbnVvdXMgcGh5c2ljYWwgbWVtb3J5IHJlZ2lvbgorCQkgICAqIFBhcnRpdGlvbjE6IGNvbnRyb2wgbWVtb3J5IHJhbmdlCisJCSAgICovCisKKwluYW5kOmNzMiB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDI+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJY2xvY2stcmFuZ2VzOworCQlyYW5nZXM7CisKKwkJdGksY3MtY2hpcHNlbGVjdCA9IDwyPjsKKwkJLyogYWxsIHRpbWluZ3MgaW4gbmFub3NlY29uZHMgKi8KKwkJdGksY3MtbWluLXR1cm5hcm91bmQtbnMgPSA8MD47CisJCXRpLGNzLXJlYWQtaG9sZC1ucyA9IDw3PjsKKwkJdGksY3MtcmVhZC1zdHJvYmUtbnMgPSA8NDI+OworCQl0aSxjcy1yZWFkLXNldHVwLW5zID0gPDE0PjsKKwkJdGksY3Mtd3JpdGUtaG9sZC1ucyA9IDw3PjsKKwkJdGksY3Mtd3JpdGUtc3Ryb2JlLW5zID0gPDQyPjsKKwkJdGksY3Mtd3JpdGUtc2V0dXAtbnMgPSA8MTQ+OworCisJCW5hbmRAMCwweDgwMDAwMDAgeworCQkJY29tcGF0aWJsZSA9ICJ0aSxkYXZpbmNpLW5hbmQiOworCQkJcmVnID0gPDAgMHg4MDAwMDAwIDB4NDAwMDAwMAorCQkJICAgICAgIDEgMHgwMDAwMDAwIDB4MDAwMDEwMD47CisJCQkvKgorCQkJICogUGFydGl0aW9uMCwgb2Zmc2V0IDB4ODAwMDAwMCwgc2l6ZSAweDQwMDAwMDAKKwkJCSAqIFBhcnRpdGlvbjEsIG9mZnNldCAweDAwMDAwMDAsIHNpemUgMHgwMDAwMTAwCisJCQkgKi8KKworCQkJLi4gc2VlIGRhdmluY2ktbmFuZC50eHQKKwkJfTsKKwl9OworCisJbm9yOmNzMCB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDI+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJY2xvY2stcmFuZ2VzOworCQlyYW5nZXM7CisKKwkJdGksY3MtY2hpcHNlbGVjdCA9IDwwPjsKKwkJLyogYWxsIHRpbWluZ3MgaW4gbmFub3NlY29uZHMgKi8KKwkJdGksY3MtbWluLXR1cm5hcm91bmQtbnMgPSA8MD47CisJCXRpLGNzLXJlYWQtaG9sZC1ucyA9IDw4PjsKKwkJdGksY3MtcmVhZC1zdHJvYmUtbnMgPSA8NDA+OworCQl0aSxjcy1yZWFkLXNldHVwLW5zID0gPDE0PjsKKwkJdGksY3Mtd3JpdGUtaG9sZC1ucyA9IDw3PjsKKwkJdGksY3Mtd3JpdGUtc3Ryb2JlLW5zID0gPDQwPjsKKwkJdGksY3Mtd3JpdGUtc2V0dXAtbnMgPSA8MTQ+OworCQl0aSxjcy1idXMtd2lkdGggPSA8MTY+OworCisJCWZsYXNoQDAsMHgwMDAwMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiY2ZpLWZsYXNoIjsKKwkJCXJlZyA9IDwwIDB4MDAwMDAwMCAweDQwMDAwMDA+OworCisJCQkuLi4KKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZW1vcnktY29udHJvbGxlcnMvdGkvZW1pZi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJzL3RpL2VtaWYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkYjYwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJzL3RpL2VtaWYudHh0CkBAIC0wLDAgKzEsNTYgQEAKKyogRU1JRiBmYW1pbHkgb2YgVEkgU0RSQU0gY29udHJvbGxlcnMKKworRU1JRiAtIEV4dGVybmFsIE1lbW9yeSBJbnRlcmZhY2UgLSBpcyBhbiBTRFJBTSBjb250cm9sbGVyIHVzZWQgaW4KK1RJIFNvQ3MuIEVNSUYgc3VwcG9ydHMsIGJhc2VkIG9uIHRoZSBJUCByZXZpc2lvbiwgb25lIG9yIG1vcmUgb2YKK0REUjIvRERSMy9MUEREUjIgcHJvdG9jb2xzLiBUaGlzIGJpbmRpbmcgZGVzY3JpYmVzIGEgZ2l2ZW4gaW5zdGFuY2UKK29mIHRoZSBFTUlGIElQIGFuZCBtZW1vcnkgcGFydHMgYXR0YWNoZWQgdG8gaXQuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUJOiBTaG91bGQgYmUgb2YgdGhlIGZvcm0gInRpLGVtaWYtPGlwLXJldj4iIHdoZXJlIDxpcC1yZXY+CisgIGlzIHRoZSBJUCByZXZpc2lvbiBvZiB0aGUgc3BlY2lmaWMgRU1JRiBpbnN0YW5jZS4KKwkJICBGb3IgYW00Mzd4IHNob3VsZCBiZSB0aSxlbWlmLWFtNDM3Mi4KKworLSBwaHktdHlwZQk6IDx1MzI+IGluZGljYXRpbmcgdGhlIEREUiBwaHkgdHlwZS4gRm9sbG93aW5nIGFyZSB0aGUKKyAgYWxsb3dlZCB2YWx1ZXMKKyAgPDE+CTogQXR0aWxhIFBIWQorICA8Mj4JOiBJbnRlbGxpIFBIWQorCistIGRldmljZS1oYW5kbGUJOiBwaGFuZGxlIHRvIGEgImxwZGRyMiIgbm9kZSByZXByZXNlbnRpbmcgdGhlIG1lbW9yeSBwYXJ0CisKKy0gdGksaHdtb2RzCTogRm9yIFRJIGh3bW9kcyBwcm9jZXNzaW5nIGFuZCBvbWFwIGRldmljZSBjcmVhdGlvbgorICB0aGUgdmFsdWUgc2hhbGwgYmUgImVtaWY8bj4iIHdoZXJlIDxuPiBpcyB0aGUgbnVtYmVyIG9mIHRoZSBFTUlGCisgIGluc3RhbmNlIHdpdGggYmFzZSAxLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjczEtdXNlZAkJOiBIYXZlIHRoaXMgcHJvcGVydHkgaWYgQ1MxIG9mIHRoaXMgRU1JRgorICBpbnN0YW5jZSBoYXMgYSBtZW1vcnkgcGFydCBhdHRhY2hlZCB0byBpdC4gSWYgdGhlcmUgaXMgYSBtZW1vcnkKKyAgcGFydCBhdHRhY2hlZCB0byBDUzEsIGl0IHNob3VsZCBiZSB0aGUgc2FtZSB0eXBlIGFzIHRoZSBvbmUgb24gQ1MwLAorICBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIGdpdmUgdGhlIGRldGFpbHMgb2YgdGhpcyBtZW1vcnkgcGFydC4KKworLSBjYWwtcmVzaXN0b3ItcGVyLWNzCTogSGF2ZSB0aGlzIHByb3BlcnR5IGlmIHRoZSBib2FyZCBoYXMgb25lCisgIGNhbGlicmF0aW9uIHJlc2lzdG9yIHBlciBjaGlwLXNlbGVjdC4KKworLSBody1jYXBzLXJlYWQtaWRsZS1jdHJsOiBIYXZlIHRoaXMgcHJvcGVydHkgaWYgdGhlIGNvbnRyb2xsZXIKKyAgc3VwcG9ydHMgcmVhZCBpZGxlIHdpbmRvdyBwcm9ncmFtbWluZworCistIGh3LWNhcHMtZGxsLWNhbGliLWN0cmw6IEhhdmUgdGhpcyBwcm9wZXJ0eSBpZiB0aGUgY29udHJvbGxlcgorICBzdXBwb3J0cyBkbGwgY2FsaWJyYXRpb24gY29udHJvbAorCistIGh3LWNhcHMtbGwtaW50ZXJmYWNlCTogSGF2ZSB0aGlzIHByb3BlcnR5IGlmIHRoZSBjb250cm9sbGVyCisgIGhhcyBhIGxvdyBsYXRlbmN5IGludGVyZmFjZSBhbmQgY29ycmVzcG9uZGluZyBpbnRlcnJ1cHQgZXZlbnRzCisKKy0gaHctY2Fwcy10ZW1wLWFsZXJ0CTogSGF2ZSB0aGlzIHByb3BlcnR5IGlmIHRoZSBjb250cm9sbGVyCisgIGhhcyBjYXBhYmlsaXR5IGZvciBnZW5lcmF0aW5nIFNEUkFNIHRlbXBlcmF0dXJlIGFsZXJ0cworCitFeGFtcGxlOgorCitlbWlmMTogZW1pZkAweDRjMDAwMDAwIHsKKwljb21wYXRpYmxlCT0gInRpLGVtaWYtNGQiOworCXRpLGh3bW9kcwk9ICJlbWlmMiI7CisJcGh5LXR5cGUJPSA8MT47CisJZGV2aWNlLWhhbmRsZQk9IDwmZWxwaWRhX0VDQjI0MEFCQUNOPjsKKwljczEtdXNlZDsKKwlody1jYXBzLXJlYWQtaWRsZS1jdHJsOworCWh3LWNhcHMtbGwtaW50ZXJmYWNlOworCWh3LWNhcHMtdGVtcC1hbGVydDsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWV0YWcvbWV0YS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWV0YWcvbWV0YS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ0NTdmNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZXRhZy9tZXRhLnR4dApAQCAtMCwwICsxLDMwIEBACisqIE1ldGEgUHJvY2Vzc29yIEJpbmRpbmcKKworVGhpcyBiaW5kaW5nIHNwZWNpZmllcyB3aGF0IHByb3BlcnRpZXMgbXVzdCBiZSBhdmFpbGFibGUgaW4gdGhlIGRldmljZSB0cmVlCityZXByZXNlbnRhdGlvbiBvZiBhIE1ldGEgUHJvY2Vzc29yIENvcmUsIHdoaWNoIGlzIHRoZSByb290IG5vZGUgaW4gdGhlIHRyZWUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgICAtIGNvbXBhdGlibGU6IFNwZWNpZmllcyB0aGUgY29tcGF0aWJpbGl0eSBsaXN0IGZvciB0aGUgTWV0YSBwcm9jZXNzb3IuCisgICAgICBUaGUgdHlwZSBzaGFsbCBiZSA8c3RyaW5nPiBhbmQgdGhlIHZhbHVlIHNoYWxsIGluY2x1ZGUgImltZyxtZXRhIi4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworICAgIC0gY2xvY2tzOiBDbG9jayBjb25zdW1lciBzcGVjaWZpZXJzIGFzIGRlc2NyaWJlZCBpbgorICAgICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCisgICAgLSBjbG9jay1uYW1lczogQ2xvY2sgY29uc3VtZXIgbmFtZXMgYXMgZGVzY3JpYmVkIGluCisgICAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0LgorCitDbG9ja3MgYXJlIGlkZW50aWZpZWQgYnkgbmFtZS4gVmFsaWQgY2xvY2tzIGFyZToKKworICAgIC0gImNvcmUiOiBUaGUgTWV0YSBjb3JlIGNsb2NrIGZyb20gd2hpY2ggdGhlIE1ldGEgdGltZXJzIGFyZSBkZXJpdmVkLgorCisqIEV4YW1wbGVzCisKKy8geworCWNvbXBhdGlibGUgPSAidG91bWF6LHR6MTA5MCIsICJpbWcsbWV0YSI7CisKKwljbG9ja3MgPSA8Jm1ldGFfY29yZV9jbGs+OworCWNsb2NrLW5hbWVzID0gImNvcmUiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvODhwbTg2MHgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC84OHBtODYweC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjNmM2VlMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvODhwbTg2MHgudHh0CkBAIC0wLDAgKzEsODUgQEAKKyogTWFydmVsbCA4OFBNODYweCBQb3dlciBNYW5hZ2VtZW50IElDCisKK1JlcXVpcmVkIHBhcmVudCBkZXZpY2UgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJtYXJ2ZWxsLDg4cG04NjB4IgorLSByZWcgOiB0aGUgSTJDIHNsYXZlIGFkZHJlc3MgZm9yIHRoZSA4OHBtODYweCBjaGlwCistIGludGVycnVwdHMgOiBJUlEgbGluZSBmb3IgdGhlIDg4cG04NjB4IGNoaXAKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXI6IGRlc2NyaWJlcyB0aGUgODhwbTg2MHggYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIgKGhhcyBpdHMgb3duIGRvbWFpbikKKy0gI2ludGVycnVwdC1jZWxscyA6IHNob3VsZCBiZSAxLgorCQktIFRoZSBjZWxsIGlzIHRoZSA4OHBtODYweCBsb2NhbCBJUlEgbnVtYmVyCisKK09wdGlvbmFsIHBhcmVudCBkZXZpY2UgcHJvcGVydGllczoKKy0gbWFydmVsbCw4OHBtODYweC1pcnEtcmVhZC1jbHI6IGluaWNhdGVzIHdoZXRoZXIgaW50ZXJydXB0IHN0YXR1cyBpcyBjbGVhcmVkIGJ5IHJlYWQKKy0gbWFydmVsbCw4OHBtODYweC1zbGF2ZS1hZGRyOiA4OHBtODYweCBhcmUgdHdvIGNoaXBzIHNvbHV0aW9uLiA8cmVnPiBzdG9yZXMgdGhlIEkyQyBhZGRyZXNzCisJCQkJb2Ygb25lIGNoaXAsIGFuZCB0aGlzIHByb3BlcnR5IHN0b3JlcyB0aGUgSTJDIGFkZHJlc3Mgb2YKKwkJCQlhbm90aGVyIGNoaXAuCisKKzg4cG04NjB4IGNvbnNpc3RzIG9mIGEgbGFyZ2UgYW5kIHZhcmllZCBncm91cCBvZiBzdWItZGV2aWNlczoKKworRGV2aWNlCQkJIFN1cHBseSBOYW1lcwkgRGVzY3JpcHRpb24KKy0tLS0tLQkJCSAtLS0tLS0tLS0tLS0JIC0tLS0tLS0tLS0tCis4OHBtODYweC1vbmtleQkJOgkJOiBPbiBrZXkKKzg4cG04NjB4LXJ0YwkJOgkJOiBSVEMKKzg4cG04NjA3CQk6CQk6IFJlZ3VsYXRvcnMKKzg4cG04NjB4LWJhY2tsaWdodAk6CQk6IEJhY2tsaWdodAorODhwbTg2MHgtbGVkCQk6CQk6IExlZAorODhwbTg2MHgtdG91Y2gJCToJCTogVG91Y2hzY3JlZW4KKworRXhhbXBsZToKKworCXBtaWM6IDg4cG04NjB4QDM0IHsKKwkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLDg4cG04NjB4IjsKKwkJcmVnID0gPDB4MzQ+OworCQlpbnRlcnJ1cHRzID0gPDQ+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpbnRjPjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisKKwkJbWFydmVsbCw4OHBtODYweC1pcnEtcmVhZC1jbHI7CisJCW1hcnZlbGwsODhwbTg2MHgtc2xhdmUtYWRkciA9IDwweDExPjsKKworCQlyZWd1bGF0b3JzIHsKKwkJCUJVQ0sxIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMDAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxNTAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKwkJCUxETzEgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDEyMDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDI4MDAwMDA+OworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCQl9OworCQlydGMgeworCQkJbWFydmVsbCw4OHBtODYweC12cnRjID0gPDE+OworCQl9OworCQl0b3VjaCB7CisJCQltYXJ2ZWxsLDg4cG04NjB4LWdwYWRjLXByZWJpYXMgPSA8MT47CisJCQltYXJ2ZWxsLDg4cG04NjB4LWdwYWRjLXNsb3QtY3ljbGUgPSA8MT47CisJCQltYXJ2ZWxsLDg4cG04NjB4LXRzaS1wcmViaWFzID0gPDY+OworCQkJbWFydmVsbCw4OHBtODYweC1wZW4tcHJlYmlhcyA9IDwxNj47CisJCQltYXJ2ZWxsLDg4cG04NjB4LXBlbi1wcmVjaGcgPSA8Mj47CisJCQltYXJ2ZWxsLDg4cG04NjB4LXJlc2lzdG9yLVggPSA8MzAwPjsKKwkJfTsKKwkJYmFja2xpZ2h0cyB7CisJCQliYWNrbGlnaHQtMCB7CisJCQkJbWFydmVsbCw4OHBtODYweC1pc2V0ID0gPDQ+OworCQkJCW1hcnZlbGwsODhwbTg2MHgtcHdtID0gPDM+OworCQkJfTsKKwkJCWJhY2tsaWdodC0yIHsKKwkJCX07CisJCX07CisJCWxlZHMgeworCQkJbGVkMC1yZWQgeworCQkJCW1hcnZlbGwsODhwbTg2MHgtaXNldCA9IDwxMj47CisJCQl9OworCQkJbGVkMC1ncmVlbiB7CisJCQkJbWFydmVsbCw4OHBtODYweC1pc2V0ID0gPDEyPjsKKwkJCX07CisJCQlsZWQwLWJsdWUgeworCQkJCW1hcnZlbGwsODhwbTg2MHgtaXNldCA9IDwxMj47CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2FiODUwMC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2FiODUwMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q5ZTkwYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvYWI4NTAwLnR4dApAQCAtMCwwICsxLDE1OSBAQAorKiBBQjg1MDAgTXVsdGktRnVuY3Rpb25hbCBEZXZpY2UgKE1GRCkKKworUmVxdWlyZWQgcGFyZW50IGRldmljZSBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlICAgICAgICAgICAgIDogY29udGFpbnMgInN0ZXJpY3Nzb24sYWI4NTAwIjsKKy0gaW50ZXJydXB0cyAgICAgICAgICAgICA6IGNvbnRhaW5zIHRoZSBJUlEgbGluZSBmb3IgdGhlIEFCODUwMAorLSBpbnRlcnJ1cHQtY29udHJvbGxlciAgIDogZGVzY3JpYmVzIHRoZSBBQjg1MDAgYXMgYW4gSW50ZXJydXB0IENvbnRyb2xsZXIgKGhhcyBpdHMgb3duIGRvbWFpbikKKy0gI2ludGVycnVwdC1jZWxscyAgICAgICA6IHNob3VsZCBiZSAyLCBmb3IgMi1jZWxsIGZvcm1hdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhlIGZpcnN0IGNlbGwgaXMgdGhlIEFCODUwMCBsb2NhbCBJUlEgbnVtYmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGUgc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IG9wdGlvbmFsIHBhcmFtZXRlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gYml0c1szOjBdIHRyaWdnZXIgdHlwZSBhbmQgbGV2ZWwgZmxhZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSA9IGxvdy10by1oaWdoIGVkZ2UgdHJpZ2dlcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiA9IGhpZ2gtdG8tbG93IGVkZ2UgdHJpZ2dlcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCA9IGFjdGl2ZSBoaWdoIGxldmVsLXNlbnNpdGl2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDggPSBhY3RpdmUgbG93IGxldmVsLXNlbnNpdGl2ZQorCitUaGUgQUI4NTAwIGNvbnNpc3RzIG9mIGEgbGFyZ2UgYW5kIHZhcmllZCBncm91cCBvZiBzdWItZGV2aWNlczoKKworRGV2aWNlICAgICAgICAgICAgICAgICAgICAgSVJRIE5hbWVzICAgICAgICAgICAgICBTdXBwbHkgTmFtZXMgICBEZXNjcmlwdGlvbgorLS0tLS0tICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0gICAtLS0tLS0tLS0tLQorYWI4NTAwLWJtICAgICAgICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgOiAgICAgICAgICAgICAgOiBCYXR0ZXJ5IE1hbmFnZXIKK2FiODUwMC1idGVtcCAgICAgICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgIDogICAgICAgICAgICAgIDogQmF0dGVyeSBUZW1wZXJhdHVyZQorYWI4NTAwLWNoYXJnZXIgICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgOiAgICAgICAgICAgICAgOiBCYXR0ZXJ5IENoYXJnZXIKK2FiODUwMC1jb2RlYyAgICAgICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgIDogICAgICAgICAgICAgIDogQXVkaW8gQ29kZWMKK2FiODUwMC1mZyAgICAgICAgICAgICAgICA6IAkJCTogdmRkYWRjICAgICAgIDogRnVlbCBHYXVnZQorCQkJIDogTkNPTlZfQUNDVSAgICAgICAgICAgOgkgICAgICAgOiBBY2N1bXVsYXRlIE4gU2FtcGxlIENvbnZlcnNpb24KKwkJCSA6IEJBVFRfT1ZWCQk6CSAgICAgICA6IEJhdHRlcnkgT3ZlciBWb2x0YWdlCisJCQkgOiBMT1dfQkFUX0YJCToJICAgICAgIDogTE9XIHRocmVzaG9sZCBiYXR0ZXJ5IHZvbHRhZ2UKKwkJCSA6IENDX0lOVF9DQUxJQgkJOgkgICAgICAgOiBDb3Vsb21iIENvdW50ZXIgSW50ZXJuYWwgQ2FsaWJyYXRpb24KKwkJCSA6IENDRU9DCQk6CSAgICAgICA6IENvdWxvbWIgQ291bnRlciBFbmQgb2YgQ29udmVyc2lvbgorYWI4NTAwLWJ0ZW1wCQkgOgkJCTogdnR2b3V0ICAgICAgIDogQmF0dGVyeSBUZW1wZXJhdHVyZQorCQkJIDogQkFUX0NUUkxfSU5EQiAgICAgICAgOiAgICAgICAgICAgICAgOiBCYXR0ZXJ5IFJlbW92YWwgSW5kaWNhdG9yCisJCQkgOiBCVEVNUF9MT1cgICAgICAgICAgICA6ICAgICAgICAgICAgICA6IEJ0ZW1wIDwgQnRlbXBMb3csIGlmIGJhdHRlcnkgdGVtcGVyYXR1cmUgaXMgbG93ZXIgdGhhbiAtMTDCsEMKKwkJCSA6IEJURU1QX0xPV19NRURJVU0gICAgIDogICAgICAgICAgICAgIDogQnRlbXBMb3cgPCBCdGVtcCA8IEJ0ZW1wTWVkaXVtLGlmIGJhdHRlcnkgdGVtcGVyYXR1cmUgaXMgYmV0d2VlbiAtMTAgYW5kIDDCsEMKKwkJCSA6IEJURU1QX01FRElVTV9ISUdIICAgIDoJICAgICAgIDogQnRlbXBNZWRpdW0gPCBCdGVtcCA8IEJ0ZW1wSGlnaCxpZiBiYXR0ZXJ5IHRlbXBlcmF0dXJlIGlzIGJldHdlZW4gMMKwQyBhbmTigJxNYXhUZW1wCisJCQkgOiBCVEVNUF9ISUdIICAgICAgICAgICA6ICAgICAgICAgICAgICA6IEJ0ZW1wID4gQnRlbXBIaWdoLCBpZiBiYXR0ZXJ5IHRlbXBlcmF0dXJlIGlzIGhpZ2hlciB0aGFuIOKAnE1heFRlbXAKK2FiODUwMC1jaGFyZ2VyCQkgOgkJCTogdmRkYWRjICAgICAgIDogQ2hhcmdlciBpbnRlcmZhY2UKKwkJCSA6IE1BSU5fQ0hfVU5QTFVHX0RFVAk6CSAgICAgICA6IG1haW4gY2hhcmdlciB1bnBsdWcgZGV0ZWN0aW9uIG1hbmFnZW1lbnQgKG5vdCBpbiA4NTA1KQorCQkJIDogTUFJTl9DSEFSR0VfUExVR19ERVQJOgkgICAgICAgOiBtYWluIGNoYXJnZXIgcGx1ZyBkZXRlY3Rpb24gbWFuYWdlbWVudCAobm90IGluIDg1MDUpCisJCQkgOiBNQUlOX0VYVF9DSF9OT1RfT0sJOgkgICAgICAgOiBtYWluIGNoYXJnZXIgbm90IE9LCisJCQkgOiBNQUlOX0NIX1RIX1BST1RfUgk6CSAgICAgICA6IERpZSB0ZW1wIGlzIGFib3ZlIG1haW4gY2hhcmdlcgorCQkJIDogTUFJTl9DSF9USF9QUk9UX0YJOgkgICAgICAgOiBEaWUgdGVtcCBpcyBiZWxvdyBtYWluIGNoYXJnZXIKKwkJCSA6IFZCVVNfREVUX0YJCToJICAgICAgIDogVkJVUyBmYWxsaW5nIGRldGVjdGVkCisJCQkgOiBWQlVTX0RFVF9SCQk6CSAgICAgICA6IFZCVVMgcmlzaW5nIGRldGVjdGVkCisJCQkgOiBVU0JfTElOS19TVEFUVVMJOgkgICAgICAgOiBVU0IgbGluayBzdGF0dXMgaGFzIGNoYW5nZWQKKwkJCSA6IFVTQl9DSF9USF9QUk9UX1IJOgkgICAgICAgOiBEaWUgdGVtcCBpcyBhYm92ZSB1c2IgY2hhcmdlcgorCQkJIDogVVNCX0NIX1RIX1BST1RfRgk6CSAgICAgICA6IERpZSB0ZW1wIGlzIGJlbG93IHVzYiBjaGFyZ2VyCisJCQkgOiBVU0JfQ0hBUkdFUl9OT1RfT0tSCToJICAgICAgIDogYWxsb3dlZCBVU0IgY2hhcmdlciBub3Qgb2sgZGV0ZWN0aW9uCisJCQkgOiBWQlVTX09WVgkJOgkgICAgICAgOiBPdmVydm9sdGFnZSBvbiBWYnVzIGJhbGwgZGV0ZWN0ZWQgKFVTQiBjaGFyZ2UgaXMgc3RvcHBlZCkKKwkJCSA6IENIX1dEX0VYUAkJOgkgICAgICAgOiBDaGFyZ2VyIHdhdGNoZG9nIGRldGVjdGVkCithYjg1MDAtZ3BhZGMgICAgICAgICAgICAgOiBIV19DT05WX0VORCAgICAgICAgICA6IHZkZGFkYyAgICAgICA6IEFuYWxvZ3VlIHRvIERpZ2l0YWwgQ29udmVydGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTV19DT05WX0VORCAgICAgICAgICA6ICAgICAgICAgICAgICA6CithYjg1MDAtZ3BpbyAgICAgICAgICAgICAgOiAgICAgICAgICAgICAgICAgICAgICA6ICAgICAgICAgICAgICA6IEdQSU8gQ29udHJvbGxlcgorYWI4NTAwLXBvbmtleSAgICAgICAgICAgIDogT05LRVlfREJGICAgICAgICAgICAgOiAgICAgICAgICAgICAgOiBQb3dlci1vbiBLZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE9OS0VZX0RCUiAgICAgICAgICAgIDogICAgICAgICAgICAgIDoKK2FiODUwMC1wd20gICAgICAgICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgIDogICAgICAgICAgICAgIDogUHVsc2UgV2lkdGggTW9kdWxhdG9yCithYjg1MDAtcmVndWxhdG9yICAgICAgICAgOiAgICAgICAgICAgICAgICAgICAgICA6ICAgICAgICAgICAgICA6IFJlZ3VsYXRvcnMKK2FiODUwMC1ydGMgICAgICAgICAgICAgICA6IDYwUyAgICAgICAgICAgICAgICAgIDogICAgICAgICAgICAgIDogUmVhbCBUaW1lIENsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgOiBBTEFSTSAgICAgICAgICAgICAgICA6ICAgICAgICAgICAgICA6CithYjg1MDAtc3lzY3RybCAgICAgICAgICAgOiAgICAgICAgICAgICAgICAgICAgICA6ICAgICAgICAgICAgICA6IFN5c3RlbSBDb250cm9sCithYjg1MDAtdXNiICAgICAgICAgICAgICAgOiBJRF9XQUtFVVBfUiAgICAgICAgICA6IHZkZHVscGl2aW8xOCA6IFVuaXZlcnNhbCBTZXJpYWwgQnVzCisgICAgICAgICAgICAgICAgICAgICAgICAgOiBJRF9XQUtFVVBfRiAgICAgICAgICA6IHYtYXBlICAgICAgICA6CisgICAgICAgICAgICAgICAgICAgICAgICAgOiBWQlVTX0RFVF9GICAgICAgICAgICA6IG11c2JfMXY4ICAgICA6CisgICAgICAgICAgICAgICAgICAgICAgICAgOiBWQlVTX0RFVF9SICAgICAgICAgICA6ICAgICAgICAgICAgICA6CisgICAgICAgICAgICAgICAgICAgICAgICAgOiBVU0JfTElOS19TVEFUVVMgICAgICA6ICAgICAgICAgICAgICA6CisgICAgICAgICAgICAgICAgICAgICAgICAgOiBVU0JfQURQX1BST0JFX1BMVUcgICA6ICAgICAgICAgICAgICA6CisgICAgICAgICAgICAgICAgICAgICAgICAgOiBVU0JfQURQX1BST0JFX1VOUExVRyA6ICAgICAgICAgICAgICA6CisKK1JlcXVpcmVkIGNoaWxkIGRldmljZSBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlICAgICAgICAgICAgIDogInN0ZXJpY3Nzb24sYWI4NTAwLVtibXxidGVtcHxjaGFyZ2VyfGZnfGdwYWRjfGdwaW98cG9ua2V5fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwd218cmVndWxhdG9yfHJ0Y3xzeXNjdHJsfHVzYl0iOworCitPcHRpb25hbCBjaGlsZCBkZXZpY2UgcHJvcGVydGllczoKKy0gaW50ZXJydXB0cyAgICAgICAgICAgICA6IGNvbnRhaW5zIHRoZSBkZXZpY2UgSVJRKHMpIHVzaW5nIHRoZSAyLWNlbGwgZm9ybWF0IChzZWUgYWJvdmUpCistIGludGVycnVwdC1uYW1lcyAgICAgICAgOiBjb250YWlucyBuYW1lcyBvZiBJUlEgcmVzb3VyY2UgaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgd2VyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcGxpZWQgaW4gdGhlIGludGVycnVwdHMgcHJvcGVydHkKKy0gPHN1cHBseV9uYW1lPi1zdXBwbHkgICA6IGNvbnRhaW5zIGEgcGhhbmRsZSB0byB0aGUgcmVndWxhdG9yIHN1cHBseSBub2RlIGluIERldmljZSBUcmVlCisKK05vbi1zdGFuZGFyZCBjaGlsZCBkZXZpY2UgcHJvcGVydGllczoKKyAtIEF1ZGlvIENPREVDOgorICAgLSBzdGVyaWNzc29uLGFtaWNbMXwyXS10eXBlLXNpbmdsZS1lbmRlZCA6IFNpbmdsZS1lbmRlZCBBbmFsb2dlIE1pYyAoZGVmYXVsdDogZGlmZmVyZW50aWFsKQorICAgLSBzdGVyaWNzc29uLGFtaWMxYS1iaWFzLXZhbWljMiAgICAgICAgICA6IEFuYWxvZ2UgTWljIHdpc2hlcyB0byB1c2UgYSBub24tc3RhbmRhcmQgVmFtaWMKKyAgIC0gc3Rlcmljc3NvbixhbWljMWItYmlhcy12YW1pYzIgICAgICAgICAgOiBBbmFsb2dlIE1pYyB3aXNoZXMgdG8gdXNlIGEgbm9uLXN0YW5kYXJkIFZhbWljCisgICAtIHN0ZXJpY3Nzb24sYW1pYzItYmlhcy12YW1pYzEgICAgICAgICAgIDogQW5hbG9nZSBNaWMgd2lzaGVzIHRvIHVzZSBhIG5vbi1zdGFuZGFyZCBWYW1pYworICAgLSBzdGVyaWNzc29uLGVhcnBlaWNlLWNtdiAgICAgICAgICAgICAgICA6IEVhcnBlaWNlIHZvbHRhZ2UgKG9ubHk6IDk1MCB8IDExMDAgfCAxMjcwIHwgMTU4MCkKKworYWI4NTAwIHsKKyAgICAgICAgIGNvbXBhdGlibGUgPSAic3Rlcmljc3NvbixhYjg1MDAiOworICAgICAgICAgaW50ZXJydXB0cyA9IDwwIDQwIDB4ND47CisgICAgICAgICBpbnRlcnJ1cHQtY29udHJvbGxlcjsKKyAgICAgICAgICNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisKKyAgICAgICAgIGFiODUwMC1ydGMgeworICAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gInN0ZXJpY3Nzb24sYWI4NTAwLXJ0YyI7CisgICAgICAgICAgICAgICAgIGludGVycnVwdHMgPSA8MTcgMHg0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTggMHg0PjsKKyAgICAgICAgICAgICAgICAgaW50ZXJydXB0LW5hbWVzID0gIjYwUyIsICJBTEFSTSI7CisgICAgICAgICB9OworCisgICAgICAgIGFiODUwMC1ncGFkYyB7CisgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJzdGVyaWNzc29uLGFiODUwMC1ncGFkYyI7CisgICAgICAgICAgICAgICAgaW50ZXJydXB0cyA9IDwzMiAweDQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM5IDB4ND47CisgICAgICAgICAgICAgICAgaW50ZXJydXB0LW5hbWVzID0gIkhXX0NPTlZfRU5EIiwgIlNXX0NPTlZfRU5EIjsKKyAgICAgICAgICAgICAgICB2ZGRhZGMtc3VwcGx5ID0gPCZhYjg1MDBfbGRvX3R2b3V0X3JlZz47CisgICAgICAgIH07CisKKyAgICAgICAgYWI4NTAwLXVzYiB7CisgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJzdGVyaWNzc29uLGFiODUwMC11c2IiOworICAgICAgICAgICAgICAgIGludGVycnVwdHMgPSA8IDkwIDB4NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk2IDB4NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0IDB4NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1IDB4NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc5IDB4NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc0IDB4NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc1IDB4ND47CisgICAgICAgICAgICAgICAgaW50ZXJydXB0LW5hbWVzID0gIklEX1dBS0VVUF9SIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSURfV0FLRVVQX0YiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWQlVTX0RFVF9GIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVkJVU19ERVRfUiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVTQl9MSU5LX1NUQVRVUyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVTQl9BRFBfUFJPQkVfUExVRyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVTQl9BRFBfUFJPQkVfVU5QTFVHIjsKKyAgICAgICAgICAgICAgICB2ZGR1bHBpdmlvMTgtc3VwcGx5ID0gPCZhYjg1MDBfbGRvX2ludGNvcmVfcmVnPjsKKyAgICAgICAgICAgICAgICB2LWFwZS1zdXBwbHkgPSA8JmRiODUwMF92YXBlX3JlZz47CisgICAgICAgICAgICAgICAgbXVzYl8xdjgtc3VwcGx5ID0gPCZkYjg1MDBfdnNtcHMyX3JlZz47CisgICAgICAgIH07CisKKyAgICAgICAgYWI4NTAwLXBvbmtleSB7CisgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJzdGVyaWNzc29uLGFiODUwMC1wb25rZXkiOworICAgICAgICAgICAgICAgIGludGVycnVwdHMgPSA8NiAweDQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcgMHg0PjsKKyAgICAgICAgICAgICAgICBpbnRlcnJ1cHQtbmFtZXMgPSAiT05LRVlfREJGIiwgIk9OS0VZX0RCUiI7CisgICAgICAgIH07CisKKyAgICAgICAgYWI4NTAwLXN5c2N0cmwgeworICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAic3Rlcmljc3NvbixhYjg1MDAtc3lzY3RybCI7CisgICAgICAgIH07CisKKyAgICAgICAgYWI4NTAwLXB3bSB7CisgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJzdGVyaWNzc29uLGFiODUwMC1wd20iOworICAgICAgICB9OworCisJY29kZWM6IGFiODUwMC1jb2RlYyB7CisJCWNvbXBhdGlibGUgPSAic3Rlcmljc3NvbixhYjg1MDAtY29kZWMiOworCisJCXN0ZXJpY3Nzb24sZWFycGVpY2UtY212ID0gPDk1MD47IC8qIFVuaXRzIGluIG1WLiAqLworCX07CisKKyAgICAgICAgYWI4NTAwLXJlZ3VsYXRvcnMgeworICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAic3Rlcmljc3NvbixhYjg1MDAtcmVndWxhdG9yIjsKKworICAgICAgICAgICAgICAgIGFiODUwMF9sZG9fYXV4MV9yZWc6IGFiODUwMF9sZG9fYXV4MSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgICAgICogU2VlOiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3JlZ3VsYXRvci50eHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHJlZ3VsYXRvcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIH07CisgICAgICAgIH07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9hcml6b25hLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvYXJpem9uYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThiZTBjYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvYXJpem9uYS50eHQKQEAgLTAsMCArMSw5NyBAQAorV29sZnNvbiBBcml6b25hIGNsYXNzIGF1ZGlvIFNvQ3MKKworVGhlc2UgZGV2aWNlcyBhcmUgYXVkaW8gU29DcyB3aXRoIGV4dGVuc2l2ZSBkaWdpdGFsIGNhcGFiaWxpdGVzIGFuZCBhIHJhbmdlCitvZiBhbmFsb2d1ZSBJL08uCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogT25lIG9mIHRoZSBmb2xsb3dpbmcgY2hpcC1zcGVjaWZpYyBzdHJpbmdzOgorICAgICAgICAid2xmLHdtNTEwMiIKKyAgICAgICAgIndsZix3bTUxMTAiCisgICAgICAgICJ3bGYsd204MjgwIgorICAgICAgICAid2xmLHdtODk5NyIKKyAgICAgICAgIndsZix3bTg5OTgiCisgICAgICAgICJ3bGYsd20xODE0IgorCisgIC0gcmVnIDogSTJDIHNsYXZlIGFkZHJlc3Mgd2hlbiBjb25uZWN0ZWQgdXNpbmcgSTJDLCBjaGlwIHNlbGVjdCBudW1iZXIgd2hlbgorICAgIHVzaW5nIFNQSS4KKworICAtIGludGVycnVwdHMgOiBUaGUgaW50ZXJydXB0IGxpbmUgdGhlIC9JUlEgc2lnbmFsIGZvciB0aGUgZGV2aWNlIGlzCisgICAgY29ubmVjdGVkIHRvLgorICAtIGludGVycnVwdC1jb250cm9sbGVyIDogQXJpem9uYSBjbGFzcyBkZXZpY2VzIGNvbnRhaW4gaW50ZXJydXB0IGNvbnRyb2xsZXJzCisgICAgYW5kIG1heSBwcm92aWRlIGludGVycnVwdCBzZXJ2aWNlcyB0byBvdGhlciBkZXZpY2VzLgorICAtIGludGVycnVwdC1wYXJlbnQgOiBUaGUgcGFyZW50IGludGVycnVwdCBjb250cm9sbGVyLgorICAtICNpbnRlcnJ1cHQtY2VsbHM6IHRoZSBudW1iZXIgb2YgY2VsbHMgdG8gZGVzY3JpYmUgYW4gSVJRLCB0aGlzIHNob3VsZCBiZSAyLgorICAgIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBJUlEgbnVtYmVyLgorICAgIFRoZSBzZWNvbmQgY2VsbCBpcyB0aGUgZmxhZ3MsIGVuY29kZWQgYXMgdGhlIHRyaWdnZXIgbWFza3MgZnJvbQorICAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHRzLnR4dAorCisgIC0gZ3Bpby1jb250cm9sbGVyIDogSW5kaWNhdGVzIHRoaXMgZGV2aWNlIGlzIGEgR1BJTyBjb250cm9sbGVyLgorICAtICNncGlvLWNlbGxzIDogTXVzdCBiZSAyLiBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgcGluIG51bWJlciBhbmQgdGhlCisgICAgc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IG9wdGlvbmFsIHBhcmFtZXRlcnMgKGN1cnJlbnRseSB1bnVzZWQpLgorCisgIC0gQVZERC1zdXBwbHksIERCVkREMS1zdXBwbHksIENQVkRELXN1cHBseSA6IFBvd2VyIHN1cHBsaWVzIGZvciB0aGUgZGV2aWNlLAorICAgIGFzIGNvdmVyZWQgaW4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9yZWd1bGF0b3IudHh0CisKKyAgLSBEQlZERDItc3VwcGx5LCBEQlZERDMtc3VwcGx5IDogQWRkaXRpb25hbCBkYXRhYnVzIHBvd2VyIHN1cHBsaWVzICh3bTUxMDIsCisgICAgd201MTEwLCB3bTgyODAsIHdtODk5OCwgd20xODE0KQorCisgIC0gU1BLVkRETC1zdXBwbHksIFNQS1ZERFItc3VwcGx5IDogU3BlYWtlciBkcml2ZXIgcG93ZXIgc3VwcGxpZXMgKHdtNTEwMiwKKyAgICB3bTUxMTAsIHdtODI4MCwgd204OTk4LCB3bTE4MTQpCisKKyAgLSBTUEtWREQtc3VwcGx5IDogU3BlYWtlciBkcml2ZXIgcG93ZXIgc3VwcGx5ICh3bTg5OTcpCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKyAgLSB3bGYscmVzZXQgOiBHUElPIHNwZWNpZmllciBmb3IgdGhlIEdQSU8gY29udHJvbGxpbmcgL1JFU0VUCisKKyAgLSB3bGYsZ3Bpby1kZWZhdWx0cyA6IEEgbGlzdCBvZiBHUElPIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgdmFsdWVzLiBEZWZpbmVzCisgICAgZm9yIHRoZSBhcHByb3ByaWF0ZSB2YWx1ZXMgY2FuIGZvdW5kIGluIDxkdC1iaW5kaW5ncy9tZmQvYXJpem9uYS50eHQ+LiBJZgorICAgIGFic2VudCwgbm8gY29uZmlndXJhdGlvbiBvZiB0aGVzZSByZWdpc3RlcnMgaXMgcGVyZm9ybWVkLiBJZiBhbnkgZW50cnkgaGFzCisgICAgYSB2YWx1ZSB0aGF0IGlzIG91dCBvZiByYW5nZSBmb3IgYSAxNiBiaXQgcmVnaXN0ZXIgdGhlbiB0aGUgY2hpcCBkZWZhdWx0CisgICAgd2lsbCBiZSB1c2VkLiBJZiBwcmVzZW50IGV4YWN0bHkgZml2ZSB2YWx1ZXMgbXVzdCBiZSBzcGVjaWZpZWQuCisKKyAgLSB3bGYsaW5tb2RlIDogQSBsaXN0IG9mIElObl9NT0RFIHJlZ2lzdGVyIHZhbHVlcywgd2hlcmUgbiBpcyB0aGUgbnVtYmVyCisgICAgb2YgaW5wdXQgc2lnbmFscy4gVmFsaWQgdmFsdWVzIGFyZSAwIChEaWZmZXJlbnRpYWwpLCAxIChTaW5nbGUtZW5kZWQpIGFuZAorICAgIDIgKERpZ2l0YWwgTWljcm9waG9uZSkuIElmIGFic2VudCwgSU5uX01PREUgcmVnaXN0ZXJzIHNldCB0byAwIGJ5IGRlZmF1bHQuCisgICAgSWYgcHJlc2VudCwgdmFsdWVzIG11c3QgYmUgc3BlY2lmaWVkIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgbnVtYmVyIG9mCisgICAgaW5wdXQgc2lnbmFscy4gSWYgdmFsdWVzIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGlucHV0IHNpZ25hbHMsIGVsZW1lbnRzCisgICAgdGhhdCBoYXZlIG5vdCBiZWVuIHNwZWNpZmllZCBhcmUgc2V0IHRvIDAgYnkgZGVmYXVsdC4gRW50cmllcyBhcmU6CisgICAgPElOMSwgSU4yLCBJTjMsIElOND4gKHdtNTEwMiwgd201MTEwLCB3bTgyODAsIHdtODk5NykKKyAgICA8SU4xQSwgSU4yQSwgSU4xQiwgSU4yQj4gKHdtODk5OCwgd20xODE0KQorCisgIC0gd2xmLGRtaWMtcmVmIDogRE1JQyByZWZlcmVuY2Ugdm9sdGFnZSBzb3VyY2UgZm9yIGVhY2ggaW5wdXQsIGNhbiBiZQorICAgIHNlbGVjdGVkIGZyb20gZWl0aGVyIE1JQ1ZERCBvciBvbmUgb2YgdGhlIE1JQ0JJQVMncywgZGVmaW5lcworICAgIChBUklaT05BX0RNSUNfeHh4eCkgYXJlIHByb3ZpZGVkIGluIDxkdC1iaW5kaW5ncy9tZmQvYXJpem9uYS50eHQ+LiBJZgorICAgIHByZXNlbnQsIHRoZSBudW1iZXIgb2YgdmFsdWVzIHNob3VsZCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlCisgICAgbnVtYmVyIG9mIGlucHV0cywgdW5zcGVjaWZpZWQgaW5wdXRzIHdpbGwgdXNlIHRoZSBjaGlwIGRlZmF1bHQuCisKKyAgLSBEQ1ZERC1zdXBwbHksIE1JQ1ZERC1zdXBwbHkgOiBQb3dlciBzdXBwbGllcywgb25seSBuZWVkIHRvIGJlIHNwZWNpZmllZCBpZgorICAgIHRoZXkgYXJlIGJlaW5nIGV4dGVybmFsbHkgc3VwcGxpZWQuIEFzIGNvdmVyZWQgaW4KKyAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3JlZ3VsYXRvci50eHQKKworQWxzbyBzZWUgY2hpbGQgc3BlY2lmaWMgZGV2aWNlIHByb3BlcnRpZXM6CisgIFJlZ3VsYXRvciAtIC4uL3JlZ3VsYXRvci9hcml6b25hLXJlZ3VsYXRvci50eHQKKyAgRXh0Y29uICAgIC0gLi4vZXh0Y29uL2V4dGNvbi1hcml6b25hLnR4dAorCitFeGFtcGxlOgorCitjb2RlYzogd201MTAyQDFhIHsKKwljb21wYXRpYmxlID0gIndsZix3bTUxMDIiOworCXJlZyA9IDwweDFhPjsKKwlpbnRlcnJ1cHRzID0gPDM0Nz47CisJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKyAgICAgICAgaW50ZXJydXB0LXBhcmVudCA9IDwmZ2ljPjsKKworCWdwaW8tY29udHJvbGxlcjsKKwkjZ3Bpby1jZWxscyA9IDwyPjsKKworCXdsZixncGlvLWRlZmF1bHRzID0gPAorCQlBUklaT05BX0dQX0ZOX1RYTFJDTEsKKwkJQVJJWk9OQV9HUF9ERUZBVUxUCisJCUFSSVpPTkFfR1BfREVGQVVMVAorCQlBUklaT05BX0dQX0RFRkFVTFQKKwkJQVJJWk9OQV9HUF9ERUZBVUxUCisJPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2FzMzcxMS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2FzMzcxMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk4Y2YxOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvYXMzNzExLnR4dApAQCAtMCwwICsxLDczIEBACitBUzM3MTEgaXMgYW4gSTJDIFBNSUMgZnJvbSBBdXN0cmlhIE1pY3JvU3lzdGVtcyB3aXRoIG11bHRpcGxlIERDREMgYW5kIExETyBwb3dlcgorc3VwcGxpZXMsIGEgYmF0dGVyeSBjaGFyZ2VyIGFuZCBhbiBSVEMuIFNvIGZhciBvbmx5IGJpbmRpbmdzIGZvciB0aGUgdHdvIHN0ZXB1cAorRENEQyBjb252ZXJ0ZXJzIGFyZSBkZWZpbmVkLiBPdGhlciBEQ0RDIGFuZCBMRE8gc3VwcGxpZXMgYXJlIGNvbmZpZ3VyZWQsIHVzaW5nCitzdGFuZGFyZCByZWd1bGF0b3IgcHJvcGVydGllcywgdGhleSBtdXN0IGJlbG9uZyB0byBhIHN1Yi1ub2RlLCBjYWxsZWQKKyJyZWd1bGF0b3JzIiBhbmQgYmUgY2FsbGVkICJzZDEiIHRvICJzZDQiIGFuZCAibGRvMSIgdG8gImxkbzguIiBTdGVwdXAgY29udmVydGVyCitjb25maWd1cmF0aW9uIHNob3VsZCBiZSBwbGFjZWQgaW4gYSBzdWJub2RlLCBjYWxsZWQgImJhY2tsaWdodC4iCisKK0NvbXB1bHNvcnkgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZQkJOiBtdXN0IGJlICJhbXMsYXMzNzExIgorLSByZWcJCQk6IHNwZWNpZmllcyB0aGUgSTJDIGFkZHJlc3MKKworVG8gdXNlIHRoZSBTVTEgY29udmVydGVyIGFzIGEgYmFja2xpZ2h0IHNvdXJjZSB0aGUgZm9sbG93aW5nIHR3byBwcm9wZXJ0aWVzIG11c3QKK2JlIHByb3ZpZGVkOgorLSBzdTEtZGV2CQk6IGZyYW1lYnVmZmVyIHBoYW5kbGUKKy0gc3UxLW1heC11QQkJOiBtYXhpbXVtIGN1cnJlbnQKKworVG8gdXNlIHRoZSBTVTIgY29udmVydGVyIGFzIGEgYmFja2xpZ2h0IHNvdXJjZSB0aGUgZm9sbG93aW5nIHR3byBwcm9wZXJ0aWVzIG11c3QKK2JlIHByb3ZpZGVkOgorLSBzdTItZGV2CQk6IGZyYW1lYnVmZmVyIHBoYW5kbGUKKy0gc3UxLW1heC11QQkJOiBtYXhpbXVtIGN1cnJlbnQKKworQWRkaXRpb25hbGx5IG9uZSBvZiB0aGVzZSBwcm9wZXJ0aWVzIG11c3QgYmUgcHJvdmlkZWQgdG8gc2VsZWN0IHRoZSB0eXBlIG9mCitmZWVkYmFjayB1c2VkOgorLSBzdTItZmVlZGJhY2stdm9sdGFnZQk6IHZvbHRhZ2UgZmVlZGJhY2sgaXMgdXNlZAorLSBzdTItZmVlZGJhY2stY3VycjEJOiBDVVJSMSBpbnB1dCB1c2VkIGZvciBjdXJyZW50IGZlZWRiYWNrCistIHN1Mi1mZWVkYmFjay1jdXJyMgk6IENVUlIyIGlucHV0IHVzZWQgZm9yIGN1cnJlbnQgZmVlZGJhY2sKKy0gc3UyLWZlZWRiYWNrLWN1cnIzCTogQ1VSUjMgaW5wdXQgdXNlZCBmb3IgY3VycmVudCBmZWVkYmFjaworLSBzdTItZmVlZGJhY2stY3Vyci1hdXRvOiBhdXRvbWF0aWMgY3VycmVudCBmZWVkYmFjayBzZWxlY3Rpb24KKworYW5kIG9uZSBvZiB0aGVzZSB0byBzZWxlY3QgdGhlIG92ZXItdm9sdGFnZSBwcm90ZWN0aW9uIHBpbgorLSBzdTItZmJwcm90LWx4LXNkNAk6IExYX1NENCBpcyB1c2VkIGZvciBvdmVyLXZvbHRhZ2UgcHJvdGVjdGlvbgorLSBzdTItZmJwcm90LWdwaW8yCTogR1BJTzIgaXMgdXNlZCBmb3Igb3Zlci12b2x0YWdlIHByb3RlY3Rpb24KKy0gc3UyLWZicHJvdC1ncGlvMwk6IEdQSU8zIGlzIHVzZWQgZm9yIG92ZXItdm9sdGFnZSBwcm90ZWN0aW9uCistIHN1Mi1mYnByb3QtZ3BpbzQJOiBHUElPNCBpcyB1c2VkIGZvciBvdmVyLXZvbHRhZ2UgcHJvdGVjdGlvbgorCitJZiAic3UyLWZlZWRiYWNrLWN1cnItYXV0byIgaXMgc2VsZWN0ZWQsIG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcworaGF2ZSB0byBiZSBzcGVjaWZpZWQ6CistIHN1Mi1hdXRvLWN1cnIxCTogdXNlIENVUlIxIGlucHV0IGZvciBjdXJyZW50IGZlZWRiYWNrCistIHN1Mi1hdXRvLWN1cnIyCTogdXNlIENVUlIyIGlucHV0IGZvciBjdXJyZW50IGZlZWRiYWNrCistIHN1Mi1hdXRvLWN1cnIzCTogdXNlIENVUlIzIGlucHV0IGZvciBjdXJyZW50IGZlZWRiYWNrCisKK0V4YW1wbGU6CisKK2FzMzcxMUA0MCB7CisJY29tcGF0aWJsZSA9ICJhbXMsYXMzNzExIjsKKwlyZWcgPSA8MHg0MD47CisKKwlyZWd1bGF0b3JzIHsKKwkJc2Q0IHsKKwkJCXJlZ3VsYXRvci1uYW1lID0gIjEuMjE1ViI7CisJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMjE1MDAwPjsKKwkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDEyMzUwMDA+OworCQl9OworCQlsZG8yIHsKKwkJCXJlZ3VsYXRvci1uYW1lID0gIjIuOFYgQ1BVIjsKKwkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDI4MDAwMDA+OworCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MjgwMDAwMD47CisJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCX07CisJfTsKKworCWJhY2tsaWdodCB7CisJCWNvbXBhdGlibGUgPSAiYW1zLGFzMzcxMS1ibCI7CisJCXN1Mi1kZXYgPSA8JmxjZGM+OworCQlzdTItbWF4LXVBID0gPDM2MDAwPjsKKwkJc3UyLWZlZWRiYWNrLWN1cnItYXV0bzsKKwkJc3UyLWZicHJvdC1ncGlvNDsKKwkJc3UyLWF1dG8tY3VycjE7CisJCXN1Mi1hdXRvLWN1cnIyOworCQlzdTItYXV0by1jdXJyMzsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvYXMzNzIyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvYXMzNzIyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjY0YjJhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9hczM3MjIudHh0CkBAIC0wLDAgKzEsMjEzIEBACisqIGFtcyBBUzM3MjIgUG93ZXIgbWFuYWdlbWVudCBJQy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKy0gY29tcGF0aWJsZTogTXVzdCBiZSAiYW1zLGFzMzcyMiIuCistIHJlZzogSTJDIGRldmljZSBhZGRyZXNzLgorLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogQVMzNzIyIGhhcyBpbnRlcm5hbCBpbnRlcnJ1cHQgY29udHJvbGxlciB3aGljaCB0YWtlcyB0aGUKKyAgaW50ZXJydXB0IHJlcXVlc3QgZnJvbSBpbnRlcm5hbCBzdWItYmxvY2tzIGxpa2UgUlRDLCByZWd1bGF0b3JzLCBHUElPcyBhcyB3ZWxsCisgIGFzIGV4dGVybmFsIGlucHV0LgorLSAjaW50ZXJydXB0LWNlbGxzOiBTaG91bGQgYmUgc2V0IHRvIDIgZm9yIElSUSBudW1iZXIgYW5kIGZsYWdzLgorICBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgSVJRIG51bWJlci4gSVJRIG51bWJlcnMgZm9yIGRpZmZlcmVudCBpbnRlcnJ1cHQgc291cmNlCisgIG9mIEFTMzcyMiBhcmUgZGVmaW5lZCBhdCBkdC1iaW5kaW5ncy9tZmQvYXMzNzIyLmgKKyAgVGhlIHNlY29uZCBjZWxsIGlzIHRoZSBmbGFncywgZW5jb2RlZCBhcyB0aGUgdHJpZ2dlciBtYXNrcyBmcm9tIGJpbmRpbmcgZG9jdW1lbnQKKwlpbnRlcnJ1cHRzLnR4dCwgdXNpbmcgZHQtYmluZGluZ3MvaXJxLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0gYW1zLGVuYWJsZS1pbnRlcm5hbC1pbnQtcHVsbHVwOiBCb29sZWFuIHByb3BlcnR5LCB0byBlbmFibGUgaW50ZXJuYWwgcHVsbHVwIG9uCisJaW50ZXJydXB0IHBpbi4gTWlzc2luZyB0aGlzIHdpbGwgZGlzYWJsZSBpbnRlcm5hbCBwdWxsdXAgb24gSU5UIHBpbi4KKy0gYW1zLGVuYWJsZS1pbnRlcm5hbC1pMmMtcHVsbHVwOiBCb29sZWFuIHByb3BlcnR5LCB0byBlbmFibGUgaW50ZXJuYWwgcHVsbHVwIG9uCisJaTJjIHNjbC9zZGEgcGlucy4gTWlzc2luZyB0aGlzIHdpbGwgZGlzYWJsZSBpbnRlcm5hbCBwdWxsdXAgb24gaTJjCisJc2NsL3NkYSBsaW5lcy4KKworT3B0aW9uYWwgc3VibW9kdWxlIGFuZCB0aGVpciBwcm9wZXJ0aWVzOgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1Bpbm11eCBhbmQgR1BJTzoKKz09PT09PT09PT09PT09PQorRGV2aWNlIGhhcyA4IEdQSU8gcGlucyB3aGljaCBjYW4gYmUgY29uZmlndXJlZCBhcyBHUElPIGFzIHdlbGwgYXMgdGhlIHNwZWNpYWwgSU8KK2Z1bmN0aW9ucy4KKworUGxlYXNlIHJlZmVyIHRvIHBpbmN0cmwtYmluZGluZ3MudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBkZXRhaWxzIG9mIHRoZQorY29tbW9uIHBpbmN0cmwgYmluZGluZ3MgdXNlZCBieSBjbGllbnQgZGV2aWNlcywgaW5jbHVkaW5nIHRoZSBtZWFuaW5nIG9mIHRoZQorcGhyYXNlICJwaW4gY29uZmlndXJhdGlvbiBub2RlIi4KKworRm9sbG93aW5nIGFyZSBwcm9wZXJ0aWVzIHdoaWNoIGlzIG5lZWRlZCBpZiBHUElPIGFuZCBwaW5tdXggZnVuY3Rpb25hbGl0eQoraXMgcmVxdWlyZWQ6CisgICAgUmVxdWlyZWQgcHJvcGVydGllczoKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tCisJLSBncGlvLWNvbnRyb2xsZXI6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIEdQSU8gY29udHJvbGxlci4KKwktICNncGlvLWNlbGxzOiBOdW1iZXIgb2YgR1BJTyBjZWxscy4gUmVmZXIgdG8gYmluZGluZyBkb2N1bWVudAorCQkJZ3Bpby9ncGlvLnR4dAorCisgICAgT3B0aW9uYWwgcHJvcGVydGllczoKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorCUZvbGxvd2luZyBwcm9wZXJ0aWVzIGFyZSByZXF1aXJlIGlmIHBpbiBjb250cm9sIHNldHRpbmcgaXMgcmVxdWlyZWQKKwlhdCBib290LgorCS0gcGluY3RybC1uYW1lczogQSBwaW5jdHJsIHN0YXRlIG5hbWVkICJkZWZhdWx0IiBiZSBkZWZpbmVkLCB1c2luZyB0aGUKKwkJYmluZGluZ3MgaW4gcGluY3RybC9waW5jdHJsLWJpbmRpbmcudHh0LgorCS0gcGluY3RybFswLi4ubl06IFByb3BlcnRpZXMgdG8gY29udGFpbiB0aGUgcGhhbmRsZSB0aGF0IHJlZmVyIHRvCisJCWRpZmZlcmVudCBub2RlcyBvZiBwaW4gY29udHJvbCBzZXR0aW5ncy4gVGhlc2Ugbm9kZXMgcmVwcmVzZW50cworCQl0aGUgcGluIGNvbnRyb2wgc2V0dGluZyBvZiBzdGF0ZSAwIHRvIHN0YXRlIG4uIEVhY2ggb2YgdGhlc2UKKwkJbm9kZXMgY29udGFpbnMgZGlmZmVyZW50IHN1Ym5vZGVzIHRvIHJlcHJlc2VudHMgc29tZSBkZXNpcmVkCisJCWNvbmZpZ3VyYXRpb24gZm9yIGEgbGlzdCBvZiBwaW5zLiBUaGlzIGNvbmZpZ3VyYXRpb24gY2FuCisJCWluY2x1ZGUgdGhlIG11eCBmdW5jdGlvbiB0byBzZWxlY3Qgb24gdGhvc2UgcGluKHMpLCBhbmQKKwkJdmFyaW91cyBwaW4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLCBzdWNoIGFzIHB1bGwtdXAsCisJCW9wZW4gZHJhaW4uCisKKwkJRWFjaCBzdWJub2RlIGhhdmUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisJCVJlcXVpcmVkIHByb3BlcnRpZXM6CisJCSAgICAtIHBpbnM6IExpc3Qgb2YgcGlucy4gVmFsaWQgdmFsdWVzIG9mIHBpbnMgcHJvcGVydGllcyBhcmU6CisJCQkJZ3BpbzAsIGdwaW8xLCBncGlvMiwgZ3BpbzMsIGdwaW80LCBncGlvNSwKKwkJCQlncGlvNiwgZ3BpbzcKKworCQlPcHRpb25hbCBwcm9wZXJ0aWVzOgorCQkJZnVuY3Rpb24sIGJpYXMtZGlzYWJsZSwgYmlhcy1wdWxsLXVwLCBiaWFzLXB1bGwtZG93biwKKwkJCWJpYXMtaGlnaC1pbXBlZGFuY2UsIGRyaXZlLW9wZW4tZHJhaW4uCisKKwkJCVZhbGlkIHZhbHVlcyBmb3IgZnVuY3Rpb24gcHJvcGVydGllcyBhcmU6CisJCQkJZ3BpbywgaW50ZXJydXB0LW91dCwgZ3Bpby1pbi1pbnRlcnJ1cHQsCisJCQkJdnN1cC12YmF0LWxvdy11bmRlYm91bmNlLW91dCwKKwkJCQl2c3VwLXZiYXQtbG93LWRlYm91bmNlLW91dCwKKwkJCQl2b2x0YWdlLWluLXN0YW5kYnksIG9jLXBnLXNkMCwgb2MtcGctc2Q2LAorCQkJCXBvd2VyZ29vZC1vdXQsIHB3bS1pbiwgcHdtLW91dCwgY2xrMzJrLW91dCwKKwkJCQl3YXRjaGRvZy1pbiwgc29mdC1yZXNldC1pbgorCitSZWd1bGF0b3JzOgorPT09PT09PT09PT0KK0RldmljZSBoYXMgbXVsdGlwbGUgRENEQyBhbmQgTERPcy4gVGhlIG5vZGUgInJlZ3VsYXRvcnMiIGlzIHJlcXVpcmUgaWYgcmVndWxhdG9yCitmdW5jdGlvbmFsaXR5IGlzIG5lZWRlZC4KKworRm9sbG93aW5nIGFyZSBwcm9wZXJ0aWVzIG9mIHJlZ3VsYXRvciBzdWJub2RlLgorCisgICAgT3B0aW9uYWwgcHJvcGVydGllczoKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tCisJVGhlIGlucHV0IHN1cHBseSBvZiByZWd1bGF0b3JzIGFyZSB0aGUgb3B0aW9uYWwgcHJvcGVydGllcyBvbiB0aGUKKwlyZWd1bGF0b3Igbm9kZS4gVGhlIGlucHV0IHN1cHBseSBvZiB0aGVzZSByZWd1bGF0b3JzIGFyZSBwcm92aWRlZAorCXRocm91Z2ggZm9sbG93aW5nIHByb3BlcnRpZXM6CisJCXZzdXAtc2QyLXN1cHBseTogSW5wdXQgc3VwcGx5IGZvciBTRDIuCisJCXZzdXAtc2QzLXN1cHBseTogSW5wdXQgc3VwcGx5IGZvciBTRDMuCisJCXZzdXAtc2Q0LXN1cHBseTogSW5wdXQgc3VwcGx5IGZvciBTRDQuCisJCXZzdXAtc2Q1LXN1cHBseTogSW5wdXQgc3VwcGx5IGZvciBTRDUuCisJCXZpbi1sZG8wLXN1cHBseTogSW5wdXQgc3VwcGx5IGZvciBMRE8wLgorCQl2aW4tbGRvMS02LXN1cHBseTogSW5wdXQgc3VwcGx5IGZvciBMRE8xIGFuZCBMRE82LgorCQl2aW4tbGRvMi01LTctc3VwcGx5OiBJbnB1dCBzdXBwbHkgZm9yIExETzIsIExETzUgYW5kIExETzcuCisJCXZpbi1sZG8zLTQtc3VwcGx5OiBJbnB1dCBzdXBwbHkgZm9yIExETzMgYW5kIExETzQuCisJCXZpbi1sZG85LTEwLXN1cHBseTogSW5wdXQgc3VwcGx5IGZvciBMRE85IGFuZCBMRE8xMC4KKwkJdmluLWxkbzExLXN1cHBseTogSW5wdXQgc3VwcGx5IGZvciBMRE8xMS4KKworICAgIE9wdGlvbmFsIHN1YiBub2RlcyBmb3IgcmVndWxhdG9yczoKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlUaGUgc3Vibm9kZXMgbmFtZSBpcyB0aGUgbmFtZSBvZiByZWd1bGF0b3IgYW5kIGl0IG11c3QgYmUgb25lIG9mOgorCXNkWzAtNl0sIGxkb1swLTddLCBsZG9bOS0xMV0KKworCUVhY2ggc3ViLW5vZGUgc2hvdWxkIGNvbnRhaW4gdGhlIGNvbnN0cmFpbnRzIGFuZCBpbml0aWFsaXphdGlvbgorCWluZm9ybWF0aW9uIGZvciB0aGF0IHJlZ3VsYXRvci4gU2VlIHJlZ3VsYXRvci50eHQgZm9yIGEgZGVzY3JpcHRpb24KKwlvZiBzdGFuZGFyZCBwcm9wZXJ0aWVzIGZvciB0aGVzZSBzdWItbm9kZXMuCisJQWRkaXRpb25hbCBvcHRpb25hbCBjdXN0b20gcHJvcGVydGllcyAgYXJlIGxpc3RlZCBiZWxvdy4KKwkJYW1zLGV4dC1jb250cm9sOiBFeHRlcm5hbCBjb250cm9sIG9mIHRoZSByYWlsLiBUaGUgb3B0aW9uIG9mCisJCQl0aGlzIHByb3BlcnRpZXMgd2lsbCB0ZWxsIHdoaWNoIGV4dGVybmFsIGlucHV0IGlzCisJCQljb250cm9sbGluZyB0aGlzIHJhaWwuIFZhbGlkIHZhbHVlcyBhcmUgMCwgMSwgMiBhZCAzLgorCQkJMDogVGhlcmUgaXMgbm8gZXh0ZXJuYWwgY29udHJvbCBvZiB0aGlzIHJhaWwuCisJCQkxOiBSYWlsIGlzIGNvbnRyb2xsZWQgYnkgRU5BQkxFMSBpbnB1dCBwaW4uCisJCQkyOiBSYWlsIGlzIGNvbnRyb2xsZWQgYnkgRU5BQkxFMiBpbnB1dCBwaW4uCisJCQkzOiBSYWlsIGlzIGNvbnRyb2xsZWQgYnkgRU5BQkxFMyBpbnB1dCBwaW4uCisJCQlNaXNzaW5nIHRoaXMgcHJvcGVydHkgb24gRFQgd2lsbCBiZSBhc3N1bWUgYXMgbm8KKwkJCWV4dGVybmFsIGNvbnRyb2wuIFRoZSBleHRlcm5hbCBjb250cm9sIHBpbiBtYWNyb3MKKwkJCWFyZSBkZWZpbmVkIEBkdC1iaW5kaW5ncy9tZmQvYXMzNzIyLmgKKworCQlhbXMsZW5hYmxlLXRyYWNraW5nOiBFbmFibGUgdHJhY2tpbmcgd2l0aCBTRDEsIG9ubHkgc3VwcG9ydGVkCisJCQlieSBMRE8zLgorCitQb3dlci1vZmY6Cis9PT09PT09PT0KK0FTMzcyMiBzdXBwb3J0cyB0aGUgc3lzdGVtIHBvd2VyIG9mZiBieSB0dXJuaW5nIG9mZiBhbGwgaXRzIHJhaWwuIFRoaXMKK2lzIHByb3ZpZGVkIHRocm91Z2ggcG1fcG93ZXJfb2ZmLgorVGhlIGRldmljZSBub2RlIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB0byBlbmFibGUgdGhpcworZnVuY3Rpb25hbGl0eQorYW1zLHN5c3RlbS1wb3dlci1jb250cm9sbGVyOiBCb29sZWFuLCB0byBlbmFibGUgdGhlIHBvd2VyIG9mZiBmdW5jdGlvbmFsaXR5CisgICAgICAgIHRocm91Z2ggdGhpcyBkZXZpY2UuCisKK0V4YW1wbGU6CistLS0tLS0tLQorI2luY2x1ZGUgPGR0LWJpbmRpbmdzL21mZC9hczM3MjIuaD4KKy4uLgorYW1zMzcyMiB7CisJY29tcGF0aWJsZSA9ICJhbXMsYXMzNzIyIjsKKwlyZWcgPSA8MHg0OD47CisKKwlhbXMsc3lzdGVtLXBvd2VyLWNvbnRyb2xsZXI7CisKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpbnRjPjsKKwlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCisJZ3Bpby1jb250cm9sbGVyOworCSNncGlvLWNlbGxzID0gPDI+OworCisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwlwaW5jdHJsLTAgPSA8JmFzMzcyMl9kZWZhdWx0PjsKKworCWFzMzcyMl9kZWZhdWx0OiBwaW5tdXggeworCQkJZ3BpbzAgeworCQkJCXBpbnMgPSAiZ3BpbzAiOworCQkJCWZ1bmN0aW9uID0gImdwaW8iOworCQkJCWJpYXMtcHVsbC1kb3duOworCQkJfTsKKworCQkJZ3BpbzFfMl80XzcgeworCQkJCXBpbnMgPSAiZ3BpbzEiLCAiZ3BpbzIiLCAiZ3BpbzQiLCAiZ3BpbzciOworCQkJCWZ1bmN0aW9uID0gImdwaW8iOworCQkJCWJpYXMtcHVsbC11cDsKKwkJCX07CisKKwkJCWdwaW81IHsKKwkJCQlwaW5zID0gImdwaW81IjsKKwkJCQlmdW5jdGlvbiA9ICJjbGszMmtfb3V0IjsKKwkJCX07CisJfQorCisJcmVndWxhdG9ycyB7CisJCQl2c3VwLXNkMi1zdXBwbHkgPSA8Li4uPjsKKwkJCS4uLgorCisJCQlzZDAgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gInZkZF9jcHUiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDcwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTQwMDAwMD47CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQlhbXMsZXh0LWNvbnRyb2wgPSA8Mj47CisJCQl9OworCisJCQlzZDEgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gInZkZF9jb3JlIjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw3MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE0MDAwMDA+OworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQkJYW1zLGV4dC1jb250cm9sID0gPDE+OworCQkJfTsKKworCQkJc2QyIHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJ2ZGRpb19kZHIiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDEzNTAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDEzNTAwMDA+OworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQlzZDQgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gImF2ZGQtaGRtaS1wZXgiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDEwNTAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDEwNTAwMDA+OworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQlzZDUgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gInZkZC0xdjgiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDE4MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE4MDAwMDA+OworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCQkJLi4uLgorCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9hdG1lbC1mbGV4Y29tLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvYXRtZWwtZmxleGNvbS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkyMzAwMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvYXRtZWwtZmxleGNvbS50eHQKQEAgLTAsMCArMSw2MyBAQAorKiBEZXZpY2UgdHJlZSBiaW5kaW5ncyBmb3IgQXRtZWwgRmxleGNvbSAoRmxleGlibGUgU2VyaWFsIENvbW11bmljYXRpb24gVW5pdCkKKworVGhlIEF0bWVsIEZsZXhjb20gaXMganVzdCBhIHdyYXBwZXIgd2hpY2ggZW1iZWRzIGEgU1BJIGNvbnRyb2xsZXIsIGFuIEkyQworY29udHJvbGxlciBhbmQgYW4gVVNBUlQuIE9ubHkgb25lIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGF0IGEgdGltZSBhbmQgaXMgY2hvc2VuCithdCBib290IHRpbWUgYWNjb3JkaW5nIHRvIHRoZSBkZXZpY2UgdHJlZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZToJCVNob3VsZCBiZSAiYXRtZWwsc2FtYTVkMi1mbGV4Y29tIgorLSByZWc6CQkJU2hvdWxkIGJlIHRoZSBvZmZzZXQvbGVuZ3RoIHZhbHVlIGZvciBGbGV4Y29tIGRlZGljYXRlZAorCQkJSS9PIHJlZ2lzdGVycyAod2l0aG91dCBVU0FSVCwgVFdJIG9yIFNQSSByZWdpc3RlcnMpLgorLSBjbG9ja3M6CQlTaG91bGQgYmUgdGhlIEZsZXhjb20gcGVyaXBoZXJhbCBjbG9jayBmcm9tIFBNQy4KKy0gI2FkZHJlc3MtY2VsbHM6CVNob3VsZCBiZSA8MT4KKy0gI3NpemUtY2VsbHM6CQlTaG91bGQgYmUgPDE+CistIHJhbmdlczoJCVNob3VsZCBiZSBvbmUgcmFuZ2UgZm9yIHRoZSBmdWxsIEkvTyByZWdpc3RlciByZWdpb24KKwkJCShpbmNsdWRpbmcgVVNBUlQsIFRXSSBhbmQgU1BJIHJlZ2lzdGVycykuCistIGF0bWVsLGZsZXhjb20tbW9kZToJU2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKwkJCS0gPDE+IGZvciBVU0FSVAorCQkJLSA8Mj4gZm9yIFNQSQorCQkJLSA8Mz4gZm9yIEkyQworCitSZXF1aXJlZCBjaGlsZDoKK0Egc2luZ2xlIGF2YWlsYWJsZSBjaGlsZCBkZXZpY2Ugb2YgdHlwZSBtYXRjaGluZyB0aGUgImF0bWVsLGZsZXhjb20tbW9kZSIKK3Byb3BlcnR5LgorCitUaGUgcGhhbmRsZSBwcm92aWRlZCBieSB0aGUgY2xvY2tzIHByb3BlcnR5IG9mIHRoZSBjaGlsZCBpcyB0aGUgc2FtZSBhcyBvbmUgZm9yCit0aGUgRmxleGNvbSBwYXJlbnQuCisKK0ZvciBvdGhlciBwcm9wZXJ0aWVzLCBwbGVhc2UgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb25zIG9mIHRoZSByZXNwZWN0aXZlCitkZXZpY2U6CistIC4uL3NlcmlhbC9hdG1lbC11c2FydC50eHQKKy0gLi4vc3BpL3NwaV9hdG1lbC50eHQKKy0gLi4vaTJjL2kyYy1hdDkxLnR4dAorCitFeGFtcGxlOgorCitmbGV4Y29tQGY4MDM0MDAwIHsKKwljb21wYXRpYmxlID0gImF0bWVsLHNhbWE1ZDItZmxleGNvbSI7CisJcmVnID0gPDB4ZjgwMzQwMDAgMHgyMDA+OworCWNsb2NrcyA9IDwmZmx4MF9jbGs+OworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDE+OworCXJhbmdlcyA9IDwweDAgMHhmODAzNDAwMCAweDgwMD47CisJYXRtZWwsZmxleGNvbS1tb2RlID0gPDI+OworCisJc3BpQDQwMCB7CisJCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXJtOTIwMC1zcGkiOworCQlyZWcgPSA8MHg0MDAgMHgyMDA+OworCQlpbnRlcnJ1cHRzID0gPDE5IElSUV9UWVBFX0xFVkVMX0hJR0ggNz47CisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmcGluY3RybF9mbHgwX2RlZmF1bHQ+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJCWNsb2NrcyA9IDwmZmx4MF9jbGs+OworCQljbG9jay1uYW1lcyA9ICJzcGlfY2xrIjsKKwkJYXRtZWwsZmlmby1zaXplID0gPDMyPjsKKworCQltdGRfZGF0YWZsYXNoQDAgeworCQkJY29tcGF0aWJsZSA9ICJhdG1lbCxhdDI1ZjUxMmIiOworCQkJcmVnID0gPDA+OworCQkJc3BpLW1heC1mcmVxdWVuY3kgPSA8MjAwMDAwMDA+OworCQl9OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9hdG1lbC1ncGJyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvYXRtZWwtZ3Bici50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI4NTY5NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvYXRtZWwtZ3Bici50eHQKQEAgLTAsMCArMSwxNSBAQAorKiBEZXZpY2UgdHJlZSBiaW5kaW5ncyBmb3IgQXRtZWwgR1BCUiAoR2VuZXJhbCBQdXJwb3NlIEJhY2t1cCBSZWdpc3RlcnMpCisKK1RoZSBHUEJSIGFyZSBhIHNldCBvZiBiYXR0ZXJ5LWJhY2tlZCByZWdpc3RlcnMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CQkiYXRtZWwsYXQ5MXNhbTkyNjAtZ3BiciIsICJzeXNjb24iCistIHJlZzoJCQljb250YWlucyBvZmZzZXQvbGVuZ3RoIHZhbHVlIG9mIHRoZSBHUEJSIG1lbW9yeQorCQkJcmVnaW9uLgorCitFeGFtcGxlOgorCitncGJyOiBncGJyQGZmZmZmZDUwIHsKKwljb21wYXRpYmxlID0gImF0bWVsLGF0OTFzYW05MjYwLWdwYnIiLCAic3lzY29uIjsKKwlyZWcgPSA8MHhmZmZmZmQ1MCAweDEwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2F0bWVsLWhsY2RjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvYXRtZWwtaGxjZGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MDgzMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2F0bWVsLWhsY2RjLnR4dApAQCAtMCwwICsxLDU1IEBACitEZXZpY2UtVHJlZSBiaW5kaW5ncyBmb3IgQXRtZWwncyBITENEQyAoSGlnaCBMQ0QgQ29udHJvbGxlcikgTUZEIGRyaXZlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZTogdmFsdWUgc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorICAgImF0bWVsLGF0OTFzYW05bjEyLWhsY2RjIgorICAgImF0bWVsLGF0OTFzYW05eDUtaGxjZGMiCisgICAiYXRtZWwsc2FtYTVkMi1obGNkYyIKKyAgICJhdG1lbCxzYW1hNWQzLWhsY2RjIgorICAgImF0bWVsLHNhbWE1ZDQtaGxjZGMiCisgLSByZWc6IGJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgSExDREMgZGV2aWNlIHJlZ2lzdGVycy4KKyAtIGNsb2NrLW5hbWVzOiB0aGUgbmFtZSBvZiB0aGUgMyBjbG9ja3MgcmVxdWVzdGVkIGJ5IHRoZSBITENEQyBkZXZpY2UuCisgICBTaG91bGQgY29udGFpbiAicGVyaXBoX2NsayIsICJzeXNfY2xrIiBhbmQgInNsb3dfY2xrIi4KKyAtIGNsb2Nrczogc2hvdWxkIGNvbnRhaW4gdGhlIDMgY2xvY2tzIHJlcXVlc3RlZCBieSB0aGUgSExDREMgZGV2aWNlLgorIC0gaW50ZXJydXB0czogc2hvdWxkIGNvbnRhaW4gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBITENEQyBpbnRlcnJ1cHQgbGluZQorCitUaGUgSExDREMgSVAgZXhwb3NlcyB0d28gc3ViZGV2aWNlczoKKyAtIGEgUFdNIGNoaXA6IHNlZSAuLi9wd20vYXRtZWwtaGxjZGMtcHdtLnR4dAorIC0gYSBEaXNwbGF5IENvbnRyb2xsZXI6IHNlZSAuLi9kaXNwbGF5L2F0bWVsLWhsY2RjLWRjLnR4dAorCitFeGFtcGxlOgorCisJaGxjZGM6IGhsY2RjQGYwMDMwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhdG1lbCxzYW1hNWQzLWhsY2RjIjsKKwkJcmVnID0gPDB4ZjAwMzAwMDAgMHgyMDAwPjsKKwkJY2xvY2tzID0gPCZsY2RjX2Nsaz4sIDwmbGNkY2s+LCA8JmNsazMyaz47CisJCWNsb2NrLW5hbWVzID0gInBlcmlwaF9jbGsiLCJzeXNfY2xrIiwgInNsb3dfY2xrIjsKKwkJaW50ZXJydXB0cyA9IDwzNiBJUlFfVFlQRV9MRVZFTF9ISUdIIDA+OworCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCisJCWhsY2RjLWRpc3BsYXktY29udHJvbGxlciB7CisJCQljb21wYXRpYmxlID0gImF0bWVsLGhsY2RjLWRpc3BsYXktY29udHJvbGxlciI7CisJCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQkJcGluY3RybC0wID0gPCZwaW5jdHJsX2xjZF9iYXNlICZwaW5jdHJsX2xjZF9yZ2I4ODg+OworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQkJcG9ydEAwIHsKKwkJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJCQlyZWcgPSA8MD47CisKKwkJCQlobGNkY19wYW5lbF9vdXRwdXQ6IGVuZHBvaW50QDAgeworCQkJCQlyZWcgPSA8MD47CisJCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmcGFuZWxfaW5wdXQ+OworCQkJCX07CisJCQl9OworCQl9OworCisJCWhsY2RjX3B3bTogaGxjZGMtcHdtIHsKKwkJCWNvbXBhdGlibGUgPSAiYXRtZWwsaGxjZGMtcHdtIjsKKwkJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfbGNkX3B3bT47CisJCQkjcHdtLWNlbGxzID0gPDM+OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2F0bWVsLW1hdHJpeC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2F0bWVsLW1hdHJpeC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNlZjUwYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvYXRtZWwtbWF0cml4LnR4dApAQCAtMCwwICsxLDI0IEBACisqIERldmljZSB0cmVlIGJpbmRpbmdzIGZvciBBdG1lbCBCdXMgTWF0cml4CisKK1RoZSBCdXMgTWF0cml4IHJlZ2lzdGVycyBhcmUgdXNlZCB0byBjb25maWd1cmUgQXRtZWwgU29DcyBpbnRlcm5hbCBidXMKK2JlaGF2aW9yIChtYXN0ZXIvc2xhdmUgcHJpb3JpdGllcywgdW5kZWZpbmVkIGJ1cnN0IGxlbmd0aCB0eXBlLCAuLi4pCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CQlTaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcKKwkJCSJhdG1lbCxhdDkxc2FtOTI2MC1tYXRyaXgiLCAic3lzY29uIgorCQkJImF0bWVsLGF0OTFzYW05MjYxLW1hdHJpeCIsICJzeXNjb24iCisJCQkiYXRtZWwsYXQ5MXNhbTkyNjMtbWF0cml4IiwgInN5c2NvbiIKKwkJCSJhdG1lbCxhdDkxc2FtOXJsLW1hdHJpeCIsICJzeXNjb24iCisJCQkiYXRtZWwsYXQ5MXNhbTlnNDUtbWF0cml4IiwgInN5c2NvbiIKKwkJCSJhdG1lbCxhdDkxc2FtOW4xMi1tYXRyaXgiLCAic3lzY29uIgorCQkJImF0bWVsLGF0OTFzYW05eDUtbWF0cml4IiwgInN5c2NvbiIKKwkJCSJhdG1lbCxzYW1hNWQzLW1hdHJpeCIsICJzeXNjb24iCistIHJlZzoJCQlDb250YWlucyBvZmZzZXQvbGVuZ3RoIHZhbHVlIG9mIHRoZSBCdXMgTWF0cml4CisJCQltZW1vcnkgcmVnaW9uLgorCitFeGFtcGxlOgorCittYXRyaXg6IG1hdHJpeEBmZmZmZWMwMCB7CisJY29tcGF0aWJsZSA9ICJhdG1lbCxzYW1hNWQzLW1hdHJpeCIsICJzeXNjb24iOworCXJlZyA9IDwweGZmZmZlYzAwIDB4MjAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2F0bWVsLXNtYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2F0bWVsLXNtYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZlZWVkMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvYXRtZWwtc21jLnR4dApAQCAtMCwwICsxLDE5IEBACisqIERldmljZSB0cmVlIGJpbmRpbmdzIGZvciBBdG1lbCBTTUMgKFN0YXRpYyBNZW1vcnkgQ29udHJvbGxlcikKKworVGhlIFNNQyByZWdpc3RlcnMgYXJlIHVzZWQgdG8gY29uZmlndXJlIEF0bWVsIEVCSSAoRXh0ZXJuYWwgQnVzIEludGVyZmFjZSkKK3RvIGludGVyZmFjZSB3aXRoIHN0YW5kYXJkIG1lbW9yeSBkZXZpY2VzIChOQU5ELCBOT1IsIFNSQU0gb3Igc3BlY2lhbGl6ZWQKK2RldmljZXMgbGlrZSBGUEdBcykuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CQlTaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcKKwkJCSJhdG1lbCxhdDkxc2FtOTI2MC1zbWMiLCAic3lzY29uIgorCQkJImF0bWVsLHNhbWE1ZDMtc21jIiwgInN5c2NvbiIKKy0gcmVnOgkJCUNvbnRhaW5zIG9mZnNldC9sZW5ndGggdmFsdWUgb2YgdGhlIFNNQyBtZW1vcnkKKwkJCXJlZ2lvbi4KKworRXhhbXBsZToKKworc21jOiBzbWNAZmZmZmMwMDAgeworCWNvbXBhdGlibGUgPSAiYXRtZWwsc2FtYTVkMy1zbWMiLCAic3lzY29uIjsKKwlyZWcgPSA8MHhmZmZmYzAwMCAweDEwMDA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvYXhwMjB4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvYXhwMjB4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDc0MzU5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9heHAyMHgudHh0CkBAIC0wLDAgKzEsMTI0IEBACitBWFAgZmFtaWx5IFBNSUMgZGV2aWNlIHRyZWUgYmluZGluZ3MKKworVGhlIGF4cDIweCBmYW1pbHkgY3VycmVudCBtZW1iZXJzIDoKK2F4cDE1MiAoWC1Qb3dlcnMpCitheHAyMDIgKFgtUG93ZXJzKQorYXhwMjA5IChYLVBvd2VycykKK2F4cDIyMSAoWC1Qb3dlcnMpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ4LXBvd2VycyxheHAxNTIiLCAieC1wb3dlcnMsYXhwMjAyIiwgIngtcG93ZXJzLGF4cDIwOSIsCisJICAgICAgIngtcG93ZXJzLGF4cDIyMSIKKy0gcmVnOiBUaGUgSTJDIHNsYXZlIGFkZHJlc3MgZm9yIHRoZSBBWFAgY2hpcAorLSBpbnRlcnJ1cHQtcGFyZW50OiBUaGUgcGFyZW50IGludGVycnVwdCBjb250cm9sbGVyCistIGludGVycnVwdHM6IFNvQyBOTUkgLyBHUElPIGludGVycnVwdCBjb25uZWN0ZWQgdG8gdGhlIFBNSUMncyBJUlEgcGluCistIGludGVycnVwdC1jb250cm9sbGVyOiBUaGUgUE1JQyBoYXMgaXRzIG93biBpbnRlcm5hbCBJUlFzCistICNpbnRlcnJ1cHQtY2VsbHM6IFNob3VsZCBiZSBzZXQgdG8gMQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSB4LXBvd2VycyxkY2RjLWZyZXE6IGRlZmluZXMgdGhlIHdvcmsgZnJlcXVlbmN5IG9mIERDLURDIGluIEtIegorCQkgICAgICAocmFuZ2U6IDc1MC0xODc1KS4gRGVmYXVsdDogMS41TUh6CistIDxpbnB1dD4tc3VwcGx5OiBhIHBoYW5kbGUgdG8gdGhlIHJlZ3VsYXRvciBzdXBwbHkgbm9kZS4gTWF5IGJlIG9taXR0ZWQgaWYKKwkJICBpbnB1dHMgYXJlIHVucmVndWxhdGVkLCBzdWNoIGFzIHVzaW5nIHRoZSBJUFNPVVQgb3V0cHV0CisJCSAgZnJvbSB0aGUgUE1JQy4KKworLSByZWd1bGF0b3JzOiBBIG5vZGUgdGhhdCBob3VzZXMgYSBzdWItbm9kZSBmb3IgZWFjaCByZWd1bGF0b3IuIFJlZ3VsYXRvcnMKKwkgICAgICBub3QgdXNlZCBidXQgcHJlZmVycmVkIHRvIGJlIG1hbmFnZWQgYnkgdGhlIE9TIHNob3VsZCBiZQorCSAgICAgIGxpc3RlZCBhcyB3ZWxsLgorCSAgICAgIFNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3JlZ3VsYXRvci50eHQKKwkgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBzdGFuZGFyZCByZWd1bGF0b3IgYmluZGluZ3MuCisKK09wdGlvbmFsIHByb3BlcnRpZXMgZm9yIERDREMgcmVndWxhdG9yczoKKy0geC1wb3dlcnMsZGNkYy13b3JrbW9kZTogMSBmb3IgUFdNIG1vZGUsIDAgZm9yIEFVVE8gKFBXTS9QRk0pIG1vZGUKKwkJCSAgRGVmYXVsdDogQ3VycmVudCBoYXJkd2FyZSBzZXR0aW5nCisJCQkgIFRoZSBEQ0RDIHJlZ3VsYXRvcnMgd29yayBpbiBhIG1peGVkIFBXTS9QRk0gbW9kZSwKKwkJCSAgdXNpbmcgUEZNIHVuZGVyIGxpZ2h0IGxvYWRzIGFuZCBzd2l0Y2hpbmcgdG8gUFdNCisJCQkgIGZvciBoZWF2aWVyIGxvYWRzLiBGb3JjaW5nIFBXTSBtb2RlIHRyYWRlcyBlZmZpY2llbmN5CisJCQkgIHVuZGVyIGxpZ2h0IGxvYWRzIGZvciBsb3dlciBvdXRwdXQgbm9pc2UuIFRoaXMKKwkJCSAgcHJvYmFibHkgbWFrZXMgc2Vuc2UgZm9yIEhpRmkgYXVkaW8gcmVsYXRlZAorCQkJICBhcHBsaWNhdGlvbnMgdGhhdCBhcmVuJ3QgYmF0dGVyeSBjb25zdHJhaW5lZC4KKworCitBWFAyMDIvQVhQMjA5IHJlZ3VsYXRvcnMsIHR5cGUsIGFuZCBjb3JyZXNwb25kaW5nIGlucHV0IHN1cHBseSBuYW1lczoKKworUmVndWxhdG9yCSAgVHlwZQkJICBTdXBwbHkgTmFtZQkJICBOb3RlcworLS0tLS0tLS0tCSAgLS0tLQkJICAtLS0tLS0tLS0tLQkJICAtLS0tLQorRENEQzIJCTogREMtREMgYnVjawk6IHZpbjItc3VwcGx5CitEQ0RDMwkJOiBEQy1EQwlidWNrCTogdmluMy1zdXBwbHkKK0xETzEJCTogTERPCQk6IGFjaW4tc3VwcGx5CQk6IGFsd2F5cyBvbgorTERPMgkJOiBMRE8JCTogbGRvMjRpbi1zdXBwbHkJOiBzaGFyZWQgc3VwcGx5CitMRE8zCQk6IExETwkJOiBsZG8zaW4tc3VwcGx5CitMRE80CQk6IExETwkJOiBsZG8yNGluLXN1cHBseQk6IHNoYXJlZCBzdXBwbHkKK0xETzUJCTogTERPCQk6IGxkbzVpbi1zdXBwbHkKKworQVhQMjIxIHJlZ3VsYXRvcnMsIHR5cGUsIGFuZCBjb3JyZXNwb25kaW5nIGlucHV0IHN1cHBseSBuYW1lczoKKworUmVndWxhdG9yCSAgVHlwZQkJICBTdXBwbHkgTmFtZQkJICBOb3RlcworLS0tLS0tLS0tCSAgLS0tLQkJICAtLS0tLS0tLS0tLQkJICAtLS0tLQorRENEQzEJCTogREMtREMgYnVjawk6IHZpbjEtc3VwcGx5CitEQ0RDMgkJOiBEQy1EQyBidWNrCTogdmluMi1zdXBwbHkKK0RDREMzCQk6IERDLURDCWJ1Y2sJOiB2aW4zLXN1cHBseQorRENEQzQJCTogREMtREMJYnVjawk6IHZpbjQtc3VwcGx5CitEQ0RDNQkJOiBEQy1EQwlidWNrCTogdmluNS1zdXBwbHkKK0RDMVNXCQk6IE9uL09mZiBTd2l0Y2gJOgkJCTogRENEQzEgc2Vjb25kYXJ5IG91dHB1dAorREM1TERPCQk6IExETwkJOgkJCTogaW5wdXQgZnJvbSBEQ0RDNQorQUxETzEJCTogTERPCQk6IGFsZG9pbi1zdXBwbHkJCTogc2hhcmVkIHN1cHBseQorQUxETzIJCTogTERPCQk6IGFsZG9pbi1zdXBwbHkJCTogc2hhcmVkIHN1cHBseQorQUxETzMJCTogTERPCQk6IGFsZG9pbi1zdXBwbHkJCTogc2hhcmVkIHN1cHBseQorRExETzEJCTogTERPCQk6IGRsZG9pbi1zdXBwbHkJCTogc2hhcmVkIHN1cHBseQorRExETzIJCTogTERPCQk6IGRsZG9pbi1zdXBwbHkJCTogc2hhcmVkIHN1cHBseQorRExETzMJCTogTERPCQk6IGRsZG9pbi1zdXBwbHkJCTogc2hhcmVkIHN1cHBseQorRExETzQJCTogTERPCQk6IGRsZG9pbi1zdXBwbHkJCTogc2hhcmVkIHN1cHBseQorRUxETzEJCTogTERPCQk6IGVsZG9pbi1zdXBwbHkJCTogc2hhcmVkIHN1cHBseQorRUxETzIJCTogTERPCQk6IGVsZG9pbi1zdXBwbHkJCTogc2hhcmVkIHN1cHBseQorRUxETzMJCTogTERPCQk6IGVsZG9pbi1zdXBwbHkJCTogc2hhcmVkIHN1cHBseQorTERPX0lPMAkJOiBMRE8JCTogaXBzLXN1cHBseQkJOiBHUElPIDAKK0xET19JTzEJCTogTERPCQk6IGlwcy1zdXBwbHkJCTogR1BJTyAxCitSVENfTERPCQk6IExETwkJOiBpcHMtc3VwcGx5CQk6IGFsd2F5cyBvbgorCitFeGFtcGxlOgorCitheHAyMDk6IHBtaWNAMzQgeworCWNvbXBhdGlibGUgPSAieC1wb3dlcnMsYXhwMjA5IjsKKwlyZWcgPSA8MHgzND47CisJaW50ZXJydXB0LXBhcmVudCA9IDwmbm1pX2ludGM+OworCWludGVycnVwdHMgPSA8MCBJUlFfVFlQRV9MRVZFTF9MT1c+OworCWludGVycnVwdC1jb250cm9sbGVyOworCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisKKwlyZWd1bGF0b3JzIHsKKwkJeC1wb3dlcnMsZGNkYy1mcmVxID0gPDE1MDA+OworCisJCXZkZF9jcHU6IGRjZGMyIHsKKwkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMDAwMDAwPjsKKwkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE0NTAwMDA+OworCQkJcmVndWxhdG9yLW5hbWUgPSAidmRkLWNwdSI7CisJCX07CisKKwkJdmRkX2ludF9kbGw6IGRjZGMzIHsKKwkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMDAwMDAwPjsKKwkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE0MDAwMDA+OworCQkJcmVndWxhdG9yLW5hbWUgPSAidmRkLWludC1kbGwiOworCQl9OworCisJCXZkZF9ydGM6IGxkbzEgeworCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDEyMDAwMDA+OworCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTQwMDAwMD47CisJCQlyZWd1bGF0b3ItbmFtZSA9ICJ2ZGQtcnRjIjsKKwkJfTsKKworCQlhdmNjOiBsZG8yIHsKKwkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwyNzAwMDAwPjsKKwkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJcmVndWxhdG9yLW5hbWUgPSAiYXZjYyI7CisJCX07CisKKwkJbGRvMyB7CisJCQkvKiB1bnVzZWQgYnV0IHByZWZlcnJlZCB0byBiZSBtYW5hZ2VkIGJ5IE9TICovCisJCX07CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2JmdGljdS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2JmdGljdS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVjOTA3NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvYmZ0aWN1LnR4dApAQCAtMCwwICsxLDI1IEBACitLRVlNSUxFIGJmdGljdSBDaGFzc2lzIE1hbmFnZW1lbnQgRlBHQQorCitUaGUgYmZ0aWN1IGlzIGEgbXVsdGlmdW5jdGlvbiBkZXZpY2UgdGhhdCBtYW5hZ2VzIHRoZSB3aG9sZSBjaGFzc2lzLgorSXRzIG1haW4gZnVuY3Rpb25hbGl0eSBpcyB0byBjb2xsZWN0IElSUXMgZnJvbSB0aGUgd2hvbGUgY2hhc3NpcyBhbmQgc2lnbmFscwordGhlbSB0byBhIHNpbmdsZSBjb250cm9sbGVyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAia2V5bWlsZSxiZnRpY3UiCistIGludGVycnVwdC1jb250cm9sbGVyOiB0aGUgYmZ0aWN1IEZQR0EgaXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIKKy0gaW50ZXJydXB0czogdGhlIG1haW4gSVJRIGxpbmUgdG8gc2lnbmFsIHRoZSBjb2xsZWN0ZWQgSVJRcworLSAjaW50ZXJydXB0LWNlbGxzIDogaXMgMiBhbmQgdGhlaXIgdXNhZ2UgaXMgY29tcGxpYW50IHRvIHRoZSAyIGNlbGxzIHZhcmlhbnQKKyAgb2YgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2ludGVycnVwdHMudHh0CistIGludGVycnVwdC1wYXJlbnQ6IHRoZSBwYXJlbnQgSVJRIGN0cmwgdGhlIG1haW4gSVJRIGlzIGNvbm5lY3RlZCB0bworLSByZWc6IGFjY2VzcyBvbiB0aGUgcGFyZW50IGxvY2FsIGJ1cyAoY2hpcCBzZWxlY3QsIG9mZnNldCBpbiBjaGlwIHNlbGVjdCwgc2l6ZSkKKworRXhhbXBsZToKKworCWNoYXNzaXMtbWdtdEAzLDAgeworCQljb21wYXRpYmxlID0gImtleW1pbGUsYmZ0aWN1IjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJCXJlZyA9IDwzIDAgMHgxMDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZtcGljPjsKKwkJaW50ZXJydXB0cyA9IDw2IDEgMCAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9icmNtLGJjbTU5MDU2LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvYnJjbSxiY201OTA1Ni50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU1MWExNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvYnJjbSxiY201OTA1Ni50eHQKQEAgLTAsMCArMSwzOSBAQAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQkNNNTkweHggUG93ZXIgTWFuYWdlbWVudCBVbml0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiYnJjbSxiY201OTA1NiIKKy0gcmVnOiBJMkMgc2xhdmUgYWRkcmVzcworLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgZm9yIHRoZSBQTVUuIEdlbmVyaWMgaW50ZXJydXB0IGNsaWVudCBub2RlIGJpbmRpbmdzCisgIGFyZSBkZXNjcmliZWQgaW4gaW50ZXJydXB0LWNvbnRyb2xsZXIvaW50ZXJydXB0cy50eHQKKworLS0tLS0tLS0tLS0tLS0tLS0tCitWb2x0YWdlIFJlZ3VsYXRvcnMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitPcHRpb25hbCBjaGlsZCBub2RlczoKKy0gcmVndWxhdG9yczogY29udGFpbmVyIG5vZGUgZm9yIHJlZ3VsYXRvcnMgZm9sbG93aW5nIHRoZSBnZW5lcmljCisgIHJlZ3VsYXRvciBiaW5kaW5nIGluIHJlZ3VsYXRvci9yZWd1bGF0b3IudHh0CisKKyAgVGhlIHZhbGlkIHJlZ3VsYXRvciBub2RlIG5hbWVzIGZvciBCQ001OTA1NiBhcmU6CisgIAlyZmxkbywgY2FtbGRvMSwgY2FtbGRvMiwgc2ltbGRvMSwgc2ltbGRvMiwgc2RsZG8sIHNkeGxkbywKKwltbWNsZG8xLCBtbWNsZG8yLCBhdWRsZG8sIG1pY2xkbywgdXNibGRvLCB2aWJsZG8sCisJY3NyLCBpb3NyMSwgaW9zcjIsIG1zciwgc2RzcjEsIHNkc3IyLCB2c3IsCisJZ3BsZG8xLCBncGxkbzIsIGdwbGRvMywgZ3BsZG80LCBncGxkbzUsIGdwbGRvNiwKKwl2YnVzCisKK0V4YW1wbGU6CisJcG11OiBiY201OTA1NkA4IHsKKwkJY29tcGF0aWJsZSA9ICJicmNtLGJjbTU5MDU2IjsKKwkJcmVnID0gPDB4MDg+OworCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMjE1IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQlyZWd1bGF0b3JzIHsKKwkJCXJmbGRvX3JlZzogcmZsZG8geworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDEyMDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJfTsKKworCQkJLi4uCisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvY3Jvcy1lYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2Nyb3MtZWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNmUwYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2Nyb3MtZWMudHh0CkBAIC0wLDAgKzEsNzMgQEAKK0Nocm9tZU9TIEVtYmVkZGVkIENvbnRyb2xsZXIKKworR29vZ2xlJ3MgQ2hyb21lT1MgRUMgaXMgYSBDb3J0ZXgtTSBkZXZpY2Ugd2hpY2ggdGFsa3MgdG8gdGhlIEFQIGFuZAoraW1wbGVtZW50cyB2YXJpb3VzIGZ1bmN0aW9uIHN1Y2ggYXMga2V5Ym9hcmQgYW5kIGJhdHRlcnkgY2hhcmdpbmcuCisKK1RoZSBFQyBjYW4gYmUgY29ubmVjdCB0aHJvdWdoIHZhcmlvdXMgbWVhbnMgKEkyQywgU1BJLCBMUEMpIGFuZCB0aGUKK2NvbXBhdGlibGUgc3RyaW5nIHVzZWQgZGVwZW5kcyBvbiB0aGUgaW50ZXJmYWNlLiBFYWNoIGNvbm5lY3Rpb24gbWV0aG9kIGhhcworaXRzIG93biBkcml2ZXIgd2hpY2ggY29ubmVjdHMgdG8gdGhlIHRvcCBsZXZlbCBpbnRlcmZhY2UtYWdub3N0aWMgRUMgZHJpdmVyLgorT3RoZXIgTGludXggZHJpdmVyIChzdWNoIGFzIGNyb3MtZWMta2V5YiBmb3IgdGhlIG1hdHJpeCBrZXlib2FyZCkgY29ubmVjdCB0bwordGhlIHRvcC1sZXZlbCBkcml2ZXIuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgKEkyQyk6CistIGNvbXBhdGlibGU6ICJnb29nbGUsY3Jvcy1lYy1pMmMiCistIHJlZzogSTJDIHNsYXZlIGFkZHJlc3MKKworUmVxdWlyZWQgcHJvcGVydGllcyAoU1BJKToKKy0gY29tcGF0aWJsZTogImdvb2dsZSxjcm9zLWVjLXNwaSIKKy0gcmVnOiBTUEkgY2hpcCBzZWxlY3QKKworT3B0aW9uYWwgcHJvcGVydGllcyAoU1BJKToKKy0gZ29vZ2xlLGNyb3MtZWMtc3BpLXByZS1kZWxheTogU29tZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIEVDIG5lZWQgYSBsaXR0bGUKKyAgdGltZSB0byB3YWtlIHVwIGZyb20gc2xlZXAgYmVmb3JlIHRoZXkgY2FuIHJlY2VpdmUgU1BJIHRyYW5zZmVycyBhdCBhIGhpZ2gKKyAgY2xvY2sgcmF0ZS4gVGhpcyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGRlbGF5LCBpbiB1c2VjcywgYmV0d2VlbiB0aGUKKyAgYXNzZXJ0aW9uIG9mIHRoZSBDUyB0byB0aGUgc3RhcnQgb2YgdGhlIGZpcnN0IGNsb2NrIHB1bHNlLgorLSBnb29nbGUsY3Jvcy1lYy1zcGktbXNnLWRlbGF5OiBTb21lIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgRUMgcmVxdWlyZSBzb21lCisgIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyB0aW1lIGluIG9yZGVyIHRvIGFjY2VwdCBuZXcgdHJhbnNhY3Rpb25zLiBJZiB0aGUgZGVsYXkKKyAgYmV0d2VlbiB0cmFuc2FjdGlvbnMgaXMgbm90IGxvbmcgZW5vdWdoIHRoZSBFQyBtYXkgbm90IGJlIGFibGUgdG8gcmVzcG9uZAorICBwcm9wZXJseSB0byBzdWJzZXF1ZW50IHRyYW5zYWN0aW9ucyBhbmQgY2F1c2UgdGhlbSB0byBoYW5nLiBUaGlzIHByb3BlcnR5CisgIHNwZWNpZmllcyB0aGUgZGVsYXksIGluIHVzZWNzLCBpbnRyb2R1Y2VkIGJldHdlZW4gdHJhbnNhY3Rpb25zIHRvIGFjY291bnQKKyAgZm9yIHRoZSB0aW1lIHJlcXVpcmVkIGJ5IHRoZSBFQyB0byBnZXQgYmFjayBpbnRvIGEgc3RhdGUgaW4gd2hpY2ggbmV3IGRhdGEKKyAgY2FuIGJlIGFjY2VwdGVkLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIChMUEMpOgorLSBjb21wYXRpYmxlOiAiZ29vZ2xlLGNyb3MtZWMtbHBjIgorLSByZWc6IExpc3Qgb2YgKElPIGFkZHJlc3MsIHNpemUpIHBhaXJzIGRlZmluaW5nIHRoZSBpbnRlcmZhY2UgdXNlcworCitPcHRpb25hbCBwcm9wZXJ0aWVzIChhbGwpOgorLSBnb29nbGUsaGFzLXZiYy1udnJhbTogU29tZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIEVDIGluY2x1ZGUgYSBzbWFsbAorICBudnJhbSBzcGFjZSB1c2VkIHRvIHN0b3JlIHZlcmlmaWVkIGJvb3QgY29udGV4dCBkYXRhLiBUaGlzIGJvb2xlYW4gZmxhZworICBpcyB1c2VkIHRvIHNwZWNpZnkgd2hldGhlciB0aGlzIG52cmFtIGlzIHByZXNlbnQgb3Igbm90LgorCitFeGFtcGxlIGZvciBJMkM6CisKK2kyY0AxMkNBMDAwMCB7CisJY3Jvcy1lY0AxZSB7CisJCXJlZyA9IDwweDFlPjsKKwkJY29tcGF0aWJsZSA9ICJnb29nbGUsY3Jvcy1lYy1pMmMiOworCQlpbnRlcnJ1cHRzID0gPDE0IDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZ3YWtldXBfZWludD47CisJCXdha2V1cC1zb3VyY2U7CisJfTsKKworCitFeGFtcGxlIGZvciBTUEk6CisKK3NwaUAxMzFiMDAwMCB7CisJZWNAMCB7CisJCWNvbXBhdGlibGUgPSAiZ29vZ2xlLGNyb3MtZWMtc3BpIjsKKwkJcmVnID0gPDB4MD47CisJCWludGVycnVwdHMgPSA8MTQgMD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8Jndha2V1cF9laW50PjsKKwkJd2FrZXVwLXNvdXJjZTsKKwkJc3BpLW1heC1mcmVxdWVuY3kgPSA8NTAwMDAwMD47CisJCWNvbnRyb2xsZXItZGF0YSB7CisJCWNzLWdwaW8gPSA8JmdwZjAgMyA0IDMgMD47CisJCXNhbXN1bmcsc3BpLWNzOworCQlzYW1zdW5nLHNwaS1mZWVkYmFjay1kZWxheSA9IDwyPjsKKwkJfTsKKwl9OworfTsKKworCitFeGFtcGxlIGZvciBMUEMgaXMgbm90IHN1cHBsaWVkIGFzIGl0IGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2RhOTA1Mi1pMmMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9kYTkwNTItaTJjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODU3ZjRhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9kYTkwNTItaTJjLnR4dApAQCAtMCwwICsxLDYwIEBACisqIERpYWxvZyBEQTkwNTIvNTMgUG93ZXIgTWFuYWdlbWVudCBJbnRlZ3JhdGVkIENpcmN1aXQgKFBNSUMpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImRsZyxkYTkwNTIiLCAiZGxnLGRhOTA1My1hYSIsCisJCQkgImRsZyxkYTkwNTMtYWIiLCBvciAiZGxnLGRhOTA1My1iYiIKKworU3ViLW5vZGVzOgorLSByZWd1bGF0b3JzIDogQ29udGFpbiB0aGUgcmVndWxhdG9yIG5vZGVzLiBUaGUgREE5MDUyLzUzIHJlZ3VsYXRvcnMgYXJlCisgIGJvdW5kIHVzaW5nIHRoZWlyIG5hbWVzIGFzIGxpc3RlZCBiZWxvdzoKKworICAgIGJ1Y2swICAgICA6IHJlZ3VsYXRvciBCVUNLMAorICAgIGJ1Y2sxICAgICA6IHJlZ3VsYXRvciBCVUNLMQorICAgIGJ1Y2syICAgICA6IHJlZ3VsYXRvciBCVUNLMgorICAgIGJ1Y2szICAgICA6IHJlZ3VsYXRvciBCVUNLMworICAgIGxkbzQgICAgICA6IHJlZ3VsYXRvciBMRE80CisgICAgbGRvNSAgICAgIDogcmVndWxhdG9yIExETzUKKyAgICBsZG82ICAgICAgOiByZWd1bGF0b3IgTERPNgorICAgIGxkbzcgICAgICA6IHJlZ3VsYXRvciBMRE83CisgICAgbGRvOCAgICAgIDogcmVndWxhdG9yIExETzgKKyAgICBsZG85ICAgICAgOiByZWd1bGF0b3IgTERPOQorICAgIGxkbzEwICAgICA6IHJlZ3VsYXRvciBMRE8xMAorICAgIGxkbzExICAgICA6IHJlZ3VsYXRvciBMRE8xMQorICAgIGxkbzEyICAgICA6IHJlZ3VsYXRvciBMRE8xMgorICAgIGxkbzEzICAgICA6IHJlZ3VsYXRvciBMRE8xMworCisgIFRoZSBiaW5kaW5ncyBkZXRhaWxzIG9mIGluZGl2aWR1YWwgcmVndWxhdG9yIGRldmljZSBjYW4gYmUgZm91bmQgaW46CisgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvcmVndWxhdG9yLnR4dAorCitFeGFtcGxlczoKKworaTJjQDYzZmM4MDAwIHsgLyogSTJDMSAqLworCXN0YXR1cyA9ICJva2F5IjsKKworCXBtaWM6IGRpYWxvZ0A0OCB7CisJCWNvbXBhdGlibGUgPSAiZGxnLGRhOTA1My1hYSI7CisJCXJlZyA9IDwweDQ4PjsKKworCQlyZWd1bGF0b3JzIHsKKwkJCWJ1Y2swIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw1MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDIwNzUwMDA+OworCQkJfTsKKworCQkJYnVjazEgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDUwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MjA3NTAwMD47CisJCQl9OworCisJCQlidWNrMiB7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8OTI1MDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwyNTAwMDAwPjsKKwkJCX07CisKKwkJCWJ1Y2szIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw5MjUwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDI1MDAwMDA+OworCQkJfTsKKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvZGE5MDU1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvZGE5MDU1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGFiMzRkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9kYTkwNTUudHh0CkBAIC0wLDAgKzEsNzIgQEAKKyogRGlhbG9nIERBOTA1NSBQb3dlciBNYW5hZ2VtZW50IEludGVncmF0ZWQgQ2lyY3VpdCAoUE1JQykKKworREE5MDU1IGNvbnNpc3RzIG9mIGEgbGFyZ2UgYW5kIHZhcmllZCBncm91cCBvZiBzdWItZGV2aWNlcyAoSTJDIE9ubHkpOgorCitEZXZpY2UJCQkgU3VwcGx5IE5hbWVzCSBEZXNjcmlwdGlvbgorLS0tLS0tCQkJIC0tLS0tLS0tLS0tLQkgLS0tLS0tLS0tLS0KK2RhOTA1NS1ncGlvCQk6CQk6IEdQSU9zCitkYTkwNTUtcmVndWxhdG9yCToJCTogUmVndWxhdG9ycworZGE5MDU1LW9ua2V5CQk6CQk6IE9uIGtleQorZGE5MDU1LXJ0YwkJOgkJOiBSVEMKK2RhOTA1NS1od21vbgkJOgkJOiBBREMKK2RhOTA1NS13YXRjaGRvZwkJOgkJOiBXYXRjaGRvZworCitUaGUgQ09ERUMgZGV2aWNlIGluIERBOTA1NSBoYXMgYSBzZXBhcmF0ZSwgY29uZmlndXJhYmxlIEkyQyBhZGRyZXNzIGFuZCBzbworaXMgaW5zdGFudGlhdGVkIHNlcGFyYXRlbHkgZnJvbSB0aGUgUE1JQy4KKworRm9yIGRldGFpbHMgb24gYWNjb21wYW55aW5nIENPREVDIEkyQyBkZXZpY2UsIHNlZSB0aGUgZm9sbG93aW5nOgorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2RhOTA1NS50eHQKKworPT09PT09CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImRsZyxkYTkwNTUtcG1pYyIKKy0gcmVnOiBTcGVjaWZpZXMgdGhlIEkyQyBzbGF2ZSBhZGRyZXNzIChkZWZhdWx0cyB0byAweDVhIGJ1dCBjYW4gYmUgbW9kaWZpZWQpCistIGludGVycnVwdC1wYXJlbnQ6IFNwZWNpZmllcyB0aGUgcGhhbmRsZSBvZiB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgdG8gd2hpY2gKKyAgdGhlIElSUXMgZnJvbSBkYTkwNTUgYXJlIGRlbGl2ZXJlZCB0by4KKy0gaW50ZXJydXB0czogSVJRIGxpbmUgaW5mbyBmb3IgZGE5MDU1IGNoaXAuCistIGludGVycnVwdC1jb250cm9sbGVyOiBkYTkwNTUgaGFzIGludGVybmFsIElSUXMgKGhhcyBvd24gSVJRIGRvbWFpbikuCistICNpbnRlcnJ1cHQtY2VsbHM6IFNob3VsZCBiZSAxLCBpcyB0aGUgbG9jYWwgSVJRIG51bWJlciBmb3IgZGE5MDU1LgorCitTdWItbm9kZXM6CistIHJlZ3VsYXRvcnMgOiBDb250YWluIHRoZSByZWd1bGF0b3Igbm9kZXMuIFRoZSBEQTkwNTUgcmVndWxhdG9ycyBhcmUKKyAgYm91bmQgdXNpbmcgdGhlaXIgbmFtZXMgYXMgbGlzdGVkIGJlbG93OgorCisgICAgYnVjazEgICAgIDogcmVndWxhdG9yIEJVQ0sxCisgICAgYnVjazIgICAgIDogcmVndWxhdG9yIEJVQ0syCisgICAgbGRvMSAgICAgIDogcmVndWxhdG9yIExETzEKKyAgICBsZG8yICAgICAgOiByZWd1bGF0b3IgTERPMgorICAgIGxkbzMgICAgICA6IHJlZ3VsYXRvciBMRE8zCisgICAgbGRvNCAgICAgIDogcmVndWxhdG9yIExETzQKKyAgICBsZG81ICAgICAgOiByZWd1bGF0b3IgTERPNQorICAgIGxkbzYgICAgICA6IHJlZ3VsYXRvciBMRE82CisKKyAgVGhlIGJpbmRpbmdzIGRldGFpbHMgb2YgaW5kaXZpZHVhbCByZWd1bGF0b3IgZGV2aWNlIGNhbiBiZSBmb3VuZCBpbjoKKyAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9yZWd1bGF0b3IudHh0CisKKworRXhhbXBsZToKKworCXBtaWM6IGRhOTA1NS1wbWljQDVhIHsKKwkJY29tcGF0aWJsZSA9ICJkbGcsZGE5MDU1LXBtaWMiOworCQlyZWcgPSA8MHg1YT47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmludGM+OworCQlpbnRlcnJ1cHRzID0gPDUgSVJRX1RZUEVfTEVWRUxfTE9XPjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisKKwkJcmVndWxhdG9ycyB7CisJCQlidWNrMTogQlVDSzEgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDcyNTAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MjA3NTAwMD47CisJCQl9OworCQkJYnVjazI6IEJVQ0syIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw5MjUwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDI1MDAwMDA+OworCQkJfTsKKwkJCWxkbzE6IExETzEgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDkwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2RhOTA2Mi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2RhOTA2Mi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg4MDJiNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvZGE5MDYyLnR4dApAQCAtMCwwICsxLDg4IEBACisqIERpYWxvZyBEQTkwNjIgUG93ZXIgTWFuYWdlbWVudCBJbnRlZ3JhdGVkIENpcmN1aXQgKFBNSUMpCisKK0RBOTA2MiBjb25zaXN0cyBvZiBhIGxhcmdlIGFuZCB2YXJpZWQgZ3JvdXAgb2Ygc3ViLWRldmljZXM6CisKK0RldmljZSAgICAgICAgICAgICAgICAgICBTdXBwbHkgTmFtZXMgICAgRGVzY3JpcHRpb24KKy0tLS0tLSAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0gICAgLS0tLS0tLS0tLS0KK2RhOTA2Mi1yZWd1bGF0b3IgICAgICAgIDogICAgICAgICAgICAgICA6IExET3MgJiBCVUNLcworZGE5MDYyLXJ0YyAgICAgICAgICAgICAgOiAgICAgICAgICAgICAgIDogUmVhbC1UaW1lIENsb2NrCitkYTkwNjItd2F0Y2hkb2cgICAgICAgICA6ICAgICAgICAgICAgICAgOiBXYXRjaGRvZyBUaW1lcgorCis9PT09PT0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJkbGcsZGE5MDYyIi4KKy0gcmVnIDogU3BlY2lmaWVzIHRoZSBJMkMgc2xhdmUgYWRkcmVzcyAodGhpcyBkZWZhdWx0cyB0byAweDU4IGJ1dCBpdCBjYW4gYmUKKyAgbW9kaWZpZWQgdG8gbWF0Y2ggdGhlIGNoaXAncyBPVFAgc2V0dGluZ3MpLgorLSBpbnRlcnJ1cHQtcGFyZW50IDogU3BlY2lmaWVzIHRoZSByZWZlcmVuY2UgdG8gdGhlIGludGVycnVwdCBjb250cm9sbGVyIGZvcgorICB0aGUgREE5MDYyLgorLSBpbnRlcnJ1cHRzIDogSVJRIGxpbmUgaW5mb3JtYXRpb24uCistIGludGVycnVwdC1jb250cm9sbGVyCisKK1NlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaW50ZXJydXB0cy50eHQgZm9yCitmdXJ0aGVyIGluZm9ybWF0aW9uIG9uIElSUSBiaW5kaW5ncy4KKworU3ViLW5vZGVzOgorCistIHJlZ3VsYXRvcnMgOiBUaGlzIG5vZGUgZGVmaW5lcyB0aGUgc2V0dGluZ3MgZm9yIHRoZSBMRE9zIGFuZCBCVUNLcy4gVGhlCisgIERBOTA2MiByZWd1bGF0b3JzIGFyZSBib3VuZCB1c2luZyB0aGVpciBuYW1lcyBsaXN0ZWQgYmVsb3c6CisKKyAgICBidWNrMSAgICA6IEJVQ0tfMQorICAgIGJ1Y2syICAgIDogQlVDS18yCisgICAgYnVjazMgICAgOiBCVUNLXzMKKyAgICBidWNrNCAgICA6IEJVQ0tfNAorICAgIGxkbzEgICAgIDogTERPXzEKKyAgICBsZG8yICAgICA6IExET18yCisgICAgbGRvMyAgICAgOiBMRE9fMworICAgIGxkbzQgICAgIDogTERPXzQKKworICBUaGUgY29tcG9uZW50IGZvbGxvd3MgdGhlIHN0YW5kYXJkIHJlZ3VsYXRvciBmcmFtZXdvcmsgYW5kIHRoZSBiaW5kaW5ncworICBkZXRhaWxzIG9mIGluZGl2aWR1YWwgcmVndWxhdG9yIGRldmljZSBjYW4gYmUgZm91bmQgaW46CisgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvcmVndWxhdG9yLnR4dAorCisKKy0gcnRjIDogVGhpcyBub2RlIGRlZmluZXMgc2V0dGluZ3MgcmVxdWlyZWQgZm9yIHRoZSBSZWFsLVRpbWUgQ2xvY2sgYXNzb2NpYXRlZAorICB3aXRoIHRoZSBEQTkwNjIuIFRoZXJlIGFyZSBjdXJyZW50bHkgbm8gZW50cmllcyBpbiB0aGlzIGJpbmRpbmcsIGhvd2V2ZXIKKyAgY29tcGF0aWJsZSA9ICJkbGcsZGE5MDYyLXJ0YyIgc2hvdWxkIGJlIGFkZGVkIGlmIGEgbm9kZSBpcyBjcmVhdGVkLgorCistIHdhdGNoZG9nOiBUaGlzIG5vZGUgZGVmaW5lcyB0aGUgc2V0dGluZ3MgZm9yIHRoZSB3YXRjaGRvZyBkcml2ZXIgYXNzb2NpYXRlZAorICB3aXRoIHRoZSBEQTkwNjIgUE1JQy4gVGhlIGNvbXBhdGlibGUgPSAiZGxnLGRhOTA2Mi13YXRjaGRvZyIgc2hvdWxkIGJlIGFkZGVkCisgIGlmIGEgbm9kZSBpcyBjcmVhdGVkLgorCisKK0V4YW1wbGU6CisKKwlwbWljMDogZGE5MDYyQDU4IHsKKwkJY29tcGF0aWJsZSA9ICJkbGcsZGE5MDYyIjsKKwkJcmVnID0gPDB4NTg+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvNj47CisJCWludGVycnVwdHMgPSA8MTEgSVJRX1RZUEVfTEVWRUxfTE9XPjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisKKwkJcnRjIHsKKwkJCWNvbXBhdGlibGUgPSAiZGxnLGRhOTA2Mi1ydGMiOworCQl9OworCisJCXdhdGNoZG9nIHsKKwkJCWNvbXBhdGlibGUgPSAiZGxnLGRhOTA2Mi13YXRjaGRvZyI7CisJCX07CisKKwkJcmVndWxhdG9ycyB7CisJCQlEQTkwNjJfQlVDSzE6IGJ1Y2sxIHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJCVUNLMSI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxNTcwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3JvYW1wID0gPDUwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb2FtcCA9IDwyMDAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCX07CisJCQlEQTkwNjJfTERPMTogbGRvMSB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAiTERPXzEiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDkwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzYwMDAwMD47CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQl9OworCQl9OworCX07CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvZGE5MDYzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvZGE5MDYzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWIyMWJjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9kYTkwNjMudHh0CkBAIC0wLDAgKzEsMTExIEBACisqIERpYWxvZyBEQTkwNjMgUG93ZXIgTWFuYWdlbWVudCBJbnRlZ3JhdGVkIENpcmN1aXQgKFBNSUMpCisKK0RBOTA5MyBjb25zaXN0cyBvZiBhIGxhcmdlIGFuZCB2YXJpZWQgZ3JvdXAgb2Ygc3ViLWRldmljZXMgKEkyQyBPbmx5KToKKworRGV2aWNlICAgICAgICAgICAgICAgICAgIFN1cHBseSBOYW1lcyAgICBEZXNjcmlwdGlvbgorLS0tLS0tICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLSAgICAtLS0tLS0tLS0tLQorZGE5MDYzLXJlZ3VsYXRvciAgICAgICAgOiAgICAgICAgICAgICAgIDogTERPcyAmIEJVQ0tzCitkYTkwNjMtb25rZXkgICAgICAgICAgICA6ICAgICAgICAgICAgICAgOiBPbiBLZXkKK2RhOTA2My1ydGMgICAgICAgICAgICAgIDogICAgICAgICAgICAgICA6IFJlYWwtVGltZSBDbG9jaworZGE5MDYzLXdhdGNoZG9nICAgICAgICAgOiAgICAgICAgICAgICAgIDogV2F0Y2hkb2cKKworPT09PT09CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAiZGxnLGRhOTA2MyIKKy0gcmVnIDogU3BlY2lmaWVzIHRoZSBJMkMgc2xhdmUgYWRkcmVzcyAodGhpcyBkZWZhdWx0cyB0byAweDU4IGJ1dCBpdCBjYW4gYmUKKyAgbW9kaWZpZWQgdG8gbWF0Y2ggdGhlIGNoaXAncyBPVFAgc2V0dGluZ3MpLgorLSBpbnRlcnJ1cHQtcGFyZW50IDogU3BlY2lmaWVzIHRoZSByZWZlcmVuY2UgdG8gdGhlIGludGVycnVwdCBjb250cm9sbGVyIGZvcgorICB0aGUgREE5MDYzLgorLSBpbnRlcnJ1cHRzIDogSVJRIGxpbmUgaW5mb3JtYXRpb24uCistIGludGVycnVwdC1jb250cm9sbGVyCisKK1N1Yi1ub2RlczoKKworLSByZWd1bGF0b3JzIDogVGhpcyBub2RlIGRlZmluZXMgdGhlIHNldHRpbmdzIGZvciB0aGUgTERPcyBhbmQgQlVDS3MuIFRoZQorICBEQTkwNjMgcmVndWxhdG9ycyBhcmUgYm91bmQgdXNpbmcgdGhlaXIgbmFtZXMgbGlzdGVkIGJlbG93OgorCisgICAgYmNvcmUxICAgIDogQlVDSyBDT1JFMQorICAgIGJjb3JlMiAgICA6IEJVQ0sgQ09SRTIKKyAgICBicHJvICAgICAgOiBCVUNLIFBSTworICAgIGJtZW0gICAgICA6IEJVQ0sgTUVNCisgICAgYmlvICAgICAgIDogQlVDSyBJTworICAgIGJwZXJpICAgICA6IEJVQ0sgUEVSSQorICAgIGxkbzEgICAgICA6IExET18xCisgICAgbGRvMiAgICAgIDogTERPXzIKKyAgICBsZG8zICAgICAgOiBMRE9fMworICAgIGxkbzQgICAgICA6IExET180CisgICAgbGRvNSAgICAgIDogTERPXzUKKyAgICBsZG82ICAgICAgOiBMRE9fNgorICAgIGxkbzcgICAgICA6IExET183CisgICAgbGRvOCAgICAgIDogTERPXzgKKyAgICBsZG85ICAgICAgOiBMRE9fOQorICAgIGxkbzEwICAgICA6IExET18xMAorICAgIGxkbzExICAgICA6IExET18xMQorCisgIFRoZSBjb21wb25lbnQgZm9sbG93cyB0aGUgc3RhbmRhcmQgcmVndWxhdG9yIGZyYW1ld29yayBhbmQgdGhlIGJpbmRpbmdzCisgIGRldGFpbHMgb2YgaW5kaXZpZHVhbCByZWd1bGF0b3IgZGV2aWNlIGNhbiBiZSBmb3VuZCBpbjoKKyAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9yZWd1bGF0b3IudHh0CisKKy0gcnRjIDogVGhpcyBub2RlIGRlZmluZXMgc2V0dGluZ3MgZm9yIHRoZSBSZWFsLVRpbWUgQ2xvY2sgYXNzb2NpYXRlZCB3aXRoCisgIHRoZSBEQTkwNjMuIFRoZXJlIGFyZSBjdXJyZW50bHkgbm8gZW50cmllcyBpbiB0aGlzIGJpbmRpbmcsIGhvd2V2ZXIKKyAgY29tcGF0aWJsZSA9ICJkbGcsZGE5MDYzLXJ0YyIgc2hvdWxkIGJlIGFkZGVkIGlmIGEgbm9kZSBpcyBjcmVhdGVkLgorCistIG9ua2V5IDogVGhpcyBub2RlIGRlZmluZXMgdGhlIE9uS2V5IHNldHRpbmdzIGZvciBjb250cm9sbGluZyB0aGUga2V5CisgIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGRldmljZS4gVGhlIG5vZGUgc2hvdWxkIGNvbnRhaW4gdGhlIGNvbXBhdGlibGUgcHJvcGVydHkKKyAgd2l0aCB0aGUgdmFsdWUgImRsZyxkYTkwNjMtb25rZXkiLgorCisgIE9wdGlvbmFsIG9ua2V5IHByb3BlcnRpZXM6CisKKyAgLSBkbGcsZGlzYWJsZS1rZXktcG93ZXIgOiBEaXNhYmxlIHBvd2VyLWRvd24gdXNpbmcgYSBsb25nIGtleS1wcmVzcy4gSWYgdGhpcworICAgIGVudHJ5IGV4aXN0cyB0aGUgT25LZXkgZHJpdmVyIHdpbGwgcmVtb3ZlIHN1cHBvcnQgZm9yIHRoZSBLRVlfUE9XRVIga2V5CisgICAgcHJlc3MuIElmIHRoaXMgZW50cnkgZG9lcyBub3QgZXhpc3QgdGhlbiBieSBkZWZhdWx0IHRoZSBrZXktcHJlc3MKKyAgICB0cmlnZ2VyZWQgcG93ZXIgZG93biBpcyBlbmFibGVkIGFuZCB0aGUgT25LZXkgd2lsbCBzdXBwb3J0IGJvdGggS0VZX1BPV0VSCisgICAgYW5kIEtFWV9TTEVFUC4KKworLSB3YXRjaGRvZyA6IFRoaXMgbm9kZSBkZWZpbmVzIHNldHRpbmdzIGZvciB0aGUgV2F0Y2hkb2cgdGltZXIgYXNzb2NpYXRlZAorICB3aXRoIHRoZSBEQTkwNjMuIFRoZXJlIGFyZSBjdXJyZW50bHkgbm8gZW50cmllcyBpbiB0aGlzIGJpbmRpbmcsIGhvd2V2ZXIKKyAgY29tcGF0aWJsZSA9ICJkbGcsZGE5MDYzLXdhdGNoZG9nIiBzaG91bGQgYmUgYWRkZWQgaWYgYSBub2RlIGlzIGNyZWF0ZWQuCisKKworRXhhbXBsZToKKworCXBtaWMwOiBkYTkwNjNANTggeworCQljb21wYXRpYmxlID0gImRsZyxkYTkwNjMiCisJCXJlZyA9IDwweDU4PjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzY+OworCQlpbnRlcnJ1cHRzID0gPDExIElSUV9UWVBFX0xFVkVMX0xPVz47CisJCWludGVycnVwdC1jb250cm9sbGVyOworCisJCXJ0YyB7CisJCQljb21wYXRpYmxlID0gImRsZyxkYTkwNjMtcnRjIjsKKwkJfTsKKworCQl3ZHQgeworCQkJY29tcGF0aWJsZSA9ICJkbGcsZGE5MDYzLXdhdGNoZG9nIjsKKwkJfTsKKworCQlvbmtleSB7CisJCQljb21wYXRpYmxlID0gImRsZyxkYTkwNjMtb25rZXkiOworCQkJZGxnLGRpc2FibGUta2V5LXBvd2VyOworCQl9OworCisJCXJlZ3VsYXRvcnMgeworCQkJREE5MDYzX0JDT1JFMTogYmNvcmUxIHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJCQ09SRTEiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDMwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTU3MDAwMD47CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb2FtcCA9IDw1MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm9hbXAgPSA8MjAwMDAwMD47CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQl9OworCQkJREE5MDYzX0xETzExOiBsZG8xMSB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAiTERPXzExIjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw5MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDM2MDAwMDA+OworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJfTsKKwkJfTsKKwl9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2RhOTE1MC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2RhOTE1MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ0ZGNhNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvZGE5MTUwLnR4dApAQCAtMCwwICsxLDYyIEBACitEaWFsb2cgU2VtaWNvbmR1Y3RvciBEQTkxNTAgQ29tYmluZWQgQ2hhcmdlci9GdWVsLUdhdWdlIE1GRCBiaW5kaW5ncworCitEQTkxNTAgY29uc2lzdHMgb2YgYSBncm91cCBvZiBzdWItZGV2aWNlczoKKworRGV2aWNlCQkJIERlc2NyaXB0aW9uCistLS0tLS0JCQkgLS0tLS0tLS0tLS0KK2RhOTE1MC1ncGFkYwkJOiBHZW5lcmFsIFB1cnBvc2UgQURDCitkYTkxNTAtY2hhcmdlcgkJOiBCYXR0ZXJ5IENoYXJnZXIKK2RhOTE1MC1mZwkJOiBCYXR0ZXJ5IEZ1ZWwtR2F1Z2UKKworPT09PT09CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImRsZyxkYTkxNTAiCistIHJlZzogU3BlY2lmaWVzIHRoZSBJMkMgc2xhdmUgYWRkcmVzcworLSBpbnRlcnJ1cHQtcGFyZW50OiBTcGVjaWZpZXMgdGhlIHBoYW5kbGUgb2YgdGhlIGludGVycnVwdCBjb250cm9sbGVyIHRvIHdoaWNoCisgIHRoZSBJUlFzIGZyb20gZGE5MTUwIGFyZSBkZWxpdmVyZWQgdG8uCistIGludGVycnVwdHM6IElSUSBsaW5lIGluZm8gZm9yIGRhOTE1MCBjaGlwLgorLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogZGE5MTUwIGhhcyBpbnRlcm5hbCBJUlFzIChvd24gSVJRIGRvbWFpbikuCisgIChTZWUgLi4vaW50ZXJydXB0LWNvbnRyb2xsZXIvaW50ZXJydXB0cy50eHQgZm9yCisgICBmdXJ0aGVyIGluZm9ybWF0aW9uIHJlbGF0aW5nIHRvIGludGVycnVwdCBwcm9wZXJ0aWVzKQorCitTdWItZGV2aWNlczoKKy0gZGE5MTUwLWdwYWRjOiBTZWUgLi4vaWlvL2FkYy9kYTkxNTAtZ3BhZGMudHh0CistIGRhOTE1MC1jaGFyZ2VyOiBTZWUgLi4vcG93ZXIvZGE5MTUwLWNoYXJnZXIudHh0CistIGRhOTE1MC1mZzogU2VlIC4uL3Bvd2VyL2RhOTE1MC1mZy50eHQKKworRXhhbXBsZToKKworCWNoYXJnZXJfZmc6IGRhOTE1MEA1OCB7CisJCWNvbXBhdGlibGUgPSAiZGxnLGRhOTE1MCI7CisJCXJlZyA9IDwweDU4PjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzY+OworCQlpbnRlcnJ1cHRzID0gPDExIElSUV9UWVBFX0xFVkVMX0xPVz47CisJCWludGVycnVwdC1jb250cm9sbGVyOworCisJCWdwYWRjOiBkYTkxNTAtZ3BhZGMgeworCQkJY29tcGF0aWJsZSA9ICJkbGcsZGE5MTUwLWdwYWRjIjsKKwkJCSNpby1jaGFubmVsLWNlbGxzID0gPDE+OworCQl9OworCisJCWNoYXJnZXIgeworCQkJY29tcGF0aWJsZSA9ICJkbGcsZGE5MTUwLWNoYXJnZXIiOworCisJCQlpby1jaGFubmVscyA9IDwmZ3BhZGMgMD4sCisJCQkJICAgICAgPCZncGFkYyAyPiwKKwkJCQkgICAgICA8JmdwYWRjIDg+LAorCQkJCSAgICAgIDwmZ3BhZGMgNT47CisJCQlpby1jaGFubmVsLW5hbWVzID0gIkNIQU5fSUJVUyIsCisJCQkJCSAgICJDSEFOX1ZCVVMiLAorCQkJCQkgICAiQ0hBTl9USlVOQyIsCisJCQkJCSAgICJDSEFOX1ZCQVQiOworCQl9OworCisJCWZ1ZWwtZ2F1Z2UgeworCQkJY29tcGF0aWJsZSA9ICJkbGcsZGE5MTUwLWZ1ZWwtZ2F1Z2UiOworCisJCQlkbGcsdXBkYXRlLWludGVydmFsID0gPDEwMDAwPjsKKwkJCWRsZyx3YXJuLXNvYy1sZXZlbCA9IC9iaXRzLyA4IDwxNT47CisJCQlkbGcsY3JpdC1zb2MtbGV2ZWwgPSAvYml0cy8gOCA8NT4KKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9oaTY0MjEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9oaTY0MjEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkNWE0NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2hpNjQyMS50eHQKQEAgLTAsMCArMSwzOCBAQAorKiBISTY0MjEgTXVsdGktRnVuY3Rpb25hbCBEZXZpY2UgKE1GRCksIGJ5IEhpU2lsaWNvbiBMdGQuCisKK1JlcXVpcmVkIHBhcmVudCBkZXZpY2UgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZQk6IGNvbnRhaW5zICJoaXNpbGljb24saGk2NDIxLXBtaWMiOworLSByZWcJCTogcmVnaXN0ZXIgcmFuZ2Ugc3BhY2Ugb2YgaGk2NDIxOworCitTdXBwb3J0ZWQgSGk2NDIxIHN1Yi1kZXZpY2VzIGluY2x1ZGU6CisKK0RldmljZSAgICAgICAgICAgICAgICAgICAgIElSUSBOYW1lcyAgICAgICAgICAgICAgU3VwcGx5IE5hbWVzICAgRGVzY3JpcHRpb24KKy0tLS0tLSAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLSAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tICAgLS0tLS0tLS0tLS0KK3JlZ3VsYXRvcnMgICAgICAgICAgICAgICA6ICBOb25lICAgICAgICAgICAgICAgICA6IE5vbmUgICAgICAgICA6IFJlZ3VsYXRvcnMKKworUmVxdWlyZWQgY2hpbGQgZGV2aWNlIHByb3BlcnRpZXM6CitOb25lLgorCitFeGFtcGxlOgorCWhpNjQyMSB7CisJCWNvbXBhdGlibGUgPSAiaGlzaWxpY29uLGhpNjQyMS1wbWljIjsKKwkJcmVnID0gPDB4ZmNjMDAwMDAgMHgwMTgwPjsgLyogMHg2MCA8PCAyICovCisKKwkJcmVndWxhdG9ycyB7CisJCQkvLyBzdXBwbHkgZm9yIE1MQyBOQU5ELyBlTU1DCisJCQloaTY0MjFfdm91dDBfcmVnOiBoaTY0MjFfdm91dDAgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gIlZPVVQwIjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwyODUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwyODUwMDAwPjsKKwkJCX07CisKKwkJCS8vIHN1cHBseSBmb3IgMjZNIE9zY2lsbGF0b3IKKwkJCWhpNjQyMV92b3V0MV9yZWc6IGhpNjQyMV92b3V0MSB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAiVk9VVDEiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDE3MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDIwMDAwMDA+OworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2xwMzk0My50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2xwMzk0My50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg1OTFkNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvbHAzOTQzLnR4dApAQCAtMCwwICsxLDMzIEBACitUSS9OYXRpb25hbCBTZW1pY29uZHVjdG9yIExQMzk0MyBNRkQgZHJpdmVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogInRpLGxwMzk0MyIKKyAgLSByZWc6IEkyQyBzbGF2ZSBhZGRyZXNzLiBGcm9tIDB4NjAgdG8gMHg2Ny4KKworTFAzOTQzIGNvbnNpc3RzIG9mIHR3byBzdWItZGV2aWNlcywgbHAzOTQzLWdwaW8gYW5kIGxwMzk0My1wd20uCisKK0ZvciB0aGUgTFAzOTQzIEdQSU8gcHJvcGVydGllcyBwbGVhc2UgcmVmZXIgdG86CitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLWxwMzk0My50eHQKKworRm9yIHRoZSBMUDM5NDMgUFdNIHByb3BlcnRpZXMgcGxlYXNlIHJlZmVyIHRvOgorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9wd20tbHAzOTQzLnR4dAorCitFeGFtcGxlOgorCitscDM5NDNANjAgeworCWNvbXBhdGlibGUgPSAidGksbHAzOTQzIjsKKwlyZWcgPSA8MHg2MD47CisKKwlncGlvZXg6IGdwaW8geworCQljb21wYXRpYmxlID0gInRpLGxwMzk0My1ncGlvIjsKKwkJZ3Bpby1jb250cm9sbGVyOworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwl9OworCisJcHdtMzk0MzogcHdtIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSxscDM5NDMtcHdtIjsKKwkJI3B3bS1jZWxscyA9IDwyPjsKKwkJdGkscHdtMCA9IDw4IDkgMTA+OworCQl0aSxwd20xID0gPDE1PjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvbWF4MTQ1NzcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9tYXgxNDU3Ny50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM2MjY0YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvbWF4MTQ1NzcudHh0CkBAIC0wLDAgKzEsMTQ2IEBACitNYXhpbSBNQVgxNDU3Ny83NzgzNiBNdWx0aS1GdW5jdGlvbiBEZXZpY2UKKworTUFYMTQ1NzcgaXMgYSBNdWx0aS1GdW5jdGlvbiBEZXZpY2Ugd2l0aCBNaWNyby1VU0IgSW50ZXJmYWNlIENpcmN1aXQsIExpKworQmF0dGVyeSBDaGFyZ2VyIGFuZCBTRk9VVCBMRE8gb3V0cHV0IGZvciBwb3dlcmluZyBVU0IgZGV2aWNlcy4gSXQgaXMKK2ludGVyZmFjZWQgdG8gaG9zdCBjb250cm9sbGVyIHVzaW5nIEkyQy4KKworTUFYNzc4MzYgYWRkaXRpb25hbGx5IGNvbnRhaW5zIFBNSUMgKHdpdGggdHdvIExETyByZWd1bGF0b3JzKSBhbmQgRnVlbCBHYXVnZS4KKworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogTXVzdCBiZSAibWF4aW0sbWF4MTQ1NzciIG9yICJtYXhpbSxtYXg3NzgzNiIuCistIHJlZyA6IEkyQyBzbGF2ZSBhZGRyZXNzIGZvciB0aGUgbWF4MTQ1NzcgY2hpcCAoMHgyNSBmb3IgbWF4MTQ1NzcvbWF4Nzc4MzYpCistIGludGVycnVwdHMgOiBJUlEgbGluZSBmb3IgdGhlIGNoaXAuCistIGludGVycnVwdC1wYXJlbnQgOiAgVGhlIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlci4KKworCitSZXF1aXJlZCBub2RlczoKKyAtIGNoYXJnZXIgOgorCU5vZGUgZm9yIGNvbmZpZ3VyaW5nIHRoZSBjaGFyZ2VyIGRyaXZlci4KKwlSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCQktIGNvbXBhdGlibGUgOiAibWF4aW0sbWF4MTQ1NzctY2hhcmdlciIKKwkJCW9yICJtYXhpbSxtYXg3NzgzNi1jaGFyZ2VyIgorCQktIG1heGltLGZhc3QtY2hhcmdlLXVhbXAgOiBDdXJyZW50IGluIHVBIGZvciBGYXN0IENoYXJnZTsKKwkJCVZhbGlkIHZhbHVlczoKKwkJCS0gZm9yIG1heDE0NTc3OiA5MDAwMCAtIDk1MDAwMDsKKwkJCS0gZm9yIG1heDc3ODM2OiA0NTAwMCAtIDQ3NTAwMDsKKwkJLSBtYXhpbSxlb2MtdWFtcCA6IEN1cnJlbnQgaW4gdUEgZm9yIEVuZC1PZi1DaGFyZ2UgbW9kZTsKKwkJCVZhbGlkIHZhbHVlczoKKwkJCS0gZm9yIG1heDE0NTc3OiA1MDAwMCAtIDIwMDAwMDsKKwkJCS0gZm9yIG1heDc3ODM2OiA1MDAwIC0gMTAwMDAwOworCQktIG1heGltLG92cC11dm9sdCA6IE92ZXJWb2x0YWdlIFByb3RlY3Rpb24gVGhyZXNob2xkIGluIHVWOworCQkJSW4gYW4gb3ZlcnZvbHRhZ2UgY29uZGl0aW9uLCBJTlQgYXNzZXJ0cyBhbmQgY2hhcmdpbmcKKwkJCXN0b3BzLiBWYWxpZCB2YWx1ZXM6CisJCQktIDYwMDAwMDAsIDY1MDAwMDAsIDcwMDAwMDAsIDc1MDAwMDA7CisJCS0gbWF4aW0sY29uc3RhbnQtdXZvbHQgOiBCYXR0ZXJ5IENvbnN0YW50IFZvbHRhZ2UgaW4gdVY7CisJCQlWYWxpZCB2YWx1ZXM6CisJCQktIDQwMDAwMDAgLSA0MjgwMDAwIChzdGVwIGJ5IDIwMDAwKTsKKwkJCS0gNDM1MDAwMDsKKworCitPcHRpb25hbCBub2RlczoKKy0gbWF4MTQ1NzctbXVpYy9tYXg3NzgzNi1tdWljIDoKKwlOb2RlIHVzZWQgb25seSBieSBleHRjb24gY29uc3VtZXJzLgorCVJlcXVpcmVkIHByb3BlcnRpZXM6CisJCS0gY29tcGF0aWJsZSA6ICJtYXhpbSxtYXgxNDU3Ny1tdWljIiBvciAibWF4aW0sbWF4Nzc4MzYtbXVpYyIKKworLSByZWd1bGF0b3JzIDoKKwlSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCQktIGNvbXBhdGlibGUgOiAibWF4aW0sbWF4MTQ1NzctcmVndWxhdG9yIgorCQkJb3IgIm1heGltLG1heDc3ODM2LXJlZ3VsYXRvciIKKworCU1heSBjb250YWluIGEgc3ViLW5vZGUgcGVyIHJlZ3VsYXRvciBmcm9tIHRoZSBsaXN0IGJlbG93LiBFYWNoCisJc3ViLW5vZGUgc2hvdWxkIGNvbnRhaW4gdGhlIGNvbnN0cmFpbnRzIGFuZCBpbml0aWFsaXphdGlvbiBpbmZvcm1hdGlvbgorCWZvciB0aGF0IHJlZ3VsYXRvci4gU2VlIHJlZ3VsYXRvci50eHQgZm9yIGEgZGVzY3JpcHRpb24gb2Ygc3RhbmRhcmQKKwlwcm9wZXJ0aWVzIGZvciB0aGVzZSBzdWItbm9kZXMuCisKKwlMaXN0IG9mIHZhbGlkIHJlZ3VsYXRvciBuYW1lczoKKwktIGZvciBtYXgxNDU3NzogQ0hBUkdFUiwgU0FGRU9VVC4KKwktIGZvciBtYXg3NzgzNjogQ0hBUkdFUiwgU0FGRU9VVCwgTERPMSwgTERPMi4KKworCVRoZSBTQUZFT1VUIGlzIGEgZml4ZWQgdm9sdGFnZSByZWd1bGF0b3Igc28gdGhlcmUgaXMgbm8gbmVlZCB0byBzcGVjaWZ5CisJdm9sdGFnZXMgZm9yIGl0LgorCisKK0V4YW1wbGU6CisKKyNpbmNsdWRlIDxkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaD4KKworbWF4MTQ1NzdAMjUgeworCWNvbXBhdGlibGUgPSAibWF4aW0sbWF4MTQ1NzciOworCXJlZyA9IDwweDI1PjsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncHgxPjsKKwlpbnRlcnJ1cHRzID0gPDUgSVJRX1RZUEVfTk9ORT47CisKKwltdWljOiBtYXgxNDU3Ny1tdWljIHsKKwkJY29tcGF0aWJsZSA9ICJtYXhpbSxtYXgxNDU3Ny1tdWljIjsKKwl9OworCisJcmVndWxhdG9ycyB7CisJCWNvbXBhdGlibGUgPSAibWF4aW0sbWF4MTQ1NzctcmVndWxhdG9yIjsKKworCQlTQUZFT1VUIHsKKwkJCXJlZ3VsYXRvci1uYW1lID0gIlNBRkVPVVQiOworCQl9OworCQlDSEFSR0VSIHsKKwkJCXJlZ3VsYXRvci1uYW1lID0gIkNIQVJHRVIiOworCQkJcmVndWxhdG9yLW1pbi1taWNyb2FtcCA9IDw5MDAwMD47CisJCQlyZWd1bGF0b3ItbWF4LW1pY3JvYW1wID0gPDk1MDAwMD47CisJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJfTsKKwl9OworCisJY2hhcmdlciB7CisJCWNvbXBhdGlibGUgPSAibWF4aW0sbWF4MTQ1NzctY2hhcmdlciI7CisKKwkJbWF4aW0sY29uc3RhbnQtdXZvbHQgPSA8NDM1MDAwMD47CisJCW1heGltLGZhc3QtY2hhcmdlLXVhbXAgPSA8NDUwMDAwPjsKKwkJbWF4aW0sZW9jLXVhbXAgPSA8NTAwMDA+OworCQltYXhpbSxvdnAtdXZvbHQgPSA8NjUwMDAwMD47CisJfTsKK307CisKKworbWF4Nzc4MzZAMjUgeworCWNvbXBhdGlibGUgPSAibWF4aW0sbWF4Nzc4MzYiOworCXJlZyA9IDwweDI1PjsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncHgxPjsKKwlpbnRlcnJ1cHRzID0gPDUgSVJRX1RZUEVfTk9ORT47CisKKwltdWljOiBtYXg3NzgzNi1tdWljIHsKKwkJY29tcGF0aWJsZSA9ICJtYXhpbSxtYXg3NzgzNi1tdWljIjsKKwl9OworCisJcmVndWxhdG9ycyB7CisJCWNvbXBhdGlibGUgPSAibWF4aW0sbWF4Nzc4MzYtcmVndWxhdG9yIjsKKworCQlTQUZFT1VUIHsKKwkJCXJlZ3VsYXRvci1uYW1lID0gIlNBRkVPVVQiOworCQl9OworCQlDSEFSR0VSIHsKKwkJCXJlZ3VsYXRvci1uYW1lID0gIkNIQVJHRVIiOworCQkJcmVndWxhdG9yLW1pbi1taWNyb2FtcCA9IDw5MDAwMD47CisJCQlyZWd1bGF0b3ItbWF4LW1pY3JvYW1wID0gPDk1MDAwMD47CisJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJfTsKKwkJTERPMSB7CisJCQlyZWd1bGF0b3ItbmFtZSA9ICJMRE8xIjsKKwkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDI3MDAwMDA+OworCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MjcwMDAwMD47CisJCX07CisJCUxETzIgeworCQkJcmVndWxhdG9yLW5hbWUgPSAiTERPMiI7CisJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw4MDAwMDA+OworCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8Mzk1MDAwMD47CisJCX07CisJfTsKKworCWNoYXJnZXIgeworCQljb21wYXRpYmxlID0gIm1heGltLG1heDc3ODM2LWNoYXJnZXIiOworCisJCW1heGltLGNvbnN0YW50LXV2b2x0ID0gPDQzNTAwMDA+OworCQltYXhpbSxmYXN0LWNoYXJnZS11YW1wID0gPDIyNTAwMD47CisJCW1heGltLGVvYy11YW1wID0gPDc1MDA+OworCQltYXhpbSxvdnAtdXZvbHQgPSA8NjUwMDAwMD47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL21heDc3Njg2LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvbWF4Nzc2ODYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0MWU3NjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL21heDc3Njg2LnR4dApAQCAtMCwwICsxLDI3IEBACitNYXhpbSBNQVg3NzY4NiBtdWx0aS1mdW5jdGlvbiBkZXZpY2UKKworTUFYNzc2ODYgaXMgYSBNdWx0aWZ1bmN0aW9uIGRldmljZSB3aXRoIFBNSUMsIFJUQyBhbmQgQ2hhcmdlciBvbiBjaGlwLiBJdCBpcworaW50ZXJmYWNlZCB0byBob3N0IGNvbnRyb2xsZXIgdXNpbmcgaTJjIGludGVyZmFjZS4gUE1JQyBhbmQgQ2hhcmdlciBzdWJtb2R1bGVzCithcmUgYWRkcmVzc2VkIHVzaW5nIHNhbWUgaTJjIHNsYXZlIGFkZHJlc3Mgd2hlcmVhcyBSVEMgc3VibW9kdWxlIHVzZXMKK2RpZmZlcmVudCBpMmMgc2xhdmUgYWRkcmVzcyxwcmVzZW50bHkgZm9yIHdoaWNoIHdlIGFyZSBzdGF0aWNhbGx5IGNyZWF0aW5nIGkyYworY2xpZW50IHdoaWxlIHByb2JpbmcuVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIGJpbmRpbmcgZm9yIG1mZCBkZXZpY2UgYW5kCitQTUlDIHN1Ym1vZHVsZS4KKworQmluZGluZ3MgZm9yIHRoZSBidWlsdC1pbiAzMmsgY2xvY2sgZ2VuZXJhdG9yIGJsb2NrIGFuZAorcmVndWxhdG9ycyBhcmUgZGVmaW5lZCBpbiAuLi9jbGsvbWF4aW0sbWF4Nzc2ODYudHh0IGFuZAorLi4vcmVndWxhdG9yL21heDc3Njg2LnR4dCByZXNwZWN0aXZlbHkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBNdXN0IGJlICJtYXhpbSxtYXg3NzY4NiI7CistIHJlZyA6IFNwZWNpZmllcyB0aGUgaTJjIHNsYXZlIGFkZHJlc3Mgb2YgUE1JQyBibG9jay4KKy0gaW50ZXJydXB0cyA6IFRoaXMgaTJjIGRldmljZSBoYXMgYW4gSVJRIGxpbmUgY29ubmVjdGVkIHRvIHRoZSBtYWluIFNvQy4KKy0gaW50ZXJydXB0LXBhcmVudCA6IFRoZSBwYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIuCisKK0V4YW1wbGU6CisKKwltYXg3NzY4NjogcG1pY0AwOSB7CisJCWNvbXBhdGlibGUgPSAibWF4aW0sbWF4Nzc2ODYiOworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZ3YWtldXBfZWludD47CisJCWludGVycnVwdHMgPSA8MjYgMD47CisJCXJlZyA9IDwweDA5PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9tYXg3NzY5My50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL21heDc3NjkzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzQyNTg0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9tYXg3NzY5My50eHQKQEAgLTAsMCArMSwxODggQEAKK01heGltIE1BWDc3NjkzIG11bHRpLWZ1bmN0aW9uIGRldmljZQorCitNQVg3NzY5MyBpcyBhIE11bHRpZnVuY3Rpb24gZGV2aWNlIHdpdGggdGhlIGZvbGxvd2luZyBzdWJtb2R1bGVzOgorLSBQTUlDLAorLSBDSEFSR0VSLAorLSBMRUQsCistIE1VSUMsCistIEhBUFRJQworCitJdCBpcyBpbnRlcmZhY2VkIHRvIGhvc3QgY29udHJvbGxlciB1c2luZyBpMmMuCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgYmluZGluZ3MgZm9yIHRoZSBtZmQgZGV2aWNlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogTXVzdCBiZSAibWF4aW0sbWF4Nzc2OTMiLgorLSByZWcgOiBTcGVjaWZpZXMgdGhlIGkyYyBzbGF2ZSBhZGRyZXNzIG9mIFBNSUMgYmxvY2suCistIGludGVycnVwdHMgOiBUaGlzIGkyYyBkZXZpY2UgaGFzIGFuIElSUSBsaW5lIGNvbm5lY3RlZCB0byB0aGUgbWFpbiBTb0MuCistIGludGVycnVwdC1wYXJlbnQgOiAgVGhlIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlci4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gcmVndWxhdG9ycyA6IFRoZSByZWd1bGF0b3JzIG9mIG1heDc3NjkzIGhhdmUgdG8gYmUgaW5zdGFudGlhdGVkIHVuZGVyIHN1Ym5vZAorICBuYW1lZCAicmVndWxhdG9ycyIgdXNpbmcgdGhlIGZvbGxvd2luZyBmb3JtYXQuCisKKwlyZWd1bGF0b3JzIHsKKwkJcmVndWFsdG9yLWNvbXBhdGlibGUgPSBFU0FGRU9VVDEvRVNBRkVPVVQyL0NIQVJHRVIKKwkJc3RhbmRhcmQgcmVndWxhdG9yIGNvbnN0cmF0aW50c1sqXS4KKwl9OworCisJWypdIHJlZmVyIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvcmVndWxhdG9yLnR4dAorCistIGhhcHRpYyA6IFRoZSBNQVg3NzY5MyBoYXB0aWMgZGV2aWNlIHV0aWxpc2VzIGEgUFdNIGNvbnRyb2xsZWQgbW90b3IgdG8gcHJvdmlkZQorICB1c2VycyB3aXRoIHRhY3RpbGUgZmVlZGJhY2suIFBXTSBwZXJpb2QgYW5kIGR1dHktY3ljbGUgYXJlIHZhcmllZCBpbgorICBvcmRlciB0byBwcm92aWRlIHRoZSBhcHByb3ByaXRlIGxldmVsIG9mIGZlZWRiYWNrLgorCisgUmVxdWlyZWQgcHJvcGVydGllczoKKwktIGNvbXBhdGlibGUgOiBNdXN0IGJlICJtYXhpbSxtYXg3NzY5My1ocGF0aWMiCisJLSBoYXB0aWMtc3VwcGx5IDogcG93ZXIgc3VwcGx5IGZvciB0aGUgaGFwdGljIG1vdG9yCisJWypdIHJlZmVyIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvcmVndWxhdG9yLnR4dAorCS0gcHdtcyA6IHBoYW5kbGUgdG8gdGhlIHBoeXNpY2FsIFBXTShQdWxzZSBXaWR0aCBNb2R1bGF0aW9uKSBkZXZpY2UuCisJIFBXTSBwcm9wZXJ0aWVzIHNob3VsZCBiZSBuYW1lZCAicHdtcyIuIEFuZCBudW1iZXIgb2YgY2VsbCBpcyBkaWZmZXJlbnQKKwkgZm9yIGVhY2ggcHdtIGRldmljZS4KKwkgVG8gZ2V0IG1vcmUgaW5mb3JtYXRpb25zLCBwbGVhc2UgcmVmZXIgdG8gZG9jdW1lbnRhaW9uLgorCVsqXSByZWZlciBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3B3bS50eHQKKworLSBjaGFyZ2VyIDogTm9kZSBjb25maWd1cmluZyB0aGUgY2hhcmdlciBkcml2ZXIuCisgIElmIHByZXNlbnQsIHJlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZSA6IE11c3QgYmUgIm1heGltLG1heDc3NjkzLWNoYXJnZXIiLgorCisgIE9wdGlvbmFsIHByb3BlcnRpZXMgKGlmIG5vdCBzZXQsIGRlZmF1bHRzIHdpbGwgYmUgdXNlZCk6CisgIC0gbWF4aW0sY29uc3RhbnQtbWljcm92b2x0IDogQmF0dGVyeSBjb25zdGFudCB2b2x0YWdlIGluIHVWLiBUaGUgY2hhcmdlcgorICAgIHdpbGwgb3BlcmF0ZSBpbiBmYXN0IGNoYXJnZSBjb25zdGFudCBjdXJyZW50IG1vZGUgdGlsbCBiYXR0ZXJ5IHZvbHRhZ2UKKyAgICByZWFjaGVzIHRoaXMgbGV2ZWwuIFRoZW4gdGhlIGNoYXJnZXIgd2lsbCBzd2l0Y2ggdG8gZmFzdCBjaGFyZ2UgY29uc3RhbnQKKyAgICB2b2x0YWdlIG1vZGUuIEFsc28gdnN5cyAoc3lzdGVtIHZvbHRhZ2UpIHdpbGwgYmUgc2V0IHRvIHRoaXMgdmFsdWUgd2hlbgorICAgIERDIHBvd2VyIGlzIHN1cHBsaWVkIGJ1dCBjaGFyZ2VyIGlzIG5vdCBlbmFibGVkLgorICAgIFZhbGlkIHZhbHVlczogMzY1MDAwMCAtIDQ0MDAwMDAsIHN0ZXAgYnkgMjUwMDAgKHJvdW5kZWQgZG93bikKKyAgICBEZWZhdWx0OiA0MjAwMDAwCisKKyAgLSBtYXhpbSxtaW4tc3lzdGVtLW1pY3Jvdm9sdCA6IE1pbmltYWwgc3lzdGVtIHZvbHRhZ2UgaW4gdVYuCisgICAgVmFsaWQgdmFsdWVzOiAzMDAwMDAwIC0gMzcwMDAwMCwgc3RlcCBieSAxMDAwMDAgKHJvdW5kZWQgZG93bikKKyAgICBEZWZhdWx0OiAzNjAwMDAwCisKKyAgLSBtYXhpbSx0aGVybWFsLXJlZ3VsYXRpb24tY2Vsc2l1cyA6IFRlbXBlcmF0dXJlIGluIENlbHNpdXMgZm9yIGVudGVyaW5nCisgICAgaGlnaCB0ZW1wZXJhdHVyZSBjaGFyZ2luZyBtb2RlLiBJZiBkaWUgdGVtcGVyYXR1cmUgZXhjZWVkcyB0aGlzIHZhbHVlCisgICAgdGhlIGNoYXJnaW5nIGN1cnJlbnQgd2lsbCBiZSByZWR1Y2VkIGJ5IDEwNSBtQS9DZWxzaXVzLgorICAgIFZhbGlkIHZhbHVlczogNzAsIDg1LCAxMDAsIDExNQorICAgIERlZmF1bHQ6IDEwMAorCisgIC0gbWF4aW0sYmF0dGVyeS1vdmVyY3VycmVudC1taWNyb2FtcCA6IE92ZXJjdXJyZW50IHByb3RlY3Rpb24gdGhyZXNob2xkCisgICAgaW4gdUEgKGN1cnJlbnQgZnJvbSBiYXR0ZXJ5IHRvIHN5c3RlbSkuCisgICAgVmFsaWQgdmFsdWVzOiAyMDAwMDAwIC0gMzUwMDAwMCwgc3RlcCBieSAyNTAwMDAgKHJvdW5kZWQgZG93bikKKyAgICBEZWZhdWx0OiAzNTAwMDAwCisKKyAgLSBtYXhpbSxjaGFyZ2UtaW5wdXQtdGhyZXNob2xkLW1pY3Jvdm9sdCA6IFRocmVzaG9sZCB2b2x0YWdlIGluIHVWIGZvcgorICAgIHRyaWdnZXJpbmcgaW5wdXQgdm9sdGFnZSByZWd1bGF0aW9uIGxvb3AuIElmIGlucHV0IHZvbHRhZ2UgZGVjcmVhc2VzCisgICAgYmVsb3cgdGhpcyB2YWx1ZSwgdGhlIGlucHV0IGN1cnJlbnQgd2lsbCBiZSByZWR1Y2VkIHRvIHJlYWNoIHRoZQorICAgIHRocmVzaG9sZCB2b2x0YWdlLgorICAgIFZhbGlkIHZhbHVlczogNDMwMDAwMCwgNDcwMDAwMCwgNDgwMDAwMCwgNDkwMDAwMAorICAgIERlZmF1bHQ6IDQzMDAwMDAKKworLSBsZWQgOiB0aGUgTEVEIHN1Ym1vZHVsZSBkZXZpY2Ugbm9kZQorCitUaGVyZSBhcmUgdHdvIExFRCBvdXRwdXRzIGF2YWlsYWJsZSAtIEZMRUQxIGFuZCBGTEVEMi4gRWFjaCBvZiB0aGVtIGNhbgorY29udHJvbCBhIHNlcGFyYXRlIExFRCBvciB0aGV5IGNhbiBiZSBjb25uZWN0ZWQgdG9nZXRoZXIgdG8gZG91YmxlCit0aGUgbWF4aW11bSBjdXJyZW50IGZvciBhIHNpbmdsZSBjb25uZWN0ZWQgTEVELiBPbmUgTEVEIGlzIHJlcHJlc2VudGVkCitieSBvbmUgY2hpbGQgbm9kZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IE11c3QgYmUgIm1heGltLG1heDc3NjkzLWxlZCIuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIG1heGltLGJvb3N0LW1vZGUgOgorCUluIGJvb3N0IG1vZGUgdGhlIGRldmljZSBjYW4gcHJvZHVjZSB1cCB0byAxLjJBIG9mIHRvdGFsIGN1cnJlbnQKKwlvbiBib3RoIG91dHB1dHMuIFRoZSBtYXhpbXVtIGN1cnJlbnQgb24gZWFjaCBvdXRwdXQgaXMgcmVkdWNlZAorCXRvIDYyNW1BIHRoZW4uIElmIG5vdCBlbmFibGVkIGV4cGxpY2l0bHksIGJvb3N0IHNldHRpbmcgZGVmYXVsdHMgdG8KKwlMRURTX0JPT1NUX0ZJWEVEIGluIGNhc2UgYm90aCBjdXJyZW50IHNvdXJjZXMgYXJlIHVzZWQuCisJUG9zc2libGUgdmFsdWVzOgorCQlMRURTX0JPT1NUX09GRiAoMCkgLSBubyBib29zdCwKKwkJTEVEU19CT09TVF9BREFQVElWRSAoMSkgLSBhZGFwdGl2ZSBtb2RlLAorCQlMRURTX0JPT1NUX0ZJWEVEICgyKSAtIGZpeGVkIG1vZGUuCistIG1heGltLGJvb3N0LW12b3V0IDogT3V0cHV0IHZvbHRhZ2Ugb2YgdGhlIGJvb3N0IG1vZHVsZSBpbiBtaWxsaXZvbHRzLgorCVZhbGlkIHZhbHVlczogMzMwMCAtIDU1MDAsIHN0ZXAgYnkgMjUgKHJvdW5kZWQgZG93bikKKwlEZWZhdWx0OiAzMzAwCistIG1heGltLG12c3lzLW1pbiA6IExvdyBpbnB1dCB2b2x0YWdlIGxldmVsIGluIG1pbGxpdm9sdHMuIEZsYXNoIGlzIG5vdCBmaXJlZAorCWlmIGNoaXAgZXN0aW1hdGVzIHRoYXQgc3lzdGVtIHZvbHRhZ2UgY291bGQgZHJvcCBiZWxvdyB0aGlzIGxldmVsIGR1ZQorCXRvIGZsYXNoIHBvd2VyIGNvbnN1bXB0aW9uLgorCVZhbGlkIHZhbHVlczogMjQwMCAtIDM0MDAsIHN0ZXAgYnkgMzMgKHJvdW5kZWQgZG93bikKKwlEZWZhdWx0OiAyNDAwCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHRoZSBMRUQgY2hpbGQgbm9kZToKKy0gbGVkLXNvdXJjZXMgOiBzZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvY29tbW9uLnR4dDsKKwkJZGV2aWNlIGN1cnJlbnQgb3V0cHV0IGlkZW50aWZpZXJzOiAwIC0gRkxFRDEsIDEgLSBGTEVEMgorLSBsZWQtbWF4LW1pY3JvYW1wIDogc2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2NvbW1vbi50eHQKKwlWYWxpZCB2YWx1ZXMgZm9yIGEgTEVEIGNvbm5lY3RlZCB0byBvbmUgRkxFRCBvdXRwdXQ6CisJCTE1NjI1IC0gMjUwMDAwLCBzdGVwIGJ5IDE1NjI1IChyb3VuZGVkIGRvd24pCisJVmFsaWQgdmFsdWVzIGZvciBhIExFRCBjb25uZWN0ZWQgdG8gYm90aCBGTEVEIG91dHB1dHM6CisJCTE1NjI1IC0gNTAwMDAwLCBzdGVwIGJ5IDE1NjI1IChyb3VuZGVkIGRvd24pCistIGZsYXNoLW1heC1taWNyb2FtcCA6IHNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9jb21tb24udHh0CisJVmFsaWQgdmFsdWVzIGZvciBhIHNpbmdsZSBMRUQgY29ubmVjdGVkIHRvIG9uZSBGTEVEIG91dHB1dAorCShib29zdCBtb2RlIG11c3QgYmUgdHVybmVkIG9mZik6CisJCTE1NjI1IC0gMTAwMDAwMCwgc3RlcCBieSAxNTYyNSAocm91bmRlZCBkb3duKQorCVZhbGlkIHZhbHVlcyBmb3IgYSBzaW5nbGUgTEVEIGNvbm5lY3RlZCB0byBib3RoIEZMRUQgb3V0cHV0czoKKwkJMTU2MjUgLSAxMjUwMDAwLCBzdGVwIGJ5IDE1NjI1IChyb3VuZGVkIGRvd24pCisJVmFsaWQgdmFsdWVzIGZvciB0d28gTEVEcyBjYXNlOgorCQkxNTYyNSAtIDYyNTAwMCwgc3RlcCBieSAxNTYyNSAocm91bmRlZCBkb3duKQorLSBmbGFzaC1tYXgtdGltZW91dC11cyA6IHNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9jb21tb24udHh0CisJVmFsaWQgdmFsdWVzOiA2MjUwMCAtIDEwMDAwMDAsIHN0ZXAgYnkgNjI1MDAgKHJvdW5kZWQgZG93bikKKworT3B0aW9uYWwgcHJvcGVydGllcyBmb3IgdGhlIExFRCBjaGlsZCBub2RlOgorLSBsYWJlbCA6IHNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9jb21tb24udHh0CisKK0V4YW1wbGU6CisjaW5jbHVkZSA8ZHQtYmluZGluZ3MvbGVkcy9jb21tb24uaD4KKworCW1heDc3NjkzQDY2IHsKKwkJY29tcGF0aWJsZSA9ICJtYXhpbSxtYXg3NzY5MyI7CisJCXJlZyA9IDwweDY2PjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3B4MT47CisJCWludGVycnVwdHMgPSA8NSAyPjsKKworCQlyZWd1bGF0b3JzIHsKKwkJCWVzYWZlb3V0QDEgeworCQkJCXJlZ3VsYXRvci1jb21wYXRpYmxlID0gIkVTQUZFT1VUMSI7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAiRVNBRkVPVVQxIjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCX07CisJCQllc2FmZW91dEAyIHsKKwkJCQlyZWd1bGF0b3ItY29tcGF0aWJsZSA9ICJFU0FGRU9VVDIiOworCQkJCXJlZ3VsYXRvci1uYW1lID0gIkVTQUZFT1VUMiI7CisJCQkJfTsKKwkJCWNoYXJnZXJAMCB7CisJCQkJcmVndWxhdG9yLWNvbXBhdGlibGUgPSAiQ0hBUkdFUiI7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAiQ0hBUkdFUiI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb2FtcCA9IDw2MDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb2FtcCA9IDwyNTgwMDAwPjsKKwkJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQl9OworCQl9OworCisJCWhhcHRpYyB7CisJCQljb21wYXRpYmxlID0gIm1heGltLG1heDc3NjkzLWhhcHRpYyI7CisJCQloYXB0aWMtc3VwcGx5ID0gPCZoYXB0aWNfc3VwcGx5PjsKKwkJCXB3bXMgPSA8JnB3bSAwIDQwMDAwIDA+OworCQkJcHdtLW5hbWVzID0gImhhcHRpYyI7CisJCX07CisKKwkJY2hhcmdlciB7CisJCQljb21wYXRpYmxlID0gIm1heGltLG1heDc3NjkzLWNoYXJnZXIiOworCisJCQltYXhpbSxjb25zdGFudC1taWNyb3ZvbHQgPSA8NDIwMDAwMD47CisJCQltYXhpbSxtaW4tc3lzdGVtLW1pY3Jvdm9sdCA9IDwzNjAwMDAwPjsKKwkJCW1heGltLHRoZXJtYWwtcmVndWxhdGlvbi1jZWxzaXVzID0gPDc1PjsKKwkJCW1heGltLGJhdHRlcnktb3ZlcmN1cnJlbnQtbWljcm9hbXAgPSA8MzAwMDAwMD47CisJCQltYXhpbSxjaGFyZ2UtaW5wdXQtdGhyZXNob2xkLW1pY3Jvdm9sdCA9IDw0MzAwMDAwPjsKKworCQlsZWQgeworCQkJY29tcGF0aWJsZSA9ICJtYXhpbSxtYXg3NzY5My1sZWQiOworCQkJbWF4aW0sYm9vc3QtbW9kZSA9IDxMRURTX0JPT1NUX0ZJWEVEPjsKKwkJCW1heGltLGJvb3N0LW12b3V0ID0gPDUwMDA+OworCQkJbWF4aW0sbXZzeXMtbWluID0gPDI0MDA+OworCisJCQljYW1lcmFfZmxhc2g6IGZsYXNoLWxlZCB7CisJCQkJbGFiZWwgPSAibWF4Nzc2OTMtZmxhc2giOworCQkJCWxlZC1zb3VyY2VzID0gPDA+LCA8MT47CisJCQkJbGVkLW1heC1taWNyb2FtcCA9IDw1MDAwMDA+OworCQkJCWZsYXNoLW1heC1taWNyb2FtcCA9IDwxMjUwMDAwPjsKKwkJCQlmbGFzaC1tYXgtdGltZW91dC11cyA9IDwxMDAwMDAwPjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvbWF4Nzc4MDIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9tYXg3NzgwMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFmYzFhNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvbWF4Nzc4MDIudHh0CkBAIC0wLDAgKzEsMjYgQEAKK01heGltIE1BWDc3ODAyIG11bHRpLWZ1bmN0aW9uIGRldmljZQorCitUaGUgTWF4aW0gTUFYNzc4MDIgaXMgYSBQb3dlciBNYW5hZ2VtZW50IElDIChQTUlDKSB0aGF0IGNvbnRhaW5zIDEwIGhpZ2gKK2VmZmljaWVuY3kgQnVjayByZWd1bGF0b3JzLCAzMiBMb3ctRHJvcE91dCAoTERPKSByZWd1bGF0b3JzIHVzZWQgdG8gcG93ZXIKK3VwIGFwcGxpY2F0aW9uIHByb2Nlc3NvcnMgYW5kIHBlcmlwaGVyYWxzLCBhIDItY2hhbm5lbCAzMmtIeiBjbG9jayBvdXRwdXRzLAorYSBSZWFsLVRpbWUtQ2xvY2sgKFJUQykgYW5kIGEgSTJDIGludGVyZmFjZSB0byBwcm9ncmFtIHRoZSBpbmRpdmlkdWFsCityZWd1bGF0b3JzLCBjbG9ja3Mgb3V0cHV0cyBhbmQgdGhlIFJUQy4KKworQmluZGluZ3MgZm9yIHRoZSBidWlsdC1pbiAzMmsgY2xvY2sgZ2VuZXJhdG9yIGJsb2NrIGFuZAorcmVndWxhdG9ycyBhcmUgZGVmaW5lZCBpbiAuLi9jbGsvbWF4aW0sbWF4Nzc4MDIudHh0IGFuZAorLi4vcmVndWxhdG9yL21heDc3ODAyLnR4dCByZXNwZWN0aXZlbHkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUJCTogTXVzdCBiZSAibWF4aW0sbWF4Nzc4MDIiCistIHJlZwkJCTogU3BlY2lmaWVzIHRoZSBJMkMgc2xhdmUgYWRkcmVzcyBvZiBQTUlDIGJsb2NrLgorLSBpbnRlcnJ1cHRzCQk6IEkyQyBkZXZpY2UgSVJRIGxpbmUgY29ubmVjdGVkIHRvIHRoZSBtYWluIFNvQy4KKy0gaW50ZXJydXB0LXBhcmVudAk6IFRoZSBwYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIuCisKK0V4YW1wbGU6CisKKwltYXg3NzgwMjogcG1pY0AwOSB7CisJCWNvbXBhdGlibGUgPSAibWF4aW0sbWF4Nzc4MDIiOworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpbnRjPjsKKwkJaW50ZXJydXB0cyA9IDwyNiBJUlFfVFlQRV9OT05FPjsKKwkJcmVnID0gPDB4MDk+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL21heDg5MjUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9tYXg4OTI1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjBkYzY2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9tYXg4OTI1LnR4dApAQCAtMCwwICsxLDY0IEBACisqIE1heGltIG1heDg5MjUgUG93ZXIgTWFuYWdlbWVudCBJQworCitSZXF1aXJlZCBwYXJlbnQgZGV2aWNlIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAibWF4aW0sbWF4ODkyNSIKKy0gcmVnIDogdGhlIEkyQyBzbGF2ZSBhZGRyZXNzIGZvciB0aGUgbWF4ODkyNSBjaGlwCistIGludGVycnVwdHMgOiBJUlEgbGluZSBmb3IgdGhlIG1heDg5MjUgY2hpcAorLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogZGVzY3JpYmVzIHRoZSBtYXg4OTI1IGFzIGFuIGludGVycnVwdAorICBjb250cm9sbGVyIChoYXMgaXRzIG93biBkb21haW4pCistICNpbnRlcnJ1cHQtY2VsbHMgOiBzaG91bGQgYmUgMS4KKwktIFRoZSBjZWxsIGlzIHRoZSBtYXg4OTI1IGxvY2FsIElSUSBudW1iZXIKKworT3B0aW9uYWwgcGFyZW50IGRldmljZSBwcm9wZXJ0aWVzOgorLSBtYXhpbSx0c2MtaXJxOiB0aGVyZSBhcmUgMiBJUlEgbGluZXMgZm9yIG1heDg5MjUsIG9uZSBpcyBpbmRpY2F0ZWQgaW4KKyAgaW50ZXJydXB0cyBwcm9wZXJ0eSwgdGhlIG90aGVyIGlzIGluZGljYXRlZCBoZXJlLgorCittYXg4OTI1IGNvbnNpc3RzIG9mIGEgbGFyZ2UgYW5kIHZhcmllZCBncm91cCBvZiBzdWItZGV2aWNlczoKKworRGV2aWNlCQkJIFN1cHBseSBOYW1lcwkgRGVzY3JpcHRpb24KKy0tLS0tLQkJCSAtLS0tLS0tLS0tLS0JIC0tLS0tLS0tLS0tCittYXg4OTI1LW9ua2V5CQk6CQk6IE9uIGtleQorbWF4ODkyNS1ydGMJCToJCTogUlRDCittYXg4OTI1LXJlZ3VsYXRvcgk6CQk6IFJlZ3VsYXRvcnMKK21heDg5MjUtYmFja2xpZ2h0CToJCTogQmFja2xpZ2h0CittYXg4OTI1LXRvdWNoCQk6CQk6IFRvdWNoc2NyZWVuCittYXg4OTI1LXBvd2VyCQk6CQk6IENoYXJnZXIKKworRXhhbXBsZToKKworCXBtaWM6IG1heDg5MjVAM2MgeworCQljb21wYXRpYmxlID0gIm1heGltLG1heDg5MjUiOworCQlyZWcgPSA8MHgzYz47CisJCWludGVycnVwdHMgPSA8MT47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmludGNtdXg0PjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJCW1heGltLHRzYy1pcnEgPSA8MD47CisKKwkJcmVndWxhdG9ycyB7CisJCQlTRFYxIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw2Mzc1MDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE0MjUwMDA+OworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQlMRE8xIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw3NTAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDM5MDAwMDA+OworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCX07CisJCWJhY2tsaWdodCB7CisJCQltYXhpbSxtYXg4OTI1LWR1YWwtc3RyaW5nID0gPDA+OworCQl9OworCQljaGFyZ2VyIHsKKwkJCWJhdHQtZGV0ZWN0ID0gPDA+OworCQkJdG9wb2ZmLXRocmVzaG9sZCA9IDwxPjsKKwkJCWZhc3QtY2hhcmdlID0gPDc+OworCQkJbm8tdGVtcC1zdXBwb3J0ID0gPDA+OworCQkJbm8taW5zZXJ0LWRldGVjdCA9IDwwPjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9tYXg4OTk4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvbWF4ODk5OC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNhMzY1MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvbWF4ODk5OC50eHQKQEAgLTAsMCArMSwxMTkgQEAKKyogTWF4aW0gTUFYODk5OCwgTmF0aW9uYWwvVEkgTFAzOTc0IG11bHRpLWZ1bmN0aW9uIGRldmljZQorCitUaGUgTWF4aW0gTUFYODk5OCBpcyBhIG11bHRpLWZ1bmN0aW9uIGRldmljZSB3aGljaCBpbmNsdWRlcyB2b2x0YWdlL2N1cnJlbnQKK3JlZ3VsYXRvcnMsIHJlYWwgdGltZSBjbG9jaywgYmF0dGVyeSBjaGFyZ2luZyBjb250cm9sbGVyIGFuZCBzZXZlcmFsCitvdGhlciBzdWItYmxvY2tzLiBJdCBpcyBpbnRlcmZhY2VkIHVzaW5nIGFuIEkyQyBpbnRlcmZhY2UuIEVhY2ggc3ViLWJsb2NrCitpcyBhZGRyZXNzZWQgYnkgdGhlIGhvc3Qgc3lzdGVtIHVzaW5nIGRpZmZlcmVudCBpMmMgc2xhdmUgYWRkcmVzcy4KKworUE1JQyBzdWItYmxvY2sKKy0tLS0tLS0tLS0tLS0tCisKK1RoZSBQTUlDIHN1Yi1ibG9jayBjb250YWlucyBhIG51bWJlciBvZiB2b2x0YWdlIGFuZCBjdXJyZW50IHJlZ3VsYXRvcnMsCit3aXRoIGNvbnRyb2xsYWJsZSBwYXJhbWV0ZXJzIGFuZCBkeW5hbWljIHZvbHRhZ2Ugc2NhbGluZyBjYXBhYmlsaXR5LgorSW4gYWRkaXRpb24sIGl0IGluY2x1ZGVzIGEgcmVhbCB0aW1lIGNsb2NrIGFuZCBiYXR0ZXJ5IGNoYXJnaW5nIGNvbnRyb2xsZXIKK2FzIHdlbGwuIEl0IGlzIGFjY2Vzc2libGUgYXQgSTJDIGFkZHJlc3MgMHg2Ni4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorICAgIC0gIm1heGltLG1heDg5OTgiIGZvciBNYXhpbSBNQVg4OTk4CisgICAgLSAibmF0aW9uYWwsbHAzOTc0IiBvciAidGksbHAzOTc0IiBmb3IgTmF0aW9uYWwvVEkgTFAzOTc0LgorLSByZWc6IFNwZWNpZmllcyB0aGUgaTJjIHNsYXZlIGFkZHJlc3Mgb2YgdGhlIHBtaWMgYmxvY2suIEl0IHNob3VsZCBiZSAweDY2LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBpbnRlcnJ1cHQtcGFyZW50OiBTcGVjaWZpZXMgdGhlIHBoYW5kbGUgb2YgdGhlIGludGVycnVwdCBjb250cm9sbGVyIHRvIHdoaWNoCisgIHRoZSBpbnRlcnJ1cHRzIGZyb20gTUFYODk5OCBhcmUgcm91dGVkIHRvLgorLSBpbnRlcnJ1cHRzOiBJbnRlcnJ1cHQgc3BlY2lmaWVycyBmb3IgdHdvIGludGVycnVwdCBzb3VyY2VzLgorICAtIEZpcnN0IGludGVycnVwdCBzcGVjaWZpZXIgaXMgZm9yIG1haW4gaW50ZXJydXB0LgorICAtIFNlY29uZCBpbnRlcnJ1cHQgc3BlY2lmaWVyIGlzIGZvciBwb3dlci1vbi8tb2ZmIGludGVycnVwdC4KKy0gbWF4ODk5OCxwbWljLWJ1Y2sxLWR2cy1ncGlvczogR1BJTyBzcGVjaWZpZXJzIGZvciB0d28gaG9zdCBncGlvcyB1c2VkCisgIGZvciBidWNrIDEgZHZzLiBUaGUgZm9ybWF0IG9mIHRoZSBncGlvIHNwZWNpZmllciBkZXBlbmRzIG9uIHRoZSBncGlvCisgIGNvbnRyb2xsZXIuCistIG1heDg5OTgscG1pYy1idWNrMi1kdnMtZ3BpbzogR1BJTyBzcGVjaWZpZXIgZm9yIGhvc3QgZ3BpbyB1c2VkCisgIGZvciBidWNrIDIgZHZzLiBUaGUgZm9ybWF0IG9mIHRoZSBncGlvIHNwZWNpZmllciBkZXBlbmRzIG9uIHRoZSBncGlvCisgIGNvbnRyb2xsZXIuCistIG1heDg5OTgscG1pYy1idWNrMS1kZWZhdWx0LWR2cy1pZHg6IERlZmF1bHQgdm9sdGFnZSBzZXR0aW5nIHNlbGVjdGVkIGZyb20KKyAgdGhlIHBvc3NpYmxlIDQgb3B0aW9ucyBzZWxlY3RhYmxlIGJ5IHRoZSBkdnMgZ3Bpb3MuIFRoZSB2YWx1ZSBvZiB0aGlzCisgIHByb3BlcnR5IHNob3VsZCBiZSAwLCAxLCAyIG9yIDMuIElmIG5vdCBzcGVjaWZpZWQgb3Igb3V0IG9mIHJhbmdlLAorICBhIGRlZmF1bHQgdmFsdWUgb2YgMCBpcyB0YWtlbi4KKy0gbWF4ODk5OCxwbWljLWJ1Y2syLWRlZmF1bHQtZHZzLWlkeDogRGVmYXVsdCB2b2x0YWdlIHNldHRpbmcgc2VsZWN0ZWQgZnJvbQorICB0aGUgcG9zc2libGUgMiBvcHRpb25zIHNlbGVjdGFibGUgYnkgdGhlIGR2cyBncGlvcy4gVGhlIHZhbHVlIG9mIHRoaXMKKyAgcHJvcGVydHkgc2hvdWxkIGJlIDAgb3IgMS4gSWYgbm90IHNwZWNpZmllZCBvciBvdXQgb2YgcmFuZ2UsIGEgZGVmYXVsdAorICB2YWx1ZSBvZiAwIGlzIHRha2VuLgorLSBtYXg4OTk4LHBtaWMtYnVjay12b2x0YWdlLWxvY2s6IElmIHByZXNlbnQsIGRpc2FsbG93cyBjaGFuZ2luZyBvZgorICBwcmVwcm9ncmFtbWVkIGJ1Y2sgZHZmcyB2b2x0YWdlcy4KKworQWRkaXRpb25hbCBwcm9wZXJ0aWVzIHJlcXVpcmVkIGlmIG1heDg5OTgscG1pYy1idWNrMS1kdnMtZ3Bpb3MgaXMgZGVmaW5lZDoKKy0gbWF4ODk5OCxwbWljLWJ1Y2sxLWR2cy12b2x0YWdlOiBBbiBhcnJheSBvZiA0IHZvbHRhZ2UgdmFsdWVzIGluIG1pY3Jvdm9sdHMKKyAgZm9yIGJ1Y2sxIHJlZ3VsYXRvciB0aGF0IGNhbiBiZSBzZWxlY3RlZCB1c2luZyBkdnMgZ3Bpby4KKworQWRkaXRpb25hbCBwcm9wZXJ0aWVzIHJlcXVpcmVkIGlmIG1heDg5OTgscG1pYy1idWNrMi1kdnMtZ3BpbyBpcyBkZWZpbmVkOgorLSBtYXg4OTk4LHBtaWMtYnVjazItZHZzLXZvbHRhZ2U6IEFuIGFycmF5IG9mIDIgdm9sdGFnZSB2YWx1ZXMgaW4gbWljcm92b2x0cworICBmb3IgYnVjazIgcmVndWxhdG9yIHRoYXQgY2FuIGJlIHNlbGVjdGVkIHVzaW5nIGR2cyBncGlvLgorCitSZWd1bGF0b3JzOiBBbGwgdGhlIHJlZ3VsYXRvcnMgb2YgTUFYODk5OCB0byBiZSBpbnN0YW50aWF0ZWQgc2hhbGwgYmUKK2xpc3RlZCBpbiBhIGNoaWxkIG5vZGUgbmFtZWQgJ3JlZ3VsYXRvcnMnLiBFYWNoIHJlZ3VsYXRvciBpcyByZXByZXNlbnRlZAorYnkgYSBjaGlsZCBub2RlIG9mIHRoZSAncmVndWxhdG9ycycgbm9kZS4KKworCXJlZ3VsYXRvci1uYW1lIHsKKwkJLyogc3RhbmRhcmQgcmVndWxhdG9yIGJpbmRpbmdzIGhlcmUgKi8KKwl9OworCitGb2xsb3dpbmcgcmVndWxhdG9ycyBvZiB0aGUgTUFYODk5OCBQTUlDIGJsb2NrIGFyZSBzdXBwb3J0ZWQuIE5vdGUgdGhhdAordGhlICduJyBpbiByZWd1bGF0b3IgbmFtZSwgYXMgaW4gTERPbiBvciBCVUNLbiwgcmVwcmVzZW50cyB0aGUgTERPIG9yIEJVQ0sKK251bWJlciBhcyBkZXNjcmliZWQgaW4gTUFYODk5OCBkYXRhc2hlZXQuCisKKwktIExET24KKwkJICAtIHZhbGlkIHZhbHVlcyBmb3IgbiBhcmUgMiB0byAxNworCQkgIC0gRXhhbXBsZTogTERPMiwgTERPMTAsIExETzE3CisJLSBCVUNLbgorCQkgIC0gdmFsaWQgdmFsdWVzIGZvciBuIGFyZSAxIHRvIDQuCisJCSAgLSBFeGFtcGxlOiBCVUNLMSwgQlVDSzIsIEJVQ0szLCBCVUNLNAorCisJLSBFTlZJQ0hHOiBCYXR0ZXJ5IENoYXJnaW5nIEN1cnJlbnQgTW9uaXRvciBPdXRwdXQuIFRoaXMgaXMgYSBmaXhlZAorCQkgICB2b2x0YWdlIHR5cGUgcmVndWxhdG9yCisKKwktIEVTQUZFT1VUMTogKGxkbzE5KQorCS0gRVNBRkVPVVQyOiAobGQwMjApCisKK1N0YW5kYXJkIHJlZ3VsYXRvciBiaW5kaW5ncyBhcmUgdXNlZCBpbnNpZGUgcmVndWxhdG9yIHN1Ym5vZGVzLiBDaGVjaworICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3JlZ3VsYXRvci50eHQKK2ZvciBtb3JlIGRldGFpbHMuCisKK0V4YW1wbGU6CisKKwlwbWljQDY2IHsKKwkJY29tcGF0aWJsZSA9ICJtYXhpbSxtYXg4OTk4LXBtaWMiOworCQlyZWcgPSA8MHg2Nj47CisJCWludGVycnVwdC1wYXJlbnQgPSA8Jndha2V1cF9laW50PjsKKwkJaW50ZXJydXB0cyA9IDw0IDA+LCA8MyAwPjsKKworCQkvKiBCdWNrIDEgRFZTIHNldHRpbmdzICovCisJCW1heDg5OTgscG1pYy1idWNrMS1kZWZhdWx0LWR2cy1pZHggPSA8MD47CisJCW1heDg5OTgscG1pYy1idWNrMS1kdnMtZ3Bpb3MgPSA8JmdweDAgMCAxIDAgMD4sIC8qIFNFVDEgKi8KKwkJCQkJICAgICAgIDwmZ3B4MCAxIDEgMCAwPjsgLyogU0VUMiAqLworCQltYXg4OTk4LHBtaWMtYnVjazEtZHZzLXZvbHRhZ2UgPSA8MTM1MDAwMD4sIDwxMzAwMDAwPiwKKwkJCQkJCSA8MTAwMDAwMD4sIDw5NTAwMDA+OworCisJCS8qIEJ1Y2sgMiBEVlMgc2V0dGluZ3MgKi8KKwkJbWF4ODk5OCxwbWljLWJ1Y2syLWRlZmF1bHQtZHZzLWlkeCA9IDwwPjsKKwkJbWF4ODk5OCxwbWljLWJ1Y2syLWR2cy1ncGlvID0gPCZncHgwIDAgMyAwIDA+OyAvKiBTRVQzICovCisJCW1heDg5OTgscG1pYy1idWNrMi1kdnMtdm9sdGFnZSA9IDwxMzUwMDAwPiwgPDEzMDAwMDA+OworCisJCS8qIFJlZ3VsYXRvcnMgdG8gaW5zdGFudGlhdGUgKi8KKwkJcmVndWxhdG9ycyB7CisJCQlsZG8yX3JlZzogTERPMiB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAiVkREX0FMSVZFXzEuMVYiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDExMDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDExMDAwMDA+OworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQlidWNrMV9yZWc6IEJVQ0sxIHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJWRERfQVJNXzEuMlYiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDk1MDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTM1MDAwMD47CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvbWMxM3h4eC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL21jMTN4eHgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhYmE0ODgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL21jMTN4eHgudHh0CkBAIC0wLDAgKzEsMTU4IEBACisqIEZyZWVzY2FsZSBNQzEzNzgzL01DMTM4OTIgUG93ZXIgTWFuYWdlbWVudCBJbnRlZ3JhdGVkIENpcmN1aXQgKFBNSUMpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImZzbCxtYzEzNzgzIiBvciAiZnNsLG1jMTM4OTIiCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGZzbCxtYzEzeHh4LXVzZXMtYWRjIDogSW5kaWNhdGUgdGhlIEFEQyBpcyBiZWluZyB1c2VkCistIGZzbCxtYzEzeHh4LXVzZXMtY29kZWMgOiBJbmRpY2F0ZSB0aGUgQXVkaW8gQ29kZWMgaXMgYmVpbmcgdXNlZAorLSBmc2wsbWMxM3h4eC11c2VzLXJ0YyA6IEluZGljYXRlIHRoZSBSVEMgaXMgYmVpbmcgdXNlZAorLSBmc2wsbWMxM3h4eC11c2VzLXRvdWNoIDogSW5kaWNhdGUgdGhlIHRvdWNoc2NyZWVuIGNvbnRyb2xsZXIgaXMgYmVpbmcgdXNlZAorCitTdWItbm9kZXM6CistIGNvZGVjOiBDb250YWluIHRoZSBBdWRpbyBDb2RlYyBub2RlLgorICAtIGFkYy1wb3J0OiBDb250YWluIFBNSUMgU1NJIHBvcnQgbnVtYmVyIHVzZWQgZm9yIEFEQy4KKyAgLSBkYWMtcG9ydDogQ29udGFpbiBQTUlDIFNTSSBwb3J0IG51bWJlciB1c2VkIGZvciBEQUMuCistIGxlZHMgOiBDb250YWluIHRoZSBsZWQgbm9kZXMgYW5kIGluaXRpYWwgcmVnaXN0ZXIgdmFsdWVzIGluIHByb3BlcnR5CisgICJsZWQtY29udHJvbCIuIE51bWJlciBvZiByZWdpc3RlciBkZXBlbmRzIG9mIHVzZWQgSUMsIGZvciBNQzEzNzgzIGlzIDYsCisgIGZvciBNQzEzODkyIGlzIDQsIGZvciBNQzM0NzA4IGlzIDEuIFNlZSBkYXRhc2hlZXQgZm9yIGJpdHMgZGVmaW5pdGlvbnMgb2YKKyAgdGhlc2UgcmVnaXN0ZXJzLgorICAtICNhZGRyZXNzLWNlbGxzOiBNdXN0IGJlIDEuCisgIC0gI3NpemUtY2VsbHM6IE11c3QgYmUgMC4KKyAgRWFjaCBsZWQgbm9kZSBzaG91bGQgY29udGFpbiAicmVnIiwgd2hpY2ggdXNlZCBhcyBMRUQgSUQgKGRlc2NyaWJlZCBiZWxvdykuCisgIE9wdGlvbmFsIHByb3BlcnRpZXMgImxhYmVsIiBhbmQgImxpbnV4LGRlZmF1bHQtdHJpZ2dlciIgaXMgZGVzY3JpYmVkIGluCisgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9sZWRzL2NvbW1vbi50eHQuCistIHJlZ3VsYXRvcnMgOiBDb250YWluIHRoZSByZWd1bGF0b3Igbm9kZXMuIFRoZSByZWd1bGF0b3JzIGFyZSBib3VuZCB1c2luZworICB0aGVpciBuYW1lcyBhcyBsaXN0ZWQgYmVsb3cgd2l0aCB0aGVpciByZWdpc3RlcnMgYW5kIGJpdHMgZm9yIGVuYWJsaW5nLgorCitNQzEzNzgzIExFRCBJRHM6CisgICAgMCAgOiBNYWluIGRpc3BsYXkKKyAgICAxICA6IEFVWCBkaXNwbGF5CisgICAgMiAgOiBLZXlwYWQKKyAgICAzICA6IFJlZCAxCisgICAgNCAgOiBHcmVlbiAxCisgICAgNSAgOiBCbHVlIDEKKyAgICA2ICA6IFJlZCAyCisgICAgNyAgOiBHcmVlbiAyCisgICAgOCAgOiBCbHVlIDIKKyAgICA5ICA6IFJlZCAzCisgICAgMTAgOiBHcmVlbiAzCisgICAgMTEgOiBCbHVlIDMKKworTUMxMzg5MiBMRUQgSURzOgorICAgIDAgIDogTWFpbiBkaXNwbGF5CisgICAgMSAgOiBBVVggZGlzcGxheQorICAgIDIgIDogS2V5cGFkCisgICAgMyAgOiBSZWQKKyAgICA0ICA6IEdyZWVuCisgICAgNSAgOiBCbHVlCisKK01DMzQ3MDggTEVEIElEczoKKyAgICAwICA6IENoYXJnZXIgUmVkCisgICAgMSAgOiBDaGFyZ2VyIEdyZWVuCisKK01DMTM3ODMgcmVndWxhdG9yczoKKyAgICBzdzFhICAgICAgOiByZWd1bGF0b3IgU1cxQSAgICAgIChyZWdpc3RlciAyNCwgYml0IDApCisgICAgc3cxYiAgICAgIDogcmVndWxhdG9yIFNXMUIgICAgICAocmVnaXN0ZXIgMjUsIGJpdCAwKQorICAgIHN3MmEgICAgICA6IHJlZ3VsYXRvciBTVzJBICAgICAgKHJlZ2lzdGVyIDI2LCBiaXQgMCkKKyAgICBzdzJiICAgICAgOiByZWd1bGF0b3IgU1cyQiAgICAgIChyZWdpc3RlciAyNywgYml0IDApCisgICAgc3czICAgICAgIDogcmVndWxhdG9yIFNXMyAgICAgICAocmVnaXN0ZXIgMjksIGJpdCAyMCkKKyAgICB2YXVkaW8gICAgOiByZWd1bGF0b3IgVkFVRElPICAgIChyZWdpc3RlciAzMiwgYml0IDApCisgICAgdmlvaGkgICAgIDogcmVndWxhdG9yIFZJT0hJICAgICAocmVnaXN0ZXIgMzIsIGJpdCAzKQorICAgIHZpb2xvICAgICA6IHJlZ3VsYXRvciBWSU9MTyAgICAgKHJlZ2lzdGVyIDMyLCBiaXQgNikKKyAgICB2ZGlnICAgICAgOiByZWd1bGF0b3IgVkRJRyAgICAgIChyZWdpc3RlciAzMiwgYml0IDkpCisgICAgdmdlbiAgICAgIDogcmVndWxhdG9yIFZHRU4gICAgICAocmVnaXN0ZXIgMzIsIGJpdCAxMikKKyAgICB2cmZkaWcgICAgOiByZWd1bGF0b3IgVlJGRElHICAgIChyZWdpc3RlciAzMiwgYml0IDE1KQorICAgIHZyZnJlZiAgICA6IHJlZ3VsYXRvciBWUkZSRUYgICAgKHJlZ2lzdGVyIDMyLCBiaXQgMTgpCisgICAgdnJmY3AgICAgIDogcmVndWxhdG9yIFZSRkNQICAgICAocmVnaXN0ZXIgMzIsIGJpdCAyMSkKKyAgICB2c2ltICAgICAgOiByZWd1bGF0b3IgVlNJTSAgICAgIChyZWdpc3RlciAzMywgYml0IDApCisgICAgdmVzaW0gICAgIDogcmVndWxhdG9yIFZFU0lNICAgICAocmVnaXN0ZXIgMzMsIGJpdCAzKQorICAgIHZjYW0gICAgICA6IHJlZ3VsYXRvciBWQ0FNICAgICAgKHJlZ2lzdGVyIDMzLCBiaXQgNikKKyAgICB2cmZiZyAgICAgOiByZWd1bGF0b3IgVlJGQkcgICAgIChyZWdpc3RlciAzMywgYml0IDkpCisgICAgdnZpYiAgICAgIDogcmVndWxhdG9yIFZWSUIgICAgICAocmVnaXN0ZXIgMzMsIGJpdCAxMSkKKyAgICB2cmYxICAgICAgOiByZWd1bGF0b3IgVlJGMSAgICAgIChyZWdpc3RlciAzMywgYml0IDEyKQorICAgIHZyZjIgICAgICA6IHJlZ3VsYXRvciBWUkYyICAgICAgKHJlZ2lzdGVyIDMzLCBiaXQgMTUpCisgICAgdm1tYzEgICAgIDogcmVndWxhdG9yIFZNTUMxICAgICAocmVnaXN0ZXIgMzMsIGJpdCAxOCkKKyAgICB2bW1jMiAgICAgOiByZWd1bGF0b3IgVk1NQzIgICAgIChyZWdpc3RlciAzMywgYml0IDIxKQorICAgIGdwbzEgICAgICA6IHJlZ3VsYXRvciBHUE8xICAgICAgKHJlZ2lzdGVyIDM0LCBiaXQgNikKKyAgICBncG8yICAgICAgOiByZWd1bGF0b3IgR1BPMiAgICAgIChyZWdpc3RlciAzNCwgYml0IDgpCisgICAgZ3BvMyAgICAgIDogcmVndWxhdG9yIEdQTzMgICAgICAocmVnaXN0ZXIgMzQsIGJpdCAxMCkKKyAgICBncG80ICAgICAgOiByZWd1bGF0b3IgR1BPNCAgICAgIChyZWdpc3RlciAzNCwgYml0IDEyKQorICAgIHB3Z3Qxc3BpICA6IHJlZ3VsYXRvciBQV0dUMVNQSSAgKHJlZ2lzdGVyIDM0LCBiaXQgMTUpCisgICAgcHdndDJzcGkgIDogcmVndWxhdG9yIFBXR1QyU1BJICAocmVnaXN0ZXIgMzQsIGJpdCAxNikKKworTUMxMzg5MiByZWd1bGF0b3JzOgorICAgIHZjb2luY2VsbCA6IHJlZ3VsYXRvciBWQ09JTkNFTEwgKHJlZ2lzdGVyIDEzLCBiaXQgMjMpCisgICAgc3cxICAgICAgIDogcmVndWxhdG9yIFNXMQkgICAgKHJlZ2lzdGVyIDI0LCBiaXQgMCkKKyAgICBzdzIgICAgICAgOiByZWd1bGF0b3IgU1cyCSAgICAocmVnaXN0ZXIgMjUsIGJpdCAwKQorICAgIHN3MyAgICAgICA6IHJlZ3VsYXRvciBTVzMJICAgIChyZWdpc3RlciAyNiwgYml0IDApCisgICAgc3c0ICAgICAgIDogcmVndWxhdG9yIFNXNAkgICAgKHJlZ2lzdGVyIDI3LCBiaXQgMCkKKyAgICBzd2JzdCAgICAgOiByZWd1bGF0b3IgU1dCU1QJICAgIChyZWdpc3RlciAyOSwgYml0IDIwKQorICAgIHZnZW4xICAgICA6IHJlZ3VsYXRvciBWR0VOMQkgICAgKHJlZ2lzdGVyIDMyLCBiaXQgMCkKKyAgICB2aW9oaSAgICAgOiByZWd1bGF0b3IgVklPSEkJICAgIChyZWdpc3RlciAzMiwgYml0IDMpCisgICAgdmRpZyAgICAgIDogcmVndWxhdG9yIFZESUcJICAgIChyZWdpc3RlciAzMiwgYml0IDkpCisgICAgdmdlbjIgICAgIDogcmVndWxhdG9yIFZHRU4yCSAgICAocmVnaXN0ZXIgMzIsIGJpdCAxMikKKyAgICB2cGxsICAgICAgOiByZWd1bGF0b3IgVlBMTAkgICAgKHJlZ2lzdGVyIDMyLCBiaXQgMTUpCisgICAgdnVzYjIgICAgIDogcmVndWxhdG9yIFZVU0IyCSAgICAocmVnaXN0ZXIgMzIsIGJpdCAxOCkKKyAgICB2Z2VuMyAgICAgOiByZWd1bGF0b3IgVkdFTjMJICAgIChyZWdpc3RlciAzMywgYml0IDApCisgICAgdmNhbSAgICAgIDogcmVndWxhdG9yIFZDQU0JICAgIChyZWdpc3RlciAzMywgYml0IDYpCisgICAgdnZpZGVvICAgIDogcmVndWxhdG9yIFZWSURFTyAgICAocmVnaXN0ZXIgMzMsIGJpdCAxMikKKyAgICB2YXVkaW8gICAgOiByZWd1bGF0b3IgVkFVRElPICAgIChyZWdpc3RlciAzMywgYml0IDE1KQorICAgIHZzZCAgICAgICA6IHJlZ3VsYXRvciBWU0QJICAgIChyZWdpc3RlciAzMywgYml0IDE4KQorICAgIGdwbzEgICAgICA6IHJlZ3VsYXRvciBHUE8xCSAgICAocmVnaXN0ZXIgMzQsIGJpdCA2KQorICAgIGdwbzIgICAgICA6IHJlZ3VsYXRvciBHUE8yCSAgICAocmVnaXN0ZXIgMzQsIGJpdCA4KQorICAgIGdwbzMgICAgICA6IHJlZ3VsYXRvciBHUE8zCSAgICAocmVnaXN0ZXIgMzQsIGJpdCAxMCkKKyAgICBncG80ICAgICAgOiByZWd1bGF0b3IgR1BPNAkgICAgKHJlZ2lzdGVyIDM0LCBiaXQgMTIpCisgICAgcHdndDFzcGkgIDogcmVndWxhdG9yIFBXR1QxU1BJICAocmVnaXN0ZXIgMzQsIGJpdCAxNSkKKyAgICBwd2d0MnNwaSAgOiByZWd1bGF0b3IgUFdHVDJTUEkgIChyZWdpc3RlciAzNCwgYml0IDE2KQorICAgIHZ1c2IgICAgICA6IHJlZ3VsYXRvciBWVVNCCSAgICAocmVnaXN0ZXIgNTAsIGJpdCAzKQorCisgIFRoZSBiaW5kaW5ncyBkZXRhaWxzIG9mIGluZGl2aWR1YWwgcmVndWxhdG9yIGRldmljZSBjYW4gYmUgZm91bmQgaW46CisgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvcmVndWxhdG9yLnR4dAorCitFeGFtcGxlczoKKworZWNzcGlANzAwMTAwMDAgeyAvKiBFQ1NQSTEgKi8KKwlmc2wsc3BpLW51bS1jaGlwc2VsZWN0cyA9IDwyPjsKKwljcy1ncGlvcyA9IDwmZ3BpbzQgMjQgMD4sIC8qIEdQSU80XzI0ICovCisJCSAgIDwmZ3BpbzQgMjUgMD47IC8qIEdQSU80XzI1ICovCisJc3RhdHVzID0gIm9rYXkiOworCisJcG1pYzogbWMxMzg5MkAwIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQljb21wYXRpYmxlID0gImZzbCxtYzEzODkyIjsKKwkJc3BpLW1heC1mcmVxdWVuY3kgPSA8NjAwMDAwMD47CisJCXJlZyA9IDwwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzA+OworCQlpbnRlcnJ1cHRzID0gPDg+OworCisJCWxlZHMgeworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJCWxlZC1jb250cm9sID0gPDB4MDAwIDB4MDAwIDB4MGUwIDB4MDAwPjsKKworCQkJc3lzbGVkIHsKKwkJCQlyZWcgPSA8Mz47CisJCQkJbGFiZWwgPSAic3lzdGVtOnJlZDpsaXZlIjsKKwkJCQlsaW51eCxkZWZhdWx0LXRyaWdnZXIgPSAiaGVhcnRiZWF0IjsKKwkJCX07CisJCX07CisKKwkJcmVndWxhdG9ycyB7CisJCQlzdzFfcmVnOiBtYzEzODkyX19zdzEgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDYwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTM3NTAwMD47CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCXN3Ml9yZWc6IG1jMTM4OTJfX3N3MiB7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8OTAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxODUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvbWZkLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvbWZkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjlkNjkzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9tZmQudHh0CkBAIC0wLDAgKzEsNDEgQEAKK011bHRpLUZ1bmN0aW9uIERldmljZXMgKE1GRCkKKworVGhlc2UgZGV2aWNlcyBjb21wcmlzZSBhIG5leHVzIGZvciBoZXRlcm9nZW5lb3VzIGhhcmR3YXJlIGJsb2NrcyBjb250YWluaW5nCittb3JlIHRoYW4gb25lIG5vbi11bmlxdWUgeWV0IHZhcnlpbmcgaGFyZHdhcmUgZnVuY3Rpb25hbGl0eS4KKworQSB0eXBpY2FsIE1GRCBjYW4gYmU6CisKKy0gQSBtaXhlZCBzaWduYWwgQVNJQyBvbiBhbiBleHRlcm5hbCBidXMsIHNvbWV0aW1lcyBhIFBNSUMgKFBvd2VyIE1hbmFnZW1lbnQKKyAgSW50ZWdyYXRlZCBDaXJjdWl0KSB0aGF0IGlzIG1hbnVmYWN0dXJlZCBpbiBhIGxvd2VyIHRlY2hub2xvZ3kgbm9kZSAocm91Z2gKKyAgc2lsaWNvbikgdGhhdCBoYW5kbGVzIGFuYWxvZyBkcml2ZXJzIGZvciB0aGluZ3MgbGlrZSBhdWRpbyBhbXBsaWZpZXJzLCBMRUQKKyAgZHJpdmVycywgbGV2ZWwgc2hpZnRlcnMsIFBIWSAocGh5c2ljYWwgaW50ZXJmYWNlcyB0byB0aGluZ3MgbGlrZSBVU0Igb3IKKyAgZXRoZXJuZXQpLCByZWd1bGF0b3JzIGV0Yy4KKworLSBBIHJhbmdlIG9mIG1lbW9yeSByZWdpc3RlcnMgY29udGFpbmluZyAibWlzY2VsbGFuZW91cyBzeXN0ZW0gcmVnaXN0ZXJzIiBhbHNvCisgIGtub3duIGFzIGEgc3lzdGVtIGNvbnRyb2xsZXIgInN5c2NvbiIgb3IgYW55IG90aGVyIG1lbW9yeSByYW5nZSBjb250YWluaW5nIGEKKyAgbWl4IG9mIHVucmVsYXRlZCBoYXJkd2FyZSBkZXZpY2VzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiAic2ltcGxlLW1mZCIgLSB0aGlzIHNpZ25pZmllcyB0aGF0IHRoZSBvcGVyYXRpbmcgc3lzdGVtIHNob3VsZAorICBjb25zaWRlciBhbGwgc3Vibm9kZXMgb2YgdGhlIE1GRCBkZXZpY2UgYXMgc2VwYXJhdGUgZGV2aWNlcyBha2luIHRvIGhvdworICAic2ltcGxlLWJ1cyIgaW5pZGljYXRlcyB3aGVuIHRvIHNlZSBzdWJub2RlcyBhcyBjaGlsZHJlbiBmb3IgYSBzaW1wbGUKKyAgbWVtb3J5LW1hcHBlZCBidXMuIEZvciBtb3JlIGNvbXBsZXggZGV2aWNlcywgd2hlbiB0aGUgbmV4dXMgZHJpdmVyIGhhcyB0bworICBwcm9iZSByZWdpc3RlcnMgdG8gZmlndXJlIG91dCB3aGF0IGNoaWxkIGRldmljZXMgZXhpc3QgZXRjLCB0aGlzIHNob3VsZCBub3QKKyAgYmUgdXNlZC4gSW4gdGhlIGxhdHRlciBjYXNlIHRoZSBjaGlsZCBkZXZpY2VzIHdpbGwgYmUgZGV0ZXJtaW5lZCBieSB0aGUKKyAgb3BlcmF0aW5nIHN5c3RlbS4KKworRXhhbXBsZToKKworZm9vQDEwMDAgeworCWNvbXBhdGlibGUgPSAic3lzY29uIiwgInNpbXBsZS1tZmQiOworCXJlZyA9IDwweDAxMDAwIDB4MTAwMD47CisKKwlsZWRAMDguMCB7CisJCWNvbXBhdGlibGUgPSAicmVnaXN0ZXItYml0LWxlZCI7CisJCW9mZnNldCA9IDwweDA4PjsKKwkJbWFzayA9IDwweDAxPjsKKwkJbGFiZWwgPSAibXlsZWQiOworCQlkZWZhdWx0LXN0YXRlID0gIm9uIjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvbXQ2Mzk3LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvbXQ2Mzk3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTA0M2U2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9tdDYzOTcudHh0CkBAIC0wLDAgKzEsNzAgQEAKK01lZGlhVGVrIE1UNjM5NyBNdWx0aWZ1bmN0aW9uIERldmljZSBEcml2ZXIKKworTVQ2Mzk3IGlzIGEgbXVsdGlmdW5jdGlvbiBkZXZpY2Ugd2l0aCB0aGUgZm9sbG93aW5nIHN1YiBtb2R1bGVzOgorLSBSZWd1bGF0b3IKKy0gUlRDCistIEF1ZGlvIGNvZGVjCistIEdQSU8KKy0gQ2xvY2sKKworSXQgaXMgaW50ZXJmYWNlZCB0byBob3N0IGNvbnRyb2xsZXIgdXNpbmcgU1BJIGludGVyZmFjZSBieSBhIHByb3ByaWV0YXJ5IGhhcmR3YXJlCitjYWxsZWQgUE1JQyB3cmFwcGVyIG9yIHB3cmFwLiBNVDYzOTcgTUZEIGlzIGEgY2hpbGQgZGV2aWNlIG9mIHB3cmFwLgorU2VlIHRoZSBmb2xsb3dpbmcgZm9yIHB3YXJwIG5vZGUgZGVmaW5pdGlvbnM6CitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc29jL3B3cmFwLnR4dAorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgYmluZGluZyBmb3IgTUZEIGRldmljZSBhbmQgaXRzIHN1YiBtb2R1bGUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6Citjb21wYXRpYmxlOiAibWVkaWF0ZWssbXQ2Mzk3IgorCitPcHRpb25hbCBzdWJub2RlczoKKworLSBydGMKKwlSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCQktIGNvbXBhdGlibGU6ICJtZWRpYXRlayxtdDYzOTctcnRjIgorLSByZWd1bGF0b3JzCisJUmVxdWlyZWQgcHJvcGVydGllczoKKwkJLSBjb21wYXRpYmxlOiAibWVkaWF0ZWssbXQ2Mzk3LXJlZ3VsYXRvciIKKwlzZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9tdDYzOTctcmVndWxhdG9yLnR4dAorLSBjb2RlYworCVJlcXVpcmVkIHByb3BlcnRpZXM6CisJCS0gY29tcGF0aWJsZTogIm1lZGlhdGVrLG10NjM5Ny1jb2RlYyIKKy0gY2xrCisJUmVxdWlyZWQgcHJvcGVydGllczoKKwkJLSBjb21wYXRpYmxlOiAibWVkaWF0ZWssbXQ2Mzk3LWNsayIKKworRXhhbXBsZToKKwlwd3JhcDogcHdyYXBAMTAwMGYwMDAgeworCQljb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODEzNS1wd3JhcCI7CisKKwkJLi4uCisKKwkJcG1pYyB7CisJCQljb21wYXRpYmxlID0gIm1lZGlhdGVrLG10NjM5NyI7CisKKwkJCWNvZGVjOiBtdDYzOTdjb2RlYyB7CisJCQkJY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDYzOTctY29kZWMiOworCQkJfTsKKworCQkJcmVndWxhdG9ycyB7CisJCQkJY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDYzOTctcmVndWxhdG9yIjsKKworCQkJCW10NjM5N192cGNhMTVfcmVnOiBidWNrX3ZwY2ExNSB7CisJCQkJCXJlZ3VsYXRvci1jb21wYXRpYmxlID0gImJ1Y2tfdnBjYTE1IjsKKwkJCQkJcmVndWxhdG9yLW5hbWUgPSAidnBjYTE1IjsKKwkJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8ODUwMDAwPjsKKwkJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTQwMDAwMD47CisJCQkJCXJlZ3VsYXRvci1yYW1wLWRlbGF5ID0gPDEyNTAwPjsKKwkJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQl9OworCisJCQkJbXQ2Mzk3X3ZncDRfcmVnOiBsZG9fdmdwNCB7CisJCQkJCXJlZ3VsYXRvci1jb21wYXRpYmxlID0gImxkb192Z3A0IjsKKwkJCQkJcmVndWxhdG9yLW5hbWUgPSAidmdwNCI7CisJCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDEyMDAwMDA+OworCQkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQkJcmVndWxhdG9yLWVuYWJsZS1yYW1wLWRlbGF5ID0gPDIxOD47CisJCQkJfTsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvb21hcC11c2ItaG9zdC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL29tYXAtdXNiLWhvc3QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3MjFiMmQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL29tYXAtdXNiLWhvc3QudHh0CkBAIC0wLDAgKzEsMTAzIEBACitPTUFQIEhTIFVTQiBIb3N0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJ0aSx1c2Jocy1ob3N0IgorLSByZWc6IHNob3VsZCBjb250YWluIG9uZSByZWdpc3RlciByYW5nZSBpLmUuIHN0YXJ0IGFuZCBsZW5ndGgKKy0gdGksaHdtb2RzOiBtdXN0IGNvbnRhaW4gInVzYl9ob3N0X2hzIgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIG51bS1wb3J0czogbnVtYmVyIG9mIFVTQiBwb3J0cy4gVXN1YWxseSB0aGlzIGlzIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQKKyAgZnJvbSB0aGUgSVAncyByZXZpc2lvbiByZWdpc3RlciBidXQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgc3BlY2lmeWluZworICB0aGlzIHByb3BlcnR5LiBBIG1heGltdW0gb2YgMyBwb3J0cyBhcmUgc3VwcG9ydGVkIGF0IHRoZSBtb21lbnQuCisKKy0gcG9ydE4tbW9kZTogU3RyaW5nIHNwZWNpZnlpbmcgdGhlIHBvcnQgbW9kZSBmb3IgcG9ydCBOLCB3aGVyZSBOIGNhbiBiZQorICBmcm9tIDEgdG8gMy4gSWYgdGhlIHBvcnQgbW9kZSBpcyBub3Qgc3BlY2lmaWVkLCB0aGF0IHBvcnQgaXMgdHJlYXRlZAorICBhcyB1bnVzZWQuIFdoZW4gc3BlY2lmaWVkLCBpdCBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nLgorCSJlaGNpLXBoeSIsCisgICAgICAgICJlaGNpLXRsbCIsCisgICAgICAgICJlaGNpLWhzaWMiLAorICAgICAgICAib2hjaS1waHktNnBpbi1kYXRzZTAiLAorICAgICAgICAib2hjaS1waHktNnBpbi1kcGRtIiwKKyAgICAgICAgIm9oY2ktcGh5LTNwaW4tZGF0c2UwIiwKKyAgICAgICAgIm9oY2ktcGh5LTRwaW4tZHBkbSIsCisgICAgICAgICJvaGNpLXRsbC02cGluLWRhdHNlMCIsCisgICAgICAgICJvaGNpLXRsbC02cGluLWRwZG0iLAorICAgICAgICAib2hjaS10bGwtM3Bpbi1kYXRzZTAiLAorICAgICAgICAib2hjaS10bGwtNHBpbi1kcGRtIiwKKyAgICAgICAgIm9oY2ktdGxsLTJwaW4tZGF0c2UwIiwKKyAgICAgICAgIm9oY2ktdGxsLTJwaW4tZHBkbSIsCisKKy0gc2luZ2xlLXVscGktYnlwYXNzOiBNdXN0IGJlIHByZXNlbnQgaWYgdGhlIGNvbnRyb2xsZXIgY29udGFpbnMgYSBzaW5nbGUKKyAgVUxQSSBieXBhc3MgY29udHJvbCBiaXQuIGUuZy4gT01BUDMgc2lsaWNvbiA8PSBFUzIuMQorCistIGNsb2NrczogYSBsaXN0IG9mIHBoYW5kbGVzIGFuZCBjbG9jay1zcGVjaWZpZXIgcGFpcnMsIG9uZSBmb3IgZWFjaCBlbnRyeSBpbgorICBjbG9jay1uYW1lcy4KKworLSBjbG9jay1uYW1lczogc2hvdWxkIGluY2x1ZGU6CisgIEZvciBPTUFQMworICAqICJ1c2Job3N0XzEyMG1fZmNrIiAtIDEyME1IeiBGdW5jdGlvbmFsIGNsb2NrLgorCisgIEZvciBPTUFQNCsKKyAgKiAicmVmY2xrXzYwbV9pbnQiIC0gNjBNSHogaW50ZXJuYWwgcmVmZXJlbmNlIGNsb2NrIGZvciBVVE1JIGNsb2NrIG11eAorICAqICJyZWZjbGtfNjBtX2V4dF9wMSIgLSA2ME1IeiBleHRlcm5hbCByZWYuIGNsb2NrIGZvciBQb3J0IDEncyBVVE1JIGNsb2NrIG11eC4KKyAgKiAicmVmY2xrXzYwbV9leHRfcDIiIC0gNjBNSHogZXh0ZXJuYWwgcmVmLiBjbG9jayBmb3IgUG9ydCAyJ3MgVVRNSSBjbG9jayBtdXgKKyAgKiAidXRtaV9wMV9nZmNsayIgLSBQb3J0IDEgVVRNSSBjbG9jayBtdXguCisgICogInV0bWlfcDJfZ2ZjbGsiIC0gUG9ydCAyIFVUTUkgY2xvY2sgbXV4LgorICAqICJ1c2JfaG9zdF9oc191dG1pX3AxX2NsayIgLSBQb3J0IDEgVVRNSSBjbG9jayBnYXRlLgorICAqICJ1c2JfaG9zdF9oc191dG1pX3AyX2NsayIgLSBQb3J0IDIgVVRNSSBjbG9jayBnYXRlLgorICAqICJ1c2JfaG9zdF9oc191dG1pX3AzX2NsayIgLSBQb3J0IDMgVVRNSSBjbG9jayBnYXRlLgorICAqICJ1c2JfaG9zdF9oc19oc2ljNDgwbV9wMV9jbGsiIC0gUG9ydCAxIDQ4ME1IeiBIU0lDIGNsb2NrIGdhdGUuCisgICogInVzYl9ob3N0X2hzX2hzaWM0ODBtX3AyX2NsayIgLSBQb3J0IDIgNDgwTUh6IEhTSUMgY2xvY2sgZ2F0ZS4KKyAgKiAidXNiX2hvc3RfaHNfaHNpYzQ4MG1fcDNfY2xrIiAtIFBvcnQgMyA0ODBNSHogSFNJQyBjbG9jayBnYXRlLgorICAqICJ1c2JfaG9zdF9oc19oc2ljNjBtX3AxX2NsayIgLSBQb3J0IDEgNjBNSHogSFNJQyBjbG9jayBnYXRlLgorICAqICJ1c2JfaG9zdF9oc19oc2ljNjBtX3AyX2NsayIgLSBQb3J0IDIgNjBNSHogSFNJQyBjbG9jayBnYXRlLgorICAqICJ1c2JfaG9zdF9oc19oc2ljNjBtX3AzX2NsayIgLSBQb3J0IDMgNjBNSHogSFNJQyBjbG9jayBnYXRlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGlmIGNoaWxkIG5vZGUgZXhpc3RzOgorCistICNhZGRyZXNzLWNlbGxzOiBNdXN0IGJlIDEKKy0gI3NpemUtY2VsbHM6IE11c3QgYmUgMQorLSByYW5nZXM6IG11c3QgYmUgcHJlc2VudAorCitQcm9wZXJ0aWVzIGZvciBjaGlsZHJlbjoKKworVGhlIE9NQVAgSFMgVVNCIEhvc3Qgc3Vic3lzdGVtIGNvbnRhaW5zIEVIQ0kgYW5kIE9IQ0kgY29udHJvbGxlcnMuCitTZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9vbWFwLWVoY2kudHh0IGFuZAorb21hcDMtb2hjaS50eHQKKworRXhhbXBsZSBmb3IgT01BUDQ6CisKK3VzYmhzaG9zdDogdXNiaHNob3N0QDRhMDY0MDAwIHsKKwljb21wYXRpYmxlID0gInRpLHVzYmhzLWhvc3QiOworCXJlZyA9IDwweDRhMDY0MDAwIDB4ODAwPjsKKwl0aSxod21vZHMgPSAidXNiX2hvc3RfaHMiOworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDE+OworCXJhbmdlczsKKworCXVzYmhzb2hjaTogb2hjaUA0YTA2NDgwMCB7CisJCWNvbXBhdGlibGUgPSAidGksb2hjaS1vbWFwMyIsICJ1c2Itb2hjaSI7CisJCXJlZyA9IDwweDRhMDY0ODAwIDB4NDAwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ2ljPjsKKwkJaW50ZXJydXB0cyA9IDwwIDc2IDB4ND47CisJfTsKKworCXVzYmhzZWhjaTogZWhjaUA0YTA2NGMwMCB7CisJCWNvbXBhdGlibGUgPSAidGksZWhjaS1vbWFwIiwgInVzYi1laGNpIjsKKwkJcmVnID0gPDB4NGEwNjRjMDAgMHg0MDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZnaWM+OworCQlpbnRlcnJ1cHRzID0gPDAgNzcgMHg0PjsKKwl9OworfTsKKworJnVzYmhzaG9zdCB7CisJcG9ydDEtbW9kZSA9ICJlaGNpLXBoeSI7CisJcG9ydDItbW9kZSA9ICJlaGNpLXRsbCI7CisJcG9ydDMtbW9kZSA9ICJlaGNpLXBoeSI7Cit9OworCismdXNiaHNlaGNpIHsKKwlwaHlzID0gPCZoc3VzYjFfcGh5IDAgJmhzdXNiM19waHk+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvb21hcC11c2ItdGxsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvb21hcC11c2ItdGxsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNThkNzA0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9vbWFwLXVzYi10bGwudHh0CkBAIC0wLDAgKzEsMjcgQEAKK09NQVAgSFMgVVNCIEhvc3QgVExMIChUcmFuc2NlaXZlci1MZXNzIEludGVyZmFjZSkKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJ0aSx1c2Jocy10bGwiCistIHJlZyA6IHNob3VsZCBjb250YWluIG9uZSByZWdpc3RlciByYW5nZSBpLmUuIHN0YXJ0IGFuZCBsZW5ndGgKKy0gaW50ZXJydXB0cyA6IHNob3VsZCBjb250YWluIHRoZSBUTEwgbW9kdWxlJ3MgaW50ZXJydXB0CistIHRpLGh3bW9kIDogbXVzdCBjb250YWluICJ1c2JfdGxsX2hzIgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIGNsb2NrczogYSBsaXN0IG9mIHBoYW5kbGVzIGFuZCBjbG9jay1zcGVjaWZpZXIgcGFpcnMsIG9uZSBmb3IgZWFjaCBlbnRyeSBpbgorICBjbG9jay1uYW1lcy4KKworLSBjbG9jay1uYW1lczogc2hvdWxkIGluY2x1ZGU6CisgICogInVzYl90bGxfaHNfdXNiX2NoMF9jbGsiIC0gVVNCIFRMTCBjaGFubmVsIDAgY2xvY2sKKyAgKiAidXNiX3RsbF9oc191c2JfY2gxX2NsayIgLSBVU0IgVExMIGNoYW5uZWwgMSBjbG9jaworICAqICJ1c2JfdGxsX2hzX3VzYl9jaDJfY2xrIiAtIFVTQiBUTEwgY2hhbm5lbCAyIGNsb2NrCisKK0V4YW1wbGU6CisKKwl1c2Joc3RsbDogdXNiaHN0bGxANGEwNjIwMDAgeworCQljb21wYXRpYmxlID0gInRpLHVzYmhzLXRsbCI7CisJCXJlZyA9IDwweDRhMDYyMDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8Nzg+OworCQl0aSxod21vZHMgPSAidXNiX3RsbF9ocyI7CisJICB9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9wYWxtYXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9wYWxtYXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkYTg5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3BhbG1hcy50eHQKQEAgLTAsMCArMSw1MyBAQAorKiBwYWxtYXMgZGV2aWNlIHRyZWUgYmluZGluZ3MKKworVGhlIFRJIHBhbG1hcyBmYW1pbHkgY3VycmVudCBtZW1iZXJzIDotCit0d2w2MDM1IChwYWxtYXMpCit0d2w2MDM3IChwYWxtYXMpCit0cHM2NTkxMyAocGFsbWFzKQordHBzNjU5MTQgKHBhbG1hcykKK3RwczY1OTAzOAordHBzNjU5MTcKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSBmcm9tIHRoZSBsaXN0CisgIHRpLHR3bDYwMzUKKyAgdGksdHdsNjAzNgorICB0aSx0d2w2MDM3CisgIHRpLHRwczY1OTEzCisgIHRpLHRwczY1OTE0CisgIHRpLHRwczgwMDM2CisgIHRpLHRwczY1OTAzOAorICB0aSx0cHM2NTkxNworYW5kIGFsc28gdGhlIGdlbmVyaWMgc2VyaWVzIG5hbWVzCisgIHRpLHBhbG1hcworLSBpbnRlcnJ1cHQtY29udHJvbGxlciA6IHBhbG1hcyBoYXMgaXRzIG93biBpbnRlcm5hbCBJUlFzCistICNpbnRlcnJ1cHQtY2VsbHMgOiBzaG91bGQgYmUgc2V0IHRvIDIgZm9yIElSUSBudW1iZXIgYW5kIGZsYWdzCisgIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBJUlEgbnVtYmVyLgorICBUaGUgc2Vjb25kIGNlbGwgaXMgdGhlIGZsYWdzLCBlbmNvZGVkIGFzIHRoZSB0cmlnZ2VyIG1hc2tzIGZyb20KKyAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdHMudHh0CistIGludGVycnVwdC1wYXJlbnQgOiBUaGUgcGFyZW50IGludGVycnVwdCBjb250cm9sbGVyLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorICB0aSxtdXgtcGFkWCA6IHNldCB0aGUgcGFkIHJlZ2lzdGVyIFggKDEtMikgdG8gdGhlIGNvcnJlY3QgbXV4aW5nIGZvciB0aGUKKwkJaGFyZHdhcmUsIGlmIG5vdCBzZXQgd2lsbCB1c2UgbXV4aW5nIGluIE9UUC4KKworRXhhbXBsZToKKworcGFsbWFzIHsKKwljb21wYXRpYmxlID0gInRpLHR3bDYwMzUiLCAidGkscGFsbWFzIjsKKwlyZWcgPSA8MHg0OD4KKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpbnRjPjsKKwlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCisJdGksbXV4LXBhZDEgPSA8MD47CisJdGksbXV4LXBhZDIgPSA8MD47CisKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKworCXBtaWMgeworCQljb21wYXRpYmxlID0gInRpLHR3bDYwMzUtcG1pYyIsICJ0aSxwYWxtYXMtcG1pYyI7CisJCS4uLi4KKwl9OworfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9xY29tLHNwbWktcG1pYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3Fjb20sc3BtaS1wbWljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWMwNmMxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9xY29tLHNwbWktcG1pYy50eHQKQEAgLTAsMCArMSw3NSBAQAorICAgICAgICAgIFF1YWxjb21tIFNQTUkgUE1JQ3MgbXVsdGktZnVuY3Rpb24gZGV2aWNlIGJpbmRpbmdzCisKK1RoZSBRdWFsY29tbSBTUE1JIHNlcmllcyBwcmVzZW50bHkgaW5jbHVkZXMgUE04OTQxLCBQTTg4NDEgYW5kIFBNQTgwODQKK1BNSUNzLiAgVGhlc2UgUE1JQ3MgdXNlIGEgUVBOUCBzY2hlbWUgdGhyb3VnaCBTUE1JIGludGVyZmFjZS4KK1FQTlAgaXMgZWZmZWN0aXZlbHkgYSBwYXJ0aXRpb25pbmcgc2NoZW1lIGZvciBkaXZpZGluZyB0aGUgU1BNSSBleHRlbmRlZAorcmVnaXN0ZXIgc3BhY2UgdXAgaW50byBsb2dpY2FsIHBpZWNlcywgYW5kIHNldCBvZiBmaXhlZCByZWdpc3RlcgorbG9jYXRpb25zL2RlZmluaXRpb25zIHdpdGhpbiB0aGVzZSByZWdpb25zLCB3aXRoIHNvbWUgb2YgdGhlc2UgcmVnaW9ucworc3BlY2lmaWNhbGx5IHVzZWQgZm9yIGludGVycnVwdCBoYW5kbGluZy4KKworVGhlIFFQTlAgUE1JQ3MgYXJlIHVzZWQgd2l0aCB0aGUgUXVhbGNvbW0gU25hcGRyYWdvbiBzZXJpZXMgU29DcywgYW5kIGFyZQoraW50ZXJmYWNlZCB0byB0aGUgY2hpcCB2aWEgdGhlIFNQTUkgKFN5c3RlbSBQb3dlciBNYW5hZ2VtZW50IEludGVyZmFjZSkgYnVzLgorU3VwcG9ydCBmb3IgbXVsdGlwbGUgaW5kZXBlbmRlbnQgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBieSBzcGxpdHRpbmcgdGhlCisxNi1iaXQgU1BNSSBzbGF2ZSBhZGRyZXNzIHNwYWNlIGludG8gMjU2IHNtYWxsZXIgZml4ZWQtc2l6ZSByZWdpb25zLCAyNTYgYnl0ZXMKK2VhY2guIEEgZnVuY3Rpb24gY2FuIGNvbnN1bWUgb25lIG9yIG1vcmUgb2YgdGhlc2UgZml4ZWQtc2l6ZSByZWdpc3RlciByZWdpb25zLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAgICAgIFNob3VsZCBjb250YWluIG9uZSBvZjoKKyAgICAgICAgICAgICAgICAgICAicWNvbSxwbTg5NDEiLAorICAgICAgICAgICAgICAgICAgICJxY29tLHBtODg0MSIsCisgICAgICAgICAgICAgICAgICAgInFjb20scG1hODA4NCIsCisgICAgICAgICAgICAgICAgICAgInFjb20scG04MDE5IiwKKyAgICAgICAgICAgICAgICAgICAicWNvbSxwbTgyMjYiLAorICAgICAgICAgICAgICAgICAgICJxY29tLHBtODExMCIsCisgICAgICAgICAgICAgICAgICAgInFjb20scG1hODA4NCIsCisgICAgICAgICAgICAgICAgICAgInFjb20scG1pODk2MiIsCisgICAgICAgICAgICAgICAgICAgInFjb20scG1kOTYzNSIsCisgICAgICAgICAgICAgICAgICAgInFjb20scG04OTk0IiwKKyAgICAgICAgICAgICAgICAgICAicWNvbSxwbWk4OTk0IiwKKyAgICAgICAgICAgICAgICAgICAicWNvbSxwbTg5MTYiLAorICAgICAgICAgICAgICAgICAgICJxY29tLHBtODAwNCIsCisgICAgICAgICAgICAgICAgICAgInFjb20scG04OTA5IiwKKyAgICAgICAgICAgICAgICAgICBvciBnZW5lcmFsaXplZCAicWNvbSxzcG1pLXBtaWMiLgorLSByZWc6ICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgU1BNSSBVU0lEIHNsYXZlIGFkZHJlc3MgZm9yIHRoaXMgZGV2aWNlLgorICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZToKKyAgICAgICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BtaS9zcG1pLnR4dAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBwZXJpcGhlcmFsIGNoaWxkIG5vZGVzOgorLSBjb21wYXRpYmxlOiAgICAgIFNob3VsZCBjb250YWluICJxY29tLHh4eCIsIHdoZXJlICJ4eHgiIGlzIGEgcGVyaXBoZXJhbCBuYW1lLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzIGZvciBwZXJpcGhlcmFsIGNoaWxkIG5vZGVzOgorLSBpbnRlcnJ1cHRzOiAgICAgIEludGVycnVwdHMgYXJlIHNwZWNpZmllZCBhcyBhIDQtdHVwbGUuIEZvciBtb3JlIGluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgICAgc2VlOgorICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcG1pL3Fjb20sc3BtaS1wbWljLWFyYi50eHQKKy0gaW50ZXJydXB0LW5hbWVzOiBDb3JyZXNwb25kaW5nIGludGVycnVwdCBuYW1lIHRvIHRoZSBpbnRlcnJ1cHRzIHByb3BlcnR5CisKK0VhY2ggY2hpbGQgbm9kZSBvZiBTUE1JIHNsYXZlIGlkIHJlcHJlc2VudHMgYSBmdW5jdGlvbiBvZiB0aGUgUE1JQy4gSW4gdGhlCitleGFtcGxlIGJlbG93IHRoZSBydGMgZGV2aWNlIG5vZGUgcmVwcmVzZW50cyBhIHBlcmlwaGVyYWwgb2YgcG04OTQxCitTSUQgPSAwLiBUaGUgcmVndWxhdG9yIGRldmljZSBub2RlIHJlcHJlc2VudHMgYSBwZXJpcGhlcmFsIG9mIHBtODk0MSBTSUQgPSAxLgorCitFeGFtcGxlOgorCisJc3BtaSB7CisJCWNvbXBhdGlibGUgPSAicWNvbSxzcG1pLXBtaWMtYXJiIjsKKworCQlwbTg5NDFAMCB7CisJCQljb21wYXRpYmxlID0gInFjb20scG04OTQxIiwgInFjb20sc3BtaS1wbWljIjsKKwkJCXJlZyA9IDwweDAgU1BNSV9VU0lEPjsKKworCQkJcnRjIHsKKwkJCQljb21wYXRpYmxlID0gInFjb20scnRjIjsKKwkJCQlpbnRlcnJ1cHRzID0gPDB4MCAweDYxIDB4MSBJUlFfVFlQRV9FREdFX1JJU0lORz47CisJCQkJaW50ZXJydXB0LW5hbWVzID0gImFsYXJtIjsKKwkJCX07CisJCX07CisKKwkJcG04OTQxQDEgeworCQkJY29tcGF0aWJsZSA9ICJxY29tLHBtODk0MSIsICJxY29tLHNwbWktcG1pYyI7CisJCQlyZWcgPSA8MHgxIFNQTUlfVVNJRD47CisKKwkJCXJlZ3VsYXRvciB7CisJCQkJY29tcGF0aWJsZSA9ICJxY29tLHJlZ3VsYXRvciI7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAiODk0MV9ib29zdCI7CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3Fjb20sdGNzci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3Fjb20sdGNzci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkwNTE5ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvcWNvbSx0Y3NyLnR4dApAQCAtMCwwICsxLDIyIEBACitRQ09NIFRvcCBDb250cm9sIGFuZCBTdGF0dXMgUmVnaXN0ZXIKKworUXVhbGNvbW0gZGV2aWNlcyBoYXZlIGEgc2V0IG9mIHJlZ2lzdGVycyB0aGF0IHByb3ZpZGUgdmFyaW91cyBjb250cm9sIGFuZCBzdGF0dXMKK2Z1bmN0aW9ucyBmb3IgdGhlaXIgcGVyaXBoZXJhbHMuICBUaGlzIG5vZGUgaXMgaW50ZW5kZWQgdG8gYWxsb3cgYWNjZXNzIHRvIHRoZXNlCityZWdpc3RlcnMgdmlhIHN5c2Nvbi4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZToJU2hvdWxkIGNvbnRhaW46CisJCSJxY29tLHRjc3ItaXBxODA2NCIsICJzeXNjb24iIGZvciBJUFE4MDY0CisJCSJxY29tLHRjc3ItYXBxODA2NCIsICJzeXNjb24iIGZvciBBUFE4MDY0CisJCSJxY29tLHRjc3ItbXNtODY2MCIsICJzeXNjb24iIGZvciBNU004NjYwCisJCSJxY29tLHRjc3ItbXNtODk2MCIsICJzeXNjb24iIGZvciBNU004OTYwCisJCSJxY29tLHRjc3ItbXNtODk3NCIsICJzeXNjb24iIGZvciBNU004OTc0CisJCSJxY29tLHRjc3ItYXBxODA4NCIsICJzeXNjb24iIGZvciBBUFE4MDg0CisJCSJxY29tLHRjc3ItbXNtODkxNiIsICJzeXNjb24iIGZvciBNU004OTE2CistIHJlZzogQWRkcmVzcyByYW5nZSBmb3IgVENTUiByZWdpc3RlcnMKKworRXhhbXBsZToKKwl0Y3NyOiBzeXNjb25AMWE0MDAwMDAgeworCQljb21wYXRpYmxlID0gInFjb20sdGNzci1tc204OTYwIiwgInN5c2NvbiI7CisJCXJlZyA9IDwweDFhNDAwMDAwIDB4MTAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9xY29tLXBtOHh4eC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3Fjb20tcG04eHh4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjRmMzM0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9xY29tLXBtOHh4eC50eHQKQEAgLTAsMCArMSw5NyBAQAorUXVhbGNvbW0gUE04eHh4IFBNSUMgbXVsdGktZnVuY3Rpb24gZGV2aWNlcworCitUaGUgUE04eHh4IGZhbWlseSBvZiBQb3dlciBNYW5hZ2VtZW50IElDcyBhcmUgdXNlZCB0byBwcm92aWRlIHJlZ3VsYXRlZAordm9sdGFnZXMgYW5kIG90aGVyIHZhcmlvdXMgZnVuY3Rpb25hbGl0eSB0byBRdWFsY29tbSBTb0NzLgorCis9IFBST1BFUlRJRVMKKworLSBjb21wYXRpYmxlOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxzdHJpbmc+CisJRGVmaW5pdGlvbjogbXVzdCBiZSBvbmUgb2Y6CisJCSAgICAicWNvbSxwbTgwNTgiCisJCSAgICAicWNvbSxwbTg5MjEiCisKKy0gI2FkZHJlc3MtY2VsbHM6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHUzMj4KKwlEZWZpbml0aW9uOiBtdXN0IGJlIDEKKworLSAjc2l6ZS1jZWxsczoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8dTMyPgorCURlZmluaXRpb246IG11c3QgYmUgMAorCistIGludGVycnVwdHM6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOiBzcGVjaWZpZXMgdGhlIGludGVycnVwdCB0aGF0IGluZGljYXRlcyBhIHN1YmRldmljZQorCQkgICAgaGFzIGdlbmVyYXRlZCBhbiBpbnRlcnJ1cHQgKHN1bW1hcnkgaW50ZXJydXB0KS4gVGhlCisJCSAgICBmb3JtYXQgb2YgdGhlIHNwZWNpZmllciBpcyBkZWZpbmVkIGJ5IHRoZSBiaW5kaW5nIGRvY3VtZW50CisJCSAgICBkZXNjcmliaW5nIHRoZSBub2RlJ3MgaW50ZXJydXB0IHBhcmVudC4KKworLSAjaW50ZXJydXB0LWNlbGxzOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGUgOiA8dTMyPgorCURlZmluaXRpb246IG11c3QgYmUgMi4gU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgbmVlZGVkIHRvIGVuY29kZQorCQkgICAgYW4gaW50ZXJydXB0IHNvdXJjZS4gVGhlIDFzdCBjZWxsIGNvbnRhaW5zIHRoZSBpbnRlcnJ1cHQKKwkJICAgIG51bWJlci4gVGhlIDJuZCBjZWxsIGlzIHRoZSB0cmlnZ2VyIHR5cGUgYW5kIGxldmVsIGZsYWdzCisJCSAgICBlbmNvZGVkIGFzIGZvbGxvd3M6CisKKwkJCTEgPSBsb3ctdG8taGlnaCBlZGdlIHRyaWdnZXJlZAorCQkJMiA9IGhpZ2gtdG8tbG93IGVkZ2UgdHJpZ2dlcmVkCisJCQk0ID0gYWN0aXZlIGhpZ2ggbGV2ZWwtc2Vuc2l0aXZlCisJCQk4ID0gYWN0aXZlIGxvdyBsZXZlbC1zZW5zaXRpdmUKKworLSBpbnRlcnJ1cHQtY29udHJvbGxlcjoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8ZW1wdHk+CisJRGVmaW5pdGlvbjogaWRlbnRpZmllcyB0aGlzIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIKKworPSBTVUJDT01QT05FTlRTCisKK1RoZSBQTUlDIGNvbnRhaW5zIG11bHRpcGxlIGluZGVwZW5kZW50IGZ1bmN0aW9ucywgZWFjaCBkZXNjcmliZWQgaW4gYSBzdWJub2RlLgorVGhlIGJlbG93IGJpbmRpbmdzIHNwZWNpZnkgdGhlIHNldCBvZiB2YWxpZCBzdWJub2Rlcy4KKworPT0gUmVhbC1UaW1lIENsb2NrCisKKy0gY29tcGF0aWJsZToKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8c3RyaW5nPgorCURlZmluaXRpb246IG11c3QgYmUgb25lIG9mOgorCQkgICAgInFjb20scG04MDU4LXJ0YyIKKwkJICAgICJxY29tLHBtODkyMS1ydGMiCisJCSAgICAicWNvbSxwbTg5NDEtcnRjIgorCistIHJlZzoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IHNpbmdsZSBlbnRyeSBzcGVjaWZ5aW5nIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIFJUQyByZWdpc3RlcnMKKworLSBpbnRlcnJ1cHRzOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisJRGVmaW5pdGlvbjogc2luZ2xlIGVudHJ5IHNwZWNpZnlpbmcgdGhlIFJUQydzIGFsYXJtIGludGVycnVwdAorCistIGFsbG93LXNldC10aW1lOgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IDxlbXB0eT4KKwlEZWZpbml0aW9uOiBpbmRpY2F0ZXMgdGhhdCB0aGUgc2V0dGluZyBvZiBSVEMgdGltZSBpcyBhbGxvd2VkIGJ5CisJCSAgICB0aGUgaG9zdCBDUFUKKworPSBFWEFNUExFCisKKwlwbWljaW50YzogcG1pY0AwIHsKKwkJY29tcGF0aWJsZSA9ICJxY29tLHBtODkyMSI7CisJCWludGVycnVwdHMgPSA8MTA0IDg+OworCQkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCisJCXJ0Y0AxMWQgeworCQkJY29tcGF0aWJsZSA9ICJxY29tLHBtODkyMS1ydGMiOworCQkJcmVnID0gPDB4MTFkPjsKKwkJCWludGVycnVwdHMgPSA8MHgyNyAwPjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9xY29tLXJwbS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3Fjb20tcnBtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTk3YTk1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9xY29tLXJwbS50eHQKQEAgLTAsMCArMSwyNjQgQEAKK1F1YWxjb21tIFJlc291cmNlIFBvd2VyIE1hbmFnZXIgKFJQTSkKKworVGhpcyBkcml2ZXIgaXMgdXNlZCB0byBpbnRlcmZhY2Ugd2l0aCB0aGUgUmVzb3VyY2UgUG93ZXIgTWFuYWdlciAoUlBNKSBmb3VuZCBpbgordmFyaW91cyBRdWFsY29tbSBwbGF0Zm9ybXMuIFRoZSBSUE0gYWxsb3dzIGVhY2ggY29tcG9uZW50IGluIHRoZSBzeXN0ZW0gdG8gdm90ZQorZm9yIHN0YXRlIG9mIHRoZSBzeXN0ZW0gcmVzb3VyY2VzLCBzdWNoIGFzIGNsb2NrcywgcmVndWxhdG9ycyBhbmQgYnVzCitmcmVxdWVuY2llcy4KKworLSBjb21wYXRpYmxlOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxzdHJpbmc+CisJRGVmaW5pdGlvbjogbXVzdCBiZSBvbmUgb2Y6CisJCSAgICAicWNvbSxycG0tYXBxODA2NCIKKwkJICAgICJxY29tLHJwbS1tc204NjYwIgorCQkgICAgInFjb20scnBtLW1zbTg5NjAiCisJCSAgICAicWNvbSxycG0taXBxODA2NCIKKworLSByZWc6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOiBiYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIFJQTSdzIG1lc3NhZ2UgcmFtCisKKy0gaW50ZXJydXB0czoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IHRocmVlIGVudHJpZXMgc3BlY2lmeWluZyB0aGUgUlBNJ3M6CisJCSAgICAxLiBhY2tub3dsZWRnZW1lbnQgaW50ZXJydXB0CisJCSAgICAyLiBlcnJvciBpbnRlcnJ1cHQKKwkJICAgIDMuIHdha2V1cCBpbnRlcnJ1cHQKKworLSBpbnRlcnJ1cHQtbmFtZXM6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHN0cmluZy1hcnJheT4KKwlEZWZpbml0aW9uOiBtdXN0IGJlIHRoZSB0aHJlZSBzdHJpbmdzICJhY2siLCAiZXJyIiBhbmQgIndha2V1cCIsIGluIG9yZGVyCisKKy0gcWNvbSxpcGM6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKworCURlZmluaXRpb246IHRocmVlIGVudHJpZXMgc3BlY2lmeWluZyB0aGUgb3V0Z29pbmcgaXBjIGJpdCB1c2VkIGZvcgorCQkgICAgc2lnbmFsaW5nIHRoZSBSUE06CisJCSAgICAtIHBoYW5kbGUgdG8gYSBzeXNjb24gbm9kZSByZXByZXNlbnRpbmcgdGhlIGFwY3MgcmVnaXN0ZXJzCisJCSAgICAtIHUzMiByZXByZXNlbnRpbmcgb2Zmc2V0IHRvIHRoZSByZWdpc3RlciB3aXRoaW4gdGhlIHN5c2NvbgorCQkgICAgLSB1MzIgcmVwcmVzZW50aW5nIHRoZSBpcGMgYml0IHdpdGhpbiB0aGUgcmVnaXN0ZXIKKworCis9IFNVQk5PREVTCisKK1RoZSBSUE0gZXhwb3NlcyByZXNvdXJjZXMgdG8gaXRzIHN1Ym5vZGVzLiBUaGUgYmVsb3cgYmluZGluZ3Mgc3BlY2lmeSB0aGUgc2V0CitvZiB2YWxpZCBzdWJub2RlcyB0aGF0IGNhbiBvcGVyYXRlIG9uIHRoZXNlIHJlc291cmNlcy4KKworPT0gUmVndWxhdG9ycworCitSZWd1bGF0b3Igbm9kZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlaXIgY29tcGF0aWJsZToKKworLSBjb21wYXRpYmxlOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxzdHJpbmc+CisJRGVmaW5pdGlvbjogbXVzdCBiZSBvbmUgb2Y6CisJCSAgICAicWNvbSxycG0tcG04MDU4LXJlZ3VsYXRvcnMiCisJCSAgICAicWNvbSxycG0tcG04OTAxLXJlZ3VsYXRvcnMiCisJCSAgICAicWNvbSxycG0tcG04OTIxLXJlZ3VsYXRvcnMiCisKKy0gdmRkX2wwX2wxX2x2cy1zdXBwbHk6CistIHZkZF9sMl9sMTFfbDEyLXN1cHBseToKKy0gdmRkX2wzX2w0X2w1LXN1cHBseToKKy0gdmRkX2w2X2w3LXN1cHBseToKKy0gdmRkX2w4LXN1cHBseToKKy0gdmRkX2w5LXN1cHBseToKKy0gdmRkX2wxMC1zdXBwbHk6CistIHZkZF9sMTNfbDE2LXN1cHBseToKKy0gdmRkX2wxNF9sMTUtc3VwcGx5OgorLSB2ZGRfbDE3X2wxOC1zdXBwbHk6CistIHZkZF9sMTlfbDIwLXN1cHBseToKKy0gdmRkX2wyMS1zdXBwbHk6CistIHZkZF9sMjItc3VwcGx5OgorLSB2ZGRfbDIzX2wyNF9sMjUtc3VwcGx5OgorLSB2ZGRfbmNwLXN1cHBseToKKy0gdmRkX3MwLXN1cHBseToKKy0gdmRkX3MxLXN1cHBseToKKy0gdmRkX3MyLXN1cHBseToKKy0gdmRkX3MzLXN1cHBseToKKy0gdmRkX3M0LXN1cHBseToKKwlVc2FnZTogb3B0aW9uYWwgKHBtODA1OCBvbmx5KQorCVZhbHVlIHR5cGU6IDxwaGFuZGxlPgorCURlZmluaXRpb246IHJlZmVyZW5jZSB0byByZWd1bGF0b3Igc3VwcGx5aW5nIHRoZSBpbnB1dCBwaW4sIGFzCisJCSAgICBkZXNjcmliZWQgaW4gdGhlIGRhdGEgc2hlZXQKKworLSBsdnMwX2luLXN1cHBseToKKy0gbHZzMV9pbi1zdXBwbHk6CistIGx2czJfaW4tc3VwcGx5OgorLSBsdnMzX2luLXN1cHBseToKKy0gbXZzX2luLXN1cHBseToKKy0gdmRkX2wwLXN1cHBseToKKy0gdmRkX2wxLXN1cHBseToKKy0gdmRkX2wyLXN1cHBseToKKy0gdmRkX2wzLXN1cHBseToKKy0gdmRkX2w0LXN1cHBseToKKy0gdmRkX2w1LXN1cHBseToKKy0gdmRkX2w2LXN1cHBseToKKy0gdmRkX3MwLXN1cHBseToKKy0gdmRkX3MxLXN1cHBseToKKy0gdmRkX3MyLXN1cHBseToKKy0gdmRkX3MzLXN1cHBseToKKy0gdmRkX3M0LXN1cHBseToKKwlVc2FnZTogb3B0aW9uYWwgKHBtODkwMSBvbmx5KQorCVZhbHVlIHR5cGU6IDxwaGFuZGxlPgorCURlZmluaXRpb246IHJlZmVyZW5jZSB0byByZWd1bGF0b3Igc3VwcGx5aW5nIHRoZSBpbnB1dCBwaW4sIGFzCisJCSAgICBkZXNjcmliZWQgaW4gdGhlIGRhdGEgc2hlZXQKKworLSB2ZGRfbDFfbDJfbDEyX2wxOC1zdXBwbHk6CistIHZkZF9sM19sMTVfbDE3LXN1cHBseToKKy0gdmRkX2w0X2wxNC1zdXBwbHk6CistIHZkZF9sNV9sOF9sMTYtc3VwcGx5OgorLSB2ZGRfbDZfbDctc3VwcGx5OgorLSB2ZGRfbDlfbDExLXN1cHBseToKKy0gdmRkX2wxMF9sMjItc3VwcGx5OgorLSB2ZGRfbDIxX2wyM19sMjktc3VwcGx5OgorLSB2ZGRfbDI0LXN1cHBseToKKy0gdmRkX2wyNS1zdXBwbHk6CistIHZkZF9sMjYtc3VwcGx5OgorLSB2ZGRfbDI3LXN1cHBseToKKy0gdmRkX2wyOC1zdXBwbHk6CistIHZkZF9uY3Atc3VwcGx5OgorLSB2ZGRfczEtc3VwcGx5OgorLSB2ZGRfczItc3VwcGx5OgorLSB2ZGRfczQtc3VwcGx5OgorLSB2ZGRfczUtc3VwcGx5OgorLSB2ZGRfczYtc3VwcGx5OgorLSB2ZGRfczctc3VwcGx5OgorLSB2ZGRfczgtc3VwcGx5OgorLSB2aW5fNXZzLXN1cHBseToKKy0gdmluX2x2czFfM182LXN1cHBseToKKy0gdmluX2x2czItc3VwcGx5OgorLSB2aW5fbHZzNF81Xzctc3VwcGx5OgorCVVzYWdlOiBvcHRpb25hbCAocG04OTIxIG9ubHkpCisJVmFsdWUgdHlwZTogPHBoYW5kbGU+CisJRGVmaW5pdGlvbjogcmVmZXJlbmNlIHRvIHJlZ3VsYXRvciBzdXBwbHlpbmcgdGhlIGlucHV0IHBpbiwgYXMKKwkJICAgIGRlc2NyaWJlZCBpbiB0aGUgZGF0YSBzaGVldAorCitUaGUgcmVndWxhdG9yIG5vZGUgaG91c2VzIHN1Yi1ub2RlcyBmb3IgZWFjaCByZWd1bGF0b3Igd2l0aGluIHRoZSBkZXZpY2UuIEVhY2gKK3N1Yi1ub2RlIGlzIGlkZW50aWZpZWQgdXNpbmcgdGhlIG5vZGUncyBuYW1lLCB3aXRoIHZhbGlkIHZhbHVlcyBsaXN0ZWQgZm9yIGVhY2gKK29mIHRoZSBwbWljcyBiZWxvdy4KKworcG04MDU4OgorCWwwLCBsMSwgbDIsIGwzLCBsNCwgbDUsIGw2LCBsNywgbDgsIGw5LCBsMTAsIGwxMSwgbDEyLCBsMTMsIGwxNCwgbDE1LAorCWwxNiwgbDE3LCBsMTgsIGwxOSwgbDIwLCBsMjEsIGwyMiwgbDIzLCBsMjQsIGwyNSwgczAsIHMxLCBzMiwgczMsIHM0LAorCWx2czAsIGx2czEsIG5jcAorCitwbTg5MDE6CisJbDAsIGwxLCBsMiwgbDMsIGw0LCBsNSwgbDYsIHMwLCBzMSwgczIsIHMzLCBzNCwgbHZzMCwgbHZzMSwgbHZzMiwgbHZzMywKKwltdnMKKworcG04OTIxOgorCXMxLCBzMiwgczMsIHM0LCBzNywgczgsIGwxLCBsMiwgbDMsIGw0LCBsNSwgbDYsIGw3LCBsOCwgbDksIGwxMCwgbDExLAorCWwxMiwgbDE0LCBsMTUsIGwxNiwgbDE3LCBsMTgsIGwyMSwgbDIyLCBsMjMsIGwyNCwgbDI1LCBsMjYsIGwyNywgbDI4LAorCWwyOSwgbHZzMSwgbHZzMiwgbHZzMywgbHZzNCwgbHZzNSwgbHZzNiwgbHZzNywgdXNiLXN3aXRjaCwgaGRtaS1zd2l0Y2gsCisJbmNwCisKK1RoZSBjb250ZW50IG9mIGVhY2ggc3ViLW5vZGUgaXMgZGVmaW5lZCBieSB0aGUgc3RhbmRhcmQgYmluZGluZyBmb3IgcmVndWxhdG9ycyAtCitzZWUgcmVndWxhdG9yLnR4dCAtIHdpdGggYWRkaXRpb25hbCBjdXN0b20gcHJvcGVydGllcyBkZXNjcmliZWQgYmVsb3c6CisKKz09PSBTd2l0Y2gtbW9kZSBQb3dlciBTdXBwbHkgcmVndWxhdG9yIGN1c3RvbSBwcm9wZXJ0aWVzCisKKy0gYmlhcy1wdWxsLWRvd246CisJVXNhZ2U6IG9wdGlvbmFsCisJVmFsdWUgdHlwZTogPGVtcHR5PgorCURlZmluaXRpb246IGVuYWJsZSBwdWxsIGRvd24gb2YgdGhlIHJlZ3VsYXRvciB3aGVuIGluYWN0aXZlCisKKy0gcWNvbSxzd2l0Y2gtbW9kZS1mcmVxdWVuY3k6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHUzMj4KKwlEZWZpbml0aW9uOiBGcmVxdWVuY3kgKEh6KSBvZiB0aGUgc3dpdGNoLW1vZGUgcG93ZXIgc3VwcGx5OworCQkgICAgbXVzdCBiZSBvbmUgb2Y6CisJCSAgICAxOTIwMDAwMCwgOTYwMDAwMCwgNjQwMDAwMCwgNDgwMDAwMCwgMzg0MDAwMCwgMzIwMDAwMCwKKwkJICAgIDI3NDAwMDAsIDI0MDAwMDAsIDIxMzAwMDAsIDE5MjAwMDAsIDE3NTAwMDAsIDE2MDAwMDAsCisJCSAgICAxNDgwMDAwLCAxMzcwMDAwLCAxMjgwMDAwLCAxMjAwMDAwCisKKy0gcWNvbSxmb3JjZS1tb2RlOgorCVVzYWdlOiBvcHRpb25hbCAoZGVmYXVsdCBpZiBubyBvdGhlciBxY29tLGZvcmNlLW1vZGUgaXMgc3BlY2lmaWVkKQorCVZhbHVlIHR5cGU6IDx1MzI+CisJRGVmaW50aW9uOiBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVndWxhdG9yIHNob3VsZCBiZSBmb3JjZWQgdG8gYQorCQkgICBwYXJ0aWN1bGFyIG1vZGUsIHZhbGlkIHZhbHVlcyBhcmU6CisJCSAgIFFDT01fUlBNX0ZPUkNFX01PREVfTk9ORSAtIGRvIG5vdCBmb3JjZSBhbnkgbW9kZQorCQkgICBRQ09NX1JQTV9GT1JDRV9NT0RFX0xQTSAtIGZvcmNlIGludG8gbG93IHBvd2VyIG1vZGUKKwkJICAgUUNPTV9SUE1fRk9SQ0VfTU9ERV9IUE0gLSBmb3JjZSBpbnRvIGhpZ2ggcG93ZXIgbW9kZQorCQkgICBRQ09NX1JQTV9GT1JDRV9NT0RFX0FVVE8gLSBhbGxvdyByZWd1bGF0b3IgdG8gYXV0b21hdGljYWxseQorCQkJCQkgICAgICBzZWxlY3QgaXRzIG93biBtb2RlIGJhc2VkIG9uCisJCQkJCSAgICAgIHJlYWx0aW1lIGN1cnJlbnQgZHJhdywgb25seSBmb3I6CisJCQkJCSAgICAgIHBtODkyMSBzbXBzIGFuZCBmdHNtcHMKKworLSBxY29tLHBvd2VyLW1vZGUtaHlzdGVyZXRpYzoKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8ZW1wdHk+CisJRGVmaW5pdGlvbjogc2VsZWN0IHRoYXQgdGhlIHBvd2VyIHN1cHBseSBzaG91bGQgb3BlcmF0ZSBpbiBoeXN0ZXJldGljCisJCSAgICBtb2RlLCBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IHB3bSBtb2RlCisKKz09PSBMb3ctZHJvcG91dCByZWd1bGF0b3IgY3VzdG9tIHByb3BlcnRpZXMKKworLSBiaWFzLXB1bGwtZG93bjoKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8ZW1wdHk+CisJRGVmaW5pdGlvbjogZW5hYmxlIHB1bGwgZG93biBvZiB0aGUgcmVndWxhdG9yIHdoZW4gaW5hY3RpdmUKKworLSBxY29tLGZvcmNlLW1vZGU6CisJVXNhZ2U6IG9wdGlvbmFsCisJVmFsdWUgdHlwZTogPHUzMj4KKwlEZWZpbnRpb246IGluZGljYXRlcyB0aGF0IHRoZSByZWd1bGF0b3Igc2hvdWxkIG5vdCBiZSBmb3JjZWQgdG8gYW55CisJCSAgIHBhcnRpY3VsYXIgbW9kZSwgdmFsaWQgdmFsdWVzIGFyZToKKwkJICAgUUNPTV9SUE1fRk9SQ0VfTU9ERV9OT05FIC0gZG8gbm90IGZvcmNlIGFueSBtb2RlCisJCSAgIFFDT01fUlBNX0ZPUkNFX01PREVfTFBNIC0gZm9yY2UgaW50byBsb3cgcG93ZXIgbW9kZQorCQkgICBRQ09NX1JQTV9GT1JDRV9NT0RFX0hQTSAtIGZvcmNlIGludG8gaGlnaCBwb3dlciBtb2RlCisJCSAgIFFDT01fUlBNX0ZPUkNFX01PREVfQllQQVNTIC0gc2V0IHJlZ3VsYXRvciB0byB1c2UgYnlwYXNzCisJCQkJCQltb2RlLCBpLmUuICB0byBhY3QgYXMgYSBzd2l0Y2gKKwkJCQkJCWFuZCBub3QgcmVndWxhdGUsIG9ubHkgZm9yOgorCQkJCQkJcG04OTIxIHBsZG8sIG5sZG8gYW5kIG5sZG8xMjAwCisKKz09PSBOZWdhdGl2ZSBDaGFyZ2UgUHVtcCBjdXN0b20gcHJvcGVydGllcworCistIHFjb20sc3dpdGNoLW1vZGUtZnJlcXVlbmN5OgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDx1MzI+CisJRGVmaW5pdGlvbjogRnJlcXVlbmN5IChIeikgb2YgdGhlIHN3aXRoIG1vZGUgcG93ZXIgc3VwcGx5OworCQkgICAgbXVzdCBiZSBvbmUgb2Y6CisJCSAgICAxOTIwMDAwMCwgOTYwMDAwMCwgNjQwMDAwMCwgNDgwMDAwMCwgMzg0MDAwMCwgMzIwMDAwMCwKKwkJICAgIDI3NDAwMDAsIDI0MDAwMDAsIDIxMzAwMDAsIDE5MjAwMDAsIDE3NTAwMDAsIDE2MDAwMDAsCisJCSAgICAxNDgwMDAwLCAxMzcwMDAwLCAxMjgwMDAwLCAxMjAwMDAwCisKKz0gRVhBTVBMRQorCisJI2luY2x1ZGUgPGR0LWJpbmRpbmdzL21mZC9xY29tLXJwbS5oPgorCisJcnBtQDEwODAwMCB7CisJCWNvbXBhdGlibGUgPSAicWNvbSxycG0tbXNtODk2MCI7CisJCXJlZyA9IDwweDEwODAwMCAweDEwMDA+OworCQlxY29tLGlwYyA9IDwmYXBjcyAweDggMj47CisKKwkJaW50ZXJydXB0cyA9IDwwIDE5IDA+LCA8MCAyMSAwPiwgPDAgMjIgMD47CisJCWludGVycnVwdC1uYW1lcyA9ICJhY2siLCAiZXJyIiwgIndha2V1cCI7CisKKwkJcmVndWxhdG9ycyB7CisJCQljb21wYXRpYmxlID0gInFjb20scnBtLXBtODkyMS1yZWd1bGF0b3JzIjsKKwkJCXZkZF9sMV9sMl9sMTJfbDE4LXN1cHBseSA9IDwmcG04OTIxX3M0PjsKKworCQkJczEgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDEyMjUwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDEyMjUwMDA+OworCisJCQkJYmlhcy1wdWxsLWRvd247CisKKwkJCQlxY29tLHN3aXRjaC1tb2RlLWZyZXF1ZW5jeSA9IDwzMjAwMDAwPjsKKwkJCX07CisKKwkJCXBtODkyMV9zNDogczQgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDE4MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE4MDAwMDA+OworCisJCQkJcWNvbSxzd2l0Y2gtbW9kZS1mcmVxdWVuY3kgPSA8MTYwMDAwMD47CisJCQkJYmlhcy1wdWxsLWRvd247CisKKwkJCQlxY29tLGZvcmNlLW1vZGUgPSA8UUNPTV9SUE1fRk9SQ0VfTU9ERV9BVVRPPjsKKwkJCX07CisJCX07CisJfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9xcmlveC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3FyaW94LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzAxZTJkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9xcmlveC50eHQKQEAgLTAsMCArMSwxNyBAQAorS0VZTUlMRSBxcmlvIEJvYXJkIENvbnRyb2wgQ1BMRAorCitUaGUgcXJpbyBpcyBhIG11bHRpZnVuY3Rpb24gZGV2aWNlIHRoYXQgY29udHJvbHMgdGhlIEtFWU1JTEUgYm9hcmRzIGJhc2VkIG9uCit0aGUga21wMjA0eCBkZXNpZ24uCitJdCBpcyBjb25zaXN0cyBvZiBhIHJlc2V0IGNvbnRyb2xsZXIsIHdhdGNoZG9nIHRpbWVyLCBMRURzLCBhbmQgMiBJUlEgY2FwYWJsZQorR1BJTyBibG9ja3MuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJrZXltaWxlLHFyaW94IgorLSByZWc6IGFjY2VzcyBvbiB0aGUgcGFyZW50IGxvY2FsIGJ1cyAoY2hpcCBzZWxlY3QsIG9mZnNldCBpbiBjaGlwIHNlbGVjdCwgc2l6ZSkKKworRXhhbXBsZToKKworCWJvYXJkLWNvbnRyb2xAMSwwIHsKKwkJY29tcGF0aWJsZSA9ICJrZXltaWxlLHFyaW94IjsKKwkJcmVnID0gPDEgMCAweDgwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9yazgwOC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3JrODA4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2E2YWFiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9yazgwOC50eHQKQEAgLTAsMCArMSwxODMgQEAKK1JLODA4IFBvd2VyIE1hbmFnZW1lbnQgSW50ZWdyYXRlZCBDaXJjdWl0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJyb2NrY2hpcCxyazgwOCIKKy0gcmVnOiBJMkMgc2xhdmUgYWRkcmVzcworLSBpbnRlcnJ1cHQtcGFyZW50OiBUaGUgcGFyZW50IGludGVycnVwdCBjb250cm9sbGVyLgorLSBpbnRlcnJ1cHRzOiB0aGUgaW50ZXJydXB0IG91dHB1dHMgb2YgdGhlIGNvbnRyb2xsZXIuCistICNjbG9jay1jZWxsczogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzsgc2hhbGwgYmUgc2V0IHRvIDEgKG11bHRpcGxlIGNsb2NrCisgIG91dHB1dHMpLiBTZWUgPGR0LWJpbmRpbmdzL2Nsb2NrL3JvY2tjaGlwLHJrODA4Lmg+IGZvciBjbG9jayBJRHMuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrLW91dHB1dC1uYW1lczogRnJvbSBjb21tb24gY2xvY2sgYmluZGluZyB0byBvdmVycmlkZSB0aGUKKyAgZGVmYXVsdCBvdXRwdXQgY2xvY2sgbmFtZQorLSByb2NrY2hpcCxzeXN0ZW0tcG93ZXItY29udHJvbGxlcjogVGVsbGluZyB3aGV0aGVyIG9yIG5vdCB0aGlzIHBtaWMgaXMgY29udHJvbGxpbmcKKyAgdGhlIHN5c3RlbSBwb3dlci4KKy0gdmNjMS1zdXBwbHk6ICBUaGUgaW5wdXQgc3VwcGx5IGZvciBEQ0RDX1JFRzEKKy0gdmNjMi1zdXBwbHk6ICBUaGUgaW5wdXQgc3VwcGx5IGZvciBEQ0RDX1JFRzIKKy0gdmNjMy1zdXBwbHk6ICBUaGUgaW5wdXQgc3VwcGx5IGZvciBEQ0RDX1JFRzMKKy0gdmNjNC1zdXBwbHk6ICBUaGUgaW5wdXQgc3VwcGx5IGZvciBEQ0RDX1JFRzQKKy0gdmNjNi1zdXBwbHk6ICBUaGUgaW5wdXQgc3VwcGx5IGZvciBMRE9fUkVHMSBhbmQgTERPX1JFRzIKKy0gdmNjNy1zdXBwbHk6ICBUaGUgaW5wdXQgc3VwcGx5IGZvciBMRE9fUkVHMyBhbmQgTERPX1JFRzcKKy0gdmNjOC1zdXBwbHk6ICBUaGUgaW5wdXQgc3VwcGx5IGZvciBTV0lUQ0hfUkVHMQorLSB2Y2M5LXN1cHBseTogIFRoZSBpbnB1dCBzdXBwbHkgZm9yIExET19SRUc0IGFuZCBMRE9fUkVHNQorLSB2Y2MxMC1zdXBwbHk6IFRoZSBpbnB1dCBzdXBwbHkgZm9yIExET19SRUc2CistIHZjYzExLXN1cHBseTogVGhlIGlucHV0IHN1cHBseSBmb3IgTERPX1JFRzgKKy0gdmNjMTItc3VwcGx5OiBUaGUgaW5wdXQgc3VwcGx5IGZvciBTV0lUQ0hfUkVHMgorLSBkdnMtZ3Bpb3M6ICBidWNrMS8yIGNhbiBiZSBjb250cm9sbGVkIGJ5IGdwaW8gZHZzLCB0aGlzIGlzIEdQSU8gc3BlY2lmaWVycworICBmb3IgMiBob3N0IGdwaW8ncyB1c2VkIGZvciBkdnMuIFRoZSBmb3JtYXQgb2YgdGhlIGdwaW8gc3BlY2lmaWVyIGRlcGVuZHMgaW4KKyAgdGhlIGdwaW8gY29udHJvbGxlci4gSWYgRFZTIEdQSU9zIGFyZW4ndCBwcmVzZW50LCB2b2x0YWdlIGNoYW5nZXMgd2lsbCBoYXBwZW4KKyAgdmVyeSBxdWlja2x5IHdpdGggbm8gc2xvdyByYW1wIHRpbWUuCisKK1JlZ3VsYXRvcnM6IEFsbCB0aGUgcmVndWxhdG9ycyBvZiBSSzgwOCB0byBiZSBpbnN0YW50aWF0ZWQgc2hhbGwgYmUKK2xpc3RlZCBpbiBhIGNoaWxkIG5vZGUgbmFtZWQgJ3JlZ3VsYXRvcnMnLiBFYWNoIHJlZ3VsYXRvciBpcyByZXByZXNlbnRlZAorYnkgYSBjaGlsZCBub2RlIG9mIHRoZSAncmVndWxhdG9ycycgbm9kZS4KKworCXJlZ3VsYXRvci1uYW1lIHsKKwkJLyogc3RhbmRhcmQgcmVndWxhdG9yIGJpbmRpbmdzIGhlcmUgKi8KKwl9OworCitGb2xsb3dpbmcgcmVndWxhdG9ycyBvZiB0aGUgUks4MDggUE1JQyBibG9jayBhcmUgc3VwcG9ydGVkLiBOb3RlIHRoYXQKK3RoZSAnbicgaW4gcmVndWxhdG9yIG5hbWUsIGFzIGluIERDRENfUkVHbiBvciBMRE9uLCByZXByZXNlbnRzIHRoZSBEQ0RDIG9yIExETworbnVtYmVyIGFzIGRlc2NyaWJlZCBpbiBSSzgwOCBkYXRhc2hlZXQuCisKKwktIERDRENfUkVHbgorCQktIHZhbGlkIHZhbHVlcyBmb3IgbiBhcmUgMSB0byA0LgorCS0gTERPX1JFR24KKwkJLSB2YWxpZCB2YWx1ZXMgZm9yIG4gYXJlIDEgdG8gOC4KKwktIFNXSVRDSF9SRUduCisJCS0gdmFsaWQgdmFsdWVzIGZvciBuIGFyZSAxIHRvIDIKKworU3RhbmRhcmQgcmVndWxhdG9yIGJpbmRpbmdzIGFyZSB1c2VkIGluc2lkZSByZWd1bGF0b3Igc3Vibm9kZXMuIENoZWNrCisgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvcmVndWxhdG9yLnR4dAorZm9yIG1vcmUgZGV0YWlscworCitFeGFtcGxlOgorCXJrODA4OiBwbWljQDFiIHsKKwkJY29tcGF0aWJsZSA9ICJyb2NrY2hpcCxyazgwOCI7CisJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJ4aW4zMmsiLCAicms4MDgtY2xrb3V0MiI7CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8wPjsKKwkJaW50ZXJydXB0cyA9IDw0IElSUV9UWVBFX0xFVkVMX0xPVz47CisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmcG1pY19pbnQgJmR2c18xICZkdnNfMj47CisJCWR2cy1ncGlvcyA9IDwmZ3BpbzcgMTEgR1BJT19BQ1RJVkVfSElHSD4sCisJCQkgICAgPCZncGlvNyAxNSBHUElPX0FDVElWRV9ISUdIPjsKKwkJcmVnID0gPDB4MWI+OworCQlyb2NrY2hpcCxzeXN0ZW0tcG93ZXItY29udHJvbGxlcjsKKwkJd2FrZXVwLXNvdXJjZTsKKwkJI2Nsb2NrLWNlbGxzID0gPDE+OworCisJCXZjYzgtc3VwcGx5ID0gPCZ2Y2NfMTg+OworCQl2Y2M5LXN1cHBseSA9IDwmdmNjX2lvPjsKKwkJdmNjMTAtc3VwcGx5ID0gPCZ2Y2NfaW8+OworCQl2Y2MxMi1zdXBwbHkgPSA8JnZjY19pbz47CisJCXZkZGlvLXN1cHBseSA9IDwmdmNjaW9fcG11PjsKKworCQlyZWd1bGF0b3JzIHsKKwkJCXZkZF9jcHU6IERDRENfUkVHMSB7CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw3NTAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDEzMDAwMDA+OworCQkJCXJlZ3VsYXRvci1uYW1lID0gInZkZF9hcm0iOworCQkJfTsKKworCQkJdmRkX2dwdTogRENEQ19SRUcyIHsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDg1MDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTI1MDAwMD47CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmRkX2dwdSI7CisJCQl9OworCisJCQl2Y2NfZGRyOiBEQ0RDX1JFRzMgeworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmNjX2RkciI7CisJCQl9OworCisJCQl2Y2NfaW86IERDRENfUkVHNCB7CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJ2Y2NfaW8iOworCQkJfTsKKworCQkJdmNjaW9fcG11OiBMRE9fUkVHMSB7CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJ2Y2Npb19wbXUiOworCQkJfTsKKworCQkJdmNjX3RwOiBMRE9fUkVHMiB7CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJ2Y2NfdHAiOworCQkJfTsKKworCQkJdmRkXzEwOiBMRE9fUkVHMyB7CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMDAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxMDAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJ2ZGRfMTAiOworCQkJfTsKKworCQkJdmNjMThfbGNkOiBMRE9fUkVHNCB7CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJ2Y2MxOF9sY2QiOworCQkJfTsKKworCQkJdmNjaW9fc2Q6IExET19SRUc1IHsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDE4MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJCXJlZ3VsYXRvci1uYW1lID0gInZjY2lvX3NkIjsKKwkJCX07CisKKwkJCXZkZDEwX2xjZDogTERPX1JFRzYgeworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTAwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTAwMDAwMD47CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmRkMTBfbGNkIjsKKwkJCX07CisKKwkJCXZjY18xODogTERPX1JFRzcgeworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTgwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTgwMDAwMD47CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmNjXzE4IjsKKwkJCX07CisKKwkJCXZjY2FfY29kZWM6IExET19SRUc4IHsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJCXJlZ3VsYXRvci1uYW1lID0gInZjY2FfY29kZWMiOworCQkJfTsKKworCQkJdmNjX3dsOiBTV0lUQ0hfUkVHMSB7CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJ2Y2Nfd2wiOworCQkJfTsKKworCQkJdmNjX2xjZDogU1dJVENIX1JFRzIgeworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmNjX2xjZCI7CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3JuNXQ2MTgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9ybjV0NjE4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Mzc3ODVhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9ybjV0NjE4LnR4dApAQCAtMCwwICsxLDM2IEBACisqIFJpY29oIFJONVQ2MTggUE1JQworCitSaWNvaCBSTjVUNjE4IGlzIGEgcG93ZXIgbWFuYWdlbWVudCBJQyB3aGljaCBpbnRlZ3JhdGVzIDMgc3RlcC1kb3duCitEQ0RDIGNvbnZlcnRlcnMsIDcgbG93LWRyb3BvdXQgcmVndWxhdG9ycywgYSBMaS1pb24gYmF0dGVyeSBjaGFyZ2VyLAorZnVlbCBnYXVnZSwgQURDLCBHUElPcyBhbmQgYSB3YXRjaGRvZyB0aW1lci4gSXQgY2FuIGJlIGNvbnRyb2xsZWQKK3Rocm91Z2ggYSBJMkMgaW50ZXJmYWNlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJyaWNvaCxybjV0NjE4IgorIC0gcmVnOiB0aGUgSTJDIHNsYXZlIGFkZHJlc3Mgb2YgdGhlIGRldmljZQorCitTdWItbm9kZXM6CisgLSByZWd1bGF0b3JzOiB0aGUgbm9kZSBpcyByZXF1aXJlZCBpZiB0aGUgcmVndWxhdG9yIGZ1bmN0aW9uYWxpdHkgaXMKKyAgIG5lZWRlZC4gVGhlIHZhbGlkIHJlZ3VsYXRvciBuYW1lcyBhcmU6IERDREMxLCBEQ0RDMiwgRENEQzMsIExETzEsCisgICBMRE8yLCBMRE8zLCBMRE80LCBMRE81LCBMRE9SVEMxIGFuZCBMRE9SVEMyLgorICAgVGhlIGNvbW1vbiBiaW5kaW5ncyBmb3IgZWFjaCBpbmRpdmlkdWFsIHJlZ3VsYXRvciBjYW4gYmUgZm91bmQgaW46CisgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3JlZ3VsYXRvci50eHQKKworRXhhbXBsZToKKworCXBtaWNAMzIgeworCQljb21wYXRpYmxlID0gInJpY29oLHJuNXQ2MTgiOworCQlyZWcgPSA8MHgzMj47CisKKwkJcmVndWxhdG9ycyB7CisJCQlEQ0RDMSB7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTA1MDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTA1MDAwMD47CisJCQl9OworCisJCQlEQ0RDMiB7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTE3NTAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTE3NTAwMD47CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3MybXBhMDEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9zMm1wYTAxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTNkM2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9zMm1wYTAxLnR4dApAQCAtMCwwICsxLDkwIEBACisKKyogU2Ftc3VuZyBTMk1QQTAxIFZvbHRhZ2UgYW5kIEN1cnJlbnQgUmVndWxhdG9yCisKK1RoZSBTYW1zdW5nIFMyTVBBMDEgaXMgYSBtdWx0aS1mdW5jdGlvbiBkZXZpY2Ugd2hpY2ggaW5jbHVkZXMgaGlnaAorZWZmaWNpZW5jeSBidWNrIGNvbnZlcnRlcnMgaW5jbHVkaW5nIER1YWwtUGhhc2UgYnVjayBjb252ZXJ0ZXIsIHZhcmlvdXMgTERPcywKK2FuZCBhbiBSVEMuIEl0IGlzIGludGVyZmFjZWQgdG8gdGhlIGhvc3QgY29udHJvbGxlciB1c2luZyBhbiBJMkMgaW50ZXJmYWNlLgorRWFjaCBzdWItYmxvY2sgaXMgYWRkcmVzc2VkIGJ5IHRoZSBob3N0IHN5c3RlbSB1c2luZyBkaWZmZXJlbnQgSTJDIHNsYXZlCithZGRyZXNzZXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAic2Ftc3VuZyxzMm1wYTAxLXBtaWMiLgorLSByZWc6IFNwZWNpZmllcyB0aGUgSTJDIHNsYXZlIGFkZHJlc3Mgb2YgdGhlIFBNSUMgYmxvY2suIEl0IHNob3VsZCBiZSAweDY2LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBpbnRlcnJ1cHQtcGFyZW50OiBTcGVjaWZpZXMgdGhlIHBoYW5kbGUgb2YgdGhlIGludGVycnVwdCBjb250cm9sbGVyIHRvIHdoaWNoCisgIHRoZSBpbnRlcnJ1cHRzIGZyb20gczJtcGEwMSBhcmUgZGVsaXZlcmVkIHRvLgorLSBpbnRlcnJ1cHRzOiBBbiBpbnRlcnJ1cHQgc3BlY2lmaWVyIGZvciB0aGUgc29sZSBpbnRlcnJ1cHQgZ2VuZXJhdGVkIGJ5IHRoZQorICBkZXZpY2UuCisKK09wdGlvbmFsIG5vZGVzOgorLSByZWd1bGF0b3JzOiBUaGUgcmVndWxhdG9ycyBvZiBzMm1wYTAxIHRoYXQgaGF2ZSB0byBiZSBpbnN0YW50aWF0ZWQgc2hvdWxkIGJlCisgIGluY2x1ZGVkIGluIGEgc3ViLW5vZGUgbmFtZWQgJ3JlZ3VsYXRvcnMnLiBSZWd1bGF0b3Igbm9kZXMgYW5kIGNvbnN0cmFpbnRzCisgIGluY2x1ZGVkIGluIHRoaXMgc3ViLW5vZGUgdXNlIHRoZSBzdGFuZGFyZCByZWd1bGF0b3IgYmluZGluZ3Mgd2hpY2ggYXJlCisgIGRvY3VtZW50ZWQgZWxzZXdoZXJlLgorCitQcm9wZXJ0aWVzIGZvciBCVUNLIHJlZ3VsYXRvciBub2RlczoKKy0gcmVndWxhdG9yLXJhbXAtZGVsYXk6IHJhbXAgZGVsYXkgaW4gdVYvdXMuIE1heSBiZSA2MjUwLCAxMjUwMAorICAoZGVmYXVsdCksIDI1MDAwLCBvciA1MDAwMC4gTWF5IGJlIDAgZm9yIGRpc2FibGluZyB0aGUgcmFtcCBkZWxheSBvbgorICBCVUNLezEsMiwzLDR9LgorCisgSW4gdGhlIGFic2VuY2Ugb2YgdGhlIHJlZ3VsYXRvci1yYW1wLWRlbGF5IHByb3BlcnR5LCB0aGUgZGVmYXVsdCByYW1wCisgZGVsYXkgd2lsbCBiZSB1c2VkLgorCisgIE5PVEU6IFNvbWUgQlVDS3Mgc2hhcmUgdGhlIHJhbXAgcmF0ZSBzZXR0aW5nIGkuZS4gc2FtZSByYW1wIHZhbHVlIHdpbGwgYmUgc2V0CisgIGZvciBhIHBhcnRpY3VsYXIgZ3JvdXAgb2YgQlVDS3MuIFNvIHByb3ZpZGUgc2FtZSByZWd1bGF0b3ItcmFtcC1kZWxheT08dmFsdWU+LgorCisgIFRoZSBmb2xsb3dpbmcgQlVDS3Mgc2hhcmUgcmFtcCBzZXR0aW5nczoKKyAgKiAxIGFuZCA2CisgICogMiBhbmQgNAorICAqIDgsIDksIGFuZCAxMAorCitUaGUgZm9sbG93aW5nIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHJlZ3VsYXRvcnMgdGhhdCB0aGUgczJtcGEwMSBQTUlDIGJsb2NrCitzdXBwb3J0cy4gTm90ZTogVGhlICduJyBpbiBMRE9uIGFuZCBCVUNLbiByZXByZXNlbnRzIHRoZSBMRE8gb3IgQlVDSyBudW1iZXIKK2FzIHBlciB0aGUgZGF0YXNoZWV0IG9mIHMybXBhMDEuCisKKwktIExET24KKwkJICAtIHZhbGlkIHZhbHVlcyBmb3IgbiBhcmUgMSB0byAyNgorCQkgIC0gRXhhbXBsZTogTERPMSwgTEQwMiwgTERPMjYKKwktIEJVQ0tuCisJCSAgLSB2YWxpZCB2YWx1ZXMgZm9yIG4gYXJlIDEgdG8gMTAuCisJCSAgLSBFeGFtcGxlOiBCVUNLMSwgQlVDSzIsIEJVQ0s5CisKK0V4YW1wbGU6CisKKwlzMm1wYTAxX3BtaWNANjYgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsczJtcGEwMS1wbWljIjsKKwkJcmVnID0gPDB4NjY+OworCisJCXJlZ3VsYXRvcnMgeworCQkJbGRvMV9yZWc6IExETzEgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gIlZERF9BTElWRSI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTAwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTAwMDAwMD47CisJCQl9OworCisJCQlsZG8yX3JlZzogTERPMiB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAiVkREUV9NTUMyIjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwyODAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwyODAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJYnVjazFfcmVnOiBCVUNLMSB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmRkX21pZiI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8OTUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxMzUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJfTsKKworCQkJYnVjazJfcmVnOiBCVUNLMiB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmRkX2FybSI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8OTUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxMzUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXJlZ3VsYXRvci1yYW1wLWRlbGF5ID0gPDUwMDAwPjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvczJtcHMxMS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3MybXBzMTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5Yjk0YzkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3MybXBzMTEudHh0CkBAIC0wLDAgKzEsMTUzIEBACisKKyogU2Ftc3VuZyBTMk1QUzExLzEzLzE0LzE1IGFuZCBTMk1QVTAyIFZvbHRhZ2UgYW5kIEN1cnJlbnQgUmVndWxhdG9yCisKK1RoZSBTYW1zdW5nIFMyTVBTMTEgaXMgYSBtdWx0aS1mdW5jdGlvbiBkZXZpY2Ugd2hpY2ggaW5jbHVkZXMgdm9sdGFnZSBhbmQKK2N1cnJlbnQgcmVndWxhdG9ycywgUlRDLCBjaGFyZ2VyIGNvbnRyb2xsZXIgYW5kIG90aGVyIHN1Yi1ibG9ja3MuIEl0IGlzCitpbnRlcmZhY2VkIHRvIHRoZSBob3N0IGNvbnRyb2xsZXIgdXNpbmcgYW4gSTJDIGludGVyZmFjZS4gRWFjaCBzdWItYmxvY2sgaXMKK2FkZHJlc3NlZCBieSB0aGUgaG9zdCBzeXN0ZW0gdXNpbmcgZGlmZmVyZW50IEkyQyBzbGF2ZSBhZGRyZXNzZXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZworCS0gInNhbXN1bmcsczJtcHMxMS1wbWljIgorCS0gInNhbXN1bmcsczJtcHMxMy1wbWljIgorCS0gInNhbXN1bmcsczJtcHMxNC1wbWljIgorCS0gInNhbXN1bmcsczJtcHMxNS1wbWljIgorCS0gInNhbXN1bmcsczJtcHUwMi1wbWljIi4KKy0gcmVnOiBTcGVjaWZpZXMgdGhlIEkyQyBzbGF2ZSBhZGRyZXNzIG9mIHRoZSBwbWljIGJsb2NrLiBJdCBzaG91bGQgYmUgMHg2Ni4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gaW50ZXJydXB0LXBhcmVudDogU3BlY2lmaWVzIHRoZSBwaGFuZGxlIG9mIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB0byB3aGljaAorICB0aGUgaW50ZXJydXB0cyBmcm9tIHMybXBzMTEgYXJlIGRlbGl2ZXJlZCB0by4KKy0gaW50ZXJydXB0czogSW50ZXJydXB0IHNwZWNpZmllcnMgZm9yIGludGVycnVwdCBzb3VyY2VzLgorLSBzYW1zdW5nLHMybXBzMTEtd3JzdGJpLWdyb3VuZDogSW5kaWNhdGVzIHRoYXQgV1JTVEJJIHBpbiBvZiBQTUlDIGlzIHB1bGxlZAorICBkb3duLiBXaGVuIHRoZSBzeXN0ZW0gaXMgc3VzcGVuZGVkIGl0IHdpbGwgYWx3YXlzIGdvIGRvd24gdGh1cyB0cmlnZ2VycmluZworICB1bndhbnRlZCBidWNrIHdhcm0gcmVzZXQgKHNldHRpbmcgYnVjayB2b2x0YWdlcyB0byBkZWZhdWx0IHZhbHVlcykuCistIHNhbXN1bmcsczJtcHMxMS1hY29rYi1ncm91bmQ6IEluZGljYXRlcyB0aGF0IEFDT0tCIHBpbiBvZiBTMk1QUzExIFBNSUMgaXMKKyAgY29ubmVjdGVkIHRvIHRoZSBncm91bmQgc28gdGhlIFBNSUMgbXVzdCBtYW51YWxseSBzZXQgUFdSSE9MRCBiaXQgaW4gQ1RSTDEKKyAgcmVnaXN0ZXIgdG8gdHVybiBvZmYgdGhlIHBvd2VyLiBVc3VhbGx5IHRoZSBBQ09LQiBpcyBwdWxsZWQgdXAgdG8gVkJBVFQgc28KKyAgd2hlbiBQV1JIT0xEIHBpbiBnb2VzIGxvdywgdGhlIHJpc2luZyBBQ09LQiB3aWxsIHRyaWdnZXIgcG93ZXIgb2ZmLgorCitPcHRpb25hbCBub2RlczoKKy0gY2xvY2tzOiBzMm1wczExLCBzMm1wczEzLCBzMm1wczE1IGFuZCBzNW04NzY3IHByb3ZpZGUgdGhyZWUoQVAvQ1AvQlQpIGJ1ZmZlcmVkIDMyLjc2OAorICBLSHogb3V0cHV0cywgc28gdG8gcmVnaXN0ZXIgdGhlc2UgYXMgY2xvY2tzIHdpdGggY29tbW9uIGNsb2NrIGZyYW1ld29yaworICBpbnN0YW50aWF0ZSBhIHN1Yi1ub2RlIG5hbWVkICJjbG9ja3MiLiBJdCB1c2VzIHRoZSBjb21tb24gY2xvY2sgYmluZGluZworICBkb2N1bWVudGVkIGluIDoKKyAgW0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHRdCisgIFRoZSBzMm1wczE0IHByb3ZpZGVzIHR3byAoQVAvQlQpIGJ1ZmZlcmVkIDMyLjc2OCBLSHogb3V0cHV0cy4KKyAgLSAjY2xvY2stY2VsbHM6IHNob3VsZCBiZSAxLgorCisgIC0gVGhlIGZvbGxvd2luZyBpcyB0aGUgbGlzdCBvZiBjbG9ja3MgZ2VuZXJhdGVkIGJ5IHRoZSBjb250cm9sbGVyLiBFYWNoIGNsb2NrCisgICAgaXMgYXNzaWduZWQgYW4gaWRlbnRpZmllciBhbmQgY2xpZW50IG5vZGVzIHVzZSB0aGlzIGlkZW50aWZpZXIgdG8gc3BlY2lmeQorICAgIHRoZSBjbG9jayB3aGljaCB0aGV5IGNvbnN1bWUuCisgICAgQ2xvY2sgICAgICAgICAgICAgICBJRCAgICAgICAgICAgRGV2aWNlcworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAzMktoekFQCQkwICAgICAgICAgICAgUzJNUFMxMSwgUzJNUFMxMywgUzJNUFMxNCwgUzJNUFMxNSwgUzVNODc2NworICAgIDMyS2h6Q1AJCTEgICAgICAgICAgICBTMk1QUzExLCBTMk1QUzEzLCBTMk1QUzE1LCBTNU04NzY3CisgICAgMzJLaHpCVAkJMiAgICAgICAgICAgIFMyTVBTMTEsIFMyTVBTMTMsIFMyTVBTMTQsIFMyTVBTMTUsIFM1TTg3NjcKKworICAtIGNvbXBhdGlibGU6IFNob3VsZCBiZSBvbmUgb2Y6ICJzYW1zdW5nLHMybXBzMTEtY2xrIiwgInNhbXN1bmcsczJtcHMxMy1jbGsiLAorCQkic2Ftc3VuZyxzMm1wczE0LWNsayIsICJzYW1zdW5nLHM1bTg3NjctY2xrIgorICAgIFRoZSBzMm1zcDE1IHVzZXMgdGhlIHNhbWUgY29tcGF0aWJsZSBhcyBzMm1wczEzLCBhcyBib3RoIHByb3ZpZGVzIHNpbWlsYXIgY2xvY2tzLgorCistIHJlZ3VsYXRvcnM6IFRoZSByZWd1bGF0b3JzIG9mIHMybXBzMTEgdGhhdCBoYXZlIHRvIGJlIGluc3RhbnRpYXRlZCBzaG91bGQgYmUKK2luY2x1ZGVkIGluIGEgc3ViLW5vZGUgbmFtZWQgJ3JlZ3VsYXRvcnMnLiBSZWd1bGF0b3Igbm9kZXMgaW5jbHVkZWQgaW4gdGhpcworc3ViLW5vZGUgc2hvdWxkIGJlIG9mIHRoZSBmb3JtYXQgYXMgbGlzdGVkIGJlbG93LgorCisJcmVndWxhdG9yX25hbWUgeworCQlbc3RhbmRhcmQgcmVndWxhdG9yIGNvbnN0cmFpbnRzLi4uLl07CisJfTsKKworIHJlZ3VsYXRvci1yYW1wLWRlbGF5IGZvciBCVUNLcyA9IFs2MjUwLzEyNTAwLzI1MDAwKGRlZmF1bHQpLzUwMDAwXSB1Vi91cworCisgQlVDS1syLzMvNC82XSBzdXBwb3J0cyBkaXNhYmxpbmcgcmFtcCBkZWxheSBvbiBoYXJkd2FyZSwgc28gZXhwbGljaXRseQorIHJlZ3VsYXRvci1yYW1wLWRlbGF5ID0gPDA+IGNhbiBiZSB1c2VkIGZvciB0aGVtIHRvIGRpc2FibGUgcmFtcCBkZWxheS4KKyBJbiB0aGUgYWJzZW5jZSBvZiB0aGUgcmVndWxhdG9yLXJhbXAtZGVsYXkgcHJvcGVydHksIHRoZSBkZWZhdWx0IHJhbXAKKyBkZWxheSB3aWxsIGJlIHVzZWQuCisKK05PVEU6IFNvbWUgQlVDS3Mgc2hhcmUgdGhlIHJhbXAgcmF0ZSBzZXR0aW5nIGkuZS4gc2FtZSByYW1wIHZhbHVlIHdpbGwgYmUgc2V0Citmb3IgYSBwYXJ0aWN1bGFyIGdyb3VwIG9mIEJVQ0tzLiBTbyBwcm92aWRlIHNhbWUgcmVndWxhdG9yLXJhbXAtZGVsYXk8dmFsdWU+LgorR3JvdXBpbmcgb2YgQlVDS3Mgc2hhcmluZyByYW1wIHJhdGUgc2V0dGluZyBpcyBhcyBmb2xsb3cgOiBCVUNLWzEsIDZdLAorQlVDS1szLCA0XSwgYW5kIEJVQ0tbNywgOCwgMTBdCisKK09uIFMyTVBTMTQgdGhlIExETzEwLCBMRE8xMSBhbmQgTERPMTIgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gZXh0ZXJuYWwgY29udHJvbAorb3ZlciBHUElPLiBUbyB0dXJuIHRoaXMgZmVhdHVyZSBvbiB0aGlzIHByb3BlcnR5IG11c3QgYmUgYWRkZWQgdG8gdGhlIHJlZ3VsYXRvcgorc3ViLW5vZGU6CisJLSBzYW1zdW5nLGV4dC1jb250cm9sLWdwaW9zOiBHUElPIHNwZWNpZmllciBmb3Igb25lIEdQSU8KKwkJY29udHJvbGxpbmcgdGhpcyByZWd1bGF0b3IgKGVuYWJsZS9kaXNhYmxlKTsKK0V4YW1wbGU6CisJTERPMTIgeworCQlyZWd1bGF0b3ItbmFtZSA9ICJWX0VNTUNfMi44ViI7CisJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDI4MDAwMDA+OworCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwyODAwMDAwPjsKKwkJc2Ftc3VuZyxleHQtY29udHJvbC1ncGlvcyA9IDwmZ3BrMCAyIDA+OworCX07CisKKworVGhlIHJlZ3VsYXRvciBjb25zdHJhaW50cyBpbnNpZGUgdGhlIHJlZ3VsYXRvciBub2RlcyB1c2UgdGhlIHN0YW5kYXJkIHJlZ3VsYXRvcgorYmluZGluZ3Mgd2hpY2ggYXJlIGRvY3VtZW50ZWQgZWxzZXdoZXJlLgorCitUaGUgZm9sbG93aW5nIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHJlZ3VsYXRvcnMgdGhhdCB0aGUgczJtcHMxMSBwbWljIGJsb2NrCitzdXBwb3J0cy4gTm90ZTogVGhlICduJyBpbiBMRE9uIGFuZCBCVUNLbiByZXByZXNlbnRzIHRoZSBMRE8gb3IgQlVDSyBudW1iZXIKK2FzIHBlciB0aGUgZGF0YXNoZWV0IG9mIHMybXBzMTEuCisKKwktIExET24KKwkJICAtIHZhbGlkIHZhbHVlcyBmb3IgbiBhcmU6CisJCQktIFMyTVBTMTE6IDEgdG8gMzgKKwkJCS0gUzJNUFMxMzogMSB0byA0MAorCQkJLSBTMk1QUzE0OiAxIHRvIDI1CisJCQktIFMyTVBTMTU6IDEgdG8gMjcKKwkJCS0gUzJNUFUwMjogMSB0byAyOAorCQkgIC0gRXhhbXBsZTogTERPMSwgTERPMiwgTERPMjgKKwktIEJVQ0tuCisJCSAgLSB2YWxpZCB2YWx1ZXMgZm9yIG4gYXJlOgorCQkJLSBTMk1QUzExOiAxIHRvIDEwCisJCQktIFMyTVBTMTM6IDEgdG8gMTAKKwkJCS0gUzJNUFMxNDogMSB0byA1CisJCQktIFMyTVBTMTU6IDEgdG8gMTAKKwkJCS0gUzJNUFUwMjogMSB0byA3CisJCSAgLSBFeGFtcGxlOiBCVUNLMSwgQlVDSzIsIEJVQ0s5CisKK0V4YW1wbGU6CisKKwlzMm1wczExX3BtaWNANjYgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsczJtcHMxMS1wbWljIjsKKwkJcmVnID0gPDB4NjY+OworCisJCXMybV9vc2M6IGNsb2NrcyB7CisJCQljb21wYXRpYmxlID0gInNhbXN1bmcsczJtcHMxMS1jbGsiOworCQkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQkJY2xvY2stb3V0cHV0LW5hbWVzID0gInh4IiwgInl5IiwgInp6IjsKKwkJfTsKKworCQlyZWd1bGF0b3JzIHsKKwkJCWxkbzFfcmVnOiBMRE8xIHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJWRERfQUJCXzMuM1YiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJfTsKKworCQkJbGRvMl9yZWc6IExETzIgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gIlZERF9BTElWRV8xLjFWIjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMTAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxMTAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJYnVjazFfcmVnOiBCVUNLMSB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmRkX21pZiI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8OTUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxMzUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJfTsKKworCQkJYnVjazJfcmVnOiBCVUNLMiB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmRkX2FybSI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8OTUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxMzUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXJlZ3VsYXRvci1yYW1wLWRlbGF5ID0gPDUwMDAwPjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvc2t5ODE0NTIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9za3k4MTQ1Mi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTExNzY0YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvc2t5ODE0NTIudHh0CkBAIC0wLDAgKzEsMzUgQEAKK1NLWTgxNDUyIGJpbmRpbmdzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUJOiBNdXN0IGJlICJza3l3b3Jrcyxza3k4MTQ1MiIKKy0gcmVnCQk6IEkyQyBzbGF2ZSBhZGRyZXNzCisKK1JlcXVpcmVkIGNoaWxkIG5vZGVzOgorLSBiYWNrbGlnaHQJOiBjb250YWluZXIgbm9kZSBmb3IgYmFja2xpZ2h0IGZvbGxvd2luZyB0aGUgYmluZGluZworCQlpbiBsZWRzL2JhY2tsaWdodC9za3k4MTQ1Mi1iYWNrbGlnaHQudHh0CistIHJlZ3VsYXRvcgk6IGNvbnRhaW5lciBub2RlIGZvciByZWd1bGF0b3JzIGZvbGxvd2luZyB0aGUgYmluZGluZworCQlpbiByZWd1bGF0b3Ivc2t5ODE0NTItcmVndWxhdG9yLnR4dAorCitFeGFtcGxlOgorCisJc2t5ODE0NTJAMmMgeworCQljb21wYXRpYmxlID0gInNreXdvcmtzLHNreTgxNDUyIjsKKwkJcmVnID0gPDB4MmM+OworCisJCWJhY2tsaWdodCB7CisJCQljb21wYXRpYmxlID0gInNreXdvcmtzLHNreTgxNDUyLWJhY2tsaWdodCI7CisJCQluYW1lID0gInB3bS1iYWNrbGlnaHQiOworCQkJbGVkLXNvdXJjZXMgPSA8MCAxIDIgMyA2PjsKKwkJCXNreXdvcmtzLGlnbm9yZS1wd207CisJCQlza3l3b3JrcyxwaGFzZS1zaGlmdDsKKwkJCXNreXdvcmtzLGN1cnJlbnQtbGltaXQgPSA8MjMwMD47CisJCX07CisKKwkJcmVndWxhdG9yIHsKKwkJCWxvdXQgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gInNreTgxNDUyLWxvdXQiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDQ1MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDgwMDAwMDA+OworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9zdG1wZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3N0bXBlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmI2OGJmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9zdG1wZS50eHQKQEAgLTAsMCArMSwyOSBAQAorKiBTVCBNaWNyb2VsZWN0cm9uaWNzIFNUTVBFIE11bHRpLUZ1bmN0aW9uYWwgRGV2aWNlCisKK1NUTVBFIGlzIGFuIE1GRCBkZXZpY2Ugd2hpY2ggbWF5IGV4cG9zZSB0aGUgZm9sbG93aW5nIGluYnVpbHQgZGV2aWNlczogZ3BpbywKK2tleXBhZCwgdG91Y2hzY3JlZW4sIGFkYywgcHdtLCByb3RhdG9yLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZSAgICAgICAgICAgICAgICAgICA6ICJzdCxzdG1wZVs2MTB8ODAxfDgxMXwxNjAxfDI0MDF8MjQwM10iCisgLSByZWcgICAgICAgICAgICAgICAgICAgICAgICAgIDogSTJDL1NQSSBhZGRyZXNzIG9mIHRoZSBkZXZpY2UKKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAtIGludGVycnVwdHMgICAgICAgICAgICAgICAgICAgOiBUaGUgaW50ZXJydXB0IG91dHB1dHMgZnJvbSB0aGUgY29udHJvbGxlcgorIC0gaW50ZXJydXB0LWNvbnRyb2xsZXIgICAgICAgICA6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlcgorIC0gaW50ZXJydXB0LXBhcmVudCAgICAgICAgICAgICA6IFNwZWNpZmllcyB3aGljaCBJUlEgY29udHJvbGxlciB3ZSdyZSBjb25uZWN0ZWQgdG8KKyAtIHdha2V1cC1zb3VyY2UgICAgICAgICAgICAgICAgOiBNYXJrcyB0aGUgaW5wdXQgZGV2aWNlIGFzIHdha2FibGUKKyAtIHN0LGF1dG9zbGVlcC10aW1lb3V0ICAgICAgICAgOiBWYWxpZCBlbnRyaWVzIChtcyk7IDQsIDE2LCAzMiwgNjQsIDEyOCwgMjU2LCA1MTIgYW5kIDEwMjQKKyAtIGlycS1ncGlvICAgICAgICAgICAgICAgICAgICAgOiBJZiBwcmVzZW50LCB3aGljaCBHUElPIHRvIHVzZSBmb3IgZXZlbnQgSVJRCisKK0V4YW1wbGU6CisKKwlzdG1wZTE2MDE6IHN0bXBlMTYwMUA0MCB7CisJCWNvbXBhdGlibGUgPSAic3Qsc3RtcGUxNjAxIjsKKwkJcmVnID0gPDB4NDA+OworCQlpbnRlcnJ1cHRzID0gPDI2IDB4ND47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW82PjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisKKwkJd2FrZXVwLXNvdXJjZTsKKwkJc3QsYXV0b3NsZWVwLXRpbWVvdXQgPSA8MTAyND47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvc3VuNmktcHJjbS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3N1bjZpLXByY20udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzYzVhNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3N1bjZpLXByY20udHh0CkBAIC0wLDAgKzEsNTkgQEAKKyogQWxsd2lubmVyIFBSQ00gKFBvd2VyL1Jlc2V0L0Nsb2NrIE1hbmFnZW1lbnQpIE11bHRpLUZ1bmN0aW9uYWwgRGV2aWNlCisKK1BSQ00gaXMgYW4gTUZEIGRldmljZSBleHBvc2luZyBzZXZlcmFsIFBvd2VyIE1hbmFnZW1lbnQgcmVsYXRlZCBkZXZpY2VzCisobGlrZSBjbGtzIGFuZCByZXNldCBjb250cm9sbGVycykuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiAiYWxsd2lubmVyLHN1bjZpLWEzMS1wcmNtIiBvciAiYWxsd2lubmVyLHN1bjhpLWEyMy1wcmNtIgorIC0gcmVnOiBUaGUgUFJDTSByZWdpc3RlcnMgcmFuZ2UKKworVGhlIHByY20gbm9kZSBtYXkgY29udGFpbiBzZXZlcmFsIHN1YmRldmljZXMgZGVmaW5pdGlvbnM6CisgLSBzZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Nsay9zdW54aS50eHQgZm9yIGNsb2NrIGRldmljZXMKKyAtIHNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvcmVzZXQvYWxsd2lubmVyLHN1bnhpLWNsb2NrLXJlc2V0LnR4dCBmb3IgcmVzZXQKKyAgIGNvbnRyb2xsZXIgZGV2aWNlcworCisKK0V4YW1wbGU6CisKKwlwcmNtOiBwcmNtQDAxZjAxNDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNmktYTMxLXByY20iOworCQlyZWcgPSA8MHgwMWYwMTQwMCAweDIwMD47CisKKwkJLyogUHV0IHN1YmRldmljZXMgaGVyZSAqLworCQlhcjEwMDogYXIxMDBfY2xrIHsKKwkJCWNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjZpLWEzMS1hcjEwMC1jbGsiOworCQkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQkJY2xvY2tzID0gPCZvc2MzMms+LCA8Jm9zYzI0TT4sIDwmcGxsNj4sIDwmcGxsNj47CisJCX07CisKKwkJYWhiMDogYWhiMF9jbGsgeworCQkJY29tcGF0aWJsZSA9ICJmaXhlZC1mYWN0b3ItY2xvY2siOworCQkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQkJY2xvY2stZGl2ID0gPDE+OworCQkJY2xvY2stbXVsdCA9IDwxPjsKKwkJCWNsb2NrcyA9IDwmYXIxMDBfZGl2PjsKKwkJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJhaGIwIjsKKwkJfTsKKworCQlhcGIwOiBhcGIwX2NsayB7CisJCQljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW42aS1hMzEtYXBiMC1jbGsiOworCQkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQkJY2xvY2tzID0gPCZhaGIwPjsKKwkJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJhcGIwIjsKKwkJfTsKKworCQlhcGIwX2dhdGVzOiBhcGIwX2dhdGVzX2NsayB7CisJCQljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW42aS1hMzEtYXBiMC1nYXRlcy1jbGsiOworCQkJI2Nsb2NrLWNlbGxzID0gPDE+OworCQkJY2xvY2tzID0gPCZhcGIwPjsKKwkJCWNsb2NrLW91dHB1dC1uYW1lcyA9ICJhcGIwX3BpbyIsICJhcGIwX2lyIiwKKwkJCQkJImFwYjBfdGltZXIwMSIsICJhcGIwX3Ayd2kiLAorCQkJCQkiYXBiMF91YXJ0IiwgImFwYjBfMXdpcmUiLAorCQkJCQkiYXBiMF9pMmMiOworCQl9OworCisJCWFwYjBfcnN0OiBhcGIwX3JzdCB7CisJCQljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW42aS1hMzEtY2xvY2stcmVzZXQiOworCQkJI3Jlc2V0LWNlbGxzID0gPDE+OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3N5c2Nvbi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3N5c2Nvbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU4MTUwYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvc3lzY29uLnR4dApAQCAtMCwwICsxLDIwIEBACisqIFN5c3RlbSBDb250cm9sbGVyIFJlZ2lzdGVycyBSL1cgZHJpdmVyCisKK1N5c3RlbSBjb250cm9sbGVyIG5vZGUgcmVwcmVzZW50cyBhIHJlZ2lzdGVyIHJlZ2lvbiBjb250YWluaW5nIGEgc2V0CitvZiBtaXNjZWxsYW5lb3VzIHJlZ2lzdGVycy4gVGhlIHJlZ2lzdGVycyBhcmUgbm90IGNvaGVzaXZlIGVub3VnaCB0bworcmVwcmVzZW50IGFzIGFueSBzcGVjaWZpYyB0eXBlIG9mIGRldmljZS4gVGhlIHR5cGljYWwgdXNlLWNhc2UgaXMgZm9yCitzb21lIG90aGVyIG5vZGUncyBkcml2ZXIsIG9yIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUsIHRvIGFjcXVpcmUgYQorcmVmZXJlbmNlIHRvIHRoZSBzeXNjb24gbm9kZSAoZS5nLiBieSBwaGFuZGxlLCBub2RlIHBhdGgsIG9yIHNlYXJjaAordXNpbmcgYSBzcGVjaWZpYyBjb21wYXRpYmxlIHZhbHVlKSwgaW50ZXJyb2dhdGUgdGhlIG5vZGUgKG9yIGFzc29jaWF0ZWQKK09TIGRyaXZlcikgdG8gZGV0ZXJtaW5lIHRoZSBsb2NhdGlvbiBvZiB0aGUgcmVnaXN0ZXJzLCBhbmQgYWNjZXNzIHRoZQorcmVnaXN0ZXJzIGRpcmVjdGx5LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgY29udGFpbiAic3lzY29uIi4KKy0gcmVnOiB0aGUgcmVnaXN0ZXIgcmVnaW9uIGNhbiBiZSBhY2Nlc3NlZCBmcm9tIHN5c2NvbgorCitFeGFtcGxlczoKK2dwcjogaW9tdXhjLWdwckAwMjBlMDAwMCB7CisJY29tcGF0aWJsZSA9ICJmc2wsaW14NnEtaW9tdXhjLWdwciIsICJzeXNjb24iOworCXJlZyA9IDwweDAyMGUwMDAwIDB4Mzg+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvdGMzNTg5eC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3RjMzU4OXgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzZmMyZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3RjMzU4OXgudHh0CkBAIC0wLDAgKzEsMTA4IEBACisqIFRvc2hpYmEgVEMzNTg5eCBtdWx0aS1wdXJwb3NlIGV4cGFuZGVyCisKK1RoZSBUb3NoaWJhIFRDMzU4OXggc2VyaWVzIGFyZSBJMkMtYmFzZWQgTUZEIGRldmljZXMgd2hpY2ggbWF5IGV4cG9zZSB0aGUKK2ZvbGxvd2luZyBidWlsdC1pbiBkZXZpY2VzOiBncGlvLCBrZXlwYWQsIHJvdGF0b3IgKHZpYnJhdG9yKSwgUFdNIChmb3IKK2UuZy4gTEVEcyBvciB2aWJyYXRvcnMpIFRoZSBpbmNsdWRlZCBtb2RlbHMgYXJlOgorCistIFRDMzU4OTAKKy0gVEMzNTg5MgorLSBUQzM1ODkzCistIFRDMzU4OTQKKy0gVEMzNTg5NQorLSBUQzM1ODk2CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlIDogbXVzdCBiZSAidG9zaGliYSx0YzM1ODkwIiwgInRvc2hpYmEsdGMzNTg5MiIsICJ0b3NoaWJhLHRjMzU4OTMiLAorICAgInRvc2hpYmEsdGMzNTg5NCIsICJ0b3NoaWJhLHRjMzU4OTUiIG9yICJ0b3NoaWJhLHRjMzU4OTYiCisgLSByZWcgOiBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlCisgLSBpbnRlcnJ1cHQtcGFyZW50IDogc3BlY2lmaWVzIHdoaWNoIElSUSBjb250cm9sbGVyIHdlJ3JlIGNvbm5lY3RlZCB0bworIC0gaW50ZXJydXB0cyA6IHRoZSBpbnRlcnJ1cHQgb24gdGhlIHBhcmVudCB0aGUgY29udHJvbGxlciBpcyBjb25uZWN0ZWQgdG8KKyAtIGludGVycnVwdC1jb250cm9sbGVyIDogbWFya3MgdGhlIGRldmljZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyCisgLSAjaW50ZXJydXB0LWNlbGxzIDogc2hvdWxkIGJlIDwxPiwgdGhlIGZpcnN0IGNlbGwgaXMgdGhlIElSUSBvZmZzZXQgb24gdGhpcworICAgVEMzNTg5eCBpbnRlcnJ1cHQgY29udHJvbGxlci4KKworT3B0aW9uYWwgbm9kZXM6CisKKy0gR1BJTworICBUaGlzIEdQSU8gbW9kdWxlIGluc2lkZSB0aGUgVEMzNTg5eCBoYXMgMjQgKFRDMzU4OTAsIFRDMzU4OTIpIG9yIDIwCisgIChvdGhlciBtb2RlbHMpIEdQSU8gbGluZXMuCisgLSBjb21wYXRpYmxlIDogbXVzdCBiZSAidG9zaGliYSx0YzM1ODl4LWdwaW8iCisgLSBpbnRlcnJ1cHRzIDogaW50ZXJydXB0IG9uIHRoZSBwYXJlbnQsIHdoaWNoIG11c3QgYmUgdGhlIHRjMzU4OXggTUZEIGRldmljZQorIC0gaW50ZXJydXB0LWNvbnRyb2xsZXIgOiBtYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIKKyAtICNpbnRlcnJ1cHQtY2VsbHMgOiBzaG91bGQgYmUgPDI+LCB0aGUgZmlyc3QgY2VsbCBpcyB0aGUgSVJRIG9mZnNldCBvbiB0aGlzCisgICBUQzM1ODl4IEdQSU8gaW50ZXJydXB0IGNvbnRyb2xsZXIsIHRoZSBzZWNvbmQgY2VsbCBpcyB0aGUgaW50ZXJydXB0IGZsYWdzCisgICBpbiBhY2NvcmRhbmNlIHdpdGggPGR0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oPi4gVGhlIGZvbGxvd2luZworICAgZmxhZ3MgYXJlIHZhbGlkOgorICAgLSBJUlFfVFlQRV9MRVZFTF9MT1cKKyAgIC0gSVJRX1RZUEVfTEVWRUxfSElHSAorICAgLSBJUlFfVFlQRV9FREdFX1JJU0lORworICAgLSBJUlFfVFlQRV9FREdFX0ZBTExJTkcKKyAgIC0gSVJRX1RZUEVfRURHRV9CT1RICisgLSBncGlvLWNvbnRyb2xsZXIgOiBtYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYSBHUElPIGNvbnRyb2xsZXIKKyAtICNncGlvLWNlbGxzIDogc2hvdWxkIGJlIDwyPiwgdGhlIGZpcnN0IGNlbGwgaXMgdGhlIEdQSU8gb2Zmc2V0IG9uIHRoaXMKKyAgIEdQSU8gY29udHJvbGxlciwgdGhlIHNlY29uZCBjZWxsIGlzIHRoZSBmbGFncy4KKworLSBLZXlwYWQKKyAgVGhpcyBrZXlwYWQgaXMgdGhlIHNhbWUgb24gYWxsIHZhcmlhbnRzLCBzdXBwb3J0aW5nIHVwIHRvIDk2IGRpZmZlcmVudAorICBrZXlzLiBUaGUgbGludXgtc3BlY2lmaWMgcHJvcGVydGllcyBhcmUgbW9kZWxlZCBvbiB0aG9zZSBhbHJlYWR5IGV4aXN0aW5nCisgIGluIG90aGVyIGlucHV0IGRyaXZlcnMuCisgLSBjb21wYXRpYmxlIDogbXVzdCBiZSAidG9zaGliYSx0YzM1ODl4LWtleXBhZCIKKyAtIGRlYm91bmNlLWRlbGF5LW1zIDogZGVib3VuY2UgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzCisgLSBrZXlwYWQsbnVtLXJvd3MgOiBudW1iZXIgb2Ygcm93cyBpbiB0aGUgbWF0cml4LCBzZWUKKyAgIGJpbmRpbmdzL2lucHV0L21hdHJpeC1rZXltYXAudHh0CisgLSBrZXlwYWQsbnVtLWNvbHVtbnMgOiBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgbWF0cml4LCBzZWUKKyAgIGJpbmRpbmdzL2lucHV0L21hdHJpeC1rZXltYXAudHh0CisgLSBsaW51eCxrZXltYXA6IHRoZSBkZWZpbml0aW9uIGNhbiBiZSBmb3VuZCBpbgorICAgYmluZGluZ3MvaW5wdXQvbWF0cml4LWtleW1hcC50eHQKKyAtIGxpbnV4LG5vLWF1dG9yZXBlYXQ6IGRvIG5vIGVuYWJsZSBhdXRvcmVwZWF0IGZlYXR1cmUuCisgLSB3YWtldXAtc291cmNlOiB1c2UgYW55IGV2ZW50IG9uIGtleXBhZCBhcyB3YWtldXAgZXZlbnQuCisJCSAgKExlZ2FjeSBwcm9wZXJ0eSBzdXBwb3J0ZWQ6ICJsaW51eCx3YWtldXAiKQorCitFeGFtcGxlOgorCit0YzM1ODkzQDQ0IHsKKwljb21wYXRpYmxlID0gInRvc2hpYmEsdGMzNTg5MyI7CisJcmVnID0gPDB4NDQ+OworCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW82PjsKKwlpbnRlcnJ1cHRzID0gPDI2IElSUV9UWVBFX0VER0VfUklTSU5HPjsKKworCWludGVycnVwdC1jb250cm9sbGVyOworCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisKKwl0YzM1ODl4X2dwaW8geworCQljb21wYXRpYmxlID0gInRvc2hpYmEsdGMzNTg5eC1ncGlvIjsKKwkJaW50ZXJydXB0cyA9IDwwPjsKKworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKwkJZ3Bpby1jb250cm9sbGVyOworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwl9OworCXRjMzU4OXhfa2V5cGFkIHsKKwkJY29tcGF0aWJsZSA9ICJ0b3NoaWJhLHRjMzU4OXgta2V5cGFkIjsKKwkJaW50ZXJydXB0cyA9IDw2PjsKKwkJZGVib3VuY2UtZGVsYXktbXMgPSA8ND47CisJCWtleXBhZCxudW0tY29sdW1ucyA9IDw4PjsKKwkJa2V5cGFkLG51bS1yb3dzID0gPDg+OworCQlsaW51eCxuby1hdXRvcmVwZWF0OworCQlsaW51eCxrZXltYXAgPSA8MHgwMzAxMDA2YgorCQkJCTB4MDQwMTAwNjYKKwkJCQkweDA2MDQwMDcyCisJCQkJMHgwNDAyMDBkNworCQkJCTB4MDMwMzAwNmEKKwkJCQkweDAyMDUwMDBlCisJCQkJMHgwNjA3MDA4YgorCQkJCTB4MDUwMDAwMWMKKwkJCQkweDA0MDMwMDBiCisJCQkJMHgwMzA0MDAzNAorCQkJCTB4MDUwMjAwNjcKKwkJCQkweDAzMDUwMDZjCisJCQkJMHgwNDA1MDBlNworCQkJCTB4MDAwNTAwOWUKKwkJCQkweDA2MDIwMDczCisJCQkJMHgwMTAzMDAzOQorCQkJCTB4MDcwNjAwNjkKKwkJCQkweDA1MDUwMGQ5PjsKKwkJd2FrZXVwLXNvdXJjZTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvdGkta2V5c3RvbmUtZGV2Y3RybC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3RpLWtleXN0b25lLWRldmN0cmwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwOTYzYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3RpLWtleXN0b25lLWRldmN0cmwudHh0CkBAIC0wLDAgKzEsMTkgQEAKKyogRGV2aWNlIHRyZWUgYmluZGluZ3MgZm9yIFRleGFzIEluc3RydW1lbnRzIGtleXN0b25lIGRldmljZSBzdGF0ZSBjb250cm9sCisKK1RoZSBLZXlzdG9uZSBJSSBkZXZpY2VzIGhhdmUgYSBzZXQgb2YgcmVnaXN0ZXJzIHRoYXQgYXJlIHVzZWQgdG8gY29udHJvbAordGhlIHN0YXR1cyBvZiBpdHMgcGVyaXBoZXJhbHMuIFRoaXMgbm9kZSBpcyBpbnRlbmRlZCB0byBhbGxvdyBhY2Nlc3MgdG8KK3RoaXMgZnVuY3Rpb25hbGl0eS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOgkJInRpLGtleXN0b25lLWRldmN0cmwiLCAic3lzY29uIgorCistIHJlZzoJCQljb250YWlucyBvZmZzZXQvbGVuZ3RoIHZhbHVlIGZvciBkZXZpY2Ugc3RhdGUgY29udHJvbAorCQkJcmVnaXN0ZXJzIHNwYWNlLgorCitFeGFtcGxlOgorCitkZXZjdHJsOiBkZXZpY2Utc3RhdGUtY29udHJvbEAweDAyNjIwMDAwIHsKKwljb21wYXRpYmxlID0gInRpLGtleXN0b25lLWRldmN0cmwiLCAic3lzY29uIjsKKwlyZWcgPSA8MHgwMjYyMDAwMCAweDEwMDA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvdHBzNjUwN3gudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC90cHM2NTA3eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGZmZmEzYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvdHBzNjUwN3gudHh0CkBAIC0wLDAgKzEsOTEgQEAKK1RQUzY1MDd4IFBvd2VyIE1hbmFnZW1lbnQgSW50ZWdyYXRlZCBDaXJjdWl0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ0aSx0cHM2NTA3eCIKKy0gcmVnOiBJMkMgc2xhdmUgYWRkcmVzcworLSByZWd1bGF0b3JzOiBUaGlzIGlzIHRoZSBsaXN0IG9mIGNoaWxkIG5vZGVzIHRoYXQgc3BlY2lmeSB0aGUgcmVndWxhdG9yCisgIGluaXRpYWxpemF0aW9uIGRhdGEgZm9yIGRlZmluZWQgcmVndWxhdG9ycy4gTm90IGFsbCByZWd1bGF0b3JzIGZvciB0aGUKKyAgZ2l2ZW4gZGV2aWNlIG5lZWQgdG8gYmUgcHJlc2VudC4gVGhlIGRlZmluaXRpb24gZm9yIGVhY2ggb2YgdGhlc2Ugbm9kZXMKKyAgaXMgZGVmaW5lZCB1c2luZyB0aGUgc3RhbmRhcmQgYmluZGluZyBmb3IgcmVndWxhdG9ycyBmb3VuZCBhdAorICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3JlZ3VsYXRvci50eHQuCisgIFRoZSByZWd1bGF0b3IgaXMgbWF0Y2hlZCB3aXRoIHRoZSByZWd1bGF0b3ItY29tcGF0aWJsZS4KKworICBUaGUgdmFsaWQgcmVndWxhdG9yLWNvbXBhdGlibGUgdmFsdWVzIGFyZToKKyAgdHBzNjUwN3g6IHZkY2RjMSwgdmRjZGMyLCB2ZGNkYzMsIHZsZG8xLCB2bGRvMgorLSB4eHgtc3VwcGx5OiBJbnB1dCB2b2x0YWdlIHN1cHBseSByZWd1bGF0b3IuCisgIFRoZXNlIGVudHJpZXMgYXJlIHJlcXVpcmVkIGlmIHJlZ3VsYXRvcnMgYXJlIGVuYWJsZWQgZm9yIGEgZGV2aWNlLgorICBNaXNzaW5nIG9mIHRoZXNlIHByb3BlcnRpZXMgY2FuIGNhdXNlIHRoZSByZWd1bGF0b3IgcmVnaXN0cmF0aW9uCisgIGZhaWxzLgorICBJZiBzb21lIG9mIGlucHV0IHN1cHBseSBpcyBwb3dlcmVkIHRocm91Z2ggYmF0dGVyeSBvciBhbHdheXMtb24KKyAgc3VwcGx5IHRoZW4gYWxzbyBpdCBpcyByZXF1aXJlIHRvIGhhdmUgdGhlc2UgcGFyYW1ldGVycyB3aXRoIHByb3BlcgorICBub2RlIGhhbmRsZSBvZiBhbHdheXMgb24gcG93ZXIgc3VwcGx5LgorICB0cHM2NTA3eDoKKyAgICAgICB2aW5kY2RjMV8yLXN1cHBseTogVkRDREMxIGFuZCBWRENEQzIgaW5wdXQuCisgICAgICAgdmluZGNkYzMtc3VwcGx5ICA6IFZEQ0RDMyBpbnB1dC4KKyAgICAgICB2bGRvMV8yLXN1cHBseSAgIDogVkxETzEgYW5kIFZMRE8yIGlucHV0LgorCitSZWd1bGF0b3IgT3B0aW9uYWwgcHJvcGVydGllczoKKy0gZGVmZGNkY19kZWZhdWx0OiBJdCdzIHByb3BlcnR5IG9mIERDREMyIGFuZCBEQ0RDMyByZWd1bGF0b3JzLgorCQkJMDogSWYgZGVmZGNkYyBwaW4gb2YgRENEQzIvRENEQzMgaXMgcHVsbGVkIHRvIEdORC4KKwkJCTE6IElmIGRlZmRjZGMgcGluIG9mIERDREMyL0RDREMzIGlzIGRyaXZlbiBISUdILgorICBJZiB0aGlzIHByb3BlcnR5IGlzIG5vdCBkZWZpbmVkLCBpdCBkZWZhdWx0cyB0byAwIChub3QgZW5hYmxlZCkuCisKK0V4YW1wbGU6CisKKwlwbXU6IHRwczY1MDd4QDQ4IHsKKwkJY29tcGF0aWJsZSA9ICJ0aSx0cHM2NTA3eCI7CisJCXJlZyA9IDwweDQ4PjsKKworCQl2aW5kY2RjMV8yLXN1cHBseSA9IDwmdmJhdD47CisJCXZpbmRjZGMzLXN1cHBseSA9IDwuLi4+OworCQl2aW5sZG8xXzItc3VwcGx5ID0gPC4uLj47CisKKwkJcmVndWxhdG9ycyB7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCisJCQl2ZGNkYzFfcmVnOiByZWd1bGF0b3JAMCB7CisJCQkJcmVndWxhdG9yLWNvbXBhdGlibGUgPSAiVkRDREMxIjsKKwkJCQlyZWcgPSA8MD47CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MzE1MDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzQ1MDAwMD47CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCX07CisJCQl2ZGNkYzJfcmVnOiByZWd1bGF0b3JAMSB7CisJCQkJcmVndWxhdG9yLWNvbXBhdGlibGUgPSAiVkRDREMyIjsKKwkJCQlyZWcgPSA8MT47CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTcxMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzQ1MDAwMD47CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlkZWZkY2RjX2RlZmF1bHQgPSA8MT47CisJCQl9OworCQkJdmRjZGMzX3JlZzogcmVndWxhdG9yQDIgeworCQkJCXJlZ3VsYXRvci1jb21wYXRpYmxlID0gIlZEQ0RDMyI7CisJCQkJcmVnID0gPDI+OworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDk1MDAwMD4KKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxMzUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCWRlZmRjZGNfZGVmYXVsdCA9IDwxPjsKKwkJCX07CisJCQlsZG8xX3JlZzogcmVndWxhdG9yQDMgeworCQkJCXJlZ3VsYXRvci1jb21wYXRpYmxlID0gIkxETzEiOworCQkJCXJlZyA9IDwzPjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxNzEwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxODkwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJfTsKKwkJCWxkbzJfcmVnOiByZWd1bGF0b3JANCB7CisJCQkJcmVndWxhdG9yLWNvbXBhdGlibGUgPSAiTERPMiI7CisJCQkJcmVnID0gPDQ+OworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDExNDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDEzMjAwMDA+OworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQl9OworCQl9OworCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvdHBzNjU5MTAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC90cHM2NTkxMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg4MzNlNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvdHBzNjU5MTAudHh0CkBAIC0wLDAgKzEsMjAxIEBACitUUFM2NTkxMCBQb3dlciBNYW5hZ2VtZW50IEludGVncmF0ZWQgQ2lyY3VpdAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAidGksdHBzNjU5MTAiIG9yICJ0aSx0cHM2NTkxMSIKKy0gcmVnOiBJMkMgc2xhdmUgYWRkcmVzcworLSBpbnRlcnJ1cHRzOiB0aGUgaW50ZXJydXB0IG91dHB1dHMgb2YgdGhlIGNvbnRyb2xsZXIKKy0gI2dwaW8tY2VsbHM6IG51bWJlciBvZiBjZWxscyB0byBkZXNjcmliZSBhIEdQSU8sIHRoaXMgc2hvdWxkIGJlIDIuCisgIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBHUElPIG51bWJlci4KKyAgVGhlIHNlY29uZCBjZWxsIGlzIHVzZWQgdG8gc3BlY2lmeSBhZGRpdGlvbmFsIG9wdGlvbnMgPHVudXNlZD4uCistIGdwaW8tY29udHJvbGxlcjogbWFyayB0aGUgZGV2aWNlIGFzIGEgR1BJTyBjb250cm9sbGVyCistICNpbnRlcnJ1cHQtY2VsbHM6IHRoZSBudW1iZXIgb2YgY2VsbHMgdG8gZGVzY3JpYmUgYW4gSVJRLCB0aGlzIHNob3VsZCBiZSAyLgorICBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgSVJRIG51bWJlci4KKyAgVGhlIHNlY29uZCBjZWxsIGlzIHRoZSBmbGFncywgZW5jb2RlZCBhcyB0aGUgdHJpZ2dlciBtYXNrcyBmcm9tCisgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlcnJ1cHRzLnR4dAorLSByZWd1bGF0b3JzOiBUaGlzIGlzIHRoZSBsaXN0IG9mIGNoaWxkIG5vZGVzIHRoYXQgc3BlY2lmeSB0aGUgcmVndWxhdG9yCisgIGluaXRpYWxpemF0aW9uIGRhdGEgZm9yIGRlZmluZWQgcmVndWxhdG9ycy4gTm90IGFsbCByZWd1bGF0b3JzIGZvciB0aGUgZ2l2ZW4KKyAgZGV2aWNlIG5lZWQgdG8gYmUgcHJlc2VudC4gVGhlIGRlZmluaXRpb24gZm9yIGVhY2ggb2YgdGhlc2Ugbm9kZXMgaXMgZGVmaW5lZAorICB1c2luZyB0aGUgc3RhbmRhcmQgYmluZGluZyBmb3IgcmVndWxhdG9ycyBmb3VuZCBhdAorICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3JlZ3VsYXRvci50eHQuCisgIFRoZSByZWd1bGF0b3IgaXMgbWF0Y2hlZCB3aXRoIHRoZSByZWd1bGF0b3ItY29tcGF0aWJsZS4KKworICBUaGUgdmFsaWQgcmVndWxhdG9yLWNvbXBhdGlibGUgdmFsdWVzIGFyZToKKyAgdHBzNjU5MTA6IHZydGMsIHZpbywgdmRkMSwgdmRkMiwgdmRkMywgdmRpZzEsIHZkaWcyLCB2cGxsLCB2ZGFjLCB2YXV4MSwKKyAgICAgICAgICAgIHZhdXgyLCB2YXV4MzMsIHZtbWMsIHZiYgorICB0cHM2NTkxMTogdnJ0YywgdmlvLCB2ZGQxLCB2ZGQzLCB2ZGRjdHJsLCBsZG8xLCBsZG8yLCBsZG8zLCBsZG80LCBsZG81LAorICAgICAgICAgICAgbGRvNiwgbGRvNywgbGRvOAorCistIHh4eC1zdXBwbHk6IElucHV0IHZvbHRhZ2Ugc3VwcGx5IHJlZ3VsYXRvci4KKyAgVGhlc2UgZW50cmllcyBhcmUgcmVxdWlyZSBpZiByZWd1bGF0b3JzIGFyZSBlbmFibGVkIGZvciBhIGRldmljZS4gTWlzc2luZyBvZiB0aGVzZQorICBwcm9wZXJ0aWVzIGNhbiBjYXVzZSB0aGUgcmVndWxhdG9yIHJlZ2lzdHJhdGlvbiBmYWlscy4KKyAgSWYgc29tZSBvZiBpbnB1dCBzdXBwbHkgaXMgcG93ZXJlZCB0aHJvdWdoIGJhdHRlcnkgb3IgYWx3YXlzLW9uIHN1cHBseSB0aGVuCisgIGFsc28gaXQgaXMgcmVxdWlyZSB0byBoYXZlIHRoZXNlIHBhcmFtZXRlcnMgd2l0aCBwcm9wZXIgbm9kZSBoYW5kbGUgb2YgYWx3YXlzCisgIG9uIHBvd2VyIHN1cHBseS4KKyAgdHBzNjU5MTA6CisJdmNjMS1zdXBwbHk6IFZERDEgaW5wdXQuCisJdmNjMi1zdXBwbHk6IFZERDIgaW5wdXQuCisJdmNjMy1zdXBwbHk6IFZBVVgzMyBhbmQgVk1NQyBpbnB1dC4KKwl2Y2M0LXN1cHBseTogVkFVWDEgYW5kIFZBVVgyIGlucHV0LgorCXZjYzUtc3VwcGx5OiBWUExMIGFuZCBWREFDIGlucHV0LgorCXZjYzYtc3VwcGx5OiBWRElHMSBhbmQgVkRJRzIgaW5wdXQuCisJdmNjNy1zdXBwbHk6IFZSVEMgYW5kIFZCQiBpbnB1dC4KKwl2Y2Npby1zdXBwbHk6IFZJTyBpbnB1dC4KKyAgdHBzNjU5MTE6CisJdmNjMS1zdXBwbHk6IFZERDEgaW5wdXQuCisJdmNjMi1zdXBwbHk6IFZERDIgaW5wdXQuCisJdmNjMy1zdXBwbHk6IExETzYsIExETzcgYW5kIExETzggaW5wdXQuCisJdmNjNC1zdXBwbHk6IExETzUgaW5wdXQuCisJdmNjNS1zdXBwbHk6IExETzMgYW5kIExETzQgaW5wdXQuCisJdmNjNi1zdXBwbHk6IExETzEgYW5kIExETzIgaW5wdXQuCisJdmNjNy1zdXBwbHk6IFZSVEMgaW5wdXQuCisJdmNjaW8tc3VwcGx5OiBWSU8gaW5wdXQuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHRpLHZtYmNoLXRocmVzaG9sZDogKHRwczY1OTExKSBtYWluIGJhdHRlcnkgY2hhcmdlZCB0aHJlc2hvbGQKKyAgY29tcGFyYXRvci4gKHNlZSBWTUJDSF9WU0VMIGluIFRQUzY1OTEwIGRhdGFzaGVldCkKKy0gdGksdm1iY2gyLXRocmVzaG9sZDogKHRwczY1OTExKSBtYWluIGJhdHRlcnkgZGlzY2hhcmdlZCB0aHJlc2hvbGQKKyAgY29tcGFyYXRvci4gKHNlZSBWTUJDSF9WU0VMIGluIFRQUzY1OTEwIGRhdGFzaGVldCkKKy0gdGksZW4tY2szMmsteHRhbDogZW5hYmxlIGV4dGVybmFsIDMyLWtIeiBjcnlzdGFsIG9zY2lsbGF0b3IgKHNlZSBDSzMyS19DVFJMCisgIGluIFRQUzY1OTFYIGRhdGFzaGVldCkKKy0gdGksZW4tZ3Bpby1zbGVlcDogZW5hYmxlIHNsZWVwIGNvbnRyb2wgZm9yIGdwaW9zCisgIFRoZXJlIHNob3VsZCBiZSA5IGVudHJpZXMgaGVyZSwgb25lIGZvciBlYWNoIGdwaW8uCistIHRpLHN5c3RlbS1wb3dlci1jb250cm9sbGVyOiBUZWxsaW5nIHdoZXRoZXIgb3Igbm90IHRoaXMgcG1pYyBpcyBjb250cm9sbGluZworICB0aGUgc3lzdGVtIHBvd2VyLgorCitSZWd1bGF0b3IgT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdGkscmVndWxhdG9yLWV4dC1zbGVlcC1jb250cm9sOiBlbmFibGUgZXh0ZXJuYWwgc2xlZXAKKyAgY29udHJvbCB0aHJvdWdoIGV4dGVybmFsIGlucHV0cyBbMCAobm90IGVuYWJsZWQpLCAxIChFTjEpLCAyIChFTjIpIG9yIDQoRU4zKV0KKyAgSWYgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZGVmaW5lZCwgaXQgZGVmYXVsdHMgdG8gMCAobm90IGVuYWJsZWQpLgorCitFeGFtcGxlOgorCisJcG11OiB0cHM2NTkxMEBkMiB7CisJCWNvbXBhdGlibGUgPSAidGksdHBzNjU5MTAiOworCQlyZWcgPSA8MHhkMj47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmludGM+OworCQlpbnRlcnJ1cHRzID0gPCAwIDExOCAweDA0ID47CisKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCWdwaW8tY29udHJvbGxlcjsKKworCQkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKworCQl0aSxzeXN0ZW0tcG93ZXItY29udHJvbGxlcjsKKworCQl0aSx2bWJjaC10aHJlc2hvbGQgPSAwOworCQl0aSx2bWJjaDItdGhyZXNob2xkID0gMDsKKwkJdGksZW4tY2szMmsteHRhbDsKKwkJdGksZW4tZ3Bpby1zbGVlcCA9IDwwIDAgMSAwIDAgMCAwIDAgMD47CisKKwkJdmNjMS1zdXBwbHkgPSA8JnJlZ19wYXJlbnQ+OworCQl2Y2MyLXN1cHBseSA9IDwmc29tZV9yZWc+OworCQl2Y2MzLXN1cHBseSA9IDwuLi4+OworCQl2Y2M0LXN1cHBseSA9IDwuLi4+OworCQl2Y2M1LXN1cHBseSA9IDwuLi4+OworCQl2Y2M2LXN1cHBseSA9IDwuLi4+OworCQl2Y2M3LXN1cHBseSA9IDwuLi4+OworCQl2Y2Npby1zdXBwbHkgPSA8Li4uPjsKKworCQlyZWd1bGF0b3JzIHsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJCXZkZDFfcmVnOiByZWd1bGF0b3JAMCB7CisJCQkJcmVndWxhdG9yLWNvbXBhdGlibGUgPSAidmRkMSI7CisJCQkJcmVnID0gPDA+OworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPCA2MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE1MDAwMDA+OworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJdGkscmVndWxhdG9yLWV4dC1zbGVlcC1jb250cm9sID0gPDA+OworCQkJfTsKKwkJCXZkZDJfcmVnOiByZWd1bGF0b3JAMSB7CisJCQkJcmVndWxhdG9yLWNvbXBhdGlibGUgPSAidmRkMiI7CisJCQkJcmVnID0gPDE+OworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPCA2MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE1MDAwMDA+OworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJdGkscmVndWxhdG9yLWV4dC1zbGVlcC1jb250cm9sID0gPDQ+OworCQkJfTsKKwkJCXZkZGN0cmxfcmVnOiByZWd1bGF0b3JAMiB7CisJCQkJcmVndWxhdG9yLWNvbXBhdGlibGUgPSAidmRkY3RybCI7CisJCQkJcmVnID0gPDI+OworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPCA2MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE0MDAwMDA+OworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJdGkscmVndWxhdG9yLWV4dC1zbGVlcC1jb250cm9sID0gPDA+OworCQkJfTsKKwkJCXZpb19yZWc6IHJlZ3VsYXRvckAzIHsKKwkJCQlyZWd1bGF0b3ItY29tcGF0aWJsZSA9ICJ2aW8iOworCQkJCXJlZyA9IDwzPjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxNTAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXRpLHJlZ3VsYXRvci1leHQtc2xlZXAtY29udHJvbCA9IDwxPjsKKwkJCX07CisJCQlsZG8xX3JlZzogcmVndWxhdG9yQDQgeworCQkJCXJlZ3VsYXRvci1jb21wYXRpYmxlID0gImxkbzEiOworCQkJCXJlZyA9IDw0PjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMDAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQl0aSxyZWd1bGF0b3ItZXh0LXNsZWVwLWNvbnRyb2wgPSA8MD47CisJCQl9OworCQkJbGRvMl9yZWc6IHJlZ3VsYXRvckA1IHsKKwkJCQlyZWd1bGF0b3ItY29tcGF0aWJsZSA9ICJsZG8yIjsKKwkJCQlyZWcgPSA8NT47CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTA1MDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTA1MDAwMD47CisJCQkJdGkscmVndWxhdG9yLWV4dC1zbGVlcC1jb250cm9sID0gPDA+OworCQkJfTsKKwkJCWxkbzNfcmVnOiByZWd1bGF0b3JANiB7CisJCQkJcmVndWxhdG9yLWNvbXBhdGlibGUgPSAibGRvMyI7CisJCQkJcmVnID0gPDY+OworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDEwMDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJCXRpLHJlZ3VsYXRvci1leHQtc2xlZXAtY29udHJvbCA9IDwwPjsKKwkJCX07CisJCQlsZG80X3JlZzogcmVndWxhdG9yQDcgeworCQkJCXJlZ3VsYXRvci1jb21wYXRpYmxlID0gImxkbzQiOworCQkJCXJlZyA9IDw3PjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMDAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJCXRpLHJlZ3VsYXRvci1leHQtc2xlZXAtY29udHJvbCA9IDwwPjsKKwkJCX07CisJCQlsZG81X3JlZzogcmVndWxhdG9yQDggeworCQkJCXJlZ3VsYXRvci1jb21wYXRpYmxlID0gImxkbzUiOworCQkJCXJlZyA9IDw4PjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMDAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQl0aSxyZWd1bGF0b3ItZXh0LXNsZWVwLWNvbnRyb2wgPSA8MD47CisJCQl9OworCQkJbGRvNl9yZWc6IHJlZ3VsYXRvckA5IHsKKwkJCQlyZWd1bGF0b3ItY29tcGF0aWJsZSA9ICJsZG82IjsKKwkJCQlyZWcgPSA8OT47CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTIwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTIwMDAwMD47CisJCQkJdGkscmVndWxhdG9yLWV4dC1zbGVlcC1jb250cm9sID0gPDA+OworCQkJfTsKKwkJCWxkbzdfcmVnOiByZWd1bGF0b3JAMTAgeworCQkJCXJlZ3VsYXRvci1jb21wYXRpYmxlID0gImxkbzciOworCQkJCXJlZyA9IDwxMD47CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTIwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTIwMDAwMD47CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQl0aSxyZWd1bGF0b3ItZXh0LXNsZWVwLWNvbnRyb2wgPSA8MT47CisJCQl9OworCQkJbGRvOF9yZWc6IHJlZ3VsYXRvckAxMSB7CisJCQkJcmVndWxhdG9yLWNvbXBhdGlibGUgPSAibGRvOCI7CisJCQkJcmVnID0gPDExPjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMDAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJCXRpLHJlZ3VsYXRvci1leHQtc2xlZXAtY29udHJvbCA9IDwxPjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvdHdsLWZhbWlsbHkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC90d2wtZmFtaWxseS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY2ZmNmOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvdHdsLWZhbWlsbHkudHh0CkBAIC0wLDAgKzEsNDcgQEAKK1RleGFzIEluc3RydW1lbnRzIFRXTCBmYW1pbHkKKworVGhlIFRXTHMgYXJlIEludGVncmF0ZWQgUG93ZXIgTWFuYWdlbWVudCBDaGlwcy4KK1NvbWUgdmVyc2lvbiBtaWdodCBjb250YWluIG11Y2ggbW9yZSBhbmFsb2cgZnVuY3Rpb24gbGlrZQorVVNCIHRyYW5zY2VpdmVyIG9yIEF1ZGlvIGFtcGxpZmllci4KK1RoZXNlIGNoaXBzIGFyZSBjb25uZWN0ZWQgdG8gYW4gaTJjIGJ1cy4KKworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogTXVzdCBiZSAidGksdHdsNDAzMCI7CisgIEZvciBJbnRlZ3JhdGVkIHBvd2VyLW1hbmFnZW1lbnQvYXVkaW8gQ09ERUMgZGV2aWNlIHVzZWQgaW4gT01BUDMKKyAgYmFzZWQgYm9hcmRzCistIGNvbXBhdGlibGUgOiBNdXN0IGJlICJ0aSx0d2w2MDMwIjsKKyAgRm9yIEludGVncmF0ZWQgcG93ZXItbWFuYWdlbWVudCB1c2VkIGluIE9NQVA0IGJhc2VkIGJvYXJkcworLSBpbnRlcnJ1cHRzIDogVGhpcyBpMmMgZGV2aWNlIGhhcyBhbiBJUlEgbGluZSBjb25uZWN0ZWQgdG8gdGhlIG1haW4gU29DCistIGludGVycnVwdC1jb250cm9sbGVyIDogU2luY2UgdGhlIHR3bCBzdXBwb3J0IHNldmVyYWwgaW50ZXJydXB0cyBpbnRlcm5hbGx5LAorICBpdCBpcyBjb25zaWRlcmVkIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyIGNhc2NhZGVkIHRvIHRoZSBTb0Mgb25lLgorLSAjaW50ZXJydXB0LWNlbGxzID0gPDE+OworLSBpbnRlcnJ1cHQtcGFyZW50IDogVGhlIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlci4KKworT3B0aW9uYWwgbm9kZToKKy0gQ2hpbGQgbm9kZXMgY29udGFpbiBpbiB0aGUgdHdsLiBUaGUgdHdsIGZhbWlseSBpcyBtYWRlIG9mIHNldmVyYWwgdmFyaWFudHMKKyAgdGhhdCBzdXBwb3J0IGEgZGlmZmVyZW50IG51bWJlciBvZiBmZWF0dXJlcy4KKyAgVGhlIGNoaWxkcmVuIG5vZGVzIHdpbGwgdGh1cyBkZXBlbmQgb2YgdGhlIGNhcGFiaWxpdHkgb2YgdGhlIHZhcmlhbnQuCisKKworRXhhbXBsZToKKy8qCisgKiBJbnRlZ3JhdGVkIFBvd2VyIE1hbmFnZW1lbnQgQ2hpcAorICogaHR0cDovL3d3dy50aS5jb20vbGl0L2RzL3N5bWxpbmsvdHdsNjAzMC5wZGYKKyAqLwordHdsQDQ4IHsKKyAgICBjb21wYXRpYmxlID0gInRpLHR3bDYwMzAiOworICAgIHJlZyA9IDwweDQ4PjsKKyAgICBpbnRlcnJ1cHRzID0gPDM5PjsgLyogSVJRX1NZU18xTiBjYXNjYWRlZCB0byBnaWMgKi8KKyAgICBpbnRlcnJ1cHQtY29udHJvbGxlcjsKKyAgICAjaW50ZXJydXB0LWNlbGxzID0gPDE+OworICAgIGludGVycnVwdC1wYXJlbnQgPSA8JmdpYz47CisgICAgI2FkZHJlc3MtY2VsbHMgPSA8MT47CisgICAgI3NpemUtY2VsbHMgPSA8MD47CisKKyAgICB0d2xfcnRjIHsKKyAgICAgICAgY29tcGF0aWJsZSA9ICJ0aSx0d2xfcnRjIjsKKyAgICAgICAgaW50ZXJydXB0cyA9IDwxMT47CisgICAgICAgIHJlZyA9IDwwPjsKKyAgICB9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvdHdsNDAzMC1hdWRpby50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3R3bDQwMzAtYXVkaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNGQyYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3R3bDQwMzAtYXVkaW8udHh0CkBAIC0wLDAgKzEsNDYgQEAKK1RleGFzIEluc3RydW1lbnRzIFRXTCBmYW1pbHkgKHR3bDQwMzApIGF1ZGlvIG1vZHVsZQorCitUaGUgYXVkaW8gbW9kdWxlIGluc2lkZSB0aGUgVFdMIGZhbWlseSBjb25zaXN0IG9mIGFuIGF1ZGlvIGNvZGVjIGFuZCBhIHZpYnJhCitkcml2ZXIuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBtdXN0IGJlICJ0aSx0d2w0MDMwLWF1ZGlvIgorCitPcHRpb25hbCBwcm9wZXJ0aWVzLCBub2RlczoKKworQXVkaW8gZnVuY3Rpb25hbGl0eToKKy0gY29kZWMgeyB9OiBOZWVkIHRvIGJlIHByZXNlbnQgaWYgdGhlIGF1ZGlvIGZ1bmN0aW9uYWxpdHkgaXMgdXNlZC4gV2l0aGluIHRoaXMKKwkgICAgIHNlY3Rpb24gdGhlIGZvbGxvd2luZyBvcHRpb25zIGNhbiBiZSB1c2VkOgorLSB0aSxkaWdpbWljX2RlbGF5OiBEZWxheSBuZWVkIGFmdGVyIGVuYWJsaW5nIHRoZSBkaWdpbWljIHRvIHJlZHVjZSBhcnRpZmFjdHMKKwkJICAgIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSByZWNvcmRlZCBzYW1wbGUgKGluIG1zKQorLXRpLHJhbXBfZGVsYXlfdmFsdWU6IEhTIHJhbXAgZGVsYXkgY29uZmlndXJhdGlvbiB0byByZWR1Y2UgcG9wIG5vaXNlCistdGksaHNfZXh0bXV0ZTogVXNlIGV4dGVybmFsIG11dGUgZm9yIEhTIHBvcCByZWR1Y3Rpb24KKy10aSxoc19leHRtdXRlX2dwaW86IFVzZSBleHRlcm5hbCBHUElPIHRvIGNvbnRyb2wgdGhlIGV4dGVybmFsIG11dGUKKy10aSxvZmZzZXRfY25jbF9wYXRoOiBPZmZzZXQgY2FuY2VsbGF0aW9uIHBhdGggc2VsZWN0aW9uLCByZWZlciB0byBUUk0gZm9yIHRoZQorCQkgICAgICB2YWxpZCB2YWx1ZXMuCisKK1ZpYnJhIGZ1bmN0aW9uYWxpdHkKKy0gdGksZW5hYmxlLXZpYnJhOiBOZWVkIHRvIGJlIHNldCB0byA8MT4gaWYgdGhlIHZpYnJhIGZ1bmN0aW9uYWxpdHkgaXMgdXNlZC4gaWYKKwkJICAgbWlzc2luZyBvciBpdCBpcyAwLCB0aGUgdmlicmEgZnVuY3Rpb25hbGl0eSBpcyBkaXNhYmxlZC4KKworRXhhbXBsZToKKyZpMmMxIHsKKwljbG9jay1mcmVxdWVuY3kgPSA8MjYwMDAwMD47CisKKwl0d2w6IHR3bEA0OCB7CisJCXJlZyA9IDwweDQ4PjsKKwkJaW50ZXJydXB0cyA9IDw3PjsgLyogU1lTX05JUlEgY2FzY2FkZWQgdG8gaW50YyAqLworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpbnRjPjsKKworCQl0d2xfYXVkaW86IGF1ZGlvIHsKKwkJCWNvbXBhdGlibGUgPSAidGksdHdsNDAzMC1hdWRpbyI7CisKKwkJCXRpLGVuYWJsZS12aWJyYSA9IDwxPjsKKworCQkJY29kZWMgeworCQkJCXRpLHJhbXBfZGVsYXlfdmFsdWUgPSA8Mz47CisJCQl9OworCisJCX07CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3R3bDQwMzAtcG93ZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC90d2w0MDMwLXBvd2VyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDE5OTYzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC90d2w0MDMwLXBvd2VyLnR4dApAQCAtMCwwICsxLDQ4IEBACitUZXhhcyBJbnN0cnVtZW50cyBUV0wgZmFtaWx5ICh0d2w0MDMwKSByZXNldCBhbmQgcG93ZXIgbWFuYWdlbWVudCBtb2R1bGUKKworVGhlIHBvd2VyIG1hbmFnZW1lbnQgbW9kdWxlIGluc2lkZSB0aGUgVFdMIGZhbWlseSBwcm92aWRlcyBzZXZlcmFsIGZhY2lsaXRpZXMKK3RvIGNvbnRyb2wgdGhlIHBvd2VyIHJlc291cmNlcywgaW5jbHVkaW5nIHBvd2VyIHNjcmlwdHMuIEZvciBub3csIHRoZQorYmluZGluZyBvbmx5IHN1cHBvcnRzIHRoZSBjb21wbGV0ZSBzaHV0ZG93biBvZiB0aGUgc3lzdGVtIGFmdGVyIHBvd2Vyb2ZmLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZworCSJ0aSx0d2w0MDMwLXBvd2VyIgorCSJ0aSx0d2w0MDMwLXBvd2VyLXJlc2V0IgorCSJ0aSx0d2w0MDMwLXBvd2VyLWlkbGUiCisJInRpLHR3bDQwMzAtcG93ZXItaWRsZS1vc2Mtb2ZmIgorCitUaGUgdXNlIG9mIHRpLHR3bDQwMzAtcG93ZXItcmVzZXQgaXMgcmVjb21tZW5kZWQgYXQgbGVhc3Qgb24KKzM1MzAgdGhhdCBuZWVkcyBhIHNwZWNpYWwgY29uZmlndXJhdGlvbiBmb3Igd2FybSByZXNldCB0byB3b3JrLgorCitXaGVuIHVzaW5nIHRpLHR3bDQwMzAtcG93ZXItaWRsZSwgdGhlIFRJIHJlY29tbWVuZGVkIGNvbmZpZ3VyYXRpb24KK2ZvciBpZGxlIG1vZGVzIGlzIGxvYWRlZCB0byB0aGUgdGx3NDAzMCBQTUlDLgorCitXaGVuIHVzaW5nIHRpLHR3bDQwMzAtcG93ZXItaWRsZS1vc2Mtb2ZmLCB0aGUgVEkgcmVjb21tZW5kZWQKK2NvbmZpZ3VyYXRpb24gaXMgdXNlZCB3aXRoIHRoZSBleHRlcm5hbCBvc2NpbGxhdG9yIGJlaW5nIHNodXQKK2Rvd24gZHVyaW5nIG9mZi1pZGxlLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCB3b3JrIG9uIGFsbCBib2FyZHMKK2RlcGVuZGluZyBvbiBob3cgdGhlIGV4dGVybmFsIG9zY2lsbGF0b3IgaXMgd2lyZWQuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gdGksc3lzdGVtLXBvd2VyLWNvbnRyb2xsZXI6IFRoaXMgaW5kaWNhdGVzIHRoYXQgVFdMNDAzMCBpcyB0aGUKKyAgcG93ZXIgc3VwcGx5IG1hc3RlciBvZiB0aGUgc3lzdGVtLiBXaXRoIHRoaXMgZmxhZywgdGhlIGNoaXAgd2lsbAorICBpbml0aWF0ZSBhbiBBQ1RJVkUtdG8tT0ZGIG9yIFNMRUVQLXRvLU9GRiB0cmFuc2l0aW9uIHdoZW4gdGhlCisgIHN5c3RlbSBwb3dlcm9mZnMuCisKKy0gdGksdXNlX3Bvd2Vyb2ZmOiBEZXByZWNhdGVkIG5hbWUgZm9yIHRpLHN5c3RlbS1wb3dlci1jb250cm9sbGVyCisKK0V4YW1wbGU6CismaTJjMSB7CisJY2xvY2stZnJlcXVlbmN5ID0gPDI2MDAwMDA+OworCisJdHdsOiB0d2xANDggeworCQlyZWcgPSA8MHg0OD47CisJCWludGVycnVwdHMgPSA8Nz47IC8qIFNZU19OSVJRIGNhc2NhZGVkIHRvIGludGMgKi8KKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmaW50Yz47CisKKwkJdHdsX3Bvd2VyOiBwb3dlciB7CisJCQljb21wYXRpYmxlID0gInRpLHR3bDQwMzAtcG93ZXIiOworCQkJdGksdXNlX3Bvd2Vyb2ZmOworCQl9OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC90d2w2MDQwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvdHdsNjA0MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQxMTU3YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvdHdsNjA0MC50eHQKQEAgLTAsMCArMSw2NyBAQAorVGV4YXMgSW5zdHJ1bWVudHMgVFdMNjA0MCBmYW1pbHkKKworVGhlIFRXTDYwNDBzIGFyZSA4LWNoYW5uZWwgaGlnaCBxdWFsaXR5IGxvdy1wb3dlciBhdWRpbyBjb2RlY3MgcHJvdmlkaW5nIGF1ZGlvLAordmlicmEgYW5kIEdQTyBmdW5jdGlvbmFsaXR5IG9uIE9NQVA0KyBwbGF0Zm9ybXMuCitUaGV5IGFyZSBjb25uZWN0ZWQgb3QgdGhlIGhvc3QgcHJvY2Vzc29yIHZpYSBpMmMgZm9yIGNvbW1hbmRzLCBNY1BETSBmb3IgYXVkaW8KK2RhdGEgYW5kIGNvbW1hbmRzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogInRpLHR3bDYwNDAiIGZvciB0d2w2MDQwLCAidGksdHdsNjA0MSIgZm9yIHR3bDYwNDEKKy0gcmVnOiBtdXN0IGJlIDB4NGIgZm9yIGkyYyBhZGRyZXNzCistIGludGVycnVwdHM6IHR3bDYwNDAgaGFzIG9uZSBpbnRlcnJ1cHQgbGluZSBjb25uZWN0ZWRlZCB0byB0aGUgbWFpbiBTb0MKKy0gaW50ZXJydXB0LXBhcmVudDogVGhlIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSBncGlvLWNvbnRyb2xsZXI6CistICNncGlvLWNlbGxzID0gPDE+OiB0d2w2MDQwIHByb3ZpZGVzIEdQTyBsaW5lcy4KKy0gdHdsNjA0MCxhdWRwd3Jvbi1ncGlvOiBQb3dlciBvbiBHUElPIGxpbmUgZm9yIHRoZSB0d2w2MDQwCisKKy0gdmlvLXN1cHBseTogUmVndWxhdG9yIGZvciB0aGUgdHdsNjA0MCBWSU8gc3VwcGx5CistIHYydjEtc3VwcGx5OiBSZWd1bGF0b3IgZm9yIHRoZSB0d2w2MDQwIFYyVjEgc3VwcGx5CisKK09wdGlvbmFsIHByb3BlcnRpZXMsIG5vZGVzOgorLSBlbmFibGUtYWN0aXZlLWhpZ2g6IFRvIHBvd2VyIG9uIHRoZSB0d2w2MDQwIGR1cmluZyBib290LgorLSBjbG9ja3M6IHBoYW5kbGUgdG8gdGhlIGNsazMyayBjbG9jayBwcm92aWRlcgorLSBjbG9jay1uYW1lczogTXVzdCBiZSAiY2xrMzJrIgorCitWaWJyYSBmdW5jdGlvbmFsaXR5CitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSB2ZGR2aWJsLXN1cHBseTogUmVndWxhdG9yIGZvciB0aGUgbGVmdCB2aWJyYSBtb3RvcgorLSB2ZGR2aWJyLXN1cHBseTogUmVndWxhdG9yIGZvciB0aGUgcmlnaHQgdmlicmEgbW90b3IKKy0gdmlicmEgeyB9OiBDb25maWd1cmF0aW9uIHNlY3Rpb24gZm9yIHZpYnJhIHBhcmFtZXRlcnMgY29udGFpbmluZyB0aGUgZm9sbG93aW5nCisJICAgICBwcm9wZXJ0aWVzOgorLSB0aSx2aWJsZHJ2LXJlczogUmVzaXN0YW5jZSBwYXJhbWV0ZXIgZm9yIGxlZnQgZHJpdmVyCistIHRpLHZpYnJkcnYtcmVzOiBSZXNpc3RhbmNlIHBhcmFtZXRlciBmb3IgcmlnaHQgZHJpdmVyCistIHRpLHZpYmxtb3Rvci1yZXM6IFJlc2lzdGFuY2UgcGFyYW1ldGVyIGZvciBsZWZ0IG1vdG9yCistIHRpLHZpYmxtb3Rvci1yZXM6IFJlc2lzdGFuY2UgcGFyYW1ldGVyIGZvciByaWdodCBtb3RvcgorCitPcHRpb25hbCBwcm9wZXJ0aWVzIHdpdGhpbiB2aWJyYSB7IH0gc2VjdGlvbjoKKy0gdmRkdmlibF91VjogSWYgdGhlIHZkZHZpYmwgZGVmYXVsdCB2b2x0YWdlIG5lZWQgdG8gYmUgY2hhbmdlZAorLSB2ZGR2aWJyX3VWOiBJZiB0aGUgdmRkdmliciBkZWZhdWx0IHZvbHRhZ2UgbmVlZCB0byBiZSBjaGFuZ2VkCisKK0V4YW1wbGU6CismaTJjMSB7CisJdHdsNjA0MDogdHdsQDRiIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSx0d2w2MDQwIjsKKworCQlpbnRlcnJ1cHRzID0gPDAgMTE5IDQ+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZnaWM+OworCQl0d2w2MDQwLGF1ZHB3cm9uLWdwaW8gPSA8JmdwaW80IDMxIDA+OworCisJCXZpby1zdXBwbHkgPSA8JnYxdjg+OworCQl2MnYxLXN1cHBseSA9IDwmdjJ2MT47CisJCWVuYWJsZS1hY3RpdmUtaGlnaDsKKworCQkvKiByZWd1bGF0b3JzIGZvciB2aWJyYSBtb3RvciAqLworCQl2ZGR2aWJsLXN1cHBseSA9IDwmdmJhdD47CisJCXZkZHZpYnItc3VwcGx5ID0gPCZ2YmF0PjsKKworCQl2aWJyYSB7CisJCQkvKiBWaWJyYSBkcml2ZXIsIG1vdG9yIHJlc2lzdGFuY2UgcGFyYW1ldGVycyAqLworCQkJdGksdmlibGRydi1yZXMgPSA8OD47CisJCQl0aSx2aWJyZHJ2LXJlcyA9IDwzPjsKKwkJCXRpLHZpYmxtb3Rvci1yZXMgPSA8MTA+OworCQkJdGksdmlicm1vdG9yLXJlcyA9IDwxMD47CisJCX07CisJfTsKK307CisKKy9pbmNsdWRlLyAidHdsNjA0MC5kdHNpIgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pcHMvYXRoNzktc29jLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXBzL2F0aDc5LXNvYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhhMTJhNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXBzL2F0aDc5LXNvYy50eHQKQEAgLTAsMCArMSwyMSBAQAorQmluZGluZyBmb3IgUXVhbGNvbW0gQXRoZXJvcyBBUjd4eHgvQVI5WFhYIFNvQworCitFYWNoIGRldmljZSB0cmVlIG11c3Qgc3BlY2lmeSBhIGNvbXBhdGlibGUgdmFsdWUgZm9yIHRoZSBBUiBTb0MKK2l0IHVzZXMgaW4gdGhlIGNvbXBhdGlibGUgcHJvcGVydHkgb2YgdGhlIHJvb3Qgbm9kZS4gVGhlIGNvbXBhdGlibGUKK3ZhbHVlIG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorCistIHFjYSxhcjcxMzAKKy0gcWNhLGFyNzE0MQorLSBxY2EsYXI3MTYxCistIHFjYSxhcjcyNDAKKy0gcWNhLGFyNzI0MQorLSBxY2EsYXI3MjQyCistIHFjYSxhcjkxMzAKKy0gcWNhLGFyOTEzMgorLSBxY2EsYXI5MzMwCistIHFjYSxhcjkzMzEKKy0gcWNhLGFyOTM0MQorLSBxY2EsYXI5MzQyCistIHFjYSxhcjkzNDQKKy0gcWNhLHFjYTk1NTYKKy0gcWNhLHFjYTk1NTgKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXBzL2JyY20vYnJjbSxibWlwcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlwcy9icmNtL2JyY20sYm1pcHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlZjcxYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlwcy9icmNtL2JyY20sYm1pcHMudHh0CkBAIC0wLDAgKzEsOCBAQAorKiBCcm9hZGNvbSBNSVBTIChCTUlQUykgQ1BVcworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiYnJjbSxibWlwczMzMDAiLCAiYnJjbSxibWlwczQzNTAiLCAiYnJjbSxibWlwczQzODAiLAorICAiYnJjbSxibWlwczUwMDAiCisKKy0gbWlwcy1ocHQtZnJlcXVlbmN5OiBUaGlzIGlzIGNvbW1vbiB0byBhbGwgQ1BVcyBpbiB0aGUgc3lzdGVtIHNvIGl0IGxpdmVzCisgIHVuZGVyIHRoZSAiY3B1cyIgbm9kZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXBzL2JyY20vc29jLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXBzL2JyY20vc29jLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YmFiOTBjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pcHMvYnJjbS9zb2MudHh0CkBAIC0wLDAgKzEsMTIgQEAKKyogQnJvYWRjb20gY2FibGUvRFNML3NldHRvcCBwbGF0Zm9ybXMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiAiYnJjbSxiY20zMzg0IiwgImJyY20sYmNtMzM4NDMiCisgICAgICAgICAgICAgICJicmNtLGJjbTMzODQtdmlwZXIiLCAiYnJjbSxiY20zMzg0My12aXBlciIKKyAgICAgICAgICAgICAgImJyY20sYmNtNjMyOCIsICJicmNtLGJjbTYzNjgiLAorICAgICAgICAgICAgICAiYnJjbSxiY203MTI1IiwgImJyY20sYmNtNzM0NiIsICJicmNtLGJjbTczNTgiLCAiYnJjbSxiY203MzYwIiwKKyAgICAgICAgICAgICAgImJyY20sYmNtNzM2MiIsICJicmNtLGJjbTc0MjAiLCAiYnJjbSxiY203NDI1IgorCitUaGUgZXhwZXJpbWVudGFsIC12aXBlciB2YXJpYW50cyBhcmUgZm9yIHJ1bm5pbmcgTGludXggb24gdGhlIDMzODQncworQk1JUFM0MzU1IGNhYmxlIG1vZGVtIENQVSBpbnN0ZWFkIG9mIHRoZSBCTUlQUzUwMDAgYXBwbGljYXRpb24gcHJvY2Vzc29yLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pcHMvY2F2aXVtL2Jvb3RidXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pcHMvY2F2aXVtL2Jvb3RidXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1ODE0NzgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlwcy9jYXZpdW0vYm9vdGJ1cy50eHQKQEAgLTAsMCArMSwxMjYgQEAKKyogQm9vdCBCdXMKKworVGhlIE9jdGVvbiBCb290IEJ1cyBpcyBhIGNvbmZpZ3VyYWJsZSBwYXJhbGxlbCBidXMgd2l0aCA4IGNoaXAKK3NlbGVjdHMuICBFYWNoIGNoaXAgc2VsZWN0IGlzIGluZGVwZW5kZW50bHkgY29uZmlndXJhYmxlLgorCitQcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiY2F2aXVtLG9jdGVvbi0zODYwLWJvb3RidXMiCisKKyAgQ29tcGF0aWJpbGl0eSB3aXRoIGFsbCBjbjNYWFgsIGNuNVhYWCBhbmQgY242WFhYIFNPQ3MuCisKKy0gcmVnOiBUaGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBCb290IEJ1cycgcmVnaXN0ZXIgYmFuay4KKworLSAjYWRkcmVzcy1jZWxsczogTXVzdCBiZSA8Mj4uICBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgY2hpcCBzZWxlY3QKKyAgIHdpdGhpbiB0aGUgYm9vdGJ1cy4gIFRoZSBzZWNvbmQgY2VsbCBpcyB0aGUgb2Zmc2V0IGZyb20gdGhlIGNoaXAgc2VsZWN0LgorCistICNzaXplLWNlbGxzOiBNdXN0IGJlIDwxPi4KKworLSByYW5nZXM6IFRoZXJlIG11c3QgYmUgb25lIG9uZSB0cmlwbGV0IG9mIChjaGlsZC1idXMtYWRkcmVzcywKKyAgcGFyZW50LWJ1cy1hZGRyZXNzLCBsZW5ndGgpIGZvciBlYWNoIGFjdGl2ZSBjaGlwIHNlbGVjdC4gIElmIHRoZQorICBsZW5ndGggZWxlbWVudCBmb3IgYW55IHRyaXBsZXQgaXMgemVybywgdGhlIGNoaXAgc2VsZWN0IGlzIGRpc2FibGVkLAorICBtYWtpbmcgaXQgaW5hY3RpdmUuCisKK1RoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZm9yIGVhY2ggY2hpcCBzZWxlY3QgYXJlIHN0b3JlZCBpbiBjaGlsZAorbm9kZXMuCisKK0NvbmZpZ3VyYXRpb24gUHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogICJjYXZpdW0sb2N0ZW9uLTM4NjAtYm9vdGJ1cy1jb25maWciCisKKy0gY2F2aXVtLGNzLWluZGV4OiBBIHNpbmdsZSBjZWxsIGluZGljYXRpbmcgdGhlIGNoaXAgc2VsZWN0IHRoYXQKKyAgY29ycmVzcG9uZHMgdG8gdGhpcyBjb25maWd1cmF0aW9uLgorCistIGNhdml1bSx0LWFkcjogQSBjZWxsIHNwZWNpZnlpbmcgdGhlIEFEUiB0aW1pbmcgKGluIG5TKS4KKworLSBjYXZpdW0sdC1jZTogQSBjZWxsIHNwZWNpZnlpbmcgdGhlIENFIHRpbWluZyAoaW4gblMpLgorCistIGNhdml1bSx0LW9lOiBBIGNlbGwgc3BlY2lmeWluZyB0aGUgT0UgdGltaW5nIChpbiBuUykuCisKKy0gY2F2aXVtLHQtd2U6IEEgY2VsbCBzcGVjaWZ5aW5nIHRoZSBXRSB0aW1pbmcgKGluIG5TKS4KKworLSBjYXZpdW0sdC1yZC1obGQ6IEEgY2VsbCBzcGVjaWZ5aW5nIHRoZSBSRF9ITEQgdGltaW5nIChpbiBuUykuCisKKy0gY2F2aXVtLHQtd3ItaGxkOiBBIGNlbGwgc3BlY2lmeWluZyB0aGUgV1JfSExEIHRpbWluZyAoaW4gblMpLgorCistIGNhdml1bSx0LXBhdXNlOiBBIGNlbGwgc3BlY2lmeWluZyB0aGUgUEFVU0UgdGltaW5nIChpbiBuUykuCisKKy0gY2F2aXVtLHQtd2FpdDogQSBjZWxsIHNwZWNpZnlpbmcgdGhlIFdBSVQgdGltaW5nIChpbiBuUykuCisKKy0gY2F2aXVtLHQtcGFnZTogQSBjZWxsIHNwZWNpZnlpbmcgdGhlIFBBR0UgdGltaW5nIChpbiBuUykuCisKKy0gY2F2aXVtLHQtcmQtZGx5OiBBIGNlbGwgc3BlY2lmeWluZyB0aGUgUkRfRExZIHRpbWluZyAoaW4gblMpLgorCistIGNhdml1bSxwYWdlczogQSBjZWxsIHNwZWNpZnlpbmcgdGhlIFBBR0VTIHBhcmFtZXRlciAoMCA9IDggYnl0ZXMsIDEKKyAgPSAyIGJ5dGVzLCAyID0gNCBieXRlcywgMyA9IDggYnl0ZXMpLgorCistIGNhdml1bSx3YWl0LW1vZGU6IE9wdGlvbmFsLiAgSWYgcHJlc2VudCwgd2FpdCBtb2RlIChXQUlUTSkgaXMgc2VsZWN0ZWQuCisKKy0gY2F2aXVtLHBhZ2UtbW9kZTogT3B0aW9uYWwuICBJZiBwcmVzZW50LCBwYWdlIG1vZGUgKFBBR0VNKSBpcyBzZWxlY3RlZC4KKworLSBjYXZpdW0sYnVzLXdpZHRoOiBBIGNlbGwgc3BlY2lmeWluZyB0aGUgV0lEVEggcGFyYW1ldGVyIChpbiBiaXRzKSBvZgorICB0aGUgYnVzIGZvciB0aGlzIGNoaXAgc2VsZWN0LgorCistIGNhdml1bSxhbGUtbW9kZTogT3B0aW9uYWwuICBJZiBwcmVzZW50LCBBTEUgbW9kZSBpcyBzZWxlY3RlZC4KKworLSBjYXZpdW0sc2FtLW1vZGU6IE9wdGlvbmFsLiAgSWYgcHJlc2VudCwgU0FNIG1vZGUgaXMgc2VsZWN0ZWQuCisKKy0gY2F2aXVtLG9yLW1vZGU6IE9wdGlvbmFsLiAgSWYgcHJlc2VudCwgT1IgbW9kZSBpcyBzZWxlY3RlZC4KKworRXhhbXBsZToKKwlib290YnVzOiBib290YnVzQDExODAwMDAwMDAwMDAgeworCQljb21wYXRpYmxlID0gImNhdml1bSxvY3Rlb24tMzg2MC1ib290YnVzIjsKKwkJcmVnID0gPDB4MTE4MDAgMHgwMDAwMDAwMCAweDAgMHgyMDA+OworCQkvKiBUaGUgY2hpcCBzZWxlY3QgbnVtYmVyIGFuZCBvZmZzZXQgKi8KKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mj47CisJCS8qIFRoZSBzaXplIG9mIHRoZSBjaGlwIHNlbGVjdCByZWdpb24gKi8KKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCXJhbmdlcyA9IDwwIDAgIDB4MCAweDFmNDAwMDAwICAweGMwMDAwMD4sCisJCQkgPDEgMCAgMHgxMDAwMCAweDMwMDAwMDAwICAwPiwKKwkJCSA8MiAwICAweDEwMDAwIDB4NDAwMDAwMDAgIDA+LAorCQkJIDwzIDAgIDB4MTAwMDAgMHg1MDAwMDAwMCAgMD4sCisJCQkgPDQgMCAgMHgwIDB4MWQwMjAwMDAgIDB4MTAwMDA+LAorCQkJIDw1IDAgIDB4MCAweDFkMDQwMDAwICAweDEwMDAwPiwKKwkJCSA8NiAwICAweDAgMHgxZDA1MDAwMCAgMHgxMDAwMD4sCisJCQkgPDcgMCAgMHgxMDAwMCAweDkwMDAwMDAwICAwPjsKKworCQkJY2F2aXVtLGNzLWNvbmZpZ0AwIHsKKwkJCWNvbXBhdGlibGUgPSAiY2F2aXVtLG9jdGVvbi0zODYwLWJvb3RidXMtY29uZmlnIjsKKwkJCWNhdml1bSxjcy1pbmRleCA9IDwwPjsKKwkJCWNhdml1bSx0LWFkciAgPSA8MjA+OworCQkJY2F2aXVtLHQtY2UgICA9IDw2MD47CisJCQljYXZpdW0sdC1vZSAgID0gPDYwPjsKKwkJCWNhdml1bSx0LXdlICAgPSA8NDU+OworCQkJY2F2aXVtLHQtcmQtaGxkID0gPDM1PjsKKwkJCWNhdml1bSx0LXdyLWhsZCA9IDw0NT47CisJCQljYXZpdW0sdC1wYXVzZSAgPSA8MD47CisJCQljYXZpdW0sdC13YWl0ICAgPSA8MD47CisJCQljYXZpdW0sdC1wYWdlICAgPSA8MzU+OworCQkJY2F2aXVtLHQtcmQtZGx5ID0gPDA+OworCisJCQljYXZpdW0scGFnZXMgICAgID0gPDA+OworCQkJY2F2aXVtLGJ1cy13aWR0aCA9IDw4PjsKKwkJfTsKKwkJLgorCQkuCisJCS4KKwkJY2F2aXVtLGNzLWNvbmZpZ0A2IHsKKwkJCWNvbXBhdGlibGUgPSAiY2F2aXVtLG9jdGVvbi0zODYwLWJvb3RidXMtY29uZmlnIjsKKwkJCWNhdml1bSxjcy1pbmRleCA9IDw2PjsKKwkJCWNhdml1bSx0LWFkciAgPSA8NT47CisJCQljYXZpdW0sdC1jZSAgID0gPDMwMD47CisJCQljYXZpdW0sdC1vZSAgID0gPDI3MD47CisJCQljYXZpdW0sdC13ZSAgID0gPDE1MD47CisJCQljYXZpdW0sdC1yZC1obGQgPSA8MTAwPjsKKwkJCWNhdml1bSx0LXdyLWhsZCA9IDw3MD47CisJCQljYXZpdW0sdC1wYXVzZSAgPSA8MD47CisJCQljYXZpdW0sdC13YWl0ICAgPSA8MD47CisJCQljYXZpdW0sdC1wYWdlICAgPSA8MzIwPjsKKwkJCWNhdml1bSx0LXJkLWRseSA9IDwwPjsKKworCQkJY2F2aXVtLHBhZ2VzICAgICA9IDwwPjsKKwkJCWNhdml1bSx3YWl0LW1vZGU7CisJCQljYXZpdW0sYnVzLXdpZHRoID0gPDE2PjsKKwkJfTsKKwkJLgorCQkuCisJCS4KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pcHMvY2F2aXVtL2NpYi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlwcy9jYXZpdW0vY2liLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzlhMWFhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pcHMvY2F2aXVtL2NpYi50eHQKQEAgLTAsMCArMSw0MyBAQAorKiBDYXZpdW0gSW50ZXJydXB0IEJ1cyB3aWRnZXQKKworUHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImNhdml1bSxvY3Rlb24tNzEzMC1jaWIiCisKKyAgQ29tcGF0aWJpbGl0eSB3aXRoIGNuNzBYWCBTb0NzLgorCistIGludGVycnVwdC1jb250cm9sbGVyOiAgVGhpcyBpcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlci4KKworLSByZWc6IFR3byBlbGVtZW50cyBjb25zaXN0aW5nIG9mIHRoZSBhZGRyZXNzZXMgb2YgdGhlIFJBVyBhbmQgRU4KKyAgcmVnaXN0ZXJzIG9mIHRoZSBDSUIgYmxvY2sKKworLSBjYXZpdW0sbWF4LWJpdHM6IFRoZSBpbmRleCAoemVybyBiYXNlZCkgb2YgdGhlIGhpZ2hlc3QgbnVtYmVyZWQgYml0CisgIGluIHRoZSBDSUIgYmxvY2suCisKKy0gaW50ZXJydXB0LXBhcmVudDogIEFsd2F5cyB0aGUgQ0lVIG9uIHRoZSBTb0MuCisKKy0gaW50ZXJydXB0czogVGhlIENJVSBsaW5lIHRvIHdoaWNoIHRoZSBDSUIgYmxvY2sgaXMgY29ubmVjdGVkLgorCistICNpbnRlcnJ1cHQtY2VsbHM6IE11c3QgYmUgPDI+LiAgVGhlIGZpcnN0IGNlbGwgaXMgdGhlIGJpdCB3aXRoaW4gdGhlCisgICBDSUIuICBUaGUgc2Vjb25kIGNlbGwgc3BlY2lmaWVzIHRoZSB0cmlnZ2VyaW5nIHNlbWFudGljcyBvZiB0aGUKKyAgIGxpbmUuCisKK0V4YW1wbGU6CisKKwlpbnRlcnJ1cHQtY29udHJvbGxlckAxMDcwMDAwMDBlMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJjYXZpdW0sb2N0ZW9uLTcxMzAtY2liIjsKKwkJcmVnID0gPDB4MTA3MDAgMHgwMDAwZTAwMCAweDAgMHg4PiwgLyogUkFXICovCisJCSAgICAgIDwweDEwNzAwIDB4MDAwMGUxMDAgMHgwIDB4OD47IC8qIEVOICovCisJCWNhdml1bSxtYXgtYml0cyA9IDwyMz47CisKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmNpdT47CisJCWludGVycnVwdHMgPSA8MSAyND47CisJCS8qIEludGVycnVwdHMgYXJlIHNwZWNpZmllZCBieSB0d28gcGFydHM6CisJCSAqIDEpIEJpdCBudW1iZXIgaW4gdGhlIENJQiogcmVnaXN0ZXJzCisJCSAqIDIpIFRyaWdnZXJpbmcgKDEgLSBlZGdlIHJpc2luZworCQkgKgkJICAyIC0gZWRnZSBmYWxsaW5nCisJCSAqCQkgIDQgLSBsZXZlbCBhY3RpdmUgaGlnaAorCQkgKgkJICA4IC0gbGV2ZWwgYWN0aXZlIGxvdykKKwkJICovCisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXBzL2Nhdml1bS9jaXUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pcHMvY2F2aXVtL2NpdS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMyZDA3NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXBzL2Nhdml1bS9jaXUudHh0CkBAIC0wLDAgKzEsMjYgQEAKKyogQ2VudHJhbCBJbnRlcnJ1cHQgVW5pdAorCitQcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiY2F2aXVtLG9jdGVvbi0zODYwLWNpdSIKKworICBDb21wYXRpYmlsaXR5IHdpdGggYWxsIGNuM1hYWCwgY241WFhYIGFuZCBjbjYzWFggU09Dcy4KKworLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogIFRoaXMgaXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIuCisKKy0gcmVnOiBUaGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBDSVUncyByZWdpc3RlciBiYW5rLgorCistICNpbnRlcnJ1cHQtY2VsbHM6IE11c3QgYmUgPDI+LiAgVGhlIGZpcnN0IGNlbGwgaXMgdGhlIGJhbmsgd2l0aGluCisgICB0aGUgQ0lVIGFuZCBtYXkgaGF2ZSBhIHZhbHVlIG9mIDAgb3IgMS4gIFRoZSBzZWNvbmQgY2VsbCBpcyB0aGUgYml0CisgICB3aXRoaW4gdGhlIGJhbmsgYW5kIG1heSBoYXZlIGEgdmFsdWUgYmV0d2VlbiAwIGFuZCA2My4KKworRXhhbXBsZToKKwlpbnRlcnJ1cHQtY29udHJvbGxlckAxMDcwMDAwMDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJjYXZpdW0sb2N0ZW9uLTM4NjAtY2l1IjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCS8qIEludGVycnVwdHMgYXJlIHNwZWNpZmllZCBieSB0d28gcGFydHM6CisJCSAqIDEpIENvbnRyb2xsZXIgcmVnaXN0ZXIgKDAgb3IgMSkKKwkJICogMikgQml0IHdpdGhpbiB0aGUgcmVnaXN0ZXIgKDAuLjYzKQorCQkgKi8KKwkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKwkJcmVnID0gPDB4MTA3MDAgMHgwMDAwMDAwMCAweDAgMHg3MDAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pcHMvY2F2aXVtL2NpdTIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pcHMvY2F2aXVtL2NpdTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlYzdiYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlwcy9jYXZpdW0vY2l1Mi50eHQKQEAgLTAsMCArMSwyNyBAQAorKiBDZW50cmFsIEludGVycnVwdCBVbml0CisKK1Byb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJjYXZpdW0sb2N0ZW9uLTY4ODAtY2l1MiIKKworICBDb21wYXRpYmlsaXR5IHdpdGggNjhYWCBTT0NzLgorCistIGludGVycnVwdC1jb250cm9sbGVyOiAgVGhpcyBpcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlci4KKworLSByZWc6IFRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIENJVSdzIHJlZ2lzdGVyIGJhbmsuCisKKy0gI2ludGVycnVwdC1jZWxsczogTXVzdCBiZSA8Mj4uICBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgYmFuayB3aXRoaW4KKyAgdGhlIENJVSBhbmQgbWF5IGhhdmUgYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDYzLiAgVGhlIHNlY29uZCBjZWxsIGlzCisgIHRoZSBiaXQgd2l0aGluIHRoZSBiYW5rIGFuZCBtYXkgYWxzbyBoYXZlIGEgdmFsdWUgYmV0d2VlbiAwIGFuZCA2My4KKworRXhhbXBsZToKKwlpbnRlcnJ1cHQtY29udHJvbGxlckAxMDcwMTAwMDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJjYXZpdW0sb2N0ZW9uLTY4ODAtY2l1MiI7CisJCWludGVycnVwdC1jb250cm9sbGVyOworCQkvKiBJbnRlcnJ1cHRzIGFyZSBzcGVjaWZpZWQgYnkgdHdvIHBhcnRzOgorCQkgKiAxKSBDb250cm9sbGVyIHJlZ2lzdGVyICgwLi42MykKKwkJICogMikgQml0IHdpdGhpbiB0aGUgcmVnaXN0ZXIgKDAuLjYzKQorCQkgKi8KKwkJI2FkZHJlc3MtY2VsbHMgPSA8MD47CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJCXJlZyA9IDwweDEwNzAxIDB4MDAwMDAwMDAgMHgwIDB4NDAwMDAwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXBzL2Nhdml1bS9kbWEtZW5naW5lLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXBzL2Nhdml1bS9kbWEtZW5naW5lLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWJkZmY0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pcHMvY2F2aXVtL2RtYS1lbmdpbmUudHh0CkBAIC0wLDAgKzEsMjEgQEAKKyogRE1BIEVuZ2luZS4KKworVGhlIE9jdGVvbiBETUEgRW5naW5lIHRyYW5zZmVycyBiZXR3ZWVuIHRoZSBCb290IEJ1cyBhbmQgbWFpbiBtZW1vcnkuCitUaGUgRE1BIEVuZ2luZSB3aWxsIGJlIHJlZmVycmVkIHRvIGJ5IHBoYW5kbGUgYnkgYW55IGRldmljZSB0aGF0IGlzCitjb25uZWN0ZWQgdG8gaXQuCisKK1Byb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJjYXZpdW0sb2N0ZW9uLTU3NTAtYm9vdGJ1cy1kbWEiCisKKyAgQ29tcGF0aWJpbGl0eSB3aXRoIGFsbCBjbjUyWFgsIGNuNTZYWCBhbmQgY242WFhYIFNPQ3MuCisKKy0gcmVnOiBUaGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBETUEgRW5naW5lJ3MgcmVnaXN0ZXIgYmFuay4KKworLSBpbnRlcnJ1cHRzOiBBIHNpbmdsZSBpbnRlcnJ1cHQgc3BlY2lmaWVyLgorCitFeGFtcGxlOgorCWRtYTA6IGRtYS1lbmdpbmVAMTE4MDAwMDAwMDEwMCB7CisJCWNvbXBhdGlibGUgPSAiY2F2aXVtLG9jdGVvbi01NzUwLWJvb3RidXMtZG1hIjsKKwkJcmVnID0gPDB4MTE4MDAgMHgwMDAwMDEwMCAweDAgMHg4PjsKKwkJaW50ZXJydXB0cyA9IDwwIDYzPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pcHMvY2F2aXVtL3VjdGwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pcHMvY2F2aXVtL3VjdGwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhNjZiOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlwcy9jYXZpdW0vdWN0bC50eHQKQEAgLTAsMCArMSw0NiBAQAorKiBVQ1RMIFVTQiBjb250cm9sbGVyIGdsdWUKKworUHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImNhdml1bSxvY3Rlb24tNjMzNS11Y3RsIgorCisgIENvbXBhdGliaWxpdHkgd2l0aCBhbGwgY242WFhYIFNPQ3MuCisKKy0gcmVnOiBUaGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBVQ1RMIHJlZ2lzdGVyIGJhbmsuCisKKy0gI2FkZHJlc3MtY2VsbHM6IE11c3QgYmUgPDI+LgorCistICNzaXplLWNlbGxzOiBNdXN0IGJlIDwyPi4KKworLSByYW5nZXM6IEVtcHR5IHRvIHNpZ25pZnkgZGlyZWN0IG1hcHBpbmcgb2YgdGhlIGNoaWxkcmVuLgorCistIHJlZmNsay1mcmVxdWVuY3k6IEEgc2luZ2xlIGNlbGwgY29udGFpbmluZyB0aGUgcmVmZXJlbmNlIGNsb2NrCisgIGZyZXF1ZW5jeSBpbiBIei4KKworLSByZWZjbGstdHlwZTogQSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgcmVmZXJlbmNlIGNsb2NrIGNvbm5lY3Rpb24KKyAgZWl0aGVyICJjcnlzdGFsIiBvciAiZXh0ZXJuYWwiLgorCitFeGFtcGxlOgorCXVjdGxAMTE4MDA2ZjAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiY2F2aXVtLG9jdGVvbi02MzM1LXVjdGwiOworCQlyZWcgPSA8MHgxMTgwMCAweDZmMDAwMDAwIDB4MCAweDEwMD47CisJCXJhbmdlczsgLyogRGlyZWN0IG1hcHBpbmcgKi8KKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mj47CisJCSNzaXplLWNlbGxzID0gPDI+OworCQkvKiAxMk1IeiwgMjRNSHogYW5kIDQ4TUh6IGFsbG93ZWQgKi8KKwkJcmVmY2xrLWZyZXF1ZW5jeSA9IDwyNDAwMDAwMD47CisJCS8qIEVpdGhlciAiY3J5c3RhbCIgb3IgImV4dGVybmFsIiAqLworCQlyZWZjbGstdHlwZSA9ICJjcnlzdGFsIjsKKworCQllaGNpQDE2ZjAwMDAwMDAwMDAgeworCQkJY29tcGF0aWJsZSA9ICJjYXZpdW0sb2N0ZW9uLTYzMzUtZWhjaSIsInVzYi1laGNpIjsKKwkJCXJlZyA9IDwweDE2ZjAwIDB4MDAwMDAwMDAgMHgwIDB4MTAwPjsKKwkJCWludGVycnVwdHMgPSA8MCA1Nj47CisJCQliaWctZW5kaWFuLXJlZ3M7CisJCX07CisJCW9oY2lAMTZmMDAwMDAwMDQwMCB7CisJCQljb21wYXRpYmxlID0gImNhdml1bSxvY3Rlb24tNjMzNS1vaGNpIiwidXNiLW9oY2kiOworCQkJcmVnID0gPDB4MTZmMDAgMHgwMDAwMDQwMCAweDAgMHgxMDA+OworCQkJaW50ZXJydXB0cyA9IDwwIDU2PjsKKwkJCWJpZy1lbmRpYW4tcmVnczsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pcHMvY3B1X2lycS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlwcy9jcHVfaXJxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzE0OWYzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pcHMvY3B1X2lycS50eHQKQEAgLTAsMCArMSw0NyBAQAorTUlQUyBDUFUgaW50ZXJydXB0IGNvbnRyb2xsZXIKKworT24gTUlQUyB0aGUgbWlwc19jcHVfaXJxX29mX2luaXQoKSBoZWxwZXIgY2FuIGJlIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgOCBDUFUKK0lSUXMgZnJvbSBhIGRldmljZXRyZWUgZmlsZSBhbmQgY3JlYXRlIGEgaXJxX2RvbWFpbiBmb3IgSVJRIGNvbnRyb2xsZXIuCisKK1dpdGggdGhlIGlycV9kb21haW4gaW4gcGxhY2Ugd2UgY2FuIGRlc2NyaWJlIGhvdyB0aGUgOCBJUlFzIGFyZSB3aXJlZCB0byB0aGUKK3BsYXRmb3JtcyBpbnRlcm5hbCBpbnRlcnJ1cHQgY29udHJvbGxlciBjYXNjYWRlLgorCitCZWxvdyBpcyBhbiBleGFtcGxlIG9mIGEgcGxhdGZvcm0gZGVzY3JpYmluZyB0aGUgY2FzY2FkZSBpbnNpZGUgdGhlIGRldmljZXRyZWUKK2FuZCB0aGUgY29kZSB1c2VkIHRvIGxvYWQgaXQgaW5zaWRlIGFyY2hfaW5pdF9pcnEoKS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAibXRpLGNwdS1pbnRlcnJ1cHQtY29udHJvbGxlciIKKworRXhhbXBsZSBkZXZpY2V0cmVlOgorCWNwdS1pcnE6IGNwdS1pcnFAMCB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDA+OworCisJCWludGVycnVwdC1jb250cm9sbGVyOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCisJCWNvbXBhdGlibGUgPSAibXRpLGNwdS1pbnRlcnJ1cHQtY29udHJvbGxlciI7CisJfTsKKworCWludGM6IGludGNAMjAwIHsKKwkJY29tcGF0aWJsZSA9ICJyYWxpbmsscnQyODgwLWludGMiOworCQlyZWcgPSA8MHgyMDAgMHgxMDA+OworCisJCWludGVycnVwdC1jb250cm9sbGVyOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCisJCWludGVycnVwdC1wYXJlbnQgPSA8JmNwdS1pcnE+OworCQlpbnRlcnJ1cHRzID0gPDI+OworCX07CisKKworRXhhbXBsZSBwbGF0Zm9ybSBpcnEuYzoKK3N0YXRpYyBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIF9faW5pdGRhdGEgb2ZfaXJxX2lkc1tdID0geworCXsgLmNvbXBhdGlibGUgPSAibXRpLGNwdS1pbnRlcnJ1cHQtY29udHJvbGxlciIsIC5kYXRhID0gbWlwc19jcHVfaXJxX29mX2luaXQgfSwKKwl7IC5jb21wYXRpYmxlID0gInJhbGluayxydDI4ODAtaW50YyIsIC5kYXRhID0gaW50Y19vZl9pbml0IH0sCisJe30sCit9OworCit2b2lkIF9faW5pdCBhcmNoX2luaXRfaXJxKHZvaWQpCit7CisJb2ZfaXJxX2luaXQob2ZfaXJxX2lkcyk7Cit9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlwcy9pbWcvcGlzdGFjaGlvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXBzL2ltZy9waXN0YWNoaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MzZkODgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlwcy9pbWcvcGlzdGFjaGlvLnR4dApAQCAtMCwwICsxLDQyIEBACitJbWFnaW5hdGlvbiBQaXN0YWNoaW8gU29DCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tLQorIC0gY29tcGF0aWJsZTogTXVzdCBpbmNsdWRlICJpbWcscGlzdGFjaGlvIi4KKworQ1BVIG5vZGVzOgorLS0tLS0tLS0tLQorQSAiY3B1cyIgbm9kZSBpcyByZXF1aXJlZC4gIFJlcXVpcmVkIHByb3BlcnRpZXM6CisgLSAjYWRkcmVzcy1jZWxsczogTXVzdCBiZSAxLgorIC0gI3NpemUtY2VsbHM6IE11c3QgYmUgMC4KK0EgQ1BVIHN1Yi1ub2RlIGlzIGFsc28gcmVxdWlyZWQgZm9yIGF0IGxlYXN0IENQVSAwLiAgU2luY2UgdGhlIHRvcG9sb2d5IG1heQorYmUgcHJvYmVkIHZpYSBDUFMsIGl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gc3BlY2lmeSBzZWNvbmRhcnkgQ1BVcy4gIFJlcXVpcmVkCitwcm9wZXJ0aXM6CisgLSBkZXZpY2VfdHlwZTogTXVzdCBiZSAiY3B1Ii4KKyAtIGNvbXBhdGlibGU6IE11c3QgYmUgIm10aSxpbnRlcmFwdGl2Ii4KKyAtIHJlZzogQ1BVIG51bWJlci4KKyAtIGNsb2NrczogTXVzdCBpbmNsdWRlIHRoZSBDUFUgY2xvY2suICBTZWUgLi4vLi4vY2xvY2svY2xvY2stYmluZGluZ3MudHh0IGZvcgorICAgZGV0YWlscyBvbiBjbG9jayBiaW5kaW5ncy4KK0V4YW1wbGU6CisJY3B1cyB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQljcHUwOiBjcHVAMCB7CisJCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQkJY29tcGF0aWJsZSA9ICJtdGksaW50ZXJhcHRpdiI7CisJCQlyZWcgPSA8MD47CisJCQljbG9ja3MgPSA8JmNsa19jb3JlIENMS19NSVBTPjsKKwkJfTsKKwl9OworCisKK0Jvb3QgcHJvdG9jb2w6CistLS0tLS0tLS0tLS0tLQorSW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBNSVBTIFVISSBzcGVjaWZpY2F0aW9uWzFdLCB0aGUgYm9vdGxvYWRlciBtdXN0IHBhc3MgdGhlCitmb2xsb3dpbmcgYXJndW1lbnRzIHRvIHRoZSBrZXJuZWw6CisgLSAkYTA6IC0yLgorIC0gJGExOiBLU0VHMCBhZGRyZXNzIG9mIHRoZSBmbGF0dGVuZWQgZGV2aWNlLXRyZWUgYmxvYi4KKworWzFdIGh0dHA6Ly9wcnBsZm91bmRhdGlvbi5vcmcvd2lraS9NSVBTX2RvY3VtZW50YXRpb24KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXBzL2ltZy94aWxmcGdhLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXBzL2ltZy94aWxmcGdhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2U3ZWU5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pcHMvaW1nL3hpbGZwZ2EudHh0CkBAIC0wLDAgKzEsODMgQEAKK0ltYWdpbmF0aW9uIFVuaXZlcnNpdHkgUHJvZ3JhbSBNSVBTZnBnYQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1VuZGVyIHRoZSBJbWFnaW5hdGlvbiBVbml2ZXJzaXR5IFByb2dyYW0sIGEgbWljcm9BcHRpdiBVUCBjb3JlIGhhcyBiZWVuCityZWxlYXNlZCBmb3IgYWNhZGVtaWMgdXNhZ2UuCisKK0FzIHdlIGFyZSBkZWFsaW5nIHdpdGggYSBNSVBTIGNvcmUgaW5zdGFudGlhdGVkIG9uIGFuIEZQR0EsIHNwZWNpZmljYXRpb25zCithcmUgZmx1aWQgYW5kIGNhbiBiZSB2YXJpZWQgaW4gUlRMLgorCitUaGlzIGJpbmRpbmcgZG9jdW1lbnQgaXMgcHJvdmlkZWQgYXMgYmFzZWxpbmUgZ3VpZGFuY2UgZm9yIHRoZSBleGFtcGxlCitwcm9qZWN0IHByb3ZpZGVkIGJ5IElNRy4KKworVGhlIGV4YW1wbGUgcHJvamVjdCBydW5zIG9uIHRoZSBOZXh5czRERFIgYm9hcmQgYnkgRGlnaWxlbnQgcG93ZXJlZCBieQordGhlIEFSVElYLTcgRlBHQSBieSBYaWxpbnguCisKK1JlbGV2YW50IGRldGFpbHMgYWJvdXQgdGhlIGV4YW1wbGUgcHJvamVjdCBhbmQgdGhlIE5leHlzNEREUiBib2FyZDoKKworLSBtaWNyb0FwdGl2IFVQIGNvcmUgbTE0S2MKKy0gNTBNSHogY2xvY2sgc3BlZWQKKy0gMTI4TWJ5dGUgRERSIFJBTQlhdCAweDAwMDBfMDAwMAorLSA4S2J5dGUgUkFNCQlhdCAweDEwMDBfMDAwMAorLSBheGlfaW50YwkJYXQgMHgxMDIwXzAwMDAKKy0gYXhpX3VhcnQxNjU1MAkJYXQgMHgxMDQwXzAwMDAKKy0gYXhpX2dwaW8JCWF0IDB4MTA2MF8wMDAwCistIGF4aV9pMmMJCWF0IDB4MTBBMF8wMDAwCistIGN1c3RvbV9ncGlvCQlhdCAweDEwQzBfMDAwMAorLSBheGlfZXRoZXJuZXRsaXRlCWF0IDB4MTBFMF8wMDAwCistIDhLYnl0ZSBCb290UkFNCWF0IDB4MUZDMF8wMDAwCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tLQorIC0gY29tcGF0aWJsZTogTXVzdCBpbmNsdWRlICJkaWdpbGVudCxuZXh5czRkZHIiLCJpbWcseGlsZnBnYSIuCisKK0NQVSBub2RlczoKKy0tLS0tLS0tLS0KK0EgImNwdXMiIG5vZGUgaXMgcmVxdWlyZWQuICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gI2FkZHJlc3MtY2VsbHM6IE11c3QgYmUgMS4KKyAtICNzaXplLWNlbGxzOiBNdXN0IGJlIDAuCitBIENQVSBzdWItbm9kZSBpcyBhbHNvIHJlcXVpcmVkIGZvciBhdCBsZWFzdCBDUFUgMC4gUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGRldmljZV90eXBlOiBNdXN0IGJlICJjcHUiLgorIC0gY29tcGF0aWJsZTogTXVzdCBiZSAibWlwcyxtMTRLYyIuCisgLSByZWc6IE11c3QgYmUgPDA+LgorIC0gY2xvY2tzOiBwaGFuZGxlIHRvIGV4dCBjbG9jayBmb3IgZml4ZWQtY2xvY2sgcmVjZWl2ZWQgYnkgTUlQUyBjb3JlLgorCitFeGFtcGxlOgorCisJY29tcGF0aWJsZSA9ICJpbWcseGlsZnBnYSIsImRpZ2lsZW50LG5leHlzNGRkciI7CisJY3B1cyB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQljcHUwOiBjcHVAMCB7CisJCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQkJY29tcGF0aWJsZSA9ICJtaXBzLG0xNEtjIjsKKwkJCXJlZyA9IDwwPjsKKwkJCWNsb2Nrcwk9IDwmZXh0PjsKKwkJfTsKKwl9OworCisJZXh0OiBleHQgeworCQljb21wYXRpYmxlID0gImZpeGVkLWNsb2NrIjsKKwkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQljbG9jay1mcmVxdWVuY3kgPSA8NTAwMDAwMDA+OworCX07CisKK0Jvb3QgcHJvdG9jb2w6CistLS0tLS0tLS0tLS0tLQorCitUaGUgQm9vdFJBTSBpcyBhIHdyaXRlYWJsZSAiUkFNIiBpbiBGUEdBIGF0IDB4MUZDMF8wMDAwLgorVGhpcyBpcyBmb3IgZWFzeSByZXByb2dyYW1taWJpbGl0eSB2aWEgSlRBRy4KKworVGhlIEJvb3RSQU0gaW5pdGlhbGl6ZXMgdGhlIGNhY2hlIGFuZCB0aGUgYXhpX3VhcnQgcGVyaXBoZXJhbC4KKworRERSIGluaXRpYWxpemF0aW9uIGlzIGFscmVhZHkgaGFuZGxlZCBieSBhIEhXIElQIGJsb2NrLgorCitXaGVuIHRoZSBleGFtcGxlIHByb2plY3QgYml0c3RyZWFtIGlzIGxvYWRlZCwgdGhlIGNwdV9yZXNldCBidXR0b24KK25lZWRzIHRvIGJlIHByZXNzZWQuCisKK1RoZSBib290cmFtIGluaXRpYWxpemVzIHRoZSBjYWNoZSBhbmQgYXhpX3VhcnQuCitUaGVuIG91dHB1dHMgTUlQU0ZQR0FcblxyIG9uIHRoZSBzZXJpYWwgcG9ydCBvbiB0aGUgTmV4eXM0RERSIGJvYXJkLgorCitBdCB0aGlzIHBvaW50LCB0aGUgYm9hcmQgaXMgcmVhZHkgdG8gbG9hZCB0aGUgTGludXgga2VybmVsCit2bWxpbnV4IGZpbGUgdmlhIEpUQUcuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlwcy9yYWxpbmsudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pcHMvcmFsaW5rLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzVhOGQwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pcHMvcmFsaW5rLnR4dApAQCAtMCwwICsxLDE3IEBACitSYWxpbmsgTUlQUyBTb0MgZGV2aWNlIHRyZWUgYmluZGluZ3MKKworMS4gU29DcworCitFYWNoIGRldmljZSB0cmVlIG11c3Qgc3BlY2lmeSBhIGNvbXBhdGlibGUgdmFsdWUgZm9yIHRoZSBSYWxpbmsgU29DCitpdCB1c2VzIGluIHRoZSBjb21wYXRpYmxlIHByb3BlcnR5IG9mIHRoZSByb290IG5vZGUuIFRoZSBjb21wYXRpYmxlCit2YWx1ZSBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKworICByYWxpbmsscnQyODgwLXNvYworICByYWxpbmsscnQzMDUwLXNvYworICByYWxpbmsscnQzMDUyLXNvYworICByYWxpbmsscnQzMzUwLXNvYworICByYWxpbmsscnQzMzUyLXNvYworICByYWxpbmsscnQzODgzLXNvYworICByYWxpbmsscnQ1MzUwLXNvYworICByYWxpbmssbXQ3NjIwYS1zb2MKKyAgcmFsaW5rLG10NzYyMG4tc29jCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9hcm0tY2hhcmxjZC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9hcm0tY2hhcmxjZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI4ZTJhYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2FybS1jaGFybGNkLnR4dApAQCAtMCwwICsxLDE4IEBACitBUk0gVmVyc2F0aWxlIENoYXJhY3RlciBMQ0QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGlzIGJpbmRpbmcgZGVmaW5lcyB0aGUgY2hhcmFjdGVyIExDRCBpbnRlcmZhY2UgZm91bmQgb24gQVJNIFZlcnNhdGlsZSBBQgorYW5kIFBCIHJlZmVyZW5jZSBwbGF0Zm9ybXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAiYXJtLHZlcnNhdGlsZS1jbGNkIgorLSByZWcgOiBMb2NhdGlvbiBhbmQgc2l6ZSBvZiBjaGFyYWN0ZXIgTENEIHJlZ2lzdGVycworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBpbnRlcnJ1cHRzIC0gc2luZ2xlIGludGVycnVwdCBmb3IgY2hhcmFjdGVyIExDRC4gVGhlIGNoYXJhY3RlciBMQ0QgY2FuCisgIG9wZXJhdGUgaW4gcG9sbGVkIG1vZGUgd2l0aG91dCBhbiBpbnRlcnJ1cHQuCisKK0V4YW1wbGU6CisJbGNkQDEwMDA4MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0sdmVyc2F0aWxlLWxjZCI7CisJCXJlZyA9IDwweDEwMDA4MDAwIDB4MTAwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2F0bWVsLXNzYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9hdG1lbC1zc2MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmYzk4ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9hdG1lbC1zc2MudHh0CkBAIC0wLDAgKzEsNDkgQEAKKyogQXRtZWwgU1NDIGRyaXZlci4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImF0bWVsLGF0OTFybTkyMDAtc3NjIiBvciAiYXRtZWwsYXQ5MXNhbTlnNDUtc3NjIgorCS0gYXRtZWwsYXQ5MXJtOTIwMC1zc2M6IHN1cHBvcnQgcGRjIHRyYW5zZmVyCisJLSBhdG1lbCxhdDkxc2FtOWc0NS1zc2M6IHN1cHBvcnQgZG1hIHRyYW5zZmVyCistIHJlZzogU2hvdWxkIGNvbnRhaW4gU1NDIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIFNTQyBpbnRlcnJ1cHQKKy0gY2xvY2stbmFtZXM6IHR1cGxlIGxpc3RpbmcgaW5wdXQgY2xvY2sgbmFtZXMuCisJUmVxdWlyZWQgZWxlbWVudHM6ICJwY2xrIgorLSBjbG9ja3M6IHBoYW5kbGVzIHRvIGlucHV0IGNsb2Nrcy4KKworCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBkZXZpY2VzIGNvbXBhdGlibGUgd2l0aCAiYXRtZWwsYXQ5MXNhbTlnNDUtc3NjIjoKKy0gZG1hczogRE1BIHNwZWNpZmllciwgY29uc2lzdGluZyBvZiBhIHBoYW5kbGUgdG8gRE1BIGNvbnRyb2xsZXIgbm9kZSwKKyAgdGhlIG1lbW9yeSBpbnRlcmZhY2UgYW5kIFNTQyBETUEgY2hhbm5lbCBJRCAoZm9yIHR4IGFuZCByeCkuCisgIFNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2F0bWVsLWRtYS50eHQgZm9yIGRldGFpbHMuCistIGRtYS1uYW1lczogTXVzdCBiZSAidHgiLCAicngiLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIGF0bWVsLGNsay1mcm9tLXJrLXBpbjogYm9vbCBwcm9wZXJ0eS4KKyAgICAgLSBXaGVuIFNTQyB3b3JrcyBpbiBzbGF2ZSBtb2RlLCBhY2NvcmRpbmcgdG8gdGhlIGhhcmR3YXJlIGRlc2lnbiwgdGhlCisgICAgICAgY2xvY2sgY2FuIGdldCBmcm9tIFRLIHBpbiwgYW5kIGFsc28gY2FuIGdldCBmcm9tIFJLIHBpbi4gU28sIGFkZAorICAgICAgIHRoaXMgcGFyYW1ldGVyIHRvIGNob29zZSB3aGVyZSB0aGUgY2xvY2sgZnJvbS4KKyAgICAgLSBCeSBkZWZhdWx0IHRoZSBjbG9jayBpcyBmcm9tIFRLIHBpbiwgaWYgdGhlIGNsb2NrIGZyb20gUksgcGluLCB0aGlzCisgICAgICAgcHJvcGVydHkgaXMgbmVlZGVkLgorCitFeGFtcGxlczoKKy0gUERDIHRyYW5zZmVyOgorc3NjMDogc3NjQGZmZmJjMDAwIHsKKwljb21wYXRpYmxlID0gImF0bWVsLGF0OTFybTkyMDAtc3NjIjsKKwlyZWcgPSA8MHhmZmZiYzAwMCAweDQwMDA+OworCWludGVycnVwdHMgPSA8MTQgNCA1PjsKKwljbG9ja3MgPSA8JnNzYzBfY2xrPjsKKwljbG9jay1uYW1lcyA9ICJwY2xrIjsKK307CisKKy0gRE1BIHRyYW5zZmVyOgorc3NjMDogc3NjQGYwMDEwMDAwIHsKKyAgICAgIGNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXNhbTlnNDUtc3NjIjsKKyAgICAgIHJlZyA9IDwweGYwMDEwMDAwIDB4NDAwMD47CisgICAgICBpbnRlcnJ1cHRzID0gPDI4IDQgNT47CisgICAgICBkbWFzID0gPCZkbWEwIDEgMTM+LAorCSAgICAgPCZkbWEwIDEgMTQ+OworICAgICAgZG1hLW5hbWVzID0gInR4IiwgInJ4IjsKKyAgICAgIHBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisgICAgICBwaW5jdHJsLTAgPSA8JnBpbmN0cmxfc3NjMF90eCAmcGluY3RybF9zc2MwX3J4PjsKKyAgICAgIHN0YXR1cyA9ICJkaXNhYmxlZCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvYnJjbSxrb25hLXNtYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9icmNtLGtvbmEtc21jLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzlmMTc2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvYnJjbSxrb25hLXNtYy50eHQKQEAgLTAsMCArMSwxNSBAQAorQnJvYWRjb20gU2VjdXJlIE1vbml0b3IgQm91bmNlIGJ1ZmZlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgYmluZGluZyBkZWZpbmVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgYm91bmNlIGJ1ZmZlcgordXNlZCBmb3Igbm9uLXNlY3VyZSB0byBzZWN1cmUgY29tbXVuaWNhdGlvbnMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAiYnJjbSxrb25hLXNtYyIKKy0gREVQUkVDQVRFRDogY29tcGF0aWJsZSA6ICJiY20sa29uYS1zbWMiCistIHJlZyA6IExvY2F0aW9uIGFuZCBzaXplIG9mIGJvdW5jZSBidWZmZXIKKworRXhhbXBsZToKKwlzbWNAMHgzNDA0YzAwMCB7CisJCWNvbXBhdGlibGUgPSAiYnJjbSxiY20xMTM1MS1zbWMiLCAiYnJjbSxrb25hLXNtYyI7CisJCXJlZyA9IDwweDM0MDRjMDAwIDB4NDAwPjsgLy8xIEtpQiBpbiBTUkFNCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2ZzbCxxb3JpcS1tYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9mc2wscW9yaXEtbWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3YTI2Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9mc2wscW9yaXEtbWMudHh0CkBAIC0wLDAgKzEsNDAgQEAKKyogRnJlZXNjYWxlIE1hbmFnZW1lbnQgQ29tcGxleAorCitUaGUgRnJlZXNjYWxlIE1hbmFnZW1lbnQgQ29tcGxleCAoZnNsLW1jKSBpcyBhIGhhcmR3YXJlIHJlc291cmNlCittYW5hZ2VyIHRoYXQgbWFuYWdlcyBzcGVjaWFsaXplZCBoYXJkd2FyZSBvYmplY3RzIHVzZWQgaW4KK25ldHdvcmstb3JpZW50ZWQgcGFja2V0IHByb2Nlc3NpbmcgYXBwbGljYXRpb25zLiBBZnRlciB0aGUgZnNsLW1jCitibG9jayBpcyBlbmFibGVkLCBwb29scyBvZiBoYXJkd2FyZSByZXNvdXJjZXMgYXJlIGF2YWlsYWJsZSwgc3VjaCBhcworcXVldWVzLCBidWZmZXIgcG9vbHMsIEkvTyBpbnRlcmZhY2VzLiBUaGVzZSByZXNvdXJjZXMgYXJlIGJ1aWxkaW5nCitibG9ja3MgdGhhdCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgZnVuY3Rpb25hbCBoYXJkd2FyZSBvYmplY3RzL2RldmljZXMKK3N1Y2ggYXMgbmV0d29yayBpbnRlcmZhY2VzLCBjcnlwdG8gYWNjZWxlcmF0b3IgaW5zdGFuY2VzLCBMMiBzd2l0Y2hlcywKK2V0Yy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAgIC0gY29tcGF0aWJsZQorICAgICAgICBWYWx1ZSB0eXBlOiA8c3RyaW5nPgorICAgICAgICBEZWZpbml0aW9uOiBNdXN0IGJlICJmc2wscW9yaXEtbWMiLiAgQSBGcmVlc2NhbGUgTWFuYWdlbWVudCBDb21wbGV4CisgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgd2l0aCB0aGlzIGJpbmRpbmcgbXVzdCBoYXZlIEJsb2NrIFJldmlzaW9uCisgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVycyBCUlIxIGFuZCBCUlIyIGF0IG9mZnNldCAweDBCRjggYW5kIDB4MEJGQyBpbgorICAgICAgICAgICAgICAgICAgICB0aGUgTUMgY29udHJvbCByZWdpc3RlciByZWdpb24uCisKKyAgICAtIHJlZworICAgICAgICBWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorICAgICAgICBEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiAgU3BlY2lmaWVzIG9uZSBvciB0d28gcmVnaW9ucworICAgICAgICAgICAgICAgICAgICBkZWZpbmluZyB0aGUgTUMncyByZWdpc3RlcnM6CisKKyAgICAgICAgICAgICAgICAgICAgICAgLXRoZSBmaXJzdCByZWdpb24gaXMgdGhlIGNvbW1hbmQgcG9ydGFsIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgbWFjaGluZSBhbmQgbXVzdCBhbHdheXMgYmUgcHJlc2VudAorCisgICAgICAgICAgICAgICAgICAgICAgIC10aGUgc2Vjb25kIHJlZ2lvbiBpcyB0aGUgTUMgY29udHJvbCByZWdpc3RlcnMuIFRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbiBtYXkgbm90IGJlIHByZXNlbnQgaW4gc29tZSBzY2VuYXJpb3MsIHN1Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzIGluIHRoZSBkZXZpY2UgdHJlZSBwcmVzZW50ZWQgdG8gYSB2aXJ0dWFsIG1hY2hpbmUuCisKK0V4YW1wbGU6CisKKyAgICAgICAgZnNsX21jOiBmc2wtbWNAODBjMDAwMDAwIHsKKyAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gImZzbCxxb3JpcS1tYyI7CisgICAgICAgICAgICAgICAgcmVnID0gPDB4MDAwMDAwMDggMHgwYzAwMDAwMCAwIDB4NDA+LCAgICAvKiBNQyBwb3J0YWwgYmFzZSAqLworICAgICAgICAgICAgICAgICAgICAgIDwweDAwMDAwMDAwIDB4MDgzNDAwMDAgMCAweDQwMDAwPjsgLyogTUMgY29udHJvbCByZWcgKi8KKyAgICAgICAgfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvaWZtLWNzaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9pZm0tY3NpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmRmZmZiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvaWZtLWNzaS50eHQKQEAgLTAsMCArMSw0MSBAQAorSUZNIGNhbWVyYSBzZW5zb3IgaW50ZXJmYWNlIG9uIG1wYzUyMDAgTG9jYWxQbHVzIGJ1cworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiaWZtLG8yZC1jc2kiCistIHJlZzogc3BlY2lmaWVzIHNlbnNvciBjaGlwIHNlbGVjdCBudW1iZXIgYW5kIGFzc29jaWF0ZWQgYWRkcmVzcyByYW5nZQorLSBpbnRlcnJ1cHRzOiBleHRlcm5hbCBpbnRlcnJ1cHQgbGluZSBudW1iZXIgYW5kIGludGVycnVwdCBzZW5zZSBtb2RlCisgIG9mIHRoZSBpbnRlcnJ1cHQgbGluZSBzaWduYWxpbmcgZnJhbWUgdmFsaWQgZXZlbnRzCistIGdwaW9zOiB0aHJlZSBncGlvLXNwZWNpZmllcnMgZm9yICJjYXB0dXJlIiwgInJlc2V0IiBhbmQgIm1hc3RlciBlbmFibGUiCisgIEdQSU9zIChzdHJpY3RseSBpbiB0aGlzIG9yZGVyKS4KKy0gaWZtLGNzaS1jbGstaGFuZGxlOiB0aGUgcGhhbmRsZSB0byBhIG5vZGUgaW4gdGhlIERUIGRlc2NyaWJpbmcgdGhlIHNlbnNvcgorICBjbG9jayBnZW5lcmF0b3IuIFRoaXMgbm9kZSBpcyB1c3VhbGx5IGEgZ2VuZXJhbCBwdXJwb3NlIHRpbWVyIGNvbnRyb2xsZXIuCistIGlmbSxjc2ktYWRkci1idXMtd2lkdGg6IGFkZHJlc3MgYnVzIHdpZHRoICh2YWxpZCB2YWx1ZXMgYXJlIDE2LCAyNCwgMjUpCistIGlmbSxjc2ktZGF0YS1idXMtd2lkdGg6IGRhdGEgYnVzIHdpZHRoICh2YWxpZCB2YWx1ZXMgYXJlIDggYW5kIDE2KQorLSBpZm0sY3NpLXdhaXQtY3ljbGVzOiBzZW5zb3IgYnVzIHdhaXQgY3ljbGVzCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGlmbSxjc2ktYnl0ZS1zd2FwOiBpZiB0aGlzIHByb3BlcnR5IGlzIHByZXNlbnQsIHRoZSBieXRlIHN3YXBwaW5nIG9uCisgIHRoZSBidXMgd2lsbCBiZSBlbmFibGVkLgorCitFeGFtcGxlOgorCisJY3NpQDMsMCB7CisJCWNvbXBhdGlibGUgPSAiaWZtLG8yZC1jc2kiOworCQlyZWcgPSA8MyAwIDB4MDAxMDAwMDA+OwkJLyogQ1MgMywgMSBNaUIgcmFuZ2UgKi8KKwkJaW50ZXJydXB0cyA9IDwxIDEgMj47CQkvKiBJUlExLCBlZGdlIGZhbGxpbmcgKi8KKworCQlpZm0sY3NpLWNsay1oYW5kbGUgPSA8JnRpbWVyNz47CisJCWdwaW9zID0gPCZncGlvX3NpbXBsZSAyMyAwCS8qIGltYWdlX2NhcHR1cmUgKi8KKwkJCSAmZ3Bpb19zaW1wbGUgMjYgMAkvKiBpbWFnZV9yZXNldCAqLworCQkJICZncGlvX3NpbXBsZSAyOSAwPjsJLyogaW1hZ2VfbWFzdGVyX2VuICovCisKKwkJaWZtLGNzaS1hZGRyLWJ1cy13aWR0aCA9IDwyND47CisJCWlmbSxjc2ktZGF0YS1idXMtd2lkdGggPSA8OD47CisJCWlmbSxjc2ktd2FpdC1jeWNsZXMgPSA8MD47CisJfTsKKworVGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgdXNlZCBjaGlwIHNlbGVjdCBpcyBzcGVjaWZpZWQgaW4gdGhlCityYW5nZXMgcHJvcGVydHkgb2YgdGhlIHBhcmVudCBsb2NhbGJ1cyBub2RlLCBmb3IgZXhhbXBsZToKKworCXJhbmdlcyA9IDwwIDAgMHhmZjAwMDAwMCAweDAxMDAwMDAwCisJCSAgMyAwIDB4ZTMwMDAwMDAgMHgwMDEwMDAwMD47CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9udmlkaWEsdGVncmEyMC1hcGJtaXNjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL252aWRpYSx0ZWdyYTIwLWFwYm1pc2MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1NTYzNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9udmlkaWEsdGVncmEyMC1hcGJtaXNjLnR4dApAQCAtMCwwICsxLDE0IEBACitOVklESUEgVGVncmEyMC9UZWdyYTMwL1RlZ3IxMTQvVGVncmExMjQgYXBibWlzYyBibG9jaworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogRm9yIFRlZ3JhMjAsIG11c3QgYmUgIm52aWRpYSx0ZWdyYTIwLWFwYm1pc2MiLiAgRm9yIFRlZ3JhMzAsCisgIG11c3QgYmUgIm52aWRpYSx0ZWdyYTMwLWFwYm1pc2MiLiAgT3RoZXJ3aXNlLCBtdXN0IGNvbnRhaW4KKyAgIm52aWRpYSw8Y2hpcD4tYXBibWlzYyIsIHBsdXMgb25lIG9mIHRoZSBhYm92ZSwgd2hlcmUgPGNoaXA+IGlzIHRlZ3JhMTE0LAorICB0ZWdyYTEyNCwgdGVncmExMzIuCistIHJlZzogU2hvdWxkIGNvbnRhaW4gMiBlbnRyaWVzOiB0aGUgZmlyc3QgZW50cnkgZ2l2ZXMgdGhlIHBoeXNpY2FsIGFkZHJlc3MKKyAgICAgICBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlcnMgd2hpY2ggY29udGFpbiByZXZpc2lvbiBhbmQgZGVidWcgZmVhdHVyZXMuCisgICAgICAgVGhlIHNlY29uZCBlbnRyeSBnaXZlcyB0aGUgcGh5c2ljYWwgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZQorICAgICAgIHJlZ2lzdGVycyBpbmRpY2F0aW5nIHRoZSBzdHJhcHBpbmcgb3B0aW9ucy4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gbnZpZGlhLGxvbmctcmFtLWNvZGU6IElmIHByZXNlbnQsIHRoZSBSQU0gY29kZSBpcyBsb25nICg0IGJpdCkuIElmIG5vdCwgc2hvcnQgKDIgYml0KS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL3NyYW0udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2Mvc3JhbS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJlZTk0MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL3NyYW0udHh0CkBAIC0wLDAgKzEsNjcgQEAKK0dlbmVyaWMgb24tY2hpcCBTUkFNCisKK1NpbXBsZSBJTyBtZW1vcnkgcmVnaW9ucyB0byBiZSBtYW5hZ2VkIGJ5IHRoZSBnZW5hbGxvYyBBUEkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IG1taW8tc3JhbQorCistIHJlZyA6IFNSQU0gaW9tZW0gYWRkcmVzcyByYW5nZQorCitSZXNlcnZpbmcgc3JhbSBhcmVhczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFYWNoIGNoaWxkIG9mIHRoZSBzcmFtIG5vZGUgc3BlY2lmaWVzIGEgcmVnaW9uIG9mIHJlc2VydmVkIG1lbW9yeS4gRWFjaAorY2hpbGQgbm9kZSBzaG91bGQgdXNlIGEgJ3JlZycgcHJvcGVydHkgdG8gc3BlY2lmeSBhIHNwZWNpZmljIHJhbmdlIG9mCityZXNlcnZlZCBtZW1vcnkuCisKK0ZvbGxvd2luZyB0aGUgZ2VuZXJpYy1uYW1lcyByZWNvbW1lbmRlZCBwcmFjdGljZSwgbm9kZSBuYW1lcyBzaG91bGQKK3JlZmxlY3QgdGhlIHB1cnBvc2Ugb2YgdGhlIG5vZGUuIFVuaXQgYWRkcmVzcyAoQDxhZGRyZXNzPikgc2hvdWxkIGJlCithcHBlbmRlZCB0byB0aGUgbmFtZS4KKworUmVxdWlyZWQgcHJvcGVydGllcyBpbiB0aGUgc3JhbSBub2RlOgorCistICNhZGRyZXNzLWNlbGxzLCAjc2l6ZS1jZWxscyA6IHNob3VsZCB1c2UgdGhlIHNhbWUgdmFsdWVzIGFzIHRoZSByb290IG5vZGUKKy0gcmFuZ2VzIDogc3RhbmRhcmQgZGVmaW5pdGlvbiwgc2hvdWxkIHRyYW5zbGF0ZSBmcm9tIGxvY2FsIGFkZHJlc3NlcworICAgICAgICAgICB3aXRoaW4gdGhlIHNyYW0gdG8gYnVzIGFkZHJlc3NlcworCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGluIHRoZSBhcmVhIG5vZGVzOgorCistIHJlZyA6IGlvbWVtIGFkZHJlc3MgcmFuZ2UsIHJlbGF0aXZlIHRvIHRoZSBTUkFNIHJhbmdlCisKK09wdGlvbmFsIHByb3BlcnRpZXMgaW4gdGhlIGFyZWEgbm9kZXM6CisKKy0gY29tcGF0aWJsZSA6IHN0YW5kYXJkIGRlZmluaXRpb24sIHNob3VsZCBjb250YWluIGEgdmVuZG9yIHNwZWNpZmljIHN0cmluZworICAgICAgICAgICAgICAgaW4gdGhlIGZvcm0gPHZlbmRvcj4sWzxkZXZpY2U+LV08dXNhZ2U+CistIHBvb2wgOiBpbmRpY2F0ZXMgdGhhdCB0aGUgcGFydGljdWxhciByZXNlcnZlZCBTUkFNIGFyZWEgaXMgYWRkcmVzc2FibGUKKyAgICAgICAgIGFuZCBpbiB1c2UgYnkgYW5vdGhlciBkZXZpY2Ugb3IgZGV2aWNlcworLSBleHBvcnQgOiBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVzZXJ2ZWQgU1JBTSBhcmVhIG1heSBiZSBhY2Nlc3NlZCBvdXRzaWRlCisgICAgICAgICAgIG9mIHRoZSBrZXJuZWwsIGUuZy4gYnkgYm9vdGxvYWRlciBvciB1c2Vyc3BhY2UKKy0gbGFiZWwgOiB0aGUgbmFtZSBmb3IgdGhlIHJlc2VydmVkIHBhcnRpdGlvbiwgaWYgb21pdHRlZCwgdGhlIGxhYmVsCisgICAgICAgICAgaXMgdGFrZW4gZnJvbSB0aGUgbm9kZSBuYW1lIGV4Y2x1ZGluZyB0aGUgdW5pdCBhZGRyZXNzLgorCitFeGFtcGxlOgorCitzcmFtOiBzcmFtQDVjMDAwMDAwIHsKKwljb21wYXRpYmxlID0gIm1taW8tc3JhbSI7CisJcmVnID0gPDB4NWMwMDAwMDAgMHg0MDAwMD47IC8qIDI1NiBLaUIgU1JBTSBhdCBhZGRyZXNzIDB4NWMwMDAwMDAgKi8KKworCSNhZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MT47CisJcmFuZ2VzID0gPDAgMHg1YzAwMDAwMCAweDQwMDAwPjsKKworCXNtcC1zcmFtQDEwMCB7CisJCWNvbXBhdGlibGUgPSAic29jdmVuZG9yLHNtcC1zcmFtIjsKKwkJcmVnID0gPDB4MTAwIDB4NTA+OworCX07CisKKwlkZXZpY2Utc3JhbUAxMDAwIHsKKwkJcmVnID0gPDB4MTAwMCAweDEwMDA+OworCQlwb29sOworCX07CisKKwlleHBvcnRlZEAyMDAwMCB7CisJCXJlZyA9IDwweDIwMDAwIDB4MjAwMDA+OworCQlleHBvcnQ7CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL2FyYXNhbixzZGhjaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL2FyYXNhbixzZGhjaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE1NDFjMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvYXJhc2FuLHNkaGNpLnR4dApAQCAtMCwwICsxLDI4IEBACitEZXZpY2UgVHJlZSBCaW5kaW5ncyBmb3IgdGhlIEFyYXNhbiBTREhDSSBDb250cm9sbGVyCisKKyAgVGhlIGJpbmRpbmdzIGZvbGxvdyB0aGUgbW1jWzFdLCBjbG9ja1syXSBhbmQgaW50ZXJydXB0WzNdIGJpbmRpbmdzLiBPbmx5CisgIGRldmlhdGlvbnMgYXJlIGRvY3VtZW50ZWQgaGVyZS4KKworICBbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMudHh0CisgIFsyXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CisgIFszXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaW50ZXJydXB0cy50eHQKKworUmVxdWlyZWQgUHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiBDb21wYXRpYmlsaXR5IHN0cmluZy4gTXVzdCBiZSAnYXJhc2FuLHNkaGNpLTguOWEnIG9yCisgICAgICAgICAgICAgICAgJ2FyYXNhbixzZGhjaS00LjlhJyBvciAnYXJhc2FuLHNkaGNpLTUuMScKKyAgLSByZWc6IEZyb20gbW1jIGJpbmRpbmdzOiBSZWdpc3RlciBsb2NhdGlvbiBhbmQgbGVuZ3RoLgorICAtIGNsb2NrczogRnJvbSBjbG9jayBiaW5kaW5nczogSGFuZGxlcyB0byBjbG9jayBpbnB1dHMuCisgIC0gY2xvY2stbmFtZXM6IEZyb20gY2xvY2sgYmluZGluZ3M6IFR1cGxlIGluY2x1ZGluZyAiY2xrX3hpbiIgYW5kICJjbGtfYWhiIgorICAtIGludGVycnVwdHM6IEludGVycnVwdCBzcGVjaWZpZXIKKyAgLSBpbnRlcnJ1cHQtcGFyZW50OiBQaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgdGhhdCBzZXJ2aWNlcworCQkgICAgICBpbnRlcnJ1cHRzIGZvciB0aGlzIGRldmljZS4KKworRXhhbXBsZToKKwlzZGhjaUBlMDEwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiYXJhc2FuLHNkaGNpLTguOWEiOworCQlyZWcgPSA8MHhlMDEwMDAwMCAweDEwMDA+OworCQljbG9jay1uYW1lcyA9ICJjbGtfeGluIiwgImNsa19haGIiOworCQljbG9ja3MgPSA8JmNsa2MgMjE+LCA8JmNsa2MgMzI+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZnaWM+OworCQlpbnRlcnJ1cHRzID0gPDAgMjQgND47CisJfSA7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL2F0bWVsLWhzbWNpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvYXRtZWwtaHNtY2kudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3YWQwMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL2F0bWVsLWhzbWNpLnR4dApAQCAtMCwwICsxLDczIEBACisqIEF0bWVsIEhpZ2ggU3BlZWQgTXVsdGlNZWRpYSBDYXJkIEludGVyZmFjZQorCitUaGlzIGNvbnRyb2xsZXIgb24gYXRtZWwgcHJvZHVjdHMgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGZvciBNTUMsIFNEIGFuZCBTRElPCit0eXBlcyBvZiBtZW1vcnkgY2FyZHMuCisKK1RoaXMgZmlsZSBkb2N1bWVudHMgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgY29yZSBwcm9wZXJ0aWVzIGRlc2NyaWJlZAorYnkgbW1jLnR4dCBhbmQgdGhlIHByb3BlcnRpZXMgdXNlZCBieSB0aGUgYXRtZWwtbWNpIGRyaXZlci4KKworMSkgTUNJIG5vZGUKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJhdG1lbCxoc21jaSIKKy0gI2FkZHJlc3MtY2VsbHM6IHNob3VsZCBiZSBvbmUuIFRoZSBjZWxsIGlzIHRoZSBzbG90IGlkLgorLSAjc2l6ZS1jZWxsczogc2hvdWxkIGJlIHplcm8uCistIGF0IGxlYXN0IG9uZSBzbG90IG5vZGUKKy0gY2xvY2stbmFtZXM6IHR1cGxlIGxpc3RpbmcgaW5wdXQgY2xvY2sgbmFtZXMuCisJUmVxdWlyZWQgZWxlbWVudHM6ICJtY2lfY2xrIgorLSBjbG9ja3M6IHBoYW5kbGVzIHRvIGlucHV0IGNsb2Nrcy4KKworVGhlIG5vZGUgY29udGFpbnMgY2hpbGQgbm9kZXMgZm9yIGVhY2ggc2xvdCB0aGF0IHRoZSBwbGF0Zm9ybSB1c2VzCisKK0V4YW1wbGUgTUNJIG5vZGU6CisKK21tYzA6IG1tY0BmMDAwODAwMCB7CisJY29tcGF0aWJsZSA9ICJhdG1lbCxoc21jaSI7CisJcmVnID0gPDB4ZjAwMDgwMDAgMHg2MDA+OworCWludGVycnVwdHMgPSA8MTIgND47CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47CisJY2xvY2stbmFtZXMgPSAibWNpX2NsayI7CisJY2xvY2tzID0gPCZtY2kwX2Nsaz47CisKKwlbIGNoaWxkIG5vZGUgZGVmaW5pdGlvbnMuLi5dCit9OworCisyKSBzbG90IG5vZGVzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIHJlZzogc2hvdWxkIGNvbnRhaW4gdGhlIHNsb3QgaWQuCistIGJ1cy13aWR0aDogbnVtYmVyIG9mIGRhdGEgbGluZXMgY29ubmVjdGVkIHRvIHRoZSBjb250cm9sbGVyCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNkLWdwaW9zOiBzcGVjaWZ5IEdQSU9zIGZvciBjYXJkIGRldGVjdGlvbgorLSBjZC1pbnZlcnRlZDogaW52ZXJ0IHRoZSB2YWx1ZSBvZiBleHRlcm5hbCBjYXJkIGRldGVjdCBncGlvIGxpbmUKKy0gd3AtZ3Bpb3M6IHNwZWNpZnkgR1BJT3MgZm9yIHdyaXRlIHByb3RlY3Rpb24KKworRXhhbXBsZSBzbG90IG5vZGU6CisKK3Nsb3RAMCB7CisJcmVnID0gPDA+OworCWJ1cy13aWR0aCA9IDw0PjsKKwljZC1ncGlvcyA9IDwmcGlvRCAxNSAwPgorCWNkLWludmVydGVkOworfTsKKworRXhhbXBsZSBmdWxsIE1DSSBub2RlOgorbW1jMDogbW1jQGYwMDA4MDAwIHsKKwljb21wYXRpYmxlID0gImF0bWVsLGhzbWNpIjsKKwlyZWcgPSA8MHhmMDAwODAwMCAweDYwMD47CisJaW50ZXJydXB0cyA9IDwxMiA0PjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwlzbG90QDAgeworCQlyZWcgPSA8MD47CisJCWJ1cy13aWR0aCA9IDw0PjsKKwkJY2QtZ3Bpb3MgPSA8JnBpb0QgMTUgMD4KKwkJY2QtaW52ZXJ0ZWQ7CisJfTsKKwlzbG90QDEgeworCQlyZWcgPSA8MT47CisJCWJ1cy13aWR0aCA9IDw0PjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvYnJjbSxiY20yODM1LXNkaGNpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvYnJjbSxiY20yODM1LXNkaGNpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTQ3NmZiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9icmNtLGJjbTI4MzUtc2RoY2kudHh0CkBAIC0wLDAgKzEsMTggQEAKK0Jyb2FkY29tIEJDTTI4MzUgU0RIQ0kgY29udHJvbGxlcgorCitUaGlzIGZpbGUgZG9jdW1lbnRzIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGNvcmUgcHJvcGVydGllcyBkZXNjcmliZWQKK2J5IG1tYy50eHQgYW5kIHRoZSBwcm9wZXJ0aWVzIHRoYXQgcmVwcmVzZW50IHRoZSBCQ00yODM1IGNvbnRyb2xsZXIuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImJyY20sYmNtMjgzNS1zZGhjaSIuCistIGNsb2NrcyA6IFRoZSBjbG9jayBmZWVkaW5nIHRoZSBTREhDSSBjb250cm9sbGVyLgorCitFeGFtcGxlOgorCitzZGhjaTogc2RoY2kgeworCWNvbXBhdGlibGUgPSAiYnJjbSxiY20yODM1LXNkaGNpIjsKKwlyZWcgPSA8MHg3ZTMwMDAwMCAweDEwMD47CisJaW50ZXJydXB0cyA9IDwyIDMwPjsKKwljbG9ja3MgPSA8JmNsa19tbWM+OworCWJ1cy13aWR0aCA9IDw0PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL2JyY20sa29uYS1zZGhjaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL2JyY20sa29uYS1zZGhjaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFiYTI0OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvYnJjbSxrb25hLXNkaGNpLnR4dApAQCAtMCwwICsxLDIxIEBACitCcm9hZGNvbSBCQ00yODF4eCBTREhDSQorCitUaGlzIGZpbGUgZG9jdW1lbnRzIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGNvcmUgcHJvcGVydGllcyBpbiBtbWMudHh0CithbmQgdGhlIHByb3BlcnRpZXMgcHJlc2VudCBpbiB0aGUgYmNtMjgxeHggU0RIQ0kKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAiYnJjbSxrb25hLXNkaGNpIgorLSBERVBSRUNBVEVEOiBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJiY20sa29uYS1zZGhjaSIKKy0gY2xvY2tzOiBwaGFuZGxlICsgY2xvY2sgc3BlY2lmaWVyIHBhaXIgb2YgdGhlIGV4dGVybmFsIGNsb2NrCisKK1JlZmVyIHRvIGNsb2Nrcy9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGdlbmVyaWMgY2xvY2sgY29uc3VtZXIgcHJvcGVydGllcy4KKworRXhhbXBsZToKKworc2RpbzI6IHNkaW9AMHgzZjFhMDAwMCB7CisJY29tcGF0aWJsZSA9ICJicmNtLGtvbmEtc2RoY2kiOworCXJlZyA9IDwweDNmMWEwMDAwIDB4MTAwMDA+OworCWNsb2NrcyA9IDwmc2RpbzNfY2xrPjsKKwlpbnRlcnJ1cHRzID0gPDB4MCA3NCAweDQ+OworfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9icmNtLHNkaGNpLWlwcm9jLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvYnJjbSxzZGhjaS1pcHJvYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJjYzljYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvYnJjbSxzZGhjaS1pcHJvYy50eHQKQEAgLTAsMCArMSwyMyBAQAorQnJvYWRjb20gSVBST0MgU0RIQ0kgY29udHJvbGxlcgorCitUaGlzIGZpbGUgZG9jdW1lbnRzIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGNvcmUgcHJvcGVydGllcyBkZXNjcmliZWQKK2J5IG1tYy50eHQgYW5kIHRoZSBwcm9wZXJ0aWVzIHRoYXQgcmVwcmVzZW50IHRoZSBJUFJPQyBTREhDSSBjb250cm9sbGVyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJicmNtLHNkaGNpLWlwcm9jLWN5Z251cyIuCistIGNsb2NrcyA6IFRoZSBjbG9jayBmZWVkaW5nIHRoZSBTREhDSSBjb250cm9sbGVyLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIHNkaGNpLGF1dG8tY21kMTI6IHNwZWNpZmllcyB0aGF0IGNvbnRyb2xsZXIgc2hvdWxkIHVzZSBhdXRvIENNRDEyLgorCitFeGFtcGxlOgorCitzZGhjaTA6IHNkaGNpQDB4MTgwNDEwMDAgeworCWNvbXBhdGlibGUgPSAiYnJjbSxzZGhjaS1pcHJvYy1jeWdudXMiOworCXJlZyA9IDwweDE4MDQxMDAwIDB4MTAwPjsKKwlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMTA4IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCWNsb2NrcyA9IDwmbGNwbGwwX2Nsa3MgQkNNX0NZR05VU19MQ1BMTDBfU0RJT19DTEs+OworCWJ1cy13aWR0aCA9IDw0PjsKKwlzZGhjaSxhdXRvLWNtZDEyOworCW5vLTEtOC12OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvZGF2aW5jaV9tbWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9kYXZpbmNpX21tYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVhMDE0MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvZGF2aW5jaV9tbWMudHh0CkBAIC0wLDAgKzEsMzMgQEAKKyogVEkgSGlnaHNwZWVkIE1NQyBob3N0IGNvbnRyb2xsZXIgZm9yIERhVmluY2kKKworVGhlIEhpZ2hzcGVlZCBNTUMgSG9zdCBDb250cm9sbGVyIG9uIFRJIERhVmluY2kgZmFtaWx5Citwcm92aWRlcyBhbiBpbnRlcmZhY2UgZm9yIE1NQywgU0QgYW5kIFNESU8gdHlwZXMgb2YgbWVtb3J5IGNhcmRzLgorCitUaGlzIGZpbGUgZG9jdW1lbnRzIHRoZSBwcm9wZXJ0aWVzIHVzZWQgYnkgdGhlIGRhdmluY2lfbW1jIGRyaXZlci4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZToKKyBTaG91bGQgYmUgInRpLGRhODMwLW1tYyI6IGZvciBkYTgzMCwgZGE4NTAsIGRtMzY1CisgU2hvdWxkIGJlICJ0aSxkbTM1NS1tbWMiOiBmb3IgZG0zNTUsIGRtNjQ0eAorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBidXMtd2lkdGg6IE51bWJlciBvZiBkYXRhIGxpbmVzLCBjYW4gYmUgPDE+LCA8ND4sIG9yIDw4PiwgZGVmYXVsdCA8MT4KKy0gbWF4LWZyZXF1ZW5jeTogTWF4aW11bSBvcGVyYXRpbmcgY2xvY2sgZnJlcXVlbmN5LCBkZWZhdWx0IDI1TUh6LgorLSBkbWFzOiBMaXN0IG9mIERNQSBzcGVjaWZpZXJzIHdpdGggdGhlIGNvbnRyb2xsZXIgc3BlY2lmaWMgZm9ybWF0CisJYXMgZGVzY3JpYmVkIGluIHRoZSBnZW5lcmljIERNQSBjbGllbnQgYmluZGluZy4gQSB0eCBhbmQgcngKKwlzcGVjaWZpZXIgaXMgcmVxdWlyZWQuCistIGRtYS1uYW1lczogUlggYW5kIFRYICBETUEgcmVxdWVzdCBuYW1lcy4gVGhlc2Ugc3RyaW5ncyBjb3JyZXNwb25kCisJMToxIHdpdGggdGhlIERNQSBzcGVjaWZpZXJzIGxpc3RlZCBpbiBkbWFzLgorCitFeGFtcGxlOgorbW1jMDogbW1jQDFjNDAwMDAgeworCWNvbXBhdGlibGUgPSAidGksZGE4MzAtbW1jIiwKKwlyZWcgPSA8MHg0MDAwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8MTY+OworCXN0YXR1cyA9ICJva2F5IjsKKwlidXMtd2lkdGggPSA8ND47CisJbWF4LWZyZXF1ZW5jeSA9IDw1MDAwMDAwMD47CisJZG1hcyA9IDwmZWRtYSAxNgorCQkmZWRtYSAxNz47CisJZG1hLW5hbWVzID0gInJ4IiwgInR4IjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL2V4eW5vcy1kdy1tc2hjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvZXh5bm9zLWR3LW1zaGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhZDk4NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL2V4eW5vcy1kdy1tc2hjLnR4dApAQCAtMCwwICsxLDkzIEBACisqIFNhbXN1bmcgRXh5bm9zIHNwZWNpZmljIGV4dGVuc2lvbnMgdG8gdGhlIFN5bm9wc3lzIERlc2lnbndhcmUgTW9iaWxlCisgIFN0b3JhZ2UgSG9zdCBDb250cm9sbGVyCisKK1RoZSBTeW5vcHN5cyBkZXNpZ253YXJlIG1vYmlsZSBzdG9yYWdlIGhvc3QgY29udHJvbGxlciBpcyB1c2VkIHRvIGludGVyZmFjZQorYSBTb0Mgd2l0aCBzdG9yYWdlIG1lZGl1bSBzdWNoIGFzIGVNTUMgb3IgU0QvTU1DIGNhcmRzLiBUaGlzIGZpbGUgZG9jdW1lbnRzCitkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBjb3JlIFN5bm9wc3lzIGR3IG1zaGMgY29udHJvbGxlciBwcm9wZXJ0aWVzIGRlc2NyaWJlZAorYnkgc3lub3BzeXMtZHctbXNoYy50eHQgYW5kIHRoZSBwcm9wZXJ0aWVzIHVzZWQgYnkgdGhlIFNhbXN1bmcgRXh5bm9zIHNwZWNpZmljCitleHRlbnNpb25zIHRvIHRoZSBTeW5vcHN5cyBEZXNpZ253YXJlIE1vYmlsZSBTdG9yYWdlIEhvc3QgQ29udHJvbGxlci4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworKiBjb21wYXRpYmxlOiBzaG91bGQgYmUKKwktICJzYW1zdW5nLGV4eW5vczQyMTAtZHctbXNoYyI6IGZvciBjb250cm9sbGVycyB3aXRoIFNhbXN1bmcgRXh5bm9zNDIxMAorCSAgc3BlY2lmaWMgZXh0ZW5zaW9ucy4KKwktICJzYW1zdW5nLGV4eW5vczQ0MTItZHctbXNoYyI6IGZvciBjb250cm9sbGVycyB3aXRoIFNhbXN1bmcgRXh5bm9zNDQxMgorCSAgc3BlY2lmaWMgZXh0ZW5zaW9ucy4KKwktICJzYW1zdW5nLGV4eW5vczUyNTAtZHctbXNoYyI6IGZvciBjb250cm9sbGVycyB3aXRoIFNhbXN1bmcgRXh5bm9zNTI1MAorCSAgc3BlY2lmaWMgZXh0ZW5zaW9ucy4KKwktICJzYW1zdW5nLGV4eW5vczU0MjAtZHctbXNoYyI6IGZvciBjb250cm9sbGVycyB3aXRoIFNhbXN1bmcgRXh5bm9zNTQyMAorCSAgc3BlY2lmaWMgZXh0ZW5zaW9ucy4KKwktICJzYW1zdW5nLGV4eW5vczctZHctbXNoYyI6IGZvciBjb250cm9sbGVycyB3aXRoIFNhbXN1bmcgRXh5bm9zNworCSAgc3BlY2lmaWMgZXh0ZW5zaW9ucy4KKwktICJzYW1zdW5nLGV4eW5vczctZHctbXNoYy1zbXUiOiBmb3IgY29udHJvbGxlcnMgd2l0aCBTYW1zdW5nIEV4eW5vczcKKwkgIHNwZWNpZmljIGV4dGVuc2lvbnMgaGF2aW5nIGFuIFNNVS4KKworKiBzYW1zdW5nLGR3LW1zaGMtY2l1LWRpdjogU3BlY2lmaWVzIHRoZSBkaXZpZGVyIHZhbHVlIGZvciB0aGUgY2FyZCBpbnRlcmZhY2UKKyAgdW5pdCAoY2l1KSBjbG9jay4gVGhpcyBwcm9wZXJ0eSBpcyBhcHBsaWNhYmxlIG9ubHkgZm9yIEV4eW5vczUgU29DJ3MgYW5kCisgIGlnbm9yZWQgZm9yIEV4eW5vczQgU29DJ3MuIFRoZSB2YWxpZCByYW5nZSBvZiBkaXZpZGVyIHZhbHVlIGlzIDAgdG8gNy4KKworKiBzYW1zdW5nLGR3LW1zaGMtc2RyLXRpbWluZzogU3BlY2lmaWVzIHRoZSB2YWx1ZSBvZiBDSVUgY2xvY2sgcGhhc2Ugc2hpZnQgdmFsdWUKKyAgaW4gdHJhbnNtaXQgbW9kZSBhbmQgQ0lVIGNsb2NrIHBoYXNlIHNoaWZ0IHZhbHVlIGluIHJlY2VpdmUgbW9kZSBmb3Igc2luZ2xlCisgIGRhdGEgcmF0ZSBtb2RlIG9wZXJhdGlvbi4gUmVmZXIgbm90ZXMgYmVsb3cgZm9yIHRoZSBvcmRlciBvZiB0aGUgY2VsbHMgYW5kIHRoZQorICB2YWxpZCB2YWx1ZXMuCisKKyogc2Ftc3VuZyxkdy1tc2hjLWRkci10aW1pbmc6IFNwZWNpZmllcyB0aGUgdmFsdWUgb2YgQ1VJIGNsb2NrIHBoYXNlIHNoaWZ0IHZhbHVlCisgIGluIHRyYW5zbWl0IG1vZGUgYW5kIENJVSBjbG9jayBwaGFzZSBzaGlmdCB2YWx1ZSBpbiByZWNlaXZlIG1vZGUgZm9yIGRvdWJsZQorICBkYXRhIHJhdGUgbW9kZSBvcGVyYXRpb24uIFJlZmVyIG5vdGVzIGJlbG93IGZvciB0aGUgb3JkZXIgb2YgdGhlIGNlbGxzIGFuZCB0aGUKKyAgdmFsaWQgdmFsdWVzLgorKiBzYW1zdW5nLGR3LW1zaGMtaHM0MDAtdGltaW5nOiBTcGVjaWZpZXMgdGhlIHZhbHVlIG9mIENJVSBUWCBhbmQgUlggY2xvY2sgcGhhc2UKKyAgc2hpZnQgdmFsdWUgZm9yIGhzNDAwIG1vZGUgb3BlcmF0aW9uLgorCisgIE5vdGVzIGZvciB0aGUgc2RyLXRpbWluZyBhbmQgZGRyLXRpbWluZyB2YWx1ZXM6CisKKyAgICBUaGUgb3JkZXIgb2YgdGhlIGNlbGxzIHNob3VsZCBiZQorICAgICAgLSBGaXJzdCBDZWxsOiBDSVUgY2xvY2sgcGhhc2Ugc2hpZnQgdmFsdWUgZm9yIHR4IG1vZGUuCisgICAgICAtIFNlY29uZCBDZWxsOiBDSVUgY2xvY2sgcGhhc2Ugc2hpZnQgdmFsdWUgZm9yIHJ4IG1vZGUuCisKKyAgICBWYWxpZCB2YWx1ZXMgZm9yIFNEUiBhbmQgRERSIENJVSBjbG9jayB0aW1pbmcgZm9yIEV4eW5vczUyNTA6CisgICAgICAtIHZhbGlkIHZhbHVlIGZvciB0eCBwaGFzZSBzaGlmdCBhbmQgcnggcGhhc2Ugc2hpZnQgaXMgMCB0byA3LgorICAgICAgLSB3aGVuIENJVSBjbG9jayBkaXZpZGVyIHZhbHVlIGlzIHNldCB0byAzLCBhbGwgcG9zc2libGUgOCBwaGFzZSBzaGlmdAorICAgICAgICB2YWx1ZXMgY2FuIGJlIHVzZWQuCisgICAgICAtIGlmIENJVSBjbG9jayBkaXZpZGVyIHZhbHVlIGlzIDAgKHRoYXQgaXMgZGl2aWRlIGJ5IDEpLCBib3RoIHR4IGFuZCByeAorICAgICAgICBwaGFzZSBzaGlmdCBjbG9ja3Mgc2hvdWxkIGJlIDAuCisKKyogc2Ftc3VuZyxyZWFkLXN0cm9iZS1kZWxheTogUkNMSyAoRGF0YSBzdHJvYmUpIGRlbGF5IHRvIGNvbnRyb2wgSFM0MDAgbW9kZQorICAoTGF0ZW5jeSB2YWx1ZSBmb3IgZGVsYXkgbGluZSBpbiBSZWFkIHBhdGgpCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIGEgc2xvdCAoRGVwcmVjYXRlZCAtIFJlY29tbWVuZCB0byB1c2Ugb25lIHNsb3QgcGVyIGhvc3QpOgorCisqIGdwaW9zOiBzcGVjaWZpZXMgYSBsaXN0IG9mIGdwaW9zIHVzZWQgZm9yIGNvbW1hbmQsIGNsb2NrIGFuZCBkYXRhIGJ1cy4gVGhlCisgIGZpcnN0IGdwaW8gaXMgdGhlIGNvbW1hbmQgbGluZSBhbmQgdGhlIHNlY29uZCBncGlvIGlzIHRoZSBjbG9jayBsaW5lLiBUaGUKKyAgcmVzdCBvZiB0aGUgZ3Bpb3MgKGRlcGVuZGluZyBvbiB0aGUgYnVzLXdpZHRoIHByb3BlcnR5KSBhcmUgdGhlIGRhdGEgbGluZXMgaW4KKyAgbm8gcGFydGljdWxhciBvcmRlci4gVGhlIGZvcm1hdCBvZiB0aGUgZ3BpbyBzcGVjaWZpZXIgZGVwZW5kcyBvbiB0aGUgZ3BpbworICBjb250cm9sbGVyLgorKERlcHJlY2F0ZWQgLSBSZWZlciB0byBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZy9waW5jdHJsL3NhbXN1bmctcGluY3RybC50eHQpCisKK0V4YW1wbGU6CisKKyAgVGhlIE1TSEMgY29udHJvbGxlciBub2RlIGNhbiBiZSBzcGxpdCBpbnRvIHR3byBwb3J0aW9ucywgU29DIHNwZWNpZmljIGFuZAorICBib2FyZCBzcGVjaWZpYyBwb3J0aW9ucyBhcyBsaXN0ZWQgYmVsb3cuCisKKwlkd21tYzBAMTIyMDAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTI1MC1kdy1tc2hjIjsKKwkJcmVnID0gPDB4MTIyMDAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDc1IDA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJfTsKKworCWR3bW1jMEAxMjIwMDAwMCB7CisJCW51bS1zbG90cyA9IDwxPjsKKwkJY2FwLW1tYy1oaWdoc3BlZWQ7CisJCWNhcC1zZC1oaWdoc3BlZWQ7CisJCWJyb2tlbi1jZDsKKwkJZmlmby1kZXB0aCA9IDwweDgwPjsKKwkJY2FyZC1kZXRlY3QtZGVsYXkgPSA8MjAwPjsKKwkJc2Ftc3VuZyxkdy1tc2hjLWNpdS1kaXYgPSA8Mz47CisJCXNhbXN1bmcsZHctbXNoYy1zZHItdGltaW5nID0gPDIgMz47CisJCXNhbXN1bmcsZHctbXNoYy1kZHItdGltaW5nID0gPDEgMj47CisJCXNhbXN1bmcsZHctbXNoYy1oczQwMC10aW1pbmcgPSA8MCAyPjsKKwkJc2Ftc3VuZyxyZWFkLXN0cm9iZS1kZWxheSA9IDw5MD47CisJCWJ1cy13aWR0aCA9IDw4PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9mc2wtZXNkaGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9mc2wtZXNkaGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlZGZiMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL2ZzbC1lc2RoYy50eHQKQEAgLTAsMCArMSwzOCBAQAorKiBGcmVlc2NhbGUgRW5oYW5jZWQgU2VjdXJlIERpZ2l0YWwgSG9zdCBDb250cm9sbGVyIChlU0RIQykKKworVGhlIEVuaGFuY2VkIFNlY3VyZSBEaWdpdGFsIEhvc3QgQ29udHJvbGxlciBwcm92aWRlcyBhbiBpbnRlcmZhY2UKK2ZvciBNTUMsIFNELCBhbmQgU0RJTyB0eXBlcyBvZiBtZW1vcnkgY2FyZHMuCisKK1RoaXMgZmlsZSBkb2N1bWVudHMgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgY29yZSBwcm9wZXJ0aWVzIGRlc2NyaWJlZAorYnkgbW1jLnR4dCBhbmQgdGhlIHByb3BlcnRpZXMgdXNlZCBieSB0aGUgc2RoY2ktZXNkaGMgZHJpdmVyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGludGVycnVwdC1wYXJlbnQgOiBpbnRlcnJ1cHQgc291cmNlIHBoYW5kbGUuCisgIC0gY2xvY2stZnJlcXVlbmN5IDogc3BlY2lmaWVzIGVTREhDIGJhc2UgY2xvY2sgZnJlcXVlbmN5LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIHNkaGNpLHdwLWludmVydGVkIDogc3BlY2lmaWVzIHRoYXQgZVNESEMgY29udHJvbGxlciByZXBvcnRzCisgICAgaW52ZXJ0ZWQgd3JpdGUtcHJvdGVjdCBzdGF0ZTsgTmV3IGRldmljZXMgc2hvdWxkIHVzZSB0aGUgZ2VuZXJpYworICAgICJ3cC1pbnZlcnRlZCIgcHJvcGVydHkuCisgIC0gc2RoY2ksMS1iaXQtb25seSA6IHNwZWNpZmllcyB0aGF0IGEgY29udHJvbGxlciBjYW4gb25seSBoYW5kbGUKKyAgICAxLWJpdCBkYXRhIHRyYW5zZmVycy4gTmV3IGRldmljZXMgc2hvdWxkIHVzZSB0aGUgZ2VuZXJpYworICAgICJidXMtd2lkdGggPSA8MT4iIHByb3BlcnR5LgorICAtIHNkaGNpLGF1dG8tY21kMTI6IHNwZWNpZmllcyB0aGF0IGEgY29udHJvbGxlciBjYW4gb25seSBoYW5kbGUgYXV0bworICAgIENNRDEyLgorICAtIHZvbHRhZ2UtcmFuZ2VzIDogdHdvIGNlbGxzIGFyZSByZXF1aXJlZCwgZmlyc3QgY2VsbCBzcGVjaWZpZXMgbWluaW11bQorICAgIHNsb3Qgdm9sdGFnZSAobVYpLCBzZWNvbmQgY2VsbCBzcGVjaWZpZXMgbWF4aW11bSBzbG90IHZvbHRhZ2UgKG1WKS4KKyAgICBTZXZlcmFsIHJhbmdlcyBjb3VsZCBiZSBzcGVjaWZpZWQuCisgIC0gbGl0dGxlLWVuZGlhbiA6IElmIHRoZSBob3N0IGNvbnRyb2xsZXIgaXMgbGl0dGxlLWVuZGlhbiBtb2RlLCBzcGVjaWZ5CisgICAgdGhpcyBwcm9wZXJ0eS4gVGhlIGRlZmF1bHQgZW5kaWFuIG1vZGUgaXMgYmlnLWVuZGlhbi4KKworRXhhbXBsZToKKworc2RoY2lAMmUwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLG1wYzgzNzgtZXNkaGMiLCAiZnNsLGVzZGhjIjsKKwlyZWcgPSA8MHgyZTAwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8NDIgMHg4PjsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpcGljPjsKKwkvKiBGaWxsZWQgaW4gYnkgVS1Cb290ICovCisJY2xvY2stZnJlcXVlbmN5ID0gPDA+OworCXZvbHRhZ2UtcmFuZ2VzID0gPDMzMDAgMzMwMD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9mc2wtaW14LWVzZGhjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvZnNsLWlteC1lc2RoYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGNhNTZkNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvZnNsLWlteC1lc2RoYy50eHQKQEAgLTAsMCArMSw1MiBAQAorKiBGcmVlc2NhbGUgRW5oYW5jZWQgU2VjdXJlIERpZ2l0YWwgSG9zdCBDb250cm9sbGVyIChlU0RIQykgZm9yIGkuTVgKKworVGhlIEVuaGFuY2VkIFNlY3VyZSBEaWdpdGFsIEhvc3QgQ29udHJvbGxlciBvbiBGcmVlc2NhbGUgaS5NWCBmYW1pbHkKK3Byb3ZpZGVzIGFuIGludGVyZmFjZSBmb3IgTU1DLCBTRCwgYW5kIFNESU8gdHlwZXMgb2YgbWVtb3J5IGNhcmRzLgorCitUaGlzIGZpbGUgZG9jdW1lbnRzIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGNvcmUgcHJvcGVydGllcyBkZXNjcmliZWQKK2J5IG1tYy50eHQgYW5kIHRoZSBwcm9wZXJ0aWVzIHVzZWQgYnkgdGhlIHNkaGNpLWVzZGhjLWlteCBkcml2ZXIuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImZzbCw8Y2hpcD4tZXNkaGMiLCB0aGUgc3VwcG9ydGVkIGNoaXBzIGluY2x1ZGUKKwkgICAgICAgImZzbCxpbXgyNS1lc2RoYyIKKwkgICAgICAgImZzbCxpbXgzNS1lc2RoYyIKKwkgICAgICAgImZzbCxpbXg1MS1lc2RoYyIKKwkgICAgICAgImZzbCxpbXg1My1lc2RoYyIKKwkgICAgICAgImZzbCxpbXg2cS11c2RoYyIKKwkgICAgICAgImZzbCxpbXg2c2wtdXNkaGMiCisJICAgICAgICJmc2wsaW14NnN4LXVzZGhjIgorCSAgICAgICAiZnNsLGlteDdkLXVzZGhjIgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBmc2wsd3AtY29udHJvbGxlciA6IEluZGljYXRlIHRvIHVzZSBjb250cm9sbGVyIGludGVybmFsIHdyaXRlIHByb3RlY3Rpb24KKy0gZnNsLGRlbGF5LWxpbmUgOiBTcGVjaWZ5IHRoZSBudW1iZXIgb2YgZGVsYXkgY2VsbHMgZm9yIG92ZXJyaWRlIG1vZGUuCisgIFRoaXMgaXMgdXNlZCB0byBzZXQgdGhlIGNsb2NrIGRlbGF5IGZvciBETEwoRGVsYXkgTGluZSkgb24gb3ZlcnJpZGUgbW9kZQorICB0byBzZWxlY3QgYSBwcm9wZXIgZGF0YSBzYW1wbGluZyB3aW5kb3cgaW4gY2FzZSB0aGUgY2xvY2sgcXVhbGl0eSBpcyBub3QgZ29vZAorICBkdWUgdG8gc2lnbmFsIHBhdGggaXMgdG9vIGxvbmcgb24gdGhlIGJvYXJkLiBQbGVhc2UgcmVmZXIgdG8gZVNESEMvdVNESEMKKyAgY2hhcHRlciwgRExMIChEZWxheSBMaW5lKSBzZWN0aW9uIGluIFJNIGZvciBkZXRhaWxzLgorLSB2b2x0YWdlLXJhbmdlcyA6IFNwZWNpZnkgdGhlIHZvbHRhZ2UgcmFuZ2UgaW4gY2FzZSB0aGVyZSBhcmUgc29mdHdhcmUKKyAgdHJhbnNwYXJlbnQgbGV2ZWwgc2hpZnRlcnMgb24gdGhlIG91dHB1dHMgb2YgdGhlIGNvbnRyb2xsZXIuIFR3byBjZWxscyBhcmUKKyAgcmVxdWlyZWQsIGZpcnN0IGNlbGwgc3BlY2lmaWVzIG1pbmltdW0gc2xvdCB2b2x0YWdlIChtViksIHNlY29uZCBjZWxsCisgIHNwZWNpZmllcyBtYXhpbXVtIHNsb3Qgdm9sdGFnZSAobVYpLiBTZXZlcmFsIHJhbmdlcyBjb3VsZCBiZSBzcGVjaWZpZWQuCistIGZzbCx0dW5pbmctc3RlcDogU3BlY2lmeSB0aGUgaW5jcmVhc2luZyBkZWxheSBjZWxsIHN0ZXBzIGluIHR1bmluZyBwcm9jZWR1cmUuCisgIFRoZSB1U0RIQyB1c2Ugb25lIGRlbGF5IGNlbGwgYXMgZGVmYXVsdCBpbmNyZWFzaW5nIHN0ZXAgdG8gZG8gdHVuaW5nIHByb2Nlc3MuCisgIFRoaXMgcHJvcGVydHkgYWxsb3dzIHVzZXIgdG8gY2hhbmdlIHRoZSB0dW5pbmcgc3RlcCB0byBtb3JlIHRoYW4gb25lIGRlbGF5CisgIGNlbGxzIHdoaWNoIGlzIHVzZWZ1bCBmb3Igc29tZSBzcGVjaWFsIGJvYXJkcyBvciBjYXJkcyB3aGVuIHRoZSBkZWZhdWx0CisgIHR1bmluZyBzdGVwIGNhbid0IGZpbmQgdGhlIHByb3BlciBkZWxheSB3aW5kb3cgd2l0aGluIGxpbWl0ZWQgdHVuaW5nIHJldHJpZXMuCisKK0V4YW1wbGVzOgorCitlc2RoY0A3MDAwNDAwMCB7CisJY29tcGF0aWJsZSA9ICJmc2wsaW14NTEtZXNkaGMiOworCXJlZyA9IDwweDcwMDA0MDAwIDB4NDAwMD47CisJaW50ZXJydXB0cyA9IDwxPjsKKwlmc2wsd3AtY29udHJvbGxlcjsKK307CisKK2VzZGhjQDcwMDA4MDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxpbXg1MS1lc2RoYyI7CisJcmVnID0gPDB4NzAwMDgwMDAgMHg0MDAwPjsKKwlpbnRlcnJ1cHRzID0gPDI+OworCWNkLWdwaW9zID0gPCZncGlvMSA2IDA+OyAvKiBHUElPMV82ICovCisJd3AtZ3Bpb3MgPSA8JmdwaW8xIDUgMD47IC8qIEdQSU8xXzUgKi8KK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL2ZzbC1pbXgtbW1jLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvZnNsLWlteC1tbWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiNDQyMzUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL2ZzbC1pbXgtbW1jLnR4dApAQCAtMCwwICsxLDI0IEBACisqIEZyZWVzY2FsZSBTZWN1cmUgRGlnaXRhbCBIb3N0IENvbnRyb2xsZXIgZm9yIGkuTVgyLzMgc2VyaWVzCisKK1RoaXMgZmlsZSBkb2N1bWVudHMgZGlmZmVyZW5jZXMgdG8gdGhlIHByb3BlcnRpZXMgZGVmaW5lZCBpbiBtbWMudHh0LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJmc2wsPGNoaXA+LW1tYyIsIGNoaXAgY2FuIGJlIGlteDIxIG9yIGlteDMxCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGRtYXM6IE9uZSBETUEgcGhhbmRsZSB3aXRoIGFyZ3VtZW50cyBhcyBkZWZpbmVkIGJ5IHRoZSBkZXZpY2V0cmVlIGJpbmRpbmdzCisJb2YgdGhlIHVzZWQgRE1BIGNvbnRyb2xsZXIuCistIGRtYS1uYW1lczogSGFzIHRvIGJlICJyeC10eCIuCisKK0V4YW1wbGU6CisKK3NkaGNpMTogc2RoY2lAMTAwMTQwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDI3LW1tYyIsICJmc2wsaW14MjEtbW1jIjsKKwlyZWcgPSA8MHgxMDAxNDAwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8MTE+OworCWRtYXMgPSA8JmRtYSA3PjsKKwlkbWEtbmFtZXMgPSAicngtdHgiOworCWJ1cy13aWR0aCA9IDw0PjsKKwljZC1ncGlvcyA9IDwmZ3BpbzMgMjk+OworCXN0YXR1cyA9ICJva2F5IjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL2ltZy1kdy1tc2hjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvaW1nLWR3LW1zaGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ZGU5OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL2ltZy1kdy1tc2hjLnR4dApAQCAtMCwwICsxLDI5IEBACisqIEltYWdpbmF0aW9uIHNwZWNpZmljIGV4dGVuc2lvbnMgdG8gdGhlIFN5bm9wc3lzIERlc2lnbndhcmUgTW9iaWxlIFN0b3JhZ2UKKyAgSG9zdCBDb250cm9sbGVyCisKK1RoZSBTeW5vcHN5cyBkZXNpZ253YXJlIG1vYmlsZSBzdG9yYWdlIGhvc3QgY29udHJvbGxlciBpcyB1c2VkIHRvIGludGVyZmFjZQorYSBTb0Mgd2l0aCBzdG9yYWdlIG1lZGl1bSBzdWNoIGFzIGVNTUMgb3IgU0QvTU1DIGNhcmRzLiBUaGlzIGZpbGUgZG9jdW1lbnRzCitkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBjb3JlIFN5bm9wc3lzIGR3IG1zaGMgY29udHJvbGxlciBwcm9wZXJ0aWVzIGRlc2NyaWJlZAorYnkgc3lub3BzeXMtZHctbXNoYy50eHQgYW5kIHRoZSBwcm9wZXJ0aWVzIHVzZWQgYnkgdGhlIEltYWdpbmF0aW9uIHNwZWNpZmljCitleHRlbnNpb25zIHRvIHRoZSBTeW5vcHN5cyBEZXNpZ253YXJlIE1vYmlsZSBTdG9yYWdlIEhvc3QgQ29udHJvbGxlci4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworKiBjb21wYXRpYmxlOiBzaG91bGQgYmUKKwktICJpbWcscGlzdGFjaGlvLWR3LW1zaGMiOiBmb3IgUGlzdGFjaGlvIFNvQ3MKKworRXhhbXBsZToKKworCW1tY0AxODE0MjAwMCB7CisJCWNvbXBhdGlibGUgPSAiaW1nLHBpc3RhY2hpby1kdy1tc2hjIjsKKwkJcmVnID0gPDB4MTgxNDIwMDAgMHg0MDA+OworCQlpbnRlcnJ1cHRzID0gPEdJQ19TSEFSRUQgMzkgSVJRX1RZUEVfTEVWRUxfSElHSD47CisKKwkJY2xvY2tzID0gPCZzeXN0ZW1fY2xrPiwgPCZzZGhvc3RfY2xrPjsKKwkJY2xvY2stbmFtZXMgPSAiYml1IiwgImNpdSI7CisKKwkJZmlmby1kZXB0aCA9IDwweDIwPjsKKwkJYnVzLXdpZHRoID0gPDQ+OworCQludW0tc2xvdHMgPSA8MT47CisJCWRpc2FibGUtd3A7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvazMtZHctbXNoYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL2szLWR3LW1zaGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmMzcwNTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL2szLWR3LW1zaGMudHh0CkBAIC0wLDAgKzEsNzIgQEAKKyogSGlzaWxpY29uIHNwZWNpZmljIGV4dGVuc2lvbnMgdG8gdGhlIFN5bm9wc3lzIERlc2lnbndhcmUgTW9iaWxlCisgIFN0b3JhZ2UgSG9zdCBDb250cm9sbGVyCisKK1JlYWQgc3lub3BzeXMtZHctbXNoYy50eHQgZm9yIG1vcmUgZGV0YWlscworCitUaGUgU3lub3BzeXMgZGVzaWdud2FyZSBtb2JpbGUgc3RvcmFnZSBob3N0IGNvbnRyb2xsZXIgaXMgdXNlZCB0byBpbnRlcmZhY2UKK2EgU29DIHdpdGggc3RvcmFnZSBtZWRpdW0gc3VjaCBhcyBlTU1DIG9yIFNEL01NQyBjYXJkcy4gVGhpcyBmaWxlIGRvY3VtZW50cworZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgY29yZSBTeW5vcHN5cyBkdyBtc2hjIGNvbnRyb2xsZXIgcHJvcGVydGllcyBkZXNjcmliZWQKK2J5IHN5bm9wc3lzLWR3LW1zaGMudHh0IGFuZCB0aGUgcHJvcGVydGllcyB1c2VkIGJ5IHRoZSBIaXNpbGljb24gc3BlY2lmaWMKK2V4dGVuc2lvbnMgdG8gdGhlIFN5bm9wc3lzIERlc2lnbndhcmUgTW9iaWxlIFN0b3JhZ2UgSG9zdCBDb250cm9sbGVyLgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorCisqIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZy4KKyAgLSAiaGlzaWxpY29uLGhpNDUxMS1kdy1tc2hjIjogZm9yIGNvbnRyb2xsZXJzIHdpdGggaGk0NTExIHNwZWNpZmljIGV4dGVuc2lvbnMuCisgIC0gImhpc2lsaWNvbixoaTYyMjAtZHctbXNoYyI6IGZvciBjb250cm9sbGVycyB3aXRoIGhpNjIyMCBzcGVjaWZpYyBleHRlbnNpb25zLgorCitPcHRpb25hbCBQcm9wZXJ0aWVzOgorLSBoaXNpbGljb24scGVyaXBoZXJhbC1zeXNjb246IHBoYW5kbGUgb2Ygc3lzY29uIHVzZWQgdG8gY29udHJvbCBwZXJpcGhlcmFsLgorCitFeGFtcGxlOgorCisJLyogZm9yIEhpMzYyMCAqLworCisJLyogU29DIHBvcnRpb24gKi8KKwlkd21tY18wOiBkd21tYzBAZmNkMDMwMDAgeworCQljb21wYXRpYmxlID0gImhpc2lsaWNvbixoaTQ1MTEtZHctbXNoYyI7CisJCXJlZyA9IDwweGZjZDAzMDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MCAxNiA0PjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQljbG9ja3MgPSA8Jm1tY19jbG9jayBISTM2MjBfU0RfQ0lVQ0xLPiwgPCZjbG9jayBISTM2MjBfRERSQ19QRVJfQ0xLPjsKKwkJY2xvY2stbmFtZXMgPSAiY2l1IiwgImJpdSI7CisJfTsKKworCS8qIEJvYXJkIHBvcnRpb24gKi8KKwlkd21tYzBAZmNkMDMwMDAgeworCQludW0tc2xvdHMgPSA8MT47CisJCXZtbWMtc3VwcGx5ID0gPCZsZG8xMj47CisJCWZpZm8tZGVwdGggPSA8MHgxMDA+OworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JnNkX3BteF9waW5zICZzZF9jZmdfZnVuYzEgJnNkX2NmZ19mdW5jMj47CisJCWJ1cy13aWR0aCA9IDw0PjsKKwkJZGlzYWJsZS13cDsKKwkJY2QtZ3Bpb3MgPSA8JmdwaW8xMCAzIDA+OworCQljYXAtbW1jLWhpZ2hzcGVlZDsKKwkJY2FwLXNkLWhpZ2hzcGVlZDsKKwl9OworCisJLyogZm9yIEhpNjIyMCAqLworCisJZHdtbWNfMTogZHdtbWMxQGY3MjNlMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJoaXNpbGljb24saGk2MjIwLWR3LW1zaGMiOworCQludW0tc2xvdHMgPSA8MHgxPjsKKwkJYnVzLXdpZHRoID0gPDB4ND47CisJCWRpc2FibGUtd3A7CisJCWNhcC1zZC1oaWdoc3BlZWQ7CisJCXNkLXVocy1zZHIxMjsKKwkJc2QtdWhzLXNkcjI1OworCQljYXJkLWRldGVjdC1kZWxheSA9IDwyMDA+OworCQloaXNpbGljb24scGVyaXBoZXJhbC1zeXNjb24gPSA8JmFvX2N0cmw+OworCQlyZWcgPSA8MHgwIDB4ZjcyM2UwMDAgMHgwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MHgwIDB4NDkgMHg0PjsKKwkJY2xvY2tzID0gPCZjbG9ja19zeXMgSEk2MjIwX01NQzFfQ0lVQ0xLPiwgPCZjbG9ja19zeXMgSEk2MjIwX01NQzFfQ0xLPjsKKwkJY2xvY2stbmFtZXMgPSAiY2l1IiwgImJpdSI7CisJCWNkLWdwaW9zID0gPCZncGlvMSAwIDE+OworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiLCAiaWRsZSI7CisJCXBpbmN0cmwtMCA9IDwmc2RfcG14X2Z1bmMgJnNkX2Nsa19jZmdfZnVuYyAmc2RfY2ZnX2Z1bmM+OworCQlwaW5jdHJsLTEgPSA8JnNkX3BteF9pZGxlICZzZF9jbGtfY2ZnX2lkbGUgJnNkX2NmZ19pZGxlPjsKKwkJdnFtbWMtc3VwcGx5ID0gPCZsZG83PjsKKwkJdm1tYy1zdXBwbHkgPSA8JmxkbzEwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMtY2FyZC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL21tYy1jYXJkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzBmY2Q2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMtY2FyZC50eHQKQEAgLTAsMCArMSwzMSBAQAorbW1jLWNhcmQgLyBlTU1DIGJpbmRpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBkb2N1bWVudHMgZGVzY3JpYmVzIHRoZSBkZXZpY2V0cmVlIGJpbmRpbmdzIGZvciBhIG1tYy1ob3N0IGNvbnRyb2xsZXIKK2NoaWxkIG5vZGUgZGVzY3JpYmluZyBhIG1tYy1jYXJkIC8gYW4gZU1NQywgc2VlICJVc2Ugb2YgRnVuY3Rpb24gc3Vibm9kZXMiCitpbiBtbWMudHh0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistY29tcGF0aWJsZSA6IE11c3QgYmUgIm1tYy1jYXJkIgorLXJlZyAgICAgICAgOiBNdXN0IGJlIDwwPgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLWJyb2tlbi1ocGkgOiBVc2UgdGhpcyB0byBpbmRpY2F0ZSB0aGF0IHRoZSBtbWMtY2FyZCBoYXMgYSBicm9rZW4gaHBpCisgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uLCBhbmQgdGhhdCBocGkgc2hvdWxkIG5vdCBiZSB1c2VkCisKK0V4YW1wbGU6CisKKyZtbWMyIHsKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCXBpbmN0cmwtMCA9IDwmbW1jMl9waW5zX2E+OworCXZtbWMtc3VwcGx5ID0gPCZyZWdfdmNjM3YzPjsKKwlidXMtd2lkdGggPSA8OD47CisJbm9uLXJlbW92YWJsZTsKKwlzdGF0dXMgPSAib2theSI7CisKKwltbWNjYXJkOiBtbWNjYXJkQDAgeworCQlyZWcgPSA8MD47CisJCWNvbXBhdGlibGUgPSAibW1jLWNhcmQiOworCQlicm9rZW4taHBpOworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMtcHdyc2VxLWVtbWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMtcHdyc2VxLWVtbWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjYjgyN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL21tYy1wd3JzZXEtZW1tYy50eHQKQEAgLTAsMCArMSwyNSBAQAorKiBUaGUgc2ltcGxlIGVNTUMgaGFyZHdhcmUgcmVzZXQgcHJvdmlkZXIKKworVGhlIHB1cnBvc2Ugb2YgdGhpcyBkcml2ZXIgaXMgdG8gcGVyZm9ybSBzdGFuZGFyZCBlTU1DIGh3IHJlc2V0Citwcm9jZWR1cmUsIGFzIGRlc2NpYmVkIGJ5IEplZGVjIDQuNCBzcGVjaWZpY2F0aW9uLiBUaGlzIHByb2NlZHVyZSBpcworcGVyZm9ybWVkIGp1c3QgYWZ0ZXIgTU1DIGNvcmUgZW5hYmxlZCBwb3dlciB0byB0aGUgZ2l2ZW4gbW1jIGhvc3QgKHRvCitmaXggcG9zc2libGUgaXNzdWVzIGlmIGJvb3Rsb2FkZXIgaGFzIGxlZnQgZU1NQyBjYXJkIGluIGluaXRpYWxpemVkIG9yCit1bmtub3duIHN0YXRlKSwgYW5kIGJlZm9yZSBwZXJmb3JtaW5nIGNvbXBsZXRlIHN5c3RlbSByZWJvb3QgKGFsc28gaW4KK2Nhc2Ugb2YgZW1lcmdlbmN5IHJlYm9vdCBjYWxsKS4gVGhlIGxhdHRlciBpcyBuZWVkZWQgb24gYm9hcmRzLCB3aGljaAorZG9lc24ndCBoYXZlIGhhcmR3YXJlIHJlc2V0IGxvZ2ljIGNvbm5lY3RlZCB0byBlbW1jIGNhcmQgYW5kIChsaW1pdGVkIG9yCiticm9rZW4pIFJPTSBib290bG9hZGVycyBhcmUgdW5hYmxlIHRvIHJlYWQgc2Vjb25kIHN0YWdlIGZyb20gdGhlIGVtbWMKK2NhcmQgaWYgdGhlIGNhcmQgaXMgbGVmdCBpbiB1bmtub3duIG9yIGFscmVhZHkgaW5pdGlhbGl6ZWQgc3RhdGUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBjb250YWlucyAibW1jLXB3cnNlcS1lbW1jIi4KKy0gcmVzZXQtZ3Bpb3MgOiBjb250YWlucyBhIEdQSU8gc3BlY2lmaWVyLiBUaGUgcmVzZXQgR1BJTyBpcyBhc3NlcnRlZAorCWFuZCB0aGVuIGRlYXNzZXJ0ZWQgdG8gcGVyZm9ybSBlTU1DIGNhcmQgcmVzZXQuIFRvIHBlcmZvcm0KKwlyZXNldCBwcm9jZWR1cmUgYXMgZGVzY3JpYmVkIGluIEplZGVjIDQuNCBzcGVjaWZpY2F0aW9uLCB0aGUKKwlncGlvIGxpbmUgc2hvdWxkIGJlIGRlZmluZWQgYXMgR1BJT19BQ1RJVkVfTE9XLgorCitFeGFtcGxlOgorCisJc2RoY2kwX3B3cnNlcSB7CisJCWNvbXBhdGlibGUgPSAibW1jLXB3cnNlcS1lbW1jIjsKKwkJcmVzZXQtZ3Bpb3MgPSA8JmdwaW8xIDEyIEdQSU9fQUNUSVZFX0xPVz47CisJfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMtcHdyc2VxLXNpbXBsZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL21tYy1wd3JzZXEtc2ltcGxlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTBlNzY3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMtcHdyc2VxLXNpbXBsZS50eHQKQEAgLTAsMCArMSwyNyBAQAorKiBUaGUgc2ltcGxlIE1NQyBwb3dlciBzZXF1ZW5jZSBwcm92aWRlcgorCitUaGUgcHVycG9zZSBvZiB0aGUgc2ltcGxlIE1NQyBwb3dlciBzZXF1ZW5jZSBwcm92aWRlciBpcyB0byBzdXBwb3J0cyBhIHNldCBvZgorY29tbW9uIHByb3BlcnRpZXMgYmV0d2VlbiB2YXJpb3VzIFNPQyBkZXNpZ25zLiBJdCB0aHVzIGVuYWJsZXMgdXMgdG8gdXNlIHRoZQorc2FtZSBwcm92aWRlciBmb3Igc2V2ZXJhbCBTT0MgZGVzaWducy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IGNvbnRhaW5zICJtbWMtcHdyc2VxLXNpbXBsZSIuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHJlc2V0LWdwaW9zIDogY29udGFpbnMgYSBsaXN0IG9mIEdQSU8gc3BlY2lmaWVycy4gVGhlIHJlc2V0IEdQSU9zIGFyZSBhc3NlcnRlZAorCWF0IGluaXRpYWxpemF0aW9uIGFuZCBwcmlvciB3ZSBzdGFydCB0aGUgcG93ZXIgdXAgcHJvY2VkdXJlIG9mIHRoZSBjYXJkLgorCVRoZXkgd2lsbCBiZSBkZS1hc3NlcnRlZCByaWdodCBhZnRlciB0aGUgcG93ZXIgaGFzIGJlZW4gcHJvdmlkZWQgdG8gdGhlCisJY2FyZC4KKy0gY2xvY2tzIDogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciB0aGUgZW50cnkgaW4gY2xvY2stbmFtZXMuCisgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorLSBjbG9jay1uYW1lcyA6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJ5OgorICAiZXh0X2Nsb2NrIiAoRXh0ZXJuYWwgY2xvY2sgcHJvdmlkZWQgdG8gdGhlIGNhcmQpLgorCitFeGFtcGxlOgorCisJc2RoY2kwX3B3cnNlcSB7CisJCWNvbXBhdGlibGUgPSAibW1jLXB3cnNlcS1zaW1wbGUiOworCQlyZXNldC1ncGlvcyA9IDwmZ3BpbzEgMTIgR1BJT19BQ1RJVkVfTE9XPjsKKwkJY2xvY2tzID0gPCZjbGtfMzI3NjhfY2s+OworCQljbG9jay1uYW1lcyA9ICJleHRfY2xvY2siOworCX0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbW1jLXNwaS1zbG90LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbW1jLXNwaS1zbG90LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTVlMmVjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMtc3BpLXNsb3QudHh0CkBAIC0wLDAgKzEsMzEgQEAKK01NQy9TRC9TRElPIHNsb3QgZGlyZWN0bHkgY29ubmVjdGVkIHRvIGEgU1BJIGJ1cworCitUaGlzIGZpbGUgZG9jdW1lbnRzIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGNvcmUgcHJvcGVydGllcyBkZXNjcmliZWQKK2J5IG1tYy50eHQgYW5kIHRoZSBwcm9wZXJ0aWVzIHVzZWQgYnkgdGhlIG1tY19zcGkgZHJpdmVyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBzcGktbWF4LWZyZXF1ZW5jeSA6IG1heGltdW0gZnJlcXVlbmN5IGZvciB0aGlzIGRldmljZSAoSHopLgorLSB2b2x0YWdlLXJhbmdlcyA6IHR3byBjZWxscyBhcmUgcmVxdWlyZWQsIGZpcnN0IGNlbGwgc3BlY2lmaWVzIG1pbmltdW0KKyAgc2xvdCB2b2x0YWdlIChtViksIHNlY29uZCBjZWxsIHNwZWNpZmllcyBtYXhpbXVtIHNsb3Qgdm9sdGFnZSAobVYpLgorICBTZXZlcmFsIHJhbmdlcyBjb3VsZCBiZSBzcGVjaWZpZWQuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGdwaW9zIDogbWF5IHNwZWNpZnkgR1BJT3MgaW4gdGhpcyBvcmRlcjogQ2FyZC1EZXRlY3QgR1BJTywKKyAgV3JpdGUtUHJvdGVjdCBHUElPLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBmb2xsb3cgdGhlCisgIGJpbmRpbmcgZnJvbSBtbWMudHh0LCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLgorLSBpbnRlcnJ1cHQtcGFyZW50IDogdGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGF0CisgIHNlcnZpY2VzIGludGVycnVwdHMgZm9yIHRoaXMgZGV2aWNlLgorCitFeGFtcGxlOgorCisJbW1jLXNsb3RAMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzgzMjNyZGItbW1jLXNsb3QiLAorCQkJICAgICAibW1jLXNwaS1zbG90IjsKKwkJcmVnID0gPDA+OworCQlncGlvcyA9IDwmcWVfcGlvX2QgMTQgMQorCQkJICZxZV9waW9fZCAxNSAwPjsKKwkJdm9sdGFnZS1yYW5nZXMgPSA8MzMwMCAzMzAwPjsKKwkJc3BpLW1heC1mcmVxdWVuY3kgPSA8NTAwMDAwMDA+OworCQlpbnRlcnJ1cHRzID0gPDQyPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmUElDPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkMjNiOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL21tYy50eHQKQEAgLTAsMCArMSwxNDcgQEAKK1RoZXNlIHByb3BlcnRpZXMgYXJlIGNvbW1vbiB0byBtdWx0aXBsZSBNTUMgaG9zdCBjb250cm9sbGVycy4gQW55IGhvc3QKK3RoYXQgcmVxdWlyZXMgdGhlIHJlc3BlY3RpdmUgZnVuY3Rpb25hbGl0eSBzaG91bGQgaW1wbGVtZW50IHRoZW0gdXNpbmcKK3RoZXNlIGRlZmluaXRpb25zLgorCitJbnRlcnByZXRlZCBieSB0aGUgT0YgY29yZToKKy0gcmVnOiBSZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aC4KKy0gaW50ZXJydXB0czogSW50ZXJydXB0cyB1c2VkIGJ5IHRoZSBNTUMgY29udHJvbGxlci4KKworQ2FyZCBkZXRlY3Rpb246CitJZiBubyBwcm9wZXJ0eSBiZWxvdyBpcyBzdXBwbGllZCwgaG9zdCBuYXRpdmUgY2FyZCBkZXRlY3QgaXMgdXNlZC4KK09ubHkgb25lIG9mIHRoZSBwcm9wZXJ0aWVzIGluIHRoaXMgc2VjdGlvbiBzaG91bGQgYmUgc3VwcGxpZWQ6CisgIC0gYnJva2VuLWNkOiBUaGVyZSBpcyBubyBjYXJkIGRldGVjdGlvbiBhdmFpbGFibGU7IHBvbGxpbmcgbXVzdCBiZSB1c2VkLgorICAtIGNkLWdwaW9zOiBTcGVjaWZ5IEdQSU9zIGZvciBjYXJkIGRldGVjdGlvbiwgc2VlIGdwaW8gYmluZGluZworICAtIG5vbi1yZW1vdmFibGU6IG5vbi1yZW1vdmFibGUgc2xvdCAobGlrZSBlTU1DKTsgYXNzdW1lIGFsd2F5cyBwcmVzZW50LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBidXMtd2lkdGg6IE51bWJlciBvZiBkYXRhIGxpbmVzLCBjYW4gYmUgPDE+LCA8ND4sIG9yIDw4Pi4gIFRoZSBkZWZhdWx0CisgIHdpbGwgYmUgPDE+IGlmIHRoZSBwcm9wZXJ0eSBpcyBhYnNlbnQuCistIHdwLWdwaW9zOiBTcGVjaWZ5IEdQSU9zIGZvciB3cml0ZSBwcm90ZWN0aW9uLCBzZWUgZ3BpbyBiaW5kaW5nCistIGNkLWludmVydGVkOiB3aGVuIHByZXNlbnQsIHBvbGFyaXR5IG9uIHRoZSBDRCBsaW5lIGlzIGludmVydGVkLiBTZWUgdGhlIG5vdGUKKyAgYmVsb3cgZm9yIHRoZSBjYXNlLCB3aGVuIGEgR1BJTyBpcyB1c2VkIGZvciB0aGUgQ0QgbGluZQorLSB3cC1pbnZlcnRlZDogd2hlbiBwcmVzZW50LCBwb2xhcml0eSBvbiB0aGUgV1AgbGluZSBpcyBpbnZlcnRlZC4gU2VlIHRoZSBub3RlCisgIGJlbG93IGZvciB0aGUgY2FzZSwgd2hlbiBhIEdQSU8gaXMgdXNlZCBmb3IgdGhlIFdQIGxpbmUKKy0gZGlzYWJsZS13cDogV2hlbiBzZXQgbm8gcGh5c2ljYWwgV1AgbGluZSBpcyBwcmVzZW50LiBUaGlzIHByb3BlcnR5IHNob3VsZAorICBvbmx5IGJlIHNwZWNpZmllZCB3aGVuIHRoZSBjb250cm9sbGVyIGhhcyBhIGRlZGljYXRlZCB3cml0ZS1wcm90ZWN0CisgIGRldGVjdGlvbiBsb2dpYy4gSWYgYSBHUElPIGlzIGFsd2F5cyB1c2VkIGZvciB0aGUgd3JpdGUtcHJvdGVjdCBkZXRlY3Rpb24KKyAgbG9naWMgaXQgaXMgc3VmZmljaWVudCB0byBub3Qgc3BlY2lmeSB3cC1ncGlvcyBwcm9wZXJ0eSBpbiB0aGUgYWJzZW5jZSBvZiBhIFdQCisgIGxpbmUuCistIG1heC1mcmVxdWVuY3k6IG1heGltdW0gb3BlcmF0aW5nIGNsb2NrIGZyZXF1ZW5jeQorLSBuby0xLTgtdjogd2hlbiBwcmVzZW50LCBkZW5vdGVzIHRoYXQgMS44diBjYXJkIHZvbHRhZ2UgaXMgbm90IHN1cHBvcnRlZCBvbgorICB0aGlzIHN5c3RlbSwgZXZlbiBpZiB0aGUgY29udHJvbGxlciBjbGFpbXMgaXQgaXMuCistIGNhcC1zZC1oaWdoc3BlZWQ6IFNEIGhpZ2gtc3BlZWQgdGltaW5nIGlzIHN1cHBvcnRlZAorLSBjYXAtbW1jLWhpZ2hzcGVlZDogTU1DIGhpZ2gtc3BlZWQgdGltaW5nIGlzIHN1cHBvcnRlZAorLSBzZC11aHMtc2RyMTI6IFNEIFVIUyBTRFIxMiBzcGVlZCBpcyBzdXBwb3J0ZWQKKy0gc2QtdWhzLXNkcjI1OiBTRCBVSFMgU0RSMjUgc3BlZWQgaXMgc3VwcG9ydGVkCistIHNkLXVocy1zZHI1MDogU0QgVUhTIFNEUjUwIHNwZWVkIGlzIHN1cHBvcnRlZAorLSBzZC11aHMtc2RyMTA0OiBTRCBVSFMgU0RSMTA0IHNwZWVkIGlzIHN1cHBvcnRlZAorLSBzZC11aHMtZGRyNTA6IFNEIFVIUyBERFI1MCBzcGVlZCBpcyBzdXBwb3J0ZWQKKy0gY2FwLXBvd2VyLW9mZi1jYXJkOiBwb3dlcmluZyBvZmYgdGhlIGNhcmQgaXMgc2FmZQorLSBjYXAtbW1jLWh3LXJlc2V0OiBlTU1DIGhhcmR3YXJlIHJlc2V0IGlzIHN1cHBvcnRlZAorLSBjYXAtc2Rpby1pcnE6IGVuYWJsZSBTRElPIElSUSBzaWduYWxsaW5nIG9uIHRoaXMgaW50ZXJmYWNlCistIGZ1bGwtcHdyLWN5Y2xlOiBmdWxsIHBvd2VyIGN5Y2xlIG9mIHRoZSBjYXJkIGlzIHN1cHBvcnRlZAorLSBtbWMtZGRyLTFfOHY6IGVNTUMgaGlnaC1zcGVlZCBERFIgbW9kZSgxLjhWIEkvTykgaXMgc3VwcG9ydGVkCistIG1tYy1kZHItMV8ydjogZU1NQyBoaWdoLXNwZWVkIEREUiBtb2RlKDEuMlYgSS9PKSBpcyBzdXBwb3J0ZWQKKy0gbW1jLWhzMjAwLTFfOHY6IGVNTUMgSFMyMDAgbW9kZSgxLjhWIEkvTykgaXMgc3VwcG9ydGVkCistIG1tYy1oczIwMC0xXzJ2OiBlTU1DIEhTMjAwIG1vZGUoMS4yViBJL08pIGlzIHN1cHBvcnRlZAorLSBtbWMtaHM0MDAtMV84djogZU1NQyBIUzQwMCBtb2RlKDEuOFYgSS9PKSBpcyBzdXBwb3J0ZWQKKy0gbW1jLWhzNDAwLTFfMnY6IGVNTUMgSFM0MDAgbW9kZSgxLjJWIEkvTykgaXMgc3VwcG9ydGVkCistIGRzcjogVmFsdWUgdGhlIGNhcmQncyAob3B0aW9uYWwpIERyaXZlciBTdGFnZSBSZWdpc3RlciAoRFNSKSBzaG91bGQgYmUKKyAgcHJvZ3JhbW1lZCB3aXRoLiBWYWxpZCByYW5nZTogWzAgLi4gMHhmZmZmXS4KKworKk5PVEUqIG9uIENEIGFuZCBXUCBwb2xhcml0eS4gVG8gdXNlIGNvbW1vbiBmb3IgYWxsIFNEL01NQyBob3N0IGNvbnRyb2xsZXJzIGxpbmUKK3BvbGFyaXR5IHByb3BlcnRpZXMsIHdlIGhhdmUgdG8gZml4IHRoZSBtZWFuaW5nIG9mIHRoZSAibm9ybWFsIiBhbmQgImludmVydGVkIgorbGluZSBsZXZlbHMuIFdlIGNob29zZSB0byBmb2xsb3cgdGhlIFNESENJIHN0YW5kYXJkLCB3aGljaCBzcGVjaWZpZXMgYm90aCB0aG9zZQorbGluZXMgYXMgImFjdGl2ZSBsb3cuIiBUaGVyZWZvcmUsIHVzaW5nIHRoZSAiY2QtaW52ZXJ0ZWQiIHByb3BlcnR5IG1lYW5zLCB0aGF0Cit0aGUgQ0QgbGluZSBpcyBhY3RpdmUgaGlnaCwgaS5lLiBpdCBpcyBoaWdoLCB3aGVuIGEgY2FyZCBpcyBpbnNlcnRlZC4gU2ltaWxhcgorbG9naWMgYXBwbGllcyB0byB0aGUgIndwLWludmVydGVkIiBwcm9wZXJ0eS4KKworQ0QgYW5kIFdQIGxpbmVzIGNhbiBiZSBpbXBsZW1lbnRlZCBvbiB0aGUgaGFyZHdhcmUgaW4gb25lIG9mIHR3byB3YXlzOiBhcyBHUElPcywKK3NwZWNpZmllZCBpbiBjZC1ncGlvcyBhbmQgd3AtZ3Bpb3MgcHJvcGVydGllcywgb3IgYXMgZGVkaWNhdGVkIHBpbnMuIFBvbGFyaXR5IG9mCitkZWRpY2F0ZWQgcGlucyBjYW4gYmUgc3BlY2lmaWVkLCB1c2luZyAqLWludmVydGVkIHByb3BlcnRpZXMuIEdQSU8gcG9sYXJpdHkgY2FuCithbHNvIGJlIHNwZWNpZmllZCB1c2luZyB0aGUgT0ZfR1BJT19BQ1RJVkVfTE9XIGZsYWcuIFRoaXMgY3JlYXRlcyBhbiBhbWJpZ3VpdHkKK2luIHRoZSBsYXR0ZXIgY2FzZS4gV2UgY2hvb3NlIHRvIHVzZSB0aGUgWE9SIGxvZ2ljIGZvciBHUElPIENEIGFuZCBXUCBsaW5lcy4KK1RoaXMgbWVhbnMsIHRoZSB0d28gcHJvcGVydGllcyBhcmUgInN1cGVyaW1wb3NlZCwiIGZvciBleGFtcGxlIGxlYXZpbmcgdGhlCitPRl9HUElPX0FDVElWRV9MT1cgZmxhZyBjbGVhciBhbmQgc3BlY2lmeWluZyB0aGUgcmVzcGVjdGl2ZSAqLWludmVydGVkCitwcm9wZXJ0eSByZXN1bHRzIGluIGEgZG91YmxlLWludmVyc2lvbiBhbmQgYWN0dWFsbHkgbWVhbnMgdGhlICJub3JtYWwiIGxpbmUKK3BvbGFyaXR5IGlzIGluIGVmZmVjdC4KKworT3B0aW9uYWwgU0RJTyBwcm9wZXJ0aWVzOgorLSBrZWVwLXBvd2VyLWluLXN1c3BlbmQ6IFByZXNlcnZlcyBjYXJkIHBvd2VyIGR1cmluZyBhIHN1c3BlbmQvcmVzdW1lIGN5Y2xlCistIHdha2V1cC1zb3VyY2U6IEVuYWJsZXMgd2FrZSB1cCBvZiBob3N0IHN5c3RlbSBvbiBTRElPIElSUSBhc3NlcnRpb24KKwkJIChMZWdhY3kgcHJvcGVydHkgc3VwcG9ydGVkOiAiZW5hYmxlLXNkaW8td2FrZXVwIikKKworCitNTUMgcG93ZXIgc2VxdWVuY2VzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU3lzdGVtIG9uIGNoaXAgZGVzaWducyBtYXkgc3BlY2lmeSBhIHNwZWNpZmljIE1NQyBwb3dlciBzZXF1ZW5jZS4gVG8KK3N1Y2Nlc3NmdWxseSBkZXRlY3QgYW4gKGUpTU1DL1NEL1NESU8gY2FyZCwgdGhhdCBwb3dlciBzZXF1ZW5jZSBtdXN0IGJlCittYWludGFpbmVkIHdoaWxlIGluaXRpYWxpemluZyB0aGUgY2FyZC4KKworT3B0aW9uYWwgcHJvcGVydHk6CistIG1tYy1wd3JzZXE6IHBoYW5kbGUgdG8gdGhlIE1NQyBwb3dlciBzZXF1ZW5jZSBub2RlLiBTZWUgIm1tYy1wd3JzZXEtKiIKKwlmb3IgZG9jdW1lbnRhdGlvbiBvZiBNTUMgcG93ZXIgc2VxdWVuY2UgYmluZGluZ3MuCisKKworVXNlIG9mIEZ1bmN0aW9uIHN1Ym5vZGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT24gZW1iZWRkZWQgc3lzdGVtcyB0aGUgY2FyZHMgY29ubmVjdGVkIHRvIGEgaG9zdCBtYXkgbmVlZCBhZGRpdGlvbmFsCitwcm9wZXJ0aWVzLiBUaGVzZSBjYW4gYmUgc3BlY2lmaWVkIGluIHN1Ym5vZGVzIHRvIHRoZSBob3N0IGNvbnRyb2xsZXIgbm9kZS4KK1RoZSBzdWJub2RlcyBhcmUgaWRlbnRpZmllZCBieSB0aGUgc3RhbmRhcmQgJ3JlZycgcHJvcGVydHkuCitXaGljaCBpbmZvcm1hdGlvbiBleGFjdGx5IGNhbiBiZSBzcGVjaWZpZWQgZGVwZW5kcyBvbiB0aGUgYmluZGluZ3MgZm9yIHRoZQorU0RJTyBmdW5jdGlvbiBkcml2ZXIgZm9yIHRoZSBzdWJub2RlLCBhcyBzcGVjaWZpZWQgYnkgdGhlIGNvbXBhdGlibGUgc3RyaW5nLgorCitSZXF1aXJlZCBob3N0IG5vZGUgcHJvcGVydGllcyB3aGVuIHVzaW5nIGZ1bmN0aW9uIHN1Ym5vZGVzOgorLSAjYWRkcmVzcy1jZWxsczogc2hvdWxkIGJlIG9uZS4gVGhlIGNlbGwgaXMgdGhlIHNsb3QgaWQuCistICNzaXplLWNlbGxzOiBzaG91bGQgYmUgemVyby4KKworUmVxdWlyZWQgZnVuY3Rpb24gc3Vibm9kZSBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBuYW1lIG9mIFNESU8gZnVuY3Rpb24gZm9sbG93aW5nIGdlbmVyaWMgbmFtZXMgcmVjb21tZW5kZWQgcHJhY3RpY2UKKy0gcmVnOiBNdXN0IGNvbnRhaW4gdGhlIFNESU8gZnVuY3Rpb24gbnVtYmVyIG9mIHRoZSBmdW5jdGlvbiB0aGlzIHN1Ym5vZGUKKyAgICAgICBkZXNjcmliZXMuIEEgdmFsdWUgb2YgMCBkZW5vdGVzIHRoZSBtZW1vcnkgU0QgZnVuY3Rpb24sIHZhbHVlcyBmcm9tCisgICAgICAgMSB0byA3IGRlbm90ZSB0aGUgU0RJTyBmdW5jdGlvbnMuCisKKworRXhhbXBsZXMKKy0tLS0tLS0tCisKK0Jhc2ljIGV4YW1wbGU6CisKK3NkaGNpQGFiMDAwMDAwIHsKKwljb21wYXRpYmxlID0gInNkaGNpIjsKKwlyZWcgPSA8MHhhYjAwMDAwMCAweDIwMD47CisJaW50ZXJydXB0cyA9IDwyMz47CisJYnVzLXdpZHRoID0gPDQ+OworCWNkLWdwaW9zID0gPCZncGlvIDY5IDA+OworCWNkLWludmVydGVkOworCXdwLWdwaW9zID0gPCZncGlvIDcwIDA+OworCW1heC1mcmVxdWVuY3kgPSA8NTAwMDAwMDA+OworCWtlZXAtcG93ZXItaW4tc3VzcGVuZDsKKwl3YWtldXAtc291cmNlOworCW1tYy1wd3JzZXEgPSA8JnNkaGNpMF9wd3JzZXE+Cit9CisKK0V4YW1wbGUgd2l0aCBzZGlvIGZ1bmN0aW9uIHN1Ym5vZGU6CisKK21tYzM6IG1tY0AwMWMxMjAwMCB7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47CisKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCXBpbmN0cmwtMCA9IDwmbW1jM19waW5zX2E+OworCXZtbWMtc3VwcGx5ID0gPCZyZWdfdm1tYzM+OworCWJ1cy13aWR0aCA9IDw0PjsKKwlub24tcmVtb3ZhYmxlOworCW1tYy1wd3JzZXEgPSA8JnNkaGNpMF9wd3JzZXE+CisJc3RhdHVzID0gIm9rYXkiOworCisJYnJjbWY6IGJjcm1mQDEgeworCQlyZWcgPSA8MT47CisJCWNvbXBhdGlibGUgPSAiYnJjbSxiY200M3h4LWZtYWMiOworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZwaW8+OworCQlpbnRlcnJ1cHRzID0gPDEwIDg+OyAvKiBQSDEwIC8gRUlOVDEwICovCisJCWludGVycnVwdC1uYW1lcyA9ICJob3N0LXdha2UiOworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWNpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbW1jaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM3OTZjZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbW1jaS50eHQKQEAgLTAsMCArMSw2MSBAQAorKiBBUk0gUHJpbWVDZWxsIE11bHRpTWVkaWEgQ2FyZCBJbnRlcmZhY2UgKE1NQ0kpIFBMMTgwLzEKKworVGhlIEFSTSBQcmltZUNlbGwgTU1DSSBQTDE4MCBhbmQgUEwxODEgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGZvcgorcmVhZGluZyBhbmQgd3JpdGluZyB0byBNdWx0aU1lZGlhIGFuZCBTRCBjYXJkcyBhbGlrZS4KKworVGhpcyBmaWxlIGRvY3VtZW50cyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBjb3JlIHByb3BlcnRpZXMgZGVzY3JpYmVkCitieSBtbWMudHh0IGFuZCB0aGUgcHJvcGVydGllcyB1c2VkIGJ5IHRoZSBtbWNpIGRyaXZlci4gVXNpbmcgInN0IiBhcwordGhlIHByZWZpeCBmb3IgYSBwcm9wZXJ0eSwgaW5kaWNhdGVzIHN1cHBvcnQgYnkgdGhlIFNUIE1pY3JvIHZhcmlhbnQuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgICAgICAgICAgICAgOiBjb250YWlucyAiYXJtLHBsMTh4IiwgImFybSxwcmltZWNlbGwiLgorLSB2bW1jLXN1cHBseSAgICAgICAgICAgIDogcGhhbmRsZSB0byB0aGUgcmVndWxhdG9yIGRldmljZSB0cmVlIG5vZGUsIG1lbnRpb25lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgdGhlIFZDQy9WREQgc3VwcGx5IGluIHRoZSBlTU1DL1NEIHNwZWNzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBhcm0scHJpbWVjZWxsLXBlcmlwaGlkIDogY29udGFpbnMgdGhlIFByaW1lQ2VsbCBQZXJpcGhlcmFsIElELCBpdCBvdmVycmlkZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBJRCBwcm92aWRlZCBieSB0aGUgSFcKKy0gdnFtbWMtc3VwcGx5ICAgICAgICAgICA6IHBoYW5kbGUgdG8gdGhlIHJlZ3VsYXRvciBkZXZpY2UgdHJlZSBub2RlLCBtZW50aW9uZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSBWQ0NRL1ZERF9JTyBzdXBwbHkgaW4gdGhlIGVNTUMvU0Qgc3BlY3MuCistIHN0LHNpZy1kaXItZGF0MCAgICAgICAgOiBidXMgc2lnbmFsIGRpcmVjdGlvbiBwaW4gdXNlZCBmb3IgREFUWzBdLgorLSBzdCxzaWctZGlyLWRhdDIgICAgICAgIDogYnVzIHNpZ25hbCBkaXJlY3Rpb24gcGluIHVzZWQgZm9yIERBVFsyXS4KKy0gc3Qsc2lnLWRpci1kYXQzMSAgICAgICA6IGJ1cyBzaWduYWwgZGlyZWN0aW9uIHBpbiB1c2VkIGZvciBEQVRbM10gYW5kIERBVFsxXS4KKy0gc3Qsc2lnLWRpci1kYXQ3NCAgICAgICA6IGJ1cyBzaWduYWwgZGlyZWN0aW9uIHBpbiB1c2VkIGZvciBEQVRbNF0gdG8gREFUWzddLgorLSBzdCxzaWctZGlyLWNtZCAgICAgICAgIDogY21kIHNpZ25hbCBkaXJlY3Rpb24gcGluIHVzZWQgZm9yIENNRC4KKy0gc3Qsc2lnLXBpbi1mYmNsayAgICAgICA6IGZlZWRiYWNrIGNsb2NrIHNpZ25hbCBwaW4gdXNlZC4KKworRGVwcmVjYXRlZCBwcm9wZXJ0aWVzOgorLSBtbWMtY2FwLW1tYy1oaWdoc3BlZWQgIDogaW5kaWNhdGVzIHdoZXRoZXIgTU1DIGlzIGhpZ2ggc3BlZWQgY2FwYWJsZS4KKy0gbW1jLWNhcC1zZC1oaWdoc3BlZWQgICA6IGluZGljYXRlcyB3aGV0aGVyIFNEIGlzIGhpZ2ggc3BlZWQgY2FwYWJsZS4KKworRXhhbXBsZToKKworc2RpMF9wZXIxQDgwMTI2MDAwIHsKKwljb21wYXRpYmxlID0gImFybSxwbDE4eCIsICJhcm0scHJpbWVjZWxsIjsKKwlyZWcgPSA8MHg4MDEyNjAwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8MCA2MCBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKworCWRtYXMgPSA8JmRtYSAyOSAwIDB4Mj4sIC8qIExvZ2ljYWwgLSBEZXZUb01lbSAqLworCSAgICAgICA8JmRtYSAyOSAwIDB4MD47IC8qIExvZ2ljYWwgLSBNZW1Ub0RldiAqLworCWRtYS1uYW1lcyA9ICJyeCIsICJ0eCI7CisKKwljbG9ja3MgPSA8JnByY2Nfa2NsayAxIDU+LCA8JnByY2NfcGNsayAxIDU+OworCWNsb2NrLW5hbWVzID0gInNkaSIsICJhcGJfcGNsayI7CisKKwltYXgtZnJlcXVlbmN5ID0gPDEwMDAwMDAwMD47CisJYnVzLXdpZHRoID0gPDQ+OworCWNhcC1zZC1oaWdoc3BlZWQ7CisJY2FwLW1tYy1oaWdoc3BlZWQ7CisJY2QtZ3Bpb3MgID0gPCZncGlvMiAzMSAweDQ+OyAvLyA5NQorCXN0LHNpZy1kaXItZGF0MDsKKwlzdCxzaWctZGlyLWRhdDI7CisJc3Qsc2lnLWRpci1jbWQ7CisJc3Qsc2lnLXBpbi1mYmNsazsKKworCXZtbWMtc3VwcGx5ID0gPCZhYjg1MDBfbGRvX2F1eDNfcmVnPjsKKwl2cW1tYy1zdXBwbHkgPSA8JnZtbWNpPjsKKworCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCIsICJzbGVlcCI7CisJcGluY3RybC0wID0gPCZzZGkwX2RlZmF1bHRfbW9kZT47CisJcGluY3RybC0xID0gPCZzZGkwX3NsZWVwX21vZGU+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbW94YSxtb3hhcnQtbW1jLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbW94YSxtb3hhcnQtbW1jLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjM4MTkxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tb3hhLG1veGFydC1tbWMudHh0CkBAIC0wLDAgKzEsMzAgQEAKK01PWEEgQVJUIE1NQyBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlCisKKyAgSW5oZXJpdHMgZnJvbSBtbWMgYmluZGluZ1sxXS4KKworICBbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMudHh0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6CU11c3QgYmUgIm1veGEsbW94YXJ0LW1tYyIgb3IgImZhcmFkYXksZnRzZGMwMTAiCistIHJlZyA6CQlTaG91bGQgY29udGFpbiByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorLSBpbnRlcnJ1cHRzIDoJU2hvdWxkIGNvbnRhaW4gdGhlIGludGVycnVwdCBudW1iZXIKKy0gY2xvY2tzIDoJU2hvdWxkIGNvbnRhaW4gcGhhbmRsZSBmb3IgdGhlIGNsb2NrIGZlZWRpbmcgdGhlIE1NQyBjb250cm9sbGVyCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gZG1hcyA6CVNob3VsZCBjb250YWluIHR3byBETUEgY2hhbm5lbHMsIGxpbmUgcmVxdWVzdCBudW1iZXIgbXVzdCBiZSA1IGZvcgorCQlib3RoIGNoYW5uZWxzCistIGRtYS1uYW1lcyA6CU11c3QgYmUgInR4IiwgInJ4IgorCitFeGFtcGxlOgorCisJbW1jOiBtbWNAOThlMDAwMDAgeworCQljb21wYXRpYmxlID0gIm1veGEsbW94YXJ0LW1tYyI7CisJCXJlZyA9IDwweDk4ZTAwMDAwIDB4NUM+OworCQlpbnRlcnJ1cHRzID0gPDUgMD47CisJCWNsb2NrcyA9IDwmY2xrX2FwYj47CisJCWRtYXMgPSAgPCZkbWEgNT4sCisJCQk8JmRtYSA1PjsKKwkJZG1hLW5hbWVzID0gInR4IiwgInJ4IjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tdGstc2QudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tdGstc2QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMjBjN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL210ay1zZC50eHQKQEAgLTAsMCArMSw0MSBAQAorKiBNVEsgTU1DIGNvbnRyb2xsZXIKKworVGhlIE1USyAgTVNEQyBjYW4gYWN0IGFzIGEgTU1DIGNvbnRyb2xsZXIKK3RvIHN1cHBvcnQgTU1DLCBTRCwgYW5kIFNESU8gdHlwZXMgb2YgbWVtb3J5IGNhcmRzLgorCitUaGlzIGZpbGUgZG9jdW1lbnRzIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGNvcmUgcHJvcGVydGllcyBpbiBtbWMudHh0CithbmQgdGhlIHByb3BlcnRpZXMgdXNlZCBieSB0aGUgbXNkYyBkcml2ZXIuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAibWVkaWF0ZWssbXQ4MTczLW1tYyIsIm1lZGlhdGVrLG10ODEzNS1tbWMiCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIE1TREMgaW50ZXJydXB0IG51bWJlcgorLSBjbG9ja3M6IE1TREMgc291cmNlIGNsb2NrLCBIQ0xLCistIGNsb2NrLW5hbWVzOiAic291cmNlIiwgImhjbGsiCistIHBpbmN0cmwtbmFtZXM6IHNob3VsZCBiZSAiZGVmYXVsdCIsICJzdGF0ZV91aHMiCistIHBpbmN0cmwtMDogc2hvdWxkIGNvbnRhaW4gZGVmYXVsdC9oaWdoIHNwZWVkIHBpbiBjdHJsCistIHBpbmN0cmwtMTogc2hvdWxkIGNvbnRhaW4gdWhzIG1vZGUgcGluIGN0cmwKKy0gdm1tYy1zdXBwbHk6IHBvd2VyIHRvIHRoZSBDb3JlCistIHZxbW1jLXN1cHBseTogcG93ZXIgdG8gdGhlIElPCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGFzc2lnbmVkLWNsb2NrczogUExMIG9mIHRoZSBzb3VyY2UgY2xvY2sKKy0gYXNzaWduZWQtY2xvY2stcGFyZW50czogcGFyZW50IG9mIHNvdXJjZSBjbG9jaywgdXNlZCBmb3IgSFM0MDAgbW9kZSB0byBnZXQgNDAwTWh6IHNvdXJjZSBjbG9jaworLSBoczQwMC1kcy1kZWxheTogSFM0MDAgRFMgZGVsYXkgc2V0dGluZworCitFeGFtcGxlczoKK21tYzA6IG1tY0AxMTIzMDAwMCB7CisJY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtbW1jIiwgIm1lZGlhdGVrLG10ODEzNS1tbWMiOworCXJlZyA9IDwwIDB4MTEyMzAwMDAgMCAweDEwOD47CisJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDM5IElSUV9UWVBFX0xFVkVMX0xPVz47CisJdm1tYy1zdXBwbHkgPSA8Jm10NjM5N192ZW1jXzN2M19yZWc+OworCXZxbW1jLXN1cHBseSA9IDwmbXQ2Mzk3X3ZpbzE4X3JlZz47CisJY2xvY2tzID0gPCZwZXJpY2ZnIENMS19QRVJJX01TREMzMF8wPiwKKwkgICAgICAgICA8JnRvcGNrZ2VuIENMS19UT1BfTVNEQzUwXzBfSF9TRUw+OworCWNsb2NrLW5hbWVzID0gInNvdXJjZSIsICJoY2xrIjsKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiLCAic3RhdGVfdWhzIjsKKwlwaW5jdHJsLTAgPSA8Jm1tYzBfcGluc19kZWZhdWx0PjsKKwlwaW5jdHJsLTEgPSA8Jm1tYzBfcGluc191aHM+OworCWFzc2lnbmVkLWNsb2NrcyA9IDwmdG9wY2tnZW4gQ0xLX1RPUF9NU0RDNTBfMF9TRUw+OworCWFzc2lnbmVkLWNsb2NrLXBhcmVudHMgPSA8JnRvcGNrZ2VuIENMS19UT1BfTVNEQ1BMTF9EMj47CisJaHM0MDAtZHMtZGVsYXkgPSA8MHgxNDAxNT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9teHMtbW1jLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbXhzLW1tYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE1YWRkYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbXhzLW1tYy50eHQKQEAgLTAsMCArMSwyNyBAQAorKiBGcmVlc2NhbGUgTVhTIE1NQyBjb250cm9sbGVyCisKK1RoZSBGcmVlc2NhbGUgTVhTIFN5bmNocm9ub3VzIFNlcmlhbCBQb3J0cyAoU1NQKSBjYW4gYWN0IGFzIGEgTU1DIGNvbnRyb2xsZXIKK3RvIHN1cHBvcnQgTU1DLCBTRCwgYW5kIFNESU8gdHlwZXMgb2YgbWVtb3J5IGNhcmRzLgorCitUaGlzIGZpbGUgZG9jdW1lbnRzIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGNvcmUgcHJvcGVydGllcyBpbiBtbWMudHh0CithbmQgdGhlIHByb3BlcnRpZXMgdXNlZCBieSB0aGUgbXhzbW1jIGRyaXZlci4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJmc2wsPGNoaXA+LW1tYyIuICBUaGUgc3VwcG9ydGVkIGNoaXBzIGluY2x1ZGUKKyAgaW14MjMgYW5kIGlteDI4LgorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBFUlJPUiBpbnRlcnJ1cHQgbnVtYmVyCistIGRtYXM6IERNQSBzcGVjaWZpZXIsIGNvbnNpc3Rpbmcgb2YgYSBwaGFuZGxlIHRvIERNQSBjb250cm9sbGVyIG5vZGUKKyAgYW5kIFNTUCBETUEgY2hhbm5lbCBJRC4KKyAgUmVmZXIgdG8gZG1hLnR4dCBhbmQgZnNsLW14cy1kbWEudHh0IGZvciBkZXRhaWxzLgorLSBkbWEtbmFtZXM6IE11c3QgYmUgInJ4LXR4Ii4KKworRXhhbXBsZXM6CisKK3NzcDA6IHNzcEA4MDAxMDAwMCB7CisJY29tcGF0aWJsZSA9ICJmc2wsaW14MjgtbW1jIjsKKwlyZWcgPSA8MHg4MDAxMDAwMCAyMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDk2PjsKKwlkbWFzID0gPCZkbWFfYXBiaCAwPjsKKwlkbWEtbmFtZXMgPSAicngtdHgiOworCWJ1cy13aWR0aCA9IDw4PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL252aWRpYSx0ZWdyYTIwLXNkaGNpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbnZpZGlhLHRlZ3JhMjAtc2RoY2kudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1YjgzNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL252aWRpYSx0ZWdyYTIwLXNkaGNpLnR4dApAQCAtMCwwICsxLDM4IEBACisqIE5WSURJQSBUZWdyYSBTZWN1cmUgRGlnaXRhbCBIb3N0IENvbnRyb2xsZXIKKworVGhpcyBjb250cm9sbGVyIG9uIFRlZ3JhIGZhbWlseSBTb0NzIHByb3ZpZGVzIGFuIGludGVyZmFjZSBmb3IgTU1DLCBTRCwKK2FuZCBTRElPIHR5cGVzIG9mIG1lbW9yeSBjYXJkcy4KKworVGhpcyBmaWxlIGRvY3VtZW50cyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBjb3JlIHByb3BlcnRpZXMgZGVzY3JpYmVkCitieSBtbWMudHh0IGFuZCB0aGUgcHJvcGVydGllcyB1c2VkIGJ5IHRoZSBzZGhjaS10ZWdyYSBkcml2ZXIuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBGb3IgVGVncmEyMCwgbXVzdCBjb250YWluICJudmlkaWEsdGVncmEyMC1zZGhjaSIuCisgIEZvciBUZWdyYTMwLCBtdXN0IGNvbnRhaW4gIm52aWRpYSx0ZWdyYTMwLXNkaGNpIi4gIEZvciBUZWdyYTExNCwKKyAgbXVzdCBjb250YWluICJudmlkaWEsdGVncmExMTQtc2RoY2kiLiAgRm9yIFRlZ3JhMTI0LCBtdXN0IGNvbnRhaW4KKyAgIm52aWRpYSx0ZWdyYTEyNC1zZGhjaSIuICBPdGhlcndpc2UsIG11c3QgY29udGFpbiAibnZpZGlhLDxjaGlwPi1zZGhjaSIsCisgIHBsdXMgb25lIG9mIHRoZSBhYm92ZSwgd2hlcmUgPGNoaXA+IGlzIHRlZ3JhMTMyIG9yIHRlZ3JhMjEwLgorLSBjbG9ja3MgOiBNdXN0IGNvbnRhaW4gb25lIGVudHJ5LCBmb3IgdGhlIG1vZHVsZSBjbG9jay4KKyAgU2VlIC4uL2Nsb2Nrcy9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCistIHJlc2V0cyA6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiByZXNldC1uYW1lcy4KKyAgU2VlIC4uL3Jlc2V0L3Jlc2V0LnR4dCBmb3IgZGV0YWlscy4KKy0gcmVzZXQtbmFtZXMgOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAtIHNkaGNpCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHBvd2VyLWdwaW9zIDogU3BlY2lmeSBHUElPcyBmb3IgcG93ZXIgY29udHJvbAorCitFeGFtcGxlOgorCitzZGhjaUBjODAwMDIwMCB7CisJY29tcGF0aWJsZSA9ICJudmlkaWEsdGVncmEyMC1zZGhjaSI7CisJcmVnID0gPDB4YzgwMDAyMDAgMHgyMDA+OworCWludGVycnVwdHMgPSA8NDc+OworCWNsb2NrcyA9IDwmdGVncmFfY2FyIDE0PjsKKwlyZXNldHMgPSA8JnRlZ3JhX2NhciAxND47CisJcmVzZXQtbmFtZXMgPSAic2RoY2kiOworCWNkLWdwaW9zID0gPCZncGlvIDY5IDA+OyAvKiBncGlvIFBJNSAqLworCXdwLWdwaW9zID0gPCZncGlvIDU3IDA+OyAvKiBncGlvIFBIMSAqLworCXBvd2VyLWdwaW9zID0gPCZncGlvIDE1NSAwPjsgLyogZ3BpbyBQVDMgKi8KKwlidXMtd2lkdGggPSA8OD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9vcmlvbi1zZGlvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvb3Jpb24tc2Rpby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRmMGViZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvb3Jpb24tc2Rpby50eHQKQEAgLTAsMCArMSwxNyBAQAorKiBNYXJ2ZWxsIG9yaW9uLXNkaW8gY29udHJvbGxlcgorCitUaGlzIGZpbGUgZG9jdW1lbnRzIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGNvcmUgcHJvcGVydGllcyBpbiBtbWMudHh0CithbmQgdGhlIHByb3BlcnRpZXMgdXNlZCBieSB0aGUgb3Jpb24tc2RpbyBkcml2ZXIuCisKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJtYXJ2ZWxsLG9yaW9uLXNkaW8iCistIGNsb2NrczogcmVmZXJlbmNlIHRvIHRoZSBjbG9jayBvZiB0aGUgU0RJTyBpbnRlcmZhY2UKKworRXhhbXBsZToKKworCW12c2Rpb0BkMDBkNDAwMCB7CisJCWNvbXBhdGlibGUgPSAibWFydmVsbCxvcmlvbi1zZGlvIjsKKwkJcmVnID0gPDB4ZDAwZDQwMDAgMHgyMDA+OworCQlpbnRlcnJ1cHRzID0gPDU0PjsKKwkJY2xvY2tzID0gPCZnYXRlY2xrIDE3PjsKKwkJc3RhdHVzID0gImRpc2FibGVkIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9weGEtbW1jLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvcHhhLW1tYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjcwMjVkZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvcHhhLW1tYy50eHQKQEAgLTAsMCArMSwyNSBAQAorKiBQWEEgTU1DIGRyaXZlcnMKKworRHJpdmVyIGJpbmRpbmdzIGZvciB0aGUgUFhBIE1DSSAoTU1DL1NESU8pIGludGVyZmFjZXMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJtYXJ2ZWxsLHB4YS1tbWMiLgorLSB2bW1jLXN1cHBseTogQSByZWd1bGF0b3IgZm9yIFZNTUMKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gbWFydmVsbCxkZXRlY3QtZGVsYXktbXM6IHNldHMgdGhlIGRldGVjdGlvbiBkZWxheSB0aW1lb3V0IGluIG1zLgorLSBtYXJ2ZWxsLGdwaW8tcG93ZXI6IEdQSU8gc3BlYyBmb3IgdGhlIGNhcmQgcG93ZXIgZW5hYmxlIHBpbgorCitUaGlzIGZpbGUgZG9jdW1lbnRzIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGNvcmUgcHJvcGVydGllcyBpbiBtbWMudHh0CithbmQgdGhlIHByb3BlcnRpZXMgdXNlZCBieSB0aGUgcHhhLW1tYyBkcml2ZXIuCisKK0V4YW1wbGVzOgorCittbWMwOiBtbWNANDExMDAwMDAgeworCWNvbXBhdGlibGUgPSAibWFydmVsbCxweGEtbW1jIjsKKwlyZWcgPSA8MHg0MTEwMDAwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8MjM+OworCWNkLWdwaW9zID0gPCZncGlvIDIzIDA+OworCXdwLWdwaW9zID0gPCZncGlvIDI0IDA+OworfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9yZW5lc2FzLG1tY2lmLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvcmVuZXNhcyxtbWNpZi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FlMjllYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvcmVuZXNhcyxtbWNpZi50eHQKQEAgLTAsMCArMSwzNiBAQAorKiBSZW5lc2FzIE11bHRpIE1lZGlhIENhcmQgSW50ZXJmYWNlIChNTUNJRikgQ29udHJvbGxlcgorCitUaGlzIGZpbGUgZG9jdW1lbnRzIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGNvcmUgcHJvcGVydGllcyBpbiBtbWMudHh0CithbmQgdGhlIHByb3BlcnRpZXMgdXNlZCBieSB0aGUgTU1DSUYgZGV2aWNlLgorCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJyZW5lc2FzLG1tY2lmLTxzb2N0eXBlPiIsICJyZW5lc2FzLHNoLW1tY2lmIiBhcyBhCisgIGZhbGxiYWNrLiBFeGFtcGxlcyB3aXRoIDxzb2N0eXBlPiBhcmU6CisJLSAicmVuZXNhcyxtbWNpZi1yOGE3NzQwIiBmb3IgdGhlIE1NQ0lGIGZvdW5kIGluIHI4YTc3NDAgU29DcworCS0gInJlbmVzYXMsbW1jaWYtcjhhNzc5MCIgZm9yIHRoZSBNTUNJRiBmb3VuZCBpbiByOGE3NzkwIFNvQ3MKKwktICJyZW5lc2FzLG1tY2lmLXI4YTc3OTEiIGZvciB0aGUgTU1DSUYgZm91bmQgaW4gcjhhNzc5MSBTb0NzCisJLSAicmVuZXNhcyxtbWNpZi1yOGE3Nzk0IiBmb3IgdGhlIE1NQ0lGIGZvdW5kIGluIHI4YTc3OTQgU29DcworCistIGNsb2NrczogcmVmZXJlbmNlIHRvIHRoZSBmdW5jdGlvbmFsIGNsb2NrCisKKy0gZG1hczogcmVmZXJlbmNlIHRvIHRoZSBETUEgY2hhbm5lbHMsIG9uZSBwZXIgY2hhbm5lbCBuYW1lIGxpc3RlZCBpbiB0aGUKKyAgZG1hLW5hbWVzIHByb3BlcnR5LgorLSBkbWEtbmFtZXM6IG11c3QgY29udGFpbiAidHgiIGZvciB0aGUgdHJhbnNtaXQgRE1BIGNoYW5uZWwgYW5kICJyeCIgZm9yIHRoZQorICByZWNlaXZlIERNQSBjaGFubmVsLgorLSBtYXgtZnJlcXVlbmN5OiBNYXhpbXVtIG9wZXJhdGluZyBjbG9jayBmcmVxdWVuY3ksIGRyaXZlciB1c2VzIGRlZmF1bHQgY2xvY2sKKyAgZnJlcXVlbmN5IGlmIGl0IGlzIG5vdCBzZXQuCisKKworRXhhbXBsZTogUjhBNzc5MCAoUi1DYXIgSDIpIE1NQ0lGMAorCisJbW1jaWYwOiBtbWNAZWUyMDAwMDAgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMsbW1jaWYtcjhhNzc5MCIsICJyZW5lc2FzLHNoLW1tY2lmIjsKKwkJcmVnID0gPDAgMHhlZTIwMDAwMCAwIDB4ODA+OworCQlpbnRlcnJ1cHRzID0gPDAgMTY5IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQljbG9ja3MgPSA8Jm1zdHAzX2Nsa3MgUjhBNzc5MF9DTEtfTU1DSUYwPjsKKwkJZG1hcyA9IDwmZG1hYzAgMHhkMT4sIDwmZG1hYzAgMHhkMj47CisJCWRtYS1uYW1lcyA9ICJ0eCIsICJyeCI7CisJCW1heC1mcmVxdWVuY3kgPSA8OTc1MDAwMDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL3JvY2tjaGlwLWR3LW1zaGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9yb2NrY2hpcC1kdy1tc2hjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGMxM2I2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9yb2NrY2hpcC1kdy1tc2hjLnR4dApAQCAtMCwwICsxLDM4IEBACisqIFJvY2tjaGlwIHNwZWNpZmljIGV4dGVuc2lvbnMgdG8gdGhlIFN5bm9wc3lzIERlc2lnbndhcmUgTW9iaWxlCisgIFN0b3JhZ2UgSG9zdCBDb250cm9sbGVyCisKK1RoZSBTeW5vcHN5cyBkZXNpZ253YXJlIG1vYmlsZSBzdG9yYWdlIGhvc3QgY29udHJvbGxlciBpcyB1c2VkIHRvIGludGVyZmFjZQorYSBTb0Mgd2l0aCBzdG9yYWdlIG1lZGl1bSBzdWNoIGFzIGVNTUMgb3IgU0QvTU1DIGNhcmRzLiBUaGlzIGZpbGUgZG9jdW1lbnRzCitkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBjb3JlIFN5bm9wc3lzIGR3IG1zaGMgY29udHJvbGxlciBwcm9wZXJ0aWVzIGRlc2NyaWJlZAorYnkgc3lub3BzeXMtZHctbXNoYy50eHQgYW5kIHRoZSBwcm9wZXJ0aWVzIHVzZWQgYnkgdGhlIFJvY2tjaGlwIHNwZWNpZmljCitleHRlbnNpb25zIHRvIHRoZSBTeW5vcHN5cyBEZXNpZ253YXJlIE1vYmlsZSBTdG9yYWdlIEhvc3QgQ29udHJvbGxlci4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworKiBjb21wYXRpYmxlOiBzaG91bGQgYmUKKwktICJyb2NrY2hpcCxyazI5MjgtZHctbXNoYyI6IGZvciBSb2NrY2hpcCBSSzI5MjggYW5kIGZvbGxvd2luZywKKwkJCQkJCQliZWZvcmUgUkszMjg4CisJLSAicm9ja2NoaXAscmszMjg4LWR3LW1zaGMiOiBmb3IgUm9ja2NoaXAgUkszMjg4CisKK09wdGlvbmFsIFByb3BlcnRpZXM6CisqIGNsb2NrczogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzogaWYgY2l1X2RyaXZlIGFuZCBjaXVfc2FtcGxlIGFyZQorICBzcGVjaWZpZWQgaW4gY2xvY2stbmFtZXMsIHNob3VsZCBjb250YWluIGhhbmRsZXMgdG8gdGhlc2UgY2xvY2tzLgorCisqIGNsb2NrLW5hbWVzOiBBcGFydCBmcm9tIHRoZSBjbG9jay1uYW1lcyBkZXNjcmliZWQgaW4gc3lub3BzeXMtZHctbXNoYy50eHQKKyAgdHdvIG1vcmUgY2xvY2tzICJjaXUtZHJpdmUiIGFuZCAiY2l1LXNhbXBsZSIgYXJlIHN1cHBvcnRlZC4gVGhleSBhcmUgdXNlZAorICB0byBjb250cm9sIHRoZSBjbG9jayBwaGFzZXMsICJjaXUtc2FtcGxlIiBpcyByZXF1aXJlZCBmb3IgdHVuaW5nIGhpZ2gtCisgIHNwZWVkIG1vZGVzLgorCisqIHJvY2tjaGlwLGRlZmF1bHQtc2FtcGxlLXBoYXNlOiBUaGUgZGVmYXVsdCBwaGFzZSB0byBzZXQgY2l1X3NhbXBsZSBhdAorICBwcm9iaW5nLCBsb3cgc3BlZWRzIG9yIGluIGNhc2Ugd2hlcmUgYWxsIHBoYXNlcyB3b3JrIGF0IHR1bmluZyB0aW1lLgorICBJZiBub3Qgc3BlY2lmaWVkIDAgZGVnIHdpbGwgYmUgdXNlZC4KKworRXhhbXBsZToKKworCXJrZHdtbWMwQDEyMjAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJyb2NrY2hpcCxyazMyODgtZHctbXNoYyI7CisJCXJlZyA9IDwweDEyMjAwMDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MCA3NSAwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL3NhbXN1bmctc2RoY2kudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9zYW1zdW5nLXNkaGNpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MmUwYTlhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9zYW1zdW5nLXNkaGNpLnR4dApAQCAtMCwwICsxLDMyIEBACisqIFNhbXN1bmcncyBTREhDSSBDb250cm9sbGVyIGRldmljZSB0cmVlIGJpbmRpbmdzCisKK1NhbXN1bmcncyBTREhDSSBjb250cm9sbGVyIGlzIHVzZWQgYXMgYSBjb25uZWN0aXZpdHkgaW50ZXJmYWNlIHdpdGggZXh0ZXJuYWwKK01NQywgU0QgYW5kIGVNTUMgc3RvcmFnZSBtZWRpdW1zLiBUaGlzIGZpbGUgZG9jdW1lbnRzIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlCitjb3JlIG1tYyBwcm9wZXJ0aWVzIGRlc2NyaWJlZCBieSBtbWMudHh0IGFuZCB0aGUgcHJvcGVydGllcyB1c2VkIGJ5IHRoZQorU2Ftc3VuZyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU0RIQ0kgY29udHJvbGxlci4KKworUmVxdWlyZWQgU29DIFNwZWNpZmljIFByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZworICAtICJzYW1zdW5nLHMzYzY0MTAtc2RoY2kiOiBGb3IgY29udHJvbGxlcnMgY29tcGF0aWJsZSB3aXRoIHMzYzY0MTAgc2RoY2kKKyAgICBjb250cm9sbGVyLgorICAtICJzYW1zdW5nLGV4eW5vczQyMTAtc2RoY2kiOiBGb3IgY29udHJvbGxlcnMgY29tcGF0aWJsZSB3aXRoIEV4eW5vczQgc2RoY2kKKyAgICBjb250cm9sbGVyLgorCitSZXF1aXJlZCBCb2FyZCBTcGVjaWZpYyBQcm9wZXJ0aWVzOgorLSBwaW5jdHJsLTA6IFNob3VsZCBzcGVjaWZ5IHBpbiBjb250cm9sIGdyb3VwcyB1c2VkIGZvciB0aGlzIGNvbnRyb2xsZXIuCistIHBpbmN0cmwtbmFtZXM6IFNob3VsZCBjb250YWluIG9ubHkgb25lIHZhbHVlIC0gImRlZmF1bHQiLgorCitFeGFtcGxlOgorCXNkaGNpQDEyNTMwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczQyMTAtc2RoY2kiOworCQlyZWcgPSA8MHgxMjUzMDAwMCAweDEwMD47CisJCWludGVycnVwdHMgPSA8MCA3NSAwPjsKKwkJYnVzLXdpZHRoID0gPDQ+OworCQljZC1ncGlvcyA9IDwmZ3BrMiAyIDA+OworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JnNkMF9jbGsgJnNkMF9jbWQgJnNkMF9idXM0PjsKKwl9OworCisJTm90ZTogVGhpcyBleGFtcGxlIHNob3dzIGJvdGggU29DIHNwZWNpZmljIGFuZCBib2FyZCBzcGVjaWZpYyBwcm9wZXJ0aWVzCisJaW4gYSBzaW5nbGUgZGV2aWNlIG5vZGUuIFRoZSBwcm9wZXJ0aWVzIGNhbiBiZSBhY3R1YWxseSBiZSBzZXBhcmF0ZWQKKwlpbnRvIFNvQyBzcGVjaWZpYyBub2RlIGFuZCBib2FyZCBzcGVjaWZpYyBub2RlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9zZGhjaS1hdG1lbC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL3NkaGNpLWF0bWVsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjY2MmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9zZGhjaS1hdG1lbC50eHQKQEAgLTAsMCArMSwyMSBAQAorKiBBdG1lbCBTREhDSSBjb250cm9sbGVyCisKK1RoaXMgZmlsZSBkb2N1bWVudHMgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGNvcmUgcHJvcGVydGllcyBpbgorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMudHh0IGFuZCB0aGUgcHJvcGVydGllcyB1c2VkIGJ5IHRoZQorc2RoY2ktb2YtYXQ5MSBkcml2ZXIuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CQlNdXN0IGJlICJhdG1lbCxzYW1hNWQyLXNkaGNpIi4KKy0gY2xvY2tzOgkJUGhhbmRsZXJzIHRvIHRoZSBjbG9ja3MuCistIGNsb2NrLW5hbWVzOgkJTXVzdCBiZSAiaGNsb2NrIiwgIm11bHRjbGsiLCAiYmFzZWNsayI7CisKKworRXhhbXBsZToKKworc2RtbWMwOiBzZGlvLWhvc3RAYTAwMDAwMDAgeworCWNvbXBhdGlibGUgPSAiYXRtZWwsc2FtYTVkMi1zZGhjaSI7CisJcmVnID0gPDB4YTAwMDAwMDAgMHgzMDA+OworCWludGVycnVwdHMgPSA8MzEgSVJRX1RZUEVfTEVWRUxfSElHSCAwPjsKKwljbG9ja3MgPSA8JnNkbW1jMF9oY2xrPiwgPCZzZG1tYzBfZ2Nsaz4sIDwmbWFpbj47CisJY2xvY2stbmFtZXMgPSAiaGNsb2NrIiwgIm11bHRjbGsiLCAiYmFzZWNsayI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9zZGhjaS1kb3ZlLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvc2RoY2ktZG92ZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU5YWFiOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvc2RoY2ktZG92ZS50eHQKQEAgLTAsMCArMSwxNCBAQAorKiBNYXJ2ZWxsIHNkaGNpLWRvdmUgY29udHJvbGxlcgorCitUaGlzIGZpbGUgZG9jdW1lbnRzIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGNvcmUgcHJvcGVydGllcyBpbiBtbWMudHh0CithbmQgdGhlIHByb3BlcnRpZXMgdXNlZCBieSB0aGUgc2RoY2ktcHhhdjIgYW5kIHNkaGNpLXB4YXYzIGRyaXZlcnMuCisKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJtYXJ2ZWxsLGRvdmUtc2RoY2kiLgorCitFeGFtcGxlOgorCitzZGlvMDogc2Rpb0A5MjAwMCB7CisJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLGRvdmUtc2RoY2kiOworCXJlZyA9IDwweDkyMDAwIDB4MTAwPjsKKwlpbnRlcnJ1cHRzID0gPDM1PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL3NkaGNpLWZ1aml0c3UudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9zZGhjaS1mdWppdHN1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTJjNTNjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9zZGhjaS1mdWppdHN1LnR4dApAQCAtMCwwICsxLDMwIEBACisqIEZ1aml0c3UgU0RIQ0kgY29udHJvbGxlcgorCitUaGlzIGZpbGUgZG9jdW1lbnRzIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGNvcmUgcHJvcGVydGllcyBpbiBtbWMudHh0CithbmQgdGhlIHByb3BlcnRpZXMgdXNlZCBieSB0aGUgc2RoY2lfZl9zZGgzMCBkcml2ZXIuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJmdWppdHN1LG1iODZzNzAtc2RoY2ktMy4wIgorLSBjbG9ja3M6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4gSXQgaXMgYQorICBsaXN0IG9mIHBoYW5kbGVzIGFuZCBjbG9jay1zcGVjaWZpZXIgcGFpcnMuCisgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorLSBjbG9jay1uYW1lczogU2hvdWxkIGNvbnRhaW4gdGhlIGZvbGxvd2luZyB0d28gZW50cmllczoKKwkiaWZhY2UiIC0gY2xvY2sgdXNlZCBmb3Igc2RoY2kgaW50ZXJmYWNlCisJImNvcmUiICAtIGNvcmUgY2xvY2sgZm9yIHNkaGNpIGNvbnRyb2xsZXIKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdnFtbWMtc3VwcGx5OiBwaGFuZGxlIHRvIHRoZSByZWd1bGF0b3IgZGV2aWNlIHRyZWUgbm9kZSwgbWVudGlvbmVkCisgIGFzIHRoZSBWQ0NRL1ZERF9JTyBzdXBwbHkgaW4gdGhlIGVNTUMvU0Qgc3BlY3MuCisKK0V4YW1wbGU6CisKKwlzZGhjaTE6IG1tY0AzNjYwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnVqaXRzdSxtYjg2czcwLXNkaGNpLTMuMCI7CisJCXJlZyA9IDwwIDB4MzY2MDAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDE3MiAweDQ+LAorCQkJICAgICA8MCAxNzMgMHg0PjsKKwkJYnVzLXdpZHRoID0gPDQ+OworCQl2cW1tYy1zdXBwbHkgPSA8JnZjY3Ffc2RoY2kxPjsKKwkJY2xvY2tzID0gPCZjbG9jayAyIDIgMD4sIDwmY2xvY2sgMiAzIDA+OworCQljbG9jay1uYW1lcyA9ICJpZmFjZSIsICJjb3JlIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9zZGhjaS1tc20udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9zZGhjaS1tc20udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4NTQ4M2EKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL3NkaGNpLW1zbS50eHQKQEAgLTAsMCArMSw1NSBAQAorKiBRdWFsY29tbSBTREhDSSBjb250cm9sbGVyIChzZGhjaS1tc20pCisKK1RoaXMgZmlsZSBkb2N1bWVudHMgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgY29yZSBwcm9wZXJ0aWVzIGluIG1tYy50eHQKK2FuZCB0aGUgcHJvcGVydGllcyB1c2VkIGJ5IHRoZSBzZGhjaS1tc20gZHJpdmVyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgY29udGFpbiAicWNvbSxzZGhjaS1tc20tdjQiLgorLSByZWc6IEJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgorCS0gSG9zdCBjb250cm9sbGVyIHJlZ2lzdGVyIG1hcCAocmVxdWlyZWQpCisJLSBTRCBDb3JlIHJlZ2lzdGVyIG1hcCAocmVxdWlyZWQpCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIGFuIGludGVycnVwdC1zcGVjaWZpZXJzIGZvciB0aGUgaW50ZXJydXB0czoKKwktIEhvc3QgY29udHJvbGxlciBpbnRlcnJ1cHQgKHJlcXVpcmVkKQorLSBwaW5jdHJsLW5hbWVzOiBTaG91bGQgY29udGFpbiBvbmx5IG9uZSB2YWx1ZSAtICJkZWZhdWx0Ii4KKy0gcGluY3RybC0wOiBTaG91bGQgc3BlY2lmeSBwaW4gY29udHJvbCBncm91cHMgdXNlZCBmb3IgdGhpcyBjb250cm9sbGVyLgorLSBjbG9ja3M6IEEgbGlzdCBvZiBwaGFuZGxlICsgY2xvY2stc3BlY2lmaWVyIHBhaXJzIGZvciB0aGUgY2xvY2tzIGxpc3RlZCBpbiBjbG9jay1uYW1lcy4KKy0gY2xvY2stbmFtZXM6IFNob3VsZCBjb250YWluIHRoZSBmb2xsb3dpbmc6CisJImlmYWNlIiAtIE1haW4gcGVyaXBoZXJhbCBidXMgY2xvY2sgKFBDTEsvSENMSyAtIEFIQiBCdXMgY2xvY2spIChyZXF1aXJlZCkKKwkiY29yZSIJLSBTREMgTU1DIGNsb2NrIChNQ0xLKSAocmVxdWlyZWQpCisJImJ1cyIJLSBTRENDIGJ1cyB2b3RlciBjbG9jayAob3B0aW9uYWwpCisKK0V4YW1wbGU6CisKKwlzZGhjXzE6IHNkaGNpQGY5ODI0OTAwIHsKKwkJY29tcGF0aWJsZSA9ICJxY29tLHNkaGNpLW1zbS12NCI7CisJCXJlZyA9IDwweGY5ODI0OTAwIDB4MTFjPiwgPDB4Zjk4MjQwMDAgMHg4MDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMTIzIDA+OworCQlidXMtd2lkdGggPSA8OD47CisJCW5vbi1yZW1vdmFibGU7CisKKwkJdm1tYy1zdXBwbHkgPSA8JnBtODk0MV9sMjA+OworCQl2cW1tYy1zdXBwbHkgPSA8JnBtODk0MV9zMz47CisKKwkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwkJcGluY3RybC0wID0gPCZzZGMxX2NsayAmc2RjMV9jbWQgJnNkYzFfZGF0YT47CisKKwkJY2xvY2tzID0gPCZnY2MgR0NDX1NEQ0MxX0FQUFNfQ0xLPiwgPCZnY2MgR0NDX1NEQ0MxX0FIQl9DTEs+OworCQljbG9jay1uYW1lcyA9ICJjb3JlIiwgImlmYWNlIjsKKwl9OworCisJc2RoY18yOiBzZGhjaUBmOThhNDkwMCB7CisJCWNvbXBhdGlibGUgPSAicWNvbSxzZGhjaS1tc20tdjQiOworCQlyZWcgPSA8MHhmOThhNDkwMCAweDExYz4sIDwweGY5OGE0MDAwIDB4ODAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDEyNSAwPjsKKwkJYnVzLXdpZHRoID0gPDQ+OworCQljZC1ncGlvcyA9IDwmbXNtZ3BpbyA2MiAweDE+OworCisJCXZtbWMtc3VwcGx5ID0gPCZwbTg5NDFfbDIxPjsKKwkJdnFtbWMtc3VwcGx5ID0gPCZwbTg5NDFfbDEzPjsKKworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JnNkYzJfY2xrICZzZGMyX2NtZCAmc2RjMl9kYXRhPjsKKworCQljbG9ja3MgPSA8JmdjYyBHQ0NfU0RDQzJfQVBQU19DTEs+LCA8JmdjYyBHQ0NfU0RDQzJfQUhCX0NMSz47CisJCWNsb2NrLW5hbWVzID0gImNvcmUiLCAiaWZhY2UiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL3NkaGNpLXB4YS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL3NkaGNpLXB4YS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2QxYjQ0OQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvc2RoY2ktcHhhLnR4dApAQCAtMCwwICsxLDUwIEBACisqIE1hcnZlbGwgc2RoY2ktcHhhIHYyL3YzIGNvbnRyb2xsZXIKKworVGhpcyBmaWxlIGRvY3VtZW50cyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBjb3JlIHByb3BlcnRpZXMgaW4gbW1jLnR4dAorYW5kIHRoZSBwcm9wZXJ0aWVzIHVzZWQgYnkgdGhlIHNkaGNpLXB4YXYyIGFuZCBzZGhjaS1weGF2MyBkcml2ZXJzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgIm1ydmwscHhhdjItbW1jIiwgIm1ydmwscHhhdjMtbW1jIiBvcgorICAibWFydmVsbCxhcm1hZGEtMzgwLXNkaGNpIi4KKy0gcmVnOgorICAqIGZvciAibXJ2bCxweGF2Mi1tbWMiIGFuZCAibXJ2bCxweGF2My1tbWMiLCBvbmUgcmVnaXN0ZXIgYXJlYSBmb3IKKyAgICB0aGUgU0RIQ0kgcmVnaXN0ZXJzLgorCisgICogZm9yICJtYXJ2ZWxsLGFybWFkYS0zODAtc2RoY2kiLCB0aHJlZSByZWdpc3RlciBhcmVhcy4gVGhlIGZpcnN0CisgICAgb25lIGZvciB0aGUgU0RIQ0kgcmVnaXN0ZXJzIHRoZW1zZWx2ZXMsIHRoZSBzZWNvbmQgb25lIGZvciB0aGUKKyAgICBBWEkvTWJ1cyBicmlkZ2UgcmVnaXN0ZXJzIG9mIHRoZSBTREhDSSB1bml0LCB0aGUgdGhpcmQgb25lIGZvciB0aGUKKyAgICBTRElPMyBDb25maWd1cmF0aW9uIHJlZ2lzdGVyCistIHJlZyBuYW1lczogc2hvdWxkIGJlICJzZGhjaSIsICJtYnVzIiwgImNvbmYtc2RpbzMiLiBvbmx5IG1hbmRhdG9yeQorICBmb3IgIm1hcnZlbGwsYXJtYWRhLTM4MC1zZGhjaSIKKy0gY2xvY2tzOiBBcnJheSBvZiBjbG9ja3MgcmVxdWlyZWQgZm9yIFNESENJOyByZXF1aXJlcyBhdCBsZWFzdCBvbmUgZm9yCisgICAgSS9PIGNsb2NrLgorLSBjbG9jay1uYW1lczogQXJyYXkgb2YgbmFtZXMgY29ycmVzcG9uZGluZyB0byBjbG9ja3MgcHJvcGVydHk7IHNoYWxsIGJlCisgICAgImlvIiBmb3IgSS9PIGNsb2NrIGFuZCAiY29yZSIgZm9yIG9wdGlvbmFsIGNvcmUgY2xvY2suCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIG1ydmwsY2xrLWRlbGF5LWN5Y2xlczogU3BlY2lmeSBhIG51bWJlciBvZiBjeWNsZXMgdG8gZGVsYXkgZm9yIHR1bmluZy4KKworRXhhbXBsZToKKworc2RoY2lAZDQyODA4MDAgeworCWNvbXBhdGlibGUgPSAibXJ2bCxweGF2My1tbWMiOworCXJlZyA9IDwweGQ0MjgwODAwIDB4ODAwPjsKKwlidXMtd2lkdGggPSA8OD47CisJaW50ZXJydXB0cyA9IDwyNz47CisJY2xvY2tzID0gPCZjaGlwIENMS0lEX1NESU8xWElOPiwgPCZjaGlwIENMS0lEX1NESU8xPjsKKwljbG9jay1uYW1lcyA9ICJpbyIsICJjb3JlIjsKKwlub24tcmVtb3ZhYmxlOworCW1ydmwsY2xrLWRlbGF5LWN5Y2xlcyA9IDwzMT47Cit9OworCitzZGhjaUBkODAwMCB7CisJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLGFybWFkYS0zODAtc2RoY2kiOworCXJlZy1uYW1lcyA9ICJzZGhjaSIsICJtYnVzIiwgImNvbmYtc2RpbzMiOworCXJlZyA9IDwweGQ4MDAwIDB4MTAwMD4sCisJCTwweGRjMDAwIDB4MTAwPjsKKwkJPDB4MTg0NTQgMHg0PjsKKwlpbnRlcnJ1cHRzID0gPDAgMjUgMHg0PjsKKwljbG9ja3MgPSA8JmdhdGVjbGsgMTc+OworCWNsb2NrLW5hbWVzID0gImlvIjsKKwltcnZsLGNsay1kZWxheS1jeWNsZXMgPSA8MHgxRj47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9zZGhjaS1zaXJmLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvc2RoY2ktc2lyZi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ2ZWQ0NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvc2RoY2ktc2lyZi50eHQKQEAgLTAsMCArMSwxOCBAQAorKiBTaVJGcHJpbUlJL21hcmNvL2F0bGFzNiBTREhDSSBDb250cm9sbGVyCisKK1RoaXMgZmlsZSBkb2N1bWVudHMgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgY29yZSBwcm9wZXJ0aWVzIGluIG1tYy50eHQKK2FuZCB0aGUgcHJvcGVydGllcyB1c2VkIGJ5IHRoZSBzZGhjaS1zaXJmIGRyaXZlci4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2lyZixwcmltYTItc2RoYworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjZC1ncGlvczogY2FyZCBkZXRlY3QgZ3Bpbywgd2l0aCB6ZXJvIGZsYWdzLgorCitFeGFtcGxlOgorCisJc2QwOiBzZGhjaUA1NjAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2lyZixwcmltYTItc2RoYyI7CisJCXJlZyA9IDwweGNkMDAwMDAwIDB4MTAwMDAwPjsKKwkJY2QtZ3Bpb3MgPSA8JmdwaW8gNiAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9zZGhjaS1zcGVhci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL3NkaGNpLXNwZWFyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDM2NDNlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9zZGhjaS1zcGVhci50eHQKQEAgLTAsMCArMSwxOCBAQAorKiBTUEVBciBTREhDSSBDb250cm9sbGVyCisKK1RoaXMgZmlsZSBkb2N1bWVudHMgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgY29yZSBwcm9wZXJ0aWVzIGluIG1tYy50eHQKK2FuZCB0aGUgcHJvcGVydGllcyB1c2VkIGJ5IHRoZSBzZGhjaS1zcGVhciBkcml2ZXIuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJzdCxzcGVhcjMwMC1zZGhjaSIKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gY2QtZ3Bpb3M6IGNhcmQgZGV0ZWN0IGdwaW8sIHdpdGggemVybyBmbGFncy4KKworRXhhbXBsZToKKworCXNkaGNpQGZjMDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzdCxzcGVhcjMwMC1zZGhjaSI7CisJCXJlZyA9IDwweGZjMDAwMDAwIDB4MTAwMD47CisJCWNkLWdwaW9zID0gPCZncGlvMCA2IDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL3NkaGNpLXN0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvc2RoY2ktc3QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ZDk1MGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL3NkaGNpLXN0LnR4dApAQCAtMCwwICsxLDExMyBAQAorKiBTVE1pY3JvZWxlY3Ryb25pY3Mgc2RoY2ktc3QgTU1DL1NEIGNvbnRyb2xsZXIKKworVGhpcyBmaWxlIGRvY3VtZW50cyB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgY29yZSBwcm9wZXJ0aWVzIGluCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL21tYy50eHQgYW5kIHRoZSBwcm9wZXJ0aWVzCit1c2VkIGJ5IHRoZSBzZGhjaS1zdCBkcml2ZXIuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CQlNdXN0IGJlICJzdCxzZGhjaSIgYW5kIGl0IGNhbiBiZSBjb21wYXRpYmxlIHRvICJzdCxzZGhjaS1zdGloNDA3IgorCQkJdG8gc2V0IHRoZSBpbnRlcm5hbCBnbHVlIGxvZ2ljIHVzZWQgZm9yIGNvbmZpZ3VyaW5nIHRoZSBNTUMKKwkJCXN1YnN5c3RlbSAobW1jc3MpIGluc2lkZSB0aGUgRmxhc2hTUyAoYXZhaWxhYmxlIGluIFNUaUg0MDcgU29DCisJCQlmYW1pbHkpLgorCistIGNsb2NrLW5hbWVzOgkJU2hvdWxkIGJlICJtbWMiLgorCQkJU2VlOiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzb3VyY2UtbmFtZXMudHh0CistIGNsb2NrczoJCVBoYW5kbGUgdG8gdGhlIGNsb2NrLgorCQkJU2VlOiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CisKKy0gaW50ZXJydXB0czoJCU9uZSBtbWMgaW50ZXJydXB0IHNob3VsZCBiZSBkZXNjcmliZWQgaGVyZS4KKy0gaW50ZXJydXB0LW5hbWVzOglTaG91bGQgYmUgIm1tY2lycSIuCisKKy0gcGluY3RybC1uYW1lczoJQSBwaW5jdHJsIHN0YXRlIG5hbWVzICJkZWZhdWx0IiBtdXN0IGJlIGRlZmluZWQuCistIHBpbmN0cmwtMDoJCVBoYW5kbGUgcmVmZXJlbmNpbmcgcGluIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHNkL2VtbWMgY29udHJvbGxlci4KKwkJCVNlZTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcGluY3RybC1iaW5kaW5nLnR4dAorCistIHJlZzoJCQlUaGlzIG11c3QgcHJvdmlkZSB0aGUgaG9zdCBjb250cm9sbGVyIGJhc2UgYWRkcmVzcyBhbmQgaXQgY2FuIGFsc28KKwkJCWNvbnRhaW4gdGhlIEZsYXNoU1MgVG9wIHJlZ2lzdGVyIGZvciBUWC9SWCBkZWxheSB1c2VkIGJ5IHRoZSBkcml2ZXIKKwkJCXRvIGNvbmZpZ3VyZSBETEwgaW5zaWRlIHRoZSBmbGFzaFNTLCBpZiBzbyByZWctbmFtZXMgbXVzdCBhbHNvIGJlCisJCQlzcGVjaWZpZWQuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHJlZy1uYW1lczoJCVNob3VsZCBiZSAibW1jIiBhbmQgInRvcC1tbWMtZGVsYXkiLiAidG9wLW1tYy1kZWxheSIgaXMgb3B0aW9uYWwKKwkJCWZvciBlTU1DIG9uIHN0aWg0MDcgZmFtaWx5IHNpbGljb24gdG8gY29uZmlndXJlIERMTCBpbnNpZGUgRmxhc2hTUy4KKworLSBub24tcmVtb3ZhYmxlOglOb24tcmVtb3ZhYmxlIHNsb3QuIEFsc28gdXNlZCBmb3IgY29uZmlndXJpbmcgbW1jc3MgaW4gU1RpSDQwNyBTb0MKKwkJCWZhbWlseS4KKwkJCVNlZTogIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbW1jLnR4dC4KKworLSBidXMtd2lkdGg6CQlOdW1iZXIgb2YgZGF0YSBsaW5lcy4KKwkJCVNlZTogIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbW1jLnR4dC4KKworLSBtYXgtZnJlcXVlbmN5OiAJQ2FuIGJlIDIwME1IeiwgMTAwTXogb3IgNTBNSHogKGRlZmF1bHQpIGFuZCB1c2VkIGZvcgorCQkJY29uZmlndXJpbmcgdGhlIENDT05GSUczIGluIHRoZSBtbWNzcy4KKwkJCVNlZTogIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbW1jLnR4dC4KKworLSByZXNldHM6CQlQaGFuZGxlIGFuZCByZXNldCBzcGVjaWZpZXIgcGFpciB0byBzb2Z0cmVzZXQgbGluZSBvZiBIQyBJUC4KKwkJCVNlZTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Jlc2V0L3Jlc2V0LnR4dAorCistIHZxbW1jLXN1cHBseToJCVBoYW5kbGUgdG8gdGhlIHJlZ3VsYXRvciBkdCBub2RlLCBtZW50aW9uZWQgYXMgdGhlIHZjYy92ZGQKKwkJCXN1cHBseSBpbiBlTU1DL1NEIHNwZWNzLgorCistIHNkLXVocy0tc2RyNTA6CVRvIGVuYWJsZSB0aGUgU0RSNTAgaW4gdGhlIG1tY3NzLgorCQkJU2VlOiAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMudHh0LgorCistIHNkLXVocy1zZHIxMDQ6CVRvIGVuYWJsZSB0aGUgU0RSMTA0IGluIHRoZSBtbWNzcy4KKwkJCVNlZTogIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbW1jLnR4dC4KKworLSBzZC11aHMtZGRyNTA6CQlUbyBlbmFibGUgdGhlIEREUjUwIGluIHRoZSBtbWNzcy4KKwkJCVNlZTogIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvbW1jLnR4dC4KKworRXhhbXBsZToKKworLyogRXhhbXBsZSBzdGloNDE2ZSBlTU1DIGNvbmZpZ3VyYXRpb24gKi8KKworbW1jMDogc2RoY2lAZmU4MWUwMDAgeworCWNvbXBhdGlibGUJPSAic3Qsc2RoY2kiOworCXN0YXR1cwkJPSAiZGlzYWJsZWQiOworCXJlZwkJPSA8MHhmZTgxZTAwMCAweDEwMDA+OworCWludGVycnVwdHMJPSA8R0lDX1NQSSAxMjcgSVJRX1RZUEVfTk9ORT47CisJaW50ZXJydXB0LW5hbWVzCT0gIm1tY2lycSI7CisJcGluY3RybC1uYW1lcwk9ICJkZWZhdWx0IjsKKwlwaW5jdHJsLTAJPSA8JnBpbmN0cmxfbW1jMD47CisJY2xvY2stbmFtZXMJPSAibW1jIjsKKwljbG9ja3MJCT0gPCZjbGtfc19hMV9scyAxPjsKKwlidXMtd2lkdGgJPSA8OD4KKworLyogRXhhbXBsZSBTRCBzdGloNDA3IGZhbWlseSBjb25maWd1cmF0aW9uICovCisKK21tYzE6IHNkaGNpQDA5MDgwMDAwIHsKKwljb21wYXRpYmxlCT0gInN0LHNkaGNpLXN0aWg0MDciLCAic3Qsc2RoY2kiOworCXN0YXR1cwkJPSAiZGlzYWJsZWQiOworCXJlZwkJPSA8MHgwOTA4MDAwMCAweDdmZj47CisJcmVnLW5hbWVzCT0gIm1tYyI7CisJaW50ZXJydXB0cwk9IDxHSUNfU1BJIDkwIElSUV9UWVBFX05PTkU+OworCWludGVycnVwdC1uYW1lcwk9ICJtbWNpcnEiOworCXBpbmN0cmwtbmFtZXMJPSAiZGVmYXVsdCI7CisJcGluY3RybC0wCT0gPCZwaW5jdHJsX3NkMT47CisJY2xvY2stbmFtZXMJPSAibW1jIjsKKwljbG9ja3MJCT0gPCZjbGtfc19jMF9mbGV4Z2VuIENMS19NTUNfMT47CisJcmVzZXRzCQk9IDwmc29mdHJlc2V0IFNUSUg0MDdfTU1DMV9TT0ZUUkVTRVQ+OworCWJ1cy13aWR0aAk9IDw0PjsKK307CisKKy8qIEV4YW1wbGUgZU1NQyBzdGloNDA3IGZhbWlseSBjb25maWd1cmF0aW9uICovCisKK21tYzA6IHNkaGNpQDA5MDYwMDAwIHsKKwljb21wYXRpYmxlCT0gInN0LHNkaGNpLXN0aWg0MDciLCAic3Qsc2RoY2kiOworCXN0YXR1cwkJPSAiZGlzYWJsZWQiOworCXJlZwkJPSA8MHgwOTA2MDAwMCAweDdmZj4sIDwweDkwNjEwMDggMHgyMD47CisJcmVnLW5hbWVzCT0gIm1tYyIsICJ0b3AtbW1jLWRlbGF5IjsKKwlpbnRlcnJ1cHRzCT0gPEdJQ19TUEkgOTIgSVJRX1RZUEVfTk9ORT47CisJaW50ZXJydXB0LW5hbWVzCT0gIm1tY2lycSI7CisJcGluY3RybC1uYW1lcwk9ICJkZWZhdWx0IjsKKwlwaW5jdHJsLTAJPSA8JnBpbmN0cmxfbW1jMD47CisJY2xvY2stbmFtZXMJPSAibW1jIjsKKwljbG9ja3MJCT0gPCZjbGtfc19jMF9mbGV4Z2VuIENMS19NTUNfMD47CisJdnFtbWMtc3VwcGx5CT0gPCZ2bW1jX3JlZz47CisJbWF4LWZyZXF1ZW5jeQk9IDwyMDAwMDAwMDA+OworCWJ1cy13aWR0aAk9IDw4PjsKKwlub24tcmVtb3ZhYmxlOworCXNkLXVocy1zZHI1MDsKKwlzZC11aHMtc2RyMTA0OworCXNkLXVocy1kZHI1MDsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL3NvY2ZwZ2EtZHctbXNoYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL3NvY2ZwZ2EtZHctbXNoYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg5N2JlYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvc29jZnBnYS1kdy1tc2hjLnR4dApAQCAtMCwwICsxLDIzIEBACisqIEFsdGVyYSBTT0NGUEdBIHNwZWNpZmljIGV4dGVuc2lvbnMgdG8gdGhlIFN5bm9wc3lzIERlc2lnbndhcmUgTW9iaWxlCisgIFN0b3JhZ2UgSG9zdCBDb250cm9sbGVyCisKK1RoZSBTeW5vcHN5cyBkZXNpZ253YXJlIG1vYmlsZSBzdG9yYWdlIGhvc3QgY29udHJvbGxlciBpcyB1c2VkIHRvIGludGVyZmFjZQorYSBTb0Mgd2l0aCBzdG9yYWdlIG1lZGl1bSBzdWNoIGFzIGVNTUMgb3IgU0QvTU1DIGNhcmRzLiBUaGlzIGZpbGUgZG9jdW1lbnRzCitkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBjb3JlIFN5bm9wc3lzIGR3IG1zaGMgY29udHJvbGxlciBwcm9wZXJ0aWVzIGRlc2NyaWJlZAorYnkgc3lub3BzeXMtZHctbXNoYy50eHQgYW5kIHRoZSBwcm9wZXJ0aWVzIHVzZWQgYnkgdGhlIEFsdGVyYSBTT0NGUEdBIHNwZWNpZmljCitleHRlbnNpb25zIHRvIHRoZSBTeW5vcHN5cyBEZXNpZ253YXJlIE1vYmlsZSBTdG9yYWdlIEhvc3QgQ29udHJvbGxlci4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworKiBjb21wYXRpYmxlOiBzaG91bGQgYmUKKwktICJhbHRyLHNvY2ZwZ2EtZHctbXNoYyI6IGZvciBBbHRlcmEncyBTT0NGUEdBIHBsYXRmb3JtCisKK0V4YW1wbGU6CisKKwltbWM6IGR3bW1jMEBmZjcwNDAwMCB7CisJCWNvbXBhdGlibGUgPSAiYWx0cixzb2NmcGdhLWR3LW1zaGMiOworCQlyZWcgPSA8MHhmZjcwNDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMTI5IDQ+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvc3VueGktbW1jLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvc3VueGktbW1jLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmY0MWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9zdW54aS1tbWMudHh0CkBAIC0wLDAgKzEsNDMgQEAKKyogQWxsd2lubmVyIHN1bnhpIE1NQyBjb250cm9sbGVyCisKK1RoZSBoaWdoc3BlZWQgTU1DIGhvc3QgY29udHJvbGxlciBvbiBBbGx3aW5uZXIgU29DcyBwcm92aWRlcyBhbiBpbnRlcmZhY2UKK2ZvciBNTUMsIFNEIGFuZCBTRElPIHR5cGVzIG9mIG1lbW9yeSBjYXJkcy4KKworU3VwcG9ydGVkIG1heGltdW0gc3BlZWRzIGFyZSB0aGUgb25lcyBvZiB0aGUgZU1NQyBzdGFuZGFyZCA0LjUgYXMgd2VsbAorYXMgdGhlIHNwZWVkIG9mIFNEIHN0YW5kYXJkIDMuMC4KK0Fic29sdXRlIG1heGltdW0gdHJhbnNmZXIgcmF0ZSBpcyAyMDBNQi9zCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlIDogImFsbHdpbm5lcixzdW40aS1hMTAtbW1jIiBvciAiYWxsd2lubmVyLHN1bjVpLWExMy1tbWMiCisgLSByZWcgOiBtbWMgY29udHJvbGxlciBiYXNlIHJlZ2lzdGVycworIC0gY2xvY2tzIDogYSBsaXN0IHdpdGggNCBwaGFuZGxlICsgY2xvY2sgc3BlY2lmaWVyIHBhaXJzCisgLSBjbG9jay1uYW1lcyA6IG11c3QgY29udGFpbiAiYWhiIiwgIm1tYyIsICJvdXRwdXQiIGFuZCAic2FtcGxlIgorIC0gaW50ZXJydXB0cyA6IG1tYyBjb250cm9sbGVyIGludGVycnVwdAorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorIC0gcmVzZXRzIDogcGhhbmRsZSArIHJlc2V0IHNwZWNpZmllciBwYWlyCisgLSByZXNldC1uYW1lcyA6IG11c3QgY29udGFpbiAiYWhiIgorIC0gZm9yIGNkLCBidXMtd2lkdGggYW5kIGFkZGl0aW9uYWwgZ2VuZXJpYyBtbWMgcGFyYW1ldGVycworICAgcGxlYXNlIHJlZmVyIHRvIG1tYy50eHQgd2l0aGluIHRoaXMgZGlyZWN0b3J5CisKK0V4YW1wbGVzOgorCS0gV2l0aGluIC5kdHNpOgorCW1tYzA6IG1tY0AwMWMwZjAwMCB7CisJCWNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjVpLWExMy1tbWMiOworCQlyZWcgPSA8MHgwMWMwZjAwMCAweDEwMDA+OworCQljbG9ja3MgPSA8JmFoYl9nYXRlcyA4PiwgPCZtbWMwX2Nsaz4sIDwmbW1jMF9vdXRwdXRfY2xrPiwgPCZtbWMwX3NhbXBsZV9jbGs+OworCQljbG9jay1uYW1lcyA9ICJhaGIiLCAibW9kIiwgIm91dHB1dCIsICJzYW1wbGUiOworCQlpbnRlcnJ1cHRzID0gPDAgMzIgND47CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJfTsKKworCS0gV2l0aGluIGR0czoKKwltbWMwOiBtbWNAMDFjMGYwMDAgeworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiLCAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmbW1jMF9waW5zX2E+OworCQlwaW5jdHJsLTEgPSA8Jm1tYzBfY2RfcGluX3JlZmVyZW5jZV9kZXNpZ24+OworCQlidXMtd2lkdGggPSA8ND47CisJCWNkLWdwaW9zID0gPCZwaW8gNyAxIDA+OyAvKiBQSDEgKi8KKwkJY2QtaW52ZXJ0ZWQ7CisJCXN0YXR1cyA9ICJva2F5IjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9zeW5vcHN5cy1kdy1tc2hjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvc3lub3BzeXMtZHctbXNoYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYzNmY1YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvc3lub3BzeXMtZHctbXNoYy50eHQKQEAgLTAsMCArMSwxMzQgQEAKKyogU3lub3BzeXMgRGVzaWdud2FyZSBNb2JpbGUgU3RvcmFnZSBIb3N0IENvbnRyb2xsZXIKKworVGhlIFN5bm9wc3lzIGRlc2lnbndhcmUgbW9iaWxlIHN0b3JhZ2UgaG9zdCBjb250cm9sbGVyIGlzIHVzZWQgdG8gaW50ZXJmYWNlCithIFNvQyB3aXRoIHN0b3JhZ2UgbWVkaXVtIHN1Y2ggYXMgZU1NQyBvciBTRC9NTUMgY2FyZHMuIFRoaXMgZmlsZSBkb2N1bWVudHMKK2RpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGNvcmUgbW1jIHByb3BlcnRpZXMgZGVzY3JpYmVkIGJ5IG1tYy50eHQgYW5kIHRoZQorcHJvcGVydGllcyB1c2VkIGJ5IHRoZSBTeW5vcHN5cyBEZXNpZ253YXJlIE1vYmlsZSBTdG9yYWdlIEhvc3QgQ29udHJvbGxlci4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworKiBjb21wYXRpYmxlOiBzaG91bGQgYmUKKwktIHNucHMsZHctbXNoYzogZm9yIGNvbnRyb2xsZXJzIGNvbXBsaWFudCB3aXRoIHN5bm9wc3lzIGR3LW1zaGMuCisqICNhZGRyZXNzLWNlbGxzOiBzaG91bGQgYmUgMS4KKyogI3NpemUtY2VsbHM6IHNob3VsZCBiZSAwLgorCisjIFNsb3RzOiBUaGUgc2xvdCBzcGVjaWZpYyBpbmZvcm1hdGlvbiBhcmUgY29udGFpbmVkIHdpdGhpbiBjaGlsZC1ub2RlcyB3aXRoCisgIGVhY2ggY2hpbGQtbm9kZSByZXByZXNlbnRpbmcgYSBzdXBwb3J0ZWQgc2xvdC4gVGhlcmUgc2hvdWxkIGJlIGF0bGVhc3Qgb25lCisgIGNoaWxkIG5vZGUgcmVwcmVzZW50aW5nIGEgY2FyZCBzbG90LiBUaGUgbmFtZSBvZiB0aGUgY2hpbGQgbm9kZSByZXByZXNlbnRpbmcKKyAgdGhlIHNsb3QgaXMgcmVjb21tZW5kZWQgdG8gYmUgc2xvdEBuIHdoZXJlIG4gaXMgdGhlIHVuaXF1ZSBudW1iZXIgb2YgdGhlIHNsb3QKKyAgY29ubm5lY3RlZCB0byB0aGUgY29udHJvbGxlci4gVGhlIGZvbGxvd2luZyBhcmUgb3B0aW9uYWwgcHJvcGVydGllcyB3aGljaAorICBjYW4gYmUgaW5jbHVkZWQgaW4gdGhlIHNsb3QgY2hpbGQgbm9kZS4KKworCSogcmVnOiBzcGVjaWZpZXMgdGhlIHBoeXNpY2FsIHNsb3QgbnVtYmVyLiBUaGUgdmFsaWQgdmFsdWVzIG9mIHRoaXMKKwkgIHByb3BlcnR5IGlzIDAgdG8gKG51bS1zbG90cyAtMSksIHdoZXJlIG51bS1zbG90cyBpcyB0aGUgdmFsdWUKKwkgIHNwZWNpZmllZCBieSB0aGUgbnVtLXNsb3RzIHByb3BlcnR5LgorCisJKiBidXMtd2lkdGg6IGFzIGRvY3VtZW50ZWQgaW4gbW1jIGNvcmUgYmluZGluZ3MuCisKKwkqIHdwLWdwaW9zOiBzcGVjaWZpZXMgdGhlIHdyaXRlIHByb3RlY3QgZ3BpbyBsaW5lLiBUaGUgZm9ybWF0IG9mIHRoZQorCSAgZ3BpbyBzcGVjaWZpZXIgZGVwZW5kcyBvbiB0aGUgZ3BpbyBjb250cm9sbGVyLiBJZiBhIEdQSU8gaXMgbm90IHVzZWQKKwkgIGZvciB3cml0ZS1wcm90ZWN0LCB0aGlzIHByb3BlcnR5IGlzIG9wdGlvbmFsLgorCisJKiBkaXNhYmxlLXdwOiBJZiB0aGUgd3AtZ3Bpb3MgcHJvcGVydHkgaXNuJ3QgcHJlc2VudCB0aGVuIChieSBkZWZhdWx0KQorCSAgd2UnZCBhc3N1bWUgdGhhdCB0aGUgd3JpdGUgcHJvdGVjdCBpcyBob29rZWQgdXAgZGlyZWN0bHkgdG8gdGhlCisJICBjb250cm9sbGVyJ3Mgc3BlY2lhbCBwdXJwb3NlIHdyaXRlIHByb3RlY3QgbGluZSAoYWNjZXNzaWJsZSB2aWEKKwkgIHRoZSBXUlRQUlQgcmVnaXN0ZXIpLiAgSG93ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IHdlIHNpbXBseSBkb24ndAorCSAgd2FudCB3cml0ZSBwcm90ZWN0LiAgSW4gdGhhdCBjYXNlIHNwZWNpZnkgJ2Rpc2FibGUtd3AnLgorCSAgTk9URTogVGhpcyBwcm9wZXJ0eSBpcyBub3QgcmVxdWlyZWQgZm9yIHNsb3RzIGtub3duIHRvIGFsd2F5cworCSAgY29ubmVjdCB0byBlTU1DIG9yIFNESU8gY2FyZHMuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKyogY2xvY2tzOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOiBoYW5kbGUgdG8gYml1IGFuZCBjaXUgY2xvY2tzIGZvciB0aGUKKyAgYnVzIGludGVyZmFjZSB1bml0IGNsb2NrIGFuZCB0aGUgY2FyZCBpbnRlcmZhY2UgdW5pdCBjbG9jay4KKworKiBjbG9jay1uYW1lczogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzogU2hhbGwgYmUgImJpdSIgYW5kICJjaXUiLgorICBJZiB0aGUgYml1IGNsb2NrIGlzIG1pc3Npbmcgd2UnbGwgc2ltcGx5IHNraXAgZW5hYmxpbmcgaXQuICBJZiB0aGUKKyAgY2l1IGNsb2NrIGlzIG1pc3Npbmcgd2UnbGwganVzdCBhc3N1bWUgdGhhdCB0aGUgY2xvY2sgaXMgcnVubmluZyBhdAorICBjbG9jay1mcmVxdWVuY3kuICBJdCBpcyBhbiBlcnJvciB0byBvbWl0IGJvdGggdGhlIGNpdSBjbG9jayBhbmQgdGhlCisgIGNsb2NrLWZyZXF1ZW5jeS4KKworKiBjbG9jay1mcmVxdWVuY3k6IHNob3VsZCBiZSB0aGUgZnJlcXVlbmN5IChpbiBIeikgb2YgdGhlIGNpdSBjbG9jay4gIElmIHRoaXMKKyAgaXMgc3BlY2lmaWVkIGFuZCB0aGUgY2l1IGNsb2NrIGlzIHNwZWNpZmllZCB0aGVuIHdlJ2xsIHRyeSB0byBzZXQgdGhlIGNpdQorICBjbG9jayB0byB0aGlzIGF0IHByb2JlIHRpbWUuCisKKyogY2xvY2stZnJlcS1taW4tbWF4OiBNaW5pbXVtIGFuZCBNYXhpbXVtIGNsb2NrIGZyZXF1ZW5jeSBmb3IgY2FyZCBvdXRwdXQKKyAgY2xvY2soY2Nsa19vdXQpLiBJZiBpdCdzIG5vdCBzcGVjaWZpZWQsIG1heCBpcyAyMDBNSFogYW5kIG1pbiBpcyA0MDBLSHogYnkgZGVmYXVsdC4KKworKiBudW0tc2xvdHM6IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHNsb3RzIHN1cHBvcnRlZCBieSB0aGUgY29udHJvbGxlci4KKyAgVGhlIG51bWJlciBvZiBwaHlzaWNhbCBzbG90cyBhY3R1YWxseSB1c2VkIGNvdWxkIGJlIGVxdWFsIG9yIGxlc3MgdGhhbiB0aGUKKyAgdmFsdWUgc3BlY2lmaWVkIGJ5IG51bS1zbG90cy4gSWYgdGhpcyBwcm9wZXJ0eSBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgdmFsdWUKKyAgb2YgbnVtLXNsb3QgcHJvcGVydHkgaXMgYXNzdW1lZCB0byBiZSAxLgorCisqIGZpZm8tZGVwdGg6IFRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIHR4L3J4IGZpZm8ncy4gSWYgdGhpcyBwcm9wZXJ0eSBpcyBub3QKKyAgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgZmlmbyBzaXplIGlzIGRldGVybWluZWQgZnJvbSB0aGUKKyAgY29udHJvbGxlciByZWdpc3RlcnMuCisKKyogY2FyZC1kZXRlY3QtZGVsYXk6IERlbGF5IGluIG1pbGxpLXNlY29uZHMgYmVmb3JlIGRldGVjdGluZyBjYXJkIGFmdGVyIGNhcmQKKyAgaW5zZXJ0IGV2ZW50LiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAwLgorCisqIHN1cHBvcnRzLWhpZ2hzcGVlZCAoREVQUkVDQVRFRCk6IEVuYWJsZXMgc3VwcG9ydCBmb3IgaGlnaCBzcGVlZCBjYXJkcyAodXAgdG8gNTBNSHopCisJCQkgICAodXNlICJjYXAtbW1jLWhpZ2hzcGVlZCIgb3IgImNhcC1zZC1oaWdoc3BlZWQiIGluc3RlYWQpCisKKyogYnJva2VuLWNkOiBhcyBkb2N1bWVudGVkIGluIG1tYyBjb3JlIGJpbmRpbmdzLgorCisqIHZtbWMtc3VwcGx5OiBUaGUgcGhhbmRsZSB0byB0aGUgcmVndWxhdG9yIHRvIHVzZSBmb3Igdm1tYy4gIElmIHRoaXMgaXMKKyAgc3BlY2lmaWVkIHdlJ2xsIGRlZmVyIHByb2JlIHVudGlsIHdlIGNhbiBmaW5kIHRoaXMgcmVndWxhdG9yLgorCisqIGRtYXM6IExpc3Qgb2YgRE1BIHNwZWNpZmllcnMgd2l0aCB0aGUgY29udHJvbGxlciBzcGVjaWZpYyBmb3JtYXQgYXMgZGVzY3JpYmVkCisgIGluIHRoZSBnZW5lcmljIERNQSBjbGllbnQgYmluZGluZy4gUmVmZXIgdG8gZG1hLnR4dCBmb3IgZGV0YWlscy4KKworKiBkbWEtbmFtZXM6IHJlcXVlc3QgbmFtZXMgZm9yIGdlbmVyaWMgRE1BIGNsaWVudCBiaW5kaW5nLiBNdXN0IGJlICJyeC10eCIuCisgIFJlZmVyIHRvIGRtYS50eHQgZm9yIGRldGFpbHMuCisKK0FsaWFzZXM6CisKKy0gQWxsIHRoZSBNU0hDIGNvbnRyb2xsZXIgbm9kZXMgc2hvdWxkIGJlIHJlcHJlc2VudGVkIGluIHRoZSBhbGlhc2VzIG5vZGUgdXNpbmcKKyAgdGhlIGZvbGxvd2luZyBmb3JtYXQgJ21zaGN7bn0nIHdoZXJlIG4gaXMgYSB1bmlxdWUgbnVtYmVyIGZvciB0aGUgYWxpYXMuCisKK0V4YW1wbGU6CisKK1RoZSBNU0hDIGNvbnRyb2xsZXIgbm9kZSBjYW4gYmUgc3BsaXQgaW50byB0d28gcG9ydGlvbnMsIFNvQyBzcGVjaWZpYyBhbmQKK2JvYXJkIHNwZWNpZmljIHBvcnRpb25zIGFzIGxpc3RlZCBiZWxvdy4KKworCWR3bW1jMEAxMjIwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic25wcyxkdy1tc2hjIjsKKwkJY2xvY2tzID0gPCZjbG9jayAzNTE+LCA8JmNsb2NrIDEzMj47CisJCWNsb2NrLW5hbWVzID0gImJpdSIsICJjaXUiOworCQlyZWcgPSA8MHgxMjIwMDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgNzUgMD47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwl9OworCitbYm9hcmQgc3BlY2lmaWMgaW50ZXJuYWwgRE1BIHJlc291cmNlc10KKworCWR3bW1jMEAxMjIwMDAwMCB7CisJCWNsb2NrLWZyZXF1ZW5jeSA9IDw0MDAwMDAwMDA+OworCQljbG9jay1mcmVxLW1pbi1tYXggPSA8NDAwMDAwIDIwMDAwMDAwMD47CisJCW51bS1zbG90cyA9IDwxPjsKKwkJYnJva2VuLWNkOworCQlmaWZvLWRlcHRoID0gPDB4ODA+OworCQljYXJkLWRldGVjdC1kZWxheSA9IDwyMDA+OworCQl2bW1jLXN1cHBseSA9IDwmYnVjazg+OworCQlidXMtd2lkdGggPSA8OD47CisJCWNhcC1tbWMtaGlnaHNwZWVkOworCQljYXAtc2QtaGlnaHNwZWVkOworCX07CisKK1tib2FyZCBzcGVjaWZpYyBnZW5lcmljIERNQSByZXF1ZXN0IGJpbmRpbmddCisKKwlkd21tYzBAMTIyMDAwMDAgeworCQljbG9jay1mcmVxdWVuY3kgPSA8NDAwMDAwMDAwPjsKKwkJY2xvY2stZnJlcS1taW4tbWF4ID0gPDQwMDAwMCAyMDAwMDAwMDA+OworCQludW0tc2xvdHMgPSA8MT47CisJCWJyb2tlbi1jZDsKKwkJZmlmby1kZXB0aCA9IDwweDgwPjsKKwkJY2FyZC1kZXRlY3QtZGVsYXkgPSA8MjAwPjsKKwkJdm1tYy1zdXBwbHkgPSA8JmJ1Y2s4PjsKKwkJYnVzLXdpZHRoID0gPDg+OworCQljYXAtbW1jLWhpZ2hzcGVlZDsKKwkJY2FwLXNkLWhpZ2hzcGVlZDsKKwkJZG1hcyA9IDwmcGRtYSAxMj47CisJCWRtYS1uYW1lcyA9ICJyeC10eCI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvdGktb21hcC1oc21tYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL3RpLW9tYXAtaHNtbWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0MTY2YTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL3RpLW9tYXAtaHNtbWMudHh0CkBAIC0wLDAgKzEsMTEyIEBACisqIFRJIEhpZ2hzcGVlZCBNTUMgaG9zdCBjb250cm9sbGVyIGZvciBPTUFQCisKK1RoZSBIaWdoc3BlZWQgTU1DIEhvc3QgQ29udHJvbGxlciBvbiBUSSBPTUFQIGZhbWlseQorcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGZvciBNTUMsIFNELCBhbmQgU0RJTyB0eXBlcyBvZiBtZW1vcnkgY2FyZHMuCisKK1RoaXMgZmlsZSBkb2N1bWVudHMgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgY29yZSBwcm9wZXJ0aWVzIGRlc2NyaWJlZAorYnkgbW1jLnR4dCBhbmQgdGhlIHByb3BlcnRpZXMgdXNlZCBieSB0aGUgb21hcF9oc21tYyBkcml2ZXIuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CisgU2hvdWxkIGJlICJ0aSxvbWFwMi1oc21tYyIsIGZvciBPTUFQMiBjb250cm9sbGVycworIFNob3VsZCBiZSAidGksb21hcDMtaHNtbWMiLCBmb3IgT01BUDMgY29udHJvbGxlcnMKKyBTaG91bGQgYmUgInRpLG9tYXAzLXByZS1lczMtaHNtbWMiIGZvciBPTUFQMyBjb250cm9sbGVycyBwcmUgRVMzLjAKKyBTaG91bGQgYmUgInRpLG9tYXA0LWhzbW1jIiwgZm9yIE9NQVA0IGNvbnRyb2xsZXJzCisgU2hvdWxkIGJlICJ0aSxhbTMzeHgtaHNtbWMiLCBmb3IgQU0zMzV4IGNvbnRyb2xsZXJzCistIHRpLGh3bW9kczogTXVzdCBiZSAibW1jPG4+IiwgbiBpcyBjb250cm9sbGVyIGluc3RhbmNlIHN0YXJ0aW5nIDEKKworT3B0aW9uYWwgcHJvcGVydGllczoKK3RpLGR1YWwtdm9sdDogYm9vbGVhbiwgc3VwcG9ydHMgZHVhbCB2b2x0YWdlIGNhcmRzCis8c3VwcGx5LW5hbWU+LXN1cHBseTogcGhhbmRsZSB0byB0aGUgcmVndWxhdG9yIGRldmljZSB0cmVlIG5vZGUKKyJzdXBwbHktbmFtZSIgZXhhbXBsZXMgYXJlICJ2bW1jIiwgInZtbWNfYXV4IiBldGMKK3RpLG5vbi1yZW1vdmFibGU6IG5vbi1yZW1vdmFibGUgc2xvdCAobGlrZSBlTU1DKQordGksbmVlZHMtc3BlY2lhbC1yZXNldDogUmVxdWlyZXMgYSBzcGVjaWFsIHNvZnRyZXNldCBzZXF1ZW5jZQordGksbmVlZHMtc3BlY2lhbC1ocy1oYW5kbGluZzogSFNNTUMgSVAgbmVlZHMgc3BlY2lhbCBzZXR0aW5nIGZvciBoYW5kbGluZyBIaWdoIFNwZWVkCitkbWFzOiBMaXN0IG9mIERNQSBzcGVjaWZpZXJzIHdpdGggdGhlIGNvbnRyb2xsZXIgc3BlY2lmaWMgZm9ybWF0CithcyBkZXNjcmliZWQgaW4gdGhlIGdlbmVyaWMgRE1BIGNsaWVudCBiaW5kaW5nLiBBIHR4IGFuZCByeAorc3BlY2lmaWVyIGlzIHJlcXVpcmVkLgorZG1hLW5hbWVzOiBMaXN0IG9mIERNQSByZXF1ZXN0IG5hbWVzLiBUaGVzZSBzdHJpbmdzIGNvcnJlc3BvbmQKKzE6MSB3aXRoIHRoZSBETUEgc3BlY2lmaWVycyBsaXN0ZWQgaW4gZG1hcy4gVGhlIHN0cmluZyBuYW1pbmcgaXMKK3RvIGJlICJyeCIgYW5kICJ0eCIgZm9yIFJYIGFuZCBUWCBETUEgcmVxdWVzdHMsIHJlc3BlY3RpdmVseS4KKworRXhhbXBsZXM6CisKK1tod21vZCBwb3B1bGF0ZWQgRE1BIHJlc291cmNlc10KKworCW1tYzE6IG1tY0AweDQ4MDljMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSxvbWFwNC1oc21tYyI7CisJCXJlZyA9IDwweDQ4MDljMDAwIDB4NDAwPjsKKwkJdGksaHdtb2RzID0gIm1tYzEiOworCQl0aSxkdWFsLXZvbHQ7CisJCWJ1cy13aWR0aCA9IDw0PjsKKwkJdm1tYy1zdXBwbHkgPSA8JnZtbWM+OyAvKiBwaGFuZGxlIHRvIHJlZ3VsYXRvciBub2RlICovCisJCXRpLG5vbi1yZW1vdmFibGU7CisJfTsKKworW2dlbmVyaWMgRE1BIHJlcXVlc3QgYmluZGluZ10KKworCW1tYzE6IG1tY0AweDQ4MDljMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSxvbWFwNC1oc21tYyI7CisJCXJlZyA9IDwweDQ4MDljMDAwIDB4NDAwPjsKKwkJdGksaHdtb2RzID0gIm1tYzEiOworCQl0aSxkdWFsLXZvbHQ7CisJCWJ1cy13aWR0aCA9IDw0PjsKKwkJdm1tYy1zdXBwbHkgPSA8JnZtbWM+OyAvKiBwaGFuZGxlIHRvIHJlZ3VsYXRvciBub2RlICovCisJCXRpLG5vbi1yZW1vdmFibGU7CisJCWRtYXMgPSA8JmVkbWEgMjQKKwkJCSZlZG1hIDI1PjsKKwkJZG1hLW5hbWVzID0gInR4IiwgInJ4IjsKKwl9OworCitbd29ya2Fyb3VuZCBmb3IgbWlzc2luZyBzd2FrZXVwIG9uIGFtMzN4eF0KKworVGhpcyBTT0MgaXMgbWlzc2luZyB0aGUgc3dha2V1cCBsaW5lLCBpdCB3aWxsIG5vdCBkZXRlY3QgU0RJTyBpcnEKK3doaWxlIGluIHN1c3BlbmQuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUFJDTSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIHwKKyAgICAgICAgICAgICAgICAgICAgICAgc3dha2V1cCB8IHwgZmNsaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdgorICAgICAgIC0tLS0tLSAgICAgICAgICAgICAgICAtLS0tLS0tICAgICAgICAgICAgICAgLS0tLS0KKyAgICAgIHwgY2FyZCB8IC0tIENJUlEgLS0+ICB8IGhzbW1jIHwgLS0gSVJRIC0tPiAgfCBDUFUgfAorICAgICAgIC0tLS0tLSAgICAgICAgICAgICAgICAtLS0tLS0tICAgICAgICAgICAgICAgLS0tLS0KKworSW4gc3VzcGVuZCB0aGUgZmNsayBpcyBvZmYgYW5kIHRoZSBtb2R1bGUgaXMgZGlzZnVuY3Rpb25hbC4gRXZlbiByZWdpc3RlciByZWFkcword2lsbCBmYWlsLiBBIHNtYWxsIGxvZ2ljIGluIHRoZSBob3N0IHdpbGwgcmVxdWVzdCBmY2xrIHJlc3RvcmUsIHdoZW4gYW4KK2V4dGVybmFsIGV2ZW50IGlzIGRldGVjdGVkLiBPbmNlIHRoZSBjbG9jayBpcyByZXN0b3JlZCwgdGhlIGhvc3QgZGV0ZWN0cyB0aGUKK2V2ZW50IG5vcm1hbGx5LiBTaW5jZSBhbTMzeHggZG9lc24ndCBoYXZlIHRoaXMgbGluZSBpdCBuZXZlciB3YWtlcyBmcm9tCitzdXNwZW5kLgorCitUaGUgd29ya2Fyb3VuZCBpcyB0byByZWNvbmZpZ3VyZSB0aGUgZGF0MSBsaW5lIGFzIGEgR1BJTyB1cG9uIHN1c3BlbmQuIFRvIG1ha2UKK3RoaXMgd29yaywgd2UgbmVlZCB0byBzZXQgdGhlIG5hbWVkIHBpbmN0cmwgc3RhdGVzICJkZWZhdWx0IiBhbmQgImlkbGUiLgorUHJlcGFyZSBpZGxlIHRvIHJlbXV4IGRhdDEgYXMgYSBncGlvLCBhbmQgZGVmYXVsdCB0byByZW11eCBpdCBiYWNrIGFzIHNkaW8KK2RhdDEuIFRoZSBNTUMgZHJpdmVyIHdpbGwgdGhlbiB0b2dnbGUgYmV0d2VlbiBpZGxlIGFuZCBkZWZhdWx0IHN0YXRlIGR1cmluZworcnVudGltZS4KKworSW4gc3VtbWFyeToKKzEuIHNlbGVjdCBtYXRjaGluZyAnY29tcGF0aWJsZScgc2VjdGlvbiwgc2VlIGV4YW1wbGUgYmVsb3cuCisyLiBzcGVjaWZ5IHBpbmN0cmwgc3RhdGVzICJkZWZhdWx0IiBhbmQgImlkbGUiLCAic2xlZXAiIGlzIG9wdGlvbmFsLgorMy4gc3BlY2lmeSB0aGUgZ3BpbyBpcnEgdXNlZCBmb3IgZGV0ZWN0aW5nIHNkaW8gaXJxIGluIHN1c3BlbmQKKworSWYgY29uZmlndXJhdGlvbiBpcyBpbmNvbXBsZXRlLCBhIHdhcm5pbmcgbWVzc2FnZSBpcyBlbWl0dGVkICJmYWxsaW5nIGJhY2sgdG8KK3BvbGxpbmciLiBBbHNvIGNoZWNrIHRoZSAic2RpbyBpcnEgbW9kZSIgaW4gL3N5cy9rZXJuZWwvZGVidWcvbW1jMC9yZWdzLiBNaW5kCitub3QgZXZlcnkgYXBwbGljYXRpb24gbmVlZHMgU0RJTyBpcnEsIGUuZy4gTU1DIGNhcmRzLgorCisJbW1jMTogbW1jQDQ4MDYwMTAwIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSxhbTMzeHgtaHNtbWMiOworCQkuLi4KKwkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IiwgImlkbGUiLCAic2xlZXAiCisJCXBpbmN0cmwtMCA9IDwmbW1jMV9waW5zPjsKKwkJcGluY3RybC0xID0gPCZtbWMxX2lkbGU+OworCQlwaW5jdHJsLTIgPSA8Jm1tYzFfc2xlZXA+OworCQkuLi4KKwkJaW50ZXJydXB0cy1leHRlbmRlZCA9IDwmaW50YyA2NCAmZ3BpbzIgMjggR1BJT19BQ1RJVkVfTE9XPjsKKwl9OworCisJbW1jMV9pZGxlIDogcGlubXV4X2NpcnFfcGluIHsKKwkJcGluY3RybC1zaW5nbGUscGlucyA9IDwKKwkJICAgICAgICAweDBmOCAweDNmICAgICAgLyogR1BJTzJfMjggKi8KKwkJPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy90aS1vbWFwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvdGktb21hcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRlNTc5OQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvdGktb21hcC50eHQKQEAgLTAsMCArMSw1NCBAQAorKiBUSSBNTUMgaG9zdCBjb250cm9sbGVyIGZvciBPTUFQMSBhbmQgMjQyMAorCitUaGUgTU1DIEhvc3QgQ29udHJvbGxlciBvbiBUSSBPTUFQMSBhbmQgMjQyMCBmYW1pbHkgcHJvdmlkZXMKK2FuIGludGVyZmFjZSBmb3IgTU1DLCBTRCwgYW5kIFNESU8gdHlwZXMgb2YgbWVtb3J5IGNhcmRzLgorCitUaGlzIGZpbGUgZG9jdW1lbnRzIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGNvcmUgcHJvcGVydGllcyBkZXNjcmliZWQKK2J5IG1tYy50eHQgYW5kIHRoZSBwcm9wZXJ0aWVzIHVzZWQgYnkgdGhlIG9tYXAgbW1jIGRyaXZlci4KKworTm90ZSB0aGF0IHRoaXMgZHJpdmVyIHdpbGwgbm90IHdvcmsgd2l0aCBvbWFwMjQzMCBvciBsYXRlciBvbWFwcywKK3BsZWFzZSBzZWUgdGhlIG9tYXAgaHNtbWMgZHJpdmVyIGZvciB0aGUgY3VycmVudCBvbWFwcy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogTXVzdCBiZSAidGksb21hcDI0MjAtbW1jIiwgZm9yIE9NQVAyNDIwIGNvbnRyb2xsZXJzCistIHRpLGh3bW9kczogRm9yIDI0MjAsIG11c3QgYmUgIm1zZGk8bj4iLCB3aGVyZSBuIGlzIGNvbnRyb2xsZXIKKyAgaW5zdGFuY2Ugc3RhcnRpbmcgMQorCitFeGFtcGxlczoKKworCW1zZGkxOiBtbWNANDgwOWMwMDAgeworCQljb21wYXRpYmxlID0gInRpLG9tYXAyNDIwLW1tYyI7CisJCXRpLGh3bW9kcyA9ICJtc2RpMSI7CisJCXJlZyA9IDwweDQ4MDljMDAwIDB4ODA+OworCQlpbnRlcnJ1cHRzID0gPDgzPjsKKwkJZG1hcyA9IDwmc2RtYSA2MSAmc2RtYSA2Mj47CisJCWRtYS1uYW1lcyA9ICJ0eCIsICJyeCI7CisJfTsKKworKiBUSSBNTUMgaG9zdCBjb250cm9sbGVyIGZvciBPTUFQMSBhbmQgMjQyMAorCitUaGUgTU1DIEhvc3QgQ29udHJvbGxlciBvbiBUSSBPTUFQMSBhbmQgMjQyMCBmYW1pbHkgcHJvdmlkZXMKK2FuIGludGVyZmFjZSBmb3IgTU1DLCBTRCwgYW5kIFNESU8gdHlwZXMgb2YgbWVtb3J5IGNhcmRzLgorCitUaGlzIGZpbGUgZG9jdW1lbnRzIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGNvcmUgcHJvcGVydGllcyBkZXNjcmliZWQKK2J5IG1tYy50eHQgYW5kIHRoZSBwcm9wZXJ0aWVzIHVzZWQgYnkgdGhlIG9tYXAgbW1jIGRyaXZlci4KKworTm90ZSB0aGF0IHRoaXMgZHJpdmVyIHdpbGwgbm90IHdvcmsgd2l0aCBvbWFwMjQzMCBvciBsYXRlciBvbWFwcywKK3BsZWFzZSBzZWUgdGhlIG9tYXAgaHNtbWMgZHJpdmVyIGZvciB0aGUgY3VycmVudCBvbWFwcy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogTXVzdCBiZSAidGksb21hcDI0MjAtbW1jIiwgZm9yIE9NQVAyNDIwIGNvbnRyb2xsZXJzCistIHRpLGh3bW9kczogRm9yIDI0MjAsIG11c3QgYmUgIm1zZGk8bj4iLCB3aGVyZSBuIGlzIGNvbnRyb2xsZXIKKyAgaW5zdGFuY2Ugc3RhcnRpbmcgMQorCitFeGFtcGxlczoKKworCW1zZGkxOiBtbWNANDgwOWMwMDAgeworCQljb21wYXRpYmxlID0gInRpLG9tYXAyNDIwLW1tYyI7CisJCXRpLGh3bW9kcyA9ICJtc2RpMSI7CisJCXJlZyA9IDwweDQ4MDljMDAwIDB4ODA+OworCQlpbnRlcnJ1cHRzID0gPDgzPjsKKwkJZG1hcyA9IDwmc2RtYSA2MSAmc2RtYSA2Mj47CisJCWRtYS1uYW1lcyA9ICJ0eCIsICJyeCI7CisJfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy90bWlvX21tYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL3RtaW9fbW1jLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDBiNjQwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy90bWlvX21tYy50eHQKQEAgLTAsMCArMSwyNyBAQAorKiBUb3NoaWJhIE1vYmlsZSBJTyBTRC9NTUMgY29udHJvbGxlcgorCitUaGUgdG1pby1tbWMgZHJpdmVyIGRvZXNuJ3QgcHJvYmUgaXRzIGRldmljZXMgYWN0aXZlbHksIGluc3RlYWQgaXRzIGJpbmRpbmcgdG8KK2RldmljZXMgaXMgbWFuYWdlZCBieSBlaXRoZXIgTUZEIGRyaXZlcnMgb3IgYnkgdGhlIHNoX21vYmlsZV9zZGhpIHBsYXRmb3JtCitkcml2ZXIuIFRob3NlIGRyaXZlcnMgc3VwcGx5IHRoZSB0bWlvLW1tYyBkcml2ZXIgd2l0aCBwbGF0Zm9ybSBkYXRhLCB0aGF0IGVpdGhlcgorZGVzY3JpYmUgaGFyZHdhcmUgY2FwYWJpbGl0aWVzLCBrbm93biB0byB0aGVtLCBvciBhcmUgb2J0YWluZWQgYnkgdGhlbSBmcm9tCit0aGVpciBvd24gcGxhdGZvcm0gZGF0YSBvciBmcm9tIHRoZWlyIERUIGluZm9ybWF0aW9uLiBJbiB0aGUgbGF0dGVyIGNhc2UgYWxsCitjb21wdWxzb3J5IGFuZCBhbnkgb3B0aW9uYWwgcHJvcGVydGllcywgY29tbW9uIHRvIGFsbCBTRC9NTUMgZHJpdmVycywgYXMKK2Rlc2NyaWJlZCBpbiBtbWMudHh0LCBjYW4gYmUgdXNlZC4gQWRkaXRpb25hbGx5IHRoZSBmb2xsb3dpbmcgdG1pb19tbWMtc3BlY2lmaWMKK29wdGlvbmFsIGJpbmRpbmdzIGNhbiBiZSB1c2VkLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOgkicmVuZXNhcyxzZGhpLXNobW9iaWxlIiAtIGEgZ2VuZXJpYyBzaC1tb2JpbGUgU0RISSB1bml0CisJCSJyZW5lc2FzLHNkaGktc2g3MzcyIiAtIFNESEkgSVAgb24gU0g3MzcyIFNvQworCQkicmVuZXNhcyxzZGhpLXNoNzNhMCIgLSBTREhJIElQIG9uIFNINzNBMCBTb0MKKwkJInJlbmVzYXMsc2RoaS1yOGE3M2E0IiAtIFNESEkgSVAgb24gUjhBNzNBNCBTb0MKKwkJInJlbmVzYXMsc2RoaS1yOGE3NzQwIiAtIFNESEkgSVAgb24gUjhBNzc0MCBTb0MKKwkJInJlbmVzYXMsc2RoaS1yOGE3Nzc4IiAtIFNESEkgSVAgb24gUjhBNzc3OCBTb0MKKwkJInJlbmVzYXMsc2RoaS1yOGE3Nzc5IiAtIFNESEkgSVAgb24gUjhBNzc3OSBTb0MKKwkJInJlbmVzYXMsc2RoaS1yOGE3NzkwIiAtIFNESEkgSVAgb24gUjhBNzc5MCBTb0MKKwkJInJlbmVzYXMsc2RoaS1yOGE3NzkxIiAtIFNESEkgSVAgb24gUjhBNzc5MSBTb0MKKwkJInJlbmVzYXMsc2RoaS1yOGE3NzkyIiAtIFNESEkgSVAgb24gUjhBNzc5MiBTb0MKKwkJInJlbmVzYXMsc2RoaS1yOGE3NzkzIiAtIFNESEkgSVAgb24gUjhBNzc5MyBTb0MKKwkJInJlbmVzYXMsc2RoaS1yOGE3Nzk0IiAtIFNESEkgSVAgb24gUjhBNzc5NCBTb0MKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdG9zaGliYSxtbWMtd3Jwcm90ZWN0LWRpc2FibGU6IHdyaXRlLXByb3RlY3QgZGV0ZWN0aW9uIGlzIHVuYXZhaWxhYmxlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL3VzZGhpNnJvbDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy91c2RoaTZyb2wwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmFiZGFhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy91c2RoaTZyb2wwLnR4dApAQCAtMCwwICsxLDMzIEBACisqIFJlbmVzYXMgdXNkaGk2cm9sMCBTRC9TRElPIGhvc3QgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6CW11c3QgYmUKKwkJInJlbmVzYXMsdXNkaGk2cm9sMCIKKy0gaW50ZXJydXB0czoJMyBpbnRlcnJ1cHRzLCBuYW1lZCAiY2FyZCBkZXRlY3QiLCAiZGF0YSIgYW5kICJTRElPIiBtdXN0IGJlCisJCXNwZWNpZmllZAorLSBjbG9ja3M6CWEgY2xvY2sgYmluZGluZyBmb3IgdGhlIElNQ0xLIGlucHV0CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gdm1tYy1zdXBwbHk6CWEgcGhhbmRsZSBvZiBhIHJlZ3VsYXRvciwgc3VwcGx5aW5nIFZjYyB0byB0aGUgY2FyZAorLSB2cW1tYy1zdXBwbHk6CWEgcGhhbmRsZSBvZiBhIHJlZ3VsYXRvciwgc3VwcGx5aW5nIFZjY1EgdG8gdGhlIGNhcmQKKworQWRkaXRpb25hbGx5IGFueSBzdGFuZGFyZCBtbWMgYmluZGluZ3MgZnJvbSBtbWMudHh0IGNhbiBiZSB1c2VkLgorCitFeGFtcGxlOgorCitzZDA6IHNkQGFiMDAwMDAwIHsKKwljb21wYXRpYmxlID0gInJlbmVzYXMsdXNkaGk2cm9sMCI7CisJcmVnID0gPDB4YWIwMDAwMDAgMHgyMDA+OworCWludGVycnVwdHMgPSA8MCAyMyAweDQKKwkJICAgICAgMCAyNCAweDQKKwkJICAgICAgMCAyNSAweDQ+OworCWludGVycnVwdC1uYW1lcyA9ICJjYXJkIGRldGVjdCIsICJkYXRhIiwgIlNESU8iOworCWJ1cy13aWR0aCA9IDw0PjsKKwltYXgtZnJlcXVlbmN5ID0gPDUwMDAwMDAwPjsKKwljYXAtcG93ZXItb2ZmLWNhcmQ7CisJY2xvY2tzID0gPCZpbWNsaz47CisJdm1tYy1zdXBwbHkgPSA8JnZjY19zZDA+OworCXZxbW1jLXN1cHBseSA9IDwmdmNjcV9zZDA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvdnQ4NTAwLXNkbW1jLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvdnQ4NTAwLXNkbW1jLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2ZiNmFiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy92dDg1MDAtc2RtbWMudHh0CkBAIC0wLDAgKzEsMjMgQEAKKyogV29uZGVybWVkaWEgV004NTA1L1dNODY1MCBTRC9NTUMgSG9zdCBDb250cm9sbGVyCisKK1RoaXMgZmlsZSBkb2N1bWVudHMgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgY29yZSBwcm9wZXJ0aWVzIGRlc2NyaWJlZAorYnkgbW1jLnR4dCBhbmQgdGhlIHByb3BlcnRpZXMgdXNlZCBieSB0aGUgd210LXNkbW1jIGRyaXZlci4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJ3bSx3bTg1MDUtc2RoYyIuCistIGludGVycnVwdHM6IFR3byBpbnRlcnJ1cHRzIGFyZSByZXF1aXJlZCAtIHJlZ3VsYXIgaXJxIGFuZCBkbWEgaXJxLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBzZG9uLWludmVydGVkOiBTRF9PTiBiaXQgaXMgaW52ZXJ0ZWQgb24gdGhlIGNvbnRyb2xsZXIKKworRXhhbXBsZXM6CisKK3NkaGNAZDgwMGEwMDAgeworCWNvbXBhdGlibGUgPSAid20sd204NTA1LXNkaGMiOworCXJlZyA9IDwweGQ4MDBhMDAwIDB4MTAwMD47CisJaW50ZXJydXB0cyA9IDwyMCAyMT47CisJY2xvY2tzID0gPCZzZGhjPjsKKwlidXMtd2lkdGggPSA8ND47CisJc2Rvbi1pbnZlcnRlZDsKK307CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvYXJtLXZlcnNhdGlsZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2FybS12ZXJzYXRpbGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlYWNlNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2FybS12ZXJzYXRpbGUudHh0CkBAIC0wLDAgKzEsOCBAQAorRmxhc2ggZGV2aWNlIG9uIEFSTSBWZXJzYXRpbGUgYm9hcmQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IG11c3QgYmUgImFybSx2ZXJzYXRpbGUtZmxhc2giOworLSBiYW5rLXdpZHRoIDogd2lkdGggaW4gYnl0ZXMgb2YgZmxhc2ggaW50ZXJmYWNlLgorCitUaGUgZGV2aWNlIHRyZWUgbWF5IG9wdGlvbmFsbHkgY29udGFpbiBzdWItbm9kZXMgZGVzY3JpYmluZyBwYXJ0aXRpb25zIG9mIHRoZQorYWRkcmVzcyBzcGFjZS4gU2VlIHBhcnRpdGlvbi50eHQgZm9yIG1vcmUgZGV0YWlsLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9hdG1lbC1kYXRhZmxhc2gudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9hdG1lbC1kYXRhZmxhc2gudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ODlhNGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2F0bWVsLWRhdGFmbGFzaC50eHQKQEAgLTAsMCArMSwxNyBAQAorKiBBdG1lbCBEYXRhIEZsYXNoCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAiYXRtZWwsPG1vZGVsPiIsICJhdG1lbCw8c2VyaWVzPiIsICJhdG1lbCxkYXRhZmxhc2giLgorCitUaGUgZGV2aWNlIHRyZWUgbWF5IG9wdGlvbmFsbHkgY29udGFpbiBzdWItbm9kZXMgZGVzY3JpYmluZyBwYXJ0aXRpb25zIG9mIHRoZQorYWRkcmVzcyBzcGFjZS4gU2VlIHBhcnRpdGlvbi50eHQgZm9yIG1vcmUgZGV0YWlsLgorCitFeGFtcGxlOgorCitmbGFzaEAxIHsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwxPjsKKwljb21wYXRpYmxlID0gImF0bWVsLGF0NDVkYjMyMWQiLCAiYXRtZWwsYXQ0NSIsICJhdG1lbCxkYXRhZmxhc2giOworCXNwaS1tYXgtZnJlcXVlbmN5ID0gPDI1MDAwMDAwPjsKKwlyZWcgPSA8MT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9hdG1lbC1uYW5kLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvYXRtZWwtbmFuZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q0YzhlYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvYXRtZWwtbmFuZC50eHQKQEAgLTAsMCArMSwxMTEgQEAKK0F0bWVsIE5BTkQgZmxhc2gKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiYXRtZWwsYXQ5MXJtOTIwMC1uYW5kIiBvciAiYXRtZWwsc2FtYTVkNC1uYW5kIi4KKy0gcmVnIDogc2hvdWxkIHNwZWNpZnkgbG9jYWxidXMgYWRkcmVzcyBhbmQgc2l6ZSB1c2VkIGZvciB0aGUgY2hpcCwKKwlhbmQgaGFyZHdhcmUgRUNDIGNvbnRyb2xsZXIgaWYgYXZhaWxhYmxlLgorCUlmIHRoZSBoYXJkd2FyZSBFQ0MgaXMgUE1FQ0MsIGl0IHNob3VsZCBjb250YWluIGFkZHJlc3MgYW5kIHNpemUgZm9yCisJUE1FQ0MgYW5kIFBNRUNDIEVycm9yIExvY2F0aW9uIGNvbnRyb2xsZXIuCisJVGhlIFBNRUNDIGxvb2t1cCB0YWJsZSBhZGRyZXNzIGFuZCBzaXplIGluIFJPTSBpcyBvcHRpb25hbC4gSWYgbm90CisJc3BlY2lmaWVkLCBkcml2ZXIgd2lsbCBidWlsZCBpdCBpbiBydW50aW1lLgorLSBhdG1lbCxuYW5kLWFkZHItb2Zmc2V0IDogb2Zmc2V0IGZvciB0aGUgYWRkcmVzcyBsYXRjaC4KKy0gYXRtZWwsbmFuZC1jbWQtb2Zmc2V0IDogb2Zmc2V0IGZvciB0aGUgY29tbWFuZCBsYXRjaC4KKy0gI2FkZHJlc3MtY2VsbHMsICNzaXplLWNlbGxzIDogTXVzdCBiZSBwcmVzZW50IGlmIHRoZSBkZXZpY2UgaGFzIHN1Yi1ub2RlcworICByZXByZXNlbnRpbmcgcGFydGl0aW9ucy4KKworLSBncGlvcyA6IHNwZWNpZmllcyB0aGUgZ3BpbyBwaW5zIHRvIGNvbnRyb2wgdGhlIE5BTkQgZGV2aWNlLiBkZXRlY3QgaXMgYW4KKyAgb3B0aW9uYWwgZ3BpbyBhbmQgbWF5IGJlIHNldCB0byAwIGlmIG5vdCBwcmVzZW50LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBhdG1lbCxuYW5kLWhhcy1kbWEgOiBib29sZWFuIHRvIHN1cHBvcnQgZG1hIHRyYW5zZmVyIGZvciBuYW5kIHJlYWQvd3JpdGUuCistIG5hbmQtZWNjLW1vZGUgOiBTdHJpbmcsIG9wZXJhdGlvbiBtb2RlIG9mIHRoZSBOQU5EIGVjYyBtb2RlLCBzb2Z0IGJ5IGRlZmF1bHQuCisgIFN1cHBvcnRlZCB2YWx1ZXMgYXJlOiAibm9uZSIsICJzb2Z0IiwgImh3IiwgImh3X3N5bmRyb21lIiwgImh3X29vYl9maXJzdCIsCisgICJzb2Z0X2JjaCIuCistIGF0bWVsLGhhcy1wbWVjYyA6IGJvb2xlYW4gdG8gZW5hYmxlIFByb2dyYW1tYWJsZSBNdWx0aWJpdCBFQ0MgaGFyZHdhcmUuCisgIE9ubHkgc3VwcG9ydGVkIGJ5IGF0OTFzYW05eDUgb3IgbGF0ZXIgc2FtOSBwcm9kdWN0LgorLSBhdG1lbCxwbWVjYy1jYXAgOiBlcnJvciBjb3JyZWN0IGNhcGFiaWxpdHkgZm9yIFByb2dyYW1tYWJsZSBNdWx0aWJpdCBFQ0MKKyAgQ29udHJvbGxlci4gU3VwcG9ydGVkIHZhbHVlcyBhcmU6IDIsIDQsIDgsIDEyLCAyNC4KKy0gYXRtZWwscG1lY2Mtc2VjdG9yLXNpemUgOiBzZWN0b3Igc2l6ZSBmb3IgRUNDIGNvbXB1dGF0aW9uLiBTdXBwb3J0ZWQgdmFsdWVzCisgIGFyZTogNTEyLCAxMDI0LgorLSBhdG1lbCxwbWVjYy1sb29rdXAtdGFibGUtb2Zmc2V0IDogaW5jbHVkZXMgdHdvIG9mZnNldHMgb2YgbG9va3VwIHRhYmxlIGluIFJPTQorICBmb3IgZGlmZmVyZW50IHNlY3RvciBzaXplLiBGaXJzdCBvbmUgaXMgZm9yIHNlY3RvciBzaXplIDUxMiwgdGhlIG5leHQgaXMgZm9yCisgIHNlY3RvciBzaXplIDEwMjQuIElmIG5vdCBzcGVjaWZpZWQsIGRyaXZlciB3aWxsIGJ1aWxkIHRoZSB0YWJsZSBpbiBydW50aW1lLgorLSBuYW5kLWJ1cy13aWR0aCA6IDggb3IgMTYgYnVzIHdpZHRoIGlmIG5vdCBwcmVzZW50IDgKKy0gbmFuZC1vbi1mbGFzaC1iYnQ6IGJvb2xlYW4gdG8gZW5hYmxlIG9uIGZsYXNoIGJidCBvcHRpb24gaWYgbm90IHByZXNlbnQgZmFsc2UKKy0gTmFuZCBGbGFzaCBDb250cm9sbGVyKE5GQykgaXMgYSBzbGF2ZSBkcml2ZXIgdW5kZXIgQXRtZWwgbmFuZCBmbGFzaAorICAtIFJlcXVpcmVkIHByb3BlcnRpZXM6CisgICAgLSBjb21wYXRpYmxlIDogImF0bWVsLHNhbWE1ZDMtbmZjIi4KKyAgICAtIHJlZyA6IHNob3VsZCBzcGVjaWZ5IHRoZSBhZGRyZXNzIGFuZCBzaXplIHVzZWQgZm9yIE5GQyBjb21tYW5kIHJlZ2lzdGVycywKKyAgICAgICAgICAgIE5GQyByZWdpc3RlcnMgYW5kIE5GQyBTcmFtLiBORkMgU3JhbSBhZGRyZXNzIGFuZCBzaXplIGNhbiBiZSBhYnNlbnQKKyAgICAgICAgICAgIGlmIGRvbid0IHdhbnQgdG8gdXNlIGl0LgorICAgIC0gY2xvY2tzOiBwaGFuZGxlIHRvIHRoZSBwZXJpcGhlcmFsIGNsb2NrCisgIC0gT3B0aW9uYWwgcHJvcGVydGllczoKKyAgICAtIGF0bWVsLHdyaXRlLWJ5LXNyYW06IGJvb2xlYW4gdG8gZW5hYmxlIE5GQyB3cml0ZSBieSBzcmFtLgorCitFeGFtcGxlczoKK25hbmQwOiBuYW5kQDQwMDAwMDAwLDAgeworCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXJtOTIwMC1uYW5kIjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwxPjsKKwlyZWcgPSA8MHg0MDAwMDAwMCAweDEwMDAwMDAwCisJICAgICAgIDB4ZmZmZmU4MDAgMHgyMDAKKwkgICAgICA+OworCWF0bWVsLG5hbmQtYWRkci1vZmZzZXQgPSA8MjE+OwkvKiBhbGUgKi8KKwlhdG1lbCxuYW5kLWNtZC1vZmZzZXQgPSA8MjI+OwkvKiBjbGUgKi8KKwluYW5kLW9uLWZsYXNoLWJidDsKKwluYW5kLWVjYy1tb2RlID0gInNvZnQiOworCWdwaW9zID0gPCZwaW9DIDEzIDAJLyogcmR5ICovCisJCSAmcGlvQyAxNCAwIAkvKiBuY2UgKi8KKwkJIDAJCS8qIGNkICovCisJCT47CisJcGFydGl0aW9uQDAgeworCQkuLi4KKwl9OworfTsKKworLyogZm9yIFBNRUNDIHN1cHBvcnRlZCBjaGlwcyAqLworbmFuZDA6IG5hbmRANDAwMDAwMDAgeworCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXJtOTIwMC1uYW5kIjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwxPjsKKwlyZWcgPSA8IDB4NDAwMDAwMDAgMHgxMDAwMDAwMAkvKiBidXMgYWRkciAmIHNpemUgKi8KKwkJMHhmZmZmZTAwMCAweDAwMDAwNjAwCS8qIFBNRUNDIGFkZHIgJiBzaXplICovCisJCTB4ZmZmZmU2MDAgMHgwMDAwMDIwMAkvKiBQTUVDQyBFUlJMT0MgYWRkciAmIHNpemUgKi8KKwkJMHgwMDEwMDAwMCAweDAwMTAwMDAwCS8qIFJPTSBhZGRyICYgc2l6ZSAqLworCQk+OworCWF0bWVsLG5hbmQtYWRkci1vZmZzZXQgPSA8MjE+OwkvKiBhbGUgKi8KKwlhdG1lbCxuYW5kLWNtZC1vZmZzZXQgPSA8MjI+OwkvKiBjbGUgKi8KKwluYW5kLW9uLWZsYXNoLWJidDsKKwluYW5kLWVjYy1tb2RlID0gImh3IjsKKwlhdG1lbCxoYXMtcG1lY2M7CS8qIGVuYWJsZSBQTUVDQyAqLworCWF0bWVsLHBtZWNjLWNhcCA9IDwyPjsKKwlhdG1lbCxwbWVjYy1zZWN0b3Itc2l6ZSA9IDw1MTI+OworCWF0bWVsLHBtZWNjLWxvb2t1cC10YWJsZS1vZmZzZXQgPSA8MHg4MDAwIDB4MTAwMDA+OworCWdwaW9zID0gPCZwaW9EIDUgMAkvKiByZHkgKi8KKwkJICZwaW9EIDQgMAkvKiBuY2UgKi8KKwkJIDAJCS8qIGNkICovCisJCT47CisJcGFydGl0aW9uQDAgeworCQkuLi4KKwl9OworfTsKKworLyogZm9yIE5GQyBzdXBwb3J0ZWQgY2hpcHMgKi8KK25hbmQwOiBuYW5kQDQwMDAwMDAwIHsKKwljb21wYXRpYmxlID0gImF0bWVsLGF0OTFybTkyMDAtbmFuZCI7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MT47CisJcmFuZ2VzOworICAgICAgICAuLi4KKyAgICAgICAgbmZjQDcwMDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhdG1lbCxzYW1hNWQzLW5mYyI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJY2xvY2tzID0gPCZoc21jX2Nsaz4KKwkJcmVnID0gPAorCQkJMHg3MDAwMDAwMCAweDEwMDAwMDAwCS8qIE5GQyBDb21tYW5kIFJlZ2lzdGVycyAqLworCQkJMHhmZmZmYzAwMCAweDAwMDAwMDcwCS8qIE5GQyBIU01DIHJlZ3MgKi8KKwkJCTB4MDAyMDAwMDAgMHgwMDEwMDAwMAkvKiBORkMgU1JBTSBiYW5rcyAqLworCQk+OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9icmNtLGJyY21uYW5kLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvYnJjbSxicmNtbmFuZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZmNzEyOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvYnJjbSxicmNtbmFuZC50eHQKQEAgLTAsMCArMSwxNTAgQEAKKyogQnJvYWRjb20gU1RCIE5BTkQgQ29udHJvbGxlcgorCitUaGUgQnJvYWRjb20gU2V0LVRvcCBCb3ggTkFORCBjb250cm9sbGVyIHN1cHBvcnRzIGxvdy1sZXZlbCBhY2Nlc3MgdG8gcmF3IE5BTkQKK2ZsYXNoIGNoaXBzLiBJdCBoYXMgYSBtZW1vcnktbWFwcGVkIHJlZ2lzdGVyIGludGVyZmFjZSBmb3IgYm90aCBjb250cm9sCityZWdpc3RlcnMgYW5kIGZvciBpdHMgZGF0YSBpbnB1dC9vdXRwdXQgYnVmZmVyLiBPbiBzb21lIFNvQ3MsIHRoaXMgY29udHJvbGxlciBpcworcGFpcmVkIHdpdGggYSBjdXN0b20gRE1BIGVuZ2luZSAoaW52ZW50aXZlbHkgbmFtZWQgIkZsYXNoIERNQSIpIHdoaWNoIHN1cHBvcnRzCitiYXNpYyBQUk9HUkFNIGFuZCBSRUFEIGZ1bmN0aW9ucywgYW1vbmcgb3RoZXIgZmVhdHVyZXMuCisKK1RoaXMgY29udHJvbGxlciB3YXMgb3JpZ2luYWxseSBkZXNpZ25lZCBmb3IgU1RCIFNvQ3MgKEJDTTd4eHgpIGJ1dCBpcyBub3cKK2F2YWlsYWJsZSBvbiBhIHZhcmlldHkgb2YgQnJvYWRjb20gU29DcywgaW5jbHVkaW5nIHNvbWUgQkNNM3h4eCwgQkNNNjN4eCwgYW5kCitpUHJvYy9DeWdudXMuIEl0cyBoaXN0b3J5IGluY2x1ZGVzIHNldmVyYWwgc2ltaWxhciAoYnV0IG5vdCBmdWxseSByZWdpc3RlcgorY29tcGF0aWJsZSkgdmVyc2lvbnMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgICAgICAgOiBNYXkgY29udGFpbiBhbiBTb0Mtc3BlY2lmaWMgY29tcGF0aWJpbGl0eSBzdHJpbmcgKHNlZSBiZWxvdykKKyAgICAgICAgICAgICAgICAgICAgIHRvIGFjY291bnQgZm9yIGFueSBTb0Mtc3BlY2lmaWMgaGFyZHdhcmUgYml0cyB0aGF0IG1heSBiZQorICAgICAgICAgICAgICAgICAgICAgYWRkZWQgb24gdG9wIG9mIHRoZSBiYXNlIGNvcmUgY29udHJvbGxlci4KKyAgICAgICAgICAgICAgICAgICAgIEluIGFkZGl0aW9uLCBtdXN0IGNvbnRhaW4gY29tcGF0aWJpbGl0eSBpbmZvcm1hdGlvbiBhYm91dAorICAgICAgICAgICAgICAgICAgICAgdGhlIGNvcmUgTkFORCBjb250cm9sbGVyLCBvZiB0aGUgZm9sbG93aW5nIGZvcm06CisgICAgICAgICAgICAgICAgICAgICAiYnJjbSxicmNtbmFuZCIgYW5kIGFuIGFwcHJvcHJpYXRlIHZlcnNpb24gY29tcGF0aWJpbGl0eQorICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLCBsaWtlICJicmNtLGJyY21uYW5kLXY3LjAiCisgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZSB2YWx1ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgYnJjbSxicmNtbmFuZC12NC4wCisgICAgICAgICAgICAgICAgICAgICAgICAgYnJjbSxicmNtbmFuZC12NS4wCisgICAgICAgICAgICAgICAgICAgICAgICAgYnJjbSxicmNtbmFuZC12Ni4wCisgICAgICAgICAgICAgICAgICAgICAgICAgYnJjbSxicmNtbmFuZC12Ni4xCisgICAgICAgICAgICAgICAgICAgICAgICAgYnJjbSxicmNtbmFuZC12Ny4wCisgICAgICAgICAgICAgICAgICAgICAgICAgYnJjbSxicmNtbmFuZC12Ny4xCisgICAgICAgICAgICAgICAgICAgICAgICAgYnJjbSxicmNtbmFuZAorLSByZWcgICAgICAgICAgICAgIDogdGhlIHJlZ2lzdGVyIHN0YXJ0IGFuZCBsZW5ndGggZm9yIE5BTkQgcmVnaXN0ZXIgcmVnaW9uLgorICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbmFsKSBGbGFzaCBETUEgcmVnaXN0ZXIgcmFuZ2UgKGlmIHByZXNlbnQpCisgICAgICAgICAgICAgICAgICAgICAob3B0aW9uYWwpIE5BTkQgZmxhc2ggY2FjaGUgcmFuZ2UgKGlmIGF0IG5vbi1zdGFuZGFyZCBvZmZzZXQpCistIHJlZy1uYW1lcyAgICAgICAgOiBhIGxpc3Qgb2YgdGhlIG5hbWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByZXZpb3VzIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICByYW5nZXMuIFNob3VsZCBjb250YWluICJuYW5kIiBhbmQgKG9wdGlvbmFsbHkpCisgICAgICAgICAgICAgICAgICAgICAiZmxhc2gtZG1hIiBhbmQvb3IgIm5hbmQtY2FjaGUiLgorLSBpbnRlcnJ1cHRzICAgICAgIDogVGhlIE5BTkQgQ1RMUkRZIGludGVycnVwdCBhbmQgKGlmIEZsYXNoIERNQSBpcyBhdmFpbGFibGUpCisgICAgICAgICAgICAgICAgICAgICBGTEFTSF9ETUFfRE9ORQorLSBpbnRlcnJ1cHQtbmFtZXMgIDogTWF5IGJlICJuYW5kX2N0bHJkeSIgb3IgImZsYXNoX2RtYV9kb25lIiwgaWYgYnJva2VuIG91dCBhcworICAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbCBpbnRlcnJ1cHRzLgorICAgICAgICAgICAgICAgICAgICAgTWF5IGJlICJuYW5kIiwgaWYgdGhlIFNvQyBoYXMgdGhlIGluZGl2aWR1YWwgTkFORAorICAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0cyBtdWx0aXBsZXhlZCBiZWhpbmQgYW5vdGhlciBjdXN0b20gcGllY2Ugb2YKKyAgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlCistIGludGVycnVwdC1wYXJlbnQgOiBTZWUgc3RhbmRhcmQgaW50ZXJydXB0IGJpbmRpbmdzCistICNhZGRyZXNzLWNlbGxzICAgOiA8MT4gLSBzdWJub2RlcyBnaXZlIHRoZSBjaGlwLXNlbGVjdCBudW1iZXIKKy0gI3NpemUtY2VsbHMgICAgICA6IDwwPgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBicmNtLG5hbmQtaGFzLXdwICAgICAgICAgIDogU29tZSB2ZXJzaW9ucyBvZiB0aGlzIElQIGluY2x1ZGUgYSB3cml0ZS1wcm90ZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV1ApIGNvbnRyb2wgYml0LiBJdCBpcyBhbHdheXMgYXZhaWxhYmxlIG9uID49CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2Ny4wLiBVc2UgdGhpcyBwcm9wZXJ0eSB0byBkZXNjcmliZSB0aGUgcmFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFybGllciB2ZXJzaW9ucyBvZiB0aGlzIGNvcmUgdGhhdCBpbmNsdWRlIFdQCisKKyAtLSBBZGRpdG9uYWwgU29DLXNwZWNpZmljIE5BTkQgY29udHJvbGxlciBwcm9wZXJ0aWVzIC0tCisKK1RoZSBOQU5EIGNvbnRyb2xsZXIgaXMgaW50ZWdyYXRlZCBkaWZmZXJlbnRseSBvbiB0aGUgdmFyaWV0eSBvZiBTb0NzIG9uIHdoaWNoIGl0CitpcyBmb3VuZC4gUGFydCBvZiB0aGlzIGludGVncmF0aW9uIGludm9sdmVzIHByb3ZpZGluZyBzdGF0dXMgYW5kIGVuYWJsZSBiaXRzCit3aXRoIHdoaWNoIHRvIGNvbnRyb2wgdGhlIDggZXhwb3NlZCBOQU5EIGludGVycnVwdHMsIGFzIHdlbGwgYXMgaGFyZHdhcmUgZm9yCitjb25maWd1cmluZyB0aGUgZW5kaWFubmVzcyBvZiB0aGUgZGF0YSBidXMuIE9uIHNvbWUgU29DcywgdGhlc2UgZmVhdHVyZXMgYXJlCitoYW5kbGVkIHZpYSBzdGFuZGFyZCwgbW9kdWxhciBjb21wb25lbnRzIChlLmcuLCB0aGVpciBpbnRlcnJ1cHRzIGxvb2sgbGlrZSBhCitub3JtYWwgSVJRIGNoaXApLCBidXQgb24gb3RoZXJzLCB0aGV5IGFyZSBjb250cm9sbGVkIGluIHVuaXF1ZSBhbmQgaW50ZXJlc3RpbmcKK3dheXMsIHNvbWV0aW1lcyB3aXRoIHJlZ2lzdGVycyB0aGF0IGx1bXAgbXVsdGlwbGUgTkFORC1yZWxhdGVkIGZ1bmN0aW9ucwordG9nZXRoZXIuIFRoZSBmb3JtZXIgY2FzZSBjYW4gYmUgZGVzY3JpYmVkIHNpbXBseSBieSB0aGUgc3RhbmRhcmQgaW50ZXJydXB0cworcHJvcGVydGllcyBpbiB0aGUgbWFpbiBjb250cm9sbGVyIG5vZGUuIEJ1dCBmb3IgdGhlIGxhdHRlciBleGNlcHRpb25hbCBjYXNlcywKK3dlIGRlZmluZSBhZGRpdGlvbmFsICdjb21wYXRpYmxlJyBwcm9wZXJ0aWVzIGFuZCBhc3NvY2lhdGVkIHJlZ2lzdGVyIHJlc291cmNlcyB3aXRoaW4gdGhlIE5BTkQgY29udHJvbGxlciBub2RlIGFib3ZlLgorCisgLSBjb21wYXRpYmxlOiBDYW4gYmUgb25lIG9mIHNldmVyYWwgU29DLXNwZWNpZmljIHN0cmluZ3MuIEVhY2ggU29DIG1heSBoYXZlCisgICBkaWZmZXJlbnQgcmVxdWlyZW1lbnRzIGZvciBpdHMgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLCBhcyBkZXNjcmliZWQgYmVsb3cgZWFjaAorICAgYnVsbGV0IHBvaW50IGJlbG93LgorCisgICAqICJicmNtLG5hbmQtYmNtNjMxMzgiCisgICAgIC0gcmVnOiAocmVxdWlyZWQpIHRoZSAnTkFORF9JTlRfQkFTRScgcmVnaXN0ZXIgcmFuZ2UsIHdpdGggc2VwYXJhdGUgc3RhdHVzCisgICAgICAgYW5kIGVuYWJsZSByZWdpc3RlcnMKKyAgICAgLSByZWctbmFtZXM6IChyZXF1aXJlZCkgIm5hbmQtaW50LWJhc2UiCisKKyAgICogImJyY20sbmFuZC1pcHJvYyIKKyAgICAgLSByZWc6IChyZXF1aXJlZCkgdGhlICJJRE0iIHJlZ2lzdGVyIHJhbmdlLCBmb3IgaW50ZXJydXB0IGVuYWJsZSBhbmQgQVBCCisgICAgICAgYnVzIGFjY2VzcyBlbmRpYW5uZXNzIGNvbmZpZ3VyYXRpb24sIGFuZCB0aGUgIkVYVCIgcmVnaXN0ZXIgcmFuZ2UsCisgICAgICAgZm9yIGludGVycnVwdCBzdGF0dXMvYWNrLgorICAgICAtIHJlZy1uYW1lczogKHJlcXVpcmVkKSBhIGxpc3Qgb2YgdGhlIG5hbWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByZXZpb3VzCisgICAgICAgcmVnaXN0ZXIgcmFuZ2VzLiBTaG91bGQgY29udGFpbiAiaXByb2MtaWRtIiBhbmQgImlwcm9jLWV4dCIuCisKKworKiBOQU5EIGNoaXAtc2VsZWN0CisKK0VhY2ggY29udHJvbGxlciAoY29tcGF0aWJsZTogImJyY20sYnJjbW5hbmQiKSBtYXkgY29udGFpbiBvbmUgb3IgbW9yZSBzdWJub2RlcwordG8gcmVwcmVzZW50IGVuYWJsZWQgY2hpcC1zZWxlY3RzIHdoaWNoIChtYXkpIGNvbnRhaW4gTkFORCBmbGFzaCBjaGlwcy4gVGhlaXIKK3Byb3BlcnRpZXMgYXJlIGFzIGZvbGxvd3MuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgICAgICAgICAgICAgICAgOiBzaG91bGQgY29udGFpbiAiYnJjbSxuYW5kY3MiCistIHJlZyAgICAgICAgICAgICAgICAgICAgICAgOiBhIHNpbmdsZSBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgY2hpcC1zZWxlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciAoZS5nLiwgMCwgMSwgMiwgZXRjLikKKy0gI2FkZHJlc3MtY2VsbHMgICAgICAgICAgICA6IHNlZSBwYXJ0aXRpb24udHh0CistICNzaXplLWNlbGxzICAgICAgICAgICAgICAgOiBzZWUgcGFydGl0aW9uLnR4dAorLSBuYW5kLWVjYy1zdHJlbmd0aCAgICAgICAgIDogc2VlIG5hbmQudHh0CistIG5hbmQtZWNjLXN0ZXAtc2l6ZSAgICAgICAgOiBtdXN0IGJlIDUxMiBvciAxMDI0LiBTZWUgbmFuZC50eHQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gbmFuZC1vbi1mbGFzaC1iYnQgICAgICAgICA6IGJvb2xlYW4sIHRvIGVuYWJsZSB0aGUgb24tZmxhc2ggQkJUIGZvciB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlwLXNlbGVjdC4gU2VlIG5hbmQudHh0CistIGJyY20sbmFuZC1vb2Itc2VjdG9yLXNpemUgOiBpbnRlZ2VyLCB0byBkZW5vdGUgdGhlIHNwYXJlIGFyZWEgc2VjdG9yIHNpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkIGZvciB0aGUgRUNDIGxheW91dCBpbiB1c2UuIFRoaXMgc2l6ZSwgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uIHRvIHRoZSBzdHJlbmd0aCBhbmQgc3RlcC1zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZXJtaW5lcyBob3cgdGhlIGhhcmR3YXJlIEJDSCBlbmdpbmUgd2lsbCBsYXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCB0aGUgcGFyaXR5IGJ5dGVzIGl0IHN0b3JlcyBvbiB0aGUgZmxhc2guCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHByb3BlcnR5IGNhbiBiZSBhdXRvbWF0aWNhbGx5IGRldGVybWluZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmbGFzaCBnZW9tZXRyeSAocGFydGljdWxhcmx5IHRoZSBOQU5EIHBhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBPT0Igc2l6ZSkgaW4gbWFueSBjYXNlcywgYnV0IHdoZW4gYm9vdGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBOQU5ELCB0aGUgYm9vdCBjb250cm9sbGVyIGhhcyBvbmx5IGEgbGltaXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIGF2YWlsYWJsZSBvcHRpb25zIGZvciBpdHMgZGVmYXVsdCBFQ0MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dC4KKworRWFjaCBuYW5kY3MgZGV2aWNlIG5vZGUgbWF5IG9wdGlvbmFsbHkgY29udGFpbiBzdWItbm9kZXMgZGVzY3JpYmluZyB0aGUgZmxhc2gKK3BhcnRpdGlvbiBtYXBwaW5nLiBTZWUgcGFydGl0aW9uLnR4dCBmb3IgbW9yZSBkZXRhaWwuCisKKworRXhhbXBsZToKKworbmFuZEBmMDQ0MjgwMCB7CisJY29tcGF0aWJsZSA9ICJicmNtLGJyY21uYW5kLXY3LjAiLCAiYnJjbSxicmNtbmFuZCI7CisJcmVnID0gPDB4RjA0NDI4MDAgMHg2MDA+LAorCSAgICAgIDwweEYwNDQzMDAwIDB4MTAwPjsKKwlyZWctbmFtZXMgPSAibmFuZCIsICJmbGFzaC1kbWEiOworCWludGVycnVwdC1wYXJlbnQgPSA8JmhpZl9pbnRyMl9pbnRjPjsKKwlpbnRlcnJ1cHRzID0gPDI0PiwgPDQ+OworCisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47CisKKwluYW5kY3NAMSB7CisJCWNvbXBhdGlibGUgPSAiYnJjbSxuYW5kY3MiOworCQlyZWcgPSA8MT47IC8vIENoaXAgc2VsZWN0IDEKKwkJbmFuZC1vbi1mbGFzaC1iYnQ7CisJCW5hbmQtZWNjLXN0cmVuZ3RoID0gPDEyPjsKKwkJbmFuZC1lY2Mtc3RlcC1zaXplID0gPDUxMj47CisKKwkJLy8gUGFydGl0aW9ucworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsgIC8vIDwyPiwgZm9yIDY0LWJpdCBvZmZzZXQKKwkJI3NpemUtY2VsbHMgPSA8MT47ICAgICAvLyA8Mj4sIGZvciA2NC1iaXQgbGVuZ3RoCisJCWZsYXNoMC5yb290ZnNAMCB7CisJCQlyZWcgPSA8MCAweDEwMDAwMDAwPjsKKwkJfTsKKwkJZmxhc2gwQDAgeworCQkJcmVnID0gPDAgMD47IC8vIE1URFBBUlRfU0laX0ZVTEwKKwkJfTsKKwkJZmxhc2gwLmtlcm5lbEAxMDAwMDAwMCB7CisJCQlyZWcgPSA8MHgxMDAwMDAwMCAweDQwMDAwMD47CisJCX07CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2RhdmluY2ktbmFuZC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2RhdmluY2ktbmFuZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZiMThhYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvZGF2aW5jaS1uYW5kLnR4dApAQCAtMCwwICsxLDk0IEBACitEZXZpY2UgdHJlZSBiaW5kaW5ncyBmb3IgVGV4YXMgaW5zdHJ1bWVudHMgRGF2aW5jaS9LZXlzdG9uZSBOQU5EIGNvbnRyb2xsZXIKKworVGhpcyBmaWxlIHByb3ZpZGVzIGluZm9ybWF0aW9uLCB3aGF0IHRoZSBkZXZpY2Ugbm9kZSBmb3IgdGhlIGRhdmluY2kva2V5c3RvbmUKK05BTkQgaW50ZXJmYWNlIGNvbnRhaW5zLgorCitEb2N1bWVudGF0aW9uOgorRGF2aW5jaSBETTY0NnggLSBodHRwOi8vd3d3LnRpLmNvbS9saXQvdWcvc3BydWVxN2Mvc3BydWVxN2MucGRmCitLZXN0b25lIC0gaHR0cDovL3d3dy50aS5jb20vbGl0L3VnL3NwcnVnejNhL3NwcnVnejNhLnBkZgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6CQkJInRpLGRhdmluY2ktbmFuZCIKKwkJCQkidGksa2V5c3RvbmUtbmFuZCIKKworLSByZWc6CQkJCUNvbnRhaW5zIDIgb2Zmc2V0L2xlbmd0aCB2YWx1ZXM6CisJCQkJLSBvZmZzZXQgYW5kIGxlbmd0aCBmb3IgdGhlIGFjY2VzcyB3aW5kb3cuCisJCQkJLSBvZmZzZXQgYW5kIGxlbmd0aCBmb3IgYWNjZXNzaW5nIHRoZSBBRU1JRgorCQkJCWNvbnRyb2wgcmVnaXN0ZXJzLgorCistIHRpLGRhdmluY2ktY2hpcHNlbGVjdDoJbnVtYmVyIG9mIGNoaXBzZWxlY3QuIEluZGljYXRlcyBvbiB0aGUKKwkJCQlkYXZpbmNpX25hbmQgZHJpdmVyIHdoaWNoIGNoaXBzZWxlY3QgaXMgdXNlZAorCQkJCWZvciBhY2Nlc3NpbmcgdGhlIG5hbmQuCisJCQkJQ2FuIGJlIGluIHRoZSByYW5nZSBbMC0zXS4KKworUmVjb21tZW5kZWQgcHJvcGVydGllcyA6CisKKy0gdGksZGF2aW5jaS1tYXNrLWFsZToJCW1hc2sgZm9yIEFMRS4gTmVlZGVkIGZvciBleGVjdXRpbmcgYWRkcmVzcworCQkJCXBoYXNlLiBUaGVzZSBvZmZzZXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgYmFzZQorCQkJCWFkZHJlc3MgZm9yIHRoZSBjaGlwIHNlbGVjdCBzcGFjZSB0aGUgTkFORCBGbGFzaAorCQkJCWRldmljZSBpcyBjb25uZWN0ZWQgdG8uCisJCQkJSWYgbm90IHNldCBlcXVhbCB0byAweDA4LgorCistIHRpLGRhdmluY2ktbWFzay1jbGU6CQltYXNrIGZvciBDTEUuIE5lZWRlZCBmb3IgZXhlY3V0aW5nIGNvbW1hbmQKKwkJCQlwaGFzZS4gVGhlc2Ugb2Zmc2V0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGJhc2UKKwkJCQlhZGRyZXNzIGZvciB0aGUgY2hpcCBzZWxlY3Qgc3BhY2UgdGhlIE5BTkQgRmxhc2gKKwkJCQlkZXZpY2UgaXMgY29ubmVjdGVkIHRvLgorCQkJCUlmIG5vdCBzZXQgZXF1YWwgdG8gMHgxMC4KKworLSB0aSxkYXZpbmNpLW1hc2stY2hpcHNlbDoJbWFzayBmb3IgY2hpcHNlbGVjdCBhZGRyZXNzLiBOZWVkZWQgdG8gbWFzaworCQkJCWFkZHJlc3NlcyBmb3IgZ2l2ZW4gY2hpcHNlbGVjdC4KKworLSBuYW5kLWVjYy1tb2RlOgkJb3BlcmF0aW9uIG1vZGUgb2YgdGhlIE5BTkQgZWNjIG1vZGUuIEVDQyBtb2RlCisJCQkJdmFsaWQgdmFsdWVzIGZvciBkYXZpbmNpIGRyaXZlcjoKKwkJCQktICJub25lIgorCQkJCS0gInNvZnQiCisJCQkJLSAiaHciCisKKy0gdGksZGF2aW5jaS1lY2MtYml0czoJCXVzZWQgRUNDIGJpdHMsIGN1cnJlbnRseSBzdXBwb3J0ZWQgMSBvciA0LgorCistIG5hbmQtYnVzLXdpZHRoOgkJYnVzd2lkdGggOCBvciAxNi4gSWYgbm90IHByZXNlbnQgOC4KKworLSBuYW5kLW9uLWZsYXNoLWJidDoJCXVzZSBmbGFzaCBiYXNlZCBiYWQgYmxvY2sgdGFibGUgc3VwcG9ydC4gT09CCisJCQkJaWRlbnRpZmllciBpcyBzYXZlZCBpbiBPT0IgYXJlYS4gSWYgbm90IHByZXNlbnQKKwkJCQlmYWxzZS4KKworRGVwcmVjYXRlZCBwcm9wZXJ0aWVzOgorCistIHRpLGRhdmluY2ktZWNjLW1vZGU6CQlvcGVyYXRpb24gbW9kZSBvZiB0aGUgTkFORCBlY2MgbW9kZS4gRUNDIG1vZGUKKwkJCQl2YWxpZCB2YWx1ZXMgZm9yIGRhdmluY2kgZHJpdmVyOgorCQkJCS0gIm5vbmUiCisJCQkJLSAic29mdCIKKwkJCQktICJodyIKKworLSB0aSxkYXZpbmNpLW5hbmQtYnVzd2lkdGg6CWJ1c3dpZHRoIDggb3IgMTYuIElmIG5vdCBwcmVzZW50IDguCisKKy0gdGksZGF2aW5jaS1uYW5kLXVzZS1iYnQ6CXVzZSBmbGFzaCBiYXNlZCBiYWQgYmxvY2sgdGFibGUgc3VwcG9ydC4gT09CCisJCQkJaWRlbnRpZmllciBpcyBzYXZlZCBpbiBPT0IgYXJlYS4gSWYgbm90IHByZXNlbnQKKwkJCQlmYWxzZS4KKworTmFuZCBkZXZpY2UgYmluZGluZ3MgbWF5IGNvbnRhaW4gYWRkaXRpb25hbCBzdWItbm9kZXMgZGVzY3JpYmluZyBwYXJ0aXRpb25zIG9mCit0aGUgYWRkcmVzcyBzcGFjZS4gU2VlIHBhcnRpdGlvbi50eHQgZm9yIG1vcmUgZGV0YWlsLiBUaGUgTkFORCBGbGFzaCB0aW1pbmcKK3ZhbHVlcyBtdXN0IGJlIHByb2dyYW1tZWQgaW4gdGhlIGNoaXAgc2VsZWN04oCZcyBub2RlIG9mIEFFTUlGCittZW1vcnktY29udHJvbGxlciAoc2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZW1vcnktY29udHJvbGxlcnMvCitkYXZpbmNpLWFlbWlmLnR4dCkuCisKK0V4YW1wbGUoZGE4NTAgRVZNICk6CisKK25hbmRfY3MzQDYyMDAwMDAwIHsKKwljb21wYXRpYmxlID0gInRpLGRhdmluY2ktbmFuZCI7CisJcmVnID0gPDB4NjIwMDAwMDAgMHg4MDdmZgorCSAgICAgICAweDY4MDAwMDAwIDB4ODAwMD47CisJdGksZGF2aW5jaS1jaGlwc2VsZWN0ID0gPDE+OworCXRpLGRhdmluY2ktbWFzay1hbGUgPSA8MD47CisJdGksZGF2aW5jaS1tYXNrLWNsZSA9IDwwPjsKKwl0aSxkYXZpbmNpLW1hc2stY2hpcHNlbCA9IDwwPjsKKwluYW5kLWVjYy1tb2RlID0gImh3IjsKKwl0aSxkYXZpbmNpLWVjYy1iaXRzID0gPDQ+OworCW5hbmQtb24tZmxhc2gtYmJ0OworCisJcGFydGl0aW9uQDE4MDAwMCB7CisJCWxhYmVsID0gInViaWZzIjsKKwkJcmVnID0gPDB4MTgwMDAwIDB4N2U4MDAwMD47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2RlbmFsaS1uYW5kLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvZGVuYWxpLW5hbmQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwNGQwM2EKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2RlbmFsaS1uYW5kLnR4dApAQCAtMCwwICsxLDIzIEBACisqIERlbmFsaSBOQU5EIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJkZW5hbGksZGVuYWxpLW5hbmQtZHQiCisgIC0gcmVnIDogc2hvdWxkIGNvbnRhaW4gcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGggZm9yIGRhdGEgYW5kIHJlZy4KKyAgLSByZWctbmFtZXM6IFNob3VsZCBjb250YWluIHRoZSByZWcgbmFtZXMgIm5hbmRfZGF0YSIgYW5kICJkZW5hbGlfcmVnIgorICAtIGludGVycnVwdHMgOiBUaGUgaW50ZXJydXB0IG51bWJlci4KKyAgLSBkbS1tYXNrIDogRE1BIGJpdCBtYXNrCisKK1RoZSBkZXZpY2UgdHJlZSBtYXkgb3B0aW9uYWxseSBjb250YWluIHN1Yi1ub2RlcyBkZXNjcmliaW5nIHBhcnRpdGlvbnMgb2YgdGhlCithZGRyZXNzIHNwYWNlLiBTZWUgcGFydGl0aW9uLnR4dCBmb3IgbW9yZSBkZXRhaWwuCisKK0V4YW1wbGVzOgorCituYW5kOiBuYW5kQGZmOTAwMDAwIHsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwxPjsKKwljb21wYXRpYmxlID0gImRlbmFsaSxkZW5hbGktbmFuZC1kdCI7CisJcmVnID0gPDB4ZmY5MDAwMDAgMHgxMDAwMDA+LCA8MHhmZmI4MDAwMCAweDEwMDAwPjsKKwlyZWctbmFtZXMgPSAibmFuZF9kYXRhIiwgImRlbmFsaV9yZWciOworCWludGVycnVwdHMgPSA8MCAxNDQgND47CisJZG1hLW1hc2sgPSA8MHhmZmZmZmZmZj47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9kaXNrb25jaGlwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvZGlza29uY2hpcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UxM2JmZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvZGlza29uY2hpcC50eHQKQEAgLTAsMCArMSwxNSBAQAorTS1TeXN0ZW1zIGFuZCBTYW5kaXNrIERpc2tPbkNoaXAgZGV2aWNlcworCitNLVN5c3RlbSBEaXNrT25DaGlwIEczCis9PT09PT09PT09PT09PT09PT09PT09CitUaGUgU2FuZGlzayAoZm9ybWVybHkgTS1TeXN0ZW1zKSBkb2NnMyBpcyBhIG5hbmQgZGV2aWNlIG9mIDY0TSB0byAyNTZNQi4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGU6IHNob3VsZCBiZSAibS1zeXN0ZW1zLGRpc2tvbmNoaXAtZzMiCisgLSByZWc6IHJlZ2lzdGVyIGJhc2UgYW5kIHNpemUKKworRXhhbXBsZToKKwlkb2NnMzogZmxhc2hAMCB7CisJCWNvbXBhdGlibGUgPSAibS1zeXN0ZW1zLGRpc2tvbmNoaXAtZzMiOworCQlyZWcgPSA8MHgwIDB4MjAwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvZWxtLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvZWxtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzE1MjhjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9lbG0udHh0CkBAIC0wLDAgKzEsMTYgQEAKK0Vycm9yIGxvY2F0aW9uIG1vZHVsZQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBNdXN0IGJlICJ0aSxhbTMzeHgtZWxtIgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgcmVnaXN0ZXJzIG1hcC4KKy0gaW50ZXJydXB0czogSW50ZXJydXB0IG51bWJlciBmb3IgdGhlIGVsbS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdGksaHdtb2RzOiBOYW1lIG9mIHRoZSBod21vZCBhc3NvY2lhdGVkIHRvIHRoZSBlbG0KKworRXhhbXBsZToKK2VsbTogZWxtQDAgeworCWNvbXBhdGlibGUgPSAidGksYW0zMzUyLWVsbSI7CisJcmVnID0gPDB4NDgwODAwMDAgMHgyMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDQ+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvZmxjdGwtbmFuZC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2ZsY3RsLW5hbmQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyN2Y0NmQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2ZsY3RsLW5hbmQudHh0CkBAIC0wLDAgKzEsNDkgQEAKK0ZMQ1RMIE5BTkQgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogInJlbmVzYXMsc2htb2JpbGUtZmxjdGwtc2g3MzcyIgorLSByZWcgOiBBZGRyZXNzIHJhbmdlIG9mIHRoZSBGTENUTAorLSBpbnRlcnJ1cHRzIDogZmxzdGUgSVJRIG51bWJlcgorLSBuYW5kLWJ1cy13aWR0aCA6IGJ1cyB3aWR0aCB0byBOQU5EIGNoaXAKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gZG1hczogRE1BIHNwZWNpZmllcihzKQorLSBkbWEtbmFtZXM6IG5hbWUgZm9yIGVhY2ggRE1BIHNwZWNpZmllci4gVmFsaWQgbmFtZXMgYXJlCisJICAgICAiZGF0YV90eCIsICJkYXRhX3J4IiwgImVjY190eCIsICJlY2NfcngiCisKK1RoZSBETUEgZmllbGRzIGFyZSBub3QgdXNlZCB5ZXQgaW4gdGhlIGRyaXZlciBidXQgYXJlIGxpc3RlZCBoZXJlIGZvcgorY29tcGxldGluZyB0aGUgYmluZGluZ3MuCisKK1RoZSBkZXZpY2UgdHJlZSBtYXkgb3B0aW9uYWxseSBjb250YWluIHN1Yi1ub2RlcyBkZXNjcmliaW5nIHBhcnRpdGlvbnMgb2YgdGhlCithZGRyZXNzIHNwYWNlLiBTZWUgcGFydGl0aW9uLnR4dCBmb3IgbW9yZSBkZXRhaWwuCisKK0V4YW1wbGU6CisKKwlmbGN0bEBlNmEzMDAwMCB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLHNobW9iaWxlLWZsY3RsLXNoNzM3MiI7CisJCXJlZyA9IDwweGU2YTMwMDAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDwweDBkODA+OworCisJCW5hbmQtYnVzLXdpZHRoID0gPDE2PjsKKworCQlkbWFzID0gPCZkbWFjIDEgLyogZGF0YV90eCAqLworCQkJJmRtYWMgMjs+IC8qIGRhdGFfcnggKi8KKwkJZG1hLW5hbWVzID0gImRhdGFfdHgiLCAiZGF0YV9yeCI7CisKKwkJc3lzdGVtQDAgeworCQkJbGFiZWwgPSAic3lzdGVtIjsKKwkJCXJlZyA9IDwweDAgMHg4MDAwMDAwPjsKKwkJfTsKKworCQl1c2VyZGF0YUA4MDAwMDAwIHsKKwkJCWxhYmVsID0gInVzZXJkYXRhIjsKKwkJCXJlZyA9IDwweDgwMDAwMDAgMHgxMDAwMDAwMD47CisJCX07CisKKwkJY2FjaGVAMTgwMDAwMDAgeworCQkJbGFiZWwgPSAiY2FjaGUiOworCQkJcmVnID0gPDB4MTgwMDAwMDAgMHg4MDAwMDAwPjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9mc2wtcXVhZHNwaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2ZzbC1xdWFkc3BpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjJhYTJmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9mc2wtcXVhZHNwaS50eHQKQEAgLTAsMCArMSwzNiBAQAorKiBGcmVlc2NhbGUgUXVhZCBTZXJpYWwgUGVyaXBoZXJhbCBJbnRlcmZhY2UoUXVhZFNQSSkKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJmc2wsdmY2MTAtcXNwaSIsICJmc2wsaW14NnN4LXFzcGkiLAorCQkgImZzbCxpbXg3ZC1xc3BpIiwgImZzbCxpbXg2dWwtcXNwaSIKKyAgLSByZWcgOiB0aGUgZmlyc3QgY29udGFpbnMgdGhlIHJlZ2lzdGVyIGxvY2F0aW9uIGFuZCBsZW5ndGgsCisgICAgICAgICAgdGhlIHNlY29uZCBjb250YWlucyB0aGUgbWVtb3J5IG1hcHBpbmcgYWRkcmVzcyBhbmQgbGVuZ3RoCisgIC0gcmVnLW5hbWVzOiBTaG91bGQgY29udGFpbiB0aGUgcmVnIG5hbWVzICJRdWFkU1BJIiBhbmQgIlF1YWRTUEktbWVtb3J5IgorICAtIGludGVycnVwdHMgOiBTaG91bGQgY29udGFpbiB0aGUgaW50ZXJydXB0IGZvciB0aGUgZGV2aWNlCisgIC0gY2xvY2tzIDogVGhlIGNsb2NrcyBuZWVkZWQgYnkgdGhlIFF1YWRTUEkgY29udHJvbGxlcgorICAtIGNsb2NrLW5hbWVzIDogdGhlIG5hbWUgb2YgdGhlIGNsb2NrcworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIGZzbCxxc3BpLWhhcy1zZWNvbmQtY2hpcDogVGhlIGNvbnRyb2xsZXIgaGFzIHR3byBidXNlcywgYnVzIEEgYW5kIGJ1cyBCLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWFjaCBidXMgY2FuIGJlIGNvbm5lY3RlZCB3aXRoIHR3byBOT1IgZmxhc2hlcy4KKwkJCSAgICAgIE1vc3Qgb2YgdGhlIHRpbWUsIGVhY2ggYnVzIG9ubHkgaGFzIG9uZSBOT1IgZmxhc2gKKwkJCSAgICAgIGNvbm5lY3RlZCwgdGhpcyBpcyB0aGUgZGVmYXVsdCBjYXNlLgorCQkJICAgICAgQnV0IGlmIHRoZXJlIGFyZSB0d28gTk9SIGZsYXNoZXMgY29ubmVjdGVkIHRvIHRoZQorCQkJICAgICAgYnVzLCB5b3Ugc2hvdWxkIGVuYWJsZSB0aGlzIHByb3BlcnR5LgorCQkJICAgICAgKFBsZWFzZSBjaGVjayB0aGUgYm9hcmQncyBzY2hlbWF0aWMuKQorCitFeGFtcGxlOgorCitxc3BpMDogcXVhZHNwaUA0MDA0NDAwMCB7CisJY29tcGF0aWJsZSA9ICJmc2wsdmY2MTAtcXNwaSI7CisJcmVnID0gPDB4NDAwNDQwMDAgMHgxMDAwPiwgPDB4MjAwMDAwMDAgMHgxMDAwMDAwMD47CisJcmVnLW5hbWVzID0gIlF1YWRTUEkiLCAiUXVhZFNQSS1tZW1vcnkiOworCWludGVycnVwdHMgPSA8MCAyNCBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwljbG9ja3MgPSA8JmNsa3MgVkY2MTBfQ0xLX1FTUEkwX0VOPiwKKwkJPCZjbGtzIFZGNjEwX0NMS19RU1BJMD47CisJY2xvY2stbmFtZXMgPSAicXNwaV9lbiIsICJxc3BpIjsKKworCWZsYXNoMDogczI1ZmwxMjhzQDAgeworCQkuLi4uCisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2ZzbC11cG0tbmFuZC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2ZzbC11cG0tbmFuZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNlNDg5NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvZnNsLXVwbS1uYW5kLnR4dApAQCAtMCwwICsxLDY3IEBACitGcmVlc2NhbGUgTG9jYWxidXMgVVBNIHByb2dyYW1tZWQgdG8gd29yayB3aXRoIE5BTkQgZmxhc2gKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJmc2wsdXBtLW5hbmQiLgorLSByZWcgOiBzaG91bGQgc3BlY2lmeSBsb2NhbGJ1cyBjaGlwIHNlbGVjdCBhbmQgc2l6ZSB1c2VkIGZvciB0aGUgY2hpcC4KKy0gZnNsLHVwbS1hZGRyLW9mZnNldCA6IFVQTSBwYXR0ZXJuIG9mZnNldCBmb3IgdGhlIGFkZHJlc3MgbGF0Y2guCistIGZzbCx1cG0tY21kLW9mZnNldCA6IFVQTSBwYXR0ZXJuIG9mZnNldCBmb3IgdGhlIGNvbW1hbmQgbGF0Y2guCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGZzbCx1cG0td2FpdC1mbGFncyA6IGFkZCBjaGlwLWRlcGVuZGVudCBzaG9ydCBkZWxheXMgYWZ0ZXIgcnVubmluZyB0aGUKKwlVUE0gcGF0dGVybiAoMHgxKSwgYWZ0ZXIgd3JpdGluZyBhIGRhdGEgYnl0ZSAoMHgyKSBvciBhZnRlcgorCXdyaXRpbmcgb3V0IGEgYnVmZmVyICgweDQpLgorLSBmc2wsdXBtLWFkZHItbGluZS1jcy1vZmZzZXRzIDogYWRkcmVzcyBvZmZzZXRzIGZvciBtdWx0aS1jaGlwIHN1cHBvcnQuCisJVGhlIGNvcnJlc3BvbmRpbmcgYWRkcmVzcyBsaW5lcyBhcmUgdXNlZCB0byBzZWxlY3QgdGhlIGNoaXAuCistIGdwaW9zIDogbWF5IHNwZWNpZnkgb3B0aW9uYWwgR1BJT3MgY29ubmVjdGVkIHRvIHRoZSBSZWFkeS1Ob3QtQnVzeSBwaW5zCisJKFIvQiMpLiBGb3IgbXVsdGktY2hpcCBkZXZpY2VzLCAibiIgR1BJTyBkZWZpbml0aW9ucyBhcmUgcmVxdWlyZWQKKwlhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiBjaGlwcy4KKy0gY2hpcC1kZWxheSA6IGNoaXAgZGVwZW5kZW50IGRlbGF5IGZvciB0cmFuc2ZlcnJpbmcgZGF0YSBmcm9tIGFycmF5IHRvCisJcmVhZCByZWdpc3RlcnMgKHRSKS4gUmVxdWlyZWQgaWYgcHJvcGVydHkgImdwaW9zIiBpcyBub3QgdXNlZAorCShSL0IjIHBpbnMgbm90IGNvbm5lY3RlZCkuCisKK0VhY2ggZmxhc2ggY2hpcCBkZXNjcmliZWQgbWF5IG9wdGlvbmFsbHkgY29udGFpbiBhZGRpdGlvbmFsIHN1Yi1ub2RlcworZGVzY3JpYmluZyBwYXJ0aXRpb25zIG9mIHRoZSBhZGRyZXNzIHNwYWNlLiBTZWUgcGFydGl0aW9uLnR4dCBmb3IgbW9yZQorZGV0YWlsLgorCitFeGFtcGxlczoKKwordXBtQDEsMCB7CisJY29tcGF0aWJsZSA9ICJmc2wsdXBtLW5hbmQiOworCXJlZyA9IDwxIDAgMT47CisJZnNsLHVwbS1hZGRyLW9mZnNldCA9IDwxNj47CisJZnNsLHVwbS1jbWQtb2Zmc2V0ID0gPDg+OworCWdwaW9zID0gPCZxZV9waW9fZSAxOCAwPjsKKworCWZsYXNoIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQljb21wYXRpYmxlID0gIi4uLiI7CisKKwkJcGFydGl0aW9uQDAgeworCQkJLi4uCisJCX07CisJfTsKK307CisKK3VwbUAzLDAgeworCSNhZGRyZXNzLWNlbGxzID0gPDA+OworCSNzaXplLWNlbGxzID0gPDA+OworCWNvbXBhdGlibGUgPSAidHFjLHRxbTg1NDgtdXBtLW5hbmQiLCAiZnNsLHVwbS1uYW5kIjsKKwlyZWcgPSA8MyAweDAgMHg4MDA+OworCWZzbCx1cG0tYWRkci1vZmZzZXQgPSA8MHgxMD47CisJZnNsLHVwbS1jbWQtb2Zmc2V0ID0gPDB4MDg+OworCS8qIE11bHRpLWNoaXAgTkFORCBkZXZpY2UgKi8KKwlmc2wsdXBtLWFkZHItbGluZS1jcy1vZmZzZXRzID0gPDB4MCAweDIwMD47CisJZnNsLHVwbS13YWl0LWZsYWdzID0gPDB4NT47CisJY2hpcC1kZWxheSA9IDwyNT47IC8vIGluIG1pY3JvLXNlY29uZHMKKworCW5hbmRAMCB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKworCQlwYXJ0aXRpb25AMCB7CisJCQkgICAgbGFiZWwgPSAiZnMiOworCQkJICAgIHJlZyA9IDwweDAwMDAwMDAwIDB4MTAwMDAwMDA+OworCQl9OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9mc21jLW5hbmQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9mc21jLW5hbmQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNjM2ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2ZzbWMtbmFuZC50eHQKQEAgLTAsMCArMSw2MCBAQAorU1QgTWljcm9lbGVjdHJvbmljcyBGbGV4aWJsZSBTdGF0aWMgTWVtb3J5IENvbnRyb2xsZXIgKEZTTUMpCitOQU5EIEludGVyZmFjZQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogInN0LHNwZWFyNjAwLWZzbWMtbmFuZCIsICJzdGVyaWNzc29uLGZzbWMtbmFuZCIKKy0gcmVnIDogQWRkcmVzcyByYW5nZSBvZiB0aGUgbXRkIGNoaXAKKy0gcmVnLW5hbWVzOiBTaG91bGQgY29udGFpbiB0aGUgcmVnIG5hbWVzICJmc21jX3JlZ3MiLCAibmFuZF9kYXRhIiwgIm5hbmRfYWRkciIgYW5kICJuYW5kX2NtZCIKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gYmFuay13aWR0aCA6IFdpZHRoIChpbiBieXRlcykgb2YgdGhlIGRldmljZS4gIElmIG5vdCBwcmVzZW50LCB0aGUgd2lkdGgKKyAgZGVmYXVsdHMgdG8gMSBieXRlCistIG5hbmQtc2tpcC1iYnRzY2FuOiBJbmRpY2F0ZXMgdGhlIEJCVCBzY2FubmluZyBzaG91bGQgYmUgc2tpcHBlZAorLSB0aW1pbmdzOiBhcnJheSBvZiA2IGJ5dGVzIGZvciBOQU5EIHRpbWluZ3MuIFRoZSBtZWFuaW5ncyBvZiB0aGVzZSBieXRlcworICBhcmU6CisgIGJ5dGUgMCBUQ0xSICA6IENMRSB0byBSRSBkZWxheSBpbiBudW1iZXIgb2YgQUhCIGNsb2NrIGN5Y2xlcywgb25seSA0IGJpdHMKKyAgICAgICAgICAgICAgICAgYXJlIHZhbGlkLiBaZXJvIG1lYW5zIG9uZSBjbG9ja2N5Y2xlLCAxNSBtZWFucyAxNiBjbG9jaworICAgICAgICAgICAgICAgICBjeWNsZXMuCisgIGJ5dGUgMSBUQVIgICA6IEFMRSB0byBSRSBkZWxheSwgNCBiaXRzIGFyZSB2YWxpZC4gU2FtZSBmb3JtYXQgYXMgVENMUi4KKyAgYnl0ZSAyIFRISVogIDogbnVtYmVyIG9mIEhDTEsgY2xvY2sgY3ljbGVzIGR1cmluZyB3aGljaCB0aGUgZGF0YSBidXMgaXMKKyAgICAgICAgICAgICAgICAga2VwdCBpbiBIaS1aICh0cmlzdGF0ZSkgYWZ0ZXIgdGhlIHN0YXJ0IG9mIGEgd3JpdGUgYWNjZXNzLgorICAgICAgICAgICAgICAgICBPbmx5IHZhbGlkIGZvciB3cml0ZSB0cmFuc2FjdGlvbnMuIFplcm8gbWVhbnMgemVybyBjeWNsZXMsCisgICAgICAgICAgICAgICAgIDI1NSBtZWFucyAyNTUgY3ljbGVzLgorICBieXRlIDMgVEhPTEQgOiBudW1iZXIgb2YgSENMSyBjbG9jayBjeWNsZXMgdG8gaG9sZCB0aGUgYWRkcmVzcyAoYW5kIGRhdGEKKyAgICAgICAgICAgICAgICAgd2hlbiB3cml0aW5nKSBhZnRlciB0aGUgY29tbWFuZCBkZWFzc2VydGF0aW9uLiBaZXJvIG1lYW5zCisgICAgICAgICAgICAgICAgIG9uZSBjeWNsZSwgMjU1IG1lYW5zIDI1NiBjeWNsZXMuCisgIGJ5dGUgNCBUV0FJVCA6IG51bWJlciBvZiBIQ0xLIGNsb2NrIGN5Y2xlcyB0byBhc3NlcnQgdGhlIGNvbW1hbmQgdG8gdGhlCisgICAgICAgICAgICAgICAgIE5BTkQgZmxhc2ggaW4gcmVzcG9uc2UgdG8gU01XQUlUbi4gWmVybyBtZWFucyAxIGN5Y2xlLAorICAgICAgICAgICAgICAgICAyNTUgbWVhbnMgMjU2IGN5Y2xlcy4KKyAgYnl0ZSA1IFRTRVQgIDogbnVtYmVyIG9mIEhDTEsgY2xvY2sgY3ljbGVzIHRvIGFzc2VydCB0aGUgYWRkcmVzcyBiZWZvcmUgdGhlCisgICAgICAgICAgICAgICAgIGNvbW1hbmQgaXMgYXNzZXJ0ZWQuIFplcm8gbWVhbnMgb25lIGN5Y2xlLCAyNTUgbWVhbnMgMjU2CisgICAgICAgICAgICAgICAgIGN5Y2xlcy4KKy0gYmFuazogZGVmYXVsdCBOQU5EIGJhbmsgdG8gdXNlICgwLTMgYXJlIHZhbGlkLCAwIGlzIHRoZSBkZWZhdWx0KS4KKy0gbmFuZC1lY2MtbW9kZSAgICAgIDogc2VlIG5hbmQudHh0CistIG5hbmQtZWNjLXN0cmVuZ3RoICA6IHNlZSBuYW5kLnR4dAorLSBuYW5kLWVjYy1zdGVwLXNpemUgOiBzZWUgbmFuZC50eHQKKworQ2FuIHN1cHBvcnQgMS1iaXQgSFcgRUNDIChkZWZhdWx0KSBvciBpZiBzdHJvbmdlciBjb3JyZWN0aW9uIGlzIHJlcXVpcmVkLAorc29mdHdhcmUtYmFzZWQgQkNILgorCitFeGFtcGxlOgorCisJZnNtYzogZmxhc2hAZDE4MDAwMDAgeworCQljb21wYXRpYmxlID0gInN0LHNwZWFyNjAwLWZzbWMtbmFuZCI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJcmVnID0gPDB4ZDE4MDAwMDAgMHgxMDAwCS8qIEZTTUMgUmVnaXN0ZXIgKi8KKwkJICAgICAgIDB4ZDIwMDAwMDAgMHgwMDEwCS8qIE5BTkQgQmFzZSBEQVRBICovCisJCSAgICAgICAweGQyMDIwMDAwIDB4MDAxMAkvKiBOQU5EIEJhc2UgQUREUiAqLworCQkgICAgICAgMHhkMjAxMDAwMCAweDAwMTA+OwkvKiBOQU5EIEJhc2UgQ01EICovCisJCXJlZy1uYW1lcyA9ICJmc21jX3JlZ3MiLCAibmFuZF9kYXRhIiwgIm5hbmRfYWRkciIsICJuYW5kX2NtZCI7CisKKwkJYmFuay13aWR0aCA9IDwxPjsKKwkJbmFuZC1za2lwLWJidHNjYW47CisJCXRpbWluZ3MgPSAvYml0cy8gOCA8MCAwIDAgMiAzIDA+OworCQliYW5rID0gPDE+OworCisJCXBhcnRpdGlvbkAwIHsKKwkJCS4uLgorCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2dwaW8tY29udHJvbC1uYW5kLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvZ3Bpby1jb250cm9sLW5hbmQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmODkxNWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2dwaW8tY29udHJvbC1uYW5kLnR4dApAQCAtMCwwICsxLDQ3IEBACitHUElPIGFzc2lzdGVkIE5BTkQgZmxhc2gKKworVGhlIEdQSU8gYXNzaXN0ZWQgTkFORCBmbGFzaCB1c2VzIGEgbWVtb3J5IG1hcHBlZCBpbnRlcmZhY2UgdG8KK3JlYWQvd3JpdGUgdGhlIE5BTkQgY29tbWFuZHMgYW5kIGRhdGEgYW5kIEdQSU8gcGlucyBmb3IgdGhlIGNvbnRyb2wKK3NpZ25hbHMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAiZ3Bpby1jb250cm9sLW5hbmQiCistIHJlZyA6IHNob3VsZCBzcGVjaWZ5IGxvY2FsYnVzIGNoaXAgc2VsZWN0IGFuZCBzaXplIHVzZWQgZm9yIHRoZSBjaGlwLiAgVGhlCisgIHJlc291cmNlIGRlc2NyaWJlcyB0aGUgZGF0YSBidXMgY29ubmVjdGVkIHRvIHRoZSBOQU5EIGZsYXNoIGFuZCBhbGwgYWNjZXNzZXMKKyAgYXJlIG1hZGUgaW4gbmF0aXZlIGVuZGlhbm5lc3MuCistICNhZGRyZXNzLWNlbGxzLCAjc2l6ZS1jZWxscyA6IE11c3QgYmUgcHJlc2VudCBpZiB0aGUgZGV2aWNlIGhhcyBzdWItbm9kZXMKKyAgcmVwcmVzZW50aW5nIHBhcnRpdGlvbnMuCistIGdwaW9zIDogU3BlY2lmaWVzIHRoZSBHUElPIHBpbnMgdG8gY29udHJvbCB0aGUgTkFORCBkZXZpY2UuICBUaGUgb3JkZXIgb2YKKyAgR1BJTyByZWZlcmVuY2VzIGlzOiAgUkRZLCBuQ0UsIEFMRSwgQ0xFLCBhbmQgYW4gb3B0aW9uYWwgbldQLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBiYW5rLXdpZHRoIDogV2lkdGggKGluIGJ5dGVzKSBvZiB0aGUgZGV2aWNlLiAgSWYgbm90IHByZXNlbnQsIHRoZSB3aWR0aAorICBkZWZhdWx0cyB0byAxIGJ5dGUuCistIGNoaXAtZGVsYXkgOiBjaGlwIGRlcGVuZGVudCBkZWxheSBmb3IgdHJhbnNmZXJyaW5nIGRhdGEgZnJvbSBhcnJheSB0bworICByZWFkIHJlZ2lzdGVycyAodFIpLiAgSWYgbm90IHByZXNlbnQgdGhlbiBhIGRlZmF1bHQgb2YgMjB1cyBpcyB1c2VkLgorLSBncGlvLWNvbnRyb2wtbmFuZCxpby1zeW5jLXJlZyA6IEEgNjQtYml0IHBoeXNpY2FsIGFkZHJlc3MgZm9yIGEgcmVhZAorICBsb2NhdGlvbiB1c2VkIHRvIGd1YXJkIGFnYWluc3QgYnVzIHJlb3JkZXJpbmcgd2l0aCByZWdhcmRzIHRvIGFjY2Vzc2VzIHRvCisgIHRoZSBHUElPJ3MgYW5kIHRoZSBOQU5EIGZsYXNoIGRhdGEgYnVzLiAgSWYgcHJlc2VudCwgdGhlbiBhZnRlciBjaGFuZ2luZworICBHUElPIHN0YXRlIGFuZCBiZWZvcmUgYW5kIGFmdGVyIGNvbW1hbmQgYnl0ZSB3cml0ZXMsIHRoaXMgcmVnaXN0ZXIgd2lsbCBiZQorICByZWFkIHRvIGVuc3VyZSB0aGF0IHRoZSBHUElPIGFjY2Vzc2VzIGhhdmUgY29tcGxldGVkLgorCitUaGUgZGV2aWNlIHRyZWUgbWF5IG9wdGlvbmFsbHkgY29udGFpbiBzdWItbm9kZXMgZGVzY3JpYmluZyBwYXJ0aXRpb25zIG9mIHRoZQorYWRkcmVzcyBzcGFjZS4gU2VlIHBhcnRpdGlvbi50eHQgZm9yIG1vcmUgZGV0YWlsLgorCitFeGFtcGxlczoKKworZ3Bpby1uYW5kQDEsMCB7CisJY29tcGF0aWJsZSA9ICJncGlvLWNvbnRyb2wtbmFuZCI7CisJcmVnID0gPDEgMHgwMDAwIDB4Mj47CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MT47CisJZ3Bpb3MgPSA8JmJhbmthIDEgMD4sCS8qIFJEWSAqLworCQk8JmJhbmthIDIgMD4sIAkvKiBuQ0UgKi8KKwkJPCZiYW5rYSAzIDA+LCAJLyogQUxFICovCisJCTwmYmFua2EgNCAwPiwgCS8qIENMRSAqLworCQk8MD47CQkvKiBuV1AgKi8KKworCXBhcnRpdGlvbkAwIHsKKwkuLi4KKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvZ3BtYy1uYW5kLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvZ3BtYy1uYW5kLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjczM2M0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9ncG1jLW5hbmQudHh0CkBAIC0wLDAgKzEsMTM3IEBACitEZXZpY2UgdHJlZSBiaW5kaW5ncyBmb3IgR1BNQyBjb25uZWN0ZWQgTkFORHMKKworR1BNQyBjb25uZWN0ZWQgTkFORCAoZm91bmQgb24gT01BUCBib2FyZHMpIGFyZSByZXByZXNlbnRlZCBhcyBjaGlsZCBub2RlcyBvZgordGhlIEdQTUMgY29udHJvbGxlciB3aXRoIGEgbmFtZSBvZiAibmFuZCIuCisKK0FsbCB0aW1pbmcgcmVsZXZhbnQgcHJvcGVydGllcyBhcyB3ZWxsIGFzIGdlbmVyaWMgZ3BtYyBjaGlsZCBwcm9wZXJ0aWVzIGFyZQorZXhwbGFpbmVkIGluIGEgc2VwYXJhdGUgZG9jdW1lbnRzIC0gcGxlYXNlIHJlZmVyIHRvCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3RpLWdwbWMudHh0CisKK0ZvciBOQU5EIHNwZWNpZmljIHByb3BlcnRpZXMgc3VjaCBhcyBFQ0MgbW9kZXMgb3IgYnVzIHdpZHRoLCBwbGVhc2UgcmVmZXIgdG8KK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvbmFuZC50eHQKKworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgLSByZWc6CQlUaGUgQ1MgbGluZSB0aGUgcGVyaXBoZXJhbCBpcyBjb25uZWN0ZWQgdG8KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworIC0gbmFuZC1idXMtd2lkdGg6IAkJU2V0IHRoaXMgbnVtZXJpYyB2YWx1ZSB0byAxNiBpZiB0aGUgaGFyZHdhcmUKKwkJCQlpcyB3aXJlZCB0aGF0IHdheS4gSWYgbm90IHNwZWNpZmllZCwgYSBidXMKKwkJCQl3aWR0aCBvZiA4IGlzIGFzc3VtZWQuCisKKyAtIHRpLG5hbmQtZWNjLW9wdDoJCUEgc3RyaW5nIHNldHRpbmcgdGhlIEVDQyBsYXlvdXQgdG8gdXNlLiBPbmUgb2Y6CisJCSJzdyIJCTEtYml0IEhhbW1pbmcgZWNjIGNvZGUgdmlhIHNvZnR3YXJlCisJCSJodyIJCTxkZXByZWNhdGVkPiB1c2UgImhhbTEiIGluc3RlYWQKKwkJImh3LXJvbWNvZGUiCTxkZXByZWNhdGVkPiB1c2UgImhhbTEiIGluc3RlYWQKKwkJImhhbTEiCQkxLWJpdCBIYW1taW5nIGVjYyBjb2RlCisJCSJiY2g0IgkJNC1iaXQgQkNIIGVjYyBjb2RlCisJCSJiY2g4IgkJOC1iaXQgQkNIIGVjYyBjb2RlCisJCSJiY2gxNiIJCTE2LWJpdCBCQ0ggRUNDIGNvZGUKKwkJUmVmZXIgYmVsb3cgIkhvdyB0byBzZWxlY3QgY29ycmVjdCBFQ0Mgc2NoZW1lIGZvciB5b3VyIGRldmljZSA/IgorCisgLSB0aSxuYW5kLXhmZXItdHlwZToJCUEgc3RyaW5nIHNldHRpbmcgdGhlIGRhdGEgdHJhbnNmZXIgdHlwZS4gT25lIG9mOgorCisJCSJwcmVmZXRjaC1wb2xsZWQiCVByZWZldGNoIHBvbGxlZCBtb2RlIChkZWZhdWx0KQorCQkicG9sbGVkIgkJUG9sbGVkIG1vZGUsIHdpdGhvdXQgcHJlZmV0Y2gKKwkJInByZWZldGNoLWRtYSIJCVByZWZldGNoIGVuYWJsZWQgc0RNQSBtb2RlCisJCSJwcmVmZXRjaC1pcnEiCQlQcmVmZXRjaCBlbmFibGVkIGlycSBtb2RlCisKKyAtIGVsbV9pZDoJPGRlcHJlY2F0ZWQ+IHVzZSAidGksZWxtLWlkIiBpbnN0ZWFkCisgLSB0aSxlbG0taWQ6CVNwZWNpZmllcyBwaGFuZGxlIG9mIHRoZSBFTE0gZGV2aWNldHJlZSBub2RlLgorCQlFTE0gaXMgYW4gb24tY2hpcCBoYXJkd2FyZSBlbmdpbmUgb24gVEkgU29DIHdoaWNoIGlzIHVzZWQgZm9yCisJCWxvY2F0aW5nIEVDQyBlcnJvcnMgZm9yIEJDSHggYWxnb3JpdGhtcy4gU29DIGRldmljZXMgd2hpY2ggaGF2ZQorCQlFTE0gaGFyZHdhcmUgZW5naW5lcyBzaG91bGQgc3BlY2lmeSB0aGlzIGRldmljZSBub2RlIGluIC5kdHNpCisJCVVzaW5nIEVMTSBmb3IgRUNDIGVycm9yIGNvcnJlY3Rpb24gZnJlZXMgc29tZSBDUFUgY3ljbGVzLgorCitGb3IgaW5saW5lIHBhcnRpdGlvbiB0YWJsZSBwYXJzaW5nIChvcHRpb25hbCk6CisKKyAtICNhZGRyZXNzLWNlbGxzOiBzaG91bGQgYmUgc2V0IHRvIDEKKyAtICNzaXplLWNlbGxzOiBzaG91bGQgYmUgc2V0IHRvIDEKKworRXhhbXBsZSBmb3IgYW4gQU0zM3h4IGJvYXJkOgorCisJZ3BtYzogZ3BtY0A1MDAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAidGksYW0zMzUyLWdwbWMiOworCQl0aSxod21vZHMgPSAiZ3BtYyI7CisJCXJlZyA9IDwweDUwMDAwMDAwIDB4MTAwMDAwMD47CisJCWludGVycnVwdHMgPSA8MTAwPjsKKwkJZ3BtYyxudW0tY3MgPSA8OD47CisJCWdwbWMsbnVtLXdhaXRwaW5zID0gPDI+OworCQkjYWRkcmVzcy1jZWxscyA9IDwyPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCXJhbmdlcyA9IDwwIDAgMHgwODAwMDAwMCAweDIwMDA+OwkvKiBDUzA6IE5BTkQgKi8KKwkJZWxtX2lkID0gPCZlbG0+OworCisJCW5hbmRAMCwwIHsKKwkJCXJlZyA9IDwwIDAgMD47IC8qIENTMCwgb2Zmc2V0IDAgKi8KKwkJCW5hbmQtYnVzLXdpZHRoID0gPDE2PjsKKwkJCXRpLG5hbmQtZWNjLW9wdCA9ICJiY2g4IjsKKwkJCXRpLG5hbmQteGZlci10eXBlID0gInBvbGxlZCI7CisKKwkJCWdwbWMsc3luYy1jbGstcHMgPSA8MD47CisJCQlncG1jLGNzLW9uLW5zID0gPDA+OworCQkJZ3BtYyxjcy1yZC1vZmYtbnMgPSA8NDQ+OworCQkJZ3BtYyxjcy13ci1vZmYtbnMgPSA8NDQ+OworCQkJZ3BtYyxhZHYtb24tbnMgPSA8Nj47CisJCQlncG1jLGFkdi1yZC1vZmYtbnMgPSA8MzQ+OworCQkJZ3BtYyxhZHYtd3Itb2ZmLW5zID0gPDQ0PjsKKwkJCWdwbWMsd2Utb2ZmLW5zID0gPDQwPjsKKwkJCWdwbWMsb2Utb2ZmLW5zID0gPDU0PjsKKwkJCWdwbWMsYWNjZXNzLW5zID0gPDY0PjsKKwkJCWdwbWMscmQtY3ljbGUtbnMgPSA8ODI+OworCQkJZ3BtYyx3ci1jeWNsZS1ucyA9IDw4Mj47CisJCQlncG1jLHdyLWFjY2Vzcy1ucyA9IDw0MD47CisJCQlncG1jLHdyLWRhdGEtbXV4LWJ1cy1ucyA9IDwwPjsKKworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwxPjsKKworCQkJLyogcGFydGl0aW9ucyBnbyBoZXJlICovCisJCX07CisJfTsKKworSG93IHRvIHNlbGVjdCBjb3JyZWN0IEVDQyBzY2hlbWUgZm9yIHlvdXIgZGV2aWNlID8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitIaWdoZXIgRUNDIHNjaGVtZSB1c3VhbGx5IG1lYW5zIGJldHRlciBwcm90ZWN0aW9uIGFnYWluc3QgYml0LWZsaXBzIGFuZAoraW5jcmVhc2VkIHN5c3RlbSBsaWZldGltZS4gSG93ZXZlciwgc2VsZWN0aW9uIG9mIEVDQyBzY2hlbWUgaXMgZGVwZW5kZW50CitvbiB2YXJpb3VzIG90aGVyIGZhY3RvcnMgYWxzbyBsaWtlOworCisoMSkgc3VwcG9ydCBvZiBidWlsdCBpbiBoYXJkd2FyZSBlbmdpbmVzLgorCVNvbWUgbGVnYWN5IE9NQVAgU29DIGRvIG5vdCBoYXZlIEVMTSBoYXJ3YXJlIGVuZ2luZSwgc28gdGhvc2UgU29DIGNhbm5vdAorCXN1cHBvcnQgZWNjLXNjaGVtZXMgd2l0aCBoYXJkd2FyZSBlcnJvci1jb3JyZWN0aW9uIChCQ0h4X0hXKS4gSG93ZXZlcgorCXN1Y2ggU29DIGNhbiB1c2UgZWNjLXNjaGVtZXMgd2l0aCBzb2Z0d2FyZSBsaWJyYXJ5IGZvciBlcnJvci1jb3JyZWN0aW9uCisJKEJDSHhfSFdfREVURUNUSU9OX1NXKS4gVGhlIGVycm9yIGNvcnJlY3Rpb24gY2FwYWJpbGl0eSB3aXRoIHNvZnR3YXJlCisJbGlicmFyeSByZW1haW5zIGVxdWl2YWxlbnQgdG8gdGhlaXIgaGFyZHdhcmUgY291bnRlci1wYXJ0LCBidXQgdGhlcmUgaXMKKwlzbGlnaHQgQ1BVIHBlbmFsdHkgd2hlbiB0b28gbWFueSBiaXQtZmxpcHMgYXJlIGRldGVjdGVkIGR1cmluZyByZWFkcy4KKworKDIpIERldmljZSBwYXJhbWV0ZXJzIGxpa2UgT09CU0laRS4KKwlPdGhlciBmYWN0b3Igd2hpY2ggZ292ZXJucyB0aGUgc2VsZWN0aW9uIG9mIGVjYy1zY2hlbWUgaXMgb29iLXNpemUuCisJSGlnaGVyIEVDQyBzY2hlbWVzIHJlcXVpcmUgbW9yZSBPT0IvU3BhcmUgYXJlYSB0byBzdG9yZSBFQ0Mgc3luZHJvbWUsCisJc28gdGhlIGRldmljZSBzaG91bGQgaGF2ZSBlbm91Z2ggZnJlZSBieXRlcyBhdmFpbGFibGUgaXRzIE9PQi9TcGFyZQorCWFyZWEgdG8gYWNjb21tb2RhdGUgRUNDIGZvciBlbnRpcmUgcGFnZS4gSW4gZ2VuZXJhbCBmb2xsb3dpbmcgZXhwcmVzc2lvbgorCWhlbHBzIGluIGRldGVybWluaW5nIGlmIGdpdmVuIGRldmljZSBjYW4gYWNjb21tb2RhdGUgRUNDIHN5bmRyb21lOgorCSIyICsgKFBBR0VTSVpFIC8gNTEyKSAqIEVDQ19CWVRFUyIgPj0gT09CU0laRSIKKwl3aGVyZQorCQlPT0JTSVpFCQludW1iZXIgb2YgYnl0ZXMgaW4gT09CL3NwYXJlIGFyZWEKKwkJUEFHRVNJWkUJbnVtYmVyIG9mIGJ5dGVzIGluIG1haW4tYXJlYSBvZiBkZXZpY2UgcGFnZQorCQlFQ0NfQllURVMJbnVtYmVyIG9mIEVDQyBieXRlcyBnZW5lcmF0ZWQgdG8gcHJvdGVjdAorCQkgICAgICAgICAgICAgICAgNTEyIGJ5dGVzIG9mIGRhdGEsIHdoaWNoIGlzOgorCQkJCSczJyBmb3IgSEFNMV94eCBlY2Mgc2NoZW1lcworCQkJCSc3JyBmb3IgQkNINF94eCBlY2Mgc2NoZW1lcworCQkJCScxNCcgZm9yIEJDSDhfeHggZWNjIHNjaGVtZXMKKwkJCQknMjYnIGZvciBCQ0gxNl94eCBlY2Mgc2NoZW1lcworCisJRXhhbXBsZShhKTogRm9yIGEgZGV2aWNlIHdpdGggUEFHRVNJWkUgPSAyMDQ4IGFuZCBPT0JTSVpFID0gNjQgYW5kCisJCXRyeWluZyB0byB1c2UgQkNIMTYgKEVDQ19CWVRFUz0yNikgZWNjLXNjaGVtZS4KKwkJTnVtYmVyIG9mIEVDQyBieXRlcyBwZXIgcGFnZSA9ICgyICsgKDIwNDggLyA1MTIpICogMjYpID0gMTA2IEIKKwkJd2hpY2ggaXMgZ3JlYXRlciB0aGFuIGNhcGFjaXR5IG9mIE5BTkQgZGV2aWNlIChPT0JTSVpFPTY0KQorCQlIZW5jZSwgQkNIMTYgY2Fubm90IGJlIHN1cHBvcnRlZCBvbiBnaXZlbiBkZXZpY2UuIEJ1dCBpdCBjYW4KKwkJcHJvYmFibHkgdXNlIGxvd2VyIGVjYy1zY2hlbWVzIGxpa2UgQkNIOC4KKworCUV4YW1wbGUoYik6IEZvciBhIGRldmljZSB3aXRoIFBBR0VTSVpFID0gMjA0OCBhbmQgT09CU0laRSA9IDEyOCBhbmQKKwkJdHJ5aW5nIHRvIHVzZSBCQ0gxNiAoRUNDX0JZVEVTPTI2KSBlY2Mtc2NoZW1lLgorCQlOdW1iZXIgb2YgRUNDIGJ5dGVzIHBlciBwYWdlID0gKDIgKyAoMjA0OCAvIDUxMikgKiAyNikgPSAxMDYgQgorCQl3aGljaCBjYW4gYmUgYWNjb21tb2RhdGVkIGluIHRoZSBPT0IvU3BhcmUgYXJlYSBvZiB0aGlzIGRldmljZQorCQkoT09CU0laRT0xMjgpLiBTbyB0aGlzIGRldmljZSBjYW4gdXNlIEJDSDE2IGVjYy1zY2hlbWUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2dwbWMtbm9yLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvZ3BtYy1ub3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4MjhjMTcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2dwbWMtbm9yLnR4dApAQCAtMCwwICsxLDk4IEBACitEZXZpY2UgdHJlZSBiaW5kaW5ncyBmb3IgTk9SIGZsYXNoIGNvbm5lY3QgdG8gVEkgR1BNQworCitOT1IgZmxhc2ggY29ubmVjdGVkIHRvIHRoZSBUSSBHUE1DIChmb3VuZCBvbiBPTUFQIGJvYXJkcykgYXJlIHJlcHJlc2VudGVkIGFzCitjaGlsZCBub2RlcyBvZiB0aGUgR1BNQyBjb250cm9sbGVyIHdpdGggYSBuYW1lIG9mICJub3IiLgorCitBbGwgdGltaW5nIHJlbGV2YW50IHByb3BlcnRpZXMgYXMgd2VsbCBhcyBnZW5lcmljIEdQTUMgY2hpbGQgcHJvcGVydGllcyBhcmUKK2V4cGxhaW5lZCBpbiBhIHNlcGFyYXRlIGRvY3VtZW50cy4gUGxlYXNlIHJlZmVyIHRvCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3RpLWdwbWMudHh0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGJhbmstd2lkdGg6IAkJV2lkdGggb2YgTk9SIGZsYXNoIGluIGJ5dGVzLiBHUE1DIHN1cHBvcnRzIDgtYml0IGFuZAorCQkJMTYtYml0IGRldmljZXMgYW5kIHNvIG11c3QgYmUgZWl0aGVyIDEgb3IgMiBieXRlcy4KKy0gY29tcGF0aWJsZToJCURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvbXRkLXBoeXNtYXAudHh0CistIGdwbWMsY3Mtb24tbnM6CQlDaGlwLXNlbGVjdCBhc3NlcnRpb24gdGltZQorLSBncG1jLGNzLXJkLW9mZi1uczoJQ2hpcC1zZWxlY3QgZGUtYXNzZXJ0aW9uIHRpbWUgZm9yIHJlYWRzCistIGdwbWMsY3Mtd3Itb2ZmLW5zOglDaGlwLXNlbGVjdCBkZS1hc3NlcnRpb24gdGltZSBmb3Igd3JpdGVzCistIGdwbWMsb2Utb24tbnM6CU91dHB1dC1lbmFibGUgYXNzZXJ0aW9uIHRpbWUKKy0gZ3BtYyxvZS1vZmYtbnM6CU91dHB1dC1lbmFibGUgZGUtYXNzZXJ0aW9uIHRpbWUKKy0gZ3BtYyx3ZS1vbi1ucwkJV3JpdGUtZW5hYmxlIGFzc2VydGlvbiB0aW1lCistIGdwbWMsd2Utb2ZmLW5zOglXcml0ZS1lbmFibGUgZGUtYXNzZXJ0aW9uIHRpbWUKKy0gZ3BtYyxhY2Nlc3MtbnM6CVN0YXJ0IGN5Y2xlIHRvIGZpcnN0IGRhdGEgY2FwdHVyZSAocmVhZCBhY2Nlc3MpCistIGdwbWMscmQtY3ljbGUtbnM6CVRvdGFsIHJlYWQgY3ljbGUgdGltZQorLSBncG1jLHdyLWN5Y2xlLW5zOglUb3RhbCB3cml0ZSBjeWNsZSB0aW1lCistIGxpbnV4LG10ZC1uYW1lOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL210ZC1waHlzbWFwLnR4dAorLSByZWc6CQkJQ2hpcC1zZWxlY3QsIGJhc2UgYWRkcmVzcyAocmVsYXRpdmUgdG8gY2hpcC1zZWxlY3QpCisJCQlhbmQgc2l6ZSBvZiBOT1IgZmxhc2guIE5vdGUgdGhhdCBiYXNlIGFkZHJlc3Mgd2lsbCBiZQorCQkJdHlwaWNhbGx5IDAgYXMgdGhpcyBpcyB0aGUgc3RhcnQgb2YgdGhlIGNoaXAtc2VsZWN0LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBncG1jLFhYWAkJQWRkaXRpb25hbCBHUE1DIHRpbWluZ3MgYW5kIHNldHRpbmdzIHBhcmFtZXRlcnMuIFNlZQorCQkJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy90aS1ncG1jLnR4dAorCitPcHRpb25hbCBwcm9wZXJ0aWVzIGZvciBwYXJ0aXRpb24gdGFibGUgcGFyc2luZzoKKy0gI2FkZHJlc3MtY2VsbHM6IHNob3VsZCBiZSBzZXQgdG8gMQorLSAjc2l6ZS1jZWxsczogc2hvdWxkIGJlIHNldCB0byAxCisKK0V4YW1wbGU6CisKK2dwbWM6IGdwbWNANmUwMDAwMDAgeworCWNvbXBhdGlibGUgPSAidGksb21hcDM0MzAtZ3BtYyIsICJzaW1wbGUtYnVzIjsKKwl0aSxod21vZHMgPSAiZ3BtYyI7CisJcmVnID0gPDB4NmUwMDAwMDAgMHgxMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDIwPjsKKwlncG1jLG51bS1jcyA9IDw4PjsKKwlncG1jLG51bS13YWl0cGlucyA9IDw0PjsKKwkjYWRkcmVzcy1jZWxscyA9IDwyPjsKKwkjc2l6ZS1jZWxscyA9IDwxPjsKKworCXJhbmdlcyA9IDwwIDAgMHgxMDAwMDAwMCAweDA4MDAwMDAwPjsKKworCW5vckAwLDAgeworCQljb21wYXRpYmxlID0gImNmaS1mbGFzaCI7CisJCWxpbnV4LG10ZC1uYW1lPSAiaW50ZWwscGY0OGY2MDAwbTB5MWJlIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQlyZWcgPSA8MCAwIDB4MDgwMDAwMDA+OworCQliYW5rLXdpZHRoID0gPDI+OworCisJCWdwbWMsbXV4LWFkZC1kYXRhOworCQlncG1jLGNzLW9uLW5zID0gPDA+OworCQlncG1jLGNzLXJkLW9mZi1ucyA9IDwxODY+OworCQlncG1jLGNzLXdyLW9mZi1ucyA9IDwxODY+OworCQlncG1jLGFkdi1vbi1ucyA9IDwxMj47CisJCWdwbWMsYWR2LXJkLW9mZi1ucyA9IDw0OD47CisJCWdwbWMsYWR2LXdyLW9mZi1ucyA9IDw0OD47CisJCWdwbWMsb2Utb24tbnMgPSA8NTQ+OworCQlncG1jLG9lLW9mZi1ucyA9IDwxNjg+OworCQlncG1jLHdlLW9uLW5zID0gPDU0PjsKKwkJZ3BtYyx3ZS1vZmYtbnMgPSA8MTY4PjsKKwkJZ3BtYyxyZC1jeWNsZS1ucyA9IDwxODY+OworCQlncG1jLHdyLWN5Y2xlLW5zID0gPDE4Nj47CisJCWdwbWMsYWNjZXNzLW5zID0gPDExND47CisJCWdwbWMscGFnZS1idXJzdC1hY2Nlc3MtbnMgPSA8Nj47CisJCWdwbWMsYnVzLXR1cm5hcm91bmQtbnMgPSA8MTI+OworCQlncG1jLGN5Y2xlMmN5Y2xlLWRlbGF5LW5zID0gPDE4PjsKKwkJZ3BtYyx3ci1kYXRhLW11eC1idXMtbnMgPSA8OTA+OworCQlncG1jLHdyLWFjY2Vzcy1ucyA9IDwxODY+OworCQlncG1jLGN5Y2xlMmN5Y2xlLXNhbWVjc2VuOworCQlncG1jLGN5Y2xlMmN5Y2xlLWRpZmZjc2VuOworCisJCXBhcnRpdGlvbkAwIHsKKwkJCWxhYmVsID0gImJvb3Rsb2FkZXItbm9yIjsKKwkJCXJlZyA9IDwwIDB4NDAwMDA+OworCQl9OworCQlwYXJ0aXRpb25AMHg0MDAwMCB7CisJCQlsYWJlbCA9ICJwYXJhbXMtbm9yIjsKKwkJCXJlZyA9IDwweDQwMDAwIDB4NDAwMDA+OworCQl9OworCQlwYXJ0aXRpb25AMHg4MDAwMCB7CisJCQlsYWJlbCA9ICJrZXJuZWwtbm9yIjsKKwkJCXJlZyA9IDwweDgwMDAwIDB4MjAwMDAwPjsKKwkJfTsKKwkJcGFydGl0aW9uQDB4MjgwMDAwIHsKKwkJCWxhYmVsID0gImZpbGVzeXN0ZW0tbm9yIjsKKwkJCXJlZyA9IDwweDI0MDAwMCAweDdkODAwMDA+OworCQl9OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9ncG1jLW9uZW5hbmQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9ncG1jLW9uZW5hbmQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkOGZhNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2dwbWMtb25lbmFuZC50eHQKQEAgLTAsMCArMSw0NiBAQAorRGV2aWNlIHRyZWUgYmluZGluZ3MgZm9yIEdQTUMgY29ubmVjdGVkIE9uZU5BTkRzCisKK0dQTUMgY29ubmVjdGVkIE9uZU5BTkQgKGZvdW5kIG9uIE9NQVAgYm9hcmRzKSBhcmUgcmVwcmVzZW50ZWQgYXMgY2hpbGQgbm9kZXMgb2YKK3RoZSBHUE1DIGNvbnRyb2xsZXIgd2l0aCBhIG5hbWUgb2YgIm9uZW5hbmQiLgorCitBbGwgdGltaW5nIHJlbGV2YW50IHByb3BlcnRpZXMgYXMgd2VsbCBhcyBnZW5lcmljIGdwbWMgY2hpbGQgcHJvcGVydGllcyBhcmUKK2V4cGxhaW5lZCBpbiBhIHNlcGFyYXRlIGRvY3VtZW50cyAtIHBsZWFzZSByZWZlciB0bworRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy90aS1ncG1jLnR4dAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgLSByZWc6CQkJVGhlIENTIGxpbmUgdGhlIHBlcmlwaGVyYWwgaXMgY29ubmVjdGVkIHRvCisgLSBncG1jLGRldmljZS13aWR0aAlXaWR0aCBvZiB0aGUgT05FTkFORCBkZXZpY2UgY29ubmVjdGVkIHRvIHRoZSBHUE1DCisJCQlpbiBieXRlcy4gTXVzdCBiZSAxIG9yIDIuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKyAtIGRtYS1jaGFubmVsOgkJRE1BIENoYW5uZWwgaW5kZXgKKworRm9yIGlubGluZSBwYXJ0aXRpb24gdGFibGUgcGFyc2luZyAob3B0aW9uYWwpOgorCisgLSAjYWRkcmVzcy1jZWxsczogc2hvdWxkIGJlIHNldCB0byAxCisgLSAjc2l6ZS1jZWxsczogc2hvdWxkIGJlIHNldCB0byAxCisKK0V4YW1wbGUgZm9yIGFuIE9NQVAzNDMwIGJvYXJkOgorCisJZ3BtYzogZ3BtY0A2ZTAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAidGksb21hcDM0MzAtZ3BtYyI7CisJCXRpLGh3bW9kcyA9ICJncG1jIjsKKwkJcmVnID0gPDB4NmUwMDAwMDAgMHgxMDAwMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwyMD47CisJCWdwbWMsbnVtLWNzID0gPDg+OworCQlncG1jLG51bS13YWl0cGlucyA9IDw0PjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mj47CisJCSNzaXplLWNlbGxzID0gPDE+OworCisJCW9uZW5hbmRAMCB7CisJCQlyZWcgPSA8MCAwIDA+OyAvKiBDUzAsIG9mZnNldCAwICovCisJCQlncG1jLGRldmljZS13aWR0aCA9IDwyPjsKKworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwxPjsKKworCQkJLyogcGFydGl0aW9ucyBnbyBoZXJlICovCisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvZ3BtaS1uYW5kLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvZ3BtaS1uYW5kLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDJhY2FmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9ncG1pLW5hbmQudHh0CkBAIC0wLDAgKzEsNTggQEAKKyogRnJlZXNjYWxlIEdlbmVyYWwtUHVycG9zZSBNZWRpYSBJbnRlcmZhY2UgKEdQTUkpCisKK1RoZSBHUE1JIG5hbmQgY29udHJvbGxlciBwcm92aWRlcyBhbiBpbnRlcmZhY2UgdG8gY29udHJvbCB0aGUKK05BTkQgZmxhc2ggY2hpcHMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiZnNsLDxjaGlwPi1ncG1pLW5hbmQiCisgIC0gcmVnIDogc2hvdWxkIGNvbnRhaW4gcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGggZm9yIGdwbWkgYW5kIGJjaC4KKyAgLSByZWctbmFtZXM6IFNob3VsZCBjb250YWluIHRoZSByZWcgbmFtZXMgImdwbWktbmFuZCIgYW5kICJiY2giCisgIC0gaW50ZXJydXB0cyA6IEJDSCBpbnRlcnJ1cHQgbnVtYmVyLgorICAtIGludGVycnVwdC1uYW1lcyA6IFNob3VsZCBiZSAiYmNoIi4KKyAgLSBkbWFzOiBETUEgc3BlY2lmaWVyLCBjb25zaXN0aW5nIG9mIGEgcGhhbmRsZSB0byBETUEgY29udHJvbGxlciBub2RlCisgICAgYW5kIEdQTUkgRE1BIGNoYW5uZWwgSUQuCisgICAgUmVmZXIgdG8gZG1hLnR4dCBhbmQgZnNsLW14cy1kbWEudHh0IGZvciBkZXRhaWxzLgorICAtIGRtYS1uYW1lczogTXVzdCBiZSAicngtdHgiLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIG5hbmQtb24tZmxhc2gtYmJ0OiBib29sZWFuIHRvIGVuYWJsZSBvbiBmbGFzaCBiYnQgb3B0aW9uIGlmIG5vdAorICAgICAgICAgICAgICAgICAgICAgICBwcmVzZW50IGZhbHNlCisgIC0gZnNsLHVzZS1taW5pbXVtLWVjYzogUHJvdGVjdCB0aGlzIE5BTkQgZmxhc2ggd2l0aCB0aGUgbWluaW11bSBFQ0MKKyAgICAgICAgICAgICAgICAgICAgICAgc3RyZW5ndGggcmVxdWlyZWQuIFRoZSByZXF1aXJlZCBFQ0Mgc3RyZW5ndGggaXMKKyAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBkaXNjb3ZlcmFibGUgZm9yIHNvbWUgZmxhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4sIGFjY29yZGluZyB0byB0aGUgT05GSSBzdGFuZGFyZCkuCisgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIG5vdGUgdGhhdCBpZiB0aGlzIHN0cmVuZ3RoIGlzIG5vdAorICAgICAgICAgICAgICAgICAgICAgICBkaXNjb3ZlcmFibGUgb3IgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNvZnR3YXJlIG1heSBjaG9vc2VzIGFuIGltcGxlbWVudGF0aW9uLWRlZmluZWQKKyAgICAgICAgICAgICAgICAgICAgICAgRUNDIHNjaGVtZS4KKyAgLSBmc2wsbm8tYmxvY2ttYXJrLXN3YXA6IERvbid0IHN3YXAgdGhlIGJhZCBibG9jayBtYXJrZXIgZnJvbSB0aGUgT09CCisgICAgICAgICAgICAgICAgICAgICAgIGFyZWEgd2l0aCB0aGUgYnl0ZSBpbiB0aGUgZGF0YSBhcmVhIGJ1dCByZWx5IG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICBmbGFzaCBiYXNlZCBCQlQgZm9yIGlkZW50aWZ5aW5nIGJhZCBibG9ja3MuCisgICAgICAgICAgICAgICAgICAgICAgIE5PVEU6IHRoaXMgaXMgb25seSB2YWxpZCBpbiBjb25qdW5jdGlvbiB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduYW5kLW9uLWZsYXNoLWJidCcuCisgICAgICAgICAgICAgICAgICAgICAgIFdBUk5JTkc6IG9uIGkuTVgyOCBibG9ja21hcmsgc3dhcHBpbmcgY2Fubm90IGJlCisgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkIGZvciB0aGUgQm9vdFJPTSBpbiB0aGUgRkNCLiBUaHVzLAorICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aXRpb25zIHdyaXR0ZW4gZnJvbSBMaW51eCB3aXRoIHRoaXMgZmVhdHVyZQorICAgICAgICAgICAgICAgICAgICAgICB0dXJuZWQgb24gbWF5IG5vdCBiZSBhY2Nlc3NpYmxlIGJ5IHRoZSBCb290Uk9NCisgICAgICAgICAgICAgICAgICAgICAgIGNvZGUuCisKK1RoZSBkZXZpY2UgdHJlZSBtYXkgb3B0aW9uYWxseSBjb250YWluIHN1Yi1ub2RlcyBkZXNjcmliaW5nIHBhcnRpdGlvbnMgb2YgdGhlCithZGRyZXNzIHNwYWNlLiBTZWUgcGFydGl0aW9uLnR4dCBmb3IgbW9yZSBkZXRhaWwuCisKK0V4YW1wbGVzOgorCitncG1pLW5hbmRAODAwMGMwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDI4LWdwbWktbmFuZCI7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MT47CisJcmVnID0gPDB4ODAwMGMwMDAgMjAwMD4sIDwweDgwMDBhMDAwIDIwMDA+OworCXJlZy1uYW1lcyA9ICJncG1pLW5hbmQiLCAiYmNoIjsKKwlpbnRlcnJ1cHRzID0gPDQxPjsKKwlpbnRlcnJ1cHQtbmFtZXMgPSAiYmNoIjsKKwlkbWFzID0gPCZkbWFfYXBiaCA0PjsKKwlkbWEtbmFtZXMgPSAicngtdHgiOworCisJcGFydGl0aW9uQDAgeworCS4uLgorCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9oaXNpNTA0LW5hbmQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9oaXNpNTA0LW5hbmQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlMzVmMDYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2hpc2k1MDQtbmFuZC50eHQKQEAgLTAsMCArMSw0NyBAQAorSGlzaWxpY29uIEhpcDA0IFNvYyBOQU5EIGNvbnRyb2xsZXIgRFQgYmluZGluZworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6ICAgICAgICAgIFNob3VsZCBiZSAiaGlzaWxpY29uLDUwNC1uZmMiLgorLSByZWc6ICAgICAgICAgICAgICAgICBUaGUgZmlyc3QgY29udGFpbnMgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBzaXplIG9mCisgICAgICAgICAgICAgICAgICAgICAgIE5BTkQgY29udHJvbGxlcidzIHJlZ2lzdGVycy4gVGhlIHNlY29uZCBjb250YWlucyBiYXNlCisgICAgICAgICAgICAgICAgICAgICAgIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUgb2YgTkFORCBjb250cm9sbGVyJ3MgYnVmZmVyLgorLSBpbnRlcnJ1cHRzOiAgICAgICAgICBJbnRlcnJ1cHQgbnVtYmVyIGZvciBuZmMuCistIG5hbmQtYnVzLXdpZHRoOiAgICAgIFNlZSBuYW5kLnR4dC4KKy0gbmFuZC1lY2MtbW9kZTogICAgICAgU3VwcG9ydCBub25lIGFuZCBodyBlY2MgbW9kZS4KKy0gI2FkZHJlc3MtY2VsbHM6ICAgICAgUGFydGl0aW9uIGFkZHJlc3MsIHNob3VsZCBiZSBzZXQgMS4KKy0gI3NpemUtY2VsbHM6ICAgICAgICAgUGFydGl0aW9uIHNpemUsIHNob3VsZCBiZSBzZXQgMS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworLSBuYW5kLWVjYy1zdHJlbmd0aDogICBOdW1iZXIgb2YgYml0cyB0byBjb3JyZWN0IHBlciBFQ0Mgc3RlcC4KKy0gbmFuZC1lY2Mtc3RlcC1zaXplOiAgTnVtYmVyIG9mIGRhdGEgYnl0ZXMgY292ZXJlZCBieSBhIHNpbmdsZSBFQ0Mgc3RlcC4KKworVGhlIGZvbGxvd2luZyBFQ0Mgc3RyZW5ndGggYW5kIHN0ZXAgc2l6ZSBhcmUgY3VycmVudGx5IHN1cHBvcnRlZDoKKworIC0gbmFuZC1lY2Mtc3RyZW5ndGggPSA8MTY+LCBuYW5kLWVjYy1zdGVwLXNpemUgPSA8MTAyND4KKworRmxhc2ggY2hpcCBtYXkgb3B0aW9uYWxseSBjb250YWluIGFkZGl0aW9uYWwgc3ViLW5vZGVzIGRlc2NyaWJpbmcgcGFydGl0aW9ucyBvZgordGhlIGFkZHJlc3Mgc3BhY2UuIFNlZSBwYXJ0aXRpb24udHh0IGZvciBtb3JlIGRldGFpbC4KKworRXhhbXBsZToKKworCW5hbmQ6IG5hbmRANDAyMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiaGlzaWxpY29uLDUwNC1uZmMiOworCQlyZWcgPSA8MHg0MDIwMDAwIDB4MTAwMDA+LCA8MHg1MDAwMDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MCAzNzkgND47CisJCW5hbmQtYnVzLXdpZHRoID0gPDg+OworCQluYW5kLWVjYy1tb2RlID0gImh3IjsKKwkJbmFuZC1lY2Mtc3RyZW5ndGggPSA8MTY+OworCQluYW5kLWVjYy1zdGVwLXNpemUgPSA8MTAyND47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKworCQlwYXJ0aXRpb25AMCB7CisJCQlsYWJlbCA9ICJuYW5kX3RleHQiOworCQkJcmVnID0gPDB4MDAwMDAwMDAgMHgwMDQwMDAwMD47CisJCX07CisKKwkJLi4uCisKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9qZWRlYyxzcGktbm9yLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvamVkZWMsc3BpLW5vci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJlZTY4MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvamVkZWMsc3BpLW5vci50eHQKQEAgLTAsMCArMSwzMiBAQAorKiBNVEQgU1BJIGRyaXZlciBmb3IgU1QgTTI1UHh4IChhbmQgc2ltaWxhcikgc2VyaWFsIGZsYXNoIGNoaXBzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistICNhZGRyZXNzLWNlbGxzLCAjc2l6ZS1jZWxscyA6IE11c3QgYmUgcHJlc2VudCBpZiB0aGUgZGV2aWNlIGhhcyBzdWItbm9kZXMKKyAgcmVwcmVzZW50aW5nIHBhcnRpdGlvbnMuCistIGNvbXBhdGlibGUgOiBNYXkgaW5jbHVkZSBhIGRldmljZS1zcGVjaWZpYyBzdHJpbmcgY29uc2lzdGluZyBvZiB0aGUKKyAgICAgICAgICAgICAgIG1hbnVmYWN0dXJlciBhbmQgbmFtZSBvZiB0aGUgY2hpcC4gQmVhciBpbiBtaW5kIHRoZSBEVCBiaW5kaW5nCisgICAgICAgICAgICAgICBpcyBub3QgTGludXgtb25seSwgYnV0IGluIGNhc2Ugb2YgTGludXgsIHNlZSB0aGUgIm0yNXBfaWRzIgorICAgICAgICAgICAgICAgdGFibGUgaW4gZHJpdmVycy9tdGQvZGV2aWNlcy9tMjVwODAuYyBmb3IgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkCisgICAgICAgICAgICAgICBjaGlwcy4KKyAgICAgICAgICAgICAgIE11c3QgYWxzbyBpbmNsdWRlICJqZWRlYyxzcGktbm9yIiBmb3IgYW55IFNQSSBOT1IgZmxhc2ggdGhhdCBjYW4KKyAgICAgICAgICAgICAgIGJlIGlkZW50aWZpZWQgYnkgdGhlIEpFREVDIFJFQUQgSUQgb3Bjb2RlICgweDlGKS4KKy0gcmVnIDogQ2hpcC1TZWxlY3QgbnVtYmVyCistIHNwaS1tYXgtZnJlcXVlbmN5IDogTWF4aW11bSBmcmVxdWVuY3kgb2YgdGhlIFNQSSBidXMgdGhlIGNoaXAgY2FuIG9wZXJhdGUgYXQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gbTI1cCxmYXN0LXJlYWQgOiBVc2UgdGhlICJmYXN0IHJlYWQiIG9wY29kZSB0byByZWFkIGRhdGEgZnJvbSB0aGUgY2hpcCBpbnN0ZWFkCisgICAgICAgICAgICAgICAgICAgb2YgdGhlIHVzdWFsICJyZWFkIiBvcGNvZGUuIFRoaXMgb3Bjb2RlIGlzIG5vdCBzdXBwb3J0ZWQgYnkKKyAgICAgICAgICAgICAgICAgICBhbGwgY2hpcHMgYW5kIHN1cHBvcnQgZm9yIGl0IGNhbiBub3QgYmUgZGV0ZWN0ZWQgYXQgcnVudGltZS4KKyAgICAgICAgICAgICAgICAgICBSZWZlciB0byB5b3VyIGNoaXBzJyBkYXRhc2hlZXQgdG8gY2hlY2sgaWYgdGhpcyBpcyBzdXBwb3J0ZWQKKyAgICAgICAgICAgICAgICAgICBieSB5b3VyIGNoaXAuCisKK0V4YW1wbGU6CisKKwlmbGFzaDogbTI1cDgwQDAgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCWNvbXBhdGlibGUgPSAic3BhbnNpb24sbTI1cDgwIiwgImplZGVjLHNwaS1ub3IiOworCQlyZWcgPSA8MD47CisJCXNwaS1tYXgtZnJlcXVlbmN5ID0gPDQwMDAwMDAwPjsKKwkJbTI1cCxmYXN0LXJlYWQ7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvbHBjMzJ4eC1tbGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9scGMzMnh4LW1sYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBhMzcyNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvbHBjMzJ4eC1tbGMudHh0CkBAIC0wLDAgKzEsNTAgQEAKK05YUCBMUEMzMnh4IFNvQyBOQU5EIE1MQyBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJueHAsbHBjMzIyMC1tbGMiCistIHJlZzogQWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgY29udHJvbGxlcgorLSBpbnRlcnJ1cHRzOiBUaGUgTkFORCBpbnRlcnJ1cHQgc3BlY2lmaWNhdGlvbgorLSBncGlvczogR1BJTyBzcGVjaWZpY2F0aW9uIGZvciBOQU5EIHdyaXRlIHByb3RlY3QKKworVGhlIGZvbGxvd2luZyByZXF1aXJlZCBwcm9wZXJ0aWVzIGFyZSB2ZXJ5IGNvbnRyb2xsZXIgc3BlY2lmaWMuIFNlZSB0aGUgTFBDMzJ4eAorVXNlciBNYW51YWwgNy41LjE0IE1MQyBOQU5EIFRpbWluZyBSZWdpc3RlciAodGhlIHZhbHVlcyBoZXJlIGFyZSBzcGVjaWZpZWQgaW4KK0h6LCB0byBtYWtlIHRoZW0gaW5kZXBlbmRlbnQgb2YgYWN0dWFsIGNsb2NrIHNwZWVkIGFuZCB0byBwcm92aWRlIGZvciBnb29kCithY2N1cmFjeTopCistIG54cCx0Y2VhX2RlbGF5OiBUQ0VBX0RFTEFZCistIG54cCxidXN5X2RlbGF5OiBCVVNZX0RFTEFZCistIG54cCxuYW5kX3RhOiBOQU5EX1RBCistIG54cCxyZF9oaWdoOiBSRF9ISUdICistIG54cCxyZF9sb3c6IFJEX0xPVworLSBueHAsd3JfaGlnaDogV1JfSElHSAorLSBueHAsd3JfbG93OiBXUl9MT1cKKworT3B0aW9uYWwgc3Vibm9kZXM6CistIFBhcnRpdGlvbnMsIHNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL3BhcnRpdGlvbi50eHQKKworRXhhbXBsZToKKworCW1sYzogZmxhc2hAMjAwQTgwMDAgeworCQljb21wYXRpYmxlID0gIm54cCxscGMzMjIwLW1sYyI7CisJCXJlZyA9IDwweDIwMEE4MDAwIDB4MTEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDExIDA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisKKwkJbnhwLHRjZWEtZGVsYXkgPSA8MzMzMzMzMzMzPjsKKwkJbnhwLGJ1c3ktZGVsYXkgPSA8MTAwMDAwMDA+OworCQlueHAsbmFuZC10YSA9IDwxODE4MTgxOD47CisJCW54cCxyZC1oaWdoID0gPDMxMjUwMDAwPjsKKwkJbnhwLHJkLWxvdyA9IDw0NTQ1NDU0NT47CisJCW54cCx3ci1oaWdoID0gPDQwMDAwMDAwPjsKKwkJbnhwLHdyLWxvdyA9IDw4MzMzMzMzMz47CisJCWdwaW9zID0gPCZncGlvIDUgMTkgMT47IC8qIEdQT19QMyAxOSwgYWN0aXZlIGxvdyAqLworCisJCW10ZDBAMDAwMDAwMDAgeworCQkJbGFiZWwgPSAiYm9vdCI7CisJCQlyZWcgPSA8MHgwMDAwMDAwMCAweDAwMDY0MDAwPjsKKwkJCXJlYWQtb25seTsKKwkJfTsKKworCQkuLi4KKworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2xwYzMyeHgtc2xjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvbHBjMzJ4eC1zbGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NGVkYzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2xwYzMyeHgtc2xjLnR4dApAQCAtMCwwICsxLDUyIEBACitOWFAgTFBDMzJ4eCBTb0MgTkFORCBTTEMgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAibnhwLGxwYzMyMjAtc2xjIgorLSByZWc6IEFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIGNvbnRyb2xsZXIKKy0gbmFuZC1vbi1mbGFzaC1iYnQ6IFVzZSBiYWQgYmxvY2sgdGFibGUgb24gZmxhc2gKKy0gZ3Bpb3M6IEdQSU8gc3BlY2lmaWNhdGlvbiBmb3IgTkFORCB3cml0ZSBwcm90ZWN0CisKK1RoZSBmb2xsb3dpbmcgcmVxdWlyZWQgcHJvcGVydGllcyBhcmUgdmVyeSBjb250cm9sbGVyIHNwZWNpZmljLiBTZWUgdGhlIExQQzMyeHgKK1VzZXIgTWFudWFsOgorLSBueHAsd2RyLWNsa3M6IERlbGF5IGJlZm9yZSBSZWFkeSBzaWduYWwgaXMgdGVzdGVkIG9uIHdyaXRlIChXX1JEWSkKKy0gbnhwLHJkci1jbGtzOiBEZWxheSBiZWZvcmUgUmVhZHkgc2lnbmFsIGlzIHRlc3RlZCBvbiByZWFkIChSX1JEWSkKKyhUaGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgc3BlY2lmaWVkIGluIEh6LCB0byBtYWtlIHRoZW0gaW5kZXBlbmRlbnQgb2YgYWN0dWFsCitjbG9jayBzcGVlZDopCistIG54cCx3d2lkdGg6IFdyaXRlIHB1bHNlIHdpZHRoIChXX1dJRFRIKQorLSBueHAsd2hvbGQ6IFdyaXRlIGhvbGQgdGltZSAoV19IT0xEKQorLSBueHAsd3NldHVwOiBXcml0ZSBzZXR1cCB0aW1lIChXX1NFVFVQKQorLSBueHAscndpZHRoOiBSZWFkIHB1bHNlIHdpZHRoIChSX1dJRFRIKQorLSBueHAscmhvbGQ6IFJlYWQgaG9sZCB0aW1lIChSX0hPTEQpCistIG54cCxyc2V0dXA6IFJlYWQgc2V0dXAgdGltZSAoUl9TRVRVUCkKKworT3B0aW9uYWwgc3Vibm9kZXM6CistIFBhcnRpdGlvbnMsIHNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL3BhcnRpdGlvbi50eHQKKworRXhhbXBsZToKKworCXNsYzogZmxhc2hAMjAwMjAwMDAgeworCQljb21wYXRpYmxlID0gIm54cCxscGMzMjIwLXNsYyI7CisJCXJlZyA9IDwweDIwMDIwMDAwIDB4MTAwMD47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKworCQlueHAsd2RyLWNsa3MgPSA8MTQ+OworCQlueHAsd3dpZHRoID0gPDQwMDAwMDAwPjsKKwkJbnhwLHdob2xkID0gPDEwMDAwMDAwMD47CisJCW54cCx3c2V0dXAgPSA8MTAwMDAwMDAwPjsKKwkJbnhwLHJkci1jbGtzID0gPDE0PjsKKwkJbnhwLHJ3aWR0aCA9IDw0MDAwMDAwMD47CisJCW54cCxyaG9sZCA9IDw2NjY2NjY2Nj47CisJCW54cCxyc2V0dXAgPSA8MTAwMDAwMDAwPjsKKwkJbmFuZC1vbi1mbGFzaC1iYnQ7CisJCWdwaW9zID0gPCZncGlvIDUgMTkgMT47IC8qIEdQT19QMyAxOSwgYWN0aXZlIGxvdyAqLworCisJCW10ZDBAMDAwMDAwMDAgeworCQkJbGFiZWwgPSAicGh5MzI1MC1ib290IjsKKwkJCXJlZyA9IDwweDAwMDAwMDAwIDB4MDAwNjQwMDA+OworCQkJcmVhZC1vbmx5OworCQl9OworCisJCS4uLgorCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvbXRkLXBoeXNtYXAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9tdGQtcGh5c21hcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGEwYTQ4YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvbXRkLXBoeXNtYXAudHh0CkBAIC0wLDAgKzEsODkgQEAKK0NGSSBvciBKRURFQyBtZW1vcnktbWFwcGVkIE5PUiBmbGFzaCwgTVRELVJBTSAoTlZSQU0uLi4pCisKK0ZsYXNoIGNoaXBzIChNZW1vcnkgVGVjaG5vbG9neSBEZXZpY2VzKSBhcmUgb2Z0ZW4gdXNlZCBmb3Igc29saWQgc3RhdGUKK2ZpbGUgc3lzdGVtcyBvbiBlbWJlZGRlZCBkZXZpY2VzLgorCisgLSBjb21wYXRpYmxlIDogc2hvdWxkIGNvbnRhaW4gdGhlIHNwZWNpZmljIG1vZGVsIG9mIG10ZCBjaGlwKHMpCisgICB1c2VkLCBpZiBrbm93biwgZm9sbG93ZWQgYnkgZWl0aGVyICJjZmktZmxhc2giLCAiamVkZWMtZmxhc2giLAorICAgIm10ZC1yYW0iIG9yICJtdGQtcm9tIi4KKyAtIHJlZyA6IEFkZHJlc3MgcmFuZ2Uocykgb2YgdGhlIG10ZCBjaGlwKHMpCisgICBJdCdzIHBvc3NpYmxlIHRvIChvcHRpb25hbGx5KSBkZWZpbmUgbXVsdGlwbGUgInJlZyIgdHVwbGVzIHNvIHRoYXQKKyAgIG5vbi1pZGVudGljYWwgY2hpcHMgY2FuIGJlIGRlc2NyaWJlZCBpbiBvbmUgbm9kZS4KKyAtIGJhbmstd2lkdGggOiBXaWR0aCAoaW4gYnl0ZXMpIG9mIHRoZSBiYW5rLiAgRXF1YWwgdG8gdGhlCisgICBkZXZpY2Ugd2lkdGggdGltZXMgdGhlIG51bWJlciBvZiBpbnRlcmxlYXZlZCBjaGlwcy4KKyAtIGRldmljZS13aWR0aCA6IChvcHRpb25hbCkgV2lkdGggb2YgYSBzaW5nbGUgbXRkIGNoaXAuICBJZgorICAgb21pdHRlZCwgYXNzdW1lZCB0byBiZSBlcXVhbCB0byAnYmFuay13aWR0aCcuCisgLSAjYWRkcmVzcy1jZWxscywgI3NpemUtY2VsbHMgOiBNdXN0IGJlIHByZXNlbnQgaWYgdGhlIGRldmljZSBoYXMKKyAgIHN1Yi1ub2RlcyByZXByZXNlbnRpbmcgcGFydGl0aW9ucyAoc2VlIGJlbG93KS4gIEluIHRoaXMgY2FzZQorICAgYm90aCAjYWRkcmVzcy1jZWxscyBhbmQgI3NpemUtY2VsbHMgbXVzdCBiZSBlcXVhbCB0byAxLgorIC0gbm8tdW5hbGlnbmVkLWRpcmVjdC1hY2Nlc3M6IGJvb2xlYW4gdG8gZGlzYWJsZSB0aGUgZGVmYXVsdCBkaXJlY3QKKyAgIG1hcHBpbmcgb2YgdGhlIGZsYXNoLgorICAgT24gc29tZSBwbGF0Zm9ybXMgKGUuZy4gTVBDNTIwMCkgYSBkaXJlY3QgMToxIG1hcHBpbmcgbWF5IGNhdXNlCisgICBwcm9ibGVtcyB3aXRoIEpGRlMyIHVzYWdlLCBhcyB0aGUgbG9jYWwgYnVzIChMUEIpIGRvZXNuJ3Qgc3VwcG9ydAorICAgdW5hbGlnbmVkIGFjY2Vzc2VzIGFzIGltcGxlbWVudGVkIGluIHRoZSBKRkZTMiBjb2RlIHZpYSBtZW1jcHkoKS4KKyAgIEJ5IGRlZmluaW5nICJuby11bmFsaWduZWQtZGlyZWN0LWFjY2VzcyIsIHRoZSBmbGFzaCB3aWxsIG5vdCBiZQorICAgZXhwb3NlZCBkaXJlY3RseSB0byB0aGUgTVREIHVzZXJzIChlLmcuIEpGRlMyKSBhbnkgbW9yZS4KKyAtIGxpbnV4LG10ZC1uYW1lOiBhbGxvdyB0byBzcGVjaWZ5IHRoZSBtdGQgbmFtZSBmb3IgcmV0cm8gY2FwYWJpbGl0eSB3aXRoCisgICBwaHlzbWFwLWZsYXNoIGRyaXZlcnMgYXMgYm9vdCBsb2FkZXIgcGFzcyB0aGUgbXRkIHBhcnRpdGlvbiB2aWEgdGhlIG9sZAorICAgZGV2aWNlIG5hbWUgcGh5c21hcC1mbGFzaC4KKyAtIHVzZS1hZHZhbmNlZC1zZWN0b3ItcHJvdGVjdGlvbjogYm9vbGVhbiB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGhlCisgICBhZHZhbmNlZCBzZWN0b3IgcHJvdGVjdGlvbiAoU3BhbnNpb246IFBQQiAtIFBlcnNpc3RlbnQgUHJvdGVjdGlvbgorICAgQml0cykgbG9ja2luZy4KKworRm9yIEpFREVDIGNvbXBhdGlibGUgZGV2aWNlcywgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIHByb3BlcnRpZXMKK2FyZSBkZWZpbmVkOgorCisgLSB2ZW5kb3ItaWQgOiBDb250YWlucyB0aGUgZmxhc2ggY2hpcCdzIHZlbmRvciBpZCAoMSBieXRlKS4KKyAtIGRldmljZS1pZCA6IENvbnRhaW5zIHRoZSBmbGFzaCBjaGlwJ3MgZGV2aWNlIGlkICgxIGJ5dGUpLgorCitGb3IgUk9NIGNvbXBhdGlibGUgZGV2aWNlcyAoYW5kIFJPTSBmYWxsYmFjayBmcm9tIGNmaS1mbGFzaCksIHRoZSBmb2xsb3dpbmcKK2FkZGl0aW9uYWwgKG9wdGlvbmFsKSBwcm9wZXJ0eSBpcyBkZWZpbmVkOgorCisgLSBlcmFzZS1zaXplIDogVGhlIGNoaXAncyBwaHlzaWNhbCBlcmFzZSBibG9jayBzaXplIGluIGJ5dGVzLgorCitUaGUgZGV2aWNlIHRyZWUgbWF5IG9wdGlvbmFsbHkgY29udGFpbiBzdWItbm9kZXMgZGVzY3JpYmluZyBwYXJ0aXRpb25zIG9mIHRoZQorYWRkcmVzcyBzcGFjZS4gU2VlIHBhcnRpdGlvbi50eHQgZm9yIG1vcmUgZGV0YWlsLgorCitFeGFtcGxlOgorCisJZmxhc2hAZmYwMDAwMDAgeworCQljb21wYXRpYmxlID0gImFtZCxhbTI5bHYxMjhtbCIsICJjZmktZmxhc2giOworCQlyZWcgPSA8ZmYwMDAwMDAgMDEwMDAwMDA+OworCQliYW5rLXdpZHRoID0gPDQ+OworCQlkZXZpY2Utd2lkdGggPSA8MT47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJZnNAMCB7CisJCQlsYWJlbCA9ICJmcyI7CisJCQlyZWcgPSA8MCBmODAwMDA+OworCQl9OworCQlmaXJtd2FyZUBmODAwMDAgeworCQkJbGFiZWwgPSJmaXJtd2FyZSI7CisJCQlyZWcgPSA8ZjgwMDAwIDgwMDAwPjsKKwkJCXJlYWQtb25seTsKKwkJfTsKKwl9OworCitIZXJlIGFuIGV4YW1wbGUgd2l0aCBtdWx0aXBsZSAicmVnIiB0dXBsZXM6CisKKwlmbGFzaEBmMDAwMDAwMCwwIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQljb21wYXRpYmxlID0gImludGVsLFBDNDhGNDQwMFAwVkIiLCAiY2ZpLWZsYXNoIjsKKwkJcmVnID0gPDAgMHgwMDAwMDAwMCAweDAyMDAwMDAwCisJCSAgICAgICAwIDB4MDIwMDAwMDAgMHgwMjAwMDAwMD47CisJCWJhbmstd2lkdGggPSA8Mj47CisJCXBhcnRpdGlvbkAwIHsKKwkJCWxhYmVsID0gInRlc3QtcGFydDEiOworCQkJcmVnID0gPDAgMHgwNDAwMDAwMD47CisJCX07CisJfTsKKworQW4gZXhhbXBsZSB1c2luZyBTUkFNOgorCisJc3JhbUAyLDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsazZmMTYxNnU2YSIsICJtdGQtcmFtIjsKKwkJcmVnID0gPDIgMCAweDAwMjAwMDAwPjsKKwkJYmFuay13aWR0aCA9IDwyPjsKKwl9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL214Yy1uYW5kLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvbXhjLW5hbmQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1ODMzZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL214Yy1uYW5kLnR4dApAQCAtMCwwICsxLDE5IEBACisqIEZyZWVzY2FsZSdzIG14Y19uYW5kCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJmc2wsaW14WFgtbmFuZCIKKy0gcmVnOiBhZGRyZXNzIHJhbmdlIG9mIHRoZSBuZmMgYmxvY2sKKy0gaW50ZXJydXB0czogaXJxIHRvIGJlIHVzZWQKKy0gbmFuZC1idXMtd2lkdGg6IHNlZSBuYW5kLnR4dAorLSBuYW5kLWVjYy1tb2RlOiBzZWUgbmFuZC50eHQKKy0gbmFuZC1vbi1mbGFzaC1iYnQ6IHNlZSBuYW5kLnR4dAorCitFeGFtcGxlOgorCisJbmFuZEBkODAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGlteDI3LW5hbmQiOworCQlyZWcgPSA8MHhkODAwMDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDI5PjsKKwkJbmFuZC1idXMtd2lkdGggPSA8OD47CisJCW5hbmQtZWNjLW1vZGUgPSAiaHciOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL25hbmQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9uYW5kLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTNmOTJlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9uYW5kLnR4dApAQCAtMCwwICsxLDIxIEBACisqIE1URCBnZW5lcmljIGJpbmRpbmcKKworLSBuYW5kLWVjYy1tb2RlIDogU3RyaW5nLCBvcGVyYXRpb24gbW9kZSBvZiB0aGUgTkFORCBlY2MgbW9kZS4KKyAgU3VwcG9ydGVkIHZhbHVlcyBhcmU6ICJub25lIiwgInNvZnQiLCAiaHciLCAiaHdfc3luZHJvbWUiLCAiaHdfb29iX2ZpcnN0IiwKKyAgInNvZnRfYmNoIi4KKy0gbmFuZC1idXMtd2lkdGggOiA4IG9yIDE2IGJ1cyB3aWR0aCBpZiBub3QgcHJlc2VudCA4CistIG5hbmQtb24tZmxhc2gtYmJ0OiBib29sZWFuIHRvIGVuYWJsZSBvbiBmbGFzaCBiYnQgb3B0aW9uIGlmIG5vdCBwcmVzZW50IGZhbHNlCisKKy0gbmFuZC1lY2Mtc3RyZW5ndGg6IGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2YgYml0cyB0byBjb3JyZWN0CisJCSAgICAgcGVyIEVDQyBzdGVwLgorCistIG5hbmQtZWNjLXN0ZXAtc2l6ZTogaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiBkYXRhIGJ5dGVzCisJCSAgICAgIHRoYXQgYXJlIGNvdmVyZWQgYnkgYSBzaW5nbGUgRUNDIHN0ZXAuCisKK1RoZSBFQ0Mgc3RyZW5ndGggYW5kIEVDQyBzdGVwIHNpemUgcHJvcGVydGllcyBkZWZpbmUgdGhlIGNvcnJlY3Rpb24gY2FwYWJpbGl0eQorb2YgYSBjb250cm9sbGVyLiBUb2dldGhlciwgdGhleSBzYXkgYSBjb250cm9sbGVyIGNhbiBjb3JyZWN0ICJ7c3RyZW5ndGh9IGJpdAorZXJyb3JzIHBlciB7c2l6ZX0gYnl0ZXMiLgorCitUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlc2UgcGFyYW1ldGVycyBpcyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkLCBzbyBub3QgYWxsCitpbXBsZW1lbnRhdGlvbnMgbXVzdCBzdXBwb3J0IGFsbCBwb3NzaWJsZSBjb21iaW5hdGlvbnMuIEhvd2V2ZXIsIGltcGxlbWVudGF0aW9ucworYXJlIGVuY291cmFnZWQgdG8gZnVydGhlciBzcGVjaWZ5IHRoZSB2YWx1ZShzKSB0aGV5IHN1cHBvcnQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL254cC1zcGlmaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL254cC1zcGlmaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhiNmIyNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvbnhwLXNwaWZpLnR4dApAQCAtMCwwICsxLDU4IEBACisqIE5YUCBTUEkgRmxhc2ggSW50ZXJmYWNlIChTUElGSSkKKworTlhQIFNQSUZJIGlzIGEgc3BlY2lhbGl6ZWQgU1BJIGludGVyZmFjZSBmb3Igc2VyaWFsIEZsYXNoIGRldmljZXMuCitJdCBzdXBwb3J0cyBvbmUgRmxhc2ggZGV2aWNlIHdpdGggMS0sIDItIGFuZCA0LWJpdHMgd2lkdGggaW4gU1BJCittb2RlIDAgb3IgMy4gVGhlIGNvbnRyb2xsZXIgb3BlcmF0ZXMgaW4gZWl0aGVyIGNvbW1hbmQgb3IgbWVtb3J5Cittb2RlLiBJbiBtZW1vcnkgbW9kZSB0aGUgRmxhc2ggaXMgYWNjZXNzaWJsZSBmcm9tIHRoZSBDUFUgYXMKK25vcm1hbCBtZW1vcnkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAibnhwLGxwYzE3NzMtc3BpZmkiCisgIC0gcmVnIDogdGhlIGZpcnN0IGNvbnRhaW5zIHRoZSByZWdpc3RlciBsb2NhdGlvbiBhbmQgbGVuZ3RoLAorICAgICAgICAgIHRoZSBzZWNvbmQgY29udGFpbnMgdGhlIG1lbW9yeSBtYXBwaW5nIGFkZHJlc3MgYW5kIGxlbmd0aAorICAtIHJlZy1uYW1lczogU2hvdWxkIGNvbnRhaW4gdGhlIHJlZyBuYW1lcyAic3BpZmkiIGFuZCAiZmxhc2giCisgIC0gaW50ZXJydXB0cyA6IFNob3VsZCBjb250YWluIHRoZSBpbnRlcnJ1cHQgZm9yIHRoZSBkZXZpY2UKKyAgLSBjbG9ja3MgOiBUaGUgY2xvY2tzIG5lZWRlZCBieSB0aGUgU1BJRkkgY29udHJvbGxlcgorICAtIGNsb2NrLW5hbWVzIDogU2hvdWxkIGNvbnRhaW4gdGhlIGNsb2NrIG5hbWVzICJzcGlmaSIgYW5kICJyZWciCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgLSByZXNldHMgOiBwaGFuZGxlICsgcmVzZXQgc3BlY2lmaWVyCisKK1RoZSBTUEkgRmxhc2ggbXVzdCBiZSBhIGNoaWxkIG9mIHRoZSBTUElGSSBub2RlIGFuZCBtdXN0IGhhdmUgYQorY29tcGF0aWJsZSBwcm9wZXJ0eSBhcyBzcGVjaWZpZWQgaW4gYmluZGluZ3MvbXRkL2plZGVjLHNwaS1ub3IudHh0CisKK09wdGlvbmFsbHkgaXQgY2FuIGFsc28gY29udGFpbiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMuCisgLSBzcGktY3BvbCA6IENvbnRyb2xsZXIgb25seSBzdXBwb3J0cyBtb2RlIDAgYW5kIDMgc28gZWl0aGVyCisgICAgICAgICAgICAgIGJvdGggc3BpLWNwb2wgYW5kIHNwaS1jcGhhIHNob3VsZCBiZSBwcmVzZW50IG9yCisgICAgICAgICAgICAgIG5vbmUgb2YgdGhlbQorIC0gc3BpLWNwaGEgOiBTZWUgYWJvdmUKKyAtIHNwaS1yeC1idXMtd2lkdGggOiBVc2VkIHRvIHNlbGVjdCBob3cgbWFueSBwaW5zIHRoYXQgYXJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5wdXQgb24gdGhlIGNvbnRyb2xsZXIKKworU2VlIGJpbmRpbmdzL3NwaS9zcGktYnVzLnR4dCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworRXhhbXBsZToKK3NwaWZpOiBzcGlmaUA0MDAwMzAwMCB7CisJY29tcGF0aWJsZSA9ICJueHAsbHBjMTc3My1zcGlmaSI7CisJcmVnID0gPDB4NDAwMDMwMDAgMHgxMDAwPiwgPDB4MTQwMDAwMDAgMHg0MDAwMDAwPjsKKwlyZWctbmFtZXMgPSAic3BpZmkiLCAiZmxhc2giOworCWludGVycnVwdHMgPSA8MzA+OworCWNsb2NrcyA9IDwmY2N1MSBDTEtfU1BJRkk+LCA8JmNjdTEgQ0xLX0NQVV9TUElGST47CisJY2xvY2stbmFtZXMgPSAic3BpZmkiLCAicmVnIjsKKwlyZXNldHMgPSA8JnJndSA1Mz47CisKKwlmbGFzaEAwIHsKKwkJY29tcGF0aWJsZSA9ICJqZWRlYyxzcGktbm9yIjsKKwkJc3BpLWNwb2w7CisJCXNwaS1jcGhhOworCQlzcGktcngtYnVzLXdpZHRoID0gPDQ+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisKKwkJcGFydGl0aW9uQDAgeworCQkJbGFiZWwgPSAiZGF0YSI7CisJCQlyZWcgPSA8MCAweDIwMDAwMD47CisJCX07CisJfTsKK307CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvb3Jpb24tbmFuZC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL29yaW9uLW5hbmQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkNmFiNjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL29yaW9uLW5hbmQudHh0CkBAIC0wLDAgKzEsNTAgQEAKK05BTkQgc3VwcG9ydCBmb3IgTWFydmVsbCBPcmlvbiBTb0MgcGxhdGZvcm1zCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAibWFydmVsbCxvcmlvbi1uYW5kIi4KKy0gcmVnIDogQmFzZSBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBOQU5EIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorCXJlZ2lvbgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjbGUgOiBBZGRyZXNzIGxpbmUgbnVtYmVyIGNvbm5lY3RlZCB0byBDTEUuIERlZmF1bHQgaXMgMAorLSBhbGUgOiBBZGRyZXNzIGxpbmUgbnVtYmVyIGNvbm5lY3RlZCB0byBBTEUuIERlZmF1bHQgaXMgMQorLSBiYW5rLXdpZHRoIDogV2lkdGggaW4gYnl0ZXMgb2YgdGhlIGRldmljZS4gRGVmYXVsdCBpcyAxCistIGNoaXAtZGVsYXkgOiBDaGlwIGRlcGVuZGVudCBkZWxheSBmb3IgdHJhbnNmZXJyaW5nIGRhdGEgZnJvbSBhcnJheSB0byByZWFkCisgICAgICAgICAgICAgICByZWdpc3RlcnMgaW4gdXNlY3MKKworVGhlIGRldmljZSB0cmVlIG1heSBvcHRpb25hbGx5IGNvbnRhaW4gc3ViLW5vZGVzIGRlc2NyaWJpbmcgcGFydGl0aW9ucyBvZiB0aGUKK2FkZHJlc3Mgc3BhY2UuIFNlZSBwYXJ0aXRpb24udHh0IGZvciBtb3JlIGRldGFpbC4KKworRXhhbXBsZToKKworbmFuZEBmNDAwMDAwMCB7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MT47CisJY2xlID0gPDA+OworCWFsZSA9IDwxPjsKKwliYW5rLXdpZHRoID0gPDE+OworCWNoaXAtZGVsYXkgPSA8MjU+OworCWNvbXBhdGlibGUgPSAibWFydmVsbCxvcmlvbi1uYW5kIjsKKwlyZWcgPSA8MHhmNDAwMDAwMCAweDQwMD47CisKKwlwYXJ0aXRpb25AMCB7CisJCWxhYmVsID0gInUtYm9vdCI7CisJCXJlZyA9IDwweDAwMDAwMDAgMHgxMDAwMDA+OworCQlyZWFkLW9ubHk7CisJfTsKKworCXBhcnRpdGlvbkAxMDAwMDAgeworCQlsYWJlbCA9ICJ1SW1hZ2UiOworCQlyZWcgPSA8MHgwMTAwMDAwIDB4MjAwMDAwPjsKKwl9OworCisJcGFydGl0aW9uQDMwMDAwMCB7CisJCWxhYmVsID0gImR0YiI7CisJCXJlZyA9IDwweDAzMDAwMDAgMHgxMDAwMDA+OworCX07CisKKwlwYXJ0aXRpb25ANDAwMDAwIHsKKwkJbGFiZWwgPSAicm9vdCI7CisJCXJlZyA9IDwweDA0MDAwMDAgMHg3ZDAwMDAwPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvcGFydGl0aW9uLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvcGFydGl0aW9uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzYzZTQwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9wYXJ0aXRpb24udHh0CkBAIC0wLDAgKzEsODkgQEAKK1JlcHJlc2VudGluZyBmbGFzaCBwYXJ0aXRpb25zIGluIGRldmljZXRyZWUKKworUGFydGl0aW9ucyBjYW4gYmUgcmVwcmVzZW50ZWQgYnkgc3ViLW5vZGVzIG9mIGFuIG10ZCBkZXZpY2UuIFRoaXMgY2FuIGJlIHVzZWQKK29uIHBsYXRmb3JtcyB3aGljaCBoYXZlIHN0cm9uZyBjb252ZW50aW9ucyBhYm91dCB3aGljaCBwb3J0aW9ucyBvZiBhIGZsYXNoIGFyZQordXNlZCBmb3Igd2hhdCBwdXJwb3NlcywgYnV0IHdoaWNoIGRvbid0IHVzZSBhbiBvbi1mbGFzaCBwYXJ0aXRpb24gdGFibGUgc3VjaAorYXMgUmVkQm9vdC4KKworVGhlIHBhcnRpdGlvbiB0YWJsZSBzaG91bGQgYmUgYSBzdWJub2RlIG9mIHRoZSBtdGQgbm9kZSBhbmQgc2hvdWxkIGJlIG5hbWVkCisncGFydGl0aW9ucycuIFRoaXMgbm9kZSBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnR5OgorLSBjb21wYXRpYmxlIDogKHJlcXVpcmVkKSBtdXN0IGJlICJmaXhlZC1wYXJ0aXRpb25zIgorUGFydGl0aW9ucyBhcmUgdGhlbiBkZWZpbmVkIGluIHN1Ym5vZGVzIG9mIHRoZSBwYXJ0aXRpb25zIG5vZGUuCisKK0ZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBwYXJ0aXRpb25zIGFzIGRpcmVjdCBzdWJub2RlcyBvZiB0aGUgbXRkIGRldmljZSBhcmUKK3N1cHBvcnRlZC4gVGhpcyB1c2UgaXMgZGlzY291cmFnZWQuCitOT1RFOiBhbHNvIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgZGlyZWN0IHN1Ym5vZGVzIHRoYXQgaGF2ZSBhIGNvbXBhdGlibGUKK3N0cmluZyBhcmUgbm90IGNvbnNpZGVyZWQgcGFydGl0aW9ucywgYXMgdGhleSBtYXkgYmUgdXNlZCBmb3Igb3RoZXIgYmluZGluZ3MuCisKKyNhZGRyZXNzLWNlbGxzICYgI3NpemUtY2VsbHMgbXVzdCBib3RoIGJlIHByZXNlbnQgaW4gdGhlIHBhcnRpdGlvbnMgc3Vibm9kZSBvZiB0aGUKK210ZCBkZXZpY2UuIFRoZXJlIGFyZSB0d28gdmFsaWQgdmFsdWVzIGZvciBib3RoOgorPDE+OiBmb3IgcGFydGl0aW9ucyB0aGF0IHJlcXVpcmUgYSBzaW5nbGUgMzItYml0IGNlbGwgdG8gcmVwcmVzZW50IHRoZWlyCisgICAgIHNpemUvYWRkcmVzcyAoYWthIHRoZSB2YWx1ZSBpcyBiZWxvdyA0IEdpQikKKzwyPjogZm9yIHBhcnRpdGlvbnMgdGhhdCByZXF1aXJlIHR3byAzMi1iaXQgY2VsbHMgdG8gcmVwcmVzZW50IHRoZWlyCisgICAgIHNpemUvYWRkcmVzcyAoYWthIHRoZSB2YWx1ZSBpcyA0IEdpQiBvciBncmVhdGVyKS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gcmVnIDogVGhlIHBhcnRpdGlvbidzIG9mZnNldCBhbmQgc2l6ZSB3aXRoaW4gdGhlIG10ZCBiYW5rLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBsYWJlbCA6IFRoZSBsYWJlbCAvIG5hbWUgZm9yIHRoaXMgcGFydGl0aW9uLiAgSWYgb21pdHRlZCwgdGhlIGxhYmVsIGlzIHRha2VuCisgIGZyb20gdGhlIG5vZGUgbmFtZSAoZXhjbHVkaW5nIHRoZSB1bml0IGFkZHJlc3MpLgorLSByZWFkLW9ubHkgOiBUaGlzIHBhcmFtZXRlciwgaWYgcHJlc2VudCwgaXMgYSBoaW50IHRvIExpbnV4IHRoYXQgdGhpcworICBwYXJ0aXRpb24gc2hvdWxkIG9ubHkgYmUgbW91bnRlZCByZWFkLW9ubHkuIFRoaXMgaXMgdXN1YWxseSB1c2VkIGZvciBmbGFzaAorICBwYXJ0aXRpb25zIGNvbnRhaW5pbmcgZWFybHktYm9vdCBmaXJtd2FyZSBpbWFnZXMgb3IgZGF0YSB3aGljaCBzaG91bGQgbm90IGJlCisgIGNsb2JiZXJlZC4KKworRXhhbXBsZXM6CisKKworZmxhc2hAMCB7CisJcGFydGl0aW9ucyB7CisJCWNvbXBhdGlibGUgPSAiZml4ZWQtcGFydGl0aW9ucyI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKworCQlwYXJ0aXRpb25AMCB7CisJCQlsYWJlbCA9ICJ1LWJvb3QiOworCQkJcmVnID0gPDB4MDAwMDAwMCAweDEwMDAwMD47CisJCQlyZWFkLW9ubHk7CisJCX07CisKKwkJdWltYWdlQDEwMDAwMCB7CisJCQlyZWcgPSA8MHgwMTAwMDAwIDB4MjAwMDAwPjsKKwkJfTsKKwl9OworfTsKKworZmxhc2hAMSB7CisJcGFydGl0aW9ucyB7CisJCWNvbXBhdGlibGUgPSAiZml4ZWQtcGFydGl0aW9ucyI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwyPjsKKworCQkvKiBhIDQgR2lCIHBhcnRpdGlvbiAqLworCQlwYXJ0aXRpb25AMCB7CisJCQlsYWJlbCA9ICJmaWxlc3lzdGVtIjsKKwkJCXJlZyA9IDwweDAwMDAwMDAwIDB4MSAweDAwMDAwMDAwPjsKKwkJfTsKKwl9OworfTsKKworZmxhc2hAMiB7CisJcGFydGl0aW9ucyB7CisJCWNvbXBhdGlibGUgPSAiZml4ZWQtcGFydGl0aW9ucyI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDI+OworCQkjc2l6ZS1jZWxscyA9IDwyPjsKKworCQkvKiBhbiA4IEdpQiBwYXJ0aXRpb24gKi8KKwkJcGFydGl0aW9uQDAgeworCQkJbGFiZWwgPSAiZmlsZXN5c3RlbSAjMSI7CisJCQlyZWcgPSA8MHgwIDB4MDAwMDAwMDAgMHgyIDB4MDAwMDAwMDA+OworCQl9OworCisJCS8qIGEgNCBHaUIgcGFydGl0aW9uICovCisJCXBhcnRpdGlvbkAyMDAwMDAwMDAgeworCQkJbGFiZWwgPSAiZmlsZXN5c3RlbSAjMiI7CisJCQlyZWcgPSA8MHgyIDB4MDAwMDAwMDAgMHgxIDB4MDAwMDAwMDA+OworCQl9OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9weGEzeHgtbmFuZC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL3B4YTN4eC1uYW5kLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWI2NTVmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9weGEzeHgtbmFuZC50eHQKQEAgLTAsMCArMSw0NiBAQAorUFhBM3h4IE5BTkQgRFQgYmluZGluZ3MKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworIC0gY29tcGF0aWJsZToJCVNob3VsZCBiZSBzZXQgdG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CisJCQltYXJ2ZWxsLHB4YTN4eC1uYW5kCisJCQltYXJ2ZWxsLGFybWFkYTM3MC1uYW5kCisgLSByZWc6IAkJVGhlIHJlZ2lzdGVyIGJhc2UgZm9yIHRoZSBjb250cm9sbGVyCisgLSBpbnRlcnJ1cHRzOgkJVGhlIGludGVycnVwdCB0byBtYXAKKyAtICNhZGRyZXNzLWNlbGxzOglTZXQgdG8gPDE+IGlmIHRoZSBub2RlIGluY2x1ZGVzIHBhcnRpdGlvbnMKKworT3B0aW9uYWwgcHJvcGVydGllczoKKworIC0gZG1hczoJCQlkbWEgZGF0YSBjaGFubmVsLCBzZWUgZG1hLnR4dCBiaW5kaW5nIGRvYworIC0gbWFydmVsbCxuYW5kLWVuYWJsZS1hcmJpdGVyOglTZXQgdG8gZW5hYmxlIHRoZSBidXMgYXJiaXRlcgorIC0gbWFydmVsbCxuYW5kLWtlZXAtY29uZmlnOglTZXQgdG8ga2VlcCB0aGUgTkFORCBjb250cm9sbGVyIGNvbmZpZyBhcyBzZXQKKwkJCQlieSB0aGUgYm9vdGxvYWRlcgorIC0gbnVtLWNzOgkJCU51bWJlciBvZiBjaGlwc2VsZWN0IGxpbmVzIHRvIHVzZQorIC0gbmFuZC1vbi1mbGFzaC1iYnQ6IAkJYm9vbGVhbiB0byBlbmFibGUgb24gZmxhc2ggYmJ0IG9wdGlvbiBpZgorCQkJCW5vdCBwcmVzZW50IGZhbHNlCisgLSBuYW5kLWVjYy1zdHJlbmd0aDogICAgICAgICAgIG51bWJlciBvZiBiaXRzIHRvIGNvcnJlY3QgcGVyIEVDQyBzdGVwCisgLSBuYW5kLWVjYy1zdGVwLXNpemU6ICAgICAgICAgIG51bWJlciBvZiBkYXRhIGJ5dGVzIGNvdmVyZWQgYnkgYSBzaW5nbGUgRUNDIHN0ZXAKKworVGhlIGZvbGxvd2luZyBFQ0Mgc3RyZW5ndGggYW5kIHN0ZXAgc2l6ZSBhcmUgY3VycmVudGx5IHN1cHBvcnRlZDoKKworIC0gbmFuZC1lY2Mtc3RyZW5ndGggPSA8MT4sIG5hbmQtZWNjLXN0ZXAtc2l6ZSA9IDw1MTI+CisgLSBuYW5kLWVjYy1zdHJlbmd0aCA9IDw0PiwgbmFuZC1lY2Mtc3RlcC1zaXplID0gPDUxMj4KKyAtIG5hbmQtZWNjLXN0cmVuZ3RoID0gPDg+LCBuYW5kLWVjYy1zdGVwLXNpemUgPSA8NTEyPgorCitFeGFtcGxlOgorCisJbmFuZDA6IG5hbmRANDMxMDAwMDAgeworCQljb21wYXRpYmxlID0gIm1hcnZlbGwscHhhM3h4LW5hbmQiOworCQlyZWcgPSA8MHg0MzEwMDAwMCA5MD47CisJCWludGVycnVwdHMgPSA8NDU+OworCQlkbWFzID0gPCZwZG1hIDk3IDA+OworCQlkbWEtbmFtZXMgPSAiZGF0YSI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCisJCW1hcnZlbGwsbmFuZC1lbmFibGUtYXJiaXRlcjsKKwkJbWFydmVsbCxuYW5kLWtlZXAtY29uZmlnOworCQludW0tY3MgPSA8MT47CisKKwkJLyogcGFydGl0aW9ucyAob3B0aW9uYWwpICovCisJfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9zcGVhcl9zbWkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9zcGVhcl9zbWkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyNDhhYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL3NwZWFyX3NtaS50eHQKQEAgLTAsMCArMSwzMSBAQAorKiBTUEVBciBTTUkKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJzdCxzcGVhcjYwMC1zbWkiCistIHJlZyA6IEFkZHJlc3MgcmFuZ2Ugb2YgdGhlIG10ZCBjaGlwCistICNhZGRyZXNzLWNlbGxzLCAjc2l6ZS1jZWxscyA6IE11c3QgYmUgcHJlc2VudCBpZiB0aGUgZGV2aWNlIGhhcyBzdWItbm9kZXMKKyAgcmVwcmVzZW50aW5nIHBhcnRpdGlvbnMuCistIGludGVycnVwdC1wYXJlbnQ6IFNob3VsZCBiZSB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyCisgIHRoYXQgc2VydmljZXMgaW50ZXJydXB0cyBmb3IgdGhpcyBkZXZpY2UKKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gdGhlIFNUTU1BQyBpbnRlcnJ1cHRzCistIGNsb2NrLXJhdGUgOiBGdW5jdGlvbmFsIGNsb2NrIHJhdGUgb2YgU01JIGluIEh6CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHN0LHNtaS1mYXN0LW1vZGUgOiBGbGFzaCBzdXBwb3J0cyByZWFkIGluIGZhc3QgbW9kZQorCitFeGFtcGxlOgorCisJc21pOiBmbGFzaEBmYzAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic3Qsc3BlYXI2MDAtc21pIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQlyZWcgPSA8MHhmYzAwMDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZ2aWMxPjsKKwkJaW50ZXJydXB0cyA9IDwxMj47CisJCWNsb2NrLXJhdGUgPSA8NTAwMDAwMDA+OwkvKiA1ME1IeiAqLworCisJCWZsYXNoQGY4MDAwMDAwIHsKKwkJCXN0LHNtaS1mYXN0LW1vZGU7CisJCQkuLi4KKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9zdC1mc20udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9zdC1mc20udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNDg5MzkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL3N0LWZzbS50eHQKQEAgLTAsMCArMSwyNiBAQAorKiBTVC1NaWNyb2VsZWN0cm9uaWNzIFNQSSBGU00gU2VyaWFsIChOT1IpIEZsYXNoIENvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJzdCxzcGktZnNtIgorICAtIHJlZyAgICAgICAgOiBDb250YWlucyByZWdpc3RlcidzIGxvY2F0aW9uIGFuZCBsZW5ndGguCisgIC0gcmVnLW5hbWVzICA6IFNob3VsZCBjb250YWluIHRoZSByZWcgbmFtZXMgInNwaS1mc20iCisgIC0gaW50ZXJydXB0cyA6IFRoZSBpbnRlcnJ1cHQgbnVtYmVyCisgIC0gcGluY3RybC0wICA6IFN0YW5kYXJkIFBpbmN0cmwgcGhhbmRsZSAoc2VlOiBwaW5jdHJsL3BpbmN0cmwtYmluZGluZ3MudHh0KQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIHN0LHN5c2NmZyAgICAgICAgICA6IFBoYW5kbGUgdG8gYm9vdC1kZXZpY2Ugc3lzdGVtIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzCisgIC0gc3QsYm9vdC1kZXZpY2UtcmVnIDogQWRkcmVzcyBvZiB0aGUgYWZvcmVtZW50aW9uZWQgYm9vdC1kZXZpY2UgcmVnaXN0ZXIocykKKyAgLSBzdCxib290LWRldmljZS1zcGkgOiBFeHBlY3RlZCBib290LWRldmljZSB2YWx1ZSBpZiBib290ZWQgdmlhIHRoaXMgZGV2aWNlCisKK0V4YW1wbGU6CisJc3BpZnNtOiBzcGlmc21AZmU5MDIwMDB7CisJICAgICAgICBjb21wYXRpYmxlICAgICAgICAgPSAic3Qsc3BpLWZzbSI7CisJICAgICAgICByZWcgICAgICAgICAgICAgICAgPSAgPDB4ZmU5MDIwMDAgMHgxMDAwPjsKKwkgICAgICAgIHJlZy1uYW1lcyAgICAgICAgICA9ICJzcGktZnNtIjsKKwkgICAgICAgIHBpbmN0cmwtMCAgICAgICAgICA9IDwmcGluY3RybF9mc20+OworCQlzdCxzeXNjZmcJICAgPSA8JnN5c2NmZ19yZWFyPjsKKwkgICAgICAgIHN0LGJvb3QtZGV2aWNlLXJlZyA9IDwweDk1OD47CisJICAgICAgICBzdCxib290LWRldmljZS1zcGkgPSA8MHgxYT47CisJCXN0YXR1cyA9ICJva2F5IjsKKwl9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL3N1bnhpLW5hbmQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9zdW54aS1uYW5kLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODZkNmY0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9zdW54aS1uYW5kLnR4dApAQCAtMCwwICsxLDQ1IEBACitBbGx3aW5uZXIgTkFORCBGbGFzaCBDb250cm9sbGVyIChORkMpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAiYWxsd2lubmVyLHN1bjRpLWExMC1uYW5kIi4KKy0gcmVnIDogc2hhbGwgY29udGFpbiByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aCBmb3IgZGF0YSBhbmQgcmVnLgorLSBpbnRlcnJ1cHRzIDogc2hhbGwgZGVmaW5lIHRoZSBuYW5kIGNvbnRyb2xsZXIgaW50ZXJydXB0LgorLSAjYWRkcmVzcy1jZWxsczogc2hhbGwgYmUgc2V0IHRvIDEuIEVuY29kZSB0aGUgbmFuZCBDUy4KKy0gI3NpemUtY2VsbHMgOiBzaGFsbCBiZSBzZXQgdG8gMC4KKy0gY2xvY2tzIDogc2hhbGwgcmVmZXJlbmNlIG5hbmQgY29udHJvbGxlciBjbG9ja3MuCistIGNsb2NrLW5hbWVzIDogbmFuZCBjb250cm9sbGVyIGludGVybmFsIGNsb2NrIG5hbWVzLiBTaGFsbCBjb250YWluIDoKKyAgICAqICJhaGIiIDogQUhCIGdhdGluZyBjbG9jaworICAgICogIm1vZCIgOiBuYW5kIGNvbnRyb2xsZXIgY2xvY2sKKworT3B0aW9uYWwgY2hpbGRyZW4gbm9kZXM6CitDaGlsZHJlbiBub2RlcyByZXByZXNlbnQgdGhlIGF2YWlsYWJsZSBuYW5kIGNoaXBzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBhbGx3aW5uZXIscmIgOiBzaGFsbCBjb250YWluIHRoZSBuYXRpdmUgUmVhZHkvQnVzeSBpZHMuCisgb3IKKy0gcmItZ3Bpb3MgOiBzaGFsbCBjb250YWluIHRoZSBncGlvcyB1c2VkIGFzIFIvQiBwaW5zLgorLSBuYW5kLWVjYy1tb2RlIDogb25lIG9mIHRoZSBzdXBwb3J0ZWQgRUNDIG1vZGVzICgiaHciLCAiaHdfc3luZHJvbWUiLCAic29mdCIsCisgICJzb2Z0X2JjaCIgb3IgIm5vbmUiKQorCitzZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9uYW5kLnR4dCBmb3IgZ2VuZXJpYyBiaW5kaW5ncy4KKworCitFeGFtcGxlczoKK25mYzogbmFuZEAwMWMwMzAwMCB7CisJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNGktYTEwLW5hbmQiOworCXJlZyA9IDwweDAxYzAzMDAwIDB4MTAwMD47CisJaW50ZXJydXB0cyA9IDwwIDM3IDE+OworCWNsb2NrcyA9IDwmYWhiX2dhdGVzIDEzPiwgPCZuYW5kX2Nsaz47CisJY2xvY2stbmFtZXMgPSAiYWhiIiwgIm1vZCI7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47CisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwlwaW5jdHJsLTAgPSA8Jm5hbmRfcGluc19hICZuYW5kX2NzMF9waW5zX2EgJm5hbmRfcmIwX3BpbnNfYT47CisJc3RhdHVzID0gIm9rYXkiOworCisJbmFuZEAwIHsKKwkJcmVnID0gPDA+OworCQlhbGx3aW5uZXIscmIgPSA8MD47CisJCW5hbmQtZWNjLW1vZGUgPSAic29mdF9iY2giOworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC92ZjYxMC1uZmMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC92ZjYxMC1uZmMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5NmVlYjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL3ZmNjEwLW5mYy50eHQKQEAgLTAsMCArMSw1OSBAQAorRnJlZXNjYWxlJ3MgTkFORCBmbGFzaCBjb250cm9sbGVyIChORkMpCisKK1RoaXMgdmFyaWFudCBvZiB0aGUgRnJlZXNjYWxlIE5BTkQgZmxhc2ggY29udHJvbGxlciAoTkZDKSBjYW4gYmUgZm91bmQgb24KK1Z5YnJpZCAodmY2MTApLCBNUEM1MTI1LCBNQ0Y1NDQxOCBhbmQgS2luZXRpcyBLNzAuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSBzZXQgdG8gImZzbCx2ZjYxMC1uZmMiLgorLSByZWc6IGFkZHJlc3MgcmFuZ2Ugb2YgdGhlIE5GQy4KKy0gaW50ZXJydXB0czogaW50ZXJydXB0IG9mIHRoZSBORkMuCistICNhZGRyZXNzLWNlbGxzOiBzaGFsbCBiZSBzZXQgdG8gMS4gRW5jb2RlIHRoZSBuYW5kIENTLgorLSAjc2l6ZS1jZWxscyA6IHNoYWxsIGJlIHNldCB0byAwLgorLSBhc3NpZ25lZC1jbG9ja3M6IG1haW4gY2xvY2sgZnJvbSB0aGUgU29DLCBmb3IgVnlicmlkIDwmY2xrcyBWRjYxMF9DTEtfTkZDPjsKKy0gYXNzaWduZWQtY2xvY2stcmF0ZXM6IFRoZSBOQU5EIGJ1cyB0aW1pbmcgaXMgZGVyaXZlZCBmcm9tIHRoaXMgY2xvY2sKKyAgICByYXRlIGFuZCBzaG91bGQgbm90IGV4Y2VlZCBtYXhpbXVtIHRpbWluZyBmb3IgYW55IE5BTkQgbWVtb3J5IGNoaXAKKyAgICBpbiBhIGJvYXJkIHN0dWZmaW5nLiBUeXBpY2FsIE5BTkQgbWVtb3J5IHRpbWluZ3MgZGVyaXZlZCBmcm9tIHRoaXMKKyAgICBjbG9jayBhcmUgZm91bmQgaW4gdGhlIFNvQyBoYXJkd2FyZSByZWZlcmVuY2UgbWFudWFsLiBGdXJ0aGVybW9yZSwKKyAgICB0aGVyZSBtaWdodCBiZSByZXN0cmljdGlvbnMgb24gbWF4aW11bSByYXRlcyB3aGVuIHVzaW5nIGhhcmR3YXJlIEVDQy4KKworLSAjYWRkcmVzcy1jZWxscywgI3NpemUtY2VsbHMgOiBNdXN0IGJlIHByZXNlbnQgaWYgdGhlIGRldmljZSBoYXMgc3ViLW5vZGVzCisgIHJlcHJlc2VudGluZyBwYXJ0aXRpb25zLgorCitSZXF1aXJlZCBjaGlsZHJlbiBub2RlczoKK0NoaWxkcmVuIG5vZGVzIHJlcHJlc2VudCB0aGUgYXZhaWxhYmxlIG5hbmQgY2hpcHMuIEN1cnJlbnRseSB0aGUgZHJpdmVyIGNhbgorb25seSBoYW5kbGUgb25lIE5BTkQgY2hpcC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlIHNldCB0byAiZnNsLHZmNjEwLW5mYy1jcyIuCistIG5hbmQtYnVzLXdpZHRoOiBzZWUgbmFuZC50eHQKKy0gbmFuZC1lY2MtbW9kZTogc2VlIG5hbmQudHh0CisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIGhhcmR3YXJlIEVDQzoKKy0gbmFuZC1lY2Mtc3RyZW5ndGg6IHN1cHBvcnRlZCBzdHJlbmd0aHMgYXJlIDI0IGFuZCAzMiBiaXQgKHNlZSBuYW5kLnR4dCkKKy0gbmFuZC1lY2Mtc3RlcC1zaXplOiBzdGVwIHNpemUgZXF1YWxzIHBhZ2Ugc2l6ZSwgY3VycmVudGx5IG9ubHkgMmsgcGFnZXMgYXJlCisgICAgc3VwcG9ydGVkCistIG5hbmQtb24tZmxhc2gtYmJ0OiBzZWUgbmFuZC50eHQKKworRXhhbXBsZToKKworCW5mYzogbmFuZEA0MDBlMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLHZmNjEwLW5mYyI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJcmVnID0gPDB4NDAwZTAwMDAgMHg0MDAwPjsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDgzIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQljbG9ja3MgPSA8JmNsa3MgVkY2MTBfQ0xLX05GQz47CisJCWNsb2NrLW5hbWVzID0gIm5mYyI7CisJCWFzc2lnbmVkLWNsb2NrcyA9IDwmY2xrcyBWRjYxMF9DTEtfTkZDPjsKKwkJYXNzaWduZWQtY2xvY2stcmF0ZXMgPSA8MzMwMDAwMDA+OworCisJCW5hbmRAMCB7CisJCQljb21wYXRpYmxlID0gImZzbCx2ZjYxMC1uZmMtbmFuZGNzIjsKKwkJCXJlZyA9IDwwPjsKKwkJCW5hbmQtYnVzLXdpZHRoID0gPDg+OworCQkJbmFuZC1lY2MtbW9kZSA9ICJodyI7CisJCQluYW5kLWVjYy1zdHJlbmd0aCA9IDwzMj47CisJCQluYW5kLWVjYy1zdGVwLXNpemUgPSA8MjA0OD47CisJCQluYW5kLW9uLWZsYXNoLWJidDsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbGx3aW5uZXIsc3VuNGktZW1hYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW40aS1lbWFjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDY0MGIxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbGx3aW5uZXIsc3VuNGktZW1hYy50eHQKQEAgLTAsMCArMSwxOSBAQAorKiBBbGx3aW5uZXIgRU1BQyBldGhlcm5ldCBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiYWxsd2lubmVyLHN1bjRpLWExMC1lbWFjIiAoRGVwcmVjYXRlZDoKKyAgICAgICAgICAgICAgImFsbHdpbm5lcixzdW40aS1lbWFjIikKKy0gcmVnOiBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZS4KKy0gaW50ZXJydXB0czogaW50ZXJydXB0IGZvciB0aGUgZGV2aWNlCistIHBoeTogc2VlIGV0aGVybmV0LnR4dCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKy0gY2xvY2tzOiBBIHBoYW5kbGUgdG8gdGhlIHJlZmVyZW5jZSBjbG9jayBmb3IgdGhpcyBkZXZpY2UKKworRXhhbXBsZToKKworZW1hYzogZXRoZXJuZXRAMDFjMGIwMDAgeworICAgICAgIGNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjRpLWExMC1lbWFjIjsKKyAgICAgICByZWcgPSA8MHgwMWMwYjAwMCAweDEwMDA+OworICAgICAgIGludGVycnVwdHMgPSA8NTU+OworICAgICAgIGNsb2NrcyA9IDwmYWhiX2dhdGVzIDE3PjsKKyAgICAgICBwaHkgPSA8JnBoeTA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjRpLW1kaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbGx3aW5uZXIsc3VuNGktbWRpby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVjNTY0MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWxsd2lubmVyLHN1bjRpLW1kaW8udHh0CkBAIC0wLDAgKzEsMjcgQEAKKyogQWxsd2lubmVyIEExMCBNRElPIEV0aGVybmV0IENvbnRyb2xsZXIgaW50ZXJmYWNlCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiYWxsd2lubmVyLHN1bjRpLWExMC1tZGlvIgorICAgICAgICAgICAgICAoRGVwcmVjYXRlZDogImFsbHdpbm5lcixzdW40aS1tZGlvIikuCistIHJlZzogYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHBoeS1zdXBwbHk6IHBoYW5kbGUgdG8gYSByZWd1bGF0b3IgaWYgdGhlIFBIWSBuZWVkcyBvbmUKKworRXhhbXBsZSBhdCB0aGUgU29DIGxldmVsOgorbWRpb0AwMWMwYjA4MCB7CisJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNGktYTEwLW1kaW8iOworCXJlZyA9IDwweDAxYzBiMDgwIDB4MTQ+OworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDA+OworfTsKKworQW5kIGF0IHRoZSBib2FyZCBsZXZlbDoKKworbWRpb0AwMWMwYjA4MCB7CisJcGh5LXN1cHBseSA9IDwmcmVnX2VtYWNfM3YzPjsKKworCXBoeTA6IGV0aGVybmV0LXBoeUAwIHsKKwkJcmVnID0gPDA+OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbGx3aW5uZXIsc3VuN2ktYTIwLWdtYWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbGx3aW5uZXIsc3VuN2ktYTIwLWdtYWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhNGQ3NTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsbHdpbm5lcixzdW43aS1hMjAtZ21hYy50eHQKQEAgLTAsMCArMSwyNyBAQAorKiBBbGx3aW5uZXIgR01BQyBldGhlcm5ldCBjb250cm9sbGVyCisKK1RoaXMgZGV2aWNlIGlzIGEgcGxhdGZvcm0gZ2x1ZSBsYXllciBmb3Igc3RtbWFjLgorUGxlYXNlIHNlZSBzdG1tYWMudHh0IGZvciB0aGUgb3RoZXIgdW5jaGFuZ2VkIHByb3BlcnRpZXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiAgU2hvdWxkIGJlICJhbGx3aW5uZXIsc3VuN2ktYTIwLWdtYWMiCisgLSBjbG9ja3M6IFNob3VsZCBjb250YWluIHRoZSBHTUFDIG1haW4gY2xvY2ssIGFuZCB0eCBjbG9jaworICAgVGhlIHR4IGNsb2NrIHR5cGUgc2hvdWxkIGJlICJhbGx3aW5uZXIsc3VuN2ktYTIwLWdtYWMtY2xrIgorIC0gY2xvY2stbmFtZXM6IFNob3VsZCBjb250YWluIHRoZSBjbG9jayBuYW1lcyAic3RtbWFjZXRoIiwKKyAgIGFuZCAiYWxsd2lubmVyX2dtYWNfdHgiCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHBoeS1zdXBwbHk6IHBoYW5kbGUgdG8gYSByZWd1bGF0b3IgaWYgdGhlIFBIWSBuZWVkcyBvbmUKKworRXhhbXBsZXM6CisKKwlnbWFjOiBldGhlcm5ldEAwMWM1MDAwMCB7CisJCWNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjdpLWEyMC1nbWFjIjsKKwkJcmVnID0gPDB4MDFjNTAwMDAgMHgxMDAwMD4sCisJCSAgICAgIDwweDAxYzIwMTY0IDB4ND47CisJCWludGVycnVwdHMgPSA8MCA4NSAxPjsKKwkJaW50ZXJydXB0LW5hbWVzID0gIm1hY2lycSI7CisJCWNsb2NrcyA9IDwmYWhiX2dhdGVzIDQ5PiwgPCZnbWFjX3R4PjsKKwkJY2xvY2stbmFtZXMgPSAic3RtbWFjZXRoIiwgImFsbHdpbm5lcl9nbWFjX3R4IjsKKwkJcGh5LW1vZGUgPSAibWlpIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRlcmFfdHNlLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0ZXJhX3RzZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcwNjI5NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0ZXJhX3RzZS50eHQKQEAgLTAsMCArMSwxMTQgQEAKKyogQWx0ZXJhIFRyaXBsZS1TcGVlZCBFdGhlcm5ldCBNQUMgZHJpdmVyIChUU0UpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAiYWx0cix0c2UtMS4wIiBmb3IgbGVnYWN5IFNHRE1BIGJhc2VkIFRTRSwgYW5kIHNob3VsZAorCQliZSAiYWx0cix0c2UtbXNnZG1hLTEuMCIgZm9yIHRoZSBwcmVmZXJyZWQgTVNHRE1BIGJhc2VkIFRTRS4KKwkJQUxUUiBpcyBzdXBwb3J0ZWQgZm9yIGxlZ2FjeSBkZXZpY2UgdHJlZXMsIGJ1dCBpcyBkZXByZWNhdGVkLgorCQlhbHRyIHNob3VsZCBiZSB1c2VkIGZvciBhbGwgbmV3IGRlc2lnbnMuCistIHJlZzogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UuIEl0IGNvbnRhaW5zCisgIHRoZSBpbmZvcm1hdGlvbiBvZiByZWdpc3RlcnMgaW4gdGhlIHNhbWUgb3JkZXIgYXMgZGVzY3JpYmVkIGJ5IHJlZy1uYW1lcworLSByZWctbmFtZXM6IFNob3VsZCBjb250YWluIHRoZSByZWcgbmFtZXMKKyAgImNvbnRyb2xfcG9ydCI6IE1BQyBjb25maWd1cmF0aW9uIHNwYWNlIHJlZ2lvbgorICAidHhfY3NyIjogICAgICAgeERNQSBUeCBkaXNwYXRjaGVyIGNvbnRyb2wgYW5kIHN0YXR1cyBzcGFjZSByZWdpb24KKyAgInR4X2Rlc2MiOiAgICAgIE1TR0RNQSBUeCBkaXNwYXRjaGVyIGRlc2NyaXB0b3Igc3BhY2UgcmVnaW9uCisgICJyeF9jc3IiIDogICAgICB4RE1BIFJ4IGRpc3BhdGNoZXIgY29udHJvbCBhbmQgc3RhdHVzIHNwYWNlIHJlZ2lvbgorICAicnhfZGVzYyI6ICAgICAgTVNHRE1BIFJ4IGRpc3BhdGNoZXIgZGVzY3JpcHRvciBzcGFjZSByZWdpb24KKyAgInJ4X3Jlc3AiOiAgICAgIE1TR0RNQSBSeCBkaXNwYXRjaGVyIHJlc3BvbnNlIHNwYWNlIHJlZ2lvbgorICAiczEiOgkJICBTR0RNQSBkZXNjcmlwdG9yIG1lbW9yeQorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiB0aGUgVFNFIGludGVycnVwdHMgYW5kIGl0J3MgbW9kZS4KKy0gaW50ZXJydXB0LW5hbWVzOiBTaG91bGQgY29udGFpbiB0aGUgaW50ZXJydXB0IG5hbWVzCisgICJyeF9pcnEiOiAgICAgICB4RE1BIFJ4IGRpc3BhdGNoZXIgaW50ZXJydXB0CisgICJ0eF9pcnEiOiAgICAgICB4RE1BIFR4IGRpc3BhdGNoZXIgaW50ZXJydXB0CistIHJ4LWZpZm8tZGVwdGg6IE1BQyByZWNlaXZlIEZJRk8gYnVmZmVyIGRlcHRoIGluIGJ5dGVzCistIHR4LWZpZm8tZGVwdGg6IE1BQyB0cmFuc21pdCBGSUZPIGJ1ZmZlciBkZXB0aCBpbiBieXRlcworLSBwaHktbW9kZTogU2VlIGV0aGVybmV0LnR4dCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCistIHBoeS1oYW5kbGU6IFNlZSBldGhlcm5ldC50eHQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorLSBwaHktYWRkcjogU2VlIGV0aGVybmV0LnR4dCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuIEEgY29uZmlndXJhdGlvbiBzaG91bGQKKwkJaW5jbHVkZSBwaHktaGFuZGxlIG9yIHBoeS1hZGRyLgorLSBhbHRyLGhhcy1zdXBwbGVtZW50YXJ5LXVuaWNhc3Q6CisJCUlmIHByZXNlbnQsIFRTRSBzdXBwb3J0cyBhZGRpdGlvbmFsIHVuaWNhc3QgYWRkcmVzc2VzLgorCQlPdGhlcndpc2UgYWRkaXRpb25hbCB1bmljYXN0IGFkZHJlc3NlcyBhcmUgbm90IHN1cHBvcnRlZC4KKy0gYWx0cixoYXMtaGFzaC1tdWx0aWNhc3QtZmlsdGVyOgorCQlJZiBwcmVzZW50LCBUU0Ugc3VwcG9ydHMgYSBoYXNoIGJhc2VkIG11bHRpY2FzdCBmaWx0ZXIuCisJCU90aGVyd2lzZSwgaGFzaC1iYXNlZCBtdWx0aWNhc3QgZmlsdGVyaW5nIGlzIG5vdCBzdXBwb3J0ZWQuCisKKy0gbWRpbyBkZXZpY2UgdHJlZSBzdWJub2RlOiBXaGVuIHRoZSBUU0UgaGFzIGEgcGh5IGNvbm5lY3RlZCB0byBpdHMgbG9jYWwKKwkJbWRpbywgdGhlcmUgbXVzdCBiZSBkZXZpY2UgdHJlZSBzdWJub2RlIHdpdGggdGhlIGZvbGxvd2luZworCQlyZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisJLSBjb21wYXRpYmxlOiBNdXN0IGJlICJhbHRyLHRzZS1tZGlvIi4KKwktICNhZGRyZXNzLWNlbGxzOiBNdXN0IGJlIDwxPi4KKwktICNzaXplLWNlbGxzOiBNdXN0IGJlIDwwPi4KKworCUZvciBlYWNoIHBoeSBvbiB0aGUgbWRpbyBidXMsIHRoZXJlIG11c3QgYmUgYSBub2RlIHdpdGggdGhlIGZvbGxvd2luZworCWZpZWxkczoKKworCS0gcmVnOiBwaHkgaWQgdXNlZCB0byBjb21tdW5pY2F0ZSB0byBwaHkuCisJLSBkZXZpY2VfdHlwZTogTXVzdCBiZSAiZXRoZXJuZXQtcGh5Ii4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gbG9jYWwtbWFjLWFkZHJlc3M6IFNlZSBldGhlcm5ldC50eHQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorLSBtYXgtZnJhbWUtc2l6ZTogU2VlIGV0aGVybmV0LnR4dCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisKK0V4YW1wbGU6CisKKwl0c2Vfc3ViXzBfZXRoX3RzZV8wOiBldGhlcm5ldEAweDEsMDAwMDAwMDAgeworCQljb21wYXRpYmxlID0gImFsdHIsdHNlLW1zZ2RtYS0xLjAiOworCQlyZWcgPQk8MHgwMDAwMDAwMSAweDAwMDAwMDAwIDB4MDAwMDA0MDA+LAorCQkJPDB4MDAwMDAwMDEgMHgwMDAwMDQ2MCAweDAwMDAwMDIwPiwKKwkJCTwweDAwMDAwMDAxIDB4MDAwMDA0ODAgMHgwMDAwMDAyMD4sCisJCQk8MHgwMDAwMDAwMSAweDAwMDAwNEEwIDB4MDAwMDAwMDg+LAorCQkJPDB4MDAwMDAwMDEgMHgwMDAwMDQwMCAweDAwMDAwMDIwPiwKKwkJCTwweDAwMDAwMDAxIDB4MDAwMDA0MjAgMHgwMDAwMDAyMD47CisJCXJlZy1uYW1lcyA9ICJjb250cm9sX3BvcnQiLCAicnhfY3NyIiwgInJ4X2Rlc2MiLCAicnhfcmVzcCIsICJ0eF9jc3IiLCAidHhfZGVzYyI7CisJCWludGVycnVwdC1wYXJlbnQgPSA8Jmhwc18wX2FybV9naWNfMD47CisJCWludGVycnVwdHMgPSA8MCA0MSA0PiwgPDAgNDAgND47CisJCWludGVycnVwdC1uYW1lcyA9ICJyeF9pcnEiLCAidHhfaXJxIjsKKwkJcngtZmlmby1kZXB0aCA9IDwyMDQ4PjsKKwkJdHgtZmlmby1kZXB0aCA9IDwyMDQ4PjsKKwkJYWRkcmVzcy1iaXRzID0gPDQ4PjsKKwkJbWF4LWZyYW1lLXNpemUgPSA8MTUwMD47CisJCWxvY2FsLW1hYy1hZGRyZXNzID0gWyAwMCAwMCAwMCAwMCAwMCAwMCBdOworCQlwaHktbW9kZSA9ICJnbWlpIjsKKwkJYWx0cixoYXMtc3VwcGxlbWVudGFyeS11bmljYXN0OworCQlhbHRyLGhhcy1oYXNoLW11bHRpY2FzdC1maWx0ZXI7CisJCXBoeS1oYW5kbGUgPSA8JnBoeTA+OworCQltZGlvIHsKKwkJCWNvbXBhdGlibGUgPSAiYWx0cix0c2UtbWRpbyI7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCQkJcGh5MDogZXRoZXJuZXQtcGh5QDAgeworCQkJCXJlZyA9IDwweDA+OworCQkJCWRldmljZV90eXBlID0gImV0aGVybmV0LXBoeSI7CisJCQl9OworCisJCQlwaHkxOiBldGhlcm5ldC1waHlAMSB7CisJCQkJcmVnID0gPDB4MT47CisJCQkJZGV2aWNlX3R5cGUgPSAiZXRoZXJuZXQtcGh5IjsKKwkJCX07CisKKwkJfTsKKwl9OworCisJdHNlX3N1Yl8xX2V0aF90c2VfMDogZXRoZXJuZXRAMHgxLDAwMDAxMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhbHRyLHRzZS1tc2dkbWEtMS4wIjsKKwkJcmVnID0gCTwweDAwMDAwMDAxIDB4MDAwMDEwMDAgMHgwMDAwMDQwMD4sCisJCQk8MHgwMDAwMDAwMSAweDAwMDAxNDYwIDB4MDAwMDAwMjA+LAorCQkJPDB4MDAwMDAwMDEgMHgwMDAwMTQ4MCAweDAwMDAwMDIwPiwKKwkJCTwweDAwMDAwMDAxIDB4MDAwMDE0QTAgMHgwMDAwMDAwOD4sCisJCQk8MHgwMDAwMDAwMSAweDAwMDAxNDAwIDB4MDAwMDAwMjA+LAorCQkJPDB4MDAwMDAwMDEgMHgwMDAwMTQyMCAweDAwMDAwMDIwPjsKKwkJcmVnLW5hbWVzID0gImNvbnRyb2xfcG9ydCIsICJyeF9jc3IiLCAicnhfZGVzYyIsICJyeF9yZXNwIiwgInR4X2NzciIsICJ0eF9kZXNjIjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmaHBzXzBfYXJtX2dpY18wPjsKKwkJaW50ZXJydXB0cyA9IDwwIDQzIDQ+LCA8MCA0MiA0PjsKKwkJaW50ZXJydXB0LW5hbWVzID0gInJ4X2lycSIsICJ0eF9pcnEiOworCQlyeC1maWZvLWRlcHRoID0gPDIwNDg+OworCQl0eC1maWZvLWRlcHRoID0gPDIwNDg+OworCQlhZGRyZXNzLWJpdHMgPSA8NDg+OworCQltYXgtZnJhbWUtc2l6ZSA9IDwxNTAwPjsKKwkJbG9jYWwtbWFjLWFkZHJlc3MgPSBbIDAwIDAwIDAwIDAwIDAwIDAwIF07CisJCXBoeS1tb2RlID0gImdtaWkiOworCQlhbHRyLGhhcy1zdXBwbGVtZW50YXJ5LXVuaWNhc3Q7CisJCWFsdHIsaGFzLWhhc2gtbXVsdGljYXN0LWZpbHRlcjsKKwkJcGh5LWhhbmRsZSA9IDwmcGh5MT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1kLXhnYmUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWQteGdiZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJiNjI0YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1kLXhnYmUudHh0CkBAIC0wLDAgKzEsNzcgQEAKKyogQU1EIDEwR2JFIGRyaXZlciAoYW1kLXhnYmUpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAiYW1kLHhnYmUtc2VhdHRsZS12MWEiCistIHJlZzogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXRzIGZvciB0aGUgZGV2aWNlCisgICAtIE1BQyByZWdpc3RlcnMKKyAgIC0gUENTIHJlZ2lzdGVycworICAgLSBTZXJEZXMgUngvVHggcmVnaXN0ZXJzCisgICAtIFNlckRlcyBpbnRlZ3JhdGlvbiByZWdpc3RlcnMgKDEvMikKKyAgIC0gU2VyRGVzIGludGVncmF0aW9uIHJlZ2lzdGVycyAoMi8yKQorLSBpbnRlcnJ1cHQtcGFyZW50OiBTaG91bGQgYmUgdGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlcgorICB0aGF0IHNlcnZpY2VzIGludGVycnVwdHMgZm9yIHRoaXMgZGV2aWNlCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIHRoZSBhbWQteGdiZSBpbnRlcnJ1cHQocykuIFRoZSBmaXJzdCBpbnRlcnJ1cHQKKyAgbGlzdGVkIGlzIHJlcXVpcmVkIGFuZCBpcyB0aGUgZ2VuZXJhbCBkZXZpY2UgaW50ZXJydXB0LiBJZiB0aGUgb3B0aW9uYWwKKyAgYW1kLHBlci1jaGFubmVsLWludGVycnVwdCBwcm9wZXJ0eSBpcyBzcGVjaWZpZWQsIHRoZW4gb25lIGFkZGl0aW9uYWwKKyAgaW50ZXJydXB0IGZvciBlYWNoIERNQSBjaGFubmVsIHN1cHBvcnRlZCBieSB0aGUgZGV2aWNlIHNob3VsZCBiZSBzcGVjaWZpZWQuCisgIFRoZSBsYXN0IGludGVycnVwdCBsaXN0ZWQgc2hvdWxkIGJlIHRoZSBQQ1MgYXV0by1uZWdvdGlhdGlvbiBpbnRlcnJ1cHQuCistIGNsb2NrczoKKyAgIC0gRE1BIGNsb2NrIGZvciB0aGUgYW1kLXhnYmUgZGV2aWNlICh1c2VkIGZvciBjYWxjdWxhdGluZyB0aGUKKyAgICAgY29ycmVjdCBSeCBpbnRlcnJ1cHQgd2F0Y2hkb2cgdGltZXIgdmFsdWUgb24gYSBETUEgY2hhbm5lbAorICAgICBmb3IgY29hbGVzY2luZykKKyAgIC0gUFRQIGNsb2NrIGZvciB0aGUgYW1kLXhnYmUgZGV2aWNlCistIGNsb2NrLW5hbWVzOiBTaG91bGQgYmUgdGhlIG5hbWVzIG9mIHRoZSBjbG9ja3MKKyAgIC0gImRtYV9jbGsiIGZvciB0aGUgRE1BIGNsb2NrCisgICAtICJwdHBfY2xrIiBmb3IgdGhlIFBUUCBjbG9jaworLSBwaHktbW9kZTogU2VlIGV0aGVybmV0LnR4dCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBtYWMtYWRkcmVzczogbWFjIGFkZHJlc3MgdG8gYmUgYXNzaWduZWQgdG8gdGhlIGRldmljZS4gQ2FuIGJlIG92ZXJyaWRkZW4KKyAgYnkgVUVGSS4KKy0gZG1hLWNvaGVyZW50OiBQcmVzZW50IGlmIGRtYSBvcGVyYXRpb25zIGFyZSBjb2hlcmVudAorLSBhbWQscGVyLWNoYW5uZWwtaW50ZXJydXB0OiBJbmRpY2F0ZXMgdGhhdCBSeCBhbmQgVHggY29tcGxldGUgd2lsbCBnZW5lcmF0ZQorICBhIHVuaXF1ZSBpbnRlcnJ1cHQgZm9yIGVhY2ggRE1BIGNoYW5uZWwgLSB0aGlzIHJlcXVpcmVzIGFuIGFkZGl0aW9uYWwKKyAgaW50ZXJydXB0IGJlIGNvbmZpZ3VyZWQgZm9yIGVhY2ggRE1BIGNoYW5uZWwKKy0gYW1kLHNwZWVkLXNldDogU3BlZWQgY2FwYWJpbGl0aWVzIG9mIHRoZSBkZXZpY2UKKyAgICAwIC0gMUdiRSBhbmQgMTBHYkUgKGRlZmF1bHQpCisgICAgMSAtIDIuNUdiRSBhbmQgMTBHYkUKKworVGhlIGZvbGxvd2luZyBvcHRpb25hbCBwcm9wZXJ0aWVzIGFyZSByZXByZXNlbnRlZCBieSBhbiBhcnJheSB3aXRoIGVhY2gKK3ZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gYSBwYXJ0aWN1bGFyIHNwZWVkLiBUaGUgZmlyc3QgYXJyYXkgdmFsdWUgcmVwcmVzZW50cwordGhlIHNldHRpbmcgZm9yIHRoZSAxR2JFIHNwZWVkLCB0aGUgc2Vjb25kIHZhbHVlIGZvciB0aGUgMi41R2JFIHNwZWVkIGFuZAordGhlIHRoaXJkIHZhbHVlIGZvciB0aGUgMTBHYkUgc3BlZWQuICBBbGwgdGhyZWUgdmFsdWVzIGFyZSByZXF1aXJlZCBpZiB0aGUKK3Byb3BlcnR5IGlzIHVzZWQuCistIGFtZCxzZXJkZXMtYmx3YzogQmFzZWxpbmUgd2FuZGVyaW5nIGNvcnJlY3Rpb24gZW5hYmxlbWVudAorICAgIDAgLSBPZmYKKyAgICAxIC0gT24KKy0gYW1kLHNlcmRlcy1jZHItcmF0ZTogQ0RSIHJhdGUgc3BlZWQgc2VsZWN0aW9uCistIGFtZCxzZXJkZXMtcHEtc2tldzogUFEgKGRhdGEgc2FtcGxpbmcpIHNrZXcKKy0gYW1kLHNlcmRlcy10eC1hbXA6IFRYIGFtcGxpdHVkZSBib29zdAorLSBhbWQsc2VyZGVzLWRmZS10YXAtY29uZmlnOiBERkUgdGFwcyBhdmFpbGFibGUgdG8gcnVuCistIGFtZCxzZXJkZXMtZGZlLXRhcC1lbmFibGU6IERGRSB0YXBzIHRvIGVuYWJsZQorCitFeGFtcGxlOgorCXhnYmVAZTA3MDAwMDAgeworCQljb21wYXRpYmxlID0gImFtZCx4Z2JlLXNlYXR0bGUtdjFhIjsKKwkJcmVnID0gPDAgMHhlMDcwMDAwMCAwIDB4ODAwMDA+LAorCQkgICAgICA8MCAweGUwNzgwMDAwIDAgMHg4MDAwMD4sCisJCSAgICAgIDwwIDB4ZTEyNDA4MDAgMCAweDAwNDAwPiwKKwkJICAgICAgPDAgMHhlMTI1MDAwMCAwIDB4MDAwNjA+LAorCQkgICAgICA8MCAweGUxMjUwMDgwIDAgMHgwMDAwND47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdpYz47CisJCWludGVycnVwdHMgPSA8MCAzMjUgND4sCisJCQkgICAgIDwwIDMyNiAxPiwgPDAgMzI3IDE+LCA8MCAzMjggMT4sIDwwIDMyOSAxPiwKKwkJCSAgICAgPDAgMzIzIDQ+OworCQlhbWQscGVyLWNoYW5uZWwtaW50ZXJydXB0OworCQljbG9ja3MgPSA8JnhnYmVfZG1hX2Nsaz4sIDwmeGdiZV9wdHBfY2xrPjsKKwkJY2xvY2stbmFtZXMgPSAiZG1hX2NsayIsICJwdHBfY2xrIjsKKwkJcGh5LW1vZGUgPSAieGdtaWkiOworCQltYWMtYWRkcmVzcyA9IFsgMDIgYTEgYTIgYTMgYTQgYTUgXTsKKwkJYW1kLHNwZWVkLXNldCA9IDwwPjsKKwkJYW1kLHNlcmRlcy1ibHdjID0gPDE+LCA8MT4sIDwwPjsKKwkJYW1kLHNlcmRlcy1jZHItcmF0ZSA9IDwyPiwgPDI+LCA8Nz47CisJCWFtZCxzZXJkZXMtcHEtc2tldyA9IDwxMD4sIDwxMD4sIDwzMD47CisJCWFtZCxzZXJkZXMtdHgtYW1wID0gPDE1PiwgPDE1PiwgPDEwPjsKKwkJYW1kLHNlcmRlcy1kZmUtdGFwLWNvbmZpZyA9IDwzPiwgPDM+LCA8MT47CisJCWFtZCxzZXJkZXMtZGZlLXRhcC1lbmFibGUgPSA8MD4sIDwwPiwgPDEyNz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYXBtLXhnZW5lLWVuZXQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hcG0teGdlbmUtZW5ldC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc4MDYwYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYXBtLXhnZW5lLWVuZXQudHh0CkBAIC0wLDAgKzEsODYgQEAKK0FQTSBYLUdlbmUgU29DIEV0aGVybmV0IG5vZGVzCisKK0V0aGVybmV0IG5vZGVzIGFyZSBkZWZpbmVkIHRvIGRlc2NyaWJlIG9uLWNoaXAgZXRoZXJuZXQgaW50ZXJmYWNlcyBpbgorQVBNIFgtR2VuZSBTb0MuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIGFsbCB0aGUgZXRoZXJuZXQgaW50ZXJmYWNlczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIHN0YXRlIGJpbmRpbmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgZm9sbG93aW5nIGxpc3QsCisgIC0gImFwbSx4Z2VuZS1lbmV0IjogICAgUkdNSUkgYmFzZWQgMUcgaW50ZXJmYWNlCisgIC0gImFwbSx4Z2VuZTEtc2dlbmV0IjogU0dNSUkgYmFzZWQgMUcgaW50ZXJmYWNlCisgIC0gImFwbSx4Z2VuZTEteGdlbmV0IjogWEZJIGJhc2VkIDEwRyBpbnRlcmZhY2UKKy0gcmVnOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZS4gSXQgY29udGFpbnMgdGhlCisgIGluZm9ybWF0aW9uIG9mIHJlZ2lzdGVycyBpbiB0aGUgc2FtZSBvcmRlciBhcyBkZXNjcmliZWQgYnkgcmVnLW5hbWVzCistIHJlZy1uYW1lczogU2hvdWxkIGNvbnRhaW4gdGhlIHJlZ2lzdGVyIHNldCBuYW1lcworICAtICJlbmV0X2NzciI6IEV0aGVybmV0IGNvbnRyb2wgYW5kIHN0YXR1cyByZWdpc3RlciBhZGRyZXNzIHNwYWNlCisgIC0gInJpbmdfY3NyIjogRGVzY3JpcHRvciByaW5nIGNvbnRyb2wgYW5kIHN0YXR1cyByZWdpc3RlciBhZGRyZXNzIHNwYWNlCisgIC0gInJpbmdfY21kIjogRGVzY3JpcHRvciByaW5nIGNvbW1hbmQgcmVnaXN0ZXIgYWRkcmVzcyBzcGFjZQorLSBpbnRlcnJ1cHRzOiBUd28gaW50ZXJydXB0IHNwZWNpZmllcnMgY2FuIGJlIHNwZWNpZmllZC4KKyAgLSBGaXJzdCBpcyB0aGUgUnggaW50ZXJydXB0LiAgVGhpcyBpcnEgaXMgbWFuZGF0b3J5LgorICAtIFNlY29uZCBpcyB0aGUgVHggY29tcGxldGlvbiBpbnRlcnJ1cHQuCisgICAgVGhpcyBpcyBzdXBwb3J0ZWQgb25seSBvbiBTR01JSSBiYXNlZCAxR2JFIGFuZCAxMEdiRSBpbnRlcmZhY2VzLgorLSBwb3J0LWlkOiBQb3J0IG51bWJlciAoMCBvciAxKQorLSBjbG9ja3M6IFJlZmVyZW5jZSB0byB0aGUgY2xvY2sgZW50cnkuCistIGxvY2FsLW1hYy1hZGRyZXNzOiBNQUMgYWRkcmVzcyBhc3NpZ25lZCB0byB0aGlzIGRldmljZQorLSBwaHktY29ubmVjdGlvbi10eXBlOiBJbnRlcmZhY2UgdHlwZSBiZXR3ZWVuIGV0aGVybmV0IGRldmljZSBhbmQgUEhZIGRldmljZQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBldGhlcm5ldCBpbnRlcmZhY2VzIHRoYXQgaGF2ZSBleHRlcm5hbCBQSFk6CistIHBoeS1oYW5kbGU6IFJlZmVyZW5jZSB0byBhIFBIWSBub2RlIGNvbm5lY3RlZCB0byB0aGlzIGRldmljZQorCistIG1kaW86IERldmljZSB0cmVlIHN1Ym5vZGUgd2l0aCB0aGUgZm9sbG93aW5nIHJlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogTXVzdCBiZSAiYXBtLHhnZW5lLW1kaW8iLgorICAtICNhZGRyZXNzLWNlbGxzOiBNdXN0IGJlIDwxPi4KKyAgLSAjc2l6ZS1jZWxsczogTXVzdCBiZSA8MD4uCisKKyAgRm9yIHRoZSBwaHkgb24gdGhlIG1kaW8gYnVzLCB0aGVyZSBtdXN0IGJlIGEgbm9kZSB3aXRoIHRoZSBmb2xsb3dpbmcgZmllbGRzOgorICAtIGNvbXBhdGlibGU6IFBIWSBpZGVudGlmaWVyLiAgUGxlYXNlIHJlZmVyIC4vcGh5LnR4dCBmb3IgdGhlIGZvcm1hdC4KKyAgLSByZWc6IFRoZSBJRCBudW1iZXIgZm9yIHRoZSBwaHkuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHN0YXR1czogU2hvdWxkIGJlICJvayIgb3IgImRpc2FibGVkIiBmb3IgZW5hYmxlZC9kaXNhYmxlZC4gRGVmYXVsdCBpcyAib2siLgorLSB0eC1kZWxheTogRGVsYXkgdmFsdWUgZm9yIFJHTUlJIGJyaWRnZSBUWCBjbG9jay4KKwkgICAgVmFsaWQgdmFsdWVzIGFyZSBiZXR3ZWVuIDAgdG8gNywgdGhhdCBtYXBzIHRvCisJICAgIDQxNywgNzE3LCAxMDIwLCAxMzIxLCAxNjExLCAxOTEzLCAyMjE1LCAyNTE0IHBzCisJICAgIERlZmF1bHQgdmFsdWUgaXMgNCwgd2hpY2ggY29ycmVzcG9uZHMgdG8gMTYxMSBwcworLSByeC1kZWxheTogRGVsYXkgdmFsdWUgZm9yIFJHTUlJIGJyaWRnZSBSWCBjbG9jay4KKwkgICAgVmFsaWQgdmFsdWVzIGFyZSBiZXR3ZWVuIDAgdG8gNywgdGhhdCBtYXBzIHRvCisJICAgIDI3MywgNTg5LCA4OTksIDEyMjIsIDE0ODAsIDE4MDYsIDIxNDcsIDI0NjQgcHMKKwkgICAgRGVmYXVsdCB2YWx1ZSBpcyAyLCB3aGljaCBjb3JyZXNwb25kcyB0byA4OTkgcHMKKworRXhhbXBsZToKKwltZW5ldGNsazogbWVuZXRjbGsgeworCQljb21wYXRpYmxlID0gImFwbSx4Z2VuZS1kZXZpY2UtY2xvY2siOworCQljbG9jay1vdXRwdXQtbmFtZXMgPSAibWVuZXRjbGsiOworCQlzdGF0dXMgPSAib2siOworCX07CisKKwltZW5ldDogZXRoZXJuZXRAMTcwMjAwMDAgeworCQljb21wYXRpYmxlID0gImFwbSx4Z2VuZS1lbmV0IjsKKwkJc3RhdHVzID0gImRpc2FibGVkIjsKKwkJcmVnID0gPDB4MCAweDE3MDIwMDAwIDB4MCAweGQxMDA+LAorCQkgICAgICA8MHgwIDBYMTcwMzAwMDAgMHgwIDBYNDAwPiwKKwkJICAgICAgPDB4MCAwWDEwMDAwMDAwIDB4MCAwWDIwMD47CisJCXJlZy1uYW1lcyA9ICJlbmV0X2NzciIsICJyaW5nX2NzciIsICJyaW5nX2NtZCI7CisJCWludGVycnVwdHMgPSA8MHgwIDB4M2MgMHg0PjsKKwkJcG9ydC1pZCA9IDwwPjsKKwkJY2xvY2tzID0gPCZtZW5ldGNsayAwPjsKKwkJbG9jYWwtbWFjLWFkZHJlc3MgPSBbMDAgMDEgNzMgMDAgMDAgMDFdOworCQlwaHktY29ubmVjdGlvbi10eXBlID0gInJnbWlpIjsKKwkJcGh5LWhhbmRsZSA9IDwmbWVuZXRwaHk+OworCQltZGlvIHsKKwkJCWNvbXBhdGlibGUgPSAiYXBtLHhnZW5lLW1kaW8iOworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJCW1lbmV0cGh5OiBtZW5ldHBoeUAzIHsKKwkJCQljb21wYXRpYmxlID0gImV0aGVybmV0LXBoeS1pZDAwMWMuYzkxNSI7CisJCQkJcmVnID0gPDB4Mz47CisJCQl9OworCisJCX07CisJfTsKKworLyogQm9hcmQtc3BlY2lmaWMgcGVyaXBoZXJhbCBjb25maWd1cmF0aW9ucyAqLworJm1lbmV0IHsKKwl0eC1kZWxheSA9IDw0PjsKKwlyeC1kZWxheSA9IDwyPjsKKyAgICAgICAgc3RhdHVzID0gIm9rIjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FyY19lbWFjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYXJjX2VtYWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExZDcxZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FyY19lbWFjLnR4dApAQCAtMCwwICsxLDM5IEBACisqIFN5bm9wc3lzIEFSQyBFTUFDIDEwLzEwMCBFdGhlcm5ldCBkcml2ZXIgKEVNQUMpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAic25wcyxhcmMtZW1hYyIKKy0gcmVnOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiB0aGUgRU1BQyBpbnRlcnJ1cHRzCistIG1heC1zcGVlZDogc2VlIGV0aGVybmV0LnR4dCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKy0gcGh5OiBzZWUgZXRoZXJuZXQudHh0IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorCitDbG9jayBoYW5kbGluZzoKK1RoZSBjbG9jayBmcmVxdWVuY3kgaXMgbmVlZGVkIHRvIGNhbGN1bGF0ZSBhbmQgc2V0IHBvbGxpbmcgcGVyaW9kIG9mIEVNQUMuCitJdCBtdXN0IGJlIHByb3ZpZGVkIGJ5IG9uZSBvZjoKKy0gY2xvY2stZnJlcXVlbmN5OiBDUFUgZnJlcXVlbmN5LgorLSBjbG9ja3M6IHJlZmVyZW5jZSB0byB0aGUgY2xvY2sgc3VwcGx5aW5nIHRoZSBFTUFDLgorCitDaGlsZCBub2RlcyBvZiB0aGUgZHJpdmVyIGFyZSB0aGUgaW5kaXZpZHVhbCBQSFkgZGV2aWNlcyBjb25uZWN0ZWQgdG8gdGhlCitNRElPIGJ1cy4gVGhleSBtdXN0IGhhdmUgYSAicmVnIiBwcm9wZXJ0eSBnaXZlbiB0aGUgUEhZIGFkZHJlc3Mgb24gdGhlIE1ESU8gYnVzLgorCitFeGFtcGxlczoKKworCWV0aGVybmV0QGMwZmMyMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzbnBzLGFyYy1lbWFjIjsKKwkJcmVnID0gPDB4YzBmYzIwMDAgMHgzYz47CisJCWludGVycnVwdHMgPSA8Nj47CisJCW1hYy1hZGRyZXNzID0gWyAwMCAxMSAyMiAzMyA0NCA1NSBdOworCisJCWNsb2NrLWZyZXF1ZW5jeSA9IDw4MDAwMDAwMD47CisJCS8qIG9yICovCisJCWNsb2NrcyA9IDwmZW1hY19jbG9jaz47CisKKwkJbWF4LXNwZWVkID0gPDEwMD47CisJCXBoeSA9IDwmcGh5MD47CisKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQlwaHkwOiBldGhlcm5ldC1waHlAMCB7CisJCQlyZWcgPSA8MT47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYnJjbSxiY203NDQ1LXN3aXRjaC12NC4wLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYnJjbSxiY203NDQ1LXN3aXRjaC12NC4wLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGQ0ODc1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9icmNtLGJjbTc0NDUtc3dpdGNoLXY0LjAudHh0CkBAIC0wLDAgKzEsNzggQEAKKyogQnJvYWRjb20gU3RhcmZpZ2h0ZXIgMiBpbnRlZ3JhdGVkIHN3aWNoCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJicmNtLGJjbTc0NDUtc3dpdGNoLXY0LjAiCistIHJlZzogYWRkcmVzc2VzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldHMgZm9yIHRoZSBkZXZpY2UsIG11c3QgYmUgNgorICBwYWlycyBvZiByZWdpc3RlciBhZGRyZXNzZXMgYW5kIGxlbmd0aHMKKy0gaW50ZXJydXB0czogaW50ZXJydXB0cyBmb3IgdGhlIGRldmljZXMsIG11c3QgYmUgdHdvIGludGVycnVwdHMKKy0gZHNhLG1paS1idXM6IHBoYW5kbGUgdG8gdGhlIE1ESU8gYnVzIGNvbnRyb2xsZXIsIHNlZSBkc2EvZHNhLnR4dAorLSBkc2EsZXRoZXJuZXQ6IHBoYW5kbGUgdG8gdGhlIENQVSBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sbGVyLCBzZWUgZHNhL2RzYS50eHQKKy0gI3NpemUtY2VsbHM6IG11c3QgYmUgMAorLSAjYWRkcmVzcy1jZWxsczogbXVzdCBiZSAyLCBzZWUgZHNhL2RzYS50eHQKKworU3Vibm9kZXM6CisKK1RoZSBpbnRlZ3JhdGVkIHN3aXRjaCBzdWJub2RlIHNob3VsZCBiZSBzcGVjaWZpZWQgYWNjb3JkaW5nIHRvIHRoZSBiaW5kaW5nCitkZXNjcmliZWQgaW4gZHNhL2RzYS50eHQuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gcmVnLW5hbWVzOiBsaXR0ZXJhbCBuYW1lcyBmb3IgdGhlIGRldmljZSBiYXNlIHJlZ2lzdGVyIGFkZHJlc3Nlcywgd2hlbiBwcmVzZW50CisgIG11c3QgYmU6ICJjb3JlIiwgInJlZyIsICJpbnRybDJfMCIsICJpbnRybDJfMSIsICJmY2IiLCAiYWNiIgorCistIGludGVycnVwdC1uYW1lczogbGl0dGVybmFsIG5hbWVzIGZvciB0aGUgZGV2aWNlIGludGVycnVwdCBsaW5lcywgd2hlbiBwcmVzZW50CisgIG11c3QgYmU6ICJzd2l0Y2hfMCIgYW5kICJzd2l0Y2hfMSIKKworLSBicmNtLG51bS1ncGh5OiBzcGVjaWZ5IHRoZSBtYXhpbXVtIG51bWJlciBvZiBpbnRlZ3JhdGVkIGdpZ2FiaXQgUEhZcyBpbiB0aGUKKyAgc3dpdGNoCisKKy0gYnJjbSxudW0tcmdtaWktcG9ydHM6IHNwZWNpZnkgdGhlIG1heGltdW0gbnVtYmVyIG9mIFJHTUlJIGludGVyZmFjZXMgc3VwcG9ydGVkCisgIGJ5IHRoZSBzd2l0Y2gKKworLSBicmNtLGZjYi1wYXVzZS1vdmVycmlkZTogYm9vbGVhbiBwcm9wZXJ0eSwgaWYgcHJlc2VudCBpbmRpY2F0ZXMgdGhhdCB0aGUgc3dpdGNoCisgIHN1cHBvcnRzIEZhaWxvdmVyIENvbnRyb2wgQmxvY2sgcGF1c2Ugb3ZlcnJpZGUgY2FwYWJpbGl0eQorCistIGJyY20sYWNiLXBhY2tldHMtaW5mbGlnaHQ6IGJvb2xlYW4gcHJvcGVydHksIGlmIHByZXNlbnQgaW5kaWNhdGVzIHRoYXQgdGhlIHN3aXRjaAorICBBZG1pc3Npb24gQ29udHJvbCBCbG9jayBzdXBwb3J0cyByZXBvcnRpbmcgdGhlIG51bWJlciBvZiBwYWNrZXRzIGluLWZsaWdodCBpbiBhCisgIHN3aXRjaCBxdWV1ZQorCitFeGFtcGxlOgorCitzd2l0Y2hfdG9wQGYwYjAwMDAwIHsKKwljb21wYXRpYmxlID0gInNpbXBsZS1idXMiOworCSNzaXplLWNlbGxzID0gPDE+OworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCXJhbmdlcyA9IDwwIDB4ZjBiMDAwMDAgMHg0MDgwND47CisKKwlldGhlcm5ldF9zd2l0Y2hAMCB7CisJCWNvbXBhdGlibGUgPSAiYnJjbSxiY203NDQ1LXN3aXRjaC12NC4wIjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJCSNhZGRyZXNzLWNlbGxzID0gPDI+OworCQlyZWcgPSA8MHgwIDB4NDAwMDAKKwkJCTB4NDAwMDAgMHgxMTAKKwkJCTB4NDAzNDAgMHgzMAorCQkJMHg0MDM4MCAweDMwCisJCQkweDQwNDAwIDB4MzQKKwkJCTB4NDA2MDAgMHgyMDg+OworCQlpbnRlcnJ1cHRzID0gPDAgMHgxOCAwCisJCQkJMCAweDE5IDA+OworCQlicmNtLG51bS1ncGh5ID0gPDE+OworCQlicmNtLG51bS1yZ21paS1wb3J0cyA9IDwyPjsKKwkJYnJjbSxmY2ItcGF1c2Utb3ZlcnJpZGU7CisJCWJyY20sYWNiLXBhY2tldHMtaW5mbGlnaHQ7CisKKwkJLi4uCisJCXN3aXRjaEAwIHsKKwkJCXJlZyA9IDwwIDA+OworCQkJI3NpemUtY2VsbHMgPSA8MD47CisJCQkjYWRkcmVzcy1jZWxscyA8MT47CisKKwkJCXBvcnRAMCB7CisJCQkJbGFiZWwgPSAiZ3BoeSI7CisJCQkJcmVnID0gPDA+OworCQkJfTsKKwkJCS4uLgorCQl9OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9icmNtLGJjbWdlbmV0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYnJjbSxiY21nZW5ldC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDUxZmVmMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYnJjbSxiY21nZW5ldC50eHQKQEAgLTAsMCArMSwxMjEgQEAKKyogQnJvYWRjb20gQkNNN3h4eCBFdGhlcm5ldCBDb250cm9sbGVyIChHRU5FVCkKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGNvbnRhaW4gb25lIG9mICJicmNtLGdlbmV0LXYxIiwgImJyY20sZ2VuZXQtdjIiLAorICAiYnJjbSxnZW5ldC12MyIsICJicmNtLGdlbmV0LXY0Ii4KKy0gcmVnOiBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorLSBpbnRlcnJ1cHRzOiBtdXN0IGJlIHR3byBjZWxscywgdGhlIGZpcnN0IGNlbGwgaXMgdGhlIGdlbmVyYWwgcHVycG9zZQorICBpbnRlcnJ1cHQgbGluZSwgd2hpbGUgdGhlIHNlY29uZCBjZWxsIGlzIHRoZSBpbnRlcnJ1cHQgZm9yIHRoZSByaW5nCisgIFJYIGFuZCBUWCBxdWV1ZXMgb3BlcmF0aW5nIGluIHJpbmcgbW9kZQorLSBwaHktbW9kZTogc2VlIGV0aGVybmV0LnR4dCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeQorLSAjYWRkcmVzcy1jZWxsczogc2hvdWxkIGJlIDEKKy0gI3NpemUtY2VsbHM6IHNob3VsZCBiZSAxCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrczogV2hlbiBwcm92aWRlZCwgbXVzdCBiZSB0d28gcGhhbmRsZXMgdG8gdGhlIGZ1bmN0aW9uYWwgY2xvY2tzIG5vZGVzCisgIG9mIHRoZSBHRU5FVCBibG9jay4gVGhlIGZpcnN0IHBoYW5kbGUgaXMgdGhlIG1haW4gR0VORVQgY2xvY2sgdXNlZCBkdXJpbmcKKyAgbm9ybWFsIG9wZXJhdGlvbiwgd2hpbGUgdGhlIHNlY29uZCBwaGFuZGxlIGlzIHRoZSBXYWtlLW9uLUxBTiBjbG9jay4KKy0gY2xvY2stbmFtZXM6IFdoZW4gcHJvdmlkZWQsIG5hbWVzIG9mIHRoZSBmdW5jdGlvbmFsIGNsb2NrIHBoYW5kbGVzLCBmaXJzdAorICBuYW1lIHNob3VsZCBiZSAiZW5ldCIgYW5kIHNlY29uZCBzaG91bGQgYmUgImVuZXQtd29sIi4KKworLSBwaHktaGFuZGxlOiBTZWUgZXRoZXJuZXQudHh0IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5OyB1c2VkIHRvIGRlc2NyaWJlCisgIGNvbmZpZ3VyYXRpb25zIHdoZXJlIGEgUEhZIChpbnRlcm5hbCBvciBleHRlcm5hbCkgaXMgdXNlZC4KKworLSBmaXhlZC1saW5rOiBXaGVuIHRoZSBHRU5FVCBpbnRlcmZhY2UgaXMgY29ubmVjdGVkIHRvIGEgTW9DQSBoYXJkd2FyZSBibG9jayBvcgorICB3aGVuIG9wZXJhdGluZyBpbiBhIFJHTUlJIHRvIFJHTUlJIHR5cGUgb2YgY29ubmVjdGlvbiwgb3Igd2hlbiB0aGUgTURJTyBidXMgaXMKKyAgdm9sdW50YXJpbHkgZGlzYWJsZWQsIHRoaXMgcHJvcGVydHkgc2hvdWxkIGJlIHVzZWQgdG8gZGVzY3JpYmUgdGhlICJmaXhlZCBsaW5rIi4KKyAgU2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZml4ZWQtbGluay50eHQgZm9yIGluZm9ybWF0aW9uIG9uCisgIHRoZSBwcm9wZXJ0eSBzcGVjaWZpY3MKKworUmVxdWlyZWQgY2hpbGQgbm9kZXM6CisKKy0gbWRpbyBidXMgbm9kZTogdGhpcyBub2RlIHNob3VsZCBhbHdheXMgYmUgcHJlc2VudCByZWdhcmxlc3Mgb2YgdGhlIFBIWQorICBjb25maWd1cmF0aW9uIG9mIHRoZSBHRU5FVCBpbnN0YW5jZQorCitNRElPIGJ1cyBub2RlIHJlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogc2hvdWxkIGNvbnRhaW4gb25lIG9mICJicmNtLGdlbmV0LW1kaW8tdjEiLCAiYnJjbSxnZW5ldC1tZGlvLXYyIgorICAiYnJjbSxnZW5ldC1tZGlvLXYzIiwgImJyY20sZ2VuZXQtbWRpby12NCIsIHRoZSB2ZXJzaW9uIGhhcyB0byBtYXRjaCB0aGUKKyAgcGFyZW50IG5vZGUgY29tcGF0aWJsZSBwcm9wZXJ0eSAoZS5nOiBicmNtLGdlbmV0LXY0IHBhaXJzIHdpdGgKKyAgYnJjbSxnZW5ldC1tZGlvLXY0KQorLSByZWc6IGFkZHJlc3MgYW5kIGxlbmd0aCByZWxhdGl2ZSB0byB0aGUgcGFyZW50IG5vZGUgYmFzZSByZWdpc3RlciBhZGRyZXNzCistICNhZGRyZXNzLWNlbGxzOiBhZGRyZXNzIGNlbGwgZm9yIE1ESU8gYnVzIGFkZHJlc3NpbmcsIHNob3VsZCBiZSAxCistICNzaXplLWNlbGxzOiBzaXplIG9mIHRoZSBjZWxscyBmb3IgTURJTyBidXMgYWRkcmVzc2luZywgc2hvdWxkIGJlIDAKKworRXRoZXJuZXQgUEhZIG5vZGUgcHJvcGVydGllczoKKworU2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGh5LnR4dCBmb3IgdGhlIGxpc3Qgb2YgcmVxdWlyZWQgYW5kCitvcHRpb25hbCBwcm9wZXJ0aWVzLgorCitJbnRlcm5hbCBHaWdhYml0IFBIWSBleGFtcGxlOgorCitldGhlcm5ldEBmMGI2MDAwMCB7CisJcGh5LW1vZGUgPSAiaW50ZXJuYWwiOworCXBoeS1oYW5kbGUgPSA8JnBoeTE+OworCW1hYy1hZGRyZXNzID0gWyAwMCAxMCAxOCAzNiAyMyAxYSBdOworCWNvbXBhdGlibGUgPSAiYnJjbSxnZW5ldC12NCI7CisJI2FkZHJlc3MtY2VsbHMgPSA8MHgxPjsKKwkjc2l6ZS1jZWxscyA9IDwweDE+OworCXJlZyA9IDwweGYwYjYwMDAwIDB4ZmM0Yz47CisJaW50ZXJydXB0cyA9IDwweDAgMHgxNCAweDA+LCA8MHgwIDB4MTUgMHgwPjsKKworCW1kaW9AZTE0IHsKKwkJY29tcGF0aWJsZSA9ICJicmNtLGdlbmV0LW1kaW8tdjQiOworCQkjYWRkcmVzcy1jZWxscyA9IDwweDE+OworCQkjc2l6ZS1jZWxscyA9IDwweDA+OworCQlyZWcgPSA8MHhlMTQgMHg4PjsKKworCQlwaHkxOiBldGhlcm5ldC1waHlAMSB7CisJCQltYXgtc3BlZWQgPSA8MTAwMD47CisJCQlyZWcgPSA8MHgxPjsKKwkJCWNvbXBhdGlibGUgPSAiYnJjbSwyOG5tLWdwaHkiLCAiZXRoZXJuZXQtcGh5LWllZWU4MDIuMy1jMjIiOworCQl9OworCX07Cit9OworCitNb0NBIGludGVyZmFjZSAvIE1BQyB0byBNQUMgZXhhbXBsZToKKworZXRoZXJuZXRAZjBiODAwMDAgeworCXBoeS1tb2RlID0gIm1vY2EiOworCWZpeGVkLWxpbmsgPSA8MSAwIDEwMDAgMCAwPjsKKwltYWMtYWRkcmVzcyA9IFsgMDAgMTAgMTggMzYgMjQgMWEgXTsKKwljb21wYXRpYmxlID0gImJyY20sZ2VuZXQtdjQiOworCSNhZGRyZXNzLWNlbGxzID0gPDB4MT47CisJI3NpemUtY2VsbHMgPSA8MHgxPjsKKwlyZWcgPSA8MHhmMGI4MDAwMCAweGZjNGM+OworCWludGVycnVwdHMgPSA8MHgwIDB4MTYgMHgwPiwgPDB4MCAweDE3IDB4MD47CisKKwltZGlvQGUxNCB7CisJCWNvbXBhdGlibGUgPSAiYnJjbSxnZW5ldC1tZGlvLXY0IjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MHgxPjsKKwkJI3NpemUtY2VsbHMgPSA8MHgwPjsKKwkJcmVnID0gPDB4ZTE0IDB4OD47CisJfTsKK307CisKKworRXh0ZXJuYWwgTURJTy1jb25uZWN0ZWQgR2lnYWJpdCBQSFkvc3dpdGNoOgorCitldGhlcm5ldEBmMGJhMDAwMCB7CisJcGh5LW1vZGUgPSAicmdtaWkiOworCXBoeS1oYW5kbGUgPSA8JnBoeTA+OworCW1hYy1hZGRyZXNzID0gWyAwMCAxMCAxOCAzNiAyNiAxYSBdOworCWNvbXBhdGlibGUgPSAiYnJjbSxnZW5ldC12NCI7CisJI2FkZHJlc3MtY2VsbHMgPSA8MHgxPjsKKwkjc2l6ZS1jZWxscyA9IDwweDE+OworCXJlZyA9IDwweGYwYmEwMDAwIDB4ZmM0Yz47CisJaW50ZXJydXB0cyA9IDwweDAgMHgxOCAweDA+LCA8MHgwIDB4MTkgMHgwPjsKKworCW1kaW9AMGUxNCB7CisJCWNvbXBhdGlibGUgPSAiYnJjbSxnZW5ldC1tZGlvLXY0IjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MHgxPjsKKwkJI3NpemUtY2VsbHMgPSA8MHgwPjsKKwkJcmVnID0gPDB4ZTE0IDB4OD47CisKKwkJcGh5MDogZXRoZXJuZXQtcGh5QDAgeworCQkJbWF4LXNwZWVkID0gPDEwMDA+OworCQkJcmVnID0gPDB4MD47CisJCQljb21wYXRpYmxlID0gImJyY20sYmNtNTMxMjUiLCAiZXRoZXJuZXQtcGh5LWllZWU4MDIuMy1jMjIiOworCQl9OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9icmNtLGlwcm9jLW1kaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9icmNtLGlwcm9jLW1kaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYTllZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JyY20saXByb2MtbWRpby50eHQKQEAgLTAsMCArMSwyMyBAQAorKiBCcm9hZGNvbSBpUHJvYyBNRElPIGJ1cyBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiYnJjbSxpcHJvYy1tZGlvIgorLSByZWc6IGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgTURJTyBpbnRlcmZhY2UKKy0gI3NpemUtY2VsbHM6IG11c3QgYmUgMQorLSAjYWRkcmVzcy1jZWxsczogbXVzdCBiZSAwCisKK0NoaWxkIG5vZGVzIG9mIHRoaXMgTURJTyBidXMgY29udHJvbGxlciBub2RlIGFyZSBzdGFuZGFyZCBFdGhlcm5ldCBQSFkgZGV2aWNlCitub2RlcyBhcyBkZXNjcmliZWQgaW4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9waHkudHh0CisKK0V4YW1wbGU6CisKK21kaW9AMTgwMDIwMDAgeworCWNvbXBhdGlibGUgPSAiYnJjbSxpcHJvYy1tZGlvIjsKKwlyZWcgPSA8MHgxODAwMjAwMCAweDg+OworCSNzaXplLWNlbGxzID0gPDE+OworCSNhZGRyZXNzLWNlbGxzID0gPDA+OworCisJZW5ldC1ncGh5QDAgeworCQlyZWcgPSA8MD47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JyY20sc3lzdGVtcG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JyY20sc3lzdGVtcG9ydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc3ZGEzNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYnJjbSxzeXN0ZW1wb3J0LnR4dApAQCAtMCwwICsxLDMwIEBACisqIEJyb2FkY29tIEJDTTd4eHggRXRoZXJuZXQgU3lzdGVtcG9ydCBDb250cm9sbGVyIChTWVNURU1QT1JUKQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mICJicmNtLHN5c3RlbXBvcnQtdjEuMDAiIG9yICJicmNtLHN5c3RlbXBvcnQiCistIHJlZzogYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UuCistIGludGVycnVwdHM6IGludGVycnVwdHMgZm9yIHRoZSBkZXZpY2UsIGZpcnN0IGNlbGwgbXVzdCBiZSBmb3IgdGhlIHJ4CisgIGludGVycnVwdHMsIGFuZCB0aGUgc2Vjb25kIGNlbGwgc2hvdWxkIGJlIGZvciB0aGUgdHJhbnNtaXQgcXVldWVzLiBBbgorICBvcHRpb25hbCB0aGlyZCBpbnRlcnJ1cHQgY2VsbCBmb3IgV2FrZS1vbi1MQU4gY2FuIGJlIHNwZWNpZmllZAorLSBsb2NhbC1tYWMtYWRkcmVzczogRXRoZXJuZXQgTUFDIGFkZHJlc3MgKDQ4IGJpdHMpIG9mIHRoaXMgYWRhcHRlcgorLSBwaHktbW9kZTogU2hvdWxkIGJlIGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIFBIWSBpbnRlcmZhY2UgdG8gdGhlCisgIEV0aGVybmV0IHN3aXRjaC9QSFksIHNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2V0aGVybmV0LnR4dAorLSBmaXhlZC1saW5rOiBzZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9maXhlZC1saW5rLnR4dCBmb3IKKyAgdGhlIHByb3BlcnR5IHNwZWNpZmljIGRldGFpbHMKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gc3lzdGVtcG9ydCxudW0tdGllcjItYXJiOiBudW1iZXIgb2YgdGllciAyIGFyYml0ZXJzLCBhbiBpbnRlZ2VyCistIHN5c3RlbXBvcnQsbnVtLXRpZXIxLWFyYjogbnVtYmVyIG9mIHRpZXIgMSBhcmJpdGVycywgYW4gaW50ZWdlcgorLSBzeXN0ZW1wb3J0LG51bS10eHE6IG51bWJlciBvZiBIVyB0cmFuc21pdCBxdWV1ZXMsIGFuIGludGVnZXIKKy0gc3lzdGVtcG9ydCxudW0tcnhxOiBudW1iZXIgb2YgSFcgcmVjZWl2ZSBxdWV1ZXMsIGFuIGludGVnZXIKKworRXhhbXBsZToKK2V0aGVybmV0QGYwNGEwMDAwIHsKKwljb21wYXRpYmxlID0gImJyY20sc3lzdGVtcG9ydC12MS4wMCI7CisJcmVnID0gPDB4ZjA0YTAwMDAgMHg0NjUwPjsKKwlsb2NhbC1tYWMtYWRkcmVzcyA9IFsgMDAgMTEgMjIgMzMgNDQgNTUgXTsKKwlmaXhlZC1saW5rID0gPDAgMSAxMDAwIDAgMD47CisJcGh5LW1vZGUgPSAiZ21paSI7CisJaW50ZXJydXB0cyA9IDwweDAgMHgxNiAweDA+LAorCQk8MHgwIDB4MTcgMHgwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JyY20sdW5pbWFjLW1kaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9icmNtLHVuaW1hYy1tZGlvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjBiYjQyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9icmNtLHVuaW1hYy1tZGlvLnR4dApAQCAtMCwwICsxLDM5IEBACisqIEJyb2FkY29tIFVuaU1BQyBNRElPIGJ1cyBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBvbmUgZnJvbSAiYnJjbSxnZW5ldC1tZGlvLXYxIiwgImJyY20sZ2VuZXQtbWRpby12MiIsCisgICJicmNtLGdlbmV0LW1kaW8tdjMiLCAiYnJjbSxnZW5ldC1tZGlvLXY0IiBvciAiYnJjbSx1bmltYWMtbWRpbyIKKy0gcmVnOiBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ3NpdGVyIHNldCBmb3IgdGhlIGRldmljZSwgZmlyc3Qgb25lIGlzIHRoZQorICBiYXNlIHJlZ2lzdGVyLCBhbmQgdGhlIHNlY29uZCBvbmUgaXMgb3B0aW9uYWwgYW5kIGZvciBpbmRpcmVjdCBhY2Nlc3NlcyB0bworICBsYXJnZXIgdGhhbiAxNi1iaXRzIE1ESU8gdHJhbnNhY3Rpb25zCistIHJlZy1uYW1lczogbmFtZShzKSBvZiB0aGUgcmVnaXN0ZXIgbXVzdCBiZSAibWRpbyIgYW5kIG9wdGlvbmFsICJtZGlvX2luZGlyX3J3IgorLSAjc2l6ZS1jZWxsczogbXVzdCBiZSAxCistICNhZGRyZXNzLWNlbGxzOiBtdXN0IGJlIDAKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gaW50ZXJydXB0czogbXVzdCBiZSBvbmUgaWYgdGhlIGludGVycnVwdCBpcyBzaGFyZWQgd2l0aCB0aGUgRXRoZXJuZXQgTUFDIG9yCisgIEV0aGVybmV0IHN3aXRjaCB0aGlzIE1ESU8gYmxvY2sgaXMgaW50ZWdyYXRlZCBmcm9tLCBvciBtdXN0IGJlIHR3bywgaWYgdGhlcmUKKyAgYXJlIHR3byBzZXBhcmF0ZSBpbnRlcnJ1cHRzLCBmaXJzdCBvbmUgbXVzdCBiZSAibWRpbyBkb25lIiBhbmQgc2Vjb25kIG11c3QgYmUKKyAgZm9yICJtZGlvIGVycm9yIgorLSBpbnRlcnJ1cHQtbmFtZXM6IG11c3QgYmUgIm1kaW9fZG9uZV9lcnJvciIgd2hlbiB0aGVyZSBpcyBhIHNoYXJlIGludGVycnVwdCBmZWQKKyAgdG8gdGhpcyBoYXJkd2FyZSBibG9jaywgb3IgbXVzdCBiZSAibWRpb19kb25lIiBmb3IgdGhlIGZpcnN0IGludGVycnVwdCBhbmQKKyAgIm1kaW9fZXJyb3IiIGZvciB0aGUgc2Vjb25kIHdoZW4gdGhlcmUgYXJlIHNlcGFyYXRlIGludGVycnVwdHMKKworQ2hpbGQgbm9kZXMgb2YgdGhpcyBNRElPIGJ1cyBjb250cm9sbGVyIG5vZGUgYXJlIHN0YW5kYXJkIEV0aGVybmV0IFBIWSBkZXZpY2UKK25vZGVzIGFzIGRlc2NyaWJlZCBpbiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3BoeS50eHQKKworRXhhbXBsZToKKworbWRpb0A0MDNjMCB7CisJY29tcGF0aWJsZSA9ICJicmNtLHVuaW1hYy1tZGlvIjsKKwlyZWcgPSA8MHg0MDNjMCAweDggMHg0MDMwMCAweDE4PjsKKwlyZWctbmFtZXMgPSAibWRpbyIsICJtZGlvX2luZGlyX3J3IjsKKwkjc2l6ZS1jZWxscyA9IDwxPjsKKwkjYWRkcmVzcy1jZWxscyA9IDwwPjsKKworCS4uLgorCXBoeUAwIHsKKwkJY29tcGF0aWJsZSA9ICJldGhlcm5ldC1waHktaWVlZTgwMi4zLWMyMiI7CisJCXJlZyA9IDwwPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYnJvYWRjb20tYmNtODd4eC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Jyb2FkY29tLWJjbTg3eHgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjODZkNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Jyb2FkY29tLWJjbTg3eHgudHh0CkBAIC0wLDAgKzEsMjkgQEAKK1RoZSBCcm9hZGNvbSBCQ004N1hYIGRldmljZXMgYXJlIGEgZmFtaWx5IG9mIDEwRyBFdGhlcm5ldCBQSFlzLiAgVGhleQoraGF2ZSB0aGVzZSBiaW5kaW5ncyBpbiBhZGRpdGlvbiB0byB0aGUgc3RhbmRhcmQgUEhZIGJpbmRpbmdzLgorCitDb21wYXRpYmxlOiBTaG91bGQgY29udGFpbiAiYnJvYWRjb20sYmNtODcwNiIgb3IgImJyb2FkY29tLGJjbTg3MjciIGFuZAorICAgICAgICAgICAgImV0aGVybmV0LXBoeS1pZWVlODAyLjMtYzQ1IgorCitPcHRpb25hbCBQcm9wZXJ0aWVzOgorCistIGJyb2FkY29tLGM0NS1yZWctaW5pdCA6IG9uZSBvZiBtb3JlIHNldHMgb2YgNCBjZWxscy4gIFRoZSBmaXJzdCBjZWxsCisgIGlzIHRoZSBNRElPIE1hbmFnZWFibGUgRGV2aWNlIChNTUQpIGFkZHJlc3MsIHRoZSBzZWNvbmQgYSByZWdpc3RlcgorICBhZGRyZXNzIHdpdGhpbiB0aGUgTU1ELCB0aGUgdGhpcmQgY2VsbCBjb250YWlucyBhIG1hc2sgdG8gYmUgQU5EZWQKKyAgd2l0aCB0aGUgZXhpc3RpbmcgcmVnaXN0ZXIgdmFsdWUsIGFuZCB0aGUgZm91cnRoIGNlbGwgaXMgT1JlZCB3aXRoCisgIGhlIHJlc3VsdCB0byB5aWVsZCB0aGUgbmV3IHJlZ2lzdGVyIHZhbHVlLiAgSWYgdGhlIHRoaXJkIGNlbGwgaGFzIGEKKyAgdmFsdWUgb2YgemVybywgbm8gcmVhZCBvZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgcGVyZm9ybWVkLgorCitFeGFtcGxlOgorCisJZXRoZXJuZXQtcGh5QDUgeworCQlyZWcgPSA8NT47CisJCWNvbXBhdGlibGUgPSAiYnJvYWRjb20sYmNtODcwNiIsICJldGhlcm5ldC1waHktaWVlZTgwMi4zLWM0NSI7CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8+OworCQlpbnRlcnJ1cHRzID0gPDEyIDg+OyAvKiBQaW4gMTIsIGFjdGl2ZSBsb3cgKi8KKwkJLyoKKwkJICogU2V0IFBNRCBEaWdpdGFsIENvbnRyb2wgUmVnaXN0ZXIgZm9yCisJCSAqIEdQSU9bMV0gVHgvUngKKwkJICogR1BJT1swXSBSNjQgU3luYyBBY3F1aXJlZAorCQkgKi8KKwkJYnJvYWRjb20sYzQ1LXJlZy1pbml0ID0gPDEgMHhjODA4IDB4ZmY4ZiAweDcwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYWx4ZWRhLXhnbWFjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FseGVkYS14Z21hYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhhZTk5NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FseGVkYS14Z21hYy50eHQKQEAgLTAsMCArMSwxOCBAQAorKiBDYWx4ZWRhIEhpZ2hiYW5rIDEwR2IgWEdNQUMgRXRoZXJuZXQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAiY2FseGVkYSxoYi14Z21hYyIKKy0gcmVnIDogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKy0gaW50ZXJydXB0cyA6IFNob3VsZCBjb250YWluIDMgeGdtYWMgaW50ZXJydXB0cy4gVGhlIDFzdCBpcyBtYWluIGludGVycnVwdC4KKyAgVGhlIDJuZCBpcyBwd3IgbWd0IGludGVycnVwdC4gVGhlIDNyZCBpcyBsb3cgcG93ZXIgc3RhdGUgaW50ZXJydXB0LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBkbWEtY29oZXJlbnQgICAgICA6IFByZXNlbnQgaWYgZG1hIG9wZXJhdGlvbnMgYXJlIGNvaGVyZW50CisKK0V4YW1wbGU6CisKK2V0aGVybmV0QGZmZjUwMDAwIHsKKyAgICAgICAgY29tcGF0aWJsZSA9ICJjYWx4ZWRhLGhiLXhnbWFjIjsKKyAgICAgICAgcmVnID0gPDB4ZmZmNTAwMDAgMHgxMDAwPjsKKyAgICAgICAgaW50ZXJydXB0cyA9IDwwIDc3IDQgIDAgNzggNCAgMCA3OSA0PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9hdG1lbC1jYW4udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vYXRtZWwtY2FuLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGU1MmEwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vYXRtZWwtY2FuLnR4dApAQCAtMCwwICsxLDE0IEBACisqIEFUOTEgQ0FOICoKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImF0bWVsLGF0OTFzYW05MjYzLWNhbiIgb3IgImF0bWVsLGF0OTFzYW05eDUtY2FuIgorICAtIHJlZzogU2hvdWxkIGNvbnRhaW4gQ0FOIGNvbnRyb2xsZXIgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKyAgLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBJUlEgbGluZSBmb3IgdGhlIENBTiBjb250cm9sbGVyCisKK0V4YW1wbGU6CisKKwljYW4wOiBjYW5AZjAwMGMwMDAgeworCQljb21wYXRpYmxlID0gImF0bWVsLGF0OTFzYW05eDUtY2FuIjsKKwkJcmVnID0gPDB4ZjAwMGMwMDAgMHgzMDA+OworCQlpbnRlcnJ1cHRzID0gPDQwIDQgNT4KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vY19jYW4udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vY19jYW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMWQ4YjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9jX2Nhbi50eHQKQEAgLTAsMCArMSw1NCBAQAorQm9zY2ggQ19DQU4vRF9DQU4gY29udHJvbGxlciBEZXZpY2UgVHJlZSBCaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlCQk6IFNob3VsZCBiZSAiYm9zY2gsY19jYW4iIGZvciBDX0NBTiBjb250cm9sbGVycyBhbmQKKwkJCSAgImJvc2NoLGRfY2FuIiBmb3IgRF9DQU4gY29udHJvbGxlcnMuCisJCQkgIENhbiBiZSAidGksZHJhNy1kX2NhbiIsICJ0aSxhbTMzNTItZF9jYW4iIG9yCisJCQkgICJ0aSxhbTQzNzItZF9jYW4iLgorLSByZWcJCQk6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgQ19DQU4vRF9DQU4KKwkJCSAgcmVnaXN0ZXJzIG1hcAorLSBpbnRlcnJ1cHRzCQk6IHByb3BlcnR5IHdpdGggYSB2YWx1ZSBkZXNjcmliaW5nIHRoZSBpbnRlcnJ1cHQKKwkJCSAgbnVtYmVyCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHRpLGh3bW9kcwkJOiBNdXN0IGJlICJkX2NhbjxuPiIgb3IgImNfY2FuPG4+IiwgbiBiZWluZyB0aGUKKwkJCSAgaW5zdGFuY2UgbnVtYmVyCistIHN5c2Nvbi1yYW1pbml0CTogSGFuZGxlIHRvIHN5c3RlbSBjb250cm9sIHJlZ2lvbiB0aGF0IGNvbnRhaW5zIHRoZQorCQkJICBSQU1JTklUIHJlZ2lzdGVyLCByZWdpc3RlciBvZmZzZXQgdG8gdGhlIFJBTUlOSVQKKwkJCSAgcmVnaXN0ZXIgYW5kIHRoZSBDQU4gaW5zdGFuY2UgbnVtYmVyICgwIG9mZnNldCkuCisKK05vdGU6ICJ0aSxod21vZHMiIGZpZWxkIGlzIHVzZWQgdG8gZmV0Y2ggdGhlIGJhc2UgYWRkcmVzcyBhbmQgaXJxCityZXNvdXJjZXMgZnJvbSBUSSwgb21hcCBod21vZCBkYXRhIGJhc2UgZHVyaW5nIGRldmljZSByZWdpc3RyYXRpb24uCitGdXR1cmUgcGxhbiBpcyB0byBtaWdyYXRlIGh3bW9kIGRhdGEgYmFzZSBjb250ZW50cyBpbnRvIGRldmljZSB0cmVlCitibG9iIHNvIHRoYXQsIGFsbCB0aGUgcmVxdWlyZWQgZGF0YSB3aWxsIGJlIHVzZWQgZnJvbSBkZXZpY2UgdHJlZSBkdHMKK2ZpbGUuCisKK0V4YW1wbGU6CisKK1N0ZXAxOiBTb0MgY29tbW9uIC5kdHNpIGZpbGUKKworCWRjYW4xOiBkX2NhbkA0ODFkMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiYm9zY2gsZF9jYW4iOworCQlyZWcgPSA8MHg0ODFkMDAwMCAweDIwMDA+OworCQlpbnRlcnJ1cHRzID0gPDU1PjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmaW50Yz47CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJfTsKKworKG9yKQorCisJZGNhbjE6IGRfY2FuQDQ4MWQwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJib3NjaCxkX2NhbiI7CisJCXRpLGh3bW9kcyA9ICJkX2NhbjEiOworCQlyZWcgPSA8MHg0ODFkMDAwMCAweDIwMDA+OworCQlpbnRlcnJ1cHRzID0gPDU1PjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmaW50Yz47CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJfTsKKworU3RlcCAyOiBib2FyZCBzcGVjaWZpYyAuZHRzIGZpbGUKKworCSZkY2FuMSB7CisJCXN0YXR1cyA9ICJva2F5IjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vY2M3NzAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vY2M3NzAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3MDI3YmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9jYzc3MC50eHQKQEAgLTAsMCArMSw1MyBAQAorTWVtb3J5IG1hcHBlZCBCb3NjaCBDQzc3MCBhbmQgSW50ZWwgQU44MjUyNyBDQU4gY29udHJvbGxlcgorCitOb3RlOiBUaGUgQ0M3NzAgaXMgYSBDQU4gY29udHJvbGxlciBmcm9tIEJvc2NoLCB3aGljaCBpcyAxMDAlCitjb21wYXRpYmxlIHdpdGggdGhlIG9sZCBBTjgyNTI3IGZyb20gSW50ZWwsIGJ1dCB3aXRoICJidWdzIiBiZWluZyBmaXhlZC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJib3NjaCxjYzc3MCIgZm9yIHRoZSBDQzc3MCBhbmQgImludGMsODI1MjciCisJZm9yIHRoZSBBTjgyNTI3LgorCistIHJlZyA6IHNob3VsZCBzcGVjaWZ5IHRoZSBjaGlwIHNlbGVjdCwgYWRkcmVzcyBvZmZzZXQgYW5kIHNpemUgcmVxdWlyZWQKKwl0byBtYXAgdGhlIHJlZ2lzdGVycyBvZiB0aGUgY29udHJvbGxlci4gVGhlIHNpemUgaXMgdXN1YWxseSAweDgwLgorCistIGludGVycnVwdHMgOiBwcm9wZXJ0eSB3aXRoIGEgdmFsdWUgZGVzY3JpYmluZyB0aGUgaW50ZXJydXB0IHNvdXJjZQorCShudW1iZXIgYW5kIHNlbnNpdGl2aXR5KSByZXF1aXJlZCBmb3IgdGhlIGNvbnRyb2xsZXIuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gYm9zY2gsZXh0ZXJuYWwtY2xvY2stZnJlcXVlbmN5IDogZnJlcXVlbmN5IG9mIHRoZSBleHRlcm5hbCBvc2NpbGxhdG9yCisJY2xvY2sgaW4gSHouIE5vdGUgdGhhdCB0aGUgaW50ZXJuYWwgY2xvY2sgZnJlcXVlbmN5IHVzZWQgYnkgdGhlCisJY29udHJvbGxlciBpcyBoYWxmIG9mIHRoYXQgdmFsdWUuIElmIG5vdCBzcGVjaWZpZWQsIGEgZGVmYXVsdAorCXZhbHVlIG9mIDE2MDAwMDAwICgxNiBNSHopIGlzIHVzZWQuCisKKy0gYm9zY2gsY2xvY2stb3V0LWZyZXF1ZW5jeSA6IHNsb2NrIGZyZXF1ZW5jeSBpbiBIeiBvbiB0aGUgQ0xLT1VUIHBpbi4KKwlJZiBub3Qgc3BlY2lmaWVkIG9yIGlmIHRoZSBzcGVjaWZpZWQgdmFsdWUgaXMgMCwgdGhlIENMS09VVCBwaW4KKwl3aWxsIGJlIGRpc2FibGVkLgorCistIGJvc2NoLHNsZXctcmF0ZSA6IHNsZXcgcmF0ZSBvZiB0aGUgQ0xLT1VUIHNpZ25hbC4gSWYgbm90IHNwZWNpZmllZCwKKwlhIHJlc29uYWJsZSB2YWx1ZSB3aWxsIGJlIGNhbGN1bGF0ZWQuCisKKy0gYm9zY2gsZGlzY29ubmVjdC1yeDAtaW5wdXQgOiBzZWUgZGF0YSBzaGVldC4KKworLSBib3NjaCxkaXNjb25uZWN0LXJ4MS1pbnB1dCA6IHNlZSBkYXRhIHNoZWV0LgorCistIGJvc2NoLGRpc2Nvbm5lY3QtdHgxLW91dHB1dCA6IHNlZSBkYXRhIHNoZWV0LgorCistIGJvc2NoLHBvbGFyaXR5LWRvbWluYW50IDogc2VlIGRhdGEgc2hlZXQuCisKKy0gYm9zY2gsZGl2aWRlLW1lbW9yeS1jbG9jayA6IHNlZSBkYXRhIHNoZWV0LgorCistIGJvc2NoLGlzby1sb3ctc3BlZWQtbXV4IDogc2VlIGRhdGEgc2hlZXQuCisKK0ZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLCBwbGVhc2UgaGF2ZSBhIGxvb2sgdG8gdGhlIENDNzcwIG9yIEFOODI1MjcuCisKK0V4YW1wbGVzOgorCitjYW5AMywxMDAgeworCWNvbXBhdGlibGUgPSAiYm9zY2gsY2M3NzAiOworCXJlZyA9IDwzIDB4MTAwIDB4ODA+OworCWludGVycnVwdHMgPSA8MiAwPjsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZtcGljPjsKKwlib3NjaCxleHRlcm5hbC1jbG9jay1mcmVxdWVuY3kgPSA8MTYwMDAwMDA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL2ZzbC1mbGV4Y2FuLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL2ZzbC1mbGV4Y2FuLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmQ2Y2MzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vZnNsLWZsZXhjYW4udHh0CkBAIC0wLDAgKzEsMjkgQEAKK0ZsZXhjYW4gQ0FOIGNvbnRyb2xsZXIgb24gRnJlZXNjYWxlJ3MgQVJNIGFuZCBQb3dlclBDIHN5c3RlbS1vbi1hLWNoaXAgKFNPQykuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAiZnNsLDxwcm9jZXNzb3I+LWZsZXhjYW4iCisKKyAgQW4gaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsc28gY2xhaW0gYW55IG9mIHRoZSBmb2xsb3dpbmcgY29tcGF0aWJsZXMKKyAgdGhhdCBpdCBpcyBmdWxseSBiYWNrd2FyZHMgY29tcGF0aWJsZSB3aXRoOgorCisgIC0gZnNsLHAxMDEwLWZsZXhjYW4KKworLSByZWcgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGlzIGRldmljZQorLSBpbnRlcnJ1cHRzIDogSW50ZXJydXB0IHR1cGxlIGZvciB0aGlzIGRldmljZQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIGNsb2NrLWZyZXF1ZW5jeSA6IFRoZSBvc2NpbGxhdG9yIGZyZXF1ZW5jeSBkcml2aW5nIHRoZSBmbGV4Y2FuIGRldmljZQorCistIHhjZWl2ZXItc3VwcGx5OiBSZWd1bGF0b3IgdGhhdCBwb3dlcnMgdGhlIENBTiB0cmFuc2NlaXZlcgorCitFeGFtcGxlOgorCisJY2FuQDFjMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wscDEwMTAtZmxleGNhbiI7CisJCXJlZyA9IDwweDFjMDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8NDggMHgyPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmbXBpYz47CisJCWNsb2NrLWZyZXF1ZW5jeSA9IDwyMDAwMDAwMDA+OyAvLyBmaWxsZWQgaW4gYnkgYm9vdGxvYWRlcgorCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9ncmNhbi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9ncmNhbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRlZjM0OQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL2dyY2FuLnR4dApAQCAtMCwwICsxLDI4IEBACitBZXJvZmxleCBHYWlzbGVyIEdSQ0FOIGFuZCBHUkhDQU4gQ0FOIGNvbnRyb2xsZXJzLgorCitUaGUgR1JDQU4gYW5kIENSSENBTiBDQU4gY29udHJvbGxlcnMgYXJlIGF2YWlsYWJsZSBpbiB0aGUgR1JMSUIgVkhETCBJUCBjb3JlCitsaWJyYXJ5LgorCitOb3RlOiBUaGVzZSBwcm9wZXJ0aWVzIGFyZSBidWlsdCBmcm9tIHRoZSBBTUJBIHBsdWcmcGxheSBpbiBhIExlb24gU1BBUkMgc3lzdGVtCisodGhlIG9yZGluYXJ5IGVudmlyb25tZW50IGZvciBHUkNBTiBhbmQgR1JIQ0FOKS4gVGhlcmUgYXJlIG5vIGR0cyBmaWxlcyBmb3IKK3NwYXJjLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIG5hbWUgOiBTaG91bGQgYmUgIkdBSVNMRVJfR1JDQU4iLCAiMDFfMDNkIiwgIkdBSVNMRVJfR1JIQ0FOIiBvciAiMDFfMDM0IgorCistIHJlZyA6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCisKKy0gZnJlcSA6IEZyZXF1ZW5jeSBvZiB0aGUgZXh0ZXJuYWwgb3NjaWxsYXRvciBjbG9jayBpbiBIeiAodGhlIGZyZXF1ZW5jeSBvZgorCXRoZSBhbWJhIGJ1cyBpbiB0aGUgb3JkaW5hcnkgY2FzZSkKKworLSBpbnRlcnJ1cHRzIDogSW50ZXJydXB0IG51bWJlciBmb3IgdGhpcyBkZXZpY2UKKworT3B0aW9uYWwgcHJvcGVydGllczoKKworLSBzeXN0ZW1pZCA6IElmIG5vdCBwcmVzZW50IG9yIGlmIHRoZSB2YWx1ZSBvZiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgMTYgYml0cworCW9mIHRoaXMgMzItYml0IHByb3BlcnR5IGlzIHNtYWxsZXIgdGhhbiBHUkNBTl9UWEJVR19TQUZFX0dSTElCX1ZFUlNJT04KKwlhIGJ1ZyB3b3JrYXJvdW5kIGlzIGFjdGl2YXRlZC4KKworRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gbG9vayBpbiB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIEdMSUIgSVAgY29yZSBsaWJyYXJ5OgoraHR0cDovL3d3dy5nYWlzbGVyLmNvbS9wcm9kdWN0cy9ncmxpYi9ncmlwLnBkZgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vbV9jYW4udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vbV9jYW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMzMxNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9tX2Nhbi50eHQKQEAgLTAsMCArMSw2NyBAQAorQm9zY2ggTUNBTiBjb250cm9sbGVyIERldmljZSBUcmVlIEJpbmRpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUJCTogU2hvdWxkIGJlICJib3NjaCxtX2NhbiIgZm9yIE1fQ0FOIGNvbnRyb2xsZXJzCistIHJlZwkJCTogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSBNX0NBTgorCQkJICByZWdpc3RlcnMgbWFwIGFuZCBNZXNzYWdlIFJBTQorLSByZWctbmFtZXMJCTogU2hvdWxkIGJlICJtX2NhbiIgYW5kICJtZXNzYWdlX3JhbSIKKy0gaW50ZXJydXB0cwkJOiBTaG91bGQgYmUgdGhlIGludGVycnVwdCBudW1iZXIgb2YgTV9DQU4gaW50ZXJydXB0CisJCQkgIGxpbmUgMCBhbmQgbGluZSAxLCBjb3VsZCBiZSBzYW1lIGlmIHNoYXJpbmcKKwkJCSAgdGhlIHNhbWUgaW50ZXJydXB0LgorLSBpbnRlcnJ1cHQtbmFtZXMJOiBTaG91bGQgY29udGFpbiAiaW50MCIgYW5kICJpbnQxIgorLSBjbG9ja3MJCTogQ2xvY2tzIHVzZWQgYnkgY29udHJvbGxlciwgc2hvdWxkIGJlIGhvc3QgY2xvY2sKKwkJCSAgYW5kIENBTiBjbG9jay4KKy0gY2xvY2stbmFtZXMJCTogU2hvdWxkIGNvbnRhaW4gImhjbGsiIGFuZCAiY2NsayIKKy0gcGluY3RybC08bj4JCTogUGluY3RybCBzdGF0ZXMgYXMgZGVzY3JpYmVkIGluIGJpbmRpbmdzL3BpbmN0cmwvcGluY3RybC1iaW5kaW5ncy50eHQKKy0gcGluY3RybC1uYW1lcyAJOiBOYW1lcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBudW1iZXJlZCBwaW5jdHJsIHN0YXRlcworLSBib3NjaCxtcmFtLWNmZwk6IE1lc3NhZ2UgUkFNIGNvbmZpZ3VyYXRpb24gZGF0YS4KKwkJCSAgTXVsdGlwbGUgTV9DQU4gaW5zdGFuY2VzIGNhbiBzaGFyZSB0aGUgc2FtZSBNZXNzYWdlCisJCQkgIFJBTSBhbmQgZWFjaCBlbGVtZW50KGUuZyBSeCBGSUZPIG9yIFR4IEJ1ZmZlciBhbmQgZXRjKQorCQkJICBudW1iZXIgaW4gTWVzc2FnZSBSQU0gaXMgYWxzbyBjb25maWd1cmFibGUsCisJCQkgIHNvIHRoaXMgcHJvcGVydHkgaXMgdGVsbGluZyBkcml2ZXIgaG93IHRoZSBzaGFyZWQgb3IKKwkJCSAgcHJpdmF0ZSBNZXNzYWdlIFJBTSBhcmUgdXNlZCBieSB0aGlzIE1fQ0FOIGNvbnRyb2xsZXIuCisKKwkJCSAgVGhlIGZvcm1hdCBzaG91bGQgYmUgYXMgZm9sbG93czoKKwkJCSAgPG9mZnNldCBzaWRmX2VsZW1zIHhpZGZfZWxlbXMgcnhmMF9lbGVtcyByeGYxX2VsZW1zCisJCQkgICByeGJfZWxlbXMgdHhlX2VsZW1zIHR4Yl9lbGVtcz4KKwkJCSAgVGhlICdvZmZzZXQnIGlzIGFuIGFkZHJlc3Mgb2Zmc2V0IG9mIHRoZSBNZXNzYWdlIFJBTQorCQkJICB3aGVyZSB0aGUgZm9sbG93aW5nIGVsZW1lbnRzIHN0YXJ0IGZyb20uIFRoaXMgaXMKKwkJCSAgdXN1YWxseSBzZXQgdG8gMHgwIGlmIHlvdSdyZSB1c2luZyBhIHByaXZhdGUgTWVzc2FnZQorCQkJICBSQU0uIFRoZSByZW1haW4gY2VsbHMgYXJlIHVzZWQgdG8gc3BlY2lmeSBob3cgbWFueQorCQkJICBlbGVtZW50cyBhcmUgdXNlZCBmb3IgZWFjaCBGSUZPL0J1ZmZlci4KKworCQkJICBNX0NBTiBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIGVsZW1lbnRzIGFjY29yZGluZyB0byB1c2VyIG1hbnVhbDoKKwkJCSAgMTEtYml0IEZpbHRlcgkwLTEyOCBlbGVtZW50cyAvIDAtMTI4IHdvcmRzCisJCQkgIDI5LWJpdCBGaWx0ZXIJMC02NCBlbGVtZW50cyAvIDAtMTI4IHdvcmRzCisJCQkgIFJ4IEZJRk8gMAkwLTY0IGVsZW1lbnRzIC8gMC0xMTUyIHdvcmRzCisJCQkgIFJ4IEZJRk8gMQkwLTY0IGVsZW1lbnRzIC8gMC0xMTUyIHdvcmRzCisJCQkgIFJ4IEJ1ZmZlcnMJMC02NCBlbGVtZW50cyAvIDAtMTE1MiB3b3JkcworCQkJICBUeCBFdmVudCBGSUZPCTAtMzIgZWxlbWVudHMgLyAwLTY0IHdvcmRzCisJCQkgIFR4IEJ1ZmZlcnMJMC0zMiBlbGVtZW50cyAvIDAtNTc2IHdvcmRzCisKKwkJCSAgUGxlYXNlIHJlZmVyIHRvIDIuNC4xIE1lc3NhZ2UgUkFNIENvbmZpZ3VyYXRpb24gaW4KKwkJCSAgQm9zY2ggTV9DQU4gdXNlciBtYW51YWwgZm9yIGRldGFpbHMuCisKK0V4YW1wbGU6CitTb0MgZHRzaToKK21fY2FuMTogY2FuQDAyMGU4MDAwIHsKKwljb21wYXRpYmxlID0gImJvc2NoLG1fY2FuIjsKKwlyZWcgPSA8MHgwMjBlODAwMCAweDQwMDA+LCA8MHgwMjI5ODAwMCAweDQwMDA+OworCXJlZy1uYW1lcyA9ICJtX2NhbiIsICJtZXNzYWdlX3JhbSI7CisJaW50ZXJydXB0cyA9IDwwIDExNCAweDA0PiwKKwkJICAgICA8MCAxMTQgMHgwND47CisJaW50ZXJydXB0LW5hbWVzID0gImludDAiLCAiaW50MSI7CisJY2xvY2tzID0gPCZjbGtzIElNWDZTWF9DTEtfQ0FORkQ+LAorCQkgPCZjbGtzIElNWDZTWF9DTEtfQ0FORkQ+OworCWNsb2NrLW5hbWVzID0gImhjbGsiLCAiY2NsayI7CisJYm9zY2gsbXJhbS1jZmcgPSA8MHgwIDAgMCAzMiAwIDAgMCAxPjsKKwlzdGF0dXMgPSAiZGlzYWJsZWQiOworfTsKKworQm9hcmQgZHRzOgorJm1fY2FuMSB7CisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfbV9jYW4xPjsKKwlzdGF0dXMgPSAiZW5hYmxlZCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vbWljcm9jaGlwLG1jcDI1MXgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vbWljcm9jaGlwLG1jcDI1MXgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlMzcyM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9taWNyb2NoaXAsbWNwMjUxeC50eHQKQEAgLTAsMCArMSwyNSBAQAorKiBNaWNyb2NoaXAgTUNQMjUxWCBzdGFuZC1hbG9uZSBDQU4gY29udHJvbGxlciBkZXZpY2UgdHJlZSBiaW5kaW5ncworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZTogU2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorICAgLSAibWljcm9jaGlwLG1jcDI1MTAiIGZvciBNQ1AyNTEwLgorICAgLSAibWljcm9jaGlwLG1jcDI1MTUiIGZvciBNQ1AyNTE1LgorIC0gcmVnOiBTUEkgY2hpcCBzZWxlY3QuCisgLSBjbG9ja3M6IFRoZSBjbG9jayBmZWVkaW5nIHRoZSBDQU4gY29udHJvbGxlci4KKyAtIGludGVycnVwdC1wYXJlbnQ6IFRoZSBwYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIuCisgLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBJUlEgbGluZSBmb3IgdGhlIENBTiBjb250cm9sbGVyLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorIC0gdmRkLXN1cHBseTogUmVndWxhdG9yIHRoYXQgcG93ZXJzIHRoZSBDQU4gY29udHJvbGxlci4KKyAtIHhjZWl2ZXItc3VwcGx5OiBSZWd1bGF0b3IgdGhhdCBwb3dlcnMgdGhlIENBTiB0cmFuc2NlaXZlci4KKworRXhhbXBsZToKKwljYW4wOiBjYW5AMSB7CisJCWNvbXBhdGlibGUgPSAibWljcm9jaGlwLG1jcDI1MTUiOworCQlyZWcgPSA8MT47CisJCWNsb2NrcyA9IDwmY2xrMjRtPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzQ+OworCQlpbnRlcnJ1cHRzID0gPDEzIDB4Mj47CisJCXZkZC1zdXBwbHkgPSA8JnJlZzV2MD47CisJCXhjZWl2ZXItc3VwcGx5ID0gPCZyZWc1djA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9tcGM1eHh4LW1zY2FuLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL21wYzV4eHgtbXNjYW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmYTRmY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9tcGM1eHh4LW1zY2FuLnR4dApAQCAtMCwwICsxLDUzIEBACitDQU4gRGV2aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisoYykgMjAwNi0yMDA5IFNlY3JldCBMYWIgVGVjaG5vbG9naWVzIEx0ZAorR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgorCitmc2wsbXBjNTIwMC1tc2NhbiBub2RlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0luIGFkZGl0aW9uIHRvIHRoZSByZXF1aXJlZCBjb21wYXRpYmxlLSwgcmVnLSBhbmQgaW50ZXJydXB0LXByb3BlcnRpZXMsIHlvdSBjYW4KK2Fsc28gc3BlY2lmeSB3aGljaCBjbG9jayBzb3VyY2Ugc2hhbGwgYmUgdXNlZCBmb3IgdGhlIGNvbnRyb2xsZXI6CisKKy0gZnNsLG1zY2FuLWNsb2NrLXNvdXJjZSA6IGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGNsb2NrIHNvdXJjZS4gVmFsaWQgdmFsdWVzCisJCQkgICBhcmU6CSJpcCIgZm9yIGlwIGJ1cyBjbG9jaworCQkJCSAicmVmIiBmb3IgcmVmZXJlbmNlIGNsb2NrIChYVEFMKQorCQkJICAgInJlZiIgaXMgZGVmYXVsdCBpbiBjYXNlIHRoaXMgcHJvcGVydHkgaXMgbm90CisJCQkgICBwcmVzZW50LgorCitmc2wsbXBjNTEyMS1tc2NhbiBub2RlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0luIGFkZGl0aW9uIHRvIHRoZSByZXF1aXJlZCBjb21wYXRpYmxlLSwgcmVnLSBhbmQgaW50ZXJydXB0LXByb3BlcnRpZXMsIHlvdSBjYW4KK2Fsc28gc3BlY2lmeSB3aGljaCBjbG9jayBzb3VyY2UgYW5kIGRpdmlkZXIgc2hhbGwgYmUgdXNlZCBmb3IgdGhlIGNvbnRyb2xsZXI6CisKKy0gZnNsLG1zY2FuLWNsb2NrLXNvdXJjZSA6IGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGNsb2NrIHNvdXJjZS4gVmFsaWQgdmFsdWVzCisJCQkgICBhcmU6CSJpcCIgZm9yIGlwIGJ1cyBjbG9jaworCQkJCSJyZWYiIGZvciByZWZlcmVuY2UgY2xvY2sKKwkJCQkic3lzIiBmb3Igc3lzdGVtIGNsb2NrCisJCQkgICBJZiB0aGlzIHByb3BlcnR5IGlzIG5vdCBwcmVzZW50LCBhbiBvcHRpbWFsIENBTgorCQkJICAgY2xvY2sgc291cmNlIGFuZCBmcmVxdWVuY3kgYmFzZWQgb24gdGhlIHN5c3RlbQorCQkJICAgY2xvY2sgd2lsbCBiZSBzZWxlY3RlZC4gSWYgdGhpcyBpcyBub3QgcG9zc2libGUsCisJCQkgICB0aGUgcmVmZXJlbmNlIGNsb2NrIHdpbGwgYmUgdXNlZC4KKworLSBmc2wsbXNjYW4tY2xvY2stZGl2aWRlcjogZm9yIHRoZSByZWZlcmVuY2UgYW5kIHN5c3RlbSBjbG9jaywgYW4gYWRkaXRpb25hbAorCQkJICAgY2xvY2sgZGl2aWRlciBjYW4gYmUgc3BlY2lmaWVkLiBCeSBkZWZhdWx0LCBhCisJCQkgICB2YWx1ZSBvZiAxIGlzIHVzZWQuCisKK05vdGUgdGhhdCB0aGUgTVBDNTEyMSBSZXYuIDEgcHJvY2Vzc29yIGlzIG5vdCBzdXBwb3J0ZWQuCisKK0V4YW1wbGVzOgorCWNhbkAxMzAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsbXBjNTEyMS1tc2NhbiI7CisJCWludGVycnVwdHMgPSA8MTIgMHg4PjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmaXBpYz47CisJCXJlZyA9IDwweDEzMDAgMHg4MD47CisJfTsKKworCWNhbkAxMzgwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsbXBjNTEyMS1tc2NhbiI7CisJCWludGVycnVwdHMgPSA8MTMgMHg4PjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmaXBpYz47CisJCXJlZyA9IDwweDEzODAgMHg4MD47CisJCWZzbCxtc2Nhbi1jbG9jay1zb3VyY2UgPSAicmVmIjsKKwkJZnNsLG1zY2FuLWNsb2NrLWRpdmlkZXIgPSA8Mz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3JjYXJfY2FuLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3JjYXJfY2FuLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDJkODQ0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vcmNhcl9jYW4udHh0CkBAIC0wLDAgKzEsNDMgQEAKK1JlbmVzYXMgUi1DYXIgQ0FOIGNvbnRyb2xsZXIgRGV2aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInJlbmVzYXMsY2FuLXI4YTc3NzgiIGlmIENBTiBjb250cm9sbGVyIGlzIGEgcGFydCBvZiBSOEE3Nzc4IFNvQy4KKwkgICAgICAicmVuZXNhcyxjYW4tcjhhNzc3OSIgaWYgQ0FOIGNvbnRyb2xsZXIgaXMgYSBwYXJ0IG9mIFI4QTc3NzkgU29DLgorCSAgICAgICJyZW5lc2FzLGNhbi1yOGE3NzkwIiBpZiBDQU4gY29udHJvbGxlciBpcyBhIHBhcnQgb2YgUjhBNzc5MCBTb0MuCisJICAgICAgInJlbmVzYXMsY2FuLXI4YTc3OTEiIGlmIENBTiBjb250cm9sbGVyIGlzIGEgcGFydCBvZiBSOEE3NzkxIFNvQy4KKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIFItQ2FyIENBTiByZWdpc3RlciBtYXAuCistIGludGVycnVwdHM6IGludGVycnVwdCBzcGVjaWZpZXIgZm9yIHRoZSBzb2xlIGludGVycnVwdC4KKy0gY2xvY2tzOiBwaGFuZGxlcyBhbmQgY2xvY2sgc3BlY2lmaWVycyBmb3IgMyBDQU4gY2xvY2sgaW5wdXRzLgorLSBjbG9jay1uYW1lczogMyBjbG9jayBpbnB1dCBuYW1lIHN0cmluZ3M6ICJjbGtwMSIsICJjbGtwMiIsICJjYW5fY2xrIi4KKy0gcGluY3RybC0wOiBwaW4gY29udHJvbCBncm91cCB0byBiZSB1c2VkIGZvciB0aGlzIGNvbnRyb2xsZXIuCistIHBpbmN0cmwtbmFtZXM6IG11c3QgYmUgImRlZmF1bHQiLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSByZW5lc2FzLGNhbi1jbG9jay1zZWxlY3Q6IFItQ2FyIENBTiBDbG9jayBTb3VyY2UgU2VsZWN0LiBWYWxpZCB2YWx1ZXMgYXJlOgorCQkJICAgIDwweDA+IChkZWZhdWx0KSA6IFBlcmlwaGVyYWwgY2xvY2sgKGNsa3AxKQorCQkJICAgIDwweDE+IDogUGVyaXBoZXJhbCBjbG9jayAoY2xrcDIpCisJCQkgICAgPDB4Mz4gOiBFeHRlcm5hbGx5IGlucHV0IGNsb2NrCisKK0V4YW1wbGUKKy0tLS0tLS0KKworU29DIGNvbW1vbiAuZHRzaSBmaWxlOgorCisJY2FuMDogY2FuQGU2ZTgwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLGNhbi1yOGE3NzkxIjsKKwkJcmVnID0gPDAgMHhlNmU4MDAwMCAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MCAxODYgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWNsb2NrcyA9IDwmbXN0cDlfY2xrcyBSOEE3NzkxX0NMS19SQ0FOMD4sCisJCQkgPCZjcGdfY2xvY2tzIFI4QTc3OTFfQ0xLX1JDQU4+LCA8JmNhbl9jbGs+OworCQljbG9jay1uYW1lcyA9ICJjbGtwMSIsICJjbGtwMiIsICJjYW5fY2xrIjsKKwkJc3RhdHVzID0gImRpc2FibGVkIjsKKwl9OworCitCb2FyZCBzcGVjaWZpYyAuZHRzIGZpbGU6CisKKyZjYW4wIHsKKwlwaW5jdHJsLTAgPSA8JmNhbjBfcGlucz47CisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwlzdGF0dXMgPSAib2theSI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vc2phMTAwMC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9zamExMDAwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGE2ZDUzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vc2phMTAwMC50eHQKQEAgLTAsMCArMSw1NyBAQAorTWVtb3J5IG1hcHBlZCBTSkExMDAwIENBTiBjb250cm9sbGVyIGZyb20gTlhQIChmb3JtZXJseSBQaGlsaXBzKQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgIm54cCxzamExMDAwIi4KKworLSByZWcgOiBzaG91bGQgc3BlY2lmeSB0aGUgY2hpcCBzZWxlY3QsIGFkZHJlc3Mgb2Zmc2V0IGFuZCBzaXplIHJlcXVpcmVkCisJdG8gbWFwIHRoZSByZWdpc3RlcnMgb2YgdGhlIFNKQTEwMDAuIFRoZSBzaXplIGlzIHVzdWFsbHkgMHg4MC4KKworLSBpbnRlcnJ1cHRzOiBwcm9wZXJ0eSB3aXRoIGEgdmFsdWUgZGVzY3JpYmluZyB0aGUgaW50ZXJydXB0IHNvdXJjZQorCShudW1iZXIgYW5kIHNlbnNpdGl2aXR5KSByZXF1aXJlZCBmb3IgdGhlIFNKQTEwMDAuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gcmVnLWlvLXdpZHRoIDogU3BlY2lmeSB0aGUgc2l6ZSAoaW4gYnl0ZXMpIG9mIHRoZSBJTyBhY2Nlc3NlcyB0aGF0CisJc2hvdWxkIGJlIHBlcmZvcm1lZCBvbiB0aGUgZGV2aWNlLiAgVmFsaWQgdmFsdWUgaXMgMSwgMiBvciA0LgorCURlZmF1bHQgdG8gMSAoOCBiaXRzKS4KKworLSBueHAsZXh0ZXJuYWwtY2xvY2stZnJlcXVlbmN5IDogRnJlcXVlbmN5IG9mIHRoZSBleHRlcm5hbCBvc2NpbGxhdG9yCisJY2xvY2sgaW4gSHouIE5vdGUgdGhhdCB0aGUgaW50ZXJuYWwgY2xvY2sgZnJlcXVlbmN5IHVzZWQgYnkgdGhlCisJU0pBMTAwMCBpcyBoYWxmIG9mIHRoYXQgdmFsdWUuIElmIG5vdCBzcGVjaWZpZWQsIGEgZGVmYXVsdCB2YWx1ZQorCW9mIDE2MDAwMDAwICgxNiBNSHopIGlzIHVzZWQuCisKKy0gbnhwLHR4LW91dHB1dC1tb2RlIDogb3BlcmF0aW9uIG1vZGUgb2YgdGhlIFRYIG91dHB1dCBjb250cm9sIGxvZ2ljOgorCTwweDA+IDogYmktcGhhc2Ugb3V0cHV0IG1vZGUKKwk8MHgxPiA6IG5vcm1hbCBvdXRwdXQgbW9kZSAoZGVmYXVsdCkKKwk8MHgyPiA6IHRlc3Qgb3V0cHV0IG1vZGUKKwk8MHgzPiA6IGNsb2NrIG91dHB1dCBtb2RlCisKKy0gbnhwLHR4LW91dHB1dC1jb25maWcgOiBUWCBvdXRwdXQgcGluIGNvbmZpZ3VyYXRpb246CisJPDB4MDE+IDogVFgwIGludmVydAorCTwweDAyPiA6IFRYMCBwdWxsLWRvd24gKGRlZmF1bHQpCisJPDB4MDQ+IDogVFgwIHB1bGwtdXAKKwk8MHgwNj4gOiBUWDAgcHVzaC1wdWxsCisJPDB4MDg+IDogVFgxIGludmVydAorCTwweDEwPiA6IFRYMSBwdWxsLWRvd24KKwk8MHgyMD4gOiBUWDEgcHVsbC11cAorCTwweDMwPiA6IFRYMSBwdXNoLXB1bGwKKworLSBueHAsY2xvY2stb3V0LWZyZXF1ZW5jeSA6IGNsb2NrIGZyZXF1ZW5jeSBpbiBIeiBvbiB0aGUgQ0xLT1VUIHBpbi4KKwlJZiBub3Qgc3BlY2lmaWVkIG9yIGlmIHRoZSBzcGVjaWZpZWQgdmFsdWUgaXMgMCwgdGhlIENMS09VVCBwaW4KKwl3aWxsIGJlIGRpc2FibGVkLgorCistIG54cCxuby1jb21wYXJhdG9yLWJ5cGFzcyA6IEFsbG93cyB0byBkaXNhYmxlIHRoZSBDQU4gaW5wdXQgY29tcGFyYXRvci4KKworRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24sIHBsZWFzZSBoYXZlIGEgbG9vayB0byB0aGUgU0pBMTAwMCBkYXRhIHNoZWV0LgorCitFeGFtcGxlczoKKworY2FuQDMsMTAwIHsKKwljb21wYXRpYmxlID0gIm54cCxzamExMDAwIjsKKwlyZWcgPSA8MyAweDEwMCAweDgwPjsKKwlpbnRlcnJ1cHRzID0gPDIgMD47CisJaW50ZXJydXB0LXBhcmVudCA9IDwmbXBpYz47CisJbnhwLGV4dGVybmFsLWNsb2NrLWZyZXF1ZW5jeSA9IDwxNjAwMDAwMD47Cit9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9zdW40aV9jYW4udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vc3VuNGlfY2FuLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGVkMTkwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vc3VuNGlfY2FuLnR4dApAQCAtMCwwICsxLDM2IEBACitBbGx3aW5uZXIgQTEwL0EyMCBDQU4gY29udHJvbGxlciBEZXZpY2UgVHJlZSBCaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImFsbHdpbm5lcixzdW40aS1hMTAtY2FuIgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgQWxsd2lubmVyIEExMC9BMjAgQ0FOIHJlZ2lzdGVyIG1hcC4KKy0gaW50ZXJydXB0czogaW50ZXJydXB0IHNwZWNpZmllciBmb3IgdGhlIHNvbGUgaW50ZXJydXB0LgorLSBjbG9jazogcGhhbmRsZSBhbmQgY2xvY2sgc3BlY2lmaWVyLgorCitFeGFtcGxlCistLS0tLS0tCisKK1NvQyBjb21tb24gLmR0c2kgZmlsZToKKworCWNhbjBfcGluc19hOiBjYW4wQDAgeworCQlhbGx3aW5uZXIscGlucyA9ICJQSDIwIiwiUEgyMSI7CisJCWFsbHdpbm5lcixmdW5jdGlvbiA9ICJjYW4iOworCQlhbGx3aW5uZXIsZHJpdmUgPSA8MD47CisJCWFsbHdpbm5lcixwdWxsID0gPDA+OworCX07CisuLi4KKwljYW4wOiBjYW5AMDFjMmJjMDAgeworCQljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW40aS1hMTAtY2FuIjsKKwkJcmVnID0gPDB4MDFjMmJjMDAgMHg0MDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMjYgND47CisJCWNsb2NrcyA9IDwmYXBiMV9nYXRlcyA0PjsKKwkJc3RhdHVzID0gImRpc2FibGVkIjsKKwl9OworCitCb2FyZCBzcGVjaWZpYyAuZHRzIGZpbGU6CisKKwljYW4wOiBjYW5AMDFjMmJjMDAgeworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JmNhbjBfcGluc19hPjsKKwkJc3RhdHVzID0gIm9rYXkiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi94aWxpbnhfY2FuLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL3hpbGlueF9jYW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMzg4NDcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi94aWxpbnhfY2FuLnR4dApAQCAtMCwwICsxLDQ0IEBACitYaWxpbnggQXhpIENBTi9aeW5xIENBTlBTIGNvbnRyb2xsZXIgRGV2aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlCQk6IFNob3VsZCBiZSAieGxueCx6eW5xLWNhbi0xLjAiIGZvciBaeW5xIENBTgorCQkJICBjb250cm9sbGVycyBhbmQgInhsbngsYXhpLWNhbi0xLjAwLmEiIGZvciBBeGkgQ0FOCisJCQkgIGNvbnRyb2xsZXJzLgorLSByZWcJCQk6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgQXhpIENBTi9aeW5xCisJCQkgIENBTlBTIHJlZ2lzdGVycyBtYXAuCistIGludGVycnVwdHMJCTogUHJvcGVydHkgd2l0aCBhIHZhbHVlIGRlc2NyaWJpbmcgdGhlIGludGVycnVwdAorCQkJICBudW1iZXIuCistIGludGVycnVwdC1wYXJlbnQJOiBNdXN0IGJlIGNvcmUgaW50ZXJydXB0IGNvbnRyb2xsZXIKKy0gY2xvY2stbmFtZXMJCTogTGlzdCBvZiBpbnB1dCBjbG9jayBuYW1lcyAtICJjYW5fY2xrIiwgInBjbGsiCisJCQkgIChGb3IgQ0FOUFMpLCAiY2FuX2NsayIgLCAic19heGlfYWNsayIoRm9yIEFYSSBDQU4pCisJCQkgIChTZWUgY2xvY2sgYmluZGluZ3MgZm9yIGRldGFpbHMpLgorLSBjbG9ja3MJCTogQ2xvY2sgcGhhbmRsZXMgKHNlZSBjbG9jayBiaW5kaW5ncyBmb3IgZGV0YWlscykuCistIHR4LWZpZm8tZGVwdGgJCTogQ2FuIFR4IGZpZm8gZGVwdGguCistIHJ4LWZpZm8tZGVwdGgJCTogQ2FuIFJ4IGZpZm8gZGVwdGguCisKKworRXhhbXBsZToKKworRm9yIFp5bnEgQ0FOUFMgRHRzIGZpbGU6CisJenlucV9jYW5fMDogY2FuQGUwMDA4MDAwIHsKKwkJCWNvbXBhdGlibGUgPSAieGxueCx6eW5xLWNhbi0xLjAiOworCQkJY2xvY2tzID0gPCZjbGtjIDE5PiwgPCZjbGtjIDM2PjsKKwkJCWNsb2NrLW5hbWVzID0gImNhbl9jbGsiLCAicGNsayI7CisJCQlyZWcgPSA8MHhlMDAwODAwMCAweDEwMDA+OworCQkJaW50ZXJydXB0cyA9IDwwIDI4IDQ+OworCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmaW50Yz47CisJCQl0eC1maWZvLWRlcHRoID0gPDB4NDA+OworCQkJcngtZmlmby1kZXB0aCA9IDwweDQwPjsKKwkJfTsKK0ZvciBBeGkgQ0FOIER0cyBmaWxlOgorCWF4aV9jYW5fMDogYXhpLWNhbkA0MDAwMDAwMCB7CisJCQljb21wYXRpYmxlID0gInhsbngsYXhpLWNhbi0xLjAwLmEiOworCQkJY2xvY2tzID0gPCZjbGtjIDA+LCA8JmNsa2MgMT47CisJCQljbG9jay1uYW1lcyA9ICJjYW5fY2xrIiwic19heGlfYWNsayIgOworCQkJcmVnID0gPDB4NDAwMDAwMDAgMHgxMDAwMD47CisJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpbnRjPjsKKwkJCWludGVycnVwdHMgPSA8MCA1OSAxPjsKKwkJCXR4LWZpZm8tZGVwdGggPSA8MHg0MD47CisJCQlyeC1maWZvLWRlcHRoID0gPDB4NDA+OworCQl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYXZpdW0tbWRpby50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhdml1bS1tZGlvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGNiNzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYXZpdW0tbWRpby50eHQKQEAgLTAsMCArMSwyNyBAQAorKiBTeXN0ZW0gTWFuYWdlbWVudCBJbnRlcmZhY2UgKFNNSSkgLyBNRElPCisKK1Byb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJjYXZpdW0sb2N0ZW9uLTM4NjAtbWRpbyIKKworICBDb21wYXRpYmlsaXR5IHdpdGggYWxsIGNuM1hYWCwgY241WFhYIGFuZCBjbjZYWFggU09Dcy4KKworLSByZWc6IFRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIE1ESU8gYnVzIGNvbnRyb2xsZXIgcmVnaXN0ZXIgYmFuay4KKworLSAjYWRkcmVzcy1jZWxsczogTXVzdCBiZSA8MT4uCisKKy0gI3NpemUtY2VsbHM6IE11c3QgYmUgPDA+LiAgTURJTyBhZGRyZXNzZXMgaGF2ZSBubyBzaXplIGNvbXBvbmVudC4KKworVHlwaWNhbGx5IGFuIE1ESU8gYnVzIG1pZ2h0IGhhdmUgc2V2ZXJhbCBjaGlsZHJlbi4KKworRXhhbXBsZToKKwltZGlvQDExODAwMDAwMDE4MDAgeworCQljb21wYXRpYmxlID0gImNhdml1bSxvY3Rlb24tMzg2MC1tZGlvIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQlyZWcgPSA8MHgxMTgwMCAweDAwMDAxODAwIDB4MCAweDQwPjsKKworCQlldGhlcm5ldC1waHlAMCB7CisJCQkuLi4KKwkJCXJlZyA9IDwwPjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYXZpdW0tbWl4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2F2aXVtLW1peC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ3YzMwOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2F2aXVtLW1peC50eHQKQEAgLTAsMCArMSwzNCBAQAorKiBNSVggRXRoZXJuZXQgY29udHJvbGxlci4KKworUHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImNhdml1bSxvY3Rlb24tNTc1MC1taXgiCisKKyAgQ29tcGF0aWJpbGl0eSB3aXRoIGFsbCBjbjVYWFggYW5kIGNuNlhYWCBTT0NzIHBvcHVsYXRlZCB3aXRoIE1JWAorICBkZXZpY2VzLgorCistIHJlZzogVGhlIGJhc2UgYWRkcmVzc2VzIG9mIGZvdXIgc2VwYXJhdGUgcmVnaXN0ZXIgYmFua3MuICBUaGUgZmlyc3QKKyAgYmFuayBjb250YWlucyB0aGUgTUlYIHJlZ2lzdGVycy4gIFRoZSBzZWNvbmQgYmFuayB0aGUgY29ycmVzcG9uZGluZworICBBR0wgcmVnaXN0ZXJzLiAgVGhlIHRoaXJkIGJhbmsgYXJlIHRoZSBBR0wgcmVnaXN0ZXJzIHNoYXJlZCBieSBhbGwKKyAgTUlYIGRldmljZXMgcHJlc2VudC4gIFRoZSBmb3VydGggYmFuayBpcyB0aGUgQUdMX1BSVF9DVEwgc2hhcmVkIGJ5CisgIGFsbCBNSVggZGV2aWNlcyBwcmVzZW50LgorCistIGNlbGwtaW5kZXg6IEEgc2luZ2xlIGNlbGwgc3BlY2lmeWluZyB3aGljaCBwb3J0aW9uIG9mIHRoZSBzaGFyZWQKKyAgcmVnaXN0ZXIgYmFua3MgY29ycmVzcG9uZHMgdG8gdGhpcyBNSVggZGV2aWNlLgorCistIGludGVycnVwdHM6IFR3byBpbnRlcnJ1cHQgc3BlY2lmaWVycy4gIFRoZSBmaXJzdCBpcyB0aGUgTUlYCisgIGludGVycnVwdCByb3V0aW5nIGFuZCB0aGUgc2Vjb25kIHRoZSByb3V0aW5nIGZvciB0aGUgQUdMIGludGVycnVwdHMuCisKKy0gcGh5LWhhbmRsZTogT3B0aW9uYWwsIHNlZSBldGhlcm5ldC50eHQgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisKK0V4YW1wbGU6CisJZXRoZXJuZXRAMTA3MDAwMDEwMDgwMCB7CisJCWNvbXBhdGlibGUgPSAiY2F2aXVtLG9jdGVvbi01NzUwLW1peCI7CisJCXJlZyA9IDwweDEwNzAwIDB4MDAxMDA4MDAgMHgwIDB4MTAwPiwgLyogTUlYICovCisJCSAgICAgIDwweDExODAwIDB4RTAwMDA4MDAgMHgwIDB4MzAwPiwgLyogQUdMICovCisJCSAgICAgIDwweDExODAwIDB4RTAwMDA0MDAgMHgwIDB4NDAwPiwgLyogQUdMX1NIQVJFRCAgKi8KKwkJICAgICAgPDB4MTE4MDAgMHhFMDAwMjAwOCAweDAgMHg4PjsgICAvKiBBR0xfUFJUX0NUTCAqLworCQljZWxsLWluZGV4ID0gPDE+OworCQlpbnRlcnJ1cHRzID0gPDEgMTg+LCA8IDEgNDY+OworCQlsb2NhbC1tYWMtYWRkcmVzcyA9IFsgMDAgMGYgYjcgMTAgNjMgNTQgXTsKKwkJcGh5LWhhbmRsZSA9IDwmcGh5MT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2F2aXVtLXBpcC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhdml1bS1waXAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkYmQxNTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhdml1bS1waXAudHh0CkBAIC0wLDAgKzEsOTMgQEAKKyogUElQIEV0aGVybmV0IG5leHVzLgorCitUaGUgUElQIEV0aGVybmV0IG5leHVzIGNhbiBjb250cm9sIHNldmVyYWwgZGF0YSBwYWNrZXQgaW5wdXQvb3V0cHV0CitkZXZpY2VzLiAgVGhlIGRldmljZXMgaGF2ZSBhIHR3byBsZXZlbCBncm91cGluZyBzY2hlbWUuICBUaGVyZSBtYXkgYmUKK3NldmVyYWwgaW50ZXJmYWNlcywgYW5kIGVhY2ggaW50ZXJmYWNlIG1heSBoYXZlIHNldmVyYWwgcG9ydHMuICBUaGVzZQorcG9ydHMgbWlnaHQgYmUgYW4gaW5kaXZpZHVhbCBFdGhlcm5ldCBQSFkuCisKKworUHJvcGVydGllcyBmb3IgdGhlIFBJUCBuZXh1czoKKy0gY29tcGF0aWJsZTogImNhdml1bSxvY3Rlb24tMzg2MC1waXAiCisKKyAgQ29tcGF0aWJpbGl0eSB3aXRoIGFsbCBjbjNYWFgsIGNuNVhYWCBhbmQgY242WFhYIFNPQ3MuCisKKy0gcmVnOiBUaGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBQSVAncyByZWdpc3RlciBiYW5rLgorCistICNhZGRyZXNzLWNlbGxzOiBNdXN0IGJlIDwxPi4KKworLSAjc2l6ZS1jZWxsczogTXVzdCBiZSA8MD4uCisKK1Byb3BlcnRpZXMgZm9yIFBJUCBpbnRlcmZhY2VzIHdoaWNoIGlzIGEgY2hpbGQgdGhlIFBJUCBuZXh1czoKKy0gY29tcGF0aWJsZTogImNhdml1bSxvY3Rlb24tMzg2MC1waXAtaW50ZXJmYWNlIgorCisgIENvbXBhdGliaWxpdHkgd2l0aCBhbGwgY24zWFhYLCBjbjVYWFggYW5kIGNuNlhYWCBTT0NzLgorCistIHJlZzogVGhlIGludGVyZmFjZSBudW1iZXIuCisKKy0gI2FkZHJlc3MtY2VsbHM6IE11c3QgYmUgPDE+LgorCistICNzaXplLWNlbGxzOiBNdXN0IGJlIDwwPi4KKworUHJvcGVydGllcyBmb3IgUElQIHBvcnQgd2hpY2ggaXMgYSBjaGlsZCB0aGUgUElQIGludGVyZmFjZToKKy0gY29tcGF0aWJsZTogImNhdml1bSxvY3Rlb24tMzg2MC1waXAtcG9ydCIKKworICBDb21wYXRpYmlsaXR5IHdpdGggYWxsIGNuM1hYWCwgY241WFhYIGFuZCBjbjZYWFggU09Dcy4KKworLSByZWc6IFRoZSBwb3J0IG51bWJlciB3aXRoaW4gdGhlIGludGVyZmFjZSBncm91cC4KKworLSBwaHktaGFuZGxlOiBPcHRpb25hbCwgc2VlIGV0aGVybmV0LnR4dCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKworRXhhbXBsZToKKworCXBpcEAxMTgwMGEwMDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJjYXZpdW0sb2N0ZW9uLTM4NjAtcGlwIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQlyZWcgPSA8MHgxMTgwMCAweGEwMDAwMDAwIDB4MCAweDIwMDA+OworCisJCWludGVyZmFjZUAwIHsKKwkJCWNvbXBhdGlibGUgPSAiY2F2aXVtLG9jdGVvbi0zODYwLXBpcC1pbnRlcmZhY2UiOworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJCXJlZyA9IDwwPjsgLyogaW50ZXJmYWNlICovCisKKwkJCWV0aGVybmV0QDAgeworCQkJCWNvbXBhdGlibGUgPSAiY2F2aXVtLG9jdGVvbi0zODYwLXBpcC1wb3J0IjsKKwkJCQlyZWcgPSA8MHgwPjsgLyogUG9ydCAqLworCQkJCWxvY2FsLW1hYy1hZGRyZXNzID0gWyAwMCAwZiBiNyAxMCA2MyA2MCBdOworCQkJCXBoeS1oYW5kbGUgPSA8JnBoeTI+OworCQkJfTsKKwkJCWV0aGVybmV0QDEgeworCQkJCWNvbXBhdGlibGUgPSAiY2F2aXVtLG9jdGVvbi0zODYwLXBpcC1wb3J0IjsKKwkJCQlyZWcgPSA8MHgxPjsgLyogUG9ydCAqLworCQkJCWxvY2FsLW1hYy1hZGRyZXNzID0gWyAwMCAwZiBiNyAxMCA2MyA2MSBdOworCQkJCXBoeS1oYW5kbGUgPSA8JnBoeTM+OworCQkJfTsKKwkJCWV0aGVybmV0QDIgeworCQkJCWNvbXBhdGlibGUgPSAiY2F2aXVtLG9jdGVvbi0zODYwLXBpcC1wb3J0IjsKKwkJCQlyZWcgPSA8MHgyPjsgLyogUG9ydCAqLworCQkJCWxvY2FsLW1hYy1hZGRyZXNzID0gWyAwMCAwZiBiNyAxMCA2MyA2MiBdOworCQkJCXBoeS1oYW5kbGUgPSA8JnBoeTQ+OworCQkJfTsKKwkJCWV0aGVybmV0QDMgeworCQkJCWNvbXBhdGlibGUgPSAiY2F2aXVtLG9jdGVvbi0zODYwLXBpcC1wb3J0IjsKKwkJCQlyZWcgPSA8MHgzPjsgLyogUG9ydCAqLworCQkJCWxvY2FsLW1hYy1hZGRyZXNzID0gWyAwMCAwZiBiNyAxMCA2MyA2MyBdOworCQkJCXBoeS1oYW5kbGUgPSA8JnBoeTU+OworCQkJfTsKKwkJfTsKKworCQlpbnRlcmZhY2VAMSB7CisJCQljb21wYXRpYmxlID0gImNhdml1bSxvY3Rlb24tMzg2MC1waXAtaW50ZXJmYWNlIjsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MD47CisJCQlyZWcgPSA8MT47IC8qIGludGVyZmFjZSAqLworCisJCQlldGhlcm5ldEAwIHsKKwkJCQljb21wYXRpYmxlID0gImNhdml1bSxvY3Rlb24tMzg2MC1waXAtcG9ydCI7CisJCQkJcmVnID0gPDB4MD47IC8qIFBvcnQgKi8KKwkJCQlsb2NhbC1tYWMtYWRkcmVzcyA9IFsgMDAgMGYgYjcgMTAgNjMgNjQgXTsKKwkJCQlwaHktaGFuZGxlID0gPCZwaHk2PjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2Rucy1lbWFjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2Rucy1lbWFjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDUxZWU5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jZG5zLWVtYWMudHh0CkBAIC0wLDAgKzEsMjAgQEAKKyogQ2FkZW5jZSBFTUFDIEV0aGVybmV0IGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJjZG5zLFs8Y2hpcD4tXXtlbWFjfSIKKyAgVXNlICJjZG5zLGF0OTFybTkyMDAtZW1hYyIgQXRtZWwgYXQ5MXJtOTIwMCBTb0MuCisgIFVzZSAiY2Rucyx6eW5xLWdlbSIgWGlsaW54IFp5bnEtN3h4eCBTb0MuCisgIE9yIHRoZSBnZW5lcmljIGZvcm06ICJjZG5zLGVtYWMiLgorLSByZWc6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIG1hY2IgaW50ZXJydXB0CistIHBoeS1tb2RlOiBzZWUgZXRoZXJuZXQudHh0IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorCitFeGFtcGxlczoKKworCW1hY2IwOiBldGhlcm5ldEBmZmZjNDAwMCB7CisJCWNvbXBhdGlibGUgPSAiY2RucyxhdDkxcm05MjAwLWVtYWMiOworCQlyZWcgPSA8MHhmZmZjNDAwMCAweDQwMDA+OworCQlpbnRlcnJ1cHRzID0gPDIxPjsKKwkJcGh5LW1vZGUgPSAicm1paSI7CisJCWxvY2FsLW1hYy1hZGRyZXNzID0gWzNhIDBlIDAzIDA0IDA1IDA2XTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jcHN3LXBoeS1zZWwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jcHN3LXBoeS1zZWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NGMwYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nwc3ctcGh5LXNlbC50eHQKQEAgLTAsMCArMSwzMCBAQAorVEkgQ1BTVyBQaHkgbW9kZSBTZWxlY3Rpb24gRGV2aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUJCTogU2hvdWxkIGJlICJ0aSxhbTMzNTItY3Bzdy1waHktc2VsIiBmb3IgYW0zMzV4IHBsYXRmb3JtIGFuZAorCQkJICAidGksZHJhN3h4LWNwc3ctcGh5LXNlbCIgZm9yIGRyYTd4eCBwbGF0Zm9ybQorCQkJICAidGksYW00M3h4LWNwc3ctcGh5LXNlbCIgZm9yIGFtNDN4eCBwbGF0Zm9ybQorLSByZWcJCQk6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgY3BzdworCQkJICByZWdpc3RlcnMgbWFwCistIHJlZy1uYW1lcwkJOiBuYW1lcyBvZiB0aGUgcmVnaXN0ZXIgbWFwIGdpdmVuIGluICJyZWciIG5vZGUKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy1ybWlpLWNsb2NrLWV4dAkJOiBJZiBwcmVzZW50LCB0aGUgZHJpdmVyIHdpbGwgY29uZmlndXJlIHRoZSBSTUlJCisJCQkgIGludGVyZmFjZSB0byBleHRlcm5hbCBjbG9jayB1c2FnZQorCitFeGFtcGxlczoKKworCXBoeV9zZWw6IGNwc3ctcGh5LXNlbEA0NGUxMDY1MCB7CisJCWNvbXBhdGlibGUgPSAidGksYW0zMzUyLWNwc3ctcGh5LXNlbCI7CisJCXJlZz0gPDB4NDRlMTA2NTAgMHg0PjsKKwkJcmVnLW5hbWVzID0gImdtaWktc2VsIjsKKwl9OworCisob3IpCisJcGh5X3NlbDogY3Bzdy1waHktc2VsQDQ0ZTEwNjUwIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSxhbTMzNTItY3Bzdy1waHktc2VsIjsKKwkJcmVnPSA8MHg0NGUxMDY1MCAweDQ+OworCQlyZWctbmFtZXMgPSAiZ21paS1zZWwiOworCQlybWlpLWNsb2NrLWV4dDsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jcHN3LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY3Bzdy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhhNDc4MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY3Bzdy50eHQKQEAgLTAsMCArMSwxMjEgQEAKK1RJIFNvQyBFdGhlcm5ldCBTd2l0Y2ggQ29udHJvbGxlciBEZXZpY2UgVHJlZSBCaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUJCTogU2hvdWxkIGJlIG9uZSBvZiB0aGUgYmVsb3c6LQorCQkJICAidGksY3BzdyIgZm9yIGJhY2t3YXJkIGNvbXBhdGlibGUKKwkJCSAgInRpLGFtMzM1eC1jcHN3IiBmb3IgQU0zMzV4IGNvbnRyb2xsZXJzCisJCQkgICJ0aSxhbTQzNzItY3BzdyIgZm9yIEFNNDM3eCBjb250cm9sbGVycworCQkJICAidGksZHJhNy1jcHN3IiBmb3IgRFJBN3ggY29udHJvbGxlcnMKKy0gcmVnCQkJOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIGNwc3cKKwkJCSAgcmVnaXN0ZXJzIG1hcAorLSBpbnRlcnJ1cHRzCQk6IHByb3BlcnR5IHdpdGggYSB2YWx1ZSBkZXNjcmliaW5nIHRoZSBpbnRlcnJ1cHQKKwkJCSAgbnVtYmVyCistIGludGVycnVwdC1wYXJlbnQJOiBUaGUgcGFyZW50IGludGVycnVwdCBjb250cm9sbGVyCistIGNwZG1hX2NoYW5uZWxzIAk6IFNwZWNpZmllcyBudW1iZXIgb2YgY2hhbm5lbHMgaW4gQ1BETUEKKy0gYWxlX2VudHJpZXMJCTogU3BlY2lmaWVzIE5vIG9mIGVudHJpZXMgQUxFIGNhbiBob2xkCistIGJkX3JhbV9zaXplCQk6IFNwZWNpZmllcyBpbnRlcm5hbCBkZXNjcmlwdG9yIFJBTSBzaXplCistIHJ4X2Rlc2NzCQk6IFNwZWNpZmllcyBudW1iZXIgb2YgUnggZGVzY3JpcHRvcnMKKy0gbWFjX2NvbnRyb2wJCTogU3BlY2lmaWVzIERlZmF1bHQgTUFDIGNvbnRyb2wgcmVnaXN0ZXIgY29udGVudAorCQkJICBmb3IgdGhlIHNwZWNpZmljIHBsYXRmb3JtCistIHNsYXZlcwkJOiBTcGVjaWZpZXMgbnVtYmVyIGZvciBzbGF2ZXMKKy0gYWN0aXZlX3NsYXZlCQk6IFNwZWNpZmllcyB0aGUgc2xhdmUgdG8gdXNlIGZvciB0aW1lIHN0YW1waW5nLAorCQkJICBldGh0b29sIGFuZCBTSU9DR01JSVBIWQorLSBjcHRzX2Nsb2NrX211bHQJOiBOdW1lcmF0b3IgdG8gY29udmVydCBpbnB1dCBjbG9jayB0aWNrcyBpbnRvIG5hbm9zZWNvbmRzCistIGNwdHNfY2xvY2tfc2hpZnQJOiBEZW5vbWluYXRvciB0byBjb252ZXJ0IGlucHV0IGNsb2NrIHRpY2tzIGludG8gbmFub3NlY29uZHMKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdGksaHdtb2RzCQk6IE11c3QgYmUgImNwZ21hYzAiCistIG5vX2JkX3JhbQkJOiBNdXN0IGJlIDAgb3IgMQorLSBkdWFsX2VtYWMJCTogU3BlY2lmaWVzIFN3aXRjaCB0byBhY3QgYXMgRHVhbCBFTUFDCistIHN5c2NvbgkJOiBQaGFuZGxlIHRvIHRoZSBzeXN0ZW0gY29udHJvbCBkZXZpY2Ugbm9kZSwgd2hpY2ggaXMKKwkJCSAgdGhlIGNvbnRyb2wgbW9kdWxlIGRldmljZSBvZiB0aGUgYW0zM3gKKy0gbW9kZS1ncGlvcwkJOiBTaG91bGQgYmUgYWRkZWQgaWYgb25lL211bHRpcGxlIGdwaW8gbGluZXMgYXJlCisJCQkgIHJlcXVpcmVkIHRvIGJlIGRyaXZlbiBzbyB0aGF0IGNwc3cgZGF0YSBsaW5lcworCQkJICBjYW4gYmUgY29ubmVjdGVkIHRvIHRoZSBwaHkgdmlhIHNlbGVjdGl2ZSBtdXguCisJCQkgIEZvciBleGFtcGxlIGluIGRyYTcyeC1ldm0sIHBjZiBncGlvIGhhcyB0byBiZQorCQkJICBkcml2ZW4gbG93IHNvIHRoYXQgY3BzdyBzbGF2ZSAwIGFuZCBwaHkgZGF0YQorCQkJICBsaW5lcyBhcmUgY29ubmVjdGVkIHZpYSBtdXguCisKKworU2xhdmUgUHJvcGVydGllczoKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIHBoeS1tb2RlCQk6IFNlZSBldGhlcm5ldC50eHQgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gZHVhbF9lbWFjX3Jlc192bGFuCTogU3BlY2lmaWVzIFZJRCB0byBiZSB1c2VkIHRvIHNlZ3JlZ2F0ZSB0aGUgcG9ydHMKKy0gbWFjLWFkZHJlc3MJCTogU2VlIGV0aGVybmV0LnR4dCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeQorLSBwaHlfaWQJCTogU3BlY2lmaWVzIHNsYXZlIHBoeSBpZAorLSBwaHktaGFuZGxlCQk6IFNlZSBldGhlcm5ldC50eHQgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkKKworU2xhdmUgc3ViLW5vZGVzOgorLSBmaXhlZC1saW5rCQk6IFNlZSBmaXhlZC1saW5rLnR4dCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeQorCQkJICBFaXRoZXIgdGhlIHByb3BlcnR5IHBoeV9pZCwgb3IgdGhlIHN1Yi1ub2RlCisJCQkgIGZpeGVkLWxpbmsgY2FuIGJlIHNwZWNpZmllZAorCitOb3RlOiAidGksaHdtb2RzIiBmaWVsZCBpcyB1c2VkIHRvIGZldGNoIHRoZSBiYXNlIGFkZHJlc3MgYW5kIGlycQorcmVzb3VyY2VzIGZyb20gVEksIG9tYXAgaHdtb2QgZGF0YSBiYXNlIGR1cmluZyBkZXZpY2UgcmVnaXN0cmF0aW9uLgorRnV0dXJlIHBsYW4gaXMgdG8gbWlncmF0ZSBod21vZCBkYXRhIGJhc2UgY29udGVudHMgaW50byBkZXZpY2UgdHJlZQorYmxvYiBzbyB0aGF0LCBhbGwgdGhlIHJlcXVpcmVkIGRhdGEgd2lsbCBiZSB1c2VkIGZyb20gZGV2aWNlIHRyZWUgZHRzCitmaWxlLgorCitFeGFtcGxlczoKKworCW1hYzogZXRoZXJuZXRANEExMDAwMDAgeworCQljb21wYXRpYmxlID0gInRpLGNwc3ciOworCQlyZWcgPSA8MHg0QTEwMDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDU1IDB4ND47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmludGM+OworCQljcGRtYV9jaGFubmVscyA9IDw4PjsKKwkJYWxlX2VudHJpZXMgPSA8MTAyND47CisJCWJkX3JhbV9zaXplID0gPDB4MjAwMD47CisJCW5vX2JkX3JhbSA9IDwwPjsKKwkJcnhfZGVzY3MgPSA8NjQ+OworCQltYWNfY29udHJvbCA9IDwweDIwPjsKKwkJc2xhdmVzID0gPDI+OworCQlhY3RpdmVfc2xhdmUgPSA8MD47CisJCWNwdHNfY2xvY2tfbXVsdCA9IDwweDgwMDAwMDAwPjsKKwkJY3B0c19jbG9ja19zaGlmdCA9IDwyOT47CisJCXN5c2NvbiA9IDwmY20+OworCQljcHN3X2VtYWMwOiBzbGF2ZUAwIHsKKwkJCXBoeV9pZCA9IDwmZGF2aW5jaV9tZGlvPiwgPDA+OworCQkJcGh5LW1vZGUgPSAicmdtaWktdHhpZCI7CisJCQkvKiBGaWxsZWQgaW4gYnkgVS1Cb290ICovCisJCQltYWMtYWRkcmVzcyA9IFsgMDAgMDAgMDAgMDAgMDAgMDAgXTsKKwkJfTsKKwkJY3Bzd19lbWFjMTogc2xhdmVAMSB7CisJCQlwaHlfaWQgPSA8JmRhdmluY2lfbWRpbz4sIDwxPjsKKwkJCXBoeS1tb2RlID0gInJnbWlpLXR4aWQiOworCQkJLyogRmlsbGVkIGluIGJ5IFUtQm9vdCAqLworCQkJbWFjLWFkZHJlc3MgPSBbIDAwIDAwIDAwIDAwIDAwIDAwIF07CisJCX07CisJfTsKKworKG9yKQorCW1hYzogZXRoZXJuZXRANEExMDAwMDAgeworCQljb21wYXRpYmxlID0gInRpLGNwc3ciOworCQl0aSxod21vZHMgPSAiY3BnbWFjMCI7CisJCWNwZG1hX2NoYW5uZWxzID0gPDg+OworCQlhbGVfZW50cmllcyA9IDwxMDI0PjsKKwkJYmRfcmFtX3NpemUgPSA8MHgyMDAwPjsKKwkJbm9fYmRfcmFtID0gPDA+OworCQlyeF9kZXNjcyA9IDw2ND47CisJCW1hY19jb250cm9sID0gPDB4MjA+OworCQlzbGF2ZXMgPSA8Mj47CisJCWFjdGl2ZV9zbGF2ZSA9IDwwPjsKKwkJY3B0c19jbG9ja19tdWx0ID0gPDB4ODAwMDAwMDA+OworCQljcHRzX2Nsb2NrX3NoaWZ0ID0gPDI5PjsKKwkJc3lzY29uID0gPCZjbT47CisJCWNwc3dfZW1hYzA6IHNsYXZlQDAgeworCQkJcGh5X2lkID0gPCZkYXZpbmNpX21kaW8+LCA8MD47CisJCQlwaHktbW9kZSA9ICJyZ21paS10eGlkIjsKKwkJCS8qIEZpbGxlZCBpbiBieSBVLUJvb3QgKi8KKwkJCW1hYy1hZGRyZXNzID0gWyAwMCAwMCAwMCAwMCAwMCAwMCBdOworCQl9OworCQljcHN3X2VtYWMxOiBzbGF2ZUAxIHsKKwkJCXBoeV9pZCA9IDwmZGF2aW5jaV9tZGlvPiwgPDE+OworCQkJcGh5LW1vZGUgPSAicmdtaWktdHhpZCI7CisJCQkvKiBGaWxsZWQgaW4gYnkgVS1Cb290ICovCisJCQltYWMtYWRkcmVzcyA9IFsgMDAgMDAgMDAgMDAgMDAgMDAgXTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXZpY29tLWRtOTAwMC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Rhdmljb20tZG05MDAwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjI0YmYwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kYXZpY29tLWRtOTAwMC50eHQKQEAgLTAsMCArMSwyOCBAQAorRGF2aWNvbSBETTkwMDAgRmFzdCBFdGhlcm5ldCBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgPSAiZGF2aWNvbSxkbTkwMDAiOworLSByZWcgOiBwaHlzaWNhbCBhZGRyZXNzZXMgYW5kIHNpemVzIG9mIHJlZ2lzdGVycywgbXVzdCBjb250YWluIDIgZW50cmllczoKKyAgICBmaXJzdCBlbnRyeSA6IGFkZHJlc3MgcmVnaXN0ZXIsCisgICAgc2Vjb25kIGVudHJ5IDogZGF0YSByZWdpc3Rlci4KKy0gaW50ZXJydXB0LXBhcmVudCA6IGludGVycnVwdCBjb250cm9sbGVyIHRvIHdoaWNoIHRoZSBkZXZpY2UgaXMgY29ubmVjdGVkCistIGludGVycnVwdHMgOiBpbnRlcnJ1cHQgc3BlY2lmaWVyIHNwZWNpZmljIHRvIGludGVycnVwdCBjb250cm9sbGVyCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGRhdmljb20sbm8tZWVwcm9tIDogQ29uZmlndXJhdGlvbiBFRVBST00gaXMgbm90IGF2YWlsYWJsZQorLSBkYXZpY29tLGV4dC1waHkgOiBVc2UgZXh0ZXJuYWwgUEhZCistIHJlc2V0LWdwaW9zIDogcGhhbmRsZSBvZiBncGlvIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHJlc2V0IGNoaXAgZHVyaW5nIHByb2JlCistIHZjYy1zdXBwbHkgOiBwaGFuZGxlIG9mIHJlZ3VsYXRvciB0aGF0IHdpbGwgYmUgdXNlZCB0byBlbmFibGUgcG93ZXIgdG8gY2hpcAorCitFeGFtcGxlOgorCisJZXRoZXJuZXRAMTgwMDAwMDAgeworCQljb21wYXRpYmxlID0gImRhdmljb20sZG05MDAwIjsKKwkJcmVnID0gPDB4MTgwMDAwMDAgMHgyIDB4MTgwMDAwMDQgMHgyPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BuPjsKKwkJaW50ZXJydXB0cyA9IDw3IDQ+OworCQlsb2NhbC1tYWMtYWRkcmVzcyA9IFswMCAwMCBkZSBhZCBiZSBlZl07CisJCWRhdmljb20sbm8tZWVwcm9tOworCQlyZXNldC1ncGlvcyA9IDwmZ3BmIDEyIEdQSU9fQUNUSVZFX0xPVz47CisJCXZjYy1zdXBwbHkgPSA8JmV0aDBfcG93ZXI+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhdmluY2ktbWRpby50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhdmluY2ktbWRpby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM2OWUyNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGF2aW5jaS1tZGlvLnR4dApAQCAtMCwwICsxLDMzIEBACitUSSBTb0MgRGF2aW5jaS9LZXlzdG9uZTIgTURJTyBDb250cm9sbGVyIERldmljZSBUcmVlIEJpbmRpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZQkJOiBTaG91bGQgYmUgInRpLGRhdmluY2lfbWRpbyIgb3IgInRpLGtleXN0b25lX21kaW8iCistIHJlZwkJCTogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSBkYXZpbmNpIG1kaW8KKwkJCSAgcmVnaXN0ZXJzIG1hcAorLSBidXNfZnJlcQkJOiBNZGlvIEJ1cyBmcmVxdWVuY3kKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdGksaHdtb2RzCQk6IE11c3QgYmUgImRhdmluY2lfbWRpbyIKKworTm90ZTogInRpLGh3bW9kcyIgZmllbGQgaXMgdXNlZCB0byBmZXRjaCB0aGUgYmFzZSBhZGRyZXNzIGFuZCBpcnEKK3Jlc291cmNlcyBmcm9tIFRJLCBvbWFwIGh3bW9kIGRhdGEgYmFzZSBkdXJpbmcgZGV2aWNlIHJlZ2lzdHJhdGlvbi4KK0Z1dHVyZSBwbGFuIGlzIHRvIG1pZ3JhdGUgaHdtb2QgZGF0YSBiYXNlIGNvbnRlbnRzIGludG8gZGV2aWNlIHRyZWUKK2Jsb2Igc28gdGhhdCwgYWxsIHRoZSByZXF1aXJlZCBkYXRhIHdpbGwgYmUgdXNlZCBmcm9tIGRldmljZSB0cmVlIGR0cworZmlsZS4KKworRXhhbXBsZXM6CisKKwltZGlvOiBkYXZpbmNpX21kaW9ANEExMDEwMDAgeworCQljb21wYXRpYmxlID0gInRpLGRhdmluY2lfbWRpbyI7CisJCXJlZyA9IDwweDRBMTAxMDAwIDB4MTAwMD47CisJCWJ1c19mcmVxID0gPDEwMDAwMDA+OworCX07CisKKyhvcikKKworCW1kaW86IGRhdmluY2lfbWRpb0A0QTEwMTAwMCB7CisJCWNvbXBhdGlibGUgPSAidGksZGF2aW5jaV9tZGlvIjsKKwkJdGksaHdtb2RzID0gImRhdmluY2lfbWRpbyI7CisJCWJ1c19mcmVxID0gPDEwMDAwMDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhdmluY2lfZW1hYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RhdmluY2lfZW1hYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRjNWNkYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZGF2aW5jaV9lbWFjLnR4dApAQCAtMCwwICsxLDQxIEBACisqIFRleGFzIEluc3RydW1lbnRzIERhdmluY2kgRU1BQworCitUaGlzIGZpbGUgcHJvdmlkZXMgaW5mb3JtYXRpb24sIHdoYXQgdGhlIGRldmljZSBub2RlCitmb3IgdGhlIGRhdmluY2lfZW1hYyBpbnRlcmZhY2UgY29udGFpbnMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ0aSxkYXZpbmNpLWRtNjQ2Ny1lbWFjIiwgInRpLGFtMzUxNy1lbWFjIiBvcgorICAidGksZG04MTYtZW1hYyIKKy0gcmVnOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistIHRpLGRhdmluY2ktY3RybC1yZWctb2Zmc2V0OiBvZmZzZXQgdG8gY29udHJvbCByZWdpc3RlcgorLSB0aSxkYXZpbmNpLWN0cmwtbW9kLXJlZy1vZmZzZXQ6IG9mZnNldCB0byBjb250cm9sIG1vZHVsZSByZWdpc3RlcgorLSB0aSxkYXZpbmNpLWN0cmwtcmFtLW9mZnNldDogb2Zmc2V0IHRvIGNvbnRyb2wgbW9kdWxlIHJhbQorLSB0aSxkYXZpbmNpLWN0cmwtcmFtLXNpemU6IHNpemUgb2YgY29udHJvbCBtb2R1bGUgcmFtCistIGludGVycnVwdHM6IGludGVycnVwdCBtYXBwaW5nIGZvciB0aGUgZGF2aW5jaSBlbWFjIGludGVycnVwdHMgc291cmNlczoKKyAgICAgICAgICAgICAgNCBzb3VyY2VzOiA8UmVjZWl2ZSBUaHJlc2hvbGQgSW50ZXJydXB0CisJCQkgIFJlY2VpdmUgSW50ZXJydXB0CisJCQkgIFRyYW5zbWl0IEludGVycnVwdAorCQkJICBNaXNjZWxsYW5lb3VzIEludGVycnVwdD4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gcGh5LWhhbmRsZTogU2VlIGV0aGVybmV0LnR4dCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgSWYgYWJzZW50LCBkYXZpbmNpX2VtYWMgZHJpdmVyIGRlZmF1bHRzIHRvIDEwMC9GVUxMLgorLSB0aSxkYXZpbmNpLXJtaWktZW46IDEgYnl0ZSwgMSBtZWFucyB1c2UgUk1JSQorLSB0aSxkYXZpbmNpLW5vLWJkLXJhbTogYm9vbGVhbiwgZG9lcyBFTUFDIGhhdmUgQkQgUkFNPworCitFeGFtcGxlIChlbmJ3X2NtYyBib2FyZCk6CisJZXRoMDogZW1hY0AxZTIwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSxkYXZpbmNpLWRtNjQ2Ny1lbWFjIjsKKwkJcmVnID0gPDB4MjIwMDAwIDB4NDAwMD47CisJCXRpLGRhdmluY2ktY3RybC1yZWctb2Zmc2V0ID0gPDB4MzAwMD47CisJCXRpLGRhdmluY2ktY3RybC1tb2QtcmVnLW9mZnNldCA9IDwweDIwMDA+OworCQl0aSxkYXZpbmNpLWN0cmwtcmFtLW9mZnNldCA9IDwwPjsKKwkJdGksZGF2aW5jaS1jdHJsLXJhbS1zaXplID0gPDB4MjAwMD47CisJCWxvY2FsLW1hYy1hZGRyZXNzID0gWyAwMCAwMCAwMCAwMCAwMCAwMCBdOworCQlpbnRlcnJ1cHRzID0gPDMzCisJCQkJMzQKKwkJCQkzNQorCQkJCTM2CisJCQkJPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmaW50Yz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2RzYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9kc2EudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0ZTZiZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9kc2EudHh0CkBAIC0wLDAgKzEsMTQzIEBACitNYXJ2ZWxsIERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUgRGV2aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlCQk6IFNob3VsZCBiZSAibWFydmVsbCxkc2EiCistICNhZGRyZXNzLWNlbGxzCTogTXVzdCBiZSAyLCBmaXJzdCBjZWxsIGlzIHRoZSBhZGRyZXNzIG9uIHRoZSBNRElPIGJ1cworCQkJICBhbmQgc2Vjb25kIGNlbGwgaXMgdGhlIGFkZHJlc3MgaW4gdGhlIHN3aXRjaCB0cmVlLgorCQkJICBTZWNvbmQgY2VsbCBpcyB1c2VkIG9ubHkgd2hlbiBjYXNjYWRpbmcvY2hhaW5pbmcuCistICNzaXplLWNlbGxzCQk6IE11c3QgYmUgMAorLSBkc2EsZXRoZXJuZXQJCTogU2hvdWxkIGJlIGEgcGhhbmRsZSB0byBhIHZhbGlkIEV0aGVybmV0IGRldmljZSBub2RlCistIGRzYSxtaWktYnVzCQk6IFNob3VsZCBiZSBhIHBoYW5kbGUgdG8gYSB2YWxpZCBNRElPIGJ1cyBkZXZpY2Ugbm9kZQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBpbnRlcnJ1cHRzCQk6IHByb3BlcnR5IHdpdGggYSB2YWx1ZSBkZXNjcmliaW5nIHRoZSBzd2l0Y2gKKwkJCSAgaW50ZXJydXB0IG51bWJlciAobm90IHN1cHBvcnRlZCBieSB0aGUgZHJpdmVyKQorCitBIERTQSBub2RlIGNhbiBjb250YWluIG11bHRpcGxlIHN3aXRjaCBjaGlwcyB3aGljaCBhcmUgdGhlcmVmb3JlIGNoaWxkIG5vZGVzIG9mCit0aGUgcGFyZW50IERTQSBub2RlLiBUaGUgbWF4aW11bSBudW1iZXIgb2YgYWxsb3dlZCBjaGlsZCBub2RlcyBpcyA0CisoRFNBX01BWF9TV0lUQ0hFUykuCitFYWNoIG9mIHRoZXNlIHN3aXRjaCBjaGlsZCBub2RlcyBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHJlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gcmVnCQkJOiBDb250YWlucyB0d28gZmllbGRzLiBUaGUgZmlyc3Qgb25lIGRlc2NyaWJlcyB0aGUKKwkJCSAgYWRkcmVzcyBvbiB0aGUgTUlJIGJ1cy4gVGhlIHNlY29uZCBpcyB0aGUgc3dpdGNoCisJCQkgIG51bWJlciB0aGF0IG11c3QgYmUgdW5pcXVlIGluIGNhc2NhZGVkIGNvbmZpZ3VyYXRpb25zCistICNhZGRyZXNzLWNlbGxzCTogTXVzdCBiZSAxCistICNzaXplLWNlbGxzCQk6IE11c3QgYmUgMAorCitBIHN3aXRjaCBjaGlsZCBub2RlIGhhcyB0aGUgZm9sbG93aW5nIG9wdGlvbmFsIHByb3BlcnR5OgorCistIGVlcHJvbS1sZW5ndGgJCTogU2V0IHRvIHRoZSBsZW5ndGggb2YgYW4gRUVQUk9NIGNvbm5lY3RlZCB0byB0aGUKKwkJCSAgc3dpdGNoLiBNdXN0IGJlIHNldCBpZiB0aGUgc3dpdGNoIGNhbiBub3QgZGV0ZWN0CisJCQkgIHRoZSBwcmVzZW5jZSBhbmQvb3Igc2l6ZSBvZiBhIGNvbm5lY3RlZCBFRVBST00sCisJCQkgIG90aGVyd2lzZSBvcHRpb25hbC4KKworQSBzd2l0Y2ggbWF5IGhhdmUgbXVsdGlwbGUgInBvcnQiIGNoaWxkcmVuIG5vZGVzCisKK0VhY2ggcG9ydCBjaGlsZHJlbiBub2RlIG11c3QgaGF2ZSB0aGUgZm9sbG93aW5nIG1hbmRhdG9yeSBwcm9wZXJ0aWVzOgorLSByZWcJCQk6IERlc2NyaWJlcyB0aGUgcG9ydCBhZGRyZXNzIGluIHRoZSBzd2l0Y2gKKy0gbGFiZWwJCQk6IERlc2NyaWJlcyB0aGUgbGFiZWwgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcG9ydCwgc3BlY2lhbAorCQkJICBsYWJlbHMgYXJlICJjcHUiIHRvIGluZGljYXRlIGEgQ1BVIHBvcnQgYW5kICJkc2EiIHRvCisJCQkgIGluZGljYXRlIGFuIHVwbGluay9kb3dubGluayBwb3J0LgorCitOb3RlIHRoYXQgYSBwb3J0IGxhYmVsbGVkICJkc2EiIHdpbGwgaW1wbHkgY2hlY2tpbmcgZm9yIHRoZSB1cGxpbmsgcGhhbmRsZQorZGVzY3JpYmVkIGJlbG93LgorCitPcHRpb25uYWwgcHJvcGVydHk6CistIGxpbmsJCQk6IFNob3VsZCBiZSBhIGxpc3Qgb2YgcGhhbmRsZXMgdG8gYW5vdGhlciBzd2l0Y2gncyBEU0EgcG9ydC4KKwkJCSAgVGhpcyBwcm9wZXJ0eSBpcyBvbmx5IHVzZWQgd2hlbiBzd2l0Y2hlcyBhcmUgYmVpbmcKKwkJCSAgY2hhaW5lZC9jYXNjYWRlZCB0b2dldGhlci4gVGhpcyBwb3J0IGlzIHVzZWQgYXMgb3V0Z29pbmcgcG9ydAorCQkJICB0b3dhcmRzIHRoZSBwaGFuZGxlIHBvcnQsIHdoaWNoIGNhbiBiZSBtb3JlIHRoYW4gb25lIGhvcCBhd2F5LgorCistIHBoeS1oYW5kbGUJCTogUGhhbmRsZSB0byBhIFBIWSBvbiBhbiBleHRlcm5hbCBNRElPIGJ1cywgbm90IHRoZQorCQkJICBzd2l0Y2ggaW50ZXJuYWwgb25lLiBTZWUKKwkJCSAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ldGhlcm5ldC50eHQKKwkJCSAgZm9yIGRldGFpbHMuCisKKy0gcGh5LW1vZGUJCTogU3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY29ubmVjdGlvbiB0byB0aGUgZGVzaWduYXRlZAorCQkJICBQSFkgbm9kZSBzcGVjaWZpZWQgYnkgdGhlICdwaHktaGFuZGxlJyBwcm9wZXJ0eS4gU2VlCisJCQkgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXRoZXJuZXQudHh0CisJCQkgIGZvciBkZXRhaWxzLgorCistIG1paS1idXMJCTogU2hvdWxkIGJlIGEgcGhhbmRsZSB0byBhIHZhbGlkIE1ESU8gYnVzIGRldmljZSBub2RlLgorCQkJICBUaGlzIG1paS1idXMgd2lsbCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhlCisJCQkgIGdsb2JhbCBkc2EsbWlpLWJ1cyBkZWZpbmVkIGFib3ZlLCBmb3IgdGhpcyBzd2l0Y2guCisKK09wdGlvbmFsIHN1Ym5vZGVzOgorLSBmaXhlZC1saW5rCQk6IEZpeGVkLWxpbmsgc3Vibm9kZSBkZXNjcmliaW5nIGEgbGluayB0byBhIG5vbi1NRElPCisJCQkgIG1hbmFnZWQgZW50aXR5LiBTZWUKKwkJCSAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9maXhlZC1saW5rLnR4dAorCQkJICBmb3IgZGV0YWlscy4KKworRXhhbXBsZToKKworCWRzYUAwIHsKKwkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLGRzYSI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDI+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQlpbnRlcnJ1cHRzID0gPDEwPjsKKwkJZHNhLGV0aGVybmV0ID0gPCZldGhlcm5ldDA+OworCQlkc2EsbWlpLWJ1cyA9IDwmbWlpX2J1czA+OworCisJCXN3aXRjaEAwIHsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MD47CisJCQlyZWcgPSA8MTYgMD47CS8qIE1ESU8gYWRkcmVzcyAxNiwgc3dpdGNoIDAgaW4gdHJlZSAqLworCisJCQlwb3J0QDAgeworCQkJCXJlZyA9IDwwPjsKKwkJCQlsYWJlbCA9ICJsYW4xIjsKKwkJCQlwaHktaGFuZGxlID0gPCZwaHkwPjsKKwkJCX07CisKKwkJCXBvcnRAMSB7CisJCQkJcmVnID0gPDE+OworCQkJCWxhYmVsID0gImxhbjIiOworCQkJfTsKKworCQkJcG9ydEA1IHsKKwkJCQlyZWcgPSA8NT47CisJCQkJbGFiZWwgPSAiY3B1IjsKKwkJCX07CisKKwkJCXN3aXRjaDBwb3J0NjogcG9ydEA2IHsKKwkJCQlyZWcgPSA8Nj47CisJCQkJbGFiZWwgPSAiZHNhIjsKKwkJCQlsaW5rID0gPCZzd2l0Y2gxcG9ydDAKKwkJCQkgICAgICAgICZzd2l0Y2gycG9ydDA+OworCQkJfTsKKwkJfTsKKworCQlzd2l0Y2hAMSB7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCQkJcmVnID0gPDE3IDE+OwkvKiBNRElPIGFkZHJlc3MgMTcsIHN3aXRjaCAxIGluIHRyZWUgKi8KKwkJCW1paS1idXMgPSA8Jm1paV9idXMxPjsKKworCQkJc3dpdGNoMXBvcnQwOiBwb3J0QDAgeworCQkJCXJlZyA9IDwwPjsKKwkJCQlsYWJlbCA9ICJkc2EiOworCQkJCWxpbmsgPSA8JnN3aXRjaDBwb3J0Nj47CisJCQl9OworCQkJc3dpdGNoMXBvcnQxOiBwb3J0QDEgeworCQkJCXJlZyA9IDwxPjsKKwkJCQlsYWJlbCA9ICJkc2EiOworCQkJCWxpbmsgPSA8JnN3aXRjaDJwb3J0MT47CisJCQl9OworCQl9OworCisJCXN3aXRjaEAyIHsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MD47CisJCQlyZWcgPSA8MTggMj47CS8qIE1ESU8gYWRkcmVzcyAxOCwgc3dpdGNoIDIgaW4gdHJlZSAqLworCQkJbWlpLWJ1cyA9IDwmbWlpX2J1czE+OworCisJCQlzd2l0Y2gycG9ydDA6IHBvcnRAMCB7CisJCQkJcmVnID0gPDA+OworCQkJCWxhYmVsID0gImRzYSI7CisJCQkJbGluayA9IDwmc3dpdGNoMXBvcnQxCisJCQkJICAgICAgICAmc3dpdGNoMHBvcnQ2PjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZW1hY19yb2NrY2hpcC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2VtYWNfcm9ja2NoaXAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkYzFjNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2VtYWNfcm9ja2NoaXAudHh0CkBAIC0wLDAgKzEsNTAgQEAKKyogQVJDIEVNQUMgMTAvMTAwIEV0aGVybmV0IHBsYXRmb3JtIGRyaXZlciBmb3IgUm9ja2NoaXAgUmszMDY2L1JLMzE4OCBTb0NzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAicm9ja2NoaXAscmszMDY2LWVtYWMiIG9yICJyb2NrY2hpcCxyazMxODgtZW1hYyIKKyAgYWNjb3JkaW5nIHRvIHRoZSB0YXJnZXQgU29DLgorLSByZWc6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIHRoZSBFTUFDIGludGVycnVwdHMKKy0gcm9ja2NoaXAsZ3JmOiBwaGFuZGxlIHRvIHRoZSBzeXNjb24gZ3JmIHVzZWQgdG8gY29udHJvbCBzcGVlZCBhbmQgbW9kZQorICBmb3IgZW1hYy4KKy0gcGh5OiBzZWUgZXRoZXJuZXQudHh0IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorLSBwaHktbW9kZTogc2VlIGV0aGVybmV0LnR4dCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gcGh5LXN1cHBseTogcGhhbmRsZSB0byBhIHJlZ3VsYXRvciBpZiB0aGUgUEhZIG5lZWRzIG9uZQorCitDbG9jayBoYW5kbGluZzoKKy0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCistIGNsb2NrLW5hbWVzOiBTaGFsbCBiZSAiaGNsayIgZm9yIHRoZSBob3N0IGNsb2NrIG5lZWRlZCB0byBjYWxjdWxhdGUgYW5kIHNldAorICBwb2xsaW5nIHBlcmlvZCBvZiBFTUFDIGFuZCAibWFjcmVmIiBmb3IgdGhlIHJlZmVyZW5jZSBjbG9jayBuZWVkZWQgdG8gdHJhbnNmZXIKKyAgZGF0YSB0byBhbmQgZnJvbSB0aGUgcGh5LgorCitDaGlsZCBub2RlcyBvZiB0aGUgZHJpdmVyIGFyZSB0aGUgaW5kaXZpZHVhbCBQSFkgZGV2aWNlcyBjb25uZWN0ZWQgdG8gdGhlCitNRElPIGJ1cy4gVGhleSBtdXN0IGhhdmUgYSAicmVnIiBwcm9wZXJ0eSBnaXZlbiB0aGUgUEhZIGFkZHJlc3Mgb24gdGhlIE1ESU8gYnVzLgorCitFeGFtcGxlczoKKworZXRoZXJuZXRAMTAyMDQwMDAgeworCWNvbXBhdGlibGUgPSAicm9ja2NoaXAscmszMTg4LWVtYWMiOworCXJlZyA9IDwweGMwZmMyMDAwIDB4M2M+OworCWludGVycnVwdHMgPSA8Nj47CisJbWFjLWFkZHJlc3MgPSBbIDAwIDExIDIyIDMzIDQ0IDU1IF07CisKKwljbG9ja3MgPSA8JmNydSBIQ0xLX0VNQUM+LCA8JmNydSBTQ0xLX01BQz47CisJY2xvY2stbmFtZXMgPSAiaGNsayIsICJtYWNyZWYiOworCisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwlwaW5jdHJsLTAgPSA8JmVtYWNfeGZlcj4sIDwmZW1hY19tZGlvPiwgPCZwaHlfaW50PjsKKworCXJvY2tjaGlwLGdyZiA9IDwmZ3JmPjsKKworCXBoeSA9IDwmcGh5MD47CisJcGh5LW1vZGUgPSAicm1paSI7CisJcGh5LXN1cHBseSA9IDwmdmNjX3JtaWk+OworCisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47CisJcGh5MDogZXRoZXJuZXQtcGh5QDAgeworCSAgICAgIHJlZyA9IDwxPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXRoZXJuZXQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ldGhlcm5ldC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ4OGYzNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXRoZXJuZXQudHh0CkBAIC0wLDAgKzEsMzUgQEAKK1RoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBhcmUgY29tbW9uIHRvIHRoZSBFdGhlcm5ldCBjb250cm9sbGVyczoKKworLSBsb2NhbC1tYWMtYWRkcmVzczogYXJyYXkgb2YgNiBieXRlcywgc3BlY2lmaWVzIHRoZSBNQUMgYWRkcmVzcyB0aGF0IHdhcworICBhc3NpZ25lZCB0byB0aGUgbmV0d29yayBkZXZpY2U7CistIG1hYy1hZGRyZXNzOiBhcnJheSBvZiA2IGJ5dGVzLCBzcGVjaWZpZXMgdGhlIE1BQyBhZGRyZXNzIHRoYXQgd2FzIGxhc3QgdXNlZCBieQorICB0aGUgYm9vdCBwcm9ncmFtOyBzaG91bGQgYmUgdXNlZCBpbiBjYXNlcyB3aGVyZSB0aGUgTUFDIGFkZHJlc3MgYXNzaWduZWQgdG8KKyAgdGhlIGRldmljZSBieSB0aGUgYm9vdCBwcm9ncmFtIGlzIGRpZmZlcmVudCBmcm9tIHRoZSAibG9jYWwtbWFjLWFkZHJlc3MiCisgIHByb3BlcnR5OworLSBtYXgtc3BlZWQ6IG51bWJlciwgc3BlY2lmaWVzIG1heGltdW0gc3BlZWQgaW4gTWJpdC9zIHN1cHBvcnRlZCBieSB0aGUgZGV2aWNlOworLSBtYXgtZnJhbWUtc2l6ZTogbnVtYmVyLCBtYXhpbXVtIHRyYW5zZmVyIHVuaXQgKElFRUUgZGVmaW5lZCBNVFUpLCByYXRoZXIgdGhhbgorICB0aGUgbWF4aW11bSBmcmFtZSBzaXplICh0aGVyZSdzIGNvbnRyYWRpY3Rpb24gaW4gZVBBUFIpLgorLSBwaHktbW9kZTogc3RyaW5nLCBvcGVyYXRpb24gbW9kZSBvZiB0aGUgUEhZIGludGVyZmFjZTsgc3VwcG9ydGVkIHZhbHVlcyBhcmUKKyAgIm1paSIsICJnbWlpIiwgInNnbWlpIiwgInFzZ21paSIsICJ0YmkiLCAicmV2LW1paSIsICJybWlpIiwgInJnbWlpIiwgInJnbWlpLWlkIiwKKyAgInJnbWlpLXJ4aWQiLCAicmdtaWktdHhpZCIsICJydGJpIiwgInNtaWkiLCAieGdtaWkiOyB0aGlzIGlzIG5vdyBhIGRlLWZhY3RvCisgIHN0YW5kYXJkIHByb3BlcnR5OworLSBwaHktY29ubmVjdGlvbi10eXBlOiB0aGUgc2FtZSBhcyAicGh5LW1vZGUiIHByb3BlcnR5IGJ1dCBkZXNjcmliZWQgaW4gZVBBUFI7CistIHBoeS1oYW5kbGU6IHBoYW5kbGUsIHNwZWNpZmllcyBhIHJlZmVyZW5jZSB0byBhIG5vZGUgcmVwcmVzZW50aW5nIGEgUEhZCisgIGRldmljZTsgdGhpcyBwcm9wZXJ0eSBpcyBkZXNjcmliZWQgaW4gZVBBUFIgYW5kIHNvIHByZWZlcnJlZDsKKy0gcGh5OiB0aGUgc2FtZSBhcyAicGh5LWhhbmRsZSIgcHJvcGVydHksIG5vdCByZWNvbW1lbmRlZCBmb3IgbmV3IGJpbmRpbmdzLgorLSBwaHktZGV2aWNlOiB0aGUgc2FtZSBhcyAicGh5LWhhbmRsZSIgcHJvcGVydHksIG5vdCByZWNvbW1lbmRlZCBmb3IgbmV3CisgIGJpbmRpbmdzLgorLSByeC1maWZvLWRlcHRoOiB0aGUgc2l6ZSBvZiB0aGUgY29udHJvbGxlcidzIHJlY2VpdmUgZmlmbyBpbiBieXRlcy4gVGhpcworICBpcyB1c2VkIGZvciBjb21wb25lbnRzIHRoYXQgY2FuIGhhdmUgY29uZmlndXJhYmxlIHJlY2VpdmUgZmlmbyBzaXplcywKKyAgYW5kIGlzIHVzZWZ1bCBmb3IgZGV0ZXJtaW5pbmcgY2VydGFpbiBjb25maWd1cmF0aW9uIHNldHRpbmdzIHN1Y2ggYXMKKyAgZmxvdyBjb250cm9sIHRocmVzaG9sZHMuCistIHR4LWZpZm8tZGVwdGg6IHRoZSBzaXplIG9mIHRoZSBjb250cm9sbGVyJ3MgdHJhbnNtaXQgZmlmbyBpbiBieXRlcy4gVGhpcworICBpcyB1c2VkIGZvciBjb21wb25lbnRzIHRoYXQgY2FuIGhhdmUgY29uZmlndXJhYmxlIGZpZm8gc2l6ZXMuCistIG1hbmFnZWQ6IHN0cmluZywgc3BlY2lmaWVzIHRoZSBQSFkgbWFuYWdlbWVudCB0eXBlLiBTdXBwb3J0ZWQgdmFsdWVzIGFyZToKKyAgImF1dG8iLCAiaW4tYmFuZC1zdGF0dXMiLiAiYXV0byIgaXMgdGhlIGRlZmF1bHQsIGl0IHVzZXNzIE1ESU8gZm9yCisgIG1hbmFnZW1lbnQgaWYgZml4ZWQtbGluayBpcyBub3Qgc3BlY2lmaWVkLgorCitDaGlsZCBub2RlcyBvZiB0aGUgRXRoZXJuZXQgY29udHJvbGxlciBhcmUgdHlwaWNhbGx5IHRoZSBpbmRpdmlkdWFsIFBIWSBkZXZpY2VzCitjb25uZWN0ZWQgdmlhIHRoZSBNRElPIGJ1cyAoc29tZXRpbWVzIHRoZSBNRElPIGJ1cyBjb250cm9sbGVyIGlzIHNlcGFyYXRlKS4KK1RoZXkgYXJlIGRlc2NyaWJlZCBpbiB0aGUgcGh5LnR4dCBmaWxlIGluIHRoaXMgc2FtZSBkaXJlY3RvcnkuCitGb3Igbm9uLU1ESU8gUEhZIG1hbmFnZW1lbnQgc2VlIGZpeGVkLWxpbmsudHh0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lemNoaXBfZW5ldC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2V6Y2hpcF9lbmV0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTI5YjJiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9lemNoaXBfZW5ldC50eHQKQEAgLTAsMCArMSwxNSBAQAorKiBFWmNoaXAgTlBTIE1hbmFnZW1lbnQgRXRoZXJuZXQgcG9ydCBkcml2ZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJlemNoaXAsbnBzLW1ndC1lbmV0IgorLSByZWc6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIHRoZSBFTkVUIGludGVycnVwdAorCitFeGFtcGxlczoKKworCWV0aGVybmV0QGYwMDAzMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJlemNoaXAsbnBzLW1ndC1lbmV0IjsKKwkJcmVnID0gPDB4ZjAwMDMwMDAgMHg0ND47CisJCWludGVycnVwdHMgPSA8Nz47CisJCW1hYy1hZGRyZXNzID0gWyAwMCAxMSAyMiAzMyA0NCA1NSBdOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZpeGVkLWxpbmsudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9maXhlZC1saW5rLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzVkODg5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9maXhlZC1saW5rLnR4dApAQCAtMCwwICsxLDU0IEBACitGaXhlZCBsaW5rIERldmljZSBUcmVlIGJpbmRpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTb21lIEV0aGVybmV0IE1BQ3MgaGF2ZSBhICJmaXhlZCBsaW5rIiwgYW5kIGFyZSBub3QgY29ubmVjdGVkIHRvIGEKK25vcm1hbCBNRElPLW1hbmFnZWQgUEhZIGRldmljZS4gRm9yIHRob3NlIHNpdHVhdGlvbnMsIGEgRGV2aWNlIFRyZWUKK2JpbmRpbmcgYWxsb3dzIHRvIGRlc2NyaWJlIGEgImZpeGVkIGxpbmsiLgorCitTdWNoIGEgZml4ZWQgbGluayBzaXR1YXRpb24gaXMgZGVzY3JpYmVkIGJ5IGNyZWF0aW5nIGEgJ2ZpeGVkLWxpbmsnCitzdWItbm9kZSBvZiB0aGUgRXRoZXJuZXQgTUFDIGRldmljZSBub2RlLCB3aXRoIHRoZSBmb2xsb3dpbmcKK3Byb3BlcnRpZXM6CisKKyogJ3NwZWVkJyAoaW50ZWdlciwgbWFuZGF0b3J5KSwgdG8gaW5kaWNhdGUgdGhlIGxpbmsgc3BlZWQuIEFjY2VwdGVkCisgIHZhbHVlcyBhcmUgMTAsIDEwMCBhbmQgMTAwMAorKiAnZnVsbC1kdXBsZXgnIChib29sZWFuLCBvcHRpb25hbCksIHRvIGluZGljYXRlIHRoYXQgZnVsbCBkdXBsZXggaXMKKyAgdXNlZC4gV2hlbiBhYnNlbnQsIGhhbGYgZHVwbGV4IGlzIGFzc3VtZWQuCisqICdwYXVzZScgKGJvb2xlYW4sIG9wdGlvbmFsKSwgdG8gaW5kaWNhdGUgdGhhdCBwYXVzZSBzaG91bGQgYmUKKyAgZW5hYmxlZC4KKyogJ2FzeW0tcGF1c2UnIChib29sZWFuLCBvcHRpb25hbCksIHRvIGluZGljYXRlIHRoYXQgYXN5bV9wYXVzZSBzaG91bGQKKyAgYmUgZW5hYmxlZC4KKyogJ2xpbmstZ3Bpb3MnICgnZ3Bpby1saXN0Jywgb3B0aW9uYWwpLCB0byBpbmRpY2F0ZSBpZiBhIGdwaW8gY2FuIGJlIHJlYWQKKyAgdG8gZGV0ZXJtaW5lIGlmIHRoZSBsaW5rIGlzIHVwLgorCitPbGQsIGRlcHJlY2F0ZWQgJ2ZpeGVkLWxpbmsnIGJpbmRpbmc6CisKKyogQSAnZml4ZWQtbGluaycgcHJvcGVydHkgaW4gdGhlIEV0aGVybmV0IE1BQyBub2RlLCB3aXRoIDUgY2VsbHMsIG9mIHRoZQorICBmb3JtIDxhIGIgYyBkIGU+IHdpdGggdGhlIGZvbGxvd2luZyBhY2NlcHRlZCB2YWx1ZXM6CisgIC0gYTogZW11bGF0ZWQgUEhZIElELCBjaG9vc2UgYW55IGJ1dCBidXQgdW5pcXVlIHRvIHRoZSBhbGwgc3BlY2lmaWVkCisgICAgZml4ZWQtbGlua3MsIGZyb20gMCB0byAzMQorICAtIGI6IGR1cGxleCBjb25maWd1cmF0aW9uOiAwIGZvciBoYWxmIGR1cGxleCwgMSBmb3IgZnVsbCBkdXBsZXgKKyAgLSBjOiBsaW5rIHNwZWVkIGluIE1iaXRzL3NlYywgYWNjZXB0ZWQgdmFsdWVzIGFyZTogMTAsIDEwMCBhbmQgMTAwMAorICAtIGQ6IHBhdXNlIGNvbmZpZ3VyYXRpb246IDAgZm9yIG5vIHBhdXNlLCAxIGZvciBwYXVzZQorICAtIGU6IGFzeW1tZXRyaWMgcGF1c2UgY29uZmlndXJhdGlvbjogMCBmb3Igbm8gYXN5bW1ldHJpYyBwYXVzZSwgMSBmb3IKKyAgICBhc3ltbWV0cmljIHBhdXNlCisKK0V4YW1wbGVzOgorCitldGhlcm5ldEAwIHsKKwkuLi4KKwlmaXhlZC1saW5rIHsKKwkgICAgICBzcGVlZCA9IDwxMDAwPjsKKwkgICAgICBmdWxsLWR1cGxleDsKKwl9OworCS4uLgorfTsKKworZXRoZXJuZXRAMSB7CisJLi4uCisJZml4ZWQtbGluayB7CisJICAgICAgc3BlZWQgPSA8MTAwMD47CisJICAgICAgcGF1c2U7CisJICAgICAgbGluay1ncGlvcyA9IDwmZ3BpbzAgMTIgR1BJT19BQ1RJVkVfSElHSD47CisJfTsKKwkuLi4KK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbC1mZWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wtZmVjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWViNjExCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wtZmVjLnR4dApAQCAtMCwwICsxLDYyIEBACisqIEZyZWVzY2FsZSBGYXN0IEV0aGVybmV0IENvbnRyb2xsZXIgKEZFQykKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAiZnNsLDxzb2M+LWZlYyIKKy0gcmVnIDogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKy0gaW50ZXJydXB0cyA6IFNob3VsZCBjb250YWluIGZlYyBpbnRlcnJ1cHQKKy0gcGh5LW1vZGUgOiBTZWUgZXRoZXJuZXQudHh0IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHBoeS1yZXNldC1ncGlvcyA6IFNob3VsZCBzcGVjaWZ5IHRoZSBncGlvIGZvciBwaHkgcmVzZXQKKy0gcGh5LXJlc2V0LWR1cmF0aW9uIDogUmVzZXQgZHVyYXRpb24gaW4gbWlsbGlzZWNvbmRzLiAgU2hvdWxkIHByZXNlbnQKKyAgb25seSBpZiBwcm9wZXJ0eSAicGh5LXJlc2V0LWdwaW9zIiBpcyBhdmFpbGFibGUuICBNaXNzaW5nIHRoZSBwcm9wZXJ0eQorICB3aWxsIGhhdmUgdGhlIGR1cmF0aW9uIGJlIDEgbWlsbGlzZWNvbmQuICBOdW1iZXJzIGdyZWF0ZXIgdGhhbiAxMDAwIGFyZQorICBpbnZhbGlkIGFuZCAxIG1pbGxpc2Vjb25kIHdpbGwgYmUgdXNlZCBpbnN0ZWFkLgorLSBwaHktc3VwcGx5IDogcmVndWxhdG9yIHRoYXQgcG93ZXJzIHRoZSBFdGhlcm5ldCBQSFkuCistIHBoeS1oYW5kbGUgOiBwaGFuZGxlIHRvIHRoZSBQSFkgZGV2aWNlIGNvbm5lY3RlZCB0byB0aGlzIGRldmljZS4KKy0gZml4ZWQtbGluayA6IEFzc3VtZSBhIGZpeGVkIGxpbmsuIFNlZSBmaXhlZC1saW5rLnR4dCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgIFVzZSBpbnN0ZWFkIG9mIHBoeS1oYW5kbGUuCistIGZzbCxudW0tdHgtcXVldWVzIDogVGhlIHByb3BlcnR5IGlzIHZhbGlkIGZvciBlbmV0LWF2YiBJUCwgd2hpY2ggc3VwcG9ydHMKKyAgaHcgbXVsdGkgcXVldWVzLiBTaG91bGQgc3BlY2lmeSB0aGUgdHggcXVldWUgbnVtYmVyLCBvdGhlcndpc2Ugc2V0IHR4IHF1ZXVlCisgIG51bWJlciB0byAxLgorLSBmc2wsbnVtLXJ4LXF1ZXVlcyA6IFRoZSBwcm9wZXJ0eSBpcyB2YWxpZCBmb3IgZW5ldC1hdmIgSVAsIHdoaWNoIHN1cHBvcnRzCisgIGh3IG11bHRpIHF1ZXVlcy4gU2hvdWxkIHNwZWNpZnkgdGhlIHJ4IHF1ZXVlIG51bWJlciwgb3RoZXJ3aXNlIHNldCByeCBxdWV1ZQorICBudW1iZXIgdG8gMS4KKy0gZnNsLG1hZ2ljLXBhY2tldCA6IElmIHByZXNlbnQsIGluZGljYXRlcyB0aGF0IHRoZSBoYXJkd2FyZSBzdXBwb3J0cyB3YWtpbmcKKyAgdXAgdmlhIG1hZ2ljIHBhY2tldC4KKworT3B0aW9uYWwgc3Vibm9kZXM6CistIG1kaW8gOiBzcGVjaWZpZXMgdGhlIG1kaW8gYnVzIGluIHRoZSBGRUMsIHVzZWQgYXMgYSBjb250YWluZXIgZm9yIHBoeSBub2RlcworICBhY2NvcmRpbmcgdG8gcGh5LnR4dCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkKKworRXhhbXBsZToKKworZXRoZXJuZXRAODNmZWMwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDUxLWZlYyIsICJmc2wsaW14MjctZmVjIjsKKwlyZWcgPSA8MHg4M2ZlYzAwMCAweDQwMDA+OworCWludGVycnVwdHMgPSA8ODc+OworCXBoeS1tb2RlID0gIm1paSI7CisJcGh5LXJlc2V0LWdwaW9zID0gPCZncGlvMiAxNCAwPjsgLyogR1BJTzJfMTQgKi8KKwlsb2NhbC1tYWMtYWRkcmVzcyA9IFswMCAwNCA5RiAwMSAxQiBCOV07CisJcGh5LXN1cHBseSA9IDwmcmVnX2ZlY19zdXBwbHk+OworfTsKKworRXhhbXBsZSB3aXRoIHBoeSBzcGVjaWZpZWQ6CisKK2V0aGVybmV0QDgzZmVjMDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxpbXg1MS1mZWMiLCAiZnNsLGlteDI3LWZlYyI7CisJcmVnID0gPDB4ODNmZWMwMDAgMHg0MDAwPjsKKwlpbnRlcnJ1cHRzID0gPDg3PjsKKwlwaHktbW9kZSA9ICJtaWkiOworCXBoeS1yZXNldC1ncGlvcyA9IDwmZ3BpbzIgMTQgMD47IC8qIEdQSU8yXzE0ICovCisJbG9jYWwtbWFjLWFkZHJlc3MgPSBbMDAgMDQgOUYgMDEgMUIgQjldOworCXBoeS1zdXBwbHkgPSA8JnJlZ19mZWNfc3VwcGx5PjsKKwlwaHktaGFuZGxlID0gPCZldGhwaHk+OworCW1kaW8geworCQlldGhwaHk6IGV0aGVybmV0LXBoeUA2IHsKKwkJCWNvbXBhdGlibGUgPSAiZXRoZXJuZXQtcGh5LWllZWU4MDIuMy1jMjIiOworCQkJcmVnID0gPDY+OworCQkJbWF4LXNwZWVkID0gPDEwMD47CisJCX07CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbC10c2VjLXBoeS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbC10c2VjLXBoeS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI3NGYwZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLXRzZWMtcGh5LnR4dApAQCAtMCwwICsxLDE1MSBAQAorKiBNRElPIElPIGRldmljZQorCitUaGUgTURJTyBpcyBhIGJ1cyB0byB3aGljaCB0aGUgUEhZIGRldmljZXMgYXJlIGNvbm5lY3RlZC4gIEZvciBlYWNoCitkZXZpY2UgdGhhdCBleGlzdHMgb24gdGhpcyBidXMsIGEgY2hpbGQgbm9kZSBzaG91bGQgYmUgY3JlYXRlZC4gIFNlZQordGhlIGRlZmluaXRpb24gb2YgdGhlIFBIWSBub2RlIGluIGJvb3Rpbmctd2l0aG91dC1vZi50eHQgZm9yIGFuIGV4YW1wbGUKK29mIGhvdyB0byBkZWZpbmUgYSBQSFkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gcmVnIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorICAtIGNvbXBhdGlibGUgOiBTaG91bGQgZGVmaW5lIHRoZSBjb21wYXRpYmxlIGRldmljZSB0eXBlIGZvciB0aGUKKyAgICBtZGlvLiBDdXJyZW50bHkgc3VwcG9ydGVkIHN0cmluZ3MvZGV2aWNlcyBhcmU6CisJLSAiZnNsLGdpYW5mYXItdGJpIgorCS0gImZzbCxnaWFuZmFyLW1kaW8iCisJLSAiZnNsLGV0c2VjMi10YmkiCisJLSAiZnNsLGV0c2VjMi1tZGlvIgorCS0gImZzbCx1Y2MtbWRpbyIKKwktICJmc2wsZm1hbi1tZGlvIgorICAgIFdoZW4gZGV2aWNlX3R5cGUgaXMgIm1kaW8iLCB0aGUgZm9sbG93aW5nIHN0cmluZ3MgYXJlIGFsc28gY29uc2lkZXJlZDoKKwktICJnaWFuZmFyIgorCS0gInVjY19nZXRoX3BoeSIKKworRXhhbXBsZToKKworCW1kaW9AMjQ1MjAgeworCQlyZWcgPSA8MjQ1MjAgMjA+OworCQljb21wYXRpYmxlID0gImZzbCxnaWFuZmFyLW1kaW8iOworCisJCWV0aGVybmV0LXBoeUAwIHsKKwkJCS4uLi4uLgorCQl9OworCX07CisKKyogVEJJIEludGVybmFsIE1ESU8gYnVzCisKK0FzIG9mIHRoaXMgd3JpdGluZywgZXZlcnkgdHNlYyBpcyBhc3NvY2lhdGVkIHdpdGggYW4gaW50ZXJuYWwgVEJJIFBIWS4KK1RoaXMgUEhZIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGxvY2FsIE1ESU8gYnVzLiAgVGhlc2UgYnVzZXMgYXJlIGRlZmluZWQKK3NpbWlsYXJseSB0byB0aGUgbWRpbyBidXNlcywgZXhjZXB0IHRoZXkgYXJlIGNvbXBhdGlibGUgd2l0aCAiZnNsLGdpYW5mYXItdGJpIi4KK1RoZSBUQkkgUEhZcyB1bmRlcm5lYXRoIHRoZW0gYXJlIHNpbWlsYXIgdG8gbm9ybWFsIFBIWXMsIGJ1dCB0aGUgcmVnIHByb3BlcnR5CitpcyBjb25zaWRlcmVkIGluc3RydWN0aXZlLCByYXRoZXIgdGhhbiBkZXNjcmlwdGl2ZS4gIFRoZSByZWcgcHJvcGVydHkgc2hvdWxkCitiZSBjaG9zZW4gc28gaXQgZG9lc24ndCBpbnRlcmZlcmUgd2l0aCBvdGhlciBQSFlzIG9uIHRoZSBidXMuCisKKyogR2lhbmZhci1jb21wYXRpYmxlIGV0aGVybmV0IG5vZGVzCisKK1Byb3BlcnRpZXM6CisKKyAgLSBkZXZpY2VfdHlwZSA6IFNob3VsZCBiZSAibmV0d29yayIKKyAgLSBtb2RlbCA6IE1vZGVsIG9mIHRoZSBkZXZpY2UuICBDYW4gYmUgIlRTRUMiLCAiZVRTRUMiLCBvciAiRkVDIgorICAtIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImdpYW5mYXIiCisgIC0gcmVnIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorICAtIGludGVycnVwdHMgOiBGb3IgRkVDIGRldmljZXMsIHRoZSBmaXJzdCBpbnRlcnJ1cHQgaXMgdGhlIGRldmljZSdzCisgICAgaW50ZXJydXB0LiAgRm9yIFRTRUMgYW5kIGVUU0VDIGRldmljZXMsIHRoZSBmaXJzdCBpbnRlcnJ1cHQgaXMKKyAgICB0cmFuc21pdCwgdGhlIHNlY29uZCBpcyByZWNlaXZlLCBhbmQgdGhlIHRoaXJkIGlzIGVycm9yLgorICAtIHBoeS1oYW5kbGUgOiBTZWUgZXRoZXJuZXQudHh0IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICAtIGZpeGVkLWxpbmsgOiBTZWUgZml4ZWQtbGluay50eHQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICAtIHBoeS1jb25uZWN0aW9uLXR5cGUgOiBTZWUgZXRoZXJuZXQudHh0IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorICAgIFRoaXMgcHJvcGVydHkgaXMgb25seSByZWFsbHkgbmVlZGVkIGlmIHRoZSBjb25uZWN0aW9uIGlzIG9mIHR5cGUKKyAgICAicmdtaWktaWQiLCBhcyBhbGwgb3RoZXIgY29ubmVjdGlvbiB0eXBlcyBhcmUgZGV0ZWN0ZWQgYnkgaGFyZHdhcmUuCisgIC0gZnNsLG1hZ2ljLXBhY2tldCA6IElmIHByZXNlbnQsIGluZGljYXRlcyB0aGF0IHRoZSBoYXJkd2FyZSBzdXBwb3J0cworICAgIHdha2luZyB1cCB2aWEgbWFnaWMgcGFja2V0LgorICAtIGZzbCx3YWtlLW9uLWZpbGVyIDogSWYgcHJlc2VudCwgaW5kaWNhdGVzIHRoYXQgdGhlIGhhcmR3YXJlIHN1cHBvcnRzCisgICAgd2FraW5nIHVwIGJ5IEZpbGVyIEdlbmVyYWwgUHVycG9zZSBJbnRlcnJ1cHQgKEZHUEkpIGFzc2VydGVkIG9uIHRoZQorICAgIFJ4IGludCBsaW5lLiAgVGhpcyBpcyBhbiBhZHZhbmNlZCBwb3dlciBtYW5hZ2VtZW50IGNhcGFiaWxpdHkgYWxsb3dpbmcKKyAgICBjZXJ0YWluIHBhY2tldCB0eXBlcyAodXNlcikgZGVmaW5lZCBieSBmaWxlciBydWxlcyB0byB3YWtlIHVwIHRoZSBzeXN0ZW0uCisgIC0gYmQtc3Rhc2ggOiBJZiBwcmVzZW50LCBpbmRpY2F0ZXMgdGhhdCB0aGUgaGFyZHdhcmUgc3VwcG9ydHMgc3Rhc2hpbmcKKyAgICBidWZmZXIgZGVzY3JpcHRvcnMgaW4gdGhlIEwyLgorICAtIHJ4LXN0YXNoLWxlbiA6IERlbm90ZXMgdGhlIG51bWJlciBvZiBieXRlcyBvZiBhIHJlY2VpdmVkIGJ1ZmZlciB0byBzdGFzaAorICAgIGluIHRoZSBMMi4KKyAgLSByeC1zdGFzaC1pZHggOiBEZW5vdGVzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgYnl0ZSBmcm9tIHRoZSByZWNlaXZlZAorICAgIGJ1ZmZlciB0byBzdGFzaCBpbiB0aGUgTDIuCisKK0V4YW1wbGU6CisJZXRoZXJuZXRAMjQwMDAgeworCQlkZXZpY2VfdHlwZSA9ICJuZXR3b3JrIjsKKwkJbW9kZWwgPSAiVFNFQyI7CisJCWNvbXBhdGlibGUgPSAiZ2lhbmZhciI7CisJCXJlZyA9IDwweDI0MDAwIDB4MTAwMD47CisJCWxvY2FsLW1hYy1hZGRyZXNzID0gWyAwMCBFMCAwQyAwMCA3MyAwMCBdOworCQlpbnRlcnJ1cHRzID0gPDI5IDIgMzAgMiAzNCAyPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmbXBpYz47CisJCXBoeS1oYW5kbGUgPSA8JnBoeTA+CisJfTsKKworKiBHaWFuZmFyIFBUUCBjbG9jayBub2RlcworCitHZW5lcmFsIFByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlICAgU2hvdWxkIGJlICJmc2wsZXRzZWMtcHRwIgorICAtIHJlZyAgICAgICAgICBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCisgIC0gaW50ZXJydXB0cyAgIFRoZXJlIHNob3VsZCBiZSBhdCBsZWFzdCB0d28gaW50ZXJydXB0cy4gU29tZSBkZXZpY2VzCisgICAgICAgICAgICAgICAgIGhhdmUgYXMgbWFueSBhcyBmb3VyIFBUUCByZWxhdGVkIGludGVycnVwdHMuCisKK0Nsb2NrIFByb3BlcnRpZXM6CisKKyAgLSBmc2wsY2tzZWwgICAgICAgIFRpbWVyIHJlZmVyZW5jZSBjbG9jayBzb3VyY2UuCisgIC0gZnNsLHRjbGstcGVyaW9kICBUaW1lciByZWZlcmVuY2UgY2xvY2sgcGVyaW9kIGluIG5hbm9zZWNvbmRzLgorICAtIGZzbCx0bXItcHJzYyAgICAgUHJlc2NhbGVyLCBkaXZpZGVzIHRoZSBvdXRwdXQgY2xvY2suCisgIC0gZnNsLHRtci1hZGQgICAgICBGcmVxdWVuY3kgY29tcGVuc2F0aW9uIHZhbHVlLgorICAtIGZzbCx0bXItZmlwZXIxICAgRml4ZWQgaW50ZXJ2YWwgcGVyaW9kIHB1bHNlIGdlbmVyYXRvci4KKyAgLSBmc2wsdG1yLWZpcGVyMiAgIEZpeGVkIGludGVydmFsIHBlcmlvZCBwdWxzZSBnZW5lcmF0b3IuCisgIC0gZnNsLG1heC1hZGogICAgICBNYXhpbXVtIGZyZXF1ZW5jeSBhZGp1c3RtZW50IGluIHBhcnRzIHBlciBiaWxsaW9uLgorCisgIFRoZXNlIHByb3BlcnRpZXMgc2V0IHRoZSBvcGVyYXRpb25hbCBwYXJhbWV0ZXJzIGZvciB0aGUgUFRQCisgIGNsb2NrLiBZb3UgbXVzdCBjaG9vc2UgdGhlc2UgY2FyZWZ1bGx5IGZvciB0aGUgY2xvY2sgdG8gd29yayByaWdodC4KKyAgSGVyZSBpcyBob3cgdG8gZmlndXJlIGdvb2QgdmFsdWVzOgorCisgIFRpbWVyT3NjICAgICA9IHNlbGVjdGVkIHJlZmVyZW5jZSBjbG9jayAgIE1IegorICB0Y2xrX3BlcmlvZCAgPSBkZXNpcmVkIGNsb2NrIHBlcmlvZCAgICAgICBuYW5vc2Vjb25kcworICBOb21pbmFsRnJlcSAgPSAxMDAwIC8gdGNsa19wZXJpb2QgICAgICAgICBNSHoKKyAgRnJlcURpdlJhdGlvID0gVGltZXJPc2MgLyBOb21pbmFsRnJlcSAgICAgKG11c3QgYmUgZ3JlYXRlciB0aGF0IDEuMCkKKyAgdG1yX2FkZCAgICAgID0gY2VpbCgyXjMyIC8gRnJlcURpdlJhdGlvKQorICBPdXRwdXRDbG9jayAgPSBOb21pbmFsRnJlcSAvIHRtcl9wcnNjICAgICBNSHoKKyAgUHVsc2VXaWR0aCAgID0gMSAvIE91dHB1dENsb2NrICAgICAgICAgICAgbWljcm9zZWNvbmRzCisgIEZpcGVyRnJlcTEgICA9IGRlc2lyZWQgZnJlcXVlbmN5IGluIEh6CisgIEZpcGVyRGl2MSAgICA9IDEwMDAwMDAgKiBPdXRwdXRDbG9jayAvIEZpcGVyRnJlcTEKKyAgdG1yX2ZpcGVyMSAgID0gdG1yX3Byc2MgKiB0Y2xrX3BlcmlvZCAqIEZpcGVyRGl2MSAtIHRjbGtfcGVyaW9kCisgIG1heF9hZGogICAgICA9IDEwMDAwMDAwMDAgKiAoRnJlcURpdlJhdGlvIC0gMS4wKSAtIDEKKworICBUaGUgY2FsY3VsYXRpb24gZm9yIHRtcl9maXBlcjIgaXMgdGhlIHNhbWUgYXMgZm9yIHRtcl9maXBlcjEuIFRoZQorICBkcml2ZXIgZXhwZWN0cyB0aGF0IHRtcl9maXBlcjEgd2lsbCBiZSBjb3JyZWN0bHkgc2V0IHRvIHByb2R1Y2UgYSAxCisgIFB1bHNlIFBlciBTZWNvbmQgKFBQUykgc2lnbmFsLCBzaW5jZSB0aGlzIHdpbGwgYmUgb2ZmZXJlZCB0byB0aGUgUFBTCisgIHN1YnN5c3RlbSB0byBzeW5jaHJvbml6ZSB0aGUgTGludXggY2xvY2suCisKKyAgUmVmZXJlbmNlIGNsb2NrIHNvdXJjZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSwgd2hpY2ggaXMgaG9sZGVkCisgIGluIENLU0VMIGJpdHMgaW4gVE1SX0NUUkwgcmVnaXN0ZXIuICJmc2wsY2tzZWwiIHByb3BlcnR5IGtlZXBzIHRoZQorICB2YWx1ZSwgd2hpY2ggd2lsbCBiZSBkaXJlY3RseSB3cml0dGVuIGluIHRob3NlIGJpdHMsIHRoYXQgaXMgd2h5LAorICBhY2NvcmRpbmcgdG8gcmVmZXJlbmNlIG1hbnVhbCwgdGhlIG5leHQgY2xvY2sgc291cmNlcyBjYW4gYmUgdXNlZDoKKworICA8MD4gLSBleHRlcm5hbCBoaWdoIHByZWNpc2lvbiB0aW1lciByZWZlcmVuY2UgY2xvY2sgKFRTRUNfVE1SX0NMSworICAgICAgICBpbnB1dCBpcyB1c2VkIGZvciB0aGlzIHB1cnBvc2UpOworICA8MT4gLSBlVFNFQyBzeXN0ZW0gY2xvY2s7CisgIDwyPiAtIGVUU0VDMSB0cmFuc21pdCBjbG9jazsKKyAgPDM+IC0gUlRDIGNsb2NrIGlucHV0LgorCisgIFdoZW4gdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHVzZWQsIGVUU0VDIHN5c3RlbSBjbG9jayB3aWxsIHNlcnZlIGFzCisgIElFRUUgMTU4OCB0aW1lciByZWZlcmVuY2UgY2xvY2suCisKK0V4YW1wbGU6CisKKwlwdHBfY2xvY2tAMjRFMDAgeworCQljb21wYXRpYmxlID0gImZzbCxldHNlYy1wdHAiOworCQlyZWcgPSA8MHgyNEUwMCAweEIwPjsKKwkJaW50ZXJydXB0cyA9IDwxMiAweDggMTMgMHg4PjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwgJmlwaWMgPjsKKwkJZnNsLGNrc2VsICAgICAgID0gPDE+OworCQlmc2wsdGNsay1wZXJpb2QgPSA8MTA+OworCQlmc2wsdG1yLXByc2MgICAgPSA8MTAwPjsKKwkJZnNsLHRtci1hZGQgICAgID0gPDB4OTk5OTk5QTQ+OworCQlmc2wsdG1yLWZpcGVyMSAgPSA8MHgzQjlBQzlGNj47CisJCWZzbCx0bXItZmlwZXIyICA9IDwweDAwMDE4Njk2PjsKKwkJZnNsLG1heC1hZGogICAgID0gPDY1OTk5OTk5OD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZ3BtYy1ldGgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ncG1jLWV0aC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNlNGE2NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZ3BtYy1ldGgudHh0CkBAIC0wLDAgKzEsOTcgQEAKK0RldmljZSB0cmVlIGJpbmRpbmdzIGZvciBFdGhlcm5ldCBjaGlwIGNvbm5lY3RlZCB0byBUSSBHUE1DCisKK0Jlc2lkZXMgYmVpbmcgdXNlZCB0byBpbnRlcmZhY2Ugd2l0aCBleHRlcm5hbCBtZW1vcnkgZGV2aWNlcywgdGhlCitHZW5lcmFsLVB1cnBvc2UgTWVtb3J5IENvbnRyb2xsZXIgY2FuIGJlIHVzZWQgdG8gY29ubmVjdCBQc2V1ZG8tU1JBTSBkZXZpY2VzCitzdWNoIGFzIGV0aGVybmV0IGNvbnRyb2xsZXJzIHRvIHByb2Nlc3NvcnMgdXNpbmcgdGhlIFRJIEdQTUMgYXMgYSBkYXRhIGJ1cy4KKworRXRoZXJuZXQgY29udHJvbGxlcnMgY29ubmVjdGVkIHRvIFRJIEdQTUMgYXJlIHJlcHJlc2VudGVkIGFzIGNoaWxkIG5vZGVzIG9mCit0aGUgR1BNQyBjb250cm9sbGVyIHdpdGggYW4gImV0aGVybmV0IiBuYW1lLgorCitBbGwgdGltaW5nIHJlbGV2YW50IHByb3BlcnRpZXMgYXMgd2VsbCBhcyBnZW5lcmljIEdQTUMgY2hpbGQgcHJvcGVydGllcyBhcmUKK2V4cGxhaW5lZCBpbiBhIHNlcGFyYXRlIGRvY3VtZW50cy4gUGxlYXNlIHJlZmVyIHRvCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3RpLWdwbWMudHh0CisKK0ZvciB0aGUgcHJvcGVydGllcyByZWxldmFudCB0byB0aGUgZXRoZXJuZXQgY29udHJvbGxlciBjb25uZWN0ZWQgdG8gdGhlIEdQTUMKK3JlZmVyIHRvIHRoZSBiaW5kaW5nIGRvY3VtZW50YXRpb24gb2YgdGhlIGRldmljZS4gRm9yIGV4YW1wbGUsIHRoZSBkb2N1bWVudGF0aW9uCitmb3IgdGhlIFNNU0MgOTExeCBpcyBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Ntc2M5MTF4LnR4dAorCitDaGlsZCBub2RlcyBuZWVkIHRvIHNwZWNpZnkgdGhlIEdQTUMgYnVzIGFkZHJlc3Mgd2lkdGggdXNpbmcgdGhlICJiYW5rLXdpZHRoIgorcHJvcGVydHkgYnV0IGlzIHBvc3NpYmxlIHRoYXQgYW4gZXRoZXJuZXQgY29udHJvbGxlciBhbHNvIGhhcyBhIHByb3BlcnR5IHRvCitzcGVjaWZ5IHRoZSBJL08gcmVnaXN0ZXJzIGFkZHJlc3Mgd2lkdGguIEV2ZW4gd2hlbiB0aGUgR1BNQyBoYXMgYSBtYXhpbXVtIDE2LWJpdAorYWRkcmVzcyB3aWR0aCwgaXQgc3VwcG9ydHMgZGV2aWNlcyB3aXRoIDMyLWJpdCB3b3JkIHJlZ2lzdGVycy4KK0ZvciBleGFtcGxlIHdpdGggYW4gU01TQyBMQU45MTF4LzkxMnggY29udHJvbGxlciBjb25uZWN0ZWQgdG8gdGhlIFRJIEdQTUMgb24gYW4KK09NQVAyKyBib2FyZCwgImJhbmstd2lkdGggPSA8Mj47IiBhbmQgInJlZy1pby13aWR0aCA9IDw0PjsiLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBiYW5rLXdpZHRoOiAJCUFkZHJlc3Mgd2lkdGggb2YgdGhlIGRldmljZSBpbiBieXRlcy4gR1BNQyBzdXBwb3J0cyA4LWJpdAorCQkJYW5kIDE2LWJpdCBkZXZpY2VzIGFuZCBzbyBtdXN0IGJlIGVpdGhlciAxIG9yIDIgYnl0ZXMuCistIGNvbXBhdGlibGU6CQlDb21wYXRpYmxlIHN0cmluZyBwcm9wZXJ0eSBmb3IgdGhlIGV0aGVybmV0IGNoaWxkIGRldmljZS4KKy0gZ3BtYyxjcy1vbi1uczoJQ2hpcC1zZWxlY3QgYXNzZXJ0aW9uIHRpbWUKKy0gZ3BtYyxjcy1yZC1vZmYtbnM6CUNoaXAtc2VsZWN0IGRlLWFzc2VydGlvbiB0aW1lIGZvciByZWFkcworLSBncG1jLGNzLXdyLW9mZi1uczoJQ2hpcC1zZWxlY3QgZGUtYXNzZXJ0aW9uIHRpbWUgZm9yIHdyaXRlcworLSBncG1jLG9lLW9uLW5zOglPdXRwdXQtZW5hYmxlIGFzc2VydGlvbiB0aW1lCistIGdwbWMsb2Utb2ZmLW5zOglPdXRwdXQtZW5hYmxlIGRlLWFzc2VydGlvbiB0aW1lCistIGdwbWMsd2Utb24tbnM6CVdyaXRlLWVuYWJsZSBhc3NlcnRpb24gdGltZQorLSBncG1jLHdlLW9mZi1uczoJV3JpdGUtZW5hYmxlIGRlLWFzc2VydGlvbiB0aW1lCistIGdwbWMsYWNjZXNzLW5zOglTdGFydCBjeWNsZSB0byBmaXJzdCBkYXRhIGNhcHR1cmUgKHJlYWQgYWNjZXNzKQorLSBncG1jLHJkLWN5Y2xlLW5zOglUb3RhbCByZWFkIGN5Y2xlIHRpbWUKKy0gZ3BtYyx3ci1jeWNsZS1uczoJVG90YWwgd3JpdGUgY3ljbGUgdGltZQorLSByZWc6CQkJQ2hpcC1zZWxlY3QsIGJhc2UgYWRkcmVzcyAocmVsYXRpdmUgdG8gY2hpcC1zZWxlY3QpCisJCQlhbmQgc2l6ZSBvZiB0aGUgbWVtb3J5IG1hcHBlZCBmb3IgdGhlIGRldmljZS4KKwkJCU5vdGUgdGhhdCBiYXNlIGFkZHJlc3Mgd2lsbCBiZSB0eXBpY2FsbHkgMCBhcyB0aGlzCisJCQlpcyB0aGUgc3RhcnQgb2YgdGhlIGNoaXAtc2VsZWN0LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBncG1jLFhYWAkJQWRkaXRpb25hbCBHUE1DIHRpbWluZ3MgYW5kIHNldHRpbmdzIHBhcmFtZXRlcnMuIFNlZQorCQkJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy90aS1ncG1jLnR4dAorCitFeGFtcGxlOgorCitncG1jOiBncG1jQDZlMDAwMDAwIHsKKwljb21wYXRpYmxlID0gInRpLG9tYXAzNDMwLWdwbWMiOworCXRpLGh3bW9kcyA9ICJncG1jIjsKKwlyZWcgPSA8MHg2ZTAwMDAwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8MjA+OworCWdwbWMsbnVtLWNzID0gPDg+OworCWdwbWMsbnVtLXdhaXRwaW5zID0gPDQ+OworCSNhZGRyZXNzLWNlbGxzID0gPDI+OworCSNzaXplLWNlbGxzID0gPDE+OworCisJcmFuZ2VzID0gPDUgMCAweDJjMDAwMDAwIDB4MTAwMDAwMD47CisKKwlldGhlcm5ldEA1LDAgeworCQljb21wYXRpYmxlID0gInNtc2MsbGFuOTIyMSIsICJzbXNjLGxhbjkxMTUiOworCQlyZWcgPSA8NSAwIDB4ZmY+OworCQliYW5rLXdpZHRoID0gPDI+OworCisJCWdwbWMsbXV4LWFkZC1kYXRhOworCQlncG1jLGNzLW9uLW5zID0gPDA+OworCQlncG1jLGNzLXJkLW9mZi1ucyA9IDwxODY+OworCQlncG1jLGNzLXdyLW9mZi1ucyA9IDwxODY+OworCQlncG1jLGFkdi1vbi1ucyA9IDwxMj47CisJCWdwbWMsYWR2LXJkLW9mZi1ucyA9IDw0OD47CisJCWdwbWMsYWR2LXdyLW9mZi1ucyA9IDw0OD47CisJCWdwbWMsb2Utb24tbnMgPSA8NTQ+OworCQlncG1jLG9lLW9mZi1ucyA9IDwxNjg+OworCQlncG1jLHdlLW9uLW5zID0gPDU0PjsKKwkJZ3BtYyx3ZS1vZmYtbnMgPSA8MTY4PjsKKwkJZ3BtYyxyZC1jeWNsZS1ucyA9IDwxODY+OworCQlncG1jLHdyLWN5Y2xlLW5zID0gPDE4Nj47CisJCWdwbWMsYWNjZXNzLW5zID0gPDExND47CisJCWdwbWMscGFnZS1idXJzdC1hY2Nlc3MtbnMgPSA8Nj47CisJCWdwbWMsYnVzLXR1cm5hcm91bmQtbnMgPSA8MTI+OworCQlncG1jLGN5Y2xlMmN5Y2xlLWRlbGF5LW5zID0gPDE4PjsKKwkJZ3BtYyx3ci1kYXRhLW11eC1idXMtbnMgPSA8OTA+OworCQlncG1jLHdyLWFjY2Vzcy1ucyA9IDwxODY+OworCQlncG1jLGN5Y2xlMmN5Y2xlLXNhbWVjc2VuOworCQlncG1jLGN5Y2xlMmN5Y2xlLWRpZmZjc2VuOworCisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW82PjsKKwkJaW50ZXJydXB0cyA9IDwxNj47CisJCXZtbWMtc3VwcGx5ID0gPCZ2ZGR2YXJpbz47CisJCXZtbWNfYXV4LXN1cHBseSA9IDwmdmRkMzNhPjsKKwkJcmVnLWlvLXdpZHRoID0gPDQ+OworCisJCXNtc2Msc2F2ZS1tYWMtYWRkcmVzczsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaGlzaWxpY29uLWhpcDA0LW5ldC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2hpc2lsaWNvbi1oaXAwNC1uZXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxZGY4YTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2hpc2lsaWNvbi1oaXAwNC1uZXQudHh0CkBAIC0wLDAgKzEsODggQEAKK0hpc2lsaWNvbiBoaXAwNCBFdGhlcm5ldCBDb250cm9sbGVyCisKKyogRXRoZXJuZXQgY29udHJvbGxlciBub2RlCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiaGlzaWxpY29uLGhpcDA0LW1hYyIuCistIHJlZzogYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UuCistIGludGVycnVwdHM6IGludGVycnVwdCBmb3IgdGhlIGRldmljZS4KKy0gcG9ydC1oYW5kbGU6IDxwaGFuZGxlIHBvcnQgY2hhbm5lbD4KKwlwaGFuZGxlLCBzcGVjaWZpZXMgYSByZWZlcmVuY2UgdG8gdGhlIHN5c2NvbiBwcGUgbm9kZQorCXBvcnQsIHBvcnQgbnVtYmVyIGNvbm5lY3RlZCB0byB0aGUgY29udHJvbGxlcgorCWNoYW5uZWwsIHJlY3YgY2hhbm5lbCBzdGFydCBmcm9tIGNoYW5uZWwgKiBudW1iZXIgKFJYX0RFU0NfTlVNKQorLSBwaHktbW9kZTogc2VlIGV0aGVybmV0LnR4dCBbMV0uCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHBoeS1oYW5kbGU6IHNlZSBldGhlcm5ldC50eHQgWzFdLgorCitbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ldGhlcm5ldC50eHQKKworCisqIEV0aGVybmV0IHBwZSBub2RlOgorQ29udHJvbCByeCAmIHR4IGZpZm9zIG9mIGFsbCBldGhlcm5ldCBjb250cm9sbGVycy4KK0hhdmUgMjA0OCByZWN2IGNoYW5uZWxzIHNoYXJlZCBieSBhbGwgZXRoZXJuZXQgY29udHJvbGxlcnMsIG9ubHkgaWYgbm8gb3ZlcmxhcC4KK0VhY2ggY29udHJvbGxlcidzIHJlY3YgY2hhbm5lbCBzdGFydCBmcm9tIGNoYW5uZWwgKiBudW1iZXIgKFJYX0RFU0NfTlVNKS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImhpc2lsaWNvbixoaXAwNC1wcGUiLCAic3lzY29uIi4KKy0gcmVnOiBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZS4KKworCisqIE1ESU8gYnVzIG5vZGU6CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJoaXNpbGljb24sbWRpbyIuCistIEluaGVyaXRzIGZyb20gTURJTyBidXMgbm9kZSBiaW5kaW5nIFsyXQorWzJdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGh5LnR4dAorCitFeGFtcGxlOgorCW1kaW8geworCQljb21wYXRpYmxlID0gImhpc2lsaWNvbixtZGlvIjsKKwkJcmVnID0gPDB4MjhmMTAwMCAweDEwMDA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJcGh5MDogZXRoZXJuZXQtcGh5QDAgeworCQkJY29tcGF0aWJsZSA9ICJldGhlcm5ldC1waHktaWVlZTgwMi4zLWMyMiI7CisJCQlyZWcgPSA8MD47CisJCQltYXJ2ZWxsLHJlZy1pbml0ID0gPDE4IDB4MTQgMCAweDgwMDE+OworCQl9OworCisJCXBoeTE6IGV0aGVybmV0LXBoeUAxIHsKKwkJCWNvbXBhdGlibGUgPSAiZXRoZXJuZXQtcGh5LWllZWU4MDIuMy1jMjIiOworCQkJcmVnID0gPDE+OworCQkJbWFydmVsbCxyZWctaW5pdCA9IDwxOCAweDE0IDAgMHg4MDAxPjsKKwkJfTsKKwl9OworCisJcHBlOiBwcGVAMjhjMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiaGlzaWxpY29uLGhpcDA0LXBwZSIsICJzeXNjb24iOworCQlyZWcgPSA8MHgyOGMwMDAwIDB4MTAwMDA+OworCX07CisKKwlmZTogZXRoZXJuZXRAMjhiMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiaGlzaWxpY29uLGhpcDA0LW1hYyI7CisJCXJlZyA9IDwweDI4YjAwMDAgMHgxMDAwMD47CisJCWludGVycnVwdHMgPSA8MCA0MTMgND47CisJCXBoeS1tb2RlID0gIm1paSI7CisJCXBvcnQtaGFuZGxlID0gPCZwcGUgMzEgMD47CisJfTsKKworCWdlMDogZXRoZXJuZXRAMjgwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiaGlzaWxpY29uLGhpcDA0LW1hYyI7CisJCXJlZyA9IDwweDI4MDAwMDAgMHgxMDAwMD47CisJCWludGVycnVwdHMgPSA8MCA0MDIgND47CisJCXBoeS1tb2RlID0gInNnbWlpIjsKKwkJcG9ydC1oYW5kbGUgPSA8JnBwZSAwIDE+OworCQlwaHktaGFuZGxlID0gPCZwaHkwPjsKKwl9OworCisJZ2U4OiBldGhlcm5ldEAyODgwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJoaXNpbGljb24saGlwMDQtbWFjIjsKKwkJcmVnID0gPDB4Mjg4MDAwMCAweDEwMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDQxMCA0PjsKKwkJcGh5LW1vZGUgPSAic2dtaWkiOworCQlwb3J0LWhhbmRsZSA9IDwmcHBlIDggMj47CisJCXBoeS1oYW5kbGUgPSA8JnBoeTE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2hpc2lsaWNvbi1oaXg1aGQyLWdtYWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9oaXNpbGljb24taGl4NWhkMi1nbWFjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWQzOThiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9oaXNpbGljb24taGl4NWhkMi1nbWFjLnR4dApAQCAtMCwwICsxLDM2IEBACitIaXNpbGljb24gaGl4NWhkMiBnbWFjIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJoaXNpbGljb24saGl4NWhkMi1nbWFjIi4KKy0gcmVnOiBzcGVjaWZpZXMgYmFzZSBwaHlzaWNhbCBhZGRyZXNzKHMpIGFuZCBzaXplIG9mIHRoZSBkZXZpY2UgcmVnaXN0ZXJzLgorICBUaGUgZmlyc3QgcmVnaW9uIGlzIHRoZSBNQUMgcmVnaXN0ZXIgYmFzZSBhbmQgc2l6ZS4KKyAgVGhlIHNlY29uZCByZWdpb24gaXMgZXh0ZXJuYWwgaW50ZXJmYWNlIGNvbnRyb2wgcmVnaXN0ZXIuCistIGludGVycnVwdHM6IHNob3VsZCBjb250YWluIHRoZSBNQUMgaW50ZXJydXB0LgorLSAjYWRkcmVzcy1jZWxsczogbXVzdCBiZSA8MT4uCistICNzaXplLWNlbGxzOiBtdXN0IGJlIDwwPi4KKy0gcGh5LW1vZGU6IHNlZSBldGhlcm5ldC50eHQgWzFdLgorLSBwaHktaGFuZGxlOiBzZWUgZXRoZXJuZXQudHh0IFsxXS4KKy0gbWFjLWFkZHJlc3M6IHNlZSBldGhlcm5ldC50eHQgWzFdLgorLSBjbG9ja3M6IGNsb2NrIHBoYW5kbGUgYW5kIHNwZWNpZmllciBwYWlyLgorCistIFBIWSBzdWJub2RlOiBpbmhlcml0cyBmcm9tIHBoeSBiaW5kaW5nIFsyXQorCitbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ldGhlcm5ldC50eHQKK1syXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3BoeS50eHQKKworRXhhbXBsZToKKwlnbWFjMDogZXRoZXJuZXRAZjk4NDAwMDAgeworCQljb21wYXRpYmxlID0gImhpc2lsaWNvbixoaXg1aGQyLWdtYWMiOworCQlyZWcgPSA8MHhmOTg0MDAwMCAweDEwMDA+LDwweGY5ODQzMDBjIDB4ND47CisJCWludGVycnVwdHMgPSA8MCA3MSA0PjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQlwaHktbW9kZSA9ICJtaWkiOworCQlwaHktaGFuZGxlID0gPCZwaHkyPjsKKwkJbWFjLWFkZHJlc3MgPSBbMDAgMDAgMDAgMDAgMDAgMDBdOworCQljbG9ja3MgPSA8JmNsb2NrIEhJWDVIRDJfTUFDMF9DTEs+OworCisJCXBoeTI6IGV0aGVybmV0LXBoeUAyIHsKKwkJCXJlZyA9IDwyPjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9oaXNpbGljb24taG5zLWRzYWYudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9oaXNpbGljb24taG5zLWRzYWYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNDExYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2hpc2lsaWNvbi1obnMtZHNhZi50eHQKQEAgLTAsMCArMSw0OSBAQAorSGlzaWxpY29uIERTQSBGYWJyaWMgZGV2aWNlIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJoaXNpbGljb24saG5zLWRzYWYtdjEiIG9yICJoaXNpbGljb24saG5zLWRzYWYtdjIiLgorICAiaGlzaWxpY29uLGhucy1kc2FmLXYxIiBpcyBmb3IgaGlwMDUuCisgICJoaXNpbGljb24saG5zLWRzYWYtdjIiIGlzIGZvciBIaTE2MTAgYW5kIEhpMTYxMi4KKy0gZHNhLW5hbWU6IGRzYSBmYWJyaWMgbmFtZSB3aG8gcHJvdmlkZSB0aGlzIGludGVyZmFjZS4KKyAgc2hvdWxkIGJlICJkc2FmWCIsIFggaXMgdGhlIGRzYWYgaWQuCistIG1vZGU6IGRzYSBmYWJyaWMgbW9kZSBzdHJpbmcuIG9ubHkgc3VwcG9ydCBvbmUgb2YgZHNhZiBtb2RlcyBsaWtlIHRoZXNlOgorCQkiMnBvcnQtNjR2ZiIsCisJCSI2cG9ydC0xNnJzcyIsCisJCSI2cG9ydC0xNnZmIi4KKy0gaW50ZXJydXB0LXBhcmVudDogdGhlIGludGVycnVwdCBwYXJlbnQgb2YgdGhpcyBkZXZpY2UuCistIGludGVycnVwdHM6IHNob3VsZCBjb250YWluIHRoZSBEU0EgRmFicmljIGFuZCByY2IgaW50ZXJydXB0LgorLSByZWc6IHNwZWNpZmllcyBiYXNlIHBoeXNpY2FsIGFkZHJlc3MoZXMpIGFuZCBzaXplIG9mIHRoZSBkZXZpY2UgcmVnaXN0ZXJzLgorICBUaGUgZmlyc3QgcmVnaW9uIGlzIGV4dGVybmFsIGludGVyZmFjZSBjb250cm9sIHJlZ2lzdGVyIGJhc2UgYW5kIHNpemUuCisgIFRoZSBzZWNvbmQgcmVnaW9uIGlzIFNlckRlcyBiYXNlIHJlZ2lzdGVyIGFuZCBzaXplLgorICBUaGUgdGhpcmQgcmVnaW9uIGlzIHRoZSBQUEUgcmVnaXN0ZXIgYmFzZSBhbmQgc2l6ZS4KKyAgVGhlIGZvdXJ0aCByZWdpb24gaXMgZHNhIGZhYnJpYyBiYXNlIHJlZ2lzdGVyIGFuZCBzaXplLgorICBUaGUgZmlmdGggcmVnaW9uIGlzIGNwbGQgYmFzZSByZWdpc3RlciBhbmQgc2l6ZSwgaXQgaXMgbm90IHJlcXVpcmVkIGlmIGRvIG5vdCB1c2UgY3BsZC4KKy0gcGh5LWhhbmRsZTogcGh5IGhhbmRsZSBvZiBwaHlzaWNsIHBvcnQsIDAgaWYgbm90IGFueSBwaHkgZGV2aWNlLiBzZWUgZXRoZXJuZXQudHh0IFsxXS4KKy0gYnVmLXNpemU6IHJ4IGJ1ZmZlciBzaXplLCBzaG91bGQgYmUgMTYtMTAyNC4KKy0gZGVzYy1udW06IG51bWJlciBvZiBkZXNjcmlwdGlvbiBpbiBUWCBhbmQgUlggcXVldWUsIHNob3VsZCBiZSA1MTIsIDEwMjQsIDIwNDggb3IgNDA5Ni4KKworWzFdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGh5LnR4dAorCitFeGFtcGxlOgorCitkc2E6IGRzYUBjNzAwMDAwMCB7CisJY29tcGF0aWJsZSA9ICJoaXNpbGljb24saG5zLWRzYWYtdjEiOworCWRzYV9uYW1lID0gImRzYWYwIjsKKwltb2RlID0gIjZwb3J0LTE2cnNzIjsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZtYmlnZW5fZHNhPjsKKwlyZWcgPSA8MHgwIDB4QzAwMDAwMDAgMHgwIDB4NDIwMDAwCisJICAgICAgIDB4MCAweEMyMDAwMDAwIDB4MCAweDMwMDAwMAorCSAgICAgICAweDAgMHhjNTAwMDAwMCAweDAgMHg4OTAwMDAKKwkgICAgICAgMHgwIDB4YzcwMDAwMDAgMHgwIDB4NjAwMDA+OworCXBoeS1oYW5kbGUgPSA8MCAwIDAgMCAmc29jMF9waHk0ICZzb2MwX3BoeTUgMCAwPjsKKwlpbnRlcnJ1cHRzID0gPDEzMSA0Piw8MTMyIDQ+LCA8MTMzIDQ+LDwxMzQgND4sCisJCSAgICAgPDEzNSA0Piw8MTM2IDQ+LCA8MTM3IDQ+LDwxMzggND4sCisJCSAgICAgPDEzOSA0Piw8MTQwIDQ+LCA8MTQxIDQ+LDwxNDIgND4sCisJCSAgICAgPDE0MyA0Piw8MTQ0IDQ+LCA8MTQ1IDQ+LDwxNDYgND4sCisJCSAgICAgPDE0NyA0Piw8MTQ4IDQ+LCA8Mzg0IDE+LDwzODUgMT4sCisJCSAgICAgPDM4NiAxPiw8Mzg3IDE+LCA8Mzg4IDE+LDwzODkgMT4sCisJCSAgICAgPDM5MCAxPiw8MzkxIDE+LAorCWJ1Zi1zaXplID0gPDQwOTY+OworCWRlc2MtbnVtID0gPDEwMjQ+OworCWRtYS1jb2hlcmVudDsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2hpc2lsaWNvbi1obnMtbWRpby50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2hpc2lsaWNvbi1obnMtbWRpby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWMyM2ZkZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaGlzaWxpY29uLWhucy1tZGlvLnR4dApAQCAtMCwwICsxLDIyIEBACitIaXNpbGljb24gTURJTyBidXMgY29udHJvbGxlcgorCitQcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiaGlzaWxpY29uLG1kaW8iLCJoaXNpbGljb24saG5zLW1kaW8iLgorLSByZWc6IFRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIE1ESU8gYnVzIGNvbnRyb2xsZXIgcmVnaXN0ZXIgYmFuay4KKy0gI2FkZHJlc3MtY2VsbHM6IE11c3QgYmUgPDE+LgorLSAjc2l6ZS1jZWxsczogTXVzdCBiZSA8MD4uICBNRElPIGFkZHJlc3NlcyBoYXZlIG5vIHNpemUgY29tcG9uZW50LgorCitUeXBpY2FsbHkgYW4gTURJTyBidXMgbWlnaHQgaGF2ZSBzZXZlcmFsIGNoaWxkcmVuLgorCitFeGFtcGxlOgorICAgICAgICAgbWRpb0A4MDNjMDAwMCB7CisgICAgICAgICAgICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSA8MT47CisgICAgICAgICAgICAgICAgICAgI3NpemUtY2VsbHMgPSA8MD47CisgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJoaXNpbGljb24saG5zLW1kaW8iLCJoaXNpbGljb24sbWRpbyI7CisgICAgICAgICAgICAgICAgICAgcmVnID0gPDB4MCAweDgwM2MwMDAwIDB4MCAweDEwMDAwPjsKKworICAgICAgICAgICAgICAgICAgIGV0aGVybmV0LXBoeUAwIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWcgPSA8MD47CisgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2hpc2lsaWNvbi1obnMtbmljLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaGlzaWxpY29uLWhucy1uaWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxZDE5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2hpc2lsaWNvbi1obnMtbmljLnR4dApAQCAtMCwwICsxLDQ3IEBACitIaXNpbGljb24gTmV0d29yayBTdWJzeXN0ZW0gTklDIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImhpc2lsaWNvbixobnMtbmljLXYxIiBvciAiaGlzaWxpY29uLGhucy1uaWMtdjIiLgorICAiaGlzaWxpY29uLGhucy1uaWMtdjEiIGlzIGZvciBoaXAwNS4KKyAgImhpc2lsaWNvbixobnMtbmljLXYyIiBpcyBmb3IgSGkxNjEwIGFuZCBIaTE2MTIuCistIGFlLW5hbWU6IGFjY2VsZXJhdG9yIG5hbWUgd2hvIHByb3ZpZGVzIHRoaXMgaW50ZXJmYWNlLAorICBpcyBzaW1wbHkgYSBuYW1lIHJlZmVycmluZyB0byB0aGUgbmFtZSBvZiBuYW1lIGluIHRoZSBhY2NlbGVyYXRvciBub2RlLgorLSBwb3J0LWlkOiBpcyB0aGUgaW5kZXggb2YgcG9ydCBwcm92aWRlZCBieSBEU0FGICh0aGUgYWNjZWxlcmF0b3IpLiBEU0FGIGNhbgorICBjb25uZWN0IHRvIDggUEhZcy4gUG9ydCAwIHRvIDEgYXJlIGJvdGggdXNlZCBmb3IgYWRtaW5zdHJhdGlvbiBwdXJwb3NlLiBUaGV5CisgIGFyZSBjYWxsZWQgZGVidWcgcG9ydHMuCisKKyAgVGhlIHJlbWFpbmluZyA2IFBIWXMgYXJlIHRha2VuIGFjY29yZGluZyB0byB0aGUgbW9kZSBvZiBEU0FGLgorCisgIEluIE5JQyBtb2RlIG9mIERTQUYsIGFsbCA2IFBIWXMgYXJlIHRha2VuIGFzIGV0aGVybmV0IHBvcnRzIHRvIHRoZSBDUFUuIFRoZQorICBwb3J0LWlkIGNhbiBiZSAyIHRvIDcuIEhlcmUgaXMgdGhlIGRpYWdyYW06CisgICAgICAgICAgICArLS0tLS0rLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgfCAgICAgICAgICAgIENQVSAgICAgIHwKKyAgICAgICAgICAgICstKy0rLSstLS0rLSstKy0rLSstKy0rCisgICAgICAgICAgICAgIHwgfCAgICAgfCB8IHwgfCB8IHwKKyAgICAgICAgICAgICBkZWJ1ZyAgICAgICBzZXJ2aWNlCisgICAgICAgICAgICAgcG9ydCAgICAgICAgIHBvcnQKKyAgICAgICAgICAgICAoMCwxKSAgICAgICAoMi03KQorCisgIEluIFN3aXRjaCBtb2RlIG9mIERTQUYsIGFsbCA2IFBIWXMgYXJlIHRha2VuIGFzIHBoeXNpY2FsIHBvcnRzIGNvbm5lY3QgdG8gYQorICBMQU4gU3dpdGNoIHdoaWxlIHRoZSBDUFUgc2lkZSBhc3N1bWUgaXRzZWxmIGhhdmUgb25lIHNpbmdsZSBOSUMgY29ubmVjdCB0bworICB0aGlzIHN3aXRjaC4gSW4gdGhpcyBjYXNlLCB0aGUgcG9ydC1pZCB3aWxsIGJlIDIgb25seS4KKyAgICAgICAgICAgICstLS0tLSstLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICB8ICAgICAgICAgICAgQ1BVICAgICAgfAorICAgICAgICAgICAgKy0rLSstKy0tLSstKy0rLSstKy0rLSsKKyAgICAgICAgICAgICAgfCB8ICAgc2VydmljZXwgcG9ydCgyKQorICAgICAgICAgICAgIGRlYnVnICAgKy0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICBwb3J0ICAgIHwgICBzd2l0Y2ggICB8CisgICAgICAgICAgICAgKDAsMSkgICArLSstKy0rLSstKy0rKworICAgICAgICAgICAgICAgICAgICAgICB8IHwgfCB8IHwgfAorICAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsIHBvcnQKKworLSBsb2NhbC1tYWMtYWRkcmVzczogbWFjIGFkZHIgb2YgdGhlIGV0aGVybmV0IGludGVyZmFjZQorCitFeGFtcGxlOgorCisJZXRoZXJuZXRAMHsKKwkJY29tcGF0aWJsZSA9ICJoaXNpbGljb24saG5zLW5pYy12MSI7CisJCWFlLW5hbWUgPSAiZHNhZjAiOworCQlwb3J0LWlkID0gPDA+OworCQlsb2NhbC1tYWMtYWRkcmVzcyA9IFthMiAxNCBlNCA0YiA1NiA3Nl07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaWVlZTgwMjE1NC9hdDg2cmYyMzAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pZWVlODAyMTU0L2F0ODZyZjIzMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY4ZjFiZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaWVlZTgwMjE1NC9hdDg2cmYyMzAudHh0CkBAIC0wLDAgKzEsMjcgQEAKKyogQVQ4NlJGMjMwIElFRUUgODAyLjE1LjQgKgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6CQlzaG91bGQgYmUgImF0bWVsLGF0ODZyZjIzMCIsICJhdG1lbCxhdDg2cmYyMzEiLAorCQkJImF0bWVsLGF0ODZyZjIzMyIgb3IgImF0bWVsLGF0ODZyZjIxMiIKKyAgLSBzcGktbWF4LWZyZXF1ZW5jeToJbWF4aW1hbCBidXMgc3BlZWQsIHNob3VsZCBiZSBzZXQgdG8gNzUwMDAwMCBkZXBlbmRzCisJCQlzeW5jIG9yIGFzeW5jIG9wZXJhdGlvbiBtb2RlCisgIC0gcmVnOgkJdGhlIGNoaXBzZWxlY3QgaW5kZXgKKyAgLSBpbnRlcnJ1cHRzOgkJdGhlIGludGVycnVwdCBnZW5lcmF0ZWQgYnkgdGhlIGRldmljZS4gTm9uIGhpZ2gtbGV2ZWwKKwkJCWNhbiBvY2N1ciBkZWFkbG9ja3Mgd2hpbGUgaGFuZGxpbmcgaXNyLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIHJlc2V0LWdwaW86CQlHUElPIHNwZWMgZm9yIHRoZSByc3RuIHBpbgorICAtIHNsZWVwLWdwaW86CQlHUElPIHNwZWMgZm9yIHRoZSBzbHBfdHIgcGluCisgIC0geHRhbC10cmltOgkJdTggdmFsdWUgZm9yIGZpbmUgdHVuaW5nIHRoZSBpbnRlcm5hbCBjYXBhY2l0YW5jZQorCQkJYXJyYXlzIG9mIHh0YWwgcGluczogMCA9ICswIHBGLCAweGYgPSArNC41IHBGCisKK0V4YW1wbGU6CisKKwlhdDg2cmYyMzFAMCB7CisJCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ4NnJmMjMxIjsKKwkJc3BpLW1heC1mcmVxdWVuY3kgPSA8NzUwMDAwMD47CisJCXJlZyA9IDwwPjsKKwkJaW50ZXJydXB0cyA9IDwxOSA0PjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzM+OworCQl4dGFsLXRyaW0gPSAvYml0cy8gOCA8MHgwNj47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaWVlZTgwMjE1NC9jYzI1MjAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pZWVlODAyMTU0L2NjMjUyMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI2ZDQ5ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaWVlZTgwMjE1NC9jYzI1MjAudHh0CkBAIC0wLDAgKzEsMzMgQEAKKypDQzI1MjAgSUVFRSA4MDIuMTUuNCBDb21wYXRpYmxlIFJhZGlvKgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCS0gY29tcGF0aWJsZTogCQlzaG91bGQgYmUgInRpLGNjMjUyMCIKKwktIHNwaS1tYXgtZnJlcXVlbmN5OgltYXhpbWFsIGJ1cyBzcGVlZCAoODAwMDAwMCksIHNob3VsZCBiZSBzZXQgdG8gNDAwMDAwMCBkZXBlbmRzCisJCQkJc3luYyBvciBhc3luYyBvcGVyYXRpb24gbW9kZQorCS0gcmVnOgkJCXRoZSBjaGlwc2VsZWN0IGluZGV4CisJLSBwaW5jdHJsLTA6IAkJcGluIGNvbnRyb2wgZ3JvdXAgdG8gYmUgdXNlZCBmb3IgdGhpcyBjb250cm9sbGVyLgorCS0gcGluY3RybC1uYW1lczogCW11c3QgY29udGFpbiBhICJkZWZhdWx0IiBlbnRyeS4KKwktIGZpZm8tZ3BpbzoJCUdQSU8gc3BlYyBmb3IgdGhlIEZJRk8gcGluCisJLSBmaWZvcC1ncGlvOgkJR1BJTyBzcGVjIGZvciB0aGUgRklGT1AgcGluCisJLSBzZmQtZ3BpbzoJCUdQSU8gc3BlYyBmb3IgdGhlIFNGRCBwaW4KKwktIGNjYS1ncGlvOgkJR1BJTyBzcGVjIGZvciB0aGUgQ0NBIHBpbgorCS0gdnJlZy1ncGlvOgkJR1BJTyBzcGVjIGZvciB0aGUgVlJFRyBwaW4KKwktIHJlc2V0LWdwaW86CQlHUElPIHNwZWMgZm9yIHRoZSBSRVNFVCBwaW4KK09wdGlvbmFsIHByb3BlcnRpZXM6CisJLSBhbXBsaWZpZWQ6CQlpbmNsdWRlIGlmIHRoZSBDQzI1MjAgaXMgY29ubmVjdGVkIHRvIGEgQ0MyNTkxIGFtcGxpZmllcgorCitFeGFtcGxlOgorCWNjMjUyMEAwIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSxjYzI1MjAiOworCQlyZWcgPSA8MD47CisJCXNwaS1tYXgtZnJlcXVlbmN5ID0gPDQwMDAwMDA+OworCQlhbXBsaWZpZWQ7CisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmY2MyNTIwX2NhcGVfcGlucz47CisJCWZpZm8tZ3BpbyA9IDwmZ3BpbzEgMTggMD47CisJCWZpZm9wLWdwaW8gPSA8JmdwaW8xIDE5IDA+OworCQlzZmQtZ3BpbyA9IDwmZ3BpbzEgMTMgMD47CisJCWNjYS1ncGlvID0gPCZncGlvMSAxNiAwPjsKKwkJdnJlZy1ncGlvID0gPCZncGlvMCAzMSAwPjsKKwkJcmVzZXQtZ3BpbyA9IDwmZ3BpbzEgMTIgMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaWVlZTgwMjE1NC9tcmYyNGo0MC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2llZWU4MDIxNTQvbXJmMjRqNDAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0ZWQyZWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2llZWU4MDIxNTQvbXJmMjRqNDAudHh0CkBAIC0wLDAgKzEsMjAgQEAKKyogTVJGMjRKNDAgSUVFRSA4MDIuMTUuNCAqCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZToJCXNob3VsZCBiZSAibWljcm9jaGlwLG1yZjI0ajQwIiwgIm1pY3JvY2hpcCxtcmYyNGo0MG1hIiwKKwkJCW9yICJtaWNyb2NoaXAsbXJmMjRqNDBtYyIgZGVwZW5kcyBvbiB5b3VyIHRyYW5zY2VpdmVyCisJCQlib2FyZAorICAtIHNwaS1tYXgtZnJlcXVlbmN5OgltYXhpbWFsIGJ1cyBzcGVlZCwgc2hvdWxkIGJlIHNldCBzb21ldGhpbmcgdW5kZXIgb3IgZXF1YWwKKwkJCTEwMDAwMDAwCisgIC0gcmVnOgkJdGhlIGNoaXBzZWxlY3QgaW5kZXgKKyAgLSBpbnRlcnJ1cHRzOgkJdGhlIGludGVycnVwdCBnZW5lcmF0ZWQgYnkgdGhlIGRldmljZS4KKworRXhhbXBsZToKKworCW1yZjI0ajQwbWFAMCB7CisJCWNvbXBhdGlibGUgPSAibWljcm9jaGlwLG1yZjI0ajQwbWEiOworCQlzcGktbWF4LWZyZXF1ZW5jeSA9IDw4NTAwMDAwPjsKKwkJcmVnID0gPDA+OworCQlpbnRlcnJ1cHRzID0gPDE5IDg+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvMz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaXBxODA2eC1kd21hYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2lwcTgwNngtZHdtYWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkN2FiNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2lwcTgwNngtZHdtYWMudHh0CkBAIC0wLDAgKzEsMzUgQEAKKyogSVBRODA2eCBEV01BQyBFdGhlcm5ldCBjb250cm9sbGVyCisKK1RoZSBkZXZpY2UgaW5oZXJpdHMgYWxsIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBkd21hYy9zdG1tYWMgZGV2aWNlcworZGVzY3JpYmVkIGluIHRoZSBmaWxlIG5ldC9zdG1tYWMudHh0IHdpdGggdGhlIGZvbGxvd2luZyBjaGFuZ2VzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAicWNvbSxpcHE4MDZ4LWdtYWMiIGFsb25nIHdpdGggInNucHMsZHdtYWMiCisJICAgICAgYW5kIGFueSBhcHBsaWNhYmxlIG1vcmUgZGV0YWlsZWQgdmVyc2lvbiBudW1iZXIKKwkgICAgICBkZXNjcmliZWQgaW4gbmV0L3N0bW1hYy50eHQKKworLSBxY29tLG5zcy1jb21tb246IHNob3VsZCBjb250YWluIGEgcGhhbmRsZSB0byBhIHN5c2NvbiBkZXZpY2UgbWFwcGluZyB0aGUKKwkJICAgbnNzLWNvbW1vbiByZWdpc3RlcnMuCisKKy0gcWNvbSxxc2dtaWktY3NyOiBzaG91bGQgY29udGFpbiBhIHBoYW5kbGUgdG8gYSBzeXNjb24gZGV2aWNlIG1hcHBpbmcgdGhlCisJCSAgIHFzZ21paS1jc3IgcmVnaXN0ZXJzLgorCitFeGFtcGxlOgorCisJZ21hYzogZXRoZXJuZXRAMzcwMDAwMDAgeworCQlkZXZpY2VfdHlwZSA9ICJuZXR3b3JrIjsKKwkJY29tcGF0aWJsZSA9ICJxY29tLGlwcTgwNngtZ21hYyI7CisJCXJlZyA9IDwweDM3MDAwMDAwIDB4MjAwMDAwPjsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDIyMCBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJaW50ZXJydXB0LW5hbWVzID0gIm1hY2lycSI7CisKKwkJcWNvbSxuc3MtY29tbW9uID0gPCZuc3NfY29tbW9uPjsKKwkJcWNvbSxxc2dtaWktY3NyID0gPCZxc2dtaWlfY3NyPjsKKworCQljbG9ja3MgPSA8JmdjYyBHTUFDX0NPUkUxX0NMSz47CisJCWNsb2NrLW5hbWVzID0gInN0bW1hY2V0aCI7CisKKwkJcmVzZXRzID0gPCZnY2MgR01BQ19DT1JFMV9SRVNFVD47CisJCXJlc2V0LW5hbWVzID0gInN0bW1hY2V0aCI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQva2V5c3RvbmUtbmV0Y3AudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9rZXlzdG9uZS1uZXRjcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjMwYWI2YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQva2V5c3RvbmUtbmV0Y3AudHh0CkBAIC0wLDAgKzEsMjIxIEBACitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgZGV2aWNlIHRyZWUgYmluZGluZ3MgYXNzb2NpYXRlZCB3aXRoIHRoZQora2V5c3RvbmUgbmV0d29yayBjb3Byb2Nlc3NvcihOZXRDUCkgZHJpdmVyIHN1cHBvcnQuCisKK1RoZSBuZXR3b3JrIGNvcHJvY2Vzc29yIChOZXRDUCkgaXMgYSBoYXJkd2FyZSBhY2NlbGVyYXRvciB0aGF0IHByb2Nlc3NlcworRXRoZXJuZXQgcGFja2V0cy4gTmV0Q1AgaGFzIGEgZ2lnYWJpdCBFdGhlcm5ldCAoR2JFKSBzdWJzeXRlbSB3aXRoIGEgZXRoZXJuZXQKK3N3aXRjaCBzdWItbW9kdWxlIHRvIHNlbmQgYW5kIHJlY2VpdmUgcGFja2V0cy4gTmV0Q1AgYWxzbyBpbmNsdWRlcyBhIHBhY2tldAorYWNjZWxlcmF0b3IgKFBBKSBtb2R1bGUgdG8gcGVyZm9ybSBwYWNrZXQgY2xhc3NpZmljYXRpb24gb3BlcmF0aW9ucyBzdWNoIGFzCitoZWFkZXIgbWF0Y2hpbmcsIGFuZCBwYWNrZXQgbW9kaWZpY2F0aW9uIG9wZXJhdGlvbnMgc3VjaCBhcyBjaGVja3N1bQorZ2VuZXJhdGlvbi4gTmV0Q1AgY2FuIGFsc28gb3B0aW9uYWxseSBpbmNsdWRlIGEgU2VjdXJpdHkgQWNjZWxlcmF0b3IgKFNBKQorY2FwYWJsZSBvZiBwZXJmb3JtaW5nIElQU2VjIG9wZXJhdGlvbnMgb24gaW5ncmVzcy9lZ3Jlc3MgcGFja2V0cy4KKworS2V5c3RvbmUgSUkgU29DJ3MgYWxzbyBoYXZlIGEgMTAgR2lnYWJpdCBFdGhlcm5ldCBTdWJzeXN0ZW0gKFhHYkUpIHdoaWNoCitpbmNsdWRlcyBhIDMtcG9ydCBFdGhlcm5ldCBzd2l0Y2ggc3ViLW1vZHVsZSBjYXBhYmxlIG9mIDEwR2IvcyBhbmQgMUdiL3MgcmF0ZXMKK3BlciBFdGhlcm5ldCBwb3J0LgorCitLZXlzdG9uZSBOZXRDUCBkcml2ZXIgaGFzIGEgcGx1Zy1pbiBtb2R1bGUgYXJjaGl0ZWN0dXJlIHdoZXJlIGVhY2ggb2YgdGhlIE5ldENQCitzdWItbW9kdWxlcyBleGlzdCBhcyBhIGxvYWRhYmxlIGtlcm5lbCBtb2R1bGUgd2hpY2ggcGx1ZyBpbiB0byB0aGUgbmV0Y3AgY29yZS4KK1RoZXNlIHN1Yi1tb2R1bGVzIGFyZSByZXByZXNlbnRlZCBhcyAibmV0Y3AtZGV2aWNlcyIgaW4gdGhlIGR0cyBiaW5kaW5ncy4gSXQgaXMKK21hbmRhdG9yeSB0byBoYXZlIHRoZSBldGhlcm5ldCBzd2l0Y2ggc3ViLW1vZHVsZSBmb3IgdGhlIGV0aGVybmV0IGludGVyZmFjZSB0bworYmUgb3BlcmF0aW9uYWwuIEFueSBvdGhlciBzdWItbW9kdWxlIGxpa2UgdGhlIFBBIGlzIG9wdGlvbmFsLgorCitOZXRDUCBFdGhlcm5ldCBTdWJTeXN0ZW0gTGF5b3V0OgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBOZXRDUCBzdWJzeXN0ZW0oMTBHIG9yIDFHKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwl8CisJfC0+IE5ldENQIERldmljZXMgLT4JfAorCXwJCQl8LT4gR0JFL1hHQkUgU3dpdGNoCisJfAkJCXwKKwl8CQkJfC0+IFBhY2tldCBBY2NlbGVyYXRvcgorCXwJCQl8CisJfAkJCXwtPiBTZWN1cml0eSBBY2NlbGVyYXRvcgorCXwKKwl8CisJfAorCXwtPiBOZXRDUCBJbnRlcmZhY2VzIC0+CXwKKwkJCQl8LT4gRXRoZXJuZXQgUG9ydCAwCisJCQkJfAorCQkJCXwtPiBFdGhlcm5ldCBQb3J0IDEKKwkJCQl8CisJCQkJfC0+IEV0aGVybmV0IFBvcnQgMgorCQkJCXwKKwkJCQl8LT4gRXRoZXJuZXQgUG9ydCAzCisKKworTmV0Q1Agc3Vic3lzdGVtIHByb3BlcnRpZXM6CitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOglTaG91bGQgYmUgInRpLG5ldGNwLTEuMCIKKy0gY2xvY2tzOglwaGFuZGxlIHRvIHRoZSByZWZlcmVuY2UgY2xvY2tzIGZvciB0aGUgc3Vic3lzdGVtLgorLSBkbWEtaWQ6CU5hdmlnYXRvciBwYWNrZXQgZG1hIGluc3RhbmNlIGlkLgorLSByYW5nZXM6CWFkZHJlc3MgcmFuZ2Ugb2YgTmV0Q1AgKGluY2x1ZGVzLCBFdGhlcm5ldCBTUywgUEEgYW5kIFNBKQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSByZWc6CQlyZWdpc3RlciBsb2NhdGlvbiBhbmQgdGhlIHNpemUgZm9yIHRoZSBmb2xsb3dpbmcgcmVnaXN0ZXIKKwkJcmVnaW9ucyBpbiB0aGUgc3BlY2lmaWVkIG9yZGVyLgorCQktIEVmdXNlIE1BQyBhZGRyZXNzIHJlZ2lzdGVyCistIGRtYS1jb2hlcmVudDoJUHJlc2VudCBpZiBkbWEgb3BlcmF0aW9ucyBhcmUgY29oZXJlbnQKKy0gYmlnLWVuZGlhbjoJS2V5c3RvbmUgZGV2aWNlcyBjYW4gYmUgb3BlcmF0ZWQgaW4gYSBtb2RlIHdoZXJlIHRoZSBEU1AgaXMgaW4KKwkJdGhlIGJpZyBlbmRpYW4gbW9kZS4gSW4gc3VjaCBjYXNlcyBlbmFibGUgdGhpcyBvcHRpb24uIFRoaXMKKwkJb3B0aW9uIHNob3VsZCBhbHNvIGJlIGVuYWJsZWQgaWYgdGhlIEFSTSBpcyBvcGVyYXRlZCBpbgorCQliaWcgZW5kaWFuIG1vZGUgd2l0aCB0aGUgRFNQIGluIGxpdHRsZSBlbmRpYW4uCisKK05ldENQIGRldmljZSBwcm9wZXJ0aWVzOiBEZXZpY2Ugc3BlY2lmaWNhdGlvbiBmb3IgTmV0Q1Agc3ViLW1vZHVsZXMuCisxR2IvMTBHYiAoZ2JlL3hnYmUpIGV0aGVybmV0IHN3aXRjaCBzdWItbW9kdWxlIHNwZWNpZmljYXRpb25zLgorUmVxdWlyZWQgcHJvcGVydGllczoKKy0gbGFiZWw6CU11c3QgYmUgIm5ldGNwLWdiZSIgZm9yIDFHYiAmICJuZXRjcC14Z2JlIiBmb3IgMTBHYi4KKy0gY29tcGF0aWJsZToJTXVzdCBiZSBvbmUgb2YgYmVsb3c6LQorCQkidGksbmV0Y3AtZ2JlIiBmb3IgMUdiRSBvbiBOZXRDUCAxLjQKKwkJInRpLG5ldGNwLWdiZS01IiBmb3IgMUdiRSBOIE5ldENQIDEuNSAoTj01KQorCQkidGksbmV0Y3AtZ2JlLTkiIGZvciAxR2JFIE4gTmV0Q1AgMS41IChOPTkpCisJCSJ0aSxuZXRjcC1nYmUtMiIgZm9yIDFHYkUgTiBOZXRDUCAxLjUgKE49MikKKwkJInRpLG5ldGNwLXhnYmUiIGZvciAxMCBHYkUKKworLSByZWc6CQlyZWdpc3RlciBsb2NhdGlvbiBhbmQgdGhlIHNpemUgZm9yIHRoZSBmb2xsb3dpbmcgcmVnaXN0ZXIKKwkJcmVnaW9ucyBpbiB0aGUgc3BlY2lmaWVkIG9yZGVyLgorCQktIHN3aXRjaCBzdWJzeXN0ZW0gcmVnaXN0ZXJzCisJCS0gc2dtaWkgcG9ydDMvNCBtb2R1bGUgcmVnaXN0ZXJzIChvbmx5IGZvciBOZXRDUCAxLjQpCisJCS0gc3dpdGNoIG1vZHVsZSByZWdpc3RlcnMKKwkJLSBzZXJkZXMgcmVnaXN0ZXJzIChvbmx5IGZvciAxMEcpCisKKwkJTmV0Q1AgMS40IGV0aHNzLCBoZXJlIGlzIHRoZSBvcmRlcgorCQkJaW5kZXggIzAgLSBzd2l0Y2ggc3Vic3lzdGVtIHJlZ2lzdGVycworCQkJaW5kZXggIzEgLSBzZ21paSBwb3J0My80IG1vZHVsZSByZWdpc3RlcnMKKwkJCWluZGV4ICMyIC0gc3dpdGNoIG1vZHVsZSByZWdpc3RlcnMKKworCQlOZXRDUCAxLjUgZXRoc3MgOSBwb3J0LCA1IHBvcnQgYW5kIDIgcG9ydAorCQkJaW5kZXggIzAgLSBzd2l0Y2ggc3Vic3lzdGVtIHJlZ2lzdGVycworCQkJaW5kZXggIzEgLSBzd2l0Y2ggbW9kdWxlIHJlZ2lzdGVycworCQkJaW5kZXggIzIgLSBzZXJkZXMgcmVnaXN0ZXJzCisKKy0gdHgtY2hhbm5lbDoJdGhlIG5hdmlnYXRvciBwYWNrZXQgZG1hIGNoYW5uZWwgbmFtZSBmb3IgdHguCistIHR4LXF1ZXVlOgl0aGUgbmF2aWdhdG9yIHF1ZXVlIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhlIHR4IGRtYSBjaGFubmVsLgorLSBpbnRlcmZhY2VzOglzcGVjaWZpY2F0aW9uIGZvciBlYWNoIG9mIHRoZSBzd2l0Y2ggcG9ydCB0byBiZSByZWdpc3RlcmVkIGFzIGEKKwkJbmV0d29yayBpbnRlcmZhY2UgaW4gdGhlIHN0YWNrLgorLS0gc2xhdmUtcG9ydDoJU3dpdGNoIHBvcnQgbnVtYmVyLCAwIGJhc2VkIG51bWJlcmluZy4KKy0tIGxpbmstaW50ZXJmYWNlOgl0eXBlIG9mIGxpbmsgaW50ZXJmYWNlLCBzdXBwb3J0ZWQgb3B0aW9ucyBhcmUKKwkJCS0gbWFjPC0+bWFjIGF1dG8gbmVnb3RpYXRlIG1vZGU6IDAKKwkJCS0gbWFjPC0+cGh5IG1vZGU6IDEKKwkJCS0gbWFjPC0+bWFjIGZvcmNlZCBtb2RlOiAyCisJCQktIG1hYzwtPmZpYmVyIG1vZGU6IDMKKwkJCS0gbWFjPC0+cGh5IG1vZGUgd2l0aCBubyBtZGlvOiA0CisJCQktIDEwR2IgbWFjPC0+cGh5IG1vZGUgOiAxMAorCQkJLSAxMEdiIG1hYzwtPm1hYyBmb3JjZWQgbW9kZSA6IDExCistLS0tcGh5LWhhbmRsZToJcGhhbmRsZSB0byBQSFkgZGV2aWNlCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGVuYWJsZS1hbGU6CU5ldENQIGRyaXZlciBrZWVwcyB0aGUgYWRkcmVzcyBsZWFybmluZyBmZWF0dXJlIGluIHRoZSBldGhlcm5ldAorCQlzd2l0Y2ggbW9kdWxlIGRpc2FibGVkLiBUaGlzIGF0dHJpYnV0ZSBpcyB0byBlbmFibGUgdGhlIGFkZHJlc3MKKwkJbGVhcm5pbmcuCistIHNlY29uZGFyeS1zbGF2ZS1wb3J0czoJc3BlY2lmaWNhdGlvbiBmb3IgZWFjaCBvZiB0aGUgc3dpdGNoIHBvcnQgbm90IGJlCisJCQkJcmVnaXN0ZXJlZCBhcyBhIG5ldHdvcmsgaW50ZXJmYWNlLiBOZXRDUCBkcml2ZXIKKwkJCQl3aWxsIG9ubHkgaW5pdGlhbGl6ZSB0aGVzZSBwb3J0cyBhbmQgYXR0YWNoIFBIWQorCQkJCWRyaXZlciB0byB0aGVtIGlmIG5lZWRlZC4KKworTmV0Q1AgaW50ZXJmYWNlIHByb3BlcnRpZXM6IEludGVyZmFjZSBzcGVjaWZpY2F0aW9uIGZvciBOZXRDUCBzdWItbW9kdWxlcy4KK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIHJ4LWNoYW5uZWw6CXRoZSBuYXZpZ2F0b3IgcGFja2V0IGRtYSBjaGFubmVsIG5hbWUgZm9yIHJ4LgorLSByeC1xdWV1ZToJdGhlIG5hdmlnYXRvciBxdWV1ZSBudW1iZXIgYXNzb2NpYXRlZCB3aXRoIHJ4IGRtYSBjaGFubmVsLgorLSByeC1wb29sOglzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBkZXNjcmlwdG9ycyB0byBiZSB1c2VkICYgdGhlIHJlZ2lvbi1pZAorCQlmb3IgY3JlYXRpbmcgdGhlIHJ4IGRlc2NyaXB0b3IgcG9vbC4KKy0gdHgtcG9vbDoJc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZGVzY3JpcHRvcnMgdG8gYmUgdXNlZCAmIHRoZSByZWdpb24taWQKKwkJZm9yIGNyZWF0aW5nIHRoZSB0eCBkZXNjcmlwdG9yIHBvb2wuCistIHJ4LXF1ZXVlLWRlcHRoOgludW1iZXIgb2YgZGVzY3JpcHRvcnMgaW4gZWFjaCBvZiB0aGUgZnJlZSBkZXNjcmlwdG9yCisJCQlxdWV1ZSAoRkRRKSBmb3IgdGhlIHBrdGRtYSBSeCBmbG93LiBUaGVyZSBjYW4gYmUgYXQKKwkJCXByZXNlbnQgYSBtYXhpbXVtIG9mIDQgcXVldWVzIHBlciBSeCBmbG93LgorLSByeC1idWZmZXItc2l6ZToJdGhlIGJ1ZmZlciBzaXplIGZvciBlYWNoIG9mIHRoZSBSeCBmbG93IEZEUS4KKy0gdHgtY29tcGxldGlvbi1xdWV1ZToJdGhlIG5hdmlnYXRvciBxdWV1ZSBudW1iZXIgd2hlcmUgdGhlIGRlc2NyaXB0b3JzIGFyZQorCQkJcmVjeWNsZWQgYWZ0ZXIgVHggRE1BIGNvbXBsZXRpb24uCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGVmdXNlLW1hYzoJSWYgdGhpcyBpcyAxLCB0aGVuIHRoZSBNQUMgYWRkcmVzcyBmb3IgdGhlIGludGVyZmFjZSBpcworCQlvYnRhaW5lZCBmcm9tIHRoZSBkZXZpY2UgZWZ1c2UgbWFjIGFkZHJlc3MgcmVnaXN0ZXIuCisJCUlmIHRoaXMgaXMgMiwgdGhlIHR3byBEV09SRHMgb2NjdXBpZWQgYnkgdGhlIE1BQyBhZGRyZXNzCisJCWFyZSBzd2FwcGVkLiAgVGhlIG5ldGNwIGRyaXZlciB3aWxsIHN3YXAgdGhlIHR3byBEV09SRHMKKwkJYmFjayB0byB0aGUgcHJvcGVyIG9yZGVyIHdoZW4gdGhpcyBwcm9wZXJ0eSBpcyBzZXQgdG8gMgorCQl3aGVuIGl0IG9idGFpbnMgdGhlIG1hYyBhZGRyZXNzIGZyb20gZWZ1c2UuCistIGxvY2FsLW1hYy1hZGRyZXNzOgl0aGUgZHJpdmVyIGlzIGRlc2lnbmVkIHRvIHVzZSB0aGUgb2ZfZ2V0X21hY19hZGRyZXNzIGFwaQorCQkJb25seSBpZiBlZnVzZS1tYWMgaXMgMC4gV2hlbiBlZnVzZS1tYWMgaXMgMCwgdGhlIE1BQworCQkJYWRkcmVzcyBpcyBvYnRhaW5lZCBmcm9tIGxvY2FsLW1hYy1hZGRyZXNzLiBJZiB0aGlzCisJCQlhdHRyaWJ1dGUgaXMgbm90IHByZXNlbnQsIHRoZW4gdGhlIGRyaXZlciB3aWxsIHVzZSBhCisJCQlyYW5kb20gTUFDIGFkZHJlc3MuCistICJuZXRjcC1kZXZpY2UgbGFiZWwiOglwaGFuZGxlIHRvIHRoZSBkZXZpY2Ugc3BlY2lmaWNhdGlvbiBmb3IgZWFjaCBvZiBOZXRDUAorCQkJc3ViLW1vZHVsZSBhdHRhY2hlZCB0byB0aGlzIGludGVyZmFjZS4KKworRXhhbXBsZSBiaW5kaW5nOgorCituZXRjcDogbmV0Y3BAMjAwMDAwMCB7CisJcmVnID0gPDB4MjYyMDExMCAweDg+OworCXJlZy1uYW1lcyA9ICJlZnVzZSI7CisJY29tcGF0aWJsZSA9ICJ0aSxuZXRjcC0xLjAiOworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDE+OworCXJhbmdlcyAgPSA8MCAweDIwMDAwMDAgMHhmZmZmZj47CisJY2xvY2tzID0gPCZwYXBsbGNsaz4sIDwmY2xrY3BnbWFjPiwgPCZjaGlwY2xrMTI+OworCWRtYS1jb2hlcmVudDsKKwkvKiBiaWctZW5kaWFuOyAqLworCWRtYS1pZCA9IDwwPjsKKworCW5ldGNwLWRldmljZXMgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCXJhbmdlczsKKwkJZ2JlQDkwMDAwIHsKKwkJCWxhYmVsID0gIm5ldGNwLWdiZSI7CisJCQlyZWcgPSA8MHg5MDAwMCAweDMwMD4sIDwweDkwNDAwIDB4NDAwPiwgPDB4OTA4MDAgMHg3MDA+OworCQkJLyogZW5hYmxlLWFsZTsgKi8KKwkJCXR4LXF1ZXVlID0gPDY0OD47CisJCQl0eC1jaGFubmVsID0gPDg+OworCisJCQlpbnRlcmZhY2VzIHsKKwkJCQlnYmUwOiBpbnRlcmZhY2UtMCB7CisJCQkJCXNsYXZlLXBvcnQgPSA8MD47CisJCQkJCWxpbmstaW50ZXJmYWNlCT0gPDQ+OworCQkJCX07CisJCQkJZ2JlMTogaW50ZXJmYWNlLTEgeworCQkJCQlzbGF2ZS1wb3J0ID0gPDE+OworCQkJCQlsaW5rLWludGVyZmFjZQk9IDw0PjsKKwkJCQl9OworCQkJfTsKKworCQkJc2Vjb25kYXJ5LXNsYXZlLXBvcnRzIHsKKwkJCQlwb3J0LTIgeworCQkJCQlzbGF2ZS1wb3J0ID0gPDI+OworCQkJCQlsaW5rLWludGVyZmFjZQk9IDwyPjsKKwkJCQl9OworCQkJCXBvcnQtMyB7CisJCQkJCXNsYXZlLXBvcnQgPSA8Mz47CisJCQkJCWxpbmstaW50ZXJmYWNlCT0gPDI+OworCQkJCX07CisJCQl9OworCQl9OworCX07CisKKwluZXRjcC1pbnRlcmZhY2VzIHsKKwkJaW50ZXJmYWNlLTAgeworCQkJcngtY2hhbm5lbCA9IDwyMj47CisJCQlyeC1wb29sID0gPDEwMjQgMTI+OworCQkJdHgtcG9vbCA9IDwxMDI0IDEyPjsKKwkJCXJ4LXF1ZXVlLWRlcHRoID0gPDEyOCAxMjggMCAwPjsKKwkJCXJ4LWJ1ZmZlci1zaXplID0gPDE1MTggNDA5NiAwIDA+OworCQkJcngtcXVldWUgPSA8ODcwND47CisJCQl0eC1jb21wbGV0aW9uLXF1ZXVlID0gPDg3MDY+OworCQkJZWZ1c2UtbWFjID0gPDE+OworCQkJbmV0Y3AtZ2JlID0gPCZnYmUwPjsKKworCQl9OworCQlpbnRlcmZhY2UtMSB7CisJCQlyeC1jaGFubmVsID0gPDIzPjsKKwkJCXJ4LXBvb2wgPSA8MTAyNCAxMj47CisJCQl0eC1wb29sID0gPDEwMjQgMTI+OworCQkJcngtcXVldWUtZGVwdGggPSA8MTI4IDEyOCAwIDA+OworCQkJcngtYnVmZmVyLXNpemUgPSA8MTUxOCA0MDk2IDAgMD47CisJCQlyeC1xdWV1ZSA9IDw4NzA1PjsKKwkJCXR4LWNvbXBsZXRpb24tcXVldWUgPSA8ODcwNz47CisJCQllZnVzZS1tYWMgPSA8MD47CisJCQlsb2NhbC1tYWMtYWRkcmVzcyA9IFswMiAxOCAzMSA3ZSAzZSA2Zl07CisJCQluZXRjcC1nYmUgPSA8JmdiZTE+OworCQl9OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9scGMtZXRoLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbHBjLWV0aC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkyZTkyNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbHBjLWV0aC50eHQKQEAgLTAsMCArMSwyMyBAQAorKiBOWFAgTFBDMzJ4eCBTb0MgRXRoZXJuZXQgQ29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgIm54cCxscGMtZXRoIgorLSByZWc6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIGV0aGVybmV0IGNvbnRyb2xsZXIgaW50ZXJydXB0CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHBoeS1tb2RlOiBTZWUgZXRoZXJuZXQudHh0IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LiBJZiB0aGUgcHJvcGVydHkgaXMKKyAgYWJzZW50LCAicm1paSIgaXMgYXNzdW1lZC4KKy0gdXNlLWlyYW06IFVzZSBMUEMzMnh4IGludGVybmFsIFNSQU0gKElSQU0pIGZvciBETUEgYnVmZmVyaW5nCisKK0V4YW1wbGU6CisKKwltYWM6IGV0aGVybmV0QDMxMDYwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJueHAsbHBjLWV0aCI7CisJCXJlZyA9IDwweDMxMDYwMDAwIDB4MTAwMD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1pYz47CisJCWludGVycnVwdHMgPSA8MjkgMD47CisKKwkJcGh5LW1vZGUgPSAicm1paSI7CisJCXVzZS1pcmFtOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21hY2IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tYWNiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWQ3OTc2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tYWNiLnR4dApAQCAtMCwwICsxLDMyIEBACisqIENhZGVuY2UgTUFDQi9HRU0gRXRoZXJuZXQgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImNkbnMsWzxjaGlwPi1de21hY2J8Z2VtfSIKKyAgVXNlICJjZG5zLGF0OTFzYW05MjYwLW1hY2IiIGZvciBBdG1lbCBhdDkxc2FtOSBTb0NzIG9yIHRoZSAxMC8xMDBNYml0IElQCisgIGF2YWlsYWJsZSBvbiBzYW1hNWQzIFNvQ3MuCisgIFVzZSAiY2RucyxhdDMyYXA3MDAwLW1hY2IiIGZvciBvdGhlciAxMC8xMDAgdXNhZ2Ugb3IgdXNlIHRoZSBnZW5lcmljIGZvcm06ICJjZG5zLG1hY2IiLgorICBVc2UgImNkbnMscGMzMDItZ2VtIiBmb3IgUGljb2NoaXAgcGljb1hjZWxsIHBjMzAyIGFuZCBsYXRlciBkZXZpY2VzIGJhc2VkIG9uCisgIHRoZSBDYWRlbmNlIEdFTSwgb3IgdGhlIGdlbmVyaWMgZm9ybTogImNkbnMsZ2VtIi4KKyAgVXNlICJhdG1lbCxzYW1hNWQyLWdlbSIgZm9yIHRoZSBHRU0gSVAgKDEwLzEwMCkgYXZhaWxhYmxlIG9uIEF0bWVsIHNhbWE1ZDIgU29Dcy4KKyAgVXNlICJhdG1lbCxzYW1hNWQzLWdlbSIgZm9yIHRoZSBHaWdhYml0IElQIGF2YWlsYWJsZSBvbiBBdG1lbCBzYW1hNWQzIFNvQ3MuCisgIFVzZSAiYXRtZWwsc2FtYTVkNC1nZW0iIGZvciB0aGUgR0VNIElQICgxMC8xMDApIGF2YWlsYWJsZSBvbiBBdG1lbCBzYW1hNWQ0IFNvQ3MuCisgIFVzZSAiY2Rucyx6eW5xbXAtZ2VtIiBmb3IgWnlucSBVbHRyYXNjYWxlKyBNUFNvQy4KKy0gcmVnOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBtYWNiIGludGVycnVwdAorLSBwaHktbW9kZTogU2VlIGV0aGVybmV0LnR4dCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKy0gY2xvY2stbmFtZXM6IFR1cGxlIGxpc3RpbmcgaW5wdXQgY2xvY2sgbmFtZXMuCisJUmVxdWlyZWQgZWxlbWVudHM6ICdwY2xrJywgJ2hjbGsnCisJT3B0aW9uYWwgZWxlbWVudHM6ICd0eF9jbGsnCistIGNsb2NrczogUGhhbmRsZXMgdG8gaW5wdXQgY2xvY2tzLgorCitFeGFtcGxlczoKKworCW1hY2IwOiBldGhlcm5ldEBmZmZjNDAwMCB7CisJCWNvbXBhdGlibGUgPSAiY2RucyxhdDMyYXA3MDAwLW1hY2IiOworCQlyZWcgPSA8MHhmZmZjNDAwMCAweDQwMDA+OworCQlpbnRlcnJ1cHRzID0gPDIxPjsKKwkJcGh5LW1vZGUgPSAicm1paSI7CisJCWxvY2FsLW1hYy1hZGRyZXNzID0gWzNhIDBlIDAzIDA0IDA1IDA2XTsKKwkJY2xvY2stbmFtZXMgPSAicGNsayIsICJoY2xrIiwgInR4X2NsayI7CisJCWNsb2NrcyA9IDwmY2xrYyAzMD4sIDwmY2xrYyAzMD4sIDwmY2xrYyAxMz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWFydmVsbC1hcm1hZGEtMzcwLW5ldGEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tYXJ2ZWxsLWFybWFkYS0zNzAtbmV0YS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVlYTUwYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWFydmVsbC1hcm1hZGEtMzcwLW5ldGEudHh0CkBAIC0wLDAgKzEsMjcgQEAKKyogTWFydmVsbCBBcm1hZGEgMzcwIC8gQXJtYWRhIFhQIEV0aGVybmV0IENvbnRyb2xsZXIgKE5FVEEpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJtYXJ2ZWxsLGFybWFkYS0zNzAtbmV0YSIgb3IgIm1hcnZlbGwsYXJtYWRhLXhwLW5ldGEiLgorLSByZWc6IGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlLgorLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgZm9yIHRoZSBkZXZpY2UKKy0gcGh5OiBTZWUgZXRoZXJuZXQudHh0IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorLSBwaHktbW9kZTogU2VlIGV0aGVybmV0LnR4dCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeQorLSBjbG9ja3M6IGEgcG9pbnRlciB0byB0aGUgcmVmZXJlbmNlIGNsb2NrIGZvciB0aGlzIGRldmljZS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdHgtY3N1bS1saW1pdDogbWF4aW11bSBtdHUgc3VwcG9ydGVkIGJ5IHBvcnQgdGhhdCBhbGxvdyBUWCBjaGVja3N1bS4KKyAgVmFsdWUgaXMgcHJlc2VudGVkIGluIGJ5dGVzLiBJZiBub3QgdXNlZCwgYnkgZGVmYXVsdCAxNjAwQiBpcyBzZXQgZm9yCisgICJtYXJ2ZWxsLGFybWFkYS0zNzAtbmV0YSIgYW5kIDk4MDBCIGZvciBvdGhlcnMuCisKK0V4YW1wbGU6CisKK2V0aGVybmV0QGQwMDcwMDAwIHsKKwljb21wYXRpYmxlID0gIm1hcnZlbGwsYXJtYWRhLTM3MC1uZXRhIjsKKwlyZWcgPSA8MHhkMDA3MDAwMCAweDI1MDA+OworCWludGVycnVwdHMgPSA8OD47CisJY2xvY2tzID0gPCZnYXRlX2NsayA0PjsKKwl0eC1jc3VtLWxpbWl0ID0gPDk4MDA+CisJc3RhdHVzID0gIm9rYXkiOworCXBoeSA9IDwmcGh5MD47CisJcGh5LW1vZGUgPSAicmdtaWktaWQiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWFydmVsbC1vcmlvbi1tZGlvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWFydmVsbC1vcmlvbi1tZGlvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDE3ZTU0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tYXJ2ZWxsLW9yaW9uLW1kaW8udHh0CkBAIC0wLDAgKzEsMzkgQEAKKyogTWFydmVsbCBNRElPIEV0aGVybmV0IENvbnRyb2xsZXIgaW50ZXJmYWNlCisKK1RoZSBFdGhlcm5ldCBjb250cm9sbGVycyBvZiB0aGUgTWFydmVsIEtpcmt3b29kLCBEb3ZlLCBPcmlvbjV4LAorTVY3OHh4MCwgQXJtYWRhIDM3MCBhbmQgQXJtYWRhIFhQIGhhdmUgYW4gaWRlbnRpY2FsIHVuaXQgdGhhdCBwcm92aWRlcworYW4gaW50ZXJmYWNlIHdpdGggdGhlIE1ESU8gYnVzLiBUaGlzIGRyaXZlciBoYW5kbGVzIHRoaXMgTURJTworaW50ZXJmYWNlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAibWFydmVsbCxvcmlvbi1tZGlvIgorLSByZWc6IGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgU01JIHJlZ2lzdGVyCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGludGVycnVwdHM6IGludGVycnVwdCBsaW5lIG51bWJlciBmb3IgdGhlIFNNSSBlcnJvci9kb25lIGludGVycnVwdAorLSBjbG9ja3M6IFBoYW5kbGUgdG8gdGhlIGNsb2NrIGNvbnRyb2wgZGV2aWNlIGFuZCBnYXRlIGJpdAorCitUaGUgY2hpbGQgbm9kZXMgb2YgdGhlIE1ESU8gZHJpdmVyIGFyZSB0aGUgaW5kaXZpZHVhbCBQSFkgZGV2aWNlcworY29ubmVjdGVkIHRvIHRoaXMgTURJTyBidXMuIFRoZXkgbXVzdCBoYXZlIGEgInJlZyIgcHJvcGVydHkgZ2l2ZW4gdGhlCitQSFkgYWRkcmVzcyBvbiB0aGUgTURJTyBidXMuCisKK0V4YW1wbGUgYXQgdGhlIFNvQyBsZXZlbDoKKworbWRpbyB7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47CisJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLG9yaW9uLW1kaW8iOworCXJlZyA9IDwweGQwMDcyMDA0IDB4ND47Cit9OworCitBbmQgYXQgdGhlIGJvYXJkIGxldmVsOgorCittZGlvIHsKKwlwaHkwOiBldGhlcm5ldC1waHlAMCB7CisJCXJlZyA9IDwwPjsKKwl9OworCisJcGh5MTogZXRoZXJuZXQtcGh5QDEgeworCQlyZWcgPSA8MT47CisJfTsKK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWFydmVsbC1vcmlvbi1uZXQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tYXJ2ZWxsLW9yaW9uLW5ldC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNlNTJiMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWFydmVsbC1vcmlvbi1uZXQudHh0CkBAIC0wLDAgKzEsODIgQEAKK01hcnZlbGwgT3Jpb24vRGlzY292ZXJ5IGV0aGVybmV0IGNvbnRyb2xsZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgTWFydmVsbCBEaXNjb3ZlcnkgZXRoZXJuZXQgY29udHJvbGxlciBjYW4gYmUgZm91bmQgb24gTWFydmVsbCBPcmlvbiBTb0NzCisoS2lya3dvb2QsIERvdmUsIE9yaW9uNXgsIGFuZCBEaXNjb3ZlcnkgSW5ub3ZhdGlvbikgYW5kIGFzIHBhcnQgb2YgTWFydmVsbAorRGlzY292ZXJ5IHN5c3RlbSBjb250cm9sbGVyIGNoaXBzIChtdjY0WzM0NV02MCkuCisKK1RoZSBEaXNjb3ZlcnkgZXRoZXJuZXQgY29udHJvbGxlciBpcyBkZXNjcmliZWQgd2l0aCB0d28gbGV2ZWxzIG9mIG5vZGVzLiBUaGUKK2ZpcnN0IGxldmVsIGRlc2NyaWJlcyB0aGUgZXRoZXJuZXQgY29udHJvbGxlciBpdHNlbGYgYW5kIHRoZSBzZWNvbmQgbGV2ZWwKK2Rlc2NyaWJlcyB1cCB0byAzIGV0aGVybmV0IHBvcnQgbm9kZXMgd2l0aGluIHRoYXQgY29udHJvbGxlci4gVGhlIHJlYXNvbiBmb3IKK3RoZSBtdWx0aXBsZSBsZXZlbHMgaXMgdGhhdCB0aGUgcG9ydCByZWdpc3RlcnMgYXJlIGludGVybGVhdmVkIHdpdGhpbiBhIHNpbmdsZQorc2V0IG9mIGNvbnRyb2xsZXIgcmVnaXN0ZXJzLiBFYWNoIHBvcnQgbm9kZSBkZXNjcmliZXMgcG9ydC1zcGVjaWZpYyBwcm9wZXJ0aWVzLgorCitOb3RlOiBUaGUgYWJvdmUgc2VwYXJhdGlvbiBpcyBvbmx5IHRydWUgZm9yIERpc2NvdmVyeSBzeXN0ZW0gY29udHJvbGxlcnMuCitGb3IgT3Jpb24gU29DcyB3ZSBzdGljayB0byB0aGUgc2VwYXJhdGlvbiwgYWx0aG91Z2ggdGhlcmUgZWFjaCBjb250cm9sbGVyIGhhcworb25seSBvbmUgcG9ydCBhc3NvY2lhdGVkLiBNdWx0aXBsZSBwb3J0cyBhcmUgaW1wbGVtZW50ZWQgYXMgbXVsdGlwbGUgc2luZ2xlLXBvcnQKK2NvbnRyb2xsZXJzLiBBcyBLaXJrd29vZCBoYXMgc29tZSBpc3N1ZXMgd2l0aCBwcm9wZXIgaW5pdGlhbGl6YXRpb24gYWZ0ZXIgcmVzZXQsCithbiBleHRyYSBjb21wYXRpYmxlIHN0cmluZyBpcyBhZGRlZCBmb3IgaXQuCisKKyogRXRoZXJuZXQgY29udHJvbGxlciBub2RlCisKK1JlcXVpcmVkIGNvbnRyb2xsZXIgcHJvcGVydGllczoKKyAtICNhZGRyZXNzLWNlbGxzOiBzaGFsbCBiZSAxLgorIC0gI3NpemUtY2VsbHM6IHNoYWxsIGJlIDAuCisgLSBjb21wYXRpYmxlOiBzaGFsbCBiZSBvbmUgb2YgIm1hcnZlbGwsb3Jpb24tZXRoIiwgIm1hcnZlbGwsa2lya3dvb2QtZXRoIi4KKyAtIHJlZzogYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBjb250cm9sbGVyIHJlZ2lzdGVycy4KKworT3B0aW9uYWwgY29udHJvbGxlciBwcm9wZXJ0aWVzOgorIC0gY2xvY2tzOiBwaGFuZGxlIHJlZmVyZW5jZSB0byB0aGUgY29udHJvbGxlciBjbG9jay4KKyAtIG1hcnZlbGwsdHgtY2hlY2tzdW0tbGltaXQ6IG1heCB0eCBwYWNrZXQgc2l6ZSBmb3IgaGFyZHdhcmUgY2hlY2tzdW0uCisKKyogRXRoZXJuZXQgcG9ydCBub2RlCisKK1JlcXVpcmVkIHBvcnQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGU6IHNoYWxsIGJlIG9uZSBvZiAibWFydmVsbCxvcmlvbi1ldGgtcG9ydCIsCisgICAgICAibWFydmVsbCxraXJrd29vZC1ldGgtcG9ydCIuCisgLSByZWc6IHBvcnQgbnVtYmVyIHJlbGF0aXZlIHRvIGV0aGVybmV0IGNvbnRyb2xsZXIsIHNoYWxsIGJlIDAsIDEsIG9yIDIuCisgLSBpbnRlcnJ1cHRzOiBwb3J0IGludGVycnVwdC4KKyAtIGxvY2FsLW1hYy1hZGRyZXNzOiBTZWUgZXRoZXJuZXQudHh0IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorCitPcHRpb25hbCBwb3J0IHByb3BlcnRpZXM6CisgLSBtYXJ2ZWxsLHR4LXF1ZXVlLXNpemU6IHNpemUgb2YgdGhlIHRyYW5zbWl0IHJpbmcgYnVmZmVyLgorIC0gbWFydmVsbCx0eC1zcmFtLWFkZHI6IGFkZHJlc3Mgb2YgdHJhbnNtaXQgZGVzY3JpcHRvciBidWZmZXIgbG9jYXRlZCBpbiBTUkFNLgorIC0gbWFydmVsbCx0eC1zcmFtLXNpemU6IHNpemUgb2YgdHJhbnNtaXQgZGVzY3JpcHRvciBidWZmZXIgbG9jYXRlZCBpbiBTUkFNLgorIC0gbWFydmVsbCxyeC1xdWV1ZS1zaXplOiBzaXplIG9mIHRoZSByZWNlaXZlIHJpbmcgYnVmZmVyLgorIC0gbWFydmVsbCxyeC1zcmFtLWFkZHI6IGFkZHJlc3Mgb2YgcmVjZWl2ZSBkZXNjcmlwdG9yIGJ1ZmZlciBsb2NhdGVkIGluIFNSQU0uCisgLSBtYXJ2ZWxsLHJ4LXNyYW0tc2l6ZTogc2l6ZSBvZiByZWNlaXZlIGRlc2NyaXB0b3IgYnVmZmVyIGxvY2F0ZWQgaW4gU1JBTS4KKworYW5kCisKKyAtIHBoeS1oYW5kbGU6IFNlZSBldGhlcm5ldC50eHQgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisKK29yCisKKyAtIHNwZWVkOiBwb3J0IHNwZWVkIGlmIG5vIFBIWSBjb25uZWN0ZWQuCisgLSBkdXBsZXg6IHBvcnQgbW9kZSBpZiBubyBQSFkgY29ubmVjdGVkLgorCisqIE5vZGUgZXhhbXBsZToKKworbWRpby1idXMgeworCS4uLgorCWV0aHBoeTogZXRoZXJuZXQtcGh5QDggeworCQkuLi4KKwl9OworfTsKKworZXRoOiBldGhlcm5ldC1jb250cm9sbGVyQDcyMDAwIHsKKwljb21wYXRpYmxlID0gIm1hcnZlbGwsb3Jpb24tZXRoIjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwlyZWcgPSA8MHg3MjAwMCAweDIwMDA+OworCWNsb2NrcyA9IDwmZ2F0ZV9jbGsgMj47CisJbWFydmVsbCx0eC1jaGVja3N1bS1saW1pdCA9IDwxNjAwPjsKKworCWV0aGVybmV0QDAgeworCQljb21wYXRpYmxlID0gIm1hcnZlbGwsb3Jpb24tZXRoLXBvcnQiOworCQlyZWcgPSA8MD47CisJCWludGVycnVwdHMgPSA8Mjk+OworCQlwaHktaGFuZGxlID0gPCZldGhwaHk+OworCQlsb2NhbC1tYWMtYWRkcmVzcyA9IFswMCAwMCAwMCAwMCAwMCAwMF07CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21hcnZlbGwtcHAyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWFydmVsbC1wcDIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhNGY0MjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21hcnZlbGwtcHAyLnR4dApAQCAtMCwwICsxLDYxIEBACisqIE1hcnZlbGwgQXJtYWRhIDM3NSBFdGhlcm5ldCBDb250cm9sbGVyIChQUHYyKQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAibWFydmVsbCxhcm1hZGEtMzc1LXBwMiIKKy0gcmVnOiBhZGRyZXNzZXMgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0cyBmb3IgdGhlIGRldmljZS4KKyAgTXVzdCBjb250YWluIHRoZSBmb2xsb3dpbmcgcmVnaXN0ZXIgc2V0czoKKwktIGNvbW1vbiBjb250cm9sbGVyIHJlZ2lzdGVycworCS0gTE1TIHJlZ2lzdGVycworICBJbiBhZGRpdGlvbiwgYXQgbGVhc3Qgb25lIHBvcnQgcmVnaXN0ZXIgc2V0IGlzIHJlcXVpcmVkLgorLSBjbG9ja3M6IGEgcG9pbnRlciB0byB0aGUgcmVmZXJlbmNlIGNsb2NrcyBmb3IgdGhpcyBkZXZpY2UsIGNvbnNlcXVlbnRseToKKwktIG1haW4gY29udHJvbGxlciBjbG9jaworCS0gR09QIGNsb2NrCistIGNsb2NrLW5hbWVzOiBuYW1lcyBvZiB1c2VkIGNsb2NrcywgbXVzdCBiZSAicHBfY2xrIiBhbmQgImdvcF9jbGsiLgorCitUaGUgZXRoZXJuZXQgcG9ydHMgYXJlIHJlcHJlc2VudGVkIGJ5IHN1Ym5vZGVzLiBBdCBsZWFzdCBvbmUgcG9ydCBpcworcmVxdWlyZWQuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgKHBvcnQpOgorCistIGludGVycnVwdHM6IGludGVycnVwdCBmb3IgdGhlIHBvcnQKKy0gcG9ydC1pZDogc2hvdWxkIGJlICcwJyBvciAnMScgZm9yIGV0aGVybmV0IHBvcnRzLCBhbmQgJzInIGZvciB0aGUKKyAgICAgICAgICAgbG9vcGJhY2sgcG9ydAorLSBwaHktbW9kZTogU2VlIGV0aGVybmV0LnR4dCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeQorCitPcHRpb25hbCBwcm9wZXJ0aWVzIChwb3J0KToKKworLSBtYXJ2ZWxsLGxvb3BiYWNrOiBwb3J0IGlzIGxvb3BiYWNrIG1vZGUKKy0gcGh5OiBhIHBoYW5kbGUgdG8gYSBwaHkgbm9kZSBkZWZpbmluZyB0aGUgUEhZIGFkZHJlc3MgKGFzIHRoZSByZWcKKyAgcHJvcGVydHksIGEgc2luZ2xlIGludGVnZXIpLiBOb3RlOiBpZiB0aGlzIHByb3BlcnR5IGlzbid0IHByZXNlbnQsCisgIHRoZW4gZml4ZWQgbGluayBpcyBhc3N1bWVkLCBhbmQgdGhlICdmaXhlZC1saW5rJyBwcm9wZXJ0eSBpcworICBtYW5kYXRvcnkuCisKK0V4YW1wbGU6CisKK2V0aGVybmV0QGYwMDAwIHsKKwljb21wYXRpYmxlID0gIm1hcnZlbGwsYXJtYWRhLTM3NS1wcDIiOworCXJlZyA9IDwweGYwMDAwIDB4YTAwMD4sCisJICAgICAgPDB4YzAwMDAgMHgzMDYwPiwKKwkgICAgICA8MHhjNDAwMCAweDEwMD4sCisJICAgICAgPDB4YzUwMDAgMHgxMDA+OworCWNsb2NrcyA9IDwmZ2F0ZWNsayAzPiwgPCZnYXRlY2xrIDE5PjsKKwljbG9jay1uYW1lcyA9ICJwcF9jbGsiLCAiZ29wX2NsayI7CisJc3RhdHVzID0gIm9rYXkiOworCisJZXRoMDogZXRoMEBjNDAwMCB7CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSAzNyBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJcG9ydC1pZCA9IDwwPjsKKwkJc3RhdHVzID0gIm9rYXkiOworCQlwaHkgPSA8JnBoeTA+OworCQlwaHktbW9kZSA9ICJnbWlpIjsKKwl9OworCisJZXRoMTogZXRoMUBjNTAwMCB7CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSA0MSBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJcG9ydC1pZCA9IDwxPjsKKwkJc3RhdHVzID0gIm9rYXkiOworCQlwaHkgPSA8JnBoeTM+OworCQlwaHktbW9kZSA9ICJnbWlpIjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWFydmVsbC1weGExNjgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tYXJ2ZWxsLXB4YTE2OC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ1YTE0OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWFydmVsbC1weGExNjgudHh0CkBAIC0wLDAgKzEsMzYgQEAKKyogTWFydmVsbCBQWEExNjggRXRoZXJuZXQgQ29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgIm1hcnZlbGwscHhhMTY4LWV0aCIuCistIHJlZzogYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UuCistIGludGVycnVwdHM6IGludGVycnVwdCBmb3IgdGhlIGRldmljZS4KKy0gY2xvY2tzOiBwb2ludGVyIHRvIHRoZSBjbG9jayBmb3IgdGhlIGRldmljZS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gcG9ydC1pZDogRXRoZXJuZXQgcG9ydCBudW1iZXIuIFNob3VsZCBiZSAnMCcsJzEnIG9yICcyJy4KKy0gI2FkZHJlc3MtY2VsbHM6IG11c3QgYmUgMSB3aGVuIHVzaW5nIHN1Yi1ub2Rlcy4KKy0gI3NpemUtY2VsbHM6IG11c3QgYmUgMCB3aGVuIHVzaW5nIHN1Yi1ub2Rlcy4KKy0gcGh5LWhhbmRsZTogc2VlIGV0aGVybmV0LnR4dCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4KKy0gbG9jYWwtbWFjLWFkZHJlc3M6IHNlZSBldGhlcm5ldC50eHQgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisKK1N1Yi1ub2RlczoKK0VhY2ggUEhZIGNhbiBiZSByZXByZXNlbnRlZCBhcyBhIHN1Yi1ub2RlLiBUaGlzIGlzIG5vdCBtYW5kYXRvcnkuCisKK1N1Yi1ub2RlcyByZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSByZWc6IHRoZSBNRElPIGFkZHJlc3Mgb2YgdGhlIFBIWS4KKworRXhhbXBsZToKKworCWV0aDA6IGV0aGVybmV0QGY3YjkwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLHB4YTE2OC1ldGgiOworCQlyZWcgPSA8MHhmN2I5MDAwMCAweDEwMDAwPjsKKwkJY2xvY2tzID0gPCZjaGlwIENMS0lEX0dFVEgwPjsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDI0IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJCXBoeS1oYW5kbGUgPSA8JmV0aHBoeTA+OworCisJCWV0aHBoeTA6IGV0aGVybmV0LXBoeUAwIHsKKwkJCXJlZyA9IDwwPjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tYXhpbSxkczI2NTIyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWF4aW0sZHMyNjUyMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU4YmI3MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWF4aW0sZHMyNjUyMi50eHQKQEAgLTAsMCArMSwxMyBAQAorKiBNYXhpbSAoRGFsbGFzKSBEUzI2NTIyIER1YWwgVDEvRTEvSjEgVHJhbnNjZWl2ZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGNvbnRhaW4gIm1heGltLGRzMjY1MjIiLgorLSByZWc6IFNQSSBDUy4KKy0gc3BpLW1heC1mcmVxdWVuY3k6IFNQSSBjbG9jay4KKworRXhhbXBsZToKKwlzbGljQDEgeworCQljb21wYXRpYmxlID0gIm1heGltLGRzMjY1MjIiOworCQlyZWcgPSA8MT47CisJCXNwaS1tYXgtZnJlcXVlbmN5ID0gPDIwMDAwMDA+OyAvKiBpbnB1dCBjbG9jayAqLworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tZ3Bpby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRiY2Y4MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1ncGlvLnR4dApAQCAtMCwwICsxLDI2IEBACitNRElPIG9uIEdQSU9zCisKK0N1cnJlbnRseSBkZWZpbmVkIGNvbXBhdGlibGVzOgorLSB2aXJ0dWFsLGdwaW8tbWRpbworCitNREMgYW5kIE1ESU8gbGluZXMgY29ubmVjdGVkIHRvIEdQSU8gY29udHJvbGxlcnMgYXJlIGxpc3RlZCBpbiB0aGUKK2dwaW9zIHByb3BlcnR5IGFzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIFZJSUkuMSBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgorCitNREMsIE1ESU8uCisKK05vdGU6IEVhY2ggZ3Bpby1tZGlvIGJ1cyBzaG91bGQgaGF2ZSBhbiBhbGlhcyBjb3JyZWN0bHkgbnVtYmVyZWQgaW4gImFsaWFzZXMiCitub2RlLgorCitFeGFtcGxlOgorCithbGlhc2VzIHsKKwltZGlvLWdwaW8wID0gJm1kaW8wOworfTsKKworbWRpbzA6IG1kaW8geworCWNvbXBhdGlibGUgPSAidmlydHVhbCxtZGlvLWdwaW8iOworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDA+OworCWdwaW9zID0gPCZxZV9waW9fYSAxMQorCQkgJnFlX3Bpb19jIDY+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1tdXgtZ3Bpby50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tbXV4LWdwaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5Mzg0MTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tbXV4LWdwaW8udHh0CkBAIC0wLDAgKzEsMTI3IEBACitQcm9wZXJ0aWVzIGZvciBhbiBNRElPIGJ1cyBtdWx0aXBsZXhlci9zd2l0Y2ggY29udHJvbGxlZCBieSBHUElPIHBpbnMuCisKK1RoaXMgaXMgYSBzcGVjaWFsIGNhc2Ugb2YgYSBNRElPIGJ1cyBtdWx0aXBsZXhlci4gIE9uZSBvciBtb3JlIEdQSU8KK2xpbmVzIGFyZSB1c2VkIHRvIGNvbnRyb2wgd2hpY2ggY2hpbGQgYnVzIGlzIGNvbm5lY3RlZC4KKworUmVxdWlyZWQgcHJvcGVydGllcyBpbiBhZGRpdGlvbiB0byB0aGUgZ2VuZXJpYyBtdWx0aXBsZXhlciBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiBtZGlvLW11eC1ncGlvLgorLSBncGlvcyA6IEdQSU8gc3BlY2lmaWVycyBmb3IgZWFjaCBHUElPIGxpbmUuICBPbmUgb3IgbW9yZSBtdXN0IGJlIHNwZWNpZmllZC4KKworCitFeGFtcGxlIDoKKworCS8qIFRoZSBwYXJlbnQgTURJTyBidXMuICovCisJc21pMTogbWRpb0AxMTgwMDAwMDAxOTAwIHsKKwkJY29tcGF0aWJsZSA9ICJjYXZpdW0sb2N0ZW9uLTM4NjAtbWRpbyI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJcmVnID0gPDB4MTE4MDAgMHgwMDAwMTkwMCAweDAgMHg0MD47CisJfTsKKworCS8qCisJICAgQW4gTlhQIHNuNzRjYnRsdjMyNTMgZHVhbCAxLW9mLTQgc3dpdGNoIGNvbnRyb2xsZWQgYnkgYQorCSAgIHBhaXIgb2YgR1BJTyBsaW5lcy4gIENoaWxkIGJ1c3NlcyAyIGFuZCAzIHBvcHVsYXRlZCB3aXRoIDQKKwkgICBQSFlzIGVhY2guCisJICovCisJbWRpby1tdXggeworCQljb21wYXRpYmxlID0gIm1kaW8tbXV4LWdwaW8iOworCQlncGlvcyA9IDwmZ3BpbzEgMyAwPiwgPCZncGlvMSA0IDA+OworCQltZGlvLXBhcmVudC1idXMgPSA8JnNtaTE+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJbWRpb0AyIHsKKwkJCXJlZyA9IDwyPjsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJCXBoeTExOiBldGhlcm5ldC1waHlAMSB7CisJCQkJcmVnID0gPDE+OworCQkJCWNvbXBhdGlibGUgPSAibWFydmVsbCw4OGUxMTQ5ciI7CisJCQkJbWFydmVsbCxyZWctaW5pdCA9IDwzIDB4MTAgMCAweDU3Nzc+LAorCQkJCQk8MyAweDExIDAgMHgwMGFhPiwKKwkJCQkJPDMgMHgxMiAwIDB4NDEwNT4sCisJCQkJCTwzIDB4MTMgMCAweDBhNjA+OworCQkJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8+OworCQkJCWludGVycnVwdHMgPSA8MTAgOD47IC8qIFBpbiAxMCwgYWN0aXZlIGxvdyAqLworCQkJfTsKKwkJCXBoeTEyOiBldGhlcm5ldC1waHlAMiB7CisJCQkJcmVnID0gPDI+OworCQkJCWNvbXBhdGlibGUgPSAibWFydmVsbCw4OGUxMTQ5ciI7CisJCQkJbWFydmVsbCxyZWctaW5pdCA9IDwzIDB4MTAgMCAweDU3Nzc+LAorCQkJCQk8MyAweDExIDAgMHgwMGFhPiwKKwkJCQkJPDMgMHgxMiAwIDB4NDEwNT4sCisJCQkJCTwzIDB4MTMgMCAweDBhNjA+OworCQkJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8+OworCQkJCWludGVycnVwdHMgPSA8MTAgOD47IC8qIFBpbiAxMCwgYWN0aXZlIGxvdyAqLworCQkJfTsKKwkJCXBoeTEzOiBldGhlcm5ldC1waHlAMyB7CisJCQkJcmVnID0gPDM+OworCQkJCWNvbXBhdGlibGUgPSAibWFydmVsbCw4OGUxMTQ5ciI7CisJCQkJbWFydmVsbCxyZWctaW5pdCA9IDwzIDB4MTAgMCAweDU3Nzc+LAorCQkJCQk8MyAweDExIDAgMHgwMGFhPiwKKwkJCQkJPDMgMHgxMiAwIDB4NDEwNT4sCisJCQkJCTwzIDB4MTMgMCAweDBhNjA+OworCQkJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8+OworCQkJCWludGVycnVwdHMgPSA8MTAgOD47IC8qIFBpbiAxMCwgYWN0aXZlIGxvdyAqLworCQkJfTsKKwkJCXBoeTE0OiBldGhlcm5ldC1waHlANCB7CisJCQkJcmVnID0gPDQ+OworCQkJCWNvbXBhdGlibGUgPSAibWFydmVsbCw4OGUxMTQ5ciI7CisJCQkJbWFydmVsbCxyZWctaW5pdCA9IDwzIDB4MTAgMCAweDU3Nzc+LAorCQkJCQk8MyAweDExIDAgMHgwMGFhPiwKKwkJCQkJPDMgMHgxMiAwIDB4NDEwNT4sCisJCQkJCTwzIDB4MTMgMCAweDBhNjA+OworCQkJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8+OworCQkJCWludGVycnVwdHMgPSA8MTAgOD47IC8qIFBpbiAxMCwgYWN0aXZlIGxvdyAqLworCQkJfTsKKwkJfTsKKworCQltZGlvQDMgeworCQkJcmVnID0gPDM+OworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQkJcGh5MjE6IGV0aGVybmV0LXBoeUAxIHsKKwkJCQlyZWcgPSA8MT47CisJCQkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLDg4ZTExNDlyIjsKKwkJCQltYXJ2ZWxsLHJlZy1pbml0ID0gPDMgMHgxMCAwIDB4NTc3Nz4sCisJCQkJCTwzIDB4MTEgMCAweDAwYWE+LAorCQkJCQk8MyAweDEyIDAgMHg0MTA1PiwKKwkJCQkJPDMgMHgxMyAwIDB4MGE2MD47CisJCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3Bpbz47CisJCQkJaW50ZXJydXB0cyA9IDwxMiA4PjsgLyogUGluIDEyLCBhY3RpdmUgbG93ICovCisJCQl9OworCQkJcGh5MjI6IGV0aGVybmV0LXBoeUAyIHsKKwkJCQlyZWcgPSA8Mj47CisJCQkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLDg4ZTExNDlyIjsKKwkJCQltYXJ2ZWxsLHJlZy1pbml0ID0gPDMgMHgxMCAwIDB4NTc3Nz4sCisJCQkJCTwzIDB4MTEgMCAweDAwYWE+LAorCQkJCQk8MyAweDEyIDAgMHg0MTA1PiwKKwkJCQkJPDMgMHgxMyAwIDB4MGE2MD47CisJCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3Bpbz47CisJCQkJaW50ZXJydXB0cyA9IDwxMiA4PjsgLyogUGluIDEyLCBhY3RpdmUgbG93ICovCisJCQl9OworCQkJcGh5MjM6IGV0aGVybmV0LXBoeUAzIHsKKwkJCQlyZWcgPSA8Mz47CisJCQkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLDg4ZTExNDlyIjsKKwkJCQltYXJ2ZWxsLHJlZy1pbml0ID0gPDMgMHgxMCAwIDB4NTc3Nz4sCisJCQkJCTwzIDB4MTEgMCAweDAwYWE+LAorCQkJCQk8MyAweDEyIDAgMHg0MTA1PiwKKwkJCQkJPDMgMHgxMyAwIDB4MGE2MD47CisJCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3Bpbz47CisJCQkJaW50ZXJydXB0cyA9IDwxMiA4PjsgLyogUGluIDEyLCBhY3RpdmUgbG93ICovCisJCQl9OworCQkJcGh5MjQ6IGV0aGVybmV0LXBoeUA0IHsKKwkJCQlyZWcgPSA8ND47CisJCQkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLDg4ZTExNDlyIjsKKwkJCQltYXJ2ZWxsLHJlZy1pbml0ID0gPDMgMHgxMCAwIDB4NTc3Nz4sCisJCQkJCTwzIDB4MTEgMCAweDAwYWE+LAorCQkJCQk8MyAweDEyIDAgMHg0MTA1PiwKKwkJCQkJPDMgMHgxMyAwIDB4MGE2MD47CisJCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3Bpbz47CisJCQkJaW50ZXJydXB0cyA9IDwxMiA4PjsgLyogUGluIDEyLCBhY3RpdmUgbG93ICovCisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8tbXV4LW1taW9yZWcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLW11eC1tbWlvcmVnLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTE2OTI5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLW11eC1tbWlvcmVnLnR4dApAQCAtMCwwICsxLDc1IEBACitQcm9wZXJ0aWVzIGZvciBhbiBNRElPIGJ1cyBtdWx0aXBsZXhlciBjb250cm9sbGVkIGJ5IGEgbWVtb3J5LW1hcHBlZCBkZXZpY2UKKworVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSBvZiBhIE1ESU8gYnVzIG11bHRpcGxleGVyLiAgQSBtZW1vcnktbWFwcGVkIGRldmljZSwKK2xpa2UgYW4gRlBHQSwgaXMgdXNlZCB0byBjb250cm9sIHdoaWNoIGNoaWxkIGJ1cyBpcyBjb25uZWN0ZWQuICBUaGUgbWRpby1tdXgKK25vZGUgbXVzdCBiZSBhIGNoaWxkIG9mIHRoZSBtZW1vcnktbWFwcGVkIGRldmljZS4gIFRoZSBkcml2ZXIgY3VycmVudGx5IG9ubHkKK3N1cHBvcnRzIGRldmljZXMgd2l0aCBlaWdodC1iaXQgcmVnaXN0ZXJzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGluIGFkZGl0aW9uIHRvIHRoZSBnZW5lcmljIG11bHRpcGxleGVyIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHN0cmluZywgbXVzdCBjb250YWluICJtZGlvLW11eC1tbWlvcmVnIgorCistIHJlZyA6IGludGVnZXIsIGNvbnRhaW5zIHRoZSBvZmZzZXQgb2YgdGhlIHJlZ2lzdGVyIHRoYXQgY29udHJvbHMgdGhlIGJ1cworCW11bHRpcGxleGVyLiAgVGhlIHNpemUgZmllbGQgaW4gdGhlICdyZWcnIHByb3BlcnR5IGlzIHRoZSBzaXplIG9mCisJcmVnaXN0ZXIsIGFuZCBtdXN0IHRoZXJlZm9yZSBiZSAxLgorCistIG11eC1tYXNrIDogaW50ZWdlciwgY29udGFpbnMgYW4gZWlnaHQtYml0IG1hc2sgdGhhdCBzcGVjaWZpZXMgd2hpY2gKKwliaXRzIGluIHRoZSByZWdpc3RlciBjb250cm9sIHRoZSBhY3R1YWwgYnVzIG11bHRpcGxleGVyLiAgVGhlCisJJ3JlZycgcHJvcGVydHkgb2YgZWFjaCBjaGlsZCBtZGlvLW11eCBub2RlIG11c3QgYmUgY29uc3RyYWluZWQgYnkKKwl0aGlzIG1hc2suCisKK0V4YW1wbGU6CisKK1RoZSBGUEdBIG5vZGUgZGVmaW5lcyBhIG1lbW9yeS1tYXBwZWQgRlBHQSB3aXRoIGEgcmVnaXN0ZXIgc3BhY2Ugb2YgMHgzMCBieXRlcy4KK0ZvciB0aGUgIkVNSTIiIE1ESU8gYnVzLCByZWdpc3RlciA5IChCUkRDRkcxKSBjb250cm9scyB0aGUgbXV4IG9uIHRoYXQgYnVzLgorQSBiaXRtYXNrIG9mIDB4NiBtZWFucyB0aGF0IGJpdHMgMSBhbmQgMiAoYml0IDAgaXMgbHNiKSBhcmUgdGhlIGJpdHMgb24KK0JSRENGRzEgdGhhdCBjb250cm9sIHRoZSBhY3R1YWwgbXV4LgorCisJLyogVGhlIEZQR0Egbm9kZSAqLworCWZwZ2E6IGJvYXJkLWNvbnRyb2xAMywwIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQljb21wYXRpYmxlID0gImZzbCxwNTAyMGRzLWZwZ2EiLCAiZnNsLGZwZ2EtbmdwaXhpcyI7CisJCXJlZyA9IDwzIDAgMHgzMD47CisJCXJhbmdlcyA9IDwwIDMgMCAweDMwPjsKKworCQltZGlvLW11eC1lbWkyIHsKKwkJCWNvbXBhdGlibGUgPSAibWRpby1tdXgtbW1pb3JlZyIsICJtZGlvLW11eCI7CisJCQltZGlvLXBhcmVudC1idXMgPSA8JnhtZGlvMD47CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCQkJcmVnID0gPDkgMT47IC8vIEJSRENGRzEKKwkJCW11eC1tYXNrID0gPDB4Nj47IC8vIEVNSTIKKworCQkJZW1pMl9zbG90MTogbWRpb0AwIHsJLy8gU2xvdCAxIFhBVUkgKEZNMikKKwkJCQlyZWcgPSA8MD47CisJCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJCQlwaHlfeGdtaWlfc2xvdDE6IGV0aGVybmV0LXBoeUAwIHsKKwkJCQkJY29tcGF0aWJsZSA9ICJldGhlcm5ldC1waHktaWVlZTgwMi4zLWM0NSI7CisJCQkJCXJlZyA9IDw0PjsKKwkJCQl9OworCQkJfTsKKworCQkJZW1pMl9zbG90MjogbWRpb0AyIHsJLy8gU2xvdCAyIFhBVUkgKEZNMSkKKwkJCQlyZWcgPSA8Mj47CisJCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJCQlwaHlfeGdtaWlfc2xvdDI6IGV0aGVybmV0LXBoeUA0IHsKKwkJCQkJY29tcGF0aWJsZSA9ICJldGhlcm5ldC1waHktaWVlZTgwMi4zLWM0NSI7CisJCQkJCXJlZyA9IDwwPjsKKwkJCQl9OworCQkJfTsKKwkJfTsKKwl9OworCisJLyogVGhlIHBhcmVudCBNRElPIGJ1cy4gKi8KKwl4bWRpbzA6IG1kaW9AZjEwMDAgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJCWNvbXBhdGlibGUgPSAiZnNsLGZtYW4teG1kaW8iOworCQlyZWcgPSA8MHhmMTAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDEwMCAxIDAgMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1tdXgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZGlvLW11eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY1NjA2ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWRpby1tdXgudHh0CkBAIC0wLDAgKzEsMTM2IEBACitDb21tb24gTURJTyBidXMgbXVsdGlwbGV4ZXIvc3dpdGNoIHByb3BlcnRpZXMuCisKK0FuIE1ESU8gYnVzIG11bHRpcGxleGVyL3N3aXRjaCB3aWxsIGhhdmUgc2V2ZXJhbCBjaGlsZCBidXNzZXMgdGhhdCBhcmUKK251bWJlcmVkIHVuaXF1ZWx5IGluIGEgZGV2aWNlIGRlcGVuZGVudCBtYW5uZXIuICBUaGUgbm9kZXMgZm9yIGFuIE1ESU8KK2J1cyBtdWx0aXBsZXhlci9zd2l0Y2ggd2lsbCBoYXZlIG9uZSBjaGlsZCBub2RlIGZvciBlYWNoIGNoaWxkIGJ1cy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gbWRpby1wYXJlbnQtYnVzIDogcGhhbmRsZSB0byB0aGUgcGFyZW50IE1ESU8gYnVzLgorLSAjYWRkcmVzcy1jZWxscyA9IDwxPjsKKy0gI3NpemUtY2VsbHMgPSA8MD47CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIE90aGVyIHByb3BlcnRpZXMgc3BlY2lmaWMgdG8gdGhlIG11bHRpcGxleGVyL3N3aXRjaCBoYXJkd2FyZS4KKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgY2hpbGQgbm9kZXM6CistICNhZGRyZXNzLWNlbGxzID0gPDE+OworLSAjc2l6ZS1jZWxscyA9IDwwPjsKKy0gcmVnIDogVGhlIHN1Yi1idXMgbnVtYmVyLgorCisKK0V4YW1wbGUgOgorCisJLyogVGhlIHBhcmVudCBNRElPIGJ1cy4gKi8KKwlzbWkxOiBtZGlvQDExODAwMDAwMDE5MDAgeworCQljb21wYXRpYmxlID0gImNhdml1bSxvY3Rlb24tMzg2MC1tZGlvIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQlyZWcgPSA8MHgxMTgwMCAweDAwMDAxOTAwIDB4MCAweDQwPjsKKwl9OworCisJLyoKKwkgICBBbiBOWFAgc243NGNidGx2MzI1MyBkdWFsIDEtb2YtNCBzd2l0Y2ggY29udHJvbGxlZCBieSBhCisJICAgcGFpciBvZiBHUElPIGxpbmVzLiAgQ2hpbGQgYnVzc2VzIDIgYW5kIDMgcG9wdWxhdGVkIHdpdGggNAorCSAgIFBIWXMgZWFjaC4KKwkgKi8KKwltZGlvLW11eCB7CisJCWNvbXBhdGlibGUgPSAibWRpby1tdXgtZ3BpbyI7CisJCWdwaW9zID0gPCZncGlvMSAzIDA+LCA8JmdwaW8xIDQgMD47CisJCW1kaW8tcGFyZW50LWJ1cyA9IDwmc21pMT47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQltZGlvQDIgeworCQkJcmVnID0gPDI+OworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQkJcGh5MTE6IGV0aGVybmV0LXBoeUAxIHsKKwkJCQlyZWcgPSA8MT47CisJCQkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLDg4ZTExNDlyIjsKKwkJCQltYXJ2ZWxsLHJlZy1pbml0ID0gPDMgMHgxMCAwIDB4NTc3Nz4sCisJCQkJCTwzIDB4MTEgMCAweDAwYWE+LAorCQkJCQk8MyAweDEyIDAgMHg0MTA1PiwKKwkJCQkJPDMgMHgxMyAwIDB4MGE2MD47CisJCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3Bpbz47CisJCQkJaW50ZXJydXB0cyA9IDwxMCA4PjsgLyogUGluIDEwLCBhY3RpdmUgbG93ICovCisJCQl9OworCQkJcGh5MTI6IGV0aGVybmV0LXBoeUAyIHsKKwkJCQlyZWcgPSA8Mj47CisJCQkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLDg4ZTExNDlyIjsKKwkJCQltYXJ2ZWxsLHJlZy1pbml0ID0gPDMgMHgxMCAwIDB4NTc3Nz4sCisJCQkJCTwzIDB4MTEgMCAweDAwYWE+LAorCQkJCQk8MyAweDEyIDAgMHg0MTA1PiwKKwkJCQkJPDMgMHgxMyAwIDB4MGE2MD47CisJCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3Bpbz47CisJCQkJaW50ZXJydXB0cyA9IDwxMCA4PjsgLyogUGluIDEwLCBhY3RpdmUgbG93ICovCisJCQl9OworCQkJcGh5MTM6IGV0aGVybmV0LXBoeUAzIHsKKwkJCQlyZWcgPSA8Mz47CisJCQkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLDg4ZTExNDlyIjsKKwkJCQltYXJ2ZWxsLHJlZy1pbml0ID0gPDMgMHgxMCAwIDB4NTc3Nz4sCisJCQkJCTwzIDB4MTEgMCAweDAwYWE+LAorCQkJCQk8MyAweDEyIDAgMHg0MTA1PiwKKwkJCQkJPDMgMHgxMyAwIDB4MGE2MD47CisJCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3Bpbz47CisJCQkJaW50ZXJydXB0cyA9IDwxMCA4PjsgLyogUGluIDEwLCBhY3RpdmUgbG93ICovCisJCQl9OworCQkJcGh5MTQ6IGV0aGVybmV0LXBoeUA0IHsKKwkJCQlyZWcgPSA8ND47CisJCQkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLDg4ZTExNDlyIjsKKwkJCQltYXJ2ZWxsLHJlZy1pbml0ID0gPDMgMHgxMCAwIDB4NTc3Nz4sCisJCQkJCTwzIDB4MTEgMCAweDAwYWE+LAorCQkJCQk8MyAweDEyIDAgMHg0MTA1PiwKKwkJCQkJPDMgMHgxMyAwIDB4MGE2MD47CisJCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3Bpbz47CisJCQkJaW50ZXJydXB0cyA9IDwxMCA4PjsgLyogUGluIDEwLCBhY3RpdmUgbG93ICovCisJCQl9OworCQl9OworCisJCW1kaW9AMyB7CisJCQlyZWcgPSA8Mz47CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCisJCQlwaHkyMTogZXRoZXJuZXQtcGh5QDEgeworCQkJCXJlZyA9IDwxPjsKKwkJCQljb21wYXRpYmxlID0gIm1hcnZlbGwsODhlMTE0OXIiOworCQkJCW1hcnZlbGwscmVnLWluaXQgPSA8MyAweDEwIDAgMHg1Nzc3PiwKKwkJCQkJPDMgMHgxMSAwIDB4MDBhYT4sCisJCQkJCTwzIDB4MTIgMCAweDQxMDU+LAorCQkJCQk8MyAweDEzIDAgMHgwYTYwPjsKKwkJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvPjsKKwkJCQlpbnRlcnJ1cHRzID0gPDEyIDg+OyAvKiBQaW4gMTIsIGFjdGl2ZSBsb3cgKi8KKwkJCX07CisJCQlwaHkyMjogZXRoZXJuZXQtcGh5QDIgeworCQkJCXJlZyA9IDwyPjsKKwkJCQljb21wYXRpYmxlID0gIm1hcnZlbGwsODhlMTE0OXIiOworCQkJCW1hcnZlbGwscmVnLWluaXQgPSA8MyAweDEwIDAgMHg1Nzc3PiwKKwkJCQkJPDMgMHgxMSAwIDB4MDBhYT4sCisJCQkJCTwzIDB4MTIgMCAweDQxMDU+LAorCQkJCQk8MyAweDEzIDAgMHgwYTYwPjsKKwkJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvPjsKKwkJCQlpbnRlcnJ1cHRzID0gPDEyIDg+OyAvKiBQaW4gMTIsIGFjdGl2ZSBsb3cgKi8KKwkJCX07CisJCQlwaHkyMzogZXRoZXJuZXQtcGh5QDMgeworCQkJCXJlZyA9IDwzPjsKKwkJCQljb21wYXRpYmxlID0gIm1hcnZlbGwsODhlMTE0OXIiOworCQkJCW1hcnZlbGwscmVnLWluaXQgPSA8MyAweDEwIDAgMHg1Nzc3PiwKKwkJCQkJPDMgMHgxMSAwIDB4MDBhYT4sCisJCQkJCTwzIDB4MTIgMCAweDQxMDU+LAorCQkJCQk8MyAweDEzIDAgMHgwYTYwPjsKKwkJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvPjsKKwkJCQlpbnRlcnJ1cHRzID0gPDEyIDg+OyAvKiBQaW4gMTIsIGFjdGl2ZSBsb3cgKi8KKwkJCX07CisJCQlwaHkyNDogZXRoZXJuZXQtcGh5QDQgeworCQkJCXJlZyA9IDw0PjsKKwkJCQljb21wYXRpYmxlID0gIm1hcnZlbGwsODhlMTE0OXIiOworCQkJCW1hcnZlbGwscmVnLWluaXQgPSA8MyAweDEwIDAgMHg1Nzc3PiwKKwkJCQkJPDMgMHgxMSAwIDB4MDBhYT4sCisJCQkJCTwzIDB4MTIgMCAweDQxMDU+LAorCQkJCQk8MyAweDEzIDAgMHgwYTYwPjsKKwkJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvPjsKKwkJCQlpbnRlcnJ1cHRzID0gPDEyIDg+OyAvKiBQaW4gMTIsIGFjdGl2ZSBsb3cgKi8KKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWVzb24tZHdtYWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZXNvbi1kd21hYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM2MzNkNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWVzb24tZHdtYWMudHh0CkBAIC0wLDAgKzEsMjUgQEAKKyogQW1sb2dpYyBNZXNvbiBEV01BQyBFdGhlcm5ldCBjb250cm9sbGVyCisKK1RoZSBkZXZpY2UgaW5oZXJpdHMgYWxsIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBkd21hYy9zdG1tYWMgZGV2aWNlcworZGVzY3JpYmVkIGluIHRoZSBmaWxlIG5ldC9zdG1tYWMudHh0IHdpdGggdGhlIGZvbGxvd2luZyBjaGFuZ2VzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiYW1sb2dpYyxtZXNvbjYtZHdtYWMiIGFsb25nIHdpdGggInNucHMsZHdtYWMiCisJICAgICAgYW5kIGFueSBhcHBsaWNhYmxlIG1vcmUgZGV0YWlsZWQgdmVyc2lvbiBudW1iZXIKKwkgICAgICBkZXNjcmliZWQgaW4gbmV0L3N0bW1hYy50eHQKKworLSByZWc6IHNob3VsZCBjb250YWluIGEgcmVnaXN0ZXIgcmFuZ2UgZm9yIHRoZSBkd21hYyBjb250cm9sbGVyIGFuZAorICAgICAgIGFub3RoZXIgb25lIGZvciB0aGUgQW1sb2dpYyBzcGVjaWZpYyBjb25maWd1cmF0aW9uCisKK0V4YW1wbGU6CisKKwlldGhtYWM6IGV0aGVybmV0QGM5NDEwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhbWxvZ2ljLG1lc29uNi1kd21hYyIsICJzbnBzLGR3bWFjIjsKKwkJcmVnID0gPDB4Yzk0MTAwMDAgMHgxMDAwMAorCQkgICAgICAgMHhjMTEwODEwOCAweDQ+OworCQlpbnRlcnJ1cHRzID0gPDAgOCAxPjsKKwkJaW50ZXJydXB0LW5hbWVzID0gIm1hY2lycSI7CisJCWNsb2NrcyA9IDwmY2xrODE+OworCQljbG9jay1uYW1lcyA9ICJzdG1tYWNldGgiOworCX0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWljcmVsLWtzODg1MS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21pY3JlbC1rczg4NTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiZGY5YTcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21pY3JlbC1rczg4NTEudHh0CkBAIC0wLDAgKzEsMTggQEAKK01pY3JlbCBLUzg4NTEgRXRoZXJuZXQgbWFjIChNTEwpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgPSAibWljcmVsLGtzODg1MS1tbGwiIG9mIHBhcmFsbGVsIGludGVyZmFjZQorLSByZWcgOiAyIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUgb2YgcmVnaXN0ZXJzIGZvciBkYXRhIGFuZCBjb21tYW5kCistIGludGVycnVwdHMgOiBpbnRlcnJ1cHQgY29ubmVjdGlvbgorCitNaWNyZWwgS1M4ODUxIEV0aGVybmV0IG1hYyAoU1BJKQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlID0gIm1pY3JlbCxrczg4NTEiIG9yIHRoZSBkZXByZWNhdGVkICJrczg4NTEiCistIHJlZyA6IGNoaXAgc2VsZWN0IG51bWJlcgorLSBpbnRlcnJ1cHRzIDogaW50ZXJydXB0IGNvbm5lY3Rpb24KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdmRkLXN1cHBseTogYW5hbG9nIDMuM1Ygc3VwcGx5IGZvciBFdGhlcm5ldCBtYWMKKy0gdmRkLWlvLXN1cHBseTogZGlnaXRhbCAxLjhWIElPIHN1cHBseSBmb3IgRXRoZXJuZXQgbWFjCistIHJlc2V0LWdwaW9zOiByZXNldF9uIGlucHV0IHBpbgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9taWNyZWwta3N6OTB4MS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21pY3JlbC1rc3o5MHgxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTIwNzZmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9taWNyZWwta3N6OTB4MS50eHQKQEAgLTAsMCArMSw4MyBAQAorTWljcmVsIEtTWjkwMjEvS1NaOTAzMSBHaWdhYml0IEV0aGVybmV0IFBIWQorCitTb21lIGJvYXJkcyByZXF1aXJlIHNwZWNpYWwgdHVuaW5nIHZhbHVlcywgcGFydGljdWxhcmx5IHdoZW4gaXQgY29tZXMgdG8KK2Nsb2NrIGRlbGF5cy4gWW91IGNhbiBzcGVjaWZ5IGNsb2NrIGRlbGF5IHZhbHVlcyBieSBhZGRpbmcKK21pY3JlbC1zcGVjaWZpYyBwcm9wZXJ0aWVzIHRvIGFuIEV0aGVybmV0IE9GIGRldmljZSBub2RlLgorCitOb3RlIHRoYXQgdGhlc2Ugc2V0dGluZ3MgYXJlIGFwcGxpZWQgYWZ0ZXIgYW55IHBoeS1zcGVjaWZpYyBmaXh1cCBmcm9tCitwaHlfZml4dXBfbGlzdCAoc2VlIHBoeV9pbml0X2h3KCkgZnJvbSBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jKSwKK2FuZCB0aGVyZWZvcmUgbWF5IG92ZXJ3cml0ZSB0aGVtLgorCitLU1o5MDIxOgorCisgIEFsbCBza2V3IGNvbnRyb2wgb3B0aW9ucyBhcmUgc3BlY2lmaWVkIGluIHBpY29zZWNvbmRzLiBUaGUgbWluaW11bQorICB2YWx1ZSBpcyAwLCB0aGUgbWF4aW11bSB2YWx1ZSBpcyAzMDAwLCBhbmQgaXQgaXMgaW5jcmVtZW50ZWQgYnkgMjAwcHMKKyAgc3RlcHMuCisKKyAgT3B0aW9uYWwgcHJvcGVydGllczoKKworICAgIC0gcnhjLXNrZXctcHMgOiBTa2V3IGNvbnRyb2wgb2YgUlhDIHBhZAorICAgIC0gcnhkdi1za2V3LXBzIDogU2tldyBjb250cm9sIG9mIFJYIENUTCBwYWQKKyAgICAtIHR4Yy1za2V3LXBzIDogU2tldyBjb250cm9sIG9mIFRYQyBwYWQKKyAgICAtIHR4ZW4tc2tldy1wcyA6IFNrZXcgY29udHJvbCBvZiBUWCBDVEwgcGFkCisgICAgLSByeGQwLXNrZXctcHMgOiBTa2V3IGNvbnRyb2wgb2YgUlggZGF0YSAwIHBhZAorICAgIC0gcnhkMS1za2V3LXBzIDogU2tldyBjb250cm9sIG9mIFJYIGRhdGEgMSBwYWQKKyAgICAtIHJ4ZDItc2tldy1wcyA6IFNrZXcgY29udHJvbCBvZiBSWCBkYXRhIDIgcGFkCisgICAgLSByeGQzLXNrZXctcHMgOiBTa2V3IGNvbnRyb2wgb2YgUlggZGF0YSAzIHBhZAorICAgIC0gdHhkMC1za2V3LXBzIDogU2tldyBjb250cm9sIG9mIFRYIGRhdGEgMCBwYWQKKyAgICAtIHR4ZDEtc2tldy1wcyA6IFNrZXcgY29udHJvbCBvZiBUWCBkYXRhIDEgcGFkCisgICAgLSB0eGQyLXNrZXctcHMgOiBTa2V3IGNvbnRyb2wgb2YgVFggZGF0YSAyIHBhZAorICAgIC0gdHhkMy1za2V3LXBzIDogU2tldyBjb250cm9sIG9mIFRYIGRhdGEgMyBwYWQKKworS1NaOTAzMToKKworICBBbGwgc2tldyBjb250cm9sIG9wdGlvbnMgYXJlIHNwZWNpZmllZCBpbiBwaWNvc2Vjb25kcy4gVGhlIG1pbmltdW0KKyAgdmFsdWUgaXMgMCwgYW5kIHRoZSBtYXhpbXVtIGlzIHByb3BlcnR5LWRlcGVuZGVudC4gVGhlIGluY3JlbWVudAorICBzdGVwIGlzIDYwcHMuCisKKyAgT3B0aW9uYWwgcHJvcGVydGllczoKKworICAgIE1heGltdW0gdmFsdWUgb2YgMTg2MDoKKworICAgICAgLSByeGMtc2tldy1wcyA6IFNrZXcgY29udHJvbCBvZiBSWCBjbG9jayBwYWQKKyAgICAgIC0gdHhjLXNrZXctcHMgOiBTa2V3IGNvbnRyb2wgb2YgVFggY2xvY2sgcGFkCisKKyAgICBNYXhpbXVtIHZhbHVlIG9mIDkwMDoKKworICAgICAgLSByeGR2LXNrZXctcHMgOiBTa2V3IGNvbnRyb2wgb2YgUlggQ1RMIHBhZAorICAgICAgLSB0eGVuLXNrZXctcHMgOiBTa2V3IGNvbnRyb2wgb2YgVFggQ1RMIHBhZAorICAgICAgLSByeGQwLXNrZXctcHMgOiBTa2V3IGNvbnRyb2wgb2YgUlggZGF0YSAwIHBhZAorICAgICAgLSByeGQxLXNrZXctcHMgOiBTa2V3IGNvbnRyb2wgb2YgUlggZGF0YSAxIHBhZAorICAgICAgLSByeGQyLXNrZXctcHMgOiBTa2V3IGNvbnRyb2wgb2YgUlggZGF0YSAyIHBhZAorICAgICAgLSByeGQzLXNrZXctcHMgOiBTa2V3IGNvbnRyb2wgb2YgUlggZGF0YSAzIHBhZAorICAgICAgLSB0eGQwLXNrZXctcHMgOiBTa2V3IGNvbnRyb2wgb2YgVFggZGF0YSAwIHBhZAorICAgICAgLSB0eGQxLXNrZXctcHMgOiBTa2V3IGNvbnRyb2wgb2YgVFggZGF0YSAxIHBhZAorICAgICAgLSB0eGQyLXNrZXctcHMgOiBTa2V3IGNvbnRyb2wgb2YgVFggZGF0YSAyIHBhZAorICAgICAgLSB0eGQzLXNrZXctcHMgOiBTa2V3IGNvbnRyb2wgb2YgVFggZGF0YSAzIHBhZAorCitFeGFtcGxlczoKKworCS8qIEF0dGFjaCB0byBhbiBFdGhlcm5ldCBkZXZpY2Ugd2l0aCBhdXRvZGV0ZWN0ZWQgUEhZICovCisJJmVuZXQgeworCQlyeGMtc2tldy1wcyA9IDwzMDAwPjsKKwkJcnhkdi1za2V3LXBzID0gPDA+OworCQl0eGMtc2tldy1wcyA9IDwzMDAwPjsKKwkJdHhlbi1za2V3LXBzID0gPDA+OworCQlzdGF0dXMgPSAib2theSI7CisJfTsKKworCS8qIEF0dGFjaCB0byBhbiBleHBsaWNpdGx5LXNwZWNpZmllZCBQSFkgKi8KKwltZGlvIHsKKwkJcGh5MDogZXRoZXJuZXQtcGh5QDAgeworCQkJcnhjLXNrZXctcHMgPSA8MzAwMD47CisJCQlyeGR2LXNrZXctcHMgPSA8MD47CisJCQl0eGMtc2tldy1wcyA9IDwzMDAwPjsKKwkJCXR4ZW4tc2tldy1wcyA9IDwwPjsKKwkJCXJlZyA9IDwwPjsKKwkJfTsKKwl9OworCWV0aGVybmV0QDcwMDAwIHsKKwkJc3RhdHVzID0gIm9rYXkiOworCQlwaHkgPSA8JnBoeTA+OworCQlwaHktbW9kZSA9ICJyZ21paS1pZCI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWljcmVsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWljcmVsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzQ5NmE4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9taWNyZWwudHh0CkBAIC0wLDAgKzEsMzcgQEAKK01pY3JlbCBQSFkgcHJvcGVydGllcy4KKworVGhlc2UgcHJvcGVydGllcyBjb3ZlciB0aGUgYmFzZSBwcm9wZXJ0aWVzIE1pY3JlbCBQSFlzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCisgLSBtaWNyZWwsbGVkLW1vZGUgOiBMRUQgbW9kZSB2YWx1ZSB0byBzZXQgZm9yIFBIWXMgd2l0aCBjb25maWd1cmFibGUgTEVEcy4KKworCUNvbmZpZ3VyZSB0aGUgTEVEIG1vZGUgd2l0aCBzaW5nbGUgdmFsdWUuIFRoZSBsaXN0IG9mIFBIWXMgYW5kIHRoZQorCWJpdHMgdGhhdCBhcmUgY3VycmVudGx5IHN1cHBvcnRlZDoKKworCUtTWjgwMDE6IHJlZ2lzdGVyIDB4MWUsIGJpdHMgMTUuLjE0CisJS1NaODA0MTogcmVnaXN0ZXIgMHgxZSwgYml0cyAxNS4uMTQKKwlLU1o4MDIxOiByZWdpc3RlciAweDFmLCBiaXRzIDUuLjQKKwlLU1o4MDMxOiByZWdpc3RlciAweDFmLCBiaXRzIDUuLjQKKwlLU1o4MDUxOiByZWdpc3RlciAweDFmLCBiaXRzIDUuLjQKKwlLU1o4MDgxOiByZWdpc3RlciAweDFmLCBiaXRzIDUuLjQKKwlLU1o4MDkxOiByZWdpc3RlciAweDFmLCBiaXRzIDUuLjQKKworCVNlZSB0aGUgcmVzcGVjdGl2ZSBQSFkgZGF0YXNoZWV0IGZvciB0aGUgbW9kZSB2YWx1ZXMuCisKKyAtIG1pY3JlbCxybWlpLXJlZmVyZW5jZS1jbG9jay1zZWxlY3QtMjUtbWh6OiBSTUlJIFJlZmVyZW5jZSBDbG9jayBTZWxlY3QKKwkJCQkJCWJpdCBzZWxlY3RzIDI1IE1IeiBtb2RlCisKKwlTZXR0aW5nIHRoZSBSTUlJIFJlZmVyZW5jZSBDbG9jayBTZWxlY3QgYml0IGVuYWJsZXMgMjUgTUh6IHJhdGhlcgorCXRoYW4gNTAgTUh6IGNsb2NrIG1vZGUuCisKKwlOb3RlIHRoYXQgdGhpcyBvcHRpb24gaW4gb25seSBuZWVkZWQgZm9yIGNlcnRhaW4gUEhZIHJldmlzaW9ucyB3aXRoIGEKKwlub24tc3RhbmRhcmQsIGludmVydGVkIGZ1bmN0aW9uIG9mIHRoaXMgY29uZmlndXJhdGlvbiBiaXQuCisJU3BlY2lmaWNhbGx5LCBhIGNsb2NrIHJlZmVyZW5jZSAoInJtaWktcmVmIiBiZWxvdykgaXMgYWx3YXlzIG5lZWRlZCB0bworCWFjdHVhbGx5IHNlbGVjdCBhIG1vZGUuCisKKyAtIGNsb2NrcywgY2xvY2stbmFtZXM6IGNvbnRhaW5zIGNsb2NrcyBhY2NvcmRpbmcgdG8gdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5ncy4KKworCXN1cHBvcnRlZCBjbG9ja3M6CisJLSBLU1o4MDIxLCBLU1o4MDMxLCBLU1o4MDgxLCBLU1o4MDkxOiAicm1paS1yZWYiOiBUaGUgUk1JSSByZWZlcmVuY2UKKwkgIGlucHV0IGNsb2NrLiBVc2VkIHRvIGRldGVybWluZSB0aGUgWEkgaW5wdXQgY2xvY2suCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21veGEsbW94YXJ0LW1hYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21veGEsbW94YXJ0LW1hYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgzNDE4YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbW94YSxtb3hhcnQtbWFjLnR4dApAQCAtMCwwICsxLDIxIEBACitNT1hBIEFSVCBFdGhlcm5ldCBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IE11c3QgYmUgIm1veGEsbW94YXJ0LW1hYyIKKy0gcmVnIDogU2hvdWxkIGNvbnRhaW4gcmVnaXN0ZXIgbG9jYXRpb24gYW5kIGxlbmd0aAorLSBpbnRlcnJ1cHRzIDogU2hvdWxkIGNvbnRhaW4gdGhlIG1hYyBpbnRlcnJ1cHQgbnVtYmVyCisKK0V4YW1wbGU6CisKKwltYWMwOiBtYWNAOTA5MDAwMDAgeworCQljb21wYXRpYmxlID0gIm1veGEsbW94YXJ0LW1hYyI7CisJCXJlZyA9CTwweDkwOTAwMDAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDwyNSAwPjsKKwl9OworCisJbWFjMTogbWFjQDkyMDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJtb3hhLG1veGFydC1tYWMiOworCQlyZWcgPQk8MHg5MjAwMDAwMCAweDEwMD47CisJCWludGVycnVwdHMgPSA8MjcgMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL25mY21ydmwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvbmZjbXJ2bC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZkZjkxNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL25mY21ydmwudHh0CkBAIC0wLDAgKzEsODYgQEAKKyogTWFydmVsbCBJbnRlcm5hdGlvbmFsIEx0ZC4gTkNJIE5GQyBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZToKKyAgLSAibWFydmVsbCxuZmMtdWFydCIgb3IgIm1ydmwsbmZjLXVhcnQiIGZvciBVQVJUIGRldmljZXMKKyAgLSAibWFydmVsbCxuZmMtaTJjIiBmb3IgSTJDIGRldmljZXMKKyAgLSAibWFydmVsbCxuZmMtc3BpIiBmb3IgU1BJIGRldmljZXMKKworT3B0aW9uYWwgU29DIHNwZWNpZmljIHByb3BlcnRpZXM6CistIHBpbmN0cmwtbmFtZXM6IENvbnRhaW5zIG9ubHkgb25lIHZhbHVlIC0gImRlZmF1bHQiLgorLSBwaW50Y3RybC0wOiBTcGVjaWZpZXMgdGhlIHBpbiBjb250cm9sIGdyb3VwcyB1c2VkIGZvciB0aGlzIGNvbnRyb2xsZXIuCistIHJlc2V0LW4taW86IE91dHB1dCBHUElPIHBpbiB1c2VkIHRvIHJlc2V0IHRoZSBjaGlwIChhY3RpdmUgbG93KS4KKy0gaGNpLW11eGVkOiBTcGVjaWZpZXMgdGhhdCB0aGUgY2hpcCBpcyBtdXhpbmcgTkNJIG92ZXIgSENJIGZyYW1lcy4KKworT3B0aW9uYWwgVUFSVC1iYXNlZCBjaGlwIHNwZWNpZmljIHByb3BlcnRpZXM6CistIGZsb3ctY29udHJvbDogU3BlY2lmaWVzIHRoYXQgdGhlIGNoaXAgaXMgdXNpbmcgUlRTL0NUUy4KKy0gYnJlYWstY29udHJvbDogU3BlY2lmaWVzIHRoYXQgdGhlIGNoaXAgbmVlZHMgc3BlY2lmaWMgYnJlYWsgbWFuYWdlbWVudC4KKworT3B0aW9uYWwgSTJDLWJhc2VkIGNoaXAgc3BlY2lmaWMgcHJvcGVydGllczoKKy0gaTJjLWludC1mYWxsaW5nOiBTcGVjaWZpZXMgdGhhdCB0aGUgY2hpcCByZWFkIGV2ZW50IHNoYWxsIGJlIHRyaWdnZWQgb24KKyAgCQkgICBmYWxsaW5nIGVkZ2UuCistIGkyYy1pbnQtcmlzaW5nOiBTcGVjaWZpZXMgdGhhdCB0aGUgY2hpcCByZWFkIGV2ZW50IHNoYWxsIGJlIHRyaWdnZWQgb24KKyAgCQkgIHJpc2luZyBlZGdlLgorCitFeGFtcGxlIChmb3IgQVJNLWJhc2VkIEJlYWdsZUJvYXJkIEJsYWNrIHdpdGggODhXODg4NyBvbiBVQVJUNSk6CisKKyZ1YXJ0NSB7CisJc3RhdHVzID0gIm9rYXkiOworCisJbmZjbXJ2bHVhcnQ6IG5mY21ydmx1YXJ0QDUgeworCQljb21wYXRpYmxlID0gIm1hcnZlbGwsbmZjLXVhcnQiOworCisJCXJlc2V0LW4taW8gPSA8JmdwaW8zIDE2IDA+OworCisJCWhjaS1tdXhlZDsKKwkJZmxvdy1jb250cm9sOworICAgICAgICB9Cit9OworCisKK0V4YW1wbGUgKGZvciBBUk0tYmFzZWQgQmVhZ2xlQm9hcmQgQmxhY2sgd2l0aCA4OFc4ODg3IG9uIEkyQzEpOgorCismaTJjMSB7CisJc3RhdHVzID0gIm9rYXkiOworCWNsb2NrLWZyZXF1ZW5jeSA9IDw0MDAwMDA+OworCisJbmZjbXJ2bGkyYzA6IGkyY0AxIHsKKwkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLG5mYy1pMmMiOworCisJCXJlZyA9IDwweDg+OworCisJCS8qIEkyQyBJTlQgY29uZmlndXJhdGlvbiAqLworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvMz47CisJCWludGVycnVwdHMgPSA8MjEgMD47CisKKwkJLyogSTJDIElOVCB0cmlnZ2VyIGNvbmZpZ3VyYXRpb24gKi8KKwkJaTJjLWludC1yaXNpbmc7CisKKwkJLyogUmVzZXQgSU8gKi8KKwkJcmVzZXQtbi1pbyA9IDwmZ3BpbzMgMTkgMD47CisJfTsKK307CisKKworRXhhbXBsZSAoZm9yIEFSTS1iYXNlZCBCZWFnbGVCb2FyZCBCbGFjayBvbiBTUEkwKToKKworJnNwaTAgeworCisJbXJ2bG5mY3NwaTA6IHNwaUAwIHsKKwkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLG5mYy1zcGkiOworCisJCXJlZyA9IDwwPjsKKworCQkvKiBTUEkgQnVzIGNvbmZpZ3VyYXRpb24gKi8KKwkJc3BpLW1heC1mcmVxdWVuY3kgPSA8MzAwMDAwMD47CisJCXNwaS1jcGhhOworCQlzcGktY3BvbDsKKworCQkvKiBTUEkgSU5UIGNvbmZpZ3VyYXRpb24gKi8KKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzE+OworCQlpbnRlcnJ1cHRzID0gPDE3IDA+OworCisJCS8qIFJlc2V0IElPICovCisgICAgICAgCQlyZXNldC1uLWlvID0gPCZncGlvMyAxOSAwPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL254cC1uY2kudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvbnhwLW5jaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI2Y2Q5YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL254cC1uY2kudHh0CkBAIC0wLDAgKzEsMzUgQEAKKyogTlhQIFNlbWljb25kdWN0b3JzIE5YUCBOQ0kgTkZDIENvbnRyb2xsZXJzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAibnhwLG54cC1uY2ktaTJjIi4KKy0gY2xvY2stZnJlcXVlbmN5OiBJwrJDIHdvcmsgZnJlcXVlbmN5LgorLSByZWc6IGFkZHJlc3Mgb24gdGhlIGJ1cworLSBpbnRlcnJ1cHQtcGFyZW50OiBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGdwaW8gY29udHJvbGxlcgorLSBpbnRlcnJ1cHRzOiBHUElPIGludGVycnVwdCB0byB3aGljaCB0aGUgY2hpcCBpcyBjb25uZWN0ZWQKKy0gZW5hYmxlLWdwaW9zOiBPdXRwdXQgR1BJTyBwaW4gdXNlZCBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZSBjaGlwCistIGZpcm13YXJlLWdwaW9zOiBPdXRwdXQgR1BJTyBwaW4gdXNlZCB0byBlbnRlciBmaXJtd2FyZSBkb3dubG9hZCBtb2RlCisKK09wdGlvbmFsIFNvQyBTcGVjaWZpYyBQcm9wZXJ0aWVzOgorLSBwaW5jdHJsLW5hbWVzOiBDb250YWlucyBvbmx5IG9uZSB2YWx1ZSAtICJkZWZhdWx0Ii4KKy0gcGludGN0cmwtMDogU3BlY2lmaWVzIHRoZSBwaW4gY29udHJvbCBncm91cHMgdXNlZCBmb3IgdGhpcyBjb250cm9sbGVyLgorCitFeGFtcGxlIChmb3IgQVJNLWJhc2VkIEJlYWdsZUJvbmUgd2l0aCBOUEMxMDAgTkZDIGNvbnRyb2xsZXIgb24gSTJDMik6CisKKyZpMmMyIHsKKworCXN0YXR1cyA9ICJva2F5IjsKKworCW5wYzEwMDogbnBjMTAwQDI5IHsKKworCQljb21wYXRpYmxlID0gIm54cCxueHAtbmNpLWkyYyI7CisKKwkJcmVnID0gPDB4Mjk+OworCQljbG9jay1mcmVxdWVuY3kgPSA8MTAwMDAwPjsKKworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvMT47CisJCWludGVycnVwdHMgPSA8MjkgR1BJT19BQ1RJVkVfSElHSD47CisKKwkJZW5hYmxlLWdwaW9zID0gPCZncGlvMCAzMCBHUElPX0FDVElWRV9ISUdIPjsKKwkJZmlybXdhcmUtZ3Bpb3MgPSA8JmdwaW8wIDMxIEdQSU9fQUNUSVZFX0hJR0g+OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvcG41NDQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvcG41NDQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhYjY5ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9wbjU0NC50eHQKQEAgLTAsMCArMSwzNSBAQAorKiBOWFAgU2VtaWNvbmR1Y3RvcnMgUE41NDQgTkZDIENvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJueHAscG41NDQtaTJjIi4KKy0gY2xvY2stZnJlcXVlbmN5OiBJskMgd29yayBmcmVxdWVuY3kuCistIHJlZzogYWRkcmVzcyBvbiB0aGUgYnVzCistIGludGVycnVwdC1wYXJlbnQ6IHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgZ3BpbyBjb250cm9sbGVyCistIGludGVycnVwdHM6IEdQSU8gaW50ZXJydXB0IHRvIHdoaWNoIHRoZSBjaGlwIGlzIGNvbm5lY3RlZAorLSBlbmFibGUtZ3Bpb3M6IE91dHB1dCBHUElPIHBpbiB1c2VkIGZvciBlbmFibGluZy9kaXNhYmxpbmcgdGhlIFBONTQ0CistIGZpcm13YXJlLWdwaW9zOiBPdXRwdXQgR1BJTyBwaW4gdXNlZCB0byBlbnRlciBmaXJtd2FyZSBkb3dubG9hZCBtb2RlCisKK09wdGlvbmFsIFNvQyBTcGVjaWZpYyBQcm9wZXJ0aWVzOgorLSBwaW5jdHJsLW5hbWVzOiBDb250YWlucyBvbmx5IG9uZSB2YWx1ZSAtICJkZWZhdWx0Ii4KKy0gcGludGN0cmwtMDogU3BlY2lmaWVzIHRoZSBwaW4gY29udHJvbCBncm91cHMgdXNlZCBmb3IgdGhpcyBjb250cm9sbGVyLgorCitFeGFtcGxlIChmb3IgQVJNLWJhc2VkIEJlYWdsZUJvbmUgd2l0aCBQTjU0NCBvbiBJMkMyKToKKworJmkyYzIgeworCisJc3RhdHVzID0gIm9rYXkiOworCisJcG41NDQ6IHBuNTQ0QDI4IHsKKworCQljb21wYXRpYmxlID0gIm54cCxwbjU0NC1pMmMiOworCisJCXJlZyA9IDwweDI4PjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDQwMDAwMD47CisKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzE+OworCQlpbnRlcnJ1cHRzID0gPDE3IEdQSU9fQUNUSVZFX0hJR0g+OworCisJCWVuYWJsZS1ncGlvcyA9IDwmZ3BpbzMgMjEgR1BJT19BQ1RJVkVfSElHSD47CisJCWZpcm13YXJlLWdwaW9zID0gPCZncGlvMyAxOSBHUElPX0FDVElWRV9ISUdIPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3MzZndybjUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvczNmd3JuNS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIxZTc1ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3MzZndybjUudHh0CkBAIC0wLDAgKzEsMjcgQEAKKyogU2Ftc3VuZyBTM0ZXUk41IE5DSSBORkMgQ29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgInNhbXN1bmcsczNmd3JuNS1pMmMiLgorLSByZWc6IGFkZHJlc3Mgb24gdGhlIGJ1cworLSBpbnRlcnJ1cHQtcGFyZW50OiBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGdwaW8gY29udHJvbGxlcgorLSBpbnRlcnJ1cHRzOiBHUElPIGludGVycnVwdCB0byB3aGljaCB0aGUgY2hpcCBpcyBjb25uZWN0ZWQKKy0gczNmd3JuNSxlbi1ncGlvczogT3V0cHV0IEdQSU8gcGluIHVzZWQgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgY2hpcAorLSBzM2Z3cm41LGZ3LWdwaW9zOiBPdXRwdXQgR1BJTyBwaW4gdXNlZCB0byBlbnRlciBmaXJtd2FyZSBtb2RlIGFuZAorICBzbGVlcC93YWtldXAgY29udHJvbAorCitFeGFtcGxlOgorCismaHNpMmNfNCB7CisJc3RhdHVzID0gIm9rYXkiOworCXMzZndybjVAMjcgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsczNmd3JuNS1pMmMiOworCisJCXJlZyA9IDwweDI3PjsKKworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGExPjsKKwkJaW50ZXJydXB0cyA9IDwzIDAgMD47CisKKwkJczNmd3JuNSxlbi1ncGlvcyA9IDwmZ3BmMSA0IDA+OworCQlzM2Z3cm41LGZ3LWdwaW9zID0gPCZncGowIDIgMD47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdC1uY2ktaTJjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3N0LW5jaS1pMmMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2MzczMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdC1uY2ktaTJjLnR4dApAQCAtMCwwICsxLDQwIEBACisqIFNUTWljcm9lbGVjdHJvbmljcyBTQVMuIFNUIE5DSSBORkMgQ29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgInN0LHN0MjFuZmNiLWkyYyIgb3IgInN0LHN0MjFuZmNjLWkyYyIuCistIGNsb2NrLWZyZXF1ZW5jeTogScKyQyB3b3JrIGZyZXF1ZW5jeS4KKy0gcmVnOiBhZGRyZXNzIG9uIHRoZSBidXMKKy0gaW50ZXJydXB0LXBhcmVudDogcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBncGlvIGNvbnRyb2xsZXIKKy0gaW50ZXJydXB0czogR1BJTyBpbnRlcnJ1cHQgdG8gd2hpY2ggdGhlIGNoaXAgaXMgY29ubmVjdGVkCistIHJlc2V0LWdwaW9zOiBPdXRwdXQgR1BJTyBwaW4gdXNlZCB0byByZXNldCB0aGUgU1QyMU5GQ0IKKworT3B0aW9uYWwgU29DIFNwZWNpZmljIFByb3BlcnRpZXM6CistIHBpbmN0cmwtbmFtZXM6IENvbnRhaW5zIG9ubHkgb25lIHZhbHVlIC0gImRlZmF1bHQiLgorLSBwaW50Y3RybC0wOiBTcGVjaWZpZXMgdGhlIHBpbiBjb250cm9sIGdyb3VwcyB1c2VkIGZvciB0aGlzIGNvbnRyb2xsZXIuCistIGVzZS1wcmVzZW50OiBTcGVjaWZpZXMgdGhhdCBhbiBlc2UgaXMgcGh5c2ljYWxseSBjb25uZWN0ZWQgdG8gdGhlIG5mYworY29udHJvbGxlci4KKy0gdWljYy1wcmVzZW50OiBTcGVjaWZpZXMgdGhhdCB0aGUgdWljYyBzd3Agc2lnbmFsIGNhbiBiZSBwaHlzaWNhbGx5Citjb25uZWN0ZWQgdG8gdGhlIG5mYyBjb250cm9sbGVyLgorCitFeGFtcGxlIChmb3IgQVJNLWJhc2VkIEJlYWdsZUJvYXJkIHhNIHdpdGggU1QyMU5GQ0Igb24gSTJDMik6CisKKyZpMmMyIHsKKworCXN0YXR1cyA9ICJva2F5IjsKKworCXN0MjFuZmNiOiBzdDIxbmZjYkA4IHsKKworCQljb21wYXRpYmxlID0gInN0LHN0MjFuZmNiLWkyYyI7CisKKwkJcmVnID0gPDB4MDg+OworCQljbG9jay1mcmVxdWVuY3kgPSA8NDAwMDAwPjsKKworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvNT47CisJCWludGVycnVwdHMgPSA8MiBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKworCQlyZXNldC1ncGlvcyA9IDwmZ3BpbzUgMjkgR1BJT19BQ1RJVkVfSElHSD47CisKKwkJZXNlLXByZXNlbnQ7CisJCXVpY2MtcHJlc2VudDsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3N0LW5jaS1zcGkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3QtbmNpLXNwaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzExY2E4NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3N0LW5jaS1zcGkudHh0CkBAIC0wLDAgKzEsMzggQEAKKyogU1RNaWNyb2VsZWN0cm9uaWNzIFNBUy4gU1QgTkNJIE5GQyBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAic3Qsc3QyMW5mY2Itc3BpIgorLSBzcGktbWF4LWZyZXF1ZW5jeTogTWF4aW11bSBTUEkgZnJlcXVlbmN5ICg8PSA0MDAwMDAwKS4KKy0gaW50ZXJydXB0LXBhcmVudDogcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBncGlvIGNvbnRyb2xsZXIKKy0gaW50ZXJydXB0czogR1BJTyBpbnRlcnJ1cHQgdG8gd2hpY2ggdGhlIGNoaXAgaXMgY29ubmVjdGVkCistIHJlc2V0LWdwaW9zOiBPdXRwdXQgR1BJTyBwaW4gdXNlZCB0byByZXNldCB0aGUgU1QyMU5GQ0IKKworT3B0aW9uYWwgU29DIFNwZWNpZmljIFByb3BlcnRpZXM6CistIHBpbmN0cmwtbmFtZXM6IENvbnRhaW5zIG9ubHkgb25lIHZhbHVlIC0gImRlZmF1bHQiLgorLSBwaW50Y3RybC0wOiBTcGVjaWZpZXMgdGhlIHBpbiBjb250cm9sIGdyb3VwcyB1c2VkIGZvciB0aGlzIGNvbnRyb2xsZXIuCistIGVzZS1wcmVzZW50OiBTcGVjaWZpZXMgdGhhdCBhbiBlc2UgaXMgcGh5c2ljYWxseSBjb25uZWN0ZWQgdG8gdGhlIG5mYworY29udHJvbGxlci4KKy0gdWljYy1wcmVzZW50OiBTcGVjaWZpZXMgdGhhdCB0aGUgdWljYyBzd3Agc2lnbmFsIGNhbiBiZSBwaHlzaWNhbGx5Citjb25uZWN0ZWQgdG8gdGhlIG5mYyBjb250cm9sbGVyLgorCitFeGFtcGxlIChmb3IgQVJNLWJhc2VkIEJlYWdsZUJvYXJkIHhNIHdpdGggU1QyMU5GQ0Igb24gU1BJNCk6CisKKyZtY3NwaTQgeworCisJc3RhdHVzID0gIm9rYXkiOworCisJc3QyMW5mY2I6IHN0MjFuZmNiQDAgeworCisJCWNvbXBhdGlibGUgPSAic3Qsc3QyMW5mY2Itc3BpIjsKKworCQljbG9jay1mcmVxdWVuY3kgPSA8NDAwMDAwMD47CisKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzU+OworCQlpbnRlcnJ1cHRzID0gPDIgSVJRX1RZUEVfRURHRV9SSVNJTkc+OworCisJCXJlc2V0LWdwaW9zID0gPCZncGlvNSAyOSBHUElPX0FDVElWRV9ISUdIPjsKKworCQllc2UtcHJlc2VudDsKKwkJdWljYy1wcmVzZW50OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3QyMW5mY2EudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3QyMW5mY2EudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiYjJlMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdDIxbmZjYS50eHQKQEAgLTAsMCArMSw0MCBAQAorKiBTVE1pY3JvZWxlY3Ryb25pY3MgU0FTLiBTVDIxTkZDQSBORkMgQ29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgInN0LHN0MjFuZmNhLWkyYyIuCistIGNsb2NrLWZyZXF1ZW5jeTogScKyQyB3b3JrIGZyZXF1ZW5jeS4KKy0gcmVnOiBhZGRyZXNzIG9uIHRoZSBidXMKKy0gaW50ZXJydXB0LXBhcmVudDogcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBncGlvIGNvbnRyb2xsZXIKKy0gaW50ZXJydXB0czogR1BJTyBpbnRlcnJ1cHQgdG8gd2hpY2ggdGhlIGNoaXAgaXMgY29ubmVjdGVkCistIGVuYWJsZS1ncGlvczogT3V0cHV0IEdQSU8gcGluIHVzZWQgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyB0aGUgU1QyMU5GQ0EKKworT3B0aW9uYWwgU29DIFNwZWNpZmljIFByb3BlcnRpZXM6CistIHBpbmN0cmwtbmFtZXM6IENvbnRhaW5zIG9ubHkgb25lIHZhbHVlIC0gImRlZmF1bHQiLgorLSBwaW50Y3RybC0wOiBTcGVjaWZpZXMgdGhlIHBpbiBjb250cm9sIGdyb3VwcyB1c2VkIGZvciB0aGlzIGNvbnRyb2xsZXIuCistIGVzZS1wcmVzZW50OiBTcGVjaWZpZXMgdGhhdCBhbiBlc2UgaXMgcGh5c2ljYWxseSBjb25uZWN0ZWQgdG8gdGhlIG5mYworY29udHJvbGxlci4KKy0gdWljYy1wcmVzZW50OiBTcGVjaWZpZXMgdGhhdCB0aGUgdWljYyBzd3Agc2lnbmFsIGNhbiBiZSBwaHlzaWNhbGx5Citjb25uZWN0ZWQgdG8gdGhlIG5mYyBjb250cm9sbGVyLgorCitFeGFtcGxlIChmb3IgQVJNLWJhc2VkIEJlYWdsZUJvYXJkIHhNIHdpdGggU1QyMU5GQ0Egb24gSTJDMik6CisKKyZpMmMyIHsKKworCXN0YXR1cyA9ICJva2F5IjsKKworCXN0MjFuZmNhOiBzdDIxbmZjYUAxIHsKKworCQljb21wYXRpYmxlID0gInN0LHN0MjFuZmNhLWkyYyI7CisKKwkJcmVnID0gPDB4MDE+OworCQljbG9jay1mcmVxdWVuY3kgPSA8NDAwMDAwPjsKKworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvNT47CisJCWludGVycnVwdHMgPSA8MiBJUlFfVFlQRV9MRVZFTF9MT1c+OworCisJCWVuYWJsZS1ncGlvcyA9IDwmZ3BpbzUgMjkgR1BJT19BQ1RJVkVfSElHSD47CisKKwkJZXNlLXByZXNlbnQ7CisJCXVpY2MtcHJlc2VudDsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RyZjc5NzBhLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3RyZjc5NzBhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmIzNWEwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvdHJmNzk3MGEudHh0CkBAIC0wLDAgKzEsNDggQEAKKyogVGV4YXMgSW5zdHJ1bWVudHMgVFJGNzk3MEEgUkZJRC9ORkMvMTU2OTMgVHJhbnNjZWl2ZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJ0aSx0cmY3OTcwYSIuCistIHNwaS1tYXgtZnJlcXVlbmN5OiBNYXhpbXVtIFNQSSBmcmVxdWVuY3kgKDw9IDIwMDAwMDApLgorLSBpbnRlcnJ1cHQtcGFyZW50OiBwaGFuZGxlIG9mIHBhcmVudCBpbnRlcnJ1cHQgaGFuZGxlci4KKy0gaW50ZXJydXB0czogQSBzaW5nbGUgaW50ZXJydXB0IHNwZWNpZmllci4KKy0gdGksZW5hYmxlLWdwaW9zOiBUd28gR1BJTyBlbnRyaWVzIHVzZWQgZm9yICdFTicgYW5kICdFTjInIHBpbnMgb24gdGhlCisgIFRSRjc5NzBBLgorLSB2aW4tc3VwcGx5OiBSZWd1bGF0b3IgZm9yIHN1cHBseSB2b2x0YWdlIHRvIFZJTiBwaW4KKworT3B0aW9uYWwgU29DIFNwZWNpZmljIFByb3BlcnRpZXM6CistIHBpbmN0cmwtbmFtZXM6IENvbnRhaW5zIG9ubHkgb25lIHZhbHVlIC0gImRlZmF1bHQiLgorLSBwaW50Y3RybC0wOiBTcGVjaWZpZXMgdGhlIHBpbiBjb250cm9sIGdyb3VwcyB1c2VkIGZvciB0aGlzIGNvbnRyb2xsZXIuCistIGF1dG9zdXNwZW5kLWRlbGF5OiBTcGVjaWZ5IGF1dG9zdXNwZW5kIGRlbGF5IGluIG1pbGxpc2Vjb25kcy4KKy0gdmluLXZvbHRhZ2Utb3ZlcnJpZGU6IFNwZWNpZnkgdm9sdGFnZSBvZiBWSU4gcGluIGluIG1pY3Jvdm9sdHMuCistIGlycS1zdGF0dXMtcmVhZC1xdWlyazogU3BlY2lmeSB0aGF0IHRoZSB0cmY3OTcwYSBiZWluZyB1c2VkIGhhcyB0aGUKKyAgIklSUSBTdGF0dXMgUmVhZCIgZXJyYXR1bS4KKy0gZW4yLXJmLXF1aXJrOiBTcGVjaWZ5IHRoYXQgdGhlIHRyZjc5NzBhIGJlaW5nIHVzZWQgaGFzIHRoZSAiRU4yIFJGIgorICBlcnJhdHVtLgorLSB0NXQtcm1iLWV4dHJhLWJ5dGUtcXVpcms6IFNwZWNpZnkgdGhhdCB0aGUgdHJmNzk3MGEgaGFzIHRoZSBlcnJhdHVtCisgIHdoZXJlIGFuIGV4dHJhIGJ5dGUgaXMgcmV0dXJuZWQgYnkgUmVhZCBNdWx0aXBsZSBCbG9jayBjb21tYW5kcyBpc3N1ZWQKKyAgdG8gVHlwZSA1IHRhZ3MuCisKK0V4YW1wbGUgKGZvciBBUk0tYmFzZWQgQmVhZ2xlQm9uZSB3aXRoIFRSRjc5NzBBIG9uIFNQSTEpOgorCismc3BpMSB7CisJc3RhdHVzID0gIm9rYXkiOworCisJbmZjQDAgeworCQljb21wYXRpYmxlID0gInRpLHRyZjc5NzBhIjsKKwkJcmVnID0gPDA+OworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JnRyZjc5NzBhX2RlZmF1bHQ+OworCQlzcGktbWF4LWZyZXF1ZW5jeSA9IDwyMDAwMDAwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzI+OworCQlpbnRlcnJ1cHRzID0gPDE0IDA+OworCQl0aSxlbmFibGUtZ3Bpb3MgPSA8JmdwaW8yIDIgR1BJT19BQ1RJVkVfTE9XPiwKKwkJCQkgIDwmZ3BpbzIgNSBHUElPX0FDVElWRV9MT1c+OworCQl2aW4tc3VwcGx5ID0gPCZsZG8zX3JlZz47CisJCXZpbi12b2x0YWdlLW92ZXJyaWRlID0gPDUwMDAwMDA+OworCQlhdXRvc3VzcGVuZC1kZWxheSA9IDwzMDAwMD47CisJCWlycS1zdGF0dXMtcmVhZC1xdWlyazsKKwkJZW4yLXJmLXF1aXJrOworCQl0NXQtcm1iLWV4dHJhLWJ5dGUtcXVpcms7CisJCXN0YXR1cyA9ICJva2F5IjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGxwYzE4NTAtZHdtYWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsbHBjMTg1MC1kd21hYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VkYmExMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGxwYzE4NTAtZHdtYWMudHh0CkBAIC0wLDAgKzEsMjAgQEAKKyogTlhQIExQQzE4NTAgR01BQyBldGhlcm5ldCBjb250cm9sbGVyCisKK1RoaXMgZGV2aWNlIGlzIGEgcGxhdGZvcm0gZ2x1ZSBsYXllciBmb3Igc3RtbWFjLgorUGxlYXNlIHNlZSBzdG1tYWMudHh0IGZvciB0aGUgb3RoZXIgdW5jaGFuZ2VkIHByb3BlcnRpZXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiAgU2hvdWxkIGNvbnRhaW4gIm54cCxscGMxODUwLWR3bWFjIgorCitFeGFtcGxlczoKKworbWFjOiBldGhlcm5ldEA0MDAxMDAwMCB7CisJY29tcGF0aWJsZSA9ICJueHAsbHBjMTg1MC1kd21hYyIsICJzbnBzLGR3bWFjLTMuNjExIiwgInNucHMsZHdtYWMiOworCXJlZyA9IDwweDQwMDEwMDAwIDB4MjAwMD47CisJaW50ZXJydXB0cyA9IDw1PjsKKwlpbnRlcnJ1cHQtbmFtZXMgPSAibWFjaXJxIjsKKwljbG9ja3MgPSA8JmNjdTEgQ0xLX0NQVV9FVEhFUk5FVD47CisJY2xvY2stbmFtZXMgPSAic3RtbWFjZXRoIjsKKwlyZXNldHMgPSA8JnJndSAyMj47CisJcmVzZXQtbmFtZXMgPSAic3RtbWFjZXRoIjsKK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvb3BlbmNvcmVzLWV0aG9jLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvb3BlbmNvcmVzLWV0aG9jLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGMxMjdjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9vcGVuY29yZXMtZXRob2MudHh0CkBAIC0wLDAgKzEsMjIgQEAKKyogT3BlbkNvcmVzIE1BQyAxMC8xMDAgTWJwcworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgIm9wZW5jb3JlcyxldGhvYyIuCistIHJlZzogdHdvIG1lbW9yeSByZWdpb25zIChhZGRyZXNzIGFuZCBsZW5ndGgpLAorICBmaXJzdCByZWdpb24gaXMgZm9yIHRoZSBkZXZpY2UgcmVnaXN0ZXJzIGFuZCBkZXNjcmlwdG9yIHJpbmdzLAorICBzZWNvbmQgaXMgZm9yIHRoZSBkZXZpY2UgcGFja2V0IG1lbW9yeS4KKy0gaW50ZXJydXB0czogaW50ZXJydXB0IGZvciB0aGUgZGV2aWNlLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjbG9ja3M6IHBoYW5kbGUgdG8gcmVmZXIgdG8gdGhlIGNsayB1c2VkIGFzIHBlcgorICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CisKK0V4YW1wbGVzOgorCisJZW5ldDA6IGV0aG9jQGZkMDMwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJvcGVuY29yZXMsZXRob2MiOworCQlyZWcgPSA8MHhmZDAzMDAwMCAweDQwMDAgMHhmZDgwMDAwMCAweDQwMDA+OworCQlpbnRlcnJ1cHRzID0gPDE+OworCQlsb2NhbC1tYWMtYWRkcmVzcyA9IFswMCA1MCBjMiAxMyA2ZiAwMF07CisJCWNsb2NrcyA9IDwmb3NjPjsKKyAgICAgICAgfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGh5LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcGh5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjVlMTY1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9waHkudHh0CkBAIC0wLDAgKzEsNDMgQEAKK1BIWSBub2RlcworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgLSBpbnRlcnJ1cHRzIDogPGEgYj4gd2hlcmUgYSBpcyB0aGUgaW50ZXJydXB0IG51bWJlciBhbmQgYiBpcyBhCisgICBmaWVsZCB0aGF0IHJlcHJlc2VudHMgYW4gZW5jb2Rpbmcgb2YgdGhlIHNlbnNlIGFuZCBsZXZlbAorICAgaW5mb3JtYXRpb24gZm9yIHRoZSBpbnRlcnJ1cHQuICBUaGlzIHNob3VsZCBiZSBlbmNvZGVkIGJhc2VkIG9uCisgICB0aGUgaW5mb3JtYXRpb24gaW4gc2VjdGlvbiAyKSBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgaW50ZXJydXB0CisgICBjb250cm9sbGVyIHlvdSBoYXZlLgorIC0gaW50ZXJydXB0LXBhcmVudCA6IHRoZSBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgdGhhdAorICAgc2VydmljZXMgaW50ZXJydXB0cyBmb3IgdGhpcyBkZXZpY2UuCisgLSByZWcgOiBUaGUgSUQgbnVtYmVyIGZvciB0aGUgcGh5LCB1c3VhbGx5IGEgc21hbGwgaW50ZWdlcgorCitPcHRpb25hbCBQcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IENvbXBhdGlibGUgbGlzdCwgbWF5IGNvbnRhaW4KKyAgImV0aGVybmV0LXBoeS1pZWVlODAyLjMtYzIyIiBvciAiZXRoZXJuZXQtcGh5LWllZWU4MDIuMy1jNDUiIGZvcgorICBQSFlzIHRoYXQgaW1wbGVtZW50IElFRUU4MDIuMyBjbGF1c2UgMjIgb3IgSUVFRTgwMi4zIGNsYXVzZSA0NQorICBzcGVjaWZpY2F0aW9ucy4gSWYgbmVpdGhlciBvZiB0aGVzZSBhcmUgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBpcyB0bworICBhc3N1bWUgY2xhdXNlIDIyLiBUaGUgY29tcGF0aWJsZSBsaXN0IG1heSBhbHNvIGNvbnRhaW4gb3RoZXIKKyAgZWxlbWVudHMuCisKKyAgSWYgdGhlIHBoeSdzIGlkZW50aWZpZXIgaXMga25vd24gdGhlbiB0aGUgbGlzdCBtYXkgY29udGFpbiBhbiBlbnRyeQorICBvZiB0aGUgZm9ybTogImV0aGVybmV0LXBoeS1pZEFBQUEuQkJCQiIgd2hlcmUKKyAgICAgQUFBQSAtIFRoZSB2YWx1ZSBvZiB0aGUgMTYgYml0IFBoeSBJZGVudGlmaWVyIDEgcmVnaXN0ZXIgYXMKKyAgICAgICAgICAgIDQgaGV4IGRpZ2l0cy4gVGhpcyBpcyB0aGUgY2hpcCB2ZW5kb3IgT1VJIGJpdHMgMzoxOAorICAgICBCQkJCIC0gVGhlIHZhbHVlIG9mIHRoZSAxNiBiaXQgUGh5IElkZW50aWZpZXIgMiByZWdpc3RlciBhcworICAgICAgICAgICAgNCBoZXggZGlnaXRzLiBUaGlzIGlzIHRoZSBjaGlwIHZlbmRvciBPVUkgYml0cyAxOToyNCwKKyAgICAgICAgICAgIGZvbGxvd2VkIGJ5IDEwIGJpdHMgb2YgYSB2ZW5kb3Igc3BlY2lmaWMgSUQuCisKKy0gbWF4LXNwZWVkOiBNYXhpbXVtIFBIWSBzdXBwb3J0ZWQgc3BlZWQgKDEwLCAxMDAsIDEwMDAuLi4pCisKKy0gYnJva2VuLXR1cm4tYXJvdW5kOiBJZiBzZXQsIGluZGljYXRlcyB0aGUgUEhZIGRldmljZSBkb2VzIG5vdCBjb3JyZWN0bHkKKyAgcmVsZWFzZSB0aGUgdHVybiBhcm91bmQgbGluZSBsb3cgYXQgdGhlIGVuZCBvZiBhIE1ESU8gdHJhbnNhY3Rpb24uCisKK0V4YW1wbGU6CisKK2V0aGVybmV0LXBoeUAwIHsKKwljb21wYXRpYmxlID0gImV0aGVybmV0LXBoeS1pZDAxNDEuMGU5MCIsICJldGhlcm5ldC1waHktaWVlZTgwMi4zLWMyMiI7CisJaW50ZXJydXB0LXBhcmVudCA9IDw0MDAwMD47CisJaW50ZXJydXB0cyA9IDwzNSAxPjsKKwlyZWcgPSA8MD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY2EtcWNhNzAwMC1zcGkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9xY2EtcWNhNzAwMC1zcGkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3NDk4OWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3FjYS1xY2E3MDAwLXNwaS50eHQKQEAgLTAsMCArMSw0NyBAQAorKiBRdWFsY29tbSBRQ0E3MDAwIChFdGhlcm5ldCBvdmVyIFNQSSBwcm90b2NvbCkKKworTm90ZTogVGhlIFFDQTcwMDAgaXMgdXNlYWJsZSBhcyBhIFNQSSBkZXZpY2UuIEluIHRoaXMgY2FzZSBpdCBtdXN0IGJlIGRlZmluZWQKK2FzIGEgY2hpbGQgb2YgYSBTUEkgbWFzdGVyIGluIHRoZSBkZXZpY2UgdHJlZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAicWNhLHFjYTcwMDAiCistIHJlZyA6IFNob3VsZCBzcGVjaWZ5IHRoZSBTUEkgY2hpcCBzZWxlY3QKKy0gaW50ZXJydXB0cyA6IFRoZSBmaXJzdCBjZWxsIHNob3VsZCBzcGVjaWZ5IHRoZSBpbmRleCBvZiB0aGUgc291cmNlIGludGVycnVwdAorICBhbmQgdGhlIHNlY29uZCBjZWxsIHNob3VsZCBzcGVjaWZ5IHRoZSB0cmlnZ2VyIHR5cGUgYXMgcmlzaW5nIGVkZ2UKKy0gc3BpLWNwaGEgOiBNdXN0IGJlIHNldAorLSBzcGktY3BvbDogTXVzdCBiZSBzZXQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gaW50ZXJydXB0LXBhcmVudCA6IFNwZWNpZnkgdGhlIHBIYW5kbGUgb2YgdGhlIHNvdXJjZSBpbnRlcnJ1cHQKKy0gc3BpLW1heC1mcmVxdWVuY3kgOiBNYXhpbXVtIGZyZXF1ZW5jeSBvZiB0aGUgU1BJIGJ1cyB0aGUgY2hpcCBjYW4gb3BlcmF0ZSBhdC4KKyAgTnVtYmVycyBzbWFsbGVyIHRoYW4gMTAwMDAwMCBvciBncmVhdGVyIHRoYW4gMTYwMDAwMDAgYXJlIGludmFsaWQuIE1pc3NpbmcKKyAgdGhlIHByb3BlcnR5IHdpbGwgc2V0IHRoZSBTUEkgZnJlcXVlbmN5IHRvIDgwMDAwMDAgSGVydHouCistIGxvY2FsLW1hYy1hZGRyZXNzOiA2IGJ5dGVzLCBNQUMgYWRkcmVzcworLSBxY2EsbGVnYWN5LW1vZGUgOiBTZXQgdGhlIFNQSSBkYXRhIHRyYW5zZmVyIG9mIHRoZSBRQ0E3MDAwIHRvIGxlZ2FjeSBtb2RlLgorICBJbiB0aGlzIG1vZGUgdGhlIFNQSSBtYXN0ZXIgbXVzdCB0b2dnbGUgdGhlIGNoaXAgc2VsZWN0IGJldHdlZW4gZWFjaCBkYXRhCisgIHdvcmQuIEluIGJ1cnN0IG1vZGUgdGhlc2UgZ2FwcyBhcmVuJ3QgbmVjZXNzYXJ5LCB3aGljaCBpcyBmYXN0ZXIuCisgIFRoaXMgc2V0dGluZyBkZXBlbmRzIG9uIGhvdyB0aGUgUUNBNzAwMCBpcyBzZXR1cCB2aWEgR1BJTyBwaW4gc3RyYXBwaW5nLgorICBJZiB0aGUgcHJvcGVydHkgaXMgbWlzc2luZyB0aGUgZHJpdmVyIGRlZmF1bHRzIHRvIGJ1cnN0IG1vZGUuCisKK0V4YW1wbGU6CisKKy8qIEZyZWVzY2FsZSBpLk1YMjggU1BJIG1hc3RlciovCitzc3AyOiBzcGlAODAwMTQwMDAgeworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDA+OworCWNvbXBhdGlibGUgPSAiZnNsLGlteDI4LXNwaSI7CisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwlwaW5jdHJsLTAgPSA8JnNwaTJfcGluc19hPjsKKwlzdGF0dXMgPSAib2theSI7CisKKwlxY2E3MDAwOiBldGhlcm5ldEAwIHsKKwkJY29tcGF0aWJsZSA9ICJxY2EscWNhNzAwMCI7CisJCXJlZyA9IDwweDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvMz47ICAgICAgLyogR1BJTyBCYW5rIDMgKi8KKwkJaW50ZXJydXB0cyA9IDwyNSAweDE+OyAgICAgICAgICAgIC8qIEluZGV4OiAyNSwgcmlzaW5nIGVkZ2UgKi8KKwkJc3BpLWNwaGE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQSSBtb2RlOiBDUEhBPTEgKi8KKwkJc3BpLWNwb2w7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQSSBtb2RlOiBDUE9MPTEgKi8KKwkJc3BpLW1heC1mcmVxdWVuY3kgPSA8ODAwMDAwMD47ICAgIC8qIGZyZXE6IDggTUh6ICovCisJCWxvY2FsLW1hYy1hZGRyZXNzID0gWyBBMCBCMCBDMCBEMCBFMCBGMCBdOworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJhdmIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLHJhdmIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ODZmM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMscmF2Yi50eHQKQEAgLTAsMCArMSwxMDMgQEAKKyogUmVuZXNhcyBFbGVjdHJvbmljcyBFdGhlcm5ldCBBVkIKKworVGhpcyBmaWxlIHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIHdoYXQgdGhlIGRldmljZSBub2RlIGZvciB0aGUgRXRoZXJuZXQgQVZCCitpbnRlcmZhY2UgY29udGFpbnMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJyZW5lc2FzLGV0aGVyYXZiLXI4YTc3OTAiIGlmIHRoZSBkZXZpY2UgaXMgYSBwYXJ0IG9mIFI4QTc3OTAgU29DLgorCSAgICAgICJyZW5lc2FzLGV0aGVyYXZiLXI4YTc3OTQiIGlmIHRoZSBkZXZpY2UgaXMgYSBwYXJ0IG9mIFI4QTc3OTQgU29DLgorCSAgICAgICJyZW5lc2FzLGV0aGVyYXZiLXI4YTc3OTUiIGlmIHRoZSBkZXZpY2UgaXMgYSBwYXJ0IG9mIFI4QTc3OTUgU29DLgorLSByZWc6IG9mZnNldCBhbmQgbGVuZ3RoIG9mICgxKSB0aGUgcmVnaXN0ZXIgYmxvY2sgYW5kICgyKSB0aGUgc3RyZWFtIGJ1ZmZlci4KKy0gaW50ZXJydXB0czogQSBsaXN0IG9mIGludGVycnVwdC1zcGVjaWZpZXJzLCBvbmUgZm9yIGVhY2ggZW50cnkgaW4KKwkgICAgICBpbnRlcnJ1cHQtbmFtZXMuCisJICAgICAgSWYgaW50ZXJydXB0LW5hbWVzIGlzIG5vdCBwcmVzZW50LCBhbiBpbnRlcnJ1cHQgc3BlY2lmaWVyCisJICAgICAgZm9yIGEgc2luZ2xlIG11eGVkIGludGVycnVwdC4KKy0gcGh5LW1vZGU6IHNlZSBldGhlcm5ldC50eHQgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCistIHBoeS1oYW5kbGU6IHNlZSBldGhlcm5ldC50eHQgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCistICNhZGRyZXNzLWNlbGxzOiBudW1iZXIgb2YgYWRkcmVzcyBjZWxscyBmb3IgdGhlIE1ESU8gYnVzLCBtdXN0IGJlIGVxdWFsIHRvIDEuCistICNzaXplLWNlbGxzOiBudW1iZXIgb2Ygc2l6ZSBjZWxscyBvbiB0aGUgTURJTyBidXMsIG11c3QgYmUgZXF1YWwgdG8gMC4KKy0gY2xvY2tzOiBjbG9jayBwaGFuZGxlIGFuZCBzcGVjaWZpZXIgcGFpci4KKy0gcGluY3RybC0wOiBwaGFuZGxlLCByZWZlcnJpbmcgdG8gYSBkZWZhdWx0IHBpbiBjb25maWd1cmF0aW9uIG5vZGUuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGludGVycnVwdC1wYXJlbnQ6IHRoZSBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgdGhhdCBzZXJ2aWNlcworCQkgICAgaW50ZXJydXB0cyBmb3IgdGhpcyBkZXZpY2UuCistIGludGVycnVwdC1uYW1lczogQSBsaXN0IG9mIGludGVycnVwdCBuYW1lcy4KKwkJICAgRm9yIHRoZSBSOEE3Nzk1IFNvQyB0aGlzIHByb3BlcnR5IGlzIG1hbmRhdG9yeTsKKwkJICAgaXQgc2hvdWxkIGluY2x1ZGUgb25lIGVudHJ5IHBlciBjaGFubmVsLCBuYW1lZCAiY2gldSIsCisJCSAgIHdoZXJlICV1IGlzIHRoZSBjaGFubmVsIG51bWJlciByYW5naW5nIGZyb20gMCB0byAyNC4KKwkJICAgRm9yIG90aGVyIFNvQ3MgdGhpcyBwcm9wZXJ0eSBpcyBvcHRpb25hbDsgaWYgcHJlc2VudAorCQkgICBpdCBzaG91bGQgY29udGFpbiAibXV4IiBmb3IgYSBzaW5nbGUgbXV4ZWQgaW50ZXJydXB0LgorLSBwaW5jdHJsLW5hbWVzOiBwaW4gY29uZmlndXJhdGlvbiBzdGF0ZSBuYW1lICgiZGVmYXVsdCIpLgorLSByZW5lc2FzLG5vLWV0aGVyLWxpbms6IGJvb2xlYW4sIHNwZWNpZnkgd2hlbiBhIGJvYXJkIGRvZXMgbm90IHByb3ZpZGUgYSBwcm9wZXIKKwkJCSBBVkJfTElOSyBzaWduYWwuCistIHJlbmVzYXMsZXRoZXItbGluay1hY3RpdmUtbG93OiBib29sZWFuLCBzcGVjaWZ5IHdoZW4gdGhlIEFWQl9MSU5LIHNpZ25hbCBpcworCQkJCSBhY3RpdmUtbG93IGluc3RlYWQgb2Ygbm9ybWFsIGFjdGl2ZS1oaWdoLgorCitFeGFtcGxlOgorCisJZXRoZXJuZXRAZTY4MDAwMDAgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMsZXRoZXJhdmItcjhhNzc5NSI7CisJCXJlZyA9IDwwIDB4ZTY4MDAwMDAgMCAweDgwMD4sIDwwIDB4ZTZhMDAwMDAgMCAweDEwMDAwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ2ljPjsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDM5IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8R0lDX1NQSSA0MCBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKKwkJCSAgICAgPEdJQ19TUEkgNDEgSVJRX1RZUEVfTEVWRUxfSElHSD4sCisJCQkgICAgIDxHSUNfU1BJIDQyIElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8R0lDX1NQSSA0MyBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKKwkJCSAgICAgPEdJQ19TUEkgNDQgSVJRX1RZUEVfTEVWRUxfSElHSD4sCisJCQkgICAgIDxHSUNfU1BJIDQ1IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8R0lDX1NQSSA0NiBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKKwkJCSAgICAgPEdJQ19TUEkgNDcgSVJRX1RZUEVfTEVWRUxfSElHSD4sCisJCQkgICAgIDxHSUNfU1BJIDQ4IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8R0lDX1NQSSA0OSBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKKwkJCSAgICAgPEdJQ19TUEkgNTAgSVJRX1RZUEVfTEVWRUxfSElHSD4sCisJCQkgICAgIDxHSUNfU1BJIDUxIElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8R0lDX1NQSSA1MiBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKKwkJCSAgICAgPEdJQ19TUEkgNTMgSVJRX1RZUEVfTEVWRUxfSElHSD4sCisJCQkgICAgIDxHSUNfU1BJIDU0IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8R0lDX1NQSSA1NSBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKKwkJCSAgICAgPEdJQ19TUEkgNTYgSVJRX1RZUEVfTEVWRUxfSElHSD4sCisJCQkgICAgIDxHSUNfU1BJIDU3IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8R0lDX1NQSSA1OCBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKKwkJCSAgICAgPEdJQ19TUEkgNTkgSVJRX1RZUEVfTEVWRUxfSElHSD4sCisJCQkgICAgIDxHSUNfU1BJIDYwIElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8R0lDX1NQSSA2MSBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKKwkJCSAgICAgPEdJQ19TUEkgNjIgSVJRX1RZUEVfTEVWRUxfSElHSD4sCisJCQkgICAgIDxHSUNfU1BJIDYzIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQlpbnRlcnJ1cHQtbmFtZXMgPSAiY2gwIiwgImNoMSIsICJjaDIiLCAiY2gzIiwKKwkJCQkgICJjaDQiLCAiY2g1IiwgImNoNiIsICJjaDciLAorCQkJCSAgImNoOCIsICJjaDkiLCAiY2gxMCIsICJjaDExIiwKKwkJCQkgICJjaDEyIiwgImNoMTMiLCAiY2gxNCIsICJjaDE1IiwKKwkJCQkgICJjaDE2IiwgImNoMTciLCAiY2gxOCIsICJjaDE5IiwKKwkJCQkgICJjaDIwIiwgImNoMjEiLCAiY2gyMiIsICJjaDIzIiwKKwkJCQkgICJjaDI0IjsKKwkJY2xvY2tzID0gPCZtc3RwOF9jbGtzIFI4QTc3OTVfQ0xLX0VUSEVSQVZCPjsKKwkJcG93ZXItZG9tYWlucyA9IDwmY3BnX2Nsb2Nrcz47CisJCXBoeS1tb2RlID0gInJnbWlpLWlkIjsKKwkJcGh5LWhhbmRsZSA9IDwmcGh5MD47CisKKwkJcGluY3RybC0wID0gPCZldGhlcl9waW5zPjsKKwkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwkJcmVuZXNhcyxuby1ldGhlci1saW5rOworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJcGh5MDogZXRoZXJuZXQtcGh5QDAgeworCQkJcnhjLXNrZXctcHMgPSA8OTAwPjsKKwkJCXJ4ZHYtc2tldy1wcyA9IDwwPjsKKwkJCXJ4ZDAtc2tldy1wcyA9IDwwPjsKKwkJCXJ4ZDEtc2tldy1wcyA9IDwwPjsKKwkJCXJ4ZDItc2tldy1wcyA9IDwwPjsKKwkJCXJ4ZDMtc2tldy1wcyA9IDwwPjsKKwkJCXR4Yy1za2V3LXBzID0gPDkwMD47CisJCQl0eGVuLXNrZXctcHMgPSA8MD47CisJCQl0eGQwLXNrZXctcHMgPSA8MD47CisJCQl0eGQxLXNrZXctcHMgPSA8MD47CisJCQl0eGQyLXNrZXctcHMgPSA8MD47CisJCQl0eGQzLXNrZXctcHMgPSA8MD47CisJCQlyZWcgPSA8MD47CisJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvMj47CisJCQlpbnRlcnJ1cHRzID0gPDExIElSUV9UWVBFX0xFVkVMX0xPVz47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcm9ja2NoaXAtZHdtYWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yb2NrY2hpcC1kd21hYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNlYWM3YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcm9ja2NoaXAtZHdtYWMudHh0CkBAIC0wLDAgKzEsNjggQEAKK1JvY2tjaGlwIFNvQyBSSzMyODggMTAvMTAwLzEwMDAgRXRoZXJuZXQgZHJpdmVyKEdNQUMpCisKK1RoZSBkZXZpY2Ugbm9kZSBoYXMgZm9sbG93aW5nIHByb3BlcnRpZXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiBDYW4gYmUgb25lIG9mICJyb2NrY2hpcCxyazMyODgtZ21hYyIsICJyb2NrY2hpcCxyazMzNjgtZ21hYyIKKyAtIHJlZzogYWRkcmVzc2VzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldHMgZm9yIHRoZSBkZXZpY2UuCisgLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiB0aGUgR01BQyBpbnRlcnJ1cHRzLgorIC0gaW50ZXJydXB0LW5hbWVzOiBTaG91bGQgY29udGFpbiB0aGUgaW50ZXJydXB0IG5hbWVzICJtYWNpcnEiLgorIC0gcm9ja2NoaXAsZ3JmOiBwaGFuZGxlIHRvIHRoZSBzeXNjb24gZ3JmIHVzZWQgdG8gY29udHJvbCBzcGVlZCBhbmQgbW9kZS4KKyAtIGNsb2NrczogPCZjcnUgU0NMS19NQUM+OiBjbG9jayBzZWxlY3RvciBmb3IgbWFpbiBjbG9jaywgZnJvbSBQTEwgb3IgUEhZLgorCSAgIDwmY3J1IFNDTEtfTUFDX1BMTD46IFBMTCBjbG9jayBmb3IgU0NMS19NQUMKKwkgICA8JmNydSBTQ0xLX01BQ19SWD46IGNsb2NrIGdhdGUgZm9yIFJYCisJICAgPCZjcnUgU0NMS19NQUNfVFg+OiBjbG9jayBnYXRlIGZvciBUWAorCSAgIDwmY3J1IFNDTEtfTUFDUkVGPjogY2xvY2sgZ2F0ZSBmb3IgUk1JSSByZWZlcmNlIGNsb2NrCisJICAgPCZjcnUgU0NMS19NQUNSRUZfT1VUPiBjbG9jayBnYXRlIGZvciBSTUlJIHJlZmVyZW5jZSBjbG9jayBvdXRwdXQKKwkgICA8JmNydSBBQ0xLX0dNQUM+OiBBWEkgY2xvY2sgZ2F0ZSBmb3IgR01BQworCSAgIDwmY3J1IFBDTEtfR01BQz46IEFQQiBjbG9jayBnYXRlIGZvciBHTUFDCisgLSBjbG9jay1uYW1lczogT25lIG5hbWUgZm9yIGVhY2ggZW50cnkgaW4gdGhlIGNsb2NrcyBwcm9wZXJ0eS4KKyAtIHBoeS1tb2RlOiBTZWUgZXRoZXJuZXQudHh0IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorIC0gcGluY3RybC1uYW1lczogTmFtZXMgY29ycmVzcG9uZGluZyB0byB0aGUgbnVtYmVyZWQgcGluY3RybCBzdGF0ZXMuCisgLSBwaW5jdHJsLTA6IHBpbi1jb250cm9sIG1vZGUuIGNhbiBiZSA8JnJnbWlpX3BpbnM+IG9yIDwmcm1paV9waW5zPi4KKyAtIGNsb2NrX2luX291dDogRm9yIFJHTUlJLCBpdCBtdXN0IGJlICJpbnB1dCIsIG1lYW5zIG1haW4gY2xvY2soMTI1TUh6KQorICAgaXMgbm90IHNvdXJjZWQgZnJvbSBTb0MncyBQTEwsIGJ1dCBpbnB1dCBmcm9tIFBIWTsgRm9yIFJNSUksICJpbnB1dCIgbWVhbnMKKyAgIFBIWSBwcm92aWRlcyB0aGUgcmVmZXJlbmNlIGNsb2NrKDUwTUh6KSwgIm91dHB1dCIgbWVhbnMgR01BQyBwcm92aWRlcyB0aGUKKyAgIHJlZmVyZW5jZSBjbG9jay4KKyAtIHNucHMscmVzZXQtZ3BpbyAgICAgICBncGlvIG51bWJlciBmb3IgcGh5IHJlc2V0LgorIC0gc25wcyxyZXNldC1hY3RpdmUtbG93IGJvb2xlYW4gZmxhZyB0byBpbmRpY2F0ZSBpZiBwaHkgcmVzZXQgaXMgYWN0aXZlIGxvdy4KKyAtIGFzc2lnbmVkLWNsb2NrczogbWFpbiBjbG9jaywgc2hvdWxkIGJlIDwmY3J1IFNDTEtfTUFDPjsKKyAtIGFzc2lnbmVkLWNsb2NrLXBhcmVudHMgPSBwYXJlbnQgb2YgbWFpbiBjbG9jay4KKyAgIGNhbiBiZSA8JmV4dF9nbWFjPiBvciA8JmNydSBTQ0xLX01BQ19QTEw+LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorIC0gdHhfZGVsYXk6IERlbGF5IHZhbHVlIGZvciBUWEQgdGltaW5nLiBSYW5nZSB2YWx1ZSBpcyAwfjB4N0YsIDB4MzAgYXMgZGVmYXVsdC4KKyAtIHJ4X2RlbGF5OiBEZWxheSB2YWx1ZSBmb3IgUlhEIHRpbWluZy4gUmFuZ2UgdmFsdWUgaXMgMH4weDdGLCAweDEwIGFzIGRlZmF1bHQuCisgLSBwaHktc3VwcGx5OiBwaGFuZGxlIHRvIGEgcmVndWxhdG9yIGlmIHRoZSBQSFkgbmVlZHMgb25lCisKK0V4YW1wbGU6CisKK2dtYWM6IGV0aGVybmV0QGZmMjkwMDAwIHsKKwljb21wYXRpYmxlID0gInJvY2tjaGlwLHJrMzI4OC1nbWFjIjsKKwlyZWcgPSA8MHhmZjI5MDAwMCAweDEwMDAwPjsKKwlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMjcgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJaW50ZXJydXB0LW5hbWVzID0gIm1hY2lycSI7CisJcm9ja2NoaXAsZ3JmID0gPCZncmY+OworCWNsb2NrcyA9IDwmY3J1IFNDTEtfTUFDPiwKKwkJPCZjcnUgU0NMS19NQUNfUlg+LCA8JmNydSBTQ0xLX01BQ19UWD4sCisJCTwmY3J1IFNDTEtfTUFDUkVGPiwgPCZjcnUgU0NMS19NQUNSRUZfT1VUPiwKKwkJPCZjcnUgQUNMS19HTUFDPiwgPCZjcnUgUENMS19HTUFDPjsKKwljbG9jay1uYW1lcyA9ICJzdG1tYWNldGgiLAorCQkibWFjX2Nsa19yeCIsICJtYWNfY2xrX3R4IiwKKwkJImNsa19tYWNfcmVmIiwgImNsa19tYWNfcmVmb3V0IiwKKwkJImFjbGtfbWFjIiwgInBjbGtfbWFjIjsKKwlwaHktbW9kZSA9ICJyZ21paSI7CisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwlwaW5jdHJsLTAgPSA8JnJnbWlpX3BpbnMgLyomcm1paV9waW5zKi8+OworCisJY2xvY2tfaW5fb3V0ID0gImlucHV0IjsKKwlzbnBzLHJlc2V0LWdwaW8gPSA8JmdwaW80IDcgMD47CisJc25wcyxyZXNldC1hY3RpdmUtbG93OworCisJYXNzaWduZWQtY2xvY2tzID0gPCZjcnUgU0NMS19NQUM+OworCWFzc2lnbmVkLWNsb2NrLXBhcmVudHMgPSA8JmV4dF9nbWFjPjsKKwl0eF9kZWxheSA9IDwweDMwPjsKKwlyeF9kZWxheSA9IDwweDEwPjsKKworCXN0YXR1cyA9ICJvayI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zYW1zdW5nLXN4Z2JlLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc2Ftc3VuZy1zeGdiZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg4YzI1MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc2Ftc3VuZy1zeGdiZS50eHQKQEAgLTAsMCArMSw1MiBAQAorKiBTYW1zdW5nIDEwRyBFdGhlcm5ldCBkcml2ZXIgKFNYR0JFKQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgInNhbXN1bmcsc3hnYmUtdjIuMGEiCistIHJlZzogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKy0gaW50ZXJydXB0LXBhcmVudDogU2hvdWxkIGJlIHRoZSBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIKKyAgdGhhdCBzZXJ2aWNlcyBpbnRlcnJ1cHRzIGZvciB0aGlzIGRldmljZQorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiB0aGUgU1hHQkUgaW50ZXJydXB0cworICBUaGVzZSBpbnRlcnJ1cHRzIGFyZSBvcmRlcmVkIGJ5IGZpeGVkIGFuZCBmb2xsb3dzIHZhcmlhYmxlCisgIHRyYXNtaXQgRE1BIGludGVycnVwdHMsIHJlY2VpdmUgRE1BIGludGVycnVwdHMgYW5kIGxwaSBpbnRlcnJ1cHQuCisgIGluZGV4IDAgLSB0aGlzIGlzIGZpeGVkIGNvbW1vbiBpbnRlcnJ1cHQgb2YgU1hHQkUgYW5kIGl0IGlzIGFsd2F5cworICBhdmFpbGFibGUuCisgIGluZGV4IDEgdG8gMjUgLSA4IHZhcmlhYmxlIHRyYXNtaXQgaW50ZXJydXB0cywgdmFyaWFibGUgMTYgcmVjZWl2ZSBpbnRlcnJ1cHRzCisgIGFuZCAxIG9wdGlvbmFsIGxwaSBpbnRlcnJ1cHQuCistIHBoeS1tb2RlOiBTdHJpbmcsIG9wZXJhdGlvbiBtb2RlIG9mIHRoZSBQSFkgaW50ZXJmYWNlLgorICBTdXBwb3J0ZWQgdmFsdWVzIGFyZTogInNnbWlpIiwgInhnbWlpIi4KKy0gc2Ftc3VuZyxwYmw6IEludGVnZXIsIFByb2dyYW1tYWJsZSBCdXJzdCBMZW5ndGguCisgIFN1cHBvcnRlZCB2YWx1ZXMgYXJlIDEsIDIsIDQsIDgsIDE2LCBvciAzMi4KKy0gc2Ftc3VuZyxidXJzdC1tYXA6IEludGVnZXIsIFByb2dyYW0gdGhlIHBvc3NpYmxlIGJ1cnN0cyBzdXBwb3J0ZWQgYnkgc3hnYmUKKyAgVGhpcyBpcyBhbiBpbnRlZ2VyIGFuZCByZXByZXNlbnRzIGFsbG93YWJsZSBETUEgYnVyc3RzIHdoZW4gZml4ZWQgYnVyc3QuCisgIEFsbG93YWJsZSByYW5nZSBpcyAweDAxLTB4M0YuIFdoZW4gdGhpcyBmaWVsZCBpcyBzZXQgZml4ZWQgYnVyc3QgaXMgZW5hYmxlZC4KKyAgV2hlbiBmaXhlZCBsZW5ndGggaXMgbmVlZGVkIGZvciBidXJzdCBtb2RlLCBpdCBjYW4gYmUgc2V0IHdpdGhpbiBhbGxvd2FibGUKKyAgcmFuZ2UuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIG1hYy1hZGRyZXNzOiA2IGJ5dGVzLCBtYWMgYWRkcmVzcworLSBtYXgtZnJhbWUtc2l6ZTogTWF4aW11bSBUcmFuc2ZlciBVbml0IChJRUVFIGRlZmluZWQgTVRVKSwgcmF0aGVyCisJCSAgdGhhbiB0aGUgbWF4aW11bSBmcmFtZSBzaXplLgorCitFeGFtcGxlOgorCisJYWxpYXNlcyB7CisJCWV0aGVybmV0MCA9IDwmc3hnYmUwPjsKKwl9OworCisJc3hnYmUwOiBldGhlcm5ldEAxYTA0MDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxzeGdiZS12Mi4wYSI7CisJCXJlZyA9IDwwIDB4MWEwNDAwMDAgMCAweDEwMDAwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ2ljPjsKKwkJaW50ZXJydXB0cyA9IDwwIDIwOSA0PiwgPDAgMTg1IDQ+LCA8MCAxODYgND4sIDwwIDE4NyA0PiwKKwkJCSAgICAgPDAgMTg4IDQ+LCA8MCAxODkgND4sIDwwIDE5MCA0PiwgPDAgMTkxIDQ+LAorCQkJICAgICA8MCAxOTIgND4sIDwwIDE5MyA0PiwgPDAgMTk0IDQ+LCA8MCAxOTUgND4sCisJCQkgICAgIDwwIDE5NiA0PiwgPDAgMTk3IDQ+LCA8MCAxOTggND4sIDwwIDE5OSA0PiwKKwkJCSAgICAgPDAgMjAwIDQ+LCA8MCAyMDEgND4sIDwwIDIwMiA0PiwgPDAgMjAzIDQ+LAorCQkJICAgICA8MCAyMDQgND4sIDwwIDIwNSA0PiwgPDAgMjA2IDQ+LCA8MCAyMDcgND4sCisJCQkgICAgIDwwIDIwOCA0PiwgPDAgMjEwIDQ+OworCQlzYW1zdW5nLHBibCA9IDwweDA4PgorCQlzYW1zdW5nLGJ1cnN0LW1hcCA9IDwweDIwPgorCQltYWMtYWRkcmVzcyA9IFsgMDAgMTEgMjIgMzMgNDQgNTUgXTsgLyogRmlsbGVkIGluIGJ5IFUtQm9vdCAqLworCQltYXgtZnJhbWUtc2l6ZSA9IDw5MDAwPjsKKwkJcGh5LW1vZGUgPSAieGdtaWkiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NoX2V0aC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NoX2V0aC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY2ZWM4NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc2hfZXRoLnR4dApAQCAtMCwwICsxLDU3IEBACisqIFJlbmVzYXMgRWxlY3Ryb25pY3MgU0ggRXRoZXJNQUMKKworVGhpcyBmaWxlIHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIHdoYXQgdGhlIGRldmljZSBub2RlIGZvciB0aGUgU0ggRXRoZXJNQUMKK2ludGVyZmFjZSBjb250YWlucy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInJlbmVzYXMsZ2V0aGVyLXI4YTc3NDAiIGlmIHRoZSBkZXZpY2UgaXMgYSBwYXJ0IG9mIFI4QTc3NDAgU29DLgorCSAgICAgICJyZW5lc2FzLGV0aGVyLXI4YTc3NzgiICBpZiB0aGUgZGV2aWNlIGlzIGEgcGFydCBvZiBSOEE3Nzc4IFNvQy4KKwkgICAgICAicmVuZXNhcyxldGhlci1yOGE3Nzc5IiAgaWYgdGhlIGRldmljZSBpcyBhIHBhcnQgb2YgUjhBNzc3OSBTb0MuCisJICAgICAgInJlbmVzYXMsZXRoZXItcjhhNzc5MCIgIGlmIHRoZSBkZXZpY2UgaXMgYSBwYXJ0IG9mIFI4QTc3OTAgU29DLgorCSAgICAgICJyZW5lc2FzLGV0aGVyLXI4YTc3OTEiICBpZiB0aGUgZGV2aWNlIGlzIGEgcGFydCBvZiBSOEE3NzkxIFNvQy4KKwkgICAgICAicmVuZXNhcyxldGhlci1yOGE3NzkzIiAgaWYgdGhlIGRldmljZSBpcyBhIHBhcnQgb2YgUjhBNzc5MyBTb0MuCisJICAgICAgInJlbmVzYXMsZXRoZXItcjhhNzc5NCIgIGlmIHRoZSBkZXZpY2UgaXMgYSBwYXJ0IG9mIFI4QTc3OTQgU29DLgorCSAgICAgICJyZW5lc2FzLGV0aGVyLXI3czcyMTAwIiBpZiB0aGUgZGV2aWNlIGlzIGEgcGFydCBvZiBSN1M3MjEwMCBTb0MuCistIHJlZzogb2Zmc2V0IGFuZCBsZW5ndGggb2YgKDEpIHRoZSBFLURNQUMvZmVMaWMgcmVnaXN0ZXIgYmxvY2sgKHJlcXVpcmVkKSwKKyAgICAgICAoMikgdGhlIFRTVSByZWdpc3RlciBibG9jayAob3B0aW9uYWwpLgorLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgc3BlY2lmaWVyIGZvciB0aGUgc29sZSBpbnRlcnJ1cHQuCistIHBoeS1tb2RlOiBzZWUgZXRoZXJuZXQudHh0IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorLSBwaHktaGFuZGxlOiBzZWUgZXRoZXJuZXQudHh0IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorLSAjYWRkcmVzcy1jZWxsczogbnVtYmVyIG9mIGFkZHJlc3MgY2VsbHMgZm9yIHRoZSBNRElPIGJ1cywgbXVzdCBiZSBlcXVhbCB0byAxLgorLSAjc2l6ZS1jZWxsczogbnVtYmVyIG9mIHNpemUgY2VsbHMgb24gdGhlIE1ESU8gYnVzLCBtdXN0IGJlIGVxdWFsIHRvIDAuCistIGNsb2NrczogY2xvY2sgcGhhbmRsZSBhbmQgc3BlY2lmaWVyIHBhaXIuCistIHBpbmN0cmwtMDogcGhhbmRsZSwgcmVmZXJyaW5nIHRvIGEgZGVmYXVsdCBwaW4gY29uZmlndXJhdGlvbiBub2RlLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBpbnRlcnJ1cHQtcGFyZW50OiB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyIHRoYXQgc2VydmljZXMKKwkJICAgIGludGVycnVwdHMgZm9yIHRoaXMgZGV2aWNlLgorLSBwaW5jdHJsLW5hbWVzOiBwaW4gY29uZmlndXJhdGlvbiBzdGF0ZSBuYW1lICgiZGVmYXVsdCIpLgorLSByZW5lc2FzLG5vLWV0aGVyLWxpbms6IGJvb2xlYW4sIHNwZWNpZnkgd2hlbiBhIGJvYXJkIGRvZXMgbm90IHByb3ZpZGUgYSBwcm9wZXIKKwkJCSBFdGhlciBMSU5LIHNpZ25hbC4KKy0gcmVuZXNhcyxldGhlci1saW5rLWFjdGl2ZS1sb3c6IGJvb2xlYW4sIHNwZWNpZnkgd2hlbiB0aGUgRXRoZXIgTElOSyBzaWduYWwgaXMKKwkJCQkgYWN0aXZlLWxvdyBpbnN0ZWFkIG9mIG5vcm1hbCBhY3RpdmUtaGlnaC4KKworRXhhbXBsZSAoTGFnZXIgYm9hcmQpOgorCisJZXRoZXJuZXRAZWU3MDAwMDAgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMsZXRoZXItcjhhNzc5MCI7CisJCXJlZyA9IDwwIDB4ZWU3MDAwMDAgMCAweDQwMD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdpYz47CisJCWludGVycnVwdHMgPSA8MCAxNjIgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWNsb2NrcyA9IDwmbXN0cDhfY2xrcyBSOEE3NzkwX0NMS19FVEhFUj47CisJCXBoeS1tb2RlID0gInJtaWkiOworCQlwaHktaGFuZGxlID0gPCZwaHkxPjsKKwkJcGluY3RybC0wID0gPCZldGhlcl9waW5zPjsKKwkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwkJcmVuZXNhcyxldGhlci1saW5rLWFjdGl2ZS1sb3c7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQlwaHkxOiBldGhlcm5ldC1waHlAMSB7CisJCQlyZWcgPSA8MT47CisJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpcnFjMD47CisJCQlpbnRlcnJ1cHRzID0gPDAgSVJRX1RZUEVfTEVWRUxfTE9XPjsKKwkJCXBpbmN0cmwtMCA9IDwmcGh5MV9waW5zPjsKKwkJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc21zYy1sYW44N3h4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc21zYy1sYW44N3h4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzRlZGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbXNjLWxhbjg3eHgudHh0CkBAIC0wLDAgKzEsMjQgQEAKK1NNU0MgTEFOODd4eCBFdGhlcm5ldCBQSFkKKworU29tZSBib2FyZHMgcmVxdWlyZSBzcGVjaWFsIHR1bmluZyB2YWx1ZXMuIENvbmZpZ3VyZSB0aGVtCit0aHJvdWdoIGFuIEV0aGVybmV0IE9GIGRldmljZSBub2RlLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIHNtc2MsZGlzYWJsZS1lbmVyZ3ktZGV0ZWN0OgorICBJZiBzZXQsIGRvIG5vdCBlbmFibGUgZW5lcmd5IGRldGVjdCBtb2RlIGZvciB0aGUgU01TQyBwaHkuCisgIGRlZmF1bHQ6IGVuYWJsZSBlbmVyZ3kgZGV0ZWN0IG1vZGUKKworRXhhbXBsZXM6CitzbXNjIHBoeSB3aXRoIGRpc2FibGVkIGVuZXJneSBkZXRlY3QgbW9kZSBvbiBhbiBhbTMzNXggYmFzZWQgYm9hcmQuCismZGF2aW5jaV9tZGlvIHsKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiLCAic2xlZXAiOworCXBpbmN0cmwtMCA9IDwmZGF2aW5jaV9tZGlvX2RlZmF1bHQ+OworCXBpbmN0cmwtMSA9IDwmZGF2aW5jaV9tZGlvX3NsZWVwPjsKKwlzdGF0dXMgPSAib2theSI7CisKKwlldGhlcm5ldHBoeTA6IGV0aGVybmV0LXBoeUAwIHsKKwkJcmVnID0gPDA+OworCQlzbXNjLGRpc2FibGUtZW5lcmd5LWRldGVjdDsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc21zYy1sYW45MWMxMTEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbXNjLWxhbjkxYzExMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc3ZTE2NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc21zYy1sYW45MWMxMTEudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1NNU0MgTEFOOTFjMTExIEV0aGVybmV0IG1hYworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlID0gInNtc2MsbGFuOTFjMTExIjsKKy0gcmVnIDogcGh5c2ljYWwgYWRkcmVzcyBhbmQgc2l6ZSBvZiByZWdpc3RlcnMKKy0gaW50ZXJydXB0cyA6IGludGVycnVwdCBjb25uZWN0aW9uCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHBoeS1kZXZpY2UgOiBzZWUgZXRoZXJuZXQudHh0IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5CistIHJlZy1pby13aWR0aCA6IE1hc2sgb2Ygc2l6ZXMgKGluIGJ5dGVzKSBvZiB0aGUgSU8gYWNjZXNzZXMgdGhhdAorICBhcmUgc3VwcG9ydGVkIG9uIHRoZSBkZXZpY2UuICBWYWxpZCB2YWx1ZSBmb3IgU01TQyBMQU45MWMxMTEgYXJlCisgIDEsIDIgb3IgNC4gIElmIGl0J3Mgb21pdHRlZCBvciBpbnZhbGlkLCB0aGUgc2l6ZSB3b3VsZCBiZSAyIG1lYW5pbmcKKyAgMTYtYml0IGFjY2VzcyBvbmx5LgorLSBwb3dlci1ncGlvczogR1BJTyB0byBjb250cm9sIHRoZSBQV1JEV04gcGluCistIHJlc2V0LWdwaW9zOiBHUElPIHRvIGNvbnRyb2wgdGhlIFJFU0VUIHBpbgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbXNjOTExeC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Ntc2M5MTF4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmVkM2MxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zbXNjOTExeC50eHQKQEAgLTAsMCArMSwzNSBAQAorKiBTbWFydCBNaXhlZC1TaWduYWwgQ29ubmVjdGl2aXR5IChTTVNDKSBMQU45MTF4LzkxMnggQ29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJzbXNjLGxhbjxtb2RlbD4iLCAic21zYyxsYW45MTE1IgorLSByZWcgOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGlvIHNwYWNlIGZvciBTTVNDIExBTgorLSBpbnRlcnJ1cHRzIDogU2hvdWxkIGNvbnRhaW4gU01TQyBMQU4gaW50ZXJydXB0IGxpbmUKKy0gaW50ZXJydXB0LXBhcmVudCA6IFNob3VsZCBiZSB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyCisgIHRoYXQgc2VydmljZXMgaW50ZXJydXB0cyBmb3IgdGhpcyBkZXZpY2UKKy0gcGh5LW1vZGUgOiBTZWUgZXRoZXJuZXQudHh0IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHJlZy1zaGlmdCA6IFNwZWNpZnkgdGhlIHF1YW50aXR5IHRvIHNoaWZ0IHRoZSByZWdpc3RlciBvZmZzZXRzIGJ5CistIHJlZy1pby13aWR0aCA6IFNwZWNpZnkgdGhlIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgSU8gYWNjZXNzZXMgdGhhdAorICBzaG91bGQgYmUgcGVyZm9ybWVkIG9uIHRoZSBkZXZpY2UuICBWYWxpZCB2YWx1ZSBmb3IgU01TQyBMQU4gaXMKKyAgMiBvciA0LiAgSWYgaXQncyBvbWl0dGVkIG9yIGludmFsaWQsIHRoZSBzaXplIHdvdWxkIGJlIDIuCistIHNtc2MsaXJxLWFjdGl2ZS1oaWdoIDogSW5kaWNhdGVzIHRoZSBJUlEgcG9sYXJpdHkgaXMgYWN0aXZlLWhpZ2gKKy0gc21zYyxpcnEtcHVzaC1wdWxsIDogSW5kaWNhdGVzIHRoZSBJUlEgdHlwZSBpcyBwdXNoLXB1bGwKKy0gc21zYyxmb3JjZS1pbnRlcm5hbC1waHkgOiBGb3JjZXMgU01TQyBMQU4gY29udHJvbGxlciB0byB1c2UKKyAgaW50ZXJuYWwgUEhZCistIHNtc2MsZm9yY2UtZXh0ZXJuYWwtcGh5IDogRm9yY2VzIFNNU0MgTEFOIGNvbnRyb2xsZXIgdG8gdXNlCisgIGV4dGVybmFsIFBIWQorLSBzbXNjLHNhdmUtbWFjLWFkZHJlc3MgOiBJbmRpY2F0ZXMgdGhhdCBtYWMgYWRkcmVzcyBuZWVkcyB0byBiZSBzYXZlZAorICBiZWZvcmUgcmVzZXR0aW5nIHRoZSBjb250cm9sbGVyCisKK0V4YW1wbGVzOgorCitsYW45MjIwQGY0MDAwMDAwIHsKKwljb21wYXRpYmxlID0gInNtc2MsbGFuOTIyMCIsICJzbXNjLGxhbjkxMTUiOworCXJlZyA9IDwweGY0MDAwMDAwIDB4MjAwMDAwMD47CisJcGh5LW1vZGUgPSAibWlpIjsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvMT47CisJaW50ZXJydXB0cyA9IDwzMT47CisJcmVnLWlvLXdpZHRoID0gPDQ+OworCXNtc2MsaXJxLXB1c2gtcHVsbDsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdjLXFvcy1ldGhlcm5ldC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NucHMsZHdjLXFvcy1ldGhlcm5ldC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFmOGQyZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dApAQCAtMCwwICsxLDc1IEBACisqIFN5bm9wc3lzIERXQyBFdGhlcm5ldCBRb1MgSVAgdmVyc2lvbiA0LjEwIGRyaXZlciAoR01BQykKKworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgInNucHMsZHdjLXFvcy1ldGhlcm5ldC00LjEwIgorLSByZWc6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistIGNsb2NrczogUGhhbmRsZXMgdG8gdGhlIHJlZmVyZW5jZSBjbG9jayBhbmQgdGhlIGJ1cyBjbG9jaworLSBjbG9jay1uYW1lczogU2hvdWxkIGJlICJwaHlfcmVmX2NsayIgZm9yIHRoZSByZWZlcmVuY2UgY2xvY2sgYW5kICJhcGJfcGNsayIKKyAgZm9yIHRoZSBidXMgY2xvY2suCistIGludGVycnVwdC1wYXJlbnQ6IFNob3VsZCBiZSB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyCisgIHRoYXQgc2VydmljZXMgaW50ZXJydXB0cyBmb3IgdGhpcyBkZXZpY2UKKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gdGhlIGNvcmUncyBjb21iaW5lZCBpbnRlcnJ1cHQgc2lnbmFsCistIHBoeS1tb2RlOiBTZWUgZXRoZXJuZXQudHh0IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGRtYS1jb2hlcmVudDogUHJlc2VudCBpZiBkbWEgb3BlcmF0aW9ucyBhcmUgY29oZXJlbnQKKy0gbWFjLWFkZHJlc3M6IFNlZSBldGhlcm5ldC50eHQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5CistIGxvY2FsLW1hYy1hZGRyZXNzOiBTZWUgZXRoZXJuZXQudHh0IGluIHRoZSBzYW1lIGRpcmVjdG9yeQorLSBzbnBzLGVuLWxwaTogSWYgcHJlc2VudCBpdCBlbmFibGVzIHVzZSBvZiB0aGUgQVhJIGxvdy1wb3dlciBpbnRlcmZhY2UKKy0gc25wcyx3cml0ZS1yZXF1ZXN0czogTnVtYmVyIG9mIHdyaXRlIHJlcXVlc3RzIHRoYXQgdGhlIEFYSSBwb3J0IGNhbiBpc3N1ZS4KKyAgSXQgZGVwZW5kcyBvbiB0aGUgU29DIGNvbmZpZ3VyYXRpb24uCistIHNucHMscmVhZC1yZXF1ZXN0czogTnVtYmVyIG9mIHJlYWQgcmVxdWVzdHMgdGhhdCB0aGUgQVhJIHBvcnQgY2FuIGlzc3VlLgorICBJdCBkZXBlbmRzIG9uIHRoZSBTb0MgY29uZmlndXJhdGlvbi4KKy0gc25wcyxidXJzdC1tYXA6IEJpdG1hcCBvZiBhbGxvd2VkIEFYSSBidXJzdCBsZW5ndHMsIHdpdGggdGhlIExTQgorICByZXByZXNlbnRpbmcgNCwgdGhlbiA4IGV0Yy4KKy0gc25wcyx0eHBibDogRE1BIFByb2dyYW1tYWJsZSBidXJzdCBsZW5ndGggZm9yIHRoZSBUWCBETUEKKy0gc25wcyxyeHBibDogRE1BIFByb2dyYW1tYWJsZSBidXJzdCBsZW5ndGggZm9yIHRoZSBSWCBETUEKKy0gc25wcyxlbi10eC1scGktY2xvY2tnYXRpbmc6IEVuYWJsZSBnYXRpbmcgb2YgdGhlIE1BQyBUWCBjbG9jayBkdXJpbmcKKyAgVFggbG93LXBvd2VyIG1vZGUuCistIHBoeS1oYW5kbGU6IFNlZSBldGhlcm5ldC50eHQgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkKKy0gbWRpbyBkZXZpY2UgdHJlZSBzdWJub2RlOiBXaGVuIHRoZSBHTUFDIGhhcyBhIHBoeSBjb25uZWN0ZWQgdG8gaXRzIGxvY2FsCisgICAgbWRpbywgdGhlcmUgbXVzdCBiZSBkZXZpY2UgdHJlZSBzdWJub2RlIHdpdGggdGhlIGZvbGxvd2luZworICAgIHJlcXVpcmVkIHByb3BlcnRpZXM6CisgICAgLSBjb21wYXRpYmxlOiBNdXN0IGJlICJzbnBzLGR3Yy1xb3MtZXRoZXJuZXQtbWRpbyIuCisgICAgLSAjYWRkcmVzcy1jZWxsczogTXVzdCBiZSA8MT4uCisgICAgLSAjc2l6ZS1jZWxsczogTXVzdCBiZSA8MD4uCisKKyAgICBGb3IgZWFjaCBwaHkgb24gdGhlIG1kaW8gYnVzLCB0aGVyZSBtdXN0IGJlIGEgbm9kZSB3aXRoIHRoZSBmb2xsb3dpbmcKKyAgICBmaWVsZHM6CisKKyAgICAtIHJlZzogcGh5IGlkIHVzZWQgdG8gY29tbXVuaWNhdGUgdG8gcGh5LgorICAgIC0gZGV2aWNlX3R5cGU6IE11c3QgYmUgImV0aGVybmV0LXBoeSIuCisgICAgLSBmaXhlZC1tb2RlIGRldmljZSB0cmVlIHN1Ym5vZGU6IHNlZSBmaXhlZC1saW5rLnR4dCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkKKworRXhhbXBsZXM6CitldGhlcm5ldDJANDAwMTAwMDAgeworCWNsb2NrLW5hbWVzID0gInBoeV9yZWZfY2xrIiwgImFwYl9wY2xrIjsKKwljbG9ja3MgPSA8JmNsa2MgMTc+LCA8JmNsa2MgMTU+OworCWNvbXBhdGlibGUgPSAic25wcyxkd2MtcW9zLWV0aGVybmV0LTQuMTAiOworCWludGVycnVwdC1wYXJlbnQgPSA8JmludGM+OworCWludGVycnVwdHMgPSA8MHgwIDB4MWUgMHg0PjsKKwlyZWcgPSA8MHg0MDAxMDAwMCAweDQwMDA+OworCXBoeS1oYW5kbGUgPSA8JnBoeTI+OworCXBoeS1tb2RlID0gImdtaWkiOworCisJc25wcyxlbi10eC1scGktY2xvY2tnYXRpbmc7CisJc25wcyxlbi1scGk7CisJc25wcyx3cml0ZS1yZXF1ZXN0cyA9IDwyPjsKKwlzbnBzLHJlYWQtcmVxdWVzdHMgPSA8MTY+OworCXNucHMsYnVyc3QtbWFwID0gPDB4Nz47CisJc25wcyx0eHBibCA9IDw4PjsKKwlzbnBzLHJ4cGJsID0gPDI+OworCisJZG1hLWNvaGVyZW50OworCisJbWRpbyB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDB4MT47CisJCSNzaXplLWNlbGxzID0gPDB4MD47CisJCXBoeTI6IHBoeUAxIHsKKwkJCWNvbXBhdGlibGUgPSAiZXRoZXJuZXQtcGh5LWllZWU4MDIuMy1jMjIiOworCQkJZGV2aWNlX3R5cGUgPSAiZXRoZXJuZXQtcGh5IjsKKwkJCXJlZyA9IDwweDE+OworCQl9OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb2NmcGdhLWR3bWFjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29jZnBnYS1kd21hYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E5ZDY3OQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29jZnBnYS1kd21hYy50eHQKQEAgLTAsMCArMSwzMSBAQAorQWx0ZXJhIFNPQ0ZQR0EgU29DIERXTUFDIGNvbnRyb2xsZXIKKworVGhpcyBpcyBhIHZhcmlhbnQgb2YgdGhlIGR3bWFjL3N0bW1hYyBkcml2ZXIgYW4gaW5oZXJpdHMgYWxsIGRlc2NyaXB0aW9ucworcHJlc2VudCBpbiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bW1hYy50eHQuCisKK1RoZSBkZXZpY2Ugbm9kZSBoYXMgYWRkaXRpb25hbCBwcm9wZXJ0aWVzOgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZQk6IFNob3VsZCBjb250YWluICJhbHRyLHNvY2ZwZ2Etc3RtbWFjIiBhbG9uZyB3aXRoCisJCSAgInNucHMsZHdtYWMiIGFuZCBhbnkgYXBwbGljYWJsZSBtb3JlIGRldGFpbGVkCisJCSAgZGVzaWdud2FyZSB2ZXJzaW9uIG51bWJlcnMgZG9jdW1lbnRlZCBpbiBzdG1tYWMudHh0CisgLSBhbHRyLHN5c21nci1zeXNjb24gOiBTaG91bGQgYmUgdGhlIHBoYW5kbGUgdG8gdGhlIHN5c3RlbSBtYW5hZ2VyIG5vZGUgdGhhdAorICAgZW5jb21wYXNzZXMgdGhlIGdsdWUgcmVnaXN0ZXIsIHRoZSByZWdpc3RlciBvZmZzZXQsIGFuZCB0aGUgcmVnaXN0ZXIgc2hpZnQuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CithbHRyLGVtYWMtc3BsaXR0ZXI6IFNob3VsZCBiZSB0aGUgcGhhbmRsZSB0byB0aGUgZW1hYyBzcGxpdHRlciBzb2Z0IElQIG5vZGUgaWYKKwkJRFdNQUMgY29udHJvbGxlciBpcyBjb25uZWN0ZWQgZW1hYyBzcGxpdHRlci4KKworRXhhbXBsZToKKworZ21hYzA6IGV0aGVybmV0QGZmNzAwMDAwIHsKKwljb21wYXRpYmxlID0gImFsdHIsc29jZnBnYS1zdG1tYWMiLCAic25wcyxkd21hYy0zLjcwYSIsICJzbnBzLGR3bWFjIjsKKwlhbHRyLHN5c21nci1zeXNjb24gPSA8JnN5c21nciAweDYwIDA+OworCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJcmVnID0gPDB4ZmY3MDAwMDAgMHgyMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDAgMTE1IDQ+OworCWludGVycnVwdC1uYW1lcyA9ICJtYWNpcnEiOworCW1hYy1hZGRyZXNzID0gWzAwIDAwIDAwIDAwIDAwIDAwXTsvKiBGaWxsZWQgaW4gYnkgVS1Cb290ICovCisJY2xvY2tzID0gPCZlbWFjXzBfY2xrPjsKKwljbG9jay1uYW1lcyA9ICJzdG1tYWNldGgiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RpLWR3bWFjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RpLWR3bWFjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDVjMWUxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGktZHdtYWMudHh0CkBAIC0wLDAgKzEsNjEgQEAKK1NUTWljcm9lbGVjdHJvbmljcyBTb0MgRFdNQUMgZ2x1ZSBsYXllciBjb250cm9sbGVyCisKK1RoaXMgZmlsZSBkb2N1bWVudHMgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgY29yZSBwcm9wZXJ0aWVzIGluCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bW1hYy50eHQKK2FuZCB3aGF0IGlzIG5lZWRlZCBvbiBTVGkgcGxhdGZvcm1zIHRvIHByb2dyYW0gdGhlIHN0bW1hYyBnbHVlIGxvZ2ljLgorCitUaGUgZGV2aWNlIG5vZGUgaGFzIGZvbGxvd2luZyBwcm9wZXJ0aWVzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZQk6IENhbiBiZSAic3Qsc3RpaDQxNS1kd21hYyIsICJzdCxzdGloNDE2LWR3bWFjIiwKKyAgICJzdCxzdGloNDA3LWR3bWFjIiwgInN0LHN0aWQxMjctZHdtYWMiLgorIC0gc3Qsc3lzY29uIDogU2hvdWxkIGJlIHBoYW5kbGUvb2Zmc2V0IHBhaXIuIFRoZSBwaGFuZGxlIHRvIHRoZSBzeXNjb24gbm9kZSB3aGljaAorICAgZW5jb21wYXNlcyB0aGUgZ2x1ZSByZWdpc3RlciwgYW5kIHRoZSBvZmZzZXQgb2YgdGhlIGNvbnRyb2wgcmVnaXN0ZXIuCisgLSBzdCxnbWFjX2VuOiB0aGlzIGlzIHRvIGVuYWJsZSB0aGUgZ21hYyBpbnRvIGEgZGVkaWNhdGVkIHN5c2N0bCBjb250cm9sCisgICByZWdpc3RlciBhdmFpbGFibGUgb24gU1RpSDQwNyBTb0MuCisgLSBwaW5jdHJsLTA6IHBpbi1jb250cm9sIGZvciBhbGwgdGhlIE1JSSBtb2RlIHN1cHBvcnRlZC4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAtIHJlc2V0cyA6IHBoYW5kbGUgcG9pbnRpbmcgdG8gdGhlIHN5c3RlbSByZXNldCBjb250cm9sbGVyIHdpdGggY29ycmVjdAorICAgcmVzZXQgbGluZSBpbmRleCBmb3IgZXRoZXJuZXQgcmVzZXQuCisgLSBzdCxleHQtcGh5Y2xrOiB2YWxpZCBvbmx5IGZvciBSTUlJIHdoZXJlIFBIWSBjYW4gZ2VuZXJhdGUgNTBNSHogY2xvY2sgb3IKKyAgIE1BQyBjYW4gZ2VuZXJhdGUgaXQuCisgLSBzdCx0eC1yZXRpbWUtc3JjOiBUaGlzIHNwZWNpZmllcyB3aGljaCBjbGsgaXMgd2lyZWQgdXAgdG8gdGhlIG1hYyBmb3IKKyAgIHJldGltZWluZyB0eCBsaW5lcy4gVGhpcyBpcyB0b3RhbGx5IGJvYXJkIGRlcGVuZGVudCBhbmQgY2FuIHRha2Ugb25lIG9mIHRoZQorICAgcG9zc3NpYmxlIHZhbHVlcyBmcm9tICJ0eGNsayIsICJjbGtfMTI1IiBvciAiY2xrZ2VuIi4KKyAgIElmIG5vdCBwYXNzZWQsIHRoZSBpbnRlcm5hbCBjbG9jayB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC4KKyAtIHN0aS1ldGhjbGs6IHRoaXMgaXMgdGhlIHBoeSBjbG9jay4KKyAtIHN0aS1jbGtjb25mOiB0aGlzIGlzIGFuIGV4dHJhIHN5c2NvbmZpZyByZWdpc3RlciwgYXZhaWxhYmxlIGluIG5ldyBTb0NzLAorICAgdG8gcHJvZ3JhbSB0aGUgY2xrIHJldGltaW5nLgorIC0gc3QsZ21hY19lbjogdG8gZW5hYmxlIHRoZSBHTUFDLCB0aGlzIG9ubHkgaXMgcHJlc2VudCBpbiBzb21lIFNvQ3M7IGUuZy4KKyAgIFNUaUg0MDcuCisKK0V4YW1wbGU6CisKK2V0aGVybmV0MDogZHdtYWNAOTYzMDAwMCB7CisJZGV2aWNlX3R5cGUgPSAibmV0d29yayI7CisJc3RhdHVzID0gImRpc2FibGVkIjsKKwljb21wYXRpYmxlID0gInN0LHN0aWg0MDctZHdtYWMiLCAic25wcyxkd21hYyIsICJzbnBzLGR3bWFjLTMuNzEwIjsKKwlyZWcgPSA8MHg5NjMwMDAwIDB4ODAwMD47CisJcmVnLW5hbWVzID0gInN0bW1hY2V0aCI7CisKKwlzdCxzeXNjb24gPSA8JnN5c2NmZ19zYmNfcmVnIDB4ODA+OworCXN0LGdtYWNfZW47CisJcmVzZXRzID0gPCZzb2Z0cmVzZXQgU1RJSDQwN19FVEgxX1NPRlRSRVNFVD47CisJcmVzZXQtbmFtZXMgPSAic3RtbWFjZXRoIjsKKworCWludGVycnVwdHMgPSA8R0lDX1NQSSA5OCBJUlFfVFlQRV9OT05FPiwKKwkJICAgICA8R0lDX1NQSSA5OSBJUlFfVFlQRV9OT05FPiwKKwkJICAgICA8R0lDX1NQSSAxMDAgSVJRX1RZUEVfTk9ORT47CisJaW50ZXJydXB0LW5hbWVzID0gIm1hY2lycSIsICJldGhfd2FrZV9pcnEiLCAiZXRoX2xwaSI7CisKKwlzbnBzLHBibCA9IDwzMj47CisJc25wcyxtaXhlZC1idXJzdDsKKworCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJcGluY3RybC0wID0gPCZwaW5jdHJsX3JnbWlpMT47CisKKwljbG9jay1uYW1lcyA9ICJzdG1tYWNldGgiLCAic3RpLWV0aGNsayI7CisJY2xvY2tzID0gPCZDTEtfU19DMF9GTEVYR0VOIENMS19FWFQyRl9BOT4sCisJCSA8JkNMS19TX0MwX0ZMRVhHRU4gQ0xLX0VUSF9QSFk+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RtbWFjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RtbWFjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzRmYzNjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdG1tYWMudHh0CkBAIC0wLDAgKzEsNjggQEAKKyogU1RNaWNyb2VsZWN0cm9uaWNzIDEwLzEwMC8xMDAwIEV0aGVybmV0IGRyaXZlciAoR01BQykKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJzbnBzLGR3bWFjLTxpcF92ZXJzaW9uPiIgInNucHMsZHdtYWMiCisJRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OiAic3Qsc3BlYXI2MDAtZ21hYyIgaXMgYWxzbyBzdXBwb3J0ZWQuCistIHJlZzogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKy0gaW50ZXJydXB0LXBhcmVudDogU2hvdWxkIGJlIHRoZSBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIKKyAgdGhhdCBzZXJ2aWNlcyBpbnRlcnJ1cHRzIGZvciB0aGlzIGRldmljZQorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiB0aGUgU1RNTUFDIGludGVycnVwdHMKKy0gaW50ZXJydXB0LW5hbWVzOiBTaG91bGQgY29udGFpbiB0aGUgaW50ZXJydXB0IG5hbWVzICJtYWNpcnEiCisgICJldGhfd2FrZV9pcnEiIGlmIHRoaXMgaW50ZXJydXB0IGlzIHN1cHBvcnRlZCBpbiB0aGUgImludGVycnVwdHMiCisgIHByb3BlcnR5CistIHBoeS1tb2RlOiBTZWUgZXRoZXJuZXQudHh0IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorLSBzbnBzLHJlc2V0LWdwaW8gCWdwaW8gbnVtYmVyIGZvciBwaHkgcmVzZXQuCistIHNucHMscmVzZXQtYWN0aXZlLWxvdyBib29sZWFuIGZsYWcgdG8gaW5kaWNhdGUgaWYgcGh5IHJlc2V0IGlzIGFjdGl2ZSBsb3cuCistIHNucHMscmVzZXQtZGVsYXlzLXVzICBpcyB0cmlwbGV0IG9mIGRlbGF5cworCVRoZSAxc3QgY2VsbCBpcyByZXNldCBwcmUtZGVsYXkgaW4gbWljcm8gc2Vjb25kcy4KKwlUaGUgMm5kIGNlbGwgaXMgcmVzZXQgcHVsc2UgaW4gbWljcm8gc2Vjb25kcy4KKwlUaGUgM3JkIGNlbGwgaXMgcmVzZXQgcG9zdC1kZWxheSBpbiBtaWNybyBzZWNvbmRzLgorLSBzbnBzLHBibAkJUHJvZ3JhbW1hYmxlIEJ1cnN0IExlbmd0aAorLSBzbnBzLGZpeGVkLWJ1cnN0CVByb2dyYW0gdGhlIERNQSB0byB1c2UgdGhlIGZpeGVkIGJ1cnN0IG1vZGUKKy0gc25wcyxtaXhlZC1idXJzdAlQcm9ncmFtIHRoZSBETUEgdG8gdXNlIHRoZSBtaXhlZCBidXJzdCBtb2RlCistIHNucHMsZm9yY2VfdGhyZXNoX2RtYV9tb2RlCUZvcmNlIERNQSB0byB1c2UgdGhlIHRocmVzaG9sZCBtb2RlIGZvcgorCQkJCWJvdGggdHggYW5kIHJ4CistIHNucHMsZm9yY2Vfc2ZfZG1hX21vZGUJRm9yY2UgRE1BIHRvIHVzZSB0aGUgU3RvcmUgYW5kIEZvcndhcmQKKwkJCQltb2RlIGZvciBib3RoIHR4IGFuZCByeC4gVGhpcyBmbGFnIGlzCisJCQkJaWdub3JlZCBpZiBmb3JjZV90aHJlc2hfZG1hX21vZGUgaXMgc2V0LgorLSBzbnBzLG11bHRpY2FzdC1maWx0ZXItYmluczoJTnVtYmVyIG9mIG11bHRpY2FzdCBmaWx0ZXIgaGFzaCBiaW5zCisJCQkJc3VwcG9ydGVkIGJ5IHRoaXMgZGV2aWNlIGluc3RhbmNlCistIHNucHMscGVyZmVjdC1maWx0ZXItZW50cmllczoJTnVtYmVyIG9mIHBlcmZlY3QgZmlsdGVyIGVudHJpZXMgc3VwcG9ydGVkCisJCQkJYnkgdGhpcyBkZXZpY2UgaW5zdGFuY2UKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gcmVzZXRzOiBTaG91bGQgY29udGFpbiBhIHBoYW5kbGUgdG8gdGhlIFNUTU1BQyByZXNldCBzaWduYWwsIGlmIGFueQorLSByZXNldC1uYW1lczogU2hvdWxkIGNvbnRhaW4gdGhlIHJlc2V0IHNpZ25hbCBuYW1lICJzdG1tYWNldGgiLCBpZiBhCisJcmVzZXQgcGhhbmRsZSBpcyBnaXZlbgorLSBtYXgtZnJhbWUtc2l6ZTogU2VlIGV0aGVybmV0LnR4dCBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeQorLSBjbG9ja3M6IElmIHByZXNlbnQsIHRoZSBmaXJzdCBjbG9jayBzaG91bGQgYmUgdGhlIEdNQUMgbWFpbiBjbG9jayBhbmQKKyAgdGhlIHNlY29uZCBjbG9jayBzaG91bGQgYmUgcGVyaXBoZXJhbCdzIHJlZ2lzdGVyIGludGVyZmFjZSBjbG9jay4gRnVydGhlcgorICBjbG9ja3MgbWF5IGJlIHNwZWNpZmllZCBpbiBkZXJpdmVkIGJpbmRpbmdzLgorLSBjbG9jay1uYW1lczogT25lIG5hbWUgZm9yIGVhY2ggZW50cnkgaW4gdGhlIGNsb2NrcyBwcm9wZXJ0eSwgdGhlCisgIGZpcnN0IG9uZSBzaG91bGQgYmUgInN0bW1hY2V0aCIgYW5kIHRoZSBzZWNvbmQgb25lIHNob3VsZCBiZSAicGNsayIuCistIGNsa19wdHBfcmVmOiB0aGlzIGlzIHRoZSBQVFAgcmVmZXJlbmNlIGNsb2NrOyBpbiBjYXNlIG9mIHRoZSBQVFAgaXMKKyAgYXZhaWxhYmxlIHRoaXMgY2xvY2sgaXMgdXNlZCBmb3IgcHJvZ3JhbW1pbmcgdGhlIFRpbWVzdGFtcCBBZGRlbmQgUmVnaXN0ZXIuCisgIElmIG5vdCBwYXNzZWQgdGhlbiB0aGUgc3lzdGVtIGNsb2NrIHdpbGwgYmUgdXNlZCBhbmQgdGhpcyBpcyBmaW5lIG9uIHNvbWUKKyAgcGxhdGZvcm1zLgorLSBzbnBzLGJ1cnN0X2xlbjogVGhlIEFYSSBidXJzdCBsZW50aCB2YWx1ZSBvZiB0aGUgQVhJIEJVUyBNT0RFIHJlZ2lzdGVyLgorLSB0eC1maWZvLWRlcHRoOiBTZWUgZXRoZXJuZXQudHh0IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5CistIHJ4LWZpZm8tZGVwdGg6IFNlZSBldGhlcm5ldC50eHQgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkKKworRXhhbXBsZXM6CisKKwlnbWFjMDogZXRoZXJuZXRAZTA4MDAwMDAgeworCQljb21wYXRpYmxlID0gInN0LHNwZWFyNjAwLWdtYWMiOworCQlyZWcgPSA8MHhlMDgwMDAwMCAweDgwMDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZ2aWMxPjsKKwkJaW50ZXJydXB0cyA9IDwyNCAyMz47CisJCWludGVycnVwdC1uYW1lcyA9ICJtYWNpcnEiLCAiZXRoX3dha2VfaXJxIjsKKwkJbWFjLWFkZHJlc3MgPSBbMDAwMDAwMDAwMDAwXTsgLyogRmlsbGVkIGluIGJ5IFUtQm9vdCAqLworCQltYXgtZnJhbWUtc2l6ZSA9IDwzODAwPjsKKwkJcGh5LW1vZGUgPSAiZ21paSI7CisJCXNucHMsbXVsdGljYXN0LWZpbHRlci1iaW5zID0gPDI1Nj47CisJCXNucHMscGVyZmVjdC1maWx0ZXItZW50cmllcyA9IDwxMjg+OworCQlyeC1maWZvLWRlcHRoID0gPDE2Mzg0PjsKKwkJdHgtZmlmby1kZXB0aCA9IDwxNjM4ND47CisJCWNsb2NrcyA9IDwmY2xvY2s+OworCQljbG9jay1uYW1lcyA9ICJzdG1tYWNldGgiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3RpLGRwODM4NjcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90aSxkcDgzODY3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGQ5MzViCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90aSxkcDgzODY3LnR4dApAQCAtMCwwICsxLDI1IEBACisqIFRleGFzIEluc3RydW1lbnRzIC0gZHA4Mzg2NyBHaWdhIGJpdCBldGhlcm5ldCBwaHkKKworUmVxdWlyZWQgcHJvcGVydGllczoKKwktIHJlZyAtIFRoZSBJRCBudW1iZXIgZm9yIHRoZSBwaHksIHVzdWFsbHkgYSBzbWFsbCBpbnRlZ2VyCisJLSB0aSxyeC1pbnRlcm5hbC1kZWxheSAtIFJHTUlJIFJlY2lldmUgQ2xvY2sgRGVsYXkgLSBzZWUgZHQtYmluZGluZ3MvbmV0L3RpLWRwODM4NjcuaAorCQlmb3IgYXBwbGljYWJsZSB2YWx1ZXMKKwktIHRpLHR4LWludGVybmFsLWRlbGF5IC0gUkdNSUkgVHJhbnNtaXQgQ2xvY2sgRGVsYXkgLSBzZWUgZHQtYmluZGluZ3MvbmV0L3RpLWRwODM4NjcuaAorCQlmb3IgYXBwbGljYWJsZSB2YWx1ZXMKKwktIHRpLGZpZm8tZGVwdGggLSBUcmFuc21pdHQgRklGTyBkZXB0aC0gc2VlIGR0LWJpbmRpbmdzL25ldC90aS1kcDgzODY3LmgKKwkJZm9yIGFwcGxpY2FibGUgdmFsdWVzCisKK0RlZmF1bHQgY2hpbGQgbm9kZXMgYXJlIHN0YW5kYXJkIEV0aGVybmV0IFBIWSBkZXZpY2UKK25vZGVzIGFzIGRlc2NyaWJlZCBpbiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3BoeS50eHQKKworRXhhbXBsZToKKworCWV0aGVybmV0LXBoeUAwIHsKKwkJcmVnID0gPDA+OworCQl0aSxyeC1pbnRlcm5hbC1kZWxheSA9IDxEUDgzODY3X1JHTUlJRENUTF8yXzI1X05TPjsKKwkJdGksdHgtaW50ZXJuYWwtZGVsYXkgPSA8RFA4Mzg2N19SR01JSURDVExfMl83NV9OUz47CisJCXRpLGZpZm8tZGVwdGggPSA8RFA4Mzg2N19QSFlDUl9GSUZPX0RFUFRIXzRfQl9OSUI+OworCX07CisKK0RhdGFzaGVldCBjYW4gYmUgZm91bmQ6CitodHRwOi8vd3d3LnRpLmNvbS9wcm9kdWN0L0RQODM4NjdJUi9kYXRhc2hlZXQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdmlhLXJoaW5lLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdmlhLXJoaW5lLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzRlY2EyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC92aWEtcmhpbmUudHh0CkBAIC0wLDAgKzEsMTcgQEAKKyogVklBIFJoaW5lIDEwLzEwMCBOZXR3b3JrIENvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAidmlhLHZ0ODUwMC1yaGluZSIgZm9yIGludGVncmF0ZWQKKwlSaGluZSBjb250cm9sbGVycyBmb3VuZCBpbiBWSUEgVlQ4NTAwLCBXb25kZXJNZWRpYSBXTTg5NTAKKwlhbmQgc2ltaWxhci4gVGhlc2UgYXJlIGxpc3RlZCBhcyAxMTA2OjMxMDYgcmV2LiAweDg0IG9uIHRoZQorCXZpcnR1YWwgUENJIGJ1cyB1bmRlciB2ZW5kb3ItcHJvdmlkZWQga2VybmVscworLSByZWcgOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGlvIHNwYWNlCistIGludGVycnVwdHMgOiBTaG91bGQgY29udGFpbiB0aGUgY29udHJvbGxlciBpbnRlcnJ1cHQgbGluZQorCitFeGFtcGxlczoKKworZXRoZXJuZXRAZDgwMDQwMDAgeworCWNvbXBhdGlibGUgPSAidmlhLHZ0ODUwMC1yaGluZSI7CisJcmVnID0gPDB4ZDgwMDQwMDAgMHgxMDA+OworCWludGVycnVwdHMgPSA8MTA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdmlhLXZlbG9jaXR5LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdmlhLXZlbG9jaXR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2RiNDY5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC92aWEtdmVsb2NpdHkudHh0CkBAIC0wLDAgKzEsMjAgQEAKKyogVklBIFZlbG9jaXR5IDEwLzEwMC8xMDAwIE5ldHdvcmsgQ29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJ2aWEsdmVsb2NpdHktdnQ2MTEwIgorLSByZWcgOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGlvIHNwYWNlCistIGludGVycnVwdHMgOiBTaG91bGQgY29udGFpbiB0aGUgY29udHJvbGxlciBpbnRlcnJ1cHQgbGluZQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBuby1lZXByb20gOiBQQ0kgbmV0d29yayBjYXJkcyB1c2UgYW4gZXh0ZXJuYWwgRUVQUk9NIHRvIHN0b3JlIGRhdGEuIEVtYmVkZGVkCisJZGV2aWNlcyBxdWl0ZSBvZnRlbiBzZXQgdGhpcyBkYXRhIGluIHVib290IGFuZCBkbyBub3QgcHJvdmlkZSBhbiBlZXByb20uCisJU3BlY2lmeSB0aGlzIG9wdGlvbiBpZiB5b3UgaGF2ZSBubyBleHRlcm5hbCBlZXByb20uCisKK0V4YW1wbGVzOgorCitldGgwQGQ4MDA0MDAwIHsKKwljb21wYXRpYmxlID0gInZpYSx2ZWxvY2l0eS12dDYxMTAiOworCXJlZyA9IDwweGQ4MDA0MDAwIDB4NDAwPjsKKwlpbnRlcnJ1cHRzID0gPDEwPjsKKwluby1lZXByb207Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9icmNtLGJjbTQzeHgtZm1hYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL2JyY20sYmNtNDN4eC1mbWFjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGJmMTY5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9icmNtLGJjbTQzeHgtZm1hYy50eHQKQEAgLTAsMCArMSw0MSBAQAorQnJvYWRjb20gQkNNNDN4eCBGdWxsbWFjIHdpcmVsZXNzIFNESU8gZGV2aWNlcworCitUaGlzIG5vZGUgcHJvdmlkZXMgcHJvcGVydGllcyBmb3IgY29udHJvbGxpbmcgdGhlIEJyb2FkY29tIHdpcmVsZXNzIGRldmljZS4gVGhlCitub2RlIGlzIGV4cGVjdGVkIHRvIGJlIHNwZWNpZmllZCBhcyBhIGNoaWxkIG5vZGUgdG8gdGhlIFNESU8gY29udHJvbGxlciB0aGF0Citjb25uZWN0cyB0aGUgZGV2aWNlIHRvIHRoZSBzeXN0ZW0uCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAtIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImJyY20sYmNtNDMyOS1mbWFjIi4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAtIGJyY20sZHJpdmUtc3RyZW5ndGggOiBkcml2ZSBzdHJlbmd0aCB1c2VkIGZvciBTRElPIHBpbnMgb24gZGV2aWNlIGluIG1BCisJKGRlZmF1bHQgPSA2KS4KKyAtIGludGVycnVwdC1wYXJlbnQgOiB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyIHRvIHdoaWNoIHRoZQorCWRldmljZSBpbnRlcnJ1cHRzIGFyZSBjb25uZWN0ZWQuCisgLSBpbnRlcnJ1cHRzIDogc3BlY2lmaWVzIGF0dHJpYnV0ZXMgZm9yIHRoZSBvdXQtb2YtYmFuZCBpbnRlcnJ1cHQgKGhvc3Qtd2FrZSkuCisJV2hlbiBub3Qgc3BlY2lmaWVkIHRoZSBkZXZpY2Ugd2lsbCB1c2UgaW4tYmFuZCBTRElPIGludGVycnVwdHMuCisgLSBpbnRlcnJ1cHQtbmFtZXMgOiBuYW1lIG9mIHRoZSBvdXQtb2YtYmFuZCBpbnRlcnJ1cHQsIHdoaWNoIG11c3QgYmUgc2V0CisJdG8gImhvc3Qtd2FrZSIuCisKK0V4YW1wbGU6CisKK21tYzM6IG1tY0AwMWMxMjAwMCB7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47CisKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCXBpbmN0cmwtMCA9IDwmbW1jM19waW5zX2E+OworCXZtbWMtc3VwcGx5ID0gPCZyZWdfdm1tYzM+OworCWJ1cy13aWR0aCA9IDw0PjsKKwlub24tcmVtb3ZhYmxlOworCXN0YXR1cyA9ICJva2F5IjsKKworCWJyY21mOiBiY3JtZkAxIHsKKwkJcmVnID0gPDE+OworCQljb21wYXRpYmxlID0gImJyY20sYmNtNDMyOS1mbWFjIjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmcGlvPjsKKwkJaW50ZXJydXB0cyA9IDwxMCA4PjsgLyogUEgxMCAvIEVJTlQxMCAqLworCQlpbnRlcnJ1cHQtbmFtZXMgPSAiaG9zdC13YWtlIjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9xY29tLGF0aDEway50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRlZmMyNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvcWNvbSxhdGgxMGsudHh0CkBAIC0wLDAgKzEsMzAgQEAKKyogUXVhbGNvbW0gQXRoZXJvcyBhdGgxMGsgd2lyZWxlc3MgZGV2aWNlcworCitGb3IgYXRoMTBrIGRldmljZXMgdGhlIGNhbGlicmF0aW9uIGRhdGEgY2FuIGJlIHByb3ZpZGVkIHRocm91Z2ggRGV2aWNlCitUcmVlLiBUaGUgbm9kZSBpcyBhIGNoaWxkIG5vZGUgb2YgdGhlIFBDSSBjb250cm9sbGVyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLWNvbXBhdGlibGUgOiBTaG91bGQgYmUgInFjb20sYXRoMTBrIgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBxY29tLGF0aDEway1jYWxpYnJhdGlvbi1kYXRhIDogY2FsaWJyYXRpb24gZGF0YSBhcyBhbiBhcnJheSwgdGhlCisJCQkJIGxlbmd0aCBjYW4gdmFyeSBiZXR3ZWVuIGh3IHZlcnNpb25zCisKKworRXhhbXBsZToKKworcGNpIHsKKwlwY2llQDAgeworCQlyZWcgPSA8MCAwIDAgMCAwPjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8Mj47CisJCSNhZGRyZXNzLWNlbGxzID0gPDM+OworCQlkZXZpY2VfdHlwZSA9ICJwY2kiOworCisJCWF0aDEwa0AwLDAgeworCQkJcmVnID0gPDAgMCAwIDAgMD47CisJCQlkZXZpY2VfdHlwZSA9ICJwY2kiOworCQkJcWNvbSxhdGgxMGstY2FsaWJyYXRpb24tZGF0YSA9IFsgMDEgMDIgMDMgLi4uIF07CisJCX07CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL3RpLHdsMTI1MS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL3RpLHdsMTI1MS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg5YWU1YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3MvdGksd2wxMjUxLnR4dApAQCAtMCwwICsxLDM5IEBACisqIFRleGFzIEluc3RydW1lbnRzIHdsMTI1MSB3aXJlbGVzcyBsYW4gY29udHJvbGxlcgorCitUaGUgd2wxMjUxIGNoaXAgY2FuIGJlIGNvbm5lY3RlZCB2aWEgU1BJIG9yIHZpYSBTRElPLiBUaGlzCitkb2N1bWVudCBkZXNjcmliZXMgdGhlIGJpbmRpbmcgZm9yIHRoZSBTUEkgY29ubmVjdGVkIGNoaXAuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAgICAgICAgU2hvdWxkIGJlICJ0aSx3bDEyNTEiCistIHJlZyA6ICAgICAgICAgICAgICAgQ2hpcCBzZWxlY3QgYWRkcmVzcyBvZiBkZXZpY2UKKy0gc3BpLW1heC1mcmVxdWVuY3kgOiBNYXhpbXVtIFNQSSBjbG9ja2luZyBzcGVlZCBvZiBkZXZpY2UgaW4gSHoKKy0gaW50ZXJydXB0cyA6ICAgICAgICBTaG91bGQgY29udGFpbiBpbnRlcnJ1cHQgbGluZQorLSBpbnRlcnJ1cHQtcGFyZW50IDogIFNob3VsZCBiZSB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyCisgICAgICAgICAgICAgICAgICAgICAgdGhhdCBzZXJ2aWNlcyBpbnRlcnJ1cHRzIGZvciB0aGlzIGRldmljZQorLSB2aW8tc3VwcGx5IDogICAgICAgIHBoYW5kbGUgdG8gcmVndWxhdG9yIHByb3ZpZGluZyBWSU8KKy0gdGkscG93ZXItZ3BpbyA6ICAgICBHUElPIGNvbm5lY3RlZCB0byBjaGlwJ3MgUE1FTiBwaW4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdGksd2wxMjUxLWhhcy1lZXByb20gOiBib29sZWFuLCB0aGUgd2wxMjUxIGhhcyBhbiBlZXByb20gY29ubmVjdGVkLCB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVzIGNvbmZpZ3VyYXRpb24gZGF0YSAoY2FsaWJyYXRpb24sIE1BQywgLi4uKQorLSBQbGVhc2UgY29uc3VsdCBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1idXMudHh0CisgIGZvciBvcHRpb25hbCBTUEkgY29ubmVjdGlvbiByZWxhdGVkIHByb3BlcnRpZXMsCisKK0V4YW1wbGVzOgorCismc3BpMSB7CisJd2wxMjUxQDAgeworCQljb21wYXRpYmxlID0gInRpLHdsMTI1MSI7CisKKwkJcmVnID0gPDA+OworCQlzcGktbWF4LWZyZXF1ZW5jeSA9IDw0ODAwMDAwMD47CisJCXNwaS1jcG9sOworCQlzcGktY3BoYTsKKworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvMj47CisJCWludGVycnVwdHMgPSA8MTAgSVJRX1RZUEVfTk9ORT47IC8qIGdwaW8gbGluZSA0MiAqLworCisJCXZpby1zdXBwbHkgPSA8JnZpbz47CisJCXRpLHBvd2VyLWdwaW8gPSA8JmdwaW8zIDIzIEdQSU9fQUNUSVZFX0hJR0g+OyAvKiA4NyAqLworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy90aSx3bGNvcmUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy90aSx3bGNvcmUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhM2Q5MGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzL3RpLHdsY29yZS50eHQKQEAgLTAsMCArMSw0NyBAQAorVEkgV2lsaW5rIDYvNy84ICh3bDEyeHgvd2wxOHh4KSBTRElPIGRldmljZXMKKworVGhpcyBub2RlIHByb3ZpZGVzIHByb3BlcnRpZXMgZm9yIGNvbnRyb2xsaW5nIHRoZSB3aWxpbmsgd2lyZWxlc3MgZGV2aWNlLiBUaGUKK25vZGUgaXMgZXhwZWN0ZWQgdG8gYmUgc3BlY2lmaWVkIGFzIGEgY2hpbGQgbm9kZSB0byB0aGUgU0RJTyBjb250cm9sbGVyIHRoYXQKK2Nvbm5lY3RzIHRoZSBkZXZpY2UgdG8gdGhlIHN5c3RlbS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKyAgICAqICJ0aSx3bDEyNzEiCisgICAgKiAidGksd2wxMjczIgorICAgICogInRpLHdsMTI4MSIKKyAgICAqICJ0aSx3bDEyODMiCisgICAgKiAidGksd2wxODAxIgorICAgICogInRpLHdsMTgwNSIKKyAgICAqICJ0aSx3bDE4MDciCisgICAgKiAidGksd2wxODMxIgorICAgICogInRpLHdsMTgzNSIKKyAgICAqICJ0aSx3bDE4MzciCisgLSBpbnRlcnJ1cHRzIDogc3BlY2lmaWVzIGF0dHJpYnV0ZXMgZm9yIHRoZSBvdXQtb2YtYmFuZCBpbnRlcnJ1cHQuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgLSBpbnRlcnJ1cHQtcGFyZW50IDogdGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB0byB3aGljaCB0aGUKKwlkZXZpY2UgaW50ZXJydXB0cyBhcmUgY29ubmVjdGVkLgorIC0gcmVmLWNsb2NrLWZyZXF1ZW5jeSA6IHJlZiBjbG9jayBmcmVxdWVuY3kgaW4gSHoKKyAtIHRjeG8tY2xvY2stZnJlcXVlbmN5IDogdGN4byBjbG9jayBmcmVxdWVuY3kgaW4gSHoKKworTm90ZTogdGhlICotY2xvY2stZnJlcXVlbmN5IHByb3BlcnRpZXMgYXNzdW1lIGludGVybmFsIGNsb2Nrcy4gSW4gY2FzZSBvZiBleHRlcm5hbAorY2xvY2ssIG5ldyBiaW5kaW5ncyAoZm9yIHBhcnNpbmcgdGhlIGNsb2NrIG5vZGVzKSBoYXZlIHRvIGJlIGFkZGVkLgorCitFeGFtcGxlOgorCismbW1jMyB7CisJc3RhdHVzID0gIm9rYXkiOworCXZtbWMtc3VwcGx5ID0gPCZ3bGFuX2VuX3JlZz47CisJYnVzLXdpZHRoID0gPDQ+OworCWNhcC1wb3dlci1vZmYtY2FyZDsKKwlrZWVwLXBvd2VyLWluLXN1c3BlbmQ7CisKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwl3bGNvcmU6IHdsY29yZUAyIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSx3bDE4MzUiOworCQlyZWcgPSA8Mj47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8wPjsKKwkJaW50ZXJydXB0cyA9IDwxOSBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uaW9zMi9uaW9zMi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmlvczIvbmlvczIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZDBhOTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmlvczIvbmlvczIudHh0CkBAIC0wLDAgKzEsNjIgQEAKKyogTmlvcyBJSSBQcm9jZXNzb3IgQmluZGluZworCitUaGlzIGJpbmRpbmcgc3BlY2lmaWVzIHdoYXQgcHJvcGVydGllcyBhdmFpbGFibGUgaW4gdGhlIGRldmljZSB0cmVlCityZXByZXNlbnRhdGlvbiBvZiBhIE5pb3MgSUkgUHJvY2Vzc29yIENvcmUuCisKK1VzZXJzIGNhbiB1c2Ugc29wYzJkdHMgdG9vbCBmb3IgZ2VuZXJhdGluZyBkZXZpY2UgdHJlZSBzb3VyY2VzIChkdHMpIGZyb20gYQorUXN5cyBzeXN0ZW0uIFNlZSBtb3JlIGRldGFpbCBpbjogaHR0cDovL3d3dy5hbHRlcmF3aWtpLmNvbS93aWtpL1NvcGMyZHRzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogQ29tcGF0aWJsZSBwcm9wZXJ0eSB2YWx1ZSBzaG91bGQgYmUgImFsdHIsbmlvczItMS4wIi4KKy0gcmVnOiBDb250YWlucyBDUFUgaW5kZXguCistIGludGVycnVwdC1jb250cm9sbGVyOiBTcGVjaWZpZXMgdGhhdCB0aGUgbm9kZSBpcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSAjaW50ZXJydXB0LWNlbGxzOiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8gZW5jb2RlIGFuCisJCWludGVycnVwdCBzb3VyY2UsIHNob3VsZCBiZSAxLgorLSBjbG9jay1mcmVxdWVuY3k6IENvbnRhaW5zIHRoZSBjbG9jayBmcmVxdWVuY3kgZm9yIENQVSwgaW4gSHouCistIGRjYWNoZS1saW5lLXNpemU6IENvbnRhaW5zIGRhdGEgY2FjaGUgbGluZSBzaXplLgorLSBpY2FjaGUtbGluZS1zaXplOiBDb250YWlucyBpbnN0cnVjdGlvbiBsaW5lIHNpemUuCistIGRjYWNoZS1zaXplOiBDb250YWlucyBkYXRhIGNhY2hlIHNpemUuCistIGljYWNoZS1zaXplOiBDb250YWlucyBpbnN0cnVjdGlvbiBjYWNoZSBzaXplLgorLSBhbHRyLHBpZC1udW0tYml0czogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYml0cyB0byB1c2UgdG8gcmVwcmVzZW50IHRoZSBwcm9jZXNzCisJCWlkZW50aWZpZXIgKFBJRCkuCistIGFsdHIsdGxiLW51bS13YXlzOiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBzZXQtYXNzb2NpYXRpdml0eSB3YXlzIGluIHRoZSBUTEIuCistIGFsdHIsdGxiLW51bS1lbnRyaWVzOiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBUTEIuCistIGFsdHIsdGxiLXB0ci1zejogU3BlY2lmaWVzIHNpemUgb2YgVExCIHBvaW50ZXIuCistIGFsdHIsaGFzLW11bDogU3BlY2lmaWVzIENQVSBoYXJkd2FyZSBtdWx0aXB5IHN1cHBvcnQsIHNob3VsZCBiZSAxLgorLSBhbHRyLGhhcy1tbXU6IFNwZWNpZmllcyBDUFUgc3VwcG9ydCBNTVUgc3VwcG9ydCwgc2hvdWxkIGJlIDEuCistIGFsdHIsaGFzLWluaXRkYTogU3BlY2lmaWVzIENQVSBzdXBwb3J0IGluaXRkYSBpbnN0cnVjdGlvbiwgc2hvdWxkIGJlIDEuCistIGFsdHIscmVzZXQtYWRkcjogU3BlY2lmaWVzIENQVSByZXNldCBhZGRyZXNzCistIGFsdHIsZmFzdC10bGItbWlzcy1hZGRyOiBTcGVjaWZpZXMgQ1BVIGZhc3QgVExCIG1pc3MgZXhjZXB0aW9uIGFkZHJlc3MKKy0gYWx0cixleGNlcHRpb24tYWRkcjogU3BlY2lmaWVzIENQVSBleGNlcHRpb24gYWRkcmVzcworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBhbHRyLGhhcy1kaXY6IFNwZWNpZmllcyBDUFUgaGFyZHdhcmUgZGl2aWRlIHN1cHBvcnQKKy0gYWx0cixpbXBsZW1lbnRhdGlvbjogTmlvcyBJSSBjb3JlIGltcGxlbWVudGF0aW9uLCB0aGlzIHNob3VsZCBiZSAiZmFzdCI7CisKK0V4YW1wbGU6CisKK2NwdUAweDAgeworCWRldmljZV90eXBlID0gImNwdSI7CisJY29tcGF0aWJsZSA9ICJhbHRyLG5pb3MyLTEuMCI7CisJcmVnID0gPDA+OworCWludGVycnVwdC1jb250cm9sbGVyOworCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJY2xvY2stZnJlcXVlbmN5ID0gPDEyNTAwMDAwMD47CisJZGNhY2hlLWxpbmUtc2l6ZSA9IDwzMj47CisJaWNhY2hlLWxpbmUtc2l6ZSA9IDwzMj47CisJZGNhY2hlLXNpemUgPSA8MzI3Njg+OworCWljYWNoZS1zaXplID0gPDMyNzY4PjsKKwlhbHRyLGltcGxlbWVudGF0aW9uID0gImZhc3QiOworCWFsdHIscGlkLW51bS1iaXRzID0gPDg+OworCWFsdHIsdGxiLW51bS13YXlzID0gPDE2PjsKKwlhbHRyLHRsYi1udW0tZW50cmllcyA9IDwxMjg+OworCWFsdHIsdGxiLXB0ci1zeiA9IDw3PjsKKwlhbHRyLGhhcy1kaXYgPSA8MT47CisJYWx0cixoYXMtbXVsID0gPDE+OworCWFsdHIscmVzZXQtYWRkciA9IDwweGMyODAwMDAwPjsKKwlhbHRyLGZhc3QtdGxiLW1pc3MtYWRkciA9IDwweGM3ZmZmNDAwPjsKKwlhbHRyLGV4Y2VwdGlvbi1hZGRyID0gPDB4ZDAwMDAwMjA+OworCWFsdHIsaGFzLWluaXRkYSA9IDwxPjsKKwlhbHRyLGhhcy1tbXUgPSA8MT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25pb3MyL3RpbWVyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uaW9zMi90aW1lci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA0YTU4NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uaW9zMi90aW1lci50eHQKQEAgLTAsMCArMSwxOSBAQAorQWx0ZXJhIFRpbWVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiYWx0cix0aW1lci0xLjAiCistIHJlZyA6IFNwZWNpZmllcyBiYXNlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIHJlZ2lzdGVycy4KKy0gaW50ZXJydXB0LXBhcmVudDogcGhhbmRsZSBvZiB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIKKy0gaW50ZXJydXB0cyA6IFNob3VsZCBjb250YWluIHRoZSB0aW1lciBpbnRlcnJ1cHQgbnVtYmVyCistIGNsb2NrLWZyZXF1ZW5jeSA6IFRoZSBmcmVxdWVuY3kgb2YgdGhlIGNsb2NrIHRoYXQgZHJpdmVzIHRoZSBjb3VudGVyLCBpbiBIei4KKworRXhhbXBsZToKKwordGltZXIgeworCWNvbXBhdGlibGUgPSAiYWx0cix0aW1lci0xLjAiOworCXJlZyA9IDwweDAwNDAwMDAwIDB4MDAwMDAwMjA+OworCWludGVycnVwdC1wYXJlbnQgPSA8JmNwdT47CisJaW50ZXJydXB0cyA9IDwxMT47CisJY2xvY2stZnJlcXVlbmN5ID0gPDEyNTAwMDAwMD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL252bWVtL2FsbHdpbm5lcixzdW54aS1zaWQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL252bWVtL2FsbHdpbm5lcixzdW54aS1zaWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1NDNlZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbnZtZW0vYWxsd2lubmVyLHN1bnhpLXNpZC50eHQKQEAgLTAsMCArMSwyMSBAQAorQWxsd2lubmVyIHN1bnhpLXNpZAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiYWxsd2lubmVyLHN1bjRpLWExMC1zaWQiIG9yICJhbGx3aW5uZXIsc3VuN2ktYTIwLXNpZCIKKy0gcmVnOiBTaG91bGQgY29udGFpbiByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorCis9IERhdGEgY2VsbHMgPQorQXJlIGNoaWxkIG5vZGVzIG9mIHFmcHJvbSwgYmluZGluZ3Mgb2Ygd2hpY2ggYXMgZGVzY3JpYmVkIGluCitiaW5kaW5ncy9udm1lbS9udm1lbS50eHQKKworRXhhbXBsZSBmb3Igc3VuNGk6CisJc2lkQDAxYzIzODAwIHsKKwkJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNGktYTEwLXNpZCI7CisJCXJlZyA9IDwweDAxYzIzODAwIDB4MTA+CisJfTsKKworRXhhbXBsZSBmb3Igc3VuN2k6CisJc2lkQDAxYzIzODAwIHsKKwkJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuN2ktYTIwLXNpZCI7CisJCXJlZyA9IDwweDAxYzIzODAwIDB4MjAwPgorCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbnZtZW0vaW14LW9jb3RwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9udm1lbS9pbXgtb2NvdHAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4M2Q1ODgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbnZtZW0vaW14LW9jb3RwLnR4dApAQCAtMCwwICsxLDIwIEBACitGcmVlc2NhbGUgaS5NWDYgT24tQ2hpcCBPVFAgQ29udHJvbGxlciAoT0NPVFApIGRldmljZSB0cmVlIGJpbmRpbmdzCisKK1RoaXMgYmluZGluZyByZXByZXNlbnRzIHRoZSBvbi1jaGlwIGVGdXNlIE9UUCBjb250cm9sbGVyIGZvdW5kIG9uCitpLk1YNlEvRCwgaS5NWDZETC9TLCBpLk1YNlNMLCBhbmQgaS5NWDZTWCBTb0NzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mCisJImZzbCxpbXg2cS1vY290cCIgKGkuTVg2US9EL0RML1MpLAorCSJmc2wsaW14NnNsLW9jb3RwIiAoaS5NWDZTTCksIG9yCisJImZzbCxpbXg2c3gtb2NvdHAiIChpLk1YNlNYKSwgZm9sbG93ZWQgYnkgInN5c2NvbiIuCistIHJlZzogU2hvdWxkIGNvbnRhaW4gdGhlIHJlZ2lzdGVyIGJhc2UgYW5kIGxlbmd0aC4KKy0gY2xvY2tzOiBTaG91bGQgY29udGFpbiBhIHBoYW5kbGUgcG9pbnRpbmcgdG8gdGhlIGdhdGVkIHBlcmlwaGVyYWwgY2xvY2suCisKK0V4YW1wbGU6CisKKwlvY290cDogb2NvdHBAMDIxYmMwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxpbXg2cS1vY290cCIsICJzeXNjb24iOworCQlyZWcgPSA8MHgwMjFiYzAwMCAweDQwMDA+OworCQljbG9ja3MgPSA8JmNsa3MgSU1YNlFETF9DTEtfSUlNPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL252bWVtL214cy1vY290cC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbnZtZW0vbXhzLW9jb3RwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWViY2U5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL252bWVtL214cy1vY290cC50eHQKQEAgLTAsMCArMSwyNSBAQAorT24tQ2hpcCBPVFAgTWVtb3J5IGZvciBGcmVlc2NhbGUgaS5NWDIzL2kuTVgyOAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIDoKKy0gY29tcGF0aWJsZSA6CisgIC0gImZzbCxpbXgyMy1vY290cCIgZm9yIGkuTVgyMworICAtICJmc2wsaW14Mjgtb2NvdHAiIGZvciBpLk1YMjgKKy0gI2FkZHJlc3MtY2VsbHMgOiBTaG91bGQgYmUgMQorLSAjc2l6ZS1jZWxscyA6IFNob3VsZCBiZSAxCistIHJlZyA6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiBPVFAgY29udHJvbGxlciByZWdpc3RlcnMKKy0gY2xvY2tzIDogU2hvdWxkIGNvbnRhaW4gYSByZWZlcmVuY2UgdG8gdGhlIGhidXMgY2xvY2sKKworPSBEYXRhIGNlbGxzID0KK0FyZSBjaGlsZCBub2RlcyBvZiBteHMtb2NvdHAsIGJpbmRpbmdzIG9mIHdoaWNoIGFzIGRlc2NyaWJlZCBpbgorYmluZGluZ3MvbnZtZW0vbnZtZW0udHh0CisKK0V4YW1wbGUgZm9yIGkuTVgyODoKKworCW9jb3RwOiBvY290cEA4MDAyYzAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGlteDI4LW9jb3RwIiwgImZzbCxvY290cCI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJcmVnID0gPDB4ODAwMmMwMDAgMHgyMDAwPjsKKwkJY2xvY2tzID0gPCZjbGtzIDI1PjsKKwkJc3RhdHVzID0gIm9rYXkiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbnZtZW0vbnZtZW0udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL252bWVtL252bWVtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTJiYzExCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL252bWVtL252bWVtLnR4dApAQCAtMCwwICsxLDgwIEBACis9IE5WTUVNKE5vbiBWb2xhdGlsZSBNZW1vcnkpIERhdGEgRGV2aWNlIFRyZWUgQmluZGluZ3MgPQorCitUaGlzIGJpbmRpbmcgaXMgaW50ZW5kZWQgdG8gcmVwcmVzZW50IHRoZSBsb2NhdGlvbiBvZiBoYXJkd2FyZQorY29uZmlndXJhdGlvbiBkYXRhIHN0b3JlZCBpbiBOVk1FTXMgbGlrZSBlZXByb20sIGVmdXNlcyBhbmQgc28gb24uCisKK09uIGEgc2lnbmlmaWNhbnQgcHJvcG9ydGlvbiBvZiBib2FyZHMsIHRoZSBtYW51ZmFjdHVyZXIgaGFzIHN0b3JlZAorc29tZSBkYXRhIG9uIE5WTUVNLCBmb3IgdGhlIE9TIHRvIGJlIGFibGUgdG8gcmV0cmlldmUgdGhlc2UgaW5mb3JtYXRpb24KK2FuZCBhY3QgdXBvbiBpdC4gT2J2aW91c2x5LCB0aGUgT1MgaGFzIHRvIGtub3cgYWJvdXQgd2hlcmUgdG8gcmV0cmlldmUKK3RoZXNlIGRhdGEgZnJvbSwgYW5kIHdoZXJlIHRoZXkgYXJlIHN0b3JlZCBvbiB0aGUgc3RvcmFnZSBkZXZpY2UuCisKK1RoaXMgZG9jdW1lbnQgaXMgaGVyZSB0byBkb2N1bWVudCB0aGlzLgorCis9IERhdGEgcHJvdmlkZXJzID0KK0NvbnRhaW5zIGJpbmRpbmdzIHNwZWNpZmljIHRvIHByb3ZpZGVyIGRyaXZlcnMgYW5kIGRhdGEgY2VsbHMgYXMgY2hpbGRyZW4KK29mIHRoaXMgbm9kZS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKyByZWFkLW9ubHk6IE1hcmsgdGhlIHByb3ZpZGVyIGFzIHJlYWQgb25seS4KKworPSBEYXRhIGNlbGxzID0KK1RoZXNlIGFyZSB0aGUgY2hpbGQgbm9kZXMgb2YgdGhlIHByb3ZpZGVyIHdoaWNoIGNvbnRhaW4gZGF0YSBjZWxsCitpbmZvcm1hdGlvbiBsaWtlIG9mZnNldCBhbmQgc2l6ZSBpbiBudm1lbSBwcm92aWRlci4KKworUmVxdWlyZWQgcHJvcGVydGllczoKK3JlZzoJc3BlY2lmaWVzIHRoZSBvZmZzZXQgaW4gYnl0ZSB3aXRoaW4gdGhlIHN0b3JhZ2UgZGV2aWNlLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCitiaXRzOglJcyBwYWlyIG9mIGJpdCBsb2NhdGlvbiBhbmQgbnVtYmVyIG9mIGJpdHMsIHdoaWNoIHNwZWNpZmllcyBvZmZzZXQKKwlpbiBiaXQgYW5kIG51bWJlciBvZiBiaXRzIHdpdGhpbiB0aGUgYWRkcmVzcyByYW5nZSBzcGVjaWZpZWQgYnkgcmVnIHByb3BlcnR5LgorCU9mZnNldCB0YWtlcyB2YWx1ZXMgZnJvbSAwLTcuCisKK0ZvciBleGFtcGxlOgorCisJLyogUHJvdmlkZXIgKi8KKwlxZnByb206IHFmcHJvbUAwMDcwMDAwMCB7CisJCS4uLgorCisJCS8qIERhdGEgY2VsbHMgKi8KKwkJdHNlbnNfY2FsaWJyYXRpb246IGNhbGliQDQwNCB7CisJCQlyZWcgPSA8MHg0MDQgMHgxMD47CisJCX07CisKKwkJdHNlbnNfY2FsaWJyYXRpb25fYmNrcDogY2FsaWJfYmNrcEA1MDQgeworCQkJcmVnID0gPDB4NTA0IDB4MTE+OworCQkJYml0cyA9IDw2IDEyOD4KKwkJfTsKKworCQlwdnNfdmVyc2lvbjogcHZzLXZlcnNpb25ANiB7CisJCQlyZWcgPSA8MHg2IDB4Mj4KKwkJCWJpdHMgPSA8NyAyPgorCQl9OworCisJCXNwZWVkX2Jpbjogc3BlZWQtYmluQGN7CisJCQlyZWcgPSA8MHhjIDB4MT47CisJCQliaXRzID0gPDIgMz47CisKKwkJfTsKKwkJLi4uCisJfTsKKworPSBEYXRhIGNvbnN1bWVycyA9CitBcmUgZGV2aWNlIG5vZGVzIHdoaWNoIGNvbnN1bWUgbnZtZW0gZGF0YSBjZWxscy9wcm92aWRlcnMuCisKK1JlcXVpcmVkLXByb3BlcnRpZXM6Citudm1lbS1jZWxsczogbGlzdCBvZiBwaGFuZGxlIHRvIHRoZSBudm1lbSBkYXRhIGNlbGxzLgorbnZtZW0tY2VsbC1uYW1lczogbmFtZXMgZm9yIHRoZSBlYWNoIG52bWVtLWNlbGxzIHNwZWNpZmllZC4gUmVxdWlyZWQgaWYKKwludm1lbS1jZWxscyBpcyB1c2VkLgorCitPcHRpb25hbC1wcm9wZXJ0aWVzOgorbnZtZW0JOiBsaXN0IG9mIHBoYW5kbGVzIHRvIG52bWVtIHByb3ZpZGVycy4KK252bWVtLW5hbWVzOiBuYW1lcyBmb3IgdGhlIGVhY2ggbnZtZW0gcHJvdmlkZXIuIHJlcXVpcmVkIGlmIG52bWVtIGlzIHVzZWQuCisKK0ZvciBleGFtcGxlOgorCisJdHNlbnMgeworCQkuLi4KKwkJbnZtZW0tY2VsbHMgPSA8JnRzZW5zX2NhbGlicmF0aW9uPjsKKwkJbnZtZW0tY2VsbC1uYW1lcyA9ICJjYWxpYnJhdGlvbiI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9udm1lbS9xZnByb20udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL252bWVtL3FmcHJvbS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFkNjhiNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9udm1lbS9xZnByb20udHh0CkBAIC0wLDAgKzEsMzUgQEAKKz0gUXVhbGNvbW0gUUZQUk9NIGRldmljZSB0cmVlIGJpbmRpbmdzID0KKworVGhpcyBiaW5kaW5nIGlzIGludGVuZGVkIHRvIHJlcHJlc2VudCBRRlBST00gd2hpY2ggaXMgZm91bmQgaW4gbW9zdCBRQ09NIFNPQ3MuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAicWNvbSxxZnByb20iCistIHJlZzogU2hvdWxkIGNvbnRhaW4gcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKworPSBEYXRhIGNlbGxzID0KK0FyZSBjaGlsZCBub2RlcyBvZiBxZnByb20sIGJpbmRpbmdzIG9mIHdoaWNoIGFzIGRlc2NyaWJlZCBpbgorYmluZGluZ3MvbnZtZW0vbnZtZW0udHh0CisKK0V4YW1wbGU6CisKKwlxZnByb206IHFmcHJvbUAwMDcwMDAwMCB7CisJCWNvbXBhdGlibGUgCT0gInFjb20scWZwcm9tIjsKKwkJcmVnCQk9IDwweDAwNzAwMDAwIDB4ODAwMD47CisJCS4uLgorCQkvKiBEYXRhIGNlbGxzICovCisJCXRzZW5zX2NhbGlicmF0aW9uOiBjYWxpYkA0MDQgeworCQkJcmVnID0gPDB4NDQwNCAweDEwPjsKKwkJfTsKKwl9OworCisKKz0gRGF0YSBjb25zdW1lcnMgPQorQXJlIGRldmljZSBub2RlcyB3aGljaCBjb25zdW1lIG52bWVtIGRhdGEgY2VsbHMuCisKK0ZvciBleGFtcGxlOgorCisJdHNlbnMgeworCQkuLi4KKwkJbnZtZW0tY2VsbHMgPSA8JnRzZW5zX2NhbGlicmF0aW9uPjsKKwkJbnZtZW0tY2VsbC1uYW1lcyA9ICJjYWxpYnJhdGlvbiI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9udm1lbS9yb2NrY2hpcC1lZnVzZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbnZtZW0vcm9ja2NoaXAtZWZ1c2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmODZhYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbnZtZW0vcm9ja2NoaXAtZWZ1c2UudHh0CkBAIC0wLDAgKzEsMzggQEAKKz0gUm9ja2NoaXAgZUZ1c2UgZGV2aWNlIHRyZWUgYmluZGluZ3MgPQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgInJvY2tjaGlwLHJvY2tjaGlwLWVmdXNlIgorLSByZWc6IFNob3VsZCBjb250YWluIHRoZSByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGV4YWN0IGVGdXNlIHNpemUKKy0gY2xvY2tzOiBTaG91bGQgYmUgdGhlIGNsb2NrIGlkIG9mIGVGdXNlCistIGNsb2NrLW5hbWVzOiBTaG91bGQgYmUgInBjbGtfZWZ1c2UiCisKKz0gRGF0YSBjZWxscyA9CitBcmUgY2hpbGQgbm9kZXMgb2YgZUZ1c2UsIGJpbmRpbmdzIG9mIHdoaWNoIGFzIGRlc2NyaWJlZCBpbgorYmluZGluZ3MvbnZtZW0vbnZtZW0udHh0CisKK0V4YW1wbGU6CisKKwllZnVzZTogZWZ1c2VAZmZiNDAwMDAgeworCQljb21wYXRpYmxlID0gInJvY2tjaGlwLHJvY2tjaGlwLWVmdXNlIjsKKwkJcmVnID0gPDB4ZmZiNDAwMDAgMHgyMD47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJY2xvY2tzID0gPCZjcnUgUENMS19FRlVTRTI1Nj47CisJCWNsb2NrLW5hbWVzID0gInBjbGtfZWZ1c2UiOworCisJCS8qIERhdGEgY2VsbHMgKi8KKwkJY3B1X2xlYWthZ2U6IGNwdV9sZWFrYWdlIHsKKwkJCXJlZyA9IDwweDE3IDB4MT47CisJCX07CisJfTsKKworPSBEYXRhIGNvbnN1bWVycyA9CitBcmUgZGV2aWNlIG5vZGVzIHdoaWNoIGNvbnN1bWUgbnZtZW0gZGF0YSBjZWxscy4KKworRXhhbXBsZToKKworCWNwdV9sZWFrYWdlIHsKKwkJLi4uCisJCW52bWVtLWNlbGxzID0gPCZjcHVfbGVha2FnZT47CisJCW52bWVtLWNlbGwtbmFtZXMgPSAiY3B1X2xlYWthZ2UiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbnZtZW0vdmY2MTAtb2NvdHAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL252bWVtL3ZmNjEwLW9jb3RwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmVkNDgxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL252bWVtL3ZmNjEwLW9jb3RwLnR4dApAQCAtMCwwICsxLDE5IEBACitPbi1DaGlwIE9UUCBNZW1vcnkgZm9yIEZyZWVzY2FsZSBWeWJyaWQKKworUmVxdWlyZWQgUHJvcGVydGllczoKKyAgY29tcGF0aWJsZToKKyAgLSAiZnNsLHZmNjEwLW9jb3RwIiBmb3IgVkY1eHgvVkY2eHgKKyAgI2FkZHJlc3MtY2VsbHMgOiBTaG91bGQgYmUgMQorICAjc2l6ZS1jZWxscyA6IFNob3VsZCBiZSAxCisgIHJlZyA6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiBPVFAgY29udHJvbGxlciBhbmQgZnVzZSBtYXAgcmVnaXN0ZXJzCisgIGNsb2NrcyA6IGlwZyBjbG9jayB3ZSBhc3NvY2lhdGUgd2l0aCB0aGUgT0NPVFAgcGVyaXBoZXJhbAorCitFeGFtcGxlIGZvciBWeWJyaWQgVkY1eHgvVkY2eHg6CisKKwlvY290cDogb2NvdHBANDAwYTUwMDAgeworCQljb21wYXRpYmxlID0gImZzbCx2ZjYxMC1vY290cCI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJcmVnID0gPDB4NDAwYTUwMDAgMHhDRjA+OworCQljbG9ja3MgPSA8JmNsa3MgVkY2MTBfQ0xLX09DT1RQPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL29wcC9vcHAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL29wcC9vcHAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjYjQ0ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvb3BwL29wcC50eHQKQEAgLTAsMCArMSw0NjUgQEAKK0dlbmVyaWMgT1BQIChPcGVyYXRpbmcgUGVyZm9ybWFuY2UgUG9pbnRzKSBCaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEZXZpY2VzIHdvcmsgYXQgdm9sdGFnZS1jdXJyZW50LWZyZXF1ZW5jeSBjb21iaW5hdGlvbnMgYW5kIHNvbWUgaW1wbGVtZW50YXRpb25zCitoYXZlIHRoZSBsaWJlcnR5IG9mIGNob29zaW5nIHRoZXNlLiBUaGVzZSBjb21iaW5hdGlvbnMgYXJlIGNhbGxlZCBPcGVyYXRpbmcKK1BlcmZvcm1hbmNlIFBvaW50cyBha2EgT1BQcy4gVGhpcyBkb2N1bWVudCBkZWZpbmVzIGJpbmRpbmdzIGZvciB0aGVzZSBPUFBzCithcHBsaWNhYmxlIGFjcm9zcyB3aWRlIHJhbmdlIG9mIGRldmljZXMuIEZvciBpbGx1c3RyYXRpb24gcHVycG9zZSwgdGhpcyBkb2N1bWVudAordXNlcyBDUFUgYXMgYSBkZXZpY2UuCisKK1RoaXMgZG9jdW1lbnQgY29udGFpbiBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBPUFAgYmluZGluZyBhbmQgb25seSBvbmUgb2YgdGhlbQorc2hvdWxkIGJlIHVzZWQgcGVyIGRldmljZS4KKworQmluZGluZyAxOiBvcGVyYXRpbmctcG9pbnRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgYmluZGluZyBvbmx5IHN1cHBvcnRzIHZvbHRhZ2UtZnJlcXVlbmN5IHBhaXJzLgorCitQcm9wZXJ0aWVzOgorLSBvcGVyYXRpbmctcG9pbnRzOiBBbiBhcnJheSBvZiAyLXR1cGxlcyBpdGVtcywgYW5kIGVhY2ggaXRlbSBjb25zaXN0cworICBvZiBmcmVxdWVuY3kgYW5kIHZvbHRhZ2UgbGlrZSA8ZnJlcS1rSHogdm9sLXVWPi4KKwlmcmVxOiBjbG9jayBmcmVxdWVuY3kgaW4ga0h6CisJdm9sOiB2b2x0YWdlIGluIG1pY3Jvdm9sdAorCitFeGFtcGxlczoKKworY3B1QDAgeworCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hOSI7CisJcmVnID0gPDA+OworCW5leHQtbGV2ZWwtY2FjaGUgPSA8JkwyPjsKKwlvcGVyYXRpbmctcG9pbnRzID0gPAorCQkvKiBrSHogICAgdVYgKi8KKwkJNzkyMDAwICAxMTAwMDAwCisJCTM5NjAwMCAgOTUwMDAwCisJCTE5ODAwMCAgODUwMDAwCisJPjsKK307CisKKworQmluZGluZyAyOiBvcGVyYXRpbmctcG9pbnRzLXYyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyogUHJvcGVydHk6IG9wZXJhdGluZy1wb2ludHMtdjIKKworRGV2aWNlcyBzdXBwb3J0aW5nIE9QUHMgbXVzdCBzZXQgdGhlaXIgIm9wZXJhdGluZy1wb2ludHMtdjIiIHByb3BlcnR5IHdpdGgKK3BoYW5kbGUgdG8gYSBPUFAgdGFibGUgaW4gdGhlaXIgRFQgbm9kZS4gVGhlIE9QUCBjb3JlIHdpbGwgdXNlIHRoaXMgcGhhbmRsZSB0bworZmluZCB0aGUgb3BlcmF0aW5nIHBvaW50cyBmb3IgdGhlIGRldmljZS4KKworRGV2aWNlcyBtYXkgd2FudCB0byBjaG9vc2UgT1BQIHRhYmxlcyBhdCBydW50aW1lIGFuZCBzbyBjYW4gcHJvdmlkZSBhIGxpc3Qgb2YKK3BoYW5kbGVzIGhlcmUuIEJ1dCBvbmx5ICpvbmUqIG9mIHRoZW0gc2hvdWxkIGJlIGNob3NlbiBhdCBydW50aW1lLiBUaGlzIG11c3QgYmUKK2FjY29tcGFuaWVkIGJ5IGEgY29ycmVzcG9uZGluZyAib3BlcmF0aW5nLXBvaW50cy1uYW1lcyIgcHJvcGVydHksIHRvIHVuaXF1ZWx5CitpZGVudGlmeSB0aGUgT1BQIHRhYmxlcy4KKworSWYgcmVxdWlyZWQsIHRoaXMgY2FuIGJlIGV4dGVuZGVkIGZvciBTb0MgdmVuZG9yIHNwZWNmaWMgYmluZGluZ3MuIFN1Y2ggYmluZGluZ3MKK3Nob3VsZCBiZSBkb2N1bWVudGVkIGFzIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci88dmVuZG9yPi1vcHAudHh0CithbmQgc2hvdWxkIGhhdmUgYSBjb21wYXRpYmxlIGRlc2NyaXB0aW9uIGxpa2U6ICJvcGVyYXRpbmctcG9pbnRzLXYyLTx2ZW5kb3I+Ii4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gb3BlcmF0aW5nLXBvaW50cy1uYW1lczogTmFtZXMgb2YgT1BQIHRhYmxlcyAocmVxdWlyZWQgaWYgbXVsdGlwbGUgT1BQCisgIHRhYmxlcyBhcmUgcHJlc2VudCksIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoZW0uIFRoZSBzYW1lIGxpc3QgbXVzdCBiZSBwcmVzZW50CisgIGZvciBhbGwgdGhlIENQVXMgd2hpY2ggYXJlIHNoYXJpbmcgY2xvY2svdm9sdGFnZSByYWlscyBhbmQgaGVuY2UgdGhlIE9QUAorICB0YWJsZXMuCisKKyogT1BQIFRhYmxlIE5vZGUKKworVGhpcyBkZXNjcmliZXMgdGhlIE9QUHMgYmVsb25naW5nIHRvIGEgZGV2aWNlLiBUaGlzIG5vZGUgY2FuIGhhdmUgZm9sbG93aW5nCitwcm9wZXJ0aWVzOgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBBbGxvdyBPUFBzIHRvIGV4cHJlc3MgdGhlaXIgY29tcGF0aWJpbGl0eS4gSXQgc2hvdWxkIGJlOgorICAib3BlcmF0aW5nLXBvaW50cy12MiIuCisKKy0gT1BQIG5vZGVzOiBPbmUgb3IgbW9yZSBPUFAgbm9kZXMgZGVzY3JpYmluZyB2b2x0YWdlLWN1cnJlbnQtZnJlcXVlbmN5CisgIGNvbWJpbmF0aW9ucy4gVGhlaXIgbmFtZSBpc24ndCBzaWduaWZpY2FudCBidXQgdGhlaXIgcGhhbmRsZSBjYW4gYmUgdXNlZCB0bworICByZWZlcmVuY2UgYW4gT1BQLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBvcHAtc2hhcmVkOiBJbmRpY2F0ZXMgdGhhdCBkZXZpY2Ugbm9kZXMgdXNpbmcgdGhpcyBPUFAgVGFibGUgTm9kZSdzIHBoYW5kbGUKKyAgc3dpdGNoIHRoZWlyIERWRlMgc3RhdGUgdG9nZXRoZXIsIGkuZS4gdGhleSBzaGFyZSBjbG9jay92b2x0YWdlL2N1cnJlbnQgbGluZXMuCisgIE1pc3NpbmcgcHJvcGVydHkgbWVhbnMgZGV2aWNlcyBoYXZlIGluZGVwZW5kZW50IGNsb2NrL3ZvbHRhZ2UvY3VycmVudCBsaW5lcywKKyAgYnV0IHRoZXkgc2hhcmUgT1BQIHRhYmxlcy4KKworLSBzdGF0dXM6IE1hcmtzIHRoZSBPUFAgdGFibGUgZW5hYmxlZC9kaXNhYmxlZC4KKworCisqIE9QUCBOb2RlCisKK1RoaXMgZGVmaW5lcyB2b2x0YWdlLWN1cnJlbnQtZnJlcXVlbmN5IGNvbWJpbmF0aW9ucyBhbG9uZyB3aXRoIG90aGVyIHJlbGF0ZWQKK3Byb3BlcnRpZXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIG9wcC1oejogRnJlcXVlbmN5IGluIEh6LCBleHByZXNzZWQgYXMgYSA2NC1iaXQgYmlnLWVuZGlhbiBpbnRlZ2VyLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBvcHAtbWljcm92b2x0OiB2b2x0YWdlIGluIG1pY3JvIFZvbHRzLgorCisgIEEgc2luZ2xlIHJlZ3VsYXRvcidzIHZvbHRhZ2UgaXMgc3BlY2lmaWVkIHdpdGggYW4gYXJyYXkgb2Ygc2l6ZSBvbmUgb3IgdGhyZWUuCisgIFNpbmdsZSBlbnRyeSBpcyBmb3IgdGFyZ2V0IHZvbHRhZ2UgYW5kIHRocmVlIGVudHJpZXMgYXJlIGZvciA8dGFyZ2V0IG1pbiBtYXg+CisgIHZvbHRhZ2VzLgorCisgIEVudHJpZXMgZm9yIG11bHRpcGxlIHJlZ3VsYXRvcnMgbXVzdCBiZSBwcmVzZW50IGluIHRoZSBzYW1lIG9yZGVyIGFzCisgIHJlZ3VsYXRvcnMgYXJlIHNwZWNpZmllZCBpbiBkZXZpY2UncyBEVCBub2RlLgorCistIG9wcC1taWNyb2FtcDogVGhlIG1heGltdW0gY3VycmVudCBkcmF3biBieSB0aGUgZGV2aWNlIGluIG1pY3JvYW1wZXJlcworICBjb25zaWRlcmluZyBzeXN0ZW0gc3BlY2lmaWMgcGFyYW1ldGVycyAoc3VjaCBhcyB0cmFuc2llbnRzLCBwcm9jZXNzLCBhZ2luZywKKyAgbWF4aW11bSBvcGVyYXRpbmcgdGVtcGVyYXR1cmUgcmFuZ2UgZXRjLikgYXMgbmVjZXNzYXJ5LiBUaGlzIG1heSBiZSB1c2VkIHRvCisgIHNldCB0aGUgbW9zdCBlZmZpY2llbnQgcmVndWxhdG9yIG9wZXJhdGluZyBtb2RlLgorCisgIFNob3VsZCBvbmx5IGJlIHNldCBpZiBvcHAtbWljcm92b2x0IGlzIHNldCBmb3IgdGhlIE9QUC4KKworICBFbnRyaWVzIGZvciBtdWx0aXBsZSByZWd1bGF0b3JzIG11c3QgYmUgcHJlc2VudCBpbiB0aGUgc2FtZSBvcmRlciBhcworICByZWd1bGF0b3JzIGFyZSBzcGVjaWZpZWQgaW4gZGV2aWNlJ3MgRFQgbm9kZS4gSWYgdGhpcyBwcm9wZXJ0eSBpc24ndCByZXF1aXJlZAorICBmb3IgZmV3IHJlZ3VsYXRvcnMsIHRoZW4gdGhpcyBzaG91bGQgYmUgbWFya2VkIGFzIHplcm8gZm9yIHRoZW0uIElmIGl0IGlzbid0CisgIHJlcXVpcmVkIGZvciBhbnkgcmVndWxhdG9yLCB0aGVuIHRoaXMgcHJvcGVydHkgbmVlZCBub3QgYmUgcHJlc2VudC4KKworLSBjbG9jay1sYXRlbmN5LW5zOiBTcGVjaWZpZXMgdGhlIG1heGltdW0gcG9zc2libGUgdHJhbnNpdGlvbiBsYXRlbmN5IChpbgorICBuYW5vc2Vjb25kcykgZm9yIHN3aXRjaGluZyB0byB0aGlzIE9QUCBmcm9tIGFueSBvdGhlciBPUFAuCisKKy0gdHVyYm8tbW9kZTogTWFya3MgdGhlIE9QUCB0byBiZSB1c2VkIG9ubHkgZm9yIHR1cmJvIG1vZGVzLiBUdXJibyBtb2RlIGlzCisgIGF2YWlsYWJsZSBvbiBzb21lIHBsYXRmb3Jtcywgd2hlcmUgdGhlIGRldmljZSBjYW4gcnVuIG92ZXIgaXRzIG9wZXJhdGluZworICBmcmVxdWVuY3kgZm9yIGEgc2hvcnQgZHVyYXRpb24gb2YgdGltZSBsaW1pdGVkIGJ5IHRoZSBkZXZpY2UncyBwb3dlciwgY3VycmVudAorICBhbmQgdGhlcm1hbCBsaW1pdHMuCisKKy0gb3BwLXN1c3BlbmQ6IE1hcmtzIHRoZSBPUFAgdG8gYmUgdXNlZCBkdXJpbmcgZGV2aWNlIHN1c3BlbmQuIE9ubHkgb25lIE9QUCBpbgorICB0aGUgdGFibGUgc2hvdWxkIGhhdmUgdGhpcy4KKworLSBzdGF0dXM6IE1hcmtzIHRoZSBub2RlIGVuYWJsZWQvZGlzYWJsZWQuCisKK0V4YW1wbGUgMTogU2luZ2xlIGNsdXN0ZXIgRHVhbC1jb3JlIEFSTSBjb3J0ZXggQTksIHN3aXRjaCBEVkZTIHN0YXRlcyB0b2dldGhlci4KKworLyB7CisJY3B1cyB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQljcHVAMCB7CisJCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTkiOworCQkJcmVnID0gPDA+OworCQkJbmV4dC1sZXZlbC1jYWNoZSA9IDwmTDI+OworCQkJY2xvY2tzID0gPCZjbGtfY29udHJvbGxlciAwPjsKKwkJCWNsb2NrLW5hbWVzID0gImNwdSI7CisJCQljcHUtc3VwcGx5ID0gPCZjcHVfc3VwcGx5MD47CisJCQlvcGVyYXRpbmctcG9pbnRzLXYyID0gPCZjcHUwX29wcF90YWJsZT47CisJCX07CisKKwkJY3B1QDEgeworCQkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE5IjsKKwkJCXJlZyA9IDwxPjsKKwkJCW5leHQtbGV2ZWwtY2FjaGUgPSA8JkwyPjsKKwkJCWNsb2NrcyA9IDwmY2xrX2NvbnRyb2xsZXIgMD47CisJCQljbG9jay1uYW1lcyA9ICJjcHUiOworCQkJY3B1LXN1cHBseSA9IDwmY3B1X3N1cHBseTA+OworCQkJb3BlcmF0aW5nLXBvaW50cy12MiA9IDwmY3B1MF9vcHBfdGFibGU+OworCQl9OworCX07CisKKwljcHUwX29wcF90YWJsZTogb3BwX3RhYmxlMCB7CisJCWNvbXBhdGlibGUgPSAib3BlcmF0aW5nLXBvaW50cy12MiI7CisJCW9wcC1zaGFyZWQ7CisKKwkJb3BwMDAgeworCQkJb3BwLWh6ID0gL2JpdHMvIDY0IDwxMDAwMDAwMDAwPjsKKwkJCW9wcC1taWNyb3ZvbHQgPSA8OTcwMDAwIDk3NTAwMCA5ODUwMDA+OworCQkJb3BwLW1pY3JvYW1wID0gPDcwMDAwPjsKKwkJCWNsb2NrLWxhdGVuY3ktbnMgPSA8MzAwMDAwPjsKKwkJCW9wcC1zdXNwZW5kOworCQl9OworCQlvcHAwMSB7CisJCQlvcHAtaHogPSAvYml0cy8gNjQgPDExMDAwMDAwMDA+OworCQkJb3BwLW1pY3Jvdm9sdCA9IDw5ODAwMDAgMTAwMDAwMCAxMDEwMDAwPjsKKwkJCW9wcC1taWNyb2FtcCA9IDw4MDAwMD47CisJCQljbG9jay1sYXRlbmN5LW5zID0gPDMxMDAwMD47CisJCX07CisJCW9wcDAyIHsKKwkJCW9wcC1oeiA9IC9iaXRzLyA2NCA8MTIwMDAwMDAwMD47CisJCQlvcHAtbWljcm92b2x0ID0gPDEwMjUwMDA+OworCQkJY2xvY2stbGF0ZW5jeS1ucyA9IDwyOTAwMDA+OworCQkJdHVyYm8tbW9kZTsKKwkJfTsKKwl9OworfTsKKworRXhhbXBsZSAyOiBTaW5nbGUgY2x1c3RlciwgUXVhZC1jb3JlIFF1YWxjb20ta3JhaXQsIHN3aXRjaGVzIERWRlMgc3RhdGVzCitpbmRlcGVuZGVudGx5LgorCisvIHsKKwljcHVzIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCisJCWNwdUAwIHsKKwkJCWNvbXBhdGlibGUgPSAicWNvbSxrcmFpdCI7CisJCQlyZWcgPSA8MD47CisJCQluZXh0LWxldmVsLWNhY2hlID0gPCZMMj47CisJCQljbG9ja3MgPSA8JmNsa19jb250cm9sbGVyIDA+OworCQkJY2xvY2stbmFtZXMgPSAiY3B1IjsKKwkJCWNwdS1zdXBwbHkgPSA8JmNwdV9zdXBwbHkwPjsKKwkJCW9wZXJhdGluZy1wb2ludHMtdjIgPSA8JmNwdV9vcHBfdGFibGU+OworCQl9OworCisJCWNwdUAxIHsKKwkJCWNvbXBhdGlibGUgPSAicWNvbSxrcmFpdCI7CisJCQlyZWcgPSA8MT47CisJCQluZXh0LWxldmVsLWNhY2hlID0gPCZMMj47CisJCQljbG9ja3MgPSA8JmNsa19jb250cm9sbGVyIDE+OworCQkJY2xvY2stbmFtZXMgPSAiY3B1IjsKKwkJCWNwdS1zdXBwbHkgPSA8JmNwdV9zdXBwbHkxPjsKKwkJCW9wZXJhdGluZy1wb2ludHMtdjIgPSA8JmNwdV9vcHBfdGFibGU+OworCQl9OworCisJCWNwdUAyIHsKKwkJCWNvbXBhdGlibGUgPSAicWNvbSxrcmFpdCI7CisJCQlyZWcgPSA8Mj47CisJCQluZXh0LWxldmVsLWNhY2hlID0gPCZMMj47CisJCQljbG9ja3MgPSA8JmNsa19jb250cm9sbGVyIDI+OworCQkJY2xvY2stbmFtZXMgPSAiY3B1IjsKKwkJCWNwdS1zdXBwbHkgPSA8JmNwdV9zdXBwbHkyPjsKKwkJCW9wZXJhdGluZy1wb2ludHMtdjIgPSA8JmNwdV9vcHBfdGFibGU+OworCQl9OworCisJCWNwdUAzIHsKKwkJCWNvbXBhdGlibGUgPSAicWNvbSxrcmFpdCI7CisJCQlyZWcgPSA8Mz47CisJCQluZXh0LWxldmVsLWNhY2hlID0gPCZMMj47CisJCQljbG9ja3MgPSA8JmNsa19jb250cm9sbGVyIDM+OworCQkJY2xvY2stbmFtZXMgPSAiY3B1IjsKKwkJCWNwdS1zdXBwbHkgPSA8JmNwdV9zdXBwbHkzPjsKKwkJCW9wZXJhdGluZy1wb2ludHMtdjIgPSA8JmNwdV9vcHBfdGFibGU+OworCQl9OworCX07CisKKwljcHVfb3BwX3RhYmxlOiBvcHBfdGFibGUgeworCQljb21wYXRpYmxlID0gIm9wZXJhdGluZy1wb2ludHMtdjIiOworCisJCS8qCisJCSAqIE1pc3Npbmcgb3BwLXNoYXJlZCBwcm9wZXJ0eSBtZWFucyBDUFVzIHN3aXRjaCBEVkZTIHN0YXRlcworCQkgKiBpbmRlcGVuZGVudGx5LgorCQkgKi8KKworCQlvcHAwMCB7CisJCQlvcHAtaHogPSAvYml0cy8gNjQgPDEwMDAwMDAwMDA+OworCQkJb3BwLW1pY3Jvdm9sdCA9IDw5NzAwMDAgOTc1MDAwIDk4NTAwMD47CisJCQlvcHAtbWljcm9hbXAgPSA8NzAwMDA+OworCQkJY2xvY2stbGF0ZW5jeS1ucyA9IDwzMDAwMDA+OworCQkJb3BwLXN1c3BlbmQ7CisJCX07CisJCW9wcDAxIHsKKwkJCW9wcC1oeiA9IC9iaXRzLyA2NCA8MTEwMDAwMDAwMD47CisJCQlvcHAtbWljcm92b2x0ID0gPDk4MDAwMCAxMDAwMDAwIDEwMTAwMDA+OworCQkJb3BwLW1pY3JvYW1wID0gPDgwMDAwPjsKKwkJCWNsb2NrLWxhdGVuY3ktbnMgPSA8MzEwMDAwPjsKKwkJfTsKKwkJb3BwMDIgeworCQkJb3BwLWh6ID0gL2JpdHMvIDY0IDwxMjAwMDAwMDAwPjsKKwkJCW9wcC1taWNyb3ZvbHQgPSA8MTAyNTAwMD47CisJCQlvcHAtbWljcm9hbXAgPSA8OTAwMDA7CisJCQlsb2NrLWxhdGVuY3ktbnMgPSA8MjkwMDAwPjsKKwkJCXR1cmJvLW1vZGU7CisJCX07CisJfTsKK307CisKK0V4YW1wbGUgMzogRHVhbC1jbHVzdGVyLCBEdWFsLWNvcmUgcGVyIGNsdXN0ZXIuIENQVXMgd2l0aGluIGEgY2x1c3RlciBzd2l0Y2gKK0RWRlMgc3RhdGUgdG9nZXRoZXIuCisKKy8geworCWNwdXMgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJY3B1QDAgeworCQkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWE3IjsKKwkJCXJlZyA9IDwwPjsKKwkJCW5leHQtbGV2ZWwtY2FjaGUgPSA8JkwyPjsKKwkJCWNsb2NrcyA9IDwmY2xrX2NvbnRyb2xsZXIgMD47CisJCQljbG9jay1uYW1lcyA9ICJjcHUiOworCQkJY3B1LXN1cHBseSA9IDwmY3B1X3N1cHBseTA+OworCQkJb3BlcmF0aW5nLXBvaW50cy12MiA9IDwmY2x1c3RlcjBfb3BwPjsKKwkJfTsKKworCQljcHVAMSB7CisJCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTciOworCQkJcmVnID0gPDE+OworCQkJbmV4dC1sZXZlbC1jYWNoZSA9IDwmTDI+OworCQkJY2xvY2tzID0gPCZjbGtfY29udHJvbGxlciAwPjsKKwkJCWNsb2NrLW5hbWVzID0gImNwdSI7CisJCQljcHUtc3VwcGx5ID0gPCZjcHVfc3VwcGx5MD47CisJCQlvcGVyYXRpbmctcG9pbnRzLXYyID0gPCZjbHVzdGVyMF9vcHA+OworCQl9OworCisJCWNwdUAxMDAgeworCQkJY29tcGF0aWJsZSA9ICJhcm0sY29ydGV4LWExNSI7CisJCQlyZWcgPSA8MTAwPjsKKwkJCW5leHQtbGV2ZWwtY2FjaGUgPSA8JkwyPjsKKwkJCWNsb2NrcyA9IDwmY2xrX2NvbnRyb2xsZXIgMT47CisJCQljbG9jay1uYW1lcyA9ICJjcHUiOworCQkJY3B1LXN1cHBseSA9IDwmY3B1X3N1cHBseTE+OworCQkJb3BlcmF0aW5nLXBvaW50cy12MiA9IDwmY2x1c3RlcjFfb3BwPjsKKwkJfTsKKworCQljcHVAMTAxIHsKKwkJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hMTUiOworCQkJcmVnID0gPDEwMT47CisJCQluZXh0LWxldmVsLWNhY2hlID0gPCZMMj47CisJCQljbG9ja3MgPSA8JmNsa19jb250cm9sbGVyIDE+OworCQkJY2xvY2stbmFtZXMgPSAiY3B1IjsKKwkJCWNwdS1zdXBwbHkgPSA8JmNwdV9zdXBwbHkxPjsKKwkJCW9wZXJhdGluZy1wb2ludHMtdjIgPSA8JmNsdXN0ZXIxX29wcD47CisJCX07CisJfTsKKworCWNsdXN0ZXIwX29wcDogb3BwX3RhYmxlMCB7CisJCWNvbXBhdGlibGUgPSAib3BlcmF0aW5nLXBvaW50cy12MiI7CisJCW9wcC1zaGFyZWQ7CisKKwkJb3BwMDAgeworCQkJb3BwLWh6ID0gL2JpdHMvIDY0IDwxMDAwMDAwMDAwPjsKKwkJCW9wcC1taWNyb3ZvbHQgPSA8OTcwMDAwIDk3NTAwMCA5ODUwMDA+OworCQkJb3BwLW1pY3JvYW1wID0gPDcwMDAwPjsKKwkJCWNsb2NrLWxhdGVuY3ktbnMgPSA8MzAwMDAwPjsKKwkJCW9wcC1zdXNwZW5kOworCQl9OworCQlvcHAwMSB7CisJCQlvcHAtaHogPSAvYml0cy8gNjQgPDExMDAwMDAwMDA+OworCQkJb3BwLW1pY3Jvdm9sdCA9IDw5ODAwMDAgMTAwMDAwMCAxMDEwMDAwPjsKKwkJCW9wcC1taWNyb2FtcCA9IDw4MDAwMD47CisJCQljbG9jay1sYXRlbmN5LW5zID0gPDMxMDAwMD47CisJCX07CisJCW9wcDAyIHsKKwkJCW9wcC1oeiA9IC9iaXRzLyA2NCA8MTIwMDAwMDAwMD47CisJCQlvcHAtbWljcm92b2x0ID0gPDEwMjUwMDA+OworCQkJb3BwLW1pY3JvYW1wID0gPDkwMDAwPjsKKwkJCWNsb2NrLWxhdGVuY3ktbnMgPSA8MjkwMDAwPjsKKwkJCXR1cmJvLW1vZGU7CisJCX07CisJfTsKKworCWNsdXN0ZXIxX29wcDogb3BwX3RhYmxlMSB7CisJCWNvbXBhdGlibGUgPSAib3BlcmF0aW5nLXBvaW50cy12MiI7CisJCW9wcC1zaGFyZWQ7CisKKwkJb3BwMTAgeworCQkJb3BwLWh6ID0gL2JpdHMvIDY0IDwxMzAwMDAwMDAwPjsKKwkJCW9wcC1taWNyb3ZvbHQgPSA8MTA0NTAwMCAxMDUwMDAwIDEwNTUwMDA+OworCQkJb3BwLW1pY3JvYW1wID0gPDk1MDAwPjsKKwkJCWNsb2NrLWxhdGVuY3ktbnMgPSA8NDAwMDAwPjsKKwkJCW9wcC1zdXNwZW5kOworCQl9OworCQlvcHAxMSB7CisJCQlvcHAtaHogPSAvYml0cy8gNjQgPDE0MDAwMDAwMDA+OworCQkJb3BwLW1pY3Jvdm9sdCA9IDwxMDc1MDAwPjsKKwkJCW9wcC1taWNyb2FtcCA9IDwxMDAwMDA+OworCQkJY2xvY2stbGF0ZW5jeS1ucyA9IDw0MDAwMDA+OworCQl9OworCQlvcHAxMiB7CisJCQlvcHAtaHogPSAvYml0cy8gNjQgPDE1MDAwMDAwMDA+OworCQkJb3BwLW1pY3Jvdm9sdCA9IDwxMDEwMDAwIDExMDAwMDAgMTExMDAwMD47CisJCQlvcHAtbWljcm9hbXAgPSA8OTUwMDA+OworCQkJY2xvY2stbGF0ZW5jeS1ucyA9IDw0MDAwMDA+OworCQkJdHVyYm8tbW9kZTsKKwkJfTsKKwl9OworfTsKKworRXhhbXBsZSA0OiBIYW5kbGluZyBtdWx0aXBsZSByZWd1bGF0b3JzCisKKy8geworCWNwdXMgeworCQljcHVAMCB7CisJCQljb21wYXRpYmxlID0gImFybSxjb3J0ZXgtYTciOworCQkJLi4uCisKKwkJCWNwdS1zdXBwbHkgPSA8JmNwdV9zdXBwbHkwPiwgPCZjcHVfc3VwcGx5MT4sIDwmY3B1X3N1cHBseTI+OworCQkJb3BlcmF0aW5nLXBvaW50cy12MiA9IDwmY3B1MF9vcHBfdGFibGU+OworCQl9OworCX07CisKKwljcHUwX29wcF90YWJsZTogb3BwX3RhYmxlMCB7CisJCWNvbXBhdGlibGUgPSAib3BlcmF0aW5nLXBvaW50cy12MiI7CisJCW9wcC1zaGFyZWQ7CisKKwkJb3BwMDAgeworCQkJb3BwLWh6ID0gL2JpdHMvIDY0IDwxMDAwMDAwMDAwPjsKKwkJCW9wcC1taWNyb3ZvbHQgPSA8OTcwMDAwPiwgLyogU3VwcGx5IDAgKi8KKwkJCQkJPDk2MDAwMD4sIC8qIFN1cHBseSAxICovCisJCQkJCTw5NjAwMDA+OyAvKiBTdXBwbHkgMiAqLworCQkJb3BwLW1pY3JvYW1wID0gIDw3MDAwMD4sICAvKiBTdXBwbHkgMCAqLworCQkJCQk8NzAwMDA+LCAgLyogU3VwcGx5IDEgKi8KKwkJCQkJPDcwMDAwPjsgIC8qIFN1cHBseSAyICovCisJCQljbG9jay1sYXRlbmN5LW5zID0gPDMwMDAwMD47CisJCX07CisKKwkJLyogT1IgKi8KKworCQlvcHAwMCB7CisJCQlvcHAtaHogPSAvYml0cy8gNjQgPDEwMDAwMDAwMDA+OworCQkJb3BwLW1pY3Jvdm9sdCA9IDw5NzAwMDAgOTc1MDAwIDk4NTAwMD4sIC8qIFN1cHBseSAwICovCisJCQkJCTw5NjAwMDAgOTY1MDAwIDk3NTAwMD4sIC8qIFN1cHBseSAxICovCisJCQkJCTw5NjAwMDAgOTY1MDAwIDk3NTAwMD47IC8qIFN1cHBseSAyICovCisJCQlvcHAtbWljcm9hbXAgPSAgPDcwMDAwPiwJCS8qIFN1cHBseSAwICovCisJCQkJCTw3MDAwMD4sCQkvKiBTdXBwbHkgMSAqLworCQkJCQk8NzAwMDA+OwkJLyogU3VwcGx5IDIgKi8KKwkJCWNsb2NrLWxhdGVuY3ktbnMgPSA8MzAwMDAwPjsKKwkJfTsKKworCQkvKiBPUiAqLworCisJCW9wcDAwIHsKKwkJCW9wcC1oeiA9IC9iaXRzLyA2NCA8MTAwMDAwMDAwMD47CisJCQlvcHAtbWljcm92b2x0ID0gPDk3MDAwMCA5NzUwMDAgOTg1MDAwPiwgLyogU3VwcGx5IDAgKi8KKwkJCQkJPDk2MDAwMCA5NjUwMDAgOTc1MDAwPiwgLyogU3VwcGx5IDEgKi8KKwkJCQkJPDk2MDAwMCA5NjUwMDAgOTc1MDAwPjsgLyogU3VwcGx5IDIgKi8KKwkJCW9wcC1taWNyb2FtcCA9ICA8NzAwMDA+LAkJLyogU3VwcGx5IDAgKi8KKwkJCQkJPDA+LAkJCS8qIFN1cHBseSAxIGRvZXNuJ3QgbmVlZCB0aGlzICovCisJCQkJCTw3MDAwMD47CQkvKiBTdXBwbHkgMiAqLworCQkJY2xvY2stbGF0ZW5jeS1ucyA9IDwzMDAwMDA+OworCQl9OworCX07Cit9OworCitFeGFtcGxlIDU6IE11bHRpcGxlIE9QUCB0YWJsZXMKKworLyB7CisJY3B1cyB7CisJCWNwdUAwIHsKKwkJCWNvbXBhdGlibGUgPSAiYXJtLGNvcnRleC1hNyI7CisJCQkuLi4KKworCQkJY3B1LXN1cHBseSA9IDwmY3B1X3N1cHBseT4KKwkJCW9wZXJhdGluZy1wb2ludHMtdjIgPSA8JmNwdTBfb3BwX3RhYmxlX3Nsb3c+LCA8JmNwdTBfb3BwX3RhYmxlX2Zhc3Q+OworCQkJb3BlcmF0aW5nLXBvaW50cy1uYW1lcyA9ICJzbG93IiwgImZhc3QiOworCQl9OworCX07CisKKwljcHUwX29wcF90YWJsZV9zbG93OiBvcHBfdGFibGVfc2xvdyB7CisJCWNvbXBhdGlibGUgPSAib3BlcmF0aW5nLXBvaW50cy12MiI7CisJCXN0YXR1cyA9ICJva2F5IjsKKwkJb3BwLXNoYXJlZDsKKworCQlvcHAwMCB7CisJCQlvcHAtaHogPSAvYml0cy8gNjQgPDYwMDAwMDAwMD47CisJCQkuLi4KKwkJfTsKKworCQlvcHAwMSB7CisJCQlvcHAtaHogPSAvYml0cy8gNjQgPDgwMDAwMDAwMD47CisJCQkuLi4KKwkJfTsKKwl9OworCisJY3B1MF9vcHBfdGFibGVfZmFzdDogb3BwX3RhYmxlX2Zhc3QgeworCQljb21wYXRpYmxlID0gIm9wZXJhdGluZy1wb2ludHMtdjIiOworCQlzdGF0dXMgPSAib2theSI7CisJCW9wcC1zaGFyZWQ7CisKKwkJb3BwMTAgeworCQkJb3BwLWh6ID0gL2JpdHMvIDY0IDwxMDAwMDAwMDAwPjsKKwkJCS4uLgorCQl9OworCisJCW9wcDExIHsKKwkJCW9wcC1oeiA9IC9iaXRzLyA2NCA8MTEwMDAwMDAwMD47CisJCQkuLi4KKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvODN4eC01MTJ4LXBjaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpLzgzeHgtNTEyeC1wY2kudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1YTQ2NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpLzgzeHgtNTEyeC1wY2kudHh0CkBAIC0wLDAgKzEsNDAgQEAKKyogRnJlZXNjYWxlIDgzeHggYW5kIDUxMnggUENJIGJyaWRnZXMKKworRnJlZXNjYWxlIDgzeHggYW5kIDUxMnggU09DcyBpbmNsdWRlIHRoZSBzYW1lIHBjaSBicmlkZ2UgY29yZS4KKworODN4eC81MTJ4IHNwZWNpZmljIG5vdGVzOgorLSByZWc6IHNob3VsZCBjb250YWluIHR3byBhZGRyZXNzIGxlbmd0aCB0dXBsZXMKKyAgICBUaGUgZmlyc3QgaXMgZm9yIHRoZSBpbnRlcm5hbCBwY2kgYnJpZGdlIHJlZ2lzdGVycworICAgIFRoZSBzZWNvbmQgaXMgZm9yIHRoZSBwY2kgY29uZmlnIHNwYWNlIGFjY2VzcyByZWdpc3RlcnMKKworRXhhbXBsZSAoTVBDODMxM0VSREIpCisJcGNpMDogcGNpQGUwMDA4NTAwIHsKKwkJY2VsbC1pbmRleCA9IDwxPjsKKwkJaW50ZXJydXB0LW1hcC1tYXNrID0gPDB4ZjgwMCAweDAgMHgwIDB4Nz47CisJCWludGVycnVwdC1tYXAgPSA8CisJCQkJLyogSURTRUwgMHgwRSAtbWluaSBQQ0kgKi8KKwkJCQkgMHg3MDAwIDB4MCAweDAgMHgxICZpcGljIDE4IDB4OAorCQkJCSAweDcwMDAgMHgwIDB4MCAweDIgJmlwaWMgMTggMHg4CisJCQkJIDB4NzAwMCAweDAgMHgwIDB4MyAmaXBpYyAxOCAweDgKKwkJCQkgMHg3MDAwIDB4MCAweDAgMHg0ICZpcGljIDE4IDB4OAorCisJCQkJLyogSURTRUwgMHgwRiAtIFBDSSBzbG90ICovCisJCQkJIDB4NzgwMCAweDAgMHgwIDB4MSAmaXBpYyAxNyAweDgKKwkJCQkgMHg3ODAwIDB4MCAweDAgMHgyICZpcGljIDE4IDB4OAorCQkJCSAweDc4MDAgMHgwIDB4MCAweDMgJmlwaWMgMTcgMHg4CisJCQkJIDB4NzgwMCAweDAgMHgwIDB4NCAmaXBpYyAxOCAweDg+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpcGljPjsKKwkJaW50ZXJydXB0cyA9IDw2NiAweDg+OworCQlidXMtcmFuZ2UgPSA8MHgwIDB4MD47CisJCXJhbmdlcyA9IDwweDAyMDAwMDAwIDB4MCAweDkwMDAwMDAwIDB4OTAwMDAwMDAgMHgwIDB4MTAwMDAwMDAKKwkJCSAgMHg0MjAwMDAwMCAweDAgMHg4MDAwMDAwMCAweDgwMDAwMDAwIDB4MCAweDEwMDAwMDAwCisJCQkgIDB4MDEwMDAwMDAgMHgwIDB4MDAwMDAwMDAgMHhlMjAwMDAwMCAweDAgMHgwMDEwMDAwMD47CisJCWNsb2NrLWZyZXF1ZW5jeSA9IDw2NjY2NjY2Nj47CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDI+OworCQkjYWRkcmVzcy1jZWxscyA9IDwzPjsKKwkJcmVnID0gPDB4ZTAwMDg1MDAgMHgxMDAJCS8qIGludGVybmFsIHJlZ2lzdGVycyAqLworCQkgICAgICAgMHhlMDAwODMwMCAweDg+OwkJLyogY29uZmlnIHNwYWNlIGFjY2VzcyByZWdpc3RlcnMgKi8KKwkJY29tcGF0aWJsZSA9ICJmc2wsbXBjODM0OS1wY2kiOworCQlkZXZpY2VfdHlwZSA9ICJwY2kiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL2FsdGVyYS1wY2llLW1zaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL2FsdGVyYS1wY2llLW1zaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDljZDNiYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvYWx0ZXJhLXBjaWUtbXNpLnR4dApAQCAtMCwwICsxLDI4IEBACisqIEFsdGVyYSBQQ0llIE1TSSBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CXNob3VsZCBjb250YWluICJhbHRyLG1zaS0xLjAiCistIHJlZzoJCXNwZWNpZmllcyB0aGUgcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZAorCQl0aGUgbGVuZ3RoIG9mIHRoZSBtZW1vcnkgbWFwcGVkIHJlZ2lvbi4KKy0gcmVnLW5hbWVzOgltdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorCQkiY3NyIjogQ1NSIHJlZ2lzdGVycworCQkidmVjdG9yX3NsYXZlIjogdmVjdG9ycyBzbGF2ZSBwb3J0IHJlZ2lvbgorLSBpbnRlcnJ1cHQtcGFyZW50OglpbnRlcnJ1cHQgc291cmNlIHBoYW5kbGUuCistIGludGVycnVwdHM6CXNwZWNpZmllcyB0aGUgaW50ZXJydXB0IHNvdXJjZSBvZiB0aGUgcGFyZW50IGludGVycnVwdAorCQljb250cm9sbGVyLiBUaGUgZm9ybWF0IG9mIHRoZSBpbnRlcnJ1cHQgc3BlY2lmaWVyIGRlcGVuZHMgb24gdGhlCisJCXBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlci4KKy0gbnVtLXZlY3RvcnM6CW51bWJlciBvZiB2ZWN0b3JzLCByYW5nZSAxIHRvIDMyLgorLSBtc2ktY29udHJvbGxlcjoJaW5kaWNhdGVzIHRoYXQgdGhpcyBpcyBNU0kgY29udHJvbGxlciBub2RlCisKKworRXhhbXBsZQorbXNpMDogbXNpQDB4RkYyMDAwMDAgeworCWNvbXBhdGlibGUgPSAiYWx0cixtc2ktMS4wIjsKKwlyZWcgPSA8MHhGRjIwMDAwMCAweDAwMDAwMDEwCisJCTB4RkYyMDAwMTAgMHgwMDAwMDA4MD47CisJcmVnLW5hbWVzID0gImNzciIsICJ2ZWN0b3Jfc2xhdmUiOworCWludGVycnVwdC1wYXJlbnQgPSA8Jmhwc18wX2FybV9naWNfMD47CisJaW50ZXJydXB0cyA9IDwwIDQyIDQ+OworCW1zaS1jb250cm9sbGVyOworCW51bS12ZWN0b3JzID0gPDMyPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL2FsdGVyYS1wY2llLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvYWx0ZXJhLXBjaWUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NTFhNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL2FsdGVyYS1wY2llLnR4dApAQCAtMCwwICsxLDQ5IEBACisqIEFsdGVyYSBQQ0llIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6CXNob3VsZCBjb250YWluICJhbHRyLHBjaWUtcm9vdC1wb3J0LTEuMCIKKy0gcmVnOgkJYSBsaXN0IG9mIHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIGZvciBUWFMgYW5kIENSQS4KKy0gcmVnLW5hbWVzOgltdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorCQkiVHhzIjogVFggc2xhdmUgcG9ydCByZWdpb24KKwkJIkNyYSI6IENvbnRyb2wgcmVnaXN0ZXIgYWNjZXNzIHJlZ2lvbgorLSBpbnRlcnJ1cHQtcGFyZW50OglpbnRlcnJ1cHQgc291cmNlIHBoYW5kbGUuCistIGludGVycnVwdHM6CXNwZWNpZmllcyB0aGUgaW50ZXJydXB0IHNvdXJjZSBvZiB0aGUgcGFyZW50IGludGVycnVwdCBjb250cm9sbGVyLgorCQlUaGUgZm9ybWF0IG9mIHRoZSBpbnRlcnJ1cHQgc3BlY2lmaWVyIGRlcGVuZHMgb24gdGhlIHBhcmVudCBpbnRlcnJ1cHQKKwkJY29udHJvbGxlci4KKy0gZGV2aWNlX3R5cGU6CW11c3QgYmUgInBjaSIKKy0gI2FkZHJlc3MtY2VsbHM6CXNldCB0byA8Mz4KKy0gI3NpemUtY2VsbHM6CXNldCB0byA8Mj4KKy0gI2ludGVycnVwdC1jZWxsczoJc2V0IHRvIDwxPgorLSByYW5nZXM6CQlkZXNjcmliZXMgdGhlIHRyYW5zbGF0aW9uIG9mIGFkZHJlc3NlcyBmb3Igcm9vdCBwb3J0cyBhbmQgc3RhbmRhcmQKKwkJUENJIHJlZ2lvbnMuCistIGludGVycnVwdC1tYXAtbWFzayBhbmQgaW50ZXJydXB0LW1hcDogc3RhbmRhcmQgUENJIHByb3BlcnRpZXMgdG8gZGVmaW5lIHRoZQorCQltYXBwaW5nIG9mIHRoZSBQQ0llIGludGVyZmFjZSB0byBpbnRlcnJ1cHQgbnVtYmVycy4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gbXNpLXBhcmVudDoJTGluayB0byB0aGUgaGFyZHdhcmUgZW50aXR5IHRoYXQgc2VydmVzIGFzIHRoZSBNU0kgY29udHJvbGxlciBmb3IgdGhpcyBQQ0llCisJCWNvbnRyb2xsZXIuCistIGJ1cy1yYW5nZToJUENJIGJ1cyBudW1iZXJzIGNvdmVyZWQKKworRXhhbXBsZQorCXBjaWVfMDogcGNpZUAweGMwMDAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiYWx0cixwY2llLXJvb3QtcG9ydC0xLjAiOworCQlyZWcgPSA8MHhjMDAwMDAwMCAweDIwMDAwMDAwPiwKKwkJCTwweGZmMjIwMDAwIDB4MDAwMDQwMDA+OworCQlyZWctbmFtZXMgPSAiVHhzIiwgIkNyYSI7CisJCWludGVycnVwdC1wYXJlbnQgPSA8Jmhwc18wX2FybV9naWNfMD47CisJCWludGVycnVwdHMgPSA8MCA0MCA0PjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJCWJ1cy1yYW5nZSA9IDwweDAgMHhGRj47CisJCWRldmljZV90eXBlID0gInBjaSI7CisJCW1zaS1wYXJlbnQgPSA8Jm1zaV90b19naWNfZ2VuXzA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwzPjsKKwkJI3NpemUtY2VsbHMgPSA8Mj47CisJCWludGVycnVwdC1tYXAtbWFzayA9IDwwIDAgMCA3PjsKKwkJaW50ZXJydXB0LW1hcCA9IDwwIDAgMCAxICZwY2llXzAgMT4sCisJCQkgICAgICAgICAgICA8MCAwIDAgMiAmcGNpZV8wIDI+LAorCQkJICAgICAgICAgICAgPDAgMCAwIDMgJnBjaWVfMCAzPiwKKwkJCSAgICAgICAgICAgIDwwIDAgMCA0ICZwY2llXzAgND47CisJCXJhbmdlcyA9IDwweDgyMDAwMDAwIDB4MDAwMDAwMDAgMHgwMDAwMDAwMCAweGMwMDAwMDAwIDB4MDAwMDAwMDAgMHgxMDAwMDAwMAorCQkJICAgIDB4ODIwMDAwMDAgMHgwMDAwMDAwMCAweDEwMDAwMDAwIDB4ZDAwMDAwMDAgMHgwMDAwMDAwMCAweDEwMDAwMDAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9hcm0sanVuby1yMS1wY2llLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvYXJtLGp1bm8tcjEtcGNpZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc1MTRjMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvYXJtLGp1bm8tcjEtcGNpZS50eHQKQEAgLTAsMCArMSwxMCBAQAorKiBBUk0gSnVubyBSMSBQQ0llIGludGVyZmFjZQorCitUaGlzIFBDSWUgaG9zdCBjb250cm9sbGVyIGlzIGJhc2VkIG9uIFBMREEgWHByZXNzUklDSDMtQVhJIElQCithbmQgdGh1cyBpbmhlcml0cyBhbGwgdGhlIGNvbW1vbiBwcm9wZXJ0aWVzIGRlZmluZWQgaW4gcGxkYSx4cHJlc3NyaWNoMy1heGkudHh0CithcyB3ZWxsIGFzIHRoZSBiYXNlIHByb3BlcnRpZXMgZGVmaW5lZCBpbiBob3N0LWdlbmVyaWMtcGNpLnR4dC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGU6ICJhcm0sanVuby1yMS1wY2llIgorIC0gZG1hLWNvaGVyZW50OiBUaGUgaG9zdCBjb250cm9sbGVyIGJyaWRnZXMgdGhlIEFYSSB0cmFuc2FjdGlvbnMgaW50byBQQ0llIGJ1cworICAgaW4gYSBtYW5uZXIgdGhhdCBtYWtlcyB0aGUgRE1BIG9wZXJhdGlvbnMgdG8gYXBwZWFyIGNvaGVyZW50IHRvIHRoZSBDUFVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9icmNtLGlwcm9jLXBjaWUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9icmNtLGlwcm9jLXBjaWUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1YzJhODAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL2JyY20saXByb2MtcGNpZS50eHQKQEAgLTAsMCArMSw4MyBAQAorKiBCcm9hZGNvbSBpUHJvYyBQQ0llIGNvbnRyb2xsZXIgd2l0aCB0aGUgcGxhdGZvcm0gYnVzIGludGVyZmFjZQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBNdXN0IGJlICJicmNtLGlwcm9jLXBjaWUiCistIHJlZzogYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIFBDSWUgY29udHJvbGxlciBJL08gcmVnaXN0ZXIgc3BhY2UKKy0gI2ludGVycnVwdC1jZWxsczogc2V0IHRvIDwxPgorLSBpbnRlcnJ1cHQtbWFwLW1hc2sgYW5kIGludGVycnVwdC1tYXAsIHN0YW5kYXJkIFBDSSBwcm9wZXJ0aWVzIHRvIGRlZmluZSB0aGUKKyAgbWFwcGluZyBvZiB0aGUgUENJZSBpbnRlcmZhY2UgdG8gaW50ZXJydXB0IG51bWJlcnMKKy0gbGludXgscGNpLWRvbWFpbjogUENJIGRvbWFpbiBJRC4gU2hvdWxkIGJlIHVuaXF1ZSBmb3IgZWFjaCBob3N0IGNvbnRyb2xsZXIKKy0gYnVzLXJhbmdlOiBQQ0kgYnVzIG51bWJlcnMgY292ZXJlZAorLSAjYWRkcmVzcy1jZWxsczogc2V0IHRvIDwzPgorLSAjc2l6ZS1jZWxsczogc2V0IHRvIDwyPgorLSBkZXZpY2VfdHlwZTogc2V0IHRvICJwY2kiCistIHJhbmdlczogcmFuZ2VzIGZvciB0aGUgUENJIG1lbW9yeSBhbmQgSS9PIHJlZ2lvbnMKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gcGh5czogcGhhbmRsZSBvZiB0aGUgUENJZSBQSFkgZGV2aWNlCistIHBoeS1uYW1lczogbXVzdCBiZSAicGNpZS1waHkiCisKKy0gYnJjbSxwY2llLW9iOiBTb21lIGlQcm9jIFNvQ3MgZG8gbm90IGhhdmUgdGhlIG91dGJvdW5kIGFkZHJlc3MgbWFwcGluZyBkb25lCitieSB0aGUgQVNJQyBhZnRlciBwb3dlciBvbiByZXNldC4gSW4gdGhpcyBjYXNlLCBTVyBuZWVkcyB0byBjb25maWd1cmUgaXQKKworSWYgdGhlIGJyY20scGNpZS1vYiBwcm9wZXJ0eSBpcyBwcmVzZW50LCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgYmVjb21lCitlZmZlY3RpdmU6CisKK1JlcXVpcmVkOgorLSBicmNtLHBjaWUtb2ItYXhpLW9mZnNldDogVGhlIG9mZnNldCBmcm9tIHRoZSBBWEkgYWRkcmVzcyB0byB0aGUgaW50ZXJuYWwKK2FkZHJlc3MgdXNlZCBieSB0aGUgaVByb2MgUENJZSBjb3JlIChub3QgdGhlIFBDSWUgYWRkcmVzcykKKy0gYnJjbSxwY2llLW9iLXdpbmRvdy1zaXplOiBUaGUgb3V0Ym91bmQgYWRkcmVzcyBtYXBwaW5nIHdpbmRvdyBzaXplIChpbiBNQikKKworT3B0aW9uYWw6CistIGJyY20scGNpZS1vYi1vYXJyLXNpemU6IFNvbWUgaVByb2MgU29DcyBuZWVkIHRoZSBPQVJSIHNpemUgYml0IHRvIGJlIHNldCB0bworaW5jcmVhc2UgdGhlIG91dGJvdW5kIHdpbmRvdyBzaXplCisKK0V4YW1wbGU6CisJcGNpZTA6IHBjaWVAMTgwMTIwMDAgeworCQljb21wYXRpYmxlID0gImJyY20saXByb2MtcGNpZSI7CisJCXJlZyA9IDwweDE4MDEyMDAwIDB4MTAwMD47CisKKwkJI2ludGVycnVwdC1jZWxscyA9IDwxPjsKKwkJaW50ZXJydXB0LW1hcC1tYXNrID0gPDAgMCAwIDA+OworCQlpbnRlcnJ1cHQtbWFwID0gPDAgMCAwIDAgJmdpYyBHSUNfU1BJIDEwMCBJUlFfVFlQRV9OT05FPjsKKworCQlsaW51eCxwY2ktZG9tYWluID0gPDA+OworCisJCWJ1cy1yYW5nZSA9IDwweDAwIDB4ZmY+OworCisJCSNhZGRyZXNzLWNlbGxzID0gPDM+OworCQkjc2l6ZS1jZWxscyA9IDwyPjsKKwkJZGV2aWNlX3R5cGUgPSAicGNpIjsKKwkJcmFuZ2VzID0gPDB4ODEwMDAwMDAgMCAwCSAgMHgyODAwMDAwMCAwIDB4MDAwMTAwMDAKKwkJCSAgMHg4MjAwMDAwMCAwIDB4MjAwMDAwMDAgMHgyMDAwMDAwMCAwIDB4MDQwMDAwMDA+OworCisJCXBoeXMgPSA8JnBoeSAwIDU+OworCQlwaHktbmFtZXMgPSAicGNpZS1waHkiOworCisJCWJyY20scGNpZS1vYjsKKwkJYnJjbSxwY2llLW9iLW9hcnItc2l6ZTsKKwkJYnJjbSxwY2llLW9iLWF4aS1vZmZzZXQgPSA8MHgwMDAwMDAwMD47CisJCWJyY20scGNpZS1vYi13aW5kb3ctc2l6ZSA9IDwyNTY+OworCX07CisKKwlwY2llMTogcGNpZUAxODAxMzAwMCB7CisJCWNvbXBhdGlibGUgPSAiYnJjbSxpcHJvYy1wY2llIjsKKwkJcmVnID0gPDB4MTgwMTMwMDAgMHgxMDAwPjsKKworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCQlpbnRlcnJ1cHQtbWFwLW1hc2sgPSA8MCAwIDAgMD47CisJCWludGVycnVwdC1tYXAgPSA8MCAwIDAgMCAmZ2ljIEdJQ19TUEkgMTA2IElSUV9UWVBFX05PTkU+OworCisJCWxpbnV4LHBjaS1kb21haW4gPSA8MT47CisKKwkJYnVzLXJhbmdlID0gPDB4MDAgMHhmZj47CisKKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mz47CisJCSNzaXplLWNlbGxzID0gPDI+OworCQlkZXZpY2VfdHlwZSA9ICJwY2kiOworCQlyYW5nZXMgPSA8MHg4MTAwMDAwMCAwIDAJICAweDQ4MDAwMDAwIDAgMHgwMDAxMDAwMAorCQkJICAweDgyMDAwMDAwIDAgMHg0MDAwMDAwMCAweDQwMDAwMDAwIDAgMHgwNDAwMDAwMD47CisKKwkJcGh5cyA9IDwmcGh5IDEgNj47CisJCXBoeS1uYW1lcyA9ICJwY2llLXBoeSI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvZGVzaWdud2FyZS1wY2llLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvZGVzaWdud2FyZS1wY2llLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjA4NTNkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9kZXNpZ253YXJlLXBjaWUudHh0CkBAIC0wLDAgKzEsMzAgQEAKKyogU3lub3BzeXMgRGVzaWdud2FyZSBQQ0llIGludGVyZmFjZQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgY29udGFpbiAic25wcyxkdy1wY2llIiB0byBpZGVudGlmeSB0aGUgY29yZS4KKy0gcmVnOiBTaG91bGQgY29udGFpbiB0aGUgY29uZmlndXJhdGlvbiBhZGRyZXNzIHNwYWNlLgorLSByZWctbmFtZXM6IE11c3QgYmUgImNvbmZpZyIgZm9yIHRoZSBQQ0llIGNvbmZpZ3VyYXRpb24gc3BhY2UuCisgICAgKFRoZSBvbGQgd2F5IG9mIGdldHRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gYWRkcmVzcyBzcGFjZSBmcm9tICJyYW5nZXMiCisgICAgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIGJlIGF2b2lkZWQuKQorLSAjYWRkcmVzcy1jZWxsczogc2V0IHRvIDwzPgorLSAjc2l6ZS1jZWxsczogc2V0IHRvIDwyPgorLSBkZXZpY2VfdHlwZTogc2V0IHRvICJwY2kiCistIHJhbmdlczogcmFuZ2VzIGZvciB0aGUgUENJIG1lbW9yeSBhbmQgSS9PIHJlZ2lvbnMKKy0gI2ludGVycnVwdC1jZWxsczogc2V0IHRvIDwxPgorLSBpbnRlcnJ1cHQtbWFwLW1hc2sgYW5kIGludGVycnVwdC1tYXA6IHN0YW5kYXJkIFBDSSBwcm9wZXJ0aWVzCisJdG8gZGVmaW5lIHRoZSBtYXBwaW5nIG9mIHRoZSBQQ0llIGludGVyZmFjZSB0byBpbnRlcnJ1cHQKKwludW1iZXJzLgorLSBudW0tbGFuZXM6IG51bWJlciBvZiBsYW5lcyB0byB1c2UKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gbnVtLWxhbmVzOiBudW1iZXIgb2YgbGFuZXMgdG8gdXNlICh0aGlzIHByb3BlcnR5IHNob3VsZCBiZSBzcGVjaWZpZWQgdW5sZXNzCisgIHRoZSBsaW5rIGlzIGJyb3VnaHQgYWxyZWFkeSB1cCBpbiBCSU9TKQorLSByZXNldC1ncGlvOiBncGlvIHBpbiBudW1iZXIgb2YgcG93ZXIgZ29vZCBzaWduYWwKKy0gYnVzLXJhbmdlOiBQQ0kgYnVzIG51bWJlcnMgY292ZXJlZCAoaXQgaXMgcmVjb21tZW5kZWQgZm9yIG5ldyBkZXZpY2V0cmVlcyB0bworICBzcGVjaWZ5IHRoaXMgcHJvcGVydHksIHRvIGtlZXAgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgYSByYW5nZSBvZiAweDAwLTB4ZmYKKyAgaXMgYXNzdW1lZCBpZiBub3QgcHJlc2VudCkKKy0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCisJU2VlIC4uL2Nsb2Nrcy9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCistIGNsb2NrLW5hbWVzOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorCS0gInBjaWUiCisJLSAicGNpZV9idXMiCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL2ZzbCxpbXg2cS1wY2llLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvZnNsLGlteDZxLXBjaWUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmYmJhNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL2ZzbCxpbXg2cS1wY2llLnR4dApAQCAtMCwwICsxLDQwIEBACisqIEZyZWVzY2FsZSBpLk1YNiBQQ0llIGludGVyZmFjZQorCitUaGlzIFBDSWUgaG9zdCBjb250cm9sbGVyIGlzIGJhc2VkIG9uIHRoZSBTeW5vcHNpcyBEZXNpZ253YXJlIFBDSWUgSVAKK2FuZCB0aHVzIGluaGVyaXRzIGFsbCB0aGUgY29tbW9uIHByb3BlcnRpZXMgZGVmaW5lZCBpbiBkZXNpZ253YXJlLXBjaWUudHh0LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiZnNsLGlteDZxLXBjaWUiCistIHJlZzogYmFzZSBhZGRyZXNzZSBhbmQgbGVuZ3RoIG9mIHRoZSBwY2llIGNvbnRyb2xsZXIKKy0gaW50ZXJydXB0czogQSBsaXN0IG9mIGludGVycnVwdCBvdXRwdXRzIG9mIHRoZSBjb250cm9sbGVyLiBNdXN0IGNvbnRhaW4gYW4KKyAgZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gdGhlIGludGVycnVwdC1uYW1lcyBwcm9wZXJ0eS4KKy0gaW50ZXJydXB0LW5hbWVzOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorCS0gIm1zaSI6IFRoZSBpbnRlcnJ1cHQgdGhhdCBpcyBhc3NlcnRlZCB3aGVuIGFuIE1TSSBpcyByZWNlaXZlZAorLSBjbG9jay1uYW1lczogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBlbnRyaWVzOgorCS0gInBjaWVfcGh5IgorCitFeGFtcGxlOgorCisJcGNpZUAweDAxMDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsaW14NnEtcGNpZSIsICJzbnBzLGR3LXBjaWUiOworCQlyZWcgPSA8MHgwMWZmYzAwMCAweDA0MDAwPiwKKwkJICAgICAgPDB4MDFmMDAwMDAgMHg4MDAwMD47CisJCXJlZy1uYW1lcyA9ICJkYmkiLCAiY29uZmlnIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mz47CisJCSNzaXplLWNlbGxzID0gPDI+OworCQlkZXZpY2VfdHlwZSA9ICJwY2kiOworCQlyYW5nZXMgPSA8MHgwMDAwMDgwMCAwIDB4MDFmMDAwMDAgMHgwMWYwMDAwMCAwIDB4MDAwODAwMDAKKwkJCSAgMHg4MTAwMDAwMCAwIDAgICAgICAgICAgMHgwMWY4MDAwMCAwIDB4MDAwMTAwMDAKKwkJCSAgMHg4MjAwMDAwMCAwIDB4MDEwMDAwMDAgMHgwMTAwMDAwMCAwIDB4MDBmMDAwMDA+OworCQludW0tbGFuZXMgPSA8MT47CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSAxMjAgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWludGVycnVwdC1uYW1lcyA9ICJtc2kiOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCQlpbnRlcnJ1cHQtbWFwLW1hc2sgPSA8MCAwIDAgMHg3PjsKKwkJaW50ZXJydXB0LW1hcCA9IDwwIDAgMCAxICZpbnRjIEdJQ19TUEkgMTIzIElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkgICAgICAgICAgICAgICAgPDAgMCAwIDIgJmludGMgR0lDX1NQSSAxMjIgSVJRX1RZUEVfTEVWRUxfSElHSD4sCisJCSAgICAgICAgICAgICAgICA8MCAwIDAgMyAmaW50YyBHSUNfU1BJIDEyMSBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKKwkJICAgICAgICAgICAgICAgIDwwIDAgMCA0ICZpbnRjIEdJQ19TUEkgMTIwIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQljbG9ja3MgPSA8JmNsa3MgMTQ0PiwgPCZjbGtzIDIwNj4sIDwmY2xrcyAxODk+OworCQljbG9jay1uYW1lcyA9ICJwY2llIiwgInBjaWVfYnVzIiwgInBjaWVfcGh5IjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9mc2wscGNpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvZnNsLHBjaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhhYzRhNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvZnNsLHBjaS50eHQKQEAgLTAsMCArMSwyNyBAQAorKiBCdXMgRW51bWVyYXRpb24gYnkgRnJlZXNjYWxlIFBDSS1YIEFnZW50CisKK1R5cGljYWxseSBhbnkgRnJlZXNjYWxlIFBDSS1YIGJyaWRnZSBoYXJkd2FyZSBzdHJhcHBlZCBpbnRvIEFnZW50IG1vZGUKK2lzIHByZXZlbnRlZCBmcm9tIGVudW1lcmF0aW5nIHRoZSBidXMuIFRoZSBQclBNQyBmb3JtLWZhY3RvciByZXF1aXJlcworYWxsIG1lenphbmluZXMgdG8gYmUgUENJLVggQWdlbnRzLCBidXQgb25lIHBlciBzeXN0ZW0gbWF5IHN0aWxsCitlbnVtZXJhdGUgdGhlIGJ1cy4KKworVGhlIHByb3BlcnR5IGRlZmluZWQgYmVsb3cgd2lsbCBhbGxvdyBhIFBDSS1YIGJyaWRnZSB0byBiZSB1c2VkIGZvciBidXMKK2VudW1lcmF0aW9uIGRlc3BpdGUgYmVpbmcgc3RyYXBwZWQgaW50byBBZ2VudCBtb2RlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBmc2wscGNpLWFnZW50LWZvcmNlLWVudW0gOiBUaGVyZSBpcyBubyB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhpcworICBwcm9wZXJ0eS4gVGhlIHByb3BlcnR5IGl0c2VsZiBpcyB0cmVhdGVkIGFzIGEgYm9vbGVhbi4KKworRXhhbXBsZToKKworCS8qIFBDSS1YIGJyaWRnZSBrbm93biB0byBiZSBQclBNQyBNb25hcmNoICovCisJcGNpMDogcGNpQGVmMDA4MDAwIHsKKwkJZnNsLHBjaS1hZ2VudC1mb3JjZS1lbnVtOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwyPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mz47CisJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzg1NDAtcGNpeCIsICJmc2wsbXBjODU0MC1wY2kiOworCQlkZXZpY2VfdHlwZSA9ICJwY2kiOworCQkuLi4KKwkJLi4uCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvaGlzaWxpY29uLXBjaWUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9oaXNpbGljb24tcGNpZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdjNmVkOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvaGlzaWxpY29uLXBjaWUudHh0CkBAIC0wLDAgKzEsNDQgQEAKK0hpU2lsaWNvbiBQQ0llIGhvc3QgYnJpZGdlIERUIGRlc2NyaXB0aW9uCisKK0hpU2lsaWNvbiBQQ0llIGhvc3QgY29udHJvbGxlciBpcyBiYXNlZCBvbiBEZXNpZ253YXJlIFBDSSBjb3JlLgorSXQgc2hhcmVzIGNvbW1vbiBmdW5jdGlvbnMgd2l0aCBQQ0llIERlc2lnbndhcmUgY29yZSBkcml2ZXIgYW5kIGluaGVyaXRzCitjb21tb24gcHJvcGVydGllcyBkZWZpbmVkIGluCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL2Rlc2lnbndhcmUtcGNpLnR4dC4KKworQWRkaXRpb25hbCBwcm9wZXJ0aWVzIGFyZSBkZXNjcmliZWQgaGVyZToKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGNvbnRhaW4gImhpc2lsaWNvbixoaXAwNS1wY2llIi4KKy0gcmVnOiBTaG91bGQgY29udGFpbiByY19kYmksIGNvbmZpZyByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aC4KKy0gcmVnLW5hbWVzOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAicmNfZGJpIjogY29udHJvbGxlciBjb25maWd1cmF0aW9uIHJlZ2lzdGVyczsKKyAgImNvbmZpZyI6IFBDSWUgY29uZmlndXJhdGlvbiBzcGFjZSByZWdpc3RlcnMuCistIG1zaS1wYXJlbnQ6IFNob3VsZCBiZSBpdHNfcGNpZSB3aGljaCBpcyBhbiBJVFMgcmVjZWl2aW5nIE1TSSBpbnRlcnJ1cHRzLgorLSBwb3J0LWlkOiBTaG91bGQgYmUgMCwgMSwgMiBvciAzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBzdGF0dXM6IEVpdGhlciAib2siIG9yICJkaXNhYmxlZCIuCistIGRtYS1jb2hlcmVudDogUHJlc2VudCBpZiBETUEgb3BlcmF0aW9ucyBhcmUgY29oZXJlbnQuCisKK0V4YW1wbGU6CisJcGNpZUAweGIwMDgwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJoaXNpbGljb24saGlwMDUtcGNpZSIsICJzbnBzLGR3LXBjaWUiOworCQlyZWcgPSA8MCAweGIwMDgwMDAwIDAgMHgxMDAwMD4sIDwweDIyMCAweDAwMDAwMDAwIDAgMHgyMDAwPjsKKwkJcmVnLW5hbWVzID0gInJjX2RiaSIsICJjb25maWciOworCQlidXMtcmFuZ2UgPSA8MCAgMTU+OworCQltc2ktcGFyZW50ID0gPCZpdHNfcGNpZT47CisJCSNhZGRyZXNzLWNlbGxzID0gPDM+OworCQkjc2l6ZS1jZWxscyA9IDwyPjsKKwkJZGV2aWNlX3R5cGUgPSAicGNpIjsKKwkJZG1hLWNvaGVyZW50OworCQlyYW5nZXMgPSA8MHg4MjAwMDAwMCAwIDB4MDAwMDAwMDAgMHgyMjAgMHgwMDAwMDAwMCAwIDB4MTAwMDAwMDA+OworCQludW0tbGFuZXMgPSA8OD47CisJCXBvcnQtaWQgPSA8MT47CisJCSNpbnRlcnJ1cHRzLWNlbGxzID0gPDE+OworCQlpbnRlcnJ1cHRzLW1hcC1tYXNrID0gPDB4ZjgwMCAwIDAgNz47CisJCWludGVycnVwdHMtbWFwID0gPDB4MCAwIDAgMSAmbWJpZ2VuX3BjaWUgMSAxMAorCQkJCSAgMHgwIDAgMCAyICZtYmlnZW5fcGNpZSAyIDExCisJCQkJICAweDAgMCAwIDMgJm1iaWdlbl9wY2llIDMgMTIKKwkJCQkgIDB4MCAwIDAgNCAmbWJpZ2VuX3BjaWUgNCAxMz47CisJCXN0YXR1cyA9ICJvayI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvaG9zdC1nZW5lcmljLXBjaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL2hvc3QtZ2VuZXJpYy1wY2kudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmMWQzZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL2hvc3QtZ2VuZXJpYy1wY2kudHh0CkBAIC0wLDAgKzEsMTAxIEBACisqIEdlbmVyaWMgUENJIGhvc3QgY29udHJvbGxlcgorCitGaXJtd2FyZS1pbml0aWFsaXNlZCBQQ0kgaG9zdCBjb250cm9sbGVycyBhbmQgUENJIGVtdWxhdGlvbnMsIHN1Y2ggYXMgdGhlCit2aXJ0aW8tcGNpIGltcGxlbWVudGF0aW9ucyBmb3VuZCBpbiBrdm10b29sIGFuZCBvdGhlciBwYXJhLXZpcnR1YWxpc2VkCitzeXN0ZW1zLCBkbyBub3QgcmVxdWlyZSBkcml2ZXIgc3VwcG9ydCBmb3IgY29tcGxleGl0aWVzIHN1Y2ggYXMgcmVndWxhdG9yCithbmQgY2xvY2sgbWFuYWdlbWVudC4gSW4gZmFjdCwgdGhlIGNvbnRyb2xsZXIgbWF5IG5vdCBldmVuIHJlcXVpcmUgdGhlCitjb25maWd1cmF0aW9uIG9mIGEgY29udHJvbCBpbnRlcmZhY2UgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0sIGluc3RlYWQKK3ByZXNlbnRpbmcgYSBzZXQgb2YgZml4ZWQgd2luZG93cyBkZXNjcmliaW5nIGEgc3Vic2V0IG9mIElPLCBNZW1vcnkgYW5kCitDb25maWd1cmF0aW9uIFNwYWNlcy4KKworU3VjaCBhIGNvbnRyb2xsZXIgY2FuIGJlIGRlc2NyaWJlZCBwdXJlbHkgaW4gdGVybXMgb2YgdGhlIHN0YW5kYXJkaXplZCBkZXZpY2UKK3RyZWUgYmluZGluZ3MgY29tbXVuaWNhdGVkIGluIHBjaS50eHQ6CisKKworUHJvcGVydGllcyBvZiB0aGUgaG9zdCBjb250cm9sbGVyIG5vZGU6CisKKy0gY29tcGF0aWJsZSAgICAgOiBNdXN0IGJlICJwY2ktaG9zdC1jYW0tZ2VuZXJpYyIgb3IgInBjaS1ob3N0LWVjYW0tZ2VuZXJpYyIKKyAgICAgICAgICAgICAgICAgICBkZXBlbmRpbmcgb24gdGhlIGxheW91dCBvZiBjb25maWd1cmF0aW9uIHNwYWNlIChDQU0gdnMKKyAgICAgICAgICAgICAgICAgICBFQ0FNIHJlc3BlY3RpdmVseSkuCisKKy0gZGV2aWNlX3R5cGUgICAgOiBNdXN0IGJlICJwY2kiLgorCistIHJhbmdlcyAgICAgICAgIDogQXMgZGVzY3JpYmVkIGluIElFRUUgU3RkIDEyNzUtMTk5NCwgYnV0IG11c3QgcHJvdmlkZQorICAgICAgICAgICAgICAgICAgIGF0IGxlYXN0IGEgZGVmaW5pdGlvbiBvZiBub24tcHJlZmV0Y2hhYmxlIG1lbW9yeS4gT25lCisgICAgICAgICAgICAgICAgICAgb3IgYm90aCBvZiBwcmVmZXRjaGFibGUgTWVtb3J5IGFuZCBJTyBTcGFjZSBtYXkgYWxzbworICAgICAgICAgICAgICAgICAgIGJlIHByb3ZpZGVkLgorCistIGJ1cy1yYW5nZSAgICAgIDogT3B0aW9uYWwgcHJvcGVydHkgKGFsc28gZGVzY3JpYmVkIGluIElFRUUgU3RkIDEyNzUtMTk5NCkKKyAgICAgICAgICAgICAgICAgICB0byBpbmRpY2F0ZSB0aGUgcmFuZ2Ugb2YgYnVzIG51bWJlcnMgZm9yIHRoaXMgY29udHJvbGxlci4KKyAgICAgICAgICAgICAgICAgICBJZiBhYnNlbnQsIGRlZmF1bHRzIHRvIDwwIDI1NT4gKGkuZS4gYWxsIGJ1c2VzKS4KKworLSAjYWRkcmVzcy1jZWxscyA6IE11c3QgYmUgMy4KKworLSAjc2l6ZS1jZWxscyAgICA6IE11c3QgYmUgMi4KKworLSByZWcgICAgICAgICAgICA6IFRoZSBDb25maWd1cmF0aW9uIFNwYWNlIGJhc2UgYWRkcmVzcyBhbmQgc2l6ZSwgYXMgYWNjZXNzZWQKKyAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBwYXJlbnQgYnVzLiAgVGhlIGJhc2UgYWRkcmVzcyBjb3JyZXNwb25kcyB0bworICAgICAgICAgICAgICAgICAgIHRoZSBmaXJzdCBidXMgaW4gdGhlICJidXMtcmFuZ2UiIHByb3BlcnR5LiAgSWYgbm8KKyAgICAgICAgICAgICAgICAgICAiYnVzLXJhbmdlIiBpcyBzcGVjaWZpZWQsIHRoaXMgd2lsbCBiZSBidXMgMCAodGhlIGRlZmF1bHQpLgorCitQcm9wZXJ0aWVzIG9mIHRoZSAvY2hvc2VuIG5vZGU6CisKKy0gbGludXgscGNpLXByb2JlLW9ubHkKKyAgICAgICAgICAgICAgICAgOiBPcHRpb25hbCBwcm9wZXJ0eSB3aGljaCB0YWtlcyBhIHNpbmdsZS1jZWxsIGFyZ3VtZW50LgorICAgICAgICAgICAgICAgICAgIElmICcwJywgdGhlbiBMaW51eCB3aWxsIGFzc2lnbiBkZXZpY2VzIGluIGl0cyB1c3VhbCBtYW5uZXIsCisgICAgICAgICAgICAgICAgICAgb3RoZXJ3aXNlIGl0IHdpbGwgbm90IHRyeSB0byBhc3NpZ24gZGV2aWNlcyBhbmQgaW5zdGVhZCB1c2UKKyAgICAgICAgICAgICAgICAgICB0aGVtIGFzIHRoZXkgYXJlIGNvbmZpZ3VyZWQgYWxyZWFkeS4KKworQ29uZmlndXJhdGlvbiBTcGFjZSBpcyBhc3N1bWVkIHRvIGJlIG1lbW9yeS1tYXBwZWQgKGFzIG9wcG9zZWQgdG8gYmVpbmcKK2FjY2Vzc2VkIHZpYSBhbiBpb3BvcnQpIGFuZCBsYWlkIG91dCB3aXRoIGEgZGlyZWN0IGNvcnJlc3BvbmRlbmNlIHRvIHRoZQorZ2VvZ3JhcGh5IG9mIGEgUENJIGJ1cyBhZGRyZXNzIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIHZhcmlvdXMgY29tcG9uZW50cyB0bworZm9ybSBhbiBvZmZzZXQuCisKK0ZvciBDQU0sIHRoaXMgMjQtYml0IG9mZnNldCBpczoKKworICAgICAgICBjZmdfb2Zmc2V0KGJ1cywgZGV2aWNlLCBmdW5jdGlvbiwgcmVnaXN0ZXIpID0KKyAgICAgICAgICAgICAgICAgICBidXMgPDwgMTYgfCBkZXZpY2UgPDwgMTEgfCBmdW5jdGlvbiA8PCA4IHwgcmVnaXN0ZXIKKworV2hpbHN0IEVDQU0gZXh0ZW5kcyB0aGlzIGJ5IDQgYml0cyB0byBhY2NvbW1vZGF0ZSA0ayBvZiBmdW5jdGlvbiBzcGFjZToKKworICAgICAgICBjZmdfb2Zmc2V0KGJ1cywgZGV2aWNlLCBmdW5jdGlvbiwgcmVnaXN0ZXIpID0KKyAgICAgICAgICAgICAgICAgICBidXMgPDwgMjAgfCBkZXZpY2UgPDwgMTUgfCBmdW5jdGlvbiA8PCAxMiB8IHJlZ2lzdGVyCisKK0ludGVycnVwdCBtYXBwaW5nIGlzIGV4YWN0bHkgYXMgZGVzY3JpYmVkIGluIGBPcGVuIEZpcm13YXJlIFJlY29tbWVuZGVkCitQcmFjdGljZTogSW50ZXJydXB0IE1hcHBpbmcnIGFuZCByZXF1aXJlcyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisKKy0gI2ludGVycnVwdC1jZWxscyAgIDogTXVzdCBiZSAxCisKKy0gaW50ZXJydXB0LW1hcCAgICAgIDogPHNlZSBhZm9yZW1lbnRpb25lZCBzcGVjaWZpY2F0aW9uPgorCistIGludGVycnVwdC1tYXAtbWFzayA6IDxzZWUgYWZvcmVtZW50aW9uZWQgc3BlY2lmaWNhdGlvbj4KKworCitFeGFtcGxlOgorCitwY2kgeworICAgIGNvbXBhdGlibGUgPSAicGNpLWhvc3QtY2FtLWdlbmVyaWMiCisgICAgZGV2aWNlX3R5cGUgPSAicGNpIjsKKyAgICAjYWRkcmVzcy1jZWxscyA9IDwzPjsKKyAgICAjc2l6ZS1jZWxscyA9IDwyPjsKKyAgICBidXMtcmFuZ2UgPSA8MHgwIDB4MT47CisKKyAgICAvLyBDUFVfUEhZU0lDQUwoMikgIFNJWkUoMikKKyAgICByZWcgPSA8MHgwIDB4NDAwMDAwMDAgIDB4MCAweDEwMDAwMDA+OworCisgICAgLy8gQlVTX0FERFJFU1MoMykgIENQVV9QSFlTSUNBTCgyKSAgU0laRSgyKQorICAgIHJhbmdlcyA9IDwweDAxMDAwMDAwIDB4MCAweDAxMDAwMDAwICAweDAgMHgwMTAwMDAwMCAgMHgwIDB4MDAwMTAwMDA+LAorICAgICAgICAgICAgIDwweDAyMDAwMDAwIDB4MCAweDQxMDAwMDAwICAweDAgMHg0MTAwMDAwMCAgMHgwIDB4M2YwMDAwMDA+OworCisKKyAgICAjaW50ZXJydXB0LWNlbGxzID0gPDB4MT47CisKKyAgICAvLyBQQ0lfREVWSUNFKDMpICBJTlQjKDEpICBDT05UUk9MTEVSKFBIQU5ETEUpICBDT05UUk9MTEVSX0RBVEEoMykKKyAgICBpbnRlcnJ1cHQtbWFwID0gPCAgMHgwIDB4MCAweDAgIDB4MSAgJmdpYyAgMHgwIDB4NCAweDEKKyAgICAgICAgICAgICAgICAgICAgIDB4ODAwIDB4MCAweDAgIDB4MSAgJmdpYyAgMHgwIDB4NSAweDEKKyAgICAgICAgICAgICAgICAgICAgMHgxMDAwIDB4MCAweDAgIDB4MSAgJmdpYyAgMHgwIDB4NiAweDEKKyAgICAgICAgICAgICAgICAgICAgMHgxODAwIDB4MCAweDAgIDB4MSAgJmdpYyAgMHgwIDB4NyAweDE+OworCisgICAgLy8gUENJX0RFVklDRSgzKSAgSU5UIygxKQorICAgIGludGVycnVwdC1tYXAtbWFzayA9IDwweGY4MDAgMHgwIDB4MCAgMHg3PjsKK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvbGF5ZXJzY2FwZS1wY2kudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9sYXllcnNjYXBlLXBjaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM3Njc4NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvbGF5ZXJzY2FwZS1wY2kudHh0CkBAIC0wLDAgKzEsNTIgQEAKK0ZyZWVzY2FsZSBMYXllcnNjYXBlIFBDSWUgY29udHJvbGxlcgorCitUaGlzIFBDSWUgaG9zdCBjb250cm9sbGVyIGlzIGJhc2VkIG9uIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIFBDSWUgSVAKK2FuZCB0aHVzIGluaGVyaXRzIGFsbCB0aGUgY29tbW9uIHByb3BlcnRpZXMgZGVmaW5lZCBpbiBkZXNpZ253YXJlLXBjaWUudHh0LgorCitUaGlzIGNvbnRyb2xsZXIgZGVyaXZlcyBpdHMgY2xvY2tzIGZyb20gdGhlIFJlc2V0IENvbmZpZ3VyYXRpb24gV29yZCAoUkNXKQord2hpY2ggaXMgdXNlZCB0byBkZXNjcmliZSB0aGUgUExMIHNldHRpbmdzIGF0IHRoZSB0aW1lIG9mIGNoaXAtcmVzZXQuCisKK0Fsc28gYXMgcGVyIHRoZSBhdmFpbGFibGUgUmVmZXJlbmNlIE1hbnVhbHMsIHRoZXJlIGlzIG5vIHNwZWNpZmljICd2ZXJzaW9uJworcmVnaXN0ZXIgYXZhaWxhYmxlIGluIHRoZSBGcmVlc2NhbGUgUENJZSBjb250cm9sbGVyIHJlZ2lzdGVyIHNldCwKK3doaWNoIGNhbiBhbGxvdyBkZXRlcm1pbmluZyB0aGUgdW5kZXJseWluZyBEZXNpZ25XYXJlIFBDSWUgY29udHJvbGxlciB2ZXJzaW9uCitpbmZvcm1hdGlvbi4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGNvbnRhaW4gdGhlIHBsYXRmb3JtIGlkZW50aWZpZXIgc3VjaCBhczoKKyAgICAgICAgImZzbCxsczEwMjFhLXBjaWUiLCAic25wcyxkdy1wY2llIgorICAgICAgICAiZnNsLGxzMjA4MGEtcGNpZSIsICJzbnBzLGR3LXBjaWUiCistIHJlZzogYmFzZSBhZGRyZXNzZXMgYW5kIGxlbmd0aHMgb2YgdGhlIFBDSWUgY29udHJvbGxlcgorLSBpbnRlcnJ1cHRzOiBBIGxpc3Qgb2YgaW50ZXJydXB0IG91dHB1dHMgb2YgdGhlIGNvbnRyb2xsZXIuIE11c3QgY29udGFpbiBhbgorICBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiB0aGUgaW50ZXJydXB0LW5hbWVzIHByb3BlcnR5LgorLSBpbnRlcnJ1cHQtbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgICJpbnRyIjogVGhlIGludGVycnVwdCB0aGF0IGlzIGFzc2VydGVkIGZvciBjb250cm9sbGVyIGludGVycnVwdHMKKy0gZnNsLHBjaWUtc2NmZzogTXVzdCBpbmNsdWRlIHR3byBlbnRyaWVzLgorICBUaGUgZmlyc3QgZW50cnkgbXVzdCBiZSBhIGxpbmsgdG8gdGhlIFNDRkcgZGV2aWNlIG5vZGUKKyAgVGhlIHNlY29uZCBlbnRyeSBtdXN0IGJlICcwJyBvciAnMScgYmFzZWQgb24gcGh5c2ljYWwgUENJZSBjb250cm9sbGVyIGluZGV4LgorICBUaGlzIGlzIHVzZWQgdG8gZ2V0IFNDRkcgUEVYTiByZWdpc3RlcnMKKworRXhhbXBsZToKKworCXBjaWVAMzQwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGxzMTAyMWEtcGNpZSIsICJzbnBzLGR3LXBjaWUiOworCQlyZWcgPSA8MHgwMCAweDAzNDAwMDAwIDB4MCAweDAwMDEwMDAwICAgLyogY29udHJvbGxlciByZWdpc3RlcnMgKi8KKwkJICAgICAgIDB4NDAgMHgwMDAwMDAwMCAweDAgMHgwMDAwMjAwMD47IC8qIGNvbmZpZ3VyYXRpb24gc3BhY2UgKi8KKwkJcmVnLW5hbWVzID0gInJlZ3MiLCAiY29uZmlnIjsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDE3NyBJUlFfVFlQRV9MRVZFTF9ISUdIPjsgLyogY29udHJvbGxlciBpbnRlcnJ1cHQgKi8KKwkJaW50ZXJydXB0LW5hbWVzID0gImludHIiOworCQlmc2wscGNpZS1zY2ZnID0gPCZzY2ZnIDA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwzPjsKKwkJI3NpemUtY2VsbHMgPSA8Mj47CisJCWRldmljZV90eXBlID0gInBjaSI7CisJCW51bS1sYW5lcyA9IDw0PjsKKwkJYnVzLXJhbmdlID0gPDB4MCAweGZmPjsKKwkJcmFuZ2VzID0gPDB4ODEwMDAwMDAgMHgwIDB4MDAwMDAwMDAgMHg0MCAweDAwMDEwMDAwIDB4MCAweDAwMDEwMDAwICAgLyogZG93bnN0cmVhbSBJL08gKi8KKwkJCSAgMHhjMjAwMDAwMCAweDAgMHgyMDAwMDAwMCAweDQwIDB4MjAwMDAwMDAgMHgwIDB4MjAwMDAwMDAgICAvKiBwcmVmZXRjaGFibGUgbWVtb3J5ICovCisJCQkgIDB4ODIwMDAwMDAgMHgwIDB4NDAwMDAwMDAgMHg0MCAweDQwMDAwMDAwIDB4MCAweDQwMDAwMDAwPjsgLyogbm9uLXByZWZldGNoYWJsZSBtZW1vcnkgKi8KKwkJI2ludGVycnVwdC1jZWxscyA9IDwxPjsKKwkJaW50ZXJydXB0LW1hcC1tYXNrID0gPDAgMCAwIDc+OworCQlpbnRlcnJ1cHQtbWFwID0gPDAwMDAgMCAwIDEgJmdpYyBHSUNfU1BJIDkxICBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKKwkJCQk8MDAwMCAwIDAgMiAmZ2ljIEdJQ19TUEkgMTg4IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJCTwwMDAwIDAgMCAzICZnaWMgR0lDX1NQSSAxOTAgSVJRX1RZUEVfTEVWRUxfSElHSD4sCisJCQkJPDAwMDAgMCAwIDQgJmdpYyBHSUNfU1BJIDE5MiBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9tdmVidS1wY2kudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9tdmVidS1wY2kudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4YzcxNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL212ZWJ1LXBjaS50eHQKQEAgLTAsMCArMSwzMDQgQEAKKyogTWFydmVsbCBFQlUgUENJZSBpbnRlcmZhY2VzCisKK01hbmRhdG9yeSBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgICBtYXJ2ZWxsLGFybWFkYS0zNzAtcGNpZQorICAgIG1hcnZlbGwsYXJtYWRhLXhwLXBjaWUKKyAgICBtYXJ2ZWxsLGRvdmUtcGNpZQorICAgIG1hcnZlbGwsa2lya3dvb2QtcGNpZQorLSAjYWRkcmVzcy1jZWxscywgc2V0IHRvIDwzPgorLSAjc2l6ZS1jZWxscywgc2V0IHRvIDwyPgorLSAjaW50ZXJydXB0LWNlbGxzLCBzZXQgdG8gPDE+CistIGJ1cy1yYW5nZTogUENJIGJ1cyBudW1iZXJzIGNvdmVyZWQKKy0gZGV2aWNlX3R5cGUsIHNldCB0byAicGNpIgorLSByYW5nZXM6IHJhbmdlcyBkZXNjcmliaW5nIHRoZSBNTUlPIHJlZ2lzdGVycyB0byBjb250cm9sIHRoZSBQQ0llCisgIGludGVyZmFjZXMsIGFuZCByYW5nZXMgZGVzY3JpYmluZyB0aGUgTUJ1cyB3aW5kb3dzIG5lZWRlZCB0byBhY2Nlc3MKKyAgdGhlIG1lbW9yeSBhbmQgSS9PIHJlZ2lvbnMgb2YgZWFjaCBQQ0llIGludGVyZmFjZS4KKy0gbXNpLXBhcmVudDogTGluayB0byB0aGUgaGFyZHdhcmUgZW50aXR5IHRoYXQgc2VydmVzIGFzIHRoZSBNZXNzYWdlCisgIFNpZ25hbGVkIEludGVycnVwdCBjb250cm9sbGVyIGZvciB0aGlzIFBDSSBjb250cm9sbGVyLgorCitUaGUgcmFuZ2VzIGRlc2NyaWJpbmcgdGhlIE1NSU8gcmVnaXN0ZXJzIGhhdmUgdGhlIGZvbGxvd2luZyBsYXlvdXQ6CisKKyAgICAweDgyMDAwMDAwIDAgciBNQlVTX0lEKDB4ZjAsIDB4MDEpIHIgMCBzCisKK3doZXJlOgorCisgICogciBpcyBhIDMyLWJpdHMgdmFsdWUgdGhhdCBnaXZlcyB0aGUgb2Zmc2V0IG9mIHRoZSBNTUlPCisgIHJlZ2lzdGVycyBvZiB0aGlzIFBDSWUgaW50ZXJmYWNlLCBmcm9tIHRoZSBiYXNlIG9mIHRoZSBpbnRlcm5hbAorICByZWdpc3RlcnMuCisKKyAgKiBzIGlzIGEgMzItYml0cyB2YWx1ZSB0aGF0IGdpdmUgdGhlIHNpemUgb2YgdGhpcyBNTUlPCisgIHJlZ2lzdGVycyBhcmVhLiBUaGlzIHJhbmdlIGVudHJ5IHRyYW5zbGF0ZXMgdGhlICcweDgyMDAwMDAwIDAgcicgUENJCisgIGFkZHJlc3MgaW50byB0aGUgJ01CVVNfSUQoMHhmMCwgMHgwMSkgcicgQ1BVIGFkZHJlc3MsIHdoaWNoIGlzIHBhcnQKKyAgb2YgdGhlIGludGVybmFsIHJlZ2lzdGVyIHdpbmRvdyAoYXMgaWRlbnRpZmllZCBieSBNQlVTX0lEKDB4ZjAsCisgIDB4MDEpKS4KKworVGhlIHJhbmdlcyBkZXNjcmliaW5nIHRoZSBNQnVzIHdpbmRvd3MgaGF2ZSB0aGUgZm9sbG93aW5nIGxheW91dDoKKworICAgIDB4OHQwMDAwMDAgcyAwICAgICBNQlVTX0lEKHcsIGEpIDAgMSAwCisKK3doZXJlOgorCisgICAqIHQgaXMgdGhlIHR5cGUgb2YgdGhlIE1CdXMgd2luZG93IChhcyBkZWZpbmVkIGJ5IHRoZSBzdGFuZGFyZCBQQ0kgRFQKKyAgIGJpbmRpbmdzKSwgMSBmb3IgSS9PIGFuZCAyIGZvciBtZW1vcnkuCisKKyAgICogcyBpcyB0aGUgUENJIHNsb3QgdGhhdCBjb3JyZXNwb25kcyB0byB0aGlzIFBDSWUgaW50ZXJmYWNlCisKKyAgICogdyBpcyB0aGUgJ3RhcmdldCBJRCcgdmFsdWUgZm9yIHRoZSBNQnVzIHdpbmRvdworCisgICAqIGEgdGhlICdhdHRyaWJ1dGUnIHZhbHVlIGZvciB0aGUgTUJ1cyB3aW5kb3cuCisKK1NpbmNlIHRoZSBsb2NhdGlvbiBhbmQgc2l6ZSBvZiB0aGUgZGlmZmVyZW50IE1CdXMgd2luZG93cyBpcyBub3QgZml4ZWQgaW4KK2hhcmR3YXJlLCBhbmQgb25seSBkZXRlcm1pbmVkIGluIHJ1bnRpbWUsIHRob3NlIHJhbmdlcyBjb3ZlciB0aGUgZnVsbCBmaXJzdAorNCBHQiBvZiB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZSwgYW5kIGRvIG5vdCB0cmFuc2xhdGUgaW50byBhIHZhbGlkIENQVQorYWRkcmVzcy4KKworSW4gYWRkaXRpb24sIHRoZSBkZXZpY2UgdHJlZSBub2RlIG11c3QgaGF2ZSBzdWItbm9kZXMgZGVzY3JpYmluZyBlYWNoCitQQ0llIGludGVyZmFjZSwgaGF2aW5nIHRoZSBmb2xsb3dpbmcgbWFuZGF0b3J5IHByb3BlcnRpZXM6CisKKy0gcmVnOiB1c2VkIG9ubHkgZm9yIGludGVycnVwdCBtYXBwaW5nLCBzbyBvbmx5IHRoZSBmaXJzdCBmb3VyIGJ5dGVzCisgIGFyZSB1c2VkIHRvIHJlZmVyIHRvIHRoZSBjb3JyZWN0IGJ1cyBudW1iZXIgYW5kIGRldmljZSBudW1iZXIuCistIGFzc2lnbmVkLWFkZHJlc3NlczogcmVmZXJlbmNlIHRvIHRoZSBNTUlPIHJlZ2lzdGVycyB1c2VkIHRvIGNvbnRyb2wKKyAgdGhpcyBQQ0llIGludGVyZmFjZS4KKy0gY2xvY2tzOiB0aGUgY2xvY2sgYXNzb2NpYXRlZCB0byB0aGlzIFBDSWUgaW50ZXJmYWNlCistIG1hcnZlbGwscGNpZS1wb3J0OiB0aGUgcGh5c2ljYWwgUENJZSBwb3J0IG51bWJlcgorLSBzdGF0dXM6IGVpdGhlciAiZGlzYWJsZWQiIG9yICJva2F5IgorLSBkZXZpY2VfdHlwZSwgc2V0IHRvICJwY2kiCistICNhZGRyZXNzLWNlbGxzLCBzZXQgdG8gPDM+CistICNzaXplLWNlbGxzLCBzZXQgdG8gPDI+CistICNpbnRlcnJ1cHQtY2VsbHMsIHNldCB0byA8MT4KKy0gcmFuZ2VzLCB0cmFuc2xhdGluZyB0aGUgTUJ1cyB3aW5kb3dzIHJhbmdlcyBvZiB0aGUgcGFyZW50IG5vZGUgaW50bworICBzdGFuZGFyZCBQQ0kgYWRkcmVzc2VzLgorLSBpbnRlcnJ1cHQtbWFwLW1hc2sgYW5kIGludGVycnVwdC1tYXAsIHN0YW5kYXJkIFBDSSBwcm9wZXJ0aWVzIHRvCisgIGRlZmluZSB0aGUgbWFwcGluZyBvZiB0aGUgUENJZSBpbnRlcmZhY2UgdG8gaW50ZXJydXB0IG51bWJlcnMuCisKK2FuZCB0aGUgZm9sbG93aW5nIG9wdGlvbmFsIHByb3BlcnRpZXM6CistIG1hcnZlbGwscGNpZS1sYW5lOiB0aGUgcGh5c2ljYWwgUENJZSBsYW5lIG51bWJlciwgZm9yIHBvcnRzIGhhdmluZworICBtdWx0aXBsZSBsYW5lcy4gSWYgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZm91bmQsIHdlIGFzc3VtZSB0aGF0IHRoZQorICB2YWx1ZSBpcyAwLgorLSByZXNldC1ncGlvczogb3B0aW9uYWwgZ3BpbyB0byBQRVJTVCMKKy0gcmVzZXQtZGVsYXktdXM6IGRlbGF5IGluIHVzIHRvIHdhaXQgYWZ0ZXIgcmVzZXQgZGUtYXNzZXJ0aW9uCisKK0V4YW1wbGU6CisKK3BjaWUtY29udHJvbGxlciB7CisJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLGFybWFkYS14cC1wY2llIjsKKwlzdGF0dXMgPSAiZGlzYWJsZWQiOworCWRldmljZV90eXBlID0gInBjaSI7CisKKwkjYWRkcmVzcy1jZWxscyA9IDwzPjsKKwkjc2l6ZS1jZWxscyA9IDwyPjsKKworCWJ1cy1yYW5nZSA9IDwweDAwIDB4ZmY+OworCW1zaS1wYXJlbnQgPSA8Jm1waWM+OworCisJcmFuZ2VzID0KKwkgICAgICAgPDB4ODIwMDAwMDAgMCAweDQwMDAwIE1CVVNfSUQoMHhmMCwgMHgwMSkgMHg0MDAwMCAwIDB4MDAwMDIwMDAJLyogUG9ydCAwLjAgcmVnaXN0ZXJzICovCisJCTB4ODIwMDAwMDAgMCAweDQyMDAwIE1CVVNfSUQoMHhmMCwgMHgwMSkgMHg0MjAwMCAwIDB4MDAwMDIwMDAJLyogUG9ydCAyLjAgcmVnaXN0ZXJzICovCisJCTB4ODIwMDAwMDAgMCAweDQ0MDAwIE1CVVNfSUQoMHhmMCwgMHgwMSkgMHg0NDAwMCAwIDB4MDAwMDIwMDAJLyogUG9ydCAwLjEgcmVnaXN0ZXJzICovCisJCTB4ODIwMDAwMDAgMCAweDQ4MDAwIE1CVVNfSUQoMHhmMCwgMHgwMSkgMHg0ODAwMCAwIDB4MDAwMDIwMDAJLyogUG9ydCAwLjIgcmVnaXN0ZXJzICovCisJCTB4ODIwMDAwMDAgMCAweDRjMDAwIE1CVVNfSUQoMHhmMCwgMHgwMSkgMHg0YzAwMCAwIDB4MDAwMDIwMDAJLyogUG9ydCAwLjMgcmVnaXN0ZXJzICovCisJCTB4ODIwMDAwMDAgMCAweDgwMDAwIE1CVVNfSUQoMHhmMCwgMHgwMSkgMHg4MDAwMCAwIDB4MDAwMDIwMDAJLyogUG9ydCAxLjAgcmVnaXN0ZXJzICovCisJCTB4ODIwMDAwMDAgMCAweDgyMDAwIE1CVVNfSUQoMHhmMCwgMHgwMSkgMHg4MjAwMCAwIDB4MDAwMDIwMDAJLyogUG9ydCAzLjAgcmVnaXN0ZXJzICovCisJCTB4ODIwMDAwMDAgMCAweDg0MDAwIE1CVVNfSUQoMHhmMCwgMHgwMSkgMHg4NDAwMCAwIDB4MDAwMDIwMDAJLyogUG9ydCAxLjEgcmVnaXN0ZXJzICovCisJCTB4ODIwMDAwMDAgMCAweDg4MDAwIE1CVVNfSUQoMHhmMCwgMHgwMSkgMHg4ODAwMCAwIDB4MDAwMDIwMDAJLyogUG9ydCAxLjIgcmVnaXN0ZXJzICovCisJCTB4ODIwMDAwMDAgMCAweDhjMDAwIE1CVVNfSUQoMHhmMCwgMHgwMSkgMHg4YzAwMCAwIDB4MDAwMDIwMDAJLyogUG9ydCAxLjMgcmVnaXN0ZXJzICovCisJCTB4ODIwMDAwMDAgMHgxIDAgICAgIE1CVVNfSUQoMHgwNCwgMHhlOCkgMCAxIDAgLyogUG9ydCAwLjAgTUVNICovCisJCTB4ODEwMDAwMDAgMHgxIDAgICAgIE1CVVNfSUQoMHgwNCwgMHhlMCkgMCAxIDAgLyogUG9ydCAwLjAgSU8gICovCisJCTB4ODIwMDAwMDAgMHgyIDAgICAgIE1CVVNfSUQoMHgwNCwgMHhkOCkgMCAxIDAgLyogUG9ydCAwLjEgTUVNICovCisJCTB4ODEwMDAwMDAgMHgyIDAgICAgIE1CVVNfSUQoMHgwNCwgMHhkMCkgMCAxIDAgLyogUG9ydCAwLjEgSU8gICovCisJCTB4ODIwMDAwMDAgMHgzIDAgICAgIE1CVVNfSUQoMHgwNCwgMHhiOCkgMCAxIDAgLyogUG9ydCAwLjIgTUVNICovCisJCTB4ODEwMDAwMDAgMHgzIDAgICAgIE1CVVNfSUQoMHgwNCwgMHhiMCkgMCAxIDAgLyogUG9ydCAwLjIgSU8gICovCisJCTB4ODIwMDAwMDAgMHg0IDAgICAgIE1CVVNfSUQoMHgwNCwgMHg3OCkgMCAxIDAgLyogUG9ydCAwLjMgTUVNICovCisJCTB4ODEwMDAwMDAgMHg0IDAgICAgIE1CVVNfSUQoMHgwNCwgMHg3MCkgMCAxIDAgLyogUG9ydCAwLjMgSU8gICovCisKKwkJMHg4MjAwMDAwMCAweDUgMCAgICAgTUJVU19JRCgweDA4LCAweGU4KSAwIDEgMCAvKiBQb3J0IDEuMCBNRU0gKi8KKwkJMHg4MTAwMDAwMCAweDUgMCAgICAgTUJVU19JRCgweDA4LCAweGUwKSAwIDEgMCAvKiBQb3J0IDEuMCBJTyAgKi8KKwkJMHg4MjAwMDAwMCAweDYgMCAgICAgTUJVU19JRCgweDA4LCAweGQ4KSAwIDEgMCAvKiBQb3J0IDEuMSBNRU0gKi8KKwkJMHg4MTAwMDAwMCAweDYgMCAgICAgTUJVU19JRCgweDA4LCAweGQwKSAwIDEgMCAvKiBQb3J0IDEuMSBJTyAgKi8KKwkJMHg4MjAwMDAwMCAweDcgMCAgICAgTUJVU19JRCgweDA4LCAweGI4KSAwIDEgMCAvKiBQb3J0IDEuMiBNRU0gKi8KKwkJMHg4MTAwMDAwMCAweDcgMCAgICAgTUJVU19JRCgweDA4LCAweGIwKSAwIDEgMCAvKiBQb3J0IDEuMiBJTyAgKi8KKwkJMHg4MjAwMDAwMCAweDggMCAgICAgTUJVU19JRCgweDA4LCAweDc4KSAwIDEgMCAvKiBQb3J0IDEuMyBNRU0gKi8KKwkJMHg4MTAwMDAwMCAweDggMCAgICAgTUJVU19JRCgweDA4LCAweDcwKSAwIDEgMCAvKiBQb3J0IDEuMyBJTyAgKi8KKworCQkweDgyMDAwMDAwIDB4OSAwICAgICBNQlVTX0lEKDB4MDQsIDB4ZjgpIDAgMSAwIC8qIFBvcnQgMi4wIE1FTSAqLworCQkweDgxMDAwMDAwIDB4OSAwICAgICBNQlVTX0lEKDB4MDQsIDB4ZjApIDAgMSAwIC8qIFBvcnQgMi4wIElPICAqLworCisJCTB4ODIwMDAwMDAgMHhhIDAgICAgIE1CVVNfSUQoMHgwOCwgMHhmOCkgMCAxIDAgLyogUG9ydCAzLjAgTUVNICovCisJCTB4ODEwMDAwMDAgMHhhIDAgICAgIE1CVVNfSUQoMHgwOCwgMHhmMCkgMCAxIDAgLyogUG9ydCAzLjAgSU8gICovPjsKKworCXBjaWVAMSwwIHsKKwkJZGV2aWNlX3R5cGUgPSAicGNpIjsKKwkJYXNzaWduZWQtYWRkcmVzc2VzID0gPDB4ODIwMDA4MDAgMCAweDQwMDAwIDAgMHgyMDAwPjsKKwkJcmVnID0gPDB4MDgwMCAwIDAgMCAwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mz47CisJCSNzaXplLWNlbGxzID0gPDI+OworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCQlyYW5nZXMgPSA8MHg4MjAwMDAwMCAwIDAgMHg4MjAwMDAwMCAweDEgMCAxIDAKKwkJCSAgMHg4MTAwMDAwMCAwIDAgMHg4MTAwMDAwMCAweDEgMCAxIDA+OworCQlpbnRlcnJ1cHQtbWFwLW1hc2sgPSA8MCAwIDAgMD47CisJCWludGVycnVwdC1tYXAgPSA8MCAwIDAgMCAmbXBpYyA1OD47CisJCW1hcnZlbGwscGNpZS1wb3J0ID0gPDA+OworCQltYXJ2ZWxsLHBjaWUtbGFuZSA9IDwwPjsKKwkJLyogbG93LWFjdGl2ZSBQRVJTVCMgcmVzZXQgb24gR1BJTyAyNSAqLworCQlyZXNldC1ncGlvcyA9IDwmZ3BpbzAgMjUgMT47CisJCS8qIHdhaXQgMjBtcyBmb3IgZGV2aWNlIHNldHRsZSBhZnRlciByZXNldCBkZWFzc2VydGlvbiAqLworCQlyZXNldC1kZWxheS11cyA9IDwyMDAwMD47CisJCWNsb2NrcyA9IDwmZ2F0ZWNsayA1PjsKKwkJc3RhdHVzID0gImRpc2FibGVkIjsKKwl9OworCisJcGNpZUAyLDAgeworCQlkZXZpY2VfdHlwZSA9ICJwY2kiOworCQlhc3NpZ25lZC1hZGRyZXNzZXMgPSA8MHg4MjAwMTAwMCAwIDB4NDQwMDAgMCAweDIwMDA+OworCQlyZWcgPSA8MHgxMDAwIDAgMCAwIDA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwzPjsKKwkJI3NpemUtY2VsbHMgPSA8Mj47CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJCXJhbmdlcyA9IDwweDgyMDAwMDAwIDAgMCAweDgyMDAwMDAwIDB4MiAwIDEgMAorCQkJICAweDgxMDAwMDAwIDAgMCAweDgxMDAwMDAwIDB4MiAwIDEgMD47CisJCWludGVycnVwdC1tYXAtbWFzayA9IDwwIDAgMCAwPjsKKwkJaW50ZXJydXB0LW1hcCA9IDwwIDAgMCAwICZtcGljIDU5PjsKKwkJbWFydmVsbCxwY2llLXBvcnQgPSA8MD47CisJCW1hcnZlbGwscGNpZS1sYW5lID0gPDE+OworCQljbG9ja3MgPSA8JmdhdGVjbGsgNj47CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJfTsKKworCXBjaWVAMywwIHsKKwkJZGV2aWNlX3R5cGUgPSAicGNpIjsKKwkJYXNzaWduZWQtYWRkcmVzc2VzID0gPDB4ODIwMDE4MDAgMCAweDQ4MDAwIDAgMHgyMDAwPjsKKwkJcmVnID0gPDB4MTgwMCAwIDAgMCAwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mz47CisJCSNzaXplLWNlbGxzID0gPDI+OworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCQlyYW5nZXMgPSA8MHg4MjAwMDAwMCAwIDAgMHg4MjAwMDAwMCAweDMgMCAxIDAKKwkJCSAgMHg4MTAwMDAwMCAwIDAgMHg4MTAwMDAwMCAweDMgMCAxIDA+OworCQlpbnRlcnJ1cHQtbWFwLW1hc2sgPSA8MCAwIDAgMD47CisJCWludGVycnVwdC1tYXAgPSA8MCAwIDAgMCAmbXBpYyA2MD47CisJCW1hcnZlbGwscGNpZS1wb3J0ID0gPDA+OworCQltYXJ2ZWxsLHBjaWUtbGFuZSA9IDwyPjsKKwkJY2xvY2tzID0gPCZnYXRlY2xrIDc+OworCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCX07CisKKwlwY2llQDQsMCB7CisJCWRldmljZV90eXBlID0gInBjaSI7CisJCWFzc2lnbmVkLWFkZHJlc3NlcyA9IDwweDgyMDAyMDAwIDAgMHg0YzAwMCAwIDB4MjAwMD47CisJCXJlZyA9IDwweDIwMDAgMCAwIDAgMD47CisJCSNhZGRyZXNzLWNlbGxzID0gPDM+OworCQkjc2l6ZS1jZWxscyA9IDwyPjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwxPjsKKwkJcmFuZ2VzID0gPDB4ODIwMDAwMDAgMCAwIDB4ODIwMDAwMDAgMHg0IDAgMSAwCisJCQkgIDB4ODEwMDAwMDAgMCAwIDB4ODEwMDAwMDAgMHg0IDAgMSAwPjsKKwkJaW50ZXJydXB0LW1hcC1tYXNrID0gPDAgMCAwIDA+OworCQlpbnRlcnJ1cHQtbWFwID0gPDAgMCAwIDAgJm1waWMgNjE+OworCQltYXJ2ZWxsLHBjaWUtcG9ydCA9IDwwPjsKKwkJbWFydmVsbCxwY2llLWxhbmUgPSA8Mz47CisJCWNsb2NrcyA9IDwmZ2F0ZWNsayA4PjsKKwkJc3RhdHVzID0gImRpc2FibGVkIjsKKwl9OworCisJcGNpZUA1LDAgeworCQlkZXZpY2VfdHlwZSA9ICJwY2kiOworCQlhc3NpZ25lZC1hZGRyZXNzZXMgPSA8MHg4MjAwMjgwMCAwIDB4ODAwMDAgMCAweDIwMDA+OworCQlyZWcgPSA8MHgyODAwIDAgMCAwIDA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwzPjsKKwkJI3NpemUtY2VsbHMgPSA8Mj47CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJCXJhbmdlcyA9IDwweDgyMDAwMDAwIDAgMCAweDgyMDAwMDAwIDB4NSAwIDEgMAorCQkJICAweDgxMDAwMDAwIDAgMCAweDgxMDAwMDAwIDB4NSAwIDEgMD47CisJCWludGVycnVwdC1tYXAtbWFzayA9IDwwIDAgMCAwPjsKKwkJaW50ZXJydXB0LW1hcCA9IDwwIDAgMCAwICZtcGljIDYyPjsKKwkJbWFydmVsbCxwY2llLXBvcnQgPSA8MT47CisJCW1hcnZlbGwscGNpZS1sYW5lID0gPDA+OworCQljbG9ja3MgPSA8JmdhdGVjbGsgOT47CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJfTsKKworCXBjaWVANiwwIHsKKwkJZGV2aWNlX3R5cGUgPSAicGNpIjsKKwkJYXNzaWduZWQtYWRkcmVzc2VzID0gPDB4ODIwMDMwMDAgMCAweDg0MDAwIDAgMHgyMDAwPjsKKwkJcmVnID0gPDB4MzAwMCAwIDAgMCAwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mz47CisJCSNzaXplLWNlbGxzID0gPDI+OworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCQlyYW5nZXMgPSA8MHg4MjAwMDAwMCAwIDAgMHg4MjAwMDAwMCAweDYgMCAxIDAKKwkJCSAgMHg4MTAwMDAwMCAwIDAgMHg4MTAwMDAwMCAweDYgMCAxIDA+OworCQlpbnRlcnJ1cHQtbWFwLW1hc2sgPSA8MCAwIDAgMD47CisJCWludGVycnVwdC1tYXAgPSA8MCAwIDAgMCAmbXBpYyA2Mz47CisJCW1hcnZlbGwscGNpZS1wb3J0ID0gPDE+OworCQltYXJ2ZWxsLHBjaWUtbGFuZSA9IDwxPjsKKwkJY2xvY2tzID0gPCZnYXRlY2xrIDEwPjsKKwkJc3RhdHVzID0gImRpc2FibGVkIjsKKwl9OworCisJcGNpZUA3LDAgeworCQlkZXZpY2VfdHlwZSA9ICJwY2kiOworCQlhc3NpZ25lZC1hZGRyZXNzZXMgPSA8MHg4MjAwMzgwMCAwIDB4ODgwMDAgMCAweDIwMDA+OworCQlyZWcgPSA8MHgzODAwIDAgMCAwIDA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwzPjsKKwkJI3NpemUtY2VsbHMgPSA8Mj47CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJCXJhbmdlcyA9IDwweDgyMDAwMDAwIDAgMCAweDgyMDAwMDAwIDB4NyAwIDEgMAorCQkJICAweDgxMDAwMDAwIDAgMCAweDgxMDAwMDAwIDB4NyAwIDEgMD47CisJCWludGVycnVwdC1tYXAtbWFzayA9IDwwIDAgMCAwPjsKKwkJaW50ZXJydXB0LW1hcCA9IDwwIDAgMCAwICZtcGljIDY0PjsKKwkJbWFydmVsbCxwY2llLXBvcnQgPSA8MT47CisJCW1hcnZlbGwscGNpZS1sYW5lID0gPDI+OworCQljbG9ja3MgPSA8JmdhdGVjbGsgMTE+OworCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCX07CisKKwlwY2llQDgsMCB7CisJCWRldmljZV90eXBlID0gInBjaSI7CisJCWFzc2lnbmVkLWFkZHJlc3NlcyA9IDwweDgyMDA0MDAwIDAgMHg4YzAwMCAwIDB4MjAwMD47CisJCXJlZyA9IDwweDQwMDAgMCAwIDAgMD47CisJCSNhZGRyZXNzLWNlbGxzID0gPDM+OworCQkjc2l6ZS1jZWxscyA9IDwyPjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwxPjsKKwkJcmFuZ2VzID0gPDB4ODIwMDAwMDAgMCAwIDB4ODIwMDAwMDAgMHg4IDAgMSAwCisJCQkgIDB4ODEwMDAwMDAgMCAwIDB4ODEwMDAwMDAgMHg4IDAgMSAwPjsKKwkJaW50ZXJydXB0LW1hcC1tYXNrID0gPDAgMCAwIDA+OworCQlpbnRlcnJ1cHQtbWFwID0gPDAgMCAwIDAgJm1waWMgNjU+OworCQltYXJ2ZWxsLHBjaWUtcG9ydCA9IDwxPjsKKwkJbWFydmVsbCxwY2llLWxhbmUgPSA8Mz47CisJCWNsb2NrcyA9IDwmZ2F0ZWNsayAxMj47CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJfTsKKworCXBjaWVAOSwwIHsKKwkJZGV2aWNlX3R5cGUgPSAicGNpIjsKKwkJYXNzaWduZWQtYWRkcmVzc2VzID0gPDB4ODIwMDQ4MDAgMCAweDQyMDAwIDAgMHgyMDAwPjsKKwkJcmVnID0gPDB4NDgwMCAwIDAgMCAwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mz47CisJCSNzaXplLWNlbGxzID0gPDI+OworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCQlyYW5nZXMgPSA8MHg4MjAwMDAwMCAwIDAgMHg4MjAwMDAwMCAweDkgMCAxIDAKKwkJCSAgMHg4MTAwMDAwMCAwIDAgMHg4MTAwMDAwMCAweDkgMCAxIDA+OworCQlpbnRlcnJ1cHQtbWFwLW1hc2sgPSA8MCAwIDAgMD47CisJCWludGVycnVwdC1tYXAgPSA8MCAwIDAgMCAmbXBpYyA5OT47CisJCW1hcnZlbGwscGNpZS1wb3J0ID0gPDI+OworCQltYXJ2ZWxsLHBjaWUtbGFuZSA9IDwwPjsKKwkJY2xvY2tzID0gPCZnYXRlY2xrIDI2PjsKKwkJc3RhdHVzID0gImRpc2FibGVkIjsKKwl9OworCisJcGNpZUAxMCwwIHsKKwkJZGV2aWNlX3R5cGUgPSAicGNpIjsKKwkJYXNzaWduZWQtYWRkcmVzc2VzID0gPDB4ODIwMDUwMDAgMCAweDgyMDAwIDAgMHgyMDAwPjsKKwkJcmVnID0gPDB4NTAwMCAwIDAgMCAwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mz47CisJCSNzaXplLWNlbGxzID0gPDI+OworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCQlyYW5nZXMgPSA8MHg4MjAwMDAwMCAwIDAgMHg4MjAwMDAwMCAweGEgMCAxIDAKKwkJCSAgMHg4MTAwMDAwMCAwIDAgMHg4MTAwMDAwMCAweGEgMCAxIDA+OworCQlpbnRlcnJ1cHQtbWFwLW1hc2sgPSA8MCAwIDAgMD47CisJCWludGVycnVwdC1tYXAgPSA8MCAwIDAgMCAmbXBpYyAxMDM+OworCQltYXJ2ZWxsLHBjaWUtcG9ydCA9IDwzPjsKKwkJbWFydmVsbCxwY2llLWxhbmUgPSA8MD47CisJCWNsb2NrcyA9IDwmZ2F0ZWNsayAyNz47CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL252aWRpYSx0ZWdyYTIwLXBjaWUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9udmlkaWEsdGVncmEyMC1wY2llLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTMyMWFlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9udmlkaWEsdGVncmEyMC1wY2llLnR4dApAQCAtMCwwICsxLDIyNCBAQAorTlZJRElBIFRlZ3JhIFBDSWUgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBGb3IgVGVncmEyMCwgbXVzdCBjb250YWluICJudmlkaWEsdGVncmEyMC1wY2llIi4gIEZvciBUZWdyYTMwLAorICAibnZpZGlhLHRlZ3JhMzAtcGNpZSIuICBGb3IgVGVncmExMjQsIG11c3QgY29udGFpbiAibnZpZGlhLHRlZ3JhMTI0LXBjaWUiLgorICBPdGhlcndpc2UsIG11c3QgY29udGFpbiAibnZpZGlhLDxjaGlwPi1wY2llIiwgcGx1cyBvbmUgb2YgdGhlIGFib3ZlLCB3aGVyZQorICA8Y2hpcD4gaXMgdGVncmExMzIgb3IgdGVncmEyMTAuCistIGRldmljZV90eXBlOiBNdXN0IGJlICJwY2kiCistIHJlZzogQSBsaXN0IG9mIHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIGZvciBlYWNoIHNldCBvZiBjb250cm9sbGVyCisgIHJlZ2lzdGVycy4gTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIHRoZSByZWctbmFtZXMgcHJvcGVydHkuCistIHJlZy1uYW1lczogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgInBhZHMiOiBQQURTIHJlZ2lzdGVycworICAiYWZpIjogQUZJIHJlZ2lzdGVycworICAiY3MiOiBjb25maWd1cmF0aW9uIHNwYWNlIHJlZ2lvbgorLSBpbnRlcnJ1cHRzOiBBIGxpc3Qgb2YgaW50ZXJydXB0IG91dHB1dHMgb2YgdGhlIGNvbnRyb2xsZXIuIE11c3QgY29udGFpbiBhbgorICBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiB0aGUgaW50ZXJydXB0LW5hbWVzIHByb3BlcnR5LgorLSBpbnRlcnJ1cHQtbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgICJpbnRyIjogVGhlIFRlZ3JhIGludGVycnVwdCB0aGF0IGlzIGFzc2VydGVkIGZvciBjb250cm9sbGVyIGludGVycnVwdHMKKyAgIm1zaSI6IFRoZSBUZWdyYSBpbnRlcnJ1cHQgdGhhdCBpcyBhc3NlcnRlZCB3aGVuIGFuIE1TSSBpcyByZWNlaXZlZAorLSBidXMtcmFuZ2U6IFJhbmdlIG9mIGJ1cyBudW1iZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRyb2xsZXIKKy0gI2FkZHJlc3MtY2VsbHM6IEFkZHJlc3MgcmVwcmVzZW50YXRpb24gZm9yIHJvb3QgcG9ydHMgKG11c3QgYmUgMykKKyAgLSBjZWxsIDAgc3BlY2lmaWVzIHRoZSBidXMgYW5kIGRldmljZSBudW1iZXJzIG9mIHRoZSByb290IHBvcnQ6CisgICAgWzIzOjE2XTogYnVzIG51bWJlcgorICAgIFsxNToxMV06IGRldmljZSBudW1iZXIKKyAgLSBjZWxsIDEgZGVub3RlcyB0aGUgdXBwZXIgMzIgYWRkcmVzcyBiaXRzIGFuZCBzaG91bGQgYmUgMAorICAtIGNlbGwgMiBjb250YWlucyB0aGUgbG93ZXIgMzIgYWRkcmVzcyBiaXRzIGFuZCBpcyB1c2VkIHRvIHRyYW5zbGF0ZSB0byB0aGUKKyAgICBDUFUgYWRkcmVzcyBzcGFjZQorLSAjc2l6ZS1jZWxsczogU2l6ZSByZXByZXNlbnRhdGlvbiBmb3Igcm9vdCBwb3J0cyAobXVzdCBiZSAyKQorLSByYW5nZXM6IERlc2NyaWJlcyB0aGUgdHJhbnNsYXRpb24gb2YgYWRkcmVzc2VzIGZvciByb290IHBvcnRzIGFuZCBzdGFuZGFyZAorICBQQ0kgcmVnaW9ucy4gVGhlIGVudHJpZXMgbXVzdCBiZSA2IGNlbGxzIGVhY2gsIHdoZXJlIHRoZSBmaXJzdCB0aHJlZSBjZWxscworICBjb3JyZXNwb25kIHRvIHRoZSBhZGRyZXNzIGFzIGRlc2NyaWJlZCBmb3IgdGhlICNhZGRyZXNzLWNlbGxzIHByb3BlcnR5CisgIGFib3ZlLCB0aGUgZm91cnRoIGNlbGwgaXMgdGhlIHBoeXNpY2FsIENQVSBhZGRyZXNzIHRvIHRyYW5zbGF0ZSB0byBhbmQgdGhlCisgIGZpZnRoIGFuZCBzaXggY2VsbHMgYXJlIGFzIGRlc2NyaWJlZCBmb3IgdGhlICNzaXplLWNlbGxzIHByb3BlcnR5IGFib3ZlLgorICAtIFRoZSBmaXJzdCB0d28gZW50cmllcyBhcmUgZXhwZWN0ZWQgdG8gdHJhbnNsYXRlIHRoZSBhZGRyZXNzZXMgZm9yIHRoZSByb290CisgICAgcG9ydCByZWdpc3RlcnMsIHdoaWNoIGFyZSByZWZlcmVuY2VkIGJ5IHRoZSBhc3NpZ25lZC1hZGRyZXNzZXMgcHJvcGVydHkgb2YKKyAgICB0aGUgcm9vdCBwb3J0IG5vZGVzIChzZWUgYmVsb3cpLgorICAtIFRoZSByZW1haW5pbmcgZW50cmllcyBzZXR1cCB0aGUgbWFwcGluZyBmb3IgdGhlIHN0YW5kYXJkIEkvTywgbWVtb3J5IGFuZAorICAgIHByZWZldGNoYWJsZSBQQ0kgcmVnaW9ucy4gVGhlIGZpcnN0IGNlbGwgZGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiByZWdpb24KKyAgICB0aGF0IGlzIHNldHVwOgorICAgIC0gMHg4MTAwMDAwMDogSS9PIG1lbW9yeSByZWdpb24KKyAgICAtIDB4ODIwMDAwMDA6IG5vbi1wcmVmZXRjaGFibGUgbWVtb3J5IHJlZ2lvbgorICAgIC0gMHhjMjAwMDAwMDogcHJlZmV0Y2hhYmxlIG1lbW9yeSByZWdpb24KKyAgUGxlYXNlIHJlZmVyIHRvIHRoZSBzdGFuZGFyZCBQQ0kgYnVzIGJpbmRpbmcgZG9jdW1lbnQgZm9yIGEgbW9yZSBkZXRhaWxlZAorICBleHBsYW5hdGlvbi4KKy0gI2ludGVycnVwdC1jZWxsczogU2l6ZSByZXByZXNlbnRhdGlvbiBmb3IgaW50ZXJydXB0cyAobXVzdCBiZSAxKQorLSBpbnRlcnJ1cHQtbWFwLW1hc2sgYW5kIGludGVycnVwdC1tYXA6IFN0YW5kYXJkIFBDSSBJUlEgbWFwcGluZyBwcm9wZXJ0aWVzCisgIFBsZWFzZSByZWZlciB0byB0aGUgc3RhbmRhcmQgUENJIGJ1cyBiaW5kaW5nIGRvY3VtZW50IGZvciBhIG1vcmUgZGV0YWlsZWQKKyAgZXhwbGFuYXRpb24uCistIGNsb2NrczogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIGNsb2NrLW5hbWVzLgorICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKy0gY2xvY2stbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIC0gcGV4CisgIC0gYWZpCisgIC0gcGxsX2UKKyAgLSBjbWwgKG5vdCByZXF1aXJlZCBmb3IgVGVncmEyMCkKKy0gcmVzZXRzOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gcmVzZXQtbmFtZXMuCisgIFNlZSAuLi9yZXNldC9yZXNldC50eHQgZm9yIGRldGFpbHMuCistIHJlc2V0LW5hbWVzOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAtIHBleAorICAtIGFmaQorICAtIHBjaWVfeAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIG9uIFRlZ3JhMTI0IGFuZCBsYXRlcjoKKy0gcGh5czogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIHBoeS1uYW1lcy4KKy0gcGh5LW5hbWVzOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAtIHBjaWUKKworUG93ZXIgc3VwcGxpZXMgZm9yIFRlZ3JhMjA6CistIGF2ZGQtcGV4LXN1cHBseTogUG93ZXIgc3VwcGx5IGZvciBhbmFsb2cgUENJZSBsb2dpYy4gTXVzdCBzdXBwbHkgMS4wNSBWLgorLSB2ZGQtcGV4LXN1cHBseTogUG93ZXIgc3VwcGx5IGZvciBkaWdpdGFsIFBDSWUgSS9PLiBNdXN0IHN1cHBseSAxLjA1IFYuCistIGF2ZGQtcGV4LXBsbC1zdXBwbHk6IFBvd2VyIHN1cHBseSBmb3IgZGVkaWNhdGVkIChpbnRlcm5hbCkgUENJZSBQTEwuIE11c3QKKyAgc3VwcGx5IDEuMDUgVi4KKy0gYXZkZC1wbGxlLXN1cHBseTogUG93ZXIgc3VwcGx5IGZvciBQTExFLCB3aGljaCBpcyBzaGFyZWQgd2l0aCBTQVRBLiBNdXN0CisgIHN1cHBseSAxLjA1IFYuCistIHZkZGlvLXBleC1jbGstc3VwcGx5OiBQb3dlciBzdXBwbHkgZm9yIFBDSWUgY2xvY2suIE11c3Qgc3VwcGx5IDMuMyBWLgorCitQb3dlciBzdXBwbGllcyBmb3IgVGVncmEzMDoKKy0gUmVxdWlyZWQ6CisgIC0gYXZkZC1wZXgtcGxsLXN1cHBseTogUG93ZXIgc3VwcGx5IGZvciBkZWRpY2F0ZWQgKGludGVybmFsKSBQQ0llIFBMTC4gTXVzdAorICAgIHN1cHBseSAxLjA1IFYuCisgIC0gYXZkZC1wbGxlLXN1cHBseTogUG93ZXIgc3VwcGx5IGZvciBQTExFLCB3aGljaCBpcyBzaGFyZWQgd2l0aCBTQVRBLiBNdXN0CisgICAgc3VwcGx5IDEuMDUgVi4KKyAgLSB2ZGRpby1wZXgtY3RsLXN1cHBseTogUG93ZXIgc3VwcGx5IGZvciBQQ0llIGNvbnRyb2wgSS9PIHBhcnRpdGlvbi4gTXVzdAorICAgIHN1cHBseSAxLjggVi4KKyAgLSBodmRkLXBleC1zdXBwbHk6IEhpZ2gtdm9sdGFnZSBzdXBwbHkgZm9yIFBDSWUgSS9PIGFuZCBQQ0llIG91dHB1dCBjbG9ja3MuCisgICAgTXVzdCBzdXBwbHkgMy4zIFYuCistIE9wdGlvbmFsOgorICAtIElmIGxhbmVzIDAgdG8gMyBhcmUgdXNlZDoKKyAgICAtIGF2ZGQtcGV4YS1zdXBwbHk6IFBvd2VyIHN1cHBseSBmb3IgYW5hbG9nIFBDSWUgbG9naWMuIE11c3Qgc3VwcGx5IDEuMDUgVi4KKyAgICAtIHZkZC1wZXhhLXN1cHBseTogUG93ZXIgc3VwcGx5IGZvciBkaWdpdGFsIFBDSWUgSS9PLiBNdXN0IHN1cHBseSAxLjA1IFYuCisgIC0gSWYgbGFuZXMgNCBvciA1IGFyZSB1c2VkOgorICAgIC0gYXZkZC1wZXhiLXN1cHBseTogUG93ZXIgc3VwcGx5IGZvciBhbmFsb2cgUENJZSBsb2dpYy4gTXVzdCBzdXBwbHkgMS4wNSBWLgorICAgIC0gdmRkLXBleGItc3VwcGx5OiBQb3dlciBzdXBwbHkgZm9yIGRpZ2l0YWwgUENJZSBJL08uIE11c3Qgc3VwcGx5IDEuMDUgVi4KKworUG93ZXIgc3VwcGxpZXMgZm9yIFRlZ3JhMTI0OgorLSBSZXF1aXJlZDoKKyAgLSBhdmRkaW8tcGV4LXN1cHBseTogUG93ZXIgc3VwcGx5IGZvciBhbmFsb2cgUENJZSBsb2dpYy4gTXVzdCBzdXBwbHkgMS4wNSBWLgorICAtIGR2ZGRpby1wZXgtc3VwcGx5OiBQb3dlciBzdXBwbHkgZm9yIGRpZ2l0YWwgUENJZSBJL08uIE11c3Qgc3VwcGx5IDEuMDUgVi4KKyAgLSBhdmRkLXBleC1wbGwtc3VwcGx5OiBQb3dlciBzdXBwbHkgZm9yIGRlZGljYXRlZCAoaW50ZXJuYWwpIFBDSWUgUExMLiBNdXN0CisgICAgc3VwcGx5IDEuMDUgVi4KKyAgLSBodmRkLXBleC1zdXBwbHk6IEhpZ2gtdm9sdGFnZSBzdXBwbHkgZm9yIFBDSWUgSS9PIGFuZCBQQ0llIG91dHB1dCBjbG9ja3MuCisgICAgTXVzdCBzdXBwbHkgMy4zIFYuCisgIC0gaHZkZC1wZXgtcGxsLWUtc3VwcGx5OiBIaWdoLXZvbHRhZ2Ugc3VwcGx5IGZvciBQTExFIChzaGFyZWQgd2l0aCBVU0IzKS4KKyAgICBNdXN0IHN1cHBseSAzLjMgVi4KKyAgLSB2ZGRpby1wZXgtY3RsLXN1cHBseTogUG93ZXIgc3VwcGx5IGZvciBQQ0llIGNvbnRyb2wgSS9PIHBhcnRpdGlvbi4gTXVzdAorICAgIHN1cHBseSAyLjgtMy4zIFYuCisgIC0gYXZkZC1wbGwtZXJlZmUtc3VwcGx5OiBQb3dlciBzdXBwbHkgZm9yIFBMTEUgKHNoYXJlZCB3aXRoIFVTQjMpLiBNdXN0CisgICAgc3VwcGx5IDEuMDUgVi4KKworUm9vdCBwb3J0cyBhcmUgZGVmaW5lZCBhcyBzdWJub2RlcyBvZiB0aGUgUENJZSBjb250cm9sbGVyIG5vZGUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGRldmljZV90eXBlOiBNdXN0IGJlICJwY2kiCistIGFzc2lnbmVkLWFkZHJlc3NlczogQWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgcG9ydCBjb25maWd1cmF0aW9uIHJlZ2lzdGVycworLSByZWc6IFBDSSBidXMgYWRkcmVzcyBvZiB0aGUgcm9vdCBwb3J0CistICNhZGRyZXNzLWNlbGxzOiBNdXN0IGJlIDMKKy0gI3NpemUtY2VsbHM6IE11c3QgYmUgMgorLSByYW5nZXM6IFN1Yi1yYW5nZXMgZGlzdHJpYnV0ZWQgZnJvbSB0aGUgUENJZSBjb250cm9sbGVyIG5vZGUuIEFuIGVtcHR5CisgIHByb3BlcnR5IGlzIHN1ZmZpY2llbnQuCistIG52aWRpYSxudW0tbGFuZXM6IE51bWJlciBvZiBsYW5lcyB0byB1c2UgZm9yIHRoaXMgcG9ydC4gVmFsaWQgY29tYmluYXRpb25zCisgIGFyZToKKyAgLSBSb290IHBvcnQgMCB1c2VzIDQgbGFuZXMsIHJvb3QgcG9ydCAxIGlzIHVudXNlZC4KKyAgLSBCb3RoIHJvb3QgcG9ydHMgdXNlIDIgbGFuZXMuCisKK0V4YW1wbGU6CisKK1NvQyBEVFNJOgorCisJcGNpZS1jb250cm9sbGVyIHsKKwkJY29tcGF0aWJsZSA9ICJudmlkaWEsdGVncmEyMC1wY2llIjsKKwkJZGV2aWNlX3R5cGUgPSAicGNpIjsKKwkJcmVnID0gPDB4ODAwMDMwMDAgMHgwMDAwMDgwMCAgIC8qIFBBRFMgcmVnaXN0ZXJzICovCisJCSAgICAgICAweDgwMDAzODAwIDB4MDAwMDAyMDAgICAvKiBBRkkgcmVnaXN0ZXJzICovCisJCSAgICAgICAweDkwMDAwMDAwIDB4MTAwMDAwMDA+OyAvKiBjb25maWd1cmF0aW9uIHNwYWNlICovCisJCXJlZy1uYW1lcyA9ICJwYWRzIiwgImFmaSIsICJjcyI7CisJCWludGVycnVwdHMgPSA8MCA5OCAweDA0ICAgLyogY29udHJvbGxlciBpbnRlcnJ1cHQgKi8KKwkJICAgICAgICAgICAgICAwIDk5IDB4MDQ+OyAvKiBNU0kgaW50ZXJydXB0ICovCisJCWludGVycnVwdC1uYW1lcyA9ICJpbnRyIiwgIm1zaSI7CisKKwkJI2ludGVycnVwdC1jZWxscyA9IDwxPjsKKwkJaW50ZXJydXB0LW1hcC1tYXNrID0gPDAgMCAwIDA+OworCQlpbnRlcnJ1cHQtbWFwID0gPDAgMCAwIDAgJmludGMgR0lDX1NQSSA5OCBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKworCQlidXMtcmFuZ2UgPSA8MHgwMCAweGZmPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mz47CisJCSNzaXplLWNlbGxzID0gPDI+OworCisJCXJhbmdlcyA9IDwweDgyMDAwMDAwIDAgMHg4MDAwMDAwMCAweDgwMDAwMDAwIDAgMHgwMDAwMTAwMCAgIC8qIHBvcnQgMCByZWdpc3RlcnMgKi8KKwkJCSAgMHg4MjAwMDAwMCAwIDB4ODAwMDEwMDAgMHg4MDAwMTAwMCAwIDB4MDAwMDEwMDAgICAvKiBwb3J0IDEgcmVnaXN0ZXJzICovCisJCQkgIDB4ODEwMDAwMDAgMCAwICAgICAgICAgIDB4ODIwMDAwMDAgMCAweDAwMDEwMDAwICAgLyogZG93bnN0cmVhbSBJL08gKi8KKwkJCSAgMHg4MjAwMDAwMCAwIDB4YTAwMDAwMDAgMHhhMDAwMDAwMCAwIDB4MTAwMDAwMDAgICAvKiBub24tcHJlZmV0Y2hhYmxlIG1lbW9yeSAqLworCQkJICAweGMyMDAwMDAwIDAgMHhiMDAwMDAwMCAweGIwMDAwMDAwIDAgMHgxMDAwMDAwMD47IC8qIHByZWZldGNoYWJsZSBtZW1vcnkgKi8KKworCQljbG9ja3MgPSA8JnRlZ3JhX2NhciA3MD4sIDwmdGVncmFfY2FyIDcyPiwgPCZ0ZWdyYV9jYXIgMTE4PjsKKwkJY2xvY2stbmFtZXMgPSAicGV4IiwgImFmaSIsICJwbGxfZSI7CisJCXJlc2V0cyA9IDwmdGVncmFfY2FyIDcwPiwgPCZ0ZWdyYV9jYXIgNzI+LCA8JnRlZ3JhX2NhciA3ND47CisJCXJlc2V0LW5hbWVzID0gInBleCIsICJhZmkiLCAicGNpZV94IjsKKwkJc3RhdHVzID0gImRpc2FibGVkIjsKKworCQlwY2lAMSwwIHsKKwkJCWRldmljZV90eXBlID0gInBjaSI7CisJCQlhc3NpZ25lZC1hZGRyZXNzZXMgPSA8MHg4MjAwMDgwMCAwIDB4ODAwMDAwMDAgMCAweDEwMDA+OworCQkJcmVnID0gPDB4MDAwODAwIDAgMCAwIDA+OworCQkJc3RhdHVzID0gImRpc2FibGVkIjsKKworCQkJI2FkZHJlc3MtY2VsbHMgPSA8Mz47CisJCQkjc2l6ZS1jZWxscyA9IDwyPjsKKworCQkJcmFuZ2VzOworCisJCQludmlkaWEsbnVtLWxhbmVzID0gPDI+OworCQl9OworCisJCXBjaUAyLDAgeworCQkJZGV2aWNlX3R5cGUgPSAicGNpIjsKKwkJCWFzc2lnbmVkLWFkZHJlc3NlcyA9IDwweDgyMDAxMDAwIDAgMHg4MDAwMTAwMCAwIDB4MTAwMD47CisJCQlyZWcgPSA8MHgwMDEwMDAgMCAwIDAgMD47CisJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCisJCQkjYWRkcmVzcy1jZWxscyA9IDwzPjsKKwkJCSNzaXplLWNlbGxzID0gPDI+OworCisJCQlyYW5nZXM7CisKKwkJCW52aWRpYSxudW0tbGFuZXMgPSA8Mj47CisJCX07CisJfTsKKworCitCb2FyZCBEVFM6CisKKwlwY2llLWNvbnRyb2xsZXIgeworCQlzdGF0dXMgPSAib2theSI7CisKKwkJdmRkLXN1cHBseSA9IDwmcGNpX3ZkZF9yZWc+OworCQlwZXgtY2xrLXN1cHBseSA9IDwmcGNpX2Nsa19yZWc+OworCisJCS8qIHJvb3QgcG9ydCAwMDowMS4wICovCisJCXBjaUAxLDAgeworCQkJc3RhdHVzID0gIm9rYXkiOworCisJCQkvKiBicmlkZ2UgMDE6MDAuMCAob3B0aW9uYWwpICovCisJCQlwY2lAMCwwIHsKKwkJCQlyZWcgPSA8MHgwMTAwMDAgMCAwIDAgMD47CisKKwkJCQkjYWRkcmVzcy1jZWxscyA9IDwzPjsKKwkJCQkjc2l6ZS1jZWxscyA9IDwyPjsKKworCQkJCWRldmljZV90eXBlID0gInBjaSI7CisKKwkJCQkvKiBlbmRwb2ludCAwMjowMC4wICovCisJCQkJcGNpQDAsMCB7CisJCQkJCXJlZyA9IDwweDAyMDAwMCAwIDAgMCAwPjsKKwkJCQl9OworCQkJfTsKKwkJfTsKKwl9OworCitOb3RlIHRoYXQgZGV2aWNlcyBvbiB0aGUgUENJIGJ1cyBhcmUgZHluYW1pY2FsbHkgZGlzY292ZXJlZCB1c2luZyBQQ0kncyBidXMKK2VudW1lcmF0aW9uIGFuZCB0aGVyZWZvcmUgZG9uJ3QgbmVlZCBjb3JyZXNwb25kaW5nIGRldmljZSBub2RlcyBpbiBEVC4gSG93ZXZlcgoraWYgYSBkZXZpY2Ugb24gdGhlIFBDSSBidXMgcHJvdmlkZXMgYSBub24tcHJvYmVhYmxlIGJ1cyBzdWNoIGFzIEkyQyBvciBTUEksCitkZXZpY2Ugbm9kZXMgbmVlZCB0byBiZSBhZGRlZCBpbiBvcmRlciB0byBhbGxvdyB0aGUgYnVzJyBjaGlsZHJlbiB0byBiZQoraW5zdGFudGlhdGVkIGF0IHRoZSBwcm9wZXIgbG9jYXRpb24gaW4gdGhlIG9wZXJhdGluZyBzeXN0ZW0ncyBkZXZpY2UgdHJlZSAoYXMKK2lsbHVzdHJhdGVkIGJ5IHRoZSBvcHRpb25hbCBub2RlcyBpbiB0aGUgZXhhbXBsZSBhYm92ZSkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL3BjaS1rZXlzdG9uZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL3BjaS1rZXlzdG9uZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRlYWUyOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvcGNpLWtleXN0b25lLnR4dApAQCAtMCwwICsxLDYzIEBACitUSSBLZXlzdG9uZSBQQ0llIGludGVyZmFjZQorCitLZXlzdG9uZSBQQ0kgaG9zdCBDb250cm9sbGVyIGlzIGJhc2VkIG9uIERlc2lnbndhcmUgUENJIGgvdyB2ZXJzaW9uIDMuNjUuCitJdCBzaGFyZXMgY29tbW9uIGZ1bmN0aW9ucyB3aXRoIFBDSWUgRGVzaWdud2FyZSBjb3JlIGRyaXZlciBhbmQgaW5oZXJpdAorY29tbW9uIHByb3BlcnRpZXMgZGVmaW5lZCBpbgorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9kZXNpZ253YXJlLXBjaS50eHQKKworUGxlYXNlIHJlZmVyIHRvIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvZGVzaWdud2FyZS1wY2kudHh0Citmb3IgdGhlIGRldGFpbHMgb2YgRGVzaWdud2FyZSBEVCBiaW5kaW5ncy4gIEFkZGl0aW9uYWwgcHJvcGVydGllcyBhcmUKK2Rlc2NyaWJlZCBoZXJlIGFzIHdlbGwgYXMgcHJvcGVydGllcyB0aGF0IGFyZSBub3QgYXBwbGljYWJsZS4KKworUmVxdWlyZWQgUHJvcGVydGllczotCisKK2NvbXBhdGliaWxpdHk6ICJ0aSxrZXlzdG9uZS1wY2llIgorcmVnOglpbmRleCAxIGlzIHRoZSBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiBEVyBhcHBsaWNhdGlvbiByZWdpc3RlcnMuCisJaW5kZXggMiBpcyB0aGUgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgUENJIGRldmljZSBJRCByZWdpc3Rlci4KKworcGNpZV9tc2lfaW50YyA6IEludGVycnVwdCBjb250cm9sbGVyIGRldmljZSBub2RlIGZvciBNU0kgSVJRIGNoaXAKKwlpbnRlcnJ1cHQtY2VsbHM6IHNob3VsZCBiZSBzZXQgdG8gMQorCWludGVycnVwdC1wYXJlbnQ6IFBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlciBwaGFuZGxlCisJaW50ZXJydXB0czogR0lDIGludGVycnVwdCBsaW5lcyBjb25uZWN0ZWQgdG8gUENJIE1TSSBpbnRlcnJ1cHQgbGluZXMKKworIEV4YW1wbGU6CisJcGNpZV9tc2lfaW50YzogbXNpLWludGVycnVwdC1jb250cm9sbGVyIHsKKwkJCWludGVycnVwdC1jb250cm9sbGVyOworCQkJI2ludGVycnVwdC1jZWxscyA9IDwxPjsKKwkJCWludGVycnVwdC1wYXJlbnQgPSA8JmdpYz47CisJCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMzAgSVJRX1RZUEVfRURHRV9SSVNJTkc+LAorCQkJCQk8R0lDX1NQSSAzMSBJUlFfVFlQRV9FREdFX1JJU0lORz4sCisJCQkJCTxHSUNfU1BJIDMyIElSUV9UWVBFX0VER0VfUklTSU5HPiwKKwkJCQkJPEdJQ19TUEkgMzMgSVJRX1RZUEVfRURHRV9SSVNJTkc+LAorCQkJCQk8R0lDX1NQSSAzNCBJUlFfVFlQRV9FREdFX1JJU0lORz4sCisJCQkJCTxHSUNfU1BJIDM1IElSUV9UWVBFX0VER0VfUklTSU5HPiwKKwkJCQkJPEdJQ19TUEkgMzYgSVJRX1RZUEVfRURHRV9SSVNJTkc+LAorCQkJCQk8R0lDX1NQSSAzNyBJUlFfVFlQRV9FREdFX1JJU0lORz47CisJfTsKKworcGNpZV9pbnRjOiBJbnRlcnJ1cHQgY29udHJvbGxlciBkZXZpY2Ugbm9kZSBmb3IgTGVnYWN5IElSUSBjaGlwCisJaW50ZXJydXB0LWNlbGxzOiBzaG91bGQgYmUgc2V0IHRvIDEKKwlpbnRlcnJ1cHQtcGFyZW50OiBQYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIgcGhhbmRsZQorCWludGVycnVwdHM6IEdJQyBpbnRlcnJ1cHQgbGluZXMgY29ubmVjdGVkIHRvIFBDSSBMZWdhY3kgaW50ZXJydXB0IGxpbmVzCisKKyBFeGFtcGxlOgorCXBjaWVfaW50YzogbGVnYWN5LWludGVycnVwdC1jb250cm9sbGVyIHsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdpYz47CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSAyNiBJUlFfVFlQRV9FREdFX1JJU0lORz4sCisJCQk8R0lDX1NQSSAyNyBJUlFfVFlQRV9FREdFX1JJU0lORz4sCisJCQk8R0lDX1NQSSAyOCBJUlFfVFlQRV9FREdFX1JJU0lORz4sCisJCQk8R0lDX1NQSSAyOSBJUlFfVFlQRV9FREdFX1JJU0lORz47CisJfTsKKworT3B0aW9uYWwgcHJvcGVydGllczotCisJcGh5czogcGhhbmRsZSB0byBHZW5lcmljIEtleXN0b25lIFNlckRlcyBwaHkgZm9yIFBDSQorCXBoeS1uYW1lczogbmFtZSBvZiB0aGUgR2VuZXJpYyBLZXlzdGluZSBTZXJEZXMgcGh5IGZvciBQQ0kKKwkgIC0gSWYgYm9vdCBsb2FkZXIgYWxyZWFkeSBkb2VzIFBDSSBsaW5rIGVzdGFibGlzaG1lbnQsIHRoZW4gcGh5cyBhbmQKKwkgICAgcGh5LW5hbWVzIHNob3VsZG4ndCBiZSBwcmVzZW50LgorCitEZXNpZ253YXJlIERUIFByb3BlcnRpZXMgbm90IGFwcGxpY2FibGUgZm9yIEtleXN0b25lIFBDSQorCisxLiBwY2llX2J1cyBjbG9jay1uYW1lcyBub3QgdXNlZC4gIEluc3RlYWQsIGEgcGhhbmRsZSB0byBwaHlzIGlzIHVzZWQuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvcGNpLW1zaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL3BjaS1tc2kudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliM2NjODEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL3BjaS1tc2kudHh0CkBAIC0wLDAgKzEsMjIwIEBACitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgZ2VuZXJpYyBkZXZpY2UgdHJlZSBiaW5kaW5nIGZvciBkZXNjcmliaW5nIHRoZQorcmVsYXRpb25zaGlwIGJldHdlZW4gUENJIGRldmljZXMgYW5kIE1TSSBjb250cm9sbGVycy4KKworRWFjaCBQQ0kgZGV2aWNlIHVuZGVyIGEgcm9vdCBjb21wbGV4IGlzIHVuaXF1ZWx5IGlkZW50aWZpZWQgYnkgaXRzIFJlcXVlc3RlciBJRAorKEFLQSBSSUQpLiBBIFJlcXVlc3RlciBJRCBpcyBhIHRyaXBsZXQgb2YgYSBCdXMgbnVtYmVyLCBEZXZpY2UgbnVtYmVyLCBhbmQKK0Z1bmN0aW9uIG51bWJlci4KKworRm9yIHRoZSBwdXJwb3NlIG9mIHRoaXMgZG9jdW1lbnQsIHdoZW4gdHJlYXRlZCBhcyBhIG51bWVyaWMgdmFsdWUsIGEgUklEIGlzCitmb3JtYXR0ZWQgc3VjaCB0aGF0OgorCisqIEJpdHMgWzE1OjhdIGFyZSB0aGUgQnVzIG51bWJlci4KKyogQml0cyBbNzozXSBhcmUgdGhlIERldmljZSBudW1iZXIuCisqIEJpdHMgWzI6MF0gYXJlIHRoZSBGdW5jdGlvbiBudW1iZXIuCisqIEFueSBvdGhlciBiaXRzIHJlcXVpcmVkIGZvciBwYWRkaW5nIG11c3QgYmUgemVyby4KKworTVNJcyBtYXkgYmUgZGlzdGluZ3Vpc2hlZCBpbiBwYXJ0IHRocm91Z2ggdGhlIHVzZSBvZiBzaWRlYmFuZCBkYXRhIGFjY29tcGFueWluZword3JpdGVzLiBJbiB0aGUgY2FzZSBvZiBQQ0kgZGV2aWNlcywgdGhpcyBzaWRlYmFuZCBkYXRhIG1heSBiZSBkZXJpdmVkIGZyb20gdGhlCitSZXF1ZXN0ZXIgSUQuIEEgbWVjaGFuaXNtIGlzIHJlcXVpcmVkIHRvIGFzc29jaWF0ZSBhIGRldmljZSB3aXRoIGJvdGggdGhlIE1TSQorY29udHJvbGxlcnMgaXQgY2FuIGFkZHJlc3MsIGFuZCB0aGUgc2lkZWJhbmQgZGF0YSB0aGF0IHdpbGwgYmUgYXNzb2NpYXRlZCB3aXRoCitpdHMgd3JpdGVzIHRvIHRob3NlIGNvbnRyb2xsZXJzLgorCitGb3IgZ2VuZXJpYyBNU0kgYmluZGluZ3MsIHNlZQorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL21zaS50eHQuCisKKworUENJIHJvb3QgY29tcGxleAorPT09PT09PT09PT09PT09PQorCitPcHRpb25hbCBwcm9wZXJ0aWVzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gbXNpLW1hcDogTWFwcyBhIFJlcXVlc3RlciBJRCB0byBhbiBNU0kgY29udHJvbGxlciBhbmQgYXNzb2NpYXRlZAorICBtc2ktc3BlY2lmaWVyIGRhdGEuIFRoZSBwcm9wZXJ0eSBpcyBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHR1cGxlcyBvZgorICAocmlkLWJhc2UsbXNpLWNvbnRyb2xsZXIsbXNpLWJhc2UsbGVuZ3RoKSwgd2hlcmU6CisKKyAgKiByaWQtYmFzZSBpcyBhIHNpbmdsZSBjZWxsIGRlc2NyaWJpbmcgdGhlIGZpcnN0IFJJRCBtYXRjaGVkIGJ5IHRoZSBlbnRyeS4KKworICAqIG1zaS1jb250cm9sbGVyIGlzIGEgc2luZ2xlIHBoYW5kbGUgdG8gYW4gTVNJIGNvbnRyb2xsZXIKKworICAqIG1zaS1iYXNlIGlzIGFuIG1zaS1zcGVjaWZpZXIgZGVzY3JpYmluZyB0aGUgbXNpLXNwZWNpZmllciBwcm9kdWNlZCBmb3IgdGhlCisgICAgZmlyc3QgUklEIG1hdGNoZWQgYnkgdGhlIGVudHJ5LgorCisgICogbGVuZ3RoIGlzIGEgc2luZ2xlIGNlbGwgZGVzY3JpYmluZyBob3cgbWFueSBjb25zZWN1dGl2ZSBSSURzIGFyZSBtYXRjaGVkCisgICAgZm9sbG93aW5nIHRoZSByaWQtYmFzZS4KKworICBBbnkgUklEIHIgaW4gdGhlIGludGVydmFsIFtyaWQtYmFzZSwgcmlkLWJhc2UgKyBsZW5ndGgpIGlzIGFzc29jaWF0ZWQgd2l0aAorICB0aGUgbGlzdGVkIG1zaS1jb250cm9sbGVyLCB3aXRoIHRoZSBtc2ktc3BlY2lmaWVyIChyIC0gcmlkLWJhc2UgKyBtc2ktYmFzZSkuCisKKy0gbXNpLW1hcC1tYXNrOiBBIG1hc2sgdG8gYmUgYXBwbGllZCB0byBlYWNoIFJlcXVlc3RlciBJRCBwcmlvciB0byBiZWluZyBtYXBwZWQKKyAgdG8gYW4gbXNpLXNwZWNpZmllciBwZXIgdGhlIG1zaS1tYXAgcHJvcGVydHkuCisKKy0gbXNpLXBhcmVudDogRGVzY3JpYmVzIHRoZSBNU0kgcGFyZW50IG9mIHRoZSByb290IGNvbXBsZXggaXRzZWxmLiBXaGVyZQorICB0aGUgcm9vdCBjb21wbGV4IGFuZCBNU0kgY29udHJvbGxlciBkbyBub3QgcGFzcyBzaWRlYmFuZCBkYXRhIHdpdGggTVNJCisgIHdyaXRlcywgdGhpcyBwcm9wZXJ0eSBtYXkgYmUgdXNlZCB0byBkZXNjcmliZSB0aGUgTVNJIGNvbnRyb2xsZXIocykKKyAgdXNlZCBieSBQQ0kgZGV2aWNlcyB1bmRlciB0aGUgcm9vdCBjb21wbGV4LCBpZiBkZWZpbmVkIGFzIHN1Y2ggaW4gdGhlCisgIGJpbmRpbmcgZm9yIHRoZSByb290IGNvbXBsZXguCisKKworRXhhbXBsZSAoMSkKKz09PT09PT09PT09CisKKy8geworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDE+OworCisJbXNpOiBtc2ktY29udHJvbGxlckBhIHsKKwkJcmVnID0gPDB4YSAweDE+OworCQljb21wYXRpYmxlID0gInZlbmRvcixzb21lLWNvbnRyb2xsZXIiOworCQltc2ktY29udHJvbGxlcjsKKwkJI21zaS1jZWxscyA9IDwxPjsKKwl9OworCisJcGNpOiBwY2lAZiB7CisJCXJlZyA9IDwweGYgMHgxPjsKKwkJY29tcGF0aWJsZSA9ICJ2ZW5kb3IscGNpZS1yb290LWNvbXBsZXgiOworCQlkZXZpY2VfdHlwZSA9ICJwY2kiOworCisJCS8qCisJCSAqIFRoZSBzaWRlYmFuZCBkYXRhIHByb3ZpZGVkIHRvIHRoZSBNU0kgY29udHJvbGxlciBpcworCQkgKiB0aGUgUklELCBpZGVudGl0eS1tYXBwZWQuCisJCSAqLworCQltc2ktbWFwID0gPDB4MCAmbXNpX2EgMHgwIDB4MTAwMDA+LAorCX07Cit9OworCisKK0V4YW1wbGUgKDIpCis9PT09PT09PT09PQorCisvIHsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwxPjsKKworCW1zaTogbXNpLWNvbnRyb2xsZXJAYSB7CisJCXJlZyA9IDwweGEgMHgxPjsKKwkJY29tcGF0aWJsZSA9ICJ2ZW5kb3Isc29tZS1jb250cm9sbGVyIjsKKwkJbXNpLWNvbnRyb2xsZXI7CisJCSNtc2ktY2VsbHMgPSA8MT47CisJfTsKKworCXBjaTogcGNpQGYgeworCQlyZWcgPSA8MHhmIDB4MT47CisJCWNvbXBhdGlibGUgPSAidmVuZG9yLHBjaWUtcm9vdC1jb21wbGV4IjsKKwkJZGV2aWNlX3R5cGUgPSAicGNpIjsKKworCQkvKgorCQkgKiBUaGUgc2lkZWJhbmQgZGF0YSBwcm92aWRlZCB0byB0aGUgTVNJIGNvbnRyb2xsZXIgaXMKKwkJICogdGhlIFJJRCwgbWFza2VkIHRvIG9ubHkgdGhlIGRldmljZSBhbmQgZnVuY3Rpb24gYml0cy4KKwkJICovCisJCW1zaS1tYXAgPSA8MHgwICZtc2lfYSAweDAgMHgxMDA+LAorCQltc2ktbWFwLW1hc2sgPSA8MHhmZj4KKwl9OworfTsKKworCitFeGFtcGxlICgzKQorPT09PT09PT09PT0KKworLyB7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MT47CisKKwltc2k6IG1zaS1jb250cm9sbGVyQGEgeworCQlyZWcgPSA8MHhhIDB4MT47CisJCWNvbXBhdGlibGUgPSAidmVuZG9yLHNvbWUtY29udHJvbGxlciI7CisJCW1zaS1jb250cm9sbGVyOworCQkjbXNpLWNlbGxzID0gPDE+OworCX07CisKKwlwY2k6IHBjaUBmIHsKKwkJcmVnID0gPDB4ZiAweDE+OworCQljb21wYXRpYmxlID0gInZlbmRvcixwY2llLXJvb3QtY29tcGxleCI7CisJCWRldmljZV90eXBlID0gInBjaSI7CisKKwkJLyoKKwkJICogVGhlIHNpZGViYW5kIGRhdGEgcHJvdmlkZWQgdG8gdGhlIE1TSSBjb250cm9sbGVyIGlzCisJCSAqIHRoZSBSSUQsIGJ1dCB0aGUgaGlnaCBiaXQgb2YgdGhlIGJ1cyBudW1iZXIgaXMKKwkJICogaWdub3JlZC4KKwkJICovCisJCW1zaS1tYXAgPSA8MHgwMDAwICZtc2kgMHgwMDAwIDB4ODAwMD4sCisJCQkgIDwweDgwMDAgJm1zaSAweDAwMDAgMHg4MDAwPjsKKwl9OworfTsKKworCitFeGFtcGxlICg0KQorPT09PT09PT09PT0KKworLyB7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MT47CisKKwltc2k6IG1zaS1jb250cm9sbGVyQGEgeworCQlyZWcgPSA8MHhhIDB4MT47CisJCWNvbXBhdGlibGUgPSAidmVuZG9yLHNvbWUtY29udHJvbGxlciI7CisJCW1zaS1jb250cm9sbGVyOworCQkjbXNpLWNlbGxzID0gPDE+OworCX07CisKKwlwY2k6IHBjaUBmIHsKKwkJcmVnID0gPDB4ZiAweDE+OworCQljb21wYXRpYmxlID0gInZlbmRvcixwY2llLXJvb3QtY29tcGxleCI7CisJCWRldmljZV90eXBlID0gInBjaSI7CisKKwkJLyoKKwkJICogVGhlIHNpZGViYW5kIGRhdGEgcHJvdmlkZWQgdG8gdGhlIE1TSSBjb250cm9sbGVyIGlzCisJCSAqIHRoZSBSSUQsIGJ1dCB0aGUgaGlnaCBiaXQgb2YgdGhlIGJ1cyBudW1iZXIgaXMKKwkJICogbmVnYXRlZC4KKwkJICovCisJCW1zaS1tYXAgPSA8MHgwMDAwICZtc2kgMHg4MDAwIDB4ODAwMD4sCisJCQkgIDwweDgwMDAgJm1zaSAweDAwMDAgMHg4MDAwPjsKKwl9OworfTsKKworCitFeGFtcGxlICg1KQorPT09PT09PT09PT0KKworLyB7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MT47CisKKwltc2lfYTogbXNpLWNvbnRyb2xsZXJAYSB7CisJCXJlZyA9IDwweGEgMHgxPjsKKwkJY29tcGF0aWJsZSA9ICJ2ZW5kb3Isc29tZS1jb250cm9sbGVyIjsKKwkJbXNpLWNvbnRyb2xsZXI7CisJCSNtc2ktY2VsbHMgPSA8MT47CisJfTsKKworCW1zaV9iOiBtc2ktY29udHJvbGxlckBiIHsKKwkJcmVnID0gPDB4YiAweDE+OworCQljb21wYXRpYmxlID0gInZlbmRvcixzb21lLWNvbnRyb2xsZXIiOworCQltc2ktY29udHJvbGxlcjsKKwkJI21zaS1jZWxscyA9IDwxPjsKKwl9OworCisJbXNpX2M6IG1zaS1jb250cm9sbGVyQGMgeworCQlyZWcgPSA8MHhjIDB4MT47CisJCWNvbXBhdGlibGUgPSAidmVuZG9yLHNvbWUtY29udHJvbGxlciI7CisJCW1zaS1jb250cm9sbGVyOworCQkjbXNpLWNlbGxzID0gPDE+OworCX07CisKKwlwY2k6IHBjaUBjIHsKKwkJcmVnID0gPDB4ZiAweDE+OworCQljb21wYXRpYmxlID0gInZlbmRvcixwY2llLXJvb3QtY29tcGxleCI7CisJCWRldmljZV90eXBlID0gInBjaSI7CisKKwkJLyoKKwkJICogVGhlIHNpZGViYW5kIGRhdGEgcHJvdmlkZWQgdG8gTVNJIGNvbnRyb2xsZXIgYSBpcyB0aGUKKwkJICogUklELCBidXQgdGhlIGhpZ2ggYml0IG9mIHRoZSBidXMgbnVtYmVyIGlzIG5lZ2F0ZWQuCisJCSAqIFRoZSBzaWRlYmFuZCBkYXRhIHByb3ZpZGVkIHRvIE1TSSBjb250cm9sbGVyIGIgaXMgdGhlCisJCSAqIFJJRCwgaWRlbnRpdHktbWFwcGVkLgorCQkgKiBNU0kgY29udHJvbGxlciBjIGlzIG5vdCBhZGRyZXNzYWJsZS4KKwkJICovCisJCW1zaS1tYXAgPSA8MHgwMDAwICZtc2lfYSAweDgwMDAgMHgwODAwMD4sCisJCQkgIDwweDgwMDAgJm1zaV9hIDB4MDAwMCAweDA4MDAwPiwKKwkJCSAgPDB4MDAwMCAmbXNpX2IgMHgwMDAwIDB4MTAwMDA+OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9wY2ktcmNhci1nZW4yLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvcGNpLXJjYXItZ2VuMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZhYjg0YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvcGNpLXJjYXItZ2VuMi50eHQKQEAgLTAsMCArMSw2NyBAQAorUmVuZXNhcyBBSEIgdG8gUENJIGJyaWRnZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGlzIHRoZSBicmlkZ2UgdXNlZCBpbnRlcm5hbGx5IHRvIGNvbm5lY3QgdGhlIFVTQiBjb250cm9sbGVycyB0byB0aGUKK0FIQi4gVGhlcmUgaXMgb25lIGJyaWRnZSBpbnN0YW5jZSBwZXIgVVNCIHBvcnQgY29ubmVjdGVkIHRvIHRoZSBpbnRlcm5hbAorT0hDSSBhbmQgRUhDSSBjb250cm9sbGVycy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInJlbmVzYXMscGNpLXI4YTc3OTAiIGZvciB0aGUgUjhBNzc5MCBTb0M7CisJICAgICAgInJlbmVzYXMscGNpLXI4YTc3OTEiIGZvciB0aGUgUjhBNzc5MSBTb0M7CisJICAgICAgInJlbmVzYXMscGNpLXI4YTc3OTQiIGZvciB0aGUgUjhBNzc5NCBTb0MuCistIHJlZzoJQSBsaXN0IG9mIHBoeXNpY2FsIHJlZ2lvbnMgdG8gYWNjZXNzIHRoZSBkZXZpY2U6IHRoZSBmaXJzdCBpcworCXRoZSBvcGVyYXRpb25hbCByZWdpc3RlcnMgZm9yIHRoZSBPSENJL0VIQ0kgY29udHJvbGxlcnMgYW5kIHRoZQorCXNlY29uZCBpcyBmb3IgdGhlIGJyaWRnZSBjb25maWd1cmF0aW9uIGFuZCBjb250cm9sIHJlZ2lzdGVycy4KKy0gaW50ZXJydXB0czogaW50ZXJydXB0IGZvciB0aGUgZGV2aWNlLgorLSBjbG9ja3M6IFRoZSByZWZlcmVuY2UgdG8gdGhlIGRldmljZSBjbG9jay4KKy0gYnVzLXJhbmdlOiBUaGUgUENJIGJ1cyBudW1iZXIgcmFuZ2U7IGFzIHRoaXMgaXMgYSBzaW5nbGUgYnVzLCB0aGUgcmFuZ2UKKwkgICAgIHNob3VsZCBiZSBzcGVjaWZpZWQgYXMgdGhlIHNhbWUgdmFsdWUgdHdpY2UuCistICNhZGRyZXNzLWNlbGxzOiBtdXN0IGJlIDMuCistICNzaXplLWNlbGxzOiBtdXN0IGJlIDIuCistICNpbnRlcnJ1cHQtY2VsbHM6IG11c3QgYmUgMS4KKy0gaW50ZXJydXB0LW1hcDogc3RhbmRhcmQgcHJvcGVydHkgdXNlZCB0byBkZWZpbmUgdGhlIG1hcHBpbmcgb2YgdGhlIFBDSQorICBpbnRlcnJ1cHRzIHRvIHRoZSBHSUMgaW50ZXJydXB0cy4KKy0gaW50ZXJydXB0LW1hcC1tYXNrOiBzdGFuZGFyZCBwcm9wZXJ0eSB0aGF0IGhlbHBzIHRvIGRlZmluZSB0aGUgaW50ZXJydXB0CisgIG1hcHBpbmcuCisKK0V4YW1wbGUgU29DIGNvbmZpZ3VyYXRpb246CisKKwlwY2kwOiBwY2lAZWUwOTAwMDAgIHsKKwkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLHBjaS1yOGE3NzkwIjsKKwkJY2xvY2tzID0gPCZtc3RwN19jbGtzIFI4QTc3OTBfQ0xLX0VIQ0k+OworCQlyZWcgPSA8MHgwIDB4ZWUwOTAwMDAgMHgwIDB4YzAwPiwKKwkJICAgICAgPDB4MCAweGVlMDgwMDAwIDB4MCAweDExMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMTA4IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCisJCWJ1cy1yYW5nZSA9IDwwIDA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwzPjsKKwkJI3NpemUtY2VsbHMgPSA8Mj47CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJCWludGVycnVwdC1tYXAtbWFzayA9IDwweGZmMDAgMCAwIDB4Nz47CisJCWludGVycnVwdC1tYXAgPSA8MHgwMDAwIDAgMCAxICZnaWMgMCAxMDggSVJRX1RZUEVfTEVWRUxfSElHSAorCQkJCSAweDA4MDAgMCAwIDEgJmdpYyAwIDEwOCBJUlFfVFlQRV9MRVZFTF9ISUdICisJCQkJIDB4MTAwMCAwIDAgMiAmZ2ljIDAgMTA4IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCisJCXBjaUAwLDEgeworCQkJcmVnID0gPDB4ODAwIDAgMCAwIDA+OworCQkJZGV2aWNlX3R5cGUgPSAicGNpIjsKKwkJCXBoeXMgPSA8JnVzYnBoeSAwIDA+OworCQkJcGh5LW5hbWVzID0gInVzYiI7CisJCX07CisKKwkJcGNpQDAsMiB7CisJCQlyZWcgPSA8MHgxMDAwIDAgMCAwIDA+OworCQkJZGV2aWNlX3R5cGUgPSAicGNpIjsKKwkJCXBoeXMgPSA8JnVzYnBoeSAwIDA+OworCQkJcGh5LW5hbWVzID0gInVzYiI7CisJCX07CisJfTsKKworRXhhbXBsZSBib2FyZCBzZXR1cDoKKworJnBjaTAgeworCXN0YXR1cyA9ICJva2F5IjsKKwlwaW5jdHJsLTAgPSA8JnVzYjBfcGlucz47CisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL3BjaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL3BjaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhkY2ZhZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvcGNpLnR4dApAQCAtMCwwICsxLDIwIEBACitQQ0kgYnVzIGJyaWRnZXMgaGF2ZSBzdGFuZGFyZGl6ZWQgRGV2aWNlIFRyZWUgYmluZGluZ3M6CisKK1BDSSBCdXMgQmluZGluZyB0bzogSUVFRSBTdGQgMTI3NS0xOTk0CitodHRwOi8vd3d3LmZpcm13YXJlLm9yZy8xMjc1L2JpbmRpbmdzL3BjaS9wY2kyXzEucGRmCisKK0FuZCBmb3IgdGhlIGludGVycnVwdCBtYXBwaW5nIHBhcnQ6CisKK09wZW4gRmlybXdhcmUgUmVjb21tZW5kZWQgUHJhY3RpY2U6IEludGVycnVwdCBNYXBwaW5nCitodHRwOi8vd3d3LmZpcm13YXJlLm9yZy8xMjc1L3ByYWN0aWNlL2ltYXAvaW1hcDBfOWQucGRmCisKK0FkZGl0aW9uYWxseSB0byB0aGUgcHJvcGVydGllcyBzcGVjaWZpZWQgaW4gdGhlIGFib3ZlIHN0YW5kYXJkcyBhIGhvc3QgYnJpZGdlCitkcml2ZXIgaW1wbGVtZW50YXRpb24gbWF5IHN1cHBvcnQgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorCistIGxpbnV4LHBjaS1kb21haW46CisgICBJZiBwcmVzZW50IHRoaXMgcHJvcGVydHkgYXNzaWducyBhIGZpeGVkIFBDSSBkb21haW4gbnVtYmVyIHRvIGEgaG9zdCBicmlkZ2UsCisgICBvdGhlcndpc2UgYW4gdW5zdGFibGUgKGFjcm9zcyBib290cykgdW5pcXVlIG51bWJlciB3aWxsIGJlIGFzc2lnbmVkLgorICAgSXQgaXMgcmVxdWlyZWQgdG8gZWl0aGVyIG5vdCBzZXQgdGhpcyBwcm9wZXJ0eSBhdCBhbGwgb3Igc2V0IGl0IGZvciBhbGwKKyAgIGhvc3QgYnJpZGdlcyBpbiB0aGUgc3lzdGVtLCBvdGhlcndpc2UgcG90ZW50aWFsbHkgY29uZmxpY3RpbmcgZG9tYWluIG51bWJlcnMKKyAgIG1heSBiZSBhc3NpZ25lZCB0byByb290IGJ1c2VzIGJlaGluZCBkaWZmZXJlbnQgaG9zdCBicmlkZ2VzLiAgVGhlIGRvbWFpbgorICAgbnVtYmVyIGZvciBlYWNoIGhvc3QgYnJpZGdlIGluIHRoZSBzeXN0ZW0gbXVzdCBiZSB1bmlxdWUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL3BsZGEseHByZXNzcmljaDMtYXhpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvcGxkYSx4cHJlc3NyaWNoMy1heGkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzZjc1YmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL3BsZGEseHByZXNzcmljaDMtYXhpLnR4dApAQCAtMCwwICsxLDEyIEBACisqIFBMREEgWHByZXNzUklDSDMtQVhJIGhvc3QgY29udHJvbGxlcgorCitUaGUgUExEQSBYcHJlc3NSSUNIMy1BWEkgaG9zdCBjb250cm9sbGVyIGNhbiBiZSBjb25maWd1cmVkIGluIGEgbWFubmVyIHRoYXQKK21ha2VzIGl0IGNvbXBsaWFudCB3aXRoIHRoZSBTQlNBWzFdIHN0YW5kYXJkIHB1Ymxpc2hlZCBieSBBUk0gTHRkLiBGb3IgdGhvc2UKK3NjZW5hcmlvcywgdGhlIGhvc3QtZ2VuZXJpYy1wY2kudHh0IGJpbmRpbmdzIGFwcGx5IHdpdGggdGhlIGZvbGxvd2luZyBhZGRpdGlvbnMKK3RvIHRoZSBjb21wYXRpYmxlIHByb3BlcnR5OgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZTogc2hvdWxkIGNvbnRhaW4gInBsZGEseHByZXNzcmljaDMtYXhpIiB0byBpZGVudGlmeSB0aGUgSVAgdXNlZC4KKworCitbMV0gaHR0cDovL2luZm9jZW50ZXIuYXJtLmNvbS9oZWxwL3RvcGljL2NvbS5hcm0uZG9jLmRlbjAwMjlhLwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9yYWxpbmsscnQzODgzLXBjaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL3JhbGluayxydDM4ODMtcGNpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTBhMWViCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9yYWxpbmsscnQzODgzLXBjaS50eHQKQEAgLTAsMCArMSwxOTAgQEAKKyogTWVkaWF0ZWsvUmFsaW5rIFJUMzg4MyBQQ0kgY29udHJvbGxlcgorCisxKSBNYWluIG5vZGUKKworICAgUmVxdWlyZWQgcHJvcGVydGllczoKKworICAgLSBjb21wYXRpYmxlOiBtdXN0IGJlICJyYWxpbmsscnQzODgzLXBjaSIKKworICAgLSByZWc6IHNwZWNpZmllcyB0aGUgcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZAorICAgICB0aGUgbGVuZ3RoIG9mIHRoZSBtZW1vcnkgbWFwcGVkIHJlZ2lvbi4KKworICAgLSAjYWRkcmVzcy1jZWxsczogc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgbmVlZGVkIHRvIGVuY29kZSBhbgorICAgICBhZGRyZXNzLiBUaGUgdmFsdWUgbXVzdCBiZSAxLgorCisgICAtICNzaXplLWNlbGxzOiBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgc2l6ZQorICAgICBvZiBhbiBhZGRyZXNzLiBUaGUgdmFsdWUgbXVzdCBiZSAxLgorCisgICAtIHJhbmdlczogc3BlY2lmaWVzIHRoZSB0cmFuc2xhdGlvbiBiZXR3ZWVuIGNoaWxkIGFkZHJlc3Mgc3BhY2UgYW5kIHBhcmVudAorICAgICBhZGRyZXNzIHNwYWNlCisKKyAgT3B0aW9uYWwgcHJvcGVydGllczoKKworICAgLSBzdGF0dXM6IGluZGljYXRlcyB0aGUgb3BlcmF0aW9uYWwgc3RhdHVzIG9mIHRoZSBkZXZpY2UuCisgICAgIFZhbHVlIG11c3QgYmUgZWl0aGVyICJkaXNhYmxlZCIgb3IgIm9rYXkiLgorCisyKSBDaGlsZCBub2RlcworCisgICBUaGUgbWFpbiBub2RlIG11c3QgaGF2ZSB0d28gY2hpbGQgbm9kZXMgd2hpY2ggZGVzY3JpYmVzIHRoZSBidWlsdC1pbgorICAgaW50ZXJydXB0IGNvbnRyb2xsZXIgYW5kIHRoZSBQQ0kgaG9zdCBicmlkZ2UuCisKKyAgIGEpIEludGVycnVwdCBjb250cm9sbGVyOgorCisgICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgICAtIGludGVycnVwdC1jb250cm9sbGVyOiBpZGVudGlmaWVzIHRoZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyCisKKyAgIC0gI2FkZHJlc3MtY2VsbHM6IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNlbGxzIG5lZWRlZCB0byBlbmNvZGUgYW4KKyAgICAgYWRkcmVzcy4gVGhlIHZhbHVlIG11c3QgYmUgMC4gQXMgc3VjaCwgJ2ludGVycnVwdC1tYXAnIG5vZGVzIGRvIG5vdAorICAgICBoYXZlIHRvIHNwZWNpZnkgYSBwYXJlbnQgdW5pdCBhZGRyZXNzLgorCisgICAtICNpbnRlcnJ1cHQtY2VsbHM6IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNlbGxzIG5lZWRlZCB0byBlbmNvZGUgYW4KKyAgICAgaW50ZXJydXB0IHNvdXJjZS4gVGhlIHZhbHVlIG11c3QgYmUgMS4KKworICAgLSBpbnRlcnJ1cHQtcGFyZW50OiB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyIHRoYXQKKyAgICAgc2VydmljZXMgaW50ZXJydXB0cyBmb3IgdGhpcyBkZXZpY2UuCisKKyAgIC0gaW50ZXJydXB0czogc3BlY2lmaWVzIHRoZSBpbnRlcnJ1cHQgc291cmNlIG9mIHRoZSBwYXJlbnQgaW50ZXJydXB0CisgICAgIGNvbnRyb2xsZXIuIFRoZSBmb3JtYXQgb2YgdGhlIGludGVycnVwdCBzcGVjaWZpZXIgZGVwZW5kcyBvbiB0aGUKKyAgICAgcGFyZW50IGludGVycnVwdCBjb250cm9sbGVyLgorCisgICBiKSBQQ0kgaG9zdCBicmlkZ2U6CisKKyAgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgIC0gI2FkZHJlc3MtY2VsbHM6IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNlbGxzIG5lZWRlZCB0byBlbmNvZGUgYW4KKyAgICAgYWRkcmVzcy4gVGhlIHZhbHVlIG11c3QgYmUgMC4KKworICAgLSAjc2l6ZS1jZWxsczogc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgdXNlZCB0byByZXByZXNlbnQgdGhlIHNpemUKKyAgICAgb2YgYW4gYWRkcmVzcy4gVGhlIHZhbHVlIG11c3QgYmUgMi4KKworICAgLSAjaW50ZXJydXB0LWNlbGxzOiBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8gZW5jb2RlIGFuCisgICAgIGludGVycnVwdCBzb3VyY2UuIFRoZSB2YWx1ZSBtdXN0IGJlIDEuCisKKyAgIC0gZGV2aWNlX3R5cGU6IG11c3QgYmUgInBjaSIKKworICAgLSBidXMtcmFuZ2U6IFBDSSBidXMgbnVtYmVycyBjb3ZlcmVkCisKKyAgIC0gcmFuZ2VzOiBzcGVjaWZpZXMgdGhlIHJhbmdlcyBmb3IgdGhlIFBDSSBtZW1vcnkgYW5kIEkvTyByZWdpb25zCisKKyAgIC0gaW50ZXJydXB0LW1hcC1tYXNrLAorICAgLSBpbnRlcnJ1cHQtbWFwOiBzdGFuZGFyZCBQQ0kgcHJvcGVydGllcyB0byBkZWZpbmUgdGhlIG1hcHBpbmcgb2YgdGhlCisgICAgIFBDSSBpbnRlcmZhY2UgdG8gaW50ZXJydXB0IG51bWJlcnMuCisKKyAgIFRoZSBQQ0kgaG9zdCBicmlkZ2Ugbm9kZSBtaWdoIGhhdmUgYWRkaXRpb25hbCBzdWItbm9kZXMgcmVwcmVzZW50aW5nCisgICB0aGUgb25ib2FyZCBQQ0kgZGV2aWNlcy9QQ0kgc2xvdHMuIEVhY2ggc3VjaCBzdWItbm9kZSBtdXN0IGhhdmUgdGhlCisgICBmb2xsb3dpbmcgbWFuZGF0b3J5IHByb3BlcnRpZXM6CisKKyAgICAgLSByZWc6IHVzZWQgb25seSBmb3IgaW50ZXJydXB0IG1hcHBpbmcsIHNvIG9ubHkgdGhlIGZpcnN0IGZvdXIgYnl0ZXMKKyAgICAgICBhcmUgdXNlZCB0byByZWZlciB0byB0aGUgY29ycmVjdCBidXMgbnVtYmVyIGFuZCBkZXZpY2UgbnVtYmVyLgorCisgICAgIC0gZGV2aWNlX3R5cGU6IG11c3QgYmUgInBjaSIKKworICAgSWYgYSBnaXZlbiBzdWItbm9kZSByZXByZXNlbnRzIGEgUENJIGJyaWRnZSBpdCBtdXN0IGhhdmUgZm9sbG93aW5nCisgICBtYW5kYXRvcnkgcHJvcGVydGllcyBhcyB3ZWxsOgorCisgICAgIC0gI2FkZHJlc3MtY2VsbHM6IG11c3QgYmUgc2V0IHRvIDwzPgorCisgICAgIC0gI3NpemUtY2VsbHM6IG11c3Qgc2V0IHRvIDwyPgorCisgICAgIC0gI2ludGVycnVwdC1jZWxsczogbXVzdCBiZSBzZXQgdG8gPDE+CisKKyAgICAgLSBpbnRlcnJ1cHQtbWFwLW1hc2ssCisgICAgIC0gaW50ZXJydXB0LW1hcDogc3RhbmRhcmQgUENJIHByb3BlcnRpZXMgdG8gZGVmaW5lIHRoZSBtYXBwaW5nIG9mIHRoZQorICAgICAgIFBDSSBpbnRlcmZhY2UgdG8gaW50ZXJydXB0IG51bWJlcnMuCisKKyAgIEJlc2lkZXMgdGhlIHJlcXVpcmVkIHByb3BlcnRpZXMgdGhlIHN1Yi1ub2RlcyBtYXkgaGF2ZSB0aGVzZSBvcHRpb25hbAorICAgcHJvcGVydGllczoKKworICAgICAtIHN0YXR1czogaW5kaWNhdGVzIHRoZSBvcGVyYXRpb25hbCBzdGF0dXMgb2YgdGhlIHN1Yi1ub2RlLgorICAgICAgIFZhbHVlIG11c3QgYmUgZWl0aGVyICJkaXNhYmxlZCIgb3IgIm9rYXkiLgorCiszKSBFeGFtcGxlOgorCisgICBhKSBTb0Mgc3BlY2lmaWMgZHRzaSBmaWxlOgorCisJcGNpQDEwMTQwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJyYWxpbmsscnQzODgzLXBjaSI7CisJCXJlZyA9IDwweDEwMTQwMDAwIDB4MjAwMDA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCXJhbmdlczsgLyogZGlyZWN0IG1hcHBpbmcgKi8KKworCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCisJCXBjaWludGM6IGludGVycnVwdC1jb250cm9sbGVyIHsKKwkJCWludGVycnVwdC1jb250cm9sbGVyOworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MD47CisJCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCisJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZjcHVpbnRjPjsKKwkJCWludGVycnVwdHMgPSA8ND47CisJCX07CisKKwkJaG9zdC1icmlkZ2UgeworCQkJI2FkZHJlc3MtY2VsbHMgPSA8Mz47CisJCQkjc2l6ZS1jZWxscyA9IDwyPjsKKwkJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisKKwkJCWRldmljZV90eXBlID0gInBjaSI7CisKKwkJCWJ1cy1yYW5nZSA9IDwwIDI1NT47CisJCQlyYW5nZXMgPSA8CisJCQkJMHgwMjAwMDAwMCAwIDB4MDAwMDAwMDAgMHgyMDAwMDAwMCAwIDB4MTAwMDAwMDAgLyogcGNpIG1lbW9yeSAqLworCQkJCTB4MDEwMDAwMDAgMCAweDAwMDAwMDAwIDB4MTAxNjAwMDAgMCAweDAwMDEwMDAwIC8qIGlvIHNwYWNlICovCisJCQk+OworCisJCQlpbnRlcnJ1cHQtbWFwLW1hc2sgPSA8MHhmODAwIDAgMCA3PjsKKwkJCWludGVycnVwdC1tYXAgPSA8CisJCQkJLyogSURTRUwgMTcgKi8KKwkJCQkweDg4MDAgMCAwIDEgJnBjaWludGMgMTgKKwkJCQkweDg4MDAgMCAwIDIgJnBjaWludGMgMTgKKwkJCQkweDg4MDAgMCAwIDMgJnBjaWludGMgMTgKKwkJCQkweDg4MDAgMCAwIDQgJnBjaWludGMgMTgKKwkJCQkvKiBJRFNFTCAxOCAqLworCQkJCTB4OTAwMCAwIDAgMSAmcGNpaW50YyAxOQorCQkJCTB4OTAwMCAwIDAgMiAmcGNpaW50YyAxOQorCQkJCTB4OTAwMCAwIDAgMyAmcGNpaW50YyAxOQorCQkJCTB4OTAwMCAwIDAgNCAmcGNpaW50YyAxOQorCQkJPjsKKworCQkJcGNpLWJyaWRnZUAxIHsKKwkJCQlyZWcgPSA8MHgwODAwIDAgMCAwIDA+OworCQkJCWRldmljZV90eXBlID0gInBjaSI7CisJCQkJI2ludGVycnVwdC1jZWxscyA9IDwxPjsKKwkJCQkjYWRkcmVzcy1jZWxscyA9IDwzPjsKKwkJCQkjc2l6ZS1jZWxscyA9IDwyPjsKKworCQkJCWludGVycnVwdC1tYXAtbWFzayA9IDwweDAgMCAwIDA+OworCQkJCWludGVycnVwdC1tYXAgPSA8MHgwIDAgMCAwICZwY2lpbnRjIDIwPjsKKworCQkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJCQl9OworCisJCQlwY2ktc2xvdEAxNyB7CisJCQkJcmVnID0gPDB4ODgwMCAwIDAgMCAwPjsKKwkJCQlkZXZpY2VfdHlwZSA9ICJwY2kiOworCisJCQkJc3RhdHVzID0gImRpc2FibGVkIjsKKwkJCX07CisKKwkJCXBjaS1zbG90QDE4IHsKKwkJCQlyZWcgPSA8MHg5MDAwIDAgMCAwIDA+OworCQkJCWRldmljZV90eXBlID0gInBjaSI7CisKKwkJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCQkJfTsKKwkJfTsKKwl9OworCisgICBiKSBCb2FyZCBzcGVjaWZpYyBkdHMgZmlsZToKKworCXBjaUAxMDE0MDAwMCB7CisJCXN0YXR1cyA9ICJva2F5IjsKKworCQlob3N0LWJyaWRnZSB7CisJCQlwY2ktYnJpZGdlQDEgeworCQkJCXN0YXR1cyA9ICJva2F5IjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvcmNhci1wY2kudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9yY2FyLXBjaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjlkM2I5OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvcmNhci1wY2kudHh0CkBAIC0wLDAgKzEsNDcgQEAKKyogUmVuZXNhcyBSQ2FyIFBDSWUgaW50ZXJmYWNlCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBjb250YWluIG9uZSBvZiB0aGUgZm9sbG93aW5nCisJInJlbmVzYXMscGNpZS1yOGE3Nzc5IiwgInJlbmVzYXMscGNpZS1yOGE3NzkwIiwgInJlbmVzYXMscGNpZS1yOGE3NzkxIgorLSByZWc6IGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBwY2llIGNvbnRyb2xsZXIgcmVnaXN0ZXJzLgorLSAjYWRkcmVzcy1jZWxsczogc2V0IHRvIDwzPgorLSAjc2l6ZS1jZWxsczogc2V0IHRvIDwyPgorLSBidXMtcmFuZ2U6IFBDSSBidXMgbnVtYmVycyBjb3ZlcmVkCistIGRldmljZV90eXBlOiBzZXQgdG8gInBjaSIKKy0gcmFuZ2VzOiByYW5nZXMgZm9yIHRoZSBQQ0kgbWVtb3J5IGFuZCBJL08gcmVnaW9ucy4KKy0gZG1hLXJhbmdlczogcmFuZ2VzIGZvciB0aGUgaW5ib3VuZCBtZW1vcnkgcmVnaW9ucy4KKy0gaW50ZXJydXB0czogdHdvIGludGVycnVwdCBzb3VyY2VzIGZvciBNU0kgaW50ZXJydXB0cywgZm9sbG93ZWQgYnkgaW50ZXJydXB0CisJc291cmNlIGZvciBoYXJkd2FyZSByZWxhdGVkIGludGVycnVwdHMgKGUuZy4gbGluayBzcGVlZCBjaGFuZ2UpLgorLSAjaW50ZXJydXB0LWNlbGxzOiBzZXQgdG8gPDE+CistIGludGVycnVwdC1tYXAtbWFzayBhbmQgaW50ZXJydXB0LW1hcDogc3RhbmRhcmQgUENJIHByb3BlcnRpZXMKKwl0byBkZWZpbmUgdGhlIG1hcHBpbmcgb2YgdGhlIFBDSWUgaW50ZXJmYWNlIHRvIGludGVycnVwdAorCW51bWJlcnMuCistIGNsb2NrczogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzogY2xvY2sgc3BlY2lmaWVycyBmb3IgdGhlIFBDSWUgY29udHJvbGxlcgorCWFuZCBQQ0llIGJ1cyBjbG9ja3MuCistIGNsb2NrLW5hbWVzOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOiBzaG91bGQgYmUgInBjaWUiIGFuZCAicGNpZV9idXMiLgorCitFeGFtcGxlOgorCitTb0Mgc3BlY2lmaWMgRFQgRW50cnk6CisKKwlwY2llOiBwY2llQGZlMDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLHBjaWUtcjhhNzc5MSI7CisJCXJlZyA9IDwwIDB4ZmUwMDAwMDAgMCAweDgwMDAwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mz47CisJCSNzaXplLWNlbGxzID0gPDI+OworCQlidXMtcmFuZ2UgPSA8MHgwMCAweGZmPjsKKwkJZGV2aWNlX3R5cGUgPSAicGNpIjsKKwkJcmFuZ2VzID0gPDB4MDEwMDAwMDAgMCAweDAwMDAwMDAwIDAgMHhmZTEwMDAwMCAwIDB4MDAxMDAwMDAKKwkJCSAgMHgwMjAwMDAwMCAwIDB4ZmUyMDAwMDAgMCAweGZlMjAwMDAwIDAgMHgwMDIwMDAwMAorCQkJICAweDAyMDAwMDAwIDAgMHgzMDAwMDAwMCAwIDB4MzAwMDAwMDAgMCAweDA4MDAwMDAwCisJCQkgIDB4NDIwMDAwMDAgMCAweDM4MDAwMDAwIDAgMHgzODAwMDAwMCAwIDB4MDgwMDAwMDA+OworCQlkbWEtcmFuZ2VzID0gPDB4NDIwMDAwMDAgMCAweDQwMDAwMDAwIDAgMHg0MDAwMDAwMCAwIDB4NDAwMDAwMDAKKwkJCSAgICAgIDB4NDIwMDAwMDAgMiAweDAwMDAwMDAwIDIgMHgwMDAwMDAwMCAwIDB4NDAwMDAwMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMTE2IDQ+LCA8MCAxMTcgND4sIDwwIDExOCA0PjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwxPjsKKwkJaW50ZXJydXB0LW1hcC1tYXNrID0gPDAgMCAwIDA+OworCQlpbnRlcnJ1cHQtbWFwID0gPDAgMCAwIDAgJmdpYyAwIDExNiA0PjsKKwkJY2xvY2tzID0gPCZtc3RwM19jbGtzIFI4QTc3OTFfQ0xLX1BDSUU+LCA8JnBjaWVfYnVzX2Nsaz47CisJCWNsb2NrLW5hbWVzID0gInBjaWUiLCAicGNpZV9idXMiOworCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL3NhbXN1bmcsZXh5bm9zNTQ0MC1wY2llLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvc2Ftc3VuZyxleHlub3M1NDQwLXBjaWUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmOWQyM2QKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL3NhbXN1bmcsZXh5bm9zNTQ0MC1wY2llLnR4dApAQCAtMCwwICsxLDY1IEBACisqIFNhbXN1bmcgRXh5bm9zIDU0NDAgUENJZSBpbnRlcmZhY2UKKworVGhpcyBQQ0llIGhvc3QgY29udHJvbGxlciBpcyBiYXNlZCBvbiB0aGUgU3lub3BzaXMgRGVzaWdud2FyZSBQQ0llIElQCithbmQgdGh1cyBpbmhlcml0cyBhbGwgdGhlIGNvbW1vbiBwcm9wZXJ0aWVzIGRlZmluZWQgaW4gZGVzaWdud2FyZS1wY2llLnR4dC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInNhbXN1bmcsZXh5bm9zNTQ0MC1wY2llIgorLSByZWc6IGJhc2UgYWRkcmVzc2VzIGFuZCBsZW5ndGhzIG9mIHRoZSBwY2llIGNvbnRyb2xsZXIsCisJdGhlIHBoeSBjb250cm9sbGVyLCBhZGRpdGlvbmFsIHJlZ2lzdGVyIGZvciB0aGUgcGh5IGNvbnRyb2xsZXIuCistIGludGVycnVwdHM6IEEgbGlzdCBvZiBpbnRlcnJ1cHQgb3V0cHV0cyBmb3IgbGV2ZWwgaW50ZXJydXB0LAorCXB1bHNlIGludGVycnVwdCwgc3BlY2lhbCBpbnRlcnJ1cHQuCisKK0V4YW1wbGU6CisKK1NvQyBzcGVjaWZpYyBEVCBFbnRyeToKKworCXBjaWVAMjkwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczU0NDAtcGNpZSIsICJzbnBzLGR3LXBjaWUiOworCQlyZWcgPSA8MHgyOTAwMDAgMHgxMDAwCisJCQkweDI3MDAwMCAweDEwMDAKKwkJCTB4MjcxMDAwIDB4NDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMjAgMD4sIDwwIDIxIDA+LCA8MCAyMiAwPjsKKwkJY2xvY2tzID0gPCZjbG9jayAyOD4sIDwmY2xvY2sgMjc+OworCQljbG9jay1uYW1lcyA9ICJwY2llIiwgInBjaWVfYnVzIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mz47CisJCSNzaXplLWNlbGxzID0gPDI+OworCQlkZXZpY2VfdHlwZSA9ICJwY2kiOworCQlyYW5nZXMgPSA8MHgwMDAwMDgwMCAwIDB4NDAwMDAwMDAgMHg0MDAwMDAwMCAwIDB4MDAwMDEwMDAgICAvKiBjb25maWd1cmF0aW9uIHNwYWNlICovCisJCQkgIDB4ODEwMDAwMDAgMCAwCSAgMHg0MDAwMTAwMCAwIDB4MDAwMTAwMDAgICAvKiBkb3duc3RyZWFtIEkvTyAqLworCQkJICAweDgyMDAwMDAwIDAgMHg0MDAxMTAwMCAweDQwMDExMDAwIDAgMHgxZmZlZjAwMD47IC8qIG5vbi1wcmVmZXRjaGFibGUgbWVtb3J5ICovCisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJCWludGVycnVwdC1tYXAtbWFzayA9IDwwIDAgMCAwPjsKKwkJaW50ZXJydXB0LW1hcCA9IDwwIDAgMCAwICZnaWMgR0lDX1NQSSAyMSBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJbnVtLWxhbmVzID0gPDQ+OworCX07CisKKwlwY2llQDJhMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M1NDQwLXBjaWUiLCAic25wcyxkdy1wY2llIjsKKwkJcmVnID0gPDB4MmEwMDAwIDB4MTAwMAorCQkJMHgyNzIwMDAgMHgxMDAwCisJCQkweDI3MTA0MCAweDQwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDIzIDA+LCA8MCAyNCAwPiwgPDAgMjUgMD47CisJCWNsb2NrcyA9IDwmY2xvY2sgMjk+LCA8JmNsb2NrIDI3PjsKKwkJY2xvY2stbmFtZXMgPSAicGNpZSIsICJwY2llX2J1cyI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDM+OworCQkjc2l6ZS1jZWxscyA9IDwyPjsKKwkJZGV2aWNlX3R5cGUgPSAicGNpIjsKKwkJcmFuZ2VzID0gPDB4MDAwMDA4MDAgMCAweDYwMDAwMDAwIDB4NjAwMDAwMDAgMCAweDAwMDAxMDAwICAgLyogY29uZmlndXJhdGlvbiBzcGFjZSAqLworCQkJICAweDgxMDAwMDAwIDAgMAkgIDB4NjAwMDEwMDAgMCAweDAwMDEwMDAwICAgLyogZG93bnN0cmVhbSBJL08gKi8KKwkJCSAgMHg4MjAwMDAwMCAwIDB4NjAwMTEwMDAgMHg2MDAxMTAwMCAwIDB4MWZmZWYwMDA+OyAvKiBub24tcHJlZmV0Y2hhYmxlIG1lbW9yeSAqLworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCQlpbnRlcnJ1cHQtbWFwLW1hc2sgPSA8MCAwIDAgMD47CisJCWludGVycnVwdC1tYXAgPSA8MCAwIDAgMCAmZ2ljIEdJQ19TUEkgMjQgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCW51bS1sYW5lcyA9IDw0PjsKKwl9OworCitCb2FyZCBzcGVjaWZpYyBEVCBFbnRyeToKKworCXBjaWVAMjkwMDAwIHsKKwkJcmVzZXQtZ3BpbyA9IDwmcGluX2N0cmwgNSAwPjsKKwl9OworCisJcGNpZUAyYTAwMDAgeworCQlyZXNldC1ncGlvID0gPCZwaW5fY3RybCAyMiAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9zcGVhcjEzeHgtcGNpZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL3NwZWFyMTN4eC1wY2llLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OWVhNzZkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9zcGVhcjEzeHgtcGNpZS50eHQKQEAgLTAsMCArMSwxNCBAQAorU1BFQXIxM1hYIFBDSWUgRFQgZGV0YWlsOgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU1BFQXIxM1hYIHVzZXMgc3lub3BzaXMgZGVzaWdud2FyZSBQQ0llIGNvbnRyb2xsZXIgYW5kIFNUIE1pUEhZIGFzIHBoeQorY29udHJvbGxlci4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAic3Qsc3BlYXIxMzQwLXBjaWUiLCAic25wcyxkdy1wY2llIi4KKy0gcGh5cwkJICAgIDogcGhhbmRsZSB0byBwaHkgbm9kZSBhc3NvY2lhdGVkIHdpdGggcGNpZSBjb250cm9sbGVyCistIHBoeS1uYW1lcwkgICAgOiBtdXN0IGJlICJwY2llLXBoeSIKKy0gQWxsIG90aGVyIGRlZmluaXRpb25zIGFzIHBlciBnZW5lcmljIFBDSSBiaW5kaW5ncworCisgT3B0aW9uYWwgcHJvcGVydGllczoKKy0gc3QscGNpZS1pcy1nZW4xIGluZGljYXRlcyB0aGF0IGZvcmNlZCBnZW4xIGluaXRpYWxpemF0aW9uIGlzIG5lZWRlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvdGktcGNpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvdGktcGNpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGUyNTE2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS90aS1wY2kudHh0CkBAIC0wLDAgKzEsNjIgQEAKK1RJIFBDSSBDb250cm9sbGVycworCitQQ0llIERlc2lnbndhcmUgQ29udHJvbGxlcgorIC0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJ0aSxkcmE3LXBjaWUiIgorIC0gcmVnIDogVHdvIHJlZ2lzdGVyIHJhbmdlcyBhcyBsaXN0ZWQgaW4gdGhlIHJlZy1uYW1lcyBwcm9wZXJ0eQorIC0gcmVnLW5hbWVzIDogVGhlIGZpcnN0IGVudHJ5IG11c3QgYmUgInRpLWNvbmYiIGZvciB0aGUgVEkgc3BlY2lmaWMgcmVnaXN0ZXJzCisJICAgICAgIFRoZSBzZWNvbmQgZW50cnkgbXVzdCBiZSAicmMtZGJpY3MiIGZvciB0aGUgZGVzaWdud2FyZSBwY2llCisJICAgICAgIHJlZ2lzdGVycworCSAgICAgICBUaGUgdGhpcmQgZW50cnkgbXVzdCBiZSAiY29uZmlnIiBmb3IgdGhlIFBDSWUgY29uZmlndXJhdGlvbiBzcGFjZQorIC0gcGh5cyA6IGxpc3Qgb2YgUEhZIHNwZWNpZmllcnMgKHVzZWQgYnkgZ2VuZXJpYyBQSFkgZnJhbWV3b3JrKQorIC0gcGh5LW5hbWVzIDogbXVzdCBiZSAicGNpZS1waHkwIiwgInBjaWUtcGh5MSIsICJwY2llLXBoeU4iLi4gYmFzZWQgb24gdGhlCisJICAgICAgIG51bWJlciBvZiBQSFlzIGFzIHNwZWNpZmllZCBpbiAqcGh5cyogcHJvcGVydHkuCisgLSB0aSxod21vZHMgOiBOYW1lIG9mIHRoZSBod21vZCBhc3NvY2lhdGVkIHRvIHRoZSBwY2llLCAicGNpZTxYPiIsCisJICAgICAgIHdoZXJlIDxYPiBpcyB0aGUgaW5zdGFuY2UgbnVtYmVyIG9mIHRoZSBwY2llIGZyb20gdGhlIEhXIHNwZWMuCisgLSBpbnRlcnJ1cHRzIDogVHdvIGludGVycnVwdCBlbnRyaWVzIG11c3QgYmUgc3BlY2lmaWVkLiBUaGUgZmlyc3Qgb25lIGlzIGZvcgorCQltYWluIGludGVycnVwdCBsaW5lIGFuZCB0aGUgc2Vjb25kIGZvciBNU0kgaW50ZXJydXB0IGxpbmUuCisgLSAjYWRkcmVzcy1jZWxscywKKyAgICNzaXplLWNlbGxzLAorICAgI2ludGVycnVwdC1jZWxscywKKyAgIGRldmljZV90eXBlLAorICAgcmFuZ2VzLAorICAgbnVtLWxhbmVzLAorICAgaW50ZXJydXB0LW1hcC1tYXNrLAorICAgaW50ZXJydXB0LW1hcCA6IGFzIHNwZWNpZmllZCBpbiAuLi9kZXNpZ253YXJlLXBjaWUudHh0CisKK09wdGlvbmFsIFByb3BlcnR5OgorIC0gZ3Bpb3MgOiBTaG91bGQgYmUgYWRkZWQgaWYgYSBncGlvIGxpbmUgaXMgcmVxdWlyZWQgdG8gZHJpdmUgUEVSU1QjIGxpbmUKKworRXhhbXBsZToKK2F4aSB7CisJY29tcGF0aWJsZSA9ICJzaW1wbGUtYnVzIjsKKwkjc2l6ZS1jZWxscyA9IDwxPjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwlyYW5nZXMgPSA8MHg1MTAwMDAwMCAweDUxMDAwMDAwIDB4MzAwMAorCQkgIDB4MAkgICAgIDB4MjAwMDAwMDAgMHgxMDAwMDAwMD47CisJcGNpZUA1MTAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAidGksZHJhNy1wY2llIjsKKwkJcmVnID0gPDB4NTEwMDAwMDAgMHgyMDAwPiwgPDB4NTEwMDIwMDAgMHgxNGM+LCA8MHgxMDAwIDB4MjAwMD47CisJCXJlZy1uYW1lcyA9ICJyY19kYmljcyIsICJ0aV9jb25mIiwgImNvbmZpZyI7CisJCWludGVycnVwdHMgPSA8MCAyMzIgMHg0PiwgPDAgMjMzIDB4ND47CisJCSNhZGRyZXNzLWNlbGxzID0gPDM+OworCQkjc2l6ZS1jZWxscyA9IDwyPjsKKwkJZGV2aWNlX3R5cGUgPSAicGNpIjsKKwkJcmFuZ2VzID0gPDB4ODEwMDAwMDAgMCAwICAgICAgICAgIDB4MDMwMDAgMCAweDAwMDEwMDAwCisJCQkgIDB4ODIwMDAwMDAgMCAweDIwMDEzMDAwIDB4MTMwMDAgMCAweGZmZWQwMDA+OworCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCQludW0tbGFuZXMgPSA8MT47CisJCXRpLGh3bW9kcyA9ICJwY2llMSI7CisJCXBoeXMgPSA8JnBjaWUxX3BoeT47CisJCXBoeS1uYW1lcyA9ICJwY2llLXBoeTAiOworCQlpbnRlcnJ1cHQtbWFwLW1hc2sgPSA8MCAwIDAgNz47CisJCWludGVycnVwdC1tYXAgPSA8MCAwIDAgMSAmcGNpZV9pbnRjIDE+LAorCQkJCTwwIDAgMCAyICZwY2llX2ludGMgMj4sCisJCQkJPDAgMCAwIDMgJnBjaWVfaW50YyAzPiwKKwkJCQk8MCAwIDAgNCAmcGNpZV9pbnRjIDQ+OworCQlwY2llX2ludGM6IGludGVycnVwdC1jb250cm9sbGVyIHsKKwkJCWludGVycnVwdC1jb250cm9sbGVyOworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MD47CisJCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCQl9OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS92My12MzYwZXBjLXBjaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL3YzLXYzNjBlcGMtcGNpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGIzNjRlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS92My12MzYwZXBjLXBjaS50eHQKQEAgLTAsMCArMSwxNSBAQAorVjMgU2VtaWNvbmR1Y3RvciBWMzYwIEVQQyBQQ0kgYnJpZGdlCisKK1RoaXMgYnJpZGdlIGlzIGZvdW5kIGluIHRoZSBBUk0gSW50ZWdyYXRvci9BUCAoQXBwbGljYXRpb24gUGxhdGZvcm0pCisKK0ludGVncmF0b3Itc3BlY2lmaWMgbm90ZXM6CisKKy0gc3lzY29uOiBzaG91bGQgY29udGFpbiBhIGxpbmsgdG8gdGhlIHN5c2NvbiBkZXZpY2Ugbm9kZSAoc2luY2UKKyAgb24gdGhlIEludGVncmF0b3IsIHNvbWUgcmVnaXN0ZXJzIGluIHRoZSBzeXNjb24gYXJlIHJlcXVpcmVkIHRvCisgIG9wZXJhdGUgdGhlIFYzKS4KKworVjM2MCBFUEMgc3BlY2lmaWMgbm90ZXM6CisKKy0gcmVnOiBzaG91bGQgY29udGFpbiB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBWMyBhZGFwdGVyLgorLSBpbnRlcnJ1cHRzOiBzaG91bGQgY29udGFpbiBhIHJlZmVyZW5jZSB0byB0aGUgVjMgZXJyb3IgaW50ZXJydXB0CisgIGFzIHJvdXRlZCBvbiB0aGUgc3lzdGVtLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS92ZXJzYXRpbGUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS92ZXJzYXRpbGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViZDFlN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL3ZlcnNhdGlsZS50eHQKQEAgLTAsMCArMSw1OSBAQAorKiBBUk0gVmVyc2F0aWxlIFBsYXRmb3JtIEJhc2Vib2FyZCBQQ0kgaW50ZXJmYWNlCisKK1BDSSBob3N0IGNvbnRyb2xsZXIgZm91bmQgb24gdGhlIEFSTSBWZXJzYXRpbGUgUEIgYm9hcmQncyBGUEdBLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgY29udGFpbiAiYXJtLHZlcnNhdGlsZS1wY2kiIHRvIGlkZW50aWZ5IHRoZSBWZXJzYXRpbGUgUENJCisgIGNvbnRyb2xsZXIuCistIHJlZzogYmFzZSBhZGRyZXNzZXMgYW5kIGxlbmd0aHMgb2YgdGhlIHBjaSBjb250cm9sbGVyLiBUaGVyZSBtdXN0IGJlIDMKKyAgZW50cmllczoKKwktIFZlcnNhdGlsZS1zcGVjaWZpYyByZWdpc3RlcnMKKwktIFNlbGYgQ29uZmlnIHNwYWNlCisJLSBDb25maWcgc3BhY2UKKy0gI2FkZHJlc3MtY2VsbHM6IHNldCB0byA8Mz4KKy0gI3NpemUtY2VsbHM6IHNldCB0byA8Mj4KKy0gZGV2aWNlX3R5cGU6IHNldCB0byAicGNpIgorLSBidXMtcmFuZ2U6IHNldCB0byA8MCAweGZmPgorLSByYW5nZXM6IHJhbmdlcyBmb3IgdGhlIFBDSSBtZW1vcnkgYW5kIEkvTyByZWdpb25zCistICNpbnRlcnJ1cHQtY2VsbHM6IHNldCB0byA8MT4KKy0gaW50ZXJydXB0LW1hcC1tYXNrIGFuZCBpbnRlcnJ1cHQtbWFwOiBzdGFuZGFyZCBQQ0kgcHJvcGVydGllcyB0byBkZWZpbmUKKwl0aGUgbWFwcGluZyBvZiB0aGUgUENJIGludGVyZmFjZSB0byBpbnRlcnJ1cHQgbnVtYmVycy4KKworRXhhbXBsZToKKworcGNpLWNvbnRyb2xsZXJAMTAwMDEwMDAgeworCWNvbXBhdGlibGUgPSAiYXJtLHZlcnNhdGlsZS1wY2kiOworCWRldmljZV90eXBlID0gInBjaSI7CisJcmVnID0gPDB4MTAwMDEwMDAgMHgxMDAwCisJICAgICAgIDB4NDEwMDAwMDAgMHgxMDAwMAorCSAgICAgICAweDQyMDAwMDAwIDB4MTAwMDAwPjsKKwlidXMtcmFuZ2UgPSA8MCAweGZmPjsKKwkjYWRkcmVzcy1jZWxscyA9IDwzPjsKKwkjc2l6ZS1jZWxscyA9IDwyPjsKKwkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCisJcmFuZ2VzID0gPDB4MDEwMDAwMDAgMCAweDAwMDAwMDAwIDB4NDMwMDAwMDAgMCAweDAwMDEwMDAwICAgLyogZG93bnN0cmVhbSBJL08gKi8KKwkJICAweDAyMDAwMDAwIDAgMHg1MDAwMDAwMCAweDUwMDAwMDAwIDAgMHgxMDAwMDAwMCAgIC8qIG5vbi1wcmVmZXRjaGFibGUgbWVtb3J5ICovCisJCSAgMHg0MjAwMDAwMCAwIDB4NjAwMDAwMDAgMHg2MDAwMDAwMCAwIDB4MTAwMDAwMDA+OyAvKiBwcmVmZXRjaGFibGUgbWVtb3J5ICovCisKKwlpbnRlcnJ1cHQtbWFwLW1hc2sgPSA8MHgxODAwIDAgMCA3PjsKKwlpbnRlcnJ1cHQtbWFwID0gPDB4MTgwMCAwIDAgMSAmc2ljIDI4CisJCQkgMHgxODAwIDAgMCAyICZzaWMgMjkKKwkJCSAweDE4MDAgMCAwIDMgJnNpYyAzMAorCQkJIDB4MTgwMCAwIDAgNCAmc2ljIDI3CisKKwkJCSAweDEwMDAgMCAwIDEgJnNpYyAyNworCQkJIDB4MTAwMCAwIDAgMiAmc2ljIDI4CisJCQkgMHgxMDAwIDAgMCAzICZzaWMgMjkKKwkJCSAweDEwMDAgMCAwIDQgJnNpYyAzMAorCisJCQkgMHgwODAwIDAgMCAxICZzaWMgMzAKKwkJCSAweDA4MDAgMCAwIDIgJnNpYyAyNworCQkJIDB4MDgwMCAwIDAgMyAmc2ljIDI4CisJCQkgMHgwODAwIDAgMCA0ICZzaWMgMjkKKworCQkJIDB4MDAwMCAwIDAgMSAmc2ljIDI5CisJCQkgMHgwMDAwIDAgMCAyICZzaWMgMzAKKwkJCSAweDAwMDAgMCAwIDMgJnNpYyAyNworCQkJIDB4MDAwMCAwIDAgNCAmc2ljIDI4PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL3hnZW5lLXBjaS1tc2kudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS94Z2VuZS1wY2ktbXNpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmQ4ODFjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS94Z2VuZS1wY2ktbXNpLnR4dApAQCAtMCwwICsxLDY4IEBACisqIEFwcGxpZWRNaWNybyBYLUdlbmUgdjEgUENJZSBNU0kgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiYXBtLHhnZW5lMS1tc2kiIHRvIGlkZW50aWZ5CisJICAgICAgWC1HZW5lIHYxIFBDSWUgTVNJIGNvbnRyb2xsZXIgYmxvY2suCistIG1zaS1jb250cm9sbGVyOiBpbmRpY2F0ZXMgdGhhdCB0aGlzIGlzIFgtR2VuZSB2MSBQQ0llIE1TSSBjb250cm9sbGVyIG5vZGUKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3MgKDB4NzkwMDAwMDApIGFuZCBsZW5ndGggKDB4OTAwMDAwKSBmb3IgY29udHJvbGxlcgorICAgICAgIHJlZ2lzdGVycy4gVGhlc2UgcmVnaXN0ZXJzIGluY2x1ZGUgdGhlIE1TSSB0ZXJtaW5hdGlvbiBhZGRyZXNzIGFuZCBkYXRhCisgICAgICAgcmVnaXN0ZXJzIGFzIHdlbGwgYXMgdGhlIE1TSSBpbnRlcnJ1cHQgc3RhdHVzIHJlZ2lzdGVycy4KKy0gcmVnLW5hbWVzOiBub3QgcmVxdWlyZWQKKy0gaW50ZXJydXB0czogQSBsaXN0IG9mIDE2IGludGVycnVwdCBvdXRwdXRzIG9mIHRoZSBjb250cm9sbGVyLCBzdGFydGluZyBmcm9tCisJICAgICAgaW50ZXJydXB0IG51bWJlciAweDEwIHRvIDB4MWYuCistIGludGVycnVwdC1uYW1lczogbm90IHJlcXVpcmVkCisKK0VhY2ggUENJZSBub2RlIG5lZWRzIHRvIGhhdmUgcHJvcGVydHkgbXNpLXBhcmVudCB0aGF0IHBvaW50cyB0byBtc2kgY29udHJvbGxlciBub2RlCisKK0V4YW1wbGVzOgorCitTb0MgRFRTSToKKworCSsgTVNJIG5vZGU6CisJbXNpQDc5MDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcG0seGdlbmUxLW1zaSI7CisJCW1zaS1jb250cm9sbGVyOworCQlyZWcgPSA8MHgwMCAweDc5MDAwMDAwIDB4MCAweDkwMDAwMD47CisJCWludGVycnVwdHMgPSAJPDB4MCAweDEwIDB4ND4KKwkJCQk8MHgwIDB4MTEgMHg0PgorCQkJCTwweDAgMHgxMiAweDQ+CisJCQkJPDB4MCAweDEzIDB4ND4KKwkJCQk8MHgwIDB4MTQgMHg0PgorCQkJCTwweDAgMHgxNSAweDQ+CisJCQkJPDB4MCAweDE2IDB4ND4KKwkJCQk8MHgwIDB4MTcgMHg0PgorCQkJCTwweDAgMHgxOCAweDQ+CisJCQkJPDB4MCAweDE5IDB4ND4KKwkJCQk8MHgwIDB4MWEgMHg0PgorCQkJCTwweDAgMHgxYiAweDQ+CisJCQkJPDB4MCAweDFjIDB4ND4KKwkJCQk8MHgwIDB4MWQgMHg0PgorCQkJCTwweDAgMHgxZSAweDQ+CisJCQkJPDB4MCAweDFmIDB4ND47CisJfTsKKworCSsgUENJZSBjb250cm9sbGVyIG5vZGUgd2l0aCBtc2ktcGFyZW50IHByb3BlcnR5IHBvaW50aW5nIHRvIE1TSSBub2RlOgorCXBjaWUwOiBwY2llQDFmMmIwMDAwIHsKKwkJc3RhdHVzID0gImRpc2FibGVkIjsKKwkJZGV2aWNlX3R5cGUgPSAicGNpIjsKKwkJY29tcGF0aWJsZSA9ICJhcG0seGdlbmUtc3Rvcm0tcGNpZSIsICJhcG0seGdlbmUtcGNpZSI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDI+OworCQkjYWRkcmVzcy1jZWxscyA9IDwzPjsKKwkJcmVnID0gPCAweDAwIDB4MWYyYjAwMDAgMHgwIDB4MDAwMTAwMDAgICAvKiBDb250cm9sbGVyIHJlZ2lzdGVycyAqLworCQkJMHhlMCAweGQwMDAwMDAwIDB4MCAweDAwMDQwMDAwPjsgLyogUENJIGNvbmZpZyBzcGFjZSAqLworCQlyZWctbmFtZXMgPSAiY3NyIiwgImNmZyI7CisJCXJhbmdlcyA9IDwweDAxMDAwMDAwIDB4MDAgMHgwMDAwMDAwMCAweGUwIDB4MTAwMDAwMDAgMHgwMCAweDAwMDEwMDAwICAgLyogaW8gKi8KKwkJCSAgMHgwMjAwMDAwMCAweDAwIDB4ODAwMDAwMDAgMHhlMSAweDgwMDAwMDAwIDB4MDAgMHg4MDAwMDAwMD47IC8qIG1lbSAqLworCQlkbWEtcmFuZ2VzID0gPDB4NDIwMDAwMDAgMHg4MCAweDAwMDAwMDAwIDB4ODAgMHgwMDAwMDAwMCAweDAwIDB4ODAwMDAwMDAKKwkJCSAgICAgIDB4NDIwMDAwMDAgMHgwMCAweDAwMDAwMDAwIDB4MDAgMHgwMDAwMDAwMCAweDgwIDB4MDAwMDAwMDA+OworCQlpbnRlcnJ1cHQtbWFwLW1hc2sgPSA8MHgwIDB4MCAweDAgMHg3PjsKKwkJaW50ZXJydXB0LW1hcCA9IDwweDAgMHgwIDB4MCAweDEgJmdpYyAweDAgMHhjMiAweDEKKwkJCQkgMHgwIDB4MCAweDAgMHgyICZnaWMgMHgwIDB4YzMgMHgxCisJCQkJIDB4MCAweDAgMHgwIDB4MyAmZ2ljIDB4MCAweGM0IDB4MQorCQkJCSAweDAgMHgwIDB4MCAweDQgJmdpYyAweDAgMHhjNSAweDE+OworCQlkbWEtY29oZXJlbnQ7CisJCWNsb2NrcyA9IDwmcGNpZTBjbGsgMD47CisJCW1zaS1wYXJlbnQ9IDwmbXNpPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS94Z2VuZS1wY2kudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS94Z2VuZS1wY2kudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNzBiMDYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL3hnZW5lLXBjaS50eHQKQEAgLTAsMCArMSw1NyBAQAorKiBBcHBsaWVkTWljcm8gWC1HZW5lIFBDSWUgaW50ZXJmYWNlCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGRldmljZV90eXBlOiBzZXQgdG8gInBjaSIKKy0gY29tcGF0aWJsZTogc2hvdWxkIGNvbnRhaW4gImFwbSx4Z2VuZS1wY2llIiB0byBpZGVudGlmeSB0aGUgY29yZS4KKy0gcmVnOiBBIGxpc3Qgb2YgcGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggZm9yIGVhY2ggc2V0IG9mIGNvbnRyb2xsZXIKKyAgICAgICByZWdpc3RlcnMuIE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiB0aGUgcmVnLW5hbWVzCisgICAgICAgcHJvcGVydHkuCistIHJlZy1uYW1lczogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgImNzciI6IGNvbnRyb2xsZXIgY29uZmlndXJhdGlvbiByZWdpc3RlcnMuCisgICJjZmciOiBwY2llIGNvbmZpZ3VyYXRpb24gc3BhY2UgcmVnaXN0ZXJzLgorLSAjYWRkcmVzcy1jZWxsczogc2V0IHRvIDwzPgorLSAjc2l6ZS1jZWxsczogc2V0IHRvIDwyPgorLSByYW5nZXM6IHJhbmdlcyBmb3IgdGhlIG91dGJvdW5kIG1lbW9yeSwgSS9PIHJlZ2lvbnMuCistIGRtYS1yYW5nZXM6IHJhbmdlcyBmb3IgdGhlIGluYm91bmQgbWVtb3J5IHJlZ2lvbnMuCistICNpbnRlcnJ1cHQtY2VsbHM6IHNldCB0byA8MT4KKy0gaW50ZXJydXB0LW1hcC1tYXNrIGFuZCBpbnRlcnJ1cHQtbWFwOiBzdGFuZGFyZCBQQ0kgcHJvcGVydGllcworCXRvIGRlZmluZSB0aGUgbWFwcGluZyBvZiB0aGUgUENJZSBpbnRlcmZhY2UgdG8gaW50ZXJydXB0CisJbnVtYmVycy4KKy0gY2xvY2tzOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOiBoYW5kbGUgdG8gcGNpIGNsb2NrLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBzdGF0dXM6IEVpdGhlciAib2siIG9yICJkaXNhYmxlZCIuCistIGRtYS1jb2hlcmVudDogUHJlc2VudCBpZiBkbWEgb3BlcmF0aW9ucyBhcmUgY29oZXJlbnQKKworRXhhbXBsZToKKworU29DIHNwZWNpZmljIERUIEVudHJ5OgorCisJcGNpZTA6IHBjaWVAMWYyYjAwMDAgeworCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCQlkZXZpY2VfdHlwZSA9ICJwY2kiOworCQljb21wYXRpYmxlID0gImFwbSx4Z2VuZS1zdG9ybS1wY2llIiwgImFwbSx4Z2VuZS1wY2llIjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8Mj47CisJCSNhZGRyZXNzLWNlbGxzID0gPDM+OworCQlyZWcgPSA8IDB4MDAgMHgxZjJiMDAwMCAweDAgMHgwMDAxMDAwMCAgIC8qIENvbnRyb2xsZXIgcmVnaXN0ZXJzICovCisJCQkweGUwIDB4ZDAwMDAwMDAgMHgwIDB4MDAwNDAwMDA+OyAvKiBQQ0kgY29uZmlnIHNwYWNlICovCisJCXJlZy1uYW1lcyA9ICJjc3IiLCAiY2ZnIjsKKwkJcmFuZ2VzID0gPDB4MDEwMDAwMDAgMHgwMCAweDAwMDAwMDAwIDB4ZTAgMHgxMDAwMDAwMCAweDAwIDB4MDAwMTAwMDAgICAvKiBpbyAqLworCQkJICAweDAyMDAwMDAwIDB4MDAgMHg4MDAwMDAwMCAweGUxIDB4ODAwMDAwMDAgMHgwMCAweDgwMDAwMDAwPjsgLyogbWVtICovCisJCWRtYS1yYW5nZXMgPSA8MHg0MjAwMDAwMCAweDgwIDB4MDAwMDAwMDAgMHg4MCAweDAwMDAwMDAwIDB4MDAgMHg4MDAwMDAwMAorCQkJICAgICAgMHg0MjAwMDAwMCAweDAwIDB4MDAwMDAwMDAgMHgwMCAweDAwMDAwMDAwIDB4ODAgMHgwMDAwMDAwMD47CisJCWludGVycnVwdC1tYXAtbWFzayA9IDwweDAgMHgwIDB4MCAweDc+OworCQlpbnRlcnJ1cHQtbWFwID0gPDB4MCAweDAgMHgwIDB4MSAmZ2ljIDB4MCAweGMyIDB4MQorCQkJCSAweDAgMHgwIDB4MCAweDIgJmdpYyAweDAgMHhjMyAweDEKKwkJCQkgMHgwIDB4MCAweDAgMHgzICZnaWMgMHgwIDB4YzQgMHgxCisJCQkJIDB4MCAweDAgMHgwIDB4NCAmZ2ljIDB4MCAweGM1IDB4MT47CisJCWRtYS1jb2hlcmVudDsKKwkJY2xvY2tzID0gPCZwY2llMGNsayAwPjsKKwl9OworCisKK0JvYXJkIHNwZWNpZmljIERUIEVudHJ5OgorCSZwY2llMCB7CisJCXN0YXR1cyA9ICJvayI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kveGlsaW54LXBjaWUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS94aWxpbngtcGNpZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJmOTc5YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kveGlsaW54LXBjaWUudHh0CkBAIC0wLDAgKzEsNjIgQEAKKyogWGlsaW54IEFYSSBQQ0llIFJvb3QgUG9ydCBCcmlkZ2UgRFQgZGVzY3JpcHRpb24KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gI2FkZHJlc3MtY2VsbHM6IEFkZHJlc3MgcmVwcmVzZW50YXRpb24gZm9yIHJvb3QgcG9ydHMsIHNldCB0byA8Mz4KKy0gI3NpemUtY2VsbHM6IFNpemUgcmVwcmVzZW50YXRpb24gZm9yIHJvb3QgcG9ydHMsIHNldCB0byA8Mj4KKy0gI2ludGVycnVwdC1jZWxsczogc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgbmVlZGVkIHRvIGVuY29kZSBhbgorCWludGVycnVwdCBzb3VyY2UuIFRoZSB2YWx1ZSBtdXN0IGJlIDEuCistIGNvbXBhdGlibGU6IFNob3VsZCBjb250YWluICJ4bG54LGF4aS1wY2llLWhvc3QtMS4wMC5hIgorLSByZWc6IFNob3VsZCBjb250YWluIEFYSSBQQ0llIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCistIGRldmljZV90eXBlOiBtdXN0IGJlICJwY2kiCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIEFYSSBQQ0llIGludGVycnVwdAorLSBpbnRlcnJ1cHQtbWFwLW1hc2ssCisgIGludGVycnVwdC1tYXA6IHN0YW5kYXJkIFBDSSBwcm9wZXJ0aWVzIHRvIGRlZmluZSB0aGUgbWFwcGluZyBvZiB0aGUKKwlQQ0kgaW50ZXJmYWNlIHRvIGludGVycnVwdCBudW1iZXJzLgorLSByYW5nZXM6IHJhbmdlcyBmb3IgdGhlIFBDSSBtZW1vcnkgcmVnaW9ucyAoSS9PIHNwYWNlIHJlZ2lvbiBpcyBub3QKKwlzdXBwb3J0ZWQgYnkgaGFyZHdhcmUpCisJUGxlYXNlIHJlZmVyIHRvIHRoZSBzdGFuZGFyZCBQQ0kgYnVzIGJpbmRpbmcgZG9jdW1lbnQgZm9yIGEgbW9yZQorCWRldGFpbGVkIGV4cGxhbmF0aW9uCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGJ1cy1yYW5nZTogUENJIGJ1cyBudW1iZXJzIGNvdmVyZWQKKworSW50ZXJydXB0IGNvbnRyb2xsZXIgY2hpbGQgbm9kZQorKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXI6IGlkZW50aWZpZXMgdGhlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIKKy0gI2FkZHJlc3MtY2VsbHM6IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNlbGxzIG5lZWRlZCB0byBlbmNvZGUgYW4KKwlhZGRyZXNzLiBUaGUgdmFsdWUgbXVzdCBiZSAwLgorLSAjaW50ZXJydXB0LWNlbGxzOiBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8gZW5jb2RlIGFuCisJaW50ZXJydXB0IHNvdXJjZS4gVGhlIHZhbHVlIG11c3QgYmUgMS4KKworTk9URToKK1RoZSBjb3JlIHByb3ZpZGVzIGEgc2luZ2xlIGludGVycnVwdCBmb3IgYm90aCBJTlR4L01TSSBtZXNzYWdlcy4gU28sCitjcmVhdGVkIGEgaW50ZXJydXB0IGNvbnRyb2xsZXIgbm9kZSB0byBzdXBwb3J0ICdpbnRlcnJ1cHQtbWFwJyBEVAorZnVuY3Rpb25hbGl0eS4gIFRoZSBkcml2ZXIgd2lsbCBjcmVhdGUgYW4gSVJRIGRvbWFpbiBmb3IgdGhpcyBtYXAsIGRlY29kZQordGhlIGZvdXIgSU5UeCBpbnRlcnJ1cHRzIGluIElTUiBhbmQgcm91dGUgdGhlbSB0byB0aGlzIGRvbWFpbi4KKworCitFeGFtcGxlOgorKysrKysrKysKKworCXBjaV9leHByZXNzOiBheGktcGNpZUA1MDAwMDAwMCB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDM+OworCQkjc2l6ZS1jZWxscyA9IDwyPjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwxPjsKKwkJY29tcGF0aWJsZSA9ICJ4bG54LGF4aS1wY2llLWhvc3QtMS4wMC5hIjsKKwkJcmVnID0gPCAweDUwMDAwMDAwIDB4MTAwMDAwMDAgPjsKKwkJZGV2aWNlX3R5cGUgPSAicGNpIjsKKwkJaW50ZXJydXB0cyA9IDwgMCA1MiA0ID47CisJCWludGVycnVwdC1tYXAtbWFzayA9IDwwIDAgMCA3PjsKKwkJaW50ZXJydXB0LW1hcCA9IDwwIDAgMCAxICZwY2llX2ludGMgMT4sCisJCQkJPDAgMCAwIDIgJnBjaWVfaW50YyAyPiwKKwkJCQk8MCAwIDAgMyAmcGNpZV9pbnRjIDM+LAorCQkJCTwwIDAgMCA0ICZwY2llX2ludGMgND47CisJCXJhbmdlcyA9IDwgMHgwMjAwMDAwMCAwIDB4NjAwMDAwMDAgMHg2MDAwMDAwMCAwIDB4MTAwMDAwMDAgPjsKKworCQlwY2llX2ludGM6IGludGVycnVwdC1jb250cm9sbGVyIHsKKwkJCWludGVycnVwdC1jb250cm9sbGVyOworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MD47CisJCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L2FwbS14Z2VuZS1waHkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9hcG0teGdlbmUtcGh5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjNhNjVhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9hcG0teGdlbmUtcGh5LnR4dApAQCAtMCwwICsxLDc5IEBACisqIEFQTSBYLUdlbmUgMTVHYnBzIE11bHRpLXB1cnBvc2UgUEhZIG5vZGVzCisKK1BIWSBub2RlcyBhcmUgZGVmaW5lZCB0byBkZXNjcmliZSBvbi1jaGlwIDE1R2JwcyBNdWx0aS1wdXJwb3NlIFBIWS4gRWFjaAorUEhZIChwYWlyIG9mIGxhbmVzKSBoYXMgaXRzIG93biBub2RlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlCQk6IFNoYWxsIGJlICJhcG0seGdlbmUtcGh5Ii4KKy0gcmVnCQkJOiBQSFkgbWVtb3J5IHJlc291cmNlIGlzIHRoZSBTRFMgUEhZIGFjY2VzcyByZXNvdXJjZS4KKy0gI3BoeS1jZWxscwkJOiBTaGFsbCBiZSAxIGFzIGl0IGV4cGVjdHMgb25lIGFyZ3VtZW50IGZvciBzZXR0aW5nCisJCQkgIHRoZSBtb2RlIG9mIHRoZSBQSFkuIFBvc3NpYmxlIHZhbHVlcyBhcmUgMCAoU0FUQSksCisJCQkgIDEgKFNHTUlJKSwgMiAoUENJZSksIDMgKFVTQiksIGFuZCA0IChYRkkpLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBzdGF0dXMJCTogU2hhbGwgYmUgIm9rIiBpZiBlbmFibGVkIG9yICJkaXNhYmxlZCIgaWYgZGlzYWJsZWQuCisJCQkgIERlZmF1bHQgaXMgIm9rIi4KKy0gY2xvY2tzCQk6IFJlZmVyZW5jZSB0byB0aGUgY2xvY2sgZW50cnkuCistIGFwbSx0eC1leWUtdHVuaW5nCTogTWFudWFsIGNvbnRyb2wgdG8gZmluZSB0dW5lIHRoZSBjYXB0dXJlIG9mIHRoZSBzZXJpYWwKKwkJCSAgYml0IGxpbmVzIGZyb20gdGhlIGF1dG9tYXRpYyBjYWxpYnJhdGVkIHBvc2l0aW9uLgorCQkJICBUd28gc2V0IG9mIDMtdHVwbGUgc2V0dGluZyBmb3IgZWFjaCAodXAgdG8gMykKKwkJCSAgc3VwcG9ydGVkIGxpbmsgc3BlZWQgb24gdGhlIGhvc3QuIFJhbmdlIGZyb20gMCB0bworCQkJICAxMjcgaW4gdW5pdCBvZiBvbmUgYml0IHBlcmlvZC4gRGVmYXVsdCBpcyAxMC4KKy0gYXBtLHR4LWV5ZS1kaXJlY3Rpb24JOiBFeWUgdHVuaW5nIG1hbnVhbCBjb250cm9sIGRpcmVjdGlvbi4gMCBtZWFucyBzYW1wbGUKKwkJCSAgZGF0YSBlYXJsaWVyIHRoYW4gdGhlIG5vbWluYWwgc2FtcGxpbmcgcG9pbnQuIDEgbWVhbnMKKwkJCSAgc2FtcGxlIGRhdGEgbGF0ZXIgdGhhbiB0aGUgbm9taW5hbCBzYW1wbGluZyBwb2ludC4KKwkJCSAgVHdvIHNldCBvZiAzLXR1cGxlIHNldHRpbmcgZm9yIGVhY2ggKHVwIHRvIDMpCisJCQkgIHN1cHBvcnRlZCBsaW5rIHNwZWVkIG9uIHRoZSBob3N0LiBEZWZhdWx0IGlzIDAuCistIGFwbSx0eC1ib29zdC1nYWluCTogRnJlcXVlbmN5IGJvb3N0IEFDIChMU0IgMy1iaXQpIGFuZCBEQyAoMi1iaXQpCisJCQkgIGdhaW4gY29udHJvbC4gVHdvIHNldCBvZiAzLXR1cGxlIHNldHRpbmcgZm9yIGVhY2gKKwkJCSAgKHVwIHRvIDMpIHN1cHBvcnRlZCBsaW5rIHNwZWVkIG9uIHRoZSBob3N0LiBSYW5nZSBpcworCQkJICBiZXR3ZWVuIDAgdG8gMzEgaW4gdW5pdCBvZiBkQi4gRGVmYXVsdCBpcyAzLgorLSBhcG0sdHgtYW1wbGl0dWRlCTogQW1wbGl0dWRlIGNvbnRyb2wuIFR3byBzZXQgb2YgMy10dXBsZSBzZXR0aW5nIGZvcgorCQkJICBlYWNoICh1cCB0byAzKSBzdXBwb3J0ZWQgbGluayBzcGVlZCBvbiB0aGUgaG9zdC4KKwkJCSAgUmFuZ2UgaXMgYmV0d2VlbiAwIHRvIDE5OTUwMCBpbiB1bml0IG9mIHVWLgorCQkJICBEZWZhdWx0IGlzIDE5OTUwMCB1Vi4KKy0gYXBtLHR4LXByZS1jdXJzb3IxCTogMXN0IHByZS1jdXJzb3IgZW1waGFzaXMgdGFwcyBjb250cm9sLiBUd28gc2V0IG9mCisJCQkgIDMtdHVwbGUgc2V0dGluZyBmb3IgZWFjaCAodXAgdG8gMykgc3VwcG9ydGVkIGxpbmsKKwkJCSAgc3BlZWQgb24gdGhlIGhvc3QuIFJhbmdlIGlzIDAgdG8gMjczMDAwIGluIHVuaXQgb2YKKwkJCSAgdVYuIERlZmF1bHQgaXMgMC4KKy0gYXBtLHR4LXByZS1jdXJzb3IyCTogMnN0IHByZS1jdXJzb3IgZW1waGFzaXMgdGFwcyBjb250cm9sLiBUd28gc2V0IG9mCisJCQkgIDMtdHVwbGUgc2V0dGluZyBmb3IgZWFjaCAodXAgdG8gMykgc3VwcG9ydGVkIGxpbmsKKwkJCSAgc3BlZWQgb24gdGhlIGhvc3QuIFJhbmdlIGlzIDAgdG8gMTI3NDAwIGluIHVuaXQgdVYuCisJCQkgIERlZmF1bHQgaXMgMHgwLgorLSBhcG0sdHgtcG9zdC1jdXJzb3IJOiBQb3N0LWN1cnNvciBlbXBoYXNpcyB0YXBzIGNvbnRyb2wuIFR3byBzZXQgb2YKKwkJCSAgMy10dXBsZSBzZXR0aW5nIGZvciBHZW4xLCBHZW4yLCBhbmQgR2VuMy4gUmFuZ2UgaXMKKwkJCSAgYmV0d2VlbiAwIHRvIDB4MWYgaW4gdW5pdCBvZiAxOC4ybVYuIERlZmF1bHQgaXMgMHhmLgorLSBhcG0sdHgtc3BlZWQJCTogVHggb3BlcmF0aW5nIHNwZWVkLiBPbmUgc2V0IG9mIDMtdHVwbGUgZm9yIGVhY2gKKwkJCSAgc3VwcG9ydGVkIGxpbmsgc3BlZWQgb24gdGhlIGhvc3QuCisJCQkgICAwID0gMS0yR2JwcworCQkJICAgMSA9IDItNEdicHMgKDFzdCB0dXBsZSBkZWZhdWx0KQorCQkJICAgMiA9IDQtOEdicHMKKwkJCSAgIDMgPSA4LTE1R2JwcyAoMm5kIHR1cGxlIGRlZmF1bHQpCisJCQkgICA0ID0gMi41LTRHYnBzCisJCQkgICA1ID0gNC01R2JwcworCQkJICAgNiA9IDUtNkdicHMKKwkJCSAgIDcgPSA2LTE2R2JwcyAoM3JkIHR1cGxlIGRlZmF1bHQpCisKK05PVEU6IFBIWSBvdmVycmlkZSBwYXJhbWV0ZXJzIGFyZSBib2FyZCBzcGVjaWZpYyBzZXR0aW5nLgorCitFeGFtcGxlOgorCQlwaHkxOiBwaHlAMWYyMWEwMDAgeworCQkJY29tcGF0aWJsZSA9ICJhcG0seGdlbmUtcGh5IjsKKwkJCXJlZyA9IDwweDAgMHgxZjIxYTAwMCAweDAgMHgxMDA+OworCQkJI3BoeS1jZWxscyA9IDwxPjsKKwkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJCX07CisKKwkJcGh5MjogcGh5QDFmMjJhMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiYXBtLHhnZW5lLXBoeSI7CisJCQlyZWcgPSA8MHgwIDB4MWYyMmEwMDAgMHgwIDB4MTAwPjsKKwkJCSNwaHktY2VsbHMgPSA8MT47CisJCQlzdGF0dXMgPSAib2siOworCQl9OworCisJCXBoeTM6IHBoeUAxZjIzYTAwMCB7CisJCQljb21wYXRpYmxlID0gImFwbSx4Z2VuZS1waHkiOworCQkJcmVnID0gPDB4MCAweDFmMjNhMDAwIDB4MCAweDEwMD47CisJCQkjcGh5LWNlbGxzID0gPDE+OworCQkJc3RhdHVzID0gIm9rIjsKKwkJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvYmVybGluLXNhdGEtcGh5LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvYmVybGluLXNhdGEtcGh5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDE1NWY4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9iZXJsaW4tc2F0YS1waHkudHh0CkBAIC0wLDAgKzEsMzYgQEAKK0JlcmxpbiBTQVRBIFBIWQorLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2YKKyAgICAibWFydmVsbCxiZXJsaW4yLXNhdGEtcGh5IgorICAgICJtYXJ2ZWxsLGJlcmxpbjJxLXNhdGEtcGh5IgorLSBhZGRyZXNzLWNlbGxzOiBzaG91bGQgYmUgMQorLSBzaXplLWNlbGxzOiBzaG91bGQgYmUgMAorLSBwaHktY2VsbHM6IGZyb20gdGhlIGdlbmVyaWMgUEhZIGJpbmRpbmdzLCBtdXN0IGJlIDEKKy0gcmVnOiBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyCistIGNsb2NrczogcmVmZXJlbmNlIHRvIHRoZSBjbG9jayBlbnRyeQorCitTdWItbm9kZXM6CitFYWNoIFBIWSBzaG91bGQgYmUgcmVwcmVzZW50ZWQgYXMgYSBzdWItbm9kZS4KKworU3ViLW5vZGVzIHJlcXVpcmVkIHByb3BlcnRpZXM6CistIHJlZzogdGhlIFBIWSBudW1iZXIKKworRXhhbXBsZToKKwlzYXRhX3BoeTogcGh5QGY3ZTkwMGEwIHsKKwkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLGJlcmxpbjJxLXNhdGEtcGh5IjsKKwkJcmVnID0gPDB4ZjdlOTAwYTAgMHgyMDA+OworCQljbG9ja3MgPSA8JmNoaXAgQ0xLSURfU0FUQT47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJI3BoeS1jZWxscyA9IDwxPjsKKworCQlzYXRhLXBoeUAwIHsKKwkJCXJlZyA9IDwwPjsKKwkJfTsKKworCQlzYXRhLXBoeUAxIHsKKwkJCXJlZyA9IDwxPjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9iZXJsaW4tdXNiLXBoeS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L2Jlcmxpbi11c2ItcGh5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTMzNzgwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9iZXJsaW4tdXNiLXBoeS50eHQKQEAgLTAsMCArMSwxNiBAQAorKiBNYXJ2ZWxsIEJlcmxpbiBVU0IgUEhZCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJtYXJ2ZWxsLGJlcmxpbjItdXNiLXBoeSIgb3IgIm1hcnZlbGwsYmVybGluMmNkLXVzYi1waHkiCistIHJlZzogYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVycworLSAjcGh5cy1jZWxsczogc2hvdWxkIGJlIDAKKy0gcmVzZXRzOiByZWZlcmVuY2UgdG8gdGhlIHJlc2V0IGNvbnRyb2xsZXIKKworRXhhbXBsZToKKworCXVzYi1waHlAZjc3NDAwMCB7CisJCWNvbXBhdGlibGUgPSAibWFydmVsbCxiZXJsaW4yLXVzYi1waHkiOworCQlyZWcgPSA8MHhmNzc0MDAwIDB4MTI4PjsKKwkJI3BoeS1jZWxscyA9IDwwPjsKKwkJcmVzZXRzID0gPCZjaGlwIDB4MTA0IDE0PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9icmNtLGJyY21zdGItc2F0YS1waHkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9icmNtLGJyY21zdGItc2F0YS1waHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmODFlZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L2JyY20sYnJjbXN0Yi1zYXRhLXBoeS50eHQKQEAgLTAsMCArMSw0MCBAQAorKiBCcm9hZGNvbSBTQVRBMyBQSFkgZm9yIFNUQgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9yIG1vcmUgb2YKKyAgICAgImJyY20sYmNtNzQ0NS1zYXRhLXBoeSIKKyAgICAgImJyY20scGh5LXNhdGEzIgorLSBhZGRyZXNzLWNlbGxzOiBzaG91bGQgYmUgMQorLSBzaXplLWNlbGxzOiBzaG91bGQgYmUgMAorLSByZWc6IHJlZ2lzdGVyIHJhbmdlIGZvciB0aGUgUEhZIFBDQiBpbnRlcmZhY2UKKy0gcmVnLW5hbWVzOiBzaG91bGQgYmUgInBoeSIKKworU3ViLW5vZGVzOgorICBFYWNoIHBvcnQncyBQSFkgc2hvdWxkIGJlIHJlcHJlc2VudGVkIGFzIGEgc3ViLW5vZGUuCisKK1N1Yi1ub2RlcyByZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSByZWc6IHRoZSBQSFkgbnVtYmVyCistIHBoeS1jZWxsczogZ2VuZXJpYyBQSFkgYmluZGluZzsgbXVzdCBiZSAwCitPcHRpb25hbDoKKy0gYnJjbSxlbmFibGUtc3NjOiB1c2Ugc3ByZWFkIHNwZWN0cnVtIGNsb2NraW5nIChTU0MpIG9uIHRoaXMgcG9ydAorCisKK0V4YW1wbGU6CisKKwlzYXRhLXBoeUBmMDQ1ODEwMCB7CisJCWNvbXBhdGlibGUgPSAiYnJjbSxiY203NDQ1LXNhdGEtcGh5IiwgImJyY20scGh5LXNhdGEzIjsKKwkJcmVnID0gPDB4ZjA0NTgxMDAgMHgxZTAwPiwgPDB4ZjA0NTgwNGMgMHgxMD47CisJCXJlZy1uYW1lcyA9ICJwaHkiOworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJc2F0YS1waHlAMCB7CisJCQlyZWcgPSA8MD47CisJCQkjcGh5LWNlbGxzID0gPDA+OworCQl9OworCisJCXNhdGEtcGh5QDEgeworCQkJcmVnID0gPDE+OworCQkJI3BoeS1jZWxscyA9IDwwPjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9icmNtLGN5Z251cy1wY2llLXBoeS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L2JyY20sY3lnbnVzLXBjaWUtcGh5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjFjNGJjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9icmNtLGN5Z251cy1wY2llLXBoeS50eHQKQEAgLTAsMCArMSw0NyBAQAorQnJvYWRjb20gQ3lnbnVzIFBDSWUgUEhZCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IG11c3QgYmUgImJyY20sY3lnbnVzLXBjaWUtcGh5IgorLSByZWc6IGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBQQ0llIFBIWSBibG9jaworLSAjYWRkcmVzcy1jZWxsczogbXVzdCBiZSAxCistICNzaXplLWNlbGxzOiBtdXN0IGJlIDAKKworRWFjaCBQQ0llIFBIWSBzaG91bGQgYmUgcmVwcmVzZW50ZWQgYnkgYSBjaGlsZCBub2RlCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgRm9yIHRoZSBjaGlsZCBub2RlOgorLSByZWc6IHRoZSBQSFkgSUQKKzAgLSBQQ0llIFJDIDAKKzEgLSBQQ0llIFJDIDEKKy0gI3BoeS1jZWxsczogbXVzdCBiZSAwCisKK0V4YW1wbGU6CisJcGNpZV9waHk6IHBoeUAwMzAxZDBhMCB7CisJCWNvbXBhdGlibGUgPSAiYnJjbSxjeWdudXMtcGNpZS1waHkiOworCQlyZWcgPSA8MHgwMzAxZDBhMCAweDE0PjsKKworCQlwY2llMF9waHk6IHBoeUAwIHsKKwkJCXJlZyA9IDwwPjsKKwkJCSNwaHktY2VsbHMgPSA8MD47CisJCX07CisKKwkJcGNpZTFfcGh5OiBwaHlAMSB7CisJCQlyZWcgPSA8MT47CisJCQkjcGh5LWNlbGxzID0gPDA+OworCQl9OworCX07CisKKwkvKiB1c2VycyBvZiB0aGUgUENJZSBwaHkgKi8KKworCXBjaWUwOiBwY2llQDE4MDEyMDAwIHsKKwkJLi4uCisJCS4uLgorCQlwaHlzID0gPCZwY2llMF9waHk+OworCQlwaHktbmFtZXMgPSAicGNpZS1waHkiOworCX07CisKKwlwY2llMTogcGNpZUAxODAxMzAwMCB7CisJCS4uLgorCQkuLi4KKwkJcGh5cyA9IDxwY2llMV9waHk+OworCQlwaHktbmFtZXMgPSAicGNpZS1waHkiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L2JyY20sa29uYS11c2IyLXBoeS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L2JyY20sa29uYS11c2IyLXBoeS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RjOGIzZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvYnJjbSxrb25hLXVzYjItcGh5LnR4dApAQCAtMCwwICsxLDE1IEBACitCUk9BRENPTSBLT05BIFVTQjIgUEhZCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiBicmNtLGtvbmEtdXNiMi1waHkKKyAtIHJlZzogb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIFBIWSByZWdpc3RlcnMKKyAtICNwaHktY2VsbHM6IG11c3QgYmUgMAorUmVmZXIgdG8gcGh5L3BoeS1iaW5kaW5ncy50eHQgZm9yIHRoZSBnZW5lcmljIFBIWSBiaW5kaW5nIHByb3BlcnRpZXMKKworRXhhbXBsZToKKworCXVzYnBoeTogdXNiLXBoeUAzZjEzMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiYnJjbSxrb25hLXVzYjItcGh5IjsKKwkJcmVnID0gPDB4M2YxMzAwMDAgMHgyOD47CisJCSNwaHktY2VsbHMgPSA8MD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvY2FseGVkYS1jb21ib3BoeS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L2NhbHhlZGEtY29tYm9waHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MjJiZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L2NhbHhlZGEtY29tYm9waHkudHh0CkBAIC0wLDAgKzEsMTcgQEAKK0NhbHhlZGEgSGlnaGJhbmsgQ29tYmluYXRpb24gUGh5cyBmb3IgU0FUQQorCitQcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJjYWx4ZWRhLGhiLWNvbWJvcGh5IgorLSAjcGh5LWNlbGxzOiBTaG91bGQgYmUgMS4KKy0gcmVnIDogQWRkcmVzcyBhbmQgc2l6ZSBmb3IgQ29tYmluYXRpb24gUGh5IHJlZ2lzdGVycy4KKy0gcGh5ZGV2OiBkZXZpY2UgSUQgZm9yIHByb2dyYW1taW5nIHRoZSBjb21ib3BoeS4KKworRXhhbXBsZToKKworCWNvbWJvcGh5NTogY29tYm8tcGh5QGZmZjVkMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJjYWx4ZWRhLGhiLWNvbWJvcGh5IjsKKwkJI3BoeS1jZWxscyA9IDwxPjsKKwkJcmVnID0gPDB4ZmZmNWQwMDAgMHgxMDAwPjsKKwkJcGh5ZGV2ID0gPDMxPjsKKwl9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L2RtODE2eC1waHkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9kbTgxNngtcGh5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmUzZDExCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9kbTgxNngtcGh5LnR4dApAQCAtMCwwICsxLDI0IEBACitEZXZpY2UgdHJlZSBiaW5kaW5nIGRvY3VtZW50YXRpb24gZm9yIGFtODE2eCBVU0IgUEhZCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgInRpLGRtODE2eC11c2ItcGh5IgorLSByZWcgOiBvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgUEhZIHJlZ2lzdGVyIHNldC4KKy0gcmVnLW5hbWVzIDogbmFtZSBmb3IgdGhlIHBoeSByZWdpc3RlcnMKKy0gY2xvY2tzIDogcGhhbmRsZSB0byB0aGUgY2xvY2sKKy0gY2xvY2stbmFtZXMgOiBuYW1lIG9mIHRoZSBjbG9jaworLSBzeXNjb246IHBoYW5kbGUgZm9yIHRoZSBzeXNjb24gbm9kZSB0byBhY2Nlc3MgbWlzYyByZWdpc3RlcnMKKy0gI3BoeS1jZWxscyA6IGZyb20gdGhlIGdlbmVyaWMgUEhZIGJpbmRpbmdzLCBtdXN0IGJlIDEKKy0gc3lzY29uOiBwaGFuZGxlIGZvciB0aGUgc3lzY29uIG5vZGUgdG8gYWNjZXNzIG1pc2MgcmVnaXN0ZXJzCisKK0V4YW1wbGU6CisKK3VzYl9waHkwOiB1c2ItcGh5QDIwIHsKKwljb21wYXRpYmxlID0gInRpLGRtODE2OC11c2ItcGh5IjsKKwlyZWcgPSA8MHgyMCAweDg+OworCXJlZy1uYW1lcyA9ICJwaHkiOworCWNsb2NrcyA9IDwmbWFpbl9mYXBsbCA2PjsKKwljbG9jay1uYW1lcyA9ICJyZWZjbGsiOworCSNwaHktY2VsbHMgPSA8MD47CisJc3lzY29uID0gPCZzY21fY29uZj47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9oaXg1aGQyLXBoeS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L2hpeDVoZDItcGh5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTYxNjhiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9oaXg1aGQyLXBoeS50eHQKQEAgLTAsMCArMSwyMiBAQAorSGlzaWxpY29uIGhpeDVoZDIgU0FUQSBQSFkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiaGlzaWxpY29uLGhpeDVoZDItc2F0YS1waHkiCistIHJlZzogb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIFBIWSByZWdpc3RlcnMKKy0gI3BoeS1jZWxsczogbXVzdCBiZSAwCitSZWZlciB0byBwaHkvcGh5LWJpbmRpbmdzLnR4dCBmb3IgdGhlIGdlbmVyaWMgUEhZIGJpbmRpbmcgcHJvcGVydGllcworCitPcHRpb25hbCBQcm9wZXJ0aWVzOgorLSBoaXNpbGljb24scGVyaXBoZXJhbC1zeXNjb246IHBoYW5kbGUgb2Ygc3lzY29uIHVzZWQgdG8gY29udHJvbCBwZXJpcGhlcmFsLgorLSBoaXNpbGljb24scG93ZXItcmVnOiBvZmZzZXQgYW5kIGJpdCBudW1iZXIgd2l0aGluIHBlcmlwaGVyYWwtc3lzY29uLAorCXJlZ2lzdGVyIG9mIGNvbnRyb2xsaW5nIHNhdGEgcG93ZXIgc3VwcGx5LgorCitFeGFtcGxlOgorCXNhdGFfcGh5OiBwaHlAZjk5MDAwMDAgeworCQljb21wYXRpYmxlID0gImhpc2lsaWNvbixoaXg1aGQyLXNhdGEtcGh5IjsKKwkJcmVnID0gPDB4Zjk5MDAwMDAgMHgxMDAwMD47CisJCSNwaHktY2VsbHMgPSA8MD47CisJCWhpc2lsaWNvbixwZXJpcGhlcmFsLXN5c2NvbiA9IDwmcGVyaXBoZXJhbF9jdHJsPjsKKwkJaGlzaWxpY29uLHBvd2VyLXJlZyA9IDwweDggMTA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L2tleXN0b25lLXVzYi1waHkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9rZXlzdG9uZS11c2ItcGh5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzdiM2E4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9rZXlzdG9uZS11c2ItcGh5LnR4dApAQCAtMCwwICsxLDIwIEBACitUSSBLZXlzdG9uZSBVU0IgUEhZCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgInRpLGtleXN0b25lLXVzYnBoeSIuCisgLSAjYWRkcmVzcy1jZWxscywgI3NpemUtY2VsbHMgOiBzaG91bGQgYmUgJzEnIGlmIHRoZSBkZXZpY2UgaGFzIHN1Yi1ub2RlcworICAgd2l0aCAncmVnJyBwcm9wZXJ0eS4KKyAtIHJlZyA6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgdXNiIHBoeSBjb250cm9sIHJlZ2lzdGVyIHNldC4KKworVGhlIG1haW4gcHVycG9zZSBvZiB0aGlzIFBIWSBkcml2ZXIgaXMgdG8gZW5hYmxlIHRoZSBVU0IgUEhZIHJlZmVyZW5jZSBjbG9jaworZ2F0ZSBvbiB0aGUgS2V5c3RvbmUgU09DIGZvciBib3RoIHRoZSBVU0IyIGFuZCBVU0IzIFBIWS4gT3RoZXJ3aXNlIGl0IGlzIGp1c3QKK2FuIE5PUCBQSFkgZHJpdmVyLiAgSGVuY2UgdGhpcyBub2RlIGlzIHJlZmVyZW5jZWQgYXMgYm90aCB0aGUgdXNiMiBhbmQgdXNiMworcGh5IG5vZGUgaW4gdGhlIFVTQiBHbHVlIGxheWVyIGRyaXZlciBub2RlLgorCit1c2JfcGh5OiB1c2JfcGh5QDI2MjA3MzggeworCWNvbXBhdGlibGUgPSAidGksa2V5c3RvbmUtdXNicGh5IjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwxPjsKKwlyZWcgPSA8MHgyNjIwNzM4IDMyPjsKKwlzdGF0dXMgPSAiZGlzYWJsZWQiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvbXhzLXVzYi1waHkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9teHMtdXNiLXBoeS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc5Yjg0YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvbXhzLXVzYi1waHkudHh0CkBAIC0wLDAgKzEsMjEgQEAKKyogRnJlZXNjYWxlIE1YUyBVU0IgUGh5IERldmljZQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgY29udGFpbjoKKwkqICJmc2wsaW14MjMtdXNicGh5IiBmb3IgaW14MjMgYW5kIGlteDI4CisJKiAiZnNsLGlteDZxLXVzYnBoeSIgZm9yIGlteDZkcSBhbmQgaW14NmRsCisJKiAiZnNsLGlteDZzbC11c2JwaHkiIGZvciBpbXg2c2wKKwkqICJmc2wsdmY2MTAtdXNicGh5IiBmb3IgVnlicmlkIHZmNjEwCisJKiAiZnNsLGlteDZzeC11c2JwaHkiIGZvciBpbXg2c3gKKyAgImZzbCxpbXgyMy11c2JwaHkiIGlzIHN0aWxsIGEgZmFsbGJhY2sgZm9yIG90aGVyIHN0cmluZ3MKKy0gcmVnOiBTaG91bGQgY29udGFpbiByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBwaHkgaW50ZXJydXB0CistIGZzbCxhbmF0b3A6IHBoYW5kbGUgZm9yIGFuYXRvcCByZWdpc3RlciwgaXQgaXMgb25seSBmb3IgaW14NiBTb0Mgc2VyaWVzCisKK0V4YW1wbGU6Cit1c2JwaHkxOiB1c2JwaHlAMDIwYzkwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDZxLXVzYnBoeSIsICJmc2wsaW14MjMtdXNicGh5IjsKKwlyZWcgPSA8MHgwMjBjOTAwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8MCA0NCAweDA0PjsKKwlmc2wsYW5hdG9wID0gPCZhbmF0b3A+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvbnZpZGlhLHRlZ3JhMjAtdXNiLXBoeS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L252aWRpYSx0ZWdyYTIwLXVzYi1waHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5YWE3OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L252aWRpYSx0ZWdyYTIwLXVzYi1waHkudHh0CkBAIC0wLDAgKzEsNzIgQEAKK1RlZ3JhIFNPQyBVU0IgUEhZCisKK1RoZSBkZXZpY2Ugbm9kZSBmb3IgVGVncmEgU09DIFVTQiBQSFk6CisKK1JlcXVpcmVkIHByb3BlcnRpZXMgOgorIC0gY29tcGF0aWJsZSA6IEZvciBUZWdyYTIwLCBtdXN0IGNvbnRhaW4gIm52aWRpYSx0ZWdyYTIwLXVzYi1waHkiLgorICAgRm9yIFRlZ3JhMzAsIG11c3QgY29udGFpbiAibnZpZGlhLHRlZ3JhMzAtdXNiLXBoeSIuICBPdGhlcndpc2UsIG11c3QgY29udGFpbgorICAgIm52aWRpYSw8Y2hpcD4tdXNiLXBoeSIgcGx1cyBhdCBsZWFzdCBvbmUgb2YgdGhlIGFib3ZlLCB3aGVyZSA8Y2hpcD4gaXMKKyAgIHRlZ3JhMTE0LCB0ZWdyYTEyNCwgdGVncmExMzIsIG9yIHRlZ3JhMjEwLgorIC0gcmVnIDogRGVmaW5lcyB0aGUgZm9sbG93aW5nIHNldCBvZiByZWdpc3RlcnMsIGluIHRoZSBvcmRlciBsaXN0ZWQ6CisgICAtIFRoZSBQSFkncyBvd24gcmVnaXN0ZXIgc2V0LgorICAgICBBbHdheXMgcHJlc2VudC4KKyAgIC0gVGhlIHJlZ2lzdGVyIHNldCBvZiB0aGUgUEhZIGNvbnRhaW5pbmcgdGhlIFVUTUkgcGFkIGNvbnRyb2wgcmVnaXN0ZXJzLgorICAgICBQcmVzZW50IGlmLWFuZC1vbmx5LWlmIHBoeV90eXBlID09IHV0bWkuCisgLSBwaHlfdHlwZSA6IFNob3VsZCBiZSBvbmUgb2YgInV0bWkiLCAidWxwaSIgb3IgImhzaWMiLgorIC0gY2xvY2tzIDogRGVmaW5lcyB0aGUgY2xvY2tzIGxpc3RlZCBpbiB0aGUgY2xvY2stbmFtZXMgcHJvcGVydHkuCisgLSBjbG9jay1uYW1lcyA6IFRoZSBmb2xsb3dpbmcgY2xvY2sgbmFtZXMgbXVzdCBiZSBwcmVzZW50OgorICAgLSByZWc6IFRoZSBjbG9jayBuZWVkZWQgdG8gYWNjZXNzIHRoZSBQSFkncyBvd24gcmVnaXN0ZXJzLiBUaGlzIGlzIHRoZQorICAgICBhc3NvY2lhdGVkIEVIQ0kgY29udHJvbGxlcidzIGNsb2NrLiBBbHdheXMgcHJlc2VudC4KKyAgIC0gcGxsX3U6IFBMTF9VLiBBbHdheXMgcHJlc2VudC4KKyAgIC0gdGltZXI6IFRoZSB0aW1lb3V0IGNsb2NrIChjbGtfbSkuIFByZXNlbnQgaWYgcGh5X3R5cGUgPT0gdXRtaS4KKyAgIC0gdXRtaS1wYWRzOiBUaGUgY2xvY2sgbmVlZGVkIHRvIGFjY2VzcyB0aGUgVVRNSSBwYWQgY29udHJvbCByZWdpc3RlcnMuCisgICAgIFByZXNlbnQgaWYgcGh5X3R5cGUgPT0gdXRtaS4KKyAgIC0gdWxwaS1saW5rOiBUaGUgY2xvY2sgVGVncmEgcHJvdmlkZXMgdG8gdGhlIFVMUEkgUEhZIChjZGV2MikuCisgICAgIFByZXNlbnQgaWYgcGh5X3R5cGUgPT0gdWxwaSwgYW5kIFVMUEkgbGluayBtb2RlIGlzIGluIHVzZS4KKyAtIHJlc2V0cyA6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiByZXNldC1uYW1lcy4KKyAgIFNlZSAuLi9yZXNldC9yZXNldC50eHQgZm9yIGRldGFpbHMuCisgLSByZXNldC1uYW1lcyA6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgICAtIHVzYjogVGhlIFBIWSdzIG93biByZXNldCBzaWduYWwuCisgICAtIHV0bWktcGFkczogVGhlIHJlc2V0IG9mIHRoZSBQSFkgY29udGFpbmluZyB0aGUgY2hpcC13aWRlIFVUTUkgcGFkIGNvbnRyb2wKKyAgICAgcmVnaXN0ZXJzLiBSZXF1aXJlZCBldmVuIGlmIHBoeV90eXBlID09IHVscGkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHBoeV90eXBlID09IHVscGk6CisgIC0gbnZpZGlhLHBoeS1yZXNldC1ncGlvIDogVGhlIEdQSU8gdXNlZCB0byByZXNldCB0aGUgUEhZLgorCitSZXF1aXJlZCBQSFkgdGltaW5nIHBhcmFtcyBmb3IgdXRtaSBwaHksIGZvciBhbGwgY2hpcHM6CisgIC0gbnZpZGlhLGhzc3luYy1zdGFydC1kZWxheSA6IE51bWJlciBvZiA0ODAgTWh6IGNsb2NrIGN5Y2xlcyB0byB3YWl0IGJlZm9yZQorICAgIHN0YXJ0IG9mIHN5bmMgbGF1bmNoZXMgUnhBY3RpdmUKKyAgLSBudmlkaWEsZWxhc3RpYy1saW1pdCA6IFZhcmlhYmxlIEZJRk8gRGVwdGggb2YgZWxhc3RpYyBpbnB1dCBzdG9yZQorICAtIG52aWRpYSxpZGxlLXdhaXQtZGVsYXkgOiBOdW1iZXIgb2YgNDgwIE1oeiBjbG9jayBjeWNsZXMgb2YgaWRsZSB0byB3YWl0CisgICAgYmVmb3JlIGRlY2xhcmUgSURMRS4KKyAgLSBudmlkaWEsdGVybS1yYW5nZS1hZGogOiBSYW5nZSBhZGp1c21lbnQgb24gdGVybWluYXRpb25zCisgIC0gRWl0aGVyIG9uZSBvZiB0aGUgZm9sbG93aW5nIGZvciBIUyBkcml2ZXIgb3V0cHV0IGNvbnRyb2w6CisgICAgLSBudmlkaWEseGN2ci1zZXR1cCA6IGludGVnZXIsIHVzZXMgdGhlIHByb3ZpZGVkIHZhbHVlLgorICAgIC0gbnZpZGlhLHhjdnItc2V0dXAtdXNlLWZ1c2VzIDogYm9vbGVhbiwgaW5kaWNhdGVzIHRoYXQgdGhlIHZhbHVlIGlzIHJlYWQKKyAgICAgIGZyb20gdGhlIG9uLWNoaXAgZnVzZXMKKyAgICBJZiBib3RoIGFyZSBwcm92aWRlZCwgbnZpZGlhLHhjdnItc2V0dXAtdXNlLWZ1c2VzIHRha2VzIHByZWNlZGVuY2UuCisgIC0gbnZpZGlhLHhjdnItbHNmc2xldyA6IExTIGZhbGxpbmcgc2xldyByYXRlIGNvbnRyb2wuCisgIC0gbnZpZGlhLHhjdnItbHNyc2xldyA6ICBMUyByaXNpbmcgc2xldyByYXRlIGNvbnRyb2wuCisKK1JlcXVpcmVkIFBIWSB0aW1pbmcgcGFyYW1zIGZvciB1dG1pIHBoeSwgb25seSBvbiBUZWdyYTMwIGFuZCBhYm92ZToKKyAgLSBudmlkaWEseGN2ci1oc3NsZXcgOiBIUyBzbGV3IHJhdGUgY29udHJvbC4KKyAgLSBudmlkaWEsaHNzcXVlbGNoLWxldmVsIDogSFMgc3F1ZWxjaCBkZXRlY3RvciBsZXZlbC4KKyAgLSBudmlkaWEsaHNkaXNjb24tbGV2ZWwgOiBIUyBkaXNjb25uZWN0IGRldGVjdG9yIGxldmVsLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIG52aWRpYSxoYXMtbGVnYWN5LW1vZGUgOiBib29sZWFuIGluZGljYXRlcyB3aGV0aGVyIHRoaXMgY29udHJvbGxlciBjYW4KKyAgICBvcGVyYXRlIGluIGxlZ2FjeSBtb2RlIChhcyBBUFggMjUwMCAvIDI2MDApLiBJbiBsZWdhY3kgbW9kZSBzb21lCisgICAgcmVnaXN0ZXJzIGFyZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBBUEJfTUlTQyBiYXNlIGFkZHJlc3MgaW5zdGVhZCBvZgorICAgIHRoZSBVU0IgY29udHJvbGxlci4KKyAgLSBudmlkaWEsaXMtd2lyZWQgOiBib29sZWFuLiBJbmRpY2F0ZXMgd2hldGhlciB3ZSBjYW4gZG8gY2VydGFpbiBraW5kIG9mIHBvd2VyCisgICAgb3B0aW1pemF0aW9ucyBmb3IgdGhlIGRldmljZXMgdGhhdCBhcmUgYWx3YXlzIGNvbm5lY3RlZC4gZS5nLiBtb2RlbS4KKyAgLSBkcl9tb2RlIDogZHVhbCByb2xlIG1vZGUuIEluZGljYXRlcyB0aGUgd29ya2luZyBtb2RlIGZvciB0aGUgUEhZLiBDYW4gYmUKKyAgICAiaG9zdCIsICJwZXJpcGhlcmFsIiwgb3IgIm90ZyIuIERlZmF1bHRzIHRvICJob3N0IiBpZiBub3QgZGVmaW5lZC4KKyAgICAgIGhvc3QgbWVhbnMgdGhpcyBpcyBhIGhvc3QgY29udHJvbGxlcgorICAgICAgcGVyaXBoZXJhbCBtZWFucyBpdCBpcyBkZXZpY2UgY29udHJvbGxlcgorICAgICAgb3RnIG1lYW5zIGl0IGNhbiBvcGVyYXRlIGFzIGVpdGhlciAoIm9uIHRoZSBnbyIpCisgIC0gbnZpZGlhLGhhcy11dG1pLXBhZC1yZWdpc3RlcnMgOiBib29sZWFuIGluZGljYXRlcyB3aGV0aGVyIHRoaXMgY29udHJvbGxlcgorICAgIGNvbnRhaW5zIHRoZSBVVE1JIHBhZCBjb250cm9sIHJlZ2lzdGVycyBjb21tb24gdG8gYWxsIFVTQiBjb250cm9sbGVycy4KKworVkJVUyBjb250cm9sIChyZXF1aXJlZCBmb3IgZHJfbW9kZSA9PSBvdGcsIG9wdGlvbmFsIGZvciBkcl9tb2RlID09IGhvc3QpOgorICAtIHZidXMtc3VwcGx5OiByZWd1bGF0b3IgZm9yIFZCVVMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LWJpbmRpbmdzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LWJpbmRpbmdzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjkzYzMyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktYmluZGluZ3MudHh0CkBAIC0wLDAgKzEsNzAgQEAKK1RoaXMgZG9jdW1lbnQgZXhwbGFpbnMgb25seSB0aGUgZGV2aWNlIHRyZWUgZGF0YSBiaW5kaW5nLiBGb3IgZ2VuZXJhbAoraW5mb3JtYXRpb24gYWJvdXQgUEhZIHN1YnN5c3RlbSByZWZlciB0byBEb2N1bWVudGF0aW9uL3BoeS50eHQKKworUEhZIGRldmljZSBub2RlCis9PT09PT09PT09PT09PT0KKworUmVxdWlyZWQgUHJvcGVydGllczoKKyNwaHktY2VsbHM6CU51bWJlciBvZiBjZWxscyBpbiBhIFBIWSBzcGVjaWZpZXI7ICBUaGUgbWVhbmluZyBvZiBhbGwgdGhvc2UKKwkJY2VsbHMgaXMgZGVmaW5lZCBieSB0aGUgYmluZGluZyBmb3IgdGhlIHBoeSBub2RlLiBUaGUgUEhZCisJCXByb3ZpZGVyIGNhbiB1c2UgdGhlIHZhbHVlcyBpbiBjZWxscyB0byBmaW5kIHRoZSBhcHByb3ByaWF0ZQorCQlQSFkuCisKK09wdGlvbmFsIFByb3BlcnRpZXM6CitwaHktc3VwcGx5OglQaGFuZGxlIHRvIGEgcmVndWxhdG9yIHRoYXQgcHJvdmlkZXMgcG93ZXIgdG8gdGhlIFBIWS4gVGhpcworCQlyZWd1bGF0b3Igd2lsbCBiZSBtYW5hZ2VkIGR1cmluZyB0aGUgUEhZIHBvd2VyIG9uL29mZiBzZXF1ZW5jZS4KKworRm9yIGV4YW1wbGU6CisKK3BoeXM6IHBoeSB7CisgICAgY29tcGF0aWJsZSA9ICJ4eHgiOworICAgIHJlZyA9IDwuLi4+OworICAgIC4KKyAgICAuCisgICAgI3BoeS1jZWxscyA9IDwxPjsKKyAgICAuCisgICAgLgorfTsKKworVGhhdCBub2RlIGRlc2NyaWJlcyBhbiBJUCBibG9jayAoUEhZIHByb3ZpZGVyKSB0aGF0IGltcGxlbWVudHMgMiBkaWZmZXJlbnQgUEhZcy4KK0luIG9yZGVyIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiB0aGVzZSAyIFBIWXMsIGFuIGFkZGl0aW9uYWwgc3BlY2lmaWVyIHNob3VsZCBiZQorZ2l2ZW4gd2hpbGUgdHJ5aW5nIHRvIGdldCBhIHJlZmVyZW5jZSB0byBpdC4KKworUEhZIHVzZXIgbm9kZQorPT09PT09PT09PT09PQorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorcGh5cyA6IHRoZSBwaGFuZGxlIGZvciB0aGUgUEhZIGRldmljZSAodXNlZCBieSB0aGUgUEhZIHN1YnN5c3RlbSkKK3BoeS1uYW1lcyA6IHRoZSBuYW1lcyBvZiB0aGUgUEhZIGNvcnJlc3BvbmRpbmcgdG8gdGhlIFBIWXMgcHJlc2VudCBpbiB0aGUKKwkgICAgKnBoeXMqIHBoYW5kbGUKKworRXhhbXBsZSAxOgordXNiMTogdXNiX290Z19zc0B4eHggeworICAgIGNvbXBhdGlibGUgPSAieHh4IjsKKyAgICByZWcgPSA8eHh4PjsKKyAgICAuCisgICAgLgorICAgIHBoeXMgPSA8JnVzYjJfcGh5PiwgPCZ1c2IzX3BoeT47CisgICAgcGh5LW5hbWVzID0gInVzYjJwaHkiLCAidXNiM3BoeSI7CisgICAgLgorICAgIC4KK307CisKK1RoaXMgbm9kZSByZXByZXNlbnRzIGEgY29udHJvbGxlciB0aGF0IHVzZXMgdHdvIFBIWXMsIG9uZSBmb3IgdXNiMiBhbmQgb25lIGZvcgordXNiMy4KKworRXhhbXBsZSAyOgordXNiMjogdXNiX290Z19zc0B4eHggeworICAgIGNvbXBhdGlibGUgPSAieHh4IjsKKyAgICByZWcgPSA8eHh4PjsKKyAgICAuCisgICAgLgorICAgIHBoeXMgPSA8JnBoeXMgMT47CisgICAgcGh5LW5hbWVzID0gInVzYnBoeSI7CisgICAgLgorICAgIC4KK307CisKK1RoaXMgbm9kZSByZXByZXNlbnRzIGEgY29udHJvbGxlciB0aGF0IHVzZXMgb25lIG9mIHRoZSBQSFlzIG9mIHRoZSBQSFkgcHJvdmlkZXIKK2RldmljZSBkZWZpbmVkIHByZXZpb3VzbHkuIE5vdGUgdGhhdCB0aGUgcGh5IGhhbmRsZSBoYXMgYW4gYWRkaXRpb25hbCBzcGVjaWZpZXIKKyIxIiB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlIHR3byBQSFlzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktbHBjMTh4eC11c2Itb3RnLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LWxwYzE4eHgtdXNiLW90Zy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ2MWI0NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LWxwYzE4eHgtdXNiLW90Zy50eHQKQEAgLTAsMCArMSwyNiBAQAorTlhQIExQQzE4eHgvNDN4eCBpbnRlcm5hbCBVU0IgT1RHIFBIWSBiaW5kaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBmaWxlIGNvbnRhaW5zIGRvY3VtZW50YXRpb24gZm9yIHRoZSBpbnRlcm5hbCBVU0IgT1RHIFBIWSBmb3VuZAoraW4gTlhQIExQQzE4eHggYW5kIExQQzQzeHggU29Dcy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZQk6IG11c3QgYmUgIm54cCxscGMxODUwLXVzYi1vdGctcGh5IgorLSBjbG9ja3MJOiBtdXN0IGJlIGV4YWN0bHkgb25lIGVudHJ5CitTZWU6IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKKy0gI3BoeS1jZWxscwk6IG11c3QgYmUgMCBmb3IgdGhpcyBwaHkKK1NlZTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktYmluZGluZ3MudHh0CisKK1RoZSBwaHkgbm9kZSBtdXN0IGJlIGEgY2hpbGQgb2YgdGhlIGNyZWcgc3lzY29uIG5vZGUuCisKK0V4YW1wbGU6CitjcmVnOiBzeXNjb25ANDAwNDMwMDAgeworCWNvbXBhdGlibGUgPSAibnhwLGxwYzE4NTAtY3JlZyIsICJzeXNjb24iLCAic2ltcGxlLW1mZCI7CisJcmVnID0gPDB4NDAwNDMwMDAgMHgxMDAwPjsKKworCXVzYjBfb3RnX3BoeTogcGh5QDAwNCB7CisJCWNvbXBhdGlibGUgPSAibnhwLGxwYzE4NTAtdXNiLW90Zy1waHkiOworCQljbG9ja3MgPSA8JmNjdTEgQ0xLX1VTQjA+OworCQkjcGh5LWNlbGxzID0gPDA+OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktbWlwaHkyOGxwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LW1pcGh5MjhscC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODljYWE4OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LW1pcGh5MjhscC50eHQKQEAgLTAsMCArMSwxMTcgQEAKK1NUTWljcm9lbGVjdHJvbmljcyBTVGkgTUlQSFkyOExQIFBIWSBiaW5kaW5nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGJpbmRpbmcgZGVzY3JpYmVzIGEgbWlwaHkgZGV2aWNlIHRoYXQgaXMgdXNlZCB0byBjb250cm9sIFBIWSBoYXJkd2FyZQorZm9yIFNBVEEsIFBDSWUgb3IgVVNCMy4KKworUmVxdWlyZWQgcHJvcGVydGllcyAoY29udHJvbGxlciAocGFyZW50KSBub2RlKToKKy0gY29tcGF0aWJsZQk6IFNob3VsZCBiZSAic3QsbWlwaHkyOGxwLXBoeSIuCistIHN0LHN5c2NmZwk6IFNob3VsZCBiZSBhIHBoYW5kbGUgb2YgdGhlIHN5c3RlbSBjb25maWd1cmF0aW9uIHJlZ2lzdGVyIGdyb3VwCisJCSAgd2hpY2ggY29udGFpbiB0aGUgU0FUQSwgUENJZSBvciBVU0IzIG1vZGUgc2V0dGluZyBiaXRzLgorCitSZXF1aXJlZCBub2Rlcwk6ICBBIHN1Yi1ub2RlIGlzIHJlcXVpcmVkIGZvciBlYWNoIGNoYW5uZWwgdGhlIGNvbnRyb2xsZXIKKwkJICAgcHJvdmlkZXMuIEFkZHJlc3MgcmFuZ2UgaW5mb3JtYXRpb24gaW5jbHVkaW5nIHRoZSB1c3VhbAorCQkgICAncmVnJyBhbmQgJ3JlZy1uYW1lcycgcHJvcGVydGllcyBhcmUgdXNlZCBpbnNpZGUgdGhlc2UKKwkJICAgbm9kZXMgdG8gZGVzY3JpYmUgdGhlIGNvbnRyb2xsZXIncyB0b3BvbG9neS4gVGhlc2Ugbm9kZXMKKwkJICAgYXJlIHRyYW5zbGF0ZWQgYnkgdGhlIGRyaXZlcidzIC54bGF0ZSgpIGZ1bmN0aW9uLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIChwb3J0IChjaGlsZCkgbm9kZSk6CistICNwaHktY2VsbHMJOiBTaG91bGQgYmUgMSAoU2VlIHNlY29uZCBleGFtcGxlKQorCQkgIENlbGwgYWZ0ZXIgcG9ydCBwaGFuZGxlIGlzIGRldmljZSB0eXBlIGZyb206CisJCQktIFBIWV9UWVBFX1NBVEEKKwkJCS0gUEhZX1RZUEVfUENJCisJCQktIFBIWV9UWVBFX1VTQjMKKy0gcmVnCQk6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlLgorLSByZWctbmFtZXMJOiBUaGUgbmFtZXMgb2YgdGhlIHJlZ2lzdGVyIGFkZHJlc3NlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSByZWdpc3RlcnMKKwkJICBmaWxsZWQgaW4gInJlZyIuIEl0IGNhbiBhbHNvIGNvbnRhaW4gdGhlIG9mZnNldCBvZiB0aGUgc3lzdGVtIGNvbmZpZ3VyYXRpb24KKwkJICByZWdpc3RlcnMgdXNlZCBhcyBnbHVlLWxvZ2ljIHRvIHNldHVwIHRoZSBkZXZpY2UgZm9yIFNBVEEvUENJZSBvciBVU0IzCisJCSAgZGV2aWNlcy4KKy0gc3Qsc3lzY2ZnCTogT2Zmc2V0IG9mIHRoZSBwYXJlbnQgY29uZmlndXJhdGlvbiByZWdpc3Rlci4KKy0gcmVzZXRzCTogcGhhbmRsZSB0byB0aGUgcGFyZW50IHJlc2V0IGNvbnRyb2xsZXIuCistIHJlc2V0LW5hbWVzCTogQXNzb2NpYXRlZCBuYW1lIG11c3QgYmUgIm1pcGh5LXN3LXJzdCIuCisKK09wdGlvbmFsIHByb3BlcnRpZXMgKHBvcnQgKGNoaWxkKSBub2RlKToKKy0gc3Qsb3NjLXJkeQkJOiB0byBjaGVjayB0aGUgTUlQSFkwX09TQ19SRFkgc3RhdHVzIGluIHRoZSBnbHVlLWxvZ2ljLiBUaGlzCisJCQkgIGlzIG5vdCBhdmFpbGFibGUgaW4gYWxsIHRoZSBNaVBIWS4gRm9yIGV4YW1wbGUsIGZvciBTVGlINDA3LCBvbmx5IHRoZQorCQkJICBNaVBIWTAgaGFzIHRoaXMgYml0LgorLSBzdCxvc2MtZm9yY2UtZXh0CTogdG8gc2VsZWN0IHRoZSBleHRlcm5hbCBvc2NpbGxhdG9yLiBUaGlzIGNhbiBjaGFuZ2UgZnJvbQorCQkJICBkaWZmZXJlbnQgTWlQSFkgaW5zaWRlIHRoZSBzYW1lIFNvQy4KKy0gc3Qsc2F0YV9nZW4JCTogdG8gc2VsZWN0IHdoaWNoIFNBVEFfU1BETU9ERSBoYXMgdG8gYmUgc2V0IGluIHRoZSBTQVRBIHN5c3RlbSBjb25maWcKKwkJCSAgcmVnaXN0ZXIuCistIHN0LHB4X3J4X3BvbF9pbnYJOiB0byBpbnZlcnQgcG9sYXJpdHkgb2YgUlhuL1JYcCAocmVzcGVjdGl2ZWx5IG5lZ2F0aXZlIGxpbmUgYW5kIHBvc2l0aXZlCisJCQkgIGxpbmUpLgorLSBzdCxzY2Mtb24JCTogZW5hYmxlIHNzYyB0byByZWR1Y2UgZWZmZWN0cyBvZiBFTUkgKG9ubHkgZm9yIHNhdGEgb3IgUENJZSkuCistIHN0LHR4LWltcGVkYW5jZS1jb21wCTogdG8gY29tcGVuc2F0ZSB0eCBpbXBlZGFuY2UgYXZvaWRpbmcgb3V0IG9mIHJhbmdlIHZhbHVlcy4KKworZXhhbXBsZToKKworCQltaXBoeTI4bHBfcGh5OiBtaXBoeTI4bHBAOWIyMjAwMCB7CisJCQljb21wYXRpYmxlID0gInN0LG1pcGh5MjhscC1waHkiOworCQkJc3Qsc3lzY2ZnID0gPCZzeXNjZmdfY29yZT47CisJCQkjYWRkcmVzcy1jZWxscwk9IDwxPjsKKwkJCSNzaXplLWNlbGxzCT0gPDE+OworCQkJcmFuZ2VzOworCisJCQlwaHlfcG9ydDA6IHBvcnRAOWIyMjAwMCB7CisJCQkJcmVnID0gPDB4OWIyMjAwMCAweGZmPiwKKwkJCQkgICAgICA8MHg5YjA5MDAwIDB4ZmY+LAorCQkJCSAgICAgIDwweDliMDQwMDAgMHhmZj47CisJCQkJcmVnLW5hbWVzID0gInNhdGEtdXAiLAorCQkJCQkgICAgInBjaWUtdXAiLAorCQkJCQkgICAgInBpcGV3IjsKKworCQkJCXN0LHN5c2NmZyA9IDwweDExNCAweDgxOCAweGUwIDB4ZWM+OworCQkJCSNwaHktY2VsbHMgPSA8MT47CisJCQkJc3Qsb3NjLXJkeTsKKwkJCQlyZXNldC1uYW1lcyA9ICJtaXBoeS1zdy1yc3QiOworCQkJCXJlc2V0cyA9IDwmc29mdHJlc2V0IFNUSUg0MDdfTUlQSFkwX1NPRlRSRVNFVD47CisJCQl9OworCisJCQlwaHlfcG9ydDE6IHBvcnRAOWIyYTAwMCB7CisJCQkJcmVnID0gPDB4OWIyYTAwMCAweGZmPiwKKwkJCQkgICAgICA8MHg5YjE5MDAwIDB4ZmY+LAorCQkJCSAgICAgIDwweDliMTQwMDAgMHhmZj47CisJCQkJcmVnLW5hbWVzID0gInNhdGEtdXAiLAorCQkJCQkgICAgInBjaWUtdXAiLAorCQkJCQkgICAgInBpcGV3IjsKKworCQkJCXN0LHN5c2NmZyA9IDwweDExOCAweDgxYyAweGU0IDB4ZjA+OworCisJCQkJI3BoeS1jZWxscyA9IDwxPjsKKwkJCQlzdCxvc2MtZm9yY2UtZXh0OworCQkJCXJlc2V0LW5hbWVzID0gIm1pcGh5LXN3LXJzdCI7CisJCQkJcmVzZXRzID0gPCZzb2Z0cmVzZXQgU1RJSDQwN19NSVBIWTFfU09GVFJFU0VUPjsKKwkJCX07CisKKwkJCXBoeV9wb3J0MjogcG9ydEA4Zjk1MDAwIHsKKwkJCQlyZWcgPSA8MHg4Zjk1MDAwIDB4ZmY+LAorCQkJCSAgICAgIDwweDhmOTAwMDAgMHhmZj47CisJCQkJcmVnLW5hbWVzID0gInBpcGV3IiwKKwkJCQkJICAgICJ1c2IzLXVwIjsKKworCQkJCXN0LHN5c2NmZyA9IDwweDExYyAweDgyMD47CisKKwkJCQkjcGh5LWNlbGxzID0gPDE+OworCQkJCXJlc2V0LW5hbWVzID0gIm1pcGh5LXN3LXJzdCI7CisJCQkJcmVzZXRzID0gPCZzb2Z0cmVzZXQgU1RJSDQwN19NSVBIWTJfU09GVFJFU0VUPjsKKwkJCX07CisJCX07CisKKworU3BlY2lmeWluZyBwaHkgY29udHJvbCBvZiBkZXZpY2VzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRGV2aWNlIG5vZGVzIHNob3VsZCBzcGVjaWZ5IHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVkIGluIHRoZWlyICJwaHlzIgorcHJvcGVydHksIGNvbnRhaW5pbmcgYSBwaGFuZGxlIHRvIHRoZSBtaXBoeSBkZXZpY2Ugbm9kZSBhbmQgYW4gaW5kZXgKK3NwZWNpZnlpbmcgd2hpY2ggY29uZmlndXJhdGlvbiB0byB1c2UsIGFzIGRlc2NyaWJlZCBpbiBwaHktYmluZGluZ3MudHh0LgorCitleGFtcGxlOgorCQlzYXRhMDogc2F0YUA5YjIwMDAwICB7CisJCQkuLi4KKwkJCXBoeXMJCT0gPCZwaHlfcG9ydDAgUEhZX1RZUEVfU0FUQT47CisJCQkuLi4KKwkJfTsKKworTWFjcm8gZGVmaW5pdGlvbnMgZm9yIHRoZSBzdXBwb3J0ZWQgbWlwaHkgY29uZmlndXJhdGlvbiBjYW4gYmUgZm91bmQgaW46CisKK2luY2x1ZGUvZHQtYmluZGluZ3MvcGh5L3BoeS5oCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1taXBoeTM2NXgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktbWlwaHkzNjV4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzcyOTAwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktbWlwaHkzNjV4LnR4dApAQCAtMCwwICsxLDc3IEBACitTVE1pY3JvZWxlY3Ryb25pY3MgU1RpIE1JUEhZMzY1eCBQSFkgYmluZGluZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBiaW5kaW5nIGRlc2NyaWJlcyBhIG1pcGh5IGRldmljZSB0aGF0IGlzIHVzZWQgdG8gY29udHJvbCBQSFkgaGFyZHdhcmUKK2ZvciBTQVRBIGFuZCBQQ0llLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIChjb250cm9sbGVyIChwYXJlbnQpIG5vZGUpOgorLSBjb21wYXRpYmxlICAgIDogU2hvdWxkIGJlICJzdCxtaXBoeTM2NXgtcGh5IgorLSBzdCxzeXNjZmcgICAgIDogUGhhbmRsZSAvIGludGVnZXIgYXJyYXkgcHJvcGVydHkuIFBoYW5kbGUgb2Ygc3lzY29uZmlnIGdyb3VwCisJCSAgY29udGFpbmluZyB0aGUgbWlwaHkgcmVnaXN0ZXJzIGFuZCBpbnRlZ2VyIGFycmF5IHNob3VsZCBjb250YWluCisJCSAgYW4gZW50cnkgZm9yIGVhY2ggcG9ydCBzdWItbm9kZSwgc3BlY2lmeWluZyB0aGUgY29udHJvbAorCQkgIHJlZ2lzdGVyIG9mZnNldCBpbnNpZGUgdGhlIHN5c2NvbmZpZyBncm91cC4KKworUmVxdWlyZWQgbm9kZXMJOiAgQSBzdWItbm9kZSBpcyByZXF1aXJlZCBmb3IgZWFjaCBjaGFubmVsIHRoZSBjb250cm9sbGVyCisJCSAgIHByb3ZpZGVzLiBBZGRyZXNzIHJhbmdlIGluZm9ybWF0aW9uIGluY2x1ZGluZyB0aGUgdXN1YWwKKwkJICAgJ3JlZycgYW5kICdyZWctbmFtZXMnIHByb3BlcnRpZXMgYXJlIHVzZWQgaW5zaWRlIHRoZXNlCisJCSAgIG5vZGVzIHRvIGRlc2NyaWJlIHRoZSBjb250cm9sbGVyJ3MgdG9wb2xvZ3kuIFRoZXNlIG5vZGVzCisJCSAgIGFyZSB0cmFuc2xhdGVkIGJ5IHRoZSBkcml2ZXIncyAueGxhdGUoKSBmdW5jdGlvbi4KKworUmVxdWlyZWQgcHJvcGVydGllcyAocG9ydCAoY2hpbGQpIG5vZGUpOgorLSAjcGh5LWNlbGxzIAk6IFNob3VsZCBiZSAxIChTZWUgc2Vjb25kIGV4YW1wbGUpCisJCSAgQ2VsbCBhZnRlciBwb3J0IHBoYW5kbGUgaXMgZGV2aWNlIHR5cGUgZnJvbToKKwkJCS0gUEhZX1RZUEVfU0FUQQorCQkJLSBQSFlfVFlQRV9QQ0kKKy0gcmVnICAgICAgICAJOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgcmVnaXN0ZXIgc2V0cyBmb3IgZWFjaCBkZXZpY2UgaW4KKwkJICAicmVnLW5hbWVzIgorLSByZWctbmFtZXMgICAgIDogVGhlIG5hbWVzIG9mIHRoZSByZWdpc3RlciBhZGRyZXNzZXMgY29ycmVzcG9uZGluZyB0byB0aGUKKwkJICByZWdpc3RlcnMgZmlsbGVkIGluICJyZWciOgorCQkJLSBzYXRhOiAgIEZvciBTQVRBIGRldmljZXMKKwkJCS0gcGNpZTogICBGb3IgUENJZSBkZXZpY2VzCisKK09wdGlvbmFsIHByb3BlcnRpZXMgKHBvcnQgKGNoaWxkKSBub2RlKToKKy0gc3Qsc2F0YS1nZW4JICAgICA6CUdlbmVyYXRpb24gb2YgbG9jYWxseSBhdHRhY2hlZCBTQVRBIElQLiBFeHBlY3RlZCB2YWx1ZXMKKwkJCWFyZSB7MSwyLDMpLiBJZiBub3Qgc3VwcGxpZWQgZ2VuZXJhdGlvbiAxIGhhcmR3YXJlIHdpbGwKKwkJCWJlIGV4cGVjdGVkCistIHN0LHBjaWUtdHgtcG9sLWludiA6CUJvb2wgcHJvcGVydHkgdG8gaW52ZXJ0IHRoZSBwb2xhcml0eSBQQ0llIFR4IChUeG4vVHhwKQorLSBzdCxzYXRhLXR4LXBvbC1pbnYgOglCb29sIHByb3BlcnR5IHRvIGludmVydCB0aGUgcG9sYXJpdHkgU0FUQSBUeCAoVHhuL1R4cCkKKworRXhhbXBsZToKKworCW1pcGh5MzY1eF9waHk6IG1pcGh5MzY1eEBmZTM4MjAwMCB7CisJCWNvbXBhdGlibGUgICAgICA9ICJzdCxtaXBoeTM2NXgtcGh5IjsKKwkJc3Qsc3lzY2ZnICAJPSA8JnN5c2NmZ19yZWFyIDB4ODI0IDB4ODI4PjsKKwkJI2FkZHJlc3MtY2VsbHMJPSA8MT47CisJCSNzaXplLWNlbGxzCT0gPDE+OworCQlyYW5nZXM7CisKKwkJcGh5X3BvcnQwOiBwb3J0QGZlMzgyMDAwIHsKKwkJCXJlZyA9IDwweGZlMzgyMDAwIDB4MTAwPiwgPDB4ZmUzOTQwMDAgMHgxMDA+OworCQkJcmVnLW5hbWVzID0gInNhdGEiLCAicGNpZSI7CisJCQkjcGh5LWNlbGxzID0gPDE+OworCQkJc3Qsc2F0YS1nZW4gPSA8Mz47CisJCX07CisKKwkJcGh5X3BvcnQxOiBwb3J0QGZlMzhhMDAwIHsKKwkJCXJlZyA9IDwweGZlMzhhMDAwIDB4MTAwPiwgPDB4ZmU4MDQwMDAgMHgxMDA+OzsKKwkJCXJlZy1uYW1lcyA9ICJzYXRhIiwgInBjaWUiLCAic3lzY2ZnIjsKKwkJCSNwaHktY2VsbHMgPSA8MT47CisJCQlzdCxwY2llLXR4LXBvbC1pbnY7CisJCX07CisJfTsKKworU3BlY2lmeWluZyBwaHkgY29udHJvbCBvZiBkZXZpY2VzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRGV2aWNlIG5vZGVzIHNob3VsZCBzcGVjaWZ5IHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVkIGluIHRoZWlyICJwaHlzIgorcHJvcGVydHksIGNvbnRhaW5pbmcgYSBwaGFuZGxlIHRvIHRoZSBwaHkgcG9ydCBub2RlIGFuZCBhIGRldmljZSB0eXBlLgorCitFeGFtcGxlOgorCisjaW5jbHVkZSA8ZHQtYmluZGluZ3MvcGh5L3BoeS5oPgorCisJc2F0YTA6IHNhdGFAZmUzODAwMDAgeworCQkuLi4KKwkJcGh5cwkgID0gPCZwaHlfcG9ydDAgUEhZX1RZUEVfU0FUQT47CisJCS4uLgorCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1tdDY1eHgtdXNiLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LW10NjV4eC11c2IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwMTAwY2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1tdDY1eHgtdXNiLnR4dApAQCAtMCwwICsxLDY4IEBACittdDY1eHggVVNCMy4wIFBIWSBiaW5kaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGJpbmRpbmcgZGVzY3JpYmVzIGEgdXNiMy4wIHBoeSBmb3IgbXQ2NXh4IHBsYXRmb3JtcyBvZiBNZWRhaXRlayBTb0MuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgKGNvbnRyb2xsZXIgKHBhcmVudCkgbm9kZSk6CisgLSBjb21wYXRpYmxlCTogc2hvdWxkIGJlICJtZWRpYXRlayxtdDgxNzMtdTNwaHkiCisgLSByZWcJCTogb2Zmc2V0IGFuZCBsZW5ndGggb2YgcmVnaXN0ZXIgZm9yIHBoeSwgZXhjbHVkZSBwb3J0J3MKKwkJICByZWdpc3Rlci4KKyAtIGNsb2Nrcwk6IGEgbGlzdCBvZiBwaGFuZGxlICsgY2xvY2stc3BlY2lmaWVyIHBhaXJzLCBvbmUgZm9yIGVhY2gKKwkJICBlbnRyeSBpbiBjbG9jay1uYW1lcworIC0gY2xvY2stbmFtZXMJOiBtdXN0IGNvbnRhaW4KKwkJICAidTNwaHlhX3JlZiI6IGZvciByZWZlcmVuY2UgY2xvY2sgb2YgdXNiMy4wIGFuYWxvZyBwaHkuCisKK1JlcXVpcmVkIG5vZGVzCTogYSBzdWItbm9kZSBpcyByZXF1aXJlZCBmb3IgZWFjaCBwb3J0IHRoZSBjb250cm9sbGVyCisJCSAgcHJvdmlkZXMuIEFkZHJlc3MgcmFuZ2UgaW5mb3JtYXRpb24gaW5jbHVkaW5nIHRoZSB1c3VhbAorCQkgICdyZWcnIHByb3BlcnR5IGlzIHVzZWQgaW5zaWRlIHRoZXNlIG5vZGVzIHRvIGRlc2NyaWJlCisJCSAgdGhlIGNvbnRyb2xsZXIncyB0b3BvbG9neS4KKworUmVxdWlyZWQgcHJvcGVydGllcyAocG9ydCAoY2hpbGQpIG5vZGUpOgorLSByZWcJCTogYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBwb3J0LgorLSAjcGh5LWNlbGxzCTogc2hvdWxkIGJlIDEgKFNlZSBzZWNvbmQgZXhhbXBsZSkKKwkJICBjZWxsIGFmdGVyIHBvcnQgcGhhbmRsZSBpcyBwaHkgdHlwZSBmcm9tOgorCQkJLSBQSFlfVFlQRV9VU0IyCisJCQktIFBIWV9UWVBFX1VTQjMKKworRXhhbXBsZToKKwordTNwaHk6IHVzYi1waHlAMTEyOTAwMDAgeworCWNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTczLXUzcGh5IjsKKwlyZWcgPSA8MCAweDExMjkwMDAwIDAgMHg4MDA+OworCWNsb2NrcyA9IDwmYXBtaXhlZHN5cyBDTEtfQVBNSVhFRF9SRUYyVVNCX1RYPjsKKwljbG9jay1uYW1lcyA9ICJ1M3BoeWFfcmVmIjsKKwkjYWRkcmVzcy1jZWxscyA9IDwyPjsKKwkjc2l6ZS1jZWxscyA9IDwyPjsKKwlyYW5nZXM7CisJc3RhdHVzID0gIm9rYXkiOworCisJcGh5X3BvcnQwOiBwb3J0QDExMjkwODAwIHsKKwkJcmVnID0gPDAgMHgxMTI5MDgwMCAwIDB4ODAwPjsKKwkJI3BoeS1jZWxscyA9IDwxPjsKKwkJc3RhdHVzID0gIm9rYXkiOworCX07CisKKwlwaHlfcG9ydDE6IHBvcnRAMTEyOTEwMDAgeworCQlyZWcgPSA8MCAweDExMjkxMDAwIDAgMHg4MDA+OworCQkjcGh5LWNlbGxzID0gPDE+OworCQlzdGF0dXMgPSAib2theSI7CisJfTsKK307CisKK1NwZWNpZnlpbmcgcGh5IGNvbnRyb2wgb2YgZGV2aWNlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RldmljZSBub2RlcyBzaG91bGQgc3BlY2lmeSB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlZCBpbiB0aGVpciAicGh5cyIKK3Byb3BlcnR5LCBjb250YWluaW5nIGEgcGhhbmRsZSB0byB0aGUgcGh5IHBvcnQgbm9kZSBhbmQgYSBkZXZpY2UgdHlwZTsKK3BoeS1uYW1lcyBmb3IgZWFjaCBwb3J0IGFyZSBvcHRpb25hbC4KKworRXhhbXBsZToKKworI2luY2x1ZGUgPGR0LWJpbmRpbmdzL3BoeS9waHkuaD4KKwordXNiMzA6IHVzYkAxMTI3MDAwMCB7CisJLi4uCisJcGh5cyA9IDwmcGh5X3BvcnQwIFBIWV9UWVBFX1VTQjM+OworCXBoeS1uYW1lcyA9ICJ1c2IzLTAiOworCS4uLgorfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LW12ZWJ1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LW12ZWJ1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTViNjI2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktbXZlYnUudHh0CkBAIC0wLDAgKzEsNDMgQEAKKyogTWFydmVsbCBNVkVCVSBTQVRBIFBIWQorCitQb3dlciBjb250cm9sIGZvciB0aGUgU0FUQSBwaHkgZm91bmQgb24gTWFydmVsbCBNVkVCVSBTb0NzLgorCitUaGlzIGRvY3VtZW50IGV4dGVuZHMgdGhlIGJpbmRpbmcgZGVzY3JpYmVkIGluIHBoeS1iaW5kaW5ncy50eHQKKworUmVxdWlyZWQgcHJvcGVydGllcyA6CisKKyAtIHJlZwkJICAgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgU0FUQSBkZXZpY2UKKyAtIGNvbXBhdGlibGUJICAgOiBTaG91bGQgYmUgIm1hcnZlbGwsbXZlYnUtc2F0YS1waHkiCisgLSBjbG9ja3MJICAgOiBwaGFuZGxlIG9mIGNsb2NrIGFuZCBzcGVjaWZpZXIgdGhhdCBzdXBwbGllcyB0aGUgZGV2aWNlCisgLSBjbG9jay1uYW1lcwkgICA6IFNob3VsZCBiZSAic2F0YSIKKworRXhhbXBsZToKKwkJc2F0YS1waHlAODQwMDAgeworCQkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLG12ZWJ1LXNhdGEtcGh5IjsKKwkJCXJlZyA9IDwweDg0MDAwIDB4MDMzND47CisJCQljbG9ja3MgPSA8JmdhdGVfY2xrIDE1PjsKKwkJCWNsb2NrLW5hbWVzID0gInNhdGEiOworCQkJI3BoeS1jZWxscyA9IDwwPjsKKwkJCXN0YXR1cyA9ICJvayI7CisJCX07CisKK0FybWFkYSAzNzUgVVNCIGNsdXN0ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQXJtYWRhIDM3NSBjb21lcyB3aXRoIGFuIFVTQjIgaG9zdCBhbmQgZGV2aWNlIGNvbnRyb2xsZXIgYW5kIGFuIFVTQjMKK2NvbnRyb2xsZXIuIFRoZSBVU0IgY2x1c3RlciBjb250cm9sIHJlZ2lzdGVyIGFsbG93cyB0byBtYW5hZ2UgY29tbW9uCitmZWF0dXJlcyBvZiBib3RoIFVTQiBjb250cm9sbGVycy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiAibWFydmVsbCxhcm1hZGEtMzc1LXVzYi1jbHVzdGVyIgorLSByZWc6IFNob3VsZCBjb250YWluIHVzYiBjbHVzdGVyIHJlZ2lzdGVyIGxvY2F0aW9uIGFuZCBsZW5ndGguCistICNwaHktY2VsbHMgOiBmcm9tIHRoZSBnZW5lcmljIHBoeSBiaW5kaW5ncywgbXVzdCBiZSAxLiBQb3NzaWJsZQordmFsdWVzIGFyZSAxIChVU0IyKSwgMiAoVVNCMykuCisKK0V4YW1wbGU6CisJCXVzYmNsdXN0ZXI6IHVzYi1jbHVzdGVyQDE4NDAwIHsKKwkJCWNvbXBhdGlibGUgPSAibWFydmVsbCxhcm1hZGEtMzc1LXVzYi1jbHVzdGVyIjsKKwkJCXJlZyA9IDwweDE4NDAwIDB4ND47CisJCQkjcGh5LWNlbGxzID0gPDE+CisJCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1zdGloNDA3LXVzYi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1zdGloNDA3LXVzYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU2YTcwNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LXN0aWg0MDctdXNiLnR4dApAQCAtMCwwICsxLDI0IEBACitTVCBTVGlINDA3IFVTQiBQSFkgY29udHJvbGxlcgorCitUaGlzIGZpbGUgZG9jdW1lbnRzIHRoZSBkdCBiaW5kaW5ncyBmb3IgdGhlIHVzYiBwaWNvUEhZIGRyaXZlciB3aGljaCBpcyB0aGUgUEhZIGZvciBib3RoIFVTQjIgYW5kIFVTQjMKK2hvc3QgY29udHJvbGxlcnMgKHdoZW4gY29udHJvbGxpbmcgdXNiMi8xLjEgZGV2aWNlcykgYXZhaWxhYmxlIG9uIFNUaUg0MDcgU29DIGZhbWlseSBmcm9tIFNUTWljcm9lbGVjdHJvbmljcy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZQkJOiBzaG91bGQgYmUgInN0LHN0aWg0MDctdXNiMi1waHkiCistIHN0LHN5c2NmZwkJOiBwaGFuZGxlIG9mIHN5c2NvbmZpZyBiYW5rIHBsdXMgaW50ZWdlciBhcnJheSBjb250YWluaW5nIHBoeXBhcmFtIGFuZCBwaHljdHJsIHJlZ2lzdGVyIG9mZnNldHMKKy0gcmVzZXRzCQk6IGxpc3Qgb2YgcGhhbmRsZSBhbmQgcmVzZXQgc3BlY2lmaWVyIHBhaXJzLiBUaGVyZSBzaG91bGQgYmUgdHdvIGVudHJpZXMsIG9uZQorCQkJICBmb3IgdGhlIHdob2xlIHBoeSBhbmQgb25lIGZvciB0aGUgcG9ydAorLSByZXNldC1uYW1lcwkJOiBsaXN0IG9mIHJlc2V0IHNpZ25hbCBuYW1lcy4gU2hvdWxkIGJlICJnbG9iYWwiIGFuZCAicG9ydCIKK1NlZTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Jlc2V0L3N0LHN0aS1wb3dlcmRvd24udHh0CitTZWU6IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9yZXNldC50eHQKKworRXhhbXBsZToKKwordXNiMl9waWNvcGh5MDogdXNicGljb3BoeUBmOCB7CisJY29tcGF0aWJsZQk9ICJzdCxzdGloNDA3LXVzYjItcGh5IjsKKwkjcGh5LWNlbGxzCT0gPDA+OworCXN0LHN5c2NmZwk9IDwmc3lzY2ZnX2NvcmUgMHgxMDAgMHhmND47CisJcmVzZXRzCQk9IDwmc29mdHJlc2V0IFNUSUg0MDdfUElDT1BIWV9TT0ZUUkVTRVQ+LAorCQkJICA8JnBpY29waHlyZXNldCBTVElINDA3X1BJQ09QSFkwX1JFU0VUPjsKKwlyZXNldC1uYW1lcwk9ICJnbG9iYWwiLCAicG9ydCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktc3RpaDQxeC11c2IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktc3RpaDQxeC11c2IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwOTQ0YTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1zdGloNDF4LXVzYi50eHQKQEAgLTAsMCArMSwyNCBAQAorU1RNaWNyb2VsZWN0cm9uaWNzIFNUaUg0MXggVVNCIFBIWSBiaW5kaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBmaWxlIGNvbnRhaW5zIGRvY3VtZW50YXRpb24gZm9yIHRoZSB1c2IgcGh5IGZvdW5kIGluIFNUaUg0MTUvNiBTb0NzIGZyb20KK1NUTWljcm9lbGVjdHJvbmljcy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZQk6IHNob3VsZCBiZSAic3Qsc3RpaDQxNi11c2ItcGh5IiBvciAic3Qsc3RpaDQxNS11c2ItcGh5IgorLSBzdCxzeXNjZmcJOiBzaG91bGQgYmUgYSBwaGFuZGxlIG9mIHRoZSBzeXNjZmcgbm9kZQorLSBjbG9jay1uYW1lcwk6IG11c3QgY29udGFpbiAib3NjX3BoeSIKKy0gY2xvY2tzCTogbXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIG5hbWUgaW4gY2xvY2stbmFtZXMuCitTZWU6IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKKy0gI3BoeS1jZWxscwk6IG11c3QgYmUgMCBmb3IgdGhpcyBwaHkKK1NlZTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktYmluZGluZ3MudHh0CisKK0V4YW1wbGU6CisKK3VzYjJfcGh5OiB1c2IycGh5QDAgeworCWNvbXBhdGlibGUJPSAic3Qsc3RpaDQxNi11c2ItcGh5IjsKKwkjcGh5LWNlbGwJPSA8MD47CisJc3Qsc3lzY2ZnCT0gPCZzeXNjZmdfcmVhcj47CisJY2xvY2tzCQk9IDwmY2xrX3N5c2luPjsKKwljbG9jay1uYW1lcwk9ICJvc2NfcGh5IjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3Bpc3RhY2hpby11c2ItcGh5LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGlzdGFjaGlvLXVzYi1waHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYmM3ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3Bpc3RhY2hpby11c2ItcGh5LnR4dApAQCAtMCwwICsxLDI5IEBACitJTUcgUGlzdGFjaGlvIFVTQiBQSFkKKz09PT09PT09PT09PT09PT09PT09PQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAtIGNvbXBhdGlibGU6IE11c3QgYmUgImltZyxwaXN0YWNoaW8tdXNiLXBoeSIuCisgLSAjcGh5LWNlbGxzOiBNdXN0IGJlIDAuICBTZWUgLi9waHktYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorIC0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCisgICBTZWUgLi4vY2xvY2svY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorIC0gY2xvY2stbmFtZXM6IE11c3QgaW5jbHVkZSAidXNiX3BoeSIuCisgLSBpbWcsY3ItdG9wOiBNdXN0IGNvbnN0YWluIGEgcGhhbmRsZSB0byB0aGUgQ1JfVE9QIHN5c2NvbiBub2RlLgorIC0gaW1nLHJlZmNsazogSW5kaWNhdGVzIHRoZSByZWZlcmVuY2UgY2xvY2sgc291cmNlIGZvciB0aGUgVVNCIFBIWS4KKyAgIFNlZSA8ZHQtYmluZGluZ3MvcGh5L3BoeS1waXN0YWNoaW8tdXNiLmg+IGZvciBhIGxpc3Qgb2YgdmFsaWQgdmFsdWVzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAtIHBoeS1zdXBwbHk6IFVTQiBWQlVTIHN1cHBseS4gIE11c3Qgc3VwcGx5IDUuMFYuCisKK0V4YW1wbGU6CistLS0tLS0tLQordXNiX3BoeTogdXNiLXBoeSB7CisJY29tcGF0aWJsZSA9ICJpbWcscGlzdGFjaGlvLXVzYi1waHkiOworCWNsb2NrcyA9IDwmY2xrX2NvcmUgQ0xLX1VTQl9QSFk+OworCWNsb2NrLW5hbWVzID0gInVzYl9waHkiOworCXBoeS1zdXBwbHkgPSA8JnVzYl92YnVzPjsKKwlpbWcscmVmY2xrID0gPFJFRkNMS19DTEtfQ09SRT47CisJaW1nLGNyLXRvcCA9IDwmY3JfdG9wPjsKKwkjcGh5LWNlbGxzID0gPDA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcHhhMTkyOC11c2ItcGh5LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcHhhMTkyOC11c2ItcGh5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjBhMTNjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9weGExOTI4LXVzYi1waHkudHh0CkBAIC0wLDAgKzEsMTggQEAKKyogTWFydmVsbCBQWEExOTI4IFVTQiBhbmQgSFNJQyBQSFlzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJtYXJ2ZWxsLHB4YTE5MjgtdXNiLXBoeSIgb3IgIm1hcnZlbGwscHhhMTkyOC1oc2ljLXBoeSIKKy0gcmVnOiBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXJzCistIGNsb2NrcyAtIEEgc2luZ2xlIGNsb2NrLiBGcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nLgorLSAjcGh5cy1jZWxsczogc2hvdWxkIGJlIDAuIEZyb20gY29tbW1vbiBwaHkgYmluZGluZy4KKy0gcmVzZXRzOiByZWZlcmVuY2UgdG8gdGhlIHJlc2V0IGNvbnRyb2xsZXIKKworRXhhbXBsZToKKworCXVzYnBoeTogcGh5QDcwMDAgeworCQljb21wYXRpYmxlID0gIm1hcnZlbGwscHhhMTkyOC11c2ItcGh5IjsKKwkJcmVnID0gPDB4NzAwMCAweGUwPjsKKwkJY2xvY2tzID0gPCZhcG11X2Nsb2NrcyBQWEExOTI4X0NMS19VU0I+OworCQkjcGh5LWNlbGxzID0gPDA+OworCX07CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcWNvbSx1c2ItOHgxNi1waHkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9xY29tLHVzYi04eDE2LXBoeS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmNiMjE2OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcWNvbSx1c2ItOHgxNi1waHkudHh0CkBAIC0wLDAgKzEsNzYgQEAKK1F1YWxjb21tJ3MgQVBRODAxNi9NU004OTE2IFVTQiB0cmFuc2NlaXZlciBjb250cm9sbGVyCisKKy0gY29tcGF0aWJsZToKKyAgICBVc2FnZTogcmVxdWlyZWQKKyAgICBWYWx1ZSB0eXBlOiA8c3RyaW5nPgorICAgIERlZmluaXRpb246IFNob3VsZCBjb250YWluICJxY29tLHVzYi04eDE2LXBoeSIuCisKKy0gcmVnOgorICAgIFVzYWdlOiByZXF1aXJlZAorICAgIFZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisgICAgRGVmaW5pdGlvbjogVVNCIFBIWSBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgbWFwCisKKy0gY2xvY2tzOgorICAgIFVzYWdlOiByZXF1aXJlZAorICAgIFZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisgICAgRGVmaW5pdGlvbjogU2VlIGNsb2NrLWJpbmRpbmdzLnR4dCBzZWN0aW9uICJjb25zdW1lcnMiLiBMaXN0IG9mCisgICAgICAgICAgICAgICAgdHdvIGNsb2NrIHNwZWNpZmllcnMgZm9yIGludGVyZmFjZSBhbmQgY29yZSBjb250cm9sbGVyCisgICAgICAgICAgICAgICAgY2xvY2tzLgorCistIGNsb2NrLW5hbWVzOgorICAgIFVzYWdlOiByZXF1aXJlZAorICAgIFZhbHVlIHR5cGU6IDxzdHJpbmc+CisgICAgRGVmaW5pdGlvbjogTXVzdCBjb250YWluICJpZmFjZSIgYW5kICJjb3JlIiBzdHJpbmdzLgorCistIHZkZGN4LXN1cHBseToKKyAgICBVc2FnZTogcmVxdWlyZWQKKyAgICBWYWx1ZSB0eXBlOiA8cGhhbmRsZT4KKyAgICBEZWZpbml0aW9uOiBwaGFuZGxlIHRvIHRoZSByZWd1bGF0b3IgVkRDQ1ggc3VwcGx5IG5vZGUuCisKKy0gdjFwOC1zdXBwbHk6CisgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgVmFsdWUgdHlwZTogPHBoYW5kbGU+CisgICAgRGVmaW5pdGlvbjogcGhhbmRsZSB0byB0aGUgcmVndWxhdG9yIDEuOFYgc3VwcGx5IG5vZGUuCisKKy0gdjNwMy1zdXBwbHk6CisgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgVmFsdWUgdHlwZTogPHBoYW5kbGU+CisgICAgRGVmaW5pdGlvbjogcGhhbmRsZSB0byB0aGUgcmVndWxhdG9yIDMuM1Ygc3VwcGx5IG5vZGUuCisKKy0gcmVzZXRzOgorICAgIFVzYWdlOiByZXF1aXJlZAorICAgIFZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisgICAgRGVmaW5pdGlvbjogU2VlIHJlc2V0LnR4dCBzZWN0aW9uICJjb25zdW1lcnMiLiBQSFkgcmVzZXQgc3BlY2lmaWVyLgorCistIHJlc2V0LW5hbWVzOgorICAgIFVzYWdlOiByZXF1aXJlZAorICAgIFZhbHVlIHR5cGU6IDxzdHJpbmc+CisgICAgRGVmaW5pdGlvbjogTXVzdCBjb250YWluICJwaHkiIHN0cmluZy4KKworLSBzd2l0Y2gtZ3BpbzoKKyAgICBVc2FnZTogb3B0aW9uYWwKKyAgICBWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorICAgIERlZmluaXRpb246IFNvbWUgYm9hcmRzIGFyZSB1c2luZyBEdWFsIFNQRFQgVVNCIFN3aXRjaCwgd2l0Y2ggaXMKKyAgICAgICAgICAgICAgICBjb250cm9sbGVkIGJ5IEdQSU8gdG8gZGUvbXVsdGlwbGV4IEQrL0QtIFVTQiBsaW5lcworICAgICAgICAgICAgICAgIGJldHdlZW4gY29ubmVjdG9ycy4KKworRXhhbXBsZToKKwl1c2JfcGh5OiBwaHlANzhkOTAwMCB7CisJCWNvbXBhdGlibGUgPSAicWNvbSx1c2ItOHgxNi1waHkiOworCQlyZWcgPSA8MHg3OGQ5MDAwIDB4NDAwPjsKKworCQl2ZGRjeC1zdXBwbHkgPSA8JnBtODkxNl9zMV9jb3JuZXI+OworCQl2MXA4LXN1cHBseSA9IDwmcG04OTE2X2w3PjsKKwkJdjNwMy1zdXBwbHkgPSA8JnBtODkxNl9sMTM+OworCisJCWNsb2NrcyA9IDwmZ2NjIEdDQ19VU0JfSFNfQUhCX0NMSz4sCisJCQkgICAgIDwmZ2NjIEdDQ19VU0JfSFNfU1lTVEVNX0NMSz47CisJCWNsb2NrLW5hbWVzID0gImlmYWNlIiwgImNvcmUiOworCisJCXJlc2V0cyA9IDwmZ2NjIEdDQ19VU0IyQV9QSFlfQkNSPjsKKwkJcmVzZXQtbmFtZXMgPSAicGh5IjsKKworCQkvLyBEKy9ELSBsaW5lczogMSAtIFJvdXRlZCB0byBIVUIsIDAgLSBEZXZpY2UgY29ubmVjdG9yCisJCXN3aXRjaC1ncGlvID0gPCZwbTg5MTZfZ3Bpb3MgNCBHUElPX0FDVElWRV9ISUdIPjsKKwl9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3Fjb20tYXBxODA2NC1zYXRhLXBoeS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3Fjb20tYXBxODA2NC1zYXRhLXBoeS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTUyZjZjOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcWNvbS1hcHE4MDY0LXNhdGEtcGh5LnR4dApAQCAtMCwwICsxLDI0IEBACitRdWFsY29tbSBBUFE4MDY0IFNBVEEgUEhZIENvbnRyb2xsZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTQVRBIFBIWSBub2RlcyBhcmUgZGVmaW5lZCB0byBkZXNjcmliZSBvbi1jaGlwIFNBVEEgUGh5c2ljYWwgbGF5ZXIgY29udHJvbGxlcnMuCitFYWNoIFNBVEEgUEhZIGNvbnRyb2xsZXIgc2hvdWxkIGhhdmUgaXRzIG93biBub2RlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBjb21wYXRpYmxlIGxpc3QsIGNvbnRhaW5zICJxY29tLGFwcTgwNjQtc2F0YS1waHkiLgorLSByZWc6IG9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSBTQVRBIFBIWSByZWdpc3RlciBzZXQ7CistICNwaHktY2VsbHM6IG11c3QgYmUgemVybworLSBjbG9ja3M6IGEgbGlzdCBvZiBwaGFuZGxlcyBhbmQgY2xvY2stc3BlY2lmaWVyIHBhaXJzLCBvbmUgZm9yIGVhY2ggZW50cnkgaW4KKyAgY2xvY2stbmFtZXMuCistIGNsb2NrLW5hbWVzOiBtdXN0IGJlICJjZmciIGZvciBwaHkgY29uZmlnIGNsb2NrLgorCitFeGFtcGxlOgorCXNhdGFfcGh5OiBzYXRhLXBoeUAxYjQwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicWNvbSxhcHE4MDY0LXNhdGEtcGh5IjsKKwkJcmVnID0gPDB4MWI0MDAwMDAgMHgyMDA+OworCisJCWNsb2NrcyA9IDwmZ2NjIFNBVEFfUEhZX0NGR19DTEs+OworCQljbG9jay1uYW1lcyA9ICJjZmciOworCisJCSNwaHktY2VsbHMgPSA8MD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcWNvbS1kd2MzLXVzYi1waHkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9xY29tLWR3YzMtdXNiLXBoeS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZmMmRiZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcWNvbS1kd2MzLXVzYi1waHkudHh0CkBAIC0wLDAgKzEsMzkgQEAKK1F1YWxjb21tIERXQzMgSFMgQU5EIFNTIFBIWSBDT05UUk9MTEVSCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEV0MzIFBIWSBub2RlcyBhcmUgZGVmaW5lZCB0byBkZXNjcmliZSBvbi1jaGlwIFN5bm9wc2lzIFBoeXNpY2FsIGxheWVyCitjb250cm9sbGVycy4gIEVhY2ggRFdDMyBQSFkgY29udHJvbGxlciBzaG91bGQgaGF2ZSBpdHMgb3duIG5vZGUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBjb250YWluIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCS0gInFjb20sZHdjMy1ocy11c2ItcGh5IiBmb3IgSGlnaCBTcGVlZCBTeW5vcHNpcyBQSFkgY29udHJvbGxlcgorCS0gInFjb20sZHdjMy1zcy11c2ItcGh5IiBmb3IgU3VwZXIgU3BlZWQgU3lub3BzaXMgUEhZIGNvbnRyb2xsZXIKKy0gcmVnOiBvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgRFdDMyBQSFkgY29udHJvbGxlciByZWdpc3RlciBzZXQKKy0gI3BoeS1jZWxsczogbXVzdCBiZSB6ZXJvCistIGNsb2NrczogYSBsaXN0IG9mIHBoYW5kbGVzIGFuZCBjbG9jay1zcGVjaWZpZXIgcGFpcnMsIG9uZSBmb3IgZWFjaCBlbnRyeSBpbgorICBjbG9jay1uYW1lcy4KKy0gY2xvY2stbmFtZXM6IFNob3VsZCBjb250YWluICJyZWYiIGZvciB0aGUgUEhZIHJlZmVyZW5jZSBjbG9jaworCitPcHRpb25hbCBjbG9ja3M6CisgICJ4byIJCUV4dGVybmFsIHJlZmVyZW5jZSBjbG9jaworCitFeGFtcGxlOgorCQlwaHlAMTAwZjg4MDAgeworCQkJY29tcGF0aWJsZSA9ICJxY29tLGR3YzMtaHMtdXNiLXBoeSI7CisJCQlyZWcgPSA8MHgxMDBmODgwMCAweDMwPjsKKwkJCWNsb2NrcyA9IDwmZ2NjIFVTQjMwXzBfVVRNSV9DTEs+OworCQkJY2xvY2stbmFtZXMgPSAicmVmIjsKKwkJCSNwaHktY2VsbHMgPSA8MD47CisKKwkJCXN0YXR1cyA9ICJvayI7CisJCX07CisKKwkJcGh5QDEwMGY4ODMwIHsKKwkJCWNvbXBhdGlibGUgPSAicWNvbSxkd2MzLXNzLXVzYi1waHkiOworCQkJcmVnID0gPDB4MTAwZjg4MzAgMHgzMD47CisJCQljbG9ja3MgPSA8JmdjYyBVU0IzMF8wX01BU1RFUl9DTEs+OworCQkJY2xvY2stbmFtZXMgPSAicmVmIjsKKwkJCSNwaHktY2VsbHMgPSA8MD47CisKKwkJCXN0YXR1cyA9ICJvayI7CisJCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3Fjb20taXBxODA2eC1zYXRhLXBoeS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3Fjb20taXBxODA2eC1zYXRhLXBoeS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZiZmJkMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcWNvbS1pcHE4MDZ4LXNhdGEtcGh5LnR4dApAQCAtMCwwICsxLDIzIEBACitRdWFsY29tbSBJUFE4MDZ4IFNBVEEgUEhZIENvbnRyb2xsZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTQVRBIFBIWSBub2RlcyBhcmUgZGVmaW5lZCB0byBkZXNjcmliZSBvbi1jaGlwIFNBVEEgUGh5c2ljYWwgbGF5ZXIgY29udHJvbGxlcnMuCitFYWNoIFNBVEEgUEhZIGNvbnRyb2xsZXIgc2hvdWxkIGhhdmUgaXRzIG93biBub2RlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBjb21wYXRpYmxlIGxpc3QsIGNvbnRhaW5zICJxY29tLGlwcTgwNngtc2F0YS1waHkiCistIHJlZzogb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIFNBVEEgUEhZIHJlZ2lzdGVyIHNldDsKKy0gI3BoeS1jZWxsczogbXVzdCBiZSB6ZXJvCistIGNsb2NrczogbXVzdCBiZSBleGFjdGx5IG9uZSBlbnRyeQorLSBjbG9jay1uYW1lczogbXVzdCBiZSAiY2ZnIgorCitFeGFtcGxlOgorCXNhdGFfcGh5OiBzYXRhLXBoeUAxYjQwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicWNvbSxpcHE4MDZ4LXNhdGEtcGh5IjsKKwkJcmVnID0gPDB4MWI0MDAwMDAgMHgyMDA+OworCisJCWNsb2NrcyA9IDwmZ2NjIFNBVEFfUEhZX0NGR19DTEs+OworCQljbG9jay1uYW1lcyA9ICJjZmciOworCisJCSNwaHktY2VsbHMgPSA8MD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcmNhci1nZW4yLXBoeS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3JjYXItZ2VuMi1waHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1NjRiYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3JjYXItZ2VuMi1waHkudHh0CkBAIC0wLDAgKzEsNTIgQEAKKyogUmVuZXNhcyBSLUNhciBnZW5lcmF0aW9uIDIgVVNCIFBIWQorCitUaGlzIGZpbGUgcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gd2hhdCB0aGUgZGV2aWNlIG5vZGUgZm9yIHRoZSBSLUNhciBnZW5lcmF0aW9uCisyIFVTQiBQSFkgY29udGFpbnMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJyZW5lc2FzLHVzYi1waHktcjhhNzc5MCIgaWYgdGhlIGRldmljZSBpcyBhIHBhcnQgb2YgUjhBNzc5MCBTb0MuCisJICAgICAgInJlbmVzYXMsdXNiLXBoeS1yOGE3NzkxIiBpZiB0aGUgZGV2aWNlIGlzIGEgcGFydCBvZiBSOEE3NzkxIFNvQy4KKwkgICAgICAicmVuZXNhcyx1c2ItcGh5LXI4YTc3OTQiIGlmIHRoZSBkZXZpY2UgaXMgYSBwYXJ0IG9mIFI4QTc3OTQgU29DLgorLSByZWc6IG9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBibG9jay4KKy0gI2FkZHJlc3MtY2VsbHM6IG51bWJlciBvZiBhZGRyZXNzIGNlbGxzIGZvciB0aGUgVVNCIGNoYW5uZWwgc3Vibm9kZXMsIG11c3QKKwkJICBiZSA8MT4uCistICNzaXplLWNlbGxzOiBudW1iZXIgb2Ygc2l6ZSBjZWxscyBmb3IgdGhlIFVTQiBjaGFubmVsIHN1Ym5vZGVzLCBtdXN0IGJlIDwwPi4KKy0gY2xvY2tzOiBjbG9jayBwaGFuZGxlIGFuZCBzcGVjaWZpZXIgcGFpci4KKy0gY2xvY2stbmFtZXM6IHN0cmluZywgY2xvY2sgaW5wdXQgbmFtZSwgbXVzdCBiZSAidXNiaHMiLgorCitUaGUgVVNCIFBIWSBkZXZpY2UgdHJlZSBub2RlIHNob3VsZCBoYXZlIHRoZSBzdWJub2RlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBVU0IKK2NoYW5uZWxzLiBUaGVzZSBzdWJub2RlcyBtdXN0IGNvbnRhaW4gdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorLSByZWc6IHRoZSBVU0IgY29udHJvbGxlciBzZWxlY3Rvcjsgc2VlIHRoZSB0YWJsZSBiZWxvdyBmb3IgdGhlIHZhbHVlcy4KKy0gI3BoeS1jZWxsczogc2VlIHBoeS1iaW5kaW5ncy50eHQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LCBtdXN0IGJlIDwxPi4KKworVGhlIHBoYW5kbGUncyBhcmd1bWVudCBpbiB0aGUgUEhZIHNwZWNpZmllciBpcyB0aGUgVVNCIGNvbnRyb2xsZXIgc2VsZWN0b3IgZm9yCit0aGUgVVNCIGNoYW5uZWw7IHNlZSB0aGUgc2VsZWN0b3IgbWVhbmluZ3MgYmVsb3c6CisKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKworfFwgU2VsZWN0b3IgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8CisrIC0tLS0tLS0tLSArICAgICAgIDAgICAgICAgfCAgICAgICAxICAgICAgIHwKK3wgQ2hhbm5lbCAgXHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rCit8IDAgICAgICAgICB8IFBDSSBFSENJL09IQ0kgfCBIUy1VU0IgICAgICAgIHwKK3wgMiAgICAgICAgIHwgUENJIEVIQ0kvT0hDSSB8IHhIQ0kgICAgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rCisKK0V4YW1wbGUgKExhZ2VyIGJvYXJkKToKKworCXVzYi1waHlAZTY1OTAxMDAgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMsdXNiLXBoeS1yOGE3NzkwIjsKKwkJcmVnID0gPDAgMHhlNjU5MDEwMCAwIDB4MTAwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQljbG9ja3MgPSA8Jm1zdHA3X2Nsa3MgUjhBNzc5MF9DTEtfSFNVU0I+OworCQljbG9jay1uYW1lcyA9ICJ1c2JocyI7CisKKwkJdXNiLWNoYW5uZWxAMCB7CisJCQlyZWcgPSA8MD47CisJCQkjcGh5LWNlbGxzID0gPDE+OworCQl9OworCQl1c2ItY2hhbm5lbEAyIHsKKwkJCXJlZyA9IDwyPjsKKwkJCSNwaHktY2VsbHMgPSA8MT47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcm9ja2NoaXAtdXNiLXBoeS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3JvY2tjaGlwLXVzYi1waHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNjQ1NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3JvY2tjaGlwLXVzYi1waHkudHh0CkBAIC0wLDAgKzEsMzcgQEAKK1JPQ0tDSElQIFVTQjIgUEhZCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiByb2NrY2hpcCxyazMyODgtdXNiLXBoeQorIC0gcm9ja2NoaXAsZ3JmIDogcGhhbmRsZSB0byB0aGUgc3lzY29uIG1hbmFnaW5nIHRoZSAiZ2VuZXJhbAorICAgcmVnaXN0ZXIgZmlsZXMiCisgLSAjYWRkcmVzcy1jZWxsczogc2hvdWxkIGJlIDEKKyAtICNzaXplLWNlbGxzOiBzaG91bGQgYmUgMAorCitTdWItbm9kZXM6CitFYWNoIFBIWSBzaG91bGQgYmUgcmVwcmVzZW50ZWQgYXMgYSBzdWItbm9kZS4KKworU3ViLW5vZGVzCityZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSAjcGh5LWNlbGxzOiBzaG91bGQgYmUgMAorLSByZWc6IFBIWSBjb25maWd1cmUgcmVnIGFkZHJlc3Mgb2Zmc2V0IGluIEdSRgorCQkiMHgzMjAiIC0gZm9yIFBIWSBhdHRhY2ggdG8gT1RHIGNvbnRyb2xsZXIKKwkJIjB4MzM0IiAtIGZvciBQSFkgYXR0YWNoIHRvIEhPU1QwIGNvbnRyb2xsZXIKKwkJIjB4MzQ4IiAtIGZvciBQSFkgYXR0YWNoIHRvIEhPU1QxIGNvbnRyb2xsZXIKKworT3B0aW9uYWwgUHJvcGVydGllczoKKy0gY2xvY2tzIDogcGhhbmRsZSArIGNsb2NrIHNwZWNpZmllciBmb3IgdGhlIHBoeSBjbG9ja3MKKy0gY2xvY2stbmFtZXM6IHN0cmluZywgY2xvY2sgbmFtZSwgbXVzdCBiZSAicGh5Y2xrIgorCitFeGFtcGxlOgorCit1c2JwaHk6IHBoeSB7CisJY29tcGF0aWJsZSA9ICJyb2NrY2hpcCxyazMyODgtdXNiLXBoeSI7CisJcm9ja2NoaXAsZ3JmID0gPCZncmY+OworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDA+OworCisJdXNicGh5MDogdXNiLXBoeTAgeworCQkjcGh5LWNlbGxzID0gPDA+OworCQlyZWcgPSA8MHgzMjA+OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9zYW1zdW5nLXBoeS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3NhbXN1bmctcGh5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjg5ZDNiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9zYW1zdW5nLXBoeS50eHQKQEAgLTAsMCArMSwxNzkgQEAKK1NhbXN1bmcgUzVQL0VYWU5PUyBTb0Mgc2VyaWVzIE1JUEkgQ1NJUy9EU0lNIERQSFkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAic2Ftc3VuZyxzNXB2MjEwLW1pcGktdmlkZW8tcGh5IjsKKy0gI3BoeS1jZWxscyA6IGZyb20gdGhlIGdlbmVyaWMgcGh5IGJpbmRpbmdzLCBtdXN0IGJlIDE7CistIHN5c2NvbiAtIHBoYW5kbGUgdG8gdGhlIFBNVSBzeXN0ZW0gY29udHJvbGxlcjsKKworRm9yICJzYW1zdW5nLHM1cHYyMTAtbWlwaS12aWRlby1waHkiIGNvbXBhdGlibGUgUEhZcyB0aGUgc2Vjb25kIGNlbGwgaW4KK3RoZSBQSFkgc3BlY2lmaWVyIGlkZW50aWZpZXMgdGhlIFBIWSBhbmQgaXRzIG1lYW5pbmcgaXMgYXMgZm9sbG93czoKKyAgMCAtIE1JUEkgQ1NJUyAwLAorICAxIC0gTUlQSSBEU0lNIDAsCisgIDIgLSBNSVBJIENTSVMgMSwKKyAgMyAtIE1JUEkgRFNJTSAxLgorCitTYW1zdW5nIEVYWU5PUyBTb0Mgc2VyaWVzIERpc3BsYXkgUG9ydCBQSFkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBzdXBwb3J0ZWQgdmFsdWVzOgorCSAtICJzYW1zdW5nLGV4eW5vczUyNTAtZHAtdmlkZW8tcGh5IgorCSAtICJzYW1zdW5nLGV4eW5vczU0MjAtZHAtdmlkZW8tcGh5IgorLSBzYW1zdW5nLHBtdS1zeXNjb246IHBoYW5kbGUgZm9yIFBNVSBzeXN0ZW0gY29udHJvbGxlciBpbnRlcmZhY2UsIHVzZWQgdG8KKwkJICAgICAgY29udHJvbCBwbXUgcmVnaXN0ZXJzIGZvciBwb3dlciBpc29sYXRpb24uCistICNwaHktY2VsbHMgOiBmcm9tIHRoZSBnZW5lcmljIFBIWSBiaW5kaW5ncywgbXVzdCBiZSAwOworCitTYW1zdW5nIFM1UC9FWFlOT1MgU29DIHNlcmllcyBVU0IgUEhZCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgb25lIG9mIHRoZSBsaXN0ZWQgY29tcGF0aWJsZXM6CisJLSAic2Ftc3VuZyxleHlub3MzMjUwLXVzYjItcGh5IgorCS0gInNhbXN1bmcsZXh5bm9zNDIxMC11c2IyLXBoeSIKKwktICJzYW1zdW5nLGV4eW5vczR4MTItdXNiMi1waHkiCisJLSAic2Ftc3VuZyxleHlub3M1MjUwLXVzYjItcGh5IgorCS0gInNhbXN1bmcsczVwdjIxMC11c2IyLXBoeSIKKy0gcmVnIDogYSBsaXN0IG9mIHJlZ2lzdGVycyB1c2VkIGJ5IHBoeSBkcml2ZXIKKwktIGZpcnN0IGFuZCBvYmxpZ2F0b3J5IGlzIHRoZSBsb2NhdGlvbiBvZiBwaHkgbW9kdWxlcyByZWdpc3RlcnMKKy0gc2Ftc3VuZyxzeXNyZWctcGhhbmRsZSAtIGhhbmRsZSB0byBzeXNjb24gdXNlZCB0byBjb250cm9sIHRoZSBzeXN0ZW0gcmVnaXN0ZXJzCistIHNhbXN1bmcscG11cmVnLXBoYW5kbGUgLSBoYW5kbGUgdG8gc3lzY29uIHVzZWQgdG8gY29udHJvbCBQTVUgcmVnaXN0ZXJzCistICNwaHktY2VsbHMgOiBmcm9tIHRoZSBnZW5lcmljIHBoeSBiaW5kaW5ncywgbXVzdCBiZSAxOworLSBjbG9ja3MgYW5kIGNsb2NrLW5hbWVzOgorCS0gdGhlICJwaHkiIGNsb2NrIGlzIHJlcXVpcmVkIGJ5IHRoZSBwaHkgbW9kdWxlLCB1c2VkIGFzIGEgZ2F0ZQorCS0gdGhlICJyZWYiIGNsb2NrIGlzIHVzZWQgdG8gZ2V0IHRoZSByYXRlIG9mIHRoZSBjbG9jayBwcm92aWRlZCB0byB0aGUKKwkgIFBIWSBtb2R1bGUKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdmJ1cy1zdXBwbHk6IHBvd2VyLXN1cHBseSBwaGFuZGxlIGZvciB2YnVzIHBvd2VyIHNvdXJjZQorCitUaGUgZmlyc3QgcGhhbmRsZSBhcmd1bWVudCBpbiB0aGUgUEhZIHNwZWNpZmllciBpZGVudGlmaWVzIHRoZSBQSFksIGl0cworbWVhbmluZyBpcyBjb21wYXRpYmxlIGRlcGVuZGVudC4gRm9yIHRoZSBjdXJyZW50bHkgc3VwcG9ydGVkIFNvQ3MgKEV4eW5vcyA0MjEwCithbmQgRXh5bm9zIDQyMTIpIGl0IGlzIGFzIGZvbGxvd3M6CisgIDAgLSBVU0IgZGV2aWNlICgiZGV2aWNlIiksCisgIDEgLSBVU0IgaG9zdCAoImhvc3QiKSwKKyAgMiAtIEhTSUMwICgiaHNpYzAiKSwKKyAgMyAtIEhTSUMxICgiaHNpYzEiKSwKK0V4eW5vczMyNTAgaGFzIG9ubHkgVVNCIGRldmljZSBwaHkgYXZhaWxhYmxlIGFzIHBoeSAwLgorCitFeHlub3MgNDIxMCBhbmQgRXh5bm9zIDQyMTIgdXNlIG1vZGUgc3dpdGNoaW5nIGFuZCByZXF1aXJlIHRoYXQgbW9kZSBzd2l0Y2gKK3JlZ2lzdGVyIGlzIHN1cHBsaWVkLgorCitFeGFtcGxlOgorCitGb3IgRXh5bm9zIDQ0MTIgKGNvbXBhdGlibGUgd2l0aCBFeHlub3MgNDIxMik6CisKK3VzYnBoeTogcGh5QDEyNWIwMDAwIHsKKwljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNHgxMi11c2IyLXBoeSI7CisJcmVnID0gPDB4MTI1YjAwMDAgMHgxMDA+OworCWNsb2NrcyA9IDwmY2xvY2sgMzA1PiwgPCZjbG9jayAyPjsKKwljbG9jay1uYW1lcyA9ICJwaHkiLCAicmVmIjsKKwlzdGF0dXMgPSAib2theSI7CisJI3BoeS1jZWxscyA9IDwxPjsKKwlzYW1zdW5nLHN5c3JlZy1waGFuZGxlID0gPCZzeXNfcmVnPjsKKwlzYW1zdW5nLHBtdXJlZy1waGFuZGxlID0gPCZwbXVfcmVnPjsKK307CisKK1RoZW4gdGhlIFBIWSBjYW4gYmUgdXNlZCBpbiBvdGhlciBub2RlcyBzdWNoIGFzOgorCitwaHktY29uc3VtZXJAMTIzNDAwMDAgeworCXBoeXMgPSA8JnVzYnBoeSAyPjsKKwlwaHktbmFtZXMgPSAicGh5IjsKK307CisKK1JlZmVyIHRvIERUIGJpbmRpbmdzIGRvY3VtZW50YXRpb24gb2YgcGFydGljdWxhciBQSFkgY29uc3VtZXIgZGV2aWNlcyBmb3IgbW9yZQoraW5mb3JtYXRpb24gYWJvdXQgcmVxdWlyZWQgUEhZcyBhbmQgdGhlIHdheSBvZiBzcGVjaWZpY2F0aW9uLgorCitTYW1zdW5nIFNBVEEgUEhZIENvbnRyb2xsZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTQVRBIFBIWSBub2RlcyBhcmUgZGVmaW5lZCB0byBkZXNjcmliZSBvbi1jaGlwIFNBVEEgUGh5c2ljYWwgbGF5ZXIgY29udHJvbGxlcnMuCitFYWNoIFNBVEEgUEhZIGNvbnRyb2xsZXIgc2hvdWxkIGhhdmUgaXRzIG93biBub2RlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlICAgICAgICA6IGNvbXBhdGlibGUgbGlzdCwgY29udGFpbnMgInNhbXN1bmcsZXh5bm9zNTI1MC1zYXRhLXBoeSIKKy0gcmVnIDogb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIFNBVEEgUEhZIHJlZ2lzdGVyIHNldDsKKy0gI3BoeS1jZWxscyA6IG11c3QgYmUgemVybworLSBjbG9ja3MgOiBtdXN0IGJlIGV4YWN0bHkgb25lIGVudHJ5CistIGNsb2NrLW5hbWVzIDogbXVzdCBiZSAic2F0YV9waHljdHJsIgorLSBzYW1zdW5nLGV4eW5vcy1zYXRhcGh5LWkyYy1waGFuZGxlIDogYSBwaGFuZGxlIHRvIHRoZSBJMkMgZGV2aWNlLCBubyBhcmd1bWVudHMKKy0gc2Ftc3VuZyxzeXNjb24tcGhhbmRsZSA6IGEgcGhhbmRsZSB0byB0aGUgUE1VIHN5c3RlbSBjb250cm9sbGVyLCBubyBhcmd1bWVudHMKKworRXhhbXBsZToKKwlzYXRhX3BoeTogc2F0YS1waHlAMTIxNzAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTI1MC1zYXRhLXBoeSI7CisJCXJlZyA9IDwweDEyMTcwMDAwIDB4MWZmPjsKKwkJY2xvY2tzID0gPCZjbG9jayAyODc+OworCQljbG9jay1uYW1lcyA9ICJzYXRhX3BoeWN0cmwiOworCQkjcGh5LWNlbGxzID0gPDA+OworCQlzYW1zdW5nLGV4eW5vcy1zYXRhcGh5LWkyYy1waGFuZGxlID0gPCZzYXRhX3BoeV9pMmM+OworCQlzYW1zdW5nLHN5c2Nvbi1waGFuZGxlID0gPCZwbXVfc3lzY29uPjsKKwl9OworCitEZXZpY2UtVHJlZSBiaW5kaW5ncyBmb3Igc2F0YXBoeSBpMmMgY2xpZW50IGRyaXZlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKK2NvbXBhdGlibGU6IFNob3VsZCBiZSAic2Ftc3VuZyxleHlub3Mtc2F0YXBoeS1pMmMiCistIHJlZzogSTJDIGFkZHJlc3Mgb2YgdGhlIHNhdGFwaHkgaTJjIGRldmljZS4KKworRXhhbXBsZToKKworCXNhdGFfcGh5X2kyYzpzYXRhLXBoeUAzOCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3Mtc2F0YXBoeS1pMmMiOworCQlyZWcgPSA8MHgzOD47CisJfTsKKworU2Ftc3VuZyBFeHlub3M1IFNvQyBzZXJpZXMgVVNCIERSRCBQSFkgY29udHJvbGxlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSBzZXQgdG8gb25lIG9mIHRoZSBmb2xsb3dpbmcgc3VwcG9ydGVkIHZhbHVlczoKKwktICJzYW1zdW5nLGV4eW5vczUyNTAtdXNiZHJkLXBoeSIgLSBmb3IgZXh5bm9zNTI1MCBTb0MsCisJLSAic2Ftc3VuZyxleHlub3M1NDIwLXVzYmRyZC1waHkiIC0gZm9yIGV4eW5vczU0MjAgU29DLgorCS0gInNhbXN1bmcsZXh5bm9zNTQzMy11c2JkcmQtcGh5IiAtIGZvciBleHlub3M1NDMzIFNvQy4KKwktICJzYW1zdW5nLGV4eW5vczctdXNiZHJkLXBoeSIgLSBmb3IgZXh5bm9zNyBTb0MuCistIHJlZyA6IFJlZ2lzdGVyIG9mZnNldCBhbmQgbGVuZ3RoIG9mIFVTQiBEUkQgUEhZIHJlZ2lzdGVyIHNldDsKKy0gY2xvY2tzOiBDbG9jayBJRHMgYXJyYXkgYXMgcmVxdWlyZWQgYnkgdGhlIGNvbnRyb2xsZXIKKy0gY2xvY2stbmFtZXM6IG5hbWVzIG9mIGNsb2NrcyBjb3JyZXNlcG9uZGluZyB0byBJRHMgaW4gdGhlIGNsb2NrIHByb3BlcnR5OworCSAgICAgICBSZXF1aXJlZCBjbG9ja3M6CisJLSBwaHk6IG1haW4gUEhZIGNsb2NrIChzYW1lIGFzIFVTQiBEUkQgY29udHJvbGxlciBpLmUuIERXQzMgSVAgY2xvY2spLAorCSAgICAgICB1c2VkIGZvciByZWdpc3RlciBhY2Nlc3MuCisJLSByZWY6IFBIWSdzIHJlZmVyZW5jZSBjbG9jayAodXN1YWxseSBjcnlzdGFsIGNsb2NrKSwgdXNlZCBmb3IKKwkgICAgICAgUEhZIG9wZXJhdGlvbnMsIGFzc29jaWF0ZWQgYnkgcGh5IG5hbWUuIEl0IGlzIHVzZWQgdG8KKwkgICAgICAgZGV0ZXJtaW5lIGJpdCB2YWx1ZXMgZm9yIGNsb2NrIHNldHRpbmdzIHJlZ2lzdGVyLgorCSAgICAgICBGb3IgRXh5bm9zNTQyMCB0aGlzIGlzIGdpdmVuIGFzICdzY2xrX3VzYnBoeTMwJyBpbiBDTVUuCisJLSBvcHRpb25hbCBjbG9ja3M6IEV4eW5vczU0MzMgJiBFeHlub3M3IFNvQyBoYXMgbm93IGZvbGxvd2luZyBhZGRpdGlvbmFsCisJCQkgICBnYXRlIGNsb2NrcyBhdmFpbGFibGU6CisJCQkgICAtIHBoeV9waXBlOiBmb3IgUElQRTMgcGh5CisJCQkgICAtIHBoeV91dG1pOiBmb3IgVVRNSSsgcGh5CisJCQkgICAtIGl0cDogZm9yIElUUCBnZW5lcmF0aW9uCistIHNhbXN1bmcscG11LXN5c2NvbjogcGhhbmRsZSBmb3IgUE1VIHN5c3RlbSBjb250cm9sbGVyIGludGVyZmFjZSwgdXNlZCB0bworCQkgICAgICBjb250cm9sIHBtdSByZWdpc3RlcnMgZm9yIHBvd2VyIGlzb2xhdGlvbi4KKy0gI3BoeS1jZWxscyA6IGZyb20gdGhlIGdlbmVyaWMgUEhZIGJpbmRpbmdzLCBtdXN0IGJlIDE7CisKK0ZvciAic2Ftc3VuZyxleHlub3M1MjUwLXVzYmRyZC1waHkiIGFuZCAic2Ftc3VuZyxleHlub3M1NDIwLXVzYmRyZC1waHkiCitjb21wYXRpYmxlIFBIWXMsIHRoZSBzZWNvbmQgY2VsbCBpbiB0aGUgUEhZIHNwZWNpZmllciBpZGVudGlmaWVzIHRoZQorUEhZIGlkLCB3aGljaCBpcyBpbnRlcnByZXRlZCBhcyBmb2xsb3dzOgorICAwIC0gVVRNSSsgdHlwZSBwaHksCisgIDEgLSBQSVBFMyB0eXBlIHBoeSwKKworRXhhbXBsZToKKwl1c2JkcmRfcGh5OiB1c2JwaHlAMTIxMDAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTI1MC11c2JkcmQtcGh5IjsKKwkJcmVnID0gPDB4MTIxMDAwMDAgMHgxMDA+OworCQljbG9ja3MgPSA8JmNsb2NrIDI4Nj4sIDwmY2xvY2sgMT47CisJCWNsb2NrLW5hbWVzID0gInBoeSIsICJyZWYiOworCQlzYW1zdW5nLHBtdS1zeXNjb24gPSA8JnBtdV9zeXN0ZW1fY29udHJvbGxlcj47CisJCSNwaHktY2VsbHMgPSA8MT47CisJfTsKKworLSBhbGlhc2VzOiBGb3IgU29DcyBsaWtlIEV4eW5vczU0MjAgaGF2aW5nIG11bHRpcGxlIFVTQiAzLjAgRFJEIFBIWSBjb250cm9sbGVycywKKwkgICAndXNiZHJkX3BoeScgbm9kZXMgc2hvdWxkIGhhdmUgbnVtYmVyZWQgYWxpYXMgaW4gdGhlIGFsaWFzZXMgbm9kZSwKKwkgICBpbiB0aGUgZm9ybSBvZiB1c2JkcmRwaHlOLCBOID0gMCwgMS4uLiAoZGVwZW5kaW5nIG9uIG51bWJlciBvZgorCSAgIGNvbnRyb2xsZXJzKS4KK0V4YW1wbGU6CisJYWxpYXNlcyB7CisJCXVzYmRyZHBoeTAgPSAmdXNiM19waHkwOworCQl1c2JkcmRwaHkxID0gJnVzYjNfcGh5MTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9zdC1zcGVhci1taXBoeS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3N0LXNwZWFyLW1pcGh5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTZiZmRjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9zdC1zcGVhci1taXBoeS50eHQKQEAgLTAsMCArMSwxNSBAQAorU1QgU1BFQXIgbWlwaHkgRFQgZGV0YWlscworPT09PT09PT09PT09PT09PT09PT09PT09PQorCitTVCBNaWNyb2VsZWN0cm9uaWNzIFNQRUFyIG1pcGh5IGlzIGEgcGh5IGNvbnRyb2xsZXIgc3VwcG9ydGluZyBQQ0llIGFuZCBTQVRBLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJzdCxzcGVhcjEzMTAtbWlwaHkiIG9yICJzdCxzcGVhcjEzNDAtbWlwaHkiCistIHJlZyA6IG9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSBQSFkgcmVnaXN0ZXIgc2V0LgorLSBtaXNjOiBwaGFuZGxlIGZvciB0aGUgc3lzY29uIG5vZGUgdG8gYWNjZXNzIG1pc2MgcmVnaXN0ZXJzCistICNwaHktY2VsbHMgOiBmcm9tIHRoZSBnZW5lcmljIFBIWSBiaW5kaW5ncywgbXVzdCBiZSAxLgorCS0gY2VsbFsxXTogMCBpZiBwaHkgdXNlZCBmb3IgU0FUQSwgMSBmb3IgUENJZS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gcGh5LWlkOiBJbnN0YW5jZSBpZCBvZiB0aGUgcGh5LiBPbmx5IHJlcXVpcmVkIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIHBoeXMKKyAgcHJlc2VudCBvbiBhIGltcGxlbWVudGF0aW9uLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9zdW40aS11c2ItcGh5LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvc3VuNGktdXNiLXBoeS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNlYmY3NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvc3VuNGktdXNiLXBoeS50eHQKQEAgLTAsMCArMSw1NSBAQAorQWxsd2lubmVyIHN1bjRpIFVTQiBQSFkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgb25lIG9mCisgICogYWxsd2lubmVyLHN1bjRpLWExMC11c2ItcGh5CisgICogYWxsd2lubmVyLHN1bjVpLWExMy11c2ItcGh5CisgICogYWxsd2lubmVyLHN1bjZpLWEzMS11c2ItcGh5CisgICogYWxsd2lubmVyLHN1bjdpLWEyMC11c2ItcGh5CisgICogYWxsd2lubmVyLHN1bjhpLWEyMy11c2ItcGh5CisgICogYWxsd2lubmVyLHN1bjhpLWEzMy11c2ItcGh5CistIHJlZyA6IGEgbGlzdCBvZiBvZmZzZXQgKyBsZW5ndGggcGFpcnMKKy0gcmVnLW5hbWVzIDoKKyAgKiAicGh5X2N0cmwiCisgICogInBtdTEiCisgICogInBtdTIiIGZvciBzdW40aSwgc3VuNmkgb3Igc3VuN2kKKy0gI3BoeS1jZWxscyA6IGZyb20gdGhlIGdlbmVyaWMgcGh5IGJpbmRpbmdzLCBtdXN0IGJlIDEKKy0gY2xvY2tzIDogcGhhbmRsZSArIGNsb2NrIHNwZWNpZmllciBmb3IgdGhlIHBoeSBjbG9ja3MKKy0gY2xvY2stbmFtZXMgOgorICAqICJ1c2JfcGh5IiBmb3Igc3VuNGksIHN1bjVpIG9yIHN1bjdpCisgICogInVzYjBfcGh5IiwgInVzYjFfcGh5IiBhbmQgInVzYjJfcGh5IiBmb3Igc3VuNmkKKyAgKiAidXNiMF9waHkiLCAidXNiMV9waHkiIGZvciBzdW44aQorLSByZXNldHMgOiBhIGxpc3Qgb2YgcGhhbmRsZSArIHJlc2V0IHNwZWNpZmllciBwYWlycworLSByZXNldC1uYW1lcyA6CisgICogInVzYjBfcmVzZXQiCisgICogInVzYjFfcmVzZXQiCisgICogInVzYjJfcmVzZXQiIGZvciBzdW40aSwgc3VuNmkgb3Igc3VuN2kKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdXNiMF9pZF9kZXQtZ3Bpb3MgOiBncGlvIHBoYW5kbGUgZm9yIHJlYWRpbmcgdGhlIG90ZyBpZCBwaW4gdmFsdWUKKy0gdXNiMF92YnVzX2RldC1ncGlvcyA6IGdwaW8gcGhhbmRsZSBmb3IgZGV0ZWN0aW5nIHRoZSBwcmVzZW5jZSBvZiB1c2IwIHZidXMKKy0gdXNiMF92YnVzX3Bvd2VyLXN1cHBseTogcG93ZXItc3VwcGx5IHBoYW5kbGUgZm9yIHVzYjAgdmJ1cyBwcmVzZW5jZSBkZXRlY3QKKy0gdXNiMF92YnVzLXN1cHBseSA6IHJlZ3VsYXRvciBwaGFuZGxlIGZvciBjb250cm9sbGVyIHVzYjAgdmJ1cworLSB1c2IxX3ZidXMtc3VwcGx5IDogcmVndWxhdG9yIHBoYW5kbGUgZm9yIGNvbnRyb2xsZXIgdXNiMSB2YnVzCistIHVzYjJfdmJ1cy1zdXBwbHkgOiByZWd1bGF0b3IgcGhhbmRsZSBmb3IgY29udHJvbGxlciB1c2IyIHZidXMKKworRXhhbXBsZToKKwl1c2JwaHk6IHBoeUAweDAxYzEzNDAwIHsKKwkJI3BoeS1jZWxscyA9IDwxPjsKKwkJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNGktYTEwLXVzYi1waHkiOworCQkvKiBwaHkgYmFzZSByZWdzLCBwaHkxIHBtdSByZWcsIHBoeTIgcG11IHJlZyAqLworCQlyZWcgPSA8MHgwMWMxMzQwMCAweDEwIDB4MDFjMTQ4MDAgMHg0IDB4MDFjMWM4MDAgMHg0PjsKKwkJcmVnLW5hbWVzID0gInBoeV9jdHJsIiwgInBtdTEiLCAicG11MiI7CisJCWNsb2NrcyA9IDwmdXNiX2NsayA4PjsKKwkJY2xvY2stbmFtZXMgPSAidXNiX3BoeSI7CisJCXJlc2V0cyA9IDwmdXNiX2NsayAwPiwgPCZ1c2JfY2xrIDE+LCA8JnVzYl9jbGsgMj47CisJCXJlc2V0LW5hbWVzID0gInVzYjBfcmVzZXQiLCAidXNiMV9yZXNldCIsICJ1c2IyX3Jlc2V0IjsKKwkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwkJcGluY3RybC0wID0gPCZ1c2IwX2lkX2RldGVjdF9waW4+LCA8JnVzYjBfdmJ1c19kZXRlY3RfcGluPjsKKwkJdXNiMF9pZF9kZXQtZ3Bpb3MgPSA8JnBpbyA3IDE5IEdQSU9fQUNUSVZFX0hJR0g+OyAvKiBQSDE5ICovCisJCXVzYjBfdmJ1c19kZXQtZ3Bpb3MgPSA8JnBpbyA3IDIyIEdQSU9fQUNUSVZFX0hJR0g+OyAvKiBQSDIyICovCisJCXVzYjBfdmJ1cy1zdXBwbHkgPSA8JnJlZ191c2IwX3ZidXM+OworCQl1c2IxX3ZidXMtc3VwcGx5ID0gPCZyZWdfdXNiMV92YnVzPjsKKwkJdXNiMl92YnVzLXN1cHBseSA9IDwmcmVnX3VzYjJfdmJ1cz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvc3VuOWktdXNiLXBoeS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3N1bjlpLXVzYi1waHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjY2E4NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3N1bjlpLXVzYi1waHkudHh0CkBAIC0wLDAgKzEsMzggQEAKK0FsbHdpbm5lciBzdW45aSBVU0IgUEhZCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlIG9uZSBvZgorICAqIGFsbHdpbm5lcixzdW45aS1hODAtdXNiLXBoeQorLSByZWcgOiBhIGxpc3Qgb2Ygb2Zmc2V0ICsgbGVuZ3RoIHBhaXJzCistICNwaHktY2VsbHMgOiBmcm9tIHRoZSBnZW5lcmljIHBoeSBiaW5kaW5ncywgbXVzdCBiZSAwCistIHBoeV90eXBlIDogImhzaWMiIGZvciBIU0lDIHVzYWdlOworCSAgICAgb3RoZXIgdmFsdWVzIG9yIGFic2VuY2Ugb2YgdGhpcyBwcm9wZXJ0eSBpbmRpY2F0ZXMgbm9ybWFsIFVTQgorLSBjbG9ja3MgOiBwaGFuZGxlICsgY2xvY2sgc3BlY2lmaWVyIGZvciB0aGUgcGh5IGNsb2NrcworLSBjbG9jay1uYW1lcyA6IGRlcGVuZGluZyBvbiB0aGUgInBoeV90eXBlIiBwcm9wZXJ0eSwKKyAgKiAicGh5IiBmb3Igbm9ybWFsIFVTQgorICAqICJoc2ljXzQ4ME0iLCAiaHNpY18xMk0iIGZvciBIU0lDCistIHJlc2V0cyA6IGEgbGlzdCBvZiBwaGFuZGxlICsgcmVzZXQgc3BlY2lmaWVyIHBhaXJzCistIHJlc2V0LW5hbWVzIDogZGVwZW5kaW5nIG9uIHRoZSAicGh5X3R5cGUiIHByb3BlcnR5LAorICAqICJwaHkiIGZvciBub3JtYWwgVVNCCisgICogImhzaWMiIGZvciBIU0lDCisKK09wdGlvbmFsIFByb3BlcnRpZXM6CistIHBoeS1zdXBwbHkgOiBmcm9tIHRoZSBnZW5lcmljIHBoeSBiaW5kaW5ncywgYSBwaGFuZGxlIHRvIGEgcmVndWxhdG9yIHRoYXQKKwkgICAgICAgcHJvdmlkZXMgcG93ZXIgdG8gVkJVUy4KKworSXQgaXMgcmVjb21tZW5kZWQgdG8gbGlzdCBhbGwgY2xvY2tzIGFuZCByZXNldHMgYXZhaWxhYmxlLgorVGhlIGRyaXZlciB3aWxsIG9ubHkgdXNlIHRob3NlIG1hdGNoaW5nIHRoZSBwaHlfdHlwZS4KKworRXhhbXBsZToKKwl1c2JwaHkxOiBwaHlAMDBhMDE4MDAgeworCQljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW45aS1hODAtdXNiLXBoeSI7CisJCXJlZyA9IDwweDAwYTAxODAwIDB4ND47CisJCWNsb2NrcyA9IDwmdXNiX3BoeV9jbGsgMj4sIDwmdXNiX3BoeV9jbGsgMTA+LAorCQkgICAgICAgPCZ1c2JfcGh5X2NsayAzPjsKKwkJY2xvY2stbmFtZXMgPSAiaHNpY180ODBNIiwgImhzaWNfMTJNIiwgInBoeSI7CisJCXJlc2V0cyA9IDwmdXNiX3BoeV9jbGsgMTg+LCA8JnVzYl9waHlfY2xrIDE5PjsKKwkJcmVzZXQtbmFtZXMgPSAiaHNpYyIsICJwaHkiOworCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCQkjcGh5LWNlbGxzID0gPDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3RpLXBoeS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3RpLXBoeS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNmOTQ0NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvdGktcGh5LnR4dApAQCAtMCwwICsxLDExOCBAQAorVEkgUEhZOiBEVCBET0NVTUVOVEFUSU9OIEZPUiBQSFlzIGluIFRJIFBMQVRGT1JNcworCitPTUFQIENPTlRST0wgUEhZCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgb25lIG9mCisgInRpLGNvbnRyb2wtcGh5LW90Z2hzIiAtIGlmIGl0IGhhcyBvdGdoc19jb250cm9sIG1haWxib3ggcmVnaXN0ZXIgYXMgb24gT01BUDQuCisgInRpLGNvbnRyb2wtcGh5LXVzYjIiIC0gaWYgaXQgaGFzIFBvd2VyIGRvd24gYml0IGluIGNvbnRyb2xfZGV2X2NvbmYgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGUuZy4gVVNCMl9QSFkgb24gT01BUDUuCisgInRpLGNvbnRyb2wtcGh5LXBpcGUzIiAtIGlmIGl0IGhhcyBEUExMIGFuZCBpbmRpdmlkdWFsIFJ4ICYgVHggcG93ZXIgY29udHJvbAorICAgICAgICAgICAgICAgICAgICAgICAgZS5nLiBVU0IzIFBIWSBhbmQgU0FUQSBQSFkgb24gT01BUDUuCisgInRpLGNvbnRyb2wtcGh5LXBjaWUiIC0gZm9yIHBjaWUgdG8gc3VwcG9ydCBleHRlcm5hbCBjbG9jayBmb3IgcGNpZSBhbmQgdG8KKwkJCXNldCBQQ1MgZGVsYXkgdmFsdWUuCisJCQllLmcuIFBDSUUgUEhZIGluIERSQTd4CisgInRpLGNvbnRyb2wtcGh5LXVzYjItZHJhNyIgLSBpZiBpdCBoYXMgcG93ZXIgZG93biByZWdpc3RlciBsaWtlIFVTQjIgUEhZIG9uCisgICAgICAgICAgICAgICAgICAgICAgICBEUkE3IHBsYXRmb3JtLgorICJ0aSxjb250cm9sLXBoeS11c2IyLWFtNDM3IiAtIGlmIGl0IGhhcyBwb3dlciBkb3duIHJlZ2lzdGVyIGxpa2UgVVNCMiBQSFkgb24KKyAgICAgICAgICAgICAgICAgICAgICAgIEFNNDM3IHBsYXRmb3JtLgorIC0gcmVnIDogcmVnaXN0ZXIgcmFuZ2VzIGFzIGxpc3RlZCBpbiB0aGUgcmVnLW5hbWVzIHByb3BlcnR5CisgLSByZWctbmFtZXM6ICJvdGdoc19jb250cm9sIiBmb3IgY29udHJvbC1waHktb3RnaHMKKwkgICAgICAicG93ZXIiLCAicGNpZV9wY3MiIGFuZCAiY29udHJvbF9zbWEiIGZvciBjb250cm9sLXBoeS1wY2llCisJICAgICAgInBvd2VyIiBmb3IgYWxsIG90aGVyIHR5cGVzCisKK29tYXBfY29udHJvbF91c2I6IG9tYXAtY29udHJvbC11c2JANGEwMDIzMDAgeworICAgICAgICBjb21wYXRpYmxlID0gInRpLGNvbnRyb2wtcGh5LW90Z2hzIjsKKyAgICAgICAgcmVnID0gPDB4NGEwMDIzM2MgMHg0PjsKKyAgICAgICAgcmVnLW5hbWVzID0gIm90Z2hzX2NvbnRyb2wiOworfTsKKworT01BUCBVU0IyIFBIWQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJ0aSxvbWFwLXVzYjIiCisgLSByZWcgOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZS4KKyAtICNwaHktY2VsbHM6IGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGNlbGxzIHRoYXQgc2hvdWxkIGJlIGdpdmVuIGluIHRoZQorICAgcGhhbmRsZSB3aGlsZSByZWZlcmVuY2luZyB0aGlzIHBoeS4KKyAtIGNsb2NrczogYSBsaXN0IG9mIHBoYW5kbGVzIGFuZCBjbG9jay1zcGVjaWZpZXIgcGFpcnMsIG9uZSBmb3IgZWFjaCBlbnRyeSBpbgorICAgY2xvY2stbmFtZXMuCisgLSBjbG9jay1uYW1lczogc2hvdWxkIGluY2x1ZGU6CisgICAqICJ3a3VwY2xrIiAtIHdha2V1cCBjbG9jay4KKyAgICogInJlZmNsayIgLSByZWZlcmVuY2UgY2xvY2sgKG9wdGlvbmFsKS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAtIGN0cmwtbW9kdWxlIDogcGhhbmRsZSBvZiB0aGUgY29udHJvbCBtb2R1bGUgdXNlZCBieSBQSFkgZHJpdmVyIHRvIHBvd2VyIG9uCisgICB0aGUgUEhZLgorCitUaGlzIGlzIHVzdWFsbHkgYSBzdWJub2RlIG9mIG9jcDJzY3AgdG8gd2hpY2ggaXQgaXMgY29ubmVjdGVkLgorCit1c2IycGh5QDRhMGFkMDgwIHsKKwljb21wYXRpYmxlID0gInRpLG9tYXAtdXNiMiI7CisJcmVnID0gPDB4NGEwYWQwODAgMHg1OD47CisJY3RybC1tb2R1bGUgPSA8Jm9tYXBfY29udHJvbF91c2I+OworCSNwaHktY2VsbHMgPSA8MD47CisJY2xvY2tzID0gPCZ1c2JfcGh5X2NtX2NsazMyaz4sIDwmdXNiX290Z19zc19yZWZjbGs5NjBtPjsKKwljbG9jay1uYW1lcyA9ICJ3a3VwY2xrIiwgInJlZmNsayI7Cit9OworCitUSSBQSVBFMyBQSFkKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGU6IFNob3VsZCBiZSAidGkscGh5LXVzYjMiLCAidGkscGh5LXBpcGUzLXNhdGEiIG9yCisgICAidGkscGh5LXBpcGUzLXBjaWUuICJ0aSxvbWFwLXVzYjMiIGlzIGRlcHJlY2F0ZWQuCisgLSByZWcgOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZS4KKyAtIHJlZy1uYW1lczogVGhlIG5hbWVzIG9mIHRoZSByZWdpc3RlciBhZGRyZXNzZXMgY29ycmVzcG9uZGluZyB0byB0aGUgcmVnaXN0ZXJzCisgICBmaWxsZWQgaW4gInJlZyIuCisgLSAjcGh5LWNlbGxzOiBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBjZWxscyB0aGF0IHNob3VsZCBiZSBnaXZlbiBpbiB0aGUKKyAgIHBoYW5kbGUgd2hpbGUgcmVmZXJlbmNpbmcgdGhpcyBwaHkuCisgLSBjbG9ja3M6IGEgbGlzdCBvZiBwaGFuZGxlcyBhbmQgY2xvY2stc3BlY2lmaWVyIHBhaXJzLCBvbmUgZm9yIGVhY2ggZW50cnkgaW4KKyAgIGNsb2NrLW5hbWVzLgorIC0gY2xvY2stbmFtZXM6IHNob3VsZCBpbmNsdWRlOgorICAgKiAid2t1cGNsayIgLSB3YWtldXAgY2xvY2suCisgICAqICJzeXNjbGsiIC0gc3lzdGVtIGNsb2NrLgorICAgKiAicmVmY2xrIiAtIHJlZmVyZW5jZSBjbG9jay4KKyAgICogImRwbGxfcmVmIiAtIGV4dGVybmFsIGRwbGwgcmVmIGNsaworICAgKiAiZHBsbF9yZWZfbTIiIC0gZXh0ZXJuYWwgZHBsbCByZWYgY2xrCisgICAqICJwaHktZGl2IiAtIGRpdmlkZXIgZm9yIGFwbGwKKyAgICogImRpdi1jbGsiIC0gYXBsbCBjbG9jaworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorIC0gY3RybC1tb2R1bGUgOiBwaGFuZGxlIG9mIHRoZSBjb250cm9sIG1vZHVsZSB1c2VkIGJ5IFBIWSBkcml2ZXIgdG8gcG93ZXIgb24KKyAgIHRoZSBQSFkuCisgLSBpZDogSWYgdGhlcmUgYXJlIG11bHRpcGxlIGluc3RhbmNlIG9mIHRoZSBzYW1lIHR5cGUsIGluIG9yZGVyIHRvCisgICBkaWZmZXJlbnRpYXRlIGJldHdlZW4gZWFjaCBpbnN0YW5jZSAiaWQiIGNhbiBiZSB1c2VkIChlLmcuLCBtdWx0aS1sYW5lIFBDSWUKKyAgIFBIWSkuIElmICJpZCIgaXMgbm90IHByb3ZpZGVkLCBpdCBpcyBzZXQgdG8gZGVmYXVsdCB2YWx1ZSBvZiAnMScuCisgLSBzeXNjb24tcGxscmVzZXQ6IEhhbmRsZSB0byBzeXN0ZW0gY29udHJvbCByZWdpb24gdGhhdCBjb250YWlucyB0aGUKKyAgIENUUkxfQ09SRV9TTUFfU1dfMCByZWdpc3RlciBhbmQgcmVnaXN0ZXIgb2Zmc2V0IHRvIHRoZSBDVFJMX0NPUkVfU01BX1NXXzAKKyAgIHJlZ2lzdGVyIHRoYXQgY29udGFpbnMgdGhlIFNBVEFfUExMX1NPRlRfUkVTRVQgYml0LiBPbmx5IHZhbGlkIGZvciBzYXRhX3BoeS4KKworVGhpcyBpcyB1c3VhbGx5IGEgc3Vibm9kZSBvZiBvY3Ayc2NwIHRvIHdoaWNoIGl0IGlzIGNvbm5lY3RlZC4KKwordXNiM3BoeUA0YTA4NDQwMCB7CisJY29tcGF0aWJsZSA9ICJ0aSxwaHktdXNiMyI7CisJcmVnID0gPDB4NGEwODQ0MDAgMHg4MD4sCisJICAgICAgPDB4NGEwODQ4MDAgMHg2ND4sCisJICAgICAgPDB4NGEwODRjMDAgMHg0MD47CisJcmVnLW5hbWVzID0gInBoeV9yeCIsICJwaHlfdHgiLCAicGxsX2N0cmwiOworCWN0cmwtbW9kdWxlID0gPCZvbWFwX2NvbnRyb2xfdXNiPjsKKwkjcGh5LWNlbGxzID0gPDA+OworCWNsb2NrcyA9IDwmdXNiX3BoeV9jbV9jbGszMms+LAorCQkgPCZzeXNfY2xraW4+LAorCQkgPCZ1c2Jfb3RnX3NzX3JlZmNsazk2MG0+OworCWNsb2NrLW5hbWVzID0JIndrdXBjbGsiLAorCQkJInN5c2NsayIsCisJCQkicmVmY2xrIjsKK307CisKK3NhdGFfcGh5OiBwaHlANEEwOTYwMDAgeworCWNvbXBhdGlibGUgPSAidGkscGh5LXBpcGUzLXNhdGEiOworCXJlZyA9IDwweDRBMDk2MDAwIDB4ODA+LCAvKiBwaHlfcnggKi8KKwkgICAgICA8MHg0QTA5NjQwMCAweDY0PiwgLyogcGh5X3R4ICovCisJICAgICAgPDB4NEEwOTY4MDAgMHg0MD47IC8qIHBsbF9jdHJsICovCisJcmVnLW5hbWVzID0gInBoeV9yeCIsICJwaHlfdHgiLCAicGxsX2N0cmwiOworCWN0cmwtbW9kdWxlID0gPCZvbWFwX2NvbnRyb2xfc2F0YT47CisJY2xvY2tzID0gPCZzeXNfY2xraW4xPiwgPCZzYXRhX3JlZl9jbGs+OworCWNsb2NrLW5hbWVzID0gInN5c2NsayIsICJyZWZjbGsiOworCXN5c2Nvbi1wbGxyZXNldCA9IDwmc2NtX2NvbmYgMHgzZmM+OworCSNwaHktY2VsbHMgPSA8MD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvYWJpbGlzLHRiMTB4LWlvbXV4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2FiaWxpcyx0YjEweC1pb211eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMxMTg2NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2FiaWxpcyx0YjEweC1pb211eC50eHQKQEAgLTAsMCArMSw4MCBAQAorQWJpbGlzIFN5c3RlbXMgVEIxMHggcGluIGNvbnRyb2xsZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlcXVpcmVkIHByb3BlcnRpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImFiaWxpcyx0YjEweC1pb211eCI7CistIHJlZzogc2hvdWxkIGNvbnRhaW4gdGhlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIHBpbiBjb250cm9sbGVyJ3MKKyAgcmVnaXN0ZXIgcmFuZ2UuCisKKworRnVuY3Rpb24gZGVmaW5pdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Z1bmN0aW9ucyBhcmUgZGVmaW5lZCAoYW5kIHJlZmVyZW5jZWQpIGJ5IHN1Yi1ub2RlcyBvZiB0aGUgcGluIGNvbnRyb2xsZXIuCitFdmVyeSBzdWItbm9kZSBkZWZpbmVzIGV4YWN0bHkgb25lIGZ1bmN0aW9uIChpbXBseWluZyBhIHNldCBvZiBwaW5zKS4KK0V2ZXJ5IGZ1bmN0aW9uIGlzIGFzc29jaWF0ZWQgdG8gb25lIG5hbWVkIHBpbiBncm91cCBpbnNpZGUgdGhlIHBpbiBjb250cm9sbGVyCitkcml2ZXIgYW5kIHRoZXNlIG5hbWVzIGFyZSB1c2VkIHRvIGFzc29jaWF0ZSBwaW4gZ3JvdXAgcHJlZGVmaW5pdGlvbnMgdG8gcGluCitjb250cm9sbGVyIHN1Yi1ub2Rlcy4KKworUmVxdWlyZWQgZnVuY3Rpb24gZGVmaW5pdGlvbiBzdWJub2RlIHByb3BlcnRpZXM6CisgIC0gYWJpbGlzLGZ1bmN0aW9uOiBzaG91bGQgYmUgc2V0IHRvIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbidzIHBpbiBncm91cC4KKworVGhlIGZvbGxvd2luZyBwaW4gZ3JvdXBzIGFyZSBhdmFpbGFibGU6CisgIC0gR1BJTyBwb3J0czogZ3Bpb2EsIGdwaW9iLCBncGlvYywgZ3Bpb2QsIGdwaW9lLCBncGlvZiwgZ3Bpb2csCisgICAgICAgICAgICAgICAgZ3Bpb2gsIGdwaW9pLCBncGlvaiwgZ3Bpb2ssIGdwaW9sLCBncGlvbSwgZ3Bpb24KKyAgLSBTZXJpYWwgVFMgaW5wdXQgcG9ydHM6IG1pczAsIG1pczEsIG1pczIsIG1pczMsIG1pczQsIG1pczUsIG1pczYsIG1pczcKKyAgLSBQYXJhbGxlbCBUUyBpbnB1dCBwb3J0czogbWlwMSwgbWlwMywgbWlwNSwgbWlwNworICAtIFNlcmlhbCBUUyBvdXRwdXQgcG9ydHM6IG1vczAsIG1vczEsIG1vczIsIG1vczMKKyAgLSBQYXJhbGxlbCBUUyBvdXRwdXQgcG9ydDogbW9wCisgIC0gQ0krIHBvcnQ6IGNpcGx1cworICAtIENhYmxlQ2FyZCAoTWNhcmQpIHBvcnQ6IG1jYXJkCisgIC0gU21hcnQgY2FyZCBwb3J0czogc3RjMCwgc3RjMQorICAtIFVBUlQgcG9ydHM6IHVhcnQwLCB1YXJ0MQorICAtIFNQSSBwb3J0czogc3BpMSwgc3BpMworICAtIEpUQUc6IGp0YWcKKworQWxsIG90aGVyIHBvcnRzIG9mIHRoZSBjaGlwIGFyZSBub3QgbXVsdGlwbGV4ZWQgYW5kIHRodXMgbm90IG1hbmFnZWQgYnkgdGhpcworZHJpdmVyLgorCisKK0dQSU8gcmFuZ2VzIGRlZmluaXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG5hbWVkIHBpbiBncm91cHMgb2YgR1BJTyBwb3J0cyBjYW4gYmUgdXNlZCB0byBkZWZpbmUgR1BJTyByYW5nZXMgYXMKK2V4cGxhaW5lZCBpbiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLnR4dC4KKworCitFeGFtcGxlCistLS0tLS0tCisKK2lvbXV4OiBpb211eEBGRjEwNjAxYyB7CisJY29tcGF0aWJsZSA9ICJhYmlsaXMsdGIxMHgtaW9tdXgiOworCXJlZyA9IDwweEZGMTA2MDFjIDB4ND47CisJcGN0bF9ncGlvX2E6IHBjdGwtZ3Bpby1hIHsKKwkJYWJpbGlzLGZ1bmN0aW9uID0gImdwaW9hIjsKKwl9OworCXBjdGxfdWFydDA6IHBjdGwtdWFydDAgeworCQlhYmlsaXMsZnVuY3Rpb24gPSAidWFydDAiOworCX07Cit9OwordWFydEBGRjEwMDAwMCB7CisJY29tcGF0aWJsZSA9ICJzbnBzLGR3LWFwYi11YXJ0IjsKKwlyZWcgPSA8MHhGRjEwMDAwMCAweDEwMD47CisJY2xvY2stZnJlcXVlbmN5ID0gPDE2NjY2NjY2Nj47CisJaW50ZXJydXB0cyA9IDwyNSAxPjsKKwlyZWctc2hpZnQgPSA8Mj47CisJcmVnLWlvLXdpZHRoID0gPDQ+OworCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJcGluY3RybC0wID0gPCZwY3RsX3VhcnQwPjsKK307CitncGlvYTogZ3Bpb0BGRjE0MDAwMCB7CisJY29tcGF0aWJsZSA9ICJhYmlsaXMsdGIxMHgtZ3BpbyI7CisJcmVnID0gPDB4RkYxNDAwMDAgMHgxMDAwPjsKKwlncGlvLWNvbnRyb2xsZXI7CisJI2dwaW8tY2VsbHMgPSA8Mj47CisJbmdwaW8gPSA8Mz47CisJZ3Bpby1yYW5nZXMgPSA8JmlvbXV4IDAgMD47CisJZ3Bpby1yYW5nZXMtZ3JvdXAtbmFtZXMgPSAiZ3Bpb2EiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2FsbHdpbm5lcixzdW54aS1waW5jdHJsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2FsbHdpbm5lcixzdW54aS1waW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzIxYjI2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvYWxsd2lubmVyLHN1bnhpLXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsMTA2IEBACisqIEFsbHdpbm5lciBBMVggUGluIENvbnRyb2xsZXIKKworVGhlIHBpbnMgY29udHJvbGxlZCBieSBzdW5YaSBwaW4gY29udHJvbGxlciBhcmUgb3JnYW5pemVkIGluIGJhbmtzLAorZWFjaCBiYW5rIGhhcyAzMiBwaW5zLiAgRWFjaCBwaW4gaGFzIDcgbXVsdGlwbGV4aW5nIGZ1bmN0aW9ucywgd2l0aAordGhlIGZpcnN0IHR3byBmdW5jdGlvbnMgYmVpbmcgR1BJTyBpbiBhbmQgb3V0LiBUaGUgY29uZmlndXJhdGlvbiBvbgordGhlIHBpbnMgaW5jbHVkZXMgZHJpdmUgc3RyZW5ndGggYW5kIHB1bGwtdXAuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZ3MgKGRlcGVuZGluZyBvbiB5b3UgU29DKToKKyAgImFsbHdpbm5lcixzdW40aS1hMTAtcGluY3RybCIKKyAgImFsbHdpbm5lcixzdW41aS1hMTBzLXBpbmN0cmwiCisgICJhbGx3aW5uZXIsc3VuNWktYTEzLXBpbmN0cmwiCisgICJhbGx3aW5uZXIsc3VuNmktYTMxLXBpbmN0cmwiCisgICJhbGx3aW5uZXIsc3VuNmktYTMxcy1waW5jdHJsIgorICAiYWxsd2lubmVyLHN1bjZpLWEzMS1yLXBpbmN0cmwiCisgICJhbGx3aW5uZXIsc3VuN2ktYTIwLXBpbmN0cmwiCisgICJhbGx3aW5uZXIsc3VuOGktYTIzLXBpbmN0cmwiCisgICJhbGx3aW5uZXIsc3VuOGktYTIzLXItcGluY3RybCIKKyAgImFsbHdpbm5lcixzdW44aS1hMzMtcGluY3RybCIKKyAgImFsbHdpbm5lcixzdW44aS1hODN0LXBpbmN0cmwiCisKKy0gcmVnOiBTaG91bGQgY29udGFpbiB0aGUgcmVnaXN0ZXIgcGh5c2ljYWwgYWRkcmVzcyBhbmQgbGVuZ3RoIGZvciB0aGUKKyAgcGluIGNvbnRyb2xsZXIuCisKK1BsZWFzZSByZWZlciB0byBwaW5jdHJsLWJpbmRpbmdzLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgZGV0YWlscyBvZiB0aGUKK2NvbW1vbiBwaW5jdHJsIGJpbmRpbmdzIHVzZWQgYnkgY2xpZW50IGRldmljZXMuCisKK0EgcGluY3RybCBub2RlIHNob3VsZCBjb250YWluIGF0IGxlYXN0IG9uZSBzdWJub2RlcyByZXByZXNlbnRpbmcgdGhlCitwaW5jdHJsIGdyb3VwcyBhdmFpbGFibGUgb24gdGhlIG1hY2hpbmUuIEVhY2ggc3Vibm9kZSB3aWxsIGxpc3QgdGhlCitwaW5zIGl0IG5lZWRzLCBhbmQgaG93IHRoZXkgc2hvdWxkIGJlIGNvbmZpZ3VyZWQsIHdpdGggcmVnYXJkIHRvIG11eGVyCitjb25maWd1cmF0aW9uLCBkcml2ZSBzdHJlbmd0aCBhbmQgcHVsbHVwcy4gSWYgb25lIG9mIHRoZXNlIG9wdGlvbnMgaXMKK25vdCBzZXQsIGl0cyBhY3R1YWwgdmFsdWUgd2lsbCBiZSB1bnNwZWNpZmllZC4KKworUmVxdWlyZWQgc3Vibm9kZS1wcm9wZXJ0aWVzOgorCistIGFsbHdpbm5lcixwaW5zOiBMaXN0IG9mIHN0cmluZ3MgY29udGFpbmluZyB0aGUgcGluIG5hbWUuCistIGFsbHdpbm5lcixmdW5jdGlvbjogRnVuY3Rpb24gdG8gbXV4IHRoZSBwaW5zIGxpc3RlZCBhYm92ZSB0by4KKworT3B0aW9uYWwgc3Vibm9kZS1wcm9wZXJ0aWVzOgorLSBhbGx3aW5uZXIsZHJpdmU6IEludGVnZXIuIFJlcHJlc2VudHMgdGhlIGN1cnJlbnQgc2VudCB0byB0aGUgcGluCisgICAgMDogMTAgbUEKKyAgICAxOiAyMCBtQQorICAgIDI6IDMwIG1BCisgICAgMzogNDAgbUEKKy0gYWxsd2lubmVyLHB1bGw6IEludGVnZXIuCisgICAgMDogTm8gcmVzaXN0b3IKKyAgICAxOiBQdWxsLXVwIHJlc2lzdG9yCisgICAgMjogUHVsbC1kb3duIHJlc2lzdG9yCisKK0V4YW1wbGVzOgorCitwaW86IHBpbmN0cmxAMDFjMjA4MDAgeworCWNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjVpLWExMy1waW5jdHJsIjsKKwlyZWcgPSA8MHgwMWMyMDgwMCAweDQwMD47CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47CisKKwl1YXJ0MV9waW5zX2E6IHVhcnQxQDAgeworCQlhbGx3aW5uZXIscGlucyA9ICJQRTEwIiwgIlBFMTEiOworCQlhbGx3aW5uZXIsZnVuY3Rpb24gPSAidWFydDEiOworCQlhbGx3aW5uZXIsZHJpdmUgPSA8MD47CisJCWFsbHdpbm5lcixwdWxsID0gPDA+OworCX07CisKKwl1YXJ0MV9waW5zX2I6IHVhcnQxQDEgeworCQlhbGx3aW5uZXIscGlucyA9ICJQRzMiLCAiUEc0IjsKKwkJYWxsd2lubmVyLGZ1bmN0aW9uID0gInVhcnQxIjsKKwkJYWxsd2lubmVyLGRyaXZlID0gPDA+OworCQlhbGx3aW5uZXIscHVsbCA9IDwwPjsKKwl9OworfTsKKworCitHUElPIGFuZCBpbnRlcnJ1cHQgY29udHJvbGxlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBoYXJkd2FyZSBhbHNvIGFjdHMgYXMgYSBHUElPIGNvbnRyb2xsZXIgYW5kIGFuIGludGVycnVwdAorY29udHJvbGxlci4KKworQ29uc3VtZXJzIHRoYXQgd291bGQgd2FudCB0byByZWZlciB0byBvbmUgb3IgdGhlIG90aGVyIChvciBib3RoKQorc2hvdWxkIHByb3ZpZGUgdGhyb3VnaCB0aGUgdXN1YWwgKi1ncGlvcyBhbmQgaW50ZXJydXB0cyBwcm9wZXJ0aWVzIGEKK2NlbGwgd2l0aCAzIGFyZ3VtZW50cywgZmlyc3QgdGhlIG51bWJlciBvZiB0aGUgYmFuaywgdGhlbiB0aGUgcGluCitpbnNpZGUgdGhhdCBiYW5rLCBhbmQgZmluYWxseSB0aGUgZmxhZ3MgZm9yIHRoZSBHUElPL2ludGVycnVwdHMuCisKK0V4YW1wbGU6CisKK3hpbzogZ3Bpb0AzOCB7CisJY29tcGF0aWJsZSA9ICJueHAscGNmODU3NGEiOworCXJlZyA9IDwweDM4PjsKKworCWdwaW8tY29udHJvbGxlcjsKKwkjZ3Bpby1jZWxscyA9IDwyPjsKKworCWludGVycnVwdC1wYXJlbnQgPSA8JnBpbz47CisJaW50ZXJydXB0cyA9IDw2IDAgSVJRX1RZUEVfRURHRV9GQUxMSU5HPjsKKwlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworfTsKKworcmVnX3VzYjFfdmJ1czogdXNiMS12YnVzIHsKKwljb21wYXRpYmxlID0gInJlZ3VsYXRvci1maXhlZCI7CisJcmVndWxhdG9yLW5hbWUgPSAidXNiMS12YnVzIjsKKwlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw1MDAwMDAwPjsKKwlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDw1MDAwMDAwPjsKKwlncGlvID0gPCZwaW8gNyA2IEdQSU9fQUNUSVZFX0hJR0g+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2F0bWVsLGF0OTEtcGluY3RybC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9hdG1lbCxhdDkxLXBpbmN0cmwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3YTkzZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9hdG1lbCxhdDkxLXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsMTUwIEBACisqIEF0bWVsIEFUOTEgUGlubXV4IENvbnRyb2xsZXIKKworVGhlIEFUOTEgUGlubXV4IENvbnRyb2xsZXIsIGVuYWJsZXMgdGhlIElDCit0byBzaGFyZSBvbmUgUEFEIHRvIHNldmVyYWwgZnVuY3Rpb25hbCBibG9ja3MuIFRoZSBzaGFyaW5nIGlzIGRvbmUgYnkKK211bHRpcGxleGluZyB0aGUgUEFEIGlucHV0L291dHB1dCBzaWduYWxzLiBGb3IgZWFjaCBQQUQgdGhlcmUgYXJlIHVwIHRvCis4IG11eGluZyBvcHRpb25zIChjYWxsZWQgcGVyaXBoIG1vZGVzKS4gU2luY2UgZGlmZmVyZW50IG1vZHVsZXMgcmVxdWlyZQorZGlmZmVyZW50IFBBRCBzZXR0aW5ncyAobGlrZSBwdWxsIHVwLCBrZWVwZXIsIGV0YykgdGhlIGNvbnRvbGxlciBjb250cm9scworYWxzbyB0aGUgUEFEIHNldHRpbmdzIHBhcmFtZXRlcnMuCisKK1BsZWFzZSByZWZlciB0byBwaW5jdHJsLWJpbmRpbmdzLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgZGV0YWlscyBvZiB0aGUKK2NvbW1vbiBwaW5jdHJsIGJpbmRpbmdzIHVzZWQgYnkgY2xpZW50IGRldmljZXMsIGluY2x1ZGluZyB0aGUgbWVhbmluZyBvZiB0aGUKK3BocmFzZSAicGluIGNvbmZpZ3VyYXRpb24gbm9kZSIuCisKK0F0bWVsIEFUOTEgcGluIGNvbmZpZ3VyYXRpb24gbm9kZSBpcyBhIG5vZGUgb2YgYSBncm91cCBvZiBwaW5zIHdoaWNoIGNhbiBiZQordXNlZCBmb3IgYSBzcGVjaWZpYyBkZXZpY2Ugb3IgZnVuY3Rpb24uIFRoaXMgbm9kZSByZXByZXNlbnRzIGJvdGggbXV4IGFuZCBjb25maWcKK29mIHRoZSBwaW5zIGluIHRoYXQgZ3JvdXAuIFRoZSAncGlucycgc2VsZWN0cyB0aGUgZnVuY3Rpb24gbW9kZShhbHNvIG5hbWVkIHBpbgorbW9kZSkgdGhpcyBwaW4gY2FuIHdvcmsgb24gYW5kIHRoZSAnY29uZmlnJyBjb25maWd1cmVzIHZhcmlvdXMgcGFkIHNldHRpbmdzCitzdWNoIGFzIHB1bGwtdXAsIG11bHRpIGRyaXZlLCBldGMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIGlvbXV4IGNvbnRyb2xsZXI6CistIGNvbXBhdGlibGU6ICJhdG1lbCxhdDkxcm05MjAwLXBpbmN0cmwiIG9yICJhdG1lbCxhdDkxc2FtOXg1LXBpbmN0cmwiCisJCW9yICJhdG1lbCxzYW1hNWQzLXBpbmN0cmwiCistIGF0bWVsLG11eC1tYXNrOiBhcnJheSBvZiBtYXNrIChwZXJpcGggcGVyIGJhbmspIHRvIGRlc2NyaWJlIGlmIGEgcGluIGNhbiBiZQorICBjb25maWd1cmVkIGluIHRoaXMgcGVyaXBoIG1vZGUuIEFsbCB0aGUgcGVyaXBoIGFuZCBiYW5rIG5lZWQgdG8gYmUgZGVzY3JpYmUuCisKK0hvdyB0byBjcmVhdGUgc3VjaCBhcnJheToKKworRWFjaCBjb2x1bW4gd2lsbCByZXByZXNlbnQgdGhlIHBvc3NpYmxlIHBlcmlwaGVyYWwgb2YgdGhlIHBpbmN0cmwKK0VhY2ggbGluZSB3aWxsIHJlcHJlc2VudCBhIHBpbyBiYW5rCisKK1Rha2UgYW4gZXhhbXBsZSBvbiB0aGUgOTI2MAorUGVyaXBoZXJhbDogMiAoIEEgYW5kIEIpCitCYW5rOiAzIChBLCBCIGFuZCBDKQorPT4KKworICAvKiAgICBBICAgICAgICAgQiAgICAgKi8KKyAgMHhmZmZmZmZmZiAweGZmYzAwYzNiICAvKiBwaW9BICovCisgIDB4ZmZmZmZmZmYgMHg3ZmZmM2NjZiAgLyogcGlvQiAqLworICAweGZmZmZmZmZmIDB4MDA3ZmZmZmYgIC8qIHBpb0MgKi8KKworRm9yIGVhY2ggcGVyaXBoZXJhbC9iYW5rIHdlIHdpbGwgZGVzY2liZSBpbiBhIHUzMiBpZiBhIHBpbiBjYW4gYmUKK2NvbmZpZ3VyZWQgaW4gaXQgYnkgcHV0dGluZyAxIHRvIHRoZSBwaW4gYml0ICgxIDw8IHBpbikKKworTGV0J3MgdGFrZSB0aGUgcGlvQSBvbiBwZXJpcGhlcmFsIEIKK0Zyb20gdGhlIGRhdGFzaGVldCBUYWJsZSAxMC0yLgorUGVyaXBoZXJhbCBCCitQQTAJTUNEQjAKK1BBMQlNQ0NEQgorUEEyCitQQTMJTUNEQjMKK1BBNAlNQ0RCMgorUEE1CU1DREIxCitQQTYKK1BBNworUEE4CitQQTkKK1BBMTAJRVRYMgorUEExMQlFVFgzCitQQTEyCitQQTEzCitQQTE0CitQQTE1CitQQTE2CitQQTE3CitQQTE4CitQQTE5CitQQTIwCitQQTIxCitQQTIyCUVUWEVSCitQQTIzCUVUWDIKK1BBMjQJRVRYMworUEEyNQlFUlgyCitQQTI2CUVSWDMKK1BBMjcJRVJYQ0sKK1BBMjgJRUNSUworUEEyOQlFQ09MCitQQTMwCVJYRDQKK1BBMzEJVFhENAorCis9PiAweGZmYzAwYzNiCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHBpbiBjb25maWd1cmF0aW9uIG5vZGU6CistIGF0bWVsLHBpbnM6IDQgaW50ZWdlcnMgYXJyYXksIHJlcHJlc2VudHMgYSBncm91cCBvZiBwaW5zIG11eCBhbmQgY29uZmlnCisgIHNldHRpbmcuIFRoZSBmb3JtYXQgaXMgYXRtZWwscGlucyA9IDxQSU5fQkFOSyBQSU5fQkFOS19OVU0gUEVSSVBIIENPTkZJRz4uCisgIFRoZSBQRVJJUEggMCBtZWFucyBncGlvLCBQRVJJUEggMSBpcyBwZXJpcGggQSwgUEVSSVBIIDIgaXMgcGVyaXBoIEIuLi4KKyAgUElOX0JBTksgMCBpcyBwaW9BLCBQSU5fQkFOSyAxIGlzIHBpb0IuLi4KKworQml0cyB1c2VkIGZvciBDT05GSUc6CitQVUxMX1VQCQkoMSA8PCAwKTogaW5kaWNhdGUgdGhpcyBwaW4gbmVlZHMgYSBwdWxsIHVwLgorTVVMVElEUklWRQkoMSA8PCAxKTogaW5kaWNhdGUgdGhpcyBwaW4gbmVlZHMgdG8gYmUgY29uZmlndXJlZCBhcyBtdWx0aS1kcml2ZS4KKwkJCU11bHRpLWRyaXZlIGlzIGVxdWl2YWxlbnQgdG8gb3Blbi1kcmFpbiB0eXBlIG91dHB1dC4KK0RFR0xJVENICSgxIDw8IDIpOiBpbmRpY2F0ZSB0aGlzIHBpbiBuZWVkcyBkZWdsaXRjaC4KK1BVTExfRE9XTgkoMSA8PCAzKTogaW5kaWNhdGUgdGhpcyBwaW4gbmVlZHMgYSBwdWxsIGRvd24uCitESVNfU0NITUlUCSgxIDw8IDQpOiBpbmRpY2F0ZSB0aGlzIHBpbiBuZWVkcyB0byB0aGUgZGlzYWJsZSBzY2htaXR0IHRyaWdnZXIuCitEUklWRV9TVFJFTkdUSCAoMyA8PCA1KTogaW5kaWNhdGUgdGhlIGRyaXZlIHN0cmVuZ3RoIG9mIHRoZSBwaW4gdXNpbmcgdGhlCisJCQlmb2xsb3dpbmcgdmFsdWVzOgorCQkJCTAwIC0gTm8gY2hhbmdlIChyZXNldCBzdGF0ZSB2YWx1ZSBrZXB0KQorCQkJCTAxIC0gTG93CisJCQkJMTAgLSBNZWRpdW0KKwkJCQkxMSAtIEhpZ2gKK0RFQk9VTkNFCSgxIDw8IDE2KTogaW5kaWNhdGUgdGhpcyBwaW4gbmVlZHMgZGVib3VuY2UuCitERUJPVU5DRV9WQUwJKDB4M2ZmZiA8PCAxNyk6IGRlYm91bmNlIHZhbHVlLgorCitOT1RFOgorU29tZSByZXF1aXJlbWVudHMgZm9yIHVzaW5nIGF0bWVsLGF0OTFybTkyMDAtcGluY3RybCBiaW5kaW5nOgorMS4gV2UgaGF2ZSBwaW4gZnVuY3Rpb24gbm9kZSBkZWZpbmVkIHVuZGVyIGF0OTEgY29udHJvbGxlciBub2RlIHRvIHJlcHJlc2VudAorICAgd2hhdCBwaW5tdXggZnVuY3Rpb25zIHRoaXMgU29DIHN1cHBvcnRzLgorMi4gVGhlIGRyaXZlciBjYW4gdXNlIHRoZSBmdW5jdGlvbiBub2RlJ3MgbmFtZSBhbmQgcGluIGNvbmZpZ3VyYXRpb24gbm9kZSdzCisgICBuYW1lIGRlc2NyaWJlIHRoZSBwaW4gZnVuY3Rpb24gYW5kIGdyb3VwIGhpZXJhcmNoeS4KKyAgIEZvciBleGFtcGxlLCBMaW51eCBhdDkxIHBpbmN0cmwgZHJpdmVyIHRha2VzIHRoZSBmdW5jdGlvbiBub2RlJ3MgbmFtZQorICAgYXMgdGhlIGZ1bmN0aW9uIG5hbWUgYW5kIHBpbiBjb25maWd1cmF0aW9uIG5vZGUncyBuYW1lIGFzIGdyb3VwIG5hbWUgdG8KKyAgIGNyZWF0ZSB0aGUgbWFwIHRhYmxlLgorMy4gRWFjaCBwaW4gY29uZmlndXJhdGlvbiBub2RlIHNob3VsZCBoYXZlIGEgcGhhbmRsZSwgZGV2aWNlcyBjYW4gc2V0IHBpbnMKKyAgIGNvbmZpZ3VyYXRpb25zIGJ5IHJlZmVycmluZyB0byB0aGUgcGhhbmRsZSBvZiB0aGF0IHBpbiBjb25maWd1cmF0aW9uIG5vZGUuCis0LiBUaGUgZ3BpbyBjb250cm9sbGVyIG11c3QgYmUgZGVzY3JpYmUgaW4gdGhlIHBpbmN0cmwgc2ltcGxlLWJ1cy4KKworRXhhbXBsZXM6CisKK3BpbmN0cmxAZmZmZmY0MDAgeworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDE+OworCXJhbmdlczsKKwljb21wYXRpYmxlID0gImF0bWVsLGF0OTFybTkyMDAtcGluY3RybCIsICJzaW1wbGUtYnVzIjsKKwlyZWcgPSA8MHhmZmZmZjQwMCAweDYwMD47CisKKwlhdG1lbCxtdXgtbWFzayA9IDwKKwkgICAgICAvKiAgICBBICAgICAgICAgQiAgICAgKi8KKwkgICAgICAgMHhmZmZmZmZmZiAweGZmYzAwYzNiICAvKiBwaW9BICovCisJICAgICAgIDB4ZmZmZmZmZmYgMHg3ZmZmM2NjZiAgLyogcGlvQiAqLworCSAgICAgICAweGZmZmZmZmZmIDB4MDA3ZmZmZmYgIC8qIHBpb0MgKi8KKwkgICAgICA+OworCisJLyogc2hhcmVkIHBpbmN0cmwgc2V0dGluZ3MgKi8KKwlkYmd1IHsKKwkJcGluY3RybF9kYmd1OiBkYmd1LTAgeworCQkJYXRtZWwscGlucyA9CisJCQkJPDEgMTQgMHgxIDB4MAkvKiBQQjE0IHBlcmlwaCBBICovCisJCQkJIDEgMTUgMHgxIDB4MT47CS8qIFBCMTUgcGVyaXBoIEEgd2l0aCBwdWxsdXAgKi8KKwkJfTsKKwl9OworfTsKKworZGJndTogc2VyaWFsQGZmZmZmMjAwIHsKKwljb21wYXRpYmxlID0gImF0bWVsLGF0OTFzYW05MjYwLXVzYXJ0IjsKKwlyZWcgPSA8MHhmZmZmZjIwMCAweDIwMD47CisJaW50ZXJydXB0cyA9IDwxIDQgNz47CisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfZGJndT47CisJc3RhdHVzID0gImRpc2FibGVkIjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9hdG1lbCxhdDkxLXBpbzQtcGluY3RybC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9hdG1lbCxhdDkxLXBpbzQtcGluY3RybC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFhYzc1NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2F0bWVsLGF0OTEtcGlvNC1waW5jdHJsLnR4dApAQCAtMCwwICsxLDkwIEBACisqIEF0bWVsIFBJTzQgQ29udHJvbGxlcgorCitUaGUgQXRtZWwgUElPNCBjb250cm9sbGVyIGlzIHVzZWQgdG8gc2VsZWN0IHRoZSBmdW5jdGlvbiBvZiBhIHBpbiBhbmQgdG8KK2NvbmZpZ3VyZSBpdC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImF0bWVsLHNhbWE1ZDItcGluY3RybCIuCistIHJlZzogYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIFBJTyBjb250cm9sbGVyLgorLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgb3V0cHV0cyBmcm9tIHRoZSBjb250cm9sbGVyLCBvbmUgZm9yIGVhY2ggYmFuay4KKy0gaW50ZXJydXB0LWNvbnRyb2xsZXI6IG1hcmsgdGhlIGRldmljZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyLgorLSAjaW50ZXJydXB0LWNlbGxzOiBzaG91bGQgYmUgdHdvLgorLSBncGlvLWNvbnRyb2xsZXI6IG1hcmsgdGhlIGRldmljZSBub2RlIGFzIGEgZ3BpbyBjb250cm9sbGVyLgorLSAjZ3Bpby1jZWxsczogc2hvdWxkIGJlIHR3by4KKworUGxlYXNlIHJlZmVyIHRvIC4uL2dwaW8vZ3Bpby50eHQgYW5kIC4uL2ludGVycnVwdC1jb250cm9sbGVyL2ludGVycnVwdHMudHh0IGZvcgorYSBnZW5lcmFsIGRlc2NyaXB0aW9uIG9mIEdQSU8gYW5kIGludGVycnVwdCBiaW5kaW5ncy4KKworUGxlYXNlIHJlZmVyIHRvIHBpbmN0cmwtYmluZGluZ3MudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBkZXRhaWxzIG9mIHRoZQorY29tbW9uIHBpbmN0cmwgYmluZGluZ3MgdXNlZCBieSBjbGllbnQgZGV2aWNlcy4KKworU3Vibm9kZSBmb3JtYXQKK0VhY2ggbm9kZSAob3Igc3Vibm9kZSkgd2lsbCBsaXN0IHRoZSBwaW5zIGl0IG5lZWRzIGFuZCBob3cgdG8gY29uZmlndXJlZCB0aGVzZQorcGlucy4KKworCW5vZGUgeworCQlwaW5tdXggPSA8UElOX05VTUJFUl9QSU5NVVg+OworCQlHRU5FUklDX1BJTkNPTkZJRzsKKwl9OworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBwaW5tdXg6IGludGVnZXIgYXJyYXkuIEVhY2ggaW50ZWdlciByZXByZXNlbnRzIGEgcGluIG51bWJlciBwbHVzIG11eCBhbmQKK2lvc2V0IHNldHRpbmdzLiBVc2UgdGhlIG1hY3JvcyBmcm9tIGJvb3QvZHRzLzxzb2M+LXBpbmZ1bmMuaCBmaWxlIHRvIGdldCB0aGUKK3JpZ2h0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwaW4uCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIEdFTkVSSUNfUElOQ09ORklHOiBnZW5lcmljIHBpbmNvbmZpZyBvcHRpb25zIHRvIHVzZSwgYmlhcy1kaXNhYmxlLAorYmlhcy1wdWxsLWRvd24sIGJpYXMtcHVsbC11cCwgZHJpdmUtb3Blbi1kcmFpbiwgaW5wdXQtc2NobWl0dC1lbmFibGUsCitpbnB1dC1kZWJvdW5jZSwgb3V0cHV0LWxvdywgb3V0cHV0LWhpZ2guCisKK0V4YW1wbGU6CisKKyNpbmNsdWRlIDxzYW1hNWQyLXBpbmZ1bmMuaD4KKworLi4uCit7CisJcGlvQTogcGluY3RybEBmYzAzODAwMCB7CisJCWNvbXBhdGlibGUgPSAiYXRtZWwsc2FtYTVkMi1waW5jdHJsIjsKKwkJcmVnID0gPDB4ZmMwMzgwMDAgMHg2MDA+OworCQlpbnRlcnJ1cHRzID0gPDE4IElSUV9UWVBFX0xFVkVMX0hJR0ggNz4sCisJCQkgICAgIDw2OCBJUlFfVFlQRV9MRVZFTF9ISUdIIDc+LAorCQkJICAgICA8NjkgSVJRX1RZUEVfTEVWRUxfSElHSCA3PiwKKwkJCSAgICAgPDcwIElSUV9UWVBFX0xFVkVMX0hJR0ggNz47CisJCWludGVycnVwdC1jb250cm9sbGVyOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCQlncGlvLWNvbnRyb2xsZXI7CisJCSNncGlvLWNlbGxzID0gPDI+OworCQljbG9ja3MgPSA8JnBpb0FfY2xrPjsKKworCQlwaW5jdHJsX2kyYzBfZGVmYXVsdDogaTJjMF9kZWZhdWx0IHsKKwkJCXBpbm11eCA9IDxQSU5fUEQyMV9fVFdEMD4sCisJCQkJIDxQSU5fUEQyMl9fVFdDSzA+OworCQkJYmlhcy1kaXNhYmxlOworCQl9OworCisJCXBpbmN0cmxfbGVkX2dwaW9fZGVmYXVsdDogbGVkX2dwaW9fZGVmYXVsdCB7CisJCQlwaW5tdXggPSA8UElOX1BCMD4sCisJCQkJIDxQSU5fUEI1PjsKKwkJCWJpYXMtcHVsbC11cDsKKwkJfTsKKworCQlwaW5jdHJsX3NkbW1jMV9kZWZhdWx0OiBzZG1tYzFfZGVmYXVsdCB7CisJCQljbWRfZGF0YSB7CisJCQkJcGlubXV4ID0gPFBJTl9QQTI4X19TRE1NQzFfQ01EPiwKKwkJCQkJIDxQSU5fUEExOF9fU0RNTUMxX0RBVDA+LAorCQkJCQkgPFBJTl9QQTE5X19TRE1NQzFfREFUMT4sCisJCQkJCSA8UElOX1BBMjBfX1NETU1DMV9EQVQyPiwKKwkJCQkJIDxQSU5fUEEyMV9fU0RNTUMxX0RBVDM+OworCQkJCWJpYXMtcHVsbC11cDsKKwkJCX07CisKKwkJCWNrX2NkIHsKKwkJCQlwaW5tdXggPSA8UElOX1BBMjJfX1NETU1DMV9DSz4sCisJCQkJCSA8UElOX1BBMzBfX1NETU1DMV9DRD47CisJCQkJYmlhcy1kaXNhYmxlOworCQkJfTsKKwkJfTsKKwkJLi4uCisJfTsKK307CisuLi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2JlcmxpbixwaW5jdHJsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2JlcmxpbixwaW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGZhMjhjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvYmVybGluLHBpbmN0cmwudHh0CkBAIC0wLDAgKzEsNDYgQEAKKyogUGluLWNvbnRyb2xsZXIgZHJpdmVyIGZvciB0aGUgTWFydmVsbCBCZXJsaW4gU29DcworCitQaW4gY29udHJvbCByZWdpc3RlcnMgYXJlIHBhcnQgb2YgYm90aCBjaGlwIGNvbnRyb2xsZXIgYW5kIHN5c3RlbQorY29udHJvbGxlciByZWdpc3RlciBzZXRzLiBQaW4gY29udHJvbGxlciBub2RlcyBzaG91bGQgYmUgYSBzdWItbm9kZSBvZgorZWl0aGVyIHRoZSBjaGlwIGNvbnRyb2xsZXIgb3Igc3lzdGVtIGNvbnRyb2xsZXIgbm9kZS4gVGhlIHBpbnMKK2NvbnRyb2xsZWQgYXJlIG9yZ2FuaXplZCBpbiBncm91cHMsIHNvIG5vIGFjdHVhbCBwaW4gaW5mb3JtYXRpb24gaXMKK25lZWRlZC4KKworQSBwaW4tY29udHJvbGxlciBub2RlIHNob3VsZCBjb250YWluIHN1Ym5vZGVzIHJlcHJlc2VudGluZyB0aGUgcGluIGdyb3VwCitjb25maWd1cmF0aW9ucywgb25lIHBlciBmdW5jdGlvbi4gRWFjaCBzdWJub2RlIGhhcyB0aGUgZ3JvdXAgbmFtZSBhbmQKK3RoZSBtdXhpbmcgZnVuY3Rpb24gdXNlZC4KKworQmUgYXdhcmUgdGhlIE1hcnZlbGwgQmVybGluIGRhdGFzaGVldHMgdXNlIHRoZSBrZXl3b3JkICdtb2RlJyBmb3Igd2hhdAoraXMgY2FsbGVkIGEgJ2Z1bmN0aW9uJyBpbiB0aGUgcGluLWNvbnRyb2xsZXIgc3Vic3lzdGVtLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mOgorCSJtYXJ2ZWxsLGJlcmxpbjItc29jLXBpbmN0cmwiLAorCSJtYXJ2ZWxsLGJlcmxpbjItc3lzdGVtLXBpbmN0cmwiLAorCSJtYXJ2ZWxsLGJlcmxpbjJjZC1zb2MtcGluY3RybCIsCisJIm1hcnZlbGwsYmVybGluMmNkLXN5c3RlbS1waW5jdHJsIiwKKwkibWFydmVsbCxiZXJsaW4ycS1zb2MtcGluY3RybCIsCisJIm1hcnZlbGwsYmVybGluMnEtc3lzdGVtLXBpbmN0cmwiLAorCSJtYXJ2ZWxsLGJlcmxpbjRjdC1hdmlvLXBpbmN0cmwiLAorCSJtYXJ2ZWxsLGJlcmxpbjRjdC1zb2MtcGluY3RybCIsCisJIm1hcnZlbGwsYmVybGluNGN0LXN5c3RlbS1waW5jdHJsIgorCitSZXF1aXJlZCBzdWJub2RlLXByb3BlcnRpZXM6CistIGdyb3VwczogYSBsaXN0IG9mIHN0cmluZ3MgZGVzY3JpYmluZyB0aGUgZ3JvdXAgbmFtZXMuCistIGZ1bmN0aW9uOiBhIHN0cmluZyBkZXNjcmliaW5nIHRoZSBmdW5jdGlvbiB1c2VkIHRvIG11eCB0aGUgZ3JvdXBzLgorCitFeGFtcGxlOgorCitzeXNfcGluY3RybDogcGluLWNvbnRyb2xsZXIgeworCWNvbXBhdGlibGUgPSAibWFydmVsbCxiZXJsaW4ycS1zeXN0ZW0tcGluY3RybCI7CisKKwl1YXJ0MF9wbXV4OiB1YXJ0MC1wbXV4IHsKKwkJZ3JvdXBzID0gIkdTTTEyIjsKKwkJZnVuY3Rpb24gPSAidWFydDAiOworCX07Cit9OworCismdWFydDAgeworCXBpbmN0cmwtMCA9IDwmdWFydDBfcG11eD47CisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9icmNtLGJjbTExMzUxLXBpbmN0cmwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvYnJjbSxiY20xMTM1MS1waW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWFhZTMyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvYnJjbSxiY20xMTM1MS1waW5jdHJsLnR4dApAQCAtMCwwICsxLDQ2MSBAQAorQnJvYWRjb20gQkNNMjgxeHggUGluIENvbnRyb2xsZXIKKworVGhpcyBpcyBhIHBpbiBjb250cm9sbGVyIGZvciB0aGUgQnJvYWRjb20gQkNNMjgxeHggU29DIGZhbWlseSwgd2hpY2ggaW5jbHVkZXMKK0JDTTExMTMwLCBCQ00xMTE0MCwgQkNNMTEzNTEsIEJDTTI4MTQ1LCBhbmQgQkNNMjgxNTUgU29Dcy4KKworPT09IFBpbiBDb250cm9sbGVyIE5vZGUgPT09CisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZToJTXVzdCBiZSAiYnJjbSxiY20xMTM1MS1waW5jdHJsIgorLSByZWc6CQlCYXNlIGFkZHJlc3Mgb2YgdGhlIFBBRCBDb250cm9sbGVyIHJlZ2lzdGVyIGJsb2NrIGFuZCB0aGUgc2l6ZQorCQlvZiB0aGUgYmxvY2suCisKK0ZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGlzIHRoZSBiYXJlIG1pbmltdW0gbm9kZToKKworCXBpbmN0cmxAMzUwMDQ4MDAgeworCQljb21wYXRpYmxlID0gImJyY20sYmNtMTEzNTEtcGluY3RybCI7CisJCXJlZyA9IDwweDM1MDA0ODAwIDB4NDMwPjsKKwl9OworCitBcyBhIHBpbiBjb250cm9sbGVyIGRldmljZSwgaW4gYWRkaXRpb24gdG8gdGhlIHJlcXVpcmVkIHByb3BlcnRpZXMsIHRoaXMgbm9kZQorc2hvdWxkIGFsc28gY29udGFpbiB0aGUgcGluIGNvbmZpZ3VyYXRpb24gbm9kZXMgdGhhdCBjbGllbnQgZGV2aWNlcyByZWZlcmVuY2UsCitpZiBhbnkuCisKKz09PSBQaW4gQ29uZmlndXJhdGlvbiBOb2RlID09PQorCitFYWNoIHBpbiBjb25maWd1cmF0aW9uIG5vZGUgaXMgYSBzdWItbm9kZSBvZiB0aGUgcGluIGNvbnRyb2xsZXIgbm9kZSBhbmQgaXMgYQorY29udGFpbmVyIG9mIGFuIGFyYml0cmFyeSBudW1iZXIgb2Ygc3Vibm9kZXMsIGNhbGxlZCBwaW4gZ3JvdXAgbm9kZXMgaW4gdGhpcworZG9jdW1lbnQuCisKK1BsZWFzZSByZWZlciB0byB0aGUgcGluY3RybC1iaW5kaW5ncy50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGRldGFpbHMgb2YgdGhlCitjb21tb24gcGluY3RybCBiaW5kaW5ncyB1c2VkIGJ5IGNsaWVudCBkZXZpY2VzLCBpbmNsdWRpbmcgdGhlIGRlZmluaXRpb24gb2YgYQorInBpbiBjb25maWd1cmF0aW9uIG5vZGUiLgorCis9PT0gUGluIEdyb3VwIE5vZGUgPT09CisKK0EgcGluIGdyb3VwIG5vZGUgc3BlY2lmaWVzIHRoZSBkZXNpcmVkIHBpbiBtdXggYW5kL29yIHBpbiBjb25maWd1cmF0aW9uIGZvciBhbgorYXJiaXRyYXJ5IG51bWJlciBvZiBwaW5zLiAgVGhlIG5hbWUgb2YgdGhlIHBpbiBncm91cCBub2RlIGlzIG9wdGlvbmFsIGFuZCBub3QKK3VzZWQuCisKK0EgcGluIGdyb3VwIG5vZGUgb25seSBhZmZlY3RzIHRoZSBwcm9wZXJ0aWVzIHNwZWNpZmllZCBpbiB0aGUgbm9kZSwgYW5kIGhhcyBubworZWZmZWN0IG9uIGFueSBwcm9wZXJ0aWVzIHRoYXQgYXJlIG9taXR0ZWQuCisKK1RoZSBwaW4gZ3JvdXAgbm9kZSBhY2NlcHRzIGEgc3Vic2V0IG9mIHRoZSBnZW5lcmljIHBpbiBjb25maWcgcHJvcGVydGllcy4gRm9yCitkZXRhaWxzIGdlbmVyaWMgcGluIGNvbmZpZyBwcm9wZXJ0aWVzLCBwbGVhc2UgcmVmZXIgdG8gcGluY3RybC1iaW5kaW5ncy50eHQKK2FuZCA8aW5jbHVkZS9saW51eC9waW5jdHJsL3BpbmNvbmZpZy1nZW5lcmljLmg+LgorCitFYWNoIHBpbiBjb250cm9sbGVkIGJ5IHRoaXMgcGluIGNvbnRyb2xsZXIgYmVsb25nIHRvIG9uZSBvZiB0aHJlZSB0eXBlczoKK1N0YW5kYXJkLCBJMkMsIGFuZCBIRE1JLiAgRWFjaCB0eXBlIGFjY2VwdHMgYSBkaWZmZXJlbnQgc2V0IG9mIHBpbiBjb25maWcKK3Byb3BlcnRpZXMuICBBIGxpc3Qgb2YgcGlucyBhbmQgdGhlaXIgdHlwZXMgaXMgcHJvdmlkZWQgYmVsb3cuCisKK1JlcXVpcmVkIFByb3BlcnRpZXMgKGFwcGxpY2FibGUgdG8gYWxsIHBpbnMpOgorCistIHBpbnM6CQlNdWx0aXBsZSBzdHJpbmdzLiAgU3BlY2lmaWVzIHRoZSBuYW1lKHMpIG9mIG9uZSBvciBtb3JlIHBpbnMgdG8KKwkJYmUgY29uZmlndXJlZCBieSB0aGlzIG5vZGUuCisKK09wdGlvbmFsIFByb3BlcnRpZXMgKGZvciBzdGFuZGFyZCBwaW5zKToKKworLSBmdW5jdGlvbjoJCQlTdHJpbmcuIFNwZWNpZmllcyB0aGUgcGluIG11eCBzZWxlY3Rpb24uIFZhbHVlcworCQkJCW11c3QgYmUgb25lIG9mOiAiYWx0MSIsICJhbHQyIiwgImFsdDMiLCAiYWx0NCIKKy0gaW5wdXQtc2NobWl0dC1lbmFibGU6CQlObyBhcmd1bWVudHMuIEVuYWJsZSBzY2htaXR0LXRyaWdnZXIgbW9kZS4KKy0gaW5wdXQtc2NobWl0dC1kaXNhYmxlOglObyBhcmd1bWVudHMuIERpc2FibGUgc2NobWl0dC10cmlnZ2VyIG1vZGUuCistIGJpYXMtcHVsbC11cDoJCQlObyBhcmd1bWVudHMuIFB1bGwgdXAgb24gcGluLgorLSBiaWFzLXB1bGwtZG93bjoJCU5vIGFyZ3VtZW50cy4gUHVsbCBkb3duIG9uIHBpbi4KKy0gYmlhcy1kaXNhYmxlOgkJCU5vIGFyZ3VtZW50cy4gRGlzYWJsZSBwaW4gYmlhcy4KKy0gc2xldy1yYXRlOgkJCUludGVnZXIuIE1lYW5pbmcgZGVwZW5kcyBvbiBjb25maWd1cmVkIHBpbiBtdXg6CisJCQkJKl9TQ0wgb3IgKl9TREE6CisJCQkJCTA6IFN0YW5kYXJkKDEwMGticHMpJiBGYXN0KDQwMGticHMpIG1vZGUKKwkJCQkJMTogSGlnaHNwZWVkICgzLjRNYnBzKSBtb2RlCisJCQkJSUNfRE0gb3IgSUNfRFA6CisJCQkJCTA6IG5vcm1hbCBzbGV3IHJhdGUKKwkJCQkJMTogZmFzdCBzbGV3IHJhdGUKKwkJCQlPdGhlcndpc2U6CisJCQkJCTA6IGZhc3Qgc2xldyByYXRlCisJCQkJCTE6IG5vcm1hbCBzbGV3IHJhdGUKKy0gaW5wdXQtZW5hYmxlOgkJCU5vIGFyZ3VtZW50cy4gRW5hYmxlIGlucHV0IChkb2VzIG5vdCBhZmZlY3QKKwkJCQlvdXRwdXQuKQorLSBpbnB1dC1kaXNhYmxlOgkJTm8gYXJndW1lbnRzLiBEaXNhYmxlIGlucHV0IChkb2VzIG5vdCBhZmZlY3QKKwkJCQlvdXRwdXQuKQorLSBkcml2ZS1zdHJlbmd0aDoJCUludGVnZXIuIERyaXZlIHN0cmVuZ3RoIGluIG1BLiAgVmFsaWQgdmFsdWVzIGFyZQorCQkJCTIsIDQsIDYsIDgsIDEwLCAxMiwgMTQsIDE2IG1BLgorCitPcHRpb25hbCBQcm9wZXJ0aWVzIChmb3IgSTJDIHBpbnMpOgorCistIGZ1bmN0aW9uOgkJCVN0cmluZy4gU3BlY2lmaWVzIHRoZSBwaW4gbXV4IHNlbGVjdGlvbi4gVmFsdWVzCisJCQkJbXVzdCBiZSBvbmUgb2Y6ICJhbHQxIiwgImFsdDIiLCAiYWx0MyIsICJhbHQ0IgorLSBiaWFzLXB1bGwtdXA6CQkJSW50ZWdlci4gUHVsbCB1cCBzdHJlbmd0aCBpbiBPaG0uIFRoZXJlIGFyZSAzCisJCQkJcHVsbC11cCByZXNpc2l0b3JzICgxLjJrLCAxLjhrLCAyLjdrKSBhdmFpbGFibGUKKwkJCQlpbiBwYXJhbGxlbCBmb3IgSTJDIHBpbnMsIHNvIHRoZSB2YWxpZCB2YWx1ZXMKKwkJCQlhcmU6IDU2OCwgNzIwLCA4MzEsIDEwODAsIDEyMDAsIDE4MDAsIDI3MDAgT2htLgorLSBiaWFzLWRpc2FibGU6CQkJTm8gYXJndW1lbnRzLiBEaXNhYmxlIHBpbiBiaWFzLgorLSBzbGV3LXJhdGU6CQkJSW50ZWdlci4gTWVhbmluZyBkZXBlbmRzIG9uIGNvbmZpZ3VyZWQgcGluIG11eDoKKwkJCQkqX1NDTCBvciAqX1NEQToKKwkJCQkJMDogU3RhbmRhcmQoMTAwa2JwcykmIEZhc3QoNDAwa2JwcykgbW9kZQorCQkJCQkxOiBIaWdoc3BlZWQgKDMuNE1icHMpIG1vZGUKKwkJCQlJQ19ETSBvciBJQ19EUDoKKwkJCQkJMDogbm9ybWFsIHNsZXcgcmF0ZQorCQkJCQkxOiBmYXN0IHNsZXcgcmF0ZQorCQkJCU90aGVyd2lzZToKKwkJCQkJMDogZmFzdCBzbGV3IHJhdGUKKwkJCQkJMTogbm9ybWFsIHNsZXcgcmF0ZQorLSBpbnB1dC1lbmFibGU6CQkJTm8gYXJndW1lbnRzLiBFbmFibGUgaW5wdXQgKGRvZXMgbm90IGFmZmVjdAorCQkJCW91dHB1dC4pCistIGlucHV0LWRpc2FibGU6CQlObyBhcmd1bWVudHMuIERpc2FibGUgaW5wdXQgKGRvZXMgbm90IGFmZmVjdAorCQkJCW91dHB1dC4pCisKK09wdGlvbmFsIFByb3BlcnRpZXMgKGZvciBIRE1JIHBpbnMpOgorCistIGZ1bmN0aW9uOgkJCVN0cmluZy4gU3BlY2lmaWVzIHRoZSBwaW4gbXV4IHNlbGVjdGlvbi4gVmFsdWVzCisJCQkJbXVzdCBiZSBvbmUgb2Y6ICJhbHQxIiwgImFsdDIiLCAiYWx0MyIsICJhbHQ0IgorLSBzbGV3LXJhdGU6CQkJSW50ZWdlci4gQ29udHJvbHMgc2xldyByYXRlLgorCQkJCQkwOiBTdGFuZGFyZCgxMDBrYnBzKSYgRmFzdCg0MDBrYnBzKSBtb2RlCisJCQkJCTE6IEhpZ2hzcGVlZCAoMy40TWJwcykgbW9kZQorLSBpbnB1dC1lbmFibGU6CQkJTm8gYXJndW1lbnRzLiBFbmFibGUgaW5wdXQgKGRvZXMgbm90IGFmZmVjdAorCQkJCW91dHB1dC4pCistIGlucHV0LWRpc2FibGU6CQlObyBhcmd1bWVudHMuIERpc2FibGUgaW5wdXQgKGRvZXMgbm90IGFmZmVjdAorCQkJCW91dHB1dC4pCisKK0V4YW1wbGU6CisvLyBwaW4gY29udHJvbGxlciBub2RlCitwaW5jdHJsQDM1MDA0ODAwIHsKKwljb21wYXRpYmxlID0gImJyY20sYmNtMTEzNTEtcGluY3RybCI7CisJcmVnID0gPDB4MzUwMDQ4MDAgMHg0MzA+OworCisJLy8gcGluIGNvbmZpZ3VyYXRpb24gbm9kZQorCWRldl9hX2RlZmF1bHQ6IGRldl9hX2FjdGl2ZSB7CisJCS8vZ3JvdXAgbm9kZSBkZWZpbmluZyAxIHN0YW5kYXJkIHBpbgorCQlncnBfMSB7CisJCQlwaW5zCQk9ICJzdGRfcGluMSI7CisJCQlmdW5jdGlvbgk9ICJhbHQxIjsKKwkJCWlucHV0LXNjaG1pdHQtZW5hYmxlOworCQkJYmlhcy1kaXNhYmxlOworCQkJc2xldy1yYXRlCT0gPDE+OworCQkJZHJpdmUtc3RyZW5ndGgJPSA8ND47CisJCX07CisKKwkJLy8gZ3JvdXAgbm9kZSBkZWZpbmluZyAyIEkyQyBwaW5zCisJCWdycF8yIHsKKwkJCXBpbnMJCT0gImkyY19waW4xIiwgImkyY19waW4yIjsKKwkJCWZ1bmN0aW9uCT0gImFsdDIiOworCQkJYmlhcy1wdWxsLXVwCT0gPDcyMD47CisJCQlpbnB1dC1lbmFibGU7CisJCX07CisKKwkJLy8gZ3JvdXAgbm9kZSBkZWZpbmluZyAyIEhETUkgcGlucworCQlncnBfMyB7CisJCQlwaW5zCQk9ICJoZG1pX3BpbjEiLCAiaGRtaV9waW4yIjsKKwkJCWZ1bmN0aW9uCT0gImFsdDMiOworCQkJc2xldy1yYXRlCT0gPDE+OworCQl9OworCisJCS8vIG90aGVyIHBpbiBncm91cCBub2RlcworCQkuLi4KKwl9OworCisJLy8gb3RoZXIgcGluIGNvbmZpZ3VyYXRpb24gbm9kZXMKKwkuLi4KK307CisKK0luIHRoZSBleGFtcGxlIGFib3ZlLCAiZGV2X2FfYWN0aXZlIiBpcyBhIHBpbiBjb25maWd1cmF0aW9uIG5vZGUgd2l0aCBhIG51bWJlcgorb2Ygc3ViLW5vZGVzLiAgSW4gdGhlIHBpbiBncm91cCBub2RlICJncnBfMSIsIG9uZSBwaW4sICJzdGRfcGluMSIsIGlzIGRlZmluZWQgaW4KK3RoZSAicGlucyIgcHJvcGVydHkuICBUaHVzLCB0aGUgcmVtYWluaW5nIHByb3BlcnRpZXMgaW4gdGhlICJncnBfMSIgbm9kZSBhcHBsaWVzCitvbmx5IHRvIHRoaXMgcGluLCBpbmNsdWRpbmcgdGhlIGZvbGxvd2luZyBzZXR0aW5nczoKKyAtIHNldHRpbmcgcGlubXV4IHRvICJhbHQxIgorIC0gZW5hYmxpbmcgc2NobWl0dC10cmlnZ2VyIChoeXN0ZXJzaXMpIG1vZGUKKyAtIGRpc2FibGluZyBwaW4gYmlhcworIC0gc2V0dGluZyB0aGUgc2xldy1yYXRlIHRvIDEKKyAtIHNldHRpbmcgdGhlIGRyaXZlIHN0cmVuZ3RoIHRvIDQgbUEKK05vdGUgdGhhdCBuZWl0aGVyICJpbnB1dC1lbmFibGUiIG5vciAiaW5wdXQtZGlzYWJsZSIgd2FzIHNwZWNpZmllZCAtIHRoZSBwaW5jdHJsCitzdWJzeXN0ZW0gd2lsbCB0aGVyZWZvcmUgbGVhdmUgdGhpcyBwcm9wZXJ0eSB1bmNoYW5nZWQgZnJvbSB3aGF0ZXZlciBzdGF0ZSBpdAord2FzIGluIGJlZm9yZSBhcHBseWluZyB0aGVzZSBjaGFuZ2VzLgorCitUaGUgInBpbnMiIHByb3BlcnR5IGluIHRoZSBwaW4gZ3JvdXAgbm9kZSAiZ3JwXzIiIHNwZWNpZmllcyB0d28gcGlucyAtCisiaTJjX3BpbjEiIGFuZCAiaTJjX3BpbjIiOyB0aGUgcmVtYWluaW5nIHByb3BlcnRpZXMgaW4gdGhpcyBwaW4gZ3JvdXAgbm9kZSwKK3RoZXJlZm9yZSwgYXBwbGllcyB0byBib3RoIG9mIHRoZXNlIHBpbnMuICBUaGUgcHJvcGVydGllcyBpbmNsdWRlOgorIC0gc2V0dGluZyBwaW5tdXggdG8gImFsdDIiCisgLSBzZXR0aW5nIHB1bGwtdXAgcmVzaXN0YW5jZSB0byA3MjAgT2htIChpZS4gZW5hYmxpbmcgMS4yayBhbmQgMS44ayByZXNpc3RvcnMKKyAgIGluIHBhcmFsbGVsKQorIC0gZW5hYmxpbmcgYm90aCBwaW5zJyBpbnB1dAorInNsZXctcmF0ZSIgaXMgbm90IHNwZWNpZmllZCBpbiB0aGlzIHBpbiBncm91cCBub2RlLCBzbyB0aGUgc2xldy1yYXRlIGZvciB0aGVzZQorcGlucyBhcmUgbGVmdCBhcy1pcy4KKworRmluYWxseSwgImdycF8zIiBkZWZpbmVzIHR3byBIRE1JIHBpbnMuICBUaGUgZm9sbG93aW5nIHByb3BlcnRpZXMgYXJlIGFwcGxpZWQgdG8KK2JvdGggcGluczoKKyAtIHNldHRpbmcgcGlubXV4IHRvICJhbHQzIgorIC0gc2V0dGluZyBzbGV3LXJhdGUgdG8gMTsgZm9yIEhETUkgcGlucywgdGhpcyBjb3JyZXNwb25kcyB0byB0aGUgMy40IE1icHMKKyAgIEhpZ2hzcGVlZCBtb2RlCitUaGUgaW5wdXQgaXMgbmVpdGhlciBlbmFibGVkIG9yIGRpc2FibGVkLCBhbmQgaXMgbGVmdCB1bnRvdWNoZWQuCisKKz09PSBQaW4gTmFtZXMgYW5kIFR5cGUgPT09CisKK1RoZSBmb2xsb3dpbmcgYXJlIHZhbGlkIHBpbiBuYW1lcyBhbmQgdGhlaXIgcGluIHR5cGVzOgorCisJImFkY3N5bmMiLAkJU3RhbmRhcmQKKwkiYmF0X3JtIiwJCVN0YW5kYXJkCisJImJzYzFfc2NsIiwJCUkyQworCSJic2MxX3NkYSIsCQlJMkMKKwkiYnNjMl9zY2wiLAkJSTJDCisJImJzYzJfc2RhIiwJCUkyQworCSJjbGFzc2dwd3IiLAkJU3RhbmRhcmQKKwkiY2xrX2N4OCIsCQlTdGFuZGFyZAorCSJjbGtvdXRfMCIsCQlTdGFuZGFyZAorCSJjbGtvdXRfMSIsCQlTdGFuZGFyZAorCSJjbGtvdXRfMiIsCQlTdGFuZGFyZAorCSJjbGtvdXRfMyIsCQlTdGFuZGFyZAorCSJjbGtyZXFfaW5fMCIsCQlTdGFuZGFyZAorCSJjbGtyZXFfaW5fMSIsCQlTdGFuZGFyZAorCSJjd3Nfc3lzX3JlcTEiLAkJU3RhbmRhcmQKKwkiY3dzX3N5c19yZXEyIiwJCVN0YW5kYXJkCisJImN3c19zeXNfcmVxMyIsCQlTdGFuZGFyZAorCSJkaWdtaWMxX2NsayIsCQlTdGFuZGFyZAorCSJkaWdtaWMxX2RxIiwJCVN0YW5kYXJkCisJImRpZ21pYzJfY2xrIiwJCVN0YW5kYXJkCisJImRpZ21pYzJfZHEiLAkJU3RhbmRhcmQKKwkiZ3BlbjEzIiwJCVN0YW5kYXJkCisJImdwZW4xNCIsCQlTdGFuZGFyZAorCSJncGVuMTUiLAkJU3RhbmRhcmQKKwkiZ3BpbzAwIiwJCVN0YW5kYXJkCisJImdwaW8wMSIsCQlTdGFuZGFyZAorCSJncGlvMDIiLAkJU3RhbmRhcmQKKwkiZ3BpbzAzIiwJCVN0YW5kYXJkCisJImdwaW8wNCIsCQlTdGFuZGFyZAorCSJncGlvMDUiLAkJU3RhbmRhcmQKKwkiZ3BpbzA2IiwJCVN0YW5kYXJkCisJImdwaW8wNyIsCQlTdGFuZGFyZAorCSJncGlvMDgiLAkJU3RhbmRhcmQKKwkiZ3BpbzA5IiwJCVN0YW5kYXJkCisJImdwaW8xMCIsCQlTdGFuZGFyZAorCSJncGlvMTEiLAkJU3RhbmRhcmQKKwkiZ3BpbzEyIiwJCVN0YW5kYXJkCisJImdwaW8xMyIsCQlTdGFuZGFyZAorCSJncGlvMTQiLAkJU3RhbmRhcmQKKwkiZ3BzX3BhYmxhbmsiLAkJU3RhbmRhcmQKKwkiZ3BzX3RtYXJrIiwJCVN0YW5kYXJkCisJImhkbWlfc2NsIiwJCUhETUkKKwkiaGRtaV9zZGEiLAkJSERNSQorCSJpY19kbSIsCQlTdGFuZGFyZAorCSJpY19kcCIsCQlTdGFuZGFyZAorCSJrcF9jb2xfaXBfMCIsCQlTdGFuZGFyZAorCSJrcF9jb2xfaXBfMSIsCQlTdGFuZGFyZAorCSJrcF9jb2xfaXBfMiIsCQlTdGFuZGFyZAorCSJrcF9jb2xfaXBfMyIsCQlTdGFuZGFyZAorCSJrcF9yb3dfb3BfMCIsCQlTdGFuZGFyZAorCSJrcF9yb3dfb3BfMSIsCQlTdGFuZGFyZAorCSJrcF9yb3dfb3BfMiIsCQlTdGFuZGFyZAorCSJrcF9yb3dfb3BfMyIsCQlTdGFuZGFyZAorCSJsY2RfYl8wIiwJCVN0YW5kYXJkCisJImxjZF9iXzEiLAkJU3RhbmRhcmQKKwkibGNkX2JfMiIsCQlTdGFuZGFyZAorCSJsY2RfYl8zIiwJCVN0YW5kYXJkCisJImxjZF9iXzQiLAkJU3RhbmRhcmQKKwkibGNkX2JfNSIsCQlTdGFuZGFyZAorCSJsY2RfYl82IiwJCVN0YW5kYXJkCisJImxjZF9iXzciLAkJU3RhbmRhcmQKKwkibGNkX2dfMCIsCQlTdGFuZGFyZAorCSJsY2RfZ18xIiwJCVN0YW5kYXJkCisJImxjZF9nXzIiLAkJU3RhbmRhcmQKKwkibGNkX2dfMyIsCQlTdGFuZGFyZAorCSJsY2RfZ180IiwJCVN0YW5kYXJkCisJImxjZF9nXzUiLAkJU3RhbmRhcmQKKwkibGNkX2dfNiIsCQlTdGFuZGFyZAorCSJsY2RfZ183IiwJCVN0YW5kYXJkCisJImxjZF9oc3luYyIsCQlTdGFuZGFyZAorCSJsY2Rfb2UiLAkJU3RhbmRhcmQKKwkibGNkX3BjbGsiLAkJU3RhbmRhcmQKKwkibGNkX3JfMCIsCQlTdGFuZGFyZAorCSJsY2Rfcl8xIiwJCVN0YW5kYXJkCisJImxjZF9yXzIiLAkJU3RhbmRhcmQKKwkibGNkX3JfMyIsCQlTdGFuZGFyZAorCSJsY2Rfcl80IiwJCVN0YW5kYXJkCisJImxjZF9yXzUiLAkJU3RhbmRhcmQKKwkibGNkX3JfNiIsCQlTdGFuZGFyZAorCSJsY2Rfcl83IiwJCVN0YW5kYXJkCisJImxjZF92c3luYyIsCQlTdGFuZGFyZAorCSJtZG1ncGlvMCIsCQlTdGFuZGFyZAorCSJtZG1ncGlvMSIsCQlTdGFuZGFyZAorCSJtZG1ncGlvMiIsCQlTdGFuZGFyZAorCSJtZG1ncGlvMyIsCQlTdGFuZGFyZAorCSJtZG1ncGlvNCIsCQlTdGFuZGFyZAorCSJtZG1ncGlvNSIsCQlTdGFuZGFyZAorCSJtZG1ncGlvNiIsCQlTdGFuZGFyZAorCSJtZG1ncGlvNyIsCQlTdGFuZGFyZAorCSJtZG1ncGlvOCIsCQlTdGFuZGFyZAorCSJtcGhpX2RhdGFfMCIsCQlTdGFuZGFyZAorCSJtcGhpX2RhdGFfMSIsCQlTdGFuZGFyZAorCSJtcGhpX2RhdGFfMiIsCQlTdGFuZGFyZAorCSJtcGhpX2RhdGFfMyIsCQlTdGFuZGFyZAorCSJtcGhpX2RhdGFfNCIsCQlTdGFuZGFyZAorCSJtcGhpX2RhdGFfNSIsCQlTdGFuZGFyZAorCSJtcGhpX2RhdGFfNiIsCQlTdGFuZGFyZAorCSJtcGhpX2RhdGFfNyIsCQlTdGFuZGFyZAorCSJtcGhpX2RhdGFfOCIsCQlTdGFuZGFyZAorCSJtcGhpX2RhdGFfOSIsCQlTdGFuZGFyZAorCSJtcGhpX2RhdGFfMTAiLAkJU3RhbmRhcmQKKwkibXBoaV9kYXRhXzExIiwJCVN0YW5kYXJkCisJIm1waGlfZGF0YV8xMiIsCQlTdGFuZGFyZAorCSJtcGhpX2RhdGFfMTMiLAkJU3RhbmRhcmQKKwkibXBoaV9kYXRhXzE0IiwJCVN0YW5kYXJkCisJIm1waGlfZGF0YV8xNSIsCQlTdGFuZGFyZAorCSJtcGhpX2hhMCIsCQlTdGFuZGFyZAorCSJtcGhpX2hhdDAiLAkJU3RhbmRhcmQKKwkibXBoaV9oYXQxIiwJCVN0YW5kYXJkCisJIm1waGlfaGNlMF9uIiwJCVN0YW5kYXJkCisJIm1waGlfaGNlMV9uIiwJCVN0YW5kYXJkCisJIm1waGlfaHJkX24iLAkJU3RhbmRhcmQKKwkibXBoaV9od3JfbiIsCQlTdGFuZGFyZAorCSJtcGhpX3J1bjAiLAkJU3RhbmRhcmQKKwkibXBoaV9ydW4xIiwJCVN0YW5kYXJkCisJIm10eF9zY2FuX2NsayIsCQlTdGFuZGFyZAorCSJtdHhfc2Nhbl9kYXRhIiwJU3RhbmRhcmQKKwkibmFuZF9hZF8wIiwJCVN0YW5kYXJkCisJIm5hbmRfYWRfMSIsCQlTdGFuZGFyZAorCSJuYW5kX2FkXzIiLAkJU3RhbmRhcmQKKwkibmFuZF9hZF8zIiwJCVN0YW5kYXJkCisJIm5hbmRfYWRfNCIsCQlTdGFuZGFyZAorCSJuYW5kX2FkXzUiLAkJU3RhbmRhcmQKKwkibmFuZF9hZF82IiwJCVN0YW5kYXJkCisJIm5hbmRfYWRfNyIsCQlTdGFuZGFyZAorCSJuYW5kX2FsZSIsCQlTdGFuZGFyZAorCSJuYW5kX2Nlbl8wIiwJCVN0YW5kYXJkCisJIm5hbmRfY2VuXzEiLAkJU3RhbmRhcmQKKwkibmFuZF9jbGUiLAkJU3RhbmRhcmQKKwkibmFuZF9vZW4iLAkJU3RhbmRhcmQKKwkibmFuZF9yZHlfMCIsCQlTdGFuZGFyZAorCSJuYW5kX3JkeV8xIiwJCVN0YW5kYXJkCisJIm5hbmRfd2VuIiwJCVN0YW5kYXJkCisJIm5hbmRfd3AiLAkJU3RhbmRhcmQKKwkicGMxIiwJCQlTdGFuZGFyZAorCSJwYzIiLAkJCVN0YW5kYXJkCisJInBtdV9pbnQiLAkJU3RhbmRhcmQKKwkicG11X3NjbCIsCQlJMkMKKwkicG11X3NkYSIsCQlJMkMKKwkicmZzdDJnX210c2xvdGVuM2ciLAlTdGFuZGFyZAorCSJyZ21paV8wX3J4X2N0bCIsCVN0YW5kYXJkCisJInJnbWlpXzBfcnhjIiwJCVN0YW5kYXJkCisJInJnbWlpXzBfcnhkXzAiLAlTdGFuZGFyZAorCSJyZ21paV8wX3J4ZF8xIiwJU3RhbmRhcmQKKwkicmdtaWlfMF9yeGRfMiIsCVN0YW5kYXJkCisJInJnbWlpXzBfcnhkXzMiLAlTdGFuZGFyZAorCSJyZ21paV8wX3R4X2N0bCIsCVN0YW5kYXJkCisJInJnbWlpXzBfdHhjIiwJCVN0YW5kYXJkCisJInJnbWlpXzBfdHhkXzAiLAlTdGFuZGFyZAorCSJyZ21paV8wX3R4ZF8xIiwJU3RhbmRhcmQKKwkicmdtaWlfMF90eGRfMiIsCVN0YW5kYXJkCisJInJnbWlpXzBfdHhkXzMiLAlTdGFuZGFyZAorCSJyZ21paV8xX3J4X2N0bCIsCVN0YW5kYXJkCisJInJnbWlpXzFfcnhjIiwJCVN0YW5kYXJkCisJInJnbWlpXzFfcnhkXzAiLAlTdGFuZGFyZAorCSJyZ21paV8xX3J4ZF8xIiwJU3RhbmRhcmQKKwkicmdtaWlfMV9yeGRfMiIsCVN0YW5kYXJkCisJInJnbWlpXzFfcnhkXzMiLAlTdGFuZGFyZAorCSJyZ21paV8xX3R4X2N0bCIsCVN0YW5kYXJkCisJInJnbWlpXzFfdHhjIiwJCVN0YW5kYXJkCisJInJnbWlpXzFfdHhkXzAiLAlTdGFuZGFyZAorCSJyZ21paV8xX3R4ZF8xIiwJU3RhbmRhcmQKKwkicmdtaWlfMV90eGRfMiIsCVN0YW5kYXJkCisJInJnbWlpXzFfdHhkXzMiLAlTdGFuZGFyZAorCSJyZ21paV9ncGlvXzAiLAkJU3RhbmRhcmQKKwkicmdtaWlfZ3Bpb18xIiwJCVN0YW5kYXJkCisJInJnbWlpX2dwaW9fMiIsCQlTdGFuZGFyZAorCSJyZ21paV9ncGlvXzMiLAkJU3RhbmRhcmQKKwkicnR4ZGF0YTJnX3R4ZGF0YTNnMSIsCVN0YW5kYXJkCisJInJ0eGVuMmdfdHhkYXRhM2cyIiwJU3RhbmRhcmQKKwkicnhkYXRhM2cwIiwJCVN0YW5kYXJkCisJInJ4ZGF0YTNnMSIsCQlTdGFuZGFyZAorCSJyeGRhdGEzZzIiLAkJU3RhbmRhcmQKKwkic2RpbzFfY2xrIiwJCVN0YW5kYXJkCisJInNkaW8xX2NtZCIsCQlTdGFuZGFyZAorCSJzZGlvMV9kYXRhXzAiLAkJU3RhbmRhcmQKKwkic2RpbzFfZGF0YV8xIiwJCVN0YW5kYXJkCisJInNkaW8xX2RhdGFfMiIsCQlTdGFuZGFyZAorCSJzZGlvMV9kYXRhXzMiLAkJU3RhbmRhcmQKKwkic2RpbzRfY2xrIiwJCVN0YW5kYXJkCisJInNkaW80X2NtZCIsCQlTdGFuZGFyZAorCSJzZGlvNF9kYXRhXzAiLAkJU3RhbmRhcmQKKwkic2RpbzRfZGF0YV8xIiwJCVN0YW5kYXJkCisJInNkaW80X2RhdGFfMiIsCQlTdGFuZGFyZAorCSJzZGlvNF9kYXRhXzMiLAkJU3RhbmRhcmQKKwkic2ltX2NsayIsCQlTdGFuZGFyZAorCSJzaW1fZGF0YSIsCQlTdGFuZGFyZAorCSJzaW1fZGV0IiwJCVN0YW5kYXJkCisJInNpbV9yZXNldG4iLAkJU3RhbmRhcmQKKwkic2ltMl9jbGsiLAkJU3RhbmRhcmQKKwkic2ltMl9kYXRhIiwJCVN0YW5kYXJkCisJInNpbTJfZGV0IiwJCVN0YW5kYXJkCisJInNpbTJfcmVzZXRuIiwJCVN0YW5kYXJkCisJInNyaV9jIiwJCVN0YW5kYXJkCisJInNyaV9kIiwJCVN0YW5kYXJkCisJInNyaV9lIiwJCVN0YW5kYXJkCisJInNzcF9leHRjbGsiLAkJU3RhbmRhcmQKKwkic3NwMF9jbGsiLAkJU3RhbmRhcmQKKwkic3NwMF9mcyIsCQlTdGFuZGFyZAorCSJzc3AwX3J4ZCIsCQlTdGFuZGFyZAorCSJzc3AwX3R4ZCIsCQlTdGFuZGFyZAorCSJzc3AyX2NsayIsCQlTdGFuZGFyZAorCSJzc3AyX2ZzXzAiLAkJU3RhbmRhcmQKKwkic3NwMl9mc18xIiwJCVN0YW5kYXJkCisJInNzcDJfZnNfMiIsCQlTdGFuZGFyZAorCSJzc3AyX2ZzXzMiLAkJU3RhbmRhcmQKKwkic3NwMl9yeGRfMCIsCQlTdGFuZGFyZAorCSJzc3AyX3J4ZF8xIiwJCVN0YW5kYXJkCisJInNzcDJfdHhkXzAiLAkJU3RhbmRhcmQKKwkic3NwMl90eGRfMSIsCQlTdGFuZGFyZAorCSJzc3AzX2NsayIsCQlTdGFuZGFyZAorCSJzc3AzX2ZzIiwJCVN0YW5kYXJkCisJInNzcDNfcnhkIiwJCVN0YW5kYXJkCisJInNzcDNfdHhkIiwJCVN0YW5kYXJkCisJInNzcDRfY2xrIiwJCVN0YW5kYXJkCisJInNzcDRfZnMiLAkJU3RhbmRhcmQKKwkic3NwNF9yeGQiLAkJU3RhbmRhcmQKKwkic3NwNF90eGQiLAkJU3RhbmRhcmQKKwkic3NwNV9jbGsiLAkJU3RhbmRhcmQKKwkic3NwNV9mcyIsCQlTdGFuZGFyZAorCSJzc3A1X3J4ZCIsCQlTdGFuZGFyZAorCSJzc3A1X3R4ZCIsCQlTdGFuZGFyZAorCSJzc3A2X2NsayIsCQlTdGFuZGFyZAorCSJzc3A2X2ZzIiwJCVN0YW5kYXJkCisJInNzcDZfcnhkIiwJCVN0YW5kYXJkCisJInNzcDZfdHhkIiwJCVN0YW5kYXJkCisJInN0YXRfMSIsCQlTdGFuZGFyZAorCSJzdGF0XzIiLAkJU3RhbmRhcmQKKwkic3lzY2xrZW4iLAkJU3RhbmRhcmQKKwkidHJhY2VjbGsiLAkJU3RhbmRhcmQKKwkidHJhY2VkdDAwIiwJCVN0YW5kYXJkCisJInRyYWNlZHQwMSIsCQlTdGFuZGFyZAorCSJ0cmFjZWR0MDIiLAkJU3RhbmRhcmQKKwkidHJhY2VkdDAzIiwJCVN0YW5kYXJkCisJInRyYWNlZHQwNCIsCQlTdGFuZGFyZAorCSJ0cmFjZWR0MDUiLAkJU3RhbmRhcmQKKwkidHJhY2VkdDA2IiwJCVN0YW5kYXJkCisJInRyYWNlZHQwNyIsCQlTdGFuZGFyZAorCSJ0cmFjZWR0MDgiLAkJU3RhbmRhcmQKKwkidHJhY2VkdDA5IiwJCVN0YW5kYXJkCisJInRyYWNlZHQxMCIsCQlTdGFuZGFyZAorCSJ0cmFjZWR0MTEiLAkJU3RhbmRhcmQKKwkidHJhY2VkdDEyIiwJCVN0YW5kYXJkCisJInRyYWNlZHQxMyIsCQlTdGFuZGFyZAorCSJ0cmFjZWR0MTQiLAkJU3RhbmRhcmQKKwkidHJhY2VkdDE1IiwJCVN0YW5kYXJkCisJInR4ZGF0YTNnMCIsCQlTdGFuZGFyZAorCSJ0eHB3cmluZCIsCQlTdGFuZGFyZAorCSJ1YXJ0YjFfdWN0cyIsCQlTdGFuZGFyZAorCSJ1YXJ0YjFfdXJ0cyIsCQlTdGFuZGFyZAorCSJ1YXJ0YjFfdXJ4ZCIsCQlTdGFuZGFyZAorCSJ1YXJ0YjFfdXR4ZCIsCQlTdGFuZGFyZAorCSJ1YXJ0YjJfdXJ4ZCIsCQlTdGFuZGFyZAorCSJ1YXJ0YjJfdXR4ZCIsCQlTdGFuZGFyZAorCSJ1YXJ0YjNfdWN0cyIsCQlTdGFuZGFyZAorCSJ1YXJ0YjNfdXJ0cyIsCQlTdGFuZGFyZAorCSJ1YXJ0YjNfdXJ4ZCIsCQlTdGFuZGFyZAorCSJ1YXJ0YjNfdXR4ZCIsCQlTdGFuZGFyZAorCSJ1YXJ0YjRfdWN0cyIsCQlTdGFuZGFyZAorCSJ1YXJ0YjRfdXJ0cyIsCQlTdGFuZGFyZAorCSJ1YXJ0YjRfdXJ4ZCIsCQlTdGFuZGFyZAorCSJ1YXJ0YjRfdXR4ZCIsCQlTdGFuZGFyZAorCSJ2Y19jYW0xX3NjbCIsCQlJMkMKKwkidmNfY2FtMV9zZGEiLAkJSTJDCisJInZjX2NhbTJfc2NsIiwJCUkyQworCSJ2Y19jYW0yX3NkYSIsCQlJMkMKKwkidmNfY2FtM19zY2wiLAkJSTJDCisJInZjX2NhbTNfc2RhIiwJCUkyQwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvYnJjbSxiY20yODM1LWdwaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvYnJjbSxiY20yODM1LWdwaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1Njk4NjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9icmNtLGJjbTI4MzUtZ3Bpby50eHQKQEAgLTAsMCArMSw3NCBAQAorQnJvYWRjb20gQkNNMjgzNSBHUElPIChhbmQgcGlubXV4KSBjb250cm9sbGVyCisKK1RoZSBCQ00yODM1IEdQSU8gbW9kdWxlIGlzIGEgY29tYmluZWQgR1BJTyBjb250cm9sbGVyLCAoR1BJTykgaW50ZXJydXB0Citjb250cm9sbGVyLCBhbmQgcGlubXV4L2NvbnRyb2wgZGV2aWNlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiYnJjbSxiY20yODM1LWdwaW8iCistIHJlZzogU2hvdWxkIGNvbnRhaW4gdGhlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIEdQSU8gbW9kdWxlJ3MgcmVnaXN0ZXJzLgorLSBncGlvLWNvbnRyb2xsZXI6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIEdQSU8gY29udHJvbGxlci4KKy0gI2dwaW8tY2VsbHMgOiBTaG91bGQgYmUgdHdvLiBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgcGluIG51bWJlciBhbmQgdGhlCisgIHNlY29uZCBjZWxsIGlzIHVzZWQgdG8gc3BlY2lmeSBvcHRpb25hbCBwYXJhbWV0ZXJzOgorICAtIGJpdCAwIHNwZWNpZmllcyBwb2xhcml0eSAoMCBmb3Igbm9ybWFsLCAxIGZvciBpbnZlcnRlZCkKKy0gaW50ZXJydXB0cyA6IFRoZSBpbnRlcnJ1cHQgb3V0cHV0cyBmcm9tIHRoZSBjb250cm9sbGVyLiBPbmUgaW50ZXJydXB0IHBlcgorICBpbmRpdmlkdWFsIGJhbmsgZm9sbG93ZWQgYnkgdGhlICJhbGwgYmFua3MiIGludGVycnVwdC4KKy0gaW50ZXJydXB0LWNvbnRyb2xsZXI6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlci4KKy0gI2ludGVycnVwdC1jZWxscyA6IFNob3VsZCBiZSAyLgorICBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgR1BJTyBudW1iZXIuCisgIFRoZSBzZWNvbmQgY2VsbCBpcyB1c2VkIHRvIHNwZWNpZnkgZmxhZ3M6CisgICAgYml0c1szOjBdIHRyaWdnZXIgdHlwZSBhbmQgbGV2ZWwgZmxhZ3M6CisgICAgICAxID0gbG93LXRvLWhpZ2ggZWRnZSB0cmlnZ2VyZWQuCisgICAgICAyID0gaGlnaC10by1sb3cgZWRnZSB0cmlnZ2VyZWQuCisgICAgICA0ID0gYWN0aXZlIGhpZ2ggbGV2ZWwtc2Vuc2l0aXZlLgorICAgICAgOCA9IGFjdGl2ZSBsb3cgbGV2ZWwtc2Vuc2l0aXZlLgorICAgIFZhbGlkIGNvbWJpbmF0aW9ucyBhcmUgMSwgMiwgMywgNCwgOC4KKworUGxlYXNlIHJlZmVyIHRvIC4uL2dwaW8vZ3Bpby50eHQgZm9yIGEgZ2VuZXJhbCBkZXNjcmlwdGlvbiBvZiBHUElPIGJpbmRpbmdzLgorCitQbGVhc2UgcmVmZXIgdG8gcGluY3RybC1iaW5kaW5ncy50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGRldGFpbHMgb2YgdGhlCitjb21tb24gcGluY3RybCBiaW5kaW5ncyB1c2VkIGJ5IGNsaWVudCBkZXZpY2VzLCBpbmNsdWRpbmcgdGhlIG1lYW5pbmcgb2YgdGhlCitwaHJhc2UgInBpbiBjb25maWd1cmF0aW9uIG5vZGUiLgorCitFYWNoIHBpbiBjb25maWd1cmF0aW9uIG5vZGUgbGlzdHMgdGhlIHBpbihzKSB0byB3aGljaCBpdCBhcHBsaWVzLCBhbmQgb25lIG9yCittb3JlIG9mIHRoZSBtdXggZnVuY3Rpb24gdG8gc2VsZWN0IG9uIHRob3NlIHBpbihzKSwgYW5kIHB1bGwtdXAvZG93bgorY29uZmlndXJhdGlvbi4gRWFjaCBzdWJub2RlIG9ubHkgYWZmZWN0cyB0aG9zZSBwYXJhbWV0ZXJzIHRoYXQgYXJlIGV4cGxpY2l0bHkKK2xpc3RlZC4gSW4gb3RoZXIgd29yZHMsIGEgc3Vibm9kZSB0aGF0IGxpc3RzIG9ubHkgYSBtdXggZnVuY3Rpb24gaW1wbGllcyBubworaW5mb3JtYXRpb24gYWJvdXQgYW55IHB1bGwgY29uZmlndXJhdGlvbi4gU2ltaWxhcmx5LCBhIHN1Ym5vZGUgdGhhdCBsaXN0cyBvbmx5CithIHB1bCBwYXJhbWV0ZXIgaW1wbGllcyBubyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbXV4IGZ1bmN0aW9uLgorCitSZXF1aXJlZCBzdWJub2RlLXByb3BlcnRpZXM6CistIGJyY20scGluczogQW4gYXJyYXkgb2YgY2VsbHMuIEVhY2ggY2VsbCBjb250YWlucyB0aGUgSUQgb2YgYSBwaW4uIFZhbGlkIElEcworICBhcmUgdGhlIGludGVnZXIgR1BJTyBJRHM7IDA9PUdQSU8wLCAxPT1HUElPMSwgLi4uIDUzPT1HUElPNTMuCisKK09wdGlvbmFsIHN1Ym5vZGUtcHJvcGVydGllczoKKy0gYnJjbSxmdW5jdGlvbjogSW50ZWdlciwgY29udGFpbmluZyB0aGUgZnVuY3Rpb24gdG8gbXV4IHRvIHRoZSBwaW4ocyk6CisgIDA6IEdQSU8gaW4KKyAgMTogR1BJTyBvdXQKKyAgMjogYWx0NQorICAzOiBhbHQ0CisgIDQ6IGFsdDAKKyAgNTogYWx0MQorICA2OiBhbHQyCisgIDc6IGFsdDMKKy0gYnJjbSxwdWxsOiBJbnRlZ2VyLCByZXByZXNlbnRpbmcgdGhlIHB1bGwtZG93bi91cCB0byBhcHBseSB0byB0aGUgcGluKHMpOgorICAwOiBub25lCisgIDE6IGRvd24KKyAgMjogdXAKKworRWFjaCBvZiBicmNtLGZ1bmN0aW9uIGFuZCBicmNtLHB1bGwgbWF5IGNvbnRhaW4gZWl0aGVyIGEgc2luZ2xlIHZhbHVlIHdoaWNoCit3aWxsIGJlIGFwcGxpZWQgdG8gYWxsIHBpbnMgaW4gYnJjbSxwaW5zLCBvciAxIHZhbHVlIGZvciBlYWNoIGVudHJ5IGluCiticmNtLHBpbnMuCisKK0V4YW1wbGU6CisKKwlncGlvOiBncGlvIHsKKwkJY29tcGF0aWJsZSA9ICJicmNtLGJjbTI4MzUtZ3BpbyI7CisJCXJlZyA9IDwweDIyMDAwMDAgMHhiND47CisJCWludGVycnVwdHMgPSA8MiAxNz4sIDwyIDE5PiwgPDIgMTg+LCA8MiAyMD47CisKKwkJZ3Bpby1jb250cm9sbGVyOworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvYnJjbSxjeWdudXMtZ3Bpby50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9icmNtLGN5Z251cy1ncGlvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjU4OWZiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvYnJjbSxjeWdudXMtZ3Bpby50eHQKQEAgLTAsMCArMSwxMDQgQEAKK0Jyb2FkY29tIEN5Z251cyBHUElPL1BJTkNPTkYgQ29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6CisgICAgTXVzdCBiZSAiYnJjbSxjeWdudXMtY2NtLWdwaW8iLCAiYnJjbSxjeWdudXMtYXNpdS1ncGlvIiwKKyAgICAiYnJjbSxjeWdudXMtY3JtdS1ncGlvIiBvciAiYnJjbSxpcHJvYy1ncGlvIgorCistIHJlZzoKKyAgICBEZWZpbmUgdGhlIGJhc2UgYW5kIHJhbmdlIG9mIHRoZSBJL08gYWRkcmVzcyBzcGFjZSB0aGF0IGNvbnRhaW5zIHRoZSBDeWdudXMKK0dQSU8vUElOQ09ORiBjb250cm9sbGVyIHJlZ2lzdGVycworCistICNncGlvLWNlbGxzOgorICAgIE11c3QgYmUgdHdvLiBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgR1BJTyBwaW4gbnVtYmVyICh3aXRoaW4gdGhlCitjb250cm9sbGVyJ3MgcGluIHNwYWNlKSBhbmQgdGhlIHNlY29uZCBjZWxsIGlzIHVzZWQgZm9yIHRoZSBmb2xsb3dpbmc6CisgICAgYml0WzBdOiBwb2xhcml0eSAoMCBmb3IgYWN0aXZlIGhpZ2ggYW5kIDEgZm9yIGFjdGl2ZSBsb3cpCisKKy0gZ3Bpby1jb250cm9sbGVyOgorICAgIFNwZWNpZmllcyB0aGF0IHRoZSBub2RlIGlzIGEgR1BJTyBjb250cm9sbGVyCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gaW50ZXJydXB0czoKKyAgICBJbnRlcnJ1cHQgSUQKKworLSBpbnRlcnJ1cHQtY29udHJvbGxlcjoKKyAgICBTcGVjaWZpZXMgdGhhdCB0aGUgbm9kZSBpcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlcgorCistIGdwaW8tcmFuZ2VzOgorICAgIFNwZWNpZmllcyB0aGUgbWFwcGluZyBiZXR3ZWVuIGdwaW8gY29udHJvbGxlciBhbmQgcGluLWNvbnRyb2xsZXJzIHBpbnMuCisgICAgVGhpcyByZXF1aXJlcyA0IGZpZWxkcyBpbiBjZWxscyBkZWZpbmVkIGFzIC0KKyAgICAxLiBQaGFuZGxlIG9mIHBpbi1jb250cm9sbGVyLgorICAgIDIuIEdQSU8gYmFzZSBwaW4gb2Zmc2V0LgorICAgIDMgIFBpbi1jb250cm9sIGJhc2UgcGluIG9mZnNldC4KKyAgICA0LiBudW1iZXIgb2YgZ3BpbyBwaW5zIHdoaWNoIGFyZSBsaW5lYXJseSBtYXBwZWQgZnJvbSBwaW4gYmFzZS4KKworU3VwcG9ydGVkIGdlbmVyaWMgUElOQ09ORiBwcm9wZXJ0aWVzIGluIGNoaWxkIG5vZGVzOgorCistIHBpbnM6CisgICAgVGhlIGxpc3Qgb2YgcGlucyAod2l0aGluIHRoZSBjb250cm9sbGVyJ3Mgb3duIHBpbiBzcGFjZSkgdGhhdCBwcm9wZXJ0aWVzCitpbiB0aGUgbm9kZSBhcHBseSB0by4gUGluIG5hbWVzIGFyZSAiZ3Bpby08cGluPiIKKworLSBiaWFzLWRpc2FibGU6CisgICAgRGlzYWJsZSBwaW4gYmlhcworCistIGJpYXMtcHVsbC11cDoKKyAgICBFbmFibGUgaW50ZXJuYWwgcHVsbCB1cCByZXNpc3RvcgorCistIGJpYXMtcHVsbC1kb3duOgorICAgIEVuYWJsZSBpbnRlcm5hbCBwdWxsIGRvd24gcmVzaXN0b3IKKworLSBkcml2ZS1zdHJlbmd0aDoKKyAgICBWYWxpZCBkcml2ZSBzdHJlbmd0aCB2YWx1ZXMgaW5jbHVkZSAyLCA0LCA2LCA4LCAxMCwgMTIsIDE0LCAxNiAobUEpCisKK0V4YW1wbGU6CisJZ3Bpb19jY206IGdwaW9AMTgwMGEwMDAgeworCQljb21wYXRpYmxlID0gImJyY20sY3lnbnVzLWNjbS1ncGlvIjsKKwkJcmVnID0gPDB4MTgwMGEwMDAgMHg1MD4sCisJCSAgICAgIDwweDAzMDFkMTY0IDB4MjA+OworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJZ3Bpby1jb250cm9sbGVyOworCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgODQgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWludGVycnVwdC1jb250cm9sbGVyOworCisJCXRvdWNoX3BpbnM6IHRvdWNoX3BpbnMgeworCQkJcHdyOiBwd3IgeworCQkJCXBpbnMgPSAiZ3Bpby0wIjsKKwkJCQlkcml2ZS1zdHJlbmd0aCA9IDwxNj47CisJCQl9OworCisJCQlldmVudDogZXZlbnQgeworCQkJCXBpbnMgPSAiZ3Bpby0xIjsKKwkJCQliaWFzLXB1bGwtdXA7CisJCQl9OworCQl9OworCX07CisKKwlncGlvX2FzaXU6IGdwaW9AMTgwYTUwMDAgeworCQljb21wYXRpYmxlID0gImJyY20sY3lnbnVzLWFzaXUtZ3BpbyI7CisJCXJlZyA9IDwweDE4MGE1MDAwIDB4NjY4PjsKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCWdwaW8tY29udHJvbGxlcjsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDE3NCBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCWdwaW8tcmFuZ2VzID0gPCZwaW5jdHJsIDAgNDIgMT4sCisJCQkJPCZwaW5jdHJsIDEgNDQgMz47CisJfTsKKworCS8qCisJICogVG91Y2hzY3JlZW4gdGhhdCB1c2VzIHRoZSBDQ00gR1BJTyAwIGFuZCAxCisJICovCisJdHNjIHsKKwkJLi4uCisJCS4uLgorCQlncGlvLXB3ciA9IDwmZ3Bpb19jY20gMCAwPjsKKwkJZ3Bpby1ldmVudCA9IDwmZ3Bpb19jY20gMSAwPjsKKwl9OworCisJLyogQmx1ZXRvb3RoIHRoYXQgdXNlcyB0aGUgQVNJVSBHUElPIDUsIHdpdGggcG9sYXJpdHkgaW52ZXJ0ZWQgKi8KKwlibHVldG9vdGggeworCQkuLi4KKwkJLi4uCisJCWJjbSxyZmtpbGwtYmFuay1zZWwgPSA8JmdwaW9fYXNpdSA1IDE+CisJfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvYnJjbSxjeWdudXMtcGlubXV4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2JyY20sY3lnbnVzLXBpbm11eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYwMGQ1YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2JyY20sY3lnbnVzLXBpbm11eC50eHQKQEAgLTAsMCArMSwxMzIgQEAKK0Jyb2FkY29tIEN5Z251cyBJT01VWCBDb250cm9sbGVyCisKK1RoZSBDeWdudXMgSU9NVVggY29udHJvbGxlciBzdXBwb3J0cyBncm91cCBiYXNlZCBtdXggY29uZmlndXJhdGlvbi4gSW4KK2FkZGl0aW9uLCBjZXJ0YWluIHBpbnMgY2FuIGJlIG11eGVkIHRvIEdQSU8gZnVuY3Rpb24gaW5kaXZpZHVhbGx5LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6CisgICAgTXVzdCBiZSAiYnJjbSxjeWdudXMtcGlubXV4IgorCistIHJlZzoKKyAgICBEZWZpbmUgdGhlIGJhc2UgYW5kIHJhbmdlIG9mIHRoZSBJL08gYWRkcmVzcyBzcGFjZSB0aGF0IGNvbnRhaW5zIHRoZSBDeWdudXMKK0lPTVVYIHJlZ2lzdGVycworCitQcm9wZXJ0aWVzIGluIHN1Ym5vZGVzOgorCistIGZ1bmN0aW9uOgorICAgIFRoZSBtdXggZnVuY3Rpb24gdG8gc2VsZWN0CisKKy0gZ3JvdXBzOgorICAgIFRoZSBsaXN0IG9mIGdyb3VwcyB0byBzZWxlY3Qgd2l0aCBhIGdpdmVuIGZ1bmN0aW9uCisKK0ZvciBtb3JlIGRldGFpbHMsIHJlZmVyIHRvCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9waW5jdHJsLWJpbmRpbmdzLnR4dAorCitGb3IgZXhhbXBsZToKKworCXBpbm11eDogcGlubXV4QDB4MDMwMWQwYzggeworCQljb21wYXRpYmxlID0gImJyY20sY3lnbnVzLXBpbm11eCI7CisJCXJlZyA9IDwweDAzMDFkMGM4IDB4MWIwPjsKKworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JmkyczBfZGVmYXVsdD47CisKKwkJaTJzMF9kZWZhdWx0OiBpMnMwX2RlZmF1bHQgeworCQkJbXV4IHsKKwkJCQlmdW5jdGlvbiA9ICJpMnMwIjsKKwkJCQlncm91cHMgPSAiaTJzMF8wX2dycCIsICJpMnMwXzFfZ3JwIjsKKwkJCX07CisJCX07CisJfTsKKworTGlzdCBvZiBzdXBwb3J0ZWQgZnVuY3Rpb25zIGFuZCBncm91cHMgaW4gQ3lnbnVzOgorCisiaTJzMCI6ICJpMnMwXzBfZ3JwIiwgImkyczBfMV9ncnAiCisKKyJpMnMxIjogImkyczFfMF9ncnAiLCAiaTJzMV8xX2dycCIKKworImkyczIiOiAiaTJzMl8wX2dycCIsICJpMnMyXzFfZ3JwIiwgImkyczJfMl9ncnAiLCAiaTJzMl8zX2dycCIsICJpMnMyXzRfZ3JwIgorCisic3BkaWYiOiAic3BkaWZfZ3JwIgorCisicHdtMCI6ICJwd20wX2dycCIKKworInB3bTEiOiAicHdtMV9ncnAiCisKKyJwd20yIjogInB3bTJfZ3JwIgorCisicHdtMyI6ICJwd20zX2dycCIKKworInB3bTQiOiAicHdtNF9ncnAiCisKKyJwd201IjogInB3bTVfZ3JwIgorCisia2V5IjogImtleTBfZ3JwIiwgImtleTFfZ3JwIiwgImtleTJfZ3JwIiwgImtleTNfZ3JwIiwgImtleTRfZ3JwIiwgImtleTVfZ3JwIiwKKyJrZXk2X2dycCIsICJrZXk3X2dycCIsICJrZXk4X2dycCIsICJrZXk5X2dycCIsICJrZXkxMF9ncnAiLCAia2V5MTFfZ3JwIiwKKyJrZXkxMl9ncnAiLCAia2V5MTNfZ3JwIiwgImtleTE0X2dycCIsICJrZXkxNV9ncnAiCisKKyJhdWRpb19kdGUiOiAiYXVkaW9fZHRlMF9ncnAiLCAiYXVkaW9fZHRlMV9ncnAiLCAiYXVkaW9fZHRlMl9ncnAiLCAiYXVkaW9fZHRlM19ncnAiCisKKyJzbWFydF9jYXJkMCI6ICJzbWFydF9jYXJkMF9ncnAiLCAic21hcnRfY2FyZDBfZmNiX2dycCIKKworInNtYXJ0X2NhcmQxIjogInNtYXJ0X2NhcmQxX2dycCIsICJzbWFydF9jYXJkMV9mY2JfZ3JwIgorCisic3BpMCI6ICJzcGkwX2dycCIKKworInNwaTEiOiAic3BpMV9ncnAiCisKKyJzcGkyIjogInNwaTJfZ3JwIgorCisic3BpMyI6ICJzcGkzX2dycCIKKworInNwaTQiOiAic3BpNF8wX2dycCIsICJzcGk0XzFfZ3JwIgorCisic3BpNSI6ICJzcGk1X2dycCIKKworInN3X2xlZDAiOiAic3dfbGVkMF8wX2dycCIsICJzd19sZWQwXzFfZ3JwIgorCisic3dfbGVkMSI6ICJzd19sZWQxX2dycCIKKworInN3X2xlZDIiOiAic3dfbGVkMl8wX2dycCIsICJzd19sZWQyXzFfZ3JwIgorCisiZDF3IjogImQxd19ncnAiCisKKyJsY2QiOiAibGNkX2dycCIKKworInNyYW0iOiAic3JhbV8wX2dycCIsICJzcmFtXzFfZ3JwIgorCisidWFydDAiOiAidWFydDBfZ3JwIgorCisidWFydDEiOiAidWFydDFfZ3JwIiwgInVhcnQxX2R0ZV9ncnAiCisKKyJ1YXJ0MiI6ICJ1YXJ0Ml9ncnAiCisKKyJ1YXJ0MyI6ICJ1YXJ0M19ncnAiCisKKyJ1YXJ0NCI6ICJ1YXJ0NF9ncnAiCisKKyJxc3BpIjogInFzcGlfMF9ncnAiLCAicXNwaV8xX2dycCIKKworIm5hbmQiOiAibmFuZF9ncnAiCisKKyJzZGlvMCI6ICJzZGlvMF9ncnAiLCAic2RpbzBfY2RfZ3JwIiwgInNkaW8wX21tY19ncnAiCisKKyJzZGlvMSI6ICJzZGlvMV9kYXRhXzBfZ3JwIiwgInNkaW8xX2RhdGFfMV9ncnAiLCAic2RpbzFfY2RfZ3JwIiwKKyJzZGlvMV9sZWRfZ3JwIiwgInNkaW8xX21tY19ncnAiCisKKyJjYW4wIjogImNhbjBfZ3JwIgorCisiY2FuMSI6ICJjYW4xX2dycCIKKworImNhbSI6ICJjYW1fbGVkX2dycCIsICJjYW1fMF9ncnAiLCAiY2FtXzFfZ3JwIgorCisiYnNjMSI6ICJic2MxX2dycCIKKworInBjaWVfY2xrcmVxIjogInBjaWVfY2xrcmVxX2dycCIKKworInVzYjBfb2MiOiAidXNiMF9vY19ncnAiCisKKyJ1c2IxX29jIjogInVzYjFfb2NfZ3JwIgorCisidXNiMl9vYyI6ICJ1c2IyX29jX2dycCIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2NueHQsY3g5Mjc1NS1waW5jdHJsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2NueHQsY3g5Mjc1NS1waW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2NlOGRjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvY254dCxjeDkyNzU1LXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsODYgQEAKK0NvbmV4YW50IERpZ2ljb2xvciBDWDkyNzU1IEdlbmVyYWwgUHVycG9zZSBQaW4gTWFwcGluZworCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgZGV2aWNlIHRyZWUgYmluZGluZyBvZiB0aGUgcGluIG1hcHBpbmcgaGFyZHdhcmUKK21vZHVsZXMgaW4gdGhlIENvbmV4YW50IERpZ2ljb2xvciBDWDkyNzU1IFNvQ3MuIFRoZSBDWDkyNzU1IGluIG9uZSBvZiB0aGUKK0RpZ2ljb2xvciBzZXJpZXMgb2YgU29Dcy4KKworPT09IFBpbiBDb250cm9sbGVyIE5vZGUgPT09CisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogTXVzdCBiZSAiY254dCxjeDkyNzU1LXBpbmN0cmwiCistIHJlZzogQmFzZSBhZGRyZXNzIG9mIHRoZSBHZW5lcmFsIFB1cnBvc2UgUGluIE1hcHBpbmcgcmVnaXN0ZXIgYmxvY2sgYW5kIHRoZQorICBzaXplIG9mIHRoZSBibG9jay4KKy0gZ3Bpby1jb250cm9sbGVyOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYSBHUElPIGNvbnRyb2xsZXIuCistICNncGlvLWNlbGxzOiBNdXN0IGJlIDwyPi4gVGhlIGZpcnN0IGNlbGwgaXMgdGhlIHBpbiBudW1iZXIgYW5kIHRoZQorICBzZWNvbmQgY2VsbCBpcyB1c2VkIHRvIHNwZWNpZnkgZmxhZ3MuIFNlZSBpbmNsdWRlL2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oCisgIGZvciBwb3NzaWJsZSB2YWx1ZXMuCisKK0ZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGlzIHRoZSBiYXJlIG1pbmltdW0gbm9kZToKKworCXBpbmN0cmw6IHBpbmN0cmxAZjAwMDBlMjAgeworCQljb21wYXRpYmxlID0gImNueHQsY3g5Mjc1NS1waW5jdHJsIjsKKwkJcmVnID0gPDB4ZjAwMDBlMjAgMHgxMDA+OworCQlncGlvLWNvbnRyb2xsZXI7CisJCSNncGlvLWNlbGxzID0gPDI+OworCX07CisKK0FzIGEgcGluIGNvbnRyb2xsZXIgZGV2aWNlLCBpbiBhZGRpdGlvbiB0byB0aGUgcmVxdWlyZWQgcHJvcGVydGllcywgdGhpcyBub2RlCitzaG91bGQgYWxzbyBjb250YWluIHRoZSBwaW4gY29uZmlndXJhdGlvbiBub2RlcyB0aGF0IGNsaWVudCBkZXZpY2VzIHJlZmVyZW5jZSwKK2lmIGFueS4KKworRm9yIGEgZ2VuZXJhbCBkZXNjcmlwdGlvbiBvZiBHUElPIGJpbmRpbmdzLCBwbGVhc2UgcmVmZXIgdG8gLi4vZ3Bpby9ncGlvLnR4dC4KKworPT09IFBpbiBDb25maWd1cmF0aW9uIE5vZGUgPT09CisKK0VhY2ggcGluIGNvbmZpZ3VyYXRpb24gbm9kZSBpcyBhIHN1Yi1ub2RlIG9mIHRoZSBwaW4gY29udHJvbGxlciBub2RlIGFuZCBpcyBhCitjb250YWluZXIgb2YgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBzdWJub2RlcywgY2FsbGVkIHBpbiBncm91cCBub2RlcyBpbiB0aGlzCitkb2N1bWVudC4KKworUGxlYXNlIHJlZmVyIHRvIHRoZSBwaW5jdHJsLWJpbmRpbmdzLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgZGV0YWlscyBvZiB0aGUKK2NvbW1vbiBwaW5jdHJsIGJpbmRpbmdzIHVzZWQgYnkgY2xpZW50IGRldmljZXMsIGluY2x1ZGluZyB0aGUgZGVmaW5pdGlvbiBvZiBhCisicGluIGNvbmZpZ3VyYXRpb24gbm9kZSIuCisKKz09PSBQaW4gR3JvdXAgTm9kZSA9PT0KKworQSBwaW4gZ3JvdXAgbm9kZSBzcGVjaWZpZXMgdGhlIGRlc2lyZWQgcGluIG11eCBmb3IgYW4gYXJiaXRyYXJ5IG51bWJlciBvZgorcGlucy4gVGhlIG5hbWUgb2YgdGhlIHBpbiBncm91cCBub2RlIGlzIG9wdGlvbmFsIGFuZCBub3QgdXNlZC4KKworQSBwaW4gZ3JvdXAgbm9kZSBvbmx5IGFmZmVjdHMgdGhlIHByb3BlcnRpZXMgc3BlY2lmaWVkIGluIHRoZSBub2RlLCBhbmQgaGFzIG5vCitlZmZlY3Qgb24gYW55IHByb3BlcnRpZXMgdGhhdCBhcmUgb21pdHRlZC4KKworVGhlIHBpbiBncm91cCBub2RlIGFjY2VwdHMgYSBzdWJzZXQgb2YgdGhlIGdlbmVyaWMgcGluIGNvbmZpZyBwcm9wZXJ0aWVzLiBGb3IKK2RldGFpbHMgZ2VuZXJpYyBwaW4gY29uZmlnIHByb3BlcnRpZXMsIHBsZWFzZSByZWZlciB0byBwaW5jdHJsLWJpbmRpbmdzLnR4dAorYW5kIDxpbmNsdWRlL2xpbnV4L3BpbmN0cmwvcGluY29uZmlnLWdlbmVyaWMuaD4uCisKK1JlcXVpcmVkIFBpbiBHcm91cCBOb2RlIFByb3BlcnRpZXM6CisKKy0gcGluczogTXVsdGlwbGUgc3RyaW5ncy4gU3BlY2lmaWVzIHRoZSBuYW1lKHMpIG9mIG9uZSBvciBtb3JlIHBpbnMgdG8gYmUKKyAgY29uZmlndXJlZCBieSB0aGlzIG5vZGUuIFRoZSBmb3JtYXQgb2YgYSBwaW4gbmFtZSBzdHJpbmcgaXMgIkdQX3h5Iiwgd2hlcmUgeAorICBpcyBhbiB1cHBlcmNhc2UgY2hhcmFjdGVyIGZyb20gJ0EnIHRvICdSJywgYW5kIHkgaXMgYSBkaWdpdCBmcm9tIDAgdG8gNy4KKy0gZnVuY3Rpb246IFN0cmluZy4gU3BlY2lmaWVzIHRoZSBwaW4gbXV4IHNlbGVjdGlvbi4gVmFsdWVzIG11c3QgYmUgb25lIG9mOgorICAiZ3BpbyIsICJjbGllbnRfYSIsICJjbGllbnRfYiIsICJjbGllbnRfYyIKKworRXhhbXBsZToKKwlwaW5jdHJsOiBwaW5jdHJsQGYwMDAwZTIwIHsKKwkJY29tcGF0aWJsZSA9ICJjbnh0LGN4OTI3NTUtcGluY3RybCI7CisJCXJlZyA9IDwweGYwMDAwZTIwIDB4MTAwPjsKKworCQl1YXJ0MF9kZWZhdWx0OiB1YXJ0MF9hY3RpdmUgeworCQkJZGF0YV9zaWduYWxzIHsKKwkJCQlwaW5zID0gIkdQX08wIiwgIkdQX08xIjsKKwkJCQlmdW5jdGlvbiA9ICJjbGllbnRfYiI7CisJCQl9OworCQl9OworCX07CisKKwl1YXJ0MDogdWFydEBmMDAwMDc0MCB7CisJCWNvbXBhdGlibGUgPSAiY254dCxjeDkyNzU1LXVzYXJ0IjsKKwkJLi4uCisJCXBpbmN0cmwtMCA9IDwmdWFydDBfZGVmYXVsdD47CisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJfTsKKworSW4gdGhlIGV4YW1wbGUgYWJvdmUsIGEgc2luZ2xlIHBpbiBncm91cCBjb25maWd1cmF0aW9uIG5vZGUgZGVmaW5lcyB0aGUKKyJjbGllbnQgc2VsZWN0IiBmb3IgdGhlIFJ4IGFuZCBUeCBzaWduYWxzIG9mIHVhcnQwLiBUaGUgdWFydDAgbm9kZSByZWZlcmVuY2VzCit0aGF0IHBpbiBjb25maWd1cmF0aW9uIG5vZGUgdXNpbmcgdGhlICZ1YXJ0MF9kZWZhdWx0IHBoYW5kbGUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9mc2wsaW14LXBpbmN0cmwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvZnNsLGlteC1waW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmRlMjVmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvZnNsLGlteC1waW5jdHJsLnR4dApAQCAtMCwwICsxLDk0IEBACisqIEZyZWVzY2FsZSBJT01VWCBDb250cm9sbGVyIChJT01VWEMpIGZvciBpLk1YCisKK1RoZSBJT01VWCBDb250cm9sbGVyIChJT01VWEMpLCB0b2dldGhlciB3aXRoIHRoZSBJT01VWCwgZW5hYmxlcyB0aGUgSUMKK3RvIHNoYXJlIG9uZSBQQUQgdG8gc2V2ZXJhbCBmdW5jdGlvbmFsIGJsb2Nrcy4gVGhlIHNoYXJpbmcgaXMgZG9uZSBieQorbXVsdGlwbGV4aW5nIHRoZSBQQUQgaW5wdXQvb3V0cHV0IHNpZ25hbHMuIEZvciBlYWNoIFBBRCB0aGVyZSBhcmUgdXAgdG8KKzggbXV4aW5nIG9wdGlvbnMgKGNhbGxlZCBBTFQgbW9kZXMpLiBTaW5jZSBkaWZmZXJlbnQgbW9kdWxlcyByZXF1aXJlCitkaWZmZXJlbnQgUEFEIHNldHRpbmdzIChsaWtlIHB1bGwgdXAsIGtlZXBlciwgZXRjKSB0aGUgSU9NVVhDIGNvbnRyb2xzCithbHNvIHRoZSBQQUQgc2V0dGluZ3MgcGFyYW1ldGVycy4KKworUGxlYXNlIHJlZmVyIHRvIHBpbmN0cmwtYmluZGluZ3MudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBkZXRhaWxzIG9mIHRoZQorY29tbW9uIHBpbmN0cmwgYmluZGluZ3MgdXNlZCBieSBjbGllbnQgZGV2aWNlcywgaW5jbHVkaW5nIHRoZSBtZWFuaW5nIG9mIHRoZQorcGhyYXNlICJwaW4gY29uZmlndXJhdGlvbiBub2RlIi4KKworRnJlZXNjYWxlIElNWCBwaW4gY29uZmlndXJhdGlvbiBub2RlIGlzIGEgbm9kZSBvZiBhIGdyb3VwIG9mIHBpbnMgd2hpY2ggY2FuIGJlCit1c2VkIGZvciBhIHNwZWNpZmljIGRldmljZSBvciBmdW5jdGlvbi4gVGhpcyBub2RlIHJlcHJlc2VudHMgYm90aCBtdXggYW5kIGNvbmZpZworb2YgdGhlIHBpbnMgaW4gdGhhdCBncm91cC4gVGhlICdtdXgnIHNlbGVjdHMgdGhlIGZ1bmN0aW9uIG1vZGUoYWxzbyBuYW1lZCBtdXgKK21vZGUpIHRoaXMgcGluIGNhbiB3b3JrIG9uIGFuZCB0aGUgJ2NvbmZpZycgY29uZmlndXJlcyB2YXJpb3VzIHBhZCBzZXR0aW5ncworc3VjaCBhcyBwdWxsLXVwLCBvcGVuIGRyYWluLCBkcml2ZSBzdHJlbmd0aCwgZXRjLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBpb211eCBjb250cm9sbGVyOgorLSBjb21wYXRpYmxlOiAiZnNsLDxzb2M+LWlvbXV4YyIKKyAgUGxlYXNlIHJlZmVyIHRvIGVhY2ggZnNsLDxzb2M+LXBpbmN0cmwudHh0IGJpbmRpbmcgZG9jIGZvciBzdXBwb3J0ZWQgU29Dcy4KKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgcGluIGNvbmZpZ3VyYXRpb24gbm9kZToKKy0gZnNsLHBpbnM6IGVhY2ggZW50cnkgY29uc2lzdHMgb2YgNiBpbnRlZ2VycyBhbmQgcmVwcmVzZW50cyB0aGUgbXV4IGFuZCBjb25maWcKKyAgc2V0dGluZyBmb3Igb25lIHBpbi4gVGhlIGZpcnN0IDUgaW50ZWdlcnMgPG11eF9yZWcgY29uZl9yZWcgaW5wdXRfcmVnIG11eF92YWwKKyAgaW5wdXRfdmFsPiBhcmUgc3BlY2lmaWVkIHVzaW5nIGEgUElOX0ZVTkNfSUQgbWFjcm8sIHdoaWNoIGNhbiBiZSBmb3VuZCBpbgorICBpbXgqLXBpbmZ1bmMuaCB1bmRlciBkZXZpY2UgdHJlZSBzb3VyY2UgZm9sZGVyLiBUaGUgbGFzdCBpbnRlZ2VyIENPTkZJRyBpcworICB0aGUgcGFkIHNldHRpbmcgdmFsdWUgbGlrZSBwdWxsLXVwIG9uIHRoaXMgcGluLiBBbmQgdGhhdCdzIHdoeSBmc2wscGlucyBlbnRyeQorICBsb29rcyBsaWtlIDxQSU5fRlVOQ19JRCBDT05GSUc+IGluIHRoZSBleGFtcGxlIGJlbG93LgorCitCaXRzIHVzZWQgZm9yIENPTkZJRzoKK05PX1BBRF9DVEwoMSA8PCAzMSk6IGluZGljYXRlIHRoaXMgcGluIGRvZXMgbm90IG5lZWQgY29uZmlnLgorCitTSU9OKDEgPDwgMzApOiBTb2Z0d2FyZSBJbnB1dCBPbiBGaWVsZC4KK0ZvcmNlIHRoZSBzZWxlY3RlZCBtdXggbW9kZSBpbnB1dCBwYXRoIG5vIG1hdHRlciBvZiBNVVhfTU9ERSBmdW5jdGlvbmFsaXR5LgorQnkgZGVmYXVsdCB0aGUgaW5wdXQgcGF0aCBpcyBkZXRlcm1pbmVkIGJ5IGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHNlbGVjdGVkCittdXggbW9kZSAocmVndWxhcikuCisKK090aGVyIGJpdHMgYXJlIHVzZWQgZm9yIFBBRCBzZXR0aW5nLgorUGxlYXNlIHJlZmVyIHRvIGVhY2ggZnNsLDxzb2M+LXBpbmN0cmwsdHh0IGJpbmRpbmcgZG9jIGZvciBTb0Mgc3BlY2lmaWMgcGFydAorb2YgYml0cyBkZWZpbml0aW9ucy4KKworTk9URToKK1NvbWUgcmVxdWlyZW1lbnRzIGZvciB1c2luZyBmc2wsaW14LXBpbmN0cmwgYmluZGluZzoKKzEuIFdlIGhhdmUgcGluIGZ1bmN0aW9uIG5vZGUgZGVmaW5lZCB1bmRlciBpb211eCBjb250cm9sbGVyIG5vZGUgdG8gcmVwcmVzZW50CisgICB3aGF0IHBpbm11eCBmdW5jdGlvbnMgdGhpcyBTb0Mgc3VwcG9ydHMuCisyLiBUaGUgcGluIGNvbmZpZ3VyYXRpb24gbm9kZSBpbnRlbmRzIHRvIHdvcmsgb24gYSBzcGVjaWZpYyBmdW5jdGlvbiBzaG91bGQKKyAgIHRvIGJlIGRlZmluZWQgdW5kZXIgdGhhdCBzcGVjaWZpYyBmdW5jdGlvbiBub2RlLgorICAgVGhlIGZ1bmN0aW9uIG5vZGUncyBuYW1lIHNob3VsZCByZXByZXNlbnQgd2VsbCBhYm91dCB3aGF0IGZ1bmN0aW9uCisgICB0aGlzIGdyb3VwIG9mIHBpbnMgaW4gdGhpcyBwaW4gY29uZmlndXJhdGlvbiBub2RlIGFyZSB3b3JraW5nIG9uLgorMy4gVGhlIGRyaXZlciBjYW4gdXNlIHRoZSBmdW5jdGlvbiBub2RlJ3MgbmFtZSBhbmQgcGluIGNvbmZpZ3VyYXRpb24gbm9kZSdzCisgICBuYW1lIGRlc2NyaWJlIHRoZSBwaW4gZnVuY3Rpb24gYW5kIGdyb3VwIGhpZXJhcmNoeS4KKyAgIEZvciBleGFtcGxlLCBMaW51eCBJTVggcGluY3RybCBkcml2ZXIgdGFrZXMgdGhlIGZ1bmN0aW9uIG5vZGUncyBuYW1lCisgICBhcyB0aGUgZnVuY3Rpb24gbmFtZSBhbmQgcGluIGNvbmZpZ3VyYXRpb24gbm9kZSdzIG5hbWUgYXMgZ3JvdXAgbmFtZSB0bworICAgY3JlYXRlIHRoZSBtYXAgdGFibGUuCis0LiBFYWNoIHBpbiBjb25maWd1cmF0aW9uIG5vZGUgc2hvdWxkIGhhdmUgYSBwaGFuZGxlLCBkZXZpY2VzIGNhbiBzZXQgcGlucworICAgY29uZmlndXJhdGlvbnMgYnkgcmVmZXJyaW5nIHRvIHRoZSBwaGFuZGxlIG9mIHRoYXQgcGluIGNvbmZpZ3VyYXRpb24gbm9kZS4KKworRXhhbXBsZXM6Cit1c2RoY0AwMjE5YzAwMCB7IC8qIHVTREhDNCAqLworCW5vbi1yZW1vdmFibGU7CisJdm1tYy1zdXBwbHkgPSA8JnJlZ18zcDN2PjsKKwlzdGF0dXMgPSAib2theSI7CisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfdXNkaGM0XzE+OworfTsKKworaW9tdXhjQDAyMGUwMDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxpbXg2cS1pb211eGMiOworCXJlZyA9IDwweDAyMGUwMDAwIDB4NDAwMD47CisKKwkvKiBzaGFyZWQgcGluY3RybCBzZXR0aW5ncyAqLworCXVzZGhjNCB7CisJCXBpbmN0cmxfdXNkaGM0XzE6IHVzZGhjNGdycC0xIHsKKwkJCWZzbCxwaW5zID0gPAorCQkJCU1YNlFETF9QQURfU0Q0X0NNRF9fU0Q0X0NNRCAgICAweDE3MDU5CisJCQkJTVg2UURMX1BBRF9TRDRfQ0xLX19TRDRfQ0xLICAgIDB4MTAwNTkKKwkJCQlNWDZRRExfUEFEX1NENF9EQVQwX19TRDRfREFUQTAgMHgxNzA1OQorCQkJCU1YNlFETF9QQURfU0Q0X0RBVDFfX1NENF9EQVRBMSAweDE3MDU5CisJCQkJTVg2UURMX1BBRF9TRDRfREFUMl9fU0Q0X0RBVEEyIDB4MTcwNTkKKwkJCQlNWDZRRExfUEFEX1NENF9EQVQzX19TRDRfREFUQTMgMHgxNzA1OQorCQkJCU1YNlFETF9QQURfU0Q0X0RBVDRfX1NENF9EQVRBNCAweDE3MDU5CisJCQkJTVg2UURMX1BBRF9TRDRfREFUNV9fU0Q0X0RBVEE1IDB4MTcwNTkKKwkJCQlNWDZRRExfUEFEX1NENF9EQVQ2X19TRDRfREFUQTYgMHgxNzA1OQorCQkJCU1YNlFETF9QQURfU0Q0X0RBVDdfX1NENF9EQVRBNyAweDE3MDU5CisJCQk+OworCX07CisJLi4uLgorfTsKK1JlZmVyIHRvIHRoZSBJT01VWEMgY29udHJvbGxlciBjaGFwdGVyIGluIGlteDZxIGRhdGFzaGVldCwKKzB4MTcwNTkgbWVhbnMgZW5hYmxlIGh5c3RlcmVzaXMsIDQ3S09obSBQdWxsIFVwLCA1ME1oeiBzcGVlZCwKKzgwT2htIGRyaXZlciBzdHJlbmd0aCBhbmQgRmFzdCBTbGV3IFJhdGUuCitVc2VyIHNob3VsZCByZWZlciB0byBlYWNoIFNvQyBzcGVjIHRvIHNldCB0aGUgY29ycmVjdCB2YWx1ZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2ZzbCxpbXgyNS1waW5jdHJsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2ZzbCxpbXgyNS1waW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDY1M2JkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvZnNsLGlteDI1LXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsMjMgQEAKKyogRnJlZXNjYWxlIElNWDI1IElPTVVYIENvbnRyb2xsZXIKKworUGxlYXNlIHJlZmVyIHRvIGZzbCxpbXgtcGluY3RybC50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGNvbW1vbiBiaW5kaW5nIHBhcnQKK2FuZCB1c2FnZS4KKworQ09ORklHIGJpdHMgZGVmaW5pdGlvbjoKK1BBRF9DVExfSFlTCQkJKDEgPDwgOCkKK1BBRF9DVExfUEtFCQkJKDEgPDwgNykKK1BBRF9DVExfUFVFCQkJKDEgPDwgNikKK1BBRF9DVExfUFVTXzEwMEtfRE9XTgkJKDAgPDwgNCkKK1BBRF9DVExfUFVTXzQ3S19VUAkJKDEgPDwgNCkKK1BBRF9DVExfUFVTXzEwMEtfVVAJCSgyIDw8IDQpCitQQURfQ1RMX1BVU18yMktfVVAJCSgzIDw8IDQpCitQQURfQ1RMX09ERV9DTU9TCQkoMCA8PCAzKQorUEFEX0NUTF9PREVfT1BFTkRSQUlOCQkoMSA8PCAzKQorUEFEX0NUTF9EU0VfTk9NSU5BTAkJKDAgPDwgMSkKK1BBRF9DVExfRFNFX0hJR0gJCSgxIDw8IDEpCitQQURfQ1RMX0RTRV9NQVgJCQkoMiA8PCAxKQorUEFEX0NUTF9TUkVfRkFTVAkJKDEgPDwgMCkKK1BBRF9DVExfU1JFX1NMT1cJCSgwIDw8IDApCisKK1JlZmVyIHRvIGlteDI1LXBpbmZ1bmMuaCBpbiBkZXZpY2UgdHJlZSBzb3VyY2UgZm9sZGVyIGZvciBhbGwgYXZhaWxhYmxlCitpbXgyNSBQSU5fRlVOQ19JRC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2ZzbCxpbXgyNy1waW5jdHJsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2ZzbCxpbXgyNy1waW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTcwNmVhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvZnNsLGlteDI3LXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsMTIxIEBACisqIEZyZWVzY2FsZSBJTVgyNyBJT01VWCBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJmc2wsaW14MjctaW9tdXhjIgorCitUaGUgaW9tdXhjIGRyaXZlciBub2RlIHNob3VsZCBkZWZpbmUgc3Vibm9kZXMgY29udGFpbmluZyBvZiBwaW5jdHJsIGNvbmZpZ3VyYXRpb24gc3Vibm9kZXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHBpbiBjb25maWd1cmF0aW9uIG5vZGU6CistIGZzbCxwaW5zOiB0aHJlZSBpbnRlZ2VycyBhcnJheSwgcmVwcmVzZW50cyBhIGdyb3VwIG9mIHBpbnMgbXV4IGFuZCBjb25maWcKKyAgc2V0dGluZy4gVGhlIGZvcm1hdCBpcyBmc2wscGlucyA9IDxQSU4gTVVYX0lEIENPTkZJRz4uCisKKyAgUElOIGlzIGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCAweGJmLiBpbXgyNyBoYXMgNiBwb3J0cyB3aXRoIDMyIGNvbmZpZ3VyYWJsZQorICBjb25maWd1cmFibGUgcGlucyBlYWNoLiBQSU4gaXMgUE9SVCAqIDMyICsgUE9SVF9QSU4sIFBPUlRfUElOIGlzIHRoZSBwaW4KKyAgbnVtYmVyIG9uIHRoZSBzcGVjaWZpYyBwb3J0IChiZXR3ZWVuIDAgYW5kIDMxKS4KKworICBNVVhfSUQgaXMKKyAgICBmdW5jdGlvbiArIChkaXJlY3Rpb24gPDwgMikgKyAoZ3Bpb19vY29uZiA8PCA0KSArIChncGlvX2ljb25mYSA8PCA4KSArIChncGlvX2ljb25mYiA8PCAxMCkKKworICAgICAgZnVuY3Rpb24gdmFsdWUgaXMgdXNlZCB0byBzZWxlY3QgdGhlIHBpbiBmdW5jdGlvbi4KKyAgICAgIFBvc3NpYmxlIHZhbHVlczoKKyAgICAgICAgICAwIC0gUHJpbWFyeSBmdW5jdGlvbgorICAgICAgICAgIDEgLSBBbHRlcm5hdGUgZnVuY3Rpb24KKyAgICAgICAgICAyIC0gR1BJTworICAgICAgUmVnaXN0ZXJzOiBHSVVTIChHUElPIEluIFVzZSksIEdQUiAoR2VuZXJhbCBQdXJwb3NlIFJlZ2lzdGVyKQorCisgICAgICBkaXJlY3Rpb24gZGVmaW5lcyB0aGUgZGF0YSBkaXJlY3Rpb24gb2YgdGhlIHBpbi4KKyAgICAgIFBvc3NpYmxlIHZhbHVlczoKKyAgICAgICAgICAwIC0gSW5wdXQKKyAgICAgICAgICAxIC0gT3V0cHV0CisgICAgICBSZWdpc3RlcjogRERJUgorCisgICAgICBncGlvX29jb25mIGNvbmZpZ3VyZXMgdGhlIGdwaW8gc3VibW9kdWxlIG91dHB1dCBzaWduYWwuIFRoaXMgZG9lcyBub3QKKyAgICAgIGhhdmUgYW55IGVmZmVjdCB1bmxlc3MgR1BJTyBmdW5jdGlvbiBpcyBzZWxlY3RlZC4gQS9CL0NfSU4gYXJlIG91dHB1dAorICAgICAgc2lnbmFscyBvZiBmdW5jdGlvbiBibG9ja3MgQSxCIGFuZCBDLiBTcGVjaWZpYyBmdW5jdGlvbiBibG9ja3MgYXJlCisgICAgICBkZXNjcmliZWQgaW4gdGhlIHJlZmVyZW5jZSBtYW51YWwuCisgICAgICBQb3NzaWJsZSB2YWx1ZXM6CisgICAgICAgICAgMCAtIEFfSU4KKyAgICAgICAgICAxIC0gQl9JTgorICAgICAgICAgIDIgLSBDX0lOCisgICAgICAgICAgMyAtIERhdGEgUmVnaXN0ZXIKKyAgICAgIFJlZ2lzdGVyczogT0NSMSwgT0NSMgorCisgICAgICBncGlvX2ljb25mYS9iIGNvbmZpZ3VyZXMgdGhlIGdwaW8gc3VibW9kdWxlIGlucHV0IHRvIGZ1bmN0aW9uYmxvY2tzIEEgYW5kCisgICAgICBCLiBHUElPIGZ1bmN0aW9uIHNob3VsZCBiZSBzZWxlY3RlZCBpZiB0aGlzIGlzIGNvbmZpZ3VyZWQuCisgICAgICBQb3NzaWJsZSB2YWx1ZXM6CisgICAgICAgICAgMCAtIEdQSU9fSU4KKyAgICAgICAgICAxIC0gSW50ZXJydXB0IFN0YXR1cyBSZWdpc3RlcgorICAgICAgICAgIDIgLSBQdWxsZG93bgorICAgICAgICAgIDMgLSBQdWxsdXAKKyAgICAgIFJlZ2lzdGVycyBJQ09ORkExLCBJQ09ORkEyLCBJQ09ORkIxIGFuZCBJQ09ORkIyCisKKyAgQ09ORklHIGNhbiBiZSAwIG9yIDEsIG1lYW5pbmcgUHVsbHVwIGRpc2FibGUvZW5hYmxlLgorCisKK1RoZSBpb211eCBjb250cm9sbGVyIGhhcyBncGlvIGNoaWxkIG5vZGVzIHdoaWNoIGFyZSBlbWJlZGRlZCBpbiB0aGUgaW9tdXgKK2NvbnRyb2wgcmVnaXN0ZXJzLiBUaGV5IGhhdmUgdG8gYmUgZGVmaW5lZCBhcyBjaGlsZCBub2RlcyBvZiB0aGUgaW9tdXggZGV2aWNlCitub2RlLiBJZiBncGlvIHN1Ym5vZGVzIGFyZSBkZWZpbmVkICIjYWRkcmVzcy1jZWxscyIsICIjc2l6ZS1jZWxscyIgYW5kICJyYW5nZXMiCitwcm9wZXJ0aWVzIGZvciB0aGUgaW9tdXggZGV2aWNlIG5vZGUgYXJlIHJlcXVpcmVkLgorCitFeGFtcGxlOgorCitpb211eGM6IGlvbXV4Y0AxMDAxNTAwMCB7CisJY29tcGF0aWJsZSA9ICJmc2wsaW14MjctaW9tdXhjIjsKKwlyZWcgPSA8MHgxMDAxNTAwMCAweDYwMD47CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MT47CisJcmFuZ2VzOworCisJZ3BpbzE6IGdwaW9AMTAwMTUwMDAgeworCQkuLi4KKwl9OworCisJLi4uCisKKwl1YXJ0IHsKKwkJcGluY3RybF91YXJ0MTogdWFydC0xIHsKKwkJCWZzbCxwaW5zID0gPAorCQkJCTB4OGMgMHgwMDQgMHgwIC8qIFVBUlQxX1RYRF9fVUFSVDFfVFhEICovCisJCQkJMHg4ZCAweDAwMCAweDAgLyogVUFSVDFfUlhEX19VQVJUMV9SWEQgKi8KKwkJCQkweDhlIDB4MDA0IDB4MCAvKiBVQVJUMV9DVFNfX1VBUlQxX0NUUyAqLworCQkJCTB4OGYgMHgwMDAgMHgwIC8qIFVBUlQxX1JUU19fVUFSVDFfUlRTICovCisJCQk+OworCQl9OworCisJCS4uLgorCX07Cit9OworCisKK0ZvciBjb252ZW5pZW5jZSB0aGVyZSBhcmUgbWFjcm9zIGRlZmluZWQgaW4gaW14MjctcGluZnVuYy5oIHdoaWNoIHByb3ZpZGUgUElOCithbmQgTVVYX0lELiBUaGV5IGFyZSBzdHJ1Y3R1cmVkIGFzIE1YMjdfUEFEXzxQYWQgbmFtZT5fXzxTaWduYWwgbmFtZT4uIFRoZSBuYW1lcworYXJlIGRlZmluZWQgaW4gdGhlIGkuTVgyNyByZWZlcmVuY2UgbWFudWFsLgorCitUaGUgYWJvdmUgZXhhbXBsZSB1c2luZyBtYWNyb3M6CisKK2lvbXV4YzogaW9tdXhjQDEwMDE1MDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxpbXgyNy1pb211eGMiOworCXJlZyA9IDwweDEwMDE1MDAwIDB4NjAwPjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwxPjsKKwlyYW5nZXM7CisKKwlncGlvMTogZ3Bpb0AxMDAxNTAwMCB7CisJCS4uLgorCX07CisKKwkuLi4KKworCXVhcnQgeworCQlwaW5jdHJsX3VhcnQxOiB1YXJ0LTEgeworCQkJZnNsLHBpbnMgPSA8CisJCQkJTVgyN19QQURfVUFSVDFfVFhEX19VQVJUMV9UWEQgMHgwCisJCQkJTVgyN19QQURfVUFSVDFfUlhEX19VQVJUMV9SWEQgMHgwCisJCQkJTVgyN19QQURfVUFSVDFfQ1RTX19VQVJUMV9DVFMgMHgwCisJCQkJTVgyN19QQURfVUFSVDFfUlRTX19VQVJUMV9SVFMgMHgwCisJCQk+OworCQl9OworCisJCS4uLgorCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvZnNsLGlteDM1LXBpbmN0cmwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvZnNsLGlteDM1LXBpbmN0cmwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwODNkZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9mc2wsaW14MzUtcGluY3RybC50eHQKQEAgLTAsMCArMSwzMyBAQAorKiBGcmVlc2NhbGUgSU1YMzUgSU9NVVggQ29udHJvbGxlcgorCitQbGVhc2UgcmVmZXIgdG8gZnNsLGlteC1waW5jdHJsLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgY29tbW9uIGJpbmRpbmcgcGFydAorYW5kIHVzYWdlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiZnNsLGlteDM1LWlvbXV4YyIKKy0gZnNsLHBpbnM6IHR3byBpbnRlZ2VycyBhcnJheSwgcmVwcmVzZW50cyBhIGdyb3VwIG9mIHBpbnMgbXV4IGFuZCBjb25maWcKKyAgc2V0dGluZy4gVGhlIGZvcm1hdCBpcyBmc2wscGlucyA9IDxQSU5fRlVOQ19JRCBDT05GSUc+LCBQSU5fRlVOQ19JRCBpcyBhCisgIHBpbiB3b3JraW5nIG9uIGEgc3BlY2lmaWMgZnVuY3Rpb24sIENPTkZJRyBpcyB0aGUgcGFkIHNldHRpbmcgdmFsdWUgbGlrZQorICBwdWxsLXVwIGZvciB0aGlzIHBpbi4gUGxlYXNlIHJlZmVyIHRvIGlteDM1IGRhdGFzaGVldCBmb3IgdGhlIHZhbGlkIHBhZAorICBjb25maWcgc2V0dGluZ3MuCisKK0NPTkZJRyBiaXRzIGRlZmluaXRpb246CitQQURfQ1RMX0RSSVZFX1ZPTEFHQUdFXzE4CSgxIDw8IDEzKQorUEFEX0NUTF9EUklWRV9WT0xBR0FHRV8zMwkoMCA8PCAxMykKK1BBRF9DVExfSFlTCQkJKDEgPDwgOCkKK1BBRF9DVExfUEtFCQkJKDEgPDwgNykKK1BBRF9DVExfUFVFCQkJKDEgPDwgNikKK1BBRF9DVExfUFVTXzEwMEtfRE9XTgkJKDAgPDwgNCkKK1BBRF9DVExfUFVTXzQ3S19VUAkJKDEgPDwgNCkKK1BBRF9DVExfUFVTXzEwMEtfVVAJCSgyIDw8IDQpCitQQURfQ1RMX1BVU18yMktfVVAJCSgzIDw8IDQpCitQQURfQ1RMX09ERV9DTU9TCQkoMCA8PCAzKQorUEFEX0NUTF9PREVfT1BFTkRSQUlOCQkoMSA8PCAzKQorUEFEX0NUTF9EU0VfTk9NSU5BTAkJKDAgPDwgMSkKK1BBRF9DVExfRFNFX0hJR0gJCSgxIDw8IDEpCitQQURfQ1RMX0RTRV9NQVgJCQkoMiA8PCAxKQorUEFEX0NUTF9TUkVfRkFTVAkJKDEgPDwgMCkKK1BBRF9DVExfU1JFX1NMT1cJCSgwIDw8IDApCisKK1JlZmVyIHRvIGlteDM1LXBpbmZ1bmMuaCBpbiBkZXZpY2UgdHJlZSBzb3VyY2UgZm9sZGVyIGZvciBhbGwgYXZhaWxhYmxlCitpbXgzNSBQSU5fRlVOQ19JRC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2ZzbCxpbXg1MS1waW5jdHJsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2ZzbCxpbXg1MS1waW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDE0MDhmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvZnNsLGlteDUxLXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsMzIgQEAKKyogRnJlZXNjYWxlIElNWDUxIElPTVVYIENvbnRyb2xsZXIKKworUGxlYXNlIHJlZmVyIHRvIGZzbCxpbXgtcGluY3RybC50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGNvbW1vbiBiaW5kaW5nIHBhcnQKK2FuZCB1c2FnZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImZzbCxpbXg1MS1pb211eGMiCistIGZzbCxwaW5zOiB0d28gaW50ZWdlcnMgYXJyYXksIHJlcHJlc2VudHMgYSBncm91cCBvZiBwaW5zIG11eCBhbmQgY29uZmlnCisgIHNldHRpbmcuIFRoZSBmb3JtYXQgaXMgZnNsLHBpbnMgPSA8UElOX0ZVTkNfSUQgQ09ORklHPiwgUElOX0ZVTkNfSUQgaXMgYQorICBwaW4gd29ya2luZyBvbiBhIHNwZWNpZmljIGZ1bmN0aW9uLCBDT05GSUcgaXMgdGhlIHBhZCBzZXR0aW5nIHZhbHVlIGxpa2UKKyAgcHVsbC11cCBmb3IgdGhpcyBwaW4uIFBsZWFzZSByZWZlciB0byBpbXg1MSBkYXRhc2hlZXQgZm9yIHRoZSB2YWxpZCBwYWQKKyAgY29uZmlnIHNldHRpbmdzLgorCitDT05GSUcgYml0cyBkZWZpbml0aW9uOgorUEFEX0NUTF9IVkUJCQkoMSA8PCAxMykKK1BBRF9DVExfSFlTCQkJKDEgPDwgOCkKK1BBRF9DVExfUEtFCQkJKDEgPDwgNykKK1BBRF9DVExfUFVFCQkJKDEgPDwgNikKK1BBRF9DVExfUFVTXzEwMEtfRE9XTgkJKDAgPDwgNCkKK1BBRF9DVExfUFVTXzQ3S19VUAkJKDEgPDwgNCkKK1BBRF9DVExfUFVTXzEwMEtfVVAJCSgyIDw8IDQpCitQQURfQ1RMX1BVU18yMktfVVAJCSgzIDw8IDQpCitQQURfQ1RMX09ERQkJCSgxIDw8IDMpCitQQURfQ1RMX0RTRV9MT1cJCQkoMCA8PCAxKQorUEFEX0NUTF9EU0VfTUVECQkJKDEgPDwgMSkKK1BBRF9DVExfRFNFX0hJR0gJCSgyIDw8IDEpCitQQURfQ1RMX0RTRV9NQVgJCQkoMyA8PCAxKQorUEFEX0NUTF9TUkVfRkFTVAkJKDEgPDwgMCkKK1BBRF9DVExfU1JFX1NMT1cJCSgwIDw8IDApCisKK1JlZmVyIHRvIGlteDUxLXBpbmZ1bmMuaCBpbiBkZXZpY2UgdHJlZSBzb3VyY2UgZm9sZGVyIGZvciBhbGwgYXZhaWxhYmxlCitpbXg1MSBQSU5fRlVOQ19JRC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2ZzbCxpbXg1My1waW5jdHJsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2ZzbCxpbXg1My1waW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWRjYjc3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvZnNsLGlteDUzLXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsMzIgQEAKKyogRnJlZXNjYWxlIElNWDUzIElPTVVYIENvbnRyb2xsZXIKKworUGxlYXNlIHJlZmVyIHRvIGZzbCxpbXgtcGluY3RybC50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGNvbW1vbiBiaW5kaW5nIHBhcnQKK2FuZCB1c2FnZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImZzbCxpbXg1My1pb211eGMiCistIGZzbCxwaW5zOiB0d28gaW50ZWdlcnMgYXJyYXksIHJlcHJlc2VudHMgYSBncm91cCBvZiBwaW5zIG11eCBhbmQgY29uZmlnCisgIHNldHRpbmcuIFRoZSBmb3JtYXQgaXMgZnNsLHBpbnMgPSA8UElOX0ZVTkNfSUQgQ09ORklHPiwgUElOX0ZVTkNfSUQgaXMgYQorICBwaW4gd29ya2luZyBvbiBhIHNwZWNpZmljIGZ1bmN0aW9uLCBDT05GSUcgaXMgdGhlIHBhZCBzZXR0aW5nIHZhbHVlIGxpa2UKKyAgcHVsbC11cCBmb3IgdGhpcyBwaW4uIFBsZWFzZSByZWZlciB0byBpbXg1MyBkYXRhc2hlZXQgZm9yIHRoZSB2YWxpZCBwYWQKKyAgY29uZmlnIHNldHRpbmdzLgorCitDT05GSUcgYml0cyBkZWZpbml0aW9uOgorUEFEX0NUTF9IVkUJCQkoMSA8PCAxMykKK1BBRF9DVExfSFlTCQkJKDEgPDwgOCkKK1BBRF9DVExfUEtFCQkJKDEgPDwgNykKK1BBRF9DVExfUFVFCQkJKDEgPDwgNikKK1BBRF9DVExfUFVTXzEwMEtfRE9XTgkJKDAgPDwgNCkKK1BBRF9DVExfUFVTXzQ3S19VUAkJKDEgPDwgNCkKK1BBRF9DVExfUFVTXzEwMEtfVVAJCSgyIDw8IDQpCitQQURfQ1RMX1BVU18yMktfVVAJCSgzIDw8IDQpCitQQURfQ1RMX09ERQkJCSgxIDw8IDMpCitQQURfQ1RMX0RTRV9MT1cJCQkoMCA8PCAxKQorUEFEX0NUTF9EU0VfTUVECQkJKDEgPDwgMSkKK1BBRF9DVExfRFNFX0hJR0gJCSgyIDw8IDEpCitQQURfQ1RMX0RTRV9NQVgJCQkoMyA8PCAxKQorUEFEX0NUTF9TUkVfRkFTVAkJKDEgPDwgMCkKK1BBRF9DVExfU1JFX1NMT1cJCSgwIDw8IDApCisKK1JlZmVyIHRvIGlteDUzLXBpbmZ1bmMuaCBpbiBkZXZpY2UgdHJlZSBzb3VyY2UgZm9sZGVyIGZvciBhbGwgYXZhaWxhYmxlCitpbXg1MyBQSU5fRlVOQ19JRC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2ZzbCxpbXg2ZGwtcGluY3RybC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9mc2wsaW14NmRsLXBpbmN0cmwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhYzViZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9mc2wsaW14NmRsLXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsMzggQEAKKyogRnJlZXNjYWxlIElNWDYgRHVhbExpdGUvU29sbyBJT01VWCBDb250cm9sbGVyCisKK1BsZWFzZSByZWZlciB0byBmc2wsaW14LXBpbmN0cmwudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBjb21tb24gYmluZGluZyBwYXJ0CithbmQgdXNhZ2UuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJmc2wsaW14NmRsLWlvbXV4YyIKKy0gZnNsLHBpbnM6IHR3byBpbnRlZ2VycyBhcnJheSwgcmVwcmVzZW50cyBhIGdyb3VwIG9mIHBpbnMgbXV4IGFuZCBjb25maWcKKyAgc2V0dGluZy4gVGhlIGZvcm1hdCBpcyBmc2wscGlucyA9IDxQSU5fRlVOQ19JRCBDT05GSUc+LCBQSU5fRlVOQ19JRCBpcyBhCisgIHBpbiB3b3JraW5nIG9uIGEgc3BlY2lmaWMgZnVuY3Rpb24sIENPTkZJRyBpcyB0aGUgcGFkIHNldHRpbmcgdmFsdWUgbGlrZQorICBwdWxsLXVwIGZvciB0aGlzIHBpbi4gUGxlYXNlIHJlZmVyIHRvIGlteDZkbCBkYXRhc2hlZXQgZm9yIHRoZSB2YWxpZCBwYWQKKyAgY29uZmlnIHNldHRpbmdzLgorCitDT05GSUcgYml0cyBkZWZpbml0aW9uOgorUEFEX0NUTF9IWVMgICAgICAgICAgICAgICAgICAgICAoMSA8PCAxNikKK1BBRF9DVExfUFVTXzEwMEtfRE9XTiAgICAgICAgICAgKDAgPDwgMTQpCitQQURfQ1RMX1BVU180N0tfVVAgICAgICAgICAgICAgICgxIDw8IDE0KQorUEFEX0NUTF9QVVNfMTAwS19VUCAgICAgICAgICAgICAoMiA8PCAxNCkKK1BBRF9DVExfUFVTXzIyS19VUCAgICAgICAgICAgICAgKDMgPDwgMTQpCitQQURfQ1RMX1BVRSAgICAgICAgICAgICAgICAgICAgICgxIDw8IDEzKQorUEFEX0NUTF9QS0UgICAgICAgICAgICAgICAgICAgICAoMSA8PCAxMikKK1BBRF9DVExfT0RFICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMTEpCitQQURfQ1RMX1NQRUVEX0xPVyAgICAgICAgICAgICAgICgxIDw8IDYpCitQQURfQ1RMX1NQRUVEX01FRCAgICAgICAgICAgICAgICgyIDw8IDYpCitQQURfQ1RMX1NQRUVEX0hJR0ggICAgICAgICAgICAgICgzIDw8IDYpCitQQURfQ1RMX0RTRV9ESVNBQkxFICAgICAgICAgICAgICgwIDw8IDMpCitQQURfQ1RMX0RTRV8yNDBvaG0gICAgICAgICAgICAgICgxIDw8IDMpCitQQURfQ1RMX0RTRV8xMjBvaG0gICAgICAgICAgICAgICgyIDw8IDMpCitQQURfQ1RMX0RTRV84MG9obSAgICAgICAgICAgICAgICgzIDw8IDMpCitQQURfQ1RMX0RTRV82MG9obSAgICAgICAgICAgICAgICg0IDw8IDMpCitQQURfQ1RMX0RTRV80OG9obSAgICAgICAgICAgICAgICg1IDw8IDMpCitQQURfQ1RMX0RTRV80MG9obSAgICAgICAgICAgICAgICg2IDw8IDMpCitQQURfQ1RMX0RTRV8zNG9obSAgICAgICAgICAgICAgICg3IDw8IDMpCitQQURfQ1RMX1NSRV9GQVNUICAgICAgICAgICAgICAgICgxIDw8IDApCitQQURfQ1RMX1NSRV9TTE9XICAgICAgICAgICAgICAgICgwIDw8IDApCisKK1JlZmVyIHRvIGlteDZkbC1waW5mdW5jLmggaW4gZGV2aWNlIHRyZWUgc291cmNlIGZvbGRlciBmb3IgYWxsIGF2YWlsYWJsZQoraW14NmRsIFBJTl9GVU5DX0lELgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvZnNsLGlteDZxLXBpbmN0cmwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvZnNsLGlteDZxLXBpbmN0cmwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NjYxMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9mc2wsaW14NnEtcGluY3RybC50eHQKQEAgLTAsMCArMSwzOCBAQAorKiBGcmVlc2NhbGUgSU1YNlEgSU9NVVggQ29udHJvbGxlcgorCitQbGVhc2UgcmVmZXIgdG8gZnNsLGlteC1waW5jdHJsLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgY29tbW9uIGJpbmRpbmcgcGFydAorYW5kIHVzYWdlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiZnNsLGlteDZxLWlvbXV4YyIKKy0gZnNsLHBpbnM6IHR3byBpbnRlZ2VycyBhcnJheSwgcmVwcmVzZW50cyBhIGdyb3VwIG9mIHBpbnMgbXV4IGFuZCBjb25maWcKKyAgc2V0dGluZy4gVGhlIGZvcm1hdCBpcyBmc2wscGlucyA9IDxQSU5fRlVOQ19JRCBDT05GSUc+LCBQSU5fRlVOQ19JRCBpcyBhCisgIHBpbiB3b3JraW5nIG9uIGEgc3BlY2lmaWMgZnVuY3Rpb24sIENPTkZJRyBpcyB0aGUgcGFkIHNldHRpbmcgdmFsdWUgbGlrZQorICBwdWxsLXVwIGZvciB0aGlzIHBpbi4gUGxlYXNlIHJlZmVyIHRvIGlteDZxIGRhdGFzaGVldCBmb3IgdGhlIHZhbGlkIHBhZAorICBjb25maWcgc2V0dGluZ3MuCisKK0NPTkZJRyBiaXRzIGRlZmluaXRpb246CitQQURfQ1RMX0hZUyAgICAgICAgICAgICAgICAgICAgICgxIDw8IDE2KQorUEFEX0NUTF9QVVNfMTAwS19ET1dOICAgICAgICAgICAoMCA8PCAxNCkKK1BBRF9DVExfUFVTXzQ3S19VUCAgICAgICAgICAgICAgKDEgPDwgMTQpCitQQURfQ1RMX1BVU18xMDBLX1VQICAgICAgICAgICAgICgyIDw8IDE0KQorUEFEX0NUTF9QVVNfMjJLX1VQICAgICAgICAgICAgICAoMyA8PCAxNCkKK1BBRF9DVExfUFVFICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMTMpCitQQURfQ1RMX1BLRSAgICAgICAgICAgICAgICAgICAgICgxIDw8IDEyKQorUEFEX0NUTF9PREUgICAgICAgICAgICAgICAgICAgICAoMSA8PCAxMSkKK1BBRF9DVExfU1BFRURfTE9XICAgICAgICAgICAgICAgKDEgPDwgNikKK1BBRF9DVExfU1BFRURfTUVEICAgICAgICAgICAgICAgKDIgPDwgNikKK1BBRF9DVExfU1BFRURfSElHSCAgICAgICAgICAgICAgKDMgPDwgNikKK1BBRF9DVExfRFNFX0RJU0FCTEUgICAgICAgICAgICAgKDAgPDwgMykKK1BBRF9DVExfRFNFXzI0MG9obSAgICAgICAgICAgICAgKDEgPDwgMykKK1BBRF9DVExfRFNFXzEyMG9obSAgICAgICAgICAgICAgKDIgPDwgMykKK1BBRF9DVExfRFNFXzgwb2htICAgICAgICAgICAgICAgKDMgPDwgMykKK1BBRF9DVExfRFNFXzYwb2htICAgICAgICAgICAgICAgKDQgPDwgMykKK1BBRF9DVExfRFNFXzQ4b2htICAgICAgICAgICAgICAgKDUgPDwgMykKK1BBRF9DVExfRFNFXzQwb2htICAgICAgICAgICAgICAgKDYgPDwgMykKK1BBRF9DVExfRFNFXzM0b2htICAgICAgICAgICAgICAgKDcgPDwgMykKK1BBRF9DVExfU1JFX0ZBU1QgICAgICAgICAgICAgICAgKDEgPDwgMCkKK1BBRF9DVExfU1JFX1NMT1cgICAgICAgICAgICAgICAgKDAgPDwgMCkKKworUmVmZXIgdG8gaW14NnEtcGluZnVuYy5oIGluIGRldmljZSB0cmVlIHNvdXJjZSBmb2xkZXIgZm9yIGFsbCBhdmFpbGFibGUKK2lteDZxIFBJTl9GVU5DX0lELgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvZnNsLGlteDZzbC1waW5jdHJsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2ZzbCxpbXg2c2wtcGluY3RybC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVmNmQxZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2ZzbCxpbXg2c2wtcGluY3RybC50eHQKQEAgLTAsMCArMSwzOSBAQAorKiBGcmVlc2NhbGUgSU1YNiBTb2xvTGl0ZSBJT01VWCBDb250cm9sbGVyCisKK1BsZWFzZSByZWZlciB0byBmc2wsaW14LXBpbmN0cmwudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBjb21tb24gYmluZGluZyBwYXJ0CithbmQgdXNhZ2UuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJmc2wsaW14NnNsLWlvbXV4YyIKKy0gZnNsLHBpbnM6IHR3byBpbnRlZ2VycyBhcnJheSwgcmVwcmVzZW50cyBhIGdyb3VwIG9mIHBpbnMgbXV4IGFuZCBjb25maWcKKyAgc2V0dGluZy4gVGhlIGZvcm1hdCBpcyBmc2wscGlucyA9IDxQSU5fRlVOQ19JRCBDT05GSUc+LCBQSU5fRlVOQ19JRCBpcyBhCisgIHBpbiB3b3JraW5nIG9uIGEgc3BlY2lmaWMgZnVuY3Rpb24sIENPTkZJRyBpcyB0aGUgcGFkIHNldHRpbmcgdmFsdWUgbGlrZQorICBwdWxsLXVwIGZvciB0aGlzIHBpbi4gUGxlYXNlIHJlZmVyIHRvIGlteDZzbCBkYXRhc2hlZXQgZm9yIHRoZSB2YWxpZCBwYWQKKyAgY29uZmlnIHNldHRpbmdzLgorCitDT05GSUcgYml0cyBkZWZpbml0aW9uOgorUEFEX0NUTF9MVkUgICAgICAgICAgICAgICAgICAgICAoMSA8PCAyMikKK1BBRF9DVExfSFlTICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMTYpCitQQURfQ1RMX1BVU18xMDBLX0RPV04gICAgICAgICAgICgwIDw8IDE0KQorUEFEX0NUTF9QVVNfNDdLX1VQICAgICAgICAgICAgICAoMSA8PCAxNCkKK1BBRF9DVExfUFVTXzEwMEtfVVAgICAgICAgICAgICAgKDIgPDwgMTQpCitQQURfQ1RMX1BVU18yMktfVVAgICAgICAgICAgICAgICgzIDw8IDE0KQorUEFEX0NUTF9QVUUgICAgICAgICAgICAgICAgICAgICAoMSA8PCAxMykKK1BBRF9DVExfUEtFICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMTIpCitQQURfQ1RMX09ERSAgICAgICAgICAgICAgICAgICAgICgxIDw8IDExKQorUEFEX0NUTF9TUEVFRF9MT1cgICAgICAgICAgICAgICAoMSA8PCA2KQorUEFEX0NUTF9TUEVFRF9NRUQgICAgICAgICAgICAgICAoMiA8PCA2KQorUEFEX0NUTF9TUEVFRF9ISUdIICAgICAgICAgICAgICAoMyA8PCA2KQorUEFEX0NUTF9EU0VfRElTQUJMRSAgICAgICAgICAgICAoMCA8PCAzKQorUEFEX0NUTF9EU0VfMjQwb2htICAgICAgICAgICAgICAoMSA8PCAzKQorUEFEX0NUTF9EU0VfMTIwb2htICAgICAgICAgICAgICAoMiA8PCAzKQorUEFEX0NUTF9EU0VfODBvaG0gICAgICAgICAgICAgICAoMyA8PCAzKQorUEFEX0NUTF9EU0VfNjBvaG0gICAgICAgICAgICAgICAoNCA8PCAzKQorUEFEX0NUTF9EU0VfNDhvaG0gICAgICAgICAgICAgICAoNSA8PCAzKQorUEFEX0NUTF9EU0VfNDBvaG0gICAgICAgICAgICAgICAoNiA8PCAzKQorUEFEX0NUTF9EU0VfMzRvaG0gICAgICAgICAgICAgICAoNyA8PCAzKQorUEFEX0NUTF9TUkVfRkFTVCAgICAgICAgICAgICAgICAoMSA8PCAwKQorUEFEX0NUTF9TUkVfU0xPVyAgICAgICAgICAgICAgICAoMCA8PCAwKQorCitSZWZlciB0byBpbXg2c2wtcGluZnVuYy5oIGluIGRldmljZSB0cmVlIHNvdXJjZSBmb2xkZXIgZm9yIGFsbCBhdmFpbGFibGUKK2lteDZzbCBQSU5fRlVOQ19JRC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2ZzbCxpbXg2c3gtcGluY3RybC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9mc2wsaW14NnN4LXBpbmN0cmwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxYjU5NTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9mc2wsaW14NnN4LXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsMzYgQEAKKyogRnJlZXNjYWxlIGkuTVg2IFNvbG9YIElPTVVYIENvbnRyb2xsZXIKKworUGxlYXNlIHJlZmVyIHRvIGZzbCxpbXgtcGluY3RybC50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGNvbW1vbiBiaW5kaW5nIHBhcnQKK2FuZCB1c2FnZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImZzbCxpbXg2c3gtaW9tdXhjIgorLSBmc2wscGluczogZWFjaCBlbnRyeSBjb25zaXN0cyBvZiA2IGludGVnZXJzIGFuZCByZXByZXNlbnRzIHRoZSBtdXggYW5kIGNvbmZpZworICBzZXR0aW5nIGZvciBvbmUgcGluLiAgVGhlIGZpcnN0IDUgaW50ZWdlcnMgPG11eF9yZWcgY29uZl9yZWcgaW5wdXRfcmVnIG11eF92YWwKKyAgaW5wdXRfdmFsPiBhcmUgc3BlY2lmaWVkIHVzaW5nIGEgUElOX0ZVTkNfSUQgbWFjcm8sIHdoaWNoIGNhbiBiZSBmb3VuZCBpbgorICBpbXg2c3gtcGluZnVuYy5oIHVuZGVyIGRldmljZSB0cmVlIHNvdXJjZSBmb2xkZXIuICBUaGUgbGFzdCBpbnRlZ2VyIENPTkZJRyBpcworICB0aGUgcGFkIHNldHRpbmcgdmFsdWUgbGlrZSBwdWxsLXVwIG9uIHRoaXMgcGluLiAgUGxlYXNlIHJlZmVyIHRvIGkuTVg2IFNvbG9YCisgIFJlZmVyZW5jZSBNYW51YWwgZm9yIGRldGFpbGVkIENPTkZJRyBzZXR0aW5ncy4KKworQ09ORklHIGJpdHMgZGVmaW5pdGlvbjoKK1BBRF9DVExfSFlTICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMTYpCitQQURfQ1RMX1BVU18xMDBLX0RPV04gICAgICAgICAgICgwIDw8IDE0KQorUEFEX0NUTF9QVVNfNDdLX1VQICAgICAgICAgICAgICAoMSA8PCAxNCkKK1BBRF9DVExfUFVTXzEwMEtfVVAgICAgICAgICAgICAgKDIgPDwgMTQpCitQQURfQ1RMX1BVU18yMktfVVAgICAgICAgICAgICAgICgzIDw8IDE0KQorUEFEX0NUTF9QVUUgICAgICAgICAgICAgICAgICAgICAoMSA8PCAxMykKK1BBRF9DVExfUEtFICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMTIpCitQQURfQ1RMX09ERSAgICAgICAgICAgICAgICAgICAgICgxIDw8IDExKQorUEFEX0NUTF9TUEVFRF9MT1cgICAgICAgICAgICAgICAoMCA8PCA2KQorUEFEX0NUTF9TUEVFRF9NRUQgICAgICAgICAgICAgICAoMSA8PCA2KQorUEFEX0NUTF9TUEVFRF9ISUdIICAgICAgICAgICAgICAoMyA8PCA2KQorUEFEX0NUTF9EU0VfRElTQUJMRSAgICAgICAgICAgICAoMCA8PCAzKQorUEFEX0NUTF9EU0VfMjYwb2htICAgICAgICAgICAgICAoMSA8PCAzKQorUEFEX0NUTF9EU0VfMTMwb2htICAgICAgICAgICAgICAoMiA8PCAzKQorUEFEX0NUTF9EU0VfODdvaG0gICAgICAgICAgICAgICAoMyA8PCAzKQorUEFEX0NUTF9EU0VfNjVvaG0gICAgICAgICAgICAgICAoNCA8PCAzKQorUEFEX0NUTF9EU0VfNTJvaG0gICAgICAgICAgICAgICAoNSA8PCAzKQorUEFEX0NUTF9EU0VfNDNvaG0gICAgICAgICAgICAgICAoNiA8PCAzKQorUEFEX0NUTF9EU0VfMzdvaG0gICAgICAgICAgICAgICAoNyA8PCAzKQorUEFEX0NUTF9TUkVfRkFTVCAgICAgICAgICAgICAgICAoMSA8PCAwKQorUEFEX0NUTF9TUkVfU0xPVyAgICAgICAgICAgICAgICAoMCA8PCAwKQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvZnNsLGlteDZ1bC1waW5jdHJsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2ZzbCxpbXg2dWwtcGluY3RybC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgxYmJmMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2ZzbCxpbXg2dWwtcGluY3RybC50eHQKQEAgLTAsMCArMSwzNiBAQAorKiBGcmVlc2NhbGUgaS5NWDYgVWx0cmFMaXRlIElPTVVYIENvbnRyb2xsZXIKKworUGxlYXNlIHJlZmVyIHRvIGZzbCxpbXgtcGluY3RybC50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGNvbW1vbiBiaW5kaW5nIHBhcnQKK2FuZCB1c2FnZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImZzbCxpbXg2dWwtaW9tdXhjIgorLSBmc2wscGluczogZWFjaCBlbnRyeSBjb25zaXN0cyBvZiA2IGludGVnZXJzIGFuZCByZXByZXNlbnRzIHRoZSBtdXggYW5kIGNvbmZpZworICBzZXR0aW5nIGZvciBvbmUgcGluLiAgVGhlIGZpcnN0IDUgaW50ZWdlcnMgPG11eF9yZWcgY29uZl9yZWcgaW5wdXRfcmVnIG11eF92YWwKKyAgaW5wdXRfdmFsPiBhcmUgc3BlY2lmaWVkIHVzaW5nIGEgUElOX0ZVTkNfSUQgbWFjcm8sIHdoaWNoIGNhbiBiZSBmb3VuZCBpbgorICBpbXg2dWwtcGluZnVuYy5oIHVuZGVyIGRldmljZSB0cmVlIHNvdXJjZSBmb2xkZXIuICBUaGUgbGFzdCBpbnRlZ2VyIENPTkZJRyBpcworICB0aGUgcGFkIHNldHRpbmcgdmFsdWUgbGlrZSBwdWxsLXVwIG9uIHRoaXMgcGluLiAgUGxlYXNlIHJlZmVyIHRvIGkuTVg2IFVsdHJhTGl0ZQorICBSZWZlcmVuY2UgTWFudWFsIGZvciBkZXRhaWxlZCBDT05GSUcgc2V0dGluZ3MuCisKK0NPTkZJRyBiaXRzIGRlZmluaXRpb246CitQQURfQ1RMX0hZUyAgICAgICAgICAgICAgICAgICAgICgxIDw8IDE2KQorUEFEX0NUTF9QVVNfMTAwS19ET1dOICAgICAgICAgICAoMCA8PCAxNCkKK1BBRF9DVExfUFVTXzQ3S19VUCAgICAgICAgICAgICAgKDEgPDwgMTQpCitQQURfQ1RMX1BVU18xMDBLX1VQICAgICAgICAgICAgICgyIDw8IDE0KQorUEFEX0NUTF9QVVNfMjJLX1VQICAgICAgICAgICAgICAoMyA8PCAxNCkKK1BBRF9DVExfUFVFICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMTMpCitQQURfQ1RMX1BLRSAgICAgICAgICAgICAgICAgICAgICgxIDw8IDEyKQorUEFEX0NUTF9PREUgICAgICAgICAgICAgICAgICAgICAoMSA8PCAxMSkKK1BBRF9DVExfU1BFRURfTE9XICAgICAgICAgICAgICAgKDAgPDwgNikKK1BBRF9DVExfU1BFRURfTUVEICAgICAgICAgICAgICAgKDEgPDwgNikKK1BBRF9DVExfU1BFRURfSElHSCAgICAgICAgICAgICAgKDMgPDwgNikKK1BBRF9DVExfRFNFX0RJU0FCTEUgICAgICAgICAgICAgKDAgPDwgMykKK1BBRF9DVExfRFNFXzI2MG9obSAgICAgICAgICAgICAgKDEgPDwgMykKK1BBRF9DVExfRFNFXzEzMG9obSAgICAgICAgICAgICAgKDIgPDwgMykKK1BBRF9DVExfRFNFXzg3b2htICAgICAgICAgICAgICAgKDMgPDwgMykKK1BBRF9DVExfRFNFXzY1b2htICAgICAgICAgICAgICAgKDQgPDwgMykKK1BBRF9DVExfRFNFXzUyb2htICAgICAgICAgICAgICAgKDUgPDwgMykKK1BBRF9DVExfRFNFXzQzb2htICAgICAgICAgICAgICAgKDYgPDwgMykKK1BBRF9DVExfRFNFXzM3b2htICAgICAgICAgICAgICAgKDcgPDwgMykKK1BBRF9DVExfU1JFX0ZBU1QgICAgICAgICAgICAgICAgKDEgPDwgMCkKK1BBRF9DVExfU1JFX1NMT1cgICAgICAgICAgICAgICAgKDAgPDwgMCkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2ZzbCxpbXg3ZC1waW5jdHJsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2ZzbCxpbXg3ZC1waW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTdiMmM2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvZnNsLGlteDdkLXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsODggQEAKKyogRnJlZXNjYWxlIGkuTVg3IER1YWwgSU9NVVggQ29udHJvbGxlcgorCitpTVg3RCBzdXBwb3J0cyB0d28gaW9tdXhjIGNvbnRyb2xsZXJzLCBmc2wsaW14N2QtaW9tdXhjIGNvbnRyb2xsZXIgaXMgc2ltaWxhcgorYXMgcHJldmlvdXMgaU1YIFNvQyBnZW5lcmF0aW9uIGFuZCBmc2wsaW14N2QtaW9tdXhjLWxwc3Igd2hpY2ggcHJvdmlkZXMgbG93Citwb3dlciBzdGF0ZSByZXRlbnRpb24gY2FwYWJpbGl0aWVzIG9uIGdwaW9zIHRoYXQgYXJlIHBhcnQgb2YgaW9tdXhjLWxwc3IKKyhHUElPMV9JTzcuLkdQSU8xX0lPMCkuIFdoaWxlIGlvbXV4Yy1scHNyIHByb3ZpZGVzIGl0cyBvd24gc2V0IG9mIHJlZ2lzdGVycyBmb3IKK211eCBhbmQgcGFkIGNvbnRyb2wgc2V0dGluZ3MsIGl0IHNoYXJlcyB0aGUgaW5wdXQgc2VsZWN0IHJlZ2lzdGVyIGZyb20gbWFpbgoraW9tdXhjIGNvbnRyb2xsZXIgZm9yIGRhaXN5IGNoYWluIHNldHRpbmdzLCB0aGUgZnNsLGlucHV0LXNlbCBwcm9wZXJ0eSBleHRlbmRzCitmc2wsaW14LXBpbmN0cmwgZHJpdmVyIHRvIHN1cHBvcnQgaW9tdXhjLWxwc3IgY29udHJvbGxlci4KKworaW9tdXhjX2xwc3I6IGlvbXV4Yy1scHNyQDMwMmMwMDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxpbXg3ZC1pb211eGMtbHBzciI7CisJcmVnID0gPDB4MzAyYzAwMDAgMHgxMDAwMD47CisJZnNsLGlucHV0LXNlbCA9IDwmaW9tdXhjPjsKK307CisKK2lvbXV4YzogaW9tdXhjQDMwMzMwMDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxpbXg3ZC1pb211eGMiOworCXJlZyA9IDwweDMwMzMwMDAwIDB4MTAwMDA+OworfTsKKworUGhlcmlwYXJpYWxzIHVzaW5nIHBhZHMgZnJvbSBpb211eGMtbHBzciBzdXBwb3J0IGxvdyBzdGF0ZSByZXRlbnRpb24gcG93ZXIKK3N0YXRlLCB1bmRlciBMUFNSIG1vZGUgR1BJTydzIHN0YXRlIG9mIHBhZHMgYXJlIHJldGFpbi4KKworUGxlYXNlIHJlZmVyIHRvIGZzbCxpbXgtcGluY3RybC50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGNvbW1vbiBiaW5kaW5nIHBhcnQKK2FuZCB1c2FnZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImZzbCxpbXg3ZC1pb211eGMiIGZvciBtYWluIElPTVVYQyBjb250cm9sbGVyLCBvcgorICAiZnNsLGlteDdkLWlvbXV4Yy1scHNyIiBmb3IgTG93IFBvd2VyIFN0YXRlIFJldGVudGlvbiBJT01VWEMgY29udHJvbGxlci4KKy0gZnNsLHBpbnM6IGVhY2ggZW50cnkgY29uc2lzdHMgb2YgNiBpbnRlZ2VycyBhbmQgcmVwcmVzZW50cyB0aGUgbXV4IGFuZCBjb25maWcKKyAgc2V0dGluZyBmb3Igb25lIHBpbi4gIFRoZSBmaXJzdCA1IGludGVnZXJzIDxtdXhfcmVnIGNvbmZfcmVnIGlucHV0X3JlZyBtdXhfdmFsCisgIGlucHV0X3ZhbD4gYXJlIHNwZWNpZmllZCB1c2luZyBhIFBJTl9GVU5DX0lEIG1hY3JvLCB3aGljaCBjYW4gYmUgZm91bmQgaW4KKyAgaW14N2QtcGluZnVuYy5oIHVuZGVyIGRldmljZSB0cmVlIHNvdXJjZSBmb2xkZXIuICBUaGUgbGFzdCBpbnRlZ2VyIENPTkZJRyBpcworICB0aGUgcGFkIHNldHRpbmcgdmFsdWUgbGlrZSBwdWxsLXVwIG9uIHRoaXMgcGluLiAgUGxlYXNlIHJlZmVyIHRvIGkuTVg3IER1YWwKKyAgUmVmZXJlbmNlIE1hbnVhbCBmb3IgZGV0YWlsZWQgQ09ORklHIHNldHRpbmdzLgorLSBmc2wsaW5wdXQtc2VsOiByZXF1aXJlZCBwcm9wZXJ0eSBmb3IgaW9tdXhjLWxwc3IgY29udHJvbGxlciwgdGhpcyBwcm9wZXJ0eSBpcworICBhIHBoYW5kbGUgZm9yIG1haW4gaW9tdXhjIGNvbnRyb2xsZXIgd2hpY2ggc2hhcmVzIHRoZSBpbnB1dCBzZWxlY3QgcmVnaXN0ZXIgZm9yCisgIGRhaXN5IGNoYWluIHNldHRpbmdzLgorCitDT05GSUcgYml0cyBkZWZpbml0aW9uOgorUEFEX0NUTF9QVVNfMTAwS19ET1dOICAgICAgICAgICAoMCA8PCA1KQorUEFEX0NUTF9QVVNfNUtfVVAgICAgICAgICAgICAgICAoMSA8PCA1KQorUEFEX0NUTF9QVVNfNDdLX1VQICAgICAgICAgICAgICAoMiA8PCA1KQorUEFEX0NUTF9QVVNfMTAwS19VUCAgICAgICAgICAgICAoMyA8PCA1KQorUEFEX0NUTF9QVUUgICAgICAgICAgICAgICAgICAgICAoMSA8PCA0KQorUEFEX0NUTF9IWVMgICAgICAgICAgICAgICAgICAgICAoMSA8PCAzKQorUEFEX0NUTF9TUkVfU0xPVyAgICAgICAgICAgICAgICAoMSA8PCAyKQorUEFEX0NUTF9TUkVfRkFTVCAgICAgICAgICAgICAgICAoMCA8PCAyKQorUEFEX0NUTF9EU0VfWDEgICAgICAgICAgICAgICAgICAoMCA8PCAwKQorUEFEX0NUTF9EU0VfWDIgICAgICAgICAgICAgICAgICAoMSA8PCAwKQorUEFEX0NUTF9EU0VfWDMgICAgICAgICAgICAgICAgICAoMiA8PCAwKQorUEFEX0NUTF9EU0VfWDQgICAgICAgICAgICAgICAgICAoMyA8PCAwKQorCitFeGFtcGxlczoKK1doaWxlIGlvbXV4Yy1scHNyIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYnkgZGVkaWNhdGVkIHBlcmlwaGVyYWxzIHRvIHRha2UKK2FkdmFudGFnZXMgb2YgTFBTUiBwb3dlciBtb2RlLCBpcyBhbHNvIHBvc3NpYmxlIHRoYXQgYW4gSVAgdG8gdXNlIHBhZHMgZnJvbQorYW55IG9mIHRoZSBpb211eCBjb250cm9sbGVycy4gRm9yIGV4YW1wbGUgdGhlIEkyQzEgSVAgY2FuIHVzZSBTQ0wgcGFkIGZyb20KK2lvbXV4Yy1scHNyIGNvbnRyb2xsZXIgYW5kIFNEQSBwYWQgZnJvbSBpb211eGMgY29udHJvbGxlciBhczoKKworaTJjMTogaTJjQDMwYTIwMDAwIHsKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCXBpbmN0cmwtMCA9IDwmcGluY3RybF9pMmMxXzEgJnBpbmN0cmxfaTJjMV8yPjsKKwlzdGF0dXMgPSAib2theSI7Cit9OworCitpb211eGMtbHBzckAzMDJjMDAwMCB7CisJY29tcGF0aWJsZSA9ICJmc2wsaW14N2QtaW9tdXhjLWxwc3IiOworCXJlZyA9IDwweDMwMmMwMDAwIDB4MTAwMDA+OworCWZzbCxpbnB1dC1zZWwgPSA8JmlvbXV4Yz47CisKKwlwaW5jdHJsX2kyYzFfMTogaTJjMWdycC0xIHsKKwkJZnNsLHBpbnMgPSA8CisJCQlNWDdEX1BBRF9HUElPMV9JTzA0X19JMkMxX1NDTCAweDQwMDAwMDdmCisJCT47CisJfTsKK307CisKK2lvbXV4Y0AzMDMzMDAwMCB7CisJY29tcGF0aWJsZSA9ICJmc2wsaW14N2QtaW9tdXhjIjsKKwlyZWcgPSA8MHgzMDMzMDAwMCAweDEwMDAwPjsKKworCXBpbmN0cmxfaTJjMV8yOiBpMmMxZ3JwLTIgeworCQlmc2wscGlucyA9IDwKKwkJCU1YN0RfUEFEX0kyQzFfU0RBX19JMkMxX1NEQSAweDQwMDAwMDdmCisJCT47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9mc2wsbXhzLXBpbmN0cmwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvZnNsLG14cy1waW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTcwYThhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvZnNsLG14cy1waW5jdHJsLnR4dApAQCAtMCwwICsxLDEyNyBAQAorKiBGcmVlc2NhbGUgTVhTIFBpbiBDb250cm9sbGVyCisKK1RoZSBwaW5zIGNvbnRyb2xsZWQgYnkgbXhzIHBpbiBjb250cm9sbGVyIGFyZSBvcmdhbml6ZWQgaW4gYmFua3MsIGVhY2ggYmFuaworaGFzIDMyIHBpbnMuICBFYWNoIHBpbiBoYXMgNCBtdWx0aXBsZXhpbmcgZnVuY3Rpb25zLCBhbmQgZ2VuZXJhbGx5LCB0aGUgNHRoCitmdW5jdGlvbiBpcyBHUElPLiAgVGhlIGNvbmZpZ3VyYXRpb24gb24gdGhlIHBpbnMgaW5jbHVkZXMgZHJpdmUgc3RyZW5ndGgsCit2b2x0YWdlIGFuZCBwdWxsLXVwLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiZnNsLGlteDIzLXBpbmN0cmwiIG9yICJmc2wsaW14MjgtcGluY3RybCIKKy0gcmVnOiBTaG91bGQgY29udGFpbiB0aGUgcmVnaXN0ZXIgcGh5c2ljYWwgYWRkcmVzcyBhbmQgbGVuZ3RoIGZvciB0aGUKKyAgcGluIGNvbnRyb2xsZXIuCisKK1BsZWFzZSByZWZlciB0byBwaW5jdHJsLWJpbmRpbmdzLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgZGV0YWlscyBvZiB0aGUKK2NvbW1vbiBwaW5jdHJsIGJpbmRpbmdzIHVzZWQgYnkgY2xpZW50IGRldmljZXMuCisKK1RoZSBub2RlIG9mIG14cyBwaW4gY29udHJvbGxlciBhY3RzIGFzIGEgY29udGFpbmVyIGZvciBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mCitzdWJub2Rlcy4gIEVhY2ggb2YgdGhlc2Ugc3Vibm9kZXMgcmVwcmVzZW50cyBzb21lIGRlc2lyZWQgY29uZmlndXJhdGlvbiBmb3IKK2EgZ3JvdXAgb2YgcGlucywgYW5kIG9ubHkgYWZmZWN0cyB0aG9zZSBwYXJhbWV0ZXJzIHRoYXQgYXJlIGV4cGxpY2l0bHkgbGlzdGVkLgorSW4gb3RoZXIgd29yZHMsIGEgc3Vibm9kZSB0aGF0IGRlc2NyaWJlcyBhIGRyaXZlIHN0cmVuZ3RoIHBhcmFtZXRlciBpbXBsaWVzIG5vCitpbmZvcm1hdGlvbiBhYm91dCBwdWxsLXVwLiBGb3IgdGhpcyByZWFzb24sIGV2ZW4gc2VlbWluZ2x5IGJvb2xlYW4gdmFsdWVzIGFyZQorYWN0dWFsbHkgdHJpc3RhdGVzIGluIHRoaXMgYmluZGluZzogdW5zcGVjaWZpZWQsIG9mZiwgb3Igb24uIFVuc3BlY2lmaWVkIGlzCityZXByZXNlbnRlZCBhcyBhbiBhYnNlbnQgcHJvcGVydHksIGFuZCBvZmYvb24gYXJlIHJlcHJlc2VudGVkIGFzIGludGVnZXIKK3ZhbHVlcyAwIGFuZCAxLgorCitUaG9zZSBzdWJub2RlcyB1bmRlciBteHMgcGluIGNvbnRyb2xsZXIgbm9kZSB3aWxsIGZhbGwgaW50byB0d28gY2F0ZWdvcmllcy4KK09uZSBpcyB0byBzZXQgdXAgYSBncm91cCBvZiBwaW5zIGZvciBhIGZ1bmN0aW9uLCBib3RoIG11eCBzZWxlY3Rpb24gYW5kIHBpbgorY29uZmlndXJhdGlvbnMsIGFuZCBpdCdzIGNhbGxlZCBncm91cCBub2RlIGluIHRoZSBiaW5kaW5nIGRvY3VtZW50LiAgIFRoZSBvdGhlcgorb25lIGlzIHRvIGFkanVzdCB0aGUgcGluIGNvbmZpZ3VyYXRpb24gZm9yIHNvbWUgcGFydGljdWxhciBwaW5zIHRoYXQgbmVlZCBhCitkaWZmZXJlbnQgY29uZmlndXJhdGlvbiB0aGFuIHdoYXQgaXMgZGVmaW5lZCBpbiBncm91cCBub2RlLiAgVGhlIGJpbmRpbmcKK2RvY3VtZW50IGNhbGxzIHRoaXMgdHlwZSBvZiBub2RlIGNvbmZpZyBub2RlLgorCitPbiBteHMsIHRoZXJlIGlzIG5vIGhhcmR3YXJlIHBpbiBncm91cC4gVGhlIHBpbiBncm91cCBpbiB0aGlzIGJpbmRpbmcgb25seQorbWVhbnMgYSBncm91cCBvZiBwaW5zIHB1dCB0b2dldGhlciBmb3IgcGFydGljdWxhciBwZXJpcGhlcmFsIHRvIHdvcmsgaW4KK3BhcnRpY3VsYXIgZnVuY3Rpb24sIGxpa2UgU1NQMCBmdW5jdGlvbmluZyBhcyBtbWMwLThiaXQuICBUaGF0IHNhaWQsIHRoZQorZ3JvdXAgbm9kZSBzaG91bGQgaW5jbHVkZSBhbGwgdGhlIHBpbnMgbmVlZGVkIGZvciBvbmUgZnVuY3Rpb24gcmF0aGVyIHRoYW4KK2hhdmluZyB0aGVzZSBwaW5zIGRlZmluZWQgaW4gc2V2ZXJhbCBncm91cCBub2Rlcy4gIEl0IGFsc28gbWVhbnMgZWFjaCBvZgorInBpbmN0cmwtKiIgcGhhbmRsZSBpbiBjbGllbnQgZGV2aWNlIG5vZGUgc2hvdWxkIG9ubHkgaGF2ZSBvbmUgZ3JvdXAgbm9kZQorcG9pbnRlZCBpbiB0aGVyZSwgd2hpbGUgdGhlIHBoYW5kbGUgY2FuIGhhdmUgbXVsdGlwbGUgY29uZmlnIG5vZGUgcmVmZXJlbmNlZAordGhlcmUgdG8gYWRqdXN0IGNvbmZpZ3VyYXRpb25zIGZvciBzb21lIHBpbnMgaW4gdGhlIGdyb3VwLgorCitSZXF1aXJlZCBzdWJub2RlLXByb3BlcnRpZXM6CistIGZzbCxwaW5tdXgtaWRzOiBBbiBpbnRlZ2VyIGFycmF5LiAgRWFjaCBpbnRlZ2VyIGluIHRoZSBhcnJheSBzcGVjaWZ5IGEgcGluCisgIHdpdGggZ2l2ZW4gbXV4IGZ1bmN0aW9uLCB3aXRoIGJhbmssIHBpbiBhbmQgbXV4IHBhY2tlZCBhcyBiZWxvdy4KKworICAgIFsxNS4uMTJdIDogYmFuayBudW1iZXIKKyAgICBbMTEuLjRdICA6IHBpbiBudW1iZXIKKyAgICBbMy4uMF0gICA6IG11eCBzZWxlY3Rpb24KKworICBUaGlzIGludGVnZXIgd2l0aCBtdXggc2VsZWN0aW9uIHBhY2tlZCBpcyB1c2VkIGFzIGFuIGVudGl0eSBieSBib3RoIGdyb3VwCisgIGFuZCBjb25maWcgbm9kZXMgdG8gaWRlbnRpZnkgYSBwaW4uICBUaGUgbXV4IHNlbGVjdGlvbiBpbiB0aGUgaW50ZWdlciB0YWtlcworICBlZmZlY3RzIG9ubHkgb24gZ3JvdXAgbm9kZSwgYW5kIHdpbGwgZ2V0IGlnbm9yZWQgYnkgZHJpdmVyIHdpdGggY29uZmlnIG5vZGUsCisgIHNpbmNlIGNvbmZpZyBub2RlIGlzIG9ubHkgbWVhbnQgdG8gc2V0IHVwIHBpbiBjb25maWd1cmF0aW9ucy4KKworICBWYWxpZCB2YWx1ZXMgZm9yIHRoZXNlIGludGVnZXJzIGFyZSBsaXN0ZWQgYmVsb3cuCisKKy0gcmVnOiBTaG91bGQgYmUgdGhlIGluZGV4IG9mIHRoZSBncm91cCBub2RlcyBmb3Igc2FtZSBmdW5jdGlvbi4gIFRoaXMgcHJvcGVydHkKKyAgaXMgcmVxdWlyZWQgb25seSBmb3IgZ3JvdXAgbm9kZXMsIGFuZCBzaG91bGQgbm90IGJlIHByZXNlbnQgaW4gYW55IGNvbmZpZworICBub2Rlcy4KKworT3B0aW9uYWwgc3Vibm9kZS1wcm9wZXJ0aWVzOgorLSBmc2wsZHJpdmUtc3RyZW5ndGg6IEludGVnZXIuCisgICAgMDogTVhTX0RSSVZFXzRtQQorICAgIDE6IE1YU19EUklWRV84bUEKKyAgICAyOiBNWFNfRFJJVkVfMTJtQQorICAgIDM6IE1YU19EUklWRV8xNm1BCistIGZzbCx2b2x0YWdlOiBJbnRlZ2VyLgorICAgIDA6IE1YU19WT0xUQUdFX0xPVyAgLSAxLjggVgorICAgIDE6IE1YU19WT0xUQUdFX0hJR0ggLSAzLjMgVgorLSBmc2wscHVsbC11cDogSW50ZWdlci4KKyAgICAwOiBNWFNfUFVMTF9ESVNBQkxFIC0gRGlzYWJsZSB0aGUgaW50ZXJuYWwgcHVsbC11cAorICAgIDE6IE1YU19QVUxMX0VOQUJMRSAgLSBFbmFibGUgdGhlIGludGVybmFsIHB1bGwtdXAKKworTm90ZSB0aGF0IHdoZW4gZW5hYmxpbmcgdGhlIHB1bGwtdXAsIHRoZSBpbnRlcm5hbCBwYWQga2VlcGVyIGdldHMgZGlzYWJsZWQuCitBbHNvLCBzb21lIHBpbnMgZG9lc24ndCBoYXZlIGEgcHVsbCB1cCwgaW4gdGhhdCBjYXNlLCBzZXR0aW5nIHRoZSBmc2wscHVsbC11cAord2lsbCBvbmx5IGRpc2FibGUgdGhlIGludGVybmFsIHBhZCBrZWVwZXIuCisKK0V4YW1wbGVzOgorCitwaW5jdHJsQDgwMDE4MDAwIHsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwljb21wYXRpYmxlID0gImZzbCxpbXgyOC1waW5jdHJsIjsKKwlyZWcgPSA8MHg4MDAxODAwMCAyMDAwPjsKKworCW1tYzBfOGJpdF9waW5zX2E6IG1tYzAtOGJpdEAwIHsKKwkJcmVnID0gPDA+OworCQlmc2wscGlubXV4LWlkcyA9IDwKKwkJCU1YMjhfUEFEX1NTUDBfREFUQTBfX1NTUDBfRDAKKwkJCU1YMjhfUEFEX1NTUDBfREFUQTFfX1NTUDBfRDEKKwkJCU1YMjhfUEFEX1NTUDBfREFUQTJfX1NTUDBfRDIKKwkJCU1YMjhfUEFEX1NTUDBfREFUQTNfX1NTUDBfRDMKKwkJCU1YMjhfUEFEX1NTUDBfREFUQTRfX1NTUDBfRDQKKwkJCU1YMjhfUEFEX1NTUDBfREFUQTVfX1NTUDBfRDUKKwkJCU1YMjhfUEFEX1NTUDBfREFUQTZfX1NTUDBfRDYKKwkJCU1YMjhfUEFEX1NTUDBfREFUQTdfX1NTUDBfRDcKKwkJCU1YMjhfUEFEX1NTUDBfQ01EX19TU1AwX0NNRAorCQkJTVgyOF9QQURfU1NQMF9ERVRFQ1RfX1NTUDBfQ0FSRF9ERVRFQ1QKKwkJCU1YMjhfUEFEX1NTUDBfU0NLX19TU1AwX1NDSworCQk+OworCQlmc2wsZHJpdmUtc3RyZW5ndGggPSA8TVhTX0RSSVZFXzRtQT47CisJCWZzbCx2b2x0YWdlID0gPE1YU19WT0xUQUdFX0hJR0g+OworCQlmc2wscHVsbC11cCA9IDxNWFNfUFVMTF9FTkFCTEU+OworCX07CisKKwltbWNfY2RfY2ZnOiBtbWMtY2QtY2ZnIHsKKwkJZnNsLHBpbm11eC1pZHMgPSA8TVgyOF9QQURfU1NQMF9ERVRFQ1RfX1NTUDBfQ0FSRF9ERVRFQ1Q+OworCQlmc2wscHVsbC11cCA9IDxNWFNfUFVMTF9ESVNBQkxFPjsKKwl9OworCisJbW1jX3Nja19jZmc6IG1tYy1zY2stY2ZnIHsKKwkJZnNsLHBpbm11eC1pZHMgPSA8TVgyOF9QQURfU1NQMF9TQ0tfX1NTUDBfU0NLPjsKKwkJZnNsLGRyaXZlLXN0cmVuZ3RoID0gPE1YU19EUklWRV8xMm1BPjsKKwkJZnNsLHB1bGwtdXAgPSA8TVhTX1BVTExfRElTQUJMRT47CisJfTsKK307CisKK0luIHRoaXMgZXhhbXBsZSwgZ3JvdXAgbm9kZSBtbWMwLThiaXQgZGVmaW5lcyBhIGdyb3VwIG9mIHBpbnMgZm9yIG14cyBTU1AwCit0byBmdW5jdGlvbiBhcyBhIDgtYml0IG1tYyBkZXZpY2UsIHdpdGggOG1BLCAzLjNWIGFuZCBwdWxsLXVwIGNvbmZpZ3VyYXRpb25zCithcHBsaWVkIG9uIGFsbCB0aGVzZSBwaW5zLiAgQW5kIGNvbmZpZyBub2RlcyBtbWMtY2QtY2ZnIGFuZCBtbWMtc2NrLWNmZyBhcmUKK2FkanVzdGluZyB0aGUgY29uZmlndXJhdGlvbiBmb3IgcGlucyBjYXJkLWRldGVjdGlvbiBhbmQgY2xvY2sgZnJvbSB3aGF0IGdyb3VwCitub2RlIG1tYzAtOGJpdCBkZWZpbmVzLiAgT25seSB0aGUgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIHRvIGJlIGFkanVzdGVkIG5lZWQKK3RvIGJlIGxpc3RlZCBpbiB0aGUgY29uZmlnIG5vZGVzLgorCitWYWxpZCB2YWx1ZXMgZm9yIGkuTVgyOC9pLk1YMjMgcGlubXV4LWlkIGFyZSBkZWZpbmVkIGluCithcmNoL2FybS9ib290L2R0cy9pbXgyOC1waW5mdW5jLmggYW5kIGFyY2gvYXJtL2Jvb3QvZHRzL2lteDIzLXBpbmZ1bmMuaC4KK1RoZSBkZWZpbml0aW9ucyBmb3IgdGhlIHBhZGNvbmZpZyBwcm9wZXJ0aWVzIGNhbiBiZSBmb3VuZCBpbgorYXJjaC9hcm0vYm9vdC9kdHMvbXhzLXBpbmZ1bmMuaC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2ZzbCx2ZjYxMC1waW5jdHJsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2ZzbCx2ZjYxMC1waW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGNkZWI2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvZnNsLHZmNjEwLXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsNDEgQEAKK0ZyZWVzY2FsZSBWeWJyaWQgVkY2MTAgSU9NVVggQ29udHJvbGxlcgorCitQbGVhc2UgcmVmZXIgdG8gZnNsLGlteC1waW5jdHJsLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgY29tbW9uIGJpbmRpbmcgcGFydAorYW5kIHVzYWdlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiZnNsLHZmNjEwLWlvbXV4YyIKKy0gZnNsLHBpbnM6IHR3byBpbnRlZ2VycyBhcnJheSwgcmVwcmVzZW50cyBhIGdyb3VwIG9mIHBpbnMgbXV4IGFuZCBjb25maWcKKyAgc2V0dGluZy4gVGhlIGZvcm1hdCBpcyBmc2wscGlucyA9IDxQSU5fRlVOQ19JRCBDT05GSUc+LCBQSU5fRlVOQ19JRCBpcworICBhIHBpbiB3b3JraW5nIG9uIGEgc3BlY2lmaWMgZnVuY3Rpb24sIENPTkZJRyBpcyB0aGUgcGFkIHNldHRpbmcgdmFsdWUKKyAgc3VjaCBhcyBwdWxsLXVwLCBzcGVlZCwgb2RlIGZvciB0aGlzIHBpbi4gUGxlYXNlIHJlZmVyIHRvIFZ5YnJpZCBWRjYxMAorICBkYXRhc2hlZXQgZm9yIHRoZSB2YWxpZCBwYWQgY29uZmlnIHNldHRpbmdzLgorCitDT05GSUcgYml0cyBkZWZpbml0aW9uOgorUEFEX0NUTF9TUEVFRF9MT1cJCSgxIDw8IDEyKQorUEFEX0NUTF9TUEVFRF9NRUQJCSgyIDw8IDEyKQorUEFEX0NUTF9TUEVFRF9ISUdICQkoMyA8PCAxMikKK1BBRF9DVExfU1JFX0ZBU1QJCSgxIDw8IDExKQorUEFEX0NUTF9TUkVfU0xPVwkJKDAgPDwgMTEpCitQQURfQ1RMX09ERQkJCSgxIDw8IDEwKQorUEFEX0NUTF9IWVMJCQkoMSA8PCA5KQorUEFEX0NUTF9EU0VfRElTQUJMRQkJKDAgPDwgNikKK1BBRF9DVExfRFNFXzE1MG9obQkJKDEgPDwgNikKK1BBRF9DVExfRFNFXzc1b2htCQkoMiA8PCA2KQorUEFEX0NUTF9EU0VfNTBvaG0JCSgzIDw8IDYpCitQQURfQ1RMX0RTRV8zN29obQkJKDQgPDwgNikKK1BBRF9DVExfRFNFXzMwb2htCQkoNSA8PCA2KQorUEFEX0NUTF9EU0VfMjVvaG0JCSg2IDw8IDYpCitQQURfQ1RMX0RTRV8yMG9obQkJKDcgPDwgNikKK1BBRF9DVExfUFVTXzEwMEtfRE9XTgkJKDAgPDwgNCkKK1BBRF9DVExfUFVTXzQ3S19VUAkJKDEgPDwgNCkKK1BBRF9DVExfUFVTXzEwMEtfVVAJCSgyIDw8IDQpCitQQURfQ1RMX1BVU18yMktfVVAJCSgzIDw8IDQpCitQQURfQ1RMX1BLRQkJCSgxIDw8IDMpCitQQURfQ1RMX1BVRQkJCSgxIDw8IDIpCitQQURfQ1RMX09CRV9FTkFCTEUJCSgxIDw8IDEpCitQQURfQ1RMX0lCRV9FTkFCTEUJCSgxIDw8IDApCitQQURfQ1RMX09CRV9JQkVfRU5BQkxFCQkoMyA8PCAwKQorCitQbGVhc2UgcmVmZXIgdG8gdmY2MTAtcGluZnVuYy5oIGluIGRldmljZSB0cmVlIHNvdXJjZSBmb2xkZXIKK2ZvciBhbGwgYXZhaWxhYmxlIFBJTl9GVU5DX0lEIGZvciBWeWJyaWQgVkY2MTAuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9pbWcscGlzdGFjaGlvLXBpbmN0cmwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvaW1nLHBpc3RhY2hpby1waW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzI2MTU0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvaW1nLHBpc3RhY2hpby1waW5jdHJsLnR4dApAQCAtMCwwICsxLDIxNyBAQAorSW1hZ2luYXRpb24gVGVjaG5vbG9naWVzIFBpc3RhY2hpbyBTb0MgcGluIGNvbnRyb2xsZXJzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHBpbiBjb250cm9sbGVycyBvbiBQaXN0YWNoaW8gYXJlIGEgY29tYmluZWQgR1BJTyBjb250cm9sbGVyLCAoR1BJTykKK2ludGVycnVwdCBjb250cm9sbGVyLCBhbmQgcGlubXV4ICsgcGluY29uZiBkZXZpY2UuIFRoZSBzeXN0ZW0gKCJlYXN0IikgcGluCitjb250cm9sbGVyIG9uIFBpc3RhY2hpbyBoYXMgOTkgcGlucywgOTAgb2Ygd2hpY2ggYXJlIE1GSU9zIHdoaWNoIGNhbiBiZQorY29uZmlndXJlZCBhcyBHUElPcy4gVGhlIDkwIEdQSU9zIGFyZSBkaXZpZGVkIGludG8gNiBiYW5rcyBvZiB1cCB0byAxNiBHUElPcworZWFjaC4gVGhlIEdQSU8gYmFua3MgYXJlIHJlcHJlc2VudGVkIGFzIHN1Yi1ub2RlcyBvZiB0aGUgcGFkIGNvbnRyb2xsZXIgbm9kZS4KKworUGxlYXNlIHJlZmVyIHRvIHBpbmN0cmwtYmluZGluZ3MudHh0LCAuLi9ncGlvL2dwaW8udHh0LCBhbmQKKy4uL2ludGVycnVwdC1jb250cm9sbGVyL2ludGVycnVwdHMudHh0IGZvciBnZW5lcmljIGluZm9ybWF0aW9uIHJlZ2FyZGluZworcGluIGNvbnRyb2xsZXIsIEdQSU8sIGFuZCBpbnRlcnJ1cHQgYmluZGluZ3MuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHBpbiBjb250cm9sbGVyIG5vZGU6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIC0gY29tcGF0aWJsZTogImltZyxwaXN0YWNoaW8tc3lzdGVtLXBpbmN0cmwiLgorIC0gcmVnOiBBZGRyZXNzIHJhbmdlIG9mIHRoZSBwaW5jdHJsIHJlZ2lzdGVycy4KKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgR1BJTyBiYW5rIHN1Yi1ub2RlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgLSBpbnRlcnJ1cHRzOiBJbnRlcnJ1cHQgbGluZSBmb3IgdGhlIEdQSU8gYmFuay4KKyAtIGdwaW8tY29udHJvbGxlcjogSW5kaWNhdGVzIHRoZSBkZXZpY2UgaXMgYSBHUElPIGNvbnRyb2xsZXIuCisgLSAjZ3Bpby1jZWxsczogTXVzdCBiZSB0d28uIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBHUElPIHBpbiBudW1iZXIgYW5kIHRoZQorICAgc2Vjb25kIGNlbGwgaW5kaWNhdGVzIHRoZSBwb2xhcml0eS4gU2VlIDxkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaD4gZm9yCisgICBhIGxpc3Qgb2YgcG9zc2libGUgdmFsdWVzLgorIC0gaW50ZXJydXB0LWNvbnRyb2xsZXI6IEluZGljYXRlcyB0aGUgZGV2aWNlIGlzIGFuIGludGVycnVwdCBjb250cm9sbGVyLgorIC0gI2ludGVycnVwdC1jZWxsczogTXVzdCBiZSB0d28uIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBHUElPIHBpbiBudW1iZXIgYW5kCisgICB0aGUgc2Vjb25kIGNlbGwgZW5jb2RlcyB0aGUgaW50ZXJydXB0IGZsYWdzLiBTZWUKKyAgIDxkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaD4gZm9yIGEgbGlzdCBvZiB2YWxpZCBmbGFncy4KKworTm90ZSB0aGF0IHRoZSBOIEdQSU8gYmFuayBzdWItbm9kZXMgKm11c3QqIGJlIG5hbWVkIGdwaW8wLCBncGlvMSwgLi4uIGdwaW9OLTEuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHBpbiBjb25maWd1cmF0aW9uIHN1Yi1ub2RlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAtIHBpbnM6IExpc3Qgb2YgcGlucyB0byB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBhcHBsaWVzLiBTZWUgYmVsb3cgZm9yIGEKKyAgIGxpc3Qgb2YgcG9zc2libGUgcGlucy4KKworT3B0aW9uYWwgcHJvcGVydGllcyBmb3IgcGluIGNvbmZpZ3VyYXRpb24gc3ViLW5vZGVzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIC0gZnVuY3Rpb246IE11eCBmdW5jdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBwaW5zLiBUaGlzIGlzIG5vdCBhcHBsaWNhYmxlIGZvcgorICAgbm9uLU1GSU8gcGlucy4gU2VlIGJlbG93IGZvciBhIGxpc3Qgb2YgdmFsaWQgZnVuY3Rpb25zIGZvciBlYWNoIHBpbi4KKyAtIGJpYXMtaGlnaC1pbXBlZGFuY2U6IEVuYWJsZSBoaWdoLWltcGVkYW5jZSBtb2RlLgorIC0gYmlhcy1wdWxsLXVwOiBFbmFibGUgd2VhayBwdWxsLXVwLgorIC0gYmlhcy1wdWxsLWRvd246IEVuYWJsZSB3ZWFrIHB1bGwtZG93bi4KKyAtIGJpYXMtYnVzLWhvbGQ6IEVuYWJsZSBidXMta2VlcGVyIG1vZGUuCisgLSBkcml2ZS1zdHJlbmd0aDogRHJpdmUgc3RyZW5ndGggaW4gbUEuIFN1cHBvcnRlZCB2YWx1ZXM6IDIsIDQsIDgsIDEyLgorIC0gaW5wdXQtc2NobWl0dC1lbmFibGU6IEVuYWJsZSBTY2htaXR0IHRyaWdnZXIuCisgLSBpbnB1dC1zY2htaXR0LWRpc2FibGU6IERpc2FibGUgU2NobWl0dCB0cmlnZ2VyLgorIC0gc2xldy1yYXRlOiBTbGV3IHJhdGUgY29udHJvbC4gMCBmb3Igc2xvdywgMSBmb3IgZmFzdC4KKworUGluCQlGdW5jdGlvbnMKKy0tLQkJLS0tLS0tLS0tCittZmlvMAkJc3BpbTEKK21maW8xCQlzcGltMSwgc3BpbTAsIHVhcnQxCittZmlvMgkJc3BpbTEsIHNwaW0wLCB1YXJ0MQorbWZpbzMJCXNwaW0xCittZmlvNAkJc3BpbTEKK21maW81CQlzcGltMQorbWZpbzYJCXNwaW0xCittZmlvNwkJc3BpbTEKK21maW84CQlzcGltMAorbWZpbzkJCXNwaW0wCittZmlvMTAJCXNwaW0wCittZmlvMTEJCXNwaXMKK21maW8xMgkJc3BpcworbWZpbzEzCQlzcGlzCittZmlvMTQJCXNwaXMKK21maW8xNQkJc2Rob3N0LCBtaXBzX3RyYWNlX2NsaywgbWlwc190cmFjZV9kYXRhCittZmlvMTYJCXNkaG9zdCwgbWlwc190cmFjZV9kaW50LCBtaXBzX3RyYWNlX2RhdGEKK21maW8xNwkJc2Rob3N0LCBtaXBzX3RyYWNlX3RyaWdvdXQsIG1pcHNfdHJhY2VfZGF0YQorbWZpbzE4CQlzZGhvc3QsIG1pcHNfdHJhY2VfdHJpZ2luLCBtaXBzX3RyYWNlX2RhdGEKK21maW8xOQkJc2Rob3N0LCBtaXBzX3RyYWNlX2RtLCBtaXBzX3RyYWNlX2RhdGEKK21maW8yMAkJc2Rob3N0LCBtaXBzX3RyYWNlX3Byb2JlX24sIG1pcHNfdHJhY2VfZGF0YQorbWZpbzIxCQlzZGhvc3QsIG1pcHNfdHJhY2VfZGF0YQorbWZpbzIyCQlzZGhvc3QsIG1pcHNfdHJhY2VfZGF0YQorbWZpbzIzCQlzZGhvc3QKK21maW8yNAkJc2Rob3N0CittZmlvMjUJCXNkaG9zdAorbWZpbzI2CQlzZGhvc3QKK21maW8yNwkJc2Rob3N0CittZmlvMjgJCWkyYzAsIHNwaW0wCittZmlvMjkJCWkyYzAsIHNwaW0wCittZmlvMzAJCWkyYzEsIHNwaW0wCittZmlvMzEJCWkyYzEsIHNwaW0xCittZmlvMzIJCWkyYzIKK21maW8zMwkJaTJjMgorbWZpbzM0CQlpMmMzCittZmlvMzUJCWkyYzMKK21maW8zNgkJaTJzX291dCwgYXVkaW9fY2xrX2luCittZmlvMzcJCWkyc19vdXQsIGRlYnVnX3Jhd19jY2FfaW5kCittZmlvMzgJCWkyc19vdXQsIGRlYnVnX2VkX3NlYzIwX2NjYV9pbmQKK21maW8zOQkJaTJzX291dCwgZGVidWdfZWRfc2VjNDBfY2NhX2luZAorbWZpbzQwCQlpMnNfb3V0LCBkZWJ1Z19hZ2NfZG9uZV8wCittZmlvNDEJCWkyc19vdXQsIGRlYnVnX2FnY19kb25lXzEKK21maW80MgkJaTJzX291dCwgZGVidWdfZWRfY2NhX2luZAorbWZpbzQzCQlpMnNfb3V0LCBkZWJ1Z19zMmxfZG9uZQorbWZpbzQ0CQlpMnNfb3V0CittZmlvNDUJCWkyc19kYWNfY2xrLCBhdWRpb19zeW5jCittZmlvNDYJCWF1ZGlvX3RyaWdnZXIKK21maW80NwkJaTJzX2luCittZmlvNDgJCWkyc19pbgorbWZpbzQ5CQlpMnNfaW4KK21maW81MAkJaTJzX2luCittZmlvNTEJCWkyc19pbgorbWZpbzUyCQlpMnNfaW4KK21maW81MwkJaTJzX2luCittZmlvNTQJCWkyc19pbiwgc3BkaWZfaW4KK21maW81NQkJdWFydDAsIHNwaW0wLCBzcGltMQorbWZpbzU2CQl1YXJ0MCwgc3BpbTAsIHNwaW0xCittZmlvNTcJCXVhcnQwLCBzcGltMCwgc3BpbTEKK21maW81OAkJdWFydDAsIHNwaW0xCittZmlvNTkJCXVhcnQxCittZmlvNjAJCXVhcnQxCittZmlvNjEJCXNwZGlmX291dAorbWZpbzYyCQlzcGRpZl9pbgorbWZpbzYzCQlldGgsIG1pcHNfdHJhY2VfY2xrLCBtaXBzX3RyYWNlX2RhdGEKK21maW82NAkJZXRoLCBtaXBzX3RyYWNlX2RpbnQsIG1pcHNfdHJhY2VfZGF0YQorbWZpbzY1CQlldGgsIG1pcHNfdHJhY2VfdHJpZ291dCwgbWlwc190cmFjZV9kYXRhCittZmlvNjYJCWV0aCwgbWlwc190cmFjZV90cmlnaW4sIG1pcHNfdHJhY2VfZGF0YQorbWZpbzY3CQlldGgsIG1pcHNfdHJhY2VfZG0sIG1pcHNfdHJhY2VfZGF0YQorbWZpbzY4CQlldGgsIG1pcHNfdHJhY2VfcHJvYmVfbiwgbWlwc190cmFjZV9kYXRhCittZmlvNjkJCWV0aCwgbWlwc190cmFjZV9kYXRhCittZmlvNzAJCWV0aCwgbWlwc190cmFjZV9kYXRhCittZmlvNzEJCWV0aAorbWZpbzcyCQlpcgorbWZpbzczCQlwd21wZG0sIG1pcHNfdHJhY2VfY2xrLCBzcmFtX2RlYnVnCittZmlvNzQJCXB3bXBkbSwgbWlwc190cmFjZV9kaW50LCBzcmFtX2RlYnVnCittZmlvNzUJCXB3bXBkbSwgbWlwc190cmFjZV90cmlnb3V0LCByb21fZGVidWcKK21maW83NgkJcHdtcGRtLCBtaXBzX3RyYWNlX3RyaWdpbiwgcm9tX2RlYnVnCittZmlvNzcJCW1kY19kZWJ1ZywgbWlwc190cmFjZV9kbSwgcnB1X2RlYnVnCittZmlvNzgJCW1kY19kZWJ1ZywgbWlwc190cmFjZV9wcm9iZV9uLCBycHVfZGVidWcKK21maW83OQkJZGRyX2RlYnVnLCBtaXBzX3RyYWNlX2RhdGEsIG1pcHNfZGVidWcKK21maW84MAkJZGRyX2RlYnVnLCBtaXBzX3RyYWNlX2RhdGEsIG1pcHNfZGVidWcKK21maW84MQkJZHJlcTAsIG1pcHNfdHJhY2VfZGF0YSwgZXRoX2RlYnVnCittZmlvODIJCWRyZXExLCBtaXBzX3RyYWNlX2RhdGEsIGV0aF9kZWJ1ZworbWZpbzgzCQltaXBzX3BsbF9sb2NrLCBtaXBzX3RyYWNlX2RhdGEsIHVzYl9kZWJ1ZworbWZpbzg0CQlhdWRpb19wbGxfbG9jaywgbWlwc190cmFjZV9kYXRhLCB1c2JfZGVidWcKK21maW84NQkJcnB1X3ZfcGxsX2xvY2ssIG1pcHNfdHJhY2VfZGF0YSwgc2Rob3N0X2RlYnVnCittZmlvODYJCXJwdV9sX3BsbF9sb2NrLCBtaXBzX3RyYWNlX2RhdGEsIHNkaG9zdF9kZWJ1ZworbWZpbzg3CQlzeXNfcGxsX2xvY2ssIGRyZXEyLCBzb2NpZl9kZWJ1ZworbWZpbzg4CQl3aWZpX3BsbF9sb2NrLCBkcmVxMywgc29jaWZfZGVidWcKK21maW84OQkJYnRfcGxsX2xvY2ssIGRyZXE0LCBkcmVxNQordGNrCit0cnN0bgordGRpCit0bXMKK3RkbworanRhZ19jb21wbHkKK3NhZmVfbW9kZQorcG9yX2Rpc2FibGUKK3Jlc2V0bgorCitFeGFtcGxlOgorLS0tLS0tLS0KK3BpbmN0cmxAMTgxMDFDMDAgeworCWNvbXBhdGlibGUgPSAiaW1nLHBpc3RhY2hpby1zeXN0ZW0tcGluY3RybCI7CisJcmVnID0gPDB4MTgxMDFDMDAgMHg0MDA+OworCisJZ3BpbzA6IGdwaW8wIHsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU0hBUkVEIDcxIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCisJCWdwaW8tY29udHJvbGxlcjsKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJfTsKKworCS4uLgorCisJZ3BpbzU6IGdwaW81IHsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU0hBUkVEIDc2IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCisJCWdwaW8tY29udHJvbGxlcjsKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJfTsKKworCS4uLgorCisJdWFydDBfeGZlcjogdWFydDAteGZlciB7CisJCXVhcnQwLXJ4ZCB7CisJCQlwaW5zID0gIm1maW81NSI7CisJCQlmdW5jdGlvbiA9ICJ1YXJ0MCI7CisJCX07CisJCXVhcnQwLXR4ZCB7CisJCQlwaW5zID0gIm1maW81NiI7CisJCQlmdW5jdGlvbiA9ICJ1YXJ0MCI7CisJCX07CisJfTsKKworCXVhcnQwX3J0c19jdHM6IHVhcnQwLXJ0cy1jdHMgeworCQl1YXJ0MC1ydHMgeworCQkJICBwaW5zID0gIm1maW81NyI7CisJCQkgIGZ1bmN0aW9uID0gInVhcnQwIjsKKwkJfTsKKwkJdWFydDAtY3RzIHsKKwkJCSAgcGlucyA9ICJtZmlvNTgiOworCQkJICBmdW5jdGlvbiA9ICJ1YXJ0MCI7CisJCX07CisJfTsKK307CisKK3VhcnRALi4uIHsKKwkuLi4KKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCXBpbmN0cmwtMCA9IDwmdWFydDBfeGZlcj4sIDwmdWFydDBfcnRzX2N0cz47CisJLi4uCit9OworCit1c2JfdmJ1czogZml4ZWQtcmVndWxhdG9yIHsKKwkuLi4KKwlncGlvID0gPCZncGlvNSA2IEdQSU9fQUNUSVZFX0hJR0g+OworCS4uLgorfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2ltZyx0ejEwOTAtcGRjLXBpbmN0cmwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvaW1nLHR6MTA5MC1wZGMtcGluY3RybC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFiOTQzYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2ltZyx0ejEwOTAtcGRjLXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsMTI3IEBACitJbWdUZWMgVFoxMDkwIFBEQyBwaW4gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiaW1nLHR6MTA5MC1wZGMtcGluY3RybCIKKy0gcmVnOiBTaG91bGQgY29udGFpbiB0aGUgcmVnaXN0ZXIgcGh5c2ljYWwgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZQorICBTT0NfR1BJT19DT05UUk9MIHJlZ2lzdGVycyBpbiB0aGUgUERDIHJlZ2lzdGVyIHJlZ2lvbi4KKworUGxlYXNlIHJlZmVyIHRvIHBpbmN0cmwtYmluZGluZ3MudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBkZXRhaWxzIG9mIHRoZQorY29tbW9uIHBpbmN0cmwgYmluZGluZ3MgdXNlZCBieSBjbGllbnQgZGV2aWNlcywgaW5jbHVkaW5nIHRoZSBtZWFuaW5nIG9mIHRoZQorcGhyYXNlICJwaW4gY29uZmlndXJhdGlvbiBub2RlIi4KKworVFoxMDkwLVBEQydzIHBpbiBjb25maWd1cmF0aW9uIG5vZGVzIGFjdCBhcyBhIGNvbnRhaW5lciBmb3IgYW4gYXJiaXRyYXJ5IG51bWJlcgorb2Ygc3Vibm9kZXMuIEVhY2ggb2YgdGhlc2Ugc3Vibm9kZXMgcmVwcmVzZW50cyBzb21lIGRlc2lyZWQgY29uZmlndXJhdGlvbiBmb3IgYQorcGluLCBhIGdyb3VwLCBvciBhIGxpc3Qgb2YgcGlucyBvciBncm91cHMuIFRoaXMgY29uZmlndXJhdGlvbiBjYW4gaW5jbHVkZSB0aGUKK211eCBmdW5jdGlvbiB0byBzZWxlY3Qgb24gdGhvc2UgcGluKHMpL2dyb3VwKHMpLCBhbmQgdmFyaW91cyBwaW4gY29uZmlndXJhdGlvbgorcGFyYW1ldGVycywgc3VjaCBhcyBwdWxsLXVwLCBkcml2ZSBzdHJlbmd0aCwgZXRjLgorCitUaGUgbmFtZSBvZiBlYWNoIHN1Ym5vZGUgaXMgbm90IGltcG9ydGFudDsgYWxsIHN1Ym5vZGVzIHNob3VsZCBiZSBlbnVtZXJhdGVkCithbmQgcHJvY2Vzc2VkIHB1cmVseSBiYXNlZCBvbiB0aGVpciBjb250ZW50LgorCitFYWNoIHN1Ym5vZGUgb25seSBhZmZlY3RzIHRob3NlIHBhcmFtZXRlcnMgdGhhdCBhcmUgZXhwbGljaXRseSBsaXN0ZWQuIEluCitvdGhlciB3b3JkcywgYSBzdWJub2RlIHRoYXQgbGlzdHMgYSBtdXggZnVuY3Rpb24gYnV0IG5vIHBpbiBjb25maWd1cmF0aW9uCitwYXJhbWV0ZXJzIGltcGxpZXMgbm8gaW5mb3JtYXRpb24gYWJvdXQgYW55IHBpbiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuCitTaW1pbGFybHksIGEgcGluIHN1Ym5vZGUgdGhhdCBkZXNjcmliZXMgYSBwdWxsdXAgcGFyYW1ldGVyIGltcGxpZXMgbm8KK2luZm9ybWF0aW9uIGFib3V0IGUuZy4gdGhlIG11eCBmdW5jdGlvbi4gRm9yIHRoaXMgcmVhc29uLCBldmVuIHNlZW1pbmdseSBib29sZWFuCit2YWx1ZXMgYXJlIGFjdHVhbGx5IHRyaXN0YXRlcyBpbiB0aGlzIGJpbmRpbmc6IHVuc3BlY2lmaWVkLCBvZmYsIG9yIG9uLgorVW5zcGVjaWZpZWQgaXMgcmVwcmVzZW50ZWQgYXMgYW4gYWJzZW50IHByb3BlcnR5LCBhbmQgb2ZmL29uIGFyZSByZXByZXNlbnRlZCBhcworaW50ZWdlciB2YWx1ZXMgMCBhbmQgMS4KKworUmVxdWlyZWQgc3Vibm9kZS1wcm9wZXJ0aWVzOgorLSB0ejEwOTAscGlucyA6IEFuIGFycmF5IG9mIHN0cmluZ3MuIEVhY2ggc3RyaW5nIGNvbnRhaW5zIHRoZSBuYW1lIG9mIGEgcGluIG9yCisgIGdyb3VwLiBWYWxpZCB2YWx1ZXMgZm9yIHRoZXNlIG5hbWVzIGFyZSBsaXN0ZWQgYmVsb3cuCisKK09wdGlvbmFsIHN1Ym5vZGUtcHJvcGVydGllczoKKy0gdHoxMDkwLGZ1bmN0aW9uOiBBIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0byBtdXggdG8gdGhlCisgIHBpbiBvciBncm91cC4gVmFsaWQgdmFsdWVzIGZvciBmdW5jdGlvbiBuYW1lcyBhcmUgbGlzdGVkIGJlbG93LCBpbmNsdWRpbmcKKyAgd2hpY2ggcGluZ3JvdXBzIGNhbiBiZSBtdXhlZCB0byB0aGVtLgorLSBzdXBwb3J0ZWQgZ2VuZXJpYyBwaW5jb25maWcgcHJvcGVydGllcyAoZm9yIGZ1cnRoZXIgZGV0YWlscyBzZWUKKyAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcGluY3RybC1iaW5kaW5ncy50eHQpOgorICAtIGJpYXMtZGlzYWJsZQorICAtIGJpYXMtaGlnaC1pbXBlZGFuY2UKKyAgLSBiaWFzLWJ1cy1ob2xkCisgIC0gYmlhcy1wdWxsLXVwCisgIC0gYmlhcy1wdWxsLWRvd24KKyAgLSBpbnB1dC1zY2htaXR0LWVuYWJsZQorICAtIGlucHV0LXNjaG1pdHQtZGlzYWJsZQorICAtIGRyaXZlLXN0cmVuZ3RoOiBJbnRlZ2VyLCBjb250cm9sIGRyaXZlIHN0cmVuZ3RoIG9mIHBpbnMgaW4gbUEuCisgICAgICAyOiAybUEKKyAgICAgIDQ6IDRtQQorICAgICAgODogOG1BCisgICAgICAxMjogMTJtQQorICAtIGxvdy1wb3dlci1lbmFibGU6IEZsYWcsIHBvd2VyLW9uLXN0YXJ0IHdlYWsgcHVsbC1kb3duIGZvciBpbnZhbGlkIHBvd2VyLgorICAtIGxvdy1wb3dlci1kaXNhYmxlOiBGbGFnLCBwb3dlci1vbi1zdGFydCB3ZWFrIHB1bGwtZG93biBkaXNhYmxlZC4KKworTm90ZSB0aGF0IG1hbnkgb2YgdGhlc2UgcHJvcGVydGllcyBhcmUgb25seSB2YWxpZCBmb3IgY2VydGFpbiBzcGVjaWZpYyBwaW5zCitvciBncm91cHMuIFNlZSB0aGUgVFoxMDkwIFRSTSBmb3IgY29tcGxldGUgZGV0YWlscyByZWdhcmRpbmcgd2hpY2ggZ3JvdXBzCitzdXBwb3J0IHdoaWNoIGZ1bmN0aW9uYWxpdHkuIFRoZSBMaW51eCBwaW5jdHJsIGRyaXZlciBtYXkgYWxzbyBiZSBhIHVzZWZ1bAorcmVmZXJlbmNlLgorCitWYWxpZCB2YWx1ZXMgZm9yIHBpbiBhbmQgZ3JvdXAgbmFtZXMgYXJlOgorCisgIHBpbnM6CisKKyAgICBUaGVzZSBhbGwgc3VwcG9ydCBiaWFzLWhpZ2gtaW1wZWRpYW5jZSwgYmlhcy1wdWxsLXVwLCBiaWFzLXB1bGwtZG93biwgYW5kCisgICAgYmlhcy1idXMtaG9sZCAod2hpY2ggY2FuIGFsc28gYmUgcHJvdmlkZWQgdG8gYW55IG9mIHRoZSBncm91cHMgYmVsb3cgdG8gc2V0CisgICAgaXQgZm9yIGFsbCBncGlvIHBpbnMgaW4gdGhhdCBncm91cCkuCisKKyAgICBncGlvMCwgZ3BpbzEsIHN5c193YWtlMCwgc3lzX3dha2UxLCBzeXNfd2FrZTIsIGlyX2RhdGEsIGV4dF9wb3dlci4KKworICBtdXggZ3JvdXBzOgorCisgICAgVGhlc2UgYWxsIHN1cHBvcnQgZnVuY3Rpb24uCisKKyAgICBncGlvMAorICAgICAgICBwaW5zOiAgICAgICBncGlvMC4KKyAgICAgICAgZnVuY3Rpb246ICAgaXJfbW9kX3N0YWJsZV9vdXQuCisgICAgZ3BpbzEKKyAgICAgICAgcGluczogICAgICAgZ3BpbzEuCisgICAgICAgIGZ1bmN0aW9uOiAgIGlyX21vZF9wb3dlcl9vdXQuCisKKyAgZHJpdmUgZ3JvdXBzOgorCisgICAgVGhlc2Ugc3VwcG9ydCBpbnB1dC1zY2htaXR0LWVuYWJsZSwgaW5wdXQtc2NobWl0dC1kaXNhYmxlLAorICAgIGRyaXZlLXN0cmVuZ3RoLCBsb3ctcG93ZXItZW5hYmxlLCBhbmQgbG93LXBvd2VyLWRpc2FibGUuCisKKyAgICBwZGMKKyAgICAgICAgcGluczogICBncGlvMCwgZ3BpbzEsIHN5c193YWtlMCwgc3lzX3dha2UxLCBzeXNfd2FrZTIsIGlyX2RhdGEsCisgICAgICAgICAgICAgICAgZXh0X3Bvd2VyLgorCitFeGFtcGxlOgorCisJcGluY3RybF9wZGM6IHBpbmN0cmxAMDIwMDY1MDAgeworCQkjZ3Bpby1yYW5nZS1jZWxscyA9IDwzPjsKKwkJY29tcGF0aWJsZSA9ICJpbWcsdHoxMDkwLXBkYy1waW5jdHJsIjsKKwkJcmVnID0gPDB4MDIwMDY1MDAgMHgxMDA+OworCX07CisKK0V4YW1wbGUgYm9hcmQgZmlsZSBleHRyYWN0czoKKworCSZwaW5jdHJsX3BkYyB7CisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmc3lzd2FrZV9kZWZhdWx0PjsKKworCQlzeXN3YWtlX2RlZmF1bHQ6IHN5c3dha2VzIHsKKwkJCXN5c3dha2VfY2ZnIHsKKwkJCQl0ejEwOTAscGlucyA9CSJzeXNfd2FrZTAiLAorCQkJCQkJInN5c193YWtlMSIsCisJCQkJCQkic3lzX3dha2UyIjsKKwkJCQlwdWxsLXVwOworCQkJfTsKKwkJfTsKKwkJaXJtb2RfZGVmYXVsdDogaXJtb2QgeworCQkJZ3BpbzBfY2ZnIHsKKwkJCQl0ejEwOTAscGlucyA9CSJncGlvMCI7CisJCQkJdHoxMDkwLGZ1bmN0aW9uID0gImlyX21vZF9zdGFibGVfb3V0IjsKKwkJCX07CisJCQlncGlvMV9jZmcgeworCQkJCXR6MTA5MCxwaW5zID0JImdwaW8xIjsKKwkJCQl0ejEwOTAsZnVuY3Rpb24gPSAiaXJfbW9kX3Bvd2VyX291dCI7CisJCQl9OworCQl9OworCX07CisKKwlpcjogaXJAMDIwMDYyMDAgeworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JmlybW9kX2RlZmF1bHQ+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9pbWcsdHoxMDkwLXBpbmN0cmwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvaW1nLHR6MTA5MC1waW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDlmYWE4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvaW1nLHR6MTA5MC1waW5jdHJsLnR4dApAQCAtMCwwICsxLDIyNyBAQAorSW1nVGVjIFRaMTA5MCBwaW4gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiaW1nLHR6MTA5MC1waW5jdHJsIgorLSByZWc6IFNob3VsZCBjb250YWluIHRoZSByZWdpc3RlciBwaHlzaWNhbCBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHBhZAorICBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyAoQ1JfUEFEU18qIGFuZCBDUl9JRl9DVEwwKS4KKworUGxlYXNlIHJlZmVyIHRvIHBpbmN0cmwtYmluZGluZ3MudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBkZXRhaWxzIG9mIHRoZQorY29tbW9uIHBpbmN0cmwgYmluZGluZ3MgdXNlZCBieSBjbGllbnQgZGV2aWNlcywgaW5jbHVkaW5nIHRoZSBtZWFuaW5nIG9mIHRoZQorcGhyYXNlICJwaW4gY29uZmlndXJhdGlvbiBub2RlIi4KKworVFoxMDkwJ3MgcGluIGNvbmZpZ3VyYXRpb24gbm9kZXMgYWN0IGFzIGEgY29udGFpbmVyIGZvciBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mCitzdWJub2Rlcy4gRWFjaCBvZiB0aGVzZSBzdWJub2RlcyByZXByZXNlbnRzIHNvbWUgZGVzaXJlZCBjb25maWd1cmF0aW9uIGZvciBhCitwaW4sIGEgZ3JvdXAsIG9yIGEgbGlzdCBvZiBwaW5zIG9yIGdyb3Vwcy4gVGhpcyBjb25maWd1cmF0aW9uIGNhbiBpbmNsdWRlIHRoZQorbXV4IGZ1bmN0aW9uIHRvIHNlbGVjdCBvbiB0aG9zZSBwaW4ocykvZ3JvdXAocyksIGFuZCB2YXJpb3VzIHBpbiBjb25maWd1cmF0aW9uCitwYXJhbWV0ZXJzLCBzdWNoIGFzIHB1bGwtdXAsIGRyaXZlIHN0cmVuZ3RoLCBldGMuCisKK1RoZSBuYW1lIG9mIGVhY2ggc3Vibm9kZSBpcyBub3QgaW1wb3J0YW50OyBhbGwgc3Vibm9kZXMgc2hvdWxkIGJlIGVudW1lcmF0ZWQKK2FuZCBwcm9jZXNzZWQgcHVyZWx5IGJhc2VkIG9uIHRoZWlyIGNvbnRlbnQuCisKK0VhY2ggc3Vibm9kZSBvbmx5IGFmZmVjdHMgdGhvc2UgcGFyYW1ldGVycyB0aGF0IGFyZSBleHBsaWNpdGx5IGxpc3RlZC4gSW4KK290aGVyIHdvcmRzLCBhIHN1Ym5vZGUgdGhhdCBsaXN0cyBhIG11eCBmdW5jdGlvbiBidXQgbm8gcGluIGNvbmZpZ3VyYXRpb24KK3BhcmFtZXRlcnMgaW1wbGllcyBubyBpbmZvcm1hdGlvbiBhYm91dCBhbnkgcGluIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4KK1NpbWlsYXJseSwgYSBwaW4gc3Vibm9kZSB0aGF0IGRlc2NyaWJlcyBhIHB1bGx1cCBwYXJhbWV0ZXIgaW1wbGllcyBubworaW5mb3JtYXRpb24gYWJvdXQgZS5nLiB0aGUgbXV4IGZ1bmN0aW9uLiBGb3IgdGhpcyByZWFzb24sIGV2ZW4gc2VlbWluZ2x5IGJvb2xlYW4KK3ZhbHVlcyBhcmUgYWN0dWFsbHkgdHJpc3RhdGVzIGluIHRoaXMgYmluZGluZzogdW5zcGVjaWZpZWQsIG9mZiwgb3Igb24uCitVbnNwZWNpZmllZCBpcyByZXByZXNlbnRlZCBhcyBhbiBhYnNlbnQgcHJvcGVydHksIGFuZCBvZmYvb24gYXJlIHJlcHJlc2VudGVkIGFzCitpbnRlZ2VyIHZhbHVlcyAwIGFuZCAxLgorCitSZXF1aXJlZCBzdWJub2RlLXByb3BlcnRpZXM6CistIHR6MTA5MCxwaW5zIDogQW4gYXJyYXkgb2Ygc3RyaW5ncy4gRWFjaCBzdHJpbmcgY29udGFpbnMgdGhlIG5hbWUgb2YgYSBwaW4gb3IKKyAgZ3JvdXAuIFZhbGlkIHZhbHVlcyBmb3IgdGhlc2UgbmFtZXMgYXJlIGxpc3RlZCBiZWxvdy4KKworT3B0aW9uYWwgc3Vibm9kZS1wcm9wZXJ0aWVzOgorLSB0ejEwOTAsZnVuY3Rpb246IEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHRvIG11eCB0byB0aGUKKyAgcGluIG9yIGdyb3VwLiBWYWxpZCB2YWx1ZXMgZm9yIGZ1bmN0aW9uIG5hbWVzIGFyZSBsaXN0ZWQgYmVsb3csIGluY2x1ZGluZworICB3aGljaCBwaW5ncm91cHMgY2FuIGJlIG11eGVkIHRvIHRoZW0uCistIHN1cHBvcnRlZCBnZW5lcmljIHBpbmNvbmZpZyBwcm9wZXJ0aWVzIChmb3IgZnVydGhlciBkZXRhaWxzIHNlZQorICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9waW5jdHJsLWJpbmRpbmdzLnR4dCk6CisgIC0gYmlhcy1kaXNhYmxlCisgIC0gYmlhcy1oaWdoLWltcGVkYW5jZQorICAtIGJpYXMtYnVzLWhvbGQKKyAgLSBiaWFzLXB1bGwtdXAKKyAgLSBiaWFzLXB1bGwtZG93bgorICAtIGlucHV0LXNjaG1pdHQtZW5hYmxlCisgIC0gaW5wdXQtc2NobWl0dC1kaXNhYmxlCisgIC0gZHJpdmUtc3RyZW5ndGg6IEludGVnZXIsIGNvbnRyb2wgZHJpdmUgc3RyZW5ndGggb2YgcGlucyBpbiBtQS4KKyAgICAgIDI6IDJtQQorICAgICAgNDogNG1BCisgICAgICA4OiA4bUEKKyAgICAgIDEyOiAxMm1BCisKKworTm90ZSB0aGF0IG1hbnkgb2YgdGhlc2UgcHJvcGVydGllcyBhcmUgb25seSB2YWxpZCBmb3IgY2VydGFpbiBzcGVjaWZpYyBwaW5zCitvciBncm91cHMuIFNlZSB0aGUgVFoxMDkwIFRSTSBmb3IgY29tcGxldGUgZGV0YWlscyByZWdhcmRpbmcgd2hpY2ggZ3JvdXBzCitzdXBwb3J0IHdoaWNoIGZ1bmN0aW9uYWxpdHkuIFRoZSBMaW51eCBwaW5jdHJsIGRyaXZlciBtYXkgYWxzbyBiZSBhIHVzZWZ1bAorcmVmZXJlbmNlLgorCitWYWxpZCB2YWx1ZXMgZm9yIHBpbiBhbmQgZ3JvdXAgbmFtZXMgYXJlOgorCisgIGdwaW8gcGluczoKKworICAgIFRoZXNlIGFsbCBzdXBwb3J0IGJpYXMtaGlnaC1pbXBlZGlhbmNlLCBiaWFzLXB1bGwtdXAsIGJpYXMtcHVsbC1kb3duLCBhbmQKKyAgICBiaWFzLWJ1cy1ob2xkICh3aGljaCBjYW4gYWxzbyBiZSBwcm92aWRlZCB0byBhbnkgb2YgdGhlIGdyb3VwcyBiZWxvdyB0byBzZXQKKyAgICBpdCBmb3IgYWxsIHBpbnMgaW4gdGhhdCBncm91cCkuCisKKyAgICBUaGV5IGFsc28gYWxsIHN1cHBvcnQgdGhlIHNvbWUgZm9ybSBvZiBtdXhpbmcuIEFueSBwaW5zIHdoaWNoIGFyZSBjb250YWluZWQKKyAgICBpbiBvbmUgb2YgdGhlIG11eCBncm91cHMgKHNlZSBiZWxvdykgY2FuIGJlIG11eGVkIG9ubHkgdG8gdGhlIGZ1bmN0aW9ucworICAgIHN1cHBvcnRlZCBieSB0aGUgbXV4IGdyb3VwLiBBbGwgb3RoZXIgcGlucyBjYW4gYmUgbXV4ZWQgdG8gdGhlICJwZXJpcCIKKyAgICBmdW5jdGlvbiB3aGljaCBlbmFibGVzIHRoZW0gd2l0aCB0aGVpciBpbnRlbmRlZCBwZXJpcGhlcmFsLgorCisgICAgRGlmZmVyZW50IHBpbnMgaW4gdGhlIHNhbWUgbXV4IGdyb3VwIGNhbm5vdCBiZSBtdXhlZCB0byBkaWZmZXJlbnQgZnVuY3Rpb25zLAorICAgIGhvd2V2ZXIgaXQgaXMgcG9zc2libGUgdG8gbXV4IG9ubHkgYSBzdWJzZXQgb2YgdGhlIHBpbnMgaW4gYSBtdXggZ3JvdXAgdG8gYQorICAgIHBhcnRpY3VsYXIgZnVuY3Rpb24gYW5kIGxlYXZlIHRoZSByZW1haW5pbmcgcGlucyB1bm11eGVkLiBUaGlzIGlzIHVzZWZ1bCBpZgorICAgIHRoZSBib2FyZCBjb25uZWN0cyBjZXJ0YWluIHBpbnMgaW4gYSBncm91cCB0byBvdGhlciBkZXZpY2VzIHRvIGJlIGNvbnRyb2xsZWQKKyAgICBieSBHUElPLCBhbmQgeW91IGRvbid0IHdhbnQgdGhlIHVzdWFsIHBlcmlwaGVyYWwgdG8gaGF2ZSBhbnkgY29udHJvbCBvZiB0aGUKKyAgICBwaW4uCisKKyAgICBhbnRfc2VsMCwgYW50X3NlbDEsIGdhaW4wLCBnYWluMSwgZ2FpbjIsIGdhaW4zLCBnYWluNCwgZ2FpbjUsIGdhaW42LCBnYWluNywKKyAgICBpMnNfYmNsa19vdXQsIGkyc19kaW4sIGkyc19kb3V0MCwgaTJzX2RvdXQxLCBpMnNfZG91dDIsIGkyc19scmNsa19vdXQsCisgICAgaTJzX21jbGssIHBhX29uLCBwZG1fYSwgcGRtX2IsIHBkbV9jLCBwZG1fZCwgcGxsX29uLCByeF9ocCwgcnhfb24sCisgICAgc2NiMF9zY2xrLCBzY2IwX3NkYXQsIHNjYjFfc2Nsaywgc2NiMV9zZGF0LCBzY2IyX3NjbGssIHNjYjJfc2RhdCwgc2RoX2NkLAorICAgIHNkaF9jbGtfaW4sIHNkaF93cCwgc2Rpb19jbGssIHNkaW9fY21kLCBzZGlvX2QwLCBzZGlvX2QxLCBzZGlvX2QyLCBzZGlvX2QzLAorICAgIHNwaTBfY3MwLCBzcGkwX2NzMSwgc3BpMF9jczIsIHNwaTBfZGluLCBzcGkwX2RvdXQsIHNwaTBfbWNsaywgc3BpMV9jczAsCisgICAgc3BpMV9jczEsIHNwaTFfY3MyLCBzcGkxX2Rpbiwgc3BpMV9kb3V0LCBzcGkxX21jbGssIHRmdF9ibGFua19scywgdGZ0X2JsdWUwLAorICAgIHRmdF9ibHVlMSwgdGZ0X2JsdWUyLCB0ZnRfYmx1ZTMsIHRmdF9ibHVlNCwgdGZ0X2JsdWU1LCB0ZnRfYmx1ZTYsIHRmdF9ibHVlNywKKyAgICB0ZnRfZ3JlZW4wLCB0ZnRfZ3JlZW4xLCB0ZnRfZ3JlZW4yLCB0ZnRfZ3JlZW4zLCB0ZnRfZ3JlZW40LCB0ZnRfZ3JlZW41LAorICAgIHRmdF9ncmVlbjYsIHRmdF9ncmVlbjcsIHRmdF9oc3luY19uciwgdGZ0X3BhbmVsY2xrLCB0ZnRfcHdyc2F2ZSwgdGZ0X3JlZDAsCisgICAgdGZ0X3JlZDEsIHRmdF9yZWQyLCB0ZnRfcmVkMywgdGZ0X3JlZDQsIHRmdF9yZWQ1LCB0ZnRfcmVkNiwgdGZ0X3JlZDcsCisgICAgdGZ0X3ZkMTJhY2IsIHRmdF92ZGRlbl9nZCwgdGZ0X3ZzeW5jX25zLCB0eF9vbiwgdWFydDBfY3RzLCB1YXJ0MF9ydHMsCisgICAgdWFydDBfcnhkLCB1YXJ0MF90eGQsIHVhcnQxX3J4ZCwgdWFydDFfdHhkLgorCisgICAgICAgIGJpYXMtaGlnaC1pbXBlZGlhbmNlOiAgc3VwcG9ydGVkLgorICAgICAgICBiaWFzLXB1bGwtdXA6ICAgICAgICAgIHN1cHBvcnRlZC4KKyAgICAgICAgYmlhcy1wdWxsLWRvd246ICAgICAgICBzdXBwb3J0ZWQuCisgICAgICAgIGJpYXMtYnVzLWhvbGQ6ICAgICAgICAgc3VwcG9ydGVkLgorICAgICAgICBmdW5jdGlvbjogICAgICAgICAgICAgIHBlcmlwIG9yIHRob3NlIHN1cHBvcnRlZCBieSBwaW4ncyBtdXggZ3JvdXAuCisKKyAgb3RoZXIgcGluczoKKworICAgIFRoZXNlIG90aGVyIHBpbnMgYXJlIHBhcnQgb2YgdmFyaW91cyBwaW4gZ3JvdXBzIGJlbG93LCBidXQgY2FuJ3QgYmUKKyAgICBjb250cm9sbGVkIGFzIEdQSU9zLiBUaGV5IGRvIGhvd2V2ZXIgc3VwcG9ydCBiaWFzLWhpZ2gtaW1wZWRpYW5jZSwKKyAgICBiaWFzLXB1bGwtdXAsIGJpYXMtcHVsbC1kb3duLCBhbmQgYmlhcy1idXMtaG9sZCAod2hpY2ggY2FuIGFsc28gYmUgcHJvdmlkZWQKKyAgICB0byBhbnkgb2YgdGhlIGdyb3VwcyBiZWxvdyB0byBzZXQgaXQgZm9yIGFsbCBwaW5zIGluIHRoYXQgZ3JvdXApLgorCisgICAgY2xrX291dDAsIGNsa19vdXQxLCB0Y2ssIHRkaSwgdGRvLCB0bXMsIHRyc3QuCisKKyAgICAgICAgYmlhcy1oaWdoLWltcGVkaWFuY2U6ICBzdXBwb3J0ZWQuCisgICAgICAgIGJpYXMtcHVsbC11cDogICAgICAgICAgc3VwcG9ydGVkLgorICAgICAgICBiaWFzLXB1bGwtZG93bjogICAgICAgIHN1cHBvcnRlZC4KKyAgICAgICAgYmlhcy1idXMtaG9sZDogICAgICAgICBzdXBwb3J0ZWQuCisKKyAgbXV4IGdyb3VwczoKKworICAgIFRoZXNlIGFsbCBzdXBwb3J0IGZ1bmN0aW9uLCBhbmQgc29tZSBzdXBwb3J0IGRyaXZlIGNvbmZpZ3MuCisKKyAgICBhZmUKKyAgICAgICAgcGluczogICAgICAgICAgICAgICAgICB0eF9vbiwgcnhfb24sIHBsbF9vbiwgcGFfb24sIHJ4X2hwLCBhbnRfc2VsMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnRfc2VsMSwgZ2FpbjAsIGdhaW4xLCBnYWluMiwgZ2FpbjMsIGdhaW40LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhaW41LCBnYWluNiwgZ2FpbjcuCisgICAgICAgIGZ1bmN0aW9uOiAgICAgICAgICAgICAgYWZlLCB0c19vdXRfMC4KKyAgICAgICAgaW5wdXQtc2NobWl0dC1lbmFibGU6ICBzdXBwb3J0ZWQuCisgICAgICAgIGlucHV0LXNjaG1pdHQtZGlzYWJsZTogc3VwcG9ydGVkLgorICAgICAgICBkcml2ZS1zdHJlbmd0aDogICAgICAgIHN1cHBvcnRlZC4KKyAgICBwZG1fZAorICAgICAgICBwaW5zOiAgICAgICAgICAgICAgICAgIHBkbV9kLgorICAgICAgICBmdW5jdGlvbjogICAgICAgICAgICAgIHBkbV9kYWMsIHVzYl92YnVzLgorICAgIHNkaAorICAgICAgICBwaW5zOiAgICAgICAgICAgICAgICAgIHNkaF9jZCwgc2RoX3dwLCBzZGhfY2xrX2luLgorICAgICAgICBmdW5jdGlvbjogICAgICAgICAgICAgIHNkaCwgc2Rpby4KKyAgICBzZGlvCisgICAgICAgIHBpbnM6ICAgICAgICAgICAgICAgICAgc2Rpb19jbGssIHNkaW9fY21kLCBzZGlvX2QwLCBzZGlvX2QxLCBzZGlvX2QyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNkaW9fZDMuCisgICAgICAgIGZ1bmN0aW9uOiAgICAgICAgICAgICAgc2Rpbywgc2RoLgorICAgIHNwaTFfY3MyCisgICAgICAgIHBpbnM6ICAgICAgICAgICAgICAgICAgc3BpMV9jczIuCisgICAgICAgIGZ1bmN0aW9uOiAgICAgICAgICAgICAgc3BpMV9jczIsIHVzYl92YnVzLgorICAgIHRmdAorICAgICAgICBwaW5zOiAgICAgICAgICAgICAgICAgIHRmdF9yZWQwLCB0ZnRfcmVkMSwgdGZ0X3JlZDIsIHRmdF9yZWQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRmdF9yZWQ0LCB0ZnRfcmVkNSwgdGZ0X3JlZDYsIHRmdF9yZWQ3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRmdF9ncmVlbjAsIHRmdF9ncmVlbjEsIHRmdF9ncmVlbjIsIHRmdF9ncmVlbjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGZ0X2dyZWVuNCwgdGZ0X2dyZWVuNSwgdGZ0X2dyZWVuNiwgdGZ0X2dyZWVuNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZnRfYmx1ZTAsIHRmdF9ibHVlMSwgdGZ0X2JsdWUyLCB0ZnRfYmx1ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGZ0X2JsdWU0LCB0ZnRfYmx1ZTUsIHRmdF9ibHVlNiwgdGZ0X2JsdWU3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRmdF92ZGRlbl9nZCwgdGZ0X3BhbmVsY2xrLCB0ZnRfYmxhbmtfbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGZ0X3ZzeW5jX25zLCB0ZnRfaHN5bmNfbnIsIHRmdF92ZDEyYWNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRmdF9wd3JzYXZlLgorICAgICAgICBmdW5jdGlvbjogICAgICAgICAgICAgIHRmdCwgZXh0X2RhYywgbm90X2lxYWRjX3N0YiwgaXFkYWNfc3RiLCB0c19vdXRfMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsY2RfdHJhY2UsIHBoeV9yaW5nb3NjLgorICAgICAgICBpbnB1dC1zY2htaXR0LWVuYWJsZTogIHN1cHBvcnRlZC4KKyAgICAgICAgaW5wdXQtc2NobWl0dC1kaXNhYmxlOiBzdXBwb3J0ZWQuCisgICAgICAgIGRyaXZlLXN0cmVuZ3RoOiAgICAgICAgc3VwcG9ydGVkLgorCisgIGRyaXZlIGdyb3VwczoKKworICAgIFRoZXNlIGFsbCBzdXBwb3J0IGlucHV0LXNjaG1pdHQtZW5hYmxlLCBpbnB1dC1zY2htaXR0LWRpc2FibGUsCisgICAgYW5kIGRyaXZlLXN0cmVuZ3RoLgorCisgICAganRhZworICAgICAgICBwaW5zOiAgIHRjaywgdHJzdCwgdGRpLCB0ZG8sIHRtcy4KKyAgICBzY2IxCisgICAgICAgIHBpbnM6ICAgc2NiMV9zZGF0LCBzY2IxX3NjbGsuCisgICAgc2NiMgorICAgICAgICBwaW5zOiAgIHNjYjJfc2RhdCwgc2NiMl9zY2xrLgorICAgIHNwaTAKKyAgICAgICAgcGluczogICBzcGkwX21jbGssIHNwaTBfY3MwLCBzcGkwX2NzMSwgc3BpMF9jczIsIHNwaTBfZG91dCwgc3BpMF9kaW4uCisgICAgc3BpMQorICAgICAgICBwaW5zOiAgIHNwaTFfbWNsaywgc3BpMV9jczAsIHNwaTFfY3MxLCBzcGkxX2NzMiwgc3BpMV9kb3V0LCBzcGkxX2Rpbi4KKyAgICB1YXJ0CisgICAgICAgIHBpbnM6ICAgdWFydDBfdHhkLCB1YXJ0MF9yeGQsIHVhcnQwX3J0cywgdWFydDBfY3RzLAorICAgICAgICAgICAgICAgIHVhcnQxX3R4ZCwgdWFydDFfcnhkLgorICAgIGRyaXZlX2kycworICAgICAgICBwaW5zOiAgIGNsa19vdXQxLCBpMnNfZGluLCBpMnNfZG91dDAsIGkyc19kb3V0MSwgaTJzX2RvdXQyLAorICAgICAgICAgICAgICAgIGkyc19scmNsa19vdXQsIGkyc19iY2xrX291dCwgaTJzX21jbGsuCisgICAgZHJpdmVfcGRtCisgICAgICAgIHBpbnM6ICAgY2xrX291dDAsIHBkbV9iLCBwZG1fYS4KKyAgICBkcml2ZV9zY2IwCisgICAgICAgIHBpbnM6ICAgc2NiMF9zY2xrLCBzY2IwX3NkYXQsIHBkbV9kLCBwZG1fYy4KKyAgICBkcml2ZV9zZGlvCisgICAgICAgIHBpbnM6ICAgc2Rpb19jbGssIHNkaW9fY21kLCBzZGlvX2QwLCBzZGlvX2QxLCBzZGlvX2QyLCBzZGlvX2QzLAorICAgICAgICAgICAgICAgIHNkaF93cCwgc2RoX2NkLCBzZGhfY2xrX2luLgorCisgIGNvbnZlbmllbmNlIGdyb3VwczoKKworICAgIFRoZXNlIGFyZSBqdXN0IGNvbnZlbmllbnQgZ3JvdXBpbmdzIG9mIHBpbnMgYW5kIGRvbid0IHN1cHBvcnQgYW55IGRyaXZlCisgICAgY29uZmlncy4KKworICAgIHVhcnQwCisgICAgICAgIHBpbnM6ICAgdWFydDBfY3RzLCB1YXJ0MF9ydHMsIHVhcnQwX3J4ZCwgdWFydDBfdHhkLgorICAgIHVhcnQxCisgICAgICAgIHBpbnM6ICAgdWFydDFfcnhkLCB1YXJ0MV90eGQuCisgICAgc2NiMAorICAgICAgICBwaW5zOiAgIHNjYjBfc2Nsaywgc2NiMF9zZGF0LgorICAgIGkycworICAgICAgICBwaW5zOiAgIGkyc19iY2xrX291dCwgaTJzX2RpbiwgaTJzX2RvdXQwLCBpMnNfZG91dDEsIGkyc19kb3V0MiwKKyAgICAgICAgICAgICAgICBpMnNfbHJjbGtfb3V0LCBpMnNfbWNsay4KKworRXhhbXBsZToKKworCXBpbmN0cmw6IHBpbmN0cmxAMDIwMDU4MDAgeworCQkjZ3Bpby1yYW5nZS1jZWxscyA9IDwzPjsKKwkJY29tcGF0aWJsZSA9ICJpbWcsdHoxMDkwLXBpbmN0cmwiOworCQlyZWcgPSA8MHgwMjAwNTgwMCAweGU0PjsKKwl9OworCitFeGFtcGxlIGJvYXJkIGZpbGUgZXh0cmFjdDoKKworCSZwaW5jdHJsIHsKKwkJdWFydDBfZGVmYXVsdDogdWFydDAgeworCQkJdWFydDBfY2ZnIHsKKwkJCQl0ejEwOTAscGlucyA9CSJ1YXJ0MF9yeGQiLAorCQkJCQkJInVhcnQwX3R4ZCI7CisJCQkJdHoxMDkwLGZ1bmN0aW9uID0gInBlcmlwIjsKKwkJCX07CisJCX07CisJCXRmdF9kZWZhdWx0OiB0ZnQgeworCQkJdGZ0X2NmZyB7CisJCQkJdHoxMDkwLHBpbnMgPQkidGZ0IjsKKwkJCQl0ejEwOTAsZnVuY3Rpb24gPSAidGZ0IjsKKwkJCX07CisJCX07CisJfTsKKworCXVhcnRAMDIwMDRiMDAgeworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JnVhcnQwX2RlZmF1bHQ+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9sYW50aXEscGluY3RybC1mYWxjb24udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbGFudGlxLHBpbmN0cmwtZmFsY29uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzRkYTlmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbGFudGlxLHBpbmN0cmwtZmFsY29uLnR4dApAQCAtMCwwICsxLDgzIEBACitMYW50aXEgRkFMQ09OIHBpbm11eCBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJsYW50aXEscGluY3RybC1mYWxjb24iCistIHJlZzogU2hvdWxkIGNvbnRhaW4gdGhlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgZ3Bpby9waW5tdXgKKyAgcmVnaXN0ZXIgcmFuZ2UKKworUGxlYXNlIHJlZmVyIHRvIHBpbmN0cmwtYmluZGluZ3MudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBkZXRhaWxzIG9mIHRoZQorY29tbW9uIHBpbmN0cmwgYmluZGluZ3MgdXNlZCBieSBjbGllbnQgZGV2aWNlcywgaW5jbHVkaW5nIHRoZSBtZWFuaW5nIG9mIHRoZQorcGhyYXNlICJwaW4gY29uZmlndXJhdGlvbiBub2RlIi4KKworTGFudGlxJ3MgcGluIGNvbmZpZ3VyYXRpb24gbm9kZXMgYWN0IGFzIGEgY29udGFpbmVyIGZvciBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mCitzdWJub2Rlcy4gRWFjaCBvZiB0aGVzZSBzdWJub2RlcyByZXByZXNlbnRzIHNvbWUgZGVzaXJlZCBjb25maWd1cmF0aW9uIGZvciBhCitwaW4sIGEgZ3JvdXAsIG9yIGEgbGlzdCBvZiBwaW5zIG9yIGdyb3Vwcy4gVGhpcyBjb25maWd1cmF0aW9uIGNhbiBpbmNsdWRlIHRoZQorbXV4IGZ1bmN0aW9uIHRvIHNlbGVjdCBvbiB0aG9zZSBncm91cChzKSwgYW5kIHR3byBwaW4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzOgorcHVsbC11cCBhbmQgb3Blbi1kcmFpbgorCitUaGUgbmFtZSBvZiBlYWNoIHN1Ym5vZGUgaXMgbm90IGltcG9ydGFudCBhcyBsb25nIGFzIGl0IGlzIHVuaXF1ZTsgYWxsIHN1Ym5vZGVzCitzaG91bGQgYmUgZW51bWVyYXRlZCBhbmQgcHJvY2Vzc2VkIHB1cmVseSBiYXNlZCBvbiB0aGVpciBjb250ZW50LgorCitFYWNoIHN1Ym5vZGUgb25seSBhZmZlY3RzIHRob3NlIHBhcmFtZXRlcnMgdGhhdCBhcmUgZXhwbGljaXRseSBsaXN0ZWQuIEluCitvdGhlciB3b3JkcywgYSBzdWJub2RlIHRoYXQgbGlzdHMgYSBtdXggZnVuY3Rpb24gYnV0IG5vIHBpbiBjb25maWd1cmF0aW9uCitwYXJhbWV0ZXJzIGltcGxpZXMgbm8gaW5mb3JtYXRpb24gYWJvdXQgYW55IHBpbiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuCitTaW1pbGFybHksIGEgcGluIHN1Ym5vZGUgdGhhdCBkZXNjcmliZXMgYSBwdWxsdXAgcGFyYW1ldGVyIGltcGxpZXMgbm8KK2luZm9ybWF0aW9uIGFib3V0IGUuZy4gdGhlIG11eCBmdW5jdGlvbi4KKworV2Ugc3VwcG9ydCAyIHR5cGVzIG9mIG5vZGVzLgorCitEZWZpbml0aW9uIG9mIG11eCBmdW5jdGlvbiBncm91cHM6CisKK1JlcXVpcmVkIHN1Ym5vZGUtcHJvcGVydGllczoKKy0gbGFudGlxLGdyb3VwcyA6IEFuIGFycmF5IG9mIHN0cmluZ3MuIEVhY2ggc3RyaW5nIGNvbnRhaW5zIHRoZSBuYW1lIG9mIGEgZ3JvdXAuCisgIFZhbGlkIHZhbHVlcyBmb3IgdGhlc2UgbmFtZXMgYXJlIGxpc3RlZCBiZWxvdy4KKy0gbGFudGlxLGZ1bmN0aW9uOiBBIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0byBtdXggdG8gdGhlCisgIGdyb3VwLiBWYWxpZCB2YWx1ZXMgZm9yIGZ1bmN0aW9uIG5hbWVzIGFyZSBsaXN0ZWQgYmVsb3cuCisKK1ZhbGlkIHZhbHVlcyBmb3IgZ3JvdXAgYW5kIGZ1bmN0aW9uIG5hbWVzOgorCisgIG11eCBncm91cHM6CisgICAgcG9yLCBudHIsIG50cjhrLCBocnN0LCBtZGlvLCBib290bGVkLCBhc2MwLCBzcGksIHNwaSBjczAsIHNwaSBjczEsIGkyYywKKyAgICBqdGFnLCBzbGljLCBwY20sIGFzYzEKKworICBmdW5jdGlvbnM6CisgICAgcnN0LCBudHIsIG1kaW8sIGxlZCwgYXNjLCBzcGksIGkyYywganRhZywgc2xpYywgcGNtCisKKworRGVmaW5pdGlvbiBvZiBwaW4gY29uZmlndXJhdGlvbnM6CisKK1JlcXVpcmVkIHN1Ym5vZGUtcHJvcGVydGllczoKKy0gbGFudGlxLHBpbnMgOiBBbiBhcnJheSBvZiBzdHJpbmdzLiBFYWNoIHN0cmluZyBjb250YWlucyB0aGUgbmFtZSBvZiBhIHBpbi4KKyAgVmFsaWQgdmFsdWVzIGZvciB0aGVzZSBuYW1lcyBhcmUgbGlzdGVkIGJlbG93LgorCitPcHRpb25hbCBzdWJub2RlLXByb3BlcnRpZXM6CistIGxhbnRpcSxwdWxsOiBJbnRlZ2VyLCByZXByZXNlbnRpbmcgdGhlIHB1bGwtZG93bi91cCB0byBhcHBseSB0byB0aGUgcGluLgorICAgIDA6IG5vbmUsIDE6IGRvd24KKy0gbGFudGlxLGRyaXZlLWN1cnJlbnQ6IEJvb2xlYW4sIGVuYWJsZXMgZHJpdmUtY3VycmVudAorLSBsYW50aXEsc2xldy1yYXRlOiBCb29sZWFuLCBlbmFibGVzIHNsZXctcmF0ZQorCitFeGFtcGxlOgorCXBpbm11eDAgeworCQljb21wYXRpYmxlID0gImxhbnRpcSxwaW5jdHJsLWZhbGNvbiI7CisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmc3RhdGVfZGVmYXVsdD47CisKKwkJc3RhdGVfZGVmYXVsdDogcGlubXV4IHsKKwkJCWFzYzAgeworCQkJCWxhbnRpcSxncm91cHMgPSAiYXNjMCI7CisJCQkJbGFudGlxLGZ1bmN0aW9uID0gImFzYyI7CisJCQl9OworCQkJbnRyIHsKKwkJCQlsYW50aXEsZ3JvdXBzID0gIm50cjhrIjsKKwkJCQlsYW50aXEsZnVuY3Rpb24gPSAibnRyIjsKKwkJCX07CisJCQlpMmMgeworCQkJCWxhbnRpcSxncm91cHMgPSAiaTJjIjsKKwkJCQlsYW50aXEsZnVuY3Rpb24gPSAiaTJjIjsKKwkJCX07CisJCQlocnN0IHsKKwkJCQlsYW50aXEsZ3JvdXBzID0gImhyc3QiOworCQkJCWxhbnRpcSxmdW5jdGlvbiA9ICJyc3QiOworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbGFudGlxLHBpbmN0cmwteHdheS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9sYW50aXEscGluY3RybC14d2F5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODliNDY3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbGFudGlxLHBpbmN0cmwteHdheS50eHQKQEAgLTAsMCArMSw5NyBAQAorTGFudGlxIFhXQVkgcGlubXV4IGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImxhbnRpcSxwaW5jdHJsLXh3YXkiIG9yICJsYW50aXEscGluY3RybC14cjkiCistIHJlZzogU2hvdWxkIGNvbnRhaW4gdGhlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgZ3Bpby9waW5tdXgKKyAgcmVnaXN0ZXIgcmFuZ2UKKworUGxlYXNlIHJlZmVyIHRvIHBpbmN0cmwtYmluZGluZ3MudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBkZXRhaWxzIG9mIHRoZQorY29tbW9uIHBpbmN0cmwgYmluZGluZ3MgdXNlZCBieSBjbGllbnQgZGV2aWNlcywgaW5jbHVkaW5nIHRoZSBtZWFuaW5nIG9mIHRoZQorcGhyYXNlICJwaW4gY29uZmlndXJhdGlvbiBub2RlIi4KKworTGFudGlxJ3MgcGluIGNvbmZpZ3VyYXRpb24gbm9kZXMgYWN0IGFzIGEgY29udGFpbmVyIGZvciBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mCitzdWJub2Rlcy4gRWFjaCBvZiB0aGVzZSBzdWJub2RlcyByZXByZXNlbnRzIHNvbWUgZGVzaXJlZCBjb25maWd1cmF0aW9uIGZvciBhCitwaW4sIGEgZ3JvdXAsIG9yIGEgbGlzdCBvZiBwaW5zIG9yIGdyb3Vwcy4gVGhpcyBjb25maWd1cmF0aW9uIGNhbiBpbmNsdWRlIHRoZQorbXV4IGZ1bmN0aW9uIHRvIHNlbGVjdCBvbiB0aG9zZSBncm91cChzKSwgYW5kIHR3byBwaW4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzOgorcHVsbC11cCBhbmQgb3Blbi1kcmFpbgorCitUaGUgbmFtZSBvZiBlYWNoIHN1Ym5vZGUgaXMgbm90IGltcG9ydGFudCBhcyBsb25nIGFzIGl0IGlzIHVuaXF1ZTsgYWxsIHN1Ym5vZGVzCitzaG91bGQgYmUgZW51bWVyYXRlZCBhbmQgcHJvY2Vzc2VkIHB1cmVseSBiYXNlZCBvbiB0aGVpciBjb250ZW50LgorCitFYWNoIHN1Ym5vZGUgb25seSBhZmZlY3RzIHRob3NlIHBhcmFtZXRlcnMgdGhhdCBhcmUgZXhwbGljaXRseSBsaXN0ZWQuIEluCitvdGhlciB3b3JkcywgYSBzdWJub2RlIHRoYXQgbGlzdHMgYSBtdXggZnVuY3Rpb24gYnV0IG5vIHBpbiBjb25maWd1cmF0aW9uCitwYXJhbWV0ZXJzIGltcGxpZXMgbm8gaW5mb3JtYXRpb24gYWJvdXQgYW55IHBpbiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuCitTaW1pbGFybHksIGEgcGluIHN1Ym5vZGUgdGhhdCBkZXNjcmliZXMgYSBwdWxsdXAgcGFyYW1ldGVyIGltcGxpZXMgbm8KK2luZm9ybWF0aW9uIGFib3V0IGUuZy4gdGhlIG11eCBmdW5jdGlvbi4KKworV2Ugc3VwcG9ydCAyIHR5cGVzIG9mIG5vZGVzLgorCitEZWZpbml0aW9uIG9mIG11eCBmdW5jdGlvbiBncm91cHM6CisKK1JlcXVpcmVkIHN1Ym5vZGUtcHJvcGVydGllczoKKy0gbGFudGlxLGdyb3VwcyA6IEFuIGFycmF5IG9mIHN0cmluZ3MuIEVhY2ggc3RyaW5nIGNvbnRhaW5zIHRoZSBuYW1lIG9mIGEgZ3JvdXAuCisgIFZhbGlkIHZhbHVlcyBmb3IgdGhlc2UgbmFtZXMgYXJlIGxpc3RlZCBiZWxvdy4KKy0gbGFudGlxLGZ1bmN0aW9uOiBBIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0byBtdXggdG8gdGhlCisgIGdyb3VwLiBWYWxpZCB2YWx1ZXMgZm9yIGZ1bmN0aW9uIG5hbWVzIGFyZSBsaXN0ZWQgYmVsb3cuCisKK1ZhbGlkIHZhbHVlcyBmb3IgZ3JvdXAgYW5kIGZ1bmN0aW9uIG5hbWVzOgorCisgIG11eCBncm91cHM6CisgICAgZXhpbjAsIGV4aW4xLCBleGluMiwganRhZywgZWJ1IGEyMywgZWJ1IGEyNCwgZWJ1IGEyNSwgZWJ1IGNsaywgZWJ1IGNzMSwKKyAgICBlYnUgd2FpdCwgbmFuZCBhbGUsIG5hbmQgY3MxLCBuYW5kIGNsZSwgc3BpLCBzcGlfY3MxLCBzcGlfY3MyLCBzcGlfY3MzLAorICAgIHNwaV9jczQsIHNwaV9jczUsIHNwaV9jczYsIGFzYzAsIGFzYzAgY3RzIHJ0cywgc3RwLCBubWkgLCBncHQxLCBncHQyLAorICAgIGdwdDMsIGNsa291dDAsIGNsa291dDEsIGNsa291dDIsIGNsa291dDMsIGdudDEsIGdudDIsIGdudDMsIHJlcTEsIHJlcTIsCisgICAgcmVxMworCisgIGFkZGl0aW9uYWwgbXV4IGdyb3VwcyAoWFI5IG9ubHkpOgorICAgIG1kaW8sIG5hbmQgcmR5LCBuYW5kIHJkLCBleGluMywgZXhpbjQsIGdudDQsIHJlcTQKKworICBmdW5jdGlvbnM6CisgICAgc3BpLCBhc2MsIGNndSwganRhZywgZXhpbiwgc3RwLCBncHQsIG5taSwgcGNpLCBlYnUsIG1kaW8KKworCisKK0RlZmluaXRpb24gb2YgcGluIGNvbmZpZ3VyYXRpb25zOgorCitSZXF1aXJlZCBzdWJub2RlLXByb3BlcnRpZXM6CistIGxhbnRpcSxwaW5zIDogQW4gYXJyYXkgb2Ygc3RyaW5ncy4gRWFjaCBzdHJpbmcgY29udGFpbnMgdGhlIG5hbWUgb2YgYSBwaW4uCisgIFZhbGlkIHZhbHVlcyBmb3IgdGhlc2UgbmFtZXMgYXJlIGxpc3RlZCBiZWxvdy4KKworT3B0aW9uYWwgc3Vibm9kZS1wcm9wZXJ0aWVzOgorLSBsYW50aXEscHVsbDogSW50ZWdlciwgcmVwcmVzZW50aW5nIHRoZSBwdWxsLWRvd24vdXAgdG8gYXBwbHkgdG8gdGhlIHBpbi4KKyAgICAwOiBub25lLCAxOiBkb3duLCAyOiB1cC4KKy0gbGFudGlxLG9wZW4tZHJhaW46IEJvb2xlYW4sIGVuYWJsZXMgb3Blbi1kcmFpbiBvbiB0aGUgZGVmaW5lZCBwaW4uCisKK1ZhbGlkIHZhbHVlcyBmb3IgWFdBWSBwaW4gbmFtZXM6CisgIFBpbmNvbmYgcGlucyBjYW4gYmUgcmVmZXJlbmNlZCB2aWEgdGhlIG5hbWVzIGlvMC1pbzMxLgorCitWYWxpZCB2YWx1ZXMgZm9yIFhSOSBwaW4gbmFtZXM6CisgIFBpbmNvbmYgcGlucyBjYW4gYmUgcmVmZXJlbmNlZCB2aWEgdGhlIG5hbWVzIGlvMC1pbzU1LgorCitFeGFtcGxlOgorCWdwaW86IHBpbm11eEBFMTAwQjEwIHsKKwkJY29tcGF0aWJsZSA9ICJsYW50aXEscGluY3RybC14d2F5IjsKKwkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwkJcGluY3RybC0wID0gPCZzdGF0ZV9kZWZhdWx0PjsKKworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJZ3Bpby1jb250cm9sbGVyOworCQlyZWcgPSA8MHhFMTAwQjEwIDB4QTA+OworCisJCXN0YXRlX2RlZmF1bHQ6IHBpbm11eCB7CisJCQlzdHAgeworCQkJCWxhbnRpcSxncm91cHMgPSAic3RwIjsKKwkJCQlsYW50aXEsZnVuY3Rpb24gPSAic3RwIjsKKwkJCX07CisJCQlwY2kgeworCQkJCWxhbnRpcSxncm91cHMgPSAiZ250MSI7CisJCQkJbGFudGlxLGZ1bmN0aW9uID0gInBjaSI7CisJCQl9OworCQkJY29uZl9vdXQgeworCQkJCWxhbnRpcSxwaW5zID0gImlvNCIsICJpbzUiLCAiaW82IjsgLyogc3RwICovCisJCQkJbGFudGlxLG9wZW4tZHJhaW47CisJCQkJbGFudGlxLHB1bGwgPSA8MD47CisJCQl9OworCQl9OworCX07CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL21hcnZlbGwsYXJtYWRhLTM3MC1waW5jdHJsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL21hcnZlbGwsYXJtYWRhLTM3MC1waW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGQ3YzM4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbWFydmVsbCxhcm1hZGEtMzcwLXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsOTYgQEAKKyogTWFydmVsbCBBcm1hZGEgMzcwIFNvQyBwaW5jdHJsIGRyaXZlciBmb3IgbXBwCisKK1BsZWFzZSByZWZlciB0byBtYXJ2ZWxsLG12ZWJ1LXBpbmN0cmwudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBjb21tb24gYmluZGluZworcGFydCBhbmQgdXNhZ2UuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJtYXJ2ZWxsLDg4ZjY3MTAtcGluY3RybCIKKy0gcmVnOiByZWdpc3RlciBzcGVjaWZpZXIgb2YgTVBQIHJlZ2lzdGVycworCitBdmFpbGFibGUgbXBwIHBpbnMvZ3JvdXBzIGFuZCBmdW5jdGlvbnM6CitOb3RlOiBicmFja2V0cyAoeCkgYXJlIG5vdCBwYXJ0IG9mIHRoZSBtcHAgbmFtZSBmb3IgbWFydmVsbCxmdW5jdGlvbiBhbmQgZ2l2ZW4KK29ubHkgZm9yIG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24gaW4gdGhpcyBkb2N1bWVudC4KKworbmFtZSAgICAgICAgICBwaW5zICAgICBmdW5jdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CittcHAwICAgICAgICAgIDAgICAgICAgIGdwaW8sIHVhcnQwKHJ4ZCkKK21wcDEgICAgICAgICAgMSAgICAgICAgZ3BvLCB1YXJ0MCh0eGQpCittcHAyICAgICAgICAgIDIgICAgICAgIGdwaW8sIGkyYzAoc2NrKSwgdWFydDAodHhkKQorbXBwMyAgICAgICAgICAzICAgICAgICBncGlvLCBpMmMwKHNkYSksIHVhcnQwKHJ4ZCkKK21wcDQgICAgICAgICAgNCAgICAgICAgZ3BpbywgdmRkKGNwdS1wZCkKK21wcDUgICAgICAgICAgNSAgICAgICAgZ3BvLCBnZTAodHhjbGtvdXQpLCB1YXJ0MSh0eGQpLCBzcGkxKHNjayksIGF1ZGlvKG1jbGspCittcHA2ICAgICAgICAgIDYgICAgICAgIGdwaW8sIGdlMCh0eGQwKSwgc2F0YTAocHJzbnQpLCB0ZG0ocnN0KSwgYXVkaW8oc2RvKQorbXBwNyAgICAgICAgICA3ICAgICAgICBncG8sIGdlMCh0eGQxKSwgdGRtKGR0eCksIGF1ZGlvKGxyY2xrKQorbXBwOCAgICAgICAgICA4ICAgICAgICBncGlvLCBnZTAodHhkMiksIHVhcnQwKHJ0cyksIHRkbShkcngpLCBhdWRpbyhiY2xrKQorbXBwOSAgICAgICAgICA5ICAgICAgICBncG8sIGdlMCh0eGQzKSwgdWFydDEodHhkKSwgc2QwKGNsayksIGF1ZGlvKHNwZGlmbykKK21wcDEwICAgICAgICAgMTAgICAgICAgZ3BpbywgZ2UwKHR4Y3RsKSwgdWFydDAoY3RzKSwgdGRtKGZzeW5jKSwgYXVkaW8oc2RpKQorbXBwMTEgICAgICAgICAxMSAgICAgICBncGlvLCBnZTAocnhkMCksIHVhcnQxKHJ4ZCksIHNkMChjbWQpLCBzcGkwKGNzMSksCisgICAgICAgICAgICAgICAgICAgICAgIHNhdGExKHByc250KSwgc3BpMShjczEpCittcHAxMiAgICAgICAgIDEyICAgICAgIGdwaW8sIGdlMChyeGQxKSwgaTJjMShzZGEpLCBzZDAoZDApLCBzcGkxKGNzMCksCisgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvKHNwZGlmaSkKK21wcDEzICAgICAgICAgMTMgICAgICAgZ3BpbywgZ2UwKHJ4ZDIpLCBpMmMxKHNjayksIHNkMChkMSksIHRkbShwY2xrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8ocm1jbGspCittcHAxNCAgICAgICAgIDE0ICAgICAgIGdwaW8sIGdlMChyeGQzKSwgcGNpZShjbGtyZXEwKSwgc2QwKGQyKSwgc3BpMShtb3NpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3BpMChjczIpCittcHAxNSAgICAgICAgIDE1ICAgICAgIGdwaW8sIGdlMChyeGN0bCksIHBjaWUoY2xrcmVxMSksIHNkMChkMyksIHNwaTEobWlzbyksCisgICAgICAgICAgICAgICAgICAgICAgIHNwaTAoY3MzKQorbXBwMTYgICAgICAgICAxNiAgICAgICBncGlvLCBnZTAocnhjbGspLCB1YXJ0MShyeGQpLCB0ZG0oaW50KSwgYXVkaW8oZXh0Y2xrKQorbXBwMTcgICAgICAgICAxNyAgICAgICBncG8sIGdlKG1kYykKK21wcDE4ICAgICAgICAgMTggICAgICAgZ3BpbywgZ2UobWRpbykKK21wcDE5ICAgICAgICAgMTkgICAgICAgZ3BpbywgZ2UwKHR4Y2xrKSwgZ2UxKHR4Y2xrb3V0KSwgdGRtKHBjbGspCittcHAyMCAgICAgICAgIDIwICAgICAgIGdwbywgZ2UwKHR4ZDQpLCBnZTEodHhkMCkKK21wcDIxICAgICAgICAgMjEgICAgICAgZ3BvLCBnZTAodHhkNSksIGdlMSh0eGQxKSwgdWFydDEodHhkKQorbXBwMjIgICAgICAgICAyMiAgICAgICBncG8sIGdlMCh0eGQ2KSwgZ2UxKHR4ZDIpLCB1YXJ0MChydHMpCittcHAyMyAgICAgICAgIDIzICAgICAgIGdwbywgZ2UwKHR4ZDcpLCBnZTEodHhkMyksIHNwaTEobW9zaSkKK21wcDI0ICAgICAgICAgMjQgICAgICAgZ3BpbywgZ2UwKGNvbCksIGdlMSh0eGN0bCksIHNwaTEoY3MwKQorbXBwMjUgICAgICAgICAyNSAgICAgICBncGlvLCBnZTAocnhlcnIpLCBnZTEocnhkMCksIHVhcnQxKHJ4ZCkKK21wcDI2ICAgICAgICAgMjYgICAgICAgZ3BpbywgZ2UwKGNycyksIGdlMShyeGQxKSwgc3BpMShtaXNvKQorbXBwMjcgICAgICAgICAyNyAgICAgICBncGlvLCBnZTAocnhkNCksIGdlMShyeGQyKSwgdWFydDAoY3RzKQorbXBwMjggICAgICAgICAyOCAgICAgICBncGlvLCBnZTAocnhkNSksIGdlMShyeGQzKQorbXBwMjkgICAgICAgICAyOSAgICAgICBncGlvLCBnZTAocnhkNiksIGdlMShyeGN0bCksIGkyYzEoc2RhKQorbXBwMzAgICAgICAgICAzMCAgICAgICBncGlvLCBnZTAocnhkNyksIGdlMShyeGNsayksIGkyYzEoc2NrKQorbXBwMzEgICAgICAgICAzMSAgICAgICBncGlvLCB0Y2xrLCBnZTAodHhlcnIpCittcHAzMiAgICAgICAgIDMyICAgICAgIGdwaW8sIHNwaTAoY3MwKQorbXBwMzMgICAgICAgICAzMyAgICAgICBncGlvLCBkZXYoYm9vdGNzKSwgc3BpMChjczApCittcHAzNCAgICAgICAgIDM0ICAgICAgIGdwbywgZGV2KHdlMCksIHNwaTAobW9zaSkKK21wcDM1ICAgICAgICAgMzUgICAgICAgZ3BvLCBkZXYob2UpLCBzcGkwKHNjaykKK21wcDM2ICAgICAgICAgMzYgICAgICAgZ3BvLCBkZXYoYTEpLCBzcGkwKG1pc28pCittcHAzNyAgICAgICAgIDM3ICAgICAgIGdwbywgZGV2KGEwKSwgc2F0YTAocHJzbnQpCittcHAzOCAgICAgICAgIDM4ICAgICAgIGdwaW8sIGRldihyZWFkeSksIHVhcnQxKGN0cyksIHVhcnQwKGN0cykKK21wcDM5ICAgICAgICAgMzkgICAgICAgZ3BvLCBkZXYoYWQwKSwgYXVkaW8oc3BkaWZvKQorbXBwNDAgICAgICAgICA0MCAgICAgICBncGlvLCBkZXYoYWQxKSwgdWFydDEocnRzKSwgdWFydDAocnRzKQorbXBwNDEgICAgICAgICA0MSAgICAgICBncGlvLCBkZXYoYWQyKSwgdWFydDEocnhkKQorbXBwNDIgICAgICAgICA0MiAgICAgICBncG8sIGRldihhZDMpLCB1YXJ0MSh0eGQpCittcHA0MyAgICAgICAgIDQzICAgICAgIGdwbywgZGV2KGFkNCksIGF1ZGlvKGJjbGspCittcHA0NCAgICAgICAgIDQ0ICAgICAgIGdwbywgZGV2KGFkNSksIGF1ZGlvKG1jbGspCittcHA0NSAgICAgICAgIDQ1ICAgICAgIGdwbywgZGV2KGFkNiksIGF1ZGlvKGxyY2xrKQorbXBwNDYgICAgICAgICA0NiAgICAgICBncG8sIGRldihhZDcpLCBhdWRpbyhzZG8pCittcHA0NyAgICAgICAgIDQ3ICAgICAgIGdwbywgZGV2KGFkOCksIHNkMChjbGspLCBhdWRpbyhzcGRpZm8pCittcHA0OCAgICAgICAgIDQ4ICAgICAgIGdwaW8sIGRldihhZDkpLCB1YXJ0MChydHMpLCBzZDAoY21kKSwgc2F0YTEocHJzbnQpLAorICAgICAgICAgICAgICAgICAgICAgICBzcGkwKGNzMSkKK21wcDQ5ICAgICAgICAgNDkgICAgICAgZ3BpbywgZGV2KGFkMTApLCBwY2llKGNsa3JlcTEpLCBzZDAoZDApLCBzcGkxKGNzMCksCisgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvKHNwZGlmaSkKK21wcDUwICAgICAgICAgNTAgICAgICAgZ3BpbywgZGV2KGFkMTEpLCB1YXJ0MChjdHMpLCBzZDAoZDEpLCBzcGkxKG1pc28pLAorICAgICAgICAgICAgICAgICAgICAgICBhdWRpbyhybWNsaykKK21wcDUxICAgICAgICAgNTEgICAgICAgZ3BpbywgZGV2KGFkMTIpLCBpMmMxKHNkYSksIHNkMChkMiksIHNwaTEobW9zaSkKK21wcDUyICAgICAgICAgNTIgICAgICAgZ3BpbywgZGV2KGFkMTMpLCBpMmMxKHNjayksIHNkMChkMyksIHNwaTEoc2NrKQorbXBwNTMgICAgICAgICA1MyAgICAgICBncGlvLCBkZXYoYWQxNCksIHNkMChjbGspLCB0ZG0ocGNsayksIHNwaTAoY3MyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgcGNpZShjbGtyZXExKQorbXBwNTQgICAgICAgICA1NCAgICAgICBncG8sIGRldihhZDE1KSwgdGRtKGR0eCkKK21wcDU1ICAgICAgICAgNTUgICAgICAgZ3BpbywgZGV2KGNzMSksIHVhcnQxKHR4ZCksIHRkbShyc3QpLCBzYXRhMShwcnNudCksCisgICAgICAgICAgICAgICAgICAgICAgIHNhdGEwKHByc250KQorbXBwNTYgICAgICAgICA1NiAgICAgICBncGlvLCBkZXYoY3MyKSwgdWFydDEoY3RzKSwgdWFydDAoY3RzKSwgc3BpMChjczMpLAorICAgICAgICAgICAgICAgICAgICAgICBwY2llKGNsa3JlcTApLCBzcGkxKGNzMSkKK21wcDU3ICAgICAgICAgNTcgICAgICAgZ3BpbywgZGV2KGNzMyksIHVhcnQxKHJ4ZCksIHRkbShmc3luYyksIHNhdGEwKHByc250KSwKKyAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8oc2RvKQorbXBwNTggICAgICAgICA1OCAgICAgICBncGlvLCBkZXYoY3MwKSwgdWFydDEocnRzKSwgdGRtKGludCksIGF1ZGlvKGV4dGNsayksCisgICAgICAgICAgICAgICAgICAgICAgIHVhcnQwKHJ0cykKK21wcDU5ICAgICAgICAgNTkgICAgICAgZ3BvLCBkZXYoYWxlMCksIHVhcnQxKHJ0cyksIHVhcnQwKHJ0cyksIGF1ZGlvKGJjbGspCittcHA2MCAgICAgICAgIDYwICAgICAgIGdwaW8sIGRldihhbGUxKSwgdWFydDEocnhkKSwgc2F0YTAocHJzbnQpLCBwY2llKHJzdG91dCksCisgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvKHNkaSkKK21wcDYxICAgICAgICAgNjEgICAgICAgZ3BvLCBkZXYod2UxKSwgdWFydDEodHhkKSwgYXVkaW8obHJjbGspCittcHA2MiAgICAgICAgIDYyICAgICAgIGdwaW8sIGRldihhMiksIHVhcnQxKGN0cyksIHRkbShkcngpLCBwY2llKGNsa3JlcTApLAorICAgICAgICAgICAgICAgICAgICAgICBhdWRpbyhtY2xrKSwgdWFydDAoY3RzKQorbXBwNjMgICAgICAgICA2MyAgICAgICBncG8sIHNwaTAoc2NrKSwgdGNsaworbXBwNjQgICAgICAgICA2NCAgICAgICBncGlvLCBzcGkwKG1pc28pLCBzcGkwKGNzMSkKK21wcDY1ICAgICAgICAgNjUgICAgICAgZ3Bpbywgc3BpMChtb3NpKSwgc3BpMChjczIpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9tYXJ2ZWxsLGFybWFkYS0zNzUtcGluY3RybC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9tYXJ2ZWxsLGFybWFkYS0zNzUtcGluY3RybC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZlNWJiMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL21hcnZlbGwsYXJtYWRhLTM3NS1waW5jdHJsLnR4dApAQCAtMCwwICsxLDgyIEBACisqIE1hcnZlbGwgQXJtYWRhIDM3NSBTb0MgcGluY3RybCBkcml2ZXIgZm9yIG1wcAorCitQbGVhc2UgcmVmZXIgdG8gbWFydmVsbCxtdmVidS1waW5jdHJsLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgY29tbW9uIGJpbmRpbmcKK3BhcnQgYW5kIHVzYWdlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAibWFydmVsbCw4OGY2NzIwLXBpbmN0cmwiCistIHJlZzogcmVnaXN0ZXIgc3BlY2lmaWVyIG9mIE1QUCByZWdpc3RlcnMKKworQXZhaWxhYmxlIG1wcCBwaW5zL2dyb3VwcyBhbmQgZnVuY3Rpb25zOgorTm90ZTogYnJhY2tldHMgKHgpIGFyZSBub3QgcGFydCBvZiB0aGUgbXBwIG5hbWUgZm9yIG1hcnZlbGwsZnVuY3Rpb24gYW5kIGdpdmVuCitvbmx5IGZvciBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uIGluIHRoaXMgZG9jdW1lbnQuCisKK25hbWUgICAgICAgICAgcGlucyAgICAgZnVuY3Rpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorbXBwMCAgICAgICAgICAwICAgICAgICBncGlvLCBkZXYoYWQyKSwgc3BpMChjczEpLCBzcGkxKGNzMSkKK21wcDEgICAgICAgICAgMSAgICAgICAgZ3BpbywgZGV2KGFkMyksIHNwaTAobW9zaSksIHNwaTEobW9zaSkKK21wcDIgICAgICAgICAgMiAgICAgICAgZ3BpbywgZGV2KGFkNCksIHB0cChldnJlcSksIGxlZChjMCksIGF1ZGlvKHNkaSkKK21wcDMgICAgICAgICAgMyAgICAgICAgZ3BpbywgZGV2KGFkNSksIHB0cCh0cmlnKSwgbGVkKHAzKSwgYXVkaW8obWNsaykKK21wcDQgICAgICAgICAgNCAgICAgICAgZ3BpbywgZGV2KGFkNiksIHNwaTAobWlzbyksIHNwaTEobWlzbykKK21wcDUgICAgICAgICAgNSAgICAgICAgZ3BpbywgZGV2KGFkNyksIHNwaTAoY3MyKSwgc3BpMShjczIpCittcHA2ICAgICAgICAgIDYgICAgICAgIGdwaW8sIGRldihhZDApLCBsZWQocDEpLCBhdWRpbyhscmNsaykKK21wcDcgICAgICAgICAgNyAgICAgICAgZ3BpbywgZGV2KGFkMSksIHB0cChjbGspLCBsZWQocDIpLCBhdWRpbyhleHRjbGspCittcHA4ICAgICAgICAgIDggICAgICAgIGdwaW8sIGRldiAoYm9vdGNzKSwgc3BpMChjczApLCBzcGkxKGNzMCkKK21wcDkgICAgICAgICAgOSAgICAgICAgZ3Bpbywgc3BpMChzY2spLCBzcGkxKHNjayksIG5hbmQod2UpCittcHAxMCAgICAgICAgMTAgICAgICAgIGdwaW8sIGRyYW0odnR0Y3RybCksIGxlZChjMSksIG5hbmQocmUpCittcHAxMSAgICAgICAgMTEgICAgICAgIGdwaW8sIGRldihhMCksIGxlZChjMiksIGF1ZGlvKHNkbykKK21wcDEyICAgICAgICAxMiAgICAgICAgZ3BpbywgZGV2KGExKSwgYXVkaW8oYmNsaykKK21wcDEzICAgICAgICAxMyAgICAgICAgZ3BpbywgZGV2KHJlYWR5KSwgcGNpZTAocnN0b3V0KSwgcGNpZTEocnN0b3V0KQorbXBwMTQgICAgICAgIDE0ICAgICAgICBncGlvLCBpMmMwKHNkYSksIHVhcnQxKHR4ZCkKK21wcDE1ICAgICAgICAxNSAgICAgICAgZ3BpbywgaTJjMChzY2spLCB1YXJ0MShyeGQpCittcHAxNiAgICAgICAgMTYgICAgICAgIGdwaW8sIHVhcnQwKHR4ZCkKK21wcDE3ICAgICAgICAxNyAgICAgICAgZ3BpbywgdWFydDAocnhkKQorbXBwMTggICAgICAgIDE4ICAgICAgICBncGlvLCB0ZG0oaW50KQorbXBwMTkgICAgICAgIDE5ICAgICAgICBncGlvLCB0ZG0ocnN0KQorbXBwMjAgICAgICAgIDIwICAgICAgICBncGlvLCB0ZG0ocGNsaykKK21wcDIxICAgICAgICAyMSAgICAgICAgZ3BpbywgdGRtKGZzeW5jKQorbXBwMjIgICAgICAgIDIyICAgICAgICBncGlvLCB0ZG0oZHJ4KQorbXBwMjMgICAgICAgIDIzICAgICAgICBncGlvLCB0ZG0oZHR4KQorbXBwMjQgICAgICAgIDI0ICAgICAgICBncGlvLCBsZWQocDApLCBnZTEocnhkMCksIHNkKGNtZCksIHVhcnQwKHJ0cykKK21wcDI1ICAgICAgICAyNSAgICAgICAgZ3BpbywgbGVkKHAyKSwgZ2UxKHJ4ZDEpLCBzZChkMCksIHVhcnQwKGN0cykKK21wcDI2ICAgICAgICAyNiAgICAgICAgZ3BpbywgcGNpZTAoY2xrcmVxKSwgZ2UxKHJ4ZDIpLCBzZChkMiksIHVhcnQxKHJ0cykKK21wcDI3ICAgICAgICAyNyAgICAgICAgZ3BpbywgcGNpZTEoY2xrcmVxKSwgZ2UxKHJ4ZDMpLCBzZChkMSksIHVhcnQxKGN0cykKK21wcDI4ICAgICAgICAyOCAgICAgICAgZ3BpbywgbGVkKHAzKSwgZ2UxKHR4Y3RsKSwgc2QoY2xrKQorbXBwMjkgICAgICAgIDI5ICAgICAgICBncGlvLCBwY2llMShjbGtyZXEpLCBnZTEocnhjbGspLCBzZChkMykKK21wcDMwICAgICAgICAzMCAgICAgICAgZ3BpbywgZ2UxKHR4ZDApLCBzcGkxKGNzMCkKK21wcDMxICAgICAgICAzMSAgICAgICAgZ3BpbywgZ2UxKHR4ZDEpLCBzcGkxKG1vc2kpCittcHAzMiAgICAgICAgMzIgICAgICAgIGdwaW8sIGdlMSh0eGQyKSwgc3BpMShzY2spLCBwdHAodHJpZykKK21wcDMzICAgICAgICAzMyAgICAgICAgZ3BpbywgZ2UxKHR4ZDMpLCBzcGkxKG1pc28pCittcHAzNCAgICAgICAgMzQgICAgICAgIGdwaW8sIGdlMSh0eGNsa291dCksIHNwaTEoc2NrKQorbXBwMzUgICAgICAgIDM1ICAgICAgICBncGlvLCBnZTEocnhjdGwpLCBzcGkxKGNzMSksIHNwaTAoY3MyKQorbXBwMzYgICAgICAgIDM2ICAgICAgICBncGlvLCBwY2llMChjbGtyZXEpCittcHAzNyAgICAgICAgMzcgICAgICAgIGdwaW8sIHBjaWUwKGNsa3JlcSksIHRkbShpbnQpLCBnZShtZGMpCittcHAzOCAgICAgICAgMzggICAgICAgIGdwaW8sIHBjaWUxKGNsa3JlcSksIGdlKG1kaW8pCittcHAzOSAgICAgICAgMzkgICAgICAgIGdwaW8sIHJlZihjbGtvdXQpCittcHA0MCAgICAgICAgNDAgICAgICAgIGdwaW8sIHVhcnQxKHR4ZCkKK21wcDQxICAgICAgICA0MSAgICAgICAgZ3BpbywgdWFydDEocnhkKQorbXBwNDIgICAgICAgIDQyICAgICAgICBncGlvLCBzcGkxKGNzMiksIGxlZChjMCkKK21wcDQzICAgICAgICA0MyAgICAgICAgZ3Bpbywgc2F0YTAocHJzbnQpLCBkcmFtKHZ0dGN0cmwpCittcHA0NCAgICAgICAgNDQgICAgICAgIGdwaW8sIHNhdGEwKHByc250KQorbXBwNDUgICAgICAgIDQ1ICAgICAgICBncGlvLCBzcGkwKGNzMiksIHBjaWUwKHJzdG91dCkKK21wcDQ2ICAgICAgICA0NiAgICAgICAgZ3BpbywgbGVkKHAwKSwgZ2UwKHR4ZDApLCBnZTEodHhkMCksIGRldih3ZTEpCittcHA0NyAgICAgICAgNDcgICAgICAgIGdwaW8sIGxlZChwMSksIGdlMCh0eGQxKSwgZ2UxKHR4ZDEpCittcHA0OCAgICAgICAgNDggICAgICAgIGdwaW8sIGxlZChwMiksIGdlMCh0eGQyKSwgZ2UxKHR4ZDIpCittcHA0OSAgICAgICAgNDkgICAgICAgIGdwaW8sIGxlZChwMyksIGdlMCh0eGQzKSwgZ2UxKHR4ZDMpCittcHA1MCAgICAgICAgNTAgICAgICAgIGdwaW8sIGxlZChjMCksIGdlMChyeGQwKSwgZ2UxKHJ4ZDApCittcHA1MSAgICAgICAgNTEgICAgICAgIGdwaW8sIGxlZChjMSksIGdlMChyeGQxKSwgZ2UxKHJ4ZDEpCittcHA1MiAgICAgICAgNTIgICAgICAgIGdwaW8sIGxlZChjMiksIGdlMChyeGQyKSwgZ2UxKHJ4ZDIpCittcHA1MyAgICAgICAgNTMgICAgICAgIGdwaW8sIHBjaWUxKHJzdG91dCksIGdlMChyeGQzKSwgZ2UxKHJ4ZDMpCittcHA1NCAgICAgICAgNTQgICAgICAgIGdwaW8sIHBjaWUwKHJzdG91dCksIGdlMChyeGN0bCksIGdlMShyeGN0bCkKK21wcDU1ICAgICAgICA1NSAgICAgICAgZ3BpbywgZ2UwKHJ4Y2xrKSwgZ2UxKHJ4Y2xrKQorbXBwNTYgICAgICAgIDU2ICAgICAgICBncGlvLCBnZTAodHhjbGtvdXQpLCBnZTEodHhjbGtvdXQpCittcHA1NyAgICAgICAgNTcgICAgICAgIGdwaW8sIGdlMCh0eGN0bCksIGdlMSh0eGN0bCksIGRldih3ZTApCittcHA1OCAgICAgICAgNTggICAgICAgIGdwaW8sIGxlZChjMCkKK21wcDU5ICAgICAgICA1OSAgICAgICAgZ3BpbywgbGVkKGMxKQorbXBwNjAgICAgICAgIDYwICAgICAgICBncGlvLCB1YXJ0MSh0eGQpLCBsZWQoYzIpCittcHA2MSAgICAgICAgNjEgICAgICAgIGdwaW8sIGkyYzEoc2RhKSwgdWFydDEocnhkKSwgc3BpMShjczIpLCBsZWQocDApCittcHA2MiAgICAgICAgNjIgICAgICAgIGdwaW8sIGkyYzEoc2NrKSwgbGVkKHAxKQorbXBwNjMgICAgICAgIDYzICAgICAgICBncGlvLCBwdHAodHJpZyksIGxlZChwMiksIGRldihidXJzdC9sYXN0KQorbXBwNjQgICAgICAgIDY0ICAgICAgICBncGlvLCBkcmFtKHZ0dGN0cmwpLCBsZWQocDMpCittcHA2NSAgICAgICAgNjUgICAgICAgIGdwaW8sIHNhdGExKHByc250KQorbXBwNjYgICAgICAgIDY2ICAgICAgICBncGlvLCBwdHAoZXZyZXEpLCBzcGkxKGNzMykKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL21hcnZlbGwsYXJtYWRhLTM4eC1waW5jdHJsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL21hcnZlbGwsYXJtYWRhLTM4eC1waW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGVjNGMwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbWFydmVsbCxhcm1hZGEtMzh4LXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsODAgQEAKKyogTWFydmVsbCBBcm1hZGEgMzgwLzM4NSBTb0MgcGluY3RybCBkcml2ZXIgZm9yIG1wcAorCitQbGVhc2UgcmVmZXIgdG8gbWFydmVsbCxtdmVidS1waW5jdHJsLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgY29tbW9uIGJpbmRpbmcKK3BhcnQgYW5kIHVzYWdlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAibWFydmVsbCw4OGY2ODEwLXBpbmN0cmwiLCAibWFydmVsbCw4OGY2ODIwLXBpbmN0cmwiIG9yCisgICJtYXJ2ZWxsLDg4ZjY4MjgtcGluY3RybCIgZGVwZW5kaW5nIG9uIHRoZSBzcGVjaWZpYyB2YXJpYW50IG9mIHRoZQorICBTb0MgYmVpbmcgdXNlZC4KKy0gcmVnOiByZWdpc3RlciBzcGVjaWZpZXIgb2YgTVBQIHJlZ2lzdGVycworCitBdmFpbGFibGUgbXBwIHBpbnMvZ3JvdXBzIGFuZCBmdW5jdGlvbnM6CitOb3RlOiBicmFja2V0cyAoeCkgYXJlIG5vdCBwYXJ0IG9mIHRoZSBtcHAgbmFtZSBmb3IgbWFydmVsbCxmdW5jdGlvbiBhbmQgZ2l2ZW4KK29ubHkgZm9yIG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24gaW4gdGhpcyBkb2N1bWVudC4KKworbmFtZSAgICAgICAgICBwaW5zICAgICBmdW5jdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CittcHAwICAgICAgICAgIDAgICAgICAgIGdwaW8sIHVhMChyeGQpCittcHAxICAgICAgICAgIDEgICAgICAgIGdwaW8sIHVhMCh0eGQpCittcHAyICAgICAgICAgIDIgICAgICAgIGdwaW8sIGkyYzAoc2NrKQorbXBwMyAgICAgICAgICAzICAgICAgICBncGlvLCBpMmMwKHNkYSkKK21wcDQgICAgICAgICAgNCAgICAgICAgZ3BpbywgZ2UobWRjKSwgdWExKHR4ZCksIHVhMChydHMpCittcHA1ICAgICAgICAgIDUgICAgICAgIGdwaW8sIGdlKG1kaW8pLCB1YTEocnhkKSwgdWEwKGN0cykKK21wcDYgICAgICAgICAgNiAgICAgICAgZ3BpbywgZ2UwKHR4Y2xrb3V0KSwgZ2UwKGNycyksIGRldihjczMpCittcHA3ICAgICAgICAgIDcgICAgICAgIGdwaW8sIGdlMCh0eGQwKSwgZGV2KGFkOSkKK21wcDggICAgICAgICAgOCAgICAgICAgZ3BpbywgZ2UwKHR4ZDEpLCBkZXYoYWQxMCkKK21wcDkgICAgICAgICAgOSAgICAgICAgZ3BpbywgZ2UwKHR4ZDIpLCBkZXYoYWQxMSkKK21wcDEwICAgICAgICAgMTAgICAgICAgZ3BpbywgZ2UwKHR4ZDMpLCBkZXYoYWQxMikKK21wcDExICAgICAgICAgMTEgICAgICAgZ3BpbywgZ2UwKHR4Y3RsKSwgZGV2KGFkMTMpCittcHAxMiAgICAgICAgIDEyICAgICAgIGdwaW8sIGdlMChyeGQwKSwgcGNpZTAocnN0b3V0KSwgc3BpMChjczEpLCBkZXYoYWQxNCksIHBjaWUzKGNsa3JlcSkKK21wcDEzICAgICAgICAgMTMgICAgICAgZ3BpbywgZ2UwKHJ4ZDEpLCBwY2llMChjbGtyZXEpLCBwY2llMShjbGtyZXEpIFsxXSwgc3BpMChjczIpLCBkZXYoYWQxNSksIHBjaWUyKGNsa3JlcSkKK21wcDE0ICAgICAgICAgMTQgICAgICAgZ3BpbywgZ2UwKHJ4ZDIpLCBwdHAoY2xrKSwgZHJhbSh2dHRjdHJsKSwgc3BpMChjczMpLCBkZXYod2UxKSwgcGNpZTMoY2xrcmVxKQorbXBwMTUgICAgICAgICAxNSAgICAgICBncGlvLCBnZTAocnhkMyksIGdlKG1kYyBzbGF2ZSksIHBjaWUwKHJzdG91dCksIHNwaTAobW9zaSkKK21wcDE2ICAgICAgICAgMTYgICAgICAgZ3BpbywgZ2UwKHJ4Y3RsKSwgZ2UobWRpbyBzbGF2ZSksIGRyYW0oZGVjY2VyciksIHNwaTAobWlzbyksIHBjaWUwKGNsa3JlcSksIHBjaWUxKGNsa3JlcSkgWzFdCittcHAxNyAgICAgICAgIDE3ICAgICAgIGdwaW8sIGdlMChyeGNsayksIHB0cChjbGspLCB1YTEocnhkKSwgc3BpMChzY2spLCBzYXRhMShwcnNudCksIHNhdGEwKHByc250KQorbXBwMTggICAgICAgICAxOCAgICAgICBncGlvLCBnZTAocnhlcnIpLCBwdHAodHJpZyksIHVhMSh0eGQpLCBzcGkwKGNzMCkKK21wcDE5ICAgICAgICAgMTkgICAgICAgZ3BpbywgZ2UwKGNvbCksIHB0cChldnJlcSksIGdlMCh0eGVyciksIHNhdGExKHByc250KSwgdWEwKGN0cykKK21wcDIwICAgICAgICAgMjAgICAgICAgZ3BpbywgZ2UwKHR4Y2xrKSwgcHRwKGNsayksIHNhdGEwKHByc250KSwgdWEwKHJ0cykKK21wcDIxICAgICAgICAgMjEgICAgICAgZ3Bpbywgc3BpMChjczEpLCBnZTEocnhkMCksIHNhdGEwKHByc250KSwgc2QwKGNtZCksIGRldihib290Y3MpLCBzYXRhMShwcnNudCkKK21wcDIyICAgICAgICAgMjIgICAgICAgZ3Bpbywgc3BpMChtb3NpKSwgZGV2KGFkMCkKK21wcDIzICAgICAgICAgMjMgICAgICAgZ3Bpbywgc3BpMChzY2spLCBkZXYoYWQyKQorbXBwMjQgICAgICAgICAyNCAgICAgICBncGlvLCBzcGkwKG1pc28pLCB1YTAoY3RzKSwgdWExKHJ4ZCksIHNkMChkNCksIGRldihyZWFkeSkKK21wcDI1ICAgICAgICAgMjUgICAgICAgZ3Bpbywgc3BpMChjczApLCB1YTAocnRzKSwgdWExKHR4ZCksIHNkMChkNSksIGRldihjczApCittcHAyNiAgICAgICAgIDI2ICAgICAgIGdwaW8sIHNwaTAoY3MyKSwgaTJjMShzY2spLCBzZDAoZDYpLCBkZXYoY3MxKQorbXBwMjcgICAgICAgICAyNyAgICAgICBncGlvLCBzcGkwKGNzMyksIGdlMSh0eGNsa291dCksIGkyYzEoc2RhKSwgc2QwKGQ3KSwgZGV2KGNzMikKK21wcDI4ICAgICAgICAgMjggICAgICAgZ3BpbywgZ2UxKHR4ZDApLCBzZDAoY2xrKSwgZGV2KGFkNSkKK21wcDI5ICAgICAgICAgMjkgICAgICAgZ3BpbywgZ2UxKHR4ZDEpLCBkZXYoYWxlMCkKK21wcDMwICAgICAgICAgMzAgICAgICAgZ3BpbywgZ2UxKHR4ZDIpLCBkZXYob2UpCittcHAzMSAgICAgICAgIDMxICAgICAgIGdwaW8sIGdlMSh0eGQzKSwgZGV2KGFsZTEpCittcHAzMiAgICAgICAgIDMyICAgICAgIGdwaW8sIGdlMSh0eGN0bCksIGRldih3ZTApCittcHAzMyAgICAgICAgIDMzICAgICAgIGdwaW8sIGRyYW0oZGVjY2VyciksIGRldihhZDMpCittcHAzNCAgICAgICAgIDM0ICAgICAgIGdwaW8sIGRldihhZDEpCittcHAzNSAgICAgICAgIDM1ICAgICAgIGdwaW8sIHJlZihjbGtfb3V0MSksIGRldihhMSkKK21wcDM2ICAgICAgICAgMzYgICAgICAgZ3BpbywgcHRwKHRyaWcpLCBkZXYoYTApCittcHAzNyAgICAgICAgIDM3ICAgICAgIGdwaW8sIHB0cChjbGspLCBnZTEocnhjbGspLCBzZDAoZDMpLCBkZXYoYWQ4KQorbXBwMzggICAgICAgICAzOCAgICAgICBncGlvLCBwdHAoZXZyZXEpLCBnZTEocnhkMSksIHJlZihjbGtfb3V0MCksIHNkMChkMCksIGRldihhZDQpCittcHAzOSAgICAgICAgIDM5ICAgICAgIGdwaW8sIGkyYzEoc2NrKSwgZ2UxKHJ4ZDIpLCB1YTAoY3RzKSwgc2QwKGQxKSwgZGV2KGEyKQorbXBwNDAgICAgICAgICA0MCAgICAgICBncGlvLCBpMmMxKHNkYSksIGdlMShyeGQzKSwgdWEwKHJ0cyksIHNkMChkMiksIGRldihhZDYpCittcHA0MSAgICAgICAgIDQxICAgICAgIGdwaW8sIHVhMShyeGQpLCBnZTEocnhjdGwpLCB1YTAoY3RzKSwgc3BpMShjczMpLCBkZXYoYnVyc3QvbGFzdCksIG5hbmQocmIwKQorbXBwNDIgICAgICAgICA0MiAgICAgICBncGlvLCB1YTEodHhkKSwgdWEwKHJ0cyksIGRldihhZDcpCittcHA0MyAgICAgICAgIDQzICAgICAgIGdwaW8sIHBjaWUwKGNsa3JlcSksIGRyYW0odnR0Y3RybCksIGRyYW0oZGVjY2VyciksIHNwaTEoY3MyKSwgZGV2KGNsa291dCksIG5hbmQocmIxKQorbXBwNDQgICAgICAgICA0NCAgICAgICBncGlvLCBzYXRhMChwcnNudCksIHNhdGExKHByc250KSwgc2F0YTIocHJzbnQpIFsyXSwgc2F0YTMocHJzbnQpIFszXQorbXBwNDUgICAgICAgICA0NSAgICAgICBncGlvLCByZWYoY2xrX291dDApLCBwY2llMChyc3RvdXQpLCB1YTEocnhkKQorbXBwNDYgICAgICAgICA0NiAgICAgICBncGlvLCByZWYoY2xrX291dDEpLCBwY2llMChyc3RvdXQpLCB1YTEodHhkKQorbXBwNDcgICAgICAgICA0NyAgICAgICBncGlvLCBzYXRhMChwcnNudCksIHNhdGExKHByc250KSwgc2F0YTIocHJzbnQpIFsyXSwgc2F0YTMocHJzbnQpIFsyXQorbXBwNDggICAgICAgICA0OCAgICAgICBncGlvLCBzYXRhMChwcnNudCksIGRyYW0odnR0Y3RybCksIHRkbShwY2xrKSwgYXVkaW8obWNsayksIHNkMChkNCksIHBjaWUwKGNsa3JlcSkKK21wcDQ5ICAgICAgICAgNDkgICAgICAgZ3Bpbywgc2F0YTIocHJzbnQpIFsyXSwgc2F0YTMocHJzbnQpIFsyXSwgdGRtKGZzeW5jKSwgYXVkaW8obHJjbGspLCBzZDAoZDUpLCBwY2llMShjbGtyZXEpCittcHA1MCAgICAgICAgIDUwICAgICAgIGdwaW8sIHBjaWUwKHJzdG91dCksIHRkbShkcngpLCBhdWRpbyhleHRjbGspLCBzZDAoY21kKQorbXBwNTEgICAgICAgICA1MSAgICAgICBncGlvLCB0ZG0oZHR4KSwgYXVkaW8oc2RvKSwgZHJhbShkZWNjZXJyKSwgcHRwKHRyaWcpCittcHA1MiAgICAgICAgIDUyICAgICAgIGdwaW8sIHBjaWUwKHJzdG91dCksIHRkbShpbnQpLCBhdWRpbyhzZGkpLCBzZDAoZDYpLCBwdHAoY2xrKQorbXBwNTMgICAgICAgICA1MyAgICAgICBncGlvLCBzYXRhMShwcnNudCksIHNhdGEwKHByc250KSwgdGRtKHJzdCksIGF1ZGlvKGJjbGspLCBzZDAoZDcpLCBwdHAoZXZyZXEpCittcHA1NCAgICAgICAgIDU0ICAgICAgIGdwaW8sIHNhdGEwKHByc250KSwgc2F0YTEocHJzbnQpLCBwY2llMChyc3RvdXQpLCBnZTAodHhlcnIpLCBzZDAoZDMpCittcHA1NSAgICAgICAgIDU1ICAgICAgIGdwaW8sIHVhMShjdHMpLCBnZShtZGlvKSwgcGNpZTEoY2xrcmVxKSBbMV0sIHNwaTEoY3MxKSwgc2QwKGQwKSwgdWExKHJ4ZCkKK21wcDU2ICAgICAgICAgNTYgICAgICAgZ3BpbywgdWExKHJ0cyksIGdlKG1kYyksIGRyYW0oZGVjY2VyciksIHNwaTEobW9zaSksIHVhMSh0eGQpCittcHA1NyAgICAgICAgIDU3ICAgICAgIGdwaW8sIHNwaTEoc2NrKSwgc2QwKGNsayksIHVhMSh0eGQpCittcHA1OCAgICAgICAgIDU4ICAgICAgIGdwaW8sIHBjaWUxKGNsa3JlcSkgWzFdLCBpMmMxKHNjayksIHBjaWUyKGNsa3JlcSksIHNwaTEobWlzbyksIHNkMChkMSksIHVhMShyeGQpCittcHA1OSAgICAgICAgIDU5ICAgICAgIGdwaW8sIHBjaWUwKHJzdG91dCksIGkyYzEoc2RhKSwgc3BpMShjczApLCBzZDAoZDIpCisKK1sxXTogb25seSBhdmFpbGFibGUgb24gODhGNjgyMCBhbmQgODhGNjgyOAorWzJdOiBvbmx5IGF2YWlsYWJsZSBvbiA4OEY2ODI4CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9tYXJ2ZWxsLGFybWFkYS0zOXgtcGluY3RybC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9tYXJ2ZWxsLGFybWFkYS0zOXgtcGluY3RybC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQwYjYwZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL21hcnZlbGwsYXJtYWRhLTM5eC1waW5jdHJsLnR4dApAQCAtMCwwICsxLDg0IEBACisqIE1hcnZlbGwgQXJtYWRhIDM5eCBTb0MgcGluY3RybCBkcml2ZXIgZm9yIG1wcAorCitQbGVhc2UgcmVmZXIgdG8gbWFydmVsbCxtdmVidS1waW5jdHJsLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgY29tbW9uIGJpbmRpbmcKK3BhcnQgYW5kIHVzYWdlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAibWFydmVsbCw4OGY2OTIwLXBpbmN0cmwiLCAibWFydmVsbCw4OGY2OTI1LXBpbmN0cmwiIG9yCisgICJtYXJ2ZWxsLDg4ZjY5MjgtcGluY3RybCIgZGVwZW5kaW5nIG9uIHRoZSBzcGVjaWZpYyB2YXJpYW50IG9mIHRoZQorICBTb0MgYmVpbmcgdXNlZC4KKy0gcmVnOiByZWdpc3RlciBzcGVjaWZpZXIgb2YgTVBQIHJlZ2lzdGVycworCitBdmFpbGFibGUgbXBwIHBpbnMvZ3JvdXBzIGFuZCBmdW5jdGlvbnM6CitOb3RlOiBicmFja2V0cyAoeCkgYXJlIG5vdCBwYXJ0IG9mIHRoZSBtcHAgbmFtZSBmb3IgbWFydmVsbCxmdW5jdGlvbiBhbmQgZ2l2ZW4KK29ubHkgZm9yIG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24gaW4gdGhpcyBkb2N1bWVudC4KKworbmFtZSAgICBwaW5zICAgIGZ1bmN0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK21wcDAJMAlncGlvLCB1YTAocnhkKQorbXBwMQkxCWdwaW8sIHVhMCh0eGQpCittcHAyCTIJZ3BpbywgaTJjMChzY2spCittcHAzCTMJZ3BpbywgaTJjMChzZGEpCittcHA0CTQJZ3BpbywgdWExKHR4ZCksIHVhMChydHMpLCBzbWkobWRjKQorbXBwNQk1CWdwaW8sIHVhMShyeGQpLCB1YTAoY3RzKSwgc21pKG1kaW8pCittcHA2CTYJZ3BpbywgZGV2KGNzMyksIHhzbWkobWRpbykKK21wcDcJNwlncGlvLCBkZXYoYWQ5KSwgeHNtaShtZGMpCittcHA4CTgJZ3BpbywgZGV2KGFkMTApLCBwdHAodHJpZykKK21wcDkJOQlncGlvLCBkZXYoYWQxMSksIHB0cChjbGspCittcHAxMAkxMAlncGlvLCBkZXYoYWQxMiksIHB0cChldnJlcSkKK21wcDExCTExCWdwaW8sIGRldihhZDEzKSwgbGVkKGNsaykKK21wcDEyCTEyCWdwaW8sIHBjaWUwKHJzdG91dCksIGRldihhZDE0KSwgbGVkKHN0YikKK21wcDEzCTEzCWdwaW8sIGRldihhZDE1KSwgcGNpZTIoY2xrcmVxKSwgbGVkKGRhdGEpCittcHAxNAkxNAlncGlvLCBkcmFtKHZ0dGN0cmwpLCBkZXYod2UxKSwgdWExKHR4ZCkKK21wcDE1CTE1CWdwaW8sIHBjaWUwKHJzdG91dCksIHNwaTAobW9zaSksIGkyYzEoc2NrKQorbXBwMTYJMTYJZ3BpbywgZHJhbShkZWNjZXJyKSwgc3BpMChtaXNvKSwgcGNpZTAoY2xrcmVxKSwgaTJjMShzZGEpCittcHAxNwkxNwlncGlvLCB1YTEocnhkKSwgc3BpMChzY2spLCBzYXRhMShwcnNudCkgWzFdLCBzYXRhMChwcnNudCkgWzFdLCBzbWkobWRpbykKK21wcDE4CTE4CWdwaW8sIHVhMSh0eGQpLCBzcGkwKGNzMCksIGkyYzIoc2NrKQorbXBwMTkJMTkJZ3Bpbywgc2F0YTEocHJzbnQpIFsxXSwgdWEwKGN0cyksIHVhMShyeGQpLCBpMmMyKHNkYSkKK21wcDIwCTIwCWdwaW8sIHNhdGEwKHByc250KSBbMV0sIHVhMChydHMpLCB1YTEodHhkKSwgc21pKG1kYykKK21wcDIxCTIxCWdwaW8sIHNwaTAoY3MxKSwgc2F0YTAocHJzbnQpIFsxXSwgc2QwKGNtZCksIGRldihib290Y3MpLAorICAgICAgICAgICAgICAgIHNhdGExKHByc250KSBbMV0sIGdlKHJ4ZDApCittcHAyMgkyMglncGlvLCBzcGkwKG1vc2kpLCBkZXYoYWQwKQorbXBwMjMJMjMJZ3Bpbywgc3BpMChzY2spLCBkZXYoYWQyKQorbXBwMjQJMjQJZ3Bpbywgc3BpMChtaXNvKSwgdWEwKGN0cyksIHVhMShyeGQpLCBzZDAoZDQpLCBkZXYocmVhZHkpCittcHAyNQkyNQlncGlvLCBzcGkwKGNzMCksIHVhMChydHMpLCB1YTEodHhkKSwgc2QwKGQ1KSwgZGV2KGNzMCkKK21wcDI2CTI2CWdwaW8sIHNwaTAoY3MyKSwgaTJjMShzY2spLCBzZDAoZDYpLCBkZXYoY3MxKQorbXBwMjcJMjcJZ3Bpbywgc3BpMChjczMpLCBpMmMxKHNkYSksIHNkMChkNyksIGRldihjczIpLCBnZSh0eGNsa291dCkKK21wcDI4CTI4CWdwaW8sIHNkMChjbGspLCBkZXYoYWQ1KSwgZ2UodHhkMCkKK21wcDI5CTI5CWdwaW8sIGRldihhbGUwKSwgZ2UodHhkMSkKK21wcDMwCTMwCWdwaW8sIGRldihvZSksIGdlKHR4ZDIpCittcHAzMQkzMQlncGlvLCBkZXYoYWxlMSksIGdlKHR4ZDMpCittcHAzMgkzMglncGlvLCBkZXYod2UwKSwgZ2UodHhjdGwpCittcHAzMwkzMwlncGlvLCBkcmFtKGRlY2NlcnIpLCBkZXYoYWQzKQorbXBwMzQJMzQJZ3BpbywgZGV2KGFkMSkKK21wcDM1CTM1CWdwaW8sIHJlZihjbGspLCBkZXYoYTEpCittcHAzNgkzNglncGlvLCBkZXYoYTApCittcHAzNwkzNwlncGlvLCBzZDAoZDMpLCBkZXYoYWQ4KSwgZ2UocnhjbGspCittcHAzOAkzOAlncGlvLCByZWYoY2xrKSwgc2QwKGQwKSwgZGV2KGFkNCksIGdlKHJ4ZDEpCittcHAzOQkzOQlncGlvLCBpMmMxKHNjayksIHVhMChjdHMpLCBzZDAoZDEpLCBkZXYoYTIpLCBnZShyeGQyKQorbXBwNDAJNDAJZ3BpbywgaTJjMShzZGEpLCB1YTAocnRzKSwgc2QwKGQyKSwgZGV2KGFkNiksIGdlKHJ4ZDMpCittcHA0MQk0MQlncGlvLCB1YTEocnhkKSwgdWEwKGN0cyksIHNwaTEoY3MzKSwgZGV2KGJ1cnN0L2xhc3QpLCBuYW5kKHJiMCksIGdlKHJ4Y3RsKQorbXBwNDIJNDIJZ3BpbywgdWExKHR4ZCksIHVhMChydHMpLCBkZXYoYWQ3KQorbXBwNDMJNDMJZ3BpbywgcGNpZTAoY2xrcmVxKSwgZHJhbSh2dHRjdHJsKSwgZHJhbShkZWNjZXJyKSwgc3BpMShjczIpLCBkZXYoY2xrb3V0KSwgbmFuZChyYjEpCittcHA0NAk0NAlncGlvLCBzYXRhMChwcnNudCkgWzFdLCBzYXRhMShwcnNudCkgWzFdLCBzYXRhMihwcnNudCkgWzJdLAorICAgICAgICAgICAgICAgIHNhdGEzKHByc250KSBbMl0sIGxlZChjbGspCittcHA0NQk0NQlncGlvLCByZWYoY2xrKSwgcGNpZTAocnN0b3V0KSwgdWExKHJ4ZCkKK21wcDQ2CTQ2CWdwaW8sIHJlZihjbGspLCBwY2llMChyc3RvdXQpLCB1YTEodHhkKSwgbGVkKHN0YikKK21wcDQ3CTQ3CWdwaW8sIHNhdGEwKHByc250KSBbMV0sIHNhdGExKHByc250KSBbMV0sIHNhdGEyKHByc250KSBbMl0sCisgICAgICAgICAgICAgICAgc2F0YTMocHJzbnQpIFsyXSwgbGVkKGRhdGEpCittcHA0OAk0OAlncGlvLCBzYXRhMChwcnNudCkgWzFdLCBkcmFtKHZ0dGN0cmwpLCB0ZG0ocGNsaykgWzJdLCBhdWRpbyhtY2xrKSBbMl0sIHNkMChkNCksIHBjaWUwKGNsa3JlcSksIHVhMSh0eGQpCittcHA0OQk0OQlncGlvLCBzYXRhMihwcnNudCkgWzJdLCBzYXRhMyhwcnNudCkgWzJdLCB0ZG0oZnN5bmMpIFsyXSwKKyAgICAgICAgICAgICAgICBhdWRpbyhscmNsaykgWzJdLCBzZDAoZDUpLCB1YTIocnhkKQorbXBwNTAJNTAJZ3BpbywgcGNpZTAocnN0b3V0KSwgdGRtKGRyeCkgWzJdLCBhdWRpbyhleHRjbGspIFsyXSwgc2QwKGNtZCksIHVhMihyeGQpCittcHA1MQk1MQlncGlvLCB0ZG0oZHR4KSBbMl0sIGF1ZGlvKHNkbykgWzJdLCBkcmFtKGRlY2NlcnIpLCB1YTIodHhkKQorbXBwNTIJNTIJZ3BpbywgcGNpZTAocnN0b3V0KSwgdGRtKGludCkgWzJdLCBhdWRpbyhzZGkpIFsyXSwgc2QwKGQ2KSwgaTJjMyhzY2spCittcHA1Mwk1MwlncGlvLCBzYXRhMShwcnNudCkgWzFdLCBzYXRhMChwcnNudCkgWzFdLCB0ZG0ocnN0KSBbMl0sIGF1ZGlvKGJjbGspIFsyXSwgc2QwKGQ3KSwgaTJjMyhzZGEpCittcHA1NAk1NAlncGlvLCBzYXRhMChwcnNudCkgWzFdLCBzYXRhMShwcnNudCkgWzFdLCBwY2llMChyc3RvdXQpLCBzZDAoZDMpLCB1YTModHhkKQorbXBwNTUJNTUJZ3BpbywgdWExKGN0cyksIHNwaTEoY3MxKSwgc2QwKGQwKSwgdWExKHJ4ZCksIHVhMyhyeGQpCittcHA1Ngk1NglncGlvLCB1YTEocnRzKSwgZHJhbShkZWNjZXJyKSwgc3BpMShtb3NpKSwgdWExKHR4ZCkKK21wcDU3CTU3CWdwaW8sIHNwaTEoc2NrKSwgc2QwKGNsayksIHVhMSh0eGQpCittcHA1OAk1OAlncGlvLCBpMmMxKHNjayksIHBjaWUyKGNsa3JlcSksIHNwaTEobWlzbyksIHNkMChkMSksIHVhMShyeGQpCittcHA1OQk1OQlncGlvLCBwY2llMChyc3RvdXQpLCBpMmMxKHNkYSksIHNwaTEoY3MwKSwgc2QwKGQyKQorCitbMV06IG9ubHkgYXZhaWxhYmxlIG9uIDg4RjY5MjUvODhGNjkyOAorWzJdOiBvbmx5IGF2YWlsYWJsZSBvbiA4OEY2OTI4CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9tYXJ2ZWxsLGFybWFkYS14cC1waW5jdHJsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL21hcnZlbGwsYXJtYWRhLXhwLXBpbmN0cmwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2ZGE3MjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9tYXJ2ZWxsLGFybWFkYS14cC1waW5jdHJsLnR4dApAQCAtMCwwICsxLDk5IEBACisqIE1hcnZlbGwgQXJtYWRhIFhQIFNvQyBwaW5jdHJsIGRyaXZlciBmb3IgbXBwCisKK1BsZWFzZSByZWZlciB0byBtYXJ2ZWxsLG12ZWJ1LXBpbmN0cmwudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBjb21tb24gYmluZGluZworcGFydCBhbmQgdXNhZ2UuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJtYXJ2ZWxsLG12NzgyMzAtcGluY3RybCIsICJtYXJ2ZWxsLG12NzgyNjAtcGluY3RybCIsCisgICAgICAgICAgICAgICJtYXJ2ZWxsLG12Nzg0NjAtcGluY3RybCIKKy0gcmVnOiByZWdpc3RlciBzcGVjaWZpZXIgb2YgTVBQIHJlZ2lzdGVycworCitUaGlzIGRyaXZlciBzdXBwb3J0cyBhbGwgQXJtYWRhIFhQIHZhcmlhbnRzLCBpLmUuIG12NzgyMzAsIG12NzgyNjAsIGFuZCBtdjc4NDYwLgorCitBdmFpbGFibGUgbXBwIHBpbnMvZ3JvdXBzIGFuZCBmdW5jdGlvbnM6CitOb3RlOiBicmFja2V0cyAoeCkgYXJlIG5vdCBwYXJ0IG9mIHRoZSBtcHAgbmFtZSBmb3IgbWFydmVsbCxmdW5jdGlvbiBhbmQgZ2l2ZW4KK29ubHkgZm9yIG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24gaW4gdGhpcyBkb2N1bWVudC4KKworKiBNYXJ2ZWxsIEFybWFkYSBYUCAoYWxsIHZhcmlhbnRzKQorCituYW1lICAgICAgICAgIHBpbnMgICAgIGZ1bmN0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK21wcDAgICAgICAgICAgMCAgICAgICAgZ3BpbywgZ2UwKHR4Y2xrb3V0KSwgbGNkKGQwKQorbXBwMSAgICAgICAgICAxICAgICAgICBncGlvLCBnZTAodHhkMCksIGxjZChkMSkKK21wcDIgICAgICAgICAgMiAgICAgICAgZ3BpbywgZ2UwKHR4ZDEpLCBsY2QoZDIpCittcHAzICAgICAgICAgIDMgICAgICAgIGdwaW8sIGdlMCh0eGQyKSwgbGNkKGQzKQorbXBwNCAgICAgICAgICA0ICAgICAgICBncGlvLCBnZTAodHhkMyksIGxjZChkNCkKK21wcDUgICAgICAgICAgNSAgICAgICAgZ3BpbywgZ2UwKHR4Y3RsKSwgbGNkKGQ1KQorbXBwNiAgICAgICAgICA2ICAgICAgICBncGlvLCBnZTAocnhkMCksIGxjZChkNikKK21wcDcgICAgICAgICAgNyAgICAgICAgZ3BpbywgZ2UwKHJ4ZDEpLCBsY2QoZDcpCittcHA4ICAgICAgICAgIDggICAgICAgIGdwaW8sIGdlMChyeGQyKSwgbGNkKGQ4KQorbXBwOSAgICAgICAgICA5ICAgICAgICBncGlvLCBnZTAocnhkMyksIGxjZChkOSkKK21wcDEwICAgICAgICAgMTAgICAgICAgZ3BpbywgZ2UwKHJ4Y3RsKSwgbGNkKGQxMCkKK21wcDExICAgICAgICAgMTEgICAgICAgZ3BpbywgZ2UwKHJ4Y2xrKSwgbGNkKGQxMSkKK21wcDEyICAgICAgICAgMTIgICAgICAgZ3BpbywgZ2UwKHR4ZDQpLCBnZTEodHhjbGtvdXQpLCBsY2QoZDEyKQorbXBwMTMgICAgICAgICAxMyAgICAgICBncGlvLCBnZTAodHhkNSksIGdlMSh0eGQwKSwgc3BpMShtb3NpKSwgbGNkKGQxMykKK21wcDE0ICAgICAgICAgMTQgICAgICAgZ3BpbywgZ2UwKHR4ZDYpLCBnZTEodHhkMSksIHNwaTEoc2NrKSwgbGNkKGQxNSkKK21wcDE1ICAgICAgICAgMTUgICAgICAgZ3BpbywgZ2UwKHR4ZDcpLCBnZTEodHhkMiksIGxjZChkMTYpCittcHAxNiAgICAgICAgIDE2ICAgICAgIGdwaW8sIGdlMCh0eGQ3KSwgZ2UxKHR4ZDMpLCBzcGkxKGNzMCksIGxjZChkMTYpCittcHAxNyAgICAgICAgIDE3ICAgICAgIGdwaW8sIGdlMChjb2wpLCBnZTEodHhjdGwpLCBzcGkxKG1pc28pLCBsY2QoZDE3KQorbXBwMTggICAgICAgICAxOCAgICAgICBncGlvLCBnZTAocnhlcnIpLCBnZTEocnhkMCksIGxjZChkMTgpLCBwdHAodHJpZykKK21wcDE5ICAgICAgICAgMTkgICAgICAgZ3BpbywgZ2UwKGNycyksIGdlMShyeGQxKSwgbGNkKGQxOSksIHB0cChldnJlcSkKK21wcDIwICAgICAgICAgMjAgICAgICAgZ3BpbywgZ2UwKHJ4ZDQpLCBnZTEocnhkMiksIGxjZChkMjApLCBwdHAoY2xrKQorbXBwMjEgICAgICAgICAyMSAgICAgICBncGlvLCBnZTAocnhkNSksIGdlMShyeGQzKSwgbGNkKGQyMSksIGRyYW0oYmF0KQorbXBwMjIgICAgICAgICAyMiAgICAgICBncGlvLCBnZTAocnhkNiksIGdlMShyeGN0bCksIGxjZChkMjIpLCBzYXRhMChwcnNudCkKK21wcDIzICAgICAgICAgMjMgICAgICAgZ3BpbywgZ2UwKHJ4ZDcpLCBnZTEocnhjbGspLCBsY2QoZDIzKSwgc2F0YTEocHJzbnQpCittcHAyNCAgICAgICAgIDI0ICAgICAgIGdwaW8sIGxjZChoc3luYyksIHNhdGExKHByc250KSwgdGRtKHJzdCkKK21wcDI1ICAgICAgICAgMjUgICAgICAgZ3BpbywgbGNkKHZzeW5jKSwgc2F0YTAocHJzbnQpLCB0ZG0ocGNsaykKK21wcDI2ICAgICAgICAgMjYgICAgICAgZ3BpbywgbGNkKGNsayksIHRkbShmc3luYykKK21wcDI3ICAgICAgICAgMjcgICAgICAgZ3BpbywgbGNkKGUpLCB0ZG0oZHR4KSwgcHRwKHRyaWcpCittcHAyOCAgICAgICAgIDI4ICAgICAgIGdwaW8sIGxjZChwd20pLCB0ZG0oZHJ4KSwgcHRwKGV2cmVxKQorbXBwMjkgICAgICAgICAyOSAgICAgICBncGlvLCBsY2QocmVmLWNsayksIHRkbShpbnQwKSwgcHRwKGNsaykKK21wcDMwICAgICAgICAgMzAgICAgICAgZ3BpbywgdGRtKGludDEpLCBzZDAoY2xrKQorbXBwMzEgICAgICAgICAzMSAgICAgICBncGlvLCB0ZG0oaW50MiksIHNkMChjbWQpCittcHAzMiAgICAgICAgIDMyICAgICAgIGdwaW8sIHRkbShpbnQzKSwgc2QwKGQwKQorbXBwMzMgICAgICAgICAzMyAgICAgICBncGlvLCB0ZG0oaW50NCksIHNkMChkMSksIGRyYW0oYmF0KSwgZHJhbSh2dHRjdHJsKQorbXBwMzQgICAgICAgICAzNCAgICAgICBncGlvLCB0ZG0oaW50NSksIHNkMChkMiksIHNhdGEwKHByc250KSwgZHJhbShkZWNjZXJyKQorbXBwMzUgICAgICAgICAzNSAgICAgICBncGlvLCB0ZG0oaW50NiksIHNkMChkMyksIHNhdGExKHByc250KQorbXBwMzYgICAgICAgICAzNiAgICAgICBncGlvLCBzcGkwKG1vc2kpCittcHAzNyAgICAgICAgIDM3ICAgICAgIGdwaW8sIHNwaTAobWlzbykKK21wcDM4ICAgICAgICAgMzggICAgICAgZ3Bpbywgc3BpMChzY2spCittcHAzOSAgICAgICAgIDM5ICAgICAgIGdwaW8sIHNwaTAoY3MwKQorbXBwNDAgICAgICAgICA0MCAgICAgICBncGlvLCBzcGkwKGNzMSksIHVhcnQyKGN0cyksIGxjZCh2Z2EtaHN5bmMpLCBwY2llKGNsa3JlcTApLAorICAgICAgICAgICAgICAgICAgICAgICBzcGkxKGNzMSkKK21wcDQxICAgICAgICAgNDEgICAgICAgZ3Bpbywgc3BpMChjczIpLCB1YXJ0MihydHMpLCBsY2QodmdhLXZzeW5jKSwgc2F0YTEocHJzbnQpLAorICAgICAgICAgICAgICAgICAgICAgICBwY2llKGNsa3JlcTEpLCBzcGkxKGNzMikKK21wcDQyICAgICAgICAgNDIgICAgICAgZ3BpbywgdWFydDIocnhkKSwgdWFydDAoY3RzKSwgdGRtKGludDcpLCB0ZG0odGltZXIpCittcHA0MyAgICAgICAgIDQzICAgICAgIGdwaW8sIHVhcnQyKHR4ZCksIHVhcnQwKHJ0cyksIHNwaTAoY3MzKSwgcGNpZShyc3RvdXQpLAorICAgICAgICAgICAgICAgICAgICAgICBzcGkxKGNzMykKK21wcDQ0ICAgICAgICAgNDQgICAgICAgZ3BpbywgdWFydDIoY3RzKSwgdWFydDMocnhkKSwgc3BpMChjczQpLCBwY2llKGNsa3JlcTIpLAorICAgICAgICAgICAgICAgICAgICAgICBkcmFtKGJhdCksIHNwaTEoY3M0KQorbXBwNDUgICAgICAgICA0NSAgICAgICBncGlvLCB1YXJ0MihydHMpLCB1YXJ0Myh0eGQpLCBzcGkwKGNzNSksIHNhdGExKHByc250KSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3BpMShjczUpLCBkcmFtKHZ0dGN0cmwpCittcHA0NiAgICAgICAgIDQ2ICAgICAgIGdwaW8sIHVhcnQzKHJ0cyksIHVhcnQxKHJ0cyksIHNwaTAoY3M2KSwgc2F0YTAocHJzbnQpLAorICAgICAgICAgICAgICAgICAgICAgICBzcGkxKGNzNikKK21wcDQ3ICAgICAgICAgNDcgICAgICAgZ3BpbywgdWFydDMoY3RzKSwgdWFydDEoY3RzKSwgc3BpMChjczcpLCBwY2llKGNsa3JlcTMpLAorICAgICAgICAgICAgICAgICAgICAgICByZWYoY2xrb3V0KSwgc3BpMShjczcpCittcHA0OCAgICAgICAgIDQ4ICAgICAgIGdwaW8sIGRldihjbGtvdXQpLCBkZXYoYnVyc3QvbGFzdCksIG5hbmQocmIpCisKKyogTWFydmVsbCBBcm1hZGEgWFAgKG12NzgyNjAgYW5kIG12Nzg0NjAgb25seSkKKworbmFtZSAgICAgICAgICBwaW5zICAgICBmdW5jdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CittcHA0OSAgICAgICAgIDQ5ICAgICAgIGdwaW8sIGRldih3ZTMpCittcHA1MCAgICAgICAgIDUwICAgICAgIGdwaW8sIGRldih3ZTIpCittcHA1MSAgICAgICAgIDUxICAgICAgIGdwaW8sIGRldihhZDE2KQorbXBwNTIgICAgICAgICA1MiAgICAgICBncGlvLCBkZXYoYWQxNykKK21wcDUzICAgICAgICAgNTMgICAgICAgZ3BpbywgZGV2KGFkMTgpCittcHA1NCAgICAgICAgIDU0ICAgICAgIGdwaW8sIGRldihhZDE5KQorbXBwNTUgICAgICAgICA1NSAgICAgICBncGlvLCBkZXYoYWQyMCkKK21wcDU2ICAgICAgICAgNTYgICAgICAgZ3BpbywgZGV2KGFkMjEpCittcHA1NyAgICAgICAgIDU3ICAgICAgIGdwaW8sIGRldihhZDIyKQorbXBwNTggICAgICAgICA1OCAgICAgICBncGlvLCBkZXYoYWQyMykKK21wcDU5ICAgICAgICAgNTkgICAgICAgZ3BpbywgZGV2KGFkMjQpCittcHA2MCAgICAgICAgIDYwICAgICAgIGdwaW8sIGRldihhZDI1KQorbXBwNjEgICAgICAgICA2MSAgICAgICBncGlvLCBkZXYoYWQyNikKK21wcDYyICAgICAgICAgNjIgICAgICAgZ3BpbywgZGV2KGFkMjcpCittcHA2MyAgICAgICAgIDYzICAgICAgIGdwaW8sIGRldihhZDI4KQorbXBwNjQgICAgICAgICA2NCAgICAgICBncGlvLCBkZXYoYWQyOSkKK21wcDY1ICAgICAgICAgNjUgICAgICAgZ3BpbywgZGV2KGFkMzApCittcHA2NiAgICAgICAgIDY2ICAgICAgIGdwaW8sIGRldihhZDMxKQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbWFydmVsbCxkb3ZlLXBpbmN0cmwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbWFydmVsbCxkb3ZlLXBpbmN0cmwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNTI0NzcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9tYXJ2ZWxsLGRvdmUtcGluY3RybC50eHQKQEAgLTAsMCArMSw5MCBAQAorKiBNYXJ2ZWxsIERvdmUgU29DIHBpbmN0cmwgZHJpdmVyIGZvciBtcHAKKworUGxlYXNlIHJlZmVyIHRvIG1hcnZlbGwsbXZlYnUtcGluY3RybC50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGNvbW1vbiBiaW5kaW5nCitwYXJ0IGFuZCB1c2FnZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogIm1hcnZlbGwsZG92ZS1waW5jdHJsIgorLSBjbG9ja3M6IChvcHRpb25hbCkgcGhhbmRsZSBvZiBwZG1hIGNsb2NrCistIHJlZzogcmVnaXN0ZXIgc3BlY2lmaWVycyBvZiBNUFAsIE1QUDQsIGFuZCBQTVUgTVBQIHJlZ2lzdGVycworCitBdmFpbGFibGUgbXBwIHBpbnMvZ3JvdXBzIGFuZCBmdW5jdGlvbnM6CitOb3RlOiBicmFja2V0cyAoeCkgYXJlIG5vdCBwYXJ0IG9mIHRoZSBtcHAgbmFtZSBmb3IgbWFydmVsbCxmdW5jdGlvbiBhbmQgZ2l2ZW4KK29ubHkgZm9yIG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24gaW4gdGhpcyBkb2N1bWVudC4KK05vdGU6IHBtdSogYWxzbyBhbGxvd3MgZm9yIFBvd2VyIE1hbmFnZW1lbnQgZnVuY3Rpb25zIGxpc3RlZCBiZWxvdworCituYW1lICAgICAgICAgIHBpbnMgICAgIGZ1bmN0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK21wcDAgICAgICAgICAgMCAgICAgICAgZ3BpbywgcG11LCB1YXJ0MihydHMpLCBzZGlvMChjZCksIGxjZDAocHdtKSwgcG11KgorbXBwMSAgICAgICAgICAxICAgICAgICBncGlvLCBwbXUsIHVhcnQyKGN0cyksIHNkaW8wKHdwKSwgbGNkMShwd20pLCBwbXUqCittcHAyICAgICAgICAgIDIgICAgICAgIGdwaW8sIHBtdSwgdWFydDIodHhkKSwgc2RpbzAoYnVzcHdyKSwgc2F0YShwcnNudCksCisgICAgICAgICAgICAgICAgICAgICAgIHVhcnQxKHJ0cyksIHBtdSoKK21wcDMgICAgICAgICAgMyAgICAgICAgZ3BpbywgcG11LCB1YXJ0MihyeGQpLCBzZGlvMChsZWRjdHJsKSwgc2F0YShhY3QpLAorICAgICAgICAgICAgICAgICAgICAgICB1YXJ0MShjdHMpLCBsY2Qtc3BpKGNzMSksIHBtdSoKK21wcDQgICAgICAgICAgNCAgICAgICAgZ3BpbywgcG11LCB1YXJ0MyhydHMpLCBzZGlvMShjZCksIHNwaTEobWlzbyksIHBtdSoKK21wcDUgICAgICAgICAgNSAgICAgICAgZ3BpbywgcG11LCB1YXJ0MyhjdHMpLCBzZGlvMSh3cCksIHNwaTEoY3MpLCBwbXUqCittcHA2ICAgICAgICAgIDYgICAgICAgIGdwaW8sIHBtdSwgdWFydDModHhkKSwgc2RpbzEoYnVzcHdyKSwgc3BpMShtb3NpKSwgcG11KgorbXBwNyAgICAgICAgICA3ICAgICAgICBncGlvLCBwbXUsIHVhcnQzKHJ4ZCksIHNkaW8xKGxlZGN0cmwpLCBzcGkxKHNjayksIHBtdSoKK21wcDggICAgICAgICAgOCAgICAgICAgZ3BpbywgcG11LCB3YXRjaGRvZyhyc3RvdXQpLCBwbXUqCittcHA5ICAgICAgICAgIDkgICAgICAgIGdwaW8sIHBtdSwgcGV4MShjbGtyZXEpLCBwbXUqCittcHAxMCAgICAgICAgIDEwICAgICAgIGdwaW8sIHBtdSwgc3NwKHNjbGspLCBwbXUqCittcHAxMSAgICAgICAgIDExICAgICAgIGdwaW8sIHBtdSwgc2F0YShwcnNudCksIHNhdGEtMShhY3QpLCBzZGlvMChsZWRjdHJsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgc2RpbzEobGVkY3RybCksIHBleDAoY2xrcmVxKSwgcG11KgorbXBwMTIgICAgICAgICAxMiAgICAgICBncGlvLCBwbXUsIHVhcnQyKHJ0cyksIGF1ZGlvMChleHRjbGspLCBzZGlvMShjZCksCisgICAgICAgICAgICAgICAgICAgICAgIHNhdGEoYWN0KSwgcG11KgorbXBwMTMgICAgICAgICAxMyAgICAgICBncGlvLCBwbXUsIHVhcnQyKGN0cyksIGF1ZGlvMShleHRjbGspLCBzZGlvMSh3cCksCisgICAgICAgICAgICAgICAgICAgICAgIHNzcChleHRjbGspLCBwbXUqCittcHAxNCAgICAgICAgIDE0ICAgICAgIGdwaW8sIHBtdSwgdWFydDIodHhkKSwgc2RpbzEoYnVzcHdyKSwgc3NwKHJ4ZCksIHBtdSoKK21wcDE1ICAgICAgICAgMTUgICAgICAgZ3BpbywgcG11LCB1YXJ0MihyeGQpLCBzZGlvMShsZWRjdHJsKSwgc3NwKHNmcm0pLCBwbXUqCittcHAxNiAgICAgICAgIDE2ICAgICAgIGdwaW8sIHVhcnQzKHJ0cyksIHNkaW8wKGNkKSwgYWM5NyhzZGkxKSwgbGNkLXNwaShjczEpCittcHAxNyAgICAgICAgIDE3ICAgICAgIGdwaW8sIHVhcnQzKGN0cyksIHNkaW8wKHdwKSwgYWM5NyhzZGkyKSwgdHdzaShzZGEpLAorICAgICAgICAgICAgICAgICAgICAgICBhYzk3LTEoc3lzY2xrbykKK21wcDE4ICAgICAgICAgMTggICAgICAgZ3BpbywgdWFydDModHhkKSwgc2RpbzAoYnVzcHdyKSwgYWM5NyhzZGkzKSwgbGNkMChwd20pCittcHAxOSAgICAgICAgIDE5ICAgICAgIGdwaW8sIHVhcnQzKHJ4ZCksIHNkaW8wKGxlZGN0cmwpLCB0d3NpKHNjaykKK21wcDIwICAgICAgICAgMjAgICAgICAgZ3Bpbywgc2RpbzAoY2QpLCBzZGlvMShjZCksIHNwaTEobWlzbyksIGxjZC1zcGkobWlzbyksCisgICAgICAgICAgICAgICAgICAgICAgIGFjOTcoc3lzY2xrbykKK21wcDIxICAgICAgICAgMjEgICAgICAgZ3Bpbywgc2RpbzAod3ApLCBzZGlvMSh3cCksIHNwaTEoY3MpLCBsY2Qtc3BpKGNzMCksCisgICAgICAgICAgICAgICAgICAgICAgIHVhcnQxKGN0cyksIHNzcChzZnJtKQorbXBwMjIgICAgICAgICAyMiAgICAgICBncGlvLCBzZGlvMChidXNwd3IpLCBzZGlvMShidXNwd3IpLCBzcGkxKG1vc2kpLAorICAgICAgICAgICAgICAgICAgICAgICBsY2Qtc3BpKG1vc2kpLCB1YXJ0MShjdHMpLCBzc3AodHhkKQorbXBwMjMgICAgICAgICAyMyAgICAgICBncGlvLCBzZGlvMChsZWRjdHJsKSwgc2RpbzEobGVkY3RybCksIHNwaTEoc2NrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbGNkLXNwaShzY2spLCBzc3Aoc2NsaykKK21wcF9jYW1lcmEgICAgMjQtMzkgICAgZ3BpbywgY2FtZXJhCittcHBfc2RpbzAgICAgIDQwLTQ1ICAgIGdwaW8sIHNkaW8wCittcHBfc2RpbzEgICAgIDQ2LTUxICAgIGdwaW8sIHNkaW8xCittcHBfYXVkaW8xICAgIDUyLTU3ICAgIGdwaW8sIGkyczEvc3BkaWZvLCBpMnMxLCBzcGRpZm8sIHR3c2ksIHNzcC9zcGRpZm8sIHNzcCwKKyAgICAgICAgICAgICAgICAgICAgICAgc3NwL3R3c2kKK21wcF9zcGkwICAgICAgNTgtNjEgICAgZ3Bpbywgc3BpMAorbXBwX3VhcnQxICAgICA2Mi02MyAgICBncGlvLCB1YXJ0MQorbXBwX25hbmQgICAgICA2NC03MSAgICBncG8sIG5hbmQKK2F1ZGlvMCAgICAgICAgLSAgICAgICAgaTJzLCBhYzk3Cit0d3NpICAgICAgICAgIC0gICAgICAgIG5vbmUsIG9wdDEsIG9wdDIsIG9wdDMKKworUG93ZXIgTWFuYWdlbWVudCBmdW5jdGlvbnMgKHBtdSopOgorcG11LW5jICAgICAgICAgICAgICAgUGluIG5vdCBkcml2ZW4gYnkgYW55IFBNIGZ1bmN0aW9uCitwbXUtbG93ICAgICAgICAgICAgICBQaW4gZHJpdmVuIGxvdyAoMCkKK3BtdS1oaWdoICAgICAgICAgICAgIFBpbiBkcml2ZW4gaGlnaCAoMSkKK3BtaWMoc2RpKSAgICAgICAgICAgIFBpbiBpcyB1c2VkIGZvciBQTUlDIFNESQorY3B1LXB3ci1kb3duICAgICAgICAgUGluIGlzIHVzZWQgZm9yIENQVV9QV1JEV04KK3N0YW5kYnktcHdyLWRvd24gICAgIFBpbiBpcyB1c2VkIGZvciBTVEJZX1BXUkRXTgorY29yZS1wd3ItZ29vZCAgICAgICAgUGluIGlzIHVzZWQgZm9yIENPUkVfUFdSX0dPT0QgKFBpbnMgMC03IG9ubHkpCitjcHUtcHdyLWdvb2QgICAgICAgICBQaW4gaXMgdXNlZCBmb3IgQ1BVX1BXUl9HT09EIChQaW5zIDgtMTUgb25seSkKK2JhdC1mYXVsdCAgICAgICAgICAgIFBpbiBpcyB1c2VkIGZvciBCQVRURVJZX0ZBVUxUCitleHQwLXdha2V1cCAgICAgICAgICBQaW4gaXMgdXNlZCBmb3IgRVhUMF9XVQorZXh0MS13YWtldXAgICAgICAgICAgUGluIGlzIHVzZWQgZm9yIEVYVDBfV1UKK2V4dDItd2FrZXVwICAgICAgICAgIFBpbiBpcyB1c2VkIGZvciBFWFQwX1dVCitwbXUtYmxpbmsgICAgICAgICAgICBQaW4gaXMgdXNlZCBmb3IgYmxpbmsgZnVuY3Rpb24KKworTm90ZXM6CisqIGdyb3VwICJtcHBfYXVkaW8xIiBhbGxvd3MgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYW5kIGdwaW8gcGluczoKKyAgLSBncGlvICAgICAgICAgIDogZ3BpbyBvbiBwaW5zIDUyLTU3CisgIC0gaTJzMS9zcGRpZm8gICA6IGF1ZGlvMSBpMnMgb24gcGlucyA1Mi01NSBhbmQgc3BkaWZvIG9uIDU3LCBubyBncGlvcworICAtIGkyczEgICAgICAgICAgOiBhdWRpbzEgaTJzIG9uIHBpbnMgNTItNTUsIGdwaW8gb24gcGlucyA1Niw1NworICAtIHNwZGlmbyAgICAgICAgOiBzcGRpZm8gb24gcGluIDU3LCBncGlvIG9uIHBpbnMgNTItNTUKKyAgLSB0d3NpICAgICAgICAgIDogdHdzaSBvbiBwaW5zIDU2LDU3LCBncGlvIG9uIHBpbnMgNTItNTUKKyAgLSBzc3Avc3BkaWZvICAgIDogc3NwIG9uIHBpbnMgNTItNTUsIHNwZGlmbyBvbiBwaW4gNTcsIG5vIGdwaW9zCisgIC0gc3NwICAgICAgICAgICA6IHNzcCBvbiBwaW5zIDUyLTU1LCBncGlvIG9uIHBpbnMgNTYsNTcKKyAgLSBzc3AvdHdzaSAgICAgIDogc3NwIG9uIHBpbnMgNTItNTUsIHR3c2kgb24gcGlucyA1Niw1Nywgbm8gZ3Bpb3MKKyogZ3JvdXAgImF1ZGlvMCIgaW50ZXJuYWxseSBtdXhlcyBpMnMwIG9yIGFjOTcgY29udHJvbGxlciB0byB0aGUgZGVkaWNhdGVkCisgIGF1ZGlvMCBwaW5zLgorKiBncm91cCAidHdzaSIgaW50ZXJuYWxseSBtdXhlcyB0d3NpIGNvbnRyb2xsZXIgdG8gdGhlIGRlZGljYXRlZCBvciBvcHRpb24gcGlucy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL21hcnZlbGwsa2lya3dvb2QtcGluY3RybC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9tYXJ2ZWxsLGtpcmt3b29kLXBpbmN0cmwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczMDQ0NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9tYXJ2ZWxsLGtpcmt3b29kLXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsMzE5IEBACisqIE1hcnZlbGwgS2lya3dvb2QgU29DIHBpbmN0cmwgZHJpdmVyIGZvciBtcHAKKworUGxlYXNlIHJlZmVyIHRvIG1hcnZlbGwsbXZlYnUtcGluY3RybC50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGNvbW1vbiBiaW5kaW5nCitwYXJ0IGFuZCB1c2FnZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogIm1hcnZlbGwsODhmNjE4MC1waW5jdHJsIiwKKyAgICAgICAgICAgICAgIm1hcnZlbGwsODhmNjE5MC1waW5jdHJsIiwgIm1hcnZlbGwsODhmNjE5Mi1waW5jdHJsIiwKKyAgICAgICAgICAgICAgIm1hcnZlbGwsODhmNjI4MS1waW5jdHJsIiwgIm1hcnZlbGwsODhmNjI4Mi1waW5jdHJsIgorICAgICAgICAgICAgICAibWFydmVsbCw5OGR4NDEyMi1waW5jdHJsIgorLSByZWc6IHJlZ2lzdGVyIHNwZWNpZmllciBvZiBNUFAgcmVnaXN0ZXJzCisKK1RoaXMgZHJpdmVyIHN1cHBvcnRzIGFsbCBraXJrd29vZCB2YXJpYW50cywgaS5lLiA4OGY2MTgwLCA4OGY2MTl4LCBhbmQgODhmNjI4eC4KK0l0IGFsc28gc3VwcG9ydCB0aGUgODhmNjI4MS1iYXNlZCB2YXJpYW50IGluIHRoZSA5OGR4NDEyeCBCb2JjYXQgU29Dcy4KKworQXZhaWxhYmxlIG1wcCBwaW5zL2dyb3VwcyBhbmQgZnVuY3Rpb25zOgorTm90ZTogYnJhY2tldHMgKHgpIGFyZSBub3QgcGFydCBvZiB0aGUgbXBwIG5hbWUgZm9yIG1hcnZlbGwsZnVuY3Rpb24gYW5kIGdpdmVuCitvbmx5IGZvciBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uIGluIHRoaXMgZG9jdW1lbnQuCisKKyogTWFydmVsbCBLaXJrd29vZCA4OGY2MTgwCisKK25hbWUgICAgICAgICAgcGlucyAgICAgZnVuY3Rpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorbXBwMCAgICAgICAgICAwICAgICAgICBncGlvLCBuYW5kKGlvMiksIHNwaShjcykKK21wcDEgICAgICAgICAgMSAgICAgICAgZ3BvLCBuYW5kKGlvMyksIHNwaShtb3NpKQorbXBwMiAgICAgICAgICAyICAgICAgICBncG8sIG5hbmQoaW80KSwgc3BpKHNjaykKK21wcDMgICAgICAgICAgMyAgICAgICAgZ3BvLCBuYW5kKGlvNSksIHNwaShtaXNvKQorbXBwNCAgICAgICAgICA0ICAgICAgICBncGlvLCBuYW5kKGlvNiksIHVhcnQwKHJ4ZCksIHB0cChjbGspCittcHA1ICAgICAgICAgIDUgICAgICAgIGdwbywgbmFuZChpbzcpLCB1YXJ0MCh0eGQpLCBwdHAodHJpZykKK21wcDYgICAgICAgICAgNiAgICAgICAgc3lzcnN0KG91dCksIHNwaShtb3NpKSwgcHRwKHRyaWcpCittcHA3ICAgICAgICAgIDcgICAgICAgIGdwbywgcGV4KHJzdG8pLCBzcGkoY3MpLCBwdHAodHJpZykKK21wcDggICAgICAgICAgOCAgICAgICAgZ3BpbywgdHdzaTAoc2RhKSwgdWFydDAocnRzKSwgdWFydDEocnRzKSwgcHRwKGNsayksCisgICAgICAgICAgICAgICAgICAgICAgIG1paShjb2wpCittcHA5ICAgICAgICAgIDkgICAgICAgIGdwaW8sIHR3c2koc2NrKSwgdWFydDAoY3RzKSwgdWFydDEoY3RzKSwgcHRwKGV2cmVxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbWlpKGNycykKK21wcDEwICAgICAgICAgMTAgICAgICAgZ3BvLCBzcGkoc2NrKSwgdWFydDAodHhkKSwgcHRwKHRyaWcpCittcHAxMSAgICAgICAgIDExICAgICAgIGdwaW8sIHNwaShtaXNvKSwgdWFydDAocnhkKSwgcHRwKGNsayksIHB0cC0xKGV2cmVxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgcHRwLTIodHJpZykKK21wcDEyICAgICAgICAgMTIgICAgICAgZ3BvLCBzZGlvKGNsaykKK21wcDEzICAgICAgICAgMTMgICAgICAgZ3Bpbywgc2RpbyhjbWQpLCB1YXJ0MSh0eGQpCittcHAxNCAgICAgICAgIDE0ICAgICAgIGdwaW8sIHNkaW8oZDApLCB1YXJ0MShyeGQpLCBtaWkoY29sKQorbXBwMTUgICAgICAgICAxNSAgICAgICBncGlvLCBzZGlvKGQxKSwgdWFydDAocnRzKSwgdWFydDEodHhkKQorbXBwMTYgICAgICAgICAxNiAgICAgICBncGlvLCBzZGlvKGQyKSwgdWFydDAoY3RzKSwgdWFydDEocnhkKSwgbWlpKGNycykKK21wcDE3ICAgICAgICAgMTcgICAgICAgZ3Bpbywgc2RpbyhkMykKK21wcDE4ICAgICAgICAgMTggICAgICAgZ3BvLCBuYW5kKGlvMCkKK21wcDE5ICAgICAgICAgMTkgICAgICAgZ3BvLCBuYW5kKGlvMSkKK21wcDIwICAgICAgICAgMjAgICAgICAgZ3BpbywgbWlpKHJ4ZXJyKQorbXBwMjEgICAgICAgICAyMSAgICAgICBncGlvLCBhdWRpbyhzcGRpZmkpCittcHAyMiAgICAgICAgIDIyICAgICAgIGdwaW8sIGF1ZGlvKHNwZGlmbykKK21wcDIzICAgICAgICAgMjMgICAgICAgZ3BpbywgYXVkaW8ocm1jbGspCittcHAyNCAgICAgICAgIDI0ICAgICAgIGdwaW8sIGF1ZGlvKGJjbGspCittcHAyNSAgICAgICAgIDI1ICAgICAgIGdwaW8sIGF1ZGlvKHNkbykKK21wcDI2ICAgICAgICAgMjYgICAgICAgZ3BpbywgYXVkaW8obHJjbGspCittcHAyNyAgICAgICAgIDI3ICAgICAgIGdwaW8sIGF1ZGlvKG1jbGspCittcHAyOCAgICAgICAgIDI4ICAgICAgIGdwaW8sIGF1ZGlvKHNkaSkKK21wcDI5ICAgICAgICAgMjkgICAgICAgZ3BpbywgYXVkaW8oZXh0Y2xrKQorCisqIE1hcnZlbGwgS2lya3dvb2QgODhmNjE5MAorCituYW1lICAgICAgICAgIHBpbnMgICAgIGZ1bmN0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK21wcDAgICAgICAgICAgMCAgICAgICAgZ3BpbywgbmFuZChpbzIpLCBzcGkoY3MpCittcHAxICAgICAgICAgIDEgICAgICAgIGdwbywgbmFuZChpbzMpLCBzcGkobW9zaSkKK21wcDIgICAgICAgICAgMiAgICAgICAgZ3BvLCBuYW5kKGlvNCksIHNwaShzY2spCittcHAzICAgICAgICAgIDMgICAgICAgIGdwbywgbmFuZChpbzUpLCBzcGkobWlzbykKK21wcDQgICAgICAgICAgNCAgICAgICAgZ3BpbywgbmFuZChpbzYpLCB1YXJ0MChyeGQpLCBwdHAoY2xrKQorbXBwNSAgICAgICAgICA1ICAgICAgICBncG8sIG5hbmQoaW83KSwgdWFydDAodHhkKSwgcHRwKHRyaWcpLCBzYXRhMChhY3QpCittcHA2ICAgICAgICAgIDYgICAgICAgIHN5c3JzdChvdXQpLCBzcGkobW9zaSksIHB0cCh0cmlnKQorbXBwNyAgICAgICAgICA3ICAgICAgICBncG8sIHBleChyc3RvKSwgc3BpKGNzKSwgcHRwKHRyaWcpCittcHA4ICAgICAgICAgIDggICAgICAgIGdwaW8sIHR3c2kwKHNkYSksIHVhcnQwKHJ0cyksIHVhcnQxKHJ0cyksIHB0cChjbGspLAorICAgICAgICAgICAgICAgICAgICAgICBtaWkoY29sKSwgbWlpLTEocnhlcnIpCittcHA5ICAgICAgICAgIDkgICAgICAgIGdwaW8sIHR3c2koc2NrKSwgdWFydDAoY3RzKSwgdWFydDEoY3RzKSwgcHRwKGV2cmVxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbWlpKGNycyksIHNhdGEwKHByc250KQorbXBwMTAgICAgICAgICAxMCAgICAgICBncG8sIHNwaShzY2spLCB1YXJ0MCh0eGQpLCBwdHAodHJpZykKK21wcDExICAgICAgICAgMTEgICAgICAgZ3Bpbywgc3BpKG1pc28pLCB1YXJ0MChyeGQpLCBwdHAoY2xrKSwgcHRwLTEoZXZyZXEpLAorICAgICAgICAgICAgICAgICAgICAgICBwdHAtMih0cmlnKSwgc2F0YTAoYWN0KQorbXBwMTIgICAgICAgICAxMiAgICAgICBncG8sIHNkaW8oY2xrKQorbXBwMTMgICAgICAgICAxMyAgICAgICBncGlvLCBzZGlvKGNtZCksIHVhcnQxKHR4ZCkKK21wcDE0ICAgICAgICAgMTQgICAgICAgZ3Bpbywgc2RpbyhkMCksIHVhcnQxKHJ4ZCksIG1paShjb2wpCittcHAxNSAgICAgICAgIDE1ICAgICAgIGdwaW8sIHNkaW8oZDEpLCB1YXJ0MChydHMpLCB1YXJ0MSh0eGQpLCBzYXRhMChhY3QpCittcHAxNiAgICAgICAgIDE2ICAgICAgIGdwaW8sIHNkaW8oZDIpLCB1YXJ0MChjdHMpLCB1YXJ0MShyeGQpLCBtaWkoY3JzKQorbXBwMTcgICAgICAgICAxNyAgICAgICBncGlvLCBzZGlvKGQzKSwgc2F0YTAocHJzbnQpCittcHAxOCAgICAgICAgIDE4ICAgICAgIGdwbywgbmFuZChpbzApCittcHAxOSAgICAgICAgIDE5ICAgICAgIGdwbywgbmFuZChpbzEpCittcHAyMCAgICAgICAgIDIwICAgICAgIGdwaW8sIGdlMSh0eGQwKQorbXBwMjEgICAgICAgICAyMSAgICAgICBncGlvLCBnZTEodHhkMSksIHNhdGEwKGFjdCkKK21wcDIyICAgICAgICAgMjIgICAgICAgZ3BpbywgZ2UxKHR4ZDIpCittcHAyMyAgICAgICAgIDIzICAgICAgIGdwaW8sIGdlMSh0eGQzKSwgc2F0YTAocHJzbnQpCittcHAyNCAgICAgICAgIDI0ICAgICAgIGdwaW8sIGdlMShyeGQwKQorbXBwMjUgICAgICAgICAyNSAgICAgICBncGlvLCBnZTEocnhkMSkKK21wcDI2ICAgICAgICAgMjYgICAgICAgZ3BpbywgZ2UxKHJ4ZDIpCittcHAyNyAgICAgICAgIDI3ICAgICAgIGdwaW8sIGdlMShyeGQzKQorbXBwMjggICAgICAgICAyOCAgICAgICBncGlvLCBnZTEoY29sKQorbXBwMjkgICAgICAgICAyOSAgICAgICBncGlvLCBnZTEodHhjbGspCittcHAzMCAgICAgICAgIDMwICAgICAgIGdwaW8sIGdlMShyeGNsaykKK21wcDMxICAgICAgICAgMzEgICAgICAgZ3BpbywgZ2UxKHJ4Y2xrKQorbXBwMzIgICAgICAgICAzMiAgICAgICBncGlvLCBnZTEodHhjbGtvKQorbXBwMzMgICAgICAgICAzMyAgICAgICBncG8sIGdlMSh0eGNsaykKK21wcDM0ICAgICAgICAgMzQgICAgICAgZ3BpbywgZ2UxKHR4ZW4pCittcHAzNSAgICAgICAgIDM1ICAgICAgIGdwaW8sIGdlMShyeGVyciksIHNhdGEwKGFjdCksIG1paShyeGVycikKKworKiBNYXJ2ZWxsIEtpcmt3b29kIDg4ZjYxOTIKKworbmFtZSAgICAgICAgICBwaW5zICAgICBmdW5jdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CittcHAwICAgICAgICAgIDAgICAgICAgIGdwaW8sIG5hbmQoaW8yKSwgc3BpKGNzKQorbXBwMSAgICAgICAgICAxICAgICAgICBncG8sIG5hbmQoaW8zKSwgc3BpKG1vc2kpCittcHAyICAgICAgICAgIDIgICAgICAgIGdwbywgbmFuZChpbzQpLCBzcGkoc2NrKQorbXBwMyAgICAgICAgICAzICAgICAgICBncG8sIG5hbmQoaW81KSwgc3BpKG1pc28pCittcHA0ICAgICAgICAgIDQgICAgICAgIGdwaW8sIG5hbmQoaW82KSwgdWFydDAocnhkKSwgcHRwKGNsayksIHNhdGExKGFjdCkKK21wcDUgICAgICAgICAgNSAgICAgICAgZ3BvLCBuYW5kKGlvNyksIHVhcnQwKHR4ZCksIHB0cCh0cmlnKSwgc2F0YTAoYWN0KQorbXBwNiAgICAgICAgICA2ICAgICAgICBzeXNyc3Qob3V0KSwgc3BpKG1vc2kpLCBwdHAodHJpZykKK21wcDcgICAgICAgICAgNyAgICAgICAgZ3BvLCBwZXgocnN0byksIHNwaShjcyksIHB0cCh0cmlnKQorbXBwOCAgICAgICAgICA4ICAgICAgICBncGlvLCB0d3NpMChzZGEpLCB1YXJ0MChydHMpLCB1YXJ0MShydHMpLCBwdHAoY2xrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbWlpKGNvbCksIG1paS0xKHJ4ZXJyKSwgc2F0YTEocHJzbnQpCittcHA5ICAgICAgICAgIDkgICAgICAgIGdwaW8sIHR3c2koc2NrKSwgdWFydDAoY3RzKSwgdWFydDEoY3RzKSwgcHRwKGV2cmVxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbWlpKGNycyksIHNhdGEwKHByc250KQorbXBwMTAgICAgICAgICAxMCAgICAgICBncG8sIHNwaShzY2spLCB1YXJ0MCh0eGQpLCBwdHAodHJpZyksIHNhdGExKGFjdCkKK21wcDExICAgICAgICAgMTEgICAgICAgZ3Bpbywgc3BpKG1pc28pLCB1YXJ0MChyeGQpLCBwdHAoY2xrKSwgcHRwLTEoZXZyZXEpLAorICAgICAgICAgICAgICAgICAgICAgICBwdHAtMih0cmlnKSwgc2F0YTAoYWN0KQorbXBwMTIgICAgICAgICAxMiAgICAgICBncG8sIHNkaW8oY2xrKQorbXBwMTMgICAgICAgICAxMyAgICAgICBncGlvLCBzZGlvKGNtZCksIHVhcnQxKHR4ZCkKK21wcDE0ICAgICAgICAgMTQgICAgICAgZ3Bpbywgc2RpbyhkMCksIHVhcnQxKHJ4ZCksIG1paShjb2wpLCBzYXRhMShwcnNudCkKK21wcDE1ICAgICAgICAgMTUgICAgICAgZ3Bpbywgc2RpbyhkMSksIHVhcnQwKHJ0cyksIHVhcnQxKHR4ZCksIHNhdGEwKGFjdCkKK21wcDE2ICAgICAgICAgMTYgICAgICAgZ3Bpbywgc2RpbyhkMiksIHVhcnQwKGN0cyksIHVhcnQxKHJ4ZCksIG1paShjcnMpLAorICAgICAgICAgICAgICAgICAgICAgICBzYXRhMShhY3QpCittcHAxNyAgICAgICAgIDE3ICAgICAgIGdwaW8sIHNkaW8oZDMpLCBzYXRhMChwcnNudCkKK21wcDE4ICAgICAgICAgMTggICAgICAgZ3BvLCBuYW5kKGlvMCkKK21wcDE5ICAgICAgICAgMTkgICAgICAgZ3BvLCBuYW5kKGlvMSkKK21wcDIwICAgICAgICAgMjAgICAgICAgZ3BpbywgZ2UxKHR4ZDApLCB0cyhtcDApLCB0ZG0odHgwcWwpLCBhdWRpbyhzcGRpZmkpLAorICAgICAgICAgICAgICAgICAgICAgICBzYXRhMShhY3QpCittcHAyMSAgICAgICAgIDIxICAgICAgIGdwaW8sIGdlMSh0eGQxKSwgc2F0YTAoYWN0KSwgdHMobXAxKSwgdGRtKHJ4MHFsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8oc3BkaWZvKQorbXBwMjIgICAgICAgICAyMiAgICAgICBncGlvLCBnZTEodHhkMiksIHRzKG1wMiksIHRkbSh0eDJxbCksIGF1ZGlvKHJtY2xrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgc2F0YTEocHJzbnQpCittcHAyMyAgICAgICAgIDIzICAgICAgIGdwaW8sIGdlMSh0eGQzKSwgc2F0YTAocHJzbnQpLCB0cyhtcDMpLCB0ZG0ocngycWwpLAorICAgICAgICAgICAgICAgICAgICAgICBhdWRpbyhiY2xrKQorbXBwMjQgICAgICAgICAyNCAgICAgICBncGlvLCBnZTEocnhkMCksIHRzKG1wNCksIHRkbShzcGktY3MwKSwgYXVkaW8oc2RvKQorbXBwMjUgICAgICAgICAyNSAgICAgICBncGlvLCBnZTEocnhkMSksIHRzKG1wNSksIHRkbShzcGktc2NrKSwgYXVkaW8obHJjbGspCittcHAyNiAgICAgICAgIDI2ICAgICAgIGdwaW8sIGdlMShyeGQyKSwgdHMobXA2KSwgdGRtKHNwaS1taXNvKSwgYXVkaW8obWNsaykKK21wcDI3ICAgICAgICAgMjcgICAgICAgZ3BpbywgZ2UxKHJ4ZDMpLCB0cyhtcDcpLCB0ZG0oc3BpLW1vc2kpLCBhdWRpbyhzZGkpCittcHAyOCAgICAgICAgIDI4ICAgICAgIGdwaW8sIGdlMShjb2wpLCB0cyhtcDgpLCB0ZG0oaW50KSwgYXVkaW8oZXh0Y2xrKQorbXBwMjkgICAgICAgICAyOSAgICAgICBncGlvLCBnZTEodHhjbGspLCB0cyhtcDkpLCB0ZG0ocnN0KQorbXBwMzAgICAgICAgICAzMCAgICAgICBncGlvLCBnZTEocnhjbGspLCB0cyhtcDEwKSwgdGRtKHBjbGspCittcHAzMSAgICAgICAgIDMxICAgICAgIGdwaW8sIGdlMShyeGNsayksIHRzKG1wMTEpLCB0ZG0oZnMpCittcHAzMiAgICAgICAgIDMyICAgICAgIGdwaW8sIGdlMSh0eGNsa28pLCB0cyhtcDEyKSwgdGRtKGRyeCkKK21wcDMzICAgICAgICAgMzMgICAgICAgZ3BvLCBnZTEodHhjbGspLCB0ZG0oZHJ4KQorbXBwMzQgICAgICAgICAzNCAgICAgICBncGlvLCBnZTEodHhlbiksIHRkbShzcGktY3MxKQorbXBwMzUgICAgICAgICAzNSAgICAgICBncGlvLCBnZTEocnhlcnIpLCBzYXRhMChhY3QpLCBtaWkocnhlcnIpLCB0ZG0odHgwcWwpCisKKyogTWFydmVsbCBLaXJrd29vZCA4OGY2MjgxCisKK25hbWUgICAgICAgICAgcGlucyAgICAgZnVuY3Rpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorbXBwMCAgICAgICAgICAwICAgICAgICBncGlvLCBuYW5kKGlvMiksIHNwaShjcykKK21wcDEgICAgICAgICAgMSAgICAgICAgZ3BvLCBuYW5kKGlvMyksIHNwaShtb3NpKQorbXBwMiAgICAgICAgICAyICAgICAgICBncG8sIG5hbmQoaW80KSwgc3BpKHNjaykKK21wcDMgICAgICAgICAgMyAgICAgICAgZ3BvLCBuYW5kKGlvNSksIHNwaShtaXNvKQorbXBwNCAgICAgICAgICA0ICAgICAgICBncGlvLCBuYW5kKGlvNiksIHVhcnQwKHJ4ZCksIHB0cChjbGspLCBzYXRhMShhY3QpCittcHA1ICAgICAgICAgIDUgICAgICAgIGdwbywgbmFuZChpbzcpLCB1YXJ0MCh0eGQpLCBwdHAodHJpZyksIHNhdGEwKGFjdCkKK21wcDYgICAgICAgICAgNiAgICAgICAgc3lzcnN0KG91dCksIHNwaShtb3NpKSwgcHRwKHRyaWcpCittcHA3ICAgICAgICAgIDcgICAgICAgIGdwbywgcGV4KHJzdG8pLCBzcGkoY3MpLCBwdHAodHJpZykKK21wcDggICAgICAgICAgOCAgICAgICAgZ3BpbywgdHdzaTAoc2RhKSwgdWFydDAocnRzKSwgdWFydDEocnRzKSwgcHRwKGNsayksCisgICAgICAgICAgICAgICAgICAgICAgIG1paShjb2wpLCBtaWktMShyeGVyciksIHNhdGExKHByc250KQorbXBwOSAgICAgICAgICA5ICAgICAgICBncGlvLCB0d3NpKHNjayksIHVhcnQwKGN0cyksIHVhcnQxKGN0cyksIHB0cChldnJlcSksCisgICAgICAgICAgICAgICAgICAgICAgIG1paShjcnMpLCBzYXRhMChwcnNudCkKK21wcDEwICAgICAgICAgMTAgICAgICAgZ3BvLCBzcGkoc2NrKSwgdWFydDAodHhkKSwgcHRwKHRyaWcpLCBzYXRhMShhY3QpCittcHAxMSAgICAgICAgIDExICAgICAgIGdwaW8sIHNwaShtaXNvKSwgdWFydDAocnhkKSwgcHRwKGNsayksIHB0cC0xKGV2cmVxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgcHRwLTIodHJpZyksIHNhdGEwKGFjdCkKK21wcDEyICAgICAgICAgMTIgICAgICAgZ3Bpbywgc2RpbyhjbGspCittcHAxMyAgICAgICAgIDEzICAgICAgIGdwaW8sIHNkaW8oY21kKSwgdWFydDEodHhkKQorbXBwMTQgICAgICAgICAxNCAgICAgICBncGlvLCBzZGlvKGQwKSwgdWFydDEocnhkKSwgbWlpKGNvbCksIHNhdGExKHByc250KQorbXBwMTUgICAgICAgICAxNSAgICAgICBncGlvLCBzZGlvKGQxKSwgdWFydDAocnRzKSwgdWFydDEodHhkKSwgc2F0YTAoYWN0KQorbXBwMTYgICAgICAgICAxNiAgICAgICBncGlvLCBzZGlvKGQyKSwgdWFydDAoY3RzKSwgdWFydDEocnhkKSwgbWlpKGNycyksCisgICAgICAgICAgICAgICAgICAgICAgIHNhdGExKGFjdCkKK21wcDE3ICAgICAgICAgMTcgICAgICAgZ3Bpbywgc2RpbyhkMyksIHNhdGEwKHByc250KQorbXBwMTggICAgICAgICAxOCAgICAgICBncG8sIG5hbmQoaW8wKQorbXBwMTkgICAgICAgICAxOSAgICAgICBncG8sIG5hbmQoaW8xKQorbXBwMjAgICAgICAgICAyMCAgICAgICBncGlvLCBnZTEodHhkMCksIHRzKG1wMCksIHRkbSh0eDBxbCksIGF1ZGlvKHNwZGlmaSksCisgICAgICAgICAgICAgICAgICAgICAgIHNhdGExKGFjdCkKK21wcDIxICAgICAgICAgMjEgICAgICAgZ3BpbywgZ2UxKHR4ZDEpLCBzYXRhMChhY3QpLCB0cyhtcDEpLCB0ZG0ocngwcWwpLAorICAgICAgICAgICAgICAgICAgICAgICBhdWRpbyhzcGRpZm8pCittcHAyMiAgICAgICAgIDIyICAgICAgIGdwaW8sIGdlMSh0eGQyKSwgdHMobXAyKSwgdGRtKHR4MnFsKSwgYXVkaW8ocm1jbGspLAorICAgICAgICAgICAgICAgICAgICAgICBzYXRhMShwcnNudCkKK21wcDIzICAgICAgICAgMjMgICAgICAgZ3BpbywgZ2UxKHR4ZDMpLCBzYXRhMChwcnNudCksIHRzKG1wMyksIHRkbShyeDJxbCksCisgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvKGJjbGspCittcHAyNCAgICAgICAgIDI0ICAgICAgIGdwaW8sIGdlMShyeGQwKSwgdHMobXA0KSwgdGRtKHNwaS1jczApLCBhdWRpbyhzZG8pCittcHAyNSAgICAgICAgIDI1ICAgICAgIGdwaW8sIGdlMShyeGQxKSwgdHMobXA1KSwgdGRtKHNwaS1zY2spLCBhdWRpbyhscmNsaykKK21wcDI2ICAgICAgICAgMjYgICAgICAgZ3BpbywgZ2UxKHJ4ZDIpLCB0cyhtcDYpLCB0ZG0oc3BpLW1pc28pLCBhdWRpbyhtY2xrKQorbXBwMjcgICAgICAgICAyNyAgICAgICBncGlvLCBnZTEocnhkMyksIHRzKG1wNyksIHRkbShzcGktbW9zaSksIGF1ZGlvKHNkaSkKK21wcDI4ICAgICAgICAgMjggICAgICAgZ3BpbywgZ2UxKGNvbCksIHRzKG1wOCksIHRkbShpbnQpLCBhdWRpbyhleHRjbGspCittcHAyOSAgICAgICAgIDI5ICAgICAgIGdwaW8sIGdlMSh0eGNsayksIHRzKG1wOSksIHRkbShyc3QpCittcHAzMCAgICAgICAgIDMwICAgICAgIGdwaW8sIGdlMShyeGNsayksIHRzKG1wMTApLCB0ZG0ocGNsaykKK21wcDMxICAgICAgICAgMzEgICAgICAgZ3BpbywgZ2UxKHJ4Y2xrKSwgdHMobXAxMSksIHRkbShmcykKK21wcDMyICAgICAgICAgMzIgICAgICAgZ3BpbywgZ2UxKHR4Y2xrbyksIHRzKG1wMTIpLCB0ZG0oZHJ4KQorbXBwMzMgICAgICAgICAzMyAgICAgICBncG8sIGdlMSh0eGNsayksIHRkbShkcngpCittcHAzNCAgICAgICAgIDM0ICAgICAgIGdwaW8sIGdlMSh0eGVuKSwgdGRtKHNwaS1jczEpLCBzYXRhMShhY3QpCittcHAzNSAgICAgICAgIDM1ICAgICAgIGdwaW8sIGdlMShyeGVyciksIHNhdGEwKGFjdCksIG1paShyeGVyciksIHRkbSh0eDBxbCkKK21wcDM2ICAgICAgICAgMzYgICAgICAgZ3BpbywgdHMobXAwKSwgdGRtKHNwaS1jczEpLCBhdWRpbyhzcGRpZmkpCittcHAzNyAgICAgICAgIDM3ICAgICAgIGdwaW8sIHRzKG1wMSksIHRkbSh0eDJxbCksIGF1ZGlvKHNwZGlmbykKK21wcDM4ICAgICAgICAgMzggICAgICAgZ3BpbywgdHMobXAyKSwgdGRtKHJ4MnFsKSwgYXVkaW8ocm1jbGspCittcHAzOSAgICAgICAgIDM5ICAgICAgIGdwaW8sIHRzKG1wMyksIHRkbShzcGktY3MwKSwgYXVkaW8oYmNsaykKK21wcDQwICAgICAgICAgNDAgICAgICAgZ3BpbywgdHMobXA0KSwgdGRtKHNwaS1zY2spLCBhdWRpbyhzZG8pCittcHA0MSAgICAgICAgIDQxICAgICAgIGdwaW8sIHRzKG1wNSksIHRkbShzcGktbWlzbyksIGF1ZGlvKGxyY2xrKQorbXBwNDIgICAgICAgICA0MiAgICAgICBncGlvLCB0cyhtcDYpLCB0ZG0oc3BpLW1vc2kpLCBhdWRpbyhtY2xrKQorbXBwNDMgICAgICAgICA0MyAgICAgICBncGlvLCB0cyhtcDcpLCB0ZG0oaW50KSwgYXVkaW8oc2RpKQorbXBwNDQgICAgICAgICA0NCAgICAgICBncGlvLCB0cyhtcDgpLCB0ZG0ocnN0KSwgYXVkaW8oZXh0Y2xrKQorbXBwNDUgICAgICAgICA0NSAgICAgICBncGlvLCB0cyhtcDkpLCB0ZG0ocGNsaykKK21wcDQ2ICAgICAgICAgNDYgICAgICAgZ3BpbywgdHMobXAxMCksIHRkbShmcykKK21wcDQ3ICAgICAgICAgNDcgICAgICAgZ3BpbywgdHMobXAxMSksIHRkbShkcngpCittcHA0OCAgICAgICAgIDQ4ICAgICAgIGdwaW8sIHRzKG1wMTIpLCB0ZG0oZHR4KQorbXBwNDkgICAgICAgICA0OSAgICAgICBncGlvLCB0cyhtcDkpLCB0ZG0ocngwcWwpLCBwdHAoY2xrKQorCisqIE1hcnZlbGwgS2lya3dvb2QgODhmNjI4MgorCituYW1lICAgICAgICAgIHBpbnMgICAgIGZ1bmN0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK21wcDAgICAgICAgICAgMCAgICAgICAgZ3BpbywgbmFuZChpbzIpLCBzcGkoY3MpCittcHAxICAgICAgICAgIDEgICAgICAgIGdwbywgbmFuZChpbzMpLCBzcGkobW9zaSkKK21wcDIgICAgICAgICAgMiAgICAgICAgZ3BvLCBuYW5kKGlvNCksIHNwaShzY2spCittcHAzICAgICAgICAgIDMgICAgICAgIGdwbywgbmFuZChpbzUpLCBzcGkobWlzbykKK21wcDQgICAgICAgICAgNCAgICAgICAgZ3BpbywgbmFuZChpbzYpLCB1YXJ0MChyeGQpLCBzYXRhMShhY3QpLCBsY2QoaHN5bmMpCittcHA1ICAgICAgICAgIDUgICAgICAgIGdwbywgbmFuZChpbzcpLCB1YXJ0MCh0eGQpLCBzYXRhMChhY3QpLCBsY2QodnN5bmMpCittcHA2ICAgICAgICAgIDYgICAgICAgIHN5c3JzdChvdXQpLCBzcGkobW9zaSkKK21wcDcgICAgICAgICAgNyAgICAgICAgZ3BvLCBzcGkoY3MpLCBsY2QocHdtKQorbXBwOCAgICAgICAgICA4ICAgICAgICBncGlvLCB0d3NpMChzZGEpLCB1YXJ0MChydHMpLCB1YXJ0MShydHMpLCBtaWkoY29sKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbWlpLTEocnhlcnIpLCBzYXRhMShwcnNudCkKK21wcDkgICAgICAgICAgOSAgICAgICAgZ3BpbywgdHdzaShzY2spLCB1YXJ0MChjdHMpLCB1YXJ0MShjdHMpLCBtaWkoY3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgc2F0YTAocHJzbnQpCittcHAxMCAgICAgICAgIDEwICAgICAgIGdwbywgc3BpKHNjayksIHVhcnQwKHR4ZCksIHNhdGExKGFjdCkKK21wcDExICAgICAgICAgMTEgICAgICAgZ3Bpbywgc3BpKG1pc28pLCB1YXJ0MChyeGQpLCBzYXRhMChhY3QpCittcHAxMiAgICAgICAgIDEyICAgICAgIGdwbywgc2RpbyhjbGspLCBhdWRpbyhzcGRpZm8pLCBzcGkobW9zaSksIHR3c2koc2RhKQorbXBwMTMgICAgICAgICAxMyAgICAgICBncGlvLCBzZGlvKGNtZCksIHVhcnQxKHR4ZCksIGF1ZGlvKHJtY2xrKSwgbGNkKHB3bSkKK21wcDE0ICAgICAgICAgMTQgICAgICAgZ3Bpbywgc2RpbyhkMCksIHVhcnQxKHJ4ZCksIG1paShjb2wpLCBzYXRhMShwcnNudCksCisgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvKHNwZGlmaSksIGF1ZGlvLTEoc2RpKQorbXBwMTUgICAgICAgICAxNSAgICAgICBncGlvLCBzZGlvKGQxKSwgdWFydDAocnRzKSwgdWFydDEodHhkKSwgc2F0YTAoYWN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3BpKGNzKQorbXBwMTYgICAgICAgICAxNiAgICAgICBncGlvLCBzZGlvKGQyKSwgdWFydDAoY3RzKSwgdWFydDEocnhkKSwgbWlpKGNycyksCisgICAgICAgICAgICAgICAgICAgICAgIHNhdGExKGFjdCksIGxjZChleHRjbGspCittcHAxNyAgICAgICAgIDE3ICAgICAgIGdwaW8sIHNkaW8oZDMpLCBzYXRhMChwcnNudCksIHNhdGExKGFjdCksIHR3c2kxKHNjaykKK21wcDE4ICAgICAgICAgMTggICAgICAgZ3BvLCBuYW5kKGlvMCksIHBleChjbGtyZXEpCittcHAxOSAgICAgICAgIDE5ICAgICAgIGdwbywgbmFuZChpbzEpCittcHAyMCAgICAgICAgIDIwICAgICAgIGdwaW8sIGdlMSh0eGQwKSwgdHMobXAwKSwgdGRtKHR4MHFsKSwgYXVkaW8oc3BkaWZpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgc2F0YTEoYWN0KSwgbGNkKGQwKQorbXBwMjEgICAgICAgICAyMSAgICAgICBncGlvLCBnZTEodHhkMSksIHNhdGEwKGFjdCksIHRzKG1wMSksIHRkbShyeDBxbCksCisgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvKHNwZGlmbyksIGxjZChkMSkKK21wcDIyICAgICAgICAgMjIgICAgICAgZ3BpbywgZ2UxKHR4ZDIpLCB0cyhtcDIpLCB0ZG0odHgycWwpLCBhdWRpbyhybWNsayksCisgICAgICAgICAgICAgICAgICAgICAgIHNhdGExKHByc250KSwgbGNkKGQyKQorbXBwMjMgICAgICAgICAyMyAgICAgICBncGlvLCBnZTEodHhkMyksIHNhdGEwKHByc250KSwgdHMobXAzKSwgdGRtKHJ4MnFsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgYXVkaW8oYmNsayksIGxjZChkMykKK21wcDI0ICAgICAgICAgMjQgICAgICAgZ3BpbywgZ2UxKHJ4ZDApLCB0cyhtcDQpLCB0ZG0oc3BpLWNzMCksIGF1ZGlvKHNkbyksCisgICAgICAgICAgICAgICAgICAgICAgIGxjZChkNCkKK21wcDI1ICAgICAgICAgMjUgICAgICAgZ3BpbywgZ2UxKHJ4ZDEpLCB0cyhtcDUpLCB0ZG0oc3BpLXNjayksIGF1ZGlvKGxyY2xrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbGNkKGQ1KQorbXBwMjYgICAgICAgICAyNiAgICAgICBncGlvLCBnZTEocnhkMiksIHRzKG1wNiksIHRkbShzcGktbWlzbyksIGF1ZGlvKG1jbGspLAorICAgICAgICAgICAgICAgICAgICAgICBsY2QoZDYpCittcHAyNyAgICAgICAgIDI3ICAgICAgIGdwaW8sIGdlMShyeGQzKSwgdHMobXA3KSwgdGRtKHNwaS1tb3NpKSwgYXVkaW8oc2RpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgbGNkKGQ3KQorbXBwMjggICAgICAgICAyOCAgICAgICBncGlvLCBnZTEoY29sKSwgdHMobXA4KSwgdGRtKGludCksIGF1ZGlvKGV4dGNsayksCisgICAgICAgICAgICAgICAgICAgICAgIGxjZChkOCkKK21wcDI5ICAgICAgICAgMjkgICAgICAgZ3BpbywgZ2UxKHR4Y2xrKSwgdHMobXA5KSwgdGRtKHJzdCksIGxjZChkOSkKK21wcDMwICAgICAgICAgMzAgICAgICAgZ3BpbywgZ2UxKHJ4Y2xrKSwgdHMobXAxMCksIHRkbShwY2xrKSwgbGNkKGQxMCkKK21wcDMxICAgICAgICAgMzEgICAgICAgZ3BpbywgZ2UxKHJ4Y2xrKSwgdHMobXAxMSksIHRkbShmcyksIGxjZChkMTEpCittcHAzMiAgICAgICAgIDMyICAgICAgIGdwaW8sIGdlMSh0eGNsa28pLCB0cyhtcDEyKSwgdGRtKGRyeCksIGxjZChkMTIpCittcHAzMyAgICAgICAgIDMzICAgICAgIGdwbywgZ2UxKHR4Y2xrKSwgdGRtKGRyeCksIGxjZChkMTMpCittcHAzNCAgICAgICAgIDM0ICAgICAgIGdwaW8sIGdlMSh0eGVuKSwgdGRtKHNwaS1jczEpLCBzYXRhMShhY3QpLCBsY2QoZDE0KQorbXBwMzUgICAgICAgICAzNSAgICAgICBncGlvLCBnZTEocnhlcnIpLCBzYXRhMChhY3QpLCBtaWkocnhlcnIpLCB0ZG0odHgwcWwpLAorICAgICAgICAgICAgICAgICAgICAgICBsY2QoZDE1KQorbXBwMzYgICAgICAgICAzNiAgICAgICBncGlvLCB0cyhtcDApLCB0ZG0oc3BpLWNzMSksIGF1ZGlvKHNwZGlmaSksIHR3c2kxKHNkYSkKK21wcDM3ICAgICAgICAgMzcgICAgICAgZ3BpbywgdHMobXAxKSwgdGRtKHR4MnFsKSwgYXVkaW8oc3BkaWZvKSwgdHdzaTEoc2NrKQorbXBwMzggICAgICAgICAzOCAgICAgICBncGlvLCB0cyhtcDIpLCB0ZG0ocngycWwpLCBhdWRpbyhybWNsayksIGxjZChkMTgpCittcHAzOSAgICAgICAgIDM5ICAgICAgIGdwaW8sIHRzKG1wMyksIHRkbShzcGktY3MwKSwgYXVkaW8oYmNsayksIGxjZChkMTkpCittcHA0MCAgICAgICAgIDQwICAgICAgIGdwaW8sIHRzKG1wNCksIHRkbShzcGktc2NrKSwgYXVkaW8oc2RvKSwgbGNkKGQyMCkKK21wcDQxICAgICAgICAgNDEgICAgICAgZ3BpbywgdHMobXA1KSwgdGRtKHNwaS1taXNvKSwgYXVkaW8obHJjbGspLCBsY2QoZDIxKQorbXBwNDIgICAgICAgICA0MiAgICAgICBncGlvLCB0cyhtcDYpLCB0ZG0oc3BpLW1vc2kpLCBhdWRpbyhtY2xrKSwgbGNkKGQyMikKK21wcDQzICAgICAgICAgNDMgICAgICAgZ3BpbywgdHMobXA3KSwgdGRtKGludCksIGF1ZGlvKHNkaSksIGxjZChkMjMpCittcHA0NCAgICAgICAgIDQ0ICAgICAgIGdwaW8sIHRzKG1wOCksIHRkbShyc3QpLCBhdWRpbyhleHRjbGspLCBsY2QoY2xrKQorbXBwNDUgICAgICAgICA0NSAgICAgICBncGlvLCB0cyhtcDkpLCB0ZG0ocGNsayksIGxjZChlKQorbXBwNDYgICAgICAgICA0NiAgICAgICBncGlvLCB0cyhtcDEwKSwgdGRtKGZzKSwgbGNkKGhzeW5jKQorbXBwNDcgICAgICAgICA0NyAgICAgICBncGlvLCB0cyhtcDExKSwgdGRtKGRyeCksIGxjZCh2c3luYykKK21wcDQ4ICAgICAgICAgNDggICAgICAgZ3BpbywgdHMobXAxMiksIHRkbShkdHgpLCBsY2QoZDE2KQorbXBwNDkgICAgICAgICA0OSAgICAgICBncG8sIHRkbShyeDBxbCksIHBleChjbGtyZXEpLCBsY2QoZDE3KQorCisqIE1hcnZlbGwgQm9iY2F0IDk4ZHg0MTIyCisKK25hbWUgICAgICAgICAgcGlucyAgICAgZnVuY3Rpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorbXBwMCAgICAgICAgICAwICAgICAgICBncGlvLCBuYW5kKGlvMiksIHNwaShjcykKK21wcDEgICAgICAgICAgMSAgICAgICAgZ3BvLCBuYW5kKGlvMyksIHNwaShtb3NpKQorbXBwMiAgICAgICAgICAyICAgICAgICBncG8sIG5hbmQoaW80KSwgc3BpKHNjaykKK21wcDMgICAgICAgICAgMyAgICAgICAgZ3BvLCBuYW5kKGlvNSksIHNwaShtaXNvKQorbXBwNCAgICAgICAgICA0ICAgICAgICBncGlvLCBuYW5kKGlvNiksIHVhcnQwKHJ4ZCkKK21wcDUgICAgICAgICAgNSAgICAgICAgZ3BvLCBuYW5kKGlvNyksIHVhcnQwKHR4ZCkKK21wcDYgICAgICAgICAgNiAgICAgICAgc3lzcnN0KG91dCksIHNwaShtb3NpKQorbXBwNyAgICAgICAgICA3ICAgICAgICBncG8sIHBleChyc3RvKSwgc3BpKGNzKQorbXBwOCAgICAgICAgICA4ICAgICAgICBncGlvLCB0d3NpMChzZGEpLCB1YXJ0MChydHMpLCB1YXJ0MShydHMpCittcHA5ICAgICAgICAgIDkgICAgICAgIGdwaW8sIHR3c2koc2NrKSwgdWFydDAoY3RzKSwgdWFydDEoY3RzKQorbXBwMTAgICAgICAgICAxMCAgICAgICBncG8sIHNwaShzY2spLCB1YXJ0MCh0eGQpCittcHAxMSAgICAgICAgIDExICAgICAgIGdwaW8sIHNwaShtaXNvKSwgdWFydDAocnhkKQorbXBwMTMgICAgICAgICAxMyAgICAgICBncGlvLCB1YXJ0MSh0eGQpCittcHAxNCAgICAgICAgIDE0ICAgICAgIGdwaW8sIHVhcnQxKHJ4ZCkKK21wcDE1ICAgICAgICAgMTUgICAgICAgZ3BpbywgdWFydDAocnRzKQorbXBwMTYgICAgICAgICAxNiAgICAgICBncGlvLCB1YXJ0MChjdHMpCittcHAxOCAgICAgICAgIDE4ICAgICAgIGdwbywgbmFuZChpbzApCittcHAxOSAgICAgICAgIDE5ICAgICAgIGdwbywgbmFuZChpbzEpCittcHAzNCAgICAgICAgIDM0ICAgICAgIGdwaW8KK21wcDM1ICAgICAgICAgMzUgICAgICAgZ3BpbworbXBwMzYgICAgICAgICAzNiAgICAgICBncGlvCittcHAzNyAgICAgICAgIDM3ICAgICAgIGdwaW8KK21wcDM4ICAgICAgICAgMzggICAgICAgZ3BpbworbXBwMzkgICAgICAgICAzOSAgICAgICBncGlvCittcHA0MCAgICAgICAgIDQwICAgICAgIGdwaW8KK21wcDQxICAgICAgICAgNDEgICAgICAgZ3BpbworbXBwNDIgICAgICAgICA0MiAgICAgICBncGlvCittcHA0MyAgICAgICAgIDQzICAgICAgIGdwaW8KK21wcDQ0ICAgICAgICAgNDQgICAgICAgZ3BpbworbXBwNDUgICAgICAgICA0NSAgICAgICBncGlvCittcHA0OSAgICAgICAgIDQ5ICAgICAgIGdwaW8KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbWFydmVsbCxtdmVidS1waW5jdHJsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL21hcnZlbGwsbXZlYnUtcGluY3RybC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMwOWY0ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL21hcnZlbGwsbXZlYnUtcGluY3RybC50eHQKQEAgLTAsMCArMSw0NiBAQAorKiBNYXJ2ZWxsIFNvQyBwaW5jdHJsIGNvcmUgZHJpdmVyIGZvciBtcHAKKworVGhlIHBpbmN0cmwgZHJpdmVyIGVuYWJsZXMgTWFydmVsbCBTb0NzIHRvIGNvbmZpZ3VyZSB0aGUgbXVsdGktcHVycG9zZSBwaW5zCisobXBwKSB0byBhIHNwZWNpZmljIGZ1bmN0aW9uLiBGb3IgZWFjaCBTb0MgZmFtaWx5IHRoZXJlIGlzIGEgU29DIHNwZWNpZmljCitkcml2ZXIgdXNpbmcgdGhpcyBjb3JlIGRyaXZlci4KKworUGxlYXNlIHJlZmVyIHRvIHBpbmN0cmwtYmluZGluZ3MudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBkZXRhaWxzIG9mIHRoZQorY29tbW9uIHBpbmN0cmwgYmluZGluZ3MgdXNlZCBieSBjbGllbnQgZGV2aWNlcywgaW5jbHVkaW5nIHRoZSBtZWFuaW5nIG9mIHRoZQorcGhyYXNlICJwaW4gY29uZmlndXJhdGlvbiBub2RlIi4KKworQSBNYXJ2ZWxsIFNvQyBwaW4gY29uZmlndXJhdGlvbiBub2RlIGlzIGEgbm9kZSBvZiBhIGdyb3VwIG9mIHBpbnMgd2hpY2ggY2FuCitiZSB1c2VkIGZvciBhIHNwZWNpZmljIGRldmljZSBvciBmdW5jdGlvbi4gRWFjaCBub2RlIHJlcXVpcmVzIG9uZSBvciBtb3JlCittcHAgcGlucyBvciBncm91cCBvZiBwaW5zIGFuZCBhIG1wcCBmdW5jdGlvbiBjb21tb24gdG8gYWxsIHBpbnMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHBpbmN0cmwgZHJpdmVyOgorLSBjb21wYXRpYmxlOiAibWFydmVsbCw8c29jPi1waW5jdHJsIgorICBQbGVhc2UgcmVmZXIgdG8gZWFjaCBtYXJ2ZWxsLDxzb2M+LXBpbmN0cmwudHh0IGJpbmRpbmcgZG9jIGZvciBzdXBwb3J0ZWQgU29Dcy4KKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgcGluIGNvbmZpZ3VyYXRpb24gbm9kZToKKy0gbWFydmVsbCxwaW5zOiBzdHJpbmcgYXJyYXkgb2YgbXBwIHBpbnMgb3IgZ3JvdXAgb2YgcGlucyB0byBiZSBtdXhlZC4KKy0gbWFydmVsbCxmdW5jdGlvbjogc3RyaW5nIHJlcHJlc2VudGluZyBhIGZ1bmN0aW9uIHRvIG11eCB0byBmb3IgYWxsCisgICAgbWFydmVsbCxwaW5zIGdpdmVuIGluIHRoaXMgcGluIGNvbmZpZ3VyYXRpb24gbm9kZS4gVGhlIGZ1bmN0aW9uIGhhcyB0byBiZQorICAgIGNvbW1vbiBmb3IgYWxsIG1hcnZlbGwscGlucy4gUGxlYXNlIHJlZmVyIHRvIG1hcnZlbGwsPHNvYz4tcGluY3RybC50eHQgZm9yCisgICAgdmFsaWQgcGluL3BpbiBncm91cCBuYW1lcyBhbmQgYXZhaWxhYmxlIGZ1bmN0aW9uIG5hbWVzIGZvciBlYWNoIFNvQy4KKworRXhhbXBsZXM6CisKK3VhcnQxOiBzZXJpYWxAMTIxMDAgeworCWNvbXBhdGlibGUgPSAibnMxNjU1MGEiOworCXJlZyA9IDwweDEyMTAwIDB4MTAwPjsKKwlyZWctc2hpZnQgPSA8Mj47CisJaW50ZXJydXB0cyA9IDw3PjsKKworCXBpbmN0cmwtMCA9IDwmcG14X3VhcnQxX3N3PjsKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworfTsKKworcGluY3RybDogcGluY3RybEBkMDIwMCB7CisJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLGRvdmUtcGluY3RybCI7CisJcmVnID0gPDB4ZDAyMDAgMHgxND4sIDwweGQwNDQwIDB4MDQ+LCA8MHhkODAyYyAweDA4PjsKKworCXBteF91YXJ0MV9zdzogcG14LXVhcnQxLXN3IHsKKwkJbWFydmVsbCxwaW5zID0gIm1wcF91YXJ0MSI7CisJCW1hcnZlbGwsZnVuY3Rpb24gPSAidWFydDEiOworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbWFydmVsbCxvcmlvbi1waW5jdHJsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL21hcnZlbGwsb3Jpb24tcGluY3RybC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc1NzBhMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL21hcnZlbGwsb3Jpb24tcGluY3RybC50eHQKQEAgLTAsMCArMSw5MSBAQAorKiBNYXJ2ZWxsIE9yaW9uIFNvQyBwaW5jdHJsIGRyaXZlciBmb3IgbXBwCisKK1BsZWFzZSByZWZlciB0byBtYXJ2ZWxsLG12ZWJ1LXBpbmN0cmwudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBjb21tb24gYmluZGluZworcGFydCBhbmQgdXNhZ2UuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJtYXJ2ZWxsLDg4ZjUxODFsLXBpbmN0cmwiLCAibWFydmVsbCw4OGY1MTgyLXBpbmN0cmwiLAorICAgICAgICAgICAgICAibWFydmVsbCw4OGY1MjgxLXBpbmN0cmwiCisKKy0gcmVnOiB0d28gcmVnaXN0ZXIgYXJlYXMsIHRoZSBmaXJzdCBvbmUgZGVzY3JpYmluZyB0aGUgZmlyc3QgdHdvCisgIGNvbnRpZ3VvdXMgTVBQIHJlZ2lzdGVycywgYW5kIHRoZSBzZWNvbmQgb25lIGRlc2NyaWJpbmcgdGhlIHNpbmdsZQorICBmaW5hbCBNUFAgcmVnaXN0ZXIsIHNlcGFyYXRlZCBmcm9tIHRoZSBwcmV2aW91cyBvbmUuCisKK0F2YWlsYWJsZSBtcHAgcGlucy9ncm91cHMgYW5kIGZ1bmN0aW9uczoKK05vdGU6IGJyYWNrZXRzICh4KSBhcmUgbm90IHBhcnQgb2YgdGhlIG1wcCBuYW1lIGZvciBtYXJ2ZWxsLGZ1bmN0aW9uIGFuZCBnaXZlbgorb25seSBmb3IgbW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBpbiB0aGlzIGRvY3VtZW50LgorCisqIE1hcnZlbGwgT3Jpb24gODhmNTE4MWwKKworbmFtZSAgICAgICAgICBwaW5zICAgICBmdW5jdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CittcHAwICAgICAgICAgIDAgICAgICAgIHBjaWUocnN0b3V0KSwgcGNpKHJlcTIpLCBncGlvCittcHAxICAgICAgICAgIDEgICAgICAgIGdwaW8sIHBjaShnbnQyKQorbXBwMiAgICAgICAgICAyICAgICAgICBncGlvLCBwY2kocmVxMyksIHBjaS0xKHBtZSkKK21wcDMgICAgICAgICAgMyAgICAgICAgZ3BpbywgcGNpKGdudDMpCittcHA0ICAgICAgICAgIDQgICAgICAgIGdwaW8sIHBjaShyZXE0KQorbXBwNSAgICAgICAgICA1ICAgICAgICBncGlvLCBwY2koZ250NCkKK21wcDYgICAgICAgICAgNiAgICAgICAgZ3BpbywgcGNpKHJlcTUpLCBwY2ktMShjbGspCittcHA3ICAgICAgICAgIDcgICAgICAgIGdwaW8sIHBjaShnbnQ1KSwgcGNpLTEoY2xrKQorbXBwOCAgICAgICAgICA4ICAgICAgICBncGlvLCBnZShjb2wpCittcHA5ICAgICAgICAgIDkgICAgICAgIGdwaW8sIGdlKHJ4ZXJyKQorbXBwMTAgICAgICAgICAxMCAgICAgICBncGlvLCBnZShjcnMpCittcHAxMSAgICAgICAgIDExICAgICAgIGdwaW8sIGdlKHR4ZXJyKQorbXBwMTIgICAgICAgICAxMiAgICAgICBncGlvLCBnZSh0eGQ0KQorbXBwMTMgICAgICAgICAxMyAgICAgICBncGlvLCBnZSh0eGQ1KQorbXBwMTQgICAgICAgICAxNCAgICAgICBncGlvLCBnZSh0eGQ2KQorbXBwMTUgICAgICAgICAxNSAgICAgICBncGlvLCBnZSh0eGQ3KQorbXBwMTYgICAgICAgICAxNiAgICAgICBnZShyeGQ0KQorbXBwMTcgICAgICAgICAxNyAgICAgICBnZShyeGQ1KQorbXBwMTggICAgICAgICAxOCAgICAgICBnZShyeGQ2KQorbXBwMTkgICAgICAgICAxOSAgICAgICBnZShyeGQ3KQorCisqIE1hcnZlbGwgT3Jpb24gODhmNTE4MgorCituYW1lICAgICAgICAgIHBpbnMgICAgIGZ1bmN0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK21wcDAgICAgICAgICAgMCAgICAgICAgcGNpZShyc3RvdXQpLCBwY2kocmVxMiksIGdwaW8KK21wcDEgICAgICAgICAgMSAgICAgICAgZ3BpbywgcGNpKGdudDIpCittcHAyICAgICAgICAgIDIgICAgICAgIGdwaW8sIHBjaShyZXEzKSwgcGNpLTEocG1lKQorbXBwMyAgICAgICAgICAzICAgICAgICBncGlvLCBwY2koZ250MykKK21wcDQgICAgICAgICAgNCAgICAgICAgZ3BpbywgcGNpKHJlcTQpLCBib290bmFuZChyZSksIHNhdGEwKHByc250KQorbXBwNSAgICAgICAgICA1ICAgICAgICBncGlvLCBwY2koZ250NCksIGJvb3RuYW5kKHdlKSwgc2F0YTEocHJzbnQpCittcHA2ICAgICAgICAgIDYgICAgICAgIGdwaW8sIHBjaShyZXE1KSwgbmFuZChyZTApLCBzYXRhMChhY3QpCittcHA3ICAgICAgICAgIDcgICAgICAgIGdwaW8sIHBjaShnbnQ1KSwgbmFuZCh3ZTApLCBzYXRhMShhY3QpCittcHA4ICAgICAgICAgIDggICAgICAgIGdwaW8sIGdlKGNvbCkKK21wcDkgICAgICAgICAgOSAgICAgICAgZ3BpbywgZ2UocnhlcnIpCittcHAxMCAgICAgICAgIDEwICAgICAgIGdwaW8sIGdlKGNycykKK21wcDExICAgICAgICAgMTEgICAgICAgZ3BpbywgZ2UodHhlcnIpCittcHAxMiAgICAgICAgIDEyICAgICAgIGdwaW8sIGdlKHR4ZDQpLCBuYW5kKHJlMSksIHNhdGEwKGxlZHByc250KQorbXBwMTMgICAgICAgICAxMyAgICAgICBncGlvLCBnZSh0eGQ1KSwgbmFuZCh3ZTEpLCBzYXRhMShsZWRwcnNudCkKK21wcDE0ICAgICAgICAgMTQgICAgICAgZ3BpbywgZ2UodHhkNiksIG5hbmQocmUyKSwgc2F0YTAobGVkYWN0KQorbXBwMTUgICAgICAgICAxNSAgICAgICBncGlvLCBnZSh0eGQ3KSwgbmFuZCh3ZTIpLCBzYXRhMShsZWRhY3QpCittcHAxNiAgICAgICAgIDE2ICAgICAgIHVhcnQxKHJ4ZCksIGdlKHJ4ZDQpLCBncGlvCittcHAxNyAgICAgICAgIDE3ICAgICAgIHVhcnQxKHR4ZCksIGdlKHJ4ZDUpLCBncGlvCittcHAxOCAgICAgICAgIDE4ICAgICAgIHVhcnQxKGN0cyksIGdlKHJ4ZDYpLCBncGlvCittcHAxOSAgICAgICAgIDE5ICAgICAgIHVhcnQxKHJ0cyksIGdlKHJ4ZDcpLCBncGlvCisKKyogTWFydmVsbCBPcmlvbiA4OGY1MjgxCisKK25hbWUgICAgICAgICAgcGlucyAgICAgZnVuY3Rpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorbXBwMCAgICAgICAgICAwICAgICAgICBwY2llKHJzdG91dCksIHBjaShyZXEyKSwgZ3BpbworbXBwMSAgICAgICAgICAxICAgICAgICBncGlvLCBwY2koZ250MikKK21wcDIgICAgICAgICAgMiAgICAgICAgZ3BpbywgcGNpKHJlcTMpLCBwY2kocG1lKQorbXBwMyAgICAgICAgICAzICAgICAgICBncGlvLCBwY2koZ250MykKK21wcDQgICAgICAgICAgNCAgICAgICAgZ3BpbywgcGNpKHJlcTQpLCBib290bmFuZChyZSkKK21wcDUgICAgICAgICAgNSAgICAgICAgZ3BpbywgcGNpKGdudDQpLCBib290bmFuZCh3ZSkKK21wcDYgICAgICAgICAgNiAgICAgICAgZ3BpbywgcGNpKHJlcTUpLCBuYW5kKHJlMCkKK21wcDcgICAgICAgICAgNyAgICAgICAgZ3BpbywgcGNpKGdudDUpLCBuYW5kKHdlMCkKK21wcDggICAgICAgICAgOCAgICAgICAgZ3BpbywgZ2UoY29sKQorbXBwOSAgICAgICAgICA5ICAgICAgICBncGlvLCBnZShyeGVycikKK21wcDEwICAgICAgICAgMTAgICAgICAgZ3BpbywgZ2UoY3JzKQorbXBwMTEgICAgICAgICAxMSAgICAgICBncGlvLCBnZSh0eGVycikKK21wcDEyICAgICAgICAgMTIgICAgICAgZ3BpbywgZ2UodHhkNCksIG5hbmQocmUxKQorbXBwMTMgICAgICAgICAxMyAgICAgICBncGlvLCBnZSh0eGQ1KSwgbmFuZCh3ZTEpCittcHAxNCAgICAgICAgIDE0ICAgICAgIGdwaW8sIGdlKHR4ZDYpLCBuYW5kKHJlMikKK21wcDE1ICAgICAgICAgMTUgICAgICAgZ3BpbywgZ2UodHhkNyksIG5hbmQod2UyKQorbXBwMTYgICAgICAgICAxNiAgICAgICB1YXJ0MShyeGQpLCBnZShyeGQ0KQorbXBwMTcgICAgICAgICAxNyAgICAgICB1YXJ0MSh0eGQpLCBnZShyeGQ1KQorbXBwMTggICAgICAgICAxOCAgICAgICB1YXJ0MShjdHMpLCBnZShyeGQ2KQorbXBwMTkgICAgICAgICAxOSAgICAgICB1YXJ0MShydHMpLCBnZShyeGQ3KQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbWVzb24scGluY3RybC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9tZXNvbixwaW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjZhNTI0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbWVzb24scGluY3RybC50eHQKQEAgLTAsMCArMSw5NiBAQAorPT0gQW1sb2dpYyBNZXNvbiBwaW5tdXggY29udHJvbGxlciA9PQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciB0aGUgcm9vdCBub2RlOgorIC0gY29tcGF0aWJsZTogImFtbG9naWMsbWVzb244LXBpbmN0cmwiIG9yICJhbWxvZ2ljLG1lc29uOGItcGluY3RybCIKKyAtIHJlZzogYWRkcmVzcyBhbmQgc2l6ZSBvZiByZWdpc3RlcnMgY29udHJvbGxpbmcgaXJxIGZ1bmN0aW9uYWxpdHkKKworPT09IEdQSU8gc3ViLW5vZGVzID09PQorCitUaGUgMiBwb3dlciBkb21haW5zIG9mIHRoZSBjb250cm9sbGVyIChyZWd1bGFyIGFuZCBhbHdheXMtb24pIGFyZQorcmVwcmVzZW50ZWQgYXMgc3ViLW5vZGVzIGFuZCBlYWNoIG9mIHRoZW0gYWN0cyBhcyBhIEdQSU8gY29udHJvbGxlci4KKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3Igc3ViLW5vZGVzIGFyZToKKyAtIHJlZzogc2hvdWxkIGNvbnRhaW4gYWRkcmVzcyBhbmQgc2l6ZSBmb3IgbXV4LCBwdWxsLWVuYWJsZSwgcHVsbCBhbmQKKyAgIGdwaW8gcmVnaXN0ZXIgc2V0cworIC0gcmVnLW5hbWVzOiBhbiBhcnJheSBvZiBzdHJpbmdzIGRlc2NyaWJpbmcgdGhlICJyZWciIGVudHJpZXMuIE11c3QKKyAgIGNvbnRhaW4gIm11eCIsICJwdWxsIiBhbmQgImdwaW8iLiAicHVsbC1lbmFibGUiIGlzIG9wdGlvbmFsIGFuZAorICAgd2hlbiBpdCBpcyBtaXNzaW5nIHRoZSAicHVsbCIgcmVnaXN0ZXJzIGFyZSB1c2VkIGluc3RlYWQKKyAtIGdwaW8tY29udHJvbGxlcjogaWRlbnRpZmllcyB0aGUgbm9kZSBhcyBhIGdwaW8gY29udHJvbGxlcgorIC0gI2dwaW8tY2VsbHM6IG11c3QgYmUgMgorCitWYWxpZCBzdWItbm9kZSBuYW1lcyBhcmU6CisgLSAiYmFua3MiIGZvciB0aGUgcmVndWxhciBkb21haW4KKyAtICJhby1iYW5rIiBmb3IgdGhlIGFsd2F5cy1vbiBkb21haW4KKworPT09IE90aGVyIHN1Yi1ub2RlcyA9PT0KKworQ2hpbGQgbm9kZXMgd2l0aG91dCB0aGUgImdwaW8tY29udHJvbGxlciIgcmVwcmVzZW50IHNvbWUgZGVzaXJlZAorY29uZmlndXJhdGlvbiBmb3IgYSBwaW4gb3IgYSBncm91cC4gVGhvc2Ugbm9kZXMgY2FuIGJlIHBpbm11eCBub2RlcyBvcgorY29uZmlndXJhdGlvbiBub2Rlcy4KKworUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgcGlubXV4IG5vZGVzIGFyZToKKyAtIGdyb3VwczogYSBsaXN0IG9mIHBpbm11eCBncm91cHMuIFRoZSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgZ3JvdXBzCisgICBkZXBlbmRzIG9uIHRoZSBTb0MgYW5kIGNhbiBiZSBmb3VuZCBpbiBkcml2ZXIgc291cmNlcy4KKyAtIGZ1bmN0aW9uOiB0aGUgbmFtZSBvZiBhIGZ1bmN0aW9uIHRvIGFjdGl2YXRlIGZvciB0aGUgc3BlY2lmaWVkIHNldAorICAgb2YgZ3JvdXBzLiBUaGUgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIGZ1bmN0aW9ucyBkZXBlbmRzIG9uIHRoZSBTb0MKKyAgIGFuZCBjYW4gYmUgZm91bmQgaW4gZHJpdmVyIHNvdXJjZXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIGNvbmZpZ3VyYXRpb24gbm9kZXM6CisgLSBwaW5zOiBhIGxpc3Qgb2YgcGluIG5hbWVzCisKK0NvbmZpZ3VyYXRpb24gbm9kZXMgc3VwcG9ydCB0aGUgZ2VuZXJpYyBwcm9wZXJ0aWVzICJiaWFzLWRpc2FibGUiLAorImJpYXMtcHVsbC11cCIgYW5kICJiaWFzLXB1bGwtZG93biIsIGRlc2NyaWJlZCBpbiBmaWxlCitwaW5jdHJsLWJpbmRpbmdzLnR4dAorCis9PT0gRXhhbXBsZSA9PT0KKworCXBpbmN0cmw6IHBpbmN0cmxAYzExMDk4ODAgeworCQljb21wYXRpYmxlID0gImFtbG9naWMsbWVzb244LXBpbmN0cmwiOworCQlyZWcgPSA8MHhjMTEwOTg4MCAweDEwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQlyYW5nZXM7CisKKwkJZ3BpbzogYmFua3NAYzExMDgwYjAgeworCQkJcmVnID0gPDB4YzExMDgwYjAgMHgyOD4sCisJCQkgICAgICA8MHhjMTEwODBlOCAweDE4PiwKKwkJCSAgICAgIDwweGMxMTA4MTIwIDB4MTg+LAorCQkJICAgICAgPDB4YzExMDgwMzAgMHgzMD47CisJCQlyZWctbmFtZXMgPSAibXV4IiwgInB1bGwiLCAicHVsbC1lbmFibGUiLCAiZ3BpbyI7CisJCQlncGlvLWNvbnRyb2xsZXI7CisJCQkjZ3Bpby1jZWxscyA9IDwyPjsKKyAgICAgICAgICAgICAgIH07CisKKwkJZ3Bpb19hbzogYW8tYmFua0BjMTEwODAzMCB7CisJCQlyZWcgPSA8MHhjODEwMDAxNCAweDQ+LAorCQkJICAgICAgPDB4YzgxMDAwMmMgMHg0PiwKKwkJCSAgICAgIDwweGM4MTAwMDI0IDB4OD47CisJCQlyZWctbmFtZXMgPSAibXV4IiwgInB1bGwiLCAiZ3BpbyI7CisJCQlncGlvLWNvbnRyb2xsZXI7CisJCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJfTsKKworCQluYW5kIHsKKwkJCW11eCB7CisJCQkJZ3JvdXBzID0gIm5hbmRfaW8iLCAibmFuZF9pb19jZTAiLCAibmFuZF9pb19jZTEiLAorCQkJCQkgIm5hbmRfaW9fcmIwIiwgIm5hbmRfYWxlIiwgIm5hbmRfY2xlIiwKKwkJCQkJICJuYW5kX3dlbl9jbGsiLCAibmFuZF9yZW5fY2xrIiwgIm5hbmRfZHFzIiwKKwkJCQkJICJuYW5kX2NlMiIsICJuYW5kX2NlMyI7CisJCQkJZnVuY3Rpb24gPSAibmFuZCI7CisJCQl9OworCQl9OworCisJCXVhcnRfYW9fYSB7CisJCQltdXggeworCQkJCWdyb3VwcyA9ICJ1YXJ0X3R4X2FvX2EiLCAidWFydF9yeF9hb19hIiwKKwkJCQkJICJ1YXJ0X2N0c19hb19hIiwgInVhcnRfcnRzX2FvX2EiOworCQkJCWZ1bmN0aW9uID0gInVhcnRfYW8iOworCQkJfTsKKworCQkJY29uZiB7CisJCQkJcGlucyA9ICJHUElPQU9fMCIsICJHUElPQU9fMSIsCisJCQkJICAgICAgICJHUElPQU9fMiIsICJHUElPQU9fMyI7CisJCQkJYmlhcy1kaXNhYmxlOworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbnZpZGlhLHRlZ3JhMTE0LXBpbm11eC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9udmlkaWEsdGVncmExMTQtcGlubXV4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjcwODU2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbnZpZGlhLHRlZ3JhMTE0LXBpbm11eC50eHQKQEAgLTAsMCArMSwxMzEgQEAKK05WSURJQSBUZWdyYTExNCBwaW5tdXggY29udHJvbGxlcgorCitUaGUgVGVncmExMTQgcGluY3RybCBiaW5kaW5nIGlzIHZlcnkgc2ltaWxhciB0byB0aGUgVGVncmEyMCBhbmQgVGVncmEzMAorcGluY3RybCBiaW5kaW5nLCBhcyBkZXNjcmliZWQgaW4gbnZpZGlhLHRlZ3JhMjAtcGlubXV4LnR4dCBhbmQKK252aWRpYSx0ZWdyYTMwLXBpbm11eC50eHQuIEluIGZhY3QsIHRoaXMgZG9jdW1lbnQgYXNzdW1lcyB0aGF0IGJpbmRpbmcgYXMKK2EgYmFzZWxpbmUsIGFuZCBvbmx5IGRvY3VtZW50cyB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdHdvIGJpbmRpbmdzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAibnZpZGlhLHRlZ3JhMTE0LXBpbm11eCIKKy0gcmVnOiBTaG91bGQgY29udGFpbiB0aGUgcmVnaXN0ZXIgcGh5c2ljYWwgYWRkcmVzcyBhbmQgbGVuZ3RoIGZvciBlYWNoIG9mCisgIHRoZSBwYWQgY29udHJvbCBhbmQgbXV4IHJlZ2lzdGVycy4gVGhlIGZpcnN0IGJhbmsgb2YgYWRkcmVzcyBtdXN0IGJlIHRoZQorICBkcml2ZXIgc3RyZW5ndGggcGFkIGNvbnRyb2wgcmVnaXN0ZXIgYWRkcmVzcyBhbmQgc2Vjb25kIGJhbmsgYWRkcmVzcyBtdXN0CisgIGJlIHBpbm11eCByZWdpc3RlciBhZGRyZXNzLgorCitUZWdyYTExNCBhZGRzIHRoZSBmb2xsb3dpbmcgb3B0aW9uYWwgcHJvcGVydGllcyBmb3IgcGluIGNvbmZpZ3VyYXRpb24gc3Vibm9kZXM6CistIG52aWRpYSxlbmFibGUtaW5wdXQ6IEludGVnZXIuIEVuYWJsZSB0aGUgcGluJ3MgaW5wdXQgcGF0aC4gMDogbm8sIDE6IHllcy4KKy0gbnZpZGlhLG9wZW4tZHJhaW46IEludGVnZXIuIEVuYWJsZSBvcGVuIGRyYWluIG1vZGUuIDA6IG5vLCAxOiB5ZXMuCistIG52aWRpYSxsb2NrOiBJbnRlZ2VyLiBMb2NrIHRoZSBwaW4gY29uZmlndXJhdGlvbiBhZ2FpbnN0IGZ1cnRoZXIgY2hhbmdlcworICAgIHVudGlsIHJlc2V0LiAwOiBubywgMTogeWVzLgorLSBudmlkaWEsaW8tcmVzZXQ6IEludGVnZXIuIFJlc2V0IHRoZSBJTyBwYXRoLiAwOiBubywgMTogeWVzLgorLSBudmlkaWEscmN2LXNlbDogSW50ZWdlci4gU2VsZWN0IFZJTC9WSUggcmVjZWl2ZXJzLiAwOiBub3JtYWwsIDE6IGhpZ2guCistIG52aWRpYSxkcml2ZS10eXBlOiBJbnRlZ2VyLiBWYWxpZCByYW5nZSAwLi4uMy4KKworQXMgd2l0aCBUZWdyYTIwIGFuZCBUZXJnYTMwLCBzZWUgdGhlIFRlZ3JhIFRSTSBmb3IgY29tcGxldGUgZGV0YWlscyByZWdhcmRpbmcKK3doaWNoIGdyb3VwcyBzdXBwb3J0IHdoaWNoIGZ1bmN0aW9uYWxpdHkuCisKK1ZhbGlkIHZhbHVlcyBmb3IgcGluIGFuZCBncm91cCBuYW1lcyBhcmU6CisKKyAgcGVyLXBpbiBtdXggZ3JvdXBzOgorCisgICAgVGhlc2UgYWxsIHN1cHBvcnQgbnZpZGlhLGZ1bmN0aW9uLCBudmlkaWEsdHJpc3RhdGUsIG52aWRpYSxwdWxsLAorICAgIG52aWRpYSxlbmFibGUtaW5wdXQsIG52aWRpYSxsb2NrLiBTb21lIHN1cHBvcnQgbnZpZGlhLG9wZW4tZHJhaW4sCisgICAgbnZpZGlhLGlvLXJlc2V0IGFuZCBudmlkaWEscmN2LXNlbC4KKworICAgIHVscGlfZGF0YTBfcG8xLCB1bHBpX2RhdGExX3BvMiwgdWxwaV9kYXRhMl9wbzMsIHVscGlfZGF0YTNfcG80LAorICAgIHVscGlfZGF0YTRfcG81LCB1bHBpX2RhdGE1X3BvNiwgdWxwaV9kYXRhNl9wbzcsIHVscGlfZGF0YTdfcG8wLAorICAgIHVscGlfY2xrX3B5MCwgdWxwaV9kaXJfcHkxLCB1bHBpX254dF9weTIsIHVscGlfc3RwX3B5MywgZGFwM19mc19wcDAsCisgICAgZGFwM19kaW5fcHAxLCBkYXAzX2RvdXRfcHAyLCBkYXAzX3NjbGtfcHAzLCBwdjAsIHB2MSwgc2RtbWMxX2Nsa19wejAsCisgICAgc2RtbWMxX2NtZF9wejEsIHNkbW1jMV9kYXQzX3B5NCwgc2RtbWMxX2RhdDJfcHk1LCBzZG1tYzFfZGF0MV9weTYsCisgICAgc2RtbWMxX2RhdDBfcHk3LCBjbGsyX291dF9wdzUsIGNsazJfcmVxX3BjYzUsIGhkbWlfaW50X3BuNywgZGRjX3NjbF9wdjQsCisgICAgZGRjX3NkYV9wdjUsIHVhcnQyX3J4ZF9wYzMsIHVhcnQyX3R4ZF9wYzIsIHVhcnQyX3J0c19uX3BqNiwKKyAgICB1YXJ0Ml9jdHNfbl9wajUsIHVhcnQzX3R4ZF9wdzYsIHVhcnQzX3J4ZF9wdzcsIHVhcnQzX2N0c19uX3BhMSwKKyAgICB1YXJ0M19ydHNfbl9wYzAsIHB1MCwgcHUxLCBwdTIsIHB1MywgcHU0LCBwdTUsIHB1NiwgZ2VuMV9pMmNfc2RhX3BjNSwKKyAgICBnZW4xX2kyY19zY2xfcGM0LCBkYXA0X2ZzX3BwNCwgZGFwNF9kaW5fcHA1LCBkYXA0X2RvdXRfcHA2LCBkYXA0X3NjbGtfcHA3LAorICAgIGNsazNfb3V0X3BlZTAsIGNsazNfcmVxX3BlZTEsIGdtaV93cF9uX3BjNywgZ21pX2lvcmR5X3BpNSwgZ21pX3dhaXRfcGk3LAorICAgIGdtaV9hZHZfbl9wazAsIGdtaV9jbGtfcGsxLCBnbWlfY3MwX25fcGowLCBnbWlfY3MxX25fcGoyLCBnbWlfY3MyX25fcGszLAorICAgIGdtaV9jczNfbl9wazQsIGdtaV9jczRfbl9wazIsIGdtaV9jczZfbl9waTMsIGdtaV9jczdfbl9waTYsIGdtaV9hZDBfcGcwLAorICAgIGdtaV9hZDFfcGcxLCBnbWlfYWQyX3BnMiwgZ21pX2FkM19wZzMsIGdtaV9hZDRfcGc0LCBnbWlfYWQ1X3BnNSwKKyAgICBnbWlfYWQ2X3BnNiwgZ21pX2FkN19wZzcsIGdtaV9hZDhfcGgwLCBnbWlfYWQ5X3BoMSwgZ21pX2FkMTBfcGgyLAorICAgIGdtaV9hZDExX3BoMywgZ21pX2FkMTJfcGg0LCBnbWlfYWQxM19waDUsIGdtaV9hZDE0X3BoNiwgZ21pX2FkMTVfcGg3LAorICAgIGdtaV9hMTZfcGo3LCBnbWlfYTE3X3BiMCwgZ21pX2ExOF9wYjEsIGdtaV9hMTlfcGs3LCBnbWlfd3Jfbl9waTAsCisgICAgZ21pX29lX25fcGkxLCBnbWlfZHFzX3BfcGozLCBnbWlfcnN0X25fcGk0LCBnZW4yX2kyY19zY2xfcHQ1LAorICAgIGdlbjJfaTJjX3NkYV9wdDYsIHNkbW1jNF9jbGtfcGNjNCwgc2RtbWM0X2NtZF9wdDcsIHNkbW1jNF9kYXQwX3BhYTAsCisgICAgc2RtbWM0X2RhdDFfcGFhMSwgc2RtbWM0X2RhdDJfcGFhMiwgc2RtbWM0X2RhdDNfcGFhMywgc2RtbWM0X2RhdDRfcGFhNCwKKyAgICBzZG1tYzRfZGF0NV9wYWE1LCBzZG1tYzRfZGF0Nl9wYWE2LCBzZG1tYzRfZGF0N19wYWE3LCBjYW1fbWNsa19wY2MwLAorICAgIHBjYzEsIHBiYjAsIGNhbV9pMmNfc2NsX3BiYjEsIGNhbV9pMmNfc2RhX3BiYjIsIHBiYjMsIHBiYjQsIHBiYjUsIHBiYjYsCisgICAgcGJiNywgcGNjMiwgcHdyX2kyY19zY2xfcHo2LCBwd3JfaTJjX3NkYV9wejcsIGtiX3JvdzBfcHIwLCBrYl9yb3cxX3ByMSwKKyAgICBrYl9yb3cyX3ByMiwga2Jfcm93M19wcjMsIGtiX3JvdzRfcHI0LCBrYl9yb3c1X3ByNSwga2Jfcm93Nl9wcjYsCisgICAga2Jfcm93N19wcjcsIGtiX3JvdzhfcHMwLCBrYl9yb3c5X3BzMSwga2Jfcm93MTBfcHMyLCBrYl9jb2wwX3BxMCwKKyAgICBrYl9jb2wxX3BxMSwga2JfY29sMl9wcTIsIGtiX2NvbDNfcHEzLCBrYl9jb2w0X3BxNCwga2JfY29sNV9wcTUsCisgICAga2JfY29sNl9wcTYsIGtiX2NvbDdfcHE3LCBjbGtfMzJrX291dF9wYTAsIHN5c19jbGtfcmVxX3B6NSwgY29yZV9wd3JfcmVxLAorICAgIGNwdV9wd3JfcmVxLCBwd3JfaW50X24sIG93ciwgZGFwMV9mc19wbjAsIGRhcDFfZGluX3BuMSwgZGFwMV9kb3V0X3BuMiwKKyAgICBkYXAxX3NjbGtfcG4zLCBjbGsxX3JlcV9wZWUyLCBjbGsxX291dF9wdzQsIHNwZGlmX2luX3BrNiwgc3BkaWZfb3V0X3BrNSwKKyAgICBkYXAyX2ZzX3BhMiwgZGFwMl9kaW5fcGE0LCBkYXAyX2RvdXRfcGE1LCBkYXAyX3NjbGtfcGEzLCBkdmZzX3B3bV9weDAsCisgICAgZ3Bpb194MV9hdWRfcHgxLCBncGlvX3gzX2F1ZF9weDMsIGR2ZnNfY2xrX3B4MiwgZ3Bpb194NF9hdWRfcHg0LAorICAgIGdwaW9feDVfYXVkX3B4NSwgZ3Bpb194Nl9hdWRfcHg2LCBncGlvX3g3X2F1ZF9weDcsIHNkbW1jM19jbGtfcGE2LAorICAgIHNkbW1jM19jbWRfcGE3LCBzZG1tYzNfZGF0MF9wYjcsIHNkbW1jM19kYXQxX3BiNiwgc2RtbWMzX2RhdDJfcGI1LAorICAgIHNkbW1jM19kYXQzX3BiNCwgaGRtaV9jZWNfcGVlMywgc2RtbWMxX3dwX25fcHYzLCBzZG1tYzNfY2Rfbl9wdjIsCisgICAgZ3Bpb193Ml9hdWRfcHcyLCBncGlvX3czX2F1ZF9wdzMsIHVzYl92YnVzX2VuMF9wbjQsIHVzYl92YnVzX2VuMV9wbjUsCisgICAgc2RtbWMzX2Nsa19sYl9pbl9wZWU1LCBzZG1tYzNfY2xrX2xiX291dF9wZWU0LCByZXNldF9vdXRfbi4KKworICBkcml2ZSBncm91cHM6CisKKyAgICBUaGVzZSBhbGwgc3VwcG9ydCBudmlkaWEscHVsbC1kb3duLXN0cmVuZ3RoLCBudmlkaWEscHVsbC11cC1zdHJlbmd0aCwKKyAgICBudmlkaWEsc2xldy1yYXRlLXJpc2luZywgbnZpZGlhLHNsZXctcmF0ZS1mYWxsaW5nLiBNb3N0IGJ1dCBub3QgYWxsCisgICAgc3VwcG9ydCBudmlkaWEsaGlnaC1zcGVlZC1tb2RlLCBudmlkaWEsc2NobWl0dCwgbnZpZGlhLGxvdy1wb3dlci1tb2RlCisgICAgYW5kIG52aWRpYSxkcml2ZS10eXBlLgorCisgICAgYW8xLCBhbzIsIGF0MSwgYXQyLCBhdDMsIGF0NCwgYXQ1LCBjZGV2MSwgY2RldjIsIGRhcDEsIGRhcDIsIGRhcDMsIGRhcDQsCisgICAgZGJnLCBzZGlvMywgc3BpLCB1YWEsIHVhYiwgdWFydDIsIHVhcnQzLCBzZGlvMSwgZGRjLCBnbWEsIGdtZSwgZ21mLCBnbWcsCisgICAgZ21oLCBvd3IsIHVkYS4KKworVmFsaWQgdmFsdWVzIGZvciBudmlkaWEsZnVuY3Rpb25zIGFyZToKKworICBibGluaywgY2VjLCBjbGR2ZnMsIGNsazEyLCBjcHUsIGRhcCwgZGFwMSwgZGFwMiwgZGV2MywgZGlzcGxheWEsCisgIGRpc3BsYXlhX2FsdCwgZGlzcGxheWIsIGR0diwgZW1jX2RsbCwgZXh0cGVyaXBoMSwgZXh0cGVyaXBoMiwKKyAgZXh0cGVyaXBoMywgZ21pLCBnbWlfYWx0LCBoZGEsIGhzaSwgaTJjMSwgaTJjMiwgaTJjMywgaTJjNCwgaTJjcHdyLAorICBpMnMwLCBpMnMxLCBpMnMyLCBpMnMzLCBpMnM0LCBpcmRhLCBrYmMsIG5hbmQsIG5hbmRfYWx0LCBvd3IsIHBtaSwKKyAgcHdtMCwgcHdtMSwgcHdtMiwgcHdtMywgcHdyb24sIHJlc2V0X291dF9uLCByc3ZkMSwgcnN2ZDIsIHJzdmQzLAorICByc3ZkNCwgc2RtbWMxLCBzZG1tYzIsIHNkbW1jMywgc2RtbWM0LCBzb2MsIHNwZGlmLCBzcGkxLCBzcGkyLCBzcGkzLAorICBzcGk0LCBzcGk1LCBzcGk2LCBzeXNjbGssIHRyYWNlLCB1YXJ0YSwgdWFydGIsIHVhcnRjLCB1YXJ0ZCwgdWxwaSwKKyAgdXNiLCB2Z3AxLCB2Z3AyLCB2Z3AzLCB2Z3A0LCB2Z3A1LCB2Z3A2LCB2aSwgdmlfYWx0MSwgdmlfYWx0MworCitFeGFtcGxlOgorCisJcGlubXV4OiBwaW5tdXggeworCQljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTExNC1waW5tdXgiOworCQlyZWcgPSA8MHg3MDAwMDg2OCAweDE0OAkJLyogUGFkIGNvbnRyb2wgcmVnaXN0ZXJzICovCisJCSAgICAgICAweDcwMDAzMDAwIDB4NDBjPjsJLyogUGluTXV4IHJlZ2lzdGVycyAqLworCX07CisKK0V4YW1wbGUgYm9hcmQgZmlsZSBleHRyYWN0OgorCisJcGluY3RybCB7CisJCXNkbW1jNF9kZWZhdWx0OiBwaW5tdXggeworCQkJc2RtbWM0X2Nsa19wY2M0IHsKKwkJCQludmlkaWEscGlucyA9ICJzZG1tYzRfY2xrX3BjYzQiLAorCQkJCW52aWRpYSxmdW5jdGlvbiA9ICJzZG1tYzQiOworCQkJCW52aWRpYSxwdWxsID0gPDA+OworCQkJCW52aWRpYSx0cmlzdGF0ZSA9IDwwPjsKKwkJCX07CisJCQlzZG1tYzRfZGF0MF9wYWEwIHsKKwkJCQludmlkaWEscGlucyA9ICJzZG1tYzRfZGF0MF9wYWEwIiwKKwkJCQkJCSJzZG1tYzRfZGF0MV9wYWExIiwKKwkJCQkJCSJzZG1tYzRfZGF0Ml9wYWEyIiwKKwkJCQkJCSJzZG1tYzRfZGF0M19wYWEzIiwKKwkJCQkJCSJzZG1tYzRfZGF0NF9wYWE0IiwKKwkJCQkJCSJzZG1tYzRfZGF0NV9wYWE1IiwKKwkJCQkJCSJzZG1tYzRfZGF0Nl9wYWE2IiwKKwkJCQkJCSJzZG1tYzRfZGF0N19wYWE3IjsKKwkJCQludmlkaWEsZnVuY3Rpb24gPSAic2RtbWM0IjsKKwkJCQludmlkaWEscHVsbCA9IDwyPjsKKwkJCQludmlkaWEsdHJpc3RhdGUgPSA8MD47CisJCQl9OworCQl9OworCX07CisKKwlzZGhjaUA3ODAwMDQwMCB7CisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmc2RtbWM0X2RlZmF1bHQ+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9udmlkaWEsdGVncmExMjQtcGlubXV4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL252aWRpYSx0ZWdyYTEyNC1waW5tdXgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjYjVjMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9udmlkaWEsdGVncmExMjQtcGlubXV4LnR4dApAQCAtMCwwICsxLDE1MyBAQAorTlZJRElBIFRlZ3JhMTI0IHBpbm11eCBjb250cm9sbGVyCisKK1RoZSBUZWdyYTEyNCBwaW5jdHJsIGJpbmRpbmcgaXMgdmVyeSBzaW1pbGFyIHRvIHRoZSBUZWdyYTIwIGFuZCBUZWdyYTMwCitwaW5jdHJsIGJpbmRpbmcsIGFzIGRlc2NyaWJlZCBpbiBudmlkaWEsdGVncmEyMC1waW5tdXgudHh0IGFuZAorbnZpZGlhLHRlZ3JhMzAtcGlubXV4LnR4dC4gSW4gZmFjdCwgdGhpcyBkb2N1bWVudCBhc3N1bWVzIHRoYXQgYmluZGluZyBhcworYSBiYXNlbGluZSwgYW5kIG9ubHkgZG9jdW1lbnRzIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB0d28gYmluZGluZ3MuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IEZvciBUZWdyYTEyNCwgbXVzdCBjb250YWluICJudmlkaWEsdGVncmExMjQtcGlubXV4Ii4gIEZvcgorICBUZWdyYTEzMiwgbXVzdCBjb250YWluICcibnZpZGlhLHRlZ3JhMTMyLXBpbm11eCIsICJudmlkaWEtdGVncmExMjQtcGlubXV4IicuCistIHJlZzogU2hvdWxkIGNvbnRhaW4gYSBsaXN0IG9mIGJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBwYWlycyBmb3I6CisgICAgLS0gZmlyc3QgZW50cnkgLSB0aGUgZHJpdmUgc3RyZW5ndGggYW5kIHBhZCBjb250cm9sIHJlZ2lzdGVycy4KKyAgICAtLSBzZWNvbmQgZW50cnkgLSB0aGUgcGlubXV4IHJlZ2lzdGVycworICAgIC0tIHRoaXJkIGVudHJ5IC0gdGhlIE1JUElfUEFEX0NUUkwgcmVnaXN0ZXIKKworVGVncmExMjQgYWRkcyB0aGUgZm9sbG93aW5nIG9wdGlvbmFsIHByb3BlcnRpZXMgZm9yIHBpbiBjb25maWd1cmF0aW9uIHN1Ym5vZGVzLgorVGhlIG1hY3JvcyBmb3Igb3B0aW9ucyBhcmUgZGVmaW5lZCBpbiB0aGUKKwlpbmNsdWRlL2R0LWJpbmRpbmcvcGluY3RybC9waW5jdHJsLXRlZ3JhLmguCistIG52aWRpYSxlbmFibGUtaW5wdXQ6IEludGVnZXIuIEVuYWJsZSB0aGUgcGluJ3MgaW5wdXQgcGF0aC4KKwkJZW5hYmxlIDpURUdSQV9QSU5fRU5BQkxFMCBhbmQKKwkJZGlzYWJsZSBvciBvdXRwdXQgb25seTogVEVHUkFfUElOX0RJU0FCTEUuCistIG52aWRpYSxvcGVuLWRyYWluOiBJbnRlZ2VyLgorCQllbmFibGU6IFRFR1JBX1BJTl9FTkFCTEUuCisJCWRpc2FibGU6IFRFR1JBX1BJTl9ESVNBQkxFLgorLSBudmlkaWEsbG9jazogSW50ZWdlci4gTG9jayB0aGUgcGluIGNvbmZpZ3VyYXRpb24gYWdhaW5zdCBmdXJ0aGVyIGNoYW5nZXMKKyAgICB1bnRpbCByZXNldC4KKwkJZW5hYmxlOiBURUdSQV9QSU5fRU5BQkxFLgorCQlkaXNhYmxlOiBURUdSQV9QSU5fRElTQUJMRS4KKy0gbnZpZGlhLGlvLXJlc2V0OiBJbnRlZ2VyLiBSZXNldCB0aGUgSU8gcGF0aC4KKwkJZW5hYmxlOiBURUdSQV9QSU5fRU5BQkxFLgorCQlkaXNhYmxlOiBURUdSQV9QSU5fRElTQUJMRS4KKy0gbnZpZGlhLHJjdi1zZWw6IEludGVnZXIuIFNlbGVjdCBWSUwvVklIIHJlY2VpdmVycy4KKwkJbm9ybWFsOiBURUdSQV9QSU5fRElTQUJMRQorCQloaWdoOiBURUdSQV9QSU5fRU5BQkxFCisKK1BsZWFzZSByZWZlciB0aGUgVGVncmEgVFJNIGZvciBjb21wbGV0ZSBkZXRhaWxzIHJlZ2FyZGluZyB3aGljaCBncm91cHMKK3N1cHBvcnQgd2hpY2ggZnVuY3Rpb25hbGl0eS4KKworVmFsaWQgdmFsdWVzIGZvciBwaW4gYW5kIGdyb3VwIG5hbWVzIGFyZToKKworICBwZXItcGluIG11eCBncm91cHM6CisKKyAgICBUaGVzZSBhbGwgc3VwcG9ydCBudmlkaWEsZnVuY3Rpb24sIG52aWRpYSx0cmlzdGF0ZSwgbnZpZGlhLHB1bGwsCisgICAgbnZpZGlhLGVuYWJsZS1pbnB1dC4gU29tZSBzdXBwb3J0IG52aWRpYSxsb2NrIG52aWRpYSxvcGVuLWRyYWluLAorICAgIG52aWRpYSxpby1yZXNldCBhbmQgbnZpZGlhLHJjdi1zZWwuCisKKwl1bHBpX2RhdGEwX3BvMSwgdWxwaV9kYXRhMV9wbzIsIHVscGlfZGF0YTJfcG8zLCB1bHBpX2RhdGEzX3BvNCwKKwl1bHBpX2RhdGE0X3BvNSwgdWxwaV9kYXRhNV9wbzYsIHVscGlfZGF0YTZfcG83LCB1bHBpX2RhdGE3X3BvMCwKKwl1bHBpX2Nsa19weTAsIHVscGlfZGlyX3B5MSwgdWxwaV9ueHRfcHkyLCB1bHBpX3N0cF9weTMsIGRhcDNfZnNfcHAwLAorCWRhcDNfZGluX3BwMSwgZGFwM19kb3V0X3BwMiwgZGFwM19zY2xrX3BwMywgcHYwLCBwdjEsIHNkbW1jMV9jbGtfcHowLAorCXNkbW1jMV9jbWRfcHoxLCBzZG1tYzFfZGF0M19weTQsIHNkbW1jMV9kYXQyX3B5NSwgc2RtbWMxX2RhdDFfcHk2LAorCXNkbW1jMV9kYXQwX3B5NywgY2xrMl9vdXRfcHc1LCBjbGsyX3JlcV9wY2M1LCBoZG1pX2ludF9wbjcsIGRkY19zY2xfcHY0LAorCWRkY19zZGFfcHY1LCB1YXJ0Ml9yeGRfcGMzLCB1YXJ0Ml90eGRfcGMyLCB1YXJ0Ml9ydHNfbl9wajYsCisJdWFydDJfY3RzX25fcGo1LCB1YXJ0M190eGRfcHc2LCB1YXJ0M19yeGRfcHc3LCB1YXJ0M19jdHNfbl9wYTEsCisJdWFydDNfcnRzX25fcGMwLCBwdTAsIHB1MSwgcHUyLCBwdTMsIHB1NCwgcHU1LCBwdTYsIGdlbjFfaTJjX3NjbF9wYzQsCisJZ2VuMV9pMmNfc2RhX3BjNSwgZGFwNF9mc19wcDQsIGRhcDRfZGluX3BwNSwgZGFwNF9kb3V0X3BwNiwKKwlkYXA0X3NjbGtfcHA3LCBjbGszX291dF9wZWUwLCBjbGszX3JlcV9wZWUxLCBwYzcsIHBpNSwgcGk3LCBwazAsIHBrMSwKKwlwajAsIHBqMiwgcGszLCBwazQsIHBrMiwgcGkzLCBwaTYsIHBnMCwgcGcxLCBwZzIsIHBnMywgcGc0LCBwZzUsIHBnNiwKKwlwZzcsIHBoMCwgcGgxLCBwaDIsIHBoMywgcGg0LCBwaDUsIHBoNiwgcGg3LCBwajcsIHBiMCwgcGIxLCBwazcsIHBpMCwKKwlwaTEsIHBpMiwgcGk0LCBnZW4yX2kyY19zY2xfcHQ1LCBnZW4yX2kyY19zZGFfcHQ2LCBzZG1tYzRfY2xrX3BjYzQsCisJc2RtbWM0X2NtZF9wdDcsIHNkbW1jNF9kYXQwX3BhYTAsIHNkbW1jNF9kYXQxX3BhYTEsIHNkbW1jNF9kYXQyX3BhYTIsCisJc2RtbWM0X2RhdDNfcGFhMywgc2RtbWM0X2RhdDRfcGFhNCwgc2RtbWM0X2RhdDVfcGFhNSwgc2RtbWM0X2RhdDZfcGFhNiwKKwlzZG1tYzRfZGF0N19wYWE3LCBjYW1fbWNsa19wY2MwLCBwY2MxLCBwYmIwLCBjYW1faTJjX3NjbF9wYmIxLAorCWNhbV9pMmNfc2RhX3BiYjIsIHBiYjMsIHBiYjQsIHBiYjUsIHBiYjYsIHBiYjcsIHBjYzIsIGp0YWdfcnRjaywKKwlwd3JfaTJjX3NjbF9wejYsIHB3cl9pMmNfc2RhX3B6Nywga2Jfcm93MF9wcjAsIGtiX3JvdzFfcHIxLCBrYl9yb3cyX3ByMiwKKwlrYl9yb3czX3ByMywga2Jfcm93NF9wcjQsIGtiX3JvdzVfcHI1LCBrYl9yb3c2X3ByNiwga2Jfcm93N19wcjcsCisJa2Jfcm93OF9wczAsIGtiX3JvdzlfcHMxLCBrYl9yb3cxMF9wczIsIGtiX3JvdzExX3BzMywga2Jfcm93MTJfcHM0LAorCWtiX3JvdzEzX3BzNSwga2Jfcm93MTRfcHM2LCBrYl9yb3cxNV9wczcsIGtiX2NvbDBfcHEwLCBrYl9jb2wxX3BxMSwKKwlrYl9jb2wyX3BxMiwga2JfY29sM19wcTMsIGtiX2NvbDRfcHE0LCBrYl9jb2w1X3BxNSwga2JfY29sNl9wcTYsCisJa2JfY29sN19wcTcsIGNsa18zMmtfb3V0X3BhMCwgY29yZV9wd3JfcmVxLCBjcHVfcHdyX3JlcSwgcHdyX2ludF9uLAorCWNsa18zMmtfaW4sIG93ciwgZGFwMV9mc19wbjAsIGRhcDFfZGluX3BuMSwgZGFwMV9kb3V0X3BuMiwKKwlkYXAxX3NjbGtfcG4zLCBkYXBfbWNsazFfcmVxX3BlZTIsIGRhcF9tY2xrMV9wdzQsIHNwZGlmX2luX3BrNiwKKwlzcGRpZl9vdXRfcGs1LCBkYXAyX2ZzX3BhMiwgZGFwMl9kaW5fcGE0LCBkYXAyX2RvdXRfcGE1LCBkYXAyX3NjbGtfcGEzLAorCWR2ZnNfcHdtX3B4MCwgZ3Bpb194MV9hdWRfcHgxLCBncGlvX3gzX2F1ZF9weDMsIGR2ZnNfY2xrX3B4MiwKKwlncGlvX3g0X2F1ZF9weDQsIGdwaW9feDVfYXVkX3B4NSwgZ3Bpb194Nl9hdWRfcHg2LCBncGlvX3g3X2F1ZF9weDcsCisJc2RtbWMzX2Nsa19wYTYsIHNkbW1jM19jbWRfcGE3LCBzZG1tYzNfZGF0MF9wYjcsIHNkbW1jM19kYXQxX3BiNiwKKwlzZG1tYzNfZGF0Ml9wYjUsIHNkbW1jM19kYXQzX3BiNCwgcGV4X2wwX3JzdF9uX3BkZDEsCisJcGV4X2wwX2Nsa3JlcV9uX3BkZDIsIHBleF93YWtlX25fcGRkMywgcGV4X2wxX3JzdF9uX3BkZDUsCisJcGV4X2wxX2Nsa3JlcV9uX3BkZDYsIGhkbWlfY2VjX3BlZTMsIHNkbW1jMV93cF9uX3B2MywKKwlzZG1tYzNfY2Rfbl9wdjIsIGdwaW9fdzJfYXVkX3B3MiwgZ3Bpb193M19hdWRfcHczLCB1c2JfdmJ1c19lbjBfcG40LAorCXVzYl92YnVzX2VuMV9wbjUsIHNkbW1jM19jbGtfbGJfb3V0X3BlZTQsIHNkbW1jM19jbGtfbGJfaW5fcGVlNSwKKwlnbWlfY2xrX2xiLCByZXNldF9vdXRfbiwga2Jfcm93MTZfcHQwLCBrYl9yb3cxN19wdDEsIHVzYl92YnVzX2VuMl9wZmYxLAorCXBmZjIsIGRwX2hwZF9wZmYwLAorCisgIGRyaXZlIGdyb3VwczoKKworICAgIFRoZXNlIGFsbCBzdXBwb3J0IG52aWRpYSxwdWxsLWRvd24tc3RyZW5ndGgsIG52aWRpYSxwdWxsLXVwLXN0cmVuZ3RoLAorICAgIG52aWRpYSxzbGV3LXJhdGUtcmlzaW5nLCBudmlkaWEsc2xldy1yYXRlLWZhbGxpbmcuIE1vc3QgYnV0IG5vdCBhbGwKKyAgICBzdXBwb3J0IG52aWRpYSxoaWdoLXNwZWVkLW1vZGUsIG52aWRpYSxzY2htaXR0LCBudmlkaWEsbG93LXBvd2VyLW1vZGUKKyAgICBhbmQgbnZpZGlhLGRyaXZlLXR5cGUuCisKKyAgICBhbzEsIGFvMiwgYXQxLCBhdDIsIGF0MywgYXQ0LCBhdDUsIGNkZXYxLCBjZGV2MiwgZGFwMSwgZGFwMiwgZGFwMywgZGFwNCwKKyAgICBkYmcsIHNkaW8zLCBzcGksIHVhYSwgdWFiLCB1YXJ0MiwgdWFydDMsIHNkaW8xLCBkZGMsIGdtYSwgZ21lLCBnbWYsIGdtZywKKyAgICBnbWgsIG93ciwgdWRhLCBncHYsIGRldjMsIGNlYywgdXNiX3ZidXNfZW4sIGFvMywgYW8wLCBodjAsIHNkaW80LCBhbzQuCisKKyAgTUlQSSBwYWQgY29udHJvbCBncm91cHM6CisKKyAgICBUaGVzZSBzdXBwb3J0IG9ubHkgdGhlIG52aWRpYSxmdW5jdGlvbiBwcm9wZXJ0eS4KKworICAgIGRzaV9iCisKK1ZhbGlkIHZhbHVlcyBmb3IgbnZpZGlhLGZ1bmN0aW9ucyBhcmU6CisKKyAgYmxpbmssIGNlYywgY2xkdmZzLCBjbGsxMiwgY3B1LCBkYXAsIGRhcDEsIGRhcDIsIGRldjMsIGRpc3BsYXlhLAorICBkaXNwbGF5YV9hbHQsIGRpc3BsYXliLCBkdHYsIGV4dHBlcmlwaDEsIGV4dHBlcmlwaDIsIGV4dHBlcmlwaDMsCisgIGdtaSwgZ21pX2FsdCwgaGRhLCBoc2ksIGkyYzEsIGkyYzIsIGkyYzMsIGkyYzQsIGkyY3B3ciwgaTJzMCwKKyAgaTJzMSwgaTJzMiwgaTJzMywgaTJzNCwgaXJkYSwga2JjLCBvd3IsIHBtaSwgcHdtMCwgcHdtMSwgcHdtMiwgcHdtMywKKyAgcHdyb24sIHJlc2V0X291dF9uLCByc3ZkMSwgcnN2ZDIsIHJzdmQzLCByc3ZkNCwgc2RtbWMxLCBzZG1tYzIsIHNkbW1jMywKKyAgc2RtbWM0LCBzb2MsIHNwZGlmLCBzcGkxLCBzcGkyLCBzcGkzLCBzcGk0LCBzcGk1LCBzcGk2LCB0cmFjZSwgdWFydGEsCisgIHVhcnRiLCB1YXJ0YywgdWFydGQsIHVscGksIHVzYiwgdmdwMSwgdmdwMiwgdmdwMywgdmdwNCwgdmdwNSwgdmdwNiwKKyAgdmksIHZpX2FsdDEsIHZpX2FsdDMsIHZpbWNsazIsIHZpbWNsazJfYWx0LCBzYXRhLCBjY2xhLCBwZTAsIHBlLCBwZTEsCisgIGRwLCBydGNrLCBzeXMsIGNsayB0bWRzLCBjc2ksIGRzaV9iCisKK0V4YW1wbGU6CisKKwlwaW5tdXg6IHBpbm11eCB7CisJCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMTI0LXBpbm11eCI7CisJCXJlZyA9IDwweDAgMHg3MDAwMDg2OCAweDAgMHgxNjQ+LCAvKiBQYWQgY29udHJvbCByZWdpc3RlcnMgKi8KKwkJICAgICAgPDB4MCAweDcwMDAzMDAwIDB4MCAweDQzND4sIC8qIE11eCByZWdpc3RlcnMgKi8KKwkJICAgICAgPDB4MCAweDcwMDAwODIwIDB4MCAweDg+OyAgIC8qIE1JUEkgcGFkIGNvbnRyb2wgKi8KKwl9OworCitFeGFtcGxlIHBpbm11eCBlbnRyaWVzOgorCisJcGluY3RybCB7CisJCXNkbW1jNF9kZWZhdWx0OiBwaW5tdXggeworCQkJc2RtbWM0X2Nsa19wY2M0IHsKKwkJCQludmlkaWEscGlucyA9ICJzZG1tYzRfY2xrX3BjYzQiLAorCQkJCW52aWRpYSxmdW5jdGlvbiA9ICJzZG1tYzQiOworCQkJCW52aWRpYSxwdWxsID0gPFRFR1JBX1BJTl9QVUxMX05PTkU+OworCQkJCW52aWRpYSx0cmlzdGF0ZSA9IDxURUdSQV9QSU5fRElTQUJMRT47CisJCQl9OworCisJCQlzZG1tYzRfZGF0MF9wYWEwIHsKKwkJCQludmlkaWEscGlucyA9ICJzZG1tYzRfZGF0MF9wYWEwIiwKKwkJCQkJCSJzZG1tYzRfZGF0MV9wYWExIiwKKwkJCQkJCSJzZG1tYzRfZGF0Ml9wYWEyIiwKKwkJCQkJCSJzZG1tYzRfZGF0M19wYWEzIiwKKwkJCQkJCSJzZG1tYzRfZGF0NF9wYWE0IiwKKwkJCQkJCSJzZG1tYzRfZGF0NV9wYWE1IiwKKwkJCQkJCSJzZG1tYzRfZGF0Nl9wYWE2IiwKKwkJCQkJCSJzZG1tYzRfZGF0N19wYWE3IjsKKwkJCQludmlkaWEsZnVuY3Rpb24gPSAic2RtbWM0IjsKKwkJCQludmlkaWEscHVsbCA9IDxURUdSQV9QSU5fUFVMTF9VUD47CisJCQkJbnZpZGlhLHRyaXN0YXRlID0gPFRFR1JBX1BJTl9ESVNBQkxFPjsKKwkJCX07CisJCX07CisJfTsKKworCXNkaGNpQDc4MDAwNDAwIHsKKwkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwkJcGluY3RybC0wID0gPCZzZG1tYzRfZGVmYXVsdD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL252aWRpYSx0ZWdyYTEyNC14dXNiLXBhZGN0bC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9udmlkaWEsdGVncmExMjQteHVzYi1wYWRjdGwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwNjc2ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9udmlkaWEsdGVncmExMjQteHVzYi1wYWRjdGwudHh0CkBAIC0wLDAgKzEsMTI5IEBACitEZXZpY2UgdHJlZSBiaW5kaW5nIGZvciBOVklESUEgVGVncmEgWFVTQiBwYWQgY29udHJvbGxlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIFRlZ3JhIFhVU0IgcGFkIGNvbnRyb2xsZXIgbWFuYWdlcyBhIHNldCBvZiBsYW5lcywgZWFjaCBvZiB3aGljaCBjYW4gYmUKK2Fzc2lnbmVkIHRvIG9uZSBvdXQgb2YgYSBzZXQgb2YgZGlmZmVyZW50IHBhZHMuIFNvbWUgb2YgdGhlc2UgcGFkcyBoYXZlIGFuCithc3NvY2lhdGVkIFBIWSB0aGF0IG11c3QgYmUgcG93ZXJlZCB1cCBiZWZvcmUgdGhlIHBhZCBjYW4gYmUgdXNlZC4KKworVGhpcyBkb2N1bWVudCBkZWZpbmVzIHRoZSBkZXZpY2Utc3BlY2lmaWMgYmluZGluZyBmb3IgdGhlIFhVU0IgcGFkIGNvbnRyb2xsZXIuCisKK1JlZmVyIHRvIHBpbmN0cmwtYmluZGluZ3MudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBnZW5lcmljIGluZm9ybWF0aW9uIGFib3V0CitwaW4gY29udHJvbGxlciBkZXZpY2UgdHJlZSBiaW5kaW5ncyBhbmQgLi4vcGh5L3BoeS1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMgb24KK2hvdyB0byBkZXNjcmliZSBhbmQgcmVmZXJlbmNlIFBIWXMgaW4gZGV2aWNlIHRyZWVzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0gY29tcGF0aWJsZTogRm9yIFRlZ3JhMTI0LCBtdXN0IGNvbnRhaW4gIm52aWRpYSx0ZWdyYTEyNC14dXNiLXBhZGN0bCIuCisgIE90aGVyd2lzZSwgbXVzdCBjb250YWluICcibnZpZGlhLDxjaGlwPi14dXNiLXBhZGN0bCIsCisgICJudmlkaWEtdGVncmExMjQteHVzYi1wYWRjdGwiJywgd2hlcmUgPGNoaXA+IGlzIHRlZ3JhMTMyIG9yIHRlZ3JhMjEwLgorLSByZWc6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBjb250cm9sbGVyJ3MgcmVnaXN0ZXJzLgorLSByZXNldHM6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiByZXNldC1uYW1lcy4KKyAgU2VlIC4uL3Jlc2V0L3Jlc2V0LnR4dCBmb3IgZGV0YWlscy4KKy0gcmVzZXQtbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIC0gcGFkY3RsCistICNwaHktY2VsbHM6IFNob3VsZCBiZSAxLiBUaGUgc3BlY2lmaWVyIGlzIHRoZSBpbmRleCBvZiB0aGUgUEhZIHRvIHJlZmVyZW5jZS4KKyAgU2VlIDxkdC1iaW5kaW5ncy9waW5jdHJsL3BpbmN0cmwtdGVncmEteHVzYi5oPiBmb3IgdGhlIGxpc3Qgb2YgdmFsaWQgdmFsdWVzLgorCitMYW5lIG11eGluZzoKKy0tLS0tLS0tLS0tLQorCitDaGlsZCBub2RlcyBjb250YWluIHRoZSBwaW5tdXggY29uZmlndXJhdGlvbnMgZm9sbG93aW5nIHRoZSBjb252ZW50aW9ucyBmcm9tCit0aGUgcGluY3RybC1iaW5kaW5ncy50eHQgZG9jdW1lbnQuIFR5cGljYWxseSBhIHNpbmdsZSwgc3RhdGljIGNvbmZpZ3VyYXRpb24gaXMKK2dpdmVuIGFuZCBhcHBsaWVkIGF0IGJvb3QgdGltZS4KKworRWFjaCBzdWJub2RlIGRlc2NyaWJlcyBncm91cHMgb2YgbGFuZXMgYWxvbmcgd2l0aCBwYXJhbWV0ZXJzIGFuZCBwYWRzIHRoYXQKK3RoZXkgc2hvdWxkIGJlIGFzc2lnbmVkIHRvLiBUaGUgbmFtZSBvZiB0aGVzZSBzdWJub2RlcyBpcyBub3QgaW1wb3J0YW50LiBBbGwKK3N1Ym5vZGVzIHNob3VsZCBiZSBwYXJzZWQgc29sZWx5IGJhc2VkIG9uIHRoZWlyIGNvbnRlbnQuCisKK0VhY2ggc3Vibm9kZSBvbmx5IGFwcGxpZXMgdGhlIHBhcmFtZXRlcnMgdGhhdCBhcmUgZXhwbGljaXRseSBsaXN0ZWQuIEluIG90aGVyCit3b3JkcywgaWYgYSBzdWJub2RlIHRoYXQgbGlzdHMgYSBmdW5jdGlvbiBidXQgbm8gcGluIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycworaW1wbGllcyBubyBpbmZvcm1hdGlvbiBhYm91dCBhbnkgcGluIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4gU2ltaWxhcmx5LCBhCitzdWJub2RlIHRoYXQgZGVzY3JpYmVzIG9ubHkgYW4gSUREUSBwYXJhbWV0ZXIgaW1wbGllcyBubyBpbmZvcm1hdGlvbiBhYm91dAord2hhdCBmdW5jdGlvbiB0aGUgcGlucyBhcmUgYXNzaWduZWQgdG8uIEZvciB0aGlzIHJlYXNvbiBldmVuIHNlZW1pbmdseSBib29sZWFuCit2YWx1ZXMgYXJlIGFjdHVhbGx5IHRyaXN0YXRlcyBpbiB0aGlzIGJpbmRpbmc6IHVuc3BlY2lmaWVkLCBvZmYgb3Igb24uCitVbnNwZWNpZmllZCBpcyByZXByZXNlbnRlZCBhcyBhbiBhYnNlbnQgcHJvcGVydHksIGFuZCBvZmYvb24gYXJlIHJlcHJlc2VudGVkCithcyBpbnRlZ2VyIHZhbHVlcyAwIGFuZCAxLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBudmlkaWEsbGFuZXM6IEFuIGFycmF5IG9mIHN0cmluZ3MuIEVhY2ggc3RyaW5nIGlzIHRoZSBuYW1lIG9mIGEgbGFuZS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gbnZpZGlhLGZ1bmN0aW9uOiBBIHN0cmluZyB0aGF0IGlzIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiAocGFkKSB0aGF0IHRoZQorICBwaW4gb3IgZ3JvdXAgc2hvdWxkIGJlIGFzc2lnbmVkIHRvLiBWYWxpZCB2YWx1ZXMgZm9yIGZ1bmN0aW9uIG5hbWVzIGFyZQorICBsaXN0ZWQgYmVsb3cuCistIG52aWRpYSxpZGRxOiBFbmFibGVzIElERFEgbW9kZSBvZiB0aGUgbGFuZS4gKDA6IG5vLCAxOiB5ZXMpCisKK05vdGUgdGhhdCBub3QgYWxsIG9mIHRoZXNlIHByb3BlcnRpZXMgYXJlIHZhbGlkIGZvciBhbGwgbGFuZXMuIExhbmVzIGNhbiBiZQorZGl2aWRlZCBpbnRvIHRocmVlIGdyb3VwczoKKworICAtIG90Zy0wLCBvdGctMSwgb3RnLTI6CisKKyAgICBWYWxpZCBmdW5jdGlvbnMgZm9yIHRoaXMgZ3JvdXAgYXJlOiAic25wcyIsICJ4dXNiIiwgInVhcnQiLCAicnN2ZCIuCisKKyAgICBUaGUgbnZpZGlhLGlkZHEgcHJvcGVydHkgZG9lcyBub3QgYXBwbHkgdG8gdGhpcyBncm91cC4KKworICAtIHVscGktMCwgaHNpYy0wLCBoc2ljLTE6CisKKyAgICBWYWxpZCBmdW5jdGlvbnMgZm9yIHRoaXMgZ3JvdXAgYXJlOiAic25wcyIsICJ4dXNiIi4KKworICAgIFRoZSBudmlkaWEsaWRkcSBwcm9wZXJ0eSBkb2VzIG5vdCBhcHBseSB0byB0aGlzIGdyb3VwLgorCisgIC0gcGNpZS0wLCBwY2llLTEsIHBjaWUtMiwgcGNpZS0zLCBwY2llLTQsIHNhdGEtMDoKKworICAgIFZhbGlkIGZ1bmN0aW9ucyBmb3IgdGhpcyBncm91cCBhcmU6ICJwY2llIiwgInVzYjMiLCAic2F0YSIsICJyc3ZkIi4KKworCitFeGFtcGxlOgorPT09PT09PT0KKworU29DIGZpbGUgZXh0cmFjdDoKKy0tLS0tLS0tLS0tLS0tLS0tCisKKwlwYWRjdGxAMCw3MDA5ZjAwMCB7CisJCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMTI0LXh1c2ItcGFkY3RsIjsKKwkJcmVnID0gPDB4MCAweDcwMDlmMDAwIDB4MCAweDEwMDA+OworCQlyZXNldHMgPSA8JnRlZ3JhX2NhciAxNDI+OworCQlyZXNldC1uYW1lcyA9ICJwYWRjdGwiOworCisJCSNwaHktY2VsbHMgPSA8MT47CisJfTsKKworQm9hcmQgZmlsZSBleHRyYWN0OgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJcGNpZS1jb250cm9sbGVyQDAsMDEwMDMwMDAgeworCQkuLi4KKworCQlwaHlzID0gPCZwYWRjdGwgMD47CisJCXBoeS1uYW1lcyA9ICJwY2llIjsKKworCQkuLi4KKwl9OworCisJLi4uCisKKwlwYWRjdGw6IHBhZGN0bEAwLDcwMDlmMDAwIHsKKwkJcGluY3RybC0wID0gPCZwYWRjdGxfZGVmYXVsdD47CisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisKKwkJcGFkY3RsX2RlZmF1bHQ6IHBpbm11eCB7CisJCQl1c2IzIHsKKwkJCQludmlkaWEsbGFuZXMgPSAicGNpZS0wIiwgInBjaWUtMSI7CisJCQkJbnZpZGlhLGZ1bmN0aW9uID0gInVzYjMiOworCQkJCW52aWRpYSxpZGRxID0gPDA+OworCQkJfTsKKworCQkJcGNpZSB7CisJCQkJbnZpZGlhLGxhbmVzID0gInBjaWUtMiIsICJwY2llLTMiLAorCQkJCQkgICAgICAgInBjaWUtNCI7CisJCQkJbnZpZGlhLGZ1bmN0aW9uID0gInBjaWUiOworCQkJCW52aWRpYSxpZGRxID0gPDA+OworCQkJfTsKKworCQkJc2F0YSB7CisJCQkJbnZpZGlhLGxhbmVzID0gInNhdGEtMCI7CisJCQkJbnZpZGlhLGZ1bmN0aW9uID0gInNhdGEiOworCQkJCW52aWRpYSxpZGRxID0gPDA+OworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbnZpZGlhLHRlZ3JhMjAtcGlubXV4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL252aWRpYSx0ZWdyYTIwLXBpbm11eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M4Y2UyOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL252aWRpYSx0ZWdyYTIwLXBpbm11eC50eHQKQEAgLTAsMCArMSwxNDMgQEAKK05WSURJQSBUZWdyYTIwIHBpbm11eCBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJudmlkaWEsdGVncmEyMC1waW5tdXgiCistIHJlZzogU2hvdWxkIGNvbnRhaW4gdGhlIHJlZ2lzdGVyIHBoeXNpY2FsIGFkZHJlc3MgYW5kIGxlbmd0aCBmb3IgZWFjaCBvZgorICB0aGUgdHJpLXN0YXRlLCBtdXgsIHB1bGwtdXAvZG93biwgYW5kIHBhZCBjb250cm9sIHJlZ2lzdGVyIHNldHMuCisKK1BsZWFzZSByZWZlciB0byBwaW5jdHJsLWJpbmRpbmdzLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgZGV0YWlscyBvZiB0aGUKK2NvbW1vbiBwaW5jdHJsIGJpbmRpbmdzIHVzZWQgYnkgY2xpZW50IGRldmljZXMsIGluY2x1ZGluZyB0aGUgbWVhbmluZyBvZiB0aGUKK3BocmFzZSAicGluIGNvbmZpZ3VyYXRpb24gbm9kZSIuCisKK1RlZ3JhJ3MgcGluIGNvbmZpZ3VyYXRpb24gbm9kZXMgYWN0IGFzIGEgY29udGFpbmVyIGZvciBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mCitzdWJub2Rlcy4gRWFjaCBvZiB0aGVzZSBzdWJub2RlcyByZXByZXNlbnRzIHNvbWUgZGVzaXJlZCBjb25maWd1cmF0aW9uIGZvciBhCitwaW4sIGEgZ3JvdXAsIG9yIGEgbGlzdCBvZiBwaW5zIG9yIGdyb3Vwcy4gVGhpcyBjb25maWd1cmF0aW9uIGNhbiBpbmNsdWRlIHRoZQorbXV4IGZ1bmN0aW9uIHRvIHNlbGVjdCBvbiB0aG9zZSBwaW4ocykvZ3JvdXAocyksIGFuZCB2YXJpb3VzIHBpbiBjb25maWd1cmF0aW9uCitwYXJhbWV0ZXJzLCBzdWNoIGFzIHB1bGwtdXAsIHRyaXN0YXRlLCBkcml2ZSBzdHJlbmd0aCwgZXRjLgorCitUaGUgbmFtZSBvZiBlYWNoIHN1Ym5vZGUgaXMgbm90IGltcG9ydGFudDsgYWxsIHN1Ym5vZGVzIHNob3VsZCBiZSBlbnVtZXJhdGVkCithbmQgcHJvY2Vzc2VkIHB1cmVseSBiYXNlZCBvbiB0aGVpciBjb250ZW50LgorCitFYWNoIHN1Ym5vZGUgb25seSBhZmZlY3RzIHRob3NlIHBhcmFtZXRlcnMgdGhhdCBhcmUgZXhwbGljaXRseSBsaXN0ZWQuIEluCitvdGhlciB3b3JkcywgYSBzdWJub2RlIHRoYXQgbGlzdHMgYSBtdXggZnVuY3Rpb24gYnV0IG5vIHBpbiBjb25maWd1cmF0aW9uCitwYXJhbWV0ZXJzIGltcGxpZXMgbm8gaW5mb3JtYXRpb24gYWJvdXQgYW55IHBpbiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuCitTaW1pbGFybHksIGEgcGluIHN1Ym5vZGUgdGhhdCBkZXNjcmliZXMgYSBwdWxsdXAgcGFyYW1ldGVyIGltcGxpZXMgbm8KK2luZm9ybWF0aW9uIGFib3V0IGUuZy4gdGhlIG11eCBmdW5jdGlvbiBvciB0cmlzdGF0ZSBwYXJhbWV0ZXIuIEZvciB0aGlzCityZWFzb24sIGV2ZW4gc2VlbWluZ2x5IGJvb2xlYW4gdmFsdWVzIGFyZSBhY3R1YWxseSB0cmlzdGF0ZXMgaW4gdGhpcyBiaW5kaW5nOgordW5zcGVjaWZpZWQsIG9mZiwgb3Igb24uIFVuc3BlY2lmaWVkIGlzIHJlcHJlc2VudGVkIGFzIGFuIGFic2VudCBwcm9wZXJ0eSwKK2FuZCBvZmYvb24gYXJlIHJlcHJlc2VudGVkIGFzIGludGVnZXIgdmFsdWVzIDAgYW5kIDEuCisKK1JlcXVpcmVkIHN1Ym5vZGUtcHJvcGVydGllczoKKy0gbnZpZGlhLHBpbnMgOiBBbiBhcnJheSBvZiBzdHJpbmdzLiBFYWNoIHN0cmluZyBjb250YWlucyB0aGUgbmFtZSBvZiBhIHBpbiBvcgorICAgIGdyb3VwLiBWYWxpZCB2YWx1ZXMgZm9yIHRoZXNlIG5hbWVzIGFyZSBsaXN0ZWQgYmVsb3cuCisKK09wdGlvbmFsIHN1Ym5vZGUtcHJvcGVydGllczoKKy0gbnZpZGlhLGZ1bmN0aW9uOiBBIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0byBtdXggdG8gdGhlCisgIHBpbiBvciBncm91cC4gVmFsaWQgdmFsdWVzIGZvciBmdW5jdGlvbiBuYW1lcyBhcmUgbGlzdGVkIGJlbG93LiBTZWUgdGhlIFRlZ3JhCisgIFRSTSB0byBkZXRlcm1pbmUgd2hpY2ggYXJlIHZhbGlkIGZvciBlYWNoIHBpbiBvciBncm91cC4KKy0gbnZpZGlhLHB1bGw6IEludGVnZXIsIHJlcHJlc2VudGluZyB0aGUgcHVsbC1kb3duL3VwIHRvIGFwcGx5IHRvIHRoZSBwaW4uCisgICAgMDogbm9uZSwgMTogZG93biwgMjogdXAuCistIG52aWRpYSx0cmlzdGF0ZTogSW50ZWdlci4KKyAgICAwOiBkcml2ZSwgMTogdHJpc3RhdGUuCistIG52aWRpYSxoaWdoLXNwZWVkLW1vZGU6IEludGVnZXIuIEVuYWJsZSBoaWdoIHNwZWVkIG1vZGUgdGhlIHBpbnMuCisgICAgMDogbm8sIDE6IHllcy4KKy0gbnZpZGlhLHNjaG1pdHQ6IEludGVnZXIuIEVuYWJsZXMgU2NobWl0dCBUcmlnZ2VyIG9uIHRoZSBpbnB1dC4KKyAgICAwOiBubywgMTogeWVzLgorLSBudmlkaWEsbG93LXBvd2VyLW1vZGU6IEludGVnZXIuIFZhbGlkIHZhbHVlcyAwLTMuIDAgaXMgbGVhc3QgcG93ZXIsIDMgaXMKKyAgICBtb3N0IHBvd2VyLiBDb250cm9scyB0aGUgZHJpdmUgcG93ZXIgb3IgY3VycmVudC4gU2VlICJMb3cgUG93ZXIgTW9kZSIKKyAgICBvciAiTFBNRDEiIGFuZCAiTFBNRDAiIGluIHRoZSBUZWdyYSBUUk0uCistIG52aWRpYSxwdWxsLWRvd24tc3RyZW5ndGg6IEludGVnZXIuIENvbnRyb2xzIGRyaXZlIHN0cmVuZ3RoLiAwIGlzIHdlYWtlc3QuCisgICAgVGhlIHJhbmdlIG9mIHZhbGlkIHZhbHVlcyBkZXBlbmRzIG9uIHRoZSBwaW5ncm91cC4gU2VlICJDQUxfRFJWRE4iIGluIHRoZQorICAgIFRlZ3JhIFRSTS4KKy0gbnZpZGlhLHB1bGwtdXAtc3RyZW5ndGg6IEludGVnZXIuIENvbnRyb2xzIGRyaXZlIHN0cmVuZ3RoLiAwIGlzIHdlYWtlc3QuCisgICAgVGhlIHJhbmdlIG9mIHZhbGlkIHZhbHVlcyBkZXBlbmRzIG9uIHRoZSBwaW5ncm91cC4gU2VlICJDQUxfRFJWVVAiIGluIHRoZQorICAgIFRlZ3JhIFRSTS4KKy0gbnZpZGlhLHNsZXctcmF0ZS1yaXNpbmc6IEludGVnZXIuIENvbnRyb2xzIHJpc2luZyBzaWduYWwgc2xldyByYXRlLiAwIGlzCisgICAgZmFzdGVzdC4gVGhlIHJhbmdlIG9mIHZhbGlkIHZhbHVlcyBkZXBlbmRzIG9uIHRoZSBwaW5ncm91cC4gU2VlCisgICAgIkRSVkROX1NMV1IiIGluIHRoZSBUZWdyYSBUUk0uCistIG52aWRpYSxzbGV3LXJhdGUtZmFsbGluZzogSW50ZWdlci4gQ29udHJvbHMgZmFsbGluZyBzaWduYWwgc2xldyByYXRlLiAwIGlzCisgICAgZmFzdGVzdC4gVGhlIHJhbmdlIG9mIHZhbGlkIHZhbHVlcyBkZXBlbmRzIG9uIHRoZSBwaW5ncm91cC4gU2VlCisgICAgIkRSVlVQX1NMV0YiIGluIHRoZSBUZWdyYSBUUk0uCisKK05vdGUgdGhhdCBtYW55IG9mIHRoZXNlIHByb3BlcnRpZXMgYXJlIG9ubHkgdmFsaWQgZm9yIGNlcnRhaW4gc3BlY2lmaWMgcGlucworb3IgZ3JvdXBzLiBTZWUgdGhlIFRlZ3JhIFRSTSBhbmQgdmFyaW91cyBwaW5tdXggc3ByZWFkc2hlZXRzIGZvciBjb21wbGV0ZQorZGV0YWlscyByZWdhcmRpbmcgd2hpY2ggZ3JvdXBzIHN1cHBvcnQgd2hpY2ggZnVuY3Rpb25hbGl0eS4gVGhlIExpbnV4IHBpbmN0cmwKK2RyaXZlciBtYXkgYWxzbyBiZSBhIHVzZWZ1bCByZWZlcmVuY2UsIHNpbmNlIGl0IGNvbnNvbGlkYXRlcywgZGlzYW1iaWd1YXRlcywKK2FuZCBjb3JyZWN0cyBkYXRhIGZyb20gYWxsIHRob3NlIHNvdXJjZXMuCisKK1ZhbGlkIHZhbHVlcyBmb3IgcGluIGFuZCBncm91cCBuYW1lcyBhcmU6CisKKyAgbXV4IGdyb3VwczoKKworICAgIFRoZXNlIGFsbCBzdXBwb3J0IG52aWRpYSxmdW5jdGlvbiwgbnZpZGlhLHRyaXN0YXRlLCBhbmQgbWFueSBzdXBwb3J0CisgICAgbnZpZGlhLHB1bGwuCisKKyAgICBhdGEsIGF0YiwgYXRjLCBhdGQsIGF0ZSwgY2RldjEsIGNkZXYyLCBjcnRwLCBjc3VzLCBkYXAxLCBkYXAyLCBkYXAzLCBkYXA0LAorICAgIGRkYywgZHRhLCBkdGIsIGR0YywgZHRkLCBkdGUsIGR0ZiwgZ21hLCBnbWIsIGdtYywgZ21kLCBnbWUsIGdwdSwgZ3B1NywKKyAgICBncHYsIGhkaW50LCBpMmNwLCBpcnJ4LCBpcnR4LCBrYmNhLCBrYmNiLCBrYmNjLCBrYmNkLCBrYmNlLCBrYmNmLCBsY3NuLAorICAgIGxkMCwgbGQxLCBsZDIsIGxkMywgbGQ0LCBsZDUsIGxkNiwgbGQ3LCBsZDgsIGxkOSwgbGQxMCwgbGQxMSwgbGQxMiwgbGQxMywKKyAgICBsZDE0LCBsZDE1LCBsZDE2LCBsZDE3LCBsZGMsIGxkaSwgbGhwMCwgbGhwMSwgbGhwMiwgbGhzLCBsbTAsIGxtMSwgbHBwLAorICAgIGxwdzAsIGxwdzEsIGxwdzIsIGxzYzAsIGxzYzEsIGxzY2ssIGxzZGEsIGxzZGksIGxzcGksIGx2cDAsIGx2cDEsIGx2cywKKyAgICBvd2MsIHBtYywgcHRhLCBybSwgc2RiLCBzZGMsIHNkZCwgc2RpbzEsIHNseGEsIHNseGMsIHNseGQsIHNseGssIHNwZGksCisgICAgc3Bkbywgc3BpYSwgc3BpYiwgc3BpYywgc3BpZCwgc3BpZSwgc3BpZiwgc3BpZywgc3BpaCwgdWFhLCB1YWIsIHVhYywgdWFkLAorICAgIHVjYSwgdWNiLCB1ZGEuCisKKyAgdHJpc3RhdGUgZ3JvdXBzOgorCisgICAgVGhlc2Ugb25seSBzdXBwb3J0IG52aWRpYSxwdWxsLgorCisgICAgY2szMiwgZGRyYywgcG1jYSwgcG1jYiwgcG1jYywgcG1jZCwgcG1jZSwgeG0yYywgeG0yZCwgbHMsIGxjLCBsZDE3XzAsCisgICAgbGQxOV8xOCwgbGQyMV8yMCwgbGQyM18yMi4KKworICBkcml2ZSBncm91cHM6CisKKyAgICBXaXRoIHNvbWUgZXhjZXB0aW9ucywgdGhlc2Ugc3VwcG9ydCBudmlkaWEsaGlnaC1zcGVlZC1tb2RlLAorICAgIG52aWRpYSxzY2htaXR0LCBudmlkaWEsbG93LXBvd2VyLW1vZGUsIG52aWRpYSxwdWxsLWRvd24tc3RyZW5ndGgsCisgICAgbnZpZGlhLHB1bGwtdXAtc3RyZW5ndGgsIG52aWRpYSxzbGV3LXJhdGUtcmlzaW5nLCBudmlkaWEsc2xldy1yYXRlLWZhbGxpbmcuCisKKyAgICBkcml2ZV9hbzEsIGRyaXZlX2FvMiwgZHJpdmVfYXQxLCBkcml2ZV9hdDIsIGRyaXZlX2NkZXYxLCBkcml2ZV9jZGV2MiwKKyAgICBkcml2ZV9jc3VzLCBkcml2ZV9kYXAxLCBkcml2ZV9kYXAyLCBkcml2ZV9kYXAzLCBkcml2ZV9kYXA0LCBkcml2ZV9kYmcsCisgICAgZHJpdmVfbGNkMSwgZHJpdmVfbGNkMiwgZHJpdmVfc2RtbWMyLCBkcml2ZV9zZG1tYzMsIGRyaXZlX3NwaSwgZHJpdmVfdWFhLAorICAgIGRyaXZlX3VhYiwgZHJpdmVfdWFydDIsIGRyaXZlX3VhcnQzLCBkcml2ZV92aTEsIGRyaXZlX3ZpMiwgZHJpdmVfeG0yYSwKKyAgICBkcml2ZV94bTJjLCBkcml2ZV94bTJkLCBkcml2ZV94bTJjbGssIGRyaXZlX3NkaW8xLCBkcml2ZV9jcnQsIGRyaXZlX2RkYywKKyAgICBkcml2ZV9nbWEsIGRyaXZlX2dtYiwgZHJpdmVfZ21jLCBkcml2ZV9nbWQsIGRyaXZlX2dtZSwgZHJpdmVfb3dyLAorICAgIGRyaXZlX3VkYS4KKworVmFsaWQgdmFsdWVzIGZvciBudmlkaWEsZnVuY3Rpb25zIGFyZToKKworICBhaGJfY2xrLCBhcGJfY2xrLCBhdWRpb19zeW5jLCBjcnQsIGRhcDEsIGRhcDIsIGRhcDMsIGRhcDQsIGRhcDUsCisgIGRpc3BsYXlhLCBkaXNwbGF5YiwgZW1jX3Rlc3QwX2RsbCwgZW1jX3Rlc3QxX2RsbCwgZ21pLCBnbWlfaW50LAorICBoZG1pLCBpMmNwLCBpMmMxLCBpMmMyLCBpMmMzLCBpZGUsIGlyZGEsIGtiYywgbWlvLCBtaXBpX2hzLCBuYW5kLAorICBvc2MsIG93ciwgcGNpZSwgcGxsYV9vdXQsIHBsbGNfb3V0MSwgcGxsbV9vdXQxLCBwbGxwX291dDIsIHBsbHBfb3V0MywKKyAgcGxscF9vdXQ0LCBwd20sIHB3cl9pbnRyLCBwd3Jfb24sIHJzdmQxLCByc3ZkMiwgcnN2ZDMsIHJzdmQ0LCBydGNrLAorICBzZGlvMSwgc2RpbzIsIHNkaW8zLCBzZGlvNCwgc2ZsYXNoLCBzcGRpZiwgc3BpMSwgc3BpMiwgc3BpMl9hbHQsCisgIHNwaTMsIHNwaTQsIHRyYWNlLCB0d2MsIHVhcnRhLCB1YXJ0YiwgdWFydGMsIHVhcnRkLCB1YXJ0ZSwgdWxwaSwKKyAgdmksIHZpX3NlbnNvcl9jbGssIHhpbworCitFeGFtcGxlOgorCisJcGluY3RybEA3MDAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMjAtcGlubXV4IjsKKwkJcmVnID0gPCAweDcwMDAwMDE0IDB4MTAgICAgLyogVHJpLXN0YXRlIHJlZ2lzdGVycyAqLworCQkJMHg3MDAwMDA4MCAweDIwICAgIC8qIE11eCByZWdpc3RlcnMgKi8KKwkJCTB4NzAwMDAwYTAgMHgxNCAgICAvKiBQdWxsLXVwL2Rvd24gcmVnaXN0ZXJzICovCisJCQkweDcwMDAwODY4IDB4YTggPjsgLyogUGFkIGNvbnRyb2wgcmVnaXN0ZXJzICovCisJfTsKKworRXhhbXBsZSBib2FyZCBmaWxlIGV4dHJhY3Q6CisKKwlwaW5jdHJsQDcwMDAwMDAwIHsKKwkJc2RpbzRfZGVmYXVsdDogc2RpbzRfZGVmYXVsdCB7CisJCQlhdGIgeworCQkJCW52aWRpYSxwaW5zID0gImF0YiIsICJnbWEiLCAiZ21lIjsKKwkJCQludmlkaWEsZnVuY3Rpb24gPSAic2RpbzQiOworCQkJCW52aWRpYSxwdWxsID0gPDA+OworCQkJCW52aWRpYSx0cmlzdGF0ZSA9IDwwPjsKKwkJCX07CisJCX07CisJfTsKKworCXNkaGNpQGM4MDAwNjAwIHsKKwkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwkJcGluY3RybC0wID0gPCZzZGlvNF9kZWZhdWx0PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbnZpZGlhLHRlZ3JhMjEwLXBpbm11eC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9udmlkaWEsdGVncmEyMTAtcGlubXV4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjJkODJkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbnZpZGlhLHRlZ3JhMjEwLXBpbm11eC50eHQKQEAgLTAsMCArMSwxNjYgQEAKK05WSURJQSBUZWdyYTIxMCBwaW5tdXggY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAibnZpZGlhLHRlZ3JhMjEwLXBpbm11eCIKKy0gcmVnOiBTaG91bGQgY29udGFpbiBhIGxpc3Qgb2YgYmFzZSBhZGRyZXNzIGFuZCBzaXplIHBhaXJzIGZvcjoKKyAgLSBmaXJzdCBlbnRyeTogVGhlIEFQQl9NSVNDX0dQXypfUEFEQ1RSTCByZWdpc3RlcnMgKHBhZCBjb250cm9sKQorICAtIHNlY29uZCBlbnRyeTogVGhlIFBJTk1VWF9BVVhfKiByZWdpc3RlcnMgKHBpbm11eCkKKworUGxlYXNlIHJlZmVyIHRvIHBpbmN0cmwtYmluZGluZ3MudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBkZXRhaWxzIG9mIHRoZQorY29tbW9uIHBpbmN0cmwgYmluZGluZ3MgdXNlZCBieSBjbGllbnQgZGV2aWNlcywgaW5jbHVkaW5nIHRoZSBtZWFuaW5nIG9mIHRoZQorcGhyYXNlICJwaW4gY29uZmlndXJhdGlvbiBub2RlIi4KKworVGVncmEncyBwaW4gY29uZmlndXJhdGlvbiBub2RlcyBhY3QgYXMgYSBjb250YWluZXIgZm9yIGFuIGFyYml0cmFyeSBudW1iZXIgb2YKK3N1Ym5vZGVzLiBFYWNoIG9mIHRoZXNlIHN1Ym5vZGVzIHJlcHJlc2VudHMgc29tZSBkZXNpcmVkIGNvbmZpZ3VyYXRpb24gZm9yIGEKK3BpbiwgYSBncm91cCwgb3IgYSBsaXN0IG9mIHBpbnMgb3IgZ3JvdXBzLiBUaGlzIGNvbmZpZ3VyYXRpb24gY2FuIGluY2x1ZGUgdGhlCittdXggZnVuY3Rpb24gdG8gc2VsZWN0IG9uIHRob3NlIHBpbihzKS9ncm91cChzKSwgYW5kIHZhcmlvdXMgcGluIGNvbmZpZ3VyYXRpb24KK3BhcmFtZXRlcnMsIHN1Y2ggYXMgcHVsbC11cCwgdHJpc3RhdGUsIGRyaXZlIHN0cmVuZ3RoLCBldGMuCisKK1RoZSBuYW1lIG9mIGVhY2ggc3Vibm9kZSBpcyBub3QgaW1wb3J0YW50OyBhbGwgc3Vibm9kZXMgc2hvdWxkIGJlIGVudW1lcmF0ZWQKK2FuZCBwcm9jZXNzZWQgcHVyZWx5IGJhc2VkIG9uIHRoZWlyIGNvbnRlbnQuCisKK0VhY2ggc3Vibm9kZSBvbmx5IGFmZmVjdHMgdGhvc2UgcGFyYW1ldGVycyB0aGF0IGFyZSBleHBsaWNpdGx5IGxpc3RlZC4gSW4KK290aGVyIHdvcmRzLCBhIHN1Ym5vZGUgdGhhdCBsaXN0cyBhIG11eCBmdW5jdGlvbiBidXQgbm8gcGluIGNvbmZpZ3VyYXRpb24KK3BhcmFtZXRlcnMgaW1wbGllcyBubyBpbmZvcm1hdGlvbiBhYm91dCBhbnkgcGluIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4KK1NpbWlsYXJseSwgYSBwaW4gc3Vibm9kZSB0aGF0IGRlc2NyaWJlcyBhIHB1bGx1cCBwYXJhbWV0ZXIgaW1wbGllcyBubworaW5mb3JtYXRpb24gYWJvdXQgZS5nLiB0aGUgbXV4IGZ1bmN0aW9uIG9yIHRyaXN0YXRlIHBhcmFtZXRlci4gRm9yIHRoaXMKK3JlYXNvbiwgZXZlbiBzZWVtaW5nbHkgYm9vbGVhbiB2YWx1ZXMgYXJlIGFjdHVhbGx5IHRyaXN0YXRlcyBpbiB0aGlzIGJpbmRpbmc6Cit1bnNwZWNpZmllZCwgb2ZmLCBvciBvbi4gVW5zcGVjaWZpZWQgaXMgcmVwcmVzZW50ZWQgYXMgYW4gYWJzZW50IHByb3BlcnR5LAorYW5kIG9mZi9vbiBhcmUgcmVwcmVzZW50ZWQgYXMgaW50ZWdlciB2YWx1ZXMgMCBhbmQgMS4KKworU2VlIHRoZSBUUk0gdG8gZGV0ZXJtaW5lIHdoaWNoIHByb3BlcnRpZXMgYW5kIHZhbHVlcyBhcHBseSB0byBlYWNoIHBpbi9ncm91cC4KK01hY3JvIHZhbHVlcyBmb3IgcHJvcGVydHkgdmFsdWVzIGFyZSBkZWZpbmVkIGluCitpbmNsdWRlL2R0LWJpbmRpbmcvcGluY3RybC9waW5jdHJsLXRlZ3JhLmguCisKK1JlcXVpcmVkIHN1Ym5vZGUtcHJvcGVydGllczoKKy0gbnZpZGlhLHBpbnMgOiBBbiBhcnJheSBvZiBzdHJpbmdzLiBFYWNoIHN0cmluZyBjb250YWlucyB0aGUgbmFtZSBvZiBhIHBpbiBvcgorICAgIGdyb3VwLiBWYWxpZCB2YWx1ZXMgZm9yIHRoZXNlIG5hbWVzIGFyZSBsaXN0ZWQgYmVsb3cuCisKK09wdGlvbmFsIHN1Ym5vZGUtcHJvcGVydGllczoKKy0gbnZpZGlhLGZ1bmN0aW9uOiBBIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0byBtdXggdG8gdGhlCisgICAgcGluIG9yIGdyb3VwLgorLSBudmlkaWEscHVsbDogSW50ZWdlciwgcmVwcmVzZW50aW5nIHRoZSBwdWxsLWRvd24vdXAgdG8gYXBwbHkgdG8gdGhlIHBpbi4KKyAgICAwOiBub25lLCAxOiBkb3duLCAyOiB1cC4KKy0gbnZpZGlhLHRyaXN0YXRlOiBJbnRlZ2VyLgorICAgIDA6IGRyaXZlLCAxOiB0cmlzdGF0ZS4KKy0gbnZpZGlhLGVuYWJsZS1pbnB1dDogSW50ZWdlci4gRW5hYmxlIHRoZSBwaW4ncyBpbnB1dCBwYXRoLgorICAgIGVuYWJsZSA6VEVHUkFfUElOX0VOQUJMRTAgYW5kCisgICAgZGlzYWJsZSBvciBvdXRwdXQgb25seTogVEVHUkFfUElOX0RJU0FCTEUuCistIG52aWRpYSxvcGVuLWRyYWluOiBJbnRlZ2VyLgorICAgIGVuYWJsZTogVEVHUkFfUElOX0VOQUJMRS4KKyAgICBkaXNhYmxlOiBURUdSQV9QSU5fRElTQUJMRS4KKy0gbnZpZGlhLGxvY2s6IEludGVnZXIuIExvY2sgdGhlIHBpbiBjb25maWd1cmF0aW9uIGFnYWluc3QgZnVydGhlciBjaGFuZ2VzCisgICAgdW50aWwgcmVzZXQuCisgICAgZW5hYmxlOiBURUdSQV9QSU5fRU5BQkxFLgorICAgIGRpc2FibGU6IFRFR1JBX1BJTl9ESVNBQkxFLgorLSBudmlkaWEsaW8taHY6IEludGVnZXIuIFNlbGVjdCBoaWdoLXZvbHRhZ2UgcmVjZWl2ZXJzLgorICAgIG5vcm1hbDogVEVHUkFfUElOX0RJU0FCTEUKKyAgICBoaWdoOiBURUdSQV9QSU5fRU5BQkxFCistIG52aWRpYSxoaWdoLXNwZWVkLW1vZGU6IEludGVnZXIuIEVuYWJsZSBoaWdoIHNwZWVkIG1vZGUgdGhlIHBpbnMuCisgICAgbm9ybWFsOiBURUdSQV9QSU5fRElTQUJMRQorICAgIGhpZ2g6IFRFR1JBX1BJTl9FTkFCTEUKKy0gbnZpZGlhLHNjaG1pdHQ6IEludGVnZXIuIEVuYWJsZXMgU2NobWl0dCBUcmlnZ2VyIG9uIHRoZSBpbnB1dC4KKyAgICBub3JtYWw6IFRFR1JBX1BJTl9ESVNBQkxFCisgICAgaGlnaDogVEVHUkFfUElOX0VOQUJMRQorLSBudmlkaWEsZHJpdmUtdHlwZTogSW50ZWdlci4gVmFsaWQgcmFuZ2UgMC4uLjMuCistIG52aWRpYSxwdWxsLWRvd24tc3RyZW5ndGg6IEludGVnZXIuIENvbnRyb2xzIGRyaXZlIHN0cmVuZ3RoLiAwIGlzIHdlYWtlc3QuCisgICAgVGhlIHJhbmdlIG9mIHZhbGlkIHZhbHVlcyBkZXBlbmRzIG9uIHRoZSBwaW5ncm91cC4gU2VlICJDQUxfRFJWRE4iIGluIHRoZQorICAgIFRlZ3JhIFRSTS4KKy0gbnZpZGlhLHB1bGwtdXAtc3RyZW5ndGg6IEludGVnZXIuIENvbnRyb2xzIGRyaXZlIHN0cmVuZ3RoLiAwIGlzIHdlYWtlc3QuCisgICAgVGhlIHJhbmdlIG9mIHZhbGlkIHZhbHVlcyBkZXBlbmRzIG9uIHRoZSBwaW5ncm91cC4gU2VlICJDQUxfRFJWVVAiIGluIHRoZQorICAgIFRlZ3JhIFRSTS4KKy0gbnZpZGlhLHNsZXctcmF0ZS1yaXNpbmc6IEludGVnZXIuIENvbnRyb2xzIHJpc2luZyBzaWduYWwgc2xldyByYXRlLiAwIGlzCisgICAgZmFzdGVzdC4gVGhlIHJhbmdlIG9mIHZhbGlkIHZhbHVlcyBkZXBlbmRzIG9uIHRoZSBwaW5ncm91cC4gU2VlCisgICAgIkRSVkROX1NMV1IiIGluIHRoZSBUZWdyYSBUUk0uCistIG52aWRpYSxzbGV3LXJhdGUtZmFsbGluZzogSW50ZWdlci4gQ29udHJvbHMgZmFsbGluZyBzaWduYWwgc2xldyByYXRlLiAwIGlzCisgICAgZmFzdGVzdC4gVGhlIHJhbmdlIG9mIHZhbGlkIHZhbHVlcyBkZXBlbmRzIG9uIHRoZSBwaW5ncm91cC4gU2VlCisgICAgIkRSVlVQX1NMV0YiIGluIHRoZSBUZWdyYSBUUk0uCisKK1ZhbGlkIHZhbHVlcyBmb3IgcGluIGFuZCBncm91cCBuYW1lcyAobnZpZGlhLHBpbikgYXJlOgorCisgIE11eCBncm91cHM6CisKKyAgICBUaGVzZSBjb3JyZXNwb25kIHRvIFRlZ3JhIFBJTk1VWF9BVVhfKiAocGlubXV4KSByZWdpc3RlcnMuIEFueSBwcm9wZXJ0eQorICAgIHRoYXQgZXhpc3RzIGluIHRob3NlIHJlZ2lzdGVycyBtYXkgYmUgc2V0IGZvciB0aGUgZm9sbG93aW5nIHBpbiBuYW1lcy4KKworICAgIEluIFRlZ3JhMjEwLCBtYW55IHBpbnMgYWxzbyBoYXZlIGEgZGVkaWNhdGVkIEFQQl9NSVNDX0dQXypfUEFEQ1RSTAorICAgIHJlZ2lzdGVyLiBXaGVyZSB0aGF0IGlzIHRydWUsIGFuZCBwcm9wZXJ0eSB0aGF0IGV4aXN0cyBpbiB0aGF0IHJlZ2lzdGVyCisgICAgbWF5IGFsc28gYmUgc2V0IG9uIHRoZSBmb2xsb3dpbmcgcGluIG5hbWVzLgorCisgICAgYWxzX3Byb3hfaW50X3B4MywgYXBfcmVhZHlfcHY1LCBhcF93YWtlX2J0X3BoMywgYXBfd2FrZV9uZmNfcGg3LAorICAgIGF1ZF9tY2xrX3BiYjAsIGJhdHRfYmNsLCBidF9yc3RfcGg0LCBidF93YWtlX2FwX3BoNSwgYnV0dG9uX2hvbWVfcHkxLAorICAgIGJ1dHRvbl9wb3dlcl9vbl9weDUsIGJ1dHRvbl9zbGlkZV9zd19weTAsIGJ1dHRvbl92b2xfZG93bl9weDcsCisgICAgYnV0dG9uX3ZvbF91cF9weDYsIGNhbTFfbWNsa19wczAsIGNhbTFfcHdkbl9wczcsIGNhbTFfc3Ryb2JlX3B0MSwKKyAgICBjYW0yX21jbGtfcHMxLCBjYW0yX3B3ZG5fcHQwLCBjYW1fYWZfZW5fcHM1LCBjYW1fZmxhc2hfZW5fcHM2LAorICAgIGNhbV9pMmNfc2NsX3BzMiwgY2FtX2kyY19zZGFfcHMzLCBjYW1fcnN0X3BzNGNhbV9yc3RfcHM0LCBjbGtfMzJrX2luLAorICAgIGNsa18zMmtfb3V0X3B5NSwgY2xrX3JlcSwgY29yZV9wd3JfcmVxLCBjcHVfcHdyX3JlcSwgZGFwMV9kaW5fcGIxLAorICAgIGRhcDFfZG91dF9wYjIsIGRhcDFfZnNfcGIwLCBkYXAxX3NjbGtfcGIzLCBkYXAyX2Rpbl9wYWEyLCBkYXAyX2RvdXRfcGFhMywKKyAgICBkYXAyX2ZzX3BhYTAsIGRhcDJfc2Nsa19wYWExLCBkYXA0X2Rpbl9wajUsIGRhcDRfZG91dF9wajYsIGRhcDRfZnNfcGo0LAorICAgIGRhcDRfc2Nsa19wajcsIGRtaWMxX2Nsa19wZTAsIGRtaWMxX2RhdF9wZTEsIGRtaWMyX2Nsa19wZTIsIGRtaWMyX2RhdF9wZTMsCisgICAgZG1pYzNfY2xrX3BlNCwgZG1pYzNfZGF0X3BlNSwgZHBfaHBkMF9wY2M2LCBkdmZzX2Nsa19wYmIyLCBkdmZzX3B3bV9wYmIxLAorICAgIGdlbjFfaTJjX3NjbF9wajEsIGdlbjFfaTJjX3NkYV9wajAsIGdlbjJfaTJjX3NjbF9wajIsIGdlbjJfaTJjX3NkYV9wajMsCisgICAgZ2VuM19pMmNfc2NsX3BmMCwgZ2VuM19pMmNfc2RhX3BmMSwgZ3Bpb194MV9hdWRfcGJiMywgZ3Bpb194M19hdWRfcGJiNCwKKyAgICBncHNfZW5fcGkyLCBncHNfcnN0X3BpMywgaGRtaV9jZWNfcGNjMCwgaGRtaV9pbnRfZHBfaHBkX3BjYzEsIGp0YWdfcnRjaywKKyAgICBsY2RfYmxfZW5fcHYxLCBsY2RfYmxfcHdtX3B2MCwgbGNkX2dwaW8xX3B2MywgbGNkX2dwaW8yX3B2NCwgbGNkX3JzdF9wdjIsCisgICAgbGNkX3RlX3B5MiwgbW9kZW1fd2FrZV9hcF9weDAsIG1vdGlvbl9pbnRfcHgyLCBuZmNfZW5fcGkwLCBuZmNfaW50X3BpMSwKKyAgICBwYTYsIHBjYzcsIHBlNiwgcGU3LCBwZXhfbDBfY2xrcmVxX25fcGExLCBwZXhfbDBfcnN0X25fcGEwLAorICAgIHBleF9sMV9jbGtyZXFfbl9wYTQsIHBleF9sMV9yc3Rfbl9wYTMsIHBleF93YWtlX25fcGEyLCBwaDYsIHBrMCwgcGsxLCBwazIsCisgICAgcGszLCBwazQsIHBrNSwgcGs2LCBwazcsIHBsMCwgcGwxLCBwd3JfaTJjX3NjbF9weTMsIHB3cl9pMmNfc2RhX3B5NCwKKyAgICBwd3JfaW50X24sIHB6MCwgcHoxLCBwejIsIHB6MywgcHo0LCBwejUsIHFzcGlfY3Nfbl9wZWUxLCBxc3BpX2lvMF9wZWUyLAorICAgIHFzcGlfaW8xX3BlZTMsIHFzcGlfaW8yX3BlZTQsIHFzcGlfaW8zX3BlZTUsIHFzcGlfc2NrX3BlZTAsCisgICAgc2F0YV9sZWRfYWN0aXZlX3BhNSwgc2RtbWMxX2Nsa19wbTAsIHNkbW1jMV9jbWRfcG0xLCBzZG1tYzFfZGF0MF9wbTUsCisgICAgc2RtbWMxX2RhdDFfcG00LCBzZG1tYzFfZGF0Ml9wbTMsIHNkbW1jMV9kYXQzX3BtMiwgc2RtbWMzX2Nsa19wcDAsCisgICAgc2RtbWMzX2NtZF9wcDEsIHNkbW1jM19kYXQwX3BwNSwgc2RtbWMzX2RhdDFfcHA0LCBzZG1tYzNfZGF0Ml9wcDMsCisgICAgc2RtbWMzX2RhdDNfcHAyLCBzaHV0ZG93biwgc3BkaWZfaW5fcGNjMywgc3BkaWZfb3V0X3BjYzIsIHNwaTFfY3MwX3BjMywKKyAgICBzcGkxX2NzMV9wYzQsIHNwaTFfbWlzb19wYzEsIHNwaTFfbW9zaV9wYzAsIHNwaTFfc2NrX3BjMiwgc3BpMl9jczBfcGI3LAorICAgIHNwaTJfY3MxX3BkZDAsIHNwaTJfbWlzb19wYjUsIHNwaTJfbW9zaV9wYjQsIHNwaTJfc2NrX3BiNiwgc3BpNF9jczBfcGM2LAorICAgIHNwaTRfbWlzb19wZDAsIHNwaTRfbW9zaV9wYzcsIHNwaTRfc2NrX3BjNSwgdGVtcF9hbGVydF9weDQsIHRvdWNoX2Nsa19wdjcsCisgICAgdG91Y2hfaW50X3B4MSwgdG91Y2hfcnN0X3B2NiwgdWFydDFfY3RzX3B1MywgdWFydDFfcnRzX3B1MiwgdWFydDFfcnhfcHUxLAorICAgIHVhcnQxX3R4X3B1MCwgdWFydDJfY3RzX3BnMywgdWFydDJfcnRzX3BnMiwgdWFydDJfcnhfcGcxLCB1YXJ0Ml90eF9wZzAsCisgICAgdWFydDNfY3RzX3BkNCwgdWFydDNfcnRzX3BkMywgdWFydDNfcnhfcGQyLCB1YXJ0M190eF9wZDEsIHVhcnQ0X2N0c19waTcsCisgICAgdWFydDRfcnRzX3BpNiwgdWFydDRfcnhfcGk1LCB1YXJ0NF90eF9waTQsIHVzYl92YnVzX2VuMF9wY2M0LAorICAgIHVzYl92YnVzX2VuMV9wY2M1LCB3aWZpX2VuX3BoMCwgd2lmaV9yc3RfcGgxLCB3aWZpX3dha2VfYXBfcGgyCisKKyAgRHJpdmUgZ3JvdXBzOgorCisgICAgVGhlc2UgY29ycmVzcG9uZCB0byB0aGUgVGVncmEgQVBCX01JU0NfR1BfKl9QQURDVFJMIChwYWQgY29udHJvbCkKKyAgICByZWdpc3RlcnMuIE5vdGUgdGhhdCB3aGVyZSBvbmUgb2YgdGhlc2UgcmVnaXN0ZXJzIGNvbnRyb2xzIGEgc2luZ2xlIHBpbgorICAgIGZvciB3aGljaCBhIFBJTk1VWF9BVVhfKiBleGlzdHMsIHNlZSB0aGUgbGlzdCBhYm92ZSBmb3IgdGhlIHBpbiBuYW1lIHRvCisgICAgdXNlIHdoZW4gY29uZmlndXJpbmcgdGhlIHBpbm11eC4KKworICAgIHBhNiwgcGNjNywgcGU2LCBwZTcsIHBoNiwgcGswLCBwazEsIHBrMiwgcGszLCBwazQsIHBrNSwgcGs2LCBwazcsIHBsMCwgcGwxLAorICAgIHB6MCwgcHoxLCBwejIsIHB6MywgcHo0LCBwejUsIHNkbW1jMSwgc2RtbWMyLCBzZG1tYzMsIHNkbW1jNAorCitWYWxpZCB2YWx1ZXMgZm9yIG52aWRpYSxmdW5jdGlvbnMgYXJlOgorCisgICAgYXVkLCBiY2wsIGJsaW5rLCBjY2xhLCBjZWMsIGNsZHZmcywgY2xrLCBjb3JlLCBjcHUsIGRpc3BsYXlhLCBkaXNwbGF5YiwKKyAgICBkbWljMSwgZG1pYzIsIGRtaWMzLCBkcCwgZHR2LCBleHRwZXJpcGgzLCBpMmMxLCBpMmMyLCBpMmMzLCBpMmNwbXUsIGkyY3ZpLAorICAgIGkyczEsIGkyczIsIGkyczMsIGkyczRhLCBpMnM0YiwgaTJzNWEsIGkyczViLCBpcWMwLCBpcWMxLCBqdGFnLCBwZSwgcGUwLAorICAgIHBlMSwgcG1pLCBwd20wLCBwd20xLCBwd20yLCBwd20zLCBxc3BpLCByc3ZkMCwgcnN2ZDEsIHJzdmQyLCByc3ZkMywgc2F0YSwKKyAgICBzZG1tYzEsIHNkbW1jMywgc2h1dGRvd24sIHNvYywgc29yMCwgc29yMSwgc3BkaWYsIHNwaTEsIHNwaTIsIHNwaTMsIHNwaTQsCisgICAgc3lzLCB0b3VjaCwgdWFydCwgdWFydGEsIHVhcnRiLCB1YXJ0YywgdWFydGQsIHVzYiwgdmdwMSwgdmdwMiwgdmdwMywgdmdwNCwKKyAgICB2Z3A1LCB2Z3A2LCB2aW1jbGssIHZpbWNsazIKKworRXhhbXBsZToKKworCXBpbm11eDogcGlubXV4QDcwMDAwODAwIHsKKwkJY29tcGF0aWJsZSA9ICJudmlkaWEsdGVncmEyMTAtcGlubXV4IjsKKwkJcmVnID0gPDB4MCAweDcwMDAwOGQ0IDB4MCAweDJhOD4sIC8qIFBhZCBjb250cm9sIHJlZ2lzdGVycyAqLworCQkgICAgICA8MHgwIDB4NzAwMDMwMDAgMHgwIDB4MTAwMD47IC8qIE11eCByZWdpc3RlcnMgKi8KKworCQlwaW5jdHJsLW5hbWVzID0gImJvb3QiOworCQlwaW5jdHJsLTAgPSA8JnN0YXRlX2Jvb3Q+OworCisJCXN0YXRlX2Jvb3Q6IHBpbm11eCB7CisJCQlnZW4xX2kyY19zY2xfcGoxIHsKKwkJCQludmlkaWEscGlucyA9ICJnZW4xX2kyY19zY2xfcGoxIiwKKwkJCQludmlkaWEsZnVuY3Rpb24gPSAiaTJjMSI7CisJCQkJbnZpZGlhLHB1bGwgPSA8VEVHUkFfUElOX1BVTExfTk9ORT47CisJCQkJbnZpZGlhLHRyaXN0YXRlID0gPFRFR1JBX1BJTl9ESVNBQkxFPjsKKwkJCQludmlkaWEsZW5hYmxlLWlucHV0ID0gPFRFR1JBX1BJTl9FTkFCTEU+OworCQkJCW52aWRpYSxvcGVuLWRyYWluID0gPFRFR1JBX1BJTl9FTkFCTEU+OworCQkJCW52aWRpYSxpby1odiA9IDxURUdSQV9QSU5fRU5BQkxFPjsKKwkJCX07CisJCX07CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9udmlkaWEsdGVncmEzMC1waW5tdXgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbnZpZGlhLHRlZ3JhMzAtcGlubXV4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTYzNTRjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbnZpZGlhLHRlZ3JhMzAtcGlubXV4LnR4dApAQCAtMCwwICsxLDE0NCBAQAorTlZJRElBIFRlZ3JhMzAgcGlubXV4IGNvbnRyb2xsZXIKKworVGhlIFRlZ3JhMzAgcGluY3RybCBiaW5kaW5nIGlzIHZlcnkgc2ltaWxhciB0byB0aGUgVGVncmEyMCBwaW5jdHJsIGJpbmRpbmcsCithcyBkZXNjcmliZWQgaW4gbnZpZGlhLHRlZ3JhMjAtcGlubXV4LnR4dC4gSW4gZmFjdCwgdGhpcyBkb2N1bWVudCBhc3N1bWVzCit0aGF0IGJpbmRpbmcgYXMgYSBiYXNlbGluZSwgYW5kIG9ubHkgZG9jdW1lbnRzIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZQordHdvIGJpbmRpbmdzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAibnZpZGlhLHRlZ3JhMzAtcGlubXV4IgorLSByZWc6IFNob3VsZCBjb250YWluIHRoZSByZWdpc3RlciBwaHlzaWNhbCBhZGRyZXNzIGFuZCBsZW5ndGggZm9yIGVhY2ggb2YKKyAgdGhlIHBhZCBjb250cm9sIGFuZCBtdXggcmVnaXN0ZXJzLgorCitUZWdyYTMwIGFkZHMgdGhlIGZvbGxvd2luZyBvcHRpb25hbCBwcm9wZXJ0aWVzIGZvciBwaW4gY29uZmlndXJhdGlvbiBzdWJub2RlczoKKy0gbnZpZGlhLGVuYWJsZS1pbnB1dDogSW50ZWdlci4gRW5hYmxlIHRoZSBwaW4ncyBpbnB1dCBwYXRoLiAwOiBubywgMTogeWVzLgorLSBudmlkaWEsb3Blbi1kcmFpbjogSW50ZWdlci4gRW5hYmxlIG9wZW4gZHJhaW4gbW9kZS4gMDogbm8sIDE6IHllcy4KKy0gbnZpZGlhLGxvY2s6IEludGVnZXIuIExvY2sgdGhlIHBpbiBjb25maWd1cmF0aW9uIGFnYWluc3QgZnVydGhlciBjaGFuZ2VzCisgICAgdW50aWwgcmVzZXQuIDA6IG5vLCAxOiB5ZXMuCistIG52aWRpYSxpby1yZXNldDogSW50ZWdlci4gUmVzZXQgdGhlIElPIHBhdGguIDA6IG5vLCAxOiB5ZXMuCisKK0FzIHdpdGggVGVncmEyMCwgc2VlIHRoZSBUZWdyYSBUUk0gZm9yIGNvbXBsZXRlIGRldGFpbHMgcmVnYXJkaW5nIHdoaWNoIGdyb3Vwcworc3VwcG9ydCB3aGljaCBmdW5jdGlvbmFsaXR5LgorCitWYWxpZCB2YWx1ZXMgZm9yIHBpbiBhbmQgZ3JvdXAgbmFtZXMgYXJlOgorCisgIHBlci1waW4gbXV4IGdyb3VwczoKKworICAgIFRoZXNlIGFsbCBzdXBwb3J0IG52aWRpYSxmdW5jdGlvbiwgbnZpZGlhLHRyaXN0YXRlLCBudmlkaWEscHVsbCwKKyAgICBudmlkaWEsZW5hYmxlLWlucHV0LCBudmlkaWEsbG9jay4gU29tZSBzdXBwb3J0IG52aWRpYSxvcGVuLWRyYWluLAorICAgIG52aWRpYSxpby1yZXNldC4KKworICAgIGNsa18zMmtfb3V0X3BhMCwgdWFydDNfY3RzX25fcGExLCBkYXAyX2ZzX3BhMiwgZGFwMl9zY2xrX3BhMywKKyAgICBkYXAyX2Rpbl9wYTQsIGRhcDJfZG91dF9wYTUsIHNkbW1jM19jbGtfcGE2LCBzZG1tYzNfY21kX3BhNywgZ21pX2ExN19wYjAsCisgICAgZ21pX2ExOF9wYjEsIGxjZF9wd3IwX3BiMiwgbGNkX3BjbGtfcGIzLCBzZG1tYzNfZGF0M19wYjQsIHNkbW1jM19kYXQyX3BiNSwKKyAgICBzZG1tYzNfZGF0MV9wYjYsIHNkbW1jM19kYXQwX3BiNywgdWFydDNfcnRzX25fcGMwLCBsY2RfcHdyMV9wYzEsCisgICAgdWFydDJfdHhkX3BjMiwgdWFydDJfcnhkX3BjMywgZ2VuMV9pMmNfc2NsX3BjNCwgZ2VuMV9pMmNfc2RhX3BjNSwKKyAgICBsY2RfcHdyMl9wYzYsIGdtaV93cF9uX3BjNywgc2RtbWMzX2RhdDVfcGQwLCBzZG1tYzNfZGF0NF9wZDEsIGxjZF9kYzFfcGQyLAorICAgIHNkbW1jM19kYXQ2X3BkMywgc2RtbWMzX2RhdDdfcGQ0LCB2aV9kMV9wZDUsIHZpX3ZzeW5jX3BkNiwgdmlfaHN5bmNfcGQ3LAorICAgIGxjZF9kMF9wZTAsIGxjZF9kMV9wZTEsIGxjZF9kMl9wZTIsIGxjZF9kM19wZTMsIGxjZF9kNF9wZTQsIGxjZF9kNV9wZTUsCisgICAgbGNkX2Q2X3BlNiwgbGNkX2Q3X3BlNywgbGNkX2Q4X3BmMCwgbGNkX2Q5X3BmMSwgbGNkX2QxMF9wZjIsIGxjZF9kMTFfcGYzLAorICAgIGxjZF9kMTJfcGY0LCBsY2RfZDEzX3BmNSwgbGNkX2QxNF9wZjYsIGxjZF9kMTVfcGY3LCBnbWlfYWQwX3BnMCwKKyAgICBnbWlfYWQxX3BnMSwgZ21pX2FkMl9wZzIsIGdtaV9hZDNfcGczLCBnbWlfYWQ0X3BnNCwgZ21pX2FkNV9wZzUsCisgICAgZ21pX2FkNl9wZzYsIGdtaV9hZDdfcGc3LCBnbWlfYWQ4X3BoMCwgZ21pX2FkOV9waDEsIGdtaV9hZDEwX3BoMiwKKyAgICBnbWlfYWQxMV9waDMsIGdtaV9hZDEyX3BoNCwgZ21pX2FkMTNfcGg1LCBnbWlfYWQxNF9waDYsIGdtaV9hZDE1X3BoNywKKyAgICBnbWlfd3Jfbl9waTAsIGdtaV9vZV9uX3BpMSwgZ21pX2Rxc19waTIsIGdtaV9jczZfbl9waTMsIGdtaV9yc3Rfbl9waTQsCisgICAgZ21pX2lvcmR5X3BpNSwgZ21pX2NzN19uX3BpNiwgZ21pX3dhaXRfcGk3LCBnbWlfY3MwX25fcGowLCBsY2RfZGVfcGoxLAorICAgIGdtaV9jczFfbl9wajIsIGxjZF9oc3luY19wajMsIGxjZF92c3luY19wajQsIHVhcnQyX2N0c19uX3BqNSwKKyAgICB1YXJ0Ml9ydHNfbl9wajYsIGdtaV9hMTZfcGo3LCBnbWlfYWR2X25fcGswLCBnbWlfY2xrX3BrMSwgZ21pX2NzNF9uX3BrMiwKKyAgICBnbWlfY3MyX25fcGszLCBnbWlfY3MzX25fcGs0LCBzcGRpZl9vdXRfcGs1LCBzcGRpZl9pbl9wazYsIGdtaV9hMTlfcGs3LAorICAgIHZpX2QyX3BsMCwgdmlfZDNfcGwxLCB2aV9kNF9wbDIsIHZpX2Q1X3BsMywgdmlfZDZfcGw0LCB2aV9kN19wbDUsCisgICAgdmlfZDhfcGw2LCB2aV9kOV9wbDcsIGxjZF9kMTZfcG0wLCBsY2RfZDE3X3BtMSwgbGNkX2QxOF9wbTIsIGxjZF9kMTlfcG0zLAorICAgIGxjZF9kMjBfcG00LCBsY2RfZDIxX3BtNSwgbGNkX2QyMl9wbTYsIGxjZF9kMjNfcG03LCBkYXAxX2ZzX3BuMCwKKyAgICBkYXAxX2Rpbl9wbjEsIGRhcDFfZG91dF9wbjIsIGRhcDFfc2Nsa19wbjMsIGxjZF9jczBfbl9wbjQsIGxjZF9zZG91dF9wbjUsCisgICAgbGNkX2RjMF9wbjYsIGhkbWlfaW50X3BuNywgdWxwaV9kYXRhN19wbzAsIHVscGlfZGF0YTBfcG8xLCB1bHBpX2RhdGExX3BvMiwKKyAgICB1bHBpX2RhdGEyX3BvMywgdWxwaV9kYXRhM19wbzQsIHVscGlfZGF0YTRfcG81LCB1bHBpX2RhdGE1X3BvNiwKKyAgICB1bHBpX2RhdGE2X3BvNywgZGFwM19mc19wcDAsIGRhcDNfZGluX3BwMSwgZGFwM19kb3V0X3BwMiwgZGFwM19zY2xrX3BwMywKKyAgICBkYXA0X2ZzX3BwNCwgZGFwNF9kaW5fcHA1LCBkYXA0X2RvdXRfcHA2LCBkYXA0X3NjbGtfcHA3LCBrYl9jb2wwX3BxMCwKKyAgICBrYl9jb2wxX3BxMSwga2JfY29sMl9wcTIsIGtiX2NvbDNfcHEzLCBrYl9jb2w0X3BxNCwga2JfY29sNV9wcTUsCisgICAga2JfY29sNl9wcTYsIGtiX2NvbDdfcHE3LCBrYl9yb3cwX3ByMCwga2Jfcm93MV9wcjEsIGtiX3JvdzJfcHIyLAorICAgIGtiX3JvdzNfcHIzLCBrYl9yb3c0X3ByNCwga2Jfcm93NV9wcjUsIGtiX3JvdzZfcHI2LCBrYl9yb3c3X3ByNywKKyAgICBrYl9yb3c4X3BzMCwga2Jfcm93OV9wczEsIGtiX3JvdzEwX3BzMiwga2Jfcm93MTFfcHMzLCBrYl9yb3cxMl9wczQsCisgICAga2Jfcm93MTNfcHM1LCBrYl9yb3cxNF9wczYsIGtiX3JvdzE1X3BzNywgdmlfcGNsa19wdDAsIHZpX21jbGtfcHQxLAorICAgIHZpX2QxMF9wdDIsIHZpX2QxMV9wdDMsIHZpX2QwX3B0NCwgZ2VuMl9pMmNfc2NsX3B0NSwgZ2VuMl9pMmNfc2RhX3B0NiwKKyAgICBzZG1tYzRfY21kX3B0NywgcHUwLCBwdTEsIHB1MiwgcHUzLCBwdTQsIHB1NSwgcHU2LCBqdGFnX3J0Y2tfcHU3LCBwdjAsCisgICAgcHYxLCBwdjIsIHB2MywgZGRjX3NjbF9wdjQsIGRkY19zZGFfcHY1LCBjcnRfaHN5bmNfcHY2LCBjcnRfdnN5bmNfcHY3LAorICAgIGxjZF9jczFfbl9wdzAsIGxjZF9tMV9wdzEsIHNwaTJfY3MxX25fcHcyLCBzcGkyX2NzMl9uX3B3MywgY2xrMV9vdXRfcHc0LAorICAgIGNsazJfb3V0X3B3NSwgdWFydDNfdHhkX3B3NiwgdWFydDNfcnhkX3B3Nywgc3BpMl9tb3NpX3B4MCwgc3BpMl9taXNvX3B4MSwKKyAgICBzcGkyX3Nja19weDIsIHNwaTJfY3MwX25fcHgzLCBzcGkxX21vc2lfcHg0LCBzcGkxX3Nja19weDUsIHNwaTFfY3MwX25fcHg2LAorICAgIHNwaTFfbWlzb19weDcsIHVscGlfY2xrX3B5MCwgdWxwaV9kaXJfcHkxLCB1bHBpX254dF9weTIsIHVscGlfc3RwX3B5MywKKyAgICBzZG1tYzFfZGF0M19weTQsIHNkbW1jMV9kYXQyX3B5NSwgc2RtbWMxX2RhdDFfcHk2LCBzZG1tYzFfZGF0MF9weTcsCisgICAgc2RtbWMxX2Nsa19wejAsIHNkbW1jMV9jbWRfcHoxLCBsY2Rfc2Rpbl9wejIsIGxjZF93cl9uX3B6MywgbGNkX3Nja19wejQsCisgICAgc3lzX2Nsa19yZXFfcHo1LCBwd3JfaTJjX3NjbF9wejYsIHB3cl9pMmNfc2RhX3B6Nywgc2RtbWM0X2RhdDBfcGFhMCwKKyAgICBzZG1tYzRfZGF0MV9wYWExLCBzZG1tYzRfZGF0Ml9wYWEyLCBzZG1tYzRfZGF0M19wYWEzLCBzZG1tYzRfZGF0NF9wYWE0LAorICAgIHNkbW1jNF9kYXQ1X3BhYTUsIHNkbW1jNF9kYXQ2X3BhYTYsIHNkbW1jNF9kYXQ3X3BhYTcsIHBiYjAsCisgICAgY2FtX2kyY19zY2xfcGJiMSwgY2FtX2kyY19zZGFfcGJiMiwgcGJiMywgcGJiNCwgcGJiNSwgcGJiNiwgcGJiNywKKyAgICBjYW1fbWNsa19wY2MwLCBwY2MxLCBwY2MyLCBzZG1tYzRfcnN0X25fcGNjMywgc2RtbWM0X2Nsa19wY2M0LAorICAgIGNsazJfcmVxX3BjYzUsIHBleF9sMl9yc3Rfbl9wY2M2LCBwZXhfbDJfY2xrcmVxX25fcGNjNywKKyAgICBwZXhfbDBfcHJzbnRfbl9wZGQwLCBwZXhfbDBfcnN0X25fcGRkMSwgcGV4X2wwX2Nsa3JlcV9uX3BkZDIsCisgICAgcGV4X3dha2Vfbl9wZGQzLCBwZXhfbDFfcHJzbnRfbl9wZGQ0LCBwZXhfbDFfcnN0X25fcGRkNSwKKyAgICBwZXhfbDFfY2xrcmVxX25fcGRkNiwgcGV4X2wyX3Byc250X25fcGRkNywgY2xrM19vdXRfcGVlMCwgY2xrM19yZXFfcGVlMSwKKyAgICBjbGsxX3JlcV9wZWUyLCBoZG1pX2NlY19wZWUzLCBjbGtfMzJrX2luLCBjb3JlX3B3cl9yZXEsIGNwdV9wd3JfcmVxLCBvd3IsCisgICAgcHdyX2ludF9uLgorCisgIGRyaXZlIGdyb3VwczoKKworICAgIFRoZXNlIGFsbCBzdXBwb3J0IG52aWRpYSxwdWxsLWRvd24tc3RyZW5ndGgsIG52aWRpYSxwdWxsLXVwLXN0cmVuZ3RoLAorICAgIG52aWRpYSxzbGV3LXJhdGUtcmlzaW5nLCBudmlkaWEsc2xldy1yYXRlLWZhbGxpbmcuIE1vc3QgYnV0IG5vdCBhbGwKKyAgICBzdXBwb3J0IG52aWRpYSxoaWdoLXNwZWVkLW1vZGUsIG52aWRpYSxzY2htaXR0LCBudmlkaWEsbG93LXBvd2VyLW1vZGUuCisKKyAgICBhbzEsIGFvMiwgYXQxLCBhdDIsIGF0MywgYXQ0LCBhdDUsIGNkZXYxLCBjZGV2MiwgY2VjLCBjcnQsIGNzdXMsIGRhcDEsCisgICAgZGFwMiwgZGFwMywgZGFwNCwgZGJnLCBkZGMsIGRldjMsIGdtYSwgZ21iLCBnbWMsIGdtZCwgZ21lLCBnbWYsIGdtZywKKyAgICBnbWgsIGdwdiwgbGNkMSwgbGNkMiwgb3dyLCBzZGlvMSwgc2RpbzIsIHNkaW8zLCBzcGksIHVhYSwgdWFiLCB1YXJ0MiwKKyAgICB1YXJ0MywgdWRhLCB2aTEuCisKK1ZhbGlkIHZhbHVlcyBmb3IgbnZpZGlhLGZ1bmN0aW9ucyBhcmU6CisKKyAgYmxpbmssIGNlYywgY2xrXzEybV9vdXQsIGNsa18zMmtfaW4sIGNvcmVfcHdyX3JlcSwgY3B1X3B3cl9yZXEsIGNydCwKKyAgZGFwLCBkZHIsIGRldjMsIGRpc3BsYXlhLCBkaXNwbGF5YiwgZHR2LCBleHRwZXJpcGgxLCBleHRwZXJpcGgyLAorICBleHRwZXJpcGgzLCBnbWksIGdtaV9hbHQsIGhkYSwgaGRjcCwgaGRtaSwgaHNpLCBpMmMxLCBpMmMyLCBpMmMzLAorICBpMmM0LCBpMmNwd3IsIGkyczAsIGkyczEsIGkyczIsIGkyczMsIGkyczQsIGludmFsaWQsIGtiYywgbWlvLCBuYW5kLAorICBuYW5kX2FsdCwgb3dyLCBwY2llLCBwd20wLCBwd20xLCBwd20yLCBwd20zLCBwd3JfaW50X24sIHJzdmQxLCByc3ZkMiwKKyAgcnN2ZDMsIHJzdmQ0LCBydGNrLCBzYXRhLCBzZG1tYzEsIHNkbW1jMiwgc2RtbWMzLCBzZG1tYzQsIHNwZGlmLCBzcGkxLAorICBzcGkyLCBzcGkyX2FsdCwgc3BpMywgc3BpNCwgc3BpNSwgc3BpNiwgc3lzY2xrLCB0ZXN0LCB0cmFjZSwgdWFydGEsCisgIHVhcnRiLCB1YXJ0YywgdWFydGQsIHVhcnRlLCB1bHBpLCB2Z3AxLCB2Z3AyLCB2Z3AzLCB2Z3A0LCB2Z3A1LCB2Z3A2LAorICB2aSwgdmlfYWx0MSwgdmlfYWx0MiwgdmlfYWx0MworCitFeGFtcGxlOgorCisJcGluY3RybEA3MDAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMzAtcGlubXV4IjsKKwkJcmVnID0gPCAweDcwMDAwODY4IDB4ZDAgICAgIC8qIFBhZCBjb250cm9sIHJlZ2lzdGVycyAqLworCQkJMHg3MDAwMzAwMCAweDNlMCA+OyAvKiBNdXggcmVnaXN0ZXJzICovCisJfTsKKworRXhhbXBsZSBib2FyZCBmaWxlIGV4dHJhY3Q6CisKKwlwaW5jdHJsQDcwMDAwMDAwIHsKKwkJc2RtbWM0X2RlZmF1bHQ6IHBpbm11eCB7CisJCQlzZG1tYzRfY2xrX3BjYzQgeworCQkJCW52aWRpYSxwaW5zID0JInNkbW1jNF9jbGtfcGNjNCIsCisJCQkJCQkic2RtbWM0X3JzdF9uX3BjYzMiOworCQkJCW52aWRpYSxmdW5jdGlvbiA9ICJzZG1tYzQiOworCQkJCW52aWRpYSxwdWxsID0gPDA+OworCQkJCW52aWRpYSx0cmlzdGF0ZSA9IDwwPjsKKwkJCX07CisJCQlzZG1tYzRfZGF0MF9wYWEwIHsKKwkJCQludmlkaWEscGlucyA9CSJzZG1tYzRfZGF0MF9wYWEwIiwKKwkJCQkJCSJzZG1tYzRfZGF0MV9wYWExIiwKKwkJCQkJCSJzZG1tYzRfZGF0Ml9wYWEyIiwKKwkJCQkJCSJzZG1tYzRfZGF0M19wYWEzIiwKKwkJCQkJCSJzZG1tYzRfZGF0NF9wYWE0IiwKKwkJCQkJCSJzZG1tYzRfZGF0NV9wYWE1IiwKKwkJCQkJCSJzZG1tYzRfZGF0Nl9wYWE2IiwKKwkJCQkJCSJzZG1tYzRfZGF0N19wYWE3IjsKKwkJCQludmlkaWEsZnVuY3Rpb24gPSAic2RtbWM0IjsKKwkJCQludmlkaWEscHVsbCA9IDwyPjsKKwkJCQludmlkaWEsdHJpc3RhdGUgPSA8MD47CisJCQl9OworCQl9OworCX07CisKKwlzZGhjaUA3ODAwMDQwMCB7CisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmc2RtbWM0X2RlZmF1bHQ+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9ueHAsbHBjMTg1MC1zY3UudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbnhwLGxwYzE4NTAtc2N1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjAzMDljCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbnhwLGxwYzE4NTAtc2N1LnR4dApAQCAtMCwwICsxLDU3IEBACitOWFAgTFBDMTh4eC80M3h4IFNDVSBwaW4gY29udHJvbGxlciBEZXZpY2UgVHJlZSBCaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZQkJOiBTaG91bGQgYmUgIm54cCxscGMxODUwLXNjdSIKKy0gcmVnCQkJOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorLSBjbG9ja3MJCTogQ2xvY2sgc3BlY2lmaWVyIChzZWUgY2xvY2sgYmluZGluZ3MgZm9yIGRldGFpbHMpCisKK1RoZSBscGMxODUwLXNjdSBkcml2ZXIgdXNlcyB0aGUgZ2VuZXJpYyBwaW4gbXVsdGlwbGV4aW5nIGFuZCBnZW5lcmljIHBpbgorY29uZmlndXJhdGlvbiBkb2N1bWVudGVkIGluIHBpbmN0cmwtYmluZGluZ3MudHh0LgorCitUaGUgZm9sbG93aW5nIGdlbmVyaWMgbm9kZXMgYXJlIHN1cHBvcnRlZDoKKyAtIGZ1bmN0aW9uCisgLSBwaW5zCisgLSBiaWFzLWRpc2FibGUKKyAtIGJpYXMtcHVsbC11cAorIC0gYmlhcy1wdWxsLWRvd24KKyAtIGRyaXZlLXN0cmVuZ3RoCisgLSBpbnB1dC1lbmFibGUKKyAtIGlucHV0LWRpc2FibGUKKyAtIGlucHV0LXNjaG1pdHQtZW5hYmxlCisgLSBpbnB1dC1zY2htaXR0LWRpc2FibGUKKyAtIHNsZXctcmF0ZQorCitOb3QgYWxsIHBpbnMgc3VwcG9ydCBhbGwgcHJvcGVydGllcyBzbyBlaXRoZXIgcmVmZXIgdG8gdGhlIE5YUCAxODUwLzQzNTAKK3VzZXIgbWFudWFsIG9yIHRoZSBwaW4gdGFibGUgaW4gdGhlIHBpbmN0cmwtbHBjMTh4eCBkcml2ZXIgZm9yIHN1cHBvcnRlZAorcGluIHByb3BlcnRpZXMuCisKK0V4YW1wbGU6CitwaW5jdHJsOiBwaW5jdHJsQDQwMDg2MDAwIHsKKwljb21wYXRpYmxlID0gIm54cCxscGMxODUwLXNjdSI7CisJcmVnID0gPDB4NDAwODYwMDAgMHgxMDAwPjsKKwljbG9ja3MgPSA8JmNjdTEgQ0xLX0NQVV9TQ1U+OworCisJaTJjMF9waW5zOiBpMmMwLXBpbnMgeworCQlpMmMwX3BpbnNfY2ZnIHsKKwkJCXBpbnMgPSAiaTJjMF9zY2wiLCAiaTJjMF9zZGEiOworCQkJZnVuY3Rpb24gPSAiaTJjMCI7CisJCQlpbnB1dC1lbmFibGU7CisJCX07CisJfTsKKworCXVhcnQwX3BpbnM6IHVhcnQwLXBpbnMgeworCQl1YXJ0MF9yeF9jZmcgeworCQkJcGlucyA9ICJwZl8xMSI7CisJCQlmdW5jdGlvbiA9ICJ1YXJ0MCI7CisJCQliaWFzLWRpc2FibGU7CisJCQlpbnB1dC1lbmFibGU7CisJCX07CisKKwkJdWFydDBfdHhfY2ZnIHsKKwkJCXBpbnMgPSAicGZfMTAiOworCQkJZnVuY3Rpb24gPSAidWFydDAiOworCQkJYmlhcy1kaXNhYmxlOworCQl9OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcGluY3RybC1hdGxhczcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcGluY3RybC1hdGxhczcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlY2YwMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9waW5jdHJsLWF0bGFzNy50eHQKQEAgLTAsMCArMSwxMDkgQEAKK0NTUiBTaVJGYXRsYXM3IHBpbm11eCBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUJOiAic2lyZixhdGxhczctaW9jIgorLSByZWcJCTogQWRkcmVzcyByYW5nZSBvZiB0aGUgcGluY3RybCByZWdpc3RlcnMKKworRm9yIGV4YW1wbGUsIHBpbmN0cmwgbWlnaHQgaGF2ZSBwcm9wZXJ0aWVzIGxpa2UgdGhlIGZvbGxvd2luZzoKKwlwaW5jdHJsOiBpb2NAMTg4ODAwMDAgeworCQkJY29tcGF0aWJsZSA9ICJzaXJmLGF0bGFzNy1pb2MiOworCQkJcmVnID0gPDB4MTg4ODAwMDAgMHgxMDAwPjsKKworCQkJYV9hYzk3X3BteDogYWM5N0AwIHsKKwkJCQlhYzk3IHsKKwkJCQkJZ3JvdXBzID0gImF1ZGlvX2FjOTdfZ3JwIjsKKwkJCQkJZnVuY3Rpb24gPSAiYXVkaW9fYWM5NyI7CisJCQkJfTsKKwkJCX07CisKKwkJCS4uLgorCisJCQlzZDJfcG14OiBzZDJAMCB7CisJCQkJc2QyIHsKKwkJCQkJZ3JvdXBzID0gInNkMl9ncnAwIjsKKwkJCQkJZnVuY3Rpb24gPSAic2QyIjsKKwkJCQl9OworCQkJfTsKKworCQkJLi4uCisKKworCQkJc2FtcGxlMF9jZmc6IHNhbXBsZTBAMCB7CisJCQkJc2FtcGxlMCB7CisJCQkJCXBpbnMgPSAibGRkXzAiLCAibGRkXzEiOworCQkJCQliaWFzLXB1bGwtdXA7CisJCQkJfTsKKwkJCX07CisKKwkJCXNhbXBsZTFfY2ZnOiBzYW1wbGUxQDAgeworCQkJCXNhbXBsZTEgeworCQkJCQlwaW5zID0gImxkZF8yIiwgImxkZF8zIjsKKwkJCQkJaW5wdXQtc2NobWl0dC1lbmFibGU7CisJCQkJfTsKKwkJCX07CisKKwkJCXNhbXBsZTJfY2ZnOiBzYW1wbGUyQDAgeworCQkJCXNhbXBsZTIgeworCQkJCQlncm91cHMgPSAidWFydDRfbm9wYXVzZV9ncnAiOworCQkJCQliaWFzLXB1bGwtZG93bjsKKwkJCQl9OworCQkJfTsKKworCQkJc2FtcGxlM19jZmc6IHNhbXBsZTNAMCB7CisJCQkJc2FtcGxlMyB7CisJCQkJCXBpbnMgPSAibGRkXzQiLCAibGRkXzUiOworCQkJCQlkcml2ZS1zdHJlbmd0aCA9IDwyPjsKKwkJCQl9OworCQkJfTsKKwl9OworCitQbGVhc2UgcmVmZXIgdG8gcGluY3RybC1iaW5kaW5ncy50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGRldGFpbHMgb2YgdGhlIGNvbW1vbgorcGluY3RybCBiaW5kaW5ncyB1c2VkIGJ5IGNsaWVudCBkZXZpY2VzLgorCitTaVJGYXRsYXM3J3MgcGlubXV4IG5vZGVzIGFjdCBhcyBhIGNvbnRhaW5lciBmb3IgYW4gYWJpdHJhcnkgbnVtYmVyIG9mIHN1Ym5vZGVzLgorRWFjaCBvZiB0aGVzZSBzdWJub2RlcyByZXByZXNlbnRzIHNvbWUgZGVzaXJlZCBjb25maWd1cmF0aW9uIGZvciBhIGdyb3VwIG9mIHBpbnMuCisKK1JlcXVpcmVkIHN1Ym5vZGUtcHJvcGVydGllczoKKy0gZ3JvdXBzIDogQW4gYXJyYXkgb2Ygc3RyaW5ncy4gRWFjaCBzdHJpbmcgY29udGFpbnMgdGhlIG5hbWUgb2YgYSBncm91cC4KKy0gZnVuY3Rpb246IEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHRvIG11eCB0byB0aGUKKyAgZ3JvdXAuCisKKyAgVmFsaWQgdmFsdWVzIGZvciBncm91cCBhbmQgZnVuY3Rpb24gbmFtZXMgY2FuIGJlIGZvdW5kIGZyb20gbG9va2luZyBhdCB0aGUKKyAgZ3JvdXAgYW5kIGZ1bmN0aW9uIGFycmF5cyBpbiBkcml2ZXIgZmlsZXM6CisgIGRyaXZlcnMvcGluY3RybC9waW5jdHJsLXNpcmYuYworCitGb3IgZXhhbXBsZSwgcGluY3RybCBtaWdodCBoYXZlIHN1Ym5vZGVzIGxpa2UgdGhlIGZvbGxvd2luZzoKKwlzZDBfcG14OiBzZDBAMCB7CisJCXNkMCB7CisJCQlncm91cHMgPSAic2QwX2dycCI7CisJCQlmdW5jdGlvbiA9ICJzZDAiOworCQl9OworCX07CisKKwlzZDFfcG14MDogc2QxQDAgeworCQlzZDEgeworCQkJZ3JvdXBzID0gInNkMV9ncnAwIjsKKwkJCWZ1bmN0aW9uID0gInNkMV9tMCI7CisJCX07CisJfTsKKworCXNkMV9wbXgxOiBzZDFAMSB7CisJCXNkMSB7CisJCQlncm91cHMgPSAic2QxX2dycDEiOworCQkJZnVuY3Rpb24gPSAic2QxX20xIjsKKwkJfTsKKwl9OworCitGb3IgYSBzcGVjaWZpYyBib2FyZCwgaWYgaXQgd2FudHMgdG8gdXNlIHNkMSwKK2l0IGNhbiBhZGQgdGhlIGZvbGxvd2luZyB0byBpdHMgYm9hcmQtc3BlY2lmaWMgLmR0cyBmaWxlLgorc2QxOiBzZEAweDEyMzQwMDAwIHsKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCXBpbmN0cmwtMCA9IDwmc2QxX3BteDA+OworfQorCitvcgorCitzZDE6IHNkQDB4MTIzNDAwMDAgeworCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJcGluY3RybC0wID0gPCZzZDFfcG14MT47Cit9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9waW5jdHJsLWJpbmRpbmdzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3BpbmN0cmwtYmluZGluZ3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3M2M5NmQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9waW5jdHJsLWJpbmRpbmdzLnR4dApAQCAtMCwwICsxLDIzNiBAQAorPT0gSW50cm9kdWN0aW9uID09CisKK0hhcmR3YXJlIG1vZHVsZXMgdGhhdCBjb250cm9sIHBpbiBtdWx0aXBsZXhpbmcgb3IgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzCitzdWNoIGFzIHB1bGwtdXAvZG93biwgdHJpLXN0YXRlLCBkcml2ZS1zdHJlbmd0aCBldGMgYXJlIGRlc2lnbmF0ZWQgYXMgcGluCitjb250cm9sbGVycy4gRWFjaCBwaW4gY29udHJvbGxlciBtdXN0IGJlIHJlcHJlc2VudGVkIGFzIGEgbm9kZSBpbiBkZXZpY2UgdHJlZSwKK2p1c3QgbGlrZSBhbnkgb3RoZXIgaGFyZHdhcmUgbW9kdWxlLgorCitIYXJkd2FyZSBtb2R1bGVzIHdob3NlIHNpZ25hbHMgYXJlIGFmZmVjdGVkIGJ5IHBpbiBjb25maWd1cmF0aW9uIGFyZQorZGVzaWduYXRlZCBjbGllbnQgZGV2aWNlcy4gQWdhaW4sIGVhY2ggY2xpZW50IGRldmljZSBtdXN0IGJlIHJlcHJlc2VudGVkIGFzIGEKK25vZGUgaW4gZGV2aWNlIHRyZWUsIGp1c3QgbGlrZSBhbnkgb3RoZXIgaGFyZHdhcmUgbW9kdWxlLgorCitGb3IgYSBjbGllbnQgZGV2aWNlIHRvIG9wZXJhdGUgY29ycmVjdGx5LCBjZXJ0YWluIHBpbiBjb250cm9sbGVycyBtdXN0CitzZXQgdXAgY2VydGFpbiBzcGVjaWZpYyBwaW4gY29uZmlndXJhdGlvbnMuIFNvbWUgY2xpZW50IGRldmljZXMgbmVlZCBhCitzaW5nbGUgc3RhdGljIHBpbiBjb25maWd1cmF0aW9uLCBlLmcuIHNldCB1cCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIE90aGVycworbmVlZCB0byByZWNvbmZpZ3VyZSBwaW5zIGF0IHJ1bi10aW1lLCBmb3IgZXhhbXBsZSB0byB0cmktc3RhdGUgcGlucyB3aGVuIHRoZQorZGV2aWNlIGlzIGluYWN0aXZlLiBIZW5jZSwgZWFjaCBjbGllbnQgZGV2aWNlIGNhbiBkZWZpbmUgYSBzZXQgb2YgbmFtZWQKK3N0YXRlcy4gVGhlIG51bWJlciBhbmQgbmFtZXMgb2YgdGhvc2Ugc3RhdGVzIGlzIGRlZmluZWQgYnkgdGhlIGNsaWVudCBkZXZpY2Uncworb3duIGJpbmRpbmcuCisKK1RoZSBjb21tb24gcGluY3RybCBiaW5kaW5ncyBkZWZpbmVkIGluIHRoaXMgZmlsZSBwcm92aWRlIGFuIGluZnJhc3RydWN0dXJlCitmb3IgY2xpZW50IGRldmljZSBkZXZpY2UgdHJlZSBub2RlcyB0byBtYXAgdGhvc2Ugc3RhdGUgbmFtZXMgdG8gdGhlIHBpbgorY29uZmlndXJhdGlvbiB1c2VkIGJ5IHRob3NlIHN0YXRlcy4KKworTm90ZSB0aGF0IHBpbiBjb250cm9sbGVycyB0aGVtc2VsdmVzIG1heSBhbHNvIGJlIGNsaWVudCBkZXZpY2VzIG9mIHRoZW1zZWx2ZXMuCitGb3IgZXhhbXBsZSwgYSBwaW4gY29udHJvbGxlciBtYXkgc2V0IHVwIGl0cyBvd24gImFjdGl2ZSIgc3RhdGUgd2hlbiB0aGUKK2RyaXZlciBsb2Fkcy4gVGhpcyB3b3VsZCBhbGxvdyByZXByZXNlbnRpbmcgYSBib2FyZCdzIHN0YXRpYyBwaW4gY29uZmlndXJhdGlvbgoraW4gYSBzaW5nbGUgcGxhY2UsIHJhdGhlciB0aGFuIHNwbGl0dGluZyBpdCBhY3Jvc3MgbXVsdGlwbGUgY2xpZW50IGRldmljZQorbm9kZXMuIFRoZSBkZWNpc2lvbiB0byBkbyB0aGlzIG9yIG5vdCBzb21ld2hhdCByZXN0cyB3aXRoIHRoZSBhdXRob3Igb2YKK2luZGl2aWR1YWwgYm9hcmQgZGV2aWNlIHRyZWUgZmlsZXMsIGFuZCBhbnkgcmVxdWlyZW1lbnRzIGltcG9zZWQgYnkgdGhlCitiaW5kaW5ncyBmb3IgdGhlIGluZGl2aWR1YWwgY2xpZW50IGRldmljZXMgaW4gdXNlIGJ5IHRoYXQgYm9hcmQsIGkuZS4gd2hldGhlcgordGhleSByZXF1aXJlIGNlcnRhaW4gc3BlY2lmaWMgbmFtZWQgc3RhdGVzIGZvciBkeW5hbWljIHBpbiBjb25maWd1cmF0aW9uLgorCis9PSBQaW5jdHJsIGNsaWVudCBkZXZpY2VzID09CisKK0ZvciBlYWNoIGNsaWVudCBkZXZpY2UgaW5kaXZpZHVhbGx5LCBldmVyeSBwaW4gc3RhdGUgaXMgYXNzaWduZWQgYW4gaW50ZWdlcgorSUQuIFRoZXNlIG51bWJlcnMgc3RhcnQgYXQgMCwgYW5kIGFyZSBjb250aWd1b3VzLiBGb3IgZWFjaCBzdGF0ZSBJRCwgYSB1bmlxdWUKK3Byb3BlcnR5IGV4aXN0cyB0byBkZWZpbmUgdGhlIHBpbiBjb25maWd1cmF0aW9uLiBFYWNoIHN0YXRlIG1heSBhbHNvIGJlCithc3NpZ25lZCBhIG5hbWUuIFdoZW4gbmFtZXMgYXJlIHVzZWQsIGFub3RoZXIgcHJvcGVydHkgZXhpc3RzIHRvIG1hcCBmcm9tCit0aG9zZSBuYW1lcyB0byB0aGUgaW50ZWdlciBJRHMuCisKK0VhY2ggY2xpZW50IGRldmljZSdzIG93biBiaW5kaW5nIGRldGVybWluZXMgdGhlIHNldCBvZiBzdGF0ZXMgdGhhdCBtdXN0IGJlCitkZWZpbmVkIGluIGl0cyBkZXZpY2UgdHJlZSBub2RlLCBhbmQgd2hldGhlciB0byBkZWZpbmUgdGhlIHNldCBvZiBzdGF0ZQorSURzIHRoYXQgbXVzdCBiZSBwcm92aWRlZCwgb3Igd2hldGhlciB0byBkZWZpbmUgdGhlIHNldCBvZiBzdGF0ZSBuYW1lcyB0aGF0CittdXN0IGJlIHByb3ZpZGVkLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorcGluY3RybC0wOglMaXN0IG9mIHBoYW5kbGVzLCBlYWNoIHBvaW50aW5nIGF0IGEgcGluIGNvbmZpZ3VyYXRpb24KKwkJbm9kZS4gVGhlc2UgcmVmZXJlbmNlZCBwaW4gY29uZmlndXJhdGlvbiBub2RlcyBtdXN0IGJlIGNoaWxkCisJCW5vZGVzIG9mIHRoZSBwaW4gY29udHJvbGxlciB0aGF0IHRoZXkgY29uZmlndXJlLiBNdWx0aXBsZQorCQllbnRyaWVzIG1heSBleGlzdCBpbiB0aGlzIGxpc3Qgc28gdGhhdCBtdWx0aXBsZSBwaW4KKwkJY29udHJvbGxlcnMgbWF5IGJlIGNvbmZpZ3VyZWQsIG9yIHNvIHRoYXQgYSBzdGF0ZSBtYXkgYmUgYnVpbHQKKwkJZnJvbSBtdWx0aXBsZSBub2RlcyBmb3IgYSBzaW5nbGUgcGluIGNvbnRyb2xsZXIsIGVhY2gKKwkJY29udHJpYnV0aW5nIHBhcnQgb2YgdGhlIG92ZXJhbGwgY29uZmlndXJhdGlvbi4gU2VlIHRoZSBuZXh0CisJCXNlY3Rpb24gb2YgdGhpcyBkb2N1bWVudCBmb3IgZGV0YWlscyBvZiB0aGUgZm9ybWF0IG9mIHRoZXNlCisJCXBpbiBjb25maWd1cmF0aW9uIG5vZGVzLgorCisJCUluIHNvbWUgY2FzZXMsIGl0IG1heSBiZSB1c2VmdWwgdG8gZGVmaW5lIGEgc3RhdGUsIGJ1dCBmb3IgaXQKKwkJdG8gYmUgZW1wdHkuIFRoaXMgbWF5IGJlIHJlcXVpcmVkIHdoZW4gYSBjb21tb24gSVAgYmxvY2sgaXMKKwkJdXNlZCBpbiBhbiBTb0MgZWl0aGVyIHdpdGhvdXQgYSBwaW4gY29udHJvbGxlciwgb3Igd2hlcmUgdGhlCisJCXBpbiBjb250cm9sbGVyIGRvZXMgbm90IGFmZmVjdCB0aGUgSFcgbW9kdWxlIGluIHF1ZXN0aW9uLiBJZgorCQl0aGUgYmluZGluZyBmb3IgdGhhdCBJUCBibG9jayByZXF1aXJlcyBjZXJ0YWluIHBpbiBzdGF0ZXMgdG8KKwkJZXhpc3QsIHRoZXkgbXVzdCBzdGlsbCBiZSBkZWZpbmVkLCBidXQgbWF5IGJlIGxlZnQgZW1wdHkuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CitwaW5jdHJsLTE6CUxpc3Qgb2YgcGhhbmRsZXMsIGVhY2ggcG9pbnRpbmcgYXQgYSBwaW4gY29uZmlndXJhdGlvbgorCQlub2RlIHdpdGhpbiBhIHBpbiBjb250cm9sbGVyLgorLi4uCitwaW5jdHJsLW46CUxpc3Qgb2YgcGhhbmRsZXMsIGVhY2ggcG9pbnRpbmcgYXQgYSBwaW4gY29uZmlndXJhdGlvbgorCQlub2RlIHdpdGhpbiBhIHBpbiBjb250cm9sbGVyLgorcGluY3RybC1uYW1lczoJVGhlIGxpc3Qgb2YgbmFtZXMgdG8gYXNzaWduIHN0YXRlcy4gTGlzdCBlbnRyeSAwIGRlZmluZXMgdGhlCisJCW5hbWUgZm9yIGludGVnZXIgc3RhdGUgSUQgMCwgbGlzdCBlbnRyeSAxIGZvciBzdGF0ZSBJRCAxLCBhbmQKKwkJc28gb24uCisKK0ZvciBleGFtcGxlOgorCisJLyogRm9yIGEgY2xpZW50IGRldmljZSByZXF1aXJpbmcgbmFtZWQgc3RhdGVzICovCisJZGV2aWNlIHsKKwkJcGluY3RybC1uYW1lcyA9ICJhY3RpdmUiLCAiaWRsZSI7CisJCXBpbmN0cmwtMCA9IDwmc3RhdGVfMF9ub2RlX2E+OworCQlwaW5jdHJsLTEgPSA8JnN0YXRlXzFfbm9kZV9hICZzdGF0ZV8xX25vZGVfYj47CisJfTsKKworCS8qIEZvciB0aGUgc2FtZSBkZXZpY2UgaWYgdXNpbmcgc3RhdGUgSURzICovCisJZGV2aWNlIHsKKwkJcGluY3RybC0wID0gPCZzdGF0ZV8wX25vZGVfYT47CisJCXBpbmN0cmwtMSA9IDwmc3RhdGVfMV9ub2RlX2EgJnN0YXRlXzFfbm9kZV9iPjsKKwl9OworCisJLyoKKwkgKiBGb3IgYW4gSVAgYmxvY2sgd2hvc2UgYmluZGluZyBzdXBwb3J0cyBwaW4gY29uZmlndXJhdGlvbiwKKwkgKiBidXQgaW4gdXNlIG9uIGFuIFNvQyB0aGF0IGRvZXNuJ3QgaGF2ZSBhbnkgcGluIGNvbnRyb2wgaGFyZHdhcmUKKwkgKi8KKwlkZXZpY2UgeworCQlwaW5jdHJsLW5hbWVzID0gImFjdGl2ZSIsICJpZGxlIjsKKwkJcGluY3RybC0wID0gPD47CisJCXBpbmN0cmwtMSA9IDw+OworCX07CisKKz09IFBpbiBjb250cm9sbGVyIGRldmljZXMgPT0KKworUGluIGNvbnRyb2xsZXIgZGV2aWNlcyBzaG91bGQgY29udGFpbiB0aGUgcGluIGNvbmZpZ3VyYXRpb24gbm9kZXMgdGhhdCBjbGllbnQKK2RldmljZXMgcmVmZXJlbmNlLgorCitGb3IgZXhhbXBsZToKKworCXBpbmNvbnRyb2xsZXIgeworCQkuLi4gLyogU3RhbmRhcmQgRFQgcHJvcGVydGllcyBmb3IgdGhlIGRldmljZSBpdHNlbGYgZWxpZGVkICovCisKKwkJc3RhdGVfMF9ub2RlX2EgeworCQkJLi4uCisJCX07CisJCXN0YXRlXzFfbm9kZV9hIHsKKwkJCS4uLgorCQl9OworCQlzdGF0ZV8xX25vZGVfYiB7CisJCQkuLi4KKwkJfTsKKwl9CisKK1RoZSBjb250ZW50cyBvZiBlYWNoIG9mIHRob3NlIHBpbiBjb25maWd1cmF0aW9uIGNoaWxkIG5vZGVzIGlzIGRlZmluZWQKK2VudGlyZWx5IGJ5IHRoZSBiaW5kaW5nIGZvciB0aGUgaW5kaXZpZHVhbCBwaW4gY29udHJvbGxlciBkZXZpY2UuIFRoZXJlCitleGlzdHMgbm8gY29tbW9uIHN0YW5kYXJkIGZvciB0aGlzIGNvbnRlbnQuCisKK1RoZSBwaW4gY29uZmlndXJhdGlvbiBub2RlcyBuZWVkIG5vdCBiZSBkaXJlY3QgY2hpbGRyZW4gb2YgdGhlIHBpbiBjb250cm9sbGVyCitkZXZpY2U7IHRoZXkgbWF5IGJlIGdyYW5kY2hpbGRyZW4sIGZvciBleGFtcGxlLiBXaGV0aGVyIHRoaXMgaXMgbGVnYWwsIGFuZAord2hldGhlciB0aGVyZSBpcyBhbnkgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgY2hpbGQgYW5kIGludGVybWVkaWF0ZSBwYXJlbnQKK25vZGVzLCBpcyBhZ2FpbiBkZWZpbmVkIGVudGlyZWx5IGJ5IHRoZSBiaW5kaW5nIGZvciB0aGUgaW5kaXZpZHVhbCBwaW4KK2NvbnRyb2xsZXIgZGV2aWNlLgorCis9PSBHZW5lcmljIHBpbiBtdWx0aXBsZXhpbmcgbm9kZSBjb250ZW50ID09CisKK3BpbiBtdWx0aXBsZXhpbmcgbm9kZXM6CisKK2Z1bmN0aW9uCQktIHRoZSBtdXggZnVuY3Rpb24gdG8gc2VsZWN0Citncm91cHMJCQktIHRoZSBsaXN0IG9mIGdyb3VwcyB0byBzZWxlY3Qgd2l0aCB0aGlzIGZ1bmN0aW9uCisJCQkgIChlaXRoZXIgdGhpcyBvciAicGlucyIgbXVzdCBiZSBzcGVjaWZpZWQpCitwaW5zCQkJLSB0aGUgbGlzdCBvZiBwaW5zIHRvIHNlbGVjdCB3aXRoIHRoaXMgZnVuY3Rpb24gKGVpdGhlcgorCQkJICB0aGlzIG9yICJncm91cHMiIG11c3QgYmUgc3BlY2lmaWVkKQorCitFeGFtcGxlOgorCitzdGF0ZV8wX25vZGVfYSB7CisJdWFydDAgeworCQlmdW5jdGlvbiA9ICJ1YXJ0MCI7CisJCWdyb3VwcyA9ICJ1MHJ4dHgiLCAidTBydHNjdHMiOworCX07Cit9Oworc3RhdGVfMV9ub2RlX2EgeworCXNwaTAgeworCQlmdW5jdGlvbiA9ICJzcGkwIjsKKwkJZ3JvdXBzID0gInNwaTBwaW5zIjsKKwl9OworfTsKK3N0YXRlXzJfbm9kZV9hIHsKKwlmdW5jdGlvbiA9ICJpMmMwIjsKKwlwaW5zID0gIm1maW8yOSIsICJtZmlvMzAiOworfTsKKworPT0gR2VuZXJpYyBwaW4gY29uZmlndXJhdGlvbiBub2RlIGNvbnRlbnQgPT0KKworTWFueSBkYXRhIGl0ZW1zIHRoYXQgYXJlIHJlcHJlc2VudGVkIGluIGEgcGluIGNvbmZpZ3VyYXRpb24gbm9kZSBhcmUgY29tbW9uCithbmQgZ2VuZXJpYy4gUGluIGNvbnRyb2wgYmluZGluZ3Mgc2hvdWxkIHVzZSB0aGUgcHJvcGVydGllcyBkZWZpbmVkIGJlbG93Cit3aGVyZSB0aGV5IGFyZSBhcHBsaWNhYmxlOyBub3QgYWxsIG9mIHRoZXNlIHByb3BlcnRpZXMgYXJlIHJlbGV2YW50IG9yIHVzZWZ1bAorZm9yIGFsbCBoYXJkd2FyZSBvciBiaW5kaW5nIHN0cnVjdHVyZXMuIEVhY2ggaW5kaXZpZHVhbCBiaW5kaW5nIGRvY3VtZW50CitzaG91bGQgc3RhdGUgd2hpY2ggb2YgdGhlc2UgZ2VuZXJpYyBwcm9wZXJ0aWVzLCBpZiBhbnksIGFyZSB1c2VkLCBhbmQgdGhlCitzdHJ1Y3R1cmUgb2YgdGhlIERUIG5vZGVzIHRoYXQgY29udGFpbiB0aGVzZSBwcm9wZXJ0aWVzLgorCitTdXBwb3J0ZWQgZ2VuZXJpYyBwcm9wZXJ0aWVzIGFyZToKKworcGlucwkJCS0gdGhlIGxpc3Qgb2YgcGlucyB0aGF0IHByb3BlcnRpZXMgaW4gdGhlIG5vZGUKKwkJCSAgYXBwbHkgdG8gKGVpdGhlciB0aGlzIG9yICJncm91cCIgaGFzIHRvIGJlCisJCQkgIHNwZWNpZmllZCkKK2dyb3VwCQkJLSB0aGUgZ3JvdXAgdG8gYXBwbHkgdGhlIHByb3BlcnRpZXMgdG8sIGlmIHRoZSBkcml2ZXIKKwkJCSAgc3VwcG9ydHMgY29uZmlndXJhdGlvbiBvZiB3aG9sZSBncm91cHMgcmF0aGVyIHRoYW4KKwkJCSAgaW5kaXZpZHVhbCBwaW5zIChlaXRoZXIgdGhpcyBvciAicGlucyIgaGFzIHRvIGJlCisJCQkgIHNwZWNpZmllZCkKK2JpYXMtZGlzYWJsZQkJLSBkaXNhYmxlIGFueSBwaW4gYmlhcworYmlhcy1oaWdoLWltcGVkYW5jZQktIGhpZ2ggaW1wZWRhbmNlIG1vZGUgKCJ0aGlyZC1zdGF0ZSIsICJmbG9hdGluZyIpCitiaWFzLWJ1cy1ob2xkCQktIGxhdGNoIHdlYWtseQorYmlhcy1wdWxsLXVwCQktIHB1bGwgdXAgdGhlIHBpbgorYmlhcy1wdWxsLWRvd24JCS0gcHVsbCBkb3duIHRoZSBwaW4KK2JpYXMtcHVsbC1waW4tZGVmYXVsdAktIHVzZSBwaW4tZGVmYXVsdCBwdWxsIHN0YXRlCitkcml2ZS1wdXNoLXB1bGwJCS0gZHJpdmUgYWN0aXZlbHkgaGlnaCBhbmQgbG93Citkcml2ZS1vcGVuLWRyYWluCS0gZHJpdmUgd2l0aCBvcGVuIGRyYWluCitkcml2ZS1vcGVuLXNvdXJjZQktIGRyaXZlIHdpdGggb3BlbiBzb3VyY2UKK2RyaXZlLXN0cmVuZ3RoCQktIHNpbmsgb3Igc291cmNlIGF0IG1vc3QgWCBtQQoraW5wdXQtZW5hYmxlCQktIGVuYWJsZSBpbnB1dCBvbiBwaW4gKG5vIGVmZmVjdCBvbiBvdXRwdXQpCitpbnB1dC1kaXNhYmxlCQktIGRpc2FibGUgaW5wdXQgb24gcGluIChubyBlZmZlY3Qgb24gb3V0cHV0KQoraW5wdXQtc2NobWl0dC1lbmFibGUJLSBlbmFibGUgc2NobWl0dC10cmlnZ2VyIG1vZGUKK2lucHV0LXNjaG1pdHQtZGlzYWJsZQktIGRpc2FibGUgc2NobWl0dC10cmlnZ2VyIG1vZGUKK2lucHV0LWRlYm91bmNlCQktIGRlYm91bmNlIG1vZGUgd2l0aCBkZWJvdW5kIHRpbWUgWAorcG93ZXItc291cmNlCQktIHNlbGVjdCBiZXR3ZWVuIGRpZmZlcmVudCBwb3dlciBzdXBwbGllcworbG93LXBvd2VyLWVuYWJsZQktIGVuYWJsZSBsb3cgcG93ZXIgbW9kZQorbG93LXBvd2VyLWRpc2FibGUJLSBkaXNhYmxlIGxvdyBwb3dlciBtb2RlCitvdXRwdXQtbG93CQktIHNldCB0aGUgcGluIHRvIG91dHB1dCBtb2RlIHdpdGggbG93IGxldmVsCitvdXRwdXQtaGlnaAkJLSBzZXQgdGhlIHBpbiB0byBvdXRwdXQgbW9kZSB3aXRoIGhpZ2ggbGV2ZWwKK3NsZXctcmF0ZQkJLSBzZXQgdGhlIHNsZXcgcmF0ZQorCitGb3IgZXhhbXBsZToKKworc3RhdGVfMF9ub2RlX2EgeworCWN0c19yeGQgeworCQlwaW5zID0gIkdQSU8wX0FKNSIsICJHUElPMl9BSDQiOyAvKiBDVFMrUlhEICovCisJCWJpYXMtcHVsbC11cDsKKwl9OworfTsKK3N0YXRlXzFfbm9kZV9hIHsKKwlydHNfdHhkIHsKKwkJcGlucyA9ICJHUElPMV9BSjMiLCAiR1BJTzNfQUgzIjsgLyogUlRTK1RYRCAqLworCQlvdXRwdXQtaGlnaDsKKwl9OworfTsKK3N0YXRlXzJfbm9kZV9hIHsKKwlmb28geworCQlncm91cCA9ICJmb28tZ3JvdXAiOworCQliaWFzLXB1bGwtdXA7CisJfTsKK307CisKK1NvbWUgb2YgdGhlIGdlbmVyaWMgcHJvcGVydGllcyB0YWtlIGFyZ3VtZW50cy4gRm9yIHRob3NlIHRoYXQgZG8sIHRoZQorYXJndW1lbnRzIGFyZSBkZXNjcmliZWQgYmVsb3cuCisKKy0gcGlucyB0YWtlcyBhIGxpc3Qgb2YgcGluIG5hbWVzIG9yIElEcyBhcyBhIHJlcXVpcmVkIGFyZ3VtZW50LiBUaGUgc3BlY2lmaWMKKyAgYmluZGluZyBmb3IgdGhlIGhhcmR3YXJlIGRlZmluZXM6CisgIC0gV2hldGhlciB0aGUgZW50cmllcyBhcmUgaW50ZWdlcnMgb3Igc3RyaW5ncywgYW5kIHRoZWlyIG1lYW5pbmcuCisKKy0gYmlhcy1wdWxsLXVwLCAtZG93biBhbmQgLXBpbi1kZWZhdWx0IHRha2UgYXMgb3B0aW9uYWwgYXJndW1lbnQgb24gaGFyZHdhcmUKKyAgc3VwcG9ydGluZyBpdCB0aGUgcHVsbCBzdHJlbmd0aCBpbiBPaG0uIGJpYXMtZGlzYWJsZSB3aWxsIGRpc2FibGUgdGhlIHB1bGwuCisKKy0gZHJpdmUtc3RyZW5ndGggdGFrZXMgYXMgYXJndW1lbnQgdGhlIHRhcmdldCBzdHJlbmd0aCBpbiBtQS4KKworLSBpbnB1dC1kZWJvdW5jZSB0YWtlcyB0aGUgZGVib3VuY2UgdGltZSBpbiB1c2VjIGFzIGFyZ3VtZW50CisgIG9yIDAgdG8gZGlzYWJsZSBkZWJvdW5jaW5nCisKK01vcmUgaW4tZGVwdGggZG9jdW1lbnRhdGlvbiBvbiB0aGVzZSBwYXJhbWV0ZXJzIGNhbiBiZSBmb3VuZCBpbgorPGluY2x1ZGUvbGludXgvcGluY3RybC9waW5jb25mLWdlbmVyaWMuaD4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3BpbmN0cmwtbXQ2NXh4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3BpbmN0cmwtbXQ2NXh4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDgwYmMzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcGluY3RybC1tdDY1eHgudHh0CkBAIC0wLDAgKzEsMTUwIEBACisqIE1lZGlhdGVrIE1UNjVYWCBQaW4gQ29udHJvbGxlcgorCitUaGUgTWVkaWF0ZWsncyBQaW4gY29udHJvbGxlciBpcyB1c2VkIHRvIGNvbnRyb2wgU29DIHBpbnMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHZhbHVlIHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZy4KKyAgICAoYSkgIm1lZGlhdGVrLG10ODEzNS1waW5jdHJsIiwgY29tcGF0aWJsZSB3aXRoIG10ODEzNSBwaW5jdHJsLgorICAgIChiKSAibWVkaWF0ZWssbXQ4MTczLXBpbmN0cmwiLCBjb21wYXRpYmxlIHdpdGggbXQ4MTczIHBpbmN0cmwuCisgICAgKGMpICJtZWRpYXRlayxtdDYzOTctcGluY3RybCIsIGNvbXBhdGlibGUgd2l0aCBtdDYzOTcgcGluY3RybC4KKyAgICAoZCkgIm1lZGlhdGVrLG10ODEyNy1waW5jdHJsIiwgY29tcGF0aWJsZSB3aXRoIG10ODEyNyBwaW5jdHJsLgorLSBwaW5zLWFyZS1udW1iZXJlZDogU3BlY2lmeSB0aGUgc3Vibm9kZXMgYXJlIHVzaW5nIG51bWJlcmVkIHBpbm11eCB0bworICBzcGVjaWZ5IHBpbnMuCistIGdwaW8tY29udHJvbGxlciA6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIGdwaW8gY29udHJvbGxlci4KKy0gI2dwaW8tY2VsbHM6IG51bWJlciBvZiBjZWxscyBpbiBHUElPIHNwZWNpZmllci4gU2luY2UgdGhlIGdlbmVyaWMgR1BJTworICBiaW5kaW5nIGlzIHVzZWQsIHRoZSBhbW91bnQgb2YgY2VsbHMgbXVzdCBiZSBzcGVjaWZpZWQgYXMgMi4gU2VlIHRoZSBiZWxvdworICBtZW50aW9uZWQgZ3BpbyBiaW5kaW5nIHJlcHJlc2VudGF0aW9uIGZvciBkZXNjcmlwdGlvbiBvZiBwYXJ0aWN1bGFyIGNlbGxzLgorCisJRWc6IDwmcGlvIDYgMD4KKwk8W3BoYW5kbGUgb2YgdGhlIGdwaW8gY29udHJvbGxlciBub2RlXQorCVtsaW5lIG51bWJlciB3aXRoaW4gdGhlIGdwaW8gY29udHJvbGxlcl0KKwlbZmxhZ3NdPgorCisJVmFsdWVzIGZvciBncGlvIHNwZWNpZmllcjoKKwktIExpbmUgbnVtYmVyOiBpcyBhIHZhbHVlIGJldHdlZW4gMCB0byAyMDIuCisJLSBGbGFnczogIGJpdCBmaWVsZCBvZiBmbGFncywgYXMgZGVmaW5lZCBpbiA8ZHQtYmluZGluZ3MvZ3Bpby9ncGlvLmg+LgorICAgICAgICAgICAgT25seSB0aGUgZm9sbG93aW5nIGZsYWdzIGFyZSBzdXBwb3J0ZWQ6CisgICAgICAgICAgICAwIC0gR1BJT19BQ1RJVkVfSElHSAorICAgICAgICAgICAgMSAtIEdQSU9fQUNUSVZFX0xPVworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBtZWRpYXRlayxwY3RsLXJlZ21hcDogU2hvdWxkIGJlIGEgcGhhbmRsZSBvZiB0aGUgc3lzY2ZnIG5vZGUuCistIHJlZzogcGh5c2ljYWxsIGFkZHJlc3MgYmFzZSBmb3IgRUlOVCByZWdpc3RlcnMKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXI6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSAjaW50ZXJydXB0LWNlbGxzOiBTaG91bGQgYmUgdHdvLgorLSBpbnRlcnJ1cHRzIDogVGhlIGludGVycnVwdCBvdXRwdXRzIGZyb20gdGhlIGNvbnRyb2xsZXIuCisKK1BsZWFzZSByZWZlciB0byBwaW5jdHJsLWJpbmRpbmdzLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgZGV0YWlscyBvZiB0aGUKK2NvbW1vbiBwaW5jdHJsIGJpbmRpbmdzIHVzZWQgYnkgY2xpZW50IGRldmljZXMuCisKK1N1Ym5vZGUgZm9ybWF0CitBIHBpbmN0cmwgbm9kZSBzaG91bGQgY29udGFpbiBhdCBsZWFzdCBvbmUgc3Vibm9kZXMgcmVwcmVzZW50aW5nIHRoZQorcGluY3RybCBncm91cHMgYXZhaWxhYmxlIG9uIHRoZSBtYWNoaW5lLiBFYWNoIHN1Ym5vZGUgd2lsbCBsaXN0IHRoZQorcGlucyBpdCBuZWVkcywgYW5kIGhvdyB0aGV5IHNob3VsZCBiZSBjb25maWd1cmVkLCB3aXRoIHJlZ2FyZCB0byBtdXhlcgorY29uZmlndXJhdGlvbiwgcHVsbHVwcywgZHJpdmUgc3RyZW5ndGgsIGlucHV0IGVuYWJsZS9kaXNhYmxlIGFuZCBpbnB1dCBzY2htaXR0LgorCisgICAgbm9kZSB7CisJcGlubXV4ID0gPFBJTl9OVU1CRVJfUElOTVVYPjsKKwlHRU5FUklDX1BJTkNPTkZJRzsKKyAgICB9OworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBwaW5tdXg6IGludGVnZXIgYXJyYXksIHJlcHJlc2VudHMgZ3BpbyBwaW4gbnVtYmVyIGFuZCBtdXggc2V0dGluZy4KKyAgICBTdXBwb3J0ZWQgcGluIG51bWJlciBhbmQgbXV4IHZhcmllcyBmb3IgZGlmZmVyZW50IFNvQ3MsIGFuZCBhcmUgZGVmaW5lZAorICAgIGFzIG1hY3JvcyBpbiBib290L2R0cy88c29jPi1waW5mdW5jLmggZGlyZWN0bHkuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIEdFTkVSSUNfUElOQ09ORklHOiBpcyB0aGUgZ2VuZXJpYyBwaW5jb25maWcgb3B0aW9ucyB0byB1c2UsIGJpYXMtZGlzYWJsZSwKKyAgICBiaWFzLXB1bGwtZG93biwgYmlhcy1wdWxsLXVwLCBpbnB1dC1lbmFibGUsIGlucHV0LWRpc2FibGUsIG91dHB1dC1sb3csIG91dHB1dC1oaWdoLAorICAgIGlucHV0LXNjaG1pdHQtZW5hYmxlLCBpbnB1dC1zY2htaXR0LWRpc2FibGUgYW5kIGRyaXZlLXN0cmVuZ3RoIGFyZSB2YWxpZC4KKworICAgIFNvbWUgc3BlY2lhbCBwaW5zIGhhdmUgZXh0cmEgcHVsbCB1cCBzdHJlbmd0aCwgdGhlcmUgYXJlIFIwIGFuZCBSMSBwdWxsLXVwCisgICAgcmVzaXN0b3JzIGF2YWlsYWJsZSwgYnV0IGZvciB1c2VyLCBpdCdzIG9ubHkgbmVlZCB0byBzZXQgUjFSMCBhcyAwMCwgMDEsIDEwIG9yIDExLgorICAgIFNvIHdoZW4gY29uZmlnIGJpYXMtcHVsbC11cCwgaXQgc3VwcG9ydCBhcmd1bWVudHMgZm9yIHRob3NlIHNwZWNpYWwgcGlucy4KKyAgICBTb21lIG1hY3JvcyBoYXZlIGJlZW4gZGVmaW5lZCBmb3IgdGhpcyB1c2FnZSwgc3VjaCBhcyBNVEtfUFVQRF9TRVRfUjFSMF8wMC4KKyAgICBTZWUgZHQtYmluZGluZ3MvcGluY3RybC9tdDY1eHguaC4KKworICAgIFdoZW4gY29uZmlnIGRyaXZlLXN0cmVuZ3RoLCBpdCBjYW4gc3VwcG9ydCBzb21lIGFyZ3VtZW50cywgc3VjaCBhcworICAgIE1US19EUklWRV80bUEsIE1US19EUklWRV82bUEsIGV0Yy4gU2VlIGR0LWJpbmRpbmdzL3BpbmN0cmwvbXQ2NXh4LmguCisKK0V4YW1wbGVzOgorCisjaW5jbHVkZSAibXQ4MTM1LXBpbmZ1bmMuaCIKKworLi4uCit7CisJc3lzY2ZnX3BjdGxfYTogc3lzY2ZnX3BjdGxfYUAxMDAwNTAwMCB7CisJCWNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTM1LXBjdGwtYS1zeXNjZmciLCAic3lzY29uIjsKKwkJcmVnID0gPDAgMHgxMDAwNTAwMCAwIDB4MTAwMD47CisJfTsKKworCXN5c2NmZ19wY3RsX2I6IHN5c2NmZ19wY3RsX2JAMTAyMEMwMjAgeworCQljb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODEzNS1wY3RsLWItc3lzY2ZnIiwgInN5c2NvbiI7CisJCXJlZyA9IDwwIDB4MTAyMEMwMjAgMCAweDEwMDA+OworCX07CisKKwlwaW5jdHJsQDAxYzIwODAwIHsKKwkJY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxMzUtcGluY3RybCI7CisJCXJlZyA9IDwwIDB4MTAwMEIwMDAgMCAweDEwMDA+OworCQltZWRpYXRlayxwY3RsLXJlZ21hcCA9IDwmc3lzY2ZnX3BjdGxfYSAmc3lzY2ZnX3BjdGxfYj47CisJCXBpbnMtYXJlLW51bWJlcmVkOworCQlncGlvLWNvbnRyb2xsZXI7CisJCSNncGlvLWNlbGxzID0gPDI+OworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDExNiBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKKwkJCQk8R0lDX1NQSSAxMTcgSVJRX1RZUEVfTEVWRUxfSElHSD4sCisJCQkJPEdJQ19TUEkgMTE4IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCisJCWkyYzBfcGluc19hOiBpMmMwQDAgeworCQkJcGluczEgeworCQkJCXBpbm11eCA9IDxNVDgxMzVfUElOXzEwMF9TREEwX19GVU5DX1NEQTA+LAorCQkJCQkgPE1UODEzNV9QSU5fMTAxX1NDTDBfX0ZVTkNfU0NMMD47CisJCQkJYmlhcy1kaXNhYmxlOworCQkJfTsKKwkJfTsKKworCQlpMmMxX3BpbnNfYTogaTJjMUAwIHsKKwkJCXBpbnMgeworCQkJCXBpbm11eCA9IDxNVDgxMzVfUElOXzE5NV9TREExX19GVU5DX1NEQTE+LAorCQkJCQkgPE1UODEzNV9QSU5fMTk2X1NDTDFfX0ZVTkNfU0NMMT47CisJCQkJYmlhcy1wdWxsLXVwID0gPDU1PjsKKwkJCX07CisJCX07CisKKwkJaTJjMl9waW5zX2E6IGkyYzJAMCB7CisJCQlwaW5zMSB7CisJCQkJcGlubXV4ID0gPE1UODEzNV9QSU5fMTkzX1NEQTJfX0ZVTkNfU0RBMj47CisJCQkJYmlhcy1wdWxsLWRvd247CisJCQl9OworCisJCQlwaW5zMiB7CisJCQkJcGlubXV4ID0gPE1UODEzNV9QSU5fNDlfV0FUQ0hET0dfX0ZVTkNfR1BJTzQ5PjsKKwkJCQliaWFzLXB1bGwtdXA7CisJCQl9OworCQl9OworCisJCWkyYzNfcGluc19hOiBpMmMzQDAgeworCQkJcGluczEgeworCQkJCXBpbm11eCA9IDxNVDgxMzVfUElOXzQwX0RBQ19DTEtfX0ZVTkNfR1BJTzQwPiwKKwkJCQkJIDxNVDgxMzVfUElOXzQxX0RBQ19XU19fRlVOQ19HUElPNDE+OworCQkJCWJpYXMtcHVsbC11cCA9IDw1NT47CisJCQl9OworCisJCQlwaW5zMiB7CisJCQkJcGlubXV4ID0gPE1UODEzNV9QSU5fMzVfU0NMM19fRlVOQ19TQ0wzPiwKKwkJCQkJIDxNVDgxMzVfUElOXzM2X1NEQTNfX0ZVTkNfU0RBMz47CisJCQkJb3V0cHV0LWxvdzsKKwkJCQliaWFzLXB1bGwtdXAgPSA8NTU+OworCQkJfTsKKworCQkJcGluczMgeworCQkJCXBpbm11eCA9IDxNVDgxMzVfUElOXzU3X0pUQ0tfX0ZVTkNfR1BJTzU3PiwKKwkJCQkJIDxNVDgxMzVfUElOXzYwX0pURElfX0ZVTkNfSlREST47CisJCQkJZHJpdmUtc3RyZW5ndGggPSA8MzI+OworCQkJfTsKKwkJfTsKKworCQkuLi4KKwl9Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcGluY3RybC1wYWxtYXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcGluY3RybC1wYWxtYXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhZjI5N2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9waW5jdHJsLXBhbG1hcy50eHQKQEAgLTAsMCArMSw5NiBAQAorUGFsbWFzIFBpbmNvbnRyb2wgYmluZGluZ3MKKworVGhlIHBpbnMgb2YgUGFsbWFzIGRldmljZSBjYW4gYmUgc2V0IG9uIGRpZmZlcmVudCBvcHRpb24gYW5kIHByb3ZpZGVzCit0aGUgY29uZmlndXJhdGlvbiBmb3IgUHVsbCBVUC9ET1dOLCBvcGVuIGRyYWluIGV0Yy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogSXQgbXVzdCBiZSBvbmUgb2YgZm9sbG93aW5nOgorICAtICJ0aSxwYWxtYXMtcGluY3RybCIgZm9yIFBhbG1hIHNlcmllcyBvZiB0aGUgcGluY29udHJvbC4KKyAgLSAidGksdHBzNjU5MTMtcGluY3RybCIgZm9yIFBhbG1hIHNlcmllcyBkZXZpY2UgVFBTNjU5MTMuCisgIC0gInRpLHRwczgwMDM2LXBpbmN0cmwiIGZvciBQYWxtYSBzZXJpZXMgZGV2aWNlIFRQUzgwMDM2LgorCitQbGVhc2UgcmVmZXIgdG8gcGluY3RybC1iaW5kaW5ncy50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGRldGFpbHMgb2YgdGhlCitjb21tb24gcGluY3RybCBiaW5kaW5ncyB1c2VkIGJ5IGNsaWVudCBkZXZpY2VzLCBpbmNsdWRpbmcgdGhlIG1lYW5pbmcgb2YgdGhlCitwaHJhc2UgInBpbiBjb25maWd1cmF0aW9uIG5vZGUiLgorCitQYWxtYXMncyBwaW4gY29uZmlndXJhdGlvbiBub2RlcyBhY3QgYXMgYSBjb250YWluZXIgZm9yIGFuIGFyYml0cmFyeSBudW1iZXIgb2YKK3N1Ym5vZGVzLiBFYWNoIG9mIHRoZXNlIHN1Ym5vZGVzIHJlcHJlc2VudHMgc29tZSBkZXNpcmVkIGNvbmZpZ3VyYXRpb24gZm9yIGEKK2xpc3Qgb2YgcGlucy4gVGhpcyBjb25maWd1cmF0aW9uIGNhbiBpbmNsdWRlIHRoZSBtdXggZnVuY3Rpb24gdG8gc2VsZWN0IG9uCit0aG9zZSBwaW4ocyksIGFuZCB2YXJpb3VzIHBpbiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMsIHN1Y2ggYXMgcHVsbC11cCwKK29wZW4gZHJhaW4uCisKK1RoZSBuYW1lIG9mIGVhY2ggc3Vibm9kZSBpcyBub3QgaW1wb3J0YW50OyBhbGwgc3Vibm9kZXMgc2hvdWxkIGJlIGVudW1lcmF0ZWQKK2FuZCBwcm9jZXNzZWQgcHVyZWx5IGJhc2VkIG9uIHRoZWlyIGNvbnRlbnQuCisKK0VhY2ggc3Vibm9kZSBvbmx5IGFmZmVjdHMgdGhvc2UgcGFyYW1ldGVycyB0aGF0IGFyZSBleHBsaWNpdGx5IGxpc3RlZC4gSW4KK290aGVyIHdvcmRzLCBhIHN1Ym5vZGUgdGhhdCBsaXN0cyBhIG11eCBmdW5jdGlvbiBidXQgbm8gcGluIGNvbmZpZ3VyYXRpb24KK3BhcmFtZXRlcnMgaW1wbGllcyBubyBpbmZvcm1hdGlvbiBhYm91dCBhbnkgcGluIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4KK1NpbWlsYXJseSwgYSBwaW4gc3Vibm9kZSB0aGF0IGRlc2NyaWJlcyBhIHB1bGx1cCBwYXJhbWV0ZXIgaW1wbGllcyBubworaW5mb3JtYXRpb24gYWJvdXQgZS5nLiB0aGUgbXV4IGZ1bmN0aW9uLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSB0aSxwYWxtYXMtZW5hYmxlLWR2ZnMxOiBFbmFibGUgRFZGUzEuIENvbmZpZ3VyZSBwaW5zIGZvciBEVkZTMSBtb2RlLgorCVNlbGVjdGlvbiBwcmltYXJ5IG9yIHNlY29uZGFyeSBmdW5jdGlvbiBhc3NvY2lhdGVkIHRvIEkyQzJfU0NMX1NDRSwKKwlJMkMyX1NEQV9TRE8gcGluL3BhZCBmb3IgRFZGUzEgaW50ZXJmYWNlCistIHRpLHBhbG1hcy1lbmFibGUtZHZmczI6IEVuYWJsZSBEVkZTMi4gQ29uZmlndXJlIHBpbnMgZm9yIERWRlMyIG1vZGUuCisJU2VsZWN0aW9uIHByaW1hcnkgb3Igc2Vjb25kYXJ5IGZ1bmN0aW9uIGFzc29jaWF0ZWQgdG8gR1BBRENfU1RBUlQKKwlhbmQgU1lTRU4yIHBpbi9wYWQgZm9yIERWRlMyIGludGVyZmFjZQorCitUaGlzIGJpbmRpbmcgdXNlcyB0aGUgZm9sbG93aW5nIGdlbmVyaWMgcHJvcGVydGllcyBhcyBkZWZpbmVkIGluCitwaW5jdHJsLWJpbmRpbmdzLnR4dDoKKworUmVxdWlyZWQ6IHBpbnMKK09wdGlvbnM6IGZ1bmN0aW9uLCBiaWFzLWRpc2FibGUsIGJpYXMtcHVsbC11cCwgYmlhcy1wdWxsLWRvd24sCisJIGRyaXZlLW9wZW4tZHJhaW4uCisKK05vdGUgdGhhdCBtYW55IG9mIHRoZXNlIHByb3BlcnRpZXMgYXJlIG9ubHkgdmFsaWQgZm9yIGNlcnRhaW4gc3BlY2lmaWMgcGlucy4KK1NlZSB0aGUgUGFsbWFzIGRldmljZSBkYXRhc2hlZXQgZm9yIGNvbXBsZXRlIGRldGFpbHMgcmVnYXJkaW5nIHdoaWNoIHBpbnMKK3N1cHBvcnQgd2hpY2ggZnVuY3Rpb25hbGl0eS4KKworVmFsaWQgdmFsdWVzIGZvciBwaW4gbmFtZXMgYXJlOgorCWdwaW8wLCBncGlvMSwgZ3BpbzIsIGdwaW8zLCBncGlvNCwgZ3BpbzUsIGdwaW82LCBncGlvNywgZ3BpbzgsIGdwaW85LAorCWdwaW8xMCwgZ3BpbzExLCBncGlvMTIsIGdwaW8xMywgZ3BpbzE0LCBncGlvMTUsIHZhYywgcG93ZXJnb29kLAorCW5yZXN3YXJtLCBwd3Jkb3duLCBncGFkY19zdGFydCwgcmVzZXRfaW4sIG5zbGVlcCwgZW5hYmxlMSwgZW5hYmxlMiwKKwlpbnQuCisKK1ZhbGlkIHZhbHVlIG9mIGZ1bmN0aW9uIG5hbWVzIGFyZToKKwlncGlvLCBsZWQsIHB3bSwgcmVnZW4sIHN5c2VuLCBjbGszMmtnYXVkaW8sIGlkLCB2YnVzX2RldCwgY2hyZ19kZXQsCisJdmFjLCB2YWNvaywgcG93ZXJnb29kLCB1c2JfcHNlbCwgbXNlY3VyZSwgcHdyaG9sZCwgaW50LCBucmVzd2FybSwKKwlzaW1yc3RvLCBzaW1yc3RpLCBsb3dfdmJhdCwgd2lyZWxlc3NfY2hyZzEsIHJjbSwgcHdyZG93biwgZ3BhZGNfc3RhcnQsCisJcmVzZXRfaW4sIG5zbGVlcCwgZW5hYmxlLgorCitUaGVyZSBhcmUgNCBzcGVjaWFsIGZ1bmN0aW9uczogb3B0MCwgb3B0MSwgb3B0MiBhbmQgb3B0My4gSWYgYW55IG9mIHRoZXNlCitmdW5jdGlvbnMgaXMgc2VsZWN0ZWQgdGhlbiBkaXJlY3RseSBwaW5zIHJlZ2lzdGVyIHdpbGwgYmUgd3JpdHRlbiB3aXRoIDAsIDEsIDIKK29yIDMgcmVzcGVjdGl2ZWx5IGlmIGl0IGlzIHZhbGlkIGZvciB0aGF0IHBpbnMgb3IgbGlzdCBvZiBwaW5zLgorCitFeGFtcGxlOgorCXBhbG1hczogdHBzNjU5MTMgeworCQkuLi4uCisJCXBpbmN0cmwgeworCQkJY29tcGF0aWJsZSA9ICJ0aSx0cHM2NTkxMy1waW5jdHJsIjsKKwkJCXRpLHBhbG1hcy1lbmFibGUtZHZmczE7CisJCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQkJcGluY3RybC0wID0gPCZwYWxtYXNfcGluc19zdGF0ZT47CisKKwkJCXBhbG1hc19waW5zX3N0YXRlOiBwaW5tdXggeworCQkJCWdwaW8wIHsKKwkJCQkJcGlucyA9ICJncGlvMCI7CisJCQkJCWZ1bmN0aW9uID0gImlkIjsKKwkJCQkJYmlhcy1wdWxsLXVwOworCQkJCX07CisKKwkJCQl2YWMgeworCQkJCQlwaW5zID0gInZhYyI7CisJCQkJCWZ1bmN0aW9uID0gInZhY29rIjsKKwkJCQkJYmlhcy1wdWxsLWRvd247CisJCQkJfTsKKworCQkJCWdwaW81IHsKKwkJCQkJcGlucyA9ICJncGlvNSI7CisJCQkJCWZ1bmN0aW9uID0gIm9wdDAiOworCQkJCQlkcml2ZS1vcGVuLWRyYWluID0gPDE+OworCQkJCX07CisJCQl9OworCQl9OworCQkuLi4uCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3BpbmN0cmwtc2luZ2xlLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3BpbmN0cmwtc2luZ2xlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NmRjYWE5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcGluY3RybC1zaW5nbGUudHh0CkBAIC0wLDAgKzEsMjUyIEBACitPbmUtcmVnaXN0ZXItcGVyLXBpbiB0eXBlIGRldmljZSB0cmVlIGJhc2VkIHBpbmN0cmwgZHJpdmVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAicGluY3RybC1zaW5nbGUiIG9yICJwaW5jb25mLXNpbmdsZSIuCisgICJwaW5jdHJsLXNpbmdsZSIgbWVhbnMgdGhhdCBwaW5jb25mIGlzbid0IHN1cHBvcnRlZC4KKyAgInBpbmNvbmYtc2luZ2xlIiBtZWFucyB0aGF0IGdlbmVyaWMgcGluY29uZiBpcyBzdXBwb3J0ZWQuCisKKy0gcmVnIDogb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIG11eCByZWdpc3RlcnMKKworLSBwaW5jdHJsLXNpbmdsZSxyZWdpc3Rlci13aWR0aCA6IHBpbm11eCByZWdpc3RlciBhY2Nlc3Mgd2lkdGggaW4gYml0cworCistIHBpbmN0cmwtc2luZ2xlLGZ1bmN0aW9uLW1hc2sgOiBtYXNrIG9mIGFsbG93ZWQgcGlubXV4IGZ1bmN0aW9uIGJpdHMKKyAgaW4gdGhlIHBpbm11eCByZWdpc3RlcgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBwaW5jdHJsLXNpbmdsZSxmdW5jdGlvbi1vZmYgOiBmdW5jdGlvbiBvZmYgbW9kZSBmb3IgZGlzYWJsZWQgc3RhdGUgaWYKKyAgYXZhaWxhYmxlIGFuZCBzYW1lIGZvciBhbGwgcmVnaXN0ZXJzOyBpZiBub3Qgc3BlY2lmaWVkLCBkaXNhYmxpbmcgb2YKKyAgcGluIGZ1bmN0aW9ucyBpcyBpZ25vcmVkCisKKy0gcGluY3RybC1zaW5nbGUsYml0LXBlci1tdXggOiBib29sZWFuIHRvIGluZGljYXRlIHRoYXQgb25lIHJlZ2lzdGVyIGNvbnRyb2xzCisgIG1vcmUgdGhhbiBvbmUgcGluLCBmb3Igd2hpY2ggInBpbmN0cmwtc2luZ2xlLGZ1bmN0aW9uLW1hc2siIHByb3BlcnR5IHNwZWNpZmllcworIHBvc2l0aW9uIG1hc2sgb2YgcGluLgorCistIHBpbmN0cmwtc2luZ2xlLGRyaXZlLXN0cmVuZ3RoIDogYXJyYXkgb2YgdmFsdWUgdGhhdCBhcmUgdXNlZCB0byBjb25maWd1cmUKKyAgZHJpdmUgc3RyZW5ndGggaW4gdGhlIHBpbm11eCByZWdpc3Rlci4gVGhleSdyZSB2YWx1ZSBvZiBkcml2ZSBzdHJlbmd0aAorICBjdXJyZW50IGFuZCBkcml2ZSBzdHJlbmd0aCBtYXNrLgorCisJCS8qIGRyaXZlIHN0cmVuZ3RoIGN1cnJlbnQsIG1hc2sgKi8KKwkJcGluY3RybC1zaW5nbGUscG93ZXItc291cmNlID0gPDB4MzAgMHhmMD47CisKKy0gcGluY3RybC1zaW5nbGUsYmlhcy1wdWxsdXAgOiBhcnJheSBvZiB2YWx1ZSB0aGF0IGFyZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUKKyAgaW5wdXQgYmlhcyBwdWxsdXAgaW4gdGhlIHBpbm11eCByZWdpc3Rlci4KKworCQkvKiBpbnB1dCwgZW5hYmxlZCBwdWxsdXAgYml0cywgZGlzYWJsZWQgcHVsbHVwIGJpdHMsIG1hc2sgKi8KKwkJcGluY3RybC1zaW5nbGUsYmlhcy1wdWxsdXAgPSA8MCAxIDAgMT47CisKKy0gcGluY3RybC1zaW5nbGUsYmlhcy1wdWxsZG93biA6IGFycmF5IG9mIHZhbHVlIHRoYXQgYXJlIHVzZWQgdG8gY29uZmlndXJlIHRoZQorICBpbnB1dCBiaWFzIHB1bGxkb3duIGluIHRoZSBwaW5tdXggcmVnaXN0ZXIuCisKKwkJLyogaW5wdXQsIGVuYWJsZWQgcHVsbGRvd24gYml0cywgZGlzYWJsZWQgcHVsbGRvd24gYml0cywgbWFzayAqLworCQlwaW5jdHJsLXNpbmdsZSxiaWFzLXB1bGxkb3duID0gPDIgMiAwIDI+OworCisgICogVHdvIGJpdHMgdG8gY29udHJvbCBpbnB1dCBiaWFzIHB1bGx1cCBhbmQgcHVsbGRvd246IFVzZXIgc2hvdWxkIHVzZQorICAgIHBpbmN0cmwtc2luZ2xlLGJpYXMtcHVsbHVwICYgcGluY3RybC1zaW5nbGUsYmlhcy1wdWxsZG93bi4gT25lIGJpdCBtZWFucworICAgIHB1bGx1cCwgYW5kIHRoZSBvdGhlciBvbmUgYml0IG1lYW5zIHB1bGxkb3duLgorICAqIFRocmVlIGJpdHMgdG8gY29udHJvbCBpbnB1dCBiaWFzIGVuYWJsZSwgcHVsbHVwIGFuZCBwdWxsZG93bi4gVXNlciBzaG91bGQKKyAgICB1c2UgcGluY3RybC1zaW5nbGUsYmlhcy1wdWxsdXAgJiBwaW5jdHJsLXNpbmdsZSxiaWFzLXB1bGxkb3duLiBJbnB1dCBiaWFzCisgICAgZW5hYmxlIGJpdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gcHVsbHVwIG9yIHB1bGxkb3duIGJpdHMuCisgICogQWx0aG91Z2ggZHJpdmVyIGNvdWxkIHNldCBQSU5fQ09ORklHX0JJQVNfRElTQUJMRSwgdGhlcmUncyBubyBwcm9wZXJ0eSBhcworICAgIHBpbmN0cmwtc2luZ2xlLGJpYXMtZGlzYWJsZS4gQmVjYXVzZSBwaW5jdHJsIHNpbmdsZSBkcml2ZXIgY291bGQgaW1wbGVtZW50CisgICAgaXQgYnkgY2FsbGluZyBwdWxsZG93biwgcHVsbHVwIGRpc2FibGVkLgorCistIHBpbmN0cmwtc2luZ2xlLGlucHV0LXNjaG1pdHQgOiBhcnJheSBvZiB2YWx1ZSB0aGF0IGFyZSB1c2VkIHRvIGNvbmZpZ3VyZQorICBpbnB1dCBzY2htaXR0IGluIHRoZSBwaW5tdXggcmVnaXN0ZXIuIEluIHNvbWUgc2lsaWNvbnMsIHRoZXJlJ3JlIHR3byBpbnB1dAorICBzY2htaXR0IHZhbHVlIChyaXNpbmctZWRnZSAmIGZhbGxpbmctZWRnZSkgaW4gdGhlIHBpbm11eCByZWdpc3Rlci4KKworCQkvKiBpbnB1dCBzY2htaXR0IHZhbHVlLCBtYXNrICovCisJCXBpbmN0cmwtc2luZ2xlLGlucHV0LXNjaG1pdHQgPSA8MHgzMCAweDcwPjsKKworLSBwaW5jdHJsLXNpbmdsZSxpbnB1dC1zY2htaXR0LWVuYWJsZSA6IGFycmF5IG9mIHZhbHVlIHRoYXQgYXJlIHVzZWQgdG8KKyAgY29uZmlndXJlIGlucHV0IHNjaG1pdHQgZW5hYmxlIG9yIGRpc2FibGUgaW4gdGhlIHBpbm11eCByZWdpc3Rlci4KKworCQkvKiBpbnB1dCwgZW5hYmxlIGJpdHMsIGRpc2FibGUgYml0cywgbWFzayAqLworCQlwaW5jdHJsLXNpbmdsZSxpbnB1dC1zY2htaXR0LWVuYWJsZSA9IDwweDMwIDB4NDAgMCAweDcwPjsKKworLSBwaW5jdHJsLXNpbmdsZSxsb3ctcG93ZXItbW9kZSA6IGFycmF5IG9mIHZhbHVlIHRoYXQgYXJlIHVzZWQgdG8gY29uZmlndXJlCisgIGxvdyBwb3dlciBtb2RlIG9mIHRoaXMgcGluLiBGb3Igc29tZSBzaWxpY29ucywgdGhlIGxvdyBwb3dlciBtb2RlIHdpbGwKKyAgY29udHJvbCB0aGUgb3V0cHV0IG9mIHRoZSBwaW4gd2hlbiB0aGUgcGFkIGluY2x1ZGluZyB0aGUgcGluIGVudGVyIGxvdworICBwb3dlciBtb2RlLgorCQkvKiBsb3cgcG93ZXIgbW9kZSB2YWx1ZSwgbWFzayAqLworCQlwaW5jdHJsLXNpbmdsZSxsb3ctcG93ZXItbW9kZSA9IDwweDI4OCAweDM4OD47CisKKy0gcGluY3RybC1zaW5nbGUsZ3Bpby1yYW5nZSA6IGxpc3Qgb2YgdmFsdWUgdGhhdCBhcmUgdXNlZCB0byBjb25maWd1cmUgYSBHUElPCisgIHJhbmdlLiBUaGV5J3JlIHZhbHVlIG9mIHN1Ym5vZGUgcGhhbmRsZSwgcGluIGJhc2UgaW4gcGluY3RybCBkZXZpY2UsIHBpbgorICBudW1iZXIgaW4gdGhpcyByYW5nZSwgR1BJTyBmdW5jdGlvbiB2YWx1ZSBvZiB0aGlzIEdQSU8gcmFuZ2UuCisgIFRoZSBudW1iZXIgb2YgcGFyYW1ldGVycyBpcyBkZXBlbmQgb24gI3BpbmN0cmwtc2luZ2xlLGdwaW8tcmFuZ2UtY2VsbHMKKyAgcHJvcGVydHkuCisKKwkJLyogcGluIGJhc2UsIG5yIHBpbnMgJiBncGlvIGZ1bmN0aW9uICovCisJCXBpbmN0cmwtc2luZ2xlLGdwaW8tcmFuZ2UgPSA8JnJhbmdlIDAgMyAwICZyYW5nZSAzIDkgMT47CisKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXIgOiBzdGFuZGFyZCBpbnRlcnJ1cHQgY29udHJvbGxlciBiaW5kaW5nIGlmIHVzaW5nCisgIGludGVycnVwdHMgZm9yIHdha2UtdXAgZXZlbnRzIGZvciBleGFtcGxlLiBJbiB0aGlzIGNhc2UgcGluY3RybC1zaW5nbGUKKyAgaXMgc2V0IHVwIGFzIGEgY2hhaW5lZCBpbnRlcnJ1cHQgY29udHJvbGxlciBhbmQgdGhlIHdha2UtdXAgaW50ZXJydXB0cworICBjYW4gYmUgcmVxdWVzdGVkIGJ5IHRoZSBkcml2ZXJzIHVzaW5nIHJlcXVlc3RfaXJxKCkuCisKKy0gI2ludGVycnVwdC1jZWxscyA6IHN0YW5kYXJkIGludGVycnVwdCBiaW5kaW5nIGlmIHVzaW5nIGludGVycnVwdHMKKworVGhpcyBkcml2ZXIgYXNzdW1lcyB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIHJlZ2lzdGVyIGZvciBlYWNoIHBpbiAodW5sZXNzIHRoZQorcGluY3RybC1zaW5nbGUsYml0LXBlci1tdXggaXMgc2V0KSwgYW5kIHVzZXMgdGhlIGNvbW1vbiBwaW5jdHJsIGJpbmRpbmdzIGFzCitzcGVjaWZpZWQgaW4gdGhlIHBpbmN0cmwtYmluZGluZ3MudHh0IGRvY3VtZW50IGluIHRoaXMgZGlyZWN0b3J5LgorCitUaGUgcGluIGNvbmZpZ3VyYXRpb24gbm9kZXMgZm9yIHBpbmN0cmwtc2luZ2xlIGFyZSBzcGVjaWZpZWQgYXMgcGluY3RybAorcmVnaXN0ZXIgb2Zmc2V0IGFuZCB2YWx1ZSBwYWlycyB1c2luZyBwaW5jdHJsLXNpbmdsZSxwaW5zLiBPbmx5IHRoZSBiaXRzCitzcGVjaWZpZWQgaW4gcGluY3RybC1zaW5nbGUsZnVuY3Rpb24tbWFzayBhcmUgdXBkYXRlZC4gRm9yIGV4YW1wbGUsIHNldHRpbmcKK2EgcGluIGZvciBhIGRldmljZSBjb3VsZCBiZSBkb25lIHdpdGg6CisKKwlwaW5jdHJsLXNpbmdsZSxwaW5zID0gPDB4ZGMgMHgxMTg+OworCitXaGVyZSAweGRjIGlzIHRoZSBvZmZzZXQgZnJvbSB0aGUgcGluY3RybCByZWdpc3RlciBiYXNlIGFkZHJlc3MgZm9yIHRoZQorZGV2aWNlIHBpbmN0cmwgcmVnaXN0ZXIsIGFuZCAweDExOCBjb250YWlucyB0aGUgZGVzaXJlZCB2YWx1ZSBvZiB0aGUKK3BpbmN0cmwgcmVnaXN0ZXIuIFNlZSB0aGUgZGV2aWNlIGV4YW1wbGUgYW5kIHN0YXRpYyBib2FyZCBwaW5zIGV4YW1wbGUKK2JlbG93IGZvciBtb3JlIGluZm9ybWF0aW9uLgorCitJbiBjYXNlIHdoZW4gb25lIHJlZ2lzdGVyIGNoYW5nZXMgbW9yZSB0aGFuIG9uZSBwaW4ncyBtdXggdGhlCitwaW5jdHJsLXNpbmdsZSxiaXRzIG5lZWQgdG8gYmUgdXNlZCB3aGljaCB0YWtlcyB0aHJlZSBwYXJhbWV0ZXJzOgorCisJcGluY3RybC1zaW5nbGUsYml0cyA9IDwweGRjIDB4MTggMHhmZj47CisKK1doZXJlIDB4ZGMgaXMgdGhlIG9mZnNldCBmcm9tIHRoZSBwaW5jdHJsIHJlZ2lzdGVyIGJhc2UgYWRkcmVzcyBmb3IgdGhlCitkZXZpY2UgcGluY3RybCByZWdpc3RlciwgMHgxOCBpcyB0aGUgZGVzaXJlZCB2YWx1ZSwgYW5kIDB4ZmYgaXMgdGhlIHN1YiBtYXNrIHRvCitiZSB1c2VkIHdoZW4gYXBwbHlpbmcgdGhpcyBjaGFuZ2UgdG8gdGhlIHJlZ2lzdGVyLgorCisKK09wdGlvbmFsIHN1Yi1ub2RlOiBJbiBjYXNlIHNvbWUgcGlucyBjb3VsZCBiZSBjb25maWd1cmVkIGFzIEdQSU8gaW4gdGhlIHBpbm11eAorcmVnaXN0ZXIsIHRob3NlIHBpbnMgY291bGQgYmUgZGVmaW5lZCBhcyBhIEdQSU8gcmFuZ2UuIFRoaXMgc3ViLW5vZGUgaXMgcmVxdWlyZWQKK2J5IHBpbmN0cmwtc2luZ2xlLGdwaW8tcmFuZ2UgcHJvcGVydHkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgaW4gc3ViLW5vZGU6CistICNwaW5jdHJsLXNpbmdsZSxncGlvLXJhbmdlLWNlbGxzIDogdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzIGFmdGVyIHBoYW5kbGUgaW4KKyAgcGluY3RybC1zaW5nbGUsZ3Bpby1yYW5nZSBwcm9wZXJ0eS4KKworCXJhbmdlOiBncGlvLXJhbmdlIHsKKwkJI3BpbmN0cmwtc2luZ2xlLGdwaW8tcmFuZ2UtY2VsbHMgPSA8Mz47CisJfTsKKworCitFeGFtcGxlOgorCisvKiBTb0MgY29tbW9uIGZpbGUgKi8KKworLyogZmlyc3QgY29udHJvbGxlciBpbnN0YW5jZSBmb3IgcGlucyBpbiBjb3JlIGRvbWFpbiAqLworcG14X2NvcmU6IHBpbm11eEA0YTEwMDA0MCB7CisJY29tcGF0aWJsZSA9ICJwaW5jdHJsLXNpbmdsZSI7CisJcmVnID0gPDB4NGExMDAwNDAgMHgwMTk2PjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCWludGVycnVwdC1jb250cm9sbGVyOworCXBpbmN0cmwtc2luZ2xlLHJlZ2lzdGVyLXdpZHRoID0gPDE2PjsKKwlwaW5jdHJsLXNpbmdsZSxmdW5jdGlvbi1tYXNrID0gPDB4ZmZmZj47Cit9OworCisvKiBzZWNvbmQgY29udHJvbGxlciBpbnN0YW5jZSBmb3IgcGlucyBpbiB3a3VwIGRvbWFpbiAqLworcG14X3drdXA6IHBpbm11eEA0YTMxZTA0MCB7CisJY29tcGF0aWJsZSA9ICJwaW5jdHJsLXNpbmdsZSI7CisJcmVnID0gPDB4NGEzMWUwNDAgMHgwMDM4PjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCWludGVycnVwdC1jb250cm9sbGVyOworCXBpbmN0cmwtc2luZ2xlLHJlZ2lzdGVyLXdpZHRoID0gPDE2PjsKKwlwaW5jdHJsLXNpbmdsZSxmdW5jdGlvbi1tYXNrID0gPDB4ZmZmZj47Cit9OworCitjb250cm9sX2RldmNvbmYwOiBwaW5tdXhANDgwMDIyNzQgeworCWNvbXBhdGlibGUgPSAicGluY3RybC1zaW5nbGUiOworCXJlZyA9IDwweDQ4MDAyMjc0IDQ+OwkvKiBTaW5nbGUgcmVnaXN0ZXIgKi8KKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwlwaW5jdHJsLXNpbmdsZSxiaXQtcGVyLW11eDsKKwlwaW5jdHJsLXNpbmdsZSxyZWdpc3Rlci13aWR0aCA9IDwzMj47CisJcGluY3RybC1zaW5nbGUsZnVuY3Rpb24tbWFzayA9IDwweDVGPjsKK307CisKKy8qIHRoaXJkIGNvbnRyb2xsZXIgaW5zdGFuY2UgZm9yIHBpbnMgaW4gZ3BpbyBkb21haW4gKi8KK3BteF9ncGlvOiBwaW5tdXhAZDQwMWUwMDAgeworCWNvbXBhdGlibGUgPSAicGluY29uZi1zaW5nbGUiOworCXJlZyA9IDwweGQ0MDFlMDAwIDB4MDMzMD47CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MT47CisJcmFuZ2VzOworCisJcGluY3RybC1zaW5nbGUscmVnaXN0ZXItd2lkdGggPSA8MzI+OworCXBpbmN0cmwtc2luZ2xlLGZ1bmN0aW9uLW1hc2sgPSA8Nz47CisKKwkvKiBzcGFyc2UgR1BJTyByYW5nZSBjb3VsZCBiZSBzdXBwb3J0ZWQgKi8KKwlwaW5jdHJsLXNpbmdsZSxncGlvLXJhbmdlID0gPCZyYW5nZSAwIDMgMCAmcmFuZ2UgMyA5IDEKKwkJCQkmcmFuZ2UgMTIgMSAwICZyYW5nZSAxMyAyOSAxCisJCQkJJnJhbmdlIDQzIDEgMCAmcmFuZ2UgNDQgNDkgMQorCQkJCSZyYW5nZSA5NCAxIDEgJnJhbmdlIDk2IDIgMT47CisKKwlyYW5nZTogZ3Bpby1yYW5nZSB7CisJCSNwaW5jdHJsLXNpbmdsZSxncGlvLXJhbmdlLWNlbGxzID0gPDM+OworCX07Cit9OworCisKKy8qIGJvYXJkIHNwZWNpZmljIC5kdHMgZmlsZSAqLworCismcG14X2NvcmUgeworCisJLyoKKwkgKiBtYXAgYWxsIGJvYXJkIHNwZWNpZmljIHN0YXRpYyBwaW5zIGVuYWJsZWQgYnkgdGhlIHBpbmN0cmwgZHJpdmVyCisJICogaXRzZWxmIGR1cmluZyB0aGUgYm9vdCAob3IganVzdCBzZXQgdGhlbSB1cCBpbiB0aGUgYm9vdGxvYWRlcikKKwkgKi8KKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCXBpbmN0cmwtMCA9IDwmYm9hcmRfcGlucz47CisKKwlib2FyZF9waW5zOiBwaW5tdXhfYm9hcmRfcGlucyB7CisJCXBpbmN0cmwtc2luZ2xlLHBpbnMgPSA8CisJCQkweDZjIDB4ZgorCQkJMHg2ZSAweGYKKwkJCTB4NzAgMHhmCisJCQkweDcyIDB4ZgorCQk+OworCX07CisKKwl1YXJ0MF9waW5zOiBwaW5tdXhfdWFydDBfcGlucyB7CisJCXBpbmN0cmwtc2luZ2xlLHBpbnMgPSA8CisJCQkweDIwOCAwCQkvKiBVQVJUMF9SWEQgKElPQ0ZHMTM4KSAqLworCQkJMHgyMGMgMAkJLyogVUFSVDBfVFhEIChJT0NGRzEzOSkgKi8KKwkJPjsKKwkJcGluY3RybC1zaW5nbGUsYmlhcy1wdWxsZG93biA9IDwwIDIgMj47CisJCXBpbmN0cmwtc2luZ2xlLGJpYXMtcHVsbHVwID0gPDAgMSAxPjsKKwl9OworCisJLyogbWFwIHVhcnQyIHBpbnMgKi8KKwl1YXJ0Ml9waW5zOiBwaW5tdXhfdWFydDJfcGlucyB7CisJCXBpbmN0cmwtc2luZ2xlLHBpbnMgPSA8CisJCQkweGQ4IDB4MTE4CisJCQkweGRhIDAKKwkJCTB4ZGMgMHgxMTgKKwkJCTB4ZGUgMAorCQk+OworCX07Cit9OworCismY29udHJvbF9kZXZjb25mMCB7CisJbWNic3AxX3BpbnM6IHBpbm11eF9tY2JzcDFfcGlucyB7CisJCXBpbmN0cmwtc2luZ2xlLGJpdHMgPSA8CisJCQkweDAwIDB4MTggMHgxOCAvKiBGU1IvQ0xLUiBzaWduYWwgZnJvbSBGU1gvQ0xLWCBwaW4gKi8KKwkJPjsKKwl9OworCisJbWNic3AyX2Nsa3NfcGluczogcGlubXV4X21jYnNwMl9jbGtzX3BpbnMgeworCQlwaW5jdHJsLXNpbmdsZSxiaXRzID0gPAorCQkJMHgwMCAweDQwIDB4NDAgLyogTWNCU1AyIENMS1MgZnJvbSBNY0JTUF9DTEtTIHBpbiAqLworCQk+OworCX07CisKK307CisKKyZ1YXJ0MSB7CisgICAgICAgcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKyAgICAgICBwaW5jdHJsLTAgPSA8JnVhcnQwX3BpbnM+OworfTsKKworJnVhcnQyIHsKKyAgICAgICBwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworICAgICAgIHBpbmN0cmwtMCA9IDwmdWFydDJfcGlucz47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcGluY3RybC1zaXJmLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3BpbmN0cmwtc2lyZi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY1NWJlNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3BpbmN0cmwtc2lyZi50eHQKQEAgLTAsMCArMSw0NyBAQAorQ1NSIFNpUkZwcmltYUlJIHBpbm11eCBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUJOiAic2lyZixwcmltYTItcGluY3RybCIKKy0gcmVnCQk6IEFkZHJlc3MgcmFuZ2Ugb2YgdGhlIHBpbmN0cmwgcmVnaXN0ZXJzCistIGludGVycnVwdHMgICAgOiBJbnRlcnJ1cHRzIHVzZWQgYnkgZXZlcnkgR1BJTyBncm91cAorLSBncGlvLWNvbnRyb2xsZXIgOiBJbmRpY2F0ZXMgdGhpcyBkZXZpY2UgaXMgYSBHUElPIGNvbnRyb2xsZXIKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXIgIDogTWFya3MgdGhlIGRldmljZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBzaXJmLHB1bGx1cHMgOiBpZiBuLXRoIGJpdCBvZiBtLXRoIGJhbmsgaXMgc2V0LCBzZXQgYSBwdWxsdXAgb24gR1BJTy1uIG9mIGJhbmsgbQorLSBzaXJmLHB1bGxkb3ducyA6IGlmIG4tdGggYml0IG9mIG0tdGggYmFuayBpcyBzZXQsIHNldCBhIHB1bGxkb3duIG9uIEdQSU8tbiBvZiBiYW5rIG0KKworUGxlYXNlIHJlZmVyIHRvIHBpbmN0cmwtYmluZGluZ3MudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBkZXRhaWxzIG9mIHRoZSBjb21tb24KK3BpbmN0cmwgYmluZGluZ3MgdXNlZCBieSBjbGllbnQgZGV2aWNlcy4KKworU2lSRnByaW1hSUkncyBwaW5tdXggbm9kZXMgYWN0IGFzIGEgY29udGFpbmVyIGZvciBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHN1Ym5vZGVzLgorRWFjaCBvZiB0aGVzZSBzdWJub2RlcyByZXByZXNlbnRzIHNvbWUgZGVzaXJlZCBjb25maWd1cmF0aW9uIGZvciBhIGdyb3VwIG9mIHBpbnMuCisKK1JlcXVpcmVkIHN1Ym5vZGUtcHJvcGVydGllczoKKy0gc2lyZixwaW5zIDogQW4gYXJyYXkgb2Ygc3RyaW5ncy4gRWFjaCBzdHJpbmcgY29udGFpbnMgdGhlIG5hbWUgb2YgYSBncm91cC4KKy0gc2lyZixmdW5jdGlvbjogQSBzdHJpbmcgY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gdG8gbXV4IHRvIHRoZQorICBncm91cC4KKworICBWYWxpZCB2YWx1ZXMgZm9yIGdyb3VwIGFuZCBmdW5jdGlvbiBuYW1lcyBjYW4gYmUgZm91bmQgZnJvbSBsb29raW5nIGF0IHRoZQorICBncm91cCBhbmQgZnVuY3Rpb24gYXJyYXlzIGluIGRyaXZlciBmaWxlczoKKyAgZHJpdmVycy9waW5jdHJsL3BpbmN0cmwtc2lyZi5jCisKK0ZvciBleGFtcGxlLCBwaW5jdHJsIG1pZ2h0IGhhdmUgc3Vibm9kZXMgbGlrZSB0aGUgZm9sbG93aW5nOgorIHVhcnQyX3BpbnNfYTogdWFydDJAMCB7CisgICAgICAgICB1YXJ0IHsKKyAgICAgICAgICAgICAgICAgc2lyZixwaW5zID0gInVhcnQyZ3JwIjsKKyAgICAgICAgICAgICAgICAgc2lyZixmdW5jdGlvbiA9ICJ1YXJ0MiI7CisgICAgICAgICB9OworIH07CisgdWFydDJfbm9mbG93X3BpbnNfYTogdWFydDJAMSB7CisgICAgICAgICB1YXJ0IHsKKyAgICAgICAgICAgICAgICAgc2lyZixwaW5zID0gInVhcnQyX25vc3RyZWFtY3RybGdycCI7CisgICAgICAgICAgICAgICAgIHNpcmYsZnVuY3Rpb24gPSAidWFydDJfbm9zdHJlYW1jdHJsIjsKKyAgICAgICAgIH07CisgfTsKKworRm9yIGEgc3BlY2lmaWMgYm9hcmQsIGlmIGl0IHdhbnRzIHRvIHVzZSB1YXJ0MiB3aXRob3V0IGhhcmR3YXJlIGZsb3cgY29udHJvbCwKK2l0IGNhbiBhZGQgdGhlIGZvbGxvd2luZyB0byBpdHMgYm9hcmQtc3BlY2lmaWMgLmR0cyBmaWxlLgordWFydDI6IHVhcnRAMHhiMDA3MDAwMCB7CisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwlwaW5jdHJsLTAgPSA8JnVhcnQyX25vZmxvd19waW5zX2E+OworfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcGluY3RybC1zdC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9waW5jdHJsLXN0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmJjYjE4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcGluY3RybC1zdC50eHQKQEAgLTAsMCArMSwxNzEgQEAKKypTVCBwaW4gY29udHJvbGxlci4KKworRWFjaCBtdWx0aS1mdW5jdGlvbiBwaW4gaXMgY29udHJvbGxlZCwgZHJpdmVuIGFuZCByb3V0ZWQgdGhyb3VnaCB0aGUKK1BJTyBtdWx0aXBsZXhpbmcgYmxvY2suIEVhY2ggcGluIHN1cHBvcnRzIEdQSU8gZnVuY3Rpb25hbGl0eSAoQUxUMCkKK2FuZCBtdWx0aXBsZSBhbHRlcm5hdGUgZnVuY3Rpb25zKEFMVDEgLSBBTFR4KSB0aGF0IGRpcmVjdGx5IGNvbm5lY3QKK3RoZSBwaW4gdG8gZGlmZmVyZW50IGhhcmR3YXJlIGJsb2Nrcy4KKworV2hlbiBhIHBpbiBpcyBpbiBHUElPIG1vZGUsIE91dHB1dCBFbmFibGUgKE9FKSwgT3BlbiBEcmFpbihPRCksIGFuZAorUHVsbCBVcCAoUFUpIGFyZSBkcml2ZW4gYnkgdGhlIHJlbGF0ZWQgUElPIGJsb2NrLgorCitTVCBwaW5jdHJsIGRyaXZlciBjb250cm9scyBQSU8gbXVsdGlwbGV4aW5nIGJsb2NrIGFuZCBhbHNvIGludGVyYWN0cyB3aXRoCitncGlvIGRyaXZlciB0byBjb25maWd1cmUgYSBwaW4uCisKK0dQSU8gYmFuayBjYW4gaGF2ZSBvbmUgb2YgdGhlIHR3byBwb3NzaWJsZSB0eXBlcyBvZiBpbnRlcnJ1cHQtd2lyaW5ncy4KKworRmlyc3QgdHlwZSBpcyB2aWEgaXJxbXV4LCBzaW5nbGUgaW50ZXJydXB0IGlzIHVzZWQgYnkgbXVsdGlwbGUgZ3BpbyBiYW5rcy4gVGhpcworcmVkdWNlcyBudW1iZXIgb2Ygb3ZlcmFsbCBpbnRlcnJ1cHRzIG51bWJlcnMgcmVxdWlyZWQuIEFsbCB0aGVzZSBiYW5rcyBiZWxvbmcgdG8KK2Egc2luZ2xlIHBpbmNvbnRyb2xsZXIuCisJCSAgX19fX19fX19fCisJCSB8CSAgIHwtLS0tPiBbZ3Bpby1iYW5rIChuKSAgICBdCisJCSB8CSAgIHwtLS0tPiBbZ3Bpby1iYW5rIChuICsgMSldCisJW2lycU5dLS0gfCBpcnEtbXV4IHwtLS0tPiBbZ3Bpby1iYW5rIChuICsgMildCisJCSB8CSAgIHwtLS0tPiBbZ3Bpby1iYW5rICguLi4gICldCisJCSB8X19fX19fX19ffC0tLS0+IFtncGlvLWJhbmsgKG4gKyA3KV0KKworU2Vjb25kIHR5cGUgaGFzIGEgZGVkaWNhdGVkIGludGVycnVwdCBwZXIgZ3BpbyBiYW5rLgorCisJW2lycU5dLS0tLT4gW2dwaW8tYmFuayAobildCisKKworUGluIGNvbnRyb2xsZXIgbm9kZToKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUJOiBzaG91bGQgYmUgInN0LDxTT0M+LTxwaW8tYmxvY2s+LXBpbmN0cmwiCisJbGlrZSBzdCxzdGloNDE1LXNiYy1waW5jdHJsLCBzdCxzdGloNDE1LWZyb250LXBpbmN0cmwgYW5kIHNvIG9uLgorLSBzdCxzeXNjZmcJCTogU2hvdWxkIGJlIGEgcGhhbmRsZSBvZiB0aGUgc3lzY2ZnIG5vZGUuCistIHN0LHJldGltZS1waW4tbWFzawk6IFNob3VsZCBiZSBtYXNrIHRvIHNwZWNpZnkgd2hpY2ggcGlucyBjYW4gYmUgcmV0aW1lZC4KKwlJZiB0aGUgcHJvcGVydHkgaXMgbm90IHByZXNlbnQsIGl0IGlzIGFzc3VtZWQgdGhhdCBhbGwgdGhlIHBpbnMgaW4gdGhlCisJYmFuayBhcmUgY2FwYWJsZSBvZiByZXRpbWluZy4gUmV0aW1pbmcgaXMgbWFpbmx5IHVzZWQgdG8gaW1wcm92ZSB0aGUKKwlJTyB0aW1pbmcgbWFyZ2lucyBvZiBleHRlcm5hbCBzeW5jaHJvbm91cyBpbnRlcmZhY2VzLgorLSByYW5nZXMgOiBkZWZpbmVzIG1hcHBpbmcgYmV0d2VlbiBwaW4gY29udHJvbGxlciBub2RlIChwYXJlbnQpIHRvIGdwaW8tYmFuaworICBub2RlIChjaGlsZHJlbikuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGludGVycnVwdHMJOiBJbnRlcnJ1cHQgbnVtYmVyIG9mIHRoZSBpcnFtdXguIElmIHRoZSBpbnRlcnJ1cHQgaXMgc2hhcmVkCisgIHdpdGggb3RoZXIgZ3BpbyBiYW5rcyB2aWEgaXJxbXV4LgorICBhIGlycWxpbmUgYW5kIGdwaW8gYmFua3MuCistIHJlZwkJOiBpcnFtdXggbWVtb3J5IHJlc291cmNlLiBJZiBpcnFtdXggaXMgcHJlc2VudC4KKy0gcmVnLW5hbWVzCTogaXJxbXV4IHJlc291cmNlIHNob3VsZCBiZSBuYW1lZCBhcyAiaXJxbXV4Ii4KKworR1BJTyBjb250cm9sbGVyL2Jhbmsgbm9kZS4KK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGdwaW8tY29udHJvbGxlciA6IEluZGljYXRlcyB0aGlzIGRldmljZSBpcyBhIEdQSU8gY29udHJvbGxlcgorLSAjZ3Bpby1jZWxscwkgIDogU2hvdWxkIGJlIG9uZS4gVGhlIGZpcnN0IGNlbGwgaXMgdGhlIHBpbiBudW1iZXIuCistIHN0LGJhbmstbmFtZQkgIDogU2hvdWxkIGJlIGEgbmFtZSBzdHJpbmcgZm9yIHRoaXMgYmFuayBhcyBzcGVjaWZpZWQgaW4KKyAgZGF0YXNoZWV0LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBpbnRlcnJ1cHRzCTogSW50ZXJydXB0IG51bWJlciBmb3IgdGhpcyBncGlvIGJhbmsuIElmIHRoZXJlIGlzIGEgZGVkaWNhdGVkCisgIGludGVycnVwdCB3aXJlZCB1cCBmb3IgdGhpcyBncGlvIGJhbmsuCisKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXIgOiBJbmRpY2F0ZXMgdGhpcyBkZXZpY2UgaXMgYSBpbnRlcnJ1cHQgY29udHJvbGxlci4gR1BJTworICBiYW5rIGNhbiBiZSBhbiBpbnRlcnJ1cHQgY29udHJvbGxlciBpZmYgb25lIG9mIHRoZSBpbnRlcnJ1cHQgdHlwZSBlaXRoZXIgdmlhCitpcnFtdXggb3IgYSBkZWRpY2F0ZWQgaW50ZXJydXB0IHBlciBiYW5rIGlzIHNwZWNpZmllZC4KKworLSAjaW50ZXJydXB0LWNlbGxzOiB0aGUgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUgMi4KKyAgICAgLSBGaXJzdCBDZWxsOiByZXByZXNlbnRzIHRoZSBleHRlcm5hbCBncGlvIGludGVycnVwdCBudW1iZXIgbG9jYWwgdG8gdGhlCisgICAgICAgZ3BpbyBpbnRlcnJ1cHQgc3BhY2Ugb2YgdGhlIGNvbnRyb2xsZXIuCisgICAgIC0gU2Vjb25kIENlbGw6IGZsYWdzIHRvIGlkZW50aWZ5IHRoZSB0eXBlIG9mIHRoZSBpbnRlcnJ1cHQKKyAgICAgICAtIDEgPSByaXNpbmcgZWRnZSB0cmlnZ2VyZWQKKyAgICAgICAtIDIgPSBmYWxsaW5nIGVkZ2UgdHJpZ2dlcmVkCisgICAgICAgLSAzID0gcmlzaW5nIGFuZCBmYWxsaW5nIGVkZ2UgdHJpZ2dlcmVkCisgICAgICAgLSA0ID0gaGlnaCBsZXZlbCB0cmlnZ2VyZWQKKyAgICAgICAtIDggPSBsb3cgbGV2ZWwgdHJpZ2dlcmVkCitmb3IgcmVsYXRlZCBtYWNyb3MgbG9vayBpbjoKK2luY2x1ZGUvZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaXJxLmgKKworRXhhbXBsZToKKwlwaW4tY29udHJvbGxlci1zYmMgeworCQkjYWRkcmVzcy1jZWxscwk9IDwxPjsKKwkJI3NpemUtY2VsbHMJPSA8MT47CisJCWNvbXBhdGlibGUJPSAic3Qsc3RpaDQxNS1zYmMtcGluY3RybCI7CisJCXN0LHN5c2NmZwk9IDwmc3lzY2ZnX3NiYz47CisJCXJlZyAJCT0gPDB4ZmU2MWYwODAgMHg0PjsKKwkJcmVnLW5hbWVzCT0gImlycW11eCI7CisJCWludGVycnVwdHMgCT0gPEdJQ19TUEkgMTgwIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQlpbnRlcnJ1cHQtbmFtZXMJPSAiaXJxbXV4IjsKKwkJcmFuZ2VzIAkJPSA8MCAweGZlNjEwMDAwIDB4NTAwMD47CisKKwkJUElPMDogZ3Bpb0BmZTYxMDAwMCB7CisJCQlncGlvLWNvbnRyb2xsZXI7CisJCQkjZ3Bpby1jZWxscwk9IDwxPjsKKwkJCWludGVycnVwdC1jb250cm9sbGVyOworCQkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKwkJCXJlZwkJPSA8MCAweDEwMD47CisJCQlzdCxiYW5rLW5hbWUJPSAiUElPMCI7CisJCX07CisJCS4uLgorCQlwaW4tZnVuY3Rpb25zIG5vZGVzIGZvbGxvdy4uLgorCX07CisKKworQ29udGVudHMgb2YgZnVuY3Rpb24gc3Vibm9kZSBub2RlOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUmVxdWlyZWQgcHJvcGVydGllcyBmb3IgcGluIGNvbmZpZ3VyYXRpb24gbm9kZToKKy0gc3QscGlucwk6IENoaWxkIG5vZGUgd2l0aCBsaXN0IG9mIHBpbnMgd2l0aCBjb25maWd1cmF0aW9uLgorCitCZWxvdyBpcyB0aGUgZm9ybWF0IG9mIGhvdyBlYWNoIHBpbiBjb25mIHNob3VsZCBsb29rIGxpa2UuCisKKzxiYW5rIG9mZnNldCBtdXggbW9kZSBydF90eXBlIHJ0X2RlbGF5IHJ0X2Nsaz4KKworRXZlcnkgUElPIGlzIHJlcHJlc2VudGVkIHdpdGggNC03IHBhcmFtZXRlcnMgZGVwZW5kaW5nIG9uIHJldGltZSBjb25maWd1cmF0aW9uLgorRWFjaCBwYXJhbWV0ZXIgaXMgZXhwbGFpbmVkIGFzIGJlbG93LgorCistYmFuawkJOiBTaG91bGQgYmUgYmFuayBwaGFuZGxlIHRvIHdoaWNoIHRoaXMgUElPIGJlbG9uZ3MuCistb2Zmc2V0CQk6IE9mZnNldCBpbiB0aGUgUElPIGJhbmsuCistbXV4CQk6IFNob3VsZCBiZSBhbHRlcm5hdGUgZnVuY3Rpb24gbnVtYmVyIGFzc29jaWF0ZWQgdGhpcyBwaW4uCisJCVVzZSBzYW1lIG51bWJlcnMgZnJvbSBkYXRhc2hlZXQuCistbW9kZQkJOnBpbiBjb25maWd1cmF0aW9uIGlzIHNlbGVjdGVkIGZyb20gb25lIG9mIHRoZSBiZWxvdyB2YWx1ZXMuCisJCUlOCisJCUlOX1BVCisJCU9VVAorCQlCSURJUgorCQlCSURJUl9QVQorCistcnRfdHlwZQlSZXRpbWluZyBDb25maWd1cmF0aW9uIGZvciB0aGUgcGluLgorCQlQb3NzaWJsZSByZXRpbWUgY29uZmlndXJhdGlvbiBhcmU6CisKKwkJLS0tLS0tLQkJLS0tLS0tLS0tLS0tLQorCQl2YWx1ZQkJYXJncworCQktLS0tLS0tCQktLS0tLS0tLS0tLS0tCisJCU5JQ0xLCQk8ZGVsYXk+IDxjbGs+CisJCUlDTEtfSU8JCTxkZWxheT4gPGNsaz4KKwkJQllQQVNTCQk8ZGVsYXk+CisJCURFX0lPCQk8ZGVsYXk+IDxjbGs+CisJCVNFX0lDTEtfSU8JPGRlbGF5PiA8Y2xrPgorCQlTRV9OSUNMS19JTwk8ZGVsYXk+IDxjbGs+CisKKy0gZGVsYXkJaXMgcmV0aW1lIGRlbGF5IGluIHBpY28gc2Vjb25kcyBhcyBtZW50aW9uZWQgaW4gZGF0YSBzaGVldC4KKworLSBydF9jbGsJOmNsayB0byBiZSB1c2UgZm9yIHJldGltZS4KKwkJUG9zc2libGUgdmFsdWVzIGFyZToKKwkJQ0xLX0EKKwkJQ0xLX0IKKwkJQ0xLX0MKKwkJQ0xLX0QKKworRXhhbXBsZSBvZiBtbWNjbGsgcGluIHdoaWNoIGlzIGEgYmktZGlyZWN0aW9uIHB1bGwgcHUgd2l0aCByZXRpbWUgY29uZmlnCithcyBub24gaW52ZXJ0ZWQgY2xvY2sgcmV0aW1lZCB3aXRoIENMS19CIGFuZCBkZWxheSBvZiAwIHBpY28gc2Vjb25kczoKKworcGluLWNvbnRyb2xsZXIgeworCS4uLgorCW1tYzAgeworCQlwaW5jdHJsX21tYzogbW1jIHsKKwkJCXN0LHBpbnMgeworCQkJCW1tY2NsayA9IDwmUElPMTMgNCBBTFQ0IEJJRElSX1BVIE5JQ0xLIDAgQ0xLX0I+OworCQkJCS4uLgorCQkJfTsKKwkJfTsKKwkuLi4KKwl9OworfTsKKworc2RoY2kwOnNkaGNpQGZlODEwMDAweworCS4uLgorCWludGVycnVwdC1wYXJlbnQgPSA8JlBJTzM+OworCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJaW50ZXJydXB0cyA9IDwzIElSUV9UWVBFX0xFVkVMX0hJR0g+OyAvKiBJbnRlcnJ1cHQgbGluZSB2aWEgUElPMy0zICovCisJaW50ZXJydXB0LW5hbWVzID0gImNhcmQtZGV0ZWN0IjsKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCXBpbmN0cmwtMAk9IDwmcGluY3RybF9tbWM+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3BpbmN0cmwtdnQ4NTAwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3BpbmN0cmwtdnQ4NTAwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2FhOTBmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcGluY3RybC12dDg1MDAudHh0CkBAIC0wLDAgKzEsNTcgQEAKK1ZJQSBWVDg1MDAgYW5kIFdvbmRlcm1lZGlhIFdNOHh4eC1zZXJpZXMgcGlubXV4L2dwaW8gY29udHJvbGxlcgorCitUaGVzZSBTb0NzIGNvbnRhaW4gYSBjb21iaW5lZCBQaW5tdXgvR1BJTyBtb2R1bGUuIEVhY2ggcGluIG1heSBvcGVyYXRlIGFzCitlaXRoZXIgYSBHUElPIGluLCBHUElPIG91dCBvciBhcyBhbiBhbHRlcm5hdGUgZnVuY3Rpb24gKEkyQywgU1BJIGV0YykuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ2aWEsdnQ4NTAwLXBpbmN0cmwiLCAid20sd204NTA1LXBpbmN0cmwiLCAid20sd204NjUwLXBpbmN0cmwiLAorCSJ3bTg3NTAtcGluY3RybCIgb3IgIndtLHdtODg1MC1waW5jdHJsIgorLSByZWc6IFNob3VsZCBjb250YWluIHRoZSBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBtb2R1bGUncyByZWdpc3RlcnMuCistIGludGVycnVwdC1jb250cm9sbGVyOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIuCistICNpbnRlcnJ1cHQtY2VsbHM6IFNob3VsZCBiZSB0d28uCistIGdwaW8tY29udHJvbGxlcjogTWFya3MgdGhlIGRldmljZSBub2RlIGFzIGEgR1BJTyBjb250cm9sbGVyLgorLSAjZ3Bpby1jZWxscyA6IFNob3VsZCBiZSB0d28uIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBwaW4gbnVtYmVyIGFuZCB0aGUKKyAgc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IG9wdGlvbmFsIHBhcmFtZXRlcnMuCisJYml0IDAgLSBhY3RpdmUgbG93CisKK1BsZWFzZSByZWZlciB0byAuLi9ncGlvL2dwaW8udHh0IGZvciBhIGdlbmVyYWwgZGVzY3JpcHRpb24gb2YgR1BJTyBiaW5kaW5ncy4KKworUGxlYXNlIHJlZmVyIHRvIHBpbmN0cmwtYmluZGluZ3MudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBkZXRhaWxzIG9mIHRoZQorY29tbW9uIHBpbmN0cmwgYmluZGluZ3MgdXNlZCBieSBjbGllbnQgZGV2aWNlcywgaW5jbHVkaW5nIHRoZSBtZWFuaW5nIG9mIHRoZQorcGhyYXNlICJwaW4gY29uZmlndXJhdGlvbiBub2RlIi4KKworRWFjaCBwaW4gY29uZmlndXJhdGlvbiBub2RlIGxpc3RzIHRoZSBwaW4ocykgdG8gd2hpY2ggaXQgYXBwbGllcywgYW5kIG9uZSBvcgorbW9yZSBvZiB0aGUgbXV4IGZ1bmN0aW9ucyB0byBzZWxlY3Qgb24gdGhvc2UgcGluKHMpLCBhbmQgcHVsbC11cC9kb3duCitjb25maWd1cmF0aW9uLiBFYWNoIHN1Ym5vZGUgb25seSBhZmZlY3RzIHRob3NlIHBhcmFtZXRlcnMgdGhhdCBhcmUgZXhwbGljaXRseQorbGlzdGVkLiBJbiBvdGhlciB3b3JkcywgYSBzdWJub2RlIHRoYXQgbGlzdHMgb25seSBhIG11eCBmdW5jdGlvbiBpbXBsaWVzIG5vCitpbmZvcm1hdGlvbiBhYm91dCBhbnkgcHVsbCBjb25maWd1cmF0aW9uLiBTaW1pbGFybHksIGEgc3Vibm9kZSB0aGF0IGxpc3RzIG9ubHkKK2EgcHVsbCBwYXJhbWV0ZXIgaW1wbGllcyBubyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbXV4IGZ1bmN0aW9uLgorCitSZXF1aXJlZCBzdWJub2RlLXByb3BlcnRpZXM6CistIHdtLHBpbnM6IEFuIGFycmF5IG9mIGNlbGxzLiBFYWNoIGNlbGwgY29udGFpbnMgdGhlIElEIG9mIGEgcGluLgorCitPcHRpb25hbCBzdWJub2RlLXByb3BlcnRpZXM6CistIHdtLGZ1bmN0aW9uOiBJbnRlZ2VyLCBjb250YWluaW5nIHRoZSBmdW5jdGlvbiB0byBtdXggdG8gdGhlIHBpbihzKToKKyAgMDogR1BJTyBpbgorICAxOiBHUElPIG91dAorICAyOiBhbHRlcm5hdGUKKworLSB3bSxwdWxsOiBJbnRlZ2VyLCByZXByZXNlbnRpbmcgdGhlIHB1bGwtZG93bi91cCB0byBhcHBseSB0byB0aGUgcGluKHMpOgorICAwOiBub25lCisgIDE6IGRvd24KKyAgMjogdXAKKworRWFjaCBvZiB3bSxmdW5jdGlvbiBhbmQgd20scHVsbCBtYXkgY29udGFpbiBlaXRoZXIgYSBzaW5nbGUgdmFsdWUgd2hpY2gKK3dpbGwgYmUgYXBwbGllZCB0byBhbGwgcGlucyBpbiB3bSxwaW5zLCBvciBvbmUgdmFsdWUgZm9yIGVhY2ggZW50cnkgaW4KK3dtLHBpbnMuCisKK0V4YW1wbGU6CisKKwlwaW5jdHJsOiBwaW5jdHJsIHsKKwkJY29tcGF0aWJsZSA9ICJ3bSx3bTg1MDUtcGluY3RybCI7CisJCXJlZyA9IDwweEQ4MTEwMDAwIDB4MTAwMDA+OworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKwkJZ3Bpby1jb250cm9sbGVyOworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcGluY3RybF9zcGVhci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9waW5jdHJsX3NwZWFyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTg2MTU1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcGluY3RybF9zcGVhci50eHQKQEAgLTAsMCArMSwxNTUgQEAKK1NUIE1pY3JvZWxlY3Ryb25pY3MsIFNQRUFyIHBpbm11eCBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUJOiAic3Qsc3BlYXIzMDAtcGlubXV4IgorCQk6ICJzdCxzcGVhcjMxMC1waW5tdXgiCisJCTogInN0LHNwZWFyMzIwLXBpbm11eCIKKwkJOiAic3Qsc3BlYXIxMzEwLXBpbm11eCIKKwkJOiAic3Qsc3BlYXIxMzQwLXBpbm11eCIKKy0gcmVnCQk6IEFkZHJlc3MgcmFuZ2Ugb2YgdGhlIHBpbmN0cmwgcmVnaXN0ZXJzCistIHN0LHBpbm11eC1tb2RlOiBNYW5kYXRvcnkgZm9yIFNQRUFyMzAwIGFuZCBTUEVBcjMyMCBhbmQgaW52YWxpZCBmb3Igb3RoZXJzLgorCS0gSXRzIHZhbHVlcyBmb3IgU1BFQXIzMDA6CisJCS0gTkFORF9NT0RFCQk6IDwwPgorCQktIE5PUl9NT0RFCQk6IDwxPgorCQktIFBIT1RPX0ZSQU1FX01PREUJOiA8Mj4KKwkJLSBMRU5EX0lQX1BIT05FX01PREUJOiA8Mz4KKwkJLSBIRU5EX0lQX1BIT05FX01PREUJOiA8ND4KKwkJLSBMRU5EX1dJRklfUEhPTkVfTU9ERQk6IDw1PgorCQktIEhFTkRfV0lGSV9QSE9ORV9NT0RFCTogPDY+CisJCS0gQVRBX1BBQlhfV0kyU19NT0RFCTogPDc+CisJCS0gQVRBX1BBQlhfSTJTX01PREUJOiA8OD4KKwkJLSBDQU1MX0xDRFdfTU9ERQk6IDw5PgorCQktIENBTVVfTENEX01PREUJCTogPDEwPgorCQktIENBTVVfV0xDRF9NT0RFCTogPDExPgorCQktIENBTUxfTENEX01PREUJCTogPDEyPgorCS0gSXRzIHZhbHVlcyBmb3IgU1BFQXIzMjA6CisJCS0gQVVUT19ORVRfU01JSV9NT0RFCTogPDA+CisJCS0gQVVUT19ORVRfTUlJX01PREUJOiA8MT4KKwkJLSBBVVRPX0VYUF9NT0RFCQk6IDwyPgorCQktIFNNQUxMX1BSSU5URVJTX01PREUJOiA8Mz4KKwkJLSBFWFRFTkRFRF9NT0RFCQk6IDw0PgorCitQbGVhc2UgcmVmZXIgdG8gcGluY3RybC1iaW5kaW5ncy50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGRldGFpbHMgb2YgdGhlIGNvbW1vbgorcGluY3RybCBiaW5kaW5ncyB1c2VkIGJ5IGNsaWVudCBkZXZpY2VzLgorCitTUEVBcidzIHBpbm11eCBub2RlcyBhY3QgYXMgYSBjb250YWluZXIgZm9yIGFuIGFyYml0cmFyeSBudW1iZXIgb2Ygc3Vibm9kZXMuIEVhY2gKK29mIHRoZXNlIHN1Ym5vZGVzIHJlcHJlc2VudHMgbXV4aW5nIGZvciBhIHBpbiwgYSBncm91cCwgb3IgYSBsaXN0IG9mIHBpbnMgb3IKK2dyb3Vwcy4KKworVGhlIG5hbWUgb2YgZWFjaCBzdWJub2RlIGlzIG5vdCBpbXBvcnRhbnQ7IGFsbCBzdWJub2RlcyBzaG91bGQgYmUgZW51bWVyYXRlZAorYW5kIHByb2Nlc3NlZCBwdXJlbHkgYmFzZWQgb24gdGhlaXIgY29udGVudC4KKworUmVxdWlyZWQgc3Vibm9kZS1wcm9wZXJ0aWVzOgorLSBzdCxwaW5zIDogQW4gYXJyYXkgb2Ygc3RyaW5ncy4gRWFjaCBzdHJpbmcgY29udGFpbnMgdGhlIG5hbWUgb2YgYSBwaW4gb3IKKyAgZ3JvdXAuCistIHN0LGZ1bmN0aW9uOiBBIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0byBtdXggdG8gdGhlIHBpbiBvcgorICBncm91cC4gU2VlIHRoZSBTUEVBcidzIFRSTSB0byBkZXRlcm1pbmUgd2hpY2ggYXJlIHZhbGlkIGZvciBlYWNoIHBpbiBvciBncm91cC4KKworICBWYWxpZCB2YWx1ZXMgZm9yIGdyb3VwIGFuZCBmdW5jdGlvbiBuYW1lcyBjYW4gYmUgZm91bmQgZnJvbSBsb29raW5nIGF0IHRoZQorICBncm91cCBhbmQgZnVuY3Rpb24gYXJyYXlzIGluIGRyaXZlciBmaWxlczoKKyAgZHJpdmVycy9waW5jdHJsL3NwZWFyL3BpbmN0cmwtc3BlYXIzKjAuYworCitWYWxpZCB2YWx1ZXMgZm9yIGdyb3VwIG5hbWVzIGFyZToKK0ZvciBBbGwgU1BFQXIzeHggbWFjaGluZXM6CisJImZpcmRhX2dycCIsICJpMmMwX2dycCIsICJzc3BfY3NfZ3JwIiwgInNzcDBfZ3JwIiwgIm1paTBfZ3JwIiwKKwkiZ3BpbzBfcGluMF9ncnAiLCAiZ3BpbzBfcGluMV9ncnAiLCAiZ3BpbzBfcGluMl9ncnAiLCAiZ3BpbzBfcGluM19ncnAiLAorCSJncGlvMF9waW40X2dycCIsICJncGlvMF9waW41X2dycCIsICJ1YXJ0MF9leHRfZ3JwIiwgInVhcnQwX2dycCIsCisJInRpbWVyXzBfMV9ncnAiLCB0aW1lcl8wXzFfcGlucywgInRpbWVyXzJfM19ncnAiCisKK0ZvciBTUEVBcjMwMCBtYWNoaW5lczoKKwkiZnNtY18yY2hpcHNfZ3JwIiwgImZzbWNfNGNoaXBzX2dycCIsICJjbGNkX2xjZG1vZGVfZ3JwIiwKKwkiY2xjZF9wZm1vZGVfZ3JwIiwgInRkbV9ncnAiLCAiaTJjX2Nsa19ncnBfZ3JwIiwgImNhbWxfZ3JwIiwgImNhbXVfZ3JwIiwKKwkiZGFjX2dycCIsICJpMnNfZ3JwIiwgInNkaGNpXzRiaXRfZ3JwIiwgInNkaGNpXzhiaXRfZ3JwIiwKKwkiZ3BpbzFfMF90b18zX2dycCIsICJncGlvMV80X3RvXzdfZ3JwIgorCitGb3IgU1BFQXIzMTAgbWFjaGluZXM6CisJImVtaV9jc18wX3RvXzVfZ3JwIiwgInVhcnQxX2dycCIsICJ1YXJ0Ml9ncnAiLCAidWFydDNfZ3JwIiwgInVhcnQ0X2dycCIsCisJInVhcnQ1X2dycCIsICJmc21jX2dycCIsICJyczQ4NV8wX2dycCIsICJyczQ4NV8xX2dycCIsICJ0ZG1fZ3JwIgorCitGb3IgU1BFQXIzMjAgbWFjaGluZXM6CisJImNsY2RfZ3JwIiwgImVtaV9ncnAiLCAiZnNtY184Yml0X2dycCIsICJmc21jXzE2Yml0X2dycCIsICJzcHBfZ3JwIiwKKwkic2RoY2lfbGVkX2dycCIsICJzZGhjaV9jZF8xMl9ncnAiLCAic2RoY2lfY2RfNTFfZ3JwIiwgImkyc19ncnAiLAorCSJ1YXJ0MV9ncnAiLCAidWFydDFfbW9kZW1fMl90b183X2dycCIsICJ1YXJ0MV9tb2RlbV8zMV90b18zNl9ncnAiLAorCSJ1YXJ0MV9tb2RlbV8zNF90b180NV9ncnAiLCAidWFydDFfbW9kZW1fODBfdG9fODVfZ3JwIiwgInVhcnQyX2dycCIsCisJInVhcnQzXzhfOV9ncnAiLCAidWFydDNfMTVfMTZfZ3JwIiwgInVhcnQzXzQxXzQyX2dycCIsCisJInVhcnQzXzUyXzUzX2dycCIsICJ1YXJ0M183M183NF9ncnAiLCAidWFydDNfOTRfOTVfZ3JwIiwKKwkidWFydDNfOThfOTlfZ3JwIiwgInVhcnQ0XzZfN19ncnAiLCAidWFydDRfMTNfMTRfZ3JwIiwKKwkidWFydDRfMzlfNDBfZ3JwIiwgInVhcnQ0XzcxXzcyX2dycCIsICJ1YXJ0NF85Ml85M19ncnAiLAorCSJ1YXJ0NF8xMDBfMTAxX2dycCIsICJ1YXJ0NV80XzVfZ3JwIiwgInVhcnQ1XzM3XzM4X2dycCIsCisJInVhcnQ1XzY5XzcwX2dycCIsICJ1YXJ0NV85MF85MV9ncnAiLCAidWFydDZfMl8zX2dycCIsCisJInVhcnQ2Xzg4Xzg5X2dycCIsICJyczQ4NV9ncnAiLCAidG91Y2hzY3JlZW5fZ3JwIiwgImNhbjBfZ3JwIiwKKwkiY2FuMV9ncnAiLCAicHdtMF8xX3Bpbl84XzlfZ3JwIiwgInB3bTBfMV9waW5fMTRfMTVfZ3JwIiwKKwkicHdtMF8xX3Bpbl8zMF8zMV9ncnAiLCAicHdtMF8xX3Bpbl8zN18zOF9ncnAiLCAicHdtMF8xX3Bpbl80Ml80M19ncnAiLAorCSJwd20wXzFfcGluXzU5XzYwX2dycCIsICJwd20wXzFfcGluXzg4Xzg5X2dycCIsICJwd20yX3Bpbl83X2dycCIsCisJInB3bTJfcGluXzEzX2dycCIsICJwd20yX3Bpbl8yOV9ncnAiLCAicHdtMl9waW5fMzRfZ3JwIiwKKwkicHdtMl9waW5fNDFfZ3JwIiwgInB3bTJfcGluXzU4X2dycCIsICJwd20yX3Bpbl84N19ncnAiLAorCSJwd20zX3Bpbl82X2dycCIsICJwd20zX3Bpbl8xMl9ncnAiLCAicHdtM19waW5fMjhfZ3JwIiwKKwkicHdtM19waW5fNDBfZ3JwIiwgInB3bTNfcGluXzU3X2dycCIsICJwd20zX3Bpbl84Nl9ncnAiLAorCSJzc3AxXzE3XzIwX2dycCIsICJzc3AxXzM2XzM5X2dycCIsICJzc3AxXzQ4XzUxX2dycCIsICJzc3AxXzY1XzY4X2dycCIsCisJInNzcDFfOTRfOTdfZ3JwIiwgInNzcDJfMTNfMTZfZ3JwIiwgInNzcDJfMzJfMzVfZ3JwIiwgInNzcDJfNDRfNDdfZ3JwIiwKKwkic3NwMl82MV82NF9ncnAiLCAic3NwMl85MF85M19ncnAiLCAibWlpMl9ncnAiLCAic21paTBfMV9ncnAiLAorCSJybWlpMF8xX2dycCIsICJpMmMxXzhfOV9ncnAiLCAiaTJjMV85OF85OV9ncnAiLCAiaTJjMl8wXzFfZ3JwIiwKKwkiaTJjMl8yXzNfZ3JwIiwgImkyYzJfMTlfMjBfZ3JwIiwgImkyYzJfNzVfNzZfZ3JwIiwgImkyYzJfOTZfOTdfZ3JwIgorCitGb3IgU1BFQXIxMzEwIG1hY2hpbmVzOgorCSJpMmMwX2dycCIsICJzc3AwX2dycCIsICJzc3AwX2NzMF9ncnAiLCAic3NwMF9jczFfMl9ncnAiLCAiaTJzMF9ncnAiLAorCSJpMnMxX2dycCIsICJjbGNkX2dycCIsICJjbGNkX2hpZ2hfcmVzX2dycCIsICJhcm1fZ3Bpb19ncnAiLAorCSJzbWlfMl9jaGlwc19ncnAiLCAic21pXzRfY2hpcHNfZ3JwIiwgImdtaWlfZ3JwIiwgInJnbWlpX2dycCIsCisJInNtaWlfMF8xXzJfZ3JwIiwgInJhc19taWlfdHhjbGtfZ3JwIiwgIm5hbmRfOGJpdF9ncnAiLAorCSJuYW5kXzE2Yml0X2dycCIsICJuYW5kXzRfY2hpcHNfZ3JwIiwgImtleWJvYXJkXzZ4Nl9ncnAiLAorCSJrZXlib2FyZF9yb3djb2w2XzhfZ3JwIiwgInVhcnQwX2dycCIsICJ1YXJ0MF9tb2RlbV9ncnAiLAorCSJncHQwX3RtcjBfZ3JwIiwgImdwdDBfdG1yMV9ncnAiLCAiZ3B0MV90bXIwX2dycCIsICJncHQxX3RtcjFfZ3JwIiwKKwkic2RoY2lfZ3JwIiwgImNmX2dycCIsICJ4ZF9ncnAiLCAidG91Y2hfeHlfZ3JwIiwKKwkidWFydDFfZGlzYWJsZV9pMmNfZ3JwIiwgInVhcnQxX2Rpc2FibGVfc2RfZ3JwIiwgInVhcnQyXzNfZ3JwIiwKKwkidWFydDRfZ3JwIiwgInVhcnQ1X2dycCIsICJyczQ4NV8wXzFfdGRtXzBfMV9ncnAiLCAiaTJjXzFfMl9ncnAiLAorCSJpMmMzX2Rpc19zbWlfY2xjZF9ncnAiLCAiaTJjM19kaXNfc2RfaTJzMF9ncnAiLCAiaTJjXzRfNV9kaXNfc21pX2dycCIsCisJImkyYzRfZGlzX3NkX2dycCIsICJpMmM1X2Rpc19zZF9ncnAiLCAiaTJjXzZfN19kaXNfa2JkX2dycCIsCisJImkyYzZfZGlzX3NkX2dycCIsICJpMmM3X2Rpc19zZF9ncnAiLCAiY2FuMF9kaXNfbm9yX2dycCIsCisJImNhbjBfZGlzX3NkX2dycCIsICJjYW4xX2Rpc19zZF9ncnAiLCAiY2FuMV9kaXNfa2JkX2dycCIsICJwY2llMF9ncnAiLAorCSJwY2llMV9ncnAiLCAicGNpZTJfZ3JwIiwgInNhdGEwX2dycCIsICJzYXRhMV9ncnAiLCAic2F0YTJfZ3JwIiwKKwkic3NwMV9kaXNfa2JkX2dycCIsICJzc3AxX2Rpc19zZF9ncnAiLCAiZ3B0NjRfZ3JwIgorCitGb3IgU1BFQXIxMzQwIG1hY2hpbmVzOgorCSJwYWRzX2FzX2dwaW9fZ3JwIiwgImZzbWNfOGJpdF9ncnAiLCAiZnNtY18xNmJpdF9ncnAiLCAiZnNtY19wbm9yX2dycCIsCisJImtleWJvYXJkX3Jvd19jb2xfZ3JwIiwgImtleWJvYXJkX2NvbDVfZ3JwIiwgInNwZGlmX2luX2dycCIsCisJInNwZGlmX291dF9ncnAiLCAiZ3B0XzBfMV9ncnAiLCAicHdtMF9ncnAiLCAicHdtMV9ncnAiLCAicHdtMl9ncnAiLAorCSJwd20zX2dycCIsICJ2aXBfbXV4X2dycCIsICJ2aXBfbXV4X2NhbTBfZ3JwIiwgInZpcF9tdXhfY2FtMV9ncnAiLAorCSJ2aXBfbXV4X2NhbTJfZ3JwIiwgInZpcF9tdXhfY2FtM19ncnAiLCAiY2FtMF9ncnAiLCAiY2FtMV9ncnAiLAorCSJjYW0yX2dycCIsICJjYW0zX2dycCIsICJzbWlfZ3JwIiwgInNzcDBfZ3JwIiwgInNzcDBfY3MxX2dycCIsCisJInNzcDBfY3MyX2dycCIsICJzc3AwX2NzM19ncnAiLCAidWFydDBfZ3JwIiwgInVhcnQwX2VuaF9ncnAiLAorCSJ1YXJ0MV9ncnAiLCAiaTJzX2luX2dycCIsICJpMnNfb3V0X2dycCIsICJnbWlpX2dycCIsICJyZ21paV9ncnAiLAorCSJybWlpX2dycCIsICJzZ21paV9ncnAiLCAiaTJjMF9ncnAiLCAiaTJjMV9ncnAiLCAiY2VjMF9ncnAiLCAiY2VjMV9ncnAiLAorCSJzZGhjaV9ncnAiLCAiY2ZfZ3JwIiwgInhkX2dycCIsICJjbGNkX2dycCIsICJhcm1fdHJhY2VfZ3JwIiwKKwkibWlwaHlfZGJnX2dycCIsICJwY2llX2dycCIsICJzYXRhX2dycCIKKworVmFsaWQgdmFsdWVzIGZvciBmdW5jdGlvbiBuYW1lcyBhcmU6CitGb3IgQWxsIFNQRUFyM3h4IG1hY2hpbmVzOgorCSJmaXJkYSIsICJpMmMwIiwgInNzcF9jcyIsICJzc3AwIiwgIm1paTAiLCAiZ3BpbzAiLCAidWFydDBfZXh0IiwKKwkidWFydDAiLCAidGltZXJfMF8xIiwgInRpbWVyXzJfMyIKKworRm9yIFNQRUFyMzAwIG1hY2hpbmVzOgorCSJmc21jIiwgImNsY2QiLCAidGRtIiwgImkyYzEiLCAiY2FtIiwgImRhYyIsICJpMnMiLCAic2RoY2kiLCAiZ3BpbzEiCisKK0ZvciBTUEVBcjMxMCBtYWNoaW5lczoKKwkiZW1pIiwgInVhcnQxIiwgInVhcnQyIiwgInVhcnQzIiwgInVhcnQ0IiwgInVhcnQ1IiwgImZzbWMiLCAicnM0ODVfMCIsCisJInJzNDg1XzEiLCAidGRtIgorCitGb3IgU1BFQXIzMjAgbWFjaGluZXM6CisJImNsY2QiLCAiZW1pIiwgImZzbWMiLCAic3BwIiwgInNkaGNpIiwgImkycyIsICJ1YXJ0MSIsICJ1YXJ0MV9tb2RlbSIsCisJInVhcnQyIiwgInVhcnQzIiwgInVhcnQ0IiwgInVhcnQ1IiwgInVhcnQ2IiwgInJzNDg1IiwgInRvdWNoc2NyZWVuIiwKKwkiY2FuMCIsICJjYW4xIiwgInB3bTBfMSIsICJwd20yIiwgInB3bTMiLCAic3NwMSIsICJzc3AyIiwgIm1paTIiLAorCSJtaWkwXzEiLCAiaTJjMSIsICJpMmMyIgorCisKK0ZvciBTUEVBcjEzMTAgbWFjaGluZXM6CisJImkyYzAiLCAic3NwMCIsICJpMnMwIiwgImkyczEiLCAiY2xjZCIsICJhcm1fZ3BpbyIsICJzbWkiLCAiZ21paSIsCisJInJnbWlpIiwgInNtaWlfMF8xXzIiLCAicmFzX21paV90eGNsayIsICJuYW5kIiwgImtleWJvYXJkIiwgInVhcnQwIiwKKwkiZ3B0MCIsICJncHQxIiwgInNkaGNpIiwgImNmIiwgInhkIiwgInRvdWNoc2NyZWVuIiwgInVhcnQxIiwgInVhcnQyXzMiLAorCSJ1YXJ0NCIsICJ1YXJ0NSIsICJyczQ4NV8wXzFfdGRtXzBfMSIsICJpMmNfMV8yIiwgImkyYzNfaTJzMSIsCisJImkyY180XzUiLCAiaTJjXzZfNyIsICJjYW4wIiwgImNhbjEiLCAicGNpIiwgInNhdGEiLCAic3NwMSIsICJncHQ2NCIKKworRm9yIFNQRUFyMTM0MCBtYWNoaW5lczoKKwkicGFkc19hc19ncGlvIiwgImZzbWMiLCAia2V5Ym9hcmQiLCAic3BkaWZfaW4iLCAic3BkaWZfb3V0IiwgImdwdF8wXzEiLAorCSJwd20iLCAidmlwIiwgImNhbTAiLCAiY2FtMSIsICJjYW0yIiwgImNhbTMiLCAic21pIiwgInNzcDAiLCAidWFydDAiLAorCSJ1YXJ0MSIsICJpMnMiLCAiZ21hYyIsICJpMmMwIiwgImkyYzEiLCAiY2VjMCIsICJjZWMxIiwgInNkaGNpIiwgImNmIiwKKwkieGQiLCAiY2xjZCIsICJhcm1fdHJhY2UiLCAibWlwaHlfZGJnIiwgInBjaWUiLCAic2F0YSIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3Fjb20sYXBxODA2NC1waW5jdHJsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3Fjb20sYXBxODA2NC1waW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2JkZTY0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcWNvbSxhcHE4MDY0LXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsODggQEAKK1F1YWxjb21tIEFQUTgwNjQgVExNTSBibG9jaworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAicWNvbSxhcHE4MDY0LXBpbmN0cmwiCistIHJlZzogU2hvdWxkIGJlIHRoZSBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgVExNTSBibG9jay4KKy0gaW50ZXJydXB0czogU2hvdWxkIGJlIHRoZSBwYXJlbnQgSVJRIG9mIHRoZSBUTE1NIGJsb2NrLgorLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogTWFya3MgdGhlIGRldmljZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyLgorLSAjaW50ZXJydXB0LWNlbGxzOiBTaG91bGQgYmUgdHdvLgorLSBncGlvLWNvbnRyb2xsZXI6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIEdQSU8gY29udHJvbGxlci4KKy0gI2dwaW8tY2VsbHMgOiBTaG91bGQgYmUgdHdvLgorICAgICAgICAgICAgICAgIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBncGlvIHBpbiBudW1iZXIgYW5kIHRoZQorICAgICAgICAgICAgICAgIHNlY29uZCBjZWxsIGlzIHVzZWQgZm9yIG9wdGlvbmFsIHBhcmFtZXRlcnMuCisKK1BsZWFzZSByZWZlciB0byAuLi9ncGlvL2dwaW8udHh0IGFuZCAuLi9pbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlcnJ1cHRzLnR4dCBmb3IKK2EgZ2VuZXJhbCBkZXNjcmlwdGlvbiBvZiBHUElPIGFuZCBpbnRlcnJ1cHQgYmluZGluZ3MuCisKK1BsZWFzZSByZWZlciB0byBwaW5jdHJsLWJpbmRpbmdzLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgZGV0YWlscyBvZiB0aGUKK2NvbW1vbiBwaW5jdHJsIGJpbmRpbmdzIHVzZWQgYnkgY2xpZW50IGRldmljZXMsIGluY2x1ZGluZyB0aGUgbWVhbmluZyBvZiB0aGUKK3BocmFzZSAicGluIGNvbmZpZ3VyYXRpb24gbm9kZSIuCisKK1F1YWxjb21tJ3MgcGluIGNvbmZpZ3VyYXRpb24gbm9kZXMgYWN0IGFzIGEgY29udGFpbmVyIGZvciBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mCitzdWJub2Rlcy4gRWFjaCBvZiB0aGVzZSBzdWJub2RlcyByZXByZXNlbnRzIHNvbWUgZGVzaXJlZCBjb25maWd1cmF0aW9uIGZvciBhCitwaW4sIGEgZ3JvdXAsIG9yIGEgbGlzdCBvZiBwaW5zIG9yIGdyb3Vwcy4gVGhpcyBjb25maWd1cmF0aW9uIGNhbiBpbmNsdWRlIHRoZQorbXV4IGZ1bmN0aW9uIHRvIHNlbGVjdCBvbiB0aG9zZSBwaW4ocykvZ3JvdXAocyksIGFuZCB2YXJpb3VzIHBpbiBjb25maWd1cmF0aW9uCitwYXJhbWV0ZXJzLCBzdWNoIGFzIHB1bGwtdXAsIGRyaXZlIHN0cmVuZ3RoLCBldGMuCisKK1RoZSBuYW1lIG9mIGVhY2ggc3Vibm9kZSBpcyBub3QgaW1wb3J0YW50OyBhbGwgc3Vibm9kZXMgc2hvdWxkIGJlIGVudW1lcmF0ZWQKK2FuZCBwcm9jZXNzZWQgcHVyZWx5IGJhc2VkIG9uIHRoZWlyIGNvbnRlbnQuCisKK0VhY2ggc3Vibm9kZSBvbmx5IGFmZmVjdHMgdGhvc2UgcGFyYW1ldGVycyB0aGF0IGFyZSBleHBsaWNpdGx5IGxpc3RlZC4gSW4KK290aGVyIHdvcmRzLCBhIHN1Ym5vZGUgdGhhdCBsaXN0cyBhIG11eCBmdW5jdGlvbiBidXQgbm8gcGluIGNvbmZpZ3VyYXRpb24KK3BhcmFtZXRlcnMgaW1wbGllcyBubyBpbmZvcm1hdGlvbiBhYm91dCBhbnkgcGluIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4KK1NpbWlsYXJseSwgYSBwaW4gc3Vibm9kZSB0aGF0IGRlc2NyaWJlcyBhIHB1bGx1cCBwYXJhbWV0ZXIgaW1wbGllcyBubworaW5mb3JtYXRpb24gYWJvdXQgZS5nLiB0aGUgbXV4IGZ1bmN0aW9uLgorCisKK1RoZSBmb2xsb3dpbmcgZ2VuZXJpYyBwcm9wZXJ0aWVzIGFzIGRlZmluZWQgaW4gcGluY3RybC1iaW5kaW5ncy50eHQgYXJlIHZhbGlkCit0byBzcGVjaWZ5IGluIGEgcGluIGNvbmZpZ3VyYXRpb24gc3Vibm9kZToKKworIHBpbnMsIGZ1bmN0aW9uLCBiaWFzLWRpc2FibGUsIGJpYXMtcHVsbC1kb3duLCBiaWFzLXB1bGwsdXAsIGRyaXZlLXN0cmVuZ3RoLAorIG91dHB1dC1sb3csIG91dHB1dC1oaWdoLgorCitOb24tZW1wdHkgc3Vibm9kZXMgbXVzdCBzcGVjaWZ5IHRoZSAncGlucycgcHJvcGVydHkuCisKK1ZhbGlkIHZhbHVlcyBmb3IgcGlucyBhcmU6CisgIGdwaW8wLWdwaW84OQorCitWYWxpZCB2YWx1ZXMgZm9yIGZ1bmN0aW9uIGFyZToKKyAgY2FtX21jbGssIGNvZGVjX21pY19pMnMsIGNvZGVjX3Nwa3JfaTJzLCBncGlvLCBnc2JpMSwgZ3NiaTIsIGdzYmkzLCBnc2JpNCwKKyAgZ3NiaTRfY2FtX2kyYywgZ3NiaTUsIGdzYmk1X3NwaV9jczEsIGdzYmk1X3NwaV9jczIsIGdzYmk1X3NwaV9jczMsIGdzYmk2LAorICBnc2JpNl9zcGlfY3MxLCBnc2JpNl9zcGlfY3MyLCBnc2JpNl9zcGlfY3MzLCBnc2JpNywgZ3NiaTdfc3BpX2NzMSwKKyAgZ3NiaTdfc3BpX2NzMiwgZ3NiaTdfc3BpX2NzMywgZ3NiaV9jYW1faTJjLCBoZG1pLCBtaTJzLCByaXZhX2J0LCByaXZhX2ZtLAorICByaXZhX3dsYW4sIHNkYzIsIHNkYzQsIHNsaW1idXMsIHNwa3JfaTJzLCB0c2lmMSwgdHNpZjIsIHVzYjJfaHNpYywgcHNfaG9sZAorCitFeGFtcGxlOgorCisJbXNtZ3BpbzogcGluY3RybEA4MDAwMDAgeworCQljb21wYXRpYmxlID0gInFjb20sYXBxODA2NC1waW5jdHJsIjsKKwkJcmVnID0gPDB4ODAwMDAwIDB4NDAwMD47CisKKwkJZ3Bpby1jb250cm9sbGVyOworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJCWludGVycnVwdHMgPSA8MCAxNiAweDQ+OworCisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmZ3NiaTVfdWFydF9kZWZhdWx0PjsKKworCQlnc2JpNV91YXJ0X2RlZmF1bHQ6IGdzYmk1X3VhcnRfZGVmYXVsdCB7CisJCQltdXggeworCQkJCXBpbnMgPSAiZ3BpbzUxIiwgImdwaW81MiI7CisJCQkJZnVuY3Rpb24gPSAiZ3NiaTUiOworCQkJfTsKKworCQkJdHggeworCQkJCXBpbnMgPSAiZ3BpbzUxIjsKKwkJCQlkcml2ZS1zdHJlbmd0aCA9IDw0PjsKKwkJCQliaWFzLWRpc2FibGU7CisJCQl9OworCisJCQlyeCB7CisJCQkJcGlucyA9ICJncGlvNTIiOworCQkJCWRyaXZlLXN0cmVuZ3RoID0gPDI+OworCQkJCWJpYXMtcHVsbC11cDsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3Fjb20sYXBxODA4NC1waW5jdHJsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3Fjb20sYXBxODA4NC1waW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGVhNjFhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcWNvbSxhcHE4MDg0LXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsMTc5IEBACitRdWFsY29tbSBBUFE4MDg0IFRMTU0gYmxvY2sKKworVGhpcyBiaW5kaW5nIGRlc2NyaWJlcyB0aGUgVG9wIExldmVsIE1vZGUgTXVsdGlwbGV4ZXIgYmxvY2sgZm91bmQgaW4gdGhlCitNU004OTYwIHBsYXRmb3JtLgorCistIGNvbXBhdGlibGU6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHN0cmluZz4KKwlEZWZpbml0aW9uOiBtdXN0IGJlICJxY29tLGFwcTgwODQtcGluY3RybCIKKworLSByZWc6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOiB0aGUgYmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSBUTE1NIHJlZ2lzdGVyIHNwYWNlLgorCistIGludGVycnVwdHM6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOiBzaG91bGQgc3BlY2lmeSB0aGUgVExNTSBzdW1tYXJ5IElSUS4KKworLSBpbnRlcnJ1cHQtY29udHJvbGxlcjoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8bm9uZT4KKwlEZWZpbml0aW9uOiBpZGVudGlmaWVzIHRoaXMgbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlcgorCistICNpbnRlcnJ1cHQtY2VsbHM6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHUzMj4KKwlEZWZpbml0aW9uOiBtdXN0IGJlIDIuIFNwZWNpZnlpbmcgdGhlIHBpbiBudW1iZXIgYW5kIGZsYWdzLCBhcyBkZWZpbmVkCisJCSAgICBpbiA8ZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaXJxLmg+CisKKy0gZ3Bpby1jb250cm9sbGVyOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxub25lPgorCURlZmluaXRpb246IGlkZW50aWZpZXMgdGhpcyBub2RlIGFzIGEgZ3BpbyBjb250cm9sbGVyCisKKy0gI2dwaW8tY2VsbHM6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHUzMj4KKwlEZWZpbml0aW9uOiBtdXN0IGJlIDIuIFNwZWNpZnlpbmcgdGhlIHBpbiBudW1iZXIgYW5kIGZsYWdzLCBhcyBkZWZpbmVkCisJCSAgICBpbiA8ZHQtYmluZGluZ3MvZ3Bpby9ncGlvLmg+CisKK1BsZWFzZSByZWZlciB0byAuLi9ncGlvL2dwaW8udHh0IGFuZCAuLi9pbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlcnJ1cHRzLnR4dCBmb3IKK2EgZ2VuZXJhbCBkZXNjcmlwdGlvbiBvZiBHUElPIGFuZCBpbnRlcnJ1cHQgYmluZGluZ3MuCisKK1BsZWFzZSByZWZlciB0byBwaW5jdHJsLWJpbmRpbmdzLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgZGV0YWlscyBvZiB0aGUKK2NvbW1vbiBwaW5jdHJsIGJpbmRpbmdzIHVzZWQgYnkgY2xpZW50IGRldmljZXMsIGluY2x1ZGluZyB0aGUgbWVhbmluZyBvZiB0aGUKK3BocmFzZSAicGluIGNvbmZpZ3VyYXRpb24gbm9kZSIuCisKK1RoZSBwaW4gY29uZmlndXJhdGlvbiBub2RlcyBhY3QgYXMgYSBjb250YWluZXIgZm9yIGFuIGFyYml0cmFyeSBudW1iZXIgb2YKK3N1Ym5vZGVzLiBFYWNoIG9mIHRoZXNlIHN1Ym5vZGVzIHJlcHJlc2VudHMgc29tZSBkZXNpcmVkIGNvbmZpZ3VyYXRpb24gZm9yIGEKK3BpbiwgYSBncm91cCwgb3IgYSBsaXN0IG9mIHBpbnMgb3IgZ3JvdXBzLiBUaGlzIGNvbmZpZ3VyYXRpb24gY2FuIGluY2x1ZGUgdGhlCittdXggZnVuY3Rpb24gdG8gc2VsZWN0IG9uIHRob3NlIHBpbihzKS9ncm91cChzKSwgYW5kIHZhcmlvdXMgcGluIGNvbmZpZ3VyYXRpb24KK3BhcmFtZXRlcnMsIHN1Y2ggYXMgcHVsbC11cCwgZHJpdmUgc3RyZW5ndGgsIGV0Yy4KKworCitQSU4gQ09ORklHVVJBVElPTiBOT0RFUzoKKworVGhlIG5hbWUgb2YgZWFjaCBzdWJub2RlIGlzIG5vdCBpbXBvcnRhbnQ7IGFsbCBzdWJub2RlcyBzaG91bGQgYmUgZW51bWVyYXRlZAorYW5kIHByb2Nlc3NlZCBwdXJlbHkgYmFzZWQgb24gdGhlaXIgY29udGVudC4KKworRWFjaCBzdWJub2RlIG9ubHkgYWZmZWN0cyB0aG9zZSBwYXJhbWV0ZXJzIHRoYXQgYXJlIGV4cGxpY2l0bHkgbGlzdGVkLiBJbgorb3RoZXIgd29yZHMsIGEgc3Vibm9kZSB0aGF0IGxpc3RzIGEgbXV4IGZ1bmN0aW9uIGJ1dCBubyBwaW4gY29uZmlndXJhdGlvbgorcGFyYW1ldGVycyBpbXBsaWVzIG5vIGluZm9ybWF0aW9uIGFib3V0IGFueSBwaW4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgorU2ltaWxhcmx5LCBhIHBpbiBzdWJub2RlIHRoYXQgZGVzY3JpYmVzIGEgcHVsbHVwIHBhcmFtZXRlciBpbXBsaWVzIG5vCitpbmZvcm1hdGlvbiBhYm91dCBlLmcuIHRoZSBtdXggZnVuY3Rpb24uCisKKworVGhlIGZvbGxvd2luZyBnZW5lcmljIHByb3BlcnRpZXMgYXMgZGVmaW5lZCBpbiBwaW5jdHJsLWJpbmRpbmdzLnR4dCBhcmUgdmFsaWQKK3RvIHNwZWNpZnkgaW4gYSBwaW4gY29uZmlndXJhdGlvbiBzdWJub2RlOgorCistIHBpbnM6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHN0cmluZy1hcnJheT4KKwlEZWZpbml0aW9uOiBMaXN0IG9mIGdwaW8gcGlucyBhZmZlY3RlZCBieSB0aGUgcHJvcGVydGllcyBzcGVjaWZpZWQgaW4KKwkJICAgIHRoaXMgc3Vibm9kZS4gIFZhbGlkIHBpbnMgYXJlOgorCQkgICAgZ3BpbzAtZ3BpbzE0NiwKKwkJICAgIHNkYzFfY2xrLAorCQkgICAgc2RjMV9jbWQsCisJCSAgICBzZGMxX2RhdGEKKwkJICAgIHNkYzJfY2xrLAorCQkgICAgc2RjMl9jbWQsCisJCSAgICBzZGMyX2RhdGEKKworLSBmdW5jdGlvbjoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8c3RyaW5nPgorCURlZmluaXRpb246IFNwZWNpZnkgdGhlIGFsdGVybmF0aXZlIGZ1bmN0aW9uIHRvIGJlIGNvbmZpZ3VyZWQgZm9yIHRoZQorCQkgICAgc3BlY2lmaWVkIHBpbnMuIEZ1bmN0aW9ucyBhcmUgb25seSB2YWxpZCBmb3IgZ3BpbyBwaW5zLgorCQkgICAgVmFsaWQgdmFsdWVzIGFyZToKKwkJICAgIGFkc3BfZXh0LCBhdWRpb19yZWYsIGJsc3BfaTJjMSwgYmxzcF9pMmMyLCBibHNwX2kyYzMsCisJCSAgICBibHNwX2kyYzQsIGJsc3BfaTJjNSwgYmxzcF9pMmM2LCBibHNwX2kyYzcsIGJsc3BfaTJjOCwKKwkJICAgIGJsc3BfaTJjOSwgYmxzcF9pMmMxMCwgYmxzcF9pMmMxMSwgYmxzcF9pMmMxMiwKKwkJICAgIGJsc3Bfc3BpMSwgYmxzcF9zcGkyLCBibHNwX3NwaTMsIGJsc3Bfc3BpNCwgYmxzcF9zcGk1LAorCQkgICAgYmxzcF9zcGk2LCBibHNwX3NwaTcsIGJsc3Bfc3BpOCwgYmxzcF9zcGk5LCBibHNwX3NwaTEwLAorCQkgICAgYmxzcF9zcGkxMSwgYmxzcF9zcGkxMiwgYmxzcF91YXJ0MSwgYmxzcF91YXJ0MiwgYmxzcF91YXJ0MywKKwkJICAgIGJsc3BfdWFydDQsIGJsc3BfdWFydDUsIGJsc3BfdWFydDYsIGJsc3BfdWFydDcsIGJsc3BfdWFydDgsCisJCSAgICBibHNwX3VhcnQ5LCBibHNwX3VhcnQxMCwgYmxzcF91YXJ0MTEsIGJsc3BfdWFydDEyLAorCQkgICAgYmxzcF91aW0xLCBibHNwX3VpbTIsIGJsc3BfdWltMywgYmxzcF91aW00LCBibHNwX3VpbTUsCisJCSAgICBibHNwX3VpbTYsIGJsc3BfdWltNywgYmxzcF91aW04LCBibHNwX3VpbTksIGJsc3BfdWltMTAsCisJCSAgICBibHNwX3VpbTExLCBibHNwX3VpbTEyLCBjYW1fbWNsazAsIGNhbV9tY2xrMSwgY2FtX21jbGsyLAorCQkgICAgY2FtX21jbGszLCBjY2lfYXN5bmMsIGNjaV9hc3luY19pbjAsIGNjaV9pMmMwLCBjY2lfaTJjMSwKKwkJICAgIGNjaV90aW1lcjAsIGNjaV90aW1lcjEsIGNjaV90aW1lcjIsIGNjaV90aW1lcjMsIGNjaV90aW1lcjQsCisJCSAgICBlZHBfaHBkLCBnY2NfZ3AxLCBnY2NfZ3AyLCBnY2NfZ3AzLCBnY2Nfb2J0LCBnY2NfdnR0LGkKKwkJICAgIGdwX21uLCBncF9wZG0wLCBncF9wZG0xLCBncF9wZG0yLCBncDBfY2xrLCBncDFfY2xrLCBncGlvLAorCQkgICAgaGRtaV9jZWMsIGhkbWlfZGRjLCBoZG1pX2R0ZXN0LCBoZG1pX2hwZCwgaGRtaV9yY3YsIGhzaWMsCisJCSAgICBsZG9fZW4sIGxkb191cGRhdGUsIG1kcF92c3luYywgcGNpX2UwLCBwY2lfZTBfbiwgcGNpX2UwX3JzdCwKKwkJICAgIHBjaV9lMSwgcGNpX2UxX3JzdCwgcGNpX2UxX3JzdF9uLCBwY2lfZTFfY2xrcmVxX24sIHByaV9taTJzLAorCQkgICAgcXVhX21pMnMsIHNhdGFfYWN0LCBzYXRhX2RldnNsZWVwLCBzYXRhX2RldnNsZWVwX24sCisJCSAgICBzZF93cml0ZSwgc2RjX2VtbWNfbW9kZSwgc2RjMywgc2RjNCwgc2VjX21pMnMsIHNsaW1idXMsCisJCSAgICBzcGRpZl90eCwgc3Brcl9pMnMsIHNwa3JfaTJzX3dzLCBzcHNzX2dlbmksIHRlcl9taTJzLCB0c2lmMSwKKwkJICAgIHRzaWYyLCB1aW0sIHVpbV9iYXR0X2FsYXJtCisKKy0gYmlhcy1kaXNhYmxlOgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IDxub25lPgorCURlZmluaXRpb246IFRoZSBzcGVjaWZpZWQgcGlucyBzaG91bGQgYmUgY29uZmlndWVkIGFzIG5vIHB1bGwuCisKKy0gYmlhcy1wdWxsLWRvd246CisJVXNhZ2U6IG9wdGlvbmFsCisJVmFsdWUgdHlwZTogPG5vbmU+CisJRGVmaW5pdGlvbjogVGhlIHNwZWNpZmllZCBwaW5zIHNob3VsZCBiZSBjb25maWd1ZWQgYXMgcHVsbCBkb3duLgorCistIGJpYXMtcHVsbC11cDoKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8bm9uZT4KKwlEZWZpbml0aW9uOiBUaGUgc3BlY2lmaWVkIHBpbnMgc2hvdWxkIGJlIGNvbmZpZ3VlZCBhcyBwdWxsIHVwLgorCistIG91dHB1dC1oaWdoOgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IDxub25lPgorCURlZmluaXRpb246IFRoZSBzcGVjaWZpZWQgcGlucyBhcmUgY29uZmlndXJlZCBpbiBvdXRwdXQgbW9kZSwgZHJpdmVuCisJCSAgICBoaWdoLgorCQkgICAgTm90IHZhbGlkIGZvciBzZGMgcGlucy4KKworLSBvdXRwdXQtbG93OgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IDxub25lPgorCURlZmluaXRpb246IFRoZSBzcGVjaWZpZWQgcGlucyBhcmUgY29uZmlndXJlZCBpbiBvdXRwdXQgbW9kZSwgZHJpdmVuCisJCSAgICBsb3cuCisJCSAgICBOb3QgdmFsaWQgZm9yIHNkYyBwaW5zLgorCistIGRyaXZlLXN0cmVuZ3RoOgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IDx1MzI+CisJRGVmaW5pdGlvbjogU2VsZWN0cyB0aGUgZHJpdmUgc3RyZW5ndGggZm9yIHRoZSBzcGVjaWZpZWQgcGlucywgaW4gbUEuCisJCSAgICBWYWxpZCB2YWx1ZXMgYXJlOiAyLCA0LCA2LCA4LCAxMCwgMTIsIDE0IGFuZCAxNgorCitFeGFtcGxlOgorCisJdGxtbTogcGluY3RybEBmZDUxMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicWNvbSxhcHE4MDg0LXBpbmN0cmwiOworCQlyZWcgPSA8MHhmZDUxMDAwMCAweDQwMDA+OworCisJCWdwaW8tY29udHJvbGxlcjsKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCWludGVycnVwdC1jb250cm9sbGVyOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCQlpbnRlcnJ1cHRzID0gPDAgMjA4IDA+OworCisJCXVhcnQyOiB1YXJ0Mi1kZWZhdWx0IHsKKwkJCW11eCB7CisJCQkJcGlucyA9ICJncGlvNCIsICJncGlvNSI7CisJCQkJZnVuY3Rpb24gPSAiYmxzcF91YXJ0MiI7CisJCQl9OworCisJCQl0eCB7CisJCQkJcGlucyA9ICJncGlvNCI7CisJCQkJZHJpdmUtc3RyZW5ndGggPSA8ND47CisJCQkJYmlhcy1kaXNhYmxlOworCQkJfTsKKworCQkJcnggeworCQkJCXBpbnMgPSAiZ3BpbzUiOworCQkJCWRyaXZlLXN0cmVuZ3RoID0gPDI+OworCQkJCWJpYXMtcHVsbC11cDsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3Fjb20saXBxODA2NC1waW5jdHJsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3Fjb20saXBxODA2NC1waW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTg4ZTkxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcWNvbSxpcHE4MDY0LXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsOTUgQEAKK1F1YWxjb21tIElQUTgwNjQgVExNTSBibG9jaworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAicWNvbSxpcHE4MDY0LXBpbmN0cmwiCistIHJlZzogU2hvdWxkIGJlIHRoZSBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgVExNTSBibG9jay4KKy0gaW50ZXJydXB0czogU2hvdWxkIGJlIHRoZSBwYXJlbnQgSVJRIG9mIHRoZSBUTE1NIGJsb2NrLgorLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogTWFya3MgdGhlIGRldmljZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyLgorLSAjaW50ZXJydXB0LWNlbGxzOiBTaG91bGQgYmUgdHdvLgorLSBncGlvLWNvbnRyb2xsZXI6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIEdQSU8gY29udHJvbGxlci4KKy0gI2dwaW8tY2VsbHMgOiBTaG91bGQgYmUgdHdvLgorICAgICAgICAgICAgICAgIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBncGlvIHBpbiBudW1iZXIgYW5kIHRoZQorICAgICAgICAgICAgICAgIHNlY29uZCBjZWxsIGlzIHVzZWQgZm9yIG9wdGlvbmFsIHBhcmFtZXRlcnMuCisKK1BsZWFzZSByZWZlciB0byAuLi9ncGlvL2dwaW8udHh0IGFuZCAuLi9pbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlcnJ1cHRzLnR4dCBmb3IKK2EgZ2VuZXJhbCBkZXNjcmlwdGlvbiBvZiBHUElPIGFuZCBpbnRlcnJ1cHQgYmluZGluZ3MuCisKK1BsZWFzZSByZWZlciB0byBwaW5jdHJsLWJpbmRpbmdzLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgZGV0YWlscyBvZiB0aGUKK2NvbW1vbiBwaW5jdHJsIGJpbmRpbmdzIHVzZWQgYnkgY2xpZW50IGRldmljZXMsIGluY2x1ZGluZyB0aGUgbWVhbmluZyBvZiB0aGUKK3BocmFzZSAicGluIGNvbmZpZ3VyYXRpb24gbm9kZSIuCisKK1F1YWxjb21tJ3MgcGluIGNvbmZpZ3VyYXRpb24gbm9kZXMgYWN0IGFzIGEgY29udGFpbmVyIGZvciBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mCitzdWJub2Rlcy4gRWFjaCBvZiB0aGVzZSBzdWJub2RlcyByZXByZXNlbnRzIHNvbWUgZGVzaXJlZCBjb25maWd1cmF0aW9uIGZvciBhCitwaW4sIGEgZ3JvdXAsIG9yIGEgbGlzdCBvZiBwaW5zIG9yIGdyb3Vwcy4gVGhpcyBjb25maWd1cmF0aW9uIGNhbiBpbmNsdWRlIHRoZQorbXV4IGZ1bmN0aW9uIHRvIHNlbGVjdCBvbiB0aG9zZSBwaW4ocykvZ3JvdXAocyksIGFuZCB2YXJpb3VzIHBpbiBjb25maWd1cmF0aW9uCitwYXJhbWV0ZXJzLCBzdWNoIGFzIHB1bGwtdXAsIGRyaXZlIHN0cmVuZ3RoLCBldGMuCisKK1RoZSBuYW1lIG9mIGVhY2ggc3Vibm9kZSBpcyBub3QgaW1wb3J0YW50OyBhbGwgc3Vibm9kZXMgc2hvdWxkIGJlIGVudW1lcmF0ZWQKK2FuZCBwcm9jZXNzZWQgcHVyZWx5IGJhc2VkIG9uIHRoZWlyIGNvbnRlbnQuCisKK0VhY2ggc3Vibm9kZSBvbmx5IGFmZmVjdHMgdGhvc2UgcGFyYW1ldGVycyB0aGF0IGFyZSBleHBsaWNpdGx5IGxpc3RlZC4gSW4KK290aGVyIHdvcmRzLCBhIHN1Ym5vZGUgdGhhdCBsaXN0cyBhIG11eCBmdW5jdGlvbiBidXQgbm8gcGluIGNvbmZpZ3VyYXRpb24KK3BhcmFtZXRlcnMgaW1wbGllcyBubyBpbmZvcm1hdGlvbiBhYm91dCBhbnkgcGluIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4KK1NpbWlsYXJseSwgYSBwaW4gc3Vibm9kZSB0aGF0IGRlc2NyaWJlcyBhIHB1bGx1cCBwYXJhbWV0ZXIgaW1wbGllcyBubworaW5mb3JtYXRpb24gYWJvdXQgZS5nLiB0aGUgbXV4IGZ1bmN0aW9uLgorCisKK1RoZSBmb2xsb3dpbmcgZ2VuZXJpYyBwcm9wZXJ0aWVzIGFzIGRlZmluZWQgaW4gcGluY3RybC1iaW5kaW5ncy50eHQgYXJlIHZhbGlkCit0byBzcGVjaWZ5IGluIGEgcGluIGNvbmZpZ3VyYXRpb24gc3Vibm9kZToKKworIHBpbnMsIGZ1bmN0aW9uLCBiaWFzLWRpc2FibGUsIGJpYXMtcHVsbC1kb3duLCBiaWFzLXB1bGwsdXAsIGRyaXZlLXN0cmVuZ3RoLAorIG91dHB1dC1sb3csIG91dHB1dC1oaWdoLgorCitOb24tZW1wdHkgc3Vibm9kZXMgbXVzdCBzcGVjaWZ5IHRoZSAncGlucycgcHJvcGVydHkuCisKK1ZhbGlkIHZhbHVlcyBmb3IgcWNvbSxwaW5zIGFyZToKKyAgZ3BpbzAtZ3BpbzY4CisgICBTdXBwb3J0cyBtdXgsIGJpYXMsIGFuZCBkcml2ZS1zdHJlbmd0aAorCisgIHNkYzNfY2xrLCBzZGMzX2NtZCwgc2RjM19kYXRhCisgICBTdXBwb3J0cyBiaWFzIGFuZCBkcml2ZS1zdHJlbmd0aAorCisKK1ZhbGlkIHZhbHVlcyBmb3IgZnVuY3Rpb24gYXJlOgorICBtZGlvLCBtaTJzLCBwZG0sIHNzYmksIHNwbWksIGF1ZGlvX3BjbSwgZ3BpbywgZ3NiaTEsIGdzYmkyLCBnc2JpNCwgZ3NiaTUsCisgIGdzYmk1X3NwaV9jczEsIGdzYmk1X3NwaV9jczIsIGdzYmk1X3NwaV9jczMsIGdzYmk2LCBnc2JpNywgbnNzX3NwaSwgc2RjMSwKKyAgc3BkaWYsIG5hbmQsIHRzaWYxLCB0c2lmMiwgdXNiX2ZzX24sIHVzYl9mcywgdXNiMl9oc2ljLCByZ21paTIsIHNhdGEsCisgIHBjaWUxX3JzdCwgcGNpZTFfcHJzbnQsIHBjaWUxX3B3cmVuX24sIHBjaWUxX3B3cmVuLCBwY2llMV9wd3JmbHQsCisgIHBjaWUxX2Nsa19yZXEsIHBjaWUyX3JzdCwgcGNpZTJfcHJzbnQsIHBjaWUyX3B3cmVuX24sIHBjaWUyX3B3cmVuLAorICBwY2llMl9wd3JmbHQsIHBjaWUyX2Nsa19yZXEsIHBjaWUzX3JzdCwgcGNpZTNfcHJzbnQsIHBjaWUzX3B3cmVuX24sCisgIHBjaWUzX3B3cmVuLCBwY2llM19wd3JmbHQsIHBjaWUzX2Nsa19yZXEsIHBzX2hvbGQKKworRXhhbXBsZToKKworCXBpbm11eDogcGluY3RybEA4MDAwMDAgeworCQljb21wYXRpYmxlID0gInFjb20saXBxODA2NC1waW5jdHJsIjsKKwkJcmVnID0gPDB4ODAwMDAwIDB4NDAwMD47CisKKwkJZ3Bpby1jb250cm9sbGVyOworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJCWludGVycnVwdHMgPSA8MCAzMiAweDQ+OworCisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmZ3NiaTVfdWFydF9kZWZhdWx0PjsKKworCQlnc2JpNV91YXJ0X2RlZmF1bHQ6IGdzYmk1X3VhcnRfZGVmYXVsdCB7CisJCQltdXggeworCQkJCXBpbnMgPSAiZ3BpbzE4IiwgImdwaW8xOSI7CisJCQkJZnVuY3Rpb24gPSAiZ3NiaTUiOworCQkJfTsKKworCQkJdHggeworCQkJCXBpbnMgPSAiZ3BpbzE4IjsKKwkJCQlkcml2ZS1zdHJlbmd0aCA9IDw0PjsKKwkJCQliaWFzLWRpc2FibGU7CisJCQl9OworCisJCQlyeCB7CisJCQkJcGlucyA9ICJncGlvMTkiOworCQkJCWRyaXZlLXN0cmVuZ3RoID0gPDI+OworCQkJCWJpYXMtcHVsbC11cDsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3Fjb20sbXNtODY2MC1waW5jdHJsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3Fjb20sbXNtODY2MC1waW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43N2FhMTE3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcWNvbSxtc204NjYwLXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsOTAgQEAKK1F1YWxjb21tIE1TTTg2NjAgVExNTSBibG9jaworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAicWNvbSxtc204NjYwLXBpbmN0cmwiCistIHJlZzogU2hvdWxkIGJlIHRoZSBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgVExNTSBibG9jay4KKy0gaW50ZXJydXB0czogU2hvdWxkIGJlIHRoZSBwYXJlbnQgSVJRIG9mIHRoZSBUTE1NIGJsb2NrLgorLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogTWFya3MgdGhlIGRldmljZSBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyLgorLSAjaW50ZXJydXB0LWNlbGxzOiBTaG91bGQgYmUgdHdvLgorLSBncGlvLWNvbnRyb2xsZXI6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIEdQSU8gY29udHJvbGxlci4KKy0gI2dwaW8tY2VsbHMgOiBTaG91bGQgYmUgdHdvLgorICAgICAgICAgICAgICAgIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBncGlvIHBpbiBudW1iZXIgYW5kIHRoZQorICAgICAgICAgICAgICAgIHNlY29uZCBjZWxsIGlzIHVzZWQgZm9yIG9wdGlvbmFsIHBhcmFtZXRlcnMuCisKK1BsZWFzZSByZWZlciB0byAuLi9ncGlvL2dwaW8udHh0IGFuZCAuLi9pbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlcnJ1cHRzLnR4dCBmb3IKK2EgZ2VuZXJhbCBkZXNjcmlwdGlvbiBvZiBHUElPIGFuZCBpbnRlcnJ1cHQgYmluZGluZ3MuCisKK1BsZWFzZSByZWZlciB0byBwaW5jdHJsLWJpbmRpbmdzLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgZGV0YWlscyBvZiB0aGUKK2NvbW1vbiBwaW5jdHJsIGJpbmRpbmdzIHVzZWQgYnkgY2xpZW50IGRldmljZXMsIGluY2x1ZGluZyB0aGUgbWVhbmluZyBvZiB0aGUKK3BocmFzZSAicGluIGNvbmZpZ3VyYXRpb24gbm9kZSIuCisKK1F1YWxjb21tJ3MgcGluIGNvbmZpZ3VyYXRpb24gbm9kZXMgYWN0IGFzIGEgY29udGFpbmVyIGZvciBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mCitzdWJub2Rlcy4gRWFjaCBvZiB0aGVzZSBzdWJub2RlcyByZXByZXNlbnRzIHNvbWUgZGVzaXJlZCBjb25maWd1cmF0aW9uIGZvciBhCitwaW4sIGEgZ3JvdXAsIG9yIGEgbGlzdCBvZiBwaW5zIG9yIGdyb3Vwcy4gVGhpcyBjb25maWd1cmF0aW9uIGNhbiBpbmNsdWRlIHRoZQorbXV4IGZ1bmN0aW9uIHRvIHNlbGVjdCBvbiB0aG9zZSBwaW4ocykvZ3JvdXAocyksIGFuZCB2YXJpb3VzIHBpbiBjb25maWd1cmF0aW9uCitwYXJhbWV0ZXJzLCBzdWNoIGFzIHB1bGwtdXAsIGRyaXZlIHN0cmVuZ3RoLCBldGMuCisKK1RoZSBuYW1lIG9mIGVhY2ggc3Vibm9kZSBpcyBub3QgaW1wb3J0YW50OyBhbGwgc3Vibm9kZXMgc2hvdWxkIGJlIGVudW1lcmF0ZWQKK2FuZCBwcm9jZXNzZWQgcHVyZWx5IGJhc2VkIG9uIHRoZWlyIGNvbnRlbnQuCisKK0VhY2ggc3Vibm9kZSBvbmx5IGFmZmVjdHMgdGhvc2UgcGFyYW1ldGVycyB0aGF0IGFyZSBleHBsaWNpdGx5IGxpc3RlZC4gSW4KK290aGVyIHdvcmRzLCBhIHN1Ym5vZGUgdGhhdCBsaXN0cyBhIG11eCBmdW5jdGlvbiBidXQgbm8gcGluIGNvbmZpZ3VyYXRpb24KK3BhcmFtZXRlcnMgaW1wbGllcyBubyBpbmZvcm1hdGlvbiBhYm91dCBhbnkgcGluIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4KK1NpbWlsYXJseSwgYSBwaW4gc3Vibm9kZSB0aGF0IGRlc2NyaWJlcyBhIHB1bGx1cCBwYXJhbWV0ZXIgaW1wbGllcyBubworaW5mb3JtYXRpb24gYWJvdXQgZS5nLiB0aGUgbXV4IGZ1bmN0aW9uLgorCisKK1RoZSBmb2xsb3dpbmcgZ2VuZXJpYyBwcm9wZXJ0aWVzIGFzIGRlZmluZWQgaW4gcGluY3RybC1iaW5kaW5ncy50eHQgYXJlIHZhbGlkCit0byBzcGVjaWZ5IGluIGEgcGluIGNvbmZpZ3VyYXRpb24gc3Vibm9kZToKKworIHBpbnMsIGZ1bmN0aW9uLCBiaWFzLWRpc2FibGUsIGJpYXMtcHVsbC1kb3duLCBiaWFzLXB1bGwsdXAsIGRyaXZlLXN0cmVuZ3RoLAorIG91dHB1dC1sb3csIG91dHB1dC1oaWdoLgorCitOb24tZW1wdHkgc3Vibm9kZXMgbXVzdCBzcGVjaWZ5IHRoZSAncGlucycgcHJvcGVydHkuCisKK1ZhbGlkIHZhbHVlcyBmb3IgcGlucyBhcmU6CisgIGdwaW8wLWdwaW8xNzIsIHNkYzNfY2xrLCBzZGMzX2NtZCwgc2RjM19kYXRhIHNkYzRfY2xrLCBzZGM0X2NtZCwgc2RjNF9kYXRhCisKK1ZhbGlkIHZhbHVlcyBmb3IgZnVuY3Rpb24gYXJlOgorICBncGlvLCBjYW1fbWNsaywgZHN1YiwgZXh0X2dwcywgZ3BfY2xrXzBhLCBncF9jbGtfMGIsIGdwX2Nsa18xYSwgZ3BfY2xrXzFiLAorICBncF9jbGtfMmEsIGdwX2Nsa18yYiwgZ3BfbW4sIGdzYmkxLCBnc2JpMV9zcGlfY3MxX24sIGdzYmkxX3NwaV9jczJhX24sCisgIGdzYmkxX3NwaV9jczJiX24sIGdzYmkxX3NwaV9jczNfbiwgZ3NiaTIsIGdzYmkyX3NwaV9jczFfbiwgZ3NiaTJfc3BpX2NzMl9uLAorICBnc2JpMl9zcGlfY3MzX24sIGdzYmkzLCBnc2JpM19zcGlfY3MxX24sIGdzYmkzX3NwaV9jczJfbiwgZ3NiaTNfc3BpX2NzM19uLAorICBnc2JpNCwgZ3NiaTUsIGdzYmk2LCBnc2JpNywgZ3NiaTgsIGdzYmk5LCBnc2JpMTAsIGdzYmkxMSwgZ3NiaTEyLCBoZG1pLCBpMnMsCisgIGxjZGMsIG1kcF92c3luYywgbWkycywgcGNtLCBwc19ob2xkLCBzZGMxLCBzZGMyLCBzZGM1LCB0c2lmMSwgdHNpZjIsIHVzYl9mczEsCisgIHVzYl9mczFfb2VfbiwgdXNiX2ZzMiwgdXNiX2ZzMl9vZV9uLCB2ZmUsIHZzZW5zX2FsYXJtLAorCitFeGFtcGxlOgorCisJbXNtZ3BpbzogcGluY3RybEA4MDAwMDAgeworCQljb21wYXRpYmxlID0gInFjb20sbXNtODY2MC1waW5jdHJsIjsKKwkJcmVnID0gPDB4ODAwMDAwIDB4NDAwMD47CisKKwkJZ3Bpby1jb250cm9sbGVyOworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJCWludGVycnVwdHMgPSA8MCAxNiAweDQ+OworCisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmZ3NiaTEyX3VhcnQ+OworCisJCWdzYmkxMl91YXJ0OiBnc2JpMTItdWFydCB7CisJCQltdXggeworCQkJCXBpbnMgPSAiZ3BpbzExNyIsICJncGlvMTE4IjsKKwkJCQlmdW5jdGlvbiA9ICJnc2JpMTIiOworCQkJfTsKKworCQkJdHggeworCQkJCXBpbnMgPSAiZ3BpbzExOCI7CisJCQkJZHJpdmUtc3RyZW5ndGggPSA8OD47CisJCQkJYmlhcy1kaXNhYmxlOworCQkJfTsKKworCQkJcnggeworCQkJCXBpbnMgPSAiZ3BpbzExNyI7CisJCQkJZHJpdmUtc3RyZW5ndGggPSA8Mj47CisJCQkJYmlhcy1wdWxsLXVwOworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcWNvbSxtc204OTE2LXBpbmN0cmwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcWNvbSxtc204OTE2LXBpbmN0cmwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5OGNhZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9xY29tLG1zbTg5MTYtcGluY3RybC50eHQKQEAgLTAsMCArMSwxODYgQEAKK1F1YWxjb21tIE1TTTg5MTYgVExNTSBibG9jaworCitUaGlzIGJpbmRpbmcgZGVzY3JpYmVzIHRoZSBUb3AgTGV2ZWwgTW9kZSBNdWx0aXBsZXhlciBibG9jayBmb3VuZCBpbiB0aGUKK01TTTg5MTYgcGxhdGZvcm0uCisKKy0gY29tcGF0aWJsZToKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8c3RyaW5nPgorCURlZmluaXRpb246IG11c3QgYmUgInFjb20sbXNtODkxNi1waW5jdHJsIgorCistIHJlZzoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IHRoZSBiYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIFRMTU0gcmVnaXN0ZXIgc3BhY2UuCisKKy0gaW50ZXJydXB0czoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IHNob3VsZCBzcGVjaWZ5IHRoZSBUTE1NIHN1bW1hcnkgSVJRLgorCistIGludGVycnVwdC1jb250cm9sbGVyOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxub25lPgorCURlZmluaXRpb246IGlkZW50aWZpZXMgdGhpcyBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyCisKKy0gI2ludGVycnVwdC1jZWxsczoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8dTMyPgorCURlZmluaXRpb246IG11c3QgYmUgMi4gU3BlY2lmeWluZyB0aGUgcGluIG51bWJlciBhbmQgZmxhZ3MsIGFzIGRlZmluZWQKKwkJICAgIGluIDxkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaD4KKworLSBncGlvLWNvbnRyb2xsZXI6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPG5vbmU+CisJRGVmaW5pdGlvbjogaWRlbnRpZmllcyB0aGlzIG5vZGUgYXMgYSBncGlvIGNvbnRyb2xsZXIKKworLSAjZ3Bpby1jZWxsczoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8dTMyPgorCURlZmluaXRpb246IG11c3QgYmUgMi4gU3BlY2lmeWluZyB0aGUgcGluIG51bWJlciBhbmQgZmxhZ3MsIGFzIGRlZmluZWQKKwkJICAgIGluIDxkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaD4KKworUGxlYXNlIHJlZmVyIHRvIC4uL2dwaW8vZ3Bpby50eHQgYW5kIC4uL2ludGVycnVwdC1jb250cm9sbGVyL2ludGVycnVwdHMudHh0IGZvcgorYSBnZW5lcmFsIGRlc2NyaXB0aW9uIG9mIEdQSU8gYW5kIGludGVycnVwdCBiaW5kaW5ncy4KKworUGxlYXNlIHJlZmVyIHRvIHBpbmN0cmwtYmluZGluZ3MudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBkZXRhaWxzIG9mIHRoZQorY29tbW9uIHBpbmN0cmwgYmluZGluZ3MgdXNlZCBieSBjbGllbnQgZGV2aWNlcywgaW5jbHVkaW5nIHRoZSBtZWFuaW5nIG9mIHRoZQorcGhyYXNlICJwaW4gY29uZmlndXJhdGlvbiBub2RlIi4KKworVGhlIHBpbiBjb25maWd1cmF0aW9uIG5vZGVzIGFjdCBhcyBhIGNvbnRhaW5lciBmb3IgYW4gYXJiaXRyYXJ5IG51bWJlciBvZgorc3Vibm9kZXMuIEVhY2ggb2YgdGhlc2Ugc3Vibm9kZXMgcmVwcmVzZW50cyBzb21lIGRlc2lyZWQgY29uZmlndXJhdGlvbiBmb3IgYQorcGluLCBhIGdyb3VwLCBvciBhIGxpc3Qgb2YgcGlucyBvciBncm91cHMuIFRoaXMgY29uZmlndXJhdGlvbiBjYW4gaW5jbHVkZSB0aGUKK211eCBmdW5jdGlvbiB0byBzZWxlY3Qgb24gdGhvc2UgcGluKHMpL2dyb3VwKHMpLCBhbmQgdmFyaW91cyBwaW4gY29uZmlndXJhdGlvbgorcGFyYW1ldGVycywgc3VjaCBhcyBwdWxsLXVwLCBkcml2ZSBzdHJlbmd0aCwgZXRjLgorCisKK1BJTiBDT05GSUdVUkFUSU9OIE5PREVTOgorCitUaGUgbmFtZSBvZiBlYWNoIHN1Ym5vZGUgaXMgbm90IGltcG9ydGFudDsgYWxsIHN1Ym5vZGVzIHNob3VsZCBiZSBlbnVtZXJhdGVkCithbmQgcHJvY2Vzc2VkIHB1cmVseSBiYXNlZCBvbiB0aGVpciBjb250ZW50LgorCitFYWNoIHN1Ym5vZGUgb25seSBhZmZlY3RzIHRob3NlIHBhcmFtZXRlcnMgdGhhdCBhcmUgZXhwbGljaXRseSBsaXN0ZWQuIEluCitvdGhlciB3b3JkcywgYSBzdWJub2RlIHRoYXQgbGlzdHMgYSBtdXggZnVuY3Rpb24gYnV0IG5vIHBpbiBjb25maWd1cmF0aW9uCitwYXJhbWV0ZXJzIGltcGxpZXMgbm8gaW5mb3JtYXRpb24gYWJvdXQgYW55IHBpbiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuCitTaW1pbGFybHksIGEgcGluIHN1Ym5vZGUgdGhhdCBkZXNjcmliZXMgYSBwdWxsdXAgcGFyYW1ldGVyIGltcGxpZXMgbm8KK2luZm9ybWF0aW9uIGFib3V0IGUuZy4gdGhlIG11eCBmdW5jdGlvbi4KKworCitUaGUgZm9sbG93aW5nIGdlbmVyaWMgcHJvcGVydGllcyBhcyBkZWZpbmVkIGluIHBpbmN0cmwtYmluZGluZ3MudHh0IGFyZSB2YWxpZAordG8gc3BlY2lmeSBpbiBhIHBpbiBjb25maWd1cmF0aW9uIHN1Ym5vZGU6CisKKy0gcGluczoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8c3RyaW5nLWFycmF5PgorCURlZmluaXRpb246IExpc3Qgb2YgZ3BpbyBwaW5zIGFmZmVjdGVkIGJ5IHRoZSBwcm9wZXJ0aWVzIHNwZWNpZmllZCBpbgorCQkgICAgdGhpcyBzdWJub2RlLiAgVmFsaWQgcGlucyBhcmU6CisJCSAgICBncGlvMC1ncGlvMTIxLAorCQkgICAgc2RjMV9jbGssCisJCSAgICBzZGMxX2NtZCwKKwkJICAgIHNkYzFfZGF0YQorCQkgICAgc2RjMl9jbGssCisJCSAgICBzZGMyX2NtZCwKKwkJICAgIHNkYzJfZGF0YSwKKwkJICAgIHFkc2RfY21kLAorCQkgICAgcWRzZF9kYXRhMCwKKwkJICAgIHFkc2RfZGF0YTEsCisJCSAgICBxZHNkX2RhdGEyLAorCQkgICAgcWRzZF9kYXRhMworCistIGZ1bmN0aW9uOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxzdHJpbmc+CisJRGVmaW5pdGlvbjogU3BlY2lmeSB0aGUgYWx0ZXJuYXRpdmUgZnVuY3Rpb24gdG8gYmUgY29uZmlndXJlZCBmb3IgdGhlCisJCSAgICBzcGVjaWZpZWQgcGlucy4gRnVuY3Rpb25zIGFyZSBvbmx5IHZhbGlkIGZvciBncGlvIHBpbnMuCisJCSAgICBWYWxpZCB2YWx1ZXMgYXJlOgorCWFkc3BfZXh0LCBhbHNwX2ludCwgYXRlc3RfYmJyeDAsIGF0ZXN0X2JicngxLCBhdGVzdF9jaGFyLCBhdGVzdF9jaGFyMCwKKwlhdGVzdF9jaGFyMSwgYXRlc3RfY2hhcjIsIGF0ZXN0X2NoYXIzLCBhdGVzdF9jb21ib2RhYywgYXRlc3RfZ3BzYWRjMCwKKwlhdGVzdF9ncHNhZGMxLCBhdGVzdF90c2VucywgYXRlc3Rfd2xhbjAsIGF0ZXN0X3dsYW4xLCBiYWNrbGlnaHRfZW4sCisJYmltY19kdGUwLGJpbWNfZHRlMSwgYmxzcF9pMmMxLCBibHNwX2kyYzIsIGJsc3BfaTJjMywgYmxzcF9pMmM0LAorCWJsc3BfaTJjNSwgYmxzcF9pMmM2LCBibHNwX3NwaTEsIGJsc3Bfc3BpMV9jczEsIGJsc3Bfc3BpMV9jczIsCisJYmxzcF9zcGkxX2NzMywgYmxzcF9zcGkyLCBibHNwX3NwaTJfY3MxLCBibHNwX3NwaTJfY3MyLCBibHNwX3NwaTJfY3MzLAorCWJsc3Bfc3BpMywgYmxzcF9zcGkzX2NzMSwgYmxzcF9zcGkzX2NzMiwgYmxzcF9zcGkzX2NzMywgYmxzcF9zcGk0LAorCWJsc3Bfc3BpNSwgYmxzcF9zcGk2LCBibHNwX3VhcnQxLCBibHNwX3VhcnQyLCBibHNwX3VpbTEsIGJsc3BfdWltMiwKKwljYW0xX3JzdCwgY2FtMV9zdGFuZGJ5LCBjYW1fbWNsazAsIGNhbV9tY2xrMSwgY2NpX2FzeW5jLCBjY2lfaTJjLAorCWNjaV90aW1lcjAsIGNjaV90aW1lcjEsIGNjaV90aW1lcjIsIGNkY19wZG0wLCBjb2RlY19tYWQsIGRiZ19vdXQsCisJZGlzcGxheV81diwgZG1pYzBfY2xrLCBkbWljMF9kYXRhLCBkc2lfcnN0LCBlYmkwX3dyY2RjLCBldXJvX3VzLAorCWV4dF9scGFzcywgZmxhc2hfc3Ryb2JlLCBnY2NfZ3AxX2Nsa19hLCBnY2NfZ3AxX2Nsa19iLCBnY2NfZ3AyX2Nsa19hLAorCWdjY19ncDJfY2xrX2IsIGdjY19ncDNfY2xrX2EsIGdjY19ncDNfY2xrX2IsIGdwaW8sIGdzbTBfdHgwLCBnc20wX3R4MSwKKwlnc20xX3R4MCwgZ3NtMV90eDEsIGd5cm9fYWNjbCwga3BzbnMwLCBrcHNuczEsIGtwc25zMiwgbGRvX2VuLAorCWxkb191cGRhdGUsIG1hZ19pbnQsIG1kcF92c3luYywgbW9kZW1fdHN5bmMsIG1fdm9jLCBuYXZfcHBzLCBuYXZfdHN5bmMsCisJcGFfaW5kaWNhdG9yLCBwYnMwLCBwYnMxLCBwYnMyLCBwcmlfbWkycywgcHJpX21pMnNfd3MsIHBybmdfcm9zYywKKwlwd3JfY3J5cHRvX2VuYWJsZWRfYSwgcHdyX2NyeXB0b19lbmFibGVkX2IsIHB3cl9tb2RlbV9lbmFibGVkX2EsCisJcHdyX21vZGVtX2VuYWJsZWRfYiwgcHdyX25hdl9lbmFibGVkX2EsIHB3cl9uYXZfZW5hYmxlZF9iLAorCXFkc3NfY3RpdHJpZ19pbl9hMCwgcWRzc19jdGl0cmlnX2luX2ExLCBxZHNzX2N0aXRyaWdfaW5fYjAsCisJcWRzc19jdGl0cmlnX2luX2IxLCBxZHNzX2N0aXRyaWdfb3V0X2EwLCBxZHNzX2N0aXRyaWdfb3V0X2ExLAorCXFkc3NfY3RpdHJpZ19vdXRfYjAsIHFkc3NfY3RpdHJpZ19vdXRfYjEsIHFkc3NfdHJhY2VjbGtfYSwKKwlxZHNzX3RyYWNlY2xrX2IsIHFkc3NfdHJhY2VjdGxfYSwgcWRzc190cmFjZWN0bF9iLCBxZHNzX3RyYWNlZGF0YV9hLAorCXFkc3NfdHJhY2VkYXRhX2IsIHJlc2V0X24sIHNkX2NhcmQsIHNkX3dyaXRlLCBzZWNfbWkycywgc21iX2ludCwKKwlzc2JpX3d0cjAsIHNzYmlfd3RyMSwgdWltMSwgdWltMiwgdWltMywgdWltX2JhdHQsIHdjc3NfYnQsIHdjc3NfZm0sCisJd2Nzc193bGFuLCB3ZWJjYW0xX3JzdAorCistIGJpYXMtZGlzYWJsZToKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8bm9uZT4KKwlEZWZpbml0aW9uOiBUaGUgc3BlY2lmaWVkIHBpbnMgc2hvdWxkIGJlIGNvbmZpZ3VlZCBhcyBubyBwdWxsLgorCistIGJpYXMtcHVsbC1kb3duOgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IDxub25lPgorCURlZmluaXRpb246IFRoZSBzcGVjaWZpZWQgcGlucyBzaG91bGQgYmUgY29uZmlndWVkIGFzIHB1bGwgZG93bi4KKworLSBiaWFzLXB1bGwtdXA6CisJVXNhZ2U6IG9wdGlvbmFsCisJVmFsdWUgdHlwZTogPG5vbmU+CisJRGVmaW5pdGlvbjogVGhlIHNwZWNpZmllZCBwaW5zIHNob3VsZCBiZSBjb25maWd1ZWQgYXMgcHVsbCB1cC4KKworLSBvdXRwdXQtaGlnaDoKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8bm9uZT4KKwlEZWZpbml0aW9uOiBUaGUgc3BlY2lmaWVkIHBpbnMgYXJlIGNvbmZpZ3VyZWQgaW4gb3V0cHV0IG1vZGUsIGRyaXZlbgorCQkgICAgaGlnaC4KKwkJICAgIE5vdCB2YWxpZCBmb3Igc2RjIHBpbnMuCisKKy0gb3V0cHV0LWxvdzoKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8bm9uZT4KKwlEZWZpbml0aW9uOiBUaGUgc3BlY2lmaWVkIHBpbnMgYXJlIGNvbmZpZ3VyZWQgaW4gb3V0cHV0IG1vZGUsIGRyaXZlbgorCQkgICAgbG93LgorCQkgICAgTm90IHZhbGlkIGZvciBzZGMgcGlucy4KKworLSBkcml2ZS1zdHJlbmd0aDoKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8dTMyPgorCURlZmluaXRpb246IFNlbGVjdHMgdGhlIGRyaXZlIHN0cmVuZ3RoIGZvciB0aGUgc3BlY2lmaWVkIHBpbnMsIGluIG1BLgorCQkgICAgVmFsaWQgdmFsdWVzIGFyZTogMiwgNCwgNiwgOCwgMTAsIDEyLCAxNCBhbmQgMTYKKworRXhhbXBsZToKKworCXRsbW06IHBpbmN0cmxAMTAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicWNvbSxtc204OTE2LXBpbmN0cmwiOworCQlyZWcgPSA8MHgxMDAwMDAwIDB4MzAwMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDIwOCAwPjsKKwkJZ3Bpby1jb250cm9sbGVyOworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisKKwkJdWFydDI6IHVhcnQyLWRlZmF1bHQgeworCQkJbXV4IHsKKwkJCQlwaW5zID0gImdwaW80IiwgImdwaW81IjsKKwkJCQlmdW5jdGlvbiA9ICJibHNwX3VhcnQyIjsKKwkJCX07CisKKwkJCXR4IHsKKwkJCQlwaW5zID0gImdwaW80IjsKKwkJCQlkcml2ZS1zdHJlbmd0aCA9IDw0PjsKKwkJCQliaWFzLWRpc2FibGU7CisJCQl9OworCisJCQlyeCB7CisJCQkJcGlucyA9ICJncGlvNSI7CisJCQkJZHJpdmUtc3RyZW5ndGggPSA8Mj47CisJCQkJYmlhcy1wdWxsLXVwOworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcWNvbSxtc204OTYwLXBpbmN0cmwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcWNvbSxtc204OTYwLXBpbmN0cmwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViOGQ4YWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9xY29tLG1zbTg5NjAtcGluY3RybC50eHQKQEAgLTAsMCArMSwxODEgQEAKK1F1YWxjb21tIE1TTTg5NjAgVExNTSBibG9jaworCitUaGlzIGJpbmRpbmcgZGVzY3JpYmVzIHRoZSBUb3AgTGV2ZWwgTW9kZSBNdWx0aXBsZXhlciBibG9jayBmb3VuZCBpbiB0aGUKK01TTTg5NjAgcGxhdGZvcm0uCisKKy0gY29tcGF0aWJsZToKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8c3RyaW5nPgorCURlZmluaXRpb246IG11c3QgYmUgInFjb20sbXNtODk2MC1waW5jdHJsIgorCistIHJlZzoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IHRoZSBiYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIFRMTU0gcmVnaXN0ZXIgc3BhY2UuCisKKy0gaW50ZXJydXB0czoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IHNob3VsZCBzcGVjaWZ5IHRoZSBUTE1NIHN1bW1hcnkgSVJRLgorCistIGludGVycnVwdC1jb250cm9sbGVyOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxub25lPgorCURlZmluaXRpb246IGlkZW50aWZpZXMgdGhpcyBub2RlIGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyCisKKy0gI2ludGVycnVwdC1jZWxsczoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8dTMyPgorCURlZmluaXRpb246IG11c3QgYmUgMi4gU3BlY2lmeWluZyB0aGUgcGluIG51bWJlciBhbmQgZmxhZ3MsIGFzIGRlZmluZWQKKwkJICAgIGluIDxkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaD4KKworLSBncGlvLWNvbnRyb2xsZXI6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPG5vbmU+CisJRGVmaW5pdGlvbjogaWRlbnRpZmllcyB0aGlzIG5vZGUgYXMgYSBncGlvIGNvbnRyb2xsZXIKKworLSAjZ3Bpby1jZWxsczoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8dTMyPgorCURlZmluaXRpb246IG11c3QgYmUgMi4gU3BlY2lmeWluZyB0aGUgcGluIG51bWJlciBhbmQgZmxhZ3MsIGFzIGRlZmluZWQKKwkJICAgIGluIDxkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaD4KKworUGxlYXNlIHJlZmVyIHRvIC4uL2dwaW8vZ3Bpby50eHQgYW5kIC4uL2ludGVycnVwdC1jb250cm9sbGVyL2ludGVycnVwdHMudHh0IGZvcgorYSBnZW5lcmFsIGRlc2NyaXB0aW9uIG9mIEdQSU8gYW5kIGludGVycnVwdCBiaW5kaW5ncy4KKworUGxlYXNlIHJlZmVyIHRvIHBpbmN0cmwtYmluZGluZ3MudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBkZXRhaWxzIG9mIHRoZQorY29tbW9uIHBpbmN0cmwgYmluZGluZ3MgdXNlZCBieSBjbGllbnQgZGV2aWNlcywgaW5jbHVkaW5nIHRoZSBtZWFuaW5nIG9mIHRoZQorcGhyYXNlICJwaW4gY29uZmlndXJhdGlvbiBub2RlIi4KKworVGhlIHBpbiBjb25maWd1cmF0aW9uIG5vZGVzIGFjdCBhcyBhIGNvbnRhaW5lciBmb3IgYW4gYXJiaXRyYXJ5IG51bWJlciBvZgorc3Vibm9kZXMuIEVhY2ggb2YgdGhlc2Ugc3Vibm9kZXMgcmVwcmVzZW50cyBzb21lIGRlc2lyZWQgY29uZmlndXJhdGlvbiBmb3IgYQorcGluLCBhIGdyb3VwLCBvciBhIGxpc3Qgb2YgcGlucyBvciBncm91cHMuIFRoaXMgY29uZmlndXJhdGlvbiBjYW4gaW5jbHVkZSB0aGUKK211eCBmdW5jdGlvbiB0byBzZWxlY3Qgb24gdGhvc2UgcGluKHMpL2dyb3VwKHMpLCBhbmQgdmFyaW91cyBwaW4gY29uZmlndXJhdGlvbgorcGFyYW1ldGVycywgc3VjaCBhcyBwdWxsLXVwLCBkcml2ZSBzdHJlbmd0aCwgZXRjLgorCisKK1BJTiBDT05GSUdVUkFUSU9OIE5PREVTOgorCitUaGUgbmFtZSBvZiBlYWNoIHN1Ym5vZGUgaXMgbm90IGltcG9ydGFudDsgYWxsIHN1Ym5vZGVzIHNob3VsZCBiZSBlbnVtZXJhdGVkCithbmQgcHJvY2Vzc2VkIHB1cmVseSBiYXNlZCBvbiB0aGVpciBjb250ZW50LgorCitFYWNoIHN1Ym5vZGUgb25seSBhZmZlY3RzIHRob3NlIHBhcmFtZXRlcnMgdGhhdCBhcmUgZXhwbGljaXRseSBsaXN0ZWQuIEluCitvdGhlciB3b3JkcywgYSBzdWJub2RlIHRoYXQgbGlzdHMgYSBtdXggZnVuY3Rpb24gYnV0IG5vIHBpbiBjb25maWd1cmF0aW9uCitwYXJhbWV0ZXJzIGltcGxpZXMgbm8gaW5mb3JtYXRpb24gYWJvdXQgYW55IHBpbiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuCitTaW1pbGFybHksIGEgcGluIHN1Ym5vZGUgdGhhdCBkZXNjcmliZXMgYSBwdWxsdXAgcGFyYW1ldGVyIGltcGxpZXMgbm8KK2luZm9ybWF0aW9uIGFib3V0IGUuZy4gdGhlIG11eCBmdW5jdGlvbi4KKworCitUaGUgZm9sbG93aW5nIGdlbmVyaWMgcHJvcGVydGllcyBhcyBkZWZpbmVkIGluIHBpbmN0cmwtYmluZGluZ3MudHh0IGFyZSB2YWxpZAordG8gc3BlY2lmeSBpbiBhIHBpbiBjb25maWd1cmF0aW9uIHN1Ym5vZGU6CisKKy0gcGluczoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8c3RyaW5nLWFycmF5PgorCURlZmluaXRpb246IExpc3Qgb2YgZ3BpbyBwaW5zIGFmZmVjdGVkIGJ5IHRoZSBwcm9wZXJ0aWVzIHNwZWNpZmllZCBpbgorCQkgICAgdGhpcyBzdWJub2RlLiAgVmFsaWQgcGlucyBhcmU6CisJCSAgICBncGlvMC1ncGlvMTUxLAorCQkgICAgc2RjMV9jbGssCisJCSAgICBzZGMxX2NtZCwKKwkJICAgIHNkYzFfZGF0YQorCQkgICAgc2RjM19jbGssCisJCSAgICBzZGMzX2NtZCwKKwkJICAgIHNkYzNfZGF0YQorCistIGZ1bmN0aW9uOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxzdHJpbmc+CisJRGVmaW5pdGlvbjogU3BlY2lmeSB0aGUgYWx0ZXJuYXRpdmUgZnVuY3Rpb24gdG8gYmUgY29uZmlndXJlZCBmb3IgdGhlCisJCSAgICBzcGVjaWZpZWQgcGlucy4gRnVuY3Rpb25zIGFyZSBvbmx5IHZhbGlkIGZvciBncGlvIHBpbnMuCisJCSAgICBWYWxpZCB2YWx1ZXMgYXJlOgorCQkgICAgYXVkaW9fcGNtLCBidCwgY2FtX21jbGswLCBjYW1fbWNsazEsIGNhbV9tY2xrMiwKKwkJICAgIGNvZGVjX21pY19pMnMsIGNvZGVjX3Nwa3JfaTJzLCBleHRfZ3BzLCBmbSwgZ3BzX2JsYW5raW5nLAorCQkgICAgZ3BzX3Bwc19pbiwgZ3BzX3Bwc19vdXQsIGdwX2Nsa18wYSwgZ3BfY2xrXzBiLCBncF9jbGtfMWEsCisJCSAgICBncF9jbGtfMWIsIGdwX2Nsa18yYSwgZ3BfY2xrXzJiLCBncF9tbiwgZ3BfcGRtXzBhLAorCQkgICAgZ3BfcGRtXzBiLCBncF9wZG1fMWEsIGdwX3BkbV8xYiwgZ3BfcGRtXzJhLCBncF9wZG1fMmIsIGdwaW8sCisJCSAgICBnc2JpMSwgZ3NiaTFfc3BpX2NzMV9uLCBnc2JpMV9zcGlfY3MyYV9uLCBnc2JpMV9zcGlfY3MyYl9uLAorCQkgICAgZ3NiaTFfc3BpX2NzM19uLCBnc2JpMiwgZ3NiaTJfc3BpX2NzMV9uLCBnc2JpMl9zcGlfY3MyX24sCisJCSAgICBnc2JpMl9zcGlfY3MzX24sIGdzYmkzLCBnc2JpNCwgZ3NiaTRfM2RfY2FtX2kyY19sLAorCQkgICAgZ3NiaTRfM2RfY2FtX2kyY19yLCBnc2JpNSwgZ3NiaTVfM2RfY2FtX2kyY19sLAorCQkgICAgZ3NiaTVfM2RfY2FtX2kyY19yLCBnc2JpNiwgZ3NiaTcsIGdzYmk4LCBnc2JpOSwgZ3NiaTEwLAorCQkgICAgZ3NiaTExLCBnc2JpMTFfc3BpX2NzMWFfbiwgZ3NiaTExX3NwaV9jczFiX24sCisJCSAgICBnc2JpMTFfc3BpX2NzMmFfbiwgZ3NiaTExX3NwaV9jczJiX24sIGdzYmkxMV9zcGlfY3MzX24sCisJCSAgICBnc2JpMTIsIGhkbWlfY2VjLCBoZG1pX2RkY19jbG9jaywgaGRtaV9kZGNfZGF0YSwKKwkJICAgIGhkbWlfaG90X3BsdWdfZGV0ZWN0LCBoc2ljLCBtZHBfdnN5bmMsIG1pMnMsIG1pY19pMnMsCisJCSAgICBwbWJfY2xrLCBwbWJfZXh0X2N0cmwsIHBzX2hvbGQsIHJwbV93ZG9nLCBzZGMyLCBzZGM0LCBzZGM1LAorCQkgICAgc2xpbWJ1czEsIHNsaW1idXMyLCBzcGtyX2kycywgc3NiaTEsIHNzYmkyLCBzc2JpX2V4dF9ncHMsCisJCSAgICBzc2JpX3BtaWMyLCBzc2JpX3FwYTEsIHNzYmlfdHMsIHRzaWYxLCB0c2lmMiwgdHNfZW9jLAorCQkgICAgdXNiX2ZzMSwgdXNiX2ZzMV9vZSwgdXNiX2ZzMV9vZV9uLCB1c2JfZnMyLCB1c2JfZnMyX29lLAorCQkgICAgdXNiX2ZzMl9vZV9uLCB2ZmVfY2FtaWZfdGltZXIxX2EsIHZmZV9jYW1pZl90aW1lcjFfYiwKKwkJICAgIHZmZV9jYW1pZl90aW1lcjIsIHZmZV9jYW1pZl90aW1lcjNfYSwgdmZlX2NhbWlmX3RpbWVyM19iLAorCQkgICAgdmZlX2NhbWlmX3RpbWVyNF9hLCB2ZmVfY2FtaWZfdGltZXI0X2IsIHZmZV9jYW1pZl90aW1lcjRfYywKKwkJICAgIHZmZV9jYW1pZl90aW1lcjVfYSwgdmZlX2NhbWlmX3RpbWVyNV9iLCB2ZmVfY2FtaWZfdGltZXI2X2EsCisJCSAgICB2ZmVfY2FtaWZfdGltZXI2X2IsIHZmZV9jYW1pZl90aW1lcjZfYywgdmZlX2NhbWlmX3RpbWVyN19hLAorCQkgICAgdmZlX2NhbWlmX3RpbWVyN19iLCB2ZmVfY2FtaWZfdGltZXI3X2MsIHdsYW4KKworLSBiaWFzLWRpc2FibGU6CisJVXNhZ2U6IG9wdGlvbmFsCisJVmFsdWUgdHlwZTogPG5vbmU+CisJRGVmaW5pdGlvbjogVGhlIHNwZWNpZmllZCBwaW5zIHNob3VsZCBiZSBjb25maWd1ZWQgYXMgbm8gcHVsbC4KKworLSBiaWFzLXB1bGwtZG93bjoKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8bm9uZT4KKwlEZWZpbml0aW9uOiBUaGUgc3BlY2lmaWVkIHBpbnMgc2hvdWxkIGJlIGNvbmZpZ3VlZCBhcyBwdWxsIGRvd24uCisKKy0gYmlhcy1wdWxsLXVwOgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IDxub25lPgorCURlZmluaXRpb246IFRoZSBzcGVjaWZpZWQgcGlucyBzaG91bGQgYmUgY29uZmlndWVkIGFzIHB1bGwgdXAuCisKKy0gb3V0cHV0LWhpZ2g6CisJVXNhZ2U6IG9wdGlvbmFsCisJVmFsdWUgdHlwZTogPG5vbmU+CisJRGVmaW5pdGlvbjogVGhlIHNwZWNpZmllZCBwaW5zIGFyZSBjb25maWd1cmVkIGluIG91dHB1dCBtb2RlLCBkcml2ZW4KKwkJICAgIGhpZ2guCisJCSAgICBOb3QgdmFsaWQgZm9yIHNkYyBwaW5zLgorCistIG91dHB1dC1sb3c6CisJVXNhZ2U6IG9wdGlvbmFsCisJVmFsdWUgdHlwZTogPG5vbmU+CisJRGVmaW5pdGlvbjogVGhlIHNwZWNpZmllZCBwaW5zIGFyZSBjb25maWd1cmVkIGluIG91dHB1dCBtb2RlLCBkcml2ZW4KKwkJICAgIGxvdy4KKwkJICAgIE5vdCB2YWxpZCBmb3Igc2RjIHBpbnMuCisKKy0gZHJpdmUtc3RyZW5ndGg6CisJVXNhZ2U6IG9wdGlvbmFsCisJVmFsdWUgdHlwZTogPHUzMj4KKwlEZWZpbml0aW9uOiBTZWxlY3RzIHRoZSBkcml2ZSBzdHJlbmd0aCBmb3IgdGhlIHNwZWNpZmllZCBwaW5zLCBpbiBtQS4KKwkJICAgIFZhbGlkIHZhbHVlcyBhcmU6IDIsIDQsIDYsIDgsIDEwLCAxMiwgMTQgYW5kIDE2CisKK0V4YW1wbGU6CisKKwltc21ncGlvOiBwaW5jdHJsQDgwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicWNvbSxtc204OTYwLXBpbmN0cmwiOworCQlyZWcgPSA8MHg4MDAwMDAgMHg0MDAwPjsKKworCQlncGlvLWNvbnRyb2xsZXI7CisJCSNncGlvLWNlbGxzID0gPDI+OworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKwkJaW50ZXJydXB0cyA9IDwwIDE2IDB4ND47CisKKwkJZ3NiaThfdWFydDogZ3NiaTgtdWFydCB7CisJCQltdXggeworCQkJCXBpbnMgPSAiZ3BpbzM0IiwgImdwaW8zNSI7CisJCQkJZnVuY3Rpb24gPSAiZ3NiaTgiOworCQkJfTsKKworCQkJdHggeworCQkJCXBpbnMgPSAiZ3BpbzM0IjsKKwkJCQlkcml2ZS1zdHJlbmd0aCA9IDw0PjsKKwkJCQliaWFzLWRpc2FibGU7CisJCQl9OworCisJCQlyeCB7CisJCQkJcGlucyA9ICJncGlvMzUiOworCQkJCWRyaXZlLXN0cmVuZ3RoID0gPDI+OworCQkJCWJpYXMtcHVsbC11cDsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3Fjb20sbXNtODk3NC1waW5jdHJsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3Fjb20sbXNtODk3NC1waW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGQ2YTlkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcWNvbSxtc204OTc0LXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsMTEyIEBACitRdWFsY29tbSBNU004OTc0IFRMTU0gYmxvY2sKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInFjb20sbXNtODk3NC1waW5jdHJsIgorLSByZWc6IFNob3VsZCBiZSB0aGUgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIFRMTU0gYmxvY2suCistIGludGVycnVwdHM6IFNob3VsZCBiZSB0aGUgcGFyZW50IElSUSBvZiB0aGUgVExNTSBibG9jay4KKy0gaW50ZXJydXB0LWNvbnRyb2xsZXI6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhbiBpbnRlcnJ1cHQgY29udHJvbGxlci4KKy0gI2ludGVycnVwdC1jZWxsczogU2hvdWxkIGJlIHR3by4KKy0gZ3Bpby1jb250cm9sbGVyOiBNYXJrcyB0aGUgZGV2aWNlIG5vZGUgYXMgYSBHUElPIGNvbnRyb2xsZXIuCistICNncGlvLWNlbGxzIDogU2hvdWxkIGJlIHR3by4KKyAgICAgICAgICAgICAgICBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgZ3BpbyBwaW4gbnVtYmVyIGFuZCB0aGUKKyAgICAgICAgICAgICAgICBzZWNvbmQgY2VsbCBpcyB1c2VkIGZvciBvcHRpb25hbCBwYXJhbWV0ZXJzLgorCitQbGVhc2UgcmVmZXIgdG8gLi4vZ3Bpby9ncGlvLnR4dCBhbmQgLi4vaW50ZXJydXB0LWNvbnRyb2xsZXIvaW50ZXJydXB0cy50eHQgZm9yCithIGdlbmVyYWwgZGVzY3JpcHRpb24gb2YgR1BJTyBhbmQgaW50ZXJydXB0IGJpbmRpbmdzLgorCitQbGVhc2UgcmVmZXIgdG8gcGluY3RybC1iaW5kaW5ncy50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGRldGFpbHMgb2YgdGhlCitjb21tb24gcGluY3RybCBiaW5kaW5ncyB1c2VkIGJ5IGNsaWVudCBkZXZpY2VzLCBpbmNsdWRpbmcgdGhlIG1lYW5pbmcgb2YgdGhlCitwaHJhc2UgInBpbiBjb25maWd1cmF0aW9uIG5vZGUiLgorCitRdWFsY29tbSdzIHBpbiBjb25maWd1cmF0aW9uIG5vZGVzIGFjdCBhcyBhIGNvbnRhaW5lciBmb3IgYW4gYXJiaXRyYXJ5IG51bWJlciBvZgorc3Vibm9kZXMuIEVhY2ggb2YgdGhlc2Ugc3Vibm9kZXMgcmVwcmVzZW50cyBzb21lIGRlc2lyZWQgY29uZmlndXJhdGlvbiBmb3IgYQorcGluLCBhIGdyb3VwLCBvciBhIGxpc3Qgb2YgcGlucyBvciBncm91cHMuIFRoaXMgY29uZmlndXJhdGlvbiBjYW4gaW5jbHVkZSB0aGUKK211eCBmdW5jdGlvbiB0byBzZWxlY3Qgb24gdGhvc2UgcGluKHMpL2dyb3VwKHMpLCBhbmQgdmFyaW91cyBwaW4gY29uZmlndXJhdGlvbgorcGFyYW1ldGVycywgc3VjaCBhcyBwdWxsLXVwLCBkcml2ZSBzdHJlbmd0aCwgZXRjLgorCitUaGUgbmFtZSBvZiBlYWNoIHN1Ym5vZGUgaXMgbm90IGltcG9ydGFudDsgYWxsIHN1Ym5vZGVzIHNob3VsZCBiZSBlbnVtZXJhdGVkCithbmQgcHJvY2Vzc2VkIHB1cmVseSBiYXNlZCBvbiB0aGVpciBjb250ZW50LgorCitFYWNoIHN1Ym5vZGUgb25seSBhZmZlY3RzIHRob3NlIHBhcmFtZXRlcnMgdGhhdCBhcmUgZXhwbGljaXRseSBsaXN0ZWQuIEluCitvdGhlciB3b3JkcywgYSBzdWJub2RlIHRoYXQgbGlzdHMgYSBtdXggZnVuY3Rpb24gYnV0IG5vIHBpbiBjb25maWd1cmF0aW9uCitwYXJhbWV0ZXJzIGltcGxpZXMgbm8gaW5mb3JtYXRpb24gYWJvdXQgYW55IHBpbiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuCitTaW1pbGFybHksIGEgcGluIHN1Ym5vZGUgdGhhdCBkZXNjcmliZXMgYSBwdWxsdXAgcGFyYW1ldGVyIGltcGxpZXMgbm8KK2luZm9ybWF0aW9uIGFib3V0IGUuZy4gdGhlIG11eCBmdW5jdGlvbi4KKworCitUaGUgZm9sbG93aW5nIGdlbmVyaWMgcHJvcGVydGllcyBhcyBkZWZpbmVkIGluIHBpbmN0cmwtYmluZGluZ3MudHh0IGFyZSB2YWxpZAordG8gc3BlY2lmeSBpbiBhIHBpbiBjb25maWd1cmF0aW9uIHN1Ym5vZGU6CisgcGlucywgZnVuY3Rpb24sIGJpYXMtZGlzYWJsZSwgYmlhcy1wdWxsLWRvd24sIGJpYXMtcHVsbCx1cCwgZHJpdmUtc3RyZW5ndGguCisKK05vbi1lbXB0eSBzdWJub2RlcyBtdXN0IHNwZWNpZnkgdGhlICdwaW5zJyBwcm9wZXJ0eS4KK05vdGUgdGhhdCBub3QgYWxsIHByb3BlcnRpZXMgYXJlIHZhbGlkIGZvciBhbGwgcGlucy4KKworCitWYWxpZCB2YWx1ZXMgZm9yIHBpbnMgYXJlOgorICBncGlvMC1ncGlvMTQ1CisgICAgU3VwcG9ydHMgbXV4LCBiaWFzIGFuZCBkcml2ZS1zdHJlbmd0aAorCisgIHNkYzFfY2xrLCBzZGMxX2NtZCwgc2RjMV9kYXRhLCBzZGMyX2Nsaywgc2RjMl9jbWQsIHNkYzJfZGF0YQorICAgIFN1cHBvcnRzIGJpYXMgYW5kIGRyaXZlLXN0cmVuZ3RoCisKK1ZhbGlkIHZhbHVlcyBmb3IgZnVuY3Rpb24gYXJlOgorICBjY2lfaTJjMCwgY2NpX2kyYzEsIHVpbTEsIHVpbTIsIHVpbV9iYXR0X2FsYXJtLAorICBibHNwX3VpbTEsIGJsc3BfdWFydDEsIGJsc3BfaTJjMSwgYmxzcF9zcGkxLAorICBibHNwX3VpbTIsIGJsc3BfdWFydDIsIGJsc3BfaTJjMiwgYmxzcF9zcGkyLAorICBibHNwX3VpbTMsIGJsc3BfdWFydDMsIGJsc3BfaTJjMywgYmxzcF9zcGkzLAorICBibHNwX3VpbTQsIGJsc3BfdWFydDQsIGJsc3BfaTJjNCwgYmxzcF9zcGk0LAorICBibHNwX3VpbTUsIGJsc3BfdWFydDUsIGJsc3BfaTJjNSwgYmxzcF9zcGk1LAorICBibHNwX3VpbTYsIGJsc3BfdWFydDYsIGJsc3BfaTJjNiwgYmxzcF9zcGk2LAorICBibHNwX3VpbTcsIGJsc3BfdWFydDcsIGJsc3BfaTJjNywgYmxzcF9zcGk3LAorICBibHNwX3VpbTgsIGJsc3BfdWFydDgsIGJsc3BfaTJjOCwgYmxzcF9zcGk4LAorICBibHNwX3VpbTksIGJsc3BfdWFydDksIGJsc3BfaTJjOSwgYmxzcF9zcGk5LAorICBibHNwX3VpbTEwLCBibHNwX3VhcnQxMCwgYmxzcF9pMmMxMCwgYmxzcF9zcGkxMCwKKyAgYmxzcF91aW0xMSwgYmxzcF91YXJ0MTEsIGJsc3BfaTJjMTEsIGJsc3Bfc3BpMTEsCisgIGJsc3BfdWltMTIsIGJsc3BfdWFydDEyLCBibHNwX2kyYzEyLCBibHNwX3NwaTEyLAorICBibHNwX3NwaTFfY3MxLCBibHNwX3NwaTJfY3MyLCBibHNwX3NwaV9jczMsIGJsc3Bfc3BpMl9jczEsIGJsc3Bfc3BpMl9jczIKKyAgYmxzcF9zcGkyX2NzMywgYmxzcF9zcGkxMF9jczEsIGJsc3Bfc3BpMTBfY3MyLCBibHNwX3NwaTEwX2NzMywKKyAgc2RjMywgc2RjNCwgZ2NjX2dwX2NsazEsIGdjY19ncF9jbGsyLCBnY2NfZ3BfY2xrMywgY2NpX3RpbWVyMCwgY2NpX3RpbWVyMSwKKyAgY2NpX3RpbWVyMiwgY2NpX3RpbWVyMywgY2NpX2FzeW5jX2luMCwgY2NpX2FzeW5jX2luMSwgY2NpX2FzeW5jX2luMiwKKyAgY2FtX21ja2wwLCBjYW1fbWNsazEsIGNhbV9tY2xrMiwgY2FtX21jbGszLCBtZHBfdnN5bmMsIGhkbWlfY2VjLCBoZG1pX2RkYywKKyAgaGRtaV9ocGQsIGVkcF9ocGQsIGdwX3BkbTAsIGdwX3BkbTEsIGdwX3BkbTIsIGdwX3BkbTMsIGdwMF9jbGssIGdwMV9jbGssCisgIGdwX21uLCB0c2lmMSwgdHNpZjIsIGhzaWMsIGdyZmMsIGF1ZGlvX3JlZl9jbGssIHF1YV9taTJzLCBwcmlfbWkycywgc3Brcl9taTJzLAorICB0ZXJfbWkycywgc2VjX21pMnMsIGJ0LCBmbSwgd2xhbiwgc2xpbWJ1cywgZ3BpbworCisgIChOb3RlIHRoYXQgdGhpcyBpcyBub3QgeWV0IHRoZSBjb21wbGV0ZSBsaXN0IG9mIGZ1bmN0aW9ucykKKworCisKK0V4YW1wbGU6CisKKwltc21ncGlvOiBwaW5jdHJsQGZkNTEwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJxY29tLG1zbTg5NzQtcGluY3RybCI7CisJCXJlZyA9IDwweGZkNTEwMDAwIDB4NDAwMD47CisKKwkJZ3Bpby1jb250cm9sbGVyOworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJCWludGVycnVwdHMgPSA8MCAyMDggMD47CisKKwkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwkJcGluY3RybC0wID0gPCZ1YXJ0Ml9kZWZhdWx0PjsKKworCQl1YXJ0Ml9kZWZhdWx0OiB1YXJ0Ml9kZWZhdWx0IHsKKwkJCW11eCB7CisJCQkJcGlucyA9ICJncGlvNCIsICJncGlvNSI7CisJCQkJZnVuY3Rpb24gPSAiYmxzcF91YXJ0MiI7CisJCQl9OworCisJCQl0eCB7CisJCQkJcGlucyA9ICJncGlvNCI7CisJCQkJZHJpdmUtc3RyZW5ndGggPSA8ND47CisJCQkJYmlhcy1kaXNhYmxlOworCQkJfTsKKworCQkJcnggeworCQkJCXBpbnMgPSAiZ3BpbzUiOworCQkJCWRyaXZlLXN0cmVuZ3RoID0gPDI+OworCQkJCWJpYXMtcHVsbC11cDsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3Fjb20scG1pYy1ncGlvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3Fjb20scG1pYy1ncGlvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWU2M2MwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcWNvbSxwbWljLWdwaW8udHh0CkBAIC0wLDAgKzEsMjE3IEBACitRdWFsY29tbSBQTUlDIEdQSU8gYmxvY2sKKworVGhpcyBiaW5kaW5nIGRlc2NyaWJlcyB0aGUgR1BJTyBibG9jayhzKSBmb3VuZCBpbiB0aGUgOHh4eCBzZXJpZXMgb2YKK1BNSUMncyBmcm9tIFF1YWxjb21tLgorCistIGNvbXBhdGlibGU6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHN0cmluZz4KKwlEZWZpbml0aW9uOiBtdXN0IGJlIG9uZSBvZjoKKwkJICAgICJxY29tLHBtODAxOC1ncGlvIgorCQkgICAgInFjb20scG04MDM4LWdwaW8iCisJCSAgICAicWNvbSxwbTgwNTgtZ3BpbyIKKwkJICAgICJxY29tLHBtODkxNi1ncGlvIgorCQkgICAgInFjb20scG04OTE3LWdwaW8iCisJCSAgICAicWNvbSxwbTg5MjEtZ3BpbyIKKwkJICAgICJxY29tLHBtODk0MS1ncGlvIgorCQkgICAgInFjb20scG1hODA4NC1ncGlvIgorCistIHJlZzoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IFJlZ2lzdGVyIGJhc2Ugb2YgdGhlIEdQSU8gYmxvY2sgYW5kIGxlbmd0aC4KKworLSBpbnRlcnJ1cHRzOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisJRGVmaW5pdGlvbjogTXVzdCBjb250YWluIGFuIGFycmF5IG9mIGVuY29kZWQgaW50ZXJydXB0IHNwZWNpZmllcnMgZm9yCisJCSAgICBlYWNoIGF2YWlsYWJsZSBHUElPCisKKy0gZ3Bpby1jb250cm9sbGVyOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxub25lPgorCURlZmluaXRpb246IE1hcmsgdGhlIGRldmljZSBub2RlIGFzIGEgR1BJTyBjb250cm9sbGVyCisKKy0gI2dwaW8tY2VsbHM6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHUzMj4KKwlEZWZpbml0aW9uOiBNdXN0IGJlIDI7CisJCSAgICB0aGUgZmlyc3QgY2VsbCB3aWxsIGJlIHVzZWQgdG8gZGVmaW5lIGdwaW8gbnVtYmVyIGFuZCB0aGUKKwkJICAgIHNlY29uZCBkZW5vdGVzIHRoZSBmbGFncyBmb3IgdGhpcyBncGlvCisKK1BsZWFzZSByZWZlciB0byAuLi9ncGlvL2dwaW8udHh0IGFuZCAuLi9pbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlcnJ1cHRzLnR4dCBmb3IKK2EgZ2VuZXJhbCBkZXNjcmlwdGlvbiBvZiBHUElPIGFuZCBpbnRlcnJ1cHQgYmluZGluZ3MuCisKK1BsZWFzZSByZWZlciB0byBwaW5jdHJsLWJpbmRpbmdzLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgZGV0YWlscyBvZiB0aGUKK2NvbW1vbiBwaW5jdHJsIGJpbmRpbmdzIHVzZWQgYnkgY2xpZW50IGRldmljZXMsIGluY2x1ZGluZyB0aGUgbWVhbmluZyBvZiB0aGUKK3BocmFzZSAicGluIGNvbmZpZ3VyYXRpb24gbm9kZSIuCisKK1RoZSBwaW4gY29uZmlndXJhdGlvbiBub2RlcyBhY3QgYXMgYSBjb250YWluZXIgZm9yIGFuIGFyYml0cmFyeSBudW1iZXIgb2YKK3N1Ym5vZGVzLiBFYWNoIG9mIHRoZXNlIHN1Ym5vZGVzIHJlcHJlc2VudHMgc29tZSBkZXNpcmVkIGNvbmZpZ3VyYXRpb24gZm9yIGEKK3BpbiBvciBhIGxpc3Qgb2YgcGlucy4gVGhpcyBjb25maWd1cmF0aW9uIGNhbiBpbmNsdWRlIHRoZQorbXV4IGZ1bmN0aW9uIHRvIHNlbGVjdCBvbiB0aG9zZSBwaW4ocyksIGFuZCB2YXJpb3VzIHBpbiBjb25maWd1cmF0aW9uCitwYXJhbWV0ZXJzLCBhcyBsaXN0ZWQgYmVsb3cuCisKKworU1VCTk9ERVM6CisKK1RoZSBuYW1lIG9mIGVhY2ggc3Vibm9kZSBpcyBub3QgaW1wb3J0YW50OyBhbGwgc3Vibm9kZXMgc2hvdWxkIGJlIGVudW1lcmF0ZWQKK2FuZCBwcm9jZXNzZWQgcHVyZWx5IGJhc2VkIG9uIHRoZWlyIGNvbnRlbnQuCisKK0VhY2ggc3Vibm9kZSBvbmx5IGFmZmVjdHMgdGhvc2UgcGFyYW1ldGVycyB0aGF0IGFyZSBleHBsaWNpdGx5IGxpc3RlZC4gSW4KK290aGVyIHdvcmRzLCBhIHN1Ym5vZGUgdGhhdCBsaXN0cyBhIG11eCBmdW5jdGlvbiBidXQgbm8gcGluIGNvbmZpZ3VyYXRpb24KK3BhcmFtZXRlcnMgaW1wbGllcyBubyBpbmZvcm1hdGlvbiBhYm91dCBhbnkgcGluIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4KK1NpbWlsYXJseSwgYSBwaW4gc3Vibm9kZSB0aGF0IGRlc2NyaWJlcyBhIHB1bGx1cCBwYXJhbWV0ZXIgaW1wbGllcyBubworaW5mb3JtYXRpb24gYWJvdXQgZS5nLiB0aGUgbXV4IGZ1bmN0aW9uLgorCitUaGUgZm9sbG93aW5nIGdlbmVyaWMgcHJvcGVydGllcyBhcyBkZWZpbmVkIGluIHBpbmN0cmwtYmluZGluZ3MudHh0IGFyZSB2YWxpZAordG8gc3BlY2lmeSBpbiBhIHBpbiBjb25maWd1cmF0aW9uIHN1Ym5vZGU6CisKKy0gcGluczoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8c3RyaW5nLWFycmF5PgorCURlZmluaXRpb246IExpc3Qgb2YgZ3BpbyBwaW5zIGFmZmVjdGVkIGJ5IHRoZSBwcm9wZXJ0aWVzIHNwZWNpZmllZCBpbgorCQkgICAgdGhpcyBzdWJub2RlLiAgVmFsaWQgcGlucyBhcmU6CisJCSAgICBncGlvMS1ncGlvNiBmb3IgcG04MDE4CisJCSAgICBncGlvMS1ncGlvMTIgZm9yIHBtODAzOAorCQkgICAgZ3BpbzEtZ3BpbzQwIGZvciBwbTgwNTgKKwkJICAgIGdwaW8xLWdwaW80IGZvciBwbTg5MTYKKwkJICAgIGdwaW8xLWdwaW8zOCBmb3IgcG04OTE3CisJCSAgICBncGlvMS1ncGlvNDQgZm9yIHBtODkyMQorCQkgICAgZ3BpbzEtZ3BpbzM2IGZvciBwbTg5NDEKKwkJICAgIGdwaW8xLWdwaW8yMiBmb3IgcG1hODA4NAorCistIGZ1bmN0aW9uOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxzdHJpbmc+CisJRGVmaW5pdGlvbjogU3BlY2lmeSB0aGUgYWx0ZXJuYXRpdmUgZnVuY3Rpb24gdG8gYmUgY29uZmlndXJlZCBmb3IgdGhlCisJCSAgICBzcGVjaWZpZWQgcGlucy4gIFZhbGlkIHZhbHVlcyBhcmU6CisJCSAgICAibm9ybWFsIiwKKwkJICAgICJwYWlyZWQiLAorCQkgICAgImZ1bmMxIiwKKwkJICAgICJmdW5jMiIsCisJCSAgICAiZHRlc3QxIiwKKwkJICAgICJkdGVzdDIiLAorCQkgICAgImR0ZXN0MyIsCisJCSAgICAiZHRlc3Q0IgorCistIGJpYXMtZGlzYWJsZToKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8bm9uZT4KKwlEZWZpbml0aW9uOiBUaGUgc3BlY2lmaWVkIHBpbnMgc2hvdWxkIGJlIGNvbmZpZ3VyZWQgYXMgbm8gcHVsbC4KKworLSBiaWFzLXB1bGwtZG93bjoKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8bm9uZT4KKwlEZWZpbml0aW9uOiBUaGUgc3BlY2lmaWVkIHBpbnMgc2hvdWxkIGJlIGNvbmZpZ3VyZWQgYXMgcHVsbCBkb3duLgorCistIGJpYXMtcHVsbC11cDoKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8ZW1wdHk+CisJRGVmaW5pdGlvbjogVGhlIHNwZWNpZmllZCBwaW5zIHNob3VsZCBiZSBjb25maWd1cmVkIGFzIHB1bGwgdXAuCisKKy0gcWNvbSxwdWxsLXVwLXN0cmVuZ3RoOgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IDx1MzI+CisJRGVmaW5pdGlvbjogU3BlY2lmaWVzIHRoZSBzdHJlbmd0aCB0byB1c2UgZm9yIHB1bGwgdXAsIGlmIHNlbGVjdGVkLgorCQkgICAgVmFsaWQgdmFsdWVzIGFyZTsgYXMgZGVmaW5lZCBpbgorCQkgICAgPGR0LWJpbmRpbmdzL3BpbmN0cmwvcWNvbSxwbWljLWdwaW8uaD46CisJCSAgICAxOiAzMHVBICAgICAgICAgICAgICAgICAgICAgKFBNSUNfR1BJT19QVUxMX1VQXzMwKQorCQkgICAgMjogMS41dUEgICAgICAgICAgICAgICAgICAgIChQTUlDX0dQSU9fUFVMTF9VUF8xUDUpCisJCSAgICAzOiAzMS41dUEgICAgICAgICAgICAgICAgICAgKFBNSUNfR1BJT19QVUxMX1VQXzMxUDUpCisJCSAgICA0OiAxLjV1QSArIDMwdUEgYm9vc3QgICAgICAgKFBNSUNfR1BJT19QVUxMX1VQXzFQNV8zMCkKKwkJICAgIElmIHRoaXMgcHJvcGVydHkgaXMgb21taXRlZCAzMHVBIHN0cmVuZ3RoIHdpbGwgYmUgdXNlZCBpZgorCQkgICAgcHVsbCB1cCBpcyBzZWxlY3RlZAorCistIGJpYXMtaGlnaC1pbXBlZGFuY2U6CisJVXNhZ2U6IG9wdGlvbmFsCisJVmFsdWUgdHlwZTogPG5vbmU+CisJRGVmaW5pdGlvbjogVGhlIHNwZWNpZmllZCBwaW5zIHdpbGwgcHV0IGluIGhpZ2gtWiBtb2RlIGFuZCBkaXNhYmxlZC4KKworLSBpbnB1dC1lbmFibGU6CisJVXNhZ2U6IG9wdGlvbmFsCisJVmFsdWUgdHlwZTogPG5vbmU+CisJRGVmaW5pdGlvbjogVGhlIHNwZWNpZmllZCBwaW5zIGFyZSBwdXQgaW4gaW5wdXQgbW9kZS4KKworLSBvdXRwdXQtaGlnaDoKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8bm9uZT4KKwlEZWZpbml0aW9uOiBUaGUgc3BlY2lmaWVkIHBpbnMgYXJlIGNvbmZpZ3VyZWQgaW4gb3V0cHV0IG1vZGUsIGRyaXZlbgorCQkgICAgaGlnaC4KKworLSBvdXRwdXQtbG93OgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IDxub25lPgorCURlZmluaXRpb246IFRoZSBzcGVjaWZpZWQgcGlucyBhcmUgY29uZmlndXJlZCBpbiBvdXRwdXQgbW9kZSwgZHJpdmVuCisJCSAgICBsb3cuCisKKy0gcG93ZXItc291cmNlOgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IDx1MzI+CisJRGVmaW5pdGlvbjogU2VsZWN0cyB0aGUgcG93ZXIgc291cmNlIGZvciB0aGUgc3BlY2lmaWVkIHBpbnMuIFZhbGlkCisJCSAgICBwb3dlciBzb3VyY2VzIGFyZSBkZWZpbmVkIHBlciBjaGlwIGluCisJCSAgICA8ZHQtYmluZGluZ3MvcGluY3RybC9xY29tLHBtaWMtZ3Bpby5oPgorCistIHFjb20sZHJpdmUtc3RyZW5ndGg6CisJVXNhZ2U6IG9wdGlvbmFsCisJVmFsdWUgdHlwZTogPHUzMj4KKwlEZWZpbml0aW9uOiBTZWxlY3RzIHRoZSBkcml2ZSBzdHJlbmd0aCBmb3IgdGhlIHNwZWNpZmllZCBwaW5zLiBWYWx1ZQorCQkgICAgZHJpdmUgc3RyZW5ndGhzIGFyZToKKwkJICAgIDA6IG5vIChQTUlDX0dQSU9fU1RSRU5HVEhfTk8pCisJCSAgICAxOiBoaWdoIChQTUlDX0dQSU9fU1RSRU5HVEhfSElHSCkgMC45bUEgQCAxLjhWIC0gMS45bUEgQCAyLjZWCisJCSAgICAyOiBtZWRpdW0gKFBNSUNfR1BJT19TVFJFTkdUSF9NRUQpIDAuNm1BIEAgMS44ViAtIDEuMjVtQSBAIDIuNlYKKwkJICAgIDM6IGxvdyAoUE1JQ19HUElPX1NUUkVOR1RIX0xPVykgMC4xNW1BIEAgMS44ViAtIDAuM21BIEAgMi42VgorCQkgICAgYXMgZGVmaW5lZCBpbiA8ZHQtYmluZGluZ3MvcGluY3RybC9xY29tLHBtaWMtZ3Bpby5oPgorCistIGRyaXZlLXB1c2gtcHVsbDoKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8bm9uZT4KKwlEZWZpbml0aW9uOiBUaGUgc3BlY2lmaWVkIHBpbnMgYXJlIGNvbmZpZ3VyZWQgaW4gcHVzaC1wdWxsIG1vZGUuCisKKy0gZHJpdmUtb3Blbi1kcmFpbjoKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8bm9uZT4KKwlEZWZpbml0aW9uOiBUaGUgc3BlY2lmaWVkIHBpbnMgYXJlIGNvbmZpZ3VyZWQgaW4gb3Blbi1kcmFpbiBtb2RlLgorCistIGRyaXZlLW9wZW4tc291cmNlOgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IDxub25lPgorCURlZmluaXRpb246IFRoZSBzcGVjaWZpZWQgcGlucyBhcmUgY29uZmlndXJlZCBpbiBvcGVuLXNvdXJjZSBtb2RlLgorCitFeGFtcGxlOgorCisJcG04OTIxX2dwaW86IGdwaW9AMTUwIHsKKwkJY29tcGF0aWJsZSA9ICJxY29tLHBtODkyMS1ncGlvIjsKKwkJcmVnID0gPDB4MTUwIDB4MTYwPjsKKwkJaW50ZXJydXB0cyA9IDwxOTIgMT4sIDwxOTMgMT4sIDwxOTQgMT4sCisJCQkgICAgIDwxOTUgMT4sIDwxOTYgMT4sIDwxOTcgMT4sCisJCQkgICAgIDwxOTggMT4sIDwxOTkgMT4sIDwyMDAgMT4sCisJCQkgICAgIDwyMDEgMT4sIDwyMDIgMT4sIDwyMDMgMT4sCisJCQkgICAgIDwyMDQgMT4sIDwyMDUgMT4sIDwyMDYgMT4sCisJCQkgICAgIDwyMDcgMT4sIDwyMDggMT4sIDwyMDkgMT4sCisJCQkgICAgIDwyMTAgMT4sIDwyMTEgMT4sIDwyMTIgMT4sCisJCQkgICAgIDwyMTMgMT4sIDwyMTQgMT4sIDwyMTUgMT4sCisJCQkgICAgIDwyMTYgMT4sIDwyMTcgMT4sIDwyMTggMT4sCisJCQkgICAgIDwyMTkgMT4sIDwyMjAgMT4sIDwyMjEgMT4sCisJCQkgICAgIDwyMjIgMT4sIDwyMjMgMT4sIDwyMjQgMT4sCisJCQkgICAgIDwyMjUgMT4sIDwyMjYgMT4sIDwyMjcgMT4sCisJCQkgICAgIDwyMjggMT4sIDwyMjkgMT4sIDwyMzAgMT4sCisJCQkgICAgIDwyMzEgMT4sIDwyMzIgMT4sIDwyMzMgMT4sCisJCQkgICAgIDwyMzQgMT4sIDwyMzUgMT47CisKKwkJZ3Bpby1jb250cm9sbGVyOworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKworCQlwbTg5MjFfZ3Bpb19rZXlzOiBncGlvLWtleXMgeworCQkJdm9sdW1lLWtleXMgeworCQkJCXBpbnMgPSAiZ3BpbzIwIiwgImdwaW8yMSI7CisJCQkJZnVuY3Rpb24gPSAibm9ybWFsIjsKKworCQkJCWlucHV0LWVuYWJsZTsKKwkJCQliaWFzLXB1bGwtdXA7CisJCQkJZHJpdmUtcHVzaC1wdWxsOworCQkJCXFjb20sZHJpdmUtc3RyZW5ndGggPSA8UE1JQ19HUElPX1NUUkVOR1RIX05PPjsKKwkJCQlwb3dlci1zb3VyY2UgPSA8UE04OTIxX0dQSU9fUzQ+OworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcWNvbSxwbWljLW1wcC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9xY29tLHBtaWMtbXBwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzgwM2EyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcWNvbSxwbWljLW1wcC50eHQKQEAgLTAsMCArMSwxNzYgQEAKK1F1YWxjb21tIFBNSUMgTXVsdGktUHVycG9zZSBQaW4gKE1QUCkgYmxvY2sKKworVGhpcyBiaW5kaW5nIGRlc2NyaWJlcyB0aGUgTVBQIGJsb2NrKHMpIGZvdW5kIGluIHRoZSA4eHh4IHNlcmllcworb2YgUE1JQydzIGZyb20gUXVhbGNvbW0uCisKKy0gY29tcGF0aWJsZToKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8c3RyaW5nPgorCURlZmluaXRpb246IFNob3VsZCBjb250YWluIG9uZSBvZjoKKwkJICAgICJxY29tLHBtODAxOC1tcHAiLAorCQkgICAgInFjb20scG04MDM4LW1wcCIsCisJCSAgICAicWNvbSxwbTg4MjEtbXBwIiwKKwkJICAgICJxY29tLHBtODg0MS1tcHAiLAorCQkgICAgInFjb20scG04OTE2LW1wcCIsCisJCSAgICAicWNvbSxwbTg5MTctbXBwIiwKKwkJICAgICJxY29tLHBtODkyMS1tcHAiLAorCQkgICAgInFjb20scG04OTQxLW1wcCIsCisJCSAgICAicWNvbSxwbWE4MDg0LW1wcCIsCisKKy0gcmVnOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisJRGVmaW5pdGlvbjogUmVnaXN0ZXIgYmFzZSBvZiB0aGUgTVBQIGJsb2NrIGFuZCBsZW5ndGguCisKKy0gaW50ZXJydXB0czoKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IE11c3QgY29udGFpbiBhbiBhcnJheSBvZiBlbmNvZGVkIGludGVycnVwdCBzcGVjaWZpZXJzIGZvcgorCQkgICAgZWFjaCBhdmFpbGFibGUgTVBQCisKKy0gZ3Bpby1jb250cm9sbGVyOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxub25lPgorCURlZmluaXRpb246IE1hcmsgdGhlIGRldmljZSBub2RlIGFzIGEgR1BJTyBjb250cm9sbGVyCisKKy0gI2dwaW8tY2VsbHM6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHUzMj4KKwlEZWZpbml0aW9uOiBNdXN0IGJlIDI7CisJCSAgICB0aGUgZmlyc3QgY2VsbCB3aWxsIGJlIHVzZWQgdG8gZGVmaW5lIE1QUCBudW1iZXIgYW5kIHRoZQorCQkgICAgc2Vjb25kIGRlbm90ZXMgdGhlIGZsYWdzIGZvciB0aGlzIE1QUAorCitQbGVhc2UgcmVmZXIgdG8gLi4vZ3Bpby9ncGlvLnR4dCBhbmQgLi4vaW50ZXJydXB0LWNvbnRyb2xsZXIvaW50ZXJydXB0cy50eHQgZm9yCithIGdlbmVyYWwgZGVzY3JpcHRpb24gb2YgR1BJTyBhbmQgaW50ZXJydXB0IGJpbmRpbmdzLgorCitQbGVhc2UgcmVmZXIgdG8gcGluY3RybC1iaW5kaW5ncy50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGRldGFpbHMgb2YgdGhlCitjb21tb24gcGluY3RybCBiaW5kaW5ncyB1c2VkIGJ5IGNsaWVudCBkZXZpY2VzLCBpbmNsdWRpbmcgdGhlIG1lYW5pbmcgb2YgdGhlCitwaHJhc2UgInBpbiBjb25maWd1cmF0aW9uIG5vZGUiLgorCitUaGUgcGluIGNvbmZpZ3VyYXRpb24gbm9kZXMgYWN0IGFzIGEgY29udGFpbmVyIGZvciBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mCitzdWJub2Rlcy4gRWFjaCBvZiB0aGVzZSBzdWJub2RlcyByZXByZXNlbnRzIHNvbWUgZGVzaXJlZCBjb25maWd1cmF0aW9uIGZvciBhCitwaW4gb3IgYSBsaXN0IG9mIHBpbnMuIFRoaXMgY29uZmlndXJhdGlvbiBjYW4gaW5jbHVkZSB0aGUKK211eCBmdW5jdGlvbiB0byBzZWxlY3Qgb24gdGhvc2UgcGluKHMpLCBhbmQgdmFyaW91cyBwaW4gY29uZmlndXJhdGlvbgorcGFyYW1ldGVycywgYXMgbGlzdGVkIGJlbG93LgorCitTVUJOT0RFUzoKKworVGhlIG5hbWUgb2YgZWFjaCBzdWJub2RlIGlzIG5vdCBpbXBvcnRhbnQ7IGFsbCBzdWJub2RlcyBzaG91bGQgYmUgZW51bWVyYXRlZAorYW5kIHByb2Nlc3NlZCBwdXJlbHkgYmFzZWQgb24gdGhlaXIgY29udGVudC4KKworRWFjaCBzdWJub2RlIG9ubHkgYWZmZWN0cyB0aG9zZSBwYXJhbWV0ZXJzIHRoYXQgYXJlIGV4cGxpY2l0bHkgbGlzdGVkLiBJbgorb3RoZXIgd29yZHMsIGEgc3Vibm9kZSB0aGF0IGxpc3RzIGEgbXV4IGZ1bmN0aW9uIGJ1dCBubyBwaW4gY29uZmlndXJhdGlvbgorcGFyYW1ldGVycyBpbXBsaWVzIG5vIGluZm9ybWF0aW9uIGFib3V0IGFueSBwaW4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgorU2ltaWxhcmx5LCBhIHBpbiBzdWJub2RlIHRoYXQgZGVzY3JpYmVzIGEgcHVsbHVwIHBhcmFtZXRlciBpbXBsaWVzIG5vCitpbmZvcm1hdGlvbiBhYm91dCBlLmcuIHRoZSBtdXggZnVuY3Rpb24uCisKK1RoZSBmb2xsb3dpbmcgZ2VuZXJpYyBwcm9wZXJ0aWVzIGFzIGRlZmluZWQgaW4gcGluY3RybC1iaW5kaW5ncy50eHQgYXJlIHZhbGlkCit0byBzcGVjaWZ5IGluIGEgcGluIGNvbmZpZ3VyYXRpb24gc3Vibm9kZToKKworLSBwaW5zOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxzdHJpbmctYXJyYXk+CisJRGVmaW5pdGlvbjogTGlzdCBvZiBNUFAgcGlucyBhZmZlY3RlZCBieSB0aGUgcHJvcGVydGllcyBzcGVjaWZpZWQgaW4KKwkJICAgIHRoaXMgc3Vibm9kZS4gIFZhbGlkIHBpbnMgYXJlOgorCQkgICAgbXBwMS1tcHA0IGZvciBwbTg4NDEKKwkJICAgIG1wcDEtbXBwNCBmb3IgcG04OTE2CisJCSAgICBtcHAxLW1wcDggZm9yIHBtODk0MQorCQkgICAgbXBwMS1tcHA0IGZvciBwbWE4MDg0CisKKy0gZnVuY3Rpb246CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHN0cmluZz4KKwlEZWZpbml0aW9uOiBTcGVjaWZ5IHRoZSBhbHRlcm5hdGl2ZSBmdW5jdGlvbiB0byBiZSBjb25maWd1cmVkIGZvciB0aGUKKwkJICAgIHNwZWNpZmllZCBwaW5zLiAgVmFsaWQgdmFsdWVzIGFyZToKKwkJICAgICJkaWdpdGFsIiwKKwkJICAgICJhbmFsb2ciLAorCQkgICAgInNpbmsiCisKKy0gYmlhcy1kaXNhYmxlOgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IDxub25lPgorCURlZmluaXRpb246IFRoZSBzcGVjaWZpZWQgcGlucyBzaG91bGQgYmUgY29uZmlndXJlZCBhcyBubyBwdWxsLgorCistIGJpYXMtcHVsbC11cDoKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8dTMyPgorCURlZmluaXRpb246IFRoZSBzcGVjaWZpZWQgcGlucyBzaG91bGQgYmUgY29uZmlndXJlZCBhcyBwdWxsIHVwLgorCQkgICAgVmFsaWQgdmFsdWVzIGFyZSA2MDAsIDEwMDAwIGFuZCAzMDAwMCBpbiBiaWRpcmVjdGlvbmFsIG1vZGUKKwkJICAgIG9ubHksIGkuZS4gd2hlbiBvcGVyYXRpbmcgaW4gcWNvbSxhbmFsb2ctbW9kZSBhbmQgaW5wdXQgYW5kCisJCSAgICBvdXRwdXRzIGFyZSBlbmFibGVkLiBUaGUgaGFyZHdhcmUgaWdub3JlcyB0aGUgY29uZmlndXJhdGlvbgorCQkgICAgd2hlbiBvcGVyYXRpbmcgaW4gb3RoZXIgbW9kZXMuCisKKy0gYmlhcy1oaWdoLWltcGVkYW5jZToKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8bm9uZT4KKwlEZWZpbml0aW9uOiBUaGUgc3BlY2lmaWVkIHBpbnMgd2lsbCBwdXQgaW4gaGlnaC1aIG1vZGUgYW5kIGRpc2FibGVkLgorCistIGlucHV0LWVuYWJsZToKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8bm9uZT4KKwlEZWZpbml0aW9uOiBUaGUgc3BlY2lmaWVkIHBpbnMgYXJlIHB1dCBpbiBpbnB1dCBtb2RlLCBpLmUuIHRoZWlyIGlucHV0CisJCSAgICBidWZmZXIgaXMgZW5hYmxlZAorCistIG91dHB1dC1oaWdoOgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IDxub25lPgorCURlZmluaXRpb246IFRoZSBzcGVjaWZpZWQgcGlucyBhcmUgY29uZmlndXJlZCBpbiBvdXRwdXQgbW9kZSwgZHJpdmVuCisJCSAgICBoaWdoLgorCistIG91dHB1dC1sb3c6CisJVXNhZ2U6IG9wdGlvbmFsCisJVmFsdWUgdHlwZTogPG5vbmU+CisJRGVmaW5pdGlvbjogVGhlIHNwZWNpZmllZCBwaW5zIGFyZSBjb25maWd1cmVkIGluIG91dHB1dCBtb2RlLCBkcml2ZW4KKwkJICAgIGxvdy4KKworLSBwb3dlci1zb3VyY2U6CisJVXNhZ2U6IG9wdGlvbmFsCisJVmFsdWUgdHlwZTogPHUzMj4KKwlEZWZpbml0aW9uOiBTZWxlY3RzIHRoZSBwb3dlciBzb3VyY2UgZm9yIHRoZSBzcGVjaWZpZWQgcGlucy4gVmFsaWQgcG93ZXIKKwkJICAgIHNvdXJjZXMgYXJlIGRlZmluZWQgaW4gPGR0LWJpbmRpbmdzL3BpbmN0cmwvcWNvbSxwbWljLW1wcC5oPgorCistIHFjb20sYW5hbG9nLWxldmVsOgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IDx1MzI+CisJRGVmaW5pdGlvbjogU2VsZWN0cyB0aGUgc291cmNlIGZvciBhbmFsb2cgb3V0cHV0LiBWYWx1ZWQgdmFsdWVzIGFyZQorCQkgICAgZGVmaW5lZCBpbiA8ZHQtYmluZGluZy9waW5jdHJsL3Fjb20scG1pYy1tcHAuaD4KKwkJICAgIFBNSUNfTVBQX0FPVVRfTFZMXyoKKworLSBxY29tLGR0ZXN0OgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IDx1MzI+CisJRGVmaW5pdGlvbjogU2VsZWN0cyB3aGljaCBkdGVzdCByYWlsIHRvIGJlIHJvdXRlZCBpbiB0aGUgdmFyaW91cyBmdW5jdGlvbnMuCisJCSAgICBWYWxpZCB2YWx1ZXMgYXJlIDEtNAorCistIHFjb20sYW11eC1yb3V0ZToKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8dTMyPgorCURlZmluaXRpb246IFNlbGVjdHMgdGhlIHNvdXJjZSBmb3IgYW5hbG9nIGlucHV0LiBWYWxpZCB2YWx1ZXMgYXJlCisJCSAgICBkZWZpbmVkIGluIDxkdC1iaW5kaW5ncy9waW5jdHJsL3Fjb20scG1pYy1tcHAuaD4KKwkJICAgIFBNSUNfTVBQX0FNVVhfUk9VVEVfQ0g1LCBQTUlDX01QUF9BTVVYX1JPVVRFX0NINi4uLgorLSBxY29tLHBhaXJlZDoKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8bm9uZT4KKwlEZWZpbml0aW9uOiBJbmRpY2F0ZXMgdGhhdCB0aGUgcGluIHNob3VsZCBiZSBvcGVyYXRpbmcgaW4gcGFpcmVkIG1vZGUuCisKK0V4YW1wbGU6CisKKwltcHBzQGEwMDAgeworCQljb21wYXRpYmxlID0gInFjb20scG04ODQxLW1wcCI7CisJCXJlZyA9IDwweGEwMDA+OworCQlncGlvLWNvbnRyb2xsZXI7CisJCSNncGlvLWNlbGxzID0gPDI+OworCQlpbnRlcnJ1cHRzID0gPDQgMHhhMCAwIDA+LCA8NCAweGExIDAgMD4sIDw0IDB4YTIgMCAwPiwgPDQgMHhhMyAwIDA+OworCisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmcG04ODQxX2RlZmF1bHQ+OworCisJCXBtODg0MV9kZWZhdWx0OiBkZWZhdWx0IHsKKwkJCWdwaW8geworCQkJCXBpbnMgPSAibXBwMSIsICJtcHAyIiwgIm1wcDMiLCAibXBwNCI7CisJCQkJZnVuY3Rpb24gPSAiZGlnaXRhbCI7CisJCQkJaW5wdXQtZW5hYmxlOworCQkJCXBvd2VyLXNvdXJjZSA9IDxQTTg4NDFfTVBQX1MzPjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3JlbmVzYXMscGZjLXBpbmN0cmwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcmVuZXNhcyxwZmMtcGluY3RybC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZhZGI3YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3JlbmVzYXMscGZjLXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsMTcyIEBACisqIFJlbmVzYXMgUGluIEZ1bmN0aW9uIENvbnRyb2xsZXIgKEdQSU8gYW5kIFBpbiBNdXgvQ29uZmlnKQorCitUaGUgUGluIEZ1bmN0aW9uIENvbnRyb2xsZXIgKFBGQykgaXMgYSBQaW4gTXV4L0NvbmZpZyBjb250cm9sbGVyLiBPbiBTSDczQTAsCitSOEE3M0E0IGFuZCBSOEE3NzQwIGl0IGFsc28gYWN0cyBhcyBhIEdQSU8gY29udHJvbGxlci4KKworCitQaW4gQ29udHJvbAorLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZy4KKyAgICAtICJyZW5lc2FzLHBmYy1lbWV2MiI6IGZvciBFTUVWMiAoRU1NQSBNb2JpbGUgRVYyKSBjb21wYXRpYmxlIHBpbi1jb250cm9sbGVyLgorICAgIC0gInJlbmVzYXMscGZjLXI4YTczYTQiOiBmb3IgUjhBNzNBNCAoUi1Nb2JpbGUgQVBFNikgY29tcGF0aWJsZSBwaW4tY29udHJvbGxlci4KKyAgICAtICJyZW5lc2FzLHBmYy1yOGE3NzQwIjogZm9yIFI4QTc3NDAgKFItTW9iaWxlIEExKSBjb21wYXRpYmxlIHBpbi1jb250cm9sbGVyLgorICAgIC0gInJlbmVzYXMscGZjLXI4YTc3NzgiOiBmb3IgUjhBNzc3OCAoUi1Nb2JpbGUgTTEpIGNvbXBhdGlibGUgcGluLWNvbnRyb2xsZXIuCisgICAgLSAicmVuZXNhcyxwZmMtcjhhNzc3OSI6IGZvciBSOEE3Nzc5IChSLUNhciBIMSkgY29tcGF0aWJsZSBwaW4tY29udHJvbGxlci4KKyAgICAtICJyZW5lc2FzLHBmYy1yOGE3NzkwIjogZm9yIFI4QTc3OTAgKFItQ2FyIEgyKSBjb21wYXRpYmxlIHBpbi1jb250cm9sbGVyLgorICAgIC0gInJlbmVzYXMscGZjLXI4YTc3OTEiOiBmb3IgUjhBNzc5MSAoUi1DYXIgTTItVykgY29tcGF0aWJsZSBwaW4tY29udHJvbGxlci4KKyAgICAtICJyZW5lc2FzLHBmYy1yOGE3NzkzIjogZm9yIFI4QTc3OTMgKFItQ2FyIE0yLU4pIGNvbXBhdGlibGUgcGluLWNvbnRyb2xsZXIuCisgICAgLSAicmVuZXNhcyxwZmMtcjhhNzc5NCI6IGZvciBSOEE3Nzk0IChSLUNhciBFMikgY29tcGF0aWJsZSBwaW4tY29udHJvbGxlci4KKyAgICAtICJyZW5lc2FzLHBmYy1yOGE3Nzk1IjogZm9yIFI4QTc3OTUgKFItQ2FyIEgzKSBjb21wYXRpYmxlIHBpbi1jb250cm9sbGVyLgorICAgIC0gInJlbmVzYXMscGZjLXNoNzNhMCI6IGZvciBTSDczQTAgKFNILU1vYmlsZSBBRzUpIGNvbXBhdGlibGUgcGluLWNvbnRyb2xsZXIuCisKKyAgLSByZWc6IEJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIGVhY2ggbWVtb3J5IHJlc291cmNlIHVzZWQgYnkgdGhlIHBpbgorICAgIGNvbnRyb2xsZXIgaGFyZHdhcmUgbW9kdWxlLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCisgIC0gI2dwaW8tcmFuZ2UtY2VsbHM6IE1hbmRhdG9yeSB3aGVuIHRoZSBQRkMgZG9lc24ndCBoYW5kbGUgR1BJTywgZm9yYmlkZGVuCisgICAgb3RoZXJ3aXNlLiBTaG91bGQgYmUgMy4KKworICAtIGludGVycnVwdHMtZXh0ZW5kZWQ6IFNwZWNpZnkgdGhlIGludGVycnVwdHMgYXNzb2NpYXRlZCB3aXRoIGV4dGVybmFsCisgICAgSVJRIHBpbnMuIFRoaXMgcHJvcGVydHkgaXMgbWFuZGF0b3J5IHdoZW4gdGhlIFBGQyBoYW5kbGVzIEdQSU9zIGFuZAorICAgIGZvcmJpZGRlbiBvdGhlcndpc2UuIFdoZW4gc3BlY2lmaWVkLCBpdCBtdXN0IGNvbnRhaW4gb25lIGludGVycnVwdCBwZXIKKyAgICBleHRlcm5hbCBJUlEsIHNvcnRlZCBieSBleHRlcm5hbCBJUlEgbnVtYmVyLgorCitUaGUgUEZDIG5vZGUgYWxzbyBhY3RzIGFzIGEgY29udGFpbmVyIGZvciBwaW4gY29uZmlndXJhdGlvbiBub2Rlcy4gUGxlYXNlIHJlZmVyCit0byBwaW5jdHJsLWJpbmRpbmdzLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgdGhlIGRlZmluaXRpb24gb2YgdGhlIHRlcm0gInBpbgorY29uZmlndXJhdGlvbiBub2RlIiBhbmQgZm9yIHRoZSBjb21tb24gcGluY3RybCBiaW5kaW5ncyB1c2VkIGJ5IGNsaWVudCBkZXZpY2VzLgorCitFYWNoIHBpbiBjb25maWd1cmF0aW9uIG5vZGUgcmVwcmVzZW50cyBhIGRlc2lyZWQgY29uZmlndXJhdGlvbiBmb3IgYSBwaW4sIGEKK3BpbiBncm91cCwgb3IgYSBsaXN0IG9mIHBpbnMgb3IgcGluIGdyb3Vwcy4gVGhlIGNvbmZpZ3VyYXRpb24gY2FuIGluY2x1ZGUgdGhlCitmdW5jdGlvbiB0byBzZWxlY3Qgb24gdGhvc2UgcGluKHMpIGFuZCBwaW4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIChzdWNoIGFzCitwdWxsLXVwIGFuZCBwdWxsLWRvd24pLgorCitQaW4gY29uZmlndXJhdGlvbiBub2RlcyBjb250YWluIHBpbiBjb25maWd1cmF0aW9uIHByb3BlcnRpZXMsIGVpdGhlciBkaXJlY3RseQorb3IgZ3JvdXBlZCBpbiBjaGlsZCBzdWJub2Rlcy4gQm90aCBwaW4gbXV4aW5nIGFuZCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgY2FuCitiZSBncm91cGVkIGluIHRoYXQgd2F5IGFuZCByZWZlcmVuY2VkIGFzIGEgc2luZ2xlIHBpbiBjb25maWd1cmF0aW9uIG5vZGUgYnkKK2NsaWVudCBkZXZpY2VzLgorCitBIGNvbmZpZ3VyYXRpb24gbm9kZSBvciBzdWJub2RlIG11c3QgcmVmZXJlbmNlIGF0IGxlYXN0IG9uZSBwaW4gKHRocm91Z2ggdGhlCitwaW5zIG9yIHBpbiBncm91cHMgcHJvcGVydGllcykgYW5kIGNvbnRhaW4gYXQgbGVhc3QgYSBmdW5jdGlvbiBvciBvbmUKK2NvbmZpZ3VyYXRpb24gcGFyYW1ldGVyLiBXaGVuIHRoZSBmdW5jdGlvbiBpcyBwcmVzZW50IG9ubHkgcGluIGdyb3VwcyBjYW4gYmUKK3VzZWQgdG8gcmVmZXJlbmNlIHBpbnMuCisKK0FsbCBwaW4gY29uZmlndXJhdGlvbiBub2RlcyBhbmQgc3Vibm9kZXMgbmFtZXMgYXJlIGlnbm9yZWQuIEFsbCBvZiB0aG9zZSBub2RlcworYXJlIHBhcnNlZCB0aHJvdWdoIHBoYW5kbGVzIGFuZCBwcm9jZXNzZWQgcHVyZWx5IGJhc2VkIG9uIHRoZWlyIGNvbnRlbnQuCisKK1BpbiBDb25maWd1cmF0aW9uIE5vZGUgUHJvcGVydGllczoKKworLSBwaW5zIDogQW4gYXJyYXkgb2Ygc3RyaW5ncywgZWFjaCBzdHJpbmcgY29udGFpbmluZyB0aGUgbmFtZSBvZiBhIHBpbi4KKy0gZ3JvdXBzIDogQW4gYXJyYXkgb2Ygc3RyaW5ncywgZWFjaCBzdHJpbmcgY29udGFpbmluZyB0aGUgbmFtZSBvZiBhIHBpbgorICBncm91cC4KKworLSBmdW5jdGlvbjogQSBzdHJpbmcgY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gdG8gbXV4IHRvIHRoZSBwaW4KKyAgZ3JvdXAocykgc3BlY2lmaWVkIGJ5IHRoZSBncm91cHMgcHJvcGVydHkuCisKKyAgVmFsaWQgdmFsdWVzIGZvciBwaW4sIGdyb3VwIGFuZCBmdW5jdGlvbiBuYW1lcyBjYW4gYmUgZm91bmQgaW4gdGhlIGdyb3VwIGFuZAorICBmdW5jdGlvbiBhcnJheXMgb2YgdGhlIFBGQyBkYXRhIGZpbGUgY29ycmVzcG9uZGluZyB0byB0aGUgU29DCisgIChkcml2ZXJzL3BpbmN0cmwvc2gtcGZjL3BmYy0qLmMpCisKK1RoZSBwaW4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHVzZSB0aGUgZ2VuZXJpYyBwaW5jb25mIGJpbmRpbmdzIGRlZmluZWQgaW4KK3BpbmN0cmwtYmluZGluZ3MudHh0IGluIHRoaXMgZGlyZWN0b3J5LiBUaGUgc3VwcG9ydGVkIHBhcmFtZXRlcnMgYXJlCitiaWFzLWRpc2FibGUsIGJpYXMtcHVsbC11cCwgYmlhcy1wdWxsLWRvd24gYW5kIHBvd2VyLXNvdXJjZS4gRm9yIHBpbnMgdGhhdAoraGF2ZSBhIGNvbmZpZ3VyYWJsZSBJL08gdm9sdGFnZSwgdGhlIHBvd2VyLXNvdXJjZSB2YWx1ZSBzaG91bGQgYmUgdGhlCitub21pbmFsIEkvTyB2b2x0YWdlIGluIG1pbGxpdm9sdHMuCisKKworR1BJTworLS0tLQorCitPbiBTSDczQTAsIFI4QTczQTQgYW5kIFI4QTc3NDAgdGhlIFBGQyBub2RlIGlzIGFsc28gYSBHUElPIGNvbnRyb2xsZXIgbm9kZS4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworICAtIGdwaW8tY29udHJvbGxlcjogTWFya3MgdGhlIGRldmljZSBub2RlIGFzIGEgZ3BpbyBjb250cm9sbGVyLgorCisgIC0gI2dwaW8tY2VsbHM6IFNob3VsZCBiZSAyLiBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgR1BJTyBudW1iZXIgYW5kIHRoZSBzZWNvbmQKKyAgICBjZWxsIHNwZWNpZmllcyBHUElPIGZsYWdzLCBhcyBkZWZpbmVkIGluIDxkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaD4uIE9ubHkgdGhlCisgICAgR1BJT19BQ1RJVkVfSElHSCBhbmQgR1BJT19BQ1RJVkVfTE9XIGZsYWdzIGFyZSBzdXBwb3J0ZWQuCisKK1RoZSBzeW50YXggb2YgdGhlIGdwaW8gc3BlY2lmaWVyIHVzZWQgYnkgY2xpZW50IG5vZGVzIHNob3VsZCBiZSB0aGUgZm9sbG93aW5nCit3aXRoIHZhbHVlcyBkZXJpdmVkIGZyb20gdGhlIFNvQyB1c2VyIG1hbnVhbC4KKworICA8W3BoYW5kbGUgb2YgdGhlIGdwaW8gY29udHJvbGxlciBub2RlXQorICAgW3BpbiBudW1iZXIgd2l0aGluIHRoZSBncGlvIGNvbnRyb2xsZXJdCisgICBbZmxhZ3NdPgorCitPbiBvdGhlciBtYWNoLXNobW9iaWxlIHBsYXRmb3JtcyBHUElPIGlzIGhhbmRsZWQgYnkgdGhlIGdwaW8tcmNhciBkcml2ZXIuCitQbGVhc2UgcmVmZXIgdG8gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vcmVuZXNhcyxncGlvLXJjYXIudHh0Citmb3IgZG9jdW1lbnRhdGlvbiBvZiB0aGUgR1BJTyBkZXZpY2UgdHJlZSBiaW5kaW5ncyBvbiB0aG9zZSBwbGF0Zm9ybXMuCisKKworRXhhbXBsZXMKKy0tLS0tLS0tCisKK0V4YW1wbGUgMTogU0g3M0EwIChTSC1Nb2JpbGUgQUc1KSBwaW4gY29udHJvbGxlciBub2RlCisKKwlwZmM6IHBmY0BlNjA1MDAwMCB7CisJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxwZmMtc2g3M2EwIjsKKwkJcmVnID0gPDB4ZTYwNTAwMDAgMHg4MDAwPiwKKwkJICAgICAgPDB4ZTYwNTgwMWMgMHgxYz47CisJCWdwaW8tY29udHJvbGxlcjsKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCWludGVycnVwdHMtZXh0ZW5kZWQgPQorCQkJPCZpcnFwaW4wIDAgMD4sIDwmaXJxcGluMCAxIDA+LCA8JmlycXBpbjAgMiAwPiwgPCZpcnFwaW4wIDMgMD4sCisJCQk8JmlycXBpbjAgNCAwPiwgPCZpcnFwaW4wIDUgMD4sIDwmaXJxcGluMCA2IDA+LCA8JmlycXBpbjAgNyAwPiwKKwkJCTwmaXJxcGluMSAwIDA+LCA8JmlycXBpbjEgMSAwPiwgPCZpcnFwaW4xIDIgMD4sIDwmaXJxcGluMSAzIDA+LAorCQkJPCZpcnFwaW4xIDQgMD4sIDwmaXJxcGluMSA1IDA+LCA8JmlycXBpbjEgNiAwPiwgPCZpcnFwaW4xIDcgMD4sCisJCQk8JmlycXBpbjIgMCAwPiwgPCZpcnFwaW4yIDEgMD4sIDwmaXJxcGluMiAyIDA+LCA8JmlycXBpbjIgMyAwPiwKKwkJCTwmaXJxcGluMiA0IDA+LCA8JmlycXBpbjIgNSAwPiwgPCZpcnFwaW4yIDYgMD4sIDwmaXJxcGluMiA3IDA+LAorCQkJPCZpcnFwaW4zIDAgMD4sIDwmaXJxcGluMyAxIDA+LCA8JmlycXBpbjMgMiAwPiwgPCZpcnFwaW4zIDMgMD4sCisJCQk8JmlycXBpbjMgNCAwPiwgPCZpcnFwaW4zIDUgMD4sIDwmaXJxcGluMyA2IDA+LCA8JmlycXBpbjMgNyAwPjsKKwl9OworCitFeGFtcGxlIDI6IEEgR1BJTyBMRUQgbm9kZSB0aGF0IHJlZmVyZW5jZXMgYSBHUElPCisKKwkjaW5jbHVkZSA8ZHQtYmluZGluZ3MvZ3Bpby9ncGlvLmg+CisKKwlsZWRzIHsKKwkJY29tcGF0aWJsZSA9ICJncGlvLWxlZHMiOworCQlsZWQxIHsKKwkJCWdwaW9zID0gPCZwZmMgMjAgR1BJT19BQ1RJVkVfTE9XPjsKKwkJfTsKKwl9OworCitFeGFtcGxlIDM6IEtaTS1BOS1HVCAoU0gtTW9iaWxlIEFHNSkgZGVmYXVsdCBwaW4gc3RhdGUgaG9nIGFuZCBwaW4gY29udHJvbCBtYXBzCisgICAgICAgICAgIGZvciB0aGUgTU1DSUYgYW5kIFNDSUZBNCBkZXZpY2VzCisKKwkmcGZjIHsKKwkJcGluY3RybC0wID0gPCZzY2lmYTRfcGlucz47CisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisKKwkJbW1jaWZfcGluczogbW1jaWYgeworCQkJbXV4IHsKKwkJCQlncm91cHMgPSAibW1jMF9kYXRhOF8wIiwgIm1tYzBfY3RybF8wIjsKKwkJCQlmdW5jdGlvbiA9ICJtbWMwIjsKKwkJCX07CisJCQljZmcgeworCQkJCWdyb3VwcyA9ICJtbWMwX2RhdGE4XzAiOworCQkJCXBpbnMgPSAiUE9SVDI3OSI7CisJCQkJYmlhcy1wdWxsLXVwOworCQkJfTsKKwkJfTsKKworCQlzY2lmYTRfcGluczogc2NpZmE0IHsKKwkJCWdyb3VwcyA9ICJzY2lmYTRfZGF0YSIsICJzY2lmYTRfY3RybCI7CisJCQlmdW5jdGlvbiA9ICJzY2lmYTQiOworCQl9OworCX07CisKK0V4YW1wbGUgNDogS1pNLUE5LUdUIChTSC1Nb2JpbGUgQUc1KSBkZWZhdWx0IHBpbiBzdGF0ZSBmb3IgdGhlIE1NQ0lGIGRldmljZQorCisJJm1tY2lmIHsKKwkJcGluY3RybC0wID0gPCZtbWNpZl9waW5zPjsKKwkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKworCQlidXMtd2lkdGggPSA8OD47CisJCXZtbWMtc3VwcGx5ID0gPCZyZWdfMXA4dj47CisJCXN0YXR1cyA9ICJva2F5IjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcm9ja2NoaXAscGluY3RybC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9yb2NrY2hpcCxwaW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTFlZjRiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcm9ja2NoaXAscGluY3RybC50eHQKQEAgLTAsMCArMSwxNTggQEAKKyogUm9ja2NoaXAgUGlubXV4IENvbnRyb2xsZXIKKworVGhlIFJvY2tjaGlwIFBpbm11eCBDb250cm9sbGVyLCBlbmFibGVzIHRoZSBJQwordG8gc2hhcmUgb25lIFBBRCB0byBzZXZlcmFsIGZ1bmN0aW9uYWwgYmxvY2tzLiBUaGUgc2hhcmluZyBpcyBkb25lIGJ5CittdWx0aXBsZXhpbmcgdGhlIFBBRCBpbnB1dC9vdXRwdXQgc2lnbmFscy4gRm9yIGVhY2ggUEFEIHRoZXJlIGFyZSBzZXZlcmFsCittdXhpbmcgb3B0aW9ucyB3aXRoIG9wdGlvbiAwIGJlaW5nIHRoZSB1c2UgYXMgYSBHUElPLgorCitQbGVhc2UgcmVmZXIgdG8gcGluY3RybC1iaW5kaW5ncy50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGRldGFpbHMgb2YgdGhlCitjb21tb24gcGluY3RybCBiaW5kaW5ncyB1c2VkIGJ5IGNsaWVudCBkZXZpY2VzLCBpbmNsdWRpbmcgdGhlIG1lYW5pbmcgb2YgdGhlCitwaHJhc2UgInBpbiBjb25maWd1cmF0aW9uIG5vZGUiLgorCitUaGUgUm9ja2NoaXAgcGluIGNvbmZpZ3VyYXRpb24gbm9kZSBpcyBhIG5vZGUgb2YgYSBncm91cCBvZiBwaW5zIHdoaWNoIGNhbiBiZQordXNlZCBmb3IgYSBzcGVjaWZpYyBkZXZpY2Ugb3IgZnVuY3Rpb24uIFRoaXMgbm9kZSByZXByZXNlbnRzIGJvdGggbXV4IGFuZAorY29uZmlnIG9mIHRoZSBwaW5zIGluIHRoYXQgZ3JvdXAuIFRoZSAncGlucycgc2VsZWN0cyB0aGUgZnVuY3Rpb24gbW9kZShhbHNvCituYW1lZCBwaW4gbW9kZSkgdGhpcyBwaW4gY2FuIHdvcmsgb24gYW5kIHRoZSAnY29uZmlnJyBjb25maWd1cmVzIHZhcmlvdXMgcGFkCitzZXR0aW5ncyBzdWNoIGFzIHB1bGwtdXAsIGV0Yy4KKworVGhlIHBpbnMgYXJlIGdyb3VwZWQgaW50byB1cCB0byA1IGluZGl2aWR1YWwgcGluIGJhbmtzIHdoaWNoIG5lZWQgdG8gYmUKK2RlZmluZWQgYXMgZ3BpbyBzdWItbm9kZXMgb2YgdGhlIHBpbm11eCBjb250cm9sbGVyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBpb211eCBjb250cm9sbGVyOgorICAtIGNvbXBhdGlibGU6IG9uZSBvZiAicm9ja2NoaXAscmsyOTI4LXBpbmN0cmwiLCAicm9ja2NoaXAscmszMDY2YS1waW5jdHJsIgorCQkgICAgICAgInJvY2tjaGlwLHJrMzA2NmItcGluY3RybCIsICJyb2NrY2hpcCxyazMxODgtcGluY3RybCIKKwkJICAgICAgICJyb2NrY2hpcCxyazMyODgtcGluY3RybCIsICJyb2NrY2hpcCxyazMzNjgtcGluY3RybCIKKyAgLSByb2NrY2hpcCxncmY6IHBoYW5kbGUgcmVmZXJlbmNpbmcgYSBzeXNjb24gcHJvdmlkaW5nIHRoZQorCSAiZ2VuZXJhbCByZWdpc3RlciBmaWxlcyIKKworT3B0aW9uYWwgcHJvcGVydGllcyBmb3IgaW9tdXggY29udHJvbGxlcjoKKyAgLSByb2NrY2hpcCxwbXU6IHBoYW5kbGUgcmVmZXJlbmNpbmcgYSBzeXNjb24gcHJvdmlkaW5nIHRoZSBwbXUgcmVnaXN0ZXJzCisJIGFzIHNvbWUgU29DcyBjYXJyeSBwYXJ0cyBvZiB0aGUgaW9tdXggY29udHJvbGxlciByZWdpc3RlcnMgdGhlcmUuCisJIFJlcXVpcmVkIGZvciBhdCBsZWFzdCByazMxODggYW5kIHJrMzI4OC4gT24gdGhlIHJrMzM2OCB0aGlzIHNob3VsZAorCSBwb2ludCB0byB0aGUgUE1VR1JGIHN5c2Nvbi4KKworRGVwcmVjYXRlZCBwcm9wZXJ0aWVzIGZvciBpb211eCBjb250cm9sbGVyOgorICAtIHJlZzogZmlyc3QgZWxlbWVudCBpcyB0aGUgZ2VuZXJhbCByZWdpc3RlciBzcGFjZSBvZiB0aGUgaW9tdXggY29udHJvbGxlcgorCSBJdCBzaG91bGQgYmUgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gYWxzbyBzZXBhcmF0ZSBwdWxsIHJlZ2lzdGVycy4KKwkgc2Vjb25kIGVsZW1lbnQgaXMgdGhlIHNlcGFyYXRlIHB1bGwgcmVnaXN0ZXIgc3BhY2Ugb2YgdGhlIHJrMzE4OC4KKwkgVXNlIHJvY2tjaGlwLGdyZiBhbmQgcm9ja2NoaXAscG11IGRlc2NyaWJlZCBhYm92ZSBpbnN0ZWFkLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBncGlvIHN1YiBub2RlczoKKyAgLSBjb21wYXRpYmxlOiAicm9ja2NoaXAsZ3Bpby1iYW5rIgorICAtIHJlZzogcmVnaXN0ZXIgb2YgdGhlIGdwaW8gYmFuayAoZGlmZmVyZW50IHRoYW4gdGhlIGlvbXV4IHJlZ2lzdGVyc2V0KQorICAtIGludGVycnVwdHM6IGJhc2UgaW50ZXJydXB0IG9mIHRoZSBncGlvIGJhbmsgaW4gdGhlIGludGVycnVwdCBjb250cm9sbGVyCisgIC0gY2xvY2tzOiBjbG9jayB0aGF0IGRyaXZlcyB0aGlzIGJhbmsKKyAgLSBncGlvLWNvbnRyb2xsZXI6IGlkZW50aWZpZXMgdGhlIG5vZGUgYXMgYSBncGlvIGNvbnRyb2xsZXIgYW5kIHBpbiBiYW5rLgorICAtICNncGlvLWNlbGxzOiBudW1iZXIgb2YgY2VsbHMgaW4gR1BJTyBzcGVjaWZpZXIuIFNpbmNlIHRoZSBnZW5lcmljIEdQSU8KKyAgICBiaW5kaW5nIGlzIHVzZWQsIHRoZSBhbW91bnQgb2YgY2VsbHMgbXVzdCBiZSBzcGVjaWZpZWQgYXMgMi4gU2VlIGdlbmVyaWMKKyAgICBHUElPIGJpbmRpbmcgZG9jdW1lbnRhdGlvbiBmb3IgZGVzY3JpcHRpb24gb2YgcGFydGljdWxhciBjZWxscy4KKyAgLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogaWRlbnRpZmllcyB0aGUgY29udHJvbGxlciBub2RlIGFzIGludGVycnVwdC1wYXJlbnQuCisgIC0gI2ludGVycnVwdC1jZWxsczogdGhlIHZhbHVlIG9mIHRoaXMgcHJvcGVydHkgc2hvdWxkIGJlIDIgYW5kIHRoZSBpbnRlcnJ1cHQKKyAgICBjZWxscyBzaG91bGQgdXNlIHRoZSBzdGFuZGFyZCB0d28tY2VsbCBzY2hlbWUgZGVzY3JpYmVkIGluCisgICAgYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaW50ZXJydXB0cy50eHQKKworRGVwcmVjYXRlZCBwcm9wZXJ0aWVzIGZvciBncGlvIHN1YiBub2RlczoKKyAgLSBjb21wYXRpYmxlOiAicm9ja2NoaXAscmszMTg4LWdwaW8tYmFuazAiCisgIC0gcmVnOiBzZWNvbmQgZWxlbWVudDogc2VwYXJhdGUgcHVsbCByZWdpc3RlciBmb3IgcmszMTg4IGJhbmswLCB1c2UKKwkgcm9ja2NoaXAscG11IGRlc2NyaWJlZCBhYm92ZSBpbnN0ZWFkCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHBpbiBjb25maWd1cmF0aW9uIG5vZGU6CisgIC0gcm9ja2NoaXAscGluczogMyBpbnRlZ2VycyBhcnJheSwgcmVwcmVzZW50cyBhIGdyb3VwIG9mIHBpbnMgbXV4IGFuZCBjb25maWcKKyAgICBzZXR0aW5nLiBUaGUgZm9ybWF0IGlzIHJvY2tjaGlwLHBpbnMgPSA8UElOX0JBTksgUElOX0JBTktfSURYIE1VWCAmcGhhbmRsZT4uCisgICAgVGhlIE1VWCAwIG1lYW5zIGdwaW8gYW5kIE1VWCAxIHRvIE4gbWVhbiB0aGUgc3BlY2lmaWMgZGV2aWNlIGZ1bmN0aW9uLgorICAgIFRoZSBwaGFuZGxlIG9mIGEgbm9kZSBjb250YWluaW5nIHRoZSBnZW5lcmljIHBpbmNvbmZpZyBvcHRpb25zCisgICAgdG8gdXNlLCBhcyBkZXNjcmliZWQgaW4gcGluY3RybC1iaW5kaW5ncy50eHQgaW4gdGhpcyBkaXJlY3RvcnkuCisKK0V4YW1wbGVzOgorCisjaW5jbHVkZSA8ZHQtYmluZGluZ3MvcGluY3RybC9yb2NrY2hpcC5oPgorCisuLi4KKworcGluY3RybEAyMDAwODAwMCB7CisJY29tcGF0aWJsZSA9ICJyb2NrY2hpcCxyazMwNjZhLXBpbmN0cmwiOworCXJvY2tjaGlwLGdyZiA9IDwmZ3JmPjsKKworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDE+OworCXJhbmdlczsKKworCWdwaW8wOiBncGlvMEAyMDAzNDAwMCB7CisJCWNvbXBhdGlibGUgPSAicm9ja2NoaXAsZ3Bpby1iYW5rIjsKKwkJcmVnID0gPDB4MjAwMzQwMDAgMHgxMDA+OworCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgNTQgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWNsb2NrcyA9IDwmY2xrX2dhdGVzOCA5PjsKKworCQlncGlvLWNvbnRyb2xsZXI7CisJCSNncGlvLWNlbGxzID0gPDI+OworCisJCWludGVycnVwdC1jb250cm9sbGVyOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCX07CisKKwkuLi4KKworCXBjZmdfcHVsbF9kZWZhdWx0OiBwY2ZnX3B1bGxfZGVmYXVsdCB7CisJCWJpYXMtcHVsbC1waW4tZGVmYXVsdAorCX07CisKKwl1YXJ0MiB7CisJCXVhcnQyX3hmZXI6IHVhcnQyLXhmZXIgeworCQkJcm9ja2NoaXAscGlucyA9IDxSS19HUElPMSA4IDEgJnBjZmdfcHVsbF9kZWZhdWx0PiwKKwkJCQkJPFJLX0dQSU8xIDkgMSAmcGNmZ19wdWxsX2RlZmF1bHQ+OworCQl9OworCX07Cit9OworCit1YXJ0Mjogc2VyaWFsQDIwMDY0MDAwIHsKKwljb21wYXRpYmxlID0gInNucHMsZHctYXBiLXVhcnQiOworCXJlZyA9IDwweDIwMDY0MDAwIDB4NDAwPjsKKwlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMzYgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJcmVnLXNoaWZ0ID0gPDI+OworCXJlZy1pby13aWR0aCA9IDwxPjsKKwljbG9ja3MgPSA8Jm11eF91YXJ0Mj47CisJc3RhdHVzID0gIm9rYXkiOworCisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwlwaW5jdHJsLTAgPSA8JnVhcnQyX3hmZXI+OworfTsKKworRXhhbXBsZSBmb3IgcmszMTg4OgorCisJcGluY3RybEAyMDAwODAwMCB7CisJCWNvbXBhdGlibGUgPSAicm9ja2NoaXAscmszMTg4LXBpbmN0cmwiOworCQlyb2NrY2hpcCxncmYgPSA8JmdyZj47CisJCXJvY2tjaGlwLHBtdSA9IDwmcG11PjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQlyYW5nZXM7CisKKwkJZ3BpbzA6IGdwaW8wQDB4MjAwMGEwMDAgeworCQkJY29tcGF0aWJsZSA9ICJyb2NrY2hpcCxyazMxODgtZ3Bpby1iYW5rMCI7CisJCQlyZWcgPSA8MHgyMDAwYTAwMCAweDEwMD47CisJCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgNTQgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCQljbG9ja3MgPSA8JmNsa19nYXRlczggOT47CisKKwkJCWdwaW8tY29udHJvbGxlcjsKKwkJCSNncGlvLWNlbGxzID0gPDI+OworCisJCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJCX07CisKKwkJZ3BpbzE6IGdwaW8xQDB4MjAwM2MwMDAgeworCQkJY29tcGF0aWJsZSA9ICJyb2NrY2hpcCxncGlvLWJhbmsiOworCQkJcmVnID0gPDB4MjAwM2MwMDAgMHgxMDA+OworCQkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDU1IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQkJY2xvY2tzID0gPCZjbGtfZ2F0ZXM4IDEwPjsKKworCQkJZ3Bpby1jb250cm9sbGVyOworCQkJI2dwaW8tY2VsbHMgPSA8Mj47CisKKwkJCWludGVycnVwdC1jb250cm9sbGVyOworCQkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKwkJfTsKKworCQkuLi4KKworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9zYW1zdW5nLXBpbmN0cmwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvc2Ftc3VuZy1waW5jdHJsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDJhOTk1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvc2Ftc3VuZy1waW5jdHJsLnR4dApAQCAtMCwwICsxLDM1NiBAQAorU2Ftc3VuZyBHUElPIGFuZCBQaW4gTXV4L0NvbmZpZyBjb250cm9sbGVyCisKK1NhbXN1bmcncyBBUk0gYmFzZWQgU29DJ3MgaW50ZWdyYXRlcyBhIEdQSU8gYW5kIFBpbiBtdXgvY29uZmlnIGhhcmR3YXJlCitjb250cm9sbGVyLiBJdCBjb250cm9scyB0aGUgaW5wdXQvb3V0cHV0IHNldHRpbmdzIG9uIHRoZSBhdmFpbGFibGUgcGFkcy9waW5zCithbmQgYWxzbyBwcm92aWRlcyBhYmlsaXR5IHRvIG11bHRpcGxleCBhbmQgY29uZmlndXJlIHRoZSBvdXRwdXQgb2YgdmFyaW91cworb24tY2hpcCBjb250cm9sbGVycyBvbnRvIHRoZXNlIHBhZHMuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZy4KKyAgLSAic2Ftc3VuZyxzM2MyNDEyLXBpbmN0cmwiOiBmb3IgUzNDMjQxMi1jb21wYXRpYmxlIHBpbi1jb250cm9sbGVyLAorICAtICJzYW1zdW5nLHMzYzI0MTYtcGluY3RybCI6IGZvciBTM0MyNDE2LWNvbXBhdGlibGUgcGluLWNvbnRyb2xsZXIsCisgIC0gInNhbXN1bmcsczNjMjQ0MC1waW5jdHJsIjogZm9yIFMzQzI0NDAtY29tcGF0aWJsZSBwaW4tY29udHJvbGxlciwKKyAgLSAic2Ftc3VuZyxzM2MyNDUwLXBpbmN0cmwiOiBmb3IgUzNDMjQ1MC1jb21wYXRpYmxlIHBpbi1jb250cm9sbGVyLAorICAtICJzYW1zdW5nLHMzYzY0eHgtcGluY3RybCI6IGZvciBTM0M2NHh4LWNvbXBhdGlibGUgcGluLWNvbnRyb2xsZXIsCisgIC0gInNhbXN1bmcsczVwdjIxMC1waW5jdHJsIjogZm9yIFM1UFYyMTAtY29tcGF0aWJsZSBwaW4tY29udHJvbGxlciwKKyAgLSAic2Ftc3VuZyxleHlub3M0MjEwLXBpbmN0cmwiOiBmb3IgRXh5bm9zNDIxMCBjb21wYXRpYmxlIHBpbi1jb250cm9sbGVyLgorICAtICJzYW1zdW5nLGV4eW5vczR4MTItcGluY3RybCI6IGZvciBFeHlub3M0eDEyIGNvbXBhdGlibGUgcGluLWNvbnRyb2xsZXIuCisgIC0gInNhbXN1bmcsZXh5bm9zNTI1MC1waW5jdHJsIjogZm9yIEV4eW5vczUyNTAgY29tcGF0aWJsZSBwaW4tY29udHJvbGxlci4KKyAgLSAic2Ftc3VuZyxleHlub3M1MjYwLXBpbmN0cmwiOiBmb3IgRXh5bm9zNTI2MCBjb21wYXRpYmxlIHBpbi1jb250cm9sbGVyLgorICAtICJzYW1zdW5nLGV4eW5vczU0MjAtcGluY3RybCI6IGZvciBFeHlub3M1NDIwIGNvbXBhdGlibGUgcGluLWNvbnRyb2xsZXIuCisgIC0gInNhbXN1bmcsZXh5bm9zNy1waW5jdHJsIjogZm9yIEV4eW5vczcgY29tcGF0aWJsZSBwaW4tY29udHJvbGxlci4KKworLSByZWc6IEJhc2UgYWRkcmVzcyBvZiB0aGUgcGluIGNvbnRyb2xsZXIgaGFyZHdhcmUgbW9kdWxlIGFuZCBsZW5ndGggb2YKKyAgdGhlIGFkZHJlc3Mgc3BhY2UgaXQgb2NjdXBpZXMuCisKKy0gUGluIGJhbmtzIGFzIGNoaWxkIG5vZGVzOiBQaW4gYmFua3Mgb2YgdGhlIGNvbnRyb2xsZXIgYXJlIHJlcHJlc2VudGVkIGJ5IGNoaWxkCisgIG5vZGVzIG9mIHRoZSBjb250cm9sbGVyIG5vZGUuIEJhbmsgbmFtZSBpcyB0YWtlbiBmcm9tIG5hbWUgb2YgdGhlIG5vZGUuIEVhY2gKKyAgYmFuayBub2RlIG11c3QgY29udGFpbiBmb2xsb3dpbmcgcHJvcGVydGllczoKKworICAtIGdwaW8tY29udHJvbGxlcjogaWRlbnRpZmllcyB0aGUgbm9kZSBhcyBhIGdwaW8gY29udHJvbGxlciBhbmQgcGluIGJhbmsuCisgIC0gI2dwaW8tY2VsbHM6IG51bWJlciBvZiBjZWxscyBpbiBHUElPIHNwZWNpZmllci4gU2luY2UgdGhlIGdlbmVyaWMgR1BJTworICAgIGJpbmRpbmcgaXMgdXNlZCwgdGhlIGFtb3VudCBvZiBjZWxscyBtdXN0IGJlIHNwZWNpZmllZCBhcyAyLiBTZWUgdGhlIGJlbG93CisgICAgbWVudGlvbmVkIGdwaW8gYmluZGluZyByZXByZXNlbnRhdGlvbiBmb3IgZGVzY3JpcHRpb24gb2YgcGFydGljdWxhciBjZWxscy4KKworCUVnOiA8JmdweDIgNiAwPgorCTxbcGhhbmRsZSBvZiB0aGUgZ3BpbyBjb250cm9sbGVyIG5vZGVdCisJW3BpbiBudW1iZXIgd2l0aGluIHRoZSBncGlvIGNvbnRyb2xsZXJdCisJW2ZsYWdzXT4KKworCVZhbHVlcyBmb3IgZ3BpbyBzcGVjaWZpZXI6CisJLSBQaW4gbnVtYmVyOiBpcyBhIHZhbHVlIGJldHdlZW4gMCB0byA3LgorCS0gRmxhZ3M6IDAgLSBBY3RpdmUgSGlnaAorCQkgMSAtIEFjdGl2ZSBMb3cKKworLSBQaW4gbXV4L2NvbmZpZyBncm91cHMgYXMgY2hpbGQgbm9kZXM6IFRoZSBwaW4gbXV4IChzZWxlY3RpbmcgcGluIGZ1bmN0aW9uCisgIG1vZGUpIGFuZCBwaW4gY29uZmlnIChwdWxsIHVwL2Rvd24sIGRyaXZlciBzdHJlbmd0aCkgc2V0dGluZ3MgYXJlIHJlcHJlc2VudGVkCisgIGFzIGNoaWxkIG5vZGVzIG9mIHRoZSBwaW4tY29udHJvbGxlciBub2RlLiBUaGVyZSBzaG91bGQgYmUgYXRsZWFzdCBvbmUKKyAgY2hpbGQgbm9kZSBhbmQgdGhlcmUgaXMgbm8gbGltaXQgb24gdGhlIGNvdW50IG9mIHRoZXNlIGNoaWxkIG5vZGVzLiBJdCBpcworICBhbHNvIHBvc3NpYmxlIGZvciBhIGNoaWxkIG5vZGUgdG8gY29uc2lzdCBvZiBzZXZlcmFsIGZ1cnRoZXIgY2hpbGQgbm9kZXMKKyAgdG8gYWxsb3cgZ3JvdXBpbmcgbXVsdGlwbGUgcGluY3RybCBncm91cHMgaW50byBvbmUuIFRoZSBmb3JtYXQgb2Ygc2Vjb25kCisgIGxldmVsIGNoaWxkIG5vZGVzIGlzIGV4YWN0bHkgdGhlIHNhbWUgYXMgZm9yIGZpcnN0IGxldmVsIG9uZXMgYW5kIGlzCisgIGRlc2NyaWJlZCBiZWxvdy4KKworICBUaGUgY2hpbGQgbm9kZSBzaG91bGQgY29udGFpbiBhIGxpc3Qgb2YgcGluKHMpIG9uIHdoaWNoIGEgcGFydGljdWxhciBwaW4KKyAgZnVuY3Rpb24gc2VsZWN0aW9uIG9yIHBpbiBjb25maWd1cmF0aW9uIChvciBib3RoKSBoYXZlIHRvIGFwcGxpZWQuIFRoaXMKKyAgbGlzdCBvZiBwaW5zIGlzIHNwZWNpZmllZCB1c2luZyB0aGUgcHJvcGVydHkgbmFtZSAic2Ftc3VuZyxwaW5zIi4gVGhlcmUKKyAgc2hvdWxkIGJlIGF0bGVhc3Qgb25lIHBpbiBzcGVjZmllZCBmb3IgdGhpcyBwcm9wZXJ0eSBhbmQgdGhlcmUgaXMgbm8gdXBwZXIKKyAgbGltaXQgb24gdGhlIGNvdW50IG9mIHBpbnMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkLiBUaGUgcGlucyBhcmUgc3BlY2lmaWVkCisgIHVzaW5nIHBpbiBuYW1lcyB3aGljaCBhcmUgZGVyaXZlZCBmcm9tIHRoZSBoYXJkd2FyZSBtYW51YWwgb2YgdGhlIFNvQy4gQXMKKyAgYW4gZXhhbXBsZSwgdGhlIHBpbnMgaW4gR1BBMCBiYW5rIG9mIHRoZSBwaW4gY29udHJvbGxlciBjYW4gYmUgcmVwcmVzZW50ZWQKKyAgYXMgImdwYTAtMCIsICJncGEwLTEiLCAiZ3BhMC0yIiBhbmQgc28gb24uIFRoZSBuYW1lcyBzaG91bGQgYmUgaW4gbG93ZXIgY2FzZS4KKyAgVGhlIGZvcm1hdCBvZiB0aGUgcGluIG5hbWVzIHNob3VsZCBiZSAoYXMgcGVyIHRoZSBoYXJkd2FyZSBtYW51YWwpCisgICJbcGluIGJhbmsgbmFtZV0tW3BpbiBudW1iZXIgd2l0aGluIHRoZSBiYW5rXSIuCisKKyAgVGhlIHBpbiBmdW5jdGlvbiBzZWxlY3Rpb24gdGhhdCBzaG91bGQgYmUgYXBwbGllZCBvbiB0aGUgcGlucyBsaXN0ZWQgaW4gdGhlCisgIGNoaWxkIG5vZGUgaXMgc3BlY2lmaWVkIHVzaW5nIHRoZSAic2Ftc3VuZyxwaW4tZnVuY3Rpb24iIHByb3BlcnR5LiBUaGUgdmFsdWUKKyAgb2YgdGhpcyBwcm9wZXJ0eSB0aGF0IHNob3VsZCBiZSBhcHBsaWVkIHRvIGVhY2ggb2YgdGhlIHBpbnMgbGlzdGVkIGluIHRoZQorICAic2Ftc3VuZyxwaW5zIiBwcm9wZXJ0eSBzaG91bGQgYmUgcGlja2VkIGZyb20gdGhlIGhhcmR3YXJlIG1hbnVhbCBvZiB0aGUgU29DCisgIGZvciB0aGUgc3BlY2lmaWVkIHBpbiBncm91cC4gVGhpcyBwcm9wZXJ0eSBpcyBvcHRpb25hbCBpbiB0aGUgY2hpbGQgbm9kZSBpZgorICBubyBzcGVjaWZpYyBmdW5jdGlvbiBzZWxlY3Rpb24gaXMgZGVzaXJlZCBmb3IgdGhlIHBpbnMgbGlzdGVkIGluIHRoZSBjaGlsZAorICBub2RlLiBUaGUgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eSBpcyB1c2VkIGFzLWlzIHRvIHByb2dyYW0gdGhlIHBpbi1jb250cm9sbGVyCisgIGZ1bmN0aW9uIHNlbGVjdG9yIHJlZ2lzdGVyIG9mIHRoZSBwaW4tYmFuay4KKworICBUaGUgY2hpbGQgbm9kZSBjYW4gYWxzbyBvcHRpb25hbGx5IHNwZWNpZnkgb25lIG9yIG1vcmUgb2YgdGhlIHBpbgorICBjb25maWd1cmF0aW9uIHRoYXQgc2hvdWxkIGJlIGFwcGxpZWQgb24gYWxsIHRoZSBwaW5zIGxpc3RlZCBpbiB0aGUKKyAgInNhbXN1bmcscGlucyIgcHJvcGVydHkgb2YgdGhlIGNoaWxkIG5vZGUuIFRoZSBmb2xsb3dpbmcgcGluIGNvbmZpZ3VyYXRpb24KKyAgcHJvcGVydGllcyBhcmUgc3VwcG9ydGVkLgorCisgIC0gc2Ftc3VuZyxwaW4tdmFsOiBJbml0aWFsIHZhbHVlIG9mIHBpbiBvdXRwdXQgYnVmZmVyLgorICAtIHNhbXN1bmcscGluLXB1ZDogUHVsbCB1cC9kb3duIGNvbmZpZ3VyYXRpb24uCisgIC0gc2Ftc3VuZyxwaW4tZHJ2OiBEcml2ZSBzdHJlbmd0aCBjb25maWd1cmF0aW9uLgorICAtIHNhbXN1bmcscGluLXB1ZC1wZG46IFB1bGwgdXAvZG93biBjb25maWd1cmF0aW9uIGluIHBvd2VyIGRvd24gbW9kZS4KKyAgLSBzYW1zdW5nLHBpbi1kcnYtcGRuOiBEcml2ZSBzdHJlbmd0aCBjb25maWd1cmF0aW9uIGluIHBvd2VyIGRvd24gbW9kZS4KKworICBUaGUgdmFsdWVzIHNwZWNpZmllZCBieSB0aGVzZSBjb25maWcgcHJvcGVydGllcyBzaG91bGQgYmUgZGVyaXZlZCBmcm9tIHRoZQorICBoYXJkd2FyZSBtYW51YWwgYW5kIHRoZXNlIHZhbHVlcyBhcmUgcHJvZ3JhbW1lZCBhcy1pcyBpbnRvIHRoZSBwaW4KKyAgcHVsbCB1cC9kb3duIGFuZCBkcml2ZXIgc3RyZW5ndGggcmVnaXN0ZXIgb2YgdGhlIHBpbi1jb250cm9sbGVyLgorCisgIE5vdGU6IEEgY2hpbGQgc2hvdWxkIGluY2x1ZGUgYXRsZWFzdCBhIHBpbiBmdW5jdGlvbiBzZWxlY3Rpb24gcHJvcGVydHkgb3IKKyAgcGluIGNvbmZpZ3VyYXRpb24gcHJvcGVydHkgKG9uZSBvciBtb3JlKSBvciBib3RoLgorCisgIFRoZSBjbGllbnQgbm9kZXMgdGhhdCByZXF1aXJlIGEgcGFydGljdWxhciBwaW4gZnVuY3Rpb24gc2VsZWN0aW9uIGFuZC9vcgorICBwaW4gY29uZmlndXJhdGlvbiBzaG91bGQgdXNlIHRoZSBiaW5kaW5ncyBsaXN0ZWQgaW4gdGhlICJwaW5jdHJsLWJpbmRpbmdzLnR4dCIKKyAgZmlsZS4KKworRXh0ZXJuYWwgR1BJTyBhbmQgV2FrZXVwIEludGVycnVwdHM6CisKK1RoZSBjb250cm9sbGVyIHN1cHBvcnRzIHR3byB0eXBlcyBvZiBleHRlcm5hbCBpbnRlcnJ1cHRzIG92ZXIgZ3Bpby4gVGhlIGZpcnN0CitpcyB0aGUgZXh0ZXJuYWwgZ3BpbyBpbnRlcnJ1cHQgYW5kIHNlY29uZCBpcyB0aGUgZXh0ZXJuYWwgd2FrZXVwIGludGVycnVwdHMuCitUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gaXMgdGhhdCB0aGUgZXh0ZXJuYWwgd2FrZXVwIGludGVycnVwdHMgY2FuIGJlCit1c2VkIGFzIHN5c3RlbSB3YWtldXAgZXZlbnRzLgorCitBLiBFeHRlcm5hbCBHUElPIEludGVycnVwdHM6IEZvciBzdXBwb3J0aW5nIGV4dGVybmFsIGdwaW8gaW50ZXJydXB0cywgdGhlCisgICBmb2xsb3dpbmcgcHJvcGVydGllcyBzaG91bGQgYmUgc3BlY2lmaWVkIGluIHRoZSBwaW4tY29udHJvbGxlciBkZXZpY2Ugbm9kZS4KKworICAgLSBpbnRlcnJ1cHQtcGFyZW50OiBwaGFuZGxlIG9mIHRoZSBpbnRlcnJ1cHQgcGFyZW50IHRvIHdoaWNoIHRoZSBleHRlcm5hbAorICAgICBHUElPIGludGVycnVwdHMgYXJlIGZvcndhcmRlZCB0by4KKyAgIC0gaW50ZXJydXB0czogaW50ZXJydXB0IHNwZWNpZmllciBmb3IgdGhlIGNvbnRyb2xsZXIuIFRoZSBmb3JtYXQgYW5kIHZhbHVlIG9mCisgICAgIHRoZSBpbnRlcnJ1cHQgc3BlY2lmaWVyIGRlcGVuZHMgb24gdGhlIGludGVycnVwdCBwYXJlbnQgZm9yIHRoZSBjb250cm9sbGVyLgorCisgICBJbiBhZGRpdGlvbiwgZm9sbG93aW5nIHByb3BlcnRpZXMgbXVzdCBiZSBwcmVzZW50IGluIG5vZGUgb2YgZXZlcnkgYmFuaworICAgb2YgcGlucyBzdXBwb3J0aW5nIEdQSU8gaW50ZXJydXB0czoKKworICAgLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogaWRlbnRpZmllcyB0aGUgY29udHJvbGxlciBub2RlIGFzIGludGVycnVwdC1wYXJlbnQuCisgICAtICNpbnRlcnJ1cHQtY2VsbHM6IHRoZSB2YWx1ZSBvZiB0aGlzIHByb3BlcnR5IHNob3VsZCBiZSAyLgorICAgICAtIEZpcnN0IENlbGw6IHJlcHJlc2VudHMgdGhlIGV4dGVybmFsIGdwaW8gaW50ZXJydXB0IG51bWJlciBsb2NhbCB0byB0aGUKKyAgICAgICBleHRlcm5hbCBncGlvIGludGVycnVwdCBzcGFjZSBvZiB0aGUgY29udHJvbGxlci4KKyAgICAgLSBTZWNvbmQgQ2VsbDogZmxhZ3MgdG8gaWRlbnRpZnkgdGhlIHR5cGUgb2YgdGhlIGludGVycnVwdAorICAgICAgIC0gMSA9IHJpc2luZyBlZGdlIHRyaWdnZXJlZAorICAgICAgIC0gMiA9IGZhbGxpbmcgZWRnZSB0cmlnZ2VyZWQKKyAgICAgICAtIDMgPSByaXNpbmcgYW5kIGZhbGxpbmcgZWRnZSB0cmlnZ2VyZWQKKyAgICAgICAtIDQgPSBoaWdoIGxldmVsIHRyaWdnZXJlZAorICAgICAgIC0gOCA9IGxvdyBsZXZlbCB0cmlnZ2VyZWQKKworQi4gRXh0ZXJuYWwgV2FrZXVwIEludGVycnVwdHM6IEZvciBzdXBwb3J0aW5nIGV4dGVybmFsIHdha2V1cCBpbnRlcnJ1cHRzLCBhCisgICBjaGlsZCBub2RlIHJlcHJlc2VudGluZyB0aGUgZXh0ZXJuYWwgd2FrZXVwIGludGVycnVwdCBjb250cm9sbGVyIHNob3VsZCBiZQorICAgaW5jbHVkZWQgaW4gdGhlIHBpbi1jb250cm9sbGVyIGRldmljZSBub2RlLiBUaGlzIGNoaWxkIG5vZGUgc2hvdWxkIGluY2x1ZGUKKyAgIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcy4KKworICAgLSBjb21wYXRpYmxlOiBpZGVudGlmaWVzIHRoZSB0eXBlIG9mIHRoZSBleHRlcm5hbCB3YWtldXAgaW50ZXJydXB0IGNvbnRyb2xsZXIKKyAgICAgVGhlIHBvc3NpYmxlIHZhbHVlcyBhcmU6CisgICAgIC0gc2Ftc3VuZyxzM2MyNDEwLXdha2V1cC1laW50OiByZXByZXNlbnRzIHdha2V1cCBpbnRlcnJ1cHQgY29udHJvbGxlcgorICAgICAgIGZvdW5kIG9uIFNhbXN1bmcgUzNDMjR4eCBTb0NzIGV4Y2VwdCBTM0MyNDEyIGFuZCBTM0MyNDEzLAorICAgICAtIHNhbXN1bmcsczNjMjQxMi13YWtldXAtZWludDogcmVwcmVzZW50cyB3YWtldXAgaW50ZXJydXB0IGNvbnRyb2xsZXIKKyAgICAgICBmb3VuZCBvbiBTYW1zdW5nIFMzQzI0MTIgYW5kIFMzQzI0MTMgU29DcywKKyAgICAgLSBzYW1zdW5nLHMzYzY0eHgtd2FrZXVwLWVpbnQ6IHJlcHJlc2VudHMgd2FrZXVwIGludGVycnVwdCBjb250cm9sbGVyCisgICAgICAgZm91bmQgb24gU2Ftc3VuZyBTM0M2NHh4IFNvQ3MsCisgICAgIC0gc2Ftc3VuZyxleHlub3M0MjEwLXdha2V1cC1laW50OiByZXByZXNlbnRzIHdha2V1cCBpbnRlcnJ1cHQgY29udHJvbGxlcgorICAgICAgIGZvdW5kIG9uIFNhbXN1bmcgRXh5bm9zNDIxMCBhbmQgUzVQQzExMC9TNVBWMjEwIFNvQ3MuCisgICAgIC0gc2Ftc3VuZyxleHlub3M3LXdha2V1cC1laW50OiByZXByZXNlbnRzIHdha2V1cCBpbnRlcnJ1cHQgY29udHJvbGxlcgorICAgICAgIGZvdW5kIG9uIFNhbXN1bmcgRXh5bm9zNyBTb0MuCisgICAtIGludGVycnVwdC1wYXJlbnQ6IHBoYW5kbGUgb2YgdGhlIGludGVycnVwdCBwYXJlbnQgdG8gd2hpY2ggdGhlIGV4dGVybmFsCisgICAgIHdha2V1cCBpbnRlcnJ1cHRzIGFyZSBmb3J3YXJkZWQgdG8uCisgICAtIGludGVycnVwdHM6IGludGVycnVwdCB1c2VkIGJ5IG11bHRpcGxleGVkIHdha2V1cCBpbnRlcnJ1cHRzLgorCisgICBJbiBhZGRpdGlvbiwgZm9sbG93aW5nIHByb3BlcnRpZXMgbXVzdCBiZSBwcmVzZW50IGluIG5vZGUgb2YgZXZlcnkgYmFuaworICAgb2YgcGlucyBzdXBwb3J0aW5nIHdha2UtdXAgaW50ZXJydXB0czoKKworICAgLSBpbnRlcnJ1cHQtY29udHJvbGxlcjogaWRlbnRpZmllcyB0aGUgbm9kZSBhcyBpbnRlcnJ1cHQtcGFyZW50LgorICAgLSAjaW50ZXJydXB0LWNlbGxzOiB0aGUgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUgMgorICAgICAtIEZpcnN0IENlbGw6IHJlcHJlc2VudHMgdGhlIGV4dGVybmFsIHdha2V1cCBpbnRlcnJ1cHQgbnVtYmVyIGxvY2FsIHRvCisgICAgICAgdGhlIGV4dGVybmFsIHdha2V1cCBpbnRlcnJ1cHQgc3BhY2Ugb2YgdGhlIGNvbnRyb2xsZXIuCisgICAgIC0gU2Vjb25kIENlbGw6IGZsYWdzIHRvIGlkZW50aWZ5IHRoZSB0eXBlIG9mIHRoZSBpbnRlcnJ1cHQKKyAgICAgICAtIDEgPSByaXNpbmcgZWRnZSB0cmlnZ2VyZWQKKyAgICAgICAtIDIgPSBmYWxsaW5nIGVkZ2UgdHJpZ2dlcmVkCisgICAgICAgLSAzID0gcmlzaW5nIGFuZCBmYWxsaW5nIGVkZ2UgdHJpZ2dlcmVkCisgICAgICAgLSA0ID0gaGlnaCBsZXZlbCB0cmlnZ2VyZWQKKyAgICAgICAtIDggPSBsb3cgbGV2ZWwgdHJpZ2dlcmVkCisKKyAgIE5vZGUgb2YgZXZlcnkgYmFuayBvZiBwaW5zIHN1cHBvcnRpbmcgZGlyZWN0IHdha2UtdXAgaW50ZXJydXB0cyAod2l0aG91dAorICAgbXVsdGlwbGV4aW5nKSBtdXN0IGNvbnRhaW4gZm9sbG93aW5nIHByb3BlcnRpZXM6CisKKyAgIC0gaW50ZXJydXB0LXBhcmVudDogcGhhbmRsZSBvZiB0aGUgaW50ZXJydXB0IHBhcmVudCB0byB3aGljaCB0aGUgZXh0ZXJuYWwKKyAgICAgd2FrZXVwIGludGVycnVwdHMgYXJlIGZvcndhcmRlZCB0by4KKyAgIC0gaW50ZXJydXB0czogaW50ZXJydXB0cyBvZiB0aGUgaW50ZXJydXB0IHBhcmVudCB3aGljaCBhcmUgdXNlZCBmb3IgZXh0ZXJuYWwKKyAgICAgd2FrZXVwIGludGVycnVwdHMgZnJvbSBwaW5zIG9mIHRoZSBiYW5rLCBtdXN0IGNvbnRhaW4gaW50ZXJydXB0cyBmb3IgYWxsCisgICAgIHBpbnMgb2YgdGhlIGJhbmsuCisKK0FsaWFzZXM6CisKK0FsbCB0aGUgcGluIGNvbnRyb2xsZXIgbm9kZXMgc2hvdWxkIGJlIHJlcHJlc2VudGVkIGluIHRoZSBhbGlhc2VzIG5vZGUgdXNpbmcKK3RoZSBmb2xsb3dpbmcgZm9ybWF0ICdwaW5jdHJse259JyB3aGVyZSBuIGlzIGEgdW5pcXVlIG51bWJlciBmb3IgdGhlIGFsaWFzLgorCitBbGlhc2VzIGZvciBjb250cm9sbGVycyBjb21wYXRpYmxlIHdpdGggInNhbXN1bmcsZXh5bm9zNy1waW5jdHJsIjoKKy0gcGluY3RybDA6IHBpbiBjb250cm9sbGVyIG9mIEFMSVZFIGJsb2NrLAorLSBwaW5jdHJsMTogcGluIGNvbnRyb2xsZXIgb2YgQlVTMCBibG9jaywKKy0gcGluY3RybDI6IHBpbiBjb250cm9sbGVyIG9mIE5GQyBibG9jaywKKy0gcGluY3RybDM6IHBpbiBjb250cm9sbGVyIG9mIFRPVUNIIGJsb2NrLAorLSBwaW5jdHJsNDogcGluIGNvbnRyb2xsZXIgb2YgRkYgYmxvY2ssCistIHBpbmN0cmw1OiBwaW4gY29udHJvbGxlciBvZiBFU0UgYmxvY2ssCistIHBpbmN0cmw2OiBwaW4gY29udHJvbGxlciBvZiBGU1lTMCBibG9jaywKKy0gcGluY3RybDc6IHBpbiBjb250cm9sbGVyIG9mIEZTWVMxIGJsb2NrLAorLSBwaW5jdHJsODogcGluIGNvbnRyb2xsZXIgb2YgQlVTMSBibG9jaywKKy0gcGluY3RybDk6IHBpbiBjb250cm9sbGVyIG9mIEFVRElPIGJsb2NrLAorCitFeGFtcGxlOiBBIHBpbi1jb250cm9sbGVyIG5vZGUgd2l0aCBwaW4gYmFua3M6CisKKwlwaW5jdHJsXzA6IHBpbmN0cmxAMTE0MDAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNDIxMC1waW5jdHJsIjsKKwkJcmVnID0gPDB4MTE0MDAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDQ3IDA+OworCisJCS8qIC4uLiAqLworCisJCS8qIFBpbiBiYW5rIHdpdGhvdXQgZXh0ZXJuYWwgaW50ZXJydXB0cyAqLworCQlncHkwOiBncHkwIHsKKwkJCWdwaW8tY29udHJvbGxlcjsKKwkJCSNncGlvLWNlbGxzID0gPDI+OworCQl9OworCisJCS8qIC4uLiAqLworCisJCS8qIFBpbiBiYW5rIHdpdGggZXh0ZXJuYWwgR1BJTyBvciBtdXhlZCB3YWtlLXVwIGludGVycnVwdHMgKi8KKwkJZ3BqMDogZ3BqMCB7CisJCQlncGlvLWNvbnRyb2xsZXI7CisJCQkjZ3Bpby1jZWxscyA9IDwyPjsKKworCQkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCQkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCQl9OworCisJCS8qIC4uLiAqLworCisJCS8qIFBpbiBiYW5rIHdpdGggZXh0ZXJuYWwgZGlyZWN0IHdha2UtdXAgaW50ZXJydXB0cyAqLworCQlncHgwOiBncHgwIHsKKwkJCWdwaW8tY29udHJvbGxlcjsKKwkJCSNncGlvLWNlbGxzID0gPDI+OworCisJCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJCWludGVycnVwdC1wYXJlbnQgPSA8JmdpYz47CisJCQlpbnRlcnJ1cHRzID0gPDAgMTYgMD4sIDwwIDE3IDA+LCA8MCAxOCAwPiwgPDAgMTkgMD4sCisJCQkJICAgICA8MCAyMCAwPiwgPDAgMjEgMD4sIDwwIDIyIDA+LCA8MCAyMyAwPjsKKwkJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJCX07CisKKwkJLyogLi4uICovCisJfTsKKworRXhhbXBsZSAxOiBBIHBpbi1jb250cm9sbGVyIG5vZGUgd2l0aCBwaW4gZ3JvdXBzLgorCisJcGluY3RybF8wOiBwaW5jdHJsQDExNDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczQyMTAtcGluY3RybCI7CisJCXJlZyA9IDwweDExNDAwMDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MCA0NyAwPjsKKworCQkvKiAuLi4gKi8KKworCQl1YXJ0MF9kYXRhOiB1YXJ0MC1kYXRhIHsKKwkJCXNhbXN1bmcscGlucyA9ICJncGEwLTAiLCAiZ3BhMC0xIjsKKwkJCXNhbXN1bmcscGluLWZ1bmN0aW9uID0gPDI+OworCQkJc2Ftc3VuZyxwaW4tcHVkID0gPDA+OworCQkJc2Ftc3VuZyxwaW4tZHJ2ID0gPDA+OworCQl9OworCisJCXVhcnQwX2ZjdGw6IHVhcnQwLWZjdGwgeworCQkJc2Ftc3VuZyxwaW5zID0gImdwYTAtMiIsICJncGEwLTMiOworCQkJc2Ftc3VuZyxwaW4tZnVuY3Rpb24gPSA8Mj47CisJCQlzYW1zdW5nLHBpbi1wdWQgPSA8MD47CisJCQlzYW1zdW5nLHBpbi1kcnYgPSA8MD47CisJCX07CisKKwkJdWFydDFfZGF0YTogdWFydDEtZGF0YSB7CisJCQlzYW1zdW5nLHBpbnMgPSAiZ3BhMC00IiwgImdwYTAtNSI7CisJCQlzYW1zdW5nLHBpbi1mdW5jdGlvbiA9IDwyPjsKKwkJCXNhbXN1bmcscGluLXB1ZCA9IDwwPjsKKwkJCXNhbXN1bmcscGluLWRydiA9IDwwPjsKKwkJfTsKKworCQl1YXJ0MV9mY3RsOiB1YXJ0MS1mY3RsIHsKKwkJCXNhbXN1bmcscGlucyA9ICJncGEwLTYiLCAiZ3BhMC03IjsKKwkJCXNhbXN1bmcscGluLWZ1bmN0aW9uID0gPDI+OworCQkJc2Ftc3VuZyxwaW4tcHVkID0gPDA+OworCQkJc2Ftc3VuZyxwaW4tZHJ2ID0gPDA+OworCQl9OworCisJCWkyYzJfYnVzOiBpMmMyLWJ1cyB7CisJCQlzYW1zdW5nLHBpbnMgPSAiZ3BhMC02IiwgImdwYTAtNyI7CisJCQlzYW1zdW5nLHBpbi1mdW5jdGlvbiA9IDwzPjsKKwkJCXNhbXN1bmcscGluLXB1ZCA9IDwzPjsKKwkJCXNhbXN1bmcscGluLWRydiA9IDwwPjsKKwkJfTsKKworCQlzZDRfYnVzODogc2Q0LWJ1cy13aWR0aDggeworCQkJcGFydC0xIHsKKwkJCQlzYW1zdW5nLHBpbnMgPSAiZ3BrMC0zIiwgImdwazAtNCIsCisJCQkJCQkiZ3BrMC01IiwgImdwazAtNiI7CisJCQkJc2Ftc3VuZyxwaW4tZnVuY3Rpb24gPSA8Mz47CisJCQkJc2Ftc3VuZyxwaW4tcHVkID0gPDM+OworCQkJCXNhbXN1bmcscGluLWRydiA9IDwzPjsKKwkJCX07CisJCQlwYXJ0LTIgeworCQkJCXNhbXN1bmcscGlucyA9ICJncGsxLTMiLCAiZ3BrMS00IiwKKwkJCQkJCSJncGsxLTUiLCAiZ3BrMS02IjsKKwkJCQlzYW1zdW5nLHBpbi1mdW5jdGlvbiA9IDw0PjsKKwkJCQlzYW1zdW5nLHBpbi1wdWQgPSA8ND47CisJCQkJc2Ftc3VuZyxwaW4tZHJ2ID0gPDM+OworCQkJfTsKKwkJfTsKKwl9OworCitFeGFtcGxlIDI6IEEgcGluLWNvbnRyb2xsZXIgbm9kZSB3aXRoIGV4dGVybmFsIHdha2V1cCBpbnRlcnJ1cHQgY29udHJvbGxlciBub2RlLgorCisJcGluY3RybF8xOiBwaW5jdHJsQDExMDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczQyMTAtcGluY3RybCI7CisJCXJlZyA9IDwweDExMDAwMDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MCA0NiAwPgorCisJCS8qIC4uLiAqLworCisJCXdha2V1cC1pbnRlcnJ1cHQtY29udHJvbGxlciB7CisJCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNDIxMC13YWtldXAtZWludCI7CisJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZnaWM+OworCQkJaW50ZXJydXB0cyA9IDwwIDMyIDA+OworCQl9OworCX07CisKK0V4YW1wbGUgMzogQSB1YXJ0IGNsaWVudCBub2RlIHRoYXQgc3VwcG9ydHMgJ2RlZmF1bHQnIGFuZCAnZmxvdy1jb250cm9sJyBzdGF0ZXMuCisKKwl1YXJ0QDEzODAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczQyMTAtdWFydCI7CisJCXJlZyA9IDwweDEzODAwMDAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDUyIDA+OworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiLCAiZmxvdy1jb250cm9sOworCQlwaW5jdHJsLTAgPSA8JnVhcnQwX2RhdGE+OworCQlwaW5jdHJsLTEgPSA8JnVhcnQwX2RhdGEgJnVhcnQwX2ZjdGw+OworCX07CisKK0V4YW1wbGUgNDogU2V0IHVwIHRoZSBkZWZhdWx0IHBpbiBzdGF0ZSBmb3IgdWFydCBjb250cm9sbGVyLgorCisJc3RhdGljIGludCBzM2MyNHh4X3NlcmlhbF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KSB7CisJCXN0cnVjdCBwaW5jdHJsICpwaW5jdHJsOworCisJCS8qIC4uLiAqLworCisJCXBpbmN0cmwgPSBkZXZtX3BpbmN0cmxfZ2V0X3NlbGVjdF9kZWZhdWx0KCZwZGV2LT5kZXYpOworCX0KKworRXhhbXBsZSA1OiBBIGRpc3BsYXkgcG9ydCBjbGllbnQgbm9kZSB0aGF0IHN1cHBvcnRzICdkZWZhdWx0JyBwaW5jdHJsIHN0YXRlCisJICAgYW5kIGdwaW8gYmluZGluZy4KKworCWRpc3BsYXktcG9ydC1jb250cm9sbGVyIHsKKwkJLyogLi4uICovCisKKwkJc2Ftc3VuZyxocGQtZ3BpbyA9IDwmZ3B4MiA2IDA+OworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JmRwX2hwZD47CisJfTsKKworRXhhbXBsZSA2OiBSZXF1ZXN0IHRoZSBncGlvIGZvciBkaXNwbGF5IHBvcnQgY29udHJvbGxlcgorCisJc3RhdGljIGludCBleHlub3NfZHBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKKwl7CisJCWludCBocGRfZ3BpbywgcmV0OworCQlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2OworCQlzdHJ1Y3QgZGV2aWNlX25vZGUgKmRwX25vZGUgPSBkZXYtPm9mX25vZGU7CisKKwkJLyogLi4uICovCisKKwkJaHBkX2dwaW8gPSBvZl9nZXRfbmFtZWRfZ3BpbyhkcF9ub2RlLCAic2Ftc3VuZyxocGQtZ3BpbyIsIDApOworCisJCS8qIC4uLiAqLworCisJCXJldCA9IGRldm1fZ3Bpb19yZXF1ZXN0X29uZSgmcGRldi0+ZGV2LCBocGRfZ3BpbywgR1BJT0ZfSU4sCisJCQkJCSAgICAiaHBkX2dwaW8iKTsKKwkJLyogLi4uICovCisJfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvc3RlLGFieDUwMC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9zdGUsYWJ4NTAwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzY5NzQyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvc3RlLGFieDUwMC50eHQKQEAgLTAsMCArMSwzMTggQEAKK1NUIEVyaWNzc29uIGFieDUwMCBwaW5tdXggY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAic3Rlcmljc3NvbixhYjg1MDAtZ3BpbyIsICAic3Rlcmljc3NvbixhYjg1NDAtZ3BpbyIsCisJICAgICAgInN0ZXJpY3Nzb24sYWI4NTA1LWdwaW8iLCAic3Rlcmljc3NvbixhYjk1NDAtZ3BpbyIsCisKK1BsZWFzZSByZWZlciB0byBwaW5jdHJsLWJpbmRpbmdzLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgZGV0YWlscyBvZiB0aGUKK2NvbW1vbiBwaW5jdHJsIGJpbmRpbmdzIHVzZWQgYnkgY2xpZW50IGRldmljZXMsIGluY2x1ZGluZyB0aGUgbWVhbmluZyBvZiB0aGUKK3BocmFzZSAicGluIGNvbmZpZ3VyYXRpb24gbm9kZSIuCisKK1NUIEVyaWNzc29uJ3MgcGluIGNvbmZpZ3VyYXRpb24gbm9kZXMgdXNlIHRoZSBnZW5lcmljIHBpbiBtdWx0aXBsZXhpbmcKK2FuZCBwaW4gY29uZmlndXJhdGlvbiBiaW5kaW5ncywgc2VlIHBpbmN0cmwtYmluZGluZ3MudHh0CisKK0V4YW1wbGUgYm9hcmQgZmlsZSBleHRyYWN0OgorCismcGluY3RybF9hYng1MDAgeworCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJcGluY3RybC0wID0gPCZzeXNjbGtyZXEyX2RlZmF1bHRfbW9kZT4sIDwmc3lzY2xrcmVxM19kZWZhdWx0X21vZGU+LCA8JmdwaW8zX2RlZmF1bHRfbW9kZT4sIDwmc3lzY2xrcmVxNl9kZWZhdWx0X21vZGU+LCA8JnB3bW91dDFfZGVmYXVsdF9tb2RlPiwgPCZwd21vdXQyX2RlZmF1bHRfbW9kZT4sIDwmcHdtb3V0M19kZWZhdWx0X21vZGU+LCA8JmFkaTFfZGVmYXVsdF9tb2RlPiwgPCZkbWljMTJfZGVmYXVsdF9tb2RlPiwgPCZkbWljMzRfZGVmYXVsdF9tb2RlPiwgPCZkbWljNTZfZGVmYXVsdF9tb2RlPiwgPCZzeXNjbGtyZXE1X2RlZmF1bHRfbW9kZT4sIDwmYmF0cmVtbl9kZWZhdWx0X21vZGU+LCA8JnNlcnZpY2VfZGVmYXVsdF9tb2RlPiwgPCZwd3JjdHJsMF9kZWZhdWx0X21vZGU+LCA8JnB3cmN0cmwxX2RlZmF1bHRfbW9kZT4sIDwmcHdtZXh0dmlicmExX2RlZmF1bHRfbW9kZT4sIDwmcHdtZXh0dmlicmEyX2RlZmF1bHRfbW9kZT4sIDwmZ3BpbzUxX2RlZmF1bHRfbW9kZT4sIDwmZ3BpbzUyX2RlZmF1bHRfbW9kZT4sIDwmZ3BpbzUzX2RlZmF1bHRfbW9kZT4sIDwmZ3BpbzU0X2RlZmF1bHRfbW9kZT4sIDwmcGRtY2xrZGF0X2RlZmF1bHRfbW9kZT47CisKKwlzeXNjbGtyZXEyIHsKKwkJc3lzY2xrcmVxMl9kZWZhdWx0X21vZGU6IHN5c2Nsa3JlcTJfZGVmYXVsdCB7CisJCQlkZWZhdWx0X211eCB7CisJCQkJZnVuY3Rpb24gPSAic3lzY2xrcmVxIjsKKwkJCQlncm91cHMgPSAic3lzY2xrcmVxMl9kXzEiOworCQkJfTsKKwkJCWRlZmF1bHRfY2ZnIHsKKwkJCQlwaW5zID0gIkdQSU8xIjsKKwkJCQliaWFzLWRpc2FibGU7CisJCQl9OworCQl9OworCX07CisJc3lzY2xrcmVxMyB7CisJCXN5c2Nsa3JlcTNfZGVmYXVsdF9tb2RlOiBzeXNjbGtyZXEzX2RlZmF1bHQgeworCQkJZGVmYXVsdF9tdXggeworCQkJCWZ1bmN0aW9uID0gInN5c2Nsa3JlcSI7CisJCQkJZ3JvdXBzID0gInN5c2Nsa3JlcTNfZF8xIjsKKwkJCX07CisJCQlkZWZhdWx0X2NmZyB7CisJCQkJcGlucyA9ICJHUElPMiI7CisJCQkJb3V0cHV0LWxvdzsKKwkJCX07CisJCX07CisJfTsKKwlncGlvMyB7CisJCWdwaW8zX2RlZmF1bHRfbW9kZTogZ3BpbzNfZGVmYXVsdCB7CisJCQlkZWZhdWx0X211eCB7CisJCQkJZnVuY3Rpb24gPSAiZ3BpbyI7CisJCQkJZ3JvdXBzID0gImdwaW8zX2FfMSI7CisJCQl9OworCQkJZGVmYXVsdF9jZmcgeworCQkJCXBpbnMgPSAiR1BJTzMiOworCQkJCW91dHB1dC1sb3c7CisJCQl9OworCQl9OworCX07CisJc3lzY2xrcmVxNiB7CisJCXN5c2Nsa3JlcTZfZGVmYXVsdF9tb2RlOiBzeXNjbGtyZXE2X2RlZmF1bHQgeworCQkJZGVmYXVsdF9tdXggeworCQkJCWZ1bmN0aW9uID0gInN5c2Nsa3JlcSI7CisJCQkJZ3JvdXBzID0gInN5c2Nsa3JlcTZfZF8xIjsKKwkJCX07CisJCQlkZWZhdWx0X2NmZyB7CisJCQkJcGlucyA9ICJHUElPNCI7CisJCQkJYmlhcy1kaXNhYmxlOworCQkJfTsKKwkJfTsKKwl9OworCXB3bW91dDEgeworCQlwd21vdXQxX2RlZmF1bHRfbW9kZTogcHdtb3V0MV9kZWZhdWx0IHsKKwkJCWRlZmF1bHRfbXV4IHsKKwkJCQlmdW5jdGlvbiA9ICJwd21vdXQiOworCQkJCWdyb3VwcyA9ICJwd21vdXQxX2RfMSI7CisJCQl9OworCQkJZGVmYXVsdF9jZmcgeworCQkJCXBpbnMgPSAiR1BJTzE0IjsKKwkJCQlvdXRwdXQtbG93OworCQkJfTsKKwkJfTsKKwl9OworCXB3bW91dDIgeworCQlwd21vdXQyX2RlZmF1bHRfbW9kZTogcHdtb3V0Ml9kZWZhdWx0IHsKKwkJCXB3bW91dDJfZGVmYXVsdF9tdXggeworCQkJCWZ1bmN0aW9uID0gInB3bW91dCI7CisJCQkJZ3JvdXBzID0gInB3bW91dDJfZF8xIjsKKwkJCX07CisJCQlwd21vdXQyX2RlZmF1bHRfY2ZnIHsKKwkJCQlwaW5zID0gIkdQSU8xNSI7CisJCQkJb3V0cHV0LWxvdzsKKwkJCX07CisJCX07CisJfTsKKwlwd21vdXQzIHsKKwkJcHdtb3V0M19kZWZhdWx0X21vZGU6IHB3bW91dDNfZGVmYXVsdCB7CisJCQlwd21vdXQzX2RlZmF1bHRfbXV4IHsKKwkJCQlmdW5jdGlvbiA9ICJwd21vdXQiOworCQkJCWdyb3VwcyA9ICJwd21vdXQzX2RfMSI7CisJCQl9OworCQkJcHdtb3V0M19kZWZhdWx0X2NmZyB7CisJCQkJcGlucyA9ICJHUElPMTYiOworCQkJCW91dHB1dC1sb3c7CisJCQl9OworCQl9OworCX07CisJYWRpMSB7CisKKwkJYWRpMV9kZWZhdWx0X21vZGU6IGFkaTFfZGVmYXVsdCB7CisJCQlhZGkxX2RlZmF1bHRfbXV4IHsKKwkJCQlmdW5jdGlvbiA9ICJhZGkxIjsKKwkJCQlncm91cHMgPSAiYWRpMV9kXzEiOworCQkJfTsKKwkJCWFkaTFfZGVmYXVsdF9jZmcxIHsKKwkJCQlwaW5zID0gIkdQSU8xNyIsIkdQSU8xOSIsIkdQSU8yMCI7CisJCQkJYmlhcy1kaXNhYmxlOworCQkJfTsKKwkJCWFkaTFfZGVmYXVsdF9jZmcyIHsKKwkJCQlwaW5zID0gIkdQSU8xOCI7CisJCQkJb3V0cHV0LWxvdzsKKwkJCX07CisJCX07CisJfTsKKwlkbWljMTIgeworCQlkbWljMTJfZGVmYXVsdF9tb2RlOiBkbWljMTJfZGVmYXVsdCB7CisJCQlkbWljMTJfZGVmYXVsdF9tdXggeworCQkJCWZ1bmN0aW9uID0gImRtaWMiOworCQkJCWdyb3VwcyA9ICJkbWljMTJfZF8xIjsKKwkJCX07CisJCQlkbWljMTJfZGVmYXVsdF9jZmcxIHsKKwkJCQlwaW5zID0gIkdQSU8yNyI7CisJCQkJb3V0cHV0LWxvdzsKKwkJCX07CisJCQlkbWljMTJfZGVmYXVsdF9jZmcyIHsKKwkJCQlwaW5zID0gIkdQSU8yOCI7CisJCQkJYmlhcy1kaXNhYmxlOworCQkJfTsKKwkJfTsKKwl9OworCWRtaWMzNCB7CisJCWRtaWMzNF9kZWZhdWx0X21vZGU6IGRtaWMzNF9kZWZhdWx0IHsKKwkJCWRtaWMzNF9kZWZhdWx0X211eCB7CisJCQkJZnVuY3Rpb24gPSAiZG1pYyI7CisJCQkJZ3JvdXBzID0gImRtaWMzNF9kXzEiOworCQkJfTsKKwkJCWRtaWMzNF9kZWZhdWx0X2NmZzEgeworCQkJCXBpbnMgPSAiR1BJTzI5IjsKKwkJCQlvdXRwdXQtbG93OworCQkJfTsKKwkJCWRtaWMzNF9kZWZhdWx0X2NmZzIgeworCQkJCXBpbnMgPSAiR1BJTzMwIjsKKwkJCQliaWFzLWRpc2FibGU7eworCisJCQl9OworCQl9OworCX07CisJZG1pYzU2IHsKKwkJZG1pYzU2X2RlZmF1bHRfbW9kZTogZG1pYzU2X2RlZmF1bHQgeworCQkJZG1pYzU2X2RlZmF1bHRfbXV4IHsKKwkJCQlmdW5jdGlvbiA9ICJkbWljIjsKKwkJCQlncm91cHMgPSAiZG1pYzU2X2RfMSI7CisJCQl9OworCQkJZG1pYzU2X2RlZmF1bHRfY2ZnMSB7CisJCQkJcGlucyA9ICJHUElPMzEiOworCQkJCW91dHB1dC1sb3c7CisJCQl9OworCQkJZG1pYzU2X2RlZmF1bHRfY2ZnMiB7CisJCQkJcGlucyA9ICJHUElPMzIiOworCQkJCWJpYXMtZGlzYWJsZTsKKwkJCX07CisJCX07CisJfTsKKwlzeXNjbGtyZXE1IHsKKwkJc3lzY2xrcmVxNV9kZWZhdWx0X21vZGU6IHN5c2Nsa3JlcTVfZGVmYXVsdCB7CisJCQlzeXNjbGtyZXE1X2RlZmF1bHRfbXV4IHsKKwkJCQlmdW5jdGlvbiA9ICJzeXNjbGtyZXEiOworCQkJCWdyb3VwcyA9ICJzeXNjbGtyZXE1X2RfMSI7CisJCQl9OworCQkJc3lzY2xrcmVxNV9kZWZhdWx0X2NmZyB7CisJCQkJcGlucyA9ICJHUElPNDIiOworCQkJCW91dHB1dC1sb3c7CisJCQl9OworCQl9OworCX07CisJYmF0cmVtbiB7CisJCWJhdHJlbW5fZGVmYXVsdF9tb2RlOiBiYXRyZW1uX2RlZmF1bHQgeworCQkJYmF0cmVtbl9kZWZhdWx0X211eCB7CisJCQkJZnVuY3Rpb24gPSAiYmF0cmVtbiI7CisJCQkJZ3JvdXBzID0gImJhdHJlbW5fZF8xIjsKKwkJCX07CisJCQliYXRyZW1uX2RlZmF1bHRfY2ZnIHsKKwkJCQlwaW5zID0gIkdQSU80MyI7CisJCQkJYmlhcy1kaXNhYmxlOworCQkJfTsKKwkJfTsKKwl9OworCXNlcnZpY2UgeworCQlzZXJ2aWNlX2RlZmF1bHRfbW9kZTogc2VydmljZV9kZWZhdWx0IHsKKwkJCXNlcnZpY2VfZGVmYXVsdF9tdXggeworCQkJCWZ1bmN0aW9uID0gInNlcnZpY2UiOworCQkJCWdyb3VwcyA9ICJzZXJ2aWNlX2RfMSI7CisJCQl9OworCQkJc2VydmljZV9kZWZhdWx0X2NmZyB7CisJCQkJcGlucyA9ICJHUElPNDQiOworCQkJCWJpYXMtZGlzYWJsZTsKKwkJCX07CisJCX07CisJfTsKKwlwd3JjdHJsMCB7CisJCXB3cmN0cmwwX2RlZmF1bHRfbXV4OiBwd3JjdHJsMF9tdXggeworCQkJcHdyY3RybDBfZGVmYXVsdF9tdXggeworCQkJCWZ1bmN0aW9uID0gInB3cmN0cmwiOworCQkJCWdyb3VwcyA9ICJwd3JjdHJsMF9kXzEiOworCQkJfTsKKwkJfTsKKwkJcHdyY3RybDBfZGVmYXVsdF9tb2RlOiBwd3JjdHJsMF9kZWZhdWx0IHsKKwkJCXB3cmN0cmwwX2RlZmF1bHRfY2ZnIHsKKwkJCQlwaW5zID0gIkdQSU80NSI7CisJCQkJYmlhcy1kaXNhYmxlOworCQkJfTsKKwkJfTsKKwl9OworCXB3cmN0cmwxIHsKKwkJcHdyY3RybDFfZGVmYXVsdF9tdXg6IHB3cmN0cmwxX211eCB7CisJCQlwd3JjdHJsMV9kZWZhdWx0X211eCB7CisJCQkJZnVuY3Rpb24gPSAicHdyY3RybCI7CisJCQkJZ3JvdXBzID0gInB3cmN0cmwxX2RfMSI7CisJCQl9OworCQl9OworCQlwd3JjdHJsMV9kZWZhdWx0X21vZGU6IHB3cmN0cmwxX2RlZmF1bHQgeworCQkJcHdyY3RybDFfZGVmYXVsdF9jZmcgeworCQkJCXBpbnMgPSAiR1BJTzQ2IjsKKwkJCQliaWFzLWRpc2FibGU7CisJCQl9OworCQl9OworCX07CisJcHdtZXh0dmlicmExIHsKKwkJcHdtZXh0dmlicmExX2RlZmF1bHRfbW9kZTogcHdtZXh0dmlicmExX2RlZmF1bHQgeworCQkJcHdtZXh0dmlicmExX2RlZmF1bHRfbXV4IHsKKwkJCQlmdW5jdGlvbiA9ICJwd21leHR2aWJyYSI7CisJCQkJZ3JvdXBzID0gInB3bWV4dHZpYnJhMV9kXzEiOworCQkJfTsKKwkJCXB3bWV4dHZpYnJhMV9kZWZhdWx0X2NmZyB7CisJCQkJcGlucyA9ICJHUElPNDciOworCQkJCWJpYXMtZGlzYWJsZTsKKwkJCX07CisJCX07CisJfTsKKwlwd21leHR2aWJyYTIgeworCQlwd21leHR2aWJyYTJfZGVmYXVsdF9tb2RlOiBwd21leHR2aWJyYTJfZGVmYXVsdCB7CisJCQlwd21leHR2aWJyYTJfZGVmYXVsdF9tdXggeworCQkJCWZ1bmN0aW9uID0gInB3bWV4dHZpYnJhIjsKKwkJCQlncm91cHMgPSAicHdtZXh0dmlicmEyX2RfMSI7CisJCQl9OworCQkJcHdtZXh0dmlicmExX2RlZmF1bHRfY2ZnIHsKKwkJCQlwaW5zID0gIkdQSU80OCI7CisJCQkJYmlhcy1kaXNhYmxlOworCQkJfTsKKwkJfTsKKwl9OworCWdwaW81MSB7CisJCWdwaW81MV9kZWZhdWx0X21vZGU6IGdwaW81MV9kZWZhdWx0IHsKKwkJCQlncGlvNTFfZGVmYXVsdF9tdXggeworCQkJCWZ1bmN0aW9uID0gImdwaW8iOworCQkJCWdyb3VwcyA9ICJncGlvNTFfYV8xIjsKKwkJCX07CisJCQlncGlvNTFfZGVmYXVsdF9jZmcgeworCQkJCXBpbnMgPSAiR1BJTzUxIjsKKwkJCQlvdXRwdXQtbG93OworCQkJfTsKKwkJfTsKKwl9OworCWdwaW81MiB7CisJCWdwaW81Ml9kZWZhdWx0X21vZGU6IGdwaW81Ml9kZWZhdWx0IHsKKwkJCWdwaW81Ml9kZWZhdWx0X211eCB7CisJCQkJZnVuY3Rpb24gPSAiZ3BpbyI7CisJCQkJZ3JvdXBzID0gImdwaW81Ml9hXzEiOworCQkJfTsKKwkJCWdwaW81Ml9kZWZhdWx0X2NmZyB7CisJCQkJcGlucyA9ICJHUElPNTIiOworCQkJCWJpYXMtcHVsbC1kb3duOworCQkJfTsKKwkJfTsKKwl9OworCWdwaW81MyB7CisJCWdwaW81M19kZWZhdWx0X21vZGU6IGdwaW81M19kZWZhdWx0IHsKKwkJCWdwaW81M19kZWZhdWx0X211eCB7CisJCQkJZnVuY3Rpb24gPSAiZ3BpbyI7CisJCQkJZ3JvdXBzID0gImdwaW81M19hXzEiOworCQkJfTsKKwkJCWdwaW81M19kZWZhdWx0X2NmZyB7CisJCQkJcGlucyA9ICJHUElPNTMiOworCQkJCWJpYXMtcHVsbC1kb3duOworCQkJfTsKKwkJfTsKKwl9OworCWdwaW81NCB7CisJCWdwaW81NF9kZWZhdWx0X21vZGU6IGdwaW81NF9kZWZhdWx0IHsKKwkJCWdwaW81NF9kZWZhdWx0X211eCB7CisJCQkJZnVuY3Rpb24gPSAiZ3BpbyI7CisJCQkJZ3JvdXBzID0gImdwaW81NF9hXzEiOworCQkJfTsKKwkJCWdwaW81NF9kZWZhdWx0X2NmZyB7CisJCQkJcGlucyA9ICJHUElPNTQiOworCQkJCW91dHB1dC1sb3c7CisJCQl9OworCQl9OworCX07CisJcGRtY2xrZGF0IHsKKwkJcGRtY2xrZGF0X2RlZmF1bHRfbW9kZTogcGRtY2xrZGF0X2RlZmF1bHQgeworCQkJcGRtY2xrZGF0X2RlZmF1bHRfbXV4IHsKKwkJCQlmdW5jdGlvbiA9ICJwZG0iOworCQkJCWdyb3VwcyA9ICJwZG1jbGtkYXRfZF8xIjsKKwkJCX07CisJCQlwZG1jbGtkYXRfZGVmYXVsdF9jZmcgeworCQkJCXBpbnMgPSAiR1BJTzU1IiwgIkdQSU81NiI7CisJCQkJYmlhcy1kaXNhYmxlOworCQkJfTsKKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3N0ZSxub21hZGlrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3N0ZSxub21hZGlrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjEzODAyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvc3RlLG5vbWFkaWsudHh0CkBAIC0wLDAgKzEsMTQ4IEBACitTVCBFcmljc3NvbiBOb21hZGlrIHBpbm11eCBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJzdGVyaWNzc29uLGRiODUwMC1waW5jdHJsIiwgInN0ZXJpY3Nzb24sZGI4NTQwLXBpbmN0cmwiLAorICAgICAgICAgICAgICAic3Rlcmljc3NvbixzdG44ODE1LXBpbmN0cmwiCistIG5vbWFkaWstZ3Bpby1jaGlwczogYXJyYXkgb2YgcGhhbmRsZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgR1BJTyBjaGlwcworICAgICAgICAgICAgICAodGhlc2UgaGF2ZSB0aGUgcmVnaXN0ZXIgcmFuZ2VzIHVzZWQgYnkgdGhlIHBpbiBjb250cm9sbGVyKS4KKy0gcHJjbTogcGhhbmRsZSB0byB0aGUgUFJDTVUgbWFuYWdpbmcgdGhlIGJhY2sgZW5kIG9mIHRoaXMgcGluIGNvbnRyb2xsZXIKKworUGxlYXNlIHJlZmVyIHRvIHBpbmN0cmwtYmluZGluZ3MudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBkZXRhaWxzIG9mIHRoZQorY29tbW9uIHBpbmN0cmwgYmluZGluZ3MgdXNlZCBieSBjbGllbnQgZGV2aWNlcywgaW5jbHVkaW5nIHRoZSBtZWFuaW5nIG9mIHRoZQorcGhyYXNlICJwaW4gY29uZmlndXJhdGlvbiBub2RlIi4KKworU1QgRXJpY3Nzb24ncyBwaW4gY29uZmlndXJhdGlvbiBub2RlcyBhY3QgYXMgYSBjb250YWluZXIgZm9yIGFuIGFyYml0cmFyeSBudW1iZXIgb2YKK3N1Ym5vZGVzLiBFYWNoIG9mIHRoZXNlIHN1Ym5vZGVzIHJlcHJlc2VudHMgc29tZSBkZXNpcmVkIGNvbmZpZ3VyYXRpb24gZm9yIGEKK3BpbiwgYSBncm91cCwgb3IgYSBsaXN0IG9mIHBpbnMgb3IgZ3JvdXBzLiBUaGlzIGNvbmZpZ3VyYXRpb24gY2FuIGluY2x1ZGUgdGhlCittdXggZnVuY3Rpb24gdG8gc2VsZWN0IG9uIHRob3NlIHBpbihzKS9ncm91cChzKSwgYW5kIHZhcmlvdXMgcGluIGNvbmZpZ3VyYXRpb24KK3BhcmFtZXRlcnMsIHN1Y2ggYXMgaW5wdXQsIG91dHB1dCwgcHVsbCB1cCwgcHVsbCBkb3duLi4uCisKK1RoZSBuYW1lIG9mIGVhY2ggc3Vibm9kZSBpcyBub3QgaW1wb3J0YW50OyBhbGwgc3Vibm9kZXMgc2hvdWxkIGJlIGVudW1lcmF0ZWQKK2FuZCBwcm9jZXNzZWQgcHVyZWx5IGJhc2VkIG9uIHRoZWlyIGNvbnRlbnQuIFRoZSBzdWJub2RlcyB1c2UgdGhlIGdlbmVyaWMKK3BpbiBtdWx0aXBsZXhpbmcgbm9kZSBsYXlvdXQgZnJvbSB0aGUgc3RhbmRhcmQgcGluIGNvbnRyb2wgYmluZGluZ3MKKyhzZWUgcGluY3RybC1iaW5kaW5ncy50eHQpOgorCitSZXF1aXJlZCBwaW4gbXVsdGlwbGV4aW5nIHN1Ym5vZGUgcHJvcGVydGllczoKKy0gZnVuY3Rpb246IEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHRvIG11eCB0byB0aGUKKyAgcGluIG9yIGdyb3VwLgorLSBncm91cHMgOiBBbiBhcnJheSBvZiBzdHJpbmdzLiBFYWNoIHN0cmluZyBjb250YWlucyB0aGUgbmFtZSBvZiBhIHBpbgorICBncm91cCB0aGF0IHdpbGwgYmUgY29tYmluZWQgd2l0aCB0aGUgZnVuY3Rpb24gdG8gZm9ybSBhIG11bHRpcGxleGluZworICBzZXQtdXAuCisKK1JlcXVpcmVkIHBpbiBjb25maWd1cmF0aW9uIHN1Ym5vZGUgcHJvcGVydGllczoKKy0gcGluczogQSBzdHJpbmcgYXJyYXkgZGVzY3JpYmluZyB0aGUgcGlucyBhZmZlY3RlZCBieSB0aGUgY29uZmlndXJhdGlvbgorICBpbiB0aGUgbm9kZS4KKy0gc3RlLGNvbmZpZzogSGFuZGxlIG9mIHBpbiBjb25maWd1cmF0aW9uIG5vZGUKKyAgKGUuZy4gc3RlLGNvbmZpZyA9IDwmc2xwbV9pbl93a3VwX3BkaXM+KQorCistIHN0ZSxpbnB1dCA6IDwwLzEvMj4KKwkwOiBpbnB1dCB3aXRoIG5vIHB1bGwKKwkxOiBpbnB1dCB3aXRoIHB1bGwgdXAsCisJMjogaW5wdXQgd2l0aCBwdWxsIGRvd24sCisKKy0gc3RlLG91dHB1dDogPDAvMS8yPgorCTA6IG91dHB1dCBsb3csCisJMTogb3V0cHV0IGhpZ2gsCisJMjogb3V0cHV0ICh2YWx1ZSBpcyBub3Qgc3BlY2lmaWVkKS4KKworLSBzdGUsc2xlZXA6IDwwLzE+CisJMDogc2xlZXAgbW9kZSBkaXNhYmxlLAorCTE6IHNsZWVwIG1vZGUgZW5hYmxlLgorCistIHN0ZSxzbGVlcC1pbnB1dDogPDAvMS8yLzM+CisJMDogc2xlZXAgaW5wdXQgd2l0aCBubyBwdWxsLAorCTE6IHNsZWVwIGlucHV0IHdpdGggcHVsbCB1cCwKKwkyOiBzbGVlcCBpbnB1dCB3aXRoIHB1bGwgZG93bi4KKwkzOiBzbGVlcCBpbnB1dCBhbmQga2VlcCBsYXN0IGlucHV0IGNvbmZpZ3VyYXRpb24gKG5vIHB1bGwsIHB1bGwgdXAgb3IgcHVsbCBkb3duKS4KKworLSBzdGUsc2xlZXAtb3V0cHV0OiA8MC8xLzI+CisJMDogc2xlZXAgb3V0cHV0IGxvdywKKwkxOiBzbGVlcCBvdXRwdXQgaGlnaCwKKwkyOiBzbGVlcCBvdXRwdXQgKHZhbHVlIGlzIG5vdCBzcGVjaWZpZWQpLgorCistIHN0ZSxzbGVlcC1ncGlvOiA8MC8xPgorCTA6IGRpc2FibGUgc2xlZXAgZ3BpbyBtb2RlLAorCTE6IGVuYWJsZSBzbGVlcCBncGlvIG1vZGUuCisKKy0gc3RlLHNsZWVwLXdha2V1cDogPDAvMT4KKwkwOiB3YWtlLXVwIGRldGVjdGlvbiBlbmFibGVkLAorCTE6IHdha2UtdXAgZGV0ZWN0aW9uIGRpc2FibGVkLgorCistIHN0ZSxzbGVlcC1wdWxsLWRpc2FibGU6IDwwLzE+CisJMDogR1BJTyBwdWxsLXVwIG9yIHB1bGwtZG93biByZXNpc3RvciBpcyBlbmFibGVkLCB3aGVuIHBpbiBpcyBhbiBpbnB1dCwKKwkxOiBHUElPIHB1bGwtdXAgYW5kIHB1bGwtZG93biByZXNpc3RvciBhcmUgZGlzYWJsZWQuCisKK0V4YW1wbGUgYm9hcmQgZmlsZSBleHRyYWN0OgorCisJcGluY3RybEA4MDE1NzAwMCB7CisJCWNvbXBhdGlibGUgPSAic3Rlcmljc3NvbixkYjg1MDAtcGluY3RybCI7CisJCW5vbWFkaWstZ3Bpby1jaGlwcyA9IDwmZ3BpbzA+LCA8JmdwaW8xPiwgPCZncGlvMj4sIDwmZ3BpbzM+OworCQlwcmNtID0gPCZwcmNtdT47CisKKwkJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKworCQlzbHBtX2luX3drdXBfcGRpczogc2xwbV9pbl93a3VwX3BkaXMgeworCQkJc3RlLHNsZWVwID0gPDE+OworCQkJc3RlLHNsZWVwLWlucHV0ID0gPDM+OworCQkJc3RlLHNsZWVwLXdha2V1cCA9IDwxPjsKKwkJCXN0ZSxzbGVlcC1wdWxsLWRpc2FibGUgPSA8MD47CisJCX07CisKKwkJc2xwbV9vdXRfaGlfd2t1cF9wZGlzOiBzbHBtX291dF9oaV93a3VwX3BkaXMgeworCQkJc3RlLHNsZWVwID0gPDE+OworCQkJc3RlLHNsZWVwLW91dHB1dCA9IDwxPjsKKwkJCXN0ZSxzbGVlcC13YWtldXAgPSA8MT47CisJCQlzdGUsc2xlZXAtcHVsbC1kaXNhYmxlID0gPDA+OworCQl9OworCisJCXNscG1fb3V0X3drdXBfcGRpczogc2xwbV9vdXRfd2t1cF9wZGlzIHsKKwkJCXN0ZSxzbGVlcCA9IDwxPjsKKwkJCXN0ZSxzbGVlcC1vdXRwdXQgPSA8Mj47CisJCQlzdGUsc2xlZXAtd2FrZXVwID0gPDE+OworCQkJc3RlLHNsZWVwLXB1bGwtZGlzYWJsZSA9IDwwPjsKKwkJfTsKKworCQl1YXJ0MCB7CisJCQl1YXJ0MF9kZWZhdWx0X211eDogdWFydDBfbXV4IHsKKwkJCQl1MF9kZWZhdWx0X211eCB7CisJCQkJCWZ1bmN0aW9uID0gInUwIjsKKwkJCQkJcGlucyA9ICJ1MF9hXzEiOworCQkJCX07CisJCQl9OworCQkJdWFydDBfZGVmYXVsdF9tb2RlOiB1YXJ0MF9kZWZhdWx0IHsKKwkJCQl1YXJ0MF9kZWZhdWx0X2NmZzEgeworCQkJCQlwaW5zID0gIkdQSU8wIiwgIkdQSU8yIjsKKwkJCQkJc3RlLGlucHV0ID0gPDE+OworCQkJCX07CisKKwkJCQl1YXJ0MF9kZWZhdWx0X2NmZzIgeworCQkJCQlwaW5zID0gIkdQSU8xIiwgIkdQSU8zIjsKKwkJCQkJc3RlLG91dHB1dCA9IDwxPjsKKwkJCQl9OworCQkJfTsKKwkJCXVhcnQwX3NsZWVwX21vZGU6IHVhcnQwX3NsZWVwIHsKKwkJCQl1YXJ0MF9zbGVlcF9jZmcxIHsKKwkJCQkJcGlucyA9ICJHUElPMCIsICJHUElPMiI7CisJCQkJCXN0ZSxjb25maWcgPSA8JnNscG1faW5fd2t1cF9wZGlzPjsKKwkJCQl9OworCQkJCXVhcnQwX3NsZWVwX2NmZzIgeworCQkJCQlwaW5zID0gIkdQSU8xIjsKKwkJCQkJc3RlLGNvbmZpZyA9IDwmc2xwbV9vdXRfaGlfd2t1cF9wZGlzPjsKKwkJCQl9OworCQkJCXVhcnQwX3NsZWVwX2NmZzMgeworCQkJCQlwaW5zID0gIkdQSU8zIjsKKwkJCQkJc3RlLGNvbmZpZyA9IDwmc2xwbV9vdXRfd2t1cF9wZGlzPjsKKwkJCQl9OworCQkJfTsKKwkJfTsKKwl9OworCisJdWFydEA4MDEyMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiYXJtLHBsMDExIiwgImFybSxwcmltZWNlbGwiOworCQlyZWcgPSA8MHg4MDEyMDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMTEgMHg0PjsKKworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiLCJzbGVlcCI7CisJCXBpbmN0cmwtMCA9IDwmdWFydDBfZGVmYXVsdF9tdXg+LCA8JnVhcnQwX2RlZmF1bHRfbW9kZT47CisJCXBpbmN0cmwtMSA9IDwmdWFydDBfc2xlZXBfbW9kZT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3RpLG9tYXAtcGluY3RybC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC90aSxvbWFwLXBpbmN0cmwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4YzgwMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC90aSxvbWFwLXBpbmN0cmwudHh0CkBAIC0wLDAgKzEsMTMgQEAKK09NQVAgUGluY3RybCBkZWZpbml0aW9ucworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlIG9uZSBvZjoKKyAgInRpLG9tYXAyNDIwLXBhZGNvbmYiIC0gT01BUDI0MjAgY29tcGF0aWJsZSBwaW5jdHJsCisgICJ0aSxvbWFwMjQzMC1wYWRjb25mIiAtIE9NQVAyNDMwIGNvbXBhdGlibGUgcGluY3RybAorICAidGksb21hcDMtcGFkY29uZiIgLSBPTUFQMyBjb21wYXRpYmxlIHBpbmN0cmwKKyAgInRpLG9tYXA0LXBhZGNvbmYiIC0gT01BUDQgY29tcGF0aWJsZSBwaW5jdHJsCisgICJ0aSxvbWFwNS1wYWRjb25mIiAtIE9NQVA1IGNvbXBhdGlibGUgcGluY3RybAorICAidGksZHJhNy1wYWRjb25mIiAtIERSQTcgY29tcGF0aWJsZSBwaW5jdHJsCisgICJ0aSxhbTQzNy1wYWRjb25mIiAtIEFNNDM3eCBjb21wYXRpYmxlIHBpbmN0cmwKKworU2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3BpbmN0cmwtc2luZ2xlLnR4dCBmb3IgZnVydGhlciBkZXRhaWxzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwveGxueCx6eW5xLXBpbmN0cmwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwveGxueCx6eW5xLXBpbmN0cmwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0ODhiMGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC94bG54LHp5bnEtcGluY3RybC50eHQKQEAgLTAsMCArMSwxMDUgQEAKKwlCaW5kaW5nIGZvciBYaWxpbnggWnlucSBQaW5jdHJsCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ4bG54LHp5bnEtcGluY3RybCIKKy0gc3lzY29uOiBwaGFuZGxlIHRvIFNMQ1IKKy0gcmVnOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiBwaW5jdHJsIHNwYWNlIGluIFNMQ1IKKworUGxlYXNlIHJlZmVyIHRvIHBpbmN0cmwtYmluZGluZ3MudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBkZXRhaWxzIG9mIHRoZQorY29tbW9uIHBpbmN0cmwgYmluZGluZ3MgdXNlZCBieSBjbGllbnQgZGV2aWNlcywgaW5jbHVkaW5nIHRoZSBtZWFuaW5nIG9mIHRoZQorcGhyYXNlICJwaW4gY29uZmlndXJhdGlvbiBub2RlIi4KKworWnlucSdzIHBpbiBjb25maWd1cmF0aW9uIG5vZGVzIGFjdCBhcyBhIGNvbnRhaW5lciBmb3IgYW4gYXJiaXRyYXJ5IG51bWJlciBvZgorc3Vibm9kZXMuIEVhY2ggb2YgdGhlc2Ugc3Vibm9kZXMgcmVwcmVzZW50cyBzb21lIGRlc2lyZWQgY29uZmlndXJhdGlvbiBmb3IgYQorcGluLCBhIGdyb3VwLCBvciBhIGxpc3Qgb2YgcGlucyBvciBncm91cHMuIFRoaXMgY29uZmlndXJhdGlvbiBjYW4gaW5jbHVkZSB0aGUKK211eCBmdW5jdGlvbiB0byBzZWxlY3Qgb24gdGhvc2UgcGluKHMpL2dyb3VwKHMpLCBhbmQgdmFyaW91cyBwaW4gY29uZmlndXJhdGlvbgorcGFyYW1ldGVycywgc3VjaCBhcyBwdWxsLXVwLCBzbGV3IHJhdGUsIGV0Yy4KKworRWFjaCBjb25maWd1cmF0aW9uIG5vZGUgY2FuIGNvbnNpc3Qgb2YgbXVsdGlwbGUgbm9kZXMgZGVzY3JpYmluZyB0aGUgcGlubXV4IGFuZAorcGluY29uZiBvcHRpb25zLiBUaG9zZSBub2RlcyBjYW4gYmUgcGlubXV4IG5vZGVzIG9yIHBpbmNvbmYgbm9kZXMuCisKK1RoZSBuYW1lIG9mIGVhY2ggc3Vibm9kZSBpcyBub3QgaW1wb3J0YW50OyBhbGwgc3Vibm9kZXMgc2hvdWxkIGJlIGVudW1lcmF0ZWQKK2FuZCBwcm9jZXNzZWQgcHVyZWx5IGJhc2VkIG9uIHRoZWlyIGNvbnRlbnQuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIHBpbm11eCBub2RlcyBhcmU6CisgLSBncm91cHM6IEEgbGlzdCBvZiBwaW5tdXggZ3JvdXBzLgorIC0gZnVuY3Rpb246IFRoZSBuYW1lIG9mIGEgcGlubXV4IGZ1bmN0aW9uIHRvIGFjdGl2YXRlIGZvciB0aGUgc3BlY2lmaWVkIHNldAorICAgb2YgZ3JvdXBzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBjb25maWd1cmF0aW9uIG5vZGVzOgorT25lIG9mOgorIC0gcGluczogYSBsaXN0IG9mIHBpbiBuYW1lcworIC0gZ3JvdXBzOiBBIGxpc3Qgb2YgcGlubXV4IGdyb3Vwcy4KKworVGhlIGZvbGxvd2luZyBnZW5lcmljIHByb3BlcnRpZXMgYXMgZGVmaW5lZCBpbiBwaW5jdHJsLWJpbmRpbmdzLnR4dCBhcmUgdmFsaWQKK3RvIHNwZWNpZnkgaW4gYSBwaW5tdXggc3Vibm9kZToKKyBncm91cHMsIGZ1bmN0aW9uCisKK1RoZSBmb2xsb3dpbmcgZ2VuZXJpYyBwcm9wZXJ0aWVzIGFzIGRlZmluZWQgaW4gcGluY3RybC1iaW5kaW5ncy50eHQgYXJlIHZhbGlkCit0byBzcGVjaWZ5IGluIGEgcGluY29uZiBzdWJub2RlOgorIGdyb3VwcywgcGlucywgYmlhcy1kaXNhYmxlLCBiaWFzLWhpZ2gtaW1wZWRhbmNlLCBiaWFzLXB1bGwtdXAsIHNsZXctcmF0ZSwKKyBsb3ctcG93ZXItZGlzYWJsZSwgbG93LXBvd2VyLWVuYWJsZQorCisgVmFsaWQgYXJndW1lbnRzIGZvciAnc2xldy1yYXRlJyBhcmUgJzAnIGFuZCAnMScgdG8gc2VsZWN0IGJldHdlZW4gc2xvdyBhbmQgZmFzdAorIHJlc3BlY3RpdmVseS4KKworIFZhbGlkIHZhbHVlcyBmb3IgZ3JvdXBzIGFyZToKKyAgIGV0aGVybmV0MF8wX2dycCwgZXRoZXJuZXQxXzBfZ3JwLCBtZGlvMF8wX2dycCwgbWRpbzFfMF9ncnAsCisgICBxc3BpMF8wX2dycCwgcXNwaTFfMF9ncnAsIHFzcGlfZmJjbGssIHFzcGlfY3MxX2dycCwgc3BpMF8wX2dycCAtIHNwaTBfMl9ncnAsCisgICBzcGkwX1hfc3NZIChYPTAuLjIsIFk9MC4uMiksIHNwaTFfMF9ncnAgLSBzcGkxXzNfZ3JwLAorICAgc3BpMV9YX3NzWSAoWD0wLi4zLCBZPTAuLjIpLCBzZGlvMF8wX2dycCAtIHNkaW8wXzJfZ3JwLAorICAgc2RpbzFfMF9ncnAgLSBzZGlvMV8zX2dycCwgc2RpbzBfZW1pb193cCwgc2RpbzBfZW1pb19jZCwgc2RpbzFfZW1pb193cCwKKyAgIHNkaW8xX2VtaW9fY2QsIHNtYzBfbm9yLCBzbWMwX25vcl9jczFfZ3JwLCBzbWMwX25vcl9hZGRyMjVfZ3JwLCBzbWMwX25hbmQsCisgICBjYW4wXzBfZ3JwIC0gY2FuMF8xMF9ncnAsIGNhbjFfMF9ncnAgLSBjYW4xXzExX2dycCwgdWFydDBfMF9ncnAgLSB1YXJ0MF8xMF9ncnAsCisgICB1YXJ0MV8wX2dycCAtIHVhcnQxXzExX2dycCwgaTJjMF8wX2dycCAtIGkyYzBfMTBfZ3JwLCBpMmMxXzBfZ3JwIC0gaTJjMV8xMF9ncnAsCisgICB0dGMwXzBfZ3JwIC0gdHRjMF8yX2dycCwgdHRjMV8wX2dycCAtIHR0YzFfMl9ncnAsIHN3ZHQwXzBfZ3JwIC0gc3dkdDBfNF9ncnAsCisgICBncGlvMF8wX2dycCAtIGdwaW8wXzUzX2dycCwgdXNiMF8wX2dycCwgdXNiMV8wX2dycAorCisgVmFsaWQgdmFsdWVzIGZvciBwaW5zIGFyZToKKyAgIE1JTzAgLSBNSU81MworCisgVmFsaWQgdmFsdWVzIGZvciBmdW5jdGlvbiBhcmU6CisgICBldGhlcm5ldDAsIGV0aGVybmV0MSwgbWRpbzAsIG1kaW8xLCBxc3BpMCwgcXNwaTEsIHFzcGlfZmJjbGssIHFzcGlfY3MxLAorICAgc3BpMCwgc3BpMF9zcywgc3BpMSwgc3BpMV9zcywgc2RpbzAsIHNkaW8wX3BjLCBzZGlvMF9jZCwgc2RpbzBfd3AsCisgICBzZGlvMSwgc2RpbzFfcGMsIHNkaW8xX2NkLCBzZGlvMV93cCwKKyAgIHNtYzBfbm9yLCBzbWMwX25vcl9jczEsIHNtYzBfbm9yX2FkZHIyNSwgc21jMF9uYW5kLCBjYW4wLCBjYW4xLCB1YXJ0MCwgdWFydDEsCisgICBpMmMwLCBpMmMxLCB0dGMwLCB0dGMxLCBzd2R0MCwgZ3BpbzAsIHVzYjAsIHVzYjEKKworVGhlIGZvbGxvd2luZyBkcml2ZXItc3BlY2lmaWMgcHJvcGVydGllcyBhcyBkZWZpbmVkIGhlcmUgYXJlIHZhbGlkIHRvIHNwZWNpZnkgaW4KK2EgcGluIGNvbmZpZ3VyYXRpb24gc3Vibm9kZToKKyAtIGlvLXN0YW5kYXJkOiBDb25maWd1cmUgdGhlIHBpbiB0byB1c2UgdGhlIHNlbGVjdGVkIElPIHN0YW5kYXJkIGFjY29yZGluZyB0bworICAgdGhpcyBtYXBwaW5nOgorICAgIDE6IExWQ01PUzE4CisgICAgMjogTFZDTU9TMjUKKyAgICAzOiBMVkNNT1MzMworICAgIDQ6IEhTVEwKKworRXhhbXBsZToKKwlwaW5jdHJsMDogcGluY3RybEA3MDAgeworCQljb21wYXRpYmxlID0gInhsbngscGluY3RybC16eW5xIjsKKwkJcmVnID0gPDB4NzAwIDB4MjAwPjsKKwkJc3lzY29uID0gPCZzbGNyPjsKKworCQlwaW5jdHJsX3VhcnQxX2RlZmF1bHQ6IHVhcnQxLWRlZmF1bHQgeworCQkJbXV4IHsKKwkJCQlncm91cHMgPSAidWFydDFfMTBfZ3JwIjsKKwkJCQlmdW5jdGlvbiA9ICJ1YXJ0MSI7CisJCQl9OworCisJCQljb25mIHsKKwkJCQlncm91cHMgPSAidWFydDFfMTBfZ3JwIjsKKwkJCQlzbGV3LXJhdGUgPSA8MD47CisJCQkJaW8tc3RhbmRhcmQgPSA8MT47CisJCQl9OworCisJCQljb25mLXJ4IHsKKwkJCQlwaW5zID0gIk1JTzQ5IjsKKwkJCQliaWFzLWhpZ2gtaW1wZWRhbmNlOworCQkJfTsKKworCQkJY29uZi10eCB7CisJCQkJcGlucyA9ICJNSU80OCI7CisJCQkJYmlhcy1kaXNhYmxlOworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL2JxMjQxNXgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL2JxMjQxNXgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwMzI3ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvYnEyNDE1eC50eHQKQEAgLTAsMCArMSw0NyBAQAorQmluZGluZyBmb3IgVEkgYnEyNDE1eCBMaS1Jb24gQ2hhcmdlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgY29udGFpbiBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKyAqICJ0aSxicTI0MTUwIgorICogInRpLGJxMjQxNTAiCisgKiAidGksYnEyNDE1MGEiCisgKiAidGksYnEyNDE1MSIKKyAqICJ0aSxicTI0MTUxYSIKKyAqICJ0aSxicTI0MTUyIgorICogInRpLGJxMjQxNTMiCisgKiAidGksYnEyNDE1M2EiCisgKiAidGksYnEyNDE1NSIKKyAqICJ0aSxicTI0MTU2IgorICogInRpLGJxMjQxNTZhIgorICogInRpLGJxMjQxNTgiCistIHJlZzoJCQkgICBpbnRlZ2VyLCBpMmMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlLgorLSB0aSxjdXJyZW50LWxpbWl0OgkgICBpbnRlZ2VyLCBpbml0aWFsIG1heGltdW0gY3VycmVudCBjaGFyZ2VyIGNhbiBwdWxsCisJCQkgICBmcm9tIHBvd2VyIHN1cHBseSBpbiBtQS4KKy0gdGksd2Vhay1iYXR0ZXJ5LXZvbHRhZ2U6IGludGVnZXIsIHdlYWsgYmF0dGVyeSB2b2x0YWdlIHRocmVzaG9sZCBpbiBtVi4KKwkJCSAgIFRoZSBjaGlwIHdpbGwgdXNlIHNsb3cgcHJlY2hhcmdlIGlmIGJhdHRlcnkgdm9sdGFnZQorCQkJICAgaXMgYmVsb3cgdGhpcyB2YWx1ZS4KKy0gdGksYmF0dGVyeS1yZWd1bGF0aW9uLXZvbHRhZ2U6IGludGVnZXIsIG1heGltdW0gY2hhcmdpbmcgdm9sdGFnZSBpbiBtVi4KKy0gdGksY2hhcmdlLWN1cnJlbnQ6CSAgIGludGVnZXIsIG1heGltdW0gY2hhcmdpbmcgY3VycmVudCBpbiBtQS4KKy0gdGksdGVybWluYXRpb24tY3VycmVudDogIGludGVnZXIsIGNoYXJnZSB3aWxsIGJlIHRlcm1pbmF0ZWQgd2hlbiBjdXJyZW50IGluCisJCQkgICBjb25zdGFudC12b2x0YWdlIHBoYXNlIGRyb3BzIGJlbG93IHRoaXMgdmFsdWUgKGluIG1BKS4KKy0gdGkscmVzaXN0b3Itc2Vuc2U6CSAgIGludGVnZXIsIHZhbHVlIG9mIHNlbnNpbmcgcmVzaXN0b3IgaW4gbWlsbGlvaG0uCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHRpLHVzYi1jaGFyZ2VyLWRldGVjdGlvbjogcGhhbmRsZSB0byB1c2IgY2hhcmdlciBkZXRlY3Rpb24gZGV2aWNlLgorCQkJICAgIChyZXF1aXJlZCBmb3IgYXV0byBtb2RlKQorCitFeGFtcGxlIGZyb20gTm9raWEgTjkwMDoKKworYnEyNDE1MGEgeworCWNvbXBhdGlibGUgPSAidGksYnEyNDE1MGEiOworCXJlZyA9IDwweDZiPjsKKworCXRpLGN1cnJlbnQtbGltaXQgPSA8MTAwPjsKKwl0aSx3ZWFrLWJhdHRlcnktdm9sdGFnZSA9IDwzNDAwPjsKKwl0aSxiYXR0ZXJ5LXJlZ3VsYXRpb24tdm9sdGFnZSA9IDw0MjAwPjsKKwl0aSxjaGFyZ2UtY3VycmVudCA9IDw2NTA+OworCXRpLHRlcm1pbmF0aW9uLWN1cnJlbnQgPSA8MTAwPjsKKwl0aSxyZXNpc3Rvci1zZW5zZSA9IDw2OD47CisKKwl0aSx1c2ItY2hhcmdlci1kZXRlY3Rpb24gPSA8JmlzcDE3MDQ+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9icTI0MjU3LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9icTI0MjU3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjkzNzAyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL2JxMjQyNTcudHh0CkBAIC0wLDAgKzEsNjQgQEAKK0JpbmRpbmcgZm9yIFRJIGJxMjQyNTAvYnEyNDI1MS9icTI0MjU3IExpLUlvbiBDaGFyZ2VyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBjb250YWluIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorICogInRpLGJxMjQyNTAiCisgKiAidGksYnEyNDI1MSIKKyAqICJ0aSxicTI0MjU3IgorLSByZWc6IGludGVnZXIsIGkyYyBhZGRyZXNzIG9mIHRoZSBkZXZpY2UuCistIGludGVycnVwdC1wYXJlbnQ6IFNob3VsZCBiZSB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyLiBVc2UgaW4KKyAgICBjb25qdW5jdGlvbiB3aXRoICJpbnRlcnJ1cHRzIi4KKy0gaW50ZXJydXB0czogSW50ZXJydXB0IG1hcHBpbmcgZm9yIEdQSU8gSVJRIChjb25maWd1cmUgZm9yIGJvdGggZWRnZXMpLiBVc2UgaW4KKyAgICBjb25qdW5jdGlvbiB3aXRoICJpbnRlcnJ1cHQtcGFyZW50Ii4KKy0gdGksYmF0dGVyeS1yZWd1bGF0aW9uLXZvbHRhZ2U6IGludGVnZXIsIG1heGltdW0gY2hhcmdpbmcgdm9sdGFnZSBpbiB1Vi4KKy0gdGksY2hhcmdlLWN1cnJlbnQ6IGludGVnZXIsIG1heGltdW0gY2hhcmdpbmcgY3VycmVudCBpbiB1QS4KKy0gdGksdGVybWluYXRpb24tY3VycmVudDogaW50ZWdlciwgY2hhcmdlIHdpbGwgYmUgdGVybWluYXRlZCB3aGVuIGN1cnJlbnQgaW4KKyAgICBjb25zdGFudC12b2x0YWdlIHBoYXNlIGRyb3BzIGJlbG93IHRoaXMgdmFsdWUgKGluIHVBKS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gcGctZ3Bpb3M6IEdQSU8gdXNlZCBmb3IgY29ubmVjdGluZyB0aGUgYnEyNDI1eCBkZXZpY2UgUEcgKFBvd2VyIEdvb2QpIHBpbi4KKyAgICBUaGlzIHBpbiBpcyBub3QgYXZhaWxhYmxlIG9uIGFsbCBkZXZpY2VzIGhvd2V2ZXIgaXQgc2hvdWxkIGJlIHVzZWQgaWYKKyAgICBwb3NzaWJsZSBhcyB0aGlzIGlzIHRoZSByZWNvbW1lbmRlZCB3YXkgdG8gb2J0YWluIHRoZSBjaGFyZ2VyJ3MgaW5wdXQgUEcKKyAgICBzdGF0ZS4gSWYgdGhpcyBwaW4gaXMgbm90IHNwZWNpZmllZCBhIHNvZnR3YXJlLWJhc2VkIGFwcHJvYWNoIGZvciBQRworICAgIGRldGVjdGlvbiBpcyB1c2VkLgorLSB0aSxjdXJyZW50LWxpbWl0OiBUaGUgbWF4aW11bSBjdXJyZW50IHRvIGJlIGRyYXduIGZyb20gdGhlIGNoYXJnZXIncyBpbnB1dAorICAgIChpbiB1QSkuIElmIHRoaXMgcHJvcGVydHkgaXMgbm90IHNwZWNpZmllZCwgdGhlIGlucHV0IGxpbWl0IGN1cnJlbnQgaXMKKyAgICBzZXQgYXV0b21hdGljYWxseSB1c2luZyBVU0IgRCsvRC0gc2lnbmFsIGJhc2VkIGNoYXJnZXIgdHlwZSBkZXRlY3Rpb24uCisgICAgSWYgdGhlIGhhcmR3YXJlIGRvZXMgbm90IHN1cHBvcnQgdGhlIEQrL0QtIGJhc2VkIGRldGVjdGlvbiwgYSBkZWZhdWx0CisgICAgb2YgNTAwLDAwMCBpcyB1c2VkICg9NTAwbUEpIGluc3RlYWQuCistIHRpLG92cC12b2x0YWdlOiBDb25maWd1cmVzIHRoZSBvdmVyIHZvbHRhZ2UgcHJvdGVjdGlvbiB2b2x0YWdlIChpbiB1VikuIElmCisgICAgbm90IHNwZWNpZmllZCBhIGRlZmF1bHQgb2YgNiw1MDAwLDAwMCAoPTYuNVYpIGlzIHVzZWQuCistIHRpLGluLWRwbS12b2x0YWdlOiBDb25maWd1cmVzIHRoZSB0aHJlc2hvbGQgaW5wdXQgdm9sdGFnZSBmb3IgdGhlIGR5bmFtaWMKKyAgICBwb3dlciBwYXRoIG1hbmFnZW1lbnQgKGluIHVWKS4gSWYgbm90IHNwZWNpZmllZCBhIGRlZmF1bHQgb2YgNCwzNjAsMDAwCisgICAgKD00LjM2VikgaXMgdXNlZC4KKworRXhhbXBsZToKKworYnEyNDI1NyB7CisJY29tcGF0aWJsZSA9ICJ0aSxicTI0MjU3IjsKKwlyZWcgPSA8MHg2YT47CisJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzE+OworCWludGVycnVwdHMgPSA8MTYgSVJRX1RZUEVfRURHRV9CT1RIPjsKKworCXBnLWdwaW9zID0gPCZncGlvMSAyOCBHUElPX0FDVElWRV9ISUdIPjsKKworCXRpLGJhdHRlcnktcmVndWxhdGlvbi12b2x0YWdlID0gPDQyMDAwMDA+OworCXRpLGNoYXJnZS1jdXJyZW50ID0gPDEwMDAwMDA+OworCXRpLHRlcm1pbmF0aW9uLWN1cnJlbnQgPSA8NTAwMDA+OworfTsKKworRXhhbXBsZToKKworYnEyNDI1MCB7CisJY29tcGF0aWJsZSA9ICJ0aSxicTI0MjUwIjsKKwlyZWcgPSA8MHg2YT47CisJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzE+OworCWludGVycnVwdHMgPSA8MTYgSVJRX1RZUEVfRURHRV9CT1RIPjsKKworCXRpLGJhdHRlcnktcmVndWxhdGlvbi12b2x0YWdlID0gPDQyMDAwMDA+OworCXRpLGNoYXJnZS1jdXJyZW50ID0gPDUwMDAwMD47CisJdGksdGVybWluYXRpb24tY3VycmVudCA9IDw1MDAwMD47CisJdGksY3VycmVudC1saW1pdCA9IDw5MDAwMDA+OworCXRpLG92cC12b2x0YWdlID0gPDk1MDAwMDA+OworCXRpLGluLWRwbS12b2x0YWdlID0gPDQ0NDAwMDA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9icTI1ODkwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9icTI1ODkwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWRkMTdkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL2JxMjU4OTAudHh0CkBAIC0wLDAgKzEsNDYgQEAKK0JpbmRpbmcgZm9yIFRJIGJxMjU4OTAgTGktSW9uIENoYXJnZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGNvbnRhaW4gb25lIG9mIHRoZSBmb2xsb3dpbmc6CisgICAgKiAidGksYnEyNTg5MCIKKy0gcmVnOiBpbnRlZ2VyLCBpMmMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlLgorLSB0aSxiYXR0ZXJ5LXJlZ3VsYXRpb24tdm9sdGFnZTogaW50ZWdlciwgbWF4aW11bSBjaGFyZ2luZyB2b2x0YWdlIChpbiB1Vik7CistIHRpLGNoYXJnZS1jdXJyZW50OiBpbnRlZ2VyLCBtYXhpbXVtIGNoYXJnaW5nIGN1cnJlbnQgKGluIHVBKTsKKy0gdGksdGVybWluYXRpb24tY3VycmVudDogaW50ZWdlciwgY2hhcmdlIHdpbGwgYmUgdGVybWluYXRlZCB3aGVuIGN1cnJlbnQgaW4KKyAgICBjb25zdGFudC12b2x0YWdlIHBoYXNlIGRyb3BzIGJlbG93IHRoaXMgdmFsdWUgKGluIHVBKTsKKy0gdGkscHJlY2hhcmdlLWN1cnJlbnQ6IGludGVnZXIsIG1heGltdW0gY2hhcmdlIGN1cnJlbnQgZHVyaW5nIHByZWNoYXJnZQorICAgIHBoYXNlIChpbiB1QSk7CistIHRpLG1pbmltdW0tc3lzLXZvbHRhZ2U6IGludGVnZXIsIHdoZW4gYmF0dGVyeSBpcyBjaGFyZ2luZyBhbmQgaXQgaXMgYmVsb3cKKyAgICBtaW5pbXVtIHN5c3RlbSB2b2x0YWdlLCB0aGUgc3lzdGVtIHdpbGwgYmUgcmVndWxhdGVkIGFib3ZlCisgICAgbWluaW11bS1zeXMtdm9sdGFnZSBzZXR0aW5nIChpbiB1Vik7CistIHRpLGJvb3N0LXZvbHRhZ2U6IGludGVnZXIsIFZCVVMgdm9sdGFnZSBsZXZlbCBpbiBib29zdCBtb2RlIChpbiB1Vik7CistIHRpLGJvb3N0LW1heC1jdXJyZW50OiBpbnRlZ2VyLCBtYXhpbXVtIGFsbG93ZWQgY3VycmVudCBkcmF3IGluIGJvb3N0IG1vZGUKKyAgICAoaW4gdUEpLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSB0aSxib29zdC1sb3ctZnJlcTogYm9vbGVhbiwgaWYgcHJlc2VudCBib29zdCBtb2RlIGZyZXF1ZW5jeSB3aWxsIGJlIDUwMGtIeiwKKyAgICBvdGhlcndpc2UgMS41TUh6OworLSB0aSx1c2UtaWxpbS1waW46IGJvb2xlYW4sIGlmIHByZXNlbnQgdGhlIElMSU0gcmVzaXN0b3Igd2lsbCBiZSB1c2VkIGFuZCB0aGUKKyAgICBpbnB1dCBjdXJyZW50IHdpbGwgYmUgdGhlIGxvd2VyIGJldHdlZW4gdGhlIHJlc2lzdG9yIHNldHRpbmcgYW5kIHRoZSBJSU5MSU0KKyAgICByZWdpc3RlciBzZXR0aW5nOworLSB0aSx0aGVybWFsLXJlZ3VsYXRpb24tdGhyZXNob2xkOiBpbnRlZ2VyLCB0ZW1wZXJhdHVyZSBhYm92ZSB3aGljaCB0aGUgY2hhcmdlCisgICAgY3VycmVudCBpcyBsb3dlcmVkLCB0byBhdm9pZCBvdmVyaGVhdGluZyAoaW4gZGVncmVlcyBDZWxzaXVzKS4gSWYgb21pdHRlZCwKKyAgICB0aGUgZGVmYXVsdCBzZXR0aW5nIHdpbGwgYmUgdXNlZCAoMTIwIGRlZ3JlZXMpOworCitFeGFtcGxlOgorCiticTI1ODkwIHsKKyAgICAgICAgY29tcGF0aWJsZSA9ICJ0aSxicTI1ODkwIjsKKyAgICAgICAgcmVnID0gPDB4NmE+OworCisgICAgICAgIHRpLGJhdHRlcnktcmVndWxhdGlvbi12b2x0YWdlID0gPDQyMDAwMDA+OworICAgICAgICB0aSxjaGFyZ2UtY3VycmVudCA9IDwxMDAwMDAwPjsKKyAgICAgICAgdGksdGVybWluYXRpb24tY3VycmVudCA9IDw1MDAwMD47CisgICAgICAgIHRpLHByZWNoYXJnZS1jdXJyZW50ID0gPDEyODAwMD47CisgICAgICAgIHRpLG1pbmltdW0tc3lzLXZvbHRhZ2UgPSA8MzYwMDAwMD47CisgICAgICAgIHRpLGJvb3N0LXZvbHRhZ2UgPSA8NTAwMDAwMD47CisgICAgICAgIHRpLGJvb3N0LW1heC1jdXJyZW50ID0gPDEwMDAwMDA+OworCisgICAgICAgIHRpLHVzZS1pbGltLXBpbjsKKyAgICAgICAgdGksdGhlcm1hbC1yZWd1bGF0aW9uLXRocmVzaG9sZCA9IDwxMjA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9kYTkxNTAtY2hhcmdlci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvZGE5MTUwLWNoYXJnZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzOTA2NjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvZGE5MTUwLWNoYXJnZXIudHh0CkBAIC0wLDAgKzEsMjYgQEAKK0RpYWxvZyBTZW1pY29uZHVjdG9yIERBOTE1MCBDaGFyZ2VyIFBvd2VyIFN1cHBseSBiaW5kaW5ncworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiZGxnLGRhOTE1MC1jaGFyZ2VyIiBmb3IgREE5MTUwIENoYXJnZXIgUG93ZXIgU3VwcGx5CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGlvLWNoYW5uZWxzOiBMaXN0IG9mIHBoYW5kbGUgYW5kIElJTyBzcGVjaWZpZXIgcGFpcnMKKy0gaW8tY2hhbm5lbC1uYW1lczogTGlzdCBvZiBjaGFubmVsIG5hbWVzIHVzZWQgYnkgY2hhcmdlcgorICAgICAgWyJDSEFOX0lCVVMiLCAiQ0hBTl9WQlVTIiwgIkNIQU5fVEpVTkMiLCAiQ0hBTl9WQkFUIl0KKyAgKFNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2lpby1iaW5kaW5ncy50eHQgZm9yIGZ1cnRoZXIgaW5mbykKKworCitFeGFtcGxlOgorCisJZGE5MTUwLWNoYXJnZXIgeworCQljb21wYXRpYmxlID0gImRsZyxkYTkxNTAtY2hhcmdlciI7CisKKwkJaW8tY2hhbm5lbHMgPSA8JmdwYWRjIDA+LAorCQkJICAgICAgPCZncGFkYyAyPiwKKwkJCSAgICAgIDwmZ3BhZGMgOD4sCisJCQkgICAgICA8JmdwYWRjIDU+OworCQlpby1jaGFubmVsLW5hbWVzID0gIkNIQU5fSUJVUyIsCisJCQkJICAgIkNIQU5fVkJVUyIsCisJCQkJICAgIkNIQU5fVEpVTkMiLAorCQkJCSAgICJDSEFOX1ZCQVQiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvZGE5MTUwLWZnLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9kYTkxNTAtZmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwMjM2ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvZGE5MTUwLWZnLnR4dApAQCAtMCwwICsxLDIzIEBACitEaWFsb2cgU2VtaWNvbmR1Y3RvciBEQTkxNTAgRnVlbC1HYXVnZSBQb3dlciBTdXBwbHkgYmluZGluZ3MKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImRsZyxkYTkxNTAtZnVlbC1nYXVnZSIgZm9yIERBOTE1MCBGdWVsLUdhdWdlIFBvd2VyIFN1cHBseQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBkbGcsdXBkYXRlLWludGVydmFsOiBJbnRlcnZhbCB0aW1lIChtaWxsaXNlY29uZHMpIGJldHdlZW4gYmF0dGVyeSBsZXZlbCBjaGVja3MuCistIGRsZyx3YXJuLXNvYy1sZXZlbDogQmF0dGVyeSBkaXNjaGFyZ2UgbGV2ZWwgKCUpIHdoZXJlIHdhcm5pbmcgZXZlbnQgcmFpc2VkLgorICAgICAgWzEgLSAxMDBdCistIGRsZyxjcml0LXNvYy1sZXZlbDogQmF0dGVyeSBkaXNjaGFyZ2UgbGV2ZWwgKCUpIHdoZXJlIGNyaXRpY2FsIGV2ZW50IHJhaXNlZC4KKyAgVGhpcyB2YWx1ZSBzaG91bGQgYmUgbG93ZXIgdGhhbiB0aGUgd2FybmluZyBsZXZlbC4KKyAgICAgIFsxIC0gMTAwXQorCisKK0V4YW1wbGU6CisKKwlmdWVsLWdhdWdlIHsKKwkJY29tcGF0aWJsZSA9ICJkbGcsZGE5MTUwLWZ1ZWwtZ2F1Z2UiOworCisJCWRsZyx1cGRhdGUtaW50ZXJ2YWwgPSA8MTAwMDA+OworCQlkbGcsd2Fybi1zb2MtbGV2ZWwgPSAvYml0cy8gOCA8MTU+OworCQlkbGcsY3JpdC1zb2MtbGV2ZWwgPSAvYml0cy8gOCA8NT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9mc2wsaW14LWdwYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvZnNsLGlteC1ncGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1Y2MwMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvZnNsLGlteC1ncGMudHh0CkBAIC0wLDAgKzEsNTkgQEAKK0ZyZWVzY2FsZSBpLk1YIEdlbmVyYWwgUG93ZXIgQ29udHJvbGxlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBpLk1YNlEgR2VuZXJhbCBQb3dlciBDb250cm9sIChHUEMpIGJsb2NrIGNvbnRhaW5zIERWRlMgbG9hZCB0cmFja2luZworY291bnRlcnMgYW5kIFBvd2VyIEdhdGluZyBDb250cm9sIChQR0MpIGZvciB0aGUgQ1BVIGFuZCBQVSAoR1BVL1ZQVSkgcG93ZXIKK2RvbWFpbnMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAiZnNsLGlteDZxLWdwYyIgb3IgImZzbCxpbXg2c2wtZ3BjIgorLSByZWc6IHNob3VsZCBiZSByZWdpc3RlciBiYXNlIGFuZCBsZW5ndGggYXMgZG9jdW1lbnRlZCBpbiB0aGUKKyAgZGF0YXNoZWV0CistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIEdQQyBpbnRlcnJ1cHQgcmVxdWVzdCAxCistIHB1LXN1cHBseTogTGluayB0byB0aGUgTERPIHJlZ3VsYXRvciBwb3dlcmluZyB0aGUgUFUgcG93ZXIgZG9tYWluCistIGNsb2NrczogQ2xvY2sgcGhhbmRsZXMgdG8gZGV2aWNlcyBpbiB0aGUgUFUgcG93ZXIgZG9tYWluIHRoYXQgbmVlZAorCSAgdG8gYmUgZW5hYmxlZCBkdXJpbmcgZG9tYWluIHBvd2VyLXVwIGZvciByZXNldCBwcm9wYWdhdGlvbi4KKy0gI3Bvd2VyLWRvbWFpbi1jZWxsczogU2hvdWxkIGJlIDEsIHNlZSBiZWxvdzoKKworVGhlIGdwYyBub2RlIGlzIGEgcG93ZXItY29udHJvbGxlciBhcyBkb2N1bWVudGVkIGJ5IHRoZSBnZW5lcmljIHBvd2VyIGRvbWFpbgorYmluZGluZ3MgaW4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3Bvd2VyX2RvbWFpbi50eHQuCisKK0V4YW1wbGU6CisKKwlncGM6IGdwY0AwMjBkYzAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGlteDZxLWdwYyI7CisJCXJlZyA9IDwweDAyMGRjMDAwIDB4NDAwMD47CisJCWludGVycnVwdHMgPSA8MCA4OSBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKKwkJCSAgICAgPDAgOTAgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCXB1LXN1cHBseSA9IDwmcmVnX3B1PjsKKwkJY2xvY2tzID0gPCZjbGtzIElNWDZRRExfQ0xLX0dQVTNEX0NPUkU+LAorCQkJIDwmY2xrcyBJTVg2UURMX0NMS19HUFUzRF9TSEFERVI+LAorCQkJIDwmY2xrcyBJTVg2UURMX0NMS19HUFUyRF9DT1JFPiwKKwkJCSA8JmNsa3MgSU1YNlFETF9DTEtfR1BVMkRfQVhJPiwKKwkJCSA8JmNsa3MgSU1YNlFETF9DTEtfT1BFTlZHX0FYST4sCisJCQkgPCZjbGtzIElNWDZRRExfQ0xLX1ZQVV9BWEk+OworCQkjcG93ZXItZG9tYWluLWNlbGxzID0gPDE+OworCX07CisKKworU3BlY2lmeWluZyBwb3dlciBkb21haW4gZm9yIElQIG1vZHVsZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0lQIGNvcmVzIGJlbG9uZ2luZyB0byBhIHBvd2VyIGRvbWFpbiBzaG91bGQgY29udGFpbiBhICdwb3dlci1kb21haW5zJyBwcm9wZXJ0eQordGhhdCBpcyBhIHBoYW5kbGUgcG9pbnRpbmcgdG8gdGhlIGdwYyBkZXZpY2Ugbm9kZSBhbmQgYSBET01BSU5fSU5ERVggc3BlY2lmeWluZwordGhlIHBvd2VyIGRvbWFpbiB0aGUgZGV2aWNlIGJlbG9uZ3MgdG8uCisKK0V4YW1wbGUgb2YgYSBkZXZpY2UgdGhhdCBpcyBwYXJ0IG9mIHRoZSBQVSBwb3dlciBkb21haW46CisKKwl2cHU6IHZwdUAwMjA0MDAwMCB7CisJCXJlZyA9IDwweDAyMDQwMDAwIDB4M2MwMDA+OworCQkvKiAuLi4gKi8KKwkJcG93ZXItZG9tYWlucyA9IDwmZ3BjIDE+OworCQkvKiAuLi4gKi8KKwl9OworCitUaGUgZm9sbG93aW5nIERPTUFJTl9JTkRFWCB2YWx1ZXMgYXJlIHZhbGlkIGZvciBpLk1YNlE6CitBUk1fRE9NQUlOICAgICAwCitQVV9ET01BSU4gICAgICAxCitUaGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgRE9NQUlOX0lOREVYIHZhbHVlIGlzIHZhbGlkIGZvciBpLk1YNlNMOgorRElTUExBWV9ET01BSU4gMgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL2lzcDE3MDQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL2lzcDE3MDQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhMzU5NjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvaXNwMTcwNC50eHQKQEAgLTAsMCArMSwxNyBAQAorQmluZGluZyBmb3IgTlhQIElTUDE3MDQgVVNCIENoYXJnZXIgRGV0ZWN0aW9uCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBjb250YWluIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorICogIm54cCxpc3AxNzA0IgorLSBueHAsZW5hYmxlLWdwaW86IFNob3VsZCBjb250YWluIGEgcGhhbmRsZSArIGdwaW8tc3BlY2lmaWVyCisgIHRvIHRoZSBHUElPIHBpbiBjb25uZWN0ZWQgdG8gdGhlIGNoaXAncyBlbmFibGUgcGluLgorLSB1c2ItcGh5OiBTaG91bGQgY29udGFpbiBhIHBoYW5kbGUgdG8gdGhlIFVTQiBQSFkKKyAgdGhlIElTUDE3MDQgaXMgY29ubmVjdGVkIHRvLgorCitFeGFtcGxlOgorCitpc3AxNzA0IHsKKwljb21wYXRpYmxlID0gIm54cCxpc3AxNzA0IjsKKwlueHAsZW5hYmxlLWdwaW8gPSA8JmdwaW8zIDMgR1BJT19BQ1RJVkVfTE9XPjsKKwl1c2ItcGh5ID0gPCZ1c2IyX3BoeT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL2x0YzI5NDEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL2x0YzI5NDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhNDJhZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvbHRjMjk0MS50eHQKQEAgLTAsMCArMSwyNyBAQAorYmluZGluZyBmb3IgTFRDMjk0MSBhbmQgTFRDMjk0MyBiYXR0ZXJ5IGdhdWdlcworCitCb3RoIHRoZSBMVEMyOTQxIGFuZCBMVEMyOTQzIG1lYXN1cmUgYmF0dGVyeSBjYXBhY2l0eS4KK1RoZSBMVEMyOTQzIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgTFRDMjk0MSwgaXQgYWRkcyB2b2x0YWdlIGFuZAordGVtcGVyYXR1cmUgbW9uaXRvcmluZywgYW5kIHVzZXMgYSBzbGlnaHRseSBkaWZmZXJlbnQgY29udmVyc2lvbgorZm9ybXVsYSBmb3IgdGhlIGNoYXJnZSBjb3VudGVyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgY29udGFpbiAibHRjMjk0MSIgb3IgImx0YzI5NDMiIHdoaWNoIGFsc28gaW5kaWNhdGVzIHRoZQorICAgIHR5cGUgb2YgSTJDIGNoaXAgYXR0YWNoZWQuCistIHJlZzogVGhlIDctYml0IEkyQyBhZGRyZXNzLgorLSBsbHRjLHJlc2lzdG9yLXNlbnNlOiBUaGUgc2Vuc2UgcmVzaXN0b3IgdmFsdWUgaW4gbWlsbGktb2htcy4gQ2FuIGJlIGEgMzItYml0CisgICAgbmVnYXRpdmUgdmFsdWUgd2hlbiB0aGUgYmF0dGVyeSBoYXMgYmVlbiBjb25uZWN0ZWQgdG8gdGhlIHdyb25nIGVuZCBvZiB0aGUKKyAgICByZXNpc3Rvci4KKy0gbGx0YyxwcmVzY2FsZXItZXhwb25lbnQ6IFRoZSBwcmVzY2FsZXIgZXhwb25lbnQgYXMgZXhwbGFpbmVkIGluIHRoZSBkYXRhc2hlZXQuCisgICAgVGhpcyBkZXRlcm1pbmVzIHRoZSByYW5nZSBhbmQgYWNjdXJhY3kgb2YgdGhlIGdhdWdlLiBUaGUgdmFsdWUgaXMgcHJvZ3JhbW1lZAorICAgIGludG8gdGhlIGNoaXAgb25seSBpZiBpdCBkaWZmZXJzIGZyb20gdGhlIGN1cnJlbnQgc2V0dGluZy4gVGhlIHNldHRpbmcgaXMKKyAgICBsb3N0IHdoZW4gdGhlIGJhdHRlcnkgaXMgZGlzY29ubmVjdGVkLgorCitFeGFtcGxlIGZyb20gdGhlIFRvcGljIE1pYW1pIEZsb3JpZGEgYm9hcmQ6CisKKwlmdWVsZ2F1Z2U6IGx0YzI5NDNANjQgeworCQljb21wYXRpYmxlID0gImx0YzI5NDMiOworCQlyZWcgPSA8MHg2ND47CisJCWxsdGMscmVzaXN0b3Itc2Vuc2UgPSA8MTU+OworCQlsbHRjLHByZXNjYWxlci1leHBvbmVudCA9IDw1PjsgLyogMl4oMio1KSA9IDEwMjQgKi8KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3BkLXNhbXN1bmcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3BkLXNhbXN1bmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlOTQ3MzcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvcGQtc2Ftc3VuZy50eHQKQEAgLTAsMCArMSw1MiBAQAorKiBTYW1zdW5nIEV4eW5vcyBQb3dlciBEb21haW5zCisKK0V4eW5vcyBwcm9jZXNzb3JzIGluY2x1ZGUgc3VwcG9ydCBmb3IgbXVsdGlwbGUgcG93ZXIgZG9tYWlucyB3aGljaCBhcmUgdXNlZAordG8gZ2F0ZSBwb3dlciB0byBvbmUgb3IgbW9yZSBwZXJpcGhlcmFscyBvbiB0aGUgcHJvY2Vzc29yLgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcuCisgICAgKiBzYW1zdW5nLGV4eW5vczQyMTAtcGQgLSBmb3IgZXh5bm9zNDIxMCB0eXBlIHBvd2VyIGRvbWFpbi4KKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgICAgcmVnaW9uLgorLSAjcG93ZXItZG9tYWluLWNlbGxzOiBudW1iZXIgb2YgY2VsbHMgaW4gcG93ZXIgZG9tYWluIHNwZWNpZmllcjsKKyAgICBtdXN0IGJlIDAuCisKK09wdGlvbmFsIFByb3BlcnRpZXM6CistIGNsb2NrczogTGlzdCBvZiBjbG9jayBoYW5kbGVzLiBUaGUgcGFyZW50IGNsb2NrcyBvZiB0aGUgaW5wdXQgY2xvY2tzIHRvIHRoZQorCWRldmljZXMgaW4gdGhpcyBwb3dlciBkb21haW4gYXJlIHNldCB0byBvc2NjbGsgYmVmb3JlIHBvd2VyIGdhdGluZworCWFuZCByZXN0b3JlZCBiYWNrIGFmdGVyIHBvd2VyaW5nIG9uIGEgZG9tYWluLiBUaGlzIGlzIHJlcXVpcmVkIGZvcgorCWFsbCBkb21haW5zIHdoaWNoIGFyZSBwb3dlcmVkIG9uIGFuZCBvZmYgYW5kIG5vdCByZXF1aXJlZCBmb3IgdW51c2VkCisJZG9tYWlucy4KKy0gY2xvY2stbmFtZXM6IFRoZSBmb2xsb3dpbmcgY2xvY2tzIGNhbiBiZSBzcGVjaWZpZWQ6CisJLSBvc2NjbGs6IE9zY2lsbGF0b3IgY2xvY2suCisJLSBjbGtOOiBJbnB1dCBjbG9ja3MgdG8gdGhlIGRldmljZXMgaW4gdGhpcyBwb3dlciBkb21haW4uIFRoZXNlIGNsb2NrcworCQl3aWxsIGJlIHJlcGFyZW50ZWQgdG8gb3NjY2xrIGJlZm9yZSBzd2l0aGluZyBwb3dlciBkb21haW4gb2ZmLgorCQlUaGVpciBvcmlnaW5hbCBwYXJlbnQgd2lsbCBiZSBicm91Z2h0IGJhY2sgYWZ0ZXIgdHVybmluZyBvbgorCQl0aGUgZG9tYWluLiBNYXhpbXVtIG9mIDQgY2xvY2tzIChOID0gMCB0byAzKSBhcmUgc3VwcG9ydGVkLgorCS0gYXNiTjogQ2xvY2tzIHJlcXVpcmVkIGJ5IGFzeW5jaHJvbm91cyBicmlkZ2VzIChBU0IpIHByZXNlbnQgaW4KKwkJdGhlIHBvd2VyIGRvbWFpbi4gVGhlc2UgY2xvY2sgc2hvdWxkIGJlIGVuYWJsZWQgZHVyaW5nIHBvd2VyCisJCWRvbWFpbiBvbi9vZmYgb3BlcmF0aW9ucy4KKy0gcG93ZXItZG9tYWluczogcGhhbmRsZSBwb2ludGluZyB0byB0aGUgcGFyZW50IHBvd2VyIGRvbWFpbiwgZm9yIG1vcmUgZGV0YWlscworCQkgc2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9wb3dlcl9kb21haW4udHh0CisKK05vZGUgb2YgYSBkZXZpY2UgdXNpbmcgcG93ZXIgZG9tYWlucyBtdXN0IGhhdmUgYSBwb3dlci1kb21haW5zIHByb3BlcnR5CitkZWZpbmVkIHdpdGggYSBwaGFuZGxlIHRvIHJlc3BlY3RpdmUgcG93ZXIgZG9tYWluLgorCitFeGFtcGxlOgorCisJbGNkMDogcG93ZXItZG9tYWluLWxjZDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNDIxMC1wZCI7CisJCXJlZyA9IDwweDEwMDIzQzAwIDB4MTA+OworCQkjcG93ZXItZG9tYWluLWNlbGxzID0gPDA+OworCX07CisKKwltZmNfcGQ6IHBvd2VyLWRvbWFpbkAxMDA0NDA2MCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M0MjEwLXBkIjsKKwkJcmVnID0gPDB4MTAwNDQwNjAgMHgyMD47CisJCWNsb2NrcyA9IDwmY2xvY2sgQ0xLX0ZJTl9QTEw+LCA8JmNsb2NrIENMS19NT1VUX1VTRVJfQUNMSzMzMz47CisJCWNsb2NrLW5hbWVzID0gIm9zY2NsayIsICJjbGswIjsKKwkJI3Bvd2VyLWRvbWFpbi1jZWxscyA9IDwwPjsKKwl9OworCitTZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3Bvd2VyX2RvbWFpbi50eHQgZm9yIGRlc2NyaXB0aW9uCitvZiBjb25zdW1lci1zaWRlIGJpbmRpbmdzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3Bvd2VyLWNvbnRyb2xsZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3Bvd2VyLWNvbnRyb2xsZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmN2EzYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvcG93ZXItY29udHJvbGxlci50eHQKQEAgLTAsMCArMSwxOCBAQAorKiBHZW5lcmljIHN5c3RlbSBwb3dlciBjb250cm9sIGNhcGFiaWxpdHkKKworUG93ZXItbWFuYWdlbWVudCBpbnRlZ3JhdGVkIGNpcmN1aXRzIG9yIG1pc2NlbGxhbmVvdXMgaGFyZHdhcmUgY29tcG9uZW50cyBhcmUKK3NvbWV0aW1lcyBhYmxlIHRvIGNvbnRyb2wgdGhlIHN5c3RlbSBwb3dlci4gVGhlIGRldmljZSBkcml2ZXIgYXNzb2NpYXRlZCB3aXRoIHRoZXNlCitjb21wb25lbnRzIG1pZ2h0IG5lZWQgdG8gZGVmaW5lIHRoaXMgY2FwYWJpbGl0eSwgd2hpY2ggdGVsbHMgdGhlIGtlcm5lbCB0aGF0CitpdCBjYW4gYmUgdXNlZCB0byBzd2l0Y2ggb2ZmIHRoZSBzeXN0ZW0uIFRoZSBjb3JyZXNwb25kaW5nIGRldmljZSBtdXN0IGhhdmUgdGhlCitzdGFuZGFyZCBwcm9wZXJ0eSAic3lzdGVtLXBvd2VyLWNvbnRyb2xsZXIiIGluIGl0cyBkZXZpY2Ugbm9kZS4gVGhpcyBwcm9wZXJ0eQorbWFya3MgdGhlIGRldmljZSBhcyBhYmxlIHRvIGNvbnRyb2wgdGhlIHN5c3RlbSBwb3dlci4gSW4gb3JkZXIgdG8gdGVzdCBpZiB0aGlzCitwcm9wZXJ0eSBpcyBmb3VuZCBwcm9ncmFtbWF0aWNhbGx5LCB1c2UgdGhlIGhlbHBlciBmdW5jdGlvbgorIm9mX2RldmljZV9pc19zeXN0ZW1fcG93ZXJfY29udHJvbGxlciIgZnJvbSBvZi5oIC4KKworRXhhbXBsZToKKworYWN0ODg0NjogYWN0ODg0NkA1IHsKKwkgY29tcGF0aWJsZSA9ICJhY3RpdmUtc2VtaSxhY3Q4ODQ2IjsKKwkgc3RhdHVzID0gIm9rYXkiOworCSBzeXN0ZW0tcG93ZXItY29udHJvbGxlcjsKK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9wb3dlcl9kb21haW4udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3Bvd2VyX2RvbWFpbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI1YjVlNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9wb3dlcl9kb21haW4udHh0CkBAIC0wLDAgKzEsNzggQEAKKyogR2VuZXJpYyBQTSBkb21haW5zCisKK1N5c3RlbSBvbiBjaGlwIGRlc2lnbnMgYXJlIG9mdGVuIGRpdmlkZWQgaW50byBtdWx0aXBsZSBQTSBkb21haW5zIHRoYXQgY2FuIGJlCit1c2VkIGZvciBwb3dlciBnYXRpbmcgb2Ygc2VsZWN0ZWQgSVAgYmxvY2tzIGZvciBwb3dlciBzYXZpbmcgYnkgcmVkdWNlZCBsZWFrYWdlCitjdXJyZW50LgorCitUaGlzIGRldmljZSB0cmVlIGJpbmRpbmcgY2FuIGJlIHVzZWQgdG8gYmluZCBQTSBkb21haW4gY29uc3VtZXIgZGV2aWNlcyB3aXRoCit0aGVpciBQTSBkb21haW5zIHByb3ZpZGVkIGJ5IFBNIGRvbWFpbiBwcm92aWRlcnMuIEEgUE0gZG9tYWluIHByb3ZpZGVyIGNhbiBiZQorcmVwcmVzZW50ZWQgYnkgYW55IG5vZGUgaW4gdGhlIGRldmljZSB0cmVlIGFuZCBjYW4gcHJvdmlkZSBvbmUgb3IgbW9yZSBQTQorZG9tYWlucy4gQSBjb25zdW1lciBub2RlIGNhbiByZWZlciB0byB0aGUgcHJvdmlkZXIgYnkgYSBwaGFuZGxlIGFuZCBhIHNldCBvZgorcGhhbmRsZSBhcmd1bWVudHMgKHNvIGNhbGxlZCBQTSBkb21haW4gc3BlY2lmaWVycykgb2YgbGVuZ3RoIHNwZWNpZmllZCBieSB0aGUKKyNwb3dlci1kb21haW4tY2VsbHMgcHJvcGVydHkgaW4gdGhlIFBNIGRvbWFpbiBwcm92aWRlciBub2RlLgorCis9PVBNIGRvbWFpbiBwcm92aWRlcnM9PQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gI3Bvd2VyLWRvbWFpbi1jZWxscyA6IE51bWJlciBvZiBjZWxscyBpbiBhIFBNIGRvbWFpbiBzcGVjaWZpZXI7CisgICBUeXBpY2FsbHkgMCBmb3Igbm9kZXMgcmVwcmVzZW50aW5nIGEgc2luZ2xlIFBNIGRvbWFpbiBhbmQgMSBmb3Igbm9kZXMKKyAgIHByb3ZpZGluZyBtdWx0aXBsZSBQTSBkb21haW5zIChlLmcuIHBvd2VyIGNvbnRyb2xsZXJzKSwgYnV0IGNhbiBiZSBhbnkgdmFsdWUKKyAgIGFzIHNwZWNpZmllZCBieSBkZXZpY2UgdHJlZSBiaW5kaW5nIGRvY3VtZW50YXRpb24gb2YgcGFydGljdWxhciBwcm92aWRlci4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAtIHBvd2VyLWRvbWFpbnMgOiBBIHBoYW5kbGUgYW5kIFBNIGRvbWFpbiBzcGVjaWZpZXIgYXMgZGVmaW5lZCBieSBiaW5kaW5ncyBvZgorICAgICAgICAgICAgICAgICAgIHRoZSBwb3dlciBjb250cm9sbGVyIHNwZWNpZmllZCBieSBwaGFuZGxlLgorICAgU29tZSBwb3dlciBkb21haW5zIG1pZ2h0IGJlIHBvd2VyZWQgZnJvbSBhbm90aGVyIHBvd2VyIGRvbWFpbiAob3IgaGF2ZQorICAgb3RoZXIgaGFyZHdhcmUgc3BlY2lmaWMgZGVwZW5kZW5jaWVzKS4gRm9yIHJlcHJlc2VudGluZyBzdWNoIGRlcGVuZGVuY3kKKyAgIGEgc3RhbmRhcmQgUE0gZG9tYWluIGNvbnN1bWVyIGJpbmRpbmcgaXMgdXNlZC4gV2hlbiBwcm92aWRlZCwgYWxsIGRvbWFpbnMKKyAgIGNyZWF0ZWQgYnkgdGhlIGdpdmVuIHByb3ZpZGVyIHNob3VsZCBiZSBzdWJkb21haW5zIG9mIHRoZSBkb21haW4KKyAgIHNwZWNpZmllZCBieSB0aGlzIGJpbmRpbmcuIE1vcmUgZGV0YWlscyBhYm91dCBwb3dlciBkb21haW4gc3BlY2lmaWVyIGFyZQorICAgYXZhaWxhYmxlIGluIHRoZSBuZXh0IHNlY3Rpb24uCisKK0V4YW1wbGU6CisKKwlwb3dlcjogcG93ZXItY29udHJvbGxlckAxMjM0MDAwMCB7CisJCWNvbXBhdGlibGUgPSAiZm9vLHBvd2VyLWNvbnRyb2xsZXIiOworCQlyZWcgPSA8MHgxMjM0MDAwMCAweDEwMDA+OworCQkjcG93ZXItZG9tYWluLWNlbGxzID0gPDE+OworCX07CisKK1RoZSBub2RlIGFib3ZlIGRlZmluZXMgYSBwb3dlciBjb250cm9sbGVyIHRoYXQgaXMgYSBQTSBkb21haW4gcHJvdmlkZXIgYW5kCitleHBlY3RzIG9uZSBjZWxsIGFzIGl0cyBwaGFuZGxlIGFyZ3VtZW50LgorCitFeGFtcGxlIDI6CisKKwlwYXJlbnQ6IHBvd2VyLWNvbnRyb2xsZXJAMTIzNDAwMDAgeworCQljb21wYXRpYmxlID0gImZvbyxwb3dlci1jb250cm9sbGVyIjsKKwkJcmVnID0gPDB4MTIzNDAwMDAgMHgxMDAwPjsKKwkJI3Bvd2VyLWRvbWFpbi1jZWxscyA9IDwxPjsKKwl9OworCisJY2hpbGQ6IHBvd2VyLWNvbnRyb2xsZXJAMTIzNDEwMDAgeworCQljb21wYXRpYmxlID0gImZvbyxwb3dlci1jb250cm9sbGVyIjsKKwkJcmVnID0gPDB4MTIzNDEwMDAgMHgxMDAwPjsKKwkJcG93ZXItZG9tYWlucyA9IDwmcGFyZW50IDA+OworCQkjcG93ZXItZG9tYWluLWNlbGxzID0gPDE+OworCX07CisKK1RoZSBub2RlcyBhYm92ZSBkZWZpbmUgdHdvIHBvd2VyIGNvbnRyb2xsZXJzOiAncGFyZW50JyBhbmQgJ2NoaWxkJy4KK0RvbWFpbnMgY3JlYXRlZCBieSB0aGUgJ2NoaWxkJyBwb3dlciBjb250cm9sbGVyIGFyZSBzdWJkb21haW5zIG9mICcwJyBwb3dlcgorZG9tYWluIHByb3ZpZGVkIGJ5IHRoZSAncGFyZW50JyBwb3dlciBjb250cm9sbGVyLgorCis9PVBNIGRvbWFpbiBjb25zdW1lcnM9PQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gcG93ZXItZG9tYWlucyA6IEEgcGhhbmRsZSBhbmQgUE0gZG9tYWluIHNwZWNpZmllciBhcyBkZWZpbmVkIGJ5IGJpbmRpbmdzIG9mCisgICAgICAgICAgICAgICAgICAgdGhlIHBvd2VyIGNvbnRyb2xsZXIgc3BlY2lmaWVkIGJ5IHBoYW5kbGUuCisKK0V4YW1wbGU6CisKKwlsZWFreS1kZXZpY2VAMTIzNTAwMDAgeworCQljb21wYXRpYmxlID0gImZvbyxpLWxlYWstY3VycmVudCI7CisJCXJlZyA9IDwweDEyMzUwMDAwIDB4MTAwMD47CisJCXBvd2VyLWRvbWFpbnMgPSA8JnBvd2VyIDA+OworCX07CisKK1RoZSBub2RlIGFib3ZlIGRlZmluZXMgYSB0eXBpY2FsIFBNIGRvbWFpbiBjb25zdW1lciBkZXZpY2UsIHdoaWNoIGlzIGxvY2F0ZWQKK2luc2lkZSBhIFBNIGRvbWFpbiB3aXRoIGluZGV4IDAgb2YgYSBwb3dlciBjb250cm9sbGVyIHJlcHJlc2VudGVkIGJ5IGEgbm9kZQord2l0aCB0aGUgbGFiZWwgInBvd2VyIi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9xY29tLGNvaW5jZWxsLWNoYXJnZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3Fjb20sY29pbmNlbGwtY2hhcmdlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGU2ZDg3NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9xY29tLGNvaW5jZWxsLWNoYXJnZXIudHh0CkBAIC0wLDAgKzEsNDggQEAKK1F1YWxjb21tIENvaW5jZWxsIENoYXJnZXI6CisKK1RoZSBoYXJkd2FyZSBibG9jayBjb250cm9scyBjaGFyZ2luZyBmb3IgYSBjb2luY2VsbCBvciBjYXBhY2l0b3IgdGhhdCBpcwordXNlZCB0byBwcm92aWRlIHBvd2VyIGJhY2t1cCBmb3IgY2VydGFpbiBmZWF0dXJlcyBvZiB0aGUgcG93ZXIgbWFuYWdlbWVudAorSUMgKFBNSUMpCisKKy0gY29tcGF0aWJsZToKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8c3RyaW5nPgorCURlZmluaXRpb246IG11c3QgYmU6ICJxY29tLHBtODk0MS1jb2luY2VsbCIKKworLSByZWc6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHUzMj4KKwlEZWZpbml0aW9uOiBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvaW5jZWxsIGNoYXJnZXIgcmVnaXN0ZXJzCisKKy0gcWNvbSxyc2V0LW9obXM6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHUzMj4KKwlEZWZpbml0aW9uOiByZXNpc3RhbmNlIChpbiBvaG1zKSBmb3IgY3VycmVudC1saW1pdGluZyByZXNpc3RvcgorCQltdXN0IGJlIG9uZSBvZjogODAwLCAxMjAwLCAxNzAwLCAyMTAwCisKKy0gcWNvbSx2c2V0LW1pbGxpdm9sdHM6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHUzMj4KKwlEZWZpbml0aW9uOiB2b2x0YWdlIChpbiBtaWxsaXZvbHRzKSB0byBhcHBseSBmb3IgY2hhcmdpbmcKKwkJbXVzdCBiZSBvbmUgb2Y6IDI1MDAsIDMwMDAsIDMxMDAsIDMyMDAKKworLSBxY29tLGNoYXJnZXItZGlzYWJsZToKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8Ym9vbGVhbj4KKwlEZWZpbml0aW9uOiBkZWZpbmluaW5nIHRoaXMgcHJvcGVydHkgZGlzYWJsZXMgY2hhcmdpbmcKKworVGhpcyBjaGFyZ2VyIGlzIGEgc3ViLW5vZGUgb2Ygb25lIG9mIHRoZSA4OTQxIFBNSUMgYmxvY2tzLCBhbmQgaXMgc3BlY2lmaWVkCithcyBhIGNoaWxkIG5vZGUgaW4gRFRTIG9mIHRoYXQgbm9kZS4gIFNlZSAuLi9tZmQvcWNvbSxzcG1pLXBtaWMudHh0IGFuZAorLi4vbWZkL3Fjb20tcG04eHh4LnR4dAorCitFeGFtcGxlOgorCisJcG04OTQxQDAgeworCQljb2luY2VsbEAyODAwIHsKKwkJCWNvbXBhdGlibGUgPSAicWNvbSxwbTg5NDEtY29pbmNlbGwiOworCQkJcmVnID0gPDB4MjgwMD47CisKKwkJCXFjb20scnNldC1vaG1zID0gPDIxMDA+OworCQkJcWNvbSx2c2V0LW1pbGxpdm9sdHMgPSA8MzAwMD47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9yZW5lc2FzLHN5c2Mtcm1vYmlsZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvcmVuZXNhcyxzeXNjLXJtb2JpbGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlZGE3ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvcmVuZXNhcyxzeXNjLXJtb2JpbGUudHh0CkBAIC0wLDAgKzEsMTAwIEBACitEVCBiaW5kaW5ncyBmb3IgdGhlIFJlbmVzYXMgUi1Nb2JpbGUgU3lzdGVtIENvbnRyb2xsZXIKKworPT0gU3lzdGVtIENvbnRyb2xsZXIgTm9kZSA9PQorCitUaGUgUi1Nb2JpbGUgU3lzdGVtIENvbnRyb2xsZXIgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CisgIC0gQm9vdCBtb2RlIG1hbmFnZW1lbnQsCisgIC0gUmVzZXQgZ2VuZXJhdGlvbiwKKyAgLSBQb3dlciBtYW5hZ2VtZW50LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgInJlbmVzYXMsc3lzYy08c29jdHlwZT4iLCAicmVuZXNhcyxzeXNjLXJtb2JpbGUiIGFzCisJICAgICAgZmFsbGJhY2suCisJICAgICAgRXhhbXBsZXMgd2l0aCBzb2N0eXBlcyBhcmU6CisJCS0gInJlbmVzYXMsc3lzYy1yOGE3M2E0IiAoUi1Nb2JpbGUgQVBFNikKKwkJLSAicmVuZXNhcyxzeXNjLXI4YTc3NDAiIChSLU1vYmlsZSBBMSkKKwkJLSAicmVuZXNhcyxzeXNjLXNoNzNhMCIgKFNILU1vYmlsZSBBRzUpCistIHJlZzogVHdvIGFkZHJlc3Mgc3RhcnQgYW5kIGFkZHJlc3MgcmFuZ2UgYmxvY2tzIGZvciB0aGUgZGV2aWNlOgorICAgICAgICAgLSBUaGUgZmlyc3QgYmxvY2sgcmVmZXJzIHRvIHRoZSBub3JtYWxseSBhY2Nlc3NpYmxlIHJlZ2lzdGVycywKKyAgICAgICAgIC0gdGhlIHNlY29uZCBibG9jayByZWZlcnMgdG8gdGhlIHJlZ2lzdGVycyBwcm90ZWN0ZWQgYnkgdGhlIEhQQgorCSAgIHNlbWFwaG9yZS4KKworT3B0aW9uYWwgbm9kZXM6CistIHBtLWRvbWFpbnM6IFRoaXMgbm9kZSBjb250YWlucyBhIGhpZXJhcmNoeSBvZiBQTSBkb21haW4gbm9kZXMsIHdoaWNoIHNob3VsZAorICBtYXRjaCB0aGUgUG93ZXIgQXJlYSBIaWVyYXJjaHkgaW4gdGhlIFBvd2VyIERvbWFpbiBTcGVjaWZpY2F0aW9ucyBzZWN0aW9uIG9mCisgIHRoZSBkZXZpY2UncyBkYXRhc2hlZXQuCisKKworPT0gUE0gRG9tYWluIE5vZGVzID09CisKK0VhY2ggb2YgdGhlIFBNIGRvbWFpbiBub2RlcyByZXByZXNlbnRzIGEgUE0gZG9tYWluLCBhcyBkb2N1bWVudGVkIGJ5IHRoZQorZ2VuZXJpYyBQTSBkb21haW4gYmluZGluZ3MgaW4KK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9wb3dlcl9kb21haW4udHh0LgorCitUaGUgbm9kZXMgc2hvdWxkIGJlIG5hbWVkIGJ5IHRoZSByZWFsIHBvd2VyIGFyZWEgbmFtZXMsIGFuZCB0aHVzIHRoZWlyIG5hbWVzCitzaG91bGQgYmUgdW5pcXVlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtICNwb3dlci1kb21haW4tY2VsbHM6IE11c3QgYmUgMC4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gcmVnOiBJZiB0aGUgUE0gZG9tYWluIGlzIG5vdCBhbHdheXMtb24sIHRoaXMgcHJvcGVydHkgbXVzdCBjb250YWluIHRoZSBiaXQKKyAgICAgICBpbmRleCBudW1iZXIgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHBvd2VyIGFyZWEgaW4gdGhlIHZhcmlvdXMgUG93ZXIKKyAgICAgICBDb250cm9sIGFuZCBTdGF0dXMgUmVnaXN0ZXJzLiBUaGUgcGFyZW50J3Mgbm9kZSBtdXN0IGNvbnRhaW4gdGhlCisgICAgICAgZm9sbG93aW5nIHR3byBwcm9wZXJ0aWVzOgorCSAtICNhZGRyZXNzLWNlbGxzOiBNdXN0IGJlIDEsCisJIC0gI3NpemUtY2VsbHM6IE11c3QgYmUgMC4KKyAgICAgICBJZiB0aGUgUE0gZG9tYWluIGlzIGFsd2F5cy1vbiwgdGhpcyBwcm9wZXJ0eSBtdXN0IGJlIG9taXR0ZWQuCisKKworRXhhbXBsZToKKworVGhpcyBzaG93cyBhIHN1YnNldCBvZiB0aGUgcjhhNzc0MCBQTSBkb21haW4gaGllcmFyY2h5LCBjb250YWluaW5nIHRoZQorQzUgImFsd2F5cy1vbiIgZG9tYWluLCAyIG9mIGl0cyBzdWJkb21haW5zIChBNFMgYW5kIEE0U1UpLCBhbmQgdGhlIEEzU1AgZG9tYWluLAord2hpY2ggaXMgYSBzdWJkb21haW4gb2YgQTRTLgorCisJc3lzYzogc3lzdGVtLWNvbnRyb2xsZXJAZTYxODAwMDAgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMsc3lzYy1yOGE3NzQwIiwgInJlbmVzYXMsc3lzYy1ybW9iaWxlIjsKKwkJcmVnID0gPDB4ZTYxODAwMDAgMHg4MDAwPiwgPDB4ZTYxODgwMDAgMHg4MDAwPjsKKworCQlwbS1kb21haW5zIHsKKwkJCXBkX2M1OiBjNSB7CisJCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkJI3NpemUtY2VsbHMgPSA8MD47CisJCQkJI3Bvd2VyLWRvbWFpbi1jZWxscyA9IDwwPjsKKworCQkJCXBkX2E0czogYTRzQDEwIHsKKwkJCQkJcmVnID0gPDEwPjsKKwkJCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkJCSNzaXplLWNlbGxzID0gPDA+OworCQkJCQkjcG93ZXItZG9tYWluLWNlbGxzID0gPDA+OworCisJCQkJCXBkX2Ezc3A6IGEzc3BAMTEgeworCQkJCQkJcmVnID0gPDExPjsKKwkJCQkJCSNwb3dlci1kb21haW4tY2VsbHMgPSA8MD47CisJCQkJCX07CisJCQkJfTsKKworCQkJCXBkX2E0c3U6IGE0c3VAMjAgeworCQkJCQlyZWcgPSA8MjA+OworCQkJCQkjcG93ZXItZG9tYWluLWNlbGxzID0gPDA+OworCQkJCX07CisJCQl9OworCQl9OworCX07CisKKworPT0gUE0gRG9tYWluIENvbnN1bWVycyA9PQorCitIYXJkd2FyZSBibG9ja3MgYmVsb25naW5nIHRvIGEgUE0gZG9tYWluIHNob3VsZCBjb250YWluIGEgInBvd2VyLWRvbWFpbnMiCitwcm9wZXJ0eSB0aGF0IGlzIGEgcGhhbmRsZSBwb2ludGluZyB0byB0aGUgY29ycmVzcG9uZGluZyBQTSBkb21haW4gbm9kZS4KKworRXhhbXBsZToKKworCXRwdTogcHdtQGU2NjAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLHRwdS1yOGE3NzQwIiwgInJlbmVzYXMsdHB1IjsKKwkJcmVnID0gPDB4ZTY2MDAwMDAgMHgxMDA+OworCQljbG9ja3MgPSA8Jm1zdHAzX2Nsa3MgUjhBNzc0MF9DTEtfVFBVMD47CisJCXBvd2VyLWRvbWFpbnMgPSA8JnBkX2Ezc3A+OworCQkjcHdtLWNlbGxzID0gPDM+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvcmVzZXQva2V5c3RvbmUtcmVzZXQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3Jlc2V0L2tleXN0b25lLXJlc2V0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODJmMTJlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3Jlc2V0L2tleXN0b25lLXJlc2V0LnR4dApAQCAtMCwwICsxLDY3IEBACisqIERldmljZSB0cmVlIGJpbmRpbmdzIGZvciBUZXhhcyBJbnN0cnVtZW50cyBrZXlzdG9uZSByZXNldAorCitUaGlzIG5vZGUgaXMgaW50ZW5kZWQgdG8gYWxsb3cgU29DIHJlc2V0IGluIGNhc2Ugb2Ygc29mdHdhcmUgcmVzZXQKK29mIHNlbGVjdGVkIHdhdGNoZG9ncy4KKworVGhlIEtleXN0b25lIFNvQ3MgY2FuIGNvbnRhaW4gdXAgdG8gNCB3YXRjaGRvZyB0aW1lcnMgdG8gcmVzZXQKK1NvQy4gRWFjaCB3YXRjaGRvZyB0aW1lciBldmVudCBpbnB1dCBpcyBjb25uZWN0ZWQgdG8gdGhlIFJlc2V0IE11eAorYmxvY2suIFRoZSBSZXNldCBNdXggYmxvY2sgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gY2F1c2UgcmVzZXQgb3Igbm90LgorCitBZGRpdGlvbmFsbHkgc29mdCBvciBoYXJkIHJlc2V0IGNhbiBiZSBjb25maWd1cmVkLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6CQl0aSxrZXlzdG9uZS1yZXNldAorCistIHRpLHN5c2Nvbi1wbGw6CXBoYW5kbGUvb2Zmc2V0IHBhaXIuIFRoZSBwaGFuZGxlIHRvIHN5c2NvbiB1c2VkIHRvCisJCQlhY2Nlc3MgcGxsIGNvbnRyb2xsZXIgcmVnaXN0ZXJzIGFuZCB0aGUgb2Zmc2V0IHRvIHVzZQorCQkJcmVzZXQgY29udHJvbCByZWdpc3RlcnMuCisKKy0gdGksc3lzY29uLWRldjoJcGhhbmRsZS9vZmZzZXQgcGFpci4gVGhlIHBoYW5kbGUgdG8gc3lzY29uIHVzZWQgdG8KKwkJCWFjY2VzcyBkZXZpY2Ugc3RhdGUgY29udHJvbCByZWdpc3RlcnMgYW5kIHRoZSBvZmZzZXQKKwkJCWluIG9yZGVyIHRvIHVzZSBtdXggYmxvY2sgcmVnaXN0ZXJzIGZvciBhbGwgd2F0Y2hkb2dzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIHRpLHNvZnQtcmVzZXQ6CUJvb2xlYW4gb3B0aW9uIGluZGljYXRpbmcgc29mdCByZXNldC4KKwkJCUJ5IGRlZmF1bHQgaGFyZCByZXNldCBpcyB1c2VkLgorCistIHRpLHdkdC1saXN0OgkJV0RUIGxpc3QgdGhhdCBjYW4gY2F1c2UgU29DIHJlc2V0LiBJdCdzIG5vdCByZWxhdGVkCisJCQl0byBXRFQgZHJpdmVyLCBpdCdzIGp1c3QgbmVlZGVkIHRvIGVuYWJsZSBhIFNvQyByZWxhdGVkCisJCQlyZXNldCB0aGF0J3MgdHJpZ2dlcmVkIGJ5IG9uZSBvZiBXRFRzLiBUaGUgbGlzdCBpcworCQkJaW4gZm9ybWF0OiA8MD4sIDwyPjsgSXQgY2FuIGJlIGluIHJhbmRvbSBvcmRlciBhbmQKKwkJCWJlZ2lucyBmcm9tIDAgdG8gMywgYXMga2V5c3RvbmUgY2FuIGNvbnRhaW4gdXAgdG8gNCBTb0MKKwkJCXJlc2V0IHdhdGNoZG9ncyBhbmQgY2FuIGJlIGluIHJhbmRvbSBvcmRlci4KKworRXhhbXBsZSAxOgorU2V0dXAga2V5c3RvbmUgcmVzZXQgc28gdGhhdCBpbiBjYXNlIHNvZnR3YXJlIHJlc2V0IG9yCitXRFQwIGlzIHRyaWdnZXJlZCBpdCBpc3N1ZXMgaGFyZCByZXNldCBmb3IgU29DLgorCitwbGxjdHJsOiBwbGwtY29udHJvbGxlckAwMjMxMDAwMCB7CisJY29tcGF0aWJsZSA9ICJ0aSxrZXlzdG9uZS1wbGxjdHJsIiwgInN5c2NvbiI7CisJcmVnID0gPDB4MDIzMTAwMDAgMHgyMDA+OworfTsKKworZGV2Y3RybDogZGV2aWNlLXN0YXRlLWNvbnRyb2xAMDI2MjAwMDAgeworCWNvbXBhdGlibGUgPSAidGksa2V5c3RvbmUtZGV2Y3RybCIsICJzeXNjb24iOworCXJlZyA9IDwweDAyNjIwMDAwIDB4MTAwMD47Cit9OworCityc3RjdHJsOiByZXNldC1jb250cm9sbGVyIHsKKwljb21wYXRpYmxlID0gInRpLGtleXN0b25lLXJlc2V0IjsKKwl0aSxzeXNjb24tcGxsID0gPCZwbGxjdHJsIDB4ZTQ+OworCXRpLHN5c2Nvbi1kZXYgPSA8JmRldmN0cmwgMHgzMjg+OworCXRpLHdkdC1saXN0ID0gPDA+OworfTsKKworRXhhbXBsZSAyOgorU2V0dXAga2V5c3RvbmUgcmVzZXQgc28gdGhhdCBpbiBjYXNlIG9mIHNvZnR3YXJlIHJlc2V0IG9yCitXRFQwIG9yIFdEVDIgaXMgdHJpZ2dlcmVkIGl0IGlzc3VlcyBzb2Z0IHJlc2V0IGZvciBTb0MuCisKK3JzdGN0cmw6IHJlc2V0LWNvbnRyb2xsZXIgeworCWNvbXBhdGlibGUgPSAidGksa2V5c3RvbmUtcmVzZXQiOworCXRpLHN5c2Nvbi1wbGwgPSA8JnBsbGN0cmwgMHhlND47CisJdGksc3lzY29uLWRldiA9IDwmZGV2Y3RybCAweDMyOD47CisJdGksd2R0LWxpc3QgPSA8MD4sIDwyPjsKKwl0aSxzb2Z0LXJlc2V0OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9yZXNldC9sdGMyOTUyLXBvd2Vyb2ZmLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9yZXNldC9sdGMyOTUyLXBvd2Vyb2ZmLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDJkN2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3Jlc2V0L2x0YzI5NTItcG93ZXJvZmYudHh0CkBAIC0wLDAgKzEsMjkgQEAKK0JpbmRpbmcgZm9yIHRoZSBMVEMyOTUyIFBvd2VyUGF0aCBjb250cm9sbGVyCisKK1RoaXMgY2hpcCBpcyB1c2VkIHRvIGV4dGVybmFsbHkgdHJpZ2dlciBhIHN5c3RlbSBzaHV0IGRvd24uIE9uY2UgdGhlIHRyaWdnZXIgaGFzCitiZWVuIHNlbnQsIHRoZSBjaGlwJ3Mgd2F0Y2hkb2cgaGFzIHRvIGJlIHJlc2V0IHRvIGdyYWNlZnVsbHkgc2h1dCBkb3duLgorQSBmdWxsIHBvd2VyZG93biBjYW4gYmUgdHJpZ2dlcmVkIHZpYSB0aGUga2lsbCBzaWduYWwuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZToJCU11c3QgY29udGFpbjogImxsdGMsbHRjMjk1MiIKKy0gd2F0Y2hkb2ctZ3Bpb3M6CXBoYW5kbGUgKyBncGlvLXNwZWNpZmllciBmb3IgdGhlIEdQSU8gY29ubmVjdGVkIHRvIHRoZQorCQkJY2hpcCdzIHdhdGNoZG9nIGxpbmUKKy0ga2lsbC1ncGlvczoJCXBoYW5kbGUgKyBncGlvLXNwZWNpZmllciBmb3IgdGhlIEdQSU8gY29ubmVjdGVkIHRvIHRoZQorCQkJY2hpcCdzIGtpbGwgbGluZQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSB0cmlnZ2VyLWdwaW9zOglwaGFuZGxlICsgZ3Bpby1zcGVjaWZpZXIgZm9yIHRoZSBHUElPIGNvbm5lY3RlZCB0byB0aGUKKwkJCWNoaXAncyB0cmlnZ2VyIGxpbmUuIElmIHRoaXMgcHJvcGVydHkgaXMgbm90IHNldCwgdGhlCisJCQl0cmlnZ2VyIGZ1bmN0aW9uIGlzIGlnbm9yZWQgYW5kIHRoZSBjaGlwIGlzIGtlcHQgYWxpdmUKKwkJCXVudGlsIGFuIGV4cGxpY2l0IGtpbGwgc2lnbmFsIGlzIHJlY2VpdmVkCisKK0V4YW1wbGU6CisKK2x0YzI5NTIgeworCWNvbXBhdGlibGUgPSAibGx0YyxsdGMyOTUyIjsKKworCXRyaWdnZXItZ3Bpb3MgPSA8JmdwaW8wIDEgR1BJT19BQ1RJVkVfTE9XPjsKKwl3YXRjaGRvZy1ncGlvcyA9IDwmZ3BpbzEgMiBHUElPX0FDVElWRV9ISUdIPjsKKwlraWxsLWdwaW9zID0gPCZncGlvMCAyIEdQSU9fQUNUSVZFX0xPVz47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3Jlc2V0L3N0LXJlc2V0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9yZXNldC9zdC1yZXNldC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA5YWY1NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9yZXNldC9zdC1yZXNldC50eHQKQEAgLTAsMCArMSwxMSBAQAorKkRldmljZS1UcmVlIGJpbmRpbmdzIGZvciBTVCBTVyByZXNldCBmdW5jdGlvbmFsaXR5CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAic3QsPGNoaXA+LXJlc3RhcnQiLgorLSBzdCxzeXNjZmc6IHNob3VsZCBiZSBhIHBoYW5kbGUgb2YgdGhlIHN5c2NmZyBub2RlLgorCitFeGFtcGxlIG5vZGU6CisJcmVzdGFydCB7CisJCWNvbXBhdGlibGUgPSAic3Qsc3RpaDQxNi1yZXN0YXJ0IjsKKwkJc3Qsc3lzY2ZnID0gPCZzeXNjZmdfc2JjPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3Jlc2V0L3N5c2Nvbi1wb3dlcm9mZi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvcmVzZXQvc3lzY29uLXBvd2Vyb2ZmLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTI1NDZmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3Jlc2V0L3N5c2Nvbi1wb3dlcm9mZi50eHQKQEAgLTAsMCArMSwyMyBAQAorR2VuZXJpYyBTWVNDT04gbWFwcGVkIHJlZ2lzdGVyIHBvd2Vyb2ZmIGRyaXZlcgorCitUaGlzIGlzIGEgZ2VuZXJpYyBwb3dlcm9mZiBkcml2ZXIgdXNpbmcgc3lzY29uIHRvIG1hcCB0aGUgcG93ZXJvZmYgcmVnaXN0ZXIuCitUaGUgcG93ZXJvZmYgaXMgZ2VuZXJhbGx5IHBlcmZvcm1lZCB3aXRoIGEgd3JpdGUgdG8gdGhlIHBvd2Vyb2ZmIHJlZ2lzdGVyCitkZWZpbmVkIGJ5IHRoZSByZWdpc3RlciBtYXAgcG9pbnRlZCBieSBzeXNjb24gcmVmZXJlbmNlIHBsdXMgdGhlIG9mZnNldAord2l0aCB0aGUgbWFzayBkZWZpbmVkIGluIHRoZSBwb3dlcm9mZiBub2RlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgY29udGFpbiAic3lzY29uLXBvd2Vyb2ZmIgorLSByZWdtYXA6IHRoaXMgaXMgcGhhbmRsZSB0byB0aGUgcmVnaXN0ZXIgbWFwIG5vZGUKKy0gb2Zmc2V0OiBvZmZzZXQgaW4gdGhlIHJlZ2lzdGVyIG1hcCBmb3IgdGhlIHBvd2Vyb2ZmIHJlZ2lzdGVyIChpbiBieXRlcykKKy0gbWFzazogdGhlIHBvd2Vyb2ZmIHZhbHVlIHdyaXR0ZW4gdG8gdGhlIHBvd2Vyb2ZmIHJlZ2lzdGVyICgzMiBiaXQgYWNjZXNzKQorCitEZWZhdWx0IHdpbGwgYmUgbGl0dGxlIGVuZGlhbiBtb2RlLCAzMiBiaXQgYWNjZXNzIG9ubHkuCisKK0V4YW1wbGVzOgorCisJcG93ZXJvZmYgeworCSAgIGNvbXBhdGlibGUgPSAic3lzY29uLXBvd2Vyb2ZmIjsKKwkgICByZWdtYXAgPSA8JnJlZ21hcG5vZGU+OworCSAgIG9mZnNldCA9IDwweDA+OworCSAgIG1hc2sgPSA8MHg3YT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9yZXNldC9zeXNjb24tcmVib290LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9yZXNldC9zeXNjb24tcmVib290LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTkwNjMxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3Jlc2V0L3N5c2Nvbi1yZWJvb3QudHh0CkBAIC0wLDAgKzEsMjMgQEAKK0dlbmVyaWMgU1lTQ09OIG1hcHBlZCByZWdpc3RlciByZXNldCBkcml2ZXIKKworVGhpcyBpcyBhIGdlbmVyaWMgcmVzZXQgZHJpdmVyIHVzaW5nIHN5c2NvbiB0byBtYXAgdGhlIHJlc2V0IHJlZ2lzdGVyLgorVGhlIHJlc2V0IGlzIGdlbmVyYWxseSBwZXJmb3JtZWQgd2l0aCBhIHdyaXRlIHRvIHRoZSByZXNldCByZWdpc3RlcgorZGVmaW5lZCBieSB0aGUgcmVnaXN0ZXIgbWFwIHBvaW50ZWQgYnkgc3lzY29uIHJlZmVyZW5jZSBwbHVzIHRoZSBvZmZzZXQKK3dpdGggdGhlIG1hc2sgZGVmaW5lZCBpbiB0aGUgcmVib290IG5vZGUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBjb250YWluICJzeXNjb24tcmVib290IgorLSByZWdtYXA6IHRoaXMgaXMgcGhhbmRsZSB0byB0aGUgcmVnaXN0ZXIgbWFwIG5vZGUKKy0gb2Zmc2V0OiBvZmZzZXQgaW4gdGhlIHJlZ2lzdGVyIG1hcCBmb3IgdGhlIHJlYm9vdCByZWdpc3RlciAoaW4gYnl0ZXMpCistIG1hc2s6IHRoZSByZXNldCB2YWx1ZSB3cml0dGVuIHRvIHRoZSByZWJvb3QgcmVnaXN0ZXIgKDMyIGJpdCBhY2Nlc3MpCisKK0RlZmF1bHQgd2lsbCBiZSBsaXR0bGUgZW5kaWFuIG1vZGUsIDMyIGJpdCBhY2Nlc3Mgb25seS4KKworRXhhbXBsZXM6CisKKwlyZWJvb3QgeworCSAgIGNvbXBhdGlibGUgPSAic3lzY29uLXJlYm9vdCI7CisJICAgcmVnbWFwID0gPCZyZWdtYXBub2RlPjsKKwkgICBvZmZzZXQgPSA8MHgwPjsKKwkgICBtYXNrID0gPDB4MT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9yb2NrY2hpcC1pby1kb21haW4udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3JvY2tjaGlwLWlvLWRvbWFpbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg2MjdlNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9yb2NrY2hpcC1pby1kb21haW4udHh0CkBAIC0wLDAgKzEsOTcgQEAKK1JvY2tjaGlwIFNSQU0gZm9yIElPIFZvbHRhZ2UgRG9tYWluczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSU8gZG9tYWluIHZvbHRhZ2VzIG9uIHNvbWUgUm9ja2NoaXAgU29DcyBhcmUgdmFyaWFibGUgYnV0IG5lZWQgdG8gYmUKK2tlcHQgaW4gc3luYyBiZXR3ZWVuIHRoZSByZWd1bGF0b3JzIGFuZCB0aGUgU29DIHVzaW5nIGEgc3BlY2lhbAorcmVnaXN0ZXIuCisKK0Egc3BlY2lmaWMgZXhhbXBsZSB1c2luZyByazMyODg6CistIElmIHRoZSByZWd1bGF0b3IgaG9va2VkIHVwIHRvIGEgcGluIGxpa2UgU0RNTUMwX1ZERCBpcyAzLjNWIHRoZW4KKyAgYml0IDcgb2YgR1JGX0lPX1ZTRUwgbmVlZHMgdG8gYmUgMC4gIElmIHRoZSByZWd1bGF0b3IgaG9va2VkIHVwIHRvCisgIHRoYXQgc2FtZSBwaW4gaXMgMS44ViB0aGVuIGJpdCA3IG9mIEdSRl9JT19WU0VMIG5lZWRzIHRvIGJlIDEuCisKK1NhaWQgYW5vdGhlciB3YXksIHRoaXMgZHJpdmVyIHNpbXBseSBoYW5kbGVzIGtlZXBpbmcgYml0cyBpbiB0aGUgU29DJ3MKK2dlbmVyYWwgcmVnaXN0ZXIgZmlsZSAoR1JGKSBpbiBzeW5jIHdpdGggdGhlIGFjdHVhbCB2YWx1ZSBvZiBhIHZvbHRhZ2UKK2hvb2tlZCB1cCB0byB0aGUgcGlucy4KKworTm90ZSB0aGF0IHRoaXMgZHJpdmVyIHNwZWNpZmljYWxseSBkb2Vzbid0IGluY2x1ZGU6CistIGFueSBsb2dpYyBmb3IgZGVjaWRpbmcgd2hhdCB2b2x0YWdlIHdlIHNob3VsZCBzZXQgcmVndWxhdG9ycyB0bworLSBhbnkgbG9naWMgZm9yIGRlY2lkaW5nIHdoZXRoZXIgcmVndWxhdG9ycyAob3IgaW50ZXJuYWwgU29DIGJsb2NrcykKKyAgc2hvdWxkIGhhdmUgcG93ZXIgb3Igbm90IGhhdmUgcG93ZXIKKworSWYgdGhlcmUgd2VyZSBzb21lIG90aGVyIHNvZnR3YXJlIHRoYXQgaGFkIHRoZSBzbWFydHMgb2YgbWFraW5nCitkZWNpc2lvbnMgYWJvdXQgcmVndWxhdG9ycywgaXQgd291bGQgd29yayBpbiBjb25qdW5jdGlvbiB3aXRoIHRoaXMKK2RyaXZlci4gIFdoZW4gdGhhdCBvdGhlciBzb2Z0d2FyZSBhZGp1c3RlZCBhIHJlZ3VsYXRvcidzIHZvbHRhZ2UgdGhlbgordGhpcyBkcml2ZXIgd291bGQgaGFuZGxlIHRlbGxpbmcgdGhlIFNvQyBhYm91dCBpdC4gIEEgZ29vZCBleGFtcGxlIGlzCit2cW1tYyBmb3IgU0QuICBJbiB0aGF0IGNhc2UgdGhlIGR3X21tYyBkcml2ZXIgc2ltcGx5IGlzIHRvbGQgYWJvdXQgYQorcmVndWxhdG9yLiAgSXQgY2hhbmdlcyB0aGUgcmVndWxhdG9yIGJldHdlZW4gMy4zViBhbmQgMS44ViBhdCB0aGUKK3JpZ2h0IHRpbWUuICBUaGlzIGRyaXZlciBub3RpY2VzIHRoZSBjaGFuZ2UgYW5kIG1ha2VzIHN1cmUgdGhhdCB0aGUKK1NvQyBpcyBvbiB0aGUgc2FtZSBwYWdlLgorCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2Y6CisgIC0gInJvY2tjaGlwLHJrMzE4OC1pby12b2x0YWdlLWRvbWFpbiIgZm9yIHJrMzE4OAorICAtICJyb2NrY2hpcCxyazMyODgtaW8tdm9sdGFnZS1kb21haW4iIGZvciByazMyODgKKyAgLSAicm9ja2NoaXAscmszMzY4LWlvLXZvbHRhZ2UtZG9tYWluIiBmb3IgcmszMzY4CisgIC0gInJvY2tjaGlwLHJrMzM2OC1wbXUtaW8tdm9sdGFnZS1kb21haW4iIGZvciByazMzNjggcG11LWRvbWFpbnMKKy0gcm9ja2NoaXAsZ3JmOiBwaGFuZGxlIHRvIHRoZSBzeXNjb24gbWFuYWdpbmcgdGhlICJnZW5lcmFsIHJlZ2lzdGVyIGZpbGVzIgorCisKK1lvdSBzcGVjaWZ5IHN1cHBsaWVzIHVzaW5nIHRoZSBzdGFuZGFyZCByZWd1bGF0b3IgYmluZGluZ3MgYnkgaW5jbHVkaW5nCithIHBoYW5kbGUgdGhlIHJlbGV2YW50IHJlZ3VsYXRvci4gIEFsbCBzcGVjaWZpZWQgc3VwcGxpZXMgbXVzdCBiZSBhYmxlCit0byByZXBvcnQgdGhlaXIgdm9sdGFnZS4gIFRoZSBJTyBWb2x0YWdlIERvbWFpbiBmb3IgYW55IG5vbi1zcGVjaWZpZWQKK3N1cHBsaWVzIHdpbGwgYmUgbm90IGJlIHRvdWNoZWQuCisKK1Bvc3NpYmxlIHN1cHBsaWVzIGZvciByazMxODg6CistIGFwMC1zdXBwbHk6ICAgIFRoZSBzdXBwbHkgY29ubmVjdGVkIHRvIEFQMF9WQ0MuCistIGFwMS1zdXBwbHk6ICAgIFRoZSBzdXBwbHkgY29ubmVjdGVkIHRvIEFQMV9WQ0MuCistIGNpZi1zdXBwbHk6ICAgIFRoZSBzdXBwbHkgY29ubmVjdGVkIHRvIENJRl9WQ0MuCistIGZsYXNoLXN1cHBseTogIFRoZSBzdXBwbHkgY29ubmVjdGVkIHRvIEZMQVNIX1ZDQy4KKy0gbGNkYzAtc3VwcGx5OiAgVGhlIHN1cHBseSBjb25uZWN0ZWQgdG8gTENEMF9WQ0MuCistIGxjZGMxLXN1cHBseTogIFRoZSBzdXBwbHkgY29ubmVjdGVkIHRvIExDRDFfVkNDLgorLSB2Y2NpbzAtc3VwcGx5OiBUaGUgc3VwcGx5IGNvbm5lY3RlZCB0byBWQ0NJTzAuCistIHZjY2lvMS1zdXBwbHk6IFRoZSBzdXBwbHkgY29ubmVjdGVkIHRvIFZDQ0lPMS4KKyAgICAgICAgICAgICAgICAgU29tZXRpbWVzIGFsc28gbGFiZWxlZCBWQ0NJTzEgYW5kIFZDQ0lPMi4KKworUG9zc2libGUgc3VwcGxpZXMgZm9yIHJrMzI4ODoKKy0gYXVkaW8tc3VwcGx5OiAgVGhlIHN1cHBseSBjb25uZWN0ZWQgdG8gQVBJTzRfVkRELgorLSBiYi1zdXBwbHk6ICAgICBUaGUgc3VwcGx5IGNvbm5lY3RlZCB0byBBUElPNV9WREQuCistIGR2cC1zdXBwbHk6ICAgIFRoZSBzdXBwbHkgY29ubmVjdGVkIHRvIERWUElPX1ZERC4KKy0gZmxhc2gwLXN1cHBseTogVGhlIHN1cHBseSBjb25uZWN0ZWQgdG8gRkxBU0gwX1ZERC4gIFR5cGljYWxseSBmb3IgZU1NQworLSBmbGFzaDEtc3VwcGx5OiBUaGUgc3VwcGx5IGNvbm5lY3RlZCB0byBGTEFTSDFfVkRELiAgQWxzbyBrbm93biBhcyBTRElPMS4KKy0gZ3BpbzMwLXN1cHBseTogVGhlIHN1cHBseSBjb25uZWN0ZWQgdG8gQVBJTzFfVkRELgorLSBncGlvMTgzMCAgICAgICBUaGUgc3VwcGx5IGNvbm5lY3RlZCB0byBBUElPMl9WREQuCistIGxjZGMtc3VwcGx5OiAgIFRoZSBzdXBwbHkgY29ubmVjdGVkIHRvIExDRENfVkRELgorLSBzZGNhcmQtc3VwcGx5OiBUaGUgc3VwcGx5IGNvbm5lY3RlZCB0byBTRE1NQzBfVkRELgorLSB3aWZpLXN1cHBseTogICBUaGUgc3VwcGx5IGNvbm5lY3RlZCB0byBBUElPM19WREQuICBBbHNvIGtub3duIGFzIFNESU8wLgorCitQb3NzaWJsZSBzdXBwbGllcyBmb3IgcmszMzY4OgorLSBhdWRpby1zdXBwbHk6ICBUaGUgc3VwcGx5IGNvbm5lY3RlZCB0byBBUElPM19WREQuCistIGR2cC1zdXBwbHk6ICAgIFRoZSBzdXBwbHkgY29ubmVjdGVkIHRvIERWUElPX1ZERC4KKy0gZmxhc2gwLXN1cHBseTogVGhlIHN1cHBseSBjb25uZWN0ZWQgdG8gRkxBU0gwX1ZERC4gIFR5cGljYWxseSBmb3IgZU1NQworLSBncGlvMzAtc3VwcGx5OiBUaGUgc3VwcGx5IGNvbm5lY3RlZCB0byBBUElPMV9WREQuCistIGdwaW8xODMwICAgICAgIFRoZSBzdXBwbHkgY29ubmVjdGVkIHRvIEFQSU80X1ZERC4KKy0gc2RjYXJkLXN1cHBseTogVGhlIHN1cHBseSBjb25uZWN0ZWQgdG8gU0RNTUMwX1ZERC4KKy0gd2lmaS1zdXBwbHk6ICAgVGhlIHN1cHBseSBjb25uZWN0ZWQgdG8gQVBJTzJfVkRELiAgQWxzbyBrbm93biBhcyBTRElPMC4KKworUG9zc2libGUgc3VwcGxpZXMgZm9yIHJrMzM2OCBwbXUtZG9tYWluczoKKy0gcG11LXN1cHBseTogICAgVGhlIHN1cHBseSBjb25uZWN0ZWQgdG8gUE1VSU9fVkRELgorLSB2b3Atc3VwcGx5OiAgICBUaGUgc3VwcGx5IGNvbm5lY3RlZCB0byBMQ0RDX1ZERC4KKworRXhhbXBsZToKKworCWlvLWRvbWFpbnMgeworCQljb21wYXRpYmxlID0gInJvY2tjaGlwLHJrMzI4OC1pby12b2x0YWdlLWRvbWFpbiI7CisJCXJvY2tjaGlwLGdyZiA9IDwmZ3JmPjsKKworCQlhdWRpby1zdXBwbHkgPSA8JnZjYzE4X2NvZGVjPjsKKwkJYmItc3VwcGx5ID0gPCZ2Y2MzM19pbz47CisJCWR2cC1zdXBwbHkgPSA8JnZjY18xOD47CisJCWZsYXNoMC1zdXBwbHkgPSA8JnZjYzE4X2ZsYXNoaW8+OworCQlncGlvMTgzMC1zdXBwbHkgPSA8JnZjYzMzX2lvPjsKKwkJZ3BpbzMwLXN1cHBseSA9IDwmdmNjMzNfcG11aW8+OworCQlsY2RjLXN1cHBseSA9IDwmdmNjMzNfbGNkPjsKKwkJc2RjYXJkLXN1cHBseSA9IDwmdmNjaW9fc2Q+OworCQl3aWZpLXN1cHBseSA9IDwmdmNjMThfd2w+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvcnQ5NDU1X2NoYXJnZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3J0OTQ1NV9jaGFyZ2VyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDlhZDVjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3J0OTQ1NV9jaGFyZ2VyLnR4dApAQCAtMCwwICsxLDQ4IEBACitCaW5kaW5nIGZvciBSaWNodGVrIHJ0OTQ1NSBiYXR0ZXJ5IGNoYXJnZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZToJCQkJaXQgc2hvdWxkIGNvbnRhaW4gb25lIG9mIHRoZSBmb2xsb3dpbmc6CisJCQkJCSJyaWNodGVrLHJ0OTQ1NSIuCistIHJlZzoJCQkJCWludGVnZXIsIGkyYyBhZGRyZXNzIG9mIHRoZSBkZXZpY2UuCistIGludGVycnVwdC1wYXJlbnQ6CQkJdGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGF0CisJCQkJCXNlcnZpY2VzIGludGVycnVwdHMgZm9yIHRoaXMgZGV2aWNlLgorLSBpbnRlcnJ1cHRzOgkJCQlpbnRlcnJ1cHQgbWFwcGluZyBmb3IgR1BJTyBJUlEsIGl0IHNob3VsZCBiZQorCQkJCQljb25maWd1cmVkIHdpdGggSVJRX1RZUEVfTEVWRUxfTE9XIGZsYWcuCistIHJpY2h0ZWssb3V0cHV0LWNoYXJnZS1jdXJyZW50OglpbnRlZ2VyLCBvdXRwdXQgY3VycmVudCBmcm9tIHRoZSBjaGFyZ2VyIHRvIHRoZQorCQkJCQliYXR0ZXJ5LCBpbiB1QS4KKy0gcmljaHRlayxlbmQtb2YtY2hhcmdlLXBlcmNlbnRhZ2U6CWludGVnZXIsIHBlcmNlbnQgb2YgdGhlIG91dHB1dCBjaGFyZ2UgY3VycmVudC4KKwkJCQkJV2hlbiB0aGUgY3VycmVudCBpbiBjb25zdGFudC12b2x0YWdlIHBoYXNlIGRyb3BzCisJCQkJCWJlbG93IG91dHB1dF9jaGFyZ2VfY3VycmVudCB4IGVuZC1vZi1jaGFyZ2UtcGVyY2VudGFnZSwKKwkJCQkJY2hhcmdlIGlzIHRlcm1pbmF0ZWQuCistIHJpY2h0ZWssYmF0dGVyeS1yZWd1bGF0aW9uLXZvbHRhZ2U6CWludGVnZXIsIG1heGltdW0gYmF0dGVyeSB2b2x0YWdlIGluIHVWLgorLSByaWNodGVrLGJvb3N0LW91dHB1dC12b2x0YWdlOgkJaW50ZWdlciwgbWF4aW11bSB2b2x0YWdlIHByb3ZpZGVkIHRvIGNvbnN1bWVyCisJCQkJCWRldmljZXMsIHdoZW4gdGhlIGNoYXJnZXIgaXMgaW4gYm9vc3QgbW9kZSwgaW4gdVYuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHJpY2h0ZWssbWluLWlucHV0LXZvbHRhZ2UtcmVndWxhdGlvbjogaW50ZWdlciwgaW5wdXQgdm9sdGFnZSBsZXZlbCBpbiB1ViwgdXNlZCB0bworCQkJCQlkZWNyZWFzZSB2b2x0YWdlIGxldmVsIHdoZW4gdGhlIG92ZXIgY3VycmVudAorCQkJCQlvZiB0aGUgaW5wdXQgcG93ZXIgc291cmNlIG9jY3Vycy4KKwkJCQkJVGhpcyBwcmV2ZW50cyBpbnB1dCB2b2x0YWdlIGRyb3AgZHVlIHRvIGluc3VmZmljaWVudAorCQkJCQljdXJyZW50IHByb3ZpZGVkIGJ5IHRoZSBwb3dlciBzb3VyY2UuCisJCQkJCURlZmF1bHQ6IDQ1MDAwMDAgdVYgKDQuNVYpCistIHJpY2h0ZWssYXZnLWlucHV0LWN1cnJlbnQtcmVndWxhdGlvbjogaW50ZWdlciwgaW5wdXQgY3VycmVudCB2YWx1ZSBpbiB1QSBkcmFpbmVkIGJ5IHRoZQorCQkJCQljaGFyZ2VyIGZyb20gdGhlIHBvd2VyIHNvdXJjZS4KKwkJCQkJRGVmYXVsdDogNTAwMDAwIHVBICg1MDBtQSkKKworRXhhbXBsZToKKworcnQ5NDU1QDIyIHsKKwljb21wYXRpYmxlID0gInJpY2h0ZWsscnQ5NDU1IjsKKwlyZWcgPSA8MHgyMj47CisKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvMT47CisJaW50ZXJydXB0cyA9IDwwIElSUV9UWVBFX0xFVkVMX0xPVz47CisKKwlyaWNodGVrLG91dHB1dC1jaGFyZ2UtY3VycmVudAkgICAgPSA8NTAwMDAwPjsKKwlyaWNodGVrLGVuZC1vZi1jaGFyZ2UtcGVyY2VudGFnZSAgICA9IDwxMD47CisJcmljaHRlayxiYXR0ZXJ5LXJlZ3VsYXRpb24tdm9sdGFnZSAgPSA8NDIwMDAwMD47CisJcmljaHRlayxib29zdC1vdXRwdXQtdm9sdGFnZQkgICAgPSA8NTA1MDAwMD47CisKKwlyaWNodGVrLG1pbi1pbnB1dC12b2x0YWdlLXJlZ3VsYXRpb24gPSA8NDUwMDAwMD47CisJcmljaHRlayxhdmctaW5wdXQtY3VycmVudC1yZWd1bGF0aW9uID0gPDUwMDAwMD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3J4NTEtYmF0dGVyeS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvcng1MS1iYXR0ZXJ5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDQzODQ1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3J4NTEtYmF0dGVyeS50eHQKQEAgLTAsMCArMSwyNSBAQAorQmluZGluZyBmb3IgTm9raWEgTjkwMCBiYXR0ZXJ5CisKK1RoZSBOb2tpYSBOOTAwIGJhdHRlcnkgc3RhdHVzIGNhbiBiZSByZWFkIHZpYSB0aGUgVFdMNDAzMCdzIEEvRCBjb252ZXJ0ZXIuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBjb250YWluIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorICogIm5va2lhLG45MDAtYmF0dGVyeSIKKy0gaW8tY2hhbm5lbHM6IFNob3VsZCBjb250YWluIElJTyBjaGFubmVsIHNwZWNpZmllcnMKKyAgICAgICAgICAgICAgIGZvciBlYWNoIGVsZW1lbnQgaW4gaW8tY2hhbm5lbC1uYW1lcy4KKy0gaW8tY2hhbm5lbC1uYW1lczogU2hvdWxkIGNvbnRhaW4gdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgKiAidGVtcCIgLSBUaGUgQURDIGNoYW5uZWwgZm9yIHRlbXBlcmF0dXJlIHJlYWRpbmcKKyAqICJic2kiICAtIFRoZSBBREMgY2hhbm5lbCBmb3IgYmF0dGVyeSBzaXplIGlkZW50aWZpY2F0aW9uCisgKiAidmJhdCIgLSBUaGUgQURDIGNoYW5uZWwgdG8gbWVhc3VyZSB0aGUgYmF0dGVyeSB2b2x0YWdlCisKK0V4YW1wbGUgZnJvbSBOb2tpYSBOOTAwOgorCitiYXR0ZXJ5OiBuOTAwLWJhdHRlcnkgeworCWNvbXBhdGlibGUgPSAibm9raWEsbjkwMC1iYXR0ZXJ5IjsKKwlpby1jaGFubmVscyA9IDwmdHdsNDAzMF9tYWRjIDA+LAorCQkgICAgICA8JnR3bDQwMzBfbWFkYyA0PiwKKwkJICAgICAgPCZ0d2w0MDMwX21hZGMgMTI+OworCWlvLWNoYW5uZWwtbmFtZXMgPSAidGVtcCIsCisJCQkgICAiYnNpIiwKKwkJCSAgICJ2YmF0IjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvdHdsLWNoYXJnZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3R3bC1jaGFyZ2VyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjRlYTFiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3R3bC1jaGFyZ2VyLnR4dApAQCAtMCwwICsxLDMwIEBACitUV0wgQkNJIChCYXR0ZXJ5IENoYXJnZXIgSW50ZXJmYWNlKQorCitUaGUgYmF0dGVyeSBjaGFyZ2VyIG5lZWRzIHRvIGludGVyYWN0IHdpdGggdGhlIFVTQiBwaHkgaW4gb3JkZXIKK3RvIGtub3cgd2hlbiBjaGFyZ2luZyBpcyBwZXJtaXNzaWJsZSwgYW5kIHdoZW4gdGhlcmUgaXMgYSBjb25uZWN0aW9uCitvciBkaXNjb25uZWN0aW9uLgorCitUaGUgY2hvaWNlIG9mIHBoeSBjYW5ub3QgYmUgY29uZmlndXJlZCBhdCBhIGhhcmR3YXJlIGxldmVsLCBzbyB0aGVyZQoraXMgbm8gdmFsdWUgaW4gZXhwbGljaXQgY29uZmlndXJhdGlvbiBpbiBkZXZpY2UtdHJlZS4gIFJhdGhlcgoraWYgdGhlcmUgaXMgYSBzaWJsaW5nIG9mIHRoZSBCQ0kgbm9kZSB3aGljaCBpcyBjb21wYXRpYmxlIHdpdGgKKyJ0aSx0d2w0MDMwLXVzYiIsIHRoZW4gdGhhdCBpcyB1c2VkIHRvIGRldGVybWluZSB3aGVuIGFuZCBob3cKK3VzZSBVU0IgcG93ZXIgZm9yIGNoYXJnaW5nLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOgorICAtICJ0aSx0d2w0MDMwLWJjaSIKKy0gaW50ZXJydXB0czogdHdvIGludGVycnVwdCBsaW5lcyBmcm9tIHRoZSBUV0wgU0lIIChzZWNvbmRhcnkKKyAgaW50ZXJydXB0IGhhbmRsZXIpIC0gaW50ZXJydXB0cyA5IGFuZCAyLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSB0aSxiYi11dm9sdDogbWljcm92b2x0cyBmb3IgY2hhcmdpbmcgdGhlIGJhY2t1cCBiYXR0ZXJ5LgorLSB0aSxiYi11YW1wOiBtaWNyb2FtcHMgZm9yIGNoYXJnaW5nIHRoZSBiYWNrdXAgYmF0dGVyeS4KKworRXhhbXBsZXM6CisKK2JjaSB7CisgICBjb21wYXRpYmxlID0gInRpLHR3bDQwMzAtYmNpIjsKKyAgIGludGVycnVwdHMgPSA8OT4sIDwyPjsKKyAgIHRpLGJiLXV2b2x0ID0gPDMyMDAwMDA+OworICAgdGksYmItdWFtcCA9IDwxNTA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci93YWtldXAtc291cmNlLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci93YWtldXAtc291cmNlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjNjNmRmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3dha2V1cC1zb3VyY2UudHh0CkBAIC0wLDAgKzEsNzEgQEAKK1NwZWNpZnlpbmcgd2FrZXVwIGNhcGFiaWxpdHkgZm9yIGRldmljZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FueSBkZXZpY2Ugbm9kZXMKKy0tLS0tLS0tLS0tLS0tLS0KK05vZGVzIHRoYXQgZGVzY3JpYmUgZGV2aWNlcyB3aGljaCBoYXMgd2FrZXVwIGNhcGFiaWxpdHkgbXVzdCBjb250YWluIGFuCisid2FrZXVwLXNvdXJjZSIgYm9vbGVhbiBwcm9wZXJ0eS4KKworQWxzbywgaWYgZGV2aWNlIGlzIG1hcmtlZCBhcyBhIHdha2V1cCBzb3VyY2UsIHRoZW4gYWxsIHRoZSBwcmltYXJ5CitpbnRlcnJ1cHQocykgY2FuIGJlIHVzZWQgYXMgd2FrZXVwIGludGVycnVwdChzKS4KKworSG93ZXZlciBpZiB0aGUgZGV2aWNlcyBoYXZlIGRlZGljYXRlZCBpbnRlcnJ1cHQgYXMgdGhlIHdha2V1cCBzb3VyY2UKK3RoZW4gdGhleSBuZWVkIHRvIHNwZWNpZnkvaWRlbnRpZnkgdGhlIHNhbWUgdXNpbmcgZGV2aWNlIHNwZWNpZmljCitpbnRlcnJ1cHQgbmFtZS4gSW4gc3VjaCBjYXNlcyBvbmx5IHRoYXQgaW50ZXJydXB0IGNhbiBiZSB1c2VkIGFzIHdha2V1cAoraW50ZXJydXB0LgorCitMaXN0IG9mIGxlZ2FjeSBwcm9wZXJ0aWVzIGFuZCByZXNwZWN0aXZlIGJpbmRpbmcgZG9jdW1lbnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisxLiAiZW5hYmxlLXNkaW8td2FrZXVwIgkJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9tbWMudHh0CisyLiAiZ3Bpby1rZXksd2FrZXVwIgkJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L2dwaW8ta2V5c3ssLXBvbGxlZH0udHh0CiszLiAiaGFzLXRwbyIJCQlEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL3J0Yy1vcGFsLnR4dAorNC4gImlzaWwsaXJxMi1jYW4td2FrZXVwLW1hY2hpbmUiIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvaXNpbCxpc2wxMjA1Ny50eHQKKzUuICJsaW51eCx3YWtldXAiCQlEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvZ3Bpby1tYXRyaXgta2V5cGFkLnR4dAorCQkJCURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvdGMzNTg5eC50eHQKKwkJCQlEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvYWRzNzg0Ni50eHQKKzYuICJsaW51eCxrZXlwYWQtd2FrZXVwIglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvcWNvbSxwbTh4eHgta2V5cGFkLnR4dAorNy4gImxpbnV4LGlucHV0LXdha2V1cCIJCURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9zYW1zdW5nLWtleXBhZC50eHQKKzguICJudmlkaWEsd2FrZXVwLXNvdXJjZSIJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L252aWRpYSx0ZWdyYTIwLWtiYy50eHQKKworRXhhbXBsZXMKKy0tLS0tLS0tCisKKzEuIFdpdGggIndha2V1cCIgaW50ZXJydXB0IG5hbWUKKworCWRldmljZUAxMDAwMCB7CisJCWNvbXBhdGlibGUJPSAidmVuZG9yLGRldmljZS1pZCI7CisJCXJlZwkJPSA8MHgxMDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzCT0gPDAgMTkgND4sIDwwIDIxIDQ+LCA8MCAyMiA0PjsKKwkJaW50ZXJydXB0LW5hbWVzCT0gImFjayIsICJlcnIiLCAid2FrZXVwIjsKKwkJd2FrZXVwLXNvdXJjZTsKKwl9OworCisyLiBXaXRob3V0ICJ3YWtldXAiIGludGVycnVwdCBuYW1lCisKKwllbWJlZGRlZC1jb250cm9sbGVyIHsKKwkJY29tcGF0aWJsZSA9ICJnb29nbGUsY3Jvcy1lYy1pMmMiOworCQlyZWcgPSA8MHgxZT47CisJCWludGVycnVwdHMgPSA8NiAwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3B4MT47CisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmZWNfaXJxPjsKKwkJd2FrZXVwLXNvdXJjZTsKKwl9OworCiszLiBXaXRob3V0IGludGVycnVwdHMKKworCWdwaW9fa2V5cyB7CisJCWNvbXBhdGlibGUgPSAiZ3Bpby1rZXlzIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCisJCWJ1dHRvbkAxIHsKKwkJCWRlYm91bmNlX2ludGVydmFsID0gPDUwPjsKKwkJCXdha2V1cC1zb3VyY2U7CisJCQlsaW51eCxjb2RlID0gPDExNj47CisJCQlsYWJlbCA9ICJQT1dFUiI7CisJCQlncGlvcyA9IDwmaW9mcGdhX2dwaW8wIDAgMHg0PjsKKwkJfTsKKwkJWy4uLi5dCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvYWI4NTAwL2J0ZW1wLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvYWI4NTAwL2J0ZW1wLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmExYmNjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyX3N1cHBseS9hYjg1MDAvYnRlbXAudHh0CkBAIC0wLDAgKzEsMTYgQEAKKz09PSBBQjg1MDAgQmF0dGVyeSBUZW1wZXJhdHVyZSBNb25pdG9yIERyaXZlciA9PT0KKworVGhlIHByb3BlcnRpZXMgYmVsb3cgZGVzY3JpYmVzIHRoZSBub2RlIGZvciBidGVtcCBkcml2ZXIuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgPSBTaGFsbCBiZTogInN0ZXJpY3Nzb24sYWI4NTAwLWJ0ZW1wIgorLSBiYXR0ZXJ5ID0gU2hhbGwgYmUgYmF0dGVyeSBzcGVjaWZpYyBpbmZvcm1hdGlvbgorCisJRXhhbXBsZToKKwlhYjg1MDBfYnRlbXAgeworCQljb21wYXRpYmxlID0gInN0ZXJpY3Nzb24sYWI4NTAwLWJ0ZW1wIjsKKwkJYmF0dGVyeQkgICA9IDwmYWI4NTAwX2JhdHRlcnk+OworCX07CisKK0ZvciBpbmZvcm1hdGlvbiBvbiBiYXR0ZXJ5IHNwZWNpZmljIG5vZGUsIFJlZjoKK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvYWI4NTAwL2ZnLnR4dApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyX3N1cHBseS9hYjg1MDAvY2hhcmdhbGcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyX3N1cHBseS9hYjg1MDAvY2hhcmdhbGcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmNTMyODMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJfc3VwcGx5L2FiODUwMC9jaGFyZ2FsZy50eHQKQEAgLTAsMCArMSwxNiBAQAorPT09IEFCODUwMCBDaGFyZ2luZyBBbGdvcml0aG0gRHJpdmVyID09PQorCitUaGUgcHJvcGVydGllcyBiZWxvdyBkZXNjcmliZXMgdGhlIG5vZGUgZm9yIGNoYXJnYWxnIGRyaXZlci4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA9IFNoYWxsIGJlOiAic3Rlcmljc3NvbixhYjg1MDAtY2hhcmdhbGciCistIGJhdHRlcnkgPSBTaGFsbCBiZSBiYXR0ZXJ5IHNwZWNpZmljIGluZm9ybWF0aW9uCisKK0V4YW1wbGU6CithYjg1MDBfY2hhcmdhbGcgeworCWNvbXBhdGlibGUgPSAic3Rlcmljc3NvbixhYjg1MDAtY2hhcmdhbGciOworCWJhdHRlcnkJICAgPSA8JmFiODUwMF9iYXR0ZXJ5PjsKK307CisKK0ZvciBpbmZvcm1hdGlvbiBvbiBiYXR0ZXJ5IHNwZWNpZmljIG5vZGUsIFJlZjoKK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvYWI4NTAwL2ZnLnR4dApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyX3N1cHBseS9hYjg1MDAvY2hhcmdlci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJfc3VwcGx5L2FiODUwMC9jaGFyZ2VyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmRiYjA4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyX3N1cHBseS9hYjg1MDAvY2hhcmdlci50eHQKQEAgLTAsMCArMSwyNSBAQAorPT09IEFCODUwMCBDaGFyZ2VyIERyaXZlciA9PT0KKworUmVxdWlyZWQgUHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA9IFNoYWxsIGJlICJzdGVyaWNzc29uLGFiODUwMC1jaGFyZ2VyIgorLSBiYXR0ZXJ5ID0gU2hhbGwgYmUgYmF0dGVyeSBzcGVjaWZpYyBpbmZvcm1hdGlvbgorCUV4YW1wbGU6CisJYWI4NTAwX2NoYXJnZXIgeworCQljb21wYXRpYmxlID0gInN0ZXJpY3Nzb24sYWI4NTAwLWNoYXJnZXIiOworCQliYXR0ZXJ5CSAgID0gPCZhYjg1MDBfYmF0dGVyeT47CisJfTsKKworLSB2ZGRhZGMtc3VwcGx5OiBTdXBwbHkgZm9yIFVTQiBhbmQgTWFpbiBjaGFyZ2VyCisJRXhhbXBsZToKKwlhYjg1MDAtY2hhcmdlciB7CisJCXZkZGFkYy1zdXBwbHkJPSA8JmFiODUwMF9sZG9fdHZvdXRfcmVnPjsKKwl9CistIGF1dG9wb3dlcl9jZmc6CisJQm9vbGVhbiB2YWx1ZSBkZXBpY3RpbmcgdGhlIHByZXNlbmNlIG9mICdhdXRvbWF0aWMgcG93ZXJvbiBhZnRlciBwb3dlcmxvc3MnCisJRXhhbXBsZToKKwlhYjg1MDAtY2hhcmdlciB7CisJCWF1dG9wb3dlcl9jZmc7CisJfTsKKworRm9yIGluZm9ybWF0aW9uIG9uIGJhdHRlcnkgc3BlY2lmaWMgbm9kZSwgUmVmOgorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyX3N1cHBseS9hYjg1MDAvZmcudHh0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJfc3VwcGx5L2FiODUwMC9mZy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJfc3VwcGx5L2FiODUwMC9mZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NhZmNiOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvYWI4NTAwL2ZnLnR4dApAQCAtMCwwICsxLDU4IEBACis9PT0gQUI4NTAwIEZ1ZWwgR2F1Z2UgRHJpdmVyID09PQorCitBQjg1MDAgaXMgYSBtaXhlZCBzaWduYWwgbXVsdGltZWRpYSBhbmQgcG93ZXIgbWFuYWdlbWVudAorZGV2aWNlIGNvbXByaXNpbmc6IHBvd2VyIGFuZCBlbmVyZ3ktbWFuYWdlbWVudC1tb2R1bGUsCit3YWxsLWNoYXJnZXIsIHVzYi1jaGFyZ2VyLCBhdWRpbyBjb2RlYywgZ2VuZXJhbCBwdXJwb3NlIGFkYywKK3R2b3V0LCBjbG9jayBtYW5hZ2VtZW50IGFuZCBzaW0gY2FyZCBpbnRlcmZhY2UuCisKK0Z1ZWxnYXVnZSBzdXBwb3J0IGlzIHBhcnQgb2YgZW5lcmd5LW1hbmFnZW1lbnQtbW9kdWxlcywgb3RoZXIKK2NvbXBvbmVudHMgb2YgdGhpcyBtb2R1bGUgYXJlOgorbWFpbi1jaGFyZ2VyLCB1c2ItY29tYm8tY2hhcmdlciBhbmQgYmF0dGVyeS10ZW1wZXJhdHVyZS1tb25pdG9yaW5nLgorCitUaGUgcHJvcGVydGllcyBiZWxvdyBkZXNjcmliZXMgdGhlIG5vZGUgZm9yIGZ1ZWxnYXVnZSBkcml2ZXIuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgPSBUaGlzIHNoYWxsIGJlOiAic3Rlcmljc3NvbixhYjg1MDAtZmciCistIGJhdHRlcnkgPSBTaGFsbCBiZSBiYXR0ZXJ5IHNwZWNpZmljIGluZm9ybWF0aW9uCisJRXhhbXBsZToKKwlhYjg1MDBfZmcgeworCQljb21wYXRpYmxlID0gInN0ZXJpY3Nzb24sYWI4NTAwLWZnIjsKKwkJYmF0dGVyeQkgICA9IDwmYWI4NTAwX2JhdHRlcnk+OworCX07CisKK2RlcGVuZGVudCBub2RlOgorCWFiODUwMF9iYXR0ZXJ5OiBhYjg1MDBfYmF0dGVyeSB7CisJfTsKKwlUaGlzIG5vZGUgd2lsbCBwcm92aWRlIGluZm9ybWF0aW9uIG9uICd0aGVybWlzdG9yIGludGVyZmFjZScgYW5kCisJJ2JhdHRlcnkgdGVjaG5vbG9neSB0eXBlJyB1c2VkLgorCitQcm9wZXJ0aWVzIG9mIHRoaXMgbm9kZSBhcmU6Cit0aGVybWlzdG9yLW9uLWJhdGN0cmw6CisJQSBib29sZWFuIHZhbHVlIGluZGljYXRpbmcgdGhlcm1pc3RvciBpbnRlcmZhY2UJdG8gYmF0dGVyeQorCisJTm90ZToKKwknYnRlbXAnIGFuZCAnYmF0Y3RybCcgYXJlIHRoZSBwaW5zIGludGVyZmFjZWQgZm9yIGJhdHRlcnkgdGVtcGVyYXR1cmUKKwltZWFzdXJlbWVudCwgJ2J0ZW1wJyBzaWduYWwgaXMgdXNlZCB3aGVuIE5UQyhuZWdhdGl2ZSB0ZW1wZXJhdHVyZQorCWNvZWZmaWNpZW50KSByZXNpc3RlciBpcyBpbnRlcmZhY2VkIGV4dGVybmFsIHRvIGJhdHRlcnkgd2hlcmVhcworCSdiYXRjdHJsJyBwaW4gaXMgdXNlZCB3aGVuIE5UQyByZXNpc3RlciBpcyBpbnRlcm5hbCB0byBiYXR0ZXJ5LgorCisJRXhhbXBsZToKKwlhYjg1MDBfYmF0dGVyeTogYWI4NTAwX2JhdHRlcnkgeworCQl0aGVybWlzdG9yLW9uLWJhdGN0cmw7CisJfTsKKwlpbmRpY2F0ZXM6IE5UQyByZXNpc3RlciBpcyBpbnRlcm5hbCB0byBiYXR0ZXJ5LCAnYmF0Y3RybCcgaXMgdXNlZAorCQlmb3IgdGhlcm1hbCBtZWFzdXJlbWVudC4KKworCVRoZSBhYnNlbmNlIG9mIHByb3BlcnR5ICd0aGVybWFsLW9uLWJhdGN0cmwnIGluZGljYXRlcworCU5UQyByZXNpc3RlciBpcyBleHRlcm5hbCB0byBiYXR0ZXJ5IGFuZCAgJ2J0ZW1wJyBzaWduYWwgaXMgdXNlZAorCWZvciB0aGVybWFsIG1lYXN1cmVtZW50LgorCitiYXR0ZXJ5LXR5cGU6CisJVGhpcyBzaGFsbCBiZSB0aGUgYmF0dGVyeSBtYW51ZmFjdHVyaW5nIHRlY2hub2xvZ3kgdHlwZSwKKwlhbGxvd2VkIHR5cGVzIGFyZToKKwkJIlVOS05PV04iICJOaU1IIiAiTElPTiIgIkxJUE8iICJMaUZlIiAiTmlDZCIgIkxpTW4iCisJRXhhbXBsZToKKwlhYjg1MDBfYmF0dGVyeTogYWI4NTAwX2JhdHRlcnkgeworCQlzdGVyaWNzc29uLGJhdHRlcnktdHlwZSA9ICJMSVBPIjsKKwl9CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvYXhwMjB4X3VzYl9wb3dlci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJfc3VwcGx5L2F4cDIweF91c2JfcG93ZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MmY0YTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJfc3VwcGx5L2F4cDIweF91c2JfcG93ZXIudHh0CkBAIC0wLDAgKzEsMzQgQEAKK0FYUDIweCBVU0IgcG93ZXIgc3VwcGx5CisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CistY29tcGF0aWJsZTogIngtcG93ZXJzLGF4cDIwMi11c2ItcG93ZXItc3VwcGx5IgorCitUaGlzIG5vZGUgaXMgYSBzdWJub2RlIG9mIHRoZSBheHAyMHggUE1JQy4KKworRXhhbXBsZToKKworYXhwMjA5OiBwbWljQDM0IHsKKwljb21wYXRpYmxlID0gIngtcG93ZXJzLGF4cDIwOSI7CisJcmVnID0gPDB4MzQ+OworCWludGVycnVwdC1wYXJlbnQgPSA8Jm5taV9pbnRjPjsKKwlpbnRlcnJ1cHRzID0gPDAgSVJRX1RZUEVfTEVWRUxfTE9XPjsKKwlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCisJcmVndWxhdG9ycyB7CisJCXgtcG93ZXJzLGRjZGMtZnJlcSA9IDwxNTAwPjsKKworCQl2ZGRfY3B1OiBkY2RjMiB7CisJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTAwMDAwMD47CisJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxNDUwMDAwPjsKKwkJCXJlZ3VsYXRvci1uYW1lID0gInZkZC1jcHUiOworCQl9OworCisJCS4uLgorCX07CisKKwl1c2ItcG93ZXItc3VwcGx5OiB1c2ItcG93ZXItc3VwcGx5IHsKKwkJY29tcGF0aWJsZSA9ICJ4LXBvd2VycyxheHAyMDItdXNiLXBvd2VyLXN1cHBseSI7CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJfc3VwcGx5L2F4eGlhLXJlc2V0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvYXh4aWEtcmVzZXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZTcyMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJfc3VwcGx5L2F4eGlhLXJlc2V0LnR4dApAQCAtMCwwICsxLDIwIEBACitBeHhpYSBSZXN0YXJ0IERyaXZlcgorCitUaGlzIGRyaXZlciBjYW4gZG8gcmVzZXQgb2YgdGhlIEF4eGlhIFNvQy4gSXQgdXNlcyB0aGUgcmVnaXN0ZXJzIGluIHRoZSBzeXNjb24KK2Jsb2NrIHRvIGluaXRpYXRlIGEgY2hpcCByZXNldC4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKyAgLWNvbXBhdGlibGU6ICJsc2ksYXhtNTV4eC1yZXNldCIKKyAgLXN5c2NvbjogcGhhbmRsZSB0byB0aGUgc3lzY29uIG5vZGUuCisKK0V4YW1wbGU6CisKKwlzeXNjb246IHN5c2NvbkAyMDEwMDMwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJsc2ksYXh4aWEtc3lzY29uIiwgInN5c2NvbiI7CisJCXJlZyA9IDwweDIwIDB4MTAwMzAwMDAgMCAweDIwMDA+OworCX07CisKKwlyZXNldDogcmVzZXRAMjAxMDAzMTAwMCB7CisJCWNvbXBhdGlibGUgPSAibHNpLGF4bTU1eHgtcmVzZXQiOworCQlzeXNjb24gPSA8JnN5c2Nvbj47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvY2hhcmdlci1tYW5hZ2VyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvY2hhcmdlci1tYW5hZ2VyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzRmZTlkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyX3N1cHBseS9jaGFyZ2VyLW1hbmFnZXIudHh0CkBAIC0wLDAgKzEsODEgQEAKK2NoYXJnZXItbWFuYWdlciBiaW5kaW5ncworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1JlcXVpcmVkIHByb3BlcnRpZXMgOgorIC0gY29tcGF0aWJsZSA6ICJjaGFyZ2VyLW1hbmFnZXIiCisgLSA8Pi1zdXBwbHkgOiBmb3IgcmVndWxhdG9yIGNvbnN1bWVyCisgLSBjbS1udW0tY2hhcmdlcnMgOiBudW1iZXIgb2YgY2hhcmdlcnMKKyAtIGNtLWNoYXJnZXJzIDogbmFtZSBvZiBjaGFyZ2VycworIC0gY20tZnVlbC1nYXVnZSA6IG5hbWUgb2YgYmF0dGVyeSBmdWVsIGdhdWdlCisgLSBzdWJub2RlIDxyZWd1bGF0b3I+IDoKKwktIGNtLXJlZ3VsYXRvci1uYW1lIDogbmFtZSBvZiBjaGFyZ2VyIHJlZ3VsYXRvcgorCS0gc3Vibm9kZSA8Y2FibGU+IDoKKwkJLSBjbS1jYWJsZS1uYW1lIDogbmFtZSBvZiBjaGFyZ2VyIGNhYmxlCisJCS0gY20tY2FibGUtZXh0Y29uIDogbmFtZSBvZiBleHRjb24gZGV2Cisob3B0aW9uYWwpCS0gY20tY2FibGUtbWluIDogbWluaW11bSBjdXJyZW50IG9mIGNhYmxlCisob3B0aW9uYWwpCS0gY20tY2FibGUtbWF4IDogbWF4aW11bSBjdXJyZW50IG9mIGNhYmxlCisKK09wdGlvbmFsIHByb3BlcnRpZXMgOgorIC0gY20tbmFtZSA6IGNoYXJnZXIgbWFuYWdlcidzIG5hbWUgKGRlZmF1bHQgOiAiYmF0dGVyeSIpCisgLSBjbS1wb2xsLW1vZGUgOiBwb2xsaW5nIG1vZGUgKGVudW0gcG9sbGluZ19tb2RlcykKKyAtIGNtLXBvbGwtaW50ZXJ2YWwgOiBwb2xsaW5nIGludGVydmFsCisgLSBjbS1iYXR0ZXJ5LXN0YXQgOiBiYXR0ZXJ5IHN0YXR1cyAoZW51bSBkYXRhX3NvdXJjZSkKKyAtIGNtLWZ1bGxiYXR0LSogOiBkYXRhIGZvciBmdWxsIGJhdHRlcnkgY2hlY2tpbmcKKyAtIGNtLXRoZXJtYWwtem9uZSA6IG5hbWUgb2YgZXh0ZXJuYWwgdGhlcm1vbWV0ZXIncyB0aGVybWFsIHpvbmUKKyAtIGNtLWJhdHRlcnktKiA6IHRocmVzaG9sZCBiYXR0ZXJ5IHRlbXBlcmF0dXJlIGZvciBjaGFyZ2luZworCS1jb2xkIDogY3JpdGljYWwgY29sZCB0ZW1wZXJhdHVyZSBvZiBiYXR0ZXJ5IGZvciBjaGFyZ2luZworCS1jb2xkLWluLW1pbnVzIDogZmxhZyB0aGF0IGNvbGQgdGVtcGVyYXR1cmUgaXMgaW4gbWludXMgZGVncmVlcworCS1ob3QgOiBjcml0aWNhbCBob3QgdGVtcGVyYXR1cmUgb2YgYmF0dGVyeSBmb3IgY2hhcmdpbmcKKwktdGVtcC1kaWZmIDogdGVtcGVyYXR1cmUgZGlmZmVyZW5jZSB0byBhbGxvdyByZWNoYXJnaW5nCisgLSBjbS1kaXMvY2hhcmdpbmctbWF4ID0gbGltaXRzIG9mIGNoYXJnaW5nIGR1cmF0aW9uCisKK0V4YW1wbGUgOgorCWNoYXJnZXItbWFuYWdlckAwIHsKKwkJY29tcGF0aWJsZSA9ICJjaGFyZ2VyLW1hbmFnZXIiOworCQljaGctcmVnLXN1cHBseSA9IDwmY2hhcmdlcl9yZWd1bGF0b3I+OworCisJCWNtLW5hbWUgPSAiYmF0dGVyeSI7CisJCS8qIEFsd2F5cyBwb2xsaW5nIE9OIDogMzBzICovCisJCWNtLXBvbGwtbW9kZSA9IDwxPjsKKwkJY20tcG9sbC1pbnRlcnZhbCA9IDwzMDAwMD47CisKKwkJY20tZnVsbGJhdHQtdmNoa2Ryb3AtbXMgPSA8MzAwMDA+OworCQljbS1mdWxsYmF0dC12Y2hrZHJvcC12b2x0ID0gPDE1MDAwMD47CisJCWNtLWZ1bGxiYXR0LXNvYyA9IDwxMDA+OworCisJCWNtLWJhdHRlcnktc3RhdCA9IDwzPjsKKworCQljbS1udW0tY2hhcmdlcnMgPSA8Mz47CisJCWNtLWNoYXJnZXJzID0gImNoYXJnZXIwIiwgImNoYXJnZXIxIiwgImNoYXJnZXIyIjsKKworCQljbS1mdWVsLWdhdWdlID0gImZ1ZWxnYXVnZTAiOworCisJCWNtLXRoZXJtYWwtem9uZSA9ICJ0aGVybWFsX3pvbmUuMSIKKwkJLyogaW4gZGVjaSBjZW50aWdyYWRlICovCisJCWNtLWJhdHRlcnktY29sZCA9IDw1MD47CisJCWNtLWJhdHRlcnktY29sZC1pbi1taW51czsKKwkJY20tYmF0dGVyeS1ob3QgPSA8ODAwPjsKKwkJY20tYmF0dGVyeS10ZW1wLWRpZmYgPSA8MTAwPjsKKworCQkvKiBBbGxvdyBjaGFyZ2luZyBmb3IgNWhyICovCisJCWNtLWNoYXJnaW5nLW1heCA9IDwxODAwMDAwMD47CisJCS8qIEFsbG93IGRpc2NoYXJnaW5nIGZvciAyaHIgKi8KKwkJY20tZGlzY2hhcmdpbmctbWF4ID0gPDcyMDAwMDA+OworCisJCXJlZ3VsYXRvckAwIHsKKwkJCWNtLXJlZ3VsYXRvci1uYW1lID0gImNoZy1yZWciOworCQkJY2FibGVAMCB7CisJCQkJY20tY2FibGUtbmFtZSA9ICJVU0IiOworCQkJCWNtLWNhYmxlLWV4dGNvbiA9ICJleHRjb24tZGV2LjAiOworCQkJCWNtLWNhYmxlLW1pbiA9IDw0NzUwMDA+OworCQkJCWNtLWNhYmxlLW1heCA9IDw1MDAwMDA+OworCQkJfTsKKwkJCWNhYmxlQDEgeworCQkJCWNtLWNhYmxlLW5hbWUgPSAiVEEiOworCQkJCWNtLWNhYmxlLWV4dGNvbiA9ICJleHRjb24tZGV2LjAiOworCQkJCWNtLWNhYmxlLW1pbiA9IDw2NTAwMDA+OworCQkJCWNtLWNhYmxlLW1heCA9IDw2NzUwMDA+OworCQkJfTsKKwkJfTsKKworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJfc3VwcGx5L2dwaW8tY2hhcmdlci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJfc3VwcGx5L2dwaW8tY2hhcmdlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRiYjVkYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvZ3Bpby1jaGFyZ2VyLnR4dApAQCAtMCwwICsxLDI3IEBACitncGlvLWNoYXJnZXIKKworUmVxdWlyZWQgcHJvcGVydGllcyA6CisgLSBjb21wYXRpYmxlIDogImdwaW8tY2hhcmdlciIKKyAtIGdwaW9zIDogR1BJTyBpbmRpY2F0aW5nIHRoZSBjaGFyZ2VyIHByZXNlbmNlLgorICAgU2VlIEdQSU8gYmluZGluZyBpbiBiaW5kaW5ncy9ncGlvL2dwaW8udHh0IC4KKyAtIGNoYXJnZXItdHlwZSA6IHBvd2VyIHN1cHBseSB0eXBlLCBvbmUgb2YKKyAgICAgdW5rbm93bgorICAgICBiYXR0ZXJ5CisgICAgIHVwcworICAgICBtYWlucworICAgICB1c2Itc2RwIChVU0Igc3RhbmRhcmQgZG93bnN0cmVhbSBwb3J0KQorICAgICB1c2ItZGNwIChVU0IgZGVkaWNhdGVkIGNoYXJnaW5nIHBvcnQpCisgICAgIHVzYi1jZHAgKFVTQiBjaGFyZ2luZyBkb3duc3RyZWFtIHBvcnQpCisgICAgIHVzYi1hY2EgKFVTQiBhY2Nlc3NvcnkgY2hhcmdlciBhZGFwdGVyKQorCitFeGFtcGxlOgorCisJdXNiX2NoYXJnZXI6IGNoYXJnZXIgeworCQljb21wYXRpYmxlID0gImdwaW8tY2hhcmdlciI7CisJCWNoYXJnZXItdHlwZSA9ICJ1c2Itc2RwIjsKKwkJZ3Bpb3MgPSA8JmdwZjAgMiAwIDAgMD47CisJfQorCisJYmF0dGVyeSB7CisJCXBvd2VyLXN1cHBsaWVzID0gPCZ1c2JfY2hhcmdlcj47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvaW14LXNudnMtcG93ZXJvZmYudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyX3N1cHBseS9pbXgtc252cy1wb3dlcm9mZi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM3YzliYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvaW14LXNudnMtcG93ZXJvZmYudHh0CkBAIC0wLDAgKzEsMjMgQEAKK2kubXg2IFBvd2Vyb2ZmIERyaXZlcgorCitTTlZTX0xQQ1IgaW4gU05WUyBtb2R1bGUgY2FuIHBvd2VyIG9mZiB0aGUgd2hvbGUgc3lzdGVtIGJ5IHB1bGwKK1BNSUNfT05fUkVRIGxvdyBpZiBQTUlDX09OX1JFUSBpcyBjb25uZWN0ZWQgd2l0aCBleHRlcm5hbCBQTUlDLgorSWYgeW91IGRvbid0IHdhbnQgdG8gdXNlIFBNSUNfT05fUkVRIGFzIHBvd2VyIG9uL29mZiBjb250cm9sLAorcGxlYXNlIHNldCBzdGF0dXM9J2Rpc2FibGVkJyB0byBkaXNhYmxlIHRoaXMgZHJpdmVyLgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorLWNvbXBhdGlibGU6ICJmc2wsc2VjLXY0LjAtcG93ZXJvZmYiCistcmVnOiBTcGVjaWZpZXMgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIFNOVlNfTFBDUiByZWdpc3RlcgorCitFeGFtcGxlOgorCXNudnNAMDIwY2MwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxzZWMtdjQuMC1tb24iLCAic2ltcGxlLWJ1cyI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJcmFuZ2VzID0gPDAgMHgwMjBjYzAwMCAweDQwMDA+OworCQkuLi4uLgorCQlzbnZzX3Bvd2Vyb2ZmOiBzbnZzLXBvd2Vyb2ZmQDM4IHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLHNlYy12NC4wLXBvd2Vyb2ZmIjsKKwkJCXJlZyA9IDwweDM4IDB4ND47CisJCX07CisJfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyX3N1cHBseS9scDg3MjdfY2hhcmdlci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJfc3VwcGx5L2xwODcyN19jaGFyZ2VyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjQ2YmM1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyX3N1cHBseS9scDg3MjdfY2hhcmdlci50eHQKQEAgLTAsMCArMSw0NCBAQAorQmluZGluZyBmb3IgVEkvTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBMUDg3MjcgQ2hhcmdlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAidGksbHA4NzI3IgorLSByZWc6IEkyQyBzbGF2ZSBhZGRyZXNzIDI3aAorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBpbnRlcnJ1cHQtcGFyZW50OiBpbnRlcnJ1cHQgY29udHJvbGxlciBub2RlIChzZWUgaW50ZXJydXB0IGJpbmRpbmdbMF0pCistIGludGVycnVwdHM6IGludGVycnVwdCBzcGVjaWZpZXIgKHNlZSBpbnRlcnJ1cHQgYmluZGluZ1swXSkKKy0gZGVib3VuY2UtbXM6IGludGVycnVwdCBkZWJvdW5jZSB0aW1lLiAodTMyKQorCitBQyBhbmQgVVNCIGNoYXJnaW5nIHBhcmFtZXRlcnMKKy0gY2hhcmdlci10eXBlOiAiYWMiIG9yICJ1c2IiIChzdHJpbmcpCistIGVvYy1sZXZlbDogdmFsdWUgb2YgJ2VudW0gbHA4NzI3X2VvY19sZXZlbCcgKHU4KQorLSBjaGFyZ2luZy1jdXJyZW50OiB2YWx1ZSBvZiAnZW51bSBscDg3MjdfaWNoZycgKHU4KQorCitbMF06IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlcnJ1cHRzLnR4dAorCitFeGFtcGxlKQorCitscDg3MjdAMjcgeworCWNvbXBhdGlibGUgPSAidGksbHA4NzI3IjsKKwlyZWcgPSA8MHgyNz47CisKKwkvKiBHUElPIDEzNCBpcyB1c2VkIGZvciBMUDg3MjggaW50ZXJydXB0IHBpbiAqLworCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW81PjsgCS8qIGJhc2UgPSAxMjggKi8KKwlpbnRlcnJ1cHRzID0gPDYgMHgyPjsJCS8qIG9mZnNldCA9IDYsIGZhbGxpbmcgZWRnZSB0eXBlICovCisKKwlkZWJvdW5jZS1tcyA9IDwzMDA+OworCisJLyogQUMgY2hhcmdlcjogNSUgRU9DIGFuZCA1MDBtQSBjaGFyZ2luZyBjdXJyZW50ICovCisJYWMgeworCQljaGFyZ2VyLXR5cGUgPSAiYWMiOworCQllb2MtbGV2ZWwgPSAvYml0cy8gOCA8MD47CisJCWNoYXJnaW5nLWN1cnJlbnQgPSAvYml0cy8gOCA8ND47CisJfTsKKworCS8qIFVTQiBjaGFyZ2VyOiAxMCUgRU9DIGFuZCA0MDBtQSBjaGFyZ2luZyBjdXJyZW50ICovCisJdXNiIHsKKwkJY2hhcmdlci10eXBlID0gInVzYiI7CisJCWVvYy1sZXZlbCA9IC9iaXRzLyA4IDwxPjsKKwkJY2hhcmdpbmctY3VycmVudCA9IC9iaXRzLyA4IDwyPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvbWF4MTcwNDJfYmF0dGVyeS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJfc3VwcGx5L21heDE3MDQyX2JhdHRlcnkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmMzg5NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJfc3VwcGx5L21heDE3MDQyX2JhdHRlcnkudHh0CkBAIC0wLDAgKzEsMzEgQEAKK21heDE3MDQyX2JhdHRlcnkKK35+fn5+fn5+fn5+fn5+fn4KKworUmVxdWlyZWQgcHJvcGVydGllcyA6CisgLSBjb21wYXRpYmxlIDogIm1heGltLG1heDE3MDQyIgorCitPcHRpb25hbCBwcm9wZXJ0aWVzIDoKKyAtIG1heGltLHJzbnMtbWljcm9vaG0gOiBSZXNpc3RhbmNlIG9mIHJzbnMgcmVzaXN0b3IgaW4gbWljcm8gT2htcworICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRhc2hlZXQtcmVjb21tZW5kZWQgdmFsdWUgaXMgMTAwMDApLgorICAgRGVmaW5pbmcgdGhpcyBwcm9wZXJ0eSBlbmFibGVzIGN1cnJlbnQtc2Vuc2UgZnVuY3Rpb25hbGl0eS4KKworT3B0aW9uYWwgdGhyZXNob2xkIHByb3BlcnRpZXMgOgorIElmIHNraXBwZWQgdGhlIGNvbmRpdGlvbiB3b24ndCBiZSByZXBvcnRlZC4KKyAtIG1heGltLGNvbGQtdGVtcCA6ICAgICAgVGVtcGVyYXR1cmUgdGhyZXNob2xkIHRvIHJlcG9ydCBiYXR0ZXJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGNvbGQgKGluIHRlbnRocyBvZiBkZWdyZWUgQ2Vsc2l1cykuCisgLSBtYXhpbSxvdmVyLWhlYXQtdGVtcCA6IFRlbXBlcmF0dXJlIHRocmVzaG9sZCB0byByZXBvcnQgYmF0dGVyeQorICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBvdmVyIGhlYXRlZCAoaW4gdGVudGhzIG9mIGRlZ3JlZSBDZWxzaXVzKS4KKyAtIG1heGltLGRlYWQtdm9sdCA6ICAgICAgVm9sdGFnZSB0aHJlc2hvbGQgdG8gcmVwb3J0IGJhdHRlcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgZGVhZCAoaW4gbVYpLgorIC0gbWF4aW0sb3Zlci12b2x0IDogICAgICBWb2x0YWdlIHRocmVzaG9sZCB0byByZXBvcnQgYmF0dGVyeQorICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBvdmVyIHZvbHRhZ2UgKGluIG1WKS4KKworRXhhbXBsZToKKworCWJhdHRlcnktY2hhcmdlckAzNiB7CisJCWNvbXBhdGlibGUgPSAibWF4aW0sbWF4MTcwNDIiOworCQlyZWcgPSA8MHgzNj47CisJCW1heGltLHJzbnMtbWljcm9vaG0gPSA8MTAwMDA+OworCQltYXhpbSxvdmVyLWhlYXQtdGVtcCA9IDw2MDA+OworCQltYXhpbSxvdmVyLXZvbHQgPSA8NDMwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvbWF4ODkyNV9iYXR0ZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyX3N1cHBseS9tYXg4OTI1X2JhdHRlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdlM2UwYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvbWF4ODkyNV9iYXR0ZXIudHh0CkBAIC0wLDAgKzEsMTggQEAKK21heDg5MjUtYmF0dGVyeSBiaW5kaW5ncworfn5+fn5+fn5+fn5+fn5+fgorCitPcHRpb25hbCBwcm9wZXJ0aWVzIDoKKyAtIGJhdHQtZGV0ZWN0OiB3aGV0aGVyIHN1cHBvcnQgYmF0dGVyeSBkZXRlY3QKKyAtIHRvcG9mZi10aHJlc2hvbGQ6IHNldCBjaGFyZ2luZyBjdXJyZW50IGluIHRvcG9mZiBtb2RlCisgLSBmYXN0LWNoYXJnZTogc2V0IGNoYXJnaW5nIGN1cnJlbnQgaW4gZmFzdCBtb2RlCisgLSBuby10ZW1wLXN1cHBvcnQ6IHdoZXRoZXIgc3VwcG9ydCB0ZW1wZXJhdHVyZSBwcm90ZWN0aW9uIGRldGVjdAorIC0gbm8taW5zZXJ0LWRldGVjdDogd2hldGhlciBzdXBwb3J0IGluc2VydCBkZXRlY3QKKworRXhhbXBsZToKKwljaGFyZ2VyIHsKKwkJYmF0dC1kZXRlY3QgPSA8MD47CisJCXRvcG9mZi10aHJlc2hvbGQgPSA8MT47CisJCWZhc3QtY2hhcmdlID0gPDc+OworCQluby10ZW1wLXN1cHBvcnQgPSA8MD47CisJCW5vLWluc2VydC1kZXRlY3QgPSA8MD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvbXNtLXBvd2Vyb2ZmLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvbXNtLXBvd2Vyb2ZmLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTQ0YWQzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyX3N1cHBseS9tc20tcG93ZXJvZmYudHh0CkBAIC0wLDAgKzEsMTcgQEAKK01TTSBSZXN0YXJ0IERyaXZlcgorCitBIHBvd2VyIHN1cHBseSBob2xkIChwcy1ob2xkKSBiaXQgaXMgc2V0IHRvIHBvd2VyIHRoZSBtc20gY2hpcHNldHMuCitDbGVhcmluZyB0aGF0IGJpdCBhbGxvd3MgdXMgdG8gcmVzdGFydC9wb3dlcm9mZi4gVGhlIGRpZmZlcmVuY2UKK2JldHdlZW4gcG93ZXJvZmYgYW5kIHJlc3RhcnQgaXMgZGV0ZXJtaW5lZCBieSB1bmlxdWUgcG93ZXIgbWFuYWdlciBJQworc2V0dGluZ3MuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CistY29tcGF0aWJsZTogInFjb20scHNob2xkIgorLXJlZzogU3BlY2lmaWVzIHRoZSBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBwcy1ob2xkIHJlZ2lzdGVyCisKK0V4YW1wbGU6CisKKwlyZXN0YXJ0QGZjNGFiMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJxY29tLHBzaG9sZCI7CisJCXJlZyA9IDwweGZjNGFiMDAwIDB4ND47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvb2xwY19iYXR0ZXJ5LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvb2xwY19iYXR0ZXJ5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODkwMWIzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyX3N1cHBseS9vbHBjX2JhdHRlcnkudHh0CkBAIC0wLDAgKzEsNSBAQAorT0xQQyBiYXR0ZXJ5Cit+fn5+fn5+fn5+fn4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlIDogIm9scGMseG8xLWJhdHRlcnkiCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJfc3VwcGx5L3Bvd2VyX3N1cHBseS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJfc3VwcGx5L3Bvd2VyX3N1cHBseS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM5MWJmYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvcG93ZXJfc3VwcGx5LnR4dApAQCAtMCwwICsxLDIzIEBACitQb3dlciBTdXBwbHkgQ29yZSBTdXBwb3J0CisKK09wdGlvbmFsIFByb3BlcnRpZXM6CisgLSBwb3dlci1zdXBwbGllcyA6IFRoaXMgcHJvcGVydHkgaXMgYWRkZWQgdG8gYSBzdXBwbHkgaW4gb3JkZXIgdG8gbGlzdCB0aGUKKyAgIGRldmljZXMgd2hpY2ggc3VwcGx5IGl0IHBvd2VyLCByZWZlcmVuY2VkIGJ5IHRoZWlyIHBoYW5kbGVzLgorCitFeGFtcGxlOgorCisJdXNiLWNoYXJnZXI6IHBvd2VyQGUgeworCQljb21wYXRpYmxlID0gInNvbWUsdXNiLWNoYXJnZXIiOworCQkuLi4KKwl9OworCisJYWMtY2hhcmdlcjogcG93ZXJAYyB7CisJCWNvbXBhdGlibGUgPSAic29tZSxhYy1jaGFyZ2VyIjsKKwkJLi4uCisJfTsKKworCWJhdHRlcnlAYiB7CisJCWNvbXBhdGlibGUgPSAic29tZSxiYXR0ZXJ5IjsKKwkJLi4uCisJCXBvd2VyLXN1cHBsaWVzID0gPCZ1c2ItY2hhcmdlcj4sIDwmYWMtY2hhcmdlcj47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvcWNvbV9zbWJiLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvcWNvbV9zbWJiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWI4OGZhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyX3N1cHBseS9xY29tX3NtYmIudHh0CkBAIC0wLDAgKzEsMTMxIEBACitRdWFsY29tbSBTd2l0Y2gtTW9kZSBCYXR0ZXJ5IENoYXJnZXIgYW5kIEJvb3N0CisKK1BST1BFUlRJRVMKKy0gY29tcGF0aWJsZToKKyAgVXNhZ2U6IHJlcXVpcmVkCisgIFZhbHVlIHR5cGU6IDxzdHJpbmdsaXN0PgorICBEZXNjcmlwdGlvbjogTXVzdCBiZSBvbmUgb2Y6CisgICAgICAgICAgICAgICAtICJxY29tLHBtODk0MS1jaGFyZ2VyIgorCistIHJlZzoKKyAgVXNhZ2U6IHJlcXVpcmVkCisgIFZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisgIERlc2NyaXB0aW9uOiBCYXNlIGFkZHJlc3Mgb2YgcmVnaXN0ZXJzIGZvciBTTUJCIGJsb2NrCisKKy0gaW50ZXJydXB0czoKKyAgVXNhZ2U6IHJlcXVpcmVkCisgIFZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisgIERlc2NyaXB0aW9uOiBUaGUgZm9ybWF0IG9mIHRoZSBzcGVjaWZpZXIgaXMgZGVmaW5lZCBieSB0aGUgYmluZGluZyBkb2N1bWVudAorICAgICAgICAgICAgICAgZGVzY3JpYmluZyB0aGUgbm9kZSdzIGludGVycnVwdCBwYXJlbnQuICBNdXN0IGNvbnRhaW4gb25lCisgICAgICAgICAgICAgICBzcGVjaWZpZXIgZm9yIGVhY2ggb2YgdGhlIGZvbGxvd2luZyBpbnRlcnJ1cHRzLCBpbiBvcmRlcjoKKyAgICAgICAgICAgICAgIC0gY2hhcmdlIGRvbmUKKyAgICAgICAgICAgICAgIC0gY2hhcmdlIGZhc3QgbW9kZQorICAgICAgICAgICAgICAgLSBjaGFyZ2UgdHJpY2tsZSBtb2RlCisgICAgICAgICAgICAgICAtIGJhdHRlcnkgdGVtcGVyYXR1cmUgb2sKKyAgICAgICAgICAgICAgIC0gYmF0dGVyeSBwcmVzZW50CisgICAgICAgICAgICAgICAtIGNoYXJnZXIgZGlzY29ubmVjdGVkCisgICAgICAgICAgICAgICAtIFVTQi1pbiB2YWxpZAorICAgICAgICAgICAgICAgLSBEQy1pbiB2YWxpZAorCistIGludGVycnVwdC1uYW1lczoKKyAgVXNhZ2U6IHJlcXVpcmVkCisgIFZhbHVlIHR5cGU6IDxzdHJpbmdsaXN0PgorICBEZXNjcmlwdGlvbjogTXVzdCBjb250YWluIHRoZSBmb2xsb3dpbmcgbGlzdCwgc3RyaWN0bHkgb3JkZXJlZDoKKyAgICAgICAgICAgICAgICJjaGctZG9uZSIsCisgICAgICAgICAgICAgICAiY2hnLWZhc3QiLAorICAgICAgICAgICAgICAgImNoZy10cmtsIiwKKyAgICAgICAgICAgICAgICJiYXQtdGVtcC1vayIsCisgICAgICAgICAgICAgICAiYmF0LXByZXNlbnQiLAorICAgICAgICAgICAgICAgImNoZy1nb25lIiwKKyAgICAgICAgICAgICAgICJ1c2ItdmFsaWQiLAorICAgICAgICAgICAgICAgImRjLXZhbGlkIgorCistIHFjb20sZmFzdC1jaGFyZ2UtY3VycmVudC1saW1pdDoKKyAgVXNhZ2U6IG9wdGlvbmFsIChkZWZhdWx0OiAxQSwgb3IgcHJlLWNvbmZpZ3VyZWQgdmFsdWUpCisgIFZhbHVlIHR5cGU6IDx1MzI+OyB1QTsgcmFuZ2UgWzEwMG1BIDogM0FdCisgIERlc2NyaXB0aW9uOiBNYXhpbXVtIGNoYXJnZSBjdXJyZW50OyBNYXkgYmUgY2xhbXBlZCB0byBzYWZldHkgbGltaXRzLgorCistIHFjb20sZmFzdC1jaGFyZ2UtbG93LXRocmVzaG9sZC12b2x0YWdlOgorICBVc2FnZTogb3B0aW9uYWwgKGRlZmF1bHQ6IDMuMlYsIG9yIHByZS1jb25maWd1cmVkIHZhbHVlKQorICBWYWx1ZSB0eXBlOiA8dTMyPjsgdVY7IHJhbmdlIFsyLjFWIDogMy42Vl0KKyAgRGVzY3JpcHRpb246IEJhdHRlcnkgdm9sdGFnZSBsaW1pdCBhYm92ZSB3aGljaCBmYXN0IGNoYXJnaW5nIG1heSBvcGVyYXRlOworICAgICAgICAgICAgICAgQmVsb3cgdGhpcyB2YWx1ZSBsaW5lYXIgb3Igc3dpdGNoLW1vZGUgYXV0by10cmlja2xlLWNoYXJnaW5nCisgICAgICAgICAgICAgICB3aWxsIG9wZXJhdGUuCisKKy0gcWNvbSxmYXN0LWNoYXJnZS1oaWdoLXRocmVzaG9sZC12b2x0YWdlOgorICBVc2FnZTogb3B0aW9uYWwgKGRlZmF1bHQ6IDQuMlYsIG9yIHByZS1jb25maWd1cmVkIHZhbHVlKQorICBWYWx1ZSB0eXBlOiA8dTMyPjsgdVY7IHJhbmdlIFszLjI0ViA6IDVWXQorICBEZXNjcmlwdGlvbjogQmF0dGVyeSB2b2x0YWdlIGxpbWl0IGJlbG93IHdoaWNoIGZhc3QgY2hhcmdpbmcgbWF5IG9wZXJhdGU7CisgICAgICAgICAgICAgICBUaGUgZmFzdCBjaGFyZ2VyIHdpbGwgYXR0ZW1wdCB0byBjaGFyZ2UgdGhlIGJhdHRlcnkgdG8gdGhpcworICAgICAgICAgICAgICAgdm9sdGFnZS4gIE1heSBiZSBjbGFtcGVkIHRvIHNhZmV0eSBsaW1pdHMuCisKKy0gcWNvbSxmYXN0LWNoYXJnZS1zYWZlLXZvbHRhZ2U6CisgIFVzYWdlOiBvcHRpb25hbCAoZGVmYXVsdDogNC4yViwgb3IgcHJlLWNvbmZpZ3VyZWQgdmFsdWUpCisgIFZhbHVlIHR5cGU6IDx1MzI+OyB1VjsgcmFuZ2UgWzMuMjRWIDogNVZdCisgIERlc2NyaXB0aW9uOiBNYXhpbXVtIHNhZmUgYmF0dGVyeSB2b2x0YWdlOyBNYXkgYmUgcHJlLXNldCBieSBib290bG9hZGVyLCBpbgorICAgICAgICAgICAgICAgd2hpY2ggY2FzZSwgc2V0dGluZyB0aGlzIHdpbGwgaGFybWxlc3NseSBmYWlsLiBUaGUgcHJvcGVydHkKKyAgICAgICAgICAgICAgICdmYXN0LWNoYXJnZS1oaWdoLXdhdGVybWFyaycgd2lsbCBiZSBjbGFtcGVkIGJ5IHRoaXMgdmFsdWUuCisKKy0gcWNvbSxmYXN0LWNoYXJnZS1zYWZlLWN1cnJlbnQ6CisgIFVzYWdlOiBvcHRpb25hbCAoZGVmYXVsdDogMUEsIG9yIHByZS1jb25maWd1cmVkIHZhbHVlKQorICBWYWx1ZSB0eXBlOiA8dTMyPjsgdUE7IHJhbmdlIFsxMDBtQSA6IDNBXQorICBEZXNjcmlwdGlvbjogTWF4aW11bSBzYWZlIGJhdHRlcnkgY2hhcmdlIGN1cnJlbnQ7IE1heSBwcmUtc2V0IGJ5IGJvb3Rsb2FkZXIsCisgICAgICAgICAgICAgICBpbiB3aGljaCBjYXNlLCBzZXR0aW5nIHRoaXMgd2lsbCBoYXJtbGVzc2x5IGZhaWwuIFRoZSBwcm9wZXJ0eQorICAgICAgICAgICAgICAgJ3Fjb20sZmFzdC1jaGFyZ2UtY3VycmVudC1saW1pdCcgd2lsbCBiZSBjbGFtcGVkIGJ5IHRoaXMgdmFsdWUuCisKKy0gcWNvbSxhdXRvLXJlY2hhcmdlLXRocmVzaG9sZC12b2x0YWdlOgorICBVc2FnZTogb3B0aW9uYWwgKGRlZmF1bHQ6IDQuMVYsIG9yIHByZS1jb25maWd1cmVkIHZhbHVlKQorICBWYWx1ZSB0eXBlOiA8dTMyPjsgdVY7IHJhbmdlIFszLjI0ViA6IDVWXQorICBEZXNjcmlwdGlvbjogQmF0dGVyeSB2b2x0YWdlIGxpbWl0IGJlbG93IHdoaWNoIGF1dG8tcmVjaGFyZ2UgZnVuY3Rpb25hbGl0eQorICAgICAgICAgICAgICAgd2lsbCByZXN0YXJ0IGNoYXJnaW5nIGFmdGVyIGVuZC1vZi1jaGFyZ2U7ICBUaGUgaGlnaCBjdXRvZmYKKyAgICAgICAgICAgICAgIGxpbWl0IGZvciBhdXRvLXJlY2hhcmdlIGlzIDUlIGFib3ZlIHRoaXMgdmFsdWUuCisKKy0gcWNvbSxtaW5pbXVtLWlucHV0LXZvbHRhZ2U6CisgIFVzYWdlOiBvcHRpb25hbCAoZGVmYXVsdDogNC4zViwgb3IgcHJlLWNvbmZpZ3VyZWQgdmFsdWUpCisgIFZhbHVlIHR5cGU6IDx1MzI+OyB1VjsgcmFuZ2UgWzQuMlYgOiA5LjZWXQorICBEZXNjcmlwdGlvbjogSW5wdXQgdm9sdGFnZSBsZXZlbCBhYm92ZSB3aGljaCBjaGFyZ2luZyBtYXkgb3BlcmF0ZQorCistIHFjb20sZGMtY3VycmVudC1saW1pdDoKKyAgVXNhZ2U6IG9wdGlvbmFsIChkZWZhdWx0OiAxMDBtQSwgb3IgcHJlLWNvbmZpZ3VyZWQgdmFsdWUpCisgIFZhbHVlIHR5cGU6IDx1MzI+OyB1QTsgcmFuZ2UgWzEwMG1BIDogMi41QV0KKyAgRGVzY3JpcHRpb246IERlZmF1bHQgREMgY2hhcmdlIGN1cnJlbnQgbGltaXQKKworLSBxY29tLGRpc2FibGUtZGM6CisgIFVzYWdlOiBvcHRpb25hbCAoZGVmYXVsdDogZmFsc2UpCisgIFZhbHVlIHR5cGU6IGJvb2xlYW46IDx1MzI+IG9yIDxlbXB0eT4KKyAgRGVzY3JpcHRpb246IERpc2FibGUgREMgY2hhcmdlcgorCistIHFjb20samVpdGEtZXh0ZW5kZWQtdGVtcC1yYW5nZToKKyAgVXNhZ2U6IG9wdGlvbmFsIChkZWZhdWx0OiBmYWxzZSkKKyAgVmFsdWUgdHlwZTogYm9vbGVhbjogPHUzMj4gb3IgPGVtcHR5PgorICBEZXNjcmlwdGlvbjogRW5hYmxlIEpFSVRBIGV4dGVuZGVkIHRlbXBlcmF0dXJlIHJhbmdlOyAgVGhpcyBkb2VzICpub3QqCisgICAgICAgICAgICAgICBhZGp1c3QgdGhlIG1heGltdW0gY2hhcmdlIHZvbHRhZ2Ugb3IgY3VycmVudCBpbiB0aGUgZXh0ZW5kZWQKKyAgICAgICAgICAgICAgIHRlbXBlcmF0dXJlIHJhbmdlLiAgSXQgb25seSBhbGxvd3MgY2hhcmdpbmcgd2hlbiB0aGUgYmF0dGVyeQorICAgICAgICAgICAgICAgaXMgaW4gdGhlIGV4dGVuZGVkIHRlbXBlcmF0dXJlIHJhbmdlLiAgVm9sdGFnZS9jdXJyZW50CisgICAgICAgICAgICAgICByZWd1bGF0aW9uIG11c3QgYmUgZG9uZSBleHRlcm5hbGx5IHRvIGZ1bGx5IGNvbXBseSB3aXRoCisgICAgICAgICAgICAgICB0aGUgSkVJVEEgc2FmZXR5IGd1aWRlbGluZXMgaWYgdGhpcyBmbGFnIGlzIHNldC4KKworRVhBTVBMRQorY2hhcmdlckAxMDAwIHsKKyAgICAgICBjb21wYXRpYmxlID0gInFjb20scG04OTQxLWNoYXJnZXIiOworICAgICAgIHJlZyA9IDwweDEwMDAgMHg3MDA+OworICAgICAgIGludGVycnVwdHMgPSA8MHgwIDB4MTAgNyBJUlFfVFlQRV9FREdFX0JPVEg+LAorICAgICAgICAgICAgICAgICAgICAgICA8MHgwIDB4MTAgNSBJUlFfVFlQRV9FREdFX0JPVEg+LAorICAgICAgICAgICAgICAgICAgICAgICA8MHgwIDB4MTAgNCBJUlFfVFlQRV9FREdFX0JPVEg+LAorICAgICAgICAgICAgICAgICAgICAgICA8MHgwIDB4MTIgMSBJUlFfVFlQRV9FREdFX0JPVEg+LAorICAgICAgICAgICAgICAgICAgICAgICA8MHgwIDB4MTIgMCBJUlFfVFlQRV9FREdFX0JPVEg+LAorICAgICAgICAgICAgICAgICAgICAgICA8MHgwIDB4MTMgMiBJUlFfVFlQRV9FREdFX0JPVEg+LAorICAgICAgICAgICAgICAgICAgICAgICA8MHgwIDB4MTMgMSBJUlFfVFlQRV9FREdFX0JPVEg+LAorICAgICAgICAgICAgICAgICAgICAgICA8MHgwIDB4MTQgMSBJUlFfVFlQRV9FREdFX0JPVEg+OworICAgICAgIGludGVycnVwdC1uYW1lcyA9ICJjaGctZG9uZSIsCisgICAgICAgICAgICAgICAgICAgICAgICJjaGctZmFzdCIsCisgICAgICAgICAgICAgICAgICAgICAgICJjaGctdHJrbCIsCisgICAgICAgICAgICAgICAgICAgICAgICJiYXQtdGVtcC1vayIsCisgICAgICAgICAgICAgICAgICAgICAgICJiYXQtcHJlc2VudCIsCisgICAgICAgICAgICAgICAgICAgICAgICJjaGctZ29uZSIsCisgICAgICAgICAgICAgICAgICAgICAgICJ1c2ItdmFsaWQiLAorICAgICAgICAgICAgICAgICAgICAgICAiZGMtdmFsaWQiOworCisgICAgICAgcWNvbSxmYXN0LWNoYXJnZS1jdXJyZW50LWxpbWl0ID0gPDEwMDAwMDA+OworICAgICAgIHFjb20sZGMtY2hhcmdlLWN1cnJlbnQtbGltaXQgPSA8MTAwMDAwMD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyX3N1cHBseS9xbmFwLXBvd2Vyb2ZmLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvcW5hcC1wb3dlcm9mZi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYyNWU3NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvcW5hcC1wb3dlcm9mZi50eHQKQEAgLTAsMCArMSwxNiBAQAorKiBRTkFQIFBvd2VyIE9mZgorCitRTkFQIE5BUyBkZXZpY2VzIGhhdmUgYSBtaWNyb2NvbnRyb2xsZXIgY29udHJvbGxpbmcgdGhlIG1haW4gcG93ZXIKK3N1cHBseS4gVGhpcyBtaWNyb2NvbnRyb2xsZXIgaXMgY29ubmVjdGVkIHRvIFVBUlQxIG9mIHRoZSBLaXJrd29vZCBhbmQKK09yaW9uNXggU29Dcy4gU2VuZGluZyB0aGUgY2hhcmFjdGVyICdBJywgYXQgMTkyMDAgYmF1ZCwgdGVsbHMgdGhlCittaWNyb2NvbnRyb2xsZXIgdG8gdHVybiB0aGUgcG93ZXIgb2ZmLiBUaGlzIGRyaXZlciBhZGRzIGEgaGFuZGxlciB0bworcG1fcG93ZXJfb2ZmIHdoaWNoIGlzIGNhbGxlZCB0byB0dXJuIHRoZSBwb3dlciBvZmYuCisKK1N5bm9sb2d5IE5BUyBkZXZpY2VzIHVzZSBhIHNpbWlsYXIgc2NoZW1lLCBidXQgYSBkaWZmZXJlbnQgYmF1ZCByYXRlLAorOTYwMCwgYW5kIGEgZGlmZmVyZW50IGNoYXJhY3RlciwgJzEnLgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgInFuYXAscG93ZXItb2ZmIiBvciAic3lub2xvZ3kscG93ZXItb2ZmIgorCistIHJlZzogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIFVBUlQxCistIGNsb2NrczogdGNsayBjbG9jawpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyX3N1cHBseS9yZXN0YXJ0LXBvd2Vyb2ZmLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvcmVzdGFydC1wb3dlcm9mZi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc3NmU2OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvcmVzdGFydC1wb3dlcm9mZi50eHQKQEAgLTAsMCArMSw4IEBACisqIFJlc3RhcnQgUG93ZXIgT2ZmCisKK0J1ZmZhbG8gTGlua3N0YXRpb24gTFMtWEhMIGFuZCBMUy1DSEx2MiwgYW5kIG90aGVyIGRldmljZXMgcG93ZXIgb2ZmCitieSByZXN0YXJ0aW5nIGFuZCBsZXR0aW5nIHUtYm9vdCBrZWVwIGhvbGQgb2YgdGhlIG1hY2hpbmUgdW50aWwgdGhlCit1c2VyIHByZXNzZXMgYSBidXR0b24uCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAicmVzdGFydC1wb3dlcm9mZiIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvc2JzX3Nicy1iYXR0ZXJ5LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvc2JzX3Nicy1iYXR0ZXJ5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDBlODkyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyX3N1cHBseS9zYnNfc2JzLWJhdHRlcnkudHh0CkBAIC0wLDAgKzEsMjMgQEAKK1NCUyBzYnMtYmF0dGVyeQorfn5+fn5+fn5+fgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIDoKKyAtIGNvbXBhdGlibGUgOiAic2JzLHNicy1iYXR0ZXJ5IgorCitPcHRpb25hbCBwcm9wZXJ0aWVzIDoKKyAtIHNicyxpMmMtcmV0cnktY291bnQgOiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJldHJ5IGkyYyB0cmFuc2FjdGlvbnMgb24gaTJjCisgICBJTyBmYWlsdXJlLgorIC0gc2JzLHBvbGwtcmV0cnktY291bnQgOiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHRyeSBsb29raW5nIGZvciBuZXcgc3RhdHVzCisgICBhZnRlciBhbiBleHRlcm5hbCBjaGFuZ2Ugbm90aWZpY2F0aW9uLgorIC0gc2JzLGJhdHRlcnktZGV0ZWN0LWdwaW9zIDogVGhlIGdwaW8gd2hpY2ggc2lnbmFscyBiYXR0ZXJ5IGRldGVjdGlvbiBhbmQKKyAgIGEgZmxhZyBzcGVjaWZ5aW5nIGl0cyBwb2xhcml0eS4KKworRXhhbXBsZToKKworCWJxMjB6NzVAYiB7CisJCWNvbXBhdGlibGUgPSAic2JzLHNicy1iYXR0ZXJ5IjsKKwkJcmVnID0gPCAweGIgPjsKKwkJc2JzLGkyYy1yZXRyeS1jb3VudCA9IDwyPjsKKwkJc2JzLHBvbGwtcmV0cnktY291bnQgPSA8MTA+OworCQlzYnMsYmF0dGVyeS1kZXRlY3QtZ3Bpb3MgPSA8JmdwaW8tY29udHJvbGxlciAxMjIgMT47CisJfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyX3N1cHBseS90aSxicTI0NzM1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvdGksYnEyNDczNS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY2YTU1MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvdGksYnEyNDczNS50eHQKQEAgLTAsMCArMSwzMiBAQAorVEkgQlEyNDczNSBDaGFyZ2UgQ29udHJvbGxlcgorfn5+fn5+fn5+fgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIDoKKyAtIGNvbXBhdGlibGUgOiAidGksYnEyNDczNSIKKworT3B0aW9uYWwgcHJvcGVydGllcyA6CisgLSBpbnRlcnJ1cHRzIDogU3BlY2lmeSB0aGUgaW50ZXJydXB0IHRvIGJlIHVzZWQgdG8gdHJpZ2dlciB3aGVuIHRoZSBBQworICAgYWRhcHRlciBpcyBlaXRoZXIgcGx1Z2dlZCBpbiBvciByZW1vdmVkLgorIC0gdGksYWMtZGV0ZWN0LWdwaW9zIDogVGhpcyBHUElPIGlzIG9wdGlvbmFsbHkgdXNlZCB0byByZWFkIHRoZSBBQyBhZGFwdGVyCisgICBwcmVzZW5jZS4gVGhpcyBpcyBhIEhvc3QgR1BJTyB0aGF0IGlzIGNvbmZpZ3VyZWQgYXMgYW4gaW5wdXQgYW5kCisgICBjb25uZWN0ZWQgdG8gdGhlIGJxMjQ3MzUuCisgLSB0aSxjaGFyZ2UtY3VycmVudCA6IFVzZWQgdG8gY29udHJvbCBhbmQgc2V0IHRoZSBjaGFyZ2luZyBjdXJyZW50LiBUaGlzIHZhbHVlCisgICBtdXN0IGJlIGJldHdlZW4gMTI4bUEgYW5kIDguMTI4QSB3aXRoIGEgNjRtQSBzdGVwIHJlc29sdXRpb24uIFRoZSBQT1IgdmFsdWUKKyAgIGlzIDB4MDAwMGguIFRoaXMgbnVtYmVyIGlzIGluIG1BIChlLmcuIDgxOTIpLCBzZWUgc3BlYyBmb3IgbW9yZSBpbmZvcm1hdGlvbgorICAgYWJvdXQgdGhlIENoYXJnZUN1cnJlbnQgKDB4MTRoKSByZWdpc3Rlci4KKyAtIHRpLGNoYXJnZS12b2x0YWdlIDogVXNlZCB0byBjb250cm9sIGFuZCBzZXQgdGhlIGNoYXJnaW5nIHZvbHRhZ2UuIFRoaXMgdmFsdWUKKyAgIG11c3QgYmUgYmV0d2VlbiAxLjAyNFYgYW5kIDE5LjJWIHdpdGggYSAxNm1WIHN0ZXAgcmVzb2x1dGlvbi4gVGhlIFBPUiB2YWx1ZQorICAgaXMgMHgwMDAwaC4gVGhpcyBudW1iZXIgaXMgaW4gbVYgKGUuZy4gMTkyMDApLCBzZWUgc3BlYyBmb3IgbW9yZSBpbmZvcm1hdGlvbgorICAgYWJvdXQgdGhlIENoYXJnZVZvbHRhZ2UgKDB4MTVoKSByZWdpc3Rlci4KKyAtIHRpLGlucHV0LWN1cnJlbnQgOiBVc2VkIHRvIGNvbnRyb2wgYW5kIHNldCB0aGUgY2hhcmdlciBpbnB1dCBjdXJyZW50LiBUaGlzCisgICB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gMTI4bUEgYW5kIDguMDY0QSB3aXRoIGEgMTI4bUEgc3RlcCByZXNvbHV0aW9uLiBUaGUKKyAgIFBPUiB2YWx1ZSBpcyAweDEwMDBoLiBUaGlzIG51bWJlciBpcyBpbiBtQSAoZS5nLiA4MDY0KSwgc2VlIHRoZSBzcGVjIGZvcgorICAgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgSW5wdXRDdXJyZW50ICgweDNmaCkgcmVnaXN0ZXIuCisKK0V4YW1wbGU6CisKKwlicTI0NzM1QDkgeworCQljb21wYXRpYmxlID0gInRpLGJxMjQ3MzUiOworCQlyZWcgPSA8MHg5PjsKKwkJdGksYWMtZGV0ZWN0LWdwaW9zID0gPCZncGlvIDcyIDB4MT47CisJfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyX3N1cHBseS90cHM2NTA5MC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJfc3VwcGx5L3RwczY1MDkwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTVlMGQzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyX3N1cHBseS90cHM2NTA5MC50eHQKQEAgLTAsMCArMSwxNyBAQAorVFBTNjUwOTAgRnJvbnRlbmQgUE1VIHdpdGggU3dpdGNobW9kZSBDaGFyZ2VyCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CistY29tcGF0aWJsZTogInRpLHRwczY1MDkwLWNoYXJnZXIiCisKK09wdGlvbmFsIFByb3BlcnRpZXM6CistdGksZW5hYmxlLWxvdy1jdXJyZW50LWNocmc6IEVuYWJsZXMgY2hhcmdpbmcgd2hlbiBhIGxvdyBjdXJyZW50IGlzIGRldGVjdGVkCisgd2hpbGUgdGhlIGRlZmF1bHQgbG9naWMgaXMgdG8gc3RvcCBjaGFyZ2luZy4KKworVGhpcyBub2RlIGlzIGEgc3Vibm9kZSBvZiB0aGUgdHBzNjUwOTAgUE1JQy4KKworRXhhbXBsZToKKworCXRwczY1MDkwLWNoYXJnZXIgeworCQljb21wYXRpYmxlID0gInRpLHRwczY1MDkwLWNoYXJnZXIiOworCQl0aSxlbmFibGUtbG93LWN1cnJlbnQtY2hyZzsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyX3N1cHBseS90cHM2NTIxN19jaGFyZ2VyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvdHBzNjUyMTdfY2hhcmdlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThkMTMxYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcl9zdXBwbHkvdHBzNjUyMTdfY2hhcmdlci50eHQKQEAgLTAsMCArMSwxMiBAQAorVFBTNjUyMTcgQ2hhcmdlcgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorLWNvbXBhdGlibGU6ICJ0aSx0cHM2NTIxNy1jaGFyZ2VyIgorCitUaGlzIG5vZGUgaXMgYSBzdWJub2RlIG9mIHRoZSB0cHM2NTIxNyBQTUlDLgorCitFeGFtcGxlOgorCisJdHBzNjUyMTctY2hhcmdlciB7CisJCWNvbXBhdGlibGUgPSAidGksdHBzNjUwOTAtY2hhcmdlciI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjLzR4eC9ha2Vib25vLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjLzR4eC9ha2Vib25vLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjkzOTIxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvNHh4L2FrZWJvbm8udHh0CkBAIC0wLDAgKzEsNTQgQEAKKworSUJNIEFrZWJvbm8gYm9hcmQgZGV2aWNlIHRyZWUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBJQk0gQWtlYm9ubyBib2FyZCBpcyBhIGRldmVsb3BtZW50IGJvYXJkIGZvciB0aGUgUFBDNDc2R1RSIFNvQy4KKworMCkgVGhlIHJvb3Qgbm9kZQorCisgICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgICAtIG1vZGVsIDogImlibSxha2Vib25vIi4KKyAgIC0gY29tcGF0aWJsZSA6ICJpYm0sYWtlYm9ubyIgLCAiaWJtLDQ3Nmd0ciIuCisKKzEuYSkgVGhlIFNlY3VyZSBEaWdpdGFsIEhvc3QgQ29udHJvbGxlciBJbnRlcmZhY2UgKFNESENJKSBub2RlCisKKyAgUmVwcmVzZW50IHRoZSBTZWN1cmUgRGlnaXRhbCBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlcy4KKworICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgICAtIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImlibSw0NzZndHItc2RoY2kiLCJnZW5lcmljLXNkaGNpIi4KKyAgIC0gcmVnIDogc2hvdWxkIGNvbnRhaW4gdGhlIFNESENJIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoLgorICAgLSBpbnRlcnJ1cHQtcGFyZW50IDogYSBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIuCisgICAtIGludGVycnVwdHMgOiBzaG91bGQgY29udGFpbiB0aGUgU0RIQ0kgaW50ZXJydXB0LgorCisxLmIpIFRoZSBBZHZhbmNlZCBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlIChBSENJKSBTQVRBIG5vZGUKKworICBSZXByZXNlbnRzIHRoZSBhZHZhbmNlZCBob3N0IGNvbnRyb2xsZXIgU0FUQSBpbnRlcmZhY2UuCisKKyAgUmVxdWlyZWQgcHJvcGVydGllczoKKworICAgLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJpYm0sNDc2Z3RyLWFoY2kiLgorICAgLSByZWcgOiBzaG91bGQgY29udGFpbiB0aGUgQUhDSSByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aC4KKyAgIC0gaW50ZXJydXB0LXBhcmVudCA6IGEgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyLgorICAgLSBpbnRlcnJ1cHRzIDogc2hvdWxkIGNvbnRhaW4gdGhlIEFIQ0kgaW50ZXJydXB0LgorCisxLmMpIFRoZSBGUEdBIG5vZGUKKworICBUaGUgQWtlYm9ubyBib2FyZCBzdG9yZXMgc29tZSBib2FyZCBpbmZvcm1hdGlvbiBzdWNoIGFzIHRoZSByZXZpc2lvbgorICBudW1iZXIgaW4gYW4gRlBHQSB3aGljaCBpcyByZXByZXNlbnRlZCBieSB0aGlzIG5vZGUuCisKKyAgUmVxdWlyZWQgcHJvcGVydGllczoKKworICAgLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJpYm0sYWtlYm9uby1mcGdhIi4KKyAgIC0gcmVnIDogc2hvdWxkIGNvbnRhaW4gdGhlIEZQR0EgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGguCisKKzEuZCkgVGhlIEFWUiBub2RlCisKKyAgVGhlIEFrZWJvbm8gYm9hcmQgaGFzIGFuIEF0bWVsIEFWUiBtaWNyb3Byb2Nlc3NvciBhdHRhY2hlZCB0byB0aGUgSTJDCisgIGJ1cyBhcyBhIHBvd2VyIGNvbnRyb2xsZXIgZm9yIHRoZSBib2FyZC4KKworICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgICAtIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImlibSxha2Vib25vLWF2ciIuCisgICAtIHJlZyA6IHNob3VsZCBjb250YWluIHRoZSBJMkMgYnVzIGFkZHJlc3MgZm9yIHRoZSBBVlIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy80eHgvY3BtLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjLzR4eC9jcG0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlNDU5ODAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy80eHgvY3BtLnR4dApAQCAtMCwwICsxLDUyIEBACitQUEM0eHggQ2xvY2sgUG93ZXIgTWFuYWdlbWVudCAoQ1BNKSBub2RlCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisJLSBjb21wYXRpYmxlCQk6IGNvbXBhdGlibGUgbGlzdCwgY3VycmVudGx5IG9ubHkgImlibSxjcG0iCisJLSBkY3ItYWNjZXNzLW1ldGhvZAk6ICJuYXRpdmUiCisJLSBkY3ItcmVnCQk6IDwgRENSIHJlZ2lzdGVyIHJhbmdlID4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKwktIGVyLW9mZnNldAkJOiBBbGwgNHh4IFNvQ3Mgd2l0aCBhIENQTSBjb250cm9sbGVyIGhhdmUKKwkJCQkgIG9uZSBvZiB0d28gZGlmZmVyZW50IG9yZGVyIGZvciB0aGUgQ1BNCisJCQkJICByZWdpc3RlcnMuIFNvbWUgaGF2ZSB0aGUgQ1BNIHJlZ2lzdGVycworCQkJCSAgaW4gdGhlIGZvbGxvd2luZyBvcmRlciAoRVIsRlIsU1IpLiBUaGUKKwkJCQkgIG90aGVycyBoYXZlIHRoZW0gaW4gdGhlIGZvbGxvd2luZyBvcmRlcgorCQkJCSAgKFNSLEVSLEZSKS4gRm9yIHRoZSBzZWNvbmQgY2FzZSBzZXQKKwkJCQkgIGVyLW9mZnNldCA9IDwxPi4KKwktIHVudXNlZC11bml0cwkJOiBzcGVjaWZpZXIgY29uc2lzdCBvZiBvbmUgY2VsbC4gRm9yIGVhY2gKKwkJCQkgIGJpdCBpbiB0aGUgY2VsbCwgdGhlIGNvcnJlc3BvbmRpbmcgYml0CisJCQkJICBpbiBDUE0gd2lsbCBiZSBzZXQgdG8gdHVybiBvZmYgdW51c2VkCisJCQkJICBkZXZpY2VzLgorCS0gaWRsZS1kb3plCQk6IHNwZWNpZmllciBjb25zaXN0IG9mIG9uZSBjZWxsLiBGb3IgZWFjaAorCQkJCSAgYml0IGluIHRoZSBjZWxsLCB0aGUgY29ycmVzcG9uZGluZyBiaXQKKwkJCQkgIGluIENQTSB3aWxsIGJlIHNldCB0byB0dXJuIG9mZiB1bnVzZWQKKwkJCQkgIGRldmljZXMuIFRoaXMgaXMgdXN1YWxseSBqdXN0IENQTVtDUFVdLgorCS0gc3RhbmRieQkJOiBzcGVjaWZpZXIgY29uc2lzdCBvZiBvbmUgY2VsbC4gRm9yIGVhY2gKKwkJCQkgIGJpdCBpbiB0aGUgY2VsbCwgdGhlIGNvcnJlc3BvbmRpbmcgYml0CisJCQkJICBpbiBDUE0gd2lsbCBiZSBzZXQgb24gc3RhbmRieSBhbmQKKwkJCQkgIHJlc3RvcmVkIG9uIHJlc3VtZS4KKwktIHN1c3BlbmQJCTogc3BlY2lmaWVyIGNvbnNpc3Qgb2Ygb25lIGNlbGwuIEZvciBlYWNoCisJCQkJICBiaXQgaW4gdGhlIGNlbGwsIHRoZSBjb3JyZXNwb25kaW5nIGJpdAorCQkJCSAgaW4gQ1BNIHdpbGwgYmUgc2V0IG9uIHN1c3BlbmQgKG1lbSkgYW5kCisJCQkJICByZXN0b3JlZCBvbiByZXN1bWUuIE5vdGUsIGZvciBzdGFuZGJ5CisJCQkJICBhbmQgc3VzcGVuZCB0aGUgY29ycmVzcG9uZGluZyBiaXRzIGNhbgorCQkJCSAgYmUgZGlmZmVyZW50IG9yIHRoZSBzYW1lLiBVc3VhbGx5IGZvcgorCQkJCSAgc3RhbmRieSBvbmx5IGNsYXNzIDIgYW5kIDMgdW5pdHMgYXJlIHNldC4KKwkJCQkgIEhvd2V2ZXIsIHRoZSBpbnRlcmZhY2UgZG9lcyBub3QgY2FyZS4KKwkJCQkgIElmIHRoZXkgYXJlIHRoZSBzYW1lLCB0aGUgYWRkaXRpb25hbAorCQkJCSAgcG93ZXIgc2F2aW5nIHdpbGwgYmUgc2VlaW5nIGlmIHN1cHBvcnQKKwkJCQkgIGlzIGF2YWlsYWJsZSB0byBwdXQgdGhlIEREUiBpbiBzZWxmCisJCQkJICByZWZyZXNoIG1vZGUgYW5kIGFueSBhZGRpdGlvbmFsIHBvd2VyCisJCQkJICBzYXZpbmcgdGVjaG5pcXVlcyBmb3IgdGhlIHNwZWNpZmljIFNvQy4KKworRXhhbXBsZToKKwlDUE0wOiBjcG0geworCQljb21wYXRpYmxlID0gImlibSxjcG0iOworCQlkY3ItYWNjZXNzLW1ldGhvZCA9ICJuYXRpdmUiOworCQlkY3ItcmVnID0gPDB4MTYwIDB4MDAzPjsKKwkJZXItb2Zmc2V0ID0gPDA+OworCQl1bnVzZWQtdW5pdHMgPSA8MHgwMDAwMDEwMD47CisJCWlkbGUtZG96ZSA9IDwweDAyMDAwMDAwPjsKKwkJc3RhbmRieSA9IDwweGZlZmYwMDAwPjsKKwkJc3VzcGVuZCA9IDwweGZlZmY3OTFkPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy80eHgvZW1hYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy80eHgvZW1hYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzEyYmFmNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjLzR4eC9lbWFjLnR4dApAQCAtMCwwICsxLDE0OCBAQAorICAgIDR4eC9BeG9uIEVNQUMgZXRoZXJuZXQgbm9kZXMKKworICAgIFRoZSBFTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIgaW4gSUJNIGFuZCBBTUNDIDR4eCBjaGlwcywgYW5kIGFsc28KKyAgICB0aGUgQXhvbiBicmlkZ2UuICBUbyBvcGVyYXRlIHRoaXMgbmVlZHMgdG8gaW50ZXJhY3Qgd2l0aCBhIHRoaXMKKyAgICBzcGVjaWFsIE1jTUFMIERNQSBjb250cm9sbGVyLCBhbmQgc29tZXRpbWVzIGFuIFJHTUlJIG9yIFpNSUkKKyAgICBpbnRlcmZhY2UuICBJbiBhZGRpdGlvbiB0byB0aGUgbm9kZXMgYW5kIHByb3BlcnRpZXMgZGVzY3JpYmVkCisgICAgYmVsb3csIHRoZSBub2RlIGZvciB0aGUgT1BCIGJ1cyBvbiB3aGljaCB0aGUgRU1BQyBzaXRzIG11c3QgaGF2ZSBhCisgICAgY29ycmVjdCBjbG9jay1mcmVxdWVuY3kgcHJvcGVydHkuCisKKyAgICAgIGkpIFRoZSBFTUFDIG5vZGUgaXRzZWxmCisKKyAgICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAgIC0gZGV2aWNlX3R5cGUgICAgICAgOiAibmV0d29yayIKKworICAgIC0gY29tcGF0aWJsZSAgICAgICAgOiBjb21wYXRpYmxlIGxpc3QsIGNvbnRhaW5zIDIgZW50cmllcywgZmlyc3QgaXMKKwkJCSAgImlibSxlbWFjLUNISVAiIHdoZXJlIENISVAgaXMgdGhlIGhvc3QgQVNJQyAoNDQwZ3gsCisJCQkgIDQwNWdwLCBBeG9uKSBhbmQgc2Vjb25kIGlzIGVpdGhlciAiaWJtLGVtYWMiIG9yCisJCQkgICJpYm0sZW1hYzQiLiAgRm9yIEF4b24sIHRodXMsIHdlIGhhdmU6ICJpYm0sZW1hYy1heG9uIiwKKwkJCSAgImlibSxlbWFjNCIKKyAgICAtIGludGVycnVwdHMgICAgICAgIDogPGludGVycnVwdCBtYXBwaW5nIGZvciBFTUFDIElSUSBhbmQgV09MIElSUT4KKyAgICAtIGludGVycnVwdC1wYXJlbnQgIDogb3B0aW9uYWwsIGlmIG5lZWRlZCBmb3IgaW50ZXJydXB0IG1hcHBpbmcKKyAgICAtIHJlZyAgICAgICAgICAgICAgIDogPHJlZ2lzdGVycyBtYXBwaW5nPgorICAgIC0gbG9jYWwtbWFjLWFkZHJlc3MgOiA2IGJ5dGVzLCBNQUMgYWRkcmVzcworICAgIC0gbWFsLWRldmljZSAgICAgICAgOiBwaGFuZGxlIG9mIHRoZSBhc3NvY2lhdGVkIE1jTUFMIG5vZGUKKyAgICAtIG1hbC10eC1jaGFubmVsICAgIDogMSBjZWxsLCBpbmRleCBvZiB0aGUgdHggY2hhbm5lbCBvbiBNY01BTCBhc3NvY2lhdGVkCisJCQkgIHdpdGggdGhpcyBFTUFDCisgICAgLSBtYWwtcngtY2hhbm5lbCAgICA6IDEgY2VsbCwgaW5kZXggb2YgdGhlIHJ4IGNoYW5uZWwgb24gTWNNQUwgYXNzb2NpYXRlZAorCQkJICB3aXRoIHRoaXMgRU1BQworICAgIC0gY2VsbC1pbmRleCAgICAgICAgOiAxIGNlbGwsIGhhcmR3YXJlIGluZGV4IG9mIHRoZSBFTUFDIGNlbGwgb24gYSBnaXZlbgorCQkJICBBU0lDICh0eXBpY2FsbHkgMHgwIGFuZCAweDEgZm9yIEVNQUMwIGFuZCBFTUFDMSBvbgorCQkJICBlYWNoIEF4b24gY2hpcCkKKyAgICAtIG1heC1mcmFtZS1zaXplICAgIDogMSBjZWxsLCBtYXhpbXVtIGZyYW1lIHNpemUgc3VwcG9ydGVkIGluIGJ5dGVzCisgICAgLSByeC1maWZvLXNpemUgICAgICA6IDEgY2VsbCwgUnggZmlmbyBzaXplIGluIGJ5dGVzIGZvciAxMCBhbmQgMTAwIE1iL3NlYworCQkJICBvcGVyYXRpb25zLgorCQkJICBGb3IgQXhvbiwgMjA0OAorICAgIC0gdHgtZmlmby1zaXplICAgICAgOiAxIGNlbGwsIFR4IGZpZm8gc2l6ZSBpbiBieXRlcyBmb3IgMTAgYW5kIDEwMCBNYi9zZWMKKwkJCSAgb3BlcmF0aW9ucy4KKwkJCSAgRm9yIEF4b24sIDIwNDguCisgICAgLSBmaWZvLWVudHJ5LXNpemUgICA6IDEgY2VsbCwgc2l6ZSBvZiBhIGZpZm8gZW50cnkgKHVzZWQgdG8gY2FsY3VsYXRlCisJCQkgIHRocmVzaG9sZHMpLgorCQkJICBGb3IgQXhvbiwgMHgwMDAwMDAxMAorICAgIC0gbWFsLWJ1cnN0LXNpemUgICAgOiAxIGNlbGwsIE1BTCBidXJzdCBzaXplICh1c2VkIHRvIGNhbGN1bGF0ZSB0aHJlc2hvbGRzKQorCQkJICBpbiBieXRlcy4KKwkJCSAgRm9yIEF4b24sIDB4MDAwMDAxMDAgKEkgdGhpbmsgLi4uKQorICAgIC0gcGh5LW1vZGUgICAgICAgICAgOiBzdHJpbmcsIG1vZGUgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgUEhZIGludGVyZmFjZS4KKwkJCSAgU3VwcG9ydGVkIHZhbHVlcyBhcmU6ICJtaWkiLCAicm1paSIsICJzbWlpIiwgInJnbWlpIiwKKwkJCSAgInRiaSIsICJnbWlpIiwgcnRiaSIsICJzZ21paSIuCisJCQkgIEZvciBBeG9uIG9uIENBQiwgaXQgaXMgInJnbWlpIgorICAgIC0gbWRpby1kZXZpY2UgICAgICAgOiAxIGNlbGwsIHJlcXVpcmVkIGlmZiB1c2luZyBzaGFyZWQgTURJTyByZWdpc3RlcnMKKwkJCSAgKDQ0MEVQKS4gIHBoYW5kbGUgb2YgdGhlIEVNQUMgdG8gdXNlIHRvIGRyaXZlIHRoZQorCQkJICBNRElPIGxpbmVzIGZvciB0aGUgUEhZIHVzZWQgYnkgdGhpcyBFTUFDLgorICAgIC0gem1paS1kZXZpY2UgICAgICAgOiAxIGNlbGwsIHJlcXVpcmVkIGlmZiBjb25uZWN0ZWQgdG8gYSBaTUlJLiAgcGhhbmRsZSBvZgorCQkJICB0aGUgWk1JSSBkZXZpY2Ugbm9kZQorICAgIC0gem1paS1jaGFubmVsICAgICAgOiAxIGNlbGwsIHJlcXVpcmVkIGlmZiBjb25uZWN0ZWQgdG8gYSBaTUlJLiAgV2hpY2ggWk1JSQorCQkJICBjaGFubmVsIG9yIDB4ZmZmZmZmZmYgaWYgWk1JSSBpcyBvbmx5IHVzZWQgZm9yIE1ESU8uCisgICAgLSByZ21paS1kZXZpY2UgICAgICA6IDEgY2VsbCwgcmVxdWlyZWQgaWZmIGNvbm5lY3RlZCB0byBhbiBSR01JSS4gcGhhbmRsZQorCQkJICBvZiB0aGUgUkdNSUkgZGV2aWNlIG5vZGUuCisJCQkgIEZvciBBeG9uOiBwaGFuZGxlIG9mIHBsYjUvcGxiNC9vcGIvcmdtaWkKKyAgICAtIHJnbWlpLWNoYW5uZWwgICAgIDogMSBjZWxsLCByZXF1aXJlZCBpZmYgY29ubmVjdGVkIHRvIGFuIFJHTUlJLiAgV2hpY2gKKwkJCSAgUkdNSUkgY2hhbm5lbCBpcyB1c2VkIGJ5IHRoaXMgRU1BQy4KKwkJCSAgRm94IEF4b246IHByZXNlbnQsIHdoYXRldmVyIHZhbHVlIGlzIGFwcHJvcHJpYXRlIGZvciBlYWNoCisJCQkgIEVNQUMsIHRoYXQgaXMgdGhlIGNvbnRlbnQgb2YgdGhlIGN1cnJlbnQgKGJvZ3VzKSAicGh5LXBvcnQiCisJCQkgIHByb3BlcnR5LgorCisgICAgT3B0aW9uYWwgcHJvcGVydGllczoKKyAgICAtIHBoeS1hZGRyZXNzICAgICAgIDogMSBjZWxsLCBvcHRpb25hbCwgTURJTyBhZGRyZXNzIG9mIHRoZSBQSFkuIElmIGFic2VudCwKKwkJCSAgYSBzZWFyY2ggaXMgcGVyZm9ybWVkLgorICAgIC0gcGh5LW1hcCAgICAgICAgICAgOiAxIGNlbGwsIG9wdGlvbmFsLCBiaXRtYXAgb2YgYWRkcmVzc2VzIHRvIHByb2JlIHRoZSBQSFkKKwkJCSAgZm9yLCB1c2VkIGlmIHBoeS1hZGRyZXNzIGlzIGFic2VudC4gYml0IDB4MDAwMDAwMDEgaXMKKwkJCSAgTURJTyBhZGRyZXNzIDAuCisJCQkgIEZvciBBeG9uIGl0IGNhbiBiZSBhYnNlbnQsIHRob3VnaCBteSBjdXJyZW50IGRyaXZlcgorCQkJICBkb2Vzbid0IGhhbmRsZSBwaHktYWRkcmVzcyB5ZXQgc28gZm9yIG5vdywga2VlcAorCQkJICAweDAwZmZmZmZmIGluIGl0LgorICAgIC0gcngtZmlmby1zaXplLWdpZ2UgOiAxIGNlbGwsIFJ4IGZpZm8gc2l6ZSBpbiBieXRlcyBmb3IgMTAwMCBNYi9zZWMKKwkJCSAgb3BlcmF0aW9ucyAoaWYgYWJzZW50IHRoZSB2YWx1ZSBpcyB0aGUgc2FtZSBhcworCQkJICByeC1maWZvLXNpemUpLiAgRm9yIEF4b24sIGVpdGhlciBhYnNlbnQgb3IgMjA0OC4KKyAgICAtIHR4LWZpZm8tc2l6ZS1naWdlIDogMSBjZWxsLCBUeCBmaWZvIHNpemUgaW4gYnl0ZXMgZm9yIDEwMDAgTWIvc2VjCisJCQkgIG9wZXJhdGlvbnMgKGlmIGFic2VudCB0aGUgdmFsdWUgaXMgdGhlIHNhbWUgYXMKKwkJCSAgdHgtZmlmby1zaXplKS4gRm9yIEF4b24sIGVpdGhlciBhYnNlbnQgb3IgMjA0OC4KKyAgICAtIHRhaC1kZXZpY2UgICAgICAgIDogMSBjZWxsLCBvcHRpb25hbC4gSWYgY29ubmVjdGVkIHRvIGEgVEFIIGVuZ2luZSBmb3IKKwkJCSAgb2ZmbG9hZCwgcGhhbmRsZSBvZiB0aGUgVEFIIGRldmljZSBub2RlLgorICAgIC0gdGFoLWNoYW5uZWwgICAgICAgOiAxIGNlbGwsIG9wdGlvbmFsLiBJZiBhcHByb3ByaWF0ZSwgY2hhbm5lbCB1c2VkIG9uIHRoZQorCQkJICBUQUggZW5naW5lLgorCisgICAgRXhhbXBsZToKKworCUVNQUMwOiBldGhlcm5ldEA0MDAwMDgwMCB7CisJCWRldmljZV90eXBlID0gIm5ldHdvcmsiOworCQljb21wYXRpYmxlID0gImlibSxlbWFjLTQ0MGdwIiwgImlibSxlbWFjIjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmVUlDMT47CisJCWludGVycnVwdHMgPSA8MWMgNCAxZCA0PjsKKwkJcmVnID0gPDQwMDAwODAwIDcwPjsKKwkJbG9jYWwtbWFjLWFkZHJlc3MgPSBbMDAgMDQgQUMgRTMgMUIgMUVdOworCQltYWwtZGV2aWNlID0gPCZNQUwwPjsKKwkJbWFsLXR4LWNoYW5uZWwgPSA8MCAxPjsKKwkJbWFsLXJ4LWNoYW5uZWwgPSA8MD47CisJCWNlbGwtaW5kZXggPSA8MD47CisJCW1heC1mcmFtZS1zaXplID0gPDVkYz47CisJCXJ4LWZpZm8tc2l6ZSA9IDwxMDAwPjsKKwkJdHgtZmlmby1zaXplID0gPDgwMD47CisJCXBoeS1tb2RlID0gInJtaWkiOworCQlwaHktbWFwID0gPDAwMDAwMDAxPjsKKwkJem1paS1kZXZpY2UgPSA8JlpNSUkwPjsKKwkJem1paS1jaGFubmVsID0gPDA+OworCX07CisKKyAgICAgIGlpKSBNY01BTCBub2RlCisKKyAgICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAgIC0gZGV2aWNlX3R5cGUgICAgICAgIDogImRtYS1jb250cm9sbGVyIgorICAgIC0gY29tcGF0aWJsZSAgICAgICAgIDogY29tcGF0aWJsZSBsaXN0LCBjb250YWluaW5nIDIgZW50cmllcywgZmlyc3QgaXMKKwkJCSAgICJpYm0sbWNtYWwtQ0hJUCIgd2hlcmUgQ0hJUCBpcyB0aGUgaG9zdCBBU0lDIChsaWtlCisJCQkgICBlbWFjKSBhbmQgdGhlIHNlY29uZCBpcyBlaXRoZXIgImlibSxtY21hbCIgb3IKKwkJCSAgICJpYm0sbWNtYWwyIi4KKwkJCSAgIEZvciBBeG9uLCAiaWJtLG1jbWFsLWF4b24iLCJpYm0sbWNtYWwyIgorICAgIC0gaW50ZXJydXB0cyAgICAgICAgIDogPGludGVycnVwdCBtYXBwaW5nIGZvciB0aGUgTUFMIGludGVycnVwdHMgc291cmNlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDUgc291cmNlczogdHhfZW9iLCByeF9lb2IsIHNlcnIsIHR4ZGUsIHJ4ZGU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIEF4b246IFRoaXMgaXMgX2RpZmZlcmVudF8gZnJvbSB0aGUgY3VycmVudAorCQkJICAgZmlybXdhcmUuICBXZSB1c2UgdGhlICJkZWxheWVkIiBpbnRlcnJ1cHRzIGZvciB0eGVvYgorCQkJICAgYW5kIHJ4ZW9iLiBUaHVzIHdlIGVuZCB1cCB3aXRoIG1hcHBpbmcgdGhvc2UgNSBNUElDCisJCQkgICBpbnRlcnJ1cHRzLCBhbGwgbGV2ZWwgcG9zaXRpdmUgc2Vuc2l0aXZlOiAxMCwgMTEsIDMyLAorCQkJICAgMzMsIDM0IChpbiBkZWNpbWFsKQorICAgIC0gZGNyLXJlZyAgICAgICAgICAgIDogPCBEQ1IgcmVnaXN0ZXJzIHJhbmdlID4KKyAgICAtIGRjci1wYXJlbnQgICAgICAgICA6IGlmIG5lZWRlZCBmb3IgZGNyLXJlZworICAgIC0gbnVtLXR4LWNoYW5zICAgICAgIDogMSBjZWxsLCBudW1iZXIgb2YgVHggY2hhbm5lbHMKKyAgICAtIG51bS1yeC1jaGFucyAgICAgICA6IDEgY2VsbCwgbnVtYmVyIG9mIFJ4IGNoYW5uZWxzCisKKyAgICAgIGlpaSkgWk1JSSBub2RlCisKKyAgICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAgIC0gY29tcGF0aWJsZSAgICAgICAgIDogY29tcGF0aWJsZSBsaXN0LCBjb250YWluaW5nIDIgZW50cmllcywgZmlyc3QgaXMKKwkJCSAgICJpYm0sem1paS1DSElQIiB3aGVyZSBDSElQIGlzIHRoZSBob3N0IEFTSUMgKGxpa2UKKwkJCSAgIEVNQUMpIGFuZCB0aGUgc2Vjb25kIGlzICJpYm0sem1paSIuCisJCQkgICBGb3IgQXhvbiwgdGhlcmUgaXMgbm8gWk1JSSBub2RlLgorICAgIC0gcmVnICAgICAgICAgICAgICAgIDogPHJlZ2lzdGVycyBtYXBwaW5nPgorCisgICAgICBpdikgUkdNSUkgbm9kZQorCisgICAgUmVxdWlyZWQgcHJvcGVydGllczoKKyAgICAtIGNvbXBhdGlibGUgICAgICAgICA6IGNvbXBhdGlibGUgbGlzdCwgY29udGFpbmluZyAyIGVudHJpZXMsIGZpcnN0IGlzCisJCQkgICAiaWJtLHJnbWlpLUNISVAiIHdoZXJlIENISVAgaXMgdGhlIGhvc3QgQVNJQyAobGlrZQorCQkJICAgRU1BQykgYW5kIHRoZSBzZWNvbmQgaXMgImlibSxyZ21paSIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgQXhvbiwgImlibSxyZ21paS1heG9uIiwiaWJtLHJnbWlpIgorICAgIC0gcmVnICAgICAgICAgICAgICAgIDogPHJlZ2lzdGVycyBtYXBwaW5nPgorICAgIC0gcmV2aXNpb24gICAgICAgICAgIDogYXMgcHJvdmlkZWQgYnkgdGhlIFJHTUlJIG5ldyB2ZXJzaW9uIHJlZ2lzdGVyIGlmCisJCQkgICBhdmFpbGFibGUuCisJCQkgICBGb3IgQXhvbjogMHgwMDAwMDEyYQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy80eHgvaHN0YS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy80eHgvaHN0YS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzczN2M4MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjLzR4eC9oc3RhLnR4dApAQCAtMCwwICsxLDE5IEBACisKK3BwYzQ3Nmd0ciBIaWdoIFNwZWVkIFNlcmlhbCBBc3Npc3QgKEhTVEEpIG5vZGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIDQ3Nmd0ciBTb0MgY29udGFpbnMgYSBoaWdoIHNwZWVkIHNlcmlhbCBhc3Npc3QgbW9kdWxlIGF0dGFjaGVkCitiZXR3ZWVuIHRoZSBwbGI0IGFuZCBwbGI2IHN5c3RlbSBidXNlcyB0byBwcm92aWRlIGhpZ2ggc3BlZWQgZGF0YQordHJhbnNmZXIgYmV0d2VlbiBtZW1vcnkgYW5kIHN5c3RlbSBwZXJpcGhlcmFscyBhcyB3ZWxsIGFzIHN1cHBvcnQgZm9yCitQQ0kgbWVzc2FnZSBzaWduYWxsZWQgaW50ZXJydXB0cy4KKworQ3VycmVudGx5IG9ubHkgdGhlIE1TSSBzdXBwb3J0IGlzIHVzZWQgYnkgTGludXggdXNpbmcgdGhlIGZvbGxvd2luZworZGV2aWNlIHRyZWUgZW50cmllczoKKworUmVxdWlyZSBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlCQk6ICJpYm0sNDc2Z3RyLWhzdGEtbXNpIiwgImlibSxoc3RhLW1zaSIKKy0gcmVnCQkJOiByZWdpc3RlciBtYXBwaW5nIGZvciB0aGUgSFNUQSBNU0kgc3BhY2UKKy0gaW50ZXJydXB0LXBhcmVudAk6IHBhcmVudCBjb250cm9sbGVyIGZvciBtYXBwaW5nIGludGVycnVwdHMKKy0gaW50ZXJydXB0cwkJOiBvcmRlcmVkIGludGVycnVwdCBtYXBwaW5nIGZvciBlYWNoIE1TSSBpbiB0aGUgcmVnaXN0ZXIKKwkJCSAgc3BhY2UuIFRoZSBmaXJzdCBpbnRlcnJ1cHQgc2hvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aCBhCisJCQkgIHJlZ2lzdGVyIG9mZnNldCBvZiAweDAwLCB0aGUgc2Vjb25kIHRvIDB4MTAsIGV0Yy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjLzR4eC9uZGZjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjLzR4eC9uZGZjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjlmMGI1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvNHh4L25kZmMudHh0CkBAIC0wLDAgKzEsMzkgQEAKK0FNQ0MgTkRGQyAoTmFuRCBGbGFzaCBDb250cm9sbGVyKQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogImlibSxuZGZjIi4KKy0gcmVnIDogc2hvdWxkIHNwZWNpZnkgY2hpcCBzZWxlY3QgYW5kIHNpemUgdXNlZCBmb3IgdGhlIGNoaXAgKDB4MjAwMCkuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNjciA6IE5ERkMgY29uZmlnIGFuZCBjb250cm9sIHJlZ2lzdGVyIHZhbHVlIChkZWZhdWx0IDApLgorLSBiYW5rLXNldHRpbmdzIDogTkRGQyBiYW5rIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgdmFsdWUgKGRlZmF1bHQgMCkuCisKK05vdGVzOgorLSBwYXJ0aXRpb24ocykgLSBmb2xsb3dzIHRoZSBPRiBNVEQgc3RhbmRhcmQgZm9yIHBhcnRpdGlvbnMKKworRXhhbXBsZToKKworbmRmY0AxLDAgeworCWNvbXBhdGlibGUgPSAiaWJtLG5kZmMiOworCXJlZyA9IDwweDAwMDAwMDAxIDB4MDAwMDAwMDAgMHgwMDAwMjAwMD47CisJY2NyID0gPDB4MDAwMDEwMDA+OworCWJhbmstc2V0dGluZ3MgPSA8MHg4MDAwMjIyMj47CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MT47CisKKwluYW5kIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCisJCXBhcnRpdGlvbkAwIHsKKwkJCWxhYmVsID0gImtlcm5lbCI7CisJCQlyZWcgPSA8MHgwMDAwMDAwMCAweDAwMjAwMDAwPjsKKwkJfTsKKwkJcGFydGl0aW9uQDIwMDAwMCB7CisJCQlsYWJlbCA9ICJyb290IjsKKwkJCXJlZyA9IDwweDAwMjAwMDAwIDB4MDNFMDAwMDA+OworCQl9OworCX07Cit9OworCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjLzR4eC9wcGM0NDBzcGUtYWRtYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy80eHgvcHBjNDQwc3BlLWFkbWEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNWViY2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy80eHgvcHBjNDQwc3BlLWFkbWEudHh0CkBAIC0wLDAgKzEsOTMgQEAKK1BQQzQ0MFNQZSBETUEvWE9SIChETUEgQ29udHJvbGxlciBhbmQgWE9SIEFjY2VsZXJhdG9yKQorCitEZXZpY2Ugbm9kZXMgbmVlZGVkIGZvciBvcGVyYXRpb24gb2YgdGhlIHBwYzQ0MHNwZS1hZG1hIGRyaXZlcgorYXJlIHNwZWNpZmllZCBoZXJlYnkuIFRoZXNlIGFyZSBJMk8vRE1BLCBETUEgYW5kIFhPUiBub2RlcworZm9yIERNQSBlbmdpbmVzIGFuZCBNZW1vcnkgUXVldWUgTW9kdWxlIG5vZGUuIFRoZSBsYXR0ZXIgaXMgdXNlZAorYnkgQURNQSBkcml2ZXIgZm9yIGNvbmZpZ3VyYXRpb24gb2YgUkFJRC02IEgvVyBjYXBhYmlsaXRpZXMgb2YKK3RoZSBQUEM0NDBTUGUuIEluIGFkZGl0aW9uIHRvIHRoZSBub2RlcyBhbmQgcHJvcGVydGllcyBkZXNjcmliZWQKK2JlbG93LCB0aGUgcmFuZ2VzIHByb3BlcnR5IG9mIFBMQiBub2RlIG11c3Qgc3BlY2lmeSByYW5nZXMgZm9yCitETUEgZGV2aWNlcy4KKworIGkpIFRoZSBJMk8gbm9kZQorCisgUmVxdWlyZWQgcHJvcGVydGllczoKKworIC0gY29tcGF0aWJsZQkJOiAiaWJtLGkyby00NDBzcGUiOworIC0gcmVnCQkJOiA8cmVnaXN0ZXJzIG1hcHBpbmc+CisgLSBkY3ItcmVnCQk6IDxEQ1IgcmVnaXN0ZXJzIHJhbmdlPgorCisgRXhhbXBsZToKKworCUkyTzogaTJvQDQwMDEwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiaWJtLGkyby00NDBzcGUiOworCQlyZWcgPSA8MHgwMDAwMDAwNCAweDAwMTAwMDAwIDB4MTAwPjsKKwkJZGNyLXJlZyA9IDwweDA2MCAweDAyMD47CisJfTsKKworCisgaWkpIFRoZSBETUEgbm9kZQorCisgUmVxdWlyZWQgcHJvcGVydGllczoKKworIC0gY29tcGF0aWJsZQkJOiAiaWJtLGRtYS00NDBzcGUiOworIC0gY2VsbC1pbmRleAkJOiAxIGNlbGwsIGhhcmR3YXJlIGluZGV4IG9mIHRoZSBETUEgZW5naW5lCisJCQkgICh0eXBpY2FsbHkgMHgwIGFuZCAweDEgZm9yIERNQTAgYW5kIERNQTEpCisgLSByZWcJCQk6IDxyZWdpc3RlcnMgbWFwcGluZz4KKyAtIGRjci1yZWcJCTogPERDUiByZWdpc3RlcnMgcmFuZ2U+CisgLSBpbnRlcnJ1cHRzCQk6IDxpbnRlcnJ1cHQgbWFwcGluZyBmb3IgRE1BMC8xIGludGVycnVwdHMgc291cmNlczoKKwkJCSAgIDIgc291cmNlczogRE1BeCBDUyBGSUZPIE5lZWRzIFNlcnZpY2UgSVJRIChvbiBVSUMwKQorCQkJICAgYW5kIERNQSBFcnJvciBJUlEgKG9uIFVJQzEpLiBUaGUgbGF0dGVyIGlzIGNvbW1vbgorCQkJICAgZm9yIGJvdGggRE1BIGVuZ2luZXM+LgorIC0gaW50ZXJydXB0LXBhcmVudAk6IG5lZWRlZCBmb3IgaW50ZXJydXB0IG1hcHBpbmcKKworIEV4YW1wbGU6CisKKwlETUEwOiBkbWEwQDQwMDEwMDEwMCB7CisJCWNvbXBhdGlibGUgPSAiaWJtLGRtYS00NDBzcGUiOworCQljZWxsLWluZGV4ID0gPDA+OworCQlyZWcgPSA8MHgwMDAwMDAwNCAweDAwMTAwMTAwIDB4MTAwPjsKKwkJZGNyLXJlZyA9IDwweDA2MCAweDAyMD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JkRNQTA+OworCQlpbnRlcnJ1cHRzID0gPDAgMT47CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJCSNhZGRyZXNzLWNlbGxzID0gPDA+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJaW50ZXJydXB0LW1hcCA9IDwKKwkJCTAgJlVJQzAgMHgxNCA0CisJCQkxICZVSUMxIDB4MTYgND47CisJfTsKKworCisgaWlpKSBYT1IgQWNjZWxlcmF0b3Igbm9kZQorCisgUmVxdWlyZWQgcHJvcGVydGllczoKKworIC0gY29tcGF0aWJsZQkJOiAiYW1jYyx4b3ItYWNjZWxlcmF0b3IiOworIC0gcmVnCQkJOiA8cmVnaXN0ZXJzIG1hcHBpbmc+CisgLSBpbnRlcnJ1cHRzCQk6IDxpbnRlcnJ1cHQgbWFwcGluZyBmb3IgWE9SIGludGVycnVwdCBzb3VyY2U+CisgLSBpbnRlcnJ1cHQtcGFyZW50CTogZm9yIGludGVycnVwdCBtYXBwaW5nCisKKyBFeGFtcGxlOgorCisJeG9yLWFjY2VsQDQwMDIwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiYW1jYyx4b3ItYWNjZWxlcmF0b3IiOworCQlyZWcgPSA8MHgwMDAwMDAwNCAweDAwMjAwMDAwIDB4NDAwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmVUlDMT47CisJCWludGVycnVwdHMgPSA8MHgxZiA0PjsKKwl9OworCisKKyBpdikgTWVtb3J5IFF1ZXVlIE1vZHVsZSBub2RlCisKKyBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgLSBjb21wYXRpYmxlCQk6ICJpYm0sbXEtNDQwc3BlIjsKKyAtIGRjci1yZWcJCTogPERDUiByZWdpc3RlcnMgcmFuZ2U+CisKKyBFeGFtcGxlOgorCisJTVEwOiBtcSB7CisJCWNvbXBhdGlibGUgPSAiaWJtLG1xLTQ0MHNwZSI7CisJCWRjci1yZWcgPSA8MHgwNDAgMHgwMjA+OworCX07CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjLzR4eC9yZWJvb3QudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvNHh4L3JlYm9vdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJjNjM1NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjLzR4eC9yZWJvb3QudHh0CkBAIC0wLDAgKzEsMTggQEAKK1JlYm9vdCBwcm9wZXJ0eSB0byBjb250cm9sIHN5c3RlbSByZWJvb3Qgb24gUFBDNHh4IHN5c3RlbXM6CisKK0J5IHNldHRpbmcgInJlc2V0X3R5cGUiIHRvIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlcywgdGhlIGRlZmF1bHQKK3NvZnR3YXJlIHJlc2V0IG1lY2hhbmlzbSBtYXkgYmUgb3ZlcnJpZGRlbi4gSGVyZSB0aGUgcG9zc2libGUgdmFsdWVzIG9mCisicmVzZXRfdHlwZSI6CisKKyAgICAgIDEgLSBQUEM0eHggY29yZSByZXNldAorICAgICAgMiAtIFBQQzR4eCBjaGlwIHJlc2V0CisgICAgICAzIC0gUFBDNHh4IHN5c3RlbSByZXNldCAoZGVmYXVsdCkKKworRXhhbXBsZToKKworCQljcHVAMCB7CisJCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworCQkJbW9kZWwgPSAiUG93ZXJQQyw0NDBTUGUiOworCQkJLi4uCisJCQlyZXNldC10eXBlID0gPDI+OwkvKiBVc2UgY2hpcC1yZXNldCAqLworCQl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2NhY2hlX3NyYW0udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2NhY2hlX3NyYW0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MTk1NWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvY2FjaGVfc3JhbS50eHQKQEAgLTAsMCArMSwyMCBAQAorKiBGcmVlc2NhbGUgUFEzIGFuZCBRb3JJUSBiYXNlZCBDYWNoZSBTUkFNCisKK0ZyZWVzY2FsZSdzIG1wYzg1eHggYW5kIHNvbWUgUW9ySVEgcGxhdGZvcm1zIHByb3ZpZGUgYW4KK29wdGlvbiBvZiBjb25maWd1cmluZyBhIHBhcnQgb2YgKG9yIGZ1bGwpIGNhY2hlIG1lbW9yeQorYXMgU1JBTS4gVGhpcyBjYWNoZSBTUkFNIHJlcHJlc2VudGF0aW9uIGluIHRoZSBkZXZpY2UKK3RyZWUgc2hvdWxkIGJlIGRvbmUgYXMgdW5kZXI6LQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImZzbCxwMjAyMC1jYWNoZS1zcmFtIgorLSBmc2wsY2FjaGUtc3JhbS1jdGxyLWhhbmRsZSA6IHBvaW50cyB0byB0aGUgTDIgY29udHJvbGxlcgorLSByZWcgOiBvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgY2FjaGUtc3JhbS4KKworRXhhbXBsZToKKworY2FjaGUtc3JhbUBmZmYwMDAwMCB7CisJZnNsLGNhY2hlLXNyYW0tY3Rsci1oYW5kbGUgPSA8JkwyPjsKKwlyZWcgPSA8MCAweGZmZjAwMDAwIDAgMHgxMDAwMD47CisJY29tcGF0aWJsZSA9ICJmc2wscDIwMjAtY2FjaGUtc3JhbSI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2NjZi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvY2NmLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTRkYTdlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2NjZi50eHQKQEAgLTAsMCArMSw0NiBAQAorRnJlZXNjYWxlIENvcmVOZXQgQ29oZXJlbmN5IEZhYnJpYyhDQ0YpIERldmljZSBUcmVlIEJpbmRpbmcKKworREVTQ1JJUFRJT04KKworVGhlIENvcmVOZXQgY29oZXJlbmN5IGZhYnJpYyBpcyBhIGZhYnJpYy1vcmllbnRlZCwgY29ubmVjdGl2aXR5IGluZnJhc3RydWN0dXJlCit0aGF0IGVuYWJsZXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIGNvaGVyZW50LCBtdWx0aWNvcmUgc3lzdGVtcy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiA8c3RyaW5nIGxpc3Q+CisJCWZzbCxjb3JlbmV0MS1jZiAtIENvcmVOZXQgY29oZXJlbmN5IGZhYnJpYyB2ZXJzaW9uIDEuCisJCUV4YW1wbGUgY2hpcHM6IFQ0MjQwLCBCNDg2MAorCisJCWZzbCxjb3JlbmV0Mi1jZiAtIENvcmVOZXQgY29oZXJlbmN5IGZhYnJpYyB2ZXJzaW9uIDIuCisJCUV4YW1wbGUgY2hpcHM6IFA1MDQwLCBQNTAyMCwgUDQwODAsIFAzMDQxLCBQMjA0MQorCisJCWZzbCxjb3JlbmV0LWNmIC0gVXNlZCB0byByZXByZXNlbnQgdGhlIGNvbW1vbiByZWdpc3RlcnMKKwkJYmV0d2VlbiBDQ0YgdmVyc2lvbiAxIGFuZCBDQ0YgdmVyc2lvbiAyLiAgVGhpcyBjb21wYXRpYmxlCisJCWlzIHJldGFpbmVkIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIGFzIGl0IHdhcyBhbHJlYWR5CisJCXVzZWQgZm9yIGJvdGggQ0NGIHZlcnNpb24gMSBjaGlwcyBhbmQgQ0NGIHZlcnNpb24gMgorCQljaGlwcy4gIEl0IHNob3VsZCBiZSBzcGVjaWZpZWQgYWZ0ZXIgZWl0aGVyCisJCSJmc2wsY29yZW5ldDEtY2YiIG9yICJmc2wsY29yZW5ldDItY2YiLgorCistIHJlZzogPHByb3AtZW5jb2RlZC1hcnJheT4KKwkJQSBzdGFuZGFyZCBwcm9wZXJ0eS4gUmVwcmVzZW50cyB0aGUgQ0NGIHJlZ2lzdGVycy4KKworLSBpbnRlcnJ1cHRzOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCQlJbnRlcnJ1cHQgbWFwcGluZyBmb3IgQ0NGIGVycm9yIGludGVycnVwdC4KKworLSBmc2wsY2NmLW51bS1jc2RpZHM6IDx1MzI+CisJCVNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIENvaGVyZW5jeSBTdWJkb21haW4gSUQgUG9ydCBNYXBwaW5nCisJCVJlZ2lzdGVycyB0aGF0IGFyZSBzdXBwb3J0ZWQgYnkgdGhlIENDRi4KKworLSBmc2wsY2NmLW51bS1zbm9vcGlkczogPHUzMj4KKwkJU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgU25vb3AgSUQgUG9ydCBNYXBwaW5nIFJlZ2lzdGVycyB0aGF0CisJCWFyZSBzdXBwb3J0ZWQgYnkgQ0NGLgorCitFeGFtcGxlOgorCisJY29yZW5ldC1jZkAxODAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGNvcmVuZXQyLWNmIiwgImZzbCxjb3JlbmV0LWNmIjsKKwkJcmVnID0gPDB4MTgwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwxNiAyIDEgMzE+OworCQlmc2wsY2NmLW51bS1jc2RpZHMgPSA8MzI+OworCQlmc2wsY2NmLW51bS1zbm9vcGlkcyA9IDwzMj47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9jcG1fcWUvY3BtLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9jcG1fcWUvY3BtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjBjNzUyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2NwbV9xZS9jcG0udHh0CkBAIC0wLDAgKzEsNjcgQEAKKyogRnJlZXNjYWxlIENvbW11bmljYXRpb25zIFByb2Nlc3NvciBNb2R1bGUKKworTk9URTogVGhpcyBpcyBhbiBpbnRlcmltIGJpbmRpbmcsIGFuZCB3aWxsIGxpa2VseSBjaGFuZ2Ugc2xpZ2h0bHksCithcyBtb3JlIGRldmljZXMgYXJlIHN1cHBvcnRlZC4gIFRoZSBRRSBiaW5kaW5ncyBlc3BlY2lhbGx5IGFyZQoraW5jb21wbGV0ZS4KKworKiBSb290IENQTSBub2RlCisKK1Byb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAiZnNsLGNwbTEiLCAiZnNsLGNwbTIiLCBvciAiZnNsLHFlIi4KKy0gcmVnIDogQSA0OC1ieXRlIHJlZ2lvbiBiZWdpbm5pbmcgd2l0aCBDUENSLgorCitFeGFtcGxlOgorICAgICBjcG1AMTE5YzAgeworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDE+OworCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJY29tcGF0aWJsZSA9ICJmc2wsbXBjODI3Mi1jcG0iLCAiZnNsLGNwbTIiOworCXJlZyA9IDwxMTljMCAzMD47CisgICAgIH0KKworKiBQcm9wZXJ0aWVzIGNvbW1vbiB0byBtdWx0aXBsZSBDUE0vUUUgZGV2aWNlcworCistIGZzbCxjcG0tY29tbWFuZCA6IFRoaXMgdmFsdWUgaXMgT1JlZCB3aXRoIHRoZSBvcGNvZGUgYW5kIGNvbW1hbmQgZmxhZworICAgICAgICAgICAgICAgICAgICB0byBzcGVjaWZ5IHRoZSBkZXZpY2Ugb24gd2hpY2ggYSBDUE0gY29tbWFuZCBvcGVyYXRlcy4KKworLSBmc2wsY3BtLWJyZyA6IEluZGljYXRlcyB3aGljaCBiYXVkIHJhdGUgZ2VuZXJhdG9yIHRoZSBkZXZpY2UKKyAgICAgICAgICAgICAgICBpcyBhc3NvY2lhdGVkIHdpdGguICBJZiBhYnNlbnQsIGFuIHVudXNlZCBCUkcKKyAgICAgICAgICAgICAgICBzaG91bGQgYmUgZHluYW1pY2FsbHkgYWxsb2NhdGVkLiAgSWYgemVybywgdGhlCisgICAgICAgICAgICAgICAgZGV2aWNlIHVzZXMgYW4gZXh0ZXJuYWwgY2xvY2sgcmF0aGVyIHRoYW4gYSBCUkcuCisKKy0gcmVnIDogVW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQsIHRoZSBmaXJzdCByZXNvdXJjZSByZXByZXNlbnRzIHRoZQorICAgICAgICBzY2MvZmNjL3VjYyByZWdpc3RlcnMsIGFuZCB0aGUgc2Vjb25kIHJlcHJlc2VudHMgdGhlIGRldmljZSdzCisgICAgICAgIHBhcmFtZXRlciBSQU0gcmVnaW9uIChpZiBpdCBoYXMgb25lKS4KKworKiBNdWx0aS1Vc2VyIFJBTSAoTVVSQU0pCisKK1RoZSBtdWx0aS11c2VyL2R1YWwtcG9ydGVkIFJBTSBpcyBleHByZXNzZWQgYXMgYSBidXMgdW5kZXIgdGhlIENQTSBub2RlLgorCitSYW5nZXMgbXVzdCBiZSBzZXQgdXAgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKKworLSBDaGlsZHJlbidzIHJlZyBub2RlcyBtdXN0IGJlIG9mZnNldHMgZnJvbSB0aGUgc3RhcnQgb2YgYWxsIG11cmFtLCBldmVuCisgIGlmIHRoZSB1c2VyLWRhdGEgYXJlYSBkb2VzIG5vdCBiZWdpbiBhdCB6ZXJvLgorLSBJZiBtdWx0aXBsZSByYW5nZSBlbnRyaWVzIGFyZSB1c2VkLCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBwYXJlbnQKKyAgYWRkcmVzcyBhbmQgdGhlIGNoaWxkIGFkZHJlc3MgbXVzdCBiZSB0aGUgc2FtZSBpbiBhbGwsIHNvIHRoYXQgYSBzaW5nbGUKKyAgbWFwcGluZyBjYW4gY292ZXIgdGhlbSBhbGwgd2hpbGUgbWFpbnRhaW5pbmcgdGhlIGFiaWxpdHkgdG8gZGV0ZXJtaW5lCisgIENQTS1zaWRlIG9mZnNldHMgd2l0aCBwb2ludGVyIHN1YnRyYWN0aW9uLiAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdAorICBtdWx0aXBsZSByYW5nZSBlbnRyaWVzIG5vdCBiZSB1c2VkLgorLSBBIGNoaWxkIGFkZHJlc3Mgb2YgemVybyBtdXN0IGJlIHRyYW5zbGF0YWJsZSwgZXZlbiBpZiBubyByZWcgcmVzb3VyY2VzCisgIGNvbnRhaW4gaXQuCisKK0EgY2hpbGQgImRhdGEiIG5vZGUgbXVzdCBleGlzdCwgY29tcGF0aWJsZSB3aXRoICJmc2wsY3BtLW11cmFtLWRhdGEiLCB0bworaW5kaWNhdGUgdGhlIHBvcnRpb24gb2YgbXVyYW0gdGhhdCBpcyB1c2FibGUgYnkgdGhlIE9TIGZvciBhcmJpdHJhcnkKK3B1cnBvc2VzLiAgVGhlIGRhdGEgbm9kZSBtYXkgaGF2ZSBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHJlZyByZXNvdXJjZXMsCithbGwgb2Ygd2hpY2ggY29udHJpYnV0ZSB0byB0aGUgYWxsb2NhdGFibGUgbXVyYW0gcG9vbC4KKworRXhhbXBsZSwgYmFzZWQgb24gbXBjODI3MjoKKwltdXJhbUAwIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQlyYW5nZXMgPSA8MCAwIDEwMDAwPjsKKworCQlkYXRhQDAgeworCQkJY29tcGF0aWJsZSA9ICJmc2wsY3BtLW11cmFtLWRhdGEiOworCQkJcmVnID0gPDAgMjAwMCA5ODAwIDgwMD47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9jcG1fcWUvY3BtL2JyZy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvY3BtX3FlL2NwbS9icmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjN2Q0NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvY3BtX3FlL2NwbS9icmcudHh0CkBAIC0wLDAgKzEsMjEgQEAKKyogQmF1ZCBSYXRlIEdlbmVyYXRvcnMKKworQ3VycmVudGx5IGRlZmluZWQgY29tcGF0aWJsZXM6Citmc2wsY3BtLWJyZworZnNsLGNwbTEtYnJnCitmc2wsY3BtMi1icmcKKworUHJvcGVydGllczoKKy0gcmVnIDogVGhlcmUgbWF5IGJlIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgcmVnIHJlc291cmNlczsgQlJHCisgIG51bWJlcnMgYXJlIGFzc2lnbmVkIHRvIHRoZXNlIGluIG9yZGVyLgorLSBjbG9jay1mcmVxdWVuY3kgOiBTcGVjaWZpZXMgdGhlIGJhc2UgZnJlcXVlbmN5IGRyaXZpbmcKKyAgdGhlIEJSRy4KKworRXhhbXBsZToKKwlicmdAMTE5ZjAgeworCQljb21wYXRpYmxlID0gImZzbCxtcGM4MjcyLWJyZyIsCisJCQkgICAgICJmc2wsY3BtMi1icmciLAorCQkJICAgICAiZnNsLGNwbS1icmciOworCQlyZWcgPSA8MTE5ZjAgMTAgMTE1ZjAgMTA+OworCQljbG9jay1mcmVxdWVuY3kgPSA8ZCMyNTAwMDAwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9jcG1fcWUvY3BtL2kyYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvY3BtX3FlL2NwbS9pMmMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3YmM2MDQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvY3BtX3FlL2NwbS9pMmMudHh0CkBAIC0wLDAgKzEsNDEgQEAKKyogSTJDCisKK1RoZSBJMkMgY29udHJvbGxlciBpcyBleHByZXNzZWQgYXMgYSBidXMgdW5kZXIgdGhlIENQTSBub2RlLgorCitQcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogImZzbCxjcG0xLWkyYyIsICJmc2wsY3BtMi1pMmMiCistIHJlZyA6IE9uIENQTTIgZGV2aWNlcywgdGhlIHNlY29uZCByZXNvdXJjZSBkb2Vzbid0IHNwZWNpZnkgdGhlIEkyQworICBQYXJhbWV0ZXIgUkFNIGl0c2VsZiwgYnV0IHRoZSBJMkNfQkFTRSBmaWVsZCBvZiB0aGUgQ1BNMiBQYXJhbWV0ZXIgUkFNCisgICh0eXBpY2FsbHkgMHg4YWZjIDB4MikuCistICNhZGRyZXNzLWNlbGxzIDogU2hvdWxkIGJlIG9uZS4gVGhlIGNlbGwgaXMgdGhlIGkyYyBkZXZpY2UgYWRkcmVzcyB3aXRoCisgIHRoZSByL3cgYml0IHNldCB0byB6ZXJvLgorLSAjc2l6ZS1jZWxscyA6IFNob3VsZCBiZSB6ZXJvLgorLSBjbG9jay1mcmVxdWVuY3kgOiBDYW4gYmUgdXNlZCB0byBzZXQgdGhlIGkyYyBjbG9jayBmcmVxdWVuY3kuIElmCisgIHVuc3BlY2lmaWVkLCBhIGRlZmF1bHQgZnJlcXVlbmN5IG9mIDYwa0h6IGlzIGJlaW5nIHVzZWQuCitUaGUgZm9sbG93aW5nIHR3byBwcm9wZXJ0aWVzIGFyZSBkZXByZWNhdGVkLiBUaGV5IGFyZSBvbmx5IHVzZWQgYnkgbGVnYWN5CitpMmMgZHJpdmVycyB0byBmaW5kIHRoZSBidXMgdG8gcHJvYmU6CistIGxpbnV4LGkyYy1pbmRleCA6IENhbiBiZSB1c2VkIHRvIGhhcmQgY29kZSBhbiBpMmMgYnVzIG51bWJlci4gQnkgZGVmYXVsdCwKKyAgdGhlIGJ1cyBudW1iZXIgaXMgZHluYW1pY2FsbHkgYXNzaWduZWQgYnkgdGhlIGkyYyBjb3JlLgorLSBsaW51eCxpMmMtY2xhc3MgOiBDYW4gYmUgdXNlZCB0byBvdmVycmlkZSB0aGUgaTJjIGNsYXNzLiBUaGUgY2xhc3MgaXMgdXNlZAorICBieSBsZWdhY3kgaTJjIGRldmljZSBkcml2ZXJzIHRvIGZpbmQgYSBidXMgaW4gYSBzcGVjaWZpYyBjb250ZXh0IGxpa2UKKyAgc3lzdGVtIG1hbmFnZW1lbnQsIHZpZGVvIG9yIHNvdW5kLiBCeSBkZWZhdWx0LCBJMkNfQ0xBU1NfSFdNT04gKDEpIGlzCisgIGJlaW5nIHVzZWQuIFRoZSBkZWZpbml0aW9uIG9mIHRoZSBjbGFzc2VzIGNhbiBiZSBmb3VuZCBpbgorICBpbmNsdWRlL2kyYy9pMmMuaAorCitFeGFtcGxlLCBiYXNlZCBvbiBtcGM4MjM6CisKKwlpMmNAODYwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsbXBjODIzLWkyYyIsCisJCQkgICAgICJmc2wsY3BtMS1pMmMiOworCQlyZWcgPSA8MHg4NjAgMHgyMCAweDNjODAgMHgzMD47CisJCWludGVycnVwdHMgPSA8MTY+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZDUE1fUElDPjsKKwkJZnNsLGNwbS1jb21tYW5kID0gPDB4MTA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJcnRjQDY4IHsKKwkJCWNvbXBhdGlibGUgPSAiZGFsbGFzLGRzMTMwNyI7CisJCQlyZWcgPSA8MHg2OD47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9jcG1fcWUvY3BtL3BpYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvY3BtX3FlL2NwbS9waWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlM2VlMTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvY3BtX3FlL2NwbS9waWMudHh0CkBAIC0wLDAgKzEsMTggQEAKKyogSW50ZXJydXB0IENvbnRyb2xsZXJzCisKK0N1cnJlbnRseSBkZWZpbmVkIGNvbXBhdGlibGVzOgorLSBmc2wsY3BtMS1waWMKKyAgLSBvbmx5IG9uZSBpbnRlcnJ1cHQgY2VsbAorLSBmc2wscHExLXBpYworLSBmc2wsY3BtMi1waWMKKyAgLSBzZWNvbmQgaW50ZXJydXB0IGNlbGwgaXMgbGV2ZWwvc2Vuc2U6CisgICAgLSAyIGlzIGZhbGxpbmcgZWRnZQorICAgIC0gOCBpcyBhY3RpdmUgbG93CisKK0V4YW1wbGU6CisJaW50ZXJydXB0LWNvbnRyb2xsZXJAMTBjMDAgeworCQkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCQlpbnRlcnJ1cHQtY29udHJvbGxlcjsKKwkJcmVnID0gPDEwYzAwIDgwPjsKKwkJY29tcGF0aWJsZSA9ICJtcGM4MjcyLXBpYyIsICJmc2wsY3BtMi1waWMiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvY3BtX3FlL2NwbS91c2IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2NwbV9xZS9jcG0vdXNiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGJmZGE0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2NwbV9xZS9jcG0vdXNiLnR4dApAQCAtMCwwICsxLDE1IEBACisqIFVTQiAoVW5pdmVyc2FsIFNlcmlhbCBCdXMgQ29udHJvbGxlcikKKworUHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJmc2wsY3BtMS11c2IiLCAiZnNsLGNwbTItdXNiIiwgImZzbCxxZS11c2IiCisKK0V4YW1wbGU6CisJdXNiQDExYmMwIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQljb21wYXRpYmxlID0gImZzbCxjcG0yLXVzYiI7CisJCXJlZyA9IDwxMWI2MCAxOCA4YjAwIDEwMD47CisJCWludGVycnVwdHMgPSA8YiA4PjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmUElDPjsKKwkJZnNsLGNwbS1jb21tYW5kID0gPDJlNjAwMDAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2NwbV9xZS9ncGlvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9jcG1fcWUvZ3Bpby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ5Zjc5ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9jcG1fcWUvZ3Bpby50eHQKQEAgLTAsMCArMSwzOCBAQAorRXZlcnkgR1BJTyBjb250cm9sbGVyIG5vZGUgbXVzdCBoYXZlICNncGlvLWNlbGxzIHByb3BlcnR5IGRlZmluZWQsCit0aGlzIGluZm9ybWF0aW9uIHdpbGwgYmUgdXNlZCB0byB0cmFuc2xhdGUgZ3Bpby1zcGVjaWZpZXJzLgorCitPbiBDUE0xIGRldmljZXMsIGFsbCBwb3J0cyBhcmUgdXNpbmcgc2xpZ2h0bHkgZGlmZmVyZW50IHJlZ2lzdGVyIGxheW91dHMuCitQb3J0cyBBLCBDIGFuZCBEIGFyZSAxNmJpdCBwb3J0cyBhbmQgUG9ydHMgQiBhbmQgRSBhcmUgMzJiaXQgcG9ydHMuCisKK09uIENQTTIgZGV2aWNlcywgYWxsIHBvcnRzIGFyZSAzMmJpdCBwb3J0cyBhbmQgdXNlIGEgY29tbW9uIHJlZ2lzdGVyIGxheW91dC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJmc2wsY3BtMS1wYXJpby1iYW5rLWEiLCAiZnNsLGNwbTEtcGFyaW8tYmFuay1iIiwKKyAgImZzbCxjcG0xLXBhcmlvLWJhbmstYyIsICJmc2wsY3BtMS1wYXJpby1iYW5rLWQiLAorICAiZnNsLGNwbTEtcGFyaW8tYmFuay1lIiwgImZzbCxjcG0yLXBhcmlvLWJhbmsiCistICNncGlvLWNlbGxzIDogU2hvdWxkIGJlIHR3by4gVGhlIGZpcnN0IGNlbGwgaXMgdGhlIHBpbiBudW1iZXIgYW5kIHRoZQorICBzZWNvbmQgY2VsbCBpcyB1c2VkIHRvIHNwZWNpZnkgb3B0aW9uYWwgcGFyYW1ldGVycyAoY3VycmVudGx5IHVudXNlZCkuCistIGdwaW8tY29udHJvbGxlciA6IE1hcmtzIHRoZSBwb3J0IGFzIEdQSU8gY29udHJvbGxlci4KKworRXhhbXBsZSBvZiB0aHJlZSBTT0MgR1BJTyBiYW5rcyBkZWZpbmVkIGFzIGdwaW8tY29udHJvbGxlciBub2RlczoKKworCUNQTTFfUElPX0E6IGdwaW8tY29udHJvbGxlckA5NTAgeworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJY29tcGF0aWJsZSA9ICJmc2wsY3BtMS1wYXJpby1iYW5rLWEiOworCQlyZWcgPSA8MHg5NTAgMHgxMD47CisJCWdwaW8tY29udHJvbGxlcjsKKwl9OworCisJQ1BNMV9QSU9fQjogZ3Bpby1jb250cm9sbGVyQGFiOCB7CisJCSNncGlvLWNlbGxzID0gPDI+OworCQljb21wYXRpYmxlID0gImZzbCxjcG0xLXBhcmlvLWJhbmstYiI7CisJCXJlZyA9IDwweGFiOCAweDEwPjsKKwkJZ3Bpby1jb250cm9sbGVyOworCX07CisKKwlDUE0xX1BJT19FOiBncGlvLWNvbnRyb2xsZXJAYWM4IHsKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCWNvbXBhdGlibGUgPSAiZnNsLGNwbTEtcGFyaW8tYmFuay1lIjsKKwkJcmVnID0gPDB4YWM4IDB4MTg+OworCQlncGlvLWNvbnRyb2xsZXI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9jcG1fcWUvbmV0d29yay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvY3BtX3FlL25ldHdvcmsudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5YjI4YjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvY3BtX3FlL25ldHdvcmsudHh0CkBAIC0wLDAgKzEsNDMgQEAKKyogTmV0d29yaworCitDdXJyZW50bHkgZGVmaW5lZCBjb21wYXRpYmxlczoKKy0gZnNsLGNwbTEtc2NjLWVuZXQKKy0gZnNsLGNwbTItc2NjLWVuZXQKKy0gZnNsLGNwbTEtZmVjLWVuZXQKKy0gZnNsLGNwbTItZmNjLWVuZXQgKHRoaXJkIHJlc291cmNlIGlzIEdGRU1SKQorLSBmc2wscWUtZW5ldAorCitFeGFtcGxlOgorCisJZXRoZXJuZXRAMTEzMDAgeworCQljb21wYXRpYmxlID0gImZzbCxtcGM4MjcyLWZjYy1lbmV0IiwKKwkJCSAgICAgImZzbCxjcG0yLWZjYy1lbmV0IjsKKwkJcmVnID0gPDExMzAwIDIwIDg0MDAgMTAwIDExMzkwIDE+OworCQlsb2NhbC1tYWMtYWRkcmVzcyA9IFsgMDAgMDAgMDAgMDAgMDAgMDAgXTsKKwkJaW50ZXJydXB0cyA9IDwyMCA4PjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmUElDPjsKKwkJcGh5LWhhbmRsZSA9IDwmUEhZMD47CisJCWZzbCxjcG0tY29tbWFuZCA9IDwxMjAwMDMwMD47CisJfTsKKworKiBNRElPCisKK0N1cnJlbnRseSBkZWZpbmVkIGNvbXBhdGlibGVzOgorZnNsLHBxMS1mZWMtbWRpbyAocmVnIGlzIHNhbWUgYXMgZmlyc3QgcmVzb3VyY2Ugb2YgRkVDIGRldmljZSkKK2ZzbCxjcG0yLW1kaW8tYml0YmFuZyAocmVnIGlzIHBvcnQgQyByZWdpc3RlcnMpCisKK1Byb3BlcnRpZXMgZm9yIGZzbCxjcG0yLW1kaW8tYml0YmFuZzoKK2ZzbCxtZGlvLXBpbiA6IHBpbiBvZiBwb3J0IEMgY29udHJvbGxpbmcgbWRpbyBkYXRhCitmc2wsbWRjLXBpbiA6IHBpbiBvZiBwb3J0IEMgY29udHJvbGxpbmcgbWRpbyBjbG9jaworCitFeGFtcGxlOgorCW1kaW9AMTBkNDAgeworCQljb21wYXRpYmxlID0gImZzbCxtcGM4MjcyYWRzLW1kaW8tYml0YmFuZyIsCisJCQkgICAgICJmc2wsbXBjODI3Mi1tZGlvLWJpdGJhbmciLAorCQkJICAgICAiZnNsLGNwbTItbWRpby1iaXRiYW5nIjsKKwkJcmVnID0gPDEwZDQwIDE0PjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQlmc2wsbWRpby1waW4gPSA8MTI+OworCQlmc2wsbWRjLXBpbiA9IDwxMz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9jcG1fcWUvcWUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2NwbV9xZS9xZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY4OTMwMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9jcG1fcWUvcWUudHh0CkBAIC0wLDAgKzEsMTE1IEBACisqIEZyZWVzY2FsZSBRVUlDQyBFbmdpbmUgbW9kdWxlIChRRSkKK1RoaXMgcmVwcmVzZW50cyBxZSBtb2R1bGUgdGhhdCBpcyBpbnN0YWxsZWQgb24gUG93ZXJRVUlDQyBJSSBQcm8uCisKK05PVEU6ICBUaGlzIGlzIGFuIGludGVyaW0gYmluZGluZzsgaXQgc2hvdWxkIGJlIHVwZGF0ZWQgdG8gZml0CitpbiB3aXRoIHRoZSBDUE0gYmluZGluZyBsYXRlciBpbiB0aGlzIGRvY3VtZW50LgorCitCYXNpY2FsbHksIGl0IGlzIGEgYnVzIG9mIGRldmljZXMsIHRoYXQgY291bGQgYWN0IG1vcmUgb3IgbGVzcworYXMgYSBjb21wbGV0ZSBlbnRpdHkgKFVDQywgVVNCIGV0YyApLiBBbGwgb2YgdGhlbSBzaG91bGQgYmUgc2libGluZ3Mgb24KK3RoZSAicm9vdCIgcWUgbm9kZSwgdXNpbmcgdGhlIGNvbW1vbiBwcm9wZXJ0aWVzIGZyb20gdGhlcmUuCitUaGUgZGVzY3JpcHRpb24gYmVsb3cgYXBwbGllcyB0byB0aGUgcWUgb2YgTVBDODM2MCBhbmQKK21vcmUgbm9kZXMgYW5kIHByb3BlcnRpZXMgd291bGQgYmUgZXh0ZW5kZWQgaW4gdGhlIGZ1dHVyZS4KKworaSkgUm9vdCBRRSBkZXZpY2UKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiZnNsLHFlIjsKKy0gbW9kZWwgOiBwcmVjaXNlIG1vZGVsIG9mIHRoZSBRRSwgQ2FuIGJlICJRRSIsICJDUE0iLCBvciAiQ1BNMiIKKy0gcmVnIDogb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIGRldmljZSByZWdpc3RlcnMuCistIGJ1cy1mcmVxdWVuY3kgOiB0aGUgY2xvY2sgZnJlcXVlbmN5IGZvciBRVUlDQyBFbmdpbmUuCistIGZzbCxxZS1udW0tcmlzY3M6IGRlZmluZSBob3cgbWFueSBSSVNDIGVuZ2luZXMgdGhlIFFFIGhhcy4KKy0gZnNsLHFlLW51bS1zbnVtczogZGVmaW5lIGhvdyBtYW55IHNlcmlhbCBudW1iZXIoU05VTSkgdGhlIFFFIGNhbiB1c2UgZm9yIHRoZQorICB0aHJlYWRzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBmc2wsZmlybXdhcmUtcGhhbmRsZToKKyAgICBVc2FnZTogcmVxdWlyZWQgb25seSBpZiB0aGVyZSBpcyBubyBmc2wscWUtZmlybXdhcmUgY2hpbGQgbm9kZQorICAgIFZhbHVlIHR5cGU6IDxwaGFuZGxlPgorICAgIERlZmluaXRpb246IFBvaW50cyB0byBhIGZpcm13YXJlIG5vZGUgKHNlZSAiUUUgRmlybXdhcmUgTm9kZSIgYmVsb3cpCisgICAgICAgIHRoYXQgY29udGFpbnMgdGhlIGZpcm13YXJlIHRoYXQgc2hvdWxkIGJlIHVwbG9hZGVkIGZvciB0aGlzIFFFLgorICAgICAgICBUaGUgY29tcGF0aWJsZSBwcm9wZXJ0eSBmb3IgdGhlIGZpcm13YXJlIG5vZGUgc2hvdWxkIHNheSwKKyAgICAgICAgImZzbCxxZS1maXJtd2FyZSIuCisKK1JlY29tbWVuZGVkIHByb3BlcnRpZXMKKy0gYnJnLWZyZXF1ZW5jeSA6IHRoZSBpbnRlcm5hbCBjbG9jayBzb3VyY2UgZnJlcXVlbmN5IGZvciBiYXVkLXJhdGUKKyAgZ2VuZXJhdG9ycyBpbiBIei4KKworRXhhbXBsZToKKyAgICAgcWVAZTAxMDAwMDAgeworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDE+OworCSNpbnRlcnJ1cHQtY2VsbHMgPSA8Mj47CisJY29tcGF0aWJsZSA9ICJmc2wscWUiOworCXJhbmdlcyA9IDwwIGUwMTAwMDAwIDAwMTAwMDAwPjsKKwlyZWcgPSA8ZTAxMDAwMDAgNDgwPjsKKwlicmctZnJlcXVlbmN5ID0gPDA+OworCWJ1cy1mcmVxdWVuY3kgPSA8MTc5QTdCMDA+OworICAgICB9CisKKyogTXVsdGktVXNlciBSQU0gKE1VUkFNKQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJmc2wscWUtbXVyYW0iLCAiZnNsLGNwbS1tdXJhbSIuCistIG1vZGUgOiB0aGUgY291bGQgYmUgImhvc3QiIG9yICJzbGF2ZSIuCistIHJhbmdlcyA6IFNob3VsZCBiZSBkZWZpbmVkIGFzIHNwZWNpZmllZCBpbiAxKSB0byBkZXNjcmliZSB0aGUKKyAgIHRyYW5zbGF0aW9uIG9mIE1VUkFNIGFkZHJlc3Nlcy4KKy0gZGF0YS1vbmx5IDogc3ViLW5vZGUgd2hpY2ggZGVmaW5lcyB0aGUgYWRkcmVzcyBhcmVhIHVuZGVyIE1VUkFNCisgICBidXMgdGhhdCBjYW4gYmUgYWxsb2NhdGVkIGFzIGRhdGEvcGFyYW1ldGVyCisKK0V4YW1wbGU6CisKKyAgICAgbXVyYW1AMTAwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLHFlLW11cmFtIiwgImZzbCxjcG0tbXVyYW0iOworCXJhbmdlcyA9IDwwIDAwMDEwMDAwIDAwMDBjMDAwPjsKKworCWRhdGEtb25seUAweworCQljb21wYXRpYmxlID0gImZzbCxxZS1tdXJhbS1kYXRhIiwKKwkJCSAgICAgImZzbCxjcG0tbXVyYW0tZGF0YSI7CisJCXJlZyA9IDwwIGMwMDA+OworCX07CisgICAgIH07CisKKyogUUUgRmlybXdhcmUgTm9kZQorCitUaGlzIG5vZGUgZGVmaW5lcyBhIGZpcm13YXJlIGJpbmFyeSB0aGF0IGlzIGVtYmVkZGVkIGluIHRoZSBkZXZpY2UgdHJlZSwgZm9yCit0aGUgcHVycG9zZSBvZiBwYXNzaW5nIHRoZSBmaXJtd2FyZSBmcm9tIGJvb3Rsb2FkZXIgdG8gdGhlIGtlcm5lbCwgb3IgZnJvbQordGhlIGh5cGVydmlzb3IgdG8gdGhlIGd1ZXN0LgorCitUaGUgZmlybXdhcmUgbm9kZSBpdHNlbGYgY29udGFpbnMgdGhlIGZpcm13YXJlIGJpbmFyeSBjb250ZW50cywgYSBjb21wYXRpYmxlCitwcm9wZXJ0eSwgYW5kIGFueSBmaXJtd2FyZS1zcGVjaWZpYyBwcm9wZXJ0aWVzLiAgVGhlIG5vZGUgc2hvdWxkIGJlIHBsYWNlZAoraW5zaWRlIGEgUUUgbm9kZSB0aGF0IG5lZWRzIGl0LiAgRG9pbmcgc28gZWxpbWluYXRlcyB0aGUgbmVlZCBmb3IgYQorZnNsLGZpcm13YXJlLXBoYW5kbGUgcHJvcGVydHkuICBPdGhlciBRRSBub2RlcyB0aGF0IG5lZWQgdGhlIHNhbWUgZmlybXdhcmUKK3Nob3VsZCBkZWZpbmUgYW4gZnNsLGZpcm13YXJlLXBoYW5kbGUgcHJvcGVydHkgdGhhdCBwb2ludHMgdG8gdGhlIGZpcm13YXJlIG5vZGUKK2luIHRoZSBmaXJzdCBRRSBub2RlLgorCitUaGUgZnNsLGZpcm13YXJlIHByb3BlcnR5IGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlIERUUyAocG9zc2libHkgdXNpbmcgaW5jYmluKQorb3IgY2FuIGJlIGluc2VydGVkIGJ5IHRoZSBib290IGxvYWRlciBhdCBib290IHRpbWUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZQorICAgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgICBWYWx1ZSB0eXBlOiA8c3RyaW5nPgorICAgICAgRGVmaW5pdGlvbjogQSBzdGFuZGFyZCBwcm9wZXJ0eS4gIFNwZWNpZnkgYSBzdHJpbmcgdGhhdCBpbmRpY2F0ZXMgd2hhdAorICAgICAgICAgIGtpbmQgb2YgZmlybXdhcmUgaXQgaXMuICBGb3IgUUUsIHRoaXMgc2hvdWxkIGJlICJmc2wscWUtZmlybXdhcmUiLgorCisgICAtIGZzbCxmaXJtd2FyZQorICAgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgICBWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PiwgZW5jb2RlZCBhcyBhbiBhcnJheSBvZiBieXRlcworICAgICAgRGVmaW5pdGlvbjogQSBzdGFuZGFyZCBwcm9wZXJ0eS4gIFRoaXMgcHJvcGVydHkgY29udGFpbnMgdGhlIGZpcm13YXJlCisgICAgICAgICAgYmluYXJ5ICJibG9iIi4KKworRXhhbXBsZToKKwlxZTFAZTAwODAwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxxZSI7CisJCXFlX2Zpcm13YXJlOnFlLWZpcm13YXJlIHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLHFlLWZpcm13YXJlIjsKKwkJCWZzbCxmaXJtd2FyZSA9IFsweDcwIDB4Y2QgMHgwMCAweDAwIDB4MDEgMHg0NiAweDQ1IC4uLl07CisJCX07CisJCS4uLgorCX07CisKKwlxZTJAZTAwOTAwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxxZSI7CisJCWZzbCxmaXJtd2FyZS1waGFuZGxlID0gPCZxZV9maXJtd2FyZT47CisJCS4uLgorCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvY3BtX3FlL3FlL2Zpcm13YXJlLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9jcG1fcWUvcWUvZmlybXdhcmUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0OWRiM2EKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvY3BtX3FlL3FlL2Zpcm13YXJlLnR4dApAQCAtMCwwICsxLDI0IEBACisqIFVwbG9hZGVkIFFFIGZpcm13YXJlCisKKyAgICAgIElmIGEgbmV3IGZpcm13YXJlIGhhcyBiZWVuIHVwbG9hZGVkIHRvIHRoZSBRRSAodXN1YWxseSBieSB0aGUKKyAgICAgIGJvb3QgbG9hZGVyKSwgdGhlbiBhICdmaXJtd2FyZScgY2hpbGQgbm9kZSBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIFFFCisgICAgICBub2RlLiAgVGhpcyBub2RlIHByb3ZpZGVzIGluZm9ybWF0aW9uIG9uIHRoZSB1cGxvYWRlZCBmaXJtd2FyZSB0aGF0CisgICAgICBkZXZpY2UgZHJpdmVycyBtYXkgbmVlZC4KKworICAgICAgUmVxdWlyZWQgcHJvcGVydGllczoKKyAgICAgIC0gaWQ6IFRoZSBzdHJpbmcgbmFtZSBvZiB0aGUgZmlybXdhcmUuICBUaGlzIGlzIHRha2VuIGZyb20gdGhlICdpZCcKKyAgICAgICAgICAgIG1lbWJlciBvZiB0aGUgcWVfZmlybXdhcmUgc3RydWN0dXJlIG9mIHRoZSB1cGxvYWRlZCBmaXJtd2FyZS4KKyAgICAgICAgICAgIERldmljZSBkcml2ZXJzIGNhbiBzZWFyY2ggdGhpcyBzdHJpbmcgdG8gZGV0ZXJtaW5lIGlmIHRoZQorICAgICAgICAgICAgZmlybXdhcmUgdGhleSB3YW50IGlzIGFscmVhZHkgcHJlc2VudC4KKyAgICAgIC0gZXh0ZW5kZWQtbW9kZXM6IFRoZSBFeHRlbmRlZCBNb2RlcyBiaXRmaWVsZCwgdGFrZW4gZnJvbSB0aGUKKwkJICAgZmlybXdhcmUgYmluYXJ5LiAgSXQgaXMgYSA2NC1iaXQgbnVtYmVyIHJlcHJlc2VudGVkCisJCSAgIGFzIGFuIGFycmF5IG9mIHR3byAzMi1iaXQgbnVtYmVycy4KKyAgICAgIC0gdmlydHVhbC10cmFwczogVGhlIHZpcnR1YWwgdHJhcHMsIHRha2VuIGZyb20gdGhlIGZpcm13YXJlIGJpbmFyeS4KKwkJICBJdCBpcyBhbiBhcnJheSBvZiA4IDMyLWJpdCBudW1iZXJzLgorCitFeGFtcGxlOgorCWZpcm13YXJlIHsKKwkJaWQgPSAiU29mdC1VQVJUIjsKKwkJZXh0ZW5kZWQtbW9kZXMgPSA8MCAwPjsKKwkJdmlydHVhbC10cmFwcyA9IDwwIDAgMCAwIDAgMCAwIDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvY3BtX3FlL3FlL3Bhcl9pby50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvY3BtX3FlL3FlL3Bhcl9pby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA5ODQyNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9jcG1fcWUvcWUvcGFyX2lvLnR4dApAQCAtMCwwICsxLDUxIEBACisqIFBhcmFsbGVsIEkvTyBQb3J0cworCitUaGlzIG5vZGUgY29uZmlndXJlcyBQYXJhbGxlbCBJL08gcG9ydHMgZm9yIENQVXMgd2l0aCBRRSBzdXBwb3J0LgorVGhlIG5vZGUgc2hvdWxkIHJlc2lkZSBpbiB0aGUgInNvYyIgbm9kZSBvZiB0aGUgdHJlZS4gIEZvciBlYWNoCitkZXZpY2UgdGhhdCB1c2luZyBwYXJhbGxlbCBJL08gcG9ydHMsIGEgY2hpbGQgbm9kZSBzaG91bGQgYmUgY3JlYXRlZC4KK1NlZSB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgUGluIGNvbmZpZ3VyYXRpb24gbm9kZXMgYmVsb3cgZm9yIG1vcmUKK2luZm9ybWF0aW9uLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBkZXZpY2VfdHlwZSA6IHNob3VsZCBiZSAicGFyX2lvIi4KKy0gcmVnIDogb2Zmc2V0IHRvIHRoZSByZWdpc3RlciBzZXQgYW5kIGl0cyBsZW5ndGguCistIG51bS1wb3J0cyA6IG51bWJlciBvZiBQYXJhbGxlbCBJL08gcG9ydHMKKworRXhhbXBsZToKK3Bhcl9pb0AxNDAwIHsKKwlyZWcgPSA8MTQwMCAxMDA+OworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDA+OworCWRldmljZV90eXBlID0gInBhcl9pbyI7CisJbnVtLXBvcnRzID0gPDc+OworCXVjY19waW5AMDEgeworCQkuLi4uLi4KKwl9OworCitOb3RlIHRoYXQgInBhcl9pbyIgbm9kZXMgYXJlIG9ic29sZXRlLCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGZvcgordGhlIG5ldyBkZXZpY2UgdHJlZXMuIEluc3RlYWQsIGVhY2ggUGFyIEkvTyBiYW5rIHNob3VsZCBiZSByZXByZXNlbnRlZAordmlhIGl0cyBvd24gZ3Bpby1jb250cm9sbGVyIG5vZGU6CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistICNncGlvLWNlbGxzIDogc2hvdWxkIGJlICIyIi4KKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiZnNsLDxjaGlwPi1xZS1wYXJpby1iYW5rIiwKKyAgImZzbCxtcGM4MzIzLXFlLXBhcmlvLWJhbmsiLgorLSByZWcgOiBvZmZzZXQgdG8gdGhlIHJlZ2lzdGVyIHNldCBhbmQgaXRzIGxlbmd0aC4KKy0gZ3Bpby1jb250cm9sbGVyIDogbm9kZSB0byBpZGVudGlmeSBncGlvIGNvbnRyb2xsZXJzLgorCitFeGFtcGxlOgorCXFlX3Bpb19hOiBncGlvLWNvbnRyb2xsZXJAMTQwMCB7CisJCSNncGlvLWNlbGxzID0gPDI+OworCQljb21wYXRpYmxlID0gImZzbCxtcGM4MzYwLXFlLXBhcmlvLWJhbmsiLAorCQkiZnNsLG1wYzgzMjMtcWUtcGFyaW8tYmFuayI7CisJCXJlZyA9IDwweDE0MDAgMHgxOD47CisJCWdwaW8tY29udHJvbGxlcjsKKwkgIH07CisKKwlxZV9waW9fZTogZ3Bpby1jb250cm9sbGVyQDE0NjAgeworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwkJY29tcGF0aWJsZSA9ICJmc2wsbXBjODM2MC1xZS1wYXJpby1iYW5rIiwKKwkJCSAgICAgImZzbCxtcGM4MzIzLXFlLXBhcmlvLWJhbmsiOworCQlyZWcgPSA8MHgxNDYwIDB4MTg+OworCQlncGlvLWNvbnRyb2xsZXI7CisJICB9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2NwbV9xZS9xZS9waW5jZmcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2NwbV9xZS9xZS9waW5jZmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjNmVlMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvY3BtX3FlL3FlL3BpbmNmZy50eHQKQEAgLTAsMCArMSw1NyBAQAorKiBQaW4gY29uZmlndXJhdGlvbiBub2RlcworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBwaW8tbWFwIDogYXJyYXkgb2YgcGluIGNvbmZpZ3VyYXRpb25zLiAgRWFjaCBwaW4gaXMgZGVmaW5lZCBieSA2CisgIGludGVnZXJzLiAgVGhlIHNpeCBudW1iZXJzIGFyZSByZXNwZWN0aXZlbHk6IHBvcnQsIHBpbiwgZGlyLAorICBvcGVuX2RyYWluLCBhc3NpZ25tZW50LCBoYXNfaXJxLgorICAtIHBvcnQgOiBwb3J0IG51bWJlciBvZiB0aGUgcGluOyAwLTYgcmVwcmVzZW50IHBvcnQgQS1HIGluIFVNLgorICAtIHBpbiA6IHBpbiBudW1iZXIgaW4gdGhlIHBvcnQuCisgIC0gZGlyIDogZGlyZWN0aW9uIG9mIHRoZSBwaW4sIHNob3VsZCBlbmNvZGUgYXMgZm9sbG93czoKKworICAgICAwID0gVGhlIHBpbiBpcyBkaXNhYmxlZAorICAgICAxID0gVGhlIHBpbiBpcyBhbiBvdXRwdXQKKyAgICAgMiA9IFRoZSBwaW4gaXMgYW4gaW5wdXQKKyAgICAgMyA9IFRoZSBwaW4gaXMgSS9PCisKKyAgLSBvcGVuX2RyYWluIDogaW5kaWNhdGVzIHRoZSBwaW4gaXMgbm9ybWFsIG9yIHdpcmVkLU9SOgorCisgICAgIDAgPSBUaGUgcGluIGlzIGFjdGl2ZWx5IGRyaXZlbiBhcyBhbiBvdXRwdXQKKyAgICAgMSA9IFRoZSBwaW4gaXMgYW4gb3Blbi1kcmFpbiBkcml2ZXIuIEFzIGFuIG91dHB1dCwgdGhlIHBpbiBpcworICAgICAgICAgZHJpdmVuIGFjdGl2ZS1sb3csIG90aGVyd2lzZSBpdCBpcyB0aHJlZS1zdGF0ZWQuCisKKyAgLSBhc3NpZ25tZW50IDogZnVuY3Rpb24gbnVtYmVyIG9mIHRoZSBwaW4gYWNjb3JkaW5nIHRvIHRoZSBQaW4gQXNzaWdubWVudAorICAgIHRhYmxlcyBpbiBVc2VyIE1hbnVhbC4gIEVhY2ggcGluIGNhbiBoYXZlIHVwIHRvIDQgcG9zc2libGUgZnVuY3Rpb25zIGluCisgICAgUUUgYW5kIHR3byBvcHRpb25zIGZvciBDUE0uCisgIC0gaGFzX2lycSA6IGluZGljYXRlcyBpZiB0aGUgcGluIGlzIHVzZWQgYXMgc291cmNlIG9mIGV4dGVybmFsCisgICAgaW50ZXJydXB0cy4KKworRXhhbXBsZToKKyAgICAgdWNjX3BpbkAwMSB7CisJcGlvLW1hcCA9IDwKKwkvKiBwb3J0ICBwaW4gIGRpciAgb3Blbl9kcmFpbiAgYXNzaWdubWVudCAgaGFzX2lycSAqLworCQkwICAzICAxICAwICAxICAwIAkvKiBUeEQwICovCisJCTAgIDQgIDEgIDAgIDEgIDAgCS8qIFR4RDEgKi8KKwkJMCAgNSAgMSAgMCAgMSAgMCAJLyogVHhEMiAqLworCQkwICA2ICAxICAwICAxICAwIAkvKiBUeEQzICovCisJCTEgIDYgIDEgIDAgIDMgIDAgCS8qIFR4RDQgKi8KKwkJMSAgNyAgMSAgMCAgMSAgMCAJLyogVHhENSAqLworCQkxICA5ICAxICAwICAyICAwIAkvKiBUeEQ2ICovCisJCTEgIGEgIDEgIDAgIDIgIDAgCS8qIFR4RDcgKi8KKwkJMCAgOSAgMiAgMCAgMSAgMCAJLyogUnhEMCAqLworCQkwICBhICAyICAwICAxICAwIAkvKiBSeEQxICovCisJCTAgIGIgIDIgIDAgIDEgIDAgCS8qIFJ4RDIgKi8KKwkJMCAgYyAgMiAgMCAgMSAgMCAJLyogUnhEMyAqLworCQkwICBkICAyICAwICAxICAwIAkvKiBSeEQ0ICovCisJCTEgIDEgIDIgIDAgIDIgIDAgCS8qIFJ4RDUgKi8KKwkJMSAgMCAgMiAgMCAgMiAgMCAJLyogUnhENiAqLworCQkxICA0ICAyICAwICAyICAwIAkvKiBSeEQ3ICovCisJCTAgIDcgIDEgIDAgIDEgIDAgCS8qIFRYX0VOICovCisJCTAgIDggIDEgIDAgIDEgIDAgCS8qIFRYX0VSICovCisJCTAgIGYgIDIgIDAgIDEgIDAgCS8qIFJYX0RWICovCisJCTAgIDEwIDIgIDAgIDEgIDAgCS8qIFJYX0VSICovCisJCTAgIDAgIDIgIDAgIDEgIDAgCS8qIFJYX0NMSyAqLworCQkyICA5ICAxICAwICAzICAwIAkvKiBHVFhfQ0xLIC0gQ0xLMTAgKi8KKwkJMiAgOCAgMiAgMCAgMSAgMD47CS8qIEdUWDEyNSAtIENMSzkgKi8KKyAgICAgfTsKKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvY3BtX3FlL3FlL3VjYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvY3BtX3FlL3FlL3VjYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ3NzM0YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9jcG1fcWUvcWUvdWNjLnR4dApAQCAtMCwwICsxLDcwIEBACisqIFVDQyAoVW5pZmllZCBDb21tdW5pY2F0aW9ucyBDb250cm9sbGVycykKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gZGV2aWNlX3R5cGUgOiBzaG91bGQgYmUgIm5ldHdvcmsiLCAiaGxkYyIsICJ1YXJ0IiwgInRyYW5zcGFyZW50IgorICAiYmlzeW5jIiwgImF0bSIsIG9yICJzZXJpYWwiLgorLSBjb21wYXRpYmxlIDogY291bGQgYmUgInVjY19nZXRoIiBvciAiZnNsX2F0bSIgYW5kIHNvIG9uLgorLSBjZWxsLWluZGV4IDogdGhlIHVjYyBudW1iZXIoMS04KSwgY29ycmVzcG9uZGluZyB0byBVQ0N4IGluIFVNLgorLSByZWcgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistIGludGVycnVwdHMgOiA8YSBiPiB3aGVyZSBhIGlzIHRoZSBpbnRlcnJ1cHQgbnVtYmVyIGFuZCBiIGlzIGEKKyAgZmllbGQgdGhhdCByZXByZXNlbnRzIGFuIGVuY29kaW5nIG9mIHRoZSBzZW5zZSBhbmQgbGV2ZWwKKyAgaW5mb3JtYXRpb24gZm9yIHRoZSBpbnRlcnJ1cHQuICBUaGlzIHNob3VsZCBiZSBlbmNvZGVkIGJhc2VkIG9uCisgIHRoZSBpbmZvcm1hdGlvbiBpbiBzZWN0aW9uIDIpIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBpbnRlcnJ1cHQKKyAgY29udHJvbGxlciB5b3UgaGF2ZS4KKy0gaW50ZXJydXB0LXBhcmVudCA6IHRoZSBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgdGhhdAorICBzZXJ2aWNlcyBpbnRlcnJ1cHRzIGZvciB0aGlzIGRldmljZS4KKy0gcGlvLWhhbmRsZSA6IFRoZSBwaGFuZGxlIGZvciB0aGUgUGFyYWxsZWwgSS9PIHBvcnQgY29uZmlndXJhdGlvbi4KKy0gcG9ydC1udW1iZXIgOiBmb3IgVUFSVCBkcml2ZXJzLCB0aGUgcG9ydCBudW1iZXIgdG8gdXNlLCBiZXR3ZWVuIDAgYW5kIDMuCisgIFRoaXMgdXN1YWxseSBjb3JyZXNwb25kcyB0byB0aGUgL2Rldi90dHlRRSBkZXZpY2UsIGUuZy4gPDA+ID0gL2Rldi90dHlRRTAuCisgIFRoZSBwb3J0IG51bWJlciBpcyBhZGRlZCB0byB0aGUgbWlub3IgbnVtYmVyIG9mIHRoZSBkZXZpY2UuICBVbmxpa2UgdGhlCisgIENQTSBVQVJUIGRyaXZlciwgdGhlIHBvcnQtbnVtYmVyIGlzIHJlcXVpcmVkIGZvciB0aGUgUUUgVUFSVCBkcml2ZXIuCistIHNvZnQtdWFydCA6IGZvciBVQVJUIGRyaXZlcnMsIGlmIHNwZWNpZmllZCB0aGlzIG1lYW5zIHRoZSBRRSBVQVJUIGRldmljZQorICBkcml2ZXIgc2hvdWxkIHVzZSAiU29mdC1VQVJUIiBtb2RlLCB3aGljaCBpcyBuZWVkZWQgb24gc29tZSBTT0NzIHRoYXQgaGF2ZQorICBicm9rZW4gVUFSVCBoYXJkd2FyZS4gIFNvZnQtVUFSVCBpcyBwcm92aWRlZCB2aWEgYSBtaWNyb2NvZGUgdXBsb2FkLgorLSByeC1jbG9jay1uYW1lOiB0aGUgVUNDIHJlY2VpdmUgY2xvY2sgc291cmNlCisgICJub25lIjogY2xvY2sgc291cmNlIGlzIGRpc2FibGVkCisgICJicmcxIiB0aHJvdWdoICJicmcxNiI6IGNsb2NrIHNvdXJjZSBpcyBCUkcxLUJSRzE2LCByZXNwZWN0aXZlbHkKKyAgImNsazEiIHRocm91Z2ggImNsazI0IjogY2xvY2sgc291cmNlIGlzIENMSzEtQ0xLMjQsIHJlc3BlY3RpdmVseQorLSB0eC1jbG9jay1uYW1lOiB0aGUgVUNDIHRyYW5zbWl0IGNsb2NrIHNvdXJjZQorICAibm9uZSI6IGNsb2NrIHNvdXJjZSBpcyBkaXNhYmxlZAorICAiYnJnMSIgdGhyb3VnaCAiYnJnMTYiOiBjbG9jayBzb3VyY2UgaXMgQlJHMS1CUkcxNiwgcmVzcGVjdGl2ZWx5CisgICJjbGsxIiB0aHJvdWdoICJjbGsyNCI6IGNsb2NrIHNvdXJjZSBpcyBDTEsxLUNMSzI0LCByZXNwZWN0aXZlbHkKK1RoZSBmb2xsb3dpbmcgdHdvIHByb3BlcnRpZXMgYXJlIGRlcHJlY2F0ZWQuICByeC1jbG9jayBoYXMgYmVlbiByZXBsYWNlZAord2l0aCByeC1jbG9jay1uYW1lLCBhbmQgdHgtY2xvY2sgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCB0eC1jbG9jay1uYW1lLgorRHJpdmVycyB0aGF0IGN1cnJlbnRseSB1c2UgdGhlIGRlcHJlY2F0ZWQgcHJvcGVydGllcyBzaG91bGQgY29udGludWUgdG8KK2RvIHNvLCBpbiBvcmRlciB0byBzdXBwb3J0IG9sZGVyIGRldmljZSB0cmVlcywgYnV0IHRoZXkgc2hvdWxkIGJlIHVwZGF0ZWQKK3RvIGNoZWNrIGZvciB0aGUgbmV3IHByb3BlcnRpZXMgZmlyc3QuCistIHJ4LWNsb2NrIDogcmVwcmVzZW50cyB0aGUgVUNDIHJlY2VpdmUgY2xvY2sgc291cmNlLgorICAweDAwIDogY2xvY2sgc291cmNlIGlzIGRpc2FibGVkOworICAweDF+MHgxMCA6IGNsb2NrIHNvdXJjZSBpcyBCUkcxfkJSRzE2IHJlc3BlY3RpdmVseTsKKyAgMHgxMX4weDI4OiBjbG9jayBzb3VyY2UgaXMgUUVfQ0xLMX5RRV9DTEsyNCByZXNwZWN0aXZlbHkuCistIHR4LWNsb2NrOiByZXByZXNlbnRzIHRoZSBVQ0MgdHJhbnNtaXQgY2xvY2sgc291cmNlOworICAweDAwIDogY2xvY2sgc291cmNlIGlzIGRpc2FibGVkOworICAweDF+MHgxMCA6IGNsb2NrIHNvdXJjZSBpcyBCUkcxfkJSRzE2IHJlc3BlY3RpdmVseTsKKyAgMHgxMX4weDI4OiBjbG9jayBzb3VyY2UgaXMgUUVfQ0xLMX5RRV9DTEsyNCByZXNwZWN0aXZlbHkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgZm9yIG5ldHdvcmsgZGV2aWNlX3R5cGU6CistIG1hYy1hZGRyZXNzIDogbGlzdCBvZiBieXRlcyByZXByZXNlbnRpbmcgdGhlIGV0aGVybmV0IGFkZHJlc3MuCistIHBoeS1oYW5kbGUgOiBUaGUgcGhhbmRsZSBmb3IgdGhlIFBIWSBjb25uZWN0ZWQgdG8gdGhpcyBjb250cm9sbGVyLgorCitSZWNvbW1lbmRlZCBwcm9wZXJ0aWVzOgorLSBwaHktY29ubmVjdGlvbi10eXBlIDogYSBzdHJpbmcgbmFtaW5nIHRoZSBjb250cm9sbGVyL1BIWSBpbnRlcmZhY2UgdHlwZSwKKyAgaS5lLiwgIm1paSIgKGRlZmF1bHQpLCAicm1paSIsICJnbWlpIiwgInJnbWlpIiwgInJnbWlpLWlkIiAoSW50ZXJuYWwKKyAgRGVsYXkpLCAicmdtaWktdHhpZCIgKGRlbGF5IG9uIFRYIG9ubHkpLCAicmdtaWktcnhpZCIgKGRlbGF5IG9uIFJYIG9ubHkpLAorICAidGJpIiwgb3IgInJ0YmkiLgorCitFeGFtcGxlOgorCXVjY0AyMDAwIHsKKwkJZGV2aWNlX3R5cGUgPSAibmV0d29yayI7CisJCWNvbXBhdGlibGUgPSAidWNjX2dldGgiOworCQljZWxsLWluZGV4ID0gPDE+OworCQlyZWcgPSA8MjAwMCAyMDA+OworCQlpbnRlcnJ1cHRzID0gPGEwIDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPDcwMD47CisJCW1hYy1hZGRyZXNzID0gWyAwMCAwNCA5ZiAwMCAyMyAyMyBdOworCQlyeC1jbG9jayA9ICJub25lIjsKKwkJdHgtY2xvY2sgPSAiY2xrOSI7CisJCXBoeS1oYW5kbGUgPSA8MjEyMDAwPjsKKwkJcGh5LWNvbm5lY3Rpb24tdHlwZSA9ICJnbWlpIjsKKwkJcGlvLWhhbmRsZSA9IDwxNDAwMDE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvY3BtX3FlL3FlL3VzYi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvY3BtX3FlL3FlL3VzYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNjZDVmMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9jcG1fcWUvcWUvdXNiLnR4dApAQCAtMCwwICsxLDM3IEBACitGcmVlc2NhbGUgUVVJQ0MgRW5naW5lIFVTQiBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImZzbCw8Y2hpcD4tcWUtdXNiIiwgImZzbCxtcGM4MzIzLXFlLXVzYiIuCistIHJlZyA6IHRoZSBmaXJzdCB0d28gY2VsbHMgc2hvdWxkIGNvbnRhaW4gdXNiIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQKKyAgbGVuZ3RoLCB0aGUgbmV4dCB0d28gdHdvIGNlbGxzIHNob3VsZCBjb250YWluIFBSQU0gbG9jYXRpb24gYW5kCisgIGxlbmd0aC4KKy0gaW50ZXJydXB0cyA6IHNob3VsZCBjb250YWluIFVTQiBpbnRlcnJ1cHQuCistIGludGVycnVwdC1wYXJlbnQgOiBpbnRlcnJ1cHQgc291cmNlIHBoYW5kbGUuCistIGZzbCxmdWxsc3BlZWQtY2xvY2sgOiBzcGVjaWZpZXMgdGhlIGZ1bGwgc3BlZWQgVVNCIGNsb2NrIHNvdXJjZToKKyAgIm5vbmUiOiBjbG9jayBzb3VyY2UgaXMgZGlzYWJsZWQKKyAgImJyZzEiIHRocm91Z2ggImJyZzE2IjogY2xvY2sgc291cmNlIGlzIEJSRzEtQlJHMTYsIHJlc3BlY3RpdmVseQorICAiY2xrMSIgdGhyb3VnaCAiY2xrMjQiOiBjbG9jayBzb3VyY2UgaXMgQ0xLMS1DTEsyNCwgcmVzcGVjdGl2ZWx5CistIGZzbCxsb3dzcGVlZC1jbG9jayA6IHNwZWNpZmllcyB0aGUgbG93IHNwZWVkIFVTQiBjbG9jayBzb3VyY2U6CisgICJub25lIjogY2xvY2sgc291cmNlIGlzIGRpc2FibGVkCisgICJicmcxIiB0aHJvdWdoICJicmcxNiI6IGNsb2NrIHNvdXJjZSBpcyBCUkcxLUJSRzE2LCByZXNwZWN0aXZlbHkKKyAgImNsazEiIHRocm91Z2ggImNsazI0IjogY2xvY2sgc291cmNlIGlzIENMSzEtQ0xLMjQsIHJlc3BlY3RpdmVseQorLSBodWItcG93ZXItYnVkZ2V0IDogVVNCIHBvd2VyIGJ1ZGdldCBmb3IgdGhlIHJvb3QgaHViLCBpbiBtQS4KKy0gZ3Bpb3MgOiBzaG91bGQgc3BlY2lmeSBHUElPcyBpbiB0aGlzIG9yZGVyOiBVU0JPRSwgVVNCVFAsIFVTQlROLCBVU0JSUCwKKyAgVVNCUk4sIFNQRUVEIChvcHRpb25hbCksIGFuZCBQT1dFUiAob3B0aW9uYWwpLgorCitFeGFtcGxlOgorCit1c2JANmMwIHsKKwljb21wYXRpYmxlID0gImZzbCxtcGM4MzYwLXFlLXVzYiIsICJmc2wsbXBjODMyMy1xZS11c2IiOworCXJlZyA9IDwweDZjMCAweDQwIDB4OGIwMCAweDEwMD47CisJaW50ZXJydXB0cyA9IDwxMT47CisJaW50ZXJydXB0LXBhcmVudCA9IDwmcWVpYz47CisJZnNsLGZ1bGxzcGVlZC1jbG9jayA9ICJjbGsyMSI7CisJZ3Bpb3MgPSA8JnFlX3Bpb19iICAyIDAgLyogVVNCT0UgKi8KKwkJICZxZV9waW9fYiAgMyAwIC8qIFVTQlRQICovCisJCSAmcWVfcGlvX2IgIDggMCAvKiBVU0JUTiAqLworCQkgJnFlX3Bpb19iICA5IDAgLyogVVNCUlAgKi8KKwkJICZxZV9waW9fYiAxMSAwIC8qIFVTQlJOICovCisJCSAmcWVfcGlvX2UgMjAgMCAvKiBTUEVFRCAqLworCQkgJnFlX3Bpb19lIDIxIDAgLyogUE9XRVIgKi8+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9jcG1fcWUvc2VyaWFsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9jcG1fcWUvc2VyaWFsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWE3NmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2NwbV9xZS9zZXJpYWwudHh0CkBAIC0wLDAgKzEsMzIgQEAKKyogU2VyaWFsCisKK0N1cnJlbnRseSBkZWZpbmVkIGNvbXBhdGlibGVzOgorLSBmc2wsY3BtMS1zbWMtdWFydAorLSBmc2wsY3BtMi1zbWMtdWFydAorLSBmc2wsY3BtMS1zY2MtdWFydAorLSBmc2wsY3BtMi1zY2MtdWFydAorLSBmc2wscWUtdWFydAorCitNb2RlbSBjb250cm9sIGxpbmVzIGNvbm5lY3RlZCB0byBHUElPIGNvbnRyb2xsZXJzIGFyZSBsaXN0ZWQgaW4gdGhlIGdwaW9zCitwcm9wZXJ0eSBhcyBkZXNjcmliZWQgaW4gYm9vdGluZy13aXRob3V0LW9mLnR4dCwgc2VjdGlvbiBJWC4xIGluIHRoZSBmb2xsb3dpbmcKK29yZGVyOgorCitDVFMsIFJUUywgRENELCBEU1IsIERUUiwgYW5kIFJJLgorCitUaGUgZ3Bpb3MgcHJvcGVydHkgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSBsZWZ0IG91dCB3aGVuIGNvbnRyb2wgbGluZXMgYXJlCitub3QgdXNlZC4KKworRXhhbXBsZToKKworCXNlcmlhbEAxMWEwMCB7CisJCWRldmljZV90eXBlID0gInNlcmlhbCI7CisJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzgyNzItc2NjLXVhcnQiLAorCQkJICAgICAiZnNsLGNwbTItc2NjLXVhcnQiOworCQlyZWcgPSA8MTFhMDAgMjAgODAwMCAxMDA+OworCQlpbnRlcnJ1cHRzID0gPDI4IDg+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZQSUM+OworCQlmc2wsY3BtLWJyZyA9IDwxPjsKKwkJZnNsLGNwbS1jb21tYW5kID0gPDAwODAwMDAwPjsKKwkJZ3Bpb3MgPSA8JmdwaW9fYyAxNSAwCisJCQkgJmdwaW9fZCAyOSAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2NwdXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2NwdXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4Y2QyMzkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvY3B1cy50eHQKQEAgLTAsMCArMSwzMyBAQAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUG93ZXIgQXJjaGl0ZWN0dXJlIENQVSBCaW5kaW5nCitDb3B5cmlnaHQgMjAxMyBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciBJbmMuCisKK1Bvd2VyIEFyY2hpdGVjdHVyZSBDUFVzIGluIEZyZWVzY2FsZSBTT0NzIGFyZSByZXByZXNlbnRlZCBpbiBkZXZpY2UgdHJlZXMgYXMKK3BlciB0aGUgZGVmaW5pdGlvbiBpbiBlUEFQUi4KKworSW4gYWRkaXRpb24gdG8gdGhlIGVQQVBSIGRlZmluaXRpb25zLCB0aGUgcHJvcGVydGllcyBkZWZpbmVkIGJlbG93IG1heSBiZQorcHJlc2VudCBvbiBDUFUgbm9kZXMuCisKK1BST1BFUlRJRVMKKworICAgLSBmc2wsZXJlZi0qCisgICAgICAgIFVzYWdlOiBvcHRpb25hbAorICAgICAgICBWYWx1ZSB0eXBlOiA8ZW1wdHk+CisgICAgICAgIERlZmluaXRpb246IFRoZSBFUkVGIChFUkVGOiBBIFByb2dyYW1tZXIucyBSZWZlcmVuY2UgTWFudWFsIGZvcgorCUZyZWVzY2FsZSBQb3dlciBBcmNoaXRlY3R1cmUpIGRlZmluZXMgdGhlIGFyY2hpdGVjdHVyZSBmb3IgRnJlZXNjYWxlCisJUG93ZXIgQ1BVcy4gIFRoZSBFUkVGIGRlZmluZXMgc29tZSBhcmNoaXRlY3R1cmUgY2F0ZWdvcmllcyBub3QgZGVmaW5lZAorCWJ5IHRoZSBQb3dlciBJU0EuICBGb3IgdGhlc2UgRVJFRi1zcGVjaWZpYyBjYXRlZ29yaWVzLCB0aGUgZXhpc3RlbmNlIG9mCisJYSBwcm9wZXJ0eSBuYW1lZCBmc2wsZXJlZi1bQ0FUXSwgd2hlcmUgW0NBVF0gaXMgdGhlIGFiYnJldmlhdGVkIGNhdGVnb3J5CisJbmFtZSB3aXRoIGFsbCB1cHBlcmNhc2UgbGV0dGVycyBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLCBpbmRpY2F0ZXMgdGhhdAorCXRoZSBjYXRlZ29yeSBpcyBzdXBwb3J0ZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uLgorCisgICAgLSBmc2wscG9ydGlkLW1hcHBpbmcKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8dTMyPgorCURlZmluaXRpb246IFRoZSBDb2hlcmVuY3kgU3ViZG9tYWluIElEIFBvcnQgTWFwcGluZyBSZWdpc3RlcnMgYW5kCisJU25vb3AgSUQgUG9ydCBNYXBwaW5nIHJlZ2lzdGVycywgd2hpY2ggYXJlIHBhcnQgb2YgdGhlIENvcmVOZXQKKwlDb2hlcmVuY3kgZmFicmljIChDQ0YpLCBwcm92aWRlIGEgQ29yZU5ldCBDb2hlcmVuY3kgU3ViZG9tYWluCisJSUQvQ29yZU5ldCBTbm9vcCBJRCB0byBjcHUgbWFwcGluZyBmdW5jdGlvbnMuICBDZXJ0YWluIGJpdHMgZnJvbQorCXRoZXNlIHJlZ2lzdGVycyBzaG91bGQgYmUgc2V0IGlmIHRoZSBjb3Jlc3BvbmRpbmcgQ1BVIHNob3VsZCBiZQorCXNub29wZWQuICBUaGlzIHByb3BlcnR5IGRlZmluZXMgYSBiaXRtYXNrIHdoaWNoIHNlbGVjdHMgdGhlIGJpdAorCXRoYXQgc2hvdWxkIGJlIHNldCBpZiB0aGlzIGNwdSBzaG91bGQgYmUgc25vb3BlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9kY3NyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9kY3NyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGE4ODEwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2Rjc3IudHh0CkBAIC0wLDAgKzEsMzk1IEBACis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitEZWJ1ZyBDb250cm9sIGFuZCBTdGF0dXMgUmVnaXN0ZXIgKERDU1IpIEJpbmRpbmcKK0NvcHlyaWdodCAyMDExIEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yIEluYy4KKworTk9URTogVGhlIGJpbmRpbmdzIGRlc2NyaWJlZCBpbiB0aGlzIGRvY3VtZW50IGFyZSBwcmVsaW1pbmFyeSBhbmQgc3ViamVjdAordG8gY2hhbmdlLiAgU29tZSBvZiB0aGUgY29tcGF0aWJsZSBzdHJpbmdzIHRoYXQgY29udGFpbiBvbmx5IGdlbmVyaWMgbmFtZXMKK21heSB0dXJuIG91dCB0byBiZSBpbmFwcHJvcHJpYXRlLCBvciBuZWVkIGFkZGl0aW9uYWwgcHJvcGVydGllcyB0byBkZXNjcmliZQordGhlIGludGVncmF0aW9uIG9mIHRoZSBibG9jayB3aXRoIHRoZSByZXN0IG9mIHRoZSBjaGlwLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0RlYnVnIENvbnRyb2wgYW5kIFN0YXR1cyBSZWdpc3RlciBNZW1vcnkgTWFwCisKK0Rlc2NyaXB0aW9uCisKK1RoaXMgbm9kZSBkZWZpbmVzIHRoZSBiYXNlIGFkZHJlc3MgYW5kIHJhbmdlIGZvciB0aGUKK2RlZmluZWQgRENTUiBNZW1vcnkgTWFwLiBDaGlsZCBub2RlcyB3aWxsIGRlc2NyaWJlIHRoZSBpbmRpdmlkdWFsCitkZWJ1ZyBibG9ja3MgZGVmaW5lZCB3aXRoaW4gdGhpcyBtZW1vcnkgc3BhY2UuCisKK1BST1BFUlRJRVMKKworCS0gY29tcGF0aWJsZQorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxzdHJpbmc+CisJRGVmaW5pdGlvbjogTXVzdCBpbmNsdWRlICJmc2wsZGNzciIgYW5kICJzaW1wbGUtYnVzIi4KKwlUaGUgRENTUiBzcGFjZSBleGlzdHMgaW4gdGhlIG1lbW9yeS1tYXBwZWQgYnVzLgorCisJLSAjYWRkcmVzcy1jZWxscworCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDx1MzI+CisJRGVmaW5pdGlvbjogQSBzdGFuZGFyZCBwcm9wZXJ0eS4gIERlZmluZXMgdGhlIG51bWJlciBvZiBjZWxscworCW9yIHJlcHJlc2VudGluZyBwaHlzaWNhbCBhZGRyZXNzZXMgaW4gY2hpbGQgbm9kZXMuCisKKwktICNzaXplLWNlbGxzCisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHUzMj4KKwlEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiAgRGVmaW5lcyB0aGUgbnVtYmVyIG9mIGNlbGxzCisJb3IgcmVwcmVzZW50aW5nIHRoZSBzaXplIG9mIHBoeXNpY2FsIGFkZHJlc3NlcyBpbgorCWNoaWxkIG5vZGVzLgorCisJLSByYW5nZXMKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IEEgc3RhbmRhcmQgcHJvcGVydHkuIFNwZWNpZmllcyB0aGUgcGh5c2ljYWwgYWRkcmVzcworCXJhbmdlIG9mIHRoZSBEQ1NSIHNwYWNlLgorCitFWEFNUExFCisJZGNzcjogZGNzckBmMDAwMDAwMDAgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCWNvbXBhdGlibGUgPSAiZnNsLGRjc3IiLCAic2ltcGxlLWJ1cyI7CisJCXJhbmdlcyA9IDwweDAwMDAwMDAwIDB4ZiAweDAwMDAwMDAwIDB4MDEwMDgwMDA+OworCX07CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorRXZlbnQgUHJvY2Vzc2luZyBVbml0CisKK1RoaXMgbm9kZSByZXByZXNlbnRzIHRoZSByZWdpb24gb2YgRENTUiBzcGFjZSBhbGxvY2F0ZWQgdG8gdGhlIEVQVQorCitQUk9QRVJUSUVTCisKKwktIGNvbXBhdGlibGUKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8c3RyaW5nPgorCURlZmluaXRpb246IE11c3QgaW5jbHVkZSAiZnNsLGRjc3ItZXB1IgorCisJLSBpbnRlcnJ1cHRzCisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHByb3BfZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOiAgU3BlY2lmaWVzIHRoZSBpbnRlcnJ1cHRzIGdlbmVyYXRlZCBieSB0aGUgRVBVLgorCVRoZSB2YWx1ZSBvZiB0aGUgaW50ZXJydXB0cyBwcm9wZXJ0eSBjb25zaXN0cyBvZiB0aHJlZQorCWludGVycnVwdCBzcGVjaWZpZXJzLiBUaGUgZm9ybWF0IG9mIHRoZSBzcGVjaWZpZXIgaXMgZGVmaW5lZAorCWJ5IHRoZSBiaW5kaW5nIGRvY3VtZW50IGRlc2NyaWJpbmcgdGhlIG5vZGUncyBpbnRlcnJ1cHQgcGFyZW50LgorCisJVGhlIEVQVSBjb3VudGVycyBjYW4gYmUgY29uZmlndXJlZCB0byBhc3NlcnQgdGhlIHBlcmZvcm1hbmNlCisJbW9uaXRvciBpbnRlcnJ1cHQgc2lnbmFsIGJhc2VkIG9uIGVpdGhlciBjb3VudGVyIG92ZXJmbG93IG9yIHZhbHVlCisJbWF0Y2guIFdoaWNoIGNvdW50ZXIgYXNzZXJ0ZWQgdGhlIGludGVycnVwdCBpcyBjYXB0dXJlZCBpbiBhbiBFUFUKKwlDb3VudGVyIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIgKEVQQ1BVSVNSKS4KKworCVRoZSBFUFUgdW5pdCBjYW4gYWxzbyBiZSBjb25maWd1cmVkIHRvIGFzc2VydCBlaXRoZXIgb3IgYm90aCBvZgorCXR3byBpbnRlcnJ1cHQgc2lnbmFscyBiYXNlZCBvbiBkZWJ1ZyBldmVudCBzb3VyY2VzIHdpdGhpbiB0aGUgU29DLgorCVRoZSBpbnRlcnJ1cHQgc2lnbmFscyBhcmUgZXB1X3h0X2ludDAgYW5kIGVwdV94dF9pbnQxLgorCVdoaWNoIGV2ZW50IHNvdXJjZSBhc3NlcnRlZCB0aGUgaW50ZXJydXB0IGlzIGNhcHR1cmVkIGluIGFuIEVQVQorCUludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIgKEVQSVNSMCxFUElTUjEpLgorCisJSW50ZXJydXB0IG51bWJlcnMgYXJlIGxpc3RlZCBpbiBvcmRlciAocGVyZm1vbiwgZXZlbnQwLCBldmVudDEpLgorCisJLSBpbnRlcnJ1cHQtcGFyZW50CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHBoYW5kbGU+CisJRGVmaW5pdGlvbjogQSBzaW5nbGUgPHBoYW5kbGU+IHZhbHVlIHRoYXQgcG9pbnRzCisJdG8gdGhlIGludGVycnVwdCBwYXJlbnQgdG8gd2hpY2ggdGhlIGNoaWxkIGRvbWFpbgorCWlzIGJlaW5nIG1hcHBlZC4gVmFsdWUgbXVzdCBiZSAiJm1waWMiCisKKwktIHJlZworCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisJRGVmaW5pdGlvbjogQSBzdGFuZGFyZCBwcm9wZXJ0eS4gIFNwZWNpZmllcyB0aGUgcGh5c2ljYWwgYWRkcmVzcworCW9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSBEQ1NSIHNwYWNlIHJlZ2lzdGVycyBvZiB0aGUgZGV2aWNlCisJY29uZmlndXJhdGlvbiBibG9jay4KKworRVhBTVBMRQorCWRjc3ItZXB1QDAgeworCQljb21wYXRpYmxlID0gImZzbCxkY3NyLWVwdSI7CisJCWludGVycnVwdHMgPSA8NTIgMiAwIDAKKwkJCSAgICAgIDg0IDIgMCAwCisJCQkgICAgICA4NSAyIDAgMD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1waWM+OworCQlyZWcgPSA8MHgwIDB4MTAwMD47CisJfTsKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK05leHVzIFBvcnQgQ29udHJvbGxlcgorCitUaGlzIG5vZGUgcmVwcmVzZW50cyB0aGUgcmVnaW9uIG9mIERDU1Igc3BhY2UgYWxsb2NhdGVkIHRvIHRoZSBOUEMKKworUFJPUEVSVElFUworCisJLSBjb21wYXRpYmxlCisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHN0cmluZz4KKwlEZWZpbml0aW9uOiBNdXN0IGluY2x1ZGUgImZzbCxkY3NyLW5wYyIKKworCS0gcmVnCisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiAgU3BlY2lmaWVzIHRoZSBwaHlzaWNhbCBhZGRyZXNzCisJb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIERDU1Igc3BhY2UgcmVnaXN0ZXJzIG9mIHRoZSBkZXZpY2UKKwljb25maWd1cmF0aW9uIGJsb2NrLgorCVRoZSBOZXh1cyBQb3J0IGNvbnRyb2xsZXIgb2NjdXBpZXMgdHdvIHJlZ2lvbnMgaW4gdGhlIERDU1Igc3BhY2UKKwl3aXRoIGRpc3RpbmN0IGZ1bmN0aW9uYWxpdHkuCisKKwlUaGUgZmlyc3QgcmVnaXN0ZXIgcmFuZ2UgZGVzY3JpYmVzIHRoZSBOZXh1cyBQb3J0IENvbnRyb2xsZXIKKwljb250cm9sIGFuZCBzdGF0dXMgcmVnaXN0ZXJzLgorCisJVGhlIHNlY29uZCByZWdpc3RlciByYW5nZSBkZXNjcmliZXMgdGhlIE5leHVzIFBvcnQgQ29udHJvbGxlcgorCWludGVybmFsIHRyYWNlIGJ1ZmZlci4gVGhlIE5QQyB0cmFjZSBidWZmZXIgaXMgYSBzbWFsbCBtZW1vcnkgYnVmZmVyCisJd2hpY2ggc3RhZ2VzIHRoZSBuZXh1cyB0cmFjZSBkYXRhIGZvciB0cmFuc21pc3Npb24gdmlhIHRoZSBBdXJvcmEgcG9ydAorCW9yIHRvIGEgRERSIGJhc2VkIHRyYWNlIGJ1ZmZlci4gSW4gc29tZSBjb25maWd1cmF0aW9ucyB0aGUgTlBDIHRyYWNlCisJYnVmZmVyIGNhbiBiZSB0aGUgb25seSB0cmFjZSBidWZmZXIgdXNlZC4KKworCitFWEFNUExFCisJCWRjc3ItbnBjIHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLGRjc3ItbnBjIjsKKwkJCXJlZyA9IDwweDEwMDAgMHgxMDAwIDB4MTAwMDAwMCAweDgwMDA+OworCQl9OworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorTmV4dXMgQ29uY2VudHJhdG9yCisKK1RoaXMgbm9kZSByZXByZXNlbnRzIHRoZSByZWdpb24gb2YgRENTUiBzcGFjZSBhbGxvY2F0ZWQgdG8gdGhlIE5YQworCitQUk9QRVJUSUVTCisKKwktIGNvbXBhdGlibGUKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8c3RyaW5nPgorCURlZmluaXRpb246IE11c3QgaW5jbHVkZSAiZnNsLGRjc3ItbnhjIgorCisJLSByZWcKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IEEgc3RhbmRhcmQgcHJvcGVydHkuICBTcGVjaWZpZXMgdGhlIHBoeXNpY2FsIGFkZHJlc3MKKwlvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgRENTUiBzcGFjZSByZWdpc3RlcnMgb2YgdGhlIGRldmljZQorCWNvbmZpZ3VyYXRpb24gYmxvY2suCisKK0VYQU1QTEUKKwkJZGNzci1ueGNAMjAwMCB7CisJCQljb21wYXRpYmxlID0gImZzbCxkY3NyLW54YyI7CisJCQlyZWcgPSA8MHgyMDAwIDB4MTAwMD47CisJCX07Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ29yZU5ldCBEZWJ1ZyBDb250cm9sbGVyCisKK1RoaXMgbm9kZSByZXByZXNlbnRzIHRoZSByZWdpb24gb2YgRENTUiBzcGFjZSBhbGxvY2F0ZWQgdG8KK3RoZSBDb3JlTmV0IERlYnVnIGNvbnRyb2xsZXIuCisKK1BST1BFUlRJRVMKKworCS0gY29tcGF0aWJsZQorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxzdHJpbmc+CisJRGVmaW5pdGlvbjogTXVzdCBpbmNsdWRlICJmc2wsZGNzci1jb3JlbmV0IgorCisJLSByZWcKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IEEgc3RhbmRhcmQgcHJvcGVydHkuICBTcGVjaWZpZXMgdGhlIHBoeXNpY2FsIGFkZHJlc3MKKwlvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgRENTUiBzcGFjZSByZWdpc3RlcnMgb2YgdGhlIGRldmljZQorCWNvbmZpZ3VyYXRpb24gYmxvY2suCisJVGhlIENvcmVOZXQgRGVidWcgY29udHJvbGxlciBvY2N1cGllcyB0d28gcmVnaW9ucyBpbiB0aGUgRENTUiBzcGFjZQorCXdpdGggZGlzdGluY3QgZnVuY3Rpb25hbGl0eS4KKworCVRoZSBmaXJzdCByZWdpc3RlciByYW5nZSBkZXNjcmliZXMgdGhlIENvcmVOZXQgRGVidWcgQ29udHJvbGxlcgorCWZ1bmN0aW9uYWx0eSB0byBwZXJmb3JtIHRyYW5zYWN0aW9uIGFuZCB0cmFuc2FjdGlvbiBhdHRyaWJ1dGUgbWF0Y2hlcy4KKworCVRoZSBzZWNvbmQgcmVnaXN0ZXIgcmFuZ2UgZGVzY3JpYmVzIHRoZSBDb3JlTmV0IERlYnVnIENvbnRyb2xsZXIKKwlmdW5jdGlvbmFsdHkgdG8gdHJpZ2dlciBldmVudCBub3RpZmljYXRpb25zIGFuZCBkZWJ1ZyB0cmFjZXMuCisKK0VYQU1QTEUKKwkJZGNzci1jb3JlbmV0IHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLGRjc3ItY29yZW5ldCI7CisJCQlyZWcgPSA8MHg4MDAwIDB4MTAwMCAweEIwMDAwIDB4MTAwMD47CisJCX07CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitEYXRhIFBhdGggRGVidWcgY29udHJvbGxlcgorCitUaGlzIG5vZGUgcmVwcmVzZW50cyB0aGUgcmVnaW9uIG9mIERDU1Igc3BhY2UgYWxsb2NhdGVkIHRvCit0aGUgRFBBQSBEZWJ1ZyBDb250cm9sbGVyLiBUaGlzIGNvbnRyb2xsZXIgY29udHJvbHMgZGVidWcgY29uZmlndXJhdGlvbgorZm9yIHRoZSBRTUFOIGFuZCBGTUFOIGJsb2Nrcy4KKworUFJPUEVSVElFUworCisJLSBjb21wYXRpYmxlCisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHN0cmluZz4KKwlEZWZpbml0aW9uOiBNdXN0IGluY2x1ZGUgYm90aCBhbiBpZGVudGlmaWVyIHNwZWNpZmljIHRvIHRoZSBTb0MKKwlvciBEZWJ1ZyBJUCBvZiB0aGUgZm9ybSAiZnNsLDxzb2M+LWRjc3ItZHBhYSIgaW4gYWRkaXRpb24gdG8gdGhlCisJZ2VuZXJpYyBjb21wYXRpYmxlIHN0cmluZyAiZnNsLGRjc3ItZHBhYSIuCisKKwktIHJlZworCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisJRGVmaW5pdGlvbjogQSBzdGFuZGFyZCBwcm9wZXJ0eS4gIFNwZWNpZmllcyB0aGUgcGh5c2ljYWwgYWRkcmVzcworCW9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSBEQ1NSIHNwYWNlIHJlZ2lzdGVycyBvZiB0aGUgZGV2aWNlCisJY29uZmlndXJhdGlvbiBibG9jay4KKworRVhBTVBMRQorCQlkY3NyLWRwYWFAOTAwMCB7CisJCQljb21wYXRpYmxlID0gImZzbCxwNDA4MC1kY3NyLWRwYWEiLCAiZnNsLGRjc3ItZHBhYSI7CisJCQlyZWcgPSA8MHg5MDAwIDB4MTAwMD47CisJCX07CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitPQ2VhTiBEZWJ1ZyBjb250cm9sbGVyCisKK1RoaXMgbm9kZSByZXByZXNlbnRzIHRoZSByZWdpb24gb2YgRENTUiBzcGFjZSBhbGxvY2F0ZWQgdG8KK3RoZSBPQ04gRGVidWcgQ29udHJvbGxlci4KKworUFJPUEVSVElFUworCisJLSBjb21wYXRpYmxlCisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHN0cmluZz4KKwlEZWZpbml0aW9uOiBNdXN0IGluY2x1ZGUgYm90aCBhbiBpZGVudGlmaWVyIHNwZWNpZmljIHRvIHRoZSBTb0MKKwlvciBEZWJ1ZyBJUCBvZiB0aGUgZm9ybSAiZnNsLDxzb2M+LWRjc3Itb2NuIiBpbiBhZGRpdGlvbiB0byB0aGUKKwlnZW5lcmljIGNvbXBhdGlibGUgc3RyaW5nICJmc2wsZGNzci1vY24iLgorCisJLSByZWcKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IEEgc3RhbmRhcmQgcHJvcGVydHkuICBTcGVjaWZpZXMgdGhlIHBoeXNpY2FsIGFkZHJlc3MKKwlvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgRENTUiBzcGFjZSByZWdpc3RlcnMgb2YgdGhlIGRldmljZQorCWNvbmZpZ3VyYXRpb24gYmxvY2suCisKK0VYQU1QTEUKKwkJZGNzci1vY25AMTEwMDAgeworCQkJY29tcGF0aWJsZSA9ICJmc2wscDQwODAtZGNzci1vY24iLCAiZnNsLGRjc3Itb2NuIjsKKwkJCXJlZyA9IDwweDExMDAwIDB4MTAwMD47CisJCX07CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitERFIgQ29udHJvbGxlciBEZWJ1ZyBjb250cm9sbGVyCisKK1RoaXMgbm9kZSByZXByZXNlbnRzIHRoZSByZWdpb24gb2YgRENTUiBzcGFjZSBhbGxvY2F0ZWQgdG8KK3RoZSBPQ04gRGVidWcgQ29udHJvbGxlci4KKworUFJPUEVSVElFUworCisJLSBjb21wYXRpYmxlCisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHN0cmluZz4KKwlEZWZpbml0aW9uOiBNdXN0IGluY2x1ZGUgImZzbCxkY3NyLWRkciIKKworCS0gZGV2LWhhbmRsZQorCVVzYWdlOiByZXF1aXJlZAorCURlZmluaXRpb246IEEgcGhhbmRsZSB0byBhc3NvY2lhdGUgdGhpcyBkZWJ1ZyBub2RlIHdpdGggaXRzCisJY29tcG9uZW50IGNvbnRyb2xsZXIuCisKKwktIHJlZworCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisJRGVmaW5pdGlvbjogQSBzdGFuZGFyZCBwcm9wZXJ0eS4gIFNwZWNpZmllcyB0aGUgcGh5c2ljYWwgYWRkcmVzcworCW9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSBEQ1NSIHNwYWNlIHJlZ2lzdGVycyBvZiB0aGUgZGV2aWNlCisJY29uZmlndXJhdGlvbiBibG9jay4KKworRVhBTVBMRQorCQlkY3NyLWRkckAxMjAwMCB7CisJCQljb21wYXRpYmxlID0gImZzbCxkY3NyLWRkciI7CisJCQlkZXYtaGFuZGxlID0gPCZkZHIxPjsKKwkJCXJlZyA9IDwweDEyMDAwIDB4MTAwMD47CisJCX07CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitOZXh1cyBBdXJvcmEgTGluayBDb250cm9sbGVyCisKK1RoaXMgbm9kZSByZXByZXNlbnRzIHRoZSByZWdpb24gb2YgRENTUiBzcGFjZSBhbGxvY2F0ZWQgdG8KK3RoZSBOQUwgQ29udHJvbGxlci4KKworUFJPUEVSVElFUworCisJLSBjb21wYXRpYmxlCisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHN0cmluZz4KKwlEZWZpbml0aW9uOiBNdXN0IGluY2x1ZGUgYm90aCBhbiBpZGVudGlmaWVyIHNwZWNpZmljIHRvIHRoZSBTb0MKKwlvciBEZWJ1ZyBJUCBvZiB0aGUgZm9ybSAiZnNsLDxzb2M+LWRjc3ItbmFsIiBpbiBhZGRpdGlvbiB0byB0aGUKKwlnZW5lcmljIGNvbXBhdGlibGUgc3RyaW5nICJmc2wsZGNzci1uYWwiLgorCisJLSByZWcKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IEEgc3RhbmRhcmQgcHJvcGVydHkuICBTcGVjaWZpZXMgdGhlIHBoeXNpY2FsIGFkZHJlc3MKKwlvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgRENTUiBzcGFjZSByZWdpc3RlcnMgb2YgdGhlIGRldmljZQorCWNvbmZpZ3VyYXRpb24gYmxvY2suCisKK0VYQU1QTEUKKwkJZGNzci1uYWxAMTgwMDAgeworCQkJY29tcGF0aWJsZSA9ICJmc2wscDQwODAtZGNzci1uYWwiLCAiZnNsLGRjc3ItbmFsIjsKKwkJCXJlZyA9IDwweDE4MDAwIDB4MTAwMD47CisJCX07CisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1J1biBDb250cm9sIGFuZCBQb3dlciBNYW5hZ2VtZW50CisKK1RoaXMgbm9kZSByZXByZXNlbnRzIHRoZSByZWdpb24gb2YgRENTUiBzcGFjZSBhbGxvY2F0ZWQgdG8KK3RoZSBSQ1BNIERlYnVnIENvbnRyb2xsZXIuIFRoaXMgZnVuY3Rpb25saXR5IGlzIGxpbWl0ZWQgdG8gdGhlCitjb250cm9sIHRoZSBkZWJ1ZyBvcGVyYXRpb25zIG9mIHRoZSBTb0MgYW5kIGNvcmVzLgorCitQUk9QRVJUSUVTCisKKwktIGNvbXBhdGlibGUKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8c3RyaW5nPgorCURlZmluaXRpb246IE11c3QgaW5jbHVkZSBib3RoIGFuIGlkZW50aWZpZXIgc3BlY2lmaWMgdG8gdGhlIFNvQworCW9yIERlYnVnIElQIG9mIHRoZSBmb3JtICJmc2wsPHNvYz4tZGNzci1yY3BtIiBpbiBhZGRpdGlvbiB0byB0aGUKKwlnZW5lcmljIGNvbXBhdGlibGUgc3RyaW5nICJmc2wsZGNzci1yY3BtIi4KKworCS0gcmVnCisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiAgU3BlY2lmaWVzIHRoZSBwaHlzaWNhbCBhZGRyZXNzCisJb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIERDU1Igc3BhY2UgcmVnaXN0ZXJzIG9mIHRoZSBkZXZpY2UKKwljb25maWd1cmF0aW9uIGJsb2NrLgorCitFWEFNUExFCisJCWRjc3ItcmNwbUAyMjAwMCB7CisJCQljb21wYXRpYmxlID0gImZzbCxwNDA4MC1kY3NyLXJjcG0iLCAiZnNsLGRjc3ItcmNwbSI7CisJCQlyZWcgPSA8MHgyMjAwMCAweDEwMDA+OworCQl9OworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ29yZSBTZXJ2aWNlIEJyaWRnZSBQcm94eQorCitUaGlzIG5vZGUgcmVwcmVzZW50cyB0aGUgcmVnaW9uIG9mIERDU1Igc3BhY2UgYWxsb2NhdGVkIHRvCit0aGUgQ29yZSBTZXJ2aWNlIEJyaWRnZSBQcm94aWVzLgorVGhlcmUgaXMgb25lIENvcmUgU2VydmljZSBCcmlkZ2UgUHJveHkgZGV2aWNlIGZvciBlYWNoIENQVSBpbiB0aGUgc3lzdGVtLgorVGhpcyBmdW5jdGlvbmxpdHkgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBkZWJ1ZyBvcGVyYXRpb25zIG9mIHRoZSBDUFUuCisKK1BST1BFUlRJRVMKKworCS0gY29tcGF0aWJsZQorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxzdHJpbmc+CisJRGVmaW5pdGlvbjogTXVzdCBpbmNsdWRlIGJvdGggYW4gaWRlbnRpZmllciBzcGVjaWZpYyB0byB0aGUgY3B1CisJb2YgdGhlIGZvcm0gImZzbCxkY3NyLTxjcHU+LXNiLXByb3h5IiBpbiBhZGRpdGlvbiB0byB0aGUKKwlnZW5lcmljIGNvbXBhdGlibGUgc3RyaW5nICJmc2wsZGNzci1jcHUtc2ItcHJveHkiLgorCisJLSBjcHUtaGFuZGxlCisJVXNhZ2U6IHJlcXVpcmVkCisJRGVmaW5pdGlvbjogQSBwaGFuZGxlIHRvIGFzc29jaWF0ZSB0aGlzIGRlYnVnIG5vZGUgd2l0aCBpdHMgY3B1LgorCisJLSByZWcKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IEEgc3RhbmRhcmQgcHJvcGVydHkuICBTcGVjaWZpZXMgdGhlIHBoeXNpY2FsIGFkZHJlc3MKKwlvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgRENTUiBzcGFjZSByZWdpc3RlcnMgb2YgdGhlIGRldmljZQorCWNvbmZpZ3VyYXRpb24gYmxvY2suCisKK0VYQU1QTEUKKwkJZGNzci1jcHUtc2ItcHJveHlANDAwMDAgeworCQkJY29tcGF0aWJsZSA9ICJmc2wsZGNzci1lNTAwbWMtc2ItcHJveHkiLAorCQkJCSAgICAgImZzbCxkY3NyLWNwdS1zYi1wcm94eSI7CisJCQljcHUtaGFuZGxlID0gPCZjcHUwPjsKKwkJCXJlZyA9IDwweDQwMDAwIDB4MTAwMD47CisJCX07CisJCWRjc3ItY3B1LXNiLXByb3h5QDQxMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLGRjc3ItZTUwMG1jLXNiLXByb3h5IiwKKwkJCQkgICAgICJmc2wsZGNzci1jcHUtc2ItcHJveHkiOworCQkJY3B1LWhhbmRsZSA9IDwmY3B1MT47CisJCQlyZWcgPSA8MHg0MTAwMCAweDEwMDA+OworCQl9OworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2RpdS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvZGl1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjZjYjZkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2RpdS50eHQKQEAgLTAsMCArMSwzNCBAQAorKiBGcmVlc2NhbGUgRGlzcGxheSBJbnRlcmZhY2UgVW5pdAorCitUaGUgRnJlZXNjYWxlIERJVSBpcyBhIExDRCBjb250cm9sbGVyLCB3aXRoIHByb3BlciBoYXJkd2FyZSwgaXQgY2FuIGFsc28KK2RyaXZlIERWSSBtb25pdG9ycy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiZnNsLGRpdSIgb3IgImZzbCxtcGM1MTIxLWRpdSIuCistIHJlZyA6IHNob3VsZCBjb250YWluIGF0IGxlYXN0IGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgRElVIHJlZ2lzdGVyCisgIHNldC4KKy0gaW50ZXJydXB0cyA6IG9uZSBESVUgaW50ZXJydXB0IHNob3VsZCBiZSBkZXNjcmliZWQgaGVyZS4KKy0gaW50ZXJydXB0LXBhcmVudCA6IHRoZSBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgdGhhdAorICBzZXJ2aWNlcyBpbnRlcnJ1cHRzIGZvciB0aGlzIGRldmljZS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gZWRpZCA6IHZlcmJhdGltIEVESUQgZGF0YSBibG9jayBkZXNjcmliaW5nIGF0dGFjaGVkIGRpc3BsYXkuCisgIERhdGEgZnJvbSB0aGUgZGV0YWlsZWQgdGltaW5nIGRlc2NyaXB0b3Igd2lsbCBiZSB1c2VkIHRvCisgIHByb2dyYW0gdGhlIGRpc3BsYXkgY29udHJvbGxlci4KKworRXhhbXBsZSAoTVBDODYxMEhQQ0QpOgorCWRpc3BsYXlAMmMwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxkaXUiOworCQlyZWcgPSA8MHgyYzAwMCAxMDA+OworCQlpbnRlcnJ1cHRzID0gPDcyIDI+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZtcGljPjsKKwl9OworCitFeGFtcGxlIGZvciBNUEM1MTIxOgorCWRpc3BsYXlAMjEwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzUxMjEtZGl1IjsKKwkJcmVnID0gPDB4MjEwMCAweDEwMD47CisJCWludGVycnVwdHMgPSA8NjQgMHg4PjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmaXBpYz47CisJCWVkaWQgPSBbZWRpZC1kYXRhXTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2RtYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvZG1hLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmMxYjAxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2RtYS50eHQKQEAgLTAsMCArMSwyMDggQEAKKyogRnJlZXNjYWxlIERNQSBDb250cm9sbGVycworCisqKiBGcmVlc2NhbGUgRWxvIERNQSBDb250cm9sbGVyCisgICBUaGlzIGlzIGEgbGl0dGxlLWVuZGlhbiA0LWNoYW5uZWwgRE1BIGNvbnRyb2xsZXIsIHVzZWQgaW4gRnJlZXNjYWxlIG1wYzgzeHgKKyAgIHNlcmllcyBjaGlwcyBzdWNoIGFzIG1wYzgzMTUsIG1wYzgzNDksIG1wYzgzNzkgZXRjLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgICAgICAgIDogbXVzdCBpbmNsdWRlICJmc2wsZWxvLWRtYSIKKy0gcmVnICAgICAgICAgICAgICAgOiBETUEgR2VuZXJhbCBTdGF0dXMgUmVnaXN0ZXIsIGkuZS4gREdTUiB3aGljaCBjb250YWlucworICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyBmb3IgYWxsIHRoZSA0IERNQSBjaGFubmVscworLSByYW5nZXMgICAgICAgICAgICA6IGRlc2NyaWJlcyB0aGUgbWFwcGluZyBiZXR3ZWVuIHRoZSBhZGRyZXNzIHNwYWNlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgIERNQSBjaGFubmVscyBhbmQgdGhlIGFkZHJlc3Mgc3BhY2Ugb2YgdGhlIERNQSBjb250cm9sbGVyCistIGNlbGwtaW5kZXggICAgICAgIDogY29udHJvbGxlciBpbmRleC4gIDAgZm9yIGNvbnRyb2xsZXIgQCAweDgxMDAKKy0gaW50ZXJydXB0cyAgICAgICAgOiBpbnRlcnJ1cHQgc3BlY2lmaWVyIGZvciBETUEgSVJRCistIGludGVycnVwdC1wYXJlbnQgIDogb3B0aW9uYWwsIGlmIG5lZWRlZCBmb3IgaW50ZXJydXB0IG1hcHBpbmcKKworLSBETUEgY2hhbm5lbCBub2RlczoKKyAgICAgICAgLSBjb21wYXRpYmxlICAgICAgICA6IG11c3QgaW5jbHVkZSAiZnNsLGVsby1kbWEtY2hhbm5lbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHNlZSBub3RlIGJlbG93LgorICAgICAgICAtIHJlZyAgICAgICAgICAgICAgIDogRE1BIGNoYW5uZWwgc3BlY2lmaWMgcmVnaXN0ZXJzCisgICAgICAgIC0gY2VsbC1pbmRleCAgICAgICAgOiBETUEgY2hhbm5lbCBpbmRleCBzdGFydHMgYXQgMC4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAgICAgICAgLSBpbnRlcnJ1cHRzICAgICAgICA6IGludGVycnVwdCBzcGVjaWZpZXIgZm9yIERNQSBjaGFubmVsIElSUQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uIDgzeHggdGhpcyBpcyBleHBlY3RlZCB0byBiZSBpZGVudGljYWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBpbnRlcnJ1cHRzIHByb3BlcnR5IG9mIHRoZSBwYXJlbnQgbm9kZSkKKyAgICAgICAgLSBpbnRlcnJ1cHQtcGFyZW50ICA6IG9wdGlvbmFsLCBpZiBuZWVkZWQgZm9yIGludGVycnVwdCBtYXBwaW5nCisKK0V4YW1wbGU6CisJZG1hQDgyYTggeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzgzNDktZG1hIiwgImZzbCxlbG8tZG1hIjsKKwkJcmVnID0gPDB4ODJhOCA0PjsKKwkJcmFuZ2VzID0gPDAgMHg4MTAwIDB4MWE0PjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmaXBpYz47CisJCWludGVycnVwdHMgPSA8NzEgOD47CisJCWNlbGwtaW5kZXggPSA8MD47CisJCWRtYS1jaGFubmVsQDAgeworCQkJY29tcGF0aWJsZSA9ICJmc2wsbXBjODM0OS1kbWEtY2hhbm5lbCIsICJmc2wsZWxvLWRtYS1jaGFubmVsIjsKKwkJCWNlbGwtaW5kZXggPSA8MD47CisJCQlyZWcgPSA8MCAweDgwPjsKKwkJCWludGVycnVwdC1wYXJlbnQgPSA8JmlwaWM+OworCQkJaW50ZXJydXB0cyA9IDw3MSA4PjsKKwkJfTsKKwkJZG1hLWNoYW5uZWxAODAgeworCQkJY29tcGF0aWJsZSA9ICJmc2wsbXBjODM0OS1kbWEtY2hhbm5lbCIsICJmc2wsZWxvLWRtYS1jaGFubmVsIjsKKwkJCWNlbGwtaW5kZXggPSA8MT47CisJCQlyZWcgPSA8MHg4MCAweDgwPjsKKwkJCWludGVycnVwdC1wYXJlbnQgPSA8JmlwaWM+OworCQkJaW50ZXJydXB0cyA9IDw3MSA4PjsKKwkJfTsKKwkJZG1hLWNoYW5uZWxAMTAwIHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzgzNDktZG1hLWNoYW5uZWwiLCAiZnNsLGVsby1kbWEtY2hhbm5lbCI7CisJCQljZWxsLWluZGV4ID0gPDI+OworCQkJcmVnID0gPDB4MTAwIDB4ODA+OworCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmaXBpYz47CisJCQlpbnRlcnJ1cHRzID0gPDcxIDg+OworCQl9OworCQlkbWEtY2hhbm5lbEAxODAgeworCQkJY29tcGF0aWJsZSA9ICJmc2wsbXBjODM0OS1kbWEtY2hhbm5lbCIsICJmc2wsZWxvLWRtYS1jaGFubmVsIjsKKwkJCWNlbGwtaW5kZXggPSA8Mz47CisJCQlyZWcgPSA8MHgxODAgMHg4MD47CisJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpcGljPjsKKwkJCWludGVycnVwdHMgPSA8NzEgOD47CisJCX07CisJfTsKKworKiogRnJlZXNjYWxlIEVsb1BsdXMgRE1BIENvbnRyb2xsZXIKKyAgIFRoaXMgaXMgYSA0LWNoYW5uZWwgRE1BIGNvbnRyb2xsZXIgd2l0aCBleHRlbmRlZCBhZGRyZXNzZXMgYW5kIGNoYWluaW5nLAorICAgbWFpbmx5IHVzZWQgaW4gRnJlZXNjYWxlIG1wYzg1eHgvODZ4eCwgUHh4eCBhbmQgQlNDIHNlcmllcyBjaGlwcywgc3VjaCBhcworICAgbXBjODU0MCwgbXBjODY0MSBwNDA4MCwgYnNjOTEzMSBldGMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSAgICAgICAgOiBtdXN0IGluY2x1ZGUgImZzbCxlbG9wbHVzLWRtYSIKKy0gcmVnICAgICAgICAgICAgICAgOiBETUEgR2VuZXJhbCBTdGF0dXMgUmVnaXN0ZXIsIGkuZS4gREdTUiB3aGljaCBjb250YWlucworICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyBmb3IgYWxsIHRoZSA0IERNQSBjaGFubmVscworLSBjZWxsLWluZGV4ICAgICAgICA6IGNvbnRyb2xsZXIgaW5kZXguICAwIGZvciBjb250cm9sbGVyIEAgMHgyMTAwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSBmb3IgY29udHJvbGxlciBAIDB4YzAwMAorLSByYW5nZXMgICAgICAgICAgICA6IGRlc2NyaWJlcyB0aGUgbWFwcGluZyBiZXR3ZWVuIHRoZSBhZGRyZXNzIHNwYWNlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgIERNQSBjaGFubmVscyBhbmQgdGhlIGFkZHJlc3Mgc3BhY2Ugb2YgdGhlIERNQSBjb250cm9sbGVyCisKKy0gRE1BIGNoYW5uZWwgbm9kZXM6CisgICAgICAgIC0gY29tcGF0aWJsZSAgICAgICAgOiBtdXN0IGluY2x1ZGUgImZzbCxlbG9wbHVzLWRtYS1jaGFubmVsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgc2VlIG5vdGUgYmVsb3cuCisgICAgICAgIC0gY2VsbC1pbmRleCAgICAgICAgOiBETUEgY2hhbm5lbCBpbmRleCBzdGFydHMgYXQgMC4KKyAgICAgICAgLSByZWcgICAgICAgICAgICAgICA6IERNQSBjaGFubmVsIHNwZWNpZmljIHJlZ2lzdGVycworICAgICAgICAtIGludGVycnVwdHMgICAgICAgIDogaW50ZXJydXB0IHNwZWNpZmllciBmb3IgRE1BIGNoYW5uZWwgSVJRCisgICAgICAgIC0gaW50ZXJydXB0LXBhcmVudCAgOiBvcHRpb25hbCwgaWYgbmVlZGVkIGZvciBpbnRlcnJ1cHQgbWFwcGluZworCitFeGFtcGxlOgorCWRtYUAyMTMwMCB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJY29tcGF0aWJsZSA9ICJmc2wsbXBjODU0MC1kbWEiLCAiZnNsLGVsb3BsdXMtZG1hIjsKKwkJcmVnID0gPDB4MjEzMDAgND47CisJCXJhbmdlcyA9IDwwIDB4MjExMDAgMHgyMDA+OworCQljZWxsLWluZGV4ID0gPDA+OworCQlkbWEtY2hhbm5lbEAwIHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzg1NDAtZG1hLWNoYW5uZWwiLCAiZnNsLGVsb3BsdXMtZG1hLWNoYW5uZWwiOworCQkJcmVnID0gPDAgMHg4MD47CisJCQljZWxsLWluZGV4ID0gPDA+OworCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmbXBpYz47CisJCQlpbnRlcnJ1cHRzID0gPDIwIDI+OworCQl9OworCQlkbWEtY2hhbm5lbEA4MCB7CisJCQljb21wYXRpYmxlID0gImZzbCxtcGM4NTQwLWRtYS1jaGFubmVsIiwgImZzbCxlbG9wbHVzLWRtYS1jaGFubmVsIjsKKwkJCXJlZyA9IDwweDgwIDB4ODA+OworCQkJY2VsbC1pbmRleCA9IDwxPjsKKwkJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1waWM+OworCQkJaW50ZXJydXB0cyA9IDwyMSAyPjsKKwkJfTsKKwkJZG1hLWNoYW5uZWxAMTAwIHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzg1NDAtZG1hLWNoYW5uZWwiLCAiZnNsLGVsb3BsdXMtZG1hLWNoYW5uZWwiOworCQkJcmVnID0gPDB4MTAwIDB4ODA+OworCQkJY2VsbC1pbmRleCA9IDwyPjsKKwkJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1waWM+OworCQkJaW50ZXJydXB0cyA9IDwyMiAyPjsKKwkJfTsKKwkJZG1hLWNoYW5uZWxAMTgwIHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzg1NDAtZG1hLWNoYW5uZWwiLCAiZnNsLGVsb3BsdXMtZG1hLWNoYW5uZWwiOworCQkJcmVnID0gPDB4MTgwIDB4ODA+OworCQkJY2VsbC1pbmRleCA9IDwzPjsKKwkJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1waWM+OworCQkJaW50ZXJydXB0cyA9IDwyMyAyPjsKKwkJfTsKKwl9OworCisqKiBGcmVlc2NhbGUgRWxvMyBETUEgQ29udHJvbGxlcgorICAgRE1BIGNvbnRyb2xsZXIgd2hpY2ggaGFzIHNhbWUgZnVuY3Rpb24gYXMgRWxvUGx1cyBleGNlcHQgdGhhdCBFbG8zIGhhcyA4CisgICBjaGFubmVscyB3aGlsZSBFbG9QbHVzIGhhcyBvbmx5IDQsIGl0IGlzIHVzZWQgaW4gRnJlZXNjYWxlIFR4eHggYW5kIEJ4eHgKKyAgIHNlcmllcyBjaGlwcywgc3VjaCBhcyB0MTA0MCwgdDQyNDAsIGI0ODYwLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgICAgICAgIDogbXVzdCBpbmNsdWRlICJmc2wsZWxvMy1kbWEiCistIHJlZyAgICAgICAgICAgICAgIDogY29udGFpbnMgdHdvIGVudHJpZXMgZm9yIERNQSBHZW5lcmFsIFN0YXR1cyBSZWdpc3RlcnMsCisgICAgICAgICAgICAgICAgICAgICAgaS5lLiBER1NSMCB3aGljaCBpbmNsdWRlcyBzdGF0dXMgZm9yIGNoYW5uZWwgMX40LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICBER1NSMSBmb3IgY2hhbm5lbCA1fjgKKy0gcmFuZ2VzICAgICAgICAgICAgOiBkZXNjcmliZXMgdGhlIG1hcHBpbmcgYmV0d2VlbiB0aGUgYWRkcmVzcyBzcGFjZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICBETUEgY2hhbm5lbHMgYW5kIHRoZSBhZGRyZXNzIHNwYWNlIG9mIHRoZSBETUEgY29udHJvbGxlcgorCistIERNQSBjaGFubmVsIG5vZGVzOgorICAgICAgICAtIGNvbXBhdGlibGUgICAgICAgIDogbXVzdCBpbmNsdWRlICJmc2wsZWxvcGx1cy1kbWEtY2hhbm5lbCIKKyAgICAgICAgLSByZWcgICAgICAgICAgICAgICA6IERNQSBjaGFubmVsIHNwZWNpZmljIHJlZ2lzdGVycworICAgICAgICAtIGludGVycnVwdHMgICAgICAgIDogaW50ZXJydXB0IHNwZWNpZmllciBmb3IgRE1BIGNoYW5uZWwgSVJRCisgICAgICAgIC0gaW50ZXJydXB0LXBhcmVudCAgOiBvcHRpb25hbCwgaWYgbmVlZGVkIGZvciBpbnRlcnJ1cHQgbWFwcGluZworCitFeGFtcGxlOgorZG1hQDEwMDMwMCB7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MT47CisJY29tcGF0aWJsZSA9ICJmc2wsZWxvMy1kbWEiOworCXJlZyA9IDwweDEwMDMwMCAweDQ+LAorCSAgICAgIDwweDEwMDYwMCAweDQ+OworCXJhbmdlcyA9IDwweDAgMHgxMDAxMDAgMHg1MDA+OworCWRtYS1jaGFubmVsQDAgeworCQljb21wYXRpYmxlID0gImZzbCxlbG9wbHVzLWRtYS1jaGFubmVsIjsKKwkJcmVnID0gPDB4MCAweDgwPjsKKwkJaW50ZXJydXB0cyA9IDwyOCAyIDAgMD47CisJfTsKKwlkbWEtY2hhbm5lbEA4MCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGVsb3BsdXMtZG1hLWNoYW5uZWwiOworCQlyZWcgPSA8MHg4MCAweDgwPjsKKwkJaW50ZXJydXB0cyA9IDwyOSAyIDAgMD47CisJfTsKKwlkbWEtY2hhbm5lbEAxMDAgeworCQljb21wYXRpYmxlID0gImZzbCxlbG9wbHVzLWRtYS1jaGFubmVsIjsKKwkJcmVnID0gPDB4MTAwIDB4ODA+OworCQlpbnRlcnJ1cHRzID0gPDMwIDIgMCAwPjsKKwl9OworCWRtYS1jaGFubmVsQDE4MCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGVsb3BsdXMtZG1hLWNoYW5uZWwiOworCQlyZWcgPSA8MHgxODAgMHg4MD47CisJCWludGVycnVwdHMgPSA8MzEgMiAwIDA+OworCX07CisJZG1hLWNoYW5uZWxAMzAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsZWxvcGx1cy1kbWEtY2hhbm5lbCI7CisJCXJlZyA9IDwweDMwMCAweDgwPjsKKwkJaW50ZXJydXB0cyA9IDw3NiAyIDAgMD47CisJfTsKKwlkbWEtY2hhbm5lbEAzODAgeworCQljb21wYXRpYmxlID0gImZzbCxlbG9wbHVzLWRtYS1jaGFubmVsIjsKKwkJcmVnID0gPDB4MzgwIDB4ODA+OworCQlpbnRlcnJ1cHRzID0gPDc3IDIgMCAwPjsKKwl9OworCWRtYS1jaGFubmVsQDQwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGVsb3BsdXMtZG1hLWNoYW5uZWwiOworCQlyZWcgPSA8MHg0MDAgMHg4MD47CisJCWludGVycnVwdHMgPSA8NzggMiAwIDA+OworCX07CisJZG1hLWNoYW5uZWxANDgwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsZWxvcGx1cy1kbWEtY2hhbm5lbCI7CisJCXJlZyA9IDwweDQ4MCAweDgwPjsKKwkJaW50ZXJydXB0cyA9IDw3OSAyIDAgMD47CisJfTsKK307CisKK05vdGUgb24gRE1BIGNoYW5uZWwgY29tcGF0aWJsZSBwcm9wZXJ0aWVzOiBUaGUgY29tcGF0aWJsZSBwcm9wZXJ0eSBtdXN0IHNheQorImZzbCxlbG8tZG1hLWNoYW5uZWwiIG9yICJmc2wsZWxvcGx1cy1kbWEtY2hhbm5lbCIgdG8gYmUgdXNlZCBieSB0aGUgRWxvIERNQQorZHJpdmVyIChmc2xkbWEpLiAgQW55IERNQSBjaGFubmVsIHVzZWQgYnkgZnNsZG1hIGNhbm5vdCBiZSB1c2VkIGJ5IGFub3RoZXIKK0RNQSBkcml2ZXIsIHN1Y2ggYXMgdGhlIFNTSSBzb3VuZCBkcml2ZXJzIGZvciB0aGUgTVBDODYxMC4gIFRoZXJlZm9yZSwgYW55IERNQQorY2hhbm5lbCB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciBhbm90aGVyIGRyaXZlciBzaG91bGQgbm90IHVzZQorImZzbCxlbG8tZG1hLWNoYW5uZWwiIG9yICJmc2wsZWxvcGx1cy1kbWEtY2hhbm5lbCIuICBGb3IgdGhlIFNTSSBkcml2ZXJzLCBmb3IKK2V4YW1wbGUsIHRoZSBjb21wYXRpYmxlIHByb3BlcnR5IHNob3VsZCBiZSAiZnNsLHNzaS1kbWEtY2hhbm5lbCIuICBTZWUgc3NpLnR4dAorZm9yIG1vcmUgaW5mb3JtYXRpb24uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvZWNtLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9lY20udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1MTRmMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvZWNtLnR4dApAQCAtMCwwICsxLDY0IEBACis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0U1MDAgTEFXICYgQ29oZXJlbmN5IE1vZHVsZSBEZXZpY2UgVHJlZSBCaW5kaW5nCitDb3B5cmlnaHQgKEMpIDIwMDkgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IgSW5jLgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0xvY2FsIEFjY2VzcyBXaW5kb3cgKExBVykgTm9kZQorCitUaGUgTEFXIG5vZGUgcmVwcmVzZW50cyB0aGUgcmVnaW9uIG9mIENDU1Igc3BhY2Ugd2hlcmUgbG9jYWwgYWNjZXNzCit3aW5kb3dzIGFyZSBjb25maWd1cmVkLiAgRm9yIEVDTSBiYXNlZCBkZXZpY2VzIHRoaXMgaXMgdGhlIGZpcnN0IDRrCitvZiBDQ1NSIHNwYWNlIHRoYXQgaW5jbHVkZXMgQ0NTUkJBUiwgQUxUQ0JBUiwgQUxUQ0FSLCBCUFRSLCBhbmQgc29tZQorbnVtYmVyIG9mIGxvY2FsIGFjY2VzcyB3aW5kb3dzIGFzIHNwZWNpZmllZCBieSBmc2wsbnVtLWxhd3MuCisKK1BST1BFUlRJRVMKKworICAtIGNvbXBhdGlibGUKKyAgICAgIFVzYWdlOiByZXF1aXJlZAorICAgICAgVmFsdWUgdHlwZTogPHN0cmluZz4KKyAgICAgIERlZmluaXRpb246IE11c3QgaW5jbHVkZSAiZnNsLGVjbS1sYXciCisKKyAgLSByZWcKKyAgICAgIFVzYWdlOiByZXF1aXJlZAorICAgICAgVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKyAgICAgIERlZmluaXRpb246IEEgc3RhbmRhcmQgcHJvcGVydHkuICBUaGUgdmFsdWUgc3BlY2lmaWVzIHRoZQorICAgICAgICAgIHBoeXNpY2FsIGFkZHJlc3Mgb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIENDU1Igc3BhY2UKKyAgICAgICAgICByZWdpc3RlcnMuCisKKyAgLSBmc2wsbnVtLWxhd3MKKyAgICAgIFVzYWdlOiByZXF1aXJlZAorICAgICAgVmFsdWUgdHlwZTogPHUzMj4KKyAgICAgIERlZmluaXRpb246IFRoZSB2YWx1ZSBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBsb2NhbCBhY2Nlc3MKKyAgICAgICAgICB3aW5kb3dzIGZvciB0aGlzIGRldmljZS4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0U1MDAgQ29oZXJlbmN5IE1vZHVsZSBOb2RlCisKK1RoZSBFNTAwIExBVyBub2RlIHJlcHJlc2VudHMgdGhlIHJlZ2lvbiBvZiBDQ1NSIHNwYWNlIHdoZXJlIEVDTSBjb25maWcKK2FuZCBlcnJvciByZXBvcnRpbmcgcmVnaXN0ZXJzIGV4aXN0LCB0aGlzIGlzIHRoZSBzZWNvbmQgNGsgKDB4MTAwMCkKK29mIENDU1Igc3BhY2UuCisKK1BST1BFUlRJRVMKKworICAtIGNvbXBhdGlibGUKKyAgICAgIFVzYWdlOiByZXF1aXJlZAorICAgICAgVmFsdWUgdHlwZTogPHN0cmluZz4KKyAgICAgIERlZmluaXRpb246IE11c3QgaW5jbHVkZSAiZnNsLENISVAtZWNtIiwgImZzbCxlY20iIHdoZXJlCisgICAgICBDSElQIGlzIHRoZSBwcm9jZXNzb3IgKG1wYzg1NzIsIG1wYzg1NDQsIGV0Yy4pCisKKyAgLSByZWcKKyAgICAgIFVzYWdlOiByZXF1aXJlZAorICAgICAgVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKyAgICAgIERlZmluaXRpb246IEEgc3RhbmRhcmQgcHJvcGVydHkuICBUaGUgdmFsdWUgc3BlY2lmaWVzIHRoZQorICAgICAgICAgIHBoeXNpY2FsIGFkZHJlc3Mgb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIENDU1Igc3BhY2UKKyAgICAgICAgICByZWdpc3RlcnMuCisKKyAgIC0gaW50ZXJydXB0cworICAgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgICBWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCisgICAtIGludGVycnVwdC1wYXJlbnQKKyAgICAgIFVzYWdlOiByZXF1aXJlZAorICAgICAgVmFsdWUgdHlwZTogPHBoYW5kbGU+CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2ZtYW4udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2ZtYW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmYzUzMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvZm1hbi50eHQKQEAgLTAsMCArMSw2MTcgQEAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitGcmVlc2NhbGUgRnJhbWUgTWFuYWdlciBEZXZpY2UgQmluZGluZ3MKKworQ09OVEVOVFMKKyAgLSBGTWFuIE5vZGUKKyAgLSBGTWFuIFBvcnQgTm9kZQorICAtIEZNYW4gTVVSQU0gTm9kZQorICAtIEZNYW4gZFRTRUMvWEdFQy9tRU1BQyBOb2RlCisgIC0gRk1hbiBJRUVFIDE1ODggTm9kZQorICAtIEZNYW4gTURJTyBOb2RlCisgIC0gRXhhbXBsZQorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorRk1hbiBOb2RlCisKK0RFU0NSSVBUSU9OCisKK0R1ZSB0byB0aGUgZmFjdCB0aGF0IHRoZSBGTWFuIGlzIGFuIGFnZ3JlZ2F0aW9uIG9mIHN1Yi1lbmdpbmVzIChwb3J0cywgTUFDcywKK2V0Yy4pIHRoZSBGTWFuIG5vZGUgd2lsbCBoYXZlIGNoaWxkIG5vZGVzIGZvciBlYWNoIG9mIHRoZW0uCisKK1BST1BFUlRJRVMKKworLSBjb21wYXRpYmxlCisJCVVzYWdlOiByZXF1aXJlZAorCQlWYWx1ZSB0eXBlOiA8c3RyaW5nbGlzdD4KKwkJRGVmaW5pdGlvbjogTXVzdCBpbmNsdWRlICJmc2wsZm1hbiIKKwkJRk1hbiB2ZXJzaW9uIGNhbiBiZSBkZXRlcm1pbmVkIHZpYSBGTV9JUF9SRVZfMSByZWdpc3RlciBpbiB0aGUKKwkJRk1hbiBibG9jay4gVGhlIG9mZnNldCBpcyAweGM0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUKKwkJRnJhbWUgUHJvY2Vzc2luZyBNYW5hZ2VyIG1lbW9yeSBtYXAgKDB4YzMwMDAgZnJvbSB0aGUKKwkJYmVnaW5uaW5nIG9mIHRoZSBGTWFuIG5vZGUpLgorCistIGNlbGwtaW5kZXgKKwkJVXNhZ2U6IHJlcXVpcmVkCisJCVZhbHVlIHR5cGU6IDx1MzI+CisJCURlZmluaXRpb246IFNwZWNpZmllcyB0aGUgaW5kZXggb2YgdGhlIEZNYW4gdW5pdC4KKworCQlUaGUgY2VsbC1pbmRleCB2YWx1ZSBtYXkgYmUgdXNlZCBieSB0aGUgU29DLCB0byBpZGVudGlmeSB0aGUKKwkJRk1hbiB1bml0IGluIHRoZSBTb0MgbWVtb3J5IG1hcC4gSW4gdGhlIHRhYmxlIGJlbGxvdywKKwkJdGhlcmUncyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBjZWxsLWluZGV4IHVzZSBpbiBlYWNoIFNvQzoKKworCQktIFAxMDIzOgorCQlyZWdpc3RlcltiaXRdCQkJRk1hbiB1bml0CWNlbGwtaW5kZXgKKwkJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJCURFVkRJU1JbMV0JCQkxCQkwCisKKwkJLSBQMjA0MSwgUDMwNDEsIFA0MDgwIFA1MDIwLCBQNTA0MDoKKwkJcmVnaXN0ZXJbYml0XQkJCUZNYW4gdW5pdAljZWxsLWluZGV4CisJCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCQlEQ0ZHX0RFVkRJU1IyWzZdCQkxCQkwCisJCURDRkdfREVWRElTUjJbMTRdCQkyCQkxCisJCQkoU2Vjb25kIEZNIGF2YWlsYWJsZSBvbmx5IGluIFA0MDgwIGFuZCBQNTA0MCkKKworCQktIEI0ODYwLCBUMTA0MCwgVDIwODAsIFQ0MjQwOgorCQlyZWdpc3RlcltiaXRdCQkJRk1hbiB1bml0CWNlbGwtaW5kZXgKKwkJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJCURDRkdfQ0NTUl9ERVZESVNSMlsyNF0JCTEJCTAKKwkJRENGR19DQ1NSX0RFVkRJU1IyWzI1XQkJMgkJMQorCQkJKFNlY29uZCBGTSBhdmFpbGFibGUgb25seSBpbiBUNDI0MCkKKworCQlERVZESVNSLCBEQ0ZHX0RFVkRJU1IyIGFuZCBEQ0ZHX0NDU1JfREVWRElTUjIgYXJlIGxvY2F0ZWQgaW4KKwkJdGhlIHNwZWNpZmljIFNvQyAiRGV2aWNlIENvbmZpZ3VyYXRpb24vUGluIENvbnRyb2wiIE1lbW9yeQorCQlNYXAuCisKKy0gcmVnCisJCVVzYWdlOiByZXF1aXJlZAorCQlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCQlEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiBTcGVjaWZpZXMgdGhlIG9mZnNldCBvZiB0aGUKKwkJZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzOgorCQktIEJNSSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycy4KKwkJLSBRTUkgY29uZmlndXJhdGlvbiByZWdpc3RlcnMuCisJCS0gRE1BIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzLgorCQktIEZQTSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycy4KKwkJLSBGTWFuIGNvbnRyb2xsZXIgY29uZmlndXJhdGlvbiByZWdpc3RlcnMuCisKKy0gcmFuZ2VzCisJCVVzYWdlOiByZXF1aXJlZAorCQlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCQlEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LgorCistIGNsb2NrcworCQlVc2FnZTogcmVxdWlyZWQKKwkJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwkJRGVmaW5pdGlvbjogcGhhbmRsZSBmb3IgdGhlIGZtYW4gaW5wdXQgY2xvY2suCisKKy0gY2xvY2stbmFtZXMKKwkJdXNhZ2U6IHJlcXVpcmVkCisJCVZhbHVlIHR5cGU6IDxzdHJpbmdsaXN0PgorCQlEZWZpbml0aW9uOiAiZm1hbmNsayIgZm9yIHRoZSBmbWFuIGlucHV0IGNsb2NrLgorCistIGludGVycnVwdHMKKwkJVXNhZ2U6IHJlcXVpcmVkCisJCVZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisJCURlZmluaXRpb246IEEgcGFpciBvZiBJUlFzIGFyZSBzcGVjaWZpZWQgaW4gdGhpcyBwcm9wZXJ0eS4KKwkJVGhlIGZpcnN0IGVsZW1lbnQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBldmVudCBpbnRlcnJ1cHRzIGFuZAorCQl0aGUgc2Vjb25kIGVsZW1lbnQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBlcnJvciBpbnRlcnJ1cHRzLgorCistIGZzbCxxbWFuLWNoYW5uZWwtcmFuZ2UKKwkJVXNhZ2U6IHJlcXVpcmVkCisJCVZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisJCURlZmluaXRpb246IFNwZWNpZmllcyB0aGUgcmFuZ2Ugb2YgdGhlIGF2YWlsYWJsZSBkZWRpY2F0ZWQKKwkJY2hhbm5lbHMgaW4gdGhlIEZNYW4uIFRoZSBmaXJzdCBjZWxsIHNwZWNpZmllcyB0aGUgYmVnaW5uaW5nCisJCW9mIHRoZSByYW5nZSBhbmQgdGhlIHNlY29uZCBjZWxsIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mCisJCWNoYW5uZWxzLgorCQlGdXJ0aGVyIGluZm9ybWF0aW9uIGF2YWlsYWJsZSBhdDoKKwkJIldvcmsgUXVldWUgKFdRKSBDaGFubmVsIEFzc2lnbm1lbnRzIGluIHRoZSBRTWFuIiBzZWN0aW9uCisJCWluIERQQUEgUmVmZXJlbmNlIE1hbnVhbC4KKworLSBmc2wscW1hbgorLSBmc2wsYm1hbgorCQlVc2FnZTogcmVxdWlyZWQKKwkJRGVmaW5pdGlvbjogU2VlIHNvYy9mc2wvcW1hbi50eHQgYW5kIHNvYy9mc2wvYm1hbi50eHQKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0ZNYW4gTVVSQU0gTm9kZQorCitERVNDUklQVElPTgorCitGTWFuIEludGVybmFsIG1lbW9yeSAtIHNoYXJlZCBiZXR3ZWVuIGFsbCB0aGUgRk1hbiBtb2R1bGVzLgorSXQgY29udGFpbnMgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgYXJlIGNvbW1vbiBhbmQgd3JpdHRlbiB0byBvciByZWFkIGJ5Cit0aGUgbW9kdWxlcy4KK0ZNYW4gaW50ZXJuYWwgbWVtb3J5IGlzIHNwbGl0IGludG8gdGhlIGZvbGxvd2luZyBwYXJ0czoKKwlQYWNrZXQgYnVmZmVyaW5nIChUeC9SeCBGSUZPcykKKwlGcmFtZXMgaW50ZXJuYWwgY29udGV4dAorCitQUk9QRVJUSUVTCisKKy0gY29tcGF0aWJsZQorCQlVc2FnZTogcmVxdWlyZWQKKwkJVmFsdWUgdHlwZTogPHN0cmluZ2xpc3Q+CisJCURlZmluaXRpb246IE11c3QgaW5jbHVkZSAiZnNsLGZtYW4tbXVyYW0iCisKKy0gcmFuZ2VzCisJCVVzYWdlOiByZXF1aXJlZAorCQlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCQlEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LgorCQlTcGVjaWZpZXMgdGhlIG11bHRpLXVzZXIgbWVtb3J5IG9mZnNldCBhbmQgdGhlIHNpemUgd2l0aGluCisJCXRoZSBGTWFuLgorCitFWEFNUExFCisKK211cmFtQDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGZtYW4tbXVyYW0iOworCXJhbmdlcyA9IDwwIDB4MDAwMDAwIDB4MjgwMDA+OworfTsKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0ZNYW4gUG9ydCBOb2RlCisKK0RFU0NSSVBUSU9OCisKK1RoZSBGcmFtZSBNYW5hZ2VyIChGTWFuKSBzdXBwb3J0cyBzZXZlcmFsIHR5cGVzIG9mIGhhcmR3YXJlIHBvcnRzOgorCUV0aGVybmV0IHJlY2VpdmVyIChSWCkKKwlFdGhlcm5ldCB0cmFuc21pdHRlciAoVFgpCisJT2ZmbGluZS9Ib3N0IGNvbW1hbmQgKE8vSCkKKworUFJPUEVSVElFUworCistIGNvbXBhdGlibGUKKwkJVXNhZ2U6IHJlcXVpcmVkCisJCVZhbHVlIHR5cGU6IDxzdHJpbmdsaXN0PgorCQlEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LgorCQlNdXN0IGluY2x1ZGUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisJCQktICJmc2wsZm1hbi12Mi1wb3J0LW9oIiBmb3IgRk1hblYyIE9IIHBvcnRzCisJCQktICJmc2wsZm1hbi12Mi1wb3J0LXJ4IiBmb3IgRk1hblYyIFJYIHBvcnRzCisJCQktICJmc2wsZm1hbi12Mi1wb3J0LXR4IiBmb3IgRk1hblYyIFRYIHBvcnRzCisJCQktICJmc2wsZm1hbi12My1wb3J0LW9oIiBmb3IgRk1hblYzIE9IIHBvcnRzCisJCQktICJmc2wsZm1hbi12My1wb3J0LXJ4IiBmb3IgRk1hblYzIFJYIHBvcnRzCisJCQktICJmc2wsZm1hbi12My1wb3J0LXR4IiBmb3IgRk1hblYzIFRYIHBvcnRzCisKKy0gY2VsbC1pbmRleAorCQlVc2FnZTogcmVxdWlyZWQKKwkJVmFsdWUgdHlwZTogPHUzMj4KKwkJRGVmaW5pdGlvbjogU3BlY2lmaWVzIHRoZSBoYXJkd2FyZSBwb3J0IGlkLgorCQlFYWNoIGhhcmR3YXJlIHBvcnQgb24gdGhlIEZNYW4gaGFzIGl0cyBvd24gaGFyZHdhcmUgUG9ydElELgorCQlTdXBlciBzZXQgb2YgYWxsIGhhcmR3YXJlIFBvcnQgSURzIGF2YWlsYWJsZSBhdCBGTWFuIFJlZmVyZW5jZQorCQlNYW51YWwgdW5kZXIgIkZNYW4gSGFyZHdhcmUgUG9ydHMgaW4gRnJlZXNjYWxlIERldmljZXMiIHRhYmxlLgorCisJCUVhY2ggaGFyZHdhcmUgcG9ydCBpcyBhc3NpZ25lZCBhIDRLQiwgcG9ydC1zcGVjaWZpYyBwYWdlIGluCisJCXRoZSBGTWFuIGhhcmR3YXJlIHBvcnQgbWVtb3J5IHJlZ2lvbiAod2hpY2ggaXMgcGFydCBvZiB0aGUKKwkJRk1hbiBtZW1vcnkgbWFwKS4gVGhlIGZpcnN0IDQgS0IgaW4gdGhlIEZNYW4gaGFyZHdhcmUgcG9ydHMKKwkJbWVtb3J5IHJlZ2lvbiBpcyB1c2VkIGZvciB3aGF0IGFyZSBjYWxsZWQgY29tbW9uIHJlZ2lzdGVycy4KKwkJVGhlIHN1YnNlcXVlbnQgNjMgNEtCIHBhZ2VzIGFyZSBhbGxvY2F0ZWQgdG8gdGhlIGhhcmR3YXJlCisJCXBvcnRzLgorCQlUaGUgcGFnZSBvZiBhIHNwZWNpZmljIHBvcnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgY2VsbC1pbmRleC4KKworLSByZWcKKwkJVXNhZ2U6IHJlcXVpcmVkCisJCVZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisJCURlZmluaXRpb246IFRoZXJlIGlzIG9uZSByZWcgcmVnaW9uIGRlc2NyaWJpbmcgdGhlIHBvcnQKKwkJY29uZmlndXJhdGlvbiByZWdpc3RlcnMuCisKKy0gZnNsLGZtYW4tMTBnLXBvcnQKKwkJVXNhZ2U6IG9wdGlvbmFsCisJCVZhbHVlIHR5cGU6IGJvb2xlYW4KKwkJRGVmaW5pdGlvbjogVGhlIGRlZmF1bHQgcG9ydCByYXRlIGlzIDFHLgorCQlJZiB0aGlzIHByb3BlcnR5IGV4aXN0cywgdGhlIHBvcnQgaXMgcyAxMEcgcG9ydC4KKworLSBmc2wsZm1hbi1iZXN0LWVmZm9ydC1wb3J0CisJCVVzYWdlOiBvcHRpb25hbAorCQlWYWx1ZSB0eXBlOiBib29sZWFuCisJCURlZmluaXRpb246IENhbiBiZSBkZWZpbmVkIG9ubHkgaWYgMTBHLXN1cHBvcnQgaXMgc2V0LgorCQlUaGlzIHByb3BlcnR5IG1hcmtzIGEgYmVzdC1lZmZvcnQgMTBHIHBvcnQgKDEwRyBwb3J0IHRoYXQKKwkJbWF5IG5vdCBiZSBjYXBhYmxlIG9mIGxpbmUgcmF0ZSkuCisKK0VYQU1QTEUKKworcG9ydEBhODAwMCB7CisJY2VsbC1pbmRleCA9IDwweDI4PjsKKwljb21wYXRpYmxlID0gImZzbCxmbWFuLXYyLXBvcnQtdHgiOworCXJlZyA9IDwweGE4MDAwIDB4MTAwMD47Cit9OworCitwb3J0QDg4MDAwIHsKKwljZWxsLWluZGV4ID0gPDB4OD47CisJY29tcGF0aWJsZSA9ICJmc2wsZm1hbi12Mi1wb3J0LXJ4IjsKKwlyZWcgPSA8MHg4ODAwMCAweDEwMDA+OworfTsKKworcG9ydEA4MTAwMCB7CisJY2VsbC1pbmRleCA9IDwweDE+OworCWNvbXBhdGlibGUgPSAiZnNsLGZtYW4tdjItcG9ydC1vaCI7CisJcmVnID0gPDB4ODEwMDAgMHgxMDAwPjsKK307CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitGTWFuIGRUU0VDL1hHRUMvbUVNQUMgTm9kZQorCitERVNDUklQVElPTgorCittRU1BQy9kVFNFQy9YR0VDIGFyZSB0aGUgRXRoZXJuZXQgbmV0d29yayBpbnRlcmZhY2VzCisKK1BST1BFUlRJRVMKKworLSBjb21wYXRpYmxlCisJCVVzYWdlOiByZXF1aXJlZAorCQlWYWx1ZSB0eXBlOiA8c3RyaW5nbGlzdD4KKwkJRGVmaW5pdGlvbjogQSBzdGFuZGFyZCBwcm9wZXJ0eS4KKwkJTXVzdCBpbmNsdWRlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCQktICJmc2wsZm1hbi1kdHNlYyIgZm9yIGRUU0VDIE1BQworCQktICJmc2wsZm1hbi14Z2VjIiBmb3IgWEdFQyBNQUMKKwkJLSAiZnNsLGZtYW4tbWVtYWMgZm9yIG1FTUFDIE1BQworCistIGNlbGwtaW5kZXgKKwkJVXNhZ2U6IHJlcXVpcmVkCisJCVZhbHVlIHR5cGU6IDx1MzI+CisJCURlZmluaXRpb246IFNwZWNpZmllcyB0aGUgTUFDIGlkLgorCisJCVRoZSBjZWxsLWluZGV4IHZhbHVlIG1heSBiZSB1c2VkIGJ5IHRoZSBGTWFuIG9yIHRoZSBTb0MsIHRvCisJCWlkZW50aWZ5IHRoZSBNQUMgdW5pdCBpbiB0aGUgRk1hbiAob3IgU29DKSBtZW1vcnkgbWFwLgorCQlJbiB0aGUgdGFibGVzIGJlbGxvdyB0aGVyZSdzIGEgZGVzY3JpcHRpb24gb2YgdGhlIGNlbGwtaW5kZXgKKwkJdXNlLCB0aGVyZSBhcmUgdHdvIHRhYmxlcywgb25lIGRlc2NyaWJlcyB0aGUgdXNlIG9mIGNlbGwtaW5kZXgKKwkJYnkgdGhlIEZNYW4sIHRoZSBzZWNvbmQgZGVzY3JpYmVzIHRoZSB1c2UgYnkgdGhlIFNvQzoKKworCQkxLiBGTWFuIFJlZ2lzdGVycworCisJCUZNYW5WMjoKKwkJcmVnaXN0ZXJbYml0XQkJTUFDCQljZWxsLWluZGV4CisJCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCQlGTV9FUElbMTZdCQlYR0VDCQk4CisJCUZNX0VQSVsxNituXQkJZFRTRUNuCQluLTEKKwkJRk1fTlBJWzExK25dCQlkVFNFQ24JCW4tMQorCQkJbiA9IDEsLi4sNQorCisJCUZNYW5WMzoKKwkJcmVnaXN0ZXJbYml0XQkJTUFDCQljZWxsLWluZGV4CisJCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCQlGTV9FUElbMTYrbl0JCW1FTUFDbgkJbi0xCisJCUZNX0VQSVsyNV0JCW1FTUFDMTAJCTkKKworCQlGTV9OUElbMTErbl0JCW1FTUFDbgkJbi0xCisJCUZNX05QSVsxMF0JCW1FTUFDMTAJCTkKKwkJRk1fTlBJWzExXQkJbUVNQUM5CQk4CisJCQluID0gMSwuLjgKKworCQlGTV9FUEkgYW5kIEZNX05QSSBhcmUgbG9jYXRlZCBpbiB0aGUgRk1hbiBtZW1vcnkgbWFwLgorCisJCTIuIFNvQyByZWdpc3RlcnM6CisKKwkJLSBQMjA0MSwgUDMwNDEsIFA0MDgwIFA1MDIwLCBQNTA0MDoKKwkJcmVnaXN0ZXJbYml0XQkJRk1hbgkJTUFDCQljZWxsCisJCQkJCVVuaXQJCQkJaW5kZXgKKwkJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJCURDRkdfREVWRElTUjJbN10JMQkJWEdFQwkJOAorCQlEQ0ZHX0RFVkRJU1IyWzcrbl0JMQkJZFRTRUNuCQluLTEKKwkJRENGR19ERVZESVNSMlsxNV0JMgkJWEdFQwkJOAorCQlEQ0ZHX0RFVkRJU1IyWzE1K25dCTIJCWRUU0VDbgkJbi0xCisJCQluID0gMSwuLjUKKworCQktIFQxMDQwLCBUMjA4MCwgVDQyNDAsIEI0ODYwOgorCQlyZWdpc3RlcltiaXRdCQkJRk1hbglNQUMJCWNlbGwKKwkJCQkJCVVuaXQJCQlpbmRleAorCQk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwkJRENGR19DQ1NSX0RFVkRJU1IyW24tMV0JCTEJbUVNQUNuCQluLTEKKwkJRENGR19DQ1NSX0RFVkRJU1IyWzExK25dCTIJbUVNQUNuCQluLTEKKwkJCW4gPSAxLC4uNiw5LDEwCisKKwkJRVZESVNSLCBEQ0ZHX0RFVkRJU1IyIGFuZCBEQ0ZHX0NDU1JfREVWRElTUjIgYXJlIGxvY2F0ZWQgaW4KKwkJdGhlIHNwZWNpZmljIFNvQyAiRGV2aWNlIENvbmZpZ3VyYXRpb24vUGluIENvbnRyb2wiIE1lbW9yeQorCQlNYXAuCisKKy0gcmVnCisJCVVzYWdlOiByZXF1aXJlZAorCQlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCQlEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LgorCistIGZzbCxmbWFuLXBvcnRzCisJCVVzYWdlOiByZXF1aXJlZAorCQlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCQlEZWZpbml0aW9uOiBBbiBhcnJheSBvZiB0d28gcGhhbmRsZXMgLSB0aGUgZmlyc3QgcmVmZXJlbmNlcyBpcworCQl0aGUgRk1hbiBSWCBwb3J0IGFuZCB0aGUgc2Vjb25kIGlzIHRoZSBUWCBwb3J0IHVzZWQgYnkgdGhpcworCQlNQUMuCisKKy0gcHRwLXRpbWVyCisJCVVzYWdlIHJlcXVpcmVkCisJCVZhbHVlIHR5cGU6IDxwaGFuZGxlPgorCQlEZWZpbml0aW9uOiBBIHBoYW5kbGUgZm9yIDFFRUUxNTg4IHRpbWVyLgorCitFWEFNUExFCisKK2ZtYW4xX3R4Mjg6IHBvcnRAYTgwMDAgeworCWNlbGwtaW5kZXggPSA8MHgyOD47CisJY29tcGF0aWJsZSA9ICJmc2wsZm1hbi12Mi1wb3J0LXR4IjsKKwlyZWcgPSA8MHhhODAwMCAweDEwMDA+OworfTsKKworZm1hbjFfcng4OiBwb3J0QDg4MDAwIHsKKwljZWxsLWluZGV4ID0gPDB4OD47CisJY29tcGF0aWJsZSA9ICJmc2wsZm1hbi12Mi1wb3J0LXJ4IjsKKwlyZWcgPSA8MHg4ODAwMCAweDEwMDA+OworfTsKKworcHRwLXRpbWVyOiBwdHBfdGltZXJAZmUwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGZtYW4tcHRwLXRpbWVyIjsKKwlyZWcgPSA8MHhmZTAwMCAweDEwMDA+OworfTsKKworZXRoZXJuZXRAZTAwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGZtYW4tZHRzZWMiOworCWNlbGwtaW5kZXggPSA8MD47CisJcmVnID0gPDB4ZTAwMDAgMHgxMDAwPjsKKwlmc2wsZm1hbi1wb3J0cyA9IDwmZm1hbjFfcng4ICZmbWFuMV90eDI4PjsKKwlwdHAtdGltZXIgPSA8JnB0cC10aW1lcj47Cit9OworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitGTWFuIElFRUUgMTU4OCBOb2RlCisKK0RFU0NSSVBUSU9OCisKK1RoZSBGTWFuIGludGVyZmFjZSB0byBzdXBwb3J0IElFRUUgMTU4OAorCisKK1BST1BFUlRJRVMKKworLSBjb21wYXRpYmxlCisJCVVzYWdlOiByZXF1aXJlZAorCQlWYWx1ZSB0eXBlOiA8c3RyaW5nbGlzdD4KKwkJRGVmaW5pdGlvbjogQSBzdGFuZGFyZCBwcm9wZXJ0eS4KKwkJTXVzdCBpbmNsdWRlICJmc2wsZm1hbi1wdHAtdGltZXIiLgorCistIHJlZworCQlVc2FnZTogcmVxdWlyZWQKKwkJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwkJRGVmaW5pdGlvbjogQSBzdGFuZGFyZCBwcm9wZXJ0eS4KKworRVhBTVBMRQorCitwdHAtdGltZXJAZmUwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGZtYW4tcHRwLXRpbWVyIjsKKwlyZWcgPSA8MHhmZTAwMCAweDEwMDA+OworfTsKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0ZNYW4gTURJTyBOb2RlCisKK0RFU0NSSVBUSU9OCisKK1RoZSBNRElPIGlzIGEgYnVzIHRvIHdoaWNoIHRoZSBQSFkgZGV2aWNlcyBhcmUgY29ubmVjdGVkLgorCitQUk9QRVJUSUVTCisKKy0gY29tcGF0aWJsZQorCQlVc2FnZTogcmVxdWlyZWQKKwkJVmFsdWUgdHlwZTogPHN0cmluZ2xpc3Q+CisJCURlZmluaXRpb246IEEgc3RhbmRhcmQgcHJvcGVydHkuCisJCU11c3QgaW5jbHVkZSAiZnNsLGZtYW4tbWRpbyIgZm9yIDEgR2IvcyBNRElPIGZyb20gRk1hbiB2Mi4KKwkJTXVzdCBpbmNsdWRlICJmc2wsZm1hbi14bWRpbyIgZm9yIDEwIEdiL3MgTURJTyBmcm9tIEZNYW4gdjIuCisJCU11c3QgaW5jbHVkZSAiZnNsLGZtYW4tbWVtYWMtbWRpbyIgZm9yIDEvMTAgR2IvcyBNRElPIGZyb20KKwkJRk1hbiB2My4KKworLSByZWcKKwkJVXNhZ2U6IHJlcXVpcmVkCisJCVZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisJCURlZmluaXRpb246IEEgc3RhbmRhcmQgcHJvcGVydHkuCisKKy0gYnVzLWZyZXF1ZW5jeQorCQlVc2FnZTogb3B0aW9uYWwKKwkJVmFsdWUgdHlwZTogPHUzMj4KKwkJRGVmaW5pdGlvbjogU3BlY2lmaWVzIHRoZSBleHRlcm5hbCBNRElPIGJ1cyBjbG9jayBzcGVlZCB0bworCQliZSB1c2VkLCBpZiBkaWZmZXJlbnQgZnJvbSB0aGUgc3RhbmRhcmQgMi41IE1Iei4KKwkJVGhpcyBtYXkgYmUgZHVlIHRvIHRoZSBzdGFuZGFyZCBzcGVlZCBiZWluZyB1bnN1cHBvcnRlZCAoZS5nLgorCQlkdWUgdG8gYSBoYXJkd2FyZSBwcm9ibGVtKSwgb3IgdG8gYWR2ZXJ0aXNlIHRoYXQgYWxsIHJlbGV2YW50CisJCWNvbXBvbmVudHMgaW4gdGhlIHN5c3RlbSBzdXBwb3J0IGEgZmFzdGVyIHNwZWVkLgorCistIGludGVycnVwdHMKKwkJVXNhZ2U6IHJlcXVpcmVkIGZvciBleHRlcm5hbCBNRElPCisJCVZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisJCURlZmluaXRpb246IEV2ZW50IGludGVycnVwdCBvZiBleHRlcm5hbCBNRElPIGNvbnRyb2xsZXIuCisKKy0gZnNsLGZtYW4taW50ZXJuYWwtbWRpbworCQlVc2FnZTogcmVxdWlyZWQgZm9yIGludGVybmFsIE1ESU8KKwkJVmFsdWUgdHlwZTogYm9vbGVhbgorCQlEZWZpbml0aW9uOiBGbWFuIGhhcyBpbnRlcm5hbCBNRElPIGZvciBpbnRlcm5hbCBQQ1MoUGh5c2ljYWwKKwkJQ29kaW5nIFN1YmxheWVyKSBQSFlzIGFuZCBleHRlcm5hbCBNRElPIGZvciBleHRlcm5hbCBQSFlzLgorCQlUaGUgc2V0dGluZ3MgYW5kIHByb2dyYW1taW5nIHJvdXRpbmVzIGZvciBpbnRlcm5hbC9leHRlcm5hbAorCQlNRElPIGFyZSBkaWZmZXJlbnQuIE11c3QgYmUgaW5jbHVkZWQgZm9yIGludGVybmFsIE1ESU8uCisKK0VYQU1QTEUKKworRXhhbXBsZSBmb3IgRk1hbiB2MiBleHRlcm5hbCBNRElPOgorCittZGlvQGYxMDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxmbWFuLXhtZGlvIjsKKwlyZWcgPSA8MHhmMTAwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8MTAxIDIgMCAwPjsKK307CisKK0V4YW1wbGUgZm9yIEZNYW4gdjMgaW50ZXJuYWwgTURJTzoKKworbWRpb0BmMTAwMCB7CisJY29tcGF0aWJsZSA9ICJmc2wsZm1hbi1tZW1hYy1tZGlvIjsKKwlyZWcgPSA8MHhmMTAwMCAweDEwMDA+OworCWZzbCxmbWFuLWludGVybmFsLW1kaW87Cit9OworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorRXhhbXBsZQorCitmbWFuQDQwMDAwMCB7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MT47CisJY2VsbC1pbmRleCA9IDwxPjsKKwljb21wYXRpYmxlID0gImZzbCxmbWFuIgorCXJhbmdlcyA9IDwwIDB4NDAwMDAwIDB4MTAwMDAwPjsKKwlyZWcgPSA8MHg0MDAwMDAgMHgxMDAwMDA+OworCWNsb2NrcyA9IDwmZm1hbl9jbGs+OworCWNsb2NrLW5hbWVzID0gImZtYW5jbGsiOworCWludGVycnVwdHMgPSA8CisJCTk2IDIgMCAwCisJCTE2IDIgMSAxPjsKKwlmc2wscW1hbi1jaGFubmVsLXJhbmdlID0gPDB4NDAgMHhjPjsKKworCW11cmFtQDAgeworCQljb21wYXRpYmxlID0gImZzbCxmbWFuLW11cmFtIjsKKwkJcmVnID0gPDB4MCAweDI4MDAwPjsKKwl9OworCisJcG9ydEA4MTAwMCB7CisJCWNlbGwtaW5kZXggPSA8MT47CisJCWNvbXBhdGlibGUgPSAiZnNsLGZtYW4tdjItcG9ydC1vaCI7CisJCXJlZyA9IDwweDgxMDAwIDB4MTAwMD47CisJfTsKKworCXBvcnRAODIwMDAgeworCQljZWxsLWluZGV4ID0gPDI+OworCQljb21wYXRpYmxlID0gImZzbCxmbWFuLXYyLXBvcnQtb2giOworCQlyZWcgPSA8MHg4MjAwMCAweDEwMDA+OworCX07CisKKwlwb3J0QDgzMDAwIHsKKwkJY2VsbC1pbmRleCA9IDwzPjsKKwkJY29tcGF0aWJsZSA9ICJmc2wsZm1hbi12Mi1wb3J0LW9oIjsKKwkJcmVnID0gPDB4ODMwMDAgMHgxMDAwPjsKKwl9OworCisJcG9ydEA4NDAwMCB7CisJCWNlbGwtaW5kZXggPSA8ND47CisJCWNvbXBhdGlibGUgPSAiZnNsLGZtYW4tdjItcG9ydC1vaCI7CisJCXJlZyA9IDwweDg0MDAwIDB4MTAwMD47CisJfTsKKworCXBvcnRAODUwMDAgeworCQljZWxsLWluZGV4ID0gPDU+OworCQljb21wYXRpYmxlID0gImZzbCxmbWFuLXYyLXBvcnQtb2giOworCQlyZWcgPSA8MHg4NTAwMCAweDEwMDA+OworCX07CisKKwlwb3J0QDg2MDAwIHsKKwkJY2VsbC1pbmRleCA9IDw2PjsKKwkJY29tcGF0aWJsZSA9ICJmc2wsZm1hbi12Mi1wb3J0LW9oIjsKKwkJcmVnID0gPDB4ODYwMDAgMHgxMDAwPjsKKwl9OworCisJZm1hbjFfcnhfMHg4OiBwb3J0QDg4MDAwIHsKKwkJY2VsbC1pbmRleCA9IDwweDg+OworCQljb21wYXRpYmxlID0gImZzbCxmbWFuLXYyLXBvcnQtcngiOworCQlyZWcgPSA8MHg4ODAwMCAweDEwMDA+OworCX07CisKKwlmbWFuMV9yeF8weDk6IHBvcnRAODkwMDAgeworCQljZWxsLWluZGV4ID0gPDB4OT47CisJCWNvbXBhdGlibGUgPSAiZnNsLGZtYW4tdjItcG9ydC1yeCI7CisJCXJlZyA9IDwweDg5MDAwIDB4MTAwMD47CisJfTsKKworCWZtYW4xX3J4XzB4YTogcG9ydEA4YTAwMCB7CisJCWNlbGwtaW5kZXggPSA8MHhhPjsKKwkJY29tcGF0aWJsZSA9ICJmc2wsZm1hbi12Mi1wb3J0LXJ4IjsKKwkJcmVnID0gPDB4OGEwMDAgMHgxMDAwPjsKKwl9OworCisJZm1hbjFfcnhfMHhiOiBwb3J0QDhiMDAwIHsKKwkJY2VsbC1pbmRleCA9IDwweGI+OworCQljb21wYXRpYmxlID0gImZzbCxmbWFuLXYyLXBvcnQtcngiOworCQlyZWcgPSA8MHg4YjAwMCAweDEwMDA+OworCX07CisKKwlmbWFuMV9yeF8weGM6IHBvcnRAOGMwMDAgeworCQljZWxsLWluZGV4ID0gPDB4Yz47CisJCWNvbXBhdGlibGUgPSAiZnNsLGZtYW4tdjItcG9ydC1yeCI7CisJCXJlZyA9IDwweDhjMDAwIDB4MTAwMD47CisJfTsKKworCWZtYW4xX3J4XzB4MTA6IHBvcnRAOTAwMDAgeworCQljZWxsLWluZGV4ID0gPDB4MTA+OworCQljb21wYXRpYmxlID0gImZzbCxmbWFuLXYyLXBvcnQtcngiOworCQlyZWcgPSA8MHg5MDAwMCAweDEwMDA+OworCX07CisKKwlmbWFuMV90eF8weDI4OiBwb3J0QGE4MDAwIHsKKwkJY2VsbC1pbmRleCA9IDwweDI4PjsKKwkJY29tcGF0aWJsZSA9ICJmc2wsZm1hbi12Mi1wb3J0LXR4IjsKKwkJcmVnID0gPDB4YTgwMDAgMHgxMDAwPjsKKwl9OworCisJZm1hbjFfdHhfMHgyOTogcG9ydEBhOTAwMCB7CisJCWNlbGwtaW5kZXggPSA8MHgyOT47CisJCWNvbXBhdGlibGUgPSAiZnNsLGZtYW4tdjItcG9ydC10eCI7CisJCXJlZyA9IDwweGE5MDAwIDB4MTAwMD47CisJfTsKKworCWZtYW4xX3R4XzB4MmE6IHBvcnRAYWEwMDAgeworCQljZWxsLWluZGV4ID0gPDB4MmE+OworCQljb21wYXRpYmxlID0gImZzbCxmbWFuLXYyLXBvcnQtdHgiOworCQlyZWcgPSA8MHhhYTAwMCAweDEwMDA+OworCX07CisKKwlmbWFuMV90eF8weDJiOiBwb3J0QGFiMDAwIHsKKwkJY2VsbC1pbmRleCA9IDwweDJiPjsKKwkJY29tcGF0aWJsZSA9ICJmc2wsZm1hbi12Mi1wb3J0LXR4IjsKKwkJcmVnID0gPDB4YWIwMDAgMHgxMDAwPjsKKwl9OworCisJZm1hbjFfdHhfMHgyYzogcG9ydEBhYzAwMDAgeworCQljZWxsLWluZGV4ID0gPDB4MmM+OworCQljb21wYXRpYmxlID0gImZzbCxmbWFuLXYyLXBvcnQtdHgiOworCQlyZWcgPSA8MHhhYzAwMCAweDEwMDA+OworCX07CisKKwlmbWFuMV90eF8weDMwOiBwb3J0QGIwMDAwIHsKKwkJY2VsbC1pbmRleCA9IDwweDMwPjsKKwkJY29tcGF0aWJsZSA9ICJmc2wsZm1hbi12Mi1wb3J0LXR4IjsKKwkJcmVnID0gPDB4YjAwMDAgMHgxMDAwPjsKKwl9OworCisJZXRoZXJuZXRAZTAwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxmbWFuLWR0c2VjIjsKKwkJY2VsbC1pbmRleCA9IDwwPjsKKwkJcmVnID0gPDB4ZTAwMDAgMHgxMDAwPjsKKwkJZnNsLGZtYW4tcG9ydHMgPSA8JmZtYW4xX3J4XzB4OCAmZm1hbjFfdHhfMHgyOD47CisJfTsKKworCWV0aGVybmV0QGUyMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsZm1hbi1kdHNlYyI7CisJCWNlbGwtaW5kZXggPSA8MT47CisJCXJlZyA9IDwweGUyMDAwIDB4MTAwMD47CisJCWZzbCxmbWFuLXBvcnRzID0gPCZmbWFuMV9yeF8weDkgJmZtYW4xX3R4XzB4Mjk+OworCX07CisKKwlldGhlcm5ldEBlNDAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGZtYW4tZHRzZWMiOworCQljZWxsLWluZGV4ID0gPDI+OworCQlyZWcgPSA8MHhlNDAwMCAweDEwMDA+OworCQlmc2wsZm1hbi1wb3J0cyA9IDwmZm1hbjFfcnhfMHhhICZmbWFuMV90eF8weDJhPjsKKwl9OworCisJZXRoZXJuZXRAZTYwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxmbWFuLWR0c2VjIjsKKwkJY2VsbC1pbmRleCA9IDwzPjsKKwkJcmVnID0gPDB4ZTYwMDAgMHgxMDAwPjsKKwkJZnNsLGZtYW4tcG9ydHMgPSA8JmZtYW4xX3J4XzB4YiAmZm1hbjFfdHhfMHgyYj47CisJfTsKKworCWV0aGVybmV0QGU4MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsZm1hbi1kdHNlYyI7CisJCWNlbGwtaW5kZXggPSA8ND47CisJCXJlZyA9IDwweGYwMDAwIDB4MTAwMD47CisJCWZzbCxmbWFuLXBvcnRzID0gPCZmbWFuMV9yeF8weGMgJmZtYW4xX3R4XzB4MmM+OworCisJZXRoZXJuZXRAZjAwMDAgeworCQljZWxsLWluZGV4ID0gPDg+OworCQljb21wYXRpYmxlID0gImZzbCxmbWFuLXhnZWMiOworCQlyZWcgPSA8MHhmMDAwMCAweDEwMDA+OworCQlmc2wsZm1hbi1wb3J0cyA9IDwmZm1hbjFfcnhfMHgxMCAmZm1hbjFfdHhfMHgzMD47CisJfTsKKworCXB0cC10aW1lckBmZTAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGZtYW4tcHRwLXRpbWVyIjsKKwkJcmVnID0gPDB4ZmUwMDAgMHgxMDAwPjsKKwl9OworCisJbWRpb0BmMTAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGZtYW4teG1kaW8iOworCQlyZWcgPSA8MHhmMTAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDEwMSAyIDAgMD47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvZ3RtLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9ndG0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMzNlZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvZ3RtLnR4dApAQCAtMCwwICsxLDMxIEBACisqIEZyZWVzY2FsZSBHZW5lcmFsLXB1cnBvc2UgVGltZXJzIE1vZHVsZQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGUgOiBzaG91bGQgYmUKKyAgICAiZnNsLDxjaGlwPi1ndG0iLCAiZnNsLGd0bSIgZm9yIFNPQyBHVE1zCisgICAgImZzbCw8Y2hpcD4tcWUtZ3RtIiwgImZzbCxxZS1ndG0iLCAiZnNsLGd0bSIgZm9yIFFFIEdUTXMKKyAgICAiZnNsLDxjaGlwPi1jcG0yLWd0bSIsICJmc2wsY3BtMi1ndG0iLCAiZnNsLGd0bSIgZm9yIENQTTIgR1RNcworICAtIHJlZyA6IHNob3VsZCBjb250YWluIGd0bSByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aCAoMHg0MCkuCisgIC0gaW50ZXJydXB0cyA6IHNob3VsZCBjb250YWluIGZvdXIgaW50ZXJydXB0cy4KKyAgLSBpbnRlcnJ1cHQtcGFyZW50IDogaW50ZXJydXB0IHNvdXJjZSBwaGFuZGxlLgorICAtIGNsb2NrLWZyZXF1ZW5jeSA6IHNwZWNpZmllcyB0aGUgZnJlcXVlbmN5IGRyaXZpbmcgdGhlIHRpbWVyLgorCitFeGFtcGxlOgorCit0aW1lckA1MDAgeworCWNvbXBhdGlibGUgPSAiZnNsLG1wYzgzNjAtZ3RtIiwgImZzbCxndG0iOworCXJlZyA9IDwweDUwMCAweDQwPjsKKwlpbnRlcnJ1cHRzID0gPDkwIDggNzggOCA4NCA4IDcyIDg+OworCWludGVycnVwdC1wYXJlbnQgPSA8JmlwaWM+OworCS8qIGZpbGxlZCBieSB1LWJvb3QgKi8KKwljbG9jay1mcmVxdWVuY3kgPSA8MD47Cit9OworCit0aW1lckA0NDAgeworCWNvbXBhdGlibGUgPSAiZnNsLG1wYzgzNjAtcWUtZ3RtIiwgImZzbCxxZS1ndG0iLCAiZnNsLGd0bSI7CisJcmVnID0gPDB4NDQwIDB4NDA+OworCWludGVycnVwdHMgPSA8MTIgMTMgMTQgMTU+OworCWludGVycnVwdC1wYXJlbnQgPSA8JnFlaWM+OworCS8qIGZpbGxlZCBieSB1LWJvb3QgKi8KKwljbG9jay1mcmVxdWVuY3kgPSA8MD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2d1dHMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2d1dHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3MWIyMDMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvZ3V0cy50eHQKQEAgLTAsMCArMSw0MSBAQAorKiBHbG9iYWwgVXRpbGl0aWVzIEJsb2NrCisKK1RoZSBnbG9iYWwgdXRpbGl0aWVzIGJsb2NrIGNvbnRyb2xzIHBvd2VyIG1hbmFnZW1lbnQsIEkvTyBkZXZpY2UKK2VuYWJsaW5nLCBwb3dlci1vbi1yZXNldCBjb25maWd1cmF0aW9uIG1vbml0b3JpbmcsIGdlbmVyYWwtcHVycG9zZQorSS9PIHNpZ25hbCBjb25maWd1cmF0aW9uLCBhbHRlcm5hdGUgZnVuY3Rpb24gc2VsZWN0aW9uIGZvciBtdWx0aXBsZXhlZAorc2lnbmFscywgYW5kIGNsb2NrIGNvbnRyb2wuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAtIGNvbXBhdGlibGUgOiBTaG91bGQgZGVmaW5lIHRoZSBjb21wYXRpYmxlIGRldmljZSB0eXBlIGZvcgorICAgZ2xvYmFsLXV0aWxpdGllcy4KKyAgIFBvc3NpYmxlIGNvbXBhdGlibGVzOgorCSJmc2wscW9yaXEtZGV2aWNlLWNvbmZpZy0xLjAiCisJImZzbCxxb3JpcS1kZXZpY2UtY29uZmlnLTIuMCIKKwkiZnNsLDxjaGlwPi1kZXZpY2UtY29uZmlnIgorCSJmc2wsPGNoaXA+LWd1dHMiCisgLSByZWcgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlLgorCitSZWNvbW1lbmRlZCBwcm9wZXJ0aWVzOgorCisgLSBmc2wsaGFzLXJzdGNyIDogSW5kaWNhdGVzIHRoYXQgdGhlIGdsb2JhbCB1dGlsaXRpZXMgcmVnaXN0ZXIgc2V0CisgICBjb250YWlucyBhIGZ1bmN0aW9uaW5nICJyZXNldCBjb250cm9sIHJlZ2lzdGVyIiAoaS5lLiB0aGUgYm9hcmQKKyAgIGlzIHdpcmVkIHRvIHJlc2V0IHVwb24gc2V0dGluZyB0aGUgSFJFU0VUX1JFUSBiaXQgaW4gdGhpcyByZWdpc3RlcikuCisKKyAtIGZzbCxsaW9kbi1iaXRzIDogSW5kaWNhdGVzIHRoZSBudW1iZXIgb2YgZGVmaW5lZCBiaXRzIGluIHRoZSBMSU9ETgorICAgcmVnaXN0ZXJzLCBmb3IgdGhvc2UgU09DcyB0aGF0IGhhdmUgYSBQQU1VIGRldmljZS4KKworRXhhbXBsZXM6CisJZ2xvYmFsLXV0aWxpdGllc0BlMDAwMCB7CS8qIGdsb2JhbCB1dGlsaXRpZXMgYmxvY2sgKi8KKwkJY29tcGF0aWJsZSA9ICJmc2wsbXBjODU0OC1ndXRzIjsKKwkJcmVnID0gPGUwMDAwIDEwMDA+OworCQlmc2wsaGFzLXJzdGNyOworCX07CisKKwlndXRzOiBnbG9iYWwtdXRpbGl0aWVzQGUwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wscW9yaXEtZGV2aWNlLWNvbmZpZy0xLjAiOworCQlyZWcgPSA8MHhlMDAwMCAweGUwMD47CisJCWZzbCxoYXMtcnN0Y3I7CisJCSNzbGVlcC1jZWxscyA9IDwxPjsKKwkJZnNsLGxpb2RuLWJpdHMgPSA8MTI+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvaW50ZXJsYWtlbi1sYWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2ludGVybGFrZW4tbGFjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDFiYzEzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2ludGVybGFrZW4tbGFjLnR4dApAQCAtMCwwICsxLDMwOSBAQAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorRnJlZXNjYWxlIEludGVybGFrZW4gTG9vay1Bc2lkZSBDb250cm9sbGVyIERldmljZSBCaW5kaW5ncworQ29weXJpZ2h0IDIwMTIgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IgSW5jLgorCitDT05URU5UUworICAtIEludGVybGFrZW4gTG9vay1Bc2lkZSBDb250cm9sbGVyIChMQUMpIE5vZGUKKyAgLSBFeGFtcGxlIExBQyBOb2RlCisgIC0gSW50ZXJsYWtlbiBMb29rLUFzaWRlIENvbnRyb2xsZXIgKExBQykgU29mdHdhcmUgUG9ydGFsIE5vZGUKKyAgLSBJbnRlcmxha2VuIExvb2stQXNpZGUgQ29udHJvbGxlciAoTEFDKSBTb2Z0d2FyZSBQb3J0YWwgQ2hpbGQgTm9kZXMKKyAgLSBFeGFtcGxlIExBQyBTV1AgTm9kZSB3aXRoIENoaWxkIE5vZGVzCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorSW50ZXJsYWtlbiBMb29rLUFzaWRlIENvbnRyb2xsZXIgKExBQykgTm9kZQorCitERVNDUklQVElPTgorCitUaGUgSW50ZXJsYWtlbiBpcyBhIG5hcnJvdywgaGlnaCBzcGVlZCBjaGFubmVsaXplZCBjaGlwLXRvLWNoaXAgaW50ZXJmYWNlLiBUbworZmFjaWxpdGF0ZSBpbnRlcm9wZXJhYmlsaXR5IGJldHdlZW4gYSBkYXRhIHBhdGggZGV2aWNlIGFuZCBhIGxvb2stYXNpZGUKK2NvLXByb2Nlc3NvciwgdGhlIEludGVybGFrZW4gTG9vay1Bc2lkZSBwcm90b2NvbCBpcyBkZWZpbmVkIGZvciBzaG9ydAordHJhbnNhY3Rpb24tcmVsYXRlZCB0cmFuc2ZlcnMuIEFsdGhvdWdoIGJhc2VkIG9uIHRoZSBJbnRlcmxha2VuIHByb3RvY29sLAorSW50ZXJsYWtlbiBMb29rLUFzaWRlIGlzIG5vdCBkaXJlY3RseSBjb21wYXRpYmxlIHdpdGggSW50ZXJsYWtlbiBhbmQgY2FuIGJlCitjb25zaWRlcmVkIGEgZGlmZmVyZW50IG9wZXJhdGlvbiBtb2RlLgorCitUaGUgSW50ZXJsYWtlbiBMQSBjb250cm9sbGVyIGNvbm5lY3RzIGludGVybmFsIHBsYXRmb3JtIHRvIEludGVybGFrZW4gc2VyaWFsCitpbnRlcmZhY2UuIEl0IGFjY2VwdHMgTEEgY29tbWFuZCB0aHJvdWdoIHNvZnR3YXJlIHBvcnRhbHMsIHdoaWNoIGFyZSBzeXN0ZW0KK21lbW9yeSBtYXBwZWQgNEtCIHNwYWNlcy4gVGhlIExBIGNvbW1hbmRzIGFyZSB0aGVuIHRyYW5zbGF0ZWQgaW50byB0aGUKK0ludGVybGFrZW4gY29udHJvbCB3b3JkcyBhbmQgZGF0YSB3b3Jkcywgd2hpY2ggYXJlIHNlbnQgb24gVFggc2lkZSB0byBUQ0FNCit0aHJvdWdoIFNlckRlcyBsYW5lcy4KKworVGhlcmUgYXJlIHR3byA0S2lCIHNwYWNlcyBkZWZpbmVkIHdpdGhpbiB0aGUgTEFDIGdsb2JhbCByZWdpc3RlciBtZW1vcnkgbWFwLgorVGhlcmUgaXMgYSBmdWxsIHJlZ2lzdGVyIHNldCBhdCAweDAwMDAtMHgwRkZGIChhbHNvIGtub3duIGFzIHRoZSAiaHlwZXJ2aXNvciIKK3ZlcnNpb24pLCBhbmQgYSBzdWJzZXQgYXQgMHgxMDAwLTB4MUZGRi4gIFRoZSBmb3JtZXIgaXMgYSBzdXBlcnNldCBvZiB0aGUKK2xhdHRlciwgYW5kIGluY2x1ZGVzIGNlcnRhaW4gcmVnaXN0ZXJzIHRoYXQgc2hvdWxkIG5vdCBiZSBhY2Nlc3NpYmxlIHRvCitwYXJ0aXRpb25lZCBzb2Z0d2FyZS4gIFNlcGFyYXRlIG5vZGVzIGFyZSB1c2VkIGZvciBlYWNoIHJlZ2lvbiwgd2l0aCBhIHBoYW5kbGUKK2xpbmtpbmcgdGhlIGh5cGVydmlzb3Igbm9kZSB0byB0aGUgbm9ybWFsIG9wZXJhdGluZyBub2RlLgorCitQUk9QRVJUSUVTCisKKyAgLSBjb21wYXRpYmxlCisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHN0cmluZz4KKwlEZWZpbml0aW9uOiBNdXN0IGluY2x1ZGUgImZzbCxpbnRlcmxha2VuLWxhYyIuIFRoaXMgcmVwcmVzZW50cyBvbmx5CisJCXRob3NlIExBQyBDQ1NSIHJlZ2lzdGVycyBub3QgcHJvdGVjdGVkIGluIHBhcnRpdGlvbmVkCisJCXNvZnR3YXJlLiBUaGUgdmVyc2lvbiBvZiB0aGUgZGV2aWNlIGlzIGRldGVybWluZWQgYnkgdGhlIExBQworCQlJUCBCbG9jayBSZXZpc2lvbiBSZWdpc3RlciAoSVBCUlIwKSBhdCBvZmZzZXQgMHgwQkY4LgorCisJCVRhYmxlIG9mIGNvcnJlc3BvbmRlbmNlcyBiZXR3ZWVuIElQQlJSMCB2YWx1ZXMgYW5kIGV4YW1wbGUKKwkJY2hpcHM6CisJCQlWYWx1ZQkJRGV2aWNlCisJCQktLS0tLS0tLS0tLQktLS0tLS0tCisJCQkweDAyMDAwMTAwCVQ0MjQwCisKKwkJVGhlIEh5cGVydmlzb3Igbm9kZSBoYXMgYSBkaWZmZXJlbnQgY29tcGF0aWJsZS4gSXQgbXVzdCBpbmNsdWRlCisJCSJmc2wsaW50ZXJsYWtlbi1sYWMtaHYiLiBUaGlzIG5vZGUgcmVwcmVzZW50cyB0aGUgcHJvdGVjdGVkCisJCUxBQyByZWdpc3RlciBzcGFjZSBhbmQgaXMgcmVxdWlyZWQgZXhjZXB0IGluc2lkZSBhIHBhcnRpdGlvbgorCQl3aGVyZSBhY2Nlc3MgdG8gdGhlIGh5cGVydmlzb3Igbm9kZSBpcyB0byBiZSBkZW5pZWQuCisKKyAgLSBmc2wsbm9uLWh2LW5vZGUKKwlVc2FnZTogcmVxdWlyZWQgaW4gImZzbCxpbnRlcmxha2VuLWxhYy1odiIKKwlWYWx1ZSB0eXBlOiA8cGhhbmRsZT4KKwlEZWZpbml0aW9uOiBQb2ludHMgdG8gdGhlIG5vbi1wcm90ZWN0ZWQgTEFDIENDU1IgbWFwcGVkIHJlZ2lzdGVyIHNwYWNlCisJCW5vZGUuCisKKyAgLSByZWcKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IEEgc3RhbmRhcmQgcHJvcGVydHkuIFRoZSBmaXJzdCByZXNvdXJjZSByZXByZXNlbnRzIHRoZQorCQlJbnRlcmxha2VuIExBQyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycy4KKworICAtIGludGVycnVwdHM6CisJVXNhZ2U6IHJlcXVpcmVkIGluIG5vbi1odiBub2RlIG9ubHkKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IEludGVycnVwdCBtYXBwaW5nIGZvciBJbnRlcmxha2VuIExBQyBlcnJvciBJUlEuCisKK0VYQU1QTEUKKwlsYWM6IGxhY0AyMjkwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxpbnRlcmxha2VuLWxhYyIKKwkJcmVnID0gPDB4MjI5MDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MTYgMiAxIDE4PjsKKwl9OworCisJbGFjLWh2QDIyODAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGludGVybGFrZW4tbGFjLWh2IgorCQlyZWcgPSA8MHgyMjgwMDAgMHgxMDAwPjsKKwkJZnNsLG5vbi1odi1ub2RlID0gPCZsYWM+OworCX07CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0ludGVybGFrZW4gTG9vay1Bc2lkZSBDb250cm9sbGVyIChMQUMpIFNvZnR3YXJlIFBvcnRhbCBDb250YWluZXIgTm9kZQorCitERVNDUklQVElPTgorVGhlIEludGVybGFrZW4gTG9vay1Bc2lkZSBDb250cm9sbGVyIChMQUMpIHV0aWxpemVzIFNvZnR3YXJlIFBvcnRhbHMgdG8gYWNjZXB0CitJbnRlcmxha2VuIExvb2stQXNpZGUgKElMQSkgY29tbWFuZHMuIFRoZSBJbnRlcmxha2VuIExBQyBzb2Z0d2FyZSBwb3J0YWwKK21lbW9yeSBtYXAgb2NjdXBpZXMgMTI4S0Igb2YgbWVtb3J5IHNwYWNlLiBUaGUgc29mdHdhcmUgcG9ydGFsIG1lbW9yeSBzcGFjZSBpcworaW50ZW5kZWQgdG8gYmUgY2FjaGUtZW5hYmxlZC4gV0lNRyBmb3IgZWFjaCBzb2Z0d2FyZSBzcGFjZSBpcyByZXF1aXJlZCB0byBiZQorMDAxMCBpZiBzdGFzaGluZyBpcyBlbmFibGVkOyBvdGhlcndpc2UsIFdJTUcgY2FuIGJlIDAwMDAgb3IgMDAxMC4KKworUFJPUEVSVElFUworCisgIC0gI2FkZHJlc3MtY2VsbHMKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8dTMyPgorCURlZmluaXRpb246IEEgc3RhbmRhcmQgcHJvcGVydHkuIE11c3QgaGF2ZSBhIHZhbHVlIG9mIDEuCisKKyAgLSAjc2l6ZS1jZWxscworCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDx1MzI+CisJRGVmaW5pdGlvbjogQSBzdGFuZGFyZCBwcm9wZXJ0eS4gTXVzdCBoYXZlIGEgdmFsdWUgb2YgMS4KKworICAtIGNvbXBhdGlibGUKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8c3RyaW5nPgorCURlZmluaXRpb246IE11c3QgaW5jbHVkZSAiZnNsLGludGVybGFrZW4tbGFjLXBvcnRhbHMiCisKKyAgLSByYW5nZXMKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IEEgc3RhbmRhcmQgcHJvcGVydHkuIFNwZWNpZmllcyB0aGUgYWRkcmVzcyBhbmQgbGVuZ3RoCisJCW9mIHRoZSBMQUMgcG9ydGFsIG1lbW9yeSBzcGFjZS4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorSW50ZXJsYWtlbiBMb29rLUFzaWRlIENvbnRyb2xsZXIgKExBQykgU29mdHdhcmUgUG9ydGFscyBDaGlsZCBOb2RlcworCitERVNDUklQVElPTgorVGhlcmUgYXJlIHVwIHRvIDI0IGF2YWlsYWJsZSBzb2Z0d2FyZSBwb3J0YWxzIHdpdGggZWFjaCBzb2Z0d2FyZSBwb3J0YWwKK3JlcXVpcmluZyA0S0Igb2YgY29uc2VjdXRpdmUgbWVtb3J5IHdpdGhpbiB0aGUgc29mdHdhcmUgcG9ydGFsIG1lbW9yeSBtYXBwZWQKK3NwYWNlLgorCitQUk9QRVJUSUVTCisKKyAgLSBjb21wYXRpYmxlCisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHN0cmluZz4KKwlEZWZpbml0aW9uOiBNdXN0IGluY2x1ZGUgImZzbCxpbnRlcmxha2VuLWxhYy1wb3J0YWwtdlguWSIgd2hlcmUgWCBpcworCQl0aGUgTWFqb3IgdmVyc2lvbiAoSVBfTUopIGZvdW5kIGluIHRoZSBMQUMgSVAgQmxvY2sgUmV2aXNpb24KKwkJUmVnaXN0ZXIgKElQQlJSMCksIGF0IG9mZnNldCAweDBCRjgsIGFuZCBZIGlzIHRoZSBNaW5vciB2ZXJzaW9uCisJCShJUF9NTikuCisKKwkJVGFibGUgb2YgY29ycmVzcG9uZGVuY2VzIGJldHdlZW4gdmVyc2lvbiB2YWx1ZXMgYW5kIGV4YW1wbGUgY2hpcHM6CisJCSAgICBWYWx1ZQlEZXZpY2UKKwkJICAgIC0tLS0tLQktLS0tLS0tCisJCSAgICAgIDEuMAlUNDI0MAorCisgIC0gcmVnCisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiAgVGhlIGZpcnN0IHJlc291cmNlIHJlcHJlc2VudHMgdGhlCisJCUludGVybGFrZW4gTEFDIHNvZnR3YXJlIHBvcnRhbCByZWdpc3RlcnMuCisKKyAgLSBmc2wsbGlvZG4KKwlWYWx1ZSB0eXBlOiA8dTMyPgorCURlZmluaXRpb246IFRoZSBsb2dpY2FsIEkvTyBkZXZpY2UgbnVtYmVyIChMSU9ETikgZm9yIHRoaXMgZGV2aWNlLiAgVGhlCisJCUxJT0ROIGlzIGEgbnVtYmVyIGV4cHJlc3NlZCBieSB0aGlzIGRldmljZSBhbmQgdXNlZCB0byBwZXJmb3JtCisJCWxvb2stdXBzIGluIHRoZSBJT01NVSAoUEFNVSkgYWRkcmVzcyB0YWJsZSB3aGVuIHBlcmZvcm1pbmcKKwkJRE1Bcy4gVGhpcyBwcm9wZXJ0eSBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIGJ5IHUtYm9vdC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorRVhBTVBMRQorCitsYWMtcG9ydGFscyB7CisJI2FkZHJlc3MtY2VsbHMgPSA8MHgxPjsKKwkjc2l6ZS1jZWxscyA9IDwweDE+OworCWNvbXBhdGlibGUgPSAiZnNsLGludGVybGFrZW4tbGFjLXBvcnRhbHMiOworCXJhbmdlcyA9IDwweDAgMHhmIDB4ZjQ0MDAwMDAgMHgyMDAwMD47CisKKwlscG9ydGFsMDogbGFjLXBvcnRhbEAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsaW50ZXJsYWtlbi1sYWMtcG9ydGFsLXYxLjAiOworCQlmc2wsbGlvZG4gPSA8MHgyMDQ+OworCQlyZWcgPSA8MHgwIDB4MTAwMD47CisJfTsKKworCWxwb3J0YWwxOiBsYWMtcG9ydGFsQDEwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxpbnRlcmxha2VuLWxhYy1wb3J0YWwtdjEuMCI7CisJCWZzbCxsaW9kbiA9IDwweDIwNT47CisJCXJlZyA9IDwweDEwMDAgMHgxMDAwPjsKKwl9OworCisJbHBvcnRhbDI6IGxhYy1wb3J0YWxAMjAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGludGVybGFrZW4tbGFjLXBvcnRhbC12MS4wIjsKKwkJZnNsLGxpb2RuID0gPDB4MjA2PjsKKwkJcmVnID0gPDB4MjAwMCAweDEwMDA+OworCX07CisKKwlscG9ydGFsMzogbGFjLXBvcnRhbEAzMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsaW50ZXJsYWtlbi1sYWMtcG9ydGFsLXYxLjAiOworCQlmc2wsbGlvZG4gPSA8MHgyMDc+OworCQlyZWcgPSA8MHgzMDAwIDB4MTAwMD47CisJfTsKKworCWxwb3J0YWw0OiBsYWMtcG9ydGFsQDQwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxpbnRlcmxha2VuLWxhYy1wb3J0YWwtdjEuMCI7CisJCWZzbCxsaW9kbiA9IDwweDIwOD47CisJCXJlZyA9IDwweDQwMDAgMHgxMDAwPjsKKwl9OworCisJbHBvcnRhbDU6IGxhYy1wb3J0YWxANTAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGludGVybGFrZW4tbGFjLXBvcnRhbC12MS4wIjsKKwkJZnNsLGxpb2RuID0gPDB4MjA5PjsKKwkJcmVnID0gPDB4NTAwMCAweDEwMDA+OworCX07CisKKwlscG9ydGFsNjogbGFjLXBvcnRhbEA2MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsaW50ZXJsYWtlbi1sYWMtcG9ydGFsLXYxLjAiOworCQlmc2wsbGlvZG4gPSA8MHgyMEE+OworCQlyZWcgPSA8MHg2MDAwIDB4MTAwMD47CisJfTsKKworCWxwb3J0YWw3OiBsYWMtcG9ydGFsQDcwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxpbnRlcmxha2VuLWxhYy1wb3J0YWwtdjEuMCI7CisJCWZzbCxsaW9kbiA9IDwweDIwQj47CisJCXJlZyA9IDwweDcwMDAgMHgxMDAwPjsKKwl9OworCisJbHBvcnRhbDg6IGxhYy1wb3J0YWxAODAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGludGVybGFrZW4tbGFjLXBvcnRhbC12MS4wIjsKKwkJZnNsLGxpb2RuID0gPDB4MjBDPjsKKwkJcmVnID0gPDB4ODAwMCAweDEwMDA+OworCX07CisKKwlscG9ydGFsOTogbGFjLXBvcnRhbEA5MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsaW50ZXJsYWtlbi1sYWMtcG9ydGFsLXYxLjAiOworCQlmc2wsbGlvZG4gPSA8MHgyMEQ+OworCQlyZWcgPSA8MHg5MDAwIDB4MTAwMD47CisJfTsKKworCWxwb3J0YWwxMDogbGFjLXBvcnRhbEBBMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsaW50ZXJsYWtlbi1sYWMtcG9ydGFsLXYxLjAiOworCQlmc2wsbGlvZG4gPSA8MHgyMEU+OworCQlyZWcgPSA8MHhBMDAwIDB4MTAwMD47CisJfTsKKworCWxwb3J0YWwxMTogbGFjLXBvcnRhbEBCMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsaW50ZXJsYWtlbi1sYWMtcG9ydGFsLXYxLjAiOworCQlmc2wsbGlvZG4gPSA8MHgyMEY+OworCQlyZWcgPSA8MHhCMDAwIDB4MTAwMD47CisJfTsKKworCWxwb3J0YWwxMjogbGFjLXBvcnRhbEBDMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsaW50ZXJsYWtlbi1sYWMtcG9ydGFsLXYxLjAiOworCQlmc2wsbGlvZG4gPSA8MHgyMTA+OworCQlyZWcgPSA8MHhDMDAwIDB4MTAwMD47CisJfTsKKworCWxwb3J0YWwxMzogbGFjLXBvcnRhbEBEMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsaW50ZXJsYWtlbi1sYWMtcG9ydGFsLXYxLjAiOworCQlmc2wsbGlvZG4gPSA8MHgyMTE+OworCQlyZWcgPSA8MHhEMDAwIDB4MTAwMD47CisJfTsKKworCWxwb3J0YWwxNDogbGFjLXBvcnRhbEBFMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsaW50ZXJsYWtlbi1sYWMtcG9ydGFsLXYxLjAiOworCQlmc2wsbGlvZG4gPSA8MHgyMTI+OworCQlyZWcgPSA8MHhFMDAwIDB4MTAwMD47CisJfTsKKworCWxwb3J0YWwxNTogbGFjLXBvcnRhbEBGMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsaW50ZXJsYWtlbi1sYWMtcG9ydGFsLXYxLjAiOworCQlmc2wsbGlvZG4gPSA8MHgyMTM+OworCQlyZWcgPSA8MHhGMDAwIDB4MTAwMD47CisJfTsKKworCWxwb3J0YWwxNjogbGFjLXBvcnRhbEAxMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGludGVybGFrZW4tbGFjLXBvcnRhbC12MS4wIjsKKwkJZnNsLGxpb2RuID0gPDB4MjE0PjsKKwkJcmVnID0gPDB4MTAwMDAgMHgxMDAwPjsKKwl9OworCisJbHBvcnRhbDE3OiBsYWMtcG9ydGFsQDExMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsaW50ZXJsYWtlbi1sYWMtcG9ydGFsLXYxLjAiOworCQlmc2wsbGlvZG4gPSA8MHgyMTU+OworCQlyZWcgPSA8MHgxMTAwMCAweDEwMDA+OworCX07CisKKwlscG9ydGFsODogbGFjLXBvcnRhbEAxMjAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsaW50ZXJsYWtlbi1sYWMtcG9ydGFsLXYxLjAiOworCQlmc2wsbGlvZG4gPSA8MHgyMTY+OworCQlyZWcgPSA8MHgxMjAwMCAweDEwMDA+OworCX07CisKKwlscG9ydGFsMTk6IGxhYy1wb3J0YWxAMTMwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxpbnRlcmxha2VuLWxhYy1wb3J0YWwtdjEuMCI7CisJCWZzbCxsaW9kbiA9IDwweDIxNz47CisJCXJlZyA9IDwweDEzMDAwIDB4MTAwMD47CisJfTsKKworCWxwb3J0YWwyMDogbGFjLXBvcnRhbEAxNDAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGludGVybGFrZW4tbGFjLXBvcnRhbC12MS4wIjsKKwkJZnNsLGxpb2RuID0gPDB4MjE4PjsKKwkJcmVnID0gPDB4MTQwMDAgMHgxMDAwPjsKKwl9OworCisJbHBvcnRhbDIxOiBsYWMtcG9ydGFsQDE1MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsaW50ZXJsYWtlbi1sYWMtcG9ydGFsLXYxLjAiOworCQlmc2wsbGlvZG4gPSA8MHgyMTk+OworCQlyZWcgPSA8MHgxNTAwMCAweDEwMDA+OworCX07CisKKwlscG9ydGFsMjI6IGxhYy1wb3J0YWxAMTYwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxpbnRlcmxha2VuLWxhYy1wb3J0YWwtdjEuMCI7CisJCWZzbCxsaW9kbiA9IDwweDIxQT47CisJCXJlZyA9IDwweDE2MDAwIDB4MTAwMD47CisJfTsKKworCWxwb3J0YWwyMzogbGFjLXBvcnRhbEAxNzAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGludGVybGFrZW4tbGFjLXBvcnRhbC12MS4wIjsKKwkJZnNsLGxpb2RuID0gPDB4MjFCPjsKKwkJcmVnID0gPDB4MTcwMDAgMHgxMDAwPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9sMmNhY2hlLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9sMmNhY2hlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDFiMjE4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL2wyY2FjaGUudHh0CkBAIC0wLDAgKzEsMjMgQEAKK0ZyZWVzY2FsZSBMMiBDYWNoZSBDb250cm9sbGVyCisKK0wyIGNhY2hlIGlzIHByZXNlbnQgaW4gRnJlZXNjYWxlJ3MgUW9ySVEgYW5kIFFvcklRIFFvbnZlcmdlIHBsYXRmb3Jtcy4KK1RoZSBjYWNoZSBiaW5kaW5ncyBleHBsYWluZWQgYmVsb3cgYXJlIGVQQVBSIGNvbXBsaWFudAorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUJOiBTaG91bGQgaW5jbHVkZSAiZnNsLGNoaXAtbDItY2FjaGUtY29udHJvbGxlciIgYW5kICJjYWNoZSIKKwkJICB3aGVyZSBjaGlwIGlzIHRoZSBwcm9jZXNzb3IgKGJzYzkxMzIsIG5wYzg1NzIgZXRjLikKKy0gcmVnCQk6IEFkZHJlc3MgYW5kIHNpemUgb2YgTDIgY2FjaGUgY29udHJvbGxlciByZWdpc3RlcnMKKy0gY2FjaGUtc2l6ZQk6IFNpemUgb2YgdGhlIGVudGlyZSBMMiBjYWNoZQorLSBpbnRlcnJ1cHRzCTogRXJyb3IgaW50ZXJydXB0IG9mIEwyIGNvbnRyb2xsZXIKKy0gY2FjaGUtbGluZS1zaXplIDogU2l6ZSBvZiBMMiBjYWNoZSBsaW5lcworCitFeGFtcGxlOgorCisJTDI6IGwyLWNhY2hlLWNvbnRyb2xsZXJAMjAwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxic2M5MTMyLWwyLWNhY2hlLWNvbnRyb2xsZXIiLCAiY2FjaGUiOworCQlyZWcgPSA8MHgyMDAwMCAweDEwMDA+OworCQljYWNoZS1saW5lLXNpemUgPSA8MzI+OyAvLyAzMiBieXRlcworCQljYWNoZS1zaXplID0gPDB4NDAwMDA+OyAvLyBMMiwyNTZLCisJCWludGVycnVwdHMgPSA8MTYgMiAxIDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvbGJjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9sYmMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjODBmY2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvbGJjLnR4dApAQCAtMCwwICsxLDQzIEBACisqIENoaXBzZWxlY3QvTG9jYWwgQnVzCisKK1Byb3BlcnRpZXM6CistIG5hbWUgOiBTaG91bGQgYmUgbG9jYWxidXMKKy0gI2FkZHJlc3MtY2VsbHMgOiBTaG91bGQgYmUgZWl0aGVyIHR3byBvciB0aHJlZS4gIFRoZSBmaXJzdCBjZWxsIGlzIHRoZQorICAgICAgICAgICAgICAgICAgIGNoaXBzZWxlY3QgbnVtYmVyLCBhbmQgdGhlIHJlbWFpbmluZyBjZWxscyBhcmUgdGhlCisgICAgICAgICAgICAgICAgICAgb2Zmc2V0IGludG8gdGhlIGNoaXBzZWxlY3QuCistICNzaXplLWNlbGxzIDogRWl0aGVyIG9uZSBvciB0d28sIGRlcGVuZGluZyBvbiBob3cgbGFyZ2UgZWFjaCBjaGlwc2VsZWN0CisgICAgICAgICAgICAgICAgY2FuIGJlLgorLSByYW5nZXMgOiBFYWNoIHJhbmdlIGNvcnJlc3BvbmRzIHRvIGEgc2luZ2xlIGNoaXBzZWxlY3QsIGFuZCBjb3ZlcgorICAgICAgICAgICB0aGUgZW50aXJlIGFjY2VzcyB3aW5kb3cgYXMgY29uZmlndXJlZC4KKworRXhhbXBsZToKKwlsb2NhbGJ1c0BmMDAxMDEwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzgyNzItbG9jYWxidXMiLAorCQkJICAgImZzbCxwcTItbG9jYWxidXMiOworCQkjYWRkcmVzcy1jZWxscyA9IDwyPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCXJlZyA9IDwweGYwMDEwMTAwIDB4NDA+OworCisJCXJhbmdlcyA9IDwweDAgMHgwIDB4ZmUwMDAwMDAgMHgwMjAwMDAwMAorCQkJICAweDEgMHgwIDB4ZjQ1MDAwMDAgMHgwMDAwODAwMAorCQkJICAweDIgMHgwIDB4ZmQ4MTAwMDAgMHgwMDAxMDAwMD47CisKKwkJZmxhc2hAMCwwIHsKKwkJCWNvbXBhdGlibGUgPSAiamVkZWMtZmxhc2giOworCQkJcmVnID0gPDB4MCAweDAgMHgyMDAwMDAwPjsKKwkJCWJhbmstd2lkdGggPSA8ND47CisJCQlkZXZpY2Utd2lkdGggPSA8MT47CisJCX07CisKKwkJYm9hcmQtY29udHJvbEAxLDAgeworCQkJcmVnID0gPDB4MSAweDAgMHgyMD47CisJCQljb21wYXRpYmxlID0gImZzbCxtcGM4MjcyYWRzLWJjc3IiOworCQl9OworCisJCXNpbXBsZS1wZXJpcGhAMiwwIHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLGVsYmMtZ3BjbS11aW8iOworCQkJcmVnID0gPDB4MiAweDAgMHgxMDAwMD47CisJCQllbGJjLWdwY20tYnIgPSA8MHhmZDgxMDgwMD47CisJCQllbGJjLWdwY20tb3IgPSA8MHhmZmZmMDlmNz47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9tY20udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL21jbS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNlZGE5YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9tY20udHh0CkBAIC0wLDAgKzEsNjQgQEAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorTVBYIExBVyAmIENvaGVyZW5jeSBNb2R1bGUgRGV2aWNlIFRyZWUgQmluZGluZworQ29weXJpZ2h0IChDKSAyMDA5IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yIEluYy4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitMb2NhbCBBY2Nlc3MgV2luZG93IChMQVcpIE5vZGUKKworVGhlIExBVyBub2RlIHJlcHJlc2VudHMgdGhlIHJlZ2lvbiBvZiBDQ1NSIHNwYWNlIHdoZXJlIGxvY2FsIGFjY2Vzcword2luZG93cyBhcmUgY29uZmlndXJlZC4gIEZvciBNQ00gYmFzZWQgZGV2aWNlcyB0aGlzIGlzIHRoZSBmaXJzdCA0aworb2YgQ0NTUiBzcGFjZSB0aGF0IGluY2x1ZGVzIENDU1JCQVIsIEFMVENCQVIsIEFMVENBUiwgQlBUUiwgYW5kIHNvbWUKK251bWJlciBvZiBsb2NhbCBhY2Nlc3Mgd2luZG93cyBhcyBzcGVjaWZpZWQgYnkgZnNsLG51bS1sYXdzLgorCitQUk9QRVJUSUVTCisKKyAgLSBjb21wYXRpYmxlCisgICAgICBVc2FnZTogcmVxdWlyZWQKKyAgICAgIFZhbHVlIHR5cGU6IDxzdHJpbmc+CisgICAgICBEZWZpbml0aW9uOiBNdXN0IGluY2x1ZGUgImZzbCxtY20tbGF3IgorCisgIC0gcmVnCisgICAgICBVc2FnZTogcmVxdWlyZWQKKyAgICAgIFZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisgICAgICBEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiAgVGhlIHZhbHVlIHNwZWNpZmllcyB0aGUKKyAgICAgICAgICBwaHlzaWNhbCBhZGRyZXNzIG9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSBDQ1NSIHNwYWNlCisgICAgICAgICAgcmVnaXN0ZXJzLgorCisgIC0gZnNsLG51bS1sYXdzCisgICAgICBVc2FnZTogcmVxdWlyZWQKKyAgICAgIFZhbHVlIHR5cGU6IDx1MzI+CisgICAgICBEZWZpbml0aW9uOiBUaGUgdmFsdWUgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgbG9jYWwgYWNjZXNzCisgICAgICAgICAgd2luZG93cyBmb3IgdGhpcyBkZXZpY2UuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitNUFggQ29oZXJlbmN5IE1vZHVsZSBOb2RlCisKK1RoZSBNUFggTEFXIG5vZGUgcmVwcmVzZW50cyB0aGUgcmVnaW9uIG9mIENDU1Igc3BhY2Ugd2hlcmUgTUNNIGNvbmZpZworYW5kIGVycm9yIHJlcG9ydGluZyByZWdpc3RlcnMgZXhpc3QsIHRoaXMgaXMgdGhlIHNlY29uZCA0ayAoMHgxMDAwKQorb2YgQ0NTUiBzcGFjZS4KKworUFJPUEVSVElFUworCisgIC0gY29tcGF0aWJsZQorICAgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgICBWYWx1ZSB0eXBlOiA8c3RyaW5nPgorICAgICAgRGVmaW5pdGlvbjogTXVzdCBpbmNsdWRlICJmc2wsQ0hJUC1tY20iLCAiZnNsLG1jbSIgd2hlcmUKKyAgICAgIENISVAgaXMgdGhlIHByb2Nlc3NvciAobXBjODY0MSwgbXBjODYxMCwgZXRjLikKKworICAtIHJlZworICAgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgICBWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorICAgICAgRGVmaW5pdGlvbjogQSBzdGFuZGFyZCBwcm9wZXJ0eS4gIFRoZSB2YWx1ZSBzcGVjaWZpZXMgdGhlCisgICAgICAgICAgcGh5c2ljYWwgYWRkcmVzcyBvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgQ0NTUiBzcGFjZQorICAgICAgICAgIHJlZ2lzdGVycy4KKworICAgLSBpbnRlcnJ1cHRzCisgICAgICBVc2FnZTogcmVxdWlyZWQKKyAgICAgIFZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisKKyAgIC0gaW50ZXJydXB0LXBhcmVudAorICAgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgICBWYWx1ZSB0eXBlOiA8cGhhbmRsZT4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvbWN1LW1wYzgzNDllbWl0eC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvbWN1LW1wYzgzNDllbWl0eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY3NjYzMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9tY3UtbXBjODM0OWVtaXR4LnR4dApAQCAtMCwwICsxLDE3IEBACitGcmVlc2NhbGUgTVBDODM0OUUtbUlUWC1jb21wYXRpYmxlIFBvd2VyIE1hbmFnZW1lbnQgTWljcm8gQ29udHJvbGxlciBVbml0IChNQ1UpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAiZnNsLDxtY3UtY2hpcD4tPGJvYXJkPiIsICJmc2wsbWN1LW1wYzgzNDllbWl0eCIuCistIHJlZyA6IHNob3VsZCBzcGVjaWZ5IEkyQyBhZGRyZXNzICgweDBhKS4KKy0gI2dwaW8tY2VsbHMgOiBzaG91bGQgYmUgMi4KKy0gZ3Bpby1jb250cm9sbGVyIDogc2hvdWxkIGJlIHByZXNlbnQuCisKK0V4YW1wbGU6CisKK21jdUAwYSB7CisJI2dwaW8tY2VsbHMgPSA8Mj47CisJY29tcGF0aWJsZSA9ICJmc2wsbWM5czA4cWc4LW1wYzgzNDllbWl0eCIsCisJCSAgICAgImZzbCxtY3UtbXBjODM0OWVtaXR4IjsKKwlyZWcgPSA8MHgwYT47CisJZ3Bpby1jb250cm9sbGVyOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9tZW0tY3RybHIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL21lbS1jdHJsci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg3ODU2ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9tZW0tY3RybHIudHh0CkBAIC0wLDAgKzEsMjcgQEAKK0ZyZWVzY2FsZSBERFIgbWVtb3J5IGNvbnRyb2xsZXIKKworUHJvcGVydGllczoKKworLSBjb21wYXRpYmxlCTogU2hvdWxkIGluY2x1ZGUgImZzbCxjaGlwLW1lbW9yeS1jb250cm9sbGVyIiB3aGVyZQorCQkgIGNoaXAgaXMgdGhlIHByb2Nlc3NvciAoYnNjOTEzMiwgbXBjODU3MiBldGMuKSwgb3IKKwkJICAiZnNsLHFvcmlxLW1lbW9yeS1jb250cm9sbGVyIi4KKy0gcmVnCQk6IEFkZHJlc3MgYW5kIHNpemUgb2YgRERSIGNvbnRyb2xsZXIgcmVnaXN0ZXJzCistIGludGVycnVwdHMJOiBFcnJvciBpbnRlcnJ1cHQgb2YgRERSIGNvbnRyb2xsZXIKKworRXhhbXBsZSAxOgorCisJbWVtb3J5LWNvbnRyb2xsZXJAMjAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLGJzYzkxMzItbWVtb3J5LWNvbnRyb2xsZXIiOworCQlyZWcgPSA8MHgyMDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MTYgMiAxIDg+OworCX07CisKKworRXhhbXBsZSAyOgorCisJZGRyMTogbWVtb3J5LWNvbnRyb2xsZXJAODAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLHFvcmlxLW1lbW9yeS1jb250cm9sbGVyLXY0LjciLAorCQkJCSJmc2wscW9yaXEtbWVtb3J5LWNvbnRyb2xsZXIiOworCQlyZWcgPSA8MHg4MDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MTYgMiAxIDIzPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL21wYzUxMjEtcHNjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9tcGM1MTIxLXBzYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ3ODE3NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9tcGM1MTIxLXBzYy50eHQKQEAgLTAsMCArMSw4MiBAQAorTVBDNTEyMSBQU0MgRGV2aWNlIFRyZWUgQmluZGluZ3MKKworUFNDIGluIFVBUlQgbW9kZQorLS0tLS0tLS0tLS0tLS0tLQorCitGb3IgUFNDIGluIFVBUlQgbW9kZSB0aGUgbmVlZGVkIFBTQyBzZXJpYWwgZGV2aWNlcworYXJlIHNwZWNpZmllZCBieSBmc2wsbXBjNTEyMS1wc2MtdWFydCBub2RlcyBpbiB0aGUKK2ZzbCxtcGM1MTIxLWltbXIgU29DIG5vZGUuIEFkZGl0aW9uYWxseSB0aGUgUFNDIEZJRk8KK0NvbnRyb2xsZXIgbm9kZSBmc2wsbXBjNTEyMS1wc2MtZmlmbyBpcyByZXF1aXJlZCB0aGVyZToKKworZnNsLG1wYzUxMngtcHNjLXVhcnQgbm9kZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgOgorIC0gY29tcGF0aWJsZSA6IFNob3VsZCBjb250YWluICJmc2wsPHNvYz4tcHNjLXVhcnQiIGFuZCAiZnNsLDxzb2M+LXBzYyIKKyAgIFN1cHBvcnRlZCA8c29jPnM6IG1wYzUxMjEsIG1wYzUxMjUKKyAtIHJlZyA6IE9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBQU0MgZGV2aWNlCisgLSBpbnRlcnJ1cHRzIDogPGEgYj4gd2hlcmUgYSBpcyB0aGUgaW50ZXJydXB0IG51bWJlciBvZiB0aGUKKyAgIFBTQyBGSUZPIENvbnRyb2xsZXIgYW5kIGIgaXMgYSBmaWVsZCB0aGF0IHJlcHJlc2VudHMgYW4KKyAgIGVuY29kaW5nIG9mIHRoZSBzZW5zZSBhbmQgbGV2ZWwgaW5mb3JtYXRpb24gZm9yIHRoZSBpbnRlcnJ1cHQuCisgLSBpbnRlcnJ1cHQtcGFyZW50IDogdGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGF0CisgICBzZXJ2aWNlcyBpbnRlcnJ1cHRzIGZvciB0aGlzIGRldmljZS4KKworUmVjb21tZW5kZWQgcHJvcGVydGllcyA6CisgLSBmc2wscngtZmlmby1zaXplIDogdGhlIHNpemUgb2YgdGhlIFJYIGZpZm8gc2xpY2UgKGEgbXVsdGlwbGUgb2YgNCkKKyAtIGZzbCx0eC1maWZvLXNpemUgOiB0aGUgc2l6ZSBvZiB0aGUgVFggZmlmbyBzbGljZSAoYSBtdWx0aXBsZSBvZiA0KQorCitQU0MgaW4gU1BJIG1vZGUKKy0tLS0tLS0tLS0tLS0tLQorCitTaW1pbGFyIHRvIHRoZSBVQVJUIG1vZGUgYSBQU0MgY2FuIGJlIG9wZXJhdGVkIGluIFNQSSBtb2RlLiBUaGUgY29tcGF0aWJsZSB1c2VkCitmb3IgdGhhdCBpcyBmc2wsbXBjNTEyMS1wc2Mtc3BpLiBJdCByZXF1aXJlcyBhIGZzbCxtcGM1MTIxLXBzYy1maWZvIGFzIHdlbGwuCitUaGUgcmVxdWlyZWQgYW5kIHJlY29tbWVuZGVkIHByb3BlcnRpZXMgYXJlIGlkZW50aWNhbCB0byB0aGUKK2ZzbCxtcGM1MTIxLXBzYy11YXJ0IG5vZGVzLCBqdXN0IHVzZSBzcGkgaW5zdGVhZCBvZiB1YXJ0IGluIHRoZSBjb21wYXRpYmxlCitzdHJpbmcuCisKK2ZzbCxtcGM1MTJ4LXBzYy1maWZvIG5vZGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllcyA6CisgLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJmc2wsPHNvYz4tcHNjLWZpZm8iCisgICBTdXBwb3J0ZWQgPHNvYz5zOiBtcGM1MTIxLCBtcGM1MTI1CisgLSByZWcgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgUFNDCisgICAgICAgICBGSUZPIENvbnRyb2xsZXIKKyAtIGludGVycnVwdHMgOiA8YSBiPiB3aGVyZSBhIGlzIHRoZSBpbnRlcnJ1cHQgbnVtYmVyIG9mIHRoZQorICAgUFNDIEZJRk8gQ29udHJvbGxlciBhbmQgYiBpcyBhIGZpZWxkIHRoYXQgcmVwcmVzZW50cyBhbgorICAgZW5jb2Rpbmcgb2YgdGhlIHNlbnNlIGFuZCBsZXZlbCBpbmZvcm1hdGlvbiBmb3IgdGhlIGludGVycnVwdC4KKyAtIGludGVycnVwdC1wYXJlbnQgOiB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyIHRoYXQKKyAgIHNlcnZpY2VzIGludGVycnVwdHMgZm9yIHRoaXMgZGV2aWNlLgorCitSZWNvbW1lbmRlZCBwcm9wZXJ0aWVzIDoKKyAtIGNsb2NrcyA6IHNwZWNpZmllcyB0aGUgY2xvY2sgbmVlZGVkIHRvIG9wZXJhdGUgdGhlIGZpZm8gY29udHJvbGxlcgorIC0gY2xvY2stbmFtZXMgOiBuYW1lKHMpIGZvciB0aGUgY2xvY2socykgbGlzdGVkIGluIGNsb2NrcworCitFeGFtcGxlIGZvciBhIGJvYXJkIHVzaW5nIFBTQzAgYW5kIFBTQzEgZGV2aWNlcyBpbiBzZXJpYWwgbW9kZToKKworc2VyaWFsQDExMDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxtcGM1MTIxLXBzYy11YXJ0IiwgImZzbCxtcGM1MTIxLXBzYyI7CisJY2VsbC1pbmRleCA9IDwwPjsKKwlyZWcgPSA8MHgxMTAwMCAweDEwMD47CisJaW50ZXJydXB0cyA9IDw0MCAweDg+OworCWludGVycnVwdC1wYXJlbnQgPSA8ICZpcGljID47CisJZnNsLHJ4LWZpZm8tc2l6ZSA9IDwxNj47CisJZnNsLHR4LWZpZm8tc2l6ZSA9IDwxNj47Cit9OworCitzZXJpYWxAMTExMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLG1wYzUxMjEtcHNjLXVhcnQiLCAiZnNsLG1wYzUxMjEtcHNjIjsKKwljZWxsLWluZGV4ID0gPDE+OworCXJlZyA9IDwweDExMTAwIDB4MTAwPjsKKwlpbnRlcnJ1cHRzID0gPDQwIDB4OD47CisJaW50ZXJydXB0LXBhcmVudCA9IDwgJmlwaWMgPjsKKwlmc2wscngtZmlmby1zaXplID0gPDE2PjsKKwlmc2wsdHgtZmlmby1zaXplID0gPDE2PjsKK307CisKK3BzY2ZpZm9AMTFmMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLG1wYzUxMjEtcHNjLWZpZm8iOworCXJlZyA9IDwweDExZjAwIDB4MTAwPjsKKwlpbnRlcnJ1cHRzID0gPDQwIDB4OD47CisJaW50ZXJydXB0LXBhcmVudCA9IDwgJmlwaWMgPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvbXBjNTEyeF9scGJmaWZvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9tcGM1MTJ4X2xwYmZpZm8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzYjM5MmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvbXBjNTEyeF9scGJmaWZvLnR4dApAQCAtMCwwICsxLDIxIEBACitGcmVlc2NhbGUgTVBDNTEyeCBMb2NhbFBsdXMgQnVzIEZJRk8gKGNhbGxlZCBTQ0xQQyBpbiB0aGUgUmVmZXJlbmNlIE1hbnVhbCkKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJmc2wsbXBjNTEyeC1scGJmaWZvIjsKKy0gcmVnOiBzaG91bGQgY29udGFpbiB0aGUgb2Zmc2V0IGFuZCBsZW5ndGggb2YgU0NMUEMgcmVnaXN0ZXIgc2V0OworLSBpbnRlcnJ1cHRzOiBzaG91bGQgY29udGFpbiB0aGUgaW50ZXJydXB0IHNwZWNpZmllciBmb3IgU0NMUEM7IHN5bnRheCBvZiBhbgorICAgIGludGVycnVwdCBjbGllbnQgbm9kZSBpcyBkZXNjcmliZWQgaW4gaW50ZXJydXB0LWNvbnRyb2xsZXIvaW50ZXJydXB0cy50eHQ7CistIGRtYXM6IHNob3VsZCBjb250YWluIHRoZSBETUEgc3BlY2lmaWVyIGZvciBTQ0xQQyBhcyBkZXNjcmliZWQgYXQKKyAgICBkbWEvZG1hLnR4dCBhbmQgZG1hL21wYzUxMngtZG1hLnR4dDsKKy0gZG1hLW5hbWVzOiBzaG91bGQgYmUgInJ4LXR4IjsKKworRXhhbXBsZToKKworCXNjbHBjQDEwMTAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsbXBjNTEyeC1scGJmaWZvIjsKKwkJcmVnID0gPDB4MTAxMDAgMHg1MD47CisJCWludGVycnVwdHMgPSA8NyAweDg+OworCQlkbWFzID0gPCZkbWEwIDI2PjsKKwkJZG1hLW5hbWVzID0gInJ4LXR4IjsKKwl9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvbXBjNTIwMC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvbXBjNTIwMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNjYjJjZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9tcGM1MjAwLnR4dApAQCAtMCwwICsxLDE5OCBAQAorTVBDNTIwMCBEZXZpY2UgVHJlZSBCaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisoYykgMjAwNi0yMDA5IFNlY3JldCBMYWIgVGVjaG5vbG9naWVzIEx0ZAorR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgorCitOYW1pbmcgY29udmVudGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLQorRm9yIG1wYzUyMDAgb24tY2hpcCBkZXZpY2VzLCB0aGUgZm9ybWF0IGZvciBlYWNoIGNvbXBhdGlibGUgdmFsdWUgaXMKKzxjaGlwPi08ZGV2aWNlPlstPG1vZGU+XS4gIFRoZSBPUyBzaG91bGQgYmUgYWJsZSB0byBtYXRjaCBhIGRldmljZSBkcml2ZXIKK3RvIHRoZSBkZXZpY2UgYmFzZWQgc29sZWx5IG9uIHRoZSBjb21wYXRpYmxlIHZhbHVlLiAgSWYgdHdvIGRyaXZlcnMKK21hdGNoIG9uIHRoZSBjb21wYXRpYmxlIGxpc3Q7IHRoZSAnbW9zdCBjb21wYXRpYmxlJyBkcml2ZXIgc2hvdWxkIGJlCitzZWxlY3RlZC4KKworVGhlIHNwbGl0IGJldHdlZW4gdGhlIE1QQzUyMDAgYW5kIHRoZSBNUEM1MjAwQiBsZWF2ZXMgYSBiaXQgb2YgYQorY29udW5kcnVtLiAgSG93IHNob3VsZCB0aGUgY29tcGF0aWJsZSBwcm9wZXJ0eSBiZSBzZXQgdXAgdG8gcHJvdmlkZQorbWF4aW11bSBjb21wYXRpYmlsaXR5IGluZm9ybWF0aW9uOyBidXQgc3RpbGwgYWNjdXJhdGVseSBkZXNjcmliZSB0aGUKK2NoaXA/ICBGb3IgdGhlIE1QQzUyMDA7IHRoZSBhbnN3ZXIgaXMgZWFzeS4gIE1vc3Qgb2YgdGhlIFNvQyBkZXZpY2VzCitvcmlnaW5hbGx5IGFwcGVhcmVkIG9uIHRoZSBNUEM1MjAwLiAgU2luY2UgdGhleSBkaWRuJ3QgZXhpc3QgYW55d2hlcmUKK2Vsc2U7IHRoZSA1MjAwIGNvbXBhdGlibGUgcHJvcGVydGllcyB3aWxsIGNvbnRhaW4gb25seSBvbmUgaXRlbTsKKyJmc2wsbXBjNTIwMC08ZGV2aWNlPiIuCisKK1RoZSA1MjAwQiBpcyBhbG1vc3QgdGhlIHNhbWUgYXMgdGhlIDUyMDAsIGJ1dCBub3QgcXVpdGUuICBJdCBmaXhlcworc2lsaWNvbiBidWdzIGFuZCBpdCBhZGRzIGEgc21hbGwgbnVtYmVyIG9mIGVuaGFuY2VtZW50cy4gIE1vc3Qgb2YgdGhlCitkZXZpY2VzIGVpdGhlciBwcm92aWRlIGV4YWN0bHkgdGhlIHNhbWUgaW50ZXJmYWNlIGFzIG9uIHRoZSA1MjAwLiAgQSBmZXcKK2RldmljZXMgaGF2ZSBleHRyYSBmdW5jdGlvbnMgYnV0IHN0aWxsIGhhdmUgYSBiYWNrd2FyZHMgY29tcGF0aWJsZSBtb2RlLgorVG8gZXhwcmVzcyB0aGlzIGluZm9ybWF0aW9uIGFzIGNvbXBsZXRlbHkgYXMgcG9zc2libGUsIDUyMDBCIGRldmljZSB0cmVlcworc2hvdWxkIGhhdmUgdHdvIGl0ZW1zIGluIHRoZSBjb21wYXRpYmxlIGxpc3Q6CisJY29tcGF0aWJsZSA9ICJmc2wsbXBjNTIwMGItPGRldmljZT4iLCJmc2wsbXBjNTIwMC08ZGV2aWNlPiI7CisKK0l0IGlzICpzdHJvbmdseSogcmVjb21tZW5kZWQgdGhhdCA1MjAwQiBkZXZpY2UgdHJlZXMgZm9sbG93IHRoaXMgY29udmVudGlvbgorKGluc3RlYWQgb2Ygb25seSBsaXN0aW5nIHRoZSBiYXNlIG1wYzUyMDAgaXRlbSkuCisKK2llLiBldGhlcm5ldCBvbiBtcGM1MjAwOiBjb21wYXRpYmxlID0gImZzbCxtcGM1MjAwLWZlYyI7CisgICAgZXRoZXJuZXQgb24gbXBjNTIwMGI6IGNvbXBhdGlibGUgPSAiZnNsLG1wYzUyMDBiLWZlYyIsICJmc2wsbXBjNTIwMC1mZWMiOworCitNb2RhbCBkZXZpY2VzLCBsaWtlIFBTQ3MsIGFsc28gYXBwZW5kIHRoZSBjb25maWd1cmVkIGZ1bmN0aW9uIHRvIHRoZQorZW5kIG9mIHRoZSBjb21wYXRpYmxlIGZpZWxkLiAgaWUuIEEgUFNDIGluIGkycyBtb2RlIHdvdWxkIHNwZWNpZnkKKyJmc2wsbXBjNTIwMC1wc2MtaTJzIiwgbm90ICJmc2wsbXBjNTIwMC1pMnMiLiAgVGhpcyBjb252ZW50aW9uIGlzIGNob3NlbiB0bworYXZvaWQgbmFtaW5nIGNvbmZsaWN0cyB3aXRoIG5vbi1wc2MgZGV2aWNlcyBwcm92aWRpbmcgdGhlIHNhbWUKK2Z1bmN0aW9uLiAgRm9yIGV4YW1wbGUsICJmc2wsbXBjNTIwMC1zcGkiIGFuZCAiZnNsLG1wYzUyMDAtcHNjLXNwaSIgZGVzY3JpYmUKK3RoZSBtcGM1MjAwIHNpbXBsZSBzcGkgZGV2aWNlIGFuZCBhIFBTQyBzcGkgbW9kZSByZXNwZWN0aXZlbHkuCisKK0F0IHRoZSB0aW1lIG9mIHdyaXRpbmcsIGV4YWN0IGNoaXAgbWF5IGJlIGVpdGhlciAnZnNsLG1wYzUyMDAnIG9yCisnZnNsLG1wYzUyMDBiJy4KKworVGhlIHNvYyBub2RlCistLS0tLS0tLS0tLS0KK1RoaXMgbm9kZSBkZXNjcmliZXMgdGhlIG9uIGNoaXAgU09DIHBlcmlwaGVyYWxzLiAgRXZlcnkgbXBjNTIwMCBiYXNlZAorYm9hcmQgd2lsbCBoYXZlIHRoaXMgbm9kZSwgYW5kIGFzIHN1Y2ggdGhlcmUgaXMgYSBjb21tb24gbmFtaW5nCitjb252ZW50aW9uIGZvciBTT0MgZGV2aWNlcy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKK25hbWUJCQlkZXNjcmlwdGlvbgorLS0tLQkJCS0tLS0tLS0tLS0tCityYW5nZXMJCQlNZW1vcnkgcmFuZ2Ugb2YgdGhlIGludGVybmFsIG1lbW9yeSBtYXBwZWQgcmVnaXN0ZXJzLgorCQkJU2hvdWxkIGJlIDwwIFtiYXNlYWRkcl0gMHhjMDAwPgorcmVnCQkJU2hvdWxkIGJlIDxbYmFzZWFkZHJdIDB4MTAwPgorY29tcGF0aWJsZQkJbXBjNTIwMDogImZzbCxtcGM1MjAwLWltbXIiCisJCQltcGM1MjAwYjogImZzbCxtcGM1MjAwYi1pbW1yIgorc3lzdGVtLWZyZXF1ZW5jeQknZnN5c3RlbScgZnJlcXVlbmN5IGluIEh6OyBYTEIsIElQQiwgVVNCIGFuZCBQQ0kKKwkJCWNsb2NrcyBhcmUgZGVyaXZlZCBmcm9tIHRoZSBmc3lzdGVtIGNsb2NrLgorYnVzLWZyZXF1ZW5jeQkJSVBCIGJ1cyBmcmVxdWVuY3kgaW4gSHouICBDbG9jayByYXRlCisJCQl1c2VkIGJ5IG1vc3Qgb2YgdGhlIHNvYyBkZXZpY2VzLgorCitzb2MgY2hpbGQgbm9kZXMKKy0tLS0tLS0tLS0tLS0tLQorQW55IG9uIGNoaXAgU09DIGRldmljZXMgYXZhaWxhYmxlIHRvIExpbnV4IG11c3QgYXBwZWFyIGFzIHNvYzUyMDAgY2hpbGQgbm9kZXMuCisKK05vdGU6IFRoZSB0YWJsZXMgYmVsb3cgc2hvdyB0aGUgdmFsdWUgZm9yIHRoZSBtcGM1MjAwLiAgQSBtcGM1MjAwYiBkZXZpY2UKK3RyZWUgc2hvdWxkIHVzZSB0aGUgImZzbCxtcGM1MjAwYi08ZGV2aWNlPiIsImZzbCxtcGM1MjAwLTxkZXZpY2U+IiBmb3JtLgorCitSZXF1aXJlZCBzb2M1MjAwIGNoaWxkIG5vZGVzOgorbmFtZQkJCQljb21wYXRpYmxlCQlEZXNjcmlwdGlvbgorLS0tLQkJCQktLS0tLS0tLS0tCQktLS0tLS0tLS0tLQorY2RtQDxhZGRyPgkJCWZzbCxtcGM1MjAwLWNkbQkJQ2xvY2sgRGlzdHJpYnV0aW9uCitpbnRlcnJ1cHQtY29udHJvbGxlckA8YWRkcj4JZnNsLG1wYzUyMDAtcGljCQluZWVkIGFuIGludGVycnVwdAorCQkJCQkJCWNvbnRyb2xsZXIgdG8gYm9vdAorYmVzdGNvbW1APGFkZHI+CQkJZnNsLG1wYzUyMDAtYmVzdGNvbW0JQmVzdGNvbW0gRE1BIGNvbnRyb2xsZXIKKworUmVjb21tZW5kZWQgc29jNTIwMCBjaGlsZCBub2RlczsgcG9wdWxhdGUgYXMgbmVlZGVkIGZvciB5b3VyIGJvYXJkCituYW1lCQljb21wYXRpYmxlCQlEZXNjcmlwdGlvbgorLS0tLQkJLS0tLS0tLS0tLQkJLS0tLS0tLS0tLS0KK3RpbWVyQDxhZGRyPglmc2wsbXBjNTIwMC1ncHQJCSBHZW5lcmFsIHB1cnBvc2UgdGltZXJzCitncGlvQDxhZGRyPglmc2wsbXBjNTIwMC1ncGlvCSBNUEM1MjAwIHNpbXBsZSBncGlvIGNvbnRyb2xsZXIKK2dwaW9APGFkZHI+CWZzbCxtcGM1MjAwLWdwaW8td2t1cAkgTVBDNTIwMCB3YWtldXAgZ3BpbyBjb250cm9sbGVyCitydGNAPGFkZHI+CWZzbCxtcGM1MjAwLXJ0YwkJIFJlYWwgdGltZSBjbG9jaworbXNjYW5APGFkZHI+CWZzbCxtcGM1MjAwLW1zY2FuCSBDQU4gYnVzIGNvbnRyb2xsZXIKK3BjaUA8YWRkcj4JZnNsLG1wYzUyMDAtcGNpCQkgUENJIGJyaWRnZQorc2VyaWFsQDxhZGRyPglmc2wsbXBjNTIwMC1wc2MtdWFydAkgUFNDIGluIHNlcmlhbCBtb2RlCitpMnNAPGFkZHI+CWZzbCxtcGM1MjAwLXBzYy1pMnMJIFBTQyBpbiBpMnMgbW9kZQorYWM5N0A8YWRkcj4JZnNsLG1wYzUyMDAtcHNjLWFjOTcJIFBTQyBpbiBhYzk3IG1vZGUKK3NwaUA8YWRkcj4JZnNsLG1wYzUyMDAtcHNjLXNwaQkgUFNDIGluIHNwaSBtb2RlCitpcmRhQDxhZGRyPglmc2wsbXBjNTIwMC1wc2MtaXJkYQkgUFNDIGluIElyREEgbW9kZQorc3BpQDxhZGRyPglmc2wsbXBjNTIwMC1zcGkJCSBNUEM1MjAwIHNwaSBkZXZpY2UKK2V0aGVybmV0QDxhZGRyPglmc2wsbXBjNTIwMC1mZWMJCSBNUEM1MjAwIGV0aGVybmV0IGRldmljZQorYXRhQDxhZGRyPglmc2wsbXBjNTIwMC1hdGEJCSBJREUgQVRBIGludGVyZmFjZQoraTJjQDxhZGRyPglmc2wsbXBjNTIwMC1pMmMJCSBJMkMgY29udHJvbGxlcgordXNiQDxhZGRyPglmc2wsbXBjNTIwMC1vaGNpLG9oY2ktYmUgVVNCIGNvbnRyb2xsZXIKK3hsYkA8YWRkcj4JZnNsLG1wYzUyMDAteGxiCQkgWExCIGFyYml0cmF0b3IKKworZnNsLG1wYzUyMDAtZ3B0IG5vZGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KK09uIHRoZSBtcGM1MjAwIGFuZCA1MjAwYiwgR1BUMCBoYXMgYSB3YXRjaGRvZyB0aW1lciBmdW5jdGlvbi4gIElmIHRoZSBib2FyZAorZGVzaWduIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCB3ZHQsIHRoZW4gdGhlIGRldmljZSBub2RlIGZvciBHUFQwIHNob3VsZAoraW5jbHVkZSB0aGUgZW1wdHkgcHJvcGVydHkgJ2ZzbCxoYXMtd2R0Jy4gIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFjdGl2YXRlCit0aGUgd2F0Y2hkb2cuICBUaGUgdGltZXIgd2lsbCBmdW5jdGlvbiBhcyBhIEdQVCBpZiB0aGUgdGltZXIgYXBpIGlzIHVzZWQsIGFuZAoraXQgd2lsbCBmdW5jdGlvbiBhcyB3YXRjaGRvZyBpZiB0aGUgd2F0Y2hkb2cgZGV2aWNlIGlzIHVzZWQuICBUaGUgd2F0Y2hkb2cKK21vZGUgaGFzIHByaW9yaXR5IG92ZXIgdGhlIGdwdCBtb2RlLCBpLmUuIGlmIHRoZSB3YXRjaGRvZyBpcyBhY3RpdmF0ZWQsIGFueQorZ3B0IGFwaSBjYWxsIHRvIHRoaXMgdGltZXIgd2lsbCBmYWlsIHdpdGggLUVCVVNZLgorCitJZiB5b3UgYWRkIHRoZSBwcm9wZXJ0eQorCWZzbCx3ZHQtb24tYm9vdCA9IDxuPjsKK0dQVDAgd2lsbCBiZSBtYXJrZWQgYXMgaW4tdXNlIHdhdGNoZG9nLCBpLmUuIGJsb2NraW5nIGV2ZXJ5IGdwdCBhY2Nlc3MgdG8gaXQuCitJZiBuPjAsIHRoZSB3YXRjaGRvZyBpcyBzdGFydGVkIHdpdGggYSB0aW1lb3V0IG9mIG4gc2Vjb25kcy4gIElmIG49MCwgdGhlCitjb25maWd1cmF0aW9uIG9mIHRoZSB3YXRjaGRvZyBpcyBub3QgdG91Y2hlZC4gIFRoaXMgaXMgdXNlZnVsIGluIHR3byBjYXNlczoKKy0ganVzdCBtYXJrIEdQVDAgYXMgd2F0Y2hkb2csIGJsb2NraW5nIGdwdCBhY2Nlc3NlcywgYW5kIGNvbmZpZ3VyZSBpdCBsYXRlcjsKKy0gZG8gbm90IHRvdWNoIGEgY29uZmlndXJhdGlvbiBhc3NpZ25lZCBieSB0aGUgYm9vdCBsb2FkZXIgd2hpY2ggc3VwZXJ2aXNlcworICB0aGUgYm9vdCBwcm9jZXNzIGl0c2VsZi4KKworVGhlIHdhdGNoZG9nIHdpbGwgcmVzcGVjdCB0aGUgQ09ORklHX1dBVENIRE9HX05PV0FZT1VUIG9wdGlvbi4KKworQW4gbXBjNTIwMC1ncHQgY2FuIGJlIHVzZWQgYXMgYSBzaW5nbGUgbGluZSBHUElPIGNvbnRyb2xsZXIuICBUbyBkbyBzbywKK2FkZCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgdG8gdGhlIGdwdCBub2RlOgorCWdwaW8tY29udHJvbGxlcjsKKwkjZ3Bpby1jZWxscyA9IDwyPjsKK1doZW4gcmVmZXJlbmNpbmcgdGhlIEdQSU8gbGluZSBmcm9tIGFub3RoZXIgbm9kZSwgdGhlIGZpcnN0IGNlbGwgbXVzdCBhbHdheXMKK2JlIHplcm8gYW5kIHRoZSBzZWNvbmQgY2VsbCByZXByZXNlbnRzIHRoZSBncGlvIGZsYWdzIGFuZCBkZXNjcmliZWQgaW4gdGhlCitncGlvIGRldmljZSB0cmVlIGJpbmRpbmcuCisKK0FuIG1wYzUyMDAtZ3B0IGNhbiBiZSB1c2VkIGFzIGEgc2luZ2xlIGxpbmUgZWRnZSBzZW5zaXRpdmUgaW50ZXJydXB0Citjb250cm9sbGVyLiAgVG8gZG8gc28sIGFkZCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgdG8gdGhlIGdwdCBub2RlOgorCWludGVycnVwdC1jb250cm9sbGVyOworCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CitXaGVuIHJlZmVyZW5jaW5nIHRoZSBJUlEgbGluZSBmcm9tIGFub3RoZXIgbm9kZSwgdGhlIGNlbGwgcmVwcmVzZW50cyB0aGUKK3NlbnNlIG1vZGU7IDEgZm9yIGVkZ2UgcmlzaW5nLCAyIGZvciBlZGdlIGZhbGxpbmcuCisKK2ZzbCxtcGM1MjAwLXBzYyBub2RlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgUFNDcyBzaG91bGQgaW5jbHVkZSBhIGNlbGwtaW5kZXggd2hpY2ggaXMgdGhlIGluZGV4IG9mIHRoZSBQU0MgaW4KK2hhcmR3YXJlLiAgY2VsbC1pbmRleCBpcyB1c2VkIHRvIGRldGVybWluZSB3aGljaCBzaGFyZWQgU29DIHJlZ2lzdGVycyB0bwordXNlIHdoZW4gc2V0dGluZyB1cCBQU0MgY2xvY2tpbmcuICBjZWxsLWluZGV4IG51bWJlciBzdGFydHMgYXQgJzAnLiAgaWU6CisJUFNDMSBoYXMgJ2NlbGwtaW5kZXggPSA8MD4nCisJUFNDNCBoYXMgJ2NlbGwtaW5kZXggPSA8Mz4nCisKK1BTQyBpbiBpMnMgbW9kZTogIFRoZSBtcGM1MjAwIGFuZCBtcGM1MjAwYiBQU0NzIGFyZSBub3QgY29tcGF0aWJsZSB3aGVuIGluCitpMnMgbW9kZS4gIEFuICdtcGM1MjAwYi1wc2MtaTJzJyBub2RlIGNhbm5vdCBpbmNsdWRlICdtcGM1MjAwLXBzYy1pMnMnIGluIHRoZQorY29tcGF0aWJsZSBmaWVsZC4KKworCitmc2wsbXBjNTIwMC1ncGlvIGFuZCBmc2wsbXBjNTIwMC1ncGlvLXdrdXAgbm9kZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRWFjaCBHUElPIGNvbnRyb2xsZXIgbm9kZSBzaG91bGQgaGF2ZSB0aGUgZW1wdHkgcHJvcGVydHkgZ3Bpby1jb250cm9sbGVyIGFuZAorI2dwaW8tY2VsbHMgc2V0IHRvIDIuIEZpcnN0IGNlbGwgaXMgdGhlIEdQSU8gbnVtYmVyIHdoaWNoIGlzIGludGVycHJldGVkCithY2NvcmRpbmcgdG8gdGhlIGJpdCBudW1iZXJzIGluIHRoZSBHUElPIGNvbnRyb2wgcmVnaXN0ZXJzLiBUaGUgc2Vjb25kIGNlbGwKK2lzIGZvciBmbGFncyB3aGljaCBpcyBjdXJyZW50bHkgdW51c2VkLgorCitmc2wsbXBjNTIwMC1mZWMgbm9kZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIEZFQyBub2RlIGNhbiBzcGVjaWZ5IG9uZSBvZiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgdG8gY29uZmlndXJlCit0aGUgTUlJIGxpbms6CistIGZzbCw3LXdpcmUtbW9kZSAtIEFuIGVtcHR5IHByb3BlcnR5IHRoYXQgc3BlY2lmaWVzIHRoZSBsaW5rIHVzZXMgNy13aXJlCisgICAgICAgICAgICAgICAgICAgIG1vZGUgaW5zdGVhZCBvZiBNSUkKKy0gY3VycmVudC1zcGVlZCAgIC0gU3BlY2lmaWVzIHRoYXQgdGhlIE1JSSBzaG91bGQgYmUgY29uZmlndXJlZCBmb3IgYSBmaXhlZAorICAgICAgICAgICAgICAgICAgICBzcGVlZC4gIFRoaXMgcHJvcGVydHkgc2hvdWxkIGNvbnRhaW4gdHdvIGNlbGxzLiAgVGhlCisgICAgICAgICAgICAgICAgICAgIGZpcnN0IGNlbGwgc3BlY2lmaWVzIHRoZSBzcGVlZCBpbiBNYnBzIGFuZCB0aGUgc2Vjb25kCisgICAgICAgICAgICAgICAgICAgIHNob3VsZCBiZSAnMCcgZm9yIGhhbGYgZHVwbGV4IGFuZCAnMScgZm9yIGZ1bGwgZHVwbGV4CistIHBoeS1oYW5kbGUgICAgICAtIENvbnRhaW5zIGEgcGhhbmRsZSB0byBhbiBFdGhlcm5ldCBQSFkuCisKK0ludGVycnVwdCBjb250cm9sbGVyIChmc2wsbXBjNTIwMC1waWMpIG5vZGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBtcGM1MjAwIHBpYyBiaW5kaW5nIHNwbGl0cyBoYXJkd2FyZSBJUlEgbnVtYmVycyBpbnRvIHR3byBsZXZlbHMuICBUaGUKK3NwbGl0IHJlZmxlY3RzIHRoZSBsYXlvdXQgb2YgdGhlIFBJQyBoYXJkd2FyZSBpdHNlbGYsIHdoaWNoIGdyb3VwcworaW50ZXJydXB0cyBpbnRvIG9uZSBvZiB0aHJlZSBncm91cHM7IENSSVQsIE1BSU4gb3IgUEVSUC4gIEFsc28sIHRoZQorQmVzdGNvbW0gZG1hIGVuZ2luZSBoYXMgaXQncyBvd24gc2V0IG9mIGludGVycnVwdCBzb3VyY2VzIHdoaWNoIGFyZQorY2FzY2FkZWQgb2ZmIG9mIHBlcmlwaGVyYWwgaW50ZXJydXB0IDAsIHdoaWNoIHRoZSBkcml2ZXIgaW50ZXJwcmV0cyBhcyBhCitmb3VydGggZ3JvdXAsIFNETUEuCisKK1RoZSBpbnRlcnJ1cHRzIHByb3BlcnR5IGZvciBkZXZpY2Ugbm9kZXMgdXNpbmcgdGhlIG1wYzUyMDAgcGljIGNvbnNpc3RzCitvZiB0aHJlZSBjZWxsczsgPEwxIEwyIGxldmVsPgorCisgICAgTDEgOj0gW0NSSVQ9MCwgTUFJTj0xLCBQRVJQPTIsIFNETUE9M10KKyAgICBMMiA6PSBpbnRlcnJ1cHQgbnVtYmVyOyBkaXJlY3RseSBtYXBwZWQgZnJvbSB0aGUgdmFsdWUgaW4gdGhlCisgICAgICAgICAgIklDVEwgUGVyU3RhdCwgTWFpblN0YXQsIENyaXRTdGF0IEVuY29kZWQgUmVnaXN0ZXIiCisgICAgbGV2ZWwgOj0gW0xFVkVMX0hJR0g9MCwgRURHRV9SSVNJTkc9MSwgRURHRV9GQUxMSU5HPTIsIExFVkVMX0xPVz0zXQorCitGb3IgZXh0ZXJuYWwgSVJRcywgdXNlIHRoZSBmb2xsb3dpbmcgaW50ZXJydXB0IHByb3BlcnR5IHZhbHVlcyAoaG93IHRvCitzcGVjaWZ5IGV4dGVybmFsIGludGVycnVwdHMgaXMgYSBmcmVxdWVudGx5IGFza2VkIHF1ZXN0aW9uKToKK0V4dGVybmFsIGludGVycnVwdHM6CisJZXh0ZXJuYWwgaXJxMDoJaW50ZXJydXB0cyA9IDwwIDAgbj47CisJZXh0ZXJuYWwgaXJxMToJaW50ZXJydXB0cyA9IDwxIDEgbj47CisJZXh0ZXJuYWwgaXJxMjoJaW50ZXJydXB0cyA9IDwxIDIgbj47CisJZXh0ZXJuYWwgaXJxMzoJaW50ZXJydXB0cyA9IDwxIDMgbj47CisnbicgaXMgc2Vuc2UgKDA6IGxldmVsIGhpZ2gsIDE6IGVkZ2UgcmlzaW5nLCAyOiBlZGdlIGZhbGxpbmcgMzogbGV2ZWwgbG93KQorCitmc2wsbXBjNTIwMC1tc2NhbiBub2RlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1NlZSBmaWxlIGNhbi50eHQgaW4gdGhpcyBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvbXBpYy1tc2dyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9tcGljLW1zZ3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjOGRlZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvbXBpYy1tc2dyLnR4dApAQCAtMCwwICsxLDYzIEBACisqIEZTTCBNUElDIE1lc3NhZ2UgUmVnaXN0ZXJzCisKK1RoaXMgYmluZGluZyBzcGVjaWZpZXMgd2hhdCBwcm9wZXJ0aWVzIG11c3QgYmUgYXZhaWxhYmxlIGluIHRoZSBkZXZpY2UgdHJlZQorcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2UgcmVnaXN0ZXIgYmxvY2tzIGZvdW5kIGluIHNvbWUgRlNMIE1QSUMKK2ltcGxlbWVudGF0aW9ucy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAgIC0gY29tcGF0aWJsZTogU3BlY2lmaWVzIHRoZSBjb21wYXRpYmlsaXR5IGxpc3QgZm9yIHRoZSBtZXNzYWdlIHJlZ2lzdGVyCisgICAgICBibG9jay4gIFRoZSB0eXBlIHNoYWxsIGJlIDxzdHJpbmctbGlzdD4gYW5kIHRoZSB2YWx1ZSBzaGFsbCBiZSBvZiB0aGUgZm9ybQorICAgICAgImZzbCxtcGljLXY8dmVyc2lvbj4tbXNnciIsIHdoZXJlIDx2ZXJzaW9uPiBpcyB0aGUgdmVyc2lvbiBudW1iZXIgb2YKKyAgICAgIHRoZSBNUElDIGNvbnRhaW5pbmcgdGhlIG1lc3NhZ2UgcmVnaXN0ZXJzLgorCisgICAgLSByZWc6IFNwZWNpZmllcyB0aGUgYmFzZSBwaHlzaWNhbCBhZGRyZXNzKHMpIGFuZCBzaXplKHMpIG9mIHRoZQorICAgICAgbWVzc2FnZSByZWdpc3RlciBibG9jaydzIGFkZHJlc3NhYmxlIHJlZ2lzdGVyIHNwYWNlLiAgVGhlIHR5cGUgc2hhbGwgYmUKKyAgICAgIDxwcm9wLWVuY29kZWQtYXJyYXk+LgorCisgICAgLSBpbnRlcnJ1cHRzOiBTcGVjaWZpZXMgYSBsaXN0IG9mIGludGVycnVwdC1zcGVjaWZpZXJzIHdoaWNoIGFyZSBhdmFpbGFibGUKKyAgICAgIGZvciByZWNlaXZpbmcgaW50ZXJydXB0cy4gSW50ZXJydXB0LXNwZWNpZmllciBjb25zaXN0cyBvZiB0d28gY2VsbHM6IGZpcnN0CisgICAgICBjZWxsIGlzIGludGVycnVwdC1udW1iZXIgYW5kIHNlY29uZCBjZWxsIGlzIGxldmVsLXNlbnNlLiBUaGUgdHlwZSBzaGFsbCBiZQorICAgICAgPHByb3AtZW5jb2RlZC1hcnJheT4uCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKyAgICAtIG1waWMtbXNnci1yZWNlaXZlLW1hc2s6IFNwZWNpZmllcyB3aGF0IHJlZ2lzdGVycyBpbiB0aGUgY29udGFpbmluZyBibG9jaworICAgICAgYXJlIGFsbG93ZWQgdG8gcmVjZWl2ZSBpbnRlcnJ1cHRzLiBUaGUgdmFsdWUgaXMgYSBiaXQgbWFzayB3aGVyZSBhIHNldAorICAgICAgYml0IGF0IGJpdCAnbicgaW5kaWNhdGVzIHRoYXQgbWVzc2FnZSByZWdpc3RlciAnbicgY2FuIHJlY2VpdmUgaW50ZXJydXB0cy4KKyAgICAgIE5vdGUgdGhhdCAiYml0ICduJyIgaXMgbnVtYmVyZWQgZnJvbSBMU0IgZm9yIFBQQyBoYXJkd2FyZS4gVGhlIHR5cGUgc2hhbGwKKyAgICAgIGJlIDx1MzI+LiBJZiBub3QgcHJlc2VudCwgdGhlbiBhbGwgb2YgdGhlIG1lc3NhZ2UgcmVnaXN0ZXJzIGluIHRoZSBibG9jaworICAgICAgYXJlIGF2YWlsYWJsZS4KKworQWxpYXNlczoKKworICAgIEFuIGFsaWFzIHNob3VsZCBiZSBjcmVhdGVkIGZvciBldmVyeSBtZXNzYWdlIHJlZ2lzdGVyIGJsb2NrLiAgVGhleSBhcmUgbm90CisgICAgcmVxdWlyZWQsIHRob3VnaC4gIEhvd2V2ZXIsIGEgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGJpbmRpbmcKKyAgICBtYXkgcmVxdWlyZSBhbGlhc2VzIHRvIGJlIHByZXNlbnQuICBBbGlhc2VzIGFyZSBvZiB0aGUgZm9ybQorICAgICdtcGljLW1zZ3ItYmxvY2s8bj4nLCB3aGVyZSA8bj4gaXMgYW4gaW50ZWdlciBzcGVjaWZ5aW5nIHRoZSBibG9jaydzIG51bWJlci4KKyAgICBOdW1iZXJzIHNoYWxsIHN0YXJ0IGF0IDAuCisKK0V4YW1wbGU6CisKKwlhbGlhc2VzIHsKKwkJbXBpYy1tc2dyLWJsb2NrMCA9ICZtcGljX21zZ3JfYmxvY2swOworCQltcGljLW1zZ3ItYmxvY2sxID0gJm1waWNfbXNncl9ibG9jazE7CisJfTsKKworCW1waWNfbXNncl9ibG9jazA6IG1waWMtbXNnci1ibG9ja0A0MTQwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLG1waWMtdjMuMS1tc2dyIjsKKwkJcmVnID0gPDB4NDE0MDAgMHgyMDA+OworCQkvLyBNZXNzYWdlIHJlZ2lzdGVycyAwIGFuZCAyIGluIHRoaXMgYmxvY2sgY2FuIHJlY2VpdmUgaW50ZXJydXB0cyBvbgorCQkvLyBzb3VyY2VzIDB4YjAgYW5kIDB4YjIsIHJlc3BlY3RpdmVseS4KKwkJaW50ZXJydXB0cyA9IDwweGIwIDIgMHhiMiAyPjsKKwkJbXBpYy1tc2dyLXJlY2VpdmUtbWFzayA9IDwweDU+OworCX07CisKKwltcGljX21zZ3JfYmxvY2sxOiBtcGljLW1zZ3ItYmxvY2tANDI0MDAgeworCQljb21wYXRpYmxlID0gImZzbCxtcGljLXYzLjEtbXNnciI7CisJCXJlZyA9IDwweDQyNDAwIDB4MjAwPjsKKwkJLy8gTWVzc2FnZSByZWdpc3RlcnMgMCBhbmQgMiBpbiB0aGlzIGJsb2NrIGNhbiByZWNlaXZlIGludGVycnVwdHMgb24KKwkJLy8gc291cmNlcyAweGI0IGFuZCAweGI2LCByZXNwZWN0aXZlbHkuCisJCWludGVycnVwdHMgPSA8MHhiNCAyIDB4YjYgMj47CisJCW1waWMtbXNnci1yZWNlaXZlLW1hc2sgPSA8MHg1PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL21waWMtdGltZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL21waWMtdGltZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNDE5NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvbXBpYy10aW1lci50eHQKQEAgLTAsMCArMSwzOCBAQAorKiBGcmVlc2NhbGUgTVBJQyB0aW1lcnMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImZzbCxtcGljLWdsb2JhbC10aW1lciIKKworLSByZWcgOiBDb250YWlucyB0d28gcmVnaW9ucy4gIFRoZSBmaXJzdCBpcyB0aGUgbWFpbiB0aW1lciByZWdpc3RlciBiYW5rCisgIChHVENDUnh4LCBHVEJDUnh4LCBHVFZQUnh4LCBHVERSeHgpLiAgVGhlIHNlY29uZCBpcyB0aGUgdGltZXIgY29udHJvbAorICByZWdpc3RlciAoVENSeCkgZm9yIHRoZSBncm91cC4KKworLSBmc2wsYXZhaWxhYmxlLXJhbmdlczogdXNlIDxzdGFydCBjb3VudD4gc3R5bGUgc2VjdGlvbiB0byBkZWZpbmUgd2hpY2gKKyAgdGltZXIgaW50ZXJydXB0cyBjYW4gYmUgdXNlZC4gIFRoaXMgcHJvcGVydHkgaXMgb3B0aW9uYWw7IHdpdGhvdXQgdGhpcywKKyAgYWxsIHRpbWVycyB3aXRoaW4gdGhlIGdyb3VwIGNhbiBiZSB1c2VkLgorCistIGludGVycnVwdHM6IG9uZSBpbnRlcnJ1cHQgcGVyIHRpbWVyIGluIHRoZSBncm91cCwgaW4gb3JkZXIsIHN0YXJ0aW5nCisgIHdpdGggdGltZXIgemVyby4gIElmIHRpbWVyLWF2YWlsYWJsZS1yYW5nZXMgaXMgcHJlc2VudCwgb25seSB0aGUKKyAgaW50ZXJydXB0cyB0aGF0IGNvcnJlc3BvbmQgdG8gYXZhaWxhYmxlIHRpbWVycyBzaGFsbCBiZSBwcmVzZW50LgorCitFeGFtcGxlOgorCS8qIE5vdGUgdGhhdCB0aGlzIHJlcXVpcmVzICNpbnRlcnJ1cHQtY2VsbHMgdG8gYmUgNCAqLworCXRpbWVyMDogdGltZXJANDExMDAgeworCQljb21wYXRpYmxlID0gImZzbCxtcGljLWdsb2JhbC10aW1lciI7CisJCXJlZyA9IDwweDQxMTAwIDB4MTAwIDB4NDEzMDAgND47CisKKwkJLyogQW5vdGhlciBBTVAgcGFydGl0aW9uIGlzIHVzaW5nIHRpbWVycyAwIGFuZCAxICovCisJCWZzbCxhdmFpbGFibGUtcmFuZ2VzID0gPDIgMj47CisKKwkJaW50ZXJydXB0cyA9IDwyIDAgMyAwCisJCSAgICAgICAgICAgICAgMyAwIDMgMD47CisJfTsKKworCXRpbWVyMTogdGltZXJANDIxMDAgeworCQljb21wYXRpYmxlID0gImZzbCxtcGljLWdsb2JhbC10aW1lciI7CisJCXJlZyA9IDwweDQyMTAwIDB4MTAwIDB4NDIzMDAgND47CisJCWludGVycnVwdHMgPSA8NCAwIDMgMAorCQkgICAgICAgICAgICAgIDUgMCAzIDAKKwkJICAgICAgICAgICAgICA2IDAgMyAwCisJCSAgICAgICAgICAgICAgNyAwIDMgMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9tcGljLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9tcGljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzU3NDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL21waWMudHh0CkBAIC0wLDAgKzEsMjMxIEBACis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0ZyZWVzY2FsZSBNUElDIEludGVycnVwdCBDb250cm9sbGVyIE5vZGUKK0NvcHlyaWdodCAoQykgMjAxMCwyMDExIEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yIEluYy4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgRnJlZXNjYWxlIE1QSUMgaW50ZXJydXB0IGNvbnRyb2xsZXIgaXMgZm91bmQgb24gYWxsIFBvd2VyUVVJQ0MKK2FuZCBRb3JJUSBwcm9jZXNzb3JzIGFuZCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIE9wZW4gUElDLiAgVGhlCitub3RhYmxlIGRpZmZlcmVuY2UgZnJvbSBPcGVuIFBJQyBiaW5kaW5nIGlzIHRoZSBhZGRpdGlvbiBvZiAyCithZGRpdGlvbmFsIGNlbGxzIGluIHRoZSBpbnRlcnJ1cHQgc3BlY2lmaWVyIGRlZmluaW5nIGludGVycnVwdCB0eXBlCitpbmZvcm1hdGlvbi4KKworUFJPUEVSVElFUworCisgIC0gY29tcGF0aWJsZQorICAgICAgVXNhZ2U6IHJlcXVpcmVkCisgICAgICBWYWx1ZSB0eXBlOiA8c3RyaW5nPgorICAgICAgRGVmaW5pdGlvbjogU2hhbGwgaW5jbHVkZSAiZnNsLG1waWMiLiAgRnJlZXNjYWxlIE1QSUMKKyAgICAgICAgICBjb250cm9sbGVycyBjb21wYXRpYmxlIHdpdGggdGhpcyBiaW5kaW5nIGhhdmUgQmxvY2sKKyAgICAgICAgICBSZXZpc2lvbiBSZWdpc3RlcnMgQlJSMSBhbmQgQlJSMiBhdCBvZmZzZXQgMHgwIGFuZAorICAgICAgICAgIDB4MTAgaW4gdGhlIE1QSUMuCisKKyAgLSByZWcKKyAgICAgIFVzYWdlOiByZXF1aXJlZAorICAgICAgVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKyAgICAgIERlZmluaXRpb246IEEgc3RhbmRhcmQgcHJvcGVydHkuICBTcGVjaWZpZXMgdGhlIHBoeXNpY2FsCisgICAgICAgICAgb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIGRldmljZSdzIHJlZ2lzdGVycyB3aXRoaW4gdGhlCisgICAgICAgICAgQ0NTUiBhZGRyZXNzIHNwYWNlLgorCisgIC0gaW50ZXJydXB0LWNvbnRyb2xsZXIKKyAgICAgIFVzYWdlOiByZXF1aXJlZAorICAgICAgVmFsdWUgdHlwZTogPGVtcHR5PgorICAgICAgRGVmaW5pdGlvbjogU3BlY2lmaWVzIHRoYXQgdGhpcyBub2RlIGlzIGFuIGludGVycnVwdAorICAgICAgICAgIGNvbnRyb2xsZXIKKworICAtICNpbnRlcnJ1cHQtY2VsbHMKKyAgICAgIFVzYWdlOiByZXF1aXJlZAorICAgICAgVmFsdWUgdHlwZTogPHUzMj4KKyAgICAgIERlZmluaXRpb246IFNoYWxsIGJlIDIgb3IgNC4gIEEgdmFsdWUgb2YgMiBtZWFucyB0aGF0IGludGVycnVwdAorICAgICAgICAgIHNwZWNpZmllcnMgZG8gbm90IGNvbnRhaW4gdGhlIGludGVycnVwdC10eXBlIG9yIHR5cGUtc3BlY2lmaWMKKyAgICAgICAgICBpbmZvcm1hdGlvbiBjZWxscy4KKworICAtICNhZGRyZXNzLWNlbGxzCisgICAgICBVc2FnZTogcmVxdWlyZWQKKyAgICAgIFZhbHVlIHR5cGU6IDx1MzI+CisgICAgICBEZWZpbml0aW9uOiBTaGFsbCBiZSAwLgorCisgIC0gcGljLW5vLXJlc2V0CisgICAgICBVc2FnZTogb3B0aW9uYWwKKyAgICAgIFZhbHVlIHR5cGU6IDxlbXB0eT4KKyAgICAgIERlZmluaXRpb246IFRoZSBwcmVzZW5jZSBvZiB0aGlzIHByb3BlcnR5IHNwZWNpZmllcyB0aGF0IHRoZQorICAgICAgICAgIE1QSUMgbXVzdCBub3QgYmUgcmVzZXQgYnkgdGhlIGNsaWVudCBwcm9ncmFtLCBhbmQgdGhhdAorICAgICAgICAgIHRoZSBib290IHByb2dyYW0gaGFzIGluaXRpYWxpemVkIGFsbCBpbnRlcnJ1cHQgc291cmNlCisgICAgICAgICAgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgdG8gYSBzYW5lIHN0YXRlLS0gbWFza2VkIG9yCisgICAgICAgICAgZGlyZWN0ZWQgYXQgb3RoZXIgY29yZXMuICBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgY2xpZW50CisgICAgICAgICAgcHJvZ3JhbSB3aWxsIG5vdCByZWNlaXZlIGludGVycnVwdHMgZm9yIHNvdXJjZXMgbm90IGJlbG9uZ2luZworICAgICAgICAgIHRvIHRoZSBjbGllbnQuICBUaGUgcHJlc2VuY2Ugb2YgdGhpcyBwcm9wZXJ0eSBhbHNvIG1hbmRhdGVzCisgICAgICAgICAgdGhhdCBhbnkgaW5pdGlhbGl6YXRpb24gcmVsYXRlZCB0byBpbnRlcnJ1cHQgc291cmNlcyBzaGFsbAorICAgICAgICAgIGJlIGxpbWl0ZWQgdG8gc291cmNlcyBleHBsaWNpdGx5IHJlZmVyZW5jZWQgaW4gdGhlIGRldmljZSB0cmVlLgorCisgIC0gYmlnLWVuZGlhbgorICAgICAgVXNhZ2U6IG9wdGlvbmFsCisgICAgICBWYWx1ZSB0eXBlOiA8ZW1wdHk+CisgICAgICAgICAgSWYgcHJlc2VudCB0aGUgTVBJQyB3aWxsIGJlIGFzc3VtZWQgdG8gYmUgYmlnLWVuZGlhbi4gIFNvbWUKKyAgICAgICAgICBkZXZpY2UtdHJlZXMgb21pdCB0aGlzIHByb3BlcnR5IG9uIE1QSUMgbm9kZXMgZXZlbiB3aGVuIHRoZSBNUElDIGlzCisgICAgICAgICAgaW4gZmFjdCBiaWctZW5kaWFuLCBzbyBjZXJ0YWluIGJvYXJkcyBvdmVycmlkZSB0aGlzIHByb3BlcnR5LgorCisgIC0gc2luZ2xlLWNwdS1hZmZpbml0eQorICAgICAgVXNhZ2U6IG9wdGlvbmFsCisgICAgICBWYWx1ZSB0eXBlOiA8ZW1wdHk+CisgICAgICAgICAgSWYgcHJlc2VudCB0aGUgTVBJQyB3aWxsIGJlIGFzc3VtZWQgdG8gb25seSBiZSBhYmxlIHRvIHJvdXRlCisgICAgICAgICAgbm9uLUlQSSBpbnRlcnJ1cHRzIHRvIGEgc2luZ2xlIENQVSBhdCBhIHRpbWUgKEVHOiBGcmVlc2NhbGUgTVBJQykuCisKKyAgLSBsYXN0LWludGVycnVwdC1zb3VyY2UKKyAgICAgIFVzYWdlOiBvcHRpb25hbAorICAgICAgVmFsdWUgdHlwZTogPHUzMj4KKyAgICAgICAgICBTb21lIE1QSUNzIGRvIG5vdCBjb3JyZWN0bHkgcmVwb3J0IHRoZSBudW1iZXIgb2YgaGFyZHdhcmUgc291cmNlcworICAgICAgICAgIGluIHRoZSBnbG9iYWwgZmVhdHVyZSByZWdpc3RlcnMuICBJZiBzcGVjaWZpZWQsIHRoaXMgZmllbGQgd2lsbAorICAgICAgICAgIG92ZXJyaWRlIHRoZSB2YWx1ZSByZWFkIGZyb20gTVBJQ19HUkVHX0ZFQVRVUkVfTEFTVF9TUkMuCisKK0lOVEVSUlVQVCBTUEVDSUZJRVIgREVGSU5JVElPTgorCisgIEludGVycnVwdCBzcGVjaWZpZXJzIGNvbnNpc3RzIG9mIDQgY2VsbHMgZW5jb2RlZCBhcworICBmb2xsb3dzOgorCisgICA8MXN0LWNlbGw+ICAgaW50ZXJydXB0LW51bWJlcgorCisgICAgICAgICAgICAgICAgSWRlbnRpZmllcyB0aGUgaW50ZXJydXB0IHNvdXJjZS4gIFRoZSBtZWFuaW5nCisgICAgICAgICAgICAgICAgZGVwZW5kcyBvbiB0aGUgdHlwZSBvZiBpbnRlcnJ1cHQuCisKKyAgICAgICAgICAgICAgICBOb3RlOiBJZiB0aGUgaW50ZXJydXB0LXR5cGUgY2VsbCBpcyB1bmRlZmluZWQKKyAgICAgICAgICAgICAgICAoaS5lLiAjaW50ZXJydXB0LWNlbGxzID0gMiksIHRoaXMgY2VsbAorICAgICAgICAgICAgICAgIHNob3VsZCBiZSBpbnRlcnByZXRlZCB0aGUgc2FtZSBhcyBmb3IKKyAgICAgICAgICAgICAgICBpbnRlcnJ1cHQtdHlwZSAwLS0gaS5lLiBhbiBleHRlcm5hbCBvcgorICAgICAgICAgICAgICAgIG5vcm1hbCBTb0MgZGV2aWNlIGludGVycnVwdC4KKworICAgPDJuZC1jZWxsPiAgIGxldmVsLXNlbnNlIGluZm9ybWF0aW9uLCBlbmNvZGVkIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDAgPSBsb3ctdG8taGlnaCBlZGdlIHRyaWdnZXJlZAorICAgICAgICAgICAgICAgICAgICAxID0gYWN0aXZlIGxvdyBsZXZlbC1zZW5zaXRpdmUKKyAgICAgICAgICAgICAgICAgICAgMiA9IGFjdGl2ZSBoaWdoIGxldmVsLXNlbnNpdGl2ZQorICAgICAgICAgICAgICAgICAgICAzID0gaGlnaC10by1sb3cgZWRnZSB0cmlnZ2VyZWQKKworICAgPDNyZC1jZWxsPiAgIGludGVycnVwdC10eXBlCisKKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHR5cGVzIGFyZSBzdXBwb3J0ZWQ6CisKKyAgICAgICAgICAgICAgICAgIDAgPSBleHRlcm5hbCBvciBub3JtYWwgU29DIGRldmljZSBpbnRlcnJ1cHQKKworICAgICAgICAgICAgICAgICAgICAgIFRoZSBpbnRlcnJ1cHQtbnVtYmVyIGNlbGwgY29udGFpbnMKKyAgICAgICAgICAgICAgICAgICAgICB0aGUgU29DIGRldmljZSBpbnRlcnJ1cHQgbnVtYmVyLiAgVGhlCisgICAgICAgICAgICAgICAgICAgICAgdHlwZS1zcGVjaWZpYyBjZWxsIGlzIHVuZGVmaW5lZC4gIFRoZQorICAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdC1udW1iZXIgaXMgZGVyaXZlZCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgIE1QSUMgYSBibG9jayBvZiByZWdpc3RlcnMgcmVmZXJyZWQgdG8gYXMKKyAgICAgICAgICAgICAgICAgICAgICB0aGUgIkludGVycnVwdCBTb3VyY2UgQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMiLgorICAgICAgICAgICAgICAgICAgICAgIEVhY2ggc291cmNlIGhhcyAzMi1ieXRlcyBvZiByZWdpc3RlcnMKKyAgICAgICAgICAgICAgICAgICAgICAodmVjdG9yL3ByaW9yaXR5IGFuZCBkZXN0aW5hdGlvbikgaW4gdGhpcworICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbi4gICBTbyBpbnRlcnJ1cHQgMCBpcyBhdCBvZmZzZXQgMHgwLAorICAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdCAxIGlzIGF0IG9mZnNldCAweDIwLCBhbmQgc28gb24uCisKKyAgICAgICAgICAgICAgICAgIDEgPSBlcnJvciBpbnRlcnJ1cHQKKworICAgICAgICAgICAgICAgICAgICAgIFRoZSBpbnRlcnJ1cHQtbnVtYmVyIGNlbGwgY29udGFpbnMKKyAgICAgICAgICAgICAgICAgICAgICB0aGUgU29DIGRldmljZSBpbnRlcnJ1cHQgbnVtYmVyIGZvcgorICAgICAgICAgICAgICAgICAgICAgIHRoZSBlcnJvciBpbnRlcnJ1cHQuICBUaGUgdHlwZS1zcGVjaWZpYworICAgICAgICAgICAgICAgICAgICAgIGNlbGwgaWRlbnRpZmllcyB0aGUgc3BlY2lmaWMgZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHQgbnVtYmVyLgorCisgICAgICAgICAgICAgICAgICAyID0gTVBJQyBpbnRlci1wcm9jZXNzb3IgaW50ZXJydXB0IChJUEkpCisKKyAgICAgICAgICAgICAgICAgICAgICBUaGUgaW50ZXJydXB0LW51bWJlciBjZWxsIGlkZW50aWZpZXMKKyAgICAgICAgICAgICAgICAgICAgICB0aGUgTVBJQyBJUEkgbnVtYmVyLiAgVGhlIHR5cGUtc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICBjZWxsIGlzIHVuZGVmaW5lZC4KKworICAgICAgICAgICAgICAgICAgMyA9IE1QSUMgdGltZXIgaW50ZXJydXB0CisKKyAgICAgICAgICAgICAgICAgICAgICBUaGUgaW50ZXJydXB0LW51bWJlciBjZWxsIGlkZW50aWZpZXMKKyAgICAgICAgICAgICAgICAgICAgICB0aGUgTVBJQyB0aW1lciBudW1iZXIuICBUaGUgdHlwZS1zcGVjaWZpYworICAgICAgICAgICAgICAgICAgICAgIGNlbGwgaXMgdW5kZWZpbmVkLgorCisgICA8NHRoLWNlbGw+ICAgdHlwZS1zcGVjaWZpYyBpbmZvcm1hdGlvbgorCisgICAgICAgICAgICAgICAgVGhlIHR5cGUtc3BlY2lmaWMgY2VsbCBpcyBlbmNvZGVkIGFzIGZvbGxvd3M6CisKKyAgICAgICAgICAgICAgICAgLSBGb3IgaW50ZXJydXB0LXR5cGUgMSAoZXJyb3IgaW50ZXJydXB0KSwKKyAgICAgICAgICAgICAgICAgICB0aGUgdHlwZS1zcGVjaWZpYyBjZWxsIGNvbnRhaW5zIHRoZQorICAgICAgICAgICAgICAgICAgIGJpdCBudW1iZXIgb2YgdGhlIGVycm9yIGludGVycnVwdCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICBFcnJvciBJbnRlcnJ1cHQgU3VtbWFyeSBSZWdpc3Rlci4KKworRVhBTVBMRSAxCisJLyoKKwkgKiBtcGljIGludGVycnVwdCBjb250cm9sbGVyIHdpdGggNCBjZWxscyBwZXIgc3BlY2lmaWVyCisJICovCisJbXBpYzogcGljQDQwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsbXBpYyI7CisJCWludGVycnVwdC1jb250cm9sbGVyOworCQkjaW50ZXJydXB0LWNlbGxzID0gPDQ+OworCQkjYWRkcmVzcy1jZWxscyA9IDwwPjsKKwkJcmVnID0gPDB4NDAwMDAgMHg0MDAwMD47CisJfTsKKworRVhBTVBMRSAyCisJLyoKKwkgKiBUaGUgTVBDODU0NCBJMkMgY29udHJvbGxlciBub2RlIGhhcyBhbiBpbnRlcm5hbAorCSAqIGludGVycnVwdCBudW1iZXIgb2YgMjcuICBBcyBwZXIgdGhlIHJlZmVyZW5jZSBtYW51YWwKKwkgKiB0aGlzIGNvcnJlc3BvbmRzIHRvIGludGVycnVwdCBzb3VyY2UgY29uZmlndXJhdGlvbgorCSAqIHJlZ2lzdGVycyBhdCAweDVfMDU2MC4KKwkgKgorCSAqIFRoZSBpbnRlcnJ1cHQgc291cmNlIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGJlZ2luCisJICogYXQgMHg1XzAwMDAuCisJICoKKwkgKiBUbyBjb21wdXRlIHRoZSBpbnRlcnJ1cHQgc3BlY2lmaWVyIGludGVycnVwdCBudW1iZXIKKyAgICAgICAgICoKKwkgKiAgICAgICAweDU2MCA+PiA1ID0gNDMKKwkgKgorCSAqIFRoZSBpbnRlcnJ1cHQgc291cmNlIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGJlZ2luCisJICogYXQgMHg1XzAwMDAsIGFuZCBzbyB0aGUgaTJjIHZlY3Rvci9wcmlvcml0eSByZWdpc3RlcnMKKwkgKiBhcmUgYXQgMHg1XzA1NjAuCisJICovCisJaTJjQDMwMDAgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJCWNlbGwtaW5kZXggPSA8MD47CisJCWNvbXBhdGlibGUgPSAiZnNsLWkyYyI7CisJCXJlZyA9IDwweDMwMDAgMHgxMDA+OworCQlpbnRlcnJ1cHRzID0gPDQzIDI+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZtcGljPjsKKwkJZGZzcnI7CisJfTsKKworCitFWEFNUExFIDMKKwkvKgorCSAqICBEZWZpbml0aW9uIG9mIGEgbm9kZSBkZWZpbmluZyB0aGUgNAorCSAqICBNUElDIElQSSBpbnRlcnJ1cHRzLiAgTm90ZSB0aGUgaW50ZXJydXB0CisJICogIHR5cGUgb2YgMi4KKwkgKi8KKwlpcGlANDEwYTAgeworCQljb21wYXRpYmxlID0gImZzbCxtcGljLWlwaSI7CisJCXJlZyA9IDwweDQwMDQwIDB4MTA+OworCQlpbnRlcnJ1cHRzID0gPDAgMCAyIDAKKwkJICAgICAgICAgICAgICAxIDAgMiAwCisJCSAgICAgICAgICAgICAgMiAwIDIgMAorCQkgICAgICAgICAgICAgIDMgMCAyIDA+OworCX07CisKK0VYQU1QTEUgNAorCS8qCisJICogIERlZmluaXRpb24gb2YgYSBub2RlIGRlZmluaW5nIHRoZSBNUElDCisJICogIGdsb2JhbCB0aW1lcnMuICBOb3RlIHRoZSBpbnRlcnJ1cHQKKwkgKiAgdHlwZSBvZiAzLgorCSAqLworCXRpbWVyMDogdGltZXJANDExMDAgeworCQljb21wYXRpYmxlID0gImZzbCxtcGljLWdsb2JhbC10aW1lciI7CisJCXJlZyA9IDwweDQxMTAwIDB4MTAwIDB4NDEzMDAgND47CisJCWludGVycnVwdHMgPSA8MCAwIDMgMAorCQkgICAgICAgICAgICAgIDEgMCAzIDAKKwkJICAgICAgICAgICAgICAyIDAgMyAwCisJCSAgICAgICAgICAgICAgMyAwIDMgMD47CisJfTsKKworRVhBTVBMRSA1CisJLyoKKwkgKiBEZWZpbml0aW9uIG9mIGFuIGVycm9yIGludGVycnVwdCAoaW50ZXJydXB0IHR5cGUgMSkuCisJICogU29DIGludGVycnVwdCBudW1iZXIgaXMgMTYgYW5kIHRoZSBzcGVjaWZpYyBlcnJvcgorICAgICAgICAgKiBpbnRlcnJ1cHQgYml0IGluIHRoZSBlcnJvciBpbnRlcnJ1cHQgc3VtbWFyeSByZWdpc3RlcgorCSAqIGlzIDIzLgorCSAqLworCW1lbW9yeS1jb250cm9sbGVyQDgwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxwNDA4MC1tZW1vcnktY29udHJvbGxlciI7CisJCXJlZyA9IDwweDgwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwxNiAyIDEgMjM+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvbXNpLXBpYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvbXNpLXBpYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJkZDViNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9tc2ktcGljLnR4dApAQCAtMCwwICsxLDExNiBAQAorKiBGcmVlc2NhbGUgTVNJIGludGVycnVwdCBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBjb21wYXRpYmxlIGxpc3QsIG1heSBjb250YWluIG9uZSBvciB0d28gZW50cmllcworICBUaGUgZmlyc3QgaXMgImZzbCxDSElQLW1zaSIsIHdoZXJlIENISVAgaXMgdGhlIHByb2Nlc3NvcihtcGM4NjEwLCBtcGM4NTcyLAorICBldGMuKSBhbmQgdGhlIHNlY29uZCBpcyAiZnNsLG1waWMtbXNpIiBvciAiZnNsLGlwaWMtbXNpIiBvcgorICAiZnNsLG1waWMtbXNpLXY0LjMiIGRlcGVuZGluZyBvbiB0aGUgcGFyZW50IHR5cGUgYW5kIHZlcnNpb24uIElmIG1waWMKKyAgdmVyc2lvbiBpcyA0LjMsIHRoZSBudW1iZXIgb2YgTVNJIHJlZ2lzdGVycyBpcyBpbmNyZWFzZWQgdG8gMTYsIE1TSUlSMSBpcworICBwcm92aWRlZCB0byBhY2Nlc3MgdGhlc2UgMTYgcmVnaXN0ZXJzLCBhbmQgY29tcGF0aWJsZSAiZnNsLG1waWMtbXNpLXY0LjMiCisgIHNob3VsZCBiZSB1c2VkLiBUaGUgZmlyc3QgZW50cnkgaXMgb3B0aW9uYWw7IHRoZSBzZWNvbmQgZW50cnkgaXMKKyAgcmVxdWlyZWQuCisKKy0gcmVnIDogSXQgbWF5IGNvbnRhaW4gb25lIG9yIHR3byByZWdpb25zLiBUaGUgZmlyc3QgcmVnaW9uIHNob3VsZCBjb250YWluCisgIHRoZSBhZGRyZXNzIGFuZCB0aGUgbGVuZ3RoIG9mIHRoZSBzaGFyZWQgbWVzc2FnZSBpbnRlcnJ1cHQgcmVnaXN0ZXIgc2V0LgorICBUaGUgc2Vjb25kIHJlZ2lvbiBzaG91bGQgY29udGFpbiB0aGUgYWRkcmVzcyBvZiBhbGlhc2VkIE1TSUlSIG9yIE1TSUlSMQorICByZWdpc3RlciBmb3IgcGxhdGZvcm1zIHRoYXQgaGF2ZSBzdWNoIGFuIGFsaWFzLCBpZiB1c2luZyBNU0lJUjEsIHRoZSBzZWNvbmQKKyAgcmVnaW9uIG11c3QgYmUgYWRkZWQgYmVjYXVzZSBkaWZmZXJlbnQgTVNJIGdyb3VwIGhhcyBkaWZmZXJlbnQgTVNJSVIxIG9mZnNldC4KKworLSBpbnRlcnJ1cHRzIDogZWFjaCBvbmUgb2YgdGhlIGludGVycnVwdHMgaGVyZSBpcyBvbmUgZW50cnkgcGVyIDMyIE1TSXMsCisgIGFuZCByb3V0ZWQgdG8gdGhlIGhvc3QgaW50ZXJydXB0IGNvbnRyb2xsZXIuIHRoZSBpbnRlcnJ1cHRzIHNob3VsZAorICBiZSBzZXQgYXMgZWRnZSBzZW5zaXRpdmUuICBJZiBtc2ktYXZhaWxhYmxlLXJhbmdlcyBpcyBwcmVzZW50LCBvbmx5CisgIHRoZSBpbnRlcnJ1cHRzIHRoYXQgY29ycmVzcG9uZCB0byBhdmFpbGFibGUgcmFuZ2VzIHNoYWxsIGJlIHByZXNlbnQuCisKKy0gaW50ZXJydXB0LXBhcmVudDogdGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlcgorICB0aGF0IHNlcnZpY2VzIGludGVycnVwdHMgZm9yIHRoaXMgZGV2aWNlLiBmb3IgODN4eCBjcHUsIHRoZSBpbnRlcnJ1cHRzCisgIGFyZSByb3V0ZWQgdG8gSVBJQywgYW5kIGZvciA4NXh4Lzg2eHggY3B1IHRoZSBpbnRlcnJ1cHRzIGFyZSByb3V0ZWQKKyAgdG8gTVBJQy4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gbXNpLWF2YWlsYWJsZS1yYW5nZXM6IHVzZSA8c3RhcnQgY291bnQ+IHN0eWxlIHNlY3Rpb24gdG8gZGVmaW5lIHdoaWNoCisgIG1zaSBpbnRlcnJ1cHQgY2FuIGJlIHVzZWQgaW4gdGhlIDI1NiBtc2kgaW50ZXJydXB0cy4gVGhpcyBwcm9wZXJ0eSBpcworICBvcHRpb25hbCwgd2l0aG91dCB0aGlzLCBhbGwgdGhlIE1TSSBpbnRlcnJ1cHRzIGNhbiBiZSB1c2VkLgorICBFYWNoIGF2YWlsYWJsZSByYW5nZSBtdXN0IGJlZ2luIGFuZCBlbmQgb24gYSBtdWx0aXBsZSBvZiAzMiAoaS5lLgorICBubyBzcGxpdHRpbmcgYW4gaW5kaXZpZHVhbCBNU0kgcmVnaXN0ZXIgb3IgdGhlIGFzc29jaWF0ZWQgUElDIGludGVycnVwdCkuCisgIE1QSUMgdjQuMyBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgcHJvcGVydHkgYmVjYXVzZSB0aGUgMzIgaW50ZXJydXB0cyBvZiBhbgorICBpbmRpdmlkdWFsIHJlZ2lzdGVyIGFyZSBub3QgY29udGludW91cyB3aGVuIHVzaW5nIE1TSUlSMS4KKworLSBtc2ktYWRkcmVzcy02NDogNjQtYml0IFBDSSBhZGRyZXNzIG9mIHRoZSBNU0lJUiByZWdpc3Rlci4gVGhlIE1TSUlSIHJlZ2lzdGVyCisgIGlzIHVzZWQgZm9yIE1TSSBtZXNzYWdpbmcuICBUaGUgYWRkcmVzcyBvZiBNU0lJUiBpbiBQQ0kgYWRkcmVzcyBzcGFjZSBpcworICB0aGUgTVNJIG1lc3NhZ2UgYWRkcmVzcy4KKworICBUaGlzIHByb3BlcnR5IG1heSBiZSB1c2VkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aGVyZSB0aGUgaHlwZXJ2aXNvcgorICBoYXMgY3JlYXRlZCBhbiBhbHRlcm5hdGUgbWFwcGluZyBmb3IgdGhlIE1TSVIgYmxvY2suICBTZWUgYmVsb3cgZm9yIGFuCisgIGV4cGxhbmF0aW9uLgorCisKK0V4YW1wbGU6CisJbXNpQDQxNjAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsbXBjODYxMC1tc2kiLCAiZnNsLG1waWMtbXNpIjsKKwkJcmVnID0gPDB4NDE2MDAgMHg4MD47CisJCW1zaS1hdmFpbGFibGUtcmFuZ2VzID0gPDAgMHgxMDA+OworCQlpbnRlcnJ1cHRzID0gPAorCQkJMHhlMCAwCisJCQkweGUxIDAKKwkJCTB4ZTIgMAorCQkJMHhlMyAwCisJCQkweGU0IDAKKwkJCTB4ZTUgMAorCQkJMHhlNiAwCisJCQkweGU3IDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZtcGljPjsKKwl9OworCisJbXNpQDQxNjAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsbXBpYy1tc2ktdjQuMyI7CisJCXJlZyA9IDwweDQxNjAwIDB4MjAwIDB4NDQxNDggND47CisJCWludGVycnVwdHMgPSA8CisJCQkweGUwIDAgMCAwCisJCQkweGUxIDAgMCAwCisJCQkweGUyIDAgMCAwCisJCQkweGUzIDAgMCAwCisJCQkweGU0IDAgMCAwCisJCQkweGU1IDAgMCAwCisJCQkweGU2IDAgMCAwCisJCQkweGU3IDAgMCAwCisJCQkweDEwMCAwIDAgMAorCQkJMHgxMDEgMCAwIDAKKwkJCTB4MTAyIDAgMCAwCisJCQkweDEwMyAwIDAgMAorCQkJMHgxMDQgMCAwIDAKKwkJCTB4MTA1IDAgMCAwCisJCQkweDEwNiAwIDAgMAorCQkJMHgxMDcgMCAwIDA+OworCX07CisKK1RoZSBGcmVlc2NhbGUgaHlwZXJ2aXNvciBhbmQgbXNpLWFkZHJlc3MtNjQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05vcm1hbGx5LCBQQ0kgZGV2aWNlcyBoYXZlIGFjY2VzcyB0byBhbGwgb2YgQ0NTUiB2aWEgYW4gQVRNVSBtYXBwaW5nLiAgVGhlCitGcmVlc2NhbGUgTVNJIGRyaXZlciBjYWxjdWxhdGVzIHRoZSBhZGRyZXNzIG9mIE1TSUlSIChpbiB0aGUgTVNJIHJlZ2lzdGVyCitibG9jaykgYW5kIHNldHMgdGhhdCBhZGRyZXNzIGFzIHRoZSBNU0kgbWVzc2FnZSBhZGRyZXNzLgorCitJbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB0aGUgaHlwZXJ2aXNvciBtYXkgbmVlZCB0byBjcmVhdGUgYW4gSU9NTVUKK21hcHBpbmcgZm9yIE1TSUlSLiAgVGhlIEZyZWVzY2FsZSBlUEFQUiBoeXBlcnZpc29yIGhhcyB0aGlzIHJlcXVpcmVtZW50CitiZWNhdXNlIG9mIGhhcmR3YXJlIGxpbWl0YXRpb25zIG9mIHRoZSBQZXJpcGhlcmFsIEFjY2VzcyBNYW5hZ2VtZW50IFVuaXQKKyhQQU1VKSwgd2hpY2ggaXMgY3VycmVudGx5IHRoZSBvbmx5IElPTU1VIHRoYXQgdGhlIGh5cGVydmlzb3Igc3VwcG9ydHMuCitUaGUgQVRNVSBpcyBwcm9ncmFtbWVkIHdpdGggdGhlIGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3MsIGFuZCB0aGUgUEFNVQoraW50ZXJjZXB0cyB0cmFuc2FjdGlvbnMgYW5kIHJlcm91dGVzIHRoZW0gdG8gdGhlIHRydWUgcGh5c2ljYWwgYWRkcmVzcy4KKworSW4gdGhlIFBBTVUsIGVhY2ggUENJIGNvbnRyb2xsZXIgaXMgZ2l2ZW4gb25seSBvbmUgcHJpbWFyeSB3aW5kb3cuICBUaGUKK1BBTVUgcmVzdHJpY3RzIERNQSBvcGVyYXRpb25zIHNvIHRoYXQgdGhleSBjYW4gb25seSBvY2N1ciB3aXRoaW4gYSB3aW5kb3cuCitCZWNhdXNlIFBDSSBkZXZpY2VzIG11c3QgYmUgYWJsZSB0byBETUEgdG8gbWVtb3J5LCB0aGUgcHJpbWFyeSB3aW5kb3cgbXVzdAorYmUgdXNlZCB0byBjb3ZlciBhbGwgb2YgdGhlIGd1ZXN0J3MgbWVtb3J5IHNwYWNlLgorCitQQU1VIHByaW1hcnkgd2luZG93cyBjYW4gYmUgZGl2aWRlZCBpbnRvIDI1NiBzdWJ3aW5kb3dzLCBhbmQgZWFjaAorc3Vid2luZG93IGNhbiBoYXZlIGl0cyBvd24gYWRkcmVzcyBtYXBwaW5nICgiZ3Vlc3QgcGh5c2ljYWwiIHRvICJ0cnVlCitwaHlzaWNhbCIpLiAgSG93ZXZlciwgZWFjaCBzdWJ3aW5kb3cgaGFzIHRvIGhhdmUgdGhlIHNhbWUgYWxpZ25tZW50LCB3aGljaAorbWVhbnMgdGhleSBjYW5ub3QgYmUgbG9jYXRlZCBhdCBqdXN0IGFueSBhZGRyZXNzLiAgQmVjYXVzZSBvZiB0aGVzZQorcmVzdHJpY3Rpb25zLCBpdCBpcyB1c3VhbGx5IGltcG9zc2libGUgdG8gY3JlYXRlIGEgNEtCIHN1YndpbmRvdyB0aGF0Citjb3ZlcnMgTVNJSVIgd2hlcmUgaXQncyBub3JtYWxseSBsb2NhdGVkLgorCitUaGVyZWZvcmUsIHRoZSBoeXBlcnZpc29yIGhhcyB0byBjcmVhdGUgYSBzdWJ3aW5kb3cgaW5zaWRlIHRoZSBzYW1lCitwcmltYXJ5IHdpbmRvdyB1c2VkIGZvciBtZW1vcnksIGJ1dCBtYXBwZWQgdG8gdGhlIE1TSVIgYmxvY2sgKHdoZXJlIE1TSUlSCitsaXZlcykuICBUaGUgZmlyc3Qgc3Vid2luZG93IGFmdGVyIHRoZSBlbmQgb2YgZ3Vlc3QgbWVtb3J5IGlzIHVzZWQgZm9yCit0aGlzLiAgVGhlIGFkZHJlc3Mgc3BlY2lmaWVkIGluIHRoZSBtc2ktYWRkcmVzcy02NCBwcm9wZXJ0eSBpcyB0aGUgUENJCithZGRyZXNzIG9mIE1TSUlSLiAgVGhlIGh5cGVydmlzb3IgY29uZmlndXJlcyB0aGUgUEFNVSB0byBtYXAgdGhhdCBhZGRyZXNzIHRvCit0aGUgdHJ1ZSBwaHlzaWNhbCBhZGRyZXNzIG9mIE1TSUlSLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL3BhbXUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL3BhbXUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyYjI4OTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvcGFtdS50eHQKQEAgLTAsMCArMSwxNTAgQEAKK0ZyZWVzY2FsZSBQZXJpcGhlcmFsIE1hbmFnZW1lbnQgQWNjZXNzIFVuaXQgKFBBTVUpIERldmljZSBUcmVlIEJpbmRpbmcKKworREVTQ1JJUFRJT04KKworVGhlIFBBTVUgaXMgYW4gSS9PIE1NVSB0aGF0IHByb3ZpZGVzIGRldmljZS10by1tZW1vcnkgYWNjZXNzIGNvbnRyb2wgYW5kCithZGRyZXNzIHRyYW5zbGF0aW9uIGNhcGFiaWxpdGllcy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlCTogPHN0cmluZz4KKwkJICBGaXJzdCBlbnRyeSBpcyBhIHZlcnNpb24tc3BlY2lmaWMgc3RyaW5nLCBzdWNoIGFzCisJCSAgImZzbCxwYW11LXYxLjAiLiAgVGhlIHNlY29uZCBpcyAiZnNsLHBhbXUiLgorLSByYW5nZXMJOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCQkgIEEgc3RhbmRhcmQgcHJvcGVydHkuIFV0aWxpemVkIHRvIGRlc2NyaWJlIHRoZSBtZW1vcnkgbWFwcGVkCisJCSAgSS9PIHNwYWNlIHV0aWxpemVkIGJ5IHRoZSBjb250cm9sbGVyLiAgVGhlIHNpemUgc2hvdWxkCisJCSAgYmUgc2V0IHRvIHRoZSB0b3RhbCBzaXplIG9mIHRoZSByZWdpc3RlciBzcGFjZSBvZiBhbGwKKwkJICBwaHlzaWNhbGx5IHByZXNlbnQgUEFNVSBjb250cm9sbGVycy4gIEZvciBleGFtcGxlLCBmb3IKKwkJICBQQU1VIHYxLjAsIG9uIGFuIFNPQyB0aGF0IGhhcyBmaXZlIFBBTVUgZGV2aWNlcywgdGhlIHNpemUKKwkJICBpcyAweDUwMDAuCistIGludGVycnVwdHMJOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCQkgIEludGVycnVwdCBtYXBwaW5ncy4gIFRoZSBmaXJzdCB0dXBsZSBpcyB0aGUgbm9ybWFsIFBBTVUKKwkJICBpbnRlcnJ1cHQsIHVzZWQgZm9yIHJlcG9ydGluZyBhY2Nlc3MgdmlvbGF0aW9ucy4gIFRoZSBzZWNvbmQKKwkJICBpcyBmb3IgUEFNVSBoYXJkd2FyZSBlcnJvcnMsIHN1Y2ggYXMgUEFNVSBvcGVyYXRpb24gZXJyb3JzCisJCSAgYW5kIEVDQyBlcnJvcnMuCistICNhZGRyZXNzLWNlbGxzOiA8dTMyPgorCQkgIEEgc3RhbmRhcmQgcHJvcGVydHkuCistICNzaXplLWNlbGxzCTogPHUzMj4KKwkJICBBIHN0YW5kYXJkIHByb3BlcnR5LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSByZWcJCTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwkJICBBIHN0YW5kYXJkIHByb3BlcnR5LiAgIEl0IHJlcHJlc2VudHMgdGhlIENDU1IgcmVnaXN0ZXJzIG9mCisJCSAgYWxsIGNoaWxkIFBBTVVzIGNvbWJpbmVkLiAgSW5jbHVkZSBpdCB0byBwcm92aWRlIHN1cHBvcnQKKwkJICBmb3IgbGVnYWN5IGRyaXZlcnMuCistIGludGVycnVwdC1wYXJlbnQgOiA8cGhhbmRsZT4KKwkJICBQaGFuZGxlIHRvIGludGVycnVwdCBjb250cm9sbGVyCistIGZzbCxwb3J0aWQtbWFwcGluZyA6IDx1MzI+CisJCSAgVGhlIENvaGVyZW5jeSBTdWJkb21haW4gSUQgUG9ydCBNYXBwaW5nIFJlZ2lzdGVycyBhbmQKKwkJICBTbm9vcCBJRCBQb3J0IE1hcHBpbmcgcmVnaXN0ZXJzLCB3aGljaCBhcmUgcGFydCBvZiB0aGUKKwkJICBDb3JlTmV0IENvaGVyZW5jeSBmYWJyaWMgKENDRiksIHByb3ZpZGUgYSBDb3JlTmV0CisJCSAgQ29oZXJlbmN5IFN1YmRvbWFpbiBJRC9Db3JlTmV0IFNub29wIElEIHRvIHBhbXUgbWFwcGluZworCQkgIGZ1bmN0aW9ucy4gIENlcnRhaW4gYml0cyBmcm9tIHRoZXNlIHJlZ2lzdGVycyBzaG91bGQgYmUKKwkJICBzZXQgaWYgUEFNVXMgc2hvdWxkIGJlIHNub29wZWQuICBUaGlzIHByb3BlcnR5IGRlZmluZXMKKwkJICBhIGJpdG1hc2sgd2hpY2ggc2VsZWN0cyB0aGUgYml0cyB0aGF0IHNob3VsZCBiZSBzZXQgaWYKKwkJICBQQU1VcyBzaG91bGQgYmUgc25vb3BlZC4KKworQ2hpbGQgbm9kZXM6CisKK0VhY2ggY2hpbGQgbm9kZSByZXByZXNlbnRzIG9uZSBQQU1VIGNvbnRyb2xsZXIuICBFYWNoIFNPQyBkZXZpY2UgdGhhdCBpcworY29ubmVjdGVkIHRvIGEgc3BlY2lmaWMgUEFNVSBkZXZpY2Ugc2hvdWxkIGhhdmUgYSAiZnNsLHBhbXUtcGhhbmRsZSIgcHJvcGVydHkKK3RoYXQgbGlua3MgdG8gdGhlIGNvcnJlc3BvbmRpbmcgc3BlY2lmaWMgY2hpbGQgUEFNVSBjb250cm9sbGVyLgorCistIHJlZwkJOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCQkgIEEgc3RhbmRhcmQgcHJvcGVydHkuICBTcGVjaWZpZXMgdGhlIHBoeXNpY2FsIGFkZHJlc3MgYW5kCisJCSAgbGVuZ3RoIChyZWxhdGl2ZSB0byB0aGUgcGFyZW50ICdyYW5nZXMnIHByb3BlcnR5KSBvZiB0aGlzCisJCSAgUEFNVSBjb250cm9sbGVyJ3MgY29uZmlndXJhdGlvbiByZWdpc3RlcnMuICBUaGUgc2l6ZSBzaG91bGQKKwkJICBiZSBzZXQgdG8gdGhlIHNpemUgb2YgdGhpcyBQQU1VIGNvbnRyb2xsZXJzJ3MgcmVnaXN0ZXIgc3BhY2UuCisJCSAgRm9yIFBBTVUgdjEuMCwgdGhpcyBzaXplIGlzIDB4MTAwMC4KKy0gZnNsLHByaW1hcnktY2FjaGUtZ2VvbWV0cnkKKwkJOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCQkgIFR3byBjZWxscyB0aGF0IHNwZWNpZnkgdGhlIGdlb21ldHJ5IG9mIHRoZSBwcmltYXJ5IFBBTVUKKwkJICBjYWNoZS4gIFRoZSBmaXJzdCBpcyB0aGUgbnVtYmVyIG9mIGNhY2hlIGxpbmVzLCBhbmQgdGhlCisJCSAgc2Vjb25kIGlzIHRoZSBudW1iZXIgb2YgIndheXMiLiAgRm9yIGRpcmVjdC1tYXBwZWQgY2FjaGVzLAorCQkgIHNwZWNpZnkgYSB2YWx1ZSBvZiAxLgorLSBmc2wsc2Vjb25kYXJ5LWNhY2hlLWdlb21ldHJ5CisJCTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwkJICBUd28gY2VsbHMgdGhhdCBzcGVjaWZ5IHRoZSBnZW9tZXRyeSBvZiB0aGUgc2Vjb25kYXJ5IFBBTVUKKwkJICBjYWNoZS4gIFRoZSBmaXJzdCBpcyB0aGUgbnVtYmVyIG9mIGNhY2hlIGxpbmVzLCBhbmQgdGhlCisJCSAgc2Vjb25kIGlzIHRoZSBudW1iZXIgb2YgIndheXMiLiAgRm9yIGRpcmVjdC1tYXBwZWQgY2FjaGVzLAorCQkgIHNwZWNpZnkgYSB2YWx1ZSBvZiAxLgorCitEZXZpY2Ugbm9kZXM6CisKK0RldmljZXMgdGhhdCBoYXZlIExJT0ROcyBuZWVkIHRvIHNwZWNpZnkgbGlua3MgdG8gdGhlIHBhcmVudCBQQU1VIGNvbnRyb2xsZXIKKyh0aGUgYWN0dWFsIFBBTVUgY29udHJvbGxlciB0aGF0IHRoaXMgZGV2aWNlIGlzIGNvbm5lY3RlZCB0bykgYW5kIGEgcG9pbnRlciB0bwordGhlIExJT0ROIHJlZ2lzdGVyLCBpZiBhcHBsaWNhYmxlLgorCistIGZzbCxpb21tdS1wYXJlbnQKKwkJOiA8cGhhbmRsZT4KKwkJUGhhbmRsZSB0byB0aGUgc2luZ2xlLCBzcGVjaWZpYyBQQU1VIGNvbnRyb2xsZXIgbm9kZSB0byB3aGljaAorCQl0aGlzIGRldmljZSBpcyBjb25uZWN0LiAgVGhlIFBBTVUgdG9wb2xvZ3kgaXMgcmVwcmVzZW50ZWQgaW4KKwkJdGhlIGRldmljZSB0cmVlIHRvIGFzc2lzdCBjb2RlIHRoYXQgZHluYW1pY2FsbHkgZGV0ZXJtaW5lcyB0aGUKKwkJYmVzdCBMSU9ETiB2YWx1ZXMgdG8gbWluaW1pemUgUEFNVSBjYWNoZSB0aHJhc2hpbmcuCisKKy0gZnNsLGxpb2RuLXJlZyA6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisJCSAgVHdvIGNlbGxzIHRoYXQgc3BlY2lmeSB0aGUgbG9jYXRpb24gb2YgdGhlIExJT0ROIHJlZ2lzdGVyCisJCSAgZm9yIHRoaXMgZGV2aWNlLiAgUmVxdWlyZWQgZm9yIGRldmljZXMgdGhhdCBoYXZlIGEgc2luZ2xlCisJCSAgTElPRE4uICBUaGUgZmlyc3QgY2VsbCBpcyBhIHBoYW5kbGUgdG8gYSBub2RlIHRoYXQgY29udGFpbnMKKwkJICB0aGUgcmVnaXN0ZXJzIHdoZXJlIHRoZSBMSU9ETiBpcyB0byBiZSBzZXQuICBUaGUgc2Vjb25kIGlzCisJCSAgdGhlIG9mZnNldCBmcm9tIHRoZSBmaXJzdCAicmVnIiByZXNvdXJjZSBvZiB0aGUgbm9kZSB3aGVyZQorCQkgIHRoZSBzcGVjaWZpYyBMSU9ETiByZWdpc3RlciBpcyBsb2NhdGVkLgorCisKK0V4YW1wbGU6CisKKwlpb21tdUAyMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLHBhbXUtdjEuMCIsICJmc2wscGFtdSI7CisJCXJlZyA9IDwweDIwMDAwIDB4NTAwMD47CisJCXJhbmdlcyA9IDwwIDB4MjAwMDAgMHg1MDAwPjsKKwkJZnNsLHBvcnRpZC1tYXBwaW5nID0gPDB4ZjgwMDAwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQlpbnRlcnJ1cHRzID0gPAorCQkJMjQgMiAwIDAKKwkJCTE2IDIgMSAzMD47CisKKwkJcGFtdTA6IHBhbXVAMCB7CisJCQlyZWcgPSA8MCAweDEwMDA+OworCQkJZnNsLHByaW1hcnktY2FjaGUtZ2VvbWV0cnkgPSA8MzIgMT47CisJCQlmc2wsc2Vjb25kYXJ5LWNhY2hlLWdlb21ldHJ5ID0gPDEyOCAyPjsKKwkJfTsKKworCQlwYW11MTogcGFtdUAxMDAwIHsKKwkJCXJlZyA9IDwweDEwMDAgMHgxMDAwPjsKKwkJCWZzbCxwcmltYXJ5LWNhY2hlLWdlb21ldHJ5ID0gPDMyIDE+OworCQkJZnNsLHNlY29uZGFyeS1jYWNoZS1nZW9tZXRyeSA9IDwxMjggMj47CisJCX07CisKKwkJcGFtdTI6IHBhbXVAMjAwMCB7CisJCQlyZWcgPSA8MHgyMDAwIDB4MTAwMD47CisJCQlmc2wscHJpbWFyeS1jYWNoZS1nZW9tZXRyeSA9IDwzMiAxPjsKKwkJCWZzbCxzZWNvbmRhcnktY2FjaGUtZ2VvbWV0cnkgPSA8MTI4IDI+OworCQl9OworCisJCXBhbXUzOiBwYW11QDMwMDAgeworCQkJcmVnID0gPDB4MzAwMCAweDEwMDA+OworCQkJZnNsLHByaW1hcnktY2FjaGUtZ2VvbWV0cnkgPSA8MzIgMT47CisJCQlmc2wsc2Vjb25kYXJ5LWNhY2hlLWdlb21ldHJ5ID0gPDEyOCAyPjsKKwkJfTsKKworCQlwYW11NDogcGFtdUA0MDAwIHsKKwkJCXJlZyA9IDwweDQwMDAgMHgxMDAwPjsKKwkJCWZzbCxwcmltYXJ5LWNhY2hlLWdlb21ldHJ5ID0gPDMyIDE+OworCQkJZnNsLHNlY29uZGFyeS1jYWNoZS1nZW9tZXRyeSA9IDwxMjggMj47CisJCX07CisJfTsKKworCWd1dHM6IGdsb2JhbC11dGlsaXRpZXNAZTAwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxxb3JpcS1kZXZpY2UtY29uZmlnLTEuMCI7CisJCXJlZyA9IDwweGUwMDAwIDB4ZTAwPjsKKwkJZnNsLGhhcy1yc3RjcjsKKwkJI3NsZWVwLWNlbGxzID0gPDE+OworCQlmc2wsbGlvZG4tYml0cyA9IDwxMj47CisJfTsKKworL2luY2x1ZGUvICJxb3JpcS1kbWEtMC5kdHNpIgorCWRtYUAxMDAzMDAgeworCQlmc2wsaW9tbXUtcGFyZW50ID0gPCZwYW11MD47CisJCWZzbCxsaW9kbi1yZWcgPSA8Jmd1dHMgMHg1ODQ+OyAvKiBETUEyTElPRE5SICovCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9wbWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL3BtYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDcyNTZiNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9wbWMudHh0CkBAIC0wLDAgKzEsNjMgQEAKKyogUG93ZXIgTWFuYWdlbWVudCBDb250cm9sbGVyCisKK1Byb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJmc2wsPGNoaXA+LXBtYyIuCisKKyAgImZzbCxtcGM4MzQ5LXBtYyIgc2hvdWxkIGJlIGxpc3RlZCBmb3IgYW55IGNoaXAgd2hvc2UgUE1DIGlzCisgIGNvbXBhdGlibGUuICAiZnNsLG1wYzgzMTMtcG1jIiBzaG91bGQgYWxzbyBiZSBsaXN0ZWQgZm9yIGFueSBjaGlwCisgIHdob3NlIFBNQyBpcyBjb21wYXRpYmxlLCBhbmQgaW1wbGllcyBkZWVwLXNsZWVwIGNhcGFiaWxpdHkuCisKKyAgImZzbCxtcGM4NTQ4LXBtYyIgc2hvdWxkIGJlIGxpc3RlZCBmb3IgYW55IGNoaXAgd2hvc2UgUE1DIGlzCisgIGNvbXBhdGlibGUuICAiZnNsLG1wYzg1MzYtcG1jIiBzaG91bGQgYWxzbyBiZSBsaXN0ZWQgZm9yIGFueSBjaGlwCisgIHdob3NlIFBNQyBpcyBjb21wYXRpYmxlLCBhbmQgaW1wbGllcyBkZWVwLXNsZWVwIGNhcGFiaWxpdHkuCisKKyAgImZzbCxtcGM4NjQxZC1wbWMiIHNob3VsZCBiZSBsaXN0ZWQgZm9yIGFueSBjaGlwIHdob3NlIFBNQyBpcworICBjb21wYXRpYmxlOyBhbGwgc3RhdGVtZW50cyBiZWxvdyB0aGF0IGFwcGx5IHRvICJmc2wsbXBjODU0OC1wbWMiIGFsc28KKyAgYXBwbHkgdG8gImZzbCxtcGM4NjQxZC1wbWMiLgorCisgIENvbXBhdGliaWxpdHkgZG9lcyBub3QgaW5jbHVkZSBiaXQgYXNzaWdubWVudHMgaW4gU0NDUi9QTUNEUi9ERVZESVNSOyB0aGVzZQorICBiaXQgYXNzaWdubWVudHMgYXJlIGluZGljYXRlZCB2aWEgdGhlIHNsZWVwIHNwZWNpZmllciBpbiBlYWNoIGRldmljZSdzCisgIHNsZWVwIHByb3BlcnR5LgorCistIHJlZzogRm9yIGRldmljZXMgY29tcGF0aWJsZSB3aXRoICJmc2wsbXBjODM0OS1wbWMiLCB0aGUgZmlyc3QgcmVzb3VyY2UKKyAgaXMgdGhlIFBNQyBibG9jaywgYW5kIHRoZSBzZWNvbmQgcmVzb3VyY2UgaXMgdGhlIENsb2NrIENvbmZpZ3VyYXRpb24KKyAgYmxvY2suCisKKyAgRm9yIGRldmljZXMgY29tcGF0aWJsZSB3aXRoICJmc2wsbXBjODU0OC1wbWMiLCB0aGUgZmlyc3QgcmVzb3VyY2UKKyAgaXMgYSAzMi1ieXRlIGJsb2NrIGJlZ2lubmluZyB3aXRoIERFVkRJU1IuCisKKy0gaW50ZXJydXB0czogRm9yICJmc2wsbXBjODM0OS1wbWMiLWNvbXBhdGlibGUgZGV2aWNlcywgdGhlIGZpcnN0CisgIHJlc291cmNlIGlzIHRoZSBQTUMgYmxvY2sgaW50ZXJydXB0LgorCistIGZzbCxtcGM4MzEzLXdha2V1cC10aW1lcjogRm9yICJmc2wsbXBjODMxMy1wbWMiLWNvbXBhdGlibGUgZGV2aWNlcywKKyAgdGhpcyBpcyBhIHBoYW5kbGUgdG8gYW4gImZzbCxndG0iIG5vZGUgb24gd2hpY2ggdGltZXIgNCBjYW4gYmUgdXNlZCBhcworICBhIHdha2V1cCBzb3VyY2UgZnJvbSBkZWVwIHNsZWVwLgorCitTbGVlcCBzcGVjaWZpZXJzOgorCisgIGZzbCxtcGM4MzQ5LXBtYzogU2xlZXAgc3BlY2lmaWVycyBjb25zaXN0IG9mIG9uZSBjZWxsLiAgRm9yIGVhY2ggYml0CisgIHRoYXQgaXMgc2V0IGluIHRoZSBjZWxsLCB0aGUgY29ycmVzcG9uZGluZyBiaXQgaW4gU0NDUiB3aWxsIGJlIHNhdmVkCisgIGFuZCBjbGVhcmVkIG9uIHN1c3BlbmQsIGFuZCByZXN0b3JlZCBvbiByZXN1bWUuICBUaGlzIHNsZWVwIGNvbnRyb2xsZXIKKyAgc3VwcG9ydHMgZGlzYWJsaW5nIGFuZCByZXN1bWluZyBkZXZpY2VzIGF0IGFueSB0aW1lLgorCisgIGZzbCxtcGM4NTM2LXBtYzogU2xlZXAgc3BlY2lmaWVycyBjb25zaXN0IG9mIHRocmVlIGNlbGxzLCB0aGUgdGhpcmQgb2YKKyAgd2hpY2ggd2lsbCBiZSBPUmVkIGludG8gUE1DRFIgdXBvbiBzdXNwZW5kLCBhbmQgY2xlYXJlZCBmcm9tIFBNQ0RSCisgIHVwb24gcmVzdW1lLiAgVGhlIGZpcnN0IHR3byBjZWxscyBhcmUgYXMgZGVzY3JpYmVkIGZvciBmc2wsbXBjODU3OC1wbWMuCisgIFRoaXMgc2xlZXAgY29udHJvbGxlciBvbmx5IHN1cHBvcnRzIGRpc2FibGluZyBkZXZpY2VzIGR1cmluZyBzeXN0ZW0KKyAgc2xlZXAsIG9yIHBlcm1hbmVudGx5LgorCisgIGZzbCxtcGM4NTQ4LXBtYzogU2xlZXAgc3BlY2lmaWVycyBjb25zaXN0IG9mIG9uZSBvciB0d28gY2VsbHMsIHRoZQorICBmaXJzdCBvZiB3aGljaCB3aWxsIGJlIE9SZWQgaW50byBERVZESVNSIChhbmQgdGhlIHNlY29uZCBpbnRvCisgIERFVkRJU1IyLCBpZiBwcmVzZW50IC0tIHRoaXMgY2VsbCBzaG91bGQgYmUgemVybyBvciBhYnNlbnQgaWYgdGhlCisgIGhhcmR3YXJlIGRvZXMgbm90IGhhdmUgREVWRElTUjIpIHVwb24gYSByZXF1ZXN0IGZvciBwZXJtYW5lbnQgZGV2aWNlCisgIGRpc2FibGluZy4gIFRoaXMgc2xlZXAgY29udHJvbGxlciBkb2VzIG5vdCBzdXBwb3J0IGNvbmZpZ3VyaW5nIGRldmljZXMKKyAgdG8gZGlzYWJsZSBkdXJpbmcgc3lzdGVtIHNsZWVwICh1bmxlc3Mgc3VwcG9ydGVkIGJ5IGFub3RoZXIgY29tcGF0aWJsZQorICBtYXRjaCksIG9yIGR5bmFtaWNhbGx5LgorCitFeGFtcGxlOgorCisJcG93ZXJAYjAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsbXBjODMxMy1wbWMiLCAiZnNsLG1wYzgzNDktcG1jIjsKKwkJcmVnID0gPDB4YjAwIDB4MTAwIDB4YTAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDw4MCA4PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL3JhaWRlbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL3JhaWRlbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhZDI5YjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvcmFpZGVuZy50eHQKQEAgLTAsMCArMSw4MSBAQAorKiBGcmVlc2NhbGUgODV4eCBSQUlEIEVuZ2luZSBub2RlcworCitSQUlEIEVuZ2luZSBub2RlcyBhcmUgZGVmaW5lZCB0byBkZXNjcmliZSBvbi1jaGlwIFJBSUQgYWNjZWxlcmF0b3JzLiAgRWFjaCBSQUlECitFbmdpbmUgc2hvdWxkIGhhdmUgYSBzZXBhcmF0ZSBub2RlLgorCitTdXBwb3J0ZWQgY2hpcHM6CitQNTAyMCwgUDUwNDAKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOglTaG91bGQgY29udGFpbiAiZnNsLHJhaWRlbmctdjEuMCIgYXMgdGhlIHZhbHVlCisJCVRoaXMgaWRlbnRpZmllcyBSQUlEIEVuZ2luZSBibG9jay4gMSBpbiAxLjAgcmVwcmVzZW50cworCQltYWpvciBudW1iZXIgd2hlcmVhcyAwIHJlcHJlc2VudHMgbWlub3IgbnVtYmVyLiBUaGUKKwkJdmVyc2lvbiBtYXRjaGVzIHRoZSBoYXJkd2FyZSBJUCB2ZXJzaW9uLgorLSByZWc6CQlvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistIHJhbmdlczoJc3RhbmRhcmQgcmFuZ2VzIHByb3BlcnR5IHNwZWNpZnlpbmcgdGhlIHRyYW5zbGF0aW9uCisJCWJldHdlZW4gY2hpbGQgYWRkcmVzcyBzcGFjZSBhbmQgcGFyZW50IGFkZHJlc3Mgc3BhY2UKKworRXhhbXBsZToKKwkvKiBQNTAyMCAqLworCXJhaWRlbmc6IHJhaWRlbmdAMzIwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wscmFpZGVuZy12MS4wIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQlyZWcJPSA8MHgzMjAwMDAgMHgxMDAwMD47CisJCXJhbmdlcwk9IDwwIDB4MzIwMDAwIDB4MTAwMDA+OworCX07CisKKworVGhlcmUgbXVzdCBiZSBhIHN1Yi1ub2RlIGZvciBlYWNoIGpvYiBxdWV1ZSBwcmVzZW50IGluIFJBSUQgRW5naW5lCitUaGlzIG5vZGUgbXVzdCBiZSBhIHN1Yi1ub2RlIG9mIHRoZSBtYWluIFJBSUQgRW5naW5lIG5vZGUKKworLSBjb21wYXRpYmxlOglTaG91bGQgY29udGFpbiAiZnNsLHJhaWRlbmctdjEuMC1qb2ItcXVldWUiIGFzIHRoZSB2YWx1ZQorCQlUaGlzIGlkZW50aWZpZXMgdGhlIGpvYiBxdWV1ZSBpbnRlcmZhY2UKKy0gcmVnOgkJb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3Igam9iIHF1ZXVlCistIHJhbmdlczoJc3RhbmRhcmQgcmFuZ2VzIHByb3BlcnR5IHNwZWNpZnlpbmcgdGhlIHRyYW5zbGF0aW9uCisJCWJldHdlZW4gY2hpbGQgYWRkcmVzcyBzcGFjZSBhbmQgcGFyZW50IGFkZHJlc3Mgc3BhY2UKKworRXhhbXBsZToKKwkvKiBQNTAyMCAqLworCXJhaWRlbmdfanEwQDEwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxyYWlkZW5nLXYxLjAtam9iLXF1ZXVlIjsKKwkJcmVnCSAgID0gPDB4MTAwMCAweDEwMDA+OworCQlyYW5nZXMJICAgPSA8MHgwIDB4MTAwMCAweDEwMDA+OworCX07CisKKworVGhlcmUgbXVzdCBiZSBhIHN1Yi1ub2RlIGZvciBlYWNoIGpvYiByaW5nIHByZXNlbnQgaW4gUkFJRCBFbmdpbmUKK1RoaXMgbm9kZSBtdXN0IGJlIGEgc3ViLW5vZGUgb2Ygam9iIHF1ZXVlIG5vZGUKKworLSBjb21wYXRpYmxlOglNdXN0IGNvbnRhaW4gImZzbCxyYWlkZW5nLXYxLjAtam9iLXJpbmciIGFzIHRoZSB2YWx1ZQorCQlUaGlzIGlkZW50aWZpZXMgam9iIHJpbmcuIFNob3VsZCBjb250YWluIGVpdGhlcgorCQkiZnNsLHJhaWRlbmctdjEuMC1ocC1yaW5nIiBvciAiZnNsLHJhaWRlbmctdjEuMC1scC1yaW5nIgorCQlkZXBlbmRpbmcgdXBvbiB3aGV0aGVyIHJpbmcgaGFzIGhpZ2ggb3IgbG93IHByaW9yaXR5CistIHJlZzoJCW9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIGpvYiByaW5nCistIGludGVycnVwdHM6CWludGVycnVwdCBtYXBwaW5nIGZvciBqb2IgcmluZyBJUlEKKworT3B0aW9uYWwgcHJvcGVydHk6CisKKy0gZnNsLGxpb2RuOglTcGVjaWZpZXMgdGhlIExJT0ROIHRvIGJlIHVzZWQgZm9yIEpvYiBSaW5nLiBUaGlzCisJCXByb3BlcnR5IGlzIG5vcm1hbGx5IHNldCBieSBmaXJtd2FyZS4gVmFsdWUKKwkJaXMgb2YgMTItYml0cyB3aGljaCBpcyB0aGUgTElPRE4gbnVtYmVyIGZvciB0aGlzIEpSLgorCQlUaGlzIHByb3BlcnR5IGlzIHVzZWQgYnkgdGhlIElPTU1VIChQQU1VKSB0byBkaXN0aW5xdWlzaAorCQl0cmFuc2FjdGlvbnMgZnJvbSB0aGlzIEpSIGFuZCB0aGFuIGJlIGFibGUgdG8gZG8gYWRkcmVzcworCQl0cmFuc2xhdGlvbiAmIHByb3RlY3Rpb24gYWNjb3JkaW5nbHkuCisKK0V4YW1wbGU6CisJLyogUDUwMjAgKi8KKwlyYWlkZW5nX2pxMEAxMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wscmFpZGVuZy12MS4wLWpvYi1xdWV1ZSI7CisJCXJlZwkgICA9IDwweDEwMDAgMHgxMDAwPjsKKwkJcmFuZ2VzCSAgID0gPDB4MCAweDEwMDAgMHgxMDAwPjsKKworCQlyYWlkZW5nX2pyMDoganJAMCB7CisJCQljb21wYXRpYmxlID0gImZzbCxyYWlkZW5nLXYxLjAtam9iLXJpbmciLCAiZnNsLHJhaWRlbmctdjEuMC1ocC1yaW5nIjsKKwkJCXJlZwkgICA9IDwweDAgMHg0MDA+OworCQkJaW50ZXJydXB0cyA9IDwxMzkgMiAwIDA+OworCQkJaW50ZXJydXB0LXBhcmVudCA9IDwmbXBpYz47CisJCQlmc2wsbGlvZG4gPSA8MHg0MT47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9zY2ZnLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9zY2ZnLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTMyYzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL3NjZmcudHh0CkBAIC0wLDAgKzEsMTggQEAKK0ZyZWVzY2FsZSBTdXBwbGVtZW50IGNvbmZpZ3VyYXRpb24gdW5pdCAoU0NGRykKKworU0NGRyBpcyB0aGUgc3VwcGxlbWVudGFsIGNvbmZpZ3VyYXRpb24gdW5pdCwgdGhhdCBwcm92aWRlcyBTb0Mgc3BlY2lmaWMKK2NvbmZpZ3VyYXRpb24gYW5kIHN0YXR1cyByZWdpc3RlcnMgZm9yIHRoZSBjaGlwLiBTdWNoIGFzIGdldHRpbmcgUEVYIHBvcnQKK3N0YXR1cy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImZzbCw8Y2hpcD4tc2NmZyIKKy0gcmVnOiBzaG91bGQgY29udGFpbiBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiBTQ0ZHIG1lbW9yeS1tYXBwZWQKK3JlZ2lzdGVycworCitFeGFtcGxlOgorCisJc2NmZzogZ2xvYmFsLXV0aWxpdGllc0BmYzAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLHQxMDQwLXNjZmciOworCQlyZWcgPSA8MHhmYzAwMCAweDEwMDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvc3Jpby1ybXUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL3NyaW8tcm11LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWE4YTJiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL3NyaW8tcm11LnR4dApAQCAtMCwwICsxLDE2MyBAQAorTWVzc2FnZSB1bml0IG5vZGU6CisKK0ZvciBTUklPIGNvbnRyb2xsZXJzIHRoYXQgaW1wbGVtZW50IHRoZSBtZXNzYWdlIHVuaXQgYXMgcGFydCBvZiB0aGUgY29udHJvbGxlcgordGhpcyBub2RlIGlzIHJlcXVpcmVkLiAgRm9yIGRldmljZXMgd2l0aCBSTUFOIHRoaXMgbm9kZSBzaG91bGQgTk9UIGV4aXN0LiAgVGhlCitub2RlIGlzIGNvbXBvc2VkIG9mIHRocmVlIHR5cGVzIG9mIHN1Yi1ub2RlcyAoImZzbC1zcmlvLW1zZy11bml0IiwKKyJmc2wtc3Jpby1kYmVsbC11bml0IiBhbmQgImZzbC1zcmlvLXBvcnQtd3JpdGUtdW5pdCIpLgorCitTZWUgc3Jpby50eHQgZm9yIG1vcmUgZGV0YWlscyBhYm91dCBnZW5lcmljIFNSSU8gY29udHJvbGxlciBkZXRhaWxzLgorCisgICAtIGNvbXBhdGlibGUKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8c3RyaW5nPgorCURlZmluaXRpb246IE11c3QgaW5jbHVkZSAiZnNsLHNyaW8tcm11LXZYLlkiLCAiZnNsLHNyaW8tcm11Ii4KKworCVRoZSB2ZXJzaW9uIFguWSBzaG91bGQgbWF0Y2ggdGhlIGdlbmVyYWwgU1JJTyBjb250cm9sbGVyJ3MgSVAgQmxvY2sKKwlyZXZpc2lvbiByZWdpc3RlcidzIE1ham9yKFgpIGFuZCBNaW5vciAoWSkgdmFsdWUuCisKKyAgIC0gcmVnCisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiAgU3BlY2lmaWVzIHRoZSBwaHlzaWNhbCBhZGRyZXNzIGFuZAorCQlsZW5ndGggb2YgdGhlIFNSSU8gY29uZmlndXJhdGlvbiByZWdpc3RlcnMgZm9yIG1lc3NhZ2UgdW5pdHMKKwkJYW5kIGRvb3JiZWxsIHVuaXRzLgorCisgICAtIGZzbCxsaW9kbgorCVVzYWdlOiBvcHRpb25hbC1idXQtcmVjb21tZW5kZWQgKGZvciBkZXZpY2VzIHdpdGggUEFNVSkKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IFRoZSBsb2dpY2FsIEkvTyBkZXZpY2UgbnVtYmVyIGZvciB0aGUgUEFNVSAoSU9NTVUpIHRvIGJlCisJCWNvcnJlY3RseSBjb25maWd1cmVkIGZvciBTUklPIGFjY2Vzc2VzLiAgVGhlIHByb3BlcnR5IHNob3VsZAorCQlub3QgZXhpc3Qgb24gZGV2aWNlcyB0aGF0IGRvIG5vdCBzdXBwb3J0IFBBTVUuCisKKwkJVGhlIExJT0ROIHZhbHVlIGlzIGFzc29jaWF0ZWQgd2l0aCBhbGwgUk1VIHRyYW5zYWN0aW9ucworCQkobXNnLXVuaXQsIGRvb3JiZWxsLCBwb3J0LXdyaXRlKS4KKworU3ViLU5vZGVzIGZvciBSTVU6ICBUaGUgUk1VIG5vZGUgaXMgY29tcG9zZWQgb2YgbXVsdGlwbGUgc3ViLW5vZGVzIHRoYXQKK2NvcnJlc3BvbmQgdG8gdGhlIGFjdHVhbCBzdWItY29udHJvbGxlcnMgaW4gdGhlIFJNVS4gIFRoZSBtYW51YWwgZm9yIGEgZ2l2ZW4KK1NvQyB3aWxsIGRldGFpbCB3aGljaCBhbmQgaG93IG1hbnkgb2YgdGhlc2Ugc3ViLWNvbnRyb2xsZXJzIGFyZSBpbXBsZW1lbnRlZC4KKworTWVzc2FnZSBVbml0OgorCisgICAtIGNvbXBhdGlibGUKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8c3RyaW5nPgorCURlZmluaXRpb246IE11c3QgaW5jbHVkZSAiZnNsLHNyaW8tbXNnLXVuaXQtdlguWSIsICJmc2wsc3Jpby1tc2ctdW5pdCIuCisKKwlUaGUgdmVyc2lvbiBYLlkgc2hvdWxkIG1hdGNoIHRoZSBnZW5lcmFsIFNSSU8gY29udHJvbGxlcidzIElQIEJsb2NrCisJcmV2aXNpb24gcmVnaXN0ZXIncyBNYWpvcihYKSBhbmQgTWlub3IgKFkpIHZhbHVlLgorCisgICAtIHJlZworCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisJRGVmaW5pdGlvbjogQSBzdGFuZGFyZCBwcm9wZXJ0eS4gIFNwZWNpZmllcyB0aGUgcGh5c2ljYWwgYWRkcmVzcyBhbmQKKwkJbGVuZ3RoIG9mIHRoZSBTUklPIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGZvciBtZXNzYWdlIHVuaXRzCisJCWFuZCBkb29yYmVsbCB1bml0cy4KKworICAgLSBpbnRlcnJ1cHRzCisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHByb3BfZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOiAgU3BlY2lmaWVzIHRoZSBpbnRlcnJ1cHRzIGdlbmVyYXRlZCBieSB0aGlzIGRldmljZS4gIFRoZQorCQl2YWx1ZSBvZiB0aGUgaW50ZXJydXB0cyBwcm9wZXJ0eSBjb25zaXN0cyBvZiBvbmUgaW50ZXJydXB0CisJCXNwZWNpZmllci4gVGhlIGZvcm1hdCBvZiB0aGUgc3BlY2lmaWVyIGlzIGRlZmluZWQgYnkgdGhlCisJCWJpbmRpbmcgZG9jdW1lbnQgZGVzY3JpYmluZyB0aGUgbm9kZSdzIGludGVycnVwdCBwYXJlbnQuCisKKwkJQSBwYWlyIG9mIElSUXMgYXJlIHNwZWNpZmllZCBpbiB0aGlzIHByb3BlcnR5LiAgVGhlIGZpcnN0CisJCWVsZW1lbnQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSB0cmFuc21pdCAoVFgpIGludGVycnVwdCBhbmQgdGhlCisJCXNlY29uZCBlbGVtZW50IGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVjZWl2ZSAoUlgpIGludGVycnVwdC4KKworRG9vcmJlbGwgVW5pdDoKKworICAgLSBjb21wYXRpYmxlCisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHN0cmluZz4KKwlEZWZpbml0aW9uOiBNdXN0IGluY2x1ZGU6CisJCSJmc2wsc3Jpby1kYmVsbC11bml0LXZYLlkiLCAiZnNsLHNyaW8tZGJlbGwtdW5pdCIKKworCVRoZSB2ZXJzaW9uIFguWSBzaG91bGQgbWF0Y2ggdGhlIGdlbmVyYWwgU1JJTyBjb250cm9sbGVyJ3MgSVAgQmxvY2sKKwlyZXZpc2lvbiByZWdpc3RlcidzIE1ham9yKFgpIGFuZCBNaW5vciAoWSkgdmFsdWUuCisKKyAgIC0gcmVnCisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiAgU3BlY2lmaWVzIHRoZSBwaHlzaWNhbCBhZGRyZXNzIGFuZAorCQlsZW5ndGggb2YgdGhlIFNSSU8gY29uZmlndXJhdGlvbiByZWdpc3RlcnMgZm9yIG1lc3NhZ2UgdW5pdHMKKwkJYW5kIGRvb3JiZWxsIHVuaXRzLgorCisgICAtIGludGVycnVwdHMKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcF9lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246ICBTcGVjaWZpZXMgdGhlIGludGVycnVwdHMgZ2VuZXJhdGVkIGJ5IHRoaXMgZGV2aWNlLiAgVGhlCisJCXZhbHVlIG9mIHRoZSBpbnRlcnJ1cHRzIHByb3BlcnR5IGNvbnNpc3RzIG9mIG9uZSBpbnRlcnJ1cHQKKwkJc3BlY2lmaWVyLiBUaGUgZm9ybWF0IG9mIHRoZSBzcGVjaWZpZXIgaXMgZGVmaW5lZCBieSB0aGUKKwkJYmluZGluZyBkb2N1bWVudCBkZXNjcmliaW5nIHRoZSBub2RlJ3MgaW50ZXJydXB0IHBhcmVudC4KKworCQlBIHBhaXIgb2YgSVJRcyBhcmUgc3BlY2lmaWVkIGluIHRoaXMgcHJvcGVydHkuICBUaGUgZmlyc3QKKwkJZWxlbWVudCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIHRyYW5zbWl0IChUWCkgaW50ZXJydXB0IGFuZCB0aGUKKwkJc2Vjb25kIGVsZW1lbnQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWNlaXZlIChSWCkgaW50ZXJydXB0LgorCitQb3J0LVdyaXRlIFVuaXQ6CisKKyAgIC0gY29tcGF0aWJsZQorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxzdHJpbmc+CisJRGVmaW5pdGlvbjogTXVzdCBpbmNsdWRlOgorCQkgImZzbCxzcmlvLXBvcnQtd3JpdGUtdW5pdC12WC5ZIiwgImZzbCxzcmlvLXBvcnQtd3JpdGUtdW5pdCIKKworCVRoZSB2ZXJzaW9uIFguWSBzaG91bGQgbWF0Y2ggdGhlIGdlbmVyYWwgU1JJTyBjb250cm9sbGVyJ3MgSVAgQmxvY2sKKwlyZXZpc2lvbiByZWdpc3RlcidzIE1ham9yKFgpIGFuZCBNaW5vciAoWSkgdmFsdWUuCisKKyAgIC0gcmVnCisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiAgU3BlY2lmaWVzIHRoZSBwaHlzaWNhbCBhZGRyZXNzIGFuZAorCQlsZW5ndGggb2YgdGhlIFNSSU8gY29uZmlndXJhdGlvbiByZWdpc3RlcnMgZm9yIG1lc3NhZ2UgdW5pdHMKKwkJYW5kIGRvb3JiZWxsIHVuaXRzLgorCisgICAtIGludGVycnVwdHMKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcF9lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246ICBTcGVjaWZpZXMgdGhlIGludGVycnVwdHMgZ2VuZXJhdGVkIGJ5IHRoaXMgZGV2aWNlLiAgVGhlCisJCXZhbHVlIG9mIHRoZSBpbnRlcnJ1cHRzIHByb3BlcnR5IGNvbnNpc3RzIG9mIG9uZSBpbnRlcnJ1cHQKKwkJc3BlY2lmaWVyLiBUaGUgZm9ybWF0IG9mIHRoZSBzcGVjaWZpZXIgaXMgZGVmaW5lZCBieSB0aGUKKwkJYmluZGluZyBkb2N1bWVudCBkZXNjcmliaW5nIHRoZSBub2RlJ3MgaW50ZXJydXB0IHBhcmVudC4KKworCQlBIHNpbmdsZSBJUlEgdGhhdCBoYW5kbGVzIHBvcnQtd3JpdGUgY29uZGl0aW9ucyBpcworCQlzcGVjaWZpZWQgYnkgdGhpcyBwcm9wZXJ0eS4gIChUeXBpY2FsbHkgc2hhcmVkIHdpdGggZXJyb3IpLgorCisgICBOb3RlOiBBbGwgb3RoZXIgc3RhbmRhcmQgcHJvcGVydGllcyAoc2VlIHRoZSBlUEFQUikgYXJlIGFsbG93ZWQKKyAgIGJ1dCBhcmUgb3B0aW9uYWwuCisKK0V4YW1wbGU6CisJcm11OiBybXVAZDMwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxzcmlvLXJtdSI7CisJCXJlZyA9IDwweGQzMDAwIDB4NDAwPjsKKwkJcmFuZ2VzID0gPDB4MCAweGQzMDAwIDB4NDAwPjsKKwkJZnNsLGxpb2RuID0gPDB4Yzg+OworCisJCW1lc3NhZ2UtdW5pdEAwIHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLHNyaW8tbXNnLXVuaXQiOworCQkJcmVnID0gPDB4MCAweDEwMD47CisJCQlpbnRlcnJ1cHRzID0gPAorCQkJCTYwIDIgMCAwICAvKiBtc2cxX3R4X2lycSAqLworCQkJCTYxIDIgMCAwPjsvKiBtc2cxX3J4X2lycSAqLworCQl9OworCQltZXNzYWdlLXVuaXRAMTAwIHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLHNyaW8tbXNnLXVuaXQiOworCQkJcmVnID0gPDB4MTAwIDB4MTAwPjsKKwkJCWludGVycnVwdHMgPSA8CisJCQkJNjIgMiAwIDAgIC8qIG1zZzJfdHhfaXJxICovCisJCQkJNjMgMiAwIDA+Oy8qIG1zZzJfcnhfaXJxICovCisJCX07CisJCWRvb3JiZWxsLXVuaXRANDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLHNyaW8tZGJlbGwtdW5pdCI7CisJCQlyZWcgPSA8MHg0MDAgMHg4MD47CisJCQlpbnRlcnJ1cHRzID0gPAorCQkJCTU2IDIgMCAwICAvKiBiZWxsX291dGJfaXJxICovCisJCQkJNTcgMiAwIDA+Oy8qIGJlbGxfaW5iX2lycSAqLworCQl9OworCQlwb3J0LXdyaXRlLXVuaXRANGUwIHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLHNyaW8tcG9ydC13cml0ZS11bml0IjsKKwkJCXJlZyA9IDwweDRlMCAweDIwPjsKKwkJCWludGVycnVwdHMgPSA8MTYgMiAxIDExPjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL3NyaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL3NyaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3YWJmMGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvc3Jpby50eHQKQEAgLTAsMCArMSwxMDMgQEAKKyogRnJlZXNjYWxlIFNlcmlhbCBSYXBpZElPIChTUklPKSBDb250cm9sbGVyCisKK1JhcGlkSU8gcG9ydCBub2RlOgorUHJvcGVydGllczoKKyAgIC0gY29tcGF0aWJsZQorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxzdHJpbmc+CisJRGVmaW5pdGlvbjogTXVzdCBpbmNsdWRlICJmc2wsc3JpbyIgZm9yIElQIGJsb2NrcyB3aXRoIElQIEJsb2NrCisJUmV2aXNpb24gUmVnaXN0ZXIgKFNSSU8gSVBCUlIxKSBNYWpvciBJRCBlcXVhbCB0byAweDAxYzAuCisKKwlPcHRpb25hbGx5LCBhIGNvbXBhdGlibGUgc3RyaW5nIG9mICJmc2wsc3Jpby12WC5ZIiB3aGVyZSBYIGlzIE1ham9yCisJdmVyc2lvbiBpbiBJUCBCbG9jayBSZXZpc2lvbiBSZWdpc3RlciBhbmQgWSBpcyBNaW5vciB2ZXJzaW9uLiAgSWYgdGhpcworCWNvbXBhdGlibGUgaXMgcHJvdmlkZWQgaXQgc2hvdWxkIGJlIG9yZGVyZWQgYmVmb3JlICJmc2wsc3JpbyIuCisKKyAgIC0gcmVnCisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiAgU3BlY2lmaWVzIHRoZSBwaHlzaWNhbCBhZGRyZXNzIGFuZAorCQlsZW5ndGggb2YgdGhlIFNSSU8gY29uZmlndXJhdGlvbiByZWdpc3RlcnMuICBUaGUgc2l6ZSBzaG91bGQKKwkJYmUgc2V0IHRvIDB4MTEwMDAuCisKKyAgIC0gaW50ZXJydXB0cworCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxwcm9wX2VuY29kZWQtYXJyYXk+CisJRGVmaW5pdGlvbjogIFNwZWNpZmllcyB0aGUgaW50ZXJydXB0cyBnZW5lcmF0ZWQgYnkgdGhpcyBkZXZpY2UuICBUaGUKKwkJdmFsdWUgb2YgdGhlIGludGVycnVwdHMgcHJvcGVydHkgY29uc2lzdHMgb2Ygb25lIGludGVycnVwdAorCQlzcGVjaWZpZXIuIFRoZSBmb3JtYXQgb2YgdGhlIHNwZWNpZmllciBpcyBkZWZpbmVkIGJ5IHRoZQorCQliaW5kaW5nIGRvY3VtZW50IGRlc2NyaWJpbmcgdGhlIG5vZGUncyBpbnRlcnJ1cHQgcGFyZW50LgorCisJCUEgc2luZ2xlIElSUSB0aGF0IGhhbmRsZXMgZXJyb3IgY29uZGl0aW9ucyBpcyBzcGVjaWZpZWQgYnkgdGhpcworCQlwcm9wZXJ0eS4gIChUeXBpY2FsbHkgc2hhcmVkIHdpdGggcG9ydC13cml0ZSkuCisKKyAgIC0gZnNsLHNyaW8tcm11LWhhbmRsZToKKwlVc2FnZTogcmVxdWlyZWQgaWYgcm11IG5vZGUgaXMgZGVmaW5lZAorCVZhbHVlIHR5cGU6IDxwaGFuZGxlPgorCURlZmluaXRpb246IEEgc2luZ2xlIDxwaGFuZGxlPiB2YWx1ZSB0aGF0IHBvaW50cyB0byB0aGUgUk1VLgorCShTZWUgc3Jpby1ybXUudHh0IGZvciBtb3JlIGRldGFpbHMgb24gUk1VIG5vZGUgYmluZGluZykKKworUG9ydCBDaGlsZCBOb2RlczogIFRoZXJlIHNob3VsZCBhIHBvcnQgY2hpbGQgbm9kZSBmb3IgZWFjaCBwb3J0IHRoYXQgZXhpc3RzIGluCit0aGUgY29udHJvbGxlci4gIFRoZSBwb3J0cyBhcmUgbnVtYmVyZWQgc3RhcnRpbmcgYXQgb25lICgxKSBhbmQgc2hvdWxkIGhhdmUKK3RoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKKworICAgLSBjZWxsLWluZGV4CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHUzMj4KKwlEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiAgTWF0Y2hlcyB0aGUgcG9ydCBpZC4KKworICAgLSByYW5nZXMKKwlVc2FnZTogcmVxdWlyZWQgaWYgbG9jYWwgYWNjZXNzIHdpbmRvd3MgcHJlc2V0CisJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOiBBIHN0YW5kYXJkIHByb3BlcnR5LiBVdGlsaXplZCB0byBkZXNjcmliZSB0aGUgbWVtb3J5IG1hcHBlZAorCQlJTyBzcGFjZSB1dGlsaXplZCBieSB0aGUgY29udHJvbGxlci4gIFRoaXMgY29ycmVzcG9uZHMgdG8gdGhlCisJCXNldHRpbmcgb2YgdGhlIGxvY2FsIGFjY2VzcyB3aW5kb3dzIHRoYXQgYXJlIHRhcmdldGVkIHRvIHRoaXMKKwkJU1JJTyBwb3J0LgorCisgICAtIGZzbCxsaW9kbgorCVVzYWdlOiBvcHRpb25hbC1idXQtcmVjb21tZW5kZWQgKGZvciBkZXZpY2VzIHdpdGggUEFNVSkKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IFRoZSBsb2dpY2FsIEkvTyBkZXZpY2UgbnVtYmVyIGZvciB0aGUgUEFNVSAoSU9NTVUpIHRvIGJlCisJCWNvcnJlY3RseSBjb25maWd1cmVkIGZvciBTUklPIGFjY2Vzc2VzLiAgVGhlIHByb3BlcnR5IHNob3VsZAorCQlub3QgZXhpc3Qgb24gZGV2aWNlcyB0aGF0IGRvIG5vdCBzdXBwb3J0IFBBTVUuCisKKwkJRm9yIEhXIChpZSwgdGhlIFA0MDgwKSB0aGF0IG9ubHkgc3VwcG9ydHMgYSBMSU9ETiBmb3IgYm90aAorCQltZW1vcnkgYW5kIG1haW50ZW5hbmNlIHRyYW5zYWN0aW9ucyB0aGVuIGEgc2luZ2xlIExJT0ROIGlzCisJCXJlcHJlc2VudGVkIGluIHRoZSBwcm9wZXJ0eSBmb3IgYm90aCB0cmFuc2FjdGlvbnMuCisKKwkJRm9yIEhXIChpZSwgdGhlIFAzMDR4L1A1MDIwLCBldGMpIHRoYXQgc3VwcG9ydHMgYW4gTElPRE4gZm9yCisJCW1lbW9yeSB0cmFuc2FjdGlvbnMgYW5kIGEgdW5pcXVlIExJT0ROIGZvciBtYWludGVuYW5jZQorCQl0cmFuc2FjdGlvbnMgdGhlbiBhIHBhaXIgb2YgTElPRE5zIGFyZSByZXByZXNlbnRlZCBpbiB0aGUKKwkJcHJvcGVydHkuICBXaXRoaW4gdGhlIHBhaXIsIHRoZSBmaXJzdCBlbGVtZW50IHJlcHJlc2VudHMgdGhlCisJCUxJT0ROIGFzc29jaWF0ZWQgd2l0aCBtZW1vcnkgdHJhbnNhY3Rpb25zIGFuZCB0aGUgc2Vjb25kIGVsZW1lbnQKKwkJcmVwcmVzZW50cyB0aGUgTElPRE4gYXNzb2NpYXRlZCB3aXRoIG1haW50ZW5hbmNlIHRyYW5zYWN0aW9ucworCQlmb3IgdGhlIHBvcnQuCisKK05vdGU6IEFsbCBvdGhlciBzdGFuZGFyZCBwcm9wZXJ0aWVzIChzZWUgZVBBUFIpIGFyZSBhbGxvd2VkIGJ1dCBhcmUgb3B0aW9uYWwuCisKK0V4YW1wbGU6CisKKwlyYXBpZGlvOiByYXBpZGlvQGZmZTBjMDAwMCB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDI+OworCQkjc2l6ZS1jZWxscyA9IDwyPjsKKwkJcmVnID0gPDB4ZiAweGZlMGMwMDAwIDAgMHgxMTAwMD47CisJCWNvbXBhdGlibGUgPSAiZnNsLHNyaW8iOworCQlpbnRlcnJ1cHRzID0gPDE2IDIgMSAxMT47IC8qIGVycl9pcnEgKi8KKwkJZnNsLHNyaW8tcm11LWhhbmRsZSA9IDwmcm11PjsKKwkJcmFuZ2VzOworCisJCXBvcnQxIHsKKwkJCWNlbGwtaW5kZXggPSA8MT47CisJCQkjYWRkcmVzcy1jZWxscyA9IDwyPjsKKwkJCSNzaXplLWNlbGxzID0gPDI+OworCQkJZnNsLGxpb2RuID0gPDM0PjsKKwkJCXJhbmdlcyA9IDwwIDAgMHhjIDB4MjAwMDAwMDAgMCAweDEwMDAwMDAwPjsKKwkJfTsKKworCQlwb3J0MiB7CisJCQljZWxsLWluZGV4ID0gPDI+OworCQkJI2FkZHJlc3MtY2VsbHMgPSA8Mj47CisJCQkjc2l6ZS1jZWxscyA9IDwyPjsKKwkJCWZzbCxsaW9kbiA9IDw0OD47CisJCQlyYW5nZXMgPSA8MCAwIDB4YyAweDMwMDAwMDAwIDAgMHgxMDAwMDAwMD47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL25pbnRlbmRvL2dhbWVjdWJlLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL25pbnRlbmRvL2dhbWVjdWJlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTU4NTg1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvbmludGVuZG8vZ2FtZWN1YmUudHh0CkBAIC0wLDAgKzEsMTA5IEBACisKK05pbnRlbmRvIEdhbWVDdWJlIGRldmljZSB0cmVlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisxKSBUaGUgImZsaXBwZXIiIG5vZGUKKworICBUaGlzIG5vZGUgcmVwcmVzZW50cyB0aGUgbXVsdGktZnVuY3Rpb24gIkZsaXBwZXIiIGNoaXAsIHdoaWNoIHBhY2thZ2VzCisgIG1hbnkgb2YgdGhlIGRldmljZXMgZm91bmQgaW4gdGhlIE5pbnRlbmRvIEdhbWVDdWJlLgorCisgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgIC0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAibmludGVuZG8sZmxpcHBlciIKKworMS5hKSBUaGUgVmlkZW8gSW50ZXJmYWNlIChWSSkgbm9kZQorCisgIFJlcHJlc2VudHMgdGhlIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBncmFwaGljcyBwcm9jZXNzb3IgYW5kIGEgZXh0ZXJuYWwKKyAgdmlkZW8gZW5jb2Rlci4KKworICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgICAtIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgIm5pbnRlbmRvLGZsaXBwZXItdmkiCisgICAtIHJlZyA6IHNob3VsZCBjb250YWluIHRoZSBWSSByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorICAgLSBpbnRlcnJ1cHRzIDogc2hvdWxkIGNvbnRhaW4gdGhlIFZJIGludGVycnVwdAorCisxLmIpIFRoZSBQcm9jZXNzb3IgSW50ZXJmYWNlIChQSSkgbm9kZQorCisgIFJlcHJlc2VudHMgdGhlIGRhdGEgYW5kIGNvbnRyb2wgaW50ZXJmYWNlIGJldHdlZW4gdGhlIG1haW4gcHJvY2Vzc29yCisgIGFuZCBncmFwaGljcyBhbmQgYXVkaW8gcHJvY2Vzc29yLgorCisgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJuaW50ZW5kbyxmbGlwcGVyLXBpIgorICAtIHJlZyA6IHNob3VsZCBjb250YWluIHRoZSBQSSByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorCisxLmIuaSkgVGhlICJGbGlwcGVyIiBpbnRlcnJ1cHQgY29udHJvbGxlciBub2RlCisKKyAgUmVwcmVzZW50cyB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgd2l0aGluIHRoZSAiRmxpcHBlciIgY2hpcC4KKyAgVGhlIG5vZGUgZm9yIHRoZSAiRmxpcHBlciIgaW50ZXJydXB0IGNvbnRyb2xsZXIgbXVzdCBiZSBwbGFjZWQgdW5kZXIKKyAgdGhlIFBJIG5vZGUuCisKKyAgUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgIm5pbnRlbmRvLGZsaXBwZXItcGljIgorCisxLmMpIFRoZSBEaWdpdGFsIFNpZ25hbCBQcm9jZXNvciAoRFNQKSBub2RlCisKKyAgUmVwcmVzZW50cyB0aGUgZGlnaXRhbCBzaWduYWwgcHJvY2Vzc29yIGludGVyZmFjZSwgZGVzaWduZWQgdG8gb2ZmbG9hZAorICBhdWRpbyByZWxhdGVkIHRhc2tzLgorCisgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgIC0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAibmludGVuZG8sZmxpcHBlci1kc3AiCisgICAtIHJlZyA6IHNob3VsZCBjb250YWluIHRoZSBEU1AgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKyAgIC0gaW50ZXJydXB0cyA6IHNob3VsZCBjb250YWluIHRoZSBEU1AgaW50ZXJydXB0CisKKzEuYy5pKSBUaGUgQXV4aWxpYXJ5IFJBTSAoQVJBTSkgbm9kZQorCisgIFJlcHJlc2VudHMgdGhlIG5vbiBjcHUtYWRkcmVzc2FibGUgcmFtIGRlc2lnbmVkIG1haW5seSB0byBzdG9yZSBhdWRpbworICByZWxhdGVkIGluZm9ybWF0aW9uLgorICBUaGUgQVJBTSBub2RlIG11c3QgYmUgcGxhY2VkIHVuZGVyIHRoZSBEU1Agbm9kZS4KKworICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgICAtIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgIm5pbnRlbmRvLGZsaXBwZXItYXJhbSIKKyAgIC0gcmVnIDogc2hvdWxkIGNvbnRhaW4gdGhlIEFSQU0gc3RhcnQgKHplcm8tYmFzZWQpIGFuZCBsZW5ndGgKKworMS5kKSBUaGUgRGlzayBJbnRlcmZhY2UgKERJKSBub2RlCisKKyAgUmVwcmVzZW50cyB0aGUgaW50ZXJmYWNlIHVzZWQgdG8gY29tbXVuaWNhdGUgd2l0aCBtYXNzIHN0b3JhZ2UgZGV2aWNlcy4KKworICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgICAtIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgIm5pbnRlbmRvLGZsaXBwZXItZGkiCisgICAtIHJlZyA6IHNob3VsZCBjb250YWluIHRoZSBESSByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorICAgLSBpbnRlcnJ1cHRzIDogc2hvdWxkIGNvbnRhaW4gdGhlIERJIGludGVycnVwdAorCisxLmUpIFRoZSBBdWRpbyBJbnRlcmZhY2UgKEFJKSBub2RlCisKKyAgUmVwcmVzZW50cyB0aGUgaW50ZXJmYWNlIHRvIHRoZSBleHRlcm5hbCAxNi1iaXQgc3RlcmVvIGRpZ2l0YWwtdG8tYW5hbG9nCisgIGNvbnZlcnRlci4KKworICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgICAtIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgIm5pbnRlbmRvLGZsaXBwZXItYWkiCisgICAtIHJlZyA6IHNob3VsZCBjb250YWluIHRoZSBBSSByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorICAgLSBpbnRlcnJ1cHRzIDogc2hvdWxkIGNvbnRhaW4gdGhlIEFJIGludGVycnVwdAorCisxLmYpIFRoZSBTZXJpYWwgSW50ZXJmYWNlIChTSSkgbm9kZQorCisgIFJlcHJlc2VudHMgdGhlIGludGVyZmFjZSB0byB0aGUgZm91ciBzaW5nbGUgYml0IHNlcmlhbCBpbnRlcmZhY2VzLgorICBUaGUgU0kgaXMgYSBwcm9wcmlldGFyeSBzZXJpYWwgaW50ZXJmYWNlIHVzZWQgbm9ybWFsbHkgdG8gY29udHJvbCBnYW1lcGFkcy4KKyAgSXQncyBOT1QgYSBSUzIzMi10eXBlIGludGVyZmFjZS4KKworICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgICAtIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgIm5pbnRlbmRvLGZsaXBwZXItc2kiCisgICAtIHJlZyA6IHNob3VsZCBjb250YWluIHRoZSBTSSByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorICAgLSBpbnRlcnJ1cHRzIDogc2hvdWxkIGNvbnRhaW4gdGhlIFNJIGludGVycnVwdAorCisxLmcpIFRoZSBFeHRlcm5hbCBJbnRlcmZhY2UgKEVYSSkgbm9kZQorCisgIFJlcHJlc2VudHMgdGhlIG11bHRpLWNoYW5uZWwgU1BJLWxpa2UgaW50ZXJmYWNlLgorCisgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgIC0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAibmludGVuZG8sZmxpcHBlci1leGkiCisgICAtIHJlZyA6IHNob3VsZCBjb250YWluIHRoZSBFWEkgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKyAgIC0gaW50ZXJydXB0cyA6IHNob3VsZCBjb250YWluIHRoZSBFWEkgaW50ZXJydXB0CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL25pbnRlbmRvL3dpaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9uaW50ZW5kby93aWkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2YWZhMzIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9uaW50ZW5kby93aWkudHh0CkBAIC0wLDAgKzEsMTg0IEBACisKK05pbnRlbmRvIFdpaSBkZXZpY2UgdHJlZQorPT09PT09PT09PT09PT09PT09PT09PT09CisKKzApIFRoZSByb290IG5vZGUKKworICBUaGlzIG5vZGUgcmVwcmVzZW50cyB0aGUgTmludGVuZG8gV2lpIHZpZGVvIGdhbWUgY29uc29sZS4KKworICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgICAtIG1vZGVsIDogU2hvdWxkIGJlICJuaW50ZW5kbyx3aWkiCisgICAtIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgIm5pbnRlbmRvLHdpaSIKKworMSkgVGhlICJob2xseXdvb2QiIG5vZGUKKworICBUaGlzIG5vZGUgcmVwcmVzZW50cyB0aGUgbXVsdGktZnVuY3Rpb24gIkhvbGx5d29vZCIgY2hpcCwgd2hpY2ggcGFja2FnZXMKKyAgbWFueSBvZiB0aGUgZGV2aWNlcyBmb3VuZCBpbiB0aGUgTmludGVuZG8gV2lpLgorCisgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgIC0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAibmludGVuZG8saG9sbHl3b29kIgorCisxLmEpIFRoZSBWaWRlbyBJbnRlcmZhY2UgKFZJKSBub2RlCisKKyAgUmVwcmVzZW50cyB0aGUgaW50ZXJmYWNlIGJldHdlZW4gdGhlIGdyYXBoaWNzIHByb2Nlc3NvciBhbmQgYSBleHRlcm5hbAorICB2aWRlbyBlbmNvZGVyLgorCisgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgIC0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAibmludGVuZG8saG9sbHl3b29kLXZpIiwibmludGVuZG8sZmxpcHBlci12aSIKKyAgIC0gcmVnIDogc2hvdWxkIGNvbnRhaW4gdGhlIFZJIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCisgICAtIGludGVycnVwdHMgOiBzaG91bGQgY29udGFpbiB0aGUgVkkgaW50ZXJydXB0CisKKzEuYikgVGhlIFByb2Nlc3NvciBJbnRlcmZhY2UgKFBJKSBub2RlCisKKyAgUmVwcmVzZW50cyB0aGUgZGF0YSBhbmQgY29udHJvbCBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgbWFpbiBwcm9jZXNzb3IKKyAgYW5kIGdyYXBoaWNzIGFuZCBhdWRpbyBwcm9jZXNzb3IuCisKKyAgUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgIm5pbnRlbmRvLGhvbGx5d29vZC1waSIsIm5pbnRlbmRvLGZsaXBwZXItcGkiCisgIC0gcmVnIDogc2hvdWxkIGNvbnRhaW4gdGhlIFBJIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCisKKzEuYi5pKSBUaGUgIkZsaXBwZXIiIGludGVycnVwdCBjb250cm9sbGVyIG5vZGUKKworICBSZXByZXNlbnRzIHRoZSAiRmxpcHBlciIgaW50ZXJydXB0IGNvbnRyb2xsZXIgd2l0aGluIHRoZSAiSG9sbHl3b29kIiBjaGlwLgorICBUaGUgbm9kZSBmb3IgdGhlICJGbGlwcGVyIiBpbnRlcnJ1cHQgY29udHJvbGxlciBtdXN0IGJlIHBsYWNlZCB1bmRlcgorICB0aGUgUEkgbm9kZS4KKworICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgIC0gI2ludGVycnVwdC1jZWxscyA6IDwxPgorICAtIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgIm5pbnRlbmRvLGZsaXBwZXItcGljIgorICAtIGludGVycnVwdC1jb250cm9sbGVyCisKKzEuYykgVGhlIERpZ2l0YWwgU2lnbmFsIFByb2Nlc29yIChEU1ApIG5vZGUKKworICBSZXByZXNlbnRzIHRoZSBkaWdpdGFsIHNpZ25hbCBwcm9jZXNzb3IgaW50ZXJmYWNlLCBkZXNpZ25lZCB0byBvZmZsb2FkCisgIGF1ZGlvIHJlbGF0ZWQgdGFza3MuCisKKyAgUmVxdWlyZWQgcHJvcGVydGllczoKKworICAgLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJuaW50ZW5kbyxob2xseXdvb2QtZHNwIiwibmludGVuZG8sZmxpcHBlci1kc3AiCisgICAtIHJlZyA6IHNob3VsZCBjb250YWluIHRoZSBEU1AgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKyAgIC0gaW50ZXJydXB0cyA6IHNob3VsZCBjb250YWluIHRoZSBEU1AgaW50ZXJydXB0CisKKzEuZCkgVGhlIFNlcmlhbCBJbnRlcmZhY2UgKFNJKSBub2RlCisKKyAgUmVwcmVzZW50cyB0aGUgaW50ZXJmYWNlIHRvIHRoZSBmb3VyIHNpbmdsZSBiaXQgc2VyaWFsIGludGVyZmFjZXMuCisgIFRoZSBTSSBpcyBhIHByb3ByaWV0YXJ5IHNlcmlhbCBpbnRlcmZhY2UgdXNlZCBub3JtYWxseSB0byBjb250cm9sIGdhbWVwYWRzLgorICBJdCdzIE5PVCBhIFJTMjMyLXR5cGUgaW50ZXJmYWNlLgorCisgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgIC0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAibmludGVuZG8saG9sbHl3b29kLXNpIiwibmludGVuZG8sZmxpcHBlci1zaSIKKyAgIC0gcmVnIDogc2hvdWxkIGNvbnRhaW4gdGhlIFNJIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCisgICAtIGludGVycnVwdHMgOiBzaG91bGQgY29udGFpbiB0aGUgU0kgaW50ZXJydXB0CisKKzEuZSkgVGhlIEF1ZGlvIEludGVyZmFjZSAoQUkpIG5vZGUKKworICBSZXByZXNlbnRzIHRoZSBpbnRlcmZhY2UgdG8gdGhlIGV4dGVybmFsIDE2LWJpdCBzdGVyZW8gZGlnaXRhbC10by1hbmFsb2cKKyAgY29udmVydGVyLgorCisgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgIC0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAibmludGVuZG8saG9sbHl3b29kLWFpIiwibmludGVuZG8sZmxpcHBlci1haSIKKyAgIC0gcmVnIDogc2hvdWxkIGNvbnRhaW4gdGhlIEFJIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCisgICAtIGludGVycnVwdHMgOiBzaG91bGQgY29udGFpbiB0aGUgQUkgaW50ZXJydXB0CisKKzEuZikgVGhlIEV4dGVybmFsIEludGVyZmFjZSAoRVhJKSBub2RlCisKKyAgUmVwcmVzZW50cyB0aGUgbXVsdGktY2hhbm5lbCBTUEktbGlrZSBpbnRlcmZhY2UuCisKKyAgUmVxdWlyZWQgcHJvcGVydGllczoKKworICAgLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJuaW50ZW5kbyxob2xseXdvb2QtZXhpIiwibmludGVuZG8sZmxpcHBlci1leGkiCisgICAtIHJlZyA6IHNob3VsZCBjb250YWluIHRoZSBFWEkgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKyAgIC0gaW50ZXJydXB0cyA6IHNob3VsZCBjb250YWluIHRoZSBFWEkgaW50ZXJydXB0CisKKzEuZykgVGhlIE9wZW4gSG9zdCBDb250cm9sbGVyIEludGVyZmFjZSAoT0hDSSkgbm9kZXMKKworICBSZXByZXNlbnQgdGhlIFVTQiAxLnggT3BlbiBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlcy4KKworICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgICAtIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgIm5pbnRlbmRvLGhvbGx5d29vZC11c2Itb2hjaSIsInVzYi1vaGNpIgorICAgLSByZWcgOiBzaG91bGQgY29udGFpbiB0aGUgT0hDSSByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorICAgLSBpbnRlcnJ1cHRzIDogc2hvdWxkIGNvbnRhaW4gdGhlIE9IQ0kgaW50ZXJydXB0CisKKzEuaCkgVGhlIEVuaGFuY2VkIEhvc3QgQ29udHJvbGxlciBJbnRlcmZhY2UgKEVIQ0kpIG5vZGUKKworICBSZXByZXNlbnRzIHRoZSBVU0IgMi4wIEVuaGFuY2VkIEhvc3QgQ29udHJvbGxlciBJbnRlcmZhY2UuCisKKyAgUmVxdWlyZWQgcHJvcGVydGllczoKKworICAgLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJuaW50ZW5kbyxob2xseXdvb2QtdXNiLWVoY2kiLCJ1c2ItZWhjaSIKKyAgIC0gcmVnIDogc2hvdWxkIGNvbnRhaW4gdGhlIEVIQ0kgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKyAgIC0gaW50ZXJydXB0cyA6IHNob3VsZCBjb250YWluIHRoZSBFSENJIGludGVycnVwdAorCisxLmkpIFRoZSBTZWN1cmUgRGlnaXRhbCBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlIChTREhDSSkgbm9kZXMKKworICBSZXByZXNlbnQgdGhlIFNlY3VyZSBEaWdpdGFsIEhvc3QgQ29udHJvbGxlciBJbnRlcmZhY2VzLgorCisgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgIC0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAibmludGVuZG8saG9sbHl3b29kLXNkaGNpIiwic2RoY2kiCisgICAtIHJlZyA6IHNob3VsZCBjb250YWluIHRoZSBTREhDSSByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorICAgLSBpbnRlcnJ1cHRzIDogc2hvdWxkIGNvbnRhaW4gdGhlIFNESENJIGludGVycnVwdAorCisxLmopIFRoZSBJbnRlci1Qcm9jZXNzb3IgQ29tbXVuaWNhdGlvbiAoSVBDKSBub2RlCisKKyAgUmVwcmVzZW50IHRoZSBJbnRlci1Qcm9jZXNzb3IgQ29tbXVuaWNhdGlvbiBpbnRlcmZhY2UuIFRoaXMgaW50ZXJmYWNlCisgIGVuYWJsZXMgY29tbXVuaWNhdGlvbnMgYmV0d2VlbiB0aGUgQnJvYWR3YXkgYW5kIHRoZSBTdGFybGV0IHByb2Nlc3NvcnMuCisKKyAgIC0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAibmludGVuZG8saG9sbHl3b29kLWlwYyIKKyAgIC0gcmVnIDogc2hvdWxkIGNvbnRhaW4gdGhlIElQQyByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorICAgLSBpbnRlcnJ1cHRzIDogc2hvdWxkIGNvbnRhaW4gdGhlIElQQyBpbnRlcnJ1cHQKKworMS5rKSBUaGUgIkhvbGx5d29vZCIgaW50ZXJydXB0IGNvbnRyb2xsZXIgbm9kZQorCisgIFJlcHJlc2VudHMgdGhlICJIb2xseXdvb2QiIGludGVycnVwdCBjb250cm9sbGVyIHdpdGhpbiB0aGUKKyAgIkhvbGx5d29vZCIgY2hpcC4KKworICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgIC0gI2ludGVycnVwdC1jZWxscyA6IDwxPgorICAtIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgIm5pbnRlbmRvLGhvbGx5d29vZC1waWMiCisgIC0gcmVnIDogc2hvdWxkIGNvbnRhaW4gdGhlIGNvbnRyb2xsZXIgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKyAgLSBpbnRlcnJ1cHQtY29udHJvbGxlcgorICAtIGludGVycnVwdHMgOiBzaG91bGQgY29udGFpbiB0aGUgY2FzY2FkZSBpbnRlcnJ1cHQgb2YgdGhlICJmbGlwcGVyIiBwaWMKKyAgLSBpbnRlcnJ1cHQtcGFyZW50OiBzaG91bGQgY29udGFpbiB0aGUgcGhhbmRsZSBvZiB0aGUgImZsaXBwZXIiIHBpYworCisxLmwpIFRoZSBHZW5lcmFsIFB1cnBvc2UgSS9PIChHUElPKSBjb250cm9sbGVyIG5vZGUKKworICBSZXByZXNlbnRzIHRoZSBkdWFsIGFjY2VzcyAzMiBHUElPIGNvbnRyb2xsZXIgaW50ZXJmYWNlLgorCisgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSAjZ3Bpby1jZWxscyA6IDwyPgorICAtIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgIm5pbnRlbmRvLGhvbGx5d29vZC1ncGlvIgorICAtIHJlZyA6IHNob3VsZCBjb250YWluIHRoZSBJUEMgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKyAgLSBncGlvLWNvbnRyb2xsZXIKKworMS5tKSBUaGUgY29udHJvbCBub2RlCisKKyAgUmVwcmVzZW50cyB0aGUgY29udHJvbCBpbnRlcmZhY2UgdXNlZCB0byBzZXR1cCBzZXZlcmFsIG1pc2NlbGxhbmVvdXMKKyAgc2V0dGluZ3Mgb2YgdGhlICJIb2xseXdvb2QiIGNoaXAgbGlrZSBib290IG1lbW9yeSBtYXBwaW5ncywgcmVzZXRzLAorICBkaXNrIGludGVyZmFjZSBtb2RlLCBldGMuCisKKyAgUmVxdWlyZWQgcHJvcGVydGllczoKKworICAgLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJuaW50ZW5kbyxob2xseXdvb2QtY29udHJvbCIKKyAgIC0gcmVnIDogc2hvdWxkIGNvbnRhaW4gdGhlIGNvbnRyb2wgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKworMS5uKSBUaGUgRGlzayBJbnRlcmZhY2UgKERJKSBub2RlCisKKyAgUmVwcmVzZW50cyB0aGUgaW50ZXJmYWNlIHVzZWQgdG8gY29tbXVuaWNhdGUgd2l0aCBtYXNzIHN0b3JhZ2UgZGV2aWNlcy4KKworICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgICAtIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgIm5pbnRlbmRvLGhvbGx5d29vZC1kaSIKKyAgIC0gcmVnIDogc2hvdWxkIGNvbnRhaW4gdGhlIERJIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCisgICAtIGludGVycnVwdHMgOiBzaG91bGQgY29udGFpbiB0aGUgREkgaW50ZXJydXB0CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wcHMvcHBzLWdwaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bwcy9wcHMtZ3Bpby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBiZjljMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wcHMvcHBzLWdwaW8udHh0CkBAIC0wLDAgKzEsMjAgQEAKK0RldmljZS1UcmVlIEJpbmRpbmdzIGZvciBhIFBQUyBTaWduYWwgb24gR1BJTworCitUaGVzZSBwcm9wZXJ0aWVzIGRlc2NyaWJlIGEgUFBTIChwdWxzZS1wZXItc2Vjb25kKSBzaWduYWwgY29ubmVjdGVkIHRvCithIEdQSU8gcGluLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgInBwcy1ncGlvIgorLSBncGlvczogb25lIFBQUyBHUElPIGluIHRoZSBmb3JtYXQgZGVzY3JpYmVkIGJ5IC4uL2dwaW8vZ3Bpby50eHQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gYXNzZXJ0LWZhbGxpbmctZWRnZTogd2hlbiBwcmVzZW50LCBhc3NlcnQgaXMgaW5kaWNhdGVkIGJ5IGEgZmFsbGluZyBlZGdlCisgICAgICAgICAgICAgICAgICAgICAgIChpbnN0ZWFkIG9mIGJ5IGEgcmlzaW5nIGVkZ2UpCisKK0V4YW1wbGU6CisJcHBzIHsKKwkJY29tcGF0aWJsZSA9ICJwcHMtZ3BpbyI7CisJCWdwaW9zID0gPCZncGlvMiA2IDA+OworCisJCWFzc2VydC1mYWxsaW5nLWVkZ2U7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vYXRtZWwtaGxjZGMtcHdtLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vYXRtZWwtaGxjZGMtcHdtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmRhMGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9hdG1lbC1obGNkYy1wd20udHh0CkBAIC0wLDAgKzEsMjkgQEAKK0RldmljZS1UcmVlIGJpbmRpbmdzIGZvciBBdG1lbCdzIEhMQ0RDIChIaWdoLWVuZCBMQ0QgQ29udHJvbGxlcikgUFdNIGRyaXZlcgorCitUaGUgQXRtZWwgSExDREMgUFdNIGlzIHN1YmRldmljZSBvZiB0aGUgSExDREMgTUZEIGRldmljZS4KK1NlZSAuLi9tZmQvYXRtZWwtaGxjZGMudHh0IGZvciBtb3JlIGRldGFpbHMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiB2YWx1ZSBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisgICAiYXRtZWwsaGxjZGMtcHdtIgorIC0gcGluY3RyLW5hbWVzOiB0aGUgcGluIGNvbnRyb2wgc3RhdGUgbmFtZXMuIFNob3VsZCBjb250YWluICJkZWZhdWx0Ii4KKyAtIHBpbmN0cmwtMDogc2hvdWxkIGNvbnRhaW4gdGhlIHBpbmN0cmwgc3RhdGVzIGRlc2NyaWJlZCBieSBwaW5jdHJsCisgICBkZWZhdWx0LgorIC0gI3B3bS1jZWxsczogc2hvdWxkIGJlIHNldCB0byAzLiBUaGlzIFBXTSBjaGlwIHVzZSB0aGUgZGVmYXVsdCAzIGNlbGxzCisgICBiaW5kaW5ncyBkZWZpbmVkIGluIHB3bS50eHQgaW4gdGhpcyBkaXJlY3RvcnkuCisKK0V4YW1wbGU6CisKKwlobGNkYzogaGxjZGNAZjAwMzAwMDAgeworCQljb21wYXRpYmxlID0gImF0bWVsLHNhbWE1ZDMtaGxjZGMiOworCQlyZWcgPSA8MHhmMDAzMDAwMCAweDIwMDA+OworCQljbG9ja3MgPSA8JmxjZGNfY2xrPiwgPCZsY2Rjaz4sIDwmY2xrMzJrPjsKKwkJY2xvY2stbmFtZXMgPSAicGVyaXBoX2NsayIsInN5c19jbGsiLCAic2xvd19jbGsiOworCisJCWhsY2RjX3B3bTogaGxjZGMtcHdtIHsKKwkJCWNvbXBhdGlibGUgPSAiYXRtZWwsaGxjZGMtcHdtIjsKKwkJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfbGNkX3B3bT47CisJCQkjcHdtLWNlbGxzID0gPDM+OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL2F0bWVsLXB3bS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL2F0bWVsLXB3bS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDIzMzFiOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vYXRtZWwtcHdtLnR4dApAQCAtMCwwICsxLDMzIEBACitBdG1lbCBQV00gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2Y6CisgICAgLSAiYXRtZWwsYXQ5MXNhbTlybC1wd20iCisgICAgLSAiYXRtZWwsc2FtYTVkMy1wd20iCisgIC0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgY29udHJvbGxlcidzIHJlZ2lzdGVycworICAtICNwd20tY2VsbHM6IFNob3VsZCBiZSAzLiBTZWUgcHdtLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgYQorICAgIGRlc2NyaXB0aW9uIG9mIHRoZSBjZWxscyBmb3JtYXQuCisKK0V4YW1wbGU6CisKKwlwd20wOiBwd21AZjgwMzQwMDAgeworCQljb21wYXRpYmxlID0gImF0bWVsLGF0OTFzYW05cmwtcHdtIjsKKwkJcmVnID0gPDB4ZjgwMzQwMDAgMHg0MDA+OworCQkjcHdtLWNlbGxzID0gPDM+OworCX07CisKKwlwd21sZWRzIHsKKwkJY29tcGF0aWJsZSA9ICJwd20tbGVkcyI7CisKKwkJZDEgeworCQkJbGFiZWwgPSAiZDEiOworCQkJcHdtcyA9IDwmcHdtMCAzIDUwMDAgMD4KKwkJCW1heC1icmlnaHRuZXNzID0gPDI1NT47CisJCX07CisKKwkJZDIgeworCQkJbGFiZWwgPSAiZDIiOworCQkJcHdtcyA9IDwmcHdtMCAxIDUwMDAgMT4KKwkJCW1heC1icmlnaHRuZXNzID0gPDI1NT47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vYXRtZWwtdGNiLXB3bS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL2F0bWVsLXRjYi1wd20udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwMzExNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL2F0bWVsLXRjYi1wd20udHh0CkBAIC0wLDAgKzEsMTYgQEAKK0F0bWVsIFRDQiBQV00gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImF0bWVsLHRjYi1wd20iCistICNwd20tY2VsbHM6IHNob3VsZCBiZSAzLiBTZWUgcHdtLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgYSBkZXNjcmlwdGlvbiBvZgorICB0aGUgY2VsbHMgZm9ybWF0LiBUaGUgb25seSB0aGlyZCBjZWxsIGZsYWcgc3VwcG9ydGVkIGJ5IHRoaXMgYmluZGluZyBpcworICBQV01fUE9MQVJJVFlfSU5WRVJURUQuCistIHRjLWJsb2NrOiBUaGUgVGltZXIgQ291bnRlciBibG9jayB0byB1c2UgYXMgYSBQV00gY2hpcC4KKworRXhhbXBsZToKKworcHdtIHsKKwljb21wYXRpYmxlID0gImF0bWVsLHRjYi1wd20iOworCSNwd20tY2VsbHMgPSA8Mz47CisJdGMtYmxvY2sgPSA8MT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9icmNtLGJjbTcwMzgtcHdtLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vYnJjbSxiY203MDM4LXB3bS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkyNTRhNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vYnJjbSxiY203MDM4LXB3bS50eHQKQEAgLTAsMCArMSwyMCBAQAorQnJvYWRjb20gQkNNNzAzOCBQV00gY29udHJvbGxlciAoQkNNN3h4eCBTZXQgVG9wIEJveCBQV00gY29udHJvbGxlcikKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBtdXN0IGJlICJicmNtLGJjbTcwMzgtcHdtIgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIGZvciB0aGlzIGNvbnRyb2xsZXIKKy0gI3B3bS1jZWxsczogc2hvdWxkIGJlIDIuIFNlZSBwd20udHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBhIGRlc2NyaXB0aW9uCisgIG9mIHRoZSBjZWxscyBmb3JtYXQKKy0gY2xvY2tzOiBhIHBoYW5kbGUgdG8gdGhlIHJlZmVyZW5jZSBjbG9jayBmb3IgdGhpcyBibG9jayB3aGljaCBpcyBmZWQgdGhyb3VnaAorICBpdHMgaW50ZXJuYWwgdmFyaWFibGUgY2xvY2sgZnJlcXVlbmN5IGdlbmVyYXRvcgorCisKK0V4YW1wbGU6CisKKwlwd206IHB3bUBmMDQwODAwMCB7CisJCWNvbXBhdGlibGUgPSAiYnJjbSxiY203MDM4LXB3bSI7CisJCXJlZyA9IDwweGYwNDA4MDAwIDB4Mjg+OworCQkjcHdtLWNlbGxzID0gPDI+OworCQljbG9ja3MgPSA8JnVwZ19maXhlZD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vYnJjbSxrb25hLXB3bS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL2JyY20sa29uYS1wd20udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlYWU5ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL2JyY20sa29uYS1wd20udHh0CkBAIC0wLDAgKzEsMjEgQEAKK0Jyb2FkY29tIEtvbmEgUFdNIGNvbnRyb2xsZXIgZGV2aWNlIHRyZWUgYmluZGluZ3MKKworVGhpcyBjb250cm9sbGVyIGhhcyA2IGNoYW5uZWxzLgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzIDoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGNvbnRhaW4gImJyY20sa29uYS1wd20iCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlcnMKKy0gY2xvY2tzOiBwaGFuZGxlICsgY2xvY2sgc3BlY2lmaWVyIHBhaXIgZm9yIHRoZSBleHRlcm5hbCBjbG9jaworLSAjcHdtLWNlbGxzOiBTaG91bGQgYmUgMy4gU2VlIHB3bS50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGEKKyAgZGVzY3JpcHRpb24gb2YgdGhlIGNlbGxzIGZvcm1hdC4KKworUmVmZXIgdG8gY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZ2VuZXJpYyBjbG9jayBjb25zdW1lciBwcm9wZXJ0aWVzLgorCitFeGFtcGxlOgorCitwd206IHB3bUAzZTAxYTAwMCB7CisJY29tcGF0aWJsZSA9ICJicmNtLGJjbTExMzUxLXB3bSIsICJicmNtLGtvbmEtcHdtIjsKKwlyZWcgPSA8MHgzZTAxYTAwMCAweGM0PjsKKwljbG9ja3MgPSA8JnB3bV9jbGs+OworCSNwd20tY2VsbHMgPSA8Mz47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9jaXJydXMsY2xwczcxMXgtcHdtLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vY2lycnVzLGNscHM3MTF4LXB3bS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE4M2RiNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vY2lycnVzLGNscHM3MTF4LXB3bS50eHQKQEAgLTAsMCArMSwxNiBAQAorKiBDaXJyaXMgTG9naWMgQ0xQUzcxMVggUFdNIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hhbGwgY29udGFpbiAiY2lycnVzLGNscHM3MTF4LXB3bSIuCistIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlcnMuCistIGNsb2NrczogcGhhbmRsZSArIGNsb2NrIHNwZWNpZmllciBwYWlyIG9mIHRoZSBQV00gcmVmZXJlbmNlIGNsb2NrLgorLSAjcHdtLWNlbGxzOiBTaG91bGQgYmUgMS4gVGhlIGNlbGwgc3BlY2lmaWVzIHRoZSBpbmRleCBvZiB0aGUgY2hhbm5lbC4KKworRXhhbXBsZToKKwlwd206IHB3bUA4MDAwMDQwMCB7CisJCWNvbXBhdGlibGUgPSAiY2lycnVzLGVwNzMxMi1wd20iLAorCQkJICAgICAiY2lycnVzLGNscHM3MTF4LXB3bSI7CisJCXJlZyA9IDwweDgwMDAwNDAwIDB4ND47CisJCWNsb2NrcyA9IDwmY2xrcyA4PjsKKwkJI3B3bS1jZWxscyA9IDwxPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9pbWctcHdtLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vaW1nLXB3bS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFkZTVmMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vaW1nLXB3bS50eHQKQEAgLTAsMCArMSwyNCBAQAorKkltYWdpbmF0aW9uIFRlY2hub2xvZ2llcyBQV00gREFDIGRyaXZlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6IFNob3VsZCBiZSAiaW1nLHBpc3RhY2hpby1wd20iCisgIC0gcmVnOiBTaG91bGQgY29udGFpbiBwaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiBwd20gcmVnaXN0ZXJzLgorICAtIGNsb2NrczogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIGNsb2NrLW5hbWVzLgorCVNlZSAuLi9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCisgIC0gY2xvY2stbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXMuCisgICAgLSBwd206IFBXTSBvcGVyYXRpbmcgY2xvY2suCisgICAgLSBzeXM6IFBXTSBzeXN0ZW0gaW50ZXJmYWNlIGNsb2NrLgorICAtICNwd20tY2VsbHM6IFNob3VsZCBiZSAyLiBTZWUgcHdtLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgdGhlCisJZGVzY3JpcHRpb24gb2YgdGhlIGNlbGxzIGZvcm1hdC4KKyAgLSBpbWcsY3ItcGVyaXBoOiBNdXN0IGNvbnRhaW4gYSBwaGFuZGxlIHRvIHRoZSBwZXJpcGhlcmFsIGNvbnRyb2wKKwlzeXNjb24gbm9kZSB3aGljaCBjb250YWlucyBQV00gY29udHJvbCByZWdpc3RlcnMuCisKK0V4YW1wbGU6CisJcHdtOiBwd21AMTgxMDEzMDAgeworCQljb21wYXRpYmxlID0gImltZyxwaXN0YWNoaW8tcHdtIjsKKwkJcmVnID0gPDB4MTgxMDEzMDAgMHgxMDA+OworCQljbG9ja3MgPSA8JnB3bV9jbGs+LCA8JnN5c3RlbV9jbGs+OworCQljbG9jay1uYW1lcyA9ICJwd20iLCAic3lzIjsKKwkJI3B3bS1jZWxscyA9IDwyPjsKKwkJaW1nLGNyLXBlcmlwaCA9IDwmY3JfcGVyaXBoPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9pbXgtcHdtLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vaW14LXB3bS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTAwYzJlOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vaW14LXB3bS50eHQKQEAgLTAsMCArMSwyNyBAQAorRnJlZXNjYWxlIGkuTVggUFdNIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiZnNsLDxzb2M+LXB3bSIgYW5kIG9uZSBvZiB0aGUgZm9sbG93aW5nCisgICBjb21wYXRpYmxlIHN0cmluZ3M6CisgIC0gImZzbCxpbXgxLXB3bSIgZm9yIFBXTSBjb21wYXRpYmxlIHdpdGggdGhlIG9uZSBpbnRlZ3JhdGVkIG9uIGkuTVgxCisgIC0gImZzbCxpbXgyNy1wd20iIGZvciBQV00gY29tcGF0aWJsZSB3aXRoIHRoZSBvbmUgaW50ZWdyYXRlZCBvbiBpLk1YMjcKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgY29udHJvbGxlcidzIHJlZ2lzdGVycworLSAjcHdtLWNlbGxzOiBzaG91bGQgYmUgMi4gU2VlIHB3bS50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGEgZGVzY3JpcHRpb24gb2YKKyAgdGhlIGNlbGxzIGZvcm1hdC4KKy0gY2xvY2tzIDogQ2xvY2sgc3BlY2lmaWVycyBmb3IgYm90aCBpcGcgYW5kIHBlciBjbG9ja3MuCistIGNsb2NrLW5hbWVzIDogQ2xvY2sgbmFtZXMgc2hvdWxkIGluY2x1ZGUgYm90aCAiaXBnIiBhbmQgInBlciIKK1NlZSB0aGUgY2xvY2sgY29uc3VtZXIgYmluZGluZywKKwlEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CistIGludGVycnVwdHM6IFRoZSBpbnRlcnJ1cHQgZm9yIHRoZSBwd20gY29udHJvbGxlcgorCitFeGFtcGxlOgorCitwd20xOiBwd21ANTNmYjQwMDAgeworCSNwd20tY2VsbHMgPSA8Mj47CisJY29tcGF0aWJsZSA9ICJmc2wsaW14NTMtcHdtIiwgImZzbCxpbXgyNy1wd20iOworCXJlZyA9IDwweDUzZmI0MDAwIDB4NDAwMD47CisJY2xvY2tzID0gPCZjbGtzIElNWDVfQ0xLX1BXTTFfSVBHX0dBVEU+LAorCQkgPCZjbGtzIElNWDVfQ0xLX1BXTTFfSEZfR0FURT47CisJY2xvY2stbmFtZXMgPSAiaXBnIiwgInBlciI7CisJaW50ZXJydXB0cyA9IDw2MT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9scGMxODUwLXNjdC1wd20udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9scGMxODUwLXNjdC1wd20udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZTQ5ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL2xwYzE4NTAtc2N0LXB3bS50eHQKQEAgLTAsMCArMSwyMCBAQAorKiBOWFAgTFBDMTh4eCBTdGF0ZSBDb25maWd1cmFibGUgVGltZXIgLSBQdWxzZSBXaWR0aCBNb2R1bGF0b3IgZHJpdmVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJueHAsbHBjMTg1MC1zY3QtcHdtIgorICAtIHJlZzogU2hvdWxkIGNvbnRhaW4gcGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgcHdtIHJlZ2lzdGVycy4KKyAgLSBjbG9ja3M6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKyAgICBTZWUgLi4vY2xvY2svY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorICAtIGNsb2NrLW5hbWVzOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzLgorICAgIC0gcHdtOiBQV00gb3BlcmF0aW5nIGNsb2NrLgorICAtICNwd20tY2VsbHM6IFNob3VsZCBiZSAzLiBTZWUgcHdtLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgdGhlIGRlc2NyaXB0aW9uCisgICAgb2YgdGhlIGNlbGxzIGZvcm1hdC4KKworRXhhbXBsZToKKyAgcHdtOiBwd21ANDAwMDAwMDAgeworICAgIGNvbXBhdGlibGUgPSAibnhwLGxwYzE4NTAtc2N0LXB3bSI7CisgICAgcmVnID0gPDB4NDAwMDAwMDAgMHgxMDAwPjsKKyAgICBjbG9ja3MgPTwmY2N1MSBDTEtfQ1BVX1NDVD47CisgICAgY2xvY2stbmFtZXMgPSAicHdtIjsKKyAgICAjcHdtLWNlbGxzID0gPDM+OworICB9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9scGMzMnh4LXB3bS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL2xwYzMyeHgtcHdtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmUxZGIzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9scGMzMnh4LXB3bS50eHQKQEAgLTAsMCArMSwxMiBAQAorTFBDMzJYWCBQV00gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgIm54cCxscGMzMjIwLXB3bSIKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgY29udHJvbGxlcidzIHJlZ2lzdGVycworCitFeGFtcGxlczoKKworcHdtQDB4NDAwNUMwMDAgeworCWNvbXBhdGlibGUgPSAibnhwLGxwYzMyMjAtcHdtIjsKKwlyZWcgPSA8MHg0MDA1QzAwMCAweDg+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vbXhzLXB3bS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL214cy1wd20udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2Y2RkZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL214cy1wd20udHh0CkBAIC0wLDAgKzEsMTcgQEAKK0ZyZWVzY2FsZSBNWFMgUFdNIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJmc2wsaW14MjMtcHdtIgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBjb250cm9sbGVyJ3MgcmVnaXN0ZXJzCistICNwd20tY2VsbHM6IHNob3VsZCBiZSAyLiBTZWUgcHdtLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgYSBkZXNjcmlwdGlvbiBvZgorICB0aGUgY2VsbHMgZm9ybWF0LgorLSBmc2wscHdtLW51bWJlcjogdGhlIG51bWJlciBvZiBQV00gZGV2aWNlcworCitFeGFtcGxlOgorCitwd206IHB3bUA4MDA2NDAwMCB7CisJY29tcGF0aWJsZSA9ICJmc2wsaW14MjgtcHdtIiwgImZzbCxpbXgyMy1wd20iOworCXJlZyA9IDwweDgwMDY0MDAwIDB4MjAwMD47CisJI3B3bS1jZWxscyA9IDwyPjsKKwlmc2wscHdtLW51bWJlciA9IDw4PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL252aWRpYSx0ZWdyYTIwLXB3bS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL252aWRpYSx0ZWdyYTIwLXB3bS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzUyZjAzYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vbnZpZGlhLHRlZ3JhMjAtcHdtLnR4dApAQCAtMCwwICsxLDI3IEBACitUZWdyYSBTb0MgUFdGTSBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IEZvciBUZWdyYTIwLCBtdXN0IGNvbnRhaW4gIm52aWRpYSx0ZWdyYTIwLXB3bSIuICBGb3IgVGVncmEzMCwKKyAgbXVzdCBjb250YWluICJudmlkaWEsdGVncmEzMC1wd20iLiAgT3RoZXJ3aXNlLCBtdXN0IGNvbnRhaW4KKyAgIm52aWRpYSw8Y2hpcD4tcHdtIiwgcGx1cyBvbmUgb2YgdGhlIGFib3ZlLCB3aGVyZSA8Y2hpcD4gaXMgdGVncmExMTQsCisgIHRlZ3JhMTI0LCB0ZWdyYTEzMiwgb3IgdGVncmEyMTAuCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlcnMKKy0gI3B3bS1jZWxsczogc2hvdWxkIGJlIDIuIFNlZSBwd20udHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBhIGRlc2NyaXB0aW9uIG9mCisgIHRoZSBjZWxscyBmb3JtYXQuCistIGNsb2NrczogTXVzdCBjb250YWluIG9uZSBlbnRyeSwgZm9yIHRoZSBtb2R1bGUgY2xvY2suCisgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorLSByZXNldHM6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiByZXNldC1uYW1lcy4KKyAgU2VlIC4uL3Jlc2V0L3Jlc2V0LnR4dCBmb3IgZGV0YWlscy4KKy0gcmVzZXQtbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIC0gcHdtCisKK0V4YW1wbGU6CisKKwlwd206IHB3bUA3MDAwYTAwMCB7CisJCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMjAtcHdtIjsKKwkJcmVnID0gPDB4NzAwMGEwMDAgMHgxMDA+OworCQkjcHdtLWNlbGxzID0gPDI+OworCQljbG9ja3MgPSA8JnRlZ3JhX2NhciAxNz47CisJCXJlc2V0cyA9IDwmdGVncmFfY2FyIDE3PjsKKwkJcmVzZXQtbmFtZXMgPSAicHdtIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9ueHAscGNhOTY4NS1wd20udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9ueHAscGNhOTY4NS1wd20udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4NGVjOWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL254cCxwY2E5Njg1LXB3bS50eHQKQEAgLTAsMCArMSwyNyBAQAorTlhQIFBDQTk2ODUgMTYtY2hhbm5lbCAxMi1iaXQgUFdNIExFRCBjb250cm9sbGVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiAibnhwLHBjYTk2ODUtcHdtIgorICAtICNwd20tY2VsbHM6IFNob3VsZCBiZSAyLiBTZWUgcHdtLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgYSBkZXNjcmlwdGlvbiBvZgorICAgIHRoZSBjZWxscyBmb3JtYXQuCisgICAgVGhlIGluZGV4IDE2IGlzIHRoZSBBTExDQUxMIGNoYW5uZWwsIHRoYXQgc2V0cyBhbGwgUFdNIGNoYW5uZWxzIGF0IHRoZSBzYW1lCisgICAgdGltZS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAgLSBpbnZlcnQgKGJvb2wpOiBib29sZWFuIHRvIGVuYWJsZSBpbnZlcnRlZCBsb2dpYworICAtIG9wZW4tZHJhaW4gKGJvb2wpOiBib29sZWFuIHRvIGNvbmZpZ3VyZSBvdXRwdXRzIHdpdGggb3Blbi1kcmFpbiBzdHJ1Y3R1cmU7CisJCSAgICAgICBpZiBvbWl0dGVkIHVzZSB0b3RlbS1wb2xlIHN0cnVjdHVyZQorCitFeGFtcGxlOgorCitGb3IgTEVEcyB0aGF0IGFyZSBkaXJlY3RseSBjb25uZWN0ZWQgdG8gdGhlIFBDQSwgdGhlIGZvbGxvd2luZyBzZXR0aW5nIGlzCithcHBsaWNhYmxlOgorCitwY2E6IHBjYUA0MSB7CisJY29tcGF0aWJsZSA9ICJueHAscGNhOTY4NS1wd20iOworCSNwd20tY2VsbHMgPSA8Mj47CisJcmVnID0gPDB4NDE+OworCWludmVydDsKKwlvcGVuLWRyYWluOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vcHdtLWJjbTI4MzUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9wd20tYmNtMjgzNS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI2ZmIzMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vcHdtLWJjbTI4MzUudHh0CkBAIC0wLDAgKzEsMzAgQEAKK0JDTTI4MzUgUFdNIGNvbnRyb2xsZXIgKFJhc3BiZXJyeSBQaSBjb250cm9sbGVyKQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImJyY20sYmNtMjgzNS1wd20iCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlcnMKKy0gY2xvY2s6IFRoaXMgY2xvY2sgZGVmaW5lcyB0aGUgYmFzZSBjbG9jayBmcmVxdWVuY3kgb2YgdGhlIFBXTSBoYXJkd2FyZQorICBzeXN0ZW0sIHRoZSBwZXJpb2QgYW5kIHRoZSBkdXR5X2N5Y2xlIG9mIHRoZSBQV00gc2lnbmFsIGlzIGEgbXVsdGlwbGUgb2YKKyAgdGhlIGJhc2UgcGVyaW9kLgorLSAjcHdtLWNlbGxzOiBTaG91bGQgYmUgMi4gU2VlIHB3bS50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGEgZGVzY3JpcHRpb24gb2YKKyAgdGhlIGNlbGxzIGZvcm1hdC4KKworRXhhbXBsZXM6CisKK3B3bUAyMDIwYzAwMCB7CisJY29tcGF0aWJsZSA9ICJicmNtLGJjbTI4MzUtcHdtIjsKKwlyZWcgPSA8MHgyMDIwYzAwMCAweDI4PjsKKwljbG9ja3MgPSA8JmNsa19wd20+OworCSNwd20tY2VsbHMgPSA8Mj47Cit9OworCitjbG9ja3MgeworCS4uLi4KKwkJY2xrX3B3bTogcHdtIHsKKwkJCWNvbXBhdGlibGUgPSAiZml4ZWQtY2xvY2siOworCQkJcmVnID0gPDM+OworCQkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQkJY2xvY2stZnJlcXVlbmN5ID0gPDkyMDAwMDA+OworCQl9OworCS4uLi4KK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3B3bS1iZXJsaW4udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9wd20tYmVybGluLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmNiZTE2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9wd20tYmVybGluLnR4dApAQCAtMCwwICsxLDE3IEBACitCZXJsaW4gUFdNIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJtYXJ2ZWxsLGJlcmxpbi1wd20iCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlcnMKKy0gY2xvY2tzOiBwaGFuZGxlIHRvIHRoZSBpbnB1dCBjbG9jaworLSAjcHdtLWNlbGxzOiBzaG91bGQgYmUgMy4gU2VlIHB3bS50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGEgZGVzY3JpcHRpb24gb2YKKyAgdGhlIGNlbGxzIGZvcm1hdC4KKworRXhhbXBsZToKKworcHdtOiBwd21AZjdmMjAwMDAgeworCWNvbXBhdGlibGUgPSAibWFydmVsbCxiZXJsaW4tcHdtIjsKKwlyZWcgPSA8MHhmN2YyMDAwMCAweDQwPjsKKwljbG9ja3MgPSA8JmNoaXBfY2xrIENMS0lEX0NGRz47CisJI3B3bS1jZWxscyA9IDwzPjsKK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vcHdtLWZzbC1mdG0udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9wd20tZnNsLWZ0bS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg5OWQ2YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vcHdtLWZzbC1mdG0udHh0CkBAIC0wLDAgKzEsNTIgQEAKK0ZyZWVzY2FsZSBGbGV4VGltZXIgTW9kdWxlIChGVE0pIFBXTSBjb250cm9sbGVyCisKK1RoZSBzYW1lIEZUTSBQV00gZGV2aWNlIGNhbiBoYXZlIGEgZGlmZmVyZW50IGVuZGlhbm5lc3Mgb24gZGlmZmVyZW50IFNvQ3MuIFRoZQorZGV2aWNlIHRyZWUgcHJvdmlkZXMgYSBwcm9wZXJ0eSB0byBkZXNjcmliaW5nIHRoaXMgc28gdGhhdCBhbiBvcGVyYXRpbmcgc3lzdGVtCitkZXZpY2UgZHJpdmVyIGNhbiBoYW5kbGUgYWxsIHZhcmlhbnRzIG9mIHRoZSBkZXZpY2UuIFJlZmVyIHRvIHRoZSB0YWJsZSBiZWxvdworZm9yIHRoZSBlbmRpYW5uZXNzIG9mIHRoZSBGVE0gUFdNIGJsb2NrIGFzIGludGVncmF0ZWQgaW50byB0aGUgZXhpc3RpbmcgU29DczoKKworCVNvQyAgICAgfCBGVE0tUFdNIGVuZGlhbm5lc3MKKwktLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisJVnlicmlkICB8IExFCisJTFMxICAgICB8IEJFCisJTFMyICAgICB8IExFCisKK1BsZWFzZSBzZWUgLi4vcmVnbWFwL3JlZ21hcC50eHQgZm9yIG1vcmUgZGV0YWlsIGFib3V0IGhvdyB0byBzcGVjaWZ5IGVuZGlhbgorbW9kZXMgaW4gZGV2aWNlIHRyZWUuCisKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJmc2wsdmY2MTAtZnRtLXB3bSIuCistIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlcnMKKy0gI3B3bS1jZWxsczogU2hvdWxkIGJlIDMuIFNlZSBwd20udHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBhIGRlc2NyaXB0aW9uIG9mCisgIHRoZSBjZWxscyBmb3JtYXQuCistIGNsb2NrLW5hbWVzOiBTaG91bGQgaW5jbHVkZSB0aGUgZm9sbG93aW5nIG1vZHVsZSBjbG9jayBzb3VyY2UgZW50cmllczoKKyAgICAiZnRtX3N5cyIgKG1vZHVsZSBjbG9jaywgYWxzbyBjYW4gYmUgdXNlZCBhcyBjb3VudGVyIGNsb2NrKSwKKyAgICAiZnRtX2V4dCIgKGV4dGVybmFsIGNvdW50ZXIgY2xvY2spLAorICAgICJmdG1fZml4IiAoZml4ZWQgY291bnRlciBjbG9jayksCisgICAgImZ0bV9jbnRfY2xrX2VuIiAoZXh0ZXJuYWwgYW5kIGZpeGVkIGNvdW50ZXIgY2xvY2sgZW5hYmxlL2Rpc2FibGUpLgorLSBjbG9ja3M6IE11c3QgY29udGFpbiBhIHBoYW5kbGUgYW5kIGNsb2NrIHNwZWNpZmllciBmb3IgZWFjaCBlbnRyeSBpbgorICBjbG9jay1uYW1lcywgcGxlYXNlIHNlZSBjbG9jay9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMgb2YgdGhlIHByb3BlcnR5CisgIHZhbHVlcy4KKy0gcGluY3RybC1uYW1lczogTXVzdCBjb250YWluIGEgImRlZmF1bHQiIGVudHJ5LgorLSBwaW5jdHJsLU5OTjogT25lIHByb3BlcnR5IG11c3QgZXhpc3QgZm9yIGVhY2ggZW50cnkgaW4gcGluY3RybC1uYW1lcy4KKyAgU2VlIHBpbmN0cmwvcGluY3RybC1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMgb2YgdGhlIHByb3BlcnR5IHZhbHVlcy4KKy0gYmlnLWVuZGlhbjogQm9vbGVhbiBwcm9wZXJ0eSwgcmVxdWlyZWQgaWYgdGhlIEZUTSBQV00gcmVnaXN0ZXJzIHVzZSBhIGJpZy0KKyAgZW5kaWFuIHJhdGhlciB0aGFuIGxpdHRsZS1lbmRpYW4gbGF5b3V0LgorCitFeGFtcGxlOgorCitwd20wOiBwd21ANDAwMzgwMDAgeworCQljb21wYXRpYmxlID0gImZzbCx2ZjYxMC1mdG0tcHdtIjsKKwkJcmVnID0gPDB4NDAwMzgwMDAgMHgxMDAwPjsKKwkJI3B3bS1jZWxscyA9IDwzPjsKKwkJY2xvY2stbmFtZXMgPSAiZnRtX3N5cyIsICJmdG1fZXh0IiwKKwkJCQkiZnRtX2ZpeCIsICJmdG1fY250X2Nsa19lbiI7CisJCWNsb2NrcyA9IDwmY2xrcyBWRjYxMF9DTEtfRlRNMD4sCisJCQk8JmNsa3MgVkY2MTBfQ0xLX0ZUTTBfRVhUX1NFTD4sCisJCQk8JmNsa3MgVkY2MTBfQ0xLX0ZUTTBfRklYX1NFTD4sCisJCQk8JmNsa3MgVkY2MTBfQ0xLX0ZUTTBfRVhUX0ZJWF9FTj47CisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmcGluY3RybF9wd20wXzE+OworCQliaWctZW5kaWFuOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vcHdtLWxwMzk0My50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3B3bS1scDM5NDMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiZDlkM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3B3bS1scDM5NDMudHh0CkBAIC0wLDAgKzEsNTggQEAKK1RJL05hdGlvbmFsIFNlbWljb25kdWN0b3IgTFAzOTQzIFBXTSBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogInRpLGxwMzk0My1wd20iCisgIC0gI3B3bS1jZWxsczogU2hvdWxkIGJlIDIuIFNlZSBwd20udHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBhCisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gb2YgdGhlIGNlbGxzIGZvcm1hdC4KKyAgICAgICAgICAgICAgICBOb3RlIHRoYXQgdGhpcyBoYXJkd2FyZSBsaW1pdHMgdGhlIHBlcmlvZCBsZW5ndGggdG8gdGhlCisgICAgICAgICAgICAgICAgcmFuZ2UgNjI1MH4xNjAwMDAwLgorICAtIHRpLHB3bTAgb3IgdGkscHdtMTogT3V0cHV0IHBpbiBudW1iZXIocykgZm9yIFBXTSBjaGFubmVsIDAgb3IgMS4KKyAgICAwID0gb3V0cHV0IDAKKyAgICAxID0gb3V0cHV0IDEKKyAgICAuCisgICAgLgorICAgIDE1ID0gb3V0cHV0IDE1CisKK0V4YW1wbGU6CitQV00gMCBpcyBmb3IgUkdCIExFRCBicmlnaHRuZXNzIGNvbnRyb2wKK1BXTSAxIGlzIGZvciBicmlnaHRuZXNzIGNvbnRyb2wgb2YgTFA4NTU3IGJhY2tsaWdodCBkZXZpY2UKKworJmkyYzMgeworCWxwMzk0M0A2MCB7CisJCWNvbXBhdGlibGUgPSAidGksbHAzOTQzIjsKKwkJcmVnID0gPDB4NjA+OworCisJCS8qCisJCSAqIFBXTSAwIDogb3V0cHV0IDgsIDkgYW5kIDEwCisJCSAqIFBXTSAxIDogb3V0cHV0IDE1CisJCSAqLworCQlwd20zOTQzOiBwd20geworCQkJY29tcGF0aWJsZSA9ICJ0aSxscDM5NDMtcHdtIjsKKwkJCSNwd20tY2VsbHMgPSA8Mj47CisJCQl0aSxwd20wID0gPDggOSAxMD47CisJCQl0aSxwd20xID0gPDE1PjsKKwkJfTsKKwl9OworCit9OworCisvKiBMRURzIGNvbnRyb2wgd2l0aCBQV00gMCBvZiBMUDM5NDMgKi8KK3B3bWxlZHMgeworCWNvbXBhdGlibGUgPSAicHdtLWxlZHMiOworCXJnYiB7CisJCWxhYmVsID0gImluZGk6OnJnYiI7CisJCXB3bXMgPSA8JnB3bTM5NDMgMCAxMDAwMD47CisJCW1heC1icmlnaHRuZXNzID0gPDI1NT47CisJfTsKK307CisKKyZpMmM0IHsKKwkvKiBCYWNrbGlnaHQgY29udHJvbCB3aXRoIFBXTSAxIG9mIExQMzk0MyAqLworCWJhY2tsaWdodEAyYyB7CisJCWNvbXBhdGlibGUgPSAidGksbHA4NTU3IjsKKwkJcmVnID0gPDB4MmM+OworCisJCXB3bXMgPSA8JnB3bTM5NDMgMSAxMDAwMD47CisJCXB3bS1uYW1lcyA9ICJscDg1NTciOworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9wd20tbXRrLWRpc3AudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9wd20tbXRrLWRpc3AudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4ZjU5YmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3B3bS1tdGstZGlzcC50eHQKQEAgLTAsMCArMSw0MiBAQAorTWVkaWFUZWsgZGlzcGxheSBQV00gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJtZWRpYXRlayw8bmFtZT4tZGlzcC1wd20iOgorICAgLSAibWVkaWF0ZWssbXQ4MTczLWRpc3AtcHdtIjogZm91bmQgb24gbXQ4MTczIFNvQy4KKyAgIC0gIm1lZGlhdGVrLG10NjU5NS1kaXNwLXB3bSI6IGZvdW5kIG9uIG10NjU5NSBTb0MuCisgLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBjb250cm9sbGVyJ3MgcmVnaXN0ZXJzLgorIC0gI3B3bS1jZWxsczogbXVzdCBiZSAyLiBTZWUgcHdtLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgYSBkZXNjcmlwdGlvbiBvZgorICAgdGhlIGNlbGwgZm9ybWF0LgorIC0gY2xvY2tzOiBwaGFuZGxlIGFuZCBjbG9jayBzcGVjaWZpZXIgb2YgdGhlIFBXTSByZWZlcmVuY2UgY2xvY2suCisgLSBjbG9jay1uYW1lczogbXVzdCBjb250YWluIHRoZSBmb2xsb3dpbmc6CisgICAtICJtYWluIjogY2xvY2sgdXNlZCB0byBnZW5lcmF0ZSBQV00gc2lnbmFscy4KKyAgIC0gIm1tIjogc3luYyBzaWduYWxzIGZyb20gdGhlIG1vZHVsZXMgb2YgbW1zeXMuCisgLSBwaW5jdHJsLW5hbWVzOiBNdXN0IGNvbnRhaW4gYSAiZGVmYXVsdCIgZW50cnkuCisgLSBwaW5jdHJsLTA6IE9uZSBwcm9wZXJ0eSBtdXN0IGV4aXN0IGZvciBlYWNoIGVudHJ5IGluIHBpbmN0cmwtbmFtZXMuCisgICBTZWUgcGluY3RybC9waW5jdHJsLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscyBvZiB0aGUgcHJvcGVydHkgdmFsdWVzLgorCitFeGFtcGxlOgorCXB3bTA6IHB3bUAxNDAxZTAwMCB7CisJCWNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTczLWRpc3AtcHdtIiwKKwkJCSAgICAgIm1lZGlhdGVrLG10NjU5NS1kaXNwLXB3bSI7CisJCXJlZyA9IDwwIDB4MTQwMWUwMDAgMCAweDEwMDA+OworCQkjcHdtLWNlbGxzID0gPDI+OworCQljbG9ja3MgPSA8Jm1tc3lzIENMS19NTV9ESVNQX1BXTTAyNk0+LAorCQkJIDwmbW1zeXMgQ0xLX01NX0RJU1BfUFdNME1NPjsKKwkJY2xvY2stbmFtZXMgPSAibWFpbiIsICJtbSI7CisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmZGlzcF9wd20wX3BpbnM+OworCX07CisKKwliYWNrbGlnaHRfbGNkOiBiYWNrbGlnaHRfbGNkIHsKKwkJY29tcGF0aWJsZSA9ICJwd20tYmFja2xpZ2h0IjsKKwkJcHdtcyA9IDwmcHdtMCAwIDEwMDAwMDA+OworCQlicmlnaHRuZXNzLWxldmVscyA9IDwKKwkJCSAgMCAgMTYgIDMyICA0OCAgNjQgIDgwICA5NiAxMTIKKwkJCTEyOCAxNDQgMTYwIDE3NiAxOTIgMjA4IDIyNCAyNDAKKwkJCTI1NQorCQk+OworCQlkZWZhdWx0LWJyaWdodG5lc3MtbGV2ZWwgPSA8OT47CisJCXBvd2VyLXN1cHBseSA9IDwmbXQ2Mzk3X3ZpbzE4X3JlZz47CisJCWVuYWJsZS1ncGlvcyA9IDwmcGlvIDk1IEdQSU9fQUNUSVZFX0hJR0g+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3B3bS1yb2NrY2hpcC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3B3bS1yb2NrY2hpcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhiZTNkMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vcHdtLXJvY2tjaGlwLnR4dApAQCAtMCwwICsxLDIwIEBACitSb2NrY2hpcCBQV00gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJyb2NrY2hpcCw8bmFtZT4tcHdtIgorICAgInJvY2tjaGlwLHJrMjkyOC1wd20iOiBmb3VuZCBvbiBSSzI5WFgsUkszMDY2IGFuZCBSSzMxODggU29DcworICAgInJvY2tjaGlwLHJrMzI4OC1wd20iOiBmb3VuZCBvbiBSSzMyODggU29DCisgICAicm9ja2NoaXAsdm9wLXB3bSI6IGZvdW5kIGludGVncmF0ZWQgaW4gVk9QIG9uIFJLMzI4OCBTb0MKKyAtIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlcnMKKyAtIGNsb2NrczogcGhhbmRsZSBhbmQgY2xvY2sgc3BlY2lmaWVyIG9mIHRoZSBQV00gcmVmZXJlbmNlIGNsb2NrCisgLSAjcHdtLWNlbGxzOiBtdXN0IGJlIDIgKHJrMjkyOCkgb3IgMyAocmszMjg4KS4gU2VlIHB3bS50eHQgaW4gdGhpcyBkaXJlY3RvcnkKKyAgIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBjZWxsIGZvcm1hdC4KKworRXhhbXBsZToKKworCXB3bTA6IHB3bUAyMDAzMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicm9ja2NoaXAscmsyOTI4LXB3bSI7CisJCXJlZyA9IDwweDIwMDMwMDAwIDB4MTA+OworCQljbG9ja3MgPSA8JmNydSBQQ0xLX1BXTTAxPjsKKwkJI3B3bS1jZWxscyA9IDwyPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9wd20tc2Ftc3VuZy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3B3bS1zYW1zdW5nLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTM4ZGU5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9wd20tc2Ftc3VuZy50eHQKQEAgLTAsMCArMSw1MSBAQAorKiBTYW1zdW5nIFBXTSB0aW1lcnMKKworU2Ftc3VuZyBTb0NzIGNvbnRhaW4gUFdNIHRpbWVyIGJsb2NrcyB3aGljaCBjYW4gYmUgdXNlZCBmb3Igc3lzdGVtIGNsb2NrIHNvdXJjZQorYW5kIGNsb2NrIGV2ZW50IHRpbWVycywgYXMgd2VsbCBhcyB0byBkcml2ZSBTb0Mgb3V0cHV0cyB3aXRoIFBXTSBzaWduYWwuIEVhY2gKK1BXTSB0aW1lciBibG9jayBwcm92aWRlcyA1IFBXTSBjaGFubmVscyAobm90IGFsbCBvZiB0aGVtIGNhbiBkcml2ZSBwaHlzaWNhbAorb3V0cHV0cyAtIHNlZSBTb0MgYW5kIGJvYXJkIG1hbnVhbCkuCisKK0JlIGF3YXJlIHRoYXQgdGhlIGNsb2Nrc291cmNlIGRyaXZlciBzdXBwb3J0cyBvbmx5IHVuaXByb2Nlc3NvciBzeXN0ZW1zLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlIG9uZSBvZiBmb2xsb3dpbmc6CisgICAgc2Ftc3VuZyxzM2MyNDEwLXB3bSAtIGZvciAxNi1iaXQgdGltZXJzIHByZXNlbnQgb24gUzNDMjR4eCBTb0NzCisgICAgc2Ftc3VuZyxzM2M2NDAwLXB3bSAtIGZvciAzMi1iaXQgdGltZXJzIHByZXNlbnQgb24gUzNDNjR4eCBTb0NzCisgICAgc2Ftc3VuZyxzNXA2NDQwLXB3bSAtIGZvciAzMi1iaXQgdGltZXJzIHByZXNlbnQgb24gUzVQNjR4MCBTb0NzCisgICAgc2Ftc3VuZyxzNXBjMTAwLXB3bSAtIGZvciAzMi1iaXQgdGltZXJzIHByZXNlbnQgb24gUzVQQzEwMCwgUzVQVjIxMCwKKwkJCSAgRXh5bm9zNDIxMCByZXYwIFNvQ3MKKyAgICBzYW1zdW5nLGV4eW5vczQyMTAtcHdtIC0gZm9yIDMyLWJpdCB0aW1lcnMgcHJlc2VudCBvbiBFeHlub3M0MjEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICBFeHlub3M0eDEyLCBFeHlub3M1MjUwIGFuZCBFeHlub3M1NDIwIFNvQ3MKKy0gcmVnOiBiYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgcmVnaXN0ZXIgYXJlYQorLSBpbnRlcnJ1cHRzOiBsaXN0IG9mIHRpbWVyIGludGVycnVwdHMgKG9uZSBpbnRlcnJ1cHQgcGVyIHRpbWVyLCBzdGFydGluZyBhdAorICB0aW1lciAwKQorLSBjbG9jay1uYW1lczogc2hvdWxkIGNvbnRhaW4gYWxsIGZvbGxvd2luZyByZXF1aXJlZCBjbG9jayBuYW1lczoKKyAgICAtICJ0aW1lcnMiIC0gUFdNIGJhc2UgY2xvY2sgdXNlZCB0byBnZW5lcmF0ZSBQV00gc2lnbmFscywKKyAgYW5kIGFueSBzdWJzZXQgb2YgZm9sbG93aW5nIG9wdGlvbmFsIGNsb2NrIG5hbWVzOgorICAgIC0gInB3bS10Y2xrMCIgLSBmaXJzdCBleHRlcm5hbCBQV00gY2xvY2sgc291cmNlLAorICAgIC0gInB3bS10Y2xrMSIgLSBzZWNvbmQgZXh0ZXJuYWwgUFdNIGNsb2NrIHNvdXJjZS4KKyAgTm90ZSB0aGF0IG5vdCBhbGwgSVAgdmFyaWFudHMgYWxsb3cgdXNpbmcgYWxsIGV4dGVybmFsIGNsb2NrIHNvdXJjZXMuCisgIFJlZmVyIHRvIFNvQyBkb2N1bWVudGF0aW9uIHRvIGxlYXJuIHdoaWNoIGNsb2NrIHNvdXJjZSBjb25maWd1cmF0aW9ucworICBhcmUgYXZhaWxhYmxlLgorLSBjbG9ja3M6IHNob3VsZCBjb250YWluIGNsb2NrIHNwZWNpZmllcnMgb2YgYWxsIGNsb2Nrcywgd2hpY2ggaW5wdXQgbmFtZXMKKyAgaGF2ZSBiZWVuIHNwZWNpZmllZCBpbiBjbG9jay1uYW1lcyBwcm9wZXJ0eSwgaW4gc2FtZSBvcmRlci4KKy0gI3B3bS1jZWxsczogc2hvdWxkIGJlIDMuIFNlZSBwd20udHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBhIGRlc2NyaXB0aW9uIG9mCisgIHRoZSBjZWxscyBmb3JtYXQuIFRoZSBvbmx5IHRoaXJkIGNlbGwgZmxhZyBzdXBwb3J0ZWQgYnkgdGhpcyBiaW5kaW5nIGlzCisgIFBXTV9QT0xBUklUWV9JTlZFUlRFRC4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gc2Ftc3VuZyxwd20tb3V0cHV0czogbGlzdCBvZiBQV00gY2hhbm5lbHMgdXNlZCBhcyBQV00gb3V0cHV0cyBvbiBwYXJ0aWN1bGFyCisgICAgcGxhdGZvcm0gLSBhbiBhcnJheSBvZiB1cCB0byA1IGVsZW1lbnRzIGJlaW5nIGluZGljZXMgb2YgUFdNIGNoYW5uZWxzCisgICAgKGZyb20gMCB0byA0KSwgdGhlIG9yZGVyIGRvZXMgbm90IG1hdHRlci4KKworRXhhbXBsZToKKwlwd21AN2YwMDYwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsczNjNjQwMC1wd20iOworCQlyZWcgPSA8MHg3ZjAwNjAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZ2aWMwPjsKKwkJaW50ZXJydXB0cyA9IDwyMz4sIDwyND4sIDwyNT4sIDwyNz4sIDwyOD47CisJCWNsb2NrcyA9IDwmY2xvY2sgNjc+OworCQljbG9jay1uYW1lcyA9ICJ0aW1lcnMiOworCQlzYW1zdW5nLHB3bS1vdXRwdXRzID0gPDA+LCA8MT47CisJCSNwd20tY2VsbHMgPSA8Mz47CisJfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9wd20tc3QudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9wd20tc3QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0ZDJmYjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3B3bS1zdC50eHQKQEAgLTAsMCArMSw0MSBAQAorU1RNaWNyb2VsZWN0cm9uaWNzIFBXTSBkcml2ZXIgYmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHBhcmFtZXRlcnM6CistIGNvbXBhdGlibGUgOgkJInN0LHB3bSIKKy0gI3B3bS1jZWxscyA6IAkJTnVtYmVyIG9mIGNlbGxzIHVzZWQgdG8gc3BlY2lmeSBhIFBXTS4gRmlyc3QgY2VsbAorCQkJc3BlY2lmaWVzIHRoZSBwZXItY2hpcCBpbmRleCBvZiB0aGUgUFdNIHRvIHVzZSBhbmQgdGhlCisJCQlzZWNvbmQgY2VsbCBpcyB0aGUgcGVyaW9kIGluIG5hbm9zZWNvbmRzIC0gZml4ZWQgdG8gMgorCQkJZm9yIFNUaUg0MXguCistIHJlZyA6CQkJUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncworCQkJcmVnaXN0ZXJzLgorLSBwaW5jdHJsLW5hbWVzOiAJU2V0IHRvICJkZWZhdWx0Ii4KKy0gcGluY3RybC0wOiAJCUxpc3Qgb2YgcGhhbmRsZXMgcG9pbnRpbmcgdG8gcGluIGNvbmZpZ3VyYXRpb24gbm9kZXMKKwkJCWZvciBQV00gbW9kdWxlLgorCQkJRm9yIFBpbmN0cmwgcHJvcGVydGllcywgcGxlYXNlIHJlZmVyIHRvIFsxXS4KKy0gY2xvY2stbmFtZXM6IAkJU2V0IHRvICJwd20iLgorLSBjbG9ja3M6IAkJcGhhbmRsZSBvZiB0aGUgY2xvY2sgdXNlZCBieSB0aGUgUFdNIG1vZHVsZS4KKwkJCUZvciBDbGsgcHJvcGVydGllcywgcGxlYXNlIHJlZmVyIHRvIFsyXS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gc3QscHdtLW51bS1jaGFuOglOdW1iZXIgb2YgYXZhaWxhYmxlIGNoYW5uZWxzLiBJZiBub3QgcGFzc2VkLCB0aGUgZHJpdmVyCisJCQl3aWxsIGNvbnNpZGVyIHNpbmdsZSBjaGFubmVsIGJ5IGRlZmF1bHQuCisKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9waW5jdHJsLWJpbmRpbmdzLnR4dAorWzJdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKKworRXhhbXBsZToKKworcHdtMTogcHdtQGZlNTEwMDAwIHsKKwljb21wYXRpYmxlID0gInN0LHB3bSI7CisJcmVnID0gPDB4ZmU1MTAwMDAgMHg2OD47CisJI3B3bS1jZWxscyA9IDwyPjsKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCXBpbmN0cmwtMCA9IDwmcGluY3RybF9wd20xX2NoYW4wX2RlZmF1bHQKKwkJICAgICAmcGluY3RybF9wd20xX2NoYW4xX2RlZmF1bHQKKwkJICAgICAmcGluY3RybF9wd20xX2NoYW4yX2RlZmF1bHQKKwkJICAgICAmcGluY3RybF9wd20xX2NoYW4zX2RlZmF1bHQ+OworCWNsb2NrcyA9IDwmY2xrX3N5c2luPjsKKwljbG9jay1uYW1lcyA9ICJwd20iOworCXN0LHB3bS1udW0tY2hhbiA9IDw0PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3B3bS1zdW40aS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3B3bS1zdW40aS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y2MDY4YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vcHdtLXN1bjRpLnR4dApAQCAtMCwwICsxLDIyIEBACitBbGx3aW5uZXIgc3VuNGkgYW5kIHN1bjdpIFNvQyBQV00gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2Y6CisgICAgLSAiYWxsd2lubmVyLHN1bjRpLWExMC1wd20iCisgICAgLSAiYWxsd2lubmVyLHN1bjVpLWExMHMtcHdtIgorICAgIC0gImFsbHdpbm5lcixzdW41aS1hMTMtcHdtIgorICAgIC0gImFsbHdpbm5lcixzdW43aS1hMjAtcHdtIgorICAtIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIncyByZWdpc3RlcnMKKyAgLSAjcHdtLWNlbGxzOiBzaG91bGQgYmUgMy4gU2VlIHB3bS50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGEgZGVzY3JpcHRpb24gb2YKKyAgICB0aGUgY2VsbHMgZm9ybWF0LgorICAtIGNsb2NrczogRnJvbSBjb21tb24gY2xvY2sgYmluZGluZywgaGFuZGxlIHRvIHRoZSBwYXJlbnQgY2xvY2suCisKK0V4YW1wbGU6CisKKwlwd206IHB3bUAwMWMyMGUwMCB7CisJCWNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjdpLWEyMC1wd20iOworCQlyZWcgPSA8MHgwMWMyMGUwMCAweGM+OworCQljbG9ja3MgPSA8Jm9zYzI0TT47CisJCSNwd20tY2VsbHMgPSA8Mz47CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vcHdtLXRpZWNhcC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3B3bS10aWVjYXAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiODExNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3B3bS10aWVjYXAudHh0CkBAIC0wLDAgKzEsMjkgQEAKK1RJIFNPQyBFQ0FQIGJhc2VkIEFQV00gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBNdXN0IGJlICJ0aSw8c29jPi1lY2FwIi4KKyAgZm9yIGFtMzN4eCAtIGNvbXBhdGlibGUgPSAidGksYW0zM3h4LWVjYXAiOworICBmb3IgZGE4NTAgIC0gY29tcGF0aWJsZSA9ICJ0aSxkYTg1MC1lY2FwIiwgInRpLGFtMzN4eC1lY2FwIjsKKy0gI3B3bS1jZWxsczogc2hvdWxkIGJlIDMuIFNlZSBwd20udHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBhIGRlc2NyaXB0aW9uIG9mCisgIHRoZSBjZWxscyBmb3JtYXQuIFRoZSBQV00gY2hhbm5lbCBpbmRleCByYW5nZXMgZnJvbSAwIHRvIDQuIFRoZSBvbmx5IHRoaXJkCisgIGNlbGwgZmxhZyBzdXBwb3J0ZWQgYnkgdGhpcyBiaW5kaW5nIGlzIFBXTV9QT0xBUklUWV9JTlZFUlRFRC4KKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIHJlZ2lzdGVycyBtYXAuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHRpLGh3bW9kczogTmFtZSBvZiB0aGUgaHdtb2QgYXNzb2NpYXRlZCB0byB0aGUgRUNBUDoKKyAgImVjYXA8eD4iLCA8eD4gYmVpbmcgdGhlIDAtYmFzZWQgaW5zdGFuY2UgbnVtYmVyIGZyb20gdGhlIEhXIHNwZWMKKworRXhhbXBsZToKKworZWNhcDA6IGVjYXBAMCB7IC8qIEVDQVAgb24gYW0zM3h4ICovCisJY29tcGF0aWJsZSA9ICJ0aSxhbTMzeHgtZWNhcCI7CisJI3B3bS1jZWxscyA9IDwzPjsKKwlyZWcgPSA8MHg0ODMwMDEwMCAweDgwPjsKKwl0aSxod21vZHMgPSAiZWNhcDAiOworfTsKKworZWNhcDA6IGVjYXBAMCB7IC8qIEVDQVAgb24gZGE4NTAgKi8KKwljb21wYXRpYmxlID0gInRpLGRhODUwLWVjYXAiLCAidGksYW0zM3h4LWVjYXAiOworCSNwd20tY2VsbHMgPSA8Mz47CisJcmVnID0gPDB4MzA2MDAwIDB4ODA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vcHdtLXRpZWhycHdtLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vcHdtLXRpZWhycHdtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzEwMGIyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9wd20tdGllaHJwd20udHh0CkBAIC0wLDAgKzEsMjkgQEAKK1RJIFNPQyBFSFJQV00gYmFzZWQgUFdNIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogTXVzdCBiZSAidGksPHNvYz4tZWhycHdtIi4KKyAgZm9yIGFtMzN4eCAtIGNvbXBhdGlibGUgPSAidGksYW0zM3h4LWVocnB3bSI7CisgIGZvciBkYTg1MCAgLSBjb21wYXRpYmxlID0gInRpLGRhODUwLWVocnB3bSIsICJ0aSxhbTMzeHgtZWhycHdtIjsKKy0gI3B3bS1jZWxsczogc2hvdWxkIGJlIDMuIFNlZSBwd20udHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBhIGRlc2NyaXB0aW9uIG9mCisgIHRoZSBjZWxscyBmb3JtYXQuIFRoZSBvbmx5IHRoaXJkIGNlbGwgZmxhZyBzdXBwb3J0ZWQgYnkgdGhpcyBiaW5kaW5nIGlzCisgIFBXTV9QT0xBUklUWV9JTlZFUlRFRC4KKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIHJlZ2lzdGVycyBtYXAuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHRpLGh3bW9kczogTmFtZSBvZiB0aGUgaHdtb2QgYXNzb2NpYXRlZCB0byB0aGUgRUhSUFdNOgorICAiZWhycHdtPHg+IiwgPHg+IGJlaW5nIHRoZSAwLWJhc2VkIGluc3RhbmNlIG51bWJlciBmcm9tIHRoZSBIVyBzcGVjCisKK0V4YW1wbGU6CisKK2VocnB3bTA6IGVocnB3bUAwIHsgLyogRUhSUFdNIG9uIGFtMzN4eCAqLworCWNvbXBhdGlibGUgPSAidGksYW0zM3h4LWVocnB3bSI7CisJI3B3bS1jZWxscyA9IDwzPjsKKwlyZWcgPSA8MHg0ODMwMDIwMCAweDEwMD47CisJdGksaHdtb2RzID0gImVocnB3bTAiOworfTsKKworZWhycHdtMDogZWhycHdtQDAgeyAvKiBFSFJQV00gb24gZGE4NTAgKi8KKwljb21wYXRpYmxlID0gInRpLGRhODUwLWVocnB3bSIsICJ0aSxhbTMzeHgtZWhycHdtIjsKKwkjcHdtLWNlbGxzID0gPDM+OworCXJlZyA9IDwweDMwMDAwMCAweDIwMDA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vcHdtLXRpcHdtc3MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9wd20tdGlwd21zcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdlYWU3NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vcHdtLXRpcHdtc3MudHh0CkBAIC0wLDAgKzEsMzEgQEAKK1RJIFNPQyBiYXNlZCBQV00gU3Vic3lzdGVtCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IE11c3QgYmUgInRpLGFtMzN4eC1wd21zcyI7CistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSByZWdpc3RlcnMgbWFwLgorLSBhZGRyZXNzLWNlbGxzOiBTcGVjaWZ5IHRoZSBudW1iZXIgb2YgdTMyIGVudHJpZXMgbmVlZGVkIGluIGNoaWxkIG5vZGVzLgorCQkgIFNob3VsZCBzZXQgdG8gMS4KKy0gc2l6ZS1jZWxsczogc3BlY2lmeSBudW1iZXIgb2YgdTMyIGVudHJpZXMgbmVlZGVkIHRvIHNwZWNpZnkgY2hpbGQgbm9kZXMgc2l6ZQorCQlpbiByZWcgcHJvcGVydHkuIFNob3VsZCBzZXQgdG8gMS4KKy0gcmFuZ2VzOiBkZXNjcmliZXMgdGhlIGFkZHJlc3MgbWFwcGluZyBvZiBhIG1lbW9yeS1tYXBwZWQgYnVzLiBTaG91bGQgc2V0IHRvCisJICAgcGh5c2ljYWwgYWRkcmVzcyBtYXAgb2YgY2hpbGQncyBiYXNlIGFkZHJlc3MsIHBoeXNpY2FsIGFkZHJlc3Mgd2l0aGluCisJICAgcGFyZW50J3MgYWRkcmVzcyAgc3BhY2UgYW5kIGxlbmd0aCBvZiB0aGUgYWRkcmVzcyBtYXAuIEZvciBhbTMzeHgsCisJICAgMyBzZXQgb2YgY2hpbGQgcmVnaXN0ZXIgbWFwcyBwcmVzZW50LCBFQ0FQIHJlZ2lzdGVyIHNwYWNlLCBFUUVQCisJICAgcmVnaXN0ZXIgc3BhY2UsIEVIUlBXTSByZWdpc3RlciBzcGFjZS4KKworQWxzbyBjaGlsZCBub2RlcyBzaG91bGQgYWxzbyBwb3B1bGF0ZWQgdW5kZXIgUFdNU1MgRFQgbm9kZS4KKworRXhhbXBsZToKK3B3bXNzMDogcHdtc3NANDgzMDAwMDAgeworCWNvbXBhdGlibGUgPSAidGksYW0zM3h4LXB3bXNzIjsKKwlyZWcgPSA8MHg0ODMwMDAwMCAweDEwPjsKKwl0aSxod21vZHMgPSAiZXB3bXNzMCI7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MT47CisJc3RhdHVzID0gImRpc2FibGVkIjsKKwlyYW5nZXMgPSA8MHg0ODMwMDEwMCAweDQ4MzAwMTAwIDB4ODAgICAvKiBFQ0FQICovCisJCSAgMHg0ODMwMDE4MCAweDQ4MzAwMTgwIDB4ODAgICAvKiBFUUVQICovCisJCSAgMHg0ODMwMDIwMCAweDQ4MzAwMjAwIDB4ODA+OyAvKiBFSFJQV00gKi8KKworCS8qIGNoaWxkIG5vZGVzIGdvIGhlcmUgKi8KK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3B3bS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3B3bS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU1NjI2MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vcHdtLnR4dApAQCAtMCwwICsxLDY5IEBACitTcGVjaWZ5aW5nIFBXTSBpbmZvcm1hdGlvbiBmb3IgZGV2aWNlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworMSkgUFdNIHVzZXIgbm9kZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1BXTSB1c2VycyBzaG91bGQgc3BlY2lmeSBhIGxpc3Qgb2YgUFdNIGRldmljZXMgdGhhdCB0aGV5IHdhbnQgdG8gdXNlCit3aXRoIGEgcHJvcGVydHkgY29udGFpbmluZyBhICdwd20tbGlzdCc6CisKKwlwd20tbGlzdCA6Oj0gPHNpbmdsZS1wd20+IFtwd20tbGlzdF0KKwlzaW5nbGUtcHdtIDo6PSA8cHdtLXBoYW5kbGU+IDxwd20tc3BlY2lmaWVyPgorCXB3bS1waGFuZGxlIDogcGhhbmRsZSB0byBQV00gY29udHJvbGxlciBub2RlCisJcHdtLXNwZWNpZmllciA6IGFycmF5IG9mICNwd20tY2VsbHMgc3BlY2lmeWluZyB0aGUgZ2l2ZW4gUFdNCisJCQkoY29udHJvbGxlciBzcGVjaWZpYykKKworUFdNIHByb3BlcnRpZXMgc2hvdWxkIGJlIG5hbWVkICJwd21zIi4gVGhlIGV4YWN0IG1lYW5pbmcgb2YgZWFjaCBwd21zCitwcm9wZXJ0eSBtdXN0IGJlIGRvY3VtZW50ZWQgaW4gdGhlIGRldmljZSB0cmVlIGJpbmRpbmcgZm9yIGVhY2ggZGV2aWNlLgorQW4gb3B0aW9uYWwgcHJvcGVydHkgInB3bS1uYW1lcyIgbWF5IGNvbnRhaW4gYSBsaXN0IG9mIHN0cmluZ3MgdG8gbGFiZWwKK2VhY2ggb2YgdGhlIFBXTSBkZXZpY2VzIGxpc3RlZCBpbiB0aGUgInB3bXMiIHByb3BlcnR5LiBJZiBubyAicHdtLW5hbWVzIgorcHJvcGVydHkgaXMgZ2l2ZW4sIHRoZSBuYW1lIG9mIHRoZSB1c2VyIG5vZGUgd2lsbCBiZSB1c2VkIGFzIGZhbGxiYWNrLgorCitEcml2ZXJzIGZvciBkZXZpY2VzIHRoYXQgdXNlIG1vcmUgdGhhbiBhIHNpbmdsZSBQV00gZGV2aWNlIGNhbiB1c2UgdGhlCisicHdtLW5hbWVzIiBwcm9wZXJ0eSB0byBtYXAgdGhlIG5hbWUgb2YgdGhlIFBXTSBkZXZpY2UgcmVxdWVzdGVkIGJ5IHRoZQorcHdtX2dldCgpIGNhbGwgdG8gYW4gaW5kZXggaW50byB0aGUgbGlzdCBnaXZlbiBieSB0aGUgInB3bXMiIHByb3BlcnR5LgorCitUaGUgZm9sbG93aW5nIGV4YW1wbGUgY291bGQgYmUgdXNlZCB0byBkZXNjcmliZSBhIFBXTS1iYXNlZCBiYWNrbGlnaHQKK2RldmljZToKKworCXB3bTogcHdtIHsKKwkJI3B3bS1jZWxscyA9IDwyPjsKKwl9OworCisJWy4uLl0KKworCWJsOiBiYWNrbGlnaHQgeworCQlwd21zID0gPCZwd20gMCA1MDAwMDAwPjsKKwkJcHdtLW5hbWVzID0gImJhY2tsaWdodCI7CisJfTsKKworTm90ZSB0aGF0IGluIHRoZSBleGFtcGxlIGFib3ZlLCBzcGVjaWZ5aW5nIHRoZSAicHdtLW5hbWVzIiBpcyByZWR1bmRhbnQKK2JlY2F1c2UgdGhlIG5hbWUgImJhY2tsaWdodCIgd291bGQgYmUgdXNlZCBhcyBmYWxsYmFjayBhbnl3YXkuCisKK3B3bS1zcGVjaWZpZXIgdHlwaWNhbGx5IGVuY29kZXMgdGhlIGNoaXAtcmVsYXRpdmUgUFdNIG51bWJlciBhbmQgdGhlIFBXTQorcGVyaW9kIGluIG5hbm9zZWNvbmRzLgorCitPcHRpb25hbGx5LCB0aGUgcHdtLXNwZWNpZmllciBjYW4gZW5jb2RlIGEgbnVtYmVyIG9mIGZsYWdzIChkZWZpbmVkIGluCis8ZHQtYmluZGluZ3MvcHdtL3B3bS5oPikgaW4gYSB0aGlyZCBjZWxsOgorLSBQV01fUE9MQVJJVFlfSU5WRVJURUQ6IGludmVydCB0aGUgUFdNIHNpZ25hbCBwb2xhcml0eQorCitFeGFtcGxlIHdpdGggb3B0aW9uYWwgUFdNIHNwZWNpZmllciBmb3IgaW52ZXJzZSBwb2xhcml0eQorCisJYmw6IGJhY2tsaWdodCB7CisJCXB3bXMgPSA8JnB3bSAwIDUwMDAwMDAgUFdNX1BPTEFSSVRZX0lOVkVSVEVEPjsKKwkJcHdtLW5hbWVzID0gImJhY2tsaWdodCI7CisJfTsKKworMikgUFdNIGNvbnRyb2xsZXIgbm9kZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1BXTSBjb250cm9sbGVyIG5vZGVzIG11c3Qgc3BlY2lmeSB0aGUgbnVtYmVyIG9mIGNlbGxzIHVzZWQgZm9yIHRoZQorc3BlY2lmaWVyIHVzaW5nIHRoZSAnI3B3bS1jZWxscycgcHJvcGVydHkuCisKK0FuIGV4YW1wbGUgUFdNIGNvbnRyb2xsZXIgbWlnaHQgbG9vayBsaWtlIHRoaXM6CisKKwlwd206IHB3bUA3MDAwYTAwMCB7CisJCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMjAtcHdtIjsKKwkJcmVnID0gPDB4NzAwMGEwMDAgMHgxMDA+OworCQkjcHdtLWNlbGxzID0gPDI+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3B4YS1wd20udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9weGEtcHdtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWU5ZjFlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9weGEtcHdtLnR4dApAQCAtMCwwICsxLDMwIEBACitNYXJ2ZWxsIFBXTSBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb3IgbW9yZSBvZjoKKyAgLSAibWFydmVsbCxweGEyNTAtcHdtIgorICAtICJtYXJ2ZWxsLHB4YTI3MC1wd20iCisgIC0gIm1hcnZlbGwscHhhMTY4LXB3bSIKKyAgLSAibWFydmVsbCxweGE5MTAtcHdtIgorLSByZWc6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlcnMgdXNlZCBieSB0aGUgUFdNIGNoYW5uZWwKKyAgTm90ZSB0aGF0IG9uZSBkZXZpY2UgaW5zdGFuY2UgbXVzdCBiZSBjcmVhdGVkIGZvciBlYWNoIFBXTSB0aGF0IGlzIHVzZWQsIHNvIHRoZQorICBsZW5ndGggY292ZXJzIG9ubHkgdGhlIHJlZ2lzdGVyIHdpbmRvdyBmb3Igb25lIFBXTSBvdXRwdXQsIG5vdCB0aGF0IG9mIHRoZQorICBlbnRpcmUgUFdNIGNvbnRyb2xsZXIuICBDdXJyZW50bHkgbGVuZ3RoIGlzIDB4MTAgZm9yIGFsbCBzdXBwb3J0ZWQgZGV2aWNlcy4KKy0gI3B3bS1jZWxsczogU2hvdWxkIGJlIDEuICBUaGlzIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBwZXJpb2QgaW4KKyAgbmFub3NlY29uZHMuCisKK0V4YW1wbGUgUFdNIGRldmljZSBub2RlOgorCitwd20wOiBwd21ANDBiMDAwMDAgeworCWNvbXBhdGlibGUgPSAibWFydmVsbCxweGEyNTAtcHdtIjsKKwlyZWcgPSA8MHg0MGIwMDAwMCAweDEwPjsKKwkjcHdtLWNlbGxzID0gPDE+OworfTsKKworRXhhbXBsZSBQV00gY2xpZW50IG5vZGU6CisKK2JhY2tsaWdodCB7CisJY29tcGF0aWJsZSA9ICJwd20tYmFja2xpZ2h0IjsKKwlwd21zID0gPCZwd20wIDUwMDAwMDA+OworCS4uLgorfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9yZW5lc2FzLHB3bS1yY2FyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vcmVuZXNhcyxwd20tcmNhci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgyMmEwOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vcmVuZXNhcyxwd20tcmNhci50eHQKQEAgLTAsMCArMSwyNiBAQAorKiBSZW5lc2FzIFItQ2FyIFBXTSBUaW1lciBDb250cm9sbGVyCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAicmVuZXNhcyxwd20tcmNhciIgYW5kIG9uZSBvZiB0aGUgZm9sbG93aW5nLgorIC0gInJlbmVzYXMscHdtLXI4YTc3NzgiOiBmb3IgUi1DYXIgTTFBCisgLSAicmVuZXNhcyxwd20tcjhhNzc3OSI6IGZvciBSLUNhciBIMQorIC0gInJlbmVzYXMscHdtLXI4YTc3OTAiOiBmb3IgUi1DYXIgSDIKKyAtICJyZW5lc2FzLHB3bS1yOGE3NzkxIjogZm9yIFItQ2FyIE0yLVcKKyAtICJyZW5lc2FzLHB3bS1yOGE3Nzk0IjogZm9yIFItQ2FyIEUyCistIHJlZzogYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVycyBibG9jayBmb3IgdGhlIFBXTS4KKy0gI3B3bS1jZWxsczogc2hvdWxkIGJlIDIuIFNlZSBwd20udHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBhIGRlc2NyaXB0aW9uIG9mCisgIHRoZSBjZWxscyBmb3JtYXQuCistIGNsb2NrczogY2xvY2sgcGhhbmRsZSBhbmQgc3BlY2lmaWVyIHBhaXIuCistIHBpbmN0cmwtMDogcGhhbmRsZSwgcmVmZXJyaW5nIHRvIGEgZGVmYXVsdCBwaW4gY29uZmlndXJhdGlvbiBub2RlLgorLSBwaW5jdHJsLW5hbWVzOiBTZXQgdG8gImRlZmF1bHQiLgorCitFeGFtcGxlOiBSOEE3NzkwIChSLUNhciBIMikgUFdNIFRpbWVyIG5vZGUKKworCXB3bTA6IHB3bUBlNmUzMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxwd20tcjhhNzc5MCIsICJyZW5lc2FzLHB3bS1yY2FyIjsKKwkJcmVnID0gPDAgMHhlNmUzMDAwMCAwIDB4OD47CisJCSNwd20tY2VsbHMgPSA8Mj47CisJCWNsb2NrcyA9IDwmbXN0cDVfY2xrcyBSOEE3NzkwX0NMS19QV00+OworCQlwaW5jdHJsLTAgPSA8JnB3bTBfcGlucz47CisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vcmVuZXNhcyx0cHUtcHdtLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vcmVuZXNhcyx0cHUtcHdtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDY3ZTg0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9yZW5lc2FzLHRwdS1wd20udHh0CkBAIC0wLDAgKzEsMjggQEAKKyogUmVuZXNhcyBSLUNhciBUaW1lciBQdWxzZSBVbml0IFBXTSBDb250cm9sbGVyCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcuCisgICAgLSAicmVuZXNhcyx0cHUtcjhhNzNhNCI6IGZvciBSOEE3N0E0IChSLU1vYmlsZSBBUEU2KSBjb21wYXRpYmxlIFBXTSBjb250cm9sbGVyLgorICAgIC0gInJlbmVzYXMsdHB1LXI4YTc3NDAiOiBmb3IgUjhBNzc0MCAoUi1Nb2JpbGUgQTEpIGNvbXBhdGlibGUgUFdNIGNvbnRyb2xsZXIuCisgICAgLSAicmVuZXNhcyx0cHUtcjhhNzc5MCI6IGZvciBSOEE3NzkwIChSLUNhciBIMikgY29tcGF0aWJsZSBQV00gY29udHJvbGxlci4KKyAgICAtICJyZW5lc2FzLHRwdS1zaDczNzIiOiBmb3IgU0g3MzcyIChTSC1Nb2JpbGUgQVA0KSBjb21wYXRpYmxlIFBXTSBjb250cm9sbGVyLgorICAgIC0gInJlbmVzYXMsdHB1IjogZm9yIGdlbmVyaWMgUi1DYXIgVFBVIFBXTSBjb250cm9sbGVyLgorCisgIC0gcmVnOiBCYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiBlYWNoIG1lbW9yeSByZXNvdXJjZSB1c2VkIGJ5IHRoZSBQV00KKyAgICBjb250cm9sbGVyIGhhcmR3YXJlIG1vZHVsZS4KKworICAtICNwd20tY2VsbHM6IHNob3VsZCBiZSAzLiBTZWUgcHdtLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgYSBkZXNjcmlwdGlvbiBvZgorICAgIHRoZSBjZWxscyBmb3JtYXQuIFRoZSBvbmx5IHRoaXJkIGNlbGwgZmxhZyBzdXBwb3J0ZWQgYnkgdGhpcyBiaW5kaW5nIGlzCisgICAgUFdNX1BPTEFSSVRZX0lOVkVSVEVELgorCitQbGVhc2UgcmVmZXIgdG8gcHdtLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgZGV0YWlscyBvZiB0aGUgY29tbW9uIFBXTSBiaW5kaW5ncwordXNlZCBieSBjbGllbnQgZGV2aWNlcy4KKworRXhhbXBsZTogUjhBNzc0MCAoUi1DYXIgQTEpIFRQVSBjb250cm9sbGVyIG5vZGUKKworCXRwdTogcHdtQGU2NjAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLHRwdS1yOGE3NzQwIiwgInJlbmVzYXMsdHB1IjsKKwkJcmVnID0gPDB4ZTY2MDAwMDAgMHgxMDA+OworCQkjcHdtLWNlbGxzID0gPDM+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3NwZWFyLXB3bS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3NwZWFyLXB3bS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ4NmRlMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vc3BlYXItcHdtLnR4dApAQCAtMCwwICsxLDE3IEBACis9PSBTVCBTUEVBciBTb0MgUFdNIGNvbnRyb2xsZXIgPT0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlIG9uZSBvZjoKKyAgLSAic3Qsc3BlYXIzMjAtcHdtIgorICAtICJzdCxzcGVhcjEzNDAtcHdtIgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBjb250cm9sbGVyJ3MgcmVnaXN0ZXJzCistICNwd20tY2VsbHM6IHNob3VsZCBiZSAyLiBTZWUgcHdtLnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgYSBkZXNjcmlwdGlvbiBvZgorICB0aGUgY2VsbHMgZm9ybWF0LgorCitFeGFtcGxlOgorCisgICAgICAgIHB3bTogcHdtQGE4MDAwMDAwIHsKKyAgICAgICAgICAgIGNvbXBhdGlibGUgPSJzdCxzcGVhcjMyMC1wd20iOworICAgICAgICAgICAgcmVnID0gPDB4YTgwMDAwMDAgMHgxMDAwPjsKKyAgICAgICAgICAgICNwd20tY2VsbHMgPSA8Mj47CisgICAgICAgIH07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3RpLHR3bC1wd20udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS90aSx0d2wtcHdtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTMyYmVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS90aSx0d2wtcHdtLnR4dApAQCAtMCwwICsxLDE3IEBACitUZXhhcyBJbnN0cnVtZW50cyBUV0wgc2VyaWVzIFBXTSBkcml2ZXJzCisKK1N1cHBvcnRlZCBQV01zOgorT24gVFdMNDAzMCBzZXJpZXM6IFBXTTEgYW5kIFBXTTIKK09uIFRXTDYwMzAgc2VyaWVzOiBQV00wIGFuZCBQV00xCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ0aSx0d2w0MDMwLXB3bSIgb3IgInRpLHR3bDYwMzAtcHdtIgorLSAjcHdtLWNlbGxzOiBzaG91bGQgYmUgMi4gU2VlIHB3bS50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGEgZGVzY3JpcHRpb24gb2YKKyAgdGhlIGNlbGxzIGZvcm1hdC4KKworRXhhbXBsZToKKwordHdsX3B3bTogcHdtIHsKKwljb21wYXRpYmxlID0gInRpLHR3bDYwMzAtcHdtIjsKKwkjcHdtLWNlbGxzID0gPDI+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vdGksdHdsLXB3bWxlZC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3RpLHR3bC1wd21sZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmNGI0NjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3RpLHR3bC1wd21sZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1RleGFzIEluc3RydW1lbnRzIFRXTCBzZXJpZXMgUFdNIGRyaXZlcnMgY29ubmVjdGVkIHRvIExFRCB0ZXJtaW5hbHMKKworU3VwcG9ydGVkIFBXTXM6CitPbiBUV0w0MDMwIHNlcmllczogUFdNQSBhbmQgUFdNQiAoY29ubmVjdGVkIHRvIExFREEgYW5kIExFREIgdGVybWluYWxzKQorT24gVFdMNjAzMCBzZXJpZXM6IExFRCBQV00gKG1haW5seSB1c2VkIGFzIGNoYXJnaW5nIGluZGljYXRvciBMRUQpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ0aSx0d2w0MDMwLXB3bWxlZCIgb3IgInRpLHR3bDYwMzAtcHdtbGVkIgorLSAjcHdtLWNlbGxzOiBzaG91bGQgYmUgMi4gU2VlIHB3bS50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGEgZGVzY3JpcHRpb24gb2YKKyAgdGhlIGNlbGxzIGZvcm1hdC4KKworRXhhbXBsZToKKwordHdsX3B3bWxlZDogcHdtbGVkIHsKKwljb21wYXRpYmxlID0gInRpLHR3bDYwMzAtcHdtbGVkIjsKKwkjcHdtLWNlbGxzID0gPDI+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wd20vdnQ4NTAwLXB3bS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3Z0ODUwMC1wd20udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3NjM5MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL3Z0ODUwMC1wd20udHh0CkBAIC0wLDAgKzEsMTggQEAKK1ZJQS9Xb25kZXJtZWRpYSBWVDg1MDAvV004eHh4IHNlcmllcyBTb0MgUFdNIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJ2aWEsdnQ4NTAwLXB3bSIKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgY29udHJvbGxlcidzIHJlZ2lzdGVycworLSAjcHdtLWNlbGxzOiBzaG91bGQgYmUgMy4gU2VlIHB3bS50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGEgZGVzY3JpcHRpb24gb2YKKyAgdGhlIGNlbGxzIGZvcm1hdC4gVGhlIG9ubHkgdGhpcmQgY2VsbCBmbGFnIHN1cHBvcnRlZCBieSB0aGlzIGJpbmRpbmcgaXMKKyAgUFdNX1BPTEFSSVRZX0lOVkVSVEVELgorLSBjbG9ja3M6IHBoYW5kbGUgdG8gdGhlIFBXTSBzb3VyY2UgY2xvY2sKKworRXhhbXBsZToKKworcHdtMTogcHdtQGQ4MjIwMDAwIHsKKwkjcHdtLWNlbGxzID0gPDM+OworCWNvbXBhdGlibGUgPSAidmlhLHZ0ODUwMC1wd20iOworCXJlZyA9IDwweGQ4MjIwMDAwIDB4MTAwMD47CisJY2xvY2tzID0gPCZjbGtwd20+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWdtYXAvcmVnbWFwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWdtYXAvcmVnbWFwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDk0ZjhiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ21hcC9yZWdtYXAudHh0CkBAIC0wLDAgKzEsNDcgQEAKK0RldmljZS1UcmVlIGJpbmRpbmcgZm9yIHJlZ21hcAorCitUaGUgZW5kaWFubmVzcyBtb2RlIG9mIENQVSAmIERldmljZSBzY2VuYXJpb3M6CitJbmRleCAgICAgRGV2aWNlICAgICBFbmRpYW5uZXNzIHByb3BlcnRpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMSAgICAgICAgIEJFICAgICAgICAgJ2JpZy1lbmRpYW4nCisyICAgICAgICAgTEUgICAgICAgICAnbGl0dGxlLWVuZGlhbicKKworRm9yIG9uZSBkZXZpY2UgZHJpdmVyLCB3aGljaCB3aWxsIHJ1biBpbiBkaWZmZXJlbnQgc2NlbmFyaW9zIGFib3ZlCitvbiBkaWZmZXJlbnQgU29DcyB1c2luZyB0aGUgZGV2aWNldHJlZSwgd2UgbmVlZCBvbmUgd2F5IHRvIHNpbXBsaWZ5Cit0aGlzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSB7YmlnLGxpdHRsZX0tZW5kaWFuOiB0aGVzZSBhcmUgYm9vbGVhbiBwcm9wZXJ0aWVzLCBpZiBhYnNlbnQKKyAgbWVhbmluZyB0aGF0IHRoZSBDUFUgYW5kIHRoZSBEZXZpY2UgYXJlIGluIHRoZSBzYW1lIGVuZGlhbm5lc3MgbW9kZSwKKyAgdGhlc2UgcHJvcGVydGllcyBhcmUgZm9yIHJlZ2lzdGVyIHZhbHVlcyBhbmQgYWxsIHRoZSBidWZmZXJzIG9ubHkuCisKK0V4YW1wbGVzOgorU2NlbmFyaW8gMSA6IENQVSBpbiBMRSBtb2RlICYgZGV2aWNlIGluIExFIG1vZGUuCitkZXY6IGRldkA0MDAzMTAwMCB7CisJICAgICAgY29tcGF0aWJsZSA9ICJuYW1lIjsKKwkgICAgICByZWcgPSA8MHg0MDAzMTAwMCAweDEwMDA+OworCSAgICAgIC4uLgorfTsKKworU2NlbmFyaW8gMiA6IENQVSBpbiBMRSBtb2RlICYgZGV2aWNlIGluIEJFIG1vZGUuCitkZXY6IGRldkA0MDAzMTAwMCB7CisJICAgICAgY29tcGF0aWJsZSA9ICJuYW1lIjsKKwkgICAgICByZWcgPSA8MHg0MDAzMTAwMCAweDEwMDA+OworCSAgICAgIC4uLgorCSAgICAgIGJpZy1lbmRpYW47Cit9OworCitTY2VuYXJpbyAzIDogQ1BVIGluIEJFIG1vZGUgJiBkZXZpY2UgaW4gQkUgbW9kZS4KK2RldjogZGV2QDQwMDMxMDAwIHsKKwkgICAgICBjb21wYXRpYmxlID0gIm5hbWUiOworCSAgICAgIHJlZyA9IDwweDQwMDMxMDAwIDB4MTAwMD47CisJICAgICAgLi4uCit9OworCitTY2VuYXJpbyA0IDogQ1BVIGluIEJFIG1vZGUgJiBkZXZpY2UgaW4gTEUgbW9kZS4KK2RldjogZGV2QDQwMDMxMDAwIHsKKwkgICAgICBjb21wYXRpYmxlID0gIm5hbWUiOworCSAgICAgIHJlZyA9IDwweDQwMDMxMDAwIDB4MTAwMD47CisJICAgICAgLi4uCisJICAgICAgbGl0dGxlLWVuZGlhbjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yLzg4cG04MDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci84OHBtODAwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGE1NGMyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci84OHBtODAwLnR4dApAQCAtMCwwICsxLDM4IEBACitNYXJ2ZWxsIDg4UE04MDAgcmVndWxhdG9yCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJtYXJ2ZWxsLDg4cG04MDAiCistIHJlZzogSTJDIHNsYXZlIGFkZHJlc3MKKy0gcmVndWxhdG9yczogQSBub2RlIHRoYXQgaG91c2VzIGEgc3ViLW5vZGUgZm9yIGVhY2ggcmVndWxhdG9yIHdpdGhpbiB0aGUKKyAgZGV2aWNlLiBFYWNoIHN1Yi1ub2RlIGlzIGlkZW50aWZpZWQgdXNpbmcgdGhlIG5vZGUncyBuYW1lIChvciB0aGUgZGVwcmVjYXRlZAorICByZWd1bGF0b3ItY29tcGF0aWJsZSBwcm9wZXJ0eSBpZiBwcmVzZW50KSwgd2l0aCB2YWxpZCB2YWx1ZXMgbGlzdGVkIGJlbG93LgorICBUaGUgY29udGVudCBvZiBlYWNoIHN1Yi1ub2RlIGlzIGRlZmluZWQgYnkgdGhlIHN0YW5kYXJkIGJpbmRpbmcgZm9yCisgIHJlZ3VsYXRvcnM7IHNlZSByZWd1bGF0b3IudHh0LgorCitUaGUgdmFsaWQgbmFtZXMgZm9yIHJlZ3VsYXRvcnMgYXJlOgorCisgIGJ1Y2sxLCBidWNrMiwgYnVjazMsIGJ1Y2s0LCBidWNrNSwgbGRvMSwgbGRvMiwgbGRvMywgbGRvNCwgbGRvNSwgbGRvNiwgbGRvNywKKyAgbGRvOCwgbGRvOSwgbGRvMTAsIGxkbzExLCBsZG8xMiwgbGRvMTMsIGxkbzE0LCBsZG8xNSwgbGRvMTYsIGxkbzE3LCBsZG8xOCwgbGRvMTkKKworRXhhbXBsZToKKworCXBtaWM6IDg4cG04MDBAMzEgeworCQljb21wYXRpYmxlID0gIm1hcnZlbGwsODhwbTgwMCI7CisJCXJlZyA9IDwweDMxPjsKKworCQlyZWd1bGF0b3JzIHsKKwkJCWJ1Y2sxIHsKKwkJCSAgICAgICAgcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8NjAwMDAwPjsKKwkJCSAgICAgICAgcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8Mzk1MDAwMD47CisJCQkgICAgICAgIHJlZ3VsYXRvci1ib290LW9uOworCQkJICAgICAgICByZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKwkJCWxkbzEgeworCQkJICAgICAgICByZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw2MDAwMDA+OworCQkJICAgICAgICByZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxNTAwMDAwMD47CisJCQkgICAgICAgIHJlZ3VsYXRvci1ib290LW9uOworCQkJICAgICAgICByZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKy4uLgorCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yLzg4cG04NjB4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvODhwbTg2MHgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNjdiM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yLzg4cG04NjB4LnR4dApAQCAtMCwwICsxLDMwIEBACitNYXJ2ZWxsIDg4UE04NjB4IHJlZ3VsYXRvcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAibWFydmVsbCw4OHBtODYweCIKKy0gcmVnOiBJMkMgc2xhdmUgYWRkcmVzcworLSByZWd1bGF0b3JzOiBBIG5vZGUgdGhhdCBob3VzZXMgYSBzdWItbm9kZSBmb3IgZWFjaCByZWd1bGF0b3Igd2l0aGluIHRoZQorICBkZXZpY2UuIEVhY2ggc3ViLW5vZGUgaXMgaWRlbnRpZmllZCB1c2luZyB0aGUgcmVndWxhdG9yLWNvbXBhdGlibGUKKyAgcHJvcGVydHksIHdpdGggdmFsaWQgdmFsdWVzIGxpc3RlZCBiZWxvdy4KKworRXhhbXBsZToKKworCXBtaWM6IDg4cG04NjB4QDM0IHsKKwkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLDg4cG04NjB4IjsKKwkJcmVnID0gPDB4MzQ+OworCisJCXJlZ3VsYXRvcnMgeworCQkJQlVDSzEgeworCQkJICAgICAgICByZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMDAwMDAwPjsKKwkJCSAgICAgICAgcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTUwMDAwMD47CisJCQkgICAgICAgIHJlZ3VsYXRvci1ib290LW9uOworCQkJICAgICAgICByZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKwkJCUJVQ0szIHsKKwkJCSAgICAgICAgcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTAwMDAwMD47CisJCQkgICAgICAgIHJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMwMDAwMDA+OworCQkJICAgICAgICByZWd1bGF0b3ItYm9vdC1vbjsKKwkJCSAgICAgICAgcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvYWN0ODg2NS1yZWd1bGF0b3IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9hY3Q4ODY1LXJlZ3VsYXRvci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA2N2Q5OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvYWN0ODg2NS1yZWd1bGF0b3IudHh0CkBAIC0wLDAgKzEsOTUgQEAKK0FDVDg4eHggcmVndWxhdG9ycworLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiYWN0aXZlLXNlbWksYWN0ODg0NiIgb3IgImFjdGl2ZS1zZW1pLGFjdDg4NjUiIG9yICJhY3RpdmUtc2VtaSxhY3Q4NjAwIgorLSByZWc6IEkyQyBzbGF2ZSBhZGRyZXNzCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHN5c3RlbS1wb3dlci1jb250cm9sbGVyOiBUZWxsaW5nIHdoZXRoZXIgb3Igbm90IHRoaXMgcG1pYyBpcyBjb250cm9sbGluZworICB0aGUgc3lzdGVtIHBvd2VyLiBTZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3Bvd2VyLWNvbnRyb2xsZXIudHh0IC4KKy0gYWN0aXZlLXNlbWksdnNlbC1oaWdoOiBJbmRpY2F0ZXMgdGhlIFZTRUwgcGluIGlzIGhpZ2guCisgIElmIHRoaXMgcHJvcGVydHkgaXMgbWlzc2luZywgYXNzdW1lIHRoZSBWU0VMIHBpbiBpcyBsb3coMCkuCisKK09wdGlvbmFsIGlucHV0IHN1cHBseSBwcm9wZXJ0aWVzOgorLSBmb3IgYWN0ODYwMDoKKyAgLSB2cDEtc3VwcGx5OiBUaGUgaW5wdXQgc3VwcGx5IGZvciBEQ0RDX1JFRzEKKyAgLSB2cDItc3VwcGx5OiBUaGUgaW5wdXQgc3VwcGx5IGZvciBEQ0RDX1JFRzIKKyAgLSB2cDMtc3VwcGx5OiBUaGUgaW5wdXQgc3VwcGx5IGZvciBEQ0RDX1JFRzMKKyAgLSBpbmwtc3VwcGx5OiBUaGUgaW5wdXQgc3VwcGx5IGZvciBMRE9fUkVHNSwgTERPX1JFRzYsIExET19SRUc3IGFuZCBMRE9fUkVHOAorICBTVURDRENfUkVHNCwgTERPX1JFRzkgYW5kIExET19SRUcxMCBkbyBub3QgaGF2ZSBzZXBhcmF0ZSBzdXBwbGllcy4KKy0gZm9yIGFjdDg4NDY6CisgIC0gdnAxLXN1cHBseTogVGhlIGlucHV0IHN1cHBseSBmb3IgUkVHMQorICAtIHZwMi1zdXBwbHk6IFRoZSBpbnB1dCBzdXBwbHkgZm9yIFJFRzIKKyAgLSB2cDMtc3VwcGx5OiBUaGUgaW5wdXQgc3VwcGx5IGZvciBSRUczCisgIC0gdnA0LXN1cHBseTogVGhlIGlucHV0IHN1cHBseSBmb3IgUkVHNAorICAtIGlubDEtc3VwcGx5OiBUaGUgaW5wdXQgc3VwcGx5IGZvciBSRUc1LCBSRUc2IGFuZCBSRUc3CisgIC0gaW5sMi1zdXBwbHk6IFRoZSBpbnB1dCBzdXBwbHkgZm9yIFJFRzggYW5kIExET19SRUc5CisgIC0gaW5sMy1zdXBwbHk6IFRoZSBpbnB1dCBzdXBwbHkgZm9yIFJFRzEwLCBSRUcxMSBhbmQgUkVHMTIKKy0gZm9yIGFjdDg4NjU6CisgIC0gdnAxLXN1cHBseTogVGhlIGlucHV0IHN1cHBseSBmb3IgRENEQ19SRUcxCisgIC0gdnAyLXN1cHBseTogVGhlIGlucHV0IHN1cHBseSBmb3IgRENEQ19SRUcyCisgIC0gdnAzLXN1cHBseTogVGhlIGlucHV0IHN1cHBseSBmb3IgRENEQ19SRUczCisgIC0gaW5sNDUtc3VwcGx5OiBUaGUgaW5wdXQgc3VwcGx5IGZvciBMRE9fUkVHMSBhbmQgTERPX1JFRzIKKyAgLSBpbmw2Ny1zdXBwbHk6IFRoZSBpbnB1dCBzdXBwbHkgZm9yIExET19SRUczIGFuZCBMRE9fUkVHNAorCitBbnkgc3RhbmRhcmQgcmVndWxhdG9yIHByb3BlcnRpZXMgY2FuIGJlIHVzZWQgdG8gY29uZmlndXJlIHRoZSBzaW5nbGUgcmVndWxhdG9yLgorCitUaGUgdmFsaWQgbmFtZXMgZm9yIHJlZ3VsYXRvcnMgYXJlOgorCS0gZm9yIGFjdDg4NDY6CisJUkVHMSwgUkVHMiwgUkVHMywgUkVHNCwgUkVHNSwgUkVHNiwgUkVHNywgUkVHOCwgUkVHOSwgUkVHMTAsIFJFRzExLCBSRUcxMgorCS0gZm9yIGFjdDg4NjU6CisJRENEQ19SRUcxLCBEQ0RDX1JFRzIsIERDRENfUkVHMywgTERPX1JFRzEsIExET19SRUcyLCBMRE9fUkVHMywgTERPX1JFRzQuCisJLSBmb3IgYWN0ODYwMDoKKwlEQ0RDX1JFRzEsIERDRENfUkVHMiwgRENEQ19SRUczLCBTVURDRENfUkVHNCwgTERPX1JFRzUsIExET19SRUc2LCBMRE9fUkVHNywKKwlMRE9fUkVHOCwgTERPX1JFRzksIExET19SRUcxMCwKKworRXhhbXBsZToKKy0tLS0tLS0tCisKKwkJaTJjMTogaTJjQGYwMDE4MDAwIHsKKwkJCXBtaWM6IGFjdDg4NjVANWIgeworCQkJCWNvbXBhdGlibGUgPSAiYWN0aXZlLXNlbWksYWN0ODg2NSI7CisJCQkJcmVnID0gPDB4NWI+OworCQkJCWFjdGl2ZS1zZW1pLHZzZWwtaGlnaDsKKwkJCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCisJCQkJcmVndWxhdG9ycyB7CisJCQkJCXZjY18xdjhfcmVnOiBEQ0RDX1JFRzEgeworCQkJCQkJcmVndWxhdG9yLW5hbWUgPSAiVkNDXzFWOCI7CisJCQkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKKwkJCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE4MDAwMDA+OworCQkJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQkJfTsKKworCQkJCQl2Y2NfMXYyX3JlZzogRENEQ19SRUcyIHsKKwkJCQkJCXJlZ3VsYXRvci1uYW1lID0gIlZDQ18xVjIiOworCQkJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTEwMDAwMD47CisJCQkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxMzAwMDAwPjsKKwkJCQkJCXJlZ3VsYXRvci1zdXNwZW5kLW1lbS1taWNyb3ZvbHQgPSA8MTE1MDAwMD47CisJCQkJCQlyZWd1bGF0b3Itc3VzcGVuZC1zdGFuZGJ5LW1pY3Jvdm9sdCA9IDwxMTUwMDAwPjsKKwkJCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQkJCX07CisKKwkJCQkJdmNjXzN2M19yZWc6IERDRENfUkVHMyB7CisJCQkJCQlyZWd1bGF0b3ItbmFtZSA9ICJWQ0NfM1YzIjsKKwkJCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCQkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJCQl9OworCisJCQkJCXZkZGFuYV9yZWc6IExET19SRUcxIHsKKwkJCQkJCXJlZ3VsYXRvci1uYW1lID0gIlZEREFOQSI7CisJCQkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQkJfTsKKworCQkJCQl2ZGRmdXNlX3JlZzogTERPX1JFRzIgeworCQkJCQkJcmVndWxhdG9yLW5hbWUgPSAiRlVTRV8yVjUiOworCQkJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MjUwMDAwMD47CisJCQkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwyNTAwMDAwPjsKKwkJCQkJfTsKKwkJCQl9OworCQkJfTsKKwkJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvYW5hdG9wLXJlZ3VsYXRvci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL2FuYXRvcC1yZWd1bGF0b3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3YzRlYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL2FuYXRvcC1yZWd1bGF0b3IudHh0CkBAIC0wLDAgKzEsMzggQEAKK0FuYXRvcCBWb2x0YWdlIHJlZ3VsYXRvcnMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogTXVzdCBiZSAiZnNsLGFuYXRvcC1yZWd1bGF0b3IiCistIGFuYXRvcC1yZWctb2Zmc2V0OiBBbmF0b3AgTUZEIHJlZ2lzdGVyIG9mZnNldAorLSBhbmF0b3Atdm9sLWJpdC1zaGlmdDogQml0IHNoaWZ0IGZvciB0aGUgcmVnaXN0ZXIKKy0gYW5hdG9wLXZvbC1iaXQtd2lkdGg6IE51bWJlciBvZiBiaXRzIHVzZWQgaW4gdGhlIHJlZ2lzdGVyCistIGFuYXRvcC1taW4tYml0LXZhbDogTWluaW11bSB2YWx1ZSBvZiB0aGlzIHJlZ2lzdGVyCistIGFuYXRvcC1taW4tdm9sdGFnZTogTWluaW11bSB2b2x0YWdlIG9mIHRoaXMgcmVndWxhdG9yCistIGFuYXRvcC1tYXgtdm9sdGFnZTogTWF4aW11bSB2b2x0YWdlIG9mIHRoaXMgcmVndWxhdG9yCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGFuYXRvcC1kZWxheS1yZWctb2Zmc2V0OiBBbmF0b3AgTUZEIHN0ZXAgdGltZSByZWdpc3RlciBvZmZzZXQKKy0gYW5hdG9wLWRlbGF5LWJpdC1zaGlmdDogQml0IHNoaWZ0IGZvciB0aGUgc3RlcCB0aW1lIHJlZ2lzdGVyCistIGFuYXRvcC1kZWxheS1iaXQtd2lkdGg6IE51bWJlciBvZiBiaXRzIHVzZWQgaW4gdGhlIHN0ZXAgdGltZSByZWdpc3RlcgorLSB2aW4tc3VwcGx5OiBUaGUgc3VwcGx5IGZvciB0aGlzIHJlZ3VsYXRvcgorCitBbnkgcHJvcGVydHkgZGVmaW5lZCBhcyBwYXJ0IG9mIHRoZSBjb3JlIHJlZ3VsYXRvcgorYmluZGluZywgZGVmaW5lZCBpbiByZWd1bGF0b3IudHh0LCBjYW4gYWxzbyBiZSB1c2VkLgorCitFeGFtcGxlOgorCisJcmVndWxhdG9yLXZkZHB1IHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsYW5hdG9wLXJlZ3VsYXRvciI7CisJCXJlZ3VsYXRvci1uYW1lID0gInZkZHB1IjsKKwkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8NzI1MDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTMwMDAwMD47CisJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCWFuYXRvcC1yZWctb2Zmc2V0ID0gPDB4MTQwPjsKKwkJYW5hdG9wLXZvbC1iaXQtc2hpZnQgPSA8OT47CisJCWFuYXRvcC12b2wtYml0LXdpZHRoID0gPDU+OworCQlhbmF0b3AtZGVsYXktcmVnLW9mZnNldCA9IDwweDE3MD47CisJCWFuYXRvcC1kZWxheS1iaXQtc2hpZnQgPSA8MjQ+OworCQlhbmF0b3AtZGVsYXktYml0LXdpZHRoID0gPDI+OworCQlhbmF0b3AtbWluLWJpdC12YWwgPSA8MT47CisJCWFuYXRvcC1taW4tdm9sdGFnZSA9IDw3MjUwMDA+OworCQlhbmF0b3AtbWF4LXZvbHRhZ2UgPSA8MTMwMDAwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvYXJpem9uYS1yZWd1bGF0b3IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9hcml6b25hLXJlZ3VsYXRvci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQzNTY0ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvYXJpem9uYS1yZWd1bGF0b3IudHh0CkBAIC0wLDAgKzEsMTcgQEAKK0NpcnJ1cyBMb2dpYyBBcml6b25hIGNsYXNzIGF1ZGlvIFNvQ3MKKworVGhlc2UgZGV2aWNlcyBhcmUgYXVkaW8gU29DcyB3aXRoIGV4dGVuc2l2ZSBkaWdpdGFsIGNhcGFiaWxpdGllcyBhbmQgYSByYW5nZQorb2YgYW5hbG9ndWUgSS9PLgorCitUaGlzIGRvY3VtZW50IGxpc3RzIHJlZ3VsYXRvciBzcGVjaWZpYyBiaW5kaW5ncywgc2VlIHRoZSBwcmltYXJ5IGJpbmRpbmcKK2RvY3VtZW50OgorICAuLi9tZmQvYXJpem9uYS50eHQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAgLSB3bGYsbGRvZW5hIDogR1BJTyBzcGVjaWZpZXIgZm9yIHRoZSBHUElPIGNvbnRyb2xsaW5nIExET0VOQQorCitPcHRpb25hbCBzdWJub2RlczoKKyAgLSBsZG8xIDogSW5pdGlhbCBkYXRhIGZvciB0aGUgTERPMSByZWd1bGF0b3IsIGFzIGNvdmVyZWQgaW4KKyAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3JlZ3VsYXRvci50eHQKKyAgLSBtaWN2ZGQgOiBJbml0aWFsIGRhdGEgZm9yIHRoZSBNSUNWREQgcmVndWxhdG9yLCBhcyBjb3ZlcmVkIGluCisgICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9yZWd1bGF0b3IudHh0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL2FzMzcyMi1yZWd1bGF0b3IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9hczM3MjItcmVndWxhdG9yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWFkMGM4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9hczM3MjItcmVndWxhdG9yLnR4dApAQCAtMCwwICsxLDkxIEBACitSZWd1bGF0b3Igb2YgQU1TIEFTMzcyMiBQTUlDLgorTmFtZSBvZiB0aGUgcmVndWxhdG9yIHN1Ym5vZGUgbXVzdCBiZSAicmVndWxhdG9ycyIuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIGlucHV0IHN1cHBseSBvZiByZWd1bGF0b3JzIGFyZSB0aGUgb3B0aW9uYWwgcHJvcGVydGllcyBvbiB0aGUKK3JlZ3VsYXRvciBub2RlLiBUaGUgQVMzNzIyIGlzIGhhdmluZyA3IERDREMgc3RlcC1kb3duIHJlZ3VsYXRvcnMgYXMKK3NkWzAtNl0sIDEwIExET3MgYXMgbGRvWzAtN10sIGxkb1s5LTExXS4gVGhlIGlucHV0IHN1cHBseSBvZiB0aGVzZQorcmVndWxhdG9ycyBhcmUgcHJvdmlkZWQgdGhyb3VnaCBmb2xsb3dpbmcgcHJvcGVydGllczoKK3ZzdXAtc2QyLXN1cHBseTogSW5wdXQgc3VwcGx5IGZvciBTRDIuCit2c3VwLXNkMy1zdXBwbHk6IElucHV0IHN1cHBseSBmb3IgU0QzLgordnN1cC1zZDQtc3VwcGx5OiBJbnB1dCBzdXBwbHkgZm9yIFNENC4KK3ZzdXAtc2Q1LXN1cHBseTogSW5wdXQgc3VwcGx5IGZvciBTRDUuCit2aW4tbGRvMC1zdXBwbHk6IElucHV0IHN1cHBseSBmb3IgTERPMC4KK3Zpbi1sZG8xLTYtc3VwcGx5OiBJbnB1dCBzdXBwbHkgZm9yIExETzEgYW5kIExETzYuCit2aW4tbGRvMi01LTctc3VwcGx5OiBJbnB1dCBzdXBwbHkgZm9yIExETzIsIExETzUgYW5kIExETzcuCit2aW4tbGRvMy00LXN1cHBseTogSW5wdXQgc3VwcGx5IGZvciBMRE8zIGFuZCBMRE80LgordmluLWxkbzktMTAtc3VwcGx5OiBJbnB1dCBzdXBwbHkgZm9yIExETzkgYW5kIExETzEwLgordmluLWxkbzExLXN1cHBseTogSW5wdXQgc3VwcGx5IGZvciBMRE8xMS4KKworT3B0aW9uYWwgbm9kZXM6CistLS0tLS0tLS0tLS0tLQorLSByZWd1bGF0b3JzIDogTXVzdCBjb250YWluIGEgc3ViLW5vZGUgcGVyIHJlZ3VsYXRvciBmcm9tIHRoZSBsaXN0IGJlbG93LgorCSAgICAgICBFYWNoIHN1Yi1ub2RlIHNob3VsZCBjb250YWluIHRoZSBjb25zdHJhaW50cyBhbmQgaW5pdGlhbGl6YXRpb24KKwkgICAgICAgaW5mb3JtYXRpb24gZm9yIHRoYXQgcmVndWxhdG9yLiBTZWUgcmVndWxhdG9yLnR4dCBmb3IgYQorCSAgICAgICBkZXNjcmlwdGlvbiBvZiBzdGFuZGFyZCBwcm9wZXJ0aWVzIGZvciB0aGVzZSBzdWItbm9kZXMuCisJICAgICAgIEFkZGl0aW9uYWwgY3VzdG9tIHByb3BlcnRpZXMgIGFyZSBsaXN0ZWQgYmVsb3cuCisJICAgICAgIHNkWzAtNl0sIGxkb1swLTddLCBsZG9bOS0xMV0uCisKKwkgICAgICAgT3B0aW9uYWwgc3ViLW5vZGUgcHJvcGVydGllczoKKwkgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQlhbXMsZXh0LWNvbnRyb2w6IEV4dGVybmFsIGNvbnRyb2wgb2YgdGhlIHJhaWwuIFRoZSBvcHRpb24gb2YKKwkJCXRoaXMgcHJvcGVydGllcyB3aWxsIHRlbGwgd2hpY2ggZXh0ZXJuYWwgaW5wdXQgaXMKKwkJCWNvbnRyb2xsaW5nIHRoaXMgcmFpbC4gVmFsaWQgdmFsdWVzIGFyZSAwLCAxLCAyIGFkIDMuCisJCQkwOiBUaGVyZSBpcyBubyBleHRlcm5hbCBjb250cm9sIG9mIHRoaXMgcmFpbC4KKwkJCTE6IFJhaWwgaXMgY29udHJvbGxlZCBieSBFTkFCTEUxIGlucHV0IHBpbi4KKwkJCTI6IFJhaWwgaXMgY29udHJvbGxlZCBieSBFTkFCTEUyIGlucHV0IHBpbi4KKwkJCTM6IFJhaWwgaXMgY29udHJvbGxlZCBieSBFTkFCTEUzIGlucHV0IHBpbi4KKwkJYW1zLGVuYWJsZS10cmFja2luZzogRW5hYmxlIHRyYWNraW5nIHdpdGggU0QxLCBvbmx5IHN1cHBvcnRlZAorCQkJYnkgTERPMy4KKworRXhhbXBsZToKKy0tLS0tLS0KKwlhbXMzNzIyOiBhbXMzNzIyIHsKKwkJY29tcGF0aWJsZSA9ICJhbXMsYXMzNzIyIjsKKwkJcmVnID0gPDB4NDA+OworCQkuLi4KKworCQlyZWd1bGF0b3JzIHsKKwkJCXZzdXAtc2QyLXN1cHBseSA9IDwuLi4+OworCQkJLi4uCisKKwkJCXNkMCB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmRkX2NwdSI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8NzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxNDAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJCWFtcyxleHQtY29udHJvbCA9IDwyPjsKKwkJCX07CisKKwkJCXNkMSB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmRkX2NvcmUiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDcwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTQwMDAwMD47CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQlhbXMsZXh0LWNvbnRyb2wgPSA8MT47CisJCQl9OworCisJCQlzZDIgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gInZkZGlvX2RkciI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTM1MDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTM1MDAwMD47CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCXNkNCB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAiYXZkZC1oZG1pLXBleCI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTA1MDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTA1MDAwMD47CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCXNkNSB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmRkLTF2OCI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTgwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTgwMDAwMD47CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisJCQkuLi4uCisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvZGE5MjEwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvZGE5MjEwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWE5YjFmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9kYTkyMTAudHh0CkBAIC0wLDAgKzEsMjUgQEAKKyogRGlhbG9nIFNlbWljb25kdWN0b3IgREE5MjEwIFZvbHRhZ2UgUmVndWxhdG9yCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZToJbXVzdCBiZSAiZGxnLGRhOTIxMCIKKy0gcmVnOgkJdGhlIGkyYyBzbGF2ZSBhZGRyZXNzIG9mIHRoZSByZWd1bGF0b3IuIEl0IHNob3VsZCBiZSAweDY4LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIGludGVycnVwdHM6CWEgcmVmZXJlbmNlIHRvIHRoZSBEQTkyMTAgaW50ZXJydXB0LCBpZiBhdmFpbGFibGUuCisKK0FueSBzdGFuZGFyZCByZWd1bGF0b3IgcHJvcGVydGllcyBjYW4gYmUgdXNlZCB0byBjb25maWd1cmUgdGhlIHNpbmdsZSBkYTkyMTAKK0RDREMuCisKK0V4YW1wbGU6CisKKwlkYTkyMTBANjggeworCQljb21wYXRpYmxlID0gImRsZyxkYTkyMTAiOworCQlyZWcgPSA8MHg2OD47CisKKwkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8OTAwMDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTAwMDAwMD47CisJCXJlZ3VsYXRvci1ib290LW9uOworCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL2RhOTIxMS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL2RhOTIxMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYyMDQ5MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvZGE5MjExLnR4dApAQCAtMCwwICsxLDk2IEBACisqIERpYWxvZyBTZW1pY29uZHVjdG9yIERBOTIxMS9EQTkyMTMvREE5MjE1IFZvbHRhZ2UgUmVndWxhdG9yCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJkbGcsZGE5MjExIiBvciAiZGxnLGRhOTIxMyIgb3IgImRsZyxkYTkyMTUiCistIHJlZzogSTJDIHNsYXZlIGFkZHJlc3MsIHVzdWFsbHkgMHg2OC4KKy0gaW50ZXJydXB0czogdGhlIGludGVycnVwdCBvdXRwdXRzIG9mIHRoZSBjb250cm9sbGVyCistIHJlZ3VsYXRvcnM6IEEgbm9kZSB0aGF0IGhvdXNlcyBhIHN1Yi1ub2RlIGZvciBlYWNoIHJlZ3VsYXRvciB3aXRoaW4gdGhlCisgIGRldmljZS4gRWFjaCBzdWItbm9kZSBpcyBpZGVudGlmaWVkIHVzaW5nIHRoZSBub2RlJ3MgbmFtZSwgd2l0aCB2YWxpZAorICB2YWx1ZXMgbGlzdGVkIGJlbG93LiBUaGUgY29udGVudCBvZiBlYWNoIHN1Yi1ub2RlIGlzIGRlZmluZWQgYnkgdGhlCisgIHN0YW5kYXJkIGJpbmRpbmcgZm9yIHJlZ3VsYXRvcnM7IHNlZSByZWd1bGF0b3IudHh0LgorICBCVUNLQSBhbmQgQlVDS0IuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGVuYWJsZS1ncGlvczogcGxhdGZvcm0gZ3BpbyBmb3IgY29udHJvbCBvZiBCVUNLQS9CVUNLQi4KKy0gQW55IG9wdGlvbmFsIHByb3BlcnR5IGRlZmluZWQgaW4gcmVndWxhdG9yLnR4dAorCitFeGFtcGxlIDEpIERBOTIxMQorCisJcG1pYzogZGE5MjExQDY4IHsKKwkJY29tcGF0aWJsZSA9ICJkbGcsZGE5MjExIjsKKwkJcmVnID0gPDB4Njg+OworCQlpbnRlcnJ1cHRzID0gPDMgMjc+OworCisJCXJlZ3VsYXRvcnMgeworCQkJQlVDS0EgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gIlZCVUNLQSI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8IDMwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTU3MDAwMD47CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb2FtcCAJPSA8MjAwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb2FtcCAJPSA8NTAwMDAwMD47CisJCQkJZW5hYmxlLWdwaW9zID0gPCZncGlvIDI3IDA+OworCQkJfTsKKwkJCUJVQ0tCIHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJWQlVDS0IiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPCAzMDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE1NzAwMDA+OworCQkJCXJlZ3VsYXRvci1taW4tbWljcm9hbXAgCT0gPDIwMDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm9hbXAgCT0gPDUwMDAwMDA+OworCQkJCWVuYWJsZS1ncGlvcyA9IDwmZ3BpbyAxNyAwPjsKKwkJCX07CisJCX07CisJfTsKKworRXhhbXBsZSAyKSBEQTkyMTMKKwlwbWljOiBkYTkyMTNANjggeworCQljb21wYXRpYmxlID0gImRsZyxkYTkyMTMiOworCQlyZWcgPSA8MHg2OD47CisJCWludGVycnVwdHMgPSA8MyAyNz47CisKKwkJcmVndWxhdG9ycyB7CisJCQlCVUNLQSB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAiVkJVQ0tBIjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwgMzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxNTcwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3JvYW1wIAk9IDwzMDAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3JvYW1wIAk9IDw2MDAwMDAwPjsKKwkJCQllbmFibGUtZ3Bpb3MgPSA8JmdwaW8gMjcgMD47CisJCQl9OworCQkJQlVDS0IgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gIlZCVUNLQiI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8IDMwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTU3MDAwMD47CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb2FtcCAJPSA8MzAwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb2FtcCAJPSA8NjAwMDAwMD47CisJCQkJZW5hYmxlLWdwaW9zID0gPCZncGlvIDE3IDA+OworCQkJfTsKKwkJfTsKKwl9OworCisKK0V4YW1wbGUgMykgREE5MjE1CisJcG1pYzogZGE5MjE1QDY4IHsKKwkJY29tcGF0aWJsZSA9ICJkbGcsZGE5MjE1IjsKKwkJcmVnID0gPDB4Njg+OworCQlpbnRlcnJ1cHRzID0gPDMgMjc+OworCisJCXJlZ3VsYXRvcnMgeworCQkJQlVDS0EgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gIlZCVUNLQSI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8IDMwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTU3MDAwMD47CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb2FtcCAJPSA8NDAwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb2FtcCAJPSA8NzAwMDAwMD47CisJCQkJZW5hYmxlLWdwaW9zID0gPCZncGlvIDI3IDA+OworCQkJfTsKKwkJCUJVQ0tCIHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJWQlVDS0IiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPCAzMDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE1NzAwMDA+OworCQkJCXJlZ3VsYXRvci1taW4tbWljcm9hbXAgCT0gPDQwMDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm9hbXAgCT0gPDcwMDAwMDA+OworCQkJCWVuYWJsZS1ncGlvcyA9IDwmZ3BpbyAxNyAwPjsKKwkJCX07CisJCX07CisJfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9mYW41MzU1NS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL2ZhbjUzNTU1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGEzZjJjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9mYW41MzU1NS50eHQKQEAgLTAsMCArMSwyMyBAQAorQmluZGluZyBmb3IgRmFpcmNoaWxkIEZBTjUzNTU1IHJlZ3VsYXRvcnMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiBvbmUgb2YgImZjcyxmYW41MzU1NSIsICJzaWxlcmd5LHN5cjgyNyIsICJzaWxlcmd5LHN5cjgyOCIKKyAgLSByZWc6IEkyQyBhZGRyZXNzCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgIC0gZmNzLHN1c3BlbmQtdm9sdGFnZS1zZWxlY3RvcjogZGVjbGFyZSB3aGljaCBvZiB0aGUgdHdvIGF2YWlsYWJsZQorCQl2b2x0YWdlIHNlbGVjdG9yIHJlZ2lzdGVycyBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIHN1c3BlbmQKKwkJdm9sdGFnZS4gVGhlIG90aGVyIG9uZSBpcyB1c2VkIGZvciB0aGUgcnVudGltZSB2b2x0YWdlIHNldHRpbmcKKwkJUG9zc2libGUgdmFsdWVzIGFyZSBlaXRoZXIgPDA+IG9yIDwxPgorICAtIHZpbi1zdXBwbHk6IHJlZ3VsYXRvciBzdXBwbHlpbmcgdGhlIHZpbiBwaW4KKworRXhhbXBsZToKKworCXJlZ3VsYXRvckA0MCB7CisJCWNvbXBhdGlibGUgPSAiZmNzLGZhbjUzNTU1IjsKKwkJcmVndWxhdG9yLW5hbWUgPSAiZmFuNTM1NTUiOworCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMDAwMDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTgwMDAwMD47CisJCXZpbi1zdXBwbHkgPSA8JnBhcmVudF9yZWc+OworCQlmY3Msc3VzcGVuZC12b2x0YWdlLXNlbGVjdG9yID0gPDE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL2ZpeGVkLXJlZ3VsYXRvci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL2ZpeGVkLXJlZ3VsYXRvci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZhZTQxZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvZml4ZWQtcmVndWxhdG9yLnR4dApAQCAtMCwwICsxLDM0IEBACitGaXhlZCBWb2x0YWdlIHJlZ3VsYXRvcnMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogTXVzdCBiZSAicmVndWxhdG9yLWZpeGVkIjsKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gZ3BpbzogZ3BpbyB0byB1c2UgZm9yIGVuYWJsZSBjb250cm9sCistIHN0YXJ0dXAtZGVsYXktdXM6IHN0YXJ0dXAgdGltZSBpbiBtaWNyb3NlY29uZHMKKy0gZW5hYmxlLWFjdGl2ZS1oaWdoOiBQb2xhcml0eSBvZiBHUElPIGlzIEFjdGl2ZSBoaWdoCitJZiB0aGlzIHByb3BlcnR5IGlzIG1pc3NpbmcsIHRoZSBkZWZhdWx0IGFzc3VtZWQgaXMgQWN0aXZlIGxvdy4KKy0gZ3Bpby1vcGVuLWRyYWluOiBHUElPIGlzIG9wZW4gZHJhaW4gdHlwZS4KKyAgSWYgdGhpcyBwcm9wZXJ0eSBpcyBtaXNzaW5nIHRoZW4gZGVmYXVsdCBhc3N1bXB0aW9uIGlzIGZhbHNlLgorLXZpbi1zdXBwbHk6IElucHV0IHN1cHBseSBuYW1lLgorCitBbnkgcHJvcGVydHkgZGVmaW5lZCBhcyBwYXJ0IG9mIHRoZSBjb3JlIHJlZ3VsYXRvcgorYmluZGluZywgZGVmaW5lZCBpbiByZWd1bGF0b3IudHh0LCBjYW4gYWxzbyBiZSB1c2VkLgorSG93ZXZlciBhIGZpeGVkIHZvbHRhZ2UgcmVndWxhdG9yIGlzIGV4cGVjdGVkIHRvIGhhdmUgdGhlCityZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCBhbmQgcmVndWxhdG9yLW1heC1taWNyb3ZvbHQKK3RvIGJlIHRoZSBzYW1lLgorCitFeGFtcGxlOgorCisJYWJjOiBmaXhlZHJlZ3VsYXRvckAwIHsKKwkJY29tcGF0aWJsZSA9ICJyZWd1bGF0b3ItZml4ZWQiOworCQlyZWd1bGF0b3ItbmFtZSA9ICJmaXhlZC1zdXBwbHkiOworCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTgwMDAwMD47CisJCWdwaW8gPSA8JmdwaW8xIDE2IDA+OworCQlzdGFydHVwLWRlbGF5LXVzID0gPDcwMDAwPjsKKwkJZW5hYmxlLWFjdGl2ZS1oaWdoOworCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJZ3Bpby1vcGVuLWRyYWluOworCQl2aW4tc3VwcGx5ID0gPCZwYXJlbnRfcmVnPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9ncGlvLXJlZ3VsYXRvci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL2dwaW8tcmVndWxhdG9yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWNhYzFlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9ncGlvLXJlZ3VsYXRvci50eHQKQEAgLTAsMCArMSw0MSBAQAorR1BJTyBjb250cm9sbGVkIHJlZ3VsYXRvcnMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZQkJOiBNdXN0IGJlICJyZWd1bGF0b3ItZ3BpbyIuCistIHN0YXRlcwkJOiBTZWxlY3Rpb24gb2YgYXZhaWxhYmxlIHZvbHRhZ2VzIGFuZCBHUElPIGNvbmZpZ3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRoZXJlIGFyZSBubyBzdGF0ZXMsIHRoZW4gdXNlIGEgZml4ZWQgcmVndWxhdG9yCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGVuYWJsZS1ncGlvCQk6IEdQSU8gdG8gdXNlIHRvIGVuYWJsZS9kaXNhYmxlIHRoZSByZWd1bGF0b3IuCistIGdwaW9zCQkJOiBHUElPIGdyb3VwIHVzZWQgdG8gY29udHJvbCB2b2x0YWdlLgorLSBncGlvcy1zdGF0ZXMJCTogZ3Bpb3MgcGluJ3MgaW5pdGlhbCBzdGF0ZXMgYXJyYXkuIDA6IExPVywgMTogSElHSC4KKwkJCSAgZGVmdWFsdCBpcyBMT1cgaWYgbm90aGluZyBpcyBzcGVjaWZpZWQuCistIHN0YXJ0dXAtZGVsYXktdXMJOiBTdGFydHVwIHRpbWUgaW4gbWljcm9zZWNvbmRzLgorLSBlbmFibGUtYWN0aXZlLWhpZ2gJOiBQb2xhcml0eSBvZiBHUElPIGlzIGFjdGl2ZSBoaWdoIChkZWZhdWx0IGlzIGxvdykuCistIHJlZ3VsYXRvci10eXBlCTogU3BlY2lmaWVzIHdoYXQgaXMgYmVpbmcgcmVndWxhdGVkLCBtdXN0IGJlIGVpdGhlcgorCQkJICAidm9sdGFnZSIgb3IgImN1cnJlbnQiLCBkZWZhdWx0cyB0byBjdXJyZW50LgorCitBbnkgcHJvcGVydHkgZGVmaW5lZCBhcyBwYXJ0IG9mIHRoZSBjb3JlIHJlZ3VsYXRvciBiaW5kaW5nIGRlZmluZWQgaW4KK3JlZ3VsYXRvci50eHQgY2FuIGFsc28gYmUgdXNlZC4KKworRXhhbXBsZToKKworCW1tY2l2OiBncGlvLXJlZ3VsYXRvciB7CisJCWNvbXBhdGlibGUgPSAicmVndWxhdG9yLWdwaW8iOworCisJCXJlZ3VsYXRvci1uYW1lID0gIm1tY2ktZ3Bpby1zdXBwbHkiOworCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MjYwMDAwMD47CisJCXJlZ3VsYXRvci1ib290LW9uOworCisJCWVuYWJsZS1ncGlvID0gPCZncGlvMCAyMyAweDQ+OworCQlncGlvcyA9IDwmZ3BpbzAgMjQgMHg0CisJCQkgJmdwaW8wIDI1IDB4ND47CisJCXN0YXRlcyA9IDwxODAwMDAwIDB4MworCQkJICAyMjAwMDAwIDB4MgorCQkJICAyNjAwMDAwIDB4MQorCQkJICAyOTAwMDAwIDB4MD47CisKKwkJc3RhcnR1cC1kZWxheS11cyA9IDwxMDAwMDA+OworCQllbmFibGUtYWN0aXZlLWhpZ2g7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvaXNsOTMwNS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL2lzbDkzMDUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZTdjOWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL2lzbDkzMDUudHh0CkBAIC0wLDAgKzEsMzYgQEAKK0ludGVyc2lsIElTTDkzMDUvSVNMOTMwNUggdm9sdGFnZSByZWd1bGF0b3IKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiAiaXNpbCxpc2w5MzA1IiBvciAiaXNpbCxpc2w5MzA1aCIKKy0gcmVnOiBJMkMgc2xhdmUgYWRkcmVzcywgdXN1YWxseSAweDY4LgorLSByZWd1bGF0b3JzOiBBIG5vZGUgdGhhdCBob3VzZXMgYSBzdWItbm9kZSBmb3IgZWFjaCByZWd1bGF0b3Igd2l0aGluIHRoZQorICBkZXZpY2UuIEVhY2ggc3ViLW5vZGUgaXMgaWRlbnRpZmllZCB1c2luZyB0aGUgbm9kZSdzIG5hbWUsIHdpdGggdmFsaWQKKyAgdmFsdWVzIGJlaW5nICJkY2QxIiwgImRjZDIiLCAibGRvMSIgYW5kICJsZG8yIi4gVGhlIGNvbnRlbnQgb2YgZWFjaCBzdWItbm9kZQorICBpcyBkZWZpbmVkIGJ5IHRoZSBzdGFuZGFyZCBiaW5kaW5nIGZvciByZWd1bGF0b3JzOyBzZWUgcmVndWxhdG9yLnR4dC4KKy0gVklORENEMS1zdXBwbHk6IEEgcGhhbmRsZSB0byBhIHJlZ3VsYXRvciBub2RlIHN1cHBseWluZyBWSU5EQ0QxLgorICBWSU5EQ0QyLXN1cHBseTogQSBwaGFuZGxlIHRvIGEgcmVndWxhdG9yIG5vZGUgc3VwcGx5aW5nIFZJTkRDRDIuCisgIFZJTkxETzEtc3VwcGx5OiBBIHBoYW5kbGUgdG8gYSByZWd1bGF0b3Igbm9kZSBzdXBwbHlpbmcgVklOTERPMS4KKyAgVklOTERPMi1zdXBwbHk6IEEgcGhhbmRsZSB0byBhIHJlZ3VsYXRvciBub2RlIHN1cHBseWluZyBWSU5MRE8yLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBQZXItcmVndWxhdG9yIG9wdGlvbmFsIHByb3BlcnRpZXMgYXJlIGRlZmluZWQgaW4gcmVndWxhdG9yLnR4dAorCitFeGFtcGxlCisKKwlwbWljOiBpc2w5MzA1QDY4IHsKKwkJY29tcGF0aWJsZSA9ICJpc2lsLGlzbDkzMDUiOworCQlyZWcgPSA8MHg2OD47CisKKwkJVklORENEMS1zdXBwbHkgPSA8JnN5c3RlbV9wb3dlcj47CisJCVZJTkRDRDItc3VwcGx5ID0gPCZzeXN0ZW1fcG93ZXI+OworCQlWSU5MRE8xLXN1cHBseSA9IDwmc3lzdGVtX3Bvd2VyPjsKKwkJVklOTERPMi1zdXBwbHkgPSA8JnN5c3RlbV9wb3dlcj47CisKKwkJcmVndWxhdG9ycyB7CisJCQlkY2QxIHsKKwkJCSAgICAgICAgcmVndWxhdG9yLW5hbWUgPSAiVkREX0RTUCI7CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvbHA4NzJ4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvbHA4NzJ4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODE4MzE4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9scDg3MngudHh0CkBAIC0wLDAgKzEsMTYwIEBACitCaW5kaW5nIGZvciBUSS9OYXRpb25hbCBTZW1pY29uZHVjdG9yIExQODcyeCBEcml2ZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiAidGksbHA4NzIwIiBvciAidGksbHA4NzI1IgorICAtIHJlZzogSTJDIHNsYXZlIGFkZHJlc3MuIDB4N2QgPSBMUDg3MjAsIDB4N2EgPSBMUDg3MjUKKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAgLSB0aSxnZW5lcmFsLWNvbmZpZzogdGhlIHZhbHVlIG9mIExQODcyWF9HRU5FUkFMX0NGRyByZWdpc3RlciAodTgpCisgICAgKExQODcyMCkKKyAgICBiaXRbMl06IEJVQ0sgb3V0cHV0IHZvbHRhZ2UgY29udHJvbCBieSBleHRlcm5hbCBEVlMgcGluIG9yIHJlZ2lzdGVyCisgICAgICAgICAgICAxID0gZXh0ZXJuYWwgcGluLCAwID0gYml0NyBvZiByZWdpc3RlciAwOGgKKyAgICBiaXRbMV06IHNsZWVwIGNvbnRyb2wgYnkgZXh0ZXJuYWwgRFZTIHBpbiBvciByZWdpc3RlcgorICAgICAgICAgICAgMSA9IGV4dGVybmFsIHBpbiwgMCA9IGJpdDYgb2YgcmVnaXN0ZXIgMDhoCisgICAgYml0WzBdOiB0aW1lIHN0ZXAgdW5pdCh1c2VjKS4gMSA9IDI1LCAwID0gNTAKKworICAgIChMUDg3MjUpCisgICAgYml0Wzc6Nl06IHRpbWUgc3RlcCB1bml0KHVzZWMpLiAwMCA9IDMyLCAwMSA9IDY0LCAxMCA9IDEyOCwgMTEgPSAyNTYKKyAgICBiaXRbNF06ICAgQlVDSzIgZW5hYmxlIGNvbnRyb2wuIDEgPSBlbmFibGUsIDAgPSBkaXNhYmxlCisgICAgYml0WzNdOiAgIEJVQ0syIG91dHB1dCB2b2x0YWdlIHJlZ2lzdGVyIGFkZHJlc3MuIDEgPSAwQWgsIDAgPSAwQmgKKyAgICBiaXRbMl06ICAgQlVDSzEgb3V0cHV0IHZvbHRhZ2UgY29udHJvbCBieSBleHRlcm5hbCBEVlMgcGluIG9yIHJlZ2lzdGVyCisgICAgICAgICAgICAgIDEgPSByZWdpc3RlciAwOGgsIDAgPSBEVlMKKyAgICBiaXRbMV06ICAgTERPIHNsZWVwIGNvbnRyb2wuIDEgPSBzbGVlcCBtb2RlLCAwID0gbm9ybWFsCisgICAgYml0WzBdOiAgIEJVQ0sxIGVuYWJsZSBjb250cm9sLCAxID0gZW5hYmxlLCAwID0gZGlzYWJsZQorCisgICAgRm9yIG1vcmUgZGV0YWlscywgcGxlYXNlIHNlZSB0aGUgZGF0YXNoZWV0LgorCisgIC0gdGksdXBkYXRlLWNvbmZpZzogZGVmaW5lIGl0IHdoZW4gTFA4NzJYX0dFTkVSQUxfQ0ZHIHJlZ2lzdGVyIHNob3VsZCBiZSBzZXQKKyAgLSB0aSxkdnMtZ3BpbzogR1BJTyBzcGVjaWZpZXIgZm9yIGV4dGVybmFsIERWUyBwaW4gY29udHJvbCBvZiBMUDg3MnggZGV2aWNlcy4KKyAgLSB0aSxkdnMtdnNlbDogRFZTIHNlbGVjdG9yLiAwID0gU0VMX1YxLCAxID0gU0VMX1YyLgorICAtIHRpLGR2cy1zdGF0ZTogaW5pdGlhbCBEVlMgcGluIHN0YXRlLiAwID0gRFZTX0xPVywgMSA9IERWU19ISUdILgorCisgIFN1YiBub2RlcyBmb3IgcmVndWxhdG9yX2luaXRfZGF0YQorICAgIExQODcyMCBoYXMgbWF4aW11bSA2IG5vZGVzLiAoY2hpbGQgbmFtZTogbGRvMSB+IDUgYW5kIGJ1Y2spCisgICAgTFA4NzI1IGhhcyBtYXhpbXVtIDkgbm9kZXMuIChjaGlsZCBuYW1lOiBsZG8xIH4gNSwgbGlsbzEsMiBhbmQgYnVjazEsMikKKyAgICBGb3IgbW9yZSBkZXRhaWxzLCBwbGVhc2Ugc2VlIHRoZSBmb2xsb3dpbmcgYmluZGluZyBkb2N1bWVudC4KKyAgICAoRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9yZWd1bGF0b3IudHh0KQorCitEYXRhc2hlZXQKKyAgLSBMUDg3MjA6IGh0dHA6Ly93d3cudGkuY29tL2xpdC9kcy9zeW1saW5rL2xwODcyMC5wZGYKKyAgLSBMUDg3MjU6IGh0dHA6Ly93d3cudGkuY29tL2xpdC9kcy9zeW1saW5rL2xwODcyNS5wZGYKKworRXhhbXBsZSAxKSBMUDg3MjAKKworbHA4NzIwQDdkIHsKKwljb21wYXRpYmxlID0gInRpLGxwODcyMCI7CisJcmVnID0gPDB4N2Q+OworCisJLyogZXh0ZXJuYWwgRFZTIHBpbiB1c2VkLCB0aW1lc3RlcCBpcyAyNXVzZWMgKi8KKwl0aSxnZW5lcmFsLWNvbmZpZyA9IC9iaXRzLyA4IDwweDAzPjsKKwl0aSx1cGRhdGUtY29uZmlnOworCisJLyoKKwkgKiBUaGUgZHZzLWdwaW8gZGVwZW5kcyBvbiB0aGUgcHJvY2Vzc29yIGVudmlyb25tZW50LgorCSAqIEZvciBleGFtcGxlLCBmb2xsb3dpbmcgR1BJTyBzcGVjaWZpZXIgbWVhbnMgR1BJTzEzNCBpbiBPTUFQNC4KKwkgKi8KKwl0aSxkdnMtZ3BpbyA9IDwmZ3BpbzUgNiAwPjsKKwl0aSxkdnMtdnNlbCA9IC9iaXRzLyA4IDwxPjsJCS8qIFNFTF9WMiAqLworCXRpLGR2cy1zdGF0ZSA9IC9iaXRzLyA4IDwxPjsJCS8qIERWU19ISUdIICovCisKKwl2YWY6IGxkbzEgeworCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMjAwMDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJfTsKKworCXZtbWM6IGxkbzIgeworCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMjAwMDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJfTsKKworCXZjYW1faW86IGxkbzMgeworCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMjAwMDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCXJlZ3VsYXRvci1ib290LW9uOworCX07CisKKwl2Y2FtX2NvcmU6IGxkbzQgeworCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw4MDAwMDA+OworCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwyODUwMDAwPjsKKwkJcmVndWxhdG9yLWJvb3Qtb247CisJfTsKKworCXZjYW06IGxkbzUgeworCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMjAwMDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJfTsKKworCXZjYzogYnVjayB7CisJCXJlZ3VsYXRvci1uYW1lID0gIlZCVUNLIjsKKwkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8ODAwMDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MjMwMDAwMD47CisJfTsKK307CisKK0V4YW1wbGUgMikgTFA4NzI1CisKK2xwODcyNUA3YSB7CisJY29tcGF0aWJsZSA9ICJ0aSxscDg3MjUiOworCXJlZyA9IDwweDdhPjsKKworCS8qIEVuYWJsZSBCVUNLMSwyLCBubyBEVlMsIG5vcm1hbCBMRE8gbW9kZSwgdGltZXN0ZXAgaXMgMjU2dXNlYyAqLworCXRpLGdlbmVyYWwtY29uZmlnID0gL2JpdHMvIDggPDB4ZGQ+OworCXRpLHVwZGF0ZS1jb25maWc7CisKKwl2Y2FtX2lvOiBsZG8xIHsKKwkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTIwMDAwMD47CisJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAwMDA+OworCX07CisKKwl2Y2FtX2NvcmU6IGxkbzIgeworCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMjAwMDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJfTsKKworCXZjYW06IGxkbzMgeworCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMjAwMDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJfTsKKworCXZjbW1iX2lvOiBsZG80IHsKKwkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTIwMDAwMD47CisJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwl9OworCisJdmNtbWJfY29yZTogbGRvNSB7CisJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDEyMDAwMDA+OworCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJcmVndWxhdG9yLWJvb3Qtb247CisJfTsKKworCXZhdXgxOiBsaWxvMSB7CisJCXJlZ3VsYXRvci1uYW1lID0gIlZBVVgxIjsKKwkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8ODAwMDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJfTsKKworCXZhdXgyOiBsaWxvMiB7CisJCXJlZ3VsYXRvci1uYW1lID0gIlZBVVgyIjsKKwkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8ODAwMDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJfTsKKworCXZjYzE6IGJ1Y2sxIHsKKwkJcmVndWxhdG9yLW5hbWUgPSAiVkJVQ0sxIjsKKwkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8ODAwMDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzAwMDAwMD47CisJCXJlZ3VsYXRvci1taW4tbWljcm9hbXAgID0gPDQ2MDAwMD47CisJCXJlZ3VsYXRvci1tYXgtbWljcm9hbXAgID0gPDEzNzAwMDA+OworCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwl9OworCisJdmNjMjogYnVjazIgeworCQlyZWd1bGF0b3ItbmFtZSA9ICJWQlVDSzIiOworCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw4MDAwMDA+OworCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMDAwMDAwPjsKKwkJcmVndWxhdG9yLW1pbi1taWNyb2FtcCAgPSA8NDYwMDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb2FtcCAgPSA8MTM3MDAwMD47CisJCXJlZ3VsYXRvci1ib290LW9uOworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9sdGMzNTg5LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvbHRjMzU4OS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODAxMDUzMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvbHRjMzU4OS50eHQKQEAgLTAsMCArMSw5OSBAQAorTGluZWFyIFRlY2hub2xvZ3kgTFRDMzU4OSwgTFRDMzU4OS0xLCBhbmQgTFRDMzU4OS0yIDgtb3V0cHV0IHJlZ3VsYXRvcnMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImxsdGMsbHRjMzU4OSIsICJsbHRjLGx0YzM1ODktMSIgb3IgImxsdGMsbHRjMzU4OS0yIgorLSByZWc6IEkyQyBzbGF2ZSBhZGRyZXNzCisKK1JlcXVpcmVkIGNoaWxkIG5vZGU6CistIHJlZ3VsYXRvcnM6IENvbnRhaW5zIGVpZ2h0IHJlZ3VsYXRvciBjaGlsZCBub2RlcyBzdzEsIHN3Miwgc3czLCBiYi1vdXQsCisgIGxkbzEsIGxkbzIsIGxkbzMsIGFuZCBsZG80LCBzcGVjaWZ5aW5nIHRoZSBpbml0aWFsaXphdGlvbiBkYXRhIGFzCisgIGRvY3VtZW50ZWQgaW4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9yZWd1bGF0b3IudHh0LgorCitFYWNoIHJlZ3VsYXRvciBpcyBkZWZpbmVkIHVzaW5nIHRoZSBzdGFuZGFyZCBiaW5kaW5nIGZvciByZWd1bGF0b3JzLiBUaGUKK25vZGVzIGZvciBzdzEsIHN3Miwgc3czLCBiYi1vdXQsIGxkbzEsIGFuZCBsZG8yIGFkZGl0aW9uYWxseSBuZWVkIHRvIHNwZWNpZnkKK3RoZSByZXNpc3RvciB2YWx1ZXMgb2YgdGhlaXIgZXh0ZXJuYWwgZmVlZGJhY2sgdm9sdGFnZSBkaXZpZGVyczoKKworUmVxdWlyZWQgcHJvcGVydGllcyAobm90IG9uIGxkbzMsIGxkbzQpOgorLSBsbHRjLGZiLXZvbHRhZ2UtZGl2aWRlcjogQW4gYXJyYXkgb2YgdHdvIGludGVnZXJzIGNvbnRhaW5pbmcgdGhlIHJlc2lzdG9yCisgIHZhbHVlcyBSMSBhbmQgUjIgb2YgdGhlIGZlZWRiYWNrIHZvbHRhZ2UgZGl2aWRlciBpbiBvaG1zLgorCitSZWd1bGF0b3JzIHN3MSwgc3cyLCBzdzMsIGFuZCBsZG8yIGNhbiByZWd1bGF0ZSB0aGUgZmVlZGJhY2sgcmVmZXJlbmNlIGZyb20KKzAuMzYyNSBWIHRvIDAuNzUgViBpbiAxMi41IG1WIHN0ZXBzLiBUaGUgb3V0cHV0IHZvbHRhZ2UgdGh1cyByYW5nZXMgYmV0d2VlbgorMC4zNjI1ICogKDEgKyBSMS9SMikgViBhbmQgMC43NSAqICgxICsgUjEvUjIpIFYuIFJlZ3VsYXRvcnMgYmItb3V0IGFuZCBsZG8xCitoYXZlIGEgZml4ZWQgMC44IFYgcmVmZXJlbmNlIGFuZCB0aHVzIG91dHB1dCAwLjggKiAoMSArIFIxL1IyKSBWLiBUaGUgbGRvMworcmVndWxhdG9yIGlzIGZpeGVkIHRvIDEuOCBWIG9uIExUQzM1ODkgYW5kIHRvIDIuOCBWIG9uIExUQzM1ODktMSwyLiBUaGUgbGRvNAorcmVndWxhdG9yIGNhbiBvdXRwdXQgYmV0d2VlbiAxLjggViBhbmQgMy4zIFYgb24gTFRDMzU4OSBhbmQgYmV0d2VlbiAxLjIgVgorYW5kIDMuMiBWIG9uIExUQzM1ODktMSwyIGluIGZvdXIgc3RlcHMuIFRoZSBsZG8xIHN0YW5kYnkgcmVndWxhdG9yIGNhbiBub3QKK2JlIGRpc2FibGVkIGFuZCB0aHVzIHNob3VsZCBoYXZlIHRoZSByZWd1bGF0b3ItYWx3YXlzLW9uIHByb3BlcnR5IHNldC4KKworRXhhbXBsZToKKworCWx0YzM1ODk6IHBtaWNAMzQgeworCQljb21wYXRpYmxlID0gImxsdGMsbHRjMzU4OS0xIjsKKwkJcmVnID0gPDB4MzQ+OworCisJCXJlZ3VsYXRvcnMgeworCQkJc3cxX3JlZzogc3cxIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw1OTE5MzA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDEyMjQ2NzE+OworCQkJCWxsdGMsZmItdm9sdGFnZS1kaXZpZGVyID0gPDEwMDAwMCAxNTgwMDA+OworCQkJCXJlZ3VsYXRvci1yYW1wLWRlbGF5ID0gPDcwMDA+OworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQlzdzJfcmVnOiBzdzIgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDcwNDEyMz47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTQ1NjgwMz47CisJCQkJbGx0YyxmYi12b2x0YWdlLWRpdmlkZXIgPSA8MTgwMDAwIDE5MTAwMD47CisJCQkJcmVndWxhdG9yLXJhbXAtZGVsYXkgPSA8NzAwMD47CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCXN3M19yZWc6IHN3MyB7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTM0MTI1MD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8Mjc3NTAwMD47CisJCQkJbGx0YyxmYi12b2x0YWdlLWRpdmlkZXIgPSA8MjcwMDAwIDEwMDAwMD47CisJCQkJcmVndWxhdG9yLXJhbXAtZGVsYXkgPSA8NzAwMD47CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCWJiX291dF9yZWc6IGJiLW91dCB7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MzM4NzM0MT47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzM4NzM0MT47CisJCQkJbGx0YyxmYi12b2x0YWdlLWRpdmlkZXIgPSA8NTExMDAwIDE1ODAwMD47CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCWxkbzFfcmVnOiBsZG8xIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMzA2MzI5PjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxMzA2MzI5PjsKKwkJCQlsbHRjLGZiLXZvbHRhZ2UtZGl2aWRlciA9IDwxMDAwMDAgMTU4MDAwPjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJbGRvMl9yZWc6IGxkbzIgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDcwNDEyMz47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTQ1NjgwNj47CisJCQkJbGx0YyxmYi12b2x0YWdlLWRpdmlkZXIgPSA8MTgwMDAwIDE5MTAwMD47CisJCQkJcmVndWxhdG9yLXJhbXAtZGVsYXkgPSA8NzAwMD47CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCWxkbzNfcmVnOiBsZG8zIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwyODAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwyODAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCX07CisKKwkJCWxkbzRfcmVnOiBsZG80IHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMjAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMjAwMDAwPjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvbWF4MTU4Ni1yZWd1bGF0b3IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9tYXgxNTg2LXJlZ3VsYXRvci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1MGMxNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvbWF4MTU4Ni1yZWd1bGF0b3IudHh0CkBAIC0wLDAgKzEsMjggQEAKK01heGltIE1BWDE1ODYgdm9sdGFnZSByZWd1bGF0b3IKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogbXVzdCBiZSAibWF4aW0sbWF4MTU4NiIKKy0gcmVnOiBJMkMgc2xhdmUgYWRkcmVzcywgdXN1YWxseSAweDE0CistIHYzLWdhaW46IGludGVnZXIgc3BlY2lmeWluZyB0aGUgVjMgZ2FpbiBhcyBwZXIgZGF0YXNoZWV0CisgICAgICAgICAgICgxICsgUjI0L1IyNSArIFIyNC8xODUuNWtPaG0pCistIGFueSByZXF1aXJlZCBnZW5lcmljIHByb3BlcnRpZXMgZGVmaW5lZCBpbiByZWd1bGF0b3IudHh0CisKK0V4YW1wbGU6CisKKwlpMmNfbWFzdGVyIHsKKwkJbWF4MTU4NkAxNCB7CisJCQljb21wYXRpYmxlID0gIm1heGltLG1heDE1ODYiOworCQkJcmVnID0gPDB4MTQ+OworCQkJdjMtZ2FpbiA9IDwxMDAwMDAwPjsKKworCQkJcmVndWxhdG9ycyB7CisJCQkJdmNjX2NvcmU6IHYzIHsKKwkJCQkJcmVndWxhdG9yLW5hbWUgPSAidmNjX2NvcmUiOworCQkJCQlyZWd1bGF0b3ItY29tcGF0aWJsZSA9ICJPdXRwdXRfVjMiOworCQkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMDAwMDAwPjsKKwkJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTcwNTAwMD47CisJCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQkJfTsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvbWF4Nzc2ODYudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9tYXg3NzY4Ni50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRkZWQ2NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvbWF4Nzc2ODYudHh0CkBAIC0wLDAgKzEsNzEgQEAKK0JpbmRpbmcgZm9yIE1heGltIE1BWDc3Njg2IHJlZ3VsYXRvcnMKKworVGhpcyBpcyBhIHBhcnQgb2YgdGhlIGRldmljZSB0cmVlIGJpbmRpbmdzIG9mIE1BWDc3Njg2IG11bHRpLWZ1bmN0aW9uIGRldmljZS4KK01vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIC4uL21mZC9tYXg3NzY4Ni50eHQgZmlsZS4KKworVGhlIE1BWDc3Njg2IFBNSUMgaGFzIDkgaGlnaC1lZmZpY2llbmN5IEJ1Y2sgYW5kIDI2IExvdy1Ecm9wT3V0IChMRE8pCityZWd1bGF0b3JzIHRoYXQgY2FuIGJlIGNvbnRyb2xsZWQgb3ZlciBJMkMuCisKK0ZvbGxvd2luZyBwcm9wZXJ0aWVzIHNob3VsZCBiZSBwcmVzZW50IGluIG1haW4gZGV2aWNlIG5vZGUgb2YgdGhlIE1GRCBjaGlwLgorCitPcHRpb25hbCBub2RlOgorLSB2b2x0YWdlLXJlZ3VsYXRvcnMgOiBUaGUgcmVndWxhdG9ycyBvZiBtYXg3NzY4NiBoYXZlIHRvIGJlIGluc3RhbnRpYXRlZAorICB1bmRlciBzdWJub2RlIG5hbWVkICJ2b2x0YWdlLXJlZ3VsYXRvcnMiIHVzaW5nIHRoZSBmb2xsb3dpbmcgZm9ybWF0LgorCisJcmVndWxhdG9yX25hbWUgeworCQlyZWd1bGF0b3ItY29tcGF0aWJsZSA9IExET24vQlVDS24KKwkJc3RhbmRhcmQgcmVndWxhdG9yIGNvbnN0cmFpbnRzLi4uLgorCX07CisJcmVmZXIgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9yZWd1bGF0b3IudHh0CisKKyAgVGhlIHJlZ3VsYXRvciBub2RlJ3MgbmFtZSBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZwordG8gZ2V0IG1hdGNoZWQgd2l0aCB0aGVpciBoYXJkd2FyZSBjb3VudGVycGFydHMgYXMgZm9sbG93OgorCisJLUxET24gCToJZm9yIExET3MsIHdoZXJlIG4gY2FuIGxpZSBpbiByYW5nZSAxIHRvIDI2LgorCQkJZXhhbXBsZTogTERPMSwgTERPMiwgTERPMjYuCisJLUJVQ0tuIAk6CWZvciBCVUNLcywgd2hlcmUgbiBjYW4gbGllIGluIHJhbmdlIDEgdG8gOS4KKwkJCWV4YW1wbGU6IEJVQ0sxLCBCVUNLNSwgQlVDSzkuCisKKyAgUmVndWxhdG9ycyB3aGljaCBjYW4gYmUgdHVybmVkIG9mZiBkdXJpbmcgc3lzdGVtIHN1c3BlbmQ6CisJLUxET24JOgkyLCA2LTgsIDEwLTEyLCAxNC0xNiwKKwktQlVDS24JOgkxLTQuCisgIFVzZSBzdGFuZGFyZCByZWd1bGF0b3IgYmluZGluZ3MgZm9yIGl0ICgncmVndWxhdG9yLW9mZi1pbi1zdXNwZW5kJykuCisKKyAgTERPMjAsIExETzIxLCBMRE8yMiwgQlVDSzggYW5kIEJVQ0s5IGNhbiBiZSBjb25maWd1cmVkIHRvIEdQSU8gZW5hYmxlCisgIGNvbnRyb2wuIFRvIHR1cm4gdGhpcyBmZWF0dXJlIG9uIHRoaXMgcHJvcGVydHkgbXVzdCBiZSBhZGRlZCB0byB0aGUgcmVndWxhdG9yCisgIHN1Yi1ub2RlOgorCS0gbWF4aW0sZW5hLWdwaW9zIDoJb25lIEdQSU8gc3BlY2lmaWVyIGVuYWJsZSBjb250cm9sICh0aGUgZ3BpbworCQkJCWZsYWdzIGFyZSBhY3R1YWxseSBpZ25vcmVkIGFuZCBhbHdheXMKKwkJCQlBQ1RJVkVfSElHSCBpcyB1c2VkKQorCitFeGFtcGxlOgorCisJbWF4Nzc2ODY6IHBtaWNAMDkgeworCQljb21wYXRpYmxlID0gIm1heGltLG1heDc3Njg2IjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmd2FrZXVwX2VpbnQ+OworCQlpbnRlcnJ1cHRzID0gPDI2IElSUV9UWVBFX05PTkU+OworCQlyZWcgPSA8MHgwOT47CisKKwkJdm9sdGFnZS1yZWd1bGF0b3JzIHsKKwkJCWxkbzExX3JlZzogTERPMTEgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gInZkZF9sZG8xMSI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTkwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTkwMDAwMD47CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCWJ1Y2sxX3JlZzogQlVDSzEgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gInZkZF9taWYiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDk1MDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTMwMDAwMD47CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCX07CisKKwkJCWJ1Y2s5X3JlZzogQlVDSzkgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gIkNBTV9JU1BfQ09SRV8xLjJWIjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMDAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxMjAwMDAwPjsKKwkJCQltYXhpbSxlbmEtZ3Bpb3MgPSA8JmdwbTAgMyBHUElPX0FDVElWRV9ISUdIPjsKKwkJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvbWF4Nzc4MDIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9tYXg3NzgwMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDlkNzk2ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvbWF4Nzc4MDIudHh0CkBAIC0wLDAgKzEsMTExIEBACitCaW5kaW5nIGZvciBNYXhpbSBNQVg3NzgwMiByZWd1bGF0b3JzCisKK1RoaXMgaXMgYSBwYXJ0IG9mIGRldmljZSB0cmVlIGJpbmRpbmdzIG9mIE1BWDc3ODAyIG11bHRpLWZ1bmN0aW9uIGRldmljZS4KK01vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIGJpbmRpbmdzL21mZC9tYXg3NzgwMi50eHQgZmlsZS4KKworVGhlIE1BWDc3ODAyIFBNSUMgaGFzIDEwIGhpZ2gtZWZmaWNpZW5jeSBCdWNrIGFuZCAzMiBMb3ctZHJvcG91dCAoTERPKQorcmVndWxhdG9ycyB0aGF0IGNhbiBiZSBjb250cm9sbGVkIG92ZXIgSTJDLgorCitGb2xsb3dpbmcgcHJvcGVydGllcyBzaG91bGQgYmUgcHJlc2VudCBpbiBtYWluIGRldmljZSBub2RlIG9mIHRoZSBNRkQgY2hpcC4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gaW5iMS1zdXBwbHk6ICBUaGUgaW5wdXQgc3VwcGx5IGZvciBCVUNLMQorLSBpbmIyLXN1cHBseTogIFRoZSBpbnB1dCBzdXBwbHkgZm9yIEJVQ0syCistIGluYjMtc3VwcGx5OiAgVGhlIGlucHV0IHN1cHBseSBmb3IgQlVDSzMKKy0gaW5iNC1zdXBwbHk6ICBUaGUgaW5wdXQgc3VwcGx5IGZvciBCVUNLNAorLSBpbmI1LXN1cHBseTogIFRoZSBpbnB1dCBzdXBwbHkgZm9yIEJVQ0s1CistIGluYjYtc3VwcGx5OiAgVGhlIGlucHV0IHN1cHBseSBmb3IgQlVDSzYKKy0gaW5iNy1zdXBwbHk6ICBUaGUgaW5wdXQgc3VwcGx5IGZvciBCVUNLNworLSBpbmI4LXN1cHBseTogIFRoZSBpbnB1dCBzdXBwbHkgZm9yIEJVQ0s4CistIGluYjktc3VwcGx5OiAgVGhlIGlucHV0IHN1cHBseSBmb3IgQlVDSzkKKy0gaW5iMTAtc3VwcGx5OiBUaGUgaW5wdXQgc3VwcGx5IGZvciBCVUNLMTAKKy0gaW5sMS1zdXBwbHk6ICBUaGUgaW5wdXQgc3VwcGx5IGZvciBMRE84IGFuZCBMRE8xNQorLSBpbmwyLXN1cHBseTogIFRoZSBpbnB1dCBzdXBwbHkgZm9yIExETzE3LCBMRE8yNywgTERPMzAgYW5kIExETzM1CistIGlubDMtc3VwcGx5OiAgVGhlIGlucHV0IHN1cHBseSBmb3IgTERPMywgTERPNSwgTERPNiBhbmQgTERPNworLSBpbmw0LXN1cHBseTogIFRoZSBpbnB1dCBzdXBwbHkgZm9yIExETzEwLCBMRE8xMSwgTERPMTMgYW5kIExETzE0CistIGlubDUtc3VwcGx5OiAgVGhlIGlucHV0IHN1cHBseSBmb3IgTERPOSBhbmQgTERPMTkKKy0gaW5sNi1zdXBwbHk6ICBUaGUgaW5wdXQgc3VwcGx5IGZvciBMRE80LCBMRE8yMSwgTERPMjQgYW5kIExETzMzCistIGlubDctc3VwcGx5OiAgVGhlIGlucHV0IHN1cHBseSBmb3IgTERPMTgsIExETzIwLCBMRE8yOCBhbmQgTERPMjkKKy0gaW5sOS1zdXBwbHk6ICBUaGUgaW5wdXQgc3VwcGx5IGZvciBMRE8xMiwgTERPMjMsIExETzI1LCBMRE8yNiwgTERPMzIgYW5kIExETzM0CistIGlubDEwLXN1cHBseTogVGhlIGlucHV0IHN1cHBseSBmb3IgTERPMSBhbmQgTERPMgorCitPcHRpb25hbCBub2RlczoKKy0gcmVndWxhdG9ycyA6IFRoZSByZWd1bGF0b3JzIG9mIG1heDc3ODAyIGhhdmUgdG8gYmUgaW5zdGFudGlhdGVkCisgIHVuZGVyIHN1Ym5vZGUgbmFtZWQgInJlZ3VsYXRvcnMiIHVzaW5nIHRoZSBmb2xsb3dpbmcgZm9ybWF0LgorCisJcmVndWxhdG9yLW5hbWUgeworCQlzdGFuZGFyZCByZWd1bGF0b3IgY29uc3RyYWludHMuLi4uCisJfTsKKwlyZWZlciBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3JlZ3VsYXRvci50eHQKKworVGhlIHJlZ3VsYXRvciBub2RlIG5hbWUgc2hvdWxkIGJlIGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcgdG8gZ2V0IG1hdGNoZWQKK3dpdGggdGhlaXIgaGFyZHdhcmUgY291bnRlcnBhcnRzIGFzIGZvbGxvdy4gVGhlIHZhbGlkIG5hbWVzIGFyZToKKworCS1MRE9uIAk6CWZvciBMRE9zLCB3aGVyZSBuIGNhbiBsaWUgaW4gcmFuZ2VzIDEtMTUsIDE3LTIxLCAyMy0zMAorCQkJYW5kIDMyLTM1LgorCQkJZXhhbXBsZTogTERPMSwgTERPMiwgTERPMzUuCisJLUJVQ0tuIAk6CWZvciBCVUNLcywgd2hlcmUgbiBjYW4gbGllIGluIHJhbmdlIDEgdG8gMTAuCisJCQlleGFtcGxlOiBCVUNLMSwgQlVDSzUsIEJVQ0sxMC4KKworVGhlIG1heDc3ODAyIHJlZ3VsYXRvciBzdXBwb3J0cyB0d28gZGlmZmVyZW50IG9wZXJhdGluZyBtb2RlczogTm9ybWFsIGFuZCBMb3cKK1Bvd2VyIE1vZGUuIFNvbWUgcmVndWxhdG9ycyBzdXBwb3J0IHRoZSBtb2RlcyB0byBiZSBjaGFuZ2VkIGF0IHN0YXJ0dXAgb3IgYnkKK3RoZSBjb25zdW1lcnMgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24gd2hpbGUgb3RoZXJzIG9ubHkgc3VwcG9ydCB0byBjaGFuZ2UgdGhlCittb2RlIGR1cmluZyBzeXN0ZW0gc3VzcGVuZC4gVGhlIHN0YW5kYXJkIHJlZ3VsYXRvciBzdXNwZW5kIHN0YXRlcyBiaW5kaW5nIGNhbgorYmUgdXNlZCB0byBjb25maWd1cmUgdGhlIHJlZ3VsYXRvciBvcGVyYXRpbmcgbW9kZS4KKworVGhlIHJlZ3VsYXRvcnMgdGhhdCBzdXBwb3J0IHRoZSBzdGFuZGFyZCAicmVndWxhdG9yLWluaXRpYWwtbW9kZSIgcHJvcGVydHksCitjaGFuZ2luZyB0aGVpciBtb2RlIGR1cmluZyBub3JtYWwgb3BlcmF0aW9uIGFyZTogTERPcyAxLCAzLCAyMCBhbmQgMjEuCisKK1RoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yICJyZWd1bGF0b3ItaW5pdGlhbC1tb2RlIiBhbmQgInJlZ3VsYXRvci1tb2RlIiBhcmU6CisJMTogTm9ybWFsIHJlZ3VsYXRvciB2b2x0YWdlIG91dHB1dCBtb2RlLgorCTM6IExvdyBQb3dlciB3aGljaCByZWR1Y2VzIHRoZSBxdWllc2NlbnQgY3VycmVudCBkb3duIHRvIG9ubHkgMXVBCisKK1RoZSBsaXN0IG9mIHZhbGlkIG1vZGVzIGFyZSBkZWZpbmVkIGluIHRoZSBkdC1iaW5kaW5ncy9jbG9jay9tYXhpbSxtYXg3NzgwMi5oCitoZWFkZXIgYW5kIGNhbiBiZSBpbmNsdWRlZCBieSBkZXZpY2UgdHJlZSBzb3VyY2UgZmlsZXMuCisKK1RoZSBzdGFuZGFyZCAicmVndWxhdG9yLW1vZGUiIHByb3BlcnR5IGNhbiBvbmx5IGJlIHVzZWQgZm9yIHJlZ3VsYXRvcnMgdGhhdAorc3VwcG9ydCBjaGFuZ2luZyB0aGVpciBtb2RlIHRvIExvdyBQb3dlciBNb2RlIGR1cmluZyBzdXNwZW5kLiBUaGVzZSByZWd1bGF0b3JzCithcmU6IEJVQ0tzIDItNCBhbmQgTERPcyAxLTM1LiBBbHNvLCBpdCBvbmx5IHRha2VzIGVmZmVjdCBpZiB0aGUgcmVndWxhdG9yIGhhcworYmVlbiBlbmFibGVkIGZvciB0aGUgZ2l2ZW4gc3VzcGVuZCBzdGF0ZSB1c2luZyAicmVndWxhdG9yLW9uLWluLXN1c3BlbmQiIGFuZAoraGFzIG5vdCBiZWVuIGRpc2FibGVkIGZvciB0aGF0IHN0YXRlIHVzaW5nICJyZWd1bGF0b3Itb2ZmLWluLXN1c3BlbmQiLgorCitFeGFtcGxlOgorCisJbWF4Nzc4MDJAMDkgeworCQljb21wYXRpYmxlID0gIm1heGltLG1heDc3ODAyIjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmd2FrZXVwX2VpbnQ+OworCQlpbnRlcnJ1cHRzID0gPDI2IDA+OworCQlyZWcgPSA8MHgwOT47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQlpbmIxLXN1cHBseSA9IDwmcGFyZW50X3JlZz47CisKKwkJcmVndWxhdG9ycyB7CisJCQlsZG8xX3JlZzogTERPMSB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmRkXzF2MCI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTAwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTAwMDAwMD47CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQlyZWd1bGF0b3ItaW5pdGlhbC1tb2RlID0gPE1BWDc3ODAyX09QTU9ERV9MUD47CisJCQl9OworCisJCQlsZG8xMV9yZWc6IExETzExIHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJ2ZGRfbGRvMTEiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDE5MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE5MDAwMDA+OworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQkJcmVndWxhdG9yLXN0YXRlLW1lbSB7CisJCQkJCXJlZ3VsYXRvci1vbi1pbi1zdXNwZW5kOworCQkJCQlyZWd1bGF0b3ItbW9kZSA9IDxNQVg3NzgwMl9PUE1PREVfTFA+OworCQkJCX07CisJCQl9OworCisJCQlidWNrMV9yZWc6IEJVQ0sxIHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJ2ZGRfbWlmIjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw5NTAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDEzMDAwMDA+OworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL21heDg2NjAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9tYXg4NjYwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmE5OTRkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9tYXg4NjYwLnR4dApAQCAtMCwwICsxLDQ3IEBACitNYXhpbSBNQVg4NjYwIHZvbHRhZ2UgcmVndWxhdG9yCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IG11c3QgYmUgb25lIG9mICJtYXhpbSxtYXg4NjYwIiwgIm1heGltLG1heDg2NjEiCistIHJlZzogSTJDIHNsYXZlIGFkZHJlc3MsIHVzdWFsbHkgMHgzNAorLSBhbnkgcmVxdWlyZWQgZ2VuZXJpYyBwcm9wZXJ0aWVzIGRlZmluZWQgaW4gcmVndWxhdG9yLnR4dAorCitFeGFtcGxlOgorCisJaTJjX21hc3RlciB7CisJCW1heDg2NjBAMzQgeworCQkJY29tcGF0aWJsZSA9ICJtYXhpbSxtYXg4NjYwIjsKKwkJCXJlZyA9IDwweDM0PjsKKworCQkJcmVndWxhdG9ycyB7CisJCQkJcmVndWxhdG9yQDAgeworCQkJCQlyZWd1bGF0b3ItY29tcGF0aWJsZT0gIlYzKERDREMpIjsKKwkJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8NzI1MDAwPjsKKwkJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTgwMDAwMD47CisJCQkJfTsKKworCQkJCXJlZ3VsYXRvckAxIHsKKwkJCQkJcmVndWxhdG9yLWNvbXBhdGlibGU9ICJWNChEQ0RDKSI7CisJCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDcyNTAwMD47CisJCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE4MDAwMDA+OworCQkJCX07CisKKwkJCQlyZWd1bGF0b3JAMiB7CisJCQkJCXJlZ3VsYXRvci1jb21wYXRpYmxlPSAiVjUoTERPKSI7CisJCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDE3MDAwMDA+OworCQkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwyMDAwMDAwPjsKKwkJCQl9OworCisJCQkJcmVndWxhdG9yQDMgeworCQkJCQlyZWd1bGF0b3ItY29tcGF0aWJsZT0gIlY2KExETykiOworCQkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKKwkJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCQkJfTsKKworCQkJCXJlZ3VsYXRvckA0IHsKKwkJCQkJcmVndWxhdG9yLWNvbXBhdGlibGU9ICJWNyhMRE8pIjsKKwkJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTgwMDAwMD47CisJCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJCX07CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL21heDg5MDcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9tYXg4OTA3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzFlY2NkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9tYXg4OTA3LnR4dApAQCAtMCwwICsxLDY5IEBACitNQVg4OTA3IHJlZ3VsYXRvcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAibWF4aW0sbWF4ODkwNyIKKy0gcmVnOiBJMkMgc2xhdmUgYWRkcmVzcworLSBpbnRlcnJ1cHRzOiBUaGUgaW50ZXJydXB0IG91dHB1dCBvZiB0aGUgY29udHJvbGxlcgorLSBtYmF0dC1zdXBwbHk6IFRoZSBpbnB1dCBzdXBwbHkgZm9yIE1CQVRULCBCQkFULCBTREJZLCBWUlRDLgorLSBpbi12MS1zdXBwbHk6IFRoZSBpbnB1dCBzdXBwbHkgZm9yIFNEMS4KKy0gaW4tdjItc3VwcGx5OiBUaGUgaW5wdXQgc3VwcGx5IGZvciBTRDIuCistIGluLXYzLXN1cHBseTogVGhlIGlucHV0IHN1cHBseSBmb3IgU0QzLgorLSBpbjEtc3VwcGx5OiBUaGUgaW5wdXQgc3VwcGx5IGZvciBMRE8xLgorLi4uCistIGluMjAtc3VwcGx5OiBUaGUgaW5wdXQgc3VwcGx5IGZvciBMRE8yMC4KKy0gcmVndWxhdG9yczogQSBub2RlIHRoYXQgaG91c2VzIGEgc3ViLW5vZGUgZm9yIGVhY2ggcmVndWxhdG9yIHdpdGhpbiB0aGUKKyAgZGV2aWNlLiBFYWNoIHN1Yi1ub2RlIGlzIGlkZW50aWZpZWQgdXNpbmcgdGhlIG5vZGUncyBuYW1lIChvciB0aGUgZGVwcmVjYXRlZAorICByZWd1bGF0b3ItY29tcGF0aWJsZSBwcm9wZXJ0eSBpZiBwcmVzZW50KSwgd2l0aCB2YWxpZCB2YWx1ZXMgbGlzdGVkIGJlbG93LgorICBUaGUgY29udGVudCBvZiBlYWNoIHN1Yi1ub2RlIGlzIGRlZmluZWQgYnkgdGhlIHN0YW5kYXJkIGJpbmRpbmcgZm9yCisgIHJlZ3VsYXRvcnM7IHNlZSByZWd1bGF0b3IudHh0LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBtYXhpbSxzeXN0ZW0tcG93ZXItY29udHJvbGxlcjogQm9vbGVhbiBwcm9wZXJ0eSBpbmRpY2F0aW5nIHRoYXQgdGhlIFBNSUMKKyAgY29udHJvbHMgdGhlIG92ZXJhbGwgc3lzdGVtIHBvd2VyLgorCitUaGUgdmFsaWQgbmFtZXMgZm9yIHJlZ3VsYXRvcnMgYXJlOgorCisgIHNkMSwgc2QyLCBzZDMsIGxkbzEsIGxkbzIsIGxkbzMsIGxkbzQsIGxkbzUsIGxkbzYsIGxkbzcsIGxkbzgsIGxkbzksIGxkbzEwLAorICBsZG8xMSwgbGRvMTIsIGxkbzEzLCBsZG8xNCwgbGRvMTUsIGxkbzE2LCBsZG8xNywgbGRvMTgsIGxkbzE5LCBsZG8yMCwgb3V0NXYsCisgIG91dDMzdiwgYmJhdCwgc2RieSwgdnJ0Yy4KKworRXhhbXBsZToKKworCQltYXg4OTA3QDNjIHsKKwkJCWNvbXBhdGlibGUgPSAibWF4aW0sbWF4ODkwNyI7CisJCQlyZWcgPSA8MHgzYz47CisJCQlpbnRlcnJ1cHRzID0gPDAgODYgMHg0PjsKKworCQkJbWF4aW0sc3lzdGVtLXBvd2VyLWNvbnRyb2xsZXI7CisKKwkJCW1iYXR0LXN1cHBseSA9IDwmc29tZV9yZWc+OworCQkJaW4tdjEtc3VwcGx5ID0gPCZtYmF0dF9yZWc+OworCQkJLi4uCisJCQlpbjEtc3VwcGx5ID0gPCZtYmF0dF9yZWc+OworCQkJLi4uCisKKwkJCXJlZ3VsYXRvcnMgeworCQkJCW1iYXR0X3JlZzogbWJhdHQgeworCQkJCQlyZWd1bGF0b3ItbmFtZSA9ICJ2YmF0X3BtdSI7CisJCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDUwMDAwMDA+OworCQkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDw1MDAwMDAwPjsKKwkJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQl9OworCisJCQkJc2QxIHsKKwkJCQkJcmVndWxhdG9yLW5hbWUgPSAibnZ2ZGRfc3YxLHZkZF9jcHVfcG11IjsKKwkJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTAwMDAwMD47CisJCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDEwMDAwMDA+OworCQkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJCX07CisKKwkJCQlzZDIgeworCQkJCQlyZWd1bGF0b3ItbmFtZSA9ICJudnZkZF9zdjIsdmRkX2NvcmUiOworCQkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMjAwMDAwPjsKKwkJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTIwMDAwMD47CisJCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQkJfTsKKy4uLgorCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9tYXg4OTI1LXJlZ3VsYXRvci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL21heDg5MjUtcmVndWxhdG9yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDU3Njk1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9tYXg4OTI1LXJlZ3VsYXRvci50eHQKQEAgLTAsMCArMSw0MCBAQAorTWF4ODkyNSBWb2x0YWdlIHJlZ3VsYXRvcnMKKworUmVxdWlyZWQgbm9kZXM6Cistbm9kZXM6CisgIC0gU0RWMSBmb3IgU0RWIFNEVjEKKyAgLSBTRFYyIGZvciBTRFYgU0RWMgorICAtIFNEVjMgZm9yIFNEViBTRFYzCisgIC0gTERPMSBmb3IgTERPIExETzEKKyAgLSBMRE8yIGZvciBMRE8gTERPMgorICAtIExETzMgZm9yIExETyBMRE8zCisgIC0gTERPNCBmb3IgTERPIExETzQKKyAgLSBMRE81IGZvciBMRE8gTERPNQorICAtIExETzYgZm9yIExETyBMRE82CisgIC0gTERPNyBmb3IgTERPIExETzcKKyAgLSBMRE84IGZvciBMRE8gTERPOAorICAtIExETzkgZm9yIExETyBMRE85CisgIC0gTERPMTAgZm9yIExETyBMRE8xMAorICAtIExETzExIGZvciBMRE8gTERPMTEKKyAgLSBMRE8xMiBmb3IgTERPIExETzEyCisgIC0gTERPMTMgZm9yIExETyBMRE8xMworICAtIExETzE0IGZvciBMRE8gTERPMTQKKyAgLSBMRE8xNSBmb3IgTERPIExETzE1CisgIC0gTERPMTYgZm9yIExETyBMRE8xNgorICAtIExETzE3IGZvciBMRE8gTERPMTcKKyAgLSBMRE8xOCBmb3IgTERPIExETzE4CisgIC0gTERPMTkgZm9yIExETyBMRE8xOQorICAtIExETzIwIGZvciBMRE8gTERPMjAKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gQW55IG9wdGlvbmFsIHByb3BlcnR5IGRlZmluZWQgaW4gYmluZGluZ3MvcmVndWxhdG9yL3JlZ3VsYXRvci50eHQKKworRXhhbXBsZToKKworCVNEVjEgeworCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw2Mzc1MDA+OworCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxNDI1MDAwPjsKKwkJcmVndWxhdG9yLWJvb3Qtb247CisJCXJlZ3VsYXRvci1hbHdheXMtb247CisJfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9tYXg4OTUyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvbWF4ODk1Mi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY2ZmNkZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvbWF4ODk1Mi50eHQKQEAgLTAsMCArMSw1MiBAQAorTWF4aW0gTUFYODk1MiB2b2x0YWdlIHJlZ3VsYXRvcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBtdXN0IGJlIGVxdWFsIHRvICJtYXhpbSxtYXg4OTUyIgorLSByZWc6IEkyQyBzbGF2ZSBhZGRyZXNzLCB1c3VhbGx5IDB4NjAKKy0gbWF4ODk1MixkdnMtbW9kZS1taWNyb3ZvbHQ6IGFycmF5IG9mIDQgaW50ZWdlciB2YWx1ZXMgZGVmaW5pbmcgRFZTIHZvbHRhZ2VzCisgIGluIG1pY3Jvdm9sdHMuIEFsbCB2YWx1ZXMgbXVzdCBiZSBmcm9tIHJhbmdlIDw3NzAwMDAsIDE0MDAwMDA+CistIGFueSByZXF1aXJlZCBnZW5lcmljIHByb3BlcnRpZXMgZGVmaW5lZCBpbiByZWd1bGF0b3IudHh0CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIG1heDg5NTIsdmlkLWdwaW9zOiBhcnJheSBvZiB0d28gR1BJTyBwaW5zIHVzZWQgZm9yIERWUyB2b2x0YWdlIHNlbGVjdGlvbgorLSBtYXg4OTUyLGVuLWdwaW86IEdQSU8gdXNlZCB0byBjb250cm9sIGVuYWJsZSBzdGF0dXMgb2YgcmVndWxhdG9yCistIG1heDg5NTIsZGVmYXVsdC1tb2RlOiBpbmRleCBvZiBkZWZhdWx0IERWUyB2b2x0YWdlLCBmcm9tIDwwLCAzPiByYW5nZQorLSBtYXg4OTUyLHN5bmMtZnJlcTogc3luYyBmcmVxdWVuY3ksIG11c3QgYmUgb25lIG9mIGZvbGxvd2luZyB2YWx1ZXM6CisgICAgLSAwOiAyNiBNSHoKKyAgICAtIDE6IDEzIE1IegorICAgIC0gMjogMTkuMiBNSHoKKyAgRGVmYXVsdHMgdG8gMjYgTUh6IGlmIG5vdCBzcGVjaWZpZWQuCistIG1heDg5NTIscmFtcC1zcGVlZDogdm9sdGFnZSByYW1wIHNwZWVkLCBtdXN0IGJlIG9uZSBvZiBmb2xsb3dpbmcgdmFsdWVzOgorICAgIC0gMDogMzJtVi91cworICAgIC0gMTogMTZtVi91cworICAgIC0gMjogOG1WL3VzCisgICAgLSAzOiA0bVYvdXMKKyAgICAtIDQ6IDJtVi91cworICAgIC0gNTogMW1WL3VzCisgICAgLSA2OiAwLjVtVi91cworICAgIC0gNzogMC4yNW1WL3VzCisgIERlZmF1bHRzIHRvIDMybVYvdXMgaWYgbm90IHNwZWNpZmllZC4KKy0gYW55IGF2YWlsYWJsZSBnZW5lcmljIHByb3BlcnRpZXMgZGVmaW5lZCBpbiByZWd1bGF0b3IudHh0CisKK0V4YW1wbGU6CisKKwl2ZGRfYXJtX3JlZzogcG1pY0A2MCB7CisJCWNvbXBhdGlibGUgPSAibWF4aW0sbWF4ODk1MiI7CisJCXJlZyA9IDwweDYwPjsKKworCQkvKiBtYXg4OTUyLXNwZWNpZmljIHByb3BlcnRpZXMgKi8KKwkJbWF4ODk1Mix2aWQtZ3Bpb3MgPSA8JmdweDAgMyAwPiwgPCZncHgwIDQgMD47CisJCW1heDg5NTIsZW4tZ3BpbyA9IDwmZ3B4MCAxIDA+OworCQltYXg4OTUyLGRlZmF1bHQtbW9kZSA9IDwwPjsKKwkJbWF4ODk1MixkdnMtbW9kZS1taWNyb3ZvbHQgPSA8MTI1MDAwMD4sIDwxMjAwMDAwPiwKKwkJCQkJCTwxMDUwMDAwPiwgPDk1MDAwMD47CisJCW1heDg5NTIsc3luYy1mcmVxID0gPDA+OworCQltYXg4OTUyLHJhbXAtc3BlZWQgPSA8MD47CisKKwkJLyogZ2VuZXJpYyByZWd1bGF0b3IgcHJvcGVydGllcyAqLworCQlyZWd1bGF0b3ItbmFtZSA9ICJ2ZGRfYXJtIjsKKwkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8NzcwMDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTQwMDAwMD47CisJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCXJlZ3VsYXRvci1ib290LW9uOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL21heDg5NzMtcmVndWxhdG9yLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvbWF4ODk3My1yZWd1bGF0b3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MGVhMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL21heDg5NzMtcmVndWxhdG9yLnR4dApAQCAtMCwwICsxLDQ1IEBACisqIE1heGltIE1BWDg5NzMgVm9sdGFnZSBSZWd1bGF0b3IKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOgltdXN0IGJlIG9uZSBvZiBmb2xsb3dpbmc6CisJCQkibWF4aW0sbWF4ODk3MyIKKwkJCSJtYXhpbSxtYXg3NzYyMSIuCistIHJlZzoJCXRoZSBpMmMgc2xhdmUgYWRkcmVzcyBvZiB0aGUgcmVndWxhdG9yLiBJdCBzaG91bGQgYmUgMHgxYi4KKworQW55IHN0YW5kYXJkIHJlZ3VsYXRvciBwcm9wZXJ0aWVzIGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgc2luZ2xlIG1heDg5NzMKK0RDREMuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy1tYXhpbSxleHRlcm5hbGx5LWVuYWJsZTogYm9vbGVhbiwgZXh0ZXJuYWxseSBjb250cm9sIHRoZSByZWd1bGF0b3Igb3V0cHV0CisJCWVuYWJsZS9kaXNhYmxlLgorLW1heGltLGVuYWJsZS1ncGlvOiBHUElPIGZvciBlbmFibGUgY29udHJvbC4gSWYgdGhlIHZhbGlkIEdQSU8gaXMgcHJvdmlkZWQKKwkJdGhlbiBleHRlcm5hbGx5IGVuYWJsZSBjb250cm9sIHdpbGwgYmUgY29uc2lkZXJlZC4KKy1tYXhpbSxkdnMtZ3BpbzogR1BJTyB3aGljaCBpcyBjb25uZWN0ZWQgdG8gRFZTIHBpbiBvZiBkZXZpY2UuCistbWF4aW0sZHZzLWRlZmF1bHQtc3RhdGU6IERlZmF1bHQgc3RhdGUgb2YgR1BJTyBkdXJpbmcgaW5pdGlhbGlzYXRpb24uCisJCTEgZm9yIEhJR0ggYW5kIDAgZm9yIExPVy4KKy1tYXhpbSxlbmFibGUtcmVtb3RlLXNlbnNlOiBib29sZWFuLCBlbmFibGUgcmVvdGUgc2Vuc2UuCistbWF4aW0sZW5hYmxlLWZhbGxpbmctc2xldy1yYXRlOiBib29sZWFuLCBlbmFibGUgZmFsbGluZyBzbGV3IHJhdGUuCistbWF4aW0sZW5hYmxlLWFjdGl2ZS1kaXNjaGFyZ2U6IGJvb2xlYW46IGVuYWJsZSBhY3RpdmUgZGlzY2hhcmdlLgorLW1heGltLGVuYWJsZS1mcmVxdWVuY3ktc2hpZnQ6IGJvb2xlYW4sIGVuYWJsZSA5JSBmcmVxdWVuY3kgc2hpZnQuCistbWF4aW0sZW5hYmxlLWJpYXMtY29udHJvbDogYm9vbGVhbiwgZW5hYmxlIGJpYXMgY29udHJvbC4gQnkgZW5hYmxpbmcgdGhpcworCQlzdGFydHVwIGRlbGF5IGNhbiBiZSByZWR1Y2UgdG8gMjB1cyBmcm9tIDIyMHVzLgorLW1heGltLGVuYWJsZS1ldHI6IGJvb2xlYW4sIGVuYWJsZSBFbmhhbmNlZCBUcmFuc2llbnQgUmVzcG9uc2UuCistbWF4aW0sZW5hYmxlLWhpZ2gtZXRyLXNlbnNpdGl2aXR5OiBib29sZWFuLCBFbmhhbmNlZCB0cmFuc2llbnQgcmVzcG9uc2UKKwkJY2lyY3VpdCBpcyBlbmFibGVkIGFuZCBzZXQgZm9yIGhpZ2ggc2Vuc2l0aXZpdHkuIElmIHRoaXMKKwkJcHJvcGVydHkgaXMgYXZhaWxhYmxlIHRoZW4gZXRyIHdpbGwgYmUgZW5hYmxlIGRlZmF1bHQuCisKK0VuaGFuY2VkIHRyYW5zaWVudCByZXNwb25zZSAoRVRSKSB3aWxsIGFmZmVjdCB0aGUgY29uZmlndXJhdGlvbiBvZiBDS0FEVi4KKworRXhhbXBsZToKKworCW1heDg5NzNAMWIgeworCQljb21wYXRpYmxlID0gIm1heGltLG1heDg5NzMiOworCQlyZWcgPSA8MHgxYj47CisKKwkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8OTM1MDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTIwMDAwMD47CisJCXJlZ3VsYXRvci1ib290LW9uOworCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL21heDg5OTctcmVndWxhdG9yLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvbWF4ODk5Ny1yZWd1bGF0b3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjMTg2YTcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL21heDg5OTctcmVndWxhdG9yLnR4dApAQCAtMCwwICsxLDE0NiBAQAorKiBNYXhpbSBNQVg4OTk3IFZvbHRhZ2UgYW5kIEN1cnJlbnQgUmVndWxhdG9yCisKK1RoZSBNYXhpbSBNQVg4OTk3IGlzIGEgbXVsdGktZnVuY3Rpb24gZGV2aWNlIHdoaWNoIGluY2x1ZGVzIHZvbHRhZ2UgYW5kCitjdXJyZW50IHJlZ3VsYXRvcnMsIHJ0YywgY2hhcmdlciBjb250cm9sbGVyIGFuZCBvdGhlciBzdWItYmxvY2tzLiBJdCBpcworaW50ZXJmYWNlZCB0byB0aGUgaG9zdCBjb250cm9sbGVyIHVzaW5nIGEgaTJjIGludGVyZmFjZS4gRWFjaCBzdWItYmxvY2sgaXMKK2FkZHJlc3NlZCBieSB0aGUgaG9zdCBzeXN0ZW0gdXNpbmcgZGlmZmVyZW50IGkyYyBzbGF2ZSBhZGRyZXNzLiBUaGlzIGRvY3VtZW50CitkZXNjcmliZXMgdGhlIGJpbmRpbmdzIGZvciAncG1pYycgc3ViLWJsb2NrIG9mIG1heDg5OTcuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAibWF4aW0sbWF4ODk5Ny1wbWljIi4KKy0gcmVnOiBTcGVjaWZpZXMgdGhlIGkyYyBzbGF2ZSBhZGRyZXNzIG9mIHRoZSBwbWljIGJsb2NrLiBJdCBzaG91bGQgYmUgMHg2Ni4KKworLSBtYXg4OTk3LHBtaWMtYnVjazEtZHZzLXZvbHRhZ2U6IEEgc2V0IG9mIDggdm9sdGFnZSB2YWx1ZXMgaW4gbWljcm8tdm9sdCAodVYpCisgIHVuaXRzIGZvciBidWNrMSB3aGVuIGNoYW5naW5nIHZvbHRhZ2UgdXNpbmcgZ3BpbyBkdnMuIFJlZmVyIHRvIFsxXSBiZWxvdworICBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KKworLSBtYXg4OTk3LHBtaWMtYnVjazItZHZzLXZvbHRhZ2U6IEEgc2V0IG9mIDggdm9sdGFnZSB2YWx1ZXMgaW4gbWljcm8tdm9sdCAodVYpCisgIHVuaXRzIGZvciBidWNrMiB3aGVuIGNoYW5naW5nIHZvbHRhZ2UgdXNpbmcgZ3BpbyBkdnMuIFJlZmVyIHRvIFsxXSBiZWxvdworICBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KKworLSBtYXg4OTk3LHBtaWMtYnVjazUtZHZzLXZvbHRhZ2U6IEEgc2V0IG9mIDggdm9sdGFnZSB2YWx1ZXMgaW4gbWljcm8tdm9sdCAodVYpCisgIHVuaXRzIGZvciBidWNrNSB3aGVuIGNoYW5naW5nIHZvbHRhZ2UgdXNpbmcgZ3BpbyBkdnMuIFJlZmVyIHRvIFsxXSBiZWxvdworICBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KKworWzFdIElmIG5vbmUgb2YgdGhlICdtYXg4OTk3LHBtaWMtYnVja1sxLzIvNV0tdXNlcy1ncGlvLWR2cycgb3B0aW9uYWwKKyAgICBwcm9wZXJ0eSBpcyBzcGVjaWZpZWQsIHRoZSAnbWF4ODk5NyxwbWljLWJ1Y2tbMS8yLzVdLWR2cy12b2x0YWdlJworICAgIHByb3BlcnR5IHNob3VsZCBzcGVjaWZ5IGF0bGVhc3Qgb25lIHZvbHRhZ2UgbGV2ZWwgKHdoaWNoIHdvdWxkIGJlIGEKKyAgICBzYWZlIG9wZXJhdGluZyB2b2x0YWdlKS4KKworICAgIElmIGVpdGhlciBvZiB0aGUgJ21heDg5OTcscG1pYy1idWNrWzEvMi81XS11c2VzLWdwaW8tZHZzJyBvcHRpb25hbAorICAgIHByb3BlcnR5IGlzIHNwZWNpZmllZCwgdGhlbiBhbGwgdGhlIGVpZ2h0IHZvbHRhZ2UgdmFsdWVzIGZvciB0aGUKKyAgICAnbWF4ODk5NyxwbWljLWJ1Y2tbMS8yLzVdLWR2cy12b2x0YWdlJyBzaG91bGQgYmUgc3BlY2lmaWVkLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBpbnRlcnJ1cHQtcGFyZW50OiBTcGVjaWZpZXMgdGhlIHBoYW5kbGUgb2YgdGhlIGludGVycnVwdCBjb250cm9sbGVyIHRvIHdoaWNoCisgIHRoZSBpbnRlcnJ1cHRzIGZyb20gbWF4ODk5NyBhcmUgZGVsaXZlcmVkIHRvLgorLSBpbnRlcnJ1cHRzOiBJbnRlcnJ1cHQgc3BlY2lmaWVycyBmb3IgdHdvIGludGVycnVwdCBzb3VyY2VzLgorICAtIEZpcnN0IGludGVycnVwdCBzcGVjaWZpZXIgaXMgZm9yICdpcnExJyBpbnRlcnJ1cHQuCisgIC0gU2Vjb25kIGludGVycnVwdCBzcGVjaWZpZXIgaXMgZm9yICdhbGVydCcgaW50ZXJydXB0LgorLSBtYXg4OTk3LHBtaWMtYnVjazEtdXNlcy1ncGlvLWR2czogJ2J1Y2sxJyBjYW4gYmUgY29udHJvbGxlZCBieSBncGlvIGR2cy4KKy0gbWF4ODk5NyxwbWljLWJ1Y2syLXVzZXMtZ3Bpby1kdnM6ICdidWNrMicgY2FuIGJlIGNvbnRyb2xsZWQgYnkgZ3BpbyBkdnMuCistIG1heDg5OTcscG1pYy1idWNrNS11c2VzLWdwaW8tZHZzOiAnYnVjazUnIGNhbiBiZSBjb250cm9sbGVkIGJ5IGdwaW8gZHZzLgorCitBZGRpdGlvbmFsIHByb3BlcnRpZXMgcmVxdWlyZWQgaWYgZWl0aGVyIG9mIHRoZSBvcHRpb25hbCBwcm9wZXJ0aWVzIGFyZSB1c2VkOgorLSBtYXg4OTk3LHBtaWMtaWdub3JlLWdwaW9kdnMtc2lkZS1lZmZlY3Q6IFdoZW4gR1BJTy1EVlMgbW9kZSBpcyB1c2VkIGZvcgorICBtdWx0aXBsZSBidWNrcywgY2hhbmdpbmcgdGhlIHZvbHRhZ2UgdmFsdWUgb2Ygb25lIG9mIHRoZSBidWNrcyBtYXkgYWZmZWN0CisgIHRoYXQgb2YgYW5vdGhlciBidWNrLCB3aGljaCBpcyB0aGUgc2lkZSBlZmZlY3Qgb2YgdGhlIGNoYW5nZSAoc2V0X3ZvbHRhZ2UpLgorICBVc2UgdGhpcyBwcm9wZXJ0eSB0byBpZ25vcmUgc3VjaCBzaWRlIGVmZmVjdHMgYW5kIGNoYW5nZSB0aGUgdm9sdGFnZS4KKworLSBtYXg4OTk3LHBtaWMtYnVjazEyNS1kZWZhdWx0LWR2cy1pZHg6IERlZmF1bHQgdm9sdGFnZSBzZXR0aW5nIHNlbGVjdGVkIGZyb20KKyAgdGhlIHBvc3NpYmxlIDggb3B0aW9ucyBzZWxlY3RhYmxlIGJ5IHRoZSBkdnMgZ3Bpb3MuIFRoZSB2YWx1ZSBvZiB0aGlzCisgIHByb3BlcnR5IHNob3VsZCBiZSBiZXR3ZWVuIDAgYW5kIDcuIElmIG5vdCBzcGVjaWZpZWQgb3IgaWYgb3V0IG9mIHJhbmdlLCB0aGUKKyAgZGVmYXVsdCB2YWx1ZSBvZiB0aGlzIHByb3BlcnR5IGlzIHNldCB0byAwLgorCistIG1heDg5OTcscG1pYy1idWNrMTI1LWR2cy1ncGlvczogR1BJTyBzcGVjaWZpZXJzIGZvciB0aHJlZSBob3N0IGdwaW8ncyB1c2VkCisgIGZvciBkdnMuIFRoZSBmb3JtYXQgb2YgdGhlIGdwaW8gc3BlY2lmaWVyIGRlcGVuZHMgaW4gdGhlIGdwaW8gY29udHJvbGxlci4KKworUmVndWxhdG9yczogVGhlIHJlZ3VsYXRvcnMgb2YgbWF4ODk5NyB0aGF0IGhhdmUgdG8gYmUgaW5zdGFudGlhdGVkIHNob3VsZCBiZQoraW5jbHVkZWQgaW4gYSBzdWItbm9kZSBuYW1lZCAncmVndWxhdG9ycycuIFJlZ3VsYXRvciBub2RlcyBpbmNsdWRlZCBpbiB0aGlzCitzdWItbm9kZSBzaG91bGQgYmUgb2YgdGhlIGZvcm1hdCBhcyBsaXN0ZWQgYmVsb3cuCisKKwlyZWd1bGF0b3JfbmFtZSB7CisJCXN0YW5kYXJkIHJlZ3VsYXRvciBiaW5kaW5ncyBoZXJlCisJfTsKKworVGhlIGZvbGxvd2luZyBhcmUgdGhlIG5hbWVzIG9mIHRoZSByZWd1bGF0b3JzIHRoYXQgdGhlIG1heDg5OTcgcG1pYyBibG9jaworc3VwcG9ydHMuIE5vdGU6IFRoZSAnbicgaW4gTERPbiBhbmQgQlVDS24gcmVwcmVzZW50cyB0aGUgTERPIG9yIEJVQ0sgbnVtYmVyCithcyBwZXIgdGhlIGRhdGFzaGVldCBvZiBtYXg4OTk3LgorCisJLSBMRE9uCisJCSAgLSB2YWxpZCB2YWx1ZXMgZm9yIG4gYXJlIDEgdG8gMTggYW5kIDIxCisJCSAgLSBFeGFtcGxlOiBMRE8wLCBMRDAxLCBMRE8yLCBMRE8yMQorCS0gQlVDS24KKwkJICAtIHZhbGlkIHZhbHVlcyBmb3IgbiBhcmUgMSB0byA3LgorCQkgIC0gRXhhbXBsZTogQlVDSzEsIEJVQ0syLCBCVUNLMywgQlVDSzcKKworCS0gRU5WSUNIRzogQmF0dGVyeSBDaGFyZ2luZyBDdXJyZW50IE1vbml0b3IgT3V0cHV0LiBUaGlzIGlzIGEgZml4ZWQKKwkJICAgdm9sdGFnZSB0eXBlIHJlZ3VsYXRvcgorCisJLSBFU0FGRU9VVDE6IChsZG8xOSkKKwktIEVTQUZFT1VUMjogKGxkMDIwKQorCisJLSBDSEFSR0VSX0NWOiBtYWluIGJhdHRlcnkgY2hhcmdlciB2b2x0YWdlIGNvbnRyb2wKKwktIENIQVJHRVI6IG1haW4gYmF0dGVyeSBjaGFyZ2VyIGN1cnJlbnQgY29udHJvbAorCS0gQ0hBUkdFUl9UT1BPRkY6IGVuZCBvZiBjaGFyZ2UgY3VycmVudCB0aHJlc2hvbGQgbGV2ZWwKKworVGhlIGJpbmRpbmdzIGluc2lkZSB0aGUgcmVndWxhdG9yIG5vZGVzIHVzZSB0aGUgc3RhbmRhcmQgcmVndWxhdG9yIGJpbmRpbmdzCit3aGljaCBhcmUgZG9jdW1lbnRlZCBlbHNld2hlcmUuCisKK0V4YW1wbGU6CisKKwltYXg4OTk3X3BtaWNANjYgeworCQljb21wYXRpYmxlID0gIm1heGltLG1heDg5OTctcG1pYyI7CisJCWludGVycnVwdC1wYXJlbnQgPSA8Jndha2V1cF9laW50PjsKKwkJcmVnID0gPDB4NjY+OworCQlpbnRlcnJ1cHRzID0gPDQgMD4sIDwzIDA+OworCisJCW1heDg5OTcscG1pYy1idWNrMS11c2VzLWdwaW8tZHZzOworCQltYXg4OTk3LHBtaWMtYnVjazItdXNlcy1ncGlvLWR2czsKKwkJbWF4ODk5NyxwbWljLWJ1Y2s1LXVzZXMtZ3Bpby1kdnM7CisKKwkJbWF4ODk5NyxwbWljLWlnbm9yZS1ncGlvZHZzLXNpZGUtZWZmZWN0OworCQltYXg4OTk3LHBtaWMtYnVjazEyNS1kZWZhdWx0LWR2cy1pZHggPSA8MD47CisKKwkJbWF4ODk5NyxwbWljLWJ1Y2sxMjUtZHZzLWdwaW9zID0gPCZncHgwIDAgMSAwIDA+LCAvKiBTRVQxICovCisJCQkJCQkgPCZncHgwIDEgMSAwIDA+LCAvKiBTRVQyICovCisJCQkJCQkgPCZncHgwIDIgMSAwIDA+OyAvKiBTRVQzICovCisKKwkJbWF4ODk5NyxwbWljLWJ1Y2sxLWR2cy12b2x0YWdlID0gPDEzNTAwMDA+LCA8MTMwMDAwMD4sCisJCQkJCQkgPDEyNTAwMDA+LCA8MTIwMDAwMD4sCisJCQkJCQkgPDExNTAwMDA+LCA8MTEwMDAwMD4sCisJCQkJCQkgPDEwMDAwMDA+LCA8OTUwMDAwPjsKKworCQltYXg4OTk3LHBtaWMtYnVjazItZHZzLXZvbHRhZ2UgPSA8MTEwMDAwMD4sIDwxMTAwMDAwPiwKKwkJCQkJCSA8MTEwMDAwMD4sIDwxMTAwMDAwPiwKKwkJCQkJCSA8MTAwMDAwMD4sIDwxMDAwMDAwPiwKKwkJCQkJCSA8MTAwMDAwMD4sIDwxMDAwMDAwPjsKKworCQltYXg4OTk3LHBtaWMtYnVjazUtZHZzLXZvbHRhZ2UgPSA8MTIwMDAwMD4sIDwxMjAwMDAwPiwKKwkJCQkJCSA8MTIwMDAwMD4sIDwxMjAwMDAwPiwKKwkJCQkJCSA8MTIwMDAwMD4sIDwxMjAwMDAwPiwKKwkJCQkJCSA8MTIwMDAwMD4sIDwxMjAwMDAwPjsKKworCQlyZWd1bGF0b3JzIHsKKwkJCWxkbzFfcmVnOiBMRE8xIHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJWRERfQUJCXzMuM1YiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJfTsKKworCQkJbGRvMl9yZWc6IExETzIgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gIlZERF9BTElWRV8xLjFWIjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMTAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxMTAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJYnVjazFfcmVnOiBCVUNLMSB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAiVkREX0FSTV8xLjJWIjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw5NTAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDEzNTAwMDA+OworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL210NjMxMS1yZWd1bGF0b3IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9tdDYzMTEtcmVndWxhdG9yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjY0OWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9tdDYzMTEtcmVndWxhdG9yLnR4dApAQCAtMCwwICsxLDM1IEBACitNZWRpYXRlayBNVDYzMTEgUmVndWxhdG9yIERyaXZlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAibWVkaWF0ZWssbXQ2MzExLXJlZ3VsYXRvciIKKy0gcmVnOiBJMkMgc2xhdmUgYWRkcmVzcywgdXN1YWxseSAweDZiLgorLSByZWd1bGF0b3JzOiBMaXN0IG9mIHJlZ3VsYXRvcnMgcHJvdmlkZWQgYnkgdGhpcyBjb250cm9sbGVyLiBJdCBpcyBuYW1lZAorICB0byBWRFZGUyBhbmQgVkJJQVNOLgorICBUaGUgZGVmaW5pdGlvbiBmb3IgZWFjaCBvZiB0aGVzZSBub2RlcyBpcyBkZWZpbmVkIHVzaW5nIHRoZSBzdGFuZGFyZCBiaW5kaW5nCisgIGZvciByZWd1bGF0b3JzIGF0IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvcmVndWxhdG9yLnR4dC4KKworVGhlIHZhbGlkIG5hbWVzIGZvciByZWd1bGF0b3JzIGFyZToKK0JVQ0s6CisgIFZEVkZTCitMRE86CisgIFZCSUFTTgorCitFeGFtcGxlOgorCW10NjMxMTogcG1pY0A2YiB7CisJCWNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ2MzExLXJlZ3VsYXRvciI7CisJCXJlZyA9IDwweDZiPjsKKworCQlyZWd1bGF0b3JzIHsKKwkJCW10NjMxMV92Y3B1X3JlZzogVkRWRlMgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gIlZEVkZTIjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwgNjAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxNDAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItcmFtcC1kZWxheSA9IDwxMDAwMD47CisJCQl9OworCQkJbXQ2MzExX2xkb19yZWc6IFZCSUFTTiB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAiVkJJQVNOIjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwyMDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDgwMDAwMD47CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL210NjM5Ny1yZWd1bGF0b3IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9tdDYzOTctcmVndWxhdG9yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDJiMWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9tdDYzOTctcmVndWxhdG9yLnR4dApAQCAtMCwwICsxLDIxNyBAQAorTWVkaWF0ZWsgTVQ2Mzk3IFJlZ3VsYXRvciBEcml2ZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogIm1lZGlhdGVrLG10NjM5Ny1yZWd1bGF0b3IiCistIG10NjM5N3JlZ3VsYXRvcjogTGlzdCBvZiByZWd1bGF0b3JzIHByb3ZpZGVkIGJ5IHRoaXMgY29udHJvbGxlci4gSXQgaXMgbmFtZWQKKyAgYWNjb3JkaW5nIHRvIGl0cyByZWd1bGF0b3IgdHlwZSwgYnVja188bmFtZT4gYW5kIGxkb188bmFtZT4uCisgIFRoZSBkZWZpbml0aW9uIGZvciBlYWNoIG9mIHRoZXNlIG5vZGVzIGlzIGRlZmluZWQgdXNpbmcgdGhlIHN0YW5kYXJkIGJpbmRpbmcKKyAgZm9yIHJlZ3VsYXRvcnMgYXQgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9yZWd1bGF0b3IudHh0LgorCitUaGUgdmFsaWQgbmFtZXMgZm9yIHJlZ3VsYXRvcnMgYXJlOjoKK0JVQ0s6CisgIGJ1Y2tfdnBjYTE1LCBidWNrX3ZwY2E3LCBidWNrX3ZzcmFtY2ExNSwgYnVja192c3JhbWNhNywgYnVja192Y29yZSwgYnVja192Z3B1LAorICBidWNrX3Zkcm0sIGJ1Y2tfdmlvMTgKK0xETzoKKyAgbGRvX3Z0Y3hvLCBsZG9fdmEyOCwgbGRvX3ZjYW1hLCBsZG9fdmlvMjgsIGxkb192dXNiLCBsZG9fdm1jLCBsZG9fdm1jaCwKKyAgbGRvX3ZlbWMzdjMsIGxkb192Z3AxLCBsZG9fdmdwMiwgbGRvX3ZncDMsIGxkb192Z3A0LCBsZG9fdmdwNSwgbGRvX3ZncDYsCisgIGxkb192aWJyCisKK0V4YW1wbGU6CisJcG1pYyB7CisJCWNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ2Mzk3IjsKKworCQltdDYzOTdyZWd1bGF0b3I6IG10NjM5N3JlZ3VsYXRvciB7CisJCQljb21wYXRpYmxlID0gIm1lZGlhdGVrLG10NjM5Ny1yZWd1bGF0b3IiOworCisJCQltdDYzOTdfdnBjYTE1X3JlZzogYnVja192cGNhMTUgeworCQkJCXJlZ3VsYXRvci1jb21wYXRpYmxlID0gImJ1Y2tfdnBjYTE1IjsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJ2cGNhMTUiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPCA4NTAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDEzNTAwMDA+OworCQkJCXJlZ3VsYXRvci1yYW1wLWRlbGF5ID0gPDEyNTAwPjsKKwkJCQlyZWd1bGF0b3ItZW5hYmxlLXJhbXAtZGVsYXkgPSA8MjAwPjsKKwkJCX07CisKKwkJCW10NjM5N192cGNhN19yZWc6IGJ1Y2tfdnBjYTcgeworCQkJCXJlZ3VsYXRvci1jb21wYXRpYmxlID0gImJ1Y2tfdnBjYTciOworCQkJCXJlZ3VsYXRvci1uYW1lID0gInZwY2E3IjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwgODUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxMzUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItcmFtcC1kZWxheSA9IDwxMjUwMD47CisJCQkJcmVndWxhdG9yLWVuYWJsZS1yYW1wLWRlbGF5ID0gPDExNT47CisJCQl9OworCisJCQltdDYzOTdfdnNyYW1jYTE1X3JlZzogYnVja192c3JhbWNhMTUgeworCQkJCXJlZ3VsYXRvci1jb21wYXRpYmxlID0gImJ1Y2tfdnNyYW1jYTE1IjsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJ2c3JhbWNhMTUiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPCA4NTAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDEzNTAwMDA+OworCQkJCXJlZ3VsYXRvci1yYW1wLWRlbGF5ID0gPDEyNTAwPjsKKwkJCQlyZWd1bGF0b3ItZW5hYmxlLXJhbXAtZGVsYXkgPSA8MTE1PjsKKworCQkJfTsKKworCQkJbXQ2Mzk3X3ZzcmFtY2E3X3JlZzogYnVja192c3JhbWNhNyB7CisJCQkJcmVndWxhdG9yLWNvbXBhdGlibGUgPSAiYnVja192c3JhbWNhNyI7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidnNyYW1jYTciOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPCA4NTAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDEzNTAwMDA+OworCQkJCXJlZ3VsYXRvci1yYW1wLWRlbGF5ID0gPDEyNTAwPjsKKwkJCQlyZWd1bGF0b3ItZW5hYmxlLXJhbXAtZGVsYXkgPSA8MTE1PjsKKworCQkJfTsKKworCQkJbXQ2Mzk3X3Zjb3JlX3JlZzogYnVja192Y29yZSB7CisJCQkJcmVndWxhdG9yLWNvbXBhdGlibGUgPSAiYnVja192Y29yZSI7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmNvcmUiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPCA4NTAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDEzNTAwMDA+OworCQkJCXJlZ3VsYXRvci1yYW1wLWRlbGF5ID0gPDEyNTAwPjsKKwkJCQlyZWd1bGF0b3ItZW5hYmxlLXJhbXAtZGVsYXkgPSA8MTE1PjsKKwkJCX07CisKKwkJCW10NjM5N192Z3B1X3JlZzogYnVja192Z3B1IHsKKwkJCQlyZWd1bGF0b3ItY29tcGF0aWJsZSA9ICJidWNrX3ZncHUiOworCQkJCXJlZ3VsYXRvci1uYW1lID0gInZncHUiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPCA3MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDEzNTAwMDA+OworCQkJCXJlZ3VsYXRvci1yYW1wLWRlbGF5ID0gPDEyNTAwPjsKKwkJCQlyZWd1bGF0b3ItZW5hYmxlLXJhbXAtZGVsYXkgPSA8MTE1PjsKKwkJCX07CisKKwkJCW10NjM5N192ZHJtX3JlZzogYnVja192ZHJtIHsKKwkJCQlyZWd1bGF0b3ItY29tcGF0aWJsZSA9ICJidWNrX3Zkcm0iOworCQkJCXJlZ3VsYXRvci1uYW1lID0gInZkcm0iOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPCA4MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE0MDAwMDA+OworCQkJCXJlZ3VsYXRvci1yYW1wLWRlbGF5ID0gPDEyNTAwPjsKKwkJCQlyZWd1bGF0b3ItZW5hYmxlLXJhbXAtZGVsYXkgPSA8NTAwPjsKKwkJCX07CisKKwkJCW10NjM5N192aW8xOF9yZWc6IGJ1Y2tfdmlvMTggeworCQkJCXJlZ3VsYXRvci1jb21wYXRpYmxlID0gImJ1Y2tfdmlvMTgiOworCQkJCXJlZ3VsYXRvci1uYW1lID0gInZpbzE4IjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxNTAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwyMTIwMDAwPjsKKwkJCQlyZWd1bGF0b3ItcmFtcC1kZWxheSA9IDwxMjUwMD47CisJCQkJcmVndWxhdG9yLWVuYWJsZS1yYW1wLWRlbGF5ID0gPDUwMD47CisJCQl9OworCisJCQltdDYzOTdfdnRjeG9fcmVnOiBsZG9fdnRjeG8geworCQkJCXJlZ3VsYXRvci1jb21wYXRpYmxlID0gImxkb192dGN4byI7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidnRjeG8iOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDI4MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDI4MDAwMDA+OworCQkJCXJlZ3VsYXRvci1lbmFibGUtcmFtcC1kZWxheSA9IDw5MD47CisJCQl9OworCisJCQltdDYzOTdfdmEyOF9yZWc6IGxkb192YTI4IHsKKwkJCQlyZWd1bGF0b3ItY29tcGF0aWJsZSA9ICJsZG9fdmEyOCI7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmEyOCI7CisJCQkJLyogZml4ZWQgb3V0cHV0IDIuOCBWICovCisJCQkJcmVndWxhdG9yLWVuYWJsZS1yYW1wLWRlbGF5ID0gPDIxOD47CisJCQl9OworCisJCQltdDYzOTdfdmNhbWFfcmVnOiBsZG9fdmNhbWEgeworCQkJCXJlZ3VsYXRvci1jb21wYXRpYmxlID0gImxkb192Y2FtYSI7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmNhbWEiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDE1MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDI4MDAwMDA+OworCQkJCXJlZ3VsYXRvci1lbmFibGUtcmFtcC1kZWxheSA9IDwyMTg+OworCQkJfTsKKworCQkJbXQ2Mzk3X3ZpbzI4X3JlZzogbGRvX3ZpbzI4IHsKKwkJCQlyZWd1bGF0b3ItY29tcGF0aWJsZSA9ICJsZG9fdmlvMjgiOworCQkJCXJlZ3VsYXRvci1uYW1lID0gInZpbzI4IjsKKwkJCQkvKiBmaXhlZCBvdXRwdXQgMi44IFYgKi8KKwkJCQlyZWd1bGF0b3ItZW5hYmxlLXJhbXAtZGVsYXkgPSA8MjQwPjsKKwkJCX07CisKKwkJCW10NjM5N191c2JfcmVnOiBsZG9fdnVzYiB7CisJCQkJcmVndWxhdG9yLWNvbXBhdGlibGUgPSAibGRvX3Z1c2IiOworCQkJCXJlZ3VsYXRvci1uYW1lID0gInZ1c2IiOworCQkJCS8qIGZpeGVkIG91dHB1dCAzLjMgViAqLworCQkJCXJlZ3VsYXRvci1lbmFibGUtcmFtcC1kZWxheSA9IDwyMTg+OworCQkJfTsKKworCQkJbXQ2Mzk3X3ZtY19yZWc6IGxkb192bWMgeworCQkJCXJlZ3VsYXRvci1jb21wYXRpYmxlID0gImxkb192bWMiOworCQkJCXJlZ3VsYXRvci1uYW1lID0gInZtYyI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTgwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCQkJcmVndWxhdG9yLWVuYWJsZS1yYW1wLWRlbGF5ID0gPDIxOD47CisJCQl9OworCisJCQltdDYzOTdfdm1jaF9yZWc6IGxkb192bWNoIHsKKwkJCQlyZWd1bGF0b3ItY29tcGF0aWJsZSA9ICJsZG9fdm1jaCI7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidm1jaCI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MzAwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCQkJcmVndWxhdG9yLWVuYWJsZS1yYW1wLWRlbGF5ID0gPDIxOD47CisJCQl9OworCisJCQltdDYzOTdfdmVtY18zdjNfcmVnOiBsZG9fdmVtYzN2MyB7CisJCQkJcmVndWxhdG9yLWNvbXBhdGlibGUgPSAibGRvX3ZlbWMzdjMiOworCQkJCXJlZ3VsYXRvci1uYW1lID0gInZlbWNfM3YzIjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwzMDAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItZW5hYmxlLXJhbXAtZGVsYXkgPSA8MjE4PjsKKwkJCX07CisKKwkJCW10NjM5N192Z3AxX3JlZzogbGRvX3ZncDEgeworCQkJCXJlZ3VsYXRvci1jb21wYXRpYmxlID0gImxkb192Z3AxIjsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJ2Y2FtZCI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTIyMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCQkJcmVndWxhdG9yLWVuYWJsZS1yYW1wLWRlbGF5ID0gPDI0MD47CisJCQl9OworCisJCQltdDYzOTdfdmdwMl9yZWc6IGxkb192Z3AyIHsKKwkJCQllZ3VsYXRvci1jb21wYXRpYmxlID0gImxkb192Z3AyIjsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJ2Y2FtaW8iOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDEwMDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJCXJlZ3VsYXRvci1lbmFibGUtcmFtcC1kZWxheSA9IDwyMTg+OworCQkJfTsKKworCQkJbXQ2Mzk3X3ZncDNfcmVnOiBsZG9fdmdwMyB7CisJCQkJcmVndWxhdG9yLWNvbXBhdGlibGUgPSAibGRvX3ZncDMiOworCQkJCXJlZ3VsYXRvci1uYW1lID0gInZjYW1hZiI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTIwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCQkJcmVndWxhdG9yLWVuYWJsZS1yYW1wLWRlbGF5ID0gPDIxOD47CisJCQl9OworCisJCQltdDYzOTdfdmdwNF9yZWc6IGxkb192Z3A0IHsKKwkJCQlyZWd1bGF0b3ItY29tcGF0aWJsZSA9ICJsZG9fdmdwNCI7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmdwNCI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTIwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCQkJcmVndWxhdG9yLWVuYWJsZS1yYW1wLWRlbGF5ID0gPDIxOD47CisJCQl9OworCisJCQltdDYzOTdfdmdwNV9yZWc6IGxkb192Z3A1IHsKKwkJCQlyZWd1bGF0b3ItY29tcGF0aWJsZSA9ICJsZG9fdmdwNSI7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmdwNSI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTIwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzAwMDAwMD47CisJCQkJcmVndWxhdG9yLWVuYWJsZS1yYW1wLWRlbGF5ID0gPDIxOD47CisJCQl9OworCisJCQltdDYzOTdfdmdwNl9yZWc6IGxkb192Z3A2IHsKKwkJCQlyZWd1bGF0b3ItY29tcGF0aWJsZSA9ICJsZG9fdmdwNiI7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmdwNiI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTIwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCQkJcmVndWxhdG9yLWVuYWJsZS1yYW1wLWRlbGF5ID0gPDIxOD47CisJCQl9OworCisJCQltdDYzOTdfdmlicl9yZWc6IGxkb192aWJyIHsKKwkJCQlyZWd1bGF0b3ItY29tcGF0aWJsZSA9ICJsZG9fdmliciI7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmliciI7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTIwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCQkJcmVndWxhdG9yLWVuYWJsZS1yYW1wLWRlbGF5ID0gPDIxOD47CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3BhbG1hcy1wbWljLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvcGFsbWFzLXBtaWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyNTM5M2MKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3BhbG1hcy1wbWljLnR4dApAQCAtMCwwICsxLDgyIEBACisqIHBhbG1hcyByZWd1bGF0b3IgSVAgYmxvY2sgZGV2aWNldHJlZSBiaW5kaW5ncworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlIGZyb20gdGhlIGxpc3QKKyAgdGksdHdsNjAzNS1wbWljCisgIHRpLHR3bDYwMzYtcG1pYworICB0aSx0d2w2MDM3LXBtaWMKKyAgdGksdHBzNjU5MTMtcG1pYworICB0aSx0cHM2NTkxNC1wbWljCisgIHRpLHRwczY1OTE3LXBtaWMKK2FuZCBhbHNvIHRoZSBnZW5lcmljIHNlcmllcyBuYW1lcworICB0aSxwYWxtYXMtcG1pYworLSBpbnRlcnJ1cHQtcGFyZW50IDogVGhlIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlciB3aGljaCBpcyBwYWxtYXMuCistIGludGVycnVwdHMgOiBUaGUgaW50ZXJydXB0IG51bWJlciBhbmQgdGhlIHR5cGUgd2hpY2ggY2FuIGJlIGxvb2tlZCB1cCBoZXJlOgorCSAgICAgICBhcmNoL2FybS9ib290L2R0cy9pbmNsdWRlL2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oCistIGludGVycnVwdHMtbmFtZTogVGhlIG5hbWVzIG9mIHRoZSBpbmRpdmlkdWFsIGludGVycnVwdHMuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHRpLGxkbzYtdmlicmF0b3IgOiBsZG82IGlzIGluIHZpYnJhdG9yIG1vZGUKKworT3B0aW9uYWwgbm9kZXM6CistIHJlZ3VsYXRvcnMgOiBNdXN0IGNvbnRhaW4gYSBzdWItbm9kZSBwZXIgcmVndWxhdG9yIGZyb20gdGhlIGxpc3QgYmVsb3cuCisJICAgICAgIEVhY2ggc3ViLW5vZGUgc2hvdWxkIGNvbnRhaW4gdGhlIGNvbnN0cmFpbnRzIGFuZCBpbml0aWFsaXphdGlvbgorCSAgICAgICBpbmZvcm1hdGlvbiBmb3IgdGhhdCByZWd1bGF0b3IuIFNlZSByZWd1bGF0b3IudHh0IGZvciBhCisJICAgICAgIGRlc2NyaXB0aW9uIG9mIHN0YW5kYXJkIHByb3BlcnRpZXMgZm9yIHRoZXNlIHN1Yi1ub2Rlcy4KKwkgICAgICAgQWRkaXRpb25hbCBjdXN0b20gcHJvcGVydGllcyAgYXJlIGxpc3RlZCBiZWxvdy4KKworCSAgICAgICBGb3IgdGkscGFsbWFzLXBtaWMgLSBzbXBzMTIsIHNtcHMxMjMsIHNtcHMzIGRlcGVuZGluZyBvbiBPVFAsCisJICAgICAgIHNtcHM0NSwgc21wczQ1Nywgc21wczcgZGVwZW5kaW5nIG9uIHZhcmlhbnQsIHNtcHM2LCBzbXBzWzgtOV0sCisJICAgICAgIHNtcHMxMF9vdXQyLCBzbXBzMTBfb3V0MSwgbGRvWzEtOV0sIGxkb2xuLCBsZG91c2IuCisKKwkgICAgICAgT3B0aW9uYWwgc3ViLW5vZGUgcHJvcGVydGllczoKKwkgICAgICAgdGksd2FybS1yZXNldCAtIG1haW50YWluIHZvbHRhZ2UgZHVyaW5nIHdhcm0gcmVzZXQoYm9vbGVhbikKKwkgICAgICAgdGkscm9vZi1mbG9vciAtIFRoaXMgdGFrZXMgYXMgb3B0aW9uYWwgYXJndW1lbnQgb24gcGxhdGZvcm0gc3VwcG9ydGluZworCSAgICAgICB0aGUgcmFpbCBmcm9tIGRlc2lyZWQgZXh0ZXJuYWwgY29udHJvbC4gSWYgdGhlcmUgaXMgbm8gYXJndW1lbnQgdGhlbgorCSAgICAgICBpdCB3aWxsIGJlIGFzc3VtZSB0aGF0IGl0IGlzIGNvbnRyb2xsZWQgYnkgTlNMRUVQIHBpbi4KKwkgICAgICAgVGhlIHZhbGlkIHZhbHVlIGZvciBleHRlcm5hbCBwaW5zIGFyZToKKwkJCUVOQUJMRTEgdGhlbiAxLAorCQkJRU5BQkxFMiB0aGVuIDIgb3IKKwkJCU5TTEVFUCB0aGVuIDMuCisJICAgICAgIHRpLG1vZGUtc2xlZXAgLSBtb2RlIHRvIGFkb3B0IGluIHBtaWMgc2xlZXAgMCAtIG9mZiwgMSAtIGF1dG8sCisJICAgICAgIDIgLSBlY28sIDMgLSBmb3JjZWQgcHdtCisJICAgICAgIHRpLHNtcHMtcmFuZ2UgLSBPVFAgaGFzIHRoZSB3cm9uZyByYW5nZSBzZXQgZm9yIHRoZSBoYXJkd2FyZSBzbyBvdmVycmlkZQorCSAgICAgICAwIC0gbG93IHJhbmdlLCAxIC0gaGlnaCByYW5nZS4KKworLSB0aSxzeXN0ZW0tcG93ZXItY29udHJvbGxlcjogVGVsbGluZyB3aGV0aGVyIG9yIG5vdCB0aGlzIHBtaWMgaXMgY29udHJvbGxpbmcKKwkJCSAgICAgIHRoZSBzeXN0ZW0gcG93ZXIuCisKK0V4YW1wbGU6CisKKyNpbmNsdWRlIDxkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaD4KKworcG1pYyB7CisJY29tcGF0aWJsZSA9ICJ0aSx0d2w2MDM1LXBtaWMiLCAidGkscGFsbWFzLXBtaWMiOworCWludGVycnVwdC1wYXJlbnQgPSA8JnBhbG1hcz47CisJaW50ZXJydXB0cyA9IDwxNCBJUlFfVFlQRV9OT05FPjsKKwlpbnRlcnJ1cHRzLW5hbWUgPSAic2hvcnQtaXJxIjsKKworCXRpLGxkbzYtdmlicmF0b3I7CisKKwl0aSxzeXN0ZW0tcG93ZXItY29udHJvbGxlcjsKKworCXJlZ3VsYXRvcnMgeworCQlzbXBzMTJfcmVnIDogc21wczEyIHsKKwkJCXJlZ3VsYXRvci1uYW1lID0gInNtcHMxMiI7CisJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwgNjAwMDAwPjsKKwkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE1MDAwMDA+OworCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJdGksd2FybS1yZXNldDsKKwkJCXRpLHJvb2YtZmxvb3IgPSA8MT47IC8qIEVOQUJMRTEgY29udHJvbCAqLworCQkJdGksbW9kZS1zbGVlcCA9IDwwPjsKKwkJCXRpLHNtcHMtcmFuZ2UgPSA8MT47CisJCX07CisKKwkJbGRvMV9yZWc6IGxkbzEgeworCQkJcmVndWxhdG9yLW5hbWUgPSAibGRvMSI7CisJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwyODAwMDAwPjsKKwkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDI4MDAwMDA+OworCQl9OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9wYmlhcy1yZWd1bGF0b3IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9wYmlhcy1yZWd1bGF0b3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjYmNiNDUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3BiaWFzLXJlZ3VsYXRvci50eHQKQEAgLTAsMCArMSwzMiBAQAorUEJJQVMgaW50ZXJuYWwgcmVndWxhdG9yIGZvciBTRCBjYXJkIGR1YWwgdm9sdGFnZSBpL28gcGFkcyBvbiBPTUFQIFNvQ3MuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CisgIC0gc2hvdWxkIGJlICJ0aSxwYmlhcy1kcmE3IiBmb3IgRFJBNworICAtIHNob3VsZCBiZSAidGkscGJpYXMtb21hcDIiIGZvciBPTUFQMgorICAtIHNob3VsZCBiZSAidGkscGJpYXMtb21hcDMiIGZvciBPTUFQMworICAtIHNob3VsZCBiZSAidGkscGJpYXMtb21hcDQiIGZvciBPTUFQNAorICAtIHNob3VsZCBiZSAidGkscGJpYXMtb21hcDUiIGZvciBPTUFQNQorICAtICJ0aSxwYmlhcy1vbWFwIiBpcyBkZXByZWNhdGVkCistIHJlZzogcGJpYXMgcmVnaXN0ZXIgb2Zmc2V0IGZyb20gc3lzY29uIGJhc2UgYW5kIHNpemUgb2YgcGJpYXMgcmVnaXN0ZXIuCistIHN5c2NvbiA6IHBoYW5kbGUgb2YgdGhlIHN5c3RlbSBjb250cm9sIG1vZHVsZQorLSByZWd1bGF0b3ItbmFtZSA6IHNob3VsZCBiZQorCQkJcGJpYXNfbW1jX29tYXAyNDMwIGZvciBPTUFQMjQzMCwgT01BUDMgU29DcworCQkJcGJpYXNfc2ltX29tYXAzIGZvciBPTUFQMyBTb0NzCisJCQlwYmlhc19tbWNfb21hcDQgZm9yIE9NQVA0IFNvQ3MKKwkJCXBiaWFzX21tY19vbWFwNSBmb3IgT01BUDUgYW5kIERSQTcgU29DCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIEFueSBvcHRpb25hbCBwcm9wZXJ0eSBkZWZpbmVkIGluIGJpbmRpbmdzL3JlZ3VsYXRvci9yZWd1bGF0b3IudHh0CisKK0V4YW1wbGU6CisKKwkJcGJpYXNfcmVndWxhdG9yOiBwYmlhc19yZWd1bGF0b3IgeworCQkJY29tcGF0aWJsZSA9ICJ0aSxwYmlhcy1vbWFwIjsKKwkJCXJlZyA9IDwwIDB4ND47CisJCQlzeXNjb24gPSA8Jm9tYXA1X3BhZGNvbmZfZ2xvYmFsPjsKKwkJCXBiaWFzX21tY19yZWc6IHBiaWFzX21tY19vbWFwNSB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAicGJpYXNfbW1jX29tYXA1IjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMDAwMDAwPjsKKwkJCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3BmdXplMTAwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvcGZ1emUxMDAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliNDBkYjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3BmdXplMTAwLnR4dApAQCAtMCwwICsxLDI5OSBAQAorUEZVWkUxMDAgZmFtaWx5IG9mIHJlZ3VsYXRvcnMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogImZzbCxwZnV6ZTEwMCIsICJmc2wscGZ1emUyMDAiLCAiZnNsLHBmdXplMzAwMCIKKy0gcmVnOiBJMkMgc2xhdmUgYWRkcmVzcworCitSZXF1aXJlZCBjaGlsZCBub2RlOgorLSByZWd1bGF0b3JzOiBUaGlzIGlzIHRoZSBsaXN0IG9mIGNoaWxkIG5vZGVzIHRoYXQgc3BlY2lmeSB0aGUgcmVndWxhdG9yCisgIGluaXRpYWxpemF0aW9uIGRhdGEgZm9yIGRlZmluZWQgcmVndWxhdG9ycy4gUGxlYXNlIHJlZmVyIHRvIGJlbG93IGRvYworICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3JlZ3VsYXRvci50eHQuCisKKyAgVGhlIHZhbGlkIG5hbWVzIGZvciByZWd1bGF0b3JzIGFyZToKKyAgLS1QRlVaRTEwMAorICBzdzFhYixzdzFjLHN3MixzdzNhLHN3M2Isc3c0LHN3YnN0LHZzbnZzLHZyZWZkZHIsdmdlbjF+dmdlbjYKKyAgLS1QRlVaRTIwMAorICBzdzFhYixzdzIsc3czYSxzdzNiLHN3YnN0LHZzbnZzLHZyZWZkZHIsdmdlbjF+dmdlbjYKKyAgLS1QRlVaRTMwMDAKKyAgc3cxYSxzdzFiLHN3MixzdzMsc3dic3QsdnNudnMsdnJlZmRkcix2bGRvMSx2bGRvMix2Y2NzZCx2MzMsdmxkbzMsdmxkbzQKKworRWFjaCByZWd1bGF0b3IgaXMgZGVmaW5lZCB1c2luZyB0aGUgc3RhbmRhcmQgYmluZGluZyBmb3IgcmVndWxhdG9ycy4KKworRXhhbXBsZSAxOiBQRlVaRTEwMAorCisJcG1pYzogcGZ1emUxMDBAMDggeworCQljb21wYXRpYmxlID0gImZzbCxwZnV6ZTEwMCI7CisJCXJlZyA9IDwweDA4PjsKKworCQlyZWd1bGF0b3JzIHsKKwkJCXN3MWFfcmVnOiBzdzFhYiB7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxODc1MDAwPjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJCXJlZ3VsYXRvci1yYW1wLWRlbGF5ID0gPDYyNTA+OworCQkJfTsKKworCQkJc3cxY19yZWc6IHN3MWMgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDMwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTg3NTAwMD47CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCXN3Ml9yZWc6IHN3MiB7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8ODAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJc3czYV9yZWc6IHN3M2EgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDQwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTk3NTAwMD47CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCXN3M2JfcmVnOiBzdzNiIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw0MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE5NzUwMDA+OworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQlzdzRfcmVnOiBzdzQgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDgwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCQl9OworCisJCQlzd2JzdF9yZWc6IHN3YnN0IHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw1MDAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDw1MTUwMDAwPjsKKwkJCX07CisKKwkJCXNudnNfcmVnOiB2c252cyB7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTAwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzAwMDAwMD47CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCXZyZWZfcmVnOiB2cmVmZGRyIHsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJdmdlbjFfcmVnOiB2Z2VuMSB7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8ODAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxNTUwMDAwPjsKKwkJCX07CisKKwkJCXZnZW4yX3JlZzogdmdlbjIgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDgwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTU1MDAwMD47CisJCQl9OworCisJCQl2Z2VuM19yZWc6IHZnZW4zIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCX07CisKKwkJCXZnZW40X3JlZzogdmdlbjQgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDE4MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQl2Z2VuNV9yZWc6IHZnZW41IHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJdmdlbjZfcmVnOiB2Z2VuNiB7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTgwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisJCX07CisJfTsKKworCitFeGFtcGxlIDI6IFBGVVpFMjAwCisKKwlwbWljOiBwZnV6ZTIwMEAwOCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLHBmdXplMjAwIjsKKwkJcmVnID0gPDB4MDg+OworCisJCXJlZ3VsYXRvcnMgeworCQkJc3cxYV9yZWc6IHN3MWFiIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwzMDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE4NzUwMDA+OworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQkJcmVndWxhdG9yLXJhbXAtZGVsYXkgPSA8NjI1MD47CisJCQl9OworCisJCQlzdzJfcmVnOiBzdzIgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDgwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCXN3M2FfcmVnOiBzdzNhIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw0MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE5NzUwMDA+OworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQlzdzNiX3JlZzogc3czYiB7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8NDAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxOTc1MDAwPjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJc3dic3RfcmVnOiBzd2JzdCB7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8NTAwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8NTE1MDAwMD47CisJCQl9OworCisJCQlzbnZzX3JlZzogdnNudnMgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDEwMDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMwMDAwMDA+OworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQl2cmVmX3JlZzogdnJlZmRkciB7CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCXZnZW4xX3JlZzogdmdlbjEgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDgwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTU1MDAwMD47CisJCQl9OworCisJCQl2Z2VuMl9yZWc6IHZnZW4yIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw4MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE1NTAwMDA+OworCQkJfTsKKworCQkJdmdlbjNfcmVnOiB2Z2VuMyB7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTgwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCQl9OworCisJCQl2Z2VuNF9yZWc6IHZnZW40IHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJdmdlbjVfcmVnOiB2Z2VuNSB7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTgwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCXZnZW42X3JlZzogdmdlbjYgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDE4MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCQl9OworCX07CisKK0V4YW1wbGUgMzogUEZVWkUzMDAwCisKKwlwbWljOiBwZnV6ZTMwMDBAMDggeworCQljb21wYXRpYmxlID0gImZzbCxwZnV6ZTMwMDAiOworCQlyZWcgPSA8MHgwOD47CisKKwkJcmVndWxhdG9ycyB7CisJCQlzdzFhX3JlZzogc3cxYSB7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8NzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxNDc1MDAwPjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJCXJlZ3VsYXRvci1yYW1wLWRlbGF5ID0gPDYyNTA+OworCQkJfTsKKwkJCS8qIHVzZSBzdzFjX3JlZyB0byBhbGlnbiB3aXRoIHBmdXplMTAwL3BmdXplMjAwICovCisJCQlzdzFjX3JlZzogc3cxYiB7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8NzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxNDc1MDAwPjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJCXJlZ3VsYXRvci1yYW1wLWRlbGF5ID0gPDYyNTA+OworCQkJfTsKKworCQkJc3cyX3JlZzogc3cyIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwyNTAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJc3czYV9yZWc6IHN3MyB7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8OTAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxNjUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJc3dic3RfcmVnOiBzd2JzdCB7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8NTAwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8NTE1MDAwMD47CisJCQl9OworCisJCQlzbnZzX3JlZzogdnNudnMgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDEwMDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMwMDAwMDA+OworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQl2cmVmX3JlZzogdnJlZmRkciB7CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCXZnZW4xX3JlZzogdmxkbzEgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDE4MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQl2Z2VuMl9yZWc6IHZsZG8yIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw4MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE1NTAwMDA+OworCQkJfTsKKworCQkJdmdlbjNfcmVnOiB2Y2NzZCB7CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8Mjg1MDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCXZnZW40X3JlZzogdjMzIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwyODUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCX07CisKKwkJCXZnZW41X3JlZzogdmxkbzMgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDE4MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQl2Z2VuNl9yZWc6IHZsZG80IHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9wd20tcmVndWxhdG9yLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvcHdtLXJlZ3VsYXRvci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ5MzZmMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvcHdtLXJlZ3VsYXRvci50eHQKQEAgLTAsMCArMSw2OCBAQAorQmluZGluZ3MgZm9yIHRoZSBHZW5lcmljIFBXTSBSZWd1bGF0b3IKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0N1cnJlbnRseSBzdXBwb3J0cyAyIG1vZGVzIG9mIG9wZXJhdGlvbjoKKworVm9sdGFnZSBUYWJsZToJCVdoZW4gaW4gdGhpcyBtb2RlLCBhIHZvbHRhZ2UgdGFibGUgKFNlZSBiZWxvdykgb2YKKwkJCXByZWRlZmluZWQgdm9sdGFnZSA8PT4gZHV0eS1jeWNsZSB2YWx1ZXMgbXVzdCBiZQorCQkJcHJvdmlkZWQgdmlhIERULiBMaW1pdGF0aW9ucyBhcmUgdGhhdCB0aGUgcmVndWxhdG9yIGNhbgorCQkJb25seSBvcGVyYXRlIGF0IHRoZSB2b2x0YWdlcyBzdXBwbGllZCBpbiB0aGUgdGFibGUuCisJCQlJbnRlcm1lZGlhcnkgZHV0eS1jeWNsZSB2YWx1ZXMgd2hpY2ggd291bGQgbm9ybWFsbHkKKwkJCWFsbG93IGZpbmVyIGdyYWluZWQgdm9sdGFnZSBzZWxlY3Rpb24gYXJlIGlnbm9yZWQgYW5kCisJCQlyZW5kZXJlZCB1c2VsZXNzLiAgQWx0aG91Z2ggbW9yZSBjb250cm9sIGlzIGdpdmVuIHRvCisJCQl0aGUgdXNlciBpZiB0aGUgYXNzdW1wdGlvbnMgbWFkZSBpbiBjb250aW51b3VzLXZvbHRhZ2UKKwkJCW1vZGUgZG8gbm90IHJlaWduIHRydWUuCisKK0NvbnRpbnVvdXMgVm9sdGFnZToJVGhpcyBtb2RlIHVzZXMgdGhlIHJlZ3VsYXRvcidzIG1heGltdW0gYW5kIG1pbmltdW0KKwkJCXN1cHBsaWVkIHZvbHRhZ2VzIHNwZWNpZmllZCBpbiB0aGUKKwkJCXJlZ3VsYXRvci17bWluLG1heH0tbWljcm92b2x0IHByb3BlcnRpZXMgdG8gY2FsY3VsYXRlCisJCQlhcHByb3ByaWF0ZSBkdXR5LWN5Y2xlIHZhbHVlcy4gIFRoaXMgYWxsb3dzIGZvciBhIG11Y2gKKwkJCW1vcmUgZmluZSBncmFpbmVkIHNvbHV0aW9uIHdoZW4gY29tcGFyZWQgd2l0aAorCQkJdm9sdGFnZS10YWJsZSBtb2RlIGFib3ZlLiAgVGhpcyBzb2x1dGlvbiBkb2VzIG1ha2UgYW4KKwkJCWFzc3VtcHRpb24gdGhhdCBhICU1MCBkdXR5LWN5Y2xlIHZhbHVlIHdpbGwgY2F1c2UgdGhlCisJCQlyZWd1bGF0b3Igdm9sdGFnZSB0byBydW4gYXQgaGFsZiB3YXkgYmV0d2VlbiB0aGUKKwkJCXN1cHBsaWVkIG1heF91ViBhbmQgbWluX3VWIHZhbHVlcy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCistIGNvbXBhdGlibGU6CQlTaG91bGQgYmUgInB3bS1yZWd1bGF0b3IiCisKKy0gcHdtczoJCQlQV00gc3BlY2lmaWNhdGlvbiAoU2VlOiAuLi9wd20vcHdtLnR4dCkKKworT25seSByZXF1aXJlZCBmb3IgVm9sdGFnZSBUYWJsZSBNb2RlOgorLSB2b2x0YWdlLXRhYmxlOiAJVm9sdGFnZSBhbmQgRHV0eS1DeWNsZSB0YWJsZSBjb25zaXN0aW5nIG9mIDIgY2VsbHMKKwkJCSAgICBGaXJzdCBjZWxsIGlzIHZvbHRhZ2UgaW4gbWljcm92b2x0cyAodVYpCisJCQkgICAgU2Vjb25kIGNlbGwgaXMgZHV0eS1jeWNsZSBpbiBwZXJjZW50ICglKQorCitOQjogVG8gYmUgY2xlYXIsIGlmIHZvbHRhZ2UtdGFibGUgaXMgcHJvdmlkZWQsIHRoZW4gdGhlIGRldmljZSB3aWxsIGJlIHVzZWQKK2luIFZvbHRhZ2UgVGFibGUgTW9kZS4gIElmIG5vIHZvbHRhZ2UtdGFibGUgaXMgcHJvdmlkZWQsIHRoZW4gdGhlIGRldmljZSB3aWxsCitiZSB1c2VkIGluIENvbnRpbnVvdXMgVm9sdGFnZSBNb2RlLgorCitBbnkgcHJvcGVydHkgZGVmaW5lZCBhcyBwYXJ0IG9mIHRoZSBjb3JlIHJlZ3VsYXRvciBiaW5kaW5nIGNhbiBhbHNvIGJlIHVzZWQuCisoU2VlOiAuLi9yZWd1bGF0b3IvcmVndWxhdG9yLnR4dCkKKworQ29udGludW91cyBWb2x0YWdlIEV4YW1wbGU6CisJcHdtX3JlZ3VsYXRvciB7CisJCWNvbXBhdGlibGUgPSAicHdtLXJlZ3VsYXRvcjsKKwkJcHdtcyA9IDwmcHdtMSAwIDg0NDggMD47CisJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDEwMTYwMDA+OworCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxMTE0MDAwPjsKKwkJcmVndWxhdG9yLW5hbWUgPSAidmRkX2xvZ2ljIjsKKwl9OworCitWb2x0YWdlIFRhYmxlIEV4YW1wbGU6CisJcHdtX3JlZ3VsYXRvciB7CisJCWNvbXBhdGlibGUgPSAicHdtLXJlZ3VsYXRvcjsKKwkJcHdtcyA9IDwmcHdtMSAwIDg0NDggMD47CisJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDEwMTYwMDA+OworCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxMTE0MDAwPjsKKwkJcmVndWxhdG9yLW5hbWUgPSAidmRkX2xvZ2ljIjsKKworCQkJICAgICAgLyogVm9sdGFnZSBEdXR5LUN5Y2xlICovCisJCXZvbHRhZ2UtdGFibGUgPSA8MTExNDAwMCAwPiwKKwkJCQk8MTA5NTAwMCAxMD4sCisJCQkJPDEwNzYwMDAgMjA+LAorCQkJCTwxMDU2MDAwIDMwPiwKKwkJCQk8MTAzNjAwMCA0MD4sCisJCQkJPDEwMTYwMDAgNTA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3Fjb20sc3BtaS1yZWd1bGF0b3IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9xY29tLHNwbWktcmVndWxhdG9yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDM4MWMyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9xY29tLHNwbWktcmVndWxhdG9yLnR4dApAQCAtMCwwICsxLDE3MyBAQAorUXVhbGNvbW0gU1BNSSBSZWd1bGF0b3JzCisKKy0gY29tcGF0aWJsZToKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8c3RyaW5nPgorCURlZmluaXRpb246IG11c3QgYmUgb25lIG9mOgorCQkJInFjb20scG04ODQxLXJlZ3VsYXRvcnMiCisJCQkicWNvbSxwbTg5MTYtcmVndWxhdG9ycyIKKwkJCSJxY29tLHBtODk0MS1yZWd1bGF0b3JzIgorCistIGludGVycnVwdHM6CisJVXNhZ2U6IG9wdGlvbmFsCisJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOiBMaXN0IG9mIE9DUCBpbnRlcnJ1cHRzLgorCistIGludGVycnVwdC1uYW1lczoKKwlVc2FnZTogcmVxdWlyZWQgaWYgJ2ludGVycnVwdHMnIHByb3BlcnR5IHByZXNlbnQKKwlWYWx1ZSB0eXBlOiA8c3RyaW5nLWFycmF5PgorCURlZmluaXRpb246IExpc3Qgb2Ygc3RyaW5ncyBkZWZpbmluZyB0aGUgbmFtZXMgb2YgdGhlCisJCSAgICBpbnRlcnJ1cHRzIGluIHRoZSAnaW50ZXJydXB0cycgcHJvcGVydHkgMS10by0xLgorCQkgICAgU3VwcG9ydGVkIHZhbHVlcyBhcmUgIm9jcC08cmVndWxhdG9yX25hbWU+Iiwgd2hlcmUKKwkJICAgIDxyZWd1bGF0b3JfbmFtZT4gY29ycmVzcG9uZHMgdG8gYSB2b2x0YWdlIHN3aXRjaAorCQkgICAgdHlwZSByZWd1bGF0b3IuCisKKy0gdmRkX3MxLXN1cHBseToKKy0gdmRkX3MyLXN1cHBseToKKy0gdmRkX3MzLXN1cHBseToKKy0gdmRkX3M0LXN1cHBseToKKy0gdmRkX3M1LXN1cHBseToKKy0gdmRkX3M2LXN1cHBseToKKy0gdmRkX3M3LXN1cHBseToKKy0gdmRkX3M4LXN1cHBseToKKwlVc2FnZTogb3B0aW9uYWwgKHBtODg0MSBvbmx5KQorCVZhbHVlIHR5cGU6IDxwaGFuZGxlPgorCURlZmluaXRpb246IFJlZmVyZW5jZSB0byByZWd1bGF0b3Igc3VwcGx5aW5nIHRoZSBpbnB1dCBwaW4sIGFzCisJCSAgICBkZXNjcmliZWQgaW4gdGhlIGRhdGEgc2hlZXQuCisKKy0gdmRkX3MxLXN1cHBseToKKy0gdmRkX3MyLXN1cHBseToKKy0gdmRkX3MzLXN1cHBseToKKy0gdmRkX3M0LXN1cHBseToKKy0gdmRkX2wxX2wzLXN1cHBseToKKy0gdmRkX2wyLXN1cHBseToKKy0gdmRkX2w0X2w1X2w2LXN1cHBseToKKy0gdmRkX2w3LXN1cHBseToKKy0gdmRkX2w4X2wxMV9sMTRfbDE1X2wxNi1zdXBwbHk6CistIHZkZF9sOV9sMTBfbDEyX2wxM19sMTdfbDE4LXN1cHBseToKKwlVc2FnZTogb3B0aW9uYWwgKHBtODkxNiBvbmx5KQorCVZhbHVlIHR5cGU6IDxwaGFuZGxlPgorCURlZmluaXRpb246IFJlZmVyZW5jZSB0byByZWd1bGF0b3Igc3VwcGx5aW5nIHRoZSBpbnB1dCBwaW4sIGFzCisJCSAgICBkZXNjcmliZWQgaW4gdGhlIGRhdGEgc2hlZXQuCisKKy0gdmRkX3MxLXN1cHBseToKKy0gdmRkX3MyLXN1cHBseToKKy0gdmRkX3MzLXN1cHBseToKKy0gdmRkX2wxX2wzLXN1cHBseToKKy0gdmRkX2wyX2x2c18xXzJfMy1zdXBwbHk6CistIHZkZF9sNF9sMTEtc3VwcGx5OgorLSB2ZGRfbDVfbDctc3VwcGx5OgorLSB2ZGRfbDZfbDEyX2wxNF9sMTUtc3VwcGx5OgorLSB2ZGRfbDhfbDE2X2wxOF8xOS1zdXBwbHk6CistIHZkZF9sOV9sMTBfbDE3X2wyMi1zdXBwbHk6CistIHZkZF9sMTNfbDIwX2wyM19sMjQtc3VwcGx5OgorLSB2ZGRfbDIxLXN1cHBseToKKy0gdmluXzV2cy1zdXBwbHk6CisJVXNhZ2U6IG9wdGlvbmFsIChwbTg5NDEgb25seSkKKwlWYWx1ZSB0eXBlOiA8cGhhbmRsZT4KKwlEZWZpbml0aW9uOiBSZWZlcmVuY2UgdG8gcmVndWxhdG9yIHN1cHBseWluZyB0aGUgaW5wdXQgcGluLCBhcworCQkgICAgZGVzY3JpYmVkIGluIHRoZSBkYXRhIHNoZWV0LgorCisKK1RoZSByZWd1bGF0b3Igbm9kZSBob3VzZXMgc3ViLW5vZGVzIGZvciBlYWNoIHJlZ3VsYXRvciB3aXRoaW4gdGhlIGRldmljZS4gRWFjaAorc3ViLW5vZGUgaXMgaWRlbnRpZmllZCB1c2luZyB0aGUgbm9kZSdzIG5hbWUsIHdpdGggdmFsaWQgdmFsdWVzIGxpc3RlZCBmb3IgZWFjaAorb2YgdGhlIFBNSUNzIGJlbG93LgorCitwbTg4NDE6CisJczEsIHMyLCBzMywgczQsIHM1LCBzNiwgczcsIHM4CisKK3BtODkxNjoKKwlzMSwgczIsIHMzLCBzNCwgbDEsIGwyLCBsMywgbDQsIGw1LCBsNiwgbDcsIGw4LCBsOSwgbDEwLCBsMTEsIGwxMiwgbDEzLAorCWwxNCwgbDE1LCBsMTYsIGwxNywgbDE4CisKK3BtODk0MToKKwlzMSwgczIsIHMzLCBzNCwgbDEsIGwyLCBsMywgbDQsIGw1LCBsNiwgbDcsIGw4LCBsOSwgbDEwLCBsMTEsIGwxMiwgbDEzLAorCWwxNCwgbDE1LCBsMTYsIGwxNywgbDE4LCBsMTksIGwyMCwgbDIxLCBsMjIsIGwyMywgbDI0LCBsdnMxLCBsdnMyLCBsdnMzLAorCTV2czEsIDV2czIKKworVGhlIGNvbnRlbnQgb2YgZWFjaCBzdWItbm9kZSBpcyBkZWZpbmVkIGJ5IHRoZSBzdGFuZGFyZCBiaW5kaW5nIGZvciByZWd1bGF0b3JzIC0KK3NlZSByZWd1bGF0b3IudHh0IC0gd2l0aCBhZGRpdGlvbmFsIGN1c3RvbSBwcm9wZXJ0aWVzIGRlc2NyaWJlZCBiZWxvdzoKKworLSByZWd1bGF0b3ItaW5pdGlhbC1tb2RlOgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IDx1MzI+CisJRGVzY3JpcHRpb246IDIgPSBTZXQgaW5pdGlhbCBtb2RlIHRvIGF1dG8gbW9kZSAoYXV0b21hdGljYWxseSBzZWxlY3QKKwkJICAgIGJldHdlZW4gSFBNIGFuZCBMUE0pOyBub3QgYXZhaWxhYmxlIG9uIGJvb3N0IHR5cGUKKwkJICAgIHJlZ3VsYXRvcnMuCisKKwkJICAgIDEgPSBTZXQgaW5pdGlhbCBtb2RlIHRvIGhpZ2ggcG93ZXIgbW9kZSAoSFBNKSwgYWxzbyByZWZlcnJlZAorCQkgICAgdG8gYXMgTlBNLiBIUE0gY29uc3VtZXMgbW9yZSBncm91bmQgY3VycmVudCB0aGFuIExQTSwgYnV0CisJCSAgICBpdCBjYW4gc291cmNlIHNpZ25pZmljYW50bHkgaGlnaGVyIGxvYWQgY3VycmVudC4gSFBNIGlzIG5vdAorCQkgICAgYXZhaWxhYmxlIG9uIGJvb3N0IHR5cGUgcmVndWxhdG9ycy4gRm9yIHZvbHRhZ2Ugc3dpdGNoIHR5cGUKKwkJICAgIHJlZ3VsYXRvcnMsIEhQTSBpbXBsaWVzIHRoYXQgb3ZlciBjdXJyZW50IHByb3RlY3Rpb24gYW5kCisJCSAgICBzb2Z0IHN0YXJ0IGFyZSBhY3RpdmUgYWxsIHRoZSB0aW1lLgorCisJCSAgICAwID0gU2V0IGluaXRpYWwgbW9kZSB0byBsb3cgcG93ZXIgbW9kZSAoTFBNKS4KKworLSBxY29tLG9jcC1tYXgtcmV0cmllczoKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8dTMyPgorCURlc2NyaXB0aW9uOiBNYXhpbXVtIG51bWJlciBvZiB0aW1lcyB0byB0cnkgdG9nZ2xpbmcgYSB2b2x0YWdlIHN3aXRjaAorCQkgICAgIG9mZiBhbmQgYmFjayBvbiBhcyBhIHJlc3VsdCBvZiBjb25zZWN1dGl2ZSBvdmVyIGN1cnJlbnQKKwkJICAgICBldmVudHMuCisKKy0gcWNvbSxvY3AtcmV0cnktZGVsYXk6CisJVXNhZ2U6IG9wdGlvbmFsCisJVmFsdWUgdHlwZTogPHUzMj4KKwlEZXNjcmlwdGlvbjogVGltZSB0byBkZWxheSBpbiBtaWxsaXNlY29uZHMgYmV0d2VlbiBlYWNoIHZvbHRhZ2Ugc3dpdGNoCisJCSAgICAgdG9nZ2xlIGFmdGVyIGFuIG92ZXIgY3VycmVudCBldmVudCB0YWtlcyBwbGFjZS4KKworLSBxY29tLHBpbi1jdHJsLWVuYWJsZToKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8dTMyPgorCURlc2NyaXB0aW9uOiBCaXQgbWFzayBzcGVjaWZ5aW5nIHdoaWNoIGhhcmR3YXJlIHBpbnMgc2hvdWxkIGJlIHVzZWQgdG8KKwkJICAgICBlbmFibGUgdGhlIHJlZ3VsYXRvciwgaWYgYW55OyBzdXBwb3J0ZWQgYml0cyBhcmU6CisJCQkwID0gaWdub3JlIGFsbCBoYXJkd2FyZSBlbmFibGUgc2lnbmFscworCQkJQklUKDApID0gZm9sbG93IEhXMF9FTiBzaWduYWwKKwkJCUJJVCgxKSA9IGZvbGxvdyBIVzFfRU4gc2lnbmFsCisJCQlCSVQoMikgPSBmb2xsb3cgSFcyX0VOIHNpZ25hbAorCQkJQklUKDMpID0gZm9sbG93IEhXM19FTiBzaWduYWwKKworLSBxY29tLHBpbi1jdHJsLWhwbToKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8dTMyPgorCURlc2NyaXB0aW9uOiBCaXQgbWFzayBzcGVjaWZ5aW5nIHdoaWNoIGhhcmR3YXJlIHBpbnMgc2hvdWxkIGJlIHVzZWQgdG8KKwkJICAgICBmb3JjZSB0aGUgcmVndWxhdG9yIGludG8gaGlnaCBwb3dlciBtb2RlLCBpZiBhbnk7CisJCSAgICAgc3VwcG9ydGVkIGJpdHMgYXJlOgorCQkJMCA9IGlnbm9yZSBhbGwgaGFyZHdhcmUgZW5hYmxlIHNpZ25hbHMKKwkJCUJJVCgwKSA9IGZvbGxvdyBIVzBfRU4gc2lnbmFsCisJCQlCSVQoMSkgPSBmb2xsb3cgSFcxX0VOIHNpZ25hbAorCQkJQklUKDIpID0gZm9sbG93IEhXMl9FTiBzaWduYWwKKwkJCUJJVCgzKSA9IGZvbGxvdyBIVzNfRU4gc2lnbmFsCisJCQlCSVQoNCkgPSBmb2xsb3cgUE1JQyBhd2FrZSBzdGF0ZQorCistIHFjb20sdnMtc29mdC1zdGFydC1zdHJlbmd0aDoKKwlVc2FnZTogb3B0aW9uYWwKKwlWYWx1ZSB0eXBlOiA8dTMyPgorCURlc2NyaXB0aW9uOiBUaGlzIHByb3BlcnR5IHNldHMgdGhlIHNvZnQgc3RhcnQgc3RyZW5ndGggZm9yIHZvbHRhZ2UKKwkJICAgICBzd2l0Y2ggdHlwZSByZWd1bGF0b3JzOyBzdXBwb3J0ZWQgdmFsdWVzIGFyZToKKwkJCTAgPSAwLjA1IHVBCisJCQkxID0gMC4yNSB1QQorCQkJMiA9IDAuNTUgdUEKKwkJCTMgPSAwLjc1IHVBCisKK0V4YW1wbGU6CisKKwlyZWd1bGF0b3JzIHsKKwkJY29tcGF0aWJsZSA9ICJxY29tLHBtODk0MS1yZWd1bGF0b3JzIjsKKwkJdmRkX2wxX2wzLXN1cHBseSA9IDwmczE+OworCisJCXMxOiBzMSB7CisJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMzAwMDAwPjsKKwkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE0MDAwMDA+OworCQl9OworCisJCS4uLgorCisJCWwxOiBsMSB7CisJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMjI1MDAwPjsKKwkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDEzMDAwMDA+OworCQl9OworCisJCS4uLi4KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9yZWd1bGF0b3IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9yZWd1bGF0b3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkMTEyZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3JlZ3VsYXRvci50eHQKQEAgLTAsMCArMSw5OSBAQAorVm9sdGFnZS9DdXJyZW50IFJlZ3VsYXRvcnMKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gcmVndWxhdG9yLW5hbWU6IEEgc3RyaW5nIHVzZWQgYXMgYSBkZXNjcmlwdGl2ZSBuYW1lIGZvciByZWd1bGF0b3Igb3V0cHV0cworLSByZWd1bGF0b3ItbWluLW1pY3Jvdm9sdDogc21hbGxlc3Qgdm9sdGFnZSBjb25zdW1lcnMgbWF5IHNldAorLSByZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdDogbGFyZ2VzdCB2b2x0YWdlIGNvbnN1bWVycyBtYXkgc2V0CistIHJlZ3VsYXRvci1taWNyb3ZvbHQtb2Zmc2V0OiBPZmZzZXQgYXBwbGllZCB0byB2b2x0YWdlcyB0byBjb21wZW5zYXRlIGZvciB2b2x0YWdlIGRyb3BzCistIHJlZ3VsYXRvci1taW4tbWljcm9hbXA6IHNtYWxsZXN0IGN1cnJlbnQgY29uc3VtZXJzIG1heSBzZXQKKy0gcmVndWxhdG9yLW1heC1taWNyb2FtcDogbGFyZ2VzdCBjdXJyZW50IGNvbnN1bWVycyBtYXkgc2V0CistIHJlZ3VsYXRvci1pbnB1dC1jdXJyZW50LWxpbWl0LW1pY3JvYW1wOiBtYXhpbXVtIGlucHV0IGN1cnJlbnQgcmVndWxhdG9yIGFsbG93cworLSByZWd1bGF0b3ItYWx3YXlzLW9uOiBib29sZWFuLCByZWd1bGF0b3Igc2hvdWxkIG5ldmVyIGJlIGRpc2FibGVkCistIHJlZ3VsYXRvci1ib290LW9uOiBib290bG9hZGVyL2Zpcm13YXJlIGVuYWJsZWQgcmVndWxhdG9yCistIHJlZ3VsYXRvci1hbGxvdy1ieXBhc3M6IGFsbG93IHRoZSByZWd1bGF0b3IgdG8gZ28gaW50byBieXBhc3MgbW9kZQorLSByZWd1bGF0b3ItYWxsb3ctc2V0LWxvYWQ6IGFsbG93IHRoZSByZWd1bGF0b3IgcGVyZm9ybWFuY2UgbGV2ZWwgdG8gYmUgY29uZmlndXJlZAorLSA8bmFtZT4tc3VwcGx5OiBwaGFuZGxlIHRvIHRoZSBwYXJlbnQgc3VwcGx5L3JlZ3VsYXRvciBub2RlCistIHJlZ3VsYXRvci1yYW1wLWRlbGF5OiByYW1wIGRlbGF5IGZvciByZWd1bGF0b3IoaW4gdVYvdVMpCisgIEZvciBoYXJkd2FyZSB3aGljaCBzdXBwb3J0cyBkaXNhYmxpbmcgcmFtcCByYXRlLCBpdCBzaG91bGQgYmUgZXhwbGljaXRseQorICBpbml0aWFsaXNlZCB0byB6ZXJvIChyZWd1bGF0b3ItcmFtcC1kZWxheSA9IDwwPikgZm9yIGRpc2FibGluZyByYW1wIGRlbGF5LgorLSByZWd1bGF0b3ItZW5hYmxlLXJhbXAtZGVsYXk6IFRoZSB0aW1lIHRha2VuLCBpbiBtaWNyb3NlY29uZHMsIGZvciB0aGUgc3VwcGx5CisgIHJhaWwgdG8gcmVhY2ggdGhlIHRhcmdldCB2b2x0YWdlLCBwbHVzL21pbnVzIHdoYXRldmVyIHRvbGVyYW5jZSB0aGUgYm9hcmQKKyAgZGVzaWduIHJlcXVpcmVzLiBUaGlzIHByb3BlcnR5IGRlc2NyaWJlcyB0aGUgdG90YWwgc3lzdGVtIHJhbXAgdGltZQorICByZXF1aXJlZCBkdWUgdG8gdGhlIGNvbWJpbmF0aW9uIG9mIGludGVybmFsIHJhbXBpbmcgb2YgdGhlIHJlZ3VsYXRvciBpdHNlbGYsCisgIGFuZCBib2FyZCBkZXNpZ24gaXNzdWVzIHN1Y2ggYXMgdHJhY2UgY2FwYWNpdGFuY2UgYW5kIGxvYWQgb24gdGhlIHN1cHBseS4KKy0gcmVndWxhdG9yLXNvZnQtc3RhcnQ6IEVuYWJsZSBzb2Z0IHN0YXJ0IHNvIHRoYXQgdm9sdGFnZSByYW1wcyBzbG93bHkKKy0gcmVndWxhdG9yLXN0YXRlLW1lbSBzdWItcm9vdCBub2RlIGZvciBTdXNwZW5kLXRvLVJBTSBtb2RlCisgIDogc3VzcGVuZCB0byBtZW1vcnksIHRoZSBkZXZpY2UgZ29lcyB0byBzbGVlcCwgYnV0IGFsbCBkYXRhIHN0b3JlZCBpbiBtZW1vcnksCisgIG9ubHkgc29tZSBleHRlcm5hbCBpbnRlcnJ1cHQgY2FuIHdha2UgdGhlIGRldmljZS4KKy0gcmVndWxhdG9yLXN0YXRlLWRpc2sgc3ViLXJvb3Qgbm9kZSBmb3IgU3VzcGVuZC10by1ESVNLIG1vZGUKKyAgOiBzdXNwZW5kIHRvIGRpc2ssIHRoaXMgc3RhdGUgb3BlcmF0ZXMgc2ltaWxhcmx5IHRvIFN1c3BlbmQtdG8tUkFNLAorICBidXQgaW5jbHVkZXMgYSBmaW5hbCBzdGVwIG9mIHdyaXRpbmcgbWVtb3J5IGNvbnRlbnRzIHRvIGRpc2suCistIHJlZ3VsYXRvci1zdGF0ZS1bbWVtL2Rpc2tdIG5vZGUgaGFzIGZvbGxvd2luZyBjb21tb24gcHJvcGVydGllczoKKwktIHJlZ3VsYXRvci1vbi1pbi1zdXNwZW5kOiByZWd1bGF0b3Igc2hvdWxkIGJlIG9uIGluIHN1c3BlbmQgc3RhdGUuCisJLSByZWd1bGF0b3Itb2ZmLWluLXN1c3BlbmQ6IHJlZ3VsYXRvciBzaG91bGQgYmUgb2ZmIGluIHN1c3BlbmQgc3RhdGUuCisJLSByZWd1bGF0b3Itc3VzcGVuZC1taWNyb3ZvbHQ6IHJlZ3VsYXRvciBzaG91bGQgYmUgc2V0IHRvIHRoaXMgdm9sdGFnZQorCSAgaW4gc3VzcGVuZC4KKwktIHJlZ3VsYXRvci1tb2RlOiBvcGVyYXRpbmcgbW9kZSBpbiB0aGUgZ2l2ZW4gc3VzcGVuZCBzdGF0ZS4KKwkgIFRoZSBzZXQgb2YgcG9zc2libGUgb3BlcmF0aW5nIG1vZGVzIGRlcGVuZHMgb24gdGhlIGNhcGFiaWxpdGllcyBvZgorCSAgZXZlcnkgaGFyZHdhcmUgc28gdGhlIHZhbGlkIG1vZGVzIGFyZSBkb2N1bWVudGVkIG9uIGVhY2ggcmVndWxhdG9yCisJICBkZXZpY2UgdHJlZSBiaW5kaW5nIGRvY3VtZW50LgorLSByZWd1bGF0b3ItaW5pdGlhbC1tb2RlOiBpbml0aWFsIG9wZXJhdGluZyBtb2RlLiBUaGUgc2V0IG9mIHBvc3NpYmxlIG9wZXJhdGluZworICBtb2RlcyBkZXBlbmRzIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgZXZlcnkgaGFyZHdhcmUgc28gZWFjaCBkZXZpY2UgYmluZGluZworICBkb2N1bWVudGF0aW9uIGV4cGxhaW5zIHdoaWNoIHZhbHVlcyB0aGUgcmVndWxhdG9yIHN1cHBvcnRzLgorLSByZWd1bGF0b3Itc3lzdGVtLWxvYWQ6IExvYWQgaW4gdUEgcHJlc2VudCBvbiByZWd1bGF0b3IgdGhhdCBpcyBub3QgY2FwdHVyZWQgYnkKKyAgYW55IGNvbnN1bWVyIHJlcXVlc3QuCistIHJlZ3VsYXRvci1wdWxsLWRvd246IEVuYWJsZSBwdWxsIGRvd24gcmVzaXN0b3Igd2hlbiB0aGUgcmVndWxhdG9yIGlzIGRpc2FibGVkLgorLSByZWd1bGF0b3Itb3Zlci1jdXJyZW50LXByb3RlY3Rpb246IEVuYWJsZSBvdmVyIGN1cnJlbnQgcHJvdGVjdGlvbi4KKworRGVwcmVjYXRlZCBwcm9wZXJ0aWVzOgorLSByZWd1bGF0b3ItY29tcGF0aWJsZTogSWYgYSByZWd1bGF0b3IgY2hpcCBjb250YWlucyBtdWx0aXBsZQorICByZWd1bGF0b3JzLCBhbmQgaWYgdGhlIGNoaXAncyBiaW5kaW5nIGNvbnRhaW5zIGEgY2hpbGQgbm9kZSB0aGF0CisgIGRlc2NyaWJlcyBlYWNoIHJlZ3VsYXRvciwgdGhlbiB0aGlzIHByb3BlcnR5IGluZGljYXRlcyB3aGljaCByZWd1bGF0b3IKKyAgdGhpcyBjaGlsZCBub2RlIGlzIGludGVuZGVkIHRvIGNvbmZpZ3VyZS4gSWYgdGhpcyBwcm9wZXJ0eSBpcyBtaXNzaW5nLAorICB0aGUgbm9kZSdzIG5hbWUgd2lsbCBiZSB1c2VkIGluc3RlYWQuCisKK0V4YW1wbGU6CisKKwl4eXpyZWc6IHJlZ3VsYXRvckAwIHsKKwkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTAwMDAwMD47CisJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDI1MDAwMDA+OworCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQl2aW4tc3VwcGx5ID0gPCZ2aW4+OworCisJCXJlZ3VsYXRvci1zdGF0ZS1tZW0geworCQkJcmVndWxhdG9yLW9uLWluLXN1c3BlbmQ7CisJCX07CisJfTsKKworUmVndWxhdG9yIENvbnN1bWVyczoKK0NvbnN1bWVyIG5vZGVzIGNhbiByZWZlcmVuY2Ugb25lIG9yIG1vcmUgb2YgaXRzIHN1cHBsaWVzLworcmVndWxhdG9ycyB1c2luZyB0aGUgYmVsb3cgYmluZGluZ3MuCisKKy0gPG5hbWU+LXN1cHBseTogcGhhbmRsZSB0byB0aGUgcmVndWxhdG9yIG5vZGUKKworVGhlc2UgYXJlIHRoZSBzYW1lIGJpbmRpbmdzIHRoYXQgYSByZWd1bGF0b3IgaW4gdGhlIGFib3ZlCitleGFtcGxlIHVzZWQgdG8gcmVmZXJlbmNlIGl0cyBvd24gc3VwcGx5LCBpbiB3aGljaCBjYXNlCitpdHMganVzdCBzZWVuIGFzIGEgc3BlY2lhbCBjYXNlIG9mIGEgcmVndWxhdG9yIGJlaW5nIGEKK2NvbnN1bWVyIGl0c2VsZi4KKworRXhhbXBsZSBvZiBhIGNvbnN1bWVyIGRldmljZSBub2RlIChtbWMpIHJlZmVyZW5jaW5nIHR3bworcmVndWxhdG9ycyAodHdsX3JlZzEgYW5kIHR3bF9yZWcyKSwKKworCXR3bF9yZWcxOiByZWd1bGF0b3JAMCB7CisJCS4uLgorCQkuLi4KKwkJLi4uCisJfTsKKworCXR3bF9yZWcyOiByZWd1bGF0b3JAMSB7CisJCS4uLgorCQkuLi4KKwkJLi4uCisJfTsKKworCW1tYzogbW1jQDB4MCB7CisJCS4uLgorCQkuLi4KKwkJdm1tYy1zdXBwbHkgPSA8JnR3bF9yZWcxPjsKKwkJdm1tY2F1eC1zdXBwbHkgPSA8JnR3bF9yZWcyPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9zNW04NzY3LXJlZ3VsYXRvci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3M1bTg3NjctcmVndWxhdG9yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDE5MTMxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9zNW04NzY3LXJlZ3VsYXRvci50eHQKQEAgLTAsMCArMSwxNjMgQEAKKyogU2Ftc3VuZyBTNU04NzY3IFZvbHRhZ2UgYW5kIEN1cnJlbnQgUmVndWxhdG9yCisKK1RoZSBTYW1zdW5nIFM1TTg3NjcgaXMgYSBtdWx0aS1mdW5jdGlvbiBkZXZpY2Ugd2hpY2ggaW5jbHVkZXMgdm9sdGFnZSBhbmQKK2N1cnJlbnQgcmVndWxhdG9ycywgcnRjLCBjaGFyZ2VyIGNvbnRyb2xsZXIgYW5kIG90aGVyIHN1Yi1ibG9ja3MuIEl0IGlzCitpbnRlcmZhY2VkIHRvIHRoZSBob3N0IGNvbnRyb2xsZXIgdXNpbmcgYSBpMmMgaW50ZXJmYWNlLiBFYWNoIHN1Yi1ibG9jayBpcworYWRkcmVzc2VkIGJ5IHRoZSBob3N0IHN5c3RlbSB1c2luZyBkaWZmZXJlbnQgaTJjIHNsYXZlIGFkZHJlc3MuIFRoaXMgZG9jdW1lbnQKK2Rlc2NyaWJlcyB0aGUgYmluZGluZ3MgZm9yICdwbWljJyBzdWItYmxvY2sgb2YgczVtODc2Ny4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJzYW1zdW5nLHM1bTg3NjctcG1pYyIuCistIHJlZzogU3BlY2lmaWVzIHRoZSBpMmMgc2xhdmUgYWRkcmVzcyBvZiB0aGUgcG1pYyBibG9jay4gSXQgc2hvdWxkIGJlIDB4NjYuCisKKy0gczVtODc2NyxwbWljLWJ1Y2syLWR2cy12b2x0YWdlOiBBIHNldCBvZiA4IHZvbHRhZ2UgdmFsdWVzIGluIG1pY3JvLXZvbHQgKHVWKQorICB1bml0cyBmb3IgYnVjazIgd2hlbiBjaGFuZ2luZyB2b2x0YWdlIHVzaW5nIGdwaW8gZHZzLiBSZWZlciB0byBbMV0gYmVsb3cKKyAgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisKKy0gczVtODc2NyxwbWljLWJ1Y2szLWR2cy12b2x0YWdlOiBBIHNldCBvZiA4IHZvbHRhZ2UgdmFsdWVzIGluIG1pY3JvLXZvbHQgKHVWKQorICB1bml0cyBmb3IgYnVjazMgd2hlbiBjaGFuZ2luZyB2b2x0YWdlIHVzaW5nIGdwaW8gZHZzLiBSZWZlciB0byBbMV0gYmVsb3cKKyAgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisKKy0gczVtODc2NyxwbWljLWJ1Y2s0LWR2cy12b2x0YWdlOiBBIHNldCBvZiA4IHZvbHRhZ2UgdmFsdWVzIGluIG1pY3JvLXZvbHQgKHVWKQorICB1bml0cyBmb3IgYnVjazQgd2hlbiBjaGFuZ2luZyB2b2x0YWdlIHVzaW5nIGdwaW8gZHZzLiBSZWZlciB0byBbMV0gYmVsb3cKKyAgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisKKy0gczVtODc2NyxwbWljLWJ1Y2stZHMtZ3Bpb3M6IEdQSU8gc3BlY2lmaWVycyBmb3IgdGhyZWUgaG9zdCBncGlvJ3MgdXNlZAorICBmb3Igc2VsZWN0aW5nIEdQSU8gRFZTIGxpbmVzLiBJdCBpcyBvbmUtdG8tb25lIG1hcHBlZCB0byBkdnMgZ3BpbyBsaW5lcy4KKworWzFdIElmIG5vbmUgb2YgdGhlICdzNW04NzY3LHBtaWMtYnVja1syLzMvNF0tdXNlcy1ncGlvLWR2cycgb3B0aW9uYWwKKyAgICBwcm9wZXJ0eSBpcyBzcGVjaWZpZWQsIHRoZSAnczVtODc2NyxwbWljLWJ1Y2tbMi8zLzRdLWR2cy12b2x0YWdlJworICAgIHByb3BlcnR5IHNob3VsZCBzcGVjaWZ5IGF0bGVhc3Qgb25lIHZvbHRhZ2UgbGV2ZWwgKHdoaWNoIHdvdWxkIGJlIGEKKyAgICBzYWZlIG9wZXJhdGluZyB2b2x0YWdlKS4KKworICAgIElmIGVpdGhlciBvZiB0aGUgJ3M1bTg3NjcscG1pYy1idWNrWzIvMy80XS11c2VzLWdwaW8tZHZzJyBvcHRpb25hbAorICAgIHByb3BlcnR5IGlzIHNwZWNpZmllZCwgdGhlbiBhbGwgdGhlIGVpZ2h0IHZvbHRhZ2UgdmFsdWVzIGZvciB0aGUKKyAgICAnczVtODc2NyxwbWljLWJ1Y2tbMi8zLzRdLWR2cy12b2x0YWdlJyBzaG91bGQgYmUgc3BlY2lmaWVkLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBpbnRlcnJ1cHQtcGFyZW50OiBTcGVjaWZpZXMgdGhlIHBoYW5kbGUgb2YgdGhlIGludGVycnVwdCBjb250cm9sbGVyIHRvIHdoaWNoCisgIHRoZSBpbnRlcnJ1cHRzIGZyb20gczVtODc2NyBhcmUgZGVsaXZlcmVkIHRvLgorLSBpbnRlcnJ1cHRzOiBJbnRlcnJ1cHQgc3BlY2lmaWVycyBmb3IgdHdvIGludGVycnVwdCBzb3VyY2VzLgorICAtIEZpcnN0IGludGVycnVwdCBzcGVjaWZpZXIgaXMgZm9yICdpcnExJyBpbnRlcnJ1cHQuCisgIC0gU2Vjb25kIGludGVycnVwdCBzcGVjaWZpZXIgaXMgZm9yICdhbGVydCcgaW50ZXJydXB0LgorLSBzNW04NzY3LHBtaWMtYnVjazItdXNlcy1ncGlvLWR2czogJ2J1Y2syJyBjYW4gYmUgY29udHJvbGxlZCBieSBncGlvIGR2cy4KKy0gczVtODc2NyxwbWljLWJ1Y2szLXVzZXMtZ3Bpby1kdnM6ICdidWNrMycgY2FuIGJlIGNvbnRyb2xsZWQgYnkgZ3BpbyBkdnMuCistIHM1bTg3NjcscG1pYy1idWNrNC11c2VzLWdwaW8tZHZzOiAnYnVjazQnIGNhbiBiZSBjb250cm9sbGVkIGJ5IGdwaW8gZHZzLgorCitBZGRpdGlvbmFsIHByb3BlcnRpZXMgcmVxdWlyZWQgaWYgZWl0aGVyIG9mIHRoZSBvcHRpb25hbCBwcm9wZXJ0aWVzIGFyZSB1c2VkOgorCistIHM1bTg3NjcscG1pYy1idWNrMjM0LWRlZmF1bHQtZHZzLWlkeDogRGVmYXVsdCB2b2x0YWdlIHNldHRpbmcgc2VsZWN0ZWQgZnJvbQorICB0aGUgcG9zc2libGUgOCBvcHRpb25zIHNlbGVjdGFibGUgYnkgdGhlIGR2cyBncGlvcy4gVGhlIHZhbHVlIG9mIHRoaXMKKyAgcHJvcGVydHkgc2hvdWxkIGJlIGJldHdlZW4gMCBhbmQgNy4gSWYgbm90IHNwZWNpZmllZCBvciBpZiBvdXQgb2YgcmFuZ2UsIHRoZQorICBkZWZhdWx0IHZhbHVlIG9mIHRoaXMgcHJvcGVydHkgaXMgc2V0IHRvIDAuCisKKy0gczVtODc2NyxwbWljLWJ1Y2stZHZzLWdwaW9zOiBHUElPIHNwZWNpZmllcnMgZm9yIHRocmVlIGhvc3QgZ3BpbydzIHVzZWQKKyAgZm9yIGR2cy4gVGhlIGZvcm1hdCBvZiB0aGUgZ3BpbyBzcGVjaWZpZXIgZGVwZW5kcyBpbiB0aGUgZ3BpbyBjb250cm9sbGVyLgorCitSZWd1bGF0b3JzOiBUaGUgcmVndWxhdG9ycyBvZiBzNW04NzY3IHRoYXQgaGF2ZSB0byBiZSBpbnN0YW50aWF0ZWQgc2hvdWxkIGJlCitpbmNsdWRlZCBpbiBhIHN1Yi1ub2RlIG5hbWVkICdyZWd1bGF0b3JzJy4gUmVndWxhdG9yIG5vZGVzIGluY2x1ZGVkIGluIHRoaXMKK3N1Yi1ub2RlIHNob3VsZCBiZSBvZiB0aGUgZm9ybWF0IGFzIGxpc3RlZCBiZWxvdy4KKworCXJlZ3VsYXRvcl9uYW1lIHsKKwkJbGRvMV9yZWc6IExETzEgeworCQkJcmVndWxhdG9yLW5hbWUgPSAiVkREX0FMSVZFXzEuMFYiOworCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MTEwMDAwMD47CisJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxMTAwMDAwPjsKKwkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCW9wX21vZGUgPSA8MT47IC8qIE5vcm1hbCBNb2RlICovCisJCX07CisJfTsKK1RoZSBhYm92ZSByZWd1bGF0b3IgZW50cmllcyBhcmUgZGVmaW5lZCBpbiByZWd1bGF0b3IgYmluZGluZ3MgZG9jdW1lbnRhdGlvbgorZXhjZXB0IHRoZXNlIHByb3BlcnRpZXM6CisJLSBvcF9tb2RlOiBkZXNjcmliZXMgdGhlIGRpZmZlcmVudCBvcGVyYXRpbmcgbW9kZXMgb2YgdGhlIExETydzIHdpdGgKKwkJcG93ZXIgbW9kZSBjaGFuZ2UgaW4gU09DLiBUaGUgZGlmZmVyZW50IHBvc3NpYmxlIHZhbHVlcyBhcmUsCisJCTAgLSBhbHdheXMgb2ZmIG1vZGUKKwkJMSAtIG9uIGluIG5vcm1hbCBtb2RlCisJCTIgLSBsb3cgcG93ZXIgbW9kZQorCQkzIC0gc3VzcGVuZCBtb2RlCisJLSBzNW04NzY3LHBtaWMtZXh0LWNvbnRyb2wtZ3Bpb3M6IChvcHRpb25hbCkgR1BJTyBzcGVjaWZpZXIgZm9yIG9uZQorCQlHUElPIGNvbnRyb2xsaW5nIHRoaXMgcmVndWxhdG9yIChlbmFibGUvZGlzYWJsZSk7IFRoaXMgaXMKKwkJdmFsaWQgb25seSBmb3IgYnVjazkuCisKK1RoZSBmb2xsb3dpbmcgYXJlIHRoZSBuYW1lcyBvZiB0aGUgcmVndWxhdG9ycyB0aGF0IHRoZSBzNW04NzY3IHBtaWMgYmxvY2sKK3N1cHBvcnRzLiBOb3RlOiBUaGUgJ24nIGluIExET24gYW5kIEJVQ0tuIHJlcHJlc2VudHMgdGhlIExETyBvciBCVUNLIG51bWJlcgorYXMgcGVyIHRoZSBkYXRhc2hlZXQgb2YgczVtODc2Ny4KKworCS0gTERPbgorCQkgIC0gdmFsaWQgdmFsdWVzIGZvciBuIGFyZSAxIHRvIDI4CisJCSAgLSBFeGFtcGxlOiBMRE8xLCBMRE8yLCBMRE8yOAorCS0gQlVDS24KKwkJICAtIHZhbGlkIHZhbHVlcyBmb3IgbiBhcmUgMSB0byA5LgorCQkgIC0gRXhhbXBsZTogQlVDSzEsIEJVQ0syLCBCVUNLOQorCitUaGUgYmluZGluZ3MgaW5zaWRlIHRoZSByZWd1bGF0b3Igbm9kZXMgdXNlIHRoZSBzdGFuZGFyZCByZWd1bGF0b3IgYmluZGluZ3MKK3doaWNoIGFyZSBkb2N1bWVudGVkIGVsc2V3aGVyZS4KKworRXhhbXBsZToKKworCXM1bTg3NjdfcG1pY0A2NiB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxzNW04NzY3LXBtaWMiOworCQlyZWcgPSA8MHg2Nj47CisKKwkJczVtODc2NyxwbWljLWJ1Y2syLXVzZXMtZ3Bpby1kdnM7CisJCXM1bTg3NjcscG1pYy1idWNrMy11c2VzLWdwaW8tZHZzOworCQlzNW04NzY3LHBtaWMtYnVjazQtdXNlcy1ncGlvLWR2czsKKworCQlzNW04NzY3LHBtaWMtYnVjay1kZWZhdWx0LWR2cy1pZHggPSA8MD47CisKKwkJczVtODc2NyxwbWljLWJ1Y2stZHZzLWdwaW9zID0gPCZncHgwIDAgMD4sIC8qIERWUzEgKi8KKwkJCQkJCSA8JmdweDAgMSAwPiwgLyogRFZTMiAqLworCQkJCQkJIDwmZ3B4MCAyIDA+OyAvKiBEVlMzICovCisKKwkJczVtODc2NyxwbWljLWJ1Y2stZHMtZ3Bpb3MgPSA8JmdweDIgMyAwPiwgLyogU0VUMSAqLworCQkJCQkJPCZncHgyIDQgMD4sIC8qIFNFVDIgKi8KKwkJCQkJCTwmZ3B4MiA1IDA+OyAvKiBTRVQzICovCisKKwkJczVtODc2NyxwbWljLWJ1Y2syLWR2cy12b2x0YWdlID0gPDEzNTAwMDA+LCA8MTMwMDAwMD4sCisJCQkJCQkgPDEyNTAwMDA+LCA8MTIwMDAwMD4sCisJCQkJCQkgPDExNTAwMDA+LCA8MTEwMDAwMD4sCisJCQkJCQkgPDEwMDAwMDA+LCA8OTUwMDAwPjsKKworCQlzNW04NzY3LHBtaWMtYnVjazMtZHZzLXZvbHRhZ2UgPSA8MTEwMDAwMD4sIDwxMTAwMDAwPiwKKwkJCQkJCSA8MTEwMDAwMD4sIDwxMTAwMDAwPiwKKwkJCQkJCSA8MTAwMDAwMD4sIDwxMDAwMDAwPiwKKwkJCQkJCSA8MTAwMDAwMD4sIDwxMDAwMDAwPjsKKworCQlzNW04NzY3LHBtaWMtYnVjazQtZHZzLXZvbHRhZ2UgPSA8MTIwMDAwMD4sIDwxMjAwMDAwPiwKKwkJCQkJCSA8MTIwMDAwMD4sIDwxMjAwMDAwPiwKKwkJCQkJCSA8MTIwMDAwMD4sIDwxMjAwMDAwPiwKKwkJCQkJCSA8MTIwMDAwMD4sIDwxMjAwMDAwPjsKKworCQlyZWd1bGF0b3JzIHsKKwkJCWxkbzFfcmVnOiBMRE8xIHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJWRERfQUJCXzMuM1YiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJCW9wX21vZGUgPSA8MT47IC8qIE5vcm1hbCBNb2RlICovCisJCQl9OworCisJCQlsZG8yX3JlZzogTERPMiB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAiVkREX0FMSVZFXzEuMVYiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDExMDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDExMDAwMDA+OworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQlidWNrMV9yZWc6IEJVQ0sxIHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJWRERfTUlGXzEuMlYiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDk1MDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTM1MDAwMD47CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCX07CisKKwkJCXZlbW1jX3JlZzogQlVDSzkgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gIlZNRU1fVkREXzIuOFYiOworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDI4MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDI4MDAwMDA+OworCQkJCW9wX21vZGUgPSA8Mz47IC8qIFN0YW5kYnkgTW9kZSAqLworCQkJCXM1bTg3NjcscG1pYy1leHQtY29udHJvbC1ncGlvcyA9IDwmZ3BrMCAyIDA+OworCQkJfTsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9za3k4MTQ1Mi1yZWd1bGF0b3IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9za3k4MTQ1Mi1yZWd1bGF0b3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5YWNiYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3NreTgxNDUyLXJlZ3VsYXRvci50eHQKQEAgLTAsMCArMSwxOCBAQAorU0tZODE0NTIgdm9sdGFnZSByZWd1bGF0b3IKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gcmVndWxhdG9yIG5vZGUgbmFtZWQgbG91dC4KKy0gYW55IHJlcXVpcmVkIGdlbmVyaWMgcHJvcGVydGllcyBkZWZpbmVkIGluIHJlZ3VsYXRvci50eHQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gYW55IGF2YWlsYWJsZSBnZW5lcmljIHByb3BlcnRpZXMgZGVmaW5lZCBpbiByZWd1bGF0b3IudHh0CisKK0V4YW1wbGU6CisKKwlyZWd1bGF0b3IgeworCQlsb3V0IHsKKwkJCXJlZ3VsYXRvci1uYW1lID0gInNreTgxNDUyLWxvdXQiOworCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8NDUwMDAwMD47CisJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDw4MDAwMDAwPjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci90aS1hYmItcmVndWxhdG9yLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvdGktYWJiLXJlZ3VsYXRvci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU4ZGI3NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvdGktYWJiLXJlZ3VsYXRvci50eHQKQEAgLTAsMCArMSwxMzIgQEAKK0FkYXB0aXZlIEJvZHkgQmlhcyhBQkIpIFNvQyBpbnRlcm5hbCBMRE8gcmVndWxhdG9yIGZvciBUZXhhcyBJbnN0cnVtZW50cyBTb0NzCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSBvbmUgb2Y6CisgIC0gInRpLGFiYi12MSIgZm9yIG9sZGVyIFNvQ3MgbGlrZSBPTUFQMworICAtICJ0aSxhYmItdjIiIGZvciBuZXdlciBTb0NzIGxpa2UgT01BUDQsIE9NQVA1CisgIC0gInRpLGFiYi12MyIgZm9yIGEgZ2VuZXJpYyBkZWZpbml0aW9uIHdoZXJlIHNldHVwIGFuZCBjb250cm9sIHJlZ2lzdGVycyBhcmUKKyAgICAgcHJvdmlkZWQgKGV4YW1wbGU6IERSQTcpCistIHJlZzogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UuIEl0IGNvbnRhaW5zCisgIHRoZSBpbmZvcm1hdGlvbiBvZiByZWdpc3RlcnMgaW4gdGhlIHNhbWUgb3JkZXIgYXMgZGVzY3JpYmVkIGJ5IHJlZy1uYW1lcworLSByZWctbmFtZXM6IFNob3VsZCBjb250YWluIHRoZSByZWcgbmFtZXMKKyAgLSAiYmFzZS1hZGRyZXNzIgktIGNvbnRhaW5zIGJhc2UgYWRkcmVzcyBvZiBBQkIgbW9kdWxlICh0aSxhYmItdjEsdGksYWJiLXYyKQorICAtICJjb250cm9sLWFkZHJlc3MiCS0gY29udGFpbnMgY29udHJvbCByZWdpc3RlciBhZGRyZXNzIG9mIEFCQiBtb2R1bGUgKHRpLGFiYi12MykKKyAgLSAic2V0dXAtYWRkcmVzcyIJLSBjb250YWlucyBzZXR1cCByZWdpc3RlciBhZGRyZXNzIG9mIEFCQiBtb2R1bGUgKHRpLGFiYi12MykKKyAgLSAiaW50LWFkZHJlc3MiCS0gY29udGFpbnMgYWRkcmVzcyBvZiBpbnRlcnJ1cHQgcmVnaXN0ZXIgZm9yIEFCQiBtb2R1bGUKKyAgKGFsc28gc2VlIE9wdGlvbmFsIHByb3BlcnRpZXMpCistICNhZGRyZXNzLWNlbGw6IHNob3VsZCBiZSAwCistICNzaXplLWNlbGw6IHNob3VsZCBiZSAwCistIGNsb2Nrczogc2hvdWxkIHBvaW50IHRvIHRoZSBjbG9jayBub2RlIHVzZWQgYnkgQUJCIG1vZHVsZQorLSB0aSxzZXR0bGluZy10aW1lOiBTZXR0bGluZyB0aW1lIGluIHVTZWNzIGZyb20gU29DIGRvY3VtZW50YXRpb24gZm9yIEFCQiBtb2R1bGUKKwl0byBzZXR0bGUgZG93bih0YXJnZXQgdGltZSBmb3IgU1IyX1dUQ05UX1ZBTFVFKS4KKy0gdGksY2xvY2stY3ljbGVzOiBTb0Mgc3BlY2lmaWMgZGF0YSBhYm91dCBjb3VudCBvZiBzeXN0ZW0gdGksY2xvY2stY3ljbGVzIHVzZWQgZm9yCisJY29tcHV0aW5nIHNldHRsaW5nIHRpbWUgZnJvbSBTb0MgRG9jdW1lbnRhdGlvbiBmb3IgQUJCIG1vZHVsZShjbG9jaworCWN5Y2xlcyBmb3IgU1IyX1dUQ05UX1ZBTFVFKS4KKy0gdGksdHJhbnhkb25lLXN0YXR1cy1tYXNrOiBNYXNrIHRvIHRoZSBpbnQtcmVnaXN0ZXIgdG8gd3JpdGUtdG8tY2xlYXIgbWFzaworCWluZGljYXRpbmcgTERPIHRyYW54ZG9uZSAob3BlcmF0aW9uIGNvbXBsZXRlKS4KKy0gdGksYWJiX2luZm86IEFuIGFycmF5IG9mIDYtdHVwbGVzIHUzMiBpdGVtcyBwcm92aWRpbmcgaW5mb3JtYXRpb24gYWJvdXQgQUJCCisJY29uZmlndXJhdGlvbiBuZWVkZWQgcGVyIG9wZXJhdGlvbmFsIHZvbHRhZ2Ugb2YgdGhlIGRldmljZS4KKwlFYWNoIGl0ZW0gY29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZyBpbiB0aGUgc2FtZSBvcmRlcjoKKwl2b2x0OiB2b2x0YWdlIGluIHVWIC0gT25seSB1c2VkIHRvIGluZGV4IEFCQiBpbmZvcm1hdGlvbi4KKwlBQkIgbW9kZTogb25lIG9mIHRoZSBmb2xsb3dpbmc6CisJCTAtYnlwYXNzCisJCTEtRm9yd2FyZCBCb2R5IEJpYXMoRkJCKQorCQkzLVJldmVyc2UgQm9keSBCaWFzKFJCQikKKwllZnVzZToJKHNlZSBPcHRpb25hbCBwcm9wZXJ0aWVzKQorCVJCQiBlbmFibGUgZWZ1c2UgTWFzazoJKFNlZSBPcHRpb25hbCBwcm9wZXJ0aWVzKQorCUZCQiBlbmFibGUgZWZ1c2UgTWFzazoJKFNlZSBPcHRpb25hbCBwcm9wZXJ0aWVzKQorCVZzZXQgdmFsdWUgZWZ1c2UgTWFzazoJKFNlZSBPcHRpb25hbCBwcm9wZXJ0aWVzKQorCisJTk9URTogSWYgbW9yZSB0aGFuIDEgZW50cnkgaXMgcHJlc2VudCwgdGhlbiByZWd1bGF0b3IgaXMgc2V0dXAgdG8gY2hhbmdlCisJICAgICAgdm9sdGFnZSwgYWxsb3dpbmcgZm9yIHZhcmlvdXMgbW9kZXMgdG8gYmUgc2VsZWN0ZWQgaW5kZXhlZCBvZmYKKwkgICAgICB0aGUgcmVndWxhdG9yLiBGdXJ0aGVyLCBBQkIgTERPcyBhcmUgY29uc2lkZXJlZCBhbHdheXMtb24gYnkKKwkgICAgICBkZWZhdWx0LgorCitPcHRpb25hbCBQcm9wZXJ0aWVzOgorLSByZWctbmFtZXM6IEluIGFkZGl0aW9uIHRvIHRoZSByZXF1aXJlZCBwcm9wZXJ0aWVzLCB0aGUgZm9sbG93aW5nIGFyZSBvcHRpb25hbAorICAtICJlZnVzZS1hZGRyZXNzIgktIENvbnRhaW5zIGVmdXNlIGJhc2UgYWRkcmVzcyB1c2VkIHRvIHBpY2sgdXAgQUJCIGluZm8uCisgIC0gImxkby1hZGRyZXNzIgktIENvbnRhaW5zIGFkZHJlc3Mgb2YgQUJCIExETyBvdmVyaWRlIHJlZ2lzdGVyIGFkZHJlc3MuCisJImVmdXNlLWFkZHJlc3MiIGlzIHJlcXVpcmVkIGZvciB0aGlzLgorLSB0aSxsZG92YmItdnNldC1tYXNrCS0gUmVxdWlyZWQgaWYgbGRvLWFkZHJlc3MgaXMgc2V0LCBtYXNrIGZvciBMRE8gb3ZlcnJpZGUKKwlyZWdpc3RlciB0byBwcm92aWRlIG92ZXJyaWRlIHZzZXQgdmFsdWUuCistIHRpLGxkb3ZiYi1vdmVycmlkZS1tYXNrIC0gUmVxdWlyZWQgaWYgbGRvLWFkZHJlc3MgaXMgc2V0LCBtYXNrIGZvciBMRE8KKwlvdmVycmlkZSByZWdpc3RlciB0byBlbmFibGUgb3ZlcnJpZGUgdnNldCB2YWx1ZS4KKy0gdGksYWJiX29wcF9zZWw6IEFkZGVuZHVtIHRvIHRoZSBkZXNjcmlwdGlvbiBpbiByZXF1aXJlZCBwcm9wZXJ0aWVzCisJZWZ1c2U6IE1hbmRhdG9yeSBpZiAnZWZ1c2UtYWRkcmVzcycgcmVnaXN0ZXIgaXMgZGVmaW5lZC4gUHJvdmlkZXMgb2Zmc2V0CisJICAgICAgIGZyb20gZWZ1c2UtYWRkcmVzcyB0byBwaWNrIHVwIEFCQiBjaGFyYWN0ZXJpc3RpY3MuIFNldCB0byAwIGlmCisJICAgICAgICdlZnVzZS1hZGRyZXNzJyBpcyBub3QgZGVmaW5lZC4KKwlSQkIgZW5hYmxlIGVmdXNlIE1hc2s6CU9wdGlvbmFsIGlmICdlZnVzZS1hZGRyZXNzJyByZWdpc3RlciBpcyBkZWZpbmVkLgorCQknQUJCIG1vZGUnIGlzIGZvcmNlIHNldCB0byBSQkIgbW9kZSBpZiB2YWx1ZSBhdCAiZWZ1c2UtYWRkcmVzcyIKKwkJKyBlZnVzZSBtYXBzIHRvIFJCQiBtYXNrLiBTZXQgdG8gMCB0byBpZ25vcmUgdGhpcy4KKwlGQkIgZW5hYmxlIGVmdXNlIE1hc2s6CU9wdGlvbmFsIGlmICdlZnVzZS1hZGRyZXNzJyByZWdpc3RlciBpcyBkZWZpbmVkLgorCQknQUJCIG1vZGUnIGlzIGZvcmNlIHNldCB0byBGQkIgbW9kZSBpZiB2YWx1ZSBhdCAiZWZ1c2UtYWRkcmVzcyIKKwkJKyBlZnVzZSBtYXBzIHRvIEZCQiBtYXNrICh2YWxpZCBvbmx5IGlmIFJCQiBtYXNrIGRvZXMgbm90IG1hdGNoKQorCQlTZXQgdG8gMCB0byBpZ25vcmUgdGhpcy4KKwlWc2V0IHZhbHVlIGVmdXNlIE1hc2s6CU1hbmRhdG9yeSBpZiBsZG8tYWRkcmVzcyBpcyBzZXQuIFBpY2tzIHVwIGZyb20KKwkJZWZ1c2UgdGhlIHZhbHVlIHRvIHNldCBpbiAndGksbGRvdmJiLXZzZXQtbWFzaycgYXQgbGRvLWFkZHJlc3MuCisKK0V4YW1wbGUgIzE6IFNpbXBsZXN0IGNvbmZpZ3VyYXRpb24gKG5vIGVmdXNlIGRhdGEsIGhhcmQgY29kZWQgQUJCIHRhYmxlKToKK2FiYl94OiByZWd1bGF0b3ItYWJiLXggeworCWNvbXBhdGlibGUgPSAidGksYWJiLXYxIjsKKwlyZWd1bGF0b3ItbmFtZSA9ICJhYmJfeCI7CisJI2FkZHJlc3MtY2VsbCA9IDwwPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwlyZWcgPSA8MHg0ODMwNzJmMCAweDg+LCA8MHg0ODMwNjgxOCAweDQ+OworCXJlZy1uYW1lcyA9ICJiYXNlLWFkZHJlc3MiLCAiaW50LWFkZHJlc3MiOworCXRpLHRyYW54ZG9uZS1zdGF0dXMtbWFzayA9IDwweDQwMDAwMDA+OworCWNsb2NrcyA9IDwmc3lzY2xrPjsKKwl0aSxzZXR0bGluZy10aW1lID0gPDMwPjsKKwl0aSxjbG9jay1jeWNsZXMgPSA8OD47CisJdGksYWJiX2luZm8gPSA8CisJLyogdVYJCUFCQgllZnVzZQlyYmJfbQlmYmJfbQl2c2V0X20gKi8KKwkxMDEyNTAwCQkwCTAJMAkwCTAgLyogQnlwYXNzICovCisJMTIwMDAwMAkJMwkwCTAJMAkwIC8qIFJCQiBtYW5kYXRvcnkgKi8KKwkxMzIwMDAwCQkxCTAJMAkwCTAgLyogRkJCIG1hbmRhdG9yeSAqLworCT47Cit9OworCitFeGFtcGxlICMyOiBFZnVzZSBiaXRzIGNvbnRhaW4gQUJCIG1vZGUgc2V0dGluZyAobm8gTERPIG92ZXJyaWRlIGNhcGFiaWxpdHkpCithYmJfeTogcmVndWxhdG9yLWFiYi15IHsKKwljb21wYXRpYmxlID0gInRpLGFiYi12MiI7CisJcmVndWxhdG9yLW5hbWUgPSAiYWJiX3kiOworCSNhZGRyZXNzLWNlbGwgPSA8MD47CisJI3NpemUtY2VsbHMgPSA8MD47CisJcmVnID0gPDB4NGEzMDdiZDAgMHg4PiwgPDB4NGEzMDYwMTQgMHg0PiwgPDB4NEEwMDIyNjggMHg4PjsKKwlyZWctbmFtZXMgPSAiYmFzZS1hZGRyZXNzIiwgImludC1hZGRyZXNzIiwgImVmdXNlLWFkZHJlc3MiOworCXRpLHRyYW54ZG9uZS1zdGF0dXMtbWFzayA9IDwweDQwMDAwMDA+OworCWNsb2NrcyA9IDwmc3lzY2xrPjsKKwl0aSxzZXR0bGluZy10aW1lID0gPDUwPjsKKwl0aSxjbG9jay1jeWNsZXMgPSA8MTY+OworCXRpLGFiYl9pbmZvID0gPAorCS8qIHVWCQlBQkIJZWZ1c2UJcmJiX20JZmJiX20JdnNldF9tICovCisJOTc1MDAwCQkwCTAJMAkwCTAgLyogQnlwYXNzICovCisJMTAxMjUwMAkJMAkwCTB4NDAwMDAJMAkwIC8qIFJCQiBvcHRpb25hbCAqLworCTEyMDAwMDAJCTAJMHg0CTAJMHg0MDAwMAkwIC8qIEZCQiBvcHRpb25hbCAqLworCTEzMjAwMDAJCTEJMAkwCTAJMCAvKiBGQkIgbWFuZGF0b3J5ICovCisJPjsKK307CisKK0V4YW1wbGUgIzM6IEVmdXNlIGJpdHMgY29udGFpbiBBQkIgbW9kZSBzZXR0aW5nIGFuZCBMRE8gb3ZlcnJpZGUgY2FwYWJpbGl0eQorYWJiX3o6IHJlZ3VsYXRvci1hYmIteiB7CisJY29tcGF0aWJsZSA9ICJ0aSxhYmItdjIiOworCXJlZ3VsYXRvci1uYW1lID0gImFiYl96IjsKKwkjYWRkcmVzcy1jZWxsID0gPDA+OworCSNzaXplLWNlbGxzID0gPDA+OworCXJlZyA9IDwweDRhZTA3Y2U0IDB4OD4sIDwweDRhZTA2MDEwIDB4ND4sCisJICAgICAgPDB4NGEwMDIxOTQgMHg4PiwgPDB4NGFlMEMzMTQgMHg0PjsKKwlyZWctbmFtZXMgPSAiYmFzZS1hZGRyZXNzIiwgImludC1hZGRyZXNzIiwKKwkJICAgICJlZnVzZS1hZGRyZXNzIiwgImxkby1hZGRyZXNzIjsKKwl0aSx0cmFueGRvbmUtc3RhdHVzLW1hc2sgPSA8MHg4MDAwMDAwPjsKKwkvKiBMRE9WQkJNTV9NVVhfQ1RSTCAqLworCXRpLGxkb3ZiYi1vdmVycmlkZS1tYXNrID0gPDB4NDAwPjsKKwkvKiBMRE9WQkJNTV9WU0VUX09VVCAqLworCXRpLGxkb3ZiYi12c2V0LW1hc2sgPSA8MHgxRj47CisJY2xvY2tzID0gPCZzeXNjbGs+OworCXRpLHNldHRsaW5nLXRpbWUgPSA8NTA+OworCXRpLGNsb2NrLWN5Y2xlcyA9IDwxNj47CisJdGksYWJiX2luZm8gPSA8CisJLyogdVYJQUJCCWVmdXNlCXJiYl9tCWZiYl9tCXZzZXRfbSAqLworCTk3NTAwMAkwCTAJMAkwCTAJLyogQnlwYXNzICovCisJMTIwMDAwMAkwCTB4NAkwCTB4NDAwMDAJMHgxZjAwCS8qIEZCQiBvcHRpb25hbCwgdnNldCAqLworCT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci90cHM1MTYzMi1yZWd1bGF0b3IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci90cHM1MTYzMi1yZWd1bGF0b3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmN2U0NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3RwczUxNjMyLXJlZ3VsYXRvci50eHQKQEAgLTAsMCArMSwyNyBAQAorVFBTNTE2MzIgVm9sdGFnZSByZWd1bGF0b3JzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IE11c3QgYmUgInRpLHRwczUxNjMyIgorLSByZWc6IEkyQyBzbGF2ZSBhZGRyZXNzCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHRpLGVuYWJsZS1wd20tZHZmczogRW5hYmxlIHRoZSBEVkZTIHZvbHRhZ2UgY29udHJvbCB0aHJvdWdoIHRoZSBQV00gaW50ZXJmYWNlLgorLSB0aSxkdmZzLXN0ZXAtMjBtVjogVGhlIDIwbVYgc3RlcCB2b2x0YWdlIHdoZW4gUFdNIERWRlMgZW5hYmxlZC4gTWlzc2luZyB0aGlzCisJd2lsbCBzZXQgMTBtViBzdGVwIHZvbHRhZ2UgaW4gUFdNIERWRlMgbW9kZS4gSW4gbm9ybWFsIG1vZGUsIHRoZSB2b2x0YWdlCisJc3RlcCBpcyAxMG1WIGFzIHBlciBkYXRhc2hlZXQuCisKK0FueSBwcm9wZXJ0eSBkZWZpbmVkIGFzIHBhcnQgb2YgdGhlIGNvcmUgcmVndWxhdG9yIGJpbmRpbmcsIGRlZmluZWQgaW4KK3JlZ3VsYXRvci50eHQsIGNhbiBhbHNvIGJlIHVzZWQuCisKK0V4YW1wbGU6CisKKwl0cHM1MTYzMiB7CisJCWNvbXBhdGlibGUgPSAidGksdHBzNTE2MzIiOworCQlyZWcgPSAgPDB4NDM+OworCQlyZWd1bGF0b3ItbmFtZSA9ICJ0cHM1MTYzMi12b3V0IjsKKwkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8NTAwMDAwPjsKKwkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTUwMDAwMD47CisJCXJlZ3VsYXRvci1ib290LW9uOworCQl0aSxlbmFibGUtcHdtLWR2ZnM7CisJCXRpLGR2ZnMtc3RlcC0yMG1WOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3RwczYyMzYwLXJlZ3VsYXRvci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3RwczYyMzYwLXJlZ3VsYXRvci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIyMGMzZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvdHBzNjIzNjAtcmVndWxhdG9yLnR4dApAQCAtMCwwICsxLDQ0IEBACitUUFM2MjM2MCBWb2x0YWdlIHJlZ3VsYXRvcnMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogTXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZy4KKwkidGksdHBzNjIzNjAiCisJInRpLHRwczYyMzYxIiwKKwkidGksdHBzNjIzNjIiLAorCSJ0aSx0cHM2MjM2MyIsCistIHJlZzogSTJDIHNsYXZlIGFkZHJlc3MKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdGksZW5hYmxlLXZvdXQtZGlzY2hhcmdlOiBFbmFibGUgb3V0cHV0IGRpc2NoYXJnZS4gVGhpcyBpcyBib29sZWFuIHZhbHVlLgorLSB0aSxlbmFibGUtcHVsbC1kb3duOiBFbmFibGUgcHVsbCBkb3duLiBUaGlzIGlzIGJvb2xlYW4gdmFsdWUuCistIHRpLHZzZWwwLWdwaW86IEdQSU8gZm9yIGNvbnRyb2xsaW5nIFZTRUwwIGxpbmUuCisgIElmIHRoaXMgcHJvcGVydHkgaXMgbWlzc2luZywgdGhlbiBhc3N1bWUgdGhhdCB0aGVyZSBpcyBubyBHUElPCisgIGZvciB2c2VsMCBjb250cm9sLgorLSB0aSx2c2VsMS1ncGlvOiBHcGlvIGZvciBjb250cm9sbGluZyBWU0VMMSBsaW5lLgorICBJZiB0aGlzIHByb3BlcnR5IGlzIG1pc3NpbmcsIHRoZW4gYXNzdW1lIHRoYXQgdGhlcmUgaXMgbm8gR1BJTworICBmb3IgdnNlbDEgY29udHJvbC4KKy0gdGksdnNlbDAtc3RhdGUtaGlnaDogSW5pdGlhbCBzdGF0ZSBvZiB2c2VsMCBpbnB1dCBpcyBoaWdoLgorICBJZiB0aGlzIHByb3BlcnR5IGlzIG1pc3NpbmcsIHRoZW4gYXNzdW1lIHRoZSBzdGF0ZSBhcyBsb3cgKDApLgorLSB0aSx2c2VsMS1zdGF0ZS1oaWdoOiBJbml0aWFsIHN0YXRlIG9mIHZzZWwxIGlucHV0IGlzIGhpZ2guCisgIElmIHRoaXMgcHJvcGVydHkgaXMgbWlzc2luZywgdGhlbiBhc3N1bWUgdGhlIHN0YXRlIGFzIGxvdyAoMCkuCisKK0FueSBwcm9wZXJ0eSBkZWZpbmVkIGFzIHBhcnQgb2YgdGhlIGNvcmUgcmVndWxhdG9yIGJpbmRpbmcsIGRlZmluZWQgaW4KK3JlZ3VsYXRvci50eHQsIGNhbiBhbHNvIGJlIHVzZWQuCisKK0V4YW1wbGU6CisKKwlhYmM6IHRwczYyMzYwIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSx0cHM2MjM2MSI7CisJCXJlZyA9ICA8MHg2MD47CisJCXJlZ3VsYXRvci1uYW1lID0gInRwczYyMzYxLXZvdXQiOworCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw1MDAwMDA+OworCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxNTAwMDAwPjsKKwkJcmVndWxhdG9yLWJvb3Qtb24KKwkJdGksdnNlbDAtZ3BpbyA9IDwmZ3BpbzEgMTYgMD47CisJCXRpLHZzZWwxLWdwaW8gPSA8JmdwaW8xIDE3IDA+OworCQl0aSx2c2VsMC1zdGF0ZS1oaWdoOworCQl0aSx2c2VsMS1zdGF0ZS1oaWdoOworCQl0aSxlbmFibGUtcHVsbC1kb3duOworCQl0aSxlbmFibGUtZm9yY2UtcHdtOworCQl0aSxlbmFibGUtdm91dC1kaXNjaGFyZ2U7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvdHBzNjUwMjMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci90cHM2NTAyMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ3MTRlNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvdHBzNjUwMjMudHh0CkBAIC0wLDAgKzEsNjAgQEAKK1RQUzY1MDIzIGZhbWlseSBvZiByZWd1bGF0b3JzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IE11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcuCisJInRpLHRwczY1MDIwIiwKKwkidGksdHBzNjUwMjEiLAorCSJ0aSx0cHM2NTAyMyIsCistIHJlZzogSTJDIHNsYXZlIGFkZHJlc3MKKy0gcmVndWxhdG9yczogbGlzdCBvZiByZWd1bGF0b3JzIHByb3ZpZGVkIGJ5IHRoaXMgY29udHJvbGxlciwgbXVzdCBiZSBuYW1lZAorICBhZnRlciB0aGVpciBoYXJkd2FyZSBjb3VudGVycGFydHM6IFZEQ0RDWzEtM10gYW5kIExET1sxLTJdCistIHJlZ3VsYXRvcnM6IFRoaXMgaXMgdGhlIGxpc3Qgb2YgY2hpbGQgbm9kZXMgdGhhdCBzcGVjaWZ5IHRoZSByZWd1bGF0b3IKKyAgaW5pdGlhbGl6YXRpb24gZGF0YSBmb3IgZGVmaW5lZCByZWd1bGF0b3JzLiBUaGUgZGVmaW5pdGlvbiBmb3IgZWFjaCBvZgorICB0aGVzZSBub2RlcyBpcyBkZWZpbmVkIHVzaW5nIHRoZSBzdGFuZGFyZCBiaW5kaW5nIGZvciByZWd1bGF0b3JzIGZvdW5kIGF0CisgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvcmVndWxhdG9yLnR4dC4KKworRWFjaCByZWd1bGF0b3IgaXMgZGVmaW5lZCB1c2luZyB0aGUgc3RhbmRhcmQgYmluZGluZyBmb3IgcmVndWxhdG9ycy4KKworRXhhbXBsZToKKworCXRwczY1MDIzQDQ4IHsKKwkJY29tcGF0aWJsZSA9ICJ0aSx0cHM2NTAyMyI7CisJCXJlZyA9IDwweDQ4PjsKKworCQlyZWd1bGF0b3JzIHsKKwkJCVZEQ0RDMSB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmRkX21wdSI7CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMjAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxMjAwMDAwPjsKKwkJCX07CisKKwkJCVZEQ0RDMiB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAidmRkX2NvcmUiOworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCQl9OworCisJCQlWRENEQzMgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gInZkZF9pbyI7CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKKwkJCX07CisKKwkJCUxETzEgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gInZkZF91c2IxOCI7CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKKwkJCX07CisKKwkJCUxETzIgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gInZkZF91c2IzMyI7CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvdHBzNjUwOTAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci90cHM2NTA5MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E2OWY1ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvdHBzNjUwOTAudHh0CkBAIC0wLDAgKzEsMTI2IEBACitUUFM2NTA5MCByZWd1bGF0b3JzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ0aSx0cHM2NTA5MCIKKy0gcmVnOiBJMkMgc2xhdmUgYWRkcmVzcworLSBpbnRlcnJ1cHRzOiB0aGUgaW50ZXJydXB0IG91dHB1dHMgb2YgdGhlIGNvbnRyb2xsZXIKKy0gcmVndWxhdG9yczogQSBub2RlIHRoYXQgaG91c2VzIGEgc3ViLW5vZGUgZm9yIGVhY2ggcmVndWxhdG9yIHdpdGhpbiB0aGUKKyAgZGV2aWNlLiBFYWNoIHN1Yi1ub2RlIGlzIGlkZW50aWZpZWQgdXNpbmcgdGhlIG5vZGUncyBuYW1lLCB3aXRoIHZhbGlkCisgIHZhbHVlcyBsaXN0ZWQgYmVsb3cuIFRoZSBjb250ZW50IG9mIGVhY2ggc3ViLW5vZGUgaXMgZGVmaW5lZCBieSB0aGUKKyAgc3RhbmRhcmQgYmluZGluZyBmb3IgcmVndWxhdG9yczsgc2VlIHJlZ3VsYXRvci50eHQuCisgIGRjZGNbMS0zXSwgZmV0WzEtN10gYW5kIGxkb1sxLTJdIHJlc3BlY3RpdmVseS4KKy0gdnN5c1sxLTNdLXN1cHBseTogVGhlIGlucHV0IHN1cHBseSBmb3IgRENEQ1sxLTNdIHJlc3BlY3RpdmVseS4KKy0gaW5mZXRbMS03XS1zdXBwbHk6IFRoZSBpbnB1dCBzdXBwbHkgZm9yIEZFVFsxLTddIHJlc3BlY3RpdmVseS4KKy0gdnN5cy1sWzEtMl0tc3VwcGx5OiBUaGUgaW5wdXQgc3VwcGx5IGZvciBMRE9bMS0yXSByZXNwZWN0aXZlbHkuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHRpLGVuYWJsZS1leHQtY29udHJvbDogVGhpcyBpcyBhcHBsaWNhYmxlIGZvciBEQ0RDMSwgRENEQzIgYW5kIERDREMzLgorICBJZiBEQ0RDcyBhcmUgZXh0ZXJuYWxseSBjb250cm9sbGVkIHRoZW4gdGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUgdGhlcmUuCistICJkY2RjLWV4dC1jb250cm9sLWdwaW9zOiBUaGlzIGlzIGFwcGxpY2FibGUgZm9yIERDREMxLCBEQ0RDMiBhbmQgRENEQzMuCisgIElmIERDRENzIGFyZSBleHRlcm5hbGx5IGNvbnRyb2xsZWQgYW5kIGlmIGl0IGlzIGZyb20gR1BJTyB0aGVuIEdQSU8KKyAgbnVtYmVyIHNob3VsZCBiZSBwcm92aWRlZC4gSWYgaXQgaXMgZXh0ZXJuYWxseSBjb250cm9sbGVkIGFuZCBubyBHUElPCisgIGVudHJ5IHRoZW4gZHJpdmVyIHdpbGwganVzdCBjb25maWd1cmUgdGhpcyByYWlscyBhcyBleHRlcm5hbCBjb250cm9sCisgIGFuZCB3aWxsIG5vdCBwcm92aWRlIGFueSBlbmFibGUvZGlzYWJsZSBBUElzLgorLSB0aSxvdmVyY3VycmVudC13YWl0OiBUaGlzIGlzIGFwcGxpY2FibGUgdG8gRkVUIHJlZ2lzdGVycywgd2hpY2ggaGF2ZSBhCisgIHBvb3JseSBkZWZpbmVkICJvdmVyY3VycmVudCB3YWl0IiBmaWVsZC4gIElmIHRoaXMgcHJvcGVydHkgaXMgcHJlc2VudCBpdAorICBzaG91bGQgYmUgYmV0d2VlbiAwIC0gMy4gIElmIHRoaXMgcHJvcGVydHkgaXNuJ3QgcHJlc2VudCB3ZSB3b24ndCB0b3VjaCB0aGUKKyAgIm92ZXJjdXJyZW50IHdhaXQiIGZpZWxkIGFuZCB3ZSdsbCBsZWF2ZSBpdCB0byB0aGUgQklPUy9FQyB0byBkZWFsIHdpdGguCisKK0VhY2ggcmVndWxhdG9yIGlzIGRlZmluZWQgdXNpbmcgdGhlIHN0YW5kYXJkIGJpbmRpbmcgZm9yIHJlZ3VsYXRvcnMuCisKK0V4YW1wbGU6CisKKwl0cHM2NTA5MEA0OCB7CisJCWNvbXBhdGlibGUgPSAidGksdHBzNjUwOTAiOworCQlyZWcgPSA8MHg0OD47CisJCWludGVycnVwdHMgPSA8MCA4OCAweDQ+OworCisJCXZzeXMxLXN1cHBseSA9IDwmc29tZV9yZWc+OworCQl2c3lzMi1zdXBwbHkgPSA8JnNvbWVfcmVnPjsKKwkJdnN5czMtc3VwcGx5ID0gPCZzb21lX3JlZz47CisJCWluZmV0MS1zdXBwbHkgPSA8JnNvbWVfcmVnPjsKKwkJaW5mZXQyLXN1cHBseSA9IDwmc29tZV9yZWc+OworCQlpbmZldDMtc3VwcGx5ID0gPCZzb21lX3JlZz47CisJCWluZmV0NC1zdXBwbHkgPSA8JnNvbWVfcmVnPjsKKwkJaW5mZXQ1LXN1cHBseSA9IDwmc29tZV9yZWc+OworCQlpbmZldDYtc3VwcGx5ID0gPCZzb21lX3JlZz47CisJCWluZmV0Ny1zdXBwbHkgPSA8JnNvbWVfcmVnPjsKKwkJdnN5cy1sMS1zdXBwbHkgPSA8JnNvbWVfcmVnPjsKKwkJdnN5cy1sMi1zdXBwbHkgPSA8JnNvbWVfcmVnPjsKKworCQlyZWd1bGF0b3JzIHsKKwkJCWRjZGMxIHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJkY2RjMSI7CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCQl0aSxlbmFibGUtZXh0LWNvbnRyb2w7CisJCQkJZGNkYy1leHQtY29udHJvbC1ncGlvcyA9IDwmZ3BpbyAxMCAwPjsKKwkJCX07CisKKwkJCWRjZGMyIHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJkY2RjMiI7CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCWRjZGMzIHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJkY2RjMyI7CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCWZldDEgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gImZldDEiOworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQlmZXQyIHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJmZXQyIjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJZmV0MyB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAiZmV0MyI7CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCWZldDQgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gImZldDQiOworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQlmZXQ1IHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJmZXQ1IjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJZmV0NiB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAiZmV0NiI7CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCWZldDcgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gImZldDciOworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQlsZG8xIHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJsZG8xIjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJbGRvMiB7CisJCQkJcmVndWxhdG9yLW5hbWUgPSAibGRvMiI7CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvdHBzNjUyMTcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci90cHM2NTIxNy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGYwNWQyMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvdHBzNjUyMTcudHh0CkBAIC0wLDAgKzEsNzggQEAKK1RQUzY1MjE3IGZhbWlseSBvZiByZWd1bGF0b3JzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ0aSx0cHM2NTIxNyIKKy0gcmVnOiBJMkMgc2xhdmUgYWRkcmVzcworLSByZWd1bGF0b3JzOiBsaXN0IG9mIHJlZ3VsYXRvcnMgcHJvdmlkZWQgYnkgdGhpcyBjb250cm9sbGVyLCBtdXN0IGJlIG5hbWVkCisgIGFmdGVyIHRoZWlyIGhhcmR3YXJlIGNvdW50ZXJwYXJ0czogZGNkY1sxLTNdIGFuZCBsZG9bMS00XQorLSByZWd1bGF0b3JzOiBUaGlzIGlzIHRoZSBsaXN0IG9mIGNoaWxkIG5vZGVzIHRoYXQgc3BlY2lmeSB0aGUgcmVndWxhdG9yCisgIGluaXRpYWxpemF0aW9uIGRhdGEgZm9yIGRlZmluZWQgcmVndWxhdG9ycy4gTm90IGFsbCByZWd1bGF0b3JzIGZvciB0aGUgZ2l2ZW4KKyAgZGV2aWNlIG5lZWQgdG8gYmUgcHJlc2VudC4gVGhlIGRlZmluaXRpb24gZm9yIGVhY2ggb2YgdGhlc2Ugbm9kZXMgaXMgZGVmaW5lZAorICB1c2luZyB0aGUgc3RhbmRhcmQgYmluZGluZyBmb3IgcmVndWxhdG9ycyBmb3VuZCBhdAorICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3JlZ3VsYXRvci50eHQuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHRpLHBtaWMtc2h1dGRvd24tY29udHJvbGxlcjogVGVsbGluZyB0aGUgUE1JQyB0byBzaHV0ZG93biBvbiBQV1JfRU4gdG9nZ2xlLgorCisgIFRoZSB2YWxpZCBuYW1lcyBmb3IgcmVndWxhdG9ycyBhcmU6CisgIHRwczY1MjE3OiBkY2RjMSwgZGNkYzIsIGRjZGMzLCBsZG8xLCBsZG8yLCBsZG8zIGFuZCBsZG80CisKK0VhY2ggcmVndWxhdG9yIGlzIGRlZmluZWQgdXNpbmcgdGhlIHN0YW5kYXJkIGJpbmRpbmcgZm9yIHJlZ3VsYXRvcnMuCisKK0V4YW1wbGU6CisKKwl0cHM6IHRwc0AyNCB7CisJCWNvbXBhdGlibGUgPSAidGksdHBzNjUyMTciOworCQl0aSxwbWljLXNodXRkb3duLWNvbnRyb2xsZXI7CisKKwkJcmVndWxhdG9ycyB7CisJCQlkY2RjMV9yZWc6IGRjZGMxIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw5MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDE4MDAwMDA+OworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQlkY2RjMl9yZWc6IGRjZGMyIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw5MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCisJCQlkY2RjM19yZWc6IGRjYzMgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDkwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTUwMDAwMD47CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCWxkbzFfcmVnOiBsZG8xIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMDAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJbGRvMl9yZWc6IGxkbzIgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDkwMDAwMD47CisJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MzMwMDAwMD47CisJCQkJcmVndWxhdG9yLWJvb3Qtb247CisJCQkJcmVndWxhdG9yLWFsd2F5cy1vbjsKKwkJCX07CisKKwkJCWxkbzNfcmVnOiBsZG8zIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxODAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJbGRvNF9yZWc6IGxkbzQgeworCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDE4MDAwMDA+OworCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDMzMDAwMDA+OworCQkJCXJlZ3VsYXRvci1ib290LW9uOworCQkJCXJlZ3VsYXRvci1hbHdheXMtb247CisJCQl9OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3RwczY1MjE4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvdHBzNjUyMTgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjY2MxZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3RwczY1MjE4LnR4dApAQCAtMCwwICsxLDIzIEBACitUUFM2NTIxOCBmYW1pbHkgb2YgcmVndWxhdG9ycworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorRm9yIHRwczY1MjE4IHJlZ3VsYXRvcnMvTERPcworLSBjb21wYXRpYmxlOgorICAtICJ0aSx0cHM2NTIxOC1kY2RjMSIgZm9yIERDREMxCisgIC0gInRpLHRwczY1MjE4LWRjZGMyIiBmb3IgRENEQzIKKyAgLSAidGksdHBzNjUyMTgtZGNkYzMiIGZvciBEQ0RDMworICAtICJ0aSx0cHM2NTIxOC1kY2RjNCIgZm9yIERDREM0CisgIC0gInRpLHRwczY1MjE4LWRjZGM1IiBmb3IgRENEQzUKKyAgLSAidGksdHBzNjUyMTgtZGNkYzYiIGZvciBEQ0RDNgorICAtICJ0aSx0cHM2NTIxOC1sZG8xIiBmb3IgTERPMQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBBbnkgb3B0aW9uYWwgcHJvcGVydHkgZGVmaW5lZCBpbiBiaW5kaW5ncy9yZWd1bGF0b3IvcmVndWxhdG9yLnR4dAorCitFeGFtcGxlOgorCisJeHl6OiByZWd1bGF0b3JAMCB7CisJCWNvbXBhdGlibGUgPSAidGksdHBzNjUyMTgtZGNkYzEiOworCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCAgPSA8MTAwMDAwMD47CisJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ICA9IDwzMDAwMDAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci90cHM2NTg2eC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3RwczY1ODZ4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjQwY2FjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci90cHM2NTg2eC50eHQKQEAgLTAsMCArMSwxMzUgQEAKK1RQUzY1ODZ4IGZhbWlseSBvZiByZWd1bGF0b3JzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJ0aSx0cHM2NTg2eCIKKy0gcmVnOiBJMkMgc2xhdmUgYWRkcmVzcworLSBpbnRlcnJ1cHRzOiB0aGUgaW50ZXJydXB0IG91dHB1dHMgb2YgdGhlIGNvbnRyb2xsZXIKKy0gI2dwaW8tY2VsbHM6IG51bWJlciBvZiBjZWxscyB0byBkZXNjcmliZSBhIEdQSU8KKy0gZ3Bpby1jb250cm9sbGVyOiBtYXJrIHRoZSBkZXZpY2UgYXMgYSBHUElPIGNvbnRyb2xsZXIKKy0gcmVndWxhdG9yczogQSBub2RlIHRoYXQgaG91c2VzIGEgc3ViLW5vZGUgZm9yIGVhY2ggcmVndWxhdG9yIHdpdGhpbiB0aGUKKyAgZGV2aWNlLiBFYWNoIHN1Yi1ub2RlIGlzIGlkZW50aWZpZWQgdXNpbmcgdGhlIG5vZGUncyBuYW1lIChvciB0aGUgZGVwcmVjYXRlZAorICByZWd1bGF0b3ItY29tcGF0aWJsZSBwcm9wZXJ0eSBpZiBwcmVzZW50KSwgd2l0aCB2YWxpZCB2YWx1ZXMgbGlzdGVkIGJlbG93LgorICBUaGUgY29udGVudCBvZiBlYWNoIHN1Yi1ub2RlIGlzIGRlZmluZWQgYnkgdGhlIHN0YW5kYXJkIGJpbmRpbmcgZm9yCisgIHJlZ3VsYXRvcnM7IHNlZSByZWd1bGF0b3IudHh0LgorICBzeXMsIHNtWzAtMl0sIGxkb1swLTldIGFuZCBsZG9fcnRjCistIHN5cy1zdXBwbHk6IFRoZSBpbnB1dCBzdXBwbHkgZm9yIFNZUy4KKy0gdmluLXNtMC1zdXBwbHk6IFRoZSBpbnB1dCBzdXBwbHkgZm9yIHRoZSBTTTAuCistIHZpbi1zbTEtc3VwcGx5OiBUaGUgaW5wdXQgc3VwcGx5IGZvciB0aGUgU00xLgorLSB2aW4tc20yLXN1cHBseTogVGhlIGlucHV0IHN1cHBseSBmb3IgdGhlIFNNMi4KKy0gdmlubGRvMDEtc3VwcGx5OiBUaGUgaW5wdXQgc3VwcGx5IGZvciB0aGUgTERPMSBhbmQgTERPMgorLSB2aW5sZG8yMy1zdXBwbHk6IFRoZSBpbnB1dCBzdXBwbHkgZm9yIHRoZSBMRE8yIGFuZCBMRE8zCistIHZpbmxkbzQtc3VwcGx5OiBUaGUgaW5wdXQgc3VwcGx5IGZvciB0aGUgTERPNAorLSB2aW5sZG82Nzgtc3VwcGx5OiBUaGUgaW5wdXQgc3VwcGx5IGZvciB0aGUgTERPNiwgTERPNyBhbmQgTERPOAorLSB2aW5sZG85LXN1cHBseTogVGhlIGlucHV0IHN1cHBseSBmb3IgdGhlIExETzkKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdGksc3lzdGVtLXBvd2VyLWNvbnRyb2xsZXI6IFRlbGxpbmcgd2hldGhlciBvciBub3QgdGhpcyBwbWljIGlzIGNvbnRyb2xsaW5nCisgIHRoZSBzeXN0ZW0gcG93ZXIuCisKK0VhY2ggcmVndWxhdG9yIGlzIGRlZmluZWQgdXNpbmcgdGhlIHN0YW5kYXJkIGJpbmRpbmcgZm9yIHJlZ3VsYXRvcnMuCisKK05vdGU6IExETzUgYW5kIExET19SVEMgaXMgc3VwcGxpZWQgYnkgU1lTIHJlZ3VsYXRvciBpbnRlcm5hbGx5IGFuZCBkcml2ZXIKKyAgICAgIHRha2UgY2FyZSBvZiBtYWtpbmcgcHJvcGVyIHBhcmVudCBjaGlsZCByZWxhdGlvbnNoaXAuCisKK0V4YW1wbGU6CisKKwlwbXU6IHRwczY1ODZ4QDM0IHsKKwkJY29tcGF0aWJsZSA9ICJ0aSx0cHM2NTg2eCI7CisJCXJlZyA9IDwweDM0PjsKKwkJaW50ZXJydXB0cyA9IDwwIDg4IDB4ND47CisKKwkJI2dwaW8tY2VsbHMgPSA8Mj47CisJCWdwaW8tY29udHJvbGxlcjsKKworCQl0aSxzeXN0ZW0tcG93ZXItY29udHJvbGxlcjsKKworCQlzeXMtc3VwcGx5ID0gPCZzb21lX3JlZz47CisJCXZpbi1zbTAtc3VwcGx5ID0gPCZzb21lX3JlZz47CisJCXZpbi1zbTEtc3VwcGx5ID0gPCZzb21lX3JlZz47CisJCXZpbi1zbTItc3VwcGx5ID0gPCZzb21lX3JlZz47CisJCXZpbmxkbzAxLXN1cHBseSA9IDwuLi4+OworCQl2aW5sZG8yMy1zdXBwbHkgPSA8Li4uPjsKKwkJdmlubGRvNC1zdXBwbHkgPSA8Li4uPjsKKwkJdmlubGRvNjc4LXN1cHBseSA9IDwuLi4+OworCQl2aW5sZG85LXN1cHBseSA9IDwuLi4+OworCisJCXJlZ3VsYXRvcnMgeworCQkJc3lzX3JlZzogc3lzIHsKKwkJCQlyZWd1bGF0b3ItbmFtZSA9ICJ2ZGRfc3lzIjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJc20wX3JlZzogc20wIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwgNzI1MDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxNTAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJc20xX3JlZzogc20xIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwgNzI1MDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxNTAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJc20yX3JlZzogc20yIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwzMDAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDw0NTUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItYm9vdC1vbjsKKwkJCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCQkJfTsKKworCQkJbGRvMF9yZWc6IGxkbzAgeworCQkJCXJlZ3VsYXRvci1uYW1lID0gIlBDSUUgQ0xLIjsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCX07CisKKwkJCWxkbzFfcmVnOiBsZG8xIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwgNzI1MDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxNTAwMDAwPjsKKwkJCX07CisKKwkJCWxkbzJfcmVnOiBsZG8yIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwgNzI1MDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwxNTAwMDAwPjsKKwkJCX07CisKKwkJCWxkbzNfcmVnOiBsZG8zIHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMjUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCX07CisKKwkJCWxkbzRfcmVnOiBsZG80IHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxNzAwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwyNDc1MDAwPjsKKwkJCX07CisKKwkJCWxkbzVfcmVnOiBsZG81IHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMjUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCX07CisKKwkJCWxkbzZfcmVnOiBsZG82IHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMjUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCX07CisKKwkJCWxkbzdfcmVnOiBsZG83IHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMjUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCX07CisKKwkJCWxkbzhfcmVnOiBsZG84IHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMjUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCX07CisKKwkJCWxkbzlfcmVnOiBsZG85IHsKKwkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwxMjUwMDAwPjsKKwkJCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCA9IDwzMzAwMDAwPjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvdHdsLXJlZ3VsYXRvci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3R3bC1yZWd1bGF0b3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1YjBjMTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3R3bC1yZWd1bGF0b3IudHh0CkBAIC0wLDAgKzEsNjcgQEAKK1RXTCBmYW1pbHkgb2YgcmVndWxhdG9ycworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorRm9yIHR3bDYwMzAgcmVndWxhdG9ycy9MRE9zCistIGNvbXBhdGlibGU6CisgIC0gInRpLHR3bDYwMzAtdmF1eDEiIGZvciBWQVVYMSBMRE8KKyAgLSAidGksdHdsNjAzMC12YXV4MiIgZm9yIFZBVVgyIExETworICAtICJ0aSx0d2w2MDMwLXZhdXgzIiBmb3IgVkFVWDMgTERPCisgIC0gInRpLHR3bDYwMzAtdm1tYyIgZm9yIFZNTUMgTERPCisgIC0gInRpLHR3bDYwMzAtdnBwIiBmb3IgVlBQIExETworICAtICJ0aSx0d2w2MDMwLXZ1c2ltIiBmb3IgVlVTSU0gTERPCisgIC0gInRpLHR3bDYwMzAtdmFuYSIgZm9yIFZBTkEgTERPCisgIC0gInRpLHR3bDYwMzAtdmN4aW8iIGZvciBWQ1hJTyBMRE8KKyAgLSAidGksdHdsNjAzMC12ZGFjIiBmb3IgVkRBQyBMRE8KKyAgLSAidGksdHdsNjAzMC12dXNiIiBmb3IgVlVTQiBMRE8KKyAgLSAidGksdHdsNjAzMC12MXY4IiBmb3IgVjFWOCBMRE8KKyAgLSAidGksdHdsNjAzMC12MnYxIiBmb3IgVjJWMSBMRE8KKyAgLSAidGksdHdsNjAzMC12ZGQxIiBmb3IgVkREMSBTTVBTCisgIC0gInRpLHR3bDYwMzAtdmRkMiIgZm9yIFZERDIgU01QUworICAtICJ0aSx0d2w2MDMwLXZkZDMiIGZvciBWREQzIFNNUFMKK0ZvciB0d2w2MDMyIHJlZ3VsYXRvcnMvTERPcworLSBjb21wYXRpYmxlOgorICAtICJ0aSx0d2w2MDMyLWxkbzEiIGZvciBMRE8xIExETworICAtICJ0aSx0d2w2MDMyLWxkbzIiIGZvciBMRE8yIExETworICAtICJ0aSx0d2w2MDMyLWxkbzMiIGZvciBMRE8zIExETworICAtICJ0aSx0d2w2MDMyLWxkbzQiIGZvciBMRE80IExETworICAtICJ0aSx0d2w2MDMyLWxkbzUiIGZvciBMRE81IExETworICAtICJ0aSx0d2w2MDMyLWxkbzYiIGZvciBMRE82IExETworICAtICJ0aSx0d2w2MDMyLWxkbzciIGZvciBMRE83IExETworICAtICJ0aSx0d2w2MDMyLWxkb2xuIiBmb3IgTERPTE4gTERPCisgIC0gInRpLHR3bDYwMzItbGRvdXNiIiBmb3IgTERPVVNCIExETworICAtICJ0aSx0d2w2MDMyLXNtcHMzIiBmb3IgU01QUzMgU01QUworICAtICJ0aSx0d2w2MDMyLXNtcHM0IiBmb3IgU01QUzQgU01QUworICAtICJ0aSx0d2w2MDMyLXZpbyIgZm9yIFZJTyBTTVBTCitGb3IgdHdsNDAzMCByZWd1bGF0b3JzL0xET3MKKy0gY29tcGF0aWJsZToKKyAgLSAidGksdHdsNDAzMC12YXV4MSIgZm9yIFZBVVgxIExETworICAtICJ0aSx0d2w0MDMwLXZhdXgyIiBmb3IgVkFVWDIgTERPCisgIC0gInRpLHR3bDUwMzAtdmF1eDIiIGZvciBWQVVYMiBMRE8KKyAgLSAidGksdHdsNDAzMC12YXV4MyIgZm9yIFZBVVgzIExETworICAtICJ0aSx0d2w0MDMwLXZhdXg0IiBmb3IgVkFVWDQgTERPCisgIC0gInRpLHR3bDQwMzAtdm1tYzEiIGZvciBWTU1DMSBMRE8KKyAgLSAidGksdHdsNDAzMC12bW1jMiIgZm9yIFZNTUMyIExETworICAtICJ0aSx0d2w0MDMwLXZwbGwxIiBmb3IgVlBMTDEgTERPCisgIC0gInRpLHR3bDQwMzAtdnBsbDIiIGZvciBWUExMMiBMRE8KKyAgLSAidGksdHdsNDAzMC12c2ltIiBmb3IgVlNJTSBMRE8KKyAgLSAidGksdHdsNDAzMC12ZGFjIiBmb3IgVkRBQyBMRE8KKyAgLSAidGksdHdsNDAzMC12aW50YW5hMiIgZm9yIFZJTlRBTkEyIExETworICAtICJ0aSx0d2w0MDMwLXZpbyIgZm9yIFZJTyBMRE8KKyAgLSAidGksdHdsNDAzMC12ZGQxIiBmb3IgVkREMSBTTVBTCisgIC0gInRpLHR3bDQwMzAtdmRkMiIgZm9yIFZERDIgU01QUworICAtICJ0aSx0d2w0MDMwLXZpbnRhbmExIiBmb3IgVklOVEFOQTEgTERPCisgIC0gInRpLHR3bDQwMzAtdmludGRpZyIgZm9yIFZJTlRESUcgTERPCisgIC0gInRpLHR3bDQwMzAtdnVzYjF2NSIgZm9yIFZVU0IxVjUgTERPCisgIC0gInRpLHR3bDQwMzAtdnVzYjF2OCIgZm9yIFZVU0IxVjggTERPCisgIC0gInRpLHR3bDQwMzAtdnVzYjN2MSIgZm9yIFZVU0IzVjEgTERPCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIEFueSBvcHRpb25hbCBwcm9wZXJ0eSBkZWZpbmVkIGluIGJpbmRpbmdzL3JlZ3VsYXRvci9yZWd1bGF0b3IudHh0CisKK0V4YW1wbGU6CisKKwl4eXo6IHJlZ3VsYXRvckAwIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSx0d2w2MDMwLXZhdXgxIjsKKwkJcmVndWxhdG9yLW1pbi1taWNyb3ZvbHQgID0gPDEwMDAwMDA+OworCQlyZWd1bGF0b3ItbWF4LW1pY3Jvdm9sdCAgPSA8MzAwMDAwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvdmV4cHJlc3MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci92ZXhwcmVzcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc3NWY3MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvdmV4cHJlc3MudHh0CkBAIC0wLDAgKzEsMzIgQEAKK1ZlcnNhdGlsZSBFeHByZXNzIHZvbHRhZ2UgcmVndWxhdG9ycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVzIG5vZGUgcHJvcGVydGllczoKKy0gImNvbXBhdGlibGUiIHZhbHVlOiAiYXJtLHZleHByZXNzLXZvbHQiCistICJhcm0sdmV4cHJlc3Mtc3lzcmVnLGZ1bmMiIHdoZW4gY29udHJvbGxlZCB2aWEgdmV4cHJlc3Mtc3lzcmVnCisgIChzZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS92ZXhwcmVzcy1zeXNyZWcudHh0CisgIGZvciBtb3JlIGRldGFpbHMpCisKK1JlcXVpcmVkIHJlZ3VsYXRvciBwcm9wZXJ0aWVzOgorLSAicmVndWxhdG9yLW5hbWUiCistICJyZWd1bGF0b3ItYWx3YXlzLW9uIgorCitPcHRpb25hbCByZWd1bGF0b3IgcHJvcGVydGllczoKKy0gInJlZ3VsYXRvci1taW4tbWljcm92b2x0IgorLSAicmVndWxhdG9yLW1heC1taWNyb3ZvbHQiCisKK1NlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3JlZ3VsYXRvci50eHQKK2ZvciBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIHJlZ3VsYXRvciBwcm9wZXJ0aWVzLgorCitXaGVuIG5vICJyZWd1bGF0b3ItW21pbnxtYXhdLW1pY3Jvdm9sdCIgcHJvcGVydGllcyBhcmUgZGVmaW5lZCwKK3RoZSBkZXZpY2UgaXMgdHJlYXRlZCBhcyBmaXhlZCAob3IgcmF0aGVyICJyZWFkLW9ubHkiKSByZWd1bGF0b3IuCisKK0V4YW1wbGU6CisJdm9sdEAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0sdmV4cHJlc3Mtdm9sdCI7CisJCWFybSx2ZXhwcmVzcy1zeXNyZWcsZnVuYyA9IDwyIDA+OworCQlyZWd1bGF0b3ItbmFtZSA9ICJDb3JlcyI7CisJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDgwMDAwMD47CisJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDEwNTAwMDA+OworCQlyZWd1bGF0b3ItYWx3YXlzLW9uOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVtb3RlcHJvYy93a3VwX20zX3Jwcm9jLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZW1vdGVwcm9jL3drdXBfbTNfcnByb2MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhNzAwNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVtb3RlcHJvYy93a3VwX20zX3Jwcm9jLnR4dApAQCAtMCwwICsxLDUyIEBACitUSSBXYWtldXAgTTMgUmVtb3RlcHJvYyBEcml2ZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgVEkgQU0zM3h4IGFuZCBBTTQzeHggZmFtaWx5IG9mIGRldmljZXMgdXNlIGEgc21hbGwgQ29ydGV4IE0zIGNvLXByb2Nlc3NvcgorKGNvbW1vbmx5IHJlZmVycmVkIHRvIGFzIFdha2V1cCBNMyBvciBDTTMpIHRvIGhlbHAgd2l0aCB2YXJpb3VzIGxvdyBwb3dlciB0YXNrcwordGhhdCBjYW5ub3QgYmUgY29udHJvbGxlZCBmcm9tIHRoZSBNUFUuIFRoaXMgQ00zIHByb2Nlc3NvciByZXF1aXJlcyBhIGZpcm13YXJlCitiaW5hcnkgdG8gYWNjb21wbGlzaCB0aGlzLiBUaGUgd2t1cF9tMyByZW1vdGVwcm9jIGRyaXZlciBoYW5kbGVzIHRoZSBsb2FkaW5nIG9mCit0aGUgZmlybXdhcmUgYW5kIGJvb3Rpbmcgb2YgdGhlIENNMy4KKworV2t1cCBNMyBEZXZpY2UgTm9kZToKKz09PT09PT09PT09PT09PT09PT09CitBIHdrdXBfbTMgZGV2aWNlIG5vZGUgaXMgdXNlZCB0byByZXByZXNlbnQgdGhlIFdha2V1cCBNMyBwcm9jZXNzb3IgaW5zdGFuY2UKK3dpdGhpbiB0aGUgU29DLiBJdCBpcyBhZGRlZCBhcyBhIGNoaWxkIG5vZGUgb2YgdGhlIHBhcmVudCBpbnRlcmNvbm5lY3QgYnVzCisobDRfd2t1cCkgdGhyb3VnaCB3aGljaCBpdCBpcyBhY2Nlc3NpYmxlIHRvIHRoZSBNUFUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tLQorLSBjb21wYXRpYmxlOgkJU2hvdWxkIGJlIG9uZSBvZiwKKwkJCQkidGksYW0zMzUyLXdrdXAtbTMiIGZvciBBTTMzeHggU29DcworCQkJCSJ0aSxhbTQzNzItd2t1cC1tMyIgZm9yIEFNNDN4eCBTb0NzCistIHJlZzoJCQlTaG91bGQgY29udGFpbiB0aGUgYWRkcmVzcyByYW5nZXMgZm9yIHRoZSB0d28gaW50ZXJuYWwKKwkJCW1lbW9yeSByZWdpb25zLCBVTUVNIGFuZCBETUVNLiBUaGUgcGFyZW50IG5vZGUgc2hvdWxkCisJCQlwcm92aWRlIGFuIGFwcHJvcHJpYXRlIHJhbmdlcyBwcm9wZXJ0eSBmb3IgcHJvcGVybHkKKwkJCXRyYW5zbGF0aW5nIHRoZXNlIGludG8gYnVzIGFkZHJlc3Nlcy4KKy0gcmVnLW5hbWVzOgkJQ29udGFpbnMgdGhlIGNvcnJlc3BvbmRpbmcgbmFtZXMgZm9yIHRoZSB0d28gbWVtb3J5CisJCQlyZWdpb25zLiBUaGVzZSBzaG91bGQgYmUgbmFtZWQgInVtZW0iICYgImRtZW0iLgorLSB0aSxod21vZHM6CQlOYW1lIG9mIHRoZSBod21vZCBhc3NvY2lhdGVkIHdpdGggdGhlIHdrdXBtMyBkZXZpY2UuCistIHRpLHBtLWZpcm13YXJlOglOYW1lIG9mIGZpcm13YXJlIGZpbGUgdG8gYmUgdXNlZCBmb3IgbG9hZGluZyBhbmQKKwkJCWJvb3RpbmcgdGhlIHdrdXBfbTMgcmVtb3RlIHByb2Nlc3Nvci4KKworRXhhbXBsZToKKy0tLS0tLS0tCisvKiBBTTMzeHggKi8KK29jcCB7CisJIGw0X3drdXA6IGw0X3drdXBANDRjMDAwMDAgeworCQljb21wYXRpYmxlID0gImFtMzM1LWw0LXdrdXAiLCAic2ltcGxlLWJ1cyI7CisJCXJhbmdlcyA9IDwwIDB4NDRjMDAwMDAgMHg0MDAwMDA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisKKwkJd2t1cF9tMzogd2t1cF9tM0AxMDAwMDAgeworCQkJY29tcGF0aWJsZSA9ICJ0aSxhbTMzNTItd2t1cC1tMyI7CisJCQlyZWcgPSA8MHgxMDAwMDAgMHg0MDAwPiwKKwkJCSAgICAgIDwweDE4MDAwMCAweDIwMDA+OworCQkJcmVnLW5hbWVzID0gInVtZW0iLCAiZG1lbSI7CisJCQl0aSxod21vZHMgPSAid2t1cF9tMyI7CisJCQl0aSxwbS1maXJtd2FyZSA9ICJhbTMzNXgtcG0tZmlybXdhcmUuZWxmIjsKKwkJfTsKKwl9OworCisJLi4uCit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Jlc2VydmVkLW1lbW9yeS9yZXNlcnZlZC1tZW1vcnkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Jlc2VydmVkLW1lbW9yeS9yZXNlcnZlZC1tZW1vcnkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkYTBlYmQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzZXJ2ZWQtbWVtb3J5L3Jlc2VydmVkLW1lbW9yeS50eHQKQEAgLTAsMCArMSwxMzMgQEAKKyoqKiBSZXNlcnZlZCBtZW1vcnkgcmVnaW9ucyAqKioKKworUmVzZXJ2ZWQgbWVtb3J5IGlzIHNwZWNpZmllZCBhcyBhIG5vZGUgdW5kZXIgdGhlIC9yZXNlcnZlZC1tZW1vcnkgbm9kZS4KK1RoZSBvcGVyYXRpbmcgc3lzdGVtIHNoYWxsIGV4Y2x1ZGUgcmVzZXJ2ZWQgbWVtb3J5IGZyb20gbm9ybWFsIHVzYWdlCitvbmUgY2FuIGNyZWF0ZSBjaGlsZCBub2RlcyBkZXNjcmliaW5nIHBhcnRpY3VsYXIgcmVzZXJ2ZWQgKGV4Y2x1ZGVkIGZyb20KK25vcm1hbCB1c2UpIG1lbW9yeSByZWdpb25zLiBTdWNoIG1lbW9yeSByZWdpb25zIGFyZSB1c3VhbGx5IGRlc2lnbmVkIGZvcgordGhlIHNwZWNpYWwgdXNhZ2UgYnkgdmFyaW91cyBkZXZpY2UgZHJpdmVycy4KKworUGFyYW1ldGVycyBmb3IgZWFjaCBtZW1vcnkgcmVnaW9uIGNhbiBiZSBlbmNvZGVkIGludG8gdGhlIGRldmljZSB0cmVlCit3aXRoIHRoZSBmb2xsb3dpbmcgbm9kZXM6CisKKy9yZXNlcnZlZC1tZW1vcnkgbm9kZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjYWRkcmVzcy1jZWxscywgI3NpemUtY2VsbHMgKHJlcXVpcmVkKSAtIHN0YW5kYXJkIGRlZmluaXRpb24KKyAgICAtIFNob3VsZCB1c2UgdGhlIHNhbWUgdmFsdWVzIGFzIHRoZSByb290IG5vZGUKK3JhbmdlcyAocmVxdWlyZWQpIC0gc3RhbmRhcmQgZGVmaW5pdGlvbgorICAgIC0gU2hvdWxkIGJlIGVtcHR5CisKKy9yZXNlcnZlZC1tZW1vcnkvIGNoaWxkIG5vZGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRWFjaCBjaGlsZCBvZiB0aGUgcmVzZXJ2ZWQtbWVtb3J5IG5vZGUgc3BlY2lmaWVzIG9uZSBvciBtb3JlIHJlZ2lvbnMgb2YKK3Jlc2VydmVkIG1lbW9yeS4gRWFjaCBjaGlsZCBub2RlIG1heSBlaXRoZXIgdXNlIGEgJ3JlZycgcHJvcGVydHkgdG8KK3NwZWNpZnkgYSBzcGVjaWZpYyByYW5nZSBvZiByZXNlcnZlZCBtZW1vcnksIG9yIGEgJ3NpemUnIHByb3BlcnR5IHdpdGgKK29wdGlvbmFsIGNvbnN0cmFpbnRzIHRvIHJlcXVlc3QgYSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYmxvY2sgb2YgbWVtb3J5LgorCitGb2xsb3dpbmcgdGhlIGdlbmVyaWMtbmFtZXMgcmVjb21tZW5kZWQgcHJhY3RpY2UsIG5vZGUgbmFtZXMgc2hvdWxkCityZWZsZWN0IHRoZSBwdXJwb3NlIG9mIHRoZSBub2RlIChpZS4gImZyYW1lYnVmZmVyIiBvciAiZG1hLXBvb2wiKS4gVW5pdAorYWRkcmVzcyAoQDxhZGRyZXNzPikgc2hvdWxkIGJlIGFwcGVuZGVkIHRvIHRoZSBuYW1lIGlmIHRoZSBub2RlIGlzIGEKK3N0YXRpYyBhbGxvY2F0aW9uLgorCitQcm9wZXJ0aWVzOgorUmVxdWlyZXMgZWl0aGVyIGEpIG9yIGIpIGJlbG93LgorYSkgc3RhdGljIGFsbG9jYXRpb24KKyAgIHJlZyAocmVxdWlyZWQpIC0gc3RhbmRhcmQgZGVmaW5pdGlvbgorYikgZHluYW1pYyBhbGxvY2F0aW9uCisgICBzaXplIChyZXF1aXJlZCkgLSBsZW5ndGggYmFzZWQgb24gcGFyZW50J3MgI3NpemUtY2VsbHMKKyAgICAgICAgICAgICAgICAgICAtIFNpemUgaW4gYnl0ZXMgb2YgbWVtb3J5IHRvIHJlc2VydmUuCisgICBhbGlnbm1lbnQgKG9wdGlvbmFsKSAtIGxlbmd0aCBiYXNlZCBvbiBwYXJlbnQncyAjc2l6ZS1jZWxscworICAgICAgICAgICAgICAgICAgICAgICAgLSBBZGRyZXNzIGJvdW5kYXJ5IGZvciBhbGlnbm1lbnQgb2YgYWxsb2NhdGlvbi4KKyAgIGFsbG9jLXJhbmdlcyAob3B0aW9uYWwpIC0gcHJvcC1lbmNvZGVkLWFycmF5IChhZGRyZXNzLCBsZW5ndGggcGFpcnMpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBTcGVjaWZpZXMgcmVnaW9ucyBvZiBtZW1vcnkgdGhhdCBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0YWJsZSB0byBhbGxvY2F0ZSBmcm9tLgorCitJZiBib3RoIHJlZyBhbmQgc2l6ZSBhcmUgcHJlc2VudCwgdGhlbiB0aGUgcmVnIHByb3BlcnR5IHRha2VzIHByZWNlZGVuY2UKK2FuZCBzaXplIGlzIGlnbm9yZWQuCisKK0FkZGl0aW9uYWwgcHJvcGVydGllczoKK2NvbXBhdGlibGUgKG9wdGlvbmFsKSAtIHN0YW5kYXJkIGRlZmluaXRpb24KKyAgICAtIG1heSBjb250YWluIHRoZSBmb2xsb3dpbmcgc3RyaW5nczoKKyAgICAgICAgLSBzaGFyZWQtZG1hLXBvb2w6IFRoaXMgaW5kaWNhdGVzIGEgcmVnaW9uIG9mIG1lbW9yeSBtZWFudCB0byBiZQorICAgICAgICAgIHVzZWQgYXMgYSBzaGFyZWQgcG9vbCBvZiBETUEgYnVmZmVycyBmb3IgYSBzZXQgb2YgZGV2aWNlcy4gSXQgY2FuCisgICAgICAgICAgYmUgdXNlZCBieSBhbiBvcGVyYXRpbmcgc3lzdGVtIHRvIGluc3RhbmNpYXRlIHRoZSBuZWNlc3NhcnkgcG9vbAorICAgICAgICAgIG1hbmFnZW1lbnQgc3Vic3lzdGVtIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgLSB2ZW5kb3Igc3BlY2lmaWMgc3RyaW5nIGluIHRoZSBmb3JtIDx2ZW5kb3I+LFs8ZGV2aWNlPi1dPHVzYWdlPgorbm8tbWFwIChvcHRpb25hbCkgLSBlbXB0eSBwcm9wZXJ0eQorICAgIC0gSW5kaWNhdGVzIHRoZSBvcGVyYXRpbmcgc3lzdGVtIG11c3Qgbm90IGNyZWF0ZSBhIHZpcnR1YWwgbWFwcGluZworICAgICAgb2YgdGhlIHJlZ2lvbiBhcyBwYXJ0IG9mIGl0cyBzdGFuZGFyZCBtYXBwaW5nIG9mIHN5c3RlbSBtZW1vcnksCisgICAgICBub3IgcGVybWl0IHNwZWN1bGF0aXZlIGFjY2VzcyB0byBpdCB1bmRlciBhbnkgY2lyY3Vtc3RhbmNlcyBvdGhlcgorICAgICAgdGhhbiB1bmRlciB0aGUgY29udHJvbCBvZiB0aGUgZGV2aWNlIGRyaXZlciB1c2luZyB0aGUgcmVnaW9uLgorcmV1c2FibGUgKG9wdGlvbmFsKSAtIGVtcHR5IHByb3BlcnR5CisgICAgLSBUaGUgb3BlcmF0aW5nIHN5c3RlbSBjYW4gdXNlIHRoZSBtZW1vcnkgaW4gdGhpcyByZWdpb24gd2l0aCB0aGUKKyAgICAgIGxpbWl0YXRpb24gdGhhdCB0aGUgZGV2aWNlIGRyaXZlcihzKSBvd25pbmcgdGhlIHJlZ2lvbiBuZWVkIHRvIGJlCisgICAgICBhYmxlIHRvIHJlY2xhaW0gaXQgYmFjay4gVHlwaWNhbGx5IHRoYXQgbWVhbnMgdGhhdCB0aGUgb3BlcmF0aW5nCisgICAgICBzeXN0ZW0gY2FuIHVzZSB0aGF0IHJlZ2lvbiB0byBzdG9yZSB2b2xhdGlsZSBvciBjYWNoZWQgZGF0YSB0aGF0CisgICAgICBjYW4gYmUgb3RoZXJ3aXNlIHJlZ2VuZXJhdGVkIG9yIG1pZ3JhdGVkIGVsc2V3aGVyZS4KKworTGludXggaW1wbGVtZW50YXRpb24gbm90ZToKKy0gSWYgYSAibGludXgsY21hLWRlZmF1bHQiIHByb3BlcnR5IGlzIHByZXNlbnQsIHRoZW4gTGludXggd2lsbCB1c2UgdGhlCisgIHJlZ2lvbiBmb3IgdGhlIGRlZmF1bHQgcG9vbCBvZiB0aGUgY29udGlndW91cyBtZW1vcnkgYWxsb2NhdG9yLgorCitEZXZpY2Ugbm9kZSByZWZlcmVuY2VzIHRvIHJlc2VydmVkIG1lbW9yeQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1JlZ2lvbnMgaW4gdGhlIC9yZXNlcnZlZC1tZW1vcnkgbm9kZSBtYXkgYmUgcmVmZXJlbmNlZCBieSBvdGhlciBkZXZpY2UKK25vZGVzIGJ5IGFkZGluZyBhIG1lbW9yeS1yZWdpb24gcHJvcGVydHkgdG8gdGhlIGRldmljZSBub2RlLgorCittZW1vcnktcmVnaW9uIChvcHRpb25hbCkgLSBwaGFuZGxlLCBzcGVjaWZpZXIgcGFpcnMgdG8gY2hpbGRyZW4gb2YgL3Jlc2VydmVkLW1lbW9yeQorCitFeGFtcGxlCistLS0tLS0tCitUaGlzIGV4YW1wbGUgZGVmaW5lcyAzIGNvbnRpZ3VvdXMgcmVnaW9ucyBhcmUgZGVmaW5lZCBmb3IgTGludXgga2VybmVsOgorb25lIGRlZmF1bHQgb2YgYWxsIGRldmljZSBkcml2ZXJzIChuYW1lZCBsaW51eCxjbWFANzIwMDAwMDAgYW5kIDY0TWlCIGluIHNpemUpLAorb25lIGRlZGljYXRlZCB0byB0aGUgZnJhbWVidWZmZXIgZGV2aWNlIChuYW1lZCBmcmFtZWJ1ZmZlckA3ODAwMDAwMCwgOE1pQiksIGFuZAorb25lIGZvciBtdWx0aW1lZGlhIHByb2Nlc3NpbmcgKG5hbWVkIG11bHRpbWVkaWEtbWVtb3J5QDc3MDAwMDAwLCA2NE1pQikuCisKKy8geworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDE+OworCisJbWVtb3J5IHsKKwkJcmVnID0gPDB4NDAwMDAwMDAgMHg0MDAwMDAwMD47CisJfTsKKworCXJlc2VydmVkLW1lbW9yeSB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJcmFuZ2VzOworCisJCS8qIGdsb2JhbCBhdXRvY29uZmlndXJlZCByZWdpb24gZm9yIGNvbnRpZ3VvdXMgYWxsb2NhdGlvbnMgKi8KKwkJbGludXgsY21hIHsKKwkJCWNvbXBhdGlibGUgPSAic2hhcmVkLWRtYS1wb29sIjsKKwkJCXJldXNhYmxlOworCQkJc2l6ZSA9IDwweDQwMDAwMDA+OworCQkJYWxpZ25tZW50ID0gPDB4MjAwMD47CisJCQlsaW51eCxjbWEtZGVmYXVsdDsKKwkJfTsKKworCQlkaXNwbGF5X3Jlc2VydmVkOiBmcmFtZWJ1ZmZlckA3ODAwMDAwMCB7CisJCQlyZWcgPSA8MHg3ODAwMDAwMCAweDgwMDAwMD47CisJCX07CisKKwkJbXVsdGltZWRpYV9yZXNlcnZlZDogbXVsdGltZWRpYUA3NzAwMDAwMCB7CisJCQljb21wYXRpYmxlID0gImFjbWUsbXVsdGltZWRpYS1tZW1vcnkiOworCQkJcmVnID0gPDB4NzcwMDAwMDAgMHg0MDAwMDAwPjsKKwkJfTsKKwl9OworCisJLyogLi4uICovCisKKwlmYjA6IHZpZGVvQDEyMzAwMDAwIHsKKwkJbWVtb3J5LXJlZ2lvbiA9IDwmZGlzcGxheV9yZXNlcnZlZD47CisJCS8qIC4uLiAqLworCX07CisKKwlzY2FsZXI6IHNjYWxlckAxMjUwMDAwMCB7CisJCW1lbW9yeS1yZWdpb24gPSA8Jm11bHRpbWVkaWFfcmVzZXJ2ZWQ+OworCQkvKiAuLi4gKi8KKwl9OworCisJY29kZWM6IGNvZGVjQDEyNjAwMDAwIHsKKwkJbWVtb3J5LXJlZ2lvbiA9IDwmbXVsdGltZWRpYV9yZXNlcnZlZD47CisJCS8qIC4uLiAqLworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Jlc2V0L2FsbHdpbm5lcixzdW54aS1jbG9jay1yZXNldC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzZXQvYWxsd2lubmVyLHN1bnhpLWNsb2NrLXJlc2V0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGY3NzU3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Jlc2V0L2FsbHdpbm5lcixzdW54aS1jbG9jay1yZXNldC50eHQKQEAgLTAsMCArMSwyMSBAQAorQWxsd2lubmVyIHN1bnhpIFBlcmlwaGVyYWwgUmVzZXQgQ29udHJvbGxlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQbGVhc2UgYWxzbyByZWZlciB0byByZXNldC50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGNvbW1vbiByZXNldAorY29udHJvbGxlciBiaW5kaW5nIHVzYWdlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisgICJhbGx3aW5uZXIsc3VuNmktYTMxLWFoYjEtcmVzZXQiCisgICJhbGx3aW5uZXIsc3VuNmktYTMxLWNsb2NrLXJlc2V0IgorLSByZWc6IHNob3VsZCBiZSByZWdpc3RlciBiYXNlIGFuZCBsZW5ndGggYXMgZG9jdW1lbnRlZCBpbiB0aGUKKyAgZGF0YXNoZWV0CistICNyZXNldC1jZWxsczogMSwgc2VlIGJlbG93CisKK2V4YW1wbGU6CisKK2FoYjFfcnN0OiByZXNldEAwMWMyMDJjMCB7CisJI3Jlc2V0LWNlbGxzID0gPDE+OworCWNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjZpLWEzMS1haGIxLXJlc2V0IjsKKwlyZWcgPSA8MHgwMWMyMDJjMCAweGM+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9hdGg3OS1yZXNldC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzZXQvYXRoNzktcmVzZXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjNTYzMzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzZXQvYXRoNzktcmVzZXQudHh0CkBAIC0wLDAgKzEsMjAgQEAKK0JpbmRpbmcgZm9yIFF1YWxjb21tIEF0aGVyb3MgQVI3eHh4L0FSOVhYWCByZXNldCBjb250cm9sbGVyCisKK1BsZWFzZSBhbHNvIHJlZmVyIHRvIHJlc2V0LnR4dCBpbiB0aGlzIGRpcmVjdG9yeSBmb3IgY29tbW9uIHJlc2V0Citjb250cm9sbGVyIGJpbmRpbmcgdXNhZ2UuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IGhhcyB0byBiZSAicWNhLDxzb2N0eXBlPi1yZXNldCIsICJxY2EsYXI3MTAwLXJlc2V0IgorICAgICAgICAgICAgICBhcyBmYWxsYmFjaworLSByZWc6IEJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgY29udHJvbGxlcnMgbWVtb3J5IGFyZWEKKy0gI3Jlc2V0LWNlbGxzIDogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgY2VsbHMgbmVlZGVkIHRvIGVuY29kZSByZXNldAorICAgICAgICAgICAgICAgICBsaW5lLCBzaG91bGQgYmUgMQorCitFeGFtcGxlOgorCisJcmVzZXQtY29udHJvbGxlckAxODA2MDAxYyB7CisJCWNvbXBhdGlibGUgPSAicWNhLGFyOTEzMi1yZXNldCIsICJxY2EsYXI3MTAwLXJlc2V0IjsKKwkJcmVnID0gPDB4MTgwNjAwMWMgMHg0PjsKKworCQkjcmVzZXQtY2VsbHMgPSA8MT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9iZXJsaW4scmVzZXQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Jlc2V0L2JlcmxpbixyZXNldC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE0ZmVlMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9iZXJsaW4scmVzZXQudHh0CkBAIC0wLDAgKzEsMjMgQEAKK01hcnZlbGwgQmVybGluIHJlc2V0IGNvbnRyb2xsZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUGxlYXNlIGFsc28gcmVmZXIgdG8gcmVzZXQudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBjb21tb24gcmVzZXQKK2NvbnRyb2xsZXIgYmluZGluZyB1c2FnZS4KKworVGhlIHJlc2V0IGNvbnRyb2xsZXIgbm9kZSBtdXN0IGJlIGEgc3ViLW5vZGUgb2YgdGhlIGNoaXAgY29udHJvbGxlcgorbm9kZSBvbiBCZXJsaW4gU29Dcy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJtYXJ2ZWxsLGJlcmxpbjItcmVzZXQiCistICNyZXNldC1jZWxsczogbXVzdCBiZSBzZXQgdG8gMgorCitFeGFtcGxlOgorCitjaGlwX3JzdDogcmVzZXQgeworCWNvbXBhdGlibGUgPSAibWFydmVsbCxiZXJsaW4yLXJlc2V0IjsKKwkjcmVzZXQtY2VsbHMgPSA8Mj47Cit9OworCismdXNiX3BoeTAgeworCXJlc2V0cyA9IDwmY2hpcF9yc3QgMHgxMDQgMTI+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9icmNtLGJjbTIxNjY0LXJlc2V0bWdyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9icmNtLGJjbTIxNjY0LXJlc2V0bWdyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45M2YzMWNhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Jlc2V0L2JyY20sYmNtMjE2NjQtcmVzZXRtZ3IudHh0CkBAIC0wLDAgKzEsMTQgQEAKK0Jyb2FkY29tIEtvbmEgRmFtaWx5IFJlc2V0IE1hbmFnZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHJlc2V0IG1hbmFnZXIgaXMgdXNlZCBvbiB0aGUgQnJvYWRjb20gQkNNMjE2NjQgU29DLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6IGJyY20sYmNtMjE2NjQtcmVzZXRtZ3IKKyAgLSByZWc6IG1lbW9yeSBhZGRyZXNzICYgcmFuZ2UKKworRXhhbXBsZToKKwlicmNtLHJlc2V0bWdyQDM1MDAxZjAwIHsKKwkJY29tcGF0aWJsZSA9ICJicmNtLGJjbTIxNjY0LXJlc2V0bWdyIjsKKwkJcmVnID0gPDB4MzUwMDFmMDAgMHgyND47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9icmNtLGJjbTYzMTM4LXBtYi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzZXQvYnJjbSxiY202MzEzOC1wbWIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ODg3MmQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzZXQvYnJjbSxiY202MzEzOC1wbWIudHh0CkBAIC0wLDAgKzEsMTkgQEAKK0Jyb2FkY29tIEJDTTYzMTM4IFByb2Nlc3NvciBNb25pdG9yIEJ1cyBiaW5kaW5nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQbGVhc2UgYWxzbyByZWZlciB0byByZXNldC50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGNvbW1vbiByZXNldAorY29udHJvbGxlciBiaW5kaW5nIHVzYWdlLgorCitSZXF1aXJlIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogbXVzdCBiZSAiYnJjbSxiY202MzEzOC1wbWIiCistIHJlZzogYmFzZSByZWdpc3RlciBhZGRyZXNzIGFuZCBzaXplIGZvciB0aGlzIGJ1cyBjb250cm9sbGVyCistICNyZXNldC1jZWxsczogbXVzdCBiZSAyIGZpcnN0IGNlbGwgaXMgdGhlIGFkZHJlc3Mgd2l0aGluIHRoZSBidXMgaW5zdGFuY2UgZGVzaWduYXRlZAorICBieSB0aGUgcGhhbmRsZSwgYW5kIHRoZSBzZWNvbmQgaXMgdGhlIG51bWJlciBvZiB6b25lcyBmb3IgdGhpcyBwZXJpcGhlcmFsCisKK0V4YW1wbGU6CisJcG1iMDogcmVzZXQtY29udHJvbGxlckA0ODAwYzAgeworCQljb21wYXRpYmxlID0gImJyY20sYmNtNjMxMzgtcG1iIjsKKwkJcmVnID0gPDB4NDgwMGMwIDB4MTA+OworCQkjcmVzZXQtY2VsbHMgPSA8Mj47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9mc2wsaW14LXNyYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzZXQvZnNsLGlteC1zcmMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzMzAxNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzZXQvZnNsLGlteC1zcmMudHh0CkBAIC0wLDAgKzEsNDkgQEAKK0ZyZWVzY2FsZSBpLk1YIFN5c3RlbSBSZXNldCBDb250cm9sbGVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQbGVhc2UgYWxzbyByZWZlciB0byByZXNldC50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGNvbW1vbiByZXNldAorY29udHJvbGxlciBiaW5kaW5nIHVzYWdlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImZzbCw8Y2hpcD4tc3JjIgorLSByZWc6IHNob3VsZCBiZSByZWdpc3RlciBiYXNlIGFuZCBsZW5ndGggYXMgZG9jdW1lbnRlZCBpbiB0aGUKKyAgZGF0YXNoZWV0CistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIFNSQyBpbnRlcnJ1cHQgYW5kIENQVSBXRE9HIGludGVycnVwdCwKKyAgaW4gdGhpcyBvcmRlci4KKy0gI3Jlc2V0LWNlbGxzOiAxLCBzZWUgYmVsb3cKKworZXhhbXBsZToKKworc3JjOiBzcmNAMDIwZDgwMDAgeworICAgICAgICBjb21wYXRpYmxlID0gImZzbCxpbXg2cS1zcmMiOworICAgICAgICByZWcgPSA8MHgwMjBkODAwMCAweDQwMDA+OworICAgICAgICBpbnRlcnJ1cHRzID0gPDAgOTEgMHgwNCAwIDk2IDB4MDQ+OworICAgICAgICAjcmVzZXQtY2VsbHMgPSA8MT47Cit9OworCitTcGVjaWZ5aW5nIHJlc2V0IGxpbmVzIGNvbm5lY3RlZCB0byBJUCBtb2R1bGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBzeXN0ZW0gcmVzZXQgY29udHJvbGxlciBjYW4gYmUgdXNlZCB0byByZXNldCB0aGUgR1BVLCBWUFUsCitJUFUsIGFuZCBPcGVuVkcgSVAgbW9kdWxlcyBvbiBpLk1YNSBhbmQgaS5NWDYgSUNzLiBUaG9zZSBkZXZpY2UKK25vZGVzIHNob3VsZCBzcGVjaWZ5IHRoZSByZXNldCBsaW5lIG9uIHRoZSBTUkMgaW4gdGhlaXIgcmVzZXRzCitwcm9wZXJ0eSwgY29udGFpbmluZyBhIHBoYW5kbGUgdG8gdGhlIFNSQyBkZXZpY2Ugbm9kZSBhbmQgYQorUkVTRVRfSU5ERVggc3BlY2lmeWluZyB3aGljaCBtb2R1bGUgdG8gcmVzZXQsIGFzIGRlc2NyaWJlZCBpbgorcmVzZXQudHh0CisKK2V4YW1wbGU6CisKKyAgICAgICAgaXB1MTogaXB1QDAyNDAwMDAwIHsKKyAgICAgICAgICAgICAgICByZXNldHMgPSA8JnNyYyAyPjsKKyAgICAgICAgfTsKKyAgICAgICAgaXB1MjogaXB1QDAyODAwMDAwIHsKKyAgICAgICAgICAgICAgICByZXNldHMgPSA8JnNyYyA0PjsKKyAgICAgICAgfTsKKworVGhlIGZvbGxvd2luZyBSRVNFVF9JTkRFWCB2YWx1ZXMgYXJlIHZhbGlkIGZvciBpLk1YNToKK0dQVV9SRVNFVCAgICAgMAorVlBVX1JFU0VUICAgICAxCitJUFUxX1JFU0VUICAgIDIKK09QRU5fVkdfUkVTRVQgMworVGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIFJFU0VUX0lOREVYIHZhbHVlIGlzIHZhbGlkIGZvciBpLk1YNjoKK0lQVTJfUkVTRVQgICAgNApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Jlc2V0L254cCxscGMxODUwLXJndS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzZXQvbnhwLGxwYzE4NTAtcmd1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGU5NmEyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Jlc2V0L254cCxscGMxODUwLXJndS50eHQKQEAgLTAsMCArMSw4NCBAQAorTlhQIExQQzE4NTAgIFJlc2V0IEdlbmVyYXRpb24gVW5pdCAoUkdVKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQbGVhc2UgYWxzbyByZWZlciB0byByZXNldC50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGNvbW1vbiByZXNldAorY29udHJvbGxlciBiaW5kaW5nIHVzYWdlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgIm54cCxscGMxODUwLXJndSIKKy0gcmVnOiByZWdpc3RlciBiYXNlIGFuZCBsZW5ndGgKKy0gY2xvY2tzOiBwaGFuZGxlIGFuZCBjbG9jayBzcGVjaWZpZXIgdG8gUkdVIGNsb2NrcworLSBjbG9jay1uYW1lczogc2hvdWxkIGNvbnRhaW4gImRlbGF5IiBhbmQgInJlZyIKKy0gI3Jlc2V0LWNlbGxzOiBzaG91bGQgYmUgMQorCitTZWUgdGFibGUgYmVsb3cgZm9yIHZhbGlkIHBlcmlwaGVyYWwgcmVzZXQgbnVtYmVycy4gTnVtYmVycyBub3QKK2luIHRoZSB0YWJsZSBiZWxvdyBhcmUgZWl0aGVyIHJlc2VydmVkIG9yIG5vdCBhcHBsaWNhYmxlIGZvcgorbm9ybWFsIG9wZXJhdGlvbi4KKworUmVzZXQJUGVyaXBoZXJhbAorICA5CVN5c3RlbSBjb250cm9sIHVuaXQgKFNDVSkKKyAxMglBUk0gQ29ydGV4LU0wIHN1YnN5c3RlbSBjb3JlIChMUEM0M3h4IG9ubHkpCisgMTMJQ1BVIGNvcmUKKyAxNglMQ0QgY29udHJvbGxlcgorIDE3CVVTQjAKKyAxOAlVU0IxCisgMTkJRE1BCisgMjAJU0RJTworIDIxCUV4dGVybmFsIG1lbW9yeSBjb250cm9sbGVyIChFTUMpCisgMjIJRXRoZXJuZXQKKyAyNQlGbGFzaCBiYW5rIEEKKyAyNwlFRVBST00KKyAyOAlHUElPCisgMjkJRmxhc2ggYmFuayBCCisgMzIJVGltZXIwCisgMzMJVGltZXIxCisgMzQJVGltZXIyCisgMzUJVGltZXIzCisgMzYJUmVwZXRpdGl2ZSBJbnRlcnJ1cHQgdGltZXIgKFJJVCkKKyAzNwlTdGF0ZSBDb25maWd1cmFibGUgVGltZXIgKFNDVCkKKyAzOAlNb3RvciBjb250cm9sIFBXTSAoTUNQV00pCisgMzkJUUVJCisgNDAJQURDMAorIDQxCUFEQzEKKyA0MglEQUMKKyA0NAlVU0FSVDAKKyA0NQlVQVJUMQorIDQ2CVVTQVJUMgorIDQ3CVVTQVJUMworIDQ4CUkyQzAKKyA0OQlJMkMxCisgNTAJU1NQMAorIDUxCVNTUDEKKyA1MglJMlMwIGFuZCBJMlMxCisgNTMJU2VyaWFsIEZsYXNoIEludGVyZmFjZSAoU1BJRkkpCisgNTQJQ19DQU4xCisgNTUJQ19DQU4wCisgNTYJQVJNIENvcnRleC1NMCBhcHBsaWNhdGlvbiBjb3JlIChMUEM0MzcwIG9ubHkpCisgNTcJU0dQSU8gKExQQzQzeHggb25seSkKKyA1OAlTUEkgKExQQzQzeHggb25seSkKKyA2MAlBRENIUyAoMTItYml0IEFEQykgKExQQzQzNzAgb25seSkKKworUmVmZXIgdG8gTlhQIExQQzE4eHggb3IgTFBDNDN4eCB1c2VyIG1hbnVhbCBmb3IgbW9yZSBkZXRhaWxzIGFib3V0Cit0aGUgcmVzZXQgc2lnbmFscyBhbmQgdGhlIGNvbm5lY3RlZCBibG9jay9wZXJpcGhlcmFsLgorCitSZXNldCBwcm92aWRlciBleGFtcGxlOgorcmd1OiByZXNldC1jb250cm9sbGVyQDQwMDUzMDAwIHsKKwljb21wYXRpYmxlID0gIm54cCxscGMxODUwLXJndSI7CisJcmVnID0gPDB4NDAwNTMwMDAgMHgxMDAwPjsKKwljbG9ja3MgPSA8JmNndSBCQVNFX1NBRkVfQ0xLPiwgPCZjY3UxIENMS19DUFVfQlVTPjsKKwljbG9jay1uYW1lcyA9ICJkZWxheSIsICJyZWciOworCSNyZXNldC1jZWxscyA9IDwxPjsKK307CisKK1Jlc2V0IGNvbnN1bWVyIGV4YW1wbGU6CittYWM6IGV0aGVybmV0QDQwMDEwMDAwIHsKKwljb21wYXRpYmxlID0gIm54cCxscGMxODUwLWR3bWFjIiwgInNucHMsZHdtYWMtMy42MTEiLCAic25wcyxkd21hYyI7CisJcmVnID0gPDB4NDAwMTAwMDAgMHgyMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDU+OworCWludGVycnVwdC1uYW1lcyA9ICJtYWNpcnEiOworCWNsb2NrcyA9IDwmY2N1MSBDTEtfQ1BVX0VUSEVSTkVUPjsKKwljbG9jay1uYW1lcyA9ICJzdG1tYWNldGgiOworCXJlc2V0cyA9IDwmcmd1IDIyPjsKKwlyZXNldC1uYW1lcyA9ICJzdG1tYWNldGgiOworCXN0YXR1cyA9ICJkaXNhYmxlZCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Jlc2V0L3Jlc2V0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9yZXNldC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFkYjZmZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9yZXNldC50eHQKQEAgLTAsMCArMSw3NSBAQAorPSBSZXNldCBTaWduYWwgRGV2aWNlIFRyZWUgQmluZGluZ3MgPQorCitUaGlzIGJpbmRpbmcgaXMgaW50ZW5kZWQgdG8gcmVwcmVzZW50IHRoZSBoYXJkd2FyZSByZXNldCBzaWduYWxzIHByZXNlbnQKK2ludGVybmFsbHkgaW4gbW9zdCBJQyAoU29DLCBGUEdBLCAuLi4pIGRlc2lnbnMuIFJlc2V0IHNpZ25hbHMgZm9yIHdob2xlCitzdGFuZGFsb25lIGNoaXBzIGFyZSBtb3N0IGxpa2VseSBiZXR0ZXIgcmVwcmVzZW50ZWQgYXMgR1BJT3MsIGFsdGhvdWdoIHRoZXJlCithcmUgbGlrZWx5IHRvIGJlIGV4Y2VwdGlvbnMgdG8gdGhpcyBydWxlLgorCitIYXJkd2FyZSBibG9ja3MgdHlwaWNhbGx5IHJlY2VpdmUgYSByZXNldCBzaWduYWwuIFRoaXMgc2lnbmFsIGlzIGdlbmVyYXRlZCBieQorYSByZXNldCBwcm92aWRlciAoZS5nLiBwb3dlciBtYW5hZ2VtZW50IG9yIGNsb2NrIG1vZHVsZSkgYW5kIHJlY2VpdmVkIGJ5IGEKK3Jlc2V0IGNvbnN1bWVyICh0aGUgbW9kdWxlIGJlaW5nIHJlc2V0LCBvciBhIG1vZHVsZSBtYW5hZ2luZyB3aGVuIGEgc3ViLQorb3JkaW5hdGUgbW9kdWxlIGlzIHJlc2V0KS4gVGhpcyBiaW5kaW5nIGV4aXN0cyB0byByZXByZXNlbnQgdGhlIHByb3ZpZGVyIGFuZAorY29uc3VtZXIsIGFuZCBwcm92aWRlIGEgd2F5IHRvIGNvdXBsZSB0aGUgdHdvIHRvZ2V0aGVyLgorCitBIHJlc2V0IHNpZ25hbCBpcyByZXByZXNlbnRlZCBieSB0aGUgcGhhbmRsZSBvZiB0aGUgcHJvdmlkZXIsIHBsdXMgYSByZXNldAorc3BlY2lmaWVyIC0gYSBsaXN0IG9mIERUIGNlbGxzIHRoYXQgcmVwcmVzZW50cyB0aGUgcmVzZXQgc2lnbmFsIHdpdGhpbiB0aGUKK3Byb3ZpZGVyLiBUaGUgbGVuZ3RoIChudW1iZXIgb2YgY2VsbHMpIGFuZCBzZW1hbnRpY3Mgb2YgdGhlIHJlc2V0IHNwZWNpZmllcgorYXJlIGRpY3RhdGVkIGJ5IHRoZSBiaW5kaW5nIG9mIHRoZSByZXNldCBwcm92aWRlciwgYWx0aG91Z2ggY29tbW9uIHNjaGVtZXMKK2FyZSBkZXNjcmliZWQgYmVsb3cuCisKK0Egd29yZCBvbiB3aGVyZSB0byBwbGFjZSByZXNldCBzaWduYWwgY29uc3VtZXJzIGluIGRldmljZSB0cmVlOiBJdCBpcyBwb3NzaWJsZQoraW4gaGFyZHdhcmUgZm9yIGEgcmVzZXQgc2lnbmFsIHRvIGFmZmVjdCBtdWx0aXBsZSBsb2dpY2FsbHkgc2VwYXJhdGUgSFcgYmxvY2tzCithdCBvbmNlLiBJbiB0aGlzIGNhc2UsIGl0IHdvdWxkIGJlIHVud2lzZSB0byByZXByZXNlbnQgdGhpcyByZXNldCBzaWduYWwgaW4KK3RoZSBEVCBub2RlIG9mIGVhY2ggYWZmZWN0ZWQgSFcgYmxvY2ssIHNpbmNlIGlmIGFjdGl2YXRlZCwgYW4gdW5yZWxhdGVkIGJsb2NrCittYXkgYmUgcmVzZXQuIEluc3RlYWQsIHJlc2V0IHNpZ25hbHMgc2hvdWxkIGJlIHJlcHJlc2VudGVkIGluIHRoZSBEVCBub2RlCit3aGVyZSBpdCBtYWtlcyBtb3N0IHNlbnNlIHRvIGNvbnRyb2wgaXQ7IHRoaXMgbWF5IGJlIGEgYnVzIG5vZGUgaWYgYWxsCitjaGlsZHJlbiBvZiB0aGUgYnVzIGFyZSBhZmZlY3RlZCBieSB0aGUgcmVzZXQgc2lnbmFsLCBvciBhbiBpbmRpdmlkdWFsIEhXCitibG9jayBub2RlIGZvciBkZWRpY2F0ZWQgcmVzZXQgc2lnbmFscy4gVGhlIGludGVudCBvZiB0aGlzIGJpbmRpbmcgaXMgdG8gZ2l2ZQorYXBwcm9wcmlhdGUgc29mdHdhcmUgYWNjZXNzIHRvIHRoZSByZXNldCBzaWduYWxzIGluIG9yZGVyIHRvIG1hbmFnZSB0aGUgSFcsCityYXRoZXIgdGhhbiB0byBzbGF2aXNobHkgZW51bWVyYXRlIHRoZSByZXNldCBzaWduYWwgdGhhdCBhZmZlY3RzIGVhY2ggSFcKK2Jsb2NrLgorCis9IFJlc2V0IHByb3ZpZGVycyA9CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisjcmVzZXQtY2VsbHM6CU51bWJlciBvZiBjZWxscyBpbiBhIHJlc2V0IHNwZWNpZmllcjsgVHlwaWNhbGx5IDAgZm9yIG5vZGVzCisJCXdpdGggYSBzaW5nbGUgcmVzZXQgb3V0cHV0IGFuZCAxIGZvciBub2RlcyB3aXRoIG11bHRpcGxlCisJCXJlc2V0IG91dHB1dHMuCisKK0ZvciBleGFtcGxlOgorCisJcnN0OiByZXNldC1jb250cm9sbGVyIHsKKwkJI3Jlc2V0LWNlbGxzID0gPDE+OworCX07CisKKz0gUmVzZXQgY29uc3VtZXJzID0KKworUmVxdWlyZWQgcHJvcGVydGllczoKK3Jlc2V0czoJCUxpc3Qgb2YgcGhhbmRsZSBhbmQgcmVzZXQgc3BlY2lmaWVyIHBhaXJzLCBvbmUgcGFpcgorCQlmb3IgZWFjaCByZXNldCBzaWduYWwgdGhhdCBhZmZlY3RzIHRoZSBkZXZpY2UsIG9yIHRoYXQgdGhlCisJCWRldmljZSBtYW5hZ2VzLiBOb3RlOiBpZiB0aGUgcmVzZXQgcHJvdmlkZXIgc3BlY2lmaWVzICcwJyBmb3IKKwkJI3Jlc2V0LWNlbGxzLCB0aGVuIG9ubHkgdGhlIHBoYW5kbGUgcG9ydGlvbiBvZiB0aGUgcGFpciB3aWxsCisJCWFwcGVhci4KKworT3B0aW9uYWwgcHJvcGVydGllczoKK3Jlc2V0LW5hbWVzOglMaXN0IG9mIHJlc2V0IHNpZ25hbCBuYW1lIHN0cmluZ3Mgc29ydGVkIGluIHRoZSBzYW1lIG9yZGVyIGFzCisJCXRoZSByZXNldHMgcHJvcGVydHkuIENvbnN1bWVycyBkcml2ZXJzIHdpbGwgdXNlIHJlc2V0LW5hbWVzIHRvCisJCW1hdGNoIHJlc2V0IHNpZ25hbCBuYW1lcyB3aXRoIHJlc2V0IHNwZWNpZmllcnMuCisKK0ZvciBleGFtcGxlOgorCisJZGV2aWNlIHsKKwkJcmVzZXRzID0gPCZyc3QgMjA+OworCQlyZXNldC1uYW1lcyA9ICJyZXNldCI7CisJfTsKKworVGhpcyByZXByZXNlbnRzIGEgZGV2aWNlIHdpdGggYSBzaW5nbGUgcmVzZXQgc2lnbmFsIG5hbWVkICJyZXNldCIuCisKKwlidXMgeworCQlyZXNldHMgPSA8JnJzdCAxMD4gPCZyc3QgMTE+IDwmcnN0IDEyPiA8JnJzdCAxMT47CisJCXJlc2V0LW5hbWVzID0gImkyczEiLCAiaTJzMiIsICJkbWEiLCAibWl4ZXIiOworCX07CisKK1RoaXMgcmVwcmVzZW50cyBhIGJ1cyB0aGF0IGNvbnRyb2xzIHRoZSByZXNldCBzaWduYWwgb2YgZWFjaCBvZiBmb3VyIHN1Yi0KK29yZGluYXRlIGRldmljZXMuIENvbnNpZGVyIGZvciBleGFtcGxlIGEgYnVzIHRoYXQgZmFpbHMgdG8gb3BlcmF0ZSB1bmxlc3Mgbm8KK2NoaWxkIGRldmljZSBoYXMgcmVzZXQgYXNzZXJ0ZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzZXQvc2lyZixyc3RjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9zaXJmLHJzdGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MDVkZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzZXQvc2lyZixyc3RjLnR4dApAQCAtMCwwICsxLDQyIEBACitDU1IgU2lSRlNvQyBSZXNldCBDb250cm9sbGVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQbGVhc2UgYWxzbyByZWZlciB0byByZXNldC50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGNvbW1vbiByZXNldAorY29udHJvbGxlciBiaW5kaW5nIHVzYWdlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgInNpcmYscHJpbWEyLXJzdGMiIG9yICJzaXJmLG1hcmNvLXJzdGMiCistIHJlZzogc2hvdWxkIGJlIHJlZ2lzdGVyIGJhc2UgYW5kIGxlbmd0aCBhcyBkb2N1bWVudGVkIGluIHRoZQorICBkYXRhc2hlZXQKKy0gI3Jlc2V0LWNlbGxzOiAxLCBzZWUgYmVsb3cKKworZXhhbXBsZToKKworcnN0YzogcmVzZXQtY29udHJvbGxlckA4ODAxMDAwMCB7CisJY29tcGF0aWJsZSA9ICJzaXJmLHByaW1hMi1yc3RjIjsKKwlyZWcgPSA8MHg4ODAxMDAwMCAweDEwMDA+OworCSNyZXNldC1jZWxscyA9IDwxPjsKK307CisKK1NwZWNpZnlpbmcgcmVzZXQgbGluZXMgY29ubmVjdGVkIHRvIElQIG1vZHVsZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHJlc2V0IGNvbnRyb2xsZXIocnN0YykgbWFuYWdlcyB2YXJpb3VzIHJlc2V0IHNvdXJjZXMuIFRoaXMgbW9kdWxlIHByb3ZpZGVzCityZXNldCBzaWduYWxzIGZvciBtb3N0IGJsb2NrcyBpbiBzeXN0ZW0uIFRob3NlIGRldmljZSBub2RlcyBzaG91bGQgc3BlY2lmeSB0aGUKK3Jlc2V0IGxpbmUgb24gdGhlIHJzdGMgaW4gdGhlaXIgcmVzZXRzIHByb3BlcnR5LCBjb250YWluaW5nIGEgcGhhbmRsZSB0byB0aGUKK3JzdGMgZGV2aWNlIG5vZGUgYW5kIGEgUkVTRVRfSU5ERVggc3BlY2lmeWluZyB3aGljaCBtb2R1bGUgdG8gcmVzZXQsIGFzIGRlc2NyaWJlZAoraW4gcmVzZXQudHh0LgorCitGb3IgU2lSRlNvQywgUkVTRVRfSU5ERVggaXMganVzdCByZXNldF9iaXQgZGVmaW5lZCBpbiBTV19SU1QwIGFuZCBTV19SU1QxIHJlZ2lzdGVycy4KK0ZvciBtb2R1bGVzIHdob3NlIHJlc3RfYml0IGlzIGluIFNXX1JTVDAsIGl0cyBSRVNFVF9JTkRFWCBpcyAwfjMxLiBGb3IgbW9kdWxlcyB3aG9zZQorcmVzdF9iaXQgaXMgaW4gU1dfUlNUMSwgaXRzIFJFU0VUX0lOREVYIGlzIDMyfjYzLgorCitleGFtcGxlOgorCit2cHBAOTAwMjAwMDAgeworCWNvbXBhdGlibGUgPSAic2lyZixwcmltYTItdnBwIjsKKwlyZWcgPSA8MHg5MDAyMDAwMCAweDEwMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDMxPjsKKwljbG9ja3MgPSA8JmNsa3MgMzU+OworCXJlc2V0cyA9IDwmcnN0YyA2PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzZXQvc29jZnBnYS1yZXNldC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzZXQvc29jZnBnYS1yZXNldC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThjOWY1NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9zb2NmcGdhLXJlc2V0LnR4dApAQCAtMCwwICsxLDE1IEBACitBbHRlcmEgU09DRlBHQSBSZXNldCBNYW5hZ2VyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAiYWx0cixyc3QtbWdyIgorLSByZWcgOiBTaG91bGQgY29udGFpbiAxIHJlZ2lzdGVyIHJhbmdlcyhhZGRyZXNzIGFuZCBsZW5ndGgpCistIGFsdHIsbW9kcnN0LW9mZnNldCA6IFNob3VsZCBjb250YWluIHRoZSBvZmZzZXQgb2YgdGhlIGZpcnN0IG1vZHJzdCByZWdpc3Rlci4KKy0gI3Jlc2V0LWNlbGxzOiAxCisKK0V4YW1wbGU6CisJIHJzdG1nckBmZmQwNTAwMCB7CisJCSNyZXNldC1jZWxscyA9IDwxPjsKKwkJY29tcGF0aWJsZSA9ICJhbHRyLHJzdC1tZ3IiOworCQlyZWcgPSA8MHhmZmQwNTAwMCAweDEwMDA+OworCQlhbHRyLG1vZHJzdC1vZmZzZXQgPSA8MHgxMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9zdCxzdGktcGljb3BoeXJlc2V0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9zdCxzdGktcGljb3BoeXJlc2V0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2EyNzc2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Jlc2V0L3N0LHN0aS1waWNvcGh5cmVzZXQudHh0CkBAIC0wLDAgKzEsNDIgQEAKK1NUTWljcm9lbGVjdHJvbmljcyBTVGkgZmFtaWx5IFN5c2NvbmZpZyBQaWNvcGh5IFNvZnRSZXNldCBDb250cm9sbGVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGJpbmRpbmcgZGVzY3JpYmVzIGEgcmVzZXQgY29udHJvbGxlciBkZXZpY2UgdGhhdCBpcyB1c2VkIHRvIGVuYWJsZSBhbmQKK2Rpc2FibGUgb24tY2hpcCBQaWNvUEhZIFVTQjIgcGh5KHMpIHVzaW5nICJzb2Z0cmVzZXQiIGNvbnRyb2wgYml0cyBmb3VuZCBpbgordGhlIFNUaSBmYW1pbHkgU29DIHN5c3RlbSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycy4KKworVGhlIGFjdHVhbCBhY3Rpb24gdGFrZW4gd2hlbiBzb2Z0cmVzZXQgaXMgYXNzZXJ0ZWQgaXMgaGFyZHdhcmUgZGVwZW5kZW50LgorSG93ZXZlciwgd2hlbiBhc3NlcnRlZCBpdCBtYXkgbm90IGJlIHBvc3NpYmxlIHRvIGFjY2VzcyB0aGUgaGFyZHdhcmUncworcmVnaXN0ZXJzIGFuZCBhZnRlciBhbiBhc3NlcnQvZGVhc3NlcnQgc2VxdWVuY2UgdGhlIGhhcmR3YXJlJ3MgcHJldmlvdXMgc3RhdGUKK21heSBubyBsb25nZXIgYmUgdmFsaWQuCisKK1BsZWFzZSByZWZlciB0byBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzZXQvcmVzZXQudHh0Citmb3IgY29tbW9uIHJlc2V0IGNvbnRyb2xsZXIgYmluZGluZyB1c2FnZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJzdCxzdGloNDA3LXBpY29waHlyZXNldCIKKy0gI3Jlc2V0LWNlbGxzOiAxLCBzZWUgYmVsb3cKKworRXhhbXBsZToKKworCXBpY29waHlyZXNldDogcGljb3BoeXJlc2V0LWNvbnRyb2xsZXIgeworCQljb21wYXRpYmxlID0gInN0LHN0aWg0MDctcGljb3BoeXJlc2V0IjsKKwkJI3Jlc2V0LWNlbGxzID0gPDE+OworCX07CisKK1NwZWNpZnlpbmcgcGljb3BoeXJlc2V0IGNvbnRyb2wgb2YgZGV2aWNlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0RldmljZSBub2RlcyBzaG91bGQgc3BlY2lmeSB0aGUgcmVzZXQgY2hhbm5lbCByZXF1aXJlZCBpbiB0aGVpciAicmVzZXRzIgorcHJvcGVydHksIGNvbnRhaW5pbmcgYSBwaGFuZGxlIHRvIHRoZSBwaWNvcGh5cmVzZXQgZGV2aWNlIG5vZGUgYW5kIGFuCitpbmRleCBzcGVjaWZ5aW5nIHdoaWNoIGNoYW5uZWwgdG8gdXNlLCBhcyBkZXNjcmliZWQgaW4KK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9yZXNldC50eHQuCisKK0V4YW1wbGU6CisKKwl1c2IyX3BpY29waHkwOiB1c2JwaWNvcGh5QDAgeworCQlyZXNldHMgPSA8JnBpY29waHlyZXNldCBTVElINDA3X1BJQ09QSFkwX1JFU0VUPjsKKwl9OworCitNYWNybyBkZWZpbml0aW9ucyBmb3IgdGhlIHN1cHBvcnRlZCByZXNldCBjaGFubmVscyBjYW4gYmUgZm91bmQgaW46CitpbmNsdWRlL2R0LWJpbmRpbmdzL3Jlc2V0L3N0aWg0MDctcmVzZXRzLmgKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9zdCxzdGktcG93ZXJkb3duLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9zdCxzdGktcG93ZXJkb3duLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2ZkMjFkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Jlc2V0L3N0LHN0aS1wb3dlcmRvd24udHh0CkBAIC0wLDAgKzEsNDcgQEAKK1NUTWljcm9lbGVjdHJvbmljcyBTVGkgZmFtaWx5IFN5c2NvbmZpZyBQZXJpcGhlcmFsIFBvd2VyZG93biBSZXNldCBDb250cm9sbGVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGJpbmRpbmcgZGVzY3JpYmVzIGEgcmVzZXQgY29udHJvbGxlciBkZXZpY2UgdGhhdCBpcyB1c2VkIHRvIGVuYWJsZSBhbmQKK2Rpc2FibGUgb24tY2hpcCBwZXJpcGhlcmFsIGNvbnRyb2xsZXJzIHN1Y2ggYXMgVVNCIGFuZCBTQVRBLCB1c2luZworInBvd2VyZG93biIgY29udHJvbCBiaXRzIGZvdW5kIGluIHRoZSBTVGkgZmFtaWx5IFNvQyBzeXN0ZW0gY29uZmlndXJhdGlvbgorcmVnaXN0ZXJzLiBUaGVzZSBoYXZlIGJlZW4gZ3JvdXBlZCB0b2dldGhlciBpbnRvIGEgc2luZ2xlIHJlc2V0IGNvbnRyb2xsZXIKK2RldmljZSBmb3IgY29udmVuaWVuY2UuCisKK1RoZSBhY3R1YWwgYWN0aW9uIHRha2VuIHdoZW4gcG93ZXJkb3duIGlzIGFzc2VydGVkIGlzIGhhcmR3YXJlIGRlcGVuZGVudC4KK0hvd2V2ZXIsIHdoZW4gYXNzZXJ0ZWQgaXQgbWF5IG5vdCBiZSBwb3NzaWJsZSB0byBhY2Nlc3MgdGhlIGhhcmR3YXJlJ3MKK3JlZ2lzdGVycyBhbmQgYWZ0ZXIgYW4gYXNzZXJ0L2RlYXNzZXJ0IHNlcXVlbmNlIHRoZSBoYXJkd2FyZSdzIHByZXZpb3VzIHN0YXRlCittYXkgbm8gbG9uZ2VyIGJlIHZhbGlkLgorCitQbGVhc2UgcmVmZXIgdG8gcmVzZXQudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBjb21tb24gcmVzZXQKK2NvbnRyb2xsZXIgYmluZGluZyB1c2FnZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJzdCw8Y2hpcD4tcG93ZXJkb3duIgorCWV4OiAic3Qsc3RpaDQxNS1wb3dlcmRvd24iLCAic3Qsc3RpaDQxNi1wb3dlcmRvd24iCistICNyZXNldC1jZWxsczogMSwgc2VlIGJlbG93CisKK2V4YW1wbGU6CisKKwlwb3dlcmRvd246IHBvd2VyZG93bi1jb250cm9sbGVyIHsKKwkJI3Jlc2V0LWNlbGxzID0gPDE+OworCQljb21wYXRpYmxlID0gInN0LHN0aWg0MTUtcG93ZXJkb3duIjsKKwl9OworCisKK1NwZWNpZnlpbmcgcG93ZXJkb3duIGNvbnRyb2wgb2YgZGV2aWNlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0RldmljZSBub2RlcyBzaG91bGQgc3BlY2lmeSB0aGUgcmVzZXQgY2hhbm5lbCByZXF1aXJlZCBpbiB0aGVpciAicmVzZXRzIgorcHJvcGVydHksIGNvbnRhaW5pbmcgYSBwaGFuZGxlIHRvIHRoZSBwb3dlcmRvd24gZGV2aWNlIG5vZGUgYW5kIGFuCitpbmRleCBzcGVjaWZ5aW5nIHdoaWNoIGNoYW5uZWwgdG8gdXNlLCBhcyBkZXNjcmliZWQgaW4gcmVzZXQudHh0CisKK2V4YW1wbGU6CisKKwl1c2IxOiB1c2JAZmUyMDAwMDAgeworCQlyZXNldHMJPSA8JnBvd2VyZG93biBTVElINDFYX1VTQjFfUE9XRVJET1dOPjsKKwl9OworCitNYWNybyBkZWZpbml0aW9ucyBmb3IgdGhlIHN1cHBvcnRlZCByZXNldCBjaGFubmVscyBjYW4gYmUgZm91bmQgaW46CisKK2luY2x1ZGUvZHQtYmluZGluZ3MvcmVzZXQvc3RpaDQxNS1yZXNldHMuaAoraW5jbHVkZS9kdC1iaW5kaW5ncy9yZXNldC9zdGloNDE2LXJlc2V0cy5oCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzZXQvc3Qsc3RpLXNvZnRyZXNldC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzZXQvc3Qsc3RpLXNvZnRyZXNldC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkxYTJmZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9zdCxzdGktc29mdHJlc2V0LnR4dApAQCAtMCwwICsxLDQ2IEBACitTVE1pY3JvZWxlY3Ryb25pY3MgU1RpIGZhbWlseSBTeXNjb25maWcgUGVyaXBoZXJhbCBTb2Z0UmVzZXQgQ29udHJvbGxlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBiaW5kaW5nIGRlc2NyaWJlcyBhIHJlc2V0IGNvbnRyb2xsZXIgZGV2aWNlIHRoYXQgaXMgdXNlZCB0byBlbmFibGUgYW5kCitkaXNhYmxlIG9uLWNoaXAgcGVyaXBoZXJhbCBjb250cm9sbGVycyBzdWNoIGFzIFVTQiBhbmQgU0FUQSwgdXNpbmcKKyJzb2Z0cmVzZXQiIGNvbnRyb2wgYml0cyBmb3VuZCBpbiB0aGUgU1RpIGZhbWlseSBTb0Mgc3lzdGVtIGNvbmZpZ3VyYXRpb24KK3JlZ2lzdGVycy4KKworVGhlIGFjdHVhbCBhY3Rpb24gdGFrZW4gd2hlbiBzb2Z0cmVzZXQgaXMgYXNzZXJ0ZWQgaXMgaGFyZHdhcmUgZGVwZW5kZW50LgorSG93ZXZlciwgd2hlbiBhc3NlcnRlZCBpdCBtYXkgbm90IGJlIHBvc3NpYmxlIHRvIGFjY2VzcyB0aGUgaGFyZHdhcmUncworcmVnaXN0ZXJzIGFuZCBhZnRlciBhbiBhc3NlcnQvZGVhc3NlcnQgc2VxdWVuY2UgdGhlIGhhcmR3YXJlJ3MgcHJldmlvdXMgc3RhdGUKK21heSBubyBsb25nZXIgYmUgdmFsaWQuCisKK1BsZWFzZSByZWZlciB0byByZXNldC50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGNvbW1vbiByZXNldAorY29udHJvbGxlciBiaW5kaW5nIHVzYWdlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgInN0LDxjaGlwPi1zb2Z0cmVzZXQiIGV4YW1wbGU6CisJInN0LHN0aWg0MTUtc29mdHJlc2V0IiBvciAic3Qsc3RpaDQxNi1zb2Z0cmVzZXQiOworLSAjcmVzZXQtY2VsbHM6IDEsIHNlZSBiZWxvdworCitleGFtcGxlOgorCisJc29mdHJlc2V0OiBzb2Z0cmVzZXQtY29udHJvbGxlciB7CisJCSNyZXNldC1jZWxscyA9IDwxPjsKKwkJY29tcGF0aWJsZSA9ICJzdCxzdGloNDE1LXNvZnRyZXNldCI7CisJfTsKKworCitTcGVjaWZ5aW5nIHNvZnRyZXNldCBjb250cm9sIG9mIGRldmljZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitEZXZpY2Ugbm9kZXMgc2hvdWxkIHNwZWNpZnkgdGhlIHJlc2V0IGNoYW5uZWwgcmVxdWlyZWQgaW4gdGhlaXIgInJlc2V0cyIKK3Byb3BlcnR5LCBjb250YWluaW5nIGEgcGhhbmRsZSB0byB0aGUgc29mdHJlc2V0IGRldmljZSBub2RlIGFuZCBhbgoraW5kZXggc3BlY2lmeWluZyB3aGljaCBjaGFubmVsIHRvIHVzZSwgYXMgZGVzY3JpYmVkIGluIHJlc2V0LnR4dAorCitleGFtcGxlOgorCisJZXRoZXJuZXQweworCQlyZXNldHMJCQk9IDwmc29mdHJlc2V0IFNUSUg0MTVfRVRIMF9TT0ZUUkVTRVQ+OworCX07CisKK01hY3JvIGRlZmluaXRpb25zIGZvciB0aGUgc3VwcG9ydGVkIHJlc2V0IGNoYW5uZWxzIGNhbiBiZSBmb3VuZCBpbjoKKworaW5jbHVkZS9kdC1iaW5kaW5ncy9yZXNldC9zdGloNDE1LXJlc2V0cy5oCitpbmNsdWRlL2R0LWJpbmRpbmdzL3Jlc2V0L3N0aWg0MTYtcmVzZXRzLmgKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC96eW5xLXJlc2V0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC96eW5xLXJlc2V0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODYwMTIwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Jlc2V0L3p5bnEtcmVzZXQudHh0CkBAIC0wLDAgKzEsNjggQEAKK1hpbGlueCBaeW5xIFJlc2V0IE1hbmFnZXIKKworVGhlIFp5bnEgQVAtU29DIGhhcyBzZXZlcmFsIGRpZmZlcmVudCByZXNldHMuCisKK1NlZSBDaGFwdGVyIDI2IG9mIHRoZSBaeW5xIFRSTSAoVUc1ODUpIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFp5bnEgcmVzZXRzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAieGxueCx6eW5xLXJlc2V0IgorLSByZWc6IFNMQ1Igb2Zmc2V0IGFuZCBzaXplIHRha2VuIHZpYSBzeXNjb24gPDB4MjAwIDB4NDg+CistIHN5c2NvbjogPCZzbGNyPgorICBUaGlzIHNob3VsZCBiZSBhIHBoYW5kbGUgdG8gdGhlIFp5bnEncyBTTENSIHJlZ2lzdGVycy4KKy0gI3Jlc2V0LWNlbGxzOiBNdXN0IGJlIDEKKworVGhlIFp5bnEgUmVzZXQgTWFuYWdlciBuZWVkcyB0byBiZSBhIGNoaWxkbm9kZSBvZiB0aGUgU0xDUi4KKworRXhhbXBsZToKKwlyc3RjOiByc3RjQDIwMCB7CisJCWNvbXBhdGlibGUgPSAieGxueCx6eW5xLXJlc2V0IjsKKwkJcmVnID0gPDB4MjAwIDB4NDg+OworCQkjcmVzZXQtY2VsbHMgPSA8MT47CisJCXN5c2NvbiA9IDwmc2xjcj47CisJfTsKKworUmVzZXQgb3V0cHV0czoKKyAwICA6IHNvZnQgcmVzZXQKKyAzMiA6IGRkciByZXNldAorIDY0IDogdG9wc3cgcmVzZXQKKyA5NiA6IGRtYWMgcmVzZXQKKyAxMjg6IHVzYjAgcmVzZXQKKyAxMjk6IHVzYjEgcmVzZXQKKyAxNjA6IGdlbTAgcmVzZXQKKyAxNjE6IGdlbTEgcmVzZXQKKyAxNjQ6IGdlbTAgcnggcmVzZXQKKyAxNjU6IGdlbTEgcnggcmVzZXQKKyAxNjY6IGdlbTAgcmVmIHJlc2V0CisgMTY3OiBnZW0xIHJlZiByZXNldAorIDE5Mjogc2RpbzAgcmVzZXQKKyAxOTM6IHNkaW8xIHJlc2V0CisgMTk2OiBzZGlvMCByZWYgcmVzZXQKKyAxOTc6IHNkaW8xIHJlZiByZXNldAorIDIyNDogc3BpMCByZXNldAorIDIyNTogc3BpMSByZXNldAorIDIyNjogc3BpMCByZWYgcmVzZXQKKyAyMjc6IHNwaTEgcmVmIHJlc2V0CisgMjU2OiBjYW4wIHJlc2V0CisgMjU3OiBjYW4xIHJlc2V0CisgMjU4OiBjYW4wIHJlZiByZXNldAorIDI1OTogY2FuMSByZWYgcmVzZXQKKyAyODg6IGkyYzAgcmVzZXQKKyAyODk6IGkyYzEgcmVzZXQKKyAzMjA6IHVhcnQwIHJlc2V0CisgMzIxOiB1YXJ0MSByZXNldAorIDMyMjogdWFydDAgcmVmIHJlc2V0CisgMzIzOiB1YXJ0MSByZWYgcmVzZXQKKyAzNTI6IGdwaW8gcmVzZXQKKyAzODQ6IGxxc3BpIHJlc2V0CisgMzg1OiBxc3BpIHJlZiByZXNldAorIDQxNjogc21jIHJlc2V0CisgNDE3OiBzbWMgcmVmIHJlc2V0CisgNDQ4OiBvY20gcmVzZXQKKyA1MTI6IGZwZ2EwIG91dCByZXNldAorIDUxMzogZnBnYTEgb3V0IHJlc2V0CisgNTE0OiBmcGdhMiBvdXQgcmVzZXQKKyA1MTU6IGZwZ2EzIG91dCByZXNldAorIDU0NDogYTkgcmVzZXQgMAorIDU0NTogYTkgcmVzZXQgMQorIDU1MjogcGVyaSByZXNldAorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzb3VyY2UtbmFtZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Jlc291cmNlLW5hbWVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjgwZmVmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Jlc291cmNlLW5hbWVzLnR4dApAQCAtMCwwICsxLDU0IEBACitTb21lIHByb3BlcnRpZXMgY29udGFpbiBhbiBvcmRlcmVkIGxpc3Qgb2YgMSBvciBtb3JlIGRhdHVtIHdoaWNoIGFyZQorbm9ybWFsbHkgYWNjZXNzZWQgYnkgaW5kZXguICBIb3dldmVyLCBzb21lIGRldmljZXMgd2lsbCBoYXZlIG11bHRpcGxlCit2YWx1ZXMgd2hpY2ggYXJlIG1vcmUgbmF0dXJhbGx5IGFjY2Vzc2VkIGJ5IG5hbWUuICBEZXZpY2Ugbm9kZXMgY2FuCitpbmNsdWRlIGEgc3VwcGxlbWVudGFsIHByb3BlcnR5IGZvciBhc3NpZ25pbmcgbmFtZXMgdG8gZWFjaCBvZiB0aGUgbGlzdAoraXRlbXMuICBUaGUgbmFtZXMgcHJvcGVydHkgY29uc2lzdHMgb2YgYSBsaXN0IG9mIHN0cmluZ3MgaW4gdGhlIHNhbWUKK29yZGVyIGFzIHRoZSBkYXRhIGluIHRoZSByZXNvdXJjZSBwcm9wZXJ0eS4KKworVGhlIGZvbGxvd2luZyBzdXBwbGVtZW50YWwgbmFtZXMgcHJvcGVydGllcyBhcmUgZGVmaW5lZC4KKworUmVzb3VyY2UgUHJvcGVydHkJU3VwcGxlbWVudGFsIE5hbWVzIFByb3BlcnR5CistLS0tLS0tLS0tLS0tLS0tLQktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3JlZwkJCXJlZy1uYW1lcworY2xvY2tzCQkJY2xvY2stbmFtZXMKK2ludGVycnVwdHMJCWludGVycnVwdC1uYW1lcworCitVc2FnZToKKworVGhlIC1uYW1lcyBwcm9wZXJ0eSBtdXN0IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgbm9ybWFsIHJlc291cmNlCitwcm9wZXJ0eS4gSWYgbm90IGl0IHdpbGwgYmUgaWdub3JlZC4KKworRXhhbXBsZXM6CisKK2w0LWFiZSB7CisJY29tcGF0aWJsZSA9ICJzaW1wbGUtYnVzIjsKKwkjYWRkcmVzcy1jZWxscyA9IDwyPjsKKwkjc2l6ZS1jZWxscyA9IDwxPjsKKwlyYW5nZXMgPSA8MCAwIDB4NDgwMDAwMDAgMHgwMDAwMTAwMD4sIC8qIE1QVSBwYXRoICovCisJCSA8MSAwIDB4NDkwMDAwMDAgMHgwMDAwMTAwMD47IC8qIEwzIHBhdGggKi8KKwltY2FzcCB7CisJCWNvbXBhdGlibGUgPSAidGksbWNhc3AiOworCQlyZWcgPSA8MCAweDEwIDB4MTA+LCA8MCAweDIwIDB4MTA+LAorCQkgICAgICA8MSAweDEwIDB4MTA+LCA8MSAweDIwIDB4MTA+OworCQlyZWctbmFtZXMgPSAibXB1IiwgImRhdCIsCisJCQkgICAgImRtYSIsICJkbWFfZGF0IjsKKwkJaW50ZXJydXB0cyA9IDwxMT4sIDwxMj47CisJCWludGVycnVwdC1uYW1lcyA9ICJyeCIsICJ0eCI7CisJfTsKKworCXRpbWVyIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSx0aW1lciI7CisJCXJlZyA9IDwwIDB4NDAgMHgxMD4sIDwxIDB4NDAgMHgxMD47CisJCXJlZy1uYW1lcyA9ICJtcHUiLCAiZG1hIjsKKwl9OworfTsKKworCit1c2IgeworCWNvbXBhdGlibGUgPSAidGksdXNiLWhvc3QiOworCXJlZyA9IDwweDRhMDY0MDAwIDB4ODAwPiwgPDB4NGEwNjQ4MDAgMHgyMDA+LAorCSAgICAgIDwweDRhMDY0YzAwIDB4MjAwPjsKKwlyZWctbmFtZXMgPSAiY29uZmlnIiwgIm9oY2kiLCAiZWhjaSI7CisJaW50ZXJydXB0cyA9IDwxND4sIDwxNT47CisJaW50ZXJydXB0LW5hbWVzID0gIm9oY2kiLCAiZWhjaSI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JuZy9hcG0scm5nLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ybmcvYXBtLHJuZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRkZTRiMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ybmcvYXBtLHJuZy50eHQKQEAgLTAsMCArMSwxNyBAQAorQVBNIFgtR2VuZSBTb0MgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSAgOiBzaG91bGQgYmUgImFwbSx4Z2VuZS1ybmciCistIHJlZyAgICAgICAgIDogc3BlY2lmaWVzIGJhc2UgcGh5c2ljYWwgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgcmVnaXN0ZXJzIG1hcAorLSBjbG9ja3MgICAgICA6IHBoYW5kbGUgdG8gY2xvY2stY29udHJvbGxlciBwbHVzIGNsb2NrLXNwZWNpZmllciBwYWlyCistIGludGVycnVwdHMgIDogc3BlY2lmeSB0aGUgZmF1bHQgaW50ZXJydXB0IGZvciB0aGUgUk5HIGRldmljZQorCitFeGFtcGxlOgorCisJcm5nOiBybmdAMTA1MjAwMDAgeworCQljb21wYXRpYmxlID0gImFwbSx4Z2VuZS1ybmciOworCQlyZWcgPSA8MHgwIDB4MTA1MjAwMDAgMHgwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9ICAgPDB4MCAweDQxIDB4ND47CisJCWNsb2NrcyA9IDwmcm5ncGthY2xrIDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvcm5nL2F0bWVsLXRybmcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JuZy9hdG1lbC10cm5nLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWM1YWFhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JuZy9hdG1lbC10cm5nLnR4dApAQCAtMCwwICsxLDE2IEBACitBdG1lbCBUUk5HIChUcnVlIFJhbmRvbSBOdW1iZXIgR2VuZXJhdG9yKSBibG9jaworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJhdG1lbCxhdDkxc2FtOWc0NS10cm5nIgorLSByZWcgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IG9mIHRoaXMgYmxvY2sKKy0gaW50ZXJydXB0cyA6IHRoZSBpbnRlcnJ1cHQgbnVtYmVyIGZvciB0aGUgVFJORyBibG9jaworLSBjbG9ja3M6IHNob3VsZCBjb250YWluIHRoZSBUUk5HIGNsayBzb3VyY2UKKworRXhhbXBsZToKKwordHJuZ0BmZmZjYzAwMCB7CisJY29tcGF0aWJsZSA9ICJhdG1lbCxhdDkxc2FtOWc0NS10cm5nIjsKKwlyZWcgPSA8MHhmZmZjYzAwMCAweDQwMDA+OworCWludGVycnVwdHMgPSA8NiBJUlFfVFlQRV9MRVZFTF9ISUdIIDA+OworCWNsb2NrcyA9IDwmdHJuZ19jbGs+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ybmcvYnJjbSxiY20yODM1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ybmcvYnJjbSxiY20yODM1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2NjZGFhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JuZy9icmNtLGJjbTI4MzUudHh0CkBAIC0wLDAgKzEsMTMgQEAKK0JDTTI4MzUgUmFuZG9tIG51bWJlciBnZW5lcmF0b3IKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJicmNtLGJjbTI4MzUtcm5nIgorLSByZWcgOiBTcGVjaWZpZXMgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSByZWdpc3RlcnMuCisKK0V4YW1wbGU6CisKK3JuZyB7CisgICAgICAgIGNvbXBhdGlibGUgPSAiYnJjbSxiY20yODM1LXJuZyI7CisgICAgICAgIHJlZyA9IDwweDdlMTA0MDAwIDB4MTA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ybmcvYnJjbSxpcHJvYy1ybmcyMDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JuZy9icmNtLGlwcm9jLXJuZzIwMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI1YTQ1NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ybmcvYnJjbSxpcHJvYy1ybmcyMDAudHh0CkBAIC0wLDAgKzEsMTIgQEAKK0hXUk5HIHN1cHBvcnQgZm9yIHRoZSBpcHJvYy1ybmcyMDAgZHJpdmVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAiYnJjbSxpcHJvYy1ybmcyMDAiCistIHJlZyA6IGJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiBjb250cm9sIHJlZ2lzdGVyIGJsb2NrCisKK0V4YW1wbGU6CisKK3JuZyB7CisgICAgICAgIGNvbXBhdGlibGUgPSAiYnJjbSxpcHJvYy1ybmcyMDAiOworICAgICAgICByZWcgPSA8MHgxODAzMjAwMCAweDI4PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvcm5nL29tYXBfcm5nLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ybmcvb21hcF9ybmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhNjJhY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvcm5nL29tYXBfcm5nLnR4dApAQCAtMCwwICsxLDIyIEBACitPTUFQIFNvQyBIV1JORyBNb2R1bGUKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogU2hvdWxkIGNvbnRhaW4gZW50cmllcyBmb3IgdGhpcyBhbmQgYmFja3dhcmQgY29tcGF0aWJsZQorICBSTkcgdmVyc2lvbnM6CisgIC0gInRpLG9tYXAyLXJuZyIgZm9yIE9NQVAyLgorICAtICJ0aSxvbWFwNC1ybmciIGZvciBPTUFQNCwgT01BUDUgYW5kIEFNMzNYWC4KKyAgTm90ZSB0aGF0IHRoZXNlIHR3byB2ZXJzaW9ucyBhcmUgaW5jb21wYXRpYmxlLgorLSB0aSxod21vZHM6IE5hbWUgb2YgdGhlIGh3bW9kIGFzc29jaWF0ZWQgd2l0aCB0aGUgUk5HIG1vZHVsZQorLSByZWcgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgbW9kdWxlCistIGludGVycnVwdHMgOiB0aGUgaW50ZXJydXB0IG51bWJlciBmb3IgdGhlIFJORyBtb2R1bGUuCisJCU9ubHkgdXNlZCBmb3IgInRpLG9tYXA0LXJuZyIuCisKK0V4YW1wbGU6CisvKiBBTTMzNXggKi8KK3JuZzogcm5nQDQ4MzEwMDAwIHsKKwljb21wYXRpYmxlID0gInRpLG9tYXA0LXJuZyI7CisJdGksaHdtb2RzID0gInJuZyI7CisJcmVnID0gPDB4NDgzMTAwMDAgMHgyMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDExMT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JuZy9xY29tLHBybmcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JuZy9xY29tLHBybmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNTg1M2MKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvcm5nL3Fjb20scHJuZy50eHQKQEAgLTAsMCArMSwxNyBAQAorUXVhbGNvbW0gTVNNIHBzZXVkbyByYW5kb20gbnVtYmVyIGdlbmVyYXRvci4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlICA6IHNob3VsZCBiZSAicWNvbSxwcm5nIgorLSByZWcgICAgICAgICA6IHNwZWNpZmllcyBiYXNlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIHJlZ2lzdGVycyBtYXAKKy0gY2xvY2tzICAgICAgOiBwaGFuZGxlIHRvIGNsb2NrLWNvbnRyb2xsZXIgcGx1cyBjbG9jay1zcGVjaWZpZXIgcGFpcgorLSBjbG9jay1uYW1lcyA6ICJjb3JlIiBjbG9ja3MgYWxsIHJlZ2lzdGVycywgRklGTyBhbmQgY2lyY3VpdHMgaW4gUFJORyBJUCBibG9jaworCitFeGFtcGxlOgorCisJcm5nQGY5YmZmMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJxY29tLHBybmciOworCQlyZWcgPSA8MHhmOWJmZjAwMCAweDIwMD47CisJCWNsb2NrcyA9IDwmY2xvY2sgR0NDX1BSTkdfQUhCX0NMSz47CisJCWNsb2NrLW5hbWVzID0gImNvcmUiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvcm5nL3NhbXN1bmcsZXh5bm9zLXJuZzQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JuZy9zYW1zdW5nLGV4eW5vcy1ybmc0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2E4ZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JuZy9zYW1zdW5nLGV4eW5vcy1ybmc0LnR4dApAQCAtMCwwICsxLDE3IEBACitFeHlub3MgUHNldWRvIFJhbmRvbSBOdW1iZXIgR2VuZXJhdG9yCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSAgOiBTaG91bGQgYmUgInNhbXN1bmcsZXh5bm9zNC1ybmciLgorLSByZWcgICAgICAgICA6IFNwZWNpZmllcyBiYXNlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIHJlZ2lzdGVycyBtYXAuCistIGNsb2NrcyAgICAgIDogUGhhbmRsZSB0byBjbG9jay1jb250cm9sbGVyIHBsdXMgY2xvY2stc3BlY2lmaWVyIHBhaXIuCistIGNsb2NrLW5hbWVzIDogInNlY3NzIiBhcyBhIGNsb2NrIG5hbWUuCisKK0V4YW1wbGU6CisKKwlybmdAMTA4MzA0MDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNC1ybmciOworCQlyZWcgPSA8MHgxMDgzMDQwMCAweDIwMD47CisJCWNsb2NrcyA9IDwmY2xvY2sgQ0xLX1NTUz47CisJCWNsb2NrLW5hbWVzID0gInNlY3NzIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JuZy9zdCxybmcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JuZy9zdCxybmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NzM0YmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvcm5nL3N0LHJuZy50eHQKQEAgLTAsMCArMSwxNSBAQAorU1RNaWNyb2VsZWN0cm9uaWNzIEhXIFJhbmRvbSBOdW1iZXIgR2VuZXJhdG9yCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHBhcmFtZXRlcnM6Citjb21wYXRpYmxlCTogU2hvdWxkIGJlICJzdCxybmciCityZWcJCTogQmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIElQJ3MgcmVnaXN0ZXIgbWFwLgorY2xvY2tzCQk6IFBoYW5kbGUgdG8gZGV2aWNlJ3MgY2xvY2sgKFNlZTogLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCkKKworRXhhbXBsZToKKworcm5nQGZlZTgwMDAwIHsKKwljb21wYXRpYmxlICAgICAgPSAic3Qscm5nIjsKKwlyZWcJCT0gPDB4ZmVlODAwMDAgMHgxMDAwPjsKKwljbG9ja3MgICAgICAgICAgPSA8JmNsa19zeXNpbj47Cit9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvcm5nL3N0LHN0bTMyLXJuZy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvcm5nL3N0LHN0bTMyLXJuZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdmMDQxNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ybmcvc3Qsc3RtMzItcm5nLnR4dApAQCAtMCwwICsxLDIxIEBACitTVE1pY3JvZWxlY3Ryb25pY3MgU1RNMzIgSFcgUk5HCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBTVE0zMiBoYXJkd2FyZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvciBpcyBhIHNpbXBsZSBmaXhlZCBwdXJwb3NlIElQIGFuZAoraXMgZnVsbHkgc2VwYXJhdGVkIGZyb20gb3RoZXIgY3J5cHRvIGZ1bmN0aW9ucy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJzdCxzdG0zMi1ybmciCistIHJlZyA6IFNob3VsZCBiZSByZWdpc3RlciBiYXNlIGFuZCBsZW5ndGggYXMgZG9jdW1lbnRlZCBpbiB0aGUgZGF0YXNoZWV0CistIGludGVycnVwdHMgOiBUaGUgZGVzaWduYXRlZCBJUlEgbGluZSBmb3IgdGhlIFJORworLSBjbG9ja3MgOiBUaGUgY2xvY2sgbmVlZGVkIHRvIGVuYWJsZSB0aGUgUk5HCisKK0V4YW1wbGU6CisKKwlybmc6IHJuZ0A1MDA2MDgwMCB7CisJCWNvbXBhdGlibGUgPSAic3Qsc3RtMzItcm5nIjsKKwkJcmVnID0gPDB4NTAwNjA4MDAgMHg0MDA+OworCQlpbnRlcnJ1cHRzID0gPDgwPjsKKwkJY2xvY2tzID0gPCZyY2MgMCAzOD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ybmcvdGltZXJpb21lbV9ybmcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JuZy90aW1lcmlvbWVtX3JuZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYxNmQxNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ybmcvdGltZXJpb21lbV9ybmcudHh0CkBAIC0wLDAgKzEsMTggQEAKK0hXUk5HIHN1cHBvcnQgZm9yIHRoZSB0aW1lcmlvbWVtX3JuZyBkcml2ZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJ0aW1lcmlvbWVtX3JuZyIKKy0gcmVnIDogYmFzZSBhZGRyZXNzIHRvIHNhbXBsZSBmcm9tCistIHBlcmlvZCA6IHdhaXQgdGltZSBpbiBtaWNyb3NlY29uZHMgdG8gdXNlIGJldHdlZW4gc2FtcGxlcworCitOLkIuIGN1cnJlbnRseSAncmVnJyBtdXN0IGJlIGZvdXIgYnl0ZXMgd2lkZSBhbmQgYWxpZ25lZAorCitFeGFtcGxlOgorCitod3JuZ0A0NCB7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MT47CisJY29tcGF0aWJsZSA9ICJ0aW1lcmlvbWVtX3JuZyI7CisJcmVnID0gPDB4NDQgMHgwND47CisJcGVyaW9kID0gPDEwMDAwMDA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvYWJyYWNvbixhYng4MHgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9hYnJhY29uLGFieDgweC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU3ODk2OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvYWJyYWNvbixhYng4MHgudHh0CkBAIC0wLDAgKzEsMzAgQEAKK0FicmFjb24gQUJYODBYIEkyQyB1bHRyYSBsb3cgcG93ZXIgUlRDL0FsYXJtIGNoaXAKKworVGhlIEFicmFjb24gQUJYODBYIGZhbWlseSBjb25zaXN0IG9mIHRoZSBhYjA4MDEsIGFiMDgwMywgYWIwODA0LCBhYjA4MDUsIGFiMTgwMSwKK2FiMTgwMywgYWIxODA0IGFuZCBhYjE4MDUuIFRoZSBhYjA4MDUgaXMgdGhlIHN1cGVyc2V0IG9mIGFiMDgweCBhbmQgdGhlIGFiMTgwNQoraXMgdGhlIHN1cGVyc2V0IG9mIGFiMTgweC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworIC0gImNvbXBhdGlibGUiOiBzaG91bGQgb25lIG9mOgorICAgICAgICAiYWJyYWNvbixhYng4MHgiCisgICAgICAgICJhYnJhY29uLGFiMDgwMSIKKyAgICAgICAgImFicmFjb24sYWIwODAzIgorICAgICAgICAiYWJyYWNvbixhYjA4MDQiCisgICAgICAgICJhYnJhY29uLGFiMDgwNSIKKyAgICAgICAgImFicmFjb24sYWIxODAxIgorICAgICAgICAiYWJyYWNvbixhYjE4MDMiCisgICAgICAgICJhYnJhY29uLGFiMTgwNCIKKyAgICAgICAgImFicmFjb24sYWIxODA1IgorCVVzaW5nICJhYnJhY29uLGFieDgweCIgd2lsbCBlbmFibGUgY2hpcCBhdXRvZGV0ZWN0aW9uLgorIC0gInJlZyI6IEkyQyBidXMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKK1RoZSBhYng4MDQgYW5kIGFieDgwNSBoYXZlIGEgdHJpY2tsZSBjaGFyZ2VyIHRoYXQgaXMgYWJsZSB0byBjaGFyZ2UgdGhlCitjb25uZWN0ZWQgYmF0dGVyeSBvciBzdXBlcmNhcC4gQm90aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgaGF2ZSB0byBiZSBkZWZpbmVkCithbmQgdmFsaWQgdG8gZW5hYmxlIGNoYXJnaW5nOgorCisgLSAiYWJyYWNvbix0Yy1kaW9kZSI6IHNob3VsZCBiZSAic3RhbmRhcmQiICgwLjZWKSBvciAic2Nob3R0a3kiICgwLjNWKQorIC0gImFicmFjb24sdGMtcmVzaXN0b3IiOiBzaG91bGQgYmUgPDA+LCA8Mz4sIDw2PiBvciA8MTE+LiAwIGRpc2FibGVzIHRoZSBvdXRwdXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXN0b3IsIHRoZSBvdGhlciB2YWx1ZXMgYXJlIGluIG9obS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvYXJtYWRhLTM4MC1ydGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9hcm1hZGEtMzgwLXJ0Yy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmViOWQ0ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvYXJtYWRhLTM4MC1ydGMudHh0CkBAIC0wLDAgKzEsMjIgQEAKKyogUmVhbCBUaW1lIENsb2NrIG9mIHRoZSBBcm1hZGEgMzh4IFNvQ3MKKworUlRDIGNvbnRyb2xsZXIgZm9yIHRoZSBBcm1hZGEgMzh4IFNvQ3MKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAibWFydmVsbCxhcm1hZGEtMzgwLXJ0YyIKKy0gcmVnOiBhIGxpc3Qgb2YgYmFzZSBhZGRyZXNzIGFuZCBzaXplIHBhaXJzLCBvbmUgZm9yIGVhY2ggZW50cnkgaW4KKyAgcmVnLW5hbWVzCistIHJlZyBuYW1lczogc2hvdWxkIGNvbnRhaW46CisgICogInJ0YyIgZm9yIHRoZSBSVEMgcmVnaXN0ZXJzCisgICogInJ0Yy1zb2MiIGZvciB0aGUgU29DIHJlbGF0ZWQgcmVnaXN0ZXJzIGFuZCBhbW9uZyB0aGVtIHRoZSBvbmUKKyAgICByZWxhdGVkIHRvIHRoZSBpbnRlcnJ1cHQuCistIGludGVycnVwdHM6IElSUSBsaW5lIGZvciB0aGUgUlRDLgorCitFeGFtcGxlOgorCitydGNAYTM4MDAgeworCWNvbXBhdGlibGUgPSAibWFydmVsbCxhcm1hZGEtMzgwLXJ0YyI7CisJcmVnID0gPDB4YTM4MDAgMHgyMD4sIDwweDE4NGEwIDB4MGM+OworCXJlZy1uYW1lcyA9ICJydGMiLCAicnRjLXNvYyI7CisJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDIxIElSUV9UWVBFX0xFVkVMX0hJR0g+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvYXRtZWwsYXQ5MXJtOTIwMC1ydGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9hdG1lbCxhdDkxcm05MjAwLXJ0Yy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQzNzkxZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvYXRtZWwsYXQ5MXJtOTIwMC1ydGMudHh0CkBAIC0wLDAgKzEsMTcgQEAKK0F0bWVsIEFUOTFSTTkyMDAgUmVhbCBUaW1lIENsb2NrCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZTogImF0bWVsLGF0OTFybTkyMDAtcnRjIiBvciAiYXRtZWwsYXQ5MXNhbTl4NS1ydGMiCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICByZWdpb24uCistIGludGVycnVwdHM6IHJ0YyBhbGFybS9ldmVudCBpbnRlcnJ1cHQKKy0gY2xvY2tzOiBwaGFuZGxlIHRvIGlucHV0IGNsb2NrLgorCitFeGFtcGxlOgorCitydGNAZmZmZmZlMDAgeworCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXJtOTIwMC1ydGMiOworCXJlZyA9IDwweGZmZmZmZTAwIDB4MTAwPjsKKwlpbnRlcnJ1cHRzID0gPDEgNCA3PjsKKwljbG9ja3MgPSA8JmNsazMyaz47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9hdG1lbCxhdDkxc2FtOS1ydGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9hdG1lbCxhdDkxc2FtOS1ydGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZTc5ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL2F0bWVsLGF0OTFzYW05LXJ0Yy50eHQKQEAgLTAsMCArMSwyMyBAQAorQXRtZWwgQVQ5MVNBTTkyNjAgUmVhbCBUaW1lIFRpbWVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZTogImF0bWVsLGF0OTFzYW05MjYwLXJ0dCIKKy0gcmVnOiBzaG91bGQgZW5jb2RlIHRoZSBtZW1vcnkgcmVnaW9uIG9mIHRoZSBSVFQgY29udHJvbGxlcgorLSBpbnRlcnJ1cHRzOiBydHQgYWxhcm0vZXZlbnQgaW50ZXJydXB0CistIGNsb2Nrczogc2hvdWxkIGNvbnRhaW4gdGhlIDMyIEtIeiBzbG93IGNsayB0aGF0IHdpbGwgZHJpdmUgdGhlIFJUVCBibG9jay4KKy0gYXRtZWwscnR0LXJ0Yy10aW1lLXJlZzogc2hvdWxkIGVuY29kZSB0aGUgR1BCUiByZWdpc3RlciB1c2VkIHRvIHN0b3JlCisJdGhlIHRpbWUgYmFzZSB3aGVuIHRoZSBSVFQgaXMgdXNlZCBhcyBhbiBSVEMuCisJVGhlIGZpcnN0IGNlbGwgc2hvdWxkIHBvaW50IHRvIHRoZSBHUEJSIG5vZGUgYW5kIHRoZSBzZWNvbmQgb25lCisJZW5jb2RlIHRoZSBvZmZzZXQgd2l0aGluIHRoZSBHUEJSIGJsb2NrIChvciBpbiBvdGhlciB3b3JkcywgdGhlCisJR1BCUiByZWdpc3RlciB1c2VkIHRvIHN0b3JlIHRoZSB0aW1lIGJhc2UpLgorCisKK0V4YW1wbGU6CisKK3J0dEBmZmZmZmQyMCB7CisJY29tcGF0aWJsZSA9ICJhdG1lbCxhdDkxc2FtOTI2MC1ydHQiOworCXJlZyA9IDwweGZmZmZmZDIwIDB4MTA+OworCWludGVycnVwdHMgPSA8MSA0IDc+OworCWNsb2NrcyA9IDwmY2xrMzJrPjsKKwlhdG1lbCxydHQtcnRjLXRpbWUtcmVnID0gPCZncGJyIDB4MD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9kYWxsYXMsZHMxMzM5LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvZGFsbGFzLGRzMTMzOS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE2ZjU3NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvZGFsbGFzLGRzMTMzOS50eHQKQEAgLTAsMCArMSwxOCBAQAorKiBEYWxsYXMgRFMxMzM5CQlJMkMgU2VyaWFsIFJlYWwtVGltZSBDbG9jaworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgY29udGFpbiAiZGFsbGFzLGRzMTMzOSIuCistIHJlZzogSTJDIGFkZHJlc3MgZm9yIGNoaXAKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdHJpY2tsZS1yZXNpc3Rvci1vaG1zIDogU2VsZWN0ZWQgcmVzaXN0b3IgZm9yIHRyaWNrbGUgY2hhcmdlcgorCVZhbHVlcyB1c2FibGUgZm9yIGRzMTMzOSBhcmUgMjUwLCAyMDAwLCA0MDAwCisJU2hvdWxkIGJlIGdpdmVuIGlmIHRyaWNrbGUgY2hhcmdlciBzaG91bGQgYmUgZW5hYmxlZAorLSB0cmlja2xlLWRpb2RlLWRpc2FibGUgOiBEbyBub3QgdXNlIGludGVybmFsIHRyaWNrbGUgY2hhcmdlciBkaW9kZQorCVNob3VsZCBiZSBnaXZlbiBpZiBpbnRlcm5hbCB0cmlja2xlIGNoYXJnZXIgZGlvZGUgc2hvdWxkIGJlIGRpc2FibGVkCitFeGFtcGxlOgorCWRzMTMzOTogcnRjQDY4IHsKKwkJY29tcGF0aWJsZSA9ICJkYWxsYXMsZHMxMzM5IjsKKwkJdHJpY2tsZS1yZXNpc3Rvci1vaG1zID0gPDI1MD47CisJCXJlZyA9IDwweDY4PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9kYWxsYXMsZHMxMzkwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvZGFsbGFzLGRzMTM5MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU3NmYyNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvZGFsbGFzLGRzMTM5MC50eHQKQEAgLTAsMCArMSwxOCBAQAorKiBEYWxsYXMgRFMxMzkwCQlTUEkgU2VyaWFsIFJlYWwtVGltZSBDbG9jaworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgY29udGFpbiAiZGFsbGFzLGRzMTM5MCIuCistIHJlZzogU1BJIGFkZHJlc3MgZm9yIGNoaXAKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdHJpY2tsZS1yZXNpc3Rvci1vaG1zIDogU2VsZWN0ZWQgcmVzaXN0b3IgZm9yIHRyaWNrbGUgY2hhcmdlcgorCVZhbHVlcyB1c2FibGUgZm9yIGRzMTM5MCBhcmUgMjUwLCAyMDAwLCA0MDAwCisJU2hvdWxkIGJlIGdpdmVuIGlmIHRyaWNrbGUgY2hhcmdlciBzaG91bGQgYmUgZW5hYmxlZAorLSB0cmlja2xlLWRpb2RlLWRpc2FibGUgOiBEbyBub3QgdXNlIGludGVybmFsIHRyaWNrbGUgY2hhcmdlciBkaW9kZQorCVNob3VsZCBiZSBnaXZlbiBpZiBpbnRlcm5hbCB0cmlja2xlIGNoYXJnZXIgZGlvZGUgc2hvdWxkIGJlIGRpc2FibGVkCitFeGFtcGxlOgorCWRzMTM5MDogcnRjQDY4IHsKKwkJY29tcGF0aWJsZSA9ICJkYWxsYXMsZHMxMzkwIjsKKwkJdHJpY2tsZS1yZXNpc3Rvci1vaG1zID0gPDI1MD47CisJCXJlZyA9IDwwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9kaWdpY29sb3ItcnRjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvZGlnaWNvbG9yLXJ0Yy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ2NDk4NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvZGlnaWNvbG9yLXJ0Yy50eHQKQEAgLTAsMCArMSwxNyBAQAorQ29uZXhhbnQgRGlnaWNvbG9yIFJlYWwgVGltZSBDbG9jayBjb250cm9sbGVyCisKK1RoaXMgYmluZGluZyBjdXJyZW50bHkgc3VwcG9ydHMgdGhlIENYOTI3NTUgU29DLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImNueHQsY3g5Mjc1NS1ydGMiCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICByZWdpb24uCistIGludGVycnVwdHM6IHJ0YyBhbGFybSBpbnRlcnJ1cHQKKworRXhhbXBsZToKKworCXJ0Y0BmMDAwMGMzMCB7CisJCWNvbXBhdGlibGUgPSAiY254dCxjeDkyNzU1LXJ0YyI7CisJCXJlZyA9IDwweGYwMDAwYzMwIDB4MTg+OworCQlpbnRlcnJ1cHRzID0gPDI1PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9kdy1hcGIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9kdy1hcGIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MDNkNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL2R3LWFwYi50eHQKQEAgLTAsMCArMSwzMiBAQAorKiBEZXNpZ253YXJlIEFQQiB0aW1lcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBPbmUgb2Y6CisgCSJzbnBzLGR3LWFwYi10aW1lciIKKwkic25wcyxkdy1hcGItdGltZXItc3AiIDxERVBSRUNBVEVEPgorCSJzbnBzLGR3LWFwYi10aW1lci1vc2MiIDxERVBSRUNBVEVEPgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorLSBpbnRlcnJ1cHRzOiBJUlEgbGluZSBmb3IgdGhlIHRpbWVyLgorLSBlaXRoZXIgY2xvY2tzK2Nsb2NrLW5hbWVzIG9yIGNsb2NrLWZyZXF1ZW5jeSBwcm9wZXJ0aWVzCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2Nrcwk6IGxpc3Qgb2YgY2xvY2sgc3BlY2lmaWVycywgY29ycmVzcG9uZGluZyB0byBlbnRyaWVzIGluCisJCSAgdGhlIGNsb2NrLW5hbWVzIHByb3BlcnR5OworLSBjbG9jay1uYW1lcwk6IHNob3VsZCBjb250YWluICJ0aW1lciIgYW5kICJwY2xrIiBlbnRyaWVzLCBtYXRjaGluZyBlbnRyaWVzCisJCSAgaW4gdGhlIGNsb2NrcyBwcm9wZXJ0eS4KKy0gY2xvY2stZnJlcXVlbmN5OiBUaGUgZnJlcXVlbmN5IGluIEhaIG9mIHRoZSB0aW1lci4KKy0gY2xvY2stZnJlcTogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggcGljb3hjZWxsCisKK0lmIHVzaW5nIHRoZSBjbG9jayBzcGVjaWZpZXJzLCB0aGUgcGNsayBjbG9jayBpcyBvcHRpb25hbCwgYXMgbm90IGFsbAorc3lzdGVtcyBtYXkgdXNlIG9uZS4KKworCitFeGFtcGxlOgorCXRpbWVyQGZmZTAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzbnBzLGR3LWFwYi10aW1lciI7CisJCWludGVycnVwdHMgPSA8MCAxNzAgND47CisJCXJlZyA9IDwweGZmZTAwMDAwIDB4MTAwMD47CisJCWNsb2NrcyA9IDwmdGltZXJfY2xrPiwgPCZ0aW1lcl9wY2xrPjsKKwkJY2xvY2stbmFtZXMgPSAidGltZXIiLCAicGNsayI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvaGFveXUsaHltODU2My50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL2hhb3l1LGh5bTg1NjMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4OTM0ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL2hhb3l1LGh5bTg1NjMudHh0CkBAIC0wLDAgKzEsMzAgQEAKK0hhb3l1IE1pY3JvZWxlY3Ryb25pY3MgSFlNODU2MyBSZWFsIFRpbWUgQ2xvY2sKKworVGhlIEhZTTg1NjMgcHJvdmlkZXMgYmFzaWMgcnRjIGFuZCBhbGFybSBmdW5jdGlvbmFsaXR5CithcyB3ZWxsIGFzIGEgY2xvY2sgb3V0cHV0IG9mIHVwIHRvIDMya0h6LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmU6ICJoYW95dSxoeW04NTYzIgorLSByZWc6IGkyYyBhZGRyZXNzCistICNjbG9jay1jZWxsczogdGhlIHZhbHVlIHNob3VsZCBiZSAwCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrLW91dHB1dC1uYW1lczogRnJvbSBjb21tb24gY2xvY2sgYmluZGluZworLSBpbnRlcnJ1cHRzOiBydGMgYWxhcm0vZXZlbnQgaW50ZXJydXB0CisKK0V4YW1wbGU6CisKK2h5bTg1NjM6IGh5bTg1NjNANTEgeworCWNvbXBhdGlibGUgPSAiaGFveXUsaHltODU2MyI7CisJcmVnID0gPDB4NTE+OworCisJaW50ZXJydXB0cyA9IDwxMyBJUlFfVFlQRV9FREdFX0ZBTExJTkc+OworCisJI2Nsb2NrLWNlbGxzID0gPDA+OworfTsKKworZGV2aWNlIHsKKy4uLgorCWNsb2NrcyA9IDwmaHltODU2Mz47CisuLi4KK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL2lteGRpLXJ0Yy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL2lteGRpLXJ0Yy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzlkODBkNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvaW14ZGktcnRjLnR4dApAQCAtMCwwICsxLDE3IEBACisqIGkuTVgyNSBSZWFsIFRpbWUgQ2xvY2sgY29udHJvbGxlcgorCitUaGlzIGJpbmRpbmcgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBjaGlwczogaS5NWDI1LCBpLk1YNTMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlOiAiZnNsLGlteDI1LXJ0YyIKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgIHJlZ2lvbi4KKy0gaW50ZXJydXB0czogcnRjIGFsYXJtIGludGVycnVwdAorCitFeGFtcGxlOgorCitydGNAODAwNTYwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDUzLXJ0YyIsICJmc2wsaW14MjUtcnRjIjsKKwlyZWcgPSA8MHg4MDA1NjAwMCAyMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDI5PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL2lzaWwsaXNsMTIwNTcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9pc2lsLGlzbDEyMDU3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjgzZTA5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9pc2lsLGlzbDEyMDU3LnR4dApAQCAtMCwwICsxLDc4IEBACitJbnRlcnNpbCBJU0wxMjA1NyBJMkMgUlRDL0FsYXJtIGNoaXAKKworSVNMMTIwNTcgaXMgYSB0cml2aWFsIEkyQyBkZXZpY2UgKGl0IGhhcyBzaW1wbGUgZGV2aWNlIHRyZWUgYmluZGluZ3MsCitjb25zaXN0aW5nIG9mIGEgY29tcGF0aWJsZSBmaWVsZCwgYW4gYWRkcmVzcyBhbmQgcG9zc2libHkgYW4gaW50ZXJydXB0CitsaW5lKS4KKworTm9uZXRoZWxlc3MsIGl0IGFsc28gc3VwcG9ydHMgYW4gb3B0aW9uIGJvb2xlYW4gcHJvcGVydHkKKygid2FrZXVwLXNvdXJjZSIpIHRvIGhhbmRsZSB0aGUgc3BlY2lmaWMgdXNlLWNhc2UgZm91bmQKK29uIGF0IGxlYXN0IHRocmVlIGluLXRyZWUgdXNlcnMgb2YgdGhlIGNoaXAgKE5FVEdFQVIgUmVhZHlOQVMgMTAyLCAxMDQKK2FuZCAyMTIwIEFSTS1iYXNlZCBOQVMpOyBPbiB0aG9zZSBkZXZpY2VzLCB0aGUgSVJRIzIgcGluIG9mIHRoZSBjaGlwCisoYXNzb2NpYXRlZCB3aXRoIHRoZSBhbGFybSBzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlcikgaXMgbm90IGNvbm5lY3RlZAordG8gdGhlIFNvQyBidXQgdG8gYSBQTUlDLiBJdCBhbGxvd3MgdGhlIGRldmljZSB0byBiZSBwb3dlcmVkIHVwIHdoZW4KK1JUQyBhbGFybSByaW5ncy4gSW4gb3JkZXIgdG8gbWFyayB0aGUgZGV2aWNlIGhhcyBhIHdha2V1cCBzb3VyY2UgYW5kCitnZXQgYWNjZXNzIHRvIHRoZSAnd2FrZWFsYXJtJyBzeXNmcyBlbnRyeSwgdGhpcyBzcGVjaWZpYyBwcm9wZXJ0eSBjYW4KK2JlIHNldCB3aGVuIHRoZSBJUlEjMiBwaW4gb2YgdGhlIGNoaXAgaXMgbm90IGNvbm5lY3RlZCB0byB0aGUgU29DIGJ1dAorY2FuIHdha2UgdXAgdGhlIGRldmljZS4KKworUmVxdWlyZWQgcHJvcGVydGllcyBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZToKKworIC0gImNvbXBhdGlibGUiOiBtdXN0IGJlICJpc2lsLGlzbDEyMDU3IgorIC0gInJlZyI6IEkyQyBidXMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKyAtICJ3YWtldXAtc291cmNlIjogbWFyayB0aGUgY2hpcCBhcyBhIHdha2V1cCBzb3VyY2UsIGluZGVwZW5kZW50bHkgb2YKKyAgICB0aGUgYXZhaWxhYmlsaXR5IG9mIGFuIElSUSBsaW5lIGNvbm5lY3RlZCB0byB0aGUgU29DLgorICAgIChMZWdhY3kgcHJvcGVydHkgc3VwcG9ydGVkOiAiaXNpbCxpcnEyLWNhbi13YWtldXAtbWFjaGluZSIpCisKKyAtICJpbnRlcnJ1cHQtcGFyZW50IiwgImludGVycnVwdHMiOiBmb3IgcGFzc2luZyB0aGUgaW50ZXJydXB0IGxpbmUKKyAgIG9mIHRoZSBTb0MgY29ubmVjdGVkIHRvIElSUSMyIG9mIHRoZSBSVEMgY2hpcC4KKworCitFeGFtcGxlIGlzbDEyMDU3IG5vZGUgd2l0aG91dCBJUlEjMiBwaW4gY29ubmVjdGVkIChubyBhbGFybSBzdXBwb3J0KToKKworCWlzbDEyMDU3OiBpc2wxMjA1N0A2OCB7CisJCWNvbXBhdGlibGUgPSAiaXNpbCxpc2wxMjA1NyI7CisJCXJlZyA9IDwweDY4PjsKKwl9OworCisKK0V4YW1wbGUgaXNsMTIwNTcgbm9kZSB3aXRoIElSUSMyIHBpbiBjb25uZWN0ZWQgdG8gbWFpbiBTb0MgdmlhIE1QUDYgKG5vdGUKK3RoYXQgdGhlIHBpbmN0cmwtcmVsYXRlZCBwcm9wZXJ0aWVzIGJlbG93IGFyZSBnaXZlbiBmb3IgY29tcGxldGVuZXNzIGFuZAorbWF5IG5vdCBiZSByZXF1aXJlZCBvciBtYXkgYmUgZGlmZmVyZW50IGRlcGVuZGluZyBvbiB5b3VyIHN5c3RlbSBvcgorU29DLCBhbmQgdGhlIG1haW4gZnVuY3Rpb24gb2YgdGhlIE1QUCB1c2VkIGFzIElSUSBsaW5lLCBpLmUuCisiaW50ZXJydXB0LXBhcmVudCIgYW5kICJpbnRlcnJ1cHRzIiBhcmUgdXN1YWxseSBzdWZmaWNpZW50KToKKworCQkgICAgcGluY3RybCB7CisJCQkJLi4uCisKKwkJCQlydGNfYWxhcm1fcGluOiBydGNfYWxhcm1fcGluIHsKKwkJCQkJbWFydmVsbCxwaW5zID0gIm1wcDYiOworCQkJCQltYXJ2ZWxsLGZ1bmN0aW9uID0gImdwaW8iOworCQkJCX07CisKKwkJCQkuLi4KKworCQkgICAgfTsKKworCS4uLgorCisJaXNsMTIwNTc6IGlzbDEyMDU3QDY4IHsKKwkJY29tcGF0aWJsZSA9ICJpc2lsLGlzbDEyMDU3IjsKKwkJcmVnID0gPDB4Njg+OworCQlwaW5jdHJsLTAgPSA8JnJ0Y19hbGFybV9waW4+OworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvMD47CisJCWludGVycnVwdHMgPSA8NiBJUlFfVFlQRV9FREdFX0ZBTExJTkc+OworCX07CisKKworRXhhbXBsZSBpc2wxMjA1NyBub2RlIHdpdGhvdXQgSVJRIzIgcGluIGNvbm5lY3RlZCB0byB0aGUgU29DIGJ1dCB0byBhCitQTUlDLCBhbGxvd2luZyB0aGUgZGV2aWNlIHRvIGJlIHN0YXJ0ZWQgYmFzZWQgb24gY29uZmlndXJlZCBhbGFybToKKworCWlzbDEyMDU3OiBpc2wxMjA1N0A2OCB7CisJCWNvbXBhdGlibGUgPSAiaXNpbCxpc2wxMjA1NyI7CisJCXJlZyA9IDwweDY4PjsKKwkJd2FrZXVwLXNvdXJjZTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9scGMzMnh4LXJ0Yy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL2xwYzMyeHgtcnRjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODdhMWU5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9scGMzMnh4LXJ0Yy50eHQKQEAgLTAsMCArMSwxNSBAQAorKiBOWFAgTFBDMzJ4eCBTb0MgUmVhbCBUaW1lIENsb2NrIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogbXVzdCBiZSAibnhwLGxwYzMyMjAtcnRjIgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorLSBpbnRlcnJ1cHRzOiBUaGUgUlRDIGludGVycnVwdAorCitFeGFtcGxlOgorCisJcnRjQDQwMDI0MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJueHAsbHBjMzIyMC1ydGMiOworCQlyZWcgPSA8MHg0MDAyNDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDUyIDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL21heGltLGRzMTc0Mi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL21heGltLGRzMTc0Mi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBmOTM3YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvbWF4aW0sZHMxNzQyLnR4dApAQCAtMCwwICsxLDEyIEBACisqIE1heGltIChEYWxsYXMpIERTMTc0Mi9EUzE3NDMgUmVhbCBUaW1lIENsb2NrCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBjb250YWluICJtYXhpbSxkczE3NDIiLgorLSByZWc6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgUlRDIGFuZCBsZW5ndGggb2YgbWVtb3J5CisgIG1hcHBlZCByZWdpb24uCisKK0V4YW1wbGU6CisJcnRjOiBydGNAMTAwMDAwMDAgeworCQljb21wYXRpYmxlID0gIm1heGltLGRzMTc0MiI7CisJCXJlZyA9IDwweDEwMDAwMDAwIDB4ODAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9tb3hhLG1veGFydC1ydGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9tb3hhLG1veGFydC1ydGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZDNhYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL21veGEsbW94YXJ0LXJ0Yy50eHQKQEAgLTAsMCArMSwxNyBAQAorTU9YQSBBUlQgcmVhbC10aW1lIGNsb2NrCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAibW94YSxtb3hhcnQtcnRjIgorLSBncGlvLXJ0Yy1zY2xrIDogUlRDIHNjbGsgZ3Bpbywgd2l0aCB6ZXJvIGZsYWdzCistIGdwaW8tcnRjLWRhdGEgOiBSVEMgZGF0YSBncGlvLCB3aXRoIHplcm8gZmxhZ3MKKy0gZ3Bpby1ydGMtcmVzZXQgOiBSVEMgcmVzZXQgZ3Bpbywgd2l0aCB6ZXJvIGZsYWdzCisKK0V4YW1wbGU6CisKKwlydGM6IHJ0YyB7CisJCWNvbXBhdGlibGUgPSAibW94YSxtb3hhcnQtcnRjIjsKKwkJZ3Bpby1ydGMtc2NsayA9IDwmZ3BpbyA1IDA+OworCQlncGlvLXJ0Yy1kYXRhID0gPCZncGlvIDYgMD47CisJCWdwaW8tcnRjLXJlc2V0ID0gPCZncGlvIDcgMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvbnZpZGlhLHRlZ3JhMjAtcnRjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvbnZpZGlhLHRlZ3JhMjAtcnRjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2Q5OGVkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9udmlkaWEsdGVncmEyMC1ydGMudHh0CkBAIC0wLDAgKzEsMjQgQEAKK05WSURJQSBUZWdyYTIwIHJlYWwtdGltZSBjbG9jaworCitUaGUgVGVncmEgUlRDIG1haW50YWlucyBzZWNvbmRzIGFuZCBtaWxsaXNlY29uZHMgY291bnRlcnMsIGFuZCBmaXZlIGFsYXJtCityZWdpc3RlcnMuIFRoZSBhbGFybXMgYW5kIG90aGVyIGludGVycnVwdHMgbWF5IHdha2UgdGhlIHN5c3RlbSBmcm9tIGxvdy1wb3dlcgorc3RhdGUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IEZvciBUZWdyYTIwLCBtdXN0IGNvbnRhaW4gIm52aWRpYSx0ZWdyYTIwLXJ0YyIuICBPdGhlcndpc2UsCisgIG11c3QgY29udGFpbiAnIm52aWRpYSw8Y2hpcD4tcnRjIiwgIm52aWRpYSx0ZWdyYTIwLXJ0YyInLCB3aGVyZSA8Y2hpcD4KKyAgY2FuIGJlIHRlZ3JhMzAsIHRlZ3JhMTE0LCB0ZWdyYTEyNCwgb3IgdGVncmExMzIuCistIHJlZyA6IFNwZWNpZmllcyBiYXNlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIHJlZ2lzdGVycy4KKy0gaW50ZXJydXB0cyA6IEEgc2luZ2xlIGludGVycnVwdCBzcGVjaWZpZXIuCistIGNsb2NrcyA6IE11c3QgY29udGFpbiBvbmUgZW50cnksIGZvciB0aGUgbW9kdWxlIGNsb2NrLgorICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKworRXhhbXBsZToKKwordGltZXIgeworCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMjAtcnRjIjsKKwlyZWcgPSA8MHg3MDAwZTAwMCAweDEwMD47CisJaW50ZXJydXB0cyA9IDwwIDIgMHgwND47CisJY2xvY2tzID0gPCZ0ZWdyYV9jYXIgND47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9ueHAsbHBjMTc4OC1ydGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9ueHAsbHBjMTc4OC1ydGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjOTdiZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL254cCxscGMxNzg4LXJ0Yy50eHQKQEAgLTAsMCArMSwyMSBAQAorTlhQIExQQzE3ODggcmVhbC10aW1lIGNsb2NrCisKK1RoZSBMUEMxNzg4IFJUQyBwcm92aWRlcyBjYWxlbmRhciBhbmQgY2xvY2sgZnVuY3Rpb25hbGl0eQordG9nZXRoZXIgd2l0aCBwZXJpb2RpYyB0aWNrIGFuZCBhbGFybSBpbnRlcnJ1cHQgc3VwcG9ydC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZQk6IG11c3QgY29udGFpbiAibnhwLGxwYzE3ODgtcnRjIgorLSByZWcJCTogU3BlY2lmaWVzIGJhc2UgcGh5c2ljYWwgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgcmVnaXN0ZXJzLgorLSBpbnRlcnJ1cHRzCTogQSBzaW5nbGUgaW50ZXJydXB0IHNwZWNpZmllci4KKy0gY2xvY2tzCTogTXVzdCBjb250YWluIGNsb2NrIHNwZWNpZmllcnMgZm9yIHJ0YyBhbmQgcmVnaXN0ZXIgY2xvY2sKKy0gY2xvY2stbmFtZXMJOiBNdXN0IGNvbnRhaW4gInJ0YyIgYW5kICJyZWciCisgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorCitFeGFtcGxlOgorcnRjOiBydGNANDAwNDYwMDAgeworCWNvbXBhdGlibGUgPSAibnhwLGxwYzE3ODgtcnRjIjsKKwlyZWcgPSA8MHg0MDA0NjAwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8NDc+OworCWNsb2NrcyA9IDwmY3JlZ19jbGsgMD4sIDwmY2N1MSBDTEtfQ1BVX0JVUz47CisJY2xvY2stbmFtZXMgPSAicnRjIiwgInJlZyI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9ueHAscnRjLTIxMjMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9ueHAscnRjLTIxMjMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjYmMwYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL254cCxydGMtMjEyMy50eHQKQEAgLTAsMCArMSwxNiBAQAorTlhQIFBDRjIxMjMgU1BJIFJlYWwgVGltZSBDbG9jaworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmU6ICJueHAscnRjLXBjZjIxMjMiCistIHJlZzogc2hvdWxkIGJlIHRoZSBTUEkgc2xhdmUgY2hpcHNlbGVjdCBhZGRyZXNzCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHNwaS1jcy1oaWdoOiBQQ0YyMTIzIG5lZWRzIGNoaXBzZWxlY3QgaGlnaAorCitFeGFtcGxlOgorCitydGM6IG54cCxydGMtcGNmMjEyM0AzIHsKKwljb21wYXRpYmxlID0gIm54cCxydGMtcGNmMjEyMyIKKwlyZWcgPSA8Mz4KKwlzcGktY3MtaGlnaDsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL29scGMteG8xLXJ0Yy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL29scGMteG8xLXJ0Yy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI4OTFjZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvb2xwYy14bzEtcnRjLnR4dApAQCAtMCwwICsxLDUgQEAKK09MUEMgWE8tMSBSVEMKK35+fn5+fn5+fn5+fn4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGUgOiAib2xwYyx4bzEtcnRjIgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9vcmlvbi1ydGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9vcmlvbi1ydGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiZjYzZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL29yaW9uLXJ0Yy50eHQKQEAgLTAsMCArMSwxOCBAQAorKiBNdmVidSBSZWFsIFRpbWUgQ2xvY2sKKworUlRDIGNvbnRyb2xsZXIgZm9yIHRoZSBLaXJrd29vZCwgdGhlIERvdmUsIHRoZSBBcm1hZGEgMzcwIGFuZCB0aGUKK0FybWFkYSBYUCBTb0NzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgIm1hcnZlbGwsb3Jpb24tcnRjIgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorLSBpbnRlcnJ1cHRzOiBJUlEgbGluZSBmb3IgdGhlIFJUQy4KKworRXhhbXBsZToKKworcnRjQDEwMzAwIHsKKyAgICAgICAgY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLG9yaW9uLXJ0YyI7CisgICAgICAgIHJlZyA9IDwweGQwMDEwMzAwIDB4MjA+OworICAgICAgICBpbnRlcnJ1cHRzID0gPDUwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL3BjZjg1NjMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9wY2Y4NTYzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmY2ZDJjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9wY2Y4NTYzLnR4dApAQCAtMCwwICsxLDI1IEBACisqIFBoaWxpcHMgUENGODU2My9FcHNvbiBSVEM4NTY0IFJlYWwgVGltZSBDbG9jaworCitQaGlsaXBzIFBDRjg1NjMvRXBzb24gUlRDODU2NCBSZWFsIFRpbWUgQ2xvY2sKKworUmVxdWlyZWQgcHJvcGVydGllczoKK3NlZTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy90cml2aWFsLWRldmljZXMudHh0CisKK09wdGlvbmFsIHByb3BlcnR5OgorLSAjY2xvY2stY2VsbHM6IFNob3VsZCBiZSAwLgorLSBjbG9jay1vdXRwdXQtbmFtZXM6CisgIG92ZXJ3cml0ZSB0aGUgZGVmYXVsdCBjbG9jayBuYW1lICJwY2Y4NTYzLWNsa291dCIKKworRXhhbXBsZToKKworcGNmODU2MzogcGNmODU2M0A1MSB7CisJY29tcGF0aWJsZSA9ICJueHAscGNmODU2MyI7CisJcmVnID0gPDB4NTE+OworCSNjbG9jay1jZWxscyA9IDwwPjsKK307CisKK2RldmljZSB7CisuLi4KKwljbG9ja3MgPSA8JnBjZjg1NjM+OworLi4uCit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9weGEtcnRjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvcHhhLXJ0Yy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM2NjcyYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvcHhhLXJ0Yy50eHQKQEAgLTAsMCArMSwxNCBAQAorKiBQWEEgUlRDCisKK1BYQSBzcGVjaWZpYyBSVEMgZHJpdmVyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJtYXJ2ZWxsLHB4YS1ydGMiCisKK0V4YW1wbGVzOgorCitydGNANDA5MDAwMDAgeworCWNvbXBhdGlibGUgPSAibWFydmVsbCxweGEtcnRjIjsKKwlyZWcgPSA8MHg0MDkwMDAwMCAweDNjPjsKKwlpbnRlcnJ1cHRzID0gPDMwIDMxPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL3J0Yy1jbW9zLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvcnRjLWNtb3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczODI5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL3J0Yy1jbW9zLnR4dApAQCAtMCwwICsxLDI4IEBACisgTW90b3JvbGEgbWMxNDY4MTggY29tcGF0aWJsZSBSVEMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlIDogIm1vdG9yb2xhLG1jMTQ2ODE4IgorICAtIHJlZyA6IHNob3VsZCBjb250YWluIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIGludGVycnVwdHMgOiBzaG91bGQgY29udGFpbiBpbnRlcnJ1cHQuCisgIC0gaW50ZXJydXB0LXBhcmVudCA6IGludGVycnVwdCBzb3VyY2UgcGhhbmRsZS4KKyAgLSBjdHJsLXJlZyA6IENvbnRhaW5zIHRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBjb250cm9sIHJlZ2lzdGVyIGFsc28KKyAgICBjYWxsZWQgIlJlZ2lzdGVyIEIiLgorICAtIGZyZXEtcmVnIDogQ29udGFpbnMgdGhlIGluaXRpYWwgdmFsdWUgb2YgdGhlIGZyZXF1ZW5jeSByZWdpc3RlciBhbHNvCisgICAgY2FsbGVkICJSZWdzaXRlciBBIi4KKworIlJlZ2lzdGVyIEEiIGFuZCAiQiIgYXJlIHVzdWFsbHkgaW5pdGlhbGl6ZWQgYnkgdGhlIGZpcm13YXJlIChCSU9TIGZvcgoraW5zdGFuY2UpLiBJZiB0aGlzIGlzIG5vdCBkb25lLCBpdCBjYW4gYmUgcGVyZm9ybWVkIGJ5IHRoZSBkcml2ZXIuCisKK0lTQSBFeGFtcGxlOgorCisJcnRjQDcwIHsKKwkgICAgICAgICBjb21wYXRpYmxlID0gIm1vdG9yb2xhLG1jMTQ2ODE4IjsKKwkgICAgICAgICBpbnRlcnJ1cHRzID0gPDggMz47CisJICAgICAgICAgaW50ZXJydXB0LXBhcmVudCA9IDwmaW9hcGljMT47CisJICAgICAgICAgY3RybC1yZWcgPSA8Mj47CisJICAgICAgICAgZnJlcS1yZWcgPSA8MHgyNj47CisJICAgICAgICAgcmVnID0gPDEgMHg3MCAyPjsKKwkgfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvcnRjLW14Yy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL3J0Yy1teGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViY2QzMWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL3J0Yy1teGMudHh0CkBAIC0wLDAgKzEsMjYgQEAKKyogUmVhbCBUaW1lIENsb2NrIG9mIHRoZSBpLk1YIFNvQ3MKKworUlRDIGNvbnRyb2xsZXIgZm9yIHRoZSBpLk1YIFNvQ3MKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJmc2wsaW14MS1ydGMiIG9yICJmc2wsaW14MjEtcnRjIi4KKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgIHJlZ2lvbi4KKy0gaW50ZXJydXB0czogSVJRIGxpbmUgZm9yIHRoZSBSVEMuCistIGNsb2Nrczogc2hvdWxkIGNvbnRhaW4gdHdvIGVudHJpZXM6CisgICogb25lIGZvciB0aGUgaW5wdXQgcmVmZXJlbmNlCisgICogb25lIGZvciB0aGUgdGhlIFNvQyBSVEMKKy0gY2xvY2stbmFtZXM6IHNob3VsZCBjb250YWluOgorICAqICJyZWYiIGZvciB0aGUgaW5wdXQgcmVmZXJlbmNlIGNsb2NrCisgICogImlwZyIgZm9yIHRoZSBTb0MgUlRDIGNsb2NrCisKK0V4YW1wbGU6CisKK3J0Y0AxMDAwNzAwMCB7CisJY29tcGF0aWJsZSA9ICJmc2wsaW14MjEtcnRjIjsKKwlyZWcgPSA8MHgxMDAwNzAwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8MjI+OworCWNsb2NrcyA9IDwmY2xrcyBJTVgyN19DTEtfQ0tJTD4sCisJCSA8JmNsa3MgSU1YMjdfQ0xLX1JUQ19JUEdfR0FURT47CisJY2xvY2stbmFtZXMgPSAicmVmIiwgImlwZyI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9ydGMtb21hcC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL3J0Yy1vbWFwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjdkMTFhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9ydGMtb21hcC50eHQKQEAgLTAsMCArMSwzMyBAQAorVEkgUmVhbCBUaW1lIENsb2NrCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CisJLSAidGksZGE4MzAtcnRjIiAgLSBmb3IgUlRDIElQIHVzZWQgc2ltaWxhciB0byB0aGF0IG9uIERBOHh4IFNvQyBmYW1pbHkuCisJLSAidGksYW0zMzUyLXJ0YyIgLSBmb3IgUlRDIElQIHVzZWQgc2ltaWxhciB0byB0aGF0IG9uIEFNMzM1eCBTb0MgZmFtaWx5LgorCQkJICAgIFRoaXMgUlRDIElQIGhhcyBzcGVjaWFsIFdBS0UtRU4gUmVnaXN0ZXIgdG8gZW5hYmxlCisJCQkgICAgV2FrZXVwIGdlbmVyYXRpb24gZm9yIGV2ZW50IEFsYXJtLiBJdCBjYW4gYWxzbyBiZQorCQkJICAgIHVzZWQgdG8gY29udHJvbCBhbiBleHRlcm5hbCBQTUlDIHZpYSB0aGUKKwkJCSAgICBwbWljX3Bvd2VyX2VuIHBpbi4KKwktICJ0aSxhbTQzNzItcnRjIiAtIGZvciBSVEMgSVAgdXNlZCBzaW1pbGFyIHRvIHRoYXQgb24gQU00MzdYIFNvQyBmYW1pbHkuCistIHJlZzogQWRkcmVzcyByYW5nZSBvZiBydGMgcmVnaXN0ZXIgc2V0CistIGludGVycnVwdHM6IHJ0YyB0aW1lciwgYWxhcm0gaW50ZXJydXB0cyBpbiBvcmRlcgorLSBpbnRlcnJ1cHQtcGFyZW50OiBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gc3lzdGVtLXBvd2VyLWNvbnRyb2xsZXI6IHdoZXRoZXIgdGhlIHJ0YyBpcyBjb250cm9sbGluZyB0aGUgc3lzdGVtIHBvd2VyCisgIHRocm91Z2ggcG1pY19wb3dlcl9lbgorLSBjbG9ja3M6IEFueSBpbnRlcm5hbCBvciBleHRlcm5hbCBjbG9ja3MgZmVlZGluZyBpbiB0byBydGMKKy0gY2xvY2stbmFtZXM6IENvcnJlc3BvbmRpbmcgbmFtZXMgb2YgdGhlIGNsb2NrcworCitFeGFtcGxlOgorCitydGNAMWMyMzAwMCB7CisJY29tcGF0aWJsZSA9ICJ0aSxkYTgzMC1ydGMiOworCXJlZyA9IDwweDIzMDAwIDB4MTAwMD47CisJaW50ZXJydXB0cyA9IDwxOQorCQkgICAgICAxOT47CisJaW50ZXJydXB0LXBhcmVudCA9IDwmaW50Yz47CisJc3lzdGVtLXBvd2VyLWNvbnRyb2xsZXI7CisJY2xvY2tzID0gPCZjbGtfMzJrX3J0Yz4sIDwmY2xrXzMyNzY4X2NrPjsKKwljbG9jay1uYW1lcyA9ICJleHQtY2xrIiwgImludC1jbGsiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvcnRjLW9wYWwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9ydGMtb3BhbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE3MzRlNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvcnRjLW9wYWwudHh0CkBAIC0wLDAgKzEsMTcgQEAKK0lCTSBPUEFMIHJlYWwtdGltZSBjbG9jaworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbWFwYXRpYmxlOiBTaG91bGQgYmUgImlibSxvcGFsLXJ0YyIKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gd2FrZXVwLXNvdXJjZTogRGVjaWRlcyBpZiB0aGUgd2FrZXVwIGlzIHN1cHBvcnRlZCBvciBub3QKKwkJIChMZWdhY3kgcHJvcGVydHkgc3VwcG9ydGVkOiAiaGFzLXRwbyIpCisKK0V4YW1wbGU6CisJcnRjIHsKKwkJY29tcGF0aWJsZSA9ICJpYm0sb3BhbC1ydGMiOworCQl3YWtldXAtc291cmNlOworCQlwaGFuZGxlID0gPDB4MTAwMDAwMjk+OworCQlsaW51eCxwaGFuZGxlID0gPDB4MTAwMDAwMjk+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL3J0Yy1wYWxtYXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9ydGMtcGFsbWFzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGJjY2MwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9ydGMtcGFsbWFzLnR4dApAQCAtMCwwICsxLDMzIEBACitQYWxtYXMgUlRDIGNvbnRyb2xsZXIgYmluZGluZ3MKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZToKKyAgLSAidGkscGFsbWFzLXJ0YyIgZm9yIHBhbG1hIHNlcmllcyBvZiB0aGUgUlRDIGNvbnRyb2xsZXIKKy0gaW50ZXJydXB0LXBhcmVudDogUGFyZW50IGludGVycnVwdCBkZXZpY2UsIG11c3QgYmUgaGFuZGxlIG9mIHBhbG1hcyBub2RlLgorLSBpbnRlcnJ1cHRzOiBJbnRlcnJ1cHQgbnVtYmVyIG9mIFJUQyBzdWJtb2R1bGUgb24gZGV2aWNlLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIHRpLGJhY2t1cC1iYXR0ZXJ5LWNoYXJnZWFibGU6IFRoZSBQYWxtYXMgc2VyaWVzIGRldmljZSBsaWtlIFRQUzY1OTEzIG9yCisJVFBTODAwMzYgc3VwcG9ydHMgdGhlIGJhY2t1cCBiYXR0ZXJ5IGZvciBwb3dlcmluZyB0aGUgUlRDIHdoZW4gbWFpbgorCWJhdHRlcnkgaXMgcmVtb3ZlZCBvciBpbiB2ZXJ5IGxvdyBwb3dlciBzdGF0ZS4gVGhlIGJhY2t1cCBiYXR0ZXJ5CisJY2FuIGJlIGNoYXJnZWFibGUgb3Igbm9uLWNoYXJnZWFibGUuIFRoaXMgZmxhZyB3aWxsIHRlbGxzIHdoZXRoZXIKKwliYXR0ZXJ5IGlzIGNoYXJnZWFibGUgb3Igbm90LiBJZiBjaGFyZ2luZyBiYXR0ZXJ5IHRoZW4gZHJpdmVyIGNhbgorCWVuYWJsZSB0aGUgY2hhcmdpbmcuCistIHRpLGJhY2t1cC1iYXR0ZXJ5LWNoYXJnZS1oaWdoLWN1cnJlbnQ6IEVuYWJsZSBoaWdoIGN1cnJlbnQgY2hhcmdpbmcgaW4KKwliYWNrdXAgYmF0dGVyeS4gRGV2aWNlIHN1cHBvcnRzIHRoZSA8IDEwMG1BIGFuZCA+IDEwMG1BIGNoYXJnaW5nLgorCVRoZSBoaWdoIGN1cnJlbnQgd2lsbCBiZSA+IDEwMG1BLiBBYnNlbmNlIG9mIHRoaXMgcHJvcGVydHkgd2lsbAorCWNoYXJnZSBiYXR0ZXJ5IHRvIGxvd2VyIGN1cnJlbnQgaS5lLiA8IDEwMG1BLgorCitFeGFtcGxlOgorCXBhbG1hczogdHBzNjU5MTNANTggeworCQkuLi4KKwkJcGFsbWFzX3J0YzogcnRjIHsKKwkJCWNvbXBhdGlibGUgPSAidGkscGFsbWFzLXJ0YyI7CisJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZwYWxtYXM+OworCQkJaW50ZXJydXB0cyA9IDw4IDA+OworCQkJdGksYmFja3VwLWJhdHRlcnktY2hhcmdlYWJsZTsKKwkJCXRpLGJhY2t1cC1iYXR0ZXJ5LWNoYXJnZS1oaWdoLWN1cnJlbnQ7CisJCX07CisJCS4uLgorCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL3J0Yy1zdC1scGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9ydGMtc3QtbHBjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWY4ODI2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9ydGMtc3QtbHBjLnR4dApAQCAtMCwwICsxLDI4IEBACitTVE1pY3JvZWxlY3Ryb25pY3MgTG93IFBvd2VyIENvbnRyb2xsZXIgKExQQykgLSBSVEMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitMUEMgY3VycmVudGx5IHN1cHBvcnRzIFdhdGNoZG9nIE9SIFJlYWwgVGltZSBDbG9jayBPUiBDbG9ja3NvdXJjZQorZnVuY3Rpb25hbGl0eS4KKworW1NlZTogLi4vd2F0Y2hkb2cvc3RfbHBjX3dkdC50eHQgZm9yIFdhdGNoZG9nIG9wdGlvbnNdCitbU2VlOiAuLi90aW1lci9zdCxzdGloNDA3LWxwYyBmb3IgQ2xvY2tzb3VyY2Ugb3B0aW9uc10KKworUmVxdWlyZWQgcHJvcGVydGllcworCistIGNvbXBhdGlibGUgCTogTXVzdCBiZTogInN0LHN0aWg0MDctbHBjIgorLSByZWcJCTogTFBDIHJlZ2lzdGVycyBiYXNlIGFkZHJlc3MgKyBzaXplCistIGludGVycnVwdHMgICAgOiBMUEMgaW50ZXJydXB0IGxpbmUgbnVtYmVyIGFuZCBhc3NvY2lhdGVkIGZsYWdzCistIGNsb2Nrcwk6IENsb2NrIHVzZWQgYnkgTFBDIGRldmljZSAoU2VlOiAuLi9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQpCistIHN0LGxwYy1tb2RlCTogVGhlIExQQyBjYW4gcnVuIGVpdGhlciBvbmUgb2YgdGhyZWUgbW9kZXM6CisgICAgICAgICAgICAgICAgICBTVF9MUENfTU9ERV9SVEMgICAgWzBdCisgICAgICAgICAgICAgICAgICBTVF9MUENfTU9ERV9XRFQgICAgWzFdCisgICAgICAgICAgICAgICAgICBTVF9MUENfTU9ERV9DTEtTUkMgWzJdCisJCSBPbmUgKGFuZCBvbmx5IG9uZSkgbW9kZSBtdXN0IGJlIHNlbGVjdGVkLgorCitFeGFtcGxlOgorCWxwY0BmZGUwNTAwMCB7CisJCWNvbXBhdGlibGUJPSAic3Qsc3RpaDQwNy1scGMiOworCQlyZWcJCT0gPDB4ZmRlMDUwMDAgMHgxMDAwPjsKKwkJY2xvY2tzIAkJPSA8JmNsa19zX2QzX2ZsZXhnZW4gQ0xLX0xQQ18wPjsKKwkJc3QsbHBjLW1vZGUJPSA8U1RfTFBDX01PREVfUlRDPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9zM2MtcnRjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvczNjLXJ0Yy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWMyZmNkNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvczNjLXJ0Yy50eHQKQEAgLTAsMCArMSwyNCBAQAorKiBTYW1zdW5nJ3MgUzNDIFJlYWwgVGltZSBDbG9jayBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZy4KKyAgICAqICJzYW1zdW5nLHMzYzI0MTAtcnRjIiAtIGZvciBjb250cm9sbGVycyBjb21wYXRpYmxlIHdpdGggczNjMjQxMCBydGMuCisgICAgKiAic2Ftc3VuZyxzM2MyNDE2LXJ0YyIgLSBmb3IgY29udHJvbGxlcnMgY29tcGF0aWJsZSB3aXRoIHMzYzI0MTYgcnRjLgorICAgICogInNhbXN1bmcsczNjMjQ0My1ydGMiIC0gZm9yIGNvbnRyb2xsZXJzIGNvbXBhdGlibGUgd2l0aCBzM2MyNDQzIHJ0Yy4KKyAgICAqICJzYW1zdW5nLHMzYzY0MTAtcnRjIiAtIGZvciBjb250cm9sbGVycyBjb21wYXRpYmxlIHdpdGggczNjNjQxMCBydGMuCisgICAgKiAic2Ftc3VuZyxleHlub3MzMjUwLXJ0YyIgLSAoZGVwcmVjYXRlZCkgZm9yIGNvbnRyb2xsZXJzIGNvbXBhdGlibGUgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh5bm9zMzI1MCBydGMgKHVzZSAic2Ftc3VuZyxzM2M2NDEwLXJ0YyIpLgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorLSBpbnRlcnJ1cHRzOiBUd28gaW50ZXJydXB0IG51bWJlcnMgdG8gdGhlIGNwdSBzaG91bGQgYmUgc3BlY2lmaWVkLiBGaXJzdAorICBpbnRlcnJ1cHQgbnVtYmVyIGlzIHRoZSBydGMgYWxhcm0gaW50ZXJydXB0IGFuZCBzZWNvbmQgaW50ZXJydXB0IG51bWJlcgorICBpcyB0aGUgcnRjIHRpY2sgaW50ZXJydXB0LiBUaGUgbnVtYmVyIG9mIGNlbGxzIHJlcHJlc2VudGluZyBhIGludGVycnVwdAorICBkZXBlbmRzIG9uIHRoZSBwYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIuCisKK0V4YW1wbGU6CisKKwlydGNAMTAwNzAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsczNjNjQxMC1ydGMiOworCQlyZWcgPSA8MHgxMDA3MDAwMCAweDEwMD47CisJCWludGVycnVwdHMgPSA8NDQgMCA0NSAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9zYTExMDAtcnRjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvc2ExMTAwLXJ0Yy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNkYTE5YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvc2ExMTAwLXJ0Yy50eHQKQEAgLTAsMCArMSwxNyBAQAorKiBNYXJ2ZWxsIFJlYWwgVGltZSBDbG9jayBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAibXJ2bCxzYTExMDAtcnRjIgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorLSBpbnRlcnJ1cHRzOiBTaG91bGQgYmUgdHdvLiBUaGUgZmlyc3QgaW50ZXJydXB0IG51bWJlciBpcyB0aGUgcnRjIGFsYXJtCisgIGludGVycnVwdCBhbmQgdGhlIHNlY29uZCBpbnRlcnJ1cHQgbnVtYmVyIGlzIHRoZSBydGMgaHogaW50ZXJydXB0LgorLSBpbnRlcnJ1cHQtbmFtZXM6IEFzc2lnbiBuYW1lIG9mIGlycSByZXNvdXJjZS4KKworRXhhbXBsZToKKwlydGM6IHJ0Y0BkNDAxMDAwMCB7CisJCWNvbXBhdGlibGUgPSAibXJ2bCxtbXAtcnRjIjsKKwkJcmVnID0gPDB4ZDQwMTAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDw1PiwgPDY+OworCQlpbnRlcnJ1cHQtbmFtZSA9ICJydGMgMUh6IiwgInJ0YyBhbGFybSI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvc252cy1ydGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9zbnZzLXJ0Yy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI2MWVkNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvc252cy1ydGMudHh0CkBAIC0wLDAgKzEgQEAKK1NlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL2ZzbC1zZWM0LnR4dCBmb3IgZGV0YWlscy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvc3BlYXItcnRjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvc3BlYXItcnRjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTY3YWM2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9zcGVhci1ydGMudHh0CkBAIC0wLDAgKzEsMTcgQEAKKyogU1BFQXIgUlRDCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAic3Qsc3BlYXI2MDAtcnRjIgorLSByZWcgOiBBZGRyZXNzIHJhbmdlIG9mIHRoZSBydGMgcmVnaXN0ZXJzCistIGludGVycnVwdC1wYXJlbnQ6IFNob3VsZCBiZSB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyCisgIHRoYXQgc2VydmljZXMgaW50ZXJydXB0cyBmb3IgdGhpcyBkZXZpY2UKKy0gaW50ZXJydXB0OiBTaG91bGQgY29udGFpbiB0aGUgcnRjIGludGVycnVwdCBudW1iZXIKKworRXhhbXBsZToKKworCXJ0Y0BmYzAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic3Qsc3BlYXI2MDAtcnRjIjsKKwkJcmVnID0gPDB4ZmMwMDAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmdmljMT47CisJCWludGVycnVwdHMgPSA8MTI+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL3N0bXAzeHh4LXJ0Yy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL3N0bXAzeHh4LXJ0Yy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE2YTk0MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvc3RtcDN4eHgtcnRjLnR4dApAQCAtMCwwICsxLDIxIEBACisqIFNUTVAzeHh4L2kuTVgyOCBUaW1lIENsb2NrIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nLgorICAgICogImZzbCxzdG1wM3h4eC1ydGMiCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICByZWdpb24uCistIGludGVycnVwdHM6IHJ0YyBhbGFybSBpbnRlcnJ1cHQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gc3RtcCxjcnlzdGFsLWZyZXE6IG92ZXJyaWRlIGNyeXN0YWwgZnJlcXVlbmN5IGFzIGRldGVybWluZWQgZnJvbSBmdXNlIGJpdHMuCisgIE9ubHkgPDMyMDAwPiBhbmQgPDMyNzY4PiBhcmUgcG9zc2libGUgZm9yIHRoZSBoYXJkd2FyZS4gIFVzZSA8MD4gZm9yCisgICJubyBjcnlzdGFsIi4KKworRXhhbXBsZToKKworcnRjQDgwMDU2MDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxpbXgyOC1ydGMiLCAiZnNsLHN0bXAzeHh4LXJ0YyI7CisJcmVnID0gPDB4ODAwNTYwMDAgMjAwMD47CisJaW50ZXJydXB0cyA9IDwyOT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9zdW42aS1ydGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9zdW42aS1ydGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMDdlNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL3N1bjZpLXJ0Yy50eHQKQEAgLTAsMCArMSwxNyBAQAorKiBzdW42aSBSZWFsIFRpbWUgQ2xvY2sKKworUlRDIGNvbnRyb2xsZXIgZm9yIHRoZSBBbGx3aW5uZXIgQTMxCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUJOiBTaG91bGQgYmUgImFsbHdpbm5lcixzdW42aS1hMzEtcnRjIgorLSByZWcJCTogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YKKwkJICBtZW1vcnkgbWFwcGVkIHJlZ2lvbi4KKy0gaW50ZXJydXB0cwk6IElSUSBsaW5lcyBmb3IgdGhlIFJUQyBhbGFybSAwIGFuZCBhbGFybSAxLCBpbiB0aGF0IG9yZGVyLgorCitFeGFtcGxlOgorCitydGM6IHJ0Y0AwMWYwMDAwMCB7CisJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNmktYTMxLXJ0YyI7CisJcmVnID0gPDB4MDFmMDAwMDAgMHg1ND47CisJaW50ZXJydXB0cyA9IDwwIDQwIDQ+LCA8MCA0MSA0PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL3N1bnhpLXJ0Yy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL3N1bnhpLXJ0Yy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk4M2FhZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvc3VueGktcnRjLnR4dApAQCAtMCwwICsxLDE3IEBACisqIHN1bjRpL3N1bjdpIFJlYWwgVGltZSBDbG9jaworCitSVEMgY29udHJvbGxlciBmb3IgdGhlIEFsbHdpbm5lciBBMTAvQTIwCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImFsbHdpbm5lcixzdW40aS1hMTAtcnRjIiBvciAiYWxsd2lubmVyLHN1bjdpLWEyMC1ydGMiCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICByZWdpb24uCistIGludGVycnVwdHM6IElSUSBsaW5lIGZvciB0aGUgUlRDLgorCitFeGFtcGxlOgorCitydGM6IHJ0Y0AwMWMyMGQwMCB7CisJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNGktYTEwLXJ0YyI7CisJcmVnID0gPDB4MDFjMjBkMDAgMHgyMD47CisJaW50ZXJydXB0cyA9IDwyND47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy90aSxicTMyay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL3RpLGJxMzJrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjA0OTA2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy90aSxicTMyay50eHQKQEAgLTAsMCArMSwxOCBAQAorKiBUSSBCUTMyMDAwICAgICAgICAgICAgICAgIEkyQyBTZXJpYWwgUmVhbC1UaW1lIENsb2NrCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBjb250YWluICJ0aSxicTMyMDAwIi4KKy0gcmVnOiBJMkMgYWRkcmVzcyBmb3IgY2hpcAorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSB0cmlja2xlLXJlc2lzdG9yLW9obXMgOiBTZWxlY3RlZCByZXNpc3RvciBmb3IgdHJpY2tsZSBjaGFyZ2VyCisgICAgICAgVmFsdWVzIHVzYWJsZSBhcmUgMTEyMCBhbmQgMjAxODAKKyAgICAgICBTaG91bGQgYmUgZ2l2ZW4gaWYgdHJpY2tsZSBjaGFyZ2VyIHNob3VsZCBiZSBlbmFibGVkCistIHRyaWNrbGUtZGlvZGUtZGlzYWJsZSA6IERvIG5vdCB1c2UgaW50ZXJuYWwgdHJpY2tsZSBjaGFyZ2VyIGRpb2RlCisgICAgICAgU2hvdWxkIGJlIGdpdmVuIGlmIGludGVybmFsIHRyaWNrbGUgY2hhcmdlciBkaW9kZSBzaG91bGQgYmUgZGlzYWJsZWQKK0V4YW1wbGU6CisgICAgICAgYnEzMjAwMDogcnRjQDY4IHsKKyAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAidGksYnEzMjAwMCI7CisgICAgICAgICAgICAgICB0cmlja2xlLXJlc2lzdG9yLW9obXMgPSA8MTEyMD47CisgICAgICAgICAgICAgICByZWcgPSA8MHg2OD47CisgICAgICAgfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvdHdsLXJ0Yy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL3R3bC1ydGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5NmUwYzkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL3R3bC1ydGMudHh0CkBAIC0wLDAgKzEsMTIgQEAKKyogVEkgdHdsIFJUQworCitUaGUgVFdMIGZhbWlseSAodHdsNDAzMC82MDMwKSBjb250YWlucyBhIFJUQy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSB0d2w0MDMwLXJ0YworCitFeGFtcGxlczoKKworcnRjQDAgeworICAgIGNvbXBhdGlibGUgPSAidGksdHdsNDAzMC1ydGMiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvdmlhLHZ0ODUwMC1ydGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy92aWEsdnQ4NTAwLXJ0Yy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MwNDg0YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvdmlhLHZ0ODUwMC1ydGMudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1ZJQS9Xb25kZXJtZWRpYSBWVDg1MDAgUmVhbHRpbWUgQ2xvY2sgQ29udHJvbGxlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJ2aWEsdnQ4NTAwLXJ0YyIKKy0gcmVnIDogU2hvdWxkIGNvbnRhaW4gMSByZWdpc3RlciByYW5nZXMoYWRkcmVzcyBhbmQgbGVuZ3RoKQorLSBpbnRlcnJ1cHRzIDogYWxhcm0gaW50ZXJydXB0CisKK0V4YW1wbGU6CisKKwlydGNAZDgxMDAwMDAgeworCQljb21wYXRpYmxlID0gInZpYSx2dDg1MDAtcnRjIjsKKwkJcmVnID0gPDB4ZDgxMDAwMDAgMHgxMDAwMD47CisJCWludGVycnVwdHMgPSA8NDg+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL3hnZW5lLXJ0Yy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL3hnZW5lLXJ0Yy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQxOTVjMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMveGdlbmUtcnRjLnR4dApAQCAtMCwwICsxLDI4IEBACisqIEFQTSBYLUdlbmUgUmVhbCBUaW1lIENsb2NrCisKK1JUQyBjb250cm9sbGVyIGZvciB0aGUgQVBNIFgtR2VuZSBSZWFsIFRpbWUgQ2xvY2sKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAiYXBtLHhnZW5lLXJ0YyIKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgIHJlZ2lvbi4KKy0gaW50ZXJydXB0czogSVJRIGxpbmUgZm9yIHRoZSBSVEMuCistICNjbG9jay1jZWxsczogU2hvdWxkIGJlIDEuCistIGNsb2NrczogUmVmZXJlbmNlIHRvIHRoZSBjbG9jayBlbnRyeS4KKworRXhhbXBsZToKKworcnRjY2xrOiBydGNjbGsgeworCWNvbXBhdGlibGUgPSAiZml4ZWQtY2xvY2siOworCSNjbG9jay1jZWxscyA9IDwxPjsKKwljbG9jay1mcmVxdWVuY3kgPSA8MTAwMDAwMDAwPjsKKwljbG9jay1vdXRwdXQtbmFtZXMgPSAicnRjY2xrIjsKK307CisKK3J0YzogcnRjQDEwNTEwMDAwIHsKKwljb21wYXRpYmxlID0gImFwbSx4Z2VuZS1ydGMiOworCXJlZyA9IDwweDAgMHgxMDUxMDAwMCAweDAgMHg0MDA+OworCWludGVycnVwdHMgPSA8MHgwIDB4NDYgMHg0PjsKKwkjY2xvY2stY2VsbHMgPSA8MT47CisJY2xvY2tzID0gPCZydGNjbGsgMD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy94bG54LXJ0Yy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL3hsbngtcnRjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGY2ZjAxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy94bG54LXJ0Yy50eHQKQEAgLTAsMCArMSwyNSBAQAorKiBYaWxpbnggWnlucSBVbHRyYXNjYWxlKyBNUFNvQyBSZWFsIFRpbWUgQ2xvY2sKKworUlRDIGNvbnRyb2xsZXIgZm9yIHRoZSBYaWxpbnggWnlucSBNUFNvQyBSZWFsIFRpbWUgQ2xvY2sKK1NlcGFyYXRlIElSUSBsaW5lcyBmb3Igc2Vjb25kcyBhbmQgYWxhcm0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJ4bG54LHp5bnFtcC1ydGMiCistIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGgKKyAgICAgICBvZiBtZW1vcnkgbWFwcGVkIHJlZ2lvbi4KKy0gaW50ZXJydXB0czogSVJRIGxpbmVzIGZvciB0aGUgUlRDLgorLSBpbnRlcnJ1cHQtbmFtZXM6IGludGVycnVwdCBsaW5lIG5hbWVzIGVnLiAic2VjIiAiYWxhcm0iCisKK09wdGlvbmFsOgorLSBjYWxpYnJhdGlvbjogY2FsaWJyYXRpb24gdmFsdWUgZm9yIDEgc2VjIHBlcmlvZCB3aGljaCB3aWxsCisJCWJlIHByb2dyYW1tZWQgZGlyZWN0bHkgdG8gY2FsaWJyYXRpb24gcmVnaXN0ZXIKKworRXhhbXBsZToKK3J0YzogcnRjQGZmYTYwMDAwIHsKKwljb21wYXRpYmxlID0gInhsbngsenlucW1wLXJ0YyI7CisJcmVnID0gPDB4MCAweGZmYTYwMDAwIDB4MTAwPjsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZnaWM+OworCWludGVycnVwdHMgPSA8MCAyNiA0PiwgPDAgMjcgND47CisJaW50ZXJydXB0LW5hbWVzID0gImFsYXJtIiwgInNlYyI7CisJY2FsaWJyYXRpb24gPSA8MHgxOTgyMzM+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZWN1cml0eS90cG0vc3QzM3pwMjQtaTJjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZWN1cml0eS90cG0vc3QzM3pwMjQtaTJjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWQxMTVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlY3VyaXR5L3RwbS9zdDMzenAyNC1pMmMudHh0CkBAIC0wLDAgKzEsMzYgQEAKKyogU1RNaWNyb2VsZWN0cm9uaWNzIFNBUy4gU1QzM1pQMjQgVFBNIFNvQworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgInN0LHN0MzN6cDI0LWkyYyIuCistIGNsb2NrLWZyZXF1ZW5jeTogScKyQyB3b3JrIGZyZXF1ZW5jeS4KKy0gcmVnOiBhZGRyZXNzIG9uIHRoZSBidXMKKworT3B0aW9uYWwgU1QzM1pQMjQgUHJvcGVydGllczoKKy0gaW50ZXJydXB0LXBhcmVudDogcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBncGlvIGNvbnRyb2xsZXIKKy0gaW50ZXJydXB0czogR1BJTyBpbnRlcnJ1cHQgdG8gd2hpY2ggdGhlIGNoaXAgaXMgY29ubmVjdGVkCistIGxwY3BkLWdwaW9zOiBPdXRwdXQgR1BJTyBwaW4gdXNlZCBmb3IgU1QzM1pQMjQgcG93ZXIgbWFuYWdlbWVudCBEMS9EMiBzdGF0ZS4KK0lmIHNldCwgcG93ZXIgbXVzdCBiZSBwcmVzZW50IHdoZW4gdGhlIHBsYXRmb3JtIGlzIGdvaW5nIGludG8gc2xlZXAvaGliZXJuYXRlIG1vZGUuCisKK09wdGlvbmFsIFNvQyBTcGVjaWZpYyBQcm9wZXJ0aWVzOgorLSBwaW5jdHJsLW5hbWVzOiBDb250YWlucyBvbmx5IG9uZSB2YWx1ZSAtICJkZWZhdWx0Ii4KKy0gcGludGN0cmwtMDogU3BlY2lmaWVzIHRoZSBwaW4gY29udHJvbCBncm91cHMgdXNlZCBmb3IgdGhpcyBjb250cm9sbGVyLgorCitFeGFtcGxlIChmb3IgQVJNLWJhc2VkIEJlYWdsZUJvYXJkIHhNIHdpdGggU1QzM1pQMjQgb24gSTJDMik6CisKKyZpMmMyIHsKKworICAgICAgICBzdGF0dXMgPSAib2theSI7CisKKyAgICAgICAgc3QzM3pwMjQ6IHN0MzN6cDI0QDEzIHsKKworICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAic3Qsc3QzM3pwMjQtaTJjIjsKKworICAgICAgICAgICAgICAgIHJlZyA9IDwweDEzPjsKKyAgICAgICAgICAgICAgICBjbG9jay1mcmVxdWVuY3kgPSA8NDAwMDAwPjsKKworICAgICAgICAgICAgICAgIGludGVycnVwdC1wYXJlbnQgPSA8JmdwaW81PjsKKyAgICAgICAgICAgICAgICBpbnRlcnJ1cHRzID0gPDcgSVJRX1RZUEVfTEVWRUxfSElHSD47CisKKyAgICAgICAgICAgICAgICBscGNwZC1ncGlvcyA9IDwmZ3BpbzUgMTUgR1BJT19BQ1RJVkVfSElHSD47CisgICAgICAgIH07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlY3VyaXR5L3RwbS9zdDMzenAyNC1zcGkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlY3VyaXR5L3RwbS9zdDMzenAyNC1zcGkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1OGIwMTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VjdXJpdHkvdHBtL3N0MzN6cDI0LXNwaS50eHQKQEAgLTAsMCArMSwzNCBAQAorKiBTVE1pY3JvZWxlY3Ryb25pY3MgU0FTLiBTVDMzWlAyNCBUUE0gU29DCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAic3Qsc3QzM3pwMjQtc3BpIi4KKy0gc3BpLW1heC1mcmVxdWVuY3k6IE1heGltdW0gU1BJIGZyZXF1ZW5jeSAoPD0gMTAwMDAwMDApLgorCitPcHRpb25hbCBTVDMzWlAyNCBQcm9wZXJ0aWVzOgorLSBpbnRlcnJ1cHQtcGFyZW50OiBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGdwaW8gY29udHJvbGxlcgorLSBpbnRlcnJ1cHRzOiBHUElPIGludGVycnVwdCB0byB3aGljaCB0aGUgY2hpcCBpcyBjb25uZWN0ZWQKKy0gbHBjcGQtZ3Bpb3M6IE91dHB1dCBHUElPIHBpbiB1c2VkIGZvciBTVDMzWlAyNCBwb3dlciBtYW5hZ2VtZW50IEQxL0QyIHN0YXRlLgorSWYgc2V0LCBwb3dlciBtdXN0IGJlIHByZXNlbnQgd2hlbiB0aGUgcGxhdGZvcm0gaXMgZ29pbmcgaW50byBzbGVlcC9oaWJlcm5hdGUgbW9kZS4KKworT3B0aW9uYWwgU29DIFNwZWNpZmljIFByb3BlcnRpZXM6CistIHBpbmN0cmwtbmFtZXM6IENvbnRhaW5zIG9ubHkgb25lIHZhbHVlIC0gImRlZmF1bHQiLgorLSBwaW50Y3RybC0wOiBTcGVjaWZpZXMgdGhlIHBpbiBjb250cm9sIGdyb3VwcyB1c2VkIGZvciB0aGlzIGNvbnRyb2xsZXIuCisKK0V4YW1wbGUgKGZvciBBUk0tYmFzZWQgQmVhZ2xlQm9hcmQgeE0gd2l0aCBTVDMzWlAyNCBvbiBTUEk0KToKKworJm1jc3BpNCB7CisKKyAgICAgICAgc3RhdHVzID0gIm9rYXkiOworCisgICAgICAgIHN0MzN6cDI0QDAgeworCisgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJzdCxzdDMzenAyNC1zcGkiOworCisgICAgICAgICAgICAgICAgc3BpLW1heC1mcmVxdWVuY3kgPSA8MTAwMDAwMDA+OworCisgICAgICAgICAgICAgICAgaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzU+OworICAgICAgICAgICAgICAgIGludGVycnVwdHMgPSA8NyBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKworICAgICAgICAgICAgICAgIGxwY3BkLWdwaW9zID0gPCZncGlvNSAxNSBHUElPX0FDVElWRV9ISUdIPjsKKyAgICAgICAgfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsLzgyNTAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC84MjUwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWQ1YWIwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC84MjUwLnR4dApAQCAtMCwwICsxLDY2IEBACisqIFVBUlQgKFVuaXZlcnNhbCBBc3luY2hyb25vdXMgUmVjZWl2ZXIvVHJhbnNtaXR0ZXIpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBvbmUgb2Y6CisJLSAibnM4MjUwIgorCS0gIm5zMTY0NTAiCisJLSAibnMxNjU1MGEiCisJLSAibnMxNjU1MCIKKwktICJuczE2NzUwIgorCS0gIm5zMTY4NTAiCisJLSBGb3IgVGVncmEyMCwgbXVzdCBjb250YWluICJudmlkaWEsdGVncmEyMC11YXJ0IgorCS0gRm9yIG90aGVyIFRlZ3JhLCBtdXN0IGNvbnRhaW4gJyJudmlkaWEsPGNoaXA+LXVhcnQiLAorCSAgIm52aWRpYSx0ZWdyYTIwLXVhcnQiJyB3aGVyZSA8Y2hpcD4gaXMgdGVncmEzMCwgdGVncmExMTQsIHRlZ3JhMTI0LAorCSAgdGVncmExMzIsIG9yIHRlZ3JhMjEwLgorCS0gIm54cCxscGMzMjIwLXVhcnQiCisJLSAicmFsaW5rLHJ0Mjg4MC11YXJ0IgorCS0gImlibSxxcGFjZS1ud3Atc2VyaWFsIgorCS0gImFsdHIsMTY1NTAtRklGTzMyIgorCS0gImFsdHIsMTY1NTAtRklGTzY0IgorCS0gImFsdHIsMTY1NTAtRklGTzEyOCIKKwktICJmc2wsMTY1NTAtRklGTzY0IgorCS0gImZzbCxuczE2NTUwIgorCS0gInNlcmlhbCIgaWYgdGhlIHBvcnQgdHlwZSBpcyB1bmtub3duLgorLSByZWcgOiBvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlLgorLSBpbnRlcnJ1cHRzIDogc2hvdWxkIGNvbnRhaW4gdWFydCBpbnRlcnJ1cHQuCistIGNsb2NrLWZyZXF1ZW5jeSA6IHRoZSBpbnB1dCBjbG9jayBmcmVxdWVuY3kgZm9yIHRoZSBVQVJUCisJIG9yCisgIGNsb2NrcyBwaGFuZGxlIHRvIHJlZmVyIHRvIHRoZSBjbGsgdXNlZCBhcyBwZXIgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlCisgIC9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gY3VycmVudC1zcGVlZCA6IHRoZSBjdXJyZW50IGFjdGl2ZSBzcGVlZCBvZiB0aGUgVUFSVC4KKy0gcmVnLW9mZnNldCA6IG9mZnNldCB0byBhcHBseSB0byB0aGUgbWFwYmFzZSBmcm9tIHRoZSBzdGFydCBvZiB0aGUgcmVnaXN0ZXJzLgorLSByZWctc2hpZnQgOiBxdWFudGl0eSB0byBzaGlmdCB0aGUgcmVnaXN0ZXIgb2Zmc2V0cyBieS4KKy0gcmVnLWlvLXdpZHRoIDogdGhlIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgSU8gYWNjZXNzZXMgdGhhdCBzaG91bGQgYmUKKyAgcGVyZm9ybWVkIG9uIHRoZSBkZXZpY2UuICBUaGVyZSBhcmUgc29tZSBzeXN0ZW1zIHRoYXQgcmVxdWlyZSAzMi1iaXQKKyAgYWNjZXNzZXMgdG8gdGhlIFVBUlQgKGUuZy4gVEkgZGF2aW5jaSkuCistIHVzZWQtYnktcnRhcyA6IHNldCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBwb3J0IGlzIGluIHVzZSBieSB0aGUgT3BlbkZpcm13YXJlCisgIFJUQVMgYW5kIHNob3VsZCBub3QgYmUgcmVnaXN0ZXJlZC4KKy0gbm8tbG9vcGJhY2stdGVzdDogc2V0IHRvIGluZGljYXRlIHRoYXQgdGhlIHBvcnQgZG9lcyBub3QgaW1wbGVtZW50cyBsb29wYmFjaworICB0ZXN0IG1vZGUKKy0gZmlmby1zaXplOiB0aGUgZmlmbyBzaXplIG9mIHRoZSBVQVJULgorLSBhdXRvLWZsb3ctY29udHJvbDogb25lIHdheSB0byBlbmFibGUgYXV0b21hdGljIGZsb3cgY29udHJvbCBzdXBwb3J0LiBUaGUKKyAgZHJpdmVyIGlzIGFsbG93ZWQgdG8gZGV0ZWN0IHN1cHBvcnQgZm9yIHRoZSBjYXBhYmlsaXR5IGV2ZW4gd2l0aG91dCB0aGlzCisgIHByb3BlcnR5LgorCitOb3RlOgorKiBmc2wsbnMxNjU1MDoKKyAgLS0tLS0tLS0tLS0tCisgIEZyZWVzY2FsZSBEVUFSVCBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhlIFBDMTY1NTJEIChhbmQgdG8gYQorICBwYWlyIG9mIE5TMTY1NTBBKSwgYWxiZWl0IHdpdGggc29tZSBub25zdGFuZGFyZCBiZWhhdmlvciBzdWNoIGFzCisgIGVycmF0dW0gQS0wMDQ3MzcgKHJlbGF0aW5nIHRvIGluY29ycmVjdCBCUksgaGFuZGxpbmcpLgorCisgIFJlcHJlc2VudHMgYSBzaW5nbGUgcG9ydCB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgRFVBUlQgZm91bmQKKyAgb24gbWFueSBGcmVlc2NhbGUgY2hpcHMgKGV4YW1wbGVzIGluY2x1ZGUgbXBjODM0OSwgbXBjODU0OCwKKyAgbXBjODY0MWQsIHA0MDgwIGFuZCBsczIwODVhKS4KKworRXhhbXBsZToKKworCXVhcnRAODAyMzAwMDAgeworCQljb21wYXRpYmxlID0gIm5zODI1MCI7CisJCXJlZyA9IDwweDgwMjMwMDAwIDB4MTAwPjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDM2ODY0MDA+OworCQlpbnRlcnJ1cHRzID0gPDEwPjsKKwkJcmVnLXNoaWZ0ID0gPDI+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL2FsdGVyYV9qdGFndWFydC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL2FsdGVyYV9qdGFndWFydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVhOTAxMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvYWx0ZXJhX2p0YWd1YXJ0LnR4dApAQCAtMCwwICsxLDUgQEAKK0FsdGVyYSBKVEFHIFVBUlQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiQUxUUixqdWFydC0xLjAiIDxERVBSRUNBVEVEPgorLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJhbHRyLGp1YXJ0LTEuMCIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvYWx0ZXJhX3VhcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9hbHRlcmFfdWFydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFiZjdmZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvYWx0ZXJhX3VhcnQudHh0CkBAIC0wLDAgKzEsOCBAQAorQWx0ZXJhIFVBUlQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiQUxUUix1YXJ0LTEuMCIgPERFUFJFQ0FURUQ+CistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImFsdHIsdWFydC0xLjAiCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrLWZyZXF1ZW5jeSA6IGZyZXF1ZW5jeSBvZiB0aGUgY2xvY2sgaW5wdXQgdG8gdGhlIFVBUlQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvYXJjLXVhcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9hcmMtdWFydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNhZTJlYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvYXJjLXVhcnQudHh0CkBAIC0wLDAgKzEsMjYgQEAKKyogU3lub3BzeXMgQVJDIFVBUlQgOiBOb24gc3RhbmRhcmQgVUFSVCB1c2VkIGluIHNvbWUgb2YgdGhlIEFSQyBGUEdBIGJvYXJkcworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlCQk6ICJzbnBzLGFyYy11YXJ0IgorLSByZWcJCQk6IG9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UuCistIGludGVycnVwdHMJCTogZGV2aWNlIGludGVycnVwdAorLSBjbG9jay1mcmVxdWVuY3kJOiB0aGUgaW5wdXQgY2xvY2sgZnJlcXVlbmN5IGZvciB0aGUgVUFSVAorLSBjdXJyZW50LXNwZWVkCQk6IGJhdWQgcmF0ZSBmb3IgVUFSVAorCitlLmcuCisKK2FyY3VhcnQwOiBzZXJpYWxAYzBmYzEwMDAgeworCWNvbXBhdGlibGUgPSAic25wcyxhcmMtdWFydCI7CisJcmVnID0gPDB4YzBmYzEwMDAgMHgxMDA+OworCWludGVycnVwdHMgPSA8NT47CisJY2xvY2stZnJlcXVlbmN5ID0gPDgwMDAwMDAwPjsKKwljdXJyZW50LXNwZWVkID0gPDExNTIwMD47CisJc3RhdHVzID0gIm9rYXkiOworfTsKKworTm90ZTogRWFjaCBwb3J0IHNob3VsZCBoYXZlIGFuIGFsaWFzIGNvcnJlY3RseSBudW1iZXJlZCBpbiAiYWxpYXNlcyIgbm9kZS4KKworZS5nLgorYWxpYXNlcyB7CisJc2VyaWFsMCA9ICZhcmN1YXJ0MDsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL2FybV9zYnNhX3VhcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9hcm1fc2JzYV91YXJ0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTYzZTdlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9hcm1fc2JzYV91YXJ0LnR4dApAQCAtMCwwICsxLDEwIEBACisqIEFSTSBTQlNBIGRlZmluZWQgZ2VuZXJpYyBVQVJUCitUaGlzIFVBUlQgdXNlcyBhIHN1YnNldCBvZiB0aGUgUEwwMTEgcmVnaXN0ZXJzIGFuZCBjb25zZXF1ZW50bHkgbGl2ZXMKK2luIHRoZSBQTDAxMSBkcml2ZXIuIEl0J3MgYmF1ZHJhdGUgYW5kIG90aGVyIGNvbW11bmljYXRpb24gcGFyYW1ldGVycworY2Fubm90IGJlIGFkanVzdGVkIGF0IHJ1bnRpbWUsIHNvIGl0IGxhY2tzIGEgY2xvY2sgc3BlY2lmaWVyIGhlcmUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IG11c3QgYmUgImFybSxzYnNhLXVhcnQiCistIHJlZzogZXhhY3RseSBvbmUgcmVnaXN0ZXIgcmFuZ2UKKy0gaW50ZXJydXB0czogZXhhY3RseSBvbmUgaW50ZXJydXB0IHNwZWNpZmllcgorLSBjdXJyZW50LXNwZWVkOiB0aGUgKGZpeGVkKSBiYXVkIHJhdGUgc2V0IGJ5IHRoZSBmaXJtd2FyZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9hdG1lbC11c2FydC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL2F0bWVsLXVzYXJ0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmU2MTQyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9hdG1lbC11c2FydC50eHQKQEAgLTAsMCArMSw2MyBAQAorKiBBdG1lbCBVbml2ZXJzYWwgU3luY2hyb25vdXMgQXN5bmNocm9ub3VzIFJlY2VpdmVyL1RyYW5zbWl0dGVyIChVU0FSVCkKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJhdG1lbCw8Y2hpcD4tdXNhcnQiIG9yICJhdG1lbCw8Y2hpcD4tZGJndSIKKyAgVGhlIGNvbXBhdGlibGUgPGNoaXA+IGluZGljYXRlZCB3aWxsIGJlIHRoZSBmaXJzdCBTb0MgdG8gc3VwcG9ydCBhbgorICBhZGRpdGlvbmFsIG1vZGUgb3IgYW4gVVNBUlQgbmV3IGZlYXR1cmUuCisgIEZvciB0aGUgZGJndSBVQVJULCB1c2UgImF0bWVsLDxjaGlwPi1kYmd1IiwgImF0bWVsLDxjaGlwPi11c2FydCIKKy0gcmVnOiBTaG91bGQgY29udGFpbiByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBpbnRlcnJ1cHQKKy0gY2xvY2stbmFtZXM6IHR1cGxlIGxpc3RpbmcgaW5wdXQgY2xvY2sgbmFtZXMuCisJUmVxdWlyZWQgZWxlbWVudHM6ICJ1c2FydCIKKy0gY2xvY2tzOiBwaGFuZGxlcyB0byBpbnB1dCBjbG9ja3MuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGF0bWVsLHVzZS1kbWEtcng6IHVzZSBvZiBQREMgb3IgRE1BIGZvciByZWNlaXZpbmcgZGF0YQorLSBhdG1lbCx1c2UtZG1hLXR4OiB1c2Ugb2YgUERDIG9yIERNQSBmb3IgdHJhbnNtaXR0aW5nIGRhdGEKKy0ge3J0cyxjdHMsZHRyLGRzcixybmcsZGNkfS1ncGlvczogc3BlY2lmeSBhIEdQSU8gZm9yIFJUUy9DVFMvRFRSL0RTUi9SSS9EQ0QgbGluZSByZXNwZWN0aXZlbHkuCisgIEl0IHdpbGwgdXNlIHNwZWNpZmllZCBQSU8gaW5zdGVhZCBvZiB0aGUgcGVyaXBoZXJhbCBmdW5jdGlvbiBwaW4gZm9yIHRoZSBVU0FSVCBmZWF0dXJlLgorICBJZiB1bnN1cmUsIGRvbid0IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eS4KKy0gYWRkIGRtYSBiaW5kaW5ncyBmb3IgZG1hIHRyYW5zZmVyOgorCS0gZG1hczogRE1BIHNwZWNpZmllciwgY29uc2lzdGluZyBvZiBhIHBoYW5kbGUgdG8gRE1BIGNvbnRyb2xsZXIgbm9kZSwKKwkJbWVtb3J5IHBlcmlwaGVyYWwgaW50ZXJmYWNlIGFuZCBVU0FSVCBETUEgY2hhbm5lbCBJRCwgRklGTyBjb25maWd1cmF0aW9uLgorCQlSZWZlciB0byBkbWEudHh0IGFuZCBhdG1lbC1kbWEudHh0IGZvciBkZXRhaWxzLgorCS0gZG1hLW5hbWVzOiAicngiIGZvciBSWCBjaGFubmVsLCAidHgiIGZvciBUWCBjaGFubmVsLgorLSBhdG1lbCxmaWZvLXNpemU6IG1heGltdW0gbnVtYmVyIG9mIGRhdGEgdGhlIFJYIGFuZCBUWCBGSUZPcyBjYW4gc3RvcmUgZm9yIEZJRk8KKyAgY2FwYWJsZSBVU0FSVHMuCisKKzxjaGlwPiBjb21wYXRpYmxlIGRlc2NyaXB0aW9uOgorLSBhdDkxcm05MjAwOiAgbGVnYWN5IFVTQVJUIHN1cHBvcnQKKy0gYXQ5MXNhbTkyNjA6IGdlbmVyaWMgVVNBUlQgaW1wbGVtZW50YXRpb24gZm9yIFNBTTkgU29DcworCitFeGFtcGxlOgorLSB1c2UgUERDOgorCXVzYXJ0MDogc2VyaWFsQGZmZjhjMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhdG1lbCxhdDkxc2FtOTI2MC11c2FydCI7CisJCXJlZyA9IDwweGZmZjhjMDAwIDB4NDAwMD47CisJCWludGVycnVwdHMgPSA8Nz47CisJCWNsb2NrcyA9IDwmdXNhcnQwX2Nsaz47CisJCWNsb2NrLW5hbWVzID0gInVzYXJ0IjsKKwkJYXRtZWwsdXNlLWRtYS1yeDsKKwkJYXRtZWwsdXNlLWRtYS10eDsKKwkJcnRzLWdwaW9zID0gPCZwaW9EIDE1IEdQSU9fQUNUSVZFX0xPVz47CisJCWN0cy1ncGlvcyA9IDwmcGlvRCAxNiBHUElPX0FDVElWRV9MT1c+OworCQlkdHItZ3Bpb3MgPSA8JnBpb0QgMTcgR1BJT19BQ1RJVkVfTE9XPjsKKwkJZHNyLWdwaW9zID0gPCZwaW9EIDE4IEdQSU9fQUNUSVZFX0xPVz47CisJCWRjZC1ncGlvcyA9IDwmcGlvRCAyMCBHUElPX0FDVElWRV9MT1c+OworCQlybmctZ3Bpb3MgPSA8JnBpb0QgMTkgR1BJT19BQ1RJVkVfTE9XPjsKKwl9OworCistIHVzZSBETUE6CisJdXNhcnQwOiBzZXJpYWxAZjAwMWMwMDAgeworCQljb21wYXRpYmxlID0gImF0bWVsLGF0OTFzYW05MjYwLXVzYXJ0IjsKKwkJcmVnID0gPDB4ZjAwMWMwMDAgMHgxMDA+OworCQlpbnRlcnJ1cHRzID0gPDEyIDQgNT47CisJCWNsb2NrcyA9IDwmdXNhcnQwX2Nsaz47CisJCWNsb2NrLW5hbWVzID0gInVzYXJ0IjsKKwkJYXRtZWwsdXNlLWRtYS1yeDsKKwkJYXRtZWwsdXNlLWRtYS10eDsKKwkJZG1hcyA9IDwmZG1hMCAyIDB4Mz4sCisJCSAgICAgICA8JmRtYTAgMiAweDIwND47CisJCWRtYS1uYW1lcyA9ICJ0eCIsICJyeCI7CisJCWF0bWVsLGZpZm8tc2l6ZSA9IDwzMj47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvYXhpcyxldHJheGZzLXVhcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9heGlzLGV0cmF4ZnMtdWFydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFiM2M5ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvYXhpcyxldHJheGZzLXVhcnQudHh0CkBAIC0wLDAgKzEsMjMgQEAKK0VUUkFYIEZTIFVBUlQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJheGlzLGV0cmF4ZnMtdWFydCIKKy0gcmVnOiBvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlLgorLSBpbnRlcnJ1cHRzOiBkZXZpY2UgaW50ZXJydXB0CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHtkdHIsZHNyLHJuZyxkY2R9LWdwaW9zOiBzcGVjaWZ5IGEgR1BJTyBmb3IgRFRSL0RTUi9SSS9EQ0QKKyAgbGluZSByZXNwZWN0aXZlbHkuCisKK0V4YW1wbGU6CisKK3NlcmlhbEBiMDAyNjAwMDAgeworCWNvbXBhdGlibGUgPSAiYXhpcyxldHJheGZzLXVhcnQiOworCXJlZyA9IDwweGIwMDI2MDAwIDB4MTAwMD47CisJaW50ZXJydXB0cyA9IDw2OD47CisJc3RhdHVzID0gImRpc2FibGVkIjsKKwlkdHItZ3Bpb3MgPSA8JnN5c2dwaW8gMCBHUElPX0FDVElWRV9MT1c+OworCWRzci1ncGlvcyA9IDwmc3lzZ3BpbyAxIEdQSU9fQUNUSVZFX0xPVz47CisJcm5nLWdwaW9zID0gPCZzeXNncGlvIDIgR1BJT19BQ1RJVkVfTE9XPjsKKwlkY2QtZ3Bpb3MgPSA8JnN5c2dwaW8gMyBHUElPX0FDVElWRV9MT1c+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvYnJjbSxiY202MzQ1LXVhcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9icmNtLGJjbTYzNDUtdWFydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM1MmU1ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvYnJjbSxiY202MzQ1LXVhcnQudHh0CkBAIC0wLDAgKzEsMzAgQEAKKyogQkNNNjN4eCBVQVJUCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogImJyY20sYmNtNjM0NS11YXJ0IgorCistIHJlZzogVGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgVUFSVCByZWdpc3RlciBiYW5rLgorCistIGludGVycnVwdHM6IEEgc2luZ2xlIGludGVycnVwdCBzcGVjaWZpZXIuCisKKy0gY2xvY2tzOiBDbG9jayBkcml2aW5nIHRoZSBoYXJkd2FyZTsgdXNlZCB0byBmaWd1cmUgb3V0IHRoZSBiYXVkIHJhdGUKKyAgZGl2aXNvci4KKworRXhhbXBsZToKKworCXVhcnQwOiBzZXJpYWxAMTRlMDA1MjAgeworCQljb21wYXRpYmxlID0gImJyY20sYmNtNjM0NS11YXJ0IjsKKwkJcmVnID0gPDB4MTRlMDA1MjAgMHgxOD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JnBlcmlwaF9pbnRjPjsKKwkJaW50ZXJydXB0cyA9IDwyPjsKKwkJY2xvY2tzID0gPCZwZXJpcGhfY2xrPjsKKwl9OworCisJY2xvY2tzIHsKKwkJcGVyaXBoX2NsazogcGVyaXBoX2Nsa0AwIHsKKwkJCWNvbXBhdGlibGUgPSAiZml4ZWQtY2xvY2siOworCQkJI2Nsb2NrLWNlbGxzID0gPDA+OworCQkJY2xvY2stZnJlcXVlbmN5ID0gPDU0MDAwMDAwPjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9jYXZpdW0tdWFydC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL2Nhdml1bS11YXJ0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2E2YzM3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9jYXZpdW0tdWFydC50eHQKQEAgLTAsMCArMSwxOSBAQAorKiBVbml2ZXJzYWwgQXN5bmNocm9ub3VzIFJlY2VpdmVyL1RyYW5zbWl0dGVyIChVQVJUKQorCistIGNvbXBhdGlibGU6ICJjYXZpdW0sb2N0ZW9uLTM4NjAtdWFydCIKKworICBDb21wYXRpYmlsaXR5IHdpdGggYWxsIGNuM1hYWCwgY241WFhYIGFuZCBjbjZYWFggU09Dcy4KKworLSByZWc6IFRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIFVBUlQgcmVnaXN0ZXIgYmFuay4KKworLSBpbnRlcnJ1cHRzOiBBIHNpbmdsZSBpbnRlcnJ1cHQgc3BlY2lmaWVyLgorCistIGN1cnJlbnQtc3BlZWQ6IE9wdGlvbmFsLCB0aGUgY3VycmVudCBiaXQgcmF0ZSBpbiBiaXRzIHBlciBzZWNvbmQuCisKK0V4YW1wbGU6CisJdWFydDE6IHNlcmlhbEAxMTgwMDAwMDAwYzAwIHsKKwkJY29tcGF0aWJsZSA9ICJjYXZpdW0sb2N0ZW9uLTM4NjAtdWFydCIsIm5zMTY1NTAiOworCQlyZWcgPSA8MHgxMTgwMCAweDAwMDAwYzAwIDB4MCAweDQwMD47CisJCWN1cnJlbnQtc3BlZWQgPSA8MTE1MjAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDM1PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9jZG5zLHVhcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9jZG5zLHVhcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzZWIxNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL2NkbnMsdWFydC50eHQKQEAgLTAsMCArMSwyMCBAQAorQmluZGluZyBmb3IgQ2FkZW5jZSBVQVJUIENvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiY2Rucyx1YXJ0LXIxcDgiLCBvciAieGxueCx4dWFydHBzIgorLSByZWc6IFNob3VsZCBjb250YWluIFVBUlQgY29udHJvbGxlciByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aC4KKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gVUFSVCBjb250cm9sbGVyIGludGVycnVwdHMuCistIGNsb2NrczogTXVzdCBjb250YWluIHBoYW5kbGVzIHRvIHRoZSBVQVJUIGNsb2NrcworICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKy0gY2xvY2stbmFtZXM6IFR1cGxlIHRvIGlkZW50aWZ5IGlucHV0IGNsb2NrcywgbXVzdCBjb250YWluICJ1YXJ0X2NsayIgYW5kICJwY2xrIgorICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKworCitFeGFtcGxlOgorCXVhcnRAZTAwMDAwMDAgeworCQljb21wYXRpYmxlID0gImNkbnMsdWFydC1yMXA4IjsKKwkJY2xvY2tzID0gPCZjbGtjIDIzPiwgPCZjbGtjIDQwPjsKKwkJY2xvY2stbmFtZXMgPSAidWFydF9jbGsiLCAicGNsayI7CisJCXJlZyA9IDwweEUwMDAwMDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MCAyNyA0PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9jaXJydXMsY2xwczcxMXgtdWFydC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL2NpcnJ1cyxjbHBzNzExeC11YXJ0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWFlYjI1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9jaXJydXMsY2xwczcxMXgtdWFydC50eHQKQEAgLTAsMCArMSwzMSBAQAorKiBDaXJydXMgTG9naWMgQ0xQUzcxMVggVW5pdmVyc2FsIEFzeW5jaHJvbm91cyBSZWNlaXZlci9UcmFuc21pdHRlciAoVUFSVCkKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJjaXJydXMsY2xwczcxMXgtdWFydCIuCistIHJlZzogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UuCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIFVBUlQgVFggYW5kIFJYIGludGVycnVwdC4KKy0gY2xvY2tzOiBTaG91bGQgY29udGFpbiBVQVJUIGNvcmUgY2xvY2sgbnVtYmVyLgorLSBzeXNjb246IFBoYW5kbGUgdG8gU1lTQ09OIG5vZGUsIHdoaWNoIGNvbnRhaW4gVUFSVCBjb250cm9sIGJpdHMuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHtydHMsY3RzLGR0cixkc3Iscm5nLGRjZH0tZ3Bpb3M6IHNwZWNpZnkgYSBHUElPIGZvciBSVFMvQ1RTL0RUUi9EU1IvUkkvRENECisgIGxpbmUgcmVzcGVjdGl2ZWx5LgorCitOb3RlOiBFYWNoIFVBUlQgcG9ydCBzaG91bGQgaGF2ZSBhbiBhbGlhcyBjb3JyZWN0bHkgbnVtYmVyZWQKK2luICJhbGlhc2VzIiBub2RlLgorCitFeGFtcGxlOgorCWFsaWFzZXMgeworCQlzZXJpYWwwID0gJnVhcnQxOworCX07CisKKwl1YXJ0MTogdWFydEA4MDAwMDQ4MCB7CisJCWNvbXBhdGlibGUgPSAiY2lycnVzLGNscHM3MTF4LXVhcnQiOworCQlyZWcgPSA8MHg4MDAwMDQ4MCAweDgwPjsKKwkJaW50ZXJydXB0cyA9IDwxMiAxMz47CisJCWNsb2NrcyA9IDwmY2xrcyAxMT47CisJCXN5c2NvbiA9IDwmc3lzY29uMT47CisJCWN0cy1ncGlvcyA9IDwmc3lzZ3BpbyAwIEdQSU9fQUNUSVZFX0xPVz47CisJCWRzci1ncGlvcyA9IDwmc3lzZ3BpbyAxIEdQSU9fQUNUSVZFX0xPVz47CisJCWRjZC1ncGlvcyA9IDwmc3lzZ3BpbyAyIEdQSU9fQUNUSVZFX0xPVz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvZGlnaWNvbG9yLXVzYXJ0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvZGlnaWNvbG9yLXVzYXJ0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDNlZGU2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9kaWdpY29sb3ItdXNhcnQudHh0CkBAIC0wLDAgKzEsMjcgQEAKK0JpbmRpbmcgZm9yIENvbmV4YW50IERpZ2ljb2xvciBVU0FSVAorCitOb3RlOiB0aGlzIGJpbmRpbmcgaXMgb25seSBhcHBsaWNhYmxlIGZvciB1c2luZyB0aGUgVVNBUlQgcGVyaXBoZXJhbCBhcworVUFSVC4gVVNBUlQgYWxzbyBzdXBwb3J0IHN5bmNocm9ub3VzIHNlcmlhbCBwcm90b2NvbHMgbGlrZSBTUEkgYW5kIEkyUy4gVXNlCit0aGUgYmluZGluZyB0aGF0IG1hdGNoZXMgdGhlIHdpcmluZyBvZiB5b3VyIHN5c3RlbS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiY254dCxjeDkyNzU1LXVzYXJ0Ii4KKy0gcmVnOiBTaG91bGQgY29udGFpbiBVU0FSVCBjb250cm9sbGVyIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoLgorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBhIHNpbmdsZSBVU0FSVCBjb250cm9sbGVyIGludGVycnVwdC4KKy0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gcGhhbmRsZXMgdG8gdGhlIFVTQVJUIGNsb2NrCisgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorCitOb3RlOiBFYWNoIFVBUlQgcG9ydCBzaG91bGQgaGF2ZSBhbiBhbGlhcyBjb3JyZWN0bHkgbnVtYmVyZWQKK2luICJhbGlhc2VzIiBub2RlLgorCitFeGFtcGxlOgorCWFsaWFzZXMgeworCQlzZXJpYWwwID0gJnVhcnQwOworCX07CisKKwl1YXJ0MDogdWFydEBmMDAwMDc0MCB7CisJCWNvbXBhdGlibGUgPSAiY254dCxjeDkyNzU1LXVzYXJ0IjsKKwkJcmVnID0gPDB4ZjAwMDA3NDAgMHgyMD47CisJCWNsb2NrcyA9IDwmbWFpbl9jbGs+OworCQlpbnRlcnJ1cHRzID0gPDQ0PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9lZm0zMi11YXJ0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvZWZtMzItdWFydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFkYmFiMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvZWZtMzItdWFydC50eHQKQEAgLTAsMCArMSwyMCBAQAorKiBFbmVyZ3ltaWNybyBlZm0zMiBVQVJUCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImVuZXJneW1pY3JvLGVmbTMyLXVhcnQiCistIHJlZyA6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0CistIGludGVycnVwdHMgOiBTaG91bGQgY29udGFpbiB1YXJ0IGludGVycnVwdAorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBlbmVyZ3ltaWNybyxsb2NhdGlvbiA6IERlY2lkZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBVU0FSVCBJL08gcGlucy4KKyAgQWxsb3dlZCByYW5nZSA6IFswIC4uIDVdCisgIERlZmF1bHQ6IDAKKworRXhhbXBsZToKKwordWFydEAweDQwMDBjNDAwIHsKKwljb21wYXRpYmxlID0gImVuZXJneW1pY3JvLGVmbTMyLXVhcnQiOworCXJlZyA9IDwweDQwMDBjNDAwIDB4NDAwPjsKKwlpbnRlcnJ1cHRzID0gPDE1PjsKKwllbmVyZ3ltaWNybyxsb2NhdGlvbiA9IDwwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL2ZzbC1pbXgtdWFydC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL2ZzbC1pbXgtdWFydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVhZTFmYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvZnNsLWlteC11YXJ0LnR4dApAQCAtMCwwICsxLDI5IEBACisqIEZyZWVzY2FsZSBpLk1YIFVuaXZlcnNhbCBBc3luY2hyb25vdXMgUmVjZWl2ZXIvVHJhbnNtaXR0ZXIgKFVBUlQpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImZzbCw8c29jPi11YXJ0IgorLSByZWcgOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorLSBpbnRlcnJ1cHRzIDogU2hvdWxkIGNvbnRhaW4gdWFydCBpbnRlcnJ1cHQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gZnNsLHVhcnQtaGFzLXJ0c2N0cyA6IEluZGljYXRlIHRoZSB1YXJ0IGhhcyBydHMgYW5kIGN0cworLSBmc2wsaXJkYS1tb2RlIDogSW5kaWNhdGUgdGhlIHVhcnQgc3VwcG9ydHMgaXJkYSBtb2RlCistIGZzbCxkdGUtbW9kZSA6IEluZGljYXRlIHRoZSB1YXJ0IHdvcmtzIGluIERURSBtb2RlLiBUaGUgdWFydCB3b3JrcworICAgICAgICAgICAgICAgICAgaXMgRENFIG1vZGUgYnkgZGVmYXVsdC4KKworTm90ZTogRWFjaCB1YXJ0IGNvbnRyb2xsZXIgc2hvdWxkIGhhdmUgYW4gYWxpYXMgY29ycmVjdGx5IG51bWJlcmVkCitpbiAiYWxpYXNlcyIgbm9kZS4KKworRXhhbXBsZToKKworYWxpYXNlcyB7CisJc2VyaWFsMCA9ICZ1YXJ0MTsKK307CisKK3VhcnQxOiBzZXJpYWxANzNmYmMwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDUxLXVhcnQiLCAiZnNsLGlteDIxLXVhcnQiOworCXJlZyA9IDwweDczZmJjMDAwIDB4NDAwMD47CisJaW50ZXJydXB0cyA9IDwzMT47CisJZnNsLHVhcnQtaGFzLXJ0c2N0czsKKwlmc2wsZHRlLW1vZGU7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9mc2wtbHB1YXJ0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvZnNsLWxwdWFydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk1MDA1ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvZnNsLWxwdWFydC50eHQKQEAgLTAsMCArMSwzMSBAQAorKiBGcmVlc2NhbGUgbG93IHBvd2VyIHVuaXZlcnNhbCBhc3luY2hyb25vdXMgcmVjZWl2ZXIvdHJhbnNtaXR0ZXIgKGxwdWFydCkKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6CisgIC0gImZzbCx2ZjYxMC1scHVhcnQiIGZvciBscHVhcnQgY29tcGF0aWJsZSB3aXRoIHRoZSBvbmUgaW50ZWdyYXRlZAorICAgIG9uIFZ5YnJpZCB2ZjYxMCBTb0Mgd2l0aCA4LWJpdCByZWdpc3RlciBvcmdhbml6YXRpb24KKyAgLSAiZnNsLGxzMTAyMWEtbHB1YXJ0IiBmb3IgbHB1YXJ0IGNvbXBhdGlibGUgd2l0aCB0aGUgb25lIGludGVncmF0ZWQKKyAgICBvbiBMUzEwMjFBIFNvQyB3aXRoIDMyLWJpdCBiaWctZW5kaWFuIHJlZ2lzdGVyIG9yZ2FuaXphdGlvbgorLSByZWcgOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorLSBpbnRlcnJ1cHRzIDogU2hvdWxkIGNvbnRhaW4gdWFydCBpbnRlcnJ1cHQKKy0gY2xvY2tzIDogcGhhbmRsZSArIGNsb2NrIHNwZWNpZmllciBwYWlycywgb25lIGZvciBlYWNoIGVudHJ5IGluIGNsb2NrLW5hbWVzCistIGNsb2NrLW5hbWVzIDogc2hvdWxkIGNvbnRhaW46ICJpcGciIC0gdGhlIHVhcnQgY2xvY2sKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gZG1hczogQSBsaXN0IG9mIHR3byBkbWEgc3BlY2lmaWVycywgb25lIGZvciBlYWNoIGVudHJ5IGluIGRtYS1uYW1lcy4KKy0gZG1hLW5hbWVzOiBzaG91bGQgY29udGFpbiAidHgiIGFuZCAicngiLgorCitOb3RlOiBPcHRpb25hbCBwcm9wZXJ0aWVzIGZvciBETUEgc3VwcG9ydC4gV3JpdGUgdGhlbSBib3RoIG9yIGJvdGggbm90LgorCitFeGFtcGxlOgorCit1YXJ0MDogc2VyaWFsQDQwMDI3MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsdmY2MTAtbHB1YXJ0IjsKKwkJcmVnID0gPDB4NDAwMjcwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDYxIDB4MDA+OworCQljbG9ja3MgPSA8JmNsa3MgVkY2MTBfQ0xLX1VBUlQwPjsKKwkJY2xvY2stbmFtZXMgPSAiaXBnIjsKKwkJZG1hcyA9IDwmZWRtYTAgMCAyPiwKKwkJCTwmZWRtYTAgMCAzPjsKKwkJZG1hLW5hbWVzID0gInJ4IiwidHgiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL2ZzbC1teHMtYXVhcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9mc2wtbXhzLWF1YXJ0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzQwOGM4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9mc2wtbXhzLWF1YXJ0LnR4dApAQCAtMCwwICsxLDQ1IEBACisqIEZyZWVzY2FsZSBNWFMgQXBwbGljYXRpb24gVUFSVCAoQVVBUlQpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImZzbCw8c29jPi1hdWFydCIuIFRoZSBzdXBwb3J0ZWQgU29DcyBpbmNsdWRlCisgIGlteDIzIGFuZCBpbXgyOC4KKy0gcmVnIDogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKy0gaW50ZXJydXB0cyA6IFNob3VsZCBjb250YWluIHRoZSBhdWFydCBpbnRlcnJ1cHQgbnVtYmVycworLSBkbWFzOiBETUEgc3BlY2lmaWVyLCBjb25zaXN0aW5nIG9mIGEgcGhhbmRsZSB0byBETUEgY29udHJvbGxlciBub2RlCisgIGFuZCBBVUFSVCBETUEgY2hhbm5lbCBJRC4KKyAgUmVmZXIgdG8gZG1hLnR4dCBhbmQgZnNsLW14cy1kbWEudHh0IGZvciBkZXRhaWxzLgorLSBkbWEtbmFtZXM6ICJyeCIgZm9yIFJYIGNoYW5uZWwsICJ0eCIgZm9yIFRYIGNoYW5uZWwuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGZzbCx1YXJ0LWhhcy1ydHNjdHMgOiBJbmRpY2F0ZSB0aGUgVUFSVCBoYXMgUlRTIGFuZCBDVFMgbGluZXMKKyAgZm9yIGhhcmR3YXJlIGZsb3cgY29udHJvbCwKKwlpdCBhbHNvIG1lYW5zIHlvdSBlbmFibGUgdGhlIERNQSBzdXBwb3J0IGZvciB0aGlzIFVBUlQuCistIHtydHMsY3RzLGR0cixkc3Iscm5nLGRjZH0tZ3Bpb3M6IHNwZWNpZnkgYSBHUElPIGZvciBSVFMvQ1RTL0RUUi9EU1IvUkkvRENECisgIGxpbmUgcmVzcGVjdGl2ZWx5LiBJdCB3aWxsIHVzZSBzcGVjaWZpZWQgUElPIGluc3RlYWQgb2YgdGhlIHBlcmlwaGVyYWwKKyAgZnVuY3Rpb24gcGluIGZvciB0aGUgVVNBUlQgZmVhdHVyZS4KKyAgSWYgdW5zdXJlLCBkb24ndCBzcGVjaWZ5IHRoaXMgcHJvcGVydHkuCisKK0V4YW1wbGU6CithdWFydDA6IHNlcmlhbEA4MDA2YTAwMCB7CisJY29tcGF0aWJsZSA9ICJmc2wsaW14MjgtYXVhcnQiLCAiZnNsLGlteDIzLWF1YXJ0IjsKKwlyZWcgPSA8MHg4MDA2YTAwMCAweDIwMDA+OworCWludGVycnVwdHMgPSA8MTEyPjsKKwlkbWFzID0gPCZkbWFfYXBieCA4PiwgPCZkbWFfYXBieCA5PjsKKwlkbWEtbmFtZXMgPSAicngiLCAidHgiOworCWN0cy1ncGlvcyA9IDwmZ3BpbzEgMTUgR1BJT19BQ1RJVkVfTE9XPjsKKwlkc3ItZ3Bpb3MgPSA8JmdwaW8xIDE2IEdQSU9fQUNUSVZFX0xPVz47CisJZGNkLWdwaW9zID0gPCZncGlvMSAxNyBHUElPX0FDVElWRV9MT1c+OworfTsKKworTm90ZTogRWFjaCBhdWFydCBwb3J0IHNob3VsZCBoYXZlIGFuIGFsaWFzIGNvcnJlY3RseSBudW1iZXJlZCBpbiAiYWxpYXNlcyIKK25vZGUuCisKK0V4YW1wbGU6CisKK2FsaWFzZXMgeworCXNlcmlhbDAgPSAmYXVhcnQwOworCXNlcmlhbDEgPSAmYXVhcnQxOworCXNlcmlhbDIgPSAmYXVhcnQyOworCXNlcmlhbDMgPSAmYXVhcnQzOworCXNlcmlhbDQgPSAmYXVhcnQ0OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvaW5nZW5pYyx1YXJ0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvaW5nZW5pYyx1YXJ0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmNiN2ZlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9pbmdlbmljLHVhcnQudHh0CkBAIC0wLDAgKzEsMjMgQEAKKyogSW5nZW5pYyBTb0MgVUFSVAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogImluZ2VuaWMsano0NzQwLXVhcnQiLCAiaW5nZW5pYyxqejQ3NjAtdWFydCIsCisJImluZ2VuaWMsano0Nzc1LXVhcnQiIG9yICJpbmdlbmljLGp6NDc4MC11YXJ0IgorLSByZWcgOiBvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlLgorLSBpbnRlcnJ1cHRzIDogc2hvdWxkIGNvbnRhaW4gdWFydCBpbnRlcnJ1cHQuCistIGNsb2NrcyA6IHBoYW5kbGVzIHRvIHRoZSBtb2R1bGUgJiBiYXVkIGNsb2Nrcy4KKy0gY2xvY2stbmFtZXM6IHR1cGxlIGxpc3RpbmcgaW5wdXQgY2xvY2sgbmFtZXMuCisJUmVxdWlyZWQgZWxlbWVudHM6ICJiYXVkIiwgIm1vZHVsZSIKKworRXhhbXBsZToKKwordWFydDA6IHNlcmlhbEAxMDAzMDAwMCB7CisJY29tcGF0aWJsZSA9ICJpbmdlbmljLGp6NDc0MC11YXJ0IjsKKwlyZWcgPSA8MHgxMDAzMDAwMCAweDEwMD47CisKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpbnRjPjsKKwlpbnRlcnJ1cHRzID0gPDk+OworCisJY2xvY2tzID0gPCZleHQ+LCA8JmNndSBKWjQ3NDBfQ0xLX1VBUlQwPjsKKwljbG9jay1uYW1lcyA9ICJiYXVkIiwgIm1vZHVsZSI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9sYW50aXFfYXNjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvbGFudGlxX2FzYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI3ODU5MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvbGFudGlxX2FzYy50eHQKQEAgLTAsMCArMSwxNiBAQAorTGFudGlxIFNvQyBBU0Mgc2VyaWFsIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAibGFudGlxLGFzYyIKKy0gcmVnIDogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKy0gaW50ZXJydXB0czogdGhlIDMgKHR4IHJ4IGVycikgaW50ZXJydXB0IG51bWJlcnMuIFRoZSBpbnRlcnJ1cHQgc3BlY2lmaWVyCisgIGRlcGVuZHMgb24gdGhlIGludGVycnVwdC1wYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIuCisKK0V4YW1wbGU6CisKK2FzYzE6IHNlcmlhbEBFMTAwQzAwIHsKKwljb21wYXRpYmxlID0gImxhbnRpcSxhc2MiOworCXJlZyA9IDwweEUxMDBDMDAgMHg0MDA+OworCWludGVycnVwdC1wYXJlbnQgPSA8JmljdTA+OworCWludGVycnVwdHMgPSA8MTEyIDExMyAxMTQ+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvbWF4aW0sbWF4MzEweC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL21heGltLG1heDMxMHgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzYTkxOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL21heGltLG1heDMxMHgudHh0CkBAIC0wLDAgKzEsMzYgQEAKKyogTWF4aW0gTUFYMzEwWCBhZHZhbmNlZCBVbml2ZXJzYWwgQXN5bmNocm9ub3VzIFJlY2VpdmVyLVRyYW5zbWl0dGVyIChVQVJUKQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisgIC0gIm1heGltLG1heDMxMDciIGZvciBNYXhpbSBNQVgzMTA3LAorICAtICJtYXhpbSxtYXgzMTA4IiBmb3IgTWF4aW0gTUFYMzEwOCwKKyAgLSAibWF4aW0sbWF4MzEwOSIgZm9yIE1heGltIE1BWDMxMDksCisgIC0gIm1heGltLG1heDE0ODMwIiBmb3IgTWF4aW0gTUFYMTQ4MzAuCistIHJlZzogU1BJIGNoaXAgc2VsZWN0IG51bWJlci4KKy0gaW50ZXJydXB0LXBhcmVudDogVGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGF0CisgIHNlcnZpY2VzIGludGVycnVwdHMgZm9yIHRoaXMgSUMuCistIGludGVycnVwdHM6IFNwZWNpZmllcyB0aGUgaW50ZXJydXB0IHNvdXJjZSBvZiB0aGUgcGFyZW50IGludGVycnVwdAorICBjb250cm9sbGVyLiBUaGUgZm9ybWF0IG9mIHRoZSBpbnRlcnJ1cHQgc3BlY2lmaWVyIGRlcGVuZHMgb24gdGhlCisgIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlci4KKy0gY2xvY2tzOiBwaGFuZGxlIHRvIHRoZSBJQyBzb3VyY2UgY2xvY2suCistIGNsb2NrLW5hbWVzOiBTaG91bGQgYmUgInh0YWwiIGlmIGNsb2NrIGlzIGFuIGV4dGVybmFsIGNyeXN0YWwgb3IKKyAgIm9zYyIgaWYgYW4gZXh0ZXJuYWwgY2xvY2sgc291cmNlIGlzIHVzZWQuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGdwaW8tY29udHJvbGxlcjogTWFya3MgdGhlIGRldmljZSBub2RlIGFzIGEgR1BJTyBjb250cm9sbGVyLgorLSAjZ3Bpby1jZWxsczogU2hvdWxkIGJlIHR3by4gVGhlIGZpcnN0IGNlbGwgaXMgdGhlIEdQSU8gbnVtYmVyIGFuZAorICB0aGUgc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBHUElPIHBvbGFyaXR5OgorICAgIDAgPSBhY3RpdmUgaGlnaCwKKyAgICAxID0gYWN0aXZlIGxvdy4KKworRXhhbXBsZToKKwltYXgxNDgzMDogbWF4MTQ4MzBAMCB7CisJCWNvbXBhdGlibGUgPSAibWF4aW0sbWF4MTQ4MzAiOworCQlyZWcgPSA8MD47CisJCWNsb2NrcyA9IDwmY2xrMjBtPjsKKwkJY2xvY2stbmFtZXMgPSAib3NjIjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzM+OworCQlpbnRlcnJ1cHRzID0gPDcgSVJRX1RZUEVfRURHRV9GQUxMSU5HPjsKKwkJZ3Bpby1jb250cm9sbGVyOworCQkjZ3Bpby1jZWxscyA9IDwyPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9tcnZsLHB4YS1zc3AudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9tcnZsLHB4YS1zc3AudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMGNjMDYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL21ydmwscHhhLXNzcC50eHQKQEAgLTAsMCArMSw2NCBAQAorRGV2aWNlIHRyZWUgYmluZGluZ3MgZm9yIE1hcnZlbGwgUFhBIFNTUCBwb3J0cworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisJLSBjb21wYXRpYmxlOglNdXN0IGJlIG9uZSBvZgorCQkJCW1ydmwscHhhMjV4LXNzcAorCQkJCW12cmwscHhhMjV4LW5zc3AKKwkJCQltcnZsLHB4YTI3eC1zc3AKKwkJCQltcnZsLHB4YTN4eC1zc3AKKwkJCQltdnJsLHB4YTE2OC1zc3AKKwkJCQltcnZsLHB4YTkxMC1zc3AKKwkJCQltcnZsLGNlNDEwMC1zc3AKKworCS0gcmVnOgkJVGhlIG1lbW9yeSBiYXNlCisJLSBkbWFzOgkJVHdvIGRtYSBwaGFuZGxlcywgb25lIGZvciByeCwgb25lIGZvciB0eAorCS0gZG1hLW5hbWVzOglNdXN0IGJlICJyeCIsICJ0eCIKKworCitFeGFtcGxlIGZvciBQWEEzeHg6CisKKwlzc3AwOiBzc3BANDEwMDAwMDAgeworCQljb21wYXRpYmxlID0gIm1ydmwscHhhM3h4LXNzcCI7CisJCXJlZyA9IDwweDQxMDAwMDAwIDB4NDA+OworCQlzc3AtaWQgPSA8MT47CisJCWludGVycnVwdHMgPSA8MjQ+OworCQljbG9jay1uYW1lcyA9ICJweGEyN3gtc3NwLjAiOworCQlkbWFzID0gPCZkbWEgMTMKKwkJCSZkbWEgMTQ+OworCQlkbWEtbmFtZXMgPSAicngiLCAidHgiOworCX07CisKKwlzc3AxOiBzc3BANDE3MDAwMDAgeworCQljb21wYXRpYmxlID0gIm1ydmwscHhhM3h4LXNzcCI7CisJCXJlZyA9IDwweDQxNzAwMDAwIDB4NDA+OworCQlzc3AtaWQgPSA8Mj47CisJCWludGVycnVwdHMgPSA8MTY+OworCQljbG9jay1uYW1lcyA9ICJweGEyN3gtc3NwLjEiOworCQlkbWFzID0gPCZkbWEgMTUKKwkJCSZkbWEgMTY+OworCQlkbWEtbmFtZXMgPSAicngiLCAidHgiOworCX07CisKKwlzc3AyOiBzc3BANDE5MDAwMDAgeworCQljb21wYXRpYmwzID0gIm1ydmwscHhhM3h4LXNzcCI7CisJCXJlZyA9IDwweDQxOTAwMDAwIDB4NDA+OworCQlzc3AtaWQgPSA8Mz47CisJCWludGVycnVwdHMgPSA8MD47CisJCWNsb2NrLW5hbWVzID0gInB4YTI3eC1zc3AuMiI7CisJCWRtYXMgPSA8JmRtYSA2NgorCQkJJmRtYSA2Nz47CisJCWRtYS1uYW1lcyA9ICJyeCIsICJ0eCI7CisJfTsKKworCXNzcDM6IHNzcEA0MWEwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAibXJ2bCxweGEzeHgtc3NwIjsKKwkJcmVnID0gPDB4NDFhMDAwMDAgMHg0MD47CisJCXNzcC1pZCA9IDw0PjsKKwkJaW50ZXJydXB0cyA9IDwxMz47CisJCWNsb2NrLW5hbWVzID0gInB4YTI3eC1zc3AuMyI7CisJCWRtYXMgPSA8JmRtYSAyCisJCQkmZG1hIDM+OworCQlkbWEtbmFtZXMgPSAicngiLCAidHgiOworCX07CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvbXJ2bC1zZXJpYWwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9tcnZsLXNlcmlhbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc0NDM0MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvbXJ2bC1zZXJpYWwudHh0CkBAIC0wLDAgKzEsNCBAQAorUFhBIFVBUlQgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJtcnZsLG1tcC11YXJ0IiBvciAibXJ2bCxweGEtdWFydCIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL210ay11YXJ0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvbXRrLXVhcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkNDdhZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL210ay11YXJ0LnR4dApAQCAtMCwwICsxLDM2IEBACisqIE1lZGlhdGVrIFVuaXZlcnNhbCBBc3luY2hyb25vdXMgUmVjZWl2ZXIvVHJhbnNtaXR0ZXIgKFVBUlQpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgc2hvdWxkIGNvbnRhaW46CisgICogIm1lZGlhdGVrLG10ODEzNS11YXJ0IiBmb3IgTVQ4MTM1IGNvbXBhdGlibGUgVUFSVFMKKyAgKiAibWVkaWF0ZWssbXQ4MTI3LXVhcnQiIGZvciBNVDgxMjcgY29tcGF0aWJsZSBVQVJUUworICAqICJtZWRpYXRlayxtdDgxNzMtdWFydCIgZm9yIE1UODE3MyBjb21wYXRpYmxlIFVBUlRTCisgICogIm1lZGlhdGVrLG10Njc5NS11YXJ0IiBmb3IgTVQ2Nzk1IGNvbXBhdGlibGUgVUFSVFMKKyAgKiAibWVkaWF0ZWssbXQ2NTg5LXVhcnQiIGZvciBNVDY1ODkgY29tcGF0aWJsZSBVQVJUUworICAqICJtZWRpYXRlayxtdDY1ODItdWFydCIgZm9yIE1UNjU4MiBjb21wYXRpYmxlIFVBUlRTCisgICogIm1lZGlhdGVrLG10NjU4MC11YXJ0IiBmb3IgTVQ2NTgwIGNvbXBhdGlibGUgVUFSVFMKKyAgKiAibWVkaWF0ZWssbXQ2NTc3LXVhcnQiIGZvciBhbGwgY29tcGF0aWJsZSBVQVJUUyAoTVQ4MTczLCBNVDY3OTUsCisgICAgICAgIE1UNjU4OSwgTVQ2NTgyLCBNVDY1ODAsIE1UNjU3NykKKworLSByZWc6IFRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIFVBUlQgcmVnaXN0ZXIgYmFuay4KKworLSBpbnRlcnJ1cHRzOiBBIHNpbmdsZSBpbnRlcnJ1cHQgc3BlY2lmaWVyLgorCistIGNsb2NrcyA6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKyAgU2VlIC4uL2Nsb2Nrcy9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCistIGNsb2NrLW5hbWVzOgorICAtICJiYXVkIjogVGhlIGNsb2NrIHRoZSBiYXVkcmF0ZSBpcyBkZXJpdmVkIGZyb20KKyAgLSAiYnVzIjogVGhlIGJ1cyBjbG9jayBmb3IgcmVnaXN0ZXIgYWNjZXNzZXMgKG9wdGlvbmFsKQorCitGb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIGRldmljZSB0cmVlcyBhbiB1bm5hbWVkIGNsb2NrIGlzIHVzZWQgZm9yIHRoZQorYmF1ZCBjbG9jayBpZiB0aGUgYmF1ZGNsayBkb2VzIG5vdCBleGlzdC4gRG8gbm90IHVzZSB0aGlzIGZvciBuZXcgZGVzaWducy4KKworRXhhbXBsZToKKworCXVhcnQwOiBzZXJpYWxAMTEwMDYwMDAgeworCQljb21wYXRpYmxlID0gIm1lZGlhdGVrLG10NjU4OS11YXJ0IiwgIm1lZGlhdGVrLG10NjU3Ny11YXJ0IjsKKwkJcmVnID0gPDB4MTEwMDYwMDAgMHg0MDA+OworCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgNTEgSVJRX1RZUEVfTEVWRUxfTE9XPjsKKwkJY2xvY2tzID0gPCZ1YXJ0X2Nsaz4sIDwmYnVzX2Nsaz47CisJCWNsb2NrLW5hbWVzID0gImJhdWQiLCAiYnVzIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9udmlkaWEsdGVncmEyMC1oc3VhcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9udmlkaWEsdGVncmEyMC1oc3VhcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0NTg1MGMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL252aWRpYSx0ZWdyYTIwLWhzdWFydC50eHQKQEAgLTAsMCArMSwzNyBAQAorTlZJRElBIFRlZ3JhMjAvVGVncmEzMCBoaWdoIHNwZWVkIChETUEgYmFzZWQpIFVBUlQgY29udHJvbGxlciBkcml2ZXIuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgIm52aWRpYSx0ZWdyYTMwLWhzdWFydCIsICJudmlkaWEsdGVncmEyMC1oc3VhcnQiLgorLSByZWc6IFNob3VsZCBjb250YWluIFVBUlQgY29udHJvbGxlciByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aC4KKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gVUFSVCBjb250cm9sbGVyIGludGVycnVwdHMuCistIGNsb2NrczogTXVzdCBjb250YWluIG9uZSBlbnRyeSwgZm9yIHRoZSBtb2R1bGUgY2xvY2suCisgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorLSByZXNldHMgOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gcmVzZXQtbmFtZXMuCisgIFNlZSAuLi9yZXNldC9yZXNldC50eHQgZm9yIGRldGFpbHMuCistIHJlc2V0LW5hbWVzIDogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgLSBzZXJpYWwKKy0gZG1hcyA6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKyAgU2VlIC4uL2RtYS9kbWEudHh0IGZvciBkZXRhaWxzLgorLSBkbWEtbmFtZXMgOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAtIHJ4CisgIC0gdHgKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gbnZpZGlhLGVuYWJsZS1tb2RlbS1pbnRlcnJ1cHQ6IEVuYWJsZSBtb2RlbSBpbnRlcnJ1cHRzLiBTaG91bGQgYmUgZW5hYmxlCisJCW9ubHkgaWYgYWxsIDggbGluZXMgb2YgVUFSVCBjb250cm9sbGVyIGFyZSBwaW5tdXhlZC4KKworRXhhbXBsZToKKworc2VyaWFsQDcwMDA2MDAwIHsKKwljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTMwLWhzdWFydCIsICJudmlkaWEsdGVncmEyMC1oc3VhcnQiOworCXJlZyA9IDwweDcwMDA2MDAwIDB4NDA+OworCXJlZy1zaGlmdCA9IDwyPjsKKwlpbnRlcnJ1cHRzID0gPDAgMzYgMHgwND47CisJbnZpZGlhLGVuYWJsZS1tb2RlbS1pbnRlcnJ1cHQ7CisJY2xvY2tzID0gPCZ0ZWdyYV9jYXIgNj47CisJcmVzZXRzID0gPCZ0ZWdyYV9jYXIgNj47CisJcmVzZXQtbmFtZXMgPSAic2VyaWFsIjsKKwlkbWFzID0gPCZhcGJkbWEgOD4sIDwmYXBiZG1hIDg+OworCWRtYS1uYW1lcyA9ICJyeCIsICJ0eCI7CisJc3RhdHVzID0gImRpc2FibGVkIjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL254cCxscGMxODUwLXVhcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9ueHAsbHBjMTg1MC11YXJ0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGUyM2U2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9ueHAsbHBjMTg1MC11YXJ0LnR4dApAQCAtMCwwICsxLDI4IEBACisqIE5YUCBMUEMxODUwIFVBUlQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZQk6ICJueHAsbHBjMTg1MC11YXJ0IiwgIm5zMTY1NTBhIi4KKy0gcmVnCQk6IG9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UuCistIGludGVycnVwdHMJOiBzaG91bGQgY29udGFpbiB1YXJ0IGludGVycnVwdC4KKy0gY2xvY2tzCTogcGhhbmRsZSB0byB0aGUgaW5wdXQgY2xvY2tzLgorLSBjbG9jay1uYW1lcwk6IHJlcXVpcmVkIGVsZW1lbnRzOiAidWFydGNsayIsICJyZWciLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBkbWFzCQk6IFR3byBvciBtb3JlIERNQSBjaGFubmVsIHNwZWNpZmllcnMgZm9sbG93aW5nIHRoZQorCQkgIGNvbnZlbnRpb24gb3V0bGluZWQgaW4gYmluZGluZ3MvZG1hL2RtYS50eHQKKy0gZG1hLW5hbWVzCTogTmFtZXMgZm9yIHRoZSBkbWEgY2hhbm5lbHMsIGlmIHByZXNlbnQuIFRoZXJlIG11c3QKKwkJICBiZSBhdCBsZWFzdCBvbmUgY2hhbm5lbCBuYW1lZCAidHgiIGZvciB0cmFuc21pdAorCQkgIGFuZCBuYW1lZCAicngiIGZvciByZWNlaXZlLgorCitTaW5jZSBpdCdzIGFsc28gcG9zc2libGUgdG8gYWxzbyB1c2UgdGhlIG9mX3NlcmlhbC5jIGRyaXZlciBhbGwKK3BhcmFtZXRlcnMgZnJvbSA4MjUwLnR4dCBhbHNvIGFwcGx5IGJ1dCBhcmUgb3B0aW9uYWwuCisKK0V4YW1wbGU6Cit1YXJ0MDogc2VyaWFsQDQwMDgxMDAwIHsKKwljb21wYXRpYmxlID0gIm54cCxscGMxODUwLXVhcnQiLCAibnMxNjU1MGEiOworCXJlZyA9IDwweDQwMDgxMDAwIDB4MTAwMD47CisJcmVnLXNoaWZ0ID0gPDI+OworCWludGVycnVwdHMgPSA8MjQ+OworCWNsb2NrcyA9IDwmY2N1MiBDTEtfQVBCMF9VQVJUMD4sIDwmY2N1MSBDTEtfQ1BVX1VBUlQwPjsKKwljbG9jay1uYW1lcyA9ICJ1YXJ0Y2xrIiwgInJlZyI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9ueHAsc2MxNmlzN3h4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvbnhwLHNjMTZpczd4eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJmZTUzNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvbnhwLHNjMTZpczd4eC50eHQKQEAgLTAsMCArMSw3MCBAQAorKiBOWFAgU0MxNklTN3h4IGFkdmFuY2VkIFVuaXZlcnNhbCBBc3luY2hyb25vdXMgUmVjZWl2ZXItVHJhbnNtaXR0ZXIgKFVBUlQpCisqIGkyYyBhcyBidXMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorICAtICJueHAsc2MxNmlzNzQwIiBmb3IgTlhQIFNDMTZJUzc0MCwKKyAgLSAibnhwLHNjMTZpczc0MSIgZm9yIE5YUCBTQzE2SVM3NDEsCisgIC0gIm54cCxzYzE2aXM3NTAiIGZvciBOWFAgU0MxNklTNzUwLAorICAtICJueHAsc2MxNmlzNzUyIiBmb3IgTlhQIFNDMTZJUzc1MiwKKyAgLSAibnhwLHNjMTZpczc2MCIgZm9yIE5YUCBTQzE2SVM3NjAsCisgIC0gIm54cCxzYzE2aXM3NjIiIGZvciBOWFAgU0MxNklTNzYyLgorLSByZWc6IEkyQyBhZGRyZXNzIG9mIHRoZSBTQzE2SVM3eHggZGV2aWNlLgorLSBpbnRlcnJ1cHQtcGFyZW50OiBUaGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyIHRoYXQKKyAgc2VydmljZXMgaW50ZXJydXB0cyBmb3IgdGhpcyBJQy4KKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gdGhlIFVBUlQgaW50ZXJydXB0CistIGNsb2NrczogUmVmZXJlbmNlIHRvIHRoZSBJQyBzb3VyY2UgY2xvY2suCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGdwaW8tY29udHJvbGxlcjogTWFya3MgdGhlIGRldmljZSBub2RlIGFzIGEgR1BJTyBjb250cm9sbGVyLgorLSAjZ3Bpby1jZWxsczogU2hvdWxkIGJlIHR3by4gVGhlIGZpcnN0IGNlbGwgaXMgdGhlIEdQSU8gbnVtYmVyIGFuZAorICB0aGUgc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBHUElPIHBvbGFyaXR5OgorICAgIDAgPSBhY3RpdmUgaGlnaCwKKyAgICAxID0gYWN0aXZlIGxvdy4KKworRXhhbXBsZToKKyAgICAgICAgc2MxNmlzNzUwOiBzYzE2aXM3NTBANTEgeworICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAibnhwLHNjMTZpczc1MCI7CisgICAgICAgICAgICAgICAgcmVnID0gPDB4NTE+OworICAgICAgICAgICAgICAgIGNsb2NrcyA9IDwmY2xrMjBtPjsKKyAgICAgICAgICAgICAgICBpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvMz47CisgICAgICAgICAgICAgICAgaW50ZXJydXB0cyA9IDw3IElSUV9UWVBFX0VER0VfRkFMTElORz47CisgICAgICAgICAgICAgICAgZ3Bpby1jb250cm9sbGVyOworICAgICAgICAgICAgICAgICNncGlvLWNlbGxzID0gPDI+OworICAgICAgICB9OworCisqIHNwaSBhcyBidXMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorICAtICJueHAsc2MxNmlzNzQwIiBmb3IgTlhQIFNDMTZJUzc0MCwKKyAgLSAibnhwLHNjMTZpczc0MSIgZm9yIE5YUCBTQzE2SVM3NDEsCisgIC0gIm54cCxzYzE2aXM3NTAiIGZvciBOWFAgU0MxNklTNzUwLAorICAtICJueHAsc2MxNmlzNzUyIiBmb3IgTlhQIFNDMTZJUzc1MiwKKyAgLSAibnhwLHNjMTZpczc2MCIgZm9yIE5YUCBTQzE2SVM3NjAsCisgIC0gIm54cCxzYzE2aXM3NjIiIGZvciBOWFAgU0MxNklTNzYyLgorLSByZWc6IFNQSSBjaGlwIHNlbGVjdCBudW1iZXIuCistIGludGVycnVwdC1wYXJlbnQ6IFRoZSBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgdGhhdAorICBzZXJ2aWNlcyBpbnRlcnJ1cHRzIGZvciB0aGlzIElDLgorLSBpbnRlcnJ1cHRzOiBTcGVjaWZpZXMgdGhlIGludGVycnVwdCBzb3VyY2Ugb2YgdGhlIHBhcmVudCBpbnRlcnJ1cHQKKyAgY29udHJvbGxlci4gVGhlIGZvcm1hdCBvZiB0aGUgaW50ZXJydXB0IHNwZWNpZmllciBkZXBlbmRzIG9uIHRoZQorICBwYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIuCistIGNsb2NrczogcGhhbmRsZSB0byB0aGUgSUMgc291cmNlIGNsb2NrLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBncGlvLWNvbnRyb2xsZXI6IE1hcmtzIHRoZSBkZXZpY2Ugbm9kZSBhcyBhIEdQSU8gY29udHJvbGxlci4KKy0gI2dwaW8tY2VsbHM6IFNob3VsZCBiZSB0d28uIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBHUElPIG51bWJlciBhbmQKKyAgdGhlIHNlY29uZCBjZWxsIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgR1BJTyBwb2xhcml0eToKKyAgICAwID0gYWN0aXZlIGhpZ2gsCisgICAgMSA9IGFjdGl2ZSBsb3cuCisKK0V4YW1wbGU6CisJc2MxNmlzNzUwOiBzYzE2aXM3NTBAMCB7CisJCWNvbXBhdGlibGUgPSAibnhwLHNjMTZpczc1MCI7CisJCXJlZyA9IDwwPjsKKwkJY2xvY2tzID0gPCZjbGsyMG0+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvMz47CisJCWludGVycnVwdHMgPSA8NyBJUlFfVFlQRV9FREdFX0ZBTExJTkc+OworCQlncGlvLWNvbnRyb2xsZXI7CisJCSNncGlvLWNlbGxzID0gPDI+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL254cC1scGMzMnh4LWhzdWFydC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL254cC1scGMzMnh4LWhzdWFydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ0MzlkZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvbnhwLWxwYzMyeHgtaHN1YXJ0LnR4dApAQCAtMCwwICsxLDE0IEBACisqIE5YUCBMUEMzMnh4IFNvQyBIaWdoIFNwZWVkIFVBUlQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJueHAsbHBjMzIyMC1oc3VhcnQiCistIHJlZzogU2hvdWxkIGNvbnRhaW4gcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gaW50ZXJydXB0CisKK0V4YW1wbGU6CisKKwl1YXJ0MTogc2VyaWFsQDQwMDE0MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJueHAsbHBjMzIyMC1oc3VhcnQiOworCQlyZWcgPSA8MHg0MDAxNDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDI2IDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL29tYXBfc2VyaWFsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvb21hcF9zZXJpYWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNzFiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL29tYXBfc2VyaWFsLnR4dApAQCAtMCwwICsxLDMzIEBACitPTUFQIFVBUlQgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJ0aSxvbWFwMi11YXJ0IiBmb3IgT01BUDIgY29udHJvbGxlcnMKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAidGksb21hcDMtdWFydCIgZm9yIE9NQVAzIGNvbnRyb2xsZXJzCistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgInRpLG9tYXA0LXVhcnQiIGZvciBPTUFQNCBjb250cm9sbGVycworLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJ0aSxhbTQzNzItdWFydCIgZm9yIEFNNDM3eCBjb250cm9sbGVycworLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJ0aSxhbTMzNTItdWFydCIgZm9yIEFNMzM1eCBjb250cm9sbGVycworLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJ0aSxkcmE3NDItdWFydCIgZm9yIERSQTd4IGNvbnRyb2xsZXJzCistIHJlZyA6IGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc3BhY2UKKy0gaW50ZXJydXB0cyBvciBpbnRlcnJ1cHRzLWV4dGVuZGVkIDogU2hvdWxkIGNvbnRhaW4gdGhlIHVhcnQgaW50ZXJydXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllciBvciBib3RoIHRoZSBpbnRlcnJ1cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlciBwaGFuZGxlIGFuZCBpbnRlcnJ1cHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVyLgorLSB0aSxod21vZHMgOiBNdXN0IGJlICJ1YXJ0PG4+IiwgbiBiZWluZyB0aGUgaW5zdGFuY2UgbnVtYmVyICgxLWJhc2VkKQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjbG9jay1mcmVxdWVuY3kgOiBmcmVxdWVuY3kgb2YgdGhlIGNsb2NrIGlucHV0IHRvIHRoZSBVQVJUCistIGRtYXMgOiBETUEgc3BlY2lmaWVyLCBjb25zaXN0aW5nIG9mIGEgcGhhbmRsZSB0byB0aGUgRE1BIGNvbnRyb2xsZXIKKyAgICAgICAgIG5vZGUgYW5kIGEgRE1BIGNoYW5uZWwgbnVtYmVyLgorLSBkbWEtbmFtZXMgOiAicngiIGZvciByZWNlaXZlIGNoYW5uZWwsICJ0eCIgZm9yIHRyYW5zbWl0IGNoYW5uZWwuCisKK0V4YW1wbGU6CisKKyAgICAgICAgICAgICAgICB1YXJ0NDogc2VyaWFsQDQ5MDQyMDAwIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAidGksb21hcDMtdWFydCI7CisgICAgICAgICAgICAgICAgICAgICAgICByZWcgPSA8MHg0OTA0MjAwMCAweDQwMD47CisgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRzID0gPDgwPjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRtYXMgPSA8JnNkbWEgODEgJnNkbWEgODI+OworICAgICAgICAgICAgICAgICAgICAgICAgZG1hLW5hbWVzID0gInR4IiwgInJ4IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpLGh3bW9kcyA9ICJ1YXJ0NCI7CisgICAgICAgICAgICAgICAgICAgICAgICBjbG9jay1mcmVxdWVuY3kgPSA8NDgwMDAwMDA+OworICAgICAgICAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL3BsMDExLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvcGwwMTEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3ODYzYWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL3BsMDExLnR4dApAQCAtMCwwICsxLDUxIEBACisqIEFSTSBBTUJBIFByaW1lY2VsbCBQTDAxMSBzZXJpYWwgVUFSVAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBtdXN0IGJlICJhcm0scHJpbWVjZWxsIiwgImFybSxwbDAxMSIsICJ6dGUsengyOTY3MDItdWFydCIKKy0gcmVnOiBleGFjdGx5IG9uZSByZWdpc3RlciByYW5nZSB3aXRoIGxlbmd0aCAweDEwMDAKKy0gaW50ZXJydXB0czogZXhhY3RseSBvbmUgaW50ZXJydXB0IHNwZWNpZmllcgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBwaW5jdHJsOgorCSAgIFdoZW4gcHJlc2VudCwgbXVzdCBoYXZlIG9uZSBzdGF0ZSBuYW1lZCAiZGVmYXVsdCIsCisJICAgYW5kIG1heSBjb250YWluIGEgc2Vjb25kIG5hbWUgbmFtZWQgInNsZWVwIi4gVGhlIGZvcm1lcgorCSAgIHN0YXRlIHNldHMgdXAgcGlucyBmb3Igb3JkaW5hcnkgb3BlcmF0aW9uIHdoZXJlYXMKKwkgICB0aGUgbGF0dGVyIHN0YXRlIHdpbGwgcHV0IHRoZSBhc3NvY2lhdGVkIHBpbnMgdG8gc2xlZXAKKwkgICB3aGVuIHRoZSBVQVJUIGlzIHVudXNlZAorLSBjbG9ja3M6CisJICAgV2hlbiBwcmVzZW50LCB0aGUgZmlyc3QgY2xvY2sgbGlzdGVkIG11c3QgY29ycmVzcG9uZCB0bworCSAgIHRoZSBjbG9jayBuYW1lZCBVQVJUQ0xLIG9uIHRoZSBJUCBibG9jaywgaS5lLiB0aGUgY2xvY2sKKwkgICB0byB0aGUgZXh0ZXJuYWwgc2VyaWFsIGxpbmUsIHdoZXJlYXMgdGhlIHNlY29uZCBjbG9jaworCSAgIG11c3QgY29ycmVzcG9uZCB0byB0aGUgUENMSyBjbG9ja2luZyB0aGUgaW50ZXJuYWwgbG9naWMKKwkgICBvZiB0aGUgYmxvY2suIEp1c3QgbGlzdGluZyBvbmUgY2xvY2sgKHRoZSBmaXJzdCBvbmUpIGlzCisJICAgZGVwcmVjYXRlZC4KKy0gY2xvY2stbmFtZXM6CisJICAgV2hlbiBwcmVzZW50LCB0aGUgZmlyc3QgY2xvY2sgbGlzdGVkIG11c3QgYmUgbmFtZWQKKwkgICAidWFydGNsayIgYW5kIHRoZSBzZWNvbmQgY2xvY2sgbGlzdGVkIG11c3QgYmUgbmFtZWQKKwkgICAiYXBiX3BjbGsiCistIGRtYXM6CQorCSAgIFdoZW4gcHJlc2VudCwgbWF5IGhhdmUgb25lIG9yIHR3byBkbWEgY2hhbm5lbHMuCisJICAgVGhlIGZpcnN0IG9uZSBtdXN0IGJlIG5hbWVkICJyeCIsIHRoZSBzZWNvbmQgb25lCisJICAgbXVzdCBiZSBuYW1lZCAidHgiLgorLSBhdXRvLXBvbGw6CisJICAgRW5hYmxlcyBwb2xsaW5nIHdoZW4gdXNpbmcgUlggRE1BLgorLSBwb2xsLXJhdGUtbXM6CisJICAgUmF0ZSBhdCB3aGljaCBwb2xsIG9jY3VycyB3aGVuIGF1dG8tcG9sbCBpcyBzZXQsCisJICAgZGVmYXVsdCAxMDBtcy4KKy0gcG9sbC10aW1lb3V0LW1zOgorCSAgIFBvbGwgdGltZW91dCB3aGVuIGF1dG8tcG9sbCBpcyBzZXQsIGRlZmF1bHQKKwkgICAzMDAwbXMuCisKK1NlZSBhbHNvIGJpbmRpbmdzL2FybS9wcmltZWNlbGwudHh0CisKK0V4YW1wbGU6CisKK3VhcnRAODAxMjAwMDAgeworCWNvbXBhdGlibGUgPSAiYXJtLHBsMDExIiwgImFybSxwcmltZWNlbGwiOworCXJlZyA9IDwweDgwMTIwMDAwIDB4MTAwMD47CisJaW50ZXJydXB0cyA9IDwwIDExIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCWRtYXMgPSA8JmRtYSAxMyAwIDB4Mj4sIDwmZG1hIDEzIDAgMHgwPjsKKwlkbWEtbmFtZXMgPSAicngiLCAidHgiOworCWNsb2NrcyA9IDwmZm9vX2Nsaz4sIDwmYmFyX2Nsaz47CisJY2xvY2stbmFtZXMgPSAidWFydGNsayIsICJhcGJfcGNsayI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9xY2EsYXI5MzMwLXVhcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9xY2EsYXI5MzMwLXVhcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1ZTAzMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL3FjYSxhcjkzMzAtdWFydC50eHQKQEAgLTAsMCArMSwzNCBAQAorKiBRdWFsY29tbSBBdGhlcm9zIEFSOTMzMCBIaWdoLVNwZWVkIFVBUlQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBNdXN0IGJlICJxY2EsYXI5MzMwLXVhcnQiCisKKy0gcmVnOiBTcGVjaWZpZXMgdGhlIHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQKKyAgdGhlIGxlbmd0aCBvZiB0aGUgbWVtb3J5IG1hcHBlZCByZWdpb24uCisKKy0gaW50ZXJydXB0LXBhcmVudDogVGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGF0CisgIHNlcnZpY2VzIGludGVycnVwdHMgZm9yIHRoaXMgZGV2aWNlLgorCistIGludGVycnVwdHM6IFNwZWNpZmllcyB0aGUgaW50ZXJydXB0IHNvdXJjZSBvZiB0aGUgcGFyZW50IGludGVycnVwdAorICBjb250cm9sbGVyLiBUaGUgZm9ybWF0IG9mIHRoZSBpbnRlcnJ1cHQgc3BlY2lmaWVyIGRlcGVuZHMgb24gdGhlCisgIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlci4KKworQWRkaXRpb25hbCByZXF1aXJlbWVudHM6CisKKyAgRWFjaCBVQVJUIHBvcnQgbXVzdCBoYXZlIGFuIGFsaWFzIGNvcnJlY3RseSBudW1iZXJlZCBpbiAiYWxpYXNlcyIKKyAgbm9kZS4KKworRXhhbXBsZToKKworCWFsaWFzZXMgeworCQlzZXJpYWwwID0gJnVhcnQwOworCX07CisKKwl1YXJ0MDogdWFydEAxODAyMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicWNhLGFyOTMzMC11YXJ0IjsKKwkJcmVnID0gPDB4MTgwMjAwMDAgMHgxND47CisKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmaW50Yz47CisJCWludGVycnVwdHMgPSA8Mz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvcWNvbSxtc20tdWFydC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL3Fjb20sbXNtLXVhcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlOGM5MDEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL3Fjb20sbXNtLXVhcnQudHh0CkBAIC0wLDAgKzEsMjUgQEAKKyogTVNNIFNlcmlhbCBVQVJUCisKK1RoZSBNU00gc2VyaWFsIFVBUlQgaGFyZHdhcmUgaXMgZGVzaWduZWQgZm9yIGxvdy1zcGVlZCB1c2UgY2FzZXMgd2hlcmUgYQorZG1hLWVuZ2luZSBpc24ndCBuZWVkZWQuIEZyb20gYSBzb2Z0d2FyZSBwZXJzcGVjdGl2ZSBpdCdzIG1vc3RseSBjb21wYXRpYmxlCit3aXRoIHRoZSBNU00gc2VyaWFsIFVBUlRETSBleGNlcHQgdGhhdCBpdCBvbmx5IHN1cHBvcnRzIHJlYWRpbmcgYW5kIHdyaXRpbmcgb25lCitjaGFyYWN0ZXIgYXQgYSB0aW1lLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgY29udGFpbiAicWNvbSxtc20tdWFydCIKKy0gcmVnOiBTaG91bGQgY29udGFpbiBVQVJUIHJlZ2lzdGVyIGxvY2F0aW9uIGFuZCBsZW5ndGguCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIFVBUlQgaW50ZXJydXB0LgorLSBjbG9ja3M6IFNob3VsZCBjb250YWluIHRoZSBjb3JlIGNsb2NrLgorLSBjbG9jay1uYW1lczogU2hvdWxkIGJlICJjb3JlIi4KKworRXhhbXBsZToKKworQSB1YXJ0IGRldmljZSBhdCAweGE5YzAwMDAwIHdpdGggaW50ZXJydXB0IDExLgorCitzZXJpYWxAYTljMDAwMDAgeworCWNvbXBhdGlibGUgPSAicWNvbSxtc20tdWFydCI7CisJcmVnID0gPDB4YTljMDAwMDAgMHgxMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDExPjsKKwljbG9ja3MgPSA8JnVhcnRfY3hjPjsKKwljbG9jay1uYW1lcyA9ICJjb3JlIjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL3Fjb20sbXNtLXVhcnRkbS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL3Fjb20sbXNtLXVhcnRkbS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTgyNzc3ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvcWNvbSxtc20tdWFydGRtLnR4dApAQCAtMCwwICsxLDg0IEBACisqIE1TTSBTZXJpYWwgVUFSVERNCisKK1RoZSBNU00gc2VyaWFsIFVBUlRETSBoYXJkd2FyZSBpcyBkZXNpZ25lZCBmb3IgaGlnaC1zcGVlZCB1c2UgY2FzZXMgd2hlcmUgdGhlCit0cmFuc21pdCBhbmQvb3IgcmVjZWl2ZSBjaGFubmVscyBjYW4gYmUgb2ZmbG9hZGVkIHRvIGEgZG1hLWVuZ2luZS4gRnJvbSBhCitzb2Z0d2FyZSBwZXJzcGVjdGl2ZSBpdCdzIG1vc3RseSBjb21wYXRpYmxlIHdpdGggdGhlIE1TTSBzZXJpYWwgVUFSVCBleGNlcHQKK3RoYXQgaXQgc3VwcG9ydHMgcmVhZGluZyBhbmQgd3JpdGluZyBtdWx0aXBsZSBjaGFyYWN0ZXJzIGF0IGEgdGltZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgInFjb20sbXNtLXVhcnRkbSIuCisgICAgICAgICAgICAgIEEgbW9yZSBzcGVjaWZpYyBwcm9wZXJ0eSBzaG91bGQgYmUgc3BlY2lmaWVkIGFzIGZvbGxvd3MgZGVwZW5kaW5nCisJICAgICAgb24gdGhlIHZlcnNpb246CisJCSJxY29tLG1zbS11YXJ0ZG0tdjEuMSIKKwkJInFjb20sbXNtLXVhcnRkbS12MS4yIgorCQkicWNvbSxtc20tdWFydGRtLXYxLjMiCisJCSJxY29tLG1zbS11YXJ0ZG0tdjEuNCIKKy0gcmVnOiBTaG91bGQgY29udGFpbiBVQVJUIHJlZ2lzdGVyIGxvY2F0aW9ucyBhbmQgbGVuZ3Rocy4gVGhlIGZpcnN0CisgICAgICAgcmVnaXN0ZXIgc2hhbGwgc3BlY2lmeSB0aGUgbWFpbiBjb250cm9sIHJlZ2lzdGVycy4gQW4gb3B0aW9uYWwgc2Vjb25kCisgICAgICAgcmVnaXN0ZXIgbG9jYXRpb24gc2hhbGwgc3BlY2lmeSB0aGUgR1NCSSBjb250cm9sIHJlZ2lvbi4KKyAgICAgICAicWNvbSxtc20tdWFydGRtLXYxLjMiIGlzIHRoZSBvbmx5IGNvbXBhdGlibGUgdmFsdWUgdGhhdCBtaWdodAorICAgICAgIG5lZWQgdGhlIEdTQkkgY29udHJvbCByZWdpb24uCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIFVBUlQgaW50ZXJydXB0LgorLSBjbG9ja3M6IFNob3VsZCBjb250YWluIHRoZSBjb3JlIGNsb2NrIGFuZCB0aGUgQUhCIGNsb2NrLgorLSBjbG9jay1uYW1lczogU2hvdWxkIGJlICJjb3JlIiBmb3IgdGhlIGNvcmUgY2xvY2sgYW5kICJpZmFjZSIgZm9yIHRoZQorCSAgICAgICBBSEIgY2xvY2suCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGRtYXM6IFNob3VsZCBjb250YWluIGRtYSBzcGVjaWZpZXJzIGZvciB0cmFuc21pdCBhbmQgcmVjZWl2ZSBjaGFubmVscworLSBkbWEtbmFtZXM6IFNob3VsZCBjb250YWluICJ0eCIgZm9yIHRyYW5zbWl0IGFuZCAicngiIGZvciByZWNlaXZlIGNoYW5uZWxzCistIHFjb20sdHgtY3JjaTogSWRlbnRpZmljYXRvciA8dTMyPiBmb3IgQ2xpZW50IFJhdGUgQ29udHJvbCBJbnRlcmZhY2UgdG8gYmUKKyAgICAgICAgICAgdXNlZCB3aXRoIFRYIERNQSBjaGFubmVsLiBSZXF1aXJlZCB3aGVuIHVzaW5nIERNQSBmb3IgdHJhbnNtaXNzaW9uCisgICAgICAgICAgIHdpdGggVUFSVERNIHYxLjMgYW5kIGJlbGxvdy4KKy0gcWNvbSxyeC1jcmNpOiBJZGVudGlmaWNhdG9yIDx1MzI+IGZvciBDbGllbnQgUmF0ZSBDb250cm9sIEludGVyZmFjZSB0byBiZQorICAgICAgICAgICB1c2VkIHdpdGggUlggRE1BIGNoYW5uZWwuIFJlcXVpcmVkIHdoZW4gdXNpbmcgRE1BIGZvciByZWNlcHRpb24KKyAgICAgICAgICAgd2l0aCBVQVJURE0gdjEuMyBhbmQgYmVsbG93LgorCitOb3RlOiBBbGlhc2VzIG1heSBiZSBkZWZpbmVkIHRvIGVuc3VyZSB0aGUgY29ycmVjdCBvcmRlcmluZyBvZiB0aGUgVUFSVHMuCitUaGUgYWxpYXMgc2VyaWFsTiB3aWxsIHJlc3VsdCBpbiB0aGUgVUFSVCBiZWluZyBhc3NpZ25lZCBwb3J0IE4uICBJZiBhbnkKK3NlcmlhbE4gYWxpYXMgZXhpc3RzLCB0aGVuIGFuIGFsaWFzIG11c3QgZXhpc3QgZm9yIGVhY2ggZW5hYmxlZCBVQVJULiAgVGhlCitzZXJpYWxOIGFsaWFzZXMgc2hvdWxkIGJlIGluIGEgLmR0cyBmaWxlIGluc3RlYWQgb2YgaW4gYSAuZHRzaSBmaWxlLgorCitFeGFtcGxlczoKKworLSBBIHVhcnRkbSB2MS40IGRldmljZSB3aXRoIGRtYSBjYXBhYmlsaXRpZXMuCisKKwlzZXJpYWxAZjk5MWUwMDAgeworCQljb21wYXRpYmxlID0gInFjb20sbXNtLXVhcnRkbS12MS40IiwgInFjb20sbXNtLXVhcnRkbSI7CisJCXJlZyA9IDwweGY5OTFlMDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MCAxMDggMHgwPjsKKwkJY2xvY2tzID0gPCZibHNwMV91YXJ0Ml9hcHBzX2N4Yz4sIDwmYmxzcDFfYWhiX2N4Yz47CisJCWNsb2NrLW5hbWVzID0gImNvcmUiLCAiaWZhY2UiOworCQlkbWFzID0gPCZkbWEwIDA+LCA8JmRtYTAgMT47CisJCWRtYS1uYW1lcyA9ICJ0eCIsICJyeCI7CisJfTsKKworLSBBIHVhcnRkbSB2MS4zIGRldmljZSB3aXRob3V0IGRtYSBjYXBhYmlsaXRpZXMgYW5kIHBhcnQgb2YgYSBHU0JJIGNvbXBsZXguCisKKwlzZXJpYWxAMTljNDAwMDAgeworCQljb21wYXRpYmxlID0gInFjb20sbXNtLXVhcnRkbS12MS4zIiwgInFjb20sbXNtLXVhcnRkbSI7CisJCXJlZyA9IDwweDE5YzQwMDAwIDB4MTAwMD4sCisJCTwweDE5YzAwMDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MCAxOTUgMHgwPjsKKwkJY2xvY2tzID0gPCZnc2JpNV91YXJ0X2N4Yz4sIDwmZ3NiaTVfYWhiX2N4Yz47CisJCWNsb2NrLW5hbWVzID0gImNvcmUiLCAiaWZhY2UiOworCX07CisKKy0gc2VyaWFsTiBhbGlhcy4KKworCWFsaWFzZXMgeworCQlzZXJpYWwwID0gJnVhcnRhOworCQlzZXJpYWwxID0gJnVhcnRjOworCQlzZXJpYWwyID0gJnVhcnRiOworCX07CisKKwl1YXJ0YTogc2VyaWFsQDEyNDkwMDAwIHsKKwkJc3RhdHVzID0gIm9rIjsKKwl9OworCisJdWFydGI6IHNlcmlhbEAxNjM0MDAwMCB7CisJCXN0YXR1cyA9ICJvayI7CisJfTsKKworCXVhcnRjOiBzZXJpYWxAMWEyNDAwMDAgeworCQlzdGF0dXMgPSAib2siOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL3JlbmVzYXMsc2NpLXNlcmlhbC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL3JlbmVzYXMsc2NpLXNlcmlhbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNmODI1ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvcmVuZXNhcyxzY2ktc2VyaWFsLnR4dApAQCAtMCwwICsxLDY5IEBACisqIFJlbmVzYXMgU0gtTW9iaWxlIFNlcmlhbCBDb21tdW5pY2F0aW9uIEludGVyZmFjZQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZTogTXVzdCBjb250YWluIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCisgICAgLSAicmVuZXNhcyxzY2lmLXI3czcyMTAwIiBmb3IgUjdTNzIxMDAgKFJaL0ExSCkgU0NJRiBjb21wYXRpYmxlIFVBUlQuCisgICAgLSAicmVuZXNhcyxzY2lmYS1yOGE3M2E0IiBmb3IgUjhBNzNBNCAoUi1Nb2JpbGUgQVBFNikgU0NJRkEgY29tcGF0aWJsZSBVQVJULgorICAgIC0gInJlbmVzYXMsc2NpZmItcjhhNzNhNCIgZm9yIFI4QTczQTQgKFItTW9iaWxlIEFQRTYpIFNDSUZCIGNvbXBhdGlibGUgVUFSVC4KKyAgICAtICJyZW5lc2FzLHNjaWZhLXI4YTc3NDAiIGZvciBSOEE3NzQwIChSLU1vYmlsZSBBMSkgU0NJRkEgY29tcGF0aWJsZSBVQVJULgorICAgIC0gInJlbmVzYXMsc2NpZmItcjhhNzc0MCIgZm9yIFI4QTc3NDAgKFItTW9iaWxlIEExKSBTQ0lGQiBjb21wYXRpYmxlIFVBUlQuCisgICAgLSAicmVuZXNhcyxzY2lmLXI4YTc3NzgiIGZvciBSOEE3Nzc4IChSLUNhciBNMSkgU0NJRiBjb21wYXRpYmxlIFVBUlQuCisgICAgLSAicmVuZXNhcyxzY2lmLXI4YTc3NzkiIGZvciBSOEE3Nzc5IChSLUNhciBIMSkgU0NJRiBjb21wYXRpYmxlIFVBUlQuCisgICAgLSAicmVuZXNhcyxzY2lmLXI4YTc3OTAiIGZvciBSOEE3NzkwIChSLUNhciBIMikgU0NJRiBjb21wYXRpYmxlIFVBUlQuCisgICAgLSAicmVuZXNhcyxzY2lmYS1yOGE3NzkwIiBmb3IgUjhBNzc5MCAoUi1DYXIgSDIpIFNDSUZBIGNvbXBhdGlibGUgVUFSVC4KKyAgICAtICJyZW5lc2FzLHNjaWZiLXI4YTc3OTAiIGZvciBSOEE3NzkwIChSLUNhciBIMikgU0NJRkIgY29tcGF0aWJsZSBVQVJULgorICAgIC0gInJlbmVzYXMsaHNjaWYtcjhhNzc5MCIgZm9yIFI4QTc3OTAgKFItQ2FyIEgyKSBIU0NJRiBjb21wYXRpYmxlIFVBUlQuCisgICAgLSAicmVuZXNhcyxzY2lmLXI4YTc3OTEiIGZvciBSOEE3NzkxIChSLUNhciBNMikgU0NJRiBjb21wYXRpYmxlIFVBUlQuCisgICAgLSAicmVuZXNhcyxzY2lmYS1yOGE3NzkxIiBmb3IgUjhBNzc5MSAoUi1DYXIgTTIpIFNDSUZBIGNvbXBhdGlibGUgVUFSVC4KKyAgICAtICJyZW5lc2FzLHNjaWZiLXI4YTc3OTEiIGZvciBSOEE3NzkxIChSLUNhciBNMikgU0NJRkIgY29tcGF0aWJsZSBVQVJULgorICAgIC0gInJlbmVzYXMsaHNjaWYtcjhhNzc5MSIgZm9yIFI4QTc3OTEgKFItQ2FyIE0yKSBIU0NJRiBjb21wYXRpYmxlIFVBUlQuCisgICAgLSAicmVuZXNhcyxzY2lmLXI4YTc3OTQiIGZvciBSOEE3Nzk0IChSLUNhciBFMikgU0NJRiBjb21wYXRpYmxlIFVBUlQuCisgICAgLSAicmVuZXNhcyxzY2lmYS1yOGE3Nzk0IiBmb3IgUjhBNzc5NCAoUi1DYXIgRTIpIFNDSUZBIGNvbXBhdGlibGUgVUFSVC4KKyAgICAtICJyZW5lc2FzLHNjaWZiLXI4YTc3OTQiIGZvciBSOEE3Nzk0IChSLUNhciBFMikgU0NJRkIgY29tcGF0aWJsZSBVQVJULgorICAgIC0gInJlbmVzYXMsaHNjaWYtcjhhNzc5NCIgZm9yIFI4QTc3OTQgKFItQ2FyIEUyKSBIU0NJRiBjb21wYXRpYmxlIFVBUlQuCisgICAgLSAicmVuZXNhcyxzY2lmLXI4YTc3OTUiIGZvciBSOEE3Nzk1IChSLUNhciBIMykgU0NJRiBjb21wYXRpYmxlIFVBUlQuCisgICAgLSAicmVuZXNhcyxoc2NpZi1yOGE3Nzk1IiBmb3IgUjhBNzc5NSAoUi1DYXIgSDMpIEhTQ0lGIGNvbXBhdGlibGUgVUFSVC4KKyAgICAtICJyZW5lc2FzLHNjaWZhLXNoNzNhMCIgZm9yIFNINzNBMCAoU0gtTW9iaWxlIEFHNSkgU0NJRkEgY29tcGF0aWJsZSBVQVJULgorICAgIC0gInJlbmVzYXMsc2NpZmItc2g3M2EwIiBmb3IgU0g3M0EwIChTSC1Nb2JpbGUgQUc1KSBTQ0lGQiBjb21wYXRpYmxlIFVBUlQuCisgICAgLSAicmVuZXNhcyxzY2lmIiBmb3IgZ2VuZXJpYyBTQ0lGIGNvbXBhdGlibGUgVUFSVC4KKyAgICAtICJyZW5lc2FzLHNjaWZhIiBmb3IgZ2VuZXJpYyBTQ0lGQSBjb21wYXRpYmxlIFVBUlQuCisgICAgLSAicmVuZXNhcyxzY2lmYiIgZm9yIGdlbmVyaWMgU0NJRkIgY29tcGF0aWJsZSBVQVJULgorICAgIC0gInJlbmVzYXMsaHNjaWYiIGZvciBnZW5lcmljIEhTQ0lGIGNvbXBhdGlibGUgVUFSVC4KKyAgICAtICJyZW5lc2FzLHNjaSIgZm9yIGdlbmVyaWMgU0NJIGNvbXBhdGlibGUgVUFSVC4KKworICAgIFdoZW4gY29tcGF0aWJsZSB3aXRoIHRoZSBnZW5lcmljIHZlcnNpb24sIG5vZGVzIG11c3QgbGlzdCB0aGUKKyAgICBTb0Mtc3BlY2lmaWMgdmVyc2lvbiBjb3JyZXNwb25kaW5nIHRvIHRoZSBwbGF0Zm9ybSBmaXJzdCBmb2xsb3dlZCBieSB0aGUKKyAgICBnZW5lcmljIHZlcnNpb24uCisKKyAgLSByZWc6IEJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBJL08gcmVnaXN0ZXJzIHVzZWQgYnkgdGhlIFVBUlQuCisgIC0gaW50ZXJydXB0czogTXVzdCBjb250YWluIGFuIGludGVycnVwdC1zcGVjaWZpZXIgZm9yIHRoZSBTQ0l4IGludGVycnVwdC4KKworICAtIGNsb2NrczogTXVzdCBjb250YWluIGEgcGhhbmRsZSBhbmQgY2xvY2stc3BlY2lmaWVyIHBhaXIgZm9yIGVhY2ggZW50cnkKKyAgICBpbiBjbG9jay1uYW1lcy4KKyAgLSBjbG9jay1uYW1lczogTXVzdCBjb250YWluICJzY2lfaWNrIiBmb3IgdGhlIFNDSXggVUFSVCBpbnRlcmZhY2UgY2xvY2suCisKK05vdGU6IEVhY2ggZW5hYmxlZCBTQ0l4IFVBUlQgc2hvdWxkIGhhdmUgYW4gYWxpYXMgY29ycmVjdGx5IG51bWJlcmVkIGluIHRoZQorImFsaWFzZXMiIG5vZGUuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgIC0gZG1hczogTXVzdCBjb250YWluIGEgbGlzdCBvZiB0d28gcmVmZXJlbmNlcyB0byBETUEgc3BlY2lmaWVycywgb25lIGZvcgorCSAgdHJhbnNtaXNzaW9uLCBhbmQgb25lIGZvciByZWNlcHRpb24uCisgIC0gZG1hLW5hbWVzOiBNdXN0IGNvbnRhaW4gYSBsaXN0IG9mIHR3byBETUEgbmFtZXMsICJ0eCIgYW5kICJyeCIuCisKK0V4YW1wbGU6CisJYWxpYXNlcyB7CisJCXNlcmlhbDAgPSAmc2NpZmEwOworCX07CisKKwlzY2lmYTA6IHNlcmlhbEBlNmM0MDAwMCB7CisJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxzY2lmYS1yOGE3NzkwIiwgInJlbmVzYXMsc2NpZmEiOworCQlyZWcgPSA8MCAweGU2YzQwMDAwIDAgNjQ+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZnaWM+OworCQlpbnRlcnJ1cHRzID0gPDAgMTQ0IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQljbG9ja3MgPSA8Jm1zdHAyX2Nsa3MgUjhBNzc5MF9DTEtfU0NJRkEwPjsKKwkJY2xvY2stbmFtZXMgPSAic2NpX2ljayI7CisJCWRtYXMgPSA8JmRtYWMwIDB4MjE+LCA8JmRtYWMwIDB4MjI+OworCQlkbWEtbmFtZXMgPSAidHgiLCAicngiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL3JzNDg1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvcnM0ODUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyYjFmYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL3JzNDg1LnR4dApAQCAtMCwwICsxLDMxIEBACisqIFJTNDg1IHNlcmlhbCBjb21tdW5pY2F0aW9ucworCitUaGUgUlRTIHNpZ25hbCBpcyBjYXBhYmxlIG9mIGF1dG9tYXRpY2FsbHkgY29udHJvbGxpbmcgbGluZSBkaXJlY3Rpb24gZm9yCit0aGUgYnVpbHQtaW4gaGFsZi1kdXBsZXggbW9kZS4KK1RoZSBwcm9wZXJ0aWVzIGRlc2NyaWJlZCBoZXJlYWZ0ZXIgc2hhbGwgYmUgZ2l2ZW4gdG8gYSBoYWxmLWR1cGxleCBjYXBhYmxlCitVQVJUIG5vZGUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIHJzNDg1LXJ0cy1kZWxheTogcHJvcC1lbmNvZGVkLWFycmF5IDxhIGI+IHdoZXJlOgorICAqIGEgaXMgdGhlIGRlbGF5IGJldHdlZW4gcnRzIHNpZ25hbCBhbmQgYmVnaW5uaW5nIG9mIGRhdGEgc2VudCBpbiBtaWxsaXNlY29uZHMuCisgICAgICBpdCBjb3JyZXNwb25kcyB0byB0aGUgZGVsYXkgYmVmb3JlIHNlbmRpbmcgZGF0YS4KKyAgKiBiIGlzIHRoZSBkZWxheSBiZXR3ZWVuIGVuZCBvZiBkYXRhIHNlbnQgYW5kIHJ0cyBzaWduYWwgaW4gbWlsbGlzZWNvbmRzCisgICAgICBpdCBjb3JyZXNwb25kcyB0byB0aGUgZGVsYXkgYWZ0ZXIgc2VuZGluZyBkYXRhIGFuZCBhY3R1YWwgcmVsZWFzZSBvZiB0aGUgbGluZS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gbGludXgscnM0ODUtZW5hYmxlZC1hdC1ib290LXRpbWU6IGVtcHR5IHByb3BlcnR5IHRlbGxpbmcgdG8gZW5hYmxlIHRoZSByczQ4NQorICBmZWF0dXJlIGF0IGJvb3QgdGltZS4gSXQgY2FuIGJlIGRpc2FibGVkIGxhdGVyIHdpdGggcHJvcGVyIGlvY3RsLgorLSByczQ4NS1yeC1kdXJpbmctdHg6IGVtcHR5IHByb3BlcnR5IHRoYXQgZW5hYmxlcyB0aGUgcmVjZWl2aW5nIG9mIGRhdGEgZXZlbgorICB3aGlsc3Qgc2VuZGluZyBkYXRhLgorCitSUzQ4NSBleGFtcGxlIGZvciBBdG1lbCBVU0FSVDoKKwl1c2FydDA6IHNlcmlhbEBmZmY4YzAwMCB7CisJCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXNhbTkyNjAtdXNhcnQiOworCQlyZWcgPSA8MHhmZmY4YzAwMCAweDQwMDA+OworCQlpbnRlcnJ1cHRzID0gPDc+OworCQlhdG1lbCx1c2UtZG1hLXJ4OworCQlhdG1lbCx1c2UtZG1hLXR4OworCQlsaW51eCxyczQ4NS1lbmFibGVkLWF0LWJvb3QtdGltZTsKKwkJcnM0ODUtcnRzLWRlbGF5ID0gPDAgMjAwPjsJCS8vIGluIG1pbGxpc2Vjb25kcworCX07CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvc2Ftc3VuZ191YXJ0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvc2Ftc3VuZ191YXJ0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODVmMzdlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9zYW1zdW5nX3VhcnQudHh0CkBAIC0wLDAgKzEsNTggQEAKKyogU2Ftc3VuZydzIFVBUlQgQ29udHJvbGxlcgorCitUaGUgU2Ftc3VuZydzIFVBUlQgY29udHJvbGxlciBpcyB1c2VkIGZvciBpbnRlcmZhY2luZyBTb0Mgd2l0aCBzZXJpYWwKK2NvbW11bmljYWlvbiBkZXZpY2VzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mIGZvbGxvd2luZzoKKyAgLSAic2Ftc3VuZyxleHlub3M0MjEwLXVhcnQiIC0gIEV4eW5vczQyMTAgU29DLAorICAtICJzYW1zdW5nLHMzYzI0MTAtdWFydCIgLSBjb21wYXRpYmxlIHdpdGggcG9ydHMgcHJlc2VudCBvbiBTM0MyNDEwIFNvQywKKyAgLSAic2Ftc3VuZyxzM2MyNDEyLXVhcnQiIC0gY29tcGF0aWJsZSB3aXRoIHBvcnRzIHByZXNlbnQgb24gUzNDMjQxMiBTb0MsCisgIC0gInNhbXN1bmcsczNjMjQ0MC11YXJ0IiAtIGNvbXBhdGlibGUgd2l0aCBwb3J0cyBwcmVzZW50IG9uIFMzQzI0NDAgU29DLAorICAtICJzYW1zdW5nLHMzYzY0MDAtdWFydCIgLSBjb21wYXRpYmxlIHdpdGggcG9ydHMgcHJlc2VudCBvbiBTM0M2NDAwIFNvQywKKyAgLSAic2Ftc3VuZyxzNXB2MjEwLXVhcnQiIC0gY29tcGF0aWJsZSB3aXRoIHBvcnRzIHByZXNlbnQgb24gUzVQVjIxMCBTb0MuCisKKy0gcmVnOiBiYXNlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgIHJlZ2lvbi4KKworLSBpbnRlcnJ1cHRzOiBhIHNpbmdsZSBpbnRlcnJ1cHQgc2lnbmFsIHRvIFNvQyBpbnRlcnJ1cHQgY29udHJvbGxlciwKKyAgYWNjb3JkaW5nIHRvIGludGVycnVwdCBiaW5kaW5ncyBkb2N1bWVudGF0aW9uIFsxXS4KKworLSBjbG9jay1uYW1lczogaW5wdXQgbmFtZXMgb2YgY2xvY2tzIHVzZWQgYnkgdGhlIGNvbnRyb2xsZXI6CisgIC0gInVhcnQiIC0gY29udHJvbGxlciBidXMgY2xvY2ssCisgIC0gImNsa191YXJ0X2JhdWROIiAtIE50aCBiYXVkIGJhc2UgY2xvY2sgaW5wdXQgKE4gPSAwLCAxLCAuLi4pLAorICAgIGFjY29yZGluZyB0byBTb0MgVXNlcidzIE1hbnVhbCAob25seSBOID0gMCBpcyBhbGxvd2VkZm9yIFNvQ3Mgd2l0aG91dAorICAgIGludGVybmFsIGJhdWQgY2xvY2sgbXV4KS4KKy0gY2xvY2tzOiBwaGFuZGxlcyBhbmQgc3BlY2lmaWVycyBmb3IgYWxsIGNsb2NrcyBzcGVjaWZpZWQgaW4gImNsb2NrLW5hbWVzIgorICBwcm9wZXJ0eSwgaW4gdGhlIHNhbWUgb3JkZXIsIGFjY29yZGluZyB0byBjbG9jayBiaW5kaW5ncyBkb2N1bWVudGF0aW9uIFsyXS4KKworWzFdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlcnJ1cHRzLnR4dAorWzJdIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gc2Ftc3VuZyx1YXJ0LWZpZm9zaXplOiBUaGUgZmlmbyBzaXplIHN1cHBvcnRlZCBieSB0aGUgVUFSVCBjaGFubmVsCisKK05vdGU6IEVhY2ggU2Ftc3VuZyBVQVJUIHNob3VsZCBoYXZlIGFuIGFsaWFzIGNvcnJlY3RseSBudW1iZXJlZCBpbiB0aGUKKyJhbGlhc2VzIiBub2RlLCBhY2NvcmRpbmcgdG8gc2VyaWFsTiBmb3JtYXQsIHdoZXJlIE4gaXMgdGhlIHBvcnQgbnVtYmVyCisobm9uLW5lZ2F0aXZlIGRlY2ltYWwgaW50ZWdlcikgYXMgc3BlY2lmaWVkIGJ5IFVzZXIncyBNYW51YWwgb2YgcmVzcGVjdGl2ZQorU29DLgorCitFeGFtcGxlOgorCWFsaWFzZXMgeworCQlzZXJpYWwwID0gJnVhcnQwOworCQlzZXJpYWwxID0gJnVhcnQxOworCQlzZXJpYWwyID0gJnVhcnQyOworCX07CisKK0V4YW1wbGU6CisJdWFydDE6IHNlcmlhbEA3ZjAwNTQwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxzM2M2NDAwLXVhcnQiOworCQlyZWcgPSA8MHg3ZjAwNTQwMCAweDEwMD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JnZpYzE+OworCQlpbnRlcnJ1cHRzID0gPDY+OworCQljbG9jay1uYW1lcyA9ICJ1YXJ0IiwgImNsa191YXJ0X2JhdWQyIiwKKwkJCQkiY2xrX3VhcnRfYmF1ZDMiOworCQljbG9ja3MgPSA8JmNsb2NrcyBQQ0xLX1VBUlQxPiwgPCZjbG9ja3MgUENMS19VQVJUMT4sCisJCQkJPCZjbG9ja3MgU0NMS19VQVJUPjsKKwkJc2Ftc3VuZyx1YXJ0LWZpZm9zaXplID0gPDE2PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9zaXJmLXVhcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9zaXJmLXVhcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3ZTJhMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL3NpcmYtdWFydC50eHQKQEAgLTAsMCArMSwzNCBAQAorKiBDU1IgU2lSRnByaW1hSUkvYXRsYXNWSSBVbml2ZXJzYWwgU3luY2hyb25vdXMgQXN5bmNocm9ub3VzIFJlY2VpdmVyL1RyYW5zbWl0dGVyICoKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAic2lyZixwcmltYTItdWFydCIsICJzaXJmLCBwcmltYTItdXNwLXVhcnQiLAorCQkic2lyZixhdGxhczctdWFydCIgb3IgInNpcmYsYXRsYXM3LXVzcC11YXJ0Ii4KKy0gcmVnIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorLSBpbnRlcnJ1cHRzIDogU2hvdWxkIGNvbnRhaW4gdWFydCBpbnRlcnJ1cHQKKy0gZmlmb3NpemUgOiBTaG91bGQgZGVmaW5lIGhhcmR3YXJlIHJ4L3R4IGZpZm8gc2l6ZQorLSBjbG9ja3MgOiBTaG91bGQgY29udGFpbiB1YXJ0IGNsb2NrIG51bWJlcgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBzaXJmLHVhcnQtaGFzLXJ0c2N0czogd2UgaGF2ZSBoYXJkd2FyZSBmbG93IGNvbnRyb2xsZXIgcGlucyBpbiBoYXJkd2FyZQorLSBydHMtZ3Bpb3M6IFJUUyBwaW4gZm9yIFVTUC1iYXNlZCBVQVJUIGlmIHNpcmYsdWFydC1oYXMtcnRzY3RzIGlzIHRydWUKKy0gY3RzLWdwaW9zOiBDVFMgcGluIGZvciBVU1AtYmFzZWQgVUFSVCBpZiBzaXJmLHVhcnQtaGFzLXJ0c2N0cyBpcyB0cnVlCisKK0V4YW1wbGU6CisKK3VhcnQwOiB1YXJ0QGIwMDUwMDAwIHsKKwljZWxsLWluZGV4ID0gPDA+OworCWNvbXBhdGlibGUgPSAic2lyZixwcmltYTItdWFydCI7CisJcmVnID0gPDB4YjAwNTAwMDAgMHgxMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDE3PjsKKwlmaWZvc2l6ZSA9IDwxMjg+OworCWNsb2NrcyA9IDwmY2xrcyAxMz47Cit9OworCitPbiB0aGUgYm9hcmQtc3BlY2lmaWMgZHRzLCB3ZSBjYW4gcHV0IHJ0cy1ncGlvcyBhbmQgY3RzLWdwaW9zIGxpa2UKKwordXNwQGIwMDkwMDAwIHsKKwljb21wYXRpYmxlID0gInNpcmYscHJpbWEyLXVzcC11YXJ0IjsKKwlzaXJmLHVhcnQtaGFzLXJ0c2N0czsKKwlydHMtZ3Bpb3MgPSA8JmdwaW8gMTUgMD47CisJY3RzLWdwaW9zID0gPCZncGlvIDQ2IDA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvc25wcy1kdy1hcGItdWFydC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL3NucHMtZHctYXBiLXVhcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyYmJlOWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL3NucHMtZHctYXBiLXVhcnQudHh0CkBAIC0wLDAgKzEsNzYgQEAKKyogU3lub3BzeXMgRGVzaWduV2FyZSBBQlAgVUFSVAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogInNucHMsZHctYXBiLXVhcnQiCistIHJlZyA6IG9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UuCistIGludGVycnVwdHMgOiBzaG91bGQgY29udGFpbiB1YXJ0IGludGVycnVwdC4KKworQ2xvY2sgaGFuZGxpbmc6CitUaGUgY2xvY2sgcmF0ZSBvZiB0aGUgaW5wdXQgY2xvY2sgbmVlZHMgdG8gYmUgc3VwcGxpZWQgYnkgb25lIG9mCistIGNsb2NrLWZyZXF1ZW5jeSA6IHRoZSBpbnB1dCBjbG9jayBmcmVxdWVuY3kgZm9yIHRoZSBVQVJULgorLSBjbG9ja3MgOiBwaGFuZGxlIHRvIHRoZSBpbnB1dCBjbG9jaworCitUaGUgc3VwcGx5aW5nIHBlcmlwaGVyYWwgY2xvY2sgY2FuIGFsc28gYmUgaGFuZGxlZCwgbmVlZGluZyBhIHNlY29uZCBwcm9wZXJ0eQorLSBjbG9jay1uYW1lczogdHVwbGUgbGlzdGluZyBpbnB1dCBjbG9jayBuYW1lcy4KKwlSZXF1aXJlZCBlbGVtZW50czogImJhdWRjbGsiLCAiYXBiX3BjbGsiCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHNucHMsdWFydC0xNjU1MC1jb21wYXRpYmxlIDogcmVmbGVjdHMgdGhlIHZhbHVlIG9mIFVBUlRfMTY1NTBfQ09NUEFUSUJMRQorICBjb25maWd1cmF0aW9uIHBhcmFtZXRlci4gRGVmaW5lIHRoaXMgaWYgeW91ciBVQVJUIGRvZXMgbm90IGltcGxlbWVudCB0aGUgYnVzeQorICBmdW5jdGlvbmFsaXR5LgorLSByZXNldHMgOiBwaGFuZGxlIHRvIHRoZSBwYXJlbnQgcmVzZXQgY29udHJvbGxlci4KKy0gcmVnLXNoaWZ0IDogcXVhbnRpdHkgdG8gc2hpZnQgdGhlIHJlZ2lzdGVyIG9mZnNldHMgYnkuICBJZiB0aGlzIHByb3BlcnR5IGlzCisgIG5vdCBwcmVzZW50IHRoZW4gdGhlIHJlZ2lzdGVyIG9mZnNldHMgYXJlIG5vdCBzaGlmdGVkLgorLSByZWctaW8td2lkdGggOiB0aGUgc2l6ZSAoaW4gYnl0ZXMpIG9mIHRoZSBJTyBhY2Nlc3NlcyB0aGF0IHNob3VsZCBiZQorICBwZXJmb3JtZWQgb24gdGhlIGRldmljZS4gIElmIHRoaXMgcHJvcGVydHkgaXMgbm90IHByZXNlbnQgdGhlbiBzaW5nbGUgYnl0ZQorICBhY2Nlc3NlcyBhcmUgdXNlZC4KKy0gZGNkLW92ZXJyaWRlIDogT3ZlcnJpZGUgdGhlIERDRCBtb2RlbSBzdGF0dXMgc2lnbmFsLiBUaGlzIHNpZ25hbCB3aWxsIGFsd2F5cworICBiZSByZXBvcnRlZCBhcyBhY3RpdmUgaW5zdGVhZCBvZiBiZWluZyBvYnRhaW5lZCBmcm9tIHRoZSBtb2RlbSBzdGF0dXMKKyAgcmVnaXN0ZXIuIERlZmluZSB0aGlzIGlmIHlvdXIgc2VyaWFsIHBvcnQgZG9lcyBub3QgdXNlIHRoaXMgcGluLgorLSBkc3Itb3ZlcnJpZGUgOiBPdmVycmlkZSB0aGUgRFRTIG1vZGVtIHN0YXR1cyBzaWduYWwuIFRoaXMgc2lnbmFsIHdpbGwgYWx3YXlzCisgIGJlIHJlcG9ydGVkIGFzIGFjdGl2ZSBpbnN0ZWFkIG9mIGJlaW5nIG9idGFpbmVkIGZyb20gdGhlIG1vZGVtIHN0YXR1cworICByZWdpc3Rlci4gRGVmaW5lIHRoaXMgaWYgeW91ciBzZXJpYWwgcG9ydCBkb2VzIG5vdCB1c2UgdGhpcyBwaW4uCistIGN0cy1vdmVycmlkZSA6IE92ZXJyaWRlIHRoZSBDVFMgbW9kZW0gc3RhdHVzIHNpZ25hbC4gVGhpcyBzaWduYWwgd2lsbCBhbHdheXMKKyAgYmUgcmVwb3J0ZWQgYXMgYWN0aXZlIGluc3RlYWQgb2YgYmVpbmcgb2J0YWluZWQgZnJvbSB0aGUgbW9kZW0gc3RhdHVzCisgIHJlZ2lzdGVyLiBEZWZpbmUgdGhpcyBpZiB5b3VyIHNlcmlhbCBwb3J0IGRvZXMgbm90IHVzZSB0aGlzIHBpbi4KKy0gcmktb3ZlcnJpZGUgOiBPdmVycmlkZSB0aGUgUkkgbW9kZW0gc3RhdHVzIHNpZ25hbC4gVGhpcyBzaWduYWwgd2lsbCBhbHdheXMgYmUKKyAgcmVwb3J0ZWQgYXMgaW5hY3RpdmUgaW5zdGVhZCBvZiBiZWluZyBvYnRhaW5lZCBmcm9tIHRoZSBtb2RlbSBzdGF0dXMgcmVnaXN0ZXIuCisgIERlZmluZSB0aGlzIGlmIHlvdXIgc2VyaWFsIHBvcnQgZG9lcyBub3QgdXNlIHRoaXMgcGluLgorCitFeGFtcGxlOgorCisJdWFydEA4MDIzMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic25wcyxkdy1hcGItdWFydCI7CisJCXJlZyA9IDwweDgwMjMwMDAwIDB4MTAwPjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDM2ODY0MDA+OworCQlpbnRlcnJ1cHRzID0gPDEwPjsKKwkJcmVnLXNoaWZ0ID0gPDI+OworCQlyZWctaW8td2lkdGggPSA8ND47CisJCWRjZC1vdmVycmlkZTsKKwkJZHNyLW92ZXJyaWRlOworCQljdHMtb3ZlcnJpZGU7CisJCXJpLW92ZXJyaWRlOworCX07CisKK0V4YW1wbGUgd2l0aCBvbmUgY2xvY2s6CisKKwl1YXJ0QDgwMjMwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzbnBzLGR3LWFwYi11YXJ0IjsKKwkJcmVnID0gPDB4ODAyMzAwMDAgMHgxMDA+OworCQljbG9ja3MgPSA8JmJhdWRjbGs+OworCQlpbnRlcnJ1cHRzID0gPDEwPjsKKwkJcmVnLXNoaWZ0ID0gPDI+OworCQlyZWctaW8td2lkdGggPSA8ND47CisJfTsKKworRXhhbXBsZSB3aXRoIHR3byBjbG9ja3M6CisKKwl1YXJ0QDgwMjMwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzbnBzLGR3LWFwYi11YXJ0IjsKKwkJcmVnID0gPDB4ODAyMzAwMDAgMHgxMDA+OworCQljbG9ja3MgPSA8JmJhdWRjbGs+LCA8JmFwYl9wY2xrPjsKKwkJY2xvY2stbmFtZXMgPSAiYmF1ZGNsayIsICJhcGJfcGNsayI7CisJCWludGVycnVwdHMgPSA8MTA+OworCQlyZWctc2hpZnQgPSA8Mj47CisJCXJlZy1pby13aWR0aCA9IDw0PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9zcHJkLXVhcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9zcHJkLXVhcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhZmYwZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL3NwcmQtdWFydC50eHQKQEAgLTAsMCArMSw3IEBACisqIFNwcmVhZHRydW0gc2VyaWFsIFVBUlQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogbXVzdCBiZSAic3ByZCxzYzk4MzYtdWFydCIKKy0gcmVnOiBvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistIGludGVycnVwdHM6IGV4YWN0bHkgb25lIGludGVycnVwdCBzcGVjaWZpZXIKKy0gY2xvY2tzOiBwaGFuZGxlcyB0byBpbnB1dCBjbG9ja3MuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL3N0LWFzYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL3N0LWFzYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVkODc3ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvc3QtYXNjLnR4dApAQCAtMCwwICsxLDE4IEBACisqc3QtYXNjKFNlcmlhbCBQb3J0KQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJzdCxhc2MiLgorLSByZWcsIHJlZy1uYW1lcywgaW50ZXJydXB0cywgaW50ZXJydXB0LW5hbWVzCTogU3RhbmRhcmQgd2F5IHRvIGRlZmluZSBkZXZpY2UKKwkJCXJlc291cmNlcyB3aXRoIG5hbWVzLiBsb29rIGluCisJCQlEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzb3VyY2UtbmFtZXMudHh0CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHN0LGh3LWZsb3ctY3RybAlib29sIGZsYWcgdG8gZW5hYmxlIGhhcmR3YXJlIGZsb3cgY29udHJvbC4KKy0gc3QsZm9yY2UtbTEJCWJvb2wgZmxhdCB0byBmb3JjZSBhc2MgdG8gYmUgaW4gTW9kZS0xIHJlY29tbWVkZWQKKwkJCWZvciBoaWdoIGJpdCByYXRlcyAoYWJvdmUgMTkuMkspCitFeGFtcGxlOgorc2VyaWFsQGZlNDQwMDAweworICAgIGNvbXBhdGlibGUgICAgPSAic3QsYXNjIjsKKyAgICByZWcgICAgICAgICA9IDwweGZlNDQwMDAwIDB4MmM+OworICAgIGludGVycnVwdHMgICAgID0gIDwwIDIwOSAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL3VuaXBoaWVyLXVhcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC91bmlwaGllci11YXJ0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjM4OTJhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC91bmlwaGllci11YXJ0LnR4dApAQCAtMCwwICsxLDIzIEBACitVbmlQaGllciBVQVJUIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJzb2Npb25leHQsdW5pcGhpZXItdWFydCIuCistIHJlZzogb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZS4KKy0gaW50ZXJydXB0czogYSBzaW5nbGUgaW50ZXJydXB0IHNwZWNpZmllci4KKy0gY2xvY2tzOiBwaGFuZGxlIHRvIHRoZSBpbnB1dCBjbG9jay4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gZmlmby1zaXplOiB0aGUgUlgvVFggRklGTyBzaXplLiAgRGVmYXVsdHMgdG8gNjQgaWYgbm90IHNwZWNpZmllZC4KKworRXhhbXBsZToKKwlhbGlhc2VzIHsKKwkJc2VyaWFsMCA9ICZzZXJpYWwwOworCX07CisKKwlzZXJpYWwwOiBzZXJpYWxANTQwMDY4MDAgeworCQljb21wYXRpYmxlID0gInNvY2lvbmV4dCx1bmlwaGllci11YXJ0IjsKKwkJcmVnID0gPDB4NTQwMDY4MDAgMHg0MD47CisJCWludGVycnVwdHMgPSA8MCAzMyA0PjsKKwkJY2xvY2tzID0gPCZ1YXJ0X2Nsaz47CisJCWZpZm8tc2l6ZSA9IDw2ND47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvdnQ4NTAwLXVhcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC92dDg1MDAtdWFydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI2NGU2MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvdnQ4NTAwLXVhcnQudHh0CkBAIC0wLDAgKzEsMjcgQEAKKyogVklBIFZUODUwMCBhbmQgV29uZGVyTWVkaWEgV004eHh4IFVBUlQgQ29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgInZpYSx2dDg1MDAtdWFydCIgKGZvciBWSUEvV29uZGVyTWVkaWEgY2hpcHMgdXAgdG8gYW5kCisJaW5jbHVkaW5nIFdNODg1MC9XTTg5NTApLCBvciAid20sd204ODgwLXVhcnQiIChmb3IgV004ODgwIGFuZCBsYXRlcikKKworLSByZWc6IGJhc2UgcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKwlyZWdpb24uCisKKy0gaW50ZXJydXB0czogaGFyZHdhcmUgaW50ZXJydXB0IG51bWJlcgorCistIGNsb2Nrczogc2hhbGwgYmUgdGhlIGlucHV0IHBhcmVudCBjbG9jayBwaGFuZGxlIGZvciB0aGUgY2xvY2suIFRoaXMgc2hvdWxkCisJYmUgdGhlIDI0TWh6IHJlZmVyZW5jZSBjbG9jay4KKworQWxpYXNlcyBtYXkgYmUgZGVmaW5lZCB0byBlbnN1cmUgdGhlIGNvcnJlY3Qgb3JkZXJpbmcgb2YgdGhlIHVhcnRzLgorCitFeGFtcGxlOgorCWFsaWFzZXMgeworCQlzZXJpYWwwID0gJnVhcnQwOworCX07CisKKwl1YXJ0MDogc2VyaWFsQGQ4MjAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJ2aWEsdnQ4NTAwLXVhcnQiOworCQlyZWcgPSA8MHhkODIwMDAwMCAweDEwNDA+OworCQlpbnRlcnJ1cHRzID0gPDMyPjsKKwkJY2xvY2tzID0gPCZjbGt1YXJ0MD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpby9hbGx3aW5uZXIsc3VuNGktcHMyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpby9hbGx3aW5uZXIsc3VuNGktcHMyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjJhNzY5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlvL2FsbHdpbm5lcixzdW40aS1wczIudHh0CkBAIC0wLDAgKzEsMjMgQEAKKyogRGV2aWNlIHRyZWUgYmluZGluZ3MgZm9yIEFsbHdpbm5lciBBMTAsIEEyMCBQUzIgaG9zdCBjb250cm9sbGVyCisKK0EyMCBQUzIgaXMgZHVhbCByb2xlIGNvbnRyb2xsZXIgKFBTMiBob3N0IGFuZCBQUzIgZGV2aWNlKS4gVGhlc2UgYmluZGluZ3MgYXJlCitmb3IgUFMyIEExMC9BMjAgaG9zdCBjb250cm9sbGVyLiBJQk0gY29tcGxpYW50IElCTSBQUzIgYW5kIEFULWNvbXBhdGlibGUga2V5Ym9hcmQKK2FuZCBtb3VzZSBjYW4gYmUgY29ubmVjdGVkLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgLSByZWcgICAgICAgICAgICAgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlLgorIC0gY29tcGF0aWJsZSAgICAgIDogU2hvdWxkIGJlIGFzIG9mIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICAgICAgICAgICAtICJhbGx3aW5uZXIsc3VuNGktYTEwLXBzMiIKKyAtIGludGVycnVwdHMgICAgICA6IFRoZSBpbnRlcnJ1cHQgbGluZSBjb25uZWN0ZWQgdG8gdGhlIFBTMi4KKyAtIGNsb2NrcyAgICAgICAgICA6IFRoZSBnYXRlIGNsayBjb25uZWN0ZWQgdG8gdGhlIFBTMi4KKworCitFeGFtcGxlOgorCXBzMjA6IHBzMkAweDAxYzJhMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNGktYTEwLXBzMiI7CisJCXJlZyA9IDwweDAxYzJhMDAwIDB4NDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDYyIDQ+OworCQljbG9ja3MgPSA8JmFwYjFfZ2F0ZXMgNj47CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpby9hbHRlcmFfcHMyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpby9hbHRlcmFfcHMyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjAxOTllCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlvL2FsdGVyYV9wczIudHh0CkBAIC0wLDAgKzEsNSBAQAorQWx0ZXJhIFVQIFBTLzIgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJBTFRSLHBzMi0xLjAiLiA8REVQUkVDQVRFRD4KKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiYWx0cixwczItMS4wIi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpby9vbHBjLGFwLXNwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpby9vbHBjLGFwLXNwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTcyMTgzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlvL29scGMsYXAtc3AudHh0CkBAIC0wLDAgKzEsMTMgQEAKK09MUEMgQVAtU1Agc2VyaW8gaW50ZXJmYWNlCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAib2xwYyxhcC1zcCIKKy0gcmVnIDogYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgU29DJ3MgV1RNIHJlZ2lzdGVycworLSBpbnRlcnJ1cHRzIDogU1AtQVAgaW50ZXJydXB0CisKK0V4YW1wbGU6CisJYXAtc3BAZDQyOTAwMDAgeworCQljb21wYXRpYmxlID0gIm9scGMsYXAtc3AiOworCQlyZWcgPSA8MHhkNDI5MDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDQwPjsKKwl9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaW8vc25wcy1hcmNfcHMyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpby9zbnBzLWFyY19wczIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4YzJmMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaW8vc25wcy1hcmNfcHMyLnR4dApAQCAtMCwwICsxLDE2IEBACisqIEFSQyBQUy8yIGRyaXZlcjogUFMvMiBibG9jayB1c2VkIGluIHNvbWUgQVJDIEZQR0EncyAmIG5TSU0gT1NDSSBtb2RlbAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlCQk6ICJzbnBzLGFyY19wczIiCistIHJlZwkJCTogb2Zmc2V0IGFuZCBsZW5ndGggKGFsd2F5cyAweDE0KSBvZiByZWdpc3RlcnMKKy0gaW50ZXJydXB0cwkJOiBpbnRlcnJ1cHQKKy0gaW50ZXJydXB0LW5hbWVzCTogbmFtZSBvZiBpbnRlcnJ1cHQsIG11c3QgYmUgImFyY19wczJfaXJxIgorCitFeGFtcGxlOgorCitzZXJpb0BjOTAwMDQwMCB7CisJY29tcGF0aWJsZSA9ICJzbnBzLGFyY19wczIiOworCXJlZyA9IDwweGM5MDAwNDAwIDB4MTQ+OworCWludGVycnVwdHMgPSA8MTM+OworCWludGVycnVwdC1uYW1lcyA9ICJhcmNfcHMyX2lycSI7Cit9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc29jL2ZzbC9ibWFuLXBvcnRhbHMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvYy9mc2wvYm1hbi1wb3J0YWxzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTAwZTE0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvYy9mc2wvYm1hbi1wb3J0YWxzLnR4dApAQCAtMCwwICsxLDU2IEBACitRb3JJUSBEUEFBIEJ1ZmZlciBNYW5hZ2VyIFBvcnRhbHMgRGV2aWNlIFRyZWUgQmluZGluZworCitDb3B5cmlnaHQgKEMpIDIwMDggLSAyMDE0IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yIEluYy4KKworQ09OVEVOVFMKKworCS0gQk1hbiBQb3J0YWwKKwktIEV4YW1wbGUKKworQk1hbiBQb3J0YWwgTm9kZQorCitQb3J0YWxzIGFyZSBtZW1vcnkgbWFwcGVkIGludGVyZmFjZXMgdG8gQk1hbiB0aGF0IGFsbG93IGxvdy1sYXRlbmN5LCBsb2NrLWxlc3MKK2ludGVyYWN0aW9uIGJ5IHNvZnR3YXJlIHJ1bm5pbmcgb24gcHJvY2Vzc29yIGNvcmVzLCBhY2NlbGVyYXRvcnMgYW5kIG5ldHdvcmsKK2ludGVyZmFjZXMgd2l0aCB0aGUgQk1hbgorCitQUk9QRVJUSUVTCisKKy0gY29tcGF0aWJsZQorCVVzYWdlOgkJUmVxdWlyZWQKKwlWYWx1ZSB0eXBlOgk8c3RyaW5nbGlzdD4KKwlEZWZpbml0aW9uOglNdXN0IGluY2x1ZGUgImZzbCxibWFuLXBvcnRhbC08aGFyZHdhcmUgcmV2aXNpb24+IgorCQkJTWF5IGluY2x1ZGUgImZzbCw8U29DPi1ibWFuLXBvcnRhbCIgb3IgImZzbCxibWFuLXBvcnRhbCIKKworLSByZWcKKwlVc2FnZToJCVJlcXVpcmVkCisJVmFsdWUgdHlwZToJPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOglUd28gcmVnaW9ucy4gVGhlIGZpcnN0IGlzIHRoZSBjYWNoZS1lbmFibGVkIHJlZ2lvbiBvZgorCQkJdGhlIHBvcnRhbC4gVGhlIHNlY29uZCBpcyB0aGUgY2FjaGUtaW5oaWJpdGVkIHJlZ2lvbiBvZgorCQkJdGhlIHBvcnRhbAorCistIGludGVycnVwdHMKKwlVc2FnZToJCVJlcXVpcmVkCisJVmFsdWUgdHlwZToJPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOglTdGFuZGFyZCBwcm9wZXJ0eQorCitFWEFNUExFCisKK1RoZSBleGFtcGxlIGJlbG93IHNob3dzIGEgKFA0MDgwKSBCTWFuIHBvcnRhbHMgY29udGFpbmVyL2J1cyBub2RlIHdpdGggdHdvIHBvcnRhbHMKKworCWJtYW4tcG9ydGFsc0BmZjQwMDAwMDAgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCWNvbXBhdGlibGUgPSAic2ltcGxlLWJ1cyI7CisJCXJhbmdlcyA9IDwwIDB4ZiAweGY0MDAwMDAwIDB4MjAwMDAwPjsKKworCQlibWFuLXBvcnRhbEAwIHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLGJtYW4tcG9ydGFsLTEuMC4wIiwgImZzbCxibWFuLXBvcnRhbCI7CisJCQlyZWcgPSA8MHgwIDB4NDAwMD4sIDwweDEwMDAwMCAweDEwMDA+OworCQkJaW50ZXJydXB0cyA9IDwxMDUgMiAwIDA+OworCQl9OworCQlibWFuLXBvcnRhbEA0MDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLGJtYW4tcG9ydGFsLTEuMC4wIiwgImZzbCxibWFuLXBvcnRhbCI7CisJCQlyZWcgPSA8MHg0MDAwIDB4NDAwMD4sIDwweDEwMTAwMCAweDEwMDA+OworCQkJaW50ZXJydXB0cyA9IDwxMDcgMiAwIDA+OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc29jL2ZzbC9ibWFuLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2MvZnNsL2JtYW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3YWM4MzQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc29jL2ZzbC9ibWFuLnR4dApAQCAtMCwwICsxLDEzNSBAQAorUW9ySVEgRFBBQSBCdWZmZXIgTWFuYWdlciBEZXZpY2UgVHJlZSBCaW5kaW5ncworCitDb3B5cmlnaHQgKEMpIDIwMDggLSAyMDE0IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yIEluYy4KKworQ09OVEVOVFMKKworCS0gQk1hbiBOb2RlCisJLSBCTWFuIFByaXZhdGUgTWVtb3J5IE5vZGUKKwktIEV4YW1wbGUKKworQk1hbiBOb2RlCisKK1RoZSBCdWZmZXIgTWFuYWdlciBpcyBwYXJ0IG9mIHRoZSBEYXRhLVBhdGggQWNjZWxlcmF0aW9uIEFyY2hpdGVjdHVyZSAoRFBBQSkuCitCTWFuIHN1cHBvcnRzIGhhcmR3YXJlIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBvZiBidWZmZXJzIGJlbG9uZ2luZyB0byBwb29scworb3JpZ2luYWxseSBjcmVhdGVkIGJ5IHNvZnR3YXJlIHdpdGggY29uZmlndXJhYmxlIGRlcGxldGlvbiB0aHJlc2hvbGRzLiBUaGlzCitiaW5kaW5nIGNvdmVycyB0aGUgQ0NTUiBzcGFjZSBwcm9ncmFtbWluZyBtb2RlbAorCitQUk9QRVJUSUVTCisKKy0gY29tcGF0aWJsZQorCVVzYWdlOgkJUmVxdWlyZWQKKwlWYWx1ZSB0eXBlOgk8c3RyaW5nbGlzdD4KKwlEZWZpbml0aW9uOglNdXN0IGluY2x1ZGUgImZzbCxibWFuIgorCQkJTWF5IGluY2x1ZGUgImZzbCw8U29DPi1ibWFuIgorCistIHJlZworCVVzYWdlOgkJUmVxdWlyZWQKKwlWYWx1ZSB0eXBlOgk8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246CVJlZ2lzdGVycyByZWdpb24gd2l0aGluIHRoZSBDQ1NSIGFkZHJlc3Mgc3BhY2UKKworVGhlIEJNYW4gcmV2aXNpb24gaW5mb3JtYXRpb24gaXMgbG9jYXRlZCBpbiB0aGUgQk1BTl9JUF9SRVZfMS8yIHJlZ2lzdGVycyB3aGljaAorYXJlIGxvY2F0ZWQgYXQgb2Zmc2V0cyAweGJmOCBhbmQgMHhiZmMKKworLSBpbnRlcnJ1cHRzCisJVXNhZ2U6CQlSZXF1aXJlZAorCVZhbHVlIHR5cGU6CTxwcm9wLWVuY29kZWQtYXJyYXk+CisJRGVmaW5pdGlvbjoJU3RhbmRhcmQgcHJvcGVydHkuIFRoZSBlcnJvciBpbnRlcnJ1cHQKKworLSBmc2wsYm1hbi1wb3J0YWxzCisJVXNhZ2U6CQlSZXF1aXJlZAorCVZhbHVlIHR5cGU6CTxwaGFuZGxlPgorCURlZmluaXRpb246CVBoYW5kbGUgdG8gdGhpcyBCTWFuIGluc3RhbmNlJ3MgcG9ydGFscworCistIGZzbCxsaW9kbgorCVVzYWdlOgkJU2VlIHBhbXUudHh0CisJVmFsdWUgdHlwZToJPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOglQQU1VIHByb3BlcnR5IHVzZWQgZm9yIHN0YXRpYyBMSU9ETiBhc3NpZ25tZW50CisKKy0gZnNsLGlvbW11LXBhcmVudAorCVVzYWdlOgkJU2VlIHBhbXUudHh0CisJVmFsdWUgdHlwZToJPHBoYW5kbGU+CisJRGVmaW5pdGlvbjoJUEFNVSBwcm9wZXJ0eSB1c2VkIGZvciBkeW5hbWljIExJT0ROIGFzc2lnbm1lbnQKKworCUZvciBhZGRpdGlvbmFsIGRldGFpbHMgYWJvdXQgdGhlIFBBTVUvTElPRE4gYmluZGluZyhzKSBzZWUgcGFtdS50eHQKKworRGV2aWNlcyBjb25uZWN0ZWQgdG8gYSBCTWFuIGluc3RhbmNlIHZpYSBEaXJlY3QgQ29ubmVjdCBQb3J0YWxzIChEQ1ApIG11c3QgbGluawordG8gdGhlIHJlc3BlY3RpdmUgQk1hbiBpbnN0YW5jZQorCistIGZzbCxibWFuCisJVXNhZ2U6CQlSZXF1aXJlZAorCVZhbHVlIHR5cGU6CTxwcm9wLWVuY29kZWQtYXJyYXk+CisJRGVzY3JpcHRpb246CUxpc3Qgb2YgcGhhbmRsZSBhbmQgRENQIGluZGV4IHBhaXJzLCB0byB0aGUgQk1hbiBpbnN0YW5jZQorCQkJdG8gd2hpY2ggdGhpcyBkZXZpY2UgaXMgY29ubmVjdGVkIHZpYSB0aGUgRENQCisKK0JNYW4gUHJpdmF0ZSBNZW1vcnkgTm9kZQorCitCTWFuIHJlcXVpcmVzIGEgY29udGlndW91cyByYW5nZSBvZiBwaHlzaWNhbCBtZW1vcnkgdXNlZCBmb3IgdGhlIGJhY2tpbmcgc3RvcmUKK2ZvciBCTWFuIEZyZWUgQnVmZmVyIFByb3h5IFJlY29yZHMgKEZCUFIpLiBUaGlzIG1lbW9yeSBpcyByZXNlcnZlZC9hbGxvY2F0ZWQgYXMgYQorbm9kZSB1bmRlciB0aGUgL3Jlc2VydmVkLW1lbW9yeSBub2RlCisKK1RoZSBCTWFuIEZCUFIgbWVtb3J5IG5vZGUgbXVzdCBiZSBuYW1lZCAiYm1hbi1mYnByIgorCitQUk9QRVJUSUVTCisKKy0gY29tcGF0aWJsZQorCVVzYWdlOgkJcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOgk8c3RyaW5nbGlzdD4KKwlEZWZpbml0aW9uOglNdXN0IGluY2xpZGUgImZzbCxibWFuLWZicHIiCisKK1RoZSBmb2xsb3dpbmcgY29uc3RyYWludHMgYXJlIHJlbGV2YW50IHRvIHRoZSBGQlBSIHByaXZhdGUgbWVtb3J5OgorCS0gVGhlIHNpemUgbXVzdCBiZSAyXihzaXplICsgMSksIHdpdGggc2l6ZSA9IDExLi4zMy4gVGhhdCBpcyA0IEtpQiB0bworCSAgMTYgR2lCCisJLSBUaGUgYWxpZ25tZW50IG11c3QgYmUgYSBtdWxpcHRsZSBvZiB0aGUgbWVtb3J5IHNpemUKKworVGhlIHNpemUgb2YgdGhlIEZCUFIgbXVzdCBiZSBjaG9zZW4gYnkgb2JzZXJ2aW5nIHRoZSBoYXJkd2FyZSBmZWF0dXJlcyBjb25maWd1cmVkCit2aWEgdGhlIFJlc2V0IENvbmZpZ3VyYXRpb24gV29yZCAoUkNXKSBhbmQgdGhhdCBhcmUgcmVsZXZhbnQgdG8gYSBzcGVjaWZpYyBib2FyZAorKGUuZy4gbnVtYmVyIG9mIE1BQyhzKSBwaW5uZWQtb3V0LCBudW1iZXIgb2Ygb2ZmbGluZS9ob3N0IGNvbW1hbmQgRk1hbiBwb3J0cywKK2V0Yy4pLiBUaGUgc2l6ZSBjb25maWd1cmVkIGluIHRoZSBEVCBtdXN0IHJlZmxlY3QgdGhlIGhhcmR3YXJlIGNhcGFiaWxpdGllcyBhbmQKK25vdCB0aGUgc3BlY2lmaWMgbmVlZHMgb2YgYW4gYXBwbGljYXRpb24KKworRm9yIGFkZGl0aW9uYWwgZGV0YWlscyBhYm91dCByZXNlcnZlZCBtZW1vcnkgcmVnaW9ucyBzZWUgcmVzZXJ2ZWQtbWVtb3J5LnR4dAorCitFWEFNUExFCisKK1RoZSBleGFtcGxlIGJlbG93IHNob3dzIGEgQk1hbiBGQlBSIGR5bmFtaWMgYWxsb2NhdGlvbiBtZW1vcnkgbm9kZQorCisJcmVzZXJ2ZWQtbWVtb3J5IHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mj47CisJCSNzaXplLWNlbGxzID0gPDI+OworCQlyYW5nZXM7CisKKwkJYm1hbl9mYnByOiBibWFuLWZicHIgeworCQkJY29tcGF0aWJsZSA9ICJmc2wsYm1hbi1mYnByIjsKKwkJCWFsbG9jLXJhbmdlcyA9IDwwIDAgMHgxMCAwPjsKKwkJCXNpemUgPSA8MCAweDEwMDAwMDA+OworCQkJYWxpZ25tZW50ID0gPDAgMHgxMDAwMDAwPjsKKwkJfTsKKwl9OworCitUaGUgZXhhbXBsZSBiZWxvdyBzaG93cyBhIChQNDA4MCkgQk1hbiBDQ1NSLXNwYWNlIG5vZGUKKworCWJwb3J0YWxzOiBibWFuLXBvcnRhbHNAZmY0MDAwMDAwIHsKKwkJLi4uCisJfTsKKworCWNyeXB0b0AzMDAwMDAgeworCQkuLi4KKwkJZnNsLGJtYW4gPSA8JmJtYW4sIDI+OworCQkuLi4KKwl9OworCisJYm1hbjogYm1hbkAzMWEwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxibWFuIjsKKwkJcmVnID0gPDB4MzFhMDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MTYgMiAxIDI+OworCQlmc2wsbGlvZG4gPSA8MHgxNz47CisJCWZzbCxibWFuLXBvcnRhbHMgPSA8JmJwb3J0YWxzPjsKKwkJbWVtb3J5LXJlZ2lvbiA9IDwmYm1hbl9mYnByPjsKKwl9OworCisJZm1hbkA0MDAwMDAgeworCQkuLi4KKwkJZnNsLGJtYW4gPSA8JmJtYW4sIDA+OworCQkuLi4KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvYy9mc2wvcW1hbi1wb3J0YWxzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2MvZnNsL3FtYW4tcG9ydGFscy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdlNDZjYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2MvZnNsL3FtYW4tcG9ydGFscy50eHQKQEAgLTAsMCArMSwxNTQgQEAKK1FvcklRIERQQUEgUXVldWUgTWFuYWdlciBQb3J0YWxzIERldmljZSBUcmVlIEJpbmRpbmcKKworQ29weXJpZ2h0IChDKSAyMDA4IC0gMjAxNCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciBJbmMuCisKK0NPTlRFTlRTCisKKwktIFFNYW4gUG9ydGFsCisJLSBRTWFuIFBvb2wgQ2hhbm5lbAorCS0gRXhhbXBsZQorCitRTWFuIFBvcnRhbCBOb2RlCisKK1BvcnRhbHMgYXJlIG1lbW9yeSBtYXBwZWQgaW50ZXJmYWNlcyB0byBRTWFuIHRoYXQgYWxsb3cgbG93LWxhdGVuY3ksIGxvY2stbGVzcworaW50ZXJhY3Rpb24gYnkgc29mdHdhcmUgcnVubmluZyBvbiBwcm9jZXNzb3IgY29yZXMsIGFjY2VsZXJhdG9ycyBhbmQgbmV0d29yaworaW50ZXJmYWNlcyB3aXRoIHRoZSBRTWFuCisKK1BST1BFUlRJRVMKKworLSBjb21wYXRpYmxlCisJVXNhZ2U6CQlSZXF1aXJlZAorCVZhbHVlIHR5cGU6CTxzdHJpbmdsaXN0PgorCURlZmluaXRpb246CU11c3QgaW5jbHVkZSAiZnNsLHFtYW4tcG9ydGFsLTxoYXJkd2FyZSByZXZpc2lvbj4iCisJCQlNYXkgaW5jbHVkZSAiZnNsLDxTb0M+LXFtYW4tcG9ydGFsIiBvciAiZnNsLHFtYW4tcG9ydGFsIgorCistIHJlZworCVVzYWdlOgkJUmVxdWlyZWQKKwlWYWx1ZSB0eXBlOgk8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246CVR3byByZWdpb25zLiBUaGUgZmlyc3QgaXMgdGhlIGNhY2hlLWVuYWJsZWQgcmVnaW9uIG9mCisJCQl0aGUgcG9ydGFsLiBUaGUgc2Vjb25kIGlzIHRoZSBjYWNoZS1pbmhpYml0ZWQgcmVnaW9uIG9mCisJCQl0aGUgcG9ydGFsCisKKy0gaW50ZXJydXB0cworCVVzYWdlOgkJUmVxdWlyZWQKKwlWYWx1ZSB0eXBlOgk8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246CVN0YW5kYXJkIHByb3BlcnR5CisKKy0gZnNsLGxpb2RuCisJVXNhZ2U6CQlTZWUgcGFtdS50eHQKKwlWYWx1ZSB0eXBlOgk8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246CVR3byBMSU9ETihzKS4gRFFSUiBMSU9ETiAoRExJT0ROKSBhbmQgRnJhbWUgTElPRE4KKwkJCShGTElPRE4pCisKKy0gZnNsLGlvbW11LXBhcmVudAorCVVzYWdlOgkJU2VlIHBhbXUudHh0CisJVmFsdWUgdHlwZToJPHBoYW5kbGU+CisJRGVmaW5pdGlvbjoJUEFNVSBwcm9wZXJ0eSB1c2VkIGZvciBkeW5hbWljIExJT0ROIGFzc2lnbm1lbnQKKworCUZvciBhZGRpdGlvbmFsIGRldGFpbHMgYWJvdXQgdGhlIFBBTVUvTElPRE4gYmluZGluZyhzKSBzZWUgcGFtdS50eHQKKworLSBjZWxsLWluZGV4CisJVXNhZ2U6CQlSZXF1aXJlZAorCVZhbHVlIHR5cGU6CTx1MzI+CisJRGVmaW5pdGlvbjoJVGhlIGhhcmR3YXJlIGluZGV4IG9mIHRoZSBjaGFubmVsLiBUaGlzIGNhbiBhbHNvIGJlCisJCQlkZXRlcm1pbmVkIGJ5IGRpdmlkaW5nIGFueSBvZiB0aGUgY2hhbm5lbCdzIDggd29yayBxdWV1ZQorCQkJSURzIGJ5IDgKKworSW4gYWRkaXRpb24gdG8gdGhlc2UgcHJvcGVydGllcyB0aGUgcW1hbi1wb3J0YWxzIHNob3VsZCBoYXZlIHN1Yi1ub2RlcyB0bworcmVwcmVzZW50IHRoZSBIVyBkZXZpY2VzL3BvcnRhbHMgdGhhdCBhcmUgY29ubmVjdGVkIHRvIHRoZSBzb2Z0d2FyZSBwb3J0YWwKK2Rlc2NyaWJlZCBoZXJlCisKK1RoZSBjdXJyZW50bHkgc3VwcG9ydGVkIHN1Yi1ub2RlcyBhcmU6CisJKiBmbWFuMAorCSogZm1hbjEKKwkqIHBtZQorCSogY3J5cHRvCisKK1RoZXNlIHN1Ym5vZGVzIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKKworLSBmc2wsbGlvZG4KKwlVc2FnZToJCVNlZSBwYW11LnR4dAorCVZhbHVlIHR5cGU6CTxwcm9wLWVuY29kZWQtYXJyYXk+CisJRGVmaW5pdGlvbjoJUEFNVSBwcm9wZXJ0eSB1c2VkIGZvciBzdGF0aWMgTElPRE4gYXNzaWdubWVudAorCistIGZzbCxpb21tdS1wYXJlbnQKKwlVc2FnZToJCVNlZSBwYW11LnR4dAorCVZhbHVlIHR5cGU6CTxwaGFuZGxlPgorCURlZmluaXRpb246CVBBTVUgcHJvcGVydHkgdXNlZCBmb3IgZHluYW1pYyBMSU9ETiBhc3NpZ25tZW50CisKKy0gZGV2LWhhbmRsZQorCVVzYWdlOgkJUmVxdWlyZWQKKwlWYWx1ZSB0eXBlOgk8cGhhbmRsZT4KKwlEZWZpbml0aW9uOglUaGUgcGhhbmRsZSB0byB0aGUgcGFydGljdWxhciBoYXJkd2FyZSBkZXZpY2UgdGhhdCB0aGlzCisJCQlwb3J0YWwgaXMgY29ubmVjdGVkIHRvLgorCitEUEFBIFFNYW4gUG9vbCBDaGFubmVsIE5vZGVzCisKK1Bvb2wgQ2hhbm5lbHMgYXJlIGRlZmluZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMuCisKK1BST1BFUlRJRVMKKworLSBjb21wYXRpYmxlCisJVXNhZ2U6CQlSZXF1aXJlZAorCVZhbHVlIHR5cGU6CTxzdHJpbmdsaXN0PgorCURlZmluaXRpb246CU11c3QgaW5jbHVkZSAiZnNsLHFtYW4tcG9vbC1jaGFubmVsIgorCQkJTWF5IGluY2x1ZGUgImZzbCw8U29DPi1xbWFuLXBvb2wtY2hhbm5lbCIKKworLSBmc2wscW1hbi1jaGFubmVsLWlkCisJVXNhZ2U6CQlSZXF1aXJlZAorCVZhbHVlIHR5cGU6CTx1MzI+CisJRGVmaW5pdGlvbjoJVGhlIGhhcmR3YXJlIGluZGV4IG9mIHRoZSBjaGFubmVsLiBUaGlzIGNhbiBhbHNvIGJlCisJCQlkZXRlcm1pbmVkIGJ5IGRpdmlkaW5nIGFueSBvZiB0aGUgY2hhbm5lbCdzIDggd29yayBxdWV1ZQorCQkJSURzIGJ5IDgKKworRVhBTVBMRQorCitUaGUgZXhhbXBsZSBiZWxvdyBzaG93cyBhIChQNDA4MCkgUU1hbiBwb3J0YWxzIGNvbnRhaW5lci9idXMgbm9kZSB3aXRoIHR3byBwb3J0YWxzCisKKwlxbWFuLXBvcnRhbHNAZmY0MjAwMDAwIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQljb21wYXRpYmxlID0gInNpbXBsZS1idXMiOworCQlyYW5nZXMgPSA8MCAweGYgMHhmNDIwMDAwMCAweDIwMDAwMD47CisKKwkJcW1hbi1wb3J0YWxAMCB7CisJCQljb21wYXRpYmxlID0gImZzbCxxbWFuLXBvcnRhbC0xLjIuMCIsICJmc2wscW1hbi1wb3J0YWwiOworCQkJcmVnID0gPDAgMHg0MDAwPiwgPDB4MTAwMDAwIDB4MTAwMD47CisJCQlpbnRlcnJ1cHRzID0gPDEwNCAyIDAgMD47CisJCQlmc2wsbGlvZG4gPSA8MSAyPjsKKwkJCWZzbCxxbWFuLWNoYW5uZWwtaWQgPSA8MD47CisKKwkJCWZtYW4wIHsKKwkJCQlmc2wsbGlvZG4gPSA8MHgyMT47CisJCQkJZGV2LWhhbmRsZSA9IDwmZm1hbjA+OworCQkJfTsKKwkJCWZtYW4xIHsKKwkJCQlmc2wsbGlvZG4gPSA8MHhhMT47CisJCQkJZGV2LWhhbmRsZSA9IDwmZm1hbjE+OworCQkJfTsKKwkJCWNyeXB0byB7CisJCQkJZnNsLGxpb2RuID0gPDB4NDEgMHg2Nj47CisJCQkJZGV2LWhhbmRsZSA9IDwmY3J5cHRvPjsKKwkJCX07CisJCX07CisJCXFtYW4tcG9ydGFsQDQwMDAgeworCQkJY29tcGF0aWJsZSA9ICJmc2wscW1hbi1wb3J0YWwtMS4yLjAiLCAiZnNsLHFtYW4tcG9ydGFsIjsKKwkJCXJlZyA9IDwweDQwMDAgMHg0MDAwPiwgPDB4MTAxMDAwIDB4MTAwMD47CisJCQlpbnRlcnJ1cHRzID0gPDEwNiAyIDAgMD47CisJCQlmc2wsbGlvZG4gPSA8MyA0PjsKKwkJCWNlbGwtaW5kZXggPSA8MT47CisKKwkJCWZtYW4wIHsKKwkJCQlmc2wsbGlvZG4gPSA8MHgyMj47CisJCQkJZGV2LWhhbmRsZSA9IDwmZm1hbjA+OworCQkJfTsKKwkJCWZtYW4xIHsKKwkJCQlmc2wsbGlvZG4gPSA8MHhhMj47CisJCQkJZGV2LWhhbmRsZSA9IDwmZm1hbjE+OworCQkJfTsKKwkJCWNyeXB0byB7CisJCQkJZnNsLGxpb2RuID0gPDB4NDIgMHg2Nz47CisJCQkJZGV2LWhhbmRsZSA9IDwmY3J5cHRvPjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2MvZnNsL3FtYW4udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvYy9mc2wvcW1hbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU2ZWJiOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2MvZnNsL3FtYW4udHh0CkBAIC0wLDAgKzEsMTc1IEBACitRb3JJUSBEUEFBIFF1ZXVlIE1hbmFnZXIgRGV2aWNlIFRyZWUgQmluZGluZworCitDb3B5cmlnaHQgKEMpIDIwMDggLSAyMDE0IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yIEluYy4KKworQ09OVEVOVFMKKworCS0gUU1hbiBOb2RlCisJLSBRTWFuIFByaXZhdGUgTWVtb3J5IE5vZGVzCisJLSBFeGFtcGxlCisKK1FNYW4gTm9kZQorCitUaGUgUXVldWUgTWFuYWdlciBpcyBwYXJ0IG9mIHRoZSBEYXRhLVBhdGggQWNjZWxlcmF0aW9uIEFyY2hpdGVjdHVyZSAoRFBBQSkuIFFNYW4KK3N1cHBvcnRzIHF1ZXVpbmcgYW5kIFFvUyBzY2hlZHVsaW5nIG9mIGZyYW1lcyB0byBDUFVzLCBuZXR3b3JrIGludGVyZmFjZXMgYW5kCitEUEFBIGxvZ2ljIG1vZHVsZXMsIG1haW50YWlucyBwYWNrZXQgb3JkZXJpbmcgd2l0aGluIGZsb3dzLiBCZXNpZGVzIHByb3ZpZGluZworZmxvdy1sZXZlbCBxdWV1aW5nLCBpcyBhbHNvIHJlc3BvbnNpYmxlIGZvciBjb25nZXN0aW9uIG1hbmFnZW1lbnQgZnVuY3Rpb25zIHN1Y2gKK2FzIFJFRC9XUkVELCBjb25nZXN0aW9uIG5vdGlmaWNhdGlvbnMgYW5kIHRhaWwgZGlzY2FyZHMuIFRoaXMgYmluZGluZyBjb3ZlcnMgdGhlCitDQ1NSIHNwYWNlIHByb2dyYW1taW5nIG1vZGVsCisKK1BST1BFUlRJRVMKKworLSBjb21wYXRpYmxlCisJVXNhZ2U6CQlSZXF1aXJlZAorCVZhbHVlIHR5cGU6CTxzdHJpbmdsaXN0PgorCURlZmluaXRpb246CU11c3QgaW5jbHVkZSAiZnNsLHFtYW4iCisJCQlNYXkgaW5jbHVkZSAiZnNsLDxTb0M+LXFtYW4iCisKKy0gcmVnCisJVXNhZ2U6CQlSZXF1aXJlZAorCVZhbHVlIHR5cGU6CTxwcm9wLWVuY29kZWQtYXJyYXk+CisJRGVmaW5pdGlvbjoJUmVnaXN0ZXJzIHJlZ2lvbiB3aXRoaW4gdGhlIENDU1IgYWRkcmVzcyBzcGFjZQorCitUaGUgUU1hbiByZXZpc2lvbiBpbmZvcm1hdGlvbiBpcyBsb2NhdGVkIGluIHRoZSBRTUFOX0lQX1JFVl8xLzIgcmVnaXN0ZXJzIHdoaWNoCithcmUgbG9jYXRlZCBhdCBvZmZzZXRzIDB4YmY4IGFuZCAweGJmYworCistIGludGVycnVwdHMKKwlVc2FnZToJCVJlcXVpcmVkCisJVmFsdWUgdHlwZToJPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOglTdGFuZGFyZCBwcm9wZXJ0eS4gVGhlIGVycm9yIGludGVycnVwdAorCistIGZzbCxxbWFuLXBvcnRhbHMKKwlVc2FnZToJCVJlcXVpcmVkCisJVmFsdWUgdHlwZToJPHBoYW5kbGU+CisJRGVmaW5pdGlvbjoJUGhhbmRsZSB0byB0aGlzIFFNYW4gaW5zdGFuY2UncyBwb3J0YWxzCisKKy0gZnNsLGxpb2RuCisJVXNhZ2U6CQlTZWUgcGFtdS50eHQKKwlWYWx1ZSB0eXBlOgk8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246CVBBTVUgcHJvcGVydHkgdXNlZCBmb3Igc3RhdGljIExJT0ROIGFzc2lnbm1lbnQKKworLSBmc2wsaW9tbXUtcGFyZW50CisJVXNhZ2U6CQlTZWUgcGFtdS50eHQKKwlWYWx1ZSB0eXBlOgk8cGhhbmRsZT4KKwlEZWZpbml0aW9uOglQQU1VIHByb3BlcnR5IHVzZWQgZm9yIGR5bmFtaWMgTElPRE4gYXNzaWdubWVudAorCisJRm9yIGFkZGl0aW9uYWwgZGV0YWlscyBhYm91dCB0aGUgUEFNVS9MSU9ETiBiaW5kaW5nKHMpIHNlZSBwYW11LnR4dAorCistIGNsb2NrcworCVVzYWdlOgkJU2VlIGNsb2NrLWJpbmRpbmdzLnR4dCBhbmQgcW9yaXEtY2xvY2sudHh0CisJVmFsdWUgdHlwZToJPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOglSZWZlcmVuY2UgaW5wdXQgY2xvY2suIEl0cyBmcmVxdWVuY3kgaXMgaGFsZiBvZiB0aGUKKwkJCXBsYXRmb3JtIGNsb2NrCisKK0RldmljZXMgY29ubmVjdGVkIHRvIGEgUU1hbiBpbnN0YW5jZSB2aWEgRGlyZWN0IENvbm5lY3QgUG9ydGFscyAoRENQKSBtdXN0IGxpbmsKK3RvIHRoZSByZXNwZWN0aXZlIFFNYW4gaW5zdGFuY2UKKworLSBmc2wscW1hbgorCVVzYWdlOgkJUmVxdWlyZWQKKwlWYWx1ZSB0eXBlOgk8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlc2NyaXB0aW9uOglMaXN0IG9mIHBoYW5kbGUgYW5kIERDUCBpbmRleCBwYWlycywgdG8gdGhlIFFNYW4gaW5zdGFuY2UKKwkJCXRvIHdoaWNoIHRoaXMgZGV2aWNlIGlzIGNvbm5lY3RlZCB2aWEgdGhlIERDUAorCitRTWFuIFByaXZhdGUgTWVtb3J5IE5vZGVzCisKK1FNYW4gcmVxdWlyZXMgdHdvIGNvbnRpZ3VvdXMgcmFuZ2Ugb2YgcGh5c2ljYWwgbWVtb3J5IHVzZWQgZm9yIHRoZSBiYWNraW5nIHN0b3JlCitmb3IgUU1hbiBGcmFtZSBRdWV1ZSBEZXNjcmlwdG9yIChGUUQpIGFuZCBQYWNrZWQgRnJhbWUgRGVzY3JpcHRvciBSZWNvcmQgKFBGRFIpLgorVGhpcyBtZW1vcnkgaXMgcmVzZXJ2ZWQvYWxsb2NhdGVkIGFzIGEgbm9kZXMgdW5kZXIgdGhlIC9yZXNlcnZlZC1tZW1vcnkgbm9kZQorCitUaGUgUU1hbiBGUUQgbWVtb3J5IG5vZGUgbXVzdCBiZSBuYW1lZCAicW1hbi1mcWQiCisKK1BST1BFUlRJRVMKKworLSBjb21wYXRpYmxlCisJVXNhZ2U6CQlyZXF1aXJlZAorCVZhbHVlIHR5cGU6CTxzdHJpbmdsaXN0PgorCURlZmluaXRpb246CU11c3QgaW5jbGlkZSAiZnNsLHFtYW4tZnFkIgorCitUaGUgUU1hbiBQRkRSIG1lbW9yeSBub2RlIG11c3QgYmUgbmFtZWQgInFtYW4tcGZkciIKKworUFJPUEVSVElFUworCistIGNvbXBhdGlibGUKKwlVc2FnZToJCXJlcXVpcmVkCisJVmFsdWUgdHlwZToJPHN0cmluZ2xpc3Q+CisJRGVmaW5pdGlvbjoJTXVzdCBpbmNsaWRlICJmc2wscW1hbi1wZmRyIgorCitUaGUgZm9sbG93aW5nIGNvbnN0cmFpbnRzIGFyZSByZWxldmFudCB0byB0aGUgRlFEIGFuZCBQRkRSIHByaXZhdGUgbWVtb3J5OgorCS0gVGhlIHNpemUgbXVzdCBiZSAyXihzaXplICsgMSksIHdpdGggc2l6ZSA9IDExLi4yOS4gVGhhdCBpcyA0IEtpQiB0bworCSAgMSBHaUIKKwktIFRoZSBhbGlnbm1lbnQgbXVzdCBiZSBhIG11bGlwdGxlIG9mIHRoZSBtZW1vcnkgc2l6ZQorCitUaGUgc2l6ZSBvZiB0aGUgRlFEIGFuZCBQRkRQIG11c3QgYmUgY2hvc2VuIGJ5IG9ic2VydmluZyB0aGUgaGFyZHdhcmUgZmVhdHVyZXMKK2NvbmZpZ3VyZWQgdmlhIHRoZSBSZXNldCBDb25maWd1cmF0aW9uIFdvcmQgKFJDVykgYW5kIHRoYXQgYXJlIHJlbGV2YW50IHRvIGEKK3NwZWNpZmljIGJvYXJkIChlLmcuIG51bWJlciBvZiBNQUMocykgcGlubmVkLW91dCwgbnVtYmVyIG9mIG9mZmxpbmUvaG9zdCBjb21tYW5kCitGTWFuIHBvcnRzLCBldGMuKS4gVGhlIHNpemUgY29uZmlndXJlZCBpbiB0aGUgRFQgbXVzdCByZWZsZWN0IHRoZSBoYXJkd2FyZQorY2FwYWJpbGl0aWVzIGFuZCBub3QgdGhlIHNwZWNpZmljIG5lZWRzIG9mIGFuIGFwcGxpY2F0aW9uCisKK0ZvciBhZGRpdGlvbmFsIGRldGFpbHMgYWJvdXQgcmVzZXJ2ZWQgbWVtb3J5IHJlZ2lvbnMgc2VlIHJlc2VydmVkLW1lbW9yeS50eHQKKworRVhBTVBMRQorCitUaGUgZXhhbXBsZSBiZWxvdyBzaG93cyBhIFFNYW4gRlFEIGFuZCBhIFBGRFIgZHluYW1pYyBhbGxvY2F0aW9uIG1lbW9yeSBub2RlcworCisJcmVzZXJ2ZWQtbWVtb3J5IHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mj47CisJCSNzaXplLWNlbGxzID0gPDI+OworCQlyYW5nZXM7CisKKwkJcW1hbl9mcWQ6IHFtYW4tZnFkIHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLHFtYW4tZnFkIjsKKwkJCWFsbG9jLXJhbmdlcyA9IDwwIDAgMHgxMCAwPjsKKwkJCXNpemUgPSA8MCAweDQwMDAwMD47CisJCQlhbGlnbm1lbnQgPSA8MCAweDQwMDAwMD47CisJCX07CisJCXFtYW5fcGZkcjogcW1hbi1wZmRyIHsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLHFtYW4tcGZkciI7CisJCQlhbGxvYy1yYW5nZXMgPSA8MCAwIDB4MTAgMD47CisJCQlzaXplID0gPDAgMHgyMDAwMDAwPjsKKwkJCWFsaWdubWVudCA9IDwwIDB4MjAwMDAwMD47CisJCX07CisJfTsKKworVGhlIGV4YW1wbGUgYmVsb3cgc2hvd3MgYSAoUDQwODApIFFNYW4gQ0NTUi1zcGFjZSBub2RlCisKKwlxcG9ydGFsczogcW1hbi1wb3J0YWxzQGZmNDIwMDAwMCB7CisJCS4uLgorCX07CisKKwljbG9ja2dlbjogZ2xvYmFsLXV0aWxpdGllc0BlMTAwMCB7CisJCS4uLgorCQlzeXNjbGs6IHN5c2NsayB7CisJCQkuLi4KKwkJfTsKKwkJLi4uCisJCXBsYXRmb3JtX3BsbDogcGxhdGZvcm0tcGxsQGMwMCB7CisJCQkjY2xvY2stY2VsbHMgPSA8MT47CisJCQlyZWcgPSA8MHhjMDAgMHg0PjsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLHFvcmlxLXBsYXRmb3JtLXBsbC0xLjAiOworCQkJY2xvY2tzID0gPCZzeXNjbGs+OworCQkJY2xvY2stb3V0cHV0LW5hbWVzID0gInBsYXRmb3JtLXBsbCIsICJwbGF0Zm9ybS1wbGwtZGl2MiI7CisJCX07CisJCS4uLgorCX07CisKKwljcnlwdG9AMzAwMDAwIHsKKwkJLi4uCisJCWZzbCxxbWFuID0gPCZxbWFuLCAyPjsKKwkJLi4uCisJfTsKKworCXFtYW46IHFtYW5AMzE4MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wscW1hbiI7CisJCXJlZyA9IDwweDMxODAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDE2IDIgMSAzPgorCQlmc2wsbGlvZG4gPSA8MHgxNj47CisJCWZzbCxxbWFuLXBvcnRhbHMgPSA8JnFwb3J0YWxzPjsKKwkJbWVtb3J5LXJlZ2lvbiA9IDwmcW1hbl9mcWQgJnFtYW5fcGZkcj47CisJCWNsb2NrcyA9IDwmcGxhdGZvcm1fcGxsIDE+OworCX07CisKKwlmbWFuQDQwMDAwMCB7CisJCS4uLgorCQlmc2wscW1hbiA9IDwmcW1hbiwgMD47CisJCS4uLgorCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc29jL21lZGlhdGVrL3B3cmFwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2MvbWVkaWF0ZWsvcHdyYXAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkZWI1YjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc29jL21lZGlhdGVrL3B3cmFwLnR4dApAQCAtMCwwICsxLDU4IEBACitNZWRpYVRlayBQTUlDIFdyYXBwZXIgRHJpdmVyCisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBiaW5kaW5nIGZvciB0aGUgTWVkaWFUZWsgUE1JQyB3cmFwcGVyLgorCitPbiBNZWRpYVRlayBTb0NzIHRoZSBQTUlDIGlzIGNvbm5lY3RlZCB2aWEgU1BJLiBUaGUgU1BJIG1hc3RlciBpbnRlcmZhY2UKK2lzIG5vdCBkaXJlY3RseSB2aXNpYmxlIHRvIHRoZSBDUFUsIGJ1dCBvbmx5IHRocm91Z2ggdGhlIFBNSUMgd3JhcHBlcgoraW5zaWRlIHRoZSBTb0MuIFRoZSBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIFNvQyBhbmQgdGhlIFBNSUMgY2FuCitvcHRpb25hbGx5IGJlIGVuY3J5cHRlZC4gQWxzbyBhIG5vbiBzdGFuZGFyZCBEdWFsIElPIFNQSSBtb2RlIGNhbiBiZQordXNlZCB0byBpbmNyZWFzZSBzcGVlZC4KKworSVAgUGFpcmluZworCitvbiBNVDgxMzUgdGhlIHBpbnMgb2Ygc29tZSBTb0MgaW50ZXJuYWwgcGVyaXBoZXJhbHMgY2FuIGJlIG9uIHRoZSBQTUlDLgorVGhlIHNpZ25hbHMgb2YgdGhlc2UgcGlucyBhcmUgcm91dGVkIG92ZXIgdGhlIFNQSSBidXMgdXNpbmcgdGhlIHB3cmFwCiticmlkZ2UuIEluIHRoZSBiaW5kaW5nIGRlc2NyaXB0aW9uIGJlbG93IHRoZSBwcm9wZXJ0aWVzIG5lZWRlZCBmb3IgYnJpZGdpbmcKK2FyZSBtYXJrZWQgd2l0aCAiSVAgUGFpcmluZyIuIFRoZXNlIGFyZSBvcHRpb25hbCBvbiBTb0NzIHdoaWNoIGRvIG5vdCBzdXBwb3J0CitJUCBQYWlyaW5nCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgaW4gcHdyYXAgZGV2aWNlIG5vZGUuCistIGNvbXBhdGlibGU6CisJIm1lZGlhdGVrLG10ODEzNS1wd3JhcCIgZm9yIE1UODEzNSBTb0NzCisJIm1lZGlhdGVrLG10ODE3My1wd3JhcCIgZm9yIE1UODE3MyBTb0NzCistIGludGVycnVwdHM6IElSUSBmb3IgcHdyYXAgaW4gU09DCistIHJlZy1uYW1lczogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgInB3cmFwIjogTWFpbiByZWdpc3RlcnMgYmFzZQorICAicHdyYXAtYnJpZGdlIjogYnJpZGdlIGJhc2UgKElQIFBhaXJpbmcpCistIHJlZzogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIHJlZy1uYW1lcy4KKy0gcmVzZXQtbmFtZXM6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgICJwd3JhcCIKKyAgInB3cmFwLWJyaWRnZSIgKElQIFBhaXJpbmcpCistIHJlc2V0czogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIHJlc2V0LW5hbWVzLgorLSBjbG9jay1uYW1lczogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgInNwaSI6IFNQSSBidXMgY2xvY2sKKyAgIndyYXAiOiBNYWluIG1vZHVsZSBjbG9jaworLSBjbG9ja3M6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKworT3B0aW9uYWwgcHJvcGVyaXRpZXM6CistIHBtaWM6IE1lZGlhdGVrIFBNSUMgTUZEIGlzIHRoZSBjaGlsZCBkZXZpY2Ugb2YgcHdyYXAKKyAgU2VlIHRoZSBmb2xsb3dpbmcgZm9yIGNoaWxkIG5vZGUgZGVmaW5pdGlvbnM6CisgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvbXQ2Mzk3LnR4dAorCitFeGFtcGxlOgorCXB3cmFwOiBwd3JhcEAxMDAwZjAwMCB7CisJCWNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ4MTM1LXB3cmFwIjsKKwkJcmVnID0gPDAgMHgxMDAwZjAwMCAwIDB4MTAwMD4sCisJCQk8MCAweDExMDE3MDAwIDAgMHgxMDAwPjsKKwkJcmVnLW5hbWVzID0gInB3cmFwIiwgInB3cmFwLWJyaWRnZSI7CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSAxMjggSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCXJlc2V0cyA9IDwmaW5mcmFjZmcgTVQ4MTM1X0lORlJBX1BNSUNfV1JBUF9SU1Q+LAorCQkJCTwmcGVyaWNmZyBNVDgxMzVfUEVSSV9QV1JBUF9CUklER0VfU1dfUlNUPjsKKwkJcmVzZXQtbmFtZXMgPSAicHdyYXAiLCAicHdyYXAtYnJpZGdlIjsKKwkJY2xvY2tzID0gPCZjbGsyNm0+LCA8JmNsazI2bT47CisJCWNsb2NrLW5hbWVzID0gInNwaSIsICJ3cmFwIjsKKworCQlwbWljIHsKKwkJCWNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ2Mzk3IjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvYy9tZWRpYXRlay9zY3BzeXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvYy9tZWRpYXRlay9zY3BzeXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2YzhhZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc29jL21lZGlhdGVrL3NjcHN5cy50eHQKQEAgLTAsMCArMSw0MyBAQAorTWVkaWFUZWsgU0NQU1lTCis9PT09PT09PT09PT09PT0KKworVGhlIFN5c3RlbSBDb250cm9sIFByb2Nlc3NvciBTeXN0ZW0gKFNDUFNZUykgaGFzIHNldmVyYWwgcG93ZXIgbWFuYWdlbWVudAorcmVsYXRlZCB0YXNrcyBpbiB0aGUgc3lzdGVtLiBUaGUgdGFza3MgaW5jbHVkZSB0aGVybWFsIG1lYXN1cmVtZW50LCBkeW5hbWljCit2b2x0YWdlIGZyZXF1ZW5jeSBzY2FsaW5nIChEVkZTKSwgaW50ZXJydXB0IGZpbHRlciBhbmQgbG93bGV2ZWwgc2xlZXAgY29udHJvbC4KK1RoZSBTeXN0ZW0gUG93ZXIgTWFuYWdlciAoU1BNKSBpbnNpZGUgdGhlIFNDUFNZUyBpcyBmb3IgdGhlIE1UQ01PUyBwb3dlcgorZG9tYWluIGNvbnRyb2wuCisKK1RoZSBkcml2ZXIgaW1wbGVtZW50cyB0aGUgR2VuZXJpYyBQTSBkb21haW4gYmluZGluZ3MgZGVzY3JpYmVkIGluCitwb3dlci9wb3dlcl9kb21haW4udHh0LiBJdCBwcm92aWRlcyB0aGUgcG93ZXIgZG9tYWlucyBkZWZpbmVkIGluCitpbmNsdWRlL2R0LWJpbmRpbmdzL3Bvd2VyL210ODE3My1wb3dlci5oLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBNdXN0IGJlICJtZWRpYXRlayxtdDgxNzMtc2Nwc3lzIgorLSAjcG93ZXItZG9tYWluLWNlbGxzOiBNdXN0IGJlIDEKKy0gcmVnOiBBZGRyZXNzIHJhbmdlIG9mIHRoZSBTQ1BTWVMgdW5pdAorLSBpbmZyYWNmZzogbXVzdCBjb250YWluIGEgcGhhbmRsZSB0byB0aGUgaW5mcmFjZmcgY29udHJvbGxlcgorLSBjbG9jaywgY2xvY2stbmFtZXM6IGNsb2NrcyBhY2NvcmRpbmcgdG8gdGhlIGNvbW1vbiBjbG9jayBiaW5kaW5nLgorICAgICAgICAgICAgICAgICAgICAgIFRoZSBjbG9ja3MgbmVlZGVkICJtbSIsICJtZmciLCAidmVuYyIgYW5kICJ2ZW5jX2x0Ii4KKwkJICAgICAgVGhlc2UgYXJlIHRoZSBjbG9ja3Mgd2hpY2ggaGFyZHdhcmUgbmVlZHMgdG8gYmUgZW5hYmxlZAorCQkgICAgICBiZWZvcmUgZW5hYmxpbmcgY2VydGFpbiBwb3dlciBkb21haW5zLgorCitFeGFtcGxlOgorCisJc2Nwc3lzOiBzY3BzeXNAMTAwMDYwMDAgeworCQkjcG93ZXItZG9tYWluLWNlbGxzID0gPDE+OworCQljb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1zY3BzeXMiOworCQlyZWcgPSA8MCAweDEwMDA2MDAwIDAgMHgxMDAwPjsKKwkJaW5mcmFjZmcgPSA8JmluZnJhY2ZnPjsKKwkJY2xvY2tzID0gPCZjbGsyNm0+LAorCQkJIDwmdG9wY2tnZW4gQ0xLX1RPUF9NTV9TRUw+OworCQkJIDwmdG9wY2tnZW4gQ0xLX1RPUF9WRU5DX1NFTD4sCisJCQkgPCZ0b3Bja2dlbiBDTEtfVE9QX1ZFTkNfTFRfU0VMPjsKKwkJY2xvY2stbmFtZXMgPSAibWZnIiwgIm1tIiwgInZlbmMiLCAidmVuY19sdCI7CisJfTsKKworRXhhbXBsZSBjb25zdW1lcjoKKworCWFmZTogbXQ4MTczLWFmZS1wY21AMTEyMjAwMDAgeworCQljb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1hZmUtcGNtIjsKKwkJcG93ZXItZG9tYWlucyA9IDwmc2Nwc3lzIE1UODE3M19QT1dFUl9ET01BSU5fQVVESU8+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc29jL3Fjb20sc21kLXJwbS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc29jL3Fjb20sc21kLXJwbS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI3ZjVjNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2MvcWNvbSxzbWQtcnBtLnR4dApAQCAtMCwwICsxLDExNyBAQAorUXVhbGNvbW0gUmVzb3VyY2UgUG93ZXIgTWFuYWdlciAoUlBNKSBvdmVyIFNNRAorCitUaGlzIGRyaXZlciBpcyB1c2VkIHRvIGludGVyZmFjZSB3aXRoIHRoZSBSZXNvdXJjZSBQb3dlciBNYW5hZ2VyIChSUE0pIGZvdW5kIGluCit2YXJpb3VzIFF1YWxjb21tIHBsYXRmb3Jtcy4gVGhlIFJQTSBhbGxvd3MgZWFjaCBjb21wb25lbnQgaW4gdGhlIHN5c3RlbSB0byB2b3RlCitmb3Igc3RhdGUgb2YgdGhlIHN5c3RlbSByZXNvdXJjZXMsIHN1Y2ggYXMgY2xvY2tzLCByZWd1bGF0b3JzIGFuZCBidXMKK2ZyZXF1ZW5jaWVzLgorCistIGNvbXBhdGlibGU6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHN0cmluZz4KKwlEZWZpbml0aW9uOiBtdXN0IGJlIG9uZSBvZjoKKwkJICAgICJxY29tLHJwbS1tc204OTc0IgorCistIHFjb20sc21kLWNoYW5uZWxzOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxzdHJpbmdsaXN0PgorCURlZmluaXRpb246IFNoYXJlZCBNZW1vcnkgY2hhbm5lbCB1c2VkIGZvciBjb21tdW5pY2F0aW9uIHdpdGggdGhlIFJQTQorCis9IFNVQkRFVklDRVMKKworVGhlIFJQTSBleHBvc2VzIHJlc291cmNlcyB0byBpdHMgc3Vibm9kZXMuIFRoZSBiZWxvdyBiaW5kaW5ncyBzcGVjaWZ5IHRoZSBzZXQKK29mIHZhbGlkIHN1Ym5vZGVzIHRoYXQgY2FuIG9wZXJhdGUgb24gdGhlc2UgcmVzb3VyY2VzLgorCis9PSBSZWd1bGF0b3JzCisKK1JlZ3VsYXRvciBub2RlcyBhcmUgaWRlbnRpZmllZCBieSB0aGVpciBjb21wYXRpYmxlOgorCistIGNvbXBhdGlibGU6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHN0cmluZz4KKwlEZWZpbml0aW9uOiBtdXN0IGJlIG9uZSBvZjoKKwkJICAgICJxY29tLHJwbS1wbTg4NDEtcmVndWxhdG9ycyIKKwkJICAgICJxY29tLHJwbS1wbTg5NDEtcmVndWxhdG9ycyIKKworLSB2ZGRfczEtc3VwcGx5OgorLSB2ZGRfczItc3VwcGx5OgorLSB2ZGRfczMtc3VwcGx5OgorLSB2ZGRfczQtc3VwcGx5OgorLSB2ZGRfczUtc3VwcGx5OgorLSB2ZGRfczYtc3VwcGx5OgorLSB2ZGRfczctc3VwcGx5OgorLSB2ZGRfczgtc3VwcGx5OgorCVVzYWdlOiBvcHRpb25hbCAocG04ODQxIG9ubHkpCisJVmFsdWUgdHlwZTogPHBoYW5kbGU+CisJRGVmaW5pdGlvbjogcmVmZXJlbmNlIHRvIHJlZ3VsYXRvciBzdXBwbHlpbmcgdGhlIGlucHV0IHBpbiwgYXMKKwkJICAgIGRlc2NyaWJlZCBpbiB0aGUgZGF0YSBzaGVldAorCistIHZkZF9zMS1zdXBwbHk6CistIHZkZF9zMi1zdXBwbHk6CistIHZkZF9zMy1zdXBwbHk6CistIHZkZF9sMV9sMy1zdXBwbHk6CistIHZkZF9sMl9sdnMxXzJfMy1zdXBwbHk6CistIHZkZF9sNF9sMTEtc3VwcGx5OgorLSB2ZGRfbDVfbDctc3VwcGx5OgorLSB2ZGRfbDZfbDEyX2wxNF9sMTUtc3VwcGx5OgorLSB2ZGRfbDhfbDE2X2wxOF9sMTktc3VwcGx5OgorLSB2ZGRfbDlfbDEwX2wxN19sMjItc3VwcGx5OgorLSB2ZGRfbDEzX2wyMF9sMjNfbDI0LXN1cHBseToKKy0gdmRkX2wyMS1zdXBwbHk6CistIHZpbl81dnMtc3VwcGx5OgorCVVzYWdlOiBvcHRpb25hbCAocG04OTQxIG9ubHkpCisJVmFsdWUgdHlwZTogPHBoYW5kbGU+CisJRGVmaW5pdGlvbjogcmVmZXJlbmNlIHRvIHJlZ3VsYXRvciBzdXBwbHlpbmcgdGhlIGlucHV0IHBpbiwgYXMKKwkJICAgIGRlc2NyaWJlZCBpbiB0aGUgZGF0YSBzaGVldAorCitUaGUgcmVndWxhdG9yIG5vZGUgaG91c2VzIHN1Yi1ub2RlcyBmb3IgZWFjaCByZWd1bGF0b3Igd2l0aGluIHRoZSBkZXZpY2UuIEVhY2gKK3N1Yi1ub2RlIGlzIGlkZW50aWZpZWQgdXNpbmcgdGhlIG5vZGUncyBuYW1lLCB3aXRoIHZhbGlkIHZhbHVlcyBsaXN0ZWQgZm9yIGVhY2gKK29mIHRoZSBwbWljcyBiZWxvdy4KKworcG04ODQxOgorCXMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3LCBzOAorCitwbTg5NDE6CisJczEsIHMyLCBzMywgczQsIGwxLCBsMiwgbDMsIGw0LCBsNSwgbDYsIGw3LCBsOCwgbDksIGwxMCwgbDExLCBsMTIsIGwxMywKKwlsMTQsIGwxNSwgbDE2LCBsMTcsIGwxOCwgbDE5LCBsMjAsIGwyMSwgbDIyLCBsMjMsIGwyNCwgbHZzMSwgbHZzMiwKKwlsdnMzLCA1dnMxLCA1dnMyCisKK1RoZSBjb250ZW50IG9mIGVhY2ggc3ViLW5vZGUgaXMgZGVmaW5lZCBieSB0aGUgc3RhbmRhcmQgYmluZGluZyBmb3IgcmVndWxhdG9ycyAtCitzZWUgcmVndWxhdG9yLnR4dC4KKworPSBFWEFNUExFCisKKwlzbWQgeworCQljb21wYXRpYmxlID0gInFjb20sc21kIjsKKworCQlycG0geworCQkJaW50ZXJydXB0cyA9IDwwIDE2OCAxPjsKKwkJCXFjb20saXBjID0gPCZhcGNzIDggMD47CisJCQlxY29tLHNtZC1lZGdlID0gPDE1PjsKKworCQkJcnBtX3JlcXVlc3RzIHsKKwkJCQljb21wYXRpYmxlID0gInFjb20scnBtLW1zbTg5NzQiOworCQkJCXFjb20sc21kLWNoYW5uZWxzID0gInJwbV9yZXF1ZXN0cyI7CisKKwkJCQlwbTg5NDEtcmVndWxhdG9ycyB7CisJCQkJCWNvbXBhdGlibGUgPSAicWNvbSxycG0tcG04OTQxLXJlZ3VsYXRvcnMiOworCQkJCQl2ZGRfbDEzX2wyMF9sMjNfbDI0LXN1cHBseSA9IDwmcG04OTQxX2Jvb3N0PjsKKworCQkJCQlwbTg5NDFfczM6IHMzIHsKKwkJCQkJCXJlZ3VsYXRvci1taW4tbWljcm92b2x0ID0gPDE4MDAwMDA+OworCQkJCQkJcmVndWxhdG9yLW1heC1taWNyb3ZvbHQgPSA8MTgwMDAwMD47CisJCQkJCX07CisKKwkJCQkJcG04OTQxX2Jvb3N0OiBzNCB7CisJCQkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDw1MDAwMDAwPjsKKwkJCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDUwMDAwMDA+OworCQkJCQl9OworCisJCQkJCXBtODk0MV9sMjA6IGwyMCB7CisJCQkJCQlyZWd1bGF0b3ItbWluLW1pY3Jvdm9sdCA9IDwyOTUwMDAwPjsKKwkJCQkJCXJlZ3VsYXRvci1tYXgtbWljcm92b2x0ID0gPDI5NTAwMDA+OworCQkJCQl9OworCQkJCX07CisJCQl9OworCQl9OworCX07CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2MvcWNvbS9xY29tLGdzYmkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvYy9xY29tL3Fjb20sZ3NiaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY1ZWRlMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2MvcWNvbS9xY29tLGdzYmkudHh0CkBAIC0wLDAgKzEsODggQEAKK1FDT00gR1NCSSAoR2VuZXJhbCBTZXJpYWwgQnVzIEludGVyZmFjZSkgRHJpdmVyCisKK1RoZSBHU0JJIGNvbnRyb2xsZXIgaXMgbW9kZWxlZCBhcyBhIG5vZGUgd2l0aCB6ZXJvIG9yIG1vcmUgY2hpbGQgbm9kZXMsIGVhY2gKK3JlcHJlc2VudGluZyBhIHNlcmlhbCBzdWItbm9kZSBkZXZpY2UgdGhhdCBpcyBtdXgnZCBhcyBwYXJ0IG9mIHRoZSBHU0JJCitjb25maWd1cmF0aW9uIHNldHRpbmdzLiAgVGhlIG1vZGUgc2V0dGluZyB3aWxsIGdvdmVybiB0aGUgaW5wdXQvb3V0cHV0IG1vZGUgb2YKK3RoZSA0IEdTQkkgSU9zLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOglTaG91bGQgY29udGFpbiAicWNvbSxnc2JpLXYxLjAuMCIKKy0gY2VsbC1pbmRleDoJU2hvdWxkIGNvbnRhaW4gdGhlIEdTQkkgaW5kZXgKKy0gcmVnOiBBZGRyZXNzIHJhbmdlIGZvciBHU0JJIHJlZ2lzdGVycworLSBjbG9ja3M6IHJlcXVpcmVkIGNsb2NrCistIGNsb2NrLW5hbWVzOiBtdXN0IGNvbnRhaW4gImlmYWNlIiBlbnRyeQorLSBxY29tLG1vZGUgOiBpbmRpY2F0ZXMgTVVYIHZhbHVlIGZvciBjb25maWd1cmF0aW9uIG9mIHRoZSBzZXJpYWwgaW50ZXJmYWNlLgorICBQbGVhc2UgcmVmZXJlbmNlIGR0LWJpbmRpbmdzL3NvYy9xY29tLGdzYmkuaCBmb3IgdmFsaWQgbXV4IHZhbHVlcy4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gcWNvbSxjcmNpIDogaW5kaWNhdGVzIENSQ0kgTVVYIHZhbHVlIGZvciBRVVAgQ1JDSSBwb3J0cy4gIFBsZWFzZSByZWZlcmVuY2UKKyAgZHQtYmluZGluZ3Mvc29jL3Fjb20sZ3NiaS5oIGZvciB2YWxpZCBDUkNJIG11eCB2YWx1ZXMuCistIHN5c2Nvbi10Y3NyOiBpbmRpY2F0ZXMgcGhhbmRsZSBvZiBUQ1NSIHN5c2NvbiBub2RlLiAgUmVxdWlyZWQgaWYgY2hpbGQgdXNlcworICBkbWEuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgaWYgY2hpbGQgbm9kZSBleGlzdHM6CistICNhZGRyZXNzLWNlbGxzOiBNdXN0IGJlIDEKKy0gI3NpemUtY2VsbHM6IE11c3QgYmUgMQorLSByYW5nZXM6IE11c3QgYmUgcHJlc2VudAorCitQcm9wZXJ0aWVzIGZvciBjaGlsZHJlbjoKKworQSBHU0JJIGNvbnRyb2xsZXIgbm9kZSBjYW4gY29udGFpbiAwIG9yIG1vcmUgY2hpbGQgbm9kZXMgcmVwcmVzZW50aW5nIHNlcmlhbAorZGV2aWNlcy4gIFRoZXNlIHNlcmlhbCBkZXZpY2VzIGNhbiBiZSBhIFFDT00gVUFSVCwgSTJDIGNvbnRyb2xsZXIsIHNwaQorY29udHJvbGxlciwgb3Igc29tZSBjb21iaW5hdGlvbiBvZiBhZm9yZW1lbnRpb25lZCBkZXZpY2VzLgorCitTZWUgdGhlIGZvbGxvd2luZyBmb3IgY2hpbGQgbm9kZSBkZWZpbml0aW9uczoKK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvcWNvbSxpMmMtcXVwLnR4dAorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9xY29tLHNwaS1xdXAudHh0CitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL3Fjb20sbXNtLXVhcnRkbS50eHQKKworRXhhbXBsZSBmb3IgQVBRODA2NDoKKworI2luY2x1ZGUgPGR0LWJpbmRpbmdzL3NvYy9xY29tLGdzYmkuaD4KKworCWdzYmk0QDE2MzAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJxY29tLGdzYmktdjEuMC4wIjsKKwkJY2VsbC1pbmRleCA9IDw0PjsKKwkJcmVnID0gPDB4MTYzMDAwMDAgMHgxMDA+OworCQljbG9ja3MgPSA8JmdjYyBHU0JJNF9IX0NMSz47CisJCWNsb2NrLW5hbWVzID0gImlmYWNlIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQlyYW5nZXM7CisJCXFjb20sbW9kZSA9IDxHU0JJX1BST1RfSTJDX1VBUlQ+OworCQlxY29tLGNyY2kgPSA8R1NCSV9DUkNJX1FVUD47CisKKwkJc3lzY29uLXRjc3IgPSA8JnRjc3I+OworCisJCS8qIGNoaWxkIG5vZGVzIGdvIHVuZGVyIGhlcmUgKi8KKworCQlpMmNfcXVwNDogaTJjQDE2MzgwMDAwIHsKKwkJCWNvbXBhdGlibGUgPSAicWNvbSxpMmMtcXVwLXYxLjEuMSI7CisJCQlyZWcgPSA8MHgxNjM4MDAwMCAweDEwMDA+OworCQkJaW50ZXJydXB0cyA9IDwwIDE1MyAwPjsKKworCQkJY2xvY2tzID0gPCZnY2MgR1NCSTRfUVVQX0NMSz4sIDwmZ2NjIEdTQkk0X0hfQ0xLPjsKKwkJCWNsb2NrLW5hbWVzID0gImNvcmUiLCAiaWZhY2UiOworCisJCQljbG9jay1mcmVxdWVuY3kgPSA8MjAwMDAwPjsKKworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQl9OworCisJCXVhcnQ0OglzZXJpYWxAMTYzNDAwMDAgeworCQkJY29tcGF0aWJsZSA9ICJxY29tLG1zbS11YXJ0ZG0tdjEuMyIsICJxY29tLG1zbS11YXJ0ZG0iOworCQkJcmVnID0gPDB4MTYzNDAwMDAgMHgxMDAwPiwKKwkJCQk8MHgxNjMwMDAwMCAweDEwMDA+OworCQkJaW50ZXJydXB0cyA9IDwwIDE1MiAweDA+OworCQkJY2xvY2tzID0gPCZnY2MgR1NCSTRfVUFSVF9DTEs+LCA8JmdjYyBHU0JJNF9IX0NMSz47CisJCQljbG9jay1uYW1lcyA9ICJjb3JlIiwgImlmYWNlIjsKKwkJCXN0YXR1cyA9ICJvayI7CisJCX07CisJfTsKKworCXRjc3I6IHN5c2NvbkAxYTQwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicWNvbSxhcHE4MDY0LXRjc3IiLCAic3lzY29uIjsKKwkJcmVnID0gPDB4MWE0MDAwMDAgMHgxMDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc29jL3Fjb20vcWNvbSxzbWQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvYy9xY29tL3Fjb20sc21kLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2Q5YjNlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvYy9xY29tL3Fjb20sc21kLnR4dApAQCAtMCwwICsxLDg1IEBACitRdWFsY29tbSBTaGFyZWQgTWVtb3J5IERyaXZlciAoU01EKSBiaW5kaW5nCisKK1RoaXMgYmluZGluZyBkZXNjcmliZXMgdGhlIFF1YWxjb21tIFNoYXJlZCBNZW1vcnkgRHJpdmVyLCBhIGZpZm8gYmFzZWQKK2NvbW11bmljYXRpb24gY2hhbm5lbCBmb3Igc2VuZGluZyBkYXRhIGJldHdlZW4gdGhlIHZhcmlvdXMgc3Vic3lzdGVtcyBpbgorUXVhbGNvbW0gcGxhdGZvcm1zLgorCistIGNvbXBhdGlibGU6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHN0cmluZ2xpc3Q+CisJRGVmaW5pdGlvbjogbXVzdCBiZSAicWNvbSxzbWQiCisKKz0gRURHRVMKKworRWFjaCBzdWJub2RlIG9mIHRoZSBTTUQgbm9kZSByZXByZXNlbnRzIGEgcmVtb3RlIHN1YnN5c3RlbSBvciBhIHJlbW90ZQorcHJvY2Vzc29yIG9mIHNvbWUgc29ydCAtIG9yIGluIFNNRCBsYW5ndWFnZSBhbiAiZWRnZSIuIFRoZSBuYW1lIG9mIHRoZSBlZGdlcworYXJlIG5vdCBpbXBvcnRhbnQuCitUaGUgZWRnZSBpcyBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorCistIGludGVycnVwdHM6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHByb3AtZW5jb2RlZC1hcnJheT4KKwlEZWZpbml0aW9uOiBzaG91bGQgc3BlY2lmeSB0aGUgSVJRIHVzZWQgYnkgdGhlIHJlbW90ZSBwcm9jZXNzb3IgdG8KKwkJICAgIHNpZ25hbCB0aGlzIHByb2Nlc3NvciBhYm91dCBjb21tdW5pY2F0aW9uIHJlbGF0ZWQgdXBkYXRlcworCistIHFjb20saXBjOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisJRGVmaW5pdGlvbjogdGhyZWUgZW50cmllcyBzcGVjaWZ5aW5nIHRoZSBvdXRnb2luZyBpcGMgYml0IHVzZWQgZm9yCisJCSAgICBzaWduYWxpbmcgdGhlIHJlbW90ZSBwcm9jZXNzb3I6CisJCSAgICAtIHBoYW5kbGUgdG8gYSBzeXNjb24gbm9kZSByZXByZXNlbnRpbmcgdGhlIGFwY3MgcmVnaXN0ZXJzCisJCSAgICAtIHUzMiByZXByZXNlbnRpbmcgb2Zmc2V0IHRvIHRoZSByZWdpc3RlciB3aXRoaW4gdGhlIHN5c2NvbgorCQkgICAgLSB1MzIgcmVwcmVzZW50aW5nIHRoZSBpcGMgYml0IHdpdGhpbiB0aGUgcmVnaXN0ZXIKKworLSBxY29tLHNtZC1lZGdlOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDx1MzI+CisJRGVmaW5pdGlvbjogdGhlIGlkZW50aWZpZXIgb2YgdGhlIHJlbW90ZSBwcm9jZXNzb3IgaW4gdGhlIHNtZCBjaGFubmVsCisJCSAgICBhbGxvY2F0aW9uIHRhYmxlCisKKy0gcWNvbSxyZW1vdGUtcGlkOgorCVVzYWdlOiBvcHRpb25hbAorCVZhbHVlIHR5cGU6IDx1MzI+CisJRGVmaW5pdGlvbjogdGhlIGlkZW50aWZpZXIgZm9yIHRoZSByZW1vdGUgcHJvY2Vzc29yIGFzIGtub3duIGJ5IHRoZSByZXN0CisJCSAgICBvZiB0aGUgc3lzdGVtLgorCis9IFNNRCBERVZJQ0VTCisKK0luIHR1cm4sIHN1Ym5vZGVzIG9mIHRoZSAiZWRnZXMiIHJlcHJlc2VudCBkZXZpY2VzIHRpZWQgdG8gU01EIGNoYW5uZWxzIG9uIHRoYXQKKyJlZGdlIi4gVGhlIG5hbWVzIG9mIHRoZSBkZXZpY2VzIGFyZSBub3QgaW1wb3J0YW50LiBUaGUgcHJvcGVydGllcyBvZiB0aGVzZQorbm9kZXMgYXJlIGRlZmluZWQgYnkgdGhlIGluZGl2aWR1YWwgYmluZGluZ3MgZm9yIHRoZSBTTUQgZGV2aWNlcyAtIGJ1dCBtdXN0Citjb250YWluIHRoZSBmb2xsb3dpbmcgcHJvcGVydHk6CisKKy0gcWNvbSxzbWQtY2hhbm5lbHM6CisJVXNhZ2U6IHJlcXVpcmVkCisJVmFsdWUgdHlwZTogPHN0cmluZ2xpc3Q+CisJRGVmaW5pdGlvbjogYSBsaXN0IG9mIGNoYW5uZWxzIHRpZWQgdG8gdGhpcyBkZXZpY2UsIHVzZWQgZm9yIG1hdGNoaW5nCisJCSAgICB0aGUgZGV2aWNlIHRvIGNoYW5uZWxzCisKKz0gRVhBTVBMRQorCitUaGUgZm9sbG93aW5nIGV4YW1wbGUgcmVwcmVzZW50cyBhIHNtZCBub2RlLCB3aXRoIG9uZSBlZGdlIHJlcHJlc2VudGluZyB0aGUKKyJycG0iIHN1YnN5c3RlbS4gRm9yIHRoZSAicnBtIiBzdWJzeXN0ZW0gd2UgaGF2ZSBhIGRldmljZSB0aWVkIHRvIHRoZQorInJwbV9yZXF1ZXN0IiBjaGFubmVsLgorCisJYXBjczogc3lzY29uQGY5MDExMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzeXNjb24iOworCQlyZWcgPSA8MHhmOTAxMTAwMCAweDEwMDA+OworCX07CisKKwlzbWQgeworCQljb21wYXRpYmxlID0gInFjb20sc21kIjsKKworCQlycG0geworCQkJaW50ZXJydXB0cyA9IDwwIDE2OCAxPjsKKwkJCXFjb20saXBjID0gPCZhcGNzIDggMD47CisJCQlxY29tLHNtZC1lZGdlID0gPDE1PjsKKworCQkJcnBtX3JlcXVlc3RzIHsKKwkJCQljb21wYXRpYmxlID0gInFjb20scnBtLW1zbTg5NzQiOworCQkJCXFjb20sc21kLWNoYW5uZWxzID0gInJwbV9yZXF1ZXN0cyI7CisKKwkJCQkuLi4KKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2MvcWNvbS9xY29tLHNtZW0udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvYy9xY29tL3Fjb20sc21lbS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMyNmNkZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2MvcWNvbS9xY29tLHNtZW0udHh0CkBAIC0wLDAgKzEsNTcgQEAKK1F1YWxjb21tIFNoYXJlZCBNZW1vcnkgTWFuYWdlciBiaW5kaW5nCisKK1RoaXMgYmluZGluZyBkZXNjcmliZXMgdGhlIFF1YWxjb21tIFNoYXJlZCBNZW1vcnkgTWFuYWdlciwgdXNlZCB0byBzaGFyZSBkYXRhCitiZXR3ZWVuIHZhcmlvdXMgc3Vic3lzdGVtcyBhbmQgT1NlcyBpbiBRdWFsY29tbSBwbGF0Zm9ybXMuCisKKy0gY29tcGF0aWJsZToKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8c3RyaW5nbGlzdD4KKwlEZWZpbml0aW9uOiBtdXN0IGJlOgorCQkgICAgInFjb20sc21lbSIKKworLSBtZW1vcnktcmVnaW9uOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisJRGVmaW5pdGlvbjogaGFuZGxlIHRvIG1lbW9yeSByZXNlcnZhdGlvbiBmb3IgbWFpbiBTTUVNIG1lbW9yeSByZWdpb24uCisKKy0gcWNvbSxycG0tbXNnLXJhbToKKwlVc2FnZTogcmVxdWlyZWQKKwlWYWx1ZSB0eXBlOiA8cHJvcC1lbmNvZGVkLWFycmF5PgorCURlZmluaXRpb246IGhhbmRsZSB0byBSUE0gbWVzc2FnZSBtZW1vcnkgcmVzb3VyY2UKKworLSBod2xvY2tzOgorCVVzYWdlOiByZXF1aXJlZAorCVZhbHVlIHR5cGU6IDxwcm9wLWVuY29kZWQtYXJyYXk+CisJRGVmaW5pdGlvbjogcmVmZXJlbmNlIHRvIGEgaHdzcGlubG9jayB1c2VkIHRvIHByb3RlY3QgYWxsb2NhdGlvbnMgZnJvbQorCQkgICAgdGhlIHNoYXJlZCBtZW1vcnkKKworPSBFWEFNUExFCitUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgdGhlIFNNRU0gc2V0dXAgZm9yIE1TTTg5NzQsIHdpdGggYSBtYWluIFNNRU0gcmVnaW9uCithdCAweGZhMDAwMDAgYW5kIHRoZSBSUE0gbWVzc2FnZSByYW0gYXQgMHhmYzQyODAwMDoKKworCXJlc2VydmVkLW1lbW9yeSB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJcmFuZ2VzOworCisJCXNtZW1fcmVnaW9uOiBzbWVtQGZhMDAwMDAgeworCQkJcmVnID0gPDB4ZmEwMDAwMCAweDIwMDAwMD47CisJCQluby1tYXA7CisJCX07CisJfTsKKworCXNtZW1AZmEwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicWNvbSxzbWVtIjsKKworCQltZW1vcnktcmVnaW9uID0gPCZzbWVtX3JlZ2lvbj47CisJCXFjb20scnBtLW1zZy1yYW0gPSA8JnJwbV9tc2dfcmFtPjsKKworCQlod2xvY2tzID0gPCZ0Y3NyX211dGV4IDM+OworCX07CisKKwlzb2MgeworCQlycG1fbXNnX3JhbTogbWVtb3J5QGZjNDI4MDAwIHsKKwkJCWNvbXBhdGlibGUgPSAicWNvbSxycG0tbXNnLXJhbSI7CisJCQlyZWcgPSA8MHhmYzQyODAwMCAweDQwMDA+OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc29jL3JvY2tjaGlwL3Bvd2VyX2RvbWFpbi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc29jL3JvY2tjaGlwL3Bvd2VyX2RvbWFpbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTEyNzU2ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2Mvcm9ja2NoaXAvcG93ZXJfZG9tYWluLnR4dApAQCAtMCwwICsxLDQ2IEBACisqIFJvY2tjaGlwIFBvd2VyIERvbWFpbnMKKworUm9ja2NoaXAgcHJvY2Vzc29ycyBpbmNsdWRlIHN1cHBvcnQgZm9yIG11bHRpcGxlIHBvd2VyIGRvbWFpbnMgd2hpY2ggY2FuIGJlCitwb3dlcmVkIHVwL2Rvd24gYnkgc29mdHdhcmUgYmFzZWQgb24gZGlmZmVyZW50IGFwcGxpY2F0aW9uIHNjZW5lcyB0byBzYXZlIHBvd2VyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBwb3dlciBkb21haW4gY29udHJvbGxlcjoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nLgorCSJyb2NrY2hpcCxyazMyODgtcG93ZXItY29udHJvbGxlciIgLSBmb3IgUkszMjg4IFNvQ3MuCistICNwb3dlci1kb21haW4tY2VsbHM6IE51bWJlciBvZiBjZWxscyBpbiBhIHBvd2VyLWRvbWFpbiBzcGVjaWZpZXIuCisJU2hvdWxkIGJlIDEgZm9yIG11bHRpcGxlIFBNIGRvbWFpbnMuCistICNhZGRyZXNzLWNlbGxzOiBTaG91bGQgYmUgMS4KKy0gI3NpemUtY2VsbHM6IFNob3VsZCBiZSAwLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIGZvciBwb3dlciBkb21haW4gc3ViIG5vZGVzOgorLSByZWc6IGluZGV4IG9mIHRoZSBwb3dlciBkb21haW4sIHNob3VsZCB1c2UgbWFjcm9zIGluOgorCSJpbmNsdWRlL2R0LWJpbmRpbmdzL3Bvd2VyL3JrMzI4OC1wb3dlci5oIiAtIGZvciBSSzMyODggdHlwZSBwb3dlciBkb21haW4uCistIGNsb2NrcyAob3B0aW9uYWwpOiBwaGFuZGxlcyB0byBjbG9ja3Mgd2hpY2ggbmVlZCB0byBiZSBlbmFibGVkIHdoaWxlIHBvd2VyIGRvbWFpbgorCXN3aXRjaGVzIHN0YXRlLgorCitFeGFtcGxlOgorCisJcG93ZXI6IHBvd2VyLWNvbnRyb2xsZXIgeworCQljb21wYXRpYmxlID0gInJvY2tjaGlwLHJrMzI4OC1wb3dlci1jb250cm9sbGVyIjsKKwkJI3Bvd2VyLWRvbWFpbi1jZWxscyA9IDwxPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCisJCXBkX2dwdSB7CisJCQlyZWcgPSA8UkszMjg4X1BEX0dQVT47CisJCQljbG9ja3MgPSA8JmNydSBBQ0xLX0dQVT47CisJCX07CisJfTsKKworTm9kZSBvZiBhIGRldmljZSB1c2luZyBwb3dlciBkb21haW5zIG11c3QgaGF2ZSBhIHBvd2VyLWRvbWFpbnMgcHJvcGVydHksCitjb250YWluaW5nIGEgcGhhbmRsZSB0byB0aGUgcG93ZXIgZGV2aWNlIG5vZGUgYW5kIGFuIGluZGV4IHNwZWNpZnlpbmcgd2hpY2gKK3Bvd2VyIGRvbWFpbiB0byB1c2UuCitUaGUgaW5kZXggc2hvdWxkIHVzZSBtYWNyb3MgaW46CisJImluY2x1ZGUvZHQtYmluZGluZ3MvcG93ZXIvcmszMjg4LXBvd2VyLmgiIC0gZm9yIHJrMzI4OCB0eXBlIHBvd2VyIGRvbWFpbi4KKworRXhhbXBsZSBvZiB0aGUgbm9kZSB1c2luZyBwb3dlciBkb21haW46CisKKwlub2RlIHsKKwkJLyogLi4uICovCisJCXBvd2VyLWRvbWFpbnMgPSA8JnBvd2VyIFJLMzI4OF9QRF9HUFU+OworCQkvKiAuLi4gKi8KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvYy9zdW54aS9zcmFtLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2Mvc3VueGkvc3JhbS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY3Njk4MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2Mvc3VueGkvc3JhbS50eHQKQEAgLTAsMCArMSw3MiBAQAorQWxsd2lubm5lciBTb0MgU1JBTSBjb250cm9sbGVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIFNSQU0gY29udHJvbGxlciBmb3VuZCBvbiBtb3N0IEFsbHdpbm5lciBkZXZpY2VzIGlzIHJlcHJlc2VudGVkIGJ5CithIHJlZ3VsYXIgbm9kZSBmb3IgdGhlIFNSQU0gY29udHJvbGxlciBpdHNlbGYsIHdpdGggc3ViLW5vZGVzCityZXByZW5zZW50aW5nIHRoZSBTUkFNIGhhbmRsZWQgYnkgdGhlIFNSQU0gY29udHJvbGxlci4KKworQ29udHJvbGxlciBOb2RlCistLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJhbGx3aW5uZXIsc3VuNGktYTEwLXNyYW0tY29udHJvbGxlciIKKy0gcmVnIDogc3JhbSBjb250cm9sbGVyIHJlZ2lzdGVyIG9mZnNldCArIGxlbmd0aAorCitTUkFNIG5vZGVzCistLS0tLS0tLS0tCisKK0VhY2ggU1JBTSBpcyBkZXNjcmliZWQgdXNpbmcgdGhlIG1taW8tc3JhbSBiaW5kaW5ncyBkb2N1bWVudGVkIGluCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9zcmFtLnR4dAorCitFYWNoIFNSQU0gd2lsbCBoYXZlIFNSQU0gc2VjdGlvbnMgdGhhdCBhcmUgZ29pbmcgdG8gYmUgaGFuZGxlZCBieSB0aGUKK1NSQU0gY29udHJvbGxlciBhcyBzdWJub2Rlcy4gVGhlc2Ugc2VjdGlvbnMgYXJlIHJlcHJlc2VudGVkIGZvbGxvd2luZworb25jZSBhZ2FpbiB0aGUgcmVwcmVzZW50YXRpb24gZGVzY3JpYmVkIGluIHRoZSBtbWlvLXNyYW0gYmluZGluZy4KKworVGhlIHZhbGlkIHNlY3Rpb25zIGNvbXBhdGlibGUgYXJlOgorICAgIC0gYWxsd2lubmVyLHN1bjRpLWExMC1zcmFtLWEzLWE0CisgICAgLSBhbGx3aW5uZXIsc3VuNGktYTEwLXNyYW0tZAorCitEZXZpY2VzIHVzaW5nIFNSQU0gc2VjdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTb21lIGRldmljZXMgbmVlZCB0byByZXF1ZXN0IHRvIHRoZSBTUkFNIGNvbnRyb2xsZXIgdG8gbWFwIGFuIFNSQU0gZm9yCit0aGVpciBleGNsdXNpdmUgdXNlLgorCitUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gc3VjaCBhIGRldmljZSBhbmQgYW4gU1JBTSBzZWN0aW9uIGlzCitleHByZXNzZWQgdGhyb3VnaCB0aGUgYWxsd2lubmVyLHNyYW0gcHJvcGVydHksIHRoYXQgd2lsbCB0YWtlIGEKK3BoYW5kbGUgYW5kIGFuIGFyZ3VtZW50LgorCitUaGlzIHZhbGlkIHZhbHVlcyBmb3IgdGhpcyBhcmd1bWVudCBhcmU6CisgIC0gMDogQ1BVCisgIC0gMTogRGV2aWNlCisKK0V4YW1wbGUKKy0tLS0tLS0KK3NyYW0tY29udHJvbGxlckAwMWMwMDAwMCB7CisJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNGktYTEwLXNyYW0tY29udHJvbGxlciI7CisJcmVnID0gPDB4MDFjMDAwMDAgMHgzMD47CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MT47CisJcmFuZ2VzOworCisJc3JhbV9hOiBzcmFtQDAwMDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJtbWlvLXNyYW0iOworCQlyZWcgPSA8MHgwMDAwMDAwMCAweGMwMDA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCXJhbmdlcyA9IDwwIDB4MDAwMDAwMDAgMHhjMDAwPjsKKworCQllbWFjX3NyYW06IHNyYW0tc2VjdGlvbkA4MDAwIHsKKwkJCWNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjRpLWExMC1zcmFtLWEzLWE0IjsKKwkJCXJlZyA9IDwweDgwMDAgMHg0MDAwPjsKKwkJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJCX07CisJfTsKK307CisKK2VtYWM6IGV0aGVybmV0QDAxYzBiMDAwIHsKKwljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW40aS1hMTAtZW1hYyI7CisJLi4uCisKKwlhbGx3aW5uZXIsc3JhbSA9IDwmZW1hY19zcmFtIDE+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2MvdGkva2V5c3RvbmUtbmF2aWdhdG9yLWRtYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc29jL3RpL2tleXN0b25lLW5hdmlnYXRvci1kbWEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzN2M0ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc29jL3RpL2tleXN0b25lLW5hdmlnYXRvci1kbWEudHh0CkBAIC0wLDAgKzEsMTExIEBACitLZXlzdG9uZSBOYXZpZ2F0b3IgRE1BIENvbnRyb2xsZXIKKworVGhpcyBkb2N1bWVudCBleHBsYWlucyB0aGUgZGV2aWNlIHRyZWUgYmluZGluZ3MgZm9yIHRoZSBwYWNrZXQgZG1hCitvbiBrZXlzdG9uZSBkZXZpY2VzLiBUaGUgS2V5c3RvbmUgTmF2aWdhdG9yIERNQSBkcml2ZXIgc2V0cyB1cCB0aGUgZG1hCitjaGFubmVscyBhbmQgZmxvd3MgZm9yIHRoZSBRTVNTKFF1ZXVlIE1hbmFnZXIgU3ViU3lzdGVtKSB3aG8gdHJpZ2dlcnMKK3RoZSBhY3R1YWwgZGF0YSBtb3ZlbWVudHMgYWNyb3NzIGNsaWVudHMgdXNpbmcgZGVzdGluYXRpb24gcXVldWVzLiBFdmVyeQorY2xpZW50IG1vZHVsZXMgbGlrZSAgTkVUQ1AoTmV0d29yayBDb3Byb2Nlc3NvciksIFNSSU8oU2VyaWFsIFJhcGlkIElPKSwKK0NSWVBUTyBFbmdpbmVzIGV0YyBoYXMgaXRzIG93biBpbnN0YW5jZSBvZiBkbWEgaGFyZHdhcmUuIFFNU1MgaGFzIGFsc28KK2FuIGludGVybmFsIHBhY2tldCBETUEgbW9kdWxlIHdoaWNoIGlzIHVzZWQgYXMgYW4gaW5mcmFzdHJ1Y3R1cmUgRE1BCit3aXRoIHplcm8gY29weS4KKworTmF2aWdhdG9yIERNQSBjbG91ZCBsYXlvdXQ6CisJLS0tLS0tLS0tLS0tLS0tLS0tCisJfCBOYXZpZ2F0b3IgRE1BcyB8CisJLS0tLS0tLS0tLS0tLS0tLS0tCisJCXwKKwkJfC0+IERNQSBpbnN0YW5jZSAjMAorCQl8CisJCXwtPiBETUEgaW5zdGFuY2UgIzEKKwkJCS4KKwkJCS4KKwkJfAorCQl8LT4gRE1BIGluc3RhbmNlICNuCisKK05hdmlnYXRvciBETUEgcHJvcGVydGllczoKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgInRpLGtleXN0b25lLW5hdmlnYXRvci1kbWEiCisgLSBjbG9ja3M6IHBoYW5kbGUgdG8gZG1hIGluc3RhbmNlcyBjbG9ja3MuIFRoZSBjbG9jayBoYW5kbGVzIGNhbiBiZSBhcworCW1hbnkgYXMgdGhlIGRtYSBpbnN0YW5jZXMuIFRoZSBvcmRlciBzaG91bGQgYmUgbWFpbnRhaW5lZCBhcyBwZXIKKwl0aGUgZG1hIGluc3RhbmNlcy4KKyAtIHRpLG5hdmlnYXRvci1jbG91ZC1hZGRyZXNzOiBTaG91bGQgY29udGFpbiBiYXNlIGFkZHJlc3MgZm9yIHRoZSBtdWx0aS1jb3JlCisJbmF2aWdhdG9yIGNsb3VkIGFuZCBudW1iZXIgb2YgYWRkcmVzc2VzIGRlcGVuZHMgb24gU09DIGludGVncmF0aW9uCisJY29uZmlndXJhdGlvbi4uIE5hdmlnYXRvciBjbG91ZCBnbG9iYWwgYWRkcmVzcyBuZWVkcyB0byBiZSBwcm9ncmFtbWVkCisJaW50byBETUEgYW5kIHRoZSBETUEgdXNlcyBpdCBhcyB0aGUgcGh5c2ljYWwgYWRkcmVzc2VzIHRvIHJlYWNoIHF1ZXVlCisJbWFuYWdlcnMuIE5vdGUgdGhhdCB0aGVzZSBhZGRyZXNzZXMgdGhvdWdoIHBvaW50cyB0byBxdWV1ZSBtYW5hZ2VycywKKwl0aGV5IGFyZSByZWxldmFudCBvbmx5IGZyb20gRE1BIHBlcnNwZWN0aXZlLiBUaGUgUU1TUyBtYXkgbm90IGNob29zZSB0bworCXVzZSB0aGVtIHNpbmNlIGl0IGhhcyBhIGRpZmZlcmVudCBhZGRyZXNzIHNwYWNlIHZpZXcgdG8gcmVhY2ggYWxsCisJaXRzIGNvbXBvbmVudHMuCisKK0RNQSBpbnN0YW5jZSBwcm9wZXJ0aWVzOgorUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIHJlZzogU2hvdWxkIGNvbnRhaW4gcmVnaXN0ZXIgbG9jYXRpb24gYW5kIGxlbmd0aCBvZiB0aGUgZm9sbG93aW5nIGRtYQorCXJlZ2lzdGVyIHJlZ2lvbnMuIFJlZ2lzdGVyIHJlZ2lvbnMgc2hvdWxkIGJlIHNwZWNpZmllZCBpbiB0aGUgZm9sbG93aW5nCisJb3JkZXIuCisJLSBHbG9iYWwgY29udHJvbCByZWdpc3RlciByZWdpb24gKGdsb2JhbCkuCisJLSBUeCBETUEgY2hhbm5lbCBjb25maWd1cmF0aW9uIHJlZ2lzdGVyIHJlZ2lvbiAodHhjaGFuKS4KKwktIFJ4IERNQSBjaGFubmVsIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgcmVnaW9uIChyeGNoYW4pLgorCS0gVHggRE1BIGNoYW5uZWwgU2NoZWR1bGVyIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgcmVnaW9uICh0eHNjaGVkKS4KKwktIFJ4IERNQSBmbG93IGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgcmVnaW9uIChyeGZsb3cpLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorIC0gcmVnLW5hbWVzOiBOYW1lcyBmb3IgdGhlIHJlZ2lzdGVyIHJlZ2lvbnMuCisgLSB0aSxlbmFibGUtYWxsOiBFbmFibGUgYWxsIERNQSBjaGFubmVscyB2cyBjbGllbnRzIG9wZW5pbmcgc3BlY2lmaWMgY2hhbm5lbHMKKwl3aGF0IHRoZXkgbmVlZC4gVGhpcyBwcm9wZXJ0eSBpcyB1c2VmdWwgZm9yIHRoZSB1c2Vyc3BhY2UgZmFzdCBwYXRoCisJY2FzZSB3aGVyZSB0aGUgbGludXggZHJpdmVycyBlbmFibGVzIHRoZSBjaGFubmVscyB1c2VkIGJ5IHVzZXJsYW5kCisJc3RhY2suCisgLSB0aSxsb29wLWJhY2s6IFRvIGxvb3BiYWNrIFR4IHN0cmVhbWluZyBJL0YgdG8gUnggc3RyZWFtaW5nIEkvRi4gVXNlZCBmb3IKKwkgICAgICBpbmZyYXN0cnVjdHVyZSB0cmFuc2ZlcnMuCisgLSB0aSxyeC1yZXRyeS10aW1lb3V0OiBOdW1iZXIgb2YgZG1hIGN5Y2xlcyB0byB3YWl0IGJlZm9yZSByZXRyeSBvbiBidWZmZXIKKwkJICAgICBzdGFydmF0aW9uLgorCitFeGFtcGxlOgorCisJa25hdl9kbWFzOiBrbmF2X2RtYXNAMCB7CisJCWNvbXBhdGlibGUgPSAidGksa2V5c3RvbmUtbmF2aWdhdG9yLWRtYSI7CisJCWNsb2NrcyA9IDwmcGFwbGxjbGs+LCA8JmNsa3hnZT47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJcmFuZ2VzOworCQl0aSxuYXZpZ2F0b3ItY2xvdWQtYWRkcmVzcyA9IDwweDIzYTgwMDAwIDB4MjNhOTAwMDAKKwkJCQkJICAgMHgyM2FhMDAwMCAweDIzYWIwMDAwPjsKKworCQlkbWFfZ2JlOiBkbWFfZ2JlQDAgeworCQkJcmVnID0gPDB4MjAwNDAwMCAweDEwMD4sCisJCQkJICA8MHgyMDA0NDAwIDB4MTIwPiwKKwkJCQkgIDwweDIwMDQ4MDAgMHgzMDA+LAorCQkJCSAgPDB4MjAwNGMwMCAweDEyMD4sCisJCQkJICA8MHgyMDA1MDAwIDB4NDAwPjsKKwkJCXJlZy1uYW1lcyA9ICJnbG9iYWwiLCAidHhjaGFuIiwgInJ4Y2hhbiIsCisJCQkJCSJ0eHNjaGVkIiwgInJ4ZmxvdyI7CisJCX07CisKKwkJZG1hX3hnYmU6IGRtYV94Z2JlQDAgeworCQkJcmVnID0gPDB4MmZhMTAwMCAweDEwMD4sCisJCQkJPDB4MmZhMTQwMCAweDIwMD4sCisJCQkJPDB4MmZhMTgwMCAweDIwMD4sCisJCQkJPDB4MmZhMWMwMCAweDIwMD4sCisJCQkJPDB4MmZhMjAwMCAweDQwMD47CisJCQlyZWctbmFtZXMgPSAiZ2xvYmFsIiwgInR4Y2hhbiIsICJyeGNoYW4iLAorCQkJCQkidHhzY2hlZCIsICJyeGZsb3ciOworCQl9OworCX07CisKK05hdmlnYXRvciBETUEgY2xpZW50OgorUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIHRpLG5hdmlnYXRvci1kbWFzOiBMaXN0IG9mIG9uZSBvciBtb3JlIERNQSBzcGVjaWZpZXJzLCBlYWNoIGNvbnNpc3Rpbmcgb2YKKwkJCS0gQSBwaGFuZGxlIHBvaW50aW5nIHRvIERNQSBpbnN0YW5jZSBub2RlCisJCQktIEEgRE1BIGNoYW5uZWwgbnVtYmVyIGFzIGEgcGhhbmRsZSBhcmcuCisgLSB0aSxuYXZpZ2F0b3ItZG1hLW5hbWVzOiBDb250YWlucyBkbWEgY2hhbm5lbCBuYW1lIGZvciBlYWNoIERNQSBzcGVjaWZpZXIgaW4KKwkJCXRoZSAndGksbmF2aWdhdG9yLWRtYXMnIHByb3BlcnR5LgorCitFeGFtcGxlOgorCisJbmV0Y3A6IG5ldGNwQDIwOTAwMDAgeworCQkuLgorCQl0aSxuYXZpZ2F0b3ItZG1hcyA9IDwmZG1hX2diZSAyMj4sCisJCQkJPCZkbWFfZ2JlIDIzPiwKKwkJCQk8JmRtYV9nYmUgOD47CisJCXRpLG5hdmlnYXRvci1kbWEtbmFtZXMgPSAibmV0cngwIiwgIm5ldHJ4MSIsICJuZXR0eCI7CisJCS4uCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2MvdGkva2V5c3RvbmUtbmF2aWdhdG9yLXFtc3MudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvYy90aS9rZXlzdG9uZS1uYXZpZ2F0b3ItcW1zcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFjZTIxYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2MvdGkva2V5c3RvbmUtbmF2aWdhdG9yLXFtc3MudHh0CkBAIC0wLDAgKzEsMjMxIEBACisqIFRleGFzIEluc3RydW1lbnRzIEtleXN0b25lIE5hdmlnYXRvciBRdWV1ZSBNYW5hZ2VtZW50IFN1YlN5c3RlbSBkcml2ZXIKKworVGhlIFFNU1MgKFF1ZXVlIE1hbmFnZXIgU3ViIFN5c3RlbSkgZm91bmQgb24gS2V5c3RvbmUgU09DcyBpcyBvbmUgb2YKK3RoZSBtYWluIGhhcmR3YXJlIHN1YiBzeXN0ZW0gd2hpY2ggZm9ybXMgdGhlIGJhY2tib25lIG9mIHRoZSBLZXlzdG9uZQorbXVsdGktY29yZSBOYXZpZ2F0b3IuIFFNU1MgY29uc2lzdCBvZiBxdWV1ZSBtYW5hZ2VycywgcGFja2VkLWRhdGEgc3RydWN0dXJlCitwcm9jZXNzb3JzKFBEU1ApLCBsaW5raW5nIFJBTSwgZGVzY3JpcHRvciBwb29scyBhbmQgaW5mcmFzdHJ1Y3R1cmUKK1BhY2tldCBETUEuCitUaGUgUXVldWUgTWFuYWdlciBpcyBhIGhhcmR3YXJlIG1vZHVsZSB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciBhY2NlbGVyYXRpbmcKK21hbmFnZW1lbnQgb2YgdGhlIHBhY2tldCBxdWV1ZXMuIFBhY2tldHMgYXJlIHF1ZXVlZC9kZS1xdWV1ZWQgYnkgd3JpdGluZyBvcgorcmVhZGluZyBkZXNjcmlwdG9yIGFkZHJlc3MgdG8gYSBwYXJ0aWN1bGFyIG1lbW9yeSBtYXBwZWQgbG9jYXRpb24uIFRoZSBQRFNQcworcGVyZm9ybSBRTVNTIHJlbGF0ZWQgZnVuY3Rpb25zIGxpa2UgYWNjdW11bGF0aW9uLCBRb1MsIG9yIGV2ZW50IG1hbmFnZW1lbnQuCitMaW5raW5nIFJBTSByZWdpc3RlcnMgYXJlIHVzZWQgdG8gbGluayB0aGUgZGVzY3JpcHRvcnMgd2hpY2ggYXJlIHN0b3JlZCBpbgorZGVzY3JpcHRvciBSQU0uIERlc2NyaXB0b3IgUkFNIGlzIGNvbmZpZ3VyYWJsZSBhcyBpbnRlcm5hbCBvciBleHRlcm5hbCBtZW1vcnkuCitUaGUgUU1TUyBkcml2ZXIgbWFuYWdlcyB0aGUgUERTUCBzZXR1cHMsIGxpbmtpbmcgUkFNIHJlZ2lvbnMsCitxdWV1ZSBwb29sIG1hbmFnZW1lbnQgKGFsbG9jYXRpb24sIHB1c2gsIHBvcCBhbmQgbm90aWZ5KSBhbmQgZGVzY3JpcHRvcgorcG9vbCBtYW5hZ2VtZW50LgorCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUJOiBNdXN0IGJlICJ0aSxrZXlzdG9uZS1uYXZpZ2F0b3ItcW1zcyI7CistIGNsb2Nrcwk6IHBoYW5kbGUgdG8gdGhlIHJlZmVyZW5jZSBjbG9jayBmb3IgdGhpcyBkZXZpY2UuCistIHF1ZXVlLXJhbmdlCTogPHN0YXJ0IG51bWJlcj4gdG90YWwgcmFuZ2Ugb2YgcXVldWUgbnVtYmVycyBmb3IgdGhlIGRldmljZS4KKy0gbGlua3JhbTAJOiA8YWRkcmVzcyBzaXplPiBmb3IgaW50ZXJuYWwgbGluayByYW0sIHdoZXJlIHNpemUgaXMgdGhlIHRvdGFsCisJCSAgbGluayByYW0gZW50cmllcy4KKy0gbGlua3JhbTEJOiA8YWRkcmVzcyBzaXplPiBmb3IgZXh0ZXJuYWwgbGluayByYW0sIHdoZXJlIHNpemUgaXMgdGhlIHRvdGFsCisJCSAgZXh0ZXJuYWwgbGluayByYW0gZW50cmllcy4gSWYgdGhlIGFkZHJlc3MgaXMgc3BlY2lmaWVkIGFzICIwIgorCQkgIGRyaXZlciB3aWxsIGFsbG9jYXRlIG1lbW9yeS4KKy0gcW1ncnMgICAgICAgICA6IGNoaWxkIG5vZGUgZGVzY3JpYmluZyB0aGUgaW5kaXZpZHVhbCBxdWV1ZSBtYW5hZ2VycyBvbiB0aGUKKwkJICBTb0MuIE9uIGtleXN0b25lIDEgZGV2aWNlcyB0aGVyZSBzaG91bGQgYmUgb25seSBvbmUgbm9kZS4KKwkJICBPbiBrZXlzdG9uZSAyIGRldmljZXMgdGhlcmUgY2FuIGJlIG1vcmUgdGhhbiAxIG5vZGUuCisgIC0tIG1hbmFnZWQtcXVldWVzCTogdGhlIGFjdHVhbCBxdWV1ZXMgbWFuYWdlZCBieSBlYWNoIHF1ZXVlIG1hbmFnZXIKKwkJCSAgaW5zdGFuY2UsIHNwZWNpZmllZCBhcyA8ImJhc2UgcXVldWUgIyIgIiMgb2YgcXVldWVzIj4uCisgIC0tIHJlZwkJOiBBZGRyZXNzIGFuZCBzaXplIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UuCisJCQkgIFJlZ2lzdGVyIHJlZ2lvbnMgc2hvdWxkIGJlIHNwZWNpZmllZCBpbiB0aGUgZm9sbG93aW5nCisJCQkgIG9yZGVyCisJCQkgIC0gUXVldWUgUGVlayByZWdpb24uCisJCQkgIC0gUXVldWUgc3RhdHVzIFJBTS4KKwkJCSAgLSBRdWV1ZSBjb25maWd1cmF0aW9uIHJlZ2lvbi4KKwkJCSAgLSBEZXNjcmlwdG9yIG1lbW9yeSBzZXR1cCByZWdpb24uCisJCQkgIC0gUXVldWUgTWFuYWdlbWVudC9RdWV1ZSBQcm94eSByZWdpb24gZm9yIHF1ZXVlIFB1c2guCisJCQkgIC0gUXVldWUgTWFuYWdlbWVudC9RdWV1ZSBQcm94eSByZWdpb24gZm9yIHF1ZXVlIFBvcC4KKy0gcXVldWUtcG9vbHMJOiBjaGlsZCBub2RlIGNsYXNzaWZ5aW5nIHRoZSBxdWV1ZSByYW5nZXMgaW50byBwb29scy4KKwkJICBRdWV1ZSByYW5nZXMgYXJlIGdyb3VwZWQgaW50byAzIHR5cGUgb2YgcG9vbHM6CisJCSAgLSBxcGVuZAkgICAgOiBwb29sIG9mIHFwZW5kKGludGVycnVwdGlibGUpIHF1ZXVlcworCQkgIC0gZ2VuZXJhbC1wdXJwb3NlIDogcG9vbCBvZiBnZW5lcmFsIHF1ZXVlcywgcHJpbWFybHkgdXNlZAorCQkJCSAgICAgIGFzIGZyZWUgZGVzY3JpcHRvciBxdWV1ZXMgb3IgdGhlCisJCQkJICAgICAgdHJhbnNtaXQgRE1BIHF1ZXVlcy4KKwkJICAtIGFjY3VtdWxhdG9yCSAgICA6IHBvb2wgb2YgcXVldWVzIG9uIFBEU1AgYWNjdW11bGF0b3IgY2hhbm5lbAorCQkgIEVhY2ggcmFuZ2UgY2FuIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorICAtLSBxcmFuZ2UJCTogbnVtYmVyIG9mIHF1ZXVlcyB0byB1c2UgcGVyIHF1ZXVlIHJhbmdlLCBzcGVjaWZpZWQgYXMKKwkJCSAgPCJiYXNlIHF1ZXVlICMiICIjIG9mIHF1ZXVlcyI+LgorICAtLSBpbnRlcnJ1cHRzCQk6IE9wdGlvbmFsIHByb3BlcnR5IHRvIHNwZWNpZnkgdGhlIGludGVycnVwdCBtYXBwaW5nCisJCQkgIGZvciBpbnRlcnJ1cHRpYmxlIHF1ZXVlcy4gVGhlIGRyaXZlciBhZGRpdGlvbmFseSBzZXRzCisJCQkgIHRoZSBpbnRlcnJ1cHQgYWZmaW5pdHkgaGludCBiYXNlZCBvbiB0aGUgY3B1IG1hc2suCisgIC0tIHFhbGxvYy1ieS1pZAk6IE9wdGlvbmFsIHByb3BlcnR5IHRvIHNwZWNpZnkgdGhhdCB0aGUgcXVldWVzIGluIHRoaXMKKwkJCSAgcmFuZ2UgY2FuIG9ubHkgYmUgYWxsb2NhdGVkIGJ5IHF1ZXVlIGlkLgorICAtLSBhY2N1bXVsYXRvcgk6IEFjY3VtdWxhdG9yIGNoYW5uZWwgc3BlY2lmaWNhdGlvbi4gQW55IG9mIHRoZSBQRFNQcyBpbgorCQkJICBRTVNTIGNhbiBiZSBsb2FkZWQgd2l0aCB0aGUgYWNjdW11bGF0b3IgZmlybXdhcmUuIFRoZQorCQkJICBhY2N1bXVsYXRvciBmaXJtd2FyZeKAmXMgam9iIGlzIHRvIHBvbGwgYSBzZWxlY3QgbnVtYmVyIG9mCisJCQkgIHF1ZXVlcyBsb29raW5nIGZvciBkZXNjcmlwdG9ycyB0aGF0IGhhdmUgYmVlbiBwdXNoZWQKKwkJCSAgaW50byB0aGVtLiBEZXNjcmlwdG9ycyBhcmUgcG9wcGVkIGZyb20gdGhlIHF1ZXVlIGFuZAorCQkJICBwbGFjZWQgaW4gYSBidWZmZXIgcHJvdmlkZWQgYnkgdGhlIGhvc3QuIFdoZW4gdGhlIGxpc3QKKwkJCSAgYmVjb21lcyBmdWxsIG9yIGEgcHJvZ3JhbW1lZCB0aW1lIHBlcmlvZCBleHBpcmVzLCB0aGUKKwkJCSAgYWNjdW11bGF0b3IgdHJpZ2dlcnMgYW4gaW50ZXJydXB0IHRvIHRoZSBob3N0IHRvIHJlYWQKKwkJCSAgdGhlIGJ1ZmZlciBmb3IgZGVzY3JpcHRvciBpbmZvcm1hdGlvbi4gVGhpcyBmaXJtd2FyZQorCQkJICBjb21lcyBpbiAxNiwgMzIsIGFuZCA0OCBjaGFubmVsIGJ1aWxkcy4gRWFjaCBvZiB0aGVzZQorCQkJICBjaGFubmVscyBjYW4gYmUgY29uZmlndXJlZCB0byBtb25pdG9yIDMyIGNvbnRpZ3VvdXMKKwkJCSAgcXVldWVzLiAgQWNjdW11bGF0b3IgY2hhbm5lbCBwcm9wZXJ0eSBpcyBzcGVjaWZpZWQgYXM6CisJCQkgIDxwZHNwLWlkLCBjaGFubmVsLCBlbnRyaWVzLCBwYWNpbmcgbW9kZSwgbGF0ZW5jeT4KKwkJCSAgcGRzcC1pZCAgICAgOiBRTVNTIFBEU1AgcnVubmluZyBhY2N1bXVsYXRvciBmaXJtd2FyZQorCQkJCQlvbiB3aGljaCB0aGUgY2hhbm5lbCBoYXMgdG8gYmUKKwkJCQkJY29uZmlndXJlZAorCQkJICBjaGFubmVsICAgICA6IEFjY3VtdWxhdG9yIGNoYW5uZWwgbnVtYmVyCisJCQkgIGVudHJpZXMgICAgIDogU2l6ZSBvZiB0aGUgYWNjdW11bGF0b3IgZGVzY3JpcHRvciBsaXN0CisJCQkgIHBhY2luZyBtb2RlIDogSW50ZXJydXB0IHBhY2luZyBtb2RlCisJCQkJCTAgOiBOb25lLCBpLmUgaW50ZXJydXB0IG9uIGxpc3QgZnVsbCBvbmx5CisJCQkJCTEgOiBUaW1lIGRlbGF5IHNpbmNlIGxhc3QgaW50ZXJydXB0CisJCQkJCTIgOiBUaW1lIGRlbGF5IHNpbmNlIGZpcnN0IG5ldyBwYWNrZXQKKwkJCQkJMyA6IFRpbWUgZGVsYXkgc2luY2UgbGFzdCBuZXcgcGFja2V0CisJCQkgIGxhdGVuY3kgICAgIDogdGltZSB0byBkZWxheSB0aGUgaW50ZXJydXB0LCBzcGVjaWZpZWQKKwkJCQkJaW4gbWljcm9zZWNvbmRzLgorICAtLSBtdWx0aS1xdWV1ZQk6IE9wdGlvbmFsIHByb3BlcnR5IHRvIHNwZWNpZnkgdGhhdCB0aGUgY2hhbm5lbCBoYXMgdG8KKwkJCSAgbW9uaXRvciB1cHRvIDMyIHF1ZXVlcyBzdGFydGluZyBhdCB0aGUgYmFzZSBxdWV1ZSAjLgorLSBkZXNjcmlwdG9yLXJlZ2lvbnMJOiBjaGlsZCBub2RlIGRlc2NyaWJpbmcgdGhlIG1lbW9yeSByZWdpb25zIGZvciBrZXlzdG9uZQorCQkJICBuYXZpZ2F0b3IgcGFja2V0IERNQSBkZXNjcmlwdG9ycy4gVGhlIG1lbW9yeSBmb3IKKwkJCSAgZGVzY3JpcHRvcnMgd2lsbCBiZSBhbGxvY2F0ZWQgYnkgdGhlIGRyaXZlci4KKyAgLS0gaWQJCQkJOiByZWdpb24gbnVtYmVyIGluIFFNU1MuCisgIC0tIHJlZ2lvbi1zcGVjCQk6IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRlc2NyaXB0b3JzIGluIHRoZQorCQkJCSAgcmVnaW9uLCBzcGVjaWZpZWQgYXMKKwkJCQkgIDwiIyBvZiBkZXNjcmlwdG9ycyIgImRlc2NyaXB0b3Igc2l6ZSI+LgorICAtLSBsaW5rLWluZGV4CQkJOiBzdGFydCBpbmRleCwgaS5lLiBpbmRleCBvZiB0aGUgZmlyc3QKKwkJCQkgIGRlc2NyaXB0b3IgaW4gdGhlIHJlZ2lvbi4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gZG1hLWNvaGVyZW50CTogUHJlc2VudCBpZiBETUEgb3BlcmF0aW9ucyBhcmUgY29oZXJlbnQuCistIHBkc3BzCQk6IGNoaWxkIG5vZGUgZGVzY3JpYmluZyB0aGUgUERTUCBjb25maWd1cmF0aW9uLgorICAtLSBmaXJtd2FyZQkJOiBmaXJtd2FyZSB0byBiZSBsb2FkZWQgb24gdGhlIFBEU1AuCisgIC0tIGlkCQkJOiB0aGUgcW1zcyBwZHNwIHRoYXQgd2lsbCBydW4gdGhlIGZpcm13YXJlLgorICAtLSByZWcJCTogQWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgUERTUC4KKwkJCSAgUmVnaXN0ZXIgcmVnaW9ucyBzaG91bGQgYmUgc3BlY2lmaWVkIGluIHRoZSBmb2xsb3dpbmcKKwkJCSAgb3JkZXIKKwkJCSAgLSBQRFNQIGludGVybmFsIFJBTSByZWdpb24uCisJCQkgIC0gUERTUCBjb250cm9sL3N0YXR1cyByZWdpb24gcmVnaXN0ZXJzLgorCQkJICAtIFFNU1MgaW50ZXJydXB0IGRpc3RyaWJ1dG9yIHJlZ2lzdGVycy4KKwkJCSAgLSBQRFNQIGNvbW1hbmQgaW50ZXJmYWNlIHJlZ2lvbi4KKworRXhhbXBsZToKKworcW1zczogcW1zc0AyYTQwMDAwIHsKKwljb21wYXRpYmxlID0gInRpLGtleXN0b25lLXFtc3MiOworCWRtYS1jb2hlcmVudDsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwxPjsKKwljbG9ja3MgPSA8JmNoaXBjbGsxMz47CisJcmFuZ2VzOworCXF1ZXVlLXJhbmdlCT0gPDAgMHg0MDAwPjsKKwlsaW5rcmFtMAk9IDwweDEwMDAwMCAweDgwMDA+OworCWxpbmtyYW0xCT0gPDB4MCAweDEwMDAwPjsKKworCXFtZ3JzIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQlyYW5nZXM7CisJCXFtZ3IwIHsKKwkJCW1hbmFnZWQtcXVldWVzID0gPDAgMHgyMDAwPjsKKwkJCXJlZyA9IDwweDJhNDAwMDAgMHgyMDAwMD4sCisJCQkgICAgICA8MHgyYTA2MDAwIDB4NDAwPiwKKwkJCSAgICAgIDwweDJhMDIwMDAgMHgxMDAwPiwKKwkJCSAgICAgIDwweDJhMDMwMDAgMHgxMDAwPiwKKwkJCSAgICAgIDwweDIzYTgwMDAwIDB4MjAwMDA+LAorCQkJICAgICAgPDB4MmE4MDAwMCAweDIwMDAwPjsKKwkJfTsKKworCQlxbWdyMSB7CisJCQltYW5hZ2VkLXF1ZXVlcyA9IDwweDIwMDAgMHgyMDAwPjsKKwkJCXJlZyA9IDwweDJhNjAwMDAgMHgyMDAwMD4sCisJCQkgICAgICA8MHgyYTA2NDAwIDB4NDAwPiwKKwkJCSAgICAgIDwweDJhMDQwMDAgMHgxMDAwPiwKKwkJCSAgICAgIDwweDJhMDUwMDAgMHgxMDAwPiwKKwkJCSAgICAgIDwweDIzYWEwMDAwIDB4MjAwMDA+LAorCQkJICAgICAgPDB4MmFhMDAwMCAweDIwMDAwPjsKKwkJfTsKKwl9OworCXF1ZXVlLXBvb2xzIHsKKwkJcXBlbmQgeworCQkJcXBlbmQtMCB7CisJCQkJcXJhbmdlID0gPDY1OCA4PjsKKwkJCQlpbnRlcnJ1cHRzID08MCA0MCAweGYwNCAwIDQxIDB4ZjA0IDAgNDIgMHhmMDQKKwkJCQkJICAgICAwIDQzIDB4ZjA0IDAgNDQgMHhmMDQgMCA0NSAweGYwNAorCQkJCQkgICAgIDAgNDYgMHhmMDQgMCA0NyAweGYwND47CisJCQl9OworCQkJcXBlbmQtMSB7CisJCQkJcXJhbmdlID0gPDg3MDQgMTY+OworCQkJCWludGVycnVwdHMgPSA8MCA0OCAweGYwNCAwIDQ5IDB4ZjA0IDAgNTAgMHhmMDQKKwkJCQkJICAgICAgMCA1MSAweGYwNCAwIDUyIDB4ZjA0IDAgNTMgMHhmMDQKKwkJCQkJICAgICAgMCA1NCAweGYwNCAwIDU1IDB4ZjA0IDAgNTYgMHhmMDQKKwkJCQkJICAgICAgMCA1NyAweGYwNCAwIDU4IDB4ZjA0IDAgNTkgMHhmMDQKKwkJCQkJICAgICAgMCA2MCAweGYwNCAwIDYxIDB4ZjA0IDAgNjIgMHhmMDQKKwkJCQkJICAgICAgMCA2MyAweGYwND47CisJCQkJcWFsbG9jLWJ5LWlkOworCQkJfTsKKwkJCXFwZW5kLTIgeworCQkJCXFyYW5nZSA9IDw4NzIwIDE2PjsKKwkJCQlpbnRlcnJ1cHRzID0gPDAgNjQgMHhmMDQgMCA2NSAweGYwNCAwIDY2IDB4ZjA0CisJCQkJCSAgICAgIDAgNTkgMHhmMDQgMCA2OCAweGYwNCAwIDY5IDB4ZjA0CisJCQkJCSAgICAgIDAgNzAgMHhmMDQgMCA3MSAweGYwNCAwIDcyIDB4ZjA0CisJCQkJCSAgICAgIDAgNzMgMHhmMDQgMCA3NCAweGYwNCAwIDc1IDB4ZjA0CisJCQkJCSAgICAgIDAgNzYgMHhmMDQgMCA3NyAweGYwNCAwIDc4IDB4ZjA0CisJCQkJCSAgICAgIDAgNzkgMHhmMDQ+OworCQkJfTsKKwkJfTsKKwkJZ2VuZXJhbC1wdXJwb3NlIHsKKwkJCWdwLTAgeworCQkJCXFyYW5nZSA9IDw0MDAwIDY0PjsKKwkJCX07CisJCQluZXRjcC10eCB7CisJCQkJcXJhbmdlID0gPDY0MCA5PjsKKwkJCQlxYWxsb2MtYnktaWQ7CisJCQl9OworCQl9OworCQlhY2N1bXVsYXRvciB7CisJCQlhY2MtMCB7CisJCQkJcXJhbmdlID0gPDEyOCAzMj47CisJCQkJYWNjdW11bGF0b3IgPSA8MCAzNiAxNiAyIDUwPjsKKwkJCQlpbnRlcnJ1cHRzID0gPDAgMjE1IDB4ZjAxPjsKKwkJCQltdWx0aS1xdWV1ZTsKKwkJCQlxYWxsb2MtYnktaWQ7CisJCQl9OworCQkJYWNjLTEgeworCQkJCXFyYW5nZSA9IDwxNjAgMzI+OworCQkJCWFjY3VtdWxhdG9yID0gPDAgMzcgMTYgMiA1MD47CisJCQkJaW50ZXJydXB0cyA9IDwwIDIxNiAweGYwMT47CisJCQkJbXVsdGktcXVldWU7CisJCQl9OworCQkJYWNjLTIgeworCQkJCXFyYW5nZSA9IDwxOTIgMzI+OworCQkJCWFjY3VtdWxhdG9yID0gPDAgMzggMTYgMiA1MD47CisJCQkJaW50ZXJydXB0cyA9IDwwIDIxNyAweGYwMT47CisJCQkJbXVsdGktcXVldWU7CisJCQl9OworCQkJYWNjLTMgeworCQkJCXFyYW5nZSA9IDwyMjQgMzI+OworCQkJCWFjY3VtdWxhdG9yID0gPDAgMzkgMTYgMiA1MD47CisJCQkJaW50ZXJydXB0cyA9IDwwIDIxOCAweGYwMT47CisJCQkJbXVsdGktcXVldWU7CisJCQl9OworCQl9OworCX07CisJZGVzY3JpcHRvci1yZWdpb25zIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQlyYW5nZXM7CisJCXJlZ2lvbi0xMiB7CisJCQlpZCA9IDwxMj47CisJCQlyZWdpb24tc3BlYyA9IDw4MTkyIDEyOD47IC8qIG51bV9kZXNjIGRlc2Nfc2l6ZSAqLworCQkJbGluay1pbmRleCA9IDwweDQwMDA+OworCQl9OworCX07CisJcGRzcHMgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCXJhbmdlczsKKwkJcGRzcDBAMHgyYTEwMDAwIHsKKwkJCXJlZyA9IDwweDJhMTAwMDAgMHgxMDAwPiwKKwkJCSAgICAgIDwweDJhMGYwMDAgMHgxMDA+LAorCQkJICAgICAgPDB4MmEwYzAwMCAweDNjOD4sCisJCQkgICAgICA8MHgyYTIwMDAwIDB4NDAwMD47CisJCQlpZCA9IDwwPjsKKwkJfTsKKwl9OworfTsgLyogcW1zcyAqLwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2FkaSxhZGF1MTcwMS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYWRpLGFkYXUxNzAxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDExMjhjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2FkaSxhZGF1MTcwMS50eHQKQEAgLTAsMCArMSwzOSBAQAorQW5hbG9nIERldmljZXMgQURBVTE3MDEKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworIC0gY29tcGF0aWJsZToJCVNob3VsZCBjb250YWluICJhZGksYWRhdTE3MDEiCisgLSByZWc6CQkJVGhlIGkyYyBhZGRyZXNzLiBWYWx1ZSBkZXBlbmRzIG9uIHRoZSBzdGF0ZSBvZiBBRERSMAorCQkJYW5kIEFERFIxLCBhcyB3aXJlZCBpbiBoYXJkd2FyZS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworIC0gcmVzZXQtZ3BpbzogCQlBIEdQSU8gc3BlYyB0byBkZWZpbmUgd2hpY2ggcGluIGlzIGNvbm5lY3RlZCB0byB0aGUKKwkJCWNoaXAncyAhUkVTRVQgcGluLiBJZiBzcGVjaWZpZWQsIHRoZSBkcml2ZXIgd2lsbAorCQkJYXNzZXJ0IGEgaGFyZHdhcmUgcmVzZXQgYXQgcHJvYmUgdGltZS4KKyAtIGFkaSxwbGwtbW9kZS1ncGlvczoJQW4gYXJyYXkgb2YgdHdvIEdQSU8gc3BlY3MgdG8gZGVzY3JpYmUgdGhlIEdQSU9zCisJCQl0aGUgQURBVSdzIFBMTCBjb25maWcgcGlucyBhcmUgY29ubmVjdGVkIHRvLgorCQkJVGhlIHN0YXRlIG9mIHRoZSBwaW5zIGFyZSBzZXQgYWNjb3JkaW5nIHRvIHRoZQorCQkJY29uZmlndXJlZCBjbG9jayBkaXZpZGVyIG9uIEFTb0Mgc2lkZSBiZWZvcmUgdGhlCisJCQlmaXJtd2FyZSBpcyBsb2FkZWQuCisgLSBhZGkscGluLWNvbmZpZzoJQW4gYXJyYXkgb2YgMTIgbnVtZXJpY2FsIHZhbHVlcyBzZWxlY3Rpbmcgb25lIG9mIHRoZQorCQkJcGluIGNvbmZpZ3VyYXRpb25zIGFzIGRlc2NyaWJlZCBpbiB0aGUgZGF0YXNoZWV0LAorCQkJdGFibGUgNTMuIE5vdGUgdGhhdCB0aGUgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eSBoYXMKKwkJCXRvIGJlIHByZWZpeGVkIHdpdGggJy9iaXRzLyA4Jy4KKyAtIGF2ZGQtc3VwcGx5OiAJUG93ZXIgc3VwcGx5IGZvciBBVkRELCBwcm92aWRpbmcgMy4zVgorIC0gZHZkZC1zdXBwbHk6IAlQb3dlciBzdXBwbHkgZm9yIERWREQsIHByb3ZpZGluZyAzLjNWCisKK0V4YW1wbGVzOgorCisJaTJjX2J1cyB7CisJCWFkYXUxNzAxQDM0IHsKKwkJCWNvbXBhdGlibGUgPSAiYWRpLGFkYXUxNzAxIjsKKwkJCXJlZyA9IDwweDM0PjsKKwkJCXJlc2V0LWdwaW8gPSA8JmdwaW8gMjMgMD47CisJCQlhdmRkLXN1cHBseSA9IDwmdmRkXzN2M19yZWc+OworCQkJZHZkZC1zdXBwbHkgPSA8JnZkZF8zdjNfcmVnPjsKKwkJCWFkaSxwbGwtbW9kZS1ncGlvcyA9IDwmZ3BpbyAyNCAwICZncGlvIDI1IDA+OworCQkJYWRpLHBpbi1jb25maWcgPSAvYml0cy8gOCA8MHg0IDB4NyAweDUgMHg1IDB4NCAweDQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NCAweDQgMHg0IDB4NCAweDQgMHg0PjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2FkaSxheGktaTJzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9hZGksYXhpLWkycy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg3NWNhNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9hZGksYXhpLWkycy50eHQKQEAgLTAsMCArMSwzMSBAQAorQURJIEFYSS1JMlMgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZSA6IE11c3QgYmUgImFkaSxheGktaTJzLTEuMDAuYSIKKyAtIHJlZyA6IE11c3QgY29udGFpbiBJMlMgY29yZSdzIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCisgLSBjbG9ja3MgOiBQYWlycyBvZiBwaGFuZGxlIGFuZCBzcGVjaWZpZXIgcmVmZXJlbmNpbmcgdGhlIGNvbnRyb2xsZXIncyBjbG9ja3MuCisgICBUaGUgY29udHJvbGxlciBleHBlY3RzIHR3byBjbG9ja3MsIHRoZSBjbG9jayB1c2VkIGZvciB0aGUgQVhJIGludGVyZmFjZSBhbmQKKyAgIHRoZSBjbG9jayB1c2VkIGFzIHRoZSBzYW1wbGluZyByYXRlIHJlZmVyZW5jZSBjbG9jayBzYW1wbGUuCisgLSBjbG9jay1uYW1lcyA6ICJheGkiIGZvciB0aGUgY2xvY2sgdG8gdGhlIEFYSSBpbnRlcmZhY2UsICJyZWYiIGZvciB0aGUgc2FtcGxlCisgICByYXRlIHJlZmVyZW5jZSBjbG9jay4KKyAtIGRtYXM6IFBhaXJzIG9mIHBoYW5kbGUgYW5kIHNwZWNpZmllciBmb3IgdGhlIERNQSBjaGFubmVscyB0aGF0IGFyZSB1c2VkIGJ5CisgICB0aGUgY29yZS4gVGhlIGNvcmUgZXhwZWN0cyB0d28gZG1hIGNoYW5uZWxzLCBvbmUgZm9yIHRyYW5zbWl0IGFuZCBvbmUgZm9yCisgICByZWNlaXZlLgorIC0gZG1hLW5hbWVzIDogInR4IiBmb3IgdGhlIHRyYW5zbWl0IGNoYW5uZWwsICJyeCIgZm9yIHRoZSByZWNlaXZlIGNoYW5uZWwuCisKK0ZvciBtb3JlIGRldGFpbHMgb24gdGhlICdkbWEnLCAnZG1hLW5hbWVzJywgJ2Nsb2NrJyBhbmQgJ2Nsb2NrLW5hbWVzJyBwcm9wZXJ0aWVzCitwbGVhc2UgY2hlY2s6CisJKiByZXNvdXJjZS1uYW1lcy50eHQKKwkqIGNsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCSogZG1hL2RtYS50eHQKKworRXhhbXBsZToKKworCWkyczogaTJzQDB4Nzc2MDAwMDAgeworCQljb21wYXRpYmxlID0gImFkaSxheGktaTJzLTEuMDAuYSI7CisJCXJlZyA9IDwweDc3NjAwMDAwIDB4MTAwMD47CisJCWNsb2NrcyA9IDwmY2xrIDE1PiwgPCZhdWRpb19jbG9jaz47CisJCWNsb2NrLW5hbWVzID0gImF4aSIsICJyZWYiOworCQlkbWFzID0gPCZwczdfZG1hIDA+LCA8JnBzN19kbWEgMT47CisJCWRtYS1uYW1lcyA9ICJ0eCIsICJyeCI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9hZGksYXhpLXNwZGlmLXR4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9hZGksYXhpLXNwZGlmLXR4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWI3OTk3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2FkaSxheGktc3BkaWYtdHgudHh0CkBAIC0wLDAgKzEsMzAgQEAKK0FESSBBWEktU1BESUYgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZSA6IE11c3QgYmUgImFkaSxheGktc3BkaWYtdHgtMS4wMC5hIgorIC0gcmVnIDogTXVzdCBjb250YWluIFNQRElGIGNvcmUncyByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorIC0gY2xvY2tzIDogUGFpcnMgb2YgcGhhbmRsZSBhbmQgc3BlY2lmaWVyIHJlZmVyZW5jaW5nIHRoZSBjb250cm9sbGVyJ3MgY2xvY2tzLgorICAgVGhlIGNvbnRyb2xsZXIgZXhwZWN0cyB0d28gY2xvY2tzLCB0aGUgY2xvY2sgdXNlZCBmb3IgdGhlIEFYSSBpbnRlcmZhY2UgYW5kCisgICB0aGUgY2xvY2sgdXNlZCBhcyB0aGUgc2FtcGxpbmcgcmF0ZSByZWZlcmVuY2UgY2xvY2sgc2FtcGxlLgorIC0gY2xvY2stbmFtZXM6ICJheGkiIGZvciB0aGUgY2xvY2sgdG8gdGhlIEFYSSBpbnRlcmZhY2UsICJyZWYiIGZvciB0aGUgc2FtcGxlCisgICByYXRlIHJlZmVyZW5jZSBjbG9jay4KKyAtIGRtYXM6IFBhaXJzIG9mIHBoYW5kbGUgYW5kIHNwZWNpZmllciBmb3IgdGhlIERNQSBjaGFubmVsIHRoYXQgaXMgdXNlZCBieQorICAgdGhlIGNvcmUuIFRoZSBjb3JlIGV4cGVjdHMgb25lIGRtYSBjaGFubmVsIGZvciB0cmFuc21pdC4KKyAtIGRtYS1uYW1lcyA6IE11c3QgYmUgInR4IgorCitGb3IgbW9yZSBkZXRhaWxzIG9uIHRoZSAnZG1hJywgJ2RtYS1uYW1lcycsICdjbG9jaycgYW5kICdjbG9jay1uYW1lcycgcHJvcGVydGllcworcGxlYXNlIGNoZWNrOgorCSogcmVzb3VyY2UtbmFtZXMudHh0CisJKiBjbG9jay9jbG9jay1iaW5kaW5ncy50eHQKKwkqIGRtYS9kbWEudHh0CisKK0V4YW1wbGU6CisKKwlzcGRpZjogc3BkaWZAMHg3NzQwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiYWRpLGF4aS1zcGRpZi10eC0xLjAwLmEiOworCQlyZWcgPSA8MHg3NzYwMDAwMCAweDEwMDA+OworCQljbG9ja3MgPSA8JmNsayAxNT4sIDwmYXVkaW9fY2xvY2s+OworCQljbG9jay1uYW1lcyA9ICJheGkiLCAicmVmIjsKKwkJZG1hcyA9IDwmcHM3X2RtYSAwPjsKKwkJZG1hLW5hbWVzID0gInR4IjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2FkaSxzc20yNjAyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9hZGksc3NtMjYwMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IzMzAyZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9hZGksc3NtMjYwMi50eHQKQEAgLTAsMCArMSwxOSBAQAorQW5hbG9nIERldmljZXMgU1NNMjYwMiwgU1NNMjYwMyBhbmQgU1NNMjYwNCBJMlMgYXVkaW8gQ09ERUMgZGV2aWNlcworCitTU00yNjAyIHN1cHBvcnQgYm90aCBJMkMgYW5kIFNQSSBhcyB0aGUgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UsCit0aGUgc2VsZWN0aW9uIGlzIG1hZGUgYnkgdGhlIE1PREUgc3RyYXAtaW4gcGluLgorU1NNMjYwMyBhbmQgU1NNMjYwNCBvbmx5IHN1cHBvcnQgSTJDIGFzIHRoZSBjb25maWd1cmF0aW9uIGludGVyZmFjZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGUgOiBPbmUgb2YgImFkaSxzc20yNjAyIiwgImFkaSxzc20yNjAzIiBvciAiYWRpLHNzbTI2MDQiCisKKyAgLSByZWcgOiB0aGUgSTJDIGFkZHJlc3Mgb2YgdGhlIGRldmljZSBmb3IgSTJDLCB0aGUgY2hpcCBzZWxlY3QKKyAgICAgICAgICBudW1iZXIgZm9yIFNQSS4KKworIEV4YW1wbGU6CisKKwlzc20yNjAyOiBzc20yNjAyQDFhIHsKKwkJY29tcGF0aWJsZSA9ICJhZGksc3NtMjYwMiI7CisJCXJlZyA9IDwweDFhPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2FrNDEwNC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYWs0MTA0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWNhNWUxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2FrNDEwNC50eHQKQEAgLTAsMCArMSwyNSBAQAorQUs0MTA0IFMvUERJRiB0cmFuc21pdHRlcgorCitUaGlzIGRldmljZSBzdXBwb3J0cyBTUEkgbW9kZSBvbmx5LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZSA6ICJhc2FoaS1rYXNlaSxhazQxMDQiCisKKyAgLSByZWcgOiBUaGUgY2hpcCBzZWxlY3QgbnVtYmVyIG9uIHRoZSBTUEkgYnVzCisKKyAgLSB2ZGQtc3VwcGx5IDogQSByZWd1bGF0b3Igbm9kZSwgcHJvdmlkaW5nIDIuN1YgLSAzLjZWCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKyAgLSByZXNldC1ncGlvIDogYSBHUElPIHNwZWMgZm9yIHRoZSByZXNldCBwaW4uIElmIHNwZWNpZmllZCwgaXQgd2lsbCBiZQorCQkgZGVhc3NlcnRlZCBiZWZvcmUgY29tbXVuaWNhdGlvbiB0byB0aGUgZGV2aWNlIHN0YXJ0cy4KKworRXhhbXBsZToKKworc3BkaWY6IGFrNDEwNEAwIHsKKwljb21wYXRpYmxlID0gImFzYWhpLWthc2VpLGFrNDEwNCI7CisJcmVnID0gPDA+OworCXNwaS1tYXgtZnJlcXVlbmN5ID0gPDUwMDAwMDA+OworCXZkZC1zdXBwbHkgPSA8JnZkZF8zdjNfcmVnPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYWs0NTU0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9hazQ1NTQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzNGZhMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYWs0NTU0LnR4dApAQCAtMCwwICsxLDExIEBACitBSzQ1NTQgQURDL0RBQworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZSA6ICJhc2FoaS1rYXNlaSxhazQ1NTQiCisKK0V4YW1wbGU6CisKK2FrNDU1NC1hZGMtZGFjIHsKKwljb21wYXRpYmxlID0gImFzYWhpLWthc2VpLGFrNDU1NCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2FrNDYxMy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYWs0NjEzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWE5MTk1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2FrNDYxMy50eHQKQEAgLTAsMCArMSwxNyBAQAorQUs0NjEzIEkyQyB0cmFuc21pdHRlcgorCitUaGlzIGRldmljZSBzdXBwb3J0cyBJMkMgbW9kZSBvbmx5LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiAiYXNhaGkta2FzZWksYWs0NjEzIgorLSByZWcgOiBUaGUgY2hpcCBzZWxlY3QgbnVtYmVyIG9uIHRoZSBJMkMgYnVzCisKK0V4YW1wbGU6CisKKyZpMmMgeworCWFrNDYxMzogYWs0NjEzQDB4MTAgeworCQljb21wYXRpYmxlID0gImFzYWhpLWthc2VpLGFrNDYxMyI7CisJCXJlZyA9IDwweDEwPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9hazQ2NDIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2FrNDY0Mi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQwNzg0ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9hazQ2NDIudHh0CkBAIC0wLDAgKzEsMzcgQEAKK0FLNDY0MiBJMkMgdHJhbnNtaXR0ZXIKKworVGhpcyBkZXZpY2Ugc3VwcG9ydHMgSTJDIG1vZGUgb25seS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGUgOiAiYXNhaGkta2FzZWksYWs0NjQyIiBvciAiYXNhaGkta2FzZWksYWs0NjQzIiBvciAiYXNhaGkta2FzZWksYWs0NjQ4IgorICAtIHJlZyA6IFRoZSBjaGlwIHNlbGVjdCBudW1iZXIgb24gdGhlIEkyQyBidXMKKworT3B0aW9uYWwgcHJvcGVydGllczoKKworICAtICNjbG9jay1jZWxscyA6CQljb21tb24gY2xvY2sgYmluZGluZzsgc2hhbGwgYmUgc2V0IHRvIDAKKyAgLSBjbG9ja3MgOgkJCWNvbW1vbiBjbG9jayBiaW5kaW5nOyBNQ0tJIGNsb2NrCisgIC0gY2xvY2stZnJlcXVlbmN5IDoJCWNvbW1vbiBjbG9jayBiaW5kaW5nOyBmcmVxdWVuY3kgb2YgTUNLTworICAtIGNsb2NrLW91dHB1dC1uYW1lcyA6CWNvbW1vbiBjbG9jayBiaW5kaW5nOyBNQ0tPIGNsb2NrIG5hbWUKKworRXhhbXBsZSAxOgorCismaTJjIHsKKwlhazQ2NDg6IGFrNDY0OEAweDEyIHsKKwkJY29tcGF0aWJsZSA9ICJhc2FoaS1rYXNlaSxhazQ2NDIiOworCQlyZWcgPSA8MHgxMj47CisJfTsKK307CisKK0V4YW1wbGUgMjoKKworJmkyYyB7CisJYWs0NjQzOiBjb2RlY0AxMiB7CisJCWNvbXBhdGlibGUgPSAiYXNhaGkta2FzZWksYWs0NjQzIjsKKwkJcmVnID0gPDB4MTI+OworCQkjY2xvY2stY2VsbHMgPSA8MD47CisJCWNsb2NrcyA9IDwmYXVkaW9fY2xvY2s+OworCQljbG9jay1mcmVxdWVuY3kgPSA8MTIyODgwMDA+OworCQljbG9jay1vdXRwdXQtbmFtZXMgPSAiYWs0NjQzX21ja28iOworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2FrNTM4Ni50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYWs1Mzg2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzNkZjNhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2FrNTM4Ni50eHQKQEAgLTAsMCArMSwyMyBAQAorQUs1Mzg2IFNpbmdsZS1lbmRlZCAyNC1CaXQgMTkya0h6IGRlbHRhLXNpZ21hIEFEQworCitUaGlzIGRldmljZSBoYXMgbm8gY29udHJvbCBpbnRlcmZhY2UuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogImFzYWhpLWthc2VpLGFrNTM4NiIKKworT3B0aW9uYWwgcHJvcGVydGllczoKKworICAtIHJlc2V0LWdwaW8gOiBhIEdQSU8gc3BlYyBmb3IgdGhlIHJlc2V0L3Bvd2VyIGRvd24gcGluLgorCQkgSWYgc3BlY2lmaWVkLCBpdCB3aWxsIGJlIGRlYXNzZXJ0ZWQgYXQgcHJvYmUgdGltZS4KKyAgLSB2YS1zdXBwbHkgOiBhIHJlZ3VsYXRvciBzcGVjLCBwcm92aWRpbmcgNS4wVgorICAtIHZkLXN1cHBseSA6IGEgcmVndWxhdG9yIHNwZWMsIHByb3ZpZGluZyAzLjNWCisKK0V4YW1wbGU6CisKK3NwZGlmOiBhazUzODZAMCB7CisJY29tcGF0aWJsZSA9ICJhc2FoaS1rYXNlaSxhazUzODYiOworCXJlc2V0LWdwaW8gPSA8JmdwaW8wIDIzPjsKKwl2YS1zdXBwbHkgPSA8JnZkZF81djBfcmVnPjsKKwl2ZC1zdXBwbHkgPSA8JnZkZF8zdjNfcmVnPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYWxjNTYyMy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYWxjNTYyMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZjODZjOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9hbGM1NjIzLnR4dApAQCAtMCwwICsxLDI1IEBACitBTEM1NjIxL0FMQzU2MjIvQUxDNTYyMyBhdWRpbyBDb2RlYworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgLSBjb21wYXRpYmxlOgkicmVhbHRlayxhbGM1NjIzIgorIC0gcmVnOgkJdGhlIEkyQyBhZGRyZXNzIG9mIHRoZSBkZXZpY2UuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKyAtIGFkZC1jdHJsOgkgIERlZmF1bHQgcmVnaXN0ZXIgdmFsdWUgZm9yIFJlZy00MGgsIEFkZGl0aW9uYWwgQ29udHJvbAorCQkgIFJlZ2lzdGVyLiBJZiBhYnNlbnQgb3IgaGFzIHRoZSB2YWx1ZSBvZiAwLCB0aGUKKwkJICByZWdpc3RlciBpcyB1bnRvdWNoZWQuCisKKyAtIGphY2stZGV0LWN0cmw6IERlZmF1bHQgcmVnaXN0ZXIgdmFsdWUgZm9yIFJlZy01QWgsIEphY2sgRGV0ZWN0CisJCSAgQ29udHJvbCBSZWdpc3Rlci4gSWYgYWJzZW50IG9yIGhhcyB2YWx1ZSAwLCB0aGUKKwkJICByZWdpc3RlciBpcyB1bnRvdWNoZWQuCisKK0V4YW1wbGU6CisKKwlhbGM1NjIxOiBhbGM1NjIxQDFhIHsKKwkJY29tcGF0aWJsZSA9ICJhbGM1NjIxIjsKKwkJcmVnID0gPDB4MWE+OworCQlhZGQtY3RybCA9IDwweDM3MDA+OworCQlqYWNrLWRldC1jdHJsID0gPDB4NDgxMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9hbGM1NjMyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9hbGM1NjMyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmQ4ODZkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2FsYzU2MzIudHh0CkBAIC0wLDAgKzEsNDMgQEAKK0FMQzU2MzIgYXVkaW8gQ09ERUMKKworVGhpcyBkZXZpY2Ugc3VwcG9ydHMgSTJDIG9ubHkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogInJlYWx0ZWssYWxjNTYzMiIKKworICAtIHJlZyA6IHRoZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlLgorCisgIC0gZ3Bpby1jb250cm9sbGVyIDogSW5kaWNhdGVzIHRoaXMgZGV2aWNlIGlzIGEgR1BJTyBjb250cm9sbGVyLgorCisgIC0gI2dwaW8tY2VsbHMgOiBTaG91bGQgYmUgdHdvLiBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgcGluIG51bWJlciBhbmQgdGhlCisgICAgc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IG9wdGlvbmFsIHBhcmFtZXRlcnMgKGN1cnJlbnRseSB1bnVzZWQpLgorCitQaW5zIG9uIHRoZSBkZXZpY2UgKGZvciBsaW5raW5nIGludG8gYXVkaW8gcm91dGVzKToKKworICAqIFNQS19PVVRQCisgICogU1BLX09VVE4KKyAgKiBIUF9PVVRfTAorICAqIEhQX09VVF9SCisgICogQVVYX09VVF9QCisgICogQVVYX09VVF9OCisgICogTElORV9JTl9MCisgICogTElORV9JTl9SCisgICogUEhPTkVfUAorICAqIFBIT05FX04KKyAgKiBNSUMxX1AKKyAgKiBNSUMxX04KKyAgKiBNSUMyX1AKKyAgKiBNSUMyX04KKyAgKiBNSUNCSUFTMQorICAqIERNSUNEQVQKKworRXhhbXBsZToKKworYWxjNTYzMjogYWxjNTYzMkAxZSB7CisJY29tcGF0aWJsZSA9ICJyZWFsdGVrLGFsYzU2MzIiOworCXJlZyA9IDwweDFhPjsKKworCWdwaW8tY29udHJvbGxlcjsKKwkjZ3Bpby1jZWxscyA9IDwyPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYXJtYWRhLTM3MGRiLWF1ZGlvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9hcm1hZGEtMzcwZGItYXVkaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmOTg0ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYXJtYWRhLTM3MGRiLWF1ZGlvLnR4dApAQCAtMCwwICsxLDI3IEBACitEZXZpY2UgVHJlZSBiaW5kaW5ncyBmb3IgdGhlIEFybWFkYSAzNzAgREIgYXVkaW8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGVzZSBEZXZpY2UgVHJlZSBiaW5kaW5ncyBhcmUgdXNlZCB0byBkZXNjcmliZSB0aGUgYXVkaW8gY29tcGxleAorZm91bmQgb24gdGhlIEFybWFkYSAzNzAgREIgcGxhdGZvcm0uCisKK01hbmRhdG9yeSBwcm9wZXJ0aWVzOgorCisgKiBjb21wYXRpYmxlOiBtdXN0IGJlICJtYXJ2ZWxsLGEzNzBkYi1hdWRpbyIKKworICogbWFydmVsbCxhdWRpby1jb250cm9sbGVyOiBhIHBoYW5kbGUgdGhhdCBwb2ludHMgdG8gdGhlIGF1ZGlvCisgICBjb250cm9sbGVyIG9mIHRoZSBBcm1hZGEgMzcwIFNvQy4KKworICogbWFydmVsbCxhdWRpby1jb2RlYzogYSBzZXQgb2YgdGhyZWUgcGhhbmRsZXMgdGhhdCBwb2ludHMgdG86CisKKyAgICAxLyB0aGUgYW5hbG9nIGF1ZGlvIGNvZGVjIGNvbm5lY3RlZCB0byB0aGUgQXJtYWRhIDM3MCBTb0MKKyAgICAyLyB0aGUgUy9QRElGIHRyYW5zY2VpdmVyCisgICAgMy8gdGhlIFMvUERJRiByZWNlaXZlcgorCitFeGFtcGxlOgorCisJc291bmQgeworCSAgICAgIGNvbXBhdGlibGUgPSAibWFydmVsbCxhMzcwZGItYXVkaW8iOworCSAgICAgIG1hcnZlbGwsYXVkaW8tY29udHJvbGxlciA9IDwmYXVkaW9fY29udHJvbGxlcj47CisJICAgICAgbWFydmVsbCxhdWRpby1jb2RlYyA9IDwmYXVkaW9fY29kZWMgJnNwZGlmX291dCAmc3BkaWZfaW4+OworCSAgICAgIHN0YXR1cyA9ICJva2F5IjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2FybmRhbGUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2FybmRhbGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNzY5NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYXJuZGFsZS50eHQKQEAgLTAsMCArMSwyNCBAQAorQXVkaW8gQmluZGluZyBmb3IgQXJuZGFsZSBib2FyZHMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IENhbiBiZSB0aGUgZm9sbG93aW5nLAorCQkJInNhbXN1bmcsYXJuZGFsZS1ydDU2MzEiCisKKy0gc2Ftc3VuZyxhdWRpby1jcHU6IFRoZSBwaGFuZGxlIG9mIHRoZSBTYW1zdW5nIEkyUyBjb250cm9sbGVyCistIHNhbXN1bmcsYXVkaW8tY29kZWM6IFRoZSBwaGFuZGxlIG9mIHRoZSBhdWRpbyBjb2RlYworCitPcHRpb25hbDoKKy0gc2Ftc3VuZyxtb2RlbDogVGhlIG5hbWUgb2YgdGhlIHNvdW5kLWNhcmQKKworQXJuZGFsZSBCb2FyZHMgaGFzIG1hbnkgYXVkaW8gZGF1Z2h0ZXIgY2FyZHMsIG9uZSBvZiB0aGVtIGlzCitydDU2MzEvYWxjNTYzMS4gQmVsb3cgZXhhbXBsZSBzaG93cyBhdWRpbyBiaW5kaW5ncyBmb3IgcnQ1NjMxLworYWxjNTYzMSBiYXNlZCBjb2RlYy4KKworRXhhbXBsZToKKworc291bmQgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsYXJuZGFsZS1ydDU2MzEiOworCisJCXNhbXN1bmcsYXVkaW8tY3B1ID0gPCZpMnMwPgorCQlzYW1zdW5nLGF1ZGlvLWNvZGVjID0gPCZydDU2MzE+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9hdG1lbC1hdDkxc2FtOWcyMGVrLXdtODczMS1hdWRpby50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYXRtZWwtYXQ5MXNhbTlnMjBlay13bTg3MzEtYXVkaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljNWE5OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYXRtZWwtYXQ5MXNhbTlnMjBlay13bTg3MzEtYXVkaW8udHh0CkBAIC0wLDAgKzEsMjYgQEAKKyogQXRtZWwgYXQ5MXNhbTlnMjBlayB3bTg3MzEgYXVkaW8gY29tcGxleAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGU6ICJhdG1lbCxhdDkxc2FtOWcyMGVrLXdtODczMS1hdWRpbyIKKyAgLSBhdG1lbCxtb2RlbDogVGhlIHVzZXItdmlzaWJsZSBuYW1lIG9mIHRoaXMgc291bmQgY29tcGxleC4KKyAgLSBhdG1lbCxhdWRpby1yb3V0aW5nOiBBIGxpc3Qgb2YgdGhlIGNvbm5lY3Rpb25zIGJldHdlZW4gYXVkaW8gY29tcG9uZW50cy4KKyAgLSBhdG1lbCxzc2MtY29udHJvbGxlcjogVGhlIHBoYW5kbGUgb2YgdGhlIFNTQyBjb250cm9sbGVyCisgIC0gYXRtZWwsYXVkaW8tY29kZWM6IFRoZSBwaGFuZGxlIG9mIHRoZSBXTTg3MzEgYXVkaW8gY29kZWMKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgIC0gcGluY3RybC1uYW1lcywgcGluY3RybC0wOiBQbGVhc2UgcmVmZXIgdG8gcGluY3RybC1iaW5kaW5ncy50eHQKKworRXhhbXBsZToKK3NvdW5kIHsKKwljb21wYXRpYmxlID0gImF0bWVsLGF0OTFzYW05ZzIwZWstd204NzMxLWF1ZGlvIjsKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCXBpbmN0cmwtMCA9IDwmcGluY3RybF9wY2swX2FzX21jaz47CisKKwlhdG1lbCxtb2RlbCA9ICJ3bTg3MzEgQCBBVDkxU0FNRzIwRUsiOworCisJYXRtZWwsYXVkaW8tcm91dGluZyA9CisJCSJFeHQgU3BrIiwgIkxIUE9VVCIsCisJCSJJbnQgTUlDIiwgIk1JQ0lOIjsKKworCWF0bWVsLHNzYy1jb250cm9sbGVyID0gPCZzc2MwPjsKKwlhdG1lbCxhdWRpby1jb2RlYyA9IDwmd204NzMxPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYXRtZWwtY2xhc3NkLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9hdG1lbC1jbGFzc2QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwMTg0NTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYXRtZWwtY2xhc3NkLnR4dApAQCAtMCwwICsxLDUyIEBACisqIEF0bWVsIENsYXNzRCBkcml2ZXIgdW5kZXIgQUxTQSBTb0MgYXJjaGl0ZWN0dXJlCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUKKwlTaG91bGQgYmUgImF0bWVsLHNhbWE1ZDItY2xhc3NkIi4KKy0gcmVnCisJU2hvdWxkIGNvbnRhaW4gQ2xhc3NEIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoLgorLSBpbnRlcnJ1cHRzCisJU2hvdWxkIGNvbnRhaW4gdGhlIElSUSBsaW5lIGZvciB0aGUgQ2xhc3NELgorLSBkbWFzCisJT25lIERNQSBzcGVjaWZpZXJzIGFzIGRlc2NyaWJlZCBpbiBhdG1lbC1kbWEudHh0IGFuZCBkbWEudHh0IGZpbGVzLgorLSBkbWEtbmFtZXMKKwlNdXN0IGJlICJ0eCIuCistIGNsb2NrLW5hbWVzCisJVHVwbGUgbGlzdGluZyBpbnB1dCBjbG9jayBuYW1lcy4KKwlSZXF1aXJlZCBlbGVtZW50czogInBjbGsiLCAiZ2NsayIgYW5kICJhY2xrIi4KKy0gY2xvY2tzCisJUGxlYXNlIHJlZmVyIHRvIGNsb2NrLWJpbmRpbmdzLnR4dC4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gcGluY3RybC1uYW1lcywgcGluY3RybC0wCisJUGxlYXNlIHJlZmVyIHRvIHBpbmN0cmwtYmluZGluZ3MudHh0LgorLSBhdG1lbCxtb2RlbAorCVRoZSB1c2VyLXZpc2libGUgbmFtZSBvZiB0aGlzIHNvdW5kIGNvbXBsZXguCisJVGhlIGRlZmF1bHQgdmFsdWUgaXMgIkNMQVNTRCIuCistIGF0bWVsLHB3bS10eXBlCisJUFdNIG1vZHVsYXRpb24gdHlwZSwgInNpbmdsZSIgb3IgImRpZmYiLgorCVRoZSBkZWZhdWx0IHZhbHVlIGlzICJzaW5nbGUiLgorLSBhdG1lbCxub24tb3ZlcmxhcC10aW1lCisJU2V0IG5vbi1vdmVybGFwcGluZyB0aW1lLCB0aGUgdW5pdCBpcyBuYW5vc2Vjb25kKG5zKS4KKwlUaGVyZSBhcmUgZm91ciB2YWx1ZXMsCisJPDU+LCA8MTA+LCA8MTU+LCA8MjA+LCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyA8MTA+LgorCU5vbi1vdmVybGFwcGluZyB3aWxsIGJlIGRpc2FibGVkIGlmIG5vdCBzcGVjaWZpZWQuCisKK0V4YW1wbGU6CitjbGFzc2Q6IGNsYXNzZEBmYzA0ODAwMCB7CisJCWNvbXBhdGlibGUgPSAiYXRtZWwsc2FtYTVkMi1jbGFzc2QiOworCQlyZWcgPSA8MHhmYzA0ODAwMCAweDEwMD47CisJCWludGVycnVwdHMgPSA8NTkgSVJRX1RZUEVfTEVWRUxfSElHSCA3PjsKKwkJZG1hcyA9IDwmZG1hMAorCQkJKEFUOTFfWERNQUNfRFRfTUVNX0lGKDApIHwgQVQ5MV9YRE1BQ19EVF9QRVJfSUYoMSkKKwkJCXwgQVQ5MV9YRE1BQ19EVF9QRVJJRCg0NykpPjsKKwkJZG1hLW5hbWVzID0gInR4IjsKKwkJY2xvY2tzID0gPCZjbGFzc2RfY2xrPiwgPCZjbGFzc2RfZ2Nsaz4sIDwmYXVkaW9fcGxsX3BtYz47CisJCWNsb2NrLW5hbWVzID0gInBjbGsiLCAiZ2NsayIsICJhY2xrIjsKKworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfY2xhc3NkX2RlZmF1bHQ+OworCQlhdG1lbCxtb2RlbCA9ICJjbGFzc2QgQCBTQU1BNUQyLVhwbGFpbmVkIjsKKwkJYXRtZWwscHdtLXR5cGUgPSAiZGlmZiI7CisJCWF0bWVsLG5vbi1vdmVybGFwLXRpbWUgPSA8MTA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9hdG1lbC1zYW05eDUtd204NzMxLWF1ZGlvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9hdG1lbC1zYW05eDUtd204NzMxLWF1ZGlvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzIwODU3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2F0bWVsLXNhbTl4NS13bTg3MzEtYXVkaW8udHh0CkBAIC0wLDAgKzEsMzUgQEAKKyogQXRtZWwgYXQ5MXNhbTl4NWVrIHdtODczMSBhdWRpbyBjb21wbGV4CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogImF0bWVsLHNhbTl4NS13bTg3MzEtYXVkaW8iCisgIC0gYXRtZWwsbW9kZWw6IFRoZSB1c2VyLXZpc2libGUgbmFtZSBvZiB0aGlzIHNvdW5kIGNvbXBsZXguCisgIC0gYXRtZWwsc3NjLWNvbnRyb2xsZXI6IFRoZSBwaGFuZGxlIG9mIHRoZSBTU0MgY29udHJvbGxlcgorICAtIGF0bWVsLGF1ZGlvLWNvZGVjOiBUaGUgcGhhbmRsZSBvZiB0aGUgV004NzMxIGF1ZGlvIGNvZGVjCisgIC0gYXRtZWwsYXVkaW8tcm91dGluZzogQSBsaXN0IG9mIHRoZSBjb25uZWN0aW9ucyBiZXR3ZWVuIGF1ZGlvIGNvbXBvbmVudHMuCisgICAgRWFjaCBlbnRyeSBpcyBhIHBhaXIgb2Ygc3RyaW5ncywgdGhlIGZpcnN0IGJlaW5nIHRoZSBjb25uZWN0aW9uJ3Mgc2luaywKKyAgICB0aGUgc2Vjb25kIGJlaW5nIHRoZSBjb25uZWN0aW9uJ3Mgc291cmNlLgorCitBdmFpbGFibGUgYXVkaW8gZW5kcG9pbnRzIGZvciB0aGUgYXVkaW8tcm91dGluZyB0YWJsZToKKworQm9hcmQgY29ubmVjdG9yczoKKyAqIEhlYWRwaG9uZSBKYWNrCisgKiBMaW5lIEluIEphY2sKKword204NzMxIHBpbnM6CitjZiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvd204NzMxLnR4dAorCitFeGFtcGxlOgorc291bmQgeworCWNvbXBhdGlibGUgPSAiYXRtZWwsc2FtOXg1LXdtODczMS1hdWRpbyI7CisKKwlhdG1lbCxtb2RlbCA9ICJ3bTg3MzEgQCBBVDkxU0FNOVg1RUsiOworCisJYXRtZWwsYXVkaW8tcm91dGluZyA9CisJCSJIZWFkcGhvbmUgSmFjayIsICJSSFBPVVQiLAorCQkiSGVhZHBob25lIEphY2siLCAiTEhQT1VUIiwKKwkJIkxMSU5FSU4iLCAiTGluZSBJbiBKYWNrIiwKKwkJIlJMSU5FSU4iLCAiTGluZSBJbiBKYWNrIjsKKworCWF0bWVsLHNzYy1jb250cm9sbGVyID0gPCZzc2MwPjsKKwlhdG1lbCxhdWRpby1jb2RlYyA9IDwmd204NzMxPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYXRtZWwtd204OTA0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9hdG1lbC13bTg5MDQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYmU1MGMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYXRtZWwtd204OTA0LnR4dApAQCAtMCwwICsxLDU1IEBACitBdG1lbCBBU29DIGRyaXZlciB3aXRoIHdtODkwNCBhdWRpbyBjb2RlYyBjb21wbGV4CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogImF0bWVsLGFzb2Mtd204OTA0IgorICAtIGF0bWVsLG1vZGVsOiBUaGUgdXNlci12aXNpYmxlIG5hbWUgb2YgdGhpcyBzb3VuZCBjb21wbGV4LgorICAtIGF0bWVsLGF1ZGlvLXJvdXRpbmc6IEEgbGlzdCBvZiB0aGUgY29ubmVjdGlvbnMgYmV0d2VlbiBhdWRpbyBjb21wb25lbnRzLgorICAgIEVhY2ggZW50cnkgaXMgYSBwYWlyIG9mIHN0cmluZ3MsIHRoZSBmaXJzdCBiZWluZyB0aGUgY29ubmVjdGlvbidzIHNpbmssCisgICAgdGhlIHNlY29uZCBiZWluZyB0aGUgY29ubmVjdGlvbidzIHNvdXJjZS4gVmFsaWQgbmFtZXMgZm9yIHNvdXJjZXMgYW5kCisgICAgc2lua3MgYXJlIHRoZSBXTTg5MDQncyBwaW5zLCBhbmQgdGhlIGphY2tzIG9uIHRoZSBib2FyZDoKKworICAgIFdNODkwNCBwaW5zOgorCisgICAgKiBJTjFMCisgICAgKiBJTjFSCisgICAgKiBJTjJMCisgICAgKiBJTjJSCisgICAgKiBJTjNMCisgICAgKiBJTjNSCisgICAgKiBIUE9VVEwKKyAgICAqIEhQT1VUUgorICAgICogTElORU9VVEwKKyAgICAqIExJTkVPVVRSCisgICAgKiBNSUNCSUFTCisKKyAgICBCb2FyZCBjb25uZWN0b3JzOgorCisgICAgKiBIZWFkcGhvbmUgSmFjaworICAgICogTGluZSBJbiBKYWNrCisgICAgKiBNaWMKKworICAtIGF0bWVsLHNzYy1jb250cm9sbGVyOiBUaGUgcGhhbmRsZSBvZiB0aGUgU1NDIGNvbnRyb2xsZXIKKyAgLSBhdG1lbCxhdWRpby1jb2RlYzogVGhlIHBoYW5kbGUgb2YgdGhlIFdNODkwNCBhdWRpbyBjb2RlYworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIHBpbmN0cmwtbmFtZXMsIHBpbmN0cmwtMDogUGxlYXNlIHJlZmVyIHRvIHBpbmN0cmwtYmluZGluZ3MudHh0CisKK0V4YW1wbGU6Citzb3VuZCB7CisJY29tcGF0aWJsZSA9ICJhdG1lbCxhc29jLXdtODkwNCI7CisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfcGNrMF9hc19tY2s+OworCisJYXRtZWwsbW9kZWwgPSAid204OTA0IEAgQVQ5MVNBTTlOMTJFSyI7CisKKwlhdG1lbCxhdWRpby1yb3V0aW5nID0KKwkJIkhlYWRwaG9uZSBKYWNrIiwgIkhQT1VUTCIsCisJCSJIZWFkcGhvbmUgSmFjayIsICJIUE9VVFIiLAorCQkiSU4yTCIsICJMaW5lIEluIEphY2siLAorCQkiSU4yUiIsICJMaW5lIEluIEphY2siLAorCQkiTWljIiwgIk1JQ0JJQVMiLAorCQkiSU4xTCIsICJNaWMiOworCisJYXRtZWwsc3NjLWNvbnRyb2xsZXIgPSA8JnNzYzA+OworCWF0bWVsLGF1ZGlvLWNvZGVjID0gPCZ3bTg5MDQ+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9hdG1lbF9hYzk3Yy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYXRtZWxfYWM5N2MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxNTFiZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYXRtZWxfYWM5N2MudHh0CkBAIC0wLDAgKzEsMjAgQEAKKyogQXRtZWwgQUM5NyBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogImF0bWVsLGF0OTFzYW05MjYzLWFjOTdjIgorICAtIHJlZzogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKyAgLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBBQzk3IGludGVycnVwdAorICAtIGFjOTctZ3Bpb3M6IFBsZWFzZSByZWZlciB0byBzb2MtYWM5N2xpbmsudHh0LCBvbmx5IGFjOTctcmVzZXQgaXMgdXNlZAorT3B0aW9uYWwgcHJvcGVydGllczoKKyAgLSBwaW5jdHJsLW5hbWVzLCBwaW5jdHJsLTA6IFBsZWFzZSByZWZlciB0byBwaW5jdHJsLWJpbmRpbmdzLnR4dAorCitFeGFtcGxlOgorc291bmRAZmZmYTAwMDAgeworICAgICAgIGNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXNhbTkyNjMtYWM5N2MiOworICAgICAgIHBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisgICAgICAgcGluY3RybC0wID0gPCZwaW5jdHJsX2FjOTc+OworICAgICAgIHJlZyA9IDwweGZmZmEwMDAwIDB4NDAwMD47CisgICAgICAgaW50ZXJydXB0cyA9IDwxOCBJUlFfVFlQRV9MRVZFTF9ISUdIIDU+OworCisgICAgICAgYWM5Ny1ncGlvcyA9IDwmcGlvQiAwIDAgJnBpb0IgMiAwICZwaW9DIDI5IEdQSU9fQUNUSVZFX0xPVz47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2JyY20sYmNtMjgzNS1pMnMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2JyY20sYmNtMjgzNS1pMnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1NzgzZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYnJjbSxiY20yODM1LWkycy50eHQKQEAgLTAsMCArMSwyNSBAQAorKiBCcm9hZGNvbSBCQ00yODM1IFNvQyBJMlMvUENNIG1vZHVsZQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiYnJjbSxiY20yODM1LWkycyIKKy0gcmVnOiBBIGxpc3Qgb2YgYmFzZSBhZGRyZXNzIGFuZCBzaXplIGVudHJpZXM6CisJKiBUaGUgZmlyc3QgZW50cnkgc2hvdWxkIGNvdmVyIHRoZSBQQ00gcmVnaXN0ZXJzCisJKiBUaGUgc2Vjb25kIGVudHJ5IHNob3VsZCBjb3ZlciB0aGUgUENNIGNsb2NrIHJlZ2lzdGVycworLSBkbWFzOiBMaXN0IG9mIERNQSBjb250cm9sbGVyIHBoYW5kbGUgYW5kIERNQSByZXF1ZXN0IGxpbmUgb3JkZXJlZCBwYWlycy4KKy0gZG1hLW5hbWVzOiBJZGVudGlmaWVyIHN0cmluZyBmb3IgZWFjaCBETUEgcmVxdWVzdCBsaW5lIGluIHRoZSBkbWFzIHByb3BlcnR5LgorICBUaGVzZSBzdHJpbmdzIGNvcnJlc3BvbmQgMToxIHdpdGggdGhlIG9yZGVyZWQgcGFpcnMgaW4gZG1hcy4KKworICBPbmUgb2YgdGhlIERNQSBjaGFubmVscyB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciB0cmFuc21pc3Npb24gKHNob3VsZCBiZQorICBuYW1lZCAidHgiKSBhbmQgb25lIGZvciByZWNlcHRpb24gKHNob3VsZCBiZSBuYW1lZCAicngiKS4KKworRXhhbXBsZToKKworYmNtMjgzNV9pMnM6IGkyc0A3ZTIwMzAwMCB7CisJY29tcGF0aWJsZSA9ICJicmNtLGJjbTI4MzUtaTJzIjsKKwlyZWcgPSA8MHg3ZTIwMzAwMCAweDIwPiwKKwkgICAgICA8MHg3ZTEwMTA5OCAweDAyPjsKKworCWRtYXMgPSA8JmRtYSAyPiwKKwkgICAgICAgPCZkbWEgMz47CisJZG1hLW5hbWVzID0gInR4IiwgInJ4IjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYnQtc2NvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9idC1zY28udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5YjhlNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYnQtc2NvLnR4dApAQCAtMCwwICsxLDEzIEBACitCbHVldG9vdGgtU0NPIGF1ZGlvIENPREVDCisKK1RoaXMgZGV2aWNlIHN1cHBvcnQgZ2VuZXJpYyBCbHVldG9vdGggU0NPIGxpbmsuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogImRlbHRhLGRmYm1jczMyMCIKKworRXhhbXBsZToKKworY29kZWM6IGJ0X3NjbyB7CisJY29tcGF0aWJsZSA9ICJkZWx0YSxkZmJtY3MzMjAiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9jZG5zLHh0ZnBnYS1pMnMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2NkbnMseHRmcGdhLWkycy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmVmZDEyNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9jZG5zLHh0ZnBnYS1pMnMudHh0CkBAIC0wLDAgKzEsMTggQEAKK0JpbmRpbmdzIGZvciBJMlMgY29udHJvbGxlciBidWlsdCBpbnRvIHh0ZnBnYSBYdGVuc2EgYml0c3RyZWFtcy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogc2hhbGwgYmUgImNkbnMseHRmcGdhLWkycyIuCistIHJlZzogbWVtb3J5IHJlZ2lvbiAoYWRkcmVzcyBhbmQgbGVuZ3RoKSB3aXRoIGRldmljZSByZWdpc3RlcnMuCistIGludGVycnVwdHM6IGludGVycnVwdCBmb3IgdGhlIGRldmljZS4KKy0gY2xvY2tzOiBwaGFuZGxlIHRvIHRoZSBjbGsgdXNlZCBhcyBtYXN0ZXIgY2xvY2suIEkyUyBidXMgY2xvY2sKKyAgaXMgZGVyaXZlZCBmcm9tIGl0LgorCitFeGFtcGxlczoKKworCWkyczA6IHh0ZnBnYS1pMnNAMGQwODAwMDAgeworCQkjc291bmQtZGFpLWNlbGxzID0gPDA+OworCQljb21wYXRpYmxlID0gImNkbnMseHRmcGdhLWkycyI7CisJCXJlZyA9IDwweDBkMDgwMDAwIDB4NDA+OworCQlpbnRlcnJ1cHRzID0gPDIgMT47CisJCWNsb2NrcyA9IDwmY2RjZTcwNiA0PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2NzMzVsMzIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2NzMzVsMzIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0MTdkM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvY3MzNWwzMi50eHQKQEAgLTAsMCArMSw2MiBAQAorQ1MzNUwzMiBhdWRpbyBDT0RFQworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZSA6ICJjaXJydXMsY3MzNWwzMiIKKworICAtIHJlZyA6IHRoZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlIGZvciBJMkMuIEFkZHJlc3MgaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGV2ZWwKKyAgb2YgdGhlIEFEMCBwaW4uIExldmVsIDAgaXMgMHg0MCB3aGlsZSBMZXZlbCAxIGlzIDB4NDEuCisKKyAgLSBWQS1zdXBwbHksIFZQLXN1cHBseSA6IHBvd2VyIHN1cHBsaWVzIGZvciB0aGUgZGV2aWNlLAorICBhcyBjb3ZlcmVkIGluIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvcmVndWxhdG9yLnR4dC4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworICAtIHJlc2V0LWdwaW9zIDogYSBHUElPIHNwZWMgZm9yIHRoZSByZXNldCBwaW4uIElmIHNwZWNpZmllZCwgaXQgd2lsbCBiZQorICBkZWFzc2VydGVkIGJlZm9yZSBjb21tdW5pY2F0aW9uIHRvIHRoZSBjb2RlYyBzdGFydHMuCisKKyAgLSBjaXJydXMsYm9vc3QtbWFuYWdlciA6IEJvb3N0IHZvbHRhZ2UgY29udHJvbC4KKyAgMCA9IEF1dG9tYXRpY2FsbHkgbWFuYWdlZC4gIEJvb3N0LWNvbnZlcnRlciBvdXRwdXQgdm9sdGFnZSBpcyB0aGUgaGlnaGVyCisgIG9mIHRoZSB0d286IENsYXNzIEcgb3IgYWRhcHRpdmUgTEVEIHZvbHRhZ2UuCisgIDEgPSBBdXRvbWF0aWNhbGx5IG1hbmFnZWQgaXJyZXNwZWN0aXZlIG9mIGF1ZGlvLCBhZGFwdGluZyBmb3IgbG93LXBvd2VyCisgIGRpc3NpcGF0aW9uIHdoZW4gTEVEcyBhcmUgT04sIGFuZCBvcGVyYXRpbmcgaW4gRml4ZWQtQm9vc3QgQnlwYXNzIE1vZGUKKyAgaWYgTEVEcyBhcmUgT0ZGIChWQlNUID0gVlApLgorICAyID0gKERlZmF1bHQpIEJvb3N0IHZvbHRhZ2UgZml4ZWQgaW4gQnlwYXNzIE1vZGUgKFZCU1QgPSBWUCkuCisgIDMgPSBCb29zdCB2b2x0YWdlIGZpeGVkIGF0IDUgVi4KKworICAtIGNpcnJ1cyxzZG91dC1kYXRhY2ZnIDogRGF0YSBjb25maWd1cmF0aW9uIGZvciBkdWFsIENTMzVMMzIgYXBwbGljYXRpb25zIG9ubHkuCisgIERldGVybWluZXMgdGhlIGRhdGEgcGFja2VkIGluIGEgdHdvLUNTMzVMMzIgY29uZmlndXJhdGlvbi4KKyAgMCA9IExlZnQvcmlnaHQgY2hhbm5lbHMgVk1PTlsxMTowXSwgSU1PTlsxMTowXSwgVlBNT05bNzowXS4KKyAgMSA9IExlZnQvcmlnaHQgY2hhbm5lbHMgVk1PTlsxMTowXSwgSU1PTlsxMTowXSwgU1RBVFVTLgorICAyID0gKERlZmF1bHQpIGxlZnQvcmlnaHQgY2hhbm5lbHMgVk1PTlsxNTowXSwgSU1PTiBbMTU6MF0uCisgIDMgPSBMZWZ0L3JpZ2h0IGNoYW5uZWxzIFZQTU9OWzc6MF0sIFNUQVRVUy4KKworICAtIGNpcnJ1cyxzZG91dC1zaGFyZSA6IFNET1VUIHNoYXJpbmcuIERldGVybWluZXMgd2hldGhlciBvbmUgb3IgdHdvIENTMzVMMzIKKyAgZGV2aWNlcyBhcmUgb24gYm9hcmQgc2hhcmluZyBTRE9VVC4KKyAgMCA9IChEZWZhdWx0KSBPbmUgSUMuCisgIDEgPSBUd28gSUMncy4KKworICAtIGNpcnJ1cyxiYXR0ZXJ5LXJlY292ZXJ5IDogTG93IGJhdHRlcnkgbm9taW5hbCByZWNvdmVyeSB0aHJlc2hvbGQsIHJpc2luZyBWUC4KKyAgMCA9IDMuMVYKKyAgMSA9IDMuMlYKKyAgMiA9IDMuM1YgKERlZmF1bHQpCisgIDMgPSAzLjRWCisKKyAgLSBjaXJydXMsYmF0dGVyeS10aHJlc2hvbGQgOiBMb3cgYmF0dGVyeSBub21pbmFsIHRocmVzaG9sZCwgZmFsbGluZyBWUC4KKyAgMCA9IDMuMVYKKyAgMSA9IDMuMlYKKyAgMiA9IDMuM1YKKyAgMyA9IDMuNFYgKERlZmF1bHQpCisgIDQgPSAzLjVWCisgIDUgPSAzLjZWCisKK0V4YW1wbGU6CisKK2NvZGVjOiBjb2RlY0A0MCB7CisJY29tcGF0aWJsZSA9ICJjaXJydXMsY3MzNWwzMiI7CisJcmVnID0gPDB4NDA+OworCXJlc2V0LWdwaW9zID0gPCZncGlvIDEwIDA+OworCWNpcnJ1cyxib29zdC1tYW5hZ2VyID0gPDB4MDM+OworCWNpcnJ1cyxzZG91dC1kYXRhY2ZnID0gPDB4MDI+OworCVZBLXN1cHBseSA9IDwmcmVnX2F1ZGlvPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvY3M0MjY1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9jczQyNjUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4MGZmZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvY3M0MjY1LnR4dApAQCAtMCwwICsxLDI5IEBACitDUzQyNjUgYXVkaW8gQ09ERUMKKworVGhpcyBkZXZpY2Ugc3VwcG9ydHMgSTJDIG9ubHkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogImNpcnJ1cyxjczQyNjUiCisKKyAgLSByZWcgOiB0aGUgSTJDIGFkZHJlc3Mgb2YgdGhlIGRldmljZSBmb3IgSTJDLiBUaGUgSTJDIGFkZHJlc3MgZGVwZW5kcyBvbgorICAgICAgICAgIHRoZSBzdGF0ZSBvZiB0aGUgQUQwIHBpbi4gIElmIEFEMCBpcyBoaWdoLCB0aGUgaTJjIGFkZHJlc3MgaXMgMHg0Zi4KKyAgICAgICAgICBJZiBpdCBpcyBsb3csIHRoZSBpMmMgYWRkcmVzcyBpcyAweDRlLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCisgIC0gcmVzZXQtZ3Bpb3MgOiBhIEdQSU8gc3BlYyBmb3IgdGhlIHJlc2V0IHBpbi4gSWYgc3BlY2lmaWVkLCBpdCB3aWxsIGJlCisJCSBkZWFzc2VydGVkIGJlZm9yZSBjb21tdW5pY2F0aW9uIHRvIHRoZSBjb2RlYyBzdGFydHMuCisKK0V4YW1wbGVzOgorCitjb2RlY19hZDBfaGlnaDogY3M0MjY1QDRmIHsgLyogQUQwIFBpbiBpcyBoaWdoICovCisJY29tcGF0aWJsZSA9ICJjaXJydXMsY3M0MjY1IjsKKwlyZWcgPSA8MHg0Zj47Cit9OworCisKK2NvZGVjX2FkMF9sb3c6IGNzNDI2NUA0ZSB7IC8qIEFEMCBQaW4gaXMgbG93ICovCisJY29tcGF0aWJsZSA9ICJjaXJydXMsY3M0MjY1IjsKKwlyZWcgPSA8MHg0ZT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2NzNDI3MC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvY3M0MjcwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjIyMmY5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2NzNDI3MC50eHQKQEAgLTAsMCArMSwyMSBAQAorQ1M0MjcwIGF1ZGlvIENPREVDCisKK1RoZSBkcml2ZXIgZm9yIHRoaXMgZGV2aWNlIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIEkyQy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGUgOiAiY2lycnVzLGNzNDI3MCIKKworICAtIHJlZyA6IHRoZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlIGZvciBJMkMKKworT3B0aW9uYWwgcHJvcGVydGllczoKKworICAtIHJlc2V0LWdwaW8gOiBhIEdQSU8gc3BlYyBmb3IgdGhlIHJlc2V0IHBpbi4gSWYgc3BlY2lmaWVkLCBpdCB3aWxsIGJlCisJCSBkZWFzc2VydGVkIGJlZm9yZSBjb21tdW5pY2F0aW9uIHRvIHRoZSBjb2RlYyBzdGFydHMuCisKK0V4YW1wbGU6CisKK2NvZGVjOiBjczQyNzBANDggeworCWNvbXBhdGlibGUgPSAiY2lycnVzLGNzNDI3MCI7CisJcmVnID0gPDB4NDg+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9jczQyNzEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2NzNDI3MS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJjZDFkNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9jczQyNzEudHh0CkBAIC0wLDAgKzEsNTAgQEAKK0NpcnJ1cyBMb2dpYyBDUzQyNzEgRFQgYmluZGluZ3MKKworVGhpcyBkcml2ZXIgc3VwcG9ydHMgYm90aCB0aGUgSTJDIGFuZCB0aGUgU1BJIGJ1cy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworIC0gY29tcGF0aWJsZTogImNpcnJ1cyxjczQyNzEiCisKK0ZvciByZXF1aXJlZCBwcm9wZXJ0aWVzIG9uIFNQSSwgcGxlYXNlIGNvbnN1bHQKK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLWJ1cy50eHQKKworUmVxdWlyZWQgcHJvcGVydGllcyBvbiBJMkM6CisKKyAtIHJlZzogdGhlIGkyYyBhZGRyZXNzCisKKworT3B0aW9uYWwgcHJvcGVydGllczoKKworIC0gcmVzZXQtZ3BpbzogCWEgR1BJTyBzcGVjIHRvIGRlZmluZSB3aGljaCBwaW4gaXMgY29ubmVjdGVkIHRvIHRoZSBjaGlwJ3MKKwkJIVJFU0VUIHBpbgorIC0gY2lycnVzLGFtdXRlYi1lcS1ibXV0ZWM6CVdoZW4gZ2l2ZW4sIHRoZSBDb2RlYydzIEFNVVRFQj1CTVVURUMgZmxhZworCQkJCWlzIGVuYWJsZWQuCisgLSBjaXJydXMsZW5hYmxlLXNvZnQtcmVzZXQ6CisJVGhlIENTNDI3MSByZXF1aXJlcyBpdHMgTFJDTEsgYW5kIE1DTEsgdG8gYmUgc3RhYmxlIGJlZm9yZSBpdHMgUkVTRVQKKwlsaW5lIGlzIGRlLWFzc2VydGVkLiBUaGF0IGFsc28gbWVhbnMgdGhhdCBjbG9ja3MgY2Fubm90IGJlIGNoYW5nZWQKKwl3aXRob3V0IHB1dHRpbmcgdGhlIGNoaXAgYmFjayBpbnRvIGhhcmR3YXJlIHJlc2V0LCB3aGljaCBhbHNvIHJlcXVpcmVzCisJYSBjb21wbGV0ZSByZS1pbml0aWFsaXphdGlvbiBvZiBhbGwgcmVnaXN0ZXJzLgorCisJT25lICh1bmRvY3VtZW50ZWQpIHdvcmthcm91bmQgaXMgdG8gYXNzZXJ0IGFuZCBkZS1hc3NlcnQgdGhlIFBETiBiaXQKKwlpbiB0aGUgTU9ERTIgcmVnaXN0ZXIuIFRoaXMgd29ya2Fyb3VuZCBjYW4gYmUgZW5hYmxlZCB3aXRoIHRoaXMgRFQKKwlwcm9wZXJ0eS4KKworCU5vdGUgdGhhdCB0aGlzIGlzIG5vdCBuZWVkZWQgaW4gY2FzZSB0aGUgY2xvY2tzIGFyZSBzdGFibGUKKwl0aHJvdWdob3V0IHRoZSBlbnRpcmUgcnVudGltZSBvZiB0aGUgY29kZWMuCisKK0V4YW1wbGVzOgorCisJY29kZWNfaTJjOiBjczQyNzFAMTAgeworCQljb21wYXRpYmxlID0gImNpcnJ1cyxjczQyNzEiOworCQlyZWcgPSA8MHgxMD47CisJCXJlc2V0LWdwaW8gPSA8JmdwaW8gMjMgMD47CisJfTsKKworCWNvZGVjX3NwaTogY3M0MjcxQDAgeworCQljb21wYXRpYmxlID0gImNpcnJ1cyxjczQyNzEiOworCQlyZWcgPSA8MHgwPjsKKwkJcmVzZXQtZ3BpbyA9IDwmZ3BpbyAyMyAwPjsKKwkJc3BpLW1heC1mcmVxdWVuY3kgPSA8NjAwMDAwMD47CisJfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2NzNDJsNTIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2NzNDJsNTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMDNjOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvY3M0Mmw1Mi50eHQKQEAgLTAsMCArMSw0NiBAQAorQ1M0Mkw1MiBhdWRpbyBDT0RFQworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZSA6ICJjaXJydXMsY3M0Mmw1MiIKKworICAtIHJlZyA6IHRoZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlIGZvciBJMkMKKworT3B0aW9uYWwgcHJvcGVydGllczoKKworICAtIGNpcnJ1cyxyZXNldC1ncGlvIDogR1BJTyBjb250cm9sbGVyJ3MgcGhhbmRsZSBhbmQgdGhlIG51bWJlcgorICBvZiB0aGUgR1BJTyB1c2VkIHRvIHJlc2V0IHRoZSBjb2RlYy4KKworICAtIGNpcnJ1cyxjaGdmcmVxLWRpdmlzb3IgOiBWYWx1ZXMgdXNlZCB0byBzZXQgdGhlIENoYXJnZSBQdW1wIEZyZXF1ZW5jeS4KKyAgQWxsb3dhYmxlIHZhbHVlcyBvZiAweDAwIHRocm91Z2ggMHgwRi4gVGhlc2UgYXJlIHJhdyB2YWx1ZXMgd3JpdHRlbiB0byB0aGUKKyAgcmVnaXN0ZXIsIG5vdCB0aGUgYWN0dWFsIGZyZXF1ZW5jeS4gVGhlIGZyZXF1ZW5jeSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmb2xsb3dpbmcuCisgIEZyZXF1ZW5jeSA9ICg2NHhGcykvKE4rMikKKyAgTiA9IGNoZ2ZyZXFfdmFsCisgIEZzID0gU2FtcGxlIFJhdGUgKHZhcmlhYmxlKQorCisgIC0gY2lycnVzLG1pY2EtZGlmZmVyZW50aWFsLWNmZyA6IGJvb2xlYW4sIElmIHByZXNlbnQsIHRoZW4gdGhlIE1JQ0EgaW5wdXQgaXMgY29uZmlndXJlZAorICBhcyBhIGRpZmZlcmVudGlhbCBpbnB1dC4gSWYgbm90IHByZXNlbnQgdGhlbiB0aGUgTUlDQSBpbnB1dCBpcyBjb25maWd1cmVkIGFzCisgIFNpbmdsZS1lbmRlZCBpbnB1dC4gU2luZ2xlLWVuZGVkIG1vZGUgYWxsb3dzIGZvciBNSUMxIG9yIE1JQzIgbXV4aW5nIGZvciBpbnB1dC4KKworICAtIGNpcnJ1cyxtaWNiLWRpZmZlcmVudGlhbC1jZmcgOiBib29sZWFuLCBJZiBwcmVzZW50LCB0aGVuIHRoZSBNSUNCIGlucHV0IGlzIGNvbmZpZ3VyZWQKKyAgYXMgYSBkaWZmZXJlbnRpYWwgaW5wdXQuIElmIG5vdCBwcmVzZW50IHRoZW4gdGhlIE1JQ0IgaW5wdXQgaXMgY29uZmlndXJlZCBhcworICBTaW5nbGUtZW5kZWQgaW5wdXQuIFNpbmdsZS1lbmRlZCBtb2RlIGFsbG93cyBmb3IgTUlDMSBvciBNSUMyIG11eGluZyBmb3IgaW5wdXQuCisKKyAgLSBjaXJydXMsbWljYmlhcy1sdmw6IFNldCB0aGUgb3V0cHV0IHZvbHRhZ2UgbGV2ZWwgb24gdGhlIE1JQ0JJQVMgUGluCisgIDAgPSAwLjUgeCBWQQorICAxID0gMC42IHggVkEKKyAgMiA9IDAuNyB4IFZBCisgIDMgPSAwLjggeCBWQQorICA0ID0gMC44MyB4IFZBCisgIDUgPSAwLjkxIHggVkEKKworRXhhbXBsZToKKworY29kZWM6IGNvZGVjQDRhIHsKKwljb21wYXRpYmxlID0gImNpcnJ1cyxjczQybDUyIjsKKwlyZWcgPSA8MHg0YT47CisJcmVzZXQtZ3BpbyA9IDwmZ3BpbyAxMCAwPjsKKwljaXJydXMsY2hnZnJlcS1kaXZpc29yID0gPDB4MDU+OworCWNpcnJ1cy5taWNhLWRpZmZlcmVudGlhbC1jZmc7CisJY2lycnVzLG1pY2JpYXMtbHZsID0gPDU+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9jczQybDU2LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9jczQybDU2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmViMGViCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2NzNDJsNTYudHh0CkBAIC0wLDAgKzEsNjMgQEAKK0NTNDJMNTIgYXVkaW8gQ09ERUMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGUgOiAiY2lycnVzLGNzNDJsNTYiCisKKyAgLSByZWcgOiB0aGUgSTJDIGFkZHJlc3Mgb2YgdGhlIGRldmljZSBmb3IgSTJDCisKKyAgLSBWQS1zdXBwbHksIFZDUC1zdXBwbHksIFZMRE8tc3VwcGx5IDogcG93ZXIgc3VwcGxpZXMgZm9yIHRoZSBkZXZpY2UsCisgIGFzIGNvdmVyZWQgaW4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9yZWd1bGF0b3IudHh0LgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCisgIC0gY2lycnVzLGdwaW8tbnJlc2V0IDogR1BJTyBjb250cm9sbGVyJ3MgcGhhbmRsZSBhbmQgdGhlIG51bWJlcgorICBvZiB0aGUgR1BJTyB1c2VkIHRvIHJlc2V0IHRoZSBjb2RlYy4KKworICAtIGNpcnJ1cyxjaGdmcmVxLWRpdmlzb3IgOiBWYWx1ZXMgdXNlZCB0byBzZXQgdGhlIENoYXJnZSBQdW1wIEZyZXF1ZW5jeS4KKyAgQWxsb3dhYmxlIHZhbHVlcyBvZiAweDAwIHRocm91Z2ggMHgwRi4gVGhlc2UgYXJlIHJhdyB2YWx1ZXMgd3JpdHRlbiB0byB0aGUKKyAgcmVnaXN0ZXIsIG5vdCB0aGUgYWN0dWFsIGZyZXF1ZW5jeS4gVGhlIGZyZXF1ZW5jeSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmb2xsb3dpbmcuCisgIEZyZXF1ZW5jeSA9IE1DTEsgLyA0ICogKE4rMikKKyAgTiA9IGNoZ2ZyZXFfdmFsCisgIE1DTEsgPSBXaGVyZSBNQ0xLIGlzIHRoZSBmcmVxdWVuY3kgb2YgdGhlIG1jbGsgc2lnbmFsIGFmdGVyIHRoZSBNQ0xLRElWMiBjaXJjdWl0LgorCisgIC0gY2lycnVzLGFpbjFhLXJlZi1jZmcsIGFpbjFiLXJlZi1jZmcgOiBib29sZWFuLCBJZiBwcmVzZW50LCBBSU4xQSBvciBBSU4xQiBhcmUgY29uZmlndXJlZAorICBhcyBhIHBzZXVkby1kaWZmZXJlbnRpYWwgaW5wdXQgcmVmZXJlbmNlZCB0byBBSU4xUkVGL0FJTjNBLgorCisgIC0gY2lycnVzLGFpbjJhLXJlZi1jZmcsIGFpbjJiLXJlZi1jZmcgOiBib29sZWFuLCBJZiBwcmVzZW50LCBBSU4yQSBvciBBSU4yQiBhcmUgY29uZmlndXJlZAorICBhcyBhIHBzZXVkby1kaWZmZXJlbnRpYWwgaW5wdXQgcmVmZXJlbmNlZCB0byBBSU4yUkVGL0FJTjNCLgorCisgIC0gY2lycnVzLG1pY2JpYXMtbHZsOiBTZXQgdGhlIG91dHB1dCB2b2x0YWdlIGxldmVsIG9uIHRoZSBNSUNCSUFTIFBpbi4KKyAgMCA9IDAuNSB4IFZBCisgIDEgPSAwLjYgeCBWQQorICAyID0gMC43IHggVkEKKyAgMyA9IDAuOCB4IFZBCisgIDQgPSAwLjgzIHggVkEKKyAgNSA9IDAuOTEgeCBWQQorCisgIC0gY2lycnVzLGFkYXB0aXZlLXB3ci1jZmcgOiBDb25maWd1cmVzIGhvdyB0aGUgcG93ZXIgdG8gdGhlIEhlYWRwaG9uZSBhbmQgTGluZW91dAorICBBbXBsaWZpZXJzIGFkYXB0IHRvIHRoZSBvdXRwdXQgc2lnbmFsIGxldmVscy4KKyAgMCA9IEFkYXB0IHRvIFZvbHVtZSBNb2RlLiBWb2x0YWdlIGxldmVsIGRldGVybWluZWQgYnkgdGhlIHN1bSBvZiB0aGUgcmVsZXZhbnQgdm9sdW1lIHNldHRpbmdzLgorICAxID0gRml4ZWQgLSBIZWFkcGhvbmUgYW5kIExpbmUgQW1wIHN1cHBseSA9ICsgb3IgLSBWQ1AvMi4KKyAgMiA9IEZpeGVkIC0gSGVhZHBob25lIGFuZCBMaW5lIEFtcCBzdXBwbHkgPSArIG9yIC0gVkNQLgorICAzID0gQWRhcHRlZCB0byBTaWduYWw7IFZvbHRhZ2UgbGV2ZWwgaXMgZHluYW1pY2FsbHkgZGV0ZXJtaW5lZCBieSB0aGUgb3V0cHV0IHNpZ25hbC4KKworICAtIGNpcnJ1cyxocGYtbGVmdC1mcmVxLCBocGYtcmlnaHQtZnJlcSA6IFNldHMgdGhlIGNvcm5lciBmcmVxdWVuY3kgKC0zZEIgcG9pbnQpIGZvciB0aGUgaW50ZXJuYWwgSGlnaC1QYXNzCisgIEZpbHRlci4KKyAgMCA9IDEuOEh6CisgIDEgPSAxMTlIegorICAyID0gMjM2SHoKKyAgMyA9IDQ2NEh6CisKKworRXhhbXBsZToKKworY29kZWM6IGNvZGVjQDRiIHsKKwljb21wYXRpYmxlID0gImNpcnJ1cyxjczQybDU2IjsKKwlyZWcgPSA8MHg0Yj47CisJZ3Bpby1yZXNldCA9IDwmZ3BpbyAxMCAwPjsKKwljaXJydXMsY2hnZnJlcS1kaXZpc29yID0gPDB4MDU+OworCWNpcnJ1cy5haW4xX3JlZl9jZmc7CisJY2lycnVzLG1pY2JpYXMtbHZsID0gPDU+OworCVZBLXN1cHBseSA9IDwmcmVnX2F1ZGlvPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvY3M0Mmw3My50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvY3M0Mmw3My50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBhZTkxMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9jczQybDczLnR4dApAQCAtMCwwICsxLDIyIEBACitDUzQyTDczIGF1ZGlvIENPREVDCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogImNpcnJ1cyxjczQybDczIgorCisgIC0gcmVnIDogdGhlIEkyQyBhZGRyZXNzIG9mIHRoZSBkZXZpY2UgZm9yIEkyQworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCisgIC0gcmVzZXRfZ3BpbyA6IGEgR1BJTyBzcGVjIGZvciB0aGUgcmVzZXQgcGluLgorICAtIGNoZ2ZyZXEgICAgOiBDaGFyZ2UgUHVtcCBGcmVxdWVuY3kgdmFsdWVzIDB4MDAtMHgwRgorCisKK0V4YW1wbGU6CisKK2NvZGVjOiBjczQybDczQDRhIHsKKwljb21wYXRpYmxlID0gImNpcnJ1cyxjczQybDczIjsKKwlyZWcgPSA8MHg0YT47CisJcmVzZXRfZ3BpbyA9IDwmZ3BpbyAxMCAwPjsKKwljaGdmcmVxID0gPDB4MDU+OworfTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvY3M0Mnh4OC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvY3M0Mnh4OC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYzMWZiYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9jczQyeHg4LnR4dApAQCAtMCwwICsxLDI4IEBACitDUzQyNDQ4L0NTNDI4ODggYXVkaW8gQ09ERUMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGUgOiBtdXN0IGNvbnRhaW4gb25lIG9mICJjaXJydXMsY3M0MjQ0OCIgYW5kICJjaXJydXMsY3M0Mjg4OCIKKworICAtIHJlZyA6IHRoZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlIGZvciBJMkMKKworICAtIGNsb2NrcyA6IGEgbGlzdCBvZiBwaGFuZGxlcyArIGNsb2NrLXNwZWNpZmllcnMsIG9uZSBmb3IgZWFjaCBlbnRyeSBpbgorICAgIGNsb2NrLW5hbWVzCisKKyAgLSBjbG9jay1uYW1lcyA6IG11c3QgY29udGFpbiAibWNsayIKKworICAtIFZBLXN1cHBseSwgVkQtc3VwcGx5LCBWTFMtc3VwcGx5LCBWTEMtc3VwcGx5OiBwb3dlciBzdXBwbGllcyBmb3IgdGhlIGRldmljZSwKKyAgICBhcyBjb3ZlcmVkIGluIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvcmVndWxhdG9yLnR4dAorCitFeGFtcGxlOgorCitjb2RlYzogY3M0Mjg4OEA0OCB7CisJY29tcGF0aWJsZSA9ICJjaXJydXMsY3M0Mjg4OCI7CisJcmVnID0gPDB4NDg+OworCWNsb2NrcyA9IDwmY29kZWNfbWNsayAwPjsKKwljbG9jay1uYW1lcyA9ICJtY2xrIjsKKwlWQS1zdXBwbHkgPSA8JnJlZ19hdWRpbz47CisJVkQtc3VwcGx5ID0gPCZyZWdfYXVkaW8+OworCVZMUy1zdXBwbHkgPSA8JnJlZ19hdWRpbz47CisJVkxDLXN1cHBseSA9IDwmcmVnX2F1ZGlvPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvY3M0MzQ5LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9jczQzNDkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0YzExN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvY3M0MzQ5LnR4dApAQCAtMCwwICsxLDE5IEBACitDUzQzNDkgYXVkaW8gQ09ERUMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGUgOiAiY2lycnVzLGNzNDM0OSIKKworICAtIHJlZyA6IHRoZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlIGZvciBJMkMKKworT3B0aW9uYWwgcHJvcGVydGllczoKKworICAtIHJlc2V0LWdwaW9zIDogYSBHUElPIHNwZWMgZm9yIHRoZSByZXNldCBwaW4uCisKK0V4YW1wbGU6CisKK2NvZGVjOiBjczQzNDlANDggeworICAgICAgICBjb21wYXRpYmxlID0gImNpcnJ1cyxjczQzNDkiOworICAgICAgICByZWcgPSA8MHg0OD47CisgICAgICAgIHJlc2V0LWdwaW9zID0gPCZncGlvIDU0IDA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9kYTcyMTMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2RhNzIxMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg5MDI4MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9kYTcyMTMudHh0CkBAIC0wLDAgKzEsNDEgQEAKK0RpYWxvZyBTZW1pY29uZHVjdG9yIERBNzIxMyBBdWRpbyBDb2RlYyBiaW5kaW5ncworCis9PT09PT0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAiZGxnLGRhNzIxMyIKKy0gcmVnOiBTcGVjaWZpZXMgdGhlIEkyQyBzbGF2ZSBhZGRyZXNzCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrcyA6IHBoYW5kbGUgYW5kIGNsb2NrIHNwZWNpZmllciBmb3IgY29kZWMgTUNMSy4KKy0gY2xvY2stbmFtZXMgOiBDbG9jayBuYW1lIHN0cmluZyBmb3IgJ2Nsb2NrcycgYXR0cmlidXRlLCBzaG91bGQgYmUgIm1jbGsiLgorCistIGRsZyxtaWNiaWFzMS1sdmwgOiBWb2x0YWdlIChtVikgZm9yIE1pYyBCaWFzIDEKKwlbPDE2MDA+LCA8MjIwMD4sIDwyNTAwPiwgPDMwMDA+XQorLSBkbGcsbWljYmlhczItbHZsIDogVm9sdGFnZSAobVYpIGZvciBNaWMgQmlhcyAyCisJWzwxNjAwPiwgPDIyMDA+LCA8MjUwMD4sIDwzMDAwPl0KKy0gZGxnLGRtaWMtZGF0YS1zZWwgOiBETUlDIGNoYW5uZWwgc2VsZWN0IGJhc2VkIG9uIGNsb2NrIGVkZ2UuCisJWyJscmlzZV9yZmFsbCIsICJsZmFsbF9ycmlzZSJdCistIGRsZyxkbWljLXNhbXBsZXBoYXNlIDogV2hlbiB0byBzYW1wbGUgYXVkaW8gZnJvbSBETUlDLgorCVsib25fY2xrZWRnZSIsICJiZXR3ZWVuX2Nsa2VkZ2UiXQorLSBkbGcsZG1pYy1jbGtyYXRlIDogRE1JQyBjbG9jayBmcmVxdWVuY3kgKEh6KS4KKwlbPDE1MDAwMDA+LCA8MzAwMDAwMD5dCisKKz09PT09PQorCitFeGFtcGxlOgorCisJY29kZWNfaTJjOiBkYTcyMTNAMWEgeworCQljb21wYXRpYmxlID0gImRsZyxkYTcyMTMiOworIAkJcmVnID0gPDB4MWE+OworCisgCQljbG9ja3MgPSA8JmNsa3MgMjAxPjsKKwkJY2xvY2stbmFtZXMgPSAibWNsayI7CisKKwkJZGxnLG1pY2JpYXMxLWx2bCA9IDwyNTAwPjsKKwkJZGxnLG1pY2JpYXMyLWx2bCA9IDwyNTAwPjsKKworCQlkbGcsZG1pYy1kYXRhLXNlbCA9ICJscmlzZV9yZmFsbCI7CisJCWRsZyxkbWljLXNhbXBsZXBoYXNlID0gImJldHdlZW5fY2xrZWRnZSI7CisJCWRsZyxkbWljLWNsa3JhdGUgPSA8MzAwMDAwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9kYTcyMTkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2RhNzIxOS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI3MDMwOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9kYTcyMTkudHh0CkBAIC0wLDAgKzEsMTA2IEBACitEaWFsb2cgU2VtaWNvbmR1Y3RvciBEQTcyMTkgQXVkaW8gQ29kZWMgYmluZGluZ3MKKworREE3MjE5IGlzIGFuIGF1ZGlvIGNvZGVjIHdpdGggYWR2YW5jZWQgYWNjZXNzb3J5IGRldGVjdCBmZWF0dXJlcy4KKworPT09PT09CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImRsZyxkYTcyMTkiCistIHJlZzogU3BlY2lmaWVzIHRoZSBJMkMgc2xhdmUgYWRkcmVzcworCistIGludGVycnVwdC1wYXJlbnQgOiBTcGVjaWZpZXMgdGhlIHBoYW5kbGUgb2YgdGhlIGludGVycnVwdCBjb250cm9sbGVyIHRvIHdoaWNoCisgIHRoZSBJUlFzIGZyb20gREE3MjE5IGFyZSBkZWxpdmVyZWQgdG8uCistIGludGVycnVwdHMgOiBJUlEgbGluZSBpbmZvIGZvciBEQTcyMTkuCisgIChTZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2ludGVycnVwdHMudHh0IGZvcgorICAgZnVydGhlciBpbmZvcm1hdGlvbiByZWxhdGluZyB0byBpbnRlcnJ1cHQgcHJvcGVydGllcykKKworLSBWREQtc3VwcGx5OiBWREQgcG93ZXIgc3VwcGx5IGZvciB0aGUgZGV2aWNlCistIFZERE1JQy1zdXBwbHk6IFZERE1JQyBwb3dlciBzdXBwbHkgZm9yIHRoZSBkZXZpY2UKKy0gVkRESU8tc3VwcGx5OiBWRERJTyBwb3dlciBzdXBwbHkgZm9yIHRoZSBkZXZpY2UKKyAgKFNlZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3JlZ3VsYXRvci50eHQgZm9yIGZ1cnRoZXIKKyAgIGluZm9ybWF0aW9uIHJlbGF0aW5nIHRvIHJlZ3VsYXRvcnMpCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGludGVycnVwdC1uYW1lcyA6IE5hbWUgYXNzb2NpYXRlZCB3aXRoIGludGVycnVwdCBsaW5lLiBTaG91bGQgYmUgIndha2V1cCIgaWYKKyAgaW50ZXJydXB0IGlzIHRvIGJlIHVzZWQgdG8gd2FrZSBzeXN0ZW0sIG90aGVyd2lzZSAiaXJxIiBzaG91bGQgYmUgdXNlZC4KKy0gd2FrZXVwLXNvdXJjZTogRmxhZyB0byBpbmRpY2F0ZSB0aGlzIGRldmljZSBjYW4gd2FrZSBzeXN0ZW0gKHN1c3BlbmQvcmVzdW1lKS4KKworLSBjbG9ja3MgOiBwaGFuZGxlIGFuZCBjbG9jayBzcGVjaWZpZXIgZm9yIGNvZGVjIE1DTEsuCistIGNsb2NrLW5hbWVzIDogQ2xvY2sgbmFtZSBzdHJpbmcgZm9yICdjbG9ja3MnIGF0dHJpYnV0ZSwgc2hvdWxkIGJlICJtY2xrIi4KKworLSBkbGcsbGRvLWx2bCA6IFJlcXVpcmVkIGludGVybmFsIExETyB2b2x0YWdlIChtVikgbGV2ZWwgZm9yIGRpZ2l0YWwgZW5naW5lCisJWzwxMDUwPiwgPDExMDA+LCA8MTIwMD4sIDwxNDAwPl0KKy0gZGxnLG1pY2JpYXMtbHZsIDogVm9sdGFnZSAobVYpIGZvciBNaWMgQmlhcworCVs8MTgwMD4sIDwyMDAwPiwgPDIyMDA+LCA8MjQwMD4sIDwyNjAwPl0KKy0gZGxnLG1pYy1hbXAtaW4tc2VsIDogTWljIGlucHV0IHNvdXJjZSB0eXBlCisJWyJkaWZmIiwgInNlX3AiLCAic2VfbiJdCisKKz09PT09PQorCitDaGlsZCBub2RlIC0gJ2RhNzIxOV9hYWQnOgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBkbGcsbWljYmlhcy1wdWxzZS1sdmwgOiBNaWMgYmlhcyBoaWdoZXIgdm9sdGFnZSBwdWxzZSBsZXZlbCAobVYpLgorCVs8MjgwMD4sIDwyOTAwPl0KKy0gZGxnLG1pY2JpYXMtcHVsc2UtdGltZSA6IE1pYyBiaWFzIGhpZ2hlciB2b2x0YWdlIHB1bHNlIGR1cmF0aW9uIChtcykKKy0gZGxnLGJ0bi1jZmcgOiBQZXJpb2RpYyBidXR0b24gcHJlc3MgbWVhc3VyZW1lbnRzIGZvciA0LXBvbGUgamFjayAobXMpCisJWzwyPiwgPDU+LCA8MTA+LCA8NTA+LCA8MTAwPiwgPDIwMD4sIDw1MDA+XQorLSBkbGcsbWljLWRldC10aHIgOiBJbXBlZGFuY2UgdGhyZXNob2xkIGZvciBtaWMgZGV0ZWN0aW9uIG1lYXN1cmVtZW50IChPaG1zKQorCVs8MjAwPiwgPDUwMD4sIDw3NTA+LCA8MTAwMD5dCistIGRsZyxqYWNrLWlucy1kZWIgOiBEZWJvdW5jZSB0aW1lIGZvciBqYWNrIGluc2VydGlvbiAobXMpCisJWzw1PiwgPDEwPiwgPDIwPiwgPDUwPiwgPDEwMD4sIDwyMDA+LCA8NTAwPiwgPDEwMDA+XQorLSBkbGcsamFjay1kZXQtcmF0ZTogSmFjayB0eXBlIGRldGVjdGlvbiBsYXRlbmN5ICgzLzQgcG9sZSkKKwlbIjMybXNfNjRtcyIsICI2NG1zXzEyOG1zIiwgIjEyOG1zXzI1Nm1zIiwgIjI1Nm1zXzUxMm1zIl0KKy0gZGxnLGphY2stcmVtLWRlYiA6IERlYm91bmNlIHRpbWUgZm9yIGphY2sgcmVtb3ZhbCAobXMpCisJWzwxPiwgPDU+LCA8MTA+LCA8MjA+XQorLSBkbGcsYS1kLWJ0bi10aHIgOiBJbXBlZGFuY2UgdGhyZXNob2xkIGJldHdlZW4gYnV0dG9ucyBBIGFuZCBECisJWzB4MCAtIDB4RkZdCistIGRsZyxkLWItYnRuLXRociA6IEltcGVkYW5jZSB0aHJlc2hvbGQgYmV0d2VlbiBidXR0b25zIEQgYW5kIEIKKwlbMHgwIC0gMHhGRl0KKy0gZGxnLGItYy1idG4tdGhyIDogSW1wZWRhbmNlIHRocmVzaG9sZCBiZXR3ZWVuIGJ1dHRvbnMgQiBhbmQgQworCVsweDAgLSAweEZGXQorLSBkbGcsYy1taWMtYnRuLXRociA6IEltcGVkYW5jZSB0aHJlc2hvbGQgYmV0d2VlbiBidXR0b24gQyBhbmQgTWljCisJWzB4MCAtIDB4RkZdCistIGRsZyxidG4tYXZnIDogTnVtYmVyIG9mIDgtYml0IHJlYWRpbmdzIGZvciBhdmVyYWdlZCBidXR0b24gbWVhc3VyZW1lbnQKKwlbPDE+LCA8Mj4sIDw0PiwgPDg+XQorLSBkbGcsYWRjLTFiaXQtcnB0IDogUmVwZWF0IGNvdW50IGZvciAxLWJpdCBidXR0b24gbWVhc3VyZW1lbnQKKwlbPDE+LCA8Mj4sIDw0PiwgPDg+XQorCis9PT09PT0KKworRXhhbXBsZToKKworCWNvZGVjOiBkYTcyMTlAMWEgeworCQljb21wYXRpYmxlID0gImRsZyxkYTcyMTkiOworCQlyZWcgPSA8MHgxYT47CisKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3BpbzY+OworCQlpbnRlcnJ1cHRzID0gPDExIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCisJCVZERC1zdXBwbHkgPSA8JnJlZ19hdWRpbz47CisJCVZERE1JQy1zdXBwbHkgPSA8JnJlZ19hdWRpbz47CisJCVZERElPLXN1cHBseSA9IDwmcmVnX2F1ZGlvPjsKKworCQljbG9ja3MgPSA8JmNsa3MgMjAxPjsKKwkJY2xvY2stbmFtZXMgPSAibWNsayI7CisKKwkJZGxnLGxkby1sdmwgPSA8MTIwMD47CisJCWRsZyxtaWNiaWFzLWx2bCA9IDwyNjAwPjsKKwkJZGxnLG1pYy1hbXAtaW4tc2VsID0gImRpZmYiOworCisJCWRhNzIxOV9hYWQgeworCQkJZGxnLGJ0bi1jZmcgPSA8NTA+OworCQkJZGxnLG1pYy1kZXQtdGhyID0gPDUwMD47CisJCQlkbGcsamFjay1pbnMtZGViID0gPDIwPjsKKwkJCWRsZyxqYWNrLWRldC1yYXRlID0gIjMybXNfNjRtcyI7CisJCQlkbGcsamFjay1yZW0tZGViID0gPDE+OworCisJCQlkbGcsYS1kLWJ0bi10aHIgPSA8MHhhPjsKKwkJCWRsZyxkLWItYnRuLXRociA9IDwweDE2PjsKKwkJCWRsZyxiLWMtYnRuLXRociA9IDwweDIxPjsKKwkJCWRsZyxjLW1pYy1idG4tdGhyID0gPDB4M0U+OworCisJCQlkbGcsYnRuLWF2ZyA9IDw0PjsKKwkJCWRsZyxhZGMtMWJpdC1ycHQgPSA8MT47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9kYTkwNTUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2RhOTA1NS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQxYjdjYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9kYTkwNTUudHh0CkBAIC0wLDAgKzEsMjIgQEAKKyogRGlhbG9nIERBOTA1NSBBdWRpbyBDT0RFQworCitEQTkwNTUgcHJvdmlkZXMgQXVkaW8gQ09ERUMgc3VwcG9ydCAoSTJDIG9ubHkpLgorCitUaGUgQXVkaW8gQ09ERUMgZGV2aWNlIGluIERBOTA1NSBoYXMgaXQncyBvd24gSTJDIGFkZHJlc3Mgd2hpY2ggaXMgY29uZmlndXJhYmxlLAorc28gdGhlIGRldmljZSBpcyBpbnN0YW50aWF0ZWQgc2VwYXJhdGVseSBmcm9tIHRoZSBQTUlDIChNRkQpIGRldmljZS4KKworRm9yIGRldGFpbHMgb24gYWNjb21wYW55aW5nIFBNSUMgSTJDIGRldmljZSwgc2VlIHRoZSBmb2xsb3dpbmc6CitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2RhOTA1NS50eHQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGU6ICJkbGcsZGE5MDU1LWNvZGVjIgorICAtIHJlZzogU3BlY2lmaWVzIHRoZSBJMkMgc2xhdmUgYWRkcmVzcworCisKK0V4YW1wbGU6CisKKwljb2RlYzogZGE5MDU1LWNvZGVjQDFhIHsKKwkJY29tcGF0aWJsZSA9ICJkbGcsZGE5MDU1LWNvZGVjIjsKKwkJcmVnID0gPDB4MWE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvZGF2aW5jaS1ldm0tYXVkaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2RhdmluY2ktZXZtLWF1ZGlvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjNlMTAwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2RhdmluY2ktZXZtLWF1ZGlvLnR4dApAQCAtMCwwICsxLDQ5IEBACisqIFRleGFzIEluc3RydW1lbnRzIFNvQyBhdWRpbyBzZXR1cHMgd2l0aCBUTFYzMjBBSUMzWCBDb2RlYworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogInRpLGRhODMwLWV2bS1hdWRpbyIgOiBmb3JETTM2NS9EQTh4eC9PTUFQTDF4L0FNMzN4eAorLSB0aSxtb2RlbCA6IFRoZSB1c2VyLXZpc2libGUgbmFtZSBvZiB0aGlzIHNvdW5kIGNvbXBsZXguCistIHRpLGF1ZGlvLWNvZGVjIDogVGhlIHBoYW5kbGUgb2YgdGhlIFRMVjMyMEFJQzN4IGF1ZGlvIGNvZGVjCistIHRpLG1jYXNwLWNvbnRyb2xsZXIgOiBUaGUgcGhhbmRsZSBvZiB0aGUgTWNBU1AgY29udHJvbGxlcgorLSB0aSxhdWRpby1yb3V0aW5nIDogQSBsaXN0IG9mIHRoZSBjb25uZWN0aW9ucyBiZXR3ZWVuIGF1ZGlvIGNvbXBvbmVudHMuCisgIEVhY2ggZW50cnkgaXMgYSBwYWlyIG9mIHN0cmluZ3MsIHRoZSBmaXJzdCBiZWluZyB0aGUgY29ubmVjdGlvbidzIHNpbmssCisgIHRoZSBzZWNvbmQgYmVpbmcgdGhlIGNvbm5lY3Rpb24ncyBzb3VyY2UuIFZhbGlkIG5hbWVzIGZvciBzb3VyY2VzIGFuZAorICBzaW5rcyBhcmUgdGhlIGNvZGVjJ3MgcGlucywgYW5kIHRoZSBqYWNrcyBvbiB0aGUgYm9hcmQ6CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHRpLGNvZGVjLWNsb2NrLXJhdGUgOiBUaGUgQ29kZWMgQ2xvY2sgcmF0ZSAoaW4gSHopIGFwcGxpZWQgdG8gdGhlIENvZGVjLgorLSBjbG9ja3MgOiBSZWZlcmVuY2UgdG8gdGhlIG1hc3RlciBjbG9jaworLSBjbG9jay1uYW1lcyA6IFRoZSBjbG9jayBzaG91bGQgYmUgbmFtZWQgIm1jbGsiCistIEVpdGhlciBjb2RlYy1jbG9jay1yYXRlIG9yIHRoZSBjb2RlYy1jbG9jayByZWZlcmVuY2UgaGFzIHRvIGJlIGRlZmluZWQuIElmCisgIHRoZSBib3RoIGFyZSBkZWZpbmVkIHRoZSBkcml2ZXIgYXR0ZW1wdHMgdG8gc2V0IHJlZmVyZW5jZWQgY2xvY2sgdG8gdGhlCisgIGRlZmluZWQgcmF0ZSBhbmQgdGFrZXMgdGhlIHJhdGUgZnJvbSB0aGUgY2xvY2sgcmVmZXJlbmNlLgorCisgIEJvYXJkIGNvbm5lY3RvcnM6CisKKyAgKiBIZWFkcGhvbmUgSmFjaworICAqIExpbmUgT3V0CisgICogTWljIEphY2sKKyAgKiBMaW5lIEluCisKKworRXhhbXBsZToKKworc291bmQgeworCWNvbXBhdGlibGUgPSAidGksZGE4MzAtZXZtLWF1ZGlvIjsKKwl0aSxtb2RlbCA9ICJEQTgzMCBFVk0iOworCXRpLGF1ZGlvLWNvZGVjID0gPCZ0bHYzMjBhaWMzeD47CisJdGksbWNhc3AtY29udHJvbGxlciA9IDwmbWNhc3AxPjsKKwl0aSxjb2RlYy1jbG9jay1yYXRlID0gPDEyMDAwMDAwPjsKKwl0aSxhdWRpby1yb3V0aW5nID0KKwkJIkhlYWRwaG9uZSBKYWNrIiwgICAgICAgIkhQTE9VVCIsCisJCSJIZWFkcGhvbmUgSmFjayIsICAgICAgICJIUFJPVVQiLAorCQkiTGluZSBPdXQiLCAgICAgICAgICAgICAiTExPVVQiLAorCQkiTGluZSBPdXQiLCAgICAgICAgICAgICAiUkxPVVQiLAorCQkiTUlDM0wiLCAgICAgICAgICAgICAgICAiTWljIEJpYXMgMlYiLAorCQkiTUlDM1IiLCAgICAgICAgICAgICAgICAiTWljIEJpYXMgMlYiLAorCQkiTWljIEJpYXMgMlYiLCAgICAgICAgICAiTWljIEphY2siLAorCQkiTElORTFMIiwgICAgICAgICAgICAgICAiTGluZSBJbiIsCisJCSJMSU5FMkwiLCAgICAgICAgICAgICAgICJMaW5lIEluIiwKKwkJIkxJTkUxUiIsICAgICAgICAgICAgICAgIkxpbmUgSW4iLAorCQkiTElORTJSIiwgICAgICAgICAgICAgICAiTGluZSBJbiI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2RhdmluY2ktbWNhc3AtYXVkaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2RhdmluY2ktbWNhc3AtYXVkaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2YmM5ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvZGF2aW5jaS1tY2FzcC1hdWRpby50eHQKQEAgLTAsMCArMSw2MCBAQAorVGV4YXMgSW5zdHJ1bWVudHMgTWNBU1AgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDoKKwkidGksZG02NDZ4LW1jYXNwLWF1ZGlvIgk6IGZvciBETTY0NnggcGxhdGZvcm1zCisJInRpLGRhODMwLW1jYXNwLWF1ZGlvIgk6IGZvciBib3RoIERBODMwICYgREE4NTAgcGxhdGZvcm1zCisJInRpLGFtMzN4eC1tY2FzcC1hdWRpbyIJOiBmb3IgQU0zM3h4IHBsYXRmb3JtcyAoQU0zM3h4LCBBTTQzeHgsIFRJODF4eCkKKwkidGksZHJhNy1tY2FzcC1hdWRpbyIJOiBmb3IgRFJBN3h4IHBsYXRmb3JtcworCistIHJlZyA6IFNob3VsZCBjb250YWluIHJlZyBzcGVjaWZpZXJzIGZvciB0aGUgZW50cmllcyBpbiB0aGUgcmVnLW5hbWVzIHByb3BlcnR5LgorLSByZWctbmFtZXMgOiBTaG91bGQgY29udGFpbjoKKyAgICAgICAgICogIm1wdSIgZm9yIHRoZSBtYWluIHJlZ2lzdGVycyAocmVxdWlyZWQpLiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoCisgICAgICAgICAgIGV4aXN0aW5nIHNvZnR3YXJlLCBpdCBpcyByZWNvbW1lbmRlZCB0aGlzIGlzIHRoZSBmaXJzdCBlbnRyeS4KKyAgICAgICAgICogImRhdCIgZm9yIHNlcGFyYXRlIGRhdGEgcG9ydCByZWdpc3RlciBhY2Nlc3MgKG9wdGlvbmFsKS4KKy0gb3AtbW9kZSA6IEkyUy9ESVQgb3BzIG1vZGUuIDAgZm9yIEkyUyBtb2RlLiAxIGZvciBESVQgbW9kZSB1c2VkIGZvciBTL1BESUYsCisgIAkgICAgSUVDNjA5NTgtMSwgYW5kIEFFUy0zIGZvcm1hdHMuCistIHRkbS1zbG90cyA6IFNsb3RzIGZvciBURE0gb3BlcmF0aW9uLiBJbmRpY2F0ZXMgbnVtYmVyIG9mIGNoYW5uZWxzIHRyYW5zbWl0dGVkCisgIAkgICAgICBvciByZWNlaXZlZCBvdmVyIG9uZSBzZXJpYWxpemVyLgorLSBzZXJpYWwtZGlyIDogQSBsaXN0IG9mIHNlcmlhbGl6ZXIgY29uZmlndXJhdGlvbi4gRWFjaCBlbnRyeSBpcyBhIG51bWJlcgorICAgICAgICAgICAgICAgaW5kaWNhdGlvbiBmb3Igc2VyaWFsaXplciBwaW4gZGlyZWN0aW9uLgorICAgICAgICAgICAgICAgKDAgLSBJTkFDVElWRSwgMSAtIFRYLCAyIC0gUlgpCistIGRtYXM6IHR3byBlbGVtZW50IGxpc3Qgb2YgRE1BIGNvbnRyb2xsZXIgcGhhbmRsZXMgYW5kIERNQSByZXF1ZXN0IGxpbmUKKyAgICAgICAgb3JkZXJlZCBwYWlycy4KKy0gZG1hLW5hbWVzOiBpZGVudGlmaWVyIHN0cmluZyBmb3IgZWFjaCBETUEgcmVxdWVzdCBsaW5lIGluIHRoZSBkbWFzIHByb3BlcnR5LgorCSAgICAgVGhlc2Ugc3RyaW5ncyBjb3JyZXNwb25kIDE6MSB3aXRoIHRoZSBvcmRlcmVkIHBhaXJzIGluIGRtYXMuIFRoZSBkbWEKKwkgICAgIGlkZW50aWZpZXJzIG11c3QgYmUgInJ4IiBhbmQgInR4Ii4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworLSB0aSxod21vZHMgOiBNdXN0IGJlICJtY2FzcDxuPiIsIG4gaXMgY29udHJvbGxlciBpbnN0YW5jZSBzdGFydGluZyAwCistIHR4LW51bS1ldnQgOiBGSUZPIGxldmVscy4KKy0gcngtbnVtLWV2dCA6IEZJRk8gbGV2ZWxzLgorLSBzcmFtLXNpemUtcGxheWJhY2sgOiBzaXplIG9mIHNyYW0gdG8gYmUgYWxsb2NhdGVkIGR1cmluZyBwbGF5YmFjaworLSBzcmFtLXNpemUtY2FwdHVyZSAgOiBzaXplIG9mIHNyYW0gdG8gYmUgYWxsb2NhdGVkIGR1cmluZyBjYXB0dXJlCistIGludGVycnVwdHMgOiBJbnRlcnJ1cHQgbnVtYmVycyBmb3IgTWNBU1AKKy0gaW50ZXJydXB0LW5hbWVzIDogS25vd24gaW50ZXJydXB0IG5hbWVzIGFyZSAidHgiIGFuZCAicngiCistIHBpbmN0cmwtMDogU2hvdWxkIHNwZWNpZnkgcGluIGNvbnRyb2wgZ3JvdXAgdXNlZCBmb3IgdGhpcyBjb250cm9sbGVyLgorLSBwaW5jdHJsLW5hbWVzOiBTaG91bGQgY29udGFpbiBvbmx5IG9uZSB2YWx1ZSAtICJkZWZhdWx0IiwgZm9yIG1vcmUgZGV0YWlscworICAJCSBwbGVhc2UgcmVmZXIgdG8gcGluY3RybC1iaW5kaW5ncy50eHQKKy0gZmNrX3BhcmVudCA6IFNob3VsZCBjb250YWluIGEgdmFsaWQgY2xvY2sgbmFtZSB3aGljaCB3aWxsIGJlIHVzZWQgYXMgcGFyZW50CisJICAgICAgIGZvciB0aGUgTWNBU1AgZmNrCisKK0V4YW1wbGU6CisKK21jYXNwMDogbWNhc3AwQDFkMDAwMDAgeworCWNvbXBhdGlibGUgPSAidGksZGE4MzAtbWNhc3AtYXVkaW8iOworCXJlZyA9IDwweDEwMDAwMCAweDMwMDA+OworCXJlZy1uYW1lcyAibXB1IjsKKwlpbnRlcnJ1cHRzID0gPDgyPiwgPDgzPjsKKwlpbnRlcnJ1cHQtbmFtZXMgPSAidHgiLCAicngiOworCW9wLW1vZGUgPSA8MD47CQkvKiBNQ0FTUF9JSVNfTU9ERSAqLworCXRkbS1zbG90cyA9IDwyPjsKKwlzZXJpYWwtZGlyID0gPAorCQkJMCAwIDAgMAkvKiAwOiBJTkFDVElWRSwgMTogVFgsIDI6IFJYICovCisJCQkwIDAgMCAwCisJCQkwIDAgMCAxCisJCQkyIDAgMCAwID47CisJdHgtbnVtLWV2dCA9IDwxPjsKKwlyeC1udW0tZXZ0ID0gPDE+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9kZXNpZ253YXJlLWkycy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvZGVzaWdud2FyZS1pMnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiYjU0MjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvZGVzaWdud2FyZS1pMnMudHh0CkBAIC0wLDAgKzEsMzEgQEAKK0Rlc2lnbldhcmUgSTJTIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGUgOiBNdXN0IGJlICJzbnBzLGRlc2lnbndhcmUtaTJzIgorIC0gcmVnIDogTXVzdCBjb250YWluIHRoZSBJMlMgY29yZSdzIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCisgLSBjbG9ja3MgOiBQYWlycyBvZiBwaGFuZGxlIGFuZCBzcGVjaWZpZXIgcmVmZXJlbmNpbmcgdGhlIGNvbnRyb2xsZXIncworICAgY2xvY2tzLiBUaGUgY29udHJvbGxlciBleHBlY3RzIG9uZSBjbG9jazogdGhlIGNsb2NrIHVzZWQgYXMgdGhlIHNhbXBsaW5nCisgICByYXRlIHJlZmVyZW5jZSBjbG9jayBzYW1wbGUuCisgLSBjbG9jay1uYW1lcyA6ICJpMnNjbGsiIGZvciB0aGUgc2FtcGxlIHJhdGUgcmVmZXJlbmNlIGNsb2NrLgorIC0gZG1hczogUGFpcnMgb2YgcGhhbmRsZSBhbmQgc3BlY2lmaWVyIGZvciB0aGUgRE1BIGNoYW5uZWxzIHRoYXQgYXJlIHVzZWQgYnkKKyAgIHRoZSBjb3JlLiBUaGUgY29yZSBleHBlY3RzIG9uZSBvciB0d28gZG1hIGNoYW5uZWxzOiBvbmUgZm9yIHRyYW5zbWl0IGFuZAorICAgb25lIGZvciByZWNlaXZlLgorIC0gZG1hLW5hbWVzIDogInR4IiBmb3IgdGhlIHRyYW5zbWl0IGNoYW5uZWwsICJyeCIgZm9yIHRoZSByZWNlaXZlIGNoYW5uZWwuCisKK0ZvciBtb3JlIGRldGFpbHMgb24gdGhlICdkbWEnLCAnZG1hLW5hbWVzJywgJ2Nsb2NrJyBhbmQgJ2Nsb2NrLW5hbWVzJworcHJvcGVydGllcyBwbGVhc2UgY2hlY2s6CisJKiByZXNvdXJjZS1uYW1lcy50eHQKKwkqIGNsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCSogZG1hL2RtYS50eHQKKworRXhhbXBsZToKKworCXNvY19pMnM6IGkyc0A3ZmY5MDAwMCB7CisJCWNvbXBhdGlibGUgPSAic25wcyxkZXNpZ253YXJlLWkycyI7CisJCXJlZyA9IDwweDAgMHg3ZmY5MDAwMCAweDAgMHgxMDAwPjsKKwkJY2xvY2tzID0gPCZzY3BpX2kyc2NsayAwPjsKKwkJY2xvY2stbmFtZXMgPSAiaTJzY2xrIjsKKwkJI3NvdW5kLWRhaS1jZWxscyA9IDwwPjsKKwkJZG1hcyA9IDwmZG1hMCA1PjsKKwkJZG1hLW5hbWVzID0gInR4IjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2VzODMyOC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvZXM4MzI4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGVhOGEzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2VzODMyOC50eHQKQEAgLTAsMCArMSwzOCBAQAorRXZlcmVzdCBFUzgzMjggYXVkaW8gQ09ERUMKKworVGhpcyBkZXZpY2Ugc3VwcG9ydHMgYm90aCBJMkMgYW5kIFNQSS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGUgOiAiZXZlcmVzdCxlczgzMjgiCisgIC0gRFZERC1zdXBwbHkgOiBSZWd1bGF0b3IgcHJvdmlkaW5nIGRpZ2l0YWwgY29yZSBzdXBwbHkgdm9sdGFnZSAxLjggLSAzLjZWCisgIC0gQVZERC1zdXBwbHkgOiBSZWd1bGF0b3IgcHJvdmlkaW5nIGFuYWxvZyBzdXBwbHkgdm9sdGFnZSAzLjNWCisgIC0gUFZERC1zdXBwbHkgOiBSZWd1bGF0b3IgcHJvdmlkaW5nIGRpZ2l0YWwgSU8gc3VwcGx5IHZvbHRhZ2UgMS44IC0gMy42VgorICAtIElQVkRELXN1cHBseSA6IFJlZ3VsYXRvciBwcm92aWRpbmcgYW5hbG9nIG91dHB1dCB2b2x0YWdlIDMuM1YKKyAgLSBjbG9ja3MgOiBBIDIyLjU3OTIgb3IgMTEuMjg5NiBNSHogY2xvY2sKKyAgLSByZWcgOiB0aGUgSTJDIGFkZHJlc3Mgb2YgdGhlIGRldmljZSBmb3IgSTJDLCB0aGUgY2hpcCBzZWxlY3QgbnVtYmVyIGZvciBTUEkKKworUGlucyBvbiB0aGUgZGV2aWNlIChmb3IgbGlua2luZyBpbnRvIGF1ZGlvIHJvdXRlcyk6CisKKyAgKiBMT1VUMQorICAqIExPVVQyCisgICogUk9VVDEKKyAgKiBST1VUMgorICAqIExJTlBVVDEKKyAgKiBSSU5QVVQxCisgICogTElOUFVUMgorICAqIFJJTlBVVDIKKyAgKiBNaWMgQmlhcworCisKK0V4YW1wbGU6CisKK2NvZGVjOiBlczgzMjhAMTEgeworCWNvbXBhdGlibGUgPSAiZXZlcmVzdCxlczgzMjgiOworCURWREQtc3VwcGx5ID0gPCZyZWdfM3Azdj47CisJQVZERC1zdXBwbHkgPSA8JnJlZ18zcDN2PjsKKwlQVkRELXN1cHBseSA9IDwmcmVnXzNwM3Y+OworCUhQVkRELXN1cHBseSA9IDwmcmVnXzNwM3Y+OworCWNsb2NrcyA9IDwmY2xrcyAxNjk+OworCXJlZyA9IDwweDExPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvZXVrcmVhLXRsdjMyMC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvZXVrcmVhLXRsdjMyMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRmYTg4YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9ldWtyZWEtdGx2MzIwLnR4dApAQCAtMCwwICsxLDI2IEBACitBdWRpbyBjb21wbGV4IGZvciBFdWtyZWEgYm9hcmRzIHdpdGggdGx2MzIwYWljMjMgY29kZWMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlCQk6ICJldWtyZWEsYXNvYy10bHYzMjAiCisKKyAgLSBldWtyZWEsbW9kZWwJOiBUaGUgdXNlci12aXNpYmxlIG5hbWUgb2YgdGhpcyBzb3VuZCBjb21wbGV4LgorCisgIC0gc3NpLWNvbnRyb2xsZXIJOiBUaGUgcGhhbmRsZSBvZiB0aGUgU1NJIGNvbnRyb2xsZXIuCisKKyAgLSBmc2wsbXV4LWludC1wb3J0CTogVGhlIGludGVybmFsIHBvcnQgb2YgdGhlIGkuTVggYXVkaW8gbXV4ZXIgKEFVRE1VWCkuCisKKyAgLSBmc2wsbXV4LWV4dC1wb3J0CTogVGhlIGV4dGVybmFsIHBvcnQgb2YgdGhlIGkuTVggYXVkaW8gbXV4ZXIuCisKK05vdGU6IFRoZSBBVURNVVggcG9ydCBudW1iZXJpbmcgc2hvdWxkIHN0YXJ0IGF0IDEsIHdoaWNoIGlzIGNvbnNpc3RlbnQgd2l0aAoraGFyZHdhcmUgbWFudWFsLgorCitFeGFtcGxlOgorCisJc291bmQgeworCQljb21wYXRpYmxlID0gImV1a3JlYSxhc29jLXRsdjMyMCI7CisJCWV1a3JlYSxtb2RlbCA9ICJpbXg1MS1ldWtyZWEtdGx2MzIwYWljMjMiOworCQlzc2ktY29udHJvbGxlciA9IDwmc3NpMj47CisJCWZzbCxtdXgtaW50LXBvcnQgPSA8Mj47CisJCWZzbCxtdXgtZXh0LXBvcnQgPSA8Mz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9mc2wsYXNyYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvZnNsLGFzcmMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MzM2MmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvZnNsLGFzcmMudHh0CkBAIC0wLDAgKzEsNjAgQEAKK0ZyZWVzY2FsZSBBc3luY2hyb25vdXMgU2FtcGxlIFJhdGUgQ29udmVydGVyIChBU1JDKSBDb250cm9sbGVyCisKK1RoZSBBc3luY2hyb25vdXMgU2FtcGxlIFJhdGUgQ29udmVydGVyIChBU1JDKSBjb252ZXJ0cyB0aGUgc2FtcGxpbmcgcmF0ZSBvZiBhCitzaWduYWwgYXNzb2NpYXRlZCB3aXRoIGFuIGlucHV0IGNsb2NrIGludG8gYSBzaWduYWwgYXNzb2NpYXRlZCB3aXRoIGEgZGlmZmVyZW50CitvdXRwdXQgY2xvY2suIFRoZSBkcml2ZXIgY3VycmVudGx5IHdvcmtzIGFzIGEgRnJvbnQgRW5kIG9mIERQQ00gd2l0aCBvdGhlciBCYWNrCitFbmRzIEF1ZGlvIGNvbnRyb2xsZXIgc3VjaCBhcyBFU0FJLCBTU0kgYW5kIFNBSS4gSXQgaGFzIHRocmVlIHBhaXJzIHRvIHN1cHBvcnQKK3RocmVlIHN1YnN0cmVhbXMgd2l0aGluIHRvdGFsbHkgMTAgY2hhbm5lbHMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlCQk6IENvbnRhaW5zICJmc2wsaW14MzUtYXNyYyIgb3IgImZzbCxpbXg1My1hc3JjIi4KKworICAtIHJlZwkJCTogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZS4KKworICAtIGludGVycnVwdHMJCTogQ29udGFpbnMgdGhlIHNwZGlmIGludGVycnVwdC4KKworICAtIGRtYXMJCTogR2VuZXJpYyBkbWEgZGV2aWNldHJlZSBiaW5kaW5nIGFzIGRlc2NyaWJlZCBpbgorCQkJICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2RtYS50eHQuCisKKyAgLSBkbWEtbmFtZXMJCTogQ29udGFpbnMgInJ4YSIsICJyeGIiLCAicnhjIiwgInR4YSIsICJ0eGIiIGFuZCAidHhjIi4KKworICAtIGNsb2NrcwkJOiBDb250YWlucyBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKworICAtIGNsb2NrLW5hbWVzCQk6IENvbnRhaW5zIHRoZSBmb2xsb3dpbmcgZW50cmllcworCSJtZW0iCQkgIFBlcmlwaGVyYWwgYWNjZXNzIGNsb2NrIHRvIGFjY2VzcyByZWdpc3RlcnMuCisJImlwZyIJCSAgUGVyaXBoZXJhbCBjbG9jayB0byBkcml2ZXIgbW9kdWxlLgorCSJhc3Jja188MC1mPiIJICBDbG9jayBzb3VyY2VzIGZvciBpbnB1dCBhbmQgb3V0cHV0IGNsb2NrLgorCisgICAtIGJpZy1lbmRpYW4JCTogSWYgdGhpcyBwcm9wZXJ0eSBpcyBhYnNlbnQsIHRoZSBsaXR0bGUgZW5kaWFuIG1vZGUKKwkJCSAgd2lsbCBiZSBpbiB1c2UgYXMgZGVmYXVsdC4gT3RoZXJ3aXNlLCB0aGUgYmlnIGVuZGlhbgorCQkJICBtb2RlIHdpbGwgYmUgaW4gdXNlIGZvciBhbGwgdGhlIGRldmljZSByZWdpc3RlcnMuCisKKyAgIC0gZnNsLGFzcmMtcmF0ZQk6IERlZmluZXMgYSBtdXR1YWwgc2FtcGxlIHJhdGUgdXNlZCBieSBEUENNIEJhY2sgRW5kcy4KKworICAgLSBmc2wsYXNyYy13aWR0aAk6IERlZmluZXMgYSBtdXR1YWwgc2FtcGxlIHdpZHRoIHVzZWQgYnkgRFBDTSBCYWNrIEVuZHMuCisKK0V4YW1wbGU6CisKK2FzcmM6IGFzcmNAMDIwMzQwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDUzLWFzcmMiOworCXJlZyA9IDwweDAyMDM0MDAwIDB4NDAwMD47CisJaW50ZXJydXB0cyA9IDwwIDUwIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCWNsb2NrcyA9IDwmY2xrcyAxMDc+LCA8JmNsa3MgMTA3PiwgPCZjbGtzIDA+LAorCSAgICAgICA8JmNsa3MgMD4sIDwmY2xrcyAwPiwgPCZjbGtzIDA+LCA8JmNsa3MgMD4sCisJICAgICAgIDwmY2xrcyAwPiwgPCZjbGtzIDA+LCA8JmNsa3MgMD4sIDwmY2xrcyAwPiwKKwkgICAgICAgPCZjbGtzIDA+LCA8JmNsa3MgMD4sIDwmY2xrcyAwPiwgPCZjbGtzIDA+LAorCSAgICAgICA8JmNsa3MgMTA3PiwgPCZjbGtzIDA+LCA8JmNsa3MgMD47CisJY2xvY2stbmFtZXMgPSAibWVtIiwgImlwZyIsICJhc3JjazAiLAorCQkiYXNyY2tfMSIsICJhc3Jja18yIiwgImFzcmNrXzMiLCAiYXNyY2tfNCIsCisJCSJhc3Jja181IiwgImFzcmNrXzYiLCAiYXNyY2tfNyIsICJhc3Jja184IiwKKwkJImFzcmNrXzkiLCAiYXNyY2tfYSIsICJhc3Jja19iIiwgImFzcmNrX2MiLAorCQkiYXNyY2tfZCIsICJhc3Jja19lIiwgImFzcmNrX2YiOworCWRtYXMgPSA8JnNkbWEgMTcgMjMgMT4sIDwmc2RtYSAxOCAyMyAxPiwgPCZzZG1hIDE5IDIzIDE+LAorCSAgICAgPCZzZG1hIDIwIDIzIDE+LCA8JnNkbWEgMjEgMjMgMT4sIDwmc2RtYSAyMiAyMyAxPjsKKwlkbWEtbmFtZXMgPSAicnhhIiwgInJ4YiIsICJyeGMiLAorCQkidHhhIiwgInR4YiIsICJ0eGMiOworCWZzbCxhc3JjLXJhdGUgID0gPDQ4MDAwPjsKKwlmc2wsYXNyYy13aWR0aCA9IDwxNj47CisJc3RhdHVzID0gIm9rYXkiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9mc2wsZXNhaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvZnNsLGVzYWkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzYjZiNWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvZnNsLGVzYWkudHh0CkBAIC0wLDAgKzEsNTggQEAKK0ZyZWVzY2FsZSBFbmhhbmNlZCBTZXJpYWwgQXVkaW8gSW50ZXJmYWNlIChFU0FJKSBDb250cm9sbGVyCisKK1RoZSBFbmhhbmNlZCBTZXJpYWwgQXVkaW8gSW50ZXJmYWNlIChFU0FJKSBwcm92aWRlcyBhIGZ1bGwtZHVwbGV4IHNlcmlhbCBwb3J0Citmb3Igc2VyaWFsIGNvbW11bmljYXRpb24gd2l0aCBhIHZhcmlldHkgb2Ygc2VyaWFsIGRldmljZXMsIGluY2x1ZGluZyBpbmR1c3RyeQorc3RhbmRhcmQgY29kZWNzLCBTb255L1BoaWxsaXBzIERpZ2l0YWwgSW50ZXJmYWNlIChTL1BESUYpIHRyYW5zY2VpdmVycywgYW5kCitvdGhlciBEU1BzLiBJdCBoYXMgdXAgdG8gc2l4IHRyYW5zbWl0dGVycyBhbmQgZm91ciByZWNlaXZlcnMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlCQk6IENvbXBhdGlibGUgbGlzdCwgbXVzdCBjb250YWluICJmc2wsaW14MzUtZXNhaSIgb3IKKwkJCSAgImZzbCx2ZjYxMC1lc2FpIgorCisgIC0gcmVnCQkJOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlLgorCisgIC0gaW50ZXJydXB0cwkJOiBDb250YWlucyB0aGUgc3BkaWYgaW50ZXJydXB0LgorCisgIC0gZG1hcwkJOiBHZW5lcmljIGRtYSBkZXZpY2V0cmVlIGJpbmRpbmcgYXMgZGVzY3JpYmVkIGluCisJCQkgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvZG1hLnR4dC4KKworICAtIGRtYS1uYW1lcwkJOiBUd28gZG1hcyBoYXZlIHRvIGJlIGRlZmluZWQsICJ0eCIgYW5kICJyeCIuCisKKyAgLSBjbG9ja3MJCTogQ29udGFpbnMgYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCisKKyAgLSBjbG9jay1uYW1lcwkJOiBJbmNsdWRlcyB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisJImNvcmUiCQkgIFRoZSBjb3JlIGNsb2NrIHVzZWQgdG8gYWNjZXNzIHJlZ2lzdGVycworCSJleHRhbCIJCSAgVGhlIGVzYWkgYmF1ZCBjbG9jayBmb3IgZXNhaSBjb250cm9sbGVyIHVzZWQgdG8KKwkJCSAgZGVyaXZlIEhDSywgU0NLIGFuZCBGUy4KKwkiZnN5cyIJCSAgVGhlIHN5c3RlbSBjbG9jayBkZXJpdmVkIGZyb20gYWhiIGNsb2NrIHVzZWQgdG8KKwkJCSAgZGVyaXZlIEhDSywgU0NLIGFuZCBGUy4KKworICAtIGZzbCxmaWZvLWRlcHRoCTogVGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgdHJhbnNtaXQgYW5kIHJlY2VpdmUKKwkJCSAgRklGT3MuIFRoaXMgbnVtYmVyIGlzIHRoZSBtYXhpbXVtIGFsbG93ZWQgdmFsdWUgZm9yCisJCQkgIFRGQ1JbVEZXTV0gb3IgUkZDUltSRldNXS4KKworICAtIGZzbCxlc2FpLXN5bmNocm9ub3VzOiBUaGlzIGlzIGEgYm9vbGVhbiBwcm9wZXJ0eS4gSWYgcHJlc2VudCwgaW5kaWNhdGluZworCQkJICB0aGF0IEVTQUkgd291bGQgd29yayBpbiB0aGUgc3luY2hyb25vdXMgbW9kZSwgd2hpY2gKKwkJCSAgbWVhbnMgYWxsIHRoZSBzZXR0aW5ncyBmb3IgUmVjZWl2aW5nIHdvdWxkIGJlCisJCQkgIGR1cGxpY2F0ZWQgZnJvbSBUcmFuc21pdGlvbiByZWxhdGVkIHJlZ2lzdGVycy4KKworICAtIGJpZy1lbmRpYW4JCTogSWYgdGhpcyBwcm9wZXJ0eSBpcyBhYnNlbnQsIHRoZSBuYXRpdmUgZW5kaWFuIG1vZGUKKwkJCSAgd2lsbCBiZSBpbiB1c2UgYXMgZGVmYXVsdCwgb3IgdGhlIGJpZyBlbmRpYW4gbW9kZQorCQkJICB3aWxsIGJlIGluIHVzZSBmb3IgYWxsIHRoZSBkZXZpY2UgcmVnaXN0ZXJzLgorCitFeGFtcGxlOgorCitlc2FpOiBlc2FpQDAyMDI0MDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxpbXgzNS1lc2FpIjsKKwlyZWcgPSA8MHgwMjAyNDAwMCAweDQwMDA+OworCWludGVycnVwdHMgPSA8MCA1MSAweDA0PjsKKwljbG9ja3MgPSA8JmNsa3MgMjA4PiwgPCZjbGtzIDExOD4sIDwmY2xrcyAyMDg+OworCWNsb2NrLW5hbWVzID0gImNvcmUiLCAiZXh0YWwiLCAiZnN5cyI7CisJZG1hcyA9IDwmc2RtYSAyMyAyMSAwPiwgPCZzZG1hIDI0IDIxIDA+OworCWRtYS1uYW1lcyA9ICJyeCIsICJ0eCI7CisJZnNsLGZpZm8tZGVwdGggPSA8MTI4PjsKKwlmc2wsZXNhaS1zeW5jaHJvbm91czsKKwliaWctZW5kaWFuOworCXN0YXR1cyA9ICJkaXNhYmxlZCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2ZzbCxzcGRpZi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvZnNsLHNwZGlmLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWVlMzJlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2ZzbCxzcGRpZi50eHQKQEAgLTAsMCArMSw1OCBAQAorRnJlZXNjYWxlIFNvbnkvUGhpbGlwcyBEaWdpdGFsIEludGVyZmFjZSBGb3JtYXQgKFMvUERJRikgQ29udHJvbGxlcgorCitUaGUgRnJlZXNjYWxlIFMvUERJRiBhdWRpbyBibG9jayBpcyBhIHN0ZXJlbyB0cmFuc2NlaXZlciB0aGF0IGFsbG93cyB0aGUKK3Byb2Nlc3NvciB0byByZWNlaXZlIGFuZCB0cmFuc21pdCBkaWdpdGFsIGF1ZGlvIHZpYSBhbiBjb2F4aWFsIGNhYmxlIG9yCithIGZpYnJlIGNhYmxlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZQkJOiBDb21wYXRpYmxlIGxpc3QsIG11c3QgY29udGFpbiAiZnNsLGlteDM1LXNwZGlmIi4KKworICAtIHJlZwkJCTogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZS4KKworICAtIGludGVycnVwdHMJCTogQ29udGFpbnMgdGhlIHNwZGlmIGludGVycnVwdC4KKworICAtIGRtYXMJCTogR2VuZXJpYyBkbWEgZGV2aWNldHJlZSBiaW5kaW5nIGFzIGRlc2NyaWJlZCBpbgorCQkJICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2RtYS50eHQuCisKKyAgLSBkbWEtbmFtZXMJCTogVHdvIGRtYXMgaGF2ZSB0byBiZSBkZWZpbmVkLCAidHgiIGFuZCAicngiLgorCisgIC0gY2xvY2tzCQk6IENvbnRhaW5zIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIGNsb2NrLW5hbWVzLgorCisgIC0gY2xvY2stbmFtZXMJCTogSW5jbHVkZXMgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorCSJjb3JlIgkJICBUaGUgY29yZSBjbG9jayBvZiBzcGRpZiBjb250cm9sbGVyLgorCSJyeHR4PDAtNz4iCSAgQ2xvY2sgc291cmNlIGxpc3QgZm9yIHR4IGFuZCByeCBjbG9jay4KKwkJCSAgVGhpcyBjbG9jayBsaXN0IHNob3VsZCBiZSBpZGVudGljYWwgdG8gdGhlIHNvdXJjZQorCQkJICBsaXN0IGNvbm5lY3RpbmcgdG8gdGhlIHNwZGlmIGNsb2NrIG11eCBpbiAiU1BESUYKKwkJCSAgVHJhbnNjZWl2ZXIgQ2xvY2sgRGlhZ3JhbSIgb2YgU29DIHJlZmVyZW5jZSBtYW51YWwuCisJCQkgIEl0IGNhbiBhbHNvIGJlIHJlZmVycmVkIHRvIFR4Q2xrX1NvdXJjZSBiaXQgb2YKKwkJCSAgcmVnaXN0ZXIgU1BESUZfU1RDLgorCisgICAtIGJpZy1lbmRpYW4JCTogSWYgdGhpcyBwcm9wZXJ0eSBpcyBhYnNlbnQsIHRoZSBuYXRpdmUgZW5kaWFuIG1vZGUKKwkJCSAgd2lsbCBiZSBpbiB1c2UgYXMgZGVmYXVsdCwgb3IgdGhlIGJpZyBlbmRpYW4gbW9kZQorCQkJICB3aWxsIGJlIGluIHVzZSBmb3IgYWxsIHRoZSBkZXZpY2UgcmVnaXN0ZXJzLgorCitFeGFtcGxlOgorCitzcGRpZjogc3BkaWZAMDIwMDQwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDM1LXNwZGlmIjsKKwlyZWcgPSA8MHgwMjAwNDAwMCAweDQwMDA+OworCWludGVycnVwdHMgPSA8MCA1MiAweDA0PjsKKwlkbWFzID0gPCZzZG1hIDE0IDE4IDA+LAorCSAgICAgICA8JnNkbWEgMTUgMTggMD47CisJZG1hLW5hbWVzID0gInJ4IiwgInR4IjsKKworCWNsb2NrcyA9IDwmY2xrcyAxOTc+LCA8JmNsa3MgMz4sCisJICAgICAgIDwmY2xrcyAxOTc+LCA8JmNsa3MgMTA3PiwKKwkgICAgICAgPCZjbGtzIDA+LCA8JmNsa3MgMTE4PiwKKwkgICAgICAgPCZjbGtzIDYyPiwgPCZjbGtzIDEzOT4sCisJICAgICAgIDwmY2xrcyAwPjsKKwljbG9jay1uYW1lcyA9ICJjb3JlIiwgInJ4dHgwIiwKKwkJInJ4dHgxIiwgInJ4dHgyIiwKKwkJInJ4dHgzIiwgInJ4dHg0IiwKKwkJInJ4dHg1IiwgInJ4dHg2IiwKKwkJInJ4dHg3IjsKKworCWJpZy1lbmRpYW47CisJc3RhdHVzID0gIm9rYXkiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9mc2wsc3NpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9mc2wsc3NpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Yjc2YmU0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2ZzbCxzc2kudHh0CkBAIC0wLDAgKzEsODcgQEAKK0ZyZWVzY2FsZSBTeW5jaHJvbm91cyBTZXJpYWwgSW50ZXJmYWNlCisKK1RoZSBTU0kgaXMgYSBzZXJpYWwgZGV2aWNlIHRoYXQgY29tbXVuaWNhdGVzIHdpdGggYXVkaW8gY29kZWNzLiAgSXQgY2FuCitiZSBwcm9ncmFtbWVkIGluIEFDOTcsIEkyUywgbGVmdC1qdXN0aWZpZWQsIG9yIHJpZ2h0LWp1c3RpZmllZCBtb2Rlcy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogICAgICAgQ29tcGF0aWJsZSBsaXN0LCBzaG91bGQgY29udGFpbiBvbmUgb2YgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlczoKKyAgICAgICAgICAgICAgICAgICAgICBmc2wsbXBjODYxMC1zc2kKKyAgICAgICAgICAgICAgICAgICAgICBmc2wsaW14NTEtc3NpCisgICAgICAgICAgICAgICAgICAgICAgZnNsLGlteDM1LXNzaQorICAgICAgICAgICAgICAgICAgICAgIGZzbCxpbXgyMS1zc2kKKy0gY2VsbC1pbmRleDogICAgICAgVGhlIFNTSSwgPDA+ID0gU1NJMSwgPDE+ID0gU1NJMiwgYW5kIHNvIG9uLgorLSByZWc6ICAgICAgICAgICAgICBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlLgorLSBpbnRlcnJ1cHRzOiAgICAgICA8YSBiPiB3aGVyZSBhIGlzIHRoZSBpbnRlcnJ1cHQgbnVtYmVyIGFuZCBiIGlzIGEKKyAgICAgICAgICAgICAgICAgICAgZmllbGQgdGhhdCByZXByZXNlbnRzIGFuIGVuY29kaW5nIG9mIHRoZSBzZW5zZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgbGV2ZWwgaW5mb3JtYXRpb24gZm9yIHRoZSBpbnRlcnJ1cHQuICBUaGlzIHNob3VsZCBiZQorICAgICAgICAgICAgICAgICAgICBlbmNvZGVkIGJhc2VkIG9uIHRoZSBpbmZvcm1hdGlvbiBpbiBzZWN0aW9uIDIpCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBpbnRlcnJ1cHQgY29udHJvbGxlciB5b3UKKyAgICAgICAgICAgICAgICAgICAgaGF2ZS4KKy0gaW50ZXJydXB0LXBhcmVudDogVGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGF0CisgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzIGludGVycnVwdHMgZm9yIHRoaXMgZGV2aWNlLgorLSBmc2wscGxheWJhY2stZG1hOiBQaGFuZGxlIHRvIGEgbm9kZSBmb3IgdGhlIERNQSBjaGFubmVsIHRvIHVzZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgcGxheWJhY2sgb2YgYXVkaW8uICBUaGlzIGlzIHR5cGljYWxseSBkaWN0YXRlZCBieSBTT0MKKyAgICAgICAgICAgICAgICAgICAgZGVzaWduLiAgU2VlIHRoZSBub3RlcyBiZWxvdy4KKy0gZnNsLGNhcHR1cmUtZG1hOiAgUGhhbmRsZSB0byBhIG5vZGUgZm9yIHRoZSBETUEgY2hhbm5lbCB0byB1c2UgZm9yCisgICAgICAgICAgICAgICAgICAgIGNhcHR1cmUgKHJlY29yZGluZykgb2YgYXVkaW8uICBUaGlzIGlzIHR5cGljYWxseSBkaWN0YXRlZAorICAgICAgICAgICAgICAgICAgICBieSBTT0MgZGVzaWduLiAgU2VlIHRoZSBub3RlcyBiZWxvdy4KKy0gZnNsLGZpZm8tZGVwdGg6ICAgVGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgdHJhbnNtaXQgYW5kIHJlY2VpdmUgRklGT3MuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgbnVtYmVyIGlzIHRoZSBtYXhpbXVtIGFsbG93ZWQgdmFsdWUgZm9yIFNGQ1NSW1RGV00wXS4KKy0gZnNsLHNzaS1hc3luY2hyb25vdXM6CisgICAgICAgICAgICAgICAgICAgIElmIHNwZWNpZmllZCwgdGhlIFNTSSBpcyB0byBiZSBwcm9ncmFtbWVkIGluIGFzeW5jaHJvbm91cworICAgICAgICAgICAgICAgICAgICBtb2RlLiAgSW4gdGhpcyBtb2RlLCBwaW5zIFNSQ0ssIFNUQ0ssIFNSRlMsIGFuZCBTVEZTIG11c3QKKyAgICAgICAgICAgICAgICAgICAgYWxsIGJlIGNvbm5lY3RlZCB0byB2YWxpZCBzaWduYWxzLiAgSW4gc3luY2hyb25vdXMgbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgU1JDSyBhbmQgU1JGUyBhcmUgaWdub3JlZC4gIEFzeW5jaHJvbm91cyBtb2RlIGFsbG93cworICAgICAgICAgICAgICAgICAgICBwbGF5YmFjayBhbmQgY2FwdHVyZSB0byB1c2UgZGlmZmVyZW50IHNhbXBsZSBzaXplcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxlIHJhdGVzLiAgU29tZSBkcml2ZXJzIG1heSByZXF1aXJlIHRoYXQgU1JDSyBhbmQgU1RDSworICAgICAgICAgICAgICAgICAgICBiZSBjb25uZWN0ZWQgdG9nZXRoZXIsIGFuZCBTUkZTIGFuZCBTVEZTIGJlIGNvbm5lY3RlZAorICAgICAgICAgICAgICAgICAgICB0b2dldGhlci4gIFRoaXMgd291bGQgc3RpbGwgYWxsb3cgZGlmZmVyZW50IHNhbXBsZSBzaXplcywKKyAgICAgICAgICAgICAgICAgICAgYnV0IG5vdCBkaWZmZXJlbnQgc2FtcGxlIHJhdGVzLgorIC0gY2xvY2tzOiAgICAgICAgICAiaXBnIiAtIFJlcXVpcmVkIGNsb2NrIGZvciB0aGUgU1NJIHVuaXQKKyAgICAgICAgICAgICAgICAgICAgImJhdWQiIC0gUmVxdWlyZWQgY2xvY2sgZm9yIFNTSSBtYXN0ZXIgbW9kZS4gT3RoZXJ3aXNlIHRoaXMKKwkJICAgICAgY2xvY2sgaXMgbm90IHVzZWQKKworUmVxdWlyZWQgYXJlIGFsc28gYWM5NyBsaW5rIGJpbmRpbmdzIGlmIGFjOTcgaXMgdXNlZC4gU2VlCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc29jLWFjOTdsaW5rLnR4dCBmb3IgdGhlIG5lY2Vzc2FyeQorYmluZGluZ3MuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNvZGVjLWhhbmRsZTogICAgIFBoYW5kbGUgdG8gYSAnY29kZWMnIG5vZGUgdGhhdCBkZWZpbmVzIGFuIGF1ZGlvCisgICAgICAgICAgICAgICAgICAgIGNvZGVjIGNvbm5lY3RlZCB0byB0aGlzIFNTSS4gIFRoaXMgbm9kZSBpcyB0eXBpY2FsbHkKKyAgICAgICAgICAgICAgICAgICAgYSBjaGlsZCBvZiBhbiBJMkMgb3Igb3RoZXIgY29udHJvbCBub2RlLgorLSBmc2wsZmlxLXN0cmVhbS1maWx0ZXI6IEJvb2wgcHJvcGVydHkuIERpc2FibGVkIERNQSBhbmQgdXNlIEZJUSBpbnN0ZWFkIHRvCisJCSAgICBmaWx0ZXIgdGhlIGNvZGVjIHN0cmVhbS4gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIHNvbWUgYm9hcmRzCisJCSAgICB3aGVyZSBhbiBpbmNvbXBhdGlibGUgY29kZWMgaXMgY29ubmVjdGVkIHRvIHRoaXMgU1NJLCBlLmcuCisJCSAgICBvbiBwY2ExMDAgYW5kIHBjbTA0My4KKy0gZG1hczoJCSAgICBHZW5lcmljIGRtYSBkZXZpY2V0cmVlIGJpbmRpbmcgYXMgZGVzY3JpYmVkIGluCisJCSAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2RtYS50eHQuCistIGRtYS1uYW1lczoJICAgIFR3byBkbWFzIGhhdmUgdG8gYmUgZGVmaW5lZCwgInR4IiBhbmQgInJ4IiwgaWYgZnNsLGlteC1maXEKKwkJICAgIGlzIG5vdCBkZWZpbmVkLgorLSBmc2wsbW9kZTogICAgICAgICBUaGUgb3BlcmF0aW5nIG1vZGUgZm9yIHRoZSBBQzk3IGludGVyZmFjZSBvbmx5LgorICAgICAgICAgICAgICAgICAgICAiYWM5Ny1zbGF2ZSIgLSBBQzk3IG1vZGUsIFNTSSBpcyBjbG9jayBzbGF2ZQorICAgICAgICAgICAgICAgICAgICAiYWM5Ny1tYXN0ZXIiIC0gQUM5NyBtb2RlLCBTU0kgaXMgY2xvY2sgbWFzdGVyCisKK0NoaWxkICdjb2RlYycgbm9kZSByZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAgICAgICBDb21wYXRpYmxlIGxpc3QsIGNvbnRhaW5zIHRoZSBuYW1lIG9mIHRoZSBjb2RlYworCitDaGlsZCAnY29kZWMnIG5vZGUgb3B0aW9uYWwgcHJvcGVydGllczoKKy0gY2xvY2stZnJlcXVlbmN5OiAgVGhlIGZyZXF1ZW5jeSBvZiB0aGUgaW5wdXQgY2xvY2ssIHdoaWNoIHR5cGljYWxseSBjb21lcworICAgICAgICAgICAgICAgICAgICBmcm9tIGFuIG9uLWJvYXJkIGRlZGljYXRlZCBvc2NpbGxhdG9yLgorCitOb3RlcyBvbiBmc2wscGxheWJhY2stZG1hIGFuZCBmc2wsY2FwdHVyZS1kbWE6CisKK09uIFNPQ3MgdGhhdCBoYXZlIGFuIFNTSSwgc3BlY2lmaWMgRE1BIGNoYW5uZWxzIGFyZSBoYXJkLXdpcmVkIGZvciBwbGF5YmFjaworYW5kIGNhcHR1cmUuICBPbiB0aGUgTVBDODYxMCwgZm9yIGV4YW1wbGUsIFNTSTEgbXVzdCB1c2UgRE1BIGNoYW5uZWwgMCBmb3IKK3BsYXliYWNrIGFuZCBETUEgY2hhbm5lbCAxIGZvciBjYXB0dXJlLiAgU1NJMiBtdXN0IHVzZSBETUEgY2hhbm5lbCAyIGZvcgorcGxheWJhY2sgYW5kIERNQSBjaGFubmVsIDMgZm9yIGNhcHR1cmUuICBUaGUgZGV2ZWxvcGVyIGNhbiBjaG9vc2Ugd2hpY2gKK0RNQSBjb250cm9sbGVyIHRvIHVzZSwgYnV0IHRoZSBjaGFubmVscyB0aGVtc2VsdmVzIGFyZSBoYXJkLXdpcmVkLiAgVGhlCitwdXJwb3NlIG9mIHRoZXNlIHR3byBwcm9wZXJ0aWVzIGlzIHRvIHJlcHJlc2VudCB0aGlzIGhhcmR3YXJlIGRlc2lnbi4KKworVGhlIGRldmljZSB0cmVlIG5vZGVzIGZvciB0aGUgRE1BIGNoYW5uZWxzIHRoYXQgYXJlIHJlZmVyZW5jZWQgYnkKKyJmc2wscGxheWJhY2stZG1hIiBhbmQgImZzbCxjYXB0dXJlLWRtYSIgbXVzdCBiZSBtYXJrZWQgYXMgY29tcGF0aWJsZSB3aXRoCisiZnNsLHNzaS1kbWEtY2hhbm5lbCIuICBUaGUgU09DLXNwZWNpZmljIGNvbXBhdGlibGUgc3RyaW5nIChlLmcuCisiZnNsLG1wYzg2MTAtZG1hLWNoYW5uZWwiKSBjYW4gcmVtYWluLiAgSWYgdGhlc2Ugbm9kZXMgYXJlIGxlZnQgYXMKKyJmc2wsZWxvLWRtYS1jaGFubmVsIiBvciAiZnNsLGVsb3BsdXMtZG1hLWNoYW5uZWwiLCB0aGVuIHRoZSBnZW5lcmljIEVsbyBETUEKK2RyaXZlcnMgKGZzbGRtYSkgd2lsbCBhdHRlbXB0IHRvIHVzZSB0aGVtLCBhbmQgaXQgd2lsbCBjb25mbGljdCB3aXRoIHRoZQorc291bmQgZHJpdmVycy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9mc2wtYXNvYy1jYXJkLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9mc2wtYXNvYy1jYXJkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTU1YzBhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2ZzbC1hc29jLWNhcmQudHh0CkBAIC0wLDAgKzEsODQgQEAKK0ZyZWVzY2FsZSBHZW5lcmljIEFTb0MgU291bmQgQ2FyZCB3aXRoIEFTUkMgc3VwcG9ydAorCitUaGUgRnJlZXNjYWxlIEdlbmVyaWMgQVNvQyBTb3VuZCBDYXJkIGNhbiBiZSB1c2VkLCBpZGVhbGx5LCBmb3IgYWxsIEZyZWVzY2FsZQorU29DcyBjb25uZWN0aW5nIHdpdGggZXh0ZXJuYWwgQ09ERUNzLgorCitUaGUgaWRlYSBvZiB0aGlzIGdlbmVyaWMgc291bmQgY2FyZCBpcyBhIGJpdCBsaWtlIEFTb0MgU2ltcGxlIENhcmQuIEhvd2V2ZXIsCitmb3IgRnJlZXNjYWxlIFNvQ3MgKGVzcGVjaWFsbHkgdGhvc2UgcmVsZWFzZWQgaW4gcmVjZW50IHllYXJzKSwgbW9zdCBvZiB0aGVtCitoYXZlIEFTUkMgKERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9mc2wsYXNyYy50eHQpIGluc2lkZS4gQW5kCit0aGlzIGlzIGEgc3BlY2lmaWMgZmVhdHVyZSB0aGF0IG1pZ2h0IGJlIHBhaW5zdGFraW5nbHkgY29udHJvbGxlZCBhbmQgbWVyZ2VkCitpbnRvIHRoZSBTaW1wbGUgQ2FyZC4KKworU28gaGF2aW5nIHRoaXMgZ2VuZXJpYyBzb3VuZCBjYXJkIGFsbG93cyBhbGwgRnJlZXNjYWxlIFNvQyB1c2VycyB0byBiZW5lZml0Citmcm9tIHRoZSBzaW1wbGlmaWNhdGlvbiBvZiBhIG5ldyBjYXJkIHN1cHBvcnQgYW5kIHRoZSBjYXBhYmlsaXR5IG9mIHRoZSB3aWRlCitzYW1wbGUgcmF0ZXMgc3VwcG9ydCB0aHJvdWdoIEFTUkMuCisKK05vdGU6IFRoZSBjYXJkIGlzIGluaXRpYWxseSBkZXNpZ25lZCBmb3IgdGhvc2Ugc291bmQgY2FyZHMgd2hvIHVzZSBBQyc5NywgSTJTCisgICAgICBhbmQgUENNIERBSSBmb3JtYXRzLiBIb3dldmVyLCBpdCdsbCBiZSBhbHNvIHBvc3NpYmxlIHRvIHN1cHBvcnQgdGhvc2Ugbm9uCisgICAgICBBQyc5Ny9JMlMvUENNIHR5cGUgc291bmQgY2FyZHMsIHN1Y2ggYXMgUy9QRElGIGF1ZGlvIGFuZCBIRE1JIGF1ZGlvLCBhcworICAgICAgbG9uZyBhcyB0aGUgZHJpdmVyIGhhcyBiZWVuIHByb3Blcmx5IHVwZ3JhZGVkLgorCisKK1RoZSBjb21wYXRpYmxlIGxpc3QgZm9yIHRoaXMgZ2VuZXJpYyBzb3VuZCBjYXJkIGN1cnJlbnRseToKKyAiZnNsLGlteC1hdWRpby1hYzk3IgorCisgImZzbCxpbXgtYXVkaW8tY3M0Mjg4OCIKKworICJmc2wsaW14LWF1ZGlvLXdtODk2MiIKKyAoY29tcGF0aWJsZSB3aXRoIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9pbXgtYXVkaW8td204OTYyLnR4dCkKKworICJmc2wsaW14LWF1ZGlvLXNndGw1MDAwIgorIChjb21wYXRpYmxlIHdpdGggRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2lteC1hdWRpby1zZ3RsNTAwMC50eHQpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlCQk6IENvbnRhaW5zIG9uZSBvZiBlbnRyaWVzIGluIHRoZSBjb21wYXRpYmxlIGxpc3QuCisKKyAgLSBtb2RlbAkJOiBUaGUgdXNlci12aXNpYmxlIG5hbWUgb2YgdGhpcyBzb3VuZCBjb21wbGV4CisKKyAgLSBhdWRpby1jcHUJCTogVGhlIHBoYW5kbGUgb2YgYW4gQ1BVIERBSSBjb250cm9sbGVyCisKKyAgLSBhdWRpby1jb2RlYwkJOiBUaGUgcGhhbmRsZSBvZiBhbiBhdWRpbyBjb2RlYworCisgIC0gYXVkaW8tcm91dGluZwk6IEEgbGlzdCBvZiB0aGUgY29ubmVjdGlvbnMgYmV0d2VlbiBhdWRpbyBjb21wb25lbnRzLgorCQkJICBFYWNoIGVudHJ5IGlzIGEgcGFpciBvZiBzdHJpbmdzLCB0aGUgZmlyc3QgYmVpbmcgdGhlCisJCQkgIGNvbm5lY3Rpb24ncyBzaW5rLCB0aGUgc2Vjb25kIGJlaW5nIHRoZSBjb25uZWN0aW9uJ3MKKwkJCSAgc291cmNlLiBUaGVyZSdyZSBhIGZldyBwcmUtZGVzaWduZWQgYm9hcmQgY29ubmVjdG9yczoKKwkJCSAgICogTGluZSBPdXQgSmFjaworCQkJICAgKiBMaW5lIEluIEphY2sKKwkJCSAgICogSGVhZHBob25lIEphY2sKKwkJCSAgICogTWljIEphY2sKKwkJCSAgICogRXh0IFNwaworCQkJICAgKiBBTUlDIChzdGFuZHMgZm9yIEFuYWxvZyBNaWNyb3Bob25lIEphY2spCisJCQkgICAqIERNSUMgKHN0YW5kcyBmb3IgRGlnaXRhbCBNaWNyb3Bob25lIEphY2spCisKKwkJCSAgTm90ZTogVGhlICJNaWMgSmFjayIgYW5kICJBTUlDIiBhcmUgcmVkdW5kYW50IHdoaWxlCisJCQkgICAgICAgIGNvZXhzaXRpbmcgaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGUgb2xkIGJpbmRpbmdzCisJCQkJb2Ygd204OTYyIGFuZCBzZ3RsNTAwMC4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworICAtIGF1ZGlvLWFzcmMJCTogVGhlIHBoYW5kbGUgb2YgQVNSQy4gSXQgY2FuIGJlIGFic2VudCBpZiB0aGVyZSdzIG5vCisJCQkgIG5lZWQgdG8gYWRkIEFTUkMgc3VwcG9ydCB2aWEgRFBDTS4KKworRXhhbXBsZToKK3NvdW5kLWNzNDI4ODggeworCWNvbXBhdGlibGUgPSAiZnNsLGlteC1hdWRpby1jczQyODg4IjsKKwltb2RlbCA9ICJjczQyODg4LWF1ZGlvIjsKKwlhdWRpby1jcHUgPSA8JmVzYWk+OworCWF1ZGlvLWFzcmMgPSA8JmFzcmM+OworCWF1ZGlvLWNvZGVjID0gPCZjczQyODg4PjsKKwlhdWRpby1yb3V0aW5nID0KKwkJIkxpbmUgT3V0IEphY2siLCAiQU9VVDFMIiwKKwkJIkxpbmUgT3V0IEphY2siLCAiQU9VVDFSIiwKKwkJIkxpbmUgT3V0IEphY2siLCAiQU9VVDJMIiwKKwkJIkxpbmUgT3V0IEphY2siLCAiQU9VVDJSIiwKKwkJIkxpbmUgT3V0IEphY2siLCAiQU9VVDNMIiwKKwkJIkxpbmUgT3V0IEphY2siLCAiQU9VVDNSIiwKKwkJIkxpbmUgT3V0IEphY2siLCAiQU9VVDRMIiwKKwkJIkxpbmUgT3V0IEphY2siLCAiQU9VVDRSIiwKKwkJIkFJTjFMIiwgIkxpbmUgSW4gSmFjayIsCisJCSJBSU4xUiIsICJMaW5lIEluIEphY2siLAorCQkiQUlOMkwiLCAiTGluZSBJbiBKYWNrIiwKKwkJIkFJTjJSIiwgIkxpbmUgSW4gSmFjayI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2ZzbC1zYWkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2ZzbC1zYWkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0NGU1ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvZnNsLXNhaS50eHQKQEAgLTAsMCArMSw3MyBAQAorRnJlZXNjYWxlIFN5bmNocm9ub3VzIEF1ZGlvIEludGVyZmFjZSAoU0FJKS4KKworVGhlIFNBSSBpcyBiYXNlZCBvbiBJMlMgbW9kdWxlIHRoYXQgdXNlZCBjb21tdW5pY2F0aW5nIHdpdGggYXVkaW8gY29kZWNzLAord2hpY2ggcHJvdmlkZXMgYSBzeW5jaHJvbm91cyBhdWRpbyBpbnRlcmZhY2UgdGhhdCBzdXBwb3J0cyBmdWxsZHVwbGV4CitzZXJpYWwgaW50ZXJmYWNlcyB3aXRoIGZyYW1lIHN5bmNocm9uaXphdGlvbiBzdWNoIGFzIEkyUywgQUM5NywgVERNLCBhbmQKK2NvZGVjL0RTUCBpbnRlcmZhY2VzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZQkJOiBDb21wYXRpYmxlIGxpc3QsIGNvbnRhaW5zICJmc2wsdmY2MTAtc2FpIiBvcgorCQkJICAiZnNsLGlteDZzeC1zYWkiLgorCisgIC0gcmVnCQkJOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlLgorCisgIC0gY2xvY2tzCQk6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKworICAtIGNsb2NrLW5hbWVzCQk6IE11c3QgaW5jbHVkZSB0aGUgImJ1cyIgZm9yIHJlZ2lzdGVyIGFjY2VzcyBhbmQKKwkJCSAgIm1jbGsxIiwgIm1jbGsyIiwgIm1jbGszIiBmb3IgYml0IGNsb2NrIGFuZCBmcmFtZQorCQkJICBjbG9jayBwcm92aWRpbmcuCisgIC0gZG1hcwkJOiBHZW5lcmljIGRtYSBkZXZpY2V0cmVlIGJpbmRpbmcgYXMgZGVzY3JpYmVkIGluCisJCQkgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvZG1hLnR4dC4KKworICAtIGRtYS1uYW1lcwkJOiBUd28gZG1hcyBoYXZlIHRvIGJlIGRlZmluZWQsICJ0eCIgYW5kICJyeCIuCisKKyAgLSBwaW5jdHJsLW5hbWVzCTogTXVzdCBjb250YWluIGEgImRlZmF1bHQiIGVudHJ5LgorCisgIC0gcGluY3RybC1OTk4JCTogT25lIHByb3BlcnR5IG11c3QgZXhpc3QgZm9yIGVhY2ggZW50cnkgaW4KKwkJCSAgcGluY3RybC1uYW1lcy4gU2VlIC4uL3BpbmN0cmwvcGluY3RybC1iaW5kaW5ncy50eHQKKwkJCSAgZm9yIGRldGFpbHMgb2YgdGhlIHByb3BlcnR5IHZhbHVlcy4KKworICAtIGJpZy1lbmRpYW4JCTogQm9vbGVhbiBwcm9wZXJ0eSwgcmVxdWlyZWQgaWYgYWxsIHRoZSBGVE1fUFdNCisJCQkgIHJlZ2lzdGVycyBhcmUgYmlnLWVuZGlhbiByYXRoZXIgdGhhbiBsaXR0bGUtZW5kaWFuLgorCisgIC0gbHNiLWZpcnN0CQk6IENvbmZpZ3VyZXMgd2hldGhlciB0aGUgTFNCIG9yIHRoZSBNU0IgaXMgdHJhbnNtaXR0ZWQKKwkJCSAgZmlyc3QgZm9yIHRoZSBmaWZvIGRhdGEuIElmIHRoaXMgcHJvcGVydHkgaXMgYWJzZW50LAorCQkJICB0aGUgTVNCIGlzIHRyYW5zbWl0dGVkIGZpcnN0IGFzIGRlZmF1bHQsIG9yIHRoZSBMU0IKKwkJCSAgaXMgdHJhbnNtaXR0ZWQgZmlyc3QuCisKKyAgLSBmc2wsc2FpLXN5bmNocm9ub3VzLXJ4OiBUaGlzIGlzIGEgYm9vbGVhbiBwcm9wZXJ0eS4gSWYgcHJlc2VudCwgaW5kaWNhdGluZworCQkJICB0aGF0IFNBSSB3aWxsIHdvcmsgaW4gdGhlIHN5bmNocm9ub3VzIG1vZGUgKHN5bmMgVHgKKwkJCSAgd2l0aCBSeCkgd2hpY2ggbWVhbnMgYm90aCB0aGUgdHJhbnNpbWl0dGVyIGFuZCB0aGUKKwkJCSAgcmVjZWl2ZXIgd2lsbCBzZW5kIGFuZCByZWNlaXZlIGRhdGEgYnkgZm9sbG93aW5nCisJCQkgIHJlY2VpdmVyJ3MgYml0IGNsb2NrcyBhbmQgZnJhbWUgc3luYyBjbG9ja3MuCisKKyAgLSBmc2wsc2FpLWFzeW5jaHJvbm91czogVGhpcyBpcyBhIGJvb2xlYW4gcHJvcGVydHkuIElmIHByZXNlbnQsIGluZGljYXRpbmcKKwkJCSAgdGhhdCBTQUkgd2lsbCB3b3JrIGluIHRoZSBhc3luY2hyb25vdXMgbW9kZSwgd2hpY2gKKwkJCSAgbWVhbnMgYm90aCB0cmFuc2ltaXR0ZXIgYW5kIHJlY2VpdmVyIHdpbGwgc2VuZCBhbmQKKwkJCSAgcmVjZWl2ZSBkYXRhIGJ5IGZvbGxvd2luZyB0aGVpciBvd24gYml0IGNsb2NrcyBhbmQKKwkJCSAgZnJhbWUgc3luYyBjbG9ja3Mgc2VwYXJhdGVseS4KKworTm90ZToKKy0gSWYgYm90aCBmc2wsc2FpLWFzeW5jaHJvbm91cyBhbmQgZnNsLHNhaS1zeW5jaHJvbm91cy1yeCBhcmUgYWJzZW50LCB0aGUKKyAgZGVmYXVsdCBzeW5jaHJvbm91cyBtb2RlIChzeW5jIFJ4IHdpdGggVHgpIHdpbGwgYmUgdXNlZCwgd2hpY2ggbWVhbnMgYm90aAorICB0cmFuc2ltaXR0ZXIgYW5kIHJlY2VpdmVyIHdpbGwgc2VuZCBhbmQgcmVjZWl2ZSBkYXRhIGJ5IGZvbGxvd2luZyBjbG9ja3MKKyAgb2YgdHJhbnNpbWl0dGVyLgorLSBmc2wsc2FpLWFzeW5jaHJvbm91cyBhbmQgZnNsLHNhaS1zeW5jaHJvbm91cy1yeCBhcmUgZXhjbHVzaXZlLgorCitFeGFtcGxlOgorc2FpMjogc2FpQDQwMDMxMDAwIHsKKwkgICAgICBjb21wYXRpYmxlID0gImZzbCx2ZjYxMC1zYWkiOworCSAgICAgIHJlZyA9IDwweDQwMDMxMDAwIDB4MTAwMD47CisJICAgICAgcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwkgICAgICBwaW5jdHJsLTAgPSA8JnBpbmN0cmxfc2FpMl8xPjsKKwkgICAgICBjbG9ja3MgPSA8JmNsa3MgVkY2MTBfQ0xLX1BMQVRGT1JNX0JVUz4sCisJCSAgICAgPCZjbGtzIFZGNjEwX0NMS19TQUkyPiwKKwkJICAgICA8JmNsa3MgMD4sIDwmY2xrcyAwPjsKKwkgICAgICBjbG9jay1uYW1lcyA9ICJidXMiLCAibWNsazEiLCAibWNsazIiLCAibWNsazMiOworCSAgICAgIGRtYS1uYW1lcyA9ICJ0eCIsICJyeCI7CisJICAgICAgZG1hcyA9IDwmZWRtYTAgMCBWRjYxMF9FRE1BX01VWElEMF9TQUkyX1RYPiwKKwkJICAgPCZlZG1hMCAwIFZGNjEwX0VETUFfTVVYSUQwX1NBSTJfUlg+OworCSAgICAgIGJpZy1lbmRpYW47CisJICAgICAgbHNiLWZpcnN0OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9ndG02MDEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2d0bTYwMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVmYzhjMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9ndG02MDEudHh0CkBAIC0wLDAgKzEsMTMgQEAKK0dUTTYwMSBVTVRTIG1vZGVtIGF1ZGlvIGludGVyZmFjZSBDT0RFQworCitUaGlzIGRldmljZSBoYXMgbm8gY29uZmlndXJhdGlvbiBpbnRlcmZhY2UuIFNhbXBsZSByYXRlIGlzIGZpeGVkIC0gOGtIei4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGUgOiAib3B0aW9uLGd0bTYwMSIKKworRXhhbXBsZToKKworY29kZWM6IGd0bTYwMV9jb2RlYyB7CisJY29tcGF0aWJsZSA9ICJvcHRpb24sZ3RtNjAxIjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvaGRtaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvaGRtaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFhZjdiYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9oZG1pLnR4dApAQCAtMCwwICsxLDE3IEBACitEZXZpY2UtVHJlZSBiaW5kaW5ncyBmb3IgZHVtbXkgSERNSSBjb2RlYworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCS0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJsaW51eCxoZG1pLWF1ZGlvIi4KKworQ09ERUMgb3V0cHV0IHBpbnM6CisgICogVFgKKworQ09ERUMgaW5wdXQgcGluczoKKyAgKiBSWAorCitFeGFtcGxlIG5vZGU6CisKKwloZG1pX2F1ZGlvOiBoZG1pX2F1ZGlvQDAgeworCQljb21wYXRpYmxlID0gImxpbnV4LGhkbWktYXVkaW8iOworCQlzdGF0dXMgPSAib2theSI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9pY3M0MzQzMi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvaWNzNDM0MzIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwMmUzYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvaWNzNDM0MzIudHh0CkBAIC0wLDAgKzEsMTcgQEAKK0ludmVuc2Vuc2UgSUNTLTQzNDMyIE1FTVMgbWljcm9waG9uZSB3aXRoIEkyUyBvdXRwdXQuCisKK1RoZXJlIGFyZSBubyBzb2Z0d2FyZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgZGV2aWNlLCBpbmRlZWQsIHRoZSBvbmx5Citob3N0IGNvbm5lY3Rpb24gaXMgdGhlIEkyUyBpbnRlcmZhY2UuIEFwYXJ0IGZyb20gcmVxdWlyZW1lbnRzIG9uIGNsb2NrCitmcmVxdWVuY3kgKDQ2MCBrSHogdG8gMy4zNzkgTUh6IGFjY29yZGluZyB0byB0aGUgZGF0YSBzaGVldCkgdGhlcmUgbXVzdCBiZQorNjQgY2xvY2sgY3ljbGVzIGluIGVhY2ggc3RlcmVvIG91dHB1dCBmcmFtZTsgMjQgb2YgdGhlIDMyIGF2YWlsYWJsZSBiaXRzCitjb250YWluIGF1ZGlvIGRhdGEuIEEgaGFyZHdhcmUgcGluIGRldGVybWluZXMgaWYgdGhlIGRldmljZSBvdXRwdXRzIGRhdGEKK29uIHRoZSBsZWZ0IG9yIHJpZ2h0IGNoYW5uZWwgb2YgdGhlIEkyUyBmcmFtZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlIDogTXVzdCBiZSAiaW52ZW5zZW5zZSxpY3M0MzQzMiIKKworRXhhbXBsZToKKworCWljczQzNDMyOiBpY3M0MzQzMiB7CisJCWNvbXBhdGlibGUgPSAiaW52ZW5zZW5zZSxpY3M0MzQzMiI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9pbXgtYXVkaW8tZXM4MzI4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9pbXgtYXVkaW8tZXM4MzI4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2I2OGFiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2lteC1hdWRpby1lczgzMjgudHh0CkBAIC0wLDAgKzEsNjAgQEAKK0ZyZWVzY2FsZSBpLk1YIGF1ZGlvIGNvbXBsZXggd2l0aCBFUzgzMjggY29kZWMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSAgICAgICA6ICJmc2wsaW14LWF1ZGlvLWVzODMyOCIKKy0gbW9kZWwgICAgICAgICAgICA6IFRoZSB1c2VyLXZpc2libGUgbmFtZSBvZiB0aGlzIHNvdW5kIGNvbXBsZXgKKy0gc3NpLWNvbnRyb2xsZXIgICA6IFRoZSBwaGFuZGxlIG9mIHRoZSBpLk1YIFNTSSBjb250cm9sbGVyCistIGphY2stZ3BpbyAgICAgICAgOiBPcHRpb25hbCBHUElPIGZvciBoZWFkcGhvbmUgamFjaworLSBhdWRpby1hbXAtc3VwcGx5IDogUG93ZXIgcmVndWxhdG9yIGZvciBzcGVha2VyIGFtcHMKKy0gYXVkaW8tY29kZWMgICAgICA6IFRoZSBwaGFuZGxlIG9mIHRoZSBFUzgzMjggYXVkaW8gY29kZWMKKy0gYXVkaW8tcm91dGluZyAgICA6IEEgbGlzdCBvZiB0aGUgY29ubmVjdGlvbnMgYmV0d2VlbiBhdWRpbyBjb21wb25lbnRzLgorICAgICAgICAgICAgICAgICAgICAgRWFjaCBlbnRyeSBpcyBhIHBhaXIgb2Ygc3RyaW5ncywgdGhlIGZpcnN0IGJlaW5nIHRoZQorCQkgICAgIGNvbm5lY3Rpb24ncyBzaW5rLCB0aGUgc2Vjb25kIGJlaW5nIHRoZSBjb25uZWN0aW9uJ3MKKwkJICAgICBzb3VyY2UuIFZhbGlkIG5hbWVzIGNvdWxkIGJlIHBvd2VyIHN1cHBsaWVzLCBFUzgzMjgKKwkJICAgICBwaW5zLCBhbmQgdGhlIGphY2tzIG9uIHRoZSBib2FyZDoKKworCQkJUG93ZXIgc3VwcGxpZXM6CisJCQkgICAqIGF1ZGlvLWFtcAorCisJCQlFUzgzMjggcGluczoKKwkJCSAgICogTE9VVDEKKwkJCSAgICogTE9VVDIKKwkJCSAgICogUk9VVDEKKwkJCSAgICogUk9VVDIKKwkJCSAgICogTElOUFVUMQorCQkJICAgKiBMSU5QVVQyCisJCQkgICAqIFJJTlBVVDEKKwkJCSAgICogUklOUFVUMgorCQkJICAgKiBNaWMgUEdBCisKKwkJCUJvYXJkIGNvbm5lY3RvcnM6CisJCQkgICAqIEhlYWRwaG9uZQorCQkJICAgKiBTcGVha2VyCisJCQkgICAqIE1pYyBKYWNrCistIG11eC1pbnQtcG9ydCAgICAgOiBUaGUgaW50ZXJuYWwgcG9ydCBvZiB0aGUgaS5NWCBhdWRpbyBtdXhlciAoQVVETVVYKQorLSBtdXgtZXh0LXBvcnQgICAgIDogVGhlIGV4dGVybmFsIHBvcnQgb2YgdGhlIGkuTVggYXVkaW8gbXV4ZXIgKEFVRE1JWCkKKworTm90ZTogVGhlIEFVRE1VWCBwb3J0IG51bWJlcmluZyBzaG91bGQgc3RhcnQgYXQgMSwgd2hpY2ggaXMgY29uc2lzdGVudCB3aXRoCitoYXJkd2FyZSBtYW51YWwuCisKK0V4YW1wbGU6CisKK3NvdW5kIHsKKwljb21wYXRpYmxlID0gImZzbCxpbXgtYXVkaW8tZXM4MzI4IjsKKwltb2RlbCA9ICJpbXgtYXVkaW8tZXM4MzI4IjsKKwlzc2ktY29udHJvbGxlciA9IDwmc3NpMT47CisJYXVkaW8tY29kZWMgPSA8JmNvZGVjPjsKKwlqYWNrLWdwaW8gPSA8JmdwaW81IDE1IDA+OworCWF1ZGlvLWFtcC1zdXBwbHkgPSA8JnJlZ19hdWRpb19hbXA+OworCWF1ZGlvLXJvdXRpbmcgPQorCQkiU3BlYWtlciIsICJMT1VUMiIsCisJCSJTcGVha2VyIiwgIlJPVVQyIiwKKwkJIlNwZWFrZXIiLCAiYXVkaW8tYW1wIiwKKwkJIkhlYWRwaG9uZSIsICJST1VUMSIsCisJCSJIZWFkcGhvbmUiLCAiTE9VVDEiLAorCQkiTElOUFVUMSIsICJNaWMgSmFjayIsCisJCSJSSU5QVVQxIiwgIk1pYyBKYWNrIiwKKwkJIk1pYyBKYWNrIiwgIk1pYyBCaWFzIjsKKwltdXgtaW50LXBvcnQgPSA8MT47CisJbXV4LWV4dC1wb3J0ID0gPDM+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9pbXgtYXVkaW8tc2d0bDUwMDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2lteC1hdWRpby1zZ3RsNTAwMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY4OWRiOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9pbXgtYXVkaW8tc2d0bDUwMDAudHh0CkBAIC0wLDAgKzEsNTYgQEAKK0ZyZWVzY2FsZSBpLk1YIGF1ZGlvIGNvbXBsZXggd2l0aCBTR1RMNTAwMCBjb2RlYworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZQkJOiAiZnNsLGlteC1hdWRpby1zZ3RsNTAwMCIKKworICAtIG1vZGVsCQk6IFRoZSB1c2VyLXZpc2libGUgbmFtZSBvZiB0aGlzIHNvdW5kIGNvbXBsZXgKKworICAtIHNzaS1jb250cm9sbGVyCTogVGhlIHBoYW5kbGUgb2YgdGhlIGkuTVggU1NJIGNvbnRyb2xsZXIKKworICAtIGF1ZGlvLWNvZGVjCQk6IFRoZSBwaGFuZGxlIG9mIHRoZSBTR1RMNTAwMCBhdWRpbyBjb2RlYworCisgIC0gYXVkaW8tcm91dGluZwk6IEEgbGlzdCBvZiB0aGUgY29ubmVjdGlvbnMgYmV0d2VlbiBhdWRpbyBjb21wb25lbnRzLgorCQkJICBFYWNoIGVudHJ5IGlzIGEgcGFpciBvZiBzdHJpbmdzLCB0aGUgZmlyc3QgYmVpbmcgdGhlCisJCQkgIGNvbm5lY3Rpb24ncyBzaW5rLCB0aGUgc2Vjb25kIGJlaW5nIHRoZSBjb25uZWN0aW9uJ3MKKwkJCSAgc291cmNlLiBWYWxpZCBuYW1lcyBjb3VsZCBiZSBwb3dlciBzdXBwbGllcywgU0dUTDUwMDAKKwkJCSAgcGlucywgYW5kIHRoZSBqYWNrcyBvbiB0aGUgYm9hcmQ6CisKKwkJCSAgUG93ZXIgc3VwcGxpZXM6CisJCQkgICAqIE1pYyBCaWFzCisKKwkJCSAgU0dUTDUwMDAgcGluczoKKwkJCSAgICogTUlDX0lOCisJCQkgICAqIExJTkVfSU4KKwkJCSAgICogSFBfT1VUCisJCQkgICAqIExJTkVfT1VUCisKKwkJCSAgQm9hcmQgY29ubmVjdG9yczoKKwkJCSAgICogTWljIEphY2sKKwkJCSAgICogTGluZSBJbiBKYWNrCisJCQkgICAqIEhlYWRwaG9uZSBKYWNrCisJCQkgICAqIExpbmUgT3V0IEphY2sKKwkJCSAgICogRXh0IFNwaworCisgIC0gbXV4LWludC1wb3J0CTogVGhlIGludGVybmFsIHBvcnQgb2YgdGhlIGkuTVggYXVkaW8gbXV4ZXIgKEFVRE1VWCkKKworICAtIG11eC1leHQtcG9ydAk6IFRoZSBleHRlcm5hbCBwb3J0IG9mIHRoZSBpLk1YIGF1ZGlvIG11eGVyCisKK05vdGU6IFRoZSBBVURNVVggcG9ydCBudW1iZXJpbmcgc2hvdWxkIHN0YXJ0IGF0IDEsIHdoaWNoIGlzIGNvbnNpc3RlbnQgd2l0aAoraGFyZHdhcmUgbWFudWFsLgorCitFeGFtcGxlOgorCitzb3VuZCB7CisJY29tcGF0aWJsZSA9ICJmc2wsaW14NTEtYmFiYmFnZS1zZ3RsNTAwMCIsCisJCSAgICAgImZzbCxpbXgtYXVkaW8tc2d0bDUwMDAiOworCW1vZGVsID0gImlteDUxLWJhYmJhZ2Utc2d0bDUwMDAiOworCXNzaS1jb250cm9sbGVyID0gPCZzc2kxPjsKKwlhdWRpby1jb2RlYyA9IDwmc2d0bDUwMDA+OworCWF1ZGlvLXJvdXRpbmcgPQorCQkiTUlDX0lOIiwgIk1pYyBKYWNrIiwKKwkJIk1pYyBKYWNrIiwgIk1pYyBCaWFzIiwKKwkJIkhlYWRwaG9uZSBKYWNrIiwgIkhQX09VVCI7CisJbXV4LWludC1wb3J0ID0gPDE+OworCW11eC1leHQtcG9ydCA9IDwzPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvaW14LWF1ZGlvLXNwZGlmLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9pbXgtYXVkaW8tc3BkaWYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhODRhNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvaW14LWF1ZGlvLXNwZGlmLnR4dApAQCAtMCwwICsxLDM2IEBACitGcmVlc2NhbGUgaS5NWCBhdWRpbyBjb21wbGV4IHdpdGggUy9QRElGIHRyYW5zY2VpdmVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlCQk6ICJmc2wsaW14LWF1ZGlvLXNwZGlmIgorCisgIC0gbW9kZWwJCTogVGhlIHVzZXItdmlzaWJsZSBuYW1lIG9mIHRoaXMgc291bmQgY29tcGxleAorCisgIC0gc3BkaWYtY29udHJvbGxlcgk6IFRoZSBwaGFuZGxlIG9mIHRoZSBpLk1YIFMvUERJRiBjb250cm9sbGVyCisKKworT3B0aW9uYWwgcHJvcGVydGllczoKKworICAtIHNwZGlmLW91dAkJOiBUaGlzIGlzIGEgYm9vbGVhbiBwcm9wZXJ0eS4gSWYgcHJlc2VudCwgdGhlCisJCQkgIHRyYW5zbWl0dGluZyBmdW5jdGlvbiBvZiBTL1BESUYgd2lsbCBiZSBlbmFibGVkLAorCQkJICBpbmRpY2F0aW5nIHRoZXJlJ3MgYSBwaHlzaWNhbCBTL1BESUYgb3V0IGNvbm5lY3RvcgorCQkJICBvciBqYWNrIG9uIHRoZSBib2FyZCBvciBpdCdzIGNvbm5lY3RpbmcgdG8gc29tZQorCQkJICBvdGhlciBJUCBibG9jaywgc3VjaCBhcyBhbiBIRE1JIGVuY29kZXIgb3IKKwkJCSAgZGlzcGxheS1jb250cm9sbGVyLgorCisgIC0gc3BkaWYtaW4JCTogVGhpcyBpcyBhIGJvb2xlYW4gcHJvcGVydHkuIElmIHByZXNlbnQsIHRoZSByZWNlaXZpbmcKKwkJCSAgZnVuY3Rpb24gb2YgUy9QRElGIHdpbGwgYmUgZW5hYmxlZCwgaW5kaWNhdGluZyB0aGVyZQorCQkJICBpcyBhIHBoeXNpY2FsIFMvUERJRiBpbiBjb25uZWN0b3IvamFjayBvbiB0aGUgYm9hcmQuCisKKyogTm90ZTogQXQgbGVhc3Qgb25lIG9mIHRoZXNlIHR3byBwcm9wZXJ0aWVzIHNob3VsZCBiZSBzZXQgaW4gdGhlIERUIGJpbmRpbmcuCisKKworRXhhbXBsZToKKworc291bmQtc3BkaWYgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteC1hdWRpby1zcGRpZiI7CisJbW9kZWwgPSAiaW14LXNwZGlmIjsKKwlzcGRpZi1jb250cm9sbGVyID0gPCZzcGRpZj47CisJc3BkaWYtb3V0OworCXNwZGlmLWluOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9pbXgtYXVkaW8td204OTYyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9pbXgtYXVkaW8td204OTYyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2VhNzFiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2lteC1hdWRpby13bTg5NjIudHh0CkBAIC0wLDAgKzEsNTMgQEAKK0ZyZWVzY2FsZSBpLk1YIGF1ZGlvIGNvbXBsZXggd2l0aCBXTTg5NjIgY29kZWMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGUJCTogImZzbCxpbXgtYXVkaW8td204OTYyIgorCisgIC0gbW9kZWwJCTogVGhlIHVzZXItdmlzaWJsZSBuYW1lIG9mIHRoaXMgc291bmQgY29tcGxleAorCisgIC0gc3NpLWNvbnRyb2xsZXIJOiBUaGUgcGhhbmRsZSBvZiB0aGUgaS5NWCBTU0kgY29udHJvbGxlcgorCisgIC0gYXVkaW8tY29kZWMJCTogVGhlIHBoYW5kbGUgb2YgdGhlIFdNODk2MiBhdWRpbyBjb2RlYworCisgIC0gYXVkaW8tcm91dGluZwk6IEEgbGlzdCBvZiB0aGUgY29ubmVjdGlvbnMgYmV0d2VlbiBhdWRpbyBjb21wb25lbnRzLgorCQkJICBFYWNoIGVudHJ5IGlzIGEgcGFpciBvZiBzdHJpbmdzLCB0aGUgZmlyc3QgYmVpbmcgdGhlCisJCQkgIGNvbm5lY3Rpb24ncyBzaW5rLCB0aGUgc2Vjb25kIGJlaW5nIHRoZSBjb25uZWN0aW9uJ3MKKwkJCSAgc291cmNlLiBWYWxpZCBuYW1lcyBjb3VsZCBiZSBwb3dlciBzdXBwbGllcywgV004OTYyCisJCQkgIHBpbnMsIGFuZCB0aGUgamFja3Mgb24gdGhlIGJvYXJkOgorCisJCQkgIFBvd2VyIHN1cHBsaWVzOgorCQkJICAgKiBNaWMgQmlhcworCisJCQkgIEJvYXJkIGNvbm5lY3RvcnM6CisJCQkgICAqIE1pYyBKYWNrCisJCQkgICAqIEhlYWRwaG9uZSBKYWNrCisJCQkgICAqIEV4dCBTcGsKKworICAtIG11eC1pbnQtcG9ydAk6IFRoZSBpbnRlcm5hbCBwb3J0IG9mIHRoZSBpLk1YIGF1ZGlvIG11eGVyIChBVURNVVgpCisKKyAgLSBtdXgtZXh0LXBvcnQJOiBUaGUgZXh0ZXJuYWwgcG9ydCBvZiB0aGUgaS5NWCBhdWRpbyBtdXhlcgorCitOb3RlOiBUaGUgQVVETVVYIHBvcnQgbnVtYmVyaW5nIHNob3VsZCBzdGFydCBhdCAxLCB3aGljaCBpcyBjb25zaXN0ZW50IHdpdGgKK2hhcmR3YXJlIG1hbnVhbC4KKworRXhhbXBsZToKKworc291bmQgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDZxLXNhYnJlc2Qtd204OTYyIiwKKwkJICAgICAiZnNsLGlteC1hdWRpby13bTg5NjIiOworCW1vZGVsID0gIndtODk2Mi1hdWRpbyI7CisJc3NpLWNvbnRyb2xsZXIgPSA8JnNzaTI+OworCWF1ZGlvLWNvZGVjID0gPCZjb2RlYz47CisJCWF1ZGlvLXJvdXRpbmcgPQorCQkiSGVhZHBob25lIEphY2siLCAiSFBPVVRMIiwKKwkJIkhlYWRwaG9uZSBKYWNrIiwgIkhQT1VUUiIsCisJCSJFeHQgU3BrIiwgIlNQS09VVEwiLAorCQkiRXh0IFNwayIsICJTUEtPVVRSIiwKKwkJIk1JQ0JJQVMiLCAiQU1JQyIsCisJCSJJTjNSIiwgIk1JQ0JJQVMiLAorCQkiRE1JQyIsICJNSUNCSUFTIiwKKwkJIkRNSUNEQVQiLCAiRE1JQyI7CisJbXV4LWludC1wb3J0ID0gPDI+OworCW11eC1leHQtcG9ydCA9IDwzPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvaW14LWF1ZG11eC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvaW14LWF1ZG11eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjMwYTczNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9pbXgtYXVkbXV4LnR4dApAQCAtMCwwICsxLDI4IEBACitGcmVlc2NhbGUgRGlnaXRhbCBBdWRpbyBNdXggKEFVRE1VWCkgZGV2aWNlCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlCQk6ICJmc2wsaW14MjEtYXVkbXV4IiBmb3IgQVVETVVYIHZlcnNpb24gZmlyc3RseSB1c2VkCisJCQkgIG9uIGkuTVgyMSwgb3IgImZzbCxpbXgzMS1hdWRtdXgiIGZvciB0aGUgdmVyc2lvbgorCQkJICBmaXJzdGx5IHVzZWQgb24gaS5NWDMxLgorCisgIC0gcmVnCQkJOiBTaG91bGQgY29udGFpbiBBVURNVVggcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGguCisKK0FuIGluaXRpYWwgY29uZmlndXJhdGlvbiBjYW4gYmUgc2V0dXAgdXNpbmcgY2hpbGQgbm9kZXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgb2Ygb3B0aW9uYWwgY2hpbGQgbm9kZXM6CisKKyAgLSBmc2wsYXVkbXV4LXBvcnQJOiBJbnRlZ2VyIG9mIHRoZSBhdWRtdXggcG9ydCB0aGF0IGlzIGNvbmZpZ3VyZWQgYnkgdGhpcworCQkJICBjaGlsZCBub2RlLgorCisgIC0gZnNsLHBvcnQtY29uZmlnCTogTGlzdCBvZiBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBzcGVjaWZpYyBwb3J0LgorCQkJICBGb3IgaW14MzEtYXVkbXV4IGFuZCBhYm92ZSwgaXQgaXMgYSBsaXN0IG9mIHR1cGxlcworCQkJICA8cHRjciBwZGNyPi4gRm9yIGlteDIxLWF1ZG11eCBpdCBpcyBhIGxpc3Qgb2YgcGNyCisJCQkgIHZhbHVlcy4KKworRXhhbXBsZToKKworYXVkbXV4QDAyMWQ4MDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxpbXg2cS1hdWRtdXgiLCAiZnNsLGlteDMxLWF1ZG11eCI7CisJcmVnID0gPDB4MDIxZDgwMDAgMHg0MDAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvaW5nZW5pYyxqejQ3NDAtaTJzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9pbmdlbmljLGp6NDc0MC1pMnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2MjNkNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvaW5nZW5pYyxqejQ3NDAtaTJzLnR4dApAQCAtMCwwICsxLDIzIEBACitJbmdlbmljIEpaNDc0MCBJMlMgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogImluZ2VuaWMsano0NzQwLWkycyIgb3IgImluZ2VuaWMsano0NzgwLWkycyIKKy0gcmVnIDogSTJTIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCistIGNsb2NrcyA6IEFJQyBhbmQgSTJTIFBMTCBjbG9jayBzcGVjaWZpZXJzLgorLSBjbG9jay1uYW1lczogImFpYyIgYW5kICJpMnMiCistIGRtYXM6IERNQSBjb250cm9sbGVyIHBoYW5kbGUgYW5kIERNQSByZXF1ZXN0IGxpbmUgZm9yIEkyUyBUeCBhbmQgUnggY2hhbm5lbHMKKy0gZG1hLW5hbWVzOiBNdXN0IGJlICJ0eCIgYW5kICJyeCIKKworRXhhbXBsZToKKworaTJzOiBpMnNAMTAwMjAwMDAgeworCWNvbXBhdGlibGUgPSAiaW5nZW5pYyxqejQ3NDAtaTJzIjsKKwlyZWcgPSA8MHgxMDAyMDAwMCAweDk0PjsKKworCWNsb2NrcyA9IDwmY2d1IEpaNDc0MF9DTEtfQUlDPiwgPCZjZ3UgSlo0NzQwX0NMS19JMlNQTEw+OworCWNsb2NrLW5hbWVzID0gImFpYyIsICJpMnMiOworCisJZG1hcyA9IDwmZG1hIDI+LCA8JmRtYSAzPjsKKwlkbWEtbmFtZXMgPSAidHgiLCAicngiOworCit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL21heDk4MDkwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9tYXg5ODA5MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUzYmU2NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9tYXg5ODA5MC50eHQKQEAgLTAsMCArMSw1NyBAQAorTUFYOTgwOTAgYXVkaW8gQ09ERUMKKworVGhpcyBkZXZpY2Ugc3VwcG9ydHMgSTJDIG9ubHkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6ICJtYXhpbSxtYXg5ODA5MCIgb3IgIm1heGltLG1heDk4MDkxIi4KKworLSByZWcgOiBUaGUgSTJDIGFkZHJlc3Mgb2YgdGhlIGRldmljZS4KKworLSBpbnRlcnJ1cHRzIDogVGhlIENPREVDJ3MgaW50ZXJydXB0IG91dHB1dC4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworLSBjbG9ja3M6IFRoZSBwaGFuZGxlIG9mIHRoZSBtYXN0ZXIgY2xvY2sgdG8gdGhlIENPREVDCisKKy0gY2xvY2stbmFtZXM6IFNob3VsZCBiZSAibWNsayIKKworLSBtYXhpbSxkbWljLWZyZXE6IEZyZXF1ZW5jeSBhdCB3aGljaCB0byBjbG9jayBETUlDCisKKy0gbWF4aW0sbWljYmlhczogTWljYmlhcyB2b2x0YWdlIGFwcGxpZXMgdG8gdGhlIGFuYWxvZyBtaWMsIHZhbGlkIHZvbHRhZ2VzIHZhbHVlIGFyZToKKwkwIC0gMi4ydgorCTEgLSAyLjU1dgorCTIgLSAyLjR2CisJMyAtIDIuOHYKKworUGlucyBvbiB0aGUgZGV2aWNlIChmb3IgbGlua2luZyBpbnRvIGF1ZGlvIHJvdXRlcyk6CisKKyAgKiBNSUMxCisgICogTUlDMgorICAqIERNSUNMCisgICogRE1JQ1IKKyAgKiBJTjEKKyAgKiBJTjIKKyAgKiBJTjMKKyAgKiBJTjQKKyAgKiBJTjUKKyAgKiBJTjYKKyAgKiBJTjEyCisgICogSU4zNAorICAqIElONTYKKyAgKiBIUEwKKyAgKiBIUFIKKyAgKiBTUEtMCisgICogU1BLUgorICAqIFJDVkwKKyAgKiBSQ1ZSCisgICogTUlDQklBUworCitFeGFtcGxlOgorCithdWRpby1jb2RlY0AxMCB7CisJY29tcGF0aWJsZSA9ICJtYXhpbSxtYXg5ODA5MCI7CisJcmVnID0gPDB4MTA+OworCWludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8+OworCWludGVycnVwdHMgPSA8VEVHUkFfR1BJTyhILCA0KSBHUElPX0FDVElWRV9ISUdIPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbWF4OTgwOTUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL21heDk4MDk1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMThhNGM4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL21heDk4MDk1LnR4dApAQCAtMCwwICsxLDIyIEBACitNQVg5ODA5NSBhdWRpbyBDT0RFQworCitUaGlzIGRldmljZSBzdXBwb3J0cyBJMkMgb25seS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogIm1heGltLG1heDk4MDk1Ii4KKworLSByZWcgOiBUaGUgSTJDIGFkZHJlc3Mgb2YgdGhlIGRldmljZS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworLSBjbG9ja3M6IFRoZSBwaGFuZGxlIG9mIHRoZSBtYXN0ZXIgY2xvY2sgdG8gdGhlIENPREVDCisKKy0gY2xvY2stbmFtZXM6IFNob3VsZCBiZSAibWNsayIKKworRXhhbXBsZToKKworbWF4OTgwOTU6IGNvZGVjQDExIHsKKwljb21wYXRpYmxlID0gIm1heGltLG1heDk4MDk1IjsKKwlyZWcgPSA8MHgxMT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL21heDk4MzU3YS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbWF4OTgzNTdhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODY0NWEyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL21heDk4MzU3YS50eHQKQEAgLTAsMCArMSwxOCBAQAorTWF4aW0gTUFYOTgzNTdBIGF1ZGlvIERBQworCitUaGlzIG5vZGUgbW9kZWxzIHRoZSBNYXhpbSBNQVg5ODM1N0EgREFDLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlICAgOiAibWF4aW0sbWF4OTgzNTdhIgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBzZG1vZGUtZ3Bpb3MgOiBHUElPIHNwZWNpZmllciBmb3IgdGhlIGNoaXAncyBTRF9NT0RFIHBpbi4KKyAgICAgICAgSWYgdGhpcyBvcHRpb24gaXMgbm90IHNwZWNpZmllZCB0aGVuIGRyaXZlciBkb2VzIG5vdCBtYW5hZ2UKKyAgICAgICAgdGhlIHBpbiBzdGF0ZSAoZS5nLiBjaGlwIGlzIGFsd2F5cyBvbikuCisKK0V4YW1wbGU6CisKK21heDk4MzU3YSB7CisJY29tcGF0aWJsZSA9ICJtYXhpbSxtYXg5ODM1N2EiOworCXNkbW9kZS1ncGlvcyA9IDwmcWNvbV9waW5tdXggMjUgMD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL21heDk4OTI1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9tYXg5ODkyNS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdiZTYzZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9tYXg5ODkyNS50eHQKQEAgLTAsMCArMSwyMiBAQAorbWF4OTg5MjUgYXVkaW8gQ09ERUMKKworVGhpcyBkZXZpY2Ugc3VwcG9ydHMgSTJDLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZSA6ICJtYXhpbSxtYXg5ODkyNSIKKworICAtIHZtb24tc2xvdC1ubyA6IHNsb3QgbnVtYmVyIHVzZWQgdG8gc2VuZCB2b2x0YWdlIGluZm9ybWF0aW9uCisKKyAgLSBpbW9uLXNsb3Qtbm8gOiBzbG90IG51bWJlciB1c2VkIHRvIHNlbmQgY3VycmVudCBpbmZvcm1hdGlvbgorCisgIC0gcmVnIDogdGhlIEkyQyBhZGRyZXNzIG9mIHRoZSBkZXZpY2UgZm9yIEkyQworCitFeGFtcGxlOgorCitjb2RlYzogbWF4OTg5MjVAMWEgeworCWNvbXBhdGlibGUgPSAibWF4aW0sbWF4OTg5MjUiOworCXZtb24tc2xvdC1ubyA9IDwwPjsKKwlpbW9uLXNsb3Qtbm8gPSA8Mj47CisJcmVnID0gPDB4MWE+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9tcnZsLHB4YS1zc3AudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL21ydmwscHhhLXNzcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRjOWJhNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9tcnZsLHB4YS1zc3AudHh0CkBAIC0wLDAgKzEsMjggQEAKK01hcnZlbGwgUFhBIFNTUCBDUFUgREFJIGJpbmRpbmdzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKwljb21wYXRpYmxlCU11c3QgYmUgIm1ydmwscHhhLXNzcC1kYWkiCisJcG9ydAkJQSBwaGFuZGxlIHJlZmVyZW5jZSB0byBhIFBYQSBzc3AgdXBzdHJlYW0gZGV2aWNlCisKK0V4YW1wbGU6CisKKwkvKiB1cHN0cmVhbSBkZXZpY2UgKi8KKworCXNzcDA6IHNzcEA0MTAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAibXJ2bCxweGEzeHgtc3NwIjsKKwkJcmVnID0gPDB4NDEwMDAwMDAgMHg0MD47CisJCWludGVycnVwdHMgPSA8MjQ+OworCQljbG9jay1uYW1lcyA9ICJweGEyN3gtc3NwLjAiOworCQlkbWFzID0gPCZkbWEgMTMKKwkJCSZkbWEgMTQ+OworCQlkbWEtbmFtZXMgPSAicngiLCAidHgiOworCX07CisKKwkvKiBEQUkgYXMgdXNlciAqLworCisJc3NwX2RhaTA6IHNzcF9kYWlAMCB7CisJCWNvbXBhdGlibGUgPSAibXJ2bCxweGEtc3NwLWRhaSI7CisJCXBvcnQgPSA8JnNzcDA+OworCX07CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9tcnZsLHB4YTJ4eC1wY20udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL21ydmwscHhhMnh4LXBjbS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTUxZmJiOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9tcnZsLHB4YTJ4eC1wY20udHh0CkBAIC0wLDAgKzEsMTUgQEAKK0RUIGJpbmRpbmdzIGZvciBBUk0gUFhBMnh4IFBDTSBwbGF0Zm9ybSBkcml2ZXIKKworVGhpcyBpcyBqdXN0IGEgZHVtbXkgZHJpdmVyIHRoYXQgcmVnaXN0ZXJzIHRoZSBQWEEgQVNvQyBwbGF0Zm9ybSBkcml2ZXIuCitJdCBkb2VzIG5vdCBoYXZlIGFueSByZXNvdXJjZXMgYXNzaWduZWQuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKwktIGNvbXBhdGlibGUJCSdtcnZsLHB4YS1wY20tYXVkaW8nCisKK0V4YW1wbGU6CisKKwlweGFfcGNtX2F1ZGlvOiBzbmRfc29jX3B4YV9hdWRpbyB7CisJCWNvbXBhdGlibGUgPSAibXJ2bCxweGEtcGNtLWF1ZGlvIjsKKwl9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbXQ4MTczLW1heDk4MDkwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9tdDgxNzMtbWF4OTgwOTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxOWU5N2MKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbXQ4MTczLW1heDk4MDkwLnR4dApAQCAtMCwwICsxLDE1IEBACitNVDgxNzMgd2l0aCBNQVg5ODA5MCBDT0RFQworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogIm1lZGlhdGVrLG10ODE3My1tYXg5ODA5MCIKKy0gbWVkaWF0ZWssYXVkaW8tY29kZWM6IHRoZSBwaGFuZGxlIG9mIHRoZSBNQVg5ODA5MCBhdWRpbyBjb2RlYworLSBtZWRpYXRlayxwbGF0Zm9ybTogdGhlIHBoYW5kbGUgb2YgTVQ4MTczIEFTb0MgcGxhdGZvcm0KKworRXhhbXBsZToKKworCXNvdW5kIHsKKwkJY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtbWF4OTgwOTAiOworCQltZWRpYXRlayxhdWRpby1jb2RlYyA9IDwmbWF4OTgwOTA+OworCQltZWRpYXRlayxwbGF0Zm9ybSA9IDwmYWZlPjsKKwl9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbXQ4MTczLXJ0NTY1MC1ydDU2NzYudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL210ODE3My1ydDU2NTAtcnQ1Njc2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjA1Y2U5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL210ODE3My1ydDU2NTAtcnQ1Njc2LnR4dApAQCAtMCwwICsxLDE1IEBACitNVDgxNzMgd2l0aCBSVDU2NTAgUlQ1Njc2IENPREVDUworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogIm1lZGlhdGVrLG10ODE3My1ydDU2NTAtcnQ1Njc2IgorLSBtZWRpYXRlayxhdWRpby1jb2RlYzogdGhlIHBoYW5kbGVzIG9mIHJ0NTY1MCBhbmQgcnQ1Njc2IGNvZGVjcworLSBtZWRpYXRlayxwbGF0Zm9ybTogdGhlIHBoYW5kbGUgb2YgTVQ4MTczIEFTb0MgcGxhdGZvcm0KKworRXhhbXBsZToKKworCXNvdW5kIHsKKwkJY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtcnQ1NjUwLXJ0NTY3NiI7CisJCW1lZGlhdGVrLGF1ZGlvLWNvZGVjID0gPCZydDU2NTAgJnJ0NTY3Nj47CisJCW1lZGlhdGVrLHBsYXRmb3JtID0gPCZhZmU+OworCX07CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9tdGstYWZlLXBjbS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbXRrLWFmZS1wY20udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMDJjN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbXRrLWFmZS1wY20udHh0CkBAIC0wLDAgKzEsNDUgQEAKK01lZGlhdGVrIEFGRSBQQ00gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1hZmUtcGNtIjsKKy0gcmVnOiByZWdpc3RlciBsb2NhdGlvbiBhbmQgc2l6ZQorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBBRkUgaW50ZXJydXB0CistIGNsb2NrLW5hbWVzOiBzaG91bGQgaGF2ZSB0aGVzZSBjbG9jayBuYW1lczoKKwkJImluZnJhX3N5c19hdWRpb19jbGsiLAorCQkidG9wX3Bkbl9hdWRpbyIsCisJCSJ0b3BfcGRuX2F1ZF9pbnRidXMiLAorCQkiYmNrMCIsCisJCSJiY2sxIiwKKwkJImkyczBfbSIsCisJCSJpMnMxX20iLAorCQkiaTJzMl9tIiwKKwkJImkyczNfbSIsCisJCSJpMnMzX2IiOworCitFeGFtcGxlOgorCisJYWZlOiBtdDgxNzMtYWZlLXBjbUAxMTIyMDAwMCAgeworCQljb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1hZmUtcGNtIjsKKwkJcmVnID0gPDAgMHgxMTIyMDAwMCAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSAxMzQgSVJRX1RZUEVfRURHRV9GQUxMSU5HPjsKKwkJY2xvY2tzID0gPCZpbmZyYWNmZyBJTkZSQV9BVURJTz4sCisJCQk8JnRvcGNrZ2VuIFRPUF9BVURJT19TRUw+LAorCQkJPCZ0b3Bja2dlbiBUT1BfQVVEX0lOVEJVU19TRUw+LAorCQkJPCZ0b3Bja2dlbiBUT1BfQVBMTDFfRElWMD4sCisJCQk8JnRvcGNrZ2VuIFRPUF9BUExMMl9ESVYwPiwKKwkJCTwmdG9wY2tnZW4gVE9QX0kyUzBfTV9DS19TRUw+LAorCQkJPCZ0b3Bja2dlbiBUT1BfSTJTMV9NX0NLX1NFTD4sCisJCQk8JnRvcGNrZ2VuIFRPUF9JMlMyX01fQ0tfU0VMPiwKKwkJCTwmdG9wY2tnZW4gVE9QX0kyUzNfTV9DS19TRUw+LAorCQkJPCZ0b3Bja2dlbiBUT1BfSTJTM19CX0NLX1NFTD47CisJCWNsb2NrLW5hbWVzID0gImluZnJhX3N5c19hdWRpb19jbGsiLAorCQkJCSJ0b3BfcGRuX2F1ZGlvIiwKKwkJCQkidG9wX3Bkbl9hdWRfaW50YnVzIiwKKwkJCQkiYmNrMCIsCisJCQkJImJjazEiLAorCQkJCSJpMnMwX20iLAorCQkJCSJpMnMxX20iLAorCQkJCSJpMnMyX20iLAorCQkJCSJpMnMzX20iLAorCQkJCSJpMnMzX2IiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbXZlYnUtYXVkaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL212ZWJ1LWF1ZGlvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjhjMDdjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL212ZWJ1LWF1ZGlvLnR4dApAQCAtMCwwICsxLDM0IEBACisqIG12ZWJ1IChLaXJrd29vZCwgRG92ZSwgQXJtYWRhIDM3MCkgYXVkaW8gY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6CisgICJtYXJ2ZWxsLGtpcmt3b29kLWF1ZGlvIiBmb3IgS2lya3dvb2QgcGxhdGZvcm1zCisgICJtYXJ2ZWxsLGRvdmUtYXVkaW8iIGZvciBEb3ZlIHBsYXRmb3JtcworICAibWFydmVsbCxhcm1hZGEzNzAtYXVkaW8iIGZvciBBcm1hZGEgMzcwIHBsYXRmb3JtcworCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICByZWdpb24uCisKKy0gaW50ZXJydXB0czoKKyAgd2l0aCAibWFydmVsbCxraXJrd29vZC1hdWRpbyIsIHRoZSBhdWRpbyBpbnRlcnJ1cHQKKyAgd2l0aCAibWFydmVsbCxkb3ZlLWF1ZGlvIiwgYSBsaXN0IG9mIHR3byBpbnRlcnJ1cHRzLCB0aGUgZmlyc3QgZm9yCisgIHRoZSBkYXRhIGZsb3csIGFuZCB0aGUgc2Vjb25kIGZvciBlcnJvcnMuCisKKy0gY2xvY2tzOiBvbmUgb3IgdHdvIHBoYW5kbGVzLgorICBUaGUgZmlyc3Qgb25lIGlzIG1hbmRhdG9yeSBhbmQgZGVmaW5lcyB0aGUgaW50ZXJuYWwgY2xvY2suCisgIFRoZSBzZWNvbmQgb25lIGlzIG9wdGlvbmFsIGFuZCBkZWZpbmVzIGFuIGV4dGVybmFsIGNsb2NrLgorCistIGNsb2NrLW5hbWVzOiBuYW1lcyBhc3NvY2lhdGVkIHRvIHRoZSBjbG9ja3M6CisJImludGVybmFsIiBmb3IgdGhlIGludGVybmFsIGNsb2NrCisJImV4dGNsayIgZm9yIHRoZSBleHRlcm5hbCBjbG9jaworCitFeGFtcGxlOgorCitpMnMxOiBhdWRpby1jb250cm9sbGVyQGI0MDAwIHsKKwljb21wYXRpYmxlID0gIm1hcnZlbGwsZG92ZS1hdWRpbyI7CisJcmVnID0gPDB4YjQwMDAgMHgyMjEwPjsKKwlpbnRlcnJ1cHRzID0gPDIxPiwgPDIyPjsKKwljbG9ja3MgPSA8JmdhdGVfY2xrIDEzPjsKKwljbG9jay1uYW1lcyA9ICJpbnRlcm5hbCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL214cy1hdWRpby1zZ3RsNTAwMC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbXhzLWF1ZGlvLXNndGw1MDAwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDFjNTE4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL214cy1hdWRpby1zZ3RsNTAwMC50eHQKQEAgLTAsMCArMSwxNyBAQAorKiBGcmVlc2NhbGUgTVhTIGF1ZGlvIGNvbXBsZXggd2l0aCBTR1RMNTAwMCBjb2RlYworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiZnNsLG14cy1hdWRpby1zZ3RsNTAwMCIKKy0gbW9kZWw6IFRoZSB1c2VyLXZpc2libGUgbmFtZSBvZiB0aGlzIHNvdW5kIGNvbXBsZXgKKy0gc2FpZi1jb250cm9sbGVyczogVGhlIHBoYW5kbGUgbGlzdCBvZiB0aGUgTVhTIFNBSUYgY29udHJvbGxlcgorLSBhdWRpby1jb2RlYzogVGhlIHBoYW5kbGUgb2YgdGhlIFNHVEw1MDAwIGF1ZGlvIGNvZGVjCisKK0V4YW1wbGU6CisKK3NvdW5kIHsKKwljb21wYXRpYmxlID0gImZzbCxpbXgyOC1ldmstc2d0bDUwMDAiLAorCQkgICAgICJmc2wsbXhzLWF1ZGlvLXNndGw1MDAwIjsKKwltb2RlbCA9ICJpbXgyOC1ldmstc2d0bDUwMDAiOworCXNhaWYtY29udHJvbGxlcnMgPSA8JnNhaWYwICZzYWlmMT47CisJYXVkaW8tY29kZWMgPSA8JnNndGw1MDAwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbXhzLXNhaWYudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL214cy1zYWlmLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YmEwN2ExCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL214cy1zYWlmLnR4dApAQCAtMCwwICsxLDQxIEBACisqIEZyZWVzY2FsZSBNWFMgU2VyaWFsIEF1ZGlvIEludGVyZmFjZSAoU0FJRikKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJmc2wsPGNoaXA+LXNhaWYiCistIHJlZzogU2hvdWxkIGNvbnRhaW4gcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gRVJST1IgaW50ZXJydXB0IG51bWJlcgorLSBkbWFzOiBETUEgc3BlY2lmaWVyLCBjb25zaXN0aW5nIG9mIGEgcGhhbmRsZSB0byBETUEgY29udHJvbGxlciBub2RlCisgIGFuZCBTQUlGIERNQSBjaGFubmVsIElELgorICBSZWZlciB0byBkbWEudHh0IGFuZCBmc2wtbXhzLWRtYS50eHQgZm9yIGRldGFpbHMuCistIGRtYS1uYW1lczogTXVzdCBiZSAicngtdHgiLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBmc2wsc2FpZi1tYXN0ZXI6IHBoYW5kbGUgdG8gdGhlIG1hc3RlciBTQUlGLiAgSXQncyBvbmx5IHJlcXVpcmVkIGZvcgorICB0aGUgc2xhdmUgU0FJRi4KKworTm90ZTogRWFjaCBTQUlGIGNvbnRyb2xsZXIgc2hvdWxkIGhhdmUgYW4gYWxpYXMgY29ycmVjdGx5IG51bWJlcmVkCitpbiAiYWxpYXNlcyIgbm9kZS4KKworRXhhbXBsZToKKworYWxpYXNlcyB7CisJc2FpZjAgPSAmc2FpZjA7CisJc2FpZjEgPSAmc2FpZjE7Cit9OworCitzYWlmMDogc2FpZkA4MDA0MjAwMCB7CisJY29tcGF0aWJsZSA9ICJmc2wsaW14Mjgtc2FpZiI7CisJcmVnID0gPDB4ODAwNDIwMDAgMjAwMD47CisJaW50ZXJydXB0cyA9IDw1OT47CisJZG1hcyA9IDwmZG1hX2FwYnggND47CisJZG1hLW5hbWVzID0gInJ4LXR4IjsKK307CisKK3NhaWYxOiBzYWlmQDgwMDQ2MDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxpbXgyOC1zYWlmIjsKKwlyZWcgPSA8MHg4MDA0NjAwMCAyMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDU4PjsKKwlkbWFzID0gPCZkbWFfYXBieCA1PjsKKwlkbWEtbmFtZXMgPSAicngtdHgiOworCWZzbCxzYWlmLW1hc3RlciA9IDwmc2FpZjA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9uYXU4ODI1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9uYXU4ODI1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzM3NDIzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL25hdTg4MjUudHh0CkBAIC0wLDAgKzEsMTAyIEBACitOdXZvdG9uIE5BVTg4MjUgYXVkaW8gY29kZWMKKworVGhpcyBkZXZpY2Ugc3VwcG9ydHMgSTJDIG9ubHkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZSA6IE11c3QgYmUgIm51dm90b24sbmF1ODgyNSIKKworICAtIHJlZyA6IHRoZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlLiBUaGlzIGlzIGVpdGhlciAweDFhIChDU0I9MCkgb3IgMHgxYiAoQ1NCPTEpLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorICAtIG51dm90b24samtkZXQtZW5hYmxlOiBFbmFibGUgamFjayBkZXRlY3Rpb24gdmlhIEpLREVUIHBpbi4KKyAgLSBudXZvdG9uLGprZGV0LXB1bGwtZW5hYmxlOiBFbmFibGUgSktERVQgcGluIHB1bGwuIElmIHNldCAtIHBpbiBwdWxsIGVuYWJsZWQsCisgICAgICBvdGhlcndpc2UgcGluIGluIGhpZ2ggaW1wZWRhbmNlIHN0YXRlLgorICAtIG51dm90b24samtkZXQtcHVsbC11cDogUHVsbC11cCBKS0RFVCBwaW4uIElmIHNldCB0aGVuIEpLREVUIHBpbiBpcyBwdWxsIHVwLCBvdGhlcndpc2UgcHVsbCBkb3duLgorICAtIG51dm90b24samtkZXQtcG9sYXJpdHk6IEpLREVUIHBpbiBwb2xhcml0eS4gMCAtIGFjdGl2ZSBoaWdoLCAxIC0gYWN0aXZlIGxvdy4KKworICAtIG51dm90b24sdnJlZi1pbXBlZGFuY2U6IFZSRUYgSW1wZWRhbmNlIHNlbGVjdGlvbgorICAgICAgMCAtIE9wZW4KKyAgICAgIDEgLSAyNSBrT2htCisgICAgICAyIC0gMTI1IGtPaG0KKyAgICAgIDMgLSAyLjUga09obQorCisgIC0gbnV2b3RvbixtaWNiaWFzLXZvbHRhZ2U6IE1pY2JpYXMgdm9sdGFnZSBsZXZlbC4KKyAgICAgIDAgLSBWRERBCisgICAgICAxIC0gVkREQQorICAgICAgMiAtIFZEREEgKiAxLjEKKyAgICAgIDMgLSBWRERBICogMS4yCisgICAgICA0IC0gVkREQSAqIDEuMworICAgICAgNSAtIFZEREEgKiAxLjQKKyAgICAgIDYgLSBWRERBICogMS41MworICAgICAgNyAtIFZEREEgKiAxLjUzCisKKyAgLSBudXZvdG9uLHNhci10aHJlc2hvbGQtbnVtOiBOdW1iZXIgb2YgYnV0dG9ucyBzdXBwb3J0ZWQKKyAgLSBudXZvdG9uLHNhci10aHJlc2hvbGQ6IEltcGVkYW5jZSB0aHJlc2hvbGQgZm9yIGVhY2ggYnV0dG9uLiBBcnJheSB0aGF0IGNvbnRhaW5zIHVwIHRvIDggYnV0dG9ucyBjb25maWd1cmF0aW9uLiBTQVIgdmFsdWUgaXMgY2FsY3VsYXRlZCBhcworICAgIFNBUiA9IDI1NSAqIE1JQ0JJQVMgLyBTQVJfVk9MVEFHRSAqIFIgLyAoMjAwMCArIFIpCisgICAgd2hlcmUgTUlDQklBUyBpcyBjb25maWd1cmVkIGJ5ICdudXZvdG9uLG1pY2JpYXMtdm9sdGFnZScsIFNBUl9WT0xUQUdFIGlzIGNvbmZpZ3VyZWQgYnkgJ251dm90b24sc2FyLXZvbHRhZ2UnLCBSIC0gYnV0dG9uIGltcGVkYW5jZS4KKyAgICBSZWZlciBkYXRhc2hlZXQgc2VjdGlvbiAxMC4yIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRocmVzaG9sZCBjYWxjdWxhdGlvbi4KKworICAtIG51dm90b24sc2FyLWh5c3RlcmVzaXM6IEJ1dHRvbiBpbXBlZGFuY2UgbWVhc3VyZW1lbnQgaHlzdGVyZXNpcy4KKworICAtIG51dm90b24sc2FyLXZvbHRhZ2U6IFJlZmVyZW5jZSB2b2x0YWdlIGZvciBidXR0b24gaW1wZWRhbmNlIG1lYXN1cmVtZW50LgorICAgICAgMCAtIFZEREEKKyAgICAgIDEgLSBWRERBCisgICAgICAyIC0gVkREQSAqIDEuMQorICAgICAgMyAtIFZEREEgKiAxLjIKKyAgICAgIDQgLSBWRERBICogMS4zCisgICAgICA1IC0gVkREQSAqIDEuNAorICAgICAgNiAtIFZEREEgKiAxLjUzCisgICAgICA3IC0gVkREQSAqIDEuNTMKKworICAtIG51dm90b24sc2FyLWNvbXBhcmUtdGltZTogU0FSIGNvbXBhcmUgdGltZQorICAgICAgMCAtIDUwMCBucworICAgICAgMSAtIDEgdXMKKyAgICAgIDIgLSAyIHVzCisgICAgICAzIC0gNCB1cworCisgIC0gbnV2b3RvbixzYXItc2FtcGxpbmctdGltZTogU0FSIHNhbXBsaW5nIHRpbWUKKyAgICAgIDAgLSAyIHVzCisgICAgICAxIC0gNCB1cworICAgICAgMiAtIDggdXMKKyAgICAgIDMgLSAxNiB1cworCisgIC0gbnV2b3RvbixzaG9ydC1rZXktZGVib3VuY2U6IEJ1dHRvbiBzaG9ydCBrZXkgcHJlc3MgZGVib3VuY2UgdGltZS4KKyAgICAgIDAgLSAzMCBtcworICAgICAgMSAtIDUwIG1zCisgICAgICAyIC0gMTAwIG1zCisgICAgICAzIC0gMzAgbXMKKworICAtIG51dm90b24samFjay1pbnNlcnQtZGVib3VuY2U6IG51bWJlciBmcm9tIDAgdG8gNyB0aGF0IHNldHMgZGVib3VuY2UgdGltZSB0byAyXihuKzIpIG1zCisgIC0gbnV2b3RvbixqYWNrLWVqZWN0LWRlYm91bmNlOiBudW1iZXIgZnJvbSAwIHRvIDcgdGhhdCBzZXRzIGRlYm91bmNlIHRpbWUgdG8gMl4obisyKSBtcworCisgIC0gY2xvY2tzOiBsaXN0IG9mIHBoYW5kbGUgYW5kIGNsb2NrIHNwZWNpZmllciBwYWlycyBhY2NvcmRpbmcgdG8gY29tbW9uIGNsb2NrIGJpbmRpbmdzIGZvciB0aGUKKyAgICAgIGNsb2NrcyBkZXNjcmliZWQgaW4gY2xvY2stbmFtZXMKKyAgLSBjbG9jay1uYW1lczogc2hvdWxkIGluY2x1ZGUgIm1jbGsiIGZvciB0aGUgTUNMSyBtYXN0ZXIgY2xvY2sKKworRXhhbXBsZToKKworICBoZWFkc2V0OiBuYXU4ODI1QDFhIHsKKyAgICAgIGNvbXBhdGlibGUgPSAibnV2b3RvbixuYXU4ODI1IjsKKyAgICAgIHJlZyA9IDwweDFhPjsKKyAgICAgIGludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8+OworICAgICAgaW50ZXJydXB0cyA9IDxURUdSQV9HUElPKEUsIDYpIElSUV9UWVBFX0xFVkVMX0xPVz47CisgICAgICBudXZvdG9uLGprZGV0LWVuYWJsZTsKKyAgICAgIG51dm90b24samtkZXQtcHVsbC1lbmFibGU7CisgICAgICBudXZvdG9uLGprZGV0LXB1bGwtdXA7CisgICAgICBudXZvdG9uLGprZGV0LXBvbGFyaXR5ID0gPEdQSU9fQUNUSVZFX0xPVz47CisgICAgICBudXZvdG9uLHZyZWYtaW1wZWRhbmNlID0gPDI+OworICAgICAgbnV2b3RvbixtaWNiaWFzLXZvbHRhZ2UgPSA8Nj47CisgICAgICAvLyBTZXR1cCA0IGJ1dHRvbnMgaW1wZWRhbmNlIGFjY29yZGluZyB0byBBbmRyb2lkIHNwZWNpZmljYXRpb24KKyAgICAgIG51dm90b24sc2FyLXRocmVzaG9sZC1udW0gPSA8ND47CisgICAgICBudXZvdG9uLHNhci10aHJlc2hvbGQgPSA8MHhjIDB4MWUgMHgzOCAweDYwPjsKKyAgICAgIG51dm90b24sc2FyLWh5c3RlcmVzaXMgPSA8MT47CisgICAgICBudXZvdG9uLHNhci12b2x0YWdlID0gPDA+OworICAgICAgbnV2b3RvbixzYXItY29tcGFyZS10aW1lID0gPDA+OworICAgICAgbnV2b3RvbixzYXItc2FtcGxpbmctdGltZSA9IDwwPjsKKyAgICAgIG51dm90b24sc2hvcnQta2V5LWRlYm91bmNlID0gPDI+OworICAgICAgbnV2b3RvbixqYWNrLWluc2VydC1kZWJvdW5jZSA9IDw3PjsKKyAgICAgIG51dm90b24samFjay1lamVjdC1kZWJvdW5jZSA9IDw3PjsKKworICAgICAgY2xvY2stbmFtZXMgPSAibWNsayI7CisgICAgICBjbG9ja3MgPSA8JnRlZ3JhX2NhciBURUdSQTIxMF9DTEtfQ0xLX09VVF8yPjsKKyAgfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9ub2tpYSxyeDUxLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9ub2tpYSxyeDUxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmY5M2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL25va2lhLHJ4NTEudHh0CkBAIC0wLDAgKzEsMjcgQEAKKyogTm9raWEgTjkwMCBhdWRpbyBzZXR1cAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgY29udGFpbiAibm9raWEsbjkwMC1hdWRpbyIKKy0gbm9raWEsY3B1LWRhaTogcGhhbmRsZSBmb3IgdGhlIE1jQlNQIG5vZGUKKy0gbm9raWEsYXVkaW8tY29kZWM6IHBoYW5kbGVzIGZvciB0aGUgbWFpbiBUTFYzMjBBSUMzWCBub2RlIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgIGF1eGlsaWFyeSBUTFYzMjBBSUMzWCBub2RlIChpbiB0aGlzIG9yZGVyKQorLSBub2tpYSxoZWFkcGhvbmUtYW1wbGlmaWVyOiBwaGFuZGxlIGZvciB0aGUgVFBBNjEzMEEyIG5vZGUKKy0gdHZvdXQtc2VsZWN0aW9uLWdwaW9zOiBHUElPIGZvciB0dm91dCBzZWxlY3Rpb24KKy0gamFjay1kZXRlY3Rpb24tZ3Bpb3M6IEdQSU8gZm9yIGphY2sgZGV0ZWN0aW9uCistIGVjaS1zd2l0Y2gtZ3Bpb3M6IEdQSU8gZm9yIEVDSSAoRW5oYW5jZW1lbnQgQ29udHJvbCBJbnRlcmZhY2UpIHN3aXRjaAorLSBzcGVha2VyLWFtcGxpZmllci1ncGlvczogR1BJTyBmb3Igc3BlYWtlciBhbXBsaWZpZXIKKworRXhhbXBsZToKKworc291bmQgeworCWNvbXBhdGlibGUgPSAibm9raWEsbjkwMC1hdWRpbyI7CisKKwlub2tpYSxjcHUtZGFpID0gPCZtY2JzcDI+OworCW5va2lhLGF1ZGlvLWNvZGVjID0gPCZ0bHYzMjBhaWMzeD4sIDwmdGx2MzIwYWljM3hfYXV4PjsKKwlub2tpYSxoZWFkcGhvbmUtYW1wbGlmaWVyID0gPCZ0cGE2MTMwYTI+OworCisJdHZvdXQtc2VsZWN0aW9uLWdwaW9zID0gPCZncGlvMiA4IEdQSU9fQUNUSVZFX0hJR0g+OyAvKiA0MCAqLworCWphY2stZGV0ZWN0aW9uLWdwaW9zID0gPCZncGlvNiAxNyBHUElPX0FDVElWRV9ISUdIPjsgLyogMTc3ICovCisJZWNpLXN3aXRjaC1ncGlvcyA9IDwmZ3BpbzYgMjIgR1BJT19BQ1RJVkVfSElHSD47IC8qIDE4MiAqLworCXNwZWFrZXItYW1wbGlmaWVyLWdwaW9zID0gPCZ0d2xfZ3BpbyA3IEdQSU9fQUNUSVZFX0hJR0g+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9udmlkaWEsdGVncmEtYXVkaW8tYWxjNTYzMi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbnZpZGlhLHRlZ3JhLWF1ZGlvLWFsYzU2MzIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ZjQwZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbnZpZGlhLHRlZ3JhLWF1ZGlvLWFsYzU2MzIudHh0CkBAIC0wLDAgKzEsNDggQEAKK05WSURJQSBUZWdyYSBhdWRpbyBjb21wbGV4CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAibnZpZGlhLHRlZ3JhLWF1ZGlvLWFsYzU2MzIiCistIGNsb2NrcyA6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKyAgU2VlIC4uL2Nsb2Nrcy9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCistIGNsb2NrLW5hbWVzIDogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgLSBwbGxfYQorICAtIHBsbF9hX291dDAKKyAgLSBtY2xrIChUaGUgVGVncmEgY2RldjEvZXh0ZXJuMSBjbG9jaywgd2hpY2ggZmVlZHMgdGhlIENPREVDJ3MgbWNsaykKKy0gbnZpZGlhLG1vZGVsIDogVGhlIHVzZXItdmlzaWJsZSBuYW1lIG9mIHRoaXMgc291bmQgY29tcGxleC4KKy0gbnZpZGlhLGF1ZGlvLXJvdXRpbmcgOiBBIGxpc3Qgb2YgdGhlIGNvbm5lY3Rpb25zIGJldHdlZW4gYXVkaW8gY29tcG9uZW50cy4KKyAgRWFjaCBlbnRyeSBpcyBhIHBhaXIgb2Ygc3RyaW5ncywgdGhlIGZpcnN0IGJlaW5nIHRoZSBjb25uZWN0aW9uJ3Mgc2luaywKKyAgdGhlIHNlY29uZCBiZWluZyB0aGUgY29ubmVjdGlvbidzIHNvdXJjZS4gVmFsaWQgbmFtZXMgZm9yIHNvdXJjZXMgYW5kCisgIHNpbmtzIGFyZSB0aGUgQUxDNTYzMidzIHBpbnMgYXMgZG9jdW1lbnRlZCBpbiB0aGUgYmluZGluZyBmb3IgdGhlIGRldmljZQorICBhbmQ6CisKKyAgKiBIZWFkc2V0IFN0ZXJlb3Bob25lCisgICogSW50IFNwaworICAqIEhlYWRzZXQgTWljCisgICogRGlnaXRhbCBNaWMKKworLSBudmlkaWEsaTJzLWNvbnRyb2xsZXIgOiBUaGUgcGhhbmRsZSBvZiB0aGUgVGVncmEgSTJTIGNvbnRyb2xsZXIKKy0gbnZpZGlhLGF1ZGlvLWNvZGVjIDogVGhlIHBoYW5kbGUgb2YgdGhlIEFMQzU2MzIgYXVkaW8gY29kZWMKKworRXhhbXBsZToKKworc291bmQgeworCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhLWF1ZGlvLWFsYzU2MzItcGF6MDAiLAorCQkJCSAibnZpZGlhLHRlZ3JhLWF1ZGlvLWFsYzU2MzIiOworCisJbnZpZGlhLG1vZGVsID0gIkNvbXBhbCBQQVowMCI7CisKKwludmlkaWEsYXVkaW8tcm91dGluZyA9CisJCQkJIkludCBTcGsiLCAiU1BLX09VVFAiLAorCQkJCSJJbnQgU3BrIiwgIlNQS19PVVROIiwKKwkJCQkiSGVhZHNldCBNaWMiLCJNSUNCSUFTMSIsCisJCQkJIk1JQzFfTiIsICJIZWFkc2V0IE1pYyIsCisJCQkJIk1JQzFfUCIsICJIZWFkc2V0IE1pYyIsCisJCQkJIkhlYWRzZXQgU3RlcmVvcGhvbmUiLCAiSFBfT1VUX1IiLAorCQkJCSJIZWFkc2V0IFN0ZXJlb3Bob25lIiwgIkhQX09VVF9MIjsKKworCW52aWRpYSxpMnMtY29udHJvbGxlciA9IDwmdGVncmFfaTJzMT47CisJbnZpZGlhLGF1ZGlvLWNvZGVjID0gPCZhbGM1NjMyPjsKKworCWNsb2NrcyA9IDwmdGVncmFfY2FyIDExMj4sIDwmdGVncmFfY2FyIDExMz4sIDwmdGVncmFfY2FyIDkzPjsKKwljbG9jay1uYW1lcyA9ICJwbGxfYSIsICJwbGxfYV9vdXQwIiwgIm1jbGsiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9udmlkaWEsdGVncmEtYXVkaW8tbWF4OTgwOTAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL252aWRpYSx0ZWdyYS1hdWRpby1tYXg5ODA5MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM0OTViZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9udmlkaWEsdGVncmEtYXVkaW8tbWF4OTgwOTAudHh0CkBAIC0wLDAgKzEsNTMgQEAKK05WSURJQSBUZWdyYSBhdWRpbyBjb21wbGV4LCB3aXRoIE1BWDk4MDkwIENPREVDCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAibnZpZGlhLHRlZ3JhLWF1ZGlvLW1heDk4MDkwIgorLSBjbG9ja3MgOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCisgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorLSBjbG9jay1uYW1lcyA6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIC0gcGxsX2EKKyAgLSBwbGxfYV9vdXQwCisgIC0gbWNsayAoVGhlIFRlZ3JhIGNkZXYxL2V4dGVybjEgY2xvY2ssIHdoaWNoIGZlZWRzIHRoZSBDT0RFQydzIG1jbGspCistIG52aWRpYSxtb2RlbCA6IFRoZSB1c2VyLXZpc2libGUgbmFtZSBvZiB0aGlzIHNvdW5kIGNvbXBsZXguCistIG52aWRpYSxhdWRpby1yb3V0aW5nIDogQSBsaXN0IG9mIHRoZSBjb25uZWN0aW9ucyBiZXR3ZWVuIGF1ZGlvIGNvbXBvbmVudHMuCisgIEVhY2ggZW50cnkgaXMgYSBwYWlyIG9mIHN0cmluZ3MsIHRoZSBmaXJzdCBiZWluZyB0aGUgY29ubmVjdGlvbidzIHNpbmssCisgIHRoZSBzZWNvbmQgYmVpbmcgdGhlIGNvbm5lY3Rpb24ncyBzb3VyY2UuIFZhbGlkIG5hbWVzIGZvciBzb3VyY2VzIGFuZAorICBzaW5rcyBhcmUgdGhlIE1BWDk4MDkwJ3MgcGlucyAoYXMgZG9jdW1lbnRlZCBpbiBpdHMgYmluZGluZyksIGFuZCB0aGUgamFja3MKKyAgb24gdGhlIGJvYXJkOgorCisgICogSGVhZHBob25lcworICAqIFNwZWFrZXJzCisgICogTWljIEphY2sKKyAgKiBJbnQgTWljCisKKy0gbnZpZGlhLGkycy1jb250cm9sbGVyIDogVGhlIHBoYW5kbGUgb2YgdGhlIFRlZ3JhIEkyUyBjb250cm9sbGVyIHRoYXQncworICBjb25uZWN0ZWQgdG8gdGhlIENPREVDLgorLSBudmlkaWEsYXVkaW8tY29kZWMgOiBUaGUgcGhhbmRsZSBvZiB0aGUgTUFYOTgwOTAgYXVkaW8gY29kZWMuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIG52aWRpYSxocC1kZXQtZ3Bpb3MgOiBUaGUgR1BJTyB0aGF0IGRldGVjdCBoZWFkcGhvbmVzIGFyZSBwbHVnZ2VkIGluCistIG52aWRpYSxtaWMtZGV0LWdwaW9zIDogVGhlIEdQSU8gdGhhdCBkZXRlY3QgbWljcm9waG9uZXMgYXJlIHBsdWdnZWQgaW4KKworRXhhbXBsZToKKworc291bmQgeworCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhLWF1ZGlvLW1heDk4MDkwLXZlbmljZTIiLAorCQkgICAgICJudmlkaWEsdGVncmEtYXVkaW8tbWF4OTgwOTAiOworCW52aWRpYSxtb2RlbCA9ICJOVklESUEgVGVncmEgVmVuaWNlMiI7CisKKwludmlkaWEsYXVkaW8tcm91dGluZyA9CisJCSJIZWFkcGhvbmVzIiwgIkhQUiIsCisJCSJIZWFkcGhvbmVzIiwgIkhQTCIsCisJCSJTcGVha2VycyIsICJTUEtSIiwKKwkJIlNwZWFrZXJzIiwgIlNQS0wiLAorCQkiTWljIEphY2siLCAiTUlDQklBUyIsCisJCSJJTjM0IiwgIk1pYyBKYWNrIjsKKworCW52aWRpYSxpMnMtY29udHJvbGxlciA9IDwmdGVncmFfaTJzMT47CisJbnZpZGlhLGF1ZGlvLWNvZGVjID0gPCZhY29kZWM+OworCisJY2xvY2tzID0gPCZ0ZWdyYV9jYXIgVEVHUkExMjRfQ0xLX1BMTF9BPiwKKwkJIDwmdGVncmFfY2FyIFRFR1JBMTI0X0NMS19QTExfQV9PVVQwPiwKKwkJIDwmdGVncmFfY2FyIFRFR1JBMTI0X0NMS19FWFRFUk4xPjsKKwljbG9jay1uYW1lcyA9ICJwbGxfYSIsICJwbGxfYV9vdXQwIiwgIm1jbGsiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9udmlkaWEsdGVncmEtYXVkaW8tcnQ1NjQwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9udmlkaWEsdGVncmEtYXVkaW8tcnQ1NjQwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Nzg4ODA4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL252aWRpYSx0ZWdyYS1hdWRpby1ydDU2NDAudHh0CkBAIC0wLDAgKzEsNTIgQEAKK05WSURJQSBUZWdyYSBhdWRpbyBjb21wbGV4LCB3aXRoIFJUNTY0MCBDT0RFQworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogIm52aWRpYSx0ZWdyYS1hdWRpby1ydDU2NDAiCistIGNsb2NrcyA6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKyAgU2VlIC4uL2Nsb2Nrcy9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCistIGNsb2NrLW5hbWVzIDogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgLSBwbGxfYQorICAtIHBsbF9hX291dDAKKyAgLSBtY2xrIChUaGUgVGVncmEgY2RldjEvZXh0ZXJuMSBjbG9jaywgd2hpY2ggZmVlZHMgdGhlIENPREVDJ3MgbWNsaykKKy0gbnZpZGlhLG1vZGVsIDogVGhlIHVzZXItdmlzaWJsZSBuYW1lIG9mIHRoaXMgc291bmQgY29tcGxleC4KKy0gbnZpZGlhLGF1ZGlvLXJvdXRpbmcgOiBBIGxpc3Qgb2YgdGhlIGNvbm5lY3Rpb25zIGJldHdlZW4gYXVkaW8gY29tcG9uZW50cy4KKyAgRWFjaCBlbnRyeSBpcyBhIHBhaXIgb2Ygc3RyaW5ncywgdGhlIGZpcnN0IGJlaW5nIHRoZSBjb25uZWN0aW9uJ3Mgc2luaywKKyAgdGhlIHNlY29uZCBiZWluZyB0aGUgY29ubmVjdGlvbidzIHNvdXJjZS4gVmFsaWQgbmFtZXMgZm9yIHNvdXJjZXMgYW5kCisgIHNpbmtzIGFyZSB0aGUgUlQ1NjQwJ3MgcGlucyAoYXMgZG9jdW1lbnRlZCBpbiBpdHMgYmluZGluZyksIGFuZCB0aGUgamFja3MKKyAgb24gdGhlIGJvYXJkOgorCisgICogSGVhZHBob25lcworICAqIFNwZWFrZXJzCisgICogTWljIEphY2sKKworLSBudmlkaWEsaTJzLWNvbnRyb2xsZXIgOiBUaGUgcGhhbmRsZSBvZiB0aGUgVGVncmEgSTJTIGNvbnRyb2xsZXIgdGhhdCdzCisgIGNvbm5lY3RlZCB0byB0aGUgQ09ERUMuCistIG52aWRpYSxhdWRpby1jb2RlYyA6IFRoZSBwaGFuZGxlIG9mIHRoZSBSVDU2NDAgYXVkaW8gY29kZWMuIFRoaXMgYmluZGluZworICBhc3N1bWVzIHRoYXQgQUlGMSBvbiB0aGUgQ09ERUMgaXMgY29ubmVjdGVkIHRvIFRlZ3JhLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBudmlkaWEsaHAtZGV0LWdwaW9zIDogVGhlIEdQSU8gdGhhdCBkZXRlY3RzIGhlYWRwaG9uZXMgYXJlIHBsdWdnZWQgaW4KKworRXhhbXBsZToKKworc291bmQgeworCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhLWF1ZGlvLXJ0NTY0MC1kYWxtb3JlIiwKKwkJCSJudmlkaWEsdGVncmEtYXVkaW8tcnQ1NjQwIjsKKwludmlkaWEsbW9kZWwgPSAiTlZJRElBIFRlZ3JhIERhbG1vcmUiOworCisJbnZpZGlhLGF1ZGlvLXJvdXRpbmcgPQorCQkiSGVhZHBob25lcyIsICJIUE9SIiwKKwkJIkhlYWRwaG9uZXMiLCAiSFBPTCIsCisJCSJTcGVha2VycyIsICJTUE9SUCIsCisJCSJTcGVha2VycyIsICJTUE9STiIsCisJCSJTcGVha2VycyIsICJTUE9MUCIsCisJCSJTcGVha2VycyIsICJTUE9MTiI7CisKKwludmlkaWEsaTJzLWNvbnRyb2xsZXIgPSA8JnRlZ3JhX2kyczE+OworCW52aWRpYSxhdWRpby1jb2RlYyA9IDwmcnQ1NjQwPjsKKworCW52aWRpYSxocC1kZXQtZ3Bpb3MgPSA8JmdwaW8gMTQzIDA+OyAvKiBHUElPIFBSNyAqLworCisJY2xvY2tzID0gPCZ0ZWdyYV9jYXIgMjE2PiwgPCZ0ZWdyYV9jYXIgMjE3PiwgPCZ0ZWdyYV9jYXIgMTIwPjsKKwljbG9jay1uYW1lcyA9ICJwbGxfYSIsICJwbGxfYV9vdXQwIiwgIm1jbGsiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9udmlkaWEsdGVncmEtYXVkaW8tcnQ1Njc3LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9udmlkaWEsdGVncmEtYXVkaW8tcnQ1Njc3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDU4OWNkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL252aWRpYSx0ZWdyYS1hdWRpby1ydDU2NzcudHh0CkBAIC0wLDAgKzEsNjcgQEAKK05WSURJQSBUZWdyYSBhdWRpbyBjb21wbGV4LCB3aXRoIFJUNTY3NyBDT0RFQworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogIm52aWRpYSx0ZWdyYS1hdWRpby1ydDU2NzciCistIGNsb2NrcyA6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKyAgU2VlIC4uL2Nsb2Nrcy9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCistIGNsb2NrLW5hbWVzIDogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgLSBwbGxfYQorICAtIHBsbF9hX291dDAKKyAgLSBtY2xrIChUaGUgVGVncmEgY2RldjEvZXh0ZXJuMSBjbG9jaywgd2hpY2ggZmVlZHMgdGhlIENPREVDJ3MgbWNsaykKKy0gbnZpZGlhLG1vZGVsIDogVGhlIHVzZXItdmlzaWJsZSBuYW1lIG9mIHRoaXMgc291bmQgY29tcGxleC4KKy0gbnZpZGlhLGF1ZGlvLXJvdXRpbmcgOiBBIGxpc3Qgb2YgdGhlIGNvbm5lY3Rpb25zIGJldHdlZW4gYXVkaW8gY29tcG9uZW50cy4KKyAgRWFjaCBlbnRyeSBpcyBhIHBhaXIgb2Ygc3RyaW5ncywgdGhlIGZpcnN0IGJlaW5nIHRoZSBjb25uZWN0aW9uJ3Mgc2luaywKKyAgdGhlIHNlY29uZCBiZWluZyB0aGUgY29ubmVjdGlvbidzIHNvdXJjZS4gVmFsaWQgbmFtZXMgZm9yIHNvdXJjZXMgYW5kCisgIHNpbmtzIGFyZSB0aGUgUlQ1Njc3J3MgcGlucyAoYXMgZG9jdW1lbnRlZCBpbiBpdHMgYmluZGluZyksIGFuZCB0aGUgamFja3MKKyAgb24gdGhlIGJvYXJkOgorCisgICogSGVhZHBob25lCisgICogU3BlYWtlcgorICAqIEhlYWRzZXQgTWljCisgICogSW50ZXJuYWwgTWljIDEKKyAgKiBJbnRlcm5hbCBNaWMgMgorCistIG52aWRpYSxpMnMtY29udHJvbGxlciA6IFRoZSBwaGFuZGxlIG9mIHRoZSBUZWdyYSBJMlMgY29udHJvbGxlciB0aGF0J3MKKyAgY29ubmVjdGVkIHRvIHRoZSBDT0RFQy4KKy0gbnZpZGlhLGF1ZGlvLWNvZGVjIDogVGhlIHBoYW5kbGUgb2YgdGhlIFJUNTY3NyBhdWRpbyBjb2RlYy4gVGhpcyBiaW5kaW5nCisgIGFzc3VtZXMgdGhhdCBBSUYxIG9uIHRoZSBDT0RFQyBpcyBjb25uZWN0ZWQgdG8gVGVncmEuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIG52aWRpYSxocC1kZXQtZ3Bpb3MgOiBUaGUgR1BJTyB0aGF0IGRldGVjdHMgaGVhZHBob25lcyBhcmUgcGx1Z2dlZCBpbgorLSBudmlkaWEsaHAtZW4tZ3Bpb3MgOiBUaGUgR1BJTyB0aGF0IGVuYWJsZXMgaGVhZHBob25lIGFtcGxpZmllcgorLSBudmlkaWEsbWljLXByZXNlbnQtZ3Bpb3M6IFRoZSBHUElPIHRoYXQgbWljIGphY2sgaXMgcGx1Z2dlZCBpbgorLSBudmlkaWEsZG1pYy1jbGstZW4tZ3Bpb3MgOiBUaGUgR1BJTyB0aGF0IGdhdGVzIERNSUMgY2xvY2sgc2lnbmFsCisKK0V4YW1wbGU6CisKK3NvdW5kIHsKKwljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYS1hdWRpby1ydDU2Nzctcnl1IiwKKwkgICAgICAgICJudmlkaWEsdGVncmEtYXVkaW8tcnQ1Njc3IjsKKwludmlkaWEsbW9kZWwgPSAiTlZJRElBIFRlZ3JhIFJ5dSI7CisKKwludmlkaWEsYXVkaW8tcm91dGluZyA9CisJCSJIZWFkcGhvbmUiLCAiTE9VVDIiLAorCQkiSGVhZHBob25lIiwgIkxPVVQxIiwKKwkJIkhlYWRzZXQgTWljIiwgIk1JQ0JJQVMxIiwKKwkJIklOMVAiLCAiSGVhZHNldCBNaWMiLAorCQkiSU4xTiIsICJIZWFkc2V0IE1pYyIsCisJCSJETUlDIEwxIiwgIkludGVybmFsIE1pYyAxIiwKKwkJIkRNSUMgUjEiLCAiSW50ZXJuYWwgTWljIDEiLAorCQkiRE1JQyBMMiIsICJJbnRlcm5hbCBNaWMgMiIsCisJCSJETUlDIFIyIiwgIkludGVybmFsIE1pYyAyIiwKKwkJIlNwZWFrZXIiLCAiUERNMUwiLAorCQkiU3BlYWtlciIsICJQRE0xUiI7CisKKwludmlkaWEsaTJzLWNvbnRyb2xsZXIgPSA8JnRlZ3JhX2kyczE+OworCW52aWRpYSxhdWRpby1jb2RlYyA9IDwmcnQ1Njc3PjsKKworCW52aWRpYSxocC1kZXQtZ3Bpb3MgPSA8JmdwaW8gVEVHUkFfR1BJTyhSLCA3KSBHUElPX0FDVElWRV9ISUdIPjsKKwludmlkaWEsbWljLXByZXNlbnQtZ3Bpb3MgPSA8JmdwaW8gVEVHUkFfR1BJTyhPLCA1KSBHUElPX0FDVElWRV9MT1c+OworCW52aWRpYSxocC1lbi1ncGlvcyA9IDwmcnQ1Njc3IDEgR1BJT19BQ1RJVkVfSElHSD47CisJbnZpZGlhLGRtaWMtY2xrLWVuLWdwaW9zID0gPCZydDU2NzcgMiBHUElPX0FDVElWRV9ISUdIPjsKKworCWNsb2NrcyA9IDwmdGVncmFfY2FyIFRFR1JBMTI0X0NMS19QTExfQT4sCisJICAgICAgICAgPCZ0ZWdyYV9jYXIgVEVHUkExMjRfQ0xLX1BMTF9BX09VVDA+LAorCSAgICAgICAgIDwmdGVncmFfY2FyIFRFR1JBMTI0X0NMS19FWFRFUk4xPjsKKwljbG9jay1uYW1lcyA9ICJwbGxfYSIsICJwbGxfYV9vdXQwIiwgIm1jbGsiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9udmlkaWEsdGVncmEtYXVkaW8tdHJpbXNsaWNlLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9udmlkaWEsdGVncmEtYXVkaW8tdHJpbXNsaWNlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjFmZTczCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL252aWRpYSx0ZWdyYS1hdWRpby10cmltc2xpY2UudHh0CkBAIC0wLDAgKzEsMjEgQEAKK05WSURJQSBUZWdyYSBhdWRpbyBjb21wbGV4IGZvciBUcmltU2xpY2UKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJudmlkaWEsdGVncmEtYXVkaW8tdHJpbXNsaWNlIgorLSBjbG9ja3MgOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCistIGNsb2NrLW5hbWVzIDogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgInBsbF9hIiAoVGhlIFRlZ3JhIGNsb2NrIG9mIHRoYXQgbmFtZSksCisgICJwbGxfYV9vdXQwIiAoVGhlIFRlZ3JhIGNsb2NrIG9mIHRoYXQgbmFtZSksCisgICJtY2xrIiAoVGhlIFRlZ3JhIGNkZXYxL2V4dGVybjEgY2xvY2ssIHdoaWNoIGZlZWRzIHRoZSBDT0RFQydzIG1jbGspCistIG52aWRpYSxpMnMtY29udHJvbGxlciA6IFRoZSBwaGFuZGxlIG9mIHRoZSBUZWdyYSBJMlMxIGNvbnRyb2xsZXIKKy0gbnZpZGlhLGF1ZGlvLWNvZGVjIDogVGhlIHBoYW5kbGUgb2YgdGhlIFdNODkwMyBhdWRpbyBjb2RlYworCitFeGFtcGxlOgorCitzb3VuZCB7CisJY29tcGF0aWJsZSA9ICJudmlkaWEsdGVncmEtYXVkaW8tdHJpbXNsaWNlIjsKKwludmlkaWEsaTJzLWNvbnRyb2xsZXIgPSA8JnRlZ3JhX2kyczE+OworCW52aWRpYSxhdWRpby1jb2RlYyA9IDwmY29kZWM+OworCWNsb2NrcyA9IDwmdGVncmFfY2FyIDExMj4sIDwmdGVncmFfY2FyIDExMz4sIDwmdGVncmFfY2FyIDkzPjsKKwljbG9jay1uYW1lcyA9ICJwbGxfYSIsICJwbGxfYV9vdXQwIiwgIm1jbGsiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9udmlkaWEsdGVncmEtYXVkaW8td204NzUzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9udmlkaWEsdGVncmEtYXVkaW8td204NzUzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmY2YTU3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL252aWRpYSx0ZWdyYS1hdWRpby13bTg3NTMudHh0CkBAIC0wLDAgKzEsNDAgQEAKK05WSURJQSBUZWdyYSBhdWRpbyBjb21wbGV4CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAibnZpZGlhLHRlZ3JhLWF1ZGlvLXdtODc1MyIKKy0gY2xvY2tzIDogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIGNsb2NrLW5hbWVzLgorICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKy0gY2xvY2stbmFtZXMgOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAtIHBsbF9hCisgIC0gcGxsX2Ffb3V0MAorICAtIG1jbGsgKFRoZSBUZWdyYSBjZGV2MS9leHRlcm4xIGNsb2NrLCB3aGljaCBmZWVkcyB0aGUgQ09ERUMncyBtY2xrKQorLSBudmlkaWEsbW9kZWwgOiBUaGUgdXNlci12aXNpYmxlIG5hbWUgb2YgdGhpcyBzb3VuZCBjb21wbGV4LgorLSBudmlkaWEsYXVkaW8tcm91dGluZyA6IEEgbGlzdCBvZiB0aGUgY29ubmVjdGlvbnMgYmV0d2VlbiBhdWRpbyBjb21wb25lbnRzLgorICBFYWNoIGVudHJ5IGlzIGEgcGFpciBvZiBzdHJpbmdzLCB0aGUgZmlyc3QgYmVpbmcgdGhlIGNvbm5lY3Rpb24ncyBzaW5rLAorICB0aGUgc2Vjb25kIGJlaW5nIHRoZSBjb25uZWN0aW9uJ3Mgc291cmNlLiBWYWxpZCBuYW1lcyBmb3Igc291cmNlcyBhbmQKKyAgc2lua3MgYXJlIHRoZSBXTTg3NTMncyBwaW5zIGFzIGRvY3VtZW50ZWQgaW4gdGhlIGJpbmRpbmcgZm9yIHRoZSBXTTg3NTMsCisgIGFuZCB0aGUgamFja3Mgb24gdGhlIGJvYXJkOgorCisgICogSGVhZHBob25lIEphY2sKKyAgKiBNaWMgSmFjaworCistIG52aWRpYSxpMnMtY29udHJvbGxlciA6IFRoZSBwaGFuZGxlIG9mIHRoZSBUZWdyYSBJMlMxIGNvbnRyb2xsZXIKKy0gbnZpZGlhLGF1ZGlvLWNvZGVjIDogVGhlIHBoYW5kbGUgb2YgdGhlIFdNODc1MyBhdWRpbyBjb2RlYworRXhhbXBsZToKKworc291bmQgeworCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhLWF1ZGlvLXdtODc1My13aGlzdGxlciIsCisJCSAgICAgIm52aWRpYSx0ZWdyYS1hdWRpby13bTg3NTMiCisJbnZpZGlhLG1vZGVsID0gInRlZ3JhLXdtODc1My1oYXJtb255IjsKKworCW52aWRpYSxhdWRpby1yb3V0aW5nID0KKwkJIkhlYWRwaG9uZSBKYWNrIiwgIkxPVVQxIiwKKwkJIkhlYWRwaG9uZSBKYWNrIiwgIlJPVVQxIjsKKworCW52aWRpYSxpMnMtY29udHJvbGxlciA9IDwmaTJzMT47CisJbnZpZGlhLGF1ZGlvLWNvZGVjID0gPCZ3bTg3NTM+OworCisJY2xvY2tzID0gPCZ0ZWdyYV9jYXIgMTEyPiwgPCZ0ZWdyYV9jYXIgMTEzPiwgPCZ0ZWdyYV9jYXIgOTM+OworCWNsb2NrLW5hbWVzID0gInBsbF9hIiwgInBsbF9hX291dDAiLCAibWNsayI7Cit9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbnZpZGlhLHRlZ3JhLWF1ZGlvLXdtODkwMy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbnZpZGlhLHRlZ3JhLWF1ZGlvLXdtODkwMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc5NWQyOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9udmlkaWEsdGVncmEtYXVkaW8td204OTAzLnR4dApAQCAtMCwwICsxLDYwIEBACitOVklESUEgVGVncmEgYXVkaW8gY29tcGxleAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogIm52aWRpYSx0ZWdyYS1hdWRpby13bTg5MDMiCistIGNsb2NrcyA6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKyAgU2VlIC4uL2Nsb2Nrcy9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCistIGNsb2NrLW5hbWVzIDogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgLSBwbGxfYQorICAtIHBsbF9hX291dDAKKyAgLSBtY2xrIChUaGUgVGVncmEgY2RldjEvZXh0ZXJuMSBjbG9jaywgd2hpY2ggZmVlZHMgdGhlIENPREVDJ3MgbWNsaykKKy0gbnZpZGlhLG1vZGVsIDogVGhlIHVzZXItdmlzaWJsZSBuYW1lIG9mIHRoaXMgc291bmQgY29tcGxleC4KKy0gbnZpZGlhLGF1ZGlvLXJvdXRpbmcgOiBBIGxpc3Qgb2YgdGhlIGNvbm5lY3Rpb25zIGJldHdlZW4gYXVkaW8gY29tcG9uZW50cy4KKyAgRWFjaCBlbnRyeSBpcyBhIHBhaXIgb2Ygc3RyaW5ncywgdGhlIGZpcnN0IGJlaW5nIHRoZSBjb25uZWN0aW9uJ3Mgc2luaywKKyAgdGhlIHNlY29uZCBiZWluZyB0aGUgY29ubmVjdGlvbidzIHNvdXJjZS4gVmFsaWQgbmFtZXMgZm9yIHNvdXJjZXMgYW5kCisgIHNpbmtzIGFyZSB0aGUgV004OTAzJ3MgcGlucyAoZG9jdW1lbnRlZCBpbiB0aGUgV004OTAzIGJpbmRpbmcgZG9jdW1lbnQpLAorICBhbmQgdGhlIGphY2tzIG9uIHRoZSBib2FyZDoKKworICAqIEhlYWRwaG9uZSBKYWNrCisgICogSW50IFNwaworICAqIE1pYyBKYWNrCisKKy0gbnZpZGlhLGkycy1jb250cm9sbGVyIDogVGhlIHBoYW5kbGUgb2YgdGhlIFRlZ3JhIEkyUzEgY29udHJvbGxlcgorLSBudmlkaWEsYXVkaW8tY29kZWMgOiBUaGUgcGhhbmRsZSBvZiB0aGUgV004OTAzIGF1ZGlvIGNvZGVjCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIG52aWRpYSxzcGtyLWVuLWdwaW9zIDogVGhlIEdQSU8gdGhhdCBlbmFibGVzIHRoZSBzcGVha2VycworLSBudmlkaWEsaHAtbXV0ZS1ncGlvcyA6IFRoZSBHUElPIHRoYXQgbXV0ZXMgdGhlIGhlYWRwaG9uZXMKKy0gbnZpZGlhLGhwLWRldC1ncGlvcyA6IFRoZSBHUElPIHRoYXQgZGV0ZWN0IGhlYWRwaG9uZXMgYXJlIHBsdWdnZWQgaW4KKy0gbnZpZGlhLGludC1taWMtZW4tZ3Bpb3MgOiBUaGUgR1BJTyB0aGF0IGVuYWJsZXMgdGhlIGludGVybmFsIG1pY3JvcGhvbmUKKy0gbnZpZGlhLGV4dC1taWMtZW4tZ3Bpb3MgOiBUaGUgR1BJTyB0aGF0IGVuYWJsZXMgdGhlIGV4dGVybmFsIG1pY3JvcGhvbmUKKworRXhhbXBsZToKKworc291bmQgeworCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhLWF1ZGlvLXdtODkwMy1oYXJtb255IiwKKwkJICAgICAibnZpZGlhLHRlZ3JhLWF1ZGlvLXdtODkwMyIKKwludmlkaWEsbW9kZWwgPSAidGVncmEtd204OTAzLWhhcm1vbnkiOworCisJbnZpZGlhLGF1ZGlvLXJvdXRpbmcgPQorCQkiSGVhZHBob25lIEphY2siLCAiSFBPVVRSIiwKKwkJIkhlYWRwaG9uZSBKYWNrIiwgIkhQT1VUTCIsCisJCSJJbnQgU3BrIiwgIlJPUCIsCisJCSJJbnQgU3BrIiwgIlJPTiIsCisJCSJJbnQgU3BrIiwgIkxPUCIsCisJCSJJbnQgU3BrIiwgIkxPTiIsCisJCSJNaWMgSmFjayIsICJNSUNCSUFTIiwKKwkJIklOMUwiLCAiTWljIEphY2siOworCisJbnZpZGlhLGkycy1jb250cm9sbGVyID0gPCZpMnMxPjsKKwludmlkaWEsYXVkaW8tY29kZWMgPSA8JndtODkwMz47CisKKwludmlkaWEsc3Brci1lbi1ncGlvcyA9IDwmY29kZWMgMiAwPjsKKwludmlkaWEsaHAtZGV0LWdwaW9zID0gPCZncGlvIDE3OCAwPjsgLyogZ3BpbyBQVzIgKi8KKwludmlkaWEsaW50LW1pYy1lbi1ncGlvcyA9IDwmZ3BpbyAxODQgMD47IC8qZ3BpbyBQWDAgKi8KKwludmlkaWEsZXh0LW1pYy1lbi1ncGlvcyA9IDwmZ3BpbyAxODUgMD47IC8qIGdwaW8gUFgxICovCisKKwljbG9ja3MgPSA8JnRlZ3JhX2NhciAxMTI+LCA8JnRlZ3JhX2NhciAxMTM+LCA8JnRlZ3JhX2NhciA5Mz47CisJY2xvY2stbmFtZXMgPSAicGxsX2EiLCAicGxsX2Ffb3V0MCIsICJtY2xrIjsKK307CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9udmlkaWEsdGVncmEtYXVkaW8td205NzEyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9udmlkaWEsdGVncmEtYXVkaW8td205NzEyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzZmNmNkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL252aWRpYSx0ZWdyYS1hdWRpby13bTk3MTIudHh0CkBAIC0wLDAgKzEsNjAgQEAKK05WSURJQSBUZWdyYSBhdWRpbyBjb21wbGV4CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAibnZpZGlhLHRlZ3JhLWF1ZGlvLXdtOTcxMiIKKy0gY2xvY2tzIDogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIGNsb2NrLW5hbWVzLgorICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKy0gY2xvY2stbmFtZXMgOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAtIHBsbF9hCisgIC0gcGxsX2Ffb3V0MAorICAtIG1jbGsgKFRoZSBUZWdyYSBjZGV2MS9leHRlcm4xIGNsb2NrLCB3aGljaCBmZWVkcyB0aGUgQ09ERUMncyBtY2xrKQorLSBudmlkaWEsbW9kZWwgOiBUaGUgdXNlci12aXNpYmxlIG5hbWUgb2YgdGhpcyBzb3VuZCBjb21wbGV4LgorLSBudmlkaWEsYXVkaW8tcm91dGluZyA6IEEgbGlzdCBvZiB0aGUgY29ubmVjdGlvbnMgYmV0d2VlbiBhdWRpbyBjb21wb25lbnRzLgorICBFYWNoIGVudHJ5IGlzIGEgcGFpciBvZiBzdHJpbmdzLCB0aGUgZmlyc3QgYmVpbmcgdGhlIGNvbm5lY3Rpb24ncyBzaW5rLAorICB0aGUgc2Vjb25kIGJlaW5nIHRoZSBjb25uZWN0aW9uJ3Mgc291cmNlLiBWYWxpZCBuYW1lcyBmb3Igc291cmNlcyBhbmQKKyAgc2lua3MgYXJlIHRoZSBXTTk3MTIncyBwaW5zLCBhbmQgdGhlIGphY2tzIG9uIHRoZSBib2FyZDoKKworICBXTTk3MTIgcGluczoKKworICAqIE1PTk9PVVQKKyAgKiBIUE9VVEwKKyAgKiBIUE9VVFIKKyAgKiBMT1VUMgorICAqIFJPVVQyCisgICogT1VUMworICAqIExJTkVJTkwKKyAgKiBMSU5FSU5SCisgICogUEhPTkUKKyAgKiBQQ0JFRVAKKyAgKiBNSUMxCisgICogTUlDMgorICAqIE1pYyBCaWFzCisKKyAgQm9hcmQgY29ubmVjdG9yczoKKworICAqIEhlYWRwaG9uZQorICAqIExpbmVJbgorICAqIE1pYworCistIG52aWRpYSxhYzk3LWNvbnRyb2xsZXIgOiBUaGUgcGhhbmRsZSBvZiB0aGUgVGVncmEgQUM5NyBjb250cm9sbGVyCisKKworRXhhbXBsZToKKworc291bmQgeworCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhLWF1ZGlvLXdtOTcxMi1jb2xpYnJpX3QyMCIsCisJCSAgICAgICAgICJudmlkaWEsdGVncmEtYXVkaW8td205NzEyIjsKKwludmlkaWEsbW9kZWwgPSAiVG9yYWRleCBDb2xpYnJpIFQyMCI7CisKKwludmlkaWEsYXVkaW8tcm91dGluZyA9CisJCSJIZWFkcGhvbmUiLCAiSFBPVVRMIiwKKwkJIkhlYWRwaG9uZSIsICJIUE9VVFIiLAorCQkiTGluZUluIiwgIkxJTkVJTkwiLAorCQkiTGluZUluIiwgIkxJTkVJTlIiLAorCQkiTWljIiwgIk1JQzEiOworCisJbnZpZGlhLGFjOTctY29udHJvbGxlciA9IDwmYWM5Nz47CisKKwljbG9ja3MgPSA8JnRlZ3JhX2NhciAxMTI+LCA8JnRlZ3JhX2NhciAxMTM+LCA8JnRlZ3JhX2NhciA5Mz47CisJY2xvY2stbmFtZXMgPSAicGxsX2EiLCAicGxsX2Ffb3V0MCIsICJtY2xrIjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbnZpZGlhLHRlZ3JhMjAtYWM5Ny50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbnZpZGlhLHRlZ3JhMjAtYWM5Ny50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFmMDAxMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9udmlkaWEsdGVncmEyMC1hYzk3LnR4dApAQCAtMCwwICsxLDM2IEBACitOVklESUEgVGVncmEgMjAgQUM5NyBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAibnZpZGlhLHRlZ3JhMjAtYWM5NyIKKy0gcmVnIDogU2hvdWxkIGNvbnRhaW4gQUM5NyBjb250cm9sbGVyIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCistIGludGVycnVwdHMgOiBTaG91bGQgY29udGFpbiBBQzk3IGludGVycnVwdAorLSByZXNldHMgOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gcmVzZXQtbmFtZXMuCisgIFNlZSAuLi9yZXNldC9yZXNldC50eHQgZm9yIGRldGFpbHMuCistIHJlc2V0LW5hbWVzIDogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgLSBhYzk3CistIGRtYXMgOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCisgIFNlZSAuLi9kbWEvZG1hLnR4dCBmb3IgZGV0YWlscy4KKy0gZG1hLW5hbWVzIDogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgLSByeAorICAtIHR4CistIGNsb2NrcyA6IE11c3QgY29udGFpbiBvbmUgZW50cnksIGZvciB0aGUgbW9kdWxlIGNsb2NrLgorICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKy0gbnZpZGlhLGNvZGVjLXJlc2V0LWdwaW8gOiBUaGUgVGVncmEgR1BJTyBjb250cm9sbGVyJ3MgcGhhbmRsZSBhbmQgdGhlIG51bWJlcgorICBvZiB0aGUgR1BJTyB1c2VkIHRvIHJlc2V0IHRoZSBleHRlcm5hbCBBQzk3IGNvZGVjCistIG52aWRpYSxjb2RlYy1zeW5jLWdwaW8gOiBUaGUgVGVncmEgR1BJTyBjb250cm9sbGVyJ3MgcGhhbmRsZSBhbmQgdGhlIG51bWJlcgorICBvZiB0aGUgR1BJTyBjb3JyZXNwb25kaW5nIHdpdGggdGhlIEFDOTcgREFQIF9GUyBsaW5lCisKK0V4YW1wbGU6CisKK2FjOTdANzAwMDIwMDAgeworCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMjAtYWM5NyI7CisJcmVnID0gPDB4NzAwMDIwMDAgMHgyMDA+OworCWludGVycnVwdHMgPSA8MCA4MSAweDA0PjsKKwludmlkaWEsY29kZWMtcmVzZXQtZ3BpbyA9IDwmZ3BpbyAxNzAgMD47CisJbnZpZGlhLGNvZGVjLXN5bmMtZ3BpbyA9IDwmZ3BpbyAxMjAgMD47CisJY2xvY2tzID0gPCZ0ZWdyYV9jYXIgMz47CisJcmVzZXRzID0gPCZ0ZWdyYV9jYXIgMz47CisJcmVzZXQtbmFtZXMgPSAiYWM5NyI7CisJZG1hcyA9IDwmYXBiZG1hIDEyPiwgPCZhcGJkbWEgMTI+OworCWRtYS1uYW1lcyA9ICJyeCIsICJ0eCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL252aWRpYSx0ZWdyYTIwLWRhcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbnZpZGlhLHRlZ3JhMjAtZGFzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGUzYTdlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL252aWRpYSx0ZWdyYTIwLWRhcy50eHQKQEAgLTAsMCArMSwxMiBAQAorTlZJRElBIFRlZ3JhIDIwIERBUyAoRGlnaXRhbCBBdWRpbyBTd2l0Y2gpIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJudmlkaWEsdGVncmEyMC1kYXMiCistIHJlZyA6IFNob3VsZCBjb250YWluIERBUyByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorCitFeGFtcGxlOgorCitkYXNANzAwMDBjMDAgeworCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMjAtZGFzIjsKKwlyZWcgPSA8MHg3MDAwMGMwMCAweDgwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbnZpZGlhLHRlZ3JhMjAtaTJzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9udmlkaWEsdGVncmEyMC1pMnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjMzBjNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbnZpZGlhLHRlZ3JhMjAtaTJzLnR4dApAQCAtMCwwICsxLDMwIEBACitOVklESUEgVGVncmEgMjAgSTJTIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJudmlkaWEsdGVncmEyMC1pMnMiCistIHJlZyA6IFNob3VsZCBjb250YWluIEkyUyByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorLSBpbnRlcnJ1cHRzIDogU2hvdWxkIGNvbnRhaW4gSTJTIGludGVycnVwdAorLSByZXNldHMgOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gcmVzZXQtbmFtZXMuCisgIFNlZSAuLi9yZXNldC9yZXNldC50eHQgZm9yIGRldGFpbHMuCistIHJlc2V0LW5hbWVzIDogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgLSBpMnMKKy0gZG1hcyA6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKyAgU2VlIC4uL2RtYS9kbWEudHh0IGZvciBkZXRhaWxzLgorLSBkbWEtbmFtZXMgOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAtIHJ4CisgIC0gdHgKKy0gY2xvY2tzIDogTXVzdCBjb250YWluIG9uZSBlbnRyeSwgZm9yIHRoZSBtb2R1bGUgY2xvY2suCisgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorCitFeGFtcGxlOgorCitpMnNANzAwMDI4MDAgeworCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMjAtaTJzIjsKKwlyZWcgPSA8MHg3MDAwMjgwMCAweDIwMD47CisJaW50ZXJydXB0cyA9IDwgNDUgPjsKKwljbG9ja3MgPSA8JnRlZ3JhX2NhciAxMT47CisJcmVzZXRzID0gPCZ0ZWdyYV9jYXIgMTE+OworCXJlc2V0LW5hbWVzID0gImkycyI7CisJZG1hcyA9IDwmYXBiZG1hIDIxPiwgPCZhcGJkbWEgMjE+OworCWRtYS1uYW1lcyA9ICJyeCIsICJ0eCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL252aWRpYSx0ZWdyYTMwLWFodWIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL252aWRpYSx0ZWdyYTMwLWFodWIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlOWExODkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbnZpZGlhLHRlZ3JhMzAtYWh1Yi50eHQKQEAgLTAsMCArMSw4OCBAQAorTlZJRElBIFRlZ3JhMzAgQUhVQiAoQXVkaW8gSHViKQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogRm9yIFRlZ3JhMzAsIG11c3QgY29udGFpbiAibnZpZGlhLHRlZ3JhMzAtYWh1YiIuICBGb3IgVGVncmExMTQsCisgIG11c3QgY29udGFpbiAibnZpZGlhLHRlZ3JhMTE0LWFodWIiLiAgRm9yIFRlZ3JhMTI0LCBtdXN0IGNvbnRhaW4KKyAgIm52aWRpYSx0ZWdyYTEyNC1haHViIi4gIE90aGVyd2lzZSwgbXVzdCBjb250YWluICJudmlkaWEsPGNoaXA+LWFodWIiLAorICBwbHVzIGF0IGxlYXN0IG9uZSBvZiB0aGUgYWJvdmUsIHdoZXJlIDxjaGlwPiBpcyB0ZWdyYTEzMi4KKy0gcmVnIDogU2hvdWxkIGNvbnRhaW4gdGhlIHJlZ2lzdGVyIHBoeXNpY2FsIGFkZHJlc3MgYW5kIGxlbmd0aCBmb3IgZWFjaCBvZgorICB0aGUgQUhVQidzIHJlZ2lzdGVyIGJsb2Nrcy4KKyAgLSBUZWdyYTMwIHJlcXVpcmVzIDIgZW50cmllcywgZm9yIHRoZSBBUEJJRiBhbmQgQUhVQi9BVURJTyByZWdpc3RlciBibG9ja3MuCisgIC0gVGVncmExMTQgcmVxdWlyZXMgYW4gYWRkaXRpb25hbCBlbnRyeSwgZm9yIHRoZSBBUEJJRjIgcmVnaXN0ZXIgYmxvY2suCistIGludGVycnVwdHMgOiBTaG91bGQgY29udGFpbiBBSFVCIGludGVycnVwdAorLSBjbG9ja3MgOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCisgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorLSBjbG9jay1uYW1lcyA6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIC0gZF9hdWRpbworICAtIGFwYmlmCistIHJlc2V0cyA6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiByZXNldC1uYW1lcy4KKyAgU2VlIC4uL3Jlc2V0L3Jlc2V0LnR4dCBmb3IgZGV0YWlscy4KKy0gcmVzZXQtbmFtZXMgOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICBUZWdyYTMwIGFuZCBsYXRlcjoKKyAgLSBkX2F1ZGlvCisgIC0gYXBiaWYKKyAgLSBpMnMwCisgIC0gaTJzMQorICAtIGkyczIKKyAgLSBpMnMzCisgIC0gaTJzNAorICAtIGRhbTAKKyAgLSBkYW0xCisgIC0gZGFtMgorICAtIHNwZGlmCisgIFRlZ3JhMTE0IGFuZCBsYXRlciBhZGRpdGlvbmFsbHkgcmVxdWlyZToKKyAgLSBhbXgKKyAgLSBhZHgKKyAgVGVncmExMjQgYW5kIGxhdGVyIGFkZGl0aW9uYWxseSByZXF1aXJlOgorICAtIGFteDEKKyAgLSBhZHgxCisgIC0gYWZjMAorICAtIGFmYzEKKyAgLSBhZmMyCisgIC0gYWZjMworICAtIGFmYzQKKyAgLSBhZmM1CistIHJhbmdlcyA6IFRoZSBidXMgYWRkcmVzcyBtYXBwaW5nIGZvciB0aGUgY29uZmlnbGluayByZWdpc3RlciBidXMuCisgIENhbiBiZSBlbXB0eSBzaW5jZSB0aGUgbWFwcGluZyBpcyAxOjEuCistIGRtYXMgOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCisgIFNlZSAuLi9kbWEvZG1hLnR4dCBmb3IgZGV0YWlscy4KKy0gZG1hLW5hbWVzIDogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgLSByeDAgLi4gcng8bj4KKyAgLSB0eDAgLi4gdHg8bj4KKyAgLi4uIHdoZXJlIG4gaXM6CisgIFRlZ3JhMzA6IDMKKyAgVGVncmExMTQsIFRlZ3JhMTI0OiA5CistICNhZGRyZXNzLWNlbGxzIDogRm9yIHRoZSBjb25maWdsaW5rIGJ1cy4gU2hvdWxkIGJlIDwxPjsKKy0gI3NpemUtY2VsbHMgOiBGb3IgdGhlIGNvbmZpZ2xpbmsgYnVzLiBTaG91bGQgYmUgPDE+LgorCitBSFVCIGNsaWVudCBtb2R1bGVzIG5lZWQgdG8gc3BlY2lmeSB0aGUgSURzIG9mIHRoZWlyIENJRnMgKENsaWVudCBJbnRlckZhY2VzKS4KK0ZvciBSWCBDSUZzLCB0aGUgbnVtYmVycyBpbmRpY2F0ZSB0aGUgcmVnaXN0ZXIgbnVtYmVyIHdpdGhpbiBBSFVCIHJvdXRpbmcKK3JlZ2lzdGVyIHNwYWNlIChBUEJJRiAwLi4zIFJYLCBJMlMgMC4uNSBSWCwgREFNIDAuLjIgUlggMC4uMSwgU1BESUYgUlggMC4uMSkuCitGb3IgVFggQ0lGcywgdGhlIG51bWJlcnMgaW5kaWNhdGUgdGhlIGJpdCBwb3NpdGlvbiB3aXRoaW4gdGhlIEFIVUIgcm91dGluZworcmVnaXN0ZXJzIChBUEJJRiAwLi4zIFRYLCBJMlMgMC4uNSBUWCwgREFNIDAuLjIgVFgsIFNQRElGIFRYIDAuLjEpLgorCitFeGFtcGxlOgorCithaHViQDcwMDgwMDAwIHsKKwljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTMwLWFodWIiOworCXJlZyA9IDwweDcwMDgwMDAwIDB4MjAwIDB4NzAwODAyMDAgMHgxMDA+OworCWludGVycnVwdHMgPSA8IDAgMTAzIDB4MDQgPjsKKwludmlkaWEsZG1hLXJlcXVlc3Qtc2VsZWN0b3IgPSA8JmFwYmRtYSAxPjsKKwljbG9ja3MgPSA8JnRlZ3JhX2NhciAxMDY+LCA8JnRlZ3JhX2NhciAxMDc+OworCWNsb2NrLW5hbWVzID0gImRfYXVkaW8iLCAiYXBiaWYiOworCXJlc2V0cyA9IDwmdGVncmFfY2FyIDEwNj4sIDwmdGVncmFfY2FyIDEwNz4sIDwmdGVncmFfY2FyIDMwPiwKKwkJPCZ0ZWdyYV9jYXIgMTE+LCA8JnRlZ3JhX2NhciAxOD4sIDwmdGVncmFfY2FyIDEwMT4sCisJCTwmdGVncmFfY2FyIDEwMj4sIDwmdGVncmFfY2FyIDEwOD4sIDwmdGVncmFfY2FyIDEwOT4sCisJCTwmdGVncmFfY2FyIDExMD4sIDwmdGVncmFfY2FyIDEwPjsKKwlyZXNldC1uYW1lcyA9ICJkX2F1ZGlvIiwgImFwYmlmIiwgImkyczAiLCAiaTJzMSIsICJpMnMyIiwKKwkJImkyczMiLCAiaTJzNCIsICJkYW0wIiwgImRhbTEiLCAiZGFtMiIsCisJCSJzcGRpZiI7CisJZG1hcyA9IDwmYXBiZG1hIDE+LCA8JmFwYmRtYSAxPjsKKwkgICAgICAgPCZhcGJkbWEgMj4sIDwmYXBiZG1hIDI+OworCSAgICAgICA8JmFwYmRtYSAzPiwgPCZhcGJkbWEgMz47CisJICAgICAgIDwmYXBiZG1hIDQ+LCA8JmFwYmRtYSA0PjsKKwlkbWEtbmFtZXMgPSAicngwIiwgInR4MCIsICJyeDEiLCAidHgxIiwgInJ4MiIsICJ0eDIiLCAicngzIiwgInR4MyI7CisJcmFuZ2VzOworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDE+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9udmlkaWEsdGVncmEzMC1oZGEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL252aWRpYSx0ZWdyYTMwLWhkYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc1YzZlYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9udmlkaWEsdGVncmEzMC1oZGEudHh0CkBAIC0wLDAgKzEsMzAgQEAKK05WSURJQSBUZWdyYTMwIEhEQSBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBGb3IgVGVncmEzMCwgbXVzdCBjb250YWluICJudmlkaWEsdGVncmEzMC1oZGEiLiAgT3RoZXJ3aXNlLAorICBtdXN0IGNvbnRhaW4gJyJudmlkaWEsPGNoaXA+LWhkYSIsICJudmlkaWEsdGVncmEzMC1oZGEiJywgd2hlcmUgPGNoaXA+IGlzCisgIHRlZ3JhMTE0LCB0ZWdyYTEyNCwgb3IgdGVncmExMzIuCistIHJlZyA6IFNob3VsZCBjb250YWluIHRoZSBIREEgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGguCistIGludGVycnVwdHMgOiBUaGUgaW50ZXJydXB0IGZyb20gdGhlIEhEQSBjb250cm9sbGVyLgorLSBjbG9ja3MgOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggcmVxdWlyZWQgZW50cnkgaW4gY2xvY2stbmFtZXMuCisgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorLSBjbG9jay1uYW1lcyA6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6IGhkYSwgaGRhMmhkbWksIGhkYTJjb2RlY18yeAorLSByZXNldHMgOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gcmVzZXQtbmFtZXMuCisgIFNlZSAuLi9yZXNldC9yZXNldC50eHQgZm9yIGRldGFpbHMuCistIHJlc2V0LW5hbWVzIDogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczogaGRhLCBoZGEyaGRtaSwgaGRhMmNvZGVjXzJ4CisKK0V4YW1wbGU6CisKK2hkYUAwLDcwMDMwMDAwIHsKKwljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTEyNC1oZGEiLCAibnZpZGlhLHRlZ3JhMzAtaGRhIjsKKwlyZWcgPSA8MHgwIDB4NzAwMzAwMDAgMHgwIDB4MTAwMDA+OworCWludGVycnVwdHMgPSA8R0lDX1NQSSA4MSBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwljbG9ja3MgPSA8JnRlZ3JhX2NhciBURUdSQTEyNF9DTEtfSERBPiwKKwkJIDwmdGVncmFfY2FyIFRFR1JBMTI0X0NMS19IREEySERNST4sCisJCSA8JnRlZ3JhX2NhciBURUdSQTEyNF9DTEtfSERBMkNPREVDXzJYPjsKKwljbG9jay1uYW1lcyA9ICJoZGEiLCAiaGRhMmhkbWkiLCAiaGRhMmNvZGVjXzJ4IjsKKwlyZXNldHMgPSA8JnRlZ3JhX2NhciAxMjU+LCAvKiBoZGEgKi8KKwkJIDwmdGVncmFfY2FyIDEyOD4sIC8qIGhkYTJoZG1pICovCisJCSA8JnRlZ3JhX2NhciAxMTE+OyAvKiBoZGEyY29kZWNfMnggKi8KKwlyZXNldC1uYW1lcyA9ICJoZGEiLCAiaGRhMmhkbWkiLCAiaGRhMmNvZGVjXzJ4IjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbnZpZGlhLHRlZ3JhMzAtaTJzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9udmlkaWEsdGVncmEzMC1pMnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4Y2FhOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvbnZpZGlhLHRlZ3JhMzAtaTJzLnR4dApAQCAtMCwwICsxLDI3IEBACitOVklESUEgVGVncmEzMCBJMlMgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogRm9yIFRlZ3JhMzAsIG11c3QgY29udGFpbiAibnZpZGlhLHRlZ3JhMzAtaTJzIi4gIEZvciBUZWdyYTEyNCwKKyAgbXVzdCBjb250YWluICJudmlkaWEsdGVncmExMjQtaTJzIi4gIE90aGVyd2lzZSwgbXVzdCBjb250YWluCisgICJudmlkaWEsPGNoaXA+LWkycyIgcGx1cyBhdCBsZWFzdCBvbmUgb2YgdGhlIGFib3ZlLCB3aGVyZSA8Y2hpcD4gaXMKKyAgdGVncmExMTQgb3IgdGVncmExMzIuCistIHJlZyA6IFNob3VsZCBjb250YWluIEkyUyByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorLSBjbG9ja3MgOiBNdXN0IGNvbnRhaW4gb25lIGVudHJ5LCBmb3IgdGhlIG1vZHVsZSBjbG9jay4KKyAgU2VlIC4uL2Nsb2Nrcy9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCistIHJlc2V0cyA6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiByZXNldC1uYW1lcy4KKyAgU2VlIC4uL3Jlc2V0L3Jlc2V0LnR4dCBmb3IgZGV0YWlscy4KKy0gcmVzZXQtbmFtZXMgOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAtIGkycworLSBudmlkaWEsYWh1Yi1jaWYtaWRzIDogVGhlIGxpc3Qgb2YgQUhVQiBDSUYgSURzIGZvciB0aGlzIHBvcnQsIHJ4IChwbGF5YmFjaykKKyAgZmlyc3QsIHR4IChjYXB0dXJlKSBzZWNvbmQuIFNlZSBudmlkaWEsdGVncmEzMC1haHViLnR4dCBmb3IgdmFsdWVzLgorCitFeGFtcGxlOgorCitpMnNANzAwODAzMDAgeworCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMzAtaTJzIjsKKwlyZWcgPSA8MHg3MDA4MDMwMCAweDEwMD47CisJbnZpZGlhLGFodWItY2lmLWlkcyA9IDw0IDQ+OworCWNsb2NrcyA9IDwmdGVncmFfY2FyIDExPjsKKwlyZXNldHMgPSA8JnRlZ3JhX2NhciAxMT47CisJcmVzZXQtbmFtZXMgPSAiaTJzIjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvb21hcC1hYmUtdHdsNjA0MC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvb21hcC1hYmUtdHdsNjA0MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ0MGM4NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9vbWFwLWFiZS10d2w2MDQwLnR4dApAQCAtMCwwICsxLDkxIEBACisqIFRleGFzIEluc3RydW1lbnRzIE9NQVA0KyBhbmQgdHdsNjA0MCBiYXNlZCBhdWRpbyBzZXR1cHMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInRpLGFiZS10d2w2MDQwIgorLSB0aSxtb2RlbDogTmFtZSBvZiB0aGUgc291bmQgY2FyZCAoIGZvciBleGFtcGxlICJTRFA0NDMwIikKKy0gdGksbWNsay1mcmVxOiBNQ0xLIGZyZXF1ZW5jeSBmb3IgSFBQTEwgb3BlcmF0aW9uCistIHRpLG1jcGRtOiBwaGFuZGxlIGZvciB0aGUgTWNQRE0gbm9kZQorLSB0aSx0d2w2MDQwOiBwaGFuZGxlIGZvciB0aGUgdHdsNjA0MCBjb3JlIG5vZGUKKy0gdGksYXVkaW8tcm91dGluZzogTGlzdCBvZiBjb25uZWN0aW9ucyBiZXR3ZWVuIGF1ZGlvIGNvbXBvbmVudHMuCisgIEVhY2ggZW50cnkgaXMgYSBwYWlyIG9mIHN0cmluZ3MsIHRoZSBmaXJzdCBiZWluZyB0aGUgY29ubmVjdGlvbidzIHNpbmssCisgIHRoZSBzZWNvbmQgYmVpbmcgdGhlIGNvbm5lY3Rpb24ncyBzb3VyY2UuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHRpLGRtaWM6IHBoYW5kbGUgZm9yIHRoZSBPTUFQIGRtaWMgbm9kZSBpZiB0aGUgbWFjaGluZSBoYXZlIGl0IGNvbm5lY3RlZAorLSB0aSxqYWNrX2RldGVjdGlvbjogTmVlZCB0byBiZSBwcmVzZW50IGlmIHRoZSBib2FyZCBjYXBhYmxlIHRvIGRldGVjdCBqYWNrCisgIGluc2VydGlvbiwgcmVtb3ZhbC4KKworQXZhaWxhYmxlIGF1ZGlvIGVuZHBvaW50cyBmb3IgdGhlIGF1ZGlvLXJvdXRpbmcgdGFibGU6CisKK0JvYXJkIGNvbm5lY3RvcnM6CisgKiBIZWFkc2V0IFN0ZXJlb3Bob25lCisgKiBFYXJwaG9uZSBTcGsKKyAqIEV4dCBTcGsKKyAqIExpbmUgT3V0CisgKiBWaWJyYXRvcgorICogSGVhZHNldCBNaWMKKyAqIE1haW4gSGFuZHNldCBNaWMKKyAqIFN1YiBIYW5kc2V0IE1pYworICogTGluZSBJbgorICogRGlnaXRhbCBNaWMKKwordHdsNjA0MCBwaW5zOgorICogSFNPTAorICogSFNPUgorICogRVAKKyAqIEhGTAorICogSEZSCisgKiBBVVhMCisgKiBBVVhSCisgKiBWSUJSQUwKKyAqIFZJQlJBUgorICogSFNNSUMKKyAqIE1BSU5NSUMKKyAqIFNVQk1JQworICogQUZNTAorICogQUZNUgorCisgKiBIZWFkc2V0IE1pYyBCaWFzCisgKiBNYWluIE1pYyBCaWFzCisgKiBEaWdpdGFsIE1pYzEgQmlhcworICogRGlnaXRhbCBNaWMyIEJpYXMKKworRGlnaXRhbCBtaWMgcGluczoKKyAqIERNaWMKKworRXhhbXBsZToKKworc291bmQgeworCWNvbXBhdGlibGUgPSAidGksYWJlLXR3bDYwNDAiOworCXRpLG1vZGVsID0gIlNEUDQ0MzAiOworCisJdGksamFjay1kZXRlY3Rpb247CisJdGksbWNsay1mcmVxID0gPDM4NDAwMDAwPjsKKworCXRpLG1jcGRtID0gPCZtY3BkbT47CisJdGksZG1pYyA9IDwmZG1pYz47CisKKwl0aSx0d2w2MDQwID0gPCZ0d2w2MDQwPjsKKworCS8qIEF1ZGlvIHJvdXRpbmcgKi8KKwl0aSxhdWRpby1yb3V0aW5nID0KKwkJIkhlYWRzZXQgU3RlcmVvcGhvbmUiLCAiSFNPTCIsCisJCSJIZWFkc2V0IFN0ZXJlb3Bob25lIiwgIkhTT1IiLAorCQkiRWFycGhvbmUgU3BrIiwgIkVQIiwKKwkJIkV4dCBTcGsiLCAiSEZMIiwKKwkJIkV4dCBTcGsiLCAiSEZSIiwKKwkJIkxpbmUgT3V0IiwgIkFVWEwiLAorCQkiTGluZSBPdXQiLCAiQVVYUiIsCisJCSJWaWJyYXRvciIsICJWSUJSQUwiLAorCQkiVmlicmF0b3IiLCAiVklCUkFSIiwKKwkJIkhTTUlDIiwgIkhlYWRzZXQgTWljIiwKKwkJIkhlYWRzZXQgTWljIiwgIkhlYWRzZXQgTWljIEJpYXMiLAorCQkiTUFJTk1JQyIsICJNYWluIEhhbmRzZXQgTWljIiwKKwkJIk1haW4gSGFuZHNldCBNaWMiLCAiTWFpbiBNaWMgQmlhcyIsCisJCSJTVUJNSUMiLCAiU3ViIEhhbmRzZXQgTWljIiwKKwkJIlN1YiBIYW5kc2V0IE1pYyIsICJNYWluIE1pYyBCaWFzIiwKKwkJIkFGTUwiLCAiTGluZSBJbiIsCisJCSJBRk1SIiwgIkxpbmUgSW4iLAorCQkiRE1pYyIsICJEaWdpdGFsIE1pYyIsCisJCSJEaWdpdGFsIE1pYyIsICJEaWdpdGFsIE1pYzEgQmlhcyI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL29tYXAtZG1pYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvb21hcC1kbWljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDgxMDVmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL29tYXAtZG1pYy50eHQKQEAgLTAsMCArMSwyMSBAQAorKiBUZXhhcyBJbnN0cnVtZW50cyBPTUFQNCsgRGlnaXRhbCBNaWNyb3Bob25lIE1vZHVsZQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAidGksb21hcDQtZG1pYyIKKy0gcmVnOiBSZWdpc3RlciBsb2NhdGlvbiBhbmQgc2l6ZSBhcyBhbiBhcnJheToKKyAgICAgICA8TVBVIGFjY2VzcyBiYXNlIGFkZHJlc3MsIHNpemU+LAorICAgICAgIDxMMyBpbnRlcmNvbm5lY3QgYWRkcmVzcywgc2l6ZT47CistIGludGVycnVwdHM6IEludGVycnVwdCBudW1iZXIgZm9yIERNSUMKKy0gaW50ZXJydXB0LXBhcmVudDogVGhlIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlcgorLSB0aSxod21vZHM6IE5hbWUgb2YgdGhlIGh3bW9kIGFzc29jaWF0ZWQgd2l0aCBPTUFQIGRtaWMgSVAKKworRXhhbXBsZToKKworZG1pYzogZG1pY0A0MDEyZTAwMCB7CisJY29tcGF0aWJsZSA9ICJ0aSxvbWFwNC1kbWljIjsKKwlyZWcgPSA8MHg0MDEyZTAwMCAweDdmPiwgLyogTVBVIHByaXZhdGUgYWNjZXNzICovCisJICAgICAgPDB4NDkwMmUwMDAgMHg3Zj47IC8qIEwzIEludGVyY29ubmVjdCAqLworCWludGVycnVwdHMgPSA8MCAxMTQgMHg0PjsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZnaWM+OworCXRpLGh3bW9kcyA9ICJkbWljIjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvb21hcC1tY2JzcC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvb21hcC1tY2JzcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdjY2U0NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9vbWFwLW1jYnNwLnR4dApAQCAtMCwwICsxLDM3IEBACisqIFRleGFzIEluc3RydW1lbnRzIE9NQVAyKyBNY0JTUCBtb2R1bGUKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInRpLG9tYXAyNDIwLW1jYnNwIiBmb3IgTWNCU1Agb24gT01BUDI0MjAKKwkgICAgICAidGksb21hcDI0MzAtbWNic3AiIGZvciBNY0JTUCBvbiBPTUFQMjQzMAorCSAgICAgICJ0aSxvbWFwMy1tY2JzcCIgZm9yIE1jQlNQIG9uIE9NQVAzCisJICAgICAgInRpLG9tYXA0LW1jYnNwIiBmb3IgTWNCU1Agb24gT01BUDQgYW5kIG5ld2VyIFNvQworLSByZWc6IFJlZ2lzdGVyIGxvY2F0aW9uIGFuZCBzaXplLCBmb3IgT01BUDQrIGFzIGFuIGFycmF5OgorICAgICAgIDxNUFUgYWNjZXNzIGJhc2UgYWRkcmVzcywgc2l6ZT4sCisgICAgICAgPEwzIGludGVyY29ubmVjdCBhZGRyZXNzLCBzaXplPjsKKy0gcmVnLW5hbWVzOiBBcnJheSBvZiBzdHJpbmdzIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWRkcmVzcyBzcGFjZQorLSBpbnRlcnJ1cHRzOiBJbnRlcnJ1cHQgbnVtYmVycyBmb3IgdGhlIE1jQlNQIHBvcnQsIGFzIGFuIGFycmF5IGluIGNhc2UgdGhlCisJICAgICAgTWNCU1AgSVAgaGF2ZSBtb3JlIGludGVycnVwdCBsaW5lczoKKwk8T0NQIGNvbXBsaWFudCBpcnE+LAorCTxUWCBpcnE+LAorCTxSWCBpcnE+OworLSBpbnRlcnJ1cHQtbmFtZXM6IEFycmF5IG9mIHN0cmluZ3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbnRlcnJ1cHQgbnVtYmVycworLSBpbnRlcnJ1cHQtcGFyZW50OiBUaGUgcGFyZW50IGludGVycnVwdCBjb250cm9sbGVyCistIHRpLGJ1ZmZlci1zaXplOiBTaXplIG9mIHRoZSBGSUZPIG9uIHRoZSBwb3J0IChPTUFQMjQzMCBhbmQgbmV3ZXIgU29DKQorLSB0aSxod21vZHM6IE5hbWUgb2YgdGhlIGh3bW9kIGFzc29jaWF0ZWQgdG8gdGhlIE1jQlNQIHBvcnQKKworRXhhbXBsZToKKworbWNic3AyOiBtY2JzcEA0OTAyMjAwMCB7CisJY29tcGF0aWJsZSA9ICJ0aSxvbWFwMy1tY2JzcCI7CisJcmVnID0gPDB4NDkwMjIwMDAgMHhmZj4sCisJICAgICAgPDB4NDkwMjgwMDAgMHhmZj47CisJcmVnLW5hbWVzID0gIm1wdSIsICJzaWRldG9uZSI7CisJaW50ZXJydXB0cyA9IDwwIDE3IDB4ND4sIC8qIE9DUCBjb21wbGlhbnQgaW50ZXJydXB0ICovCisJCSAgICAgPDAgNjIgMHg0PiwgLyogVFggaW50ZXJydXB0ICovCisJCSAgICAgPDAgNjMgMHg0PiwgLyogUlggaW50ZXJydXB0ICovCisJCSAgICAgPDAgNCAweDQ+OyAgLyogU2lkZXRvbmUgKi8KKwlpbnRlcnJ1cHQtbmFtZXMgPSAiY29tbW9uIiwgInR4IiwgInJ4IiwgInNpZGV0b25lIjsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpbnRjPjsKKwl0aSxidWZmZXItc2l6ZSA9IDwxMjgwPjsKKwl0aSxod21vZHMgPSAibWNic3AyIjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvb21hcC1tY3BkbS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvb21hcC1tY3BkbS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc0MWRmZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9vbWFwLW1jcGRtLnR4dApAQCAtMCwwICsxLDIxIEBACisqIFRleGFzIEluc3RydW1lbnRzIE9NQVA0KyBNY1BETQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAidGksb21hcDQtbWNwZG0iCistIHJlZzogUmVnaXN0ZXIgbG9jYXRpb24gYW5kIHNpemUgYXMgYW4gYXJyYXk6CisgICAgICAgPE1QVSBhY2Nlc3MgYmFzZSBhZGRyZXNzLCBzaXplPiwKKyAgICAgICA8TDMgaW50ZXJjb25uZWN0IGFkZHJlc3MsIHNpemU+OworLSBpbnRlcnJ1cHRzOiBJbnRlcnJ1cHQgbnVtYmVyIGZvciBNY1BETQorLSBpbnRlcnJ1cHQtcGFyZW50OiBUaGUgcGFyZW50IGludGVycnVwdCBjb250cm9sbGVyCistIHRpLGh3bW9kczogTmFtZSBvZiB0aGUgaHdtb2QgYXNzb2NpYXRlZCB0byB0aGUgTWNQRE0KKworRXhhbXBsZToKKworbWNwZG06IG1jcGRtQDQwMTMyMDAwIHsKKwljb21wYXRpYmxlID0gInRpLG9tYXA0LW1jcGRtIjsKKwlyZWcgPSA8MHg0MDEzMjAwMCAweDdmPiwgLyogTVBVIHByaXZhdGUgYWNjZXNzICovCisJICAgICAgPDB4NDkwMzIwMDAgMHg3Zj47IC8qIEwzIEludGVyY29ubmVjdCAqLworCWludGVycnVwdHMgPSA8MCAxMTIgMHg0PjsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZnaWM+OworCXRpLGh3bW9kcyA9ICJtY3BkbSI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL29tYXAtdHdsNDAzMC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvb21hcC10d2w0MDMwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmE3MTVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL29tYXAtdHdsNDAzMC50eHQKQEAgLTAsMCArMSw2MiBAQAorKiBUZXhhcyBJbnN0cnVtZW50cyBTb0Mgd2l0aCB0d2w0MDMwIGJhc2VkIGF1ZGlvIHNldHVwcworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAidGksb21hcC10d2w0MDMwIgorLSB0aSxtb2RlbDogTmFtZSBvZiB0aGUgc291bmQgY2FyZCAoZm9yIGV4YW1wbGUgIm9tYXAzYmVhZ2xlIikKKy0gdGksbWNic3A6IHBoYW5kbGUgZm9yIHRoZSBNY0JTUCBub2RlCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHRpLGNvZGVjOiBwaGFuZGxlIGZvciB0aGUgdHdsNDAzMCBhdWRpbyBub2RlCistIHRpLG1jYnNwLXZvaWNlOiBwaGFuZGxlIGZvciB0aGUgTWNCU1Agbm9kZSBjb25uZWN0ZWQgdG8gdGhlIHZvaWNlIHBvcnQgb2YgdHdsCistIHRpLCBqYWNrLWRldC1ncGlvOiBKYWNrIGRldGVjdCBHUElPCistIHRpLGF1ZGlvLXJvdXRpbmc6IExpc3Qgb2YgY29ubmVjdGlvbnMgYmV0d2VlbiBhdWRpbyBjb21wb25lbnRzLgorICBFYWNoIGVudHJ5IGlzIGEgcGFpciBvZiBzdHJpbmdzLCB0aGUgZmlyc3QgYmVpbmcgdGhlIGNvbm5lY3Rpb24ncyBzaW5rLAorICB0aGUgc2Vjb25kIGJlaW5nIHRoZSBjb25uZWN0aW9uJ3Mgc291cmNlLgorICBJZiB0aGUgcm91dGluZyBpcyBub3QgcHJvdmlkZWQgYWxsIHBvc3NpYmxlIGNvbm5lY3Rpb24gd2lsbCBiZSBhdmFpbGFibGUKKworQXZhaWxhYmxlIGF1ZGlvIGVuZHBvaW50cyBmb3IgdGhlIGF1ZGlvLXJvdXRpbmcgdGFibGU6CisKK0JvYXJkIGNvbm5lY3RvcnM6CisgKiBIZWFkc2V0IFN0ZXJlb3Bob25lCisgKiBFYXJwaWVjZSBTcGsKKyAqIEhhbmRzZnJlZSBTcGsKKyAqIEV4dCBTcGsKKyAqIE1haW4gTWljCisgKiBTdWIgTWljCisgKiBIZWFkc2V0IE1pYworICogQ2Fya2l0IE1pYworICogRGlnaXRhbDAgTWljCisgKiBEaWdpdGFsMSBNaWMKKyAqIExpbmUgSW4KKwordHdsNDAzMCBwaW5zOgorICogSFNPTAorICogSFNPUgorICogRUFSUElFQ0UKKyAqIEhGTAorICogSEZSCisgKiBQUkVEUklWRUwKKyAqIFBSRURSSVZFUgorICogQ0FSS0lUTAorICogQ0FSS0lUUgorICogTUFJTk1JQworICogU1VCTUlDCisgKiBIU01JQworICogRElHSU1JQzAKKyAqIERJR0lNSUMxCisgKiBDQVJLSVRNSUMKKyAqIEFVWEwKKyAqIEFVWFIKKworICogSGVhZHNldCBNaWMgQmlhcworICogTWljIEJpYXMgMSAvKiBVc2VkIGZvciBNYWluIE1pYyBvciBEaWdpbWljMCAqLworICogTWljIEJpYXMgMiAvKiBVc2VkIGZvciBTdWIgTWljIG9yIERpZ2ltaWMxICovCisKK0V4YW1wbGU6CisKK3NvdW5kIHsKKwljb21wYXRpYmxlID0gInRpLG9tYXAtdHdsNDAzMCI7CisJdGksbW9kZWwgPSAib21hcDNiZWFnbGUiOworCisJdGksbWNic3AgPSA8Jm1jYnNwMj47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3BjbTE3OTJhLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9wY20xNzkyYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTcwYmExZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9wY20xNzkyYS50eHQKQEAgLTAsMCArMSwxOCBAQAorVGV4YXMgSW5zdHJ1bWVudHMgcGNtMTc5MmEgRFQgYmluZGluZ3MKKworVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIFNQSSBidXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAtIGNvbXBhdGlibGU6ICJ0aSxwY20xNzkyYSIKKworRm9yIHJlcXVpcmVkIHByb3BlcnRpZXMgb24gU1BJLCBwbGVhc2UgY29uc3VsdAorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktYnVzLnR4dAorCitFeGFtcGxlczoKKworCWNvZGVjX3NwaTogMTc5MmFAMCB7CisJCWNvbXBhdGlibGUgPSAidGkscGNtMTc5MmEiOworCQlzcGktbWF4LWZyZXF1ZW5jeSA9IDw2MDAwMDA+OworCX07CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9wY201MTJ4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9wY201MTJ4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWFlM2I0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3BjbTUxMngudHh0CkBAIC0wLDAgKzEsNTIgQEAKK1BDTTUxMnggYXVkaW8gQ09ERUNzCisKK1RoZXNlIGRldmljZXMgc3VwcG9ydCBib3RoIEkyQyBhbmQgU1BJIChjb25maWd1cmVkIHdpdGggcGluIHN0cmFwcGluZworb24gdGhlIGJvYXJkKS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGUgOiBPbmUgb2YgInRpLHBjbTUxMjEiLCAidGkscGNtNTEyMiIsICJ0aSxwY201MTQxIiBvcgorICAgICAgICAgICAgICAgICAidGkscGNtNTE0MiIKKworICAtIHJlZyA6IHRoZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlIGZvciBJMkMsIHRoZSBjaGlwIHNlbGVjdAorICAgICAgICAgIG51bWJlciBmb3IgU1BJLgorCisgIC0gQVZERC1zdXBwbHksIERWREQtc3VwcGx5LCBhbmQgQ1BWREQtc3VwcGx5IDogcG93ZXIgc3VwcGxpZXMgZm9yIHRoZQorICAgIGRldmljZSwgYXMgY292ZXJlZCBpbiBiaW5kaW5ncy9yZWd1bGF0b3IvcmVndWxhdG9yLnR4dAorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCisgIC0gY2xvY2tzIDogQSBjbG9jayBzcGVjaWZpZXIgZm9yIHRoZSBjbG9jayBjb25uZWN0ZWQgYXMgU0NMSy4gIElmIHRoaXMKKyAgICBpcyBhYnNlbnQgdGhlIGRldmljZSB3aWxsIGJlIGNvbmZpZ3VyZWQgdG8gY2xvY2sgZnJvbSBCQ0xLLiAgSWYgcGxsLWluCisgICAgYW5kIHBsbC1vdXQgYXJlIHNwZWNpZmllZCBpbiBhZGRpdGlvbiB0byBhIGNsb2NrLCB0aGUgZGV2aWNlIGlzCisgICAgY29uZmlndXJlZCB0byBhY2NlcHQgY2xvY2sgaW5wdXQgb24gYSBzcGVjaWZpZWQgZ3BpbyBwaW4uCisKKyAgLSBwbGwtaW4sIHBsbC1vdXQgOiBncGlvIHBpbnMgdXNlZCB0byBjb25uZWN0IHRoZSBwbGwgdXNpbmcgPDE+CisgICAgdGhyb3VnaCA8Nj4uICBUaGUgZGV2aWNlIHdpbGwgYmUgY29uZmlndXJlZCBmb3IgY2xvY2sgaW5wdXQgb24gdGhlCisgICAgZ2l2ZW4gcGxsLWluIHBpbiBhbmQgUExMIG91dHB1dCBvbiB0aGUgZ2l2ZW4gcGxsLW91dCBwaW4uICBBbgorICAgIGV4dGVybmFsIGNvbm5lY3Rpb24gZnJvbSB0aGUgcGxsLW91dCBwaW4gdG8gdGhlIFNDTEsgcGluIGlzIGFzc3VtZWQuCisKK0V4YW1wbGVzOgorCisJcGNtNTEyMjogcGNtNTEyMkA0YyB7CisJCWNvbXBhdGlibGUgPSAidGkscGNtNTEyMiI7CisJCXJlZyA9IDwweDRjPjsKKworCQlBVkRELXN1cHBseSA9IDwmcmVnXzN2M19hbmFsb2c+OworCQlEVkRELXN1cHBseSA9IDwmcmVnXzF2OD47CisJCUNQVkRELXN1cHBseSA9IDwmcmVnXzN2Mz47CisJfTsKKworCisJcGNtNTE0MjogcGNtNTE0MkA0YyB7CisJCWNvbXBhdGlibGUgPSAidGkscGNtNTE0MiI7CisJCXJlZyA9IDwweDRjPjsKKworCQlBVkRELXN1cHBseSA9IDwmcmVnXzN2M19hbmFsb2c+OworCQlEVkRELXN1cHBseSA9IDwmcmVnXzF2OD47CisJCUNQVkRELXN1cHBseSA9IDwmcmVnXzN2Mz47CisKKwkJY2xvY2tzID0gPCZzY2s+OworCQlwbGwtaW4gPSA8Mz47CisJCXBsbC1vdXQgPSA8Nj47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9xY29tLGFwcTgwMTYtc2JjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9xY29tLGFwcTgwMTYtc2JjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODEyOTM2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3Fjb20sYXBxODAxNi1zYmMudHh0CkBAIC0wLDAgKzEsNjAgQEAKKyogUXVhbGNvbW0gVGVjaG5vbG9naWVzIEFQUTgwMTYgU0JDIEFTb0MgbWFjaGluZSBkcml2ZXIKKworVGhpcyBub2RlIG1vZGVscyB0aGUgUXVhbGNvbW0gVGVjaG5vbG9naWVzIEFQUTgwMTYgU0JDIEFTb0MgbWFjaGluZSBkcml2ZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlCQk6ICJxY29tLGFwcTgwMTYtc2JjLXNuZGNhcmQiCisKKy0gcGluY3RybC1OCQk6IE9uZSBwcm9wZXJ0eSBtdXN0IGV4aXN0IGZvciBlYWNoIGVudHJ5IGluCisJCQkgIHBpbmN0cmwtbmFtZXMuICBTZWUgLi4vcGluY3RybC9waW5jdHJsLWJpbmRpbmdzLnR4dAorCQkJICBmb3IgZGV0YWlscyBvZiB0aGUgcHJvcGVydHkgdmFsdWVzLgorLSBwaW5jdHJsLW5hbWVzCQk6IE11c3QgY29udGFpbiBhICJkZWZhdWx0IiBlbnRyeS4KKy0gcmVnCQkJOiBNdXN0IGNvbnRhaW4gYW4gYWRkcmVzcyBmb3IgZWFjaCBlbnRyeSBpbiByZWctbmFtZXMuCistIHJlZy1uYW1lcwkJOiBBIGxpc3Qgd2hpY2ggbXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKwkJCQkqICJtaWMtaW9tdXgiCisJCQkJKiAic3Brci1pb211eCIKKy0gcWNvbSxtb2RlbAkJOiBOYW1lIG9mIHRoZSBzb3VuZCBjYXJkLgorCitEYWktbGluayBzdWJub2RlIHByb3BlcnRpZXMgYW5kIHN1Ym5vZGVzOgorCitSZXF1aXJlZCBkYWktbGluayBzdWJub2RlczoKKworLSBjcHUJCQkJCTogQ1BVICAgc3ViLW5vZGUKKy0gY29kZWMJCQkJCTogQ09ERUMgc3ViLW5vZGUKKworUmVxdWlyZWQgQ1BVL0NPREVDIHN1Ym5vZGVzIHByb3BlcnRpZXM6CisKKy1saW5rLW5hbWUJCTogTmFtZSBvZiB0aGUgZGFpIGxpbmsuCistc291bmQtZGFpCQk6IHBoYW5kbGUgYW5kIHBvcnQgb2YgQ1BVL0NPREVDCistY2FwdHVyZS1kYWkJCTogcGhhbmRsZSBhbmQgcG9ydCBvZiBDUFUvQ09ERUMKKworRXhhbXBsZToKKworc291bmQ6IHNvdW5kIHsKKwljb21wYXRpYmxlID0gInFjb20sYXBxODAxNi1zYmMtc25kY2FyZCI7CisJcmVnID0gPDB4MDc3MDIwMDAgMHg0PiwgPDB4MDc3MDIwMDQgMHg0PjsKKwlyZWctbmFtZXMgPSAibWljLWlvbXV4IiwgInNwa3ItaW9tdXgiOworCXFjb20sbW9kZWwgPSAiREI0MTBjIjsKKworCS8qIEkyUyAtIEludGVybmFsIGNvZGVjICovCisJaW50ZXJuYWwtZGFpLWxpbmtAMCB7CisJCWNwdSB7IC8qIFBSSU1BUlkgKi8KKwkJCXNvdW5kLWRhaSA9IDwmbHBhc3MgTUkyU19QUklNQVJZPjsKKwkJfTsKKwkJY29kZWMgeworCQkJc291bmQtZGFpID0gPCZ3Y2RfY29kZWMgMD47CisJCX07CisJfTsKKworCS8qIEV4dGVybmFsIFByaW1hcnkgb3IgRXh0ZXJuYWwgU2Vjb25kYXJ5IC1BRFY3NTMzIEhETUkgKi8KKwlleHRlcm5hbC1kYWktbGlua0AwIHsKKwkJbGluay1uYW1lID0gIkFEVjc1MzMiOworCQljcHUgeyAvKiBRVUFUICovCisJCQlzb3VuZC1kYWkgPSA8JmxwYXNzIE1JMlNfUVVBVEVSTkFSWT47CisJCX07CisJCWNvZGVjIHsKKwkJCXNvdW5kLWRhaSA9IDwmYWR2X2JyaWRnZSAwPjsKKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9xY29tLGxwYXNzLWNwdS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvcWNvbSxscGFzcy1jcHUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxYzY0ODMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvcWNvbSxscGFzcy1jcHUudHh0CkBAIC0wLDAgKzEsNTQgQEAKKyogUXVhbGNvbW0gVGVjaG5vbG9naWVzIExQQVNTIENQVSBEQUkKKworVGhpcyBub2RlIG1vZGVscyB0aGUgUXVhbGNvbW0gVGVjaG5vbG9naWVzIExvdy1Qb3dlciBBdWRpbyBTdWJTeXN0ZW0gKExQQVNTKS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlCQk6ICJxY29tLGxwYXNzLWNwdSIgb3IgInFjb20sYXBxODAxNi1scGFzcy1jcHUiCistIGNsb2NrcwkJOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCistIGNsb2NrLW5hbWVzCQk6IEEgbGlzdCB3aGljaCBtdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorCQkJCSogImFoYml4LWNsayIKKwkJCQkqICJtaTJzLW9zci1jbGsiCisJCQkJKiAibWkycy1iaXQtY2xrIgorCQkJOiByZXF1aXJlZCBjbG9ja3MgZm9yICJxY29tLGxwYXNzLWNwdS1hcHE4MDE2IgorCQkJCSogImFoYml4LWNsayIKKwkJCQkqICJtaTJzLWJpdC1jbGswIgorCQkJCSogIm1pMnMtYml0LWNsazEiCisJCQkJKiAibWkycy1iaXQtY2xrMiIKKwkJCQkqICJtaTJzLWJpdC1jbGszIgorCQkJCSogInBjbm9jLW1wb3J0LWNsayIKKwkJCQkqICJwY25vYy1zd2F5LWNsayIKKworLSBpbnRlcnJ1cHRzCQk6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbgorCQkJICBpbnRlcnJ1cHQtbmFtZXMuCistIGludGVycnVwdC1uYW1lcwk6IEEgbGlzdCB3aGljaCBtdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorCQkJCSogImxwYXNzLWlycS1scGFpZiIKKy0gcGluY3RybC1OCQk6IE9uZSBwcm9wZXJ0eSBtdXN0IGV4aXN0IGZvciBlYWNoIGVudHJ5IGluCisJCQkgIHBpbmN0cmwtbmFtZXMuICBTZWUgLi4vcGluY3RybC9waW5jdHJsLWJpbmRpbmdzLnR4dAorCQkJICBmb3IgZGV0YWlscyBvZiB0aGUgcHJvcGVydHkgdmFsdWVzLgorLSBwaW5jdHJsLW5hbWVzCQk6IE11c3QgY29udGFpbiBhICJkZWZhdWx0IiBlbnRyeS4KKy0gcmVnCQkJOiBNdXN0IGNvbnRhaW4gYW4gYWRkcmVzcyBmb3IgZWFjaCBlbnRyeSBpbiByZWctbmFtZXMuCistIHJlZy1uYW1lcwkJOiBBIGxpc3Qgd2hpY2ggbXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKwkJCQkqICJscGFzcy1scGFpZiIKKworCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gcWNvbSxhZHNwCQk6IFBoYW5kbGUgZm9yIHRoZSBhdWRpbyBEU1Agbm9kZQorCitFeGFtcGxlOgorCitscGFzc0AyODEwMDAwMCB7CisJY29tcGF0aWJsZSA9ICJxY29tLGxwYXNzLWNwdSI7CisJY2xvY2tzID0gPCZsY2MgQUhCSVhfQ0xLPiwgPCZsY2MgTUkyU19PU1JfQ0xLPiwgPCZsY2MgTUkyU19CSVRfQ0xLPjsKKwljbG9jay1uYW1lcyA9ICJhaGJpeC1jbGsiLCAibWkycy1vc3ItY2xrIiwgIm1pMnMtYml0LWNsayI7CisJaW50ZXJydXB0cyA9IDwwIDg1IDE+OworCWludGVycnVwdC1uYW1lcyA9ICJscGFzcy1pcnEtbHBhaWYiOworCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCIsICJpZGxlIjsKKwlwaW5jdHJsLTAgPSA8Jm1pMnNfZGVmYXVsdD47CisJcGluY3RybC0xID0gPCZtaTJzX2lkbGU+OworCXJlZyA9IDwweDI4MTAwMDAwIDB4MTAwMDA+OworCXJlZy1uYW1lcyA9ICJscGFzcy1scGFpZiI7CisJcWNvbSxhZHNwID0gPCZhZHNwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvcmVuZXNhcyxmc2kudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3JlbmVzYXMsZnNpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDBhYjUxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3JlbmVzYXMsZnNpLnR4dApAQCAtMCwwICsxLDMxIEBACitSZW5lc2FzIEZTSQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlCQkJOiAicmVuZXNhcyxmc2kyLTxzb2N0eXBlPiIsCisJCQkJICAicmVuZXNhcyxzaF9mc2kyIiBvciAicmVuZXNhcyxzaF9mc2kiIGFzCisJCQkJICBmYWxsYmFjay4KKwkJCQkgIEV4YW1wbGVzIHdpdGggc29jdHlwZXMgYXJlOgorCQkJCSAgICAtICJyZW5lc2FzLGZzaTItcjhhNzc0MCIgKFItTW9iaWxlIEExKQorCQkJCSAgICAtICJyZW5lc2FzLGZzaTItc2g3M2EwIiAoU0gtTW9iaWxlIEFHNSkKKy0gcmVnCQkJCTogU2hvdWxkIGNvbnRhaW4gdGhlIHJlZ2lzdGVyIHBoeXNpY2FsIGFkZHJlc3MgYW5kIGxlbmd0aAorLSBpbnRlcnJ1cHRzCQkJOiBTaG91bGQgY29udGFpbiBGU0kgaW50ZXJydXB0CisKKy0gZnNpYSxzcGRpZi1jb25uZWN0aW9uCQk6IEZTSSBpcyBjb25uZWN0ZWQgYnkgUy9QRElGCistIGZzaWEsc3RyZWFtLW1vZGUtc3VwcG9ydAk6IEZTSSBzdXBwb3J0cyAxNmJpdCBzdHJlYW0gbW9kZS4KKy0gZnNpYSx1c2UtaW50ZXJuYWwtY2xvY2sJOiBGU0kgdXNlcyBpbnRlcm5hbCBjbG9jayB3aGVuIG1hc3RlciBtb2RlLgorCistIGZzaWIsc3BkaWYtY29ubmVjdGlvbgkJOiBzYW1lIGFzIGZzaWEKKy0gZnNpYixzdHJlYW0tbW9kZS1zdXBwb3J0CTogc2FtZSBhcyBmc2lhCistIGZzaWIsdXNlLWludGVybmFsLWNsb2NrCTogc2FtZSBhcyBmc2lhCisKK0V4YW1wbGU6CisKK3NoX2ZzaTI6IHNoX2ZzaTJAMHhlYzIzMDAwMCB7CisJY29tcGF0aWJsZSA9ICJyZW5lc2FzLHNoX2ZzaTIiOworCXJlZyA9IDwweGVjMjMwMDAwIDB4NDAwPjsKKwlpbnRlcnJ1cHRzID0gPDAgMTQ2IDB4ND47CisKKwlmc2lhLHNwZGlmLWNvbm5lY3Rpb247CisJZnNpYSxzdHJlYW0tbW9kZS1zdXBwb3J0OworCWZzaWEsdXNlLWludGVybmFsLWNsb2NrOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9yZW5lc2FzLHJzbmQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3JlbmVzYXMscnNuZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU3Y2JkNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9yZW5lc2FzLHJzbmQudHh0CkBAIC0wLDAgKzEsMjQ2IEBACitSZW5lc2FzIFItQ2FyIHNvdW5kCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUJCQk6ICJyZW5lc2FzLHJjYXJfc291bmQtPHNvY3R5cGU+IiwgZmFsbGJhY2tzCisJCQkJICAicmVuZXNhcyxyY2FyX3NvdW5kLWdlbjEiIGlmIGdlbmVyYXRpb24xLCBhbmQKKwkJCQkgICJyZW5lc2FzLHJjYXJfc291bmQtZ2VuMiIgaWYgZ2VuZXJhdGlvbjIKKwkJCQkgICJyZW5lc2FzLHJjYXJfc291bmQtZ2VuMyIgaWYgZ2VuZXJhdGlvbjMKKwkJCQkgIEV4YW1wbGVzIHdpdGggc29jdHlwZXMgYXJlOgorCQkJCSAgICAtICJyZW5lc2FzLHJjYXJfc291bmQtcjhhNzc3OCIgKFItQ2FyIE0xQSkKKwkJCQkgICAgLSAicmVuZXNhcyxyY2FyX3NvdW5kLXI4YTc3OTAiIChSLUNhciBIMikKKwkJCQkgICAgLSAicmVuZXNhcyxyY2FyX3NvdW5kLXI4YTc3OTEiIChSLUNhciBNMi1XKQorCQkJCSAgICAtICJyZW5lc2FzLHJjYXJfc291bmQtcjhhNzc5NSIgKFItQ2FyIEgzKQorLSByZWcJCQkJOiBTaG91bGQgY29udGFpbiB0aGUgcmVnaXN0ZXIgcGh5c2ljYWwgYWRkcmVzcy4KKwkJCQkgIHJlcXVpcmVkIHJlZ2lzdGVyIGlzCisJCQkJICAgU1JVL0FERy9TU0kgICAgICBpZiBnZW5lcmF0aW9uMQorCQkJCSAgIFNSVS9BREcvU1NJVS9TU0kgaWYgZ2VuZXJhdGlvbjIKKy0gcmNhcl9zb3VuZCxzc2kJCTogU2hvdWxkIGNvbnRhaW4gU1NJIGZlYXR1cmUuCisJCQkJICBUaGUgbnVtYmVyIG9mIFNTSSBzdWJub2RlIHNob3VsZCBiZSBzYW1lIGFzIEhXLgorCQkJCSAgc2VlIGJlbG93IGZvciBkZXRhaWwuCistIHJjYXJfc291bmQsc3JjCQk6IFNob3VsZCBjb250YWluIFNSQyBmZWF0dXJlLgorCQkJCSAgVGhlIG51bWJlciBvZiBTUkMgc3Vibm9kZSBzaG91bGQgYmUgc2FtZSBhcyBIVy4KKwkJCQkgIHNlZSBiZWxvdyBmb3IgZGV0YWlsLgorLSByY2FyX3NvdW5kLGN0dQkJOiBTaG91bGQgY29udGFpbiBDVFUgZmVhdHVyZS4KKwkJCQkgIFRoZSBudW1iZXIgb2YgQ1RVIHN1Ym5vZGUgc2hvdWxkIGJlIHNhbWUgYXMgSFcuCisJCQkJICBzZWUgYmVsb3cgZm9yIGRldGFpbC4KKy0gcmNhcl9zb3VuZCxtaXgJCTogU2hvdWxkIGNvbnRhaW4gTUlYIGZlYXR1cmUuCisJCQkJICBUaGUgbnVtYmVyIG9mIE1JWCBzdWJub2RlIHNob3VsZCBiZSBzYW1lIGFzIEhXLgorCQkJCSAgc2VlIGJlbG93IGZvciBkZXRhaWwuCistIHJjYXJfc291bmQsZHZjCQk6IFNob3VsZCBjb250YWluIERWQyBmZWF0dXJlLgorCQkJCSAgVGhlIG51bWJlciBvZiBEVkMgc3Vibm9kZSBzaG91bGQgYmUgc2FtZSBhcyBIVy4KKwkJCQkgIHNlZSBiZWxvdyBmb3IgZGV0YWlsLgorLSByY2FyX3NvdW5kLGRhaQkJOiBEQUkgY29udGVudHMuCisJCQkJICBUaGUgbnVtYmVyIG9mIERBSSBzdWJub2RlIHNob3VsZCBiZSBzYW1lIGFzIEhXLgorCQkJCSAgc2VlIGJlbG93IGZvciBkZXRhaWwuCistICNzb3VuZC1kYWktY2VsbHMJCTogaXQgbXVzdCBiZSAwIGlmIHlvdXIgc3lzdGVtIGlzIHVzaW5nIHNpbmdsZSBEQUkKKwkJCQkgIGl0IG11c3QgYmUgMSBpZiB5b3VyIHN5c3RlbSBpcyB1c2luZyBtdWx0aSAgREFJCistICNjbG9jay1jZWxscwkJCTogaXQgbXVzdCBiZSAwIGlmIHlvdXIgc3lzdGVtIGhhcyBhdWRpb19jbGtvdXQKKwkJCQkgIGl0IG11c3QgYmUgMSBpZiB5b3VyIHN5c3RlbSBoYXMgYXVkaW9fY2xrb3V0MC8xLzIvMworLSBjbG9jay1mcmVxdWVuY3kJCTogZm9yIGFsbCBhdWRpb19jbGtvdXQwLzEvMi8zCisKK1NTSSBzdWJub2RlIHByb3BlcnRpZXM6CistIGludGVycnVwdHMJCQk6IFNob3VsZCBjb250YWluIFNTSSBpbnRlcnJ1cHQgZm9yIFBJTyB0cmFuc2ZlcgorLSBzaGFyZWQtcGluCQkJOiBpZiBzaGFyZWQgY2xvY2sgcGluCistIHBpby10cmFuc2ZlcgkJCTogdXNlIFBJTyB0cmFuc2ZlciBtb2RlCistIG5vLWJ1c2lmCQkJOiBCVVNJRiBpcyBub3QgdXNzZWQgd2hlbiBbbWVtIC0+IFNTSV0gdmlhIERNQSBjYXNlCistIGRtYQkJCQk6IFNob3VsZCBjb250YWluIEF1ZGlvIERNQUMgZW50cnkKKy0gZG1hLW5hbWVzCQkJOiBTU0kgIGNhc2UgInJ4IiAgKD1wbGF5YmFjayksICJ0eCIgICg9Y2FwdHVyZSkKKwkJCQkgIFNTSVUgY2FzZSAicnh1IiAoPXBsYXliYWNrKSwgInR4dSIgKD1jYXB0dXJlKQorCitTUkMgc3Vibm9kZSBwcm9wZXJ0aWVzOgorLSBkbWEJCQkJOiBTaG91bGQgY29udGFpbiBBdWRpbyBETUFDIGVudHJ5CistIGRtYS1uYW1lcwkJCTogInJ4IiAoPXBsYXliYWNrKSwgInR4IiAoPWNhcHR1cmUpCisKK0RWQyBzdWJub2RlIHByb3BlcnRpZXM6CistIGRtYQkJCQk6IFNob3VsZCBjb250YWluIEF1ZGlvIERNQUMgZW50cnkKKy0gZG1hLW5hbWVzCQkJOiAidHgiICg9cGxheWJhY2svY2FwdHVyZSkKKworREFJIHN1Ym5vZGUgcHJvcGVydGllczoKKy0gcGxheWJhY2sJCQk6IGxpc3Qgb2YgcGxheWJhY2sgbW9kdWxlcworLSBjYXB0dXJlCQkJOiBsaXN0IG9mIGNhcHR1cmUgIG1vZHVsZXMKKworRXhhbXBsZToKKworcmNhcl9zb3VuZDogc291bmRAZWM1MDAwMDAgeworCSNzb3VuZC1kYWktY2VsbHMgPSA8MT47CisJY29tcGF0aWJsZSA9ICJyZW5lc2FzLHJjYXJfc291bmQtcjhhNzc5MSIsICJyZW5lc2FzLHJjYXJfc291bmQtZ2VuMiI7CisJcmVnID0JPDAgMHhlYzUwMDAwMCAwIDB4MTAwMD4sIC8qIFNDVSAqLworCQk8MCAweGVjNWEwMDAwIDAgMHgxMDA+LCAgLyogQURHICovCisJCTwwIDB4ZWM1NDAwMDAgMCAweDEwMDA+LCAvKiBTU0lVICovCisJCTwwIDB4ZWM1NDEwMDAgMCAweDEyODA+LCAvKiBTU0kgKi8KKwkJPDAgMHhlYzc0MDAwMCAwIDB4MjAwPjsgIC8qIEF1ZGlvIERNQUMgcGVyaSBwZXJpKi8KKwlyZWctbmFtZXMgPSAic2N1IiwgImFkZyIsICJzc2l1IiwgInNzaSIsICJhdWRtYXBwIjsKKworCWNsb2NrcyA9IDwmbXN0cDEwX2Nsa3MgUjhBNzc5MF9DTEtfU1NJX0FMTD4sCisJCTwmbXN0cDEwX2Nsa3MgUjhBNzc5MF9DTEtfU1NJOT4sIDwmbXN0cDEwX2Nsa3MgUjhBNzc5MF9DTEtfU1NJOD4sCisJCTwmbXN0cDEwX2Nsa3MgUjhBNzc5MF9DTEtfU1NJNz4sIDwmbXN0cDEwX2Nsa3MgUjhBNzc5MF9DTEtfU1NJNj4sCisJCTwmbXN0cDEwX2Nsa3MgUjhBNzc5MF9DTEtfU1NJNT4sIDwmbXN0cDEwX2Nsa3MgUjhBNzc5MF9DTEtfU1NJND4sCisJCTwmbXN0cDEwX2Nsa3MgUjhBNzc5MF9DTEtfU1NJMz4sIDwmbXN0cDEwX2Nsa3MgUjhBNzc5MF9DTEtfU1NJMj4sCisJCTwmbXN0cDEwX2Nsa3MgUjhBNzc5MF9DTEtfU1NJMT4sIDwmbXN0cDEwX2Nsa3MgUjhBNzc5MF9DTEtfU1NJMD4sCisJCTwmbXN0cDEwX2Nsa3MgUjhBNzc5MF9DTEtfU0NVX1NSQzk+LCA8Jm1zdHAxMF9jbGtzIFI4QTc3OTBfQ0xLX1NDVV9TUkM4PiwKKwkJPCZtc3RwMTBfY2xrcyBSOEE3NzkwX0NMS19TQ1VfU1JDNz4sIDwmbXN0cDEwX2Nsa3MgUjhBNzc5MF9DTEtfU0NVX1NSQzY+LAorCQk8Jm1zdHAxMF9jbGtzIFI4QTc3OTBfQ0xLX1NDVV9TUkM1PiwgPCZtc3RwMTBfY2xrcyBSOEE3NzkwX0NMS19TQ1VfU1JDND4sCisJCTwmbXN0cDEwX2Nsa3MgUjhBNzc5MF9DTEtfU0NVX1NSQzM+LCA8Jm1zdHAxMF9jbGtzIFI4QTc3OTBfQ0xLX1NDVV9TUkMyPiwKKwkJPCZtc3RwMTBfY2xrcyBSOEE3NzkwX0NMS19TQ1VfU1JDMT4sIDwmbXN0cDEwX2Nsa3MgUjhBNzc5MF9DTEtfU0NVX1NSQzA+LAorCQk8Jm1zdHAxMF9jbGtzIFI4QTc3OTBfQ0xLX1NDVV9EVkMwPiwgPCZtc3RwMTBfY2xrcyBSOEE3NzkwX0NMS19TQ1VfRFZDMT4sCisJCTwmYXVkaW9fY2xrX2E+LCA8JmF1ZGlvX2Nsa19iPiwgPCZhdWRpb19jbGtfYz4sIDwmbTJfY2xrPjsKKwljbG9jay1uYW1lcyA9ICJzc2ktYWxsIiwKKwkJCSJzc2kuOSIsICJzc2kuOCIsICJzc2kuNyIsICJzc2kuNiIsICJzc2kuNSIsCisJCQkic3NpLjQiLCAic3NpLjMiLCAic3NpLjIiLCAic3NpLjEiLCAic3NpLjAiLAorCQkJInNyYy45IiwgInNyYy44IiwgInNyYy43IiwgInNyYy42IiwgInNyYy41IiwKKwkJCSJzcmMuNCIsICJzcmMuMyIsICJzcmMuMiIsICJzcmMuMSIsICJzcmMuMCIsCisJCQkiZHZjLjAiLCAiZHZjLjEiLAorCQkJImNsa19hIiwgImNsa19iIiwgImNsa19jIiwgImNsa19pIjsKKworCXJjYXJfc291bmQsZHZjIHsKKwkJZHZjMDogZHZjQDAgeworCQkJZG1hcyA9IDwmYXVkbWEwIDB4YmM+OworCQkJZG1hLW5hbWVzID0gInR4IjsKKwkJfTsKKwkJZHZjMTogZHZjQDEgeworCQkJZG1hcyA9IDwmYXVkbWEwIDB4YmU+OworCQkJZG1hLW5hbWVzID0gInR4IjsKKwkJfTsKKwl9OworCisJcmNhcl9zb3VuZCxtaXggeworCQltaXgwOiBtaXhAMCB7IH07CisJCW1peDE6IG1peEAxIHsgfTsKKwl9OworCisJcmNhcl9zb3VuZCxjdHUgeworCQljdHUwMDogY3R1QDAgeyB9OworCQljdHUwMTogY3R1QDEgeyB9OworCQljdHUwMjogY3R1QDIgeyB9OworCQljdHUwMzogY3R1QDMgeyB9OworCQljdHUxMDogY3R1QDQgeyB9OworCQljdHUxMTogY3R1QDUgeyB9OworCQljdHUxMjogY3R1QDYgeyB9OworCQljdHUxMzogY3R1QDcgeyB9OworCX07CisKKwlyY2FyX3NvdW5kLHNyYyB7CisJCXNyYzA6IHNyY0AwIHsKKwkJCWludGVycnVwdHMgPSA8MCAzNTIgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCQlkbWFzID0gPCZhdWRtYTAgMHg4NT4sIDwmYXVkbWExIDB4OWE+OworCQkJZG1hLW5hbWVzID0gInJ4IiwgInR4IjsKKwkJfTsKKwkJc3JjMTogc3JjQDEgeworCQkJaW50ZXJydXB0cyA9IDwwIDM1MyBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJCWRtYXMgPSA8JmF1ZG1hMCAweDg3PiwgPCZhdWRtYTEgMHg5Yz47CisJCQlkbWEtbmFtZXMgPSAicngiLCAidHgiOworCQl9OworCQlzcmMyOiBzcmNAMiB7CisJCQlpbnRlcnJ1cHRzID0gPDAgMzU0IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQkJZG1hcyA9IDwmYXVkbWEwIDB4ODk+LCA8JmF1ZG1hMSAweDllPjsKKwkJCWRtYS1uYW1lcyA9ICJyeCIsICJ0eCI7CisJCX07CisJCXNyYzM6IHNyY0AzIHsKKwkJCWludGVycnVwdHMgPSA8MCAzNTUgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCQlkbWFzID0gPCZhdWRtYTAgMHg4Yj4sIDwmYXVkbWExIDB4YTA+OworCQkJZG1hLW5hbWVzID0gInJ4IiwgInR4IjsKKwkJfTsKKwkJc3JjNDogc3JjQDQgeworCQkJaW50ZXJydXB0cyA9IDwwIDM1NiBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJCWRtYXMgPSA8JmF1ZG1hMCAweDhkPiwgPCZhdWRtYTEgMHhiMD47CisJCQlkbWEtbmFtZXMgPSAicngiLCAidHgiOworCQl9OworCQlzcmM1OiBzcmNANSB7CisJCQlpbnRlcnJ1cHRzID0gPDAgMzU3IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQkJZG1hcyA9IDwmYXVkbWEwIDB4OGY+LCA8JmF1ZG1hMSAweGIyPjsKKwkJCWRtYS1uYW1lcyA9ICJyeCIsICJ0eCI7CisJCX07CisJCXNyYzY6IHNyY0A2IHsKKwkJCWludGVycnVwdHMgPSA8MCAzNTggSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCQlkbWFzID0gPCZhdWRtYTAgMHg5MT4sIDwmYXVkbWExIDB4YjQ+OworCQkJZG1hLW5hbWVzID0gInJ4IiwgInR4IjsKKwkJfTsKKwkJc3JjNzogc3JjQDcgeworCQkJaW50ZXJydXB0cyA9IDwwIDM1OSBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJCWRtYXMgPSA8JmF1ZG1hMCAweDkzPiwgPCZhdWRtYTEgMHhiNj47CisJCQlkbWEtbmFtZXMgPSAicngiLCAidHgiOworCQl9OworCQlzcmM4OiBzcmNAOCB7CisJCQlpbnRlcnJ1cHRzID0gPDAgMzYwIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQkJZG1hcyA9IDwmYXVkbWEwIDB4OTU+LCA8JmF1ZG1hMSAweGI4PjsKKwkJCWRtYS1uYW1lcyA9ICJyeCIsICJ0eCI7CisJCX07CisJCXNyYzk6IHNyY0A5IHsKKwkJCWludGVycnVwdHMgPSA8MCAzNjEgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCQlkbWFzID0gPCZhdWRtYTAgMHg5Nz4sIDwmYXVkbWExIDB4YmE+OworCQkJZG1hLW5hbWVzID0gInJ4IiwgInR4IjsKKwkJfTsKKwl9OworCisJcmNhcl9zb3VuZCxzc2kgeworCQlzc2kwOiBzc2lAMCB7CisJCQlpbnRlcnJ1cHRzID0gPDAgMzcwIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQkJZG1hcyA9IDwmYXVkbWEwIDB4MDE+LCA8JmF1ZG1hMSAweDAyPiwgPCZhdWRtYTAgMHgxNT4sIDwmYXVkbWExIDB4MTY+OworCQkJZG1hLW5hbWVzID0gInJ4IiwgInR4IiwgInJ4dSIsICJ0eHUiOworCQl9OworCQlzc2kxOiBzc2lAMSB7CisJCQlpbnRlcnJ1cHRzID0gPDAgMzcxIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQkJZG1hcyA9IDwmYXVkbWEwIDB4MDM+LCA8JmF1ZG1hMSAweDA0PiwgPCZhdWRtYTAgMHg0OT4sIDwmYXVkbWExIDB4NGE+OworCQkJZG1hLW5hbWVzID0gInJ4IiwgInR4IiwgInJ4dSIsICJ0eHUiOworCQl9OworCQlzc2kyOiBzc2lAMiB7CisJCQlpbnRlcnJ1cHRzID0gPDAgMzcyIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQkJZG1hcyA9IDwmYXVkbWEwIDB4MDU+LCA8JmF1ZG1hMSAweDA2PiwgPCZhdWRtYTAgMHg2Mz4sIDwmYXVkbWExIDB4NjQ+OworCQkJZG1hLW5hbWVzID0gInJ4IiwgInR4IiwgInJ4dSIsICJ0eHUiOworCQl9OworCQlzc2kzOiBzc2lAMyB7CisJCQlpbnRlcnJ1cHRzID0gPDAgMzczIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQkJZG1hcyA9IDwmYXVkbWEwIDB4MDc+LCA8JmF1ZG1hMSAweDA4PiwgPCZhdWRtYTAgMHg2Zj4sIDwmYXVkbWExIDB4NzA+OworCQkJZG1hLW5hbWVzID0gInJ4IiwgInR4IiwgInJ4dSIsICJ0eHUiOworCQl9OworCQlzc2k0OiBzc2lANCB7CisJCQlpbnRlcnJ1cHRzID0gPDAgMzc0IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQkJZG1hcyA9IDwmYXVkbWEwIDB4MDk+LCA8JmF1ZG1hMSAweDBhPiwgPCZhdWRtYTAgMHg3MT4sIDwmYXVkbWExIDB4NzI+OworCQkJZG1hLW5hbWVzID0gInJ4IiwgInR4IiwgInJ4dSIsICJ0eHUiOworCQl9OworCQlzc2k1OiBzc2lANSB7CisJCQlpbnRlcnJ1cHRzID0gPDAgMzc1IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQkJZG1hcyA9IDwmYXVkbWEwIDB4MGI+LCA8JmF1ZG1hMSAweDBjPiwgPCZhdWRtYTAgMHg3Mz4sIDwmYXVkbWExIDB4NzQ+OworCQkJZG1hLW5hbWVzID0gInJ4IiwgInR4IiwgInJ4dSIsICJ0eHUiOworCQl9OworCQlzc2k2OiBzc2lANiB7CisJCQlpbnRlcnJ1cHRzID0gPDAgMzc2IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQkJZG1hcyA9IDwmYXVkbWEwIDB4MGQ+LCA8JmF1ZG1hMSAweDBlPiwgPCZhdWRtYTAgMHg3NT4sIDwmYXVkbWExIDB4NzY+OworCQkJZG1hLW5hbWVzID0gInJ4IiwgInR4IiwgInJ4dSIsICJ0eHUiOworCQl9OworCQlzc2k3OiBzc2lANyB7CisJCQlpbnRlcnJ1cHRzID0gPDAgMzc3IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQkJZG1hcyA9IDwmYXVkbWEwIDB4MGY+LCA8JmF1ZG1hMSAweDEwPiwgPCZhdWRtYTAgMHg3OT4sIDwmYXVkbWExIDB4N2E+OworCQkJZG1hLW5hbWVzID0gInJ4IiwgInR4IiwgInJ4dSIsICJ0eHUiOworCQl9OworCQlzc2k4OiBzc2lAOCB7CisJCQlpbnRlcnJ1cHRzID0gPDAgMzc4IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQkJZG1hcyA9IDwmYXVkbWEwIDB4MTE+LCA8JmF1ZG1hMSAweDEyPiwgPCZhdWRtYTAgMHg3Yj4sIDwmYXVkbWExIDB4N2M+OworCQkJZG1hLW5hbWVzID0gInJ4IiwgInR4IiwgInJ4dSIsICJ0eHUiOworCQl9OworCQlzc2k5OiBzc2lAOSB7CisJCQlpbnRlcnJ1cHRzID0gPDAgMzc5IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQkJZG1hcyA9IDwmYXVkbWEwIDB4MTM+LCA8JmF1ZG1hMSAweDE0PiwgPCZhdWRtYTAgMHg3ZD4sIDwmYXVkbWExIDB4N2U+OworCQkJZG1hLW5hbWVzID0gInJ4IiwgInR4IiwgInJ4dSIsICJ0eHUiOworCQl9OworCX07CisKKwlyY2FyX3NvdW5kLGRhaSB7CisJCWRhaTAgeworCQkJcGxheWJhY2sgPSA8JnNzaTUgJnNyYzU+OworCQkJY2FwdHVyZSAgPSA8JnNzaTY+OworCQl9OworCQlkYWkxIHsKKwkJCXBsYXliYWNrID0gPCZzc2kzPjsKKwkJfTsKKwkJZGFpMiB7CisJCQljYXB0dXJlICA9IDwmc3NpND47CisJCX07CisJCWRhaTMgeworCQkJcGxheWJhY2sgPSA8JnNzaTc+OworCQl9OworCQlkYWk0IHsKKwkJCWNhcHR1cmUgID0gPCZzc2k4PjsKKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9yZW5lc2FzLHJzcmMtY2FyZC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvcmVuZXNhcyxyc3JjLWNhcmQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2Mjc0OGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvcmVuZXNhcyxyc3JjLWNhcmQudHh0CkBAIC0wLDAgKzEsNzQgQEAKK1JlbmVzYXMgU2FtcGxpbmcgUmF0ZSBDb252ZXJ0IFNvdW5kIENhcmQ6CisKK1JlbmVzYXMgU2FtcGxpbmcgUmF0ZSBDb252ZXJ0IFNvdW5kIENhcmQgc3BlY2lmaWVzIGF1ZGlvIERBSSBjb25uZWN0aW9ucyBvZiBTb0MgPC0+IGNvZGVjLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUJCQkJOiAicmVuZXNhcyxyc3JjLWNhcmQsPGJvYXJkPiIKKwkJCQkJICBFeGFtcGxlcyB3aXRoIHNvY3R5cGVzIGFyZToKKwkJCQkJICAgIC0gInJlbmVzYXMscnNyYy1jYXJkIgorCQkJCQkgICAgLSAicmVuZXNhcyxyc3JjLWNhcmQsbGFnZXIiCisJCQkJCSAgICAtICJyZW5lc2FzLHJzcmMtY2FyZCxrb2Vsc2NoIgorT3B0aW9uYWwgcHJvcGVydGllczoKKworLSBjYXJkX25hbWUJCQkJOiBVc2VyIHNwZWNpZmllZCBhdWRpbyBzb3VuZCBjYXJkIG5hbWUsIG9uZSBzdHJpbmcKKwkJCQkJICBwcm9wZXJ0eS4KKy0gY3B1CQkJCQk6IENQVSAgIHN1Yi1ub2RlCistIGNvZGVjCQkJCQk6IENPREVDIHN1Yi1ub2RlCisKK09wdGlvbmFsIHN1Ym5vZGUgcHJvcGVydGllczoKKworLSBmb3JtYXQJCQkJOiBDUFUvQ09ERUMgY29tbW9uIGF1ZGlvIGZvcm1hdC4KKwkJCQkJICAiaTJzIiwgInJpZ2h0X2oiLCAibGVmdF9qIiAsICJkc3BfYSIKKwkJCQkJICAiZHNwX2IiLCAiYWM5NyIsICJwZG0iLCAibXNiIiwgImxzYiIKKy0gZnJhbWUtbWFzdGVyCQkJCTogSW5kaWNhdGVzIGRhaS1saW5rIGZyYW1lIG1hc3Rlci4KKwkJCQkJICBwaGFuZGxlIHRvIGEgY3B1IG9yIGNvZGVjIHN1Ym5vZGUuCistIGJpdGNsb2NrLW1hc3RlcgkJCTogSW5kaWNhdGVzIGRhaS1saW5rIGJpdCBjbG9jayBtYXN0ZXIuCisJCQkJCSAgcGhhbmRsZSB0byBhIGNwdSBvciBjb2RlYyBzdWJub2RlLgorLSBiaXRjbG9jay1pbnZlcnNpb24JCQk6IGJvb2wgcHJvcGVydHkuIEFkZCB0aGlzIGlmIHRoZQorCQkJCQkgIGRhaS1saW5rIHVzZXMgYml0IGNsb2NrIGludmVyc2lvbi4KKy0gZnJhbWUtaW52ZXJzaW9uCQkJOiBib29sIHByb3BlcnR5LiBBZGQgdGhpcyBpZiB0aGUKKwkJCQkJICBkYWktbGluayB1c2VzIGZyYW1lIGNsb2NrIGludmVyc2lvbi4KKy0gY29udmVydC1yYXRlCQkJCTogcGxhdGZvcm0gc3BlY2lmaWVkIHNhbXBsaW5nIHJhdGUgY29udmVydAorLSBhdWRpby1wcmVmaXgJCQkJOiBzZWUgYXVkaW8tcm91dGluZworLSBhdWRpby1yb3V0aW5nCQkJCTogQSBsaXN0IG9mIHRoZSBjb25uZWN0aW9ucyBiZXR3ZWVuIGF1ZGlvIGNvbXBvbmVudHMuCisJCQkJCSAgRWFjaCBlbnRyeSBpcyBhIHBhaXIgb2Ygc3RyaW5ncywgdGhlIGZpcnN0IGJlaW5nIHRoZSBjb25uZWN0aW9uJ3Mgc2luaywKKwkJCQkJICB0aGUgc2Vjb25kIGJlaW5nIHRoZSBjb25uZWN0aW9uJ3Mgc291cmNlLiBWYWxpZCBuYW1lcyBmb3Igc291cmNlcy4KKwkJCQkJICB1c2UgYXVkaW8tcHJlZml4IGlmIHNvbWUgY29tcG9uZW50cyBpcyB1c2luZyBzYW1lIHNpbmsvc291cmNlcyBuYW1pbmcuCisJCQkJCSAgaXQgY2FuIGJlIHVzZWQgaWYgY29tcGF0aWJsZSB3YXMgInJlbmVzYXMscnNyYy1jYXJkIjsKKworUmVxdWlyZWQgQ1BVL0NPREVDIHN1Ym5vZGVzIHByb3BlcnRpZXM6CisKKy0gc291bmQtZGFpCQkJCTogcGhhbmRsZSBhbmQgcG9ydCBvZiBDUFUvQ09ERUMKKworT3B0aW9uYWwgQ1BVL0NPREVDIHN1Ym5vZGVzIHByb3BlcnRpZXM6CisKKy0gY2xvY2tzIC8gc3lzdGVtLWNsb2NrLWZyZXF1ZW5jeQk6IHNwZWNpZnkgc3Vibm9kZSdzIGNsb2NrIGlmIG5lZWRlZC4KKwkJCQkJICBpdCBjYW4gYmUgc3BlY2lmaWVkIHZpYSAiY2xvY2tzIiBpZiBzeXN0ZW0gaGFzCisJCQkJCSAgY2xvY2sgbm9kZSAoPSBjb21tb24gY2xvY2spLCBvciAic3lzdGVtLWNsb2NrLWZyZXF1ZW5jeSIKKwkJCQkJICAoaWYgc3lzdGVtIGRvZW5zJ3Qgc3VwcG9ydCBjb21tb24gY2xvY2spCisJCQkJCSAgSWYgYSBjbG9jayBpcyBzcGVjaWZpZWQsIGl0IGlzCisJCQkJCSAgZW5hYmxlZCB3aXRoIGNsa19wcmVwYXJlX2VuYWJsZSgpCisJCQkJCSAgaW4gZGFpIHN0YXJ0dXAoKSBhbmQgZGlzYWJsZWQgd2l0aAorCQkJCQkgIGNsa19kaXNhYmxlX3VucHJlcGFyZSgpIGluIGRhaQorCQkJCQkgIHNodXRkb3duKCkuCisKK0V4YW1wbGUKKworc291bmQgeworCWNvbXBhdGlibGUgPSAicmVuZXNhcyxyc3JjLWNhcmQsbGFnZXIiOworCisJY2FyZC1uYW1lID0gInJzbmQtYWs0NjQzIjsKKwlmb3JtYXQgPSAibGVmdF9qIjsKKwliaXRjbG9jay1tYXN0ZXIgPSA8JnNuZGNvZGVjPjsKKwlmcmFtZS1tYXN0ZXIgPSA8JnNuZGNvZGVjPjsKKworCXNuZGNwdTogY3B1IHsKKwkJc291bmQtZGFpID0gPCZyY2FyX3NvdW5kPjsKKwl9OworCisJc25kY29kZWM6IGNvZGVjIHsKKwkJc291bmQtZGFpID0gPCZhazQ2NDM+OworCQlzeXN0ZW0tY2xvY2stZnJlcXVlbmN5ID0gPDExMjg5NjAwPjsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9yb2NrY2hpcC1pMnMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3JvY2tjaGlwLWkycy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI2N2QyNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9yb2NrY2hpcC1pMnMudHh0CkBAIC0wLDAgKzEsMzUgQEAKKyogUm9ja2NoaXAgSTJTIGNvbnRyb2xsZXIKKworVGhlIEkyUyBidXMgKEludGVyLUlDIHNvdW5kIGJ1cykgaXMgYSBzZXJpYWwgbGluayBmb3IgZGlnaXRhbAorYXVkaW8gZGF0YSB0cmFuc2ZlciBiZXR3ZWVuIGRldmljZXMgaW4gdGhlIHN5c3RlbS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmdzCisgICAtICJyb2NrY2hpcCxyazMwNjYtaTJzIjogZm9yIHJrMzA2NgorICAgLSAicm9ja2NoaXAscmszMTg4LWkycyIsICJyb2NrY2hpcCxyazMwNjYtaTJzIjogZm9yIHJrMzE4OAorICAgLSAicm9ja2NoaXAscmszMjg4LWkycyIsICJyb2NrY2hpcCxyazMwNjYtaTJzIjogZm9yIHJrMzI4OAorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorLSBpbnRlcnJ1cHRzOiBzaG91bGQgY29udGFpbiB0aGUgSTJTIGludGVycnVwdC4KKy0gZG1hczogRE1BIHNwZWNpZmllcnMgZm9yIHR4IGFuZCByeCBkbWEuIFNlZSB0aGUgRE1BIGNsaWVudCBiaW5kaW5nLAorCURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvZG1hLnR4dAorLSBkbWEtbmFtZXM6IHNob3VsZCBpbmNsdWRlICJ0eCIgYW5kICJyeCIuCistIGNsb2NrczogYSBsaXN0IG9mIHBoYW5kbGUgKyBjbG9jay1zcGVjaWZlciBwYWlycywgb25lIGZvciBlYWNoIGVudHJ5IGluIGNsb2NrLW5hbWVzLgorLSBjbG9jay1uYW1lczogc2hvdWxkIGNvbnRhaW4gZm9sbG93aW5nczoKKyAgIC0gImkyc19oY2xrIjogY2xvY2sgZm9yIEkyUyBCVVMKKyAgIC0gImkyc19jbGsiIDogY2xvY2sgZm9yIEkyUyBjb250cm9sbGVyCistIHJvY2tjaGlwLGNhcHR1cmUtY2hhbm5lbHM6IG1heCBjYXB0dXJlIGNoYW5uZWxzLCBpZiBub3Qgc2V0LCAyIGNoYW5uZWxzIGRlZmF1bHQuCisKK0V4YW1wbGUgZm9yIHJrMzI4OCBJMlMgY29udHJvbGxlcjoKKworaTJzQGZmODkwMDAwIHsKKwljb21wYXRpYmxlID0gInJvY2tjaGlwLHJrMzI4OC1pMnMiLCAicm9ja2NoaXAscmszMDY2LWkycyI7CisJcmVnID0gPDB4ZmY4OTAwMDAgMHgxMDAwMD47CisJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDg1IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCWRtYXMgPSA8JnBkbWExIDA+LCA8JnBkbWExIDE+OworCWRtYS1uYW1lcyA9ICJ0eCIsICJyeCI7CisJY2xvY2stbmFtZXMgPSAiaTJzX2hjbGsiLCAiaTJzX2NsayI7CisJY2xvY2tzID0gPCZjcnUgSENMS19JMlMwPiwgPCZjcnUgU0NMS19JMlMwPjsKKwlyb2NrY2hpcCxjYXB0dXJlLWNoYW5uZWxzID0gPDI+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9yb2NrY2hpcC1tYXg5ODA5MC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvcm9ja2NoaXAtbWF4OTgwOTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4MDVhYTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvcm9ja2NoaXAtbWF4OTgwOTAudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1JPQ0tDSElQIHdpdGggTUFYOTgwOTAgQ09ERUMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInJvY2tjaGlwLHJvY2tjaGlwLWF1ZGlvLW1heDk4MDkwIgorLSByb2NrY2hpcCxtb2RlbDogVGhlIHVzZXItdmlzaWJsZSBuYW1lIG9mIHRoaXMgc291bmQgY29tcGxleAorLSByb2NrY2hpcCxpMnMtY29udHJvbGxlcjogVGhlIHBoYW5kbGUgb2YgdGhlIFJvY2tjaGlwIEkyUyBjb250cm9sbGVyIHRoYXQncworICBjb25uZWN0ZWQgdG8gdGhlIENPREVDCistIHJvY2tjaGlwLGF1ZGlvLWNvZGVjOiBUaGUgcGhhbmRsZSBvZiB0aGUgTUFYOTgwOTAgYXVkaW8gY29kZWMKKy0gcm9ja2NoaXAsaGVhZHNldC1jb2RlYzogVGhlIHBoYW5kbGUgb2YgRXh0IGNoaXAgZm9yIGphY2sgZGV0ZWN0aW9uCisKK0V4YW1wbGU6CisKK3NvdW5kIHsKKwljb21wYXRpYmxlID0gInJvY2tjaGlwLHJvY2tjaGlwLWF1ZGlvLW1heDk4MDkwIjsKKwlyb2NrY2hpcCxtb2RlbCA9ICJST0NLQ0hJUC1JMlMiOworCXJvY2tjaGlwLGkycy1jb250cm9sbGVyID0gPCZpMnM+OworCXJvY2tjaGlwLGF1ZGlvLWNvZGVjID0gPCZtYXg5ODA5MD47CisJcm9ja2NoaXAsaGVhZHNldC1jb2RlYyA9IDwmaGVhZHNldGNvZGVjPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvcm9ja2NoaXAtcnQ1NjQ1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9yb2NrY2hpcC1ydDU2NDUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMWE2MmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvcm9ja2NoaXAtcnQ1NjQ1LnR4dApAQCAtMCwwICsxLDE3IEBACitST0NLQ0hJUCB3aXRoIFJUNTY0NS9SVDU2NTAgQ09ERUNTCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJyb2NrY2hpcCxyb2NrY2hpcC1hdWRpby1ydDU2NDUiCistIHJvY2tjaGlwLG1vZGVsOiBUaGUgdXNlci12aXNpYmxlIG5hbWUgb2YgdGhpcyBzb3VuZCBjb21wbGV4CistIHJvY2tjaGlwLGkycy1jb250cm9sbGVyOiBUaGUgcGhhbmRsZSBvZiB0aGUgUm9ja2NoaXAgSTJTIGNvbnRyb2xsZXIgdGhhdCdzCisgIGNvbm5lY3RlZCB0byB0aGUgQ09ERUMKKy0gcm9ja2NoaXAsYXVkaW8tY29kZWM6IFRoZSBwaGFuZGxlIG9mIHRoZSBSVDU2NDUvUlQ1NjUwIGF1ZGlvIGNvZGVjCisKK0V4YW1wbGU6CisKK3NvdW5kIHsKKwljb21wYXRpYmxlID0gInJvY2tjaGlwLHJvY2tjaGlwLWF1ZGlvLXJ0NTY0NSI7CisJcm9ja2NoaXAsbW9kZWwgPSAiUk9DS0NISVAtSTJTIjsKKwlyb2NrY2hpcCxpMnMtY29udHJvbGxlciA9IDwmaTJzPjsKKwlyb2NrY2hpcCxhdWRpby1jb2RlYyA9IDwmcnQ1NjQ1PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvcm9ja2NoaXAtc3BkaWYudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3JvY2tjaGlwLXNwZGlmLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjRkYmRlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3JvY2tjaGlwLXNwZGlmLnR4dApAQCAtMCwwICsxLDQwIEBACisqIFJvY2tjaGlwIFNQRElGIHRyYW5zY2VpdmVyCisKK1RoZSBTL1BESUYgYXVkaW8gYmxvY2sgaXMgYSBzdGVyZW8gdHJhbnNjZWl2ZXIgdGhhdCBhbGxvd3MgdGhlCitwcm9jZXNzb3IgdG8gcmVjZWl2ZSBhbmQgdHJhbnNtaXQgZGlnaXRhbCBhdWRpbyB2aWEgYW4gY29heGlhbCBjYWJsZSBvcgorYSBmaWJyZSBjYWJsZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisgICAtICJyb2NrY2hpcCxyazMyODgtc3BkaWYiLCAicm9ja2NoaXAscmszMTg4LXNwZGlmIiBvcgorICAgICAicm9ja2NoaXAscmszMDY2LXNwZGlmIgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorLSBpbnRlcnJ1cHRzOiBzaG91bGQgY29udGFpbiB0aGUgU1BESUYgaW50ZXJydXB0LgorLSBkbWFzOiBETUEgc3BlY2lmaWVycyBmb3IgdHggZG1hLiBTZWUgdGhlIERNQSBjbGllbnQgYmluZGluZywKKyAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9kbWEudHh0CistIGRtYS1uYW1lczogc2hvdWxkIGJlICJ0eCIKKy0gY2xvY2tzOiBhIGxpc3Qgb2YgcGhhbmRsZSArIGNsb2NrLXNwZWNpZmllciBwYWlycywgb25lIGZvciBlYWNoIGVudHJ5CisgIGluIGNsb2NrLW5hbWVzLgorLSBjbG9jay1uYW1lczogc2hvdWxkIGNvbnRhaW4gZm9sbG93aW5nOgorICAgLSAiaGNsayI6IGNsb2NrIGZvciBTUERJRiBjb250cm9sbGVyCisgICAtICJtY2xrIiA6IGNsb2NrIGZvciBTUERJRiBidXMKKworUmVxdWlyZWQgcHJvcGVydGllcyBvbiBSSzMyODg6CisgIC0gcm9ja2NoaXAsZ3JmOiB0aGUgcGhhbmRsZSBvZiB0aGUgc3lzY29uIG5vZGUgZm9yIHRoZSBnZW5lcmFsIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgZmlsZSAoR1JGKQorCitFeGFtcGxlIGZvciB0aGUgcmszMTg4IFNQRElGIGNvbnRyb2xsZXI6CisKK3NwZGlmOiBzcGRpZkAweDEwMTFlMDAwIHsKKwljb21wYXRpYmxlID0gInJvY2tjaGlwLHJrMzE4OC1zcGRpZiIsICJyb2NrY2hpcCxyazMwNjYtc3BkaWYiOworCXJlZyA9IDwweDEwMTFlMDAwIDB4MjAwMD47CisJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDMyIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCWRtYXMgPSA8JmRtYWMxX3MgOD47CisJZG1hLW5hbWVzID0gInR4IjsKKwljbG9jay1uYW1lcyA9ICJoY2xrIiwgIm1jbGsiOworCWNsb2NrcyA9IDwmY3J1IEhDTEtfU1BESUY+LCA8JmNydSBTQ0xLX1NQRElGPjsKKwlzdGF0dXMgPSAiZGlzYWJsZWQiOworCSNzb3VuZC1kYWktY2VsbHMgPSA8MD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3J0NTYzMS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvcnQ1NjMxLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmI5ODZjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3J0NTYzMS50eHQKQEAgLTAsMCArMSw0OCBAQAorQUxDNTYzMS9SVDU2MzEgYXVkaW8gQ09ERUMKKworVGhpcyBkZXZpY2Ugc3VwcG9ydHMgSTJDIG9ubHkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogInJlYWx0ZWssYWxjNTYzMSIgb3IgInJlYWx0ZWsscnQ1NjMxIgorCisgIC0gcmVnIDogdGhlIEkyQyBhZGRyZXNzIG9mIHRoZSBkZXZpY2UuCisKK1BpbnMgb24gdGhlIGRldmljZSAoZm9yIGxpbmtpbmcgaW50byBhdWRpbyByb3V0ZXMpOgorCisgICogU1BLX09VVF9SX1AKKyAgKiBTUEtfT1VUX1JfTgorICAqIFNQS19PVVRfTF9QCisgICogU1BLX09VVF9MX04KKyAgKiBIUF9PVVRfTAorICAqIEhQX09VVF9SCisgICogQVVYX09VVDJfTFAKKyAgKiBBVVhfT1VUMl9STgorICAqIEFVWF9PVVQxX0xQCisgICogQVVYX09VVDFfUk4KKyAgKiBBVVhfSU5fTF9KRAorICAqIEFVWF9JTl9SX0pECisgICogTU9OT19JTl9QCisgICogTU9OT19JTl9OCisgICogTUlDMV9QCisgICogTUlDMV9OCisgICogTUlDMl9QCisgICogTUlDMl9OCisgICogTU9OT19PVVRfUAorICAqIE1PTk9fT1VUX04KKyAgKiBNSUNCSUFTMQorICAqIE1JQ0JJQVMyCisKK0V4YW1wbGU6CisKK2FsYzU2MzE6IGFsYzU2MzFAMWEgeworCWNvbXBhdGlibGUgPSAicmVhbHRlayxhbGM1NjMxIjsKKwlyZWcgPSA8MHgxYT47Cit9OworCitvcgorCitydDU2MzE6IHJ0NTYzMUAxYSB7CisJY29tcGF0aWJsZSA9ICJyZWFsdGVrLHJ0NTYzMSI7CisJcmVnID0gPDB4MWE+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9ydDU2NDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3J0NTY0MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU2MmY2ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9ydDU2NDAudHh0CkBAIC0wLDAgKzEsNTYgQEAKK1JUNTY0MC9SVDU2MzkgYXVkaW8gQ09ERUMKKworVGhpcyBkZXZpY2Ugc3VwcG9ydHMgSTJDIG9ubHkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IE9uZSBvZiAicmVhbHRlayxydDU2NDAiIG9yICJyZWFsdGVrLHJ0NTYzOSIuCisKKy0gcmVnIDogVGhlIEkyQyBhZGRyZXNzIG9mIHRoZSBkZXZpY2UuCisKKy0gaW50ZXJydXB0cyA6IFRoZSBDT0RFQydzIGludGVycnVwdCBvdXRwdXQuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gcmVhbHRlayxpbjEtZGlmZmVyZW50aWFsCistIHJlYWx0ZWssaW4yLWRpZmZlcmVudGlhbAorLSByZWFsdGVrLGluMy1kaWZmZXJlbnRpYWwKKyAgQm9vbGVhbi4gSW5kaWNhdGUgTUlDMS8yLzMgaW5wdXQgYXJlIGRpZmZlcmVudGlhbCwgcmF0aGVyIHRoYW4gc2luZ2xlLWVuZGVkLgorCistIHJlYWx0ZWssbGRvMS1lbi1ncGlvcyA6IFRoZSBHUElPIHRoYXQgY29udHJvbHMgdGhlIENPREVDJ3MgTERPMV9FTiBwaW4uCisKK1BpbnMgb24gdGhlIGRldmljZSAoZm9yIGxpbmtpbmcgaW50byBhdWRpbyByb3V0ZXMpIGZvciBSVDU2MzkvUlQ1NjQwOgorCisgICogRE1JQzEKKyAgKiBETUlDMgorICAqIE1JQ0JJQVMxCisgICogSU4xUAorICAqIElOMU4KKyAgKiBJTjJQCisgICogSU4yTgorICAqIElOM1AKKyAgKiBJTjNOCisgICogSFBPTAorICAqIEhQT1IKKyAgKiBMT1VUTAorICAqIExPVVRSCisgICogU1BPTFAKKyAgKiBTUE9MTgorICAqIFNQT1JQCisgICogU1BPUk4KKworQWRkaXRpb25hbCBwaW5zIG9uIHRoZSBkZXZpY2UgZm9yIFJUNTY0MDoKKworICAqIE1PTk9QCisgICogTU9OT04KKworRXhhbXBsZToKKworcnQ1NjQwIHsKKwljb21wYXRpYmxlID0gInJlYWx0ZWsscnQ1NjQwIjsKKwlyZWcgPSA8MHgxYz47CisJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3Bpbz47CisJaW50ZXJydXB0cyA9IDxURUdSQV9HUElPKFcsIDMpIEdQSU9fQUNUSVZFX0hJR0g+OworCXJlYWx0ZWssbGRvMS1lbi1ncGlvcyA9CisJCTwmZ3BpbyBURUdSQV9HUElPKFYsIDMpIEdQSU9fQUNUSVZFX0hJR0g+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9ydDU2NDUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3J0NTY0NS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NlZTFmNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9ydDU2NDUudHh0CkBAIC0wLDAgKzEsNzIgQEAKK1JUNTY1MC9SVDU2NDUgYXVkaW8gQ09ERUMKKworVGhpcyBkZXZpY2Ugc3VwcG9ydHMgSTJDIG9ubHkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IE9uZSBvZiAicmVhbHRlayxydDU2NDUiIG9yICJyZWFsdGVrLHJ0NTY1MCIuCisKKy0gcmVnIDogVGhlIEkyQyBhZGRyZXNzIG9mIHRoZSBkZXZpY2UuCisKKy0gaW50ZXJydXB0cyA6IFRoZSBDT0RFQydzIGludGVycnVwdCBvdXRwdXQuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gaHAtZGV0ZWN0LWdwaW9zOgorICBhIEdQSU8gc3BlYyBmb3IgdGhlIGV4dGVybmFsIGhlYWRwaG9uZSBkZXRlY3QgcGluLiBJZiBqZC1tb2RlID0gMCwKKyAgd2Ugd2lsbCBnZXQgdGhlIEpEIHN0YXR1cyBieSBnZXR0aW5nIHRoZSB2YWx1ZSBvZiBocC1kZXRlY3QtZ3Bpb3MuCisKKy0gcmVhbHRlayxpbjItZGlmZmVyZW50aWFsCisgIEJvb2xlYW4uIEluZGljYXRlIE1JQzIgaW5wdXQgYXJlIGRpZmZlcmVudGlhbCwgcmF0aGVyIHRoYW4gc2luZ2xlLWVuZGVkLgorCistIHJlYWx0ZWssZG1pYzEtZGF0YS1waW4KKyAgMDogZG1pYzEgaXMgbm90IHVzZWQKKyAgMTogdXNpbmcgSU4yUCBwaW4gYXMgZG1pYzEgZGF0YSBwaW4KKyAgMjogdXNpbmcgR1BJTzYgcGluIGFzIGRtaWMxIGRhdGEgcGluCisgIDM6IHVzaW5nIEdQSU8xMCBwaW4gYXMgZG1pYzEgZGF0YSBwaW4KKyAgNDogdXNpbmcgR1BJTzEyIHBpbiBhcyBkbWljMSBkYXRhIHBpbgorCistIHJlYWx0ZWssZG1pYzItZGF0YS1waW4KKyAgMDogZG1pYzIgaXMgbm90IHVzZWQKKyAgMTogdXNpbmcgSU4yTiBwaW4gYXMgZG1pYzIgZGF0YSBwaW4KKyAgMjogdXNpbmcgR1BJTzUgcGluIGFzIGRtaWMyIGRhdGEgcGluCisgIDM6IHVzaW5nIEdQSU8xMSBwaW4gYXMgZG1pYzIgZGF0YSBwaW4KKworLS0gcmVhbHRlayxqZC1tb2RlIDogVGhlIEpEIG1vZGUgb2YgcnQ1NjQ1L3J0NTY1MAorICAgMCA6IHJ0NTY0NS9ydDU2NTAgSkQgZnVuY3Rpb24gaXMgbm90IHVzZWQKKyAgIDEgOiBNb2RlLTAgKFZERD0zLjNWKSwgdHdvIHBvcnQgamFjayBkZXRlY3Rpb24KKyAgIDIgOiBNb2RlLTEgKFZERD0zLjNWKSwgb25lIHBvcnQgamFjayBkZXRlY3Rpb24KKyAgIDMgOiBNb2RlLTIgKFZERD0xLjhWKSwgb25lIHBvcnQgamFjayBkZXRlY3Rpb24KKworUGlucyBvbiB0aGUgZGV2aWNlIChmb3IgbGlua2luZyBpbnRvIGF1ZGlvIHJvdXRlcykgZm9yIFJUNTY0NS9SVDU2NTA6CisKKyAgKiBETUlDIEwxCisgICogRE1JQyBSMQorICAqIERNSUMgTDIKKyAgKiBETUlDIFIyCisgICogSU4xUAorICAqIElOMU4KKyAgKiBJTjJQCisgICogSU4yTgorICAqIEhhcHRpYyBHZW5lcmF0b3IKKyAgKiBIUE9MCisgICogSFBPUgorICAqIExPVVRMCisgICogTE9VVFIKKyAgKiBQRE0xTAorICAqIFBETTFSCisgICogU1BPTAorICAqIFNQT1IKKworRXhhbXBsZToKKworY29kZWM6IHJ0NTY1MEAxYSB7CisJY29tcGF0aWJsZSA9ICJyZWFsdGVrLHJ0NTY1MCI7CisJcmVnID0gPDB4MWE+OworCWhwLWRldGVjdC1ncGlvcyA9IDwmZ3BpbyAxOSAwPjsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvPjsKKwlpbnRlcnJ1cHRzID0gPDcgSVJRX1RZUEVfRURHRV9GQUxMSU5HPjsKKwlyZWFsdGVrLGRtaWMtZW4gPSAidHJ1ZSI7CisJcmVhbHRlayxlbi1qZC1mdW5jID0gInRydWUiOworCXJlYWx0ZWssamQtbW9kZSA9IDwzPjsKK307ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3J0NTY3Ny50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvcnQ1Njc3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDcwNzg5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3J0NTY3Ny50eHQKQEAgLTAsMCArMSw3OCBAQAorUlQ1Njc3IGF1ZGlvIENPREVDCisKK1RoaXMgZGV2aWNlIHN1cHBvcnRzIEkyQyBvbmx5LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiAicmVhbHRlayxydDU2NzciLgorCistIHJlZyA6IFRoZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlLgorCistIGludGVycnVwdHMgOiBUaGUgQ09ERUMncyBpbnRlcnJ1cHQgb3V0cHV0LgorCistIGdwaW8tY29udHJvbGxlciA6IEluZGljYXRlcyB0aGlzIGRldmljZSBpcyBhIEdQSU8gY29udHJvbGxlci4KKworLSAjZ3Bpby1jZWxscyA6IFNob3VsZCBiZSB0d28uIFRoZSBmaXJzdCBjZWxsIGlzIHRoZSBwaW4gbnVtYmVyIGFuZCB0aGUKKyAgc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IG9wdGlvbmFsIHBhcmFtZXRlcnMgKGN1cnJlbnRseSB1bnVzZWQpLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIHJlYWx0ZWsscG93LWxkbzItZ3BpbyA6IFRoZSBHUElPIHRoYXQgY29udHJvbHMgdGhlIENPREVDJ3MgUE9XX0xETzIgcGluLgorLSByZWFsdGVrLHJlc2V0LWdwaW8gOiBUaGUgR1BJTyB0aGF0IGNvbnRyb2xzIHRoZSBDT0RFQydzIFJFU0VUIHBpbi4KKworLSByZWFsdGVrLGluMS1kaWZmZXJlbnRpYWwKKy0gcmVhbHRlayxpbjItZGlmZmVyZW50aWFsCistIHJlYWx0ZWssbG91dDEtZGlmZmVyZW50aWFsCistIHJlYWx0ZWssbG91dDItZGlmZmVyZW50aWFsCistIHJlYWx0ZWssbG91dDMtZGlmZmVyZW50aWFsCisgIEJvb2xlYW4uIEluZGljYXRlIE1JQzEvMiBpbnB1dCBhbmQgTE9VVDEvMi8zIG91dHB1dHMgYXJlIGRpZmZlcmVudGlhbCwKKyAgcmF0aGVyIHRoYW4gc2luZ2xlLWVuZGVkLgorCistIHJlYWx0ZWssZ3Bpby1jb25maWcKKyAgQXJyYXkgb2Ygc2l4IDhiaXQgZWxlbWVudHMgdGhhdCBjb25maWd1cmVzIEdQSU8uCisgICAgMCAtIGZsb2F0aW5nIChyZXNldCB2YWx1ZSkKKyAgICAxIC0gcHVsbCBkb3duCisgICAgMiAtIHB1bGwgdXAKKworLSByZWFsdGVrLGpkMS1ncGlvCisgIENvbmZpZ3VyZXMgR1BJTyBNaWMgSmFjayBkZXRlY3Rpb24gMS4KKyAgU2VsZWN0IDAgfiAzIGFzIE9GRiwgR1BJTzEsIEdQSU8yIGFuZCBHUElPMyByZXNwZWN0aXZlbHkuCisKKy0gcmVhbHRlayxqZDItZ3BpbworLSByZWFsdGVrLGpkMy1ncGlvCisgIENvbmZpZ3VyZXMgR1BJTyBNaWMgSmFjayBkZXRlY3Rpb24gMiBhbmQgMy4KKyAgU2VsZWN0IDAgfiAzIGFzIE9GRiwgR1BJTzQsIEdQSU81IGFuZCBHUElPNiByZXNwZWN0aXZlbHkuCisKK1BpbnMgb24gdGhlIGRldmljZSAoZm9yIGxpbmtpbmcgaW50byBhdWRpbyByb3V0ZXMpOgorCisgICogSU4xUAorICAqIElOMU4KKyAgKiBJTjJQCisgICogSU4yTgorICAqIE1JQ0JJQVMxCisgICogRE1JQzEKKyAgKiBETUlDMgorICAqIERNSUMzCisgICogRE1JQzQKKyAgKiBMT1VUMQorICAqIExPVVQyCisgICogTE9VVDMKKworRXhhbXBsZToKKworcnQ1Njc3IHsKKwljb21wYXRpYmxlID0gInJlYWx0ZWsscnQ1Njc3IjsKKwlyZWcgPSA8MHgyYz47CisJaW50ZXJydXB0LXBhcmVudCA9IDwmZ3Bpbz47CisJaW50ZXJydXB0cyA9IDxURUdSQV9HUElPKFcsIDMpIEdQSU9fQUNUSVZFX0hJR0g+OworCisJZ3Bpby1jb250cm9sbGVyOworCSNncGlvLWNlbGxzID0gPDI+OworCisJcmVhbHRlayxwb3ctbGRvMi1ncGlvID0KKwkJPCZncGlvIFRFR1JBX0dQSU8oViwgMykgR1BJT19BQ1RJVkVfSElHSD47CisJcmVhbHRlayxyZXNldC1ncGlvID0gPCZncGlvIFRFR1JBX0dQSU8oQkIsIDMpIEdQSU9fQUNUSVZFX0xPVz47CisJcmVhbHRlayxpbjEtZGlmZmVyZW50aWFsID0gInRydWUiOworCXJlYWx0ZWssZ3Bpby1jb25maWcgPSAvYml0cy8gOCAgPDAgMCAwIDAgMCAyPjsgICAvKiBwdWxsIHVwIEdQSU82ICovCisJcmVhbHRlayxqZDItZ3BpbyA9IDwzPjsgIC8qIEVuYWJsZXMgSmFjayBkZXRlY3Rpb24gZm9yIEdQSU82ICovCit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3NhbXN1bmcsb2Ryb2lkeDItbWF4OTgwOTAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3NhbXN1bmcsb2Ryb2lkeDItbWF4OTgwOTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNDhmNzIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc2Ftc3VuZyxvZHJvaWR4Mi1tYXg5ODA5MC50eHQKQEAgLTAsMCArMSwzNSBAQAorU2Ftc3VuZyBFeHlub3MgT2Ryb2lkIFgyL1UzIGF1ZGlvIGNvbXBsZXggd2l0aCBNQVg5ODA5MCBjb2RlYworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZSA6ICJzYW1zdW5nLG9kcm9pZHgyLWF1ZGlvIiAtIGZvciBPZHJvaWQgWDIgYm9hcmQsCisJCSJzYW1zdW5nLG9kcm9pZHUzLWF1ZGlvIiAtIGZvciBPZHJvaWQgVTMgYm9hcmQKKyAtIHNhbXN1bmcsbW9kZWwgOiB0aGUgdXNlci12aXNpYmxlIG5hbWUgb2YgdGhpcyBzb3VuZCBjb21wbGV4CisgLSBzYW1zdW5nLGkycy1jb250cm9sbGVyIDogdGhlIHBoYW5kbGUgb2YgdGhlIEkyUyBjb250cm9sbGVyCisgLSBzYW1zdW5nLGF1ZGlvLWNvZGVjIDogdGhlIHBoYW5kbGUgb2YgdGhlIE1BWDk4MDkwIGF1ZGlvIGNvZGVjCisgLSBzYW1zdW5nLGF1ZGlvLXJvdXRpbmcgOiBhIGxpc3Qgb2YgdGhlIGNvbm5lY3Rpb25zIGJldHdlZW4gYXVkaW8KKyAgIGNvbXBvbmVudHM7ICBlYWNoIGVudHJ5IGlzIGEgcGFpciBvZiBzdHJpbmdzLCB0aGUgZmlyc3QgYmVpbmcgdGhlCisgICBjb25uZWN0aW9uJ3Mgc2luaywgdGhlIHNlY29uZCBiZWluZyB0aGUgY29ubmVjdGlvbidzIHNvdXJjZTsKKyAgIHZhbGlkIG5hbWVzIGZvciBzb3VyY2VzIGFuZCBzaW5rcyBhcmUgdGhlIE1BWDk4MDkwJ3MgcGlucyAoYXMKKyAgIGRvY3VtZW50ZWQgaW4gaXRzIGJpbmRpbmcpLCBhbmQgdGhlIGphY2tzIG9uIHRoZSBib2FyZAorICAgRm9yIE9kcm9pZCBYMjoKKyAgICAgKiBIZWFkcGhvbmUgSmFjaworICAgICAqIE1pYyBKYWNrCisgICAgICogRE1JQworCisgICBGb3IgT2Ryb2lkIFUzOgorICAgICAqIEhlYWRwaG9uZSBKYWNrCisgICAgICogU3BlYWtlcnMKKworRXhhbXBsZToKKworc291bmQgeworCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxvZHJvaWR1My1hdWRpbyI7CisJc2Ftc3VuZyxpMnMtY29udHJvbGxlciA9IDwmaTJzMD47CisJc2Ftc3VuZyxhdWRpby1jb2RlYyA9IDwmbWF4OTgwOTA+OworCXNhbXN1bmcsbW9kZWwgPSAiT2Ryb2lkLVgyIjsKKwlzYW1zdW5nLGF1ZGlvLXJvdXRpbmcgPQorCQkiSGVhZHBob25lIEphY2siLCAiSFBMIiwKKwkJIkhlYWRwaG9uZSBKYWNrIiwgIkhQUiIsCisJCSJJTjEiLCAiTWljIEphY2siLAorCQkiTWljIEphY2siLCAiTUlDQklBUyI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3NhbXN1bmcsc21kay13bTg5OTQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3NhbXN1bmcsc21kay13bTg5OTQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ODY2NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc2Ftc3VuZyxzbWRrLXdtODk5NC50eHQKQEAgLTAsMCArMSwxNCBAQAorU2Ftc3VuZyBTTURLIGF1ZGlvIGNvbXBsZXgKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJzYW1zdW5nLHNtZGstd204OTk0IgorLSBzYW1zdW5nLGkycy1jb250cm9sbGVyOiBUaGUgcGhhbmRsZSBvZiB0aGUgU2Ftc3VuZyBJMlMwIGNvbnRyb2xsZXIKKy0gc2Ftc3VuZyxhdWRpby1jb2RlYzogVGhlIHBoYW5kbGUgb2YgdGhlIFdNODk5NCBhdWRpbyBjb2RlYworRXhhbXBsZToKKworc291bmQgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsc21kay13bTg5OTQiOworCisJCXNhbXN1bmcsaTJzLWNvbnRyb2xsZXIgPSA8JmkyczA+OworCQlzYW1zdW5nLGF1ZGlvLWNvZGVjID0gPCZ3bTg5OTQ+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9zYW1zdW5nLWkycy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc2Ftc3VuZy1pMnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ZTBlMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc2Ftc3VuZy1pMnMudHh0CkBAIC0wLDAgKzEsODIgQEAKKyogU2Ftc3VuZyBJMlMgY29udHJvbGxlcgorCitSZXF1aXJlZCBTb0MgU3BlY2lmaWMgUHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nLgorICAgLSBzYW1zdW5nLHMzYzY0MTAtaTJzOiBmb3IgOC8xNi8yNGJpdCBzdGVyZW8gSTJTLgorICAgLSBzYW1zdW5nLHM1cHYyMTAtaTJzOiBmb3IgOC8xNi8yNGJpdCBtdWx0aWNoYW5uZWwoNS4xKSBJMlMgd2l0aAorICAgICBzZWNvbmRhcnkgZmlmbywgcy93IHJlc2V0IGNvbnRyb2wgYW5kIGludGVybmFsIG11eCBmb3Igcm9vdCBjbGsgc3JjLgorICAgLSBzYW1zdW5nLGV4eW5vczU0MjAtaTJzOiBmb3IgOC8xNi8yNGJpdCBtdWx0aWNoYW5uZWwoNS4xKSBJMlMgZm9yCisgICAgIHBsYXliYWNrLCBzdGVyaW8gY2hhbm5lbCBjYXB0dXJlLCBzZWNvbmRhcnkgZmlmbyB1c2luZyBpbnRlcm5hbAorICAgICBvciBleHRlcm5hbCBkbWEsIHMvdyByZXNldCBjb250cm9sLCBpbnRlcm5hbCBtdXggZm9yIHJvb3QgY2xrIHNyYworICAgICBhbmQgNy4xIGNoYW5uZWwgVERNIHN1cHBvcnQgZm9yIHBsYXliYWNrLiBURE0gKFRpbWUgZGl2aXNpb24gbXVsdGlwbGV4aW5nKQorICAgICBpcyB0byBhbGxvdyB0cmFuc2ZlciBvZiBtdWx0aXBsZSBjaGFubmVsIGF1ZGlvIGRhdGEgb24gc2luZ2xlIGRhdGEgbGluZS4KKyAgIC0gc2Ftc3VuZyxleHlub3M3LWkyczogd2l0aCBhbGwgdGhlIGF2YWlsYWJsZSBmZWF0dXJlcyBvZiBleHlub3M1IGkycywKKyAgICAgZXh5bm9zNyBJMlMgaGFzIDcuMSBjaGFubmVsIFRETSBzdXBwb3J0IGZvciBjYXB0dXJlLCBzZWNvbmRhcnkgZmlmbworICAgICB3aXRoIG9ubHkgZXh0ZXJuYWwgZG1hIGFuZCBtb3JlIG5vLm9mIHJvb3QgY2xrIHNhbXBsaW5nIGZyZXF1ZW5jaWVzLgorICAgLSBzYW1zdW5nLGV4eW5vczctaTJzMTogSTJTMSBvbiBwcmV2aW91cyBzYW1zdW5nIHBsYXRmb3JtcyBzdXBwb3J0cworICAgICBzdGVyZW8gY2hhbm5lbHMuIGV4eW5vczcgaTJzMSB1cGdyYWRlZCB0byA1LjEgbXVsdGljaGFubmVsIHdpdGgKKyAgICAgc2xpZ2h0bHkgbW9kaWZpZWQgYml0IG9mZnNldHMuCisKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgIHJlZ2lvbi4KKy0gZG1hczogbGlzdCBvZiBETUEgY29udHJvbGxlciBwaGFuZGxlIGFuZCBETUEgcmVxdWVzdCBsaW5lIG9yZGVyZWQgcGFpcnMuCistIGRtYS1uYW1lczogaWRlbnRpZmllciBzdHJpbmcgZm9yIGVhY2ggRE1BIHJlcXVlc3QgbGluZSBpbiB0aGUgZG1hcyBwcm9wZXJ0eS4KKyAgVGhlc2Ugc3RyaW5ncyBjb3JyZXNwb25kIDE6MSB3aXRoIHRoZSBvcmRlcmVkIHBhaXJzIGluIGRtYXMuCistIGNsb2NrczogSGFuZGxlIHRvIGlpcyBjbG9jayBhbmQgUkNMSyBzb3VyY2UgY2xrLgorLSBjbG9jay1uYW1lczoKKyAgaTJzMCB1c2VzIHNvbWUgYmFzZSBjbGtzIGZyb20gQ01VIGFuZCBzb21lIGFyZSBmcm9tIGF1ZGlvIHN1YnN5c3RlbSBpbnRlcm5hbAorICBjbG9jayBjb250cm9sbGVyLiBUaGUgY2xvY2sgbmFtZXMgZm9yIGkyczAgc2hvdWxkIGJlICJpaXMiLCAiaTJzX29wY2xrMCIgYW5kCisgICJpMnNfb3BjbGsxIiBhcyBzaG93biBpbiB0aGUgZXhhbXBsZSBiZWxvdy4KKyAgaTJzMSBhbmQgaTJzMiB1c2VzIGNsb2NrcyBmcm9tIENNVS4gVGhlIGNsb2NrIG5hbWVzIGZvciBpMnMxIGFuZCBpMnMyIHNob3VsZAorICBiZSAiaWlzIiBhbmQgImkyc19vcGNsazAiLgorICAiaWlzIiBpcyB0aGUgaTJzIGJ1cyBjbG9jayBhbmQgaTJzX29wY2xrMCwgaTJzX29wY2xrMSBhcmUgc291cmNlcyBvZiB0aGUgcm9vdAorICBjbGsuIGkyczAgaGFzIGludGVybmFsIG11eCB0byBzZWxlY3QgdGhlIHNvdXJjZSBvZiByb290IGNsayBhbmQgaTJzMSBhbmQgaTJzMgorICBkb2Vzbid0IGhhdmUgYW55IHN1Y2ggbXV4LgorLSAjY2xvY2stY2VsbHM6IHNob3VsZCBiZSAxLCB0aGlzIHByb3BlcnR5IG11c3QgYmUgcHJlc2VudCBpZiB0aGUgSTJTIGRldmljZQorICBpcyBhIGNsb2NrIHByb3ZpZGVyIGluIHRlcm1zIG9mIHRoZSBjb21tb24gY2xvY2sgYmluZGluZ3MsIGRlc2NyaWJlZCBpbgorICAuLi9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQuCistIGNsb2NrLW91dHB1dC1uYW1lczogZnJvbSB0aGUgY29tbW9uIGNsb2NrIGJpbmRpbmdzLCBuYW1lcyBvZiB0aGUgQ0RDTEsKKyAgSTJTIG91dHB1dCBjbG9ja3MsIHN1Z2dlc3RlZCB2YWx1ZXMgYXJlICJpMnNfY2RjbGswIiwgImkyc19jZGNsazEiLAorICAiaTJzX2NkY2xrMyIgZm9yIHRoZSBJMlMwLCBJMlMxLCBJMlMyIGRldmljZXMgcmVjcGVjdGl2ZWx5LgorCitUaGVyZSBhcmUgZm9sbG93aW5nIGNsb2NrcyBhdmFpbGFibGUgYXQgdGhlIEkyUyBkZXZpY2Ugbm9kZXM6CisgQ0xLX0kyU19DRENMSyAgICAtIHRoZSBDRENMSyAoQ09ERUNMS08pIGdhdGUgY2xvY2ssCisgQ0xLX0kyU19SQ0xLX1BTUiAtIHRoZSBSQ0xLIHByZXNjYWxlciBkaXZpZGVyIGNsb2NrIChjb3JyZXNwb25kaW5nIHRvIHRoZQorCQkgICAgSUlTUFNSIHJlZ2lzdGVyKSwKKyBDTEtfSTJTX1JDTEtfU1JDIC0gdGhlIFJDTEtTUkMgbXV4IGNsb2NrIChjb3JyZXNwb25kaW5nIHRvIFJDTEtTUkMgYml0IGluCisJCSAgICBJSVNNT0QgcmVnaXN0ZXIpLgorCitSZWZlciB0byB0aGUgU29DIGRhdGFzaGVldCBmb3IgYXZhaWxhYmlsaXR5IG9mIHRoZSBhYm92ZSBjbG9ja3MuCitUaGUgQ0xLX0kyU19SQ0xLX1BTUiBhbmQgQ0xLX0kyU19SQ0xLX1NSQyBjbG9ja3MgYXJlIHVzdWFsbHkgb25seSBhdmFpbGFibGUKK2luIHRoZSBJSVMgTXVsdGkgQXVkaW8gSW50ZXJmYWNlIChJMlMwKS4KK05vdGU6IE9sZCBEVHMgbWF5IG5vdCBoYXZlIHRoZSAjY2xvY2stY2VsbHMsIGNsb2NrLW91dHB1dC1uYW1lcyBwcm9wZXJ0aWVzCithbmQgdGhlbiBub3QgdXNlIHRoZSBJMlMgbm9kZSBhcyBhIGNsb2NrIHN1cHBsaWVyLgorCitPcHRpb25hbCBTb0MgU3BlY2lmaWMgUHJvcGVydGllczoKKworLSBzYW1zdW5nLGlkbWEtYWRkcjogSW50ZXJuYWwgRE1BIHJlZ2lzdGVyIGJhc2UgYWRkcmVzcyBvZiB0aGUgYXVkaW8KKyAgc3ViIHN5c3RlbSh1c2VkIGluIHNlY29uZGFyeSBzb3VuZCBzb3VyY2UpLgorLSBwaW5jdHJsLTA6IFNob3VsZCBzcGVjaWZ5IHBpbiBjb250cm9sIGdyb3VwcyB1c2VkIGZvciB0aGlzIGNvbnRyb2xsZXIuCistIHBpbmN0cmwtbmFtZXM6IFNob3VsZCBjb250YWluIG9ubHkgb25lIHZhbHVlIC0gImRlZmF1bHQiLgorCisKK0V4YW1wbGU6CisKK2kyczA6IGkyc0AwMzgzMDAwMCB7CisJY29tcGF0aWJsZSA9ICJzYW1zdW5nLHM1cHYyMTAtaTJzIjsKKwlyZWcgPSA8MHgwMzgzMDAwMCAweDEwMD47CisJZG1hcyA9IDwmcGRtYTAgMTAKKwkJJnBkbWEwIDkKKwkJJnBkbWEwIDg+OworCWRtYS1uYW1lcyA9ICJ0eCIsICJyeCIsICJ0eC1zZWMiOworCWNsb2NrcyA9IDwmY2xvY2tfYXVkc3MgRVhZTk9TX0kyU19CVVM+LAorCQk8JmNsb2NrX2F1ZHNzIEVYWU5PU19JMlNfQlVTPiwKKwkJPCZjbG9ja19hdWRzcyBFWFlOT1NfU0NMS19JMlM+OworCWNsb2NrLW5hbWVzID0gImlpcyIsICJpMnNfb3BjbGswIiwgImkyc19vcGNsazEiOworCSNjbG9jay1jZWxsczsKKwljbG9jay1vdXRwdXQtbmFtZXMgPSAiaTJzX2NkY2xrMCI7CisJc2Ftc3VuZyxpZG1hLWFkZHIgPSA8MHgwMzAwMDAwMD47CisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwlwaW5jdHJsLTAgPSA8JmkyczBfYnVzPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc2d0bDUwMDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3NndGw1MDAwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTVlNGViCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3NndGw1MDAwLnR4dApAQCAtMCwwICsxLDM5IEBACisqIEZyZWVzY2FsZSBTR1RMNTAwMCBTdGVyZW8gQ29kZWMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJmc2wsc2d0bDUwMDAiLgorCistIHJlZyA6IHRoZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlCisKKy0gY2xvY2tzIDogdGhlIGNsb2NrIHByb3ZpZGVyIG9mIFNZU19NQ0xLCisKKy0gbWljYmlhcy1yZXNpc3Rvci1rLW9obXMgOiB0aGUgYmlhcyByZXNpc3RvciB0byBiZSB1c2VkIGluIGtPbWhzCisJVGhlIHJlc2lzdG9yIGNhbiB0YWtlIHZhbHVlcyBvZiAyaywgNGsgb3IgOGsuCisJSWYgc2V0IHRvIDAgaXQgd2lsbCBiZSBvZmYuCisJSWYgdGhpcyBub2RlIGlzIG5vdCBtZW50aW9uZWQgb3IgaWYgdGhlIHZhbHVlIGlzIHVua25vd24sIHRoZW4KKwltaWNiaWFzCXJlc2lzdG9yIGlzIHNldCB0byA0Sy4KKworLSBtaWNiaWFzLXZvbHRhZ2UtbS12b2x0cyA6IHRoZSBiaWFzIHZvbHRhZ2UgdG8gYmUgdXNlZCBpbiBtVm9sdHMKKwlUaGUgdm9sdGFnZSBjYW4gdGFrZSB2YWx1ZXMgZnJvbSAxLjI1ViB0byAzViBieSAyNTBtViBzdGVwcworCUlmIHRoaXMgbm9kZSBpcyBub3QgbWVudGlvbm5lZCBvciB0aGUgdmFsdWUgaXMgdW5rbm93biwgdGhlbgorCXRoZSB2YWx1ZSBpcyBzZXQgdG8gMS4yNVYuCisKKy0gVkREQS1zdXBwbHkgOiB0aGUgcmVndWxhdG9yIHByb3ZpZGVyIG9mIFZEREEKKworLSBWRERJTy1zdXBwbHk6IHRoZSByZWd1bGF0b3IgcHJvdmlkZXIgb2YgVkRESU8KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworLSBWRERELXN1cHBseSA6IHRoZSByZWd1bGF0b3IgcHJvdmlkZXIgb2YgVkRERAorCitFeGFtcGxlOgorCitjb2RlYzogc2d0bDUwMDBAMGEgeworCWNvbXBhdGlibGUgPSAiZnNsLHNndGw1MDAwIjsKKwlyZWcgPSA8MHgwYT47CisJY2xvY2tzID0gPCZjbGtzIDE1MD47CisJbWljYmlhcy1yZXNpc3Rvci1rLW9obXMgPSA8Mj47CisJbWljYmlhcy12b2x0YWdlLW0tdm9sdHMgPSA8MjI1MD47CisJVkREQS1zdXBwbHkgPSA8JnJlZ18zcDN2PjsKKwlWRERJTy1zdXBwbHkgPSA8JnJlZ18zcDN2PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc2ltcGxlLWNhcmQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3NpbXBsZS1jYXJkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjM5NzllCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3NpbXBsZS1jYXJkLnR4dApAQCAtMCwwICsxLDE2NCBAQAorU2ltcGxlLUNhcmQ6CisKK1NpbXBsZS1DYXJkIHNwZWNpZmllcyBhdWRpbyBEQUkgY29ubmVjdGlvbnMgb2YgU29DIDwtPiBjb2RlYy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlCQkJCTogInNpbXBsZS1hdWRpby1jYXJkIgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIHNpbXBsZS1hdWRpby1jYXJkLG5hbWUJCTogVXNlciBzcGVjaWZpZWQgYXVkaW8gc291bmQgY2FyZCBuYW1lLCBvbmUgc3RyaW5nCisJCQkJCSAgcHJvcGVydHkuCistIHNpbXBsZS1hdWRpby1jYXJkLHdpZGdldHMJCTogUGxlYXNlIHJlZmVyIHRvIHdpZGdldHMudHh0LgorLSBzaW1wbGUtYXVkaW8tY2FyZCxyb3V0aW5nCQk6IEEgbGlzdCBvZiB0aGUgY29ubmVjdGlvbnMgYmV0d2VlbiBhdWRpbyBjb21wb25lbnRzLgorCQkJCQkgIEVhY2ggZW50cnkgaXMgYSBwYWlyIG9mIHN0cmluZ3MsIHRoZSBmaXJzdCBiZWluZyB0aGUKKwkJCQkJICBjb25uZWN0aW9uJ3Mgc2luaywgdGhlIHNlY29uZCBiZWluZyB0aGUgY29ubmVjdGlvbidzCisJCQkJCSAgc291cmNlLgorLSBzaW1wbGUtYXVkaW8tY2FyZCxtY2xrLWZzICAgICAgICAgICAgIDogTXVsdGlwbGljYXRpb24gZmFjdG9yIGJldHdlZW4gc3RyZWFtIHJhdGUgYW5kIGNvZGVjCisJCQkJCSAgbWNsay4gV2hlbiBkZWZpbmVkLCBtY2xrLWZzIHByb3BlcnR5IGRlZmluZWQgaW4KKwkJCQkJICBkYWktbGluayBzdWIgbm9kZXMgYXJlIGlnbm9yZWQuCistIHNpbXBsZS1hdWRpby1jYXJkLGhwLWRldC1ncGlvCQk6IFJlZmVyZW5jZSB0byBHUElPIHRoYXQgc2lnbmFscyB3aGVuCisJCQkJCSAgaGVhZHBob25lcyBhcmUgYXR0YWNoZWQuCistIHNpbXBsZS1hdWRpby1jYXJkLG1pYy1kZXQtZ3Bpbwk6IFJlZmVyZW5jZSB0byBHUElPIHRoYXQgc2lnbmFscyB3aGVuCisJCQkJCSAgYSBtaWNyb3Bob25lIGlzIGF0dGFjaGVkLgorCitPcHRpb25hbCBzdWJub2RlczoKKworLSBzaW1wbGUtYXVkaW8tY2FyZCxkYWktbGluawkJOiBDb250YWluZXIgZm9yIGRhaS1saW5rIGxldmVsCisJCQkJCSAgcHJvcGVydGllcyBhbmQgdGhlIENQVSBhbmQgQ09ERUMKKwkJCQkJICBzdWItbm9kZXMuIFRoaXMgY29udGFpbmVyIG1heSBiZQorCQkJCQkgIG9taXR0ZWQgd2hlbiB0aGUgY2FyZCBoYXMgb25seSBvbmUKKwkJCQkJICBEQUkgbGluay4gU2VlIHRoZSBleGFtcGxlcyBhbmQgdGhlCisJCQkJCSAgc2VjdGlvbiBiZWxsb3cuCisKK0RhaS1saW5rIHN1Ym5vZGUgcHJvcGVydGllcyBhbmQgc3Vibm9kZXM6CisKK0lmIGRhaS1saW5rIHN1Ym5vZGUgaXMgb21pdHRlZCBhbmQgdGhlIHN1Ym5vZGUgcHJvcGVydGllcyBhcmUgZGlyZWN0bHkKK3VuZGVyICJzb3VuZCItbm9kZSB0aGUgc3Vibm9kZSBwcm9wZXJ0eSBhbmQgc3Vibm9kZSBuYW1lcyBoYXZlIHRvIGJlCitwcmVmaXhlZCB3aXRoICJzaW1wbGUtYXVkaW8tY2FyZCwiLXByZWZpeC4KKworUmVxdWlyZWQgZGFpLWxpbmsgc3Vibm9kZXM6CisKKy0gY3B1CQkJCQk6IENQVSAgIHN1Yi1ub2RlCistIGNvZGVjCQkJCQk6IENPREVDIHN1Yi1ub2RlCisKK09wdGlvbmFsIGRhaS1saW5rIHN1Ym5vZGUgcHJvcGVydGllczoKKworLSBmb3JtYXQJCQkJOiBDUFUvQ09ERUMgY29tbW9uIGF1ZGlvIGZvcm1hdC4KKwkJCQkJICAiaTJzIiwgInJpZ2h0X2oiLCAibGVmdF9qIiAsICJkc3BfYSIKKwkJCQkJICAiZHNwX2IiLCAiYWM5NyIsICJwZG0iLCAibXNiIiwgImxzYiIKKy0gZnJhbWUtbWFzdGVyCQkJCTogSW5kaWNhdGVzIGRhaS1saW5rIGZyYW1lIG1hc3Rlci4KKwkJCQkJICBwaGFuZGxlIHRvIGEgY3B1IG9yIGNvZGVjIHN1Ym5vZGUuCistIGJpdGNsb2NrLW1hc3RlcgkJCTogSW5kaWNhdGVzIGRhaS1saW5rIGJpdCBjbG9jayBtYXN0ZXIuCisJCQkJCSAgcGhhbmRsZSB0byBhIGNwdSBvciBjb2RlYyBzdWJub2RlLgorLSBiaXRjbG9jay1pbnZlcnNpb24JCQk6IGJvb2wgcHJvcGVydHkuIEFkZCB0aGlzIGlmIHRoZQorCQkJCQkgIGRhaS1saW5rIHVzZXMgYml0IGNsb2NrIGludmVyc2lvbi4KKy0gZnJhbWUtaW52ZXJzaW9uCQkJOiBib29sIHByb3BlcnR5LiBBZGQgdGhpcyBpZiB0aGUKKwkJCQkJICBkYWktbGluayB1c2VzIGZyYW1lIGNsb2NrIGludmVyc2lvbi4KKy0gbWNsay1mcyAgICAgICAgICAgICAJCQk6IE11bHRpcGxpY2F0aW9uIGZhY3RvciBiZXR3ZWVuIHN0cmVhbQorCQkJCQkgIHJhdGUgYW5kIGNvZGVjIG1jbGssIGFwcGxpZWQgb25seSBmb3IKKwkJCQkJICB0aGUgZGFpLWxpbmsuCisKK0ZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRoZSBmcmFtZS1tYXN0ZXIgYW5kIGJpdGNsb2NrLW1hc3RlcgorcHJvcGVydGllcyBjYW4gYmUgdXNlZCBhcyBib29sZWFucyBpbiBjb2RlYyBzdWJub2RlIHRvIGluZGljYXRlIGlmIHRoZQorY29kZWMgaXMgdGhlIGRhaS1saW5rIGZyYW1lIG9yIGJpdCBjbG9jayBtYXN0ZXIuIEluIHRoaXMgY2FzZSB0aGVyZQorc2hvdWxkIGJlIG5vIGRhaS1saW5rIG5vZGUsIHRoZSBzYW1lIHByb3BlcnRpZXMgc2hvdWxkIG5vdCBiZSBwcmVzZW50CithdCBzb3VuZC1ub2RlIGxldmVsLCBhbmQgdGhlIGJpdGNsb2NrLWludmVyc2lvbiBhbmQgZnJhbWUtaW52ZXJzaW9uCitwcm9wZXJ0aWVzIHNob3VsZCBhbHNvIGJlIHBsYWNlZCBpbiB0aGUgY29kZWMgbm9kZSBpZiBuZWVkZWQuCisKK1JlcXVpcmVkIENQVS9DT0RFQyBzdWJub2RlcyBwcm9wZXJ0aWVzOgorCistIHNvdW5kLWRhaQkJCQk6IHBoYW5kbGUgYW5kIHBvcnQgb2YgQ1BVL0NPREVDCisKK09wdGlvbmFsIENQVS9DT0RFQyBzdWJub2RlcyBwcm9wZXJ0aWVzOgorCistIGRhaS10ZG0tc2xvdC1udW0JCQk6IFBsZWFzZSByZWZlciB0byB0ZG0tc2xvdC50eHQuCistIGRhaS10ZG0tc2xvdC13aWR0aAkJCTogUGxlYXNlIHJlZmVyIHRvIHRkbS1zbG90LnR4dC4KKy0gY2xvY2tzIC8gc3lzdGVtLWNsb2NrLWZyZXF1ZW5jeQk6IHNwZWNpZnkgc3Vibm9kZSdzIGNsb2NrIGlmIG5lZWRlZC4KKwkJCQkJICBpdCBjYW4gYmUgc3BlY2lmaWVkIHZpYSAiY2xvY2tzIiBpZiBzeXN0ZW0gaGFzCisJCQkJCSAgY2xvY2sgbm9kZSAoPSBjb21tb24gY2xvY2spLCBvciAic3lzdGVtLWNsb2NrLWZyZXF1ZW5jeSIKKwkJCQkJICAoaWYgc3lzdGVtIGRvZW5zJ3Qgc3VwcG9ydCBjb21tb24gY2xvY2spCisJCQkJCSAgSWYgYSBjbG9jayBpcyBzcGVjaWZpZWQsIGl0IGlzCisJCQkJCSAgZW5hYmxlZCB3aXRoIGNsa19wcmVwYXJlX2VuYWJsZSgpCisJCQkJCSAgaW4gZGFpIHN0YXJ0dXAoKSBhbmQgZGlzYWJsZWQgd2l0aAorCQkJCQkgIGNsa19kaXNhYmxlX3VucHJlcGFyZSgpIGluIGRhaQorCQkJCQkgIHNodXRkb3duKCkuCisKK0V4YW1wbGUgMSAtIHNpbmdsZSBEQUkgbGluazoKKworc291bmQgeworCWNvbXBhdGlibGUgPSAic2ltcGxlLWF1ZGlvLWNhcmQiOworCXNpbXBsZS1hdWRpby1jYXJkLG5hbWUgPSAiVkY2MTAtVG93ZXItU291bmQtQ2FyZCI7CisJc2ltcGxlLWF1ZGlvLWNhcmQsZm9ybWF0ID0gImxlZnRfaiI7CisJc2ltcGxlLWF1ZGlvLWNhcmQsYml0Y2xvY2stbWFzdGVyID0gPCZkYWlsaW5rMF9tYXN0ZXI+OworCXNpbXBsZS1hdWRpby1jYXJkLGZyYW1lLW1hc3RlciA9IDwmZGFpbGluazBfbWFzdGVyPjsKKwlzaW1wbGUtYXVkaW8tY2FyZCx3aWRnZXRzID0KKwkJIk1pY3JvcGhvbmUiLCAiTWljcm9waG9uZSBKYWNrIiwKKwkJIkhlYWRwaG9uZSIsICJIZWFkcGhvbmUgSmFjayIsCisJCSJTcGVha2VyIiwgIkV4dGVybmFsIFNwZWFrZXIiOworCXNpbXBsZS1hdWRpby1jYXJkLHJvdXRpbmcgPQorCQkiTUlDX0lOIiwgIk1pY3JvcGhvbmUgSmFjayIsCisJCSJIZWFkcGhvbmUgSmFjayIsICJIUF9PVVQiLAorCQkiRXh0ZXJuYWwgU3BlYWtlciIsICJMSU5FX09VVCI7CisKKwlzaW1wbGUtYXVkaW8tY2FyZCxjcHUgeworCQlzb3VuZC1kYWkgPSA8JnNoX2ZzaTIgMD47CisJfTsKKworCWRhaWxpbmswX21hc3Rlcjogc2ltcGxlLWF1ZGlvLWNhcmQsY29kZWMgeworCQlzb3VuZC1kYWkgPSA8JmFrNDY0OD47CisJCWNsb2NrcyA9IDwmb3NjPjsKKwl9OworfTsKKworJmkyYzAgeworCWFrNDY0ODogYWs0NjQ4QDEyIHsKKwkJI3NvdW5kLWRhaS1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJhc2FoaS1rYXNlaSxhazQ2NDgiOworCQlyZWcgPSA8MHgxMj47CisJfTsKK307CisKK3NoX2ZzaTI6IHNoX2ZzaTJAZWMyMzAwMDAgeworCSNzb3VuZC1kYWktY2VsbHMgPSA8MT47CisJY29tcGF0aWJsZSA9ICJyZW5lc2FzLHNoX2ZzaTIiOworCXJlZyA9IDwweGVjMjMwMDAwIDB4NDAwPjsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZnaWM+OworCWludGVycnVwdHMgPSA8MCAxNDYgMHg0PjsKK307CisKK0V4YW1wbGUgMiAtIG1hbnkgREFJIGxpbmtzOgorCitzb3VuZCB7CisJY29tcGF0aWJsZSA9ICJzaW1wbGUtYXVkaW8tY2FyZCI7CisJc2ltcGxlLWF1ZGlvLWNhcmQsbmFtZSA9ICJDdWJveCBBdWRpbyI7CisKKwlzaW1wbGUtYXVkaW8tY2FyZCxkYWktbGlua0AwIHsJCS8qIEkyUyAtIEhETUkgKi8KKwkJZm9ybWF0ID0gImkycyI7CisJCWNwdSB7CisJCQlzb3VuZC1kYWkgPSA8JmF1ZGlvMSAwPjsKKwkJfTsKKwkJY29kZWMgeworCQkJc291bmQtZGFpID0gPCZ0ZGE5OTh4IDA+OworCQl9OworCX07CisKKwlzaW1wbGUtYXVkaW8tY2FyZCxkYWktbGlua0AxIHsJCS8qIFMvUERJRiAtIEhETUkgKi8KKwkJY3B1IHsKKwkJCXNvdW5kLWRhaSA9IDwmYXVkaW8xIDE+OworCQl9OworCQljb2RlYyB7CisJCQlzb3VuZC1kYWkgPSA8JnRkYTk5OHggMT47CisJCX07CisJfTsKKworCXNpbXBsZS1hdWRpby1jYXJkLGRhaS1saW5rQDIgewkJLyogUy9QRElGIC0gUy9QRElGICovCisJCWNwdSB7CisJCQlzb3VuZC1kYWkgPSA8JmF1ZGlvMSAxPjsKKwkJfTsKKwkJY29kZWMgeworCQkJc291bmQtZGFpID0gPCZzcGRpZl9jb2RlYz47CisJCX07CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc2lyZi1hdWRpby1jb2RlYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc2lyZi1hdWRpby1jb2RlYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDYyZjVlYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9zaXJmLWF1ZGlvLWNvZGVjLnR4dApAQCAtMCwwICsxLDE3IEBACitTaVJGIGludGVybmFsIGF1ZGlvIENPREVDCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogInNpcmYsYXRsYXM2LWF1ZGlvLWNvZGVjIiBvciAic2lyZixwcmltYTItYXVkaW8tY29kZWMiCisKKyAgLSByZWcgOiB0aGUgcmVnaXN0ZXIgYWRkcmVzcyBvZiB0aGUgZGV2aWNlLgorCisgIC0gY2xvY2tzOiB0aGUgY2xvY2sgb2YgU2lSRiBpbnRlcm5hbCBhdWRpbyBjb2RlYworCitFeGFtcGxlOgorCithdWRpb2NvZGVjOiBhdWRpb2NvZGVjQGIwMDQwMDAwIHsKKwljb21wYXRpYmxlID0gInNpcmYsYXRsYXM2LWF1ZGlvLWNvZGVjIjsKKwlyZWcgPSA8MHhiMDA0MDAwMCAweDEwMDAwPjsKKwljbG9ja3MgPSA8JmNsa3MgMjc+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9zaXJmLWF1ZGlvLXBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3NpcmYtYXVkaW8tcG9ydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY2NmRlMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9zaXJmLWF1ZGlvLXBvcnQudHh0CkBAIC0wLDAgKzEsMjAgQEAKKyogU2lSRiBTb0MgYXVkaW8gcG9ydAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAic2lyZixhdWRpby1wb3J0IgorLSByZWc6IEJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBlbnRyaWVzOgorLSBkbWFzOiBMaXN0IG9mIERNQSBjb250cm9sbGVyIHBoYW5kbGUgYW5kIERNQSByZXF1ZXN0IGxpbmUgb3JkZXJlZCBwYWlycy4KKy0gZG1hLW5hbWVzOiBJZGVudGlmaWVyIHN0cmluZyBmb3IgZWFjaCBETUEgcmVxdWVzdCBsaW5lIGluIHRoZSBkbWFzIHByb3BlcnR5LgorICBUaGVzZSBzdHJpbmdzIGNvcnJlc3BvbmQgMToxIHdpdGggdGhlIG9yZGVyZWQgcGFpcnMgaW4gZG1hcy4KKworICBPbmUgb2YgdGhlIERNQSBjaGFubmVscyB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciB0cmFuc21pc3Npb24gKHNob3VsZCBiZQorICBuYW1lZCAidHgiKSBhbmQgb25lIGZvciByZWNlcHRpb24gKHNob3VsZCBiZSBuYW1lZCAicngiKS4KKworRXhhbXBsZToKKworYXVkaW9wb3J0OiBhdWRpb3BvcnRAYjAwNDAwMDAgeworCWNvbXBhdGlibGUgPSAic2lyZixhdWRpby1wb3J0IjsKKwlyZWcgPSA8MHhiMDA0MDAwMCAweDEwMDAwPjsKKwlkbWFzID0gPCZkbWFjMSAzPiwgPCZkbWFjMSA4PjsKKwlkbWEtbmFtZXMgPSAicngiLCAidHgiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9zaXJmLWF1ZGlvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9zaXJmLWF1ZGlvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODg4ODJjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3NpcmYtYXVkaW8udHh0CkBAIC0wLDAgKzEsNDEgQEAKKyogU2lSRiBhdGxhczYgYW5kIHByaW1hMiBpbnRlcm5hbCBhdWRpbyBjb2RlYyBhbmQgcG9ydCBiYXNlZCBhdWRpbyBzZXR1cHMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInNpcmYsc2lyZi1hdWRpby1jYXJkIgorLSBzaXJmLGF1ZGlvLXBsYXRmb3JtOiBwaGFuZGxlIGZvciB0aGUgcGxhdGZvcm0gbm9kZQorLSBzaXJmLGF1ZGlvLWNvZGVjOiBwaGFuZGxlIGZvciB0aGUgU2lSRiBpbnRlcm5hbCBjb2RlYyBub2RlCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGhwLXBhLWdwaW9zOiBOZWVkIHRvIGJlIHByZXNlbnQgaWYgdGhlIGJvYXJkIG5lZWQgY29udHJvbCBleHRlcm5hbAorICBoZWFkcGhvbmUgYW1wbGlmaWVyLgorLSBzcGstcGEtZ3Bpb3M6IE5lZWQgdG8gYmUgcHJlc2VudCBpZiB0aGUgYm9hcmQgbmVlZCBjb250cm9sIGV4dGVybmFsCisgIHNwZWFrZXIgYW1wbGlmaWVyLgorLSBocC1zd2l0Y2gtZ3Bpb3M6IE5lZWQgdG8gYmUgcHJlc2VudCBpZiB0aGUgYm9hcmQgY2FwYWJsZSB0byBkZXRlY3QgamFjaworICBpbnNlcnRpb24sIHJlbW92YWwuCisKK0F2YWlsYWJsZSBhdWRpbyBlbmRwb2ludHMgZm9yIHRoZSBhdWRpby1yb3V0aW5nIHRhYmxlOgorCitCb2FyZCBjb25uZWN0b3JzOgorICogSGVhZHNldCBTdGVyZW9waG9uZQorICogRXh0IFNwaworICogTGluZSBJbgorICogTWljCisKK1NpUkYgaW50ZXJuYWwgYXVkaW8gY29kZWMgcGluczoKKyAqIEhQT1VUTAorICogSFBPVVRSCisgKiBTUEtPVVQKKyAqIEV4dCBNaWMKKyAqIE1pYyBCaWFzCisKK0V4YW1wbGU6CisKK3NvdW5kIHsKKwkJY29tcGF0aWJsZSA9ICJzaXJmLHNpcmYtYXVkaW8tY2FyZCI7CisJCXNpcmYsYXVkaW8tY29kZWMgPSA8JmF1ZGlvY29kZWM+OworCQlzaXJmLGF1ZGlvLXBsYXRmb3JtID0gPCZhdWRpb3BvcnQ+OworCQlocC1wYS1ncGlvcyA9IDwmZ3BpbyA0NCAwPjsKKwkJc3BrLXBhLWdwaW9zID0gPCZncGlvIDQ2IDA+OworCQlocC1zd2l0Y2gtZ3Bpb3MgPSA8JmdwaW8gNDUgMD47Cit9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc2lyZi11c3AudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3NpcmYtdXNwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmY4NWIzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3NpcmYtdXNwLnR4dApAQCAtMCwwICsxLDI3IEBACisqIFNpUkYgU29DIFVTUCBtb2R1bGUKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInNpcmYscHJpbWEyLXVzcC1wY20iCistIHJlZzogQmFzZSBhZGRyZXNzIGFuZCBzaXplIGVudHJpZXM6CistIGRtYXM6IExpc3Qgb2YgRE1BIGNvbnRyb2xsZXIgcGhhbmRsZSBhbmQgRE1BIHJlcXVlc3QgbGluZSBvcmRlcmVkIHBhaXJzLgorLSBkbWEtbmFtZXM6IElkZW50aWZpZXIgc3RyaW5nIGZvciBlYWNoIERNQSByZXF1ZXN0IGxpbmUgaW4gdGhlIGRtYXMgcHJvcGVydHkuCisgIFRoZXNlIHN0cmluZ3MgY29ycmVzcG9uZCAxOjEgd2l0aCB0aGUgb3JkZXJlZCBwYWlycyBpbiBkbWFzLgorCisgIE9uZSBvZiB0aGUgRE1BIGNoYW5uZWxzIHdpbGwgYmUgcmVzcG9uc2libGUgZm9yIHRyYW5zbWlzc2lvbiAoc2hvdWxkIGJlCisgIG5hbWVkICJ0eCIpIGFuZCBvbmUgZm9yIHJlY2VwdGlvbiAoc2hvdWxkIGJlIG5hbWVkICJyeCIpLgorCistIGNsb2NrczogVVNQIGNvbnRyb2xsZXIgY2xvY2sgc291cmNlCistIHBpbmN0cmwtbmFtZXM6IE11c3QgY29udGFpbiBhICJkZWZhdWx0IiBlbnRyeS4KKy0gcGluY3RybC1OTk46IE9uZSBwcm9wZXJ0eSBtdXN0IGV4aXN0IGZvciBlYWNoIGVudHJ5IGluIHBpbmN0cmwtbmFtZXMuCisKK0V4YW1wbGU6Cit1c3AwOiB1c3BAYjAwODAwMDAgeworCWNvbXBhdGlibGUgPSAic2lyZixwcmltYTItdXNwLXBjbSI7CisJcmVnID0gPDB4YjAwODAwMDAgMHgxMDAwMD47CisJY2xvY2tzID0gPCZjbGtzIDI4PjsKKwlkbWFzID0gPCZkbWFjMSAxPiwgPCZkbWFjMSAyPjsKKwlkbWEtbmFtZXMgPSAicngiLCAidHgiOworCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJcGluY3RybC0wID0gPCZ1c3AwX29ubHlfdXRmc19waW5zX2E+OworfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3Nub3cudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3Nub3cudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkZjc0ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc25vdy50eHQKQEAgLTAsMCArMSwyMiBAQAorQXVkaW8gQmluZGluZyBmb3IgU25vdyBib2FyZHMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IENhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZywKKwkJCSJnb29nbGUsc25vdy1hdWRpby1tYXg5ODA5MCIgb3IKKwkJCSJnb29nbGUsc25vdy1hdWRpby1tYXg5ODA5MSIgb3IKKwkJCSJnb29nbGUsc25vdy1hdWRpby1tYXg5ODA5NSIKKy0gc2Ftc3VuZyxpMnMtY29udHJvbGxlcjogVGhlIHBoYW5kbGUgb2YgdGhlIFNhbXN1bmcgSTJTIGNvbnRyb2xsZXIKKy0gc2Ftc3VuZyxhdWRpby1jb2RlYzogVGhlIHBoYW5kbGUgb2YgdGhlIGF1ZGlvIGNvZGVjCisKK09wdGlvbmFsOgorLSBzYW1zdW5nLG1vZGVsOiBUaGUgbmFtZSBvZiB0aGUgc291bmQtY2FyZAorCitFeGFtcGxlOgorCitzb3VuZCB7CisJCWNvbXBhdGlibGUgPSAiZ29vZ2xlLHNub3ctYXVkaW8tbWF4OTgwOTUiOworCisJCXNhbXN1bmcsbW9kZWwgPSAiU25vdy1JMlMtTUFYOTgwOTUiOworCQlzYW1zdW5nLGkycy1jb250cm9sbGVyID0gPCZpMnMwPjsKKwkJc2Ftc3VuZyxhdWRpby1jb2RlYyA9IDwmbWF4OTgwOTU+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9zb2MtYWM5N2xpbmsudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3NvYy1hYzk3bGluay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODAxNTJhOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9zb2MtYWM5N2xpbmsudHh0CkBAIC0wLDAgKzEsMjggQEAKK0FDOTcgbGluayBiaW5kaW5ncworCitUaGVzZSBiaW5kaW5ncyBjYW4gYmUgaW5jbHVkZWQgd2l0aGluIGFueSBvdGhlciBkZXZpY2Ugbm9kZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIHBpbmN0cmwtbmFtZXM6IEhhcyB0byBjb250YWluIGZvbGxvd2luZyBzdGF0ZXMgdG8gc2V0dXAgdGhlIGNvcnJlY3QKKyAgIHBpbm11eGluZyBmb3IgdGhlIHVzZWQgZ3Bpb3M6CisJImFjOTctcnVubmluZyI6IEFDOTctbGluayBpcyBhY3RpdmUKKwkiYWM5Ny1yZXNldCI6IEFDOTctbGluayByZXNldCBzdGF0ZQorCSJhYzk3LXdhcm0tcmVzZXQiOiBBQzk3LWxpbmsgd2FybSByZXNldCBzdGF0ZQorIC0gYWM5Ny1ncGlvczogTGlzdCBvZiBncGlvIHBoYW5kbGVzIHdpdGggYXJncyBpbiB0aGUgb3JkZXIgYWM5Ny1zeW5jLAorICAgYWM5Ny1zZGF0YSwgYWM5Ny1yZXNldAorCisKK0V4YW1wbGU6CisKK3NzaSB7CisJLi4uCisKKwlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiLCAiYWM5Ny1ydW5uaW5nIiwgImFjOTctcmVzZXQiLCAiYWM5Ny13YXJtLXJlc2V0IjsKKwlwaW5jdHJsLTAgPSA8JmFjOTdsaW5rX3J1bm5pbmc+OworCXBpbmN0cmwtMSA9IDwmYWM5N2xpbmtfcnVubmluZz47CisJcGluY3RybC0yID0gPCZhYzk3bGlua19yZXNldD47CisJcGluY3RybC0zID0gPCZhYzk3bGlua193YXJtX3Jlc2V0PjsKKwlhYzk3LWdwaW9zID0gPCZncGlvMyAyMCAwICZncGlvMyAyMiAwICZncGlvMyAyOCAwPjsKKworCS4uLgorfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9zcGRpZi1yZWNlaXZlci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc3BkaWYtcmVjZWl2ZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZjgwN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc3BkaWYtcmVjZWl2ZXIudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0RldmljZS1UcmVlIGJpbmRpbmdzIGZvciBkdW1teSBzcGRpZiByZWNlaXZlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCS0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJsaW51eCxzcGRpZi1kaXIiLgorCitFeGFtcGxlIG5vZGU6CisKKwljb2RlYzogc3BkaWYtcmVjZWl2ZXIgeworCQljb21wYXRpYmxlID0gImxpbnV4LHNwZGlmLWRpciI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9zcGRpZi10cmFuc21pdHRlci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc3BkaWYtdHJhbnNtaXR0ZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YTg1ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc3BkaWYtdHJhbnNtaXR0ZXIudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0RldmljZS1UcmVlIGJpbmRpbmdzIGZvciBkdW1teSBzcGRpZiB0cmFuc21pdHRlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCS0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJsaW51eCxzcGRpZi1kaXQiLgorCitFeGFtcGxlIG5vZGU6CisKKwljb2RlYzogc3BkaWYtdHJhbnNtaXR0ZXIgeworCQljb21wYXRpYmxlID0gImxpbnV4LHNwZGlmLWRpdCI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9zc20yNTE4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9zc20yNTE4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTM4MWE3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3NzbTI1MTgudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1NTTTI1MTggYXVkaW8gYW1wbGlmaWVyCisKK1RoaXMgZGV2aWNlIHN1cHBvcnRzIEkyQyBvbmx5LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGUgOiBNdXN0IGJlICJhZGksc3NtMjUxOCIKKyAgLSByZWcgOiB0aGUgSTJDIGFkZHJlc3Mgb2YgdGhlIGRldmljZS4gVGhpcyB3aWxsIGVpdGhlciBiZSAweDM0IChBRERSIHBpbiBsb3cpCisJb3IgMHgzNSAoQUREUiBwaW4gaGlnaCkKKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAgLSBncGlvcyA6IEdQSU8gY29ubmVjdGVkIHRvIHRoZSBuU0QgcGluLiBJZiB0aGUgcHJvcGVydHkgaXMgbm90IHByZXNlbnQgaXQgaXMKKwkgICAgICAgIGFzc3VtZWQgdGhhdCB0aGUgblNEIHBpbiBpcyBoYXJkd2lyZWQgdG8gYWx3YXlzIG9uLgorCitFeGFtcGxlOgorCisJc3NtMjUxODogc3NtMjUxOEAzNCB7CisJCWNvbXBhdGlibGUgPSAiYWRpLHNzbTI1MTgiOworCQlyZWcgPSA8MHgzND47CisJCWdwaW9zID0gPCZncGlvIDUgMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9zc200NTY3LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9zc200NTY3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzNkOWU3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3NzbTQ1NjcudHh0CkBAIC0wLDAgKzEsMTUgQEAKK0FuYWxvZyBEZXZpY2VzIFNTTTQ1NjcgYXVkaW8gYW1wbGlmaWVyCisKK1RoaXMgZGV2aWNlIHN1cHBvcnRzIEkyQyBvbmx5LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGUgOiBNdXN0IGJlICJhZGksc3NtNDU2NyIKKyAgLSByZWcgOiB0aGUgSTJDIGFkZHJlc3Mgb2YgdGhlIGRldmljZS4gVGhpcyB3aWxsIGVpdGhlciBiZSAweDM0IChMUl9TRUwvQUREUiBjb25uZWN0ZWQgdG8gQUdORCksCisJMHgzNSAoTFJfU0VML0FERFIgY29ubmVjdGVkIHRvIElPVkREKSBvciAweDM2IChMUl9TRUwvQUREUiBvcGVuKS4KKworRXhhbXBsZToKKworCXNzbTQ1Njc6IHNzbTQ1NjdAMzQgeworCQljb21wYXRpYmxlID0gImFkaSxzc200NTY3IjsKKwkJcmVnID0gPDB4MzQ+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc3Qsc3RhMzJ4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9zdCxzdGEzMngudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NWRlM2EKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc3Qsc3RhMzJ4LnR4dApAQCAtMCwwICsxLDkyIEBACitTVEEzMlggYXVkaW8gQ09ERUMKKworVGhlIGRyaXZlciBmb3IgdGhpcyBkZXZpY2Ugb25seSBzdXBwb3J0cyBJMkMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlOiAic3Qsc3RhMzJ4IgorICAtIHJlZzogdGhlIEkyQyBhZGRyZXNzIG9mIHRoZSBkZXZpY2UgZm9yIEkyQworICAtIHJlc2V0LWdwaW9zOiBhIEdQSU8gc3BlYyBmb3IgdGhlIHJlc2V0IHBpbi4gSWYgc3BlY2lmaWVkLCBpdCB3aWxsIGJlCisJCSBkZWFzc2VydGVkIGJlZm9yZSBjb21tdW5pY2F0aW9uIHRvIHRoZSBjb2RlYyBzdGFydHMuCisKKyAgLSBwb3dlci1kb3duLWdwaW9zOiBhIEdQSU8gc3BlYyBmb3IgdGhlIHBvd2VyIGRvd24gcGluLiBJZiBzcGVjaWZpZWQsCisJCSAgICAgIGl0IHdpbGwgYmUgZGVhc3NlcnRlZCBiZWZvcmUgY29tbXVuaWNhdGlvbiB0byB0aGUgY29kZWMKKwkJICAgICAgc3RhcnRzLgorCisgIC0gVmRkYS1zdXBwbHk6IHJlZ3VsYXRvciBzcGVjLCBwcm92aWRpbmcgMy4zVgorICAtIFZkZDMtc3VwcGx5OiByZWd1bGF0b3Igc3BlYywgcHJvdmlkaW5nIDMuM1YKKyAgLSBWY2Mtc3VwcGx5OiByZWd1bGF0b3Igc3BlYywgcHJvdmlkaW5nIDVWIC0gMjZWCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKyAgLSAgc3Qsb3V0cHV0LWNvbmY6IG51bWJlciwgU2VsZWN0cyB0aGUgb3V0cHV0IGNvbmZpZ3VyYXRpb246CisJMDogMi1jaGFubmVsIChmdWxsLWJyaWRnZSkgcG93ZXIsIDItY2hhbm5lbCBkYXRhLW91dAorCTE6IDIgKGhhbGYtYnJpZGdlKS4gMSAoZnVsbC1icmlkZ2UpIG9uLWJvYXJkIHBvd2VyCisJMjogMiBDaGFubmVsIChGdWxsLUJyaWRnZSkgUG93ZXIsIDEgQ2hhbm5lbCBGRlgKKwkzOiAxIENoYW5uZWwgTW9uby1QYXJhbGxlbAorCUlmIHBhcmFtZXRlciBpcyBtaXNzaW5nLCBtb2RlIDAgd2lsbCBiZSBlbmFibGVkLgorCVRoaXMgcHJvcGVydHkgaGFzIHRvIGJlIHNwZWNpZmllZCBhcyAnL2JpdHMvIDgnIHZhbHVlLgorCisgIC0gIHN0LGNoMS1vdXRwdXQtbWFwcGluZzogQ2hhbm5lbCAxIG91dHB1dCBtYXBwaW5nCisgIC0gIHN0LGNoMi1vdXRwdXQtbWFwcGluZzogQ2hhbm5lbCAyIG91dHB1dCBtYXBwaW5nCisgIC0gIHN0LGNoMy1vdXRwdXQtbWFwcGluZzogQ2hhbm5lbCAzIG91dHB1dCBtYXBwaW5nCisJMDogQ2hhbm5lbCAxCisJMTogQ2hhbm5lbCAyCisJMjogQ2hhbm5lbCAzCisJSWYgcGFyYW1ldGVyIGlzIG1pc3NpbmcsIGNoYW5uZWwgMSBpcyBjaG9zZW4uCisJVGhpcyBwcm9wZXJ0aWVzIGhhdmUgdG8gYmUgc3BlY2lmaWVkIGFzICcvYml0cy8gOCcgdmFsdWVzLgorCisgIC0gIHN0LHRoZXJtYWwtd2FybmluZy1yZWNvdmVyOgorCUlmIHByZXNlbnQsIHRoZXJtYWwgd2FybmluZyByZWNvdmVyeSBpcyBlbmFibGVkLgorCisgIC0gIHN0LHRoZXJtYWwtd2FybmluZy1hZGp1c3RtZW50OgorCUlmIHByZXNlbnQsIHRoZXJtYWwgd2FybmluZyBhZGp1c3RtZW50IGlzIGVuYWJsZWQuCisKKyAgLSAgc3QsZmF1bHQtZGV0ZWN0LXJlY292ZXJ5OgorCUlmIHByZXNlbnQsIHRoZW4gZmF1bHQgcmVjb3Zlcnkgd2lsbCBiZSBlbmFibGVkLgorCisgIC0gIHN0LGRyb3AtY29tcGVuc2F0aW9uLW5zOiBudW1iZXIKKwlPbmx5IHJlcXVpcmVkIGZvciAic3QsZmZ4LXBvd2VyLW91dHB1dC1tb2RlIiA9PQorCSJ2YXJpYWJsZS1kcm9wLWNvbXBlbnNhdGlvbiIuCisJU3BlY2lmaWVzIHRoZSBkcm9wIGNvbXBlbnNhdGlvbiBpbiBuYW5vc2Vjb25kcy4KKwlUaGUgdmFsdWUgbXVzdCBiZSBpbiB0aGUgcmFuZ2Ugb2YgMC4uMzAwLCBhbmQgb25seQorCW11bHRpcGxlcyBvZiAyMCBhcmUgYWxsb3dlZC4gRGVmYXVsdCBpcyAxNDBucy4KKworICAtICBzdCxtYXgtcG93ZXItdXNlLW1wY2M6CisJSWYgcHJlc2VudCwgdGhlbiBNUENDIGJpdHMgYXJlIHVzZWQgZm9yIE1QQyBjb2VmZmljaWVudHMsCisJb3RoZXJ3aXNlIHN0YW5kYXJkIE1QQyBjb2VmZmljaWVudHMgYXJlIHVzZWQuCisKKyAgLSAgc3QsbWF4LXBvd2VyLWNvcnI6CisJSWYgcHJlc2VudCwgcG93ZXIgYnJpZGdlIGNvcnJlY3Rpb24gZm9yIFRIRCByZWR1Y3Rpb24gbmVhciBtYXhpbXVtCisJcG93ZXIgb3V0cHV0IGlzIGVuYWJsZWQuCisKKyAgLSAgc3QsYW0tcmVkdWN0aW9uLW1vZGU6CisJSWYgcHJlc2VudCwgRkZYIG1vZGUgcnVucyBpbiBBTSByZWR1Y3Rpb24gbW9kZSwgb3RoZXJ3aXNlIG5vcm1hbAorCUZGWCBtb2RlIGlzIHVzZWQuCisKKyAgLSAgc3Qsb2RkLXB3bS1zcGVlZC1tb2RlOgorCUlmIHByZXNlbnQsIFBXTSBzcGVlZCBtb2RlIHJ1biBvbiBvZGQgc3BlZWQgbW9kZSAoMzQxLjMga0h6KSBvbiBhbGwKKwljaGFubmVscy4gSWYgbm90IHByZXNlbnQsIG5vcm1hbCBQV00gc3BwZWQgbW9kZSAoMzg0IGtIeikgd2lsbCBiZSB1c2VkLgorCisgIC0gIHN0LGludmFsaWQtaW5wdXQtZGV0ZWN0LW11dGU6CisJSWYgcHJlc2VudCwgYXV0b21hdGljIGludmFsaWQgaW5wdXQgZGV0ZWN0IG11dGUgaXMgZW5hYmxlZC4KKworRXhhbXBsZToKKworY29kZWM6IHN0YTMyeEAzOCB7CisJY29tcGF0aWJsZSA9ICJzdCxzdGEzMngiOworCXJlZyA9IDwweDFjPjsKKwlyZXNldC1ncGlvcyA9IDwmZ3BpbzEgMTkgMD47CisJcG93ZXItZG93bi1ncGlvcyA9IDwmZ3BpbzEgMTYgMD47CisJc3Qsb3V0cHV0LWNvbmYgPSAvYml0cy8gOCAgPDB4Mz47CS8vIHNldCBvdXRwdXQgdG8gMi1jaGFubmVsCisJCQkJCQkvLyAoZnVsbC1icmlkZ2UpIHBvd2VyLAorCQkJCQkJLy8gMi1jaGFubmVsIGRhdGEtb3V0CisJc3QsY2gxLW91dHB1dC1tYXBwaW5nID0gL2JpdHMvIDggPDA+OwkvLyBzZXQgY2hhbm5lbCAxIG91dHB1dCBjaCAxCisJc3QsY2gyLW91dHB1dC1tYXBwaW5nID0gL2JpdHMvIDggPDA+OwkvLyBzZXQgY2hhbm5lbCAyIG91dHB1dCBjaCAxCisJc3QsY2gzLW91dHB1dC1tYXBwaW5nID0gL2JpdHMvIDggPDA+OwkvLyBzZXQgY2hhbm5lbCAzIG91dHB1dCBjaCAxCisJc3QsbWF4LXBvd2VyLWNvcnJlY3Rpb247CQkvLyBlbmFibGVzIHBvd2VyIGJyaWRnZQorCQkJCQkJLy8gY29ycmVjdGlvbiBmb3IgVEhEIHJlZHVjdGlvbgorCQkJCQkJLy8gbmVhciBtYXhpbXVtIHBvd2VyIG91dHB1dAorCXN0LGludmFsaWQtaW5wdXQtZGV0ZWN0LW11dGU7CQkvLyBtdXRlIGlmIG5vIHZhbGlkIGRpZ2l0YWwKKwkJCQkJCS8vIGF1ZGlvIHNpZ25hbCBpcyBwcm92aWRlZC4KK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc3Qsc3RhMzUwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9zdCxzdGEzNTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwNzM5OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc3Qsc3RhMzUwLnR4dApAQCAtMCwwICsxLDEzMSBAQAorU1RBMzUwIGF1ZGlvIENPREVDCisKK1RoZSBkcml2ZXIgZm9yIHRoaXMgZGV2aWNlIG9ubHkgc3VwcG9ydHMgSTJDLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZTogInN0LHN0YTM1MCIKKyAgLSByZWc6IHRoZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlIGZvciBJMkMKKyAgLSByZXNldC1ncGlvczogYSBHUElPIHNwZWMgZm9yIHRoZSByZXNldCBwaW4uIElmIHNwZWNpZmllZCwgaXQgd2lsbCBiZQorCQkgZGVhc3NlcnRlZCBiZWZvcmUgY29tbXVuaWNhdGlvbiB0byB0aGUgY29kZWMgc3RhcnRzLgorCisgIC0gcG93ZXItZG93bi1ncGlvczogYSBHUElPIHNwZWMgZm9yIHRoZSBwb3dlciBkb3duIHBpbi4gSWYgc3BlY2lmaWVkLAorCQkgICAgICBpdCB3aWxsIGJlIGRlYXNzZXJ0ZWQgYmVmb3JlIGNvbW11bmljYXRpb24gdG8gdGhlIGNvZGVjCisJCSAgICAgIHN0YXJ0cy4KKworICAtIHZkZC1kaWctc3VwcGx5OiByZWd1bGF0b3Igc3BlYywgcHJvdmlkaW5nIDMuM1YKKyAgLSB2ZGQtcGxsLXN1cHBseTogcmVndWxhdG9yIHNwZWMsIHByb3ZpZGluZyAzLjNWCisgIC0gdmNjLXN1cHBseTogcmVndWxhdG9yIHNwZWMsIHByb3ZpZGluZyA1ViAtIDI2VgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCisgIC0gIHN0LG91dHB1dC1jb25mOiBudW1iZXIsIFNlbGVjdHMgdGhlIG91dHB1dCBjb25maWd1cmF0aW9uOgorCTA6IDItY2hhbm5lbCAoZnVsbC1icmlkZ2UpIHBvd2VyLCAyLWNoYW5uZWwgZGF0YS1vdXQKKwkxOiAyIChoYWxmLWJyaWRnZSkuIDEgKGZ1bGwtYnJpZGdlKSBvbi1ib2FyZCBwb3dlcgorCTI6IDIgQ2hhbm5lbCAoRnVsbC1CcmlkZ2UpIFBvd2VyLCAxIENoYW5uZWwgRkZYCisJMzogMSBDaGFubmVsIE1vbm8tUGFyYWxsZWwKKwlJZiBwYXJhbWV0ZXIgaXMgbWlzc2luZywgbW9kZSAwIHdpbGwgYmUgZW5hYmxlZC4KKwlUaGlzIHByb3BlcnR5IGhhcyB0byBiZSBzcGVjaWZpZWQgYXMgJy9iaXRzLyA4JyB2YWx1ZS4KKworICAtICBzdCxjaDEtb3V0cHV0LW1hcHBpbmc6IENoYW5uZWwgMSBvdXRwdXQgbWFwcGluZworICAtICBzdCxjaDItb3V0cHV0LW1hcHBpbmc6IENoYW5uZWwgMiBvdXRwdXQgbWFwcGluZworICAtICBzdCxjaDMtb3V0cHV0LW1hcHBpbmc6IENoYW5uZWwgMyBvdXRwdXQgbWFwcGluZworCTA6IENoYW5uZWwgMQorCTE6IENoYW5uZWwgMgorCTI6IENoYW5uZWwgMworCUlmIHBhcmFtZXRlciBpcyBtaXNzaW5nLCBjaGFubmVsIDEgaXMgY2hvc2VuLgorCVRoaXMgcHJvcGVydGllcyBoYXZlIHRvIGJlIHNwZWNpZmllZCBhcyAnL2JpdHMvIDgnIHZhbHVlcy4KKworICAtICBzdCx0aGVybWFsLXdhcm5pbmctcmVjb3ZlcjoKKwlJZiBwcmVzZW50LCB0aGVybWFsIHdhcm5pbmcgcmVjb3ZlcnkgaXMgZW5hYmxlZC4KKworICAtICBzdCx0aGVybWFsLXdhcm5pbmctYWRqdXN0bWVudDoKKwlJZiBwcmVzZW50LCB0aGVybWFsIHdhcm5pbmcgYWRqdXN0bWVudCBpcyBlbmFibGVkLgorCisgIC0gIHN0LGZhdWx0LWRldGVjdC1yZWNvdmVyeToKKwlJZiBwcmVzZW50LCB0aGVuIGZhdWx0IHJlY292ZXJ5IHdpbGwgYmUgZW5hYmxlZC4KKworICAtICBzdCxmZngtcG93ZXItb3V0cHV0LW1vZGU6IHN0cmluZworCVRoZSBGRlggcG93ZXIgb3V0cHV0IG1vZGUgc2VsZWN0cyBob3cgdGhlIEZGWCBvdXRwdXQgdGltaW5nIGlzCisJY29uZmlndXJlZC4gTXVzdCBiZSBvbmUgb2YgdGhlc2UgdmFsdWVzOgorCSAgLSAgImRyb3AtY29tcGVuc2F0aW9uIgorCSAgLSAgInRhcGVyZWQtY29tcGVuc2F0aW9uIgorCSAgLSAgImZ1bGwtcG93ZXItbW9kZSIKKwkgIC0gICJ2YXJpYWJsZS1kcm9wLWNvbXBlbnNhdGlvbiIgKGRlZmF1bHQpCisKKyAgLSAgc3QsZHJvcC1jb21wZW5zYXRpb24tbnM6IG51bWJlcgorCU9ubHkgcmVxdWlyZWQgZm9yICJzdCxmZngtcG93ZXItb3V0cHV0LW1vZGUiID09CisJInZhcmlhYmxlLWRyb3AtY29tcGVuc2F0aW9uIi4KKwlTcGVjaWZpZXMgdGhlIGRyb3AgY29tcGVuc2F0aW9uIGluIG5hbm9zZWNvbmRzLgorCVRoZSB2YWx1ZSBtdXN0IGJlIGluIHRoZSByYW5nZSBvZiAwLi4zMDAsIGFuZCBvbmx5CisJbXVsdGlwbGVzIG9mIDIwIGFyZSBhbGxvd2VkLiBEZWZhdWx0IGlzIDE0MG5zLgorCisgIC0gIHN0LG92ZXJjdXJyZW50LXdhcm5pbmctYWRqdXN0bWVudDoKKwlJZiBwcmVzZW50LCBvdmVyY3VycmVudCB3YXJuaW5nIGFkanVzdG1lbnQgaXMgZW5hYmxlZC4KKworICAtICBzdCxtYXgtcG93ZXItdXNlLW1wY2M6CisJSWYgcHJlc2VudCwgdGhlbiBNUENDIGJpdHMgYXJlIHVzZWQgZm9yIE1QQyBjb2VmZmljaWVudHMsCisJb3RoZXJ3aXNlIHN0YW5kYXJkIE1QQyBjb2VmZmljaWVudHMgYXJlIHVzZWQuCisKKyAgLSAgc3QsbWF4LXBvd2VyLWNvcnI6CisJSWYgcHJlc2VudCwgcG93ZXIgYnJpZGdlIGNvcnJlY3Rpb24gZm9yIFRIRCByZWR1Y3Rpb24gbmVhciBtYXhpbXVtCisJcG93ZXIgb3V0cHV0IGlzIGVuYWJsZWQuCisKKyAgLSAgc3QsYW0tcmVkdWN0aW9uLW1vZGU6CisJSWYgcHJlc2VudCwgRkZYIG1vZGUgcnVucyBpbiBBTSByZWR1Y3Rpb24gbW9kZSwgb3RoZXJ3aXNlIG5vcm1hbAorCUZGWCBtb2RlIGlzIHVzZWQuCisKKyAgLSAgc3Qsb2RkLXB3bS1zcGVlZC1tb2RlOgorCUlmIHByZXNlbnQsIFBXTSBzcGVlZCBtb2RlIHJ1biBvbiBvZGQgc3BlZWQgbW9kZSAoMzQxLjMga0h6KSBvbiBhbGwKKwljaGFubmVscy4gSWYgbm90IHByZXNlbnQsIG5vcm1hbCBQV00gc3BwZWQgbW9kZSAoMzg0IGtIeikgd2lsbCBiZSB1c2VkLgorCisgIC0gIHN0LGRpc3RvcnRpb24tY29tcGVuc2F0aW9uOgorCUlmIHByZXNlbnQsIGRpc3RvcnRpb24gY29tcGVuc2F0aW9uIHZhcmlhYmxlIHVzZXMgRENDIGNvZWZmaWNpZW50LgorCUlmIG5vdCBwcmVzZW50LCBwcmVzZXQgREMgY29lZmZpY2llbnQgaXMgdXNlZC4KKworICAtICBzdCxpbnZhbGlkLWlucHV0LWRldGVjdC1tdXRlOgorCUlmIHByZXNlbnQsIGF1dG9tYXRpYyBpbnZhbGlkIGlucHV0IGRldGVjdCBtdXRlIGlzIGVuYWJsZWQuCisKKyAgLSAgc3QsYWN0aXZhdGUtbXV0ZS1vdXRwdXQ6CisJSWYgcHJlc2VudCwgYSBtdXRlIG91dHB1dCB3aWxsIGJlIGFjdGl2YXRlZCBpbiBhc2UgdGhlIHZvbHVtZSB3aWxsCisJcmVhY2ggYSB2YWx1ZSBsb3dlciB0aGFuIC03NiBkQkZTLgorCisgIC0gIHN0LGJyaWRnZS1pbW1lZGlhdGUtb2ZmOgorCUlmIHByZXNlbnQsIHRoZSBicmlkZ2Ugd2lsbCBiZSBzd2l0Y2hlZCBvZmYgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlCisJcG93ZXItZG93bi1ncGlvIGdvZXMgbG93LiBPdGhlcndpc2UsIHRoZSBicmlkZ2Ugd2lsbCB3YWl0IGZvciAxMworCW1pbGxpb24gY2xvY2sgY3ljbGVzIHRvIHBhc3MgYmVmb3JlIHNodXR0aW5nIGRvd24uCisKKyAgLSAgc3Qsbm9pc2Utc2hhcGUtZGMtY3V0OgorCUlmIHByZXNlbnQsIHRoZSBub2lzZS1zaGFwaW5nIHRlY2huaXF1ZSBvbiB0aGUgREMgY3V0b2ZmIGZpbHRlciBhcmUKKwllbmFibGVkLgorCisgIC0gIHN0LHBvd2VyZG93bi1tYXN0ZXItdm9sdW1lOgorCUlmIHByZXNlbnQsIHRoZSBwb3dlci1kb3duIHBpbiBhbmQgSTJDIHBvd2VyLWRvd24gZnVuY3Rpb25zIHdpbGwKKwlhY3Qgb24gdGhlIG1hc3RlciB2b2x1bWUuIE90aGVyd2lzZSwgdGhlIGZ1bmN0aW9ucyB3aWxsIGFjdCBvbiB0aGUKKwltdXRlIGNvbW1hbmRzLgorCisgIC0gIHN0LHBvd2VyZG93bi1kZWxheS1kaXZpZGVyOgorCUlmIHByZXNlbnQsIHRoZSBicmlkZ2UgcG93ZXItZG93biB0aW1lIHdpbGwgYmUgZGl2aWRlZCBieSB0aGUgcHJvdmlkZWQKKwl2YWx1ZS4gSWYgbm90IHNwZWNpZmllZCwgYSBkaXZpZGVyIG9mIDEgd2lsbCBiZSB1c2VkLiBBbGxvd2VkIHZhbHVlcworCWFyZSAxLCAyLCA0LCA4LCAxNiwgMzIsIDY0IGFuZCAxMjguCisJVGhpcyBwcm9wZXJ0eSBoYXMgdG8gYmUgc3BlY2lmaWVkIGFzICcvYml0cy8gOCcgdmFsdWUuCisKK0V4YW1wbGU6CisKK2NvZGVjOiBzdGEzNTBAMzggeworCWNvbXBhdGlibGUgPSAic3Qsc3RhMzUwIjsKKwlyZWcgPSA8MHgxYz47CisJcmVzZXQtZ3Bpb3MgPSA8JmdwaW8xIDE5IDA+OworCXBvd2VyLWRvd24tZ3Bpb3MgPSA8JmdwaW8xIDE2IDA+OworCXN0LG91dHB1dC1jb25mID0gL2JpdHMvIDggIDwweDM+OwkvLyBzZXQgb3V0cHV0IHRvIDItY2hhbm5lbAorCQkJCQkJLy8gKGZ1bGwtYnJpZGdlKSBwb3dlciwKKwkJCQkJCS8vIDItY2hhbm5lbCBkYXRhLW91dAorCXN0LGNoMS1vdXRwdXQtbWFwcGluZyA9IC9iaXRzLyA4IDwwPjsJLy8gc2V0IGNoYW5uZWwgMSBvdXRwdXQgY2ggMQorCXN0LGNoMi1vdXRwdXQtbWFwcGluZyA9IC9iaXRzLyA4IDwwPjsJLy8gc2V0IGNoYW5uZWwgMiBvdXRwdXQgY2ggMQorCXN0LGNoMy1vdXRwdXQtbWFwcGluZyA9IC9iaXRzLyA4IDwwPjsJLy8gc2V0IGNoYW5uZWwgMyBvdXRwdXQgY2ggMQorCXN0LG1heC1wb3dlci1jb3JyZWN0aW9uOwkJLy8gZW5hYmxlcyBwb3dlciBicmlkZ2UKKwkJCQkJCS8vIGNvcnJlY3Rpb24gZm9yIFRIRCByZWR1Y3Rpb24KKwkJCQkJCS8vIG5lYXIgbWF4aW11bSBwb3dlciBvdXRwdXQKKwlzdCxpbnZhbGlkLWlucHV0LWRldGVjdC1tdXRlOwkJLy8gbXV0ZSBpZiBubyB2YWxpZCBkaWdpdGFsCisJCQkJCQkvLyBhdWRpbyBzaWduYWwgaXMgcHJvdmlkZWQuCit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3N0LHN0aS1hc29jLWNhcmQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3N0LHN0aS1hc29jLWNhcmQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyOGZhMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc3Qsc3RpLWFzb2MtY2FyZC50eHQKQEAgLTAsMCArMSwxNTUgQEAKK1NUTWljcm9lbGVjdHJvbmljcyBzdGkgQVNvQyBjYXJkcworCitUaGUgc3RpIEFTb0MgU291bmQgQ2FyZCBjYW4gYmUgdXNlZCwgZm9yIGFsbCBzdGkgU29DcyB1c2luZyBpbnRlcm5hbCBzdGktc2FzCitjb2RlYyBvciBleHRlcm5hbCBjb2RlY3MuCisKK3N0aSBzb3VuZCBkcml2ZXJzIGFsbG93cyB0byBleHBvc2Ugc3RpIFNvQyBhdWRpbyBpbnRlcmZhY2UgdGhyb3VnaCB0aGUKK2dlbmVyaWMgQVNvQyBzaW1wbGUgY2FyZC4gRm9yIGRldGFpbHMgYWJvdXQgc291bmQgY2FyZCBkZWNsYXJhdGlvbiBwbGVhc2UgcmVmZXIgdG8KK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9zaW1wbGUtY2FyZC50eHQuCisKKzEpIHN0aS11bmlwZXJpcGgtZGFpOiBhdWRpbyBkYWkgZGV2aWNlLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogInN0LHN0aS11bmktcGxheWVyIiBvciAic3Qsc3RpLXVuaS1yZWFkZXIiCisKKyAgLSBzdCxzeXNjZmc6IHBoYW5kbGUgdG8gYm9vdC1kZXZpY2Ugc3lzdGVtIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzCisKKyAgLSBjbG9jay1uYW1lczogbmFtZSBvZiB0aGUgY2xvY2tzIGxpc3RlZCBpbiBjbG9ja3MgcHJvcGVydHkgaW4gdGhlIHNhbWUgb3JkZXIKKworICAtIHJlZzogQ1BVIERBSSBJUCBCYXNlIGFkZHJlc3MgYW5kIHNpemUgZW50cmllcywgbGlzdGVkICBpbiBzYW1lCisJIG9yZGVyIHRoYW4gdGhlIENQVV9EQUkgcHJvcGVydGllcy4KKworICAtIHJlZy1uYW1lczogbmFtZXMgb2YgdGhlIG1hcHBlZCBtZW1vcnkgcmVnaW9ucyBsaXN0ZWQgaW4gcmVncyBwcm9wZXJ0eSBpbgorCSAgICAgICB0aGUgc2FtZSBvcmRlci4KKworICAtIGludGVycnVwdHM6IENQVV9EQUkgaW50ZXJydXB0IGxpbmUsIGxpc3RlZCBpbiB0aGUgc2FtZSBvcmRlciB0aGFuIHRoZQorCQlDUFVfREFJIHByb3BlcnRpZXMuCisKKyAgLSBkbWE6IENQVV9EQUkgRE1BIGNvbnRyb2xsZXIgcGhhbmRsZSBhbmQgRE1BIHJlcXVlc3QgbGluZSwgbGlzdGVkIGluIHRoZSBzYW1lCisJIG9yZGVyIHRoYW4gdGhlIENQVV9EQUkgcHJvcGVydGllcy4KKworICAtIGRtYS1uYW1lczogaWRlbnRpZmllciBzdHJpbmcgZm9yIGVhY2ggRE1BIHJlcXVlc3QgbGluZSBpbiB0aGUgZG1hcyBwcm9wZXJ0eS4KKwkidHgiIGZvciAic3Qsc3RpLXVuaS1wbGF5ZXIiIGNvbXBhdGliaWxpdHkKKwkicngiIGZvciAic3Qsc3RpLXVuaS1yZWFkZXIiIGNvbXBhdGliaWxpdHkKKworICAtIHZlcnNpb246IElQIHZlcnNpb24gaW50ZWdyYXRlZCBpbiBTT0MuCisKKyAgLSBkYWktbmFtZTogREFJIG5hbWUgdGhhdCBkZXNjcmliZXMgdGhlIElQLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzICgic3Qsc3RpLXVuaS1wbGF5ZXIiIGNvbXBhdGliaWxpdHkgb25seSk6CisgIC0gY2xvY2tzOiBDUFVfREFJIElQIGNsb2NrIHNvdXJjZSwgbGlzdGVkIGluIHRoZSBzYW1lIG9yZGVyIHRoYW4gdGhlCisJICAgIENQVV9EQUkgcHJvcGVydGllcy4KKworICAtIHVuaXBlcmlwaC1pZDogaW50ZXJuYWwgU09DIElQIGluc3RhbmNlIElELgorCisgIC0gSVAgbW9kZTogSVAgd29ya2luZyBtb2RlIGRlcGVuZGluZyBvbiBhc3NvY2lhdGVkIGNvZGVjLgorCSJIRE1JIiBjb25uZWN0ZWQgdG8gSERNSSBjb2RlYyBJUCBhbmQgSUVDIEhETUkgZm9ybWF0cy4KKwkiU1BESUYiY29ubmVjdGVkIHRvIFNQRElGIGNvZGVjIGFuZCBzdXBwb3J0IFNQRElGIGZvcm1hdHMuCisJIlBDTSIgIFBDTSBzdGFuZGFyZCBtb2RlIGZvciBJMlMgb3IgVERNIGJ1cy4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAgLSBwaW5jdHJsLTA6IGRlZmluZWQgZm9yIENQVV9EQUlAMSBhbmQgQ1BVX0RBSUA0IHRvIGRlc2NyaWJlIEkyUyBQSU9zIGZvcgorCSAgICAgICBleHRlcm5hbCBjb2RlY3MgY29ubmVjdGlvbi4KKworICAtIHBpbmN0cmwtbmFtZXM6IHNob3VsZCBjb250YWluIG9ubHkgb25lIHZhbHVlIC0gImRlZmF1bHQiLgorCitFeGFtcGxlOgorCisJc3RpX3VuaV9wbGF5ZXIyOiBzdGktdW5pLXBsYXllckAyIHsKKwkJY29tcGF0aWJsZSA9ICJzdCxzdGktdW5pLXBsYXllciI7CisJCXN0YXR1cyA9ICJva2F5IjsKKwkJI3NvdW5kLWRhaS1jZWxscyA9IDwwPjsKKwkJc3Qsc3lzY2ZnID0gPCZzeXNjZmdfY29yZT47CisJCWNsb2NrcyA9IDwmY2xrX3NfZDBfZmxleGdlbiBDTEtfUENNXzI+OworCQlyZWcgPSA8MHg4RDgyMDAwIDB4MTU4PjsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDg2IElSUV9UWVBFX05PTkU+OworCQlkbWFzID0gPCZmZG1hMCA0IDAgMT47CisJCWRhaS1uYW1lID0gIlVuaSBQbGF5ZXIgIzEgKERBQykiOworCQlkbWEtbmFtZXMgPSAidHgiOworCQl1bmlwZXJpcGgtaWQgPSA8Mj47CisJCXZlcnNpb24gPSA8NT47CisJCW1vZGUgPSAiUENNIjsKKwl9OworCisJc3RpX3VuaV9wbGF5ZXIzOiBzdGktdW5pLXBsYXllckAzIHsKKwkJY29tcGF0aWJsZSA9ICJzdCxzdGktdW5pLXBsYXllciI7CisJCXN0YXR1cyA9ICJva2F5IjsKKwkJI3NvdW5kLWRhaS1jZWxscyA9IDwwPjsKKwkJc3Qsc3lzY2ZnID0gPCZzeXNjZmdfY29yZT47CisJCWNsb2NrcyA9IDwmY2xrX3NfZDBfZmxleGdlbiBDTEtfU1BESUZGPjsKKwkJcmVnID0gPDB4OEQ4NTAwMCAweDE1OD47CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSA4OSBJUlFfVFlQRV9OT05FPjsKKwkJZG1hcyA9IDwmZmRtYTAgNyAwIDE+OworCQlkbWEtbmFtZXMgPSAidHgiOworCQlkYWktbmFtZSA9ICJVbmkgUGxheWVyICMxIChQSU8pIjsKKwkJdW5pcGVyaXBoLWlkID0gPDM+OworCQl2ZXJzaW9uID0gPDU+OworCQltb2RlID0gIlNQRElGIjsKKwl9OworCisJc3RpX3VuaV9yZWFkZXIxOiBzdGktdW5pLXJlYWRlckAxIHsKKwkJY29tcGF0aWJsZSA9ICJzdCxzdGktdW5pLXJlYWRlciI7CisJCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJCSNzb3VuZC1kYWktY2VsbHMgPSA8MD47CisJCXN0LHN5c2NmZyA9IDwmc3lzY2ZnX2NvcmU+OworCQlyZWcgPSA8MHg4RDg0MDAwIDB4MTU4PjsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDg4IElSUV9UWVBFX05PTkU+OworCQlkbWFzID0gPCZmZG1hMCA2IDAgMT47CisJCWRtYS1uYW1lcyA9ICJyeCI7CisJCWRhaS1uYW1lID0gIlVuaSBSZWFkZXIgIzEgKEhETUkgUlgpIjsKKwkJdmVyc2lvbiA9IDwzPjsKKwl9OworCisyKSBzdGktc2FzLWNvZGVjOiBpbnRlcm5hbCBhdWRpbyBjb2RlYyBJUHMgZHJpdmVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZTogInN0LHN0aTxjaGlwPi1zYXMtY29kZWMiIC4KKwlTaG91bGQgYmUgY2hpcCAic3Qsc3RpaDQxNi1zYXMtY29kZWMiIG9yICJzdCxzdGloNDA3LXNhcy1jb2RlYyIKKworICAtIHN0LHN5c2NmZzogcGhhbmRsZSB0byBib290LWRldmljZSBzeXN0ZW0gY29uZmlndXJhdGlvbiByZWdpc3RlcnMuCisKKyAgLSBwaW5jdHJsLTA6IFNQRElGIFBJTyBkZXNjcmlwdGlvbi4KKworICAtIHBpbmN0cmwtbmFtZXM6IHNob3VsZCBjb250YWluIG9ubHkgb25lIHZhbHVlIC0gImRlZmF1bHQiLgorCitFeGFtcGxlOgorCXN0aV9zYXNfY29kZWM6IHN0aS1zYXMtY29kZWMgeworCQljb21wYXRpYmxlID0gInN0LHN0aWg0MDctc2FzLWNvZGVjIjsKKwkJI3NvdW5kLWRhaS1jZWxscyA9IDwxPjsKKwkJc3QscmVnX2F1ZGlvID0gPCZzeXNjZmdfY29yZT47CisJCXBpbmN0cmwtbmFtZXMgPSAiZGVmYXVsdCI7CisJCXBpbmN0cmwtMCA9IDwmcGluY3RybF9zcGRpZl9vdXQgPjsKKwl9OworCitFeGFtcGxlIG9mIGF1ZGlvIGNhcmQgZGVjbGFyYXRpb246CisJc291bmQgeworCQljb21wYXRpYmxlID0gInNpbXBsZS1hdWRpby1jYXJkIjsKKwkJc2ltcGxlLWF1ZGlvLWNhcmQsbmFtZSA9ICJzdGkgYXVkaW8gY2FyZCI7CisJCXN0YXR1cyA9ICJva2F5IjsKKworCQlzaW1wbGUtYXVkaW8tY2FyZCxkYWktbGlua0AwIHsKKwkJCS8qIERBQyAqLworCQkJZm9ybWF0ID0gImkycyI7CisJCQlkYWktdGRtLXNsb3Qtd2lkdGggPSA8MzI+OworCQkJY3B1IHsKKwkJCQlzb3VuZC1kYWkgPSA8JnN0aV91bmlfcGxheWVyMj47CisJCQl9OworCisJCQljb2RlYyB7CisJCQkJc291bmQtZGFpID0gPCZzdGlfc2FzZ19jb2RlYyAxPjsKKwkJCX07CisJCX07CisJCXNpbXBsZS1hdWRpby1jYXJkLGRhaS1saW5rQDEgeworCQkJLyogU1BESUYgKi8KKwkJCWZvcm1hdCA9ICJsZWZ0X2oiOworCQkJY3B1IHsKKwkJCQlzb3VuZC1kYWkgPSA8JnN0aV91bmlfcGxheWVyMz47CisJCQl9OworCisJCQljb2RlYyB7CisJCQkJc291bmQtZGFpID0gPCZzdGlfc2FzZ19jb2RlYyAwPjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9zdG9ybS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc3Rvcm0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MmE0YzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc3Rvcm0udHh0CkBAIC0wLDAgKzEsMjMgQEAKKyogU291bmQgY29tcGxleCBmb3IgU3Rvcm0gYm9hcmRzCisKK01vZGVscyBhIHNvdW5kY2FyZCBmb3IgU3Rvcm0gYm9hcmRzIHdpdGggdGhlIFF1YWxjb21tIFRlY2hub2xvZ2llcyBJUFE4MDZ4IFNPQworY29ubmVjdGVkIHRvIGEgTUFYOTgzNTdBIERBQyB2aWEgSTJTLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUJOiAiZ29vZ2xlLHN0b3JtLWF1ZGlvIgorLSBjcHUJCTogUGhhbmRsZSBvZiB0aGUgQ1BVIERBSQorLSBjb2RlYwkJOiBQaGFuZGxlIG9mIHRoZSBjb2RlYyBEQUkKKworT3B0aW9uYWwgcHJvcGVydGllczoKKworLSBxY29tLG1vZGVsCTogVGhlIHVzZXItdmlzaWJsZSBuYW1lIG9mIHRoaXMgc291bmQgY2FyZC4KKworRXhhbXBsZToKKworc291bmQgeworCWNvbXBhdGlibGUgPSAiZ29vZ2xlLHN0b3JtLWF1ZGlvIjsKKwlxY29tLG1vZGVsID0gImlwcTgwNngtc3Rvcm0iOworCWNwdSA9IDwmbHBhc3NfY3B1PjsKKwljb2RlYyA9IDwmbWF4OTgzNTdhPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvc3VuNGktY29kZWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3N1bjRpLWNvZGVjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTI5NjZiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3N1bjRpLWNvZGVjLnR4dApAQCAtMCwwICsxLDI3IEBACisqIEFsbHdpbm5lciBBMTAgQ29kZWMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogbXVzdCBiZSBlaXRoZXIgImFsbHdpbm5lcixzdW40aS1hMTAtY29kZWMiIG9yCisgICJhbGx3aW5uZXIsc3VuN2ktYTIwLWNvZGVjIgorLSByZWc6IG11c3QgY29udGFpbiB0aGUgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKy0gaW50ZXJydXB0czogbXVzdCBjb250YWluIHRoZSBjb2RlYyBpbnRlcnJ1cHQKKy0gZG1hczogRE1BIGNoYW5uZWxzIGZvciB0eCBhbmQgcnggZG1hLiBTZWUgdGhlIERNQSBjbGllbnQgYmluZGluZywKKwlEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2RtYS50eHQKKy0gZG1hLW5hbWVzOiBzaG91bGQgaW5jbHVkZSAidHgiIGFuZCAicngiLgorLSBjbG9ja3M6IGEgbGlzdCBvZiBwaGFuZGxlICsgY2xvY2stc3BlY2lmZXIgcGFpcnMsIG9uZSBmb3IgZWFjaCBlbnRyeQorICBpbiBjbG9jay1uYW1lcy4KKy0gY2xvY2stbmFtZXM6IHNob3VsZCBjb250YWluIGZvbGxvd2luZ3M6CisgICAtICJhcGIiOiB0aGUgcGFyZW50IEFQQiBjbG9jayBmb3IgdGhpcyBjb250cm9sbGVyCisgICAtICJjb2RlYyI6IHRoZSBwYXJlbnQgbW9kdWxlIGNsb2NrCisKK0V4YW1wbGU6Citjb2RlYzogY29kZWNAMDFjMjJjMDAgeworCSNzb3VuZC1kYWktY2VsbHMgPSA8MD47CisJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuN2ktYTIwLWNvZGVjIjsKKwlyZWcgPSA8MHgwMWMyMmMwMCAweDQwPjsKKwlpbnRlcnJ1cHRzID0gPDAgMzAgND47CisJY2xvY2tzID0gPCZhcGIwX2dhdGVzIDA+LCA8JmNvZGVjX2Nsaz47CisJY2xvY2stbmFtZXMgPSAiYXBiIiwgImNvZGVjIjsKKwlkbWFzID0gPCZkbWEgMCAxOT4sIDwmZG1hIDAgMTk+OworCWRtYS1uYW1lcyA9ICJyeCIsICJ0eCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3RhczI1NTIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3RhczI1NTIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0OTk5MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvdGFzMjU1Mi50eHQKQEAgLTAsMCArMSwzMiBAQAorVGV4YXMgSW5zdHJ1bWVudHMgLSB0YXMyNTUyIENvZGVjIG1vZHVsZQorCitUaGUgdGFzMjU1MiBzZXJpYWwgY29udHJvbCBidXMgY29tbXVuaWNhdGVzIHRocm91Z2ggSTJDIHByb3RvY29scworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCS0gY29tcGF0aWJsZSAtIE9uZSBvZjoKKwkJInRpLHRhczI1NTIiIC0gVEFTMjU1MgorCS0gcmVnIC0gIEkyQyBzbGF2ZSBhZGRyZXNzCisJLSBzdXBwbHktKjogUmVxdWlyZWQgc3VwcGx5IHJlZ3VsYXRvcnMgYXJlOgorCQkidmJhdCIJCWJhdHRlcnkgdm9sdGFnZQorCQkiaW92ZGQiCQlJL08gVm9sdGFnZQorCQkiYXZkZCIJCUFuYWxvZyBEQUMgVm9sdGFnZQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCS0gZW5hYmxlLWdwaW8gLSBncGlvIHBpbiB0byBlbmFibGUvZGlzYWJsZSB0aGUgZGV2aWNlCisKK3RhczI1NTIgY2FuIHJlY2VpdmUgaXQncyByZWZlcmVuY2UgY2xvY2sgdmlhIE1DTEssIEJDTEssIElWQ0xLSU4gcGluIG9yIHVzZSB0aGUKK2ludGVybmFsIDEuOE1Iei4gVGhpcyBDTEtJTiBpcyB1c2VkIGJ5IHRoZSBQTEwuIEluIGFkZGl0aW9uIHRvIFBMTCwgdGhlIFBETQorcmVmZXJlbmNlIGNsb2NrIGlzIGFsc28gc2VsZWN0YWJsZTogUExMLCBJVkNMS0lOLCBCQ0xLIG9yIE1DTEsuCitGb3Igc3lzdGVtIGludGVncmF0aW9uIHRoZSBkdC1iaW5kaW5ncy9zb3VuZC90YXMyNTUyLmggaGVhZGVyIGZpbGUgcHJvdmlkZXMKK2RlZmluZWQgdmFsdWVzIHRvIHNlbGN0IGFuZCBjb25maWd1cmUgdGhlIFBMTCBhbmQgUERNIHJlZmVyZW5jZSBjbG9ja3MuCisKK0V4YW1wbGU6CisKK3RhczI1NTI6IHRhczI1NTJANDEgeworCWNvbXBhdGlibGUgPSAidGksdGFzMjU1MiI7CisJcmVnID0gPDB4NDE+OworCWVuYWJsZS1ncGlvID0gPCZncGlvNCAyIEdQSU9fQUNUSVZFX0hJR0g+OworfTsKKworRm9yIG1vcmUgcHJvZHVjdCBpbmZvcm1hdGlvbiBwbGVhc2Ugc2VlIHRoZSBsaW5rIGJlbG93OgoraHR0cDovL3d3dy50aS5jb20vcHJvZHVjdC9UQVMyNTUyCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvdGFzNTcxeC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvdGFzNTcxeC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFjMzFkOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC90YXM1NzF4LnR4dApAQCAtMCwwICsxLDQxIEBACitUZXhhcyBJbnN0cnVtZW50cyBUQVM1NzExL1RBUzU3MTcvVEFTNTcxOSBzdGVyZW8gcG93ZXIgYW1wbGlmaWVycworCitUaGUgY29kZWMgaXMgY29udHJvbGxlZCB0aHJvdWdoIGFuIEkyQyBpbnRlcmZhY2UuICBJdCBhbHNvIGhhcyB0d28gb3RoZXIKK3NpZ25hbHMgdGhhdCBjYW4gYmUgd2lyZWQgdXAgdG8gR1BJT3M6IHJlc2V0IChzdHJvbmdseSByZWNvbW1lbmRlZCksIGFuZAorcG93ZXJkb3duIChvcHRpb25hbCkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZTogInRpLHRhczU3MTEiLCAidGksdGFzNTcxNyIsIG9yICJ0aSx0YXM1NzE5IgorLSByZWc6IFRoZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlCistICNzb3VuZC1kYWktY2VsbHM6IG11c3QgYmUgZXF1YWwgdG8gMAorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIHJlc2V0LWdwaW9zOiBHUElPIHNwZWNpZmllciBmb3IgdGhlIFRBUzU3MXgncyBhY3RpdmUgbG93IHJlc2V0IGxpbmUKKy0gcGRuLWdwaW9zOiBHUElPIHNwZWNpZmllciBmb3IgdGhlIFRBUzU3MXgncyBhY3RpdmUgbG93IHBvd2VyZG93biBsaW5lCistIGNsb2NrczogY2xvY2sgcGhhbmRsZSBmb3IgdGhlIE1DTEsgaW5wdXQKKy0gY2xvY2stbmFtZXM6IHNob3VsZCBiZSAibWNsayIKKy0gQVZERC1zdXBwbHk6IHJlZ3VsYXRvciBwaGFuZGxlIGZvciB0aGUgQVZERCBzdXBwbHkgKGFsbCBjaGlwcykKKy0gRFZERC1zdXBwbHk6IHJlZ3VsYXRvciBwaGFuZGxlIGZvciB0aGUgRFZERCBzdXBwbHkgKGFsbCBjaGlwcykKKy0gSFBWREQtc3VwcGx5OiByZWd1bGF0b3IgcGhhbmRsZSBmb3IgdGhlIEhQVkREIHN1cHBseSAoNTcxNy81NzE5KQorLSBQVkREX0FCLXN1cHBseTogcmVndWxhdG9yIHBoYW5kbGUgZm9yIHRoZSBQVkREX0FCIHN1cHBseSAoNTcxNy81NzE5KQorLSBQVkREX0NELXN1cHBseTogcmVndWxhdG9yIHBoYW5kbGUgZm9yIHRoZSBQVkREX0NEIHN1cHBseSAoNTcxNy81NzE5KQorLSBQVkREX0Etc3VwcGx5OiByZWd1bGF0b3IgcGhhbmRsZSBmb3IgdGhlIFBWRERfQSBzdXBwbHkgKDU3MTEpCistIFBWRERfQi1zdXBwbHk6IHJlZ3VsYXRvciBwaGFuZGxlIGZvciB0aGUgUFZERF9CIHN1cHBseSAoNTcxMSkKKy0gUFZERF9DLXN1cHBseTogcmVndWxhdG9yIHBoYW5kbGUgZm9yIHRoZSBQVkREX0Mgc3VwcGx5ICg1NzExKQorLSBQVkREX0Qtc3VwcGx5OiByZWd1bGF0b3IgcGhhbmRsZSBmb3IgdGhlIFBWRERfRCBzdXBwbHkgKDU3MTEpCisKK0V4YW1wbGU6CisKKwl0YXM1NzE3OiBhdWRpby1jb2RlY0AyYSB7CisJCWNvbXBhdGlibGUgPSAidGksdGFzNTcxNyI7CisJCXJlZyA9IDwweDJhPjsKKwkJI3NvdW5kLWRhaS1jZWxscyA9IDwwPjsKKworCQlyZXNldC1ncGlvcyA9IDwmZ3BpbzUgMSBHUElPX0FDVElWRV9MT1c+OworCQlwZG4tZ3Bpb3MgPSA8JmdwaW81IDIgR1BJT19BQ1RJVkVfTE9XPjsKKworCQljbG9ja3MgPSA8JmNsa19jb3JlIENMS19JMlM+OworCQljbG9jay1uYW1lcyA9ICJtY2xrIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3RkbS1zbG90LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC90ZG0tc2xvdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRjZjcwZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC90ZG0tc2xvdC50eHQKQEAgLTAsMCArMSwyOSBAQAorVERNIHNsb3Q6CisKK1RoaXMgc3BlY2lmaWVzIGF1ZGlvIERBSSdzIFRETSBzbG90LgorCitURE0gc2xvdCBwcm9wZXJ0aWVzOgorZGFpLXRkbS1zbG90LW51bSA6IE51bWJlciBvZiBzbG90cyBpbiB1c2UuCitkYWktdGRtLXNsb3Qtd2lkdGggOiBXaWR0aCBpbiBiaXRzIGZvciBlYWNoIHNsb3QuCitkYWktdGRtLXNsb3QtdHgtbWFzayA6IFRyYW5zbWl0IGRpcmVjdGlvbiBzbG90IG1hc2ssIG9wdGlvbmFsCitkYWktdGRtLXNsb3QtcngtbWFzayA6IFJlY2VpdmUgZGlyZWN0aW9uIHNsb3QgbWFzaywgb3B0aW9uYWwKKworRm9yIGluc3RhbmNlOgorCWRhaS10ZG0tc2xvdC1udW0gPSA8Mj47CisJZGFpLXRkbS1zbG90LXdpZHRoID0gPDg+OworCWRhaS10ZG0tc2xvdC10eC1tYXNrID0gPDAgMT47CisJZGFpLXRkbS1zbG90LXJ4LW1hc2sgPSA8MSAwPjsKKworQW5kIGZvciBlYWNoIHNwY2lmaWVkIGRyaXZlciwgdGhlcmUgY291bGQgYmUgb25lIC5vZl94bGF0ZV90ZG1fc2xvdF9tYXNrKCkKK3RvIHNwZWNpZnkgYSBleHBsaWNpdCBtYXBwaW5nIG9mIHRoZSBjaGFubmVscyBhbmQgdGhlIHNsb3RzLiBJZiBpdCdzIGFic2VudAordGhlIGRlZmF1bHQgc25kX3NvY19vZl94bGF0ZV90ZG1fc2xvdF9tYXNrKCkgd2lsbCBiZSB1c2VkIHRvIGdlbmVyYXRpbmcgdGhlCit0eCBhbmQgcnggbWFza3MuCisKK0ZvciBzbmRfc29jX29mX3hsYXRlX3RkbV9zbG90X21hc2soKSwgdGhlIHR4IGFuZCByeCBtYXNrcyB3aWxsIHVzZSBhIDEgYml0Citmb3IgYW4gYWN0aXZlIHNsb3QgYXMgZGVmYXVsdCwgYW5kIHRoZSBkZWZhdWx0IGFjdGl2ZSBiaXRzIGFyZSBhdCB0aGUgTFNCIG9mCit0aGUgbWFza3MuCisKK1RoZSBleHBsaWNpdCBtYXNrcyBhcmUgZ2l2ZW4gYXMgYXJyYXkgb2YgaW50ZWdlcnMsIHdoZXJlIHRoZSBmaXJzdAorbnVtYmVyIHByZXNlbnRzIGJpdC0wIChMU0IpLCBzZWNvbmQgcHJlc2VudHMgYml0LTEsIGV0Yy4gQW55IG5vbiB6ZXJvCitudW1iZXIgaXMgY29uc2lkZXJlZCAxIGFuZCAwIGlzIDAuIHNuZF9zb2Nfb2ZfeGxhdGVfdGRtX3Nsb3RfbWFzaygpCitkb2VzIG5vdCBkbyBhbnl0aGluZywgaWYgZWl0aGVyIG1hc2sgaXMgc2V0IG5vbiB6ZXJvIHZhbHVlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3RpLHBjbTE2ODEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3RpLHBjbTE2ODEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkZjE3MTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvdGkscGNtMTY4MS50eHQKQEAgLTAsMCArMSwxNSBAQAorVGV4YXMgSW5zdHJ1bWVudHMgUENNMTY4MSA4LWNoYW5uZWwgUFdNIFByb2Nlc3NvcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgLSBjb21wYXRpYmxlOgkJU2hvdWxkIGNvbnRhaW4gInRpLHBjbTE2ODEiLgorIC0gcmVnOgkJCVRoZSBpMmMgYWRkcmVzcy4gU2hvdWxkIGNvbnRhaW4gPDB4NGM+LgorCitFeGFtcGxlczoKKworCWkyY19idXMgeworCQlwY20xNjgxQDRjIHsKKwkJCWNvbXBhdGlibGUgPSAidGkscGNtMTY4MSI7CisJCQlyZWcgPSA8MHg0Yz47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC90aSx0YXM1MDg2LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC90aSx0YXM1MDg2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzRkYWQyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3RpLHRhczUwODYudHh0CkBAIC0wLDAgKzEsNDggQEAKK1RleGFzIEluc3RydW1lbnRzIFRBUzUwODYgNi1jaGFubmVsIFBXTSBQcm9jZXNzb3IKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworIC0gY29tcGF0aWJsZToJCVNob3VsZCBjb250YWluICJ0aSx0YXM1MDg2Ii4KKyAtIHJlZzoJCQlUaGUgaTJjIGFkZHJlc3MuIFNob3VsZCBjb250YWluIDwweDFiPi4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworIC0gcmVzZXQtZ3BpbzogCQlBIEdQSU8gc3BlYyB0byBkZWZpbmUgd2hpY2ggcGluIGlzIGNvbm5lY3RlZCB0byB0aGUKKwkJCWNoaXAncyAhUkVTRVQgcGluLiBJZiBzcGVjaWZpZWQsIHRoZSBkcml2ZXIgd2lsbAorCQkJYXNzZXJ0IGEgaGFyZHdhcmUgcmVzZXQgYXQgcHJvYmUgdGltZS4KKworIC0gdGksY2hhcmdlLXBlcmlvZDoJVGhpcyBwcm9wZXJ0eSBzaG91bGQgY29udGFpbiB0aGUgdGltZSBpbiBtaWNyb3NlY29uZHMKKwkJCXRoYXQgY2xvc2VseSBtYXRjaGVzIHRoZSBleHRlcm5hbCBzaW5nbGUtZW5kZWQKKwkJCXNwbGl0LWNhcGFjaXRvciBjaGFyZ2UgcGVyaW9kLiBUaGUgaGFyZHdhcmUgY2hpcAorCQkJd2FpdHMgZm9yIHRoaXMgcGVyaW9kIG9mIHRpbWUgYmVmb3JlIHN0YXJ0aW5nIHRoZQorCQkJUFdNIHNpZ25hbHMuIFRoaXMgaGVscHMgcmVkdWNlIHBvcHMgYW5kIGNsaWNrcy4KKworCQkJV2hlbiBub3Qgc3BlY2lmaWVkLCB0aGUgaGFyZHdhcmUgZGVmYXVsdCBvZiAxMzAwbXMKKwkJCWlzIHJldGFpbmVkLgorCisgLSB0aSxtaWQtei1jaGFubmVsLVg6CUJvb2xlYW4gcHJvcGVydGllcywgWCBiZWluZyBhIG51bWJlciBmcm9tIDEgdG8gNi4KKwkJCUlmIGdpdmVuLCBjaGFubmVsIFggd2lsbCBzdGFydCB3aXRoIHRoZSBNaWQtWiBzdGFydAorCQkJc2VxdWVuY2UsIG90aGVyd2lzZSB0aGUgZGVmYXVsdCBMb3ctWiBzY2hlbWUgaXMgdXNlZC4KKworCQkJVGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBkZXBlbmRzIG9uIGhvdyB0aGUgcG93ZXIKKwkJCXN0YWdlcyBjb25uZWN0ZWQgdG8gdGhlIFBXTSBvdXRwdXQgcGlucyB3b3JrLiBOb3QgYWxsCisJCQlwb3dlciBzdGFnZXMgYXJlIGNvbXBhdGlibGUgdG8gTWlkLVogLSBwbGVhc2UgcmVmZXIKKwkJCXRvIHRoZSBkYXRhc2hlZXRzIGZvciBtb3JlIGRldGFpbHMuCisKKwkJCU1vc3Qgc3lzdGVtcyBzaG91bGQgbm90IHNldCBhbnkgb2YgdGhlc2UgcHJvcGVydGllcy4KKworIC0gYXZkZC1zdXBwbHk6ICAgICAgICAgUG93ZXIgc3VwcGx5IGZvciBBVkRELCBwcm92aWRpbmcgMy4zVgorIC0gZHZkZC1zdXBwbHk6ICAgICAgICAgUG93ZXIgc3VwcGx5IGZvciBEVkRELCBwcm92aWRpbmcgMy4zVgorCitFeGFtcGxlczoKKworCWkyY19idXMgeworCQl0YXM1MDg2QDFiIHsKKwkJCWNvbXBhdGlibGUgPSAidGksdGFzNTA4NiI7CisJCQlyZWcgPSA8MHgxYj47CisJCQlyZXNldC1ncGlvID0gPCZncGlvIDIzIDA+OworCQkJdGksY2hhcmdlLXBlcmlvZCA9IDwxNTYwMDA+OworCQkJYXZkZC1zdXBwbHkgPSA8JnZkZF8zdjNfcmVnPjsKKwkJCWR2ZGQtc3VwcGx5ID0gPCZ2ZGRfM3YzX3JlZz47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC90bHYzMjBhaWMzMXh4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC90bHYzMjBhaWMzMXh4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmYxMmJlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3RsdjMyMGFpYzMxeHgudHh0CkBAIC0wLDAgKzEsNjEgQEAKK1RleGFzIEluc3RydW1lbnRzIC0gdGx2MzIwYWljMzF4eCBDb2RlYyBtb2R1bGUKKworVGhlIHRsdjMyMGFpYzMxeHggc2VyaWFsIGNvbnRyb2wgYnVzIGNvbW11bmljYXRlcyB0aHJvdWdoIEkyQyBwcm90b2NvbHMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIC0gInN0cmluZyIgLSBPbmUgb2Y6CisgICAgInRpLHRsdjMyMGFpYzMxMHgiIC0gR2VuZXJpYyBUTFYzMjBBSUMzMXh4IHdpdGggbW9ubyBzcGVha2VyIGFtcAorICAgICJ0aSx0bHYzMjBhaWMzMTF4IiAtIEdlbmVyaWMgVExWMzIwQUlDMzF4eCB3aXRoIHN0ZXJlbyBzcGVha2VyIGFtcAorICAgICJ0aSx0bHYzMjBhaWMzMTAwIiAtIFRMVjMyMEFJQzMxMDAgKG1vbm8gc3BlYWtlciBhbXAsIG5vIE1pbmlEU1ApCisgICAgInRpLHRsdjMyMGFpYzMxMTAiIC0gVExWMzIwQUlDMzExMCAoc3RlcmVvIHNwZWFrZXIgYW1wLCBubyBNaW5pRFNQKQorICAgICJ0aSx0bHYzMjBhaWMzMTIwIiAtIFRMVjMyMEFJQzMxMjAgKG1vbm8gc3BlYWtlciBhbXAsIE1pbmlEU1ApCisgICAgInRpLHRsdjMyMGFpYzMxMTEiIC0gVExWMzIwQUlDMzExMSAoc3RlcmVvIHNwZWFrZXIgYW1wLCBNaW5pRFNQKQorCistIHJlZyAtIDxpbnQ+IC0gIEkyQyBzbGF2ZSBhZGRyZXNzCistIEhQVkRELXN1cHBseSwgU1BSVkRELXN1cHBseSwgU1BMVkRELXN1cHBseSwgQVZERC1zdXBwbHksIElPVkRELXN1cHBseSwKKyAgRFZERC1zdXBwbHkgOiBwb3dlciBzdXBwbGllcyBmb3IgdGhlIGRldmljZSBhcyBjb3ZlcmVkIGluCisgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvcmVndWxhdG9yLnR4dAorCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gZ3Bpby1yZXNldCAtIGdwaW8gcGluIG51bWJlciB1c2VkIGZvciBjb2RlYyByZXNldAorLSBhaTMxeHgtbWljYmlhcy12ZyAtIE1pY0JpYXMgVm9sdGFnZSBzZXR0aW5nCisgICAgICAgIDEgb3IgTUlDQklBU18yXzBWIC0gTUlDQklBUyBvdXRwdXQgaXMgcG93ZXJlZCB0byAyLjBWCisgICAgICAgIDIgb3IgTUlDQklBU18yXzVWIC0gTUlDQklBUyBvdXRwdXQgaXMgcG93ZXJlZCB0byAyLjVWCisgICAgICAgIDMgb3IgTUlDQklBU19BVkREIC0gTUlDQklBUyBvdXRwdXQgaXMgY29ubmVjdGVkIHRvIEFWREQKKwlJZiB0aGlzIG5vZGUgaXMgbm90IG1lbnRpb25lZCBvciBpZiB0aGUgdmFsdWUgaXMgdW5rbm93biwgdGhlbgorCW1pY2JpYXMJaXMgc2V0IHRvIDIuMFYuCisKK0NPREVDIG91dHB1dCBwaW5zOgorICAqIEhQTAorICAqIEhQUgorICAqIFNQTCwgZGV2aWNlcyB3aXRoIHN0ZXJlbyBzcGVha2VyIGFtcAorICAqIFNQUiwgZGV2aWNlcyB3aXRoIHN0ZXJlbyBzcGVha2VyIGFtcAorICAqIFNQSywgZGV2aWNlcyB3aXRoIG1vbm8gc3BlYWtlciBhbXAKKyAgKiBNSUNCSUFTCisKK0NPREVDIGlucHV0IHBpbnM6CisgICogTUlDMUxQCisgICogTUlDMVJQCisgICogTUlDMUxNCisKK1RoZSBwaW5zIGNhbiBiZSB1c2VkIGluIHJlZmVycmluZyBzb3VuZCBub2RlJ3MgYXVkaW8tcm91dGluZyBwcm9wZXJ0eS4KKworRXhhbXBsZToKKyNpbmNsdWRlIDxkdC1iaW5kaW5ncy9zb3VuZC90bHYzMjBhaWMzMXh4LW1pY2JpYXMuaD4KKwordGx2MzIwYWljMzF4eDogdGx2MzIwYWljMzF4eEAxOCB7CisJY29tcGF0aWJsZSA9ICJ0aSx0bHYzMjBhaWMzMTF4IjsKKwlyZWcgPSA8MHgxOD47CisKKwlhaTMxeHgtbWljYmlhcy12ZyA9IDxNSUNCSUFTX09GRj47CisKKwlIUFZERC1zdXBwbHkgPSA8JnJlZ3VsYXRvcj47CisJU1BSVkRELXN1cHBseSA9IDwmcmVndWxhdG9yPjsKKwlTUExWREQtc3VwcGx5ID0gPCZyZWd1bGF0b3I+OworCUFWREQtc3VwcGx5ID0gPCZyZWd1bGF0b3I+OworCUlPVkRELXN1cHBseSA9IDwmcmVndWxhdG9yPjsKKwlEVkRELXN1cHBseSA9IDwmcmVndWxhdG9yPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvdGx2MzIwYWljMzJ4NC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvdGx2MzIwYWljMzJ4NC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWUyNzQxYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC90bHYzMjBhaWMzMng0LnR4dApAQCAtMCwwICsxLDMwIEBACitUZXhhcyBJbnN0cnVtZW50cyAtIHRsdjMyMGFpYzMyeDQgQ29kZWMgbW9kdWxlCisKK1RoZSB0bHYzMjBhaWMzMng0IHNlcmlhbCBjb250cm9sIGJ1cyBjb21tdW5pY2F0ZXMgdGhyb3VnaCBJMkMgcHJvdG9jb2xzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgInRpLHRsdjMyMGFpYzMyeDQiCisgLSByZWc6IEkyQyBzbGF2ZSBhZGRyZXNzCisgLSBzdXBwbHktKjogUmVxdWlyZWQgc3VwcGx5IHJlZ3VsYXRvcnMgYXJlOgorICAgICJpb3YiIC0gZGlnaXRhbCBJTyBwb3dlciBzdXBwbHkKKyAgICAibGRvaW4iIC0gTERPIHBvd2VyIHN1cHBseQorICAgICJkdiIgLSBEaWdpdGFsIGNvcmUgcG93ZXIgc3VwcGx5CisgICAgImF2IiAtIEFuYWxvZyBjb3JlIHBvd2VyIHN1cHBseQorICAgIElmIHlvdSBzdXBwbHkgbGRvaW4sIGR2IGFuZCBhdiBhcmUgb3B0aW9uYWwuIE90aGVyd2lzZSB0aGV5IGFyZSByZXF1aXJlZAorICAgU2VlIHJlZ3VsYXRvci9yZWd1bGF0b3IudHh0IGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkZXRhaWxlZCBiaW5kaW5nCisgICBmb3JtYXQuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgLSByZXNldC1ncGlvczogUmVzZXQtR1BJTyBwaGFuZGxlIHdpdGggYXJncyBhcyBkZXNjcmliZWQgaW4gZ3Bpby9ncGlvLnR4dAorIC0gY2xvY2tzL2Nsb2NrLW5hbWVzOiBDbG9jayBuYW1lZCAnbWNsaycgZm9yIHRoZSBtYXN0ZXIgY2xvY2sgb2YgdGhlIGNvZGVjLgorICAgU2VlIGNsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRldGFpbGVkIGZvcm1hdC4KKworCitFeGFtcGxlOgorCitjb2RlYzogdGx2MzIwYWljMzJ4NEAxOCB7CisJY29tcGF0aWJsZSA9ICJ0aSx0bHYzMjBhaWMzMng0IjsKKwlyZWcgPSA8MHgxOD47CisJY2xvY2tzID0gPCZjbGtzIDIwMT47CisJY2xvY2stbmFtZXMgPSAibWNsayI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3RsdjMyMGFpYzN4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC90bHYzMjBhaWMzeC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdhMjEzYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC90bHYzMjBhaWMzeC50eHQKQEAgLTAsMCArMSw2NyBAQAorVGV4YXMgSW5zdHJ1bWVudHMgLSB0bHYzMjBhaWMzeCBDb2RlYyBtb2R1bGUKKworVGhlIHRsdjMyMGFpYzN4IHNlcmlhbCBjb250cm9sIGJ1cyBjb21tdW5pY2F0ZXMgdGhyb3VnaCBJMkMgcHJvdG9jb2xzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSAtICJzdHJpbmciIC0gT25lIG9mOgorICAgICJ0aSx0bHYzMjBhaWMzeCIgLSBHZW5lcmljIFRMVjMyMEFJQzN4IGRldmljZQorICAgICJ0aSx0bHYzMjBhaWMzMyIgLSBUTFYzMjBBSUMzMworICAgICJ0aSx0bHYzMjBhaWMzMDA3IiAtIFRMVjMyMEFJQzMwMDcKKyAgICAidGksdGx2MzIwYWljMzEwNiIgLSBUTFYzMjBBSUMzMTA2CisgICAgInRpLHRsdjMyMGFpYzMxMDQiIC0gVExWMzIwQUlDMzEwNAorCisKKy0gcmVnIC0gPGludD4gLSAgSTJDIHNsYXZlIGFkZHJlc3MKKworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIGdwaW8tcmVzZXQgLSBncGlvIHBpbiBudW1iZXIgdXNlZCBmb3IgY29kZWMgcmVzZXQKKy0gYWkzeC1ncGlvLWZ1bmMgLSA8YXJyYXkgb2YgMiBpbnQ+IC0gQUlDM1hfR1BJTzEgJiBBSUMzWF9HUElPMiBGdW5jdGlvbmFsaXR5CisJCQkJICAgIC0gTm90IHN1cHBvcnRlZCBvbiB0bHYzMjBhaWMzMTA0CistIGFpM3gtbWljYmlhcy12ZyAtIE1pY0JpYXMgVm9sdGFnZSByZXF1aXJlZC4KKwkxIC0gTUlDQklBUyBvdXRwdXQgaXMgcG93ZXJlZCB0byAyLjBWLAorCTIgLSBNSUNCSUFTIG91dHB1dCBpcyBwb3dlcmVkIHRvIDIuNVYsCisJMyAtIE1JQ0JJQVMgb3V0cHV0IGlzIGNvbm5lY3RlZCB0byBBVkRELAorCUlmIHRoaXMgbm9kZSBpcyBub3QgbWVudGlvbmVkIG9yIGlmIHRoZSB2YWx1ZSBpcyBpbmNvcnJlY3QsIHRoZW4gTWljQmlhcworCWlzIHBvd2VyZWQgZG93bi4KKy0gQVZERC1zdXBwbHksIElPVkRELXN1cHBseSwgRFJWREQtc3VwcGx5LCBEVkRELXN1cHBseSA6IHBvd2VyIHN1cHBsaWVzIGZvciB0aGUKKyAgZGV2aWNlIGFzIGNvdmVyZWQgaW4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9yZWd1bGF0b3IudHh0CisKK0NPREVDIG91dHB1dCBwaW5zOgorICAqIExMT1VUCisgICogUkxPVVQKKyAgKiBNT05PX0xPVVQKKyAgKiBIUExPVVQKKyAgKiBIUFJPVVQKKyAgKiBIUExDT00KKyAgKiBIUFJDT00KKworQ09ERUMgaW5wdXQgcGlucyBmb3IgVExWMzIwQUlDMzEwNDoKKyAgKiBNSUMyTAorICAqIE1JQzJSCisgICogTElORTFMCisgICogTElORTFSCisKK0NPREVDIGlucHV0IHBpbnMgZm9yIG90aGVyIGNvbXBhdGlibGUgY29kZWNzOgorICAqIE1JQzNMCisgICogTUlDM1IKKyAgKiBMSU5FMUwKKyAgKiBMSU5FMkwKKyAgKiBMSU5FMVIKKyAgKiBMSU5FMlIKKworVGhlIHBpbnMgY2FuIGJlIHVzZWQgaW4gcmVmZXJyaW5nIHNvdW5kIG5vZGUncyBhdWRpby1yb3V0aW5nIHByb3BlcnR5LgorCitFeGFtcGxlOgorCit0bHYzMjBhaWMzeDogdGx2MzIwYWljM3hAMWIgeworCWNvbXBhdGlibGUgPSAidGksdGx2MzIwYWljM3giOworCXJlZyA9IDwweDFiPjsKKworCUFWREQtc3VwcGx5ID0gPCZyZWd1bGF0b3I+OworCUlPVkRELXN1cHBseSA9IDwmcmVndWxhdG9yPjsKKwlEUlZERC1zdXBwbHkgPSA8JnJlZ3VsYXRvcj47CisJRFZERC1zdXBwbHkgPSA8JnJlZ3VsYXRvcj47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3RwYTYxMzBhMi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvdHBhNjEzMGEyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGZhNzQwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3RwYTYxMzBhMi50eHQKQEAgLTAsMCArMSwyNyBAQAorVGV4YXMgSW5zdHJ1bWVudHMgLSB0cGE2MTMwYTIgQ29kZWMgbW9kdWxlCisKK1RoZSB0cGE2MTMwYTIgc2VyaWFsIGNvbnRyb2wgYnVzIGNvbW11bmljYXRlcyB0aHJvdWdoIEkyQyBwcm90b2NvbHMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIC0gInN0cmluZyIgLSBPbmUgb2Y6CisgICAgInRpLHRwYTYxMzBhMiIgLSBUUEE2MTMwQTIKKyAgICAidGksdHBhNjE0MGEyIiAtIFRQQTYxNDBBMgorCisKKy0gcmVnIC0gPGludD4gLSAgSTJDIHNsYXZlIGFkZHJlc3MKKworLSBWZGQtc3VwcGx5IC0gPHBoYW5kbGU+IC0gcG93ZXIgc3VwcGx5IHJlZ3VsYXRvcgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIHBvd2VyLWdwaW8gLSBncGlvIHBpbiB0byBwb3dlciB0aGUgZGV2aWNlCisKK0V4YW1wbGU6CisKK3RwYTYxMzBhMjogdHBhNjEzMGEyQDYwIHsKKwljb21wYXRpYmxlID0gInRpLHRwYTYxMzBhMiI7CisJcmVnID0gPDB4NjA+OworCVZkZC1zdXBwbHkgPSA8JnZtbWMyPjsKKwlwb3dlci1ncGlvID0gPCZncGlvNCAyIEdQSU9fQUNUSVZFX0hJR0g+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC90czNhMjI3ZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvdHMzYTIyN2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4MzY4ODEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvdHMzYTIyN2UudHh0CkBAIC0wLDAgKzEsMzEgQEAKK1RleGFzIEluc3RydW1lbnRzIFRTM0EyMjdFCitBdXRvbm9tb3VzIEF1ZGlvIEFjY2Vzc29yeSBEZXRlY3Rpb24gYW5kIENvbmZpZ3VyYXRpb24gU3dpdGNoCisKK1RoZSBUUzNBMjI3RSBkZXRlY3QgaGVhZHNldHMgb2YgMy1yaW5nIGFuZCA0LXJpbmcgc3RhbmRhcmRzIGFuZAorc3dpdGNoZXMgYXV0b21hdGljYWxseSB0byByb3V0ZSB0aGUgbWljcm9waG9uZSBjb3JyZWN0bHkuICBJdCBhbHNvCitoYW5kbGVzIGtleSBwcmVzcyBkZXRlY3Rpb24gaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBBbmRyb2lkIGF1ZGlvCitoZWFkc2V0IHNwZWNpZmljYXRpb24gdjEuMC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworIC0gY29tcGF0aWJsZToJCVNob3VsZCBjb250YWluICJ0aSx0czNhMjI3ZSIuCisgLSByZWc6CQkJVGhlIGkyYyBhZGRyZXNzLiBTaG91bGQgY29udGFpbiA8MHgzYj4uCisgLSBpbnRlcnJ1cHQtcGFyZW50OglUaGUgcGFyZW50IGludGVycnVwdCBjb250cm9sbGVyCisgLSBpbnRlcnJ1cHRzOgkJSW50ZXJydXB0IG51bWJlciBmb3IgL0lOVCBwaW4gZnJvbSB0aGUgMjI3ZQorCitPcHRpb25hbCBwcm9wZXJpZXM6CisgLSB0aSxtaWNiaWFzOiAgIEludGVuZGVkIE1JQ0JJQVMgdm9sdGFnZSAoZGF0YXNoZWV0IHNlY3Rpb24gOS42LjcpLgorICAgICAgU2VsZWN0IDAvMS8yLzMvNC81LzYvNyB0byBzcGVjaWZ5IE1BQ0JJQVMgdm9sdGFnZQorICAgICAgMi4xVi8yLjJWLzIuM1YvMi40Vi8yLjVWLzIuNlYvMi43Vi8yLjhWCisgICAgICBEZWZhdWx0IHZhbHVlIGlzICIxIiAoMi4yVikuCisKK0V4YW1wbGVzOgorCisJaTJjIHsKKwkJdHMzYTIyN2VAM2IgeworCQkJY29tcGF0aWJsZSA9ICJ0aSx0czNhMjI3ZSI7CisJCQlyZWcgPSA8MHgzYj47CisJCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZncGlvPjsKKwkJCWludGVycnVwdHMgPSA8MyBJUlFfVFlQRV9MRVZFTF9MT1c+OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvdXg1MDAtbW9wNTAwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC91eDUwMC1tb3A1MDAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4ZTA3MWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvdXg1MDAtbW9wNTAwLnR4dApAQCAtMCwwICsxLDM5IEBACisqIE1PUDUwMCBBdWRpbyBNYWNoaW5lIERyaXZlcgorCitUaGlzIG5vZGUgaXMgcmVzcG9uc2libGUgZm9yIGxpbmtpbmcgdG9nZXRoZXIgYWxsIHV4NTAwIEF1ZGlvIERyaXZlciBjb21wb25lbnRzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZSAgICAgICAgICAgICAgOiAic3Rlcmljc3NvbixzbmQtc29jLW1vcDUwMCIKKworTm9uLXN0YW5kYXJkIHByb3BlcnRpZXM6CisgLSBzdGVyaWNzc29uLGNwdS1kYWkgICAgICA6IFBoYW5kbGUgdG8gdGhlIENQVS1zaWRlIERBSQorIC0gc3Rlcmljc3NvbixhdWRpby1jb2RlYyAgOiBQaGFuZGxlIHRvIHRoZSBBdWRpbyBDT0RFQworIC0gc3Rlcmljc3NvbixjYXJkLW5hbWUgICAgOiBPdmVyLXJpZGUgZGVmYXVsdCBjYXJkIG5hbWUKKworRXhhbXBsZToKKworCXNvdW5kIHsKKwkJY29tcGF0aWJsZSA9ICJzdGVyaWNzc29uLHNuZC1zb2MtbW9wNTAwIjsKKworCQlzdGVyaWNzc29uLGNwdS1kYWkgPSA8Jm1zcDEgJm1zcDM+OworCQlzdGVyaWNzc29uLGF1ZGlvLWNvZGVjID0gPCZjb2RlYz47CisJfTsKKworCW1zcDE6IG1zcEA4MDEyNDAwMCB7CisJCWNvbXBhdGlibGUgPSAic3Rlcmljc3Nvbix1eDUwMC1tc3AtaTJzIjsKKwkJcmVnID0gPDB4ODAxMjQwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDYyIDB4ND47CisJCXYtYXBlLXN1cHBseSA9IDwmZGI4NTAwX3ZhcGVfcmVnPjsKKwl9OworCisJbXNwMzogbXNwQDgwMTI1MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzdGVyaWNzc29uLHV4NTAwLW1zcC1pMnMiOworCQlyZWcgPSA8MHg4MDEyNTAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgNjIgMHg0PjsKKwkJdi1hcGUtc3VwcGx5ID0gPCZkYjg1MDBfdmFwZV9yZWc+OworCX07CisKKwljb2RlYzogYWI4NTAwLWNvZGVjIHsKKwkJY29tcGF0aWJsZSA9ICJzdGVyaWNzc29uLGFiODUwMC1jb2RlYyI7CisJCXN0ZXJpY3Nzb24sZWFycGVpY2UtY212ID0gPDk1MD47IC8qIFVuaXRzIGluIG1WLiAqLworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvdXg1MDAtbXNwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC91eDUwMC1tc3AudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5YWNkOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvdXg1MDAtbXNwLnR4dApAQCAtMCwwICsxLDQzIEBACisqIHV4NTAwIE1TUCAoQ1BVLXNpZGUgRGlnaXRhbCBBdWRpbyBJbnRlcmZhY2UpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlICAgICAgIDoic3Rlcmljc3Nvbix1eDUwMC1tc3AtaTJzIgorIC0gcmVnICAgICAgICAgICAgICA6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBkZXZpY2UncyByZWdpc3RlcnMuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgLSBpbnRlcnJ1cHRzICAgICAgIDogVGhlIGludGVycnVwdCBvdXRwdXQgZnJvbSB0aGUgZGV2aWNlLgorIC0gaW50ZXJydXB0LXBhcmVudCA6IFRoZSBwYXJlbnQgaW50ZXJydXB0IGNvbnRyb2xsZXIuCisgLSA8bmFtZT4tc3VwcGx5ICAgIDogUGhhbmRsZSB0byB0aGUgcmVndWxhdG9yIDxuYW1lPiBzdXBwbHkKKworRXhhbXBsZToKKworCXNvdW5kIHsKKwkJY29tcGF0aWJsZSA9ICJzdGVyaWNzc29uLHNuZC1zb2MtbW9wNTAwIjsKKworCQlzdGVyaWNzc29uLHBsYXRmb3JtLXBjbS1kbWEgPSA8JnBjbT47CisJCXN0ZXJpY3Nzb24sY3B1LWRhaSA9IDwmbXNwMSAmbXNwMz47CisJCXN0ZXJpY3Nzb24sYXVkaW8tY29kZWMgPSA8JmNvZGVjPjsKKwl9OworCisJcGNtOiB1eDUwMC1wY20geworCQljb21wYXRpYmxlID0gInN0ZXJpY3Nzb24sdXg1MDAtcGNtIjsKKwl9OworCisJbXNwMTogbXNwQDgwMTI0MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzdGVyaWNzc29uLHV4NTAwLW1zcC1pMnMiOworCQlyZWcgPSA8MHg4MDEyNDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgNjIgMHg0PjsKKwkJdi1hcGUtc3VwcGx5ID0gPCZkYjg1MDBfdmFwZV9yZWc+OworCX07CisKKwltc3AzOiBtc3BAODAxMjUwMDAgeworCQljb21wYXRpYmxlID0gInN0ZXJpY3Nzb24sdXg1MDAtbXNwLWkycyI7CisJCXJlZyA9IDwweDgwMTI1MDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MCA2MiAweDQ+OworCQl2LWFwZS1zdXBwbHkgPSA8JmRiODUwMF92YXBlX3JlZz47CisJfTsKKworCWNvZGVjOiBhYjg1MDAtY29kZWMgeworCQljb21wYXRpYmxlID0gInN0ZXJpY3Nzb24sYWI4NTAwLWNvZGVjIjsKKwkJc3Rlcmljc3NvbixlYXJwZWljZS1jbXYgPSA8OTUwPjsgLyogVW5pdHMgaW4gbVYuICovCisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93aWRnZXRzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93aWRnZXRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmRlNWJhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3dpZGdldHMudHh0CkBAIC0wLDAgKzEsMjAgQEAKK1dpZGdldHM6CisKK1RoaXMgbWFpbmx5IHNwZWNpZmllcyBhdWRpbyBvZmYtY29kZWMgREFQTSB3aWRnZXRzLgorCitFYWNoIGVudHJ5IGlzIGEgcGFpciBvZiBzdHJpbmdzIGluIERUOgorCisJInRlbXBsYXRlLXduYW1lIiwgInVzZXItc3VwcGxpZWQtd25hbWUiCisKK1RoZSAidGVtcGxhdGUtd25hbWUiIGJlaW5nIHRoZSB0ZW1wbGF0ZSB3aWRnZXQgbmFtZSBhbmQgY3VycmVudGx5IGluY2x1ZGVzOgorIk1pY3JvcGhvbmUiLCAiTGluZSIsICJIZWFkcGhvbmUiIGFuZCAiU3BlYWtlciIuCisKK1RoZSAidXNlci1zdXBwbGllZC13bmFtZSIgYmVpbmcgdGhlIHVzZXIgc3BlY2lmaWVkIHdpZGdldCBuYW1lLgorCitGb3IgaW5zdGFuY2U6CisJc2ltcGxlLWF1ZGlvLXdpZGdldHMgPQorCQkiTWljcm9waG9uZSIsICJNaWNyb3Bob25lIEphY2siLAorCQkiTGluZSIsICJMaW5lIEluIEphY2siLAorCQkiTGluZSIsICJMaW5lIE91dCBKYWNrIiwKKwkJIkhlYWRwaG9uZSIsICJIZWFkcGhvbmUgSmFjayIsCisJCSJTcGVha2VyIiwgIlNwZWFrZXIgRXh0ZXJuYWwiOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3dtODUxMC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvd204NTEwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTFhMzJiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3dtODUxMC50eHQKQEAgLTAsMCArMSwxOCBAQAorV004NTEwIGF1ZGlvIENPREVDCisKK1RoaXMgZGV2aWNlIHN1cHBvcnRzIGJvdGggSTJDIGFuZCBTUEkgKGNvbmZpZ3VyZWQgd2l0aCBwaW4gc3RyYXBwaW5nCitvbiB0aGUgYm9hcmQpLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZSA6ICJ3bGYsd204NTEwIgorCisgIC0gcmVnIDogdGhlIEkyQyBhZGRyZXNzIG9mIHRoZSBkZXZpY2UgZm9yIEkyQywgdGhlIGNoaXAgc2VsZWN0CisgICAgICAgICAgbnVtYmVyIGZvciBTUEkuCisKK0V4YW1wbGU6CisKK2NvZGVjOiB3bTg1MTBAMWEgeworCWNvbXBhdGlibGUgPSAid2xmLHdtODUxMCI7CisJcmVnID0gPDB4MWE+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg1MjMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3dtODUyMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ3NDYxOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg1MjMudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1dNODUyMyBhdWRpbyBDT0RFQworCitUaGlzIGRldmljZSBzdXBwb3J0cyBJMkMgb25seS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGUgOiAid2xmLHdtODUyMyIKKworICAtIHJlZyA6IHRoZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlLgorCitFeGFtcGxlOgorCitjb2RlYzogd204NTIzQDFhIHsKKwljb21wYXRpYmxlID0gIndsZix3bTg1MjMiOworCXJlZyA9IDwweDFhPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvd204NTgwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg1ODAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkOTgyMWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvd204NTgwLnR4dApAQCAtMCwwICsxLDE2IEBACitXTTg1ODAgYXVkaW8gQ09ERUMKKworVGhpcyBkZXZpY2Ugc3VwcG9ydHMgSTJDIG9ubHkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogIndsZix3bTg1ODAiCisKKyAgLSByZWcgOiB0aGUgSTJDIGFkZHJlc3Mgb2YgdGhlIGRldmljZS4KKworRXhhbXBsZToKKworY29kZWM6IHdtODU4MEAxYSB7CisJY29tcGF0aWJsZSA9ICJ3bGYsd204NTgwIjsKKwlyZWcgPSA8MHgxYT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3dtODcxMS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvd204NzExLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWQ5OTk4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3dtODcxMS50eHQKQEAgLTAsMCArMSwxOCBAQAorV004NzExIGF1ZGlvIENPREVDCisKK1RoaXMgZGV2aWNlIHN1cHBvcnRzIGJvdGggSTJDIGFuZCBTUEkgKGNvbmZpZ3VyZWQgd2l0aCBwaW4gc3RyYXBwaW5nCitvbiB0aGUgYm9hcmQpLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZSA6ICJ3bGYsd204NzExIgorCisgIC0gcmVnIDogdGhlIEkyQyBhZGRyZXNzIG9mIHRoZSBkZXZpY2UgZm9yIEkyQywgdGhlIGNoaXAgc2VsZWN0CisgICAgICAgICAgbnVtYmVyIGZvciBTUEkuCisKK0V4YW1wbGU6CisKK2NvZGVjOiB3bTg3MTFAMWEgeworCWNvbXBhdGlibGUgPSAid2xmLHdtODcxMSI7CisJcmVnID0gPDB4MWE+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg3MjgudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3dtODcyOC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThiNWMzNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg3MjgudHh0CkBAIC0wLDAgKzEsMTggQEAKK1dNODcyOCBhdWRpbyBDT0RFQworCitUaGlzIGRldmljZSBzdXBwb3J0cyBib3RoIEkyQyBhbmQgU1BJIChjb25maWd1cmVkIHdpdGggcGluIHN0cmFwcGluZworb24gdGhlIGJvYXJkKS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGUgOiAid2xmLHdtODcyOCIKKworICAtIHJlZyA6IHRoZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlIGZvciBJMkMsIHRoZSBjaGlwIHNlbGVjdAorICAgICAgICAgIG51bWJlciBmb3IgU1BJLgorCitFeGFtcGxlOgorCitjb2RlYzogd204NzI4QDFhIHsKKwljb21wYXRpYmxlID0gIndsZix3bTg3MjgiOworCXJlZyA9IDwweDFhPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvd204NzMxLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg3MzEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzNjY5MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvd204NzMxLnR4dApAQCAtMCwwICsxLDI3IEBACitXTTg3MzEgYXVkaW8gQ09ERUMKKworVGhpcyBkZXZpY2Ugc3VwcG9ydHMgYm90aCBJMkMgYW5kIFNQSSAoY29uZmlndXJlZCB3aXRoIHBpbiBzdHJhcHBpbmcKK29uIHRoZSBib2FyZCkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogIndsZix3bTg3MzEiCisKKyAgLSByZWcgOiB0aGUgSTJDIGFkZHJlc3Mgb2YgdGhlIGRldmljZSBmb3IgSTJDLCB0aGUgY2hpcCBzZWxlY3QKKyAgICAgICAgICBudW1iZXIgZm9yIFNQSS4KKworRXhhbXBsZToKKworY29kZWM6IHdtODczMUAxYSB7CisJY29tcGF0aWJsZSA9ICJ3bGYsd204NzMxIjsKKwlyZWcgPSA8MHgxYT47Cit9OworCitBdmFpbGFibGUgYXVkaW8gZW5kcG9pbnRzIGZvciBhbiBhdWRpby1yb3V0aW5nIHRhYmxlOgorICogTE9VVDogTGVmdCBDaGFubmVsIExpbmUgT3V0cHV0CisgKiBST1VUOiBSaWdodCBDaGFubmVsIExpbmUgT3V0cHV0CisgKiBMSFBPVVQ6IExlZnQgQ2hhbm5lbCBIZWFkcGhvbmUgT3V0cHV0CisgKiBSSFBPVVQ6IFJpZ2h0IENoYW5uZWwgSGVhZHBob25lIE91dHB1dAorICogTExJTkVJTjogTGVmdCBDaGFubmVsIExpbmUgSW5wdXQKKyAqIFJMSU5FSU46IFJpZ2h0IENoYW5uZWwgTGluZSBJbnB1dAorICogTUlDSU46IE1pY3JvcGhvbmUgSW5wdXQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg3MzcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3dtODczNy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJjMmNlYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg3MzcudHh0CkBAIC0wLDAgKzEsMTggQEAKK1dNODczNyBhdWRpbyBDT0RFQworCitUaGlzIGRldmljZSBzdXBwb3J0cyBib3RoIEkyQyBhbmQgU1BJIChjb25maWd1cmVkIHdpdGggcGluIHN0cmFwcGluZworb24gdGhlIGJvYXJkKS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGUgOiAid2xmLHdtODczNyIKKworICAtIHJlZyA6IHRoZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlIGZvciBJMkMsIHRoZSBjaGlwIHNlbGVjdAorICAgICAgICAgIG51bWJlciBmb3IgU1BJLgorCitFeGFtcGxlOgorCitjb2RlYzogd204NzM3QDFhIHsKKwljb21wYXRpYmxlID0gIndsZix3bTg3MzciOworCXJlZyA9IDwweDFhPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvd204NzQxLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg3NDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExMzMxNTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvd204NzQxLnR4dApAQCAtMCwwICsxLDI5IEBACitXTTg3NDEgYXVkaW8gQ09ERUMKKworVGhpcyBkZXZpY2Ugc3VwcG9ydHMgYm90aCBJMkMgYW5kIFNQSSAoY29uZmlndXJlZCB3aXRoIHBpbiBzdHJhcHBpbmcKK29uIHRoZSBib2FyZCkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogIndsZix3bTg3NDEiCisKKyAgLSByZWcgOiB0aGUgSTJDIGFkZHJlc3Mgb2YgdGhlIGRldmljZSBmb3IgSTJDLCB0aGUgY2hpcCBzZWxlY3QKKyAgICAgICAgICBudW1iZXIgZm9yIFNQSS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworICAtIGRpZmYtbW9kZTogRGlmZmVyZW50aWFsIG91dHB1dCBtb2RlIGNvbmZpZ3VyYXRpb24uIERlZmF1bHQgdmFsdWUgZm9yIGZpZWxkCisgICAgRElGRiBpbiByZWdpc3RlciBSOCAoTU9ERV9DT05UUk9MXzIpLiBJZiBhYnNlbnQsIHRoZSBkZWZhdWx0IGlzIDAsIHNoYWxsIGJlOgorICAgIDAgPSBzdGVyZW8KKyAgICAxID0gbW9ubyBsZWZ0CisgICAgMiA9IHN0ZXJlbyByZXZlcnNlZAorICAgIDMgPSBtb25vIHJpZ2h0CisKK0V4YW1wbGU6CisKK2NvZGVjOiB3bTg3NDFAMWEgeworCWNvbXBhdGlibGUgPSAid2xmLHdtODc0MSI7CisJcmVnID0gPDB4MWE+OworCisJZGlmZi1tb2RlID0gPDM+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg3NTAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3dtODc1MC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRiMjM5ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg3NTAudHh0CkBAIC0wLDAgKzEsMTggQEAKK1dNODc1MCBhbmQgV004OTg3IGF1ZGlvIENPREVDcworCitUaGVzZSBkZXZpY2VzIHN1cHBvcnQgYm90aCBJMkMgYW5kIFNQSSAoY29uZmlndXJlZCB3aXRoIHBpbiBzdHJhcHBpbmcKK29uIHRoZSBib2FyZCkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogIndsZix3bTg3NTAiIG9yICJ3bGYsd204OTg3IgorCisgIC0gcmVnIDogdGhlIEkyQyBhZGRyZXNzIG9mIHRoZSBkZXZpY2UgZm9yIEkyQywgdGhlIGNoaXAgc2VsZWN0CisgICAgICAgICAgbnVtYmVyIGZvciBTUEkuCisKK0V4YW1wbGU6CisKK2NvZGVjOiB3bTg3NTBAMWEgeworCWNvbXBhdGlibGUgPSAid2xmLHdtODc1MCI7CisJcmVnID0gPDB4MWE+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg3NTMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3dtODc1My50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVlZTYxMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg3NTMudHh0CkBAIC0wLDAgKzEsNDAgQEAKK1dNODc1MyBhdWRpbyBDT0RFQworCitUaGlzIGRldmljZSBzdXBwb3J0cyBib3RoIEkyQyBhbmQgU1BJIChjb25maWd1cmVkIHdpdGggcGluIHN0cmFwcGluZworb24gdGhlIGJvYXJkKS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGUgOiAid2xmLHdtODc1MyIKKworICAtIHJlZyA6IHRoZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlIGZvciBJMkMsIHRoZSBjaGlwIHNlbGVjdAorICAgICAgICAgIG51bWJlciBmb3IgU1BJLgorCitQaW5zIG9uIHRoZSBkZXZpY2UgKGZvciBsaW5raW5nIGludG8gYXVkaW8gcm91dGVzKToKKworICAqIExPVVQxCisgICogTE9VVDIKKyAgKiBST1VUMQorICAqIFJPVVQyCisgICogTU9OTzEKKyAgKiBNT05PMgorICAqIE9VVDMKKyAgKiBPVVQ0CisgICogTElORTEKKyAgKiBMSU5FMgorICAqIFJYUAorICAqIFJYTgorICAqIEFDSU4KKyAgKiBBQ09QCisgICogTUlDMU4KKyAgKiBNSUMxCisgICogTUlDMk4KKyAgKiBNSUMyCisgICogTWljIEJpYXMKKworRXhhbXBsZToKKworY29kZWM6IHdtODc1M0AxYSB7CisJY29tcGF0aWJsZSA9ICJ3bGYsd204NzUzIjsKKwlyZWcgPSA8MHgxYT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3dtODc3MC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvd204NzcwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjZlMDBjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3dtODc3MC50eHQKQEAgLTAsMCArMSwxNiBAQAorV004NzcwIGF1ZGlvIENPREVDCisKK1RoaXMgZGV2aWNlIHN1cHBvcnRzIFNQSS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGUgOiAid2xmLHdtODc3MCIKKworICAtIHJlZyA6IHRoZSBjaGlwIHNlbGVjdCBudW1iZXIuCisKK0V4YW1wbGU6CisKK2NvZGVjOiB3bTg3NzBAMSB7CisJY29tcGF0aWJsZSA9ICJ3bGYsd204NzcwIjsKKwlyZWcgPSA8MT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3dtODc3Ni50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvd204Nzc2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjljYTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3dtODc3Ni50eHQKQEAgLTAsMCArMSwxOCBAQAorV004Nzc2IGF1ZGlvIENPREVDCisKK1RoaXMgZGV2aWNlIHN1cHBvcnRzIGJvdGggSTJDIGFuZCBTUEkgKGNvbmZpZ3VyZWQgd2l0aCBwaW4gc3RyYXBwaW5nCitvbiB0aGUgYm9hcmQpLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZSA6ICJ3bGYsd204Nzc2IgorCisgIC0gcmVnIDogdGhlIEkyQyBhZGRyZXNzIG9mIHRoZSBkZXZpY2UgZm9yIEkyQywgdGhlIGNoaXAgc2VsZWN0CisgICAgICAgICAgbnVtYmVyIGZvciBTUEkuCisKK0V4YW1wbGU6CisKK2NvZGVjOiB3bTg3NzZAMWEgeworCWNvbXBhdGlibGUgPSAid2xmLHdtODc3NiI7CisJcmVnID0gPDB4MWE+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg4MDQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3dtODgwNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZkMTI0YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg4MDQudHh0CkBAIC0wLDAgKzEsMjUgQEAKK1dNODgwNCBhdWRpbyBDT0RFQworCitUaGlzIGRldmljZSBzdXBwb3J0cyBib3RoIEkyQyBhbmQgU1BJIChjb25maWd1cmVkIHdpdGggcGluIHN0cmFwcGluZworb24gdGhlIGJvYXJkKS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGUgOiAid2xmLHdtODgwNCIKKworICAtIHJlZyA6IHRoZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlIGZvciBJMkMsIHRoZSBjaGlwIHNlbGVjdAorICAgICAgICAgIG51bWJlciBmb3IgU1BJLgorCisgIC0gUFZERC1zdXBwbHksIERWREQtc3VwcGx5IDogUG93ZXIgc3VwcGxpZXMgZm9yIHRoZSBkZXZpY2UsIGFzIGNvdmVyZWQKKyAgICBpbiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3JlZ3VsYXRvci50eHQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKworICAtIHdsZixyZXNldC1ncGlvOiBBIEdQSU8gc3BlY2lmaWVyIGZvciB0aGUgR1BJTyBjb250cm9sbGluZyB0aGUgcmVzZXQgcGluCisKK0V4YW1wbGU6CisKK2NvZGVjOiB3bTg4MDRAMWEgeworCWNvbXBhdGlibGUgPSAid2xmLHdtODgwNCI7CisJcmVnID0gPDB4MWE+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg5MDMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3dtODkwMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRlYzMyYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg5MDMudHh0CkBAIC0wLDAgKzEsNjkgQEAKK1dNODkwMyBhdWRpbyBDT0RFQworCitUaGlzIGRldmljZSBzdXBwb3J0cyBJMkMgb25seS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGUgOiAid2xmLHdtODkwMyIKKworICAtIHJlZyA6IHRoZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlLgorCisgIC0gZ3Bpby1jb250cm9sbGVyIDogSW5kaWNhdGVzIHRoaXMgZGV2aWNlIGlzIGEgR1BJTyBjb250cm9sbGVyLgorCisgIC0gI2dwaW8tY2VsbHMgOiBTaG91bGQgYmUgdHdvLiBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgcGluIG51bWJlciBhbmQgdGhlCisgICAgc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IG9wdGlvbmFsIHBhcmFtZXRlcnMgKGN1cnJlbnRseSB1bnVzZWQpLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCisgIC0gaW50ZXJydXB0cyA6IFRoZSBpbnRlcnJ1cHQgbGluZSB0aGUgY29kZWMgaXMgY29ubmVjdGVkIHRvLgorCisgIC0gbWljZGV0LWNmZyA6IERlZmF1bHQgcmVnaXN0ZXIgdmFsdWUgZm9yIFI2IChNaWMgQmlhcykuIElmIGFic2VudCwgdGhlCisgICAgZGVmYXVsdCBpcyAwLgorCisgIC0gbWljZGV0LWRlbGF5IDogVGhlIGRlYm91bmNlIGRlbGF5IGZvciBtaWNyb3Bob25lIGRldGVjdGlvbiBpbiBtUy4gSWYKKyAgICBhYnNlbnQsIHRoZSBkZWZhdWx0IGlzIDEwMC4KKworICAtIGdwaW8tY2ZnIDogQSBsaXN0IG9mIEdQSU8gY29uZmlndXJhdGlvbiByZWdpc3RlciB2YWx1ZXMuIFRoZSBsaXN0IG11c3QKKyAgICBiZSA1IGVudHJpZXMgbG9uZy4gSWYgYWJzZW50LCBubyBjb25maWd1cmF0aW9uIG9mIHRoZXNlIHJlZ2lzdGVycyBpcworICAgIHBlcmZvcm1lZC4gSWYgYW55IGVudHJ5IGhhcyB0aGUgdmFsdWUgMHhmZmZmZmZmZiwgdGhhdCBHUElPJ3MKKyAgICBjb25maWd1cmF0aW9uIHdpbGwgbm90IGJlIG1vZGlmaWVkLgorCitQaW5zIG9uIHRoZSBkZXZpY2UgKGZvciBsaW5raW5nIGludG8gYXVkaW8gcm91dGVzKToKKworICAqIElOMUwKKyAgKiBJTjFSCisgICogSU4yTAorICAqIElOMlIKKyAgKiBJTjNMCisgICogSU4zUgorICAqIERNSUNEQVQKKyAgKiBIUE9VVEwKKyAgKiBIUE9VVFIKKyAgKiBMSU5FT1VUTAorICAqIExJTkVPVVRSCisgICogTE9QCisgICogTE9OCisgICogUk9QCisgICogUk9OCisgICogTUlDQklBUworCitFeGFtcGxlOgorCitjb2RlYzogd204OTAzQDFhIHsKKwljb21wYXRpYmxlID0gIndsZix3bTg5MDMiOworCXJlZyA9IDwweDFhPjsKKwlpbnRlcnJ1cHRzID0gPCAzNDcgPjsKKworCWdwaW8tY29udHJvbGxlcjsKKwkjZ3Bpby1jZWxscyA9IDwyPjsKKworCW1pY2RldC1jZmcgPSA8MD47CisJbWljZGV0LWRlbGF5ID0gPDEwMD47CisJZ3Bpby1jZmcgPSA8CisJCTB4MDYwMCAvKiBETUlDX0xSLCBvdXRwdXQgKi8KKwkJMHgwNjgwIC8qIERNSUNfREFULCBpbnB1dCAqLworCQkweDAwMDAgLyogR1BJTywgb3V0cHV0LCBsb3cgKi8KKwkJMHgwMjAwIC8qIEludGVycnVwdCwgb3V0cHV0ICovCisJCTB4MDFhMCAvKiBCQ0xLLCBpbnB1dCwgYWN0aXZlIGhpZ2ggKi8KKwk+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg5MDQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3dtODkwNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZiZjI2MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg5MDQudHh0CkBAIC0wLDAgKzEsMzMgQEAKK1dNODkwNCBhdWRpbyBDT0RFQworCitUaGlzIGRldmljZSBzdXBwb3J0cyBJMkMgb25seS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiAid2xmLHdtODkwNCIgb3IgIndsZix3bTg5MTIiCisgIC0gcmVnOiB0aGUgSTJDIGFkZHJlc3Mgb2YgdGhlIGRldmljZS4KKyAgLSBjbG9jay1uYW1lczogIm1jbGsiCisgIC0gY2xvY2tzOiByZWZlcmVuY2UgdG8KKyAgICA8RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dD4KKworUGlucyBvbiB0aGUgZGV2aWNlIChmb3IgbGlua2luZyBpbnRvIGF1ZGlvIHJvdXRlcyk6CisKKyAgKiBJTjFMCisgICogSU4xUgorICAqIElOMkwKKyAgKiBJTjJSCisgICogSU4zTAorICAqIElOM1IKKyAgKiBIUE9VVEwKKyAgKiBIUE9VVFIKKyAgKiBMSU5FT1VUTAorICAqIExJTkVPVVRSCisgICogTUlDQklBUworCitFeGFtcGxlczoKKworY29kZWM6IHdtODkwNEAxYSB7CisJY29tcGF0aWJsZSA9ICJ3bGYsd204OTA0IjsKKwlyZWcgPSA8MHgxYT47CisJY2xvY2tzID0gPCZwY2swPjsKKwljbG9jay1uYW1lcyA9ICJtY2xrIjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvd204OTYwLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg5NjAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkZWI4YTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvd204OTYwLnR4dApAQCAtMCwwICsxLDMxIEBACitXTTg5NjAgYXVkaW8gQ09ERUMKKworVGhpcyBkZXZpY2Ugc3VwcG9ydHMgSTJDIG9ubHkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogIndsZix3bTg5NjAiCisKKyAgLSByZWcgOiB0aGUgSTJDIGFkZHJlc3Mgb2YgdGhlIGRldmljZS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAgLSB3bGYsc2hhcmVkLWxyY2xrOiBUaGlzIGlzIGEgYm9vbGVhbiBwcm9wZXJ0eS4gSWYgcHJlc2VudCwgdGhlIExSQ00gYml0IG9mCisJUjI0IChBZGRpdGlvbmFsIGNvbnRyb2wgMikgZ2V0cyBzZXQsIGluZGljYXRpbmcgdGhhdCBBRENMUkMgYW5kIERBQ0xSQyBwaW5zCisJd2lsbCBiZSBkaXNhYmxlZCBvbmx5IHdoZW4gQURDIChMZWZ0IGFuZCBSaWdodCkgYW5kIERBQyAoTGVmdCBhbmQgUmlnaHQpCisJYXJlIGRpc2FibGVkLgorCVdoZW4gd204OTYwIHdvcmtzIG9uIHN5bmNocm9uaXplIG1vZGUgYW5kIERBQ0xSQyBwaW4gaXMgdXNlZCB0byBzdXBwbHkKKwlmcmFtZSBjbG9jaywgaXQgd2lsbCBubyBmcmFtZSBjbG9jayBmb3IgY2FwdHJ1ZSB1bmxlc3MgZW5hYmxlIERBQyB0byBlbmFibGUKKwlEQUNMUkMgcGluLiBJZiBzaGFyZWQtbHJjbGsgaXMgcHJlc2VudCwgbm8gbmVlZCB0byBlbmFibGUgREFDIGZvciBjYXB0cnVlLgorCisgIC0gd2xmLGNhcGxlc3M6IFRoaXMgaXMgYSBib29sZWFuIHByb3BlcnR5LiBJZiBwcmVzZW50LCBPVVQzIHBpbiB3aWxsIGJlCisJZW5hYmxlZCBhbmQgZGlzYWJsZWQgdG9nZXRoZXIgd2l0aCBIUF9MIGFuZCBIUF9SIHBpbnMgaW4gcmVzcG9uc2UgdG8gamFjaworCWRldGVjdCBldmVudHMuCisKK0V4YW1wbGU6CisKK2NvZGVjOiB3bTg5NjBAMWEgeworCWNvbXBhdGlibGUgPSAid2xmLHdtODk2MCI7CisJcmVnID0gPDB4MWE+OworCisJd2xmLHNoYXJlZC1scmNsazsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvd204OTYyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg5NjIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmODJiNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvd204OTYyLnR4dApAQCAtMCwwICsxLDM5IEBACitXTTg5NjIgYXVkaW8gQ09ERUMKKworVGhpcyBkZXZpY2Ugc3VwcG9ydHMgSTJDIG9ubHkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogIndsZix3bTg5NjIiCisKKyAgLSByZWcgOiB0aGUgSTJDIGFkZHJlc3Mgb2YgdGhlIGRldmljZS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAgLSBzcGstbW9ubzogVGhpcyBpcyBhIGJvb2xlYW4gcHJvcGVydHkuIElmIHByZXNlbnQsIHRoZSBTUEtfTU9OTyBiaXQKKyAgICBvZiBSNTEgKENsYXNzIEQgQ29udHJvbCAyKSBnZXRzIHNldCwgaW5kaWNhdGluZyB0aGF0IHRoZSBzcGVha2VyIGlzCisgICAgaW4gbW9ubyBtb2RlLgorCisgIC0gbWljLWNmZyA6IERlZmF1bHQgcmVnaXN0ZXIgdmFsdWUgZm9yIFI0OCAoQWRkaXRpb25hbCBDb250cm9sIDQpLgorICAgIElmIGFic2VudCwgdGhlIGRlZmF1bHQgc2hvdWxkIGJlIHRoZSByZWdpc3RlciBkZWZhdWx0LgorCisgIC0gZ3Bpby1jZmcgOiBBIGxpc3Qgb2YgR1BJTyBjb25maWd1cmF0aW9uIHJlZ2lzdGVyIHZhbHVlcy4gVGhlIGxpc3QgbXVzdAorICAgIGJlIDYgZW50cmllcyBsb25nLiBJZiBhYnNlbnQsIG5vIGNvbmZpZ3VyYXRpb24gb2YgdGhlc2UgcmVnaXN0ZXJzIGlzCisgICAgcGVyZm9ybWVkLiBBbmQgbm90ZSB0aGF0IG9ubHkgdGhlIHZhbHVlIHdpdGhpbiBbMHgwLCAweGZmZmZdIGlzIHZhbGlkLgorICAgIEFueSBvdGhlciB2YWx1ZSBpcyByZWdhcmRlZCBhcyBzZXR0aW5nIHRoZSBHUElPIHJlZ2lzdGVyIGJ5IGl0cyByZXNldAorICAgIHZhbHVlIDB4MC4KKworRXhhbXBsZToKKworY29kZWM6IHdtODk2MkAxYSB7CisJY29tcGF0aWJsZSA9ICJ3bGYsd204OTYyIjsKKwlyZWcgPSA8MHgxYT47CisKKwlncGlvLWNmZyA9IDwKKwkJMHgwMDAwIC8qIDA6RGVmYXVsdCAqLworCQkweDAwMDAgLyogMTpEZWZhdWx0ICovCisJCTB4MDAxMyAvKiAyOkZOX0RNSUNDTEsgKi8KKwkJMHgwMDAwIC8qIDM6RGVmYXVsdCAqLworCQkweDgwMTQgLyogNDpGTl9ETUlDQ0RBVCAqLworCQkweDAwMDAgLyogNTpEZWZhdWx0ICovCisJPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvd204OTk0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bTg5OTQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwNDVlOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvd204OTk0LnR4dApAQCAtMCwwICsxLDc4IEBACitXTTE4MTEvV004OTk0L1dNODk1OCBhdWRpbyBDT0RFQworCitUaGVzZSBkZXZpY2VzIHN1cHBvcnQgYm90aCBJMkMgYW5kIFNQSSAoY29uZmlndXJlZCB3aXRoIHBpbiBzdHJhcHBpbmcKK29uIHRoZSBib2FyZCkuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlIDogT25lIG9mICJ3bGYsd20xODExIiwgIndsZix3bTg5OTQiIG9yICJ3bGYsd204OTU4Ii4KKworICAtIHJlZyA6IHRoZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlIGZvciBJMkMsIHRoZSBjaGlwIHNlbGVjdAorICAgICAgICAgIG51bWJlciBmb3IgU1BJLgorCisgIC0gZ3Bpby1jb250cm9sbGVyIDogSW5kaWNhdGVzIHRoaXMgZGV2aWNlIGlzIGEgR1BJTyBjb250cm9sbGVyLgorICAtICNncGlvLWNlbGxzIDogTXVzdCBiZSAyLiBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgcGluIG51bWJlciBhbmQgdGhlCisgICAgc2Vjb25kIGNlbGwgaXMgdXNlZCB0byBzcGVjaWZ5IG9wdGlvbmFsIHBhcmFtZXRlcnMgKGN1cnJlbnRseSB1bnVzZWQpLgorCisgIC0gQVZERDItc3VwcGx5LCBEQlZERDEtc3VwcGx5LCBEQlZERDItc3VwcGx5LCBEQlZERDMtc3VwcGx5LCBDUFZERC1zdXBwbHksCisgICAgU1BLVkREMS1zdXBwbHksIFNQS1ZERDItc3VwcGx5IDogcG93ZXIgc3VwcGxpZXMgZm9yIHRoZSBkZXZpY2UsIGFzIGNvdmVyZWQKKyAgICBpbiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL3JlZ3VsYXRvci50eHQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKworICAtIGludGVycnVwdHMgOiBUaGUgaW50ZXJydXB0IGxpbmUgdGhlIElSUSBzaWduYWwgZm9yIHRoZSBkZXZpY2UgaXMKKyAgICBjb25uZWN0ZWQgdG8uICBUaGlzIGlzIG9wdGlvbmFsLCBpZiBpdCBpcyBub3QgY29ubmVjdGVkIHRoZW4gbm9uZQorICAgIG9mIHRoZSBpbnRlcnJ1cHQgcmVsYXRlZCBwcm9wZXJ0aWVzIHNob3VsZCBiZSBzcGVjaWZpZWQuCisgIC0gaW50ZXJydXB0LWNvbnRyb2xsZXIgOiBUaGVzZSBkZXZpY2VzIGNvbnRhaW4gaW50ZXJydXB0IGNvbnRyb2xsZXJzCisgICAgYW5kIG1heSBwcm92aWRlIGludGVycnVwdCBzZXJ2aWNlcyB0byBvdGhlciBkZXZpY2VzIGlmIHRoZXkgaGF2ZSBhbgorICAgIGludGVycnVwdCBsaW5lIGNvbm5lY3RlZC4KKyAgLSBpbnRlcnJ1cHQtcGFyZW50IDogVGhlIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlci4KKyAgLSAjaW50ZXJydXB0LWNlbGxzOiB0aGUgbnVtYmVyIG9mIGNlbGxzIHRvIGRlc2NyaWJlIGFuIElSUSwgdGhpcyBzaG91bGQgYmUgMi4KKyAgICBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgSVJRIG51bWJlci4KKyAgICBUaGUgc2Vjb25kIGNlbGwgaXMgdGhlIGZsYWdzLCBlbmNvZGVkIGFzIHRoZSB0cmlnZ2VyIG1hc2tzIGZyb20KKyAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0cy50eHQKKworICAtIGNsb2NrcyA6IEEgbGlzdCBvZiB1cCB0byB0d28gcGhhbmRsZSBhbmQgY2xvY2sgc3BlY2lmaWVyIHBhaXJzCisgIC0gY2xvY2stbmFtZXMgOiBBIGxpc3Qgb2YgY2xvY2sgbmFtZXMgc29ydGVkIGluIHRoZSBzYW1lIG9yZGVyIGFzIGNsb2Nrcy4KKyAgICAgICAgICAgICAgICAgIFZhbGlkIGNsb2NrIG5hbWVzIGFyZSAiTUNMSzEiIGFuZCAiTUNMSzIiLgorCisgIC0gd2xmLGdwaW8tY2ZnIDogQSBsaXN0IG9mIEdQSU8gY29uZmlndXJhdGlvbiByZWdpc3RlciB2YWx1ZXMuIElmIGFic2VudCwKKyAgICBubyBjb25maWd1cmF0aW9uIG9mIHRoZXNlIHJlZ2lzdGVycyBpcyBwZXJmb3JtZWQuIElmIGFueSB2YWx1ZSBpcworICAgIG92ZXIgMHhmZmZmIHRoZW4gdGhlIHJlZ2lzdGVyIHdpbGwgYmUgbGVmdCBhcyBkZWZhdWx0LiBJZiBwcmVzZW50IDExCisgICAgdmFsdWVzIG11c3QgYmUgc3VwcGxpZWQuCisKKyAgLSB3bGYsbWljYmlhcy1jZmcgOiBUd28gTUlDQklBUyByZWdpc3RlciB2YWx1ZXMgZm9yIFdNMTgxMSBvcgorICAgIFdNODk1OC4gIElmIGFic2VudCB0aGUgcmVnaXN0ZXIgZGVmYXVsdHMgd2lsbCBiZSB1c2VkLgorCisgIC0gd2xmLGxkbzFlbmEgOiBHUElPIHNwZWNpZmllciBmb3IgY29udHJvbCBvZiBMRE8xRU5BIGlucHV0IHRvIGRldmljZS4KKyAgLSB3bGYsbGRvMmVuYSA6IEdQSU8gc3BlY2lmaWVyIGZvciBjb250cm9sIG9mIExETzJFTkEgaW5wdXQgdG8gZGV2aWNlLgorCisgIC0gd2xmLGxpbmVvdXQxLXNlIDogSWYgcHJlc2VudCBMSU5FT1VUMSBpcyBpbiBzaW5nbGUgZW5kZWQgbW9kZS4KKyAgLSB3bGYsbGluZW91dDItc2UgOiBJZiBwcmVzZW50IExJTkVPVVQyIGlzIGluIHNpbmdsZSBlbmRlZCBtb2RlLgorCisgIC0gd2xmLGxpbmVvdXQxLWZlZWRiYWNrIDogSWYgcHJlc2VudCBMSU5FT1VUMSBoYXMgY29tbW9uIG1vZGUgZmVlZGJhY2sKKyAgICBjb25uZWN0ZWQuCisgIC0gd2xmLGxpbmVvdXQyLWZlZWRiYWNrIDogSWYgcHJlc2VudCBMSU5FT1VUMiBoYXMgY29tbW9uIG1vZGUgZmVlZGJhY2sKKyAgICBjb25uZWN0ZWQuCisKKyAgLSB3bGYsbGRvZW5hLWFsd2F5cy1kcml2ZW4gOiBJZiBwcmVzZW50IExET0VOQSBpcyBhbHdheXMgZHJpdmVuLgorCitFeGFtcGxlOgorCitjb2RlYzogd204OTk0QDFhIHsKKwljb21wYXRpYmxlID0gIndsZix3bTg5OTQiOworCXJlZyA9IDwweDFhPjsKKworCWdwaW8tY29udHJvbGxlcjsKKwkjZ3Bpby1jZWxscyA9IDwyPjsKKworCWxpbmVvdXQxLXNlOworCisJQVZERDItc3VwcGx5ID0gPCZyZWd1bGF0b3I+OworCUNQVkRELXN1cHBseSA9IDwmcmVndWxhdG9yPjsKKwlEQlZERDEtc3VwcGx5ID0gPCZyZWd1bGF0b3I+OworCURCVkREMi1zdXBwbHkgPSA8JnJlZ3VsYXRvcj47CisJREJWREQzLXN1cHBseSA9IDwmcmVndWxhdG9yPjsKKwlTUEtWREQxLXN1cHBseSA9IDwmcmVndWxhdG9yPjsKKwlTUEtWREQyLXN1cHBseSA9IDwmcmVndWxhdG9yPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvenRlLHp4LWkycy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvenRlLHp4LWkycy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U1YWE2ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC96dGUsengtaTJzLnR4dApAQCAtMCwwICsxLDQ0IEBACitaVEUgWlgyOTY3MDIgSTJTIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGUgOiBNdXN0IGJlICJ6dGUsengyOTY3MDItaTJzIgorIC0gcmVnIDogTXVzdCBjb250YWluIEkyUyBjb3JlJ3MgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKyAtIGNsb2NrcyA6IFBhaXJzIG9mIHBoYW5kbGUgYW5kIHNwZWNpZmllciByZWZlcmVuY2luZyB0aGUgY29udHJvbGxlcidzIGNsb2Nrcy4KKyAtIGNsb2NrLW5hbWVzOiAidHgiIGZvciB0aGUgY2xvY2sgdG8gdGhlIEkyUyBpbnRlcmZhY2UuCisgLSBkbWFzOiBQYWlycyBvZiBwaGFuZGxlIGFuZCBzcGVjaWZpZXIgZm9yIHRoZSBETUEgY2hhbm5lbCB0aGF0IGlzIHVzZWQgYnkKKyAgIHRoZSBjb3JlLiBUaGUgY29yZSBleHBlY3RzIHR3byBkbWEgY2hhbm5lbHMgZm9yIHRyYW5zbWl0LgorIC0gZG1hLW5hbWVzIDogTXVzdCBiZSAidHgiIGFuZCAicngiCisKK0ZvciBtb3JlIGRldGFpbHMgb24gdGhlICdkbWEnLCAnZG1hLW5hbWVzJywgJ2Nsb2NrJyBhbmQgJ2Nsb2NrLW5hbWVzJyBwcm9wZXJ0aWVzCitwbGVhc2UgY2hlY2s6CisJKiByZXNvdXJjZS1uYW1lcy50eHQKKwkqIGNsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCSogZG1hL2RtYS50eHQKKworRXhhbXBsZToKKwlpMnMwOiBpMnMwQDBiMDA1MDAwIHsKKwkJI3NvdW5kLWRhaS1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJ6dGUsengyOTY3MDItaTJzIjsKKwkJcmVnID0gPDB4MGIwMDUwMDAgMHgxMDAwPjsKKwkJY2xvY2tzID0gPCZsc3AwY2xrIFpYMjk2NzAyX0kyUzBfRElWPjsKKwkJY2xvY2stbmFtZXMgPSAidHgiOworCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMjIgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWRtYXMgPSA8JmRtYSA1PiwgPCZkbWEgNj47CisJCWRtYS1uYW1lcyA9ICJ0eCIsICJyeCI7CisJCXN0YXR1cyA9ICJva2F5IjsKKwl9OworCisJc291bmQgeworCQljb21wYXRpYmxlID0gInNpbXBsZS1hdWRpby1jYXJkIjsKKwkJc2ltcGxlLWF1ZGlvLWNhcmQsbmFtZSA9ICJ6eDI5NjcwMl9zbmQiOworCQlzaW1wbGUtYXVkaW8tY2FyZCxmb3JtYXQgPSAibGVmdF9qIjsKKwkJc2ltcGxlLWF1ZGlvLWNhcmQsYml0Y2xvY2stbWFzdGVyID0gPCZzbmRjb2RlYz47CisJCXNpbXBsZS1hdWRpby1jYXJkLGZyYW1lLW1hc3RlciA9IDwmc25kY29kZWM+OworCQlzbmRjcHU6IHNpbXBsZS1hdWRpby1jYXJkLGNwdSB7CisJCQlzb3VuZC1kYWkgPSA8JmkyczA+OworCQl9OworCisJCXNuZGNvZGVjOiBzaW1wbGUtYXVkaW8tY2FyZCxjb2RlYyB7CisJCQlzb3VuZC1kYWkgPSA8JmFjb2RlYz47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC96dGUsengtc3BkaWYudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3p0ZSx6eC1zcGRpZi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg5NTQ0ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC96dGUsengtc3BkaWYudHh0CkBAIC0wLDAgKzEsMjggQEAKK1pURSBaWDI5NjcwMiBTUERJRiBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlIDogTXVzdCBiZSAienRlLHp4Mjk2NzAyLXNwZGlmIgorIC0gcmVnIDogTXVzdCBjb250YWluIFNQRElGIGNvcmUncyByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorIC0gY2xvY2tzIDogUGFpcnMgb2YgcGhhbmRsZSBhbmQgc3BlY2lmaWVyIHJlZmVyZW5jaW5nIHRoZSBjb250cm9sbGVyJ3MgY2xvY2tzLgorIC0gY2xvY2stbmFtZXM6ICJ0eCIgZm9yIHRoZSBjbG9jayB0byB0aGUgU1BESUYgaW50ZXJmYWNlLgorIC0gZG1hczogUGFpcnMgb2YgcGhhbmRsZSBhbmQgc3BlY2lmaWVyIGZvciB0aGUgRE1BIGNoYW5uZWwgdGhhdCBpcyB1c2VkIGJ5CisgICB0aGUgY29yZS4gVGhlIGNvcmUgZXhwZWN0cyBvbmUgZG1hIGNoYW5uZWwgZm9yIHRyYW5zbWl0LgorIC0gZG1hLW5hbWVzIDogTXVzdCBiZSAidHgiCisKK0ZvciBtb3JlIGRldGFpbHMgb24gdGhlICdkbWEnLCAnZG1hLW5hbWVzJywgJ2Nsb2NrJyBhbmQgJ2Nsb2NrLW5hbWVzJyBwcm9wZXJ0aWVzCitwbGVhc2UgY2hlY2s6CisJKiByZXNvdXJjZS1uYW1lcy50eHQKKwkqIGNsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCSogZG1hL2RtYS50eHQKKworRXhhbXBsZToKKwlzcGRpZjA6IHNwZGlmMEAwYjAwNDAwMCB7CisJCWNvbXBhdGlibGUgPSAienRlLHp4Mjk2NzAyLXNwZGlmIjsKKwkJcmVnID0gPDB4MGIwMDQwMDAgMHgxMDAwPjsKKwkJY2xvY2tzID0gPCZsc3AwY2xrIFpYMjk2NzAyX1NQRElGMF9ESVY+OworCQljbG9jay1uYW1lcyA9ICJ0eCI7CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSAyMSBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJZG1hcyA9IDwmZG1hIDQ+OworCQlkbWEtbmFtZXMgPSAidHgiOworCQlzdGF0dXMgPSAib2theSI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvYnJjbSxiY20yODM1LWF1eC1zcGkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9icmNtLGJjbTI4MzUtYXV4LXNwaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg4N2IwNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvYnJjbSxiY20yODM1LWF1eC1zcGkudHh0CkBAIC0wLDAgKzEsMzggQEAKK0Jyb2FkY29tIEJDTTI4MzUgYXV4aWxpYXIgU1BJMS8yIGNvbnRyb2xsZXIKKworVGhlIEJDTTI4MzUgY29udGFpbnMgdHdvIGZvcm1zIG9mIFNQSSBtYXN0ZXIgY29udHJvbGxlciwgb25lIGtub3duIHNpbXBseSBhcworU1BJMCwgYW5kIHRoZSBvdGhlciBrbm93biBhcyB0aGUgIlVuaXZlcnNhbCBTUEkgTWFzdGVyIjsgcGFydCBvZiB0aGUKK2F1eGlsaWFyeSBibG9jay4gVGhpcyBiaW5kaW5nIGFwcGxpZXMgdG8gdGhlIFNQSTEvMiBjb250cm9sbGVyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImJyY20sYmNtMjgzNS1hdXgtc3BpIi4KKy0gcmVnOiBTaG91bGQgY29udGFpbiByZWdpc3RlciBsb2NhdGlvbiBhbmQgbGVuZ3RoIGZvciB0aGUgc3BpIGJsb2NrCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIHNoYXJlZCBpbnRlcnJ1cHQgb2YgdGhlIGF1eCBibG9jaworLSBjbG9ja3M6IFRoZSBjbG9jayBmZWVkaW5nIHRoZSBTUEkgY29udHJvbGxlciAtIG5lZWRzIHRvCisJICBwb2ludCB0byB0aGUgYXV4aWxpYXIgY2xvY2sgZHJpdmVyIG9mIHRoZSBiY20yODM1LAorCSAgYXMgdGhpcyBjbG9jayB3aWxsIGVuYWJsZSB0aGUgb3V0cHV0IGdhdGUgZm9yIHRoZSBzcGVjaWZpYworCSAgY2xvY2suCistIGNzLWdwaW9zOiB0aGUgY3MtZ3Bpb3MgKG5hdGl2ZSBjcyBpcyBOT1Qgc3VwcG9ydGVkKQorCSAgICBzZWUgYWxzbyBzcGktYnVzLnR4dAorCitFeGFtcGxlOgorCitzcGkxQDdlMjE1MDgwIHsKKwljb21wYXRpYmxlID0gImJyY20sYmNtMjgzNS1hdXgtc3BpIjsKKwlyZWcgPSA8MHg3ZTIxNTA4MCAweDQwPjsKKwlpbnRlcnJ1cHRzID0gPDEgMjk+OworCWNsb2NrcyA9IDwmYXV4X2Nsb2NrcyBCQ00yODM1X0FVWF9DTE9DS19TUEkxPjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwljcy1ncGlvcyA9IDwmZ3BpbyAxOD4sIDwmZ3BpbyAxNz4sIDwmZ3BpbyAxNj47Cit9OworCitzcGkyQDdlMjE1MGMwIHsKKwljb21wYXRpYmxlID0gImJyY20sYmNtMjgzNS1hdXgtc3BpIjsKKwlyZWcgPSA8MHg3ZTIxNTBjMCAweDQwPjsKKwlpbnRlcnJ1cHRzID0gPDEgMjk+OworCWNsb2NrcyA9IDwmYXV4X2Nsb2NrcyBCQ00yODM1X0FVWF9DTE9DS19TUEkyPjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwljcy1ncGlvcyA9IDwmZ3BpbyA0Mz4sIDwmZ3BpbyA0ND4sIDwmZ3BpbyA0NT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9icmNtLGJjbTI4MzUtc3BpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvYnJjbSxiY20yODM1LXNwaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjExZjI5NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvYnJjbSxiY20yODM1LXNwaS50eHQKQEAgLTAsMCArMSwyMiBAQAorQnJvYWRjb20gQkNNMjgzNSBTUEkwIGNvbnRyb2xsZXIKKworVGhlIEJDTTI4MzUgY29udGFpbnMgdHdvIGZvcm1zIG9mIFNQSSBtYXN0ZXIgY29udHJvbGxlciwgb25lIGtub3duIHNpbXBseSBhcworU1BJMCwgYW5kIHRoZSBvdGhlciBrbm93biBhcyB0aGUgIlVuaXZlcnNhbCBTUEkgTWFzdGVyIjsgcGFydCBvZiB0aGUKK2F1eGlsaWFyeSBibG9jay4gVGhpcyBiaW5kaW5nIGFwcGxpZXMgdG8gdGhlIFNQSTAgY29udHJvbGxlci4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJicmNtLGJjbTI4MzUtc3BpIi4KKy0gcmVnOiBTaG91bGQgY29udGFpbiByZWdpc3RlciBsb2NhdGlvbiBhbmQgbGVuZ3RoLgorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBpbnRlcnJ1cHQuCistIGNsb2NrczogVGhlIGNsb2NrIGZlZWRpbmcgdGhlIFNQSSBjb250cm9sbGVyLgorCitFeGFtcGxlOgorCitzcGlAMjAyMDQwMDAgeworCWNvbXBhdGlibGUgPSAiYnJjbSxiY20yODM1LXNwaSI7CisJcmVnID0gPDB4N2UyMDQwMDAgMHgxMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDIgMjI+OworCWNsb2NrcyA9IDwmY2xrX3NwaT47CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9lZm0zMi1zcGkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9lZm0zMi1zcGkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MGUyOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL2VmbTMyLXNwaS50eHQKQEAgLTAsMCArMSw0MSBAQAorKiBFbmVyZ3kgTWljcm8gRUZNMzIgU1BJCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistICNhZGRyZXNzLWNlbGxzOiBzZWUgc3BpLWJ1cy50eHQKKy0gI3NpemUtY2VsbHM6IHNlZSBzcGktYnVzLnR4dAorLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgImVuZXJneW1pY3JvLGVmbTMyLXNwaSIKKy0gcmVnOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgY29udHJvbGxlcgorLSBpbnRlcnJ1cHRzOiBwYWlyIHNwZWNpZnlpbmcgcnggYW5kIHR4IGlycQorLSBjbG9ja3M6IHBoYW5kbGUgdG8gdGhlIHNwaSBjbG9jaworLSBjcy1ncGlvczogc2VlIHNwaS1idXMudHh0CisKK1JlY29tbWVuZGVkIHByb3BlcnRpZXMgOgorLSBlbmVyZ3ltaWNybyxsb2NhdGlvbjogVmFsdWUgdG8gd3JpdGUgdG8gdGhlIFJPVVRFIHJlZ2lzdGVyJ3MgTE9DQVRJT04KKyAgICAgICAgICAgICAgICAgICAgICAgIGJpdGZpZWxkIHRvIGNvbmZpZ3VyZSB0aGUgcGlubXV4IGZvciB0aGUgZGV2aWNlLCBzZWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzaGVldCBmb3IgdmFsdWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhpcyBwcm9wZXJ0eSBpcyBub3QgcHJvdmlkZWQsIGtlZXBpbmcgd2hhdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBjb25maWd1cmVkIGluIHRoZSBoYXJkd2FyZSwgc28gaXRzIGVpdGhlciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc2V0IGRlZmF1bHQgMCBvciB3aGF0ZXZlciB0aGUgYm9vdGxvYWRlciBkaWQuCisKK0V4YW1wbGU6CisKK3NwaTE6IHNwaUAweDQwMDBjNDAwIHsgLyogVVNBUlQxICovCisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47CisJY29tcGF0aWJsZSA9ICJlbmVyZ3ltaWNybyxlZm0zMi1zcGkiOworCXJlZyA9IDwweDQwMDBjNDAwIDB4NDAwPjsKKwlpbnRlcnJ1cHRzID0gPDE1IDE2PjsKKwljbG9ja3MgPSA8JmNtdSAyMD47CisJY3MtZ3Bpb3MgPSA8JmdwaW8gNTEgMT47IC8vIEQzCisJZW5lcmd5bWljcm8sbG9jYXRpb24gPSA8MT47CisJc3RhdHVzID0gIm9rIjsKKworCWtzODg1MUAwIHsKKwkJY29tcGF0aWJsZSA9ICJrczg4NTEiOworCQlzcGktbWF4LWZyZXF1ZW5jeSA9IDw2MDAwMDAwPjsKKwkJcmVnID0gPDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZib2FyZGZwZ2E+OworCQlpbnRlcnJ1cHRzID0gPDQ+OworCQlzdGF0dXMgPSAib2siOworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9mc2wtaW14LWNzcGkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9mc2wtaW14LWNzcGkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMzM0MWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL2ZzbC1pbXgtY3NwaS50eHQKQEAgLTAsMCArMSwzNyBAQAorKiBGcmVlc2NhbGUgKEVuaGFuY2VkKSBDb25maWd1cmFibGUgU2VyaWFsIFBlcmlwaGVyYWwgSW50ZXJmYWNlCisgIChDU1BJL2VDU1BJKSBmb3IgaS5NWAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDoKKyAgLSAiZnNsLGlteDEtY3NwaSIgZm9yIFNQSSBjb21wYXRpYmxlIHdpdGggdGhlIG9uZSBpbnRlZ3JhdGVkIG9uIGkuTVgxCisgIC0gImZzbCxpbXgyMS1jc3BpIiBmb3IgU1BJIGNvbXBhdGlibGUgd2l0aCB0aGUgb25lIGludGVncmF0ZWQgb24gaS5NWDIxCisgIC0gImZzbCxpbXgyNy1jc3BpIiBmb3IgU1BJIGNvbXBhdGlibGUgd2l0aCB0aGUgb25lIGludGVncmF0ZWQgb24gaS5NWDI3CisgIC0gImZzbCxpbXgzMS1jc3BpIiBmb3IgU1BJIGNvbXBhdGlibGUgd2l0aCB0aGUgb25lIGludGVncmF0ZWQgb24gaS5NWDMxCisgIC0gImZzbCxpbXgzNS1jc3BpIiBmb3IgU1BJIGNvbXBhdGlibGUgd2l0aCB0aGUgb25lIGludGVncmF0ZWQgb24gaS5NWDM1CisgIC0gImZzbCxpbXg1MS1lY3NwaSIgZm9yIFNQSSBjb21wYXRpYmxlIHdpdGggdGhlIG9uZSBpbnRlZ3JhdGVkIG9uIGkuTVg1MQorLSByZWcgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistIGludGVycnVwdHMgOiBTaG91bGQgY29udGFpbiBDU1BJL2VDU1BJIGludGVycnVwdAorLSBmc2wsc3BpLW51bS1jaGlwc2VsZWN0cyA6IENvbnRhaW5zIHRoZSBudW1iZXIgb2YgdGhlIGNoaXBzZWxlY3QKKy0gY3MtZ3Bpb3MgOiBTcGVjaWZpZXMgdGhlIGdwaW8gcGlucyB0byBiZSB1c2VkIGZvciBjaGlwc2VsZWN0cy4KKy0gY2xvY2tzIDogQ2xvY2sgc3BlY2lmaWVycyBmb3IgYm90aCBpcGcgYW5kIHBlciBjbG9ja3MuCistIGNsb2NrLW5hbWVzIDogQ2xvY2sgbmFtZXMgc2hvdWxkIGluY2x1ZGUgYm90aCAiaXBnIiBhbmQgInBlciIKK1NlZSB0aGUgY2xvY2sgY29uc3VtZXIgYmluZGluZywKKwlEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CistIGRtYXM6IERNQSBzcGVjaWZpZXJzIGZvciB0eCBhbmQgcnggZG1hLiBTZWUgdGhlIERNQSBjbGllbnQgYmluZGluZywKKwkJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9kbWEudHh0CistIGRtYS1uYW1lczogRE1BIHJlcXVlc3QgbmFtZXMgc2hvdWxkIGluY2x1ZGUgInR4IiBhbmQgInJ4IiBpZiBwcmVzZW50LgorCitFeGFtcGxlOgorCitlY3NwaUA3MDAxMDAwMCB7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47CisJY29tcGF0aWJsZSA9ICJmc2wsaW14NTEtZWNzcGkiOworCXJlZyA9IDwweDcwMDEwMDAwIDB4NDAwMD47CisJaW50ZXJydXB0cyA9IDwzNj47CisJZnNsLHNwaS1udW0tY2hpcHNlbGVjdHMgPSA8Mj47CisJY3MtZ3Bpb3MgPSA8JmdwaW8zIDI0IDA+LCAvKiBHUElPM18yNCAqLworCQkgICA8JmdwaW8zIDI1IDA+OyAvKiBHUElPM18yNSAqLworCWRtYXMgPSA8JnNkbWEgMyA3IDE+LCA8JnNkbWEgNCA3IDI+OworCWRtYS1uYW1lcyA9ICJyeCIsICJ0eCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9mc2wtc3BpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvZnNsLXNwaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIzMzEzNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvZnNsLXNwaS50eHQKQEAgLTAsMCArMSw2MCBAQAorKiBTUEkgKFNlcmlhbCBQZXJpcGhlcmFsIEludGVyZmFjZSkKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY2VsbC1pbmRleCA6IFFFIFNQSSBzdWJibG9jayBpbmRleC4KKwkJMDogUUUgc3ViYmxvY2sgU1BJMQorCQkxOiBRRSBzdWJibG9jayBTUEkyCistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImZzbCxzcGkiIG9yICJhZXJvZmxleGdhaXNsZXIsc3BpY3RybCIuCistIG1vZGUgOiB0aGUgU1BJIG9wZXJhdGlvbiBtb2RlLCBpdCBjYW4gYmUgImNwdSIgb3IgImNwdS1xZSIuCistIHJlZyA6IE9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKy0gaW50ZXJydXB0cyA6IDxhIGI+IHdoZXJlIGEgaXMgdGhlIGludGVycnVwdCBudW1iZXIgYW5kIGIgaXMgYQorICBmaWVsZCB0aGF0IHJlcHJlc2VudHMgYW4gZW5jb2Rpbmcgb2YgdGhlIHNlbnNlIGFuZCBsZXZlbAorICBpbmZvcm1hdGlvbiBmb3IgdGhlIGludGVycnVwdC4gIFRoaXMgc2hvdWxkIGJlIGVuY29kZWQgYmFzZWQgb24KKyAgdGhlIGluZm9ybWF0aW9uIGluIHNlY3Rpb24gMikgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIGludGVycnVwdAorICBjb250cm9sbGVyIHlvdSBoYXZlLgorLSBpbnRlcnJ1cHQtcGFyZW50IDogdGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGF0CisgIHNlcnZpY2VzIGludGVycnVwdHMgZm9yIHRoaXMgZGV2aWNlLgorLSBjbG9jay1mcmVxdWVuY3kgOiBpbnB1dCBjbG9jayBmcmVxdWVuY3kgdG8gbm9uIEZTTF9TT0MgY29yZXMKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gZ3Bpb3MgOiBzcGVjaWZpZXMgdGhlIGdwaW8gcGlucyB0byBiZSB1c2VkIGZvciBjaGlwc2VsZWN0cy4KKyAgVGhlIGdwaW9zIHdpbGwgYmUgcmVmZXJyZWQgdG8gYXMgcmVnID0gPGluZGV4PiBpbiB0aGUgU1BJIGNoaWxkIG5vZGVzLgorICBJZiB1bnNwZWNpZmllZCwgYSBzaW5nbGUgU1BJIGRldmljZSB3aXRob3V0IGEgY2hpcCBzZWxlY3QgY2FuIGJlIHVzZWQuCisKK0V4YW1wbGU6CisJc3BpQDRjMCB7CisJCWNlbGwtaW5kZXggPSA8MD47CisJCWNvbXBhdGlibGUgPSAiZnNsLHNwaSI7CisJCXJlZyA9IDw0YzAgNDA+OworCQlpbnRlcnJ1cHRzID0gPDgyIDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPDcwMD47CisJCW1vZGUgPSAiY3B1IjsKKwkJZ3Bpb3MgPSA8JmdwaW8gMTggMQkvLyBkZXZpY2UgcmVnPTwwPgorCQkJICZncGlvIDE5IDE+OwkvLyBkZXZpY2UgcmVnPTwxPgorCX07CisKKworKiBlU1BJIChFbmhhbmNlZCBTZXJpYWwgUGVyaXBoZXJhbCBJbnRlcmZhY2UpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImZzbCxtcGM4NTM2LWVzcGkiLgorLSByZWcgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlLgorLSBpbnRlcnJ1cHRzIDogc2hvdWxkIGNvbnRhaW4gZVNQSSBpbnRlcnJ1cHQsIHRoZSBkZXZpY2UgaGFzIG9uZSBpbnRlcnJ1cHQuCistIGZzbCxlc3BpLW51bS1jaGlwc2VsZWN0cyA6IHRoZSBudW1iZXIgb2YgdGhlIGNoaXBzZWxlY3Qgc2lnbmFscy4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gZnNsLGNzYmVmOiBjaGlwIHNlbGVjdCBhc3NlcnRpb24gdGltZSBpbiBiaXRzIGJlZm9yZSBmcmFtZSBzdGFydHMKKy0gZnNsLGNzYWZ0OiBjaGlwIHNlbGVjdCBuZWdhdGlvbiB0aW1lIGluIGJpdHMgYWZ0ZXIgZnJhbWUgZW5kcworCitFeGFtcGxlOgorCXNwaUAxMTAwMDAgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzg1MzYtZXNwaSI7CisJCXJlZyA9IDwweDExMDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDUzIDB4Mj47CisJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1waWM+OworCQlmc2wsZXNwaS1udW0tY2hpcHNlbGVjdHMgPSA8ND47CisJCWZzbCxjc2JlZiA9IDwxPjsKKwkJZnNsLGNzYWZ0ID0gPDE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL214cy1zcGkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9teHMtc3BpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDk5YjczCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9teHMtc3BpLnR4dApAQCAtMCwwICsxLDI2IEBACisqIEZyZWVzY2FsZSBNWDIzMy9NWDI4IFNTUC9TUEkKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJmc2wsPHNvYz4tc3BpIiwgd2hlcmUgc29jIGlzICJpbXgyMyIgb3IgImlteDI4IgorLSByZWc6IE9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gU1NQIEVSUk9SIGludGVycnVwdAorLSBkbWFzOiBETUEgc3BlY2lmaWVyLCBjb25zaXN0aW5nIG9mIGEgcGhhbmRsZSB0byBETUEgY29udHJvbGxlciBub2RlCisgIGFuZCBTU1AgRE1BIGNoYW5uZWwgSUQuCisgIFJlZmVyIHRvIGRtYS50eHQgYW5kIGZzbC1teHMtZG1hLnR4dCBmb3IgZGV0YWlscy4KKy0gZG1hLW5hbWVzOiBNdXN0IGJlICJyeC10eCIuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrLWZyZXF1ZW5jeSA6IElucHV0IGNsb2NrIGZyZXF1ZW5jeSB0byB0aGUgU1BJIGJsb2NrIGluIEh6LgorCQkgICAgRGVmYXVsdCBpcyAxNjAwMDAwMDAgSHouCisKK0V4YW1wbGU6CisKK3NzcDA6IHNzcEA4MDAxMDAwMCB7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47CisJY29tcGF0aWJsZSA9ICJmc2wsaW14Mjgtc3BpIjsKKwlyZWcgPSA8MHg4MDAxMDAwMCAweDIwMDA+OworCWludGVycnVwdHMgPSA8OTY+OworCWRtYXMgPSA8JmRtYV9hcGJoIDA+OworCWRtYS1uYW1lcyA9ICJyeC10eCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9udmlkaWEsdGVncmExMTQtc3BpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvbnZpZGlhLHRlZ3JhMTE0LXNwaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc4NTk3NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvbnZpZGlhLHRlZ3JhMTE0LXNwaS50eHQKQEAgLTAsMCArMSw0MiBAQAorTlZJRElBIFRlZ3JhMTE0IFNQSSBjb250cm9sbGVyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogRm9yIFRlZ3JhMTE0LCBtdXN0IGNvbnRhaW4gIm52aWRpYSx0ZWdyYTExNC1zcGkiLgorICBPdGhlcndpc2UsIG11c3QgY29udGFpbiAnIm52aWRpYSw8Y2hpcD4tc3BpIiwgIm52aWRpYSx0ZWdyYTExNC1zcGkiJyB3aGVyZQorICA8Y2hpcD4gaXMgdGVncmExMjQsIHRlZ3JhMTMyLCBvciB0ZWdyYTIxMC4KKy0gcmVnOiBTaG91bGQgY29udGFpbiBTUEkgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGguCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIFNQSSBpbnRlcnJ1cHRzLgorLSBjbG9jay1uYW1lcyA6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIC0gc3BpCistIHJlc2V0cyA6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiByZXNldC1uYW1lcy4KKyAgU2VlIC4uL3Jlc2V0L3Jlc2V0LnR4dCBmb3IgZGV0YWlscy4KKy0gcmVzZXQtbmFtZXMgOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAtIHNwaQorLSBkbWFzIDogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIGNsb2NrLW5hbWVzLgorICBTZWUgLi4vZG1hL2RtYS50eHQgZm9yIGRldGFpbHMuCistIGRtYS1uYW1lcyA6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIC0gcngKKyAgLSB0eAorLSBjbG9ja3MgOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCisgIFNlZSAuLi9jbG9ja3MvY2xvY2stYmluZGluZ3MudHh0IGZvciBkZXRhaWxzLgorCitSZWNvbW1lbmRlZCBwcm9wZXJ0aWVzOgorLSBzcGktbWF4LWZyZXF1ZW5jeTogRGVmaW5pdGlvbiBhcyBwZXIKKyAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLWJ1cy50eHQKK0V4YW1wbGU6CisKK3NwaUA3MDAwZDYwMCB7CisJY29tcGF0aWJsZSA9ICJudmlkaWEsdGVncmExMTQtc3BpIjsKKwlyZWcgPSA8MHg3MDAwZDYwMCAweDIwMD47CisJaW50ZXJydXB0cyA9IDwwIDgyIDB4MDQ+OworCXNwaS1tYXgtZnJlcXVlbmN5ID0gPDI1MDAwMDAwPjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwljbG9ja3MgPSA8JnRlZ3JhX2NhciA0ND47CisJY2xvY2stbmFtZXMgPSAic3BpIjsKKwlyZXNldHMgPSA8JnRlZ3JhX2NhciA0ND47CisJcmVzZXQtbmFtZXMgPSAic3BpIjsKKwlkbWFzID0gPCZhcGJkbWEgMTY+LCA8JmFwYmRtYSAxNj47CisJZG1hLW5hbWVzID0gInJ4IiwgInR4IjsKKwlzdGF0dXMgPSAiZGlzYWJsZWQiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvbnZpZGlhLHRlZ3JhMjAtc2ZsYXNoLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvbnZpZGlhLHRlZ3JhMjAtc2ZsYXNoLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGYwOGU2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9udmlkaWEsdGVncmEyMC1zZmxhc2gudHh0CkBAIC0wLDAgKzEsMzggQEAKK05WSURJQSBUZWdyYTIwIFNGTEFTSCBjb250cm9sbGVyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJudmlkaWEsdGVncmEyMC1zZmxhc2giLgorLSByZWc6IFNob3VsZCBjb250YWluIFNGTEFTSCByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aC4KKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gU0ZMQVNIIGludGVycnVwdHMuCistIGNsb2NrcyA6IE11c3QgY29udGFpbiBvbmUgZW50cnksIGZvciB0aGUgbW9kdWxlIGNsb2NrLgorICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKy0gcmVzZXRzIDogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIHJlc2V0LW5hbWVzLgorICBTZWUgLi4vcmVzZXQvcmVzZXQudHh0IGZvciBkZXRhaWxzLgorLSByZXNldC1uYW1lcyA6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIC0gc3BpCistIGRtYXMgOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCisgIFNlZSAuLi9kbWEvZG1hLnR4dCBmb3IgZGV0YWlscy4KKy0gZG1hLW5hbWVzIDogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgLSByeAorICAtIHR4CisKK1JlY29tbWVuZGVkIHByb3BlcnRpZXM6CistIHNwaS1tYXgtZnJlcXVlbmN5OiBEZWZpbml0aW9uIGFzIHBlcgorICAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktYnVzLnR4dAorCitFeGFtcGxlOgorCitzcGlANzAwMGMzODAgeworCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMjAtc2ZsYXNoIjsKKwlyZWcgPSA8MHg3MDAwYzM4MCAweDgwPjsKKwlpbnRlcnJ1cHRzID0gPDAgMzkgMHgwND47CisJc3BpLW1heC1mcmVxdWVuY3kgPSA8MjUwMDAwMDA+OworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDA+OworCWNsb2NrcyA9IDwmdGVncmFfY2FyIDQzPjsKKwlyZXNldHMgPSA8JnRlZ3JhX2NhciA0Mz47CisJcmVzZXQtbmFtZXMgPSAic3BpIjsKKwlkbWFzID0gPCZhcGJkbWEgMTE+LCA8JmFwYmRtYSAxMT47CisJZG1hLW5hbWVzID0gInJ4IiwgInR4IjsKKwlzdGF0dXMgPSAiZGlzYWJsZWQiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvbnZpZGlhLHRlZ3JhMjAtc2xpbmsudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9udmlkaWEsdGVncmEyMC1zbGluay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRiOTE0NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvbnZpZGlhLHRlZ3JhMjAtc2xpbmsudHh0CkBAIC0wLDAgKzEsMzggQEAKK05WSURJQSBUZWdyYTIwL1RlZ3JhMzAgU0xJTksgY29udHJvbGxlci4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAibnZpZGlhLHRlZ3JhMjAtc2xpbmsiLCAibnZpZGlhLHRlZ3JhMzAtc2xpbmsiLgorLSByZWc6IFNob3VsZCBjb250YWluIFNMSU5LIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoLgorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBTTElOSyBpbnRlcnJ1cHRzLgorLSBjbG9ja3MgOiBNdXN0IGNvbnRhaW4gb25lIGVudHJ5LCBmb3IgdGhlIG1vZHVsZSBjbG9jay4KKyAgU2VlIC4uL2Nsb2Nrcy9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCistIHJlc2V0cyA6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiByZXNldC1uYW1lcy4KKyAgU2VlIC4uL3Jlc2V0L3Jlc2V0LnR4dCBmb3IgZGV0YWlscy4KKy0gcmVzZXQtbmFtZXMgOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAtIHNwaQorLSBkbWFzIDogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIGNsb2NrLW5hbWVzLgorICBTZWUgLi4vZG1hL2RtYS50eHQgZm9yIGRldGFpbHMuCistIGRtYS1uYW1lcyA6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgIC0gcngKKyAgLSB0eAorCitSZWNvbW1lbmRlZCBwcm9wZXJ0aWVzOgorLSBzcGktbWF4LWZyZXF1ZW5jeTogRGVmaW5pdGlvbiBhcyBwZXIKKyAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLWJ1cy50eHQKKworRXhhbXBsZToKKworc3BpQDcwMDBkNjAwIHsKKwljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTIwLXNsaW5rIjsKKwlyZWcgPSA8MHg3MDAwZDYwMCAweDIwMD47CisJaW50ZXJydXB0cyA9IDwwIDgyIDB4MDQ+OworCXNwaS1tYXgtZnJlcXVlbmN5ID0gPDI1MDAwMDAwPjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwljbG9ja3MgPSA8JnRlZ3JhX2NhciA0ND47CisJcmVzZXRzID0gPCZ0ZWdyYV9jYXIgNDQ+OworCXJlc2V0LW5hbWVzID0gInNwaSI7CisJZG1hcyA9IDwmYXBiZG1hIDE2PiwgPCZhcGJkbWEgMTY+OworCWRtYS1uYW1lcyA9ICJyeCIsICJ0eCI7CisJc3RhdHVzID0gImRpc2FibGVkIjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL29tYXAtc3BpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvb21hcC1zcGkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiYTVmOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL29tYXAtc3BpLnR4dApAQCAtMCwwICsxLDQ3IEBACitPTUFQMisgTWNTUEkgZGV2aWNlCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOgorICAtICJ0aSxvbWFwMi1tY3NwaSIgZm9yIE9NQVAyICYgT01BUDMuCisgIC0gInRpLG9tYXA0LW1jc3BpIiBmb3IgT01BUDQrLgorLSB0aSxzcGktbnVtLWNzIDogTnVtYmVyIG9mIGNoaXBzZWxlY3Qgc3VwcG9ydGVkICBieSB0aGUgaW5zdGFuY2UuCistIHRpLGh3bW9kczogTmFtZSBvZiB0aGUgaHdtb2QgYXNzb2NpYXRlZCB0byB0aGUgTWNTUEkKKy0gdGkscGluZGlyLWQwLW91dC1kMS1pbjogU2VsZWN0IHRoZSBEMCBwaW4gYXMgb3V0cHV0IGFuZCBEMSBhcworCQkJICBpbnB1dC4gVGhlIGRlZmF1bHQgaXMgRDAgYXMgaW5wdXQgYW5kCisJCQkgIEQxIGFzIG91dHB1dC4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gZG1hczogTGlzdCBvZiBETUEgc3BlY2lmaWVycyB3aXRoIHRoZSBjb250cm9sbGVyIHNwZWNpZmljIGZvcm1hdAorCWFzIGRlc2NyaWJlZCBpbiB0aGUgZ2VuZXJpYyBETUEgY2xpZW50IGJpbmRpbmcuIEEgdHggYW5kIHJ4CisJc3BlY2lmaWVyIGlzIHJlcXVpcmVkIGZvciBlYWNoIGNoaXAgc2VsZWN0LgorLSBkbWEtbmFtZXM6IExpc3Qgb2YgRE1BIHJlcXVlc3QgbmFtZXMuIFRoZXNlIHN0cmluZ3MgY29ycmVzcG9uZAorCTE6MSB3aXRoIHRoZSBETUEgc3BlY2lmaWVycyBsaXN0ZWQgaW4gZG1hcy4gVGhlIHN0cmluZyBuYW1pbmcKKwlpcyB0byBiZSAicnhOIiBhbmQgInR4TiIgZm9yIFJYIGFuZCBUWCByZXF1ZXN0cywKKwlyZXNwZWN0aXZlbHksIHdoZXJlIE4gZXF1YWxzIHRoZSBjaGlwIHNlbGVjdCBudW1iZXIuCisKK0V4YW1wbGVzOgorCitbaHdtb2QgcG9wdWxhdGVkIERNQSByZXNvdXJjZXNdCisKK21jc3BpMTogbWNzcGlAMSB7CisgICAgI2FkZHJlc3MtY2VsbHMgPSA8MT47CisgICAgI3NpemUtY2VsbHMgPSA8MD47CisgICAgY29tcGF0aWJsZSA9ICJ0aSxvbWFwNC1tY3NwaSI7CisgICAgdGksaHdtb2RzID0gIm1jc3BpMSI7CisgICAgdGksc3BpLW51bS1jcyA9IDw0PjsKK307CisKK1tnZW5lcmljIERNQSByZXF1ZXN0IGJpbmRpbmddCisKK21jc3BpMTogbWNzcGlAMSB7CisgICAgI2FkZHJlc3MtY2VsbHMgPSA8MT47CisgICAgI3NpemUtY2VsbHMgPSA8MD47CisgICAgY29tcGF0aWJsZSA9ICJ0aSxvbWFwNC1tY3NwaSI7CisgICAgdGksaHdtb2RzID0gIm1jc3BpMSI7CisgICAgdGksc3BpLW51bS1jcyA9IDwyPjsKKyAgICBkbWFzID0gPCZlZG1hIDQyCisJICAgICZlZG1hIDQzCisJICAgICZlZG1hIDQ0CisJICAgICZlZG1hIDQ1PjsKKyAgICBkbWEtbmFtZXMgPSAidHgwIiwgInJ4MCIsICJ0eDEiLCAicngxIjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3Fjb20sc3BpLXF1cC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3Fjb20sc3BpLXF1cC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWMwOTA3NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvcWNvbSxzcGktcXVwLnR4dApAQCAtMCwwICsxLDEwMyBAQAorUXVhbGNvbW0gVW5pdmVyc2FsIFBlcmlwaGVyYWwgKFFVUCkgU2VyaWFsIFBlcmlwaGVyYWwgSW50ZXJmYWNlIChTUEkpCisKK1RoZSBRVVAgY29yZSBpcyBhbiBBSEIgc2xhdmUgdGhhdCBwcm92aWRlcyBhIGNvbW1vbiBkYXRhIHBhdGggKGFuIG91dHB1dCBGSUZPCithbmQgYW4gaW5wdXQgRklGTykgZm9yIHNlcmlhbCBwZXJpcGhlcmFsIGludGVyZmFjZSAoU1BJKSBtaW5pLWNvcmUuCisKK1NQSSBpbiBtYXN0ZXIgbW9kZSBzdXBwb3J0cyB1cCB0byA1ME1IeiwgdXAgdG8gZm91ciBjaGlwIHNlbGVjdHMsIHByb2dyYW1tYWJsZQorZGF0YSBwYXRoIGZyb20gNCBiaXRzIHRvIDMyIGJpdHMgYW5kIG51bWVyb3VzIHByb3RvY29sIHZhcmlhbnRzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAgICAgU2hvdWxkIGNvbnRhaW46CisJCSAgInFjb20sc3BpLXF1cC12MS4xLjEiIGZvciA4NjYwLCA4OTYwIGFuZCA4MDY0LgorCQkgICJxY29tLHNwaS1xdXAtdjIuMS4xIiBmb3IgODk3NCBhbmQgbGF0ZXIKKwkJICAicWNvbSxzcGktcXVwLXYyLjIuMSIgZm9yIDg5NzQgdjIgYW5kIGxhdGVyLgorCistIHJlZzogICAgICAgICAgICBTaG91bGQgY29udGFpbiBiYXNlIHJlZ2lzdGVyIGxvY2F0aW9uIGFuZCBsZW5ndGgKKy0gaW50ZXJydXB0czogICAgIEludGVycnVwdCBudW1iZXIgdXNlZCBieSB0aGlzIGNvbnRyb2xsZXIKKworLSBjbG9ja3M6ICAgICAgICAgU2hvdWxkIGNvbnRhaW4gdGhlIGNvcmUgY2xvY2sgYW5kIHRoZSBBSEIgY2xvY2suCistIGNsb2NrLW5hbWVzOiAgICBTaG91bGQgYmUgImNvcmUiIGZvciB0aGUgY29yZSBjbG9jayBhbmQgImlmYWNlIiBmb3IgdGhlCisgICAgICAgICAgICAgICAgICBBSEIgY2xvY2suCisKKy0gI2FkZHJlc3MtY2VsbHM6IE51bWJlciBvZiBjZWxscyByZXF1aXJlZCB0byBkZWZpbmUgYSBjaGlwIHNlbGVjdAorICAgICAgICAgICAgICAgICAgYWRkcmVzcyBvbiB0aGUgU1BJIGJ1cy4gU2hvdWxkIGJlIHNldCB0byAxLgorLSAjc2l6ZS1jZWxsczogICAgU2hvdWxkIGJlIHplcm8uCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHNwaS1tYXgtZnJlcXVlbmN5OiBTcGVjaWZpZXMgbWF4aW11bSBTUEkgY2xvY2sgZnJlcXVlbmN5LAorICAgICAgICAgICAgICAgICAgICAgVW5pdHMgLSBIei4gRGVmaW5pdGlvbiBhcyBwZXIKKyAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLWJ1cy50eHQKKy0gbnVtLWNzOgl0b3RhbCBudW1iZXIgb2YgY2hpcHNlbGVjdHMKKy0gY3MtZ3Bpb3M6CXNob3VsZCBzcGVjaWZ5IEdQSU9zIHVzZWQgZm9yIGNoaXBzZWxlY3RzLgorCQlUaGUgZ3Bpb3Mgd2lsbCBiZSByZWZlcnJlZCB0byBhcyByZWcgPSA8aW5kZXg+IGluIHRoZSBTUEkgY2hpbGQKKwkJbm9kZXMuICBJZiB1bnNwZWNpZmllZCwgYSBzaW5nbGUgU1BJIGRldmljZSB3aXRob3V0IGEgY2hpcAorCQlzZWxlY3QgY2FuIGJlIHVzZWQuCisKKy0gZG1hczogICAgICAgICBUd28gRE1BIGNoYW5uZWwgc3BlY2lmaWVycyBmb2xsb3dpbmcgdGhlIGNvbnZlbnRpb24gb3V0bGluZWQKKyAgICAgICAgICAgICAgICBpbiBiaW5kaW5ncy9kbWEvZG1hLnR4dAorLSBkbWEtbmFtZXM6ICAgIE5hbWVzIGZvciB0aGUgZG1hIGNoYW5uZWxzLCBpZiBwcmVzZW50LiBUaGVyZSBtdXN0IGJlIGF0CisgICAgICAgICAgICAgICAgbGVhc3Qgb25lIGNoYW5uZWwgbmFtZWQgInR4IiBmb3IgdHJhbnNtaXQgYW5kIG5hbWVkICJyeCIgZm9yCisgICAgICAgICAgICAgICAgcmVjZWl2ZS4KKworU1BJIHNsYXZlIG5vZGVzIG11c3QgYmUgY2hpbGRyZW4gb2YgdGhlIFNQSSBtYXN0ZXIgbm9kZSBhbmQgY2FuIGNvbnRhaW4KK3Byb3BlcnRpZXMgZGVzY3JpYmVkIGluIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLWJ1cy50eHQKKworRXhhbXBsZToKKworCXNwaV84OiBzcGlAZjk5NjQwMDAgeyAvKiBCTFNQMiBRVVAyICovCisKKwkJY29tcGF0aWJsZSA9ICJxY29tLHNwaS1xdXAtdjIiOworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJCXJlZyA9IDwweGY5OTY0MDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MCAxMDIgMD47CisJCXNwaS1tYXgtZnJlcXVlbmN5ID0gPDE5MjAwMDAwPjsKKworCQljbG9ja3MgPSA8JmdjYyBHQ0NfQkxTUDJfUVVQMl9TUElfQVBQU19DTEs+LCA8JmdjYyBHQ0NfQkxTUDJfQUhCX0NMSz47CisJCWNsb2NrLW5hbWVzID0gImNvcmUiLCAiaWZhY2UiOworCisJCWRtYXMgPSA8JmJsc3AxX2JhbSAxMz4sIDwmYmxzcDFfYmFtIDEyPjsKKwkJZG1hLW5hbWVzID0gInJ4IiwgInR4IjsKKworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JnNwaThfZGVmYXVsdD47CisKKwkJZGV2aWNlQDAgeworCQkJY29tcGF0aWJsZSA9ICJhcm0scGwwMjItZHVtbXkiOworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJCXJlZyA9IDwwPjsgLyogQ2hpcCBzZWxlY3QgMCAqLworCQkJc3BpLW1heC1mcmVxdWVuY3kgPSA8MTkyMDAwMDA+OworCQkJc3BpLWNwb2w7CisJCX07CisKKwkJZGV2aWNlQDEgeworCQkJY29tcGF0aWJsZSA9ICJhcm0scGwwMjItZHVtbXkiOworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJCXJlZyA9IDwxPjsgLyogQ2hpcCBzZWxlY3QgMSAqLworCQkJc3BpLW1heC1mcmVxdWVuY3kgPSA8OTYwMDAwMD47CisJCQlzcGktY3BoYTsKKwkJfTsKKworCQlkZXZpY2VAMiB7CisJCQljb21wYXRpYmxlID0gImFybSxwbDAyMi1kdW1teSI7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDE+OworCQkJcmVnID0gPDI+OyAvKiBDaGlwIHNlbGVjdCAyICovCisJCQlzcGktbWF4LWZyZXF1ZW5jeSA9IDwxOTIwMDAwMD47CisJCQlzcGktY3BvbDsKKwkJCXNwaS1jcGhhOworCQl9OworCisJCWRldmljZUAzIHsKKwkJCWNvbXBhdGlibGUgPSAiYXJtLHBsMDIyLWR1bW15IjsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MT47CisJCQlyZWcgPSA8Mz47IC8qIENoaXAgc2VsZWN0IDMgKi8KKwkJCXNwaS1tYXgtZnJlcXVlbmN5ID0gPDE5MjAwMDAwPjsKKwkJCXNwaS1jcG9sOworCQkJc3BpLWNwaGE7CisJCQlzcGktY3MtaGlnaDsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zaC1oc3BpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc2gtaHNwaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE5YmFkNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc2gtaHNwaS50eHQKQEAgLTAsMCArMSwyOSBAQAorUmVuZXNhcyBIU1BJLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlICAgICAgIDogInJlbmVzYXMsaHNwaS08c29jdHlwZT4iLCAicmVuZXNhcyxoc3BpIiBhcyBmYWxsYmFjay4KKwkJICAgICBFeGFtcGxlcyB3aXRoIHNvY3R5cGVzIGFyZToKKwkJICAgICAgIC0gInJlbmVzYXMsaHNwaS1yOGE3Nzc4IiAoUi1DYXIgTTEpCisJCSAgICAgICAtICJyZW5lc2FzLGhzcGktcjhhNzc3OSIgKFItQ2FyIEgxKQorLSByZWcgICAgICAgICAgICAgIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorLSBpbnRlcnJ1cHQtcGFyZW50IDogVGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGF0CisJCSAgICAgc2VydmljZXMgaW50ZXJydXB0cyBmb3IgdGhpcyBkZXZpY2UKKy0gaW50ZXJydXB0cyAgICAgICA6IEludGVycnVwdCBzcGVjaWZpZXIKKy0gI2FkZHJlc3MtY2VsbHMgICA6IE11c3QgYmUgPDE+CistICNzaXplLWNlbGxzICAgICAgOiBNdXN0IGJlIDwwPgorCitQaW5jdHJsIHByb3BlcnRpZXMgbWlnaHQgYmUgbmVlZGVkLCB0b28uICBTZWUKK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3JlbmVzYXMsKi4KKworRXhhbXBsZToKKworCWhzcGkwOiBzcGlAZmZmYzcwMDAgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMsaHNwaS1yOGE3Nzc4IiwgInJlbmVzYXMsaHNwaSI7CisJCXJlZyA9IDwweGZmZmM3MDAwIDB4MTg+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZnaWM+OworCQlpbnRlcnJ1cHRzID0gPDAgNjMgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJc3RhdHVzID0gImRpc2FibGVkIjsKKwl9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NoLW1zaW9mLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc2gtbXNpb2YudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwNTA3NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NoLW1zaW9mLnR4dApAQCAtMCwwICsxLDcxIEBACitSZW5lc2FzIE1TSU9GIHNwaSBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgICAgICAgICAgIDogInJlbmVzYXMsbXNpb2YtPHNvY3R5cGU+IiBmb3IgU29DcywKKwkJCSAicmVuZXNhcyxzaC1tc2lvZiIgZm9yIFN1cGVySCwgb3IKKwkJCSAicmVuZXNhcyxzaC1tb2JpbGUtbXNpb2YiIGZvciBTSCBNb2JpbGUgc2VyaWVzLgorCQkJIEV4YW1wbGVzIHdpdGggc29jdHlwZXMgYXJlOgorCQkJICJyZW5lc2FzLG1zaW9mLXI4YTc3OTAiIChSLUNhciBIMikKKwkJCSAicmVuZXNhcyxtc2lvZi1yOGE3NzkxIiAoUi1DYXIgTTItVykKKwkJCSAicmVuZXNhcyxtc2lvZi1yOGE3NzkyIiAoUi1DYXIgVjJIKQorCQkJICJyZW5lc2FzLG1zaW9mLXI4YTc3OTMiIChSLUNhciBNMi1OKQorCQkJICJyZW5lc2FzLG1zaW9mLXI4YTc3OTQiIChSLUNhciBFMikKKy0gcmVnICAgICAgICAgICAgICAgICAgOiBBIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgbGVuZ3RocyBvZiB0aGUgcmVnaXN0ZXIgc2V0cyBmb3IKKwkJCSB0aGUgZGV2aWNlLgorCQkJIElmIG9ubHkgb25lIHJlZ2lzdGVyIHNldCBpcyBwcmVzZW50LCBpdCBpcyB0byBiZSB1c2VkCisJCQkgYnkgYm90aCB0aGUgQ1BVIGFuZCB0aGUgRE1BIGVuZ2luZS4KKwkJCSBJZiB0d28gcmVnaXN0ZXIgc2V0cyBhcmUgcHJlc2VudCwgdGhlIGZpcnN0IGlzIHRvIGJlCisJCQkgdXNlZCBieSB0aGUgQ1BVLCBhbmQgdGhlIHNlY29uZCBpcyB0byBiZSB1c2VkIGJ5IHRoZQorCQkJIERNQSBlbmdpbmUuCistIGludGVycnVwdC1wYXJlbnQgICAgIDogVGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGF0CisJCQkgc2VydmljZXMgaW50ZXJydXB0cyBmb3IgdGhpcyBkZXZpY2UKKy0gaW50ZXJydXB0cyAgICAgICAgICAgOiBJbnRlcnJ1cHQgc3BlY2lmaWVyCistICNhZGRyZXNzLWNlbGxzICAgICAgIDogTXVzdCBiZSA8MT4KKy0gI3NpemUtY2VsbHMgICAgICAgICAgOiBNdXN0IGJlIDwwPgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjbG9ja3MgICAgICAgICAgICAgICA6IE11c3QgY29udGFpbiBhIHJlZmVyZW5jZSB0byB0aGUgZnVuY3Rpb25hbCBjbG9jay4KKy0gbnVtLWNzICAgICAgICAgICAgICAgOiBUb3RhbCBudW1iZXIgb2YgY2hpcC1zZWxlY3RzIChkZWZhdWx0IGlzIDEpCistIGRtYXMgICAgICAgICAgICAgICAgIDogTXVzdCBjb250YWluIGEgbGlzdCBvZiB0d28gcmVmZXJlbmNlcyB0byBETUEKKwkJCSBzcGVjaWZpZXJzLCBvbmUgZm9yIHRyYW5zbWlzc2lvbiwgYW5kIG9uZSBmb3IKKwkJCSByZWNlcHRpb24uCistIGRtYS1uYW1lcyAgICAgICAgICAgIDogTXVzdCBjb250YWluIGEgbGlzdCBvZiB0d28gRE1BIG5hbWVzLCAidHgiIGFuZCAicngiLgorLSByZW5lc2FzLGR0ZGwgICAgICAgICA6IGRlbGF5IHN5bmMgc2lnbmFsIChzZXR1cCkgaW4gdHJhbnNtaXQgbW9kZS4KKwkJCSBNdXN0IGNvbnRhaW4gb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorCQkJIDAgICAobm8gYml0IGRlbGF5KQorCQkJIDUwICAoMC41LWNsb2NrLWN5Y2xlIGRlbGF5KQorCQkJIDEwMCAoMS1jbG9jay1jeWNsZSBkZWxheSkKKwkJCSAxNTAgKDEuNS1jbG9jay1jeWNsZSBkZWxheSkKKwkJCSAyMDAgKDItY2xvY2stY3ljbGUgZGVsYXkpCisKKy0gcmVuZXNhcyxzeW5jZGwgICAgICAgOiBkZWxheSBzeW5jIHNpZ25hbCAoaG9sZCkgaW4gdHJhbnNtaXQgbW9kZS4KKwkJCSBNdXN0IGNvbnRhaW4gb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorCQkJIDAgICAobm8gYml0IGRlbGF5KQorCQkJIDUwICAoMC41LWNsb2NrLWN5Y2xlIGRlbGF5KQorCQkJIDEwMCAoMS1jbG9jay1jeWNsZSBkZWxheSkKKwkJCSAxNTAgKDEuNS1jbG9jay1jeWNsZSBkZWxheSkKKwkJCSAyMDAgKDItY2xvY2stY3ljbGUgZGVsYXkpCisJCQkgMzAwICgzLWNsb2NrLWN5Y2xlIGRlbGF5KQorCitPcHRpb25hbCBwcm9wZXJ0aWVzLCBkZXByZWNhdGVkIGZvciBzb2N0eXBlLXNwZWNpZmljIGJpbmRpbmdzOgorLSByZW5lc2FzLHR4LWZpZm8tc2l6ZSA6IE92ZXJyaWRlcyB0aGUgZGVmYXVsdCB0eCBmaWZvIHNpemUgZ2l2ZW4gaW4gd29yZHMKKwkJCSAoZGVmYXVsdCBpcyA2NCkKKy0gcmVuZXNhcyxyeC1maWZvLXNpemUgOiBPdmVycmlkZXMgdGhlIGRlZmF1bHQgcnggZmlmbyBzaXplIGdpdmVuIGluIHdvcmRzCisJCQkgKGRlZmF1bHQgaXMgNjQpCisKK1BpbmN0cmwgcHJvcGVydGllcyBtaWdodCBiZSBuZWVkZWQsIHRvby4gIFNlZQorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcmVuZXNhcywqLgorCitFeGFtcGxlOgorCisJbXNpb2YwOiBzcGlAZTZlMjAwMDAgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMsbXNpb2YtcjhhNzc5MSI7CisJCXJlZyA9IDwwIDB4ZTZlMjAwMDAgMCAweDAwNjQ+OworCQlpbnRlcnJ1cHRzID0gPDAgMTU2IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQljbG9ja3MgPSA8Jm1zdHAwX2Nsa3MgUjhBNzc5MV9DTEtfTVNJT0YwPjsKKwkJZG1hcyA9IDwmZG1hYzAgMHg1MT4sIDwmZG1hYzAgMHg1Mj47CisJCWRtYS1uYW1lcyA9ICJ0eCIsICJyeCI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJc3RhdHVzID0gImRpc2FibGVkIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zbnBzLGR3LWFwYi1zc2kudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zbnBzLGR3LWFwYi1zc2kudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNGIzMTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NucHMsZHctYXBiLXNzaS50eHQKQEAgLTAsMCArMSwzMCBAQAorU3lub3BzeXMgRGVzaWduV2FyZSBBTUJBIDIuMCBTeW5jaHJvbm91cyBTZXJpYWwgSW50ZXJmYWNlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogInNucHMsZHctYXBiLXNzaSIKKy0gcmVnIDogVGhlIHJlZ2lzdGVyIGJhc2UgZm9yIHRoZSBjb250cm9sbGVyLgorLSBpbnRlcnJ1cHRzIDogT25lIGludGVycnVwdCwgdXNlZCBieSB0aGUgY29udHJvbGxlci4KKy0gI2FkZHJlc3MtY2VsbHMgOiA8MT4sIGFzIHJlcXVpcmVkIGJ5IGdlbmVyaWMgU1BJIGJpbmRpbmcuCistICNzaXplLWNlbGxzIDogPDA+LCBhbHNvIGFzIHJlcXVpcmVkIGJ5IGdlbmVyaWMgU1BJIGJpbmRpbmcuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNzLWdwaW9zIDogU3BlY2lmaWVzIHRoZSBncGlvIHBpcyB0byBiZSB1c2VkIGZvciBjaGlwc2VsZWN0cy4KKy0gbnVtLWNzIDogVGhlIG51bWJlciBvZiBjaGlwc2VsZWN0cy4gSWYgb21pdHRlZCwgdGhpcyB3aWxsIGRlZmF1bHQgdG8gNC4KKy0gcmVnLWlvLXdpZHRoIDogVGhlIEkvTyByZWdpc3RlciB3aWR0aCAoaW4gYnl0ZXMpIGltcGxlbWVudGVkIGJ5IHRoaXMKKyAgZGV2aWNlLiAgU3VwcG9ydGVkIHZhbHVlcyBhcmUgMiBvciA0ICh0aGUgZGVmYXVsdCkuCisKK0NoaWxkIG5vZGVzIGFzIHBlciB0aGUgZ2VuZXJpYyBTUEkgYmluZGluZy4KKworRXhhbXBsZToKKworCXNwaUBmZmYwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic25wcyxkdy1hcGItc3NpIjsKKwkJcmVnID0gPDB4ZmZmMDAwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDE1NCA0PjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQludW0tY3MgPSA8Mj47CisJCWNzLWdwaW9zID0gPCZncGlvMCAxMyAwPiwKKwkJCSAgIDwmZ3BpbzAgMTQgMD47CisJfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktYXRoNzkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktYXRoNzkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljNjk2ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1hdGg3OS50eHQKQEAgLTAsMCArMSwyNCBAQAorQmluZGluZyBmb3IgUXVhbGNvbW0gQXRoZXJvcyBBUjd4eHgvQVI5eHh4IFNQSSBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IGhhcyB0byBiZSAicWNhLDxzb2MtdHlwZT4tc3BpIiwgInFjYSxhcjcxMDAtc3BpIiBhcyBmYWxsYmFjay4KKy0gcmVnOiBCYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIGNvbnRyb2xsZXJzIG1lbW9yeSBhcmVhCistIGNsb2NrczogcGhhbmRsZSBvZiB0aGUgQUhCIGNsb2NrLgorLSBjbG9jay1uYW1lczogaGFzIHRvIGJlICJhaGIiLgorLSAjYWRkcmVzcy1jZWxsczogPDE+LCBhcyByZXF1aXJlZCBieSBnZW5lcmljIFNQSSBiaW5kaW5nLgorLSAjc2l6ZS1jZWxsczogPDA+LCBhbHNvIGFzIHJlcXVpcmVkIGJ5IGdlbmVyaWMgU1BJIGJpbmRpbmcuCisKK0NoaWxkIG5vZGVzIGFzIHBlciB0aGUgZ2VuZXJpYyBTUEkgYmluZGluZy4KKworRXhhbXBsZToKKworCXNwaUAxZjAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAicWNhLGFyOTEzMi1zcGkiLCAicWNhLGFyNzEwMC1zcGkiOworCQlyZWcgPSA8MHgxZjAwMDAwMCAweDEwPjsKKworCQljbG9ja3MgPSA8JnBsbCAyPjsKKwkJY2xvY2stbmFtZXMgPSAiYWhiIjsKKworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLWJ1cy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1idXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiYWE4NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1idXMudHh0CkBAIC0wLDAgKzEsOTQgQEAKK1NQSSAoU2VyaWFsIFBlcmlwaGVyYWwgSW50ZXJmYWNlKSBidXNzZXMKKworU1BJIGJ1c3NlcyBjYW4gYmUgZGVzY3JpYmVkIHdpdGggYSBub2RlIGZvciB0aGUgU1BJIG1hc3RlciBkZXZpY2UKK2FuZCBhIHNldCBvZiBjaGlsZCBub2RlcyBmb3IgZWFjaCBTUEkgc2xhdmUgb24gdGhlIGJ1cy4gIEZvciB0aGlzCitkaXNjdXNzaW9uLCBpdCBpcyBhc3N1bWVkIHRoYXQgdGhlIHN5c3RlbSdzIFNQSSBjb250cm9sbGVyIGlzIGluCitTUEkgbWFzdGVyIG1vZGUuICBUaGlzIGJpbmRpbmcgZG9lcyBub3QgZGVzY3JpYmUgU1BJIGNvbnRyb2xsZXJzCitpbiBzbGF2ZSBtb2RlLgorCitUaGUgU1BJIG1hc3RlciBub2RlIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKKy0gI2FkZHJlc3MtY2VsbHMgIC0gbnVtYmVyIG9mIGNlbGxzIHJlcXVpcmVkIHRvIGRlZmluZSBhIGNoaXAgc2VsZWN0CisgICAgCQlhZGRyZXNzIG9uIHRoZSBTUEkgYnVzLgorLSAjc2l6ZS1jZWxscyAgICAgLSBzaG91bGQgYmUgemVyby4KKy0gY29tcGF0aWJsZSAgICAgIC0gbmFtZSBvZiBTUEkgYnVzIGNvbnRyb2xsZXIgZm9sbG93aW5nIGdlbmVyaWMgbmFtZXMKKyAgICAJCXJlY29tbWVuZGVkIHByYWN0aWNlLgorLSBjcy1ncGlvcwkgIC0gKG9wdGlvbmFsKSBncGlvcyBjaGlwIHNlbGVjdC4KK05vIG90aGVyIHByb3BlcnRpZXMgYXJlIHJlcXVpcmVkIGluIHRoZSBTUEkgYnVzIG5vZGUuICBJdCBpcyBhc3N1bWVkCit0aGF0IGEgZHJpdmVyIGZvciBhbiBTUEkgYnVzIGRldmljZSB3aWxsIHVuZGVyc3RhbmQgdGhhdCBpdCBpcyBhbiBTUEkgYnVzLgorSG93ZXZlciwgdGhlIGJpbmRpbmcgZG9lcyBub3QgYXR0ZW1wdCB0byBkZWZpbmUgdGhlIHNwZWNpZmljIG1ldGhvZCBmb3IKK2Fzc2lnbmluZyBjaGlwIHNlbGVjdCBudW1iZXJzLiAgU2luY2UgU1BJIGNoaXAgc2VsZWN0IGNvbmZpZ3VyYXRpb24gaXMKK2ZsZXhpYmxlIGFuZCBub24tc3RhbmRhcmRpemVkLCBpdCBpcyBsZWZ0IG91dCBvZiB0aGlzIGJpbmRpbmcgd2l0aCB0aGUKK2Fzc3VtcHRpb24gdGhhdCBib2FyZCBzcGVjaWZpYyBwbGF0Zm9ybSBjb2RlIHdpbGwgYmUgdXNlZCB0byBtYW5hZ2UKK2NoaXAgc2VsZWN0cy4gIEluZGl2aWR1YWwgZHJpdmVycyBjYW4gZGVmaW5lIGFkZGl0aW9uYWwgcHJvcGVydGllcyB0bworc3VwcG9ydCBkZXNjcmliaW5nIHRoZSBjaGlwIHNlbGVjdCBsYXlvdXQuCisKK09wdGlvbmFsIHByb3BlcnR5OgorLSBudW0tY3MgOiB0b3RhbCBudW1iZXIgb2YgY2hpcHNlbGVjdHMKKworSWYgY3MtZ3Bpb3MgaXMgdXNlZCB0aGUgbnVtYmVyIG9mIGNoaXAgc2VsZWN0IHdpbGwgYXV0b21hdGljYWxseSBpbmNyZWFzZWQKK3dpdGggbWF4KGNzLWdwaW9zID4gaHcgY3MpCisKK1NvIGlmIGZvciBleGFtcGxlIHRoZSBjb250cm9sbGVyIGhhcyAyIENTIGxpbmVzLCBhbmQgdGhlIGNzLWdwaW9zCitwcm9wZXJ0eSBsb29rcyBsaWtlIHRoaXM6CisKK2NzLWdwaW9zID0gPCZncGlvMSAwIDA+IDwwPiA8JmdwaW8xIDEgMD4gPCZncGlvMSAyIDA+OworCitUaGVuIGl0IHNob3VsZCBiZSBjb25maWd1cmVkIHNvIHRoYXQgbnVtX2NoaXBzZWxlY3QgPSA0IHdpdGggdGhlCitmb2xsb3dpbmcgbWFwcGluZzoKKworY3MwIDogJmdwaW8xIDAgMAorY3MxIDogbmF0aXZlCitjczIgOiAmZ3BpbzEgMSAwCitjczMgOiAmZ3BpbzEgMiAwCisKK1NQSSBzbGF2ZSBub2RlcyBtdXN0IGJlIGNoaWxkcmVuIG9mIHRoZSBTUEkgbWFzdGVyIG5vZGUgYW5kIGNhbgorY29udGFpbiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMuCistIHJlZyAgICAgICAgICAgICAtIChyZXF1aXJlZCkgY2hpcCBzZWxlY3QgYWRkcmVzcyBvZiBkZXZpY2UuCistIGNvbXBhdGlibGUgICAgICAtIChyZXF1aXJlZCkgbmFtZSBvZiBTUEkgZGV2aWNlIGZvbGxvd2luZyBnZW5lcmljIG5hbWVzCisgICAgCQlyZWNvbW1lbmRlZCBwcmFjdGljZQorLSBzcGktbWF4LWZyZXF1ZW5jeSAtIChyZXF1aXJlZCkgTWF4aW11bSBTUEkgY2xvY2tpbmcgc3BlZWQgb2YgZGV2aWNlIGluIEh6CistIHNwaS1jcG9sICAgICAgICAtIChvcHRpb25hbCkgRW1wdHkgcHJvcGVydHkgaW5kaWNhdGluZyBkZXZpY2UgcmVxdWlyZXMKKyAgICAJCWludmVyc2UgY2xvY2sgcG9sYXJpdHkgKENQT0wpIG1vZGUKKy0gc3BpLWNwaGEgICAgICAgIC0gKG9wdGlvbmFsKSBFbXB0eSBwcm9wZXJ0eSBpbmRpY2F0aW5nIGRldmljZSByZXF1aXJlcworICAgIAkJc2hpZnRlZCBjbG9jayBwaGFzZSAoQ1BIQSkgbW9kZQorLSBzcGktY3MtaGlnaCAgICAgLSAob3B0aW9uYWwpIEVtcHR5IHByb3BlcnR5IGluZGljYXRpbmcgZGV2aWNlIHJlcXVpcmVzCisgICAgCQljaGlwIHNlbGVjdCBhY3RpdmUgaGlnaAorLSBzcGktM3dpcmUgICAgICAgLSAob3B0aW9uYWwpIEVtcHR5IHByb3BlcnR5IGluZGljYXRpbmcgZGV2aWNlIHJlcXVpcmVzCisgICAgCQkgICAgMy13aXJlIG1vZGUuCistIHNwaS1sc2ItZmlyc3QgICAtIChvcHRpb25hbCkgRW1wdHkgcHJvcGVydHkgaW5kaWNhdGluZyBkZXZpY2UgcmVxdWlyZXMKKwkJTFNCIGZpcnN0IG1vZGUuCistIHNwaS10eC1idXMtd2lkdGggLSAob3B0aW9uYWwpIFRoZSBidXMgd2lkdGgobnVtYmVyIG9mIGRhdGEgd2lyZXMpIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICB1c2VkIGZvciBNT1NJLiBEZWZhdWx0cyB0byAxIGlmIG5vdCBwcmVzZW50LgorLSBzcGktcngtYnVzLXdpZHRoIC0gKG9wdGlvbmFsKSBUaGUgYnVzIHdpZHRoKG51bWJlciBvZiBkYXRhIHdpcmVzKSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgdXNlZCBmb3IgTUlTTy4gRGVmYXVsdHMgdG8gMSBpZiBub3QgcHJlc2VudC4KKworU29tZSBTUEkgY29udHJvbGxlcnMgYW5kIGRldmljZXMgc3VwcG9ydCBEdWFsIGFuZCBRdWFkIFNQSSB0cmFuc2ZlciBtb2RlLgorSXQgYWxsb3dzIGRhdGEgaW4gdGhlIFNQSSBzeXN0ZW0gdG8gYmUgdHJhbnNmZXJyZWQgaW4gMiB3aXJlcyhEVUFMKSBvciA0IHdpcmVzKFFVQUQpLgorTm93IHRoZSB2YWx1ZSB0aGF0IHNwaS10eC1idXMtd2lkdGggYW5kIHNwaS1yeC1idXMtd2lkdGggY2FuIHJlY2VpdmUgaXMKK29ubHkgMShTSU5HTEUpLCAyKERVQUwpIGFuZCA0KFFVQUQpLgorRHVhbC9RdWFkIG1vZGUgaXMgbm90IGFsbG93ZWQgd2hlbiAzLXdpcmUgbW9kZSBpcyB1c2VkLgorCitJZiBhIGdwaW8gY2hpcHNlbGVjdCBpcyB1c2VkIGZvciB0aGUgU1BJIHNsYXZlIHRoZSBncGlvIG51bWJlciB3aWxsIGJlIHBhc3NlZAordmlhIHRoZSBTUEkgbWFzdGVyIG5vZGUgY3MtZ3Bpb3MgcHJvcGVydHkuCisKK1NQSSBleGFtcGxlIGZvciBhbiBNUEM1MjAwIFNQSSBidXM6CisJc3BpQGYwMCB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJY29tcGF0aWJsZSA9ICJmc2wsbXBjNTIwMGItc3BpIiwiZnNsLG1wYzUyMDAtc3BpIjsKKwkJcmVnID0gPDB4ZjAwIDB4MjA+OworCQlpbnRlcnJ1cHRzID0gPDIgMTMgMCAyIDE0IDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZtcGM1MjAwX3BpYz47CisKKwkJZXRoZXJuZXQtc3dpdGNoQDAgeworCQkJY29tcGF0aWJsZSA9ICJtaWNyZWwsa3M4OTk1bSI7CisJCQlzcGktbWF4LWZyZXF1ZW5jeSA9IDwxMDAwMDAwPjsKKwkJCXJlZyA9IDwwPjsKKwkJfTsKKworCQljb2RlY0AxIHsKKwkJCWNvbXBhdGlibGUgPSAidGksdGx2MzIwYWljMjYiOworCQkJc3BpLW1heC1mcmVxdWVuY3kgPSA8MTAwMDAwPjsKKwkJCXJlZyA9IDwxPjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktY2FkZW5jZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1jYWRlbmNlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGYwOTE0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktY2FkZW5jZS50eHQKQEAgLTAsMCArMSwzMSBAQAorQ2FkZW5jZSBTUEkgY29udHJvbGxlciBEZXZpY2UgVHJlZSBCaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlCQk6IFNob3VsZCBiZSAiY2RucyxzcGktcjFwNiIgb3IgInhsbngsenlucS1zcGktcjFwNiIuCistIHJlZwkJCTogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIFNQSSByZWdpc3RlcnMgbWFwLgorLSBpbnRlcnJ1cHRzCQk6IFByb3BlcnR5IHdpdGggYSB2YWx1ZSBkZXNjcmliaW5nIHRoZSBpbnRlcnJ1cHQKKwkJCSAgbnVtYmVyLgorLSBpbnRlcnJ1cHQtcGFyZW50CTogTXVzdCBiZSBjb3JlIGludGVycnVwdCBjb250cm9sbGVyCistIGNsb2NrLW5hbWVzCQk6IExpc3Qgb2YgaW5wdXQgY2xvY2sgbmFtZXMgLSAicmVmX2NsayIsICJwY2xrIgorCQkJICAoU2VlIGNsb2NrIGJpbmRpbmdzIGZvciBkZXRhaWxzKS4KKy0gY2xvY2tzCQk6IENsb2NrIHBoYW5kbGVzIChzZWUgY2xvY2sgYmluZGluZ3MgZm9yIGRldGFpbHMpLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBudW0tY3MJCTogTnVtYmVyIG9mIGNoaXAgc2VsZWN0cyB1c2VkLgorCQkJICBJZiBhIGRlY29kZXIgaXMgdXNlZCwgdGhpcyB3aWxsIGJlIHRoZSBudW1iZXIgb2YKKwkJCSAgY2hpcCBzZWxlY3RzIGFmdGVyIHRoZSBkZWNvZGVyLgorLSBpcy1kZWNvZGVkLWNzCQk6IEZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciBkZWNvZGVyIGlzIHVzZWQgb3Igbm90LgorCitFeGFtcGxlOgorCisJc3BpQGUwMDA3MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJ4bG54LHp5bnEtc3BpLXIxcDYiOworCQljbG9jay1uYW1lcyA9ICJyZWZfY2xrIiwgInBjbGsiOworCQljbG9ja3MgPSA8JmNsa2MgMjY+LCA8JmNsa2MgMzU+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpbnRjPjsKKwkJaW50ZXJydXB0cyA9IDwwIDQ5IDQ+OworCQludW0tY3MgPSA8ND47CisJCWlzLWRlY29kZWQtY3MgPSA8MD47CisJCXJlZyA9IDwweGUwMDA3MDAwIDB4MTAwMD47CisJfSA7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1kYXZpbmNpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLWRhdmluY2kudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxZTkxNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1kYXZpbmNpLnR4dApAQCAtMCwwICsxLDkwIEBACitEYXZpbmNpIFNQSSBjb250cm9sbGVyIGRldmljZSBiaW5kaW5ncworCitMaW5rcyBvbiBETToKK0tleXN0b25lIDIgLSBodHRwOi8vd3d3LnRpLmNvbS9saXQvdWcvc3BydWdwMmEvc3BydWdwMmEucGRmCitkbTY0NHggLSBodHRwOi8vd3d3LnRpLmNvbS9saXQvdWcvc3BydWUzMmEvc3BydWUzMmEucGRmCitPTUFQLUwxMzgvZGE4MzAgLSBodHRwOi8vd3d3LnRpLmNvbS9saXQvdWcvc3BydWg3N2Evc3BydWg3N2EucGRmCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistICNhZGRyZXNzLWNlbGxzOiBudW1iZXIgb2YgY2VsbHMgcmVxdWlyZWQgdG8gZGVmaW5lIGEgY2hpcCBzZWxlY3QKKwlhZGRyZXNzIG9uIHRoZSBTUEkgYnVzLiBTaG91bGQgYmUgc2V0IHRvIDEuCistICNzaXplLWNlbGxzOiBzaG91bGQgYmUgemVyby4KKy0gY29tcGF0aWJsZToKKwktICJ0aSxkbTY0NDEtc3BpIiBmb3IgU1BJIHVzZWQgc2ltaWxhciB0byB0aGF0IG9uIERNNjQ0eCBTb0MgZmFtaWx5CisJLSAidGksZGE4MzAtc3BpIiBmb3IgU1BJIHVzZWQgc2ltaWxhciB0byB0aGF0IG9uIERBOHh4IFNvQyBmYW1pbHkKKwktICJ0aSxrZXlzdG9uZS1zcGkiIGZvciBTUEkgdXNlZCBzaW1pbGFyIHRvIHRoYXQgb24gS2V5c3RvbmUyIFNvQworCQlmYW1pbHkKKy0gcmVnOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiBTUEkgY29udHJvbGxlciByZWdpc3RlciBzcGFjZQorLSBudW0tY3M6IE51bWJlciBvZiBjaGlwIHNlbGVjdHMuIFRoaXMgaW5jbHVkZXMgaW50ZXJuYWwgYXMgd2VsbCBhcworCUdQSU8gY2hpcCBzZWxlY3RzLgorLSB0aSxkYXZpbmNpLXNwaS1pbnRyLWxpbmU6IGludGVycnVwdCBsaW5lIHVzZWQgdG8gY29ubmVjdCB0aGUgU1BJCisJSVAgdG8gdGhlIGludGVycnVwdCBjb250cm9sbGVyIHdpdGhpbiB0aGUgU29DLiBQb3NzaWJsZSB2YWx1ZXMKKwlhcmUgMCBhbmQgMS4gTWFudWFsIHNheXMgb25lIG9mIHRoZSB0d28gcG9zc2libGUgaW50ZXJydXB0CisJbGluZXMgY2FuIGJlIHRpZWQgdG8gdGhlIGludGVycnVwdCBjb250cm9sbGVyLiBTZXQgdGhpcworCWJhc2VkIG9uIGEgc3BlY2lmYyBTb0MgY29uZmlndXJhdGlvbi4KKy0gaW50ZXJydXB0czogaW50ZXJydXB0IG51bWJlciBtYXBwZWQgdG8gQ1BVLgorLSBjbG9ja3M6IHNwaSBjbGsgcGhhbmRsZQorCitPcHRpb25hbDoKKy0gY3MtZ3Bpb3M6IGdwaW8gY2hpcCBzZWxlY3RzCisJRm9yIGV4YW1wbGUgdG8gaGF2ZSAzIGludGVybmFsIENTIGFuZCAyIEdQSU8gQ1MsIHVzZXIgY291bGQgZGVmaW5lCisJY3MtZ3Bpb3MgPSA8MD4sIDwwPiwgPDA+LCA8JmdwaW8xIDMwIDA+LCA8JmdwaW8xIDMxIDA+OworCXdoZXJlIGZpcnN0IHRocmVlIGFyZSBpbnRlcm5hbCBDUyBhbmQgbGFzdCB0d28gYXJlIEdQSU8gQ1MuCisKK09wdGlvbmFsIHByb3BlcnRpZXMgZm9yIHNsYXZlIGRldmljZXM6CitTUEkgc2xhdmUgbm9kZXMgY2FuIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzLgorTm90IGFsbCBTUEkgUGVyaXBoZXJhbHMgZnJvbSBUZXhhcyBJbnN0cnVtZW50cyBzdXBwb3J0IHRoaXMuCitQbGVhc2UgY2hlY2sgU1BJIHBlcmlwaGVyYWwgZG9jdW1lbnRhdGlvbiBmb3IgYSBkZXZpY2UgYmVmb3JlIHVzaW5nIHRoZXNlLgorCistIHRpLHNwaS13ZGVsYXkgOiBkZWxheSBiZXR3ZWVuIHRyYW5zbWlzc2lvbiBvZiB3b3JkcworCShTUElGTVRuLldERUxBWSwgU1BJREFUMS5XREVMKSBtdXN0IGJlIHNwZWNpZmllZCBpbiBudW1iZXIgb2YgU1BJIG1vZHVsZQorCWNsb2NrIHBlcmlvZHMuCisKKwlkZWxheSA9IFdERUxBWSAqIFNQSV9tb2R1bGVfY2xvY2tfcGVyaW9kICsgMiAqIFNQSV9tb2R1bGVfY2xvY2tfcGVyaW9kCisKK0JlbG93IGlzIHRpbWluZyBkaWFncmFtIHdoaWNoIHNob3dzIGZ1bmN0aW9uYWwgbWVhbmluZyBvZgorInRpLHNwaS13ZGVsYXkiIHBhcmFtZXRlci4KKworICAgICAgICAgICAgICstKyArLSsgKy0rICstKyArLSsgICAgICAgICAgICAgICAgICAgICAgICAgICArLSsgKy0rICstKworU1BJX0NMSyAgICAgIHwgfCB8IHwgfCB8IHwgfCB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgfCB8IHwgfAorICArLS0tLS0tLS0tLSsgKy0rICstKyArLSsgKy0rICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICstKyArLSsgKy0KKworU1BJX1NPTUkvU0lNTystLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0KKyAgKy0tLS0tLS0tLS0rIHdvcmQxICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK3dvcmQyCisgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0RFTEFZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KKworRXhhbXBsZSBvZiBhIE5PUiBmbGFzaCBzbGF2ZSBkZXZpY2UgKG4yNXEwMzIpIGNvbm5lY3RlZCB0byBEYVZpbmNpCitTUEkgY29udHJvbGxlciBkZXZpY2Ugb3ZlciB0aGUgU1BJIGJ1cy4KKworc3BpMDpzcGlAMjBCRjAwMDAgeworCSNhZGRyZXNzLWNlbGxzCQkJPSA8MT47CisJI3NpemUtY2VsbHMJCQk9IDwwPjsKKwljb21wYXRpYmxlCQkJPSAidGksZG02NDQ2LXNwaSI7CisJcmVnCQkJCT0gPDB4MjBCRjAwMDAgMHgxMDAwPjsKKwludW0tY3MJCQkJPSA8ND47CisJdGksZGF2aW5jaS1zcGktaW50ci1saW5lCT0gPDA+OworCWludGVycnVwdHMJCQk9IDwzMzg+OworCWNsb2NrcwkJCQk9IDwmY2xrc3BpPjsKKworCWZsYXNoOiBuMjVxMDMyQDAgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCWNvbXBhdGlibGUgPSAic3QsbTI1cDMyIjsKKwkJc3BpLW1heC1mcmVxdWVuY3kgPSA8MjUwMDAwMDA+OworCQlyZWcgPSA8MD47CisJCXRpLHNwaS13ZGVsYXkgPSA8OD47CisKKwkJcGFydGl0aW9uQDAgeworCQkJbGFiZWwgPSAidS1ib290LXNwbCI7CisJCQlyZWcgPSA8MHgwIDB4ODAwMDA+OworCQkJcmVhZC1vbmx5OworCQl9OworCisJCXBhcnRpdGlvbkAxIHsKKwkJCWxhYmVsID0gInRlc3QiOworCQkJcmVnID0gPDB4ODAwMDAgMHgzODAwMDA+OworCQl9OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktZHcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktZHcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiNjNlZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1kdy50eHQKQEAgLTAsMCArMSwyNCBAQAorU3lub3BzeXMgRGVzaWduV2FyZSBTUEkgbWFzdGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAic25wcyxkZXNpZ253YXJlLXNwaSIKKy0gI2FkZHJlc3MtY2VsbHM6IHNlZSBzcGktYnVzLnR4dAorLSAjc2l6ZS1jZWxsczogc2VlIHNwaS1idXMudHh0CistIHJlZzogYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBzcGkgbWFzdGVyIHJlZ2lzdGVycworLSBpbnRlcnJ1cHRzOiBzaG91bGQgY29udGFpbiBvbmUgaW50ZXJydXB0CistIGNsb2Nrczogc3BpIGNsb2NrIHBoYW5kbGUKKy0gbnVtLWNzOiBzZWUgc3BpLWJ1cy50eHQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gY3MtZ3Bpb3M6IHNlZSBzcGktYnVzLnR4dAorCitFeGFtcGxlOgorCitzcGk6IHNwaUA0MDIwYTAwMCB7CisJY29tcGF0aWJsZSA9ICJzbnBzLGRlc2lnbndhcmUtc3BpIjsKKwlpbnRlcnJ1cHRzID0gPDExIDE+OworCXJlZyA9IDwweDQwMjBhMDAwIDB4MTAwMD47CisJY2xvY2tzID0gPCZwY2xrPjsKKwludW0tY3MgPSA8Mj47CisJY3MtZ3Bpb3MgPSA8JmJhbmthIDAgMD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktZnNsLWRzcGkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktZnNsLWRzcGkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNzdmODcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1mc2wtZHNwaS50eHQKQEAgLTAsMCArMSw1NyBAQAorQVJNIEZyZWVzY2FsZSBEU1BJIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJmc2wsdmY2MTAtZHNwaSIsICJmc2wsbHMxMDIxYS12MS4wLWRzcGkiLCAiZnNsLGxzMjA4NWEtZHNwaSIKKy0gcmVnIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorLSBpbnRlcnJ1cHRzIDogU2hvdWxkIGNvbnRhaW4gU1BJIGNvbnRyb2xsZXIgaW50ZXJydXB0CistIGNsb2NrczogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzogaGFuZGxlIHRvIGRzcGkgY2xvY2suCistIGNsb2NrLW5hbWVzOiBmcm9tIGNvbW1vbiBjbG9jayBiaW5kaW5nOiBTaGFsbCBiZSAiZHNwaSIuCistIHBpbmN0cmwtMDogcGluIGNvbnRyb2wgZ3JvdXAgdG8gYmUgdXNlZCBmb3IgdGhpcyBjb250cm9sbGVyLgorLSBwaW5jdHJsLW5hbWVzOiBtdXN0IGNvbnRhaW4gYSAiZGVmYXVsdCIgZW50cnkuCistIHNwaS1udW0tY2hpcHNlbGVjdHMgOiB0aGUgbnVtYmVyIG9mIHRoZSBjaGlwc2VsZWN0IHNpZ25hbHMuCistIGJ1cy1udW0gOiB0aGUgc2xhdmUgY2hpcCBjaGlwc2VsZWN0IHNpZ25hbCBudW1iZXIuCisKK09wdGlvbmFsIHByb3BlcnR5OgorLSBiaWctZW5kaWFuOiBJZiBwcmVzZW50IHRoZSBkc3BpIGRldmljZSdzIHJlZ2lzdGVycyBhcmUgaW1wbGVtZW50ZWQKKyAgaW4gYmlnIGVuZGlhbiBtb2RlLCBvdGhlcndpc2UgaW4gbmF0aXZlIG1vZGUoc2FtZSB3aXRoIENQVSksIGZvciBtb3JlCisgIGRldGFpbCBwbGVhc2Ugc2VlOiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVnbWFwL3JlZ21hcC50eHQuCisKK09wdGlvbmFsIFNQSSBzbGF2ZSBub2RlIHByb3BlcnRpZXM6CistIGZzbCxzcGktY3Mtc2NrLWRlbGF5OiBhIGRlbGF5IGluIG5hbm9zZWNvbmRzIGJldHdlZW4gYWN0aXZhdGluZyBjaGlwCisgIHNlbGVjdCBhbmQgdGhlIHN0YXJ0IG9mIGNsb2NrIHNpZ25hbCwgYXQgdGhlIHN0YXJ0IG9mIGEgdHJhbnNmZXIuCistIGZzbCxzcGktc2NrLWNzLWRlbGF5OiBhIGRlbGF5IGluIG5hbm9zZWNvbmRzIGJldHdlZW4gc3RvcHBpbmcgdGhlIGNsb2NrCisgIHNpZ25hbCBhbmQgZGVhY3RpdmF0aW5nIGNoaXAgc2VsZWN0LCBhdCB0aGUgZW5kIG9mIGEgdHJhbnNmZXIuCisKK0V4YW1wbGU6CisKK2RzcGkwQDQwMDJjMDAwIHsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwljb21wYXRpYmxlID0gImZzbCx2ZjYxMC1kc3BpIjsKKwlyZWcgPSA8MHg0MDAyYzAwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8MCA2NyAweDA0PjsKKwljbG9ja3MgPSA8JmNsa3MgVkY2MTBfQ0xLX0RTUEkwPjsKKwljbG9jay1uYW1lcyA9ICJkc3BpIjsKKwlzcGktbnVtLWNoaXBzZWxlY3RzID0gPDU+OworCWJ1cy1udW0gPSA8MD47CisJcGluY3RybC1uYW1lcyA9ICJkZWZhdWx0IjsKKwlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfZHNwaTBfMT47CisJYmlnLWVuZGlhbjsKKwlzdGF0dXMgPSAib2theSI7CisKKwlzZmxhc2g6IGF0MjZkZjA4MWFAMCB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJY29tcGF0aWJsZSA9ICJhdG1lbCxhdDI2ZGYwODFhIjsKKwkJc3BpLW1heC1mcmVxdWVuY3kgPSA8MTYwMDAwMDA+OworCQlzcGktY3BvbDsKKwkJc3BpLWNwaGE7CisJCXJlZyA9IDwwPjsKKwkJbGludXgsbW9kYWxpYXMgPSAibTI1cDgwIjsKKwkJbW9kYWwgPSAiYXQyNmRmMDgxYSI7CisJCWZzbCxzcGktY3Mtc2NrLWRlbGF5ID0gPDEwMD47CisJCWZzbCxzcGktc2NrLWNzLWRlbGF5ID0gPDUwPjsKKwl9OworfTsKKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1ncGlvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLWdwaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5NTYwM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1ncGlvLnR4dApAQCAtMCwwICsxLDMxIEBACitTUEktR1BJTyBkZXZpY2V0cmVlIGJpbmRpbmdzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAtIGNvbXBhdGlibGU6IHNob3VsZCBiZSBzZXQgdG8gInNwaS1ncGlvIgorIC0gI2FkZHJlc3MtY2VsbHM6IHNob3VsZCBiZSBzZXQgdG8gPDB4MT4KKyAtIHJhbmdlcworIC0gZ3Bpby1zY2s6IEdQSU8gc3BlYyBmb3IgdGhlIFNDSyBsaW5lIHRvIHVzZQorIC0gZ3Bpby1taXNvOiBHUElPIHNwZWMgZm9yIHRoZSBNSVNPIGxpbmUgdG8gdXNlCisgLSBncGlvLW1vc2k6IEdQSU8gc3BlYyBmb3IgdGhlIE1PU0kgbGluZSB0byB1c2UKKyAtIGNzLWdwaW9zOiBHUElPcyB0byB1c2UgZm9yIGNoaXBzZWxlY3QgbGluZXMuCisgICAgICAgICAgICAgTm90IG5lZWRlZCBpZiBudW0tY2hpcHNlbGVjdHMgPSA8MD4uCisgLSBudW0tY2hpcHNlbGVjdHM6IE51bWJlciBvZiBjaGlwc2VsZWN0IGxpbmVzLiBTaG91bGQgYmUgPDA+IGlmIGEgc2luZ2xlIGRldmljZQorICAgICAgICAgICAgICAgICAgICB3aXRoIG5vIGNoaXAgc2VsZWN0IGlzIGNvbm5lY3RlZC4KKworRXhhbXBsZToKKworCXNwaSB7CisJCWNvbXBhdGlibGUgPSAic3BpLWdwaW8iOworCQkjYWRkcmVzcy1jZWxscyA9IDwweDE+OworCQlyYW5nZXM7CisKKwkJZ3Bpby1zY2sgPSA8JmdwaW8gOTUgMD47CisJCWdwaW8tbWlzbyA9IDwmZ3BpbyA5OCAwPjsKKwkJZ3Bpby1tb3NpID0gPCZncGlvIDk3IDA+OworCQljcy1ncGlvcyA9IDwmZ3BpbyAxMjUgMD47CisJCW51bS1jaGlwc2VsZWN0cyA9IDwxPjsKKworCQkvKiBjbGllbnRzICovCisJfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktaW1nLXNwZmkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktaW1nLXNwZmkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5NGRiNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1pbWctc3BmaS50eHQKQEAgLTAsMCArMSwzOSBAQAorSU1HIFN5bmNocm9ub3VzIFBlcmlwaGVyYWwgRmxhc2ggSW50ZXJmYWNlIChTUEZJKSBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IE11c3QgYmUgImltZyxzcGZpIi4KKy0gcmVnOiBNdXN0IGNvbnRhaW4gdGhlIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBTUEZJIHJlZ2lzdGVycy4KKy0gaW50ZXJydXB0czogTXVzdCBjb250YWluIHRoZSBTUEZJIGludGVycnVwdC4KKy0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCisgIFNlZSAuLi9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCistIGNsb2NrLW5hbWVzOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAtIHNwZmk6IFNQSSBvcGVyYXRpbmcgY2xvY2sKKyAgLSBzeXM6IFNQSSBzeXN0ZW0gaW50ZXJmYWNlIGNsb2NrCistIGRtYXM6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBkbWEtbmFtZXMuCisgIFNlZSAuLi9kbWEvZG1hLnR4dCBmb3IgZGV0YWlscy4KKy0gZG1hLW5hbWVzOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAtIHJ4CisgIC0gdHgKKy0gY3MtZ3Bpb3M6IE11c3Qgc3BlY2lmeSB0aGUgR1BJT3MgdXNlZCBmb3IgY2hpcHNlbGVjdCBsaW5lcy4KKy0gI2FkZHJlc3MtY2VsbHM6IE11c3QgYmUgMS4KKy0gI3NpemUtY2VsbHM6IE11c3QgYmUgMC4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gaW1nLHN1cHBvcnRzLXF1YWQtbW9kZTogU2hvdWxkIGJlIHNldCBpZiB0aGUgaW50ZXJmYWNlIHN1cHBvcnRzIHF1YWQgbW9kZQorICBTUEkgdHJhbnNmZXJzLgorLSBzcGZpLW1heC1mcmVxdWVuY3k6IE1heGltdW0gc3BlZWQgc3VwcG9ydGVkIGJ5IHRoZSBzcGZpIGJsb2NrLgorCitFeGFtcGxlOgorCitzcGlAMTgxMDBmMDAgeworCWNvbXBhdGlibGUgPSAiaW1nLHNwZmkiOworCXJlZyA9IDwweDE4MTAwZjAwIDB4MTAwPjsKKwlpbnRlcnJ1cHRzID0gPEdJQ19TSEFSRUQgMjIgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJY2xvY2tzID0gPCZzcGlfY2xrPiwgPCZzeXN0ZW1fY2xrPjsKKwljbG9jay1uYW1lcyA9ICJzcGZpIiwgInN5cyI7CisJZG1hcyA9IDwmbWRjIDkgMHhmZmZmZmZmZiAwPiwgPCZtZGMgMTAgMHhmZmZmZmZmZiAwPjsKKwlkbWEtbmFtZXMgPSAicngiLCAidHgiOworCisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktbWVzb24udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktbWVzb24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiNTJhODYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1tZXNvbi50eHQKQEAgLTAsMCArMSwyMiBAQAorQW1sb2dpYyBNZXNvbiBTUEkgY29udHJvbGxlcnMKKworKiBTUElGQyAoU1BJIEZsYXNoIENvbnRyb2xsZXIpCisKK1RoZSBNZXNvbiBTUElGQyBpcyBhIGNvbnRyb2xsZXIgb3B0aW1pemVkIGZvciBjb21tdW5pY2F0aW9uIHdpdGggU1BJCitOT1IgbWVtb3JpZXMsIHdpdGhvdXQgRE1BIHN1cHBvcnQgYW5kIGEgNjQtYnl0ZSB1bmlmaWVkIHRyYW5zbWl0IC8KK3JlY2VpdmUgYnVmZmVyLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJhbWxvZ2ljLG1lc29uNi1zcGlmYyIKKyAtIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIGNvbnRyb2xsZXIgcmVnaXN0ZXJzCisgLSBjbG9ja3M6IHBoYW5kbGUgb2YgdGhlIGlucHV0IGNsb2NrIGZvciB0aGUgYmF1ZCByYXRlIGdlbmVyYXRvcgorIC0gI2FkZHJlc3MtY2VsbHM6IHNob3VsZCBiZSAxCisgLSAjc2l6ZS1jZWxsczogc2hvdWxkIGJlIDAKKworCXNwaUBjMTEwOGM4MCB7CisJCWNvbXBhdGlibGUgPSAiYW1sb2dpYyxtZXNvbjYtc3BpZmMiOworCQlyZWcgPSA8MHhjMTEwOGM4MCAweDgwPjsKKwkJY2xvY2tzID0gPCZjbGs4MT47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktbXQ2NXh4LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLW10NjV4eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UzNjNjOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLW10NjV4eC50eHQKQEAgLTAsMCArMSw1OCBAQAorQmluZGluZyBmb3IgTVRLIFNQSSBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZy4KKyAgICAtIG1lZGlhdGVrLG10ODE3My1zcGk6IGZvciBtdDgxNzMgcGxhdGZvcm1zCisgICAgLSBtZWRpYXRlayxtdDgxMzUtc3BpOiBmb3IgbXQ4MTM1IHBsYXRmb3JtcworICAgIC0gbWVkaWF0ZWssbXQ2NTg5LXNwaTogZm9yIG10NjU4OSBwbGF0Zm9ybXMKKworLSAjYWRkcmVzcy1jZWxsczogc2hvdWxkIGJlIDEuCisKKy0gI3NpemUtY2VsbHM6IHNob3VsZCBiZSAwLgorCistIHJlZzogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKworLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBzcGkgaW50ZXJydXB0CisKKy0gY2xvY2tzOiBwaGFuZGxlcyB0byBpbnB1dCBjbG9ja3MuCisgIFRoZSBmaXJzdCBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcuIEl0J3MgUExMLgorICAgLSAgPCZjbGsyNm0+OiBzcGVjaWZ5IHBhcmVudCBjbG9jayAyNk1IWi4KKyAgIC0gIDwmdG9wY2tnZW4gQ0xLX1RPUF9TWVNQTEwzX0QyPjogc3BlY2lmeSBwYXJlbnQgY2xvY2sgMTA5TUhaLgorCQkJCSAgICAgIEl0J3MgdGhlIGRlZmF1bHQgb25lLgorICAgLSAgPCZ0b3Bja2dlbiBDTEtfVE9QX1NZU1BMTDRfRDI+OiBzcGVjaWZ5IHBhcmVudCBjbG9jayA3OE1IWi4KKyAgIC0gIDwmdG9wY2tnZW4gQ0xLX1RPUF9VTklWUExMMl9END46IHNwZWNpZnkgcGFyZW50IGNsb2NrIDEwNE1IWi4KKyAgIC0gIDwmdG9wY2tnZW4gQ0xLX1RPUF9VTklWUExMMV9EOD46IHNwZWNpZnkgcGFyZW50IGNsb2NrIDc4TUhaLgorICBUaGUgc2Vjb25kIHNob3VsZCBiZSA8JnRvcGNrZ2VuIENMS19UT1BfU1BJX1NFTD4uIEl0J3MgY2xvY2sgbXV4LgorICBUaGUgdGhpcmQgaXMgPCZwZXJpY2ZnIENMS19QRVJJX1NQSTA+LiBJdCdzIGNsb2NrIGdhdGUuCisKKy0gY2xvY2stbmFtZXM6IHNoYWxsIGJlICJwYXJlbnQtY2xrIiBmb3IgdGhlIHBhcmVudCBjbG9jaywgInNlbC1jbGsiIGZvciB0aGUKKyAgbXV4ZXMgY2xvY2ssIGFuZCAic3BpLWNsayIgZm9yIHRoZSBjbG9jayBnYXRlLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLWNzLWdwaW9zOiBzZWUgc3BpLWJ1cy50eHQsIG9ubHkgcmVxdWlyZWQgZm9yIE1UODE3My4KKworLSBtZWRpYXRlayxwYWQtc2VsZWN0OiBzcGVjaWZ5IHdoaWNoIHBpbnMgZ3JvdXAoY2svbWkvbW8vY3MpIHNwaQorICBjb250cm9sbGVyIHVzZWQuIFRoaXMgaXMgYSBhcnJheSwgdGhlIGVsZW1lbnQgdmFsdWUgc2hvdWxkIGJlIDB+MywKKyAgb25seSByZXF1aXJlZCBmb3IgTVQ4MTczLgorICAgIDA6IHNwZWNpZnkgR1BJTzY5LDcwLDcxLDcyIGZvciBzcGkgcGlucy4KKyAgICAxOiBzcGVjaWZ5IEdQSU8xMDIsMTAzLDEwNCwxMDUgZm9yIHNwaSBwaW5zLgorICAgIDI6IHNwZWNpZnkgR1BJTzEyOCwxMjksMTMwLDEzMSBmb3Igc3BpIHBpbnMuCisgICAgMzogc3BlY2lmeSBHUElPNSw2LDcsOCBmb3Igc3BpIHBpbnMuCisKK0V4YW1wbGU6CisKKy0gU29DIFNwZWNpZmljIFBvcnRpb246CitzcGk6IHNwaUAxMTAwYTAwMCB7CisJY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtc3BpIjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwlyZWcgPSA8MCAweDExMDBhMDAwIDAgMHgxMDAwPjsKKwlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMTEwIElSUV9UWVBFX0xFVkVMX0xPVz47CisJY2xvY2tzID0gPCZ0b3Bja2dlbiBDTEtfVE9QX1NZU1BMTDNfRDI+LAorCQkgPCZ0b3Bja2dlbiBDTEtfVE9QX1NQSV9TRUw+LAorCQkgPCZwZXJpY2ZnIENMS19QRVJJX1NQSTA+OworCWNsb2NrLW5hbWVzID0gInBhcmVudC1jbGsiLCAic2VsLWNsayIsICJzcGktY2xrIjsKKwljcy1ncGlvcyA9IDwmcGlvIDEwNSBHUElPX0FDVElWRV9MT1c+LCA8JnBpbyA3MiBHUElPX0FDVElWRV9MT1c+OworCW1lZGlhdGVrLHBhZC1zZWxlY3QgPSA8MT4sIDwwPjsKKwlzdGF0dXMgPSAiZGlzYWJsZWQiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLW9jdGVvbi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1vY3Rlb24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMWFkZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1vY3Rlb24udHh0CkBAIC0wLDAgKzEsMzMgQEAKK0Nhdml1bSwgSW5jLiBPQ1RFT04gU09DIFNQSSBtYXN0ZXIgY29udHJvbGxlci4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJjYXZpdW0sb2N0ZW9uLTMwMTAtc3BpIgorLSByZWcgOiBUaGUgcmVnaXN0ZXIgYmFzZSBmb3IgdGhlIGNvbnRyb2xsZXIuCistIGludGVycnVwdHMgOiBPbmUgaW50ZXJydXB0LCB1c2VkIGJ5IHRoZSBjb250cm9sbGVyLgorLSAjYWRkcmVzcy1jZWxscyA6IDwxPiwgYXMgcmVxdWlyZWQgYnkgZ2VuZXJpYyBTUEkgYmluZGluZy4KKy0gI3NpemUtY2VsbHMgOiA8MD4sIGFsc28gYXMgcmVxdWlyZWQgYnkgZ2VuZXJpYyBTUEkgYmluZGluZy4KKworQ2hpbGQgbm9kZXMgYXMgcGVyIHRoZSBnZW5lcmljIFNQSSBiaW5kaW5nLgorCitFeGFtcGxlOgorCisJc3BpQDEwNzAwMDAwMDEwMDAgeworCQljb21wYXRpYmxlID0gImNhdml1bSxvY3Rlb24tMzAxMC1zcGkiOworCQlyZWcgPSA8MHgxMDcwMCAweDAwMDAxMDAwIDB4MCAweDEwMD47CisJCWludGVycnVwdHMgPSA8MCA1OD47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQllZXByb21AMCB7CisJCQljb21wYXRpYmxlID0gInN0LG05NTI1NiIsICJhdG1lbCxhdDI1IjsKKwkJCXJlZyA9IDwwPjsKKwkJCXNwaS1tYXgtZnJlcXVlbmN5ID0gPDUwMDAwMDA+OworCQkJc3BpLWNwaGE7CisJCQlzcGktY3BvbDsKKworCQkJcGFnZXNpemUgPSA8NjQ+OworCQkJc2l6ZSA9IDwzMjc2OD47CisJCQlhZGRyZXNzLXdpZHRoID0gPDE2PjsKKwkJfTsKKwl9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1vcmlvbi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1vcmlvbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThiYzY5OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLW9yaW9uLnR4dApAQCAtMCwwICsxLDI1IEBACitNYXJ2ZWxsIE9yaW9uIFNQSSBkZXZpY2UKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSBvbiBvZiB0aGUgZm9sbG93aW5nOgorICAgIC0gIm1hcnZlbGwsb3Jpb24tc3BpIiBmb3IgdGhlIE9yaW9uLCBtdjc4eDAwLCBLaXJrd29vZCBhbmQgRG92ZSBTb0NzCisgICAgLSAibWFydmVsbCxhcm1hZGEtMzcwLXNwaSIsIGZvciB0aGUgQXJtYWRhIDM3MCBTb0NzCisgICAgLSAibWFydmVsbCxhcm1hZGEtMzc1LXNwaSIsIGZvciB0aGUgQXJtYWRhIDM3NSBTb0NzCisgICAgLSAibWFydmVsbCxhcm1hZGEtMzgwLXNwaSIsIGZvciB0aGUgQXJtYWRhIDM4eCBTb0NzCisgICAgLSAibWFydmVsbCxhcm1hZGEtMzkwLXNwaSIsIGZvciB0aGUgQXJtYWRhIDM5eCBTb0NzCisgICAgLSAibWFydmVsbCxhcm1hZGEteHAtc3BpIiwgZm9yIHRoZSBBcm1hZGEgWFAgU29DcworLSByZWcgOiBvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistIGNlbGwtaW5kZXggOiBXaGljaCBvZiBtdWx0aXBsZSBTUEkgY29udHJvbGxlcnMgaXMgdGhpcy4KK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGludGVycnVwdHMgOiBJcyBjdXJyZW50bHkgbm90IHVzZWQuCisKK0V4YW1wbGU6CisgICAgICAgc3BpQDEwNjAwIHsKKwkgICAgICAgY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLG9yaW9uLXNwaSI7CisJICAgICAgICNhZGRyZXNzLWNlbGxzID0gPDE+OworCSAgICAgICAjc2l6ZS1jZWxscyA9IDwwPjsKKwkgICAgICAgY2VsbC1pbmRleCA9IDwwPjsKKwkgICAgICAgcmVnID0gPDB4MTA2MDAgMHgyOD47CisJICAgICAgIGludGVycnVwdHMgPSA8MjM+OworCSAgICAgICBzdGF0dXMgPSAiZGlzYWJsZWQiOworICAgICAgIH07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1yb2NrY2hpcC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1yb2NrY2hpcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM0OTFiZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLXJvY2tjaGlwLnR4dApAQCAtMCwwICsxLDQ1IEBACisqIFJvY2tjaGlwIFNQSSBDb250cm9sbGVyCisKK1RoZSBSb2NrY2hpcCBTUEkgY29udHJvbGxlciBpcyB1c2VkIHRvIGludGVyZmFjZSB3aXRoIHZhcmlvdXMgZGV2aWNlcyBzdWNoIGFzIGZsYXNoCithbmQgZGlzcGxheSBjb250cm9sbGVycyB1c2luZyB0aGUgU1BJIGNvbW11bmljYXRpb24gaW50ZXJmYWNlLgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZy4KKyAgICAicm9ja2NoaXAscmszMDY2LXNwaSIgZm9yIHJrMzA2Ni4KKyAgICAicm9ja2NoaXAscmszMTg4LXNwaSIsICJyb2NrY2hpcCxyazMwNjYtc3BpIiBmb3IgcmszMTg4LgorICAgICJyb2NrY2hpcCxyazMyODgtc3BpIiwgInJvY2tjaGlwLHJrMzA2Ni1zcGkiIGZvciByazMyODguCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICAgICAgIHJlZ2lvbi4KKy0gaW50ZXJydXB0czogVGhlIGludGVycnVwdCBudW1iZXIgdG8gdGhlIGNwdS4gVGhlIGludGVycnVwdCBzcGVjaWZpZXIgZm9ybWF0CisgICAgICAgICAgICAgIGRlcGVuZHMgb24gdGhlIGludGVycnVwdCBjb250cm9sbGVyLgorLSBjbG9ja3M6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKy0gY2xvY2stbmFtZXM6IFNoYWxsIGJlICJzcGljbGsiIGZvciB0aGUgdHJhbnNmZXItY2xvY2ssIGFuZCAiYXBiX3BjbGsiIGZvcgorCQkJICAgdGhlIHBlcmlwaGVyYWwgY2xvY2suCistICNhZGRyZXNzLWNlbGxzOiBzaG91bGQgYmUgMS4KKy0gI3NpemUtY2VsbHM6IHNob3VsZCBiZSAwLgorCitPcHRpb25hbCBQcm9wZXJ0aWVzOgorCistIGRtYXM6IERNQSBzcGVjaWZpZXJzIGZvciB0eCBhbmQgcnggZG1hLiBTZWUgdGhlIERNQSBjbGllbnQgYmluZGluZywKKwkJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9kbWEudHh0CistIGRtYS1uYW1lczogRE1BIHJlcXVlc3QgbmFtZXMgc2hvdWxkIGluY2x1ZGUgInR4IiBhbmQgInJ4IiBpZiBwcmVzZW50LgorLSByeC1zYW1wbGUtZGVsYXktbnM6IG5hbm9zZWNvbmRzIHRvIGRlbGF5IGFmdGVyIHRoZSBTQ0xLIGVkZ2UgYmVmb3JlIHNhbXBsaW5nCisJCVJ4IGRhdGEgKG1heSBuZWVkIHRvIGJlIGZpbmUgdHVuZWQgZm9yIGhpZ2ggY2FwYWNpdGFuY2UgbGluZXMpLgorCQlObyBkZWxheSAoMCkgYnkgZGVmYXVsdC4KKworCitFeGFtcGxlOgorCisJc3BpMDogc3BpQGZmMTEwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJyb2NrY2hpcCxyazMwNjYtc3BpIjsKKwkJcmVnID0gPDB4ZmYxMTAwMDAgMHgxMDAwPjsKKwkJZG1hcyA9IDwmcGRtYTEgMTE+LCA8JnBkbWExIDEyPjsKKwkJZG1hLW5hbWVzID0gInR4IiwgInJ4IjsKKwkJcngtc2FtcGxlLWRlbGF5LW5zID0gPDEwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgNDQgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWNsb2NrcyA9IDwmY3J1IFNDTEtfU1BJMD4sIDwmY3J1IFBDTEtfU1BJMD47CisJCWNsb2NrLW5hbWVzID0gInNwaWNsayIsICJhcGJfcGNsayI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLXJzcGkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktcnNwaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY0MTY5ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLXJzcGkudHh0CkBAIC0wLDAgKzEsNjkgQEAKK0RldmljZSB0cmVlIGNvbmZpZ3VyYXRpb24gZm9yIFJlbmVzYXMgUlNQSS9RU1BJIGRyaXZlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlICAgICAgIDogRm9yIFJlbmVzYXMgU2VyaWFsIFBlcmlwaGVyYWwgSW50ZXJmYWNlIG9uIGxlZ2FjeSBTSDoKKwkJICAgICAicmVuZXNhcyxyc3BpLTxzb2N0eXBlPiIsICJyZW5lc2FzLHJzcGkiIGFzIGZhbGxiYWNrLgorCQkgICAgIEZvciBSZW5lc2FzIFNlcmlhbCBQZXJpcGhlcmFsIEludGVyZmFjZSBvbiBSWi9BMUg6CisJCSAgICAgInJlbmVzYXMscnNwaS08c29jdHlwZT4iLCAicmVuZXNhcyxyc3BpLXJ6IiBhcyBmYWxsYmFjay4KKwkJICAgICBGb3IgUXVhZCBTZXJpYWwgUGVyaXBoZXJhbCBJbnRlcmZhY2Ugb24gUi1DYXIgR2VuMjoKKwkJICAgICAicmVuZXNhcyxxc3BpLTxzb2N0eXBlPiIsICJyZW5lc2FzLHFzcGkiIGFzIGZhbGxiYWNrLgorCQkgICAgIEV4YW1wbGVzIHdpdGggc29jdHlwZXMgYXJlOgorCQkgICAgICAgIC0gInJlbmVzYXMscnNwaS1zaDc3NTciIChTSCkKKwkJCS0gInJlbmVzYXMscnNwaS1yN3M3MjEwMCIgKFJaL0ExSCkKKwkJCS0gInJlbmVzYXMscXNwaS1yOGE3NzkwIiAoUi1DYXIgSDIpCisJCQktICJyZW5lc2FzLHFzcGktcjhhNzc5MSIgKFItQ2FyIE0yLVcpCisJCQktICJyZW5lc2FzLHFzcGktcjhhNzc5MiIgKFItQ2FyIFYySCkKKwkJCS0gInJlbmVzYXMscXNwaS1yOGE3NzkzIiAoUi1DYXIgTTItTikKKwkJCS0gInJlbmVzYXMscXNwaS1yOGE3Nzk0IiAoUi1DYXIgRTIpCistIHJlZyAgICAgICAgICAgICAgOiBBZGRyZXNzIHN0YXJ0IGFuZCBhZGRyZXNzIHJhbmdlIHNpemUgb2YgdGhlIGRldmljZQorLSBpbnRlcnJ1cHRzICAgICAgIDogQSBsaXN0IG9mIGludGVycnVwdC1zcGVjaWZpZXJzLCBvbmUgZm9yIGVhY2ggZW50cnkgaW4KKwkJICAgICBpbnRlcnJ1cHQtbmFtZXMuCisJCSAgICAgSWYgaW50ZXJydXB0LW5hbWVzIGlzIG5vdCBwcmVzZW50LCBhbiBpbnRlcnJ1cHQgc3BlY2lmaWVyCisJCSAgICAgZm9yIGEgc2luZ2xlIG11eGVkIGludGVycnVwdC4KKy0gaW50ZXJydXB0LW5hbWVzICA6IEEgbGlzdCBvZiBpbnRlcnJ1cHQgbmFtZXMuIFNob3VsZCBjb250YWluIChpZiBwcmVzZW50KToKKwkJICAgICAgIC0gImVycm9yIiBmb3IgU1BFSSwKKwkJICAgICAgIC0gInJ4IiBmb3IgU1BSSSwKKwkJICAgICAgIC0gInR4IiB0byBTUFRJLAorCQkgICAgICAgLSAibXV4IiBmb3IgYSBzaW5nbGUgbXV4ZWQgaW50ZXJydXB0LgorLSBpbnRlcnJ1cHQtcGFyZW50IDogVGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGF0CisJCSAgICAgc2VydmljZXMgaW50ZXJydXB0cyBmb3IgdGhpcyBkZXZpY2UuCistIG51bS1jcwkgICA6IE51bWJlciBvZiBjaGlwIHNlbGVjdHMuIFNvbWUgUlNQSSBjb3JlcyBoYXZlIG1vcmUgdGhhbiAxLgorLSAjYWRkcmVzcy1jZWxscyAgIDogTXVzdCBiZSA8MT4KKy0gI3NpemUtY2VsbHMgICAgICA6IE11c3QgYmUgPDA+CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrcyAgICAgICAgICAgOiBNdXN0IGNvbnRhaW4gYSByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uYWwgY2xvY2suCistIGRtYXMgICAgICAgICAgICAgOiBNdXN0IGNvbnRhaW4gYSBsaXN0IG9mIHR3byByZWZlcmVuY2VzIHRvIERNQSBzcGVjaWZpZXJzLAorCQkgICAgIG9uZSBmb3IgdHJhbnNtaXNzaW9uLCBhbmQgb25lIGZvciByZWNlcHRpb24uCistIGRtYS1uYW1lcyAgICAgICAgOiBNdXN0IGNvbnRhaW4gYSBsaXN0IG9mIHR3byBETUEgbmFtZXMsICJ0eCIgYW5kICJyeCIuCisKK1BpbmN0cmwgcHJvcGVydGllcyBtaWdodCBiZSBuZWVkZWQsIHRvby4gIFNlZQorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcmVuZXNhcywqLgorCitFeGFtcGxlczoKKworCXNwaTA6IHNwaUBlODAwYzgwMCB7CisJCWNvbXBhdGlibGUgPSAicmVuZXNhcyxyc3BpLXI3czcyMTAwIiwgInJlbmVzYXMscnNwaS1yeiI7CisJCXJlZyA9IDwweGU4MDBjODAwIDB4MjQ+OworCQlpbnRlcnJ1cHRzID0gPDAgMjM4IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8MCAyMzkgSVJRX1RZUEVfTEVWRUxfSElHSD4sCisJCQkgICAgIDwwIDI0MCBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJaW50ZXJydXB0LW5hbWVzID0gImVycm9yIiwgInJ4IiwgInR4IjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmZ2ljPjsKKwkJbnVtLWNzID0gPDE+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJfTsKKworCXNwaTogc3BpQGU2YjEwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLHFzcGktcjhhNzc5MSIsICJyZW5lc2FzLHFzcGkiOworCQlyZWcgPSA8MCAweGU2YjEwMDAwIDAgMHgyYz47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmdpYz47CisJCWludGVycnVwdHMgPSA8MCAxODQgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWNsb2NrcyA9IDwmbXN0cDlfY2xrcyBSOEE3NzkxX0NMS19RU1BJX01PRD47CisJCW51bS1jcyA9IDwxPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQlkbWFzID0gPCZkbWFjMCAweDE3PiwgPCZkbWFjMCAweDE4PjsKKwkJZG1hLW5hbWVzID0gInR4IiwgInJ4IjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktc2Ftc3VuZy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1zYW1zdW5nLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGJkZWIzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktc2Ftc3VuZy50eHQKQEAgLTAsMCArMSwxMDkgQEAKKyogU2Ftc3VuZyBTUEkgQ29udHJvbGxlcgorCitUaGUgU2Ftc3VuZyBTUEkgY29udHJvbGxlciBpcyB1c2VkIHRvIGludGVyZmFjZSB3aXRoIHZhcmlvdXMgZGV2aWNlcyBzdWNoIGFzIGZsYXNoCithbmQgZGlzcGxheSBjb250cm9sbGVycyB1c2luZyB0aGUgU1BJIGNvbW11bmljYXRpb24gaW50ZXJmYWNlLgorCitSZXF1aXJlZCBTb0MgU3BlY2lmaWMgUHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcuCisgICAgLSBzYW1zdW5nLHMzYzI0NDMtc3BpOiBmb3IgczNjMjQ0MywgczNjMjQxNiBhbmQgczNjMjQ1MCBwbGF0Zm9ybXMKKyAgICAtIHNhbXN1bmcsczNjNjQxMC1zcGk6IGZvciBzM2M2NDEwIHBsYXRmb3JtcworICAgIC0gc2Ftc3VuZyxzNXB2MjEwLXNwaTogZm9yIHM1cHYyMTAgYW5kIHM1cGMxMTAgcGxhdGZvcm1zCisgICAgLSBzYW1zdW5nLGV4eW5vczctc3BpOiBmb3IgZXh5bm9zNyBwbGF0Zm9ybXMKKworLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29udHJvbGxlciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorCistIGludGVycnVwdHM6IFRoZSBpbnRlcnJ1cHQgbnVtYmVyIHRvIHRoZSBjcHUuIFRoZSBpbnRlcnJ1cHQgc3BlY2lmaWVyIGZvcm1hdAorICBkZXBlbmRzIG9uIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlci4KKworLSBkbWFzIDogVHdvIG9yIG1vcmUgRE1BIGNoYW5uZWwgc3BlY2lmaWVycyBmb2xsb3dpbmcgdGhlIGNvbnZlbnRpb24gb3V0bGluZWQKKyAgaW4gYmluZGluZ3MvZG1hL2RtYS50eHQKKworLSBkbWEtbmFtZXM6IE5hbWVzIGZvciB0aGUgZG1hIGNoYW5uZWxzLiBUaGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSBjaGFubmVsCisgIG5hbWVkICJ0eCIgZm9yIHRyYW5zbWl0IGFuZCBuYW1lZCAicngiIGZvciByZWNlaXZlLgorCitSZXF1aXJlZCBCb2FyZCBTcGVjaWZpYyBQcm9wZXJ0aWVzOgorCistICNhZGRyZXNzLWNlbGxzOiBzaG91bGQgYmUgMS4KKy0gI3NpemUtY2VsbHM6IHNob3VsZCBiZSAwLgorCitPcHRpb25hbCBCb2FyZCBTcGVjaWZpYyBQcm9wZXJ0aWVzOgorCistIHNhbXN1bmcsc3BpLXNyYy1jbGs6IElmIHRoZSBzcGkgY29udHJvbGxlciBpbmNsdWRlcyBhIGludGVybmFsIGNsb2NrIG11eCB0bworICBzZWxlY3QgdGhlIGNsb2NrIHNvdXJjZSBmb3IgdGhlIHNwaSBidXMgY2xvY2ssIHRoaXMgcHJvcGVydHkgY2FuIGJlIHVzZWQgdG8KKyAgaW5kaWNhdGUgdGhlIGNsb2NrIHRvIGJlIHVzZWQgZm9yIGRyaXZpbmcgdGhlIHNwaSBidXMgY2xvY2suIElmIG5vdCBzcGVjaWZpZWQsCisgIHRoZSBjbG9jayBudW1iZXIgMCBpcyB1c2VkIGFzIGRlZmF1bHQuCisKKy0gbnVtLWNzOiBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjaGlwIHNlbGVjdCBsaW5lcyBzdXBwb3J0ZWQuIElmCisgIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IG51bWJlciBvZiBjaGlwIHNlbGVjdCBsaW5lcyBpcyBzZXQgdG8gMS4KKworLSBjcy1ncGlvczogc2hvdWxkIHNwZWNpZnkgR1BJT3MgdXNlZCBmb3IgY2hpcHNlbGVjdHMgKHNlZSBzcGktYnVzLnR4dCkKKworU1BJIENvbnRyb2xsZXIgc3BlY2lmaWMgZGF0YSBpbiBTUEkgc2xhdmUgbm9kZXM6CisKKy0gVGhlIHNwaSBzbGF2ZSBub2RlcyBzaG91bGQgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHdoaWNoIGlzIHJlcXVpcmVkCisgIGJ5IHRoZSBzcGkgY29udHJvbGxlci4KKworICAtIHNhbXN1bmcsc3BpLWZlZWRiYWNrLWRlbGF5OiBUaGUgc2FtcGxpbmcgcGhhc2Ugc2hpZnQgdG8gYmUgYXBwbGllZCBvbiB0aGUKKyAgICBtaXNvIGxpbmUgKHRvIGFjY291bnQgZm9yIGFueSBsYWcgaW4gdGhlIG1pc28gbGluZSkuIFRoZSBmb2xsb3dpbmcgYXJlIHRoZQorICAgIHZhbGlkIHZhbHVlcy4KKworICAgICAgLSAwOiBObyBwaGFzZSBzaGlmdC4KKyAgICAgIC0gMTogOTAgZGVncmVlIHBoYXNlIHNoaWZ0IHNhbXBsaW5nLgorICAgICAgLSAyOiAxODAgZGVncmVlIHBoYXNlIHNoaWZ0IHNhbXBsaW5nLgorICAgICAgLSAzOiAyNzAgZGVncmVlIHBoYXNlIHNoaWZ0IHNhbXBsaW5nLgorCitBbGlhc2VzOgorCistIEFsbCB0aGUgU1BJIGNvbnRyb2xsZXIgbm9kZXMgc2hvdWxkIGJlIHJlcHJlc2VudGVkIGluIHRoZSBhbGlhc2VzIG5vZGUgdXNpbmcKKyAgdGhlIGZvbGxvd2luZyBmb3JtYXQgJ3NwaXtufScgd2hlcmUgbiBpcyBhIHVuaXF1ZSBudW1iZXIgZm9yIHRoZSBhbGlhcy4KKworCitFeGFtcGxlOgorCistIFNvQyBTcGVjaWZpYyBQb3J0aW9uOgorCisJc3BpXzA6IHNwaUAxMmQyMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M0MjEwLXNwaSI7CisJCXJlZyA9IDwweDEyZDIwMDAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDY2IDA+OworCQlkbWFzID0gPCZwZG1hMCA1CisJCQkmcGRtYTAgND47CisJCWRtYS1uYW1lcyA9ICJ0eCIsICJyeCI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwl9OworCistIEJvYXJkIFNwZWNpZmljIFBvcnRpb246CisKKwlzcGlfMDogc3BpQDEyZDIwMDAwIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JnNwaTBfYnVzPjsKKwkJY3MtZ3Bpb3MgPSA8JmdwYTIgNSAwPjsKKworCQl3MjVxODBid0AwIHsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MT47CisJCQljb21wYXRpYmxlID0gIncyNXg4MCI7CisJCQlyZWcgPSA8MD47CisJCQlzcGktbWF4LWZyZXF1ZW5jeSA9IDwxMDAwMD47CisKKwkJCWNvbnRyb2xsZXItZGF0YSB7CisJCQkJc2Ftc3VuZyxzcGktZmVlZGJhY2stZGVsYXkgPSA8MD47CisJCQl9OworCisJCQlwYXJ0aXRpb25AMCB7CisJCQkJbGFiZWwgPSAiVS1Cb290IjsKKwkJCQlyZWcgPSA8MHgwIDB4NDAwMDA+OworCQkJCXJlYWQtb25seTsKKwkJCX07CisKKwkJCXBhcnRpdGlvbkA0MDAwMCB7CisJCQkJbGFiZWwgPSAiS2VybmVsIjsKKwkJCQlyZWcgPSA8MHg0MDAwMCAweGMwMDAwPjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLXNjMThpczYwMi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1zYzE4aXM2MDIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZjkwMzMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1zYzE4aXM2MDIudHh0CkBAIC0wLDAgKzEsMjMgQEAKK05YUCBTQzE4SVM2MDIvU0NJUzYwMworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCS0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSBvbmUgb2YKKwkJIm54cCxzYzE4aXM2MDIiCisJCSJueHAsc2MxOGlzNjAyYiIKKwkJIm54cCxzYzE4aXM2MDMiCisJLSByZWc6IEkyQyBidXMgYWRkcmVzcworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCS0gY2xvY2stZnJlcXVlbmN5IDogZXh0ZXJuYWwgb3NjaWxsYXRvciBjbG9jayBmcmVxdWVuY3kuIElmIG5vdAorCSAgc3BlY2lmaWVkLCB0aGUgU0MxOElTNjAyIGRlZmF1bHQgZnJlcXVlbmN5ICg3MzcyMDAwKSB3aWxsIGJlIHVzZWQuCisKK1RoZSBjbG9jay1mcmVxdWVuY3kgcHJvcGVydHkgaXMgcmVsZXZhbnQgYW5kIG5lZWRlZCBvbmx5IGlmIHRoZSBjaGlwIGhhcyBhbgorZXh0ZXJuYWwgb3NjaWxsYXRvciAoU0MxOElTNjAzKS4KKworRXhhbXBsZToKKworCXNjMThpczYwM0AyOCB7CisJCWNvbXBhdGlibGUgPSAibnhwLHNjMThpczYwMyI7CisJCXJlZyA9IDwweDI4PjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDE0NzQ0MDAwPjsKKwl9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1zaXJmLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLXNpcmYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkZDc4ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1zaXJmLnR4dApAQCAtMCwwICsxLDQyIEBACisqIENTUiBTaVJGcHJpbWFJSSBTZXJpYWwgUGVyaXBoZXJhbCBJbnRlcmZhY2UKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAic2lyZixwcmltYTItc3BpIiwgInNpcmYscHJpbWEyLXVzcCIKKyAgICAgICAgICAgICAgIG9yICJzaXJmLGF0bGFzNy11c3AiCistIHJlZyA6IE9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKy0gaW50ZXJydXB0cyA6IFNob3VsZCBjb250YWluIFNQSSBpbnRlcnJ1cHQKKy0gcmVzZXRzOiBwaGFuZGxlIHRvIHRoZSByZXNldCBjb250cm9sbGVyIGFzc2VydGluZyB0aGlzIGRldmljZSBpbgorICAgICAgICAgIHJlc2V0CisgIFNlZSAuLi9yZXNldC9yZXNldC50eHQgZm9yIGRldGFpbHMuCistIGRtYXMgOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCisgIFNlZSAuLi9kbWEvZG1hLnR4dCBmb3IgZGV0YWlscy4KKy0gZG1hLW5hbWVzIDogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgLSByeAorICAtIHR4CistIGNsb2NrcyA6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKyAgU2VlIC4uL2Nsb2Nrcy9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCisKKy0gI2FkZHJlc3MtY2VsbHM6IE51bWJlciBvZiBjZWxscyByZXF1aXJlZCB0byBkZWZpbmUgYSBjaGlwIHNlbGVjdAorICAgICAgICAgICAgICAgICAgYWRkcmVzcyBvbiB0aGUgU1BJIGJ1cy4gU2hvdWxkIGJlIHNldCB0byAxLgorLSAjc2l6ZS1jZWxsczogICAgU2hvdWxkIGJlIHplcm8uCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHNwaS1tYXgtZnJlcXVlbmN5OiBTcGVjaWZpZXMgbWF4aW11bSBTUEkgY2xvY2sgZnJlcXVlbmN5LAorICAgICAgICAgICAgICAgICAgICAgVW5pdHMgLSBIei4gRGVmaW5pdGlvbiBhcyBwZXIKKyAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLWJ1cy50eHQKKy0gY3MtZ3Bpb3M6ICAgICBzaG91bGQgc3BlY2lmeSBHUElPcyB1c2VkIGZvciBjaGlwc2VsZWN0cy4KKworRXhhbXBsZToKKworc3BpMDogc3BpQGIwMGQwMDAwIHsKKwljb21wYXRpYmxlID0gInNpcmYscHJpbWEyLXNwaSI7CisJcmVnID0gPDB4YjAwZDAwMDAgMHgxMDAwMD47CisJaW50ZXJydXB0cyA9IDwxNT47CisJZG1hcyA9IDwmZG1hYzEgOT4sCisJCTwmZG1hYzEgND47CisJZG1hLW5hbWVzID0gInJ4IiwgInR4IjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwljbG9ja3MgPSA8JmNsa3MgMTk+OworCXJlc2V0cyA9IDwmcnN0YyAyNj47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktc3Qtc3NjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLXN0LXNzYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU1NDk1OQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLXN0LXNzYy50eHQKQEAgLTAsMCArMSw0MCBAQAorU1RNaWNyb2VsZWN0cm9uaWNzIFNTQyAoU1BJKSBDb250cm9sbGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZQk6ICJzdCxjb21tcy1zc2M0LXNwaSIKKy0gcmVnCQk6IE9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSBkZXZpY2UncyByZWdpc3RlciBzZXQKKy0gaW50ZXJydXB0cwk6IFRoZSBpbnRlcnJ1cHQgc3BlY2lmaWVyCistIGNsb2NrLW5hbWVzCTogTXVzdCBjb250YWluICJzc2MiCistIGNsb2Nrcwk6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBuYW1lIGluIGNsb2NrLW5hbWVzCisJCSAgICBTZWUgLi4vY2xrLyoKKy0gcGluY3RybC1uYW1lcwk6IFVzZXMgImRlZmF1bHQiLCBjYW4gdXNlICJzbGVlcCIgaWYgcHJvdmlkZWQKKwkJICAgIFNlZSAuLi9waW5jdHJsL3BpbmN0cmwtYmluZGluZy50eHQKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gY3MtZ3Bpb3MJOiBMaXN0IG9mIEdQSU8gY2hpcCBzZWxlY3RzCisJCSAgICBTZWUgLi4vc3BpL3NwaS1idXMudHh0CisKK0NoaWxkIG5vZGVzIHJlcHJlc2VudCBkZXZpY2VzIG9uIHRoZSBTUEkgYnVzCisgIFNlZSAuLi9zcGkvc3BpLWJ1cy50eHQKKworRXhhbXBsZToKKwlzcGlAOTg0MDAwMCB7CisJCWNvbXBhdGlibGUJPSAic3QsY29tbXMtc3NjNC1zcGkiOworCQlyZWcJCT0gPDB4OTg0MDAwMCAweDExMD47CisJCWludGVycnVwdHMJPSA8R0lDX1NQSSAxMTIgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWNsb2NrcwkJPSA8JmNsa19zX2MwX2ZsZXhnZW4gQ0xLX0VYVDJGX0E5PjsKKwkJY2xvY2stbmFtZXMJPSAic3NjIjsKKwkJcGluY3RybC0wCT0gPCZwaW5jdHJsX3NwaTBfZGVmYXVsdD47CisJCXBpbmN0cmwtbmFtZXMJPSAiZGVmYXVsdCI7CisJCWNzLWdwaW9zCT0gPCZwaW8xNyA1IDA+OworCQkjYWRkcmVzcy1jZWxscwk9IDwxPjsKKwkJI3NpemUtY2VsbHMJPSA8MD47CisKKwkJc3Q5NWhmQDB7CisJCQljb21wYXRpYmxlCQk9ICJzdCxzdDk1aGYiOworCQkJcmVnCQkJPSA8MD47CisJCQlzcGktbWF4LWZyZXF1ZW5jeQk9IDwxMDAwMDAwPjsKKwkJCWludGVycnVwdHMJCT0gPDIgSVJRX1RZUEVfRURHRV9GQUxMSU5HPjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktc3VuNGkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktc3VuNGkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlODI3ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1zdW40aS50eHQKQEAgLTAsMCArMSwyNCBAQAorQWxsd2lubmVyIEExMCBTUEkgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImFsbHdpbm5lcixzdW40LWExMC1zcGkiLgorLSByZWc6IFNob3VsZCBjb250YWluIHJlZ2lzdGVyIGxvY2F0aW9uIGFuZCBsZW5ndGguCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIGludGVycnVwdC4KKy0gY2xvY2tzOiBwaGFuZGxlIHRvIHRoZSBjbG9ja3MgZmVlZGluZyB0aGUgU1BJIGNvbnRyb2xsZXIuIFR3byBhcmUKKyAgICAgICAgICBuZWVkZWQ6CisgIC0gImFoYiI6IHRoZSBnYXRlZCBBSEIgcGFyZW50IGNsb2NrCisgIC0gIm1vZCI6IHRoZSBwYXJlbnQgbW9kdWxlIGNsb2NrCistIGNsb2NrLW5hbWVzOiBNdXN0IGNvbnRhaW4gdGhlIGNsb2NrIG5hbWVzIGRlc2NyaWJlZCBqdXN0IGFib3ZlCisKK0V4YW1wbGU6CisKK3NwaTE6IHNwaUAwMWMwNjAwMCB7CisJY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNGktYTEwLXNwaSI7CisJcmVnID0gPDB4MDFjMDYwMDAgMHgxMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDExPjsKKwljbG9ja3MgPSA8JmFoYl9nYXRlcyAyMT4sIDwmc3BpMV9jbGs+OworCWNsb2NrLW5hbWVzID0gImFoYiIsICJtb2QiOworCXN0YXR1cyA9ICJkaXNhYmxlZCI7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktc3VuNmkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktc3VuNmkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxZGU3M2QKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1zdW42aS50eHQKQEAgLTAsMCArMSwyNCBAQAorQWxsd2lubmVyIEEzMSBTUEkgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImFsbHdpbm5lcixzdW42aS1hMzEtc3BpIi4KKy0gcmVnOiBTaG91bGQgY29udGFpbiByZWdpc3RlciBsb2NhdGlvbiBhbmQgbGVuZ3RoLgorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBpbnRlcnJ1cHQuCistIGNsb2NrczogcGhhbmRsZSB0byB0aGUgY2xvY2tzIGZlZWRpbmcgdGhlIFNQSSBjb250cm9sbGVyLiBUd28gYXJlCisgICAgICAgICAgbmVlZGVkOgorICAtICJhaGIiOiB0aGUgZ2F0ZWQgQUhCIHBhcmVudCBjbG9jaworICAtICJtb2QiOiB0aGUgcGFyZW50IG1vZHVsZSBjbG9jaworLSBjbG9jay1uYW1lczogTXVzdCBjb250YWluIHRoZSBjbG9jayBuYW1lcyBkZXNjcmliZWQganVzdCBhYm92ZQorLSByZXNldHM6IHBoYW5kbGUgdG8gdGhlIHJlc2V0IGNvbnRyb2xsZXIgYXNzZXJ0aW5nIHRoaXMgZGV2aWNlIGluCisgICAgICAgICAgcmVzZXQKKworRXhhbXBsZToKKworc3BpMTogc3BpQDAxYzY5MDAwIHsKKwljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW42aS1hMzEtc3BpIjsKKwlyZWcgPSA8MHgwMWM2OTAwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8MCA2NiA0PjsKKwljbG9ja3MgPSA8JmFoYjFfZ2F0ZXMgMjE+LCA8JnNwaTFfY2xrPjsKKwljbG9jay1uYW1lcyA9ICJhaGIiLCAibW9kIjsKKwlyZXNldHMgPSA8JmFoYjFfcnN0IDIxPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS14bHAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGkteGxwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGU4MmQ1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGkteGxwLnR4dApAQCAtMCwwICsxLDM5IEBACitTUEkgTWFzdGVyIGNvbnRyb2xsZXIgZm9yIE5ldGxvZ2ljIFhMUCBNSVBTNjQgU09DcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQ3VycmVudGx5IHRoaXMgU1BJIGNvbnRyb2xsZXIgZHJpdmVyIGlzIHN1cHBvcnRlZCBmb3IgdGhlIGZvbGxvd2luZworTmV0bG9naWMgWExQIFNvQ3M6CisJWExQODMyLCBYTFAzMTYsIFhMUDIwOCwgWExQOTgwLCBYTFA1MzIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZQkJOiBTaG91bGQgYmUgIm5ldGxvZ2ljLHhscDgzMi1zcGkiLgorLSAjYWRkcmVzcy1jZWxscwk6IE51bWJlciBvZiBjZWxscyByZXF1aXJlZCB0byBkZWZpbmUgYSBjaGlwIHNlbGVjdCBhZGRyZXNzCisJCQkgIG9uIHRoZSBTUEkgYnVzLgorLSAjc2l6ZS1jZWxscwkJOiBTaG91bGQgYmUgemVyby4KKy0gcmVnCQkJOiBTaG91bGQgY29udGFpbiByZWdpc3RlciBsb2NhdGlvbiBhbmQgbGVuZ3RoLgorLSBjbG9ja3MJCTogUGhhbmRsZSBvZiB0aGUgc3BpIGNsb2NrCistIGludGVycnVwdHMJCTogSW50ZXJydXB0IG51bWJlciB1c2VkIGJ5IHRoaXMgY29udHJvbGxlci4KKy0gaW50ZXJydXB0LXBhcmVudAk6IFBoYW5kbGUgb2YgdGhlIHBhcmVudCBpbnRlcnJ1cHQgY29udHJvbGxlci4KKworU1BJIHNsYXZlIG5vZGVzIG11c3QgYmUgY2hpbGRyZW4gb2YgdGhlIFNQSSBtYXN0ZXIgbm9kZSBhbmQgY2FuIGNvbnRhaW4KK3Byb3BlcnRpZXMgZGVzY3JpYmVkIGluIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLWJ1cy50eHQuCisKK0V4YW1wbGU6CisKKwlzcGk6IHhscF9zcGlAM2ExMDAgeworCQljb21wYXRpYmxlID0gIm5ldGxvZ2ljLHhscDgzMi1zcGkiOworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJCXJlZyA9IDwwIDB4M2ExMDAgMHgxMDA+OworCQljbG9ja3MgPSA8JnNwaV9jbGs+OworCQlpbnRlcnJ1cHRzID0gPDM0PjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmcGljPjsKKworCQlzcGlfbm9yQDEgeworCQkJY29tcGF0aWJsZSA9ICJzcGFuc2lvbixzMjVzbDEyODAxIjsKKwkJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkJI3NpemUtY2VsbHMgPSA8MT47CisJCQlyZWcgPSA8MT47CS8qIENoaXAgU2VsZWN0ICovCisJCQlzcGktbWF4LWZyZXF1ZW5jeSA9IDw0MDAwMDAwMD47CisJCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGkteHRlbnNhLXh0ZnBnYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS14dGVuc2EteHRmcGdhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmViZTJiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGkteHRlbnNhLXh0ZnBnYS50eHQKQEAgLTAsMCArMSw5IEBACitDYWRlbmNlIFh0ZW5zYSBYVEZQR0EgcGxhdGZvcm0gU1BJIGNvbnRyb2xsZXIuCisKK1RoaXMgc2ltcGxlIFNQSSBtYXN0ZXIgY29udHJvbGxlciBpcyBidWlsdCBpbnRvIHh0ZnBnYSBiaXRzdHJlYW1zIGFuZCBpcyB1c2VkCit0byBjb250cm9sIGRhdWdodGVyYm9hcmQgYXVkaW8gY29kZWMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSAiY2Rucyx4dGZwZ2Etc3BpIi4KKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgIHJlZ2lvbi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLXp5bnFtcC1xc3BpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLXp5bnFtcC1xc3BpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGY1MGU1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktenlucW1wLXFzcGkudHh0CkBAIC0wLDAgKzEsMjYgQEAKK1hpbGlueCBaeW5xIFVsdHJhU2NhbGUrIE1QU29DIEdRU1BJIGNvbnRyb2xsZXIgRGV2aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZQkJOiBTaG91bGQgYmUgInhsbngsenlucW1wLXFzcGktMS4wIi4KKy0gcmVnCQkJOiBQaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgR1FTUEkgcmVnaXN0ZXJzIG1hcC4KKy0gaW50ZXJydXB0cwkJOiBQcm9wZXJ0eSB3aXRoIGEgdmFsdWUgZGVzY3JpYmluZyB0aGUgaW50ZXJydXB0CisJCQkgIG51bWJlci4KKy0gaW50ZXJydXB0LXBhcmVudAk6IE11c3QgYmUgY29yZSBpbnRlcnJ1cHQgY29udHJvbGxlci4KKy0gY2xvY2stbmFtZXMJCTogTGlzdCBvZiBpbnB1dCBjbG9jayBuYW1lcyAtICJyZWZfY2xrIiwgInBjbGsiCisJCQkgIChTZWUgY2xvY2sgYmluZGluZ3MgZm9yIGRldGFpbHMpLgorLSBjbG9ja3MJCTogQ2xvY2sgcGhhbmRsZXMgKHNlZSBjbG9jayBiaW5kaW5ncyBmb3IgZGV0YWlscykuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIG51bS1jcwkJOiBOdW1iZXIgb2YgY2hpcCBzZWxlY3RzIHVzZWQuCisKK0V4YW1wbGU6CisJcXNwaTogc3BpQGZmMGYwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJ4bG54LHp5bnFtcC1xc3BpLTEuMCI7CisJCWNsb2NrLW5hbWVzID0gInJlZl9jbGsiLCAicGNsayI7CisJCWNsb2NrcyA9IDwmbWlzY19jbGsgJm1pc2NfY2xrPjsKKwkJaW50ZXJydXB0cyA9IDwwIDE1IDQ+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZnaWM+OworCQludW0tY3MgPSA8MT47CisJCXJlZyA9IDwweDAgMHhmZjBmMDAwMCAweDEwMDA+LDwweDAgMHhjMDAwMDAwMCAweDgwMDAwMDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaV9hbHRlcmEudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGlfYWx0ZXJhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTMxOWRjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGlfYWx0ZXJhLnR4dApAQCAtMCwwICsxLDUgQEAKK0FsdGVyYSBTUEkKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiQUxUUixzcGktMS4wIi4gPERFUFJFQ0FURUQ+CistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImFsdHIsc3BpLTEuMCIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaV9hdG1lbC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaV9hdG1lbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI1ODhiMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpX2F0bWVsLnR4dApAQCAtMCwwICsxLDM3IEBACitBdG1lbCBTUEkgZGV2aWNlCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImF0bWVsLGF0OTFybTkyMDAtc3BpIi4KKy0gcmVnOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBzcGkgaW50ZXJydXB0CistIGNzLWdwaW9zOiBjaGlwc2VsZWN0cyAob3B0aW9uYWwgZm9yIFNQSSBjb250cm9sbGVyIHZlcnNpb24gPj0gMiB3aXRoIHRoZQorICBDaGlwIFNlbGVjdCBBY3RpdmUgQWZ0ZXIgVHJhbnNmZXIgZmVhdHVyZSkuCistIGNsb2NrLW5hbWVzOiB0dXBsZSBsaXN0aW5nIGlucHV0IGNsb2NrIG5hbWVzLgorCVJlcXVpcmVkIGVsZW1lbnRzOiAic3BpX2NsayIKKy0gY2xvY2tzOiBwaGFuZGxlcyB0byBpbnB1dCBjbG9ja3MuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGF0bWVsLGZpZm8tc2l6ZTogbWF4aW11bSBudW1iZXIgb2YgZGF0YSB0aGUgUlggYW5kIFRYIEZJRk9zIGNhbiBzdG9yZSBmb3IgRklGTworICBjYXBhYmxlIFNQSSBjb250cm9sbGVycy4KKworRXhhbXBsZToKKworc3BpMTogc3BpQGZmZmNjMDAwIHsKKwljb21wYXRpYmxlID0gImF0bWVsLGF0OTFybTkyMDAtc3BpIjsKKwlyZWcgPSA8MHhmZmZjYzAwMCAweDQwMDA+OworCWludGVycnVwdHMgPSA8MTMgNCA1PjsKKwkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkjc2l6ZS1jZWxscyA9IDwwPjsKKwljbG9ja3MgPSA8JnNwaTFfY2xrPjsKKwljbG9jay1uYW1lcyA9ICJzcGlfY2xrIjsKKwljcy1ncGlvcyA9IDwmcGlvQiAzIDA+OworCWF0bWVsLGZpZm8tc2l6ZSA9IDwzMj47CisJc3RhdHVzID0gIm9rYXkiOworCisJbW1jLXNsb3RAMCB7CisJCWNvbXBhdGlibGUgPSAibW1jLXNwaS1zbG90IjsKKwkJcmVnID0gPDA+OworCQlncGlvcyA9IDwmcGlvQyA0IDA+OwkvKiBDRCAqLworCQlzcGktbWF4LWZyZXF1ZW5jeSA9IDwyNTAwMDAwMD47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaV9vY190aW55LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpX29jX3RpbnkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5NWMwYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaV9vY190aW55LnR4dApAQCAtMCwwICsxLDEyIEBACitPcGVuQ29yZXMgdGlueSBTUEkKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAib3BlbmNvcmVzLHRpbnktc3BpLXJ0bHN2bjIiLgorLSBncGlvcyA6IHNob3VsZCBzcGVjaWZ5IEdQSU9zIHVzZWQgZm9yIGNoaXBzZWxlY3QuCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjbG9jay1mcmVxdWVuY3kgOiBpbnB1dCBjbG9jayBmcmVxdWVuY3kgdG8gdGhlIGNvcmUuCistIGJhdWQtd2lkdGg6IHdpZHRoLCBpbiBiaXRzLCBvZiB0aGUgcHJvZ3JhbW1hYmxlIGRpdmlkZXIgdXNlZCB0byBzY2FsZQorCXRoZSBpbnB1dCBjbG9jayB0byBTQ0xLLgorCitUaGUgY2xvY2stZnJlcXVlbmN5IGFuZCBiYXVkLXdpZHRoIHByb3BlcnRpZXMgYXJlIG5lZWRlZCBvbmx5IGlmIHRoZSBkaXZpZGVyCitpcyBwcm9ncmFtbWFibGUuIFRoZXkgYXJlIG5vdCBuZWVkZWQgaWYgdGhlIGRpdmlkZXIgaXMgZml4ZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaV9wbDAyMi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaV9wbDAyMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQxNjczYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpX3BsMDIyLnR4dApAQCAtMCwwICsxLDcwIEBACitBUk0gUEwwMjIgU1BJIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJhcm0scGwwMjIiLCAiYXJtLHByaW1lY2VsbCIKKy0gcmVnIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorLSBpbnRlcnJ1cHRzIDogU2hvdWxkIGNvbnRhaW4gU1BJIGNvbnRyb2xsZXIgaW50ZXJydXB0CistIG51bS1jcyA6IHRvdGFsIG51bWJlciBvZiBjaGlwc2VsZWN0cworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjcy1ncGlvcyA6IHNob3VsZCBzcGVjaWZ5IEdQSU9zIHVzZWQgZm9yIGNoaXBzZWxlY3RzLgorICBUaGUgZ3Bpb3Mgd2lsbCBiZSByZWZlcnJlZCB0byBhcyByZWcgPSA8aW5kZXg+IGluIHRoZSBTUEkgY2hpbGQgbm9kZXMuCisgIElmIHVuc3BlY2lmaWVkLCBhIHNpbmdsZSBTUEkgZGV2aWNlIHdpdGhvdXQgYSBjaGlwIHNlbGVjdCBjYW4gYmUgdXNlZC4KKy0gcGwwMjIsYXV0b3N1c3BlbmQtZGVsYXkgOiBkZWxheSBpbiBtcyBmb2xsb3dpbmcgdHJhbnNmZXIgY29tcGxldGlvbiBiZWZvcmUKKwkJCSAgICB0aGUgcnVudGltZSBwb3dlciBtYW5hZ2VtZW50IHN5c3RlbSBzdXNwZW5kcyB0aGUKKwkJCSAgICBkZXZpY2UuIEEgc2V0dGluZyBvZiAwIGluZGljYXRlcyBubyBkZWxheSBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlIHdpbGwgYmUgc3VzcGVuZGVkIGltbWVkaWF0ZWx5CistIHBsMDIyLHJ0IDogaW5kaWNhdGVzIHRoZSBjb250cm9sbGVyIHNob3VsZCBydW4gdGhlIG1lc3NhZ2UgcHVtcCB3aXRoIHJlYWx0aW1lCisgICAgICAgICAgICAgcHJpb3JpdHkgdG8gbWluaW1pc2UgdGhlIHRyYW5zZmVyIGxhdGVuY3kgb24gdGhlIGJ1cyAoYm9vbGVhbikKKy0gZG1hcyA6IFR3byBvciBtb3JlIERNQSBjaGFubmVsIHNwZWNpZmllcnMgZm9sbG93aW5nIHRoZSBjb252ZW50aW9uIG91dGxpbmVkCisgICAgICAgICBpbiBiaW5kaW5ncy9kbWEvZG1hLnR4dAorLSBkbWEtbmFtZXM6IE5hbWVzIGZvciB0aGUgZG1hIGNoYW5uZWxzLCBpZiBwcmVzZW50LiBUaGVyZSBtdXN0IGJlIGF0CisJICAgICBsZWFzdCBvbmUgY2hhbm5lbCBuYW1lZCAidHgiIGZvciB0cmFuc21pdCBhbmQgbmFtZWQgInJ4IiBmb3IKKyAgICAgICAgICAgICByZWNlaXZlLgorCisKK1NQSSBzbGF2ZSBub2RlcyBtdXN0IGJlIGNoaWxkcmVuIG9mIHRoZSBTUEkgbWFzdGVyIG5vZGUgYW5kIGNhbgorY29udGFpbiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMuCisKKy0gcGwwMjIsaW50ZXJmYWNlIDogaW50ZXJmYWNlIHR5cGU6CisJMDogU1BJCisJMTogVGV4YXMgSW5zdHJ1bWVudHMgU3luY2hyb25vdXMgU2VyaWFsIEZyYW1lIEZvcm1hdAorCTI6IE1pY3Jvd2lyZSAoSGFsZiBEdXBsZXgpCistIHBsMDIyLGNvbS1tb2RlIDogcG9sbGluZywgaW50ZXJydXB0IG9yIGRtYQorLSBwbDAyMixyeC1sZXZlbC10cmlnIDogUnggRklGTyB3YXRlcm1hcmsgbGV2ZWwKKy0gcGwwMjIsdHgtbGV2ZWwtdHJpZyA6IFR4IEZJRk8gd2F0ZXJtYXJrIGxldmVsCistIHBsMDIyLGN0cmwtbGVuIDogTWljcm93aXJlIGludGVyZmFjZTogQ29udHJvbCBsZW5ndGgKKy0gcGwwMjIsd2FpdC1zdGF0ZSA6IE1pY3Jvd2lyZSBpbnRlcmZhY2U6IFdhaXQgc3RhdGUKKy0gcGwwMjIsZHVwbGV4IDogTWljcm93aXJlIGludGVyZmFjZTogRnVsbC9IYWxmIGR1cGxleAorCisKK0V4YW1wbGU6CisKKwlzcGlAZTAxMDAwMDAgeworCQljb21wYXRpYmxlID0gImFybSxwbDAyMiIsICJhcm0scHJpbWVjZWxsIjsKKwkJcmVnID0gPDB4ZTAxMDAwMDAgMHgxMDAwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMzEgMHg0PjsKKwkJZG1hcyA9IDwmZG1hLWNvbnRyb2xsZXIgMjMgMT4sCisJCQk8JmRtYS1jb250cm9sbGVyIDI0IDA+OworCQlkbWEtbmFtZXMgPSAicngiLCAidHgiOworCisJCW0yNXA4MEAxIHsKKwkJCWNvbXBhdGlibGUgPSAic3QsbTI1cDgwIjsKKwkJCXJlZyA9IDwxPjsKKwkJCXNwaS1tYXgtZnJlcXVlbmN5ID0gPDEyMDAwMDAwPjsKKwkJCXNwaS1jcG9sOworCQkJc3BpLWNwaGE7CisJCQlwbDAyMixoaWVyYXJjaHkgPSA8MD47CisJCQlwbDAyMixpbnRlcmZhY2UgPSA8MD47CisJCQlwbDAyMixzbGF2ZS10eC1kaXNhYmxlOworCQkJcGwwMjIsY29tLW1vZGUgPSA8MHgyPjsKKwkJCXBsMDIyLHJ4LWxldmVsLXRyaWcgPSA8MD47CisJCQlwbDAyMix0eC1sZXZlbC10cmlnID0gPDA+OworCQkJcGwwMjIsY3RybC1sZW4gPSA8MHgxMT47CisJCQlwbDAyMix3YWl0LXN0YXRlID0gPDA+OworCQkJcGwwMjIsZHVwbGV4ID0gPDA+OworCQl9OworCX07CisJCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3RpX3FzcGkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS90aV9xc3BpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDFhMzYwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS90aV9xc3BpLnR4dApAQCAtMCwwICsxLDI4IEBACitUSSBRU1BJIGNvbnRyb2xsZXIuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgInRpLGRyYTd4eHgtcXNwaSIgb3IgInRpLGFtNDM3Mi1xc3BpIi4KKy0gcmVnOiBTaG91bGQgY29udGFpbiBRU1BJIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoLgorLSByZWctbmFtZXM6IFNob3VsZCBjb250YWluIHRoZSByZXNvdXJjZSByZWcgbmFtZXMuCisJLSBxc3BpX2Jhc2U6IFFzcGkgY29uZmlndXJhdGlvbiByZWdpc3RlciBBZGRyZXNzIHNwYWNlCisJLSBxc3BpX21tYXA6IE1lbW9yeSBtYXBwZWQgQWRkcmVzcyBzcGFjZQorCS0gKG9wdGlvbmFsKSBxc3BpX2N0cmxtb2Q6IENvbnRyb2wgbW9kdWxlIEFkZHJlc3Mgc3BhY2UKKy0gaW50ZXJydXB0czogc2hvdWxkIGNvbnRhaW4gdGhlIHFzcGkgaW50ZXJydXB0IG51bWJlci4KKy0gI2FkZHJlc3MtY2VsbHMsICNzaXplLWNlbGxzIDogTXVzdCBiZSBwcmVzZW50IGlmIHRoZSBkZXZpY2UgaGFzIHN1Yi1ub2RlcworLSB0aSxod21vZHM6IE5hbWUgb2YgdGhlIGh3bW9kIGFzc29jaWF0ZWQgdG8gdGhlIFFTUEkKKworUmVjb21tZW5kZWQgcHJvcGVydGllczoKKy0gc3BpLW1heC1mcmVxdWVuY3k6IERlZmluaXRpb24gYXMgcGVyCisgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1idXMudHh0CisKK0V4YW1wbGU6CisKK3FzcGk6IHFzcGlANGIzMDAwMDAgeworCWNvbXBhdGlibGUgPSAidGksZHJhN3h4eC1xc3BpIjsKKwlyZWcgPSA8MHg0NzkwMDAwMCAweDEwMD4sIDwweDMwMDAwMDAwIDB4M2ZmZmZmZj47CisJcmVnLW5hbWVzID0gInFzcGlfYmFzZSIsICJxc3BpX21tYXAiOworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDA+OworCXNwaS1tYXgtZnJlcXVlbmN5ID0gPDI1MDAwMDAwPjsKKwl0aSxod21vZHMgPSAicXNwaSI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwbWkvcWNvbSxzcG1pLXBtaWMtYXJiLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcG1pL3Fjb20sc3BtaS1wbWljLWFyYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE2YjliNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcG1pL3Fjb20sc3BtaS1wbWljLWFyYi50eHQKQEAgLTAsMCArMSw2NSBAQAorUXVhbGNvbW0gU1BNSSBDb250cm9sbGVyIChQTUlDIEFyYml0ZXIpCisKK1RoZSBTUE1JIFBNSUMgQXJiaXRlciBpcyBmb3VuZCBvbiBTbmFwZHJhZ29uIGNoaXBzZXRzLiAgSXQgaXMgYW4gU1BNSQorY29udHJvbGxlciB3aXRoIHdyYXBwaW5nIGFyYml0cmF0aW9uIGxvZ2ljIHRvIGFsbG93IGZvciBtdWx0aXBsZSBvbi1jaGlwCitkZXZpY2VzIHRvIGNvbnRyb2wgYSBzaW5nbGUgU1BNSSBtYXN0ZXIuCisKK1RoZSBQTUlDIEFyYml0ZXIgY2FuIGFsc28gYWN0IGFzIGFuIGludGVycnVwdCBjb250cm9sbGVyLCBwcm92aWRpbmcgaW50ZXJydXB0cwordG8gc2xhdmUgZGV2aWNlcy4KKworU2VlIHNwbWkudHh0IGZvciB0aGUgZ2VuZXJpYyBTUE1JIGNvbnRyb2xsZXIgYmluZGluZyByZXF1aXJlbWVudHMgZm9yIGNoaWxkCitub2Rlcy4KKworU2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pbnRlcnJ1cHRzLnR4dCBmb3IKK2dlbmVyaWMgaW50ZXJydXB0IGNvbnRyb2xsZXIgYmluZGluZyBkb2N1bWVudGF0aW9uLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJxY29tLHNwbWktcG1pYy1hcmIiLgorLSByZWctbmFtZXMgIDogbXVzdCBjb250YWluOgorICAgICAiY29yZSIgLSBjb3JlIHJlZ2lzdGVycworICAgICAiaW50ciIgLSBpbnRlcnJ1cHQgY29udHJvbGxlciByZWdpc3RlcnMKKyAgICAgImNuZmciIC0gY29uZmlndXJhdGlvbiByZWdpc3RlcnMKKyAgIFJlZ2lzdGVycyB1c2VkIG9ubHkgZm9yIFYyIFBNSUMgQXJiaXRlcjoKKyAgICAgImNobmxzIiAgLSB0eC1jaGFubmVsIHBlciB2aXJ0dWFsIHNsYXZlIHJlZ2lzdGVycy4KKyAgICAgIm9ic3J2ciIgLSByeC1jaGFubmVsIChjYWxsZWQgb2JzZXJ2ZXIpIHBlciB2aXJ0dWFsIHNsYXZlIHJlZ2lzdGVycy4KKworLSByZWcgOiBhZGRyZXNzICsgc2l6ZSBwYWlycyBkZXNjcmliaW5nIHRoZSBQTUlDIGFyYiByZWdpc3RlciBzZXRzOyBvcmRlciBtdXN0CisgICAgICAgIGNvcnJlc3BvbmQgd2l0aCB0aGUgb3JkZXIgb2YgZW50cmllcyBpbiByZWctbmFtZXMKKy0gI2FkZHJlc3MtY2VsbHMgOiBtdXN0IGJlIHNldCB0byAyCistICNzaXplLWNlbGxzIDogbXVzdCBiZSBzZXQgdG8gMAorLSBxY29tLGVlIDogaW5kaWNhdGVzIHRoZSBhY3RpdmUgRXhlY3V0aW9uIEVudmlyb25tZW50IGlkZW50aWZpZXIgKDAtNSkKKy0gcWNvbSxjaGFubmVsIDogd2hpY2ggb2YgdGhlIFBNSUMgQXJiIHByb3ZpZGVkIGNoYW5uZWxzIHRvIHVzZSBmb3IgYWNjZXNzZXMgKDAtNSkKKy0gaW50ZXJydXB0cyA6IGludGVycnVwdCBsaXN0IGZvciB0aGUgUE1JQyBBcmIgY29udHJvbGxlciwgbXVzdCBjb250YWluIGEKKyAgICAgICAgICAgICAgIHNpbmdsZSBpbnRlcnJ1cHQgZW50cnkgZm9yIHRoZSBwZXJpcGhlcmFsIGludGVycnVwdAorLSBpbnRlcnJ1cHQtbmFtZXMgOiBjb3JyZXNwb25kaW5nIGludGVycnVwdCBuYW1lcyBmb3IgdGhlIGludGVycnVwdHMKKyAgICAgICAgICAgICAgICAgICAgbGlzdGVkIGluIHRoZSAnaW50ZXJydXB0cycgcHJvcGVydHksIG11c3QgY29udGFpbjoKKyAgICAgInBlcmlwaF9pcnEiIC0gc3VtbWFyeSBpbnRlcnJ1cHQgZm9yIFBNSUMgcGVyaXBoZXJhbHMKKy0gaW50ZXJydXB0LWNvbnRyb2xsZXIgOiBib29sZWFuIGluZGljYXRvciB0aGF0IHRoZSBQTUlDIGFyYml0ZXIgaXMgYW4gaW50ZXJydXB0IGNvbnRyb2xsZXIKKy0gI2ludGVycnVwdC1jZWxscyA6ICBtdXN0IGJlIHNldCB0byA0LiBJbnRlcnJ1cHRzIGFyZSBzcGVjaWZpZWQgYXMgYSA0LXR1cGxlOgorICAgIGNlbGwgMTogc2xhdmUgSUQgZm9yIHRoZSByZXF1ZXN0ZWQgaW50ZXJydXB0ICgwLTE1KQorICAgIGNlbGwgMjogcGVyaXBoZXJhbCBJRCBmb3IgcmVxdWVzdGVkIGludGVycnVwdCAoMC0yNTUpCisgICAgY2VsbCAzOiB0aGUgcmVxdWVzdGVkIHBlcmlwaGVyYWwgaW50ZXJydXB0ICgwLTcpCisgICAgY2VsbCA0OiBpbnRlcnJ1cHQgZmxhZ3MgaW5kaWNhdGluZyBsZXZlbC1zZW5zZSBpbmZvcm1hdGlvbiwgYXMgZGVmaW5lZCBpbgorICAgICAgICAgICAgZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaXJxLmgKKworRXhhbXBsZToKKworCXNwbWkgeworCQljb21wYXRpYmxlID0gInFjb20sc3BtaS1wbWljLWFyYiI7CisJCXJlZy1uYW1lcyA9ICJjb3JlIiwgImludHIiLCAiY25mZyI7CisJCXJlZyA9IDwweGZjNGNmMDAwIDB4MTAwMD4sCisJCSAgICAgIDwweGZjNGNiMDAwIDB4MTAwMD4sCisJCSAgICAgIDwweGZjNGNhMDAwIDB4MTAwMD47CisKKwkJaW50ZXJydXB0LW5hbWVzID0gInBlcmlwaF9pcnEiOworCQlpbnRlcnJ1cHRzID0gPDAgMTkwIDA+OworCisJCXFjb20sZWUgPSA8MD47CisJCXFjb20sY2hhbm5lbCA9IDwwPjsKKworCQkjYWRkcmVzcy1jZWxscyA9IDwyPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8ND47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcG1pL3NwbWkudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwbWkvc3BtaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJiMTBkMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcG1pL3NwbWkudHh0CkBAIC0wLDAgKzEsNDEgQEAKK1N5c3RlbSBQb3dlciBNYW5hZ2VtZW50IEludGVyZmFjZSAoU1BNSSkgQ29udHJvbGxlcgorCitUaGlzIGRvY3VtZW50IGRlZmluZXMgYSBnZW5lcmljIHNldCBvZiBiaW5kaW5ncyBmb3IgdXNlIGJ5IFNQTUkgY29udHJvbGxlcnMuICBBCitjb250cm9sbGVyIGlzIG1vZGVsbGVkIGluIGRldmljZSB0cmVlIGFzIGEgbm9kZSB3aXRoIHplcm8gb3IgbW9yZSBjaGlsZCBub2RlcywKK2VhY2ggcmVwcmVzZW50aW5nIGEgdW5pcXVlIHNsYXZlIG9uIHRoZSBidXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistICNhZGRyZXNzLWNlbGxzIDogbXVzdCBiZSBzZXQgdG8gMgorLSAjc2l6ZS1jZWxscyA6IG11c3QgYmUgc2V0IHRvIDAKKworQ2hpbGQgbm9kZXM6CisKK0FuIFNQTUkgY29udHJvbGxlciBub2RlIGNhbiBjb250YWluIHplcm8gb3IgbW9yZSBjaGlsZCBub2RlcyByZXByZXNlbnRpbmcgc2xhdmUKK2RldmljZXMgb24gdGhlIGJ1cy4gIENoaWxkICdyZWcnIHByb3BlcnRpZXMgYXJlIHNwZWNpZmllZCBhcyBhbiBhZGRyZXNzLCB0eXBlCitwYWlyLiAgVGhlIGFkZHJlc3MgbXVzdCBiZSBpbiB0aGUgcmFuZ2UgMC0xNSAoNCBiaXRzKS4gIFRoZSB0eXBlIG11c3QgYmUgb25lIG9mCitTUE1JX1VTSUQgKDApIG9yIFNQTUlfR1NJRCAoMSkgZm9yIFVuaXF1ZSBTbGF2ZSBJRCBvciBHcm91cCBTbGF2ZSBJRCByZXNwZWN0aXZlbHkuCitUaGVzZSBhcmUgdGhlIGlkZW50aWZpZXJzICJzdGF0aWNhbGx5IGFzc2lnbmVkIGJ5IHRoZSBzeXN0ZW0gaW50ZWdyYXRvciIsIGFzCitwZXIgdGhlIFNQTUkgc3BlYy4KKworRWFjaCBjaGlsZCBub2RlIG11c3QgaGF2ZSBvbmUgYW5kIG9ubHkgb25lICdyZWcnIGVudHJ5IG9mIHR5cGUgU1BNSV9VU0lELgorCisjaW5jbHVkZSA8ZHQtYmluZGluZ3Mvc3BtaS9zcG1pLmg+CisKKwlzcG1pQC4uIHsKKwkJY29tcGF0aWJsZSA9ICIuLi4iOworCQlyZWcgPSA8Li4uPjsKKworCQkjYWRkcmVzcy1jZWxscyA9IDwyPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJY2hpbGRAMCB7CisJCQljb21wYXRpYmxlID0gIi4uLiI7CisJCQlyZWcgPSA8MCBTUE1JX1VTSUQ+OworCQl9OworCisJCWNoaWxkQDcgeworCQkJY29tcGF0aWJsZSA9ICIuLi4iOworCQkJcmVnID0gPDcgU1BNSV9VU0lECisJCQkgICAgICAgMyBTUE1JX0dTSUQ+OworCQl9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3RhZ2luZy9paW8vYWRjL2xwYzMyeHgtYWRjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zdGFnaW5nL2lpby9hZGMvbHBjMzJ4eC1hZGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNjI5ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3RhZ2luZy9paW8vYWRjL2xwYzMyeHgtYWRjLnR4dApAQCAtMCwwICsxLDE2IEBACisqIE5YUCBMUEMzMnh4IFNvQyBBREMgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBtdXN0IGJlICJueHAsbHBjMzIyMC1hZGMiCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICByZWdpb24uCistIGludGVycnVwdHM6IFRoZSBBREMgaW50ZXJydXB0CisKK0V4YW1wbGU6CisKKwlhZGNANDAwNDgwMDAgeworCQljb21wYXRpYmxlID0gIm54cCxscGMzMjIwLWFkYyI7CisJCXJlZyA9IDwweDQwMDQ4MDAwIDB4MTAwMD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1pYz47CisJCWludGVycnVwdHMgPSA8MzkgMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zdGFnaW5nL2lpby9hZGMvbXhzLWxyYWRjLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zdGFnaW5nL2lpby9hZGMvbXhzLWxyYWRjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTVmYjExCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3N0YWdpbmcvaWlvL2FkYy9teHMtbHJhZGMudHh0CkBAIC0wLDAgKzEsNDcgQEAKKyogRnJlZXNjYWxlIE1YUyBMUkFEQyBkZXZpY2UgZHJpdmVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAiZnNsLGlteDIzLWxyYWRjIiBmb3IgaS5NWDIzIFNvQyBhbmQgImZzbCxpbXgyOC1scmFkYyIKKyAgICAgICAgICAgICAgZm9yIGkuTVgyOCBTb0MKKy0gcmVnOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiB0aGUgTFJBREMgaW50ZXJydXB0cworCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBmc2wsbHJhZGMtdG91Y2hzY3JlZW4td2lyZXM6IE51bWJlciBvZiB3aXJlcyB1c2VkIHRvIGNvbm5lY3QgdGhlIHRvdWNoc2NyZWVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gTFJBREMuIFZhbGlkIHZhbHVlIGlzIGVpdGhlciA0IG9yIDUuIElmIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eSBpcyBub3QgcHJlc2VudCwgdGhlbiB0aGUgdG91Y2hzY3JlZW4gaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZC4gNSB3aXJlcyBpcyB2YWxpZCBmb3IgaS5NWDI4IFNvQyBvbmx5LgorLSBmc2wsYXZlLWN0cmw6IG51bWJlciBvZiBzYW1wbGVzIHBlciBkaXJlY3Rpb24gdG8gY2FsY3VsYXRlIGFuIGF2ZXJhZ2UgdmFsdWUuCisgICAgICAgICAgICAgICAgQWxsb3dlZCB2YWx1ZSBpcyAxIC4uLiAzMiwgZGVmYXVsdCBpcyA0CistIGZzbCxhdmUtZGVsYXk6IGRlbGF5IGJldHdlZW4gY29uc2VjdXRpdmUgc2FtcGxlcy4gQWxsb3dlZCB2YWx1ZSBpcworICAgICAgICAgICAgICAgICAyIC4uLiAyMDQ4LiBJdCBpcyB1c2VkIGlmICdmc2wsYXZlLWN0cmwnID4gMSwgY291bnRzIGF0CisgICAgICAgICAgICAgICAgIDIga0h6IGFuZCBpdHMgZGVmYXVsdCBpcyAyICg9IDEgbXMpCistIGZzbCxzZXR0bGluZzogZGVsYXkgYmV0d2VlbiBwbGF0ZSBzd2l0Y2ggdG8gbmV4dCBzYW1wbGUuIEFsbG93ZWQgdmFsdWUgaXMKKyAgICAgICAgICAgICAgICAxIC4uLiAyMDQ3LiBJdCBjb3VudHMgYXQgMiBrSHogYW5kIGl0cyBkZWZhdWx0IGlzCisgICAgICAgICAgICAgICAgMTAgKD0gNSBtcykKKworRXhhbXBsZSBmb3IgaS5NWDIzIFNvQzoKKworCWxyYWRjQDgwMDUwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsaW14MjMtbHJhZGMiOworCQlyZWcgPSA8MHg4MDA1MDAwMCAweDIwMDA+OworCQlpbnRlcnJ1cHRzID0gPDM2IDM3IDM4IDM5IDQwIDQxIDQyIDQzIDQ0PjsKKwkJc3RhdHVzID0gIm9rYXkiOworCQlmc2wsbHJhZGMtdG91Y2hzY3JlZW4td2lyZXMgPSA8ND47CisJCWZzbCxhdmUtY3RybCA9IDw0PjsKKwkJZnNsLGF2ZS1kZWxheSA9IDwyPjsKKwkJZnNsLHNldHRsaW5nID0gPDEwPjsKKwl9OworCitFeGFtcGxlIGZvciBpLk1YMjggU29DOgorCisJbHJhZGNAODAwNTAwMDAgeworCQljb21wYXRpYmxlID0gImZzbCxpbXgyOC1scmFkYyI7CisJCXJlZyA9IDwweDgwMDUwMDAwIDB4MjAwMD47CisJCWludGVycnVwdHMgPSA8MTAgMTQgMTUgMTYgMTcgMTggMTkgMjAgMjEgMjIgMjMgMjQgMjU+OworCQlzdGF0dXMgPSAib2theSI7CisJCWZzbCxscmFkYy10b3VjaHNjcmVlbi13aXJlcyA9IDw1PjsKKwkJZnNsLGF2ZS1jdHJsID0gPDQ+OworCQlmc2wsYXZlLWRlbGF5ID0gPDI+OworCQlmc2wsc2V0dGxpbmcgPSA8MTA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3RhZ2luZy9paW8vYWRjL3NwZWFyLWFkYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3RhZ2luZy9paW8vYWRjL3NwZWFyLWFkYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJlYTIzYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zdGFnaW5nL2lpby9hZGMvc3BlYXItYWRjLnR4dApAQCAtMCwwICsxLDI2IEBACisqIFNUIFNQRUFyIEFEQyBkZXZpY2UgZHJpdmVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAic3Qsc3BlYXI2MDAtYWRjIgorLSByZWc6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCistIGludGVycnVwdC1wYXJlbnQ6IFNob3VsZCBiZSB0aGUgcGhhbmRsZSBmb3IgdGhlIGludGVycnVwdCBjb250cm9sbGVyCisgIHRoYXQgc2VydmljZXMgaW50ZXJydXB0cyBmb3IgdGhpcyBkZXZpY2UKKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gdGhlIEFEQyBpbnRlcnJ1cHQKKy0gc2FtcGxpbmctZnJlcXVlbmN5OiBEZWZhdWx0IHNhbXBsaW5nIGZyZXF1ZW5jeQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSB2cmVmLWV4dGVybmFsOiBFeHRlcm5hbCB2b2x0YWdlIHJlZmVyZW5jZSBpbiBtaWxsaS12b2x0cy4gSWYgb21pdHRlZAorICB0aGUgaW50ZXJuYWwgdm9sdGFnZSByZWZlcmVuY2Ugd2lsbCBiZSB1c2VkLgorLSBhdmVyYWdlLXNhbXBsZXM6IE51bWJlciBvZiBzYW1wbGVzIHRvIGdlbmVyYXRlIGFuIGF2ZXJhZ2UgdmFsdWUuIElmCisgIG9taXR0ZWQsIHNpbmdsZSBkYXRhIGNvbnZlcnNpb24gd2lsbCBiZSB1c2VkLgorCitFeGFtcGxlczoKKworCWFkYzogYWRjQGQ4MjAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzdCxzcGVhcjYwMC1hZGMiOworCQlyZWcgPSA8MHhkODIwMDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZ2aWMxPjsKKwkJaW50ZXJydXB0cyA9IDw2PjsKKwkJc2FtcGxpbmctZnJlcXVlbmN5ID0gPDUwMDAwMDA+OworCQl2cmVmLWV4dGVybmFsID0gPDI1MDA+OwkvKiAyLjVWIFZSZWYgKi8KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3N1Ym1pdHRpbmctcGF0Y2hlcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3VibWl0dGluZy1wYXRjaGVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDQ0ZWFlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3N1Ym1pdHRpbmctcGF0Y2hlcy50eHQKQEAgLTAsMCArMSw2NyBAQAorCisgIFN1Ym1pdHRpbmcgZGV2aWNldHJlZSAoRFQpIGJpbmRpbmcgcGF0Y2hlcworCitJLiBGb3IgcGF0Y2ggc3VibWl0dGVycworCisgIDApIE5vcm1hbCBwYXRjaCBzdWJtaXNzaW9uIHJ1bGVzIGZyb20gRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nUGF0Y2hlcworICAgICBhcHBsaWVzLgorCisgIDEpIFRoZSBEb2N1bWVudGF0aW9uLyBwb3J0aW9uIG9mIHRoZSBwYXRjaCBzaG91bGQgYmUgYSBzZXBhcmF0ZSBwYXRjaC4KKworICAyKSBTdWJtaXQgdGhlIGVudGlyZSBzZXJpZXMgdG8gdGhlIGRldmljZXRyZWUgbWFpbGluZ2xpc3QgYXQKKworICAgICAgIGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnCisKKyAgICAgYW5kIENjOiB0aGUgRFQgbWFpbnRhaW5lcnMuIFVzZSBzY3JpcHRzL2dldF9tYWludGFpbmVyLnBsIHRvIGlkZW50aWZ5CisgICAgIGFsbCBvZiB0aGUgRFQgbWFpbnRhaW5lcnMuCisKKyAgMykgVGhlIERvY3VtZW50YXRpb24vIHBvcnRpb24gb2YgdGhlIHBhdGNoIHNob3VsZCBjb21lIGluIHRoZSBzZXJpZXMgYmVmb3JlCisgICAgIHRoZSBjb2RlIGltcGxlbWVudGluZyB0aGUgYmluZGluZy4KKworICA0KSBBbnkgY29tcGF0aWJsZSBzdHJpbmdzIHVzZWQgaW4gYSBjaGlwIG9yIGJvYXJkIERUUyBmaWxlIG11c3QgYmUKKyAgICAgcHJldmlvdXNseSBkb2N1bWVudGVkIGluIHRoZSBjb3JyZXNwb25kaW5nIERUIGJpbmRpbmcgdGV4dCBmaWxlCisgICAgIGluIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy4gIFRoaXMgcnVsZSBhcHBsaWVzIGV2ZW4gaWYKKyAgICAgdGhlIExpbnV4IGRldmljZSBkcml2ZXIgZG9lcyBub3QgeWV0IG1hdGNoIG9uIHRoZSBjb21wYXRpYmxlCisgICAgIHN0cmluZy4gIFsgY2hlY2twYXRjaCB3aWxsIGVtaXQgd2FybmluZ3MgaWYgdGhpcyBzdGVwIGlzIG5vdAorICAgICBmb2xsb3dlZCBhcyBvZiBjb21taXQgYmZmNWRhNDMzNTI1NjUxMzQ5N2NjOGM3OWY5YTlkMTY2NWUwOTg2NAorICAgICAoImNoZWNrcGF0Y2g6IGFkZCBEVCBjb21wYXRpYmxlIHN0cmluZyBkb2N1bWVudGF0aW9uIGNoZWNrcyIpLiBdCisKKyAgNSkgVGhlIHdpbGRjYXJkICI8Y2hpcD4iIG1heSBiZSB1c2VkIGluIGNvbXBhdGlibGUgc3RyaW5ncywgYXMgaW4KKyAgICAgdGhlIGZvbGxvd2luZyBleGFtcGxlOgorCisgICAgICAgICAtIGNvbXBhdGlibGU6IE11c3QgY29udGFpbiAnIm52aWRpYSw8Y2hpcD4tcGNpZSIsCisgICAgICAgICAgICJudmlkaWEsdGVncmEyMC1wY2llIicgd2hlcmUgPGNoaXA+IGlzIHRlZ3JhMzAsIHRlZ3JhMTMyLCAuLi4KKworICAgICBBcyBpbiB0aGUgYWJvdmUgZXhhbXBsZSwgdGhlIGtub3duIHZhbHVlcyBvZiAiPGNoaXA+IiBzaG91bGQgYmUKKyAgICAgZG9jdW1lbnRlZCBpZiBpdCBpcyB1c2VkLgorCisgIDYpIElmIGEgZG9jdW1lbnRlZCBjb21wYXRpYmxlIHN0cmluZyBpcyBub3QgeWV0IG1hdGNoZWQgYnkgdGhlCisgICAgIGRyaXZlciwgdGhlIGRvY3VtZW50YXRpb24gc2hvdWxkIGFsc28gaW5jbHVkZSBhIGNvbXBhdGlibGUKKyAgICAgc3RyaW5nIHRoYXQgaXMgbWF0Y2hlZCBieSB0aGUgZHJpdmVyIChhcyBpbiB0aGUgIm52aWRpYSx0ZWdyYTIwLXBjaWUiCisgICAgIGV4YW1wbGUgYWJvdmUpLgorCisKK0lJLiBGb3Iga2VybmVsIG1haW50YWluZXJzCisKKyAgMSkgSWYgeW91IGFyZW4ndCBjb21mb3J0YWJsZSByZXZpZXdpbmcgYSBnaXZlbiBiaW5kaW5nLCByZXBseSB0byBpdCBhbmQgYXNrCisgICAgIHRoZSBkZXZpY2V0cmVlIG1haW50YWluZXJzIGZvciBndWlkYW5jZS4gIFRoaXMgd2lsbCBoZWxwIHRoZW0gcHJpb3JpdGl6ZQorICAgICB3aGljaCBvbmVzIHRvIHJldmlldyBhbmQgd2hpY2ggb25lcyBhcmUgb2sgdG8gbGV0IGdvLgorCisgIDIpIEZvciBkcml2ZXIgKG5vdCBzdWJzeXN0ZW0pIGJpbmRpbmdzOiBJZiB5b3UgYXJlIGNvbWZvcnRhYmxlIHdpdGggdGhlCisgICAgIGJpbmRpbmcsIGFuZCBpdCBoYXNuJ3QgcmVjZWl2ZWQgYW4gQWNrZWQtYnkgZnJvbSB0aGUgZGV2aWNldHJlZQorICAgICBtYWludGFpbmVycyBhZnRlciBhIGZldyB3ZWVrcywgZ28gYWhlYWQgYW5kIHRha2UgaXQuCisKKyAgICAgU3Vic3lzdGVtIGJpbmRpbmdzIChhbnl0aGluZyBhZmZlY3RpbmcgbW9yZSB0aGFuIGEgc2luZ2xlIGRldmljZSkKKyAgICAgdGhlbiBnZXR0aW5nIGEgZGV2aWNldHJlZSBtYWludGFpbmVyIHRvIHJldmlldyBpdCBpcyByZXF1aXJlZC4KKworICAzKSBGb3IgYSBzZXJpZXMgZ29pbmcgdGhvdWdoIG11bHRpcGxlIHRyZWVzLCB0aGUgYmluZGluZyBwYXRjaCBzaG91bGQgYmUKKyAgICAga2VwdCB3aXRoIHRoZSBkcml2ZXIgdXNpbmcgdGhlIGJpbmRpbmcuCisKK0lJSS4gTm90ZXMKKworICAwKSBQbGVhc2Ugc2VlIC4uLmJpbmRpbmdzL0FCSS50eHQgZm9yIGRldGFpbHMgcmVnYXJkaW5nIGRldmljZXRyZWUgQUJJLgorCisgIDEpIFRoaXMgZG9jdW1lbnQgaXMgaW50ZW5kZWQgYXMgYSBnZW5lcmFsIGZhbWlsaWFyaXphdGlvbiB3aXRoIHRoZSBwcm9jZXNzIGFzCisgICAgIGRlY2lkZWQgYXQgdGhlIDIwMTMgS2VybmVsIFN1bW1pdC4gIFdoZW4gaW4gZG91YnQsIHRoZSBjdXJyZW50IHdvcmQgb2YgdGhlCisgICAgIGRldmljZXRyZWUgbWFpbnRhaW5lcnMgb3ZlcnJ1bGVzIHRoaXMgZG9jdW1lbnQuICBJbiB0aGF0IHNpdHVhdGlvbiwgYSBwYXRjaAorICAgICB1cGRhdGluZyB0aGlzIGRvY3VtZW50IHdvdWxkIGJlIGFwcHJlY2lhdGVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RoZXJtYWwvYXJtYWRhLXRoZXJtYWwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RoZXJtYWwvYXJtYWRhLXRoZXJtYWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2OThlMGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGhlcm1hbC9hcm1hZGEtdGhlcm1hbC50eHQKQEAgLTAsMCArMSwyNCBAQAorKiBNYXJ2ZWxsIEFybWFkYSAzNzAvMzc1LzM4MC9YUCB0aGVybWFsIG1hbmFnZW1lbnQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOglTaG91bGQgYmUgc2V0IHRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCQltYXJ2ZWxsLGFybWFkYTM3MC10aGVybWFsCisJCW1hcnZlbGwsYXJtYWRhMzc1LXRoZXJtYWwKKwkJbWFydmVsbCxhcm1hZGEzODAtdGhlcm1hbAorCQltYXJ2ZWxsLGFybWFkYXhwLXRoZXJtYWwKKworLSByZWc6CQlEZXZpY2UncyByZWdpc3RlciBzcGFjZS4KKwkJVHdvIGVudHJpZXMgYXJlIGV4cGVjdGVkLCBzZWUgdGhlIGV4YW1wbGVzIGJlbG93LgorCQlUaGUgZmlyc3Qgb25lIGlzIHJlcXVpcmVkIGZvciB0aGUgc2Vuc29yIHJlZ2lzdGVyOworCQl0aGUgc2Vjb25kIG9uZSBpcyByZXF1aXJlZCBmb3IgdGhlIGNvbnRyb2wgcmVnaXN0ZXIKKwkJdG8gYmUgdXNlZCBmb3Igc2Vuc29yIGluaXRpYWxpemF0aW9uIChhLmsuYS4gY2FsaWJyYXRpb24pLgorCitFeGFtcGxlOgorCisJdGhlcm1hbEBkMDAxODMwMCB7CisJCWNvbXBhdGlibGUgPSAibWFydmVsbCxhcm1hZGEzNzAtdGhlcm1hbCI7CisgICAgICAgICAgICAgICAgcmVnID0gPDB4ZDAwMTgzMDAgMHg0CisJCSAgICAgICAweGQwMDE4MzA0IDB4ND47CisJCXN0YXR1cyA9ICJva2F5IjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RoZXJtYWwvZGI4NTAwLXRoZXJtYWwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RoZXJtYWwvZGI4NTAwLXRoZXJtYWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlMWMwNmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGhlcm1hbC9kYjg1MDAtdGhlcm1hbC50eHQKQEAgLTAsMCArMSw0NCBAQAorKiBTVC1Fcmljc3NvbiBEQjg1MDAgVGhlcm1hbAorCisqKiBUaGVybWFsIG5vZGUgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogInN0ZXJpY3Nzb24sZGI4NTAwLXRoZXJtYWwiOworLSByZWcgOiBhZGRyZXNzIHJhbmdlIG9mIHRoZSB0aGVybWFsIHNlbnNvciByZWdpc3RlcnM7CistIGludGVycnVwdHMgOiBpbnRlcnJ1cHRzIGdlbmVyYXRlZCBmcm9tIFBSQ01VOworLSBpbnRlcnJ1cHQtbmFtZXMgOiAiSVJRX0hPVE1PTl9MT1ciIGFuZCAiSVJRX0hPVE1PTl9ISUdIIjsKKy0gbnVtLXRyaXBzIDogbnVtYmVyIG9mIHRvdGFsIHRyaXAgcG9pbnRzLCB0aGlzIGlzIHJlcXVpcmVkLCBzZXQgaXQgMCBpZiBub25lLAorICBpZiBncmVhdGVyIHRoYW4gMCwgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIG11c3QgYmUgZGVmaW5lZDsKKy0gdHJpcE4tdGVtcCA6IHRlbXBlcmF0dXJlIG9mIHRyaXAgcG9pbnQgTiwgc2hvdWxkIGJlIGluIGFzY2VuZGluZyBvcmRlcjsKKy0gdHJpcE4tdHlwZSA6IHR5cGUgb2YgdHJpcCBwb2ludCBOLCBzaG91bGQgYmUgb25lIG9mICJhY3RpdmUiICJwYXNzaXZlIiAiaG90IgorICAiY3JpdGljYWwiOworLSB0cmlwTi1jZGV2LW51bSA6IG51bWJlciBvZiB0aGUgY29vbGluZyBkZXZpY2VzIHdoaWNoIGNhbiBiZSBib3VuZCB0byB0cmlwCisgIHBvaW50IE4sIHRoaXMgaXMgcmVxdWlyZWQgaWYgdHJpcCBwb2ludCBOIGlzIGRlZmluZWQsIHNldCBpdCAwIGlmIG5vbmUsCisgIG90aGVyd2lzZSB0aGUgZm9sbG93aW5nIGNvb2xpbmcgZGV2aWNlIG5hbWVzIG11c3QgYmUgZGVmaW5lZDsKKy0gdHJpcE4tY2Rldi1uYW1lTSA6IG5hbWUgb2YgdGhlIE5vLiBNIGNvb2xpbmcgZGV2aWNlIG9mIHRyaXAgcG9pbnQgTjsKKworVXN1YWxseSB0aGUgbnVtLXRyaXBzIGFuZCB0cmlwTi0qKiogYXJlIHNlcGFyYXRlZCBpbiBib2FyZCByZWxhdGVkIGR0cyBmaWxlcy4KKworRXhhbXBsZToKK3RoZXJtYWxAODAxNTczYzAgeworCWNvbXBhdGlibGUgPSAic3Rlcmljc3NvbixkYjg1MDAtdGhlcm1hbCI7CisJcmVnID0gPDB4ODAxNTczYzAgMHg0MD47CisJaW50ZXJydXB0cyA9IDwyMSAweDQ+LCA8MjIgMHg0PjsKKwlpbnRlcnJ1cHQtbmFtZXMgPSAiSVJRX0hPVE1PTl9MT1ciLCAiSVJRX0hPVE1PTl9ISUdIIjsKKworCW51bS10cmlwcyA9IDwzPjsKKworCXRyaXAwLXRlbXAgPSA8NzUwMDA+OworCXRyaXAwLXR5cGUgPSAiYWN0aXZlIjsKKwl0cmlwMC1jZGV2LW51bSA9IDwxPjsKKwl0cmlwMC1jZGV2LW5hbWUwID0gInRoZXJtYWwtY3B1ZnJlcS0wIjsKKworCXRyaXAxLXRlbXAgPSA8ODAwMDA+OworCXRyaXAxLXR5cGUgPSAiYWN0aXZlIjsKKwl0cmlwMS1jZGV2LW51bSA9IDwyPjsKKwl0cmlwMS1jZGV2LW5hbWUwID0gInRoZXJtYWwtY3B1ZnJlcS0wIjsKKwl0cmlwMS1jZGV2LW5hbWUxID0gInRoZXJtYWwtZmFuIjsKKworCXRyaXAyLXRlbXAgPSA8ODUwMDA+OworCXRyaXAyLXR5cGUgPSAiY3JpdGljYWwiOworCXRyaXAyLWNkZXYtbnVtID0gPDA+OworfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RoZXJtYWwvZG92ZS10aGVybWFsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aGVybWFsL2RvdmUtdGhlcm1hbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY0NzQ2NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aGVybWFsL2RvdmUtdGhlcm1hbC50eHQKQEAgLTAsMCArMSwxOCBAQAorKiBEb3ZlIFRoZXJtYWwKKworVGhpcyBkcml2ZXIgaXMgZm9yIERvdmUgU29DcyB3aGljaCBjb250YWluIGEgdGhlcm1hbCBzZW5zb3IuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAibWFydmVsbCxkb3ZlLXRoZXJtYWwiCistIHJlZyA6IEFkZHJlc3MgcmFuZ2Ugb2YgdGhlIHRoZXJtYWwgcmVnaXN0ZXJzCisKK1RoZSByZWcgcHJvcGVydGllcyBzaG91bGQgY29udGFpbiB0d28gcmFuZ2VzLiBUaGUgZmlyc3QgaXMgZm9yIHRoZQordGhyZWUgVGhlcm1hbCBNYW5hZ2VyIHJlZ2lzdGVycywgd2hpbGUgdGhlIHNlY29uZCByYW5nZSBjb250YWlucyB0aGUKK1RoZXJtYWwgRGlvZGUgQ29udHJvbCBSZWdpc3RlcnMuCisKK0V4YW1wbGU6CisKKwl0aGVybWFsQDEwMDc4IHsKKwkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLGRvdmUtdGhlcm1hbCI7CisJCXJlZyA9IDwweGQwMDFjIDB4MGM+LCA8MHhkMDA1YyAweDA4PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RoZXJtYWwvZXh5bm9zLXRoZXJtYWwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RoZXJtYWwvZXh5bm9zLXRoZXJtYWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5NTE1MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGhlcm1hbC9leHlub3MtdGhlcm1hbC50eHQKQEAgLTAsMCArMSwxMjEgQEAKKyogRXh5bm9zIFRoZXJtYWwgTWFuYWdlbWVudCBVbml0IChUTVUpCisKKyoqIFJlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IE9uZSBvZiB0aGUgZm9sbG93aW5nOgorCSAgICAgICAic2Ftc3VuZyxleHlub3MzMjUwLXRtdSIKKwkgICAgICAgInNhbXN1bmcsZXh5bm9zNDQxMi10bXUiCisJICAgICAgICJzYW1zdW5nLGV4eW5vczQyMTAtdG11IgorCSAgICAgICAic2Ftc3VuZyxleHlub3M1MjUwLXRtdSIKKwkgICAgICAgInNhbXN1bmcsZXh5bm9zNTI2MC10bXUiCisJICAgICAgICJzYW1zdW5nLGV4eW5vczU0MjAtdG11IiBmb3IgVE1VIGNoYW5uZWwgMCwgMSBvbiBFeHlub3M1NDIwCisJICAgICAgICJzYW1zdW5nLGV4eW5vczU0MjAtdG11LWV4dC10cmltaW5mbyIgZm9yIFRNVSBjaGFubmVscyAyLCAzIGFuZCA0CisJCQlFeHlub3M1NDIwIChNdXN0IHBhc3MgdHJpbWluZm8gYmFzZSBhbmQgdHJpbWluZm8gY2xvY2spCisJICAgICAgICJzYW1zdW5nLGV4eW5vczU0NDAtdG11IgorCSAgICAgICAic2Ftc3VuZyxleHlub3M3LXRtdSIKKy0gaW50ZXJydXB0LXBhcmVudCA6IFRoZSBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIKKy0gcmVnIDogQWRkcmVzcyByYW5nZSBvZiB0aGUgdGhlcm1hbCByZWdpc3RlcnMuIEZvciBzb2MncyB3aGljaCBoYXMgbXVsdGlwbGUKKwlpbnN0YW5jZXMgb2YgVE1VIGFuZCBzb21lIHJlZ2lzdGVycyBhcmUgc2hhcmVkIGFjcm9zcyBhbGwgVE1VJ3MgbGlrZQorCWludGVycnVwdCByZWxhdGVkIHRoZW4gMiBzZXQgb2YgcmVnaXN0ZXIgaGFzIHRvIHN1cHBsaWVkLiBGaXJzdCBzZXQKKwliZWxvbmdzCXRvIHJlZ2lzdGVyIHNldCBvZiBUTVUgaW5zdGFuY2UgYW5kIHNlY29uZCBzZXQgYmVsb25ncyB0bworCXJlZ2lzdGVycyBzaGFyZWQgd2l0aCB0aGUgVE1VIGluc3RhbmNlLgorCisgIE5PVEU6IE9uIEV4eW5vczU0MjAsIHRoZSBUUklNSU5GTyByZWdpc3RlciBpcyBtaXNwbGFjZWQgZm9yIFRNVQorCWNoYW5uZWxzIDIsIDMgYW5kIDQKKwlVc2UgInNhbXN1bmcsZXh5bm9zNTQyMC10bXUtZXh0LXRyaW1pbmZvIiBpbiBjYXNlcywgdGhlcmUgaXMgYSBtaXNwbGFjZWQKKwlyZWdpc3RlciwgYWxzbyBwcm92aWRlIGNsb2NrIHRvIGFjY2VzcyB0aGF0IGJhc2UuCisKKwlUUklNSU5GTyBhdCAweDEwMDZjMDAwIGNvbnRhaW5zIGRhdGEgZm9yIFRNVSBjaGFubmVsIDMKKwlUUklNSU5GTyBhdCAweDEwMGEwMDAwIGNvbnRhaW5zIGRhdGEgZm9yIFRNVSBjaGFubmVsIDQKKwlUUklNSU5GTyBhdCAweDEwMDY4MDAwIGNvbnRhaW5zIGRhdGEgZm9yIFRNVSBjaGFubmVsIDIKKworLSBpbnRlcnJ1cHRzIDogU2hvdWxkIGNvbnRhaW4gaW50ZXJydXB0IGZvciB0aGVybWFsIHN5c3RlbQorLSBjbG9ja3MgOiBUaGUgbWFpbiBjbG9ja3MgZm9yIFRNVSBkZXZpY2UKKwktLSAxLiBvcGVyYXRpb25hbCBjbG9jayBmb3IgVE1VIGNoYW5uZWwKKwktLSAyLiBvcHRpb25hbCBjbG9jayB0byBhY2Nlc3MgdGhlIHNoYXJlZCByZWdpc3RlcnMgb2YgVE1VIGNoYW5uZWwKKwktLSAzLiBvcHRpb25hbCBzcGVjaWFsIGNsb2NrIGZvciBmdW5jdGlvbmFsIG9wZXJhdGlvbgorLSBjbG9jay1uYW1lcyA6IFRoZXJtYWwgc3lzdGVtIGNsb2NrIG5hbWUKKwktLSAidG11X2FwYmlmIiBvcGVyYXRpb25hbCBjbG9jayBmb3IgY3VycmVudCBUTVUgY2hhbm5lbAorCS0tICJ0bXVfdHJpbWluZm9fYXBiaWYiIGNsb2NrIHRvIGFjY2VzcyB0aGUgc2hhcmVkIHRyaW1pbmZvIHJlZ2lzdGVyCisJCWZvciBjdXJyZW50IFRNVSBjaGFubmVsCisJLS0gInRtdV9zY2xrIiBjbG9jayBmb3IgZnVuY3Rpb25hbCBvcGVyYXRpb24gb2YgdGhlIGN1cnJlbnQgVE1VCisJCWNoYW5uZWwKKy0gdnRtdS1zdXBwbHk6IFRoaXMgZW50cnkgaXMgb3B0aW9uYWwgYW5kIHByb3ZpZGVzIHRoZSByZWd1bGF0b3Igbm9kZSBzdXBwbHlpbmcKKwkJdm9sdGFnZSB0byBUTVUuIElmIG5lZWRlZCB0aGlzIGVudHJ5IGNhbiBiZSBwbGFjZWQgaW5zaWRlCisJCWJvYXJkL3BsYXRmb3JtIHNwZWNpZmljIGR0cyBmaWxlLgorRm9sbG93aW5nIHByb3BlcnRpZXMgYXJlIG1hbmRhdG9yeSAoZGVwZW5kaW5nIG9uIFNvQyk6CistIHNhbXN1bmcsdG11X2dhaW46IEdhaW4gdmFsdWUgZm9yIGludGVybmFsIFRNVSBvcGVyYXRpb24uCistIHNhbXN1bmcsdG11X3JlZmVyZW5jZV92b2x0YWdlOiBWYWx1ZSBvZiBUTVUgSVAgYmxvY2sncyByZWZlcmVuY2Ugdm9sdGFnZQorLSBzYW1zdW5nLHRtdV9ub2lzZV9jYW5jZWxfbW9kZTogTW9kZSBmb3Igbm9pc2UgY2FuY2VsbGF0aW9uCistIHNhbXN1bmcsdG11X2VmdXNlX3ZhbHVlOiBEZWZhdWx0IGxldmVsIG9mIHRlbXBlcmF0dXJlIC0gaXQgaXMgbmVlZGVkIHdoZW4KKwkJCSAgIGluIGZhY3RvcnkgZnVzaW5nIHByb2R1Y2VkIHdyb25nIHZhbHVlCistIHNhbXN1bmcsdG11X21pbl9lZnVzZV92YWx1ZTogTWluaW11bSB0ZW1wZXJhdHVyZSBmdXNlZCB2YWx1ZQorLSBzYW1zdW5nLHRtdV9tYXhfZWZ1c2VfdmFsdWU6IE1heGltdW0gdGVtcGVyYXR1cmUgZnVzZWQgdmFsdWUKKy0gc2Ftc3VuZyx0bXVfZmlyc3RfcG9pbnRfdHJpbTogRmlyc3QgcG9pbnQgdHJpbW1pbmcgdmFsdWUKKy0gc2Ftc3VuZyx0bXVfc2Vjb25kX3BvaW50X3RyaW06IFNlY29uZCBwb2ludCB0cmltbWluZyB2YWx1ZQorLSBzYW1zdW5nLHRtdV9kZWZhdWx0X3RlbXBfb2Zmc2V0OiBEZWZhdWx0IHRlbXBlcmF0dXJlIG9mZnNldAorLSBzYW1zdW5nLHRtdV9jYWxfdHlwZTogQ2FsbGlicmF0aW9uIHR5cGUKKworRXhhbXBsZSAxKToKKworCXRtdUAxMDBDMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M0NDEyLXRtdSI7CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmNvbWJpbmVyPjsKKwkJcmVnID0gPDB4MTAwQzAwMDAgMHgxMDA+OworCQlpbnRlcnJ1cHRzID0gPDIgND47CisJCWNsb2NrcyA9IDwmY2xvY2sgMzgzPjsKKwkJY2xvY2stbmFtZXMgPSAidG11X2FwYmlmIjsKKwkJc3RhdHVzID0gImRpc2FibGVkIjsKKwkJdnRtdS1zdXBwbHkgPSA8JnRtdV9yZWd1bGF0b3Jfbm9kZT47CisJCSNpbmNsdWRlICJleHlub3M0NDEyLXRtdS1zZW5zb3ItY29uZi5kdHNpIgorCX07CisKK0V4YW1wbGUgMik6CisKKwl0bXVjdHJsXzA6IHRtdWN0cmxAMTYwMTE4IHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczU0NDAtdG11IjsKKwkJcmVnID0gPDB4MTYwMTE4IDB4MjMwPiwgPDB4MTYwMzY4IDB4MTA+OworCQlpbnRlcnJ1cHRzID0gPDAgNTggMD47CisJCWNsb2NrcyA9IDwmY2xvY2sgMjE+OworCQljbG9jay1uYW1lcyA9ICJ0bXVfYXBiaWYiOworCQkjaW5jbHVkZSAiZXh5bm9zNTQ0MC10bXUtc2Vuc29yLWNvbmYuZHRzaSIKKwl9OworCitFeGFtcGxlIDMpOiAoSW4gY2FzZSBvZiBFeHlub3M1NDIwICJ3aXRoIG1pc3BsYWNlZCBUUklNSU5GTyByZWdpc3RlciIpCisJdG11X2NwdTI6IHRtdUAxMDA2ODAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M1NDIwLXRtdS1leHQtdHJpbWluZm8iOworCQlyZWcgPSA8MHgxMDA2ODAwMCAweDEwMD4sIDwweDEwMDZjMDAwIDB4ND47CisJCWludGVycnVwdHMgPSA8MCAxODQgMD47CisJCWNsb2NrcyA9IDwmY2xvY2sgMzE4PiwgPCZjbG9jayAzMTg+OworCQljbG9jay1uYW1lcyA9ICJ0bXVfYXBiaWYiLCAidG11X3RyaW1pbmZvX2FwYmlmIjsKKwkJI2luY2x1ZGUgImV4eW5vczQ0MTItdG11LXNlbnNvci1jb25mLmR0c2kiCisJfTsKKworCXRtdV9jcHUzOiB0bXVAMTAwNmMwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTQyMC10bXUtZXh0LXRyaW1pbmZvIjsKKwkJcmVnID0gPDB4MTAwNmMwMDAgMHgxMDA+LCA8MHgxMDBhMDAwMCAweDQ+OworCQlpbnRlcnJ1cHRzID0gPDAgMTg1IDA+OworCQljbG9ja3MgPSA8JmNsb2NrIDMxOD4sIDwmY2xvY2sgMzE5PjsKKwkJY2xvY2stbmFtZXMgPSAidG11X2FwYmlmIiwgInRtdV90cmltaW5mb19hcGJpZiI7CisJCSNpbmNsdWRlICJleHlub3M0NDEyLXRtdS1zZW5zb3ItY29uZi5kdHNpIgorCX07CisKKwl0bXVfZ3B1OiB0bXVAMTAwYTAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTQyMC10bXUtZXh0LXRyaW1pbmZvIjsKKwkJcmVnID0gPDB4MTAwYTAwMDAgMHgxMDA+LCA8MHgxMDA2ODAwMCAweDQ+OworCQlpbnRlcnJ1cHRzID0gPDAgMjE1IDA+OworCQljbG9ja3MgPSA8JmNsb2NrIDMxOT4sIDwmY2xvY2sgMzE4PjsKKwkJY2xvY2stbmFtZXMgPSAidG11X2FwYmlmIiwgInRtdV90cmltaW5mb19hcGJpZiI7CisJCSNpbmNsdWRlICJleHlub3M0NDEyLXRtdS1zZW5zb3ItY29uZi5kdHNpIgorCX07CisKK05vdGU6IEZvciBtdWx0aS1pbnN0YW5jZSB0bXUgZWFjaCBpbnN0YW5jZSBzaG91bGQgaGF2ZSBhbiBhbGlhcyBjb3JyZWN0bHkKK251bWJlcmVkIGluICJhbGlhc2VzIiBub2RlLgorCitFeGFtcGxlOgorCithbGlhc2VzIHsKKwl0bXVjdHJsMCA9ICZ0bXVjdHJsXzA7CisJdG11Y3RybDEgPSAmdG11Y3RybF8xOworCXRtdWN0cmwyID0gJnRtdWN0cmxfMjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGhlcm1hbC9oaXNpbGljb24tdGhlcm1hbC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGhlcm1hbC9oaXNpbGljb24tdGhlcm1hbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ4ZmM1MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aGVybWFsL2hpc2lsaWNvbi10aGVybWFsLnR4dApAQCAtMCwwICsxLDIzIEBACisqIFRlbXBlcmF0dXJlIFNlbnNvciBvbiBoaXNpbGljb24gU29DcworCisqKiBSZXF1aXJlZCBwcm9wZXJ0aWVzIDoKKworLSBjb21wYXRpYmxlOiAiaGlzaWxpY29uLHRzZW5zb3IiLgorLSByZWc6IHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGVybWFsIHNlbnNvciBhbmQgbGVuZ3RoIG9mIG1lbW9yeSBtYXBwZWQKKyAgcmVnaW9uLgorLSBpbnRlcnJ1cHQ6IFRoZSBpbnRlcnJ1cHQgbnVtYmVyIHRvIHRoZSBjcHUuIERlZmluZXMgdGhlIGludGVycnVwdCB1c2VkCisgIGJ5IC9TT0NUSEVSTS90c2Vuc29yLgorLSBjbG9jay1uYW1lczogSW5wdXQgY2xvY2sgbmFtZSwgc2hvdWxkIGJlICd0aGVybWFsX2NsaycuCistIGNsb2NrczogcGhhbmRsZXMgZm9yIGNsb2NrIHNwZWNpZmllZCBpbiAiY2xvY2stbmFtZXMiIHByb3BlcnR5LgorLSAjdGhlcm1hbC1zZW5zb3ItY2VsbHM6IFNob3VsZCBiZSAxLiBTZWUgLi90aGVybWFsLnR4dCBmb3IgYSBkZXNjcmlwdGlvbi4KKworRXhhbXBsZSA6CisKKwl0c2Vuc29yOiB0c2Vuc29yQDAsZjcwMzA3MDAgeworCQljb21wYXRpYmxlID0gImhpc2lsaWNvbix0c2Vuc29yIjsKKwkJcmVnID0gPDB4MCAweGY3MDMwNzAwIDB4MCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgNyAweDQ+OworCQljbG9ja3MgPSA8JnN5c19jdHJsIEhJNjIyMF9UU0VOU09SX0NMSz47CisJCWNsb2NrLW5hbWVzID0gInRoZXJtYWxfY2xrIjsKKwkJI3RoZXJtYWwtc2Vuc29yLWNlbGxzID0gPDE+OworCX0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aGVybWFsL2lteC10aGVybWFsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aGVybWFsL2lteC10aGVybWFsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzY3YmQ1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RoZXJtYWwvaW14LXRoZXJtYWwudHh0CkBAIC0wLDAgKzEsMjQgQEAKKyogVGVtcGVyYXR1cmUgTW9uaXRvciAoVEVNUE1PTikgb24gRnJlZXNjYWxlIGkuTVggU29DcworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogImZzbCxpbXg2cS10ZW1wbW9uIiBmb3IgaS5NWDZRLCAiZnNsLGlteDZzeC10ZW1wbW9uIiBmb3IgaS5NWDZTWC4KKyAgaS5NWDZTWCBoYXMgdHdvIG1vcmUgSVJRcyB0aGFuIGkuTVg2USwgb25lIGlzIElSUV9MT1cgYW5kIHRoZSBvdGhlciBpcyBJUlFfUEFOSUMsCisgIHdoZW4gdGVtcGVyYXR1cmUgaXMgYmVsb3cgdGhhbiBsb3cgdGhyZXNob2xkLCBJUlFfTE9XIHdpbGwgYmUgdHJpZ2dlcmVkLCB3aGVuIHRlbXBlcmF0dXJlCisgIGlzIGhpZ2hlciB0aGFuIHBhbmljIHRocmVzaG9sZCwgc3lzdGVtIHdpbGwgYXV0byByZWJvb3QgYnkgU1JDIG1vZHVsZS4KKy0gZnNsLHRlbXBtb24gOiBwaGFuZGxlIHBvaW50ZXIgdG8gc3lzdGVtIGNvbnRyb2xsZXIgdGhhdCBjb250YWlucyBURU1QTU9OCisgIGNvbnRyb2wgcmVnaXN0ZXJzLCBlLmcuIEFOQVRPUCBvbiBpbXg2cS4KKy0gZnNsLHRlbXBtb24tZGF0YSA6IHBoYW5kbGUgcG9pbnRlciB0byBmdXNlIGNvbnRyb2xsZXIgdGhhdCBjb250YWlucyBURU1QTU9OCisgIGNhbGlicmF0aW9uIGRhdGEsIGUuZy4gT0NPVFAgb24gaW14NnEuICBUaGUgZGV0YWlscyBhYm91dCBjYWxpYnJhdGlvbiBkYXRhCisgIGNhbiBiZSBmb3VuZCBpbiBTb0MgUmVmZXJlbmNlIE1hbnVhbC4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gY2xvY2tzIDogdGhlcm1hbCBzZW5zb3IncyBjbG9jayBzb3VyY2UuCisKK0V4YW1wbGU6CisKK3RlbXBtb24geworCWNvbXBhdGlibGUgPSAiZnNsLGlteDZxLXRlbXBtb24iOworCWZzbCx0ZW1wbW9uID0gPCZhbmF0b3A+OworCWZzbCx0ZW1wbW9uLWRhdGEgPSA8Jm9jb3RwPjsKKwljbG9ja3MgPSA8JmNsa3MgMTcyPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGhlcm1hbC9raXJrd29vZC10aGVybWFsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aGVybWFsL2tpcmt3b29kLXRoZXJtYWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMGY1ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGhlcm1hbC9raXJrd29vZC10aGVybWFsLnR4dApAQCAtMCwwICsxLDE1IEBACisqIEtpcmt3b29kIFRoZXJtYWwKKworVGhpcyB2ZXJzaW9uIGlzIGZvciBLaXJrd29vZCA4OEY4MjYyICYgODhGNjI4MyBTb0NzLiBPdGhlciBraXJrd29vZHMKK2Rvbid0IGNvbnRhaW4gYSB0aGVybWFsIHNlbnNvci4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJtYXJ2ZWxsLGtpcmt3b29kLXRoZXJtYWwiCistIHJlZyA6IEFkZHJlc3MgcmFuZ2Ugb2YgdGhlIHRoZXJtYWwgcmVnaXN0ZXJzCisKK0V4YW1wbGU6CisKKwl0aGVybWFsQDEwMDc4IHsKKwkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLGtpcmt3b29kLXRoZXJtYWwiOworCQlyZWcgPSA8MHgxMDA3OCAweDQ+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGhlcm1hbC9xY29tLXNwbWktdGVtcC1hbGFybS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGhlcm1hbC9xY29tLXNwbWktdGVtcC1hbGFybS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjkwZWMwNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aGVybWFsL3Fjb20tc3BtaS10ZW1wLWFsYXJtLnR4dApAQCAtMCwwICsxLDU3IEBACitRdWFsY29tbSBRUE5QIFBNSUMgVGVtcGVyYXR1cmUgQWxhcm0KKworUVBOUCB0ZW1wZXJhdHVyZSBhbGFybSBwZXJpcGhlcmFscyBhcmUgZm91bmQgaW5zaWRlIG9mIFF1YWxjb21tIFBNSUMgY2hpcHMKK3RoYXQgdXRpbGl6ZSB0aGUgUXVhbGNvbW0gU1BNSSBpbXBsZW1lbnRhdGlvbi4gVGhlc2UgcGVyaXBoZXJhbHMgcHJvdmlkZSBhbgoraW50ZXJydXB0IHNpZ25hbCBhbmQgc3RhdHVzIHJlZ2lzdGVyIHRvIGlkZW50aWZ5IGhpZ2ggUE1JQyBkaWUgdGVtcGVyYXR1cmUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICAgICAgU2hvdWxkIGNvbnRhaW4gInFjb20sc3BtaS10ZW1wLWFsYXJtIi4KKy0gcmVnOiAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIFNQTUkgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBjb250cm9sbGVyJ3MKKyAgICAgICAgICAgICAgICAgICByZWdpc3RlcnMuCistIGludGVycnVwdHM6ICAgICAgUE1JQyB0ZW1wZXJhdHVyZSBhbGFybSBpbnRlcnJ1cHQuCistICN0aGVybWFsLXNlbnNvci1jZWxsczogU2hvdWxkIGJlIDAuIFNlZSB0aGVybWFsLnR4dCBmb3IgYSBkZXNjcmlwdGlvbi4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gaW8tY2hhbm5lbHM6ICAgICBTaG91bGQgY29udGFpbiBJSU8gY2hhbm5lbCBzcGVjaWZpZXIgZm9yIHRoZSBBREMgY2hhbm5lbCwKKyAgICAgICAgICAgICAgICAgICB3aGljaCByZXBvcnQgY2hpcCBkaWUgdGVtcGVyYXR1cmUuCistIGlvLWNoYW5uZWwtbmFtZXM6IFNob3VsZCBjb250YWluICJ0aGVybWFsIi4KKworRXhhbXBsZToKKworCXBtODk0MV90ZW1wOiB0aGVybWFsLWFsYXJtQDI0MDAgeworCQljb21wYXRpYmxlID0gInFjb20sc3BtaS10ZW1wLWFsYXJtIjsKKwkJcmVnID0gPDB4MjQwMCAweDEwMD47CisJCWludGVycnVwdHMgPSA8MCAweDI0IDAgSVJRX1RZUEVfRURHRV9SSVNJTkc+OworCQkjdGhlcm1hbC1zZW5zb3ItY2VsbHMgPSA8MD47CisKKwkJaW8tY2hhbm5lbHMgPSA8JnBtODk0MV92YWRjIFZBRENfRElFX1RFTVA+OworCQlpby1jaGFubmVsLW5hbWVzID0gInRoZXJtYWwiOworCX07CisKKwl0aGVybWFsLXpvbmVzIHsKKwkJcG04OTQxIHsKKwkJCXBvbGxpbmctZGVsYXktcGFzc2l2ZSA9IDwyNTA+OworCQkJcG9sbGluZy1kZWxheSA9IDwxMDAwPjsKKworCQkJdGhlcm1hbC1zZW5zb3JzID0gPCZwbTg5NDFfdGVtcD47CisKKwkJCXRyaXBzIHsKKwkJCQlwYXNzaXZlIHsKKwkJCQkJdGVtcGVyYXR1cmUgPSA8MTA1MDAwMD47CisJCQkJCWh5c3RlcmVzaXMgPSA8MjAwMD47CisJCQkJCXR5cGUgPSAicGFzc2l2ZSI7CisJCQkJfTsKKwkJCQlhbGVydCB7CisJCQkJCXRlbXBlcmF0dXJlID0gPDEyNTAwMD47CisJCQkJCWh5c3RlcmVzaXMgPSA8MjAwMD47CisJCQkJCXR5cGUgPSAiaG90IjsKKwkJCQl9OworCQkJCWNyaXQgeworCQkJCQl0ZW1wZXJhdHVyZSA9IDwxNDUwMDA+OworCQkJCQloeXN0ZXJlc2lzID0gPDIwMDA+OworCQkJCQl0eXBlID0gImNyaXRpY2FsIjsKKwkJCQl9OworCQkJfTsKKwkJfTsKKwl9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGhlcm1hbC9yY2FyLXRoZXJtYWwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RoZXJtYWwvcmNhci10aGVybWFsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzJlNjI1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RoZXJtYWwvcmNhci10aGVybWFsLnR4dApAQCAtMCwwICsxLDM4IEBACisqIFJlbmVzYXMgUi1DYXIgVGhlcm1hbAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlCQk6ICJyZW5lc2FzLHRoZXJtYWwtPHNvY3R5cGU+IiwgInJlbmVzYXMscmNhci10aGVybWFsIgorCQkJICBhcyBmYWxsYmFjay4KKwkJCSAgRXhhbXBsZXMgd2l0aCBzb2N0eXBlcyBhcmU6CisJCQkgICAgLSAicmVuZXNhcyx0aGVybWFsLXI4YTczYTQiIChSLU1vYmlsZSBBUEU2KQorCQkJICAgIC0gInJlbmVzYXMsdGhlcm1hbC1yOGE3Nzc5IiAoUi1DYXIgSDEpCisJCQkgICAgLSAicmVuZXNhcyx0aGVybWFsLXI4YTc3OTAiIChSLUNhciBIMikKKwkJCSAgICAtICJyZW5lc2FzLHRoZXJtYWwtcjhhNzc5MSIgKFItQ2FyIE0yLVcpCisJCQkgICAgLSAicmVuZXNhcyx0aGVybWFsLXI4YTc3OTIiIChSLUNhciBWMkgpCisJCQkgICAgLSAicmVuZXNhcyx0aGVybWFsLXI4YTc3OTMiIChSLUNhciBNMi1OKQorCQkJICAgIC0gInJlbmVzYXMsdGhlcm1hbC1yOGE3Nzk0IiAoUi1DYXIgRTIpCistIHJlZwkJCTogQWRkcmVzcyByYW5nZSBvZiB0aGUgdGhlcm1hbCByZWdpc3RlcnMuCisJCQkgIFRoZSAxc3QgcmVnIHdpbGwgYmUgcmVjb2duaXplZCBhcyBjb21tb24gcmVnaXN0ZXIKKwkJCSAgaWYgaXQgaGFzICJpbnRlcnJ1cHRzIi4KKworT3B0aW9uIHByb3BlcnRpZXM6CisKKy0gaW50ZXJydXB0cwkJOiB1c2UgaW50ZXJydXB0CisKK0V4YW1wbGUgKG5vbiBpbnRlcnJ1cHQgc3VwcG9ydCk6CisKK3RoZXJtYWxAZmZjNDgwMDAgeworCWNvbXBhdGlibGUgPSAicmVuZXNhcyx0aGVybWFsLXI4YTc3NzkiLCAicmVuZXNhcyxyY2FyLXRoZXJtYWwiOworCXJlZyA9IDwweGZmYzQ4MDAwIDB4Mzg+OworfTsKKworRXhhbXBsZSAoaW50ZXJydXB0IHN1cHBvcnQpOgorCit0aGVybWFsQGU2MWYwMDAwIHsKKwljb21wYXRpYmxlID0gInJlbmVzYXMsdGhlcm1hbC1yOGE3M2E0IiwgInJlbmVzYXMscmNhci10aGVybWFsIjsKKwlyZWcgPSA8MHhlNjFmMDAwMCAweDE0CisJCTB4ZTYxZjAxMDAgMHgzOAorCQkweGU2MWYwMjAwIDB4MzgKKwkJMHhlNjFmMDMwMCAweDM4PjsKKwlpbnRlcnJ1cHRzID0gPDAgNjkgSVJRX1RZUEVfTEVWRUxfSElHSD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RoZXJtYWwvcm9ja2NoaXAtdGhlcm1hbC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGhlcm1hbC9yb2NrY2hpcC10aGVybWFsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGZhNjBkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RoZXJtYWwvcm9ja2NoaXAtdGhlcm1hbC50eHQKQEAgLTAsMCArMSw3NyBAQAorKiBUZW1wZXJhdHVyZSBTZW5zb3IgQURDIChUU0FEQykgb24gcm9ja2NoaXAgU29DcworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJyb2NrY2hpcCw8bmFtZT4tdHNhZGMiCisgICAicm9ja2NoaXAscmszMjg4LXRzYWRjIjogZm91bmQgb24gUkszMjg4IFNvQ3MKKyAgICJyb2NrY2hpcCxyazMzNjgtdHNhZGMiOiBmb3VuZCBvbiBSSzMzNjggU29DcworLSByZWcgOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisJcmVnaW9uLgorLSBpbnRlcnJ1cHRzIDogVGhlIGludGVycnVwdCBudW1iZXIgdG8gdGhlIGNwdS4gVGhlIGludGVycnVwdCBzcGVjaWZpZXIgZm9ybWF0CisJICAgICAgIGRlcGVuZHMgb24gdGhlIGludGVycnVwdCBjb250cm9sbGVyLgorLSBjbG9ja3MgOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCistIGNsb2NrLW5hbWVzIDogU2hhbGwgYmUgInRzYWRjIiBmb3IgdGhlIGNvbnZlcnRlci1jbG9jaywgYW5kICJhcGJfcGNsayIgZm9yCisJCXRoZSBwZXJpcGhlcmFsIGNsb2NrLgorLSByZXNldHMgOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gcmVzZXQtbmFtZXMuCisJICAgU2VlIC4uL3Jlc2V0L3Jlc2V0LnR4dCBmb3IgZGV0YWlscy4KKy0gcmVzZXQtbmFtZXMgOiBNdXN0IGluY2x1ZGUgdGhlIG5hbWUgInRzYWRjLWFwYiIuCistIHBpbmN0cmwtbmFtZXMgOiBUaGUgcGluIGNvbnRyb2wgc3RhdGUgbmFtZXM7CistIHBpbmN0cmwtMCA6IFRoZSAiaW5pdCIgcGluY3RybCBzdGF0ZSwgaXQgd2lsbCBiZSBzZXQgYmVmb3JlIGRldmljZSBwcm9iZS4KKy0gcGluY3RybC0xIDogVGhlICJkZWZhdWx0IiBwaW5jdHJsIHN0YXRlLCBpdCB3aWxsIGJlIHNldCBhZnRlciByZXNldCB0aGUKKwkgICAgICBUU0FEQyBjb250cm9sbGVyLgorLSBwaW5jdHJsLTIgOiBUaGUgInNsZWVwIiBwaW5jdHJsIHN0YXRlLCBpdCB3aWxsIGJlIGluIGZvciBzdXNwZW5kLgorLSAjdGhlcm1hbC1zZW5zb3ItY2VsbHMgOiBTaG91bGQgYmUgMS4gU2VlIC4vdGhlcm1hbC50eHQgZm9yIGEgZGVzY3JpcHRpb24uCistIHJvY2tjaGlwLGh3LXRzaHV0LXRlbXAgOiBUaGUgaGFyZHdhcmUtY29udHJvbGxlZCBzaHV0ZG93biB0ZW1wZXJhdHVyZSB2YWx1ZS4KKy0gcm9ja2NoaXAsaHctdHNodXQtbW9kZSA6IFRoZSBoYXJkd2FyZS1jb250cm9sbGVkIHNodXRkb3duIG1vZGUgMDpDUlUgMTpHUElPLgorLSByb2NrY2hpcCxody10c2h1dC1wb2xhcml0eSA6IFRoZSBoYXJkd2FyZS1jb250cm9sbGVkIGFjdGl2ZSBwb2xhcml0eSAwOkxPVworCQkJICAgICAgIDE6SElHSC4KKworRXhpYW1wbGU6Cit0c2FkYzogdHNhZGNAZmYyODAwMDAgeworCWNvbXBhdGlibGUgPSAicm9ja2NoaXAscmszMjg4LXRzYWRjIjsKKwlyZWcgPSA8MHhmZjI4MDAwMCAweDEwMD47CisJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDM3IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCWNsb2NrcyA9IDwmY3J1IFNDTEtfVFNBREM+LCA8JmNydSBQQ0xLX1RTQURDPjsKKwljbG9jay1uYW1lcyA9ICJ0c2FkYyIsICJhcGJfcGNsayI7CisJcmVzZXRzID0gPCZjcnUgU1JTVF9UU0FEQz47CisJcmVzZXQtbmFtZXMgPSAidHNhZGMtYXBiIjsKKwlwaW5jdHJsLW5hbWVzID0gImluaXQiLCAiZGVmYXVsdCIsICJzbGVlcCI7CisJcGluY3RybC0wID0gPCZvdHBfZ3Bpbz47CisJcGluY3RybC0xID0gPCZvdHBfb3V0PjsKKwlwaW5jdHJsLTIgPSA8Jm90cF9ncGlvPjsKKwkjdGhlcm1hbC1zZW5zb3ItY2VsbHMgPSA8MT47CisJcm9ja2NoaXAsaHctdHNodXQtdGVtcCA9IDw5NTAwMD47CisJcm9ja2NoaXAsaHctdHNodXQtbW9kZSA9IDwwPjsKKwlyb2NrY2hpcCxody10c2h1dC1wb2xhcml0eSA9IDwwPjsKK307CisKK0V4YW1wbGU6IHJlZmVycmluZyB0byB0aGVybWFsIHNlbnNvcnM6Cit0aGVybWFsLXpvbmVzIHsKKwljcHVfdGhlcm1hbDogY3B1X3RoZXJtYWwgeworCQlwb2xsaW5nLWRlbGF5LXBhc3NpdmUgPSA8MTAwMD47IC8qIG1pbGxpc2Vjb25kcyAqLworCQlwb2xsaW5nLWRlbGF5ID0gPDUwMDA+OyAvKiBtaWxsaXNlY29uZHMgKi8KKworCQkvKiBzZW5zb3IJSUQgKi8KKwkJdGhlcm1hbC1zZW5zb3JzID0gPCZ0c2FkYwkxPjsKKworCQl0cmlwcyB7CisJCQljcHVfYWxlcnQwOiBjcHVfYWxlcnQgeworCQkJCXRlbXBlcmF0dXJlID0gPDcwMDAwPjsgLyogbWlsbGljZWxzaXVzICovCisJCQkJaHlzdGVyZXNpcyA9IDwyMDAwPjsgLyogbWlsbGljZWxzaXVzICovCisJCQkJdHlwZSA9ICJwYXNzaXZlIjsKKwkJCX07CisJCQljcHVfY3JpdDogY3B1X2NyaXQgeworCQkJCXRlbXBlcmF0dXJlID0gPDkwMDAwPjsgLyogbWlsbGljZWxzaXVzICovCisJCQkJaHlzdGVyZXNpcyA9IDwyMDAwPjsgLyogbWlsbGljZWxzaXVzICovCisJCQkJdHlwZSA9ICJjcml0aWNhbCI7CisJCQl9OworCQl9OworCisJCWNvb2xpbmctbWFwcyB7CisJCQltYXAwIHsKKwkJCQl0cmlwID0gPCZjcHVfYWxlcnQwPjsKKwkJCQljb29saW5nLWRldmljZSA9CisJCQkJICAgIDwmY3B1MCBUSEVSTUFMX05PX0xJTUlUIFRIRVJNQUxfTk9fTElNSVQ+OworCQkJfTsKKwkJfTsKKwl9OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aGVybWFsL3NwZWFyLXRoZXJtYWwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RoZXJtYWwvc3BlYXItdGhlcm1hbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNlM2I2NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aGVybWFsL3NwZWFyLXRoZXJtYWwudHh0CkBAIC0wLDAgKzEsMTQgQEAKKyogU1BFQXIgVGhlcm1hbAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogInN0LHRoZXJtYWwtc3BlYXIxMzQwIgorLSByZWcgOiBBZGRyZXNzIHJhbmdlIG9mIHRoZSB0aGVybWFsIHJlZ2lzdGVycworLSBzdCx0aGVybWFsLWZsYWdzOiBmbGFncyB1c2VkIHRvIGVuYWJsZSB0aGVybWFsIHNlbnNvcgorCitFeGFtcGxlOgorCisJdGhlcm1hbEBmYzAwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic3QsdGhlcm1hbC1zcGVhcjEzNDAiOworCQlyZWcgPSA8MHhmYzAwMDAwMCAweDEwMDA+OworCQlzdCx0aGVybWFsLWZsYWdzID0gPDB4NzAwMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aGVybWFsL3N0LXRoZXJtYWwudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RoZXJtYWwvc3QtdGhlcm1hbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I5MjUxYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aGVybWFsL3N0LXRoZXJtYWwudHh0CkBAIC0wLDAgKzEsNDIgQEAKK0JpbmRpbmcgZm9yIFRoZXJtYWwgU2Vuc29yIGRyaXZlciBmb3IgU1RNaWNyb2VsZWN0cm9uaWNzIFNUaSBzZXJpZXMgb2YgU29Dcy4KKworUmVxdWlyZWQgcGFyYW1ldGVyczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworY29tcGF0aWJsZSA6IAlzdCw8U29DPi08bW9kdWxlPi10aGVybWFsOyBzaG91bGQgYmUgb25lIG9mOgorCQkgICJzdCxzdGloNDE1LXNhcy10aGVybWFsIiwKKwkJICAic3Qsc3RpaDQxNS1tcGUtdGhlcm1hbCIsCisJCSAgInN0LHN0aWg0MTYtc2FzLXRoZXJtYWwiCisJCSAgInN0LHN0aWg0MTYtbXBlLXRoZXJtYWwiCisJCSAgInN0LHN0aWQxMjctdGhlcm1hbCIgb3IKKwkJICAic3Qsc3RpaDQwNy10aGVybWFsIgorCQlhY2NvcmRpbmcgdG8gdGhlIFNvQyB0eXBlIChzdGloNDE1LCBzdGloNDE2LCBzdGlkMTI3LCBzdGloNDA3KQorCQlhbmQgbW9kdWxlIHR5cGUgKHNhcyBvciBtcGUpLiBPbiBzdGlkMTI3ICYgc3RpaDQwNyB0aGVyZSBpcyBvbmx5CisJCW9uZSBkaWUvbW9kdWxlLCBzbyB0aGVyZSBpcyBubyBtb2R1bGUgdHlwZSBpbiB0aGUgY29tcGF0aWJsZQorCQlzdHJpbmcuCitjbG9jay1uYW1lcyA6IAlTaG91bGQgYmUgInRoZXJtYWwiLgorCQkgIFNlZTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Jlc291cmNlLW5hbWVzLnR4dAorY2xvY2tzIDogCVBoYW5kbGUgb2YgdGhlIGNsb2NrIHVzZWQgYnkgdGhlIHRoZXJtYWwgc2Vuc29yLgorCQkgIFNlZTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dAorCitPcHRpb25hbCBwYXJhbWV0ZXJzOgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCityZWcgOiAJCUZvciBub24tc3lzY29uZiBiYXNlZCBzZW5zb3JzLCB0aGlzIHNob3VsZCBiZSB0aGUgcGh5c2ljYWwgYmFzZQorCQlhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHNlbnNvcidzIHJlZ2lzdGVycy4KK2ludGVycnVwdHMgOglTdGFuZGFyZCB3YXkgdG8gZGVmaW5lIGludGVycnVwdCBudW1iZXIuCisJCUludGVycnVwdCBpcyBtYW5kYXRvcnkgdG8gYmUgZGVmaW5lZCB3aGVuIGNvbXBhdGlibGUgaXMKKwkJInN0aWg0MTYtbXBlLXRoZXJtYWwiLgorCQkgIE5COiBGb3IgdGhlcm1hbCBzZW5zb3IncyBmb3Igd2hpY2ggbm8gaW50ZXJydXB0IGhhcyBiZWVuCisJCSAgZGVmaW5lZCwgYSBwb2xsaW5nIGRlbGF5IG9mIDEwMDBtcyB3aWxsIGJlIHVzZWQgdG8gcmVhZCB0aGUKKwkJICB0ZW1wZXJhdHVyZSBmcm9tIGRldmljZS4KKworRXhhbXBsZToKKworCXRlbXAxQGZkZmU4MDAwIHsKKwkJY29tcGF0aWJsZQk9ICJzdCxzdGloNDE2LW1wZS10aGVybWFsIjsKKwkJcmVnCQk9IDwweGZkZmU4MDAwIDB4MTA+OworCQljbG9jay1uYW1lcwk9ICJ0aGVybWFsIjsKKwkJY2xvY2tzCQk9IDwmY2xrX21fbXBldGhzZW5zPjsKKwkJaW50ZXJydXB0cwk9IDxHSUNfU1BJIDIzIElSUV9UWVBFX05PTkU+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGhlcm1hbC90ZWdyYS1zb2N0aGVybS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGhlcm1hbC90ZWdyYS1zb2N0aGVybS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI2OGNkMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aGVybWFsL3RlZ3JhLXNvY3RoZXJtLnR4dApAQCAtMCwwICsxLDU1IEBACitUZWdyYTEyNCBTT0NUSEVSTSB0aGVybWFsIG1hbmFnZW1lbnQgc3lzdGVtCisKK1RoZSBTT0NUSEVSTSBJUCBibG9jayBjb250YWlucyB0aGVybWFsIHNlbnNvcnMsIHN1cHBvcnQgZm9yIHBvbGxlZAorb3IgaW50ZXJydXB0LWJhc2VkIHRoZXJtYWwgbW9uaXRvcmluZywgQ1BVIGFuZCBHUFUgdGhyb3R0bGluZyBiYXNlZAorb24gdGVtcGVyYXR1cmUgdHJpcCBwb2ludHMsIGFuZCBoYW5kbGluZyBleHRlcm5hbCBvdmVyY3VycmVudAorbm90aWZpY2F0aW9ucy4gSXQgaXMgYWxzbyB1c2VkIHRvIG1hbmFnZSBlbWVyZ2VuY3kgc2h1dGRvd24gaW4gYW4KK292ZXJoZWF0aW5nIHNpdHVhdGlvbi4KKworUmVxdWlyZWQgcHJvcGVydGllcyA6CistIGNvbXBhdGlibGUgOiBGb3IgVGVncmExMjQsIG11c3QgY29udGFpbiAibnZpZGlhLHRlZ3JhMTI0LXNvY3RoZXJtIi4KKyAgRm9yIFRlZ3JhMTMyLCBtdXN0IGNvbnRhaW4gIm52aWRpYSx0ZWdyYTEzMi1zb2N0aGVybSIuCisgIEZvciBUZWdyYTIxMCwgbXVzdCBjb250YWluICJudmlkaWEsdGVncmEyMTAtc29jdGhlcm0iLgorLSByZWcgOiBTaG91bGQgY29udGFpbiAxIGVudHJ5OgorICAtIFNPQ1RIRVJNIHJlZ2lzdGVyIHNldAorLSBpbnRlcnJ1cHRzIDogRGVmaW5lcyB0aGUgaW50ZXJydXB0IHVzZWQgYnkgU09DVEhFUk0KKy0gY2xvY2tzIDogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIGNsb2NrLW5hbWVzLgorICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKy0gY2xvY2stbmFtZXMgOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAtIHRzZW5zb3IKKyAgLSBzb2N0aGVybQorLSByZXNldHMgOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gcmVzZXQtbmFtZXMuCisgIFNlZSAuLi9yZXNldC9yZXNldC50eHQgZm9yIGRldGFpbHMuCistIHJlc2V0LW5hbWVzIDogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgLSBzb2N0aGVybQorLSAjdGhlcm1hbC1zZW5zb3ItY2VsbHMgOiBTaG91bGQgYmUgMS4gU2VlIC4vdGhlcm1hbC50eHQgZm9yIGEgZGVzY3JpcHRpb24KKyAgICBvZiB0aGlzIHByb3BlcnR5LiBTZWUgPGR0LWJpbmRpbmdzL3RoZXJtYWwvdGVncmExMjQtc29jdGhlcm0uaD4gZm9yIGEKKyAgICBsaXN0IG9mIHZhbGlkIHZhbHVlcyB3aGVuIHJlZmVycmluZyB0byB0aGVybWFsIHNlbnNvcnMuCisKKworRXhhbXBsZSA6CisKKwlzb2N0aGVybUAwLDcwMGUyMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJudmlkaWEsdGVncmExMjQtc29jdGhlcm0iOworCQlyZWcgPSA8MHgwIDB4NzAwZTIwMDAgMHgwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSA0OCBJUlFfVFlQRV9MRVZFTF9ISUdIPjsKKwkJY2xvY2tzID0gPCZ0ZWdyYV9jYXIgVEVHUkExMjRfQ0xLX1RTRU5TT1I+LAorCQkJPCZ0ZWdyYV9jYXIgVEVHUkExMjRfQ0xLX1NPQ19USEVSTT47CisJCWNsb2NrLW5hbWVzID0gInRzZW5zb3IiLCAic29jdGhlcm0iOworCQlyZXNldHMgPSA8JnRlZ3JhX2NhciA3OD47CisJCXJlc2V0LW5hbWVzID0gInNvY3RoZXJtIjsKKworCQkjdGhlcm1hbC1zZW5zb3ItY2VsbHMgPSA8MT47CisJfTsKKworRXhhbXBsZTogcmVmZXJyaW5nIHRvIHRoZXJtYWwgc2Vuc29ycyA6CisKKyAgICAgICB0aGVybWFsLXpvbmVzIHsKKyAgICAgICAgICAgICAgICBjcHUgeworICAgICAgICAgICAgICAgICAgICAgICAgcG9sbGluZy1kZWxheS1wYXNzaXZlID0gPDEwMDA+OworICAgICAgICAgICAgICAgICAgICAgICAgcG9sbGluZy1kZWxheSA9IDwxMDAwPjsKKworICAgICAgICAgICAgICAgICAgICAgICAgdGhlcm1hbC1zZW5zb3JzID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCZzb2N0aGVybSBURUdSQTEyNF9TT0NUSEVSTV9TRU5TT1JfQ1BVPjsKKyAgICAgICAgICAgICAgICB9OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGhlcm1hbC90aGVybWFsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aGVybWFsL3RoZXJtYWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxYjgxN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGhlcm1hbC90aGVybWFsLnR4dApAQCAtMCwwICsxLDYwNSBAQAorKiBUaGVybWFsIEZyYW1ld29yayBEZXZpY2UgVHJlZSBkZXNjcmlwdG9yCisKK1RoaXMgZmlsZSBkZXNjcmliZXMgYSBnZW5lcmljIGJpbmRpbmcgdG8gcHJvdmlkZSBhIHdheSBvZgorZGVmaW5pbmcgaGFyZHdhcmUgdGhlcm1hbCBzdHJ1Y3R1cmUgdXNpbmcgZGV2aWNlIHRyZWUuCitBIHRoZXJtYWwgc3RydWN0dXJlIGluY2x1ZGVzIHRoZXJtYWwgem9uZXMgYW5kIHRoZWlyIGNvbXBvbmVudHMsCitzdWNoIGFzIHRyaXAgcG9pbnRzLCBwb2xsaW5nIGludGVydmFscywgc2Vuc29ycyBhbmQgY29vbGluZyBkZXZpY2VzCitiaW5kaW5nIGRlc2NyaXB0b3JzLgorCitUaGUgdGFyZ2V0IG9mIGRldmljZSB0cmVlIHRoZXJtYWwgZGVzY3JpcHRvcnMgaXMgdG8gZGVzY3JpYmUgb25seQordGhlIGhhcmR3YXJlIHRoZXJtYWwgYXNwZWN0cy4gVGhlIHRoZXJtYWwgZGV2aWNlIHRyZWUgYmluZGluZ3MgYXJlCitub3QgYWJvdXQgaG93IHRoZSBzeXN0ZW0gbXVzdCBjb250cm9sIG9yIHdoaWNoIGFsZ29yaXRobSBvciBwb2xpY3kKK211c3QgYmUgdGFrZW4gaW4gcGxhY2UuCisKK1RoZXJlIGFyZSBmaXZlIHR5cGVzIG9mIG5vZGVzIGludm9sdmVkIHRvIGRlc2NyaWJlIHRoZXJtYWwgYmluZGluZ3M6CistIHRoZXJtYWwgc2Vuc29yczogZGV2aWNlcyB3aGljaCBtYXkgYmUgdXNlZCB0byB0YWtlIHRlbXBlcmF0dXJlCisgIG1lYXN1cmVtZW50cy4KKy0gY29vbGluZyBkZXZpY2VzOiBkZXZpY2VzIHdoaWNoIG1heSBiZSB1c2VkIHRvIGRpc3NpcGF0ZSBoZWF0LgorLSB0cmlwIHBvaW50czogZGVzY3JpYmUga2V5IHRlbXBlcmF0dXJlcyBhdCB3aGljaCBjb29saW5nIGlzIHJlY29tbWVuZGVkLiBUaGUKKyAgc2V0IG9mIHBvaW50cyBzaG91bGQgYmUgY2hvc2VuIGJhc2VkIG9uIGhhcmR3YXJlIGxpbWl0cy4KKy0gY29vbGluZyBtYXBzOiB1c2VkIHRvIGRlc2NyaWJlIGxpbmtzIGJldHdlZW4gdHJpcCBwb2ludHMgYW5kIGNvb2xpbmcgZGV2aWNlczsKKy0gdGhlcm1hbCB6b25lczogdXNlZCB0byBkZXNjcmliZSB0aGVybWFsIGRhdGEgd2l0aGluIHRoZSBoYXJkd2FyZTsKKworVGhlIGZvbGxvd2luZyBpcyBhIGRlc2NyaXB0aW9uIG9mIGVhY2ggb2YgdGhlc2Ugbm9kZSB0eXBlcy4KKworKiBUaGVybWFsIHNlbnNvciBkZXZpY2VzCisKK1RoZXJtYWwgc2Vuc29yIGRldmljZXMgYXJlIG5vZGVzIHByb3ZpZGluZyB0ZW1wZXJhdHVyZSBzZW5zaW5nIGNhcGFiaWxpdGllcyBvbgordGhlcm1hbCB6b25lcy4gVHlwaWNhbCBkZXZpY2VzIGFyZSBJMkMgQURDIGNvbnZlcnRlcnMgYW5kIGJhbmRnYXBzLiBUaGVzZSBhcmUKK25vZGVzIHByb3ZpZGluZyB0ZW1wZXJhdHVyZSBkYXRhIHRvIHRoZXJtYWwgem9uZXMuIFRoZXJtYWwgc2Vuc29yIGRldmljZXMgbWF5Citjb250cm9sIG9uZSBvciBtb3JlIGludGVybmFsIHNlbnNvcnMuCisKK1JlcXVpcmVkIHByb3BlcnR5OgorLSAjdGhlcm1hbC1zZW5zb3ItY2VsbHM6IFVzZWQgdG8gcHJvdmlkZSBzZW5zb3IgZGV2aWNlIHNwZWNpZmljIGluZm9ybWF0aW9uCisgIFR5cGU6IHVuc2lnbmVkCSB3aGlsZSByZWZlcnJpbmcgdG8gaXQuIFR5cGljYWxseSAwIG9uIHRoZXJtYWwgc2Vuc29yCisgIFNpemU6IG9uZSBjZWxsCSBub2RlcyB3aXRoIG9ubHkgb25lIHNlbnNvciwgYW5kIGF0IGxlYXN0IDEgb24gbm9kZXMKKwkJCSB3aXRoIHNldmVyYWwgaW50ZXJuYWwgc2Vuc29ycywgaW4gb3JkZXIKKwkJCSB0byBpZGVudGlmeSB1bmlxdWVseSB0aGUgc2Vuc29yIGluc3RhbmNlcyB3aXRoaW4KKwkJCSB0aGUgSUMuIFNlZSB0aGVybWFsIHpvbmUgYmluZGluZyBmb3IgbW9yZSBkZXRhaWxzCisJCQkgb24gaG93IGNvbnN1bWVycyByZWZlciB0byBzZW5zb3IgZGV2aWNlcy4KKworKiBDb29saW5nIGRldmljZSBub2RlcworCitDb29saW5nIGRldmljZXMgYXJlIG5vZGVzIHByb3ZpZGluZyBjb250cm9sIG9uIHBvd2VyIGRpc3NpcGF0aW9uLiBUaGVyZQorYXJlIGVzc2VudGlhbGx5IHR3byB3YXlzIHRvIHByb3ZpZGUgY29udHJvbCBvbiBwb3dlciBkaXNzaXBhdGlvbi4gRmlyc3QKK2lzIGJ5IG1lYW5zIG9mIHJlZ3VsYXRpbmcgZGV2aWNlIHBlcmZvcm1hbmNlLCB3aGljaCBpcyBrbm93biBhcyBwYXNzaXZlCitjb29saW5nLiBBIHR5cGljYWwgcGFzc2l2ZSBjb29saW5nIGlzIGEgQ1BVIHRoYXQgaGFzIGR5bmFtaWMgdm9sdGFnZSBhbmQKK2ZyZXF1ZW5jeSBzY2FsaW5nIChEVkZTKSwgYW5kIHVzZXMgbG93ZXIgZnJlcXVlbmNpZXMgYXMgY29vbGluZyBzdGF0ZXMuCitTZWNvbmQgaXMgYnkgbWVhbnMgb2YgYWN0aXZhdGluZyBkZXZpY2VzIGluIG9yZGVyIHRvIHJlbW92ZQordGhlIGRpc3NpcGF0ZWQgaGVhdCwgd2hpY2ggaXMga25vd24gYXMgYWN0aXZlIGNvb2xpbmcsIGUuZy4gcmVndWxhdGluZworZmFuIHNwZWVkcy4gSW4gYm90aCBjYXNlcywgY29vbGluZyBkZXZpY2VzIHNoYWxsIGhhdmUgYSB3YXkgdG8gZGV0ZXJtaW5lCit0aGUgc3RhdGUgb2YgY29vbGluZyBpbiB3aGljaCB0aGUgZGV2aWNlIGlzLgorCitBbnkgY29vbGluZyBkZXZpY2UgaGFzIGEgcmFuZ2Ugb2YgY29vbGluZyBzdGF0ZXMgKGkuZS4gZGlmZmVyZW50IGxldmVscworb2YgaGVhdCBkaXNzaXBhdGlvbikuIEZvciBleGFtcGxlIGEgZmFuJ3MgY29vbGluZyBzdGF0ZXMgY29ycmVzcG9uZCB0bwordGhlIGRpZmZlcmVudCBmYW4gc3BlZWRzIHBvc3NpYmxlLiBDb29saW5nIHN0YXRlcyBhcmUgcmVmZXJyZWQgdG8gYnkKK3NpbmdsZSB1bnNpZ25lZCBpbnRlZ2Vycywgd2hlcmUgbGFyZ2VyIG51bWJlcnMgbWVhbiBncmVhdGVyIGhlYXQKK2Rpc3NpcGF0aW9uLiBUaGUgcHJlY2lzZSBzZXQgb2YgY29vbGluZyBzdGF0ZXMgYXNzb2NpYXRlZCB3aXRoIGEgZGV2aWNlCisoYXMgcmVmZXJyZWQgdG8gYnkgdGhlIGNvb2xpbmctbWluLWxldmVsIGFuZCBjb29saW5nLW1heC1sZXZlbAorcHJvcGVydGllcykgc2hvdWxkIGJlIGRlZmluZWQgaW4gYSBwYXJ0aWN1bGFyIGRldmljZSdzIGJpbmRpbmcuCitGb3IgbW9yZSBleGFtcGxlcyBvZiBjb29saW5nIGRldmljZXMsIHJlZmVyIHRvIHRoZSBleGFtcGxlIHNlY3Rpb25zIGJlbG93LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSAjY29vbGluZy1jZWxsczoJVXNlZCB0byBwcm92aWRlIGNvb2xpbmcgZGV2aWNlIHNwZWNpZmljIGluZm9ybWF0aW9uCisgIFR5cGU6IHVuc2lnbmVkCXdoaWxlIHJlZmVycmluZyB0byBpdC4gTXVzdCBiZSBhdCBsZWFzdCAyLCBpbiBvcmRlcgorICBTaXplOiBvbmUgY2VsbCAgICAgIAl0byBzcGVjaWZ5IG1pbmltdW0gYW5kIG1heGltdW0gY29vbGluZyBzdGF0ZSB1c2VkCisJCQlpbiB0aGUgcmVmZXJlbmNlLiBUaGUgZmlyc3QgY2VsbCBpcyB0aGUgbWluaW11bQorCQkJY29vbGluZyBzdGF0ZSByZXF1ZXN0ZWQgYW5kIHRoZSBzZWNvbmQgY2VsbCBpcworCQkJdGhlIG1heGltdW0gY29vbGluZyBzdGF0ZSByZXF1ZXN0ZWQgaW4gdGhlIHJlZmVyZW5jZS4KKwkJCVNlZSBDb29saW5nIGRldmljZSBtYXBzIHNlY3Rpb24gYmVsb3cgZm9yIG1vcmUgZGV0YWlscworCQkJb24gaG93IGNvbnN1bWVycyByZWZlciB0byBjb29saW5nIGRldmljZXMuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNvb2xpbmctbWluLWxldmVsOglBbiBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIHNtYWxsZXN0CisgIFR5cGU6IHVuc2lnbmVkCWNvb2xpbmcgc3RhdGUgYWNjZXB0ZWQuIFR5cGljYWxseSAwLgorICBTaXplOiBvbmUgY2VsbAorCistIGNvb2xpbmctbWF4LWxldmVsOglBbiBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIGxhcmdlc3QKKyAgVHlwZTogdW5zaWduZWQJY29vbGluZyBzdGF0ZSBhY2NlcHRlZC4KKyAgU2l6ZTogb25lIGNlbGwKKworKiBUcmlwIHBvaW50cworCitUaGUgdHJpcCBub2RlIGlzIGEgbm9kZSB0byBkZXNjcmliZSBhIHBvaW50IGluIHRoZSB0ZW1wZXJhdHVyZSBkb21haW4KK2luIHdoaWNoIHRoZSBzeXN0ZW0gdGFrZXMgYW4gYWN0aW9uLiBUaGlzIG5vZGUgZGVzY3JpYmVzIGp1c3QgdGhlIHBvaW50LAorbm90IHRoZSBhY3Rpb24uCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIHRlbXBlcmF0dXJlOgkJQW4gaW50ZWdlciBpbmRpY2F0aW5nIHRoZSB0cmlwIHRlbXBlcmF0dXJlIGxldmVsLAorICBUeXBlOiBzaWduZWQJCWluIG1pbGxpY2Vsc2l1cy4KKyAgU2l6ZTogb25lIGNlbGwKKworLSBoeXN0ZXJlc2lzOgkJQSBsb3cgaHlzdGVyZXNpcyB2YWx1ZSBvbiB0ZW1wZXJhdHVyZSBwcm9wZXJ0eSAoYWJvdmUpLgorICBUeXBlOiB1bnNpZ25lZAlUaGlzIGlzIGEgcmVsYXRpdmUgdmFsdWUsIGluIG1pbGxpY2Vsc2l1cy4KKyAgU2l6ZTogb25lIGNlbGwKKworLSB0eXBlOgkJCWEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHRyaXAgdHlwZS4gRXhwZWN0ZWQgdmFsdWVzIGFyZToKKwkiYWN0aXZlIjoJQSB0cmlwIHBvaW50IHRvIGVuYWJsZSBhY3RpdmUgY29vbGluZworCSJwYXNzaXZlIjoJQSB0cmlwIHBvaW50IHRvIGVuYWJsZSBwYXNzaXZlIGNvb2xpbmcKKwkiaG90IjoJCUEgdHJpcCBwb2ludCB0byBub3RpZnkgZW1lcmdlbmN5CisJImNyaXRpY2FsIjoJSGFyZHdhcmUgbm90IHJlbGlhYmxlLgorICBUeXBlOiBzdHJpbmcKKworKiBDb29saW5nIGRldmljZSBtYXBzCisKK1RoZSBjb29saW5nIGRldmljZSBtYXBzIG5vZGUgaXMgYSBub2RlIHRvIGRlc2NyaWJlIGhvdyBjb29saW5nIGRldmljZXMKK2dldCBhc3NpZ25lZCB0byB0cmlwIHBvaW50cyBvZiB0aGUgem9uZS4gVGhlIGNvb2xpbmcgZGV2aWNlcyBhcmUgZXhwZWN0ZWQKK3RvIGJlIGxvYWRlZCBpbiB0aGUgdGFyZ2V0IHN5c3RlbS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29vbGluZy1kZXZpY2U6CUEgcGhhbmRsZSBvZiBhIGNvb2xpbmcgZGV2aWNlIHdpdGggaXRzIHNwZWNpZmllciwKKyAgVHlwZTogcGhhbmRsZSArCXJlZmVycmluZyB0byB3aGljaCBjb29saW5nIGRldmljZSBpcyB1c2VkIGluIHRoaXMKKyAgICBjb29saW5nIHNwZWNpZmllcgliaW5kaW5nLiBJbiB0aGUgY29vbGluZyBzcGVjaWZpZXIsIHRoZSBmaXJzdCBjZWxsCisJCQlpcyB0aGUgbWluaW11bSBjb29saW5nIHN0YXRlIGFuZCB0aGUgc2Vjb25kIGNlbGwKKwkJCWlzIHRoZSBtYXhpbXVtIGNvb2xpbmcgc3RhdGUgdXNlZCBpbiB0aGlzIG1hcC4KKy0gdHJpcDoJCQlBIHBoYW5kbGUgb2YgYSB0cmlwIHBvaW50IG5vZGUgd2l0aGluIHRoZSBzYW1lIHRoZXJtYWwKKyAgVHlwZTogcGhhbmRsZSBvZgl6b25lLgorICAgdHJpcCBwb2ludCBub2RlCisKK09wdGlvbmFsIHByb3BlcnR5OgorLSBjb250cmlidXRpb246CQlUaGUgY29vbGluZyBjb250cmlidXRpb24gdG8gdGhlIHRoZXJtYWwgem9uZSBvZiB0aGUKKyAgVHlwZTogdW5zaWduZWQJcmVmZXJyZWQgY29vbGluZyBkZXZpY2UgYXQgdGhlIHJlZmVycmVkIHRyaXAgcG9pbnQuCisgIFNpemU6IG9uZSBjZWxsICAgICAgCVRoZSBjb250cmlidXRpb24gaXMgYSByYXRpbyBvZiB0aGUgc3VtCisJCQlvZiBhbGwgY29vbGluZyBjb250cmlidXRpb25zIHdpdGhpbiBhIHRoZXJtYWwgem9uZS4KKworTm90ZTogVXNpbmcgdGhlIFRIRVJNQUxfTk9fTElNSVQgKC0xVUwpIGNvbnN0YW50IGluIHRoZSBjb29saW5nLWRldmljZSBwaGFuZGxlCitsaW1pdCBzcGVjaWZpZXIgbWVhbnM6CisoaSkgICAtIG1pbmltdW0gc3RhdGUgYWxsb3dlZCBmb3IgbWluaW11bSBjb29saW5nIHN0YXRlIHVzZWQgaW4gdGhlIHJlZmVyZW5jZS4KKyhpaSkgIC0gbWF4aW11bSBzdGF0ZSBhbGxvd2VkIGZvciBtYXhpbXVtIGNvb2xpbmcgc3RhdGUgdXNlZCBpbiB0aGUgcmVmZXJlbmNlLgorUmVmZXIgdG8gaW5jbHVkZS9kdC1iaW5kaW5ncy90aGVybWFsL3RoZXJtYWwuaCBmb3IgZGVmaW5pdGlvbiBvZiB0aGlzIGNvbnN0YW50LgorCisqIFRoZXJtYWwgem9uZSBub2RlcworCitUaGUgdGhlcm1hbCB6b25lIG5vZGUgaXMgdGhlIG5vZGUgY29udGFpbmluZyBhbGwgdGhlIHJlcXVpcmVkIGluZm8KK2ZvciBkZXNjcmliaW5nIGEgdGhlcm1hbCB6b25lLCBpbmNsdWRpbmcgaXRzIGNvb2xpbmcgZGV2aWNlIGJpbmRpbmdzLiBUaGUKK3RoZXJtYWwgem9uZSBub2RlIG11c3QgY29udGFpbiwgYXBhcnQgZnJvbSBpdHMgb3duIHByb3BlcnRpZXMsIG9uZSBzdWItbm9kZQorY29udGFpbmluZyB0cmlwIG5vZGVzIGFuZCBvbmUgc3ViLW5vZGUgY29udGFpbmluZyBhbGwgdGhlIHpvbmUgY29vbGluZyBtYXBzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBwb2xsaW5nLWRlbGF5OglUaGUgbWF4aW11bSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmV0d2VlbiBwb2xscworICBUeXBlOiB1bnNpZ25lZAl3aGVuIGNoZWNraW5nIHRoaXMgdGhlcm1hbCB6b25lLgorICBTaXplOiBvbmUgY2VsbAorCistIHBvbGxpbmctZGVsYXktcGFzc2l2ZTogVGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0CisgIFR5cGU6IHVuc2lnbmVkCWJldHdlZW4gcG9sbHMgd2hlbiBwZXJmb3JtaW5nIHBhc3NpdmUgY29vbGluZy4KKyAgU2l6ZTogb25lIGNlbGwKKworLSB0aGVybWFsLXNlbnNvcnM6CUEgbGlzdCBvZiB0aGVybWFsIHNlbnNvciBwaGFuZGxlcyBhbmQgc2Vuc29yIHNwZWNpZmllcgorICBUeXBlOiBsaXN0IG9mIAl1c2VkIHdoaWxlIG1vbml0b3JpbmcgdGhlIHRoZXJtYWwgem9uZS4KKyAgcGhhbmRsZXMgKyBzZW5zb3IKKyAgc3BlY2lmaWVyCisKKy0gdHJpcHM6CQlBIHN1Yi1ub2RlIHdoaWNoIGlzIGEgY29udGFpbmVyIG9mIG9ubHkgdHJpcCBwb2ludCBub2RlcworICBUeXBlOiBzdWItbm9kZQlyZXF1aXJlZCB0byBkZXNjcmliZSB0aGUgdGhlcm1hbCB6b25lLgorCistIGNvb2xpbmctbWFwczoJCUEgc3ViLW5vZGUgd2hpY2ggaXMgYSBjb250YWluZXIgb2Ygb25seSBjb29saW5nIGRldmljZQorICBUeXBlOiBzdWItbm9kZQltYXAgbm9kZXMsIHVzZWQgdG8gZGVzY3JpYmUgdGhlIHJlbGF0aW9uIGJldHdlZW4gdHJpcHMKKwkJCWFuZCBjb29saW5nIGRldmljZXMuCisKK09wdGlvbmFsIHByb3BlcnR5OgorLSBjb2VmZmljaWVudHM6CQlBbiBhcnJheSBvZiBpbnRlZ2VycyAob25lIHNpZ25lZCBjZWxsKSBjb250YWluaW5nCisgIFR5cGU6IGFycmF5CQljb2VmZmljaWVudHMgdG8gY29tcG9zZSBhIGxpbmVhciByZWxhdGlvbiBiZXR3ZWVuCisgIEVsZW0gc2l6ZTogb25lIGNlbGwJdGhlIHNlbnNvcnMgbGlzdGVkIGluIHRoZSB0aGVybWFsLXNlbnNvcnMgcHJvcGVydHkuCisgIEVsZW0gdHlwZTogc2lnbmVkCUNvZWZmaWNpZW50cyBkZWZhdWx0cyB0byAxLCBpbiBjYXNlIHRoaXMgcHJvcGVydHkKKwkJCWlzIG5vdCBzcGVjaWZpZWQuIEEgc2ltcGxlIGxpbmVhciBwb2x5bm9taWFsIGlzIHVzZWQ6CisJCQlaID0gYzAgKiB4MCArIGMxICsgeDEgKyAuLi4gKyBjKG4tMSkgKiB4KG4tMSkgKyBjbi4KKworCQkJVGhlIGNvZWZmaWNpZW50cyBhcmUgb3JkZXJlZCBhbmQgdGhleSBtYXRjaCB3aXRoIHNlbnNvcnMKKwkJCWJ5IG1lYW5zIG9mIHNlbnNvciBJRC4gQWRkaXRpb25hbCBjb2VmZmljaWVudHMgYXJlCisJCQlpbnRlcnByZXRlZCBhcyBjb25zdGFudCBvZmZzZXQuCisKKy0gc3VzdGFpbmFibGUtcG93ZXI6CUFuIGVzdGltYXRlIG9mIHRoZSBzdXN0YWluYWJsZSBwb3dlciAoaW4gbVcpIHRoYXQgdGhlCisgIFR5cGU6IHVuc2lnbmVkCXRoZXJtYWwgem9uZSBjYW4gZGlzc2lwYXRlIGF0IHRoZSBkZXNpcmVkCisgIFNpemU6IG9uZSBjZWxsCWNvbnRyb2wgdGVtcGVyYXR1cmUuICBGb3IgcmVmZXJlbmNlLCB0aGUKKwkJCXN1c3RhaW5hYmxlIHBvd2VyIG9mIGEgNCcnIHBob25lIGlzIHR5cGljYWxseQorCQkJMjAwMG1XLCB3aGlsZSBvbiBhIDEwJycgdGFibGV0IGlzIGFyb3VuZAorCQkJNDUwMG1XLgorCitOb3RlOiBUaGUgZGVsYXkgcHJvcGVydGllcyBhcmUgYm91bmQgdG8gdGhlIG1heGltdW0gZFQvZHQgKHRlbXBlcmF0dXJlCitkZXJpdmF0aXZlIG92ZXIgdGltZSkgaW4gdHdvIHNpdHVhdGlvbnMgZm9yIGEgdGhlcm1hbCB6b25lOgorKGkpICAtIHdoZW4gcGFzc2l2ZSBjb29saW5nIGlzIGFjdGl2YXRlZCAocG9sbGluZy1kZWxheS1wYXNzaXZlKTsgYW5kCisoaWkpIC0gd2hlbiB0aGUgem9uZSBqdXN0IG5lZWRzIHRvIGJlIG1vbml0b3JlZCAocG9sbGluZy1kZWxheSkgb3IKK3doZW4gYWN0aXZlIGNvb2xpbmcgaXMgYWN0aXZhdGVkLgorCitUaGUgbWF4aW11bSBkVC9kdCBpcyBoaWdobHkgYm91bmQgdG8gaGFyZHdhcmUgcG93ZXIgY29uc3VtcHRpb24gYW5kIGRpc3NpcGF0aW9uCitjYXBhYmlsaXR5LiBUaGUgZGVsYXlzIHNob3VsZCBiZSBjaG9zZW4gdG8gYWNjb3VudCBmb3Igc2FpZCBtYXggZFQvZHQsCitzdWNoIHRoYXQgYSBkZXZpY2UgZG9lcyBub3QgY3Jvc3Mgc2V2ZXJhbCB0cmlwIGJvdW5kYXJpZXMgdW5leHBlY3RlZGx5CitiZXR3ZWVuIHBvbGxzLiBDaG9vc2luZyB0aGUgcmlnaHQgcG9sbGluZyBkZWxheXMgc2hhbGwgYXZvaWQgaGF2aW5nIHRoZQorZGV2aWNlIGluIHRlbXBlcmF0dXJlIHJhbmdlcyB0aGF0IG1heSBkYW1hZ2UgdGhlIHNpbGljb24gc3RydWN0dXJlcyBhbmQKK3JlZHVjZSBzaWxpY29uIGxpZmV0aW1lLgorCisqIFRoZSB0aGVybWFsLXpvbmVzIG5vZGUKKworVGhlICJ0aGVybWFsLXpvbmVzIiBub2RlIGlzIGEgY29udGFpbmVyIGZvciBhbGwgdGhlcm1hbCB6b25lIG5vZGVzLiBJdCBzaGFsbAorY29udGFpbiBvbmx5IHN1Yi1ub2RlcyBkZXNjcmliaW5nIHRoZXJtYWwgem9uZXMgYXMgaW4gdGhlIHNlY3Rpb24KKyJUaGVybWFsIHpvbmUgbm9kZXMiLiBUaGUgInRoZXJtYWwtem9uZXMiIG5vZGUgYXBwZWFycyB1bmRlciAiLyIuCisKKyogRXhhbXBsZXMKKworQmVsb3cgYXJlIHNldmVyYWwgZXhhbXBsZXMgb24gaG93IHRvIHVzZSB0aGVybWFsIGRhdGEgZGVzY3JpcHRvcnMKK3VzaW5nIGRldmljZSB0cmVlIGJpbmRpbmdzOgorCisoYSkgLSBDUFUgdGhlcm1hbCB6b25lCisKK1RoZSBDUFUgdGhlcm1hbCB6b25lIGV4YW1wbGUgYmVsb3cgZGVzY3JpYmVzIGhvdyB0byBzZXR1cCBvbmUgdGhlcm1hbCB6b25lCit1c2luZyBvbmUgc2luZ2xlIHNlbnNvciBhcyB0ZW1wZXJhdHVyZSBzb3VyY2UgYW5kIG1hbnkgY29vbGluZyBkZXZpY2VzIGFuZAorcG93ZXIgZGlzc2lwYXRpb24gY29udHJvbCBzb3VyY2VzLgorCisjaW5jbHVkZSA8ZHQtYmluZGluZ3MvdGhlcm1hbC90aGVybWFsLmg+CisKK2NwdXMgeworCS8qCisJICogSGVyZSBpcyBhbiBleGFtcGxlIG9mIGRlc2NyaWJpbmcgYSBjb29saW5nIGRldmljZSBmb3IgYSBEVkZTCisJICogY2FwYWJsZSBDUFUuIFRoZSBDUFUgbm9kZSBkZXNjcmliZXMgaXRzIGZvdXIgT1BQcy4KKwkgKiBUaGUgY29vbGluZyBzdGF0ZXMgcG9zc2libGUgYXJlIDAuLjMsIGFuZCB0aGV5IGFyZQorCSAqIHVzZWQgYXMgT1BQIGluZGV4ZXMuIFRoZSBtaW5pbXVtIGNvb2xpbmcgc3RhdGUgaXMgMCwgd2hpY2ggbWVhbnMKKwkgKiBhbGwgZm91ciBPUFBzIGNhbiBiZSBhdmFpbGFibGUgdG8gdGhlIHN5c3RlbS4gVGhlIG1heGltdW0KKwkgKiBjb29saW5nIHN0YXRlIGlzIDMsIHdoaWNoIG1lYW5zIG9ubHkgdGhlIGxvd2VzdCBPUFBzICgxOThNSHpAMC44NVYpCisJICogY2FuIGJlIGF2YWlsYWJsZSBpbiB0aGUgc3lzdGVtLgorCSAqLworCWNwdTA6IGNwdUAwIHsKKwkJLi4uCisJCW9wZXJhdGluZy1wb2ludHMgPSA8CisJCQkvKiBrSHogICAgdVYgKi8KKwkJCTk3MDAwMCAgMTIwMDAwMAorCQkJNzkyMDAwICAxMTAwMDAwCisJCQkzOTYwMDAgIDk1MDAwMAorCQkJMTk4MDAwICA4NTAwMDAKKwkJPjsKKwkJY29vbGluZy1taW4tbGV2ZWwgPSA8MD47CisJCWNvb2xpbmctbWF4LWxldmVsID0gPDM+OworCQkjY29vbGluZy1jZWxscyA9IDwyPjsgLyogbWluIGZvbGxvd2VkIGJ5IG1heCAqLworCX07CisJLi4uCit9OworCismaTJjMSB7CisJLi4uCisJLyoKKwkgKiBBIHNpbXBsZSBmYW4gY29udHJvbGxlciB3aGljaCBzdXBwb3J0cyAxMCBzcGVlZHMgb2Ygb3BlcmF0aW9uCisJICogKHJlcHJlc2VudGVkIGFzIDAtOSkuCisJICovCisJZmFuMDogZmFuQDB4NDggeworCQkuLi4KKwkJY29vbGluZy1taW4tbGV2ZWwgPSA8MD47CisJCWNvb2xpbmctbWF4LWxldmVsID0gPDk+OworCQkjY29vbGluZy1jZWxscyA9IDwyPjsgLyogbWluIGZvbGxvd2VkIGJ5IG1heCAqLworCX07Cit9OworCitvY3AgeworCS4uLgorCS8qCisJICogQSBzaW1wbGUgSUMgd2l0aCBhIHNpbmdsZSBiYW5kZ2FwIHRlbXBlcmF0dXJlIHNlbnNvci4KKwkgKi8KKwliYW5kZ2FwMDogYmFuZGdhcEAweDAwMDBFRDAwIHsKKwkJLi4uCisJCSN0aGVybWFsLXNlbnNvci1jZWxscyA9IDwwPjsKKwl9OworfTsKKwordGhlcm1hbC16b25lcyB7CisJY3B1X3RoZXJtYWw6IGNwdS10aGVybWFsIHsKKwkJcG9sbGluZy1kZWxheS1wYXNzaXZlID0gPDI1MD47IC8qIG1pbGxpc2Vjb25kcyAqLworCQlwb2xsaW5nLWRlbGF5ID0gPDEwMDA+OyAvKiBtaWxsaXNlY29uZHMgKi8KKworCQl0aGVybWFsLXNlbnNvcnMgPSA8JmJhbmRnYXAwPjsKKworCQl0cmlwcyB7CisJCQljcHVfYWxlcnQwOiBjcHUtYWxlcnQwIHsKKwkJCQl0ZW1wZXJhdHVyZSA9IDw5MDAwMD47IC8qIG1pbGxpY2Vsc2l1cyAqLworCQkJCWh5c3RlcmVzaXMgPSA8MjAwMD47IC8qIG1pbGxpY2Vsc2l1cyAqLworCQkJCXR5cGUgPSAiYWN0aXZlIjsKKwkJCX07CisJCQljcHVfYWxlcnQxOiBjcHUtYWxlcnQxIHsKKwkJCQl0ZW1wZXJhdHVyZSA9IDwxMDAwMDA+OyAvKiBtaWxsaWNlbHNpdXMgKi8KKwkJCQloeXN0ZXJlc2lzID0gPDIwMDA+OyAvKiBtaWxsaWNlbHNpdXMgKi8KKwkJCQl0eXBlID0gInBhc3NpdmUiOworCQkJfTsKKwkJCWNwdV9jcml0OiBjcHUtY3JpdCB7CisJCQkJdGVtcGVyYXR1cmUgPSA8MTI1MDAwPjsgLyogbWlsbGljZWxzaXVzICovCisJCQkJaHlzdGVyZXNpcyA9IDwyMDAwPjsgLyogbWlsbGljZWxzaXVzICovCisJCQkJdHlwZSA9ICJjcml0aWNhbCI7CisJCQl9OworCQl9OworCisJCWNvb2xpbmctbWFwcyB7CisJCQltYXAwIHsKKwkJCQl0cmlwID0gPCZjcHVfYWxlcnQwPjsKKwkJCQljb29saW5nLWRldmljZSA9IDwmZmFuMCBUSEVSTUFMX05PX0xJTUlUIDQ+OworCQkJfTsKKwkJCW1hcDEgeworCQkJCXRyaXAgPSA8JmNwdV9hbGVydDE+OworCQkJCWNvb2xpbmctZGV2aWNlID0gPCZmYW4wIDUgVEhFUk1BTF9OT19MSU1JVD47CisJCQl9OworCQkJbWFwMiB7CisJCQkJdHJpcCA9IDwmY3B1X2FsZXJ0MT47CisJCQkJY29vbGluZy1kZXZpY2UgPQorCQkJCSAgICA8JmNwdTAgVEhFUk1BTF9OT19MSU1JVCBUSEVSTUFMX05PX0xJTUlUPjsKKwkJCX07CisJCX07CisJfTsKK307CisKK0luIHRoZSBleGFtcGxlIGFib3ZlLCB0aGUgQURDIHNlbnNvciAoYmFuZGdhcDApIGF0IGFkZHJlc3MgMHgwMDAwRUQwMCBpcwordXNlZCB0byBtb25pdG9yIHRoZSB6b25lICdjcHUtdGhlcm1hbCcgdXNpbmcgaXRzIHNvbGUgc2Vuc29yLiBBIGZhbgorZGV2aWNlIChmYW4wKSBpcyBjb250cm9sbGVkIHZpYSBJMkMgYnVzIDEsIGF0IGFkZHJlc3MgMHg0OCwgYW5kIGhhcyB0ZW4KK2RpZmZlcmVudCBjb29saW5nIHN0YXRlcyAwLTkuIEl0IGlzIHVzZWQgdG8gcmVtb3ZlIHRoZSBoZWF0IG91dCBvZgordGhlIHRoZXJtYWwgem9uZSAnY3B1LXRoZXJtYWwnIHVzaW5nIGl0cyBjb29saW5nIHN0YXRlcworZnJvbSBpdHMgbWluaW11bSB0byA0LCB3aGVuIGl0IHJlYWNoZXMgdHJpcCBwb2ludCAnY3B1X2FsZXJ0MCcKK2F0IDkwQywgYXMgYW4gZXhhbXBsZSBvZiBhY3RpdmUgY29vbGluZy4gVGhlIHNhbWUgY29vbGluZyBkZXZpY2UgaXMgdXNlZCBhdAorJ2NwdV9hbGVydDEnLCBidXQgZnJvbSA1IHRvIGl0cyBtYXhpbXVtIHN0YXRlLiBUaGUgY3B1QDAgZGV2aWNlIGlzIGFsc28KK2xpbmtlZCB0byB0aGUgc2FtZSB0aGVybWFsIHpvbmUsICdjcHUtdGhlcm1hbCcsIGFzIGEgcGFzc2l2ZSBjb29saW5nIGRldmljZSwKK3VzaW5nIGFsbCBpdHMgY29vbGluZyBzdGF0ZXMgYXQgdHJpcCBwb2ludCAnY3B1X2FsZXJ0MScsCit3aGljaCBpcyBhIHRyaXAgcG9pbnQgYXQgMTAwQy4gT24gdGhlIHRoZXJtYWwgem9uZSAnY3B1LXRoZXJtYWwnLCBhdCB0aGUKK3RlbXBlcmF0dXJlIG9mIDEyNUMsIHJlcHJlc2VudGVkIGJ5IHRoZSB0cmlwIHBvaW50ICdjcHVfY3JpdCcsIHRoZSBzaWxpY29uCitpcyBub3QgcmVsaWFibGUgYW55bW9yZS4KKworKGIpIC0gSUMgd2l0aCBzZXZlcmFsIGludGVybmFsIHNlbnNvcnMKKworVGhlIGV4YW1wbGUgYmVsb3cgZGVzY3JpYmVzIGhvdyB0byBkZXBsb3kgc2V2ZXJhbCB0aGVybWFsIHpvbmVzIGJhc2VkIG9mZiBhCitzaW5nbGUgc2Vuc29yIElDLCBhc3N1bWluZyBpdCBoYXMgc2V2ZXJhbCBpbnRlcm5hbCBzZW5zb3JzLiBUaGlzIGlzIGEgY29tbW9uCitjYXNlIG9uIFNvQyBkZXNpZ25zIHdpdGggc2V2ZXJhbCBpbnRlcm5hbCBJUHMgdGhhdCBtYXkgbmVlZCBkaWZmZXJlbnQgdGhlcm1hbAorcmVxdWlyZW1lbnRzLCBhbmQgdGh1cyBtYXkgaGF2ZSB0aGVpciBvd24gc2Vuc29yIHRvIG1vbml0b3Igb3IgZGV0ZWN0IGludGVybmFsCitob3RzcG90cyBpbiB0aGVpciBzaWxpY29uLgorCisjaW5jbHVkZSA8ZHQtYmluZGluZ3MvdGhlcm1hbC90aGVybWFsLmg+CisKK29jcCB7CisJLi4uCisJLyoKKwkgKiBBIHNpbXBsZSBJQyB3aXRoIHNldmVyYWwgYmFuZGdhcCB0ZW1wZXJhdHVyZSBzZW5zb3JzLgorCSAqLworCWJhbmRnYXAwOiBiYW5kZ2FwQDB4MDAwMEVEMDAgeworCQkuLi4KKwkJI3RoZXJtYWwtc2Vuc29yLWNlbGxzID0gPDE+OworCX07Cit9OworCit0aGVybWFsLXpvbmVzIHsKKwljcHVfdGhlcm1hbDogY3B1LXRoZXJtYWwgeworCQlwb2xsaW5nLWRlbGF5LXBhc3NpdmUgPSA8MjUwPjsgLyogbWlsbGlzZWNvbmRzICovCisJCXBvbGxpbmctZGVsYXkgPSA8MTAwMD47IC8qIG1pbGxpc2Vjb25kcyAqLworCisJCQkJLyogc2Vuc29yICAgICAgIElEICovCisJCXRoZXJtYWwtc2Vuc29ycyA9IDwmYmFuZGdhcDAgICAgIDA+OworCisJCXRyaXBzIHsKKwkJCS8qIGVhY2ggem9uZSB3aXRoaW4gdGhlIFNvQyBtYXkgaGF2ZSBpdHMgb3duIHRyaXBzICovCisJCQljcHVfYWxlcnQ6IGNwdS1hbGVydCB7CisJCQkJdGVtcGVyYXR1cmUgPSA8MTAwMDAwPjsgLyogbWlsbGljZWxzaXVzICovCisJCQkJaHlzdGVyZXNpcyA9IDwyMDAwPjsgLyogbWlsbGljZWxzaXVzICovCisJCQkJdHlwZSA9ICJwYXNzaXZlIjsKKwkJCX07CisJCQljcHVfY3JpdDogY3B1LWNyaXQgeworCQkJCXRlbXBlcmF0dXJlID0gPDEyNTAwMD47IC8qIG1pbGxpY2Vsc2l1cyAqLworCQkJCWh5c3RlcmVzaXMgPSA8MjAwMD47IC8qIG1pbGxpY2Vsc2l1cyAqLworCQkJCXR5cGUgPSAiY3JpdGljYWwiOworCQkJfTsKKwkJfTsKKworCQljb29saW5nLW1hcHMgeworCQkJLyogZWFjaCB6b25lIHdpdGhpbiB0aGUgU29DIG1heSBoYXZlIGl0cyBvd24gY29vbGluZyAqLworCQkJLi4uCisJCX07CisJfTsKKworCWdwdV90aGVybWFsOiBncHUtdGhlcm1hbCB7CisJCXBvbGxpbmctZGVsYXktcGFzc2l2ZSA9IDwxMjA+OyAvKiBtaWxsaXNlY29uZHMgKi8KKwkJcG9sbGluZy1kZWxheSA9IDwxMDAwPjsgLyogbWlsbGlzZWNvbmRzICovCisKKwkJCQkvKiBzZW5zb3IgICAgICAgSUQgKi8KKwkJdGhlcm1hbC1zZW5zb3JzID0gPCZiYW5kZ2FwMCAgICAgMT47CisKKwkJdHJpcHMgeworCQkJLyogZWFjaCB6b25lIHdpdGhpbiB0aGUgU29DIG1heSBoYXZlIGl0cyBvd24gdHJpcHMgKi8KKwkJCWdwdV9hbGVydDogZ3B1LWFsZXJ0IHsKKwkJCQl0ZW1wZXJhdHVyZSA9IDw5MDAwMD47IC8qIG1pbGxpY2Vsc2l1cyAqLworCQkJCWh5c3RlcmVzaXMgPSA8MjAwMD47IC8qIG1pbGxpY2Vsc2l1cyAqLworCQkJCXR5cGUgPSAicGFzc2l2ZSI7CisJCQl9OworCQkJZ3B1X2NyaXQ6IGdwdS1jcml0IHsKKwkJCQl0ZW1wZXJhdHVyZSA9IDwxMDUwMDA+OyAvKiBtaWxsaWNlbHNpdXMgKi8KKwkJCQloeXN0ZXJlc2lzID0gPDIwMDA+OyAvKiBtaWxsaWNlbHNpdXMgKi8KKwkJCQl0eXBlID0gImNyaXRpY2FsIjsKKwkJCX07CisJCX07CisKKwkJY29vbGluZy1tYXBzIHsKKwkJCS8qIGVhY2ggem9uZSB3aXRoaW4gdGhlIFNvQyBtYXkgaGF2ZSBpdHMgb3duIGNvb2xpbmcgKi8KKwkJCS4uLgorCQl9OworCX07CisKKwlkc3BfdGhlcm1hbDogZHNwLXRoZXJtYWwgeworCQlwb2xsaW5nLWRlbGF5LXBhc3NpdmUgPSA8NTA+OyAvKiBtaWxsaXNlY29uZHMgKi8KKwkJcG9sbGluZy1kZWxheSA9IDwxMDAwPjsgLyogbWlsbGlzZWNvbmRzICovCisKKwkJCQkvKiBzZW5zb3IgICAgICAgSUQgKi8KKwkJdGhlcm1hbC1zZW5zb3JzID0gPCZiYW5kZ2FwMCAgICAgMj47CisKKwkJdHJpcHMgeworCQkJLyogZWFjaCB6b25lIHdpdGhpbiB0aGUgU29DIG1heSBoYXZlIGl0cyBvd24gdHJpcHMgKi8KKwkJCWRzcF9hbGVydDogZHNwLWFsZXJ0IHsKKwkJCQl0ZW1wZXJhdHVyZSA9IDw5MDAwMD47IC8qIG1pbGxpY2Vsc2l1cyAqLworCQkJCWh5c3RlcmVzaXMgPSA8MjAwMD47IC8qIG1pbGxpY2Vsc2l1cyAqLworCQkJCXR5cGUgPSAicGFzc2l2ZSI7CisJCQl9OworCQkJZHNwX2NyaXQ6IGdwdS1jcml0IHsKKwkJCQl0ZW1wZXJhdHVyZSA9IDwxMzUwMDA+OyAvKiBtaWxsaWNlbHNpdXMgKi8KKwkJCQloeXN0ZXJlc2lzID0gPDIwMDA+OyAvKiBtaWxsaWNlbHNpdXMgKi8KKwkJCQl0eXBlID0gImNyaXRpY2FsIjsKKwkJCX07CisJCX07CisKKwkJY29vbGluZy1tYXBzIHsKKwkJCS8qIGVhY2ggem9uZSB3aXRoaW4gdGhlIFNvQyBtYXkgaGF2ZSBpdHMgb3duIGNvb2xpbmcgKi8KKwkJCS4uLgorCQl9OworCX07Cit9OworCitJbiB0aGUgZXhhbXBsZSBhYm92ZSwgdGhlcmUgaXMgb25lIGJhbmRnYXAgSUMgd2hpY2ggaGFzIHRoZSBjYXBhYmlsaXR5IHRvCittb25pdG9yIHRocmVlIHNlbnNvcnMuIFRoZSBoYXJkd2FyZSBoYXMgYmVlbiBkZXNpZ25lZCBzbyB0aGF0IHNlbnNvcnMgYXJlCitwbGFjZWQgb24gZGlmZmVyZW50IHBsYWNlcyBpbiB0aGUgRElFIHRvIG1vbml0b3IgZGlmZmVyZW50IHRlbXBlcmF0dXJlCitob3RzcG90czogb25lIGZvciBDUFUgdGhlcm1hbCB6b25lLCBvbmUgZm9yIEdQVSB0aGVybWFsIHpvbmUgYW5kIHRoZQorb3RoZXIgdG8gbW9uaXRvciBhIERTUCB0aGVybWFsIHpvbmUuCisKK1RodXMsIHRoZXJlIGlzIGEgbmVlZCB0byBhc3NpZ24gZWFjaCBzZW5zb3IgcHJvdmlkZWQgYnkgdGhlIGJhbmRnYXAgSUMKK3RvIGRpZmZlcmVudCB0aGVybWFsIHpvbmVzLiBUaGlzIGlzIGFjaGlldmVkIGJ5IG1lYW5zIG9mIHVzaW5nIHRoZQorI3RoZXJtYWwtc2Vuc29yLWNlbGxzIHByb3BlcnR5IGFuZCB1c2luZyB0aGUgZmlyc3QgY2VsbCBvZiB0aGUgc2Vuc29yCitzcGVjaWZpZXIgYXMgc2Vuc29yIElELiBJbiB0aGUgZXhhbXBsZSwgdGhlbiwgPGJhbmRnYXAgMD4gaXMgdXNlZCB0bworbW9uaXRvciBDUFUgdGhlcm1hbCB6b25lLCA8YmFuZGdhcCAxPiBpcyB1c2VkIHRvIG1vbml0b3IgR1BVIHRoZXJtYWwKK3pvbmUgYW5kIDxiYW5kZ2FwIDI+IGlzIHVzZWQgdG8gbW9uaXRvciBEU1AgdGhlcm1hbCB6b25lLiBFYWNoIHpvbmUKK21heSBiZSB1bmNvcnJlbGF0ZWQsIGhhdmluZyBpdHMgb3duIGRUL2R0IHJlcXVpcmVtZW50cywgdHJpcHMKK2FuZCBjb29saW5nIG1hcHMuCisKKworKGMpIC0gU2V2ZXJhbCBzZW5zb3JzIHdpdGhpbiBvbmUgc2luZ2xlIHRoZXJtYWwgem9uZQorCitUaGUgZXhhbXBsZSBiZWxvdyBpbGx1c3RyYXRlcyBob3cgdG8gdXNlIG1vcmUgdGhhbiBvbmUgc2Vuc29yIHdpdGhpbgorb25lIHRoZXJtYWwgem9uZS4KKworI2luY2x1ZGUgPGR0LWJpbmRpbmdzL3RoZXJtYWwvdGhlcm1hbC5oPgorCismaTJjMSB7CisJLi4uCisJLyoKKwkgKiBBIHNpbXBsZSBJQyB3aXRoIGEgc2luZ2xlIHRlbXBlcmF0dXJlIHNlbnNvci4KKwkgKi8KKwlhZGM6IHNlbnNvckAweDQ5IHsKKwkJLi4uCisJCSN0aGVybWFsLXNlbnNvci1jZWxscyA9IDwwPjsKKwl9OworfTsKKworb2NwIHsKKwkuLi4KKwkvKgorCSAqIEEgc2ltcGxlIElDIHdpdGggYSBzaW5nbGUgYmFuZGdhcCB0ZW1wZXJhdHVyZSBzZW5zb3IuCisJICovCisJYmFuZGdhcDA6IGJhbmRnYXBAMHgwMDAwRUQwMCB7CisJCS4uLgorCQkjdGhlcm1hbC1zZW5zb3ItY2VsbHMgPSA8MD47CisJfTsKK307CisKK3RoZXJtYWwtem9uZXMgeworCWNwdV90aGVybWFsOiBjcHUtdGhlcm1hbCB7CisJCXBvbGxpbmctZGVsYXktcGFzc2l2ZSA9IDwyNTA+OyAvKiBtaWxsaXNlY29uZHMgKi8KKwkJcG9sbGluZy1kZWxheSA9IDwxMDAwPjsgLyogbWlsbGlzZWNvbmRzICovCisKKwkJdGhlcm1hbC1zZW5zb3JzID0gPCZiYW5kZ2FwMD4sCS8qIGNwdSAqLworCQkJCSAgPCZhZGM+OwkvKiBwY2Igbm9ydGggKi8KKworCQkvKiBob3RzcG90ID0gMTAwICogYmFuZGdhcCAtIDEyMCAqIGFkYyArIDQ4NCAqLworCQljb2VmZmljaWVudHMgPSAJCTwxMDAJLTEyMAk0ODQ+OworCisJCXRyaXBzIHsKKwkJCS4uLgorCQl9OworCisJCWNvb2xpbmctbWFwcyB7CisJCQkuLi4KKwkJfTsKKwl9OworfTsKKworSW4gc29tZSBjYXNlcywgdGhlcmUgaXMgYSBuZWVkIHRvIHVzZSBtb3JlIHRoYW4gb25lIHNlbnNvciB0byBleHRyYXBvbGF0ZQorYSB0aGVybWFsIGhvdHNwb3QgaW4gdGhlIHNpbGljb24uIFRoZSBhYm92ZSBleGFtcGxlIGlsbHVzdHJhdGVzIHRoaXMgc2l0dWF0aW9uLgorRm9yIGluc3RhbmNlLCBpdCBtYXkgYmUgdGhlIGNhc2UgdGhhdCBhIHNlbnNvciBleHRlcm5hbCB0byBDUFUgSVAgbWF5IGJlIHBsYWNlZAorY2xvc2UgdG8gQ1BVIGhvdHNwb3QgYW5kIHRvZ2V0aGVyIHdpdGggaW50ZXJuYWwgQ1BVIHNlbnNvciwgaXQgaXMgdXNlZAordG8gZGV0ZXJtaW5lIHRoZSBob3RzcG90LiBBc3N1bWluZyB0aGlzIGlzIHRoZSBjYXNlIGZvciB0aGUgYWJvdmUgZXhhbXBsZSwKK3RoZSBoeXBvdGhldGljYWwgZXh0cmFwb2xhdGlvbiBydWxlIHdvdWxkIGJlOgorCQlob3RzcG90ID0gMTAwICogYmFuZGdhcCAtIDEyMCAqIGFkYyArIDQ4NAorCitJbiBvdGhlciBjb250ZXh0LCB0aGUgc2FtZSBpZGVhIGNhbiBiZSB1c2VkIHRvIGFkZCBmaXhlZCBvZmZzZXQuIEZvciBpbnN0YW5jZSwKK2NvbnNpZGVyIHRoZSBob3RzcG90IGV4dHJhcG9sYXRpb24gcnVsZSBiZWxvdzoKKwkJaG90c3BvdCA9IDEgKiBhZGMgKyA2MDAwCisKK0luIHRoZSBhYm92ZSBlcXVhdGlvbiwgdGhlIGhvdHNwb3QgaXMgYWx3YXlzIDZDIGhpZ2hlciB0aGFuIHdoYXQgaXMgcmVhZAorZnJvbSB0aGUgQURDIHNlbnNvci4gVGhlIGJpbmRpbmcgd291bGQgYmUgdGhlbjoKKyAgICAgICAgdGhlcm1hbC1zZW5zb3JzID0gIDwmYWRjPjsKKworCQkvKiBob3RzcG90ID0gMSAqIGFkYyArIDYwMDAgKi8KKwljb2VmZmljaWVudHMgPSAJCTwxCTYwMDA+OworCisoZCkgLSBCb2FyZCB0aGVybWFsCisKK1RoZSBib2FyZCB0aGVybWFsIGV4YW1wbGUgYmVsb3cgaWxsdXN0cmF0ZXMgaG93IHRvIHNldHVwIG9uZSB0aGVybWFsIHpvbmUKK3dpdGggbWFueSBzZW5zb3JzIGFuZCBtYW55IGNvb2xpbmcgZGV2aWNlcy4KKworI2luY2x1ZGUgPGR0LWJpbmRpbmdzL3RoZXJtYWwvdGhlcm1hbC5oPgorCismaTJjMSB7CisJLi4uCisJLyoKKwkgKiBBbiBJQyB3aXRoIHNldmVyYWwgdGVtcGVyYXR1cmUgc2Vuc29yLgorCSAqLworCWFkY19kdW1teTogc2Vuc29yQDB4NTAgeworCQkuLi4KKwkJI3RoZXJtYWwtc2Vuc29yLWNlbGxzID0gPDE+OyAvKiBzZW5zb3IgaW50ZXJuYWwgSUQgKi8KKwl9OworfTsKKwordGhlcm1hbC16b25lcyB7CisJYmF0dC10aGVybWFsIHsKKwkJcG9sbGluZy1kZWxheS1wYXNzaXZlID0gPDUwMD47IC8qIG1pbGxpc2Vjb25kcyAqLworCQlwb2xsaW5nLWRlbGF5ID0gPDI1MDA+OyAvKiBtaWxsaXNlY29uZHMgKi8KKworCQkJCS8qIHNlbnNvciAgICAgICBJRCAqLworCQl0aGVybWFsLXNlbnNvcnMgPSA8JmFkY19kdW1teSAgICAgND47CisKKwkJdHJpcHMgeworCQkJLi4uCisJCX07CisKKwkJY29vbGluZy1tYXBzIHsKKwkJCS4uLgorCQl9OworCX07CisKKwlib2FyZF90aGVybWFsOiBib2FyZC10aGVybWFsIHsKKwkJcG9sbGluZy1kZWxheS1wYXNzaXZlID0gPDEwMDA+OyAvKiBtaWxsaXNlY29uZHMgKi8KKwkJcG9sbGluZy1kZWxheSA9IDwyNTAwPjsgLyogbWlsbGlzZWNvbmRzICovCisKKwkJCQkvKiBzZW5zb3IgICAgICAgSUQgKi8KKwkJdGhlcm1hbC1zZW5zb3JzID0gPCZhZGNfZHVtbXkgICAgIDA+LCAvKiBwY2IgdG9wIGVkZ2UgKi8KKwkJCQkgIDwmYWRjX2R1bW15ICAgICAxPiwgLyogbGNkICovCisJCQkJICA8JmFkY19kdW1teSAgICAgMj47IC8qIGJhY2sgY292ZXIgKi8KKwkJLyoKKwkJICogQW4gYXJyYXkgb2YgY29lZmZpY2llbnRzIGRlc2NyaWJpbmcgdGhlIHNlbnNvcgorCQkgKiBsaW5lYXIgcmVsYXRpb24uIEUuZy46CisJCSAqIHogPSBjMSp4MSArIGMyKngyICsgYzMqeDMKKwkJICovCisJCWNvZWZmaWNpZW50cyA9CQk8MTIwMAktMzQ1CTg5MD47CisKKwkJc3VzdGFpbmFibGUtcG93ZXIgPSA8MjUwMD47CisKKwkJdHJpcHMgeworCQkJLyogVHJpcHMgYXJlIGJhc2VkIG9uIHJlc3VsdGluZyBsaW5lYXIgZXF1YXRpb24gKi8KKwkJCWNwdV90cmlwOiBjcHUtdHJpcCB7CisJCQkJdGVtcGVyYXR1cmUgPSA8NjAwMDA+OyAvKiBtaWxsaWNlbHNpdXMgKi8KKwkJCQloeXN0ZXJlc2lzID0gPDIwMDA+OyAvKiBtaWxsaWNlbHNpdXMgKi8KKwkJCQl0eXBlID0gInBhc3NpdmUiOworCQkJfTsKKwkJCWdwdV90cmlwOiBncHUtdHJpcCB7CisJCQkJdGVtcGVyYXR1cmUgPSA8NTUwMDA+OyAvKiBtaWxsaWNlbHNpdXMgKi8KKwkJCQloeXN0ZXJlc2lzID0gPDIwMDA+OyAvKiBtaWxsaWNlbHNpdXMgKi8KKwkJCQl0eXBlID0gInBhc3NpdmUiOworCQkJfQorCQkJbGNkX3RyaXA6IGxjcC10cmlwIHsKKwkJCQl0ZW1wZXJhdHVyZSA9IDw1MzAwMD47IC8qIG1pbGxpY2Vsc2l1cyAqLworCQkJCWh5c3RlcmVzaXMgPSA8MjAwMD47IC8qIG1pbGxpY2Vsc2l1cyAqLworCQkJCXR5cGUgPSAicGFzc2l2ZSI7CisJCQl9OworCQkJY3JpdF90cmlwOiBjcml0LXRyaXAgeworCQkJCXRlbXBlcmF0dXJlID0gPDY4MDAwPjsgLyogbWlsbGljZWxzaXVzICovCisJCQkJaHlzdGVyZXNpcyA9IDwyMDAwPjsgLyogbWlsbGljZWxzaXVzICovCisJCQkJdHlwZSA9ICJjcml0aWNhbCI7CisJCQl9OworCQl9OworCisJCWNvb2xpbmctbWFwcyB7CisJCQltYXAwIHsKKwkJCQl0cmlwID0gPCZjcHVfdHJpcD47CisJCQkJY29vbGluZy1kZXZpY2UgPSA8JmNwdTAgMCAyPjsKKwkJCQljb250cmlidXRpb24gPSA8NTU+OworCQkJfTsKKwkJCW1hcDEgeworCQkJCXRyaXAgPSA8JmdwdV90cmlwPjsKKwkJCQljb29saW5nLWRldmljZSA9IDwmZ3B1MCAwIDI+OworCQkJCWNvbnRyaWJ1dGlvbiA9IDwyMD47CisJCQl9OworCQkJbWFwMiB7CisJCQkJdHJpcCA9IDwmbGNkX3RyaXA+OworCQkJCWNvb2xpbmctZGV2aWNlID0gPCZsY2QwIDUgMTA+OworCQkJCWNvbnRyaWJ1dGlvbiA9IDwxNT47CisJCQl9OworCQl9OworCX07Cit9OworCitUaGUgYWJvdmUgZXhhbXBsZSBpcyBhIG1peCBvZiBwcmV2aW91cyBleGFtcGxlcywgYSBzZW5zb3IgSVAgd2l0aCBzZXZlcmFsIGludGVybmFsCitzZW5zb3JzIHVzZWQgdG8gbW9uaXRvciBkaWZmZXJlbnQgem9uZXMsIG9uZSBvZiB0aGVtIGlzIGNvbXBvc2VkIGJ5IHNldmVyYWwgc2Vuc29ycyBhbmQKK3dpdGggZGlmZmVyZW50IGNvb2xpbmcgZGV2aWNlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aGVybWFsL3RpX3NvY190aGVybWFsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aGVybWFsL3RpX3NvY190aGVybWFsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Mjk5ZGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RoZXJtYWwvdGlfc29jX3RoZXJtYWwudHh0CkBAIC0wLDAgKzEsODggQEAKKyogVGV4YXMgSW5zdHJ1bWVudCBPTUFQIFNDTSBiYW5kZ2FwIGJpbmRpbmdzCisKK0luIHRoZSBTeXN0ZW0gQ29udHJvbCBNb2R1bGUsIE9NQVAgc3VwcGxpZXMgYSB2b2x0YWdlIHJlZmVyZW5jZQorYW5kIGEgdGVtcGVyYXR1cmUgc2Vuc29yIGZlYXR1cmUgdGhhdCBhcmUgZ2F0aGVyZWQgaW4gdGhlIGJhbmQKK2dhcCB2b2x0YWdlIGFuZCB0ZW1wZXJhdHVyZSBzZW5zb3IgKFZCR0FQVFMpIG1vZHVsZS4gVGhlIGJhbmQKK2dhcCBwcm92aWRlcyBjdXJyZW50IGFuZCB2b2x0YWdlIHJlZmVyZW5jZSBmb3IgaXRzIGludGVybmFsCitjaXJjdWl0cyBhbmQgb3RoZXIgYW5hbG9nIElQIGJsb2Nrcy4gVGhlIGFuYWxvZy10by1kaWdpdGFsCitjb252ZXJ0ZXIgKEFEQykgcHJvZHVjZXMgYW4gb3V0cHV0IHZhbHVlIHRoYXQgaXMgcHJvcG9ydGlvbmFsCit0byB0aGUgc2lsaWNvbiB0ZW1wZXJhdHVyZS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZToKKyAgLSAidGksb21hcDM0eHgtYmFuZGdhcCIgOiBmb3IgT01BUDM0eHggYmFuZGdhcAorICAtICJ0aSxvbWFwMzZ4eC1iYW5kZ2FwIiA6IGZvciBPTUFQMzZ4eCBiYW5kZ2FwCisgIC0gInRpLG9tYXA0NDMwLWJhbmRnYXAiIDogZm9yIE9NQVA0NDMwIGJhbmRnYXAKKyAgLSAidGksb21hcDQ0NjAtYmFuZGdhcCIgOiBmb3IgT01BUDQ0NjAgYmFuZGdhcAorICAtICJ0aSxvbWFwNDQ3MC1iYW5kZ2FwIiA6IGZvciBPTUFQNDQ3MCBiYW5kZ2FwCisgIC0gInRpLG9tYXA1NDMwLWJhbmRnYXAiIDogZm9yIE9NQVA1NDMwIGJhbmRnYXAKKy0gaW50ZXJydXB0cyA6IHRoaXMgZW50cnkgc2hvdWxkIGluZGljYXRlIHdoaWNoIGludGVycnVwdCBsaW5lCit0aGUgdGFsZXJ0IHNpZ25hbCBpcyByb3V0ZWQgdG87CitTcGVjaWZpYzoKKy0gZ3Bpb3MgOiB0aGlzIGVudHJ5IHNob3VsZCBiZSB1c2VkIHRvIGluZm9ybSB3aGljaCBHUElPCitsaW5lIHRoZSB0c2h1dCBzaWduYWwgaXMgcm91dGVkIHRvLiBUaGUgaW5mb3JtZWQgR1BJTyB3aWxsCitiZSB0cmVhdGVkIGFzIGFuIElSUTsKKy0gcmVncyA6IHRoaXMgZW50cnkgbXVzdCBhbHNvIGJlIHNwZWNpZmllZCBhbmQgaXQgaXMgc3BlY2lmaWMKK3RvIGVhY2ggYmFuZGdhcCB2ZXJzaW9uLCBiZWNhdXNlIHRoZSBtYXBwaW5nIG1heSBjaGFuZ2UgZnJvbQorc29jIHRvIHNvYywgYXBhcnQgb2YgZGVwZW5kaW5nIG9uIGF2YWlsYWJsZSBmZWF0dXJlcy4KKworRXhhbXBsZToKK09NQVAzNHh4OgorYmFuZGdhcCB7CisJcmVnID0gPDB4NDgwMDI1MjQgMHg0PjsKKwljb21wYXRpYmxlID0gInRpLG9tYXAzNHh4LWJhbmRnYXAiOworfTsKKworT01BUDM2eHg6CitiYW5kZ2FwIHsKKwlyZWcgPSA8MHg0ODAwMjUyNCAweDQ+OworCWNvbXBhdGlibGUgPSAidGksb21hcDM2eHgtYmFuZGdhcCI7Cit9OworCitPTUFQNDQzMDoKK2JhbmRnYXAgeworCXJlZyA9IDwweDRhMDAyMjYwIDB4NCAweDRhMDAyMzJDIDB4ND47CisJY29tcGF0aWJsZSA9ICJ0aSxvbWFwNDQzMC1iYW5kZ2FwIjsKK307CisKK09NQVA0NDYwOgorYmFuZGdhcCB7CisJcmVnID0gPDB4NGEwMDIyNjAgMHg0CisJCTB4NGEwMDIzMkMgMHg0CisJCTB4NGEwMDIzNzggMHgxOD47CisJY29tcGF0aWJsZSA9ICJ0aSxvbWFwNDQ2MC1iYW5kZ2FwIjsKKwlpbnRlcnJ1cHRzID0gPDAgMTI2IDQ+OyAvKiB0YWxlcnQgKi8KKwlncGlvcyA9IDwmZ3BpbzMgMjIgMD47IC8qIHRzaHV0ICovCit9OworCitPTUFQNDQ3MDoKK2JhbmRnYXAgeworCXJlZyA9IDwweDRhMDAyMjYwIDB4NAorCQkweDRhMDAyMzJDIDB4NAorCQkweDRhMDAyMzc4IDB4MTg+OworCWNvbXBhdGlibGUgPSAidGksb21hcDQ0NzAtYmFuZGdhcCI7CisJaW50ZXJydXB0cyA9IDwwIDEyNiA0PjsgLyogdGFsZXJ0ICovCisJZ3Bpb3MgPSA8JmdwaW8zIDIyIDA+OyAvKiB0c2h1dCAqLworfTsKKworT01BUDU0MzA6CitiYW5kZ2FwIHsKKwlyZWcgPSA8MHg0YTAwMjFlMCAweGMKKwkJMHg0YTAwMjMyYyAweGMKKwkJMHg0YTAwMjM4MCAweDJjCisJCTB4NGEwMDIzQzAgMHgzYz47CisJY29tcGF0aWJsZSA9ICJ0aSxvbWFwNTQzMC1iYW5kZ2FwIjsKKwlpbnRlcnJ1cHRzID0gPDAgMTI2IDQ+OyAvKiB0YWxlcnQgKi8KK307CisKK0RSQTc1MjoKK2JhbmRnYXAgeworCXJlZyA9IDwweDRhMDAyMWUwIDB4YworCQkweDRhMDAyMzJjIDB4YworCQkweDRhMDAyMzgwIDB4MmMKKwkJMHg0YTAwMjNDMCAweDNjCisJCTB4NGEwMDI1NjQgMHg4CisJCTB4NGEwMDI1NzQgMHg1MD47CisJY29tcGF0aWJsZSA9ICJ0aSxkcmE3NTItYmFuZGdhcCI7CisJaW50ZXJydXB0cyA9IDwwIDEyNiA0PjsgLyogdGFsZXJ0ICovCit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL2FsbHdpbm5lcixzdW40aS10aW1lci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvYWxsd2lubmVyLHN1bjRpLXRpbWVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzJlMjM1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL2FsbHdpbm5lcixzdW40aS10aW1lci50eHQKQEAgLTAsMCArMSwxNyBAQAorQWxsd2lubmVyIEExWCBTb0NzIFRpbWVyIENvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJhbGx3aW5uZXIsc3VuNGktYTEwLXRpbWVyIgorLSByZWcgOiBTcGVjaWZpZXMgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSByZWdpc3RlcnMuCistIGludGVycnVwdHMgOiBUaGUgaW50ZXJydXB0IG9mIHRoZSBmaXJzdCB0aW1lcgorLSBjbG9ja3M6IHBoYW5kbGUgdG8gdGhlIHNvdXJjZSBjbG9jayAodXN1YWxseSBhIDI0IE1IeiBmaXhlZCBjbG9jaykKKworRXhhbXBsZToKKwordGltZXIgeworCWNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjRpLWExMC10aW1lciI7CisJcmVnID0gPDB4MDFjMjBjMDAgMHg0MDA+OworCWludGVycnVwdHMgPSA8MjI+OworCWNsb2NrcyA9IDwmb3NjPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvYWxsd2lubmVyLHN1bjVpLWExMy1oc3RpbWVyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9hbGx3aW5uZXIsc3VuNWktYTEzLWhzdGltZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3Y2ZjN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvYWxsd2lubmVyLHN1bjVpLWExMy1oc3RpbWVyLnR4dApAQCAtMCwwICsxLDI2IEBACitBbGx3aW5uZXIgU29DcyBIaWdoIFNwZWVkIFRpbWVyIENvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDoJc2hvdWxkIGJlICJhbGx3aW5uZXIsc3VuNWktYTEzLWhzdGltZXIiIG9yCisJCSJhbGx3aW5uZXIsc3VuN2ktYTIwLWhzdGltZXIiCistIHJlZyA6IFNwZWNpZmllcyBiYXNlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIHJlZ2lzdGVycy4KKy0gaW50ZXJydXB0cyA6CVRoZSBpbnRlcnJ1cHRzIG9mIHRoZXNlIHRpbWVycyAoMiBmb3IgdGhlIHN1bjVpIElQLCA0IGZvciB0aGUgc3VuN2kKKwkJb25lKQorLSBjbG9ja3M6IHBoYW5kbGUgdG8gdGhlIHNvdXJjZSBjbG9jayAodXN1YWxseSB0aGUgQUhCIGNsb2NrKQorCitPcHRpb25uYWwgcHJvcGVydGllczoKKy0gcmVzZXRzOiBwaGFuZGxlIHRvIGEgcmVzZXQgY29udHJvbGxlciBhc3NlcnRpbmcgdGhlIHRpbWVyCisKK0V4YW1wbGU6CisKK3RpbWVyQDAxYzYwMDAwIHsKKwljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW43aS1hMjAtaHN0aW1lciI7CisJcmVnID0gPDB4MDFjNjAwMDAgMHgxMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDAgNTEgMT4sCisJCSAgICAgPDAgNTIgMT4sCisJCSAgICAgPDAgNTMgMT4sCisJCSAgICAgPDAgNTQgMT47CisJY2xvY2tzID0gPCZhaGIxX2dhdGVzIDE5PjsKKwlyZXNldHMgPSA8JmFoYjFyc3QgMTk+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9hbWxvZ2ljLG1lc29uNi10aW1lci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvYW1sb2dpYyxtZXNvbjYtdGltZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwOTIwNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvYW1sb2dpYyxtZXNvbjYtdGltZXIudHh0CkBAIC0wLDAgKzEsMTUgQEAKK0FtbG9naWMgTWVzb242IFNvQ3MgVGltZXIgQ29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImFtbG9naWMsbWVzb242LXRpbWVyIgorLSByZWcgOiBTcGVjaWZpZXMgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSByZWdpc3RlcnMuCistIGludGVycnVwdHMgOiBUaGUgaW50ZXJydXB0IG9mIHRoZSBmaXJzdCB0aW1lcgorCitFeGFtcGxlOgorCit0aW1lckBjMTEwOTk0MCB7CisJY29tcGF0aWJsZSA9ICJhbWxvZ2ljLG1lc29uNi10aW1lciI7CisJcmVnID0gPDB4YzExMDk5NDAgMHgxND47CisJaW50ZXJydXB0cyA9IDwwIDEwIDE+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9hcm0sc3A4MDQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL2FybSxzcDgwNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNkOGVlZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9hcm0sc3A4MDQudHh0CkBAIC0wLDAgKzEsMjkgQEAKK0FSTSBzcDgwNCBEdWFsIFRpbWVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAiYXJtLHNwODA0IiAmICJhcm0scHJpbWVjZWxsIgorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiB0aGUgbGlzdCBvZiBEdWFsIFRpbWVyIGludGVycnVwdHMuIFRoaXMgaXMgdGhlCisJaW50ZXJydXB0IGZvciB0aW1lciAxIGFuZCB0aW1lciAyLiBJbiB0aGUgY2FzZSBvZiBhIHNpbmdsZSBlbnRyeSwgaXQgaXMKKwl0aGUgY29tYmluZWQgaW50ZXJydXB0IG9yIGlmICJhcm0sc3A4MDQtaGFzLWlycSIgaXMgcHJlc2VudCB0aGF0CisJc3BlY2lmaWVzIHdoaWNoIHRpbWVyIGludGVycnVwdCBpcyBjb25uZWN0ZWQuCistIHJlZzogU2hvdWxkIGNvbnRhaW4gbG9jYXRpb24gYW5kIGxlbmd0aCBmb3IgZHVhbCB0aW1lciByZWdpc3Rlci4KKy0gY2xvY2tzOiBjbG9ja3MgZHJpdmluZyB0aGUgZHVhbCB0aW1lciBoYXJkd2FyZS4gVGhpcyBsaXN0IHNob3VsZCBiZSAxIG9yIDMKKwljbG9ja3MuCVdpdGggMyBjbG9ja3MsIHRoZSBvcmRlciBpcyB0aW1lcjAgY2xvY2ssIHRpbWVyMSBjbG9jaywKKwlhcGJfcGNsay4gQSBzaW5nbGUgY2xvY2sgY2FuIGFsc28gYmUgc3BlY2lmaWVkIGlmIHRoZSBzYW1lIGNsb2NrIGlzCisJdXNlZCBmb3IgYWxsIGNsb2NrIGlucHV0cy4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gYXJtLHNwODA0LWhhcy1pcnEgPSA8Iz46IEluIHRoZSBjYXNlIG9mIG9ubHkgMSB0aW1lciBpcnEgbGluZSBjb25uZWN0ZWQsIHRoaXMKKwlzcGVjaWZpZXMgaWYgdGhlIGlycSBjb25uZWN0aW9uIGlzIGZvciB0aW1lciAxIG9yIHRpbWVyIDIuIEEgdmFsdWUgb2YgMQorCW9yIDIgc2hvdWxkIGJlIHVzZWQuCisKK0V4YW1wbGU6CisKKwl0aW1lcjA6IHRpbWVyQGZjODAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0sc3A4MDQiLCAiYXJtLHByaW1lY2VsbCI7CisJCXJlZyA9IDwweGZjODAwMDAwIDB4MTAwMD47CisJCWludGVycnVwdHMgPSA8MCAwIDQ+LCA8MCAxIDQ+OworCQljbG9ja3MgPSA8JnRpbWNsazEgJnRpbWNsazIgJnBjbGs+OworCQljbG9jay1uYW1lcyA9ICJ0aW1lcjEiLCAidGltZXIyIiwgImFwYl9wY2xrIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL2JyY20sYmNtMjgzNS1zeXN0ZW0tdGltZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL2JyY20sYmNtMjgzNS1zeXN0ZW0tdGltZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0NGJkNWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvYnJjbSxiY20yODM1LXN5c3RlbS10aW1lci50eHQKQEAgLTAsMCArMSwyMiBAQAorQkNNMjgzNSBTeXN0ZW0gVGltZXIKKworVGhlIFN5c3RlbSBUaW1lciBwZXJpcGhlcmFsIHByb3ZpZGVzIGZvdXIgMzItYml0IHRpbWVyIGNoYW5uZWxzIGFuZCBhCitzaW5nbGUgNjQtYml0IGZyZWUgcnVubmluZyBjb3VudGVyLiBFYWNoIGNoYW5uZWwgaGFzIGFuIG91dHB1dCBjb21wYXJlCityZWdpc3Rlciwgd2hpY2ggaXMgY29tcGFyZWQgYWdhaW5zdCB0aGUgMzIgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiB0aGUKK2ZyZWUgcnVubmluZyBjb3VudGVyIHZhbHVlcywgYW5kIGdlbmVyYXRlcyBhbiBpbnRlcnJ1cHQuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiYnJjbSxiY20yODM1LXN5c3RlbS10aW1lciIKKy0gcmVnIDogU3BlY2lmaWVzIGJhc2UgcGh5c2ljYWwgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgcmVnaXN0ZXJzLgorLSBpbnRlcnJ1cHRzIDogQSBsaXN0IG9mIDQgaW50ZXJydXB0IHNpbmtzOyBvbmUgcGVyIHRpbWVyIGNoYW5uZWwuCistIGNsb2NrLWZyZXF1ZW5jeSA6IFRoZSBmcmVxdWVuY3kgb2YgdGhlIGNsb2NrIHRoYXQgZHJpdmVzIHRoZSBjb3VudGVyLCBpbiBIei4KKworRXhhbXBsZToKKwordGltZXIgeworCWNvbXBhdGlibGUgPSAiYnJjbSxiY20yODM1LXN5c3RlbS10aW1lciI7CisJcmVnID0gPDB4N2UwMDMwMDAgMHgxMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDEgMD4sIDwxIDE+LCA8MSAyPiwgPDEgMz47CisJY2xvY2stZnJlcXVlbmN5ID0gPDEwMDAwMDA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9icmNtLGtvbmEtdGltZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL2JyY20sa29uYS10aW1lci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzlhZGY1NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9icmNtLGtvbmEtdGltZXIudHh0CkBAIC0wLDAgKzEsMjUgQEAKK0Jyb2FkY29tIEtvbmEgRmFtaWx5IHRpbWVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhpcyB0aW1lciBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgQnJvYWRjb20gU29DczoKKyBCQ00xMTEzMCwgQkNNMTExNDAsIEJDTTExMzUxLCBCQ00yODE0NSwgQkNNMjgxNTUKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6ICJicmNtLGtvbmEtdGltZXIiCistIERFUFJFQ0FURUQ6IGNvbXBhdGlibGUgOiAiYmNtLGtvbmEtdGltZXIiCistIHJlZyA6IFJlZ2lzdGVyIHJhbmdlIGZvciB0aGUgdGltZXIKKy0gaW50ZXJydXB0cyA6IGludGVycnVwdCBmb3IgdGhlIHRpbWVyCistIGNsb2NrczogcGhhbmRsZSArIGNsb2NrIHNwZWNpZmllciBwYWlyIG9mIHRoZSBleHRlcm5hbCBjbG9jaworLSBjbG9jay1mcmVxdWVuY3k6IGZyZXF1ZW5jeSB0aGF0IHRoZSBjbG9jayBvcGVyYXRlcworCitPbmx5IG9uZSBvZiBjbG9ja3Mgb3IgY2xvY2stZnJlcXVlbmN5IHNob3VsZCBiZSBzcGVjaWZpZWQuCisKK1JlZmVyIHRvIGNsb2Nrcy9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGdlbmVyaWMgY2xvY2sgY29uc3VtZXIgcHJvcGVydGllcy4KKworRXhhbXBsZToKKwl0aW1lckAzNTAwNjAwMCB7CisJCWNvbXBhdGlibGUgPSAiYnJjbSxrb25hLXRpbWVyIjsKKwkJcmVnID0gPDB4MzUwMDYwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwweDAgNyAweDQ+OworCQljbG9ja3MgPSA8Jmh1Yl90aW1lcl9jbGs+OworCX07CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9jYWRlbmNlLHR0Yy10aW1lci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvY2FkZW5jZSx0dGMtdGltZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlZWU2Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvY2FkZW5jZSx0dGMtdGltZXIudHh0CkBAIC0wLDAgKzEsMjEgQEAKK0NhZGVuY2UgVFRDIC0gVHJpcGxlIFRpbWVyIENvdW50ZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAiY2Rucyx0dGMiLgorLSByZWcgOiBTcGVjaWZpZXMgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSByZWdpc3RlcnMuCistIGludGVycnVwdHMgOiBBIGxpc3Qgb2YgMyBpbnRlcnJ1cHRzOyBvbmUgcGVyIHRpbWVyIGNoYW5uZWwuCistIGNsb2NrczogcGhhbmRsZSB0byB0aGUgc291cmNlIGNsb2NrCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHRpbWVyLXdpZHRoOiBCaXQgd2lkdGggb2YgdGhlIHRpbWVyLCBuZWNlc3NhcnkgaWYgbm90IDE2LgorCitFeGFtcGxlOgorCit0dGMwOiB0dGMwQGY4MDAxMDAwIHsKKwlpbnRlcnJ1cHQtcGFyZW50ID0gPCZpbnRjPjsKKwlpbnRlcnJ1cHRzID0gPCAwIDEwIDQgMCAxMSA0IDAgMTIgNCA+OworCWNvbXBhdGlibGUgPSAiY2Rucyx0dGMiOworCXJlZyA9IDwweEY4MDAxMDAwIDB4MTAwMD47CisJY2xvY2tzID0gPCZjcHVfY2xrIDM+OworCXRpbWVyLXdpZHRoID0gPDMyPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvY2lycnVzLGNscHM3MTF4LXRpbWVyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9jaXJydXMsY2xwczcxMXgtdGltZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkNTViNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvY2lycnVzLGNscHM3MTF4LXRpbWVyLnR4dApAQCAtMCwwICsxLDI5IEBACisqIENpcnJ1cyBMb2dpYyBDTFBTNzExWCBUaW1lciBDb3VudGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNoYWxsIGNvbnRhaW4gImNpcnJ1cyxjbHBzNzExeC10aW1lciIuCistIHJlZyAgICAgICA6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0LgorLSBpbnRlcnJ1cHRzOiBUaGUgaW50ZXJydXB0IG51bWJlciBvZiB0aGUgdGltZXIuCistIGNsb2NrcyAgICA6IHBoYW5kbGUgb2YgdGltZXIgcmVmZXJlbmNlIGNsb2NrLgorCitOb3RlOiBFYWNoIHRpbWVyIHNob3VsZCBoYXZlIGFuIGFsaWFzIGNvcnJlY3RseSBudW1iZXJlZCBpbiAiYWxpYXNlcyIgbm9kZS4KKworRXhhbXBsZToKKwlhbGlhc2VzIHsKKwkJdGltZXIwID0gJnRpbWVyMTsKKwkJdGltZXIxID0gJnRpbWVyMjsKKwl9OworCisJdGltZXIxOiB0aW1lckA4MDAwMDMwMCB7CisJCWNvbXBhdGlibGUgPSAiY2lycnVzLGVwNzMxMi10aW1lciIsICJjaXJydXMsY2xwczcxMXgtdGltZXIiOworCQlyZWcgPSA8MHg4MDAwMDMwMCAweDQ+OworCQlpbnRlcnJ1cHRzID0gPDg+OworCQljbG9ja3MgPSA8JmNsa3MgNT47CisJfTsKKworCXRpbWVyMjogdGltZXJAODAwMDAzNDAgeworCQljb21wYXRpYmxlID0gImNpcnJ1cyxlcDczMTItdGltZXIiLCAiY2lycnVzLGNscHM3MTF4LXRpbWVyIjsKKwkJcmVnID0gPDB4ODAwMDAzNDAgMHg0PjsKKwkJaW50ZXJydXB0cyA9IDw5PjsKKwkJY2xvY2tzID0gPCZjbGtzIDY+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvZGlnaWNvbG9yLXRpbWVyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9kaWdpY29sb3ItdGltZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxYjY1OWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvZGlnaWNvbG9yLXRpbWVyLnR4dApAQCAtMCwwICsxLDE4IEBACitDb25leGFudCBEaWdpY29sb3IgU29DcyBUaW1lciBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiY254dCxjeDkyNzU1LXRpbWVyIgorLSByZWcgOiBTcGVjaWZpZXMgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSAiQWdlbnQgQ29tbXVuaWNhdGlvbiIKKyAgdGltZXIgcmVnaXN0ZXJzCistIGludGVycnVwdHMgOiBDb250YWlucyA4IGludGVycnVwdHMsIG9uZSBmb3IgZWFjaCB0aW1lcgorLSBjbG9ja3M6IHBoYW5kbGUgdG8gdGhlIG1haW4gY2xvY2sKKworRXhhbXBsZToKKworCXRpbWVyQGYwMDAwZmMwIHsKKwkJY29tcGF0aWJsZSA9ICJjbnh0LGN4OTI3NTUtdGltZXIiOworCQlyZWcgPSA8MHhmMDAwMGZjMCAweDQwPjsKKwkJaW50ZXJydXB0cyA9IDwxOT4sIDwzMT4sIDwzND4sIDwzNT4sIDw1Mj4sIDw1Mz4sIDw1ND4sIDw1NT47CisJCWNsb2NrcyA9IDwmbWFpbl9jbGs+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvZW5lcmd5bWljcm8sZWZtMzItdGltZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL2VuZXJneW1pY3JvLGVmbTMyLXRpbWVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTAyYzExCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL2VuZXJneW1pY3JvLGVmbTMyLXRpbWVyLnR4dApAQCAtMCwwICsxLDIzIEBACisqIEVGTTMyIHRpbWVyIGhhcmR3YXJlCisKK1RoZSBlZm0zMiBHaWFudCBHZWNrbyBTb0NzIGNvbWUgd2l0aCBmb3VyIDE2IGJpdCB0aW1lcnMuIFR3byBjb3VudGVycyBjYW4gYmUKK2Nvbm5lY3RlZCB0byBmb3JtIGEgMzIgYml0IGNvdW50ZXIuIEVhY2ggdGltZXIgaGFzIHRocmVlIENvbXBhcmUvQ2FwdHVyZQorY2hhbm5lbHMgYW5kIGNhbiBiZSB1c2VkIGFzIFBXTSBvciBRdWFkcmF0dXJlIERlY29kZXIuIEF2YWlsYWJsZSBjbG9jayBzb3VyY2VzCithcmUgdGhlIGNwdSdzIEhGUEVSQ0xLICh3aXRoIGEgMTAtYml0IHByZXNjYWxlcikgb3IgYW4gZXh0ZXJuYWwgcGluLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJlbmVyZ3ltaWNybyxlZm0zMi10aW1lciIKKy0gcmVnIDogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQKKy0gY2xvY2tzIDogU2hvdWxkIGNvbnRhaW4gYSByZWZlcmVuY2UgdG8gdGhlIEhGUEVSQ0xLCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGludGVycnVwdHMgOiBSZWZlcmVuY2UgdG8gdGhlIHRpbWVyIGludGVycnVwdAorCitFeGFtcGxlOgorCit0aW1lckA0MDAxMGMwMCB7CisJY29tcGF0aWJsZSA9ICJlbmVyZ3ltaWNybyxlZm0zMi10aW1lciI7CisJcmVnID0gPDB4NDAwMTBjMDAgMHg0MDA+OworCWludGVycnVwdHMgPSA8MTQ+OworCWNsb2NrcyA9IDwmY211IGNsa19IRlBFUkNMS1RJTUVSMz47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL2ZzbCxmdG0tdGltZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL2ZzbCxmdG0tdGltZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhOGM0MDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvZnNsLGZ0bS10aW1lci50eHQKQEAgLTAsMCArMSwzMSBAQAorRnJlZXNjYWxlIEZsZXhUaW1lciBNb2R1bGUgKEZUTSkgVGltZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJmc2wsZnRtLXRpbWVyIgorLSByZWcgOiBTcGVjaWZpZXMgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSByZWdpc3RlciBzZXRzIGZvciB0aGUKKyAgY2xvY2sgZXZlbnQgZGV2aWNlIGFuZCBjbG9jayBzb3VyY2UgZGV2aWNlLgorLSBpbnRlcnJ1cHRzIDogU2hvdWxkIGJlIHRoZSBjbG9jayBldmVudCBkZXZpY2UgaW50ZXJydXB0LgorLSBjbG9ja3MgOiBUaGUgY2xvY2tzIHByb3ZpZGVkIGJ5IHRoZSBTb0MgdG8gZHJpdmUgdGhlIHRpbWVyLCBtdXN0IGNvbnRhaW4gYW4KKyAgZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCistIGNsb2NrLW5hbWVzIDogTXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgbyAiZnRtLWV2dCIKKyAgbyAiZnRtLXNyYyIKKyAgbyAiZnRtLWV2dC1jb3VudGVyLWVuIgorICBvICJmdG0tc3JjLWNvdW50ZXItZW4iCistIGJpZy1lbmRpYW46IE9uZSBib29sZWFuIHByb3BlcnR5LCB0aGUgYmlnIGVuZGlhbiBtb2RlIHdpbGwgYmUgaW4gdXNlIGlmIGl0IGlzCisgIHByZXNlbnQsIG9yIHRoZSBsaXR0bGUgZW5kaWFuIG1vZGUgd2lsbCBiZSBpbiB1c2UgZm9yIGFsbCB0aGUgZGV2aWNlIHJlZ2lzdGVycy4KKworRXhhbXBsZToKK2Z0bTogZnRtQDQwMGI4MDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxmdG0tdGltZXIiOworCXJlZyA9IDwweDQwMGI4MDAwIDB4MTAwMCAweDQwMGI5MDAwIDB4MTAwMD47CisJaW50ZXJydXB0cyA9IDwwIDQ0IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCWNsb2NrLW5hbWVzID0gImZ0bS1ldnQiLCAiZnRtLXNyYyIsCisJCSJmdG0tZXZ0LWNvdW50ZXItZW4iLCAiZnRtLXNyYy1jb3VudGVyLWVuIjsKKwljbG9ja3MgPSA8JmNsa3MgVkY2MTBfQ0xLX0ZUTTI+LAorCQk8JmNsa3MgVkY2MTBfQ0xLX0ZUTTM+LAorCQk8JmNsa3MgVkY2MTBfQ0xLX0ZUTTJfRVhUX0ZJWF9FTj4sCisJCTwmY2xrcyBWRjYxMF9DTEtfRlRNM19FWFRfRklYX0VOPjsKKwliaWctZW5kaWFuOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9mc2wsaW14Z3B0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9mc2wsaW14Z3B0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODA5YjExCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL2ZzbCxpbXhncHQudHh0CkBAIC0wLDAgKzEsMTggQEAKK0ZyZWVzY2FsZSBpLk1YIEdlbmVyYWwgUHVycG9zZSBUaW1lciAoR1BUKQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImZzbCw8c29jPi1ncHQiCistIHJlZyA6IFNwZWNpZmllcyBiYXNlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIHJlZ2lzdGVycy4KKy0gaW50ZXJydXB0cyA6IEEgbGlzdCBvZiA0IGludGVycnVwdHM7IG9uZSBwZXIgdGltZXIgY2hhbm5lbC4KKy0gY2xvY2tzIDogVGhlIGNsb2NrcyBwcm92aWRlZCBieSB0aGUgU29DIHRvIGRyaXZlIHRoZSB0aW1lci4KKworRXhhbXBsZToKKworZ3B0MTogdGltZXJAMTAwMDMwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDI3LWdwdCIsICJmc2wsaW14MS1ncHQiOworCXJlZyA9IDwweDEwMDAzMDAwIDB4MTAwMD47CisJaW50ZXJydXB0cyA9IDwyNj47CisJY2xvY2tzID0gPCZjbGtzIDQ2PiwgPCZjbGtzIDYxPjsKKwljbG9jay1uYW1lcyA9ICJpcGciLCAicGVyIjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvaW1nLHBpc3RhY2hpby1ncHRpbWVyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9pbWcscGlzdGFjaGlvLWdwdGltZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZmNlODAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvaW1nLHBpc3RhY2hpby1ncHRpbWVyLnR4dApAQCAtMCwwICsxLDI4IEBACisqIFBpc3RhY2hpbyBnZW5lcmFsLXB1cnBvc2UgdGltZXIgYmFzZWQgY2xvY2tzb3VyY2UKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGU6ICJpbWcscGlzdGFjaGlvLWdwdGltZXIiLgorIC0gcmVnOiBBZGRyZXNzIHJhbmdlIG9mIHRoZSB0aW1lciByZWdpc3RlcnMuCisgLSBpbnRlcnJ1cHRzOiBBbiBpbnRlcnJ1cHQgZm9yIGVhY2ggb2YgdGhlIGZvdXIgdGltZXJzCisgLSBjbG9ja3M6IFNob3VsZCBjb250YWluIGEgY2xvY2sgc3BlY2lmaWVyIGZvciBlYWNoIGVudHJ5IGluIGNsb2NrLW5hbWVzCisgLSBjbG9jay1uYW1lczogU2hvdWxkIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAgICAgICAgICAgICAgICJzeXMiLCBpbnRlcmZhY2UgY2xvY2sKKyAgICAgICAgICAgICAgICAic2xvdyIsIHNsb3cgY291bnRlciBjbG9jaworICAgICAgICAgICAgICAgICJmYXN0IiwgZmFzdCBjb3VudGVyIGNsb2NrCisgLSBpbWcsY3ItcGVyaXBoOiBNdXN0IGNvbnRhaW4gYSBwaGFuZGxlIHRvIHRoZSBwZXJpcGhlcmFsIGNvbnRyb2wKKwkJICBzeXNjb24gbm9kZS4KKworRXhhbXBsZToKKwl0aW1lcjogdGltZXJAMTgxMDIwMDAgeworCQljb21wYXRpYmxlID0gImltZyxwaXN0YWNoaW8tZ3B0aW1lciI7CisJCXJlZyA9IDwweDE4MTAyMDAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU0hBUkVEIDYwIElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8R0lDX1NIQVJFRCA2MSBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKKwkJCSAgICAgPEdJQ19TSEFSRUQgNjIgSVJRX1RZUEVfTEVWRUxfSElHSD4sCisJCQkgICAgIDxHSUNfU0hBUkVEIDYzIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQljbG9ja3MgPSA8JmNsa19wZXJpcGggUEVSSVBIX0NMS19DT1VOVEVSX0ZBU1Q+LAorCQkgICAgICAgICA8JmNsa19wZXJpcGggUEVSSVBIX0NMS19DT1VOVEVSX1NMT1c+LAorCQkJIDwmY3JfcGVyaXBoIFNZU19DTEtfVElNRVI+OworCQljbG9jay1uYW1lcyA9ICJmYXN0IiwgInNsb3ciLCAic3lzIjsKKwkJaW1nLGNyLXBlcmlwaCA9IDwmY3JfcGVyaXBoPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL2xzaSx6ZXZpby10aW1lci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvbHNpLHpldmlvLXRpbWVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmQwN2FkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL2xzaSx6ZXZpby10aW1lci50eHQKQEAgLTAsMCArMSwzMyBAQAorVEktTlNQSVJFIHRpbWVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAibHNpLHpldmlvLXRpbWVyIi4KKy0gcmVnIDogVGhlIHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgdGltZXIgKGFsd2F5cyBmaXJzdCkuCistIGNsb2NrczogcGhhbmRsZSB0byB0aGUgc291cmNlIGNsb2NrLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIGludGVycnVwdHMgOiBUaGUgaW50ZXJydXB0IG51bWJlciBvZiB0aGUgZmlyc3QgdGltZXIuCistIHJlZyA6IFRoZSBpbnRlcnJ1cHQgYWNrbm93bGVkZ2VtZW50IHJlZ2lzdGVycworCShhbHdheXMgYWZ0ZXIgdGltZXIgYmFzZSBhZGRyZXNzKQorCitJZiBhbnkgb2YgdGhlIG9wdGlvbmFsIHByb3BlcnRpZXMgYXJlIG5vdCBnaXZlbiwgdGhlIHRpbWVyIGlzIGFkZGVkIGFzIGEKK2Nsb2NrLXNvdXJjZSBvbmx5LgorCitFeGFtcGxlOgorCit0aW1lciB7CisJY29tcGF0aWJsZSA9ICJsc2ksemV2aW8tdGltZXIiOworCXJlZyA9IDwweDkwMEQwMDAwIDB4MTAwMD4sIDwweDkwMEEwMDIwIDB4OD47CisJaW50ZXJydXB0cyA9IDwxOT47CisJY2xvY2tzID0gPCZ0aW1lcl9jbGs+OworfTsKKworRXhhbXBsZSAobm8gY2xvY2stZXZlbnRzKToKKwordGltZXIgeworCWNvbXBhdGlibGUgPSAibHNpLHpldmlvLXRpbWVyIjsKKwlyZWcgPSA8MHg5MDBEMDAwMCAweDEwMDA+OworCWNsb2NrcyA9IDwmdGltZXJfY2xrPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvbWFydmVsbCxhcm1hZGEtMzcwLXhwLXRpbWVyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9tYXJ2ZWxsLGFybWFkYS0zNzAteHAtdGltZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5Yzc4Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvbWFydmVsbCxhcm1hZGEtMzcwLXhwLXRpbWVyLnR4dApAQCAtMCwwICsxLDQ0IEBACitNYXJ2ZWxsIEFybWFkYSAzNzAgYW5kIEFybWFkYSBYUCBUaW1lcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgIm1hcnZlbGwsYXJtYWRhLTM3MC10aW1lciIsCisJICAgICAgIm1hcnZlbGwsYXJtYWRhLTM3NS10aW1lciIsCisJICAgICAgIm1hcnZlbGwsYXJtYWRhLXhwLXRpbWVyIi4KKy0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gdGhlIGxpc3Qgb2YgR2xvYmFsIFRpbWVyIGludGVycnVwdHMgYW5kCisgIHRoZW4gbG9jYWwgdGltZXIgaW50ZXJydXB0cworLSByZWc6IFNob3VsZCBjb250YWluIGxvY2F0aW9uIGFuZCBsZW5ndGggZm9yIHRpbWVycyByZWdpc3Rlci4gRmlyc3QKKyAgcGFpciBmb3IgdGhlIEdsb2JhbCBUaW1lciByZWdpc3RlcnMsIHNlY29uZCBwYWlyIGZvciB0aGUKKyAgbG9jYWwvcHJpdmF0ZSB0aW1lcnMuCisKK0Nsb2NrcyByZXF1aXJlZCBmb3IgY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLGFybWFkYS0zNzAtdGltZXIiOgorLSBjbG9ja3MgOiBNdXN0IGNvbnRhaW4gYSBzaW5nbGUgZW50cnkgZGVzY3JpYmluZyB0aGUgY2xvY2sgaW5wdXQKKworQ2xvY2tzIHJlcXVpcmVkIGZvciBjb21wYXRpYmxlcyA9ICJtYXJ2ZWxsLGFybWFkYS14cC10aW1lciIsCisJCQkJICAibWFydmVsbCxhcm1hZGEtMzc1LXRpbWVyIjoKKy0gY2xvY2tzIDogTXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIGNsb2NrLW5hbWVzLgorLSBjbG9jay1uYW1lcyA6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgICJuYmNsayIgKEwyL2NvaGVyZW5jeSBmYWJyaWMgY2xvY2spLAorICAiZml4ZWQiIChSZWZlcmVuY2UgMjUgTUh6IGZpeGVkLWNsb2NrKS4KKworRXhhbXBsZXM6CisKKy0gQXJtYWRhIDM3MDoKKworCXRpbWVyIHsKKwkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLGFybWFkYS0zNzAtdGltZXIiOworCQlyZWcgPSA8MHgyMDMwMCAweDMwPiwgPDB4MjEwNDAgMHgzMD47CisJCWludGVycnVwdHMgPSA8Mzc+LCA8Mzg+LCA8Mzk+LCA8NDA+LCA8NT4sIDw2PjsKKwkJY2xvY2tzID0gPCZjb3JlY2xrIDI+OworCX07CisKKy0gQXJtYWRhIFhQOgorCisJdGltZXIgeworCQljb21wYXRpYmxlID0gIm1hcnZlbGwsYXJtYWRhLXhwLXRpbWVyIjsKKwkJcmVnID0gPDB4MjAzMDAgMHgzMD4sIDwweDIxMDQwIDB4MzA+OworCQlpbnRlcnJ1cHRzID0gPDM3PiwgPDM4PiwgPDM5PiwgPDQwPiwgPDU+LCA8Nj47CisJCWNsb2NrcyA9IDwmY29yZWNsayAyPiwgPCZyZWZjbGs+OworCQljbG9jay1uYW1lcyA9ICJuYmNsayIsICJmaXhlZCI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9tYXJ2ZWxsLG9yaW9uLXRpbWVyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9tYXJ2ZWxsLG9yaW9uLXRpbWVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmJiODI2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL21hcnZlbGwsb3Jpb24tdGltZXIudHh0CkBAIC0wLDAgKzEsMTcgQEAKK01hcnZlbGwgT3Jpb24gU29DIHRpbWVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNoYWxsIGJlICJtYXJ2ZWxsLG9yaW9uLXRpbWVyIgorLSByZWc6IGJhc2UgYWRkcmVzcyBvZiB0aGUgdGltZXIgcmVnaXN0ZXIgc3RhcnRpbmcgd2l0aCBUSU1FUlMgQ09OVFJPTCByZWdpc3RlcgorLSBpbnRlcnJ1cHQtcGFyZW50OiBwaGFuZGxlIG9mIHRoZSBicmlkZ2UgaW50ZXJydXB0IGNvbnRyb2xsZXIKKy0gaW50ZXJydXB0czogc2hvdWxkIGNvbnRhaW4gdGhlIGludGVycnVwdHMgZm9yIFRpbWVyMCBhbmQgVGltZXIxCistIGNsb2NrczogcGhhbmRsZSBvZiB0aW1lciByZWZlcmVuY2UgY2xvY2sgKHRjbGspCisKK0V4YW1wbGU6CisJdGltZXI6IHRpbWVyIHsKKwkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLG9yaW9uLXRpbWVyIjsKKwkJcmVnID0gPDB4MjAzMDAgMHgyMD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmJyaWRnZV9pbnRjPjsKKwkJaW50ZXJydXB0cyA9IDwxPiwgPDI+OworCQljbG9ja3MgPSA8JmNvcmVfY2xrIDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvbWVkaWF0ZWssbXRrLXRpbWVyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9tZWRpYXRlayxtdGstdGltZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MDgzYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvbWVkaWF0ZWssbXRrLXRpbWVyLnR4dApAQCAtMCwwICsxLDIzIEBACitNZWRpYXRlayBNVDY1NzcsIE1UNjU3MiBhbmQgTVQ2NTg5IFRpbWVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgc2hvdWxkIGNvbnRhaW46CisJKiAibWVkaWF0ZWssbXQ2NTgwLXRpbWVyIiBmb3IgTVQ2NTgwIGNvbXBhdGlibGUgdGltZXJzCisJKiAibWVkaWF0ZWssbXQ2NTg5LXRpbWVyIiBmb3IgTVQ2NTg5IGNvbXBhdGlibGUgdGltZXJzCisJKiAibWVkaWF0ZWssbXQ4MTI3LXRpbWVyIiBmb3IgTVQ4MTI3IGNvbXBhdGlibGUgdGltZXJzCisJKiAibWVkaWF0ZWssbXQ4MTM1LXRpbWVyIiBmb3IgTVQ4MTM1IGNvbXBhdGlibGUgdGltZXJzCisJKiAibWVkaWF0ZWssbXQ4MTczLXRpbWVyIiBmb3IgTVQ4MTczIGNvbXBhdGlibGUgdGltZXJzCisJKiAibWVkaWF0ZWssbXQ2NTc3LXRpbWVyIiBmb3IgTVQ2NTc3IGFuZCBhbGwgYWJvdmUgY29tcGF0aWJsZSB0aW1lcnMKKy0gcmVnOiBTaG91bGQgY29udGFpbiBsb2NhdGlvbiBhbmQgbGVuZ3RoIGZvciB0aW1lcnMgcmVnaXN0ZXIuCistIGNsb2NrczogQ2xvY2tzIGRyaXZpbmcgdGhlIHRpbWVyIGhhcmR3YXJlLiBUaGlzIGxpc3Qgc2hvdWxkIGluY2x1ZGUgdHdvCisJY2xvY2tzLiBUaGUgb3JkZXIgaXMgc3lzdGVtIGNsb2NrIGFuZCBhcyBzZWNvbmQgY2xvY2sgdGhlIFJUQyBjbG9jay4KKworRXhhbXBsZXM6CisKKwl0aW1lckAxMDAwODAwMCB7CisJCWNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ2NTc3LXRpbWVyIjsKKwkJcmVnID0gPDB4MTAwMDgwMDAgMHg4MD47CisJCWludGVycnVwdHMgPSA8R0lDX1NQSSAxMTMgSVJRX1RZUEVfTEVWRUxfTE9XPjsKKwkJY2xvY2tzID0gPCZzeXN0ZW1fY2xrPiwgPCZydGNfY2xrPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL21veGEsbW94YXJ0LXRpbWVyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9tb3hhLG1veGFydC10aW1lci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGEyZDUxMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9tb3hhLG1veGFydC10aW1lci50eHQKQEAgLTAsMCArMSwxNyBAQAorTU9YQSBBUlQgdGltZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogTXVzdCBiZSAibW94YSxtb3hhcnQtdGltZXIiCistIHJlZyA6IFNob3VsZCBjb250YWluIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCistIGludGVycnVwdHMgOiBTaG91bGQgY29udGFpbiB0aGUgdGltZXIgaW50ZXJydXB0IG51bWJlcgorLSBjbG9ja3MgOiBTaG91bGQgY29udGFpbiBwaGFuZGxlIGZvciB0aGUgY2xvY2sgdGhhdCBkcml2ZXMgdGhlIGNvdW50ZXIKKworRXhhbXBsZToKKworCXRpbWVyOiB0aW1lckA5ODQwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAibW94YSxtb3hhcnQtdGltZXIiOworCQlyZWcgPSA8MHg5ODQwMDAwMCAweDQyPjsKKwkJaW50ZXJydXB0cyA9IDwxOSAxPjsKKwkJY2xvY2tzID0gPCZjb3JlY2xrPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL252aWRpYSx0ZWdyYTIwLXRpbWVyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9udmlkaWEsdGVncmEyMC10aW1lci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE4NjRiZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9udmlkaWEsdGVncmEyMC10aW1lci50eHQKQEAgLTAsMCArMSwyNCBAQAorTlZJRElBIFRlZ3JhMjAgdGltZXIKKworVGhlIFRlZ3JhMjAgdGltZXIgcHJvdmlkZXMgZm91ciAyOS1iaXQgdGltZXIgY2hhbm5lbHMgYW5kIGEgc2luZ2xlIDMyLWJpdCBmcmVlCitydW5uaW5nIGNvdW50ZXIuIFRoZSBmaXJzdCB0d28gY2hhbm5lbHMgbWF5IGFsc28gdHJpZ2dlciBhIHdhdGNoZG9nIHJlc2V0LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgIm52aWRpYSx0ZWdyYTIwLXRpbWVyIi4KKy0gcmVnIDogU3BlY2lmaWVzIGJhc2UgcGh5c2ljYWwgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgcmVnaXN0ZXJzLgorLSBpbnRlcnJ1cHRzIDogQSBsaXN0IG9mIDQgaW50ZXJydXB0czsgb25lIHBlciB0aW1lciBjaGFubmVsLgorLSBjbG9ja3MgOiBNdXN0IGNvbnRhaW4gb25lIGVudHJ5LCBmb3IgdGhlIG1vZHVsZSBjbG9jay4KKyAgU2VlIC4uL2Nsb2Nrcy9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCisKK0V4YW1wbGU6CisKK3RpbWVyIHsKKwljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTIwLXRpbWVyIjsKKwlyZWcgPSA8MHg2MDAwNTAwMCAweDYwPjsKKwlpbnRlcnJ1cHRzID0gPDAgMCAweDA0CisJCQkwIDEgMHgwNAorCQkJMCA0MSAweDA0CisJCQkwIDQyIDB4MDQ+OworCWNsb2NrcyA9IDwmdGVncmFfY2FyIDEzMj47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL252aWRpYSx0ZWdyYTMwLXRpbWVyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9udmlkaWEsdGVncmEzMC10aW1lci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc2MWY1MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9udmlkaWEsdGVncmEzMC10aW1lci50eHQKQEAgLTAsMCArMSwyOCBAQAorTlZJRElBIFRlZ3JhMzAgdGltZXIKKworVGhlIFRlZ3JhMzAgdGltZXIgcHJvdmlkZXMgdGVuIDI5LWJpdCB0aW1lciBjaGFubmVscywgYSBzaW5nbGUgMzItYml0IGZyZWUKK3J1bm5pbmcgY291bnRlciwgYW5kIDUgd2F0Y2hkb2cgbW9kdWxlcy4gVGhlIGZpcnN0IHR3byBjaGFubmVscyBtYXkgYWxzbwordHJpZ2dlciBhIGxlZ2FjeSB3YXRjaGRvZyByZXNldC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogRm9yIFRlZ3JhMzAsIG11c3QgY29udGFpbiAibnZpZGlhLHRlZ3JhMzAtdGltZXIiLiAgT3RoZXJ3aXNlLAorICBtdXN0IGNvbnRhaW4gJyJudmlkaWEsPGNoaXA+LXRpbWVyIiwgIm52aWRpYSx0ZWdyYTMwLXRpbWVyIicgd2hlcmUKKyAgPGNoaXA+IGlzIHRlZ3JhMTI0IG9yIHRlZ3JhMTMyLgorLSByZWcgOiBTcGVjaWZpZXMgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSByZWdpc3RlcnMuCistIGludGVycnVwdHMgOiBBIGxpc3Qgb2YgNiBpbnRlcnJ1cHRzOyBvbmUgcGVyIGVhY2ggb2YgdGltZXIgY2hhbm5lbHMgMQorICAgIHRocm91Z2ggNSwgYW5kIG9uZSBmb3IgdGhlIHNoYXJlZCBpbnRlcnJ1cHQgZm9yIHRoZSByZW1haW5pbmcgY2hhbm5lbHMuCistIGNsb2NrcyA6IE11c3QgY29udGFpbiBvbmUgZW50cnksIGZvciB0aGUgbW9kdWxlIGNsb2NrLgorICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKwordGltZXIgeworCWNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMzAtdGltZXIiLCAibnZpZGlhLHRlZ3JhMjAtdGltZXIiOworCXJlZyA9IDwweDYwMDA1MDAwIDB4NDAwPjsKKwlpbnRlcnJ1cHRzID0gPDAgMCAweDA0CisJCSAgICAgIDAgMSAweDA0CisJCSAgICAgIDAgNDEgMHgwNAorCQkgICAgICAwIDQyIDB4MDQKKwkJICAgICAgMCAxMjEgMHgwNAorCQkgICAgICAwIDEyMiAweDA0PjsKKwljbG9ja3MgPSA8JnRlZ3JhX2NhciAyMTQ+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9ueHAsbHBjMzIyMC10aW1lci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvbnhwLGxwYzMyMjAtdGltZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxYjA1YTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvbnhwLGxwYzMyMjAtdGltZXIudHh0CkBAIC0wLDAgKzEsMjYgQEAKKyogTlhQIExQQzMyMjAgdGltZXIKKworVGhlIE5YUCBMUEMzMjIwIHRpbWVyIGlzIHVzZWQgb24gYSB3aWRlIHJhbmdlIG9mIE5YUCBTb0NzLiBUaGlzCitpbmNsdWRlcyBMUEMzMnh4LCBMUEMxNzh4LCBMUEMxOHh4IGFuZCBMUEM0M3h4IHBhcnRzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOgorCVNob3VsZCBiZSAibnhwLGxwYzMyMjAtdGltZXIiLgorLSByZWc6CisJQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQuCistIGludGVycnVwdHM6CisJUmVmZXJlbmNlIHRvIHRoZSB0aW1lciBpbnRlcnJ1cHQKKy0gY2xvY2tzOgorCVNob3VsZCBjb250YWluIGEgcmVmZXJlbmNlIHRvIHRpbWVyIGNsb2NrLgorLSBjbG9jay1uYW1lczoKKwlTaG91bGQgY29udGFpbiAidGltZXJjbGsiLgorCitFeGFtcGxlOgorCit0aW1lcjE6IHRpbWVyQDQwMDg1MDAwIHsKKwljb21wYXRpYmxlID0gIm54cCxscGMzMjIwLXRpbWVyIjsKKwlyZWcgPSA8MHg0MDA4NTAwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8MTM+OworCWNsb2NrcyA9IDwmY2N1MSBDTEtfQ1BVX1RJTUVSMT47CisJY2xvY2stbmFtZXMgPSAidGltZXJjbGsiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9yZW5lc2FzLDE2Yml0LXRpbWVyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9yZW5lc2FzLDE2Yml0LXRpbWVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODc5MjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL3JlbmVzYXMsMTZiaXQtdGltZXIudHh0CkBAIC0wLDAgKzEsMjUgQEAKKyogUmVuZXNhcyBIOC8zMDAgMTZiaXQgdGltZXIKKworVGhlIDE2Yml0IHRpbWVyIGlzIGEgMTZiaXQgdGltZXIvY291bnRlciB3aXRoIGNvbmZpZ3VyYWJsZSBjbG9jayBpbnB1dHMgYW5kCitwcm9ncmFtbWFibGUgY29tcGFyZSBtYXRjaC4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGU6IG11c3QgY29udGFpbiAicmVuZXNhcywxNmJpdC10aW1lciIKKyAgLSByZWc6IGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlcnMgYmxvY2sgZm9yIHRoZSB0aW1lciBtb2R1bGUuCisgIC0gaW50ZXJydXB0czogaW50ZXJydXB0LXNwZWNpZmllciBmb3IgdGhlIHRpbWVyLCBJTUlBCisgIC0gY2xvY2tzOiBhIGxpc3Qgb2YgcGhhbmRsZSwgb25lIGZvciBlYWNoIGVudHJ5IGluIGNsb2NrLW5hbWVzLgorICAtIGNsb2NrLW5hbWVzOiBtdXN0IGNvbnRhaW4gInBlcmlwaGVyYWxfY2xrIiBmb3IgdGhlIGZ1bmN0aW9uYWwgY2xvY2suCisgIC0gcmVuZXNhcyxjaGFubmVsOiB0aW1lciBjaGFubmVsIG51bWJlci4KKworRXhhbXBsZToKKworCXRpbWVyMTY6IHRpbWVyQGZmZmY2OCB7CisJCWNvbXBhdGlibGUgPSAicmVuZWFzLDE2Yml0LXRpbWVyIjsKKwkJcmVnID0gPDB4ZmZmZjY4IDg+LCA8MHhmZmZmNjAgOD47CisJCWludGVycnVwdHMgPSA8MjQ+OworCQlyZW5lc2FzLGNoYW5uZWwgPSA8MD47CisJCWNsb2NrcyA9IDwmcGNsaz47CisJCWNsb2NrLW5hbWVzID0gInBlcmlwaGVyYWxfY2xrIjsKKwl9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvcmVuZXNhcyw4Yml0LXRpbWVyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9yZW5lc2FzLDhiaXQtdGltZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkY2EzNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvcmVuZXNhcyw4Yml0LXRpbWVyLnR4dApAQCAtMCwwICsxLDI1IEBACisqIFJlbmVzYXMgSDgvMzAwIDhiaXQgdGltZXIKKworVGhlIDhiaXQgdGltZXIgaXMgYSA4Yml0IHRpbWVyL2NvdW50ZXIgd2l0aCBjb25maWd1cmFibGUgY2xvY2sgaW5wdXRzIGFuZAorcHJvZ3JhbW1hYmxlIGNvbXBhcmUgbWF0Y2guCisKK1RoaXMgaW1wbGVtZW50IG9ubHkgc3VwcG9ydGVkIGNhc2NhZGUgbW9kZS4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGU6IG11c3QgY29udGFpbiAicmVuZXNhcyw4Yml0LXRpbWVyIgorICAtIHJlZzogYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVycyBibG9jayBmb3IgdGhlIHRpbWVyIG1vZHVsZS4KKyAgLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQtc3BlY2lmaWVyIGZvciB0aGUgdGltZXIsIENNSUEgYW5kIFRPVkkKKyAgLSBjbG9ja3M6IGEgbGlzdCBvZiBwaGFuZGxlLCBvbmUgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCisgIC0gY2xvY2stbmFtZXM6IG11c3QgY29udGFpbiAiZmNrIiBmb3IgdGhlIGZ1bmN0aW9uYWwgY2xvY2suCisKK0V4YW1wbGU6CisKKwl0aW1lcjhfMDogdGltZXJAZmZmZjgwIHsKKwkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLDhiaXQtdGltZXIiOworCQlyZWcgPSA8MHhmZmZmODAgMTA+OworCQlpbnRlcnJ1cHRzID0gPDM2PjsKKwkJY2xvY2tzID0gPCZmY2xrPjsKKwkJY2xvY2stbmFtZXMgPSAiZmNrIjsKKwl9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvcmVuZXNhcyxjbXQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL3JlbmVzYXMsY210LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTA1YzFiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL3JlbmVzYXMsY210LnR4dApAQCAtMCwwICsxLDc5IEBACisqIFJlbmVzYXMgUi1DYXIgQ29tcGFyZSBNYXRjaCBUaW1lciAoQ01UKQorCitUaGUgQ01UIGlzIGEgbXVsdGktY2hhbm5lbCAxNi8zMi80OC1iaXQgdGltZXIvY291bnRlciB3aXRoIGNvbmZpZ3VyYWJsZSBjbG9jaworaW5wdXRzIGFuZCBwcm9ncmFtbWFibGUgY29tcGFyZSBtYXRjaC4KKworQ2hhbm5lbHMgc2hhcmUgaGFyZHdhcmUgcmVzb3VyY2VzIGJ1dCB0aGVpciBjb3VudGVyIGFuZCBjb21wYXJlIG1hdGNoIHZhbHVlCithcmUgaW5kZXBlbmRlbnQuIEEgcGFydGljdWxhciBDTVQgaW5zdGFuY2UgY2FuIGltcGxlbWVudCBvbmx5IGEgc3Vic2V0IG9mIHRoZQorY2hhbm5lbHMgc3VwcG9ydGVkIGJ5IHRoZSBDTVQgbW9kZWwuIENoYW5uZWwgaW5kaWNlcyByZXByZXNlbnQgdGhlIGhhcmR3YXJlCitwb3NpdGlvbiBvZiB0aGUgY2hhbm5lbCBpbiB0aGUgQ01UIGFuZCBkb24ndCBtYXRjaCB0aGUgY2hhbm5lbCBudW1iZXJzIGluIHRoZQorZGF0YXNoZWV0cy4KKworUmVxdWlyZWQgUHJvcGVydGllczoKKworICAtIGNvbXBhdGlibGU6IG11c3QgY29udGFpbiBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nOgorICAgIC0gInJlbmVzYXMsY210LTMyLXI4YTc3NDAiIGZvciB0aGUgcjhhNzc0MCAzMi1iaXQgQ01UCisJCShDTVQwKQorICAgIC0gInJlbmVzYXMsY210LTMyLXNoNzM3MiIgZm9yIHRoZSBzaDczNzIgMzItYml0IENNVAorCQkoQ01UMCkKKyAgICAtICJyZW5lc2FzLGNtdC0zMi1zaDczYTAiIGZvciB0aGUgc2g3M2EwIDMyLWJpdCBDTVQKKwkJKENNVDApCisgICAgLSAicmVuZXNhcyxjbXQtMzIiIGZvciBhbGwgMzItYml0IENNVCB3aXRob3V0IGZhc3QgY2xvY2sgc3VwcG9ydAorCQkoQ01UMCBvbiBzaDczNzIsIHNoNzNhMCBhbmQgcjhhNzc0MCkKKwkJVGhpcyBpcyBhIGZhbGxiYWNrIGZvciB0aGUgYWJvdmUgcmVuZXNhcyxjbXQtMzItKiBlbnRyaWVzLgorCisgICAgLSAicmVuZXNhcyxjbXQtMzItZmFzdC1yOGE3NzQwIiBmb3IgdGhlIHI4YTc3NDAgMzItYml0IENNVCB3aXRoIGZhc3QKKwkJY2xvY2sgc3VwcG9ydCAoQ01UWzIzNF0pCisgICAgLSAicmVuZXNhcyxjbXQtMzItZmFzdC1zaDczNzIiIGZvciB0aGUgc2g3MzcyIDMyLWJpdCBDTVQgd2l0aCBmYXN0CisJCWNsb2NrIHN1cHBvcnQgKENNVFsyMzRdKQorICAgIC0gInJlbmVzYXMsY210LTMyLWZhc3Qtc2g3M2EwIiBmb3IgdGhlIHNoNzNBMCAzMi1iaXQgQ01UIHdpdGggZmFzdAorCQljbG9jayBzdXBwb3J0IChDTVRbMjM0XSkKKyAgICAtICJyZW5lc2FzLGNtdC0zMi1mYXN0IiBmb3IgYWxsIDMyLWJpdCBDTVQgd2l0aCBmYXN0IGNsb2NrIHN1cHBvcnQKKwkJKENNVFsyMzRdIG9uIHNoNzM3Miwgc2g3M2EwIGFuZCByOGE3NzQwKQorCQlUaGlzIGlzIGEgZmFsbGJhY2sgZm9yIHRoZSBhYm92ZSByZW5lc2FzLGNtdC0zMi1mYXN0LSogZW50cmllcy4KKworICAgIC0gInJlbmVzYXMsY210LTQ4LXNoNzM3MiIgZm9yIHRoZSBzaDczNzIgNDgtYml0IENNVAorCQkoQ01UMSkKKyAgICAtICJyZW5lc2FzLGNtdC00OC1zaDczYTAiIGZvciB0aGUgc2g3M0EwIDQ4LWJpdCBDTVQKKwkJKENNVDEpCisgICAgLSAicmVuZXNhcyxjbXQtNDgtcjhhNzc0MCIgZm9yIHRoZSByOGE3NzQwIDQ4LWJpdCBDTVQKKwkJKENNVDEpCisgICAgLSAicmVuZXNhcyxjbXQtNDgiIGZvciBhbGwgbm9uLXNlY29uZCBnZW5lcmF0aW9uIDQ4LWJpdCBDTVQKKwkJKENNVDEgb24gc2g3MzcyLCBzaDczYTAgYW5kIHI4YTc3NDApCisJCVRoaXMgaXMgYSBmYWxsYmFjayBmb3IgdGhlIGFib3ZlIHJlbmVzYXMsY210LTQ4LSogZW50cmllcy4KKworICAgIC0gInJlbmVzYXMsY210LTQ4LXI4YTczYTQiIGZvciB0aGUgcjhhNzNhNCA0OC1iaXQgQ01UCisJCShDTVRbMDFdKQorICAgIC0gInJlbmVzYXMsY210LTQ4LXI4YTc3OTAiIGZvciB0aGUgcjhhNzc5MCA0OC1iaXQgQ01UCisJCShDTVRbMDFdKQorICAgIC0gInJlbmVzYXMsY210LTQ4LXI4YTc3OTEiIGZvciB0aGUgcjhhNzc5MSA0OC1iaXQgQ01UCisJCShDTVRbMDFdKQorICAgIC0gInJlbmVzYXMsY210LTQ4LWdlbjIiIGZvciBhbGwgc2Vjb25kIGdlbmVyYXRpb24gNDgtYml0IENNVAorCQkoQ01UWzAxXSBvbiByOGE3M2E0LCByOGE3NzkwIGFuZCByOGE3NzkxKQorCQlUaGlzIGlzIGEgZmFsbGJhY2sgZm9yIHRoZSByZW5lc2FzLGNtdC00OC1yOGE3M2E0LAorCQlyZW5lc2FzLGNtdC00OC1yOGE3NzkwIGFuZCByZW5lc2FzLGNtdC00OC1yOGE3NzkxIGVudHJpZXMuCisKKyAgLSByZWc6IGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlcnMgYmxvY2sgZm9yIHRoZSB0aW1lciBtb2R1bGUuCisgIC0gaW50ZXJydXB0czogaW50ZXJydXB0LXNwZWNpZmllciBmb3IgdGhlIHRpbWVyLCBvbmUgcGVyIGNoYW5uZWwuCisgIC0gY2xvY2tzOiBhIGxpc3Qgb2YgcGhhbmRsZSArIGNsb2NrLXNwZWNpZmllciBwYWlycywgb25lIGZvciBlYWNoIGVudHJ5CisgICAgaW4gY2xvY2stbmFtZXMuCisgIC0gY2xvY2stbmFtZXM6IG11c3QgY29udGFpbiAiZmNrIiBmb3IgdGhlIGZ1bmN0aW9uYWwgY2xvY2suCisKKyAgLSByZW5lc2FzLGNoYW5uZWxzLW1hc2s6IGJpdG1hc2sgb2YgdGhlIGF2YWlsYWJsZSBjaGFubmVscy4KKworCitFeGFtcGxlOiBSOEE3NzkwIChSLUNhciBIMikgQ01UMCBub2RlCisKKwlDTVQwIG9uIFI4QTc3OTAgaW1wbGVtZW50cyBoYXJkd2FyZSBjaGFubmVscyA1IGFuZCA2IG9ubHkgYW5kIG5hbWVzCisJdGhlbSBjaGFubmVscyAwIGFuZCAxIGluIHRoZSBkb2N1bWVudGF0aW9uLgorCisJY210MDogdGltZXJAZmZjYTAwMDAgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMsY210LTQ4LXI4YTc3OTAiLCAicmVuZXNhcyxjbXQtNDgtZ2VuMiI7CisJCXJlZyA9IDwwIDB4ZmZjYTAwMDAgMCAweDEwMDQ+OworCQlpbnRlcnJ1cHRzID0gPDAgMTQyIElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8MCAxNDIgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWNsb2NrcyA9IDwmbXN0cDFfY2xrcyBSOEE3NzkwX0NMS19DTVQwPjsKKwkJY2xvY2stbmFtZXMgPSAiZmNrIjsKKworCQlyZW5lc2FzLGNoYW5uZWxzLW1hc2sgPSA8MHg2MD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9yZW5lc2FzLG10dTIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL3JlbmVzYXMsbXR1Mi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEwYTM0ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9yZW5lc2FzLG10dTIudHh0CkBAIC0wLDAgKzEsNDIgQEAKKyogUmVuZXNhcyBNdWx0aS1GdW5jdGlvbiBUaW1lciBQdWxzZSBVbml0IDIgKE1UVTIpCisKK1RoZSBNVFUyIGlzIGEgbXVsdGktcHVycG9zZSwgbXVsdGktY2hhbm5lbCB0aW1lci9jb3VudGVyIHdpdGggY29uZmlndXJhYmxlCitjbG9jayBpbnB1dHMgYW5kIHByb2dyYW1tYWJsZSBjb21wYXJlIG1hdGNoLgorCitDaGFubmVscyBzaGFyZSBoYXJkd2FyZSByZXNvdXJjZXMgYnV0IHRoZWlyIGNvdW50ZXIgYW5kIGNvbXBhcmUgbWF0Y2ggdmFsdWUKK2FyZSBpbmRlcGVuZGVudC4gVGhlIE1UVTIgaGFyZHdhcmUgc3VwcG9ydHMgZml2ZSBjaGFubmVscyBpbmRleGVkIGZyb20gMCB0byA0LgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZTogbXVzdCBiZSBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nOgorICAgIC0gInJlbmVzYXMsbXR1Mi1yN3M3MjEwMCIgZm9yIHRoZSByN3M3MjEwMCBNVFUyCisgICAgLSAicmVuZXNhcyxtdHUyIiBmb3IgYW55IE1UVTIKKyAgICAgIFRoaXMgaXMgYSBmYWxsYmFjayBmb3IgdGhlIGFib3ZlIHJlbmVzYXMsbXR1Mi0qIGVudHJpZXMKKworICAtIHJlZzogYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVycyBibG9jayBmb3IgdGhlIHRpbWVyIG1vZHVsZS4KKworICAtIGludGVycnVwdHM6IGludGVycnVwdCBzcGVjaWZpZXJzIGZvciB0aGUgdGltZXIsIG9uZSBmb3IgZWFjaCBlbnRyeSBpbgorICAgIGludGVycnVwdC1uYW1lcy4KKyAgLSBpbnRlcnJ1cHQtbmFtZXM6IG11c3QgY29udGFpbiBvbmUgZW50cnkgbmFtZWQgInRnaT9hIiBmb3IgZWFjaCBlbmFibGVkCisgICAgY2hhbm5lbCwgd2hlcmUgIj8iIGlzIHRoZSBjaGFubmVsIGluZGV4IGV4cHJlc3NlZCBhcyBvbmUgZGlnaXQgZnJvbSAiMCIgdG8KKyAgICAiNCIuCisKKyAgLSBjbG9ja3M6IGEgbGlzdCBvZiBwaGFuZGxlICsgY2xvY2stc3BlY2lmaWVyIHBhaXJzLCBvbmUgZm9yIGVhY2ggZW50cnkKKyAgICBpbiBjbG9jay1uYW1lcy4KKyAgLSBjbG9jay1uYW1lczogbXVzdCBjb250YWluICJmY2siIGZvciB0aGUgZnVuY3Rpb25hbCBjbG9jay4KKworCitFeGFtcGxlOiBSN1M3MjEwMCAoUlovQTFIKSBNVFUyIG5vZGUKKworCW10dTI6IHRpbWVyQGZjZmYwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLG10dTItcjdzNzIxMDAiLCAicmVuZXNhcyxtdHUyIjsKKwkJcmVnID0gPDB4ZmNmZjAwMDAgMHg0MDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMTM5IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8MCAxNDYgSVJRX1RZUEVfTEVWRUxfSElHSD4sCisJCQkgICAgIDwwIDE1MCBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKKwkJCSAgICAgPDAgMTU0IElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8MCAxNTkgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWludGVycnVwdC1uYW1lcyA9ICJ0Z2kwYSIsICJ0Z2kxYSIsICJ0Z2kyYSIsICJ0Z2kzYSIsICJ0Z2k0YSI7CisJCWNsb2NrcyA9IDwmbXN0cDNfY2xrcyBSN1M3MjEwMF9DTEtfTVRVMj47CisJCWNsb2NrLW5hbWVzID0gImZjayI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9yZW5lc2FzLHRtdS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvcmVuZXNhcyx0bXUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkNWYyMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvcmVuZXNhcyx0bXUudHh0CkBAIC0wLDAgKzEsNDQgQEAKKyogUmVuZXNhcyBSLU1vYmlsZS9SLUNhciBUaW1lciBVbml0IChUTVUpCisKK1RoZSBUTVUgaXMgYSAzMi1iaXQgdGltZXIvY291bnRlciB3aXRoIGNvbmZpZ3VyYWJsZSBjbG9jayBpbnB1dHMgYW5kCitwcm9ncmFtbWFibGUgY29tcGFyZSBtYXRjaC4KKworQ2hhbm5lbHMgc2hhcmUgaGFyZHdhcmUgcmVzb3VyY2VzIGJ1dCB0aGVpciBjb3VudGVyIGFuZCBjb21wYXJlIG1hdGNoIHZhbHVlCithcmUgaW5kZXBlbmRlbnQuIFRoZSBUTVUgaGFyZHdhcmUgc3VwcG9ydHMgdXAgdG8gdGhyZWUgY2hhbm5lbHMuCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CisKKyAgLSBjb21wYXRpYmxlOiBtdXN0IGNvbnRhaW4gb25lIG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZzoKKyAgICAtICJyZW5lc2FzLHRtdS1yOGE3NzQwIiBmb3IgdGhlIHI4YTc3NDAgVE1VCisgICAgLSAicmVuZXNhcyx0bXUtcjhhNzc3OCIgZm9yIHRoZSByOGE3Nzc4IFRNVQorICAgIC0gInJlbmVzYXMsdG11LXI4YTc3NzkiIGZvciB0aGUgcjhhNzc3OSBUTVUKKyAgICAtICJyZW5lc2FzLHRtdSIgZm9yIGFueSBUTVUuCisgICAgICBUaGlzIGlzIGEgZmFsbGJhY2sgZm9yIHRoZSBhYm92ZSByZW5lc2FzLHRtdS0qIGVudHJpZXMKKworICAtIHJlZzogYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVycyBibG9jayBmb3IgdGhlIHRpbWVyIG1vZHVsZS4KKworICAtIGludGVycnVwdHM6IGludGVycnVwdC1zcGVjaWZpZXIgZm9yIHRoZSB0aW1lciwgb25lIHBlciBjaGFubmVsLgorCisgIC0gY2xvY2tzOiBhIGxpc3Qgb2YgcGhhbmRsZSArIGNsb2NrLXNwZWNpZmllciBwYWlycywgb25lIGZvciBlYWNoIGVudHJ5CisgICAgaW4gY2xvY2stbmFtZXMuCisgIC0gY2xvY2stbmFtZXM6IG11c3QgY29udGFpbiAiZmNrIiBmb3IgdGhlIGZ1bmN0aW9uYWwgY2xvY2suCisKK09wdGlvbmFsIFByb3BlcnRpZXM6CisKKyAgLSAjcmVuZXNhcyxjaGFubmVsczogbnVtYmVyIG9mIGNoYW5uZWxzIGltcGxlbWVudGVkIGJ5IHRoZSB0aW1lciwgbXVzdCBiZSAyCisgICAgb3IgMyAoaWYgbm90IHNwZWNpZmllZCB0aGUgdmFsdWUgZGVmYXVsdHMgdG8gMykuCisKKworRXhhbXBsZTogUjhBNzc3OSAoUi1DYXIgSDEpIFRNVTAgbm9kZQorCisJdG11MDogdGltZXJAZmZkODAwMDAgeworCQljb21wYXRpYmxlID0gInJlbmVzYXMsdG11LXI4YTc3NzkiLCAicmVuZXNhcyx0bXUiOworCQlyZWcgPSA8MHhmZmQ4MDAwMCAweDMwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDMyIElSUV9UWVBFX0xFVkVMX0hJR0g+LAorCQkJICAgICA8MCAzMyBJUlFfVFlQRV9MRVZFTF9ISUdIPiwKKwkJCSAgICAgPDAgMzQgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWNsb2NrcyA9IDwmbXN0cDBfY2xrcyBSOEE3Nzc5X0NMS19UTVUwPjsKKwkJY2xvY2stbmFtZXMgPSAiZmNrIjsKKworCQkjcmVuZXNhcyxjaGFubmVscyA9IDwzPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL3JlbmVzYXMsdHB1LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9yZW5lc2FzLHRwdS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhiMjU4OQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9yZW5lc2FzLHRwdS50eHQKQEAgLTAsMCArMSwyMSBAQAorKiBSZW5lc2FzIEg4LzMwMCBUaW1lciBQbHVzZSBVbml0CisKK1RoZSBUUFUgaXMgYSAxNmJpdCB0aW1lci9jb3VudGVyIHdpdGggY29uZmlndXJhYmxlIGNsb2NrIGlucHV0cyBhbmQKK3Byb2dyYW1tYWJsZSBjb21wYXJlIG1hdGNoLgorVGhpcyBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0IG9ubHkgY2FzY2FkZSBtb2RlLgorCitSZXF1aXJlZCBQcm9wZXJ0aWVzOgorCisgIC0gY29tcGF0aWJsZTogbXVzdCBjb250YWluICJyZW5lc2FzLHRwdSIKKyAgLSByZWc6IGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlcnMgYmxvY2sgaW4gMiBjaGFubmVsLgorICAtIGNsb2NrczogYSBsaXN0IG9mIHBoYW5kbGUsIG9uZSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKyAgLSBjbG9jay1uYW1lczogbXVzdCBjb250YWluICJwZXJpcGhlcmFsX2NsayIgZm9yIHRoZSBmdW5jdGlvbmFsIGNsb2NrLgorCisKK0V4YW1wbGU6CisJdHB1OiB0cHVAZmZmZmUwIHsKKwkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLHRwdSI7CisJCXJlZyA9IDwweGZmZmZlMCAxNj4sIDwweGZmZmZmMCAxMj47CisJCWNsb2NrcyA9IDwmcGNsaz47CisJCWNsb2NrLW5hbWVzID0gInBlcmlwaGVyYWxfY2xrIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL3JvY2tjaGlwLHJrMzI4OC10aW1lci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvcm9ja2NoaXAscmszMjg4LXRpbWVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2YwYjAwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL3JvY2tjaGlwLHJrMzI4OC10aW1lci50eHQKQEAgLTAsMCArMSwxOCBAQAorUm9ja2NoaXAgcmszMjg4IHRpbWVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNoYWxsIGJlICJyb2NrY2hpcCxyazMyODgtdGltZXIiCistIHJlZzogYmFzZSBhZGRyZXNzIG9mIHRoZSB0aW1lciByZWdpc3RlciBzdGFydGluZyB3aXRoIFRJTUVSUyBDT05UUk9MIHJlZ2lzdGVyCistIGludGVycnVwdHM6IHNob3VsZCBjb250YWluIHRoZSBpbnRlcnJ1cHRzIGZvciBUaW1lcjAKKy0gY2xvY2tzIDogbXVzdCBjb250YWluIGFuIGVudHJ5IGZvciBlYWNoIGVudHJ5IGluIGNsb2NrLW5hbWVzCistIGNsb2NrLW5hbWVzIDogbXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZW50cmllczoKKyAgInRpbWVyIiwgInBjbGsiCisKK0V4YW1wbGU6CisJdGltZXI6IHRpbWVyQGZmODEwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJyb2NrY2hpcCxyazMyODgtdGltZXIiOworCQlyZWcgPSA8MHhmZjgxMDAwMCAweDIwPjsKKwkJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDcyIElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQljbG9ja3MgPSA8JnhpbjI0bT4sIDwmY3J1IFBDTEtfVElNRVI+OworCQljbG9jay1uYW1lcyA9ICJ0aW1lciIsICJwY2xrIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL3NhbXN1bmcsZXh5bm9zNDIxMC1tY3QudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL3NhbXN1bmcsZXh5bm9zNDIxMC1tY3QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2N2Q1ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvc2Ftc3VuZyxleHlub3M0MjEwLW1jdC50eHQKQEAgLTAsMCArMSw4OCBAQAorU2Ftc3VuZydzIE11bHRpIENvcmUgVGltZXIgKE1DVCkKKworVGhlIFNhbXN1bmcncyBNdWx0aSBDb3JlIFRpbWVyIChNQ1QpIG1vZHVsZSBpbmNsdWRlcyB0d28gbWFpbiBibG9ja3MsIHRoZQorZ2xvYmFsIHRpbWVyIGFuZCBDUFUgbG9jYWwgdGltZXJzLiBUaGUgZ2xvYmFsIHRpbWVyIGlzIGEgNjQtYml0IGZyZWUgcnVubmluZwordXAtY291bnRlciBhbmQgY2FuIGdlbmVyYXRlIDQgaW50ZXJydXB0cyB3aGVuIHRoZSBjb3VudGVyIHJlYWNoZXMgb25lIG9mIHRoZQorZm91ciBwcmVzZXQgY291bnRlciB2YWx1ZXMuIFRoZSBDUFUgbG9jYWwgdGltZXJzIGFyZSAzMi1iaXQgZnJlZSBydW5uaW5nCitkb3duLWNvdW50ZXJzIGFuZCBnZW5lcmF0ZSBhbiBpbnRlcnJ1cHQgd2hlbiB0aGUgY291bnRlciBleHBpcmVzLiBUaGVyZSBpcworb25lIENQVSBsb2NhbCB0aW1lciBpbnN0YW50aWF0ZWQgaW4gTUNUIGZvciBldmVyeSBDUFUgaW4gdGhlIHN5c3RlbS4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgInNhbXN1bmcsZXh5bm9zNDIxMC1tY3QiLgorICAoYSkgInNhbXN1bmcsZXh5bm9zNDIxMC1tY3QiLCBmb3IgbWN0IGNvbXBhdGlibGUgd2l0aCBFeHlub3M0MjEwIG1jdC4KKyAgKGIpICJzYW1zdW5nLGV4eW5vczQ0MTItbWN0IiwgZm9yIG1jdCBjb21wYXRpYmxlIHdpdGggRXh5bm9zNDQxMiBtY3QuCisKKy0gcmVnOiBiYXNlIGFkZHJlc3Mgb2YgdGhlIG1jdCBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgdGhlIGFkZHJlc3Mgc3BhY2UKKyAgaXQgb2NjdXBpZXMuCisKKy0gaW50ZXJydXB0czogdGhlIGxpc3Qgb2YgaW50ZXJydXB0cyBnZW5lcmF0ZWQgYnkgdGhlIGNvbnRyb2xsZXIuIFRoZSBmb2xsb3dpbmcKKyAgc2hvdWxkIGJlIHRoZSBvcmRlciBvZiB0aGUgaW50ZXJydXB0cyBzcGVjaWZpZWQuIFRoZSBsb2NhbCB0aW1lciBpbnRlcnJ1cHRzCisgIHNob3VsZCBiZSBzcGVjaWZpZWQgYWZ0ZXIgdGhlIGZvdXIgZ2xvYmFsIHRpbWVyIGludGVycnVwdHMgaGF2ZSBiZWVuCisgIHNwZWNpZmllZC4KKworCTA6IEdsb2JhbCBUaW1lciBJbnRlcnJ1cHQgMAorCTE6IEdsb2JhbCBUaW1lciBJbnRlcnJ1cHQgMQorCTI6IEdsb2JhbCBUaW1lciBJbnRlcnJ1cHQgMgorCTM6IEdsb2JhbCBUaW1lciBJbnRlcnJ1cHQgMworCTQ6IExvY2FsIFRpbWVyIEludGVycnVwdCAwCisJNTogTG9jYWwgVGltZXIgSW50ZXJydXB0IDEKKwk2OiAuLgorCTc6IC4uCisJaTogTG9jYWwgVGltZXIgSW50ZXJydXB0IG4KKworICBGb3IgTUNUIGJsb2NrIHRoYXQgdXNlcyBhIHBlci1wcm9jZXNzb3IgaW50ZXJydXB0IGZvciBsb2NhbCB0aW1lcnMsIHN1Y2gKKyAgYXMgb25lcyBjb21wYXRpYmxlIHdpdGggInNhbXN1bmcsZXh5bm9zNDQxMi1tY3QiLCBvbmx5IG9uZSBsb2NhbCB0aW1lcgorICBpbnRlcnJ1cHQgbWlnaHQgYmUgc3BlY2lmaWVkLCBtZWFuaW5nIHRoYXQgYWxsIGxvY2FsIHRpbWVycyB1c2UgdGhlIHNhbWUKKyAgcGVyIHByb2Nlc3NvciBpbnRlcnJ1cHQuCisKK0V4YW1wbGUgMTogSW4gdGhpcyBleGFtcGxlLCB0aGUgSVAgY29udGFpbnMgdHdvIGxvY2FsIHRpbWVycywgdXNpbmcgc2VwYXJhdGUKKwkgICBpbnRlcnJ1cHRzLCBzbyB0d28gbG9jYWwgdGltZXIgaW50ZXJydXB0cyBoYXZlIGJlZW4gc3BlY2lmaWVkLAorCSAgIGluIGFkZGl0aW9uIHRvIGZvdXIgZ2xvYmFsIHRpbWVyIGludGVycnVwdHMuCisKKwltY3RAMTAwNTAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNDIxMC1tY3QiOworCQlyZWcgPSA8MHgxMDA1MDAwMCAweDgwMD47CisJCWludGVycnVwdHMgPSA8MCA1NyAwPiwgPDAgNjkgMD4sIDwwIDcwIDA+LCA8MCA3MSAwPiwKKwkJCSAgICAgPDAgNDIgMD4sIDwwIDQ4IDA+OworCX07CisKK0V4YW1wbGUgMjogSW4gdGhpcyBleGFtcGxlLCB0aGUgdGltZXIgaW50ZXJydXB0cyBhcmUgY29ubmVjdGVkIHRvIHR3byBzZXBhcmF0ZQorCSAgIGludGVycnVwdCBjb250cm9sbGVycy4gSGVuY2UsIGFuIGludGVycnVwdC1tYXAgaXMgY3JlYXRlZCB0byBtYXAKKwkgICB0aGUgaW50ZXJydXB0cyB0byB0aGUgcmVzcGVjdGl2ZSBpbnRlcnJ1cHQgY29udHJvbGxlcnMuCisKKwltY3RAMTAxQzAwMDAgeworCQljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNDIxMC1tY3QiOworCQlyZWcgPSA8MHgxMDFDMDAwMCAweDgwMD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1jdF9tYXA+OworCQlpbnRlcnJ1cHRzID0gPDA+LCA8MT4sIDwyPiwgPDM+LCA8ND4sIDw1PjsKKworCQltY3RfbWFwOiBtY3QtbWFwIHsKKwkJCSNpbnRlcnJ1cHQtY2VsbHMgPSA8MT47CisJCQkjYWRkcmVzcy1jZWxscyA9IDwwPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCQkJaW50ZXJydXB0LW1hcCA9IDwwICZnaWMgMCA1NyAwPiwKKwkJCQkJPDEgJmdpYyAwIDY5IDA+LAorCQkJCQk8MiAmY29tYmluZXIgMTIgNj4sCisJCQkJCTwzICZjb21iaW5lciAxMiA3PiwKKwkJCQkJPDQgJmdpYyAwIDQyIDA+LAorCQkJCQk8NSAmZ2ljIDAgNDggMD47CisJCX07CisJfTsKKworRXhhbXBsZSAzOiBJbiB0aGlzIGV4YW1wbGUsIHRoZSBJUCBjb250YWlucyBmb3VyIGxvY2FsIHRpbWVycywgYnV0IHVzaW5nCisJICAgYSBwZXItcHJvY2Vzc29yIGludGVycnVwdCB0byBoYW5kbGUgdGhlbS4gRWl0aGVyIGFsbCB0aGUgbG9jYWwKKwkgICB0aW1lciBpbnRlcnJ1cHRzIGNhbiBiZSBzcGVjaWZpZWQsIHdpdGggdGhlIHNhbWUgaW50ZXJydXB0IHNwZWNpZmllcgorCSAgIHZhbHVlIG9yIGp1c3QgdGhlIGZpcnN0IG9uZS4KKworCW1jdEAxMDA1MDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M0NDEyLW1jdCI7CisJCXJlZyA9IDwweDEwMDUwMDAwIDB4ODAwPjsKKworCQkvKiBCb3RoIHdheXMgYXJlIHBvc3NpYmxlIGluIHRoaXMgY2FzZS4gRWl0aGVyOiAqLworCQlpbnRlcnJ1cHRzID0gPDAgNTcgMD4sIDwwIDY5IDA+LCA8MCA3MCAwPiwgPDAgNzEgMD4sCisJCQkgICAgIDwwIDQyIDA+OworCQkvKiBvcjogKi8KKwkJaW50ZXJydXB0cyA9IDwwIDU3IDA+LCA8MCA2OSAwPiwgPDAgNzAgMD4sIDwwIDcxIDA+LAorCQkJICAgICA8MCA0MiAwPiwgPDAgNDIgMD4sIDwwIDQyIDA+LCA8MCA0MiAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL3N0LHN0aWg0MDctbHBjIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL3N0LHN0aWg0MDctbHBjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyYWNiNDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvc3Qsc3RpaDQwNy1scGMKQEAgLTAsMCArMSwyOCBAQAorU1RNaWNyb2VsZWN0cm9uaWNzIExvdyBQb3dlciBDb250cm9sbGVyIChMUEMpIC0gQ2xvY2tzb3VyY2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0xQQyBjdXJyZW50bHkgc3VwcG9ydHMgV2F0Y2hkb2cgT1IgUmVhbCBUaW1lIENsb2NrIE9SIENsb2Nrc291cmNlCitmdW5jdGlvbmFsaXR5LgorCitbU2VlOiAuLi93YXRjaGRvZy9zdF9scGNfd2R0LnR4dCBmb3IgV2F0Y2hkb2cgb3B0aW9uc10KK1tTZWU6IC4uL3J0Yy9ydGMtc3QtbHBjLnR4dCBmb3IgUlRDIG9wdGlvbnNdCisKK1JlcXVpcmVkIHByb3BlcnRpZXMKKworLSBjb21wYXRpYmxlICAgOiBNdXN0IGJlOiAic3Qsc3RpaDQwNy1scGMiCistIHJlZyAgICAgICAgICA6IExQQyByZWdpc3RlcnMgYmFzZSBhZGRyZXNzICsgc2l6ZQorLSBpbnRlcnJ1cHRzICAgOiBMUEMgaW50ZXJydXB0IGxpbmUgbnVtYmVyIGFuZCBhc3NvY2lhdGVkIGZsYWdzCistIGNsb2NrcyAgICAgICA6IENsb2NrIHVzZWQgYnkgTFBDIGRldmljZSAoU2VlOiAuLi9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQpCistIHN0LGxwYy1tb2RlICA6IFRoZSBMUEMgY2FuIHJ1biBlaXRoZXIgb25lIG9mIHRocmVlIG1vZGVzOgorICAgICAgICAgICAgICAgICAgU1RfTFBDX01PREVfUlRDICAgIFswXQorICAgICAgICAgICAgICAgICAgU1RfTFBDX01PREVfV0RUICAgIFsxXQorICAgICAgICAgICAgICAgICAgU1RfTFBDX01PREVfQ0xLU1JDIFsyXQorCQkgT25lIChhbmQgb25seSBvbmUpIG1vZGUgbXVzdCBiZSBzZWxlY3RlZC4KKworRXhhbXBsZToKKyAgICAgICBscGNAZmRlMDUwMDAgeworICAgICAgICAgICAgICAgY29tcGF0aWJsZSAgICAgID0gInN0LHN0aWg0MDctbHBjIjsKKyAgICAgICAgICAgICAgIHJlZyAgICAgICAgICAgICA9IDwweGZkZTA1MDAwIDB4MTAwMD47CisgICAgICAgICAgICAgICBjbG9ja3MgICAgICAgICAgPSA8JmNsa19zX2QzX2ZsZXhnZW4gQ0xLX0xQQ18wPjsKKyAgICAgICAgICAgICAgIHN0LGxwYy1tb2RlICAgICA9IDxTVF9MUENfTU9ERV9DTEtTUkM+OworICAgICAgIH07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvc3Qsc3RtMzItdGltZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL3N0LHN0bTMyLXRpbWVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWYyOGU3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL3N0LHN0bTMyLXRpbWVyLnR4dApAQCAtMCwwICsxLDIyIEBACisuIFNUTWljcm9lbGVjdHJvbmljcyBTVE0zMiB0aW1lcgorCitUaGUgU1RNMzIgTUNVcyBmYW1pbHkgaGFzIHNldmVyYWwgZ2VuZXJhbC1wdXJwb3NlIDE2IGFuZCAzMiBiaXRzIHRpbWVycy4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAic3Qsc3RtMzItdGltZXIiCistIHJlZyA6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0CistIGNsb2NrcyA6IFJlZmVyZW5jZSBvbiB0aGUgdGltZXIgaW5wdXQgY2xvY2sKKy0gaW50ZXJydXB0cyA6IFJlZmVyZW5jZSB0byB0aGUgdGltZXIgaW50ZXJydXB0CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHJlc2V0czogUmVmZXJlbmNlIHRvIGEgcmVzZXQgY29udHJvbGxlciBhc3NlcnRpbmcgdGhlIHRpbWVyCisKK0V4YW1wbGU6CisKK3RpbWVyNTogdGltZXJANDAwMDBjMDAgeworCWNvbXBhdGlibGUgPSAic3Qsc3RtMzItdGltZXIiOworCXJlZyA9IDwweDQwMDAwYzAwIDB4NDAwPjsKKwlpbnRlcnJ1cHRzID0gPDUwPjsKKwlyZXNldHMgPSA8JnJyYyAyNTk+OworCWNsb2NrcyA9IDwmY2xrX3BtdHIxPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvc3Rlcmljc3Nvbi11MzAwLWFwcHRpbWVyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9zdGVyaWNzc29uLXUzMDAtYXBwdGltZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0OTliYzgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvc3Rlcmljc3Nvbi11MzAwLWFwcHRpbWVyLnR4dApAQCAtMCwwICsxLDE4IEBACitTVC1Fcmljc3NvbiBVMzAwIGFwcHRpbWVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAic3Rlcmljc3Nvbix1MzAwLWFwcHRpbWVyIgorLSByZWcgOiBTcGVjaWZpZXMgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSByZWdpc3RlcnMuCistIGludGVycnVwdHMgOiBBIGxpc3Qgb2YgNCBpbnRlcnJ1cHRzOyBvbmUgZm9yIGVhY2ggc3VidGltZXIuIFRoZXNlCisgIGFyZSwgaW4gb3JkZXI6IE9TIChvcGVyYXRpbmcgc3lzdGVtKSwgREQgKGRldmljZSBkcml2ZXIpIGJvdGgKKyAgYWRvcHRlZCBmb3IgRVBPQy9TeW1iaWFuIHdpdGggdHdvIHNwZWNpZmljIElSUXMgZm9yIHRoZXNlIHRhc2tzLAorICB0aGVuIEdQMSBhbmQgR1AyLCB3aGljaCBhcmUgZ2VuZXJhbC1wdXJwb3NlIHRpbWVycy4KKworRXhhbXBsZToKKwordGltZXIgeworCWNvbXBhdGlibGUgPSAic3Rlcmljc3Nvbix1MzAwLWFwcHRpbWVyIjsKKwlyZWcgPSA8MHhjMDAxNDAwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8MjQgMjUgMjYgMjc+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci90aSxrZXlzdG9uZS10aW1lci50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvdGksa2V5c3RvbmUtdGltZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmYmUzNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvdGksa2V5c3RvbmUtdGltZXIudHh0CkBAIC0wLDAgKzEsMjkgQEAKKyogRGV2aWNlIHRyZWUgYmluZGluZ3MgZm9yIFRleGFzIGluc3RydW1lbnRzIEtleXN0b25lIHRpbWVyCisKK1RoaXMgZG9jdW1lbnQgcHJvdmlkZXMgYmluZGluZ3MgZm9yIHRoZSA2NC1iaXQgdGltZXIgaW4gdGhlIEtleVN0b25lCithcmNoaXRlY3R1cmUgZGV2aWNlcy4gVGhlIHRpbWVyIGNhbiBiZSBjb25maWd1cmVkIGFzIGEgZ2VuZXJhbC1wdXJwb3NlIDY0LWJpdAordGltZXIsIGR1YWwgZ2VuZXJhbC1wdXJwb3NlIDMyLWJpdCB0aW1lcnMuIFdoZW4gY29uZmlndXJlZCBhcyBkdWFsIDMyLWJpdAordGltZXJzLCBlYWNoIGhhbGYgY2FuIG9wZXJhdGUgaW4gY29uanVuY3Rpb24gKGNoYWluIG1vZGUpIG9yIGluZGVwZW5kZW50bHkKKyh1bmNoYWluZWQgbW9kZSkgb2YgZWFjaCBvdGhlci4KKworSXQgaXMgZ2xvYmFsIHRpbWVyIGlzIGEgZnJlZSBydW5uaW5nIHVwLWNvdW50ZXIgYW5kIGNhbiBnZW5lcmF0ZSBpbnRlcnJ1cHQKK3doZW4gdGhlIGNvdW50ZXIgcmVhY2hlcyBwcmVzZXQgY291bnRlciB2YWx1ZXMuCisKK0RvY3VtZW50YXRpb246CitodHRwOi8vd3d3LnRpLmNvbS9saXQvdWcvc3BydWd2NWEvc3BydWd2NWEucGRmCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAidGksa2V5c3RvbmUtdGltZXIiLgorLSByZWcgOiBzcGVjaWZpZXMgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBjb3VudCBvZiB0aGUgcmVnaXN0ZXJzLgorLSBpbnRlcnJ1cHRzIDogaW50ZXJydXB0IGdlbmVyYXRlZCBieSB0aGUgdGltZXIuCistIGNsb2NrcyA6IHRoZSBjbG9jayBmZWVkaW5nIHRoZSB0aW1lciBjbG9jay4KKworRXhhbXBsZToKKwordGltZXJAMjJmMDAwMCB7CisJY29tcGF0aWJsZSA9ICJ0aSxrZXlzdG9uZS10aW1lciI7CisJcmVnID0gPDB4MDIyZjAwMDAgMHg4MD47CisJaW50ZXJydXB0cyA9IDxHSUNfU1BJIDExMCBJUlFfVFlQRV9FREdFX1JJU0lORz47CisJY2xvY2tzID0gPCZjbGt0aW1lcjE1PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdWZzL3Vmcy1xY29tLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91ZnMvdWZzLXFjb20udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MGJhZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdWZzL3Vmcy1xY29tLnR4dApAQCAtMCwwICsxLDU4IEBACisqIFF1YWxjb21tIFRlY2hub2xvZ2llcyBJbmMgVW5pdmVyc2FsIEZsYXNoIFN0b3JhZ2UgKFVGUykgUEhZCisKK1VGU1BIWSBub2RlcyBhcmUgZGVmaW5lZCB0byBkZXNjcmliZSBvbi1jaGlwIFVGUyBQSFkgaGFyZHdhcmUgbWFjcm8uCitFYWNoIFVGUyBQSFkgbm9kZSBzaG91bGQgaGF2ZSBpdHMgb3duIG5vZGUuCisKK1RvIGJpbmQgVUZTIFBIWSB3aXRoIFVGUyBob3N0IGNvbnRyb2xsZXIsIHRoZSBjb250cm9sbGVyIG5vZGUgc2hvdWxkCitjb250YWluIGEgcGhhbmRsZSByZWZlcmVuY2UgdG8gVUZTIFBIWSBub2RlLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlICAgICAgICA6IGNvbXBhdGlibGUgbGlzdCwgY29udGFpbnMgInFjb20sdWZzLXBoeS1xbXAtMjBubSIKKwkJICAgICAgb3IgInFjb20sdWZzLXBoeS1xbXAtMTRubSIgYWNjb3JkaW5nIHRvIHRoZSByZWxldmFudCBwaHkgaW4gdXNlLgorLSByZWcgICAgICAgICAgICAgICA6IHNob3VsZCBjb250YWluIFBIWSByZWdpc3RlciBhZGRyZXNzIHNwYWNlIChtYW5kYXRvcnkpLAorLSByZWctbmFtZXMgICAgICAgICA6IGluZGljYXRlcyB2YXJpb3VzIHJlc291cmNlcyBwYXNzZWQgdG8gZHJpdmVyICh2aWEgcmVnIHByb3B0ZXJ5KSBieSBuYW1lLgorICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVkICJyZWctbmFtZXMiIGlzICJwaHlfbWVtIi4KKy0gI3BoeS1jZWxscyAgICAgICAgOiBUaGlzIHByb3BlcnR5IHNoYWxsIGJlIHNldCB0byAwCistIHZkZGEtcGh5LXN1cHBseSAgIDogcGhhbmRsZSB0byBtYWluIFBIWSBzdXBwbHkgZm9yIGFuYWxvZyBkb21haW4KKy0gdmRkYS1wbGwtc3VwcGx5ICAgOiBwaGFuZGxlIHRvIFBIWSBQTEwgYW5kIFBvd2VyLUdlbiBibG9jayBwb3dlciBzdXBwbHkKKy0gY2xvY2tzCSAgICA6IExpc3Qgb2YgcGhhbmRsZSBhbmQgY2xvY2sgc3BlY2lmaWVyIHBhaXJzCistIGNsb2NrLW5hbWVzICAgICAgIDogTGlzdCBvZiBjbG9jayBpbnB1dCBuYW1lIHN0cmluZ3Mgc29ydGVkIGluIHRoZSBzYW1lCisJCSAgICAgIG9yZGVyIGFzIHRoZSBjbG9ja3MgcHJvcGVydHkuICJyZWZfY2xrX3NyYyIsICJyZWZfY2xrIiwKKwkJICAgICAgInR4X2lmYWNlX2NsayIgJiAicnhfaWZhY2VfY2xrIiBhcmUgbWFuZGF0b3J5IGJ1dAorCQkgICAgICAicmVmX2Nsa19wYXJlbnQiIGlzIG9wdGlvbmFsCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHZkZGEtcGh5LW1heC1taWNyb2FtcCA6IHNwZWNpZmllcyBtYXguIGxvYWQgdGhhdCBjYW4gYmUgZHJhd24gZnJvbSBwaHkgc3VwcGx5CistIHZkZGEtcGxsLW1heC1taWNyb2FtcCA6IHNwZWNpZmllcyBtYXguIGxvYWQgdGhhdCBjYW4gYmUgZHJhd24gZnJvbSBwbGwgc3VwcGx5CistIHZkZHAtcmVmLWNsay1zdXBwbHkgICA6IHBoYW5kbGUgdG8gVUZTIGRldmljZSByZWZfY2xrIHBhZCBwb3dlciBzdXBwbHkKKy0gdmRkcC1yZWYtY2xrLW1heC1taWNyb2FtcCA6IHNwZWNpZmllcyBtYXguIGxvYWQgdGhhdCBjYW4gYmUgZHJhd24gZnJvbSB0aGlzIHN1cHBseQorLSB2ZGRwLXJlZi1jbGstYWx3YXlzLW9uIDogc3BlY2lmaWVzIGlmIHRoaXMgc3VwcGx5IG5lZWRzIHRvIGJlIGtlcHQgYWx3YXlzIG9uCisKK0V4YW1wbGU6CisKKwl1ZnNwaHkxOiB1ZnNwaHlAMHhmYzU5NzAwMCB7CisJCWNvbXBhdGlibGUgPSAicWNvbSx1ZnMtcGh5LXFtcC0yMG5tIjsKKwkJcmVnID0gPDB4ZmM1OTcwMDAgMHg4MDA+OworCQlyZWctbmFtZXMgPSAicGh5X21lbSI7CisJCSNwaHktY2VsbHMgPSA8MD47CisJCXZkZGEtcGh5LXN1cHBseSA9IDwmcG1hODA4NF9sND47CisJCXZkZGEtcGxsLXN1cHBseSA9IDwmcG1hODA4NF9sMTI+OworCQl2ZGRhLXBoeS1tYXgtbWljcm9hbXAgPSA8NTAwMDA+OworCQl2ZGRhLXBsbC1tYXgtbWljcm9hbXAgPSA8MTAwMD47CisJCWNsb2NrLW5hbWVzID0gInJlZl9jbGtfc3JjIiwKKwkJCSJyZWZfY2xrX3BhcmVudCIsCisJCQkicmVmX2NsayIsCisJCQkidHhfaWZhY2VfY2xrIiwKKwkJCSJyeF9pZmFjZV9jbGsiOworCQljbG9ja3MgPSA8JmNsb2NrX3JwbSBjbGtfbG5fYmJfY2xrPiwKKwkJCTwmY2xvY2tfZ2NjIGNsa19wY2llXzFfcGh5X2xkbyA+LAorCQkJPCZjbG9ja19nY2MgY2xrX3Vmc19waHlfbGRvPiwKKwkJCTwmY2xvY2tfZ2NjIGNsa19nY2NfdWZzX3R4X2NmZ19jbGs+LAorCQkJPCZjbG9ja19nY2MgY2xrX2djY191ZnNfcnhfY2ZnX2Nsaz47CisJfTsKKworCXVmc2hjQDB4ZmM1OTgwMDAgeworCQkuLi4KKwkJcGh5cyA9IDwmdWZzcGh5MT47CisJCXBoeS1uYW1lcyA9ICJ1ZnNwaHkiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdWZzL3Vmc2hjZC1wbHRmcm0udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Vmcy91ZnNoY2QtcGx0ZnJtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2MwZTk4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Vmcy91ZnNoY2QtcGx0ZnJtLnR4dApAQCAtMCwwICsxLDY2IEBACisqIFVuaXZlcnNhbCBGbGFzaCBTdG9yYWdlIChVRlMpIEhvc3QgQ29udHJvbGxlcgorCitVRlNIQyBub2RlcyBhcmUgZGVmaW5lZCB0byBkZXNjcmliZSBvbi1jaGlwIFVGUyBob3N0IGNvbnRyb2xsZXJzLgorRWFjaCBVRlMgY29udHJvbGxlciBpbnN0YW5jZSBzaG91bGQgaGF2ZSBpdHMgb3duIG5vZGUuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUJCTogbXVzdCBjb250YWluICJqZWRlYyx1ZnMtMS4xIiwgbWF5IGFsc28gbGlzdCBvbmUgb3IgbW9yZQorCQkJCQkgIG9mIHRoZSBmb2xsb3dpbmc6CisJCQkJCSAgInFjb20sbXNtODk5NC11ZnNoYyIKKwkJCQkJICAicWNvbSxtc204OTk2LXVmc2hjIgorCQkJCQkgICJxY29tLHVmc2hjIgorLSBpbnRlcnJ1cHRzICAgICAgICA6IDxpbnRlcnJ1cHQgbWFwcGluZyBmb3IgVUZTIGhvc3QgY29udHJvbGxlciBJUlE+CistIHJlZyAgICAgICAgICAgICAgIDogPHJlZ2lzdGVycyBtYXBwaW5nPgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBwaHlzICAgICAgICAgICAgICAgICAgOiBwaGFuZGxlIHRvIFVGUyBQSFkgbm9kZQorLSBwaHktbmFtZXMgICAgICAgICAgICAgOiB0aGUgc3RyaW5nICJ1ZnNwaHkiIHdoZW4gaXMgZm91bmQgaW4gYSBub2RlLCBhbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoICJwaHlzIiBhdHRyaWJ1dGUsIHByb3ZpZGVzIHBoYW5kbGUgdG8gVUZTIFBIWSBub2RlCistIHZkZC1oYmEtc3VwcGx5ICAgICAgICA6IHBoYW5kbGUgdG8gVUZTIGhvc3QgY29udHJvbGxlciBzdXBwbHkgcmVndWxhdG9yIG5vZGUKKy0gdmNjLXN1cHBseSAgICAgICAgICAgIDogcGhhbmRsZSB0byBWQ0Mgc3VwcGx5IHJlZ3VsYXRvciBub2RlCistIHZjY3Etc3VwcGx5ICAgICAgICAgICA6IHBoYW5kbGUgdG8gVkNDUSBzdXBwbHkgcmVndWxhdG9yIG5vZGUKKy0gdmNjcTItc3VwcGx5ICAgICAgICAgIDogcGhhbmRsZSB0byBWQ0NRMiBzdXBwbHkgcmVndWxhdG9yIG5vZGUKKy0gdmNjLXN1cHBseS0xcDggICAgICAgIDogRm9yIGVtYmVkZGVkIFVGUyBkZXZpY2VzLCB2YWxpZCBWQ0MgcmFuZ2UgaXMgMS43LTEuOTVWCisgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIDIuNy0zLjZWLiBUaGlzIGJvb2xlYW4gcHJvcGVydHkgd2hlbiBzZXQsIHNwZWNpZmllcworCQkJICB0byB1c2UgbG93IHZvbHRhZ2UgcmFuZ2Ugb2YgMS43LTEuOTVWLiBOb3RlIGZvciBleHRlcm5hbAorCQkJICBVRlMgY2FyZHMgdGhpcyBwcm9wZXJ0eSBpcyBpbnZhbGlkIGFuZCB2YWxpZCBWQ0MgcmFuZ2UgaXMKKwkJCSAgYWx3YXlzIDIuNy0zLjZWLgorLSB2Y2MtbWF4LW1pY3JvYW1wICAgICAgOiBzcGVjaWZpZXMgbWF4LiBsb2FkIHRoYXQgY2FuIGJlIGRyYXduIGZyb20gdmNjIHN1cHBseQorLSB2Y2NxLW1heC1taWNyb2FtcCAgICAgOiBzcGVjaWZpZXMgbWF4LiBsb2FkIHRoYXQgY2FuIGJlIGRyYXduIGZyb20gdmNjcSBzdXBwbHkKKy0gdmNjcTItbWF4LW1pY3JvYW1wICAgIDogc3BlY2lmaWVzIG1heC4gbG9hZCB0aGF0IGNhbiBiZSBkcmF3biBmcm9tIHZjY3EyIHN1cHBseQorLSA8bmFtZT4tZml4ZWQtcmVndWxhdG9yIDogYm9vbGVhbiBwcm9wZXJ0eSBzcGVjaWZ5aW5nIHRoYXQgPG5hbWU+LXN1cHBseSBpcyBhIGZpeGVkIHJlZ3VsYXRvcgorCistIGNsb2NrcyAgICAgICAgICAgICAgICA6IExpc3Qgb2YgcGhhbmRsZSBhbmQgY2xvY2sgc3BlY2lmaWVyIHBhaXJzCistIGNsb2NrLW5hbWVzICAgICAgICAgICA6IExpc3Qgb2YgY2xvY2sgaW5wdXQgbmFtZSBzdHJpbmdzIHNvcnRlZCBpbiB0aGUgc2FtZQorICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlciBhcyB0aGUgY2xvY2tzIHByb3BlcnR5LgorLSBmcmVxLXRhYmxlLWh6CQk6IEFycmF5IG9mIDxtaW4gbWF4PiBvcGVyYXRpbmcgZnJlcXVlbmNpZXMgc3RvcmVkIGluIHRoZSBzYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyIGFzIHRoZSBjbG9ja3MgcHJvcGVydHkuIElmIHRoaXMgcHJvcGVydHkgaXMgbm90CisJCQkgIGRlZmluZWQgb3IgYSB2YWx1ZSBpbiB0aGUgYXJyYXkgaXMgIjAiIHRoZW4gaXQgaXMgYXNzdW1lZAorCQkJICB0aGF0IHRoZSBmcmVxdWVuY3kgaXMgc2V0IGJ5IHRoZSBwYXJlbnQgY2xvY2sgb3IgYQorCQkJICBmaXhlZCByYXRlIGNsb2NrIHNvdXJjZS4KKworTm90ZTogSWYgYWJvdmUgcHJvcGVydGllcyBhcmUgbm90IGRlZmluZWQgaXQgY2FuIGJlIGFzc3VtZWQgdGhhdCB0aGUgc3VwcGx5CityZWd1bGF0b3JzIG9yIGNsb2NrcyBhcmUgYWx3YXlzIG9uLgorCitFeGFtcGxlOgorCXVmc2hjQDB4ZmM1OTgwMDAgeworCQljb21wYXRpYmxlID0gImplZGVjLHVmcy0xLjEiOworCQlyZWcgPSA8MHhmYzU5ODAwMCAweDgwMD47CisJCWludGVycnVwdHMgPSA8MCAyOCAwPjsKKworCQl2ZGQtaGJhLXN1cHBseSA9IDwmeHh4X3JlZzA+OworCQl2ZGQtaGJhLWZpeGVkLXJlZ3VsYXRvcjsKKwkJdmNjLXN1cHBseSA9IDwmeHh4X3JlZzE+OworCQl2Y2Mtc3VwcGx5LTFwODsKKwkJdmNjcS1zdXBwbHkgPSA8Jnh4eF9yZWcyPjsKKwkJdmNjcTItc3VwcGx5ID0gPCZ4eHhfcmVnMz47CisJCXZjYy1tYXgtbWljcm9hbXAgPSA1MDAwMDA7CisJCXZjY3EtbWF4LW1pY3JvYW1wID0gMjAwMDAwOworCQl2Y2NxMi1tYXgtbWljcm9hbXAgPSAyMDAwMDA7CisKKwkJY2xvY2tzID0gPCZjb3JlIDA+LCA8JnJlZiAwPiwgPCZpZmFjZSAwPjsKKwkJY2xvY2stbmFtZXMgPSAiY29yZV9jbGsiLCAicmVmX2NsayIsICJpZmFjZV9jbGsiOworCQlmcmVxLXRhYmxlLWh6ID0gPDEwMDAwMDAwMCAyMDAwMDAwMDA+LCA8MCAwPiwgPDAgMD47CisJCXBoeXMgPSA8JnVmc3BoeTE+OworCQlwaHktbmFtZXMgPSAidWZzcGh5IjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VuaXR0ZXN0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91bml0dGVzdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JmNThjMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91bml0dGVzdC50eHQKQEAgLTAsMCArMSw3MSBAQAorMSkgT0YgdW5pdHRlc3QgcGxhdGZvcm0gZGV2aWNlCisKKyoqIHVuaXR0ZXN0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IG11c3QgYmUgInVuaXR0ZXN0IgorCitBbGwgb3RoZXIgcHJvcGVydGllcyBhcmUgb3B0aW9uYWwuCisKK0V4YW1wbGU6CisJdW5pdHRlc3QgeworCQljb21wYXRpYmxlID0gInVuaXR0ZXN0IjsKKwkJc3RhdHVzID0gIm9rYXkiOworCX07CisKKzIpIE9GIHVuaXR0ZXN0IGkyYyBhZGFwdGVyIHBsYXRmb3JtIGRldmljZQorCisqKiBwbGF0Zm9ybSBkZXZpY2UgdW5pdHRlc3QgYWRhcHRlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBtdXN0IGJlIHVuaXR0ZXN0LWkyYy1idXMKKworQ2hpbGRyZW4gbm9kZXMgY29udGFpbiB1bml0dGVzdCBpMmMgZGV2aWNlcy4KKworRXhhbXBsZToKKwl1bml0dGVzdC1pMmMtYnVzIHsKKwkJY29tcGF0aWJsZSA9ICJ1bml0dGVzdC1pMmMtYnVzIjsKKwkJc3RhdHVzID0gIm9rYXkiOworCX07CisKKzMpIE9GIHVuaXR0ZXN0IGkyYyBkZXZpY2UKKworKiogSTJDIHVuaXR0ZXN0IGRldmljZQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBtdXN0IGJlIHVuaXR0ZXN0LWkyYy1kZXYKKworQWxsIG90aGVyIHByb3BlcnRpZXMgYXJlIG9wdGlvbmFsCisKK0V4YW1wbGU6CisJdW5pdHRlc3QtaTJjLWRldiB7CisJCWNvbXBhdGlibGUgPSAidW5pdHRlc3QtaTJjLWRldiI7CisJCXN0YXR1cyA9ICJva2F5IjsKKwl9OworCis0KSBPRiB1bml0dGVzdCBpMmMgbXV4IGRldmljZQorCisqKiBJMkMgdW5pdHRlc3QgbXV4CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IG11c3QgYmUgdW5pdHRlc3QtaTJjLW11eAorCitDaGlsZHJlbiBub2RlcyBjb250YWluIHVuaXR0ZXN0IGkyYyBidXMgbm9kZXMgcGVyIGNoYW5uZWwuCisKK0V4YW1wbGU6CisJdW5pdHRlc3QtaTJjLW11eCB7CisJCWNvbXBhdGlibGUgPSAidW5pdHRlc3QtaTJjLW11eCI7CisJCXN0YXR1cyA9ICJva2F5IjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQljaGFubmVsLTAgeworCQkJcmVnID0gPDA+OworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJCWkyYy1kZXYgeworCQkJCXJlZyA9IDw4PjsKKwkJCQljb21wYXRpYmxlID0gInVuaXR0ZXN0LWkyYy1kZXYiOworCQkJCXN0YXR1cyA9ICJva2F5IjsKKwkJCX07CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvYWxsd2lubmVyLHN1bjRpLWExMC1tdXNiLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvYWxsd2lubmVyLHN1bjRpLWExMC1tdXNiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjJjZDdjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9hbGx3aW5uZXIsc3VuNGktYTEwLW11c2IudHh0CkBAIC0wLDAgKzEsMjkgQEAKK0FsbHdpbm5lciBzdW40aSBBMTAgbXVzYiBEUkMvT1RHIGNvbnRyb2xsZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGUgICAgICA6ICJhbGx3aW5uZXIsc3VuNGktYTEwLW11c2IiLCAiYWxsd2lubmVyLHN1bjZpLWEzMS1tdXNiIgorICAgICAgICAgICAgICAgICAgICAgb3IgImFsbHdpbm5lcixzdW44aS1hMzMtbXVzYiIKKyAtIHJlZyAgICAgICAgICAgICA6IG1taW8gYWRkcmVzcyByYW5nZSBvZiB0aGUgbXVzYiBjb250cm9sbGVyCisgLSBjbG9ja3MgICAgICAgICAgOiBjbG9jayBzcGVjaWZpZXIgZm9yIHRoZSBtdXNiIGNvbnRyb2xsZXIgYWhiIGdhdGUgY2xvY2sKKyAtIHJlc2V0ICAgICAgICAgICA6IHJlc2V0IHNwZWNpZmllciBmb3IgdGhlIGFoYiByZXNldCAoQTMxIGFuZCBuZXdlciBvbmx5KQorIC0gaW50ZXJydXB0cyAgICAgIDogaW50ZXJydXB0IHRvIHdoaWNoIHRoZSBtdXNiIGNvbnRyb2xsZXIgaXMgY29ubmVjdGVkCisgLSBpbnRlcnJ1cHQtbmFtZXMgOiBtdXN0IGJlICJtYyIKKyAtIHBoeXMgICAgICAgICAgICA6IHBoeSBzcGVjaWZpZXIgZm9yIHRoZSBvdGcgcGh5CisgLSBwaHktbmFtZXMgICAgICAgOiBtdXN0IGJlICJ1c2IiCisgLSBkcl9tb2RlICAgICAgICAgOiBEdWFsLVJvbGUgbW9kZSBtdXN0IGJlICJob3N0IiBvciAib3RnIgorIC0gZXh0Y29uICAgICAgICAgIDogZXh0Y29uIHNwZWNpZmllciBmb3IgdGhlIG90ZyBwaHkKKworRXhhbXBsZToKKworCXVzYl9vdGc6IHVzYkAwMWMxMzAwMCB7CisJCWNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjRpLWExMC1tdXNiIjsKKwkJcmVnID0gPDB4MDFjMTMwMDAgMHgwNDAwPjsKKwkJY2xvY2tzID0gPCZhaGJfZ2F0ZXMgMD47CisJCWludGVycnVwdHMgPSA8Mzg+OworCQlpbnRlcnJ1cHQtbmFtZXMgPSAibWMiOworCQlwaHlzID0gPCZ1c2JwaHkgMD47CisJCXBoeS1uYW1lcyA9ICJ1c2IiOworCQlleHRjb24gPSA8JnVzYnBoeSAwPjsKKwkJc3RhdHVzID0gImRpc2FibGVkIjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9hbTMzeHgtdXNiLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvYW0zM3h4LXVzYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBjMmZmMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvYW0zM3h4LXVzYi50eHQKQEAgLTAsMCArMSwxOTcgQEAKKyAgQU0zM3h4IE1VU0IKK35+fn5+fn5+fn5+fn5+fgorLSBjb21wYXRpYmxlOiB0aSxhbTMzeHgtdXNiCistIHJlZzogb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHVzYnNzIHJlZ2lzdGVyIHNldHMKKy0gdGksaHdtb2RzIDogbXVzdCBiZSAidXNiX290Z19ocyIKKworVGhlIGdsdWUgbGF5ZXIgY29udGFpbnMgbXVsdGlwbGUgY2hpbGQgbm9kZXMuIEl0IGlzIHJlcXVpcmVkIHRoZSBoYXZlCithdCBsZWFzdCBhIGNvbnRyb2wgbW9kdWxlIG5vZGUsIFVTQiBub2RlIGFuZCBhIFBIWSBub2RlLiBUaGUgc2Vjb25kIFVTQgorbm9kZSBhbmQgaXRzIFBIWSBub2RlIGlzIG9wdGlvbmFsLiBUaGUgRE1BIG5vZGUgaXMgYWxzbyBvcHRpb25hbC4KKworUmVzZXQgbW9kdWxlCit+fn5+fn5+fn5+fn4KKy0gY29tcGF0aWJsZTogdGksYW0zMzV4LXVzYi1jdHJsLW1vZHVsZQorLSByZWc6IG9mZnNldCBhbmQgbGVuZ3RoIG9mIHRoZSAiVVNCIGNvbnRyb2wgcmVnaXN0ZXJzIiBpbiB0aGUgIkNvbnRyb2wKKyAgTW9kdWxlIiBibG9jay4gQSBzZWNvbmQgb2Zmc2V0IGFuZCBsZW5ndGggZm9yIHRoZSBVU0Igd2FrZSB1cCBjb250cm9sCisgIGluIHRoZSBzYW1lIG1lbW9yeSBibG9jay4KKy0gcmVnLW5hbWVzOiAicGh5X2N0cmwiIGZvciB0aGUgIlVTQiBjb250cm9sIHJlZ2lzdGVycyIgYW5kICJ3YWtldXAiIGZvcgorICB0aGUgVVNCIHdha2UgdXAgY29udHJvbCByZWdpc3Rlci4KKworVVNCIFBIWQorfn5+fn5+fgorY29tcGF0aWJsZTogdGksYW0zMzV4LXVzYi1waHkKK3JlZzogb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlICJVU0IgUEhZIiByZWdpc3RlciBzcGFjZQordGksY3RybF9tb2Q6IHJlZmVyZW5jZSB0byB0aGUgInJlc2V0IG1vZHVsZSIgbm9kZQorcmVnLW5hbWVzOiBwaHkKK1RoZSBQSFkgc2hvdWxkIGhhdmUgYSAicGh5IiBhbGlhcyBudW1iZXJlZCBwcm9wZXJseSBpbiB0aGUgYWxpYXMKK25vZGUuCisKK1VTQgorfn5+CistIGNvbXBhdGlibGU6IHRpLG11c2ItYW0zM3h4CistIHJlZzogb2Zmc2V0IGFuZCBsZW5ndGggb2YgIlVTQiBDb250cm9sbGVyIFJlZ2lzdGVycyIsIGFuZCBvZmZzZXQgYW5kCisgIGxlbmd0aCBvZiAiVVNCIENvcmUiIHJlZ2lzdGVyIHNwYWNlLgorLSByZWctbmFtZXM6IGNvbnRyb2wgZm9yIHRoZSAiIlVTQiBDb250cm9sbGVyIFJlZ2lzdGVycyIgYW5kICJtYyIgZm9yCisgICJVU0IgQ29yZSIgcmVnaXN0ZXIgc3BhY2UKKy0gaW50ZXJydXB0czogVVNCIGludGVycnVwdCBudW1iZXIKKy0gaW50ZXJydXB0LW5hbWVzOiBtYworLSBkcl9tb2RlOiBTaG91bGQgYmUgb25lIG9mICJob3N0IiwgInBlcmlwaGVyYWwiIG9yICJvdGciLgorLSBtZW50b3IsbXVsdGlwb2ludDogU2hvdWxkIGJlICIxIiBpbmRpY2F0aW5nIHRoZSBtdXNiIGNvbnRyb2xsZXIgc3VwcG9ydHMKKyAgbXVsdGlwb2ludC4gVGhpcyBpcyBhIE1VU0IgY29uZmlndXJhdGlvbi1zcGVjaWZpYyBzZXR0aW5nLgorLSBtZW50b3IsbnVtLWVwczogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZW5kcG9pbnRzLiBUaGlzIGlzIGFsc28gYQorICBNVVNCIGNvbmZpZ3VyYXRpb24tc3BlY2lmaWMgc2V0dGluZy4gU2hvdWxkIGJlIHNldCB0byAiMTYiCistIG1lbnRvcixyYW0tYml0czogU3BlY2lmaWVzIHRoZSByYW0gYWRkcmVzcyBzaXplLiBTaG91bGQgYmUgc2V0IHRvICIxMiIKKy0gbWVudG9yLHBvd2VyOiBTaG91bGQgYmUgIjUwMCIuIFRoaXMgc2lnbmlmaWVzIHRoZSBjb250cm9sbGVyIGNhbiBzdXBwbHkgdXAgdG8KKyAgNTAwbUEgd2hlbiBvcGVyYXRpbmcgaW4gaG9zdCBtb2RlLgorLSBwaHlzOiByZWZlcmVuY2UgdG8gdGhlIFVTQiBwaHkKKy0gZG1hczogc3BlY2lmaWVzIHRoZSBkbWEgY2hhbm5lbHMKKy0gZG1hLW5hbWVzOiBzcGVjaWZpZXMgdGhlIG5hbWVzIG9mIHRoZSBjaGFubmVscy4gVXNlICJyeE4iIGZvciByZWNlaXZlCisgIGFuZCAidHhOIiBmb3IgdHJhbnNtaXQgZW5kcG9pbnRzLiBOIHNwZWNpZmllcyB0aGUgZW5kcG9pbnQgbnVtYmVyLgorCitUaGUgY29udHJvbGxlciBzaG91bGQgaGF2ZSBhbiAidXNiIiBhbGlhcyBudW1iZXJlZCBwcm9wZXJseSBpbiB0aGUgYWxpYXMKK25vZGUuCisKK0RNQQorfn5+CistIGNvbXBhdGlibGU6IHRpLGFtMzM1OS1jcHBpNDEKKy0gcmVnOiBvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgZm9sbG93aW5nIHJlZ2lzdGVyIHNwYWNlczogVVNCU1MsIFVTQgorICBDUFBJIERNQSBDb250cm9sbGVyLCBVU0IgQ1BQSSBETUEgU2NoZWR1bGVyLCBVU0IgUXVldWUgTWFuYWdlcgorLSByZWctbmFtZXM6IGdsdWUsIGNvbnRyb2xsZXIsIHNjaGVkdWxlciwgcXVldWVtZ3IKKy0gI2RtYS1jZWxsczogc2hvdWxkIGJlIHNldCB0byAyLiBUaGUgZmlyc3QgbnVtYmVyIHJlcHJlc2VudHMgdGhlCisgIGVuZHBvaW50IG51bWJlciAoMCDigKYgMTQgZm9yIGVuZHBvaW50cyAxIOKApiAxNSBvbiBpbnN0YW5jZSAwIGFuZCAxNSDigKYgMjkKKyAgZm9yIGVuZHBvaW50cyAxIOKApiAxNSBvbiBpbnN0YW5jZSAxKS4gVGhlIHNlY29uZCBudW1iZXIgaXMgMCBmb3IgUlggYW5kCisgIDEgZm9yIFRYIHRyYW5zZmVycy4KKy0gI2RtYS1jaGFubmVsczogc2hvdWxkIGJlIHNldCB0byAzMCByZXByZXNlbnRpbmcgdGhlIDE1IGVuZHBvaW50cyBmb3IKKyAgZWFjaCBVU0IgaW5zdGFuY2UuCisKK0V4YW1wbGU6Cit+fn5+fn5+fgorVGhlIGZvbGxvd2luZyBleGFtcGxlIGNvbnRhaW5zIGFsbCB0aGUgbm9kZXMgYXMgdXNlZCBvbiBhbTMzNXgtZXZtOgorCithbGlhc2VzIHsKKwl1c2IwID0gJnVzYjA7CisJdXNiMSA9ICZ1c2IxOworCXBoeTAgPSAmdXNiMF9waHk7CisJcGh5MSA9ICZ1c2IxX3BoeTsKK307CisKK3VzYjogdXNiQDQ3NDAwMDAwIHsKKwljb21wYXRpYmxlID0gInRpLGFtMzN4eC11c2IiOworCXJlZyA9IDwweDQ3NDAwMDAwIDB4MTAwMD47CisJcmFuZ2VzOworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDE+OworCXRpLGh3bW9kcyA9ICJ1c2Jfb3RnX2hzIjsKKworCWN0cmxfbW9kOiBjb250cm9sQDQ0ZTEwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSxhbTMzNXgtdXNiLWN0cmwtbW9kdWxlIjsKKwkJcmVnID0gPDB4NDRlMTA2MjAgMHgxMAorCQkJMHg0NGUxMDY0OCAweDQ+OworCQlyZWctbmFtZXMgPSAicGh5X2N0cmwiLCAid2FrZXVwIjsKKwl9OworCisJdXNiMF9waHk6IHVzYi1waHlANDc0MDEzMDAgeworCQljb21wYXRpYmxlID0gInRpLGFtMzM1eC11c2ItcGh5IjsKKwkJcmVnID0gPDB4NDc0MDEzMDAgMHgxMDA+OworCQlyZWctbmFtZXMgPSAicGh5IjsKKwkJdGksY3RybF9tb2QgPSA8JmN0cmxfbW9kPjsKKwl9OworCisJdXNiMDogdXNiQDQ3NDAxMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJ0aSxtdXNiLWFtMzN4eCI7CisJCXJlZyA9IDwweDQ3NDAxNDAwIDB4NDAwCisJCQkweDQ3NDAxMDAwIDB4MjAwPjsKKwkJcmVnLW5hbWVzID0gIm1jIiwgImNvbnRyb2wiOworCisJCWludGVycnVwdHMgPSA8MTg+OworCQlpbnRlcnJ1cHQtbmFtZXMgPSAibWMiOworCQlkcl9tb2RlID0gIm90ZyIKKwkJbWVudG9yLG11bHRpcG9pbnQgPSA8MT47CisJCW1lbnRvcixudW0tZXBzID0gPDE2PjsKKwkJbWVudG9yLHJhbS1iaXRzID0gPDEyPjsKKwkJbWVudG9yLHBvd2VyID0gPDUwMD47CisJCXBoeXMgPSA8JnVzYjBfcGh5PjsKKworCQlkbWFzID0gPCZjcHBpNDFkbWEgIDAgMCAmY3BwaTQxZG1hICAxIDAKKwkJCSZjcHBpNDFkbWEgIDIgMCAmY3BwaTQxZG1hICAzIDAKKwkJCSZjcHBpNDFkbWEgIDQgMCAmY3BwaTQxZG1hICA1IDAKKwkJCSZjcHBpNDFkbWEgIDYgMCAmY3BwaTQxZG1hICA3IDAKKwkJCSZjcHBpNDFkbWEgIDggMCAmY3BwaTQxZG1hICA5IDAKKwkJCSZjcHBpNDFkbWEgMTAgMCAmY3BwaTQxZG1hIDExIDAKKwkJCSZjcHBpNDFkbWEgMTIgMCAmY3BwaTQxZG1hIDEzIDAKKwkJCSZjcHBpNDFkbWEgMTQgMCAmY3BwaTQxZG1hICAwIDEKKwkJCSZjcHBpNDFkbWEgIDEgMSAmY3BwaTQxZG1hICAyIDEKKwkJCSZjcHBpNDFkbWEgIDMgMSAmY3BwaTQxZG1hICA0IDEKKwkJCSZjcHBpNDFkbWEgIDUgMSAmY3BwaTQxZG1hICA2IDEKKwkJCSZjcHBpNDFkbWEgIDcgMSAmY3BwaTQxZG1hICA4IDEKKwkJCSZjcHBpNDFkbWEgIDkgMSAmY3BwaTQxZG1hIDEwIDEKKwkJCSZjcHBpNDFkbWEgMTEgMSAmY3BwaTQxZG1hIDEyIDEKKwkJCSZjcHBpNDFkbWEgMTMgMSAmY3BwaTQxZG1hIDE0IDE+OworCQlkbWEtbmFtZXMgPQorCQkJInJ4MSIsICJyeDIiLCAicngzIiwgInJ4NCIsICJyeDUiLCAicng2IiwgInJ4NyIsCisJCQkicng4IiwgInJ4OSIsICJyeDEwIiwgInJ4MTEiLCAicngxMiIsICJyeDEzIiwKKwkJCSJyeDE0IiwgInJ4MTUiLAorCQkJInR4MSIsICJ0eDIiLCAidHgzIiwgInR4NCIsICJ0eDUiLCAidHg2IiwgInR4NyIsCisJCQkidHg4IiwgInR4OSIsICJ0eDEwIiwgInR4MTEiLCAidHgxMiIsICJ0eDEzIiwKKwkJCSJ0eDE0IiwgInR4MTUiOworCX07CisKKwl1c2IxX3BoeTogdXNiLXBoeUA0NzQwMWIwMCB7CisJCWNvbXBhdGlibGUgPSAidGksYW0zMzV4LXVzYi1waHkiOworCQlyZWcgPSA8MHg0NzQwMWIwMCAweDEwMD47CisJCXJlZy1uYW1lcyA9ICJwaHkiOworCQl0aSxjdHJsX21vZCA9IDwmY3RybF9tb2Q+OworCX07CisKKwl1c2IxOiB1c2JANDc0MDE4MDAgeworCQljb21wYXRpYmxlID0gInRpLG11c2ItYW0zM3h4IjsKKwkJcmVnID0gPDB4NDc0MDFjMDAgMHg0MDAKKwkJCTB4NDc0MDE4MDAgMHgyMDA+OworCQlyZWctbmFtZXMgPSAibWMiLCAiY29udHJvbCI7CisJCWludGVycnVwdHMgPSA8MTk+OworCQlpbnRlcnJ1cHQtbmFtZXMgPSAibWMiOworCQlkcl9tb2RlID0gImhvc3QiCisJCW1lbnRvcixtdWx0aXBvaW50ID0gPDE+OworCQltZW50b3IsbnVtLWVwcyA9IDwxNj47CisJCW1lbnRvcixyYW0tYml0cyA9IDwxMj47CisJCW1lbnRvcixwb3dlciA9IDw1MDA+OworCQlwaHlzID0gPCZ1c2IxX3BoeT47CisKKwkJZG1hcyA9IDwmY3BwaTQxZG1hIDE1IDAgJmNwcGk0MWRtYSAxNiAwCisJCQkmY3BwaTQxZG1hIDE3IDAgJmNwcGk0MWRtYSAxOCAwCisJCQkmY3BwaTQxZG1hIDE5IDAgJmNwcGk0MWRtYSAyMCAwCisJCQkmY3BwaTQxZG1hIDIxIDAgJmNwcGk0MWRtYSAyMiAwCisJCQkmY3BwaTQxZG1hIDIzIDAgJmNwcGk0MWRtYSAyNCAwCisJCQkmY3BwaTQxZG1hIDI1IDAgJmNwcGk0MWRtYSAyNiAwCisJCQkmY3BwaTQxZG1hIDI3IDAgJmNwcGk0MWRtYSAyOCAwCisJCQkmY3BwaTQxZG1hIDI5IDAgJmNwcGk0MWRtYSAxNSAxCisJCQkmY3BwaTQxZG1hIDE2IDEgJmNwcGk0MWRtYSAxNyAxCisJCQkmY3BwaTQxZG1hIDE4IDEgJmNwcGk0MWRtYSAxOSAxCisJCQkmY3BwaTQxZG1hIDIwIDEgJmNwcGk0MWRtYSAyMSAxCisJCQkmY3BwaTQxZG1hIDIyIDEgJmNwcGk0MWRtYSAyMyAxCisJCQkmY3BwaTQxZG1hIDI0IDEgJmNwcGk0MWRtYSAyNSAxCisJCQkmY3BwaTQxZG1hIDI2IDEgJmNwcGk0MWRtYSAyNyAxCisJCQkmY3BwaTQxZG1hIDI4IDEgJmNwcGk0MWRtYSAyOSAxPjsKKwkJZG1hLW5hbWVzID0KKwkJCSJyeDEiLCAicngyIiwgInJ4MyIsICJyeDQiLCAicng1IiwgInJ4NiIsICJyeDciLAorCQkJInJ4OCIsICJyeDkiLCAicngxMCIsICJyeDExIiwgInJ4MTIiLCAicngxMyIsCisJCQkicngxNCIsICJyeDE1IiwKKwkJCSJ0eDEiLCAidHgyIiwgInR4MyIsICJ0eDQiLCAidHg1IiwgInR4NiIsICJ0eDciLAorCQkJInR4OCIsICJ0eDkiLCAidHgxMCIsICJ0eDExIiwgInR4MTIiLCAidHgxMyIsCisJCQkidHgxNCIsICJ0eDE1IjsKKwl9OworCisJY3BwaTQxZG1hOiBkbWEtY29udHJvbGxlckAwNzQwMjAwMCB7CisJCWNvbXBhdGlibGUgPSAidGksYW0zMzU5LWNwcGk0MSI7CisJCXJlZyA9ICA8MHg0NzQwMDAwMCAweDEwMDAKKwkJCTB4NDc0MDIwMDAgMHgxMDAwCisJCQkweDQ3NDAzMDAwIDB4MTAwMAorCQkJMHg0NzQwNDAwMCAweDQwMDA+OworCQlyZWctbmFtZXMgPSAiZ2x1ZSIsICJjb250cm9sbGVyIiwgInNjaGVkdWxlciIsICJxdWV1ZW1nciI7CisJCWludGVycnVwdHMgPSA8MTc+OworCQlpbnRlcnJ1cHQtbmFtZXMgPSAiZ2x1ZSI7CisJCSNkbWEtY2VsbHMgPSA8Mj47CisJCSNkbWEtY2hhbm5lbHMgPSA8MzA+OworCQkjZG1hLXJlcXVlc3RzID0gPDI1Nj47CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL2F0bWVsLXVzYi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL2F0bWVsLXVzYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg4M2I3MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvYXRtZWwtdXNiLnR4dApAQCAtMCwwICsxLDE2NyBAQAorQXRtZWwgU09DIFVTQiBjb250cm9sbGVycworCitPSENJCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImF0bWVsLGF0OTFybTkyMDAtb2hjaSIgZm9yIFVTQiBjb250cm9sbGVycworICAgdXNlZCBpbiBob3N0IG1vZGUuCisgLSByZWc6IEFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlCisgLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBlaGNpIGludGVycnVwdAorIC0gY2xvY2tzOiBTaG91bGQgcmVmZXJlbmNlIHRoZSBwZXJpcGhlcmFsLCBob3N0IGFuZCBzeXN0ZW0gY2xvY2tzCisgLSBjbG9jay1uYW1lczogU2hvdWxkIGNvbnRhaW5zIHR3byBzdHJpbmdzCisJCSJvaGNpX2NsayIgZm9yIHRoZSBwZXJpcGhlcmFsIGNsb2NrCisJCSJoY2xrIiBmb3IgdGhlIGhvc3QgY2xvY2sKKwkJInVocGNrIiBmb3IgdGhlIHN5c3RlbSBjbG9jaworIC0gbnVtLXBvcnRzOiBOdW1iZXIgb2YgcG9ydHMuCisgLSBhdG1lbCx2YnVzLWdwaW86IElmIHByZXNlbnQsIHNwZWNpZmllcyBhIGdwaW8gdGhhdCBuZWVkcyB0byBiZQorICAgYWN0aXZhdGVkIGZvciB0aGUgYnVzIHRvIGJlIHBvd2VyZWQuCisgLSBhdG1lbCxvYy1ncGlvOiBJZiBwcmVzZW50LCBzcGVjaWZpZXMgYSBncGlvIHRoYXQgbmVlZHMgdG8gYmUKKyAgIGFjdGl2YXRlZCBmb3IgdGhlIG92ZXJjdXJyZW50IGRldGVjdGlvbi4KKwordXNiMDogb2hjaUAwMDUwMDAwMCB7CisJY29tcGF0aWJsZSA9ICJhdG1lbCxhdDkxcm05MjAwLW9oY2kiLCAidXNiLW9oY2kiOworCXJlZyA9IDwweDAwNTAwMDAwIDB4MTAwMDAwPjsKKwljbG9ja3MgPSA8JnVocGhzX2Nsaz4sIDwmdWhwaHNfY2xrPiwgPCZ1aHBjaz47CisJY2xvY2stbmFtZXMgPSAib2hjaV9jbGsiLCAiaGNsayIsICJ1aHBjayI7CisJaW50ZXJydXB0cyA9IDwyMCA0PjsKKwludW0tcG9ydHMgPSA8Mj47Cit9OworCitFSENJCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgImF0bWVsLGF0OTFzYW05ZzQ1LWVoY2kiIGZvciBVU0IgY29udHJvbGxlcnMKKyAgIHVzZWQgaW4gaG9zdCBtb2RlLgorIC0gcmVnOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorIC0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gZWhjaSBpbnRlcnJ1cHQKKyAtIGNsb2NrczogU2hvdWxkIHJlZmVyZW5jZSB0aGUgcGVyaXBoZXJhbCBhbmQgdGhlIFVUTUkgY2xvY2tzCisgLSBjbG9jay1uYW1lczogU2hvdWxkIGNvbnRhaW5zIHR3byBzdHJpbmdzCisJCSJlaGNpX2NsayIgZm9yIHRoZSBwZXJpcGhlcmFsIGNsb2NrCisJCSJ1c2JfY2xrIiBmb3IgdGhlIFVUTUkgY2xvY2sKKwordXNiMTogZWhjaUAwMDgwMDAwMCB7CisJY29tcGF0aWJsZSA9ICJhdG1lbCxhdDkxc2FtOWc0NS1laGNpIiwgInVzYi1laGNpIjsKKwlyZWcgPSA8MHgwMDgwMDAwMCAweDEwMDAwMD47CisJaW50ZXJydXB0cyA9IDwyMiA0PjsKKwljbG9ja3MgPSA8JnV0bWk+LCA8JnVocGhzX2Nsaz47CisJY2xvY2stbmFtZXMgPSAidXNiX2NsayIsICJlaGNpX2NsayI7Cit9OworCitBVDkxIFVTQiBkZXZpY2UgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZTogU2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nCisJICAgICAgICJhdG1lbCxhdDkxcm05MjAwLXVkYyIKKwkgICAgICAgImF0bWVsLGF0OTFzYW05MjYwLXVkYyIKKwkgICAgICAgImF0bWVsLGF0OTFzYW05MjYxLXVkYyIKKwkgICAgICAgImF0bWVsLGF0OTFzYW05MjYzLXVkYyIKKyAtIHJlZzogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKyAtIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIG1hY2IgaW50ZXJydXB0CisgLSBjbG9ja3M6IFNob3VsZCByZWZlcmVuY2UgdGhlIHBlcmlwaGVyYWwgYW5kIHRoZSBBSEIgY2xvY2tzCisgLSBjbG9jay1uYW1lczogU2hvdWxkIGNvbnRhaW5zIHR3byBzdHJpbmdzCisJCSJwY2xrIiBmb3IgdGhlIHBlcmlwaGVyYWwgY2xvY2sKKwkJImhjbGsiIGZvciB0aGUgQUhCIGNsb2NrCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgLSBhdG1lbCx2YnVzLWdwaW86IElmIHByZXNlbnQsIHNwZWNpZmllcyBhIGdwaW8gdGhhdCBuZWVkcyB0byBiZQorICAgYWN0aXZhdGVkIGZvciB0aGUgYnVzIHRvIGJlIHBvd2VyZWQuCisKK3VzYjE6IGdhZGdldEBmZmZhNDAwMCB7CisJY29tcGF0aWJsZSA9ICJhdG1lbCxhdDkxcm05MjAwLXVkYyI7CisJcmVnID0gPDB4ZmZmYTQwMDAgMHg0MDAwPjsKKwlpbnRlcnJ1cHRzID0gPDEwIDQ+OworCWNsb2NrcyA9IDwmdWRjX2Nsaz4sIDwmdWRwY2s+OworCWNsb2NrLW5hbWVzID0gInBjbGsiLCAiaGNsayI7CisJYXRtZWwsdmJ1cy1ncGlvID0gPCZwaW9DIDUgMD47Cit9OworCitBdG1lbCBIaWdoLVNwZWVkIFVTQiBkZXZpY2UgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZTogU2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nCisJICAgICAgICJhdG1lbCxhdDkxc2FtOXJsLXVkYyIKKwkgICAgICAgImF0bWVsLGF0OTFzYW05ZzQ1LXVkYyIKKwkgICAgICAgImF0bWVsLHNhbWE1ZDMtdWRjIgorIC0gcmVnOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorIC0gaW50ZXJydXB0czogU2hvdWxkIGNvbnRhaW4gdXNiYSBpbnRlcnJ1cHQKKyAtIGNsb2NrczogU2hvdWxkIHJlZmVyZW5jZSB0aGUgcGVyaXBoZXJhbCBhbmQgaG9zdCBjbG9ja3MKKyAtIGNsb2NrLW5hbWVzOiBTaG91bGQgY29udGFpbnMgdHdvIHN0cmluZ3MKKwkJInBjbGsiIGZvciB0aGUgcGVyaXBoZXJhbCBjbG9jaworCQkiaGNsayIgZm9yIHRoZSBob3N0IGNsb2NrCisgLSBlcCBjaGlsZG5vZGU6IFRvIHNwZWNpZnkgdGhlIG51bWJlciBvZiBlbmRwb2ludHMgYW5kIHRoZWlyIHByb3BlcnRpZXMuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgLSBhdG1lbCx2YnVzLWdwaW86IElmIHByZXNlbnQsIHNwZWNpZmllcyBhIGdwaW8gdGhhdCBhbGxvd3MgdG8gZGV0ZWN0IHdoZXRoZXIKKyAgIHZidXMgaXMgcHJlc2VudCAoVVNCIGlzIGNvbm5lY3RlZCkuCisKK1JlcXVpcmVkIGNoaWxkIG5vZGUgcHJvcGVydGllczoKKyAtIG5hbWU6IE5hbWUgb2YgdGhlIGVuZHBvaW50LgorIC0gcmVnOiBOdW0gb2YgdGhlIGVuZHBvaW50LgorIC0gYXRtZWwsZmlmby1zaXplOiBTaXplIG9mIHRoZSBmaWZvLgorIC0gYXRtZWwsbmItYmFua3M6IE51bWJlciBvZiBiYW5rcy4KKyAtIGF0bWVsLGNhbi1kbWE6IEJvb2xlYW4gdG8gc3BlY2lmeSBpZiB0aGUgZW5kcG9pbnQgc3VwcG9ydCBETUEuCisgLSBhdG1lbCxjYW4taXNvYzogQm9vbGVhbiB0byBzcGVjaWZ5IGlmIHRoZSBlbmRwb2ludCBzdXBwb3J0IElTT0MuCisKK3VzYjI6IGdhZGdldEBmZmY3ODAwMCB7CisJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJI3NpemUtY2VsbHMgPSA8MD47CisJY29tcGF0aWJsZSA9ICJhdG1lbCxhdDkxc2FtOXJsLXVkYyI7CisJcmVnID0gPDB4MDA2MDAwMDAgMHg4MDAwMAorCSAgICAgICAweGZmZjc4MDAwIDB4NDAwPjsKKwlpbnRlcnJ1cHRzID0gPDI3IDQgMD47CisJY2xvY2tzID0gPCZ1dG1pPiwgPCZ1ZHBoc19jbGs+OworCWNsb2NrLW5hbWVzID0gImhjbGsiLCAicGNsayI7CisJYXRtZWwsdmJ1cy1ncGlvID0gPCZwaW9CIDE5IDA+OworCisJZXAwIHsKKwkJcmVnID0gPDA+OworCQlhdG1lbCxmaWZvLXNpemUgPSA8NjQ+OworCQlhdG1lbCxuYi1iYW5rcyA9IDwxPjsKKwl9OworCisJZXAxIHsKKwkJcmVnID0gPDE+OworCQlhdG1lbCxmaWZvLXNpemUgPSA8MTAyND47CisJCWF0bWVsLG5iLWJhbmtzID0gPDI+OworCQlhdG1lbCxjYW4tZG1hOworCQlhdG1lbCxjYW4taXNvYzsKKwl9OworCisJZXAyIHsKKwkJcmVnID0gPDI+OworCQlhdG1lbCxmaWZvLXNpemUgPSA8MTAyND47CisJCWF0bWVsLG5iLWJhbmtzID0gPDI+OworCQlhdG1lbCxjYW4tZG1hOworCQlhdG1lbCxjYW4taXNvYzsKKwl9OworCisJZXAzIHsKKwkJcmVnID0gPDM+OworCQlhdG1lbCxmaWZvLXNpemUgPSA8MTAyND47CisJCWF0bWVsLG5iLWJhbmtzID0gPDM+OworCQlhdG1lbCxjYW4tZG1hOworCX07CisKKwllcDQgeworCQlyZWcgPSA8ND47CisJCWF0bWVsLGZpZm8tc2l6ZSA9IDwxMDI0PjsKKwkJYXRtZWwsbmItYmFua3MgPSA8Mz47CisJCWF0bWVsLGNhbi1kbWE7CisJfTsKKworCWVwNSB7CisJCXJlZyA9IDw1PjsKKwkJYXRtZWwsZmlmby1zaXplID0gPDEwMjQ+OworCQlhdG1lbCxuYi1iYW5rcyA9IDwzPjsKKwkJYXRtZWwsY2FuLWRtYTsKKwkJYXRtZWwsY2FuLWlzb2M7CisJfTsKKworCWVwNiB7CisJCXJlZyA9IDw2PjsKKwkJYXRtZWwsZmlmby1zaXplID0gPDEwMjQ+OworCQlhdG1lbCxuYi1iYW5rcyA9IDwzPjsKKwkJYXRtZWwsY2FuLWRtYTsKKwkJYXRtZWwsY2FuLWlzb2M7CisJfTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL2JyY20sYmNtMzM4NC11c2IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9icmNtLGJjbTMzODQtdXNiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTJjNDVjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9icmNtLGJjbTMzODQtdXNiLnR4dApAQCAtMCwwICsxLDExIEBACisqIEJyb2FkY29tIFVTQiBjb250cm9sbGVycworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiYnJjbSxiY20zMzg0LW9oY2kiLCAiYnJjbSxiY20zMzg0LWVoY2kiCisKKyAgVGhlc2UgY3VycmVudGx5IHVzZSB0aGUgZ2VuZXJpYy1vaGNpIGFuZCBnZW5lcmljLWVoY2kgZHJpdmVycy4gIE9uIHNvbWUKKyAgc3lzdGVtcywgc3BlY2lhbCBoYW5kbGluZyBtYXkgYmUgbmVlZGVkIGluIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisKKyAgLSBSZXN0b3Jpbmcgc3RhdGUgYWZ0ZXIgc3lzdGVtd2lkZSBwb3dlciBzYXZlIG1vZGVzCisgIC0gU2hhcmluZyBQSFlzIHdpdGggdGhlIFVTQkQgKFVEQykgaGFyZHdhcmUKKyAgLSBGaWd1cmluZyBvdXQgd2hpY2ggY29udHJvbGxlcnMgYXJlIGRpc2FibGVkIG9uIEFTSUMgYm9uZG91dCB2YXJpYW50cwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9jaS1oZHJjLXVzYjIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9jaS1oZHJjLXVzYjIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MTI5NmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL2NpLWhkcmMtdXNiMi50eHQKQEAgLTAsMCArMSw4MCBAQAorKiBVU0IyIENoaXBJZGVhIFVTQiBjb250cm9sbGVyIGZvciBjaTEzeHh4CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSBvbmUgb2Y6CisJImZzbCxpbXgyNy11c2IiCisJImxzaSx6ZXZpby11c2IiCisJInFjb20sY2ktaGRyYyIKKwkiY2hpcGlkZWEsdXNiMiIKKwkieGxueCx6eW5xLXVzYi0yLjIwYSIKKy0gcmVnOiBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXJzCistIGludGVycnVwdHM6IGludGVycnVwdCBmb3IgdGhlIFVTQiBjb250cm9sbGVyCisKK1JlY29tbWVuZGVkIHByb3BlcmllczoKKy0gcGh5X3R5cGU6IHRoZSB0eXBlIG9mIHRoZSBwaHkgY29ubmVjdGVkIHRvIHRoZSBjb3JlLiBTaG91bGQgYmUgb25lCisgIG9mICJ1dG1pIiwgInV0bWlfd2lkZSIsICJ1bHBpIiwgInNlcmlhbCIgb3IgImhzaWMiLiBXaXRob3V0IHRoaXMKKyAgcHJvcGVydHkgdGhlIFBPUlRTQyByZWdpc3RlciB3b24ndCBiZSB0b3VjaGVkLgorLSBkcl9tb2RlOiBPbmUgb2YgImhvc3QiLCAicGVyaXBoZXJhbCIgb3IgIm90ZyIuIERlZmF1bHRzIHRvICJvdGciCisKK0RlcHJlY2F0ZWQgcHJvcGVydGllczoKKy0gdXNiLXBoeTogICAgICBwaGFuZGxlIGZvciB0aGUgUEhZIGRldmljZS4gVXNlICJwaHlzIiBpbnN0ZWFkLgorLSBmc2wsdXNicGh5OiBwaGFuZGxlIG9mIHVzYiBwaHkgdGhhdCBjb25uZWN0cyB0byB0aGUgcG9ydC4gVXNlICJwaHlzIiBpbnN0ZWFkLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjbG9ja3M6IHJlZmVyZW5jZSB0byB0aGUgVVNCIGNsb2NrCistIHBoeXM6IHJlZmVyZW5jZSB0byB0aGUgVVNCIFBIWQorLSBwaHktbmFtZXM6IHNob3VsZCBiZSAidXNiLXBoeSIKKy0gdmJ1cy1zdXBwbHk6IHJlZmVyZW5jZSB0byB0aGUgVkJVUyByZWd1bGF0b3IKKy0gbWF4aW11bS1zcGVlZDogbGltaXQgdGhlIG1heGltdW0gY29ubmVjdGlvbiBzcGVlZCB0byAiZnVsbC1zcGVlZCIuCistIHRwbC1zdXBwb3J0OiBUUEwgKFRhcmdldGVkIFBlcmlwaGVyYWwgTGlzdCkgZmVhdHVyZSBmb3IgdGFyZ2V0ZWQgaG9zdHMKKy0gaXRjLXNldHRpbmc6IGludGVycnVwdCB0aHJlc2hvbGQgY29udHJvbCByZWdpc3RlciBjb250cm9sLCB0aGUgc2V0dGluZworICBzaG91bGQgYmUgYWxpZ25lZCB3aXRoIElUQyBiaXRzIGF0IHJlZ2lzdGVyIFVTQkNNRC4KKy0gYWhiLWJ1cnN0LWNvbmZpZzogaXQgaXMgdmVuZG9yIGRlcGVuZGVudCwgdGhlIHJlcXVpcmVkIHZhbHVlIHNob3VsZCBiZQorICBhbGlnbmVkIHdpdGggQUhCQlJTVCBhdCBTQlVTQ0ZHLCB0aGUgcmFuZ2UgaXMgZnJvbSAweDAgdG8gMHg3LiBUaGlzCisgIHByb3BlcnR5IGlzIHVzZWQgdG8gY2hhbmdlIEFIQiBidXJzdCBjb25maWd1cmF0aW9uLCBjaGVjayB0aGUgY2hpcGlkZWEKKyAgc3BlYyBmb3IgbWVhbmluZyBvZiBlYWNoIHZhbHVlLiBJZiB0aGlzIHByb3BlcnR5IGlzIG5vdCBleGlzdGVkLCBpdAorICB3aWxsIHVzZSB0aGUgcmVzZXQgdmFsdWUuCistIHR4LWJ1cnN0LXNpemUtZHdvcmQ6IGl0IGlzIHZlbmRvciBkZXBlbmRlbnQsIHRoZSB0eCBidXJzdCBzaXplIGluIGR3b3JkCisgICg0IGJ5dGVzKSwgVGhpcyByZWdpc3RlciByZXByZXNlbnRzIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIHRoZSBidXJzdAorICBpbiAzMi1iaXQgd29yZHMgd2hpbGUgbW92aW5nIGRhdGEgZnJvbSBzeXN0ZW0gbWVtb3J5IHRvIHRoZSBVU0IKKyAgYnVzLCB0aGUgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eSB3aWxsIG9ubHkgdGFrZSBlZmZlY3QgaWYgcHJvcGVydHkKKyAgImFoYi1idXJzdC1jb25maWciIGlzIHNldCB0byAwLCBpZiB0aGlzIHByb3BlcnR5IGlzIG1pc3NpbmcgdGhlIHJlc2V0CisgIGRlZmF1bHQgb2YgdGhlIGhhcmR3YXJlIGltcGxlbWVudGF0aW9uIHdpbGwgYmUgdXNlZC4KKy0gcngtYnVyc3Qtc2l6ZS1kd29yZDogaXQgaXMgdmVuZG9yIGRlcGVuZGVudCwgdGhlIHJ4IGJ1cnN0IHNpemUgaW4gZHdvcmQKKyAgKDQgYnl0ZXMpLCBUaGlzIHJlZ2lzdGVyIHJlcHJlc2VudHMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgdGhlIGJ1cnN0CisgIGluIDMyLWJpdCB3b3JkcyB3aGlsZSBtb3ZpbmcgZGF0YSBmcm9tIHRoZSBVU0IgYnVzIHRvIHN5c3RlbSBtZW1vcnksCisgIHRoZSB2YWx1ZSBvZiB0aGlzIHByb3BlcnR5IHdpbGwgb25seSB0YWtlIGVmZmVjdCBpZiBwcm9wZXJ0eQorICAiYWhiLWJ1cnN0LWNvbmZpZyIgaXMgc2V0IHRvIDAsIGlmIHRoaXMgcHJvcGVydHkgaXMgbWlzc2luZyB0aGUgcmVzZXQKKyAgZGVmYXVsdCBvZiB0aGUgaGFyZHdhcmUgaW1wbGVtZW50YXRpb24gd2lsbCBiZSB1c2VkLgorLSBleHRjb246IHBoYW5kbGVzIHRvIGV4dGVybmFsIGNvbm5lY3RvciBkZXZpY2VzLiBGaXJzdCBwaGFuZGxlIHNob3VsZCBwb2ludCB0bworICBleHRlcm5hbCBjb25uZWN0b3IsIHdoaWNoIHByb3ZpZGUgIlVTQiIgY2FibGUgZXZlbnRzLCB0aGUgc2Vjb25kIHNob3VsZCBwb2ludAorICB0byBleHRlcm5hbCBjb25uZWN0b3IgZGV2aWNlLCB3aGljaCBwcm92aWRlICJVU0ItSE9TVCIgY2FibGUgZXZlbnRzLiBJZiBvbmUKKyAgb2YgdGhlIGV4dGVybmFsIGNvbm5lY3RvciBkZXZpY2VzIGlzIG5vdCByZXF1aXJlZCwgZW1wdHkgPDA+IHBoYW5kbGUgc2hvdWxkCisgIGJlIHNwZWNpZmllZC4KKy0gcGh5LWNsa2dhdGUtZGVsYXktdXM6IHRoZSBkZWxheSB0aW1lICh1cykgYmV0d2VlbiBwdXR0aW5nIHRoZSBQSFkgaW50bworICBsb3cgcG93ZXIgbW9kZSBhbmQgZ2F0aW5nIHRoZSBQSFkgY2xvY2suCisKK2kubXggc3BlY2lmaWMgcHJvcGVydGllcworLSBmc2wsdXNibWlzYzogcGhhbmRsZXIgb2Ygbm9uLWNvcmUgcmVnaXN0ZXIgZGV2aWNlLCB3aXRoIG9uZQorICBhcmd1bWVudCB0aGF0IGluZGljYXRlIHVzYiBjb250cm9sbGVyIGluZGV4CistIGRpc2FibGUtb3Zlci1jdXJyZW50OiBkaXNhYmxlIG92ZXIgY3VycmVudCBkZXRlY3QKKy0gZXh0ZXJuYWwtdmJ1cy1kaXZpZGVyOiBlbmFibGVzIG9mZi1jaGlwIHJlc2lzdG9yIGRpdmlkZXIgZm9yIFZidXMKKworRXhhbXBsZToKKworCXVzYkBmN2VkMDAwMCB7CisJCWNvbXBhdGlibGUgPSAiY2hpcGlkZWEsdXNiMiI7CisJCXJlZyA9IDwweGY3ZWQwMDAwIDB4MTAwMDA+OworCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMTEgSVJRX1RZUEVfTEVWRUxfSElHSD47CisJCWNsb2NrcyA9IDwmY2hpcCBDTEtJRF9VU0IwPjsKKwkJcGh5cyA9IDwmdXNiX3BoeTA+OworCQlwaHktbmFtZXMgPSAidXNiLXBoeSI7CisJCXZidXMtc3VwcGx5ID0gPCZyZWdfdXNiMF92YnVzPjsKKwkJZ2FkZ2V0LWl0Yy1zZXR0aW5nID0gPDB4ND47IC8qIDQgbWljcm8tZnJhbWVzICovCisJCSAvKiBJbmNyZW1lbnRhbCBidXJzdCBvZiB1bnNwZWNpZmllZCBsZW5ndGggKi8KKwkJYWhiLWJ1cnN0LWNvbmZpZyA9IDwweDA+OworCQl0eC1idXJzdC1zaXplLWR3b3JkID0gPDB4MTA+OyAvKiA2NCBieXRlcyAqLworCQlyeC1idXJzdC1zaXplLWR3b3JkID0gPDB4MTA+OworCQlleHRjb24gPSA8MD4sIDwmdXNiX2lkPjsKKwkJcGh5LWNsa2dhdGUtZGVsYXktdXMgPSA8NDAwPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9kd2MyLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvZHdjMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQxMzJjYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvZHdjMi50eHQKQEAgLTAsMCArMSwzOCBAQAorUGxhdGZvcm0gRGVzaWduV2FyZSBIUyBPVEcgVVNCIDIuMCBjb250cm9sbGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogT25lIG9mOgorICAtIGJyY20sYmNtMjgzNS11c2I6IFRoZSBEV0MyIFVTQiBjb250cm9sbGVyIGluc3RhbmNlIGluIHRoZSBCQ00yODM1IFNvQy4KKyAgLSByb2NrY2hpcCxyazMwNjYtdXNiOiBUaGUgRFdDMiBVU0IgY29udHJvbGxlciBpbnN0YW5jZSBpbiB0aGUgcmszMDY2IFNvYzsKKyAgLSAicm9ja2NoaXAscmszMTg4LXVzYiIsICJyb2NrY2hpcCxyazMwNjYtdXNiIiwgInNucHMsZHdjMiI6IGZvciByazMxODggU29jOworICAtICJyb2NrY2hpcCxyazMyODgtdXNiIiwgInJvY2tjaGlwLHJrMzA2Ni11c2IiLCAic25wcyxkd2MyIjogZm9yIHJrMzI4OCBTb2M7CisgIC0gc25wcyxkd2MyOiBBIGdlbmVyaWMgRFdDMiBVU0IgY29udHJvbGxlciB3aXRoIGRlZmF1bHQgcGFyYW1ldGVycy4KKy0gcmVnIDogU2hvdWxkIGNvbnRhaW4gMSByZWdpc3RlciByYW5nZSAoYWRkcmVzcyBhbmQgbGVuZ3RoKQorLSBpbnRlcnJ1cHRzIDogU2hvdWxkIGNvbnRhaW4gMSBpbnRlcnJ1cHQKKy0gY2xvY2tzOiBjbG9jayBwcm92aWRlciBzcGVjaWZpZXIKKy0gY2xvY2stbmFtZXM6IHNoYWxsIGJlICJvdGciCitSZWZlciB0byBjbGsvY2xvY2stYmluZGluZ3MudHh0IGZvciBnZW5lcmljIGNsb2NrIGNvbnN1bWVyIHByb3BlcnRpZXMKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gcGh5czogcGh5IHByb3ZpZGVyIHNwZWNpZmllcgorLSBwaHktbmFtZXM6IHNoYWxsIGJlICJ1c2IyLXBoeSIKK1JlZmVyIHRvIHBoeS9waHktYmluZGluZ3MudHh0IGZvciBnZW5lcmljIHBoeSBjb25zdW1lciBwcm9wZXJ0aWVzCistIGRyX21vZGU6IHNoYWxsIGJlIG9uZSBvZiAiaG9zdCIsICJwZXJpcGhlcmFsIiBhbmQgIm90ZyIKKyAgUmVmZXIgdG8gdXNiL2dlbmVyaWMudHh0CistIGctdXNlLWRtYTogZW5hYmxlIGRtYSB1c2FnZSBpbiBnYWRnZXQgZHJpdmVyLgorLSBnLXJ4LWZpZm8tc2l6ZTogc2l6ZSBvZiByeCBmaWZvIHNpemUgaW4gZ2FkZ2V0IG1vZGUuCistIGctbnAtdHgtZmlmby1zaXplOiBzaXplIG9mIG5vbi1wZXJpb2RpYyB0eCBmaWZvIHNpemUgaW4gZ2FkZ2V0IG1vZGUuCistIGctdHgtZmlmby1zaXplOiBzaXplIG9mIHBlcmlvZGljIHR4IGZpZm8gcGVyIGVuZHBvaW50IChleGNlcHQgZXAwKSBpbiBnYWRnZXQgbW9kZS4KKworRXhhbXBsZToKKworICAgICAgICB1c2JAMTAxYzAwMDAgeworICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAicmFsaW5rLHJ0MzA1MC11c2IsIHNucHMsZHdjMiI7CisgICAgICAgICAgICAgICAgcmVnID0gPDB4MTAxYzAwMDAgNDAwMDA+OworICAgICAgICAgICAgICAgIGludGVycnVwdHMgPSA8MTg+OworCQljbG9ja3MgPSA8JnVzYl9vdGdfYWhiX2Nsaz47CisJCWNsb2NrLW5hbWVzID0gIm90ZyI7CisJCXBoeXMgPSA8JnVzYnBoeT47CisJCXBoeS1uYW1lcyA9ICJ1c2IyLXBoeSI7CisgICAgICAgIH07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL2R3YzMtc3QudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9kd2MzLXN0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWM3MWIxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9kd2MzLXN0LnR4dApAQCAtMCwwICsxLDY3IEBACitTVCBEV0MzIGdsdWUgbG9naWMKKworVGhpcyBmaWxlIGRvY3VtZW50cyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGR3YzMtc3QgZHJpdmVyLgorVGhpcyBkcml2ZXIgY29udHJvbHMgdGhlIGdsdWUgbG9naWMgdXNlZCB0byBjb25maWd1cmUgdGhlIGR3YzMgY29yZSBvbgorU1RpSDQwNyBiYXNlZCBwbGF0Zm9ybXMuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlCTogbXVzdCBiZSAic3Qsc3RpaDQwNy1kd2MzIgorIC0gcmVnCQk6IGdsdWUgbG9naWMgYmFzZSBhZGRyZXNzIGFuZCBVU0Igc3lzY2ZnIGN0cmwgcmVnaXN0ZXIgb2Zmc2V0CisgLSByZWctbmFtZXMJOiBzaG91bGQgYmUgInJlZy1nbHVlIiBhbmQgInN5c2NmZy1yZWciCisgLSBzdCxzeXNjb24JOiBzaG91bGQgYmUgcGhhbmRsZSB0byBzeXN0ZW0gY29uZmlndXJhdGlvbiBub2RlIHdoaWNoCisJCSAgZW5jb21wYXNzZXMgdGhlIGdsdWUgcmVnaXN0ZXJzCisgLSByZXNldHMJOiBsaXN0IG9mIHBoYW5kbGUgYW5kIHJlc2V0IHNwZWNpZmllciBwYWlycy4gVGhlcmUgc2hvdWxkIGJlIHR3byBlbnRyaWVzLCBvbmUKKwkJICBmb3IgdGhlIHBvd2VyZG93biBhbmQgc29mdHJlc2V0IGxpbmVzIG9mIHRoZSB1c2IzIElQCisgLSByZXNldC1uYW1lcwk6IGxpc3Qgb2YgcmVzZXQgc2lnbmFsIG5hbWVzLiBOYW1lcyBzaG91bGQgYmUgInBvd2VyZG93biIgYW5kICJzb2Z0cmVzZXQiCitTZWU6IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9zdCxzdGktcG93ZXJkb3duLnR4dAorU2VlOiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVzZXQvcmVzZXQudHh0CisKKyAtICNhZGRyZXNzLWNlbGxzLCAjc2l6ZS1jZWxscyA6IHNob3VsZCBiZSAnMScgaWYgdGhlIGRldmljZSBoYXMgc3ViLW5vZGVzCisgICB3aXRoICdyZWcnIHByb3BlcnR5CisKKyAtIHBpbmN0bC1uYW1lcwk6IEEgcGluY3RybCBzdGF0ZSBuYW1lZCAiZGVmYXVsdCIgbXVzdCBiZSBkZWZpbmVkCitTZWU6IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3BpbmN0cmwtYmluZGluZy50eHQKKworIC0gcGluY3RybC0wCTogUGluIGNvbnRyb2wgZ3JvdXAKK1NlZTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcGluY3RybC1iaW5kaW5nLnR4dAorCisgLSByYW5nZXMJOiBhbGxvd3MgdmFsaWQgMToxIHRyYW5zbGF0aW9uIGJldHdlZW4gY2hpbGQncyBhZGRyZXNzIHNwYWNlIGFuZAorCQkgIHBhcmVudCdzIGFkZHJlc3Mgc3BhY2UKKworU3ViLW5vZGVzOgorVGhlIGR3YzMgY29yZSBzaG91bGQgYmUgYWRkZWQgYXMgc3Vibm9kZSB0byBTVCBEV0MzIGdsdWUgYXMgc2hvd24gaW4gdGhlCitleGFtcGxlIGJlbG93LiBUaGUgRFQgYmluZGluZyBkZXRhaWxzIG9mIGR3YzMgY2FuIGJlIGZvdW5kIGluOgorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9kd2MzLnR4dAorCitOQjogVGhlIGRyX21vZGUgcHJvcGVydHkgZGVzY3JpYmVkIGluIFsxXSBpcyBOT1Qgb3B0aW9uYWwgZm9yIHRoaXMgZHJpdmVyLCBhcyB0aGUgZGVmYXVsdCB2YWx1ZQoraXMgIm90ZyIsIHdoaWNoIGlzbid0IHN1cHBvcnRlZCBieSB0aGlzIFNvQy4gVmFsaWQgZHJfbW9kZSB2YWx1ZXMgZm9yIGR3YzMtc3QgYXJlIGVpdGhlciAiaG9zdCIKK29yICJkZXZpY2UiLgorCitbMV0gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9nZW5lcmljLnR4dAorCitFeGFtcGxlOgorCitzdF9kd2MzOiBkd2MzQDhmOTQwMDAgeworCXN0YXR1cwkJPSAiZGlzYWJsZWQiOworCWNvbXBhdGlibGUJPSAic3Qsc3RpaDQwNy1kd2MzIjsKKwlyZWcJCT0gPDB4MDhmOTQwMDAgMHgxMDAwPiwgPDB4MTEwIDB4ND47CisJcmVnLW5hbWVzCT0gInJlZy1nbHVlIiwgInN5c2NmZy1yZWciOworCXN0LHN5c2NmZwk9IDwmc3lzY2ZnX2NvcmU+OworCXJlc2V0cwkJPSA8JnBvd2VyZG93biBTVElINDA3X1VTQjNfUE9XRVJET1dOPiwKKwkJCSAgPCZzb2Z0cmVzZXQgU1RJSDQwN19NSVBIWTJfU09GVFJFU0VUPjsKKwlyZXNldC1uYW1lcwk9ICJwb3dlcmRvd24iLCAic29mdHJlc2V0IjsKKwkjYWRkcmVzcy1jZWxscwk9IDwxPjsKKwkjc2l6ZS1jZWxscwk9IDwxPjsKKwlwaW5jdHJsLW5hbWVzCT0gImRlZmF1bHQiOworCXBpbmN0cmwtMAk9IDwmcGluY3RybF91c2IzPjsKKwlyYW5nZXM7CisKKwlkd2MzOiBkd2MzQDk5MDAwMDAgeworCQljb21wYXRpYmxlCT0gInNucHMsZHdjMyI7CisJCXJlZwkJPSA8MHgwOTkwMDAwMCAweDEwMDAwMD47CisJCWludGVycnVwdHMJPSA8R0lDX1NQSSAxNTUgSVJRX1RZUEVfTk9ORT47CisJCWRyX21vZGUJCT0gImhvc3QiOworCQlwaHktbmFtZXMJPSAidXNiMi1waHkiLCAidXNiMy1waHkiOworCQlwaHlzCQk9IDwmdXNiMl9waWNvcGh5Mj4sIDwmcGh5X3BvcnQyIFBIWV9UWVBFX1VTQjM+OworCX07Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9kd2MzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvZHdjMy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIyYWQwYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvZHdjMy50eHQKQEAgLTAsMCArMSw1OCBAQAorc3lub3BzeXMgRFdDMyBDT1JFCisKK0RXQzMtIFVTQjMgQ09OVFJPTExFUi4gQ29tcGxpZXMgdG8gdGhlIGdlbmVyaWMgVVNCIGJpbmRpbmcgcHJvcGVydGllcworICAgICAgYXMgZGVzY3JpYmVkIGluICd1c2IvZ2VuZXJpYy50eHQnCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgLSBjb21wYXRpYmxlOiBtdXN0IGJlICJzbnBzLGR3YzMiCisgLSByZWcgOiBBZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorIC0gaW50ZXJydXB0czogSW50ZXJydXB0cyB1c2VkIGJ5IHRoZSBkd2MzIGNvbnRyb2xsZXIuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgLSB1c2ItcGh5IDogYXJyYXkgb2YgcGhhbmRsZSBmb3IgdGhlIFBIWSBkZXZpY2UuICBUaGUgZmlyc3QgZWxlbWVudAorICAgaW4gdGhlIGFycmF5IGlzIGV4cGVjdGVkIHRvIGJlIGEgaGFuZGxlIHRvIHRoZSBVU0IyL0hTIFBIWSBhbmQKKyAgIHRoZSBzZWNvbmQgZWxlbWVudCBpcyBleHBlY3RlZCB0byBiZSBhIGhhbmRsZSB0byB0aGUgVVNCMy9TUyBQSFkKKyAtIHBoeXM6IGZyb20gdGhlICpHZW5lcmljIFBIWSogYmluZGluZ3MKKyAtIHBoeS1uYW1lczogZnJvbSB0aGUgKkdlbmVyaWMgUEhZKiBiaW5kaW5ncworIC0gdHgtZmlmby1yZXNpemU6IGRldGVybWluZXMgaWYgdGhlIEZJRk8gKmhhcyogdG8gYmUgcmVhbGxvY2F0ZWQuCisgLSBzbnBzLHVzYjNfbHBtX2NhcGFibGU6IGRldGVybWluZXMgaWYgcGxhdGZvcm0gaXMgVVNCMyBMUE0gY2FwYWJsZQorIC0gc25wcyxkaXNhYmxlX3NjcmFtYmxlX3F1aXJrOiB0cnVlIHdoZW4gU1cgc2hvdWxkIGRpc2FibGUgZGF0YSBzY3JhbWJsaW5nLgorCU9ubHkgcmVhbGx5IHVzZWZ1bCBmb3IgRlBHQSBidWlsZHMuCisgLSBzbnBzLGhhcy1scG0tZXJyYXR1bTogdHJ1ZSB3aGVuIERXQzMgd2FzIGNvbmZpZ3VyZWQgd2l0aCBMUE0gRXJyYXR1bSBlbmFibGVkCisgLSBzbnBzLGxwbS1ueWV0LXRocmVzaG9sZDogTFBNIE5ZRVQgdGhyZXNob2xkCisgLSBzbnBzLHUyZXhpdF9sZnBzX3F1aXJrOiBzZXQgaWYgd2Ugd2FudCB0byBlbmFibGUgdTJleGl0IGxmcHMgcXVpcmsKKyAtIHNucHMsdTJzc19pbnAzX3F1aXJrOiBzZXQgaWYgd2UgZW5hYmxlIFAzIE9LIGZvciBVMi9TUyBJbmFjdGl2ZSBxdWlyaworIC0gc25wcyxyZXFfcDFwMnAzX3F1aXJrOiB3aGVuIHNldCwgdGhlIGNvcmUgd2lsbCBhbHdheXMgcmVxdWVzdCBmb3IKKwkJCVAxL1AyL1AzIHRyYW5zaXRpb24gc2VxdWVuY2UuCisgLSBzbnBzLGRlbF9wMXAycDNfcXVpcms6IHdoZW4gc2V0IGNvcmUgd2lsbCBkZWxheSBQMS9QMi9QMyB1bnRpbCBhIGNlcnRhaW4KKwkJCWFtb3VudCBvZiA4QjEwQiBlcnJvcnMgb2NjdXIuCisgLSBzbnBzLGRlbF9waHlfcG93ZXJfY2hnX3F1aXJrOiB3aGVuIHNldCBjb3JlIHdpbGwgZGVsYXkgUEhZIHBvd2VyIGNoYW5nZQorCQkJZnJvbSBQMCB0byBQMS9QMi9QMy4KKyAtIHNucHMsbGZwc19maWx0ZXJfcXVpcms6IHdoZW4gc2V0IGNvcmUgd2lsbCBmaWx0ZXIgTEZQUyByZWNlcHRpb24uCisgLSBzbnBzLHJ4X2RldGVjdF9wb2xsX3F1aXJrOiB3aGVuIHNldCBjb3JlIHdpbGwgZGlzYWJsZSBhIDQwMHVzIGRlbGF5IHRvIHN0YXJ0CisJCQlQb2xsaW5nIExGUFMgYWZ0ZXIgUlguRGV0ZWN0LgorIC0gc25wcyx0eF9kZV9lbXBoYXNpc19xdWlyazogd2hlbiBzZXQgY29yZSB3aWxsIHNldCBUeCBkZS1lbXBoYXNpcyB2YWx1ZS4KKyAtIHNucHMsdHhfZGVfZW1waGFzaXM6IHRoZSB2YWx1ZSBkcml2ZW4gdG8gdGhlIFBIWSBpcyBjb250cm9sbGVkIGJ5IHRoZQorCQkJTFRTU00gZHVyaW5nIFVTQjMgQ29tcGxpYW5jZSBtb2RlLgorIC0gc25wcyxkaXNfdTNfc3VzcGh5X3F1aXJrOiB3aGVuIHNldCBjb3JlIHdpbGwgZGlzYWJsZSBVU0IzIHN1c3BlbmQgcGh5LgorIC0gc25wcyxkaXNfdTJfc3VzcGh5X3F1aXJrOiB3aGVuIHNldCBjb3JlIHdpbGwgZGlzYWJsZSBVU0IyIHN1c3BlbmQgcGh5LgorIC0gc25wcyxkaXNfZW5ibHNscG1fcXVpcms6IHdoZW4gc2V0IGNsZWFycyB0aGUgZW5ibHNscG0gaW4gR1VTQjJQSFlDRkcsCisJCQlkaXNhYmxpbmcgdGhlIHN1c3BlbmQgc2lnbmFsIHRvIHRoZSBQSFkuCisgLSBzbnBzLGlzLXV0bWktbDEtc3VzcGVuZDogdHJ1ZSB3aGVuIERXQzMgYXNzZXJ0cyBvdXRwdXQgc2lnbmFsCisJCQl1dG1pX2wxX3N1c3BlbmRfbiwgZmFsc2Ugd2hlbiBhc3NlcnRzIHV0bWlfc2xlZXBfbgorIC0gc25wcyxoaXJkLXRocmVzaG9sZDogSElSRCB0aHJlc2hvbGQKKyAtIHNucHMsaHNwaHlfaW50ZXJmYWNlOiBIaWdoLVNwZWVkIFBIWSBpbnRlcmZhY2Ugc2VsZWN0aW9uIGJldHdlZW4gInV0bWkiIGZvcgorICAgVVRNSSsgYW5kICJ1bHBpIiBmb3IgVUxQSSB3aGVuIHRoZSBEV0NfVVNCM19IU1BIWV9JTlRFUkZBQ0UgaGFzIHZhbHVlIDMuCisgLSBzbnBzLHF1aXJrLWZyYW1lLWxlbmd0aC1hZGp1c3RtZW50OiBWYWx1ZSBmb3IgR0ZMQURKXzMwTUhaIGZpZWxkIG9mIEdGTEFESgorCXJlZ2lzdGVyIGZvciBwb3N0LXNpbGljb24gZnJhbWUgbGVuZ3RoIGFkanVzdG1lbnQgd2hlbiB0aGUKKwlmbGFkal8zMG1oel9zZGJuZCBzaWduYWwgaXMgaW52YWxpZCBvciBpbmNvcnJlY3QuCisKK1RoaXMgaXMgdXN1YWxseSBhIHN1Ym5vZGUgdG8gRFdDMyBnbHVlIHRvIHdoaWNoIGl0IGlzIGNvbm5lY3RlZC4KKworZHdjM0A0YTAzMDAwMCB7CisJY29tcGF0aWJsZSA9ICJzbnBzLGR3YzMiOworCXJlZyA9IDwweDRhMDMwMDAwIDB4Y2ZmZj47CisJaW50ZXJydXB0cyA9IDwwIDkyIDQ+CisJdXNiLXBoeSA9IDwmdXNiMl9waHk+LCA8JnVzYjMscGh5PjsKKwl0eC1maWZvLXJlc2l6ZTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL2VoY2ktb21hcC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL2VoY2ktb21hcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RjMjMxYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvZWhjaS1vbWFwLnR4dApAQCAtMCwwICsxLDMyIEBACitPTUFQIEhTIFVTQiBFSENJIGNvbnRyb2xsZXIKKworVGhpcyBkZXZpY2UgaXMgdXN1YWxseSB0aGUgY2hpbGQgb2YgdGhlIG9tYXAtdXNiLWhvc3QKK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvb21hcC11c2ItaG9zdC50eHQKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgInRpLGVoY2ktb21hcCIKKy0gcmVnOiBzaG91bGQgY29udGFpbiBvbmUgcmVnaXN0ZXIgcmFuZ2UgaS5lLiBzdGFydCBhbmQgbGVuZ3RoCistIGludGVycnVwdHM6IGRlc2NyaXB0aW9uIG9mIHRoZSBpbnRlcnJ1cHQgbGluZQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIHBoeXM6IGxpc3Qgb2YgcGhhbmRsZXMgdG8gUEhZIG5vZGVzLgorICBUaGlzIHByb3BlcnR5IGlzIHJlcXVpcmVkIGlmIGF0IGxlYXN0IG9uZSBvZiB0aGUgcG9ydHMgYXJlIGluCisgIFBIWSBtb2RlIGkuZS4gT01BUF9FSENJX1BPUlRfTU9ERV9QSFkKKworVG8gc3BlY2lmeSB0aGUgcG9ydCBtb2RlLCBzZWUKK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvb21hcC11c2ItaG9zdC50eHQKKworRXhhbXBsZSBmb3IgT01BUDQ6CisKK3VzYmhzZWhjaTogZWhjaUA0YTA2NGMwMCB7CisJY29tcGF0aWJsZSA9ICJ0aSxlaGNpLW9tYXAiOworCXJlZyA9IDwweDRhMDY0YzAwIDB4NDAwPjsKKwlpbnRlcnJ1cHRzID0gPDAgNzcgMHg0PjsKK307CisKKyZ1c2Joc2VoY2kgeworCXBoeXMgPSA8JmhzdXNiMV9waHkgMCAmaHN1c2IzX3BoeT47Cit9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL2VoY2ktb3Jpb24udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9laGNpLW9yaW9uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2MzYmM4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9laGNpLW9yaW9uLnR4dApAQCAtMCwwICsxLDIwIEBACisqIEVIQ0kgY29udHJvbGxlciwgT3Jpb24gTWFydmVsbCB2YXJpYW50cworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBtdXN0IGJlICJtYXJ2ZWxsLG9yaW9uLWVoY2kiCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICByZWdpb24uCistIGludGVycnVwdHM6IFRoZSBFSENJIGludGVycnVwdAorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBjbG9ja3M6IHJlZmVyZW5jZSB0byB0aGUgY2xvY2sKKy0gcGh5czogcmVmZXJlbmNlIHRvIHRoZSBVU0IgUEhZCistIHBoeS1uYW1lczogbmFtZSBvZiB0aGUgVVNCIFBIWSwgc2hvdWxkIGJlICJ1c2IiCisKK0V4YW1wbGU6CisKKwllaGNpQDUwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLG9yaW9uLWVoY2kiOworCQlyZWcgPSA8MHg1MDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHRzID0gPDE5PjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9laGNpLXN0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvZWhjaS1zdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI0NWZhNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvZWhjaS1zdC50eHQKQEAgLTAsMCArMSwzOSBAQAorU1QgVVNCIEVIQ0kgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZQkJOiBtdXN0IGJlICJzdCxzdC1laGNpLTMwMHgiCisgLSByZWcJCQk6IHBoeXNpY2FsIGJhc2UgYWRkcmVzc2VzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorCQkJICByZWdpb24KKyAtIGludGVycnVwdHMJCTogb25lIEVIQ0kgaW50ZXJydXB0IHNob3VsZCBiZSBkZXNjcmliZWQgaGVyZQorIC0gcGluY3RybC1uYW1lcwk6IGEgcGluY3RybCBzdGF0ZSBuYW1lZCAiZGVmYXVsdCIgbXVzdCBiZSBkZWZpbmVkCisgLSBwaW5jdHJsLTAJCTogcGhhbmRsZSByZWZlcmVuY2luZyBwaW4gY29uZmlndXJhdGlvbiBvZiB0aGUgVVNCIGNvbnRyb2xsZXIKK1NlZTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcGluY3RybC1iaW5kaW5nLnR4dAorIC0gY2xvY2tzCQk6IHBoYW5kbGUgbGlzdCBvZiB1c2IgY2xvY2tzCisgLSBjbG9jay1uYW1lcwkJOiBzaG91bGQgYmUgImljIiBmb3IgaW50ZXJjb25uZWN0IGNsb2NrIGFuZCAiY2xrNDgiCitTZWU6IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9jbG9jay1iaW5kaW5ncy50eHQKKworIC0gcGh5cwkJCTogcGhhbmRsZSBmb3IgdGhlIFBIWSBkZXZpY2UKKyAtIHBoeS1uYW1lcwkJOiBzaG91bGQgYmUgInVzYiIKKyAtIHJlc2V0cwkJOiBwaGFuZGxlICsgcmVzZXQgc3BlY2lmaWVyIHBhaXJzIHRvIHRoZSBwb3dlcmRvd24gYW5kIHNvZnRyZXNldCBsaW5lcworCQkJICBvZiB0aGUgVVNCIElQCisgLSByZXNldC1uYW1lcwkJOiBzaG91bGQgYmUgInBvd2VyIiBhbmQgInNvZnRyZXNldCIKK1NlZTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Jlc2V0L3N0LHN0aS1wb3dlcmRvd24udHh0CitTZWU6IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9yZXNldC50eHQKKworRXhhbXBsZToKKworCWVoY2kxOiB1c2JAMHhmZTIwM2UwMCB7CisJCWNvbXBhdGlibGUgPSAic3Qsc3QtZWhjaS0zMDB4IjsKKwkJcmVnID0gPDB4ZmUyMDNlMDAgMHgxMDA+OworCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMTQ4IElSUV9UWVBFX05PTkU+OworCQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOworCQlwaW5jdHJsLTAgPSA8JnBpbmN0cmxfdXNiMT47CisJCWNsb2NrcyA9IDwmY2xrX3NfYTFfbHMgMD47CisJCXBoeXMgPSA8JnVzYjJfcGh5PjsKKwkJcGh5LW5hbWVzID0gInVzYiI7CisJCXN0YXR1cyA9ICJva2F5IjsKKworCQlyZXNldHMgPSA8JnBvd2VyZG93biBTVElINDE2X1VTQjFfUE9XRVJET1dOPiwKKwkJCSA8JnNvZnRyZXNldCBTVElINDE2X1VTQjFfU09GVFJFU0VUPjsKKwkJcmVzZXQtbmFtZXMgPSAicG93ZXIiLCAic29mdHJlc2V0IjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9leHlub3MtdXNiLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvZXh5bm9zLXVzYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI0ZGJlMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvZXh5bm9zLXVzYi50eHQKQEAgLTAsMCArMSwxMTcgQEAKK1NhbXN1bmcgRXh5bm9zIFNvQyBVU0IgY29udHJvbGxlcgorCitUaGUgVVNCIGRldmljZXMgaW50ZXJmYWNlIHdpdGggVVNCIGNvbnRyb2xsZXJzIG9uIEV4eW5vcyBTT0NzLgorVGhlIGRldmljZSBub2RlIGhhcyBmb2xsb3dpbmcgcHJvcGVydGllcy4KKworRUhDSQorUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGU6IHNob3VsZCBiZSAic2Ftc3VuZyxleHlub3M0MjEwLWVoY2kiIGZvciBVU0IgMi4wCisgICBFSENJIGNvbnRyb2xsZXIgaW4gaG9zdCBtb2RlLgorIC0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgICByZWdpb24uCisgLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgbnVtYmVyIHRvIHRoZSBjcHUuCisgLSBjbG9ja3M6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc6IGhhbmRsZSB0byB1c2IgY2xvY2suCisgLSBjbG9jay1uYW1lczogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzogU2hhbGwgYmUgInVzYmhvc3QiLgorIC0gcG9ydDogaWYgaW4gdGhlIFNvQyB0aGVyZSBhcmUgRUhDSSBwaHlzLCB0aGV5IHNob3VsZCBiZSBsaXN0ZWQgaGVyZS4KKyAgIE9uZSBwaHkgcGVyIHBvcnQuIEVhY2ggcG9ydCBzaG91bGQgaGF2ZSBmb2xsb3dpbmcgZW50cmllczoKKwktIHJlZzogcG9ydCBudW1iZXIgb24gRUhDSSBjb250cm9sbGVyLCBlLmcKKwkgICAgICAgT24gRXh5bm9zNTI1MCwgcG9ydCAwIGlzIFVTQjIuMCBvdGcgcGh5CisJCQkgICAgICBwb3J0IDEgaXMgSFNJQyBwaHkwCisJCQkgICAgICBwb3J0IDIgaXMgSFNJQyBwaHkxCisJLSBwaHlzOiBmcm9tIHRoZSAqR2VuZXJpYyBQSFkqIGJpbmRpbmdzOyBzcGVjaWZ5aW5nIHBoeSB1c2VkIGJ5IHBvcnQuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgLSBzYW1zdW5nLHZidXMtZ3BpbzogIGlmIHByZXNlbnQsIHNwZWNpZmllcyB0aGUgR1BJTyB0aGF0CisgICBuZWVkcyB0byBiZSBwdWxsZWQgdXAgZm9yIHRoZSBidXMgdG8gYmUgcG93ZXJlZC4KKworRXhhbXBsZToKKworCXVzYkAxMjExMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M0MjEwLWVoY2kiOworCQlyZWcgPSA8MHgxMjExMDAwMCAweDEwMD47CisJCWludGVycnVwdHMgPSA8MCA3MSAwPjsKKwkJc2Ftc3VuZyx2YnVzLWdwaW8gPSA8JmdweDIgNiAxIDMgMz47CisKKwkJY2xvY2tzID0gPCZjbG9jayAyODU+OworCQljbG9jay1uYW1lcyA9ICJ1c2Job3N0IjsKKworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJCXBvcnRAMCB7CisJCSAgICByZWcgPSA8MD47CisJCSAgICBwaHlzID0gPCZ1c2IycGh5IDE+OworCQkgICAgc3RhdHVzID0gImRpc2FibGVkIjsKKwkJfTsKKwl9OworCitPSENJCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJzYW1zdW5nLGV4eW5vczQyMTAtb2hjaSIgZm9yIFVTQiAyLjAKKyAgIE9IQ0kgY29tcGFuaW9uIGNvbnRyb2xsZXIgaW4gaG9zdCBtb2RlLgorIC0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgICByZWdpb24uCisgLSBpbnRlcnJ1cHRzOiBpbnRlcnJ1cHQgbnVtYmVyIHRvIHRoZSBjcHUuCisgLSBjbG9ja3M6IGZyb20gY29tbW9uIGNsb2NrIGJpbmRpbmc6IGhhbmRsZSB0byB1c2IgY2xvY2suCisgLSBjbG9jay1uYW1lczogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzogU2hhbGwgYmUgInVzYmhvc3QiLgorIC0gcG9ydDogaWYgaW4gdGhlIFNvQyB0aGVyZSBhcmUgT0hDSSBwaHlzLCB0aGV5IHNob3VsZCBiZSBsaXN0ZWQgaGVyZS4KKyAgIE9uZSBwaHkgcGVyIHBvcnQuIEVhY2ggcG9ydCBzaG91bGQgaGF2ZSBmb2xsb3dpbmcgZW50cmllczoKKwktIHJlZzogcG9ydCBudW1iZXIgb24gT0hDSSBjb250cm9sbGVyLCBlLmcKKwkgICAgICAgT24gRXh5bm9zNTI1MCwgcG9ydCAwIGlzIFVTQjIuMCBvdGcgcGh5CisJCQkgICAgICBwb3J0IDEgaXMgSFNJQyBwaHkwCisJCQkgICAgICBwb3J0IDIgaXMgSFNJQyBwaHkxCisJLSBwaHlzOiBmcm9tIHRoZSAqR2VuZXJpYyBQSFkqIGJpbmRpbmdzLCBzcGVjaWZ5aW5nIHBoeSB1c2VkIGJ5IHBvcnQuCisKK0V4YW1wbGU6CisJdXNiQDEyMTIwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczQyMTAtb2hjaSI7CisJCXJlZyA9IDwweDEyMTIwMDAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDcxIDA+OworCisJCWNsb2NrcyA9IDwmY2xvY2sgMjg1PjsKKwkJY2xvY2stbmFtZXMgPSAidXNiaG9zdCI7CisKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQlwb3J0QDAgeworCQkgICAgcmVnID0gPDA+OworCQkgICAgcGh5cyA9IDwmdXNiMnBoeSAxPjsKKwkJICAgIHN0YXR1cyA9ICJkaXNhYmxlZCI7CisJCX07CisKKwl9OworCitEV0MzCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZTogc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIC0KKwkgICAgICAgInNhbXN1bmcsZXh5bm9zNTI1MC1kd3VzYjMiOiBmb3IgVVNCIDMuMCBEV0MzIGNvbnRyb2xsZXIgb24KKwkJCQkJICAgIEV4eW5vczUyNTAvNTQyMC4KKwkgICAgICAgInNhbXN1bmcsZXh5bm9zNy1kd3VzYjMiOiBmb3IgVVNCIDMuMCBEV0MzIGNvbnRyb2xsZXIgb24gRXh5bm9zNy4KKyAtICNhZGRyZXNzLWNlbGxzLCAjc2l6ZS1jZWxscyA6IHNob3VsZCBiZSAnMScgaWYgdGhlIGRldmljZSBoYXMgc3ViLW5vZGVzCisJCQkJIHdpdGggJ3JlZycgcHJvcGVydHkuCisgLSByYW5nZXM6IGFsbG93cyB2YWxpZCAxOjEgdHJhbnNsYXRpb24gYmV0d2VlbiBjaGlsZCdzIGFkZHJlc3Mgc3BhY2UgYW5kCisJICAgcGFyZW50J3MgYWRkcmVzcyBzcGFjZQorIC0gY2xvY2tzOiBDbG9jayBJRHMgYXJyYXkgYXMgcmVxdWlyZWQgYnkgdGhlIGNvbnRyb2xsZXIuCisgLSBjbG9jay1uYW1lczogbmFtZXMgb2YgY2xvY2tzIGNvcnJlc2Vwb25kaW5nIHRvIElEcyBpbiB0aGUgY2xvY2sgcHJvcGVydHkKKworU3ViLW5vZGVzOgorVGhlIGR3YzMgY29yZSBzaG91bGQgYmUgYWRkZWQgYXMgc3Vibm9kZSB0byBFeHlub3MgZHdjMyBnbHVlLgorLSBkd2MzIDoKKyAgIFRoZSBiaW5kaW5nIGRldGFpbHMgb2YgZHdjMyBjYW4gYmUgZm91bmQgaW46CisgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL2R3YzMudHh0CisKK0V4YW1wbGU6CisJdXNiQDEyMDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJzYW1zdW5nLGV4eW5vczUyNTAtZHd1c2IzIjsKKwkJY2xvY2tzID0gPCZjbG9jayAyODY+OworCQljbG9jay1uYW1lcyA9ICJ1c2JkcmQzMCI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJcmFuZ2VzOworCisJCWR3YzMgeworCQkJY29tcGF0aWJsZSA9ICJzeW5vcHN5cyxkd2MzIjsKKwkJCXJlZyA9IDwweDEyMDAwMDAwIDB4MTAwMDA+OworCQkJaW50ZXJydXB0cyA9IDwwIDcyIDA+OworCQkJdXNiLXBoeSA9IDwmdXNiMl9waHkgJnVzYjNfcGh5PjsKKwkJfTsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9mc2wtdXNiLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvZnNsLXVzYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc3OWMwMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvZnNsLXVzYi50eHQKQEAgLTAsMCArMSw4MyBAQAorRnJlZXNjYWxlIFNPQyBVU0IgY29udHJvbGxlcnMKKworVGhlIGRldmljZSBub2RlIGZvciBhIFVTQiBjb250cm9sbGVyIHRoYXQgaXMgcGFydCBvZiBhIEZyZWVzY2FsZQorU09DIGlzIGFzIGRlc2NyaWJlZCBpbiB0aGUgZG9jdW1lbnQgIk9wZW4gRmlybXdhcmUgUmVjb21tZW5kZWQKK1ByYWN0aWNlIDogVW5pdmVyc2FsIFNlcmlhbCBCdXMiIHdpdGggdGhlIGZvbGxvd2luZyBtb2RpZmljYXRpb25zCithbmQgYWRkaXRpb25zIDoKKworUmVxdWlyZWQgcHJvcGVydGllcyA6CisgLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJmc2wtdXNiMi1tcGgiIGZvciBtdWx0aSBwb3J0IGhvc3QgVVNCCisgICBjb250cm9sbGVycywgb3IgImZzbC11c2IyLWRyIiBmb3IgZHVhbCByb2xlIFVTQiBjb250cm9sbGVycworICAgb3IgImZzbCxtcGM1MTIxLXVzYjItZHIiIGZvciBkdWFsIHJvbGUgVVNCIGNvbnRyb2xsZXJzIG9mIE1QQzUxMjEuCisgICBXaGVyZXZlciBhcHBsaWNhYmxlLCB0aGUgSVAgdmVyc2lvbiBvZiB0aGUgVVNCIGNvbnRyb2xsZXIgc2hvdWxkCisgICBhbHNvIGJlIG1lbnRpb25lZCAoZm9yIGVnLiBmc2wtdXNiMi1kci12Mi4yIGZvciBic2M5MTMyKS4KKyAtIHBoeV90eXBlIDogRm9yIG11bHRpIHBvcnQgaG9zdCBVU0IgY29udHJvbGxlcnMsIHNob3VsZCBiZSBvbmUgb2YKKyAgICJ1bHBpIiwgb3IgInNlcmlhbCIuIEZvciBkdWFsIHJvbGUgVVNCIGNvbnRyb2xsZXJzLCBzaG91bGQgYmUKKyAgIG9uZSBvZiAidWxwaSIsICJ1dG1pIiwgInV0bWlfd2lkZSIsIG9yICJzZXJpYWwiLgorIC0gcmVnIDogT2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGRldmljZQorIC0gcG9ydDAgOiBib29sZWFuOyBpZiBkZWZpbmVkLCBpbmRpY2F0ZXMgcG9ydDAgaXMgY29ubmVjdGVkIGZvcgorICAgZnNsLXVzYjItbXBoIGNvbXBhdGlibGUgY29udHJvbGxlcnMuICBFaXRoZXIgdGhpcyBwcm9wZXJ0eSBvcgorICAgInBvcnQxIiAob3IgYm90aCkgbXVzdCBiZSBkZWZpbmVkIGZvciAiZnNsLXVzYjItbXBoIiBjb21wYXRpYmxlCisgICBjb250cm9sbGVycy4KKyAtIHBvcnQxIDogYm9vbGVhbjsgaWYgZGVmaW5lZCwgaW5kaWNhdGVzIHBvcnQxIGlzIGNvbm5lY3RlZCBmb3IKKyAgIGZzbC11c2IyLW1waCBjb21wYXRpYmxlIGNvbnRyb2xsZXJzLiAgRWl0aGVyIHRoaXMgcHJvcGVydHkgb3IKKyAgICJwb3J0MCIgKG9yIGJvdGgpIG11c3QgYmUgZGVmaW5lZCBmb3IgImZzbC11c2IyLW1waCIgY29tcGF0aWJsZQorICAgY29udHJvbGxlcnMuCisgLSBkcl9tb2RlIDogaW5kaWNhdGVzIHRoZSB3b3JraW5nIG1vZGUgZm9yICJmc2wtdXNiMi1kciIgY29tcGF0aWJsZQorICAgY29udHJvbGxlcnMuICBDYW4gYmUgImhvc3QiLCAicGVyaXBoZXJhbCIsIG9yICJvdGciLiAgRGVmYXVsdCB0bworICAgImhvc3QiIGlmIG5vdCBkZWZpbmVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgorCitSZWNvbW1lbmRlZCBwcm9wZXJ0aWVzIDoKKyAtIGludGVycnVwdHMgOiA8YSBiPiB3aGVyZSBhIGlzIHRoZSBpbnRlcnJ1cHQgbnVtYmVyIGFuZCBiIGlzIGEKKyAgIGZpZWxkIHRoYXQgcmVwcmVzZW50cyBhbiBlbmNvZGluZyBvZiB0aGUgc2Vuc2UgYW5kIGxldmVsCisgICBpbmZvcm1hdGlvbiBmb3IgdGhlIGludGVycnVwdC4gIFRoaXMgc2hvdWxkIGJlIGVuY29kZWQgYmFzZWQgb24KKyAgIHRoZSBpbmZvcm1hdGlvbiBpbiBzZWN0aW9uIDIpIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBpbnRlcnJ1cHQKKyAgIGNvbnRyb2xsZXIgeW91IGhhdmUuCisgLSBpbnRlcnJ1cHQtcGFyZW50IDogdGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGF0CisgICBzZXJ2aWNlcyBpbnRlcnJ1cHRzIGZvciB0aGlzIGRldmljZS4KKworT3B0aW9uYWwgcHJvcGVydGllcyA6CisgLSBmc2wsaW52ZXJ0LWRydnZidXMgOiBib29sZWFuOyBmb3IgTVBDNTEyMSBVU0IwIG9ubHkuIEluZGljYXRlcyB0aGUKKyAgIHBvcnQgcG93ZXIgcG9sYXJpdHkgb2YgaW50ZXJuYWwgUEhZIHNpZ25hbCBEUlZWQlVTIGlzIGludmVydGVkLgorIC0gZnNsLGludmVydC1wd3ItZmF1bHQgOiBib29sZWFuOyBmb3IgTVBDNTEyMSBVU0IwIG9ubHkuIEluZGljYXRlcworICAgdGhlIFBXUl9GQVVMVCBzaWduYWwgcG9sYXJpdHkgaXMgaW52ZXJ0ZWQuCisKK0V4YW1wbGUgbXVsdGkgcG9ydCBob3N0IFVTQiBjb250cm9sbGVyIGRldmljZSBub2RlIDoKKwl1c2JAMjIwMDAgeworCQljb21wYXRpYmxlID0gImZzbC11c2IyLW1waCI7CisJCXJlZyA9IDwyMjAwMCAxMDAwPjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPDcwMD47CisJCWludGVycnVwdHMgPSA8MjcgMT47CisJCXBoeV90eXBlID0gInVscGkiOworCQlwb3J0MDsKKwkJcG9ydDE7CisJfTsKKworRXhhbXBsZSBkdWFsIHJvbGUgVVNCIGNvbnRyb2xsZXIgZGV2aWNlIG5vZGUgOgorCXVzYkAyMzAwMCB7CisJCWNvbXBhdGlibGUgPSAiZnNsLXVzYjItZHIiOworCQlyZWcgPSA8MjMwMDAgMTAwMD47CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDw3MDA+OworCQlpbnRlcnJ1cHRzID0gPDI2IDE+OworCQlkcl9tb2RlID0gIm90ZyI7CisJCXBoeSA9ICJ1bHBpIjsKKwl9OworCitFeGFtcGxlIGR1YWwgcm9sZSBVU0IgY29udHJvbGxlciBkZXZpY2Ugbm9kZSBmb3IgTVBDNTEyMUFEUzoKKworCXVzYkA0MDAwIHsKKwkJY29tcGF0aWJsZSA9ICJmc2wsbXBjNTEyMS11c2IyLWRyIjsKKwkJcmVnID0gPDB4NDAwMCAweDEwMDA+OworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8ICZpcGljID47CisJCWludGVycnVwdHMgPSA8NDQgMHg4PjsKKwkJZHJfbW9kZSA9ICJvdGciOworCQlwaHlfdHlwZSA9ICJ1dG1pX3dpZGUiOworCQlmc2wsaW52ZXJ0LWRydnZidXM7CisJCWZzbCxpbnZlcnQtcHdyLWZhdWx0OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL2dlbmVyaWMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9nZW5lcmljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmE4MjU3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9nZW5lcmljLnR4dApAQCAtMCwwICsxLDM5IEBACitHZW5lcmljIFVTQiBQcm9wZXJ0aWVzCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgLSBtYXhpbXVtLXNwZWVkOiB0ZWxscyBVU0IgY29udHJvbGxlcnMgd2Ugd2FudCB0byB3b3JrIHVwIHRvIGEgY2VydGFpbgorCQkJc3BlZWQuIFZhbGlkIGFyZ3VtZW50cyBhcmUgInN1cGVyLXNwZWVkIiwgImhpZ2gtc3BlZWQiLAorCQkJImZ1bGwtc3BlZWQiIGFuZCAibG93LXNwZWVkIi4gSW4gY2FzZSB0aGlzIGlzbid0IHBhc3NlZAorCQkJdmlhIERULCBVU0IgY29udHJvbGxlcnMgc2hvdWxkIGRlZmF1bHQgdG8gdGhlaXIgbWF4aW11bQorCQkJSFcgY2FwYWJpbGl0eS4KKyAtIGRyX21vZGU6IHRlbGxzIER1YWwtUm9sZSBVU0IgY29udHJvbGxlcnMgdGhhdCB3ZSB3YW50IHRvIHdvcmsgb24gYQorCQkJcGFydGljdWxhciBtb2RlLiBWYWxpZCBhcmd1bWVudHMgYXJlICJob3N0IiwKKwkJCSJwZXJpcGhlcmFsIiBhbmQgIm90ZyIuIEluIGNhc2UgdGhpcyBhdHRyaWJ1dGUgaXNuJ3QKKwkJCXBhc3NlZCB2aWEgRFQsIFVTQiBEUkQgY29udHJvbGxlcnMgc2hvdWxkIGRlZmF1bHQgdG8KKwkJCU9URy4KKyAtIG90Zy1yZXY6IHRlbGxzIHVzYiBkcml2ZXIgdGhlIHJlbGVhc2UgbnVtYmVyIG9mIHRoZSBPVEcgYW5kIEVIIHN1cHBsZW1lbnQKKwkJCXdpdGggd2hpY2ggdGhlIGRldmljZSBhbmQgaXRzIGRlc2NyaXB0b3JzIGFyZSBjb21wbGlhbnQsCisJCQlpbiBiaW5hcnktY29kZWQgZGVjaW1hbCAoaS5lLiAyLjAgaXMgMDIwMEgpLiBUaGlzCisJCQlwcm9wZXJ0eSBpcyB1c2VkIGlmIGFueSByZWFsIE9URyBmZWF0dXJlcyhITlAvU1JQL0FEUCkKKwkJCWlzIGVuYWJsZWQsIGlmIEFEUCBpcyByZXF1aXJlZCwgb3RnLXJldiBzaG91bGQgYmUKKwkJCTB4MDIwMCBvciBhYm92ZS4KKyAtIGhucC1kaXNhYmxlOiB0ZWxscyBPVEcgY29udHJvbGxlcnMgd2Ugd2FudCB0byBkaXNhYmxlIE9URyBITlAsIG5vcm1hbGx5IEhOUAorCQkJaXMgdGhlIGJhc2ljIGZ1bmN0aW9uIG9mIHJlYWwgT1RHIGV4Y2VwdCB5b3Ugd2FudCBpdAorCQkJdG8gYmUgYSBzcnAtY2FwYWJsZSBvbmx5IEIgZGV2aWNlLgorIC0gc3JwLWRpc2FibGU6IHRlbGxzIE9URyBjb250cm9sbGVycyB3ZSB3YW50IHRvIGRpc2FibGUgT1RHIFNSUCwgU1JQIGlzCisJCQlvcHRpb25hbCBmb3IgT1RHIGRldmljZS4KKyAtIGFkcC1kaXNhYmxlOiB0ZWxscyBPVEcgY29udHJvbGxlcnMgd2Ugd2FudCB0byBkaXNhYmxlIE9URyBBRFAsIEFEUCBpcworCQkJb3B0aW9uYWwgZm9yIE9URyBkZXZpY2UuCisKK1RoaXMgaXMgYW4gYXR0cmlidXRlIHRvIGEgVVNCIGNvbnRyb2xsZXIgc3VjaCBhczoKKworZHdjM0A0YTAzMDAwMCB7CisJY29tcGF0aWJsZSA9ICJzeW5vcHN5cyxkd2MzIjsKKwlyZWcgPSA8MHg0YTAzMDAwMCAweGNmZmY+OworCWludGVycnVwdHMgPSA8MCA5MiA0PgorCXVzYi1waHkgPSA8JnVzYjJfcGh5PiwgPCZ1c2IzLHBoeT47CisJbWF4aW11bS1zcGVlZCA9ICJzdXBlci1zcGVlZCI7CisJZHJfbW9kZSA9ICJvdGciOworCW90Zy1yZXYgPSA8MHgwMjAwPjsKKwlhZHAtZGlzYWJsZTsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL2dyLXVkYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL2dyLXVkYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk0NDUyMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvZ3ItdWRjLnR4dApAQCAtMCwwICsxLDM0IEBACitVU0IgUGVyaXBoZXJhbCBDb250cm9sbGVyIGRyaXZlciBmb3IgQWVyb2ZsZXggR2Fpc2xlciBHUlVTQkRDLgorCitUaGUgR1JVU0JEQyBVU0IgRGV2aWNlIENvbnRyb2xsZXIgY29yZSBpcyBhdmFpbGFibGUgaW4gdGhlIEdSTElCIFZIREwKK0lQIGNvcmUgbGlicmFyeS4KKworTm90ZTogSW4gdGhlIG9yZGluYXJ5IGVudmlyb25tZW50IGZvciB0aGUgY29yZSwgYSBMZW9uIFNQQVJDIHN5c3RlbSwKK3RoZXNlIHByb3BlcnRpZXMgYXJlIGJ1aWx0IGZyb20gaW5mb3JtYXRpb24gaW4gdGhlIEFNQkEgcGx1ZyZwbGF5LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIG5hbWUgOiBTaG91bGQgYmUgIkdBSVNMRVJfVVNCREMiIG9yICIwMV8wMjEiCisKKy0gcmVnIDogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKworLSBpbnRlcnJ1cHRzIDogSW50ZXJydXB0IG51bWJlcnMgZm9yIHRoaXMgZGV2aWNlLiBFaXRoZXIgb25lIGludGVycnVwdCBudW1iZXIKKwlmb3IgYWxsIGludGVycnVwdHMsIG9yIG9uZSBmb3Igc3RhdHVzIHJlbGF0ZWQgaW50ZXJydXB0cywgb25lIGZvciBJTgorCWVuZHBvaW50IHJlbGF0ZWQgaW50ZXJydXB0cyBhbmQgb25lIGZvciBPVVQgZW5kcG9pbnQgcmVsYXRlZCBpbnRlcnJ1cHRzLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorCistIGVwb2J1ZnNpemVzIDogQXJyYXkgb2YgYnVmZmVyIHNpemVzIGZvciBPVVQgZW5kcG9pbnRzIHdoZW4gdGhleSBkaWZmZXIKKwlmcm9tIHRoZSBkZWZhdWx0IHNpemUgb2YgMTAyNC4gVGhlIGFycmF5IGlzIGluZGV4ZWQgYnkgdGhlIE9VVCBlbmRwb2ludAorCW51bWJlci4gSWYgdGhlIHByb3BlcnR5IGlzIHByZXNlbnQgaXQgdHlwaWNhbGx5IGNvbnRhaW5zIG9uZSBlbnRyeSBmb3IKKwllYWNoIE9VVCBlbmRwb2ludCBvZiB0aGUgY29yZS4gRmV3ZXIgZW50cmllcyBvdmVycmlkZXMgdGhlIGRlZmF1bHQgc2l6ZXMKKwlvbmx5IGZvciBhcyBtYW55IGVuZHBvaW50cyBhcyB0aGUgYXJyYXkgY29udGFpbnMuCisKKy0gZXBpYnVmc2l6ZXMgOiBBcnJheSBvZiBidWZmZXIgc2l6ZXMgZm9yIElOIGVuZHBvaW50cyB3aGVuIHRoZXkgZGlmZmVyCisJZnJvbSB0aGUgZGVmYXVsdCBzaXplIG9mIDEwMjQuIFRoZSBhcnJheSBpcyBpbmRleGVkIGJ5IHRoZSBJTiBlbmRwb2ludAorCW51bWJlci4gSWYgdGhlIHByb3BlcnR5IGlzIHByZXNlbnQgaXQgdHlwaWNhbGx5IGNvbnRhaW5zIG9uZSBlbnRyeSBmb3IKKwllYWNoIElOIGVuZHBvaW50IG9mIHRoZSBjb3JlLiBGZXdlciBlbnRyaWVzIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBzaXplcworCW9ubHkgZm9yIGFzIG1hbnkgZW5kcG9pbnRzIGFzIHRoZSBhcnJheSBjb250YWlucy4KKworRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gbG9vayBpbiB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIEdMSUIgSVAgY29yZSBsaWJyYXJ5OgoraHR0cDovL3d3dy5nYWlzbGVyLmNvbS9wcm9kdWN0cy9ncmxpYi9ncmlwLnBkZgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9pc3AxMzAxLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvaXNwMTMwMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQwNWQ5OQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvaXNwMTMwMS50eHQKQEAgLTAsMCArMSwyNSBAQAorKiBOWFAgSVNQMTMwMSBVU0IgdHJhbnNjZWl2ZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogbXVzdCBiZSAibnhwLGlzcDEzMDEiCistIHJlZzogSTJDIGFkZHJlc3Mgb2YgdGhlIElTUDEzMDEgZGV2aWNlCisKK09wdGlvbmFsIHByb3BlcnRpZXMgb2YgZGV2aWNlcyB1c2luZyBJU1AxMzAxOgorLSB0cmFuc2NlaXZlcjogcGhhbmRsZSBvZiBpc3AxMzAxIC0gdGhpcyBoZWxwcyB0aGUgSVNQMTMwMSBkcml2ZXIgdG8gZmluZCB0aGUKKyAgICAgICAgICAgICAgIElTUDEzMDEgaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIFVTQiBkcml2ZXIKKworRXhhbXBsZToKKworCWlzcDEzMDE6IHVzYi10cmFuc2NlaXZlckAyYyB7CisJCWNvbXBhdGlibGUgPSAibnhwLGlzcDEzMDEiOworCQlyZWcgPSA8MHgyYz47CisJfTsKKworCXVzYmRAMzEwMjAwMDAgeworCQljb21wYXRpYmxlID0gIm54cCxscGMzMjIwLXVkYyI7CisJCXJlZyA9IDwweDMxMDIwMDAwIDB4MzAwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmbWljPjsKKwkJaW50ZXJydXB0cyA9IDwweDNkIDA+LCA8MHgzZSAwPiwgPDB4M2MgMD4sIDwweDNhIDA+OworCQl0cmFuc2NlaXZlciA9IDwmaXNwMTMwMT47CisJCXN0YXR1cyA9ICJva2F5IjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9rZXlzdG9uZS11c2IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9rZXlzdG9uZS11c2IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNTI3ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL2tleXN0b25lLXVzYi50eHQKQEAgLTAsMCArMSw0MiBAQAorVEkgS2V5c3RvbmUgU29jIFVTQiBDb250cm9sbGVyCisKK0RXQzMgR0xVRQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJ0aSxrZXlzdG9uZS1kd2MzIi4KKyAtICNhZGRyZXNzLWNlbGxzLCAjc2l6ZS1jZWxscyA6IHNob3VsZCBiZSAnMScgaWYgdGhlIGRldmljZSBoYXMgc3ViLW5vZGVzCisgICB3aXRoICdyZWcnIHByb3BlcnR5LgorIC0gcmVnIDogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBVU0Igc3Vic3lzdGVtIG9uCisgICB0aGUgU09DLgorIC0gaW50ZXJydXB0cyA6IFRoZSBpcnEgbnVtYmVyIG9mIHRoaXMgZGV2aWNlIHRoYXQgaXMgdXNlZCB0byBpbnRlcnJ1cHQgdGhlCisgICBNUFUuCisgLSByYW5nZXM6IGFsbG93cyB2YWxpZCAxOjEgdHJhbnNsYXRpb24gYmV0d2VlbiBjaGlsZCdzIGFkZHJlc3Mgc3BhY2UgYW5kCisgICBwYXJlbnQncyBhZGRyZXNzIHNwYWNlLgorIC0gY2xvY2tzOiBDbG9jayBJRHMgYXJyYXkgYXMgcmVxdWlyZWQgYnkgdGhlIGNvbnRyb2xsZXIuCisgLSBjbG9jay1uYW1lczogbmFtZXMgb2YgY2xvY2tzIGNvcnJlc2Vwb25kaW5nIHRvIElEcyBpbiB0aGUgY2xvY2sgcHJvcGVydHkuCisKK1N1Yi1ub2RlczoKK1RoZSBkd2MzIGNvcmUgc2hvdWxkIGJlIGFkZGVkIGFzIHN1Ym5vZGUgdG8gS2V5c3RvbmUgRFdDMyBnbHVlLgorLSBkd2MzIDoKKyAgIFRoZSBiaW5kaW5nIGRldGFpbHMgb2YgZHdjMyBjYW4gYmUgZm91bmQgaW46CisgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL2R3YzMudHh0CisKK0V4YW1wbGU6CisJdXNiOiB1c2JAMjY4MDAwMCB7CisJCWNvbXBhdGlibGUgPSAidGksa2V5c3RvbmUtZHdjMyI7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJcmVnID0gPDB4MjY4MDAwMCAweDEwMDAwPjsKKwkJY2xvY2tzID0gPCZjbGt1c2I+OworCQljbG9jay1uYW1lcyA9ICJ1c2IiOworCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMzkzIElSUV9UWVBFX0VER0VfUklTSU5HPjsKKwkJcmFuZ2VzOworCQlzdGF0dXMgPSAiZGlzYWJsZWQiOworCisJCWR3YzNAMjY5MDAwMCB7CisJCQljb21wYXRpYmxlID0gInN5bm9wc3lzLGR3YzMiOworCQkJcmVnID0gPDB4MjY5MDAwMCAweDcwMDAwPjsKKwkJCWludGVycnVwdHMgPSA8R0lDX1NQSSAzOTMgSVJRX1RZUEVfRURHRV9SSVNJTkc+OworCQkJdXNiLXBoeSA9IDwmdXNiX3BoeT4sIDwmdXNiX3BoeT47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvbHBjMzJ4eC11ZGMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9scGMzMnh4LXVkYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjlmMTJhNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvbHBjMzJ4eC11ZGMudHh0CkBAIC0wLDAgKzEsMjggQEAKKyogTlhQIExQQzMyeHggU29DIFVTQiBEZXZpY2UgQ29udHJvbGxlciAoVURDKQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBNdXN0IGJlICJueHAsbHBjMzIyMC11ZGMiCistIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICByZWdpb24uCistIGludGVycnVwdHM6IFRoZSBVU0IgaW50ZXJydXB0czoKKyAgICAgICAgICAgICAgKiBVU0IgRGV2aWNlIExvdyBQcmlvcml0eSBJbnRlcnJ1cHQKKyAgICAgICAgICAgICAgKiBVU0IgRGV2aWNlIEhpZ2ggUHJpb3JpdHkgSW50ZXJydXB0CisgICAgICAgICAgICAgICogVVNCIERldmljZSBETUEgSW50ZXJydXB0CisgICAgICAgICAgICAgICogRXh0ZXJuYWwgVVNCIFRyYW5zY2VpdmVyIEludGVycnVwdCAoT1RHIEFUWCkKKy0gdHJhbnNjZWl2ZXI6IHBoYW5kbGUgb2YgdGhlIGFzc29jaWF0ZWQgSVNQMTMwMSBkZXZpY2UgLSB0aGlzIGlzIG5lY2Vzc2FyeSBmb3IKKyAgICAgICAgICAgICAgIHRoZSBVREMgY29udHJvbGxlciBmb3IgY29ubmVjdGluZyB0byB0aGUgVVNCIHBoeXNpY2FsIGxheWVyCisKK0V4YW1wbGU6CisKKwlpc3AxMzAxOiB1c2ItdHJhbnNjZWl2ZXJAMmMgeworCQljb21wYXRpYmxlID0gIm54cCxpc3AxMzAxIjsKKwkJcmVnID0gPDB4MmM+OworCX07CisKKwl1c2JkQDMxMDIwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJueHAsbHBjMzIyMC11ZGMiOworCQlyZWcgPSA8MHgzMTAyMDAwMCAweDMwMD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1pYz47CisJCWludGVycnVwdHMgPSA8MHgzZCAwPiwgPDB4M2UgMD4sIDwweDNjIDA+LCA8MHgzYSAwPjsKKwkJdHJhbnNjZWl2ZXIgPSA8JmlzcDEzMDE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL21zbS1oc3VzYi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL21zbS1oc3VzYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY1NGEzZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvbXNtLWhzdXNiLnR4dApAQCAtMCwwICsxLDExMCBAQAorTVNNIFNvQyBIU1VTQiBjb250cm9sbGVycworCitFSENJCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6CVNob3VsZCBjb250YWluICJxY29tLGVoY2ktaG9zdCIKKy0gcmVnczoJCQlvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGluIHRoZSBtZW1vcnkgbWFwCistIHVzYi1waHk6CQlwaGFuZGxlIGZvciB0aGUgUEhZIGRldmljZQorCitFeGFtcGxlIEVIQ0kgY29udHJvbGxlciBkZXZpY2Ugbm9kZToKKworCWVoY2k6IGVoY2lAZjlhNTUwMDAgeworCQljb21wYXRpYmxlID0gInFjb20sZWhjaS1ob3N0IjsKKwkJcmVnID0gPDB4ZjlhNTUwMDAgMHg0MDA+OworCQl1c2ItcGh5ID0gPCZ1c2Jfb3RnPjsKKwl9OworCitVU0IgUEhZIHdpdGggb3B0aW9uYWwgT1RHOgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAgIFNob3VsZCBjb250YWluOgorICAicWNvbSx1c2Itb3RnLWNpIiBmb3IgY2hpcHNldHMgd2l0aCBDaGlwSWRlYSA0NW5tIFBIWQorICAicWNvbSx1c2Itb3RnLXNucHMiIGZvciBjaGlwc2V0cyB3aXRoIFN5bm9wc3lzIDI4bm0gUEhZCisKKy0gcmVnczogICAgICAgICBPZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgcmVnaXN0ZXIgc2V0IGluIHRoZSBtZW1vcnkgbWFwCistIGludGVycnVwdHM6ICAgaW50ZXJydXB0LXNwZWNpZmllciBmb3IgdGhlIE9URyBpbnRlcnJ1cHQuCisKKy0gY2xvY2tzOiAgICAgICBBIGxpc3Qgb2YgcGhhbmRsZSArIGNsb2NrLXNwZWNpZmllciBwYWlycyBmb3IgdGhlCisgICAgICAgICAgICAgICAgY2xvY2tzIGxpc3RlZCBpbiBjbG9jay1uYW1lcworLSBjbG9jay1uYW1lczogIFNob3VsZCBjb250YWluIHRoZSBmb2xsb3dpbmc6CisgICJwaHkiICAgICAgICAgVVNCIFBIWSByZWZlcmVuY2UgY2xvY2sKKyAgImNvcmUiICAgICAgICBQcm90b2NvbCBlbmdpbmUgY2xvY2sKKyAgImlmYWNlIiAgICAgICBJbnRlcmZhY2UgYnVzIGNsb2NrCisgICJhbHRfY29yZSIgICAgUHJvdG9jb2wgZW5naW5lIGNsb2NrIGZvciB0YXJnZXRzIHdpdGggYXN5bmNocm9ub3VzCisgICAgICAgICAgICAgICAgcmVzZXQgbWV0aG9kb2xvZ3kuIChvcHRpb25hbCkKKworLSB2ZGNjeC1zdXBwbHk6IHBoYW5kbGUgdG8gdGhlIHJlZ3VsYXRvciBmb3IgdGhlIHZkZCBzdXBwbHkgZm9yCisgICAgICAgICAgICAgICAgZGlnaXRhbCBjaXJjdWl0IG9wZXJhdGlvbi4KKy0gdjFwOC1zdXBwbHk6ICBwaGFuZGxlIHRvIHRoZSByZWd1bGF0b3IgZm9yIHRoZSAxLjhWIHN1cHBseQorLSB2M3AzLXN1cHBseTogIHBoYW5kbGUgdG8gdGhlIHJlZ3VsYXRvciBmb3IgdGhlIDMuM1Ygc3VwcGx5CisKKy0gcmVzZXRzOiAgICAgICBBIGxpc3Qgb2YgcGhhbmRsZSArIHJlc2V0LXNwZWNpZmllciBwYWlycyBmb3IgdGhlCisgICAgICAgICAgICAgICAgcmVzZXRzIGxpc3RlZCBpbiByZXNldC1uYW1lcworLSByZXNldC1uYW1lczogIFNob3VsZCBjb250YWluIHRoZSBmb2xsb3dpbmc6CisgICJwaHkiICAgICAgICAgVVNCIFBIWSBjb250cm9sbGVyIHJlc2V0CisgICJsaW5rIiAgICAgICAgVVNCIExJTksgY29udHJvbGxlciByZXNldAorCistIHFjb20sb3RnLWNvbnRyb2w6IE9URyBjb250cm9sIChWQlVTIGFuZCBJRCBub3RpZmljYXRpb25zKSBjYW4gYmUgb25lIG9mCisgICAgICAgICAgICAgICAgMSAtIFBIWSBjb250cm9sCisgICAgICAgICAgICAgICAgMiAtIFBNSUMgY29udHJvbAorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBkcl9tb2RlOiAgICAgIE9uZSBvZiAiaG9zdCIsICJwZXJpcGhlcmFsIiBvciAib3RnIi4gRGVmYXVsdHMgdG8gIm90ZyIKKworLSBzd2l0Y2gtZ3BpbzogIEEgcGhhbmRsZSArIGdwaW8tc3BlY2lmaWVyIHBhaXIuIFNvbWUgYm9hcmRzIGFyZSB1c2luZyBEdWFsCisgICAgICAgICAgICAgICAgU1BEVCBVU0IgU3dpdGNoLCB3aXRjaCBpcyBjb3Ryb2xsZWQgYnkgR1BJTyB0byBkZS9tdWx0aXBsZXgKKyAgICAgICAgICAgICAgICBEKy9ELSBVU0IgbGluZXMgYmV0d2VlbiBjb25uZWN0b3JzLgorCistIHFjb20scGh5LWluaXQtc2VxdWVuY2U6IFBIWSBjb25maWd1cmF0aW9uIHNlcXVlbmNlIHZhbHVlcy4gVGhpcyBpcyByZWxhdGVkIHRvIERldmljZQorICAgICAgICAgICAgICAgIE1vZGUgRXllIERpYWdyYW0gdGVzdC4gU3RhcnQgYWRkcmVzcyBhdCB3aGljaCB0aGVzZSB2YWx1ZXMgd2lsbCBiZQorICAgICAgICAgICAgICAgIHdyaXR0ZW4gaXMgVUxQSV9FWFRfVkVORE9SX1NQRUNJRklDLiBWYWx1ZSBvZiAtMSBpcyByZXNlcnZlZCBhcworICAgICAgICAgICAgICAgICJkbyBub3Qgb3ZlcndyaXRlIGRlZmF1bHQgdmFsdWUgYXQgdGhpcyBhZGRyZXNzIi4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZTogcWNvbSxwaHktaW5pdC1zZXF1ZW5jZSA9IDwgLTEgMHg2MyA+OworICAgICAgICAgICAgICAgIFdpbGwgdXBkYXRlIG9ubHkgdmFsdWUgYXQgYWRkcmVzcyBVTFBJX0VYVF9WRU5ET1JfU1BFQ0lGSUMgKyAxLgorCistIHFjb20scGh5LW51bTogU2VsZWN0IG51bWJlciBvZiBweWNvLXBoeSB0byB1c2UsIGNhbiBiZSBvbmUgb2YKKyAgICAgICAgICAgICAgICAwIC0gUEhZIG9uZSwgZGVmYXVsdAorICAgICAgICAgICAgICAgIDEgLSBTZWNvbmQgUEhZCisgICAgICAgICAgICAgICAgU29tZSBwbGF0Zm9ybXMgbWF5IGhhdmUgY29uZmlndXJhdGlvbiB0byBhbGxvdyBVU0IKKyAgICAgICAgICAgICAgICBjb250cm9sbGVyIHdvcmsgd2l0aCBhbnkgb2YgdGhlIHR3byBIU1BIWXMgcHJlc2VudC4KKworLSBxY29tLHZkZC1sZXZlbHM6IFRoaXMgcHJvcGVydHkgbXVzdCBiZSBhIGxpc3Qgb2YgdGhyZWUgaW50ZWdlciB2YWx1ZXMKKyAgICAgICAgICAgICAgICAobm8sIG1pbiwgbWF4KSB3aGVyZSBlYWNoIHZhbHVlIHJlcHJlc2VudHMgZWl0aGVyIGEgdm9sdGFnZQorICAgICAgICAgICAgICAgIGluIG1pY3Jvdm9sdHMgb3IgYSB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHZvbHRhZ2UgY29ybmVyLgorCistIHFjb20sbWFudWFsLXB1bGx1cDogSWYgcHJlc2VudCwgdmJ1cyBpcyBub3Qgcm91dGVkIHRvIFVTQiBjb250cm9sbGVyL3BoeQorICAgICAgICAgICAgICAgIGFuZCBjb250cm9sbGVyIGRyaXZlciB0aGVyZWZvcmUgZW5hYmxlcyBwdWxsLXVwIGV4cGxpY2l0bHkKKyAgICAgICAgICAgICAgICBiZWZvcmUgc3RhcnRpbmcgY29udHJvbGxlciB1c2luZyB1c2JjbWQgcnVuL3N0b3AgYml0LgorCistIGV4dGNvbjogICAgICAgcGhhbmRsZXMgdG8gZXh0ZXJuYWwgY29ubmVjdG9yIGRldmljZXMuIEZpcnN0IHBoYW5kbGUKKyAgICAgICAgICAgICAgICBzaG91bGQgcG9pbnQgdG8gZXh0ZXJuYWwgY29ubmVjdG9yLCB3aGljaCBwcm92aWRlICJVU0IiCisgICAgICAgICAgICAgICAgY2FibGUgZXZlbnRzLCB0aGUgc2Vjb25kIHNob3VsZCBwb2ludCB0byBleHRlcm5hbCBjb25uZWN0b3IKKyAgICAgICAgICAgICAgICBkZXZpY2UsIHdoaWNoIHByb3ZpZGUgIlVTQi1IT1NUIiBjYWJsZSBldmVudHMuIElmIG9uZSBvZgorICAgICAgICAgICAgICAgIHRoZSBleHRlcm5hbCBjb25uZWN0b3IgZGV2aWNlcyBpcyBub3QgcmVxdWlyZWQgZW1wdHkgPDA+CisgICAgICAgICAgICAgICAgcGhhbmRsZSBzaG91bGQgYmUgc3BlY2lmaWVkLgorCitFeGFtcGxlIEhTVVNCIE9URyBjb250cm9sbGVyIGRldmljZSBub2RlOgorCisgICAgdXNiQGY5YTU1MDAwIHsKKyAgICAgICAgY29tcGF0aWJsZSA9ICJxY29tLHVzYi1vdGctc25wcyI7CisgICAgICAgIHJlZyA9IDwweGY5YTU1MDAwIDB4NDAwPjsKKyAgICAgICAgaW50ZXJydXB0cyA9IDwwIDEzNCAwPjsKKyAgICAgICAgZHJfbW9kZSA9ICJwZXJpcGhlcmFsIjsKKworICAgICAgICBjbG9ja3MgPSA8JmdjYyBHQ0NfWE9fQ0xLPiwgPCZnY2MgR0NDX1VTQl9IU19TWVNURU1fQ0xLPiwKKyAgICAgICAgICAgICAgICA8JmdjYyBHQ0NfVVNCX0hTX0FIQl9DTEs+OworCisgICAgICAgIGNsb2NrLW5hbWVzID0gInBoeSIsICJjb3JlIiwgImlmYWNlIjsKKworICAgICAgICB2ZGRjeC1zdXBwbHkgPSA8JnBtODg0MV9zMl9jb3JuZXI+OworICAgICAgICB2MXA4LXN1cHBseSA9IDwmcG04OTQxX2w2PjsKKyAgICAgICAgdjNwMy1zdXBwbHkgPSA8JnBtODk0MV9sMjQ+OworCisgICAgICAgIHJlc2V0cyA9IDwmZ2NjIEdDQ19VU0IyQV9QSFlfQkNSPiwgPCZnY2MgR0NDX1VTQl9IU19CQ1I+OworICAgICAgICByZXNldC1uYW1lcyA9ICJwaHkiLCAibGluayI7CisKKyAgICAgICAgcWNvbSxvdGctY29udHJvbCA9IDwxPjsKKyAgICAgICAgcWNvbSxwaHktaW5pdC1zZXF1ZW5jZSA9IDwgLTEgMHg2MyA+OworICAgICAgICBxY29tLHZkZC1sZXZlbHMgPSA8MSA1IDc+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL252aWRpYSx0ZWdyYTIwLWVoY2kudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9udmlkaWEsdGVncmEyMC1laGNpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjA3ODVmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9udmlkaWEsdGVncmEyMC1laGNpLnR4dApAQCAtMCwwICsxLDIzIEBACitUZWdyYSBTT0MgVVNCIGNvbnRyb2xsZXJzCisKK1RoZSBkZXZpY2Ugbm9kZSBmb3IgYSBVU0IgY29udHJvbGxlciB0aGF0IGlzIHBhcnQgb2YgYSBUZWdyYQorU09DIGlzIGFzIGRlc2NyaWJlZCBpbiB0aGUgZG9jdW1lbnQgIk9wZW4gRmlybXdhcmUgUmVjb21tZW5kZWQKK1ByYWN0aWNlIDogVW5pdmVyc2FsIFNlcmlhbCBCdXMiIHdpdGggdGhlIGZvbGxvd2luZyBtb2RpZmljYXRpb25zCithbmQgYWRkaXRpb25zIDoKKworUmVxdWlyZWQgcHJvcGVydGllcyA6CisgLSBjb21wYXRpYmxlIDogRm9yIFRlZ3JhMjAsIG11c3QgY29udGFpbiAibnZpZGlhLHRlZ3JhMjAtZWhjaSIuCisgICBGb3IgVGVncmEzMCwgbXVzdCBjb250YWluICJudmlkaWEsdGVncmEzMC1laGNpIi4gIE90aGVyd2lzZSwgbXVzdCBjb250YWluCisgICAibnZpZGlhLDxjaGlwPi1laGNpIiBwbHVzIGF0IGxlYXN0IG9uZSBvZiB0aGUgYWJvdmUsIHdoZXJlIDxjaGlwPiBpcworICAgdGVncmExMTQsIHRlZ3JhMTI0LCB0ZWdyYTEzMiwgb3IgdGVncmEyMTAuCisgLSBudmlkaWEscGh5IDogcGhhbmRsZSBvZiB0aGUgUEhZIHRoYXQgdGhlIGNvbnRyb2xsZXIgaXMgY29ubmVjdGVkIHRvLgorIC0gY2xvY2tzIDogTXVzdCBjb250YWluIG9uZSBlbnRyeSwgZm9yIHRoZSBtb2R1bGUgY2xvY2suCisgICBTZWUgLi4vY2xvY2tzL2Nsb2NrLWJpbmRpbmdzLnR4dCBmb3IgZGV0YWlscy4KKyAtIHJlc2V0cyA6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiByZXNldC1uYW1lcy4KKyAgIFNlZSAuLi9yZXNldC9yZXNldC50eHQgZm9yIGRldGFpbHMuCisgLSByZXNldC1uYW1lcyA6IE11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGVudHJpZXM6CisgICAtIHVzYgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorIC0gbnZpZGlhLG5lZWRzLWRvdWJsZS1yZXNldCA6IGJvb2xlYW4gaXMgdG8gYmUgc2V0IGZvciBzb21lIG9mIHRoZSBUZWdyYTIwCisgICBVU0IgcG9ydHMsIHdoaWNoIG5lZWQgcmVzZXQgdHdpY2UgZHVlIHRvIGhhcmR3YXJlIGlzc3Vlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2Ivb2hjaS1ueHAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9vaGNpLW54cC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFlMjhjMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2Ivb2hjaS1ueHAudHh0CkBAIC0wLDAgKzEsMjQgQEAKKyogT0hDSSBjb250cm9sbGVyLCBOWFAgb2hjaS1ueHAgdmFyaWFudAorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBtdXN0IGJlICJueHAsb2hjaS1ueHAiCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICByZWdpb24uCistIGludGVycnVwdHM6IFRoZSBPSENJIGludGVycnVwdAorLSB0cmFuc2NlaXZlcjogcGhhbmRsZSBvZiB0aGUgYXNzb2NpYXRlZCBJU1AxMzAxIGRldmljZSAtIHRoaXMgaXMgbmVjZXNzYXJ5IGZvcgorICAgICAgICAgICAgICAgdGhlIFVEQyBjb250cm9sbGVyIGZvciBjb25uZWN0aW5nIHRvIHRoZSBVU0IgcGh5c2ljYWwgbGF5ZXIKKworRXhhbXBsZSAoTFBDMzJ4eCk6CisKKwlpc3AxMzAxOiB1c2ItdHJhbnNjZWl2ZXJAMmMgeworCQljb21wYXRpYmxlID0gIm54cCxpc3AxMzAxIjsKKwkJcmVnID0gPDB4MmM+OworCX07CisKKwlvaGNpQDMxMDIwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJueHAsb2hjaS1ueHAiOworCQlyZWcgPSA8MHgzMTAyMDAwMCAweDMwMD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8Jm1pYz47CisJCWludGVycnVwdHMgPSA8MHgzYiAwPjsKKwkJdHJhbnNjZWl2ZXIgPSA8JmlzcDEzMDE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL29oY2ktb21hcDMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9vaGNpLW9tYXAzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZThjNDdjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9vaGNpLW9tYXAzLnR4dApAQCAtMCwwICsxLDE1IEBACitPTUFQIEhTIFVTQiBPSENJIGNvbnRyb2xsZXIgKE9NQVAzIGFuZCBsYXRlcikKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgInRpLG9oY2ktb21hcDMiCistIHJlZzogc2hvdWxkIGNvbnRhaW4gb25lIHJlZ2lzdGVyIHJhbmdlIGkuZS4gc3RhcnQgYW5kIGxlbmd0aAorLSBpbnRlcnJ1cHRzOiBkZXNjcmlwdGlvbiBvZiB0aGUgaW50ZXJydXB0IGxpbmUKKworRXhhbXBsZSBmb3IgT01BUDQ6CisKK3VzYmhzb2hjaTogb2hjaUA0YTA2NDgwMCB7CisJY29tcGF0aWJsZSA9ICJ0aSxvaGNpLW9tYXAzIjsKKwlyZWcgPSA8MHg0YTA2NDgwMCAweDQwMD47CisJaW50ZXJydXB0cyA9IDwwIDc2IDB4ND47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9vaGNpLXN0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2Ivb2hjaS1zdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ4MzkzNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2Ivb2hjaS1zdC50eHQKQEAgLTAsMCArMSwzNyBAQAorU1QgVVNCIE9IQ0kgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgLSBjb21wYXRpYmxlCQk6IG11c3QgYmUgInN0LHN0LW9oY2ktMzAweCIKKyAtIHJlZwkJCTogcGh5c2ljYWwgYmFzZSBhZGRyZXNzZXMgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisJCQkgIHJlZ2lvbgorIC0gaW50ZXJydXB0cwkJOiBvbmUgT0hDSSBjb250cm9sbGVyIGludGVycnVwdCBzaG91bGQgYmUgZGVzY3JpYmVkIGhlcmUKKyAtIGNsb2NrcwkJOiBwaGFuZGxlIGxpc3Qgb2YgdXNiIGNsb2NrcworIC0gY2xvY2stbmFtZXMJCTogc2hvdWxkIGJlICJpYyIgZm9yIGludGVyY29ubmVjdCBjbG9jayBhbmQgImNsazQ4IgorU2VlOiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CisKKyAtIHBoeXMJCQk6IHBoYW5kbGUgZm9yIHRoZSBQSFkgZGV2aWNlCisgLSBwaHktbmFtZXMJCTogc2hvdWxkIGJlICJ1c2IiCisKKyAtIHJlc2V0cwkJOiBwaGFuZGxlIHRvIHRoZSBwb3dlcmRvd24gYW5kIHJlc2V0IGNvbnRyb2xsZXIgZm9yIHRoZSBVU0IgSVAKKyAtIHJlc2V0LW5hbWVzCQk6IHNob3VsZCBiZSAicG93ZXIiIGFuZCAic29mdHJlc2V0Ii4KK1NlZTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Jlc2V0L3N0LHN0aS1wb3dlcmRvd24udHh0CitTZWU6IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9yZXNldC50eHQKKworRXhhbXBsZToKKworCW9oY2kwOiB1c2JAMHhmZTFmZmMwMCB7CisJCWNvbXBhdGlibGUgPSAic3Qsc3Qtb2hjaS0zMDB4IjsKKwkJcmVnID0gPDB4ZmUxZmZjMDAgMHgxMDA+OworCQlpbnRlcnJ1cHRzID0gPEdJQ19TUEkgMTQ5IElSUV9UWVBFX05PTkU+OworCQljbG9ja3MgPSA8JmNsa19zX2ExX2xzIDA+LAorCQkJIDwmY2xvY2tnZW5fYjAgMD47CisJCWNsb2NrLW5hbWVzID0gImljIiwgImNsazQ4IjsKKwkJcGh5cyA9IDwmdXNiMl9waHk+OworCQlwaHktbmFtZXMgPSAidXNiIjsKKwkJc3RhdHVzID0gIm9rYXkiOworCisJCXJlc2V0cyA9IDwmcG93ZXJkb3duIFNUSUg0MTZfVVNCMF9QT1dFUkRPV04+LAorCQkJIDwmc29mdHJlc2V0IFNUSUg0MTZfVVNCMF9TT0ZUUkVTRVQ+OworCQlyZXNldC1uYW1lcyA9ICJwb3dlciIsICJzb2Z0cmVzZXQiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL29tYXAtdXNiLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2Ivb21hcC11c2IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4ZDliYjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL29tYXAtdXNiLnR4dApAQCAtMCwwICsxLDgwIEBACitPTUFQIEdMVUUgQU5EIE9USEVSIE9NQVAgU1BFQ0lGSUMgQ09NUE9ORU5UUworCitPTUFQIE1VU0IgR0xVRQorIC0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAidGksb21hcDQtbXVzYiIgb3IgInRpLG9tYXAzLW11c2IiCisgLSB0aSxod21vZHMgOiBtdXN0IGJlICJ1c2Jfb3RnX2hzIgorIC0gbXVsdGlwb2ludCA6IFNob3VsZCBiZSAiMSIgaW5kaWNhdGluZyB0aGUgbXVzYiBjb250cm9sbGVyIHN1cHBvcnRzCisgICBtdWx0aXBvaW50LiBUaGlzIGlzIGEgTVVTQiBjb25maWd1cmF0aW9uLXNwZWNpZmljIHNldHRpbmcuCisgLSBudW0tZXBzIDogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZW5kcG9pbnRzLiBUaGlzIGlzIGFsc28gYQorICAgTVVTQiBjb25maWd1cmF0aW9uLXNwZWNpZmljIHNldHRpbmcuIFNob3VsZCBiZSBzZXQgdG8gIjE2IgorIC0gcmFtLWJpdHMgOiBTcGVjaWZpZXMgdGhlIHJhbSBhZGRyZXNzIHNpemUuIFNob3VsZCBiZSBzZXQgdG8gIjEyIgorIC0gaW50ZXJmYWNlLXR5cGUgOiBUaGlzIGlzIGEgYm9hcmQgc3BlY2lmaWMgc2V0dGluZyB0byBkZXNjcmliZSB0aGUgdHlwZSBvZgorICAgaW50ZXJmYWNlIGJldHdlZW4gdGhlIGNvbnRyb2xsZXIgYW5kIHRoZSBwaHkuIEl0IHNob3VsZCBiZSAiMCIgb3IgIjEiCisgICBzcGVjaWZ5aW5nIFVMUEkgYW5kIFVUTUkgcmVzcGVjdGl2ZWx5LgorIC0gbW9kZSA6IFNob3VsZCBiZSAiMyIgdG8gcmVwcmVzZW50IE9URy4gIjEiIHNpZ25pZmllcyBIT1NUIGFuZCAiMiIKKyAgIHJlcHJlc2VudHMgUEVSSVBIRVJBTC4KKyAtIHBvd2VyIDogU2hvdWxkIGJlICI1MCIuIFRoaXMgc2lnbmlmaWVzIHRoZSBjb250cm9sbGVyIGNhbiBzdXBwbHkgdXAgdG8KKyAgIDEwMG1BIHdoZW4gb3BlcmF0aW5nIGluIGhvc3QgbW9kZS4KKyAtIHVzYi1waHkgOiB0aGUgcGhhbmRsZSBmb3IgdGhlIFBIWSBkZXZpY2UKKyAtIHBoeXMgOiB0aGUgcGhhbmRsZSBmb3IgdGhlIFBIWSBkZXZpY2UgKHVzZWQgYnkgZ2VuZXJpYyBQSFkgZnJhbWV3b3JrKQorIC0gcGh5LW5hbWVzIDogdGhlIG5hbWVzIG9mIHRoZSBQSFkgY29ycmVzcG9uZGluZyB0byB0aGUgUEhZcyBwcmVzZW50IGluIHRoZQorICAgKnBoeSogcGhhbmRsZS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAtIGN0cmwtbW9kdWxlIDogcGhhbmRsZSBvZiB0aGUgY29udHJvbCBtb2R1bGUgdGhpcyBnbHVlIHVzZXMgdG8gd3JpdGUgdG8KKyAgIG1haWxib3gKKworU09DIHNwZWNpZmljIGRldmljZSBub2RlIGVudHJ5Cit1c2Jfb3RnX2hzOiB1c2Jfb3RnX2hzQDRhMGFiMDAwIHsKKwljb21wYXRpYmxlID0gInRpLG9tYXA0LW11c2IiOworCXRpLGh3bW9kcyA9ICJ1c2Jfb3RnX2hzIjsKKwltdWx0aXBvaW50ID0gPDE+OworCW51bS1lcHMgPSA8MTY+OworCXJhbS1iaXRzID0gPDEyPjsKKwljdHJsLW1vZHVsZSA9IDwmb21hcF9jb250cm9sX3VzYj47CisJcGh5cyA9IDwmdXNiMl9waHk+OworCXBoeS1uYW1lcyA9ICJ1c2IyLXBoeSI7Cit9OworCitCb2FyZCBzcGVjaWZpYyBkZXZpY2Ugbm9kZSBlbnRyeQorJnVzYl9vdGdfaHMgeworCWludGVyZmFjZS10eXBlID0gPDE+OworCW1vZGUgPSA8Mz47CisJcG93ZXIgPSA8NTA+OworfTsKKworT01BUCBEV0MzIEdMVUUKKyAtIGNvbXBhdGlibGUgOiBTaG91bGQgYmUKKwkqICJ0aSxkd2MzIiBmb3IgT01BUDUgYW5kIERSQTcKKwkqICJ0aSxhbTQzN3gtZHdjMyIgZm9yIEFNNDM3eAorIC0gdGksaHdtb2RzIDogU2hvdWxkIGJlICJ1c2Jfb3RnX3NzIgorIC0gcmVnIDogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UuCisgLSBpbnRlcnJ1cHRzIDogVGhlIGlycSBudW1iZXIgb2YgdGhpcyBkZXZpY2UgdGhhdCBpcyB1c2VkIHRvIGludGVycnVwdCB0aGUKKyAgIE1QVQorIC0gI2FkZHJlc3MtY2VsbHMsICNzaXplLWNlbGxzIDogTXVzdCBiZSBwcmVzZW50IGlmIHRoZSBkZXZpY2UgaGFzIHN1Yi1ub2RlcworIC0gdXRtaS1tb2RlIDogY29udHJvbHMgdGhlIHNvdXJjZSBvZiBVVE1JL1BJUEUgc3RhdHVzIGZvciBWQlVTIGFuZCBPVEcgSUQuCisgICBJdCBzaG91bGQgYmUgc2V0IHRvICIxIiBmb3IgSFcgbW9kZSBhbmQgIjIiIGZvciBTVyBtb2RlLgorIC0gcmFuZ2VzOiB0aGUgY2hpbGQgYWRkcmVzcyBzcGFjZSBhcmUgbWFwcGVkIDE6MSBvbnRvIHRoZSBwYXJlbnQgYWRkcmVzcyBzcGFjZQorCitPcHRpb25hbCBQcm9wZXJ0aWVzOgorIC0gZXh0Y29uIDogcGhhbmRsZSBmb3IgdGhlIGV4dGNvbiBkZXZpY2Ugb21hcCBkd2MzIHVzZXMgdG8gZGV0ZWN0CisgICBjb25uZWN0L2Rpc2Nvbm5lY3QgZXZlbnRzLgorIC0gdmJ1cy1zdXBwbHkgOiBwaGFuZGxlIHRvIHRoZSByZWd1bGF0b3IgZGV2aWNlIHRyZWUgbm9kZSBpZiBuZWVkZWQuCisKK1N1Yi1ub2RlczoKK1RoZSBkd2MzIGNvcmUgc2hvdWxkIGJlIGFkZGVkIGFzIHN1Ym5vZGUgdG8gb21hcCBkd2MzIGdsdWUuCistIGR3YzMgOgorICAgVGhlIGJpbmRpbmcgZGV0YWlscyBvZiBkd2MzIGNhbiBiZSBmb3VuZCBpbjoKKyAgIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvZHdjMy50eHQKKworb21hcF9kd2MzIHsKKwljb21wYXRpYmxlID0gInRpLGR3YzMiOworCXRpLGh3bW9kcyA9ICJ1c2Jfb3RnX3NzIjsKKwlyZWcgPSA8MHg0YTAyMDAwMCAweDFmZj47CisJaW50ZXJydXB0cyA9IDwwIDkzIDQ+OworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDE+OworCXV0bWktbW9kZSA9IDwyPjsKKwlyYW5nZXM7Cit9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL3B4YS11c2IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9weGEtdXNiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzMzMTc5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9weGEtdXNiLnR4dApAQCAtMCwwICsxLDUzIEBACitQWEEgVVNCIGNvbnRyb2xsZXJzCisKK09IQ0kKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGU6IFNob3VsZCBiZSAibWFydmVsbCxweGEtb2hjaSIgZm9yIFVTQiBjb250cm9sbGVycworICAgdXNlZCBpbiBob3N0IG1vZGUuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgLSAibWFydmVsbCxlbmFibGUtcG9ydDEiLCAibWFydmVsbCxlbmFibGUtcG9ydDIiLCAibWFydmVsbCxlbmFibGUtcG9ydDMiCisgICBJZiBwcmVzZW50LCBlbmFibGVzIHRoZSBhcHByb3ByaWF0ZSBVU0IgcG9ydCBvZiB0aGUgY29udHJvbGxlci4KKyAtICJtYXJ2ZWxsLHBvcnQtbW9kZSIgc2VsZWN0cyB0aGUgbW9kZSBvZiB0aGUgcG9ydHM6CisJMSA9IFBNTV9OUFNfTU9ERQorCTIgPSBQTU1fR0xPQkFMX01PREUKKwkzID0gUE1NX1BFUlBPUlRfTU9ERQorIC0gIm1hcnZlbGwscG93ZXItc2Vuc2UtbG93IiAtIHBvd2VyIHNlbnNlIHBpbiBpcyBsb3ctYWN0aXZlLgorIC0gIm1hcnZlbGwscG93ZXItY29udHJvbC1sb3ciIC0gcG93ZXIgY29udHJvbCBwaW4gaXMgbG93LWFjdGl2ZS4KKyAtICJtYXJ2ZWxsLG5vLW9jLXByb3RlY3Rpb24iIC0gZGlzYWJsZSBvdmVyLWN1cnJlbnQgcHJvdGVjdGlvbi4KKyAtICJtYXJ2ZWxsLG9jLW1vZGUtcGVycG9ydCIgLSBlbmFibGUgcGVyLXBvcnQgb3Zlci1jdXJyZW50IHByb3RlY3Rpb24uCisgLSAibWFydmVsbCxwb3dlcl9vbl9kZWxheSIgUG93ZXIgT24gdG8gUG93ZXIgR29vZCB0aW1lIC0gaW4gbXMuCisKK0V4YW1wbGU6CisKKwl1c2IwOiBvaGNpQDRjMDAwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLHB4YS1vaGNpIiwgInVzYi1vaGNpIjsKKwkJcmVnID0gPDB4NGMwMDAwMDAgMHgxMDAwMDA+OworCQlpbnRlcnJ1cHRzID0gPDE4PjsKKwkJbWFydmVsbCxlbmFibGUtcG9ydDE7CisJCW1hcnZlbGwscG9ydC1tb2RlID0gPDI+OyAvKiBQTU1fR0xPQkFMX01PREUgKi8KKwl9OworCitVREMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAtIGNvbXBhdGlibGU6IFNob3VsZCBiZSAibWFydmVsbCxweGEyNzAtdWRjIiBmb3IgVVNCIGNvbnRyb2xsZXJzCisgICB1c2VkIGluIGRldmljZSBtb2RlLgorIC0gcmVnOiB1c2IgZGV2aWNlIE1NSU8gYWRkcmVzcyBzcGFjZQorIC0gaW50ZXJydXB0czogc2luZ2xlIGludGVycnVwdCBnZW5lcmF0ZWQgYnkgdGhlIFVEQyBJUAorIC0gY2xvY2tzOiBpbnB1dCBjbG9jayBvZiB0aGUgVURDIElQIChzZWUgY2xvY2stYmluZGluZ3MudHh0KQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorIC0gZ3Bpb3M6CisgICAtIGdwaW8gYWN0aXZhdGVkIHRvIGNvbnRyb2wgdGhlIFVTQiBEKyBwdWxsdXAgKHNlZSBncGlvLnR4dCkKKworRXhhbXBsZToKKworCQlweGEyN3hfdWRjOiB1ZGNANDA2MDAwMDAgeworCQkJY29tcGF0aWJsZSA9ICJtYXJ2ZWxsLHB4YTI3MC11ZGMiOworCQkJcmVnID0gPDB4NDA2MDAwMDAgMHgxMDAwMD47CisJCQlpbnRlcnJ1cHRzID0gPDExPjsKKwkJCWNsb2NrcyA9IDwmcHhhMnh4X2Nsa3MgMTE+OworCQkJZ3Bpb3MgPSA8JmdwaW8gMjIgR1BJT19BQ1RJVkVfTE9XPjsKKwkJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvcWNvbSxkd2MzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvcWNvbSxkd2MzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTE2NGU3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9xY29tLGR3YzMudHh0CkBAIC0wLDAgKzEsNjYgQEAKK1F1YWxjb21tIFN1cGVyU3BlZWQgRFdDMyBVU0IgU29DIGNvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZToJc2hvdWxkIGNvbnRhaW4gInFjb20sZHdjMyIKKy0gY2xvY2tzOgkJQSBsaXN0IG9mIHBoYW5kbGUgKyBjbG9jay1zcGVjaWZpZXIgcGFpcnMgZm9yIHRoZQorCQkJCWNsb2NrcyBsaXN0ZWQgaW4gY2xvY2stbmFtZXMKKy0gY2xvY2stbmFtZXM6CVNob3VsZCBjb250YWluIHRoZSBmb2xsb3dpbmc6CisgICJjb3JlIgkJTWFzdGVyL0NvcmUgY2xvY2ssIGhhdmUgdG8gYmUgPj0gMTI1IE1IeiBmb3IgU1MKKwkJCQlvcGVyYXRpb24gYW5kID49IDYwTUh6IGZvciBIUyBvcGVyYXRpb24KKworT3B0aW9uYWwgY2xvY2tzOgorICAiaWZhY2UiCQlTeXN0ZW0gYnVzIEFYSSBjbG9jay4gIE5vdCBwcmVzZW50IG9uIGFsbCBwbGF0Zm9ybXMKKyAgInNsZWVwIgkJU2xlZXAgY2xvY2ssIHVzZWQgd2hlbiBVU0IzIGNvcmUgZ29lcyBpbnRvIGxvdworCQkJCXBvd2VyIG1vZGUgKFUzKS4KKworUmVxdWlyZWQgY2hpbGQgbm9kZToKK0EgY2hpbGQgbm9kZSBtdXN0IGV4aXN0IHRvIHJlcHJlc2VudCB0aGUgY29yZSBEV0MzIElQIGJsb2NrLiBUaGUgbmFtZSBvZgordGhlIG5vZGUgaXMgbm90IGltcG9ydGFudC4gVGhlIGNvbnRlbnQgb2YgdGhlIG5vZGUgaXMgZGVmaW5lZCBpbiBkd2MzLnR4dC4KKworUGh5IGRvY3VtZW50YXRpb24gaXMgcHJvdmlkZWQgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3Fjb20sZHdjMy11c2ItcGh5LnR4dAorCitFeGFtcGxlIGRldmljZSBub2RlczoKKworCQloc19waHk6IHBoeUAxMDBmODgwMCB7CisJCQljb21wYXRpYmxlID0gInFjb20sZHdjMy1ocy11c2ItcGh5IjsKKwkJCXJlZyA9IDwweDEwMGY4ODAwIDB4MzA+OworCQkJY2xvY2tzID0gPCZnY2MgVVNCMzBfMF9VVE1JX0NMSz47CisJCQljbG9jay1uYW1lcyA9ICJyZWYiOworCQkJI3BoeS1jZWxscyA9IDwwPjsKKworCQkJc3RhdHVzID0gIm9rIjsKKwkJfTsKKworCQlzc19waHk6IHBoeUAxMDBmODgzMCB7CisJCQljb21wYXRpYmxlID0gInFjb20sZHdjMy1zcy11c2ItcGh5IjsKKwkJCXJlZyA9IDwweDEwMGY4ODMwIDB4MzA+OworCQkJY2xvY2tzID0gPCZnY2MgVVNCMzBfMF9NQVNURVJfQ0xLPjsKKwkJCWNsb2NrLW5hbWVzID0gInJlZiI7CisJCQkjcGh5LWNlbGxzID0gPDA+OworCisJCQlzdGF0dXMgPSAib2siOworCQl9OworCisJCXVzYjNfMDogdXNiMzBAMCB7CisJCQljb21wYXRpYmxlID0gInFjb20sZHdjMyI7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDE+OworCQkJY2xvY2tzID0gPCZnY2MgVVNCMzBfMF9NQVNURVJfQ0xLPjsKKwkJCWNsb2NrLW5hbWVzID0gImNvcmUiOworCisJCQlyYW5nZXM7CisKKwkJCXN0YXR1cyA9ICJvayI7CisKKwkJCWR3YzNAMTAwMDAwMDAgeworCQkJCWNvbXBhdGlibGUgPSAic25wcyxkd2MzIjsKKwkJCQlyZWcgPSA8MHgxMDAwMDAwMCAweGNkMDA+OworCQkJCWludGVycnVwdHMgPSA8MCAyMDUgMHg0PjsKKwkJCQlwaHlzID0gPCZoc19waHk+LCA8JnNzX3BoeT47CisJCQkJcGh5LW5hbWVzID0gInVzYjItcGh5IiwgInVzYjMtcGh5IjsKKwkJCQl0eC1maWZvLXJlc2l6ZTsKKwkJCQlkcl9tb2RlID0gImhvc3QiOworCQkJfTsKKwkJfTsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9yZW5lc2FzX3VzYmhzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvcmVuZXNhc191c2Jocy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q0OGY2MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvcmVuZXNhc191c2Jocy50eHQKQEAgLTAsMCArMSwyOSBAQAorUmVuZXNhcyBFbGVjdHJvbmljcyBVU0JIUyBkcml2ZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiBNdXN0IGNvbnRhaW4gb25lIG9mIHRoZSBmb2xsb3dpbmc6CisJLSAicmVuZXNhcyx1c2Jocy1yOGE3NzkwIgorCS0gInJlbmVzYXMsdXNiaHMtcjhhNzc5MSIKKwktICJyZW5lc2FzLHVzYmhzLXI4YTc3OTQiCisJLSAicmVuZXNhcyx1c2Jocy1yOGE3Nzk1IgorICAtIHJlZzogQmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIGZvciB0aGUgVVNCSFMKKyAgLSBpbnRlcnJ1cHRzOiBJbnRlcnJ1cHQgc3BlY2lmaWVyIGZvciB0aGUgVVNCSFMKKyAgLSBjbG9ja3M6IEEgbGlzdCBvZiBwaGFuZGxlICsgY2xvY2sgc3BlY2lmaWVyIHBhaXJzCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgIC0gcmVuZXNhcyxidXN3YWl0OiBJbnRlZ2VyIHRvIHVzZSBCVVNXQUlUIHJlZ2lzdGVyCisgIC0gcmVuZXNhcyxlbmFibGUtZ3BpbzogQSBncGlvIHNwZWNpZmllciB0byBjaGVjayBHUElPIGRldGVybWluaW5nIGlmIFVTQgorCQkJIGZ1bmN0aW9uIHNob3VsZCBiZSBlbmFibGVkCisgIC0gcGh5czogcGhhbmRsZSArIHBoeSBzcGVjaWZpZXIgcGFpcgorICAtIHBoeS1uYW1lczogbXVzdCBiZSAidXNiIgorICAtIGRtYXM6IE11c3QgY29udGFpbiBhIGxpc3Qgb2YgcmVmZXJlbmNlcyB0byBETUEgc3BlY2lmaWVycy4KKyAgLSBkbWEtbmFtZXMgOiBuYW1lZCAiY2glZCIsIHdoZXJlICVkIGlzIHRoZSBjaGFubmVsIG51bWJlciByYW5naW5nIGZyb20gemVybworICAgICAgICAgICAgICAgIHRvIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgKERuRklGT3MpIG1pbnVzIG9uZS4KKworRXhhbXBsZToKKwl1c2JoczogdXNiQGU2NTkwMDAwIHsKKwkJY29tcGF0aWJsZSA9ICJyZW5lc2FzLHVzYmhzLXI4YTc3OTAiOworCQlyZWcgPSA8MCAweGU2NTkwMDAwIDAgMHgxMDA+OworCQlpbnRlcnJ1cHRzID0gPDAgMTA3IElSUV9UWVBFX0xFVkVMX0hJR0g+OworCQljbG9ja3MgPSA8Jm1zdHA3X2Nsa3MgUjhBNzc5MF9DTEtfSFNVU0I+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL3NhbXN1bmctaHNvdGcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9zYW1zdW5nLWhzb3RnLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODNkNDI4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9zYW1zdW5nLWhzb3RnLnR4dApAQCAtMCwwICsxLDQwIEBACitTYW1zdW5nIEhpZ2ggU3BlZWQgVVNCIE9URyBjb250cm9sbGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgU2Ftc3VuZyBIU09URyBJUCBjYW4gYmUgZm91bmQgb24gU2Ftc3VuZyBTb0NzLCBmcm9tIFMzQzY0MDAgb253YXJkcy4KK0l0IGdpdmVzIGZ1bmN0aW9uYWxpdHkgb2YgT1RHLWNvbXBsaWFudCBVU0IgMi4wIGhvc3QgYW5kIGRldmljZSB3aXRoCitzdXBwb3J0IGZvciBVU0IgMi4wIGhpZ2gtc3BlZWQgKDQ4ME1icHMpIGFuZCBmdWxsLXNwZWVkICgxMiBNYnBzKQorb3BlcmF0aW9uLgorCitDdXJyZW50bHkgb25seSBkZXZpY2UgbW9kZSBpcyBzdXBwb3J0ZWQuCisKK0JpbmRpbmcgZGV0YWlscworLS0tLS0KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInNhbXN1bmcsczNjNjQwMC1oc290ZyIgc2hvdWxkIGJlIHVzZWQgZm9yIGFsbCBjdXJyZW50bHkKKyAgICBzdXBwb3J0ZWQgU29DLAorLSBpbnRlcnJ1cHQtcGFyZW50OiBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgdG8gd2hpY2ggdGhlCisgICAgaW50ZXJydXB0IHNpZ25hbCBvZiB0aGUgSFNPVEcgYmxvY2sgaXMgcm91dGVkLAorLSBpbnRlcnJ1cHRzOiBzcGVjaWZpZXIgb2YgaW50ZXJydXB0IHNpZ25hbCBvZiBpbnRlcnJ1cHQgY29udHJvbGxlciwKKyAgICBhY2NvcmRpbmcgdG8gYmluZGluZ3Mgb2YgaW50ZXJydXB0IGNvbnRyb2xsZXIsCistIGNsb2NrczogY29udGFpbnMgYW4gYXJyYXkgb2YgY2xvY2sgc3BlY2lmaWVyczoKKyAgICAtIGZpcnN0IGVudHJ5OiBPVEcgY2xvY2sKKy0gY2xvY2stbmFtZXM6IGNvbnRhaW5zIGFycmF5IG9mIGNsb2NrIG5hbWVzOgorICAgIC0gZmlyc3QgZW50cnk6IG11c3QgYmUgIm90ZyIKKy0gdnVzYl9kLXN1cHBseTogcGhhbmRsZSB0byB2b2x0YWdlIHJlZ3VsYXRvciBvZiBkaWdpdGFsIHNlY3Rpb24sCistIHZ1c2JfYS1zdXBwbHk6IHBoYW5kbGUgdG8gdm9sdGFnZSByZWd1bGF0b3Igb2YgYW5hbG9nIHNlY3Rpb24uCisKK0V4YW1wbGUKKy0tLS0tCisKKwloc290Z0AxMjQ4MDAwMCB7CisJCWNvbXBhdGlibGUgPSAic2Ftc3VuZyxzM2M2NDAwLWhzb3RnIjsKKwkJcmVnID0gPDB4MTI0ODAwMDAgMHgyMDAwMD47CisJCWludGVycnVwdHMgPSA8MCA3MSAwPjsKKwkJY2xvY2tzID0gPCZjbG9jayAzMDU+OworCQljbG9jay1uYW1lcyA9ICJvdGciOworCQl2dXNiX2Qtc3VwcGx5ID0gPCZ2dXNiX3JlZz47CisJCXZ1c2JfYS1zdXBwbHkgPSA8JnZ1c2JkYWNfcmVnPjsKKwl9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL3NwZWFyLXVzYi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL3NwZWFyLXVzYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhhNDY0YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2Ivc3BlYXItdXNiLnR4dApAQCAtMCwwICsxLDM5IEBACitTVCBTUEVBciBTb0MgVVNCIGNvbnRyb2xsZXJzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRUhDSToKKy0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6ICJzdCxzcGVhcjYwMC1laGNpIgorLSBpbnRlcnJ1cHQtcGFyZW50OiBTaG91bGQgYmUgdGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlcgorICB0aGF0IHNlcnZpY2VzIGludGVycnVwdHMgZm9yIHRoaXMgZGV2aWNlCistIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIHRoZSBFSENJIGludGVycnVwdAorCitFeGFtcGxlOgorCisJZWhjaUBlMTgwMDAwMCB7CisJCWNvbXBhdGlibGUgPSAic3Qsc3BlYXI2MDAtZWhjaSIsICJ1c2ItZWhjaSI7CisJCXJlZyA9IDwweGUxODAwMDAwIDB4MTAwMD47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JnZpYzE+OworCQlpbnRlcnJ1cHRzID0gPDI3PjsKKwl9OworCisKK09IQ0k6CistLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAic3Qsc3BlYXI2MDAtb2hjaSIKKy0gaW50ZXJydXB0LXBhcmVudDogU2hvdWxkIGJlIHRoZSBwaGFuZGxlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIKKyAgdGhhdCBzZXJ2aWNlcyBpbnRlcnJ1cHRzIGZvciB0aGlzIGRldmljZQorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiB0aGUgT0hDSSBpbnRlcnJ1cHQKKworRXhhbXBsZToKKworCW9oY2lAZTE5MDAwMDAgeworCQljb21wYXRpYmxlID0gInN0LHNwZWFyNjAwLW9oY2kiLCAidXNiLW9oY2kiOworCQlyZWcgPSA8MHhlMTgwMDAwMCAweDEwMDA+OworCQlpbnRlcnJ1cHQtcGFyZW50ID0gPCZ2aWMxPjsKKwkJaW50ZXJydXB0cyA9IDwyNj47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvdHdseHh4eC11c2IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi90d2x4eHh4LXVzYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTczMjdhMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvdHdseHh4eC11c2IudHh0CkBAIC0wLDAgKzEsNDMgQEAKK1VTQiBDT01QQVJBVE9SIE9GIFRXTCBDSElQUworCitUV0w2MDMwIFVTQiBDT01QQVJBVE9SCisgLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJ0aSx0d2w2MDMwLXVzYiIKKyAtIGludGVycnVwdHMgOiBUd28gaW50ZXJydXB0IG51bWJlcnMgdG8gdGhlIGNwdSBzaG91bGQgYmUgc3BlY2lmaWVkLiBGaXJzdAorICAgaW50ZXJydXB0IG51bWJlciBpcyB0aGUgb3RnIGludGVycnVwdCBudW1iZXIgdGhhdCByYWlzZXMgSUQgaW50ZXJydXB0cyB3aGVuCisgICB0aGUgY29udHJvbGxlciBoYXMgdG8gYWN0IGFzIGhvc3QgYW5kIHRoZSBzZWNvbmQgaW50ZXJydXB0IG51bWJlciBpcyB0aGUKKyAgIHVzYiBpbnRlcnJ1cHQgbnVtYmVyIHRoYXQgcmFpc2VzIFZCVVMgaW50ZXJydXB0cyB3aGVuIHRoZSBjb250cm9sbGVyIGhhcyB0bworICAgYWN0IGFzIGRldmljZQorIC0gdXNiLXN1cHBseSA6IHBoYW5kbGUgdG8gdGhlIHJlZ3VsYXRvciBkZXZpY2UgdHJlZSBub2RlLiBJdCBzaG91bGQgYmUgdnVzYgorICAgaWYgaXQgaXMgdHdsNjAzMCBvciBsZG91c2IgaWYgaXQgaXMgdHdsNjAzMiBzdWJjbGFzcy4KKwordHdsNjAzMC11c2IgeworCWNvbXBhdGlibGUgPSAidGksdHdsNjAzMC11c2IiOworCWludGVycnVwdHMgPSA8IDQgMTAgPjsKK307CisKK0JvYXJkIHNwZWNpZmljIGRldmljZSBub2RlIGVudHJ5CismdHdsNjAzMC11c2IgeworCXVzYi1zdXBwbHkgPSA8JnZ1c2I+OworfTsKKworVFdMNDAzMCBVU0IgUEhZIEFORCBDT01QQVJBVE9SCisgLSBjb21wYXRpYmxlIDogU2hvdWxkIGJlICJ0aSx0d2w0MDMwLXVzYiIKKyAtIGludGVycnVwdHMgOiBUaGUgaW50ZXJydXB0IG51bWJlcnMgdG8gdGhlIGNwdSBzaG91bGQgYmUgc3BlY2lmaWVkLiBGaXJzdAorICAgaW50ZXJydXB0IG51bWJlciBpcyB0aGUgb3RnIGludGVycnVwdCBudW1iZXIgdGhhdCByYWlzZXMgSUQgaW50ZXJydXB0cworICAgYW5kIFZCVVMgaW50ZXJydXB0cy4gVGhlIHNlY29uZCBpbnRlcnJ1cHQgbnVtYmVyIGlzIG9wdGlvbmFsLgorIC0gPHN1cHBseS1uYW1lPi1zdXBwbHkgOiBwaGFuZGxlIHRvIHRoZSByZWd1bGF0b3IgZGV2aWNlIHRyZWUgbm9kZS4KKyAgIDxzdXBwbHktbmFtZT4gc2hvdWxkIGJlIHZ1c2IxdjUsIHZ1c2IxdjggYW5kIHZ1c2IzdjEKKyAtIHVzYl9tb2RlIDogVGhlIG1vZGUgdXNlZCBieSB0aGUgcGh5IHRvIGNvbm5lY3QgdG8gdGhlIGNvbnRyb2xsZXIuICIxIgorICAgc3BlY2lmaWVzICJVTFBJIiBtb2RlIGFuZCAiMiIgc3BlY2lmaWVzICJDRUEyMDExXzNQSU4iIG1vZGUuCisKK0lmIGEgc2libGluZyBub2RlIGlzIGNvbXBhdGlibGUgInRpLHR3bDQwMzAtYmNpIiwgdGhlbiBpdCB3aWxsIGZpbmQKK3RoaXMgZGV2aWNlIGFuZCBxdWVyeSBpdCBmb3IgVVNCIHBvd2VyIHN0YXR1cy4KKwordHdsNDAzMC11c2IgeworCWNvbXBhdGlibGUgPSAidGksdHdsNDAzMC11c2IiOworCWludGVycnVwdHMgPSA8IDEwIDQgPjsKKwl1c2IxdjUtc3VwcGx5ID0gPCZ2dXNiMXY1PjsKKwl1c2Ixdjgtc3VwcGx5ID0gPCZ2dXNiMXY4PjsKKwl1c2IzdjEtc3VwcGx5ID0gPCZ2dXNiM3YxPjsKKwl1c2JfbW9kZSA9IDwxPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL3VkYy14aWxpbngudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi91ZGMteGlsaW54LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2I0ZTM5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi91ZGMteGlsaW54LnR4dApAQCAtMCwwICsxLDE4IEBACitYaWxpbnggVVNCMiBkZXZpY2UgY29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlCQk6IFNob3VsZCBiZSAieGxueCx1c2IyLWRldmljZS00LjAwLmEiCistIHJlZwkJCTogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSBVU0IyCisJCQkgIGRldmljZSByZWdpc3RlcnMgbWFwLgorLSBpbnRlcnJ1cHRzCQk6IFNob3VsZCBjb250YWluIHNpbmdsZSBpcnEgbGluZSBvZiBVU0IyIGRldmljZQorCQkJICBjb250cm9sbGVyCistIHhsbngsaGFzLWJ1aWx0aW4tZG1hCTogaWYgRE1BIGlzIGluY2x1ZGVkCisKK0V4YW1wbGU6CisgCQlheGktdXNiMi1kZXZpY2VANDJlMDAwMDAgeworICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJ4bG54LHVzYjItZGV2aWNlLTQuMDAuYSI7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRzID0gPDB4MCAweDM5IDB4MT47CisgICAgICAgICAgICAgICAgICAgICAgICByZWcgPSA8MHg0MmUwMDAwMCAweDEwMDAwPjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHhsbngsaGFzLWJ1aWx0aW4tZG1hOworICAgICAgICAgICAgICAgIH07CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvdXNiLWVoY2kudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi91c2ItZWhjaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTEyZDYwMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvdXNiLWVoY2kudHh0CkBAIC0wLDAgKzEsNDAgQEAKK1VTQiBFSENJIGNvbnRyb2xsZXJzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisgIC0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSAiZ2VuZXJpYy1laGNpIi4KKyAgLSByZWcgOiBzaG91bGQgY29udGFpbiBhdCBsZWFzdCBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHN0YW5kYXJkIEVIQ0kKKyAgICByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UuIE9wdGlvbmFsIHBsYXRmb3JtLWRlcGVuZGVudCByZWdpc3RlcnMKKyAgICAoZGVidWctcG9ydCBvciBvdGhlcikgY2FuIGJlIGFsc28gc3BlY2lmaWVkIGhlcmUsIGJ1dCBvbmx5IGFmdGVyCisgICAgZGVmaW5pdGlvbiBvZiBzdGFuZGFyZCBFSENJIHJlZ2lzdGVycy4KKyAgLSBpbnRlcnJ1cHRzIDogb25lIEVIQ0kgaW50ZXJydXB0IHNob3VsZCBiZSBkZXNjcmliZWQgaGVyZS4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKyAtIGJpZy1lbmRpYW4tcmVncyA6IGJvb2xlYW4sIHNldCB0aGlzIGZvciBoY2RzIHdpdGggYmlnLWVuZGlhbiByZWdpc3RlcnMKKyAtIGJpZy1lbmRpYW4tZGVzYyA6IGJvb2xlYW4sIHNldCB0aGlzIGZvciBoY2RzIHdpdGggYmlnLWVuZGlhbiBkZXNjcmlwdG9ycworIC0gYmlnLWVuZGlhbiA6IGJvb2xlYW4sIGZvciBoY2RzIHdpdGggYmlnLWVuZGlhbi1yZWdzICsgYmlnLWVuZGlhbi1kZXNjCisgLSBuZWVkcy1yZXNldC1vbi1yZXN1bWUgOiBib29sZWFuLCBzZXQgdGhpcyB0byBmb3JjZSBFSENJIHJlc2V0IGFmdGVyIHJlc3VtZQorIC0gaGFzLXRyYW5zYWN0aW9uLXRyYW5zbGF0b3IgOiBib29sZWFuLCBzZXQgdGhpcyBpZiBFSENJIGhhdmUgYSBUcmFuc2FjdGlvbgorCQkJCVRyYW5zbGF0b3IgYnVpbHQgaW50byB0aGUgcm9vdCBodWIuCisgLSBjbG9ja3MgOiBhIGxpc3Qgb2YgcGhhbmRsZSArIGNsb2NrIHNwZWNpZmllciBwYWlycworIC0gcGh5cyA6IHBoYW5kbGUgKyBwaHkgc3BlY2lmaWVyIHBhaXIKKyAtIHBoeS1uYW1lcyA6ICJ1c2IiCisgLSByZXNldHMgOiBwaGFuZGxlICsgcmVzZXQgc3BlY2lmaWVyIHBhaXIKKworRXhhbXBsZSAoU2VxdW9pYSA0NDBFUHgpOgorICAgIGVoY2lAZTAwMDAzMDAgeworCSAgIGNvbXBhdGlibGUgPSAiaWJtLHVzYi1laGNpLTQ0MGVweCIsICJ1c2ItZWhjaSI7CisJICAgaW50ZXJydXB0LXBhcmVudCA9IDwmVUlDMD47CisJICAgaW50ZXJydXB0cyA9IDwxYSA0PjsKKwkgICByZWcgPSA8MCBlMDAwMDMwMCA5MCAwIGUwMDAwMzkwIDcwPjsKKwkgICBiaWctZW5kaWFuOworICAgfTsKKworRXhhbXBsZSAoQWxsd2lubmVyIHN1bjRpIEExMCBTb0MpOgorICAgZWhjaTA6IHVzYkAwMWMxNDAwMCB7CisJICAgY29tcGF0aWJsZSA9ICJhbGx3aW5uZXIsc3VuNGktYTEwLWVoY2kiLCAiZ2VuZXJpYy1laGNpIjsKKwkgICByZWcgPSA8MHgwMWMxNDAwMCAweDEwMD47CisJICAgaW50ZXJydXB0cyA9IDwzOT47CisJICAgY2xvY2tzID0gPCZhaGJfZ2F0ZXMgMT47CisJICAgcGh5cyA9IDwmdXNicGh5IDE+OworCSAgIHBoeS1uYW1lcyA9ICJ1c2IiOworICAgfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvdXNiLW5vcC14Y2Vpdi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL3VzYi1ub3AteGNlaXYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZTAxYzgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL3VzYi1ub3AteGNlaXYudHh0CkBAIC0wLDAgKzEsNDEgQEAKK1VTQiBOT1AgUEhZCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IHNob3VsZCBiZSB1c2Itbm9wLXhjZWl2CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrczogcGhhbmRsZSB0byB0aGUgUEhZIGNsb2NrLiBVc2UgYXMgcGVyIERvY3VtZW50YXRpb24vZGV2aWNldHJlZQorICAvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CisgIFRoaXMgcHJvcGVydHkgaXMgcmVxdWlyZWQgaWYgY2xvY2stZnJlcXVlbmN5IGlzIHNwZWNpZmllZC4KKworLSBjbG9jay1uYW1lczogU2hvdWxkIGJlICJtYWluX2NsayIKKworLSBjbG9jay1mcmVxdWVuY3k6IHRoZSBjbG9jayBmcmVxdWVuY3kgKGluIEh6KSB0aGF0IHRoZSBQSFkgY2xvY2sgbXVzdAorICBiZSBjb25maWd1cmVkIHRvLgorCistIHZjYy1zdXBwbHk6IHBoYW5kbGUgdG8gdGhlIHJlZ3VsYXRvciB0aGF0IHByb3ZpZGVzIHBvd2VyIHRvIHRoZSBQSFkuCisKKy0gcmVzZXQtZ3Bpb3M6IFNob3VsZCBzcGVjaWZ5IHRoZSBHUElPIGZvciByZXNldC4KKworLSB2YnVzLWRldGVjdC1ncGlvOiBzaG91bGQgc3BlY2lmeSB0aGUgR1BJTyBkZXRlY3RpbmcgYSBWQnVzIGluc2VydGlvbgorICAgICAgICAgICAgICAgICAgICAoc2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8udHh0KQorLSB2YnVzLXJlZ3VsYXRvciA6IHNob3VsZCBzcGVjaWZpeSB0aGUgcmVndWxhdG9yIHN1cHBseWluZyBjdXJyZW50IGRyYXduIGZyb20KKyAgdGhlIFZCdXMgbGluZSAoc2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvcmVndWxhdG9yLnR4dCkuCisKK0V4YW1wbGU6CisKKwloc3VzYjFfcGh5IHsKKwkJY29tcGF0aWJsZSA9ICJ1c2Itbm9wLXhjZWl2IjsKKwkJY2xvY2stZnJlcXVlbmN5ID0gPDE5MjAwMDAwPjsKKwkJY2xvY2tzID0gPCZvc2MgMD47CisJCWNsb2NrLW5hbWVzID0gIm1haW5fY2xrIjsKKwkJdmNjLXN1cHBseSA9IDwmaHN1c2IxX3ZjY19yZWd1bGF0b3I+OworCQlyZXNldC1ncGlvcyA9IDwmZ3BpbzEgNyBHUElPX0FDVElWRV9MT1c+OworCQl2YnVzLWRldGVjdC1ncGlvID0gPCZncGlvMiAxMyBHUElPX0FDVElWRV9ISUdIPjsKKwkJdmJ1cy1yZWd1bGF0b3IgPSA8JnZidXNfcmVndWxhdG9yPjsKKwl9OworCitoc3VzYjFfcGh5IGlzIGEgTk9QIFVTQiBQSFkgZGV2aWNlIHRoYXQgZ2V0cyBpdHMgY2xvY2sgZnJvbSBhbiBvc2NpbGxhdG9yCithbmQgZXhwZWN0cyB0aGF0IGNsb2NrIHRvIGJlIGNvbmZpZ3VyZWQgdG8gMTkuMk1IeiBieSB0aGUgTk9QIFBIWSBkcml2ZXIuCitoc3VzYjFfdmNjX3JlZ3VsYXRvciBwcm92aWRlcyBwb3dlciB0byB0aGUgUEhZIGFuZCBHUElPIDcgY29udHJvbHMgUkVTRVQuCitHUElPIDEzIGRldGVjdHMgVkJ1cyBpbnNlcnRpb24sIGFuZCBhY2NvcmRpbmdseSBub3RpZmllcyB0aGUgdmJ1cy1yZWd1bGF0b3IuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL3VzYi1vaGNpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvdXNiLW9oY2kudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5MjMzYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL3VzYi1vaGNpLnR4dApAQCAtMCwwICsxLDI4IEBACitVU0IgT0hDSSBjb250cm9sbGVycworCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogImdlbmVyaWMtb2hjaSIKKy0gcmVnIDogb2hjaSBjb250cm9sbGVyIHJlZ2lzdGVyIHJhbmdlIChhZGRyZXNzIGFuZCBsZW5ndGgpCistIGludGVycnVwdHMgOiBvaGNpIGNvbnRyb2xsZXIgaW50ZXJydXB0CisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGJpZy1lbmRpYW4tcmVncyA6IGJvb2xlYW4sIHNldCB0aGlzIGZvciBoY2RzIHdpdGggYmlnLWVuZGlhbiByZWdpc3RlcnMKKy0gYmlnLWVuZGlhbi1kZXNjIDogYm9vbGVhbiwgc2V0IHRoaXMgZm9yIGhjZHMgd2l0aCBiaWctZW5kaWFuIGRlc2NyaXB0b3JzCistIGJpZy1lbmRpYW4gOiBib29sZWFuLCBmb3IgaGNkcyB3aXRoIGJpZy1lbmRpYW4tcmVncyArIGJpZy1lbmRpYW4tZGVzYworLSBuby1iaWctZnJhbWUtbm8gOiBib29sZWFuLCBzZXQgaWYgZnJhbWVfbm8gbGl2ZXMgaW4gYml0cyBbMTU6MF0gb2YgSENDQQorLSBudW0tcG9ydHMgOiB1MzIsIHRvIG92ZXJyaWRlIHRoZSBkZXRlY3RlZCBwb3J0IGNvdW50CistIGNsb2NrcyA6IGEgbGlzdCBvZiBwaGFuZGxlICsgY2xvY2sgc3BlY2lmaWVyIHBhaXJzCistIHBoeXMgOiBwaGFuZGxlICsgcGh5IHNwZWNpZmllciBwYWlyCistIHBoeS1uYW1lcyA6ICJ1c2IiCistIHJlc2V0cyA6IHBoYW5kbGUgKyByZXNldCBzcGVjaWZpZXIgcGFpcgorCitFeGFtcGxlOgorCisJb2hjaTA6IHVzYkAwMWMxNDQwMCB7CisJCWNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjRpLWExMC1vaGNpIiwgImdlbmVyaWMtb2hjaSI7CisJCXJlZyA9IDwweDAxYzE0NDAwIDB4MTAwPjsKKwkJaW50ZXJydXB0cyA9IDw2ND47CisJCWNsb2NrcyA9IDwmdXNiX2NsayA2PiwgPCZhaGJfZ2F0ZXMgMj47CisJCXBoeXMgPSA8JnVzYnBoeSAxPjsKKwkJcGh5LW5hbWVzID0gInVzYiI7CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvdXNiLXVoY2kudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi91c2ItdWhjaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk4MTMzNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvdXNiLXVoY2kudHh0CkBAIC0wLDAgKzEsMTUgQEAKK0dlbmVyaWMgUGxhdGZvcm0gVUhDSSBDb250cm9sbGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlIDogImdlbmVyaWMtdWhjaSIgKGRlcHJlY2F0ZWQ6ICJwbGF0Zm9ybS11aGNpIikKKy0gcmVnIDogU2hvdWxkIGNvbnRhaW4gMSByZWdpc3RlciByYW5nZXMoYWRkcmVzcyBhbmQgbGVuZ3RoKQorLSBpbnRlcnJ1cHRzIDogVUhDSSBjb250cm9sbGVyIGludGVycnVwdAorCitFeGFtcGxlOgorCisJdWhjaUBkODAwN2IwMCB7CisJCWNvbXBhdGlibGUgPSAiZ2VuZXJpYy11aGNpIjsKKwkJcmVnID0gPDB4ZDgwMDdiMDAgMHgyMDA+OworCQlpbnRlcnJ1cHRzID0gPDQzPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi91c2IteGhjaS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL3VzYi14aGNpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmY2N2YwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi91c2IteGhjaS50eHQKQEAgLTAsMCArMSwyMSBAQAorVVNCIHhIQ0kgY29udHJvbGxlcnMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKyAgLSBjb21wYXRpYmxlOiBzaG91bGQgYmUgb25lIG9mICJnZW5lcmljLXhoY2kiLAorICAgICJtYXJ2ZWxsLGFybWFkYS0zNzUteGhjaSIsICJtYXJ2ZWxsLGFybWFkYS0zODAteGhjaSIsCisgICAgInJlbmVzYXMseGhjaS1yOGE3NzkwIiwgInJlbmVzYXMseGhjaS1yOGE3NzkxIiAoZGVwcmVjYXRlZDoKKyAgICAieGhjaS1wbGF0Zm9ybSIpLgorICAtIHJlZzogc2hvdWxkIGNvbnRhaW4gYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSBzdGFuZGFyZCBYSENJCisgICAgcmVnaXN0ZXIgc2V0IGZvciB0aGUgZGV2aWNlLgorICAtIGludGVycnVwdHM6IG9uZSBYSENJIGludGVycnVwdCBzaG91bGQgYmUgZGVzY3JpYmVkIGhlcmUuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgIC0gY2xvY2tzOiByZWZlcmVuY2UgdG8gYSBjbG9jaworICAtIHVzYjMtbHBtLWNhcGFibGU6IGRldGVybWluZXMgaWYgcGxhdGZvcm0gaXMgVVNCMyBMUE0gY2FwYWJsZQorCitFeGFtcGxlOgorCXVzYkBmMDkzMTAwMCB7CisJCWNvbXBhdGlibGUgPSAiZ2VuZXJpYy14aGNpIjsKKwkJcmVnID0gPDB4ZjA5MzEwMDAgMHg4Yzg+OworCQlpbnRlcnJ1cHRzID0gPDB4MCAweDRlIDB4MD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvdXNiMzUwMy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL3VzYjM1MDMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyNDkzYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL3VzYjM1MDMudHh0CkBAIC0wLDAgKzEsMzYgQEAKK1NNU0MgVVNCMzUwMyBIaWdoLVNwZWVkIEh1YiBDb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAic21zYyx1c2IzNTAzIiBvciAic21zYyx1c2IzNTAzYSIuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHJlZzogU3BlY2lmaWVzIHRoZSBpMmMgc2xhdmUgYWRkcmVzcywgaXQgaXMgcmVxdWlyZWQgYW5kIHNob3VsZCBiZSAweDA4CisgICAgICAgaWYgSTJDIGlzIHVzZWQuCistIGNvbm5lY3QtZ3Bpb3M6IFNob3VsZCBzcGVjaWZ5IEdQSU8gZm9yIGNvbm5lY3QuCistIGRpc2FibGVkLXBvcnRzOiBTaG91bGQgc3BlY2lmeSB0aGUgcG9ydHMgdW51c2VkLgorCScxJyBvciAnMicgb3IgJzMnIGFyZSBhdmFpbGFibGUgZm9yIHRoaXMgcHJvcGVydHkgdG8gZGVzY3JpYmUgdGhlIHBvcnQKKwludW1iZXIuIDF+MyBwcm9wZXJ0eSB2YWx1ZXMgYXJlIHBvc3NpYmxlIHRvIGJlIGRlc2NyaWJlZC4KKwlEbyBub3QgZGVzY3JpYmUgdGhpcyBwcm9wZXJ0eSBpZiBhbGwgcG9ydHMgaGF2ZSB0byBiZSBlbmFibGVkLgorLSBpbnRuLWdwaW9zOiBTaG91bGQgc3BlY2lmeSBHUElPIGZvciBpbnRlcnJ1cHQuCistIHJlc2V0LWdwaW9zOiBTaG91bGQgc3BlY2lmeSBHUElPIGZvciByZXNldC4KKy0gaW5pdGlhbC1tb2RlOiBTaG91bGQgc3BlY2lmeSBpbml0aWFsIG1vZGUuCisgICAgICAgICAgICAgICAgKDEgZm9yIEhVQiBtb2RlLCAyIGZvciBTVEFOREJZIG1vZGUpCistIHJlZmNsazogQ2xvY2sgdXNlZCBmb3IgZHJpdmluZyBSRUZDTEsgc2lnbmFsIChvcHRpb25hbCwgaWYgbm90IHByb3ZpZGVkCisJdGhlIGRyaXZlciBhc3N1bWVzIHRoYXQgY2xvY2sgc2lnbmFsIGlzIGFsd2F5cyBhdmFpbGFibGUsIGl0cworCXJhdGUgaXMgc3BlY2lmaWVkIGJ5IFJFRl9TRUwgcGlucyBhbmQgYSB2YWx1ZSBmcm9tIHRoZSBwcmltYXJ5CisJcmVmZXJlbmNlIGNsb2NrIGZyZXF1ZW5jaWVzIHRhYmxlIGlzIHVzZWQpCistIHJlZmNsay1mcmVxdWVuY3k6IEZyZXF1ZW5jeSBvZiB0aGUgUkVGQ0xLIHNpZ25hbCBhcyBkZWZpbmVkIGJ5IFJFRl9TRUwKKwlwaW5zIChvcHRpb25hbCwgaWYgbm90IHByb3ZpZGVkLCBkcml2ZXIgd2lsbCBub3Qgc2V0IHJhdGUgb2YgdGhlCisJUkVGQ0xLIHNpZ25hbCBhbmQgYXNzdW1lIHRoYXQgYSB2YWx1ZSBmcm9tIHRoZSBwcmltYXJ5IHJlZmVyZW5jZQorCWNsb2NrIGZyZXF1ZW5jaWVzIHRhYmxlIGlzIHVzZWQpCisKK0V4YW1wbGVzOgorCXVzYjM1MDNAMDggeworCQljb21wYXRpYmxlID0gInNtc2MsdXNiMzUwMyI7CisJCXJlZyA9IDwweDA4PjsKKwkJY29ubmVjdC1ncGlvcyA9IDwmZ3B4MyAwIDE+OworCQlkaXNhYmxlZC1wb3J0cyA9IDwyIDM+OworCQlpbnRuLWdwaW9zID0gPCZncHgzIDQgMT47CisJCXJlc2V0LWdwaW9zID0gPCZncHgzIDUgMT47CisJCWluaXRpYWwtbW9kZSA9IDwxPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi91c2JtaXNjLWlteC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL3VzYm1pc2MtaW14LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTM5ZDRlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi91c2JtaXNjLWlteC50eHQKQEAgLTAsMCArMSwxNiBAQAorKiBGcmVlc2NhbGUgaS5NWCBub24tY29yZSByZWdpc3RlcnMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gI2luZGV4LWNlbGxzOiBDZWxscyB1c2VkIHRvIGRlc2NpYmUgdXNiIGNvbnRyb2xsZXIgaW5kZXguIFNob3VsZCBiZSA8MT4KKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlIG9uZSBvZiBiZWxvdzoKKwkiZnNsLGlteDZxLXVzYm1pc2MiIGZvciBpbXg2cQorCSJmc2wsdmY2MTAtdXNibWlzYyIgZm9yIFZ5YnJpZCB2ZjYxMAorCSJmc2wsaW14NnN4LXVzYm1pc2MiIGZvciBpbXg2c3gKKy0gcmVnOiBTaG91bGQgY29udGFpbiByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorCitFeGFtcGxlczoKK3VzYm1pc2NAMDIxODQ4MDAgeworCSNpbmRleC1jZWxscyA9IDwxPjsKKwljb21wYXRpYmxlID0gImZzbCxpbXg2cS11c2JtaXNjIjsKKwlyZWcgPSA8MHgwMjE4NDgwMCAweDIwMD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi91eDUwMC11c2IudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi91eDUwMC11c2IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzOWE0MWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL3V4NTAwLXVzYi50eHQKQEAgLTAsMCArMSw1MCBAQAorVXg1MDAgTVVTQgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorIC0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAic3Rlcmljc3NvbixkYjg1MDAtbXVzYiIKKyAtIHJlZyAgICAgICAgOiBPZmZzZXQgYW5kIGxlbmd0aCBvZiByZWdpc3RlcnMKKyAtIGludGVycnVwdHMgOiBJbnRlcnJ1cHQ7IG1vZGUsIG51bWJlciBhbmQgdHJpZ2dlcgorIC0gZHJfbW9kZSAgICA6IER1YWwtcm9sZTsgZWl0aGVyIGhvc3QgbW9kZSAiaG9zdCIsIHBlcmlwaGVyYWwgbW9kZSAicGVyaXBoZXJhbCIKKyAgICAgICAgICAgICAgICBvciBib3RoICJvdGciCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisgLSBkbWFzICAgICAgIDogQSBsaXN0IG9mIGRtYSBjaGFubmVsczsKKyAgICAgICAgICAgICAgICBkbWEtY29udHJvbGxlciwgZXZlbnQtbGluZSwgZml4ZWQtY2hhbm5lbCwgZmxhZ3MKKyAtIGRtYS1uYW1lcyAgOiBBbiBvcmRlcmVkIGxpc3Qgb2YgY2hhbm5lbCBuYW1lcyBhZmZpbGlhdGVkIHRvIHRoZSBhYm92ZQorCitFeGFtcGxlOgorCit1c2JfcGVyNUBhMDNlMDAwMCB7CisJY29tcGF0aWJsZSA9ICJzdGVyaWNzc29uLGRiODUwMC1tdXNiIjsKKwlyZWcgPSA8MHhhMDNlMDAwMCAweDEwMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDAgMjMgMHg0PjsKKwlpbnRlcnJ1cHQtbmFtZXMgPSAibWMiOworCisJZHJfbW9kZSA9ICJvdGciOworCisJZG1hcyA9IDwmZG1hIDM4IDAgMHgyPiwgLyogTG9naWNhbCAtIERldlRvTWVtICovCisJICAgICAgIDwmZG1hIDM4IDAgMHgwPiwgLyogTG9naWNhbCAtIE1lbVRvRGV2ICovCisJICAgICAgIDwmZG1hIDM3IDAgMHgyPiwgLyogTG9naWNhbCAtIERldlRvTWVtICovCisJICAgICAgIDwmZG1hIDM3IDAgMHgwPiwgLyogTG9naWNhbCAtIE1lbVRvRGV2ICovCisJICAgICAgIDwmZG1hIDM2IDAgMHgyPiwgLyogTG9naWNhbCAtIERldlRvTWVtICovCisJICAgICAgIDwmZG1hIDM2IDAgMHgwPiwgLyogTG9naWNhbCAtIE1lbVRvRGV2ICovCisJICAgICAgIDwmZG1hIDE5IDAgMHgyPiwgLyogTG9naWNhbCAtIERldlRvTWVtICovCisJICAgICAgIDwmZG1hIDE5IDAgMHgwPiwgLyogTG9naWNhbCAtIE1lbVRvRGV2ICovCisJICAgICAgIDwmZG1hIDE4IDAgMHgyPiwgLyogTG9naWNhbCAtIERldlRvTWVtICovCisJICAgICAgIDwmZG1hIDE4IDAgMHgwPiwgLyogTG9naWNhbCAtIE1lbVRvRGV2ICovCisJICAgICAgIDwmZG1hIDE3IDAgMHgyPiwgLyogTG9naWNhbCAtIERldlRvTWVtICovCisJICAgICAgIDwmZG1hIDE3IDAgMHgwPiwgLyogTG9naWNhbCAtIE1lbVRvRGV2ICovCisJICAgICAgIDwmZG1hIDE2IDAgMHgyPiwgLyogTG9naWNhbCAtIERldlRvTWVtICovCisJICAgICAgIDwmZG1hIDE2IDAgMHgwPiwgLyogTG9naWNhbCAtIE1lbVRvRGV2ICovCisJICAgICAgIDwmZG1hIDM5IDAgMHgyPiwgLyogTG9naWNhbCAtIERldlRvTWVtICovCisJICAgICAgIDwmZG1hIDM5IDAgMHgwPjsgLyogTG9naWNhbCAtIE1lbVRvRGV2ICovCisKKwlkbWEtbmFtZXMgPSAiaWVwXzFfOSIsICAib2VwXzFfOSIsCisJCSAgICAiaWVwXzJfMTAiLCAib2VwXzJfMTAiLAorCQkgICAgImllcF8zXzExIiwgIm9lcF8zXzExIiwKKwkJICAgICJpZXBfNF8xMiIsICJvZXBfNF8xMiIsCisJCSAgICAiaWVwXzVfMTMiLCAib2VwXzVfMTMiLAorCQkgICAgImllcF82XzE0IiwgIm9lcF82XzE0IiwKKwkJICAgICJpZXBfN18xNSIsICJvZXBfN18xNSIsCisJCSAgICAiaWVwXzgiLCAgICAib2VwXzgiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92ZW5kb3ItcHJlZml4ZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZlbmRvci1wcmVmaXhlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThkYzE3NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92ZW5kb3ItcHJlZml4ZXMudHh0CkBAIC0wLDAgKzEsMjU0IEBACitEZXZpY2UgdHJlZSBiaW5kaW5nIHZlbmRvciBwcmVmaXggcmVnaXN0cnkuICBLZWVwIGxpc3QgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLgorCitUaGlzIGlzbid0IGFuIGV4aGF1c3RpdmUgbGlzdCwgYnV0IHlvdSBzaG91bGQgYWRkIG5ldyBwcmVmaXhlcyB0byBpdCBiZWZvcmUKK3VzaW5nIHRoZW0gdG8gYXZvaWQgbmFtZS1zcGFjZSBjb2xsaXNpb25zLgorCithYmlsaXMJQWJpbGlzIFN5c3RlbXMKK2FiY24JQWJyYWNvbiBDb3Jwb3JhdGlvbgorYWN0aXZlLXNlbWkJQWN0aXZlLVNlbWkgSW50ZXJuYXRpb25hbCBJbmMKK2FkCUF2aW9uaWMgRGVzaWduIEdtYkgKK2FkYXB0ZXZhCUFkYXB0ZXZhLCBJbmMuCithZGgJQUQgSG9sZGluZ3MgUGxjLgorYWRpCUFuYWxvZyBEZXZpY2VzLCBJbmMuCithZXJvZmxleGdhaXNsZXIJQWVyb2ZsZXggR2Fpc2xlciBBQgorYWwJQW5uYXB1cm5hIExhYnMKK2FsbHdpbm5lcglBbGx3aW5uZXIgVGVjaG5vbG9neSBDby4sIEx0ZC4KK2FscGhhc2NhbGUJQWxwaGFTY2FsZSBJbnRlZ3JhdGVkIENpcmN1aXRzIFN5c3RlbXMsIEluYy4KK2FsdHIJQWx0ZXJhIENvcnAuCithbWNjCUFwcGxpZWQgTWljcm8gQ2lyY3VpdHMgQ29ycG9yYXRpb24gKEFQTSwgZm9ybWFsbHkgQU1DQykKK2FtZAlBZHZhbmNlZCBNaWNybyBEZXZpY2VzIChBTUQpLCBJbmMuCithbWxvZ2ljCUFtbG9naWMsIEluYy4KK2FtcGlyZQlBbXBpcmUgQ28uLCBMdGQuCithbXMJQU1TIEFHCithbXN0YW9zCUFNUy1UYW9zIEluYy4KK2FwbQlBcHBsaWVkIE1pY3JvIENpcmN1aXRzIENvcnBvcmF0aW9uIChBUE0pCithcHRpbmEJQXB0aW5hIEltYWdpbmcKK2FyYXNhbglBcmFzYW4gQ2hpcCBTeXN0ZW1zCithcm0JQVJNIEx0ZC4KK2FybWFkZXVzCUFSTWFkZXVzIFN5c3RlbXMgU0FSTAorYXJ0ZXN5bglBcnRlc3luIEVtYmVkZGVkIFRlY2hub2xvZ2llcyBJbmMuCithc2FoaS1rYXNlaQlBc2FoaSBLYXNlaSBDb3JwLgorYXRtZWwJQXRtZWwgQ29ycG9yYXRpb24KK2F1bwlBVSBPcHRyb25pY3MgQ29ycG9yYXRpb24KK2F2YWdvCUF2YWdvIFRlY2hub2xvZ2llcworYXZpYQlhdmlhIHNlbWljb25kdWN0b3IKK2F2aWMJU2hhbmdoYWkgQVZJQyBPcHRvZWxlY3Ryb25pY3MgQ28uLCBMdGQuCitheGlzCUF4aXMgQ29tbXVuaWNhdGlvbnMgQUIKK2Jvc2NoCUJvc2NoIFNlbnNvcnRlYyBHbWJICitib3VuZGFyeQlCb3VuZGFyeSBEZXZpY2VzIEluYy4KK2JyY20JQnJvYWRjb20gQ29ycG9yYXRpb24KK2J1ZmZhbG8JQnVmZmFsbywgSW5jLgorY2FseGVkYQlDYWx4ZWRhCitjYXBlbGxhCUNhcGVsbGEgTWljcm9zeXN0ZW1zLCBJbmMKK2Nhdml1bQlDYXZpdW0sIEluYy4KK2NkbnMJQ2FkZW5jZSBEZXNpZ24gU3lzdGVtcyBJbmMuCitjZXZhCUNldmEsIEluYy4KK2NoaXBpZGVhCUNoaXBpZGVhLCBJbmMKK2NoaXBvbmUJCUNoaXBPbmUKK2NoaXBzcGFyawlDaGlwU1BBUksKK2NocnAJQ29tbW9uIEhhcmR3YXJlIFJlZmVyZW5jZSBQbGF0Zm9ybQorY2h1bmdod2EJQ2h1bmdod2EgUGljdHVyZSBUdWJlcyBMdGQuCitjaWFhCUNvbXB1dGFkb3JhIEluZHVzdHJpYWwgQWJpZXJ0YSBBcmdlbnRpbmEKK2NpcnJ1cwlDaXJydXMgTG9naWMsIEluYy4KK2Nsb3VkZW5naW5lcwlDbG91ZCBFbmdpbmVzLCBJbmMuCitjbm0JQ2hpcHMmTWVkaWEsIEluYy4KK2NueHQJQ29uZXhhbnQgU3lzdGVtcywgSW5jLgorY29tcHVsYWIJQ29tcHVMYWIgTHRkLgorY29ydGluYQlDb3J0aW5hIFN5c3RlbXMsIEluYy4KK2Nvc21pYwlDb3NtaWMgQ2lyY3VpdHMKK2NyeXN0YWxmb250eglDcnlzdGFsZm9udHogQW1lcmljYSwgSW5jLgorY3ViaWV0ZWNoCUN1YmlldGVjaCwgTHRkLgorY3lwcmVzcwlDeXByZXNzIFNlbWljb25kdWN0b3IgQ29ycG9yYXRpb24KK2RhbGxhcwlNYXhpbSBJbnRlZ3JhdGVkIFByb2R1Y3RzIChmb3JtZXJseSBEYWxsYXMgU2VtaWNvbmR1Y3RvcikKK2Rhdmljb20JREFWSUNPTSBTZW1pY29uZHVjdG9yLCBJbmMuCitkZWx0YQlEZWx0YSBFbGVjdHJvbmljcywgSW5jLgorZGVueAlEZW54IFNvZnR3YXJlIEVuZ2luZWVyaW5nCitkaWdpCURpZ2kgSW50ZXJuYXRpb25hbCBJbmMuCitkaWdpbGVudAlEaWdsZW50LCBJbmMuCitkbGcJRGlhbG9nIFNlbWljb25kdWN0b3IKK2RsaW5rCUQtTGluayBDb3Jwb3JhdGlvbgorZG1vCURhdGEgTW9kdWwgQUcKK2VhCUVtYmVkZGVkIEFydGlzdHMgQUIKK2VidglFQlYgRWxla3Ryb25paworZWR0CUVtZXJnaW5nIERpc3BsYXkgVGVjaG5vbG9naWVzCitlbGFuCUVsYW4gTWljcm9lbGVjdHJvbmljIENvcnAuCitlbW1pY3JvCUVNIE1pY3JvZWxlY3Ryb25pYworZW5lcmd5bWljcm8JU2lsaWNvbiBMYWJvcmF0b3JpZXMgKGZvcm1lcmx5IEVuZXJneSBNaWNybyBBUykKK2VwY29zCUVQQ09TIEFHCitlcGZsCUVjb2xlIFBvbHl0ZWNobmlxdWUgRsOpZMOpcmFsZSBkZSBMYXVzYW5uZQorZXBzb24JU2Vpa28gRXBzb24gQ29ycC4KK2VzdAlFU1RlZW0gV2lyZWxlc3MgTW9kZW1zCitldHR1cwlOSSBFdHR1cyBSZXNlYXJjaAorZXVrcmVhICBFdWtyw6lhIEVsZWN0cm9tYXRpcXVlCitldmVyZXN0CUV2ZXJlc3QgU2VtaWNvbmR1Y3RvciBDby4gTHRkLgorZXZlcnNwaW4JRXZlcnNwaW4gVGVjaG5vbG9naWVzLCBJbmMuCitleGNpdG8JRXhjaXRvCitmY3MJRmFpcmNoaWxkIFNlbWljb25kdWN0b3IKK2ZpcmVmbHkJRmlyZWZseQorZm9jYWx0ZWNoCUZvY2FsVGVjaCBTeXN0ZW1zIENvLixMdGQKK2ZzbAlGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvcgorR0VGYW51YwlHRSBGYW51YyBJbnRlbGxpZ2VudCBQbGF0Zm9ybXMgRW1iZWRkZWQgU3lzdGVtcywgSW5jLgorZ2VmCUdFIEZhbnVjIEludGVsbGlnZW50IFBsYXRmb3JtcyBFbWJlZGRlZCBTeXN0ZW1zLCBJbmMuCitnZW5pYXRlY2gJR2VuaWF0ZWNoLCBJbmMuCitnaWFudHBsdXMJR2lhbnRwbHVzIFRlY2hub2xvZ3kgQ28uLCBMdGQuCitnbG9iYWxzY2FsZQlHbG9iYWxzY2FsZSBUZWNobm9sb2dpZXMsIEluYy4KK2dtdAlHbG9iYWwgTWl4ZWQtbW9kZSBUZWNobm9sb2d5LCBJbmMuCitnb29kaXgJU2hlbnpoZW4gSHVpZGluZyBUZWNobm9sb2d5IENvLiwgTHRkLgorZ29vZ2xlCUdvb2dsZSwgSW5jLgorZ3Jpbm4JR3Jpbm4KK2d1bXN0aXgJR3Vtc3RpeCwgSW5jLgorZ3cJR2F0ZXdvcmtzIENvcnBvcmF0aW9uCitoYW5uc3RhcglIYW5uU3RhciBEaXNwbGF5IENvcnBvcmF0aW9uCitoYW95dQlIYW95dSBNaWNyb2VsZWN0cm9uaWMgQ28uIEx0ZC4KK2hhcmRrZXJuZWwJSGFyZGtlcm5lbCBDby4sIEx0ZAoraGltYXgJSGltYXggVGVjaG5vbG9naWVzLCBJbmMuCitoaXNpbGljb24JSGlzaWxpY29uIExpbWl0ZWQuCitoaXQJSGl0YWNoaSBMdGQuCitoaXRleAlIaXRleCBEZXZlbG9wbWVudCBUb29scworaG9sdAlIb2x0IEludGVncmF0ZWQgQ2lyY3VpdHMsIEluYy4KK2hvbmV5d2VsbAlIb25leXdlbGwKK2hwCUhld2xldHQgUGFja2FyZAoraTJzZQlJMlNFIEdtYkgKK2libQlJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIChJQk0pCitpZHQJSW50ZWdyYXRlZCBEZXZpY2UgVGVjaG5vbG9naWVzLCBJbmMuCitpb20JSW9tZWdhIENvcnBvcmF0aW9uCitpbWcJSW1hZ2luYXRpb24gVGVjaG5vbG9naWVzIEx0ZC4KK2luZ2VuaWMJSW5nZW5pYyBTZW1pY29uZHVjdG9yCitpbm5vbHV4CUlubm9sdXggQ29ycG9yYXRpb24KK2ludGVsCUludGVsIENvcnBvcmF0aW9uCitpbnRlcmNvbnRyb2wJSW50ZXIgQ29udHJvbCBHcm91cAoraW52ZW5zZW5zZQlJbnZlblNlbnNlIEluYy4KK2lzZWUJSVNFRSAyMDA3IFMuTC4KK2lzaWwJSW50ZXJzaWwKK2plZGVjCUpFREVDIFNvbGlkIFN0YXRlIFRlY2hub2xvZ3kgQXNzb2NpYXRpb24KK2thcm8JS2EtUm8gZWxlY3Ryb25pY3MgR21iSAora2V5bWlsZQlLZXltaWxlIEdtYkgKK2tpbmV0aWMgS2luZXRpYyBUZWNobm9sb2dpZXMKK2xhY2llCUxhQ2llCitsYW50aXEJTGFudGlxIFNlbWljb25kdWN0b3IKK2xlbm92bwlMZW5vdm8gR3JvdXAgTHRkLgorbGcJTEcgQ29ycG9yYXRpb24KK2xpbnV4CUxpbnV4LXNwZWNpZmljIGJpbmRpbmcKK2xzaQlMU0kgQ29ycC4gKExTSSBMb2dpYykKK2xsdGMJTGluZWFyIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KK21hcnZlbGwJTWFydmVsbCBUZWNobm9sb2d5IEdyb3VwIEx0ZC4KK21heGltCU1heGltIEludGVncmF0ZWQgUHJvZHVjdHMKK21lZGlhdGVrCU1lZGlhVGVrIEluYy4KK21lbGV4aXMJTWVsZXhpcyBOLlYuCittZXJyaWkJTWVycmlpIFRlY2hub2xvZ3kgQ28uLCBMdGQuCittaWNyZWwJTWljcmVsIEluYy4KK21pY3JvY2hpcAlNaWNyb2NoaXAgVGVjaG5vbG9neSBJbmMuCittaWNyb24JTWljcm9uIFRlY2hub2xvZ3kgSW5jLgorbWluaXgJTUlOSVggVGVjaG5vbG9neSBMdGQuCittaXRzdWJpc2hpCU1pdHN1YmlzaGkgRWxlY3RyaWMgQ29ycG9yYXRpb24KK21vc2FpeHRlY2gJTW9zYWl4IFRlY2hub2xvZ2llcywgSW5jLgorbW94YQlNb3hhCittcGwJTVBMIEFHCittc2kJTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsIENvLiBMdGQuCittdGkJSW1hZ2luYXRpb24gVGVjaG5vbG9naWVzIEx0ZC4gKGZvcm1lcmx5IE1JUFMgVGVjaG5vbG9naWVzIEluYy4pCittdW5kb3JlYWRlcglNdW5kbyBSZWFkZXIgUy5MLgorbXVyYXRhCU11cmF0YSBNYW51ZmFjdHVyaW5nIENvLiwgTHRkLgorbXhpY3kJTWFjcm9uaXggSW50ZXJuYXRpb25hbCBDby4sIEx0ZC4KK25hdGlvbmFsCU5hdGlvbmFsIFNlbWljb25kdWN0b3IKK25lYwlORUMgTENEIFRlY2hub2xvZ2llcywgTHRkLgorbmVvbm9kZQkJTmVvbm9kZSBJbmMuCituZXRnZWFyCU5FVEdFQVIKK25ldGxvZ2ljCUJyb2FkY29tIENvcnBvcmF0aW9uIChmb3JtZXJseSBOZXRMb2dpYyBNaWNyb3N5c3RlbXMpCituZXR4ZW9uCQlTaGVuemhlbiBOZXR4ZW9uIFRlY2hub2xvZ3kgQ08uLCBMVEQKK25ld2hhdmVuCU5ld2hhdmVuIERpc3BsYXkgSW50ZXJuYXRpb25hbAorbmludGVuZG8JTmludGVuZG8KK25va2lhCU5va2lhCitudXZvdG9uCU51dm90b24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbgorbnZpZGlhCU5WSURJQQorbnhwCU5YUCBTZW1pY29uZHVjdG9ycworb2theWEJT2theWEgRWxlY3RyaWMgQW1lcmljYSwgSW5jLgorb25ubglPTiBTZW1pY29uZHVjdG9yIENvcnAuCitvcGVuY29yZXMJT3BlbkNvcmVzLm9yZworb3B0aW9uCU9wdGlvbiBOVgorb3J0dXN0ZWNoCU9ydHVzIFRlY2hub2xvZ3kgQ28uLCBMdGQuCitvdnRpCU9tbmlWaXNpb24gVGVjaG5vbG9naWVzCitwYW5hc29uaWMJUGFuYXNvbmljIENvcnBvcmF0aW9uCitwYXJhZGUJUGFyYWRlIFRlY2hub2xvZ2llcyBJbmMuCitwZXJpY29tCVBlcmljb20gVGVjaG5vbG9neSBJbmMuCitwaHl0ZWMJUEhZVEVDIE1lc3N0ZWNobmlrIEdtYkgKK3BpY29jaGlwCVBpY29jaGlwIEx0ZAorcGxhdGhvbWUJUGxhdCdIb21lIENvLiwgTHRkLgorcGxkYQlQTERBCitwaXhjaXIgIFBJWENJUiBNSUNST0VMRUNUUk9OSUNTIENvLiwgTHRkCitwdWxzZWRsaWdodAlQdWxzZWRMaWdodCwgSW5jCitwb3dlcnZyCVBvd2VyVlIgKGRlcHJlY2F0ZWQsIHVzZSBpbWcpCitxY2EJUXVhbGNvbW0gQXRoZXJvcywgSW5jLgorcWNvbQlRdWFsY29tbSBUZWNobm9sb2dpZXMsIEluYworcWVtdQlRRU1VLCBhIGdlbmVyaWMgYW5kIG9wZW4gc291cmNlIG1hY2hpbmUgZW11bGF0b3IgYW5kIHZpcnR1YWxpemVyCitxaQlRaSBIYXJkd2FyZQorcW5hcAlRTkFQIFN5c3RlbXMsIEluYy4KK3JhZHhhCVJhZHhhCityYWlkc29uaWMJUmFpZFNvbmljIFRlY2hub2xvZ3kgR21iSAorcmFsaW5rCU1lZGlhdGVrL1JhbGluayBUZWNobm9sb2d5IENvcnAuCityYW10cm9uCVJhbXRyb24gSW50ZXJuYXRpb25hbAorcmFzcGJlcnJ5cGkJUmFzcGJlcnJ5IFBpIEZvdW5kYXRpb24KK3JlYWx0ZWsgUmVhbHRlayBTZW1pY29uZHVjdG9yIENvcnAuCityZW5lc2FzCVJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24KK3JpY2h0ZWsJUmljaHRlayBUZWNobm9sb2d5IENvcnBvcmF0aW9uCityaWNvaAlSaWNvaCBDby4gTHRkLgorcm9ja2NoaXAJRnV6aG91IFJvY2tjaGlwIEVsZWN0cm9uaWNzIENvLiwgTHRkCitzYW1zdW5nCVNhbXN1bmcgU2VtaWNvbmR1Y3Rvcgorc2FuZGlzawlTYW5kaXNrIENvcnBvcmF0aW9uCitzYnMJU21hcnQgQmF0dGVyeSBTeXN0ZW0KK3NjaGluZGxlcglTY2hpbmRsZXIKK3NlYWdhdGUJU2VhZ2F0ZSBUZWNobm9sb2d5IFBMQworc2VtdGVjaAlTZW10ZWNoIENvcnBvcmF0aW9uCitzZ3gJU0dYIFNlbnNvcnRlY2gKK3NoYXJwCVNoYXJwIENvcnBvcmF0aW9uCitzaWdtYQlTaWdtYSBEZXNpZ25zLCBJbmMuCitzaWwJU2lsaWNvbiBJbWFnZQorc2lsYWJzCVNpbGljb24gTGFib3JhdG9yaWVzCitzaWxpY29ubWl0dXMJU2lsaWNvbiBNaXR1cywgSW5jLgorc2ltdGVrCitzaWkJU2Vpa28gSW5zdHJ1bWVudHMsIEluYy4KK3NpbGVyZ3kJU2lsZXJneSBDb3JwLgorc2lyZglTaVJGIFRlY2hub2xvZ3ksIEluYy4KK3NpdHJvbml4CVNpdHJvbml4IFRlY2hub2xvZ3kgQ29ycG9yYXRpb24KK3NreXdvcmtzCVNreXdvcmtzIFNvbHV0aW9ucywgSW5jLgorc21zYwlTdGFuZGFyZCBNaWNyb3N5c3RlbXMgQ29ycG9yYXRpb24KK3NucHMJU3lub3BzeXMsIEluYy4KK3NvY2lvbmV4dAlTb2Npb25leHQgSW5jLgorc29saWRydW4JU29saWRSdW4KK3NvbG9tb24gICAgICAgIFNvbG9tb24gU3lzdGVjaCBMaW1pdGVkCitzb255CVNvbnkgQ29ycG9yYXRpb24KK3NwYW5zaW9uCVNwYW5zaW9uIEluYy4KK3NwcmQJU3ByZWFkdHJ1bSBDb21tdW5pY2F0aW9ucyBJbmMuCitzdAlTVE1pY3JvZWxlY3Ryb25pY3MKK3N0ZQlTVC1Fcmljc3Nvbgorc3Rlcmljc3NvbglTVC1Fcmljc3Nvbgorc3lub2xvZ3kJU3lub2xvZ3ksIEluYy4KK3RicwlUQlMgVGVjaG5vbG9naWVzCit0Y2wJVG9ieSBDaHVyY2hpbGwgTHRkLgordGhpbmUJVEhpbmUgRWxlY3Ryb25pY3MsIEluYy4KK3RpCVRleGFzIEluc3RydW1lbnRzCit0bG0JVHJ1c3RlZCBMb2dpYyBNb2JpbGl0eQordG9yYWRleAlUb3JhZGV4IEFHCit0b3NoaWJhCVRvc2hpYmEgQ29ycG9yYXRpb24KK3RvdW1heglUb3VtYXoKK3RwbGluawlUUC1MSU5LIFRlY2hub2xvZ2llcyBDby4sIEx0ZC4KK3Ryb25meQlUcm9uZnkKK3RydWx5CVRydWx5IFNlbWljb25kdWN0b3JzIExpbWl0ZWQKK3VwaXNlbWkJdVBJIFNlbWljb25kdWN0b3IgQ29ycC4KK3VzaQlVbml2ZXJzYWwgU2NpZW50aWZpYyBJbmR1c3RyaWFsIENvLiwgTHRkLgordjMJVjMgU2VtaWNvbmR1Y3RvcgordmFyaXNjaXRlCVZhcmlzY2l0ZSBMdGQuCit2aWEJVklBIFRlY2hub2xvZ2llcywgSW5jLgordmlydGlvCVZpcnR1YWwgSS9PIERldmljZSBTcGVjaWZpY2F0aW9uLCBkZXZlbG9wZWQgYnkgdGhlIE9BU0lTIGNvbnNvcnRpdW0KK3ZvaXBhYwlWb2lwYWMgVGVjaG5vbG9naWVzIHMuci5vLgord2V4bGVyCVdleGxlcgord2luYm9uZCBXaW5ib25kIEVsZWN0cm9uaWNzIGNvcnAuCit3bGYJV29sZnNvbiBNaWNyb2VsZWN0cm9uaWNzCit3bQlXb25kZXJtZWRpYSBUZWNobm9sb2dpZXMsIEluYy4KK3gtcG93ZXJzCVgtUG93ZXJzCit4ZXMJRXh0cmVtZSBFbmdpbmVlcmluZyBTb2x1dGlvbnMgKFgtRVMpCit4aWxseWJ1cwlYaWxseWJ1cyBMdGQuCit4bG54CVhpbGlueAorenl4ZWwJWnlYRUwgQ29tbXVuaWNhdGlvbnMgQ29ycC4KK3phcmxpbmsJWmFybGluayBTZW1pY29uZHVjdG9yCit6aWkJWm9kaWFjIEluZmxpZ2h0IElubm92YXRpb25zCit6dGUJWlRFIENvcnAuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdmlydGlvL21taW8udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZpcnRpby9tbWlvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDY5YzFiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZpcnRpby9tbWlvLnR4dApAQCAtMCwwICsxLDE3IEBACisqIHZpcnRpbyBtZW1vcnkgbWFwcGVkIGRldmljZQorCitTZWUgaHR0cDovL296bGFicy5vcmcvfnJ1c3R5L3ZpcnRpby1zcGVjLyBmb3IgbW9yZSBkZXRhaWxzLgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGU6CSJ2aXJ0aW8sbW1pbyIgY29tcGF0aWJpbGl0eSBzdHJpbmcKKy0gcmVnOgkJY29udHJvbCByZWdpc3RlcnMgYmFzZSBhZGRyZXNzIGFuZCBzaXplIGluY2x1ZGluZyBjb25maWd1cmF0aW9uIHNwYWNlCistIGludGVycnVwdHM6CWludGVycnVwdCBnZW5lcmF0ZWQgYnkgdGhlIGRldmljZQorCitFeGFtcGxlOgorCisJdmlydGlvX2Jsb2NrQDMwMDAgeworCQljb21wYXRpYmxlID0gInZpcnRpbyxtbWlvIjsKKwkJcmVnID0gPDB4MzAwMCAweDEwMD47CisJCWludGVycnVwdHMgPSA8NDE+OworCX0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93MS9mc2wtaW14LW93aXJlLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93MS9mc2wtaW14LW93aXJlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2Y0MmMwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3cxL2ZzbC1pbXgtb3dpcmUudHh0CkBAIC0wLDAgKzEsMTkgQEAKKyogRnJlZXNjYWxlIGkuTVggT25lIHdpcmUgYnVzIG1hc3RlciBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImZzbCxpbXgyMS1vd2lyZSIKKy0gcmVnIDogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gY2xvY2tzIDogcGhhbmRsZSBvZiBjbG9jayB0aGF0IHN1cHBsaWVzIHRoZSBtb2R1bGUgKHJlcXVpcmVkIGlmIHBsYXRmb3JtCisJCWNsb2NrIGJpbmRpbmdzIHVzZSBkZXZpY2UgdHJlZSkKKworRXhhbXBsZToKKworLSBGcm9tIGlteDUzLmR0c2k6Citvd2lyZTogb3dpcmVANjNmYTQwMDAgeworCWNvbXBhdGlibGUgPSAiZnNsLGlteDUzLW93aXJlIiwgImZzbCxpbXgyMS1vd2lyZSI7CisJcmVnID0gPDB4NjNmYTQwMDAgMHg0MDAwPjsKKwljbG9ja3MgPSA8JmNsa3MgMTU5PjsKKwlzdGF0dXMgPSAiZGlzYWJsZWQiOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93MS9vbWFwLWhkcS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdzEvb21hcC1oZHEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxM2M1ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdzEvb21hcC1oZHEudHh0CkBAIC0wLDAgKzEsMjIgQEAKKyogT01BUCBIRFEgT25lIHdpcmUgYnVzIG1hc3RlciBjb250cm9sbGVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgInRpLG9tYXAzLTF3IiBvciAidGksYW00MzcyLWhkcSIKKy0gcmVnIDogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKy0gaW50ZXJydXB0cyA6IGludGVycnVwdCBsaW5lLgorLSB0aSxod21vZHMgOiAiaGRxMXciCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHRpLG1vZGU6IHNob3VsZCBiZSAiaGRxIjogSERRIG1vZGUgICIxdyI6IG9uZS13aXJlIG1vZGUuCisJICAgSWYgbm90IHNwZWNpZmllZCBIRFEgbW9kZSBpcyBpbXBsaWVkLgorCitFeGFtcGxlOgorCistIEZyb20gb21hcDMuZHRzaQorICBoZHF3MXc6IDF3QDQ4MGIyMDAwIHsKKwljb21wYXRpYmxlID0gInRpLG9tYXAzLTF3IjsKKwlyZWcgPSA8MHg0ODBiMjAwMCAweDEwMDA+OworCWludGVycnVwdHMgPSA8NTg+OworCXRpLGh3bW9kcyA9ICJoZHExdyI7CisJdGksbW9kZSA9ICJoZHEiOworICB9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3cxL3cxLWdwaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3cxL3cxLWdwaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlMDljMzUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdzEvdzEtZ3Bpby50eHQKQEAgLTAsMCArMSwyMiBAQAordzEtZ3BpbyBkZXZpY2V0cmVlIGJpbmRpbmdzCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAtIGNvbXBhdGlibGU6ICJ3MS1ncGlvIgorIC0gZ3Bpb3M6IG9uZSBvciB0d28gR1BJTyBzcGVjczoKKwkJLSB0aGUgZmlyc3Qgb25lIGlzIHVzZWQgYXMgZGF0YSBJL08gcGluCisJCS0gdGhlIHNlY29uZCBvbmUgaXMgb3B0aW9uYWwuIElmIHNwZWNpZmllZCwgaXQgaXMgdXNlZCBhcworCQkgIGVuYWJsZSBwaW4gZm9yIGFuIGV4dGVybmFsIHBpbiBwdWxsdXAuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKyAtIGxpbnV4LG9wZW4tZHJhaW46IGlmIHNwZWNpZmllZCwgdGhlIGRhdGEgcGluIGlzIGNvbnNpZGVyZWQgaW4KKwkJICAgICBvcGVuLWRyYWluIG1vZGUuCisKK0V4YW1wbGVzOgorCisJb25ld2lyZUAwIHsKKwkJY29tcGF0aWJsZSA9ICJ3MS1ncGlvIjsKKwkJZ3Bpb3MgPSA8JmdwaW8gMTI2IDA+LCA8JmdwaW8gMTA1IDA+OworCX07CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9hdG1lbC1hdDkxcm05MjAwLXdkdC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvYXRtZWwtYXQ5MXJtOTIwMC13ZHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0ZDg2Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvYXRtZWwtYXQ5MXJtOTIwMC13ZHQudHh0CkBAIC0wLDAgKzEsOSBAQAorQXRtZWwgQVQ5MVJNOTIwMCBTeXN0ZW0gVGltZXIgV2F0Y2hkb2cKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogbXVzdCBiZSAiYXRtZWwsYXQ5MXNhbTkyNjAtd2R0Ii4KKworRXhhbXBsZToKKwl3YXRjaGRvZ0BmZmZmZmQwMCB7CisJCWNvbXBhdGlibGUgPSAiYXRtZWwsYXQ5MXJtOTIwMC13ZHQiOworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvYXRtZWwtc2FtYTVkNC13ZHQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL2F0bWVsLXNhbWE1ZDQtd2R0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mN2NjN2MwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL2F0bWVsLXNhbWE1ZDQtd2R0LnR4dApAQCAtMCwwICsxLDM1IEBACisqIEF0bWVsIFNBTUE1RDQgV2F0Y2hkb2cgVGltZXIgKFdEVCkgQ29udHJvbGxlcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiAiYXRtZWwsc2FtYTVkNC13ZHQiCistIHJlZzogYmFzZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZCByZWdpb24uCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIHRpbWVvdXQtc2VjOiB3YXRjaGRvZyB0aW1lb3V0IHZhbHVlIChpbiBzZWNvbmRzKS4KKy0gaW50ZXJydXB0czogaW50ZXJydXB0IG51bWJlciB0byB0aGUgQ1BVLgorLSBhdG1lbCx3YXRjaGRvZy10eXBlOiBzaG91bGQgYmUgImhhcmR3YXJlIiBvciAic29mdHdhcmUiLgorCSJoYXJkd2FyZSI6IGVuYWJsZSB3YXRjaGRvZyBmYXVsdCByZXNldC4gQSB3YXRjaGRvZyBmYXVsdCB0cmlnZ2VycworCQkgICAgd2F0Y2hkb2cgcmVzZXQuCisJInNvZnR3YXJlIjogZW5hYmxlIHdhdGNoZG9nIGZhdWx0IGludGVycnVwdC4gQSB3YXRjaGRvZyBmYXVsdCBhc3NlcnRzCisJCSAgICB3YXRjaGRvZyBpbnRlcnJ1cHQuCistIGF0bWVsLGlkbGUtaGFsdDogcHJlc2VudCBpZiB5b3Ugd2FudCB0byBzdG9wIHRoZSB3YXRjaGRvZyB3aGVuIHRoZSBDUFUgaXMKKwkJICAgaW4gaWRsZSBzdGF0ZS4KKwlDQVVUSU9OOiBUaGlzIHByb3BlcnR5IHNob3VsZCBiZSB1c2VkIHdpdGggY2FyZSwgaXQgYWN0dWFsbHkgbWFrZXMgdGhlCisJd2F0Y2hkb2cgbm90IGNvdW50aW5nIHdoZW4gdGhlIENQVSBpcyBpbiBpZGxlIHN0YXRlLCB0aGVyZWZvcmUgdGhlCisJd2F0Y2hkb2cgcmVzZXQgdGltZSBkZXBlbmRzIG9uIG1lYW4gQ1BVIHVzYWdlIGFuZCB3aWxsIG5vdCByZXNldCBhdCBhbGwKKwlpZiB0aGUgQ1BVIHN0b3Agd29ya2luZyB3aGlsZSBpdCBpcyBpbiBpZGxlIHN0YXRlLCB3aGljaCBpcyBwcm9iYWJseQorCW5vdCB3aGF0IHlvdSB3YW50LgorLSBhdG1lbCxkYmctaGFsdDogcHJlc2VudCBpZiB5b3Ugd2FudCB0byBzdG9wIHRoZSB3YXRjaGRvZyB3aGVuIHRoZSBDUFUgaXMKKwkJICBpbiBkZWJ1ZyBzdGF0ZS4KKworRXhhbXBsZToKKwl3YXRjaGRvZ0BmYzA2ODY0MCB7CisJCWNvbXBhdGlibGUgPSAiYXRtZWwsc2FtYTVkNC13ZHQiOworCQlyZWcgPSA8MHhmYzA2ODY0MCAweDEwPjsKKwkJaW50ZXJydXB0cyA9IDw0IElSUV9UWVBFX0xFVkVMX0hJR0ggNT47CisJCXRpbWVvdXQtc2VjID0gPDEwPjsKKwkJYXRtZWwsd2F0Y2hkb2ctdHlwZSA9ICJoYXJkd2FyZSI7CisJCWF0bWVsLGRiZy1oYWx0OworCQlhdG1lbCxpZGxlLWhhbHQ7CisJCXN0YXR1cyA9ICJva2F5IjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL2F0bWVsLXdkdC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvYXRtZWwtd2R0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmZhNmRlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL2F0bWVsLXdkdC50eHQKQEAgLTAsMCArMSw1MiBAQAorKiBBdG1lbCBXYXRjaGRvZyBUaW1lcnMKKworKiogYXQ5MXNhbTktd2R0CisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IG11c3QgYmUgImF0bWVsLGF0OTFzYW05MjYwLXdkdCIuCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICByZWdpb24uCistIGNsb2NrczogcGhhbmRsZSB0byBpbnB1dCBjbG9jay4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdGltZW91dC1zZWM6IGNvbnRhaW5zIHRoZSB3YXRjaGRvZyB0aW1lb3V0IGluIHNlY29uZHMuCistIGludGVycnVwdHMgOiBTaG91bGQgY29udGFpbiBXRFQgaW50ZXJydXB0LgorLSBhdG1lbCxtYXgtaGVhcnRiZWF0LXNlYyA6IFNob3VsZCBjb250YWluIHRoZSBtYXhpbXVtIGhlYXJ0YmVhdCB2YWx1ZSBpbgorCXNlY29uZHMuIFRoaXMgdmFsdWUgc2hvdWxkIGJlIGxlc3Mgb3IgZXF1YWwgdG8gMTYuIEl0IGlzIHVzZWQgdG8KKwljb21wdXRlIHRoZSBXRFYgZmllbGQuCistIGF0bWVsLG1pbi1oZWFydGJlYXQtc2VjIDogU2hvdWxkIGNvbnRhaW4gdGhlIG1pbmltdW0gaGVhcnRiZWF0IHZhbHVlIGluCisJc2Vjb25kcy4gVGhpcyB2YWx1ZSBtdXN0IGJlIHNtYWxsZXIgdGhhbiB0aGUgbWF4LWhlYXJ0YmVhdC1zZWMgdmFsdWUuCisJSXQgaXMgdXNlZCB0byBjb21wdXRlIHRoZSBXREQgZmllbGQuCistIGF0bWVsLHdhdGNoZG9nLXR5cGUgOiBTaG91bGQgYmUgImhhcmR3YXJlIiBvciAic29mdHdhcmUiLiBIYXJkd2FyZSB3YXRjaGRvZworCXVzZSB0aGUgYXQ5MSB3YXRjaGRvZyByZXNldC4gU29mdHdhcmUgd2F0Y2hkb2cgdXNlIHRoZSB3YXRjaGRvZworCWludGVycnVwdCB0byB0cmlnZ2VyIGEgc29mdHdhcmUgcmVzZXQuCistIGF0bWVsLHJlc2V0LXR5cGUgOiBTaG91bGQgYmUgInByb2MiIG9yICJhbGwiLgorCSJhbGwiIDogYXNzZXJ0IHBlcmlwaGVyYWxzIGFuZCBwcm9jZXNzb3IgcmVzZXQgc2lnbmFscworCSJwcm9jIiA6IGFzc2VydCB0aGUgcHJvY2Vzc29yIHJlc2V0IHNpZ25hbAorCVRoaXMgaXMgdmFsaWQgb25seSB3aGVuIHVzaW5nICJoYXJkd2FyZSIgd2F0Y2hkb2cuCistIGF0bWVsLGRpc2FibGUgOiBTaG91bGQgYmUgcHJlc2VudCBpZiB5b3Ugd2FudCB0byBkaXNhYmxlIHRoZSB3YXRjaGRvZy4KKy0gYXRtZWwsaWRsZS1oYWx0IDogU2hvdWxkIGJlIHByZXNlbnQgaWYgeW91IHdhbnQgdG8gc3RvcCB0aGUgd2F0Y2hkb2cgd2hlbgorCWVudGVyaW5nIGlkbGUgc3RhdGUuCisJQ0FVVElPTjogVGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhcmUsIGl0IGFjdHVhbGx5IG1ha2VzIHRoZQorCXdhdGNoZG9nIG5vdCBjb3VudGluZyB3aGVuIHRoZSBDUFUgaXMgaW4gaWRsZSBzdGF0ZSwgdGhlcmVmb3JlIHRoZQorCXdhdGNoZG9nIHJlc2V0IHRpbWUgZGVwZW5kcyBvbiBtZWFuIENQVSB1c2FnZSBhbmQgd2lsbCBub3QgcmVzZXQgYXQgYWxsCisJaWYgdGhlIENQVSBzdG9wIHdvcmtpbmcgd2hpbGUgaXQgaXMgaW4gaWRsZSBzdGF0ZSwgd2hpY2ggaXMgcHJvYmFibHkKKwlub3Qgd2hhdCB5b3Ugd2FudC4KKy0gYXRtZWwsZGJnLWhhbHQgOiBTaG91bGQgYmUgcHJlc2VudCBpZiB5b3Ugd2FudCB0byBzdG9wIHRoZSB3YXRjaGRvZyB3aGVuCisJZW50ZXJpbmcgZGVidWcgc3RhdGUuCisKK0V4YW1wbGU6CisJd2F0Y2hkb2dAZmZmZmZkNDAgeworCQljb21wYXRpYmxlID0gImF0bWVsLGF0OTFzYW05MjYwLXdkdCI7CisJCXJlZyA9IDwweGZmZmZmZDQwIDB4MTA+OworCQlpbnRlcnJ1cHRzID0gPDEgSVJRX1RZUEVfTEVWRUxfSElHSCA3PjsKKwkJY2xvY2tzID0gPCZjbGszMms+OworCQl0aW1lb3V0LXNlYyA9IDwxNT47CisJCWF0bWVsLHdhdGNoZG9nLXR5cGUgPSAiaGFyZHdhcmUiOworCQlhdG1lbCxyZXNldC10eXBlID0gImFsbCI7CisJCWF0bWVsLGRiZy1oYWx0OworCQlhdG1lbCxpZGxlLWhhbHQ7CisJCWF0bWVsLG1heC1oZWFydGJlYXQtc2VjID0gPDE2PjsKKwkJYXRtZWwsbWluLWhlYXJ0YmVhdC1zZWMgPSA8MD47CisJCXN0YXR1cyA9ICJva2F5IjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL2JyY20sYmNtMjgzNS1wbS13ZG9nLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9icmNtLGJjbTI4MzUtcG0td2RvZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgwMWQ3MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9icmNtLGJjbTI4MzUtcG0td2RvZy50eHQKQEAgLTAsMCArMSwxOCBAQAorQkNNMjgzNSBXYXRjaGRvZyB0aW1lcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImJyY20sYmNtMjgzNS1wbS13ZHQiCistIHJlZyA6IFNwZWNpZmllcyBiYXNlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIHJlZ2lzdGVycy4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworLSB0aW1lb3V0LXNlYyAgIDogQ29udGFpbnMgdGhlIHdhdGNoZG9nIHRpbWVvdXQgaW4gc2Vjb25kcworCitFeGFtcGxlOgorCit3YXRjaGRvZyB7CisJY29tcGF0aWJsZSA9ICJicmNtLGJjbTI4MzUtcG0td2R0IjsKKwlyZWcgPSA8MHg3ZTEwMDAwMCAweDI4PjsKKwl0aW1lb3V0LXNlYyA9IDwxMD47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL2JyY20sYmNtNzAzOC13ZHQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL2JyY20sYmNtNzAzOC13ZHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0MTIyMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvYnJjbSxiY203MDM4LXdkdC50eHQKQEAgLTAsMCArMSwxOSBAQAorQkNNNzAzOCBXYXRjaGRvZyB0aW1lcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImJyY20sYmNtNzAzOC13ZHQiCistIHJlZyA6IFNwZWNpZmllcyBiYXNlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIHJlZ2lzdGVycy4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKworLSBjbG9ja3M6IFRoZSBjbG9jayBydW5uaW5nIHRoZSB3YXRjaGRvZy4gSWYgbm8gY2xvY2sgaXMgZm91bmQgdGhlCisJICBkcml2ZXIgd2lsbCBkZWZhdWx0IHRvIDI3MDAwMDAwIEh6LgorCitFeGFtcGxlOgorCit3YXRjaGRvZ0BmMDQwYTdlOCB7CisJY29tcGF0aWJsZSA9ICJicmNtLGJjbTcwMzgtd2R0IjsKKwljbG9ja3MgPSA8JnVwZ19maXhlZD47CisJcmVnID0gPDB4ZjA0MGE3ZTggMHgxNj47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL2JyY20sa29uYS13ZHQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL2JyY20sa29uYS13ZHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiODZhMDAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvYnJjbSxrb25hLXdkdC50eHQKQEAgLTAsMCArMSwxNSBAQAorQnJvYWRjb20gS29uYSBGYW1pbHkgV2F0Y2hkb2cgVGltZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgd2F0Y2hkb2cgdGltZXIgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEJyb2FkY29tIFNvQ3M6CisgIEJDTTExMTMwLCBCQ00xMTE0MCwgQkNNMTEzNTEsIEJDTTI4MTQ1LCBCQ00yODE1NQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorICAtIGNvbXBhdGlibGUgPSAiYnJjbSxiY20xMTM1MS13ZHQiLCAiYnJjbSxrb25hLXdkdCI7CisgIC0gcmVnOiBtZW1vcnkgYWRkcmVzcyAmIHJhbmdlCisKK0V4YW1wbGU6CisJd2F0Y2hkb2dAMzUwMDJmNDAgeworCQljb21wYXRpYmxlID0gImJyY20sYmNtMTEzNTEtd2R0IiwgImJyY20sa29uYS13ZHQiOworCQlyZWcgPSA8MHgzNTAwMmY0MCAweDZjPjsKKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL2NhZGVuY2Utd2R0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9jYWRlbmNlLXdkdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNhMzZlZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9jYWRlbmNlLXdkdC50eHQKQEAgLTAsMCArMSwyNCBAQAorWnlucSBXYXRjaGRvZyBEZXZpY2UgVHJlZSBCaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlCQk6IFNob3VsZCBiZSAiY2Rucyx3ZHQtcjFwMiIuCistIGNsb2NrcwkJOiBUaGlzIGlzIHBjbGsgKEFQQiBjbG9jaykuCistIGludGVycnVwdHMJCTogVGhpcyBpcyB3ZF9pcnEgLSB3YXRjaGRvZyB0aW1lb3V0IGludGVycnVwdC4KKy0gaW50ZXJydXB0LXBhcmVudAk6IE11c3QgYmUgY29yZSBpbnRlcnJ1cHQgY29udHJvbGxlci4KKworT3B0aW9uYWwgcHJvcGVydGllcworLSByZXNldC1vbi10aW1lb3V0CTogSWYgdGhpcyBwcm9wZXJ0eSBleGlzdHMsIHRoZW4gYSByZXNldCBpcyBkb25lCisJCQkgIHdoZW4gd2F0Y2hkb2cgdGltZXMgb3V0LgorLSB0aW1lb3V0LXNlYwkJOiBXYXRjaGRvZyB0aW1lb3V0IHZhbHVlIChpbiBzZWNvbmRzKS4KKworRXhhbXBsZToKKwl3YXRjaGRvZ0BmODAwNTAwMCB7CisJCWNvbXBhdGlibGUgPSAiY2Rucyx3ZHQtcjFwMiI7CisJCWNsb2NrcyA9IDwmY2xrYyA0NT47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmludGM+OworCQlpbnRlcnJ1cHRzID0gPDAgOSAxPjsKKwkJcmVnID0gPDB4ZjgwMDUwMDAgMHgxMDAwPjsKKwkJcmVzZXQtb24tdGltZW91dDsKKwkJdGltZW91dC1zZWMgPSA8MTA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvZGF2aW5jaS13ZHQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL2RhdmluY2ktd2R0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjBiOWExCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL2RhdmluY2ktd2R0LnR4dApAQCAtMCwwICsxLDI0IEBACitUZXhhcyBJbnN0cnVtZW50cyBEYVZpbmNpL0tleXN0b25lIFdhdGNoZG9nIFRpbWVyIChXRFQpIENvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAidGksZGF2aW5jaS13ZHQiLCAidGksa2V5c3RvbmUtd2R0IgorLSByZWcgOiBTaG91bGQgY29udGFpbiBXRFQgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdGltZW91dC1zZWMgOiBDb250YWlucyB0aGUgd2F0Y2hkb2cgdGltZW91dCBpbiBzZWNvbmRzCistIGNsb2NrcyA6IHRoZSBjbG9jayBmZWVkaW5nIHRoZSB3YXRjaGRvZyB0aW1lci4KKwkgICBOZWVkZWQgaWYgcGxhdGZvcm0gdXNlcyBjbG9ja3MuCisJICAgU2VlIGNsb2NrLWJpbmRpbmdzLnR4dAorCitEb2N1bWVudGF0aW9uOgorRGF2aW5jaSBETTY0NnggLSBodHRwOi8vd3d3LnRpLmNvbS9saXQvdWcvc3BydWVyNWIvc3BydWVyNWIucGRmCitLZXlzdG9uZSAtIGh0dHA6Ly93d3cudGkuY29tL2xpdC91Zy9zcHJ1Z3Y1YS9zcHJ1Z3Y1YS5wZGYKKworRXhhbXBsZXM6CisKK3dkdDogd2R0QDIzMjAwMDAgeworCWNvbXBhdGlibGUgPSAidGksZGF2aW5jaS13ZHQiOworCXJlZyA9IDwweDAyMzIwMDAwIDB4ODA+OworCXRpbWVvdXQtc2VjID0gPDMwPjsKKwljbG9ja3MgPSA8JmNsa3dkdGltZXIwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvZGlnaWNvbG9yLXdkdC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvZGlnaWNvbG9yLXdkdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg4Mjk2NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9kaWdpY29sb3Itd2R0LnR4dApAQCAtMCwwICsxLDI1IEBACitDb25leGFudCBEaWdpY29sb3IgU29DcyBXYXRjaGRvZyB0aW1lcgorCitUaGUgd2F0Y2hkb2cgZnVuY3Rpb25hbGl0eSBpbiBDb25leGFudCBEaWdpY29sb3IgU29DcyByZWxpZXMgb24gdGhlIHNvIGNhbGxlZAorIkFnZW50IENvbW11bmljYXRpb24iIGJsb2NrLiBUaGlzIGJsb2NrIGluY2x1ZGVzIHRoZSBlaWdodCBwcm9ncmFtbWFibGUgc3lzdGVtCit0aW1lciBjb3VudGVycy4gVGhlIGZpcnN0IHRpbWVyIChjYWxsZWQgIlRpbWVyIEEiKSBpcyB0aGUgb25seSBvbmUgdGhhdCBjYW4gYmUKK3VzZWQgYXMgd2F0Y2hkb2cuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CisKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAiY254dCxjeDkyNzU1LXdkdCIKKy0gcmVnIDogU3BlY2lmaWVzIGJhc2UgcGh5c2ljYWwgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgcmVnaXN0ZXJzCistIGNsb2NrcyA6IHBoYW5kbGU7IHNwZWNpZmllcyB0aGUgY2xvY2sgdGhhdCBkcml2ZXMgdGhlIHRpbWVyCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gdGltZW91dC1zZWMgOiBDb250YWlucyB0aGUgd2F0Y2hkb2cgdGltZW91dCBpbiBzZWNvbmRzCisKK0V4YW1wbGU6CisKKwl3YXRjaGRvZ0BmMDAwMGZjMCB7CisJCWNvbXBhdGlibGUgPSAiY254dCxjeDkyNzU1LXdkdCI7CisJCXJlZyA9IDwweGYwMDAwZmMwIDB4OD47CisJCWNsb2NrcyA9IDwmbWFpbl9jbGs+OworCQl0aW1lb3V0LXNlYyA9IDwxNT47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9kd193ZHQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL2R3X3dkdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhlMTZmNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9kd193ZHQudHh0CkBAIC0wLDAgKzEsMjEgQEAKK1N5bm9wc3lzIERlc2lnbndhcmUgV2F0Y2hkb2cgVGltZXIKKworUmVxdWlyZWQgUHJvcGVydGllczoKKworLSBjb21wYXRpYmxlCTogU2hvdWxkIGNvbnRhaW4gInNucHMsZHctd2R0IgorLSByZWcJCTogQmFzZSBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSB3YXRjaGRvZyB0aW1lciByZWdpc3RlcnMuCistIGNsb2Nrcwk6IHBoYW5kbGUgKyBjbG9jay1zcGVjaWZpZXIgZm9yIHRoZSBjbG9jayB0aGF0IGRyaXZlcyB0aGUKKwkJd2F0Y2hkb2cgdGltZXIuCisKK09wdGlvbmFsIFByb3BlcnRpZXM6CisKKy0gaW50ZXJydXB0cwk6IFRoZSBpbnRlcnJ1cHQgdXNlZCBmb3IgdGhlIHdhdGNoZG9nIHRpbWVvdXQgd2FybmluZy4KKworRXhhbXBsZToKKworCXdhdGNoZG9nMDogd2RAZmZkMDIwMDAgeworCQljb21wYXRpYmxlID0gInNucHMsZHctd2R0IjsKKwkJcmVnID0gPDB4ZmZkMDIwMDAgMHgxMDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDE3MSA0PjsKKwkJY2xvY2tzID0gPCZwZXJfYmFzZV9jbGs+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvZnNsLWlteC13ZHQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL2ZzbC1pbXgtd2R0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGFiNmZkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL2ZzbC1pbXgtd2R0LnR4dApAQCAtMCwwICsxLDIwIEBACisqIEZyZWVzY2FsZSBpLk1YIFdhdGNoZG9nIFRpbWVyIChXRFQpIENvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IFNob3VsZCBiZSAiZnNsLDxzb2M+LXdkdCIKKy0gcmVnIDogU2hvdWxkIGNvbnRhaW4gV0RUIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgbGVuZ3RoCistIGludGVycnVwdHMgOiBTaG91bGQgY29udGFpbiBXRFQgaW50ZXJydXB0CisKK09wdGlvbmFsIHByb3BlcnR5OgorLSBiaWctZW5kaWFuOiBJZiBwcmVzZW50IHRoZSB3YXRjaGRvZyBkZXZpY2UncyByZWdpc3RlcnMgYXJlIGltcGxlbWVudGVkCisgIGluIGJpZyBlbmRpYW4gbW9kZSwgb3RoZXJ3aXNlIGluIG5hdGl2ZSBtb2RlKHNhbWUgd2l0aCBDUFUpLCBmb3IgbW9yZQorICBkZXRhaWwgcGxlYXNlIHNlZTogRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ21hcC9yZWdtYXAudHh0LgorCitFeGFtcGxlczoKKword2R0QDczZjk4MDAwIHsKKwljb21wYXRpYmxlID0gImZzbCxpbXg1MS13ZHQiLCAiZnNsLGlteDIxLXdkdCI7CisJcmVnID0gPDB4NzNmOTgwMDAgMHg0MDAwPjsKKwlpbnRlcnJ1cHRzID0gPDU4PjsKKwliaWctZW5kaWFuOworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9ncGlvLXdkdC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvZ3Bpby13ZHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5ODc5NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvZ3Bpby13ZHQudHh0CkBAIC0wLDAgKzEsMjggQEAKKyogR1BJTy1jb250cm9sbGVkIFdhdGNoZG9nCisKK1JlcXVpcmVkIFByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IFNob3VsZCBjb250YWluICJsaW51eCx3ZHQtZ3BpbyIuCistIGdwaW9zOiBGcm9tIGNvbW1vbiBncGlvIGJpbmRpbmc7IGdwaW8gY29ubmVjdGlvbiB0byBXRFQgcmVzZXQgcGluLgorLSBod19hbGdvOiBUaGUgYWxnb3JpdGhtIHVzZWQgYnkgdGhlIGRyaXZlci4gU2hvdWxkIGJlIG9uZSBvZiB0aGUKKyAgZm9sbG93aW5nIHZhbHVlczoKKyAgLSB0b2dnbGU6IEVpdGhlciBhIGhpZ2gtdG8tbG93IG9yIGEgbG93LXRvLWhpZ2ggdHJhbnNpdGlvbiBjbGVhcnMKKyAgICB0aGUgV0RUIGNvdW50ZXIuIFRoZSB3YXRjaGRvZyB0aW1lciBpcyBkaXNhYmxlZCB3aGVuIEdQSU8gaXMKKyAgICBsZWZ0IGZsb2F0aW5nIG9yIGNvbm5lY3RlZCB0byBhIHRocmVlLXN0YXRlIGJ1ZmZlci4KKyAgLSBsZXZlbDogTG93IG9yIGhpZ2ggbGV2ZWwgc3RhcnRzIGNvdW50aW5nIFdEVCB0aW1lb3V0LAorICAgIHRoZSBvcHBvc2l0ZSBsZXZlbCBkaXNhYmxlcyB0aGUgV0RULiBBY3RpdmUgbGV2ZWwgaXMgZGV0ZXJtaW5lZAorICAgIGJ5IHRoZSBHUElPIGZsYWdzLgorLSBod19tYXJnaW5fbXM6IE1heGltdW0gdGltZSB0byByZXNldCB3YXRjaGRvZyBjaXJjdWl0IChtaWxsaXNlY29uZHMpLgorCitPcHRpb25hbCBQcm9wZXJ0aWVzOgorLSBhbHdheXMtcnVubmluZzogSWYgdGhlIHdhdGNoZG9nIHRpbWVyIGNhbm5vdCBiZSBkaXNhYmxlZCwgYWRkIHRoaXMgZmxhZyB0bworICBoYXZlIHRoZSBkcml2ZXIga2VlcCB0b2dnbGluZyB0aGUgc2lnbmFsIHdpdGhvdXQgYSBjbGllbnQuIEl0IHdpbGwgb25seSBjZWFzZQorICB0byB0b2dnbGUgdGhlIHNpZ25hbCB3aGVuIHRoZSBkZXZpY2UgaXMgb3BlbiBhbmQgdGhlIHRpbWVvdXQgZWxhcHNlZC4KKworRXhhbXBsZToKKwl3YXRjaGRvZzogd2F0Y2hkb2cgeworCQkvKiBBRE03MDYgKi8KKwkJY29tcGF0aWJsZSA9ICJsaW51eCx3ZHQtZ3BpbyI7CisJCWdwaW9zID0gPCZncGlvMyA5IEdQSU9fQUNUSVZFX0xPVz47CisJCWh3X2FsZ28gPSAidG9nZ2xlIjsKKwkJaHdfbWFyZ2luX21zID0gPDE2MDA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvaW1ncGRjLXdkdC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvaW1ncGRjLXdkdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJmYTExZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9pbWdwZGMtd2R0LnR4dApAQCAtMCwwICsxLDE5IEBACisqSW1nVGVjIFBvd2VyRG93biBDb250cm9sbGVyIChQREMpIFdhdGNoZG9nIFRpbWVyIChXRFQpCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiBTaG91bGQgYmUgImltZyxwZGMtd2R0IgorLSByZWcgOiBTaG91bGQgY29udGFpbiBXRFQgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKy0gY2xvY2tzOiBNdXN0IGNvbnRhaW4gYW4gZW50cnkgZm9yIGVhY2ggZW50cnkgaW4gY2xvY2stbmFtZXMuCistIGNsb2NrLW5hbWVzOiBTaG91bGQgY29udGFpbiAid2R0IiBhbmQgInN5cyI7IHRoZSB3YXRjaGRvZyBjb3VudGVyCisgICAgICAgICAgICAgICBjbG9jayBhbmQgcmVnaXN0ZXIgaW50ZXJmYWNlIGNsb2NrIHJlc3BlY3RpdmVseS4KKy0gaW50ZXJydXB0cyA6IFNob3VsZCBjb250YWluIFdEVCBpbnRlcnJ1cHQKKworRXhhbXBsZXM6CisKK3dhdGNoZG9nQDE4MTAyMTAwIHsKKwljb21wYXRpYmxlID0gImltZyxwZGMtd2R0IjsKKwlyZWcgPSA8MHgxODEwMjEwMCAweDEwMD47CisJY2xvY2tzID0gPCZwZGNfd2R0X2Nsaz4sIDwmc3lzX2Nsaz47CisJY2xvY2stbmFtZXMgPSAid2R0IiwgInN5cyI7CisJaW50ZXJydXB0cyA9IDwwIDUyIElSUV9UWVBFX0xFVkVMX0hJR0g+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9pbmdlbmljLGp6NDc0MC13ZHQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL2luZ2VuaWMsano0NzQwLXdkdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI3NzYzZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9pbmdlbmljLGp6NDc0MC13ZHQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK0luZ2VuaWMgV2F0Y2hkb2cgVGltZXIgKFdEVCkgQ29udHJvbGxlciBmb3IgSlo0NzQwCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6Citjb21wYXRpYmxlOiAiaW5nZW5pYyxqejQ3NDAtd2F0Y2hkb2ciCityZWc6IFJlZ2lzdGVyIGFkZHJlc3MgYW5kIGxlbmd0aCBmb3Igd2F0Y2hkb2cgcmVnaXN0ZXJzCisKK0V4YW1wbGU6CisKK3dhdGNoZG9nOiBqejQ3NDAtd2F0Y2hkb2dAMHgxMDAwMjAwMCB7CisJY29tcGF0aWJsZSA9ICJpbmdlbmljLGp6NDc0MC13YXRjaGRvZyI7CisJcmVnID0gPDB4MTAwMDIwMDAgMHgxMDA+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9scGMxOHh4LXdkdC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvbHBjMTh4eC13ZHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ZjZiMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvbHBjMTh4eC13ZHQudHh0CkBAIC0wLDAgKzEsMTkgQEAKKyogTlhQIExQQzE4eHggV2F0Y2hkb2cgVGltZXIgKFdEVCkKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJueHAsbHBjMTg1MC13d2R0IgorLSByZWc6IFNob3VsZCBjb250YWluIFdEVCByZWdpc3RlcnMgbG9jYXRpb24gYW5kIGxlbmd0aAorLSBjbG9ja3M6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKy0gY2xvY2stbmFtZXM6IFNob3VsZCBjb250YWluICJ3ZHRjbGsiIGFuZCAicmVnIjsgdGhlIHdhdGNoZG9nIGNvdW50ZXIKKyAgICAgICAgICAgICAgIGNsb2NrIGFuZCByZWdpc3RlciBpbnRlcmZhY2UgY2xvY2sgcmVzcGVjdGl2ZWx5LgorLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBXRFQgaW50ZXJydXB0CisKK0V4YW1wbGVzOgorCit3YXRjaGRvZ0A0MDA4MDAwMCB7CisJY29tcGF0aWJsZSA9ICJueHAsbHBjMTg1MC13d2R0IjsKKwlyZWcgPSA8MHg0MDA4MDAwMCAweDI0PjsKKwljbG9ja3MgPSA8JmNndSBCQVNFX1NBRkVfQ0xLPiwgPCZjY3UxIENMS19DUFVfV1dEVD47CisJY2xvY2stbmFtZXMgPSAid2R0Y2xrIiwgInJlZyI7CisJaW50ZXJydXB0cyA9IDw0OT47Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL21hcnZlbC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvbWFydmVsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NThlZDkyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL21hcnZlbC50eHQKQEAgLTAsMCArMSw0NiBAQAorKiBNYXJ2ZWxsIE9yaW9uIFdhdGNoZG9nIFRpbWUKKworUmVxdWlyZWQgUHJvcGVydGllczoKKworLSBDb21wYXRpYmlsaXR5IDogIm1hcnZlbGwsb3Jpb24td2R0IgorCQkgICJtYXJ2ZWxsLGFybWFkYS0zNzAtd2R0IgorCQkgICJtYXJ2ZWxsLGFybWFkYS14cC13ZHQiCisJCSAgIm1hcnZlbGwsYXJtYWRhLTM3NS13ZHQiCisJCSAgIm1hcnZlbGwsYXJtYWRhLTM4MC13ZHQiCisKKy0gcmVnCQk6IFNob3VsZCBjb250YWluIHR3byBlbnRyaWVzOiBmaXJzdCBvbmUgd2l0aCB0aGUKKwkJICB0aW1lciBjb250cm9sIGFkZHJlc3MsIHNlY29uZCBvbmUgd2l0aCB0aGUKKwkJICByc3RvdXQgZW5hYmxlIGFkZHJlc3MuCisKK0ZvciAibWFydmVsbCxhcm1hZGEtMzc1LXdkdCIgYW5kICJtYXJ2ZWxsLGFybWFkYS0zODAtd2R0IjoKKworLSByZWcJCTogQSB0aGlyZCBlbnRyeSBpcyBtYW5kYXRvcnkgYW5kIHNob3VsZCBjb250YWluIHRoZQorICAgICAgICAgICAgICAgICAgc2hhcmVkIG1hc2svdW5tYXNrIFJTVE9VVCBhZGRyZXNzLgorCitDbG9ja3MgcmVxdWlyZWQgZm9yIGNvbXBhdGlibGVzID0gIm1hcnZlbGwsb3Jpb24td2R0IiwKKwkJCQkgICJtYXJ2ZWxsLGFybWFkYS0zNzAtd2R0IjoKKy0gY2xvY2tzIDogTXVzdCBjb250YWluIGEgc2luZ2xlIGVudHJ5IGRlc2NyaWJpbmcgdGhlIGNsb2NrIGlucHV0CisKK0Nsb2NrcyByZXF1aXJlZCBmb3IgY29tcGF0aWJsZXMgPSAibWFydmVsbCxhcm1hZGEteHAtd2R0IgorCQkJCSAgIm1hcnZlbGwsYXJtYWRhLTM3NS13ZHQiCisJCQkJICAibWFydmVsbCxhcm1hZGEtMzgwLXdkdCI6CistIGNsb2NrcyA6IE11c3QgY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBlbnRyeSBpbiBjbG9jay1uYW1lcy4KKy0gY2xvY2stbmFtZXMgOiBNdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBlbnRyaWVzOgorICAibmJjbGsiIChMMi9jb2hlcmVuY3kgZmFicmljIGNsb2NrKSwKKyAgImZpeGVkIiAoUmVmZXJlbmNlIDI1IE1IeiBmaXhlZC1jbG9jaykuCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CisKKy0gaW50ZXJydXB0cwk6IENvbnRhaW5zIHRoZSBJUlEgZm9yIHdhdGNoZG9nIGV4cGlyYXRpb24KKy0gdGltZW91dC1zZWMJOiBDb250YWlucyB0aGUgd2F0Y2hkb2cgdGltZW91dCBpbiBzZWNvbmRzCisKK0V4YW1wbGU6CisKKwl3ZHRAMjAzMDAgeworCQljb21wYXRpYmxlID0gIm1hcnZlbGwsb3Jpb24td2R0IjsKKwkJcmVnID0gPDB4MjAzMDAgMHgyOD4sIDwweDIwMTA4IDB4ND47CisJCWludGVycnVwdHMgPSA8Mz47CisJCXRpbWVvdXQtc2VjID0gPDEwPjsKKwkJc3RhdHVzID0gIm9rYXkiOworCQljbG9ja3MgPSA8JmdhdGVfY2xrIDc+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvbWVuLWEwMjEtd2R0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9tZW4tYTAyMS13ZHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3MGRlZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvbWVuLWEwMjEtd2R0LnR4dApAQCAtMCwwICsxLDI1IEBACitCaW5kaW5ncyBmb3IgTUVOIEEyMSBXYXRjaGRvZyBkZXZpY2UgY29ubmVjdGVkIHRvIEdQSU8gbGluZXMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogIm1lbixhMDIxLXdkdCIKKy0gZ3Bpb3M6IFNwZWNpZmllcyB0aGUgcGlucyB0aGF0IGNvbnRyb2wgdGhlIFdhdGNoZG9nLCBvcmRlcjoKKyAgMTogV2F0Y2hkb2cgZW5hYmxlCisgIDI6IFdhdGNoZG9nIGZhc3QtbW9kZQorICAzOiBXYXRjaGRvZyB0cmlnZ2VyCisgIDQ6IFdhdGNoZG9nIHJlc2V0IGNhdXNlIGJpdCAwCisgIDU6IFdhdGNoZG9nIHJlc2V0IGNhdXNlIGJpdCAxCisgIDY6IFdhdGNoZG9nIHJlc2V0IGNhdXNlIGJpdCAyCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIE5vbmUKKworRXhhbXBsZToKKwl3YXRjaGRvZyB7CisJCWNvbXBhdGlibGUgPSJtZW4sYTAyMS13ZHQiOworCQlncGlvcyA9IDwmZ3BpbzMgOSAgMQkvKiBXRF9FTiAqLworCQkJICZncGlvMyAxMCAxCS8qIFdEX0ZBU1QgKi8KKwkJCSAmZ3BpbzMgMTEgMQkvKiBXRF9UUklHICovCisJCQkgJmdwaW8zIDYgIDEJLyogUlNUX0NBVVNFWzBdICovCisJCQkgJmdwaW8zIDcgIDEJLyogUlNUX0NBVVNFWzFdICovCisJCQkgJmdwaW8zIDggIDE+OwkvKiBSU1RfQ0FVU0VbMl0gKi8KKwl9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL21lc29uNi13ZHQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL21lc29uNi13ZHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyMDBmYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvbWVzb242LXdkdC50eHQKQEAgLTAsMCArMSwxMyBAQAorTWVzb24gU29DcyBXYXRjaGRvZyB0aW1lcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgImFtbG9naWMsbWVzb242LXdkdCIKKy0gcmVnIDogU3BlY2lmaWVzIGJhc2UgcGh5c2ljYWwgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgcmVnaXN0ZXJzLgorCitFeGFtcGxlOgorCit3ZHQ6IHdhdGNoZG9nQGMxMTA5OTAwIHsKKwljb21wYXRpYmxlID0gImFtbG9naWMsbWVzb242LXdkdCI7CisJcmVnID0gPDB4YzExMDk5MDAgMHg4PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvbW94YSxtb3hhcnQtd2F0Y2hkb2cudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL21veGEsbW94YXJ0LXdhdGNoZG9nLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTY5ODU3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL21veGEsbW94YXJ0LXdhdGNoZG9nLnR4dApAQCAtMCwwICsxLDE1IEBACitNT1hBIEFSVCBXYXRjaGRvZyB0aW1lcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiBNdXN0IGJlICJtb3hhLG1veGFydC13YXRjaGRvZyIKKy0gcmVnIDogU2hvdWxkIGNvbnRhaW4gcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5ndGgKKy0gY2xvY2tzIDogU2hvdWxkIGNvbnRhaW4gcGhhbmRsZSBmb3IgdGhlIGNsb2NrIHRoYXQgZHJpdmVzIHRoZSBjb3VudGVyCisKK0V4YW1wbGU6CisKKwl3YXRjaGRvZzogd2F0Y2hkb2dAOTg1MDAwMDAgeworCQljb21wYXRpYmxlID0gIm1veGEsbW94YXJ0LXdhdGNoZG9nIjsKKwkJcmVnID0gPDB4OTg1MDAwMDAgMHgxMD47CisJCWNsb2NrcyA9IDwmY29yZWNsaz47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9tdGstd2R0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9tdGstd2R0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjllYjViCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL210ay13ZHQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK01lZGlhdGVrIFNvQ3MgV2F0Y2hkb2cgdGltZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKworLSBjb21wYXRpYmxlIDogc2hvdWxkIGJlICJtZWRpYXRlayxtdDY1ODktd2R0IgorLSByZWcgOiBTcGVjaWZpZXMgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZSByZWdpc3RlcnMuCisKK0V4YW1wbGU6CisKK3dkdDogd2F0Y2hkb2dAMDEwMDAwMDAwIHsKKwljb21wYXRpYmxlID0gIm1lZGlhdGVrLG10NjU4OS13ZHQiOworCXJlZyA9IDwweDEwMDAwMDAwIDB4MTg+OworfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9vZi14aWxpbngtd2R0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9vZi14aWxpbngtd2R0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDYzNzgyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL29mLXhpbGlueC13ZHQudHh0CkBAIC0wLDAgKzEsMjMgQEAKK1hpbGlueCBBWEkvUExCIHNvZnQtY29yZSB3YXRjaGRvZyBEZXZpY2UgVHJlZSBCaW5kaW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUJCTogU2hvdWxkIGJlICJ4bG54LHhwcy10aW1lYmFzZS13ZHQtMS4wMC5hIiBvcgorCQkJICAieGxueCx4cHMtdGltZWJhc2Utd2R0LTEuMDEuYSIuCistIHJlZwkJCTogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBzaXplCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGNsb2NrLWZyZXF1ZW5jeQk6IEZyZXF1ZW5jeSBvZiBjbG9jayBpbiBIegorLSB4bG54LHdkdC1lbmFibGUtb25jZQk6IDAgLSBXYXRjaGRvZyBjYW4gYmUgcmVzdGFydGVkCisJCQkgIDEgLSBXYXRjaGRvZyBjYW4gYmUgZW5hYmxlZCBqdXN0IG9uY2UKKy0geGxueCx3ZHQtaW50ZXJ2YWwJOiBXYXRjaGRvZyB0aW1lb3V0IGludGVydmFsIGluIDJePHZhbD4gY2xvY2sgY3ljbGVzLAorCQkJICA8dmFsPiBpcyBpbnRlZ2VyIGZyb20gOCB0byAzMS4KKworRXhhbXBsZToKK2F4aS10aW1lYmFzZS13ZHRANDAxMDAwMDAgeworCWNsb2NrLWZyZXF1ZW5jeSA9IDw1MDAwMDAwMD47CisJY29tcGF0aWJsZSA9ICJ4bG54LHhwcy10aW1lYmFzZS13ZHQtMS4wMC5hIjsKKwlyZWcgPSA8MHg0MDEwMDAwMCAweDEwMDAwPjsKKwl4bG54LHdkdC1lbmFibGUtb25jZSA9IDwweDA+OworCXhsbngsd2R0LWludGVydmFsID0gPDB4MWI+OworfSA7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvb21hcC13ZHQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL29tYXAtd2R0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmEyMGU0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL29tYXAtd2R0LnR4dApAQCAtMCwwICsxLDE1IEBACitUSSBXYXRjaGRvZyBUaW1lciAoV0RUKSBDb250cm9sbGVyIGZvciBPTUFQCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGUgOiAidGksb21hcDMtd2R0IiBmb3IgT01BUDMgb3IgInRpLG9tYXA0LXdkdCIgZm9yIE9NQVA0CistIHRpLGh3bW9kcyA6IE5hbWUgb2YgdGhlIGh3bW9kIGFzc29jaWF0ZWQgdG8gdGhlIFdEVAorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSB0aW1lb3V0LXNlYyA6IGRlZmF1bHQgd2F0Y2hkb2cgdGltZW91dCBpbiBzZWNvbmRzCisKK0V4YW1wbGVzOgorCit3ZHQyOiB3ZHRANGEzMTQwMDAgeworCWNvbXBhdGlibGUgPSAidGksb21hcDQtd2R0IiwgInRpLG9tYXAzLXdkdCI7CisJdGksaHdtb2RzID0gIndkX3RpbWVyMiI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL3BueDQwMDgtd2R0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9wbng0MDA4LXdkdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU2ZDA2YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9wbng0MDA4LXdkdC50eHQKQEAgLTAsMCArMSwxNyBAQAorKiBOWFAgUE5YIHdhdGNoZG9nIHRpbWVyCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6IG11c3QgYmUgIm54cCxwbng0MDA4LXdkdCIKKy0gcmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisgIHJlZ2lvbi4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdGltZW91dC1zZWM6IGNvbnRhaW5zIHRoZSB3YXRjaGRvZyB0aW1lb3V0IGluIHNlY29uZHMuCisKK0V4YW1wbGU6CisKKwl3YXRjaGRvZ0A0MDAzQzAwMCB7CisJCWNvbXBhdGlibGUgPSAibnhwLHBueDQwMDgtd2R0IjsKKwkJcmVnID0gPDB4NDAwM0MwMDAgMHgxMDAwPjsKKwkJdGltZW91dC1zZWMgPSA8MTA+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvcWNhLWFyNzEzMC13ZHQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL3FjYS1hcjcxMzAtd2R0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTg5ZTVmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL3FjYS1hcjcxMzAtd2R0LnR4dApAQCAtMCwwICsxLDEzIEBACisqIFF1YWxjb21tIEF0aGVyb3MgQVI3MTMwIFdhdGNoZG9nIFRpbWVyIChXRFQpIENvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogbXVzdCBiZSAicWNhLGFyNzEzMC13ZHQiCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICByZWdpb24uCisKK0V4YW1wbGU6CisKK3dkdEAxODA2MDAwOCB7CisJY29tcGF0aWJsZSA9ICJxY2EsYXI5MzMwLXdkdCIsICJxY2EsYXI3MTMwLXdkdCI7CisJcmVnID0gPDB4MTgwNjAwMDggMHg4PjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvcWNvbS13ZHQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL3Fjb20td2R0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzI2OTI0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL3Fjb20td2R0LnR4dApAQCAtMCwwICsxLDI0IEBACitRdWFsY29tbSBLcmFpdCBQcm9jZXNzb3IgU3ViLXN5c3RlbSAoS1BTUykgV2F0Y2hkb2cKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzIDoKKy0gY29tcGF0aWJsZSA6IHNoYWxsIGNvbnRhaW4gb25seSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKworCQkJInFjb20sa3Bzcy13ZHQtbXNtODk2MCIKKwkJCSJxY29tLGtwc3Mtd2R0LWFwcTgwNjQiCisJCQkicWNvbSxrcHNzLXdkdC1pcHE4MDY0IgorCistIHJlZyA6IHNoYWxsIGNvbnRhaW4gYmFzZSByZWdpc3RlciBsb2NhdGlvbiBhbmQgbGVuZ3RoCistIGNsb2NrcyA6IHNoYWxsIGNvbnRhaW4gdGhlIGlucHV0IGNsb2NrCisKK09wdGlvbmFsIHByb3BlcnRpZXMgOgorLSB0aW1lb3V0LXNlYyA6IHNoYWxsIGNvbnRhaW4gdGhlIGRlZmF1bHQgd2F0Y2hkb2cgdGltZW91dCBpbiBzZWNvbmRzLAorICAgICAgICAgICAgICAgIGlmIHVuc2V0LCB0aGUgZGVmYXVsdCB0aW1lb3V0IGlzIDMwIHNlY29uZHMKKworRXhhbXBsZToKKwl3YXRjaGRvZ0AyMDhhMDM4IHsKKwkJY29tcGF0aWJsZSA9ICJxY29tLGtwc3Mtd2R0LWlwcTgwNjQiOworCQlyZWcgPSA8MHgwMjA4YTAzOCAweDQwPjsKKwkJY2xvY2tzID0gPCZzbGVlcF9jbGs+OworCQl0aW1lb3V0LXNlYyA9IDwxMD47CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9ydDI4ODAtd2R0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9ydDI4ODAtd2R0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2JhYjNkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL3J0Mjg4MC13ZHQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1JhbGluayBXYXRjaGRvZyBUaW1lcnMKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogbXVzdCBiZSAicmFsaW5rLHJ0Mjg4MC13ZHQiCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVyIHJhbmdlCisKK09wdGlvbmFsIHByb3BlcnRpZXM6CistIGludGVycnVwdC1wYXJlbnQ6IHBoYW5kbGUgdG8gdGhlIElOVEMgZGV2aWNlIG5vZGUKKy0gaW50ZXJydXB0czogU3BlY2lmeSB0aGUgSU5UQyBpbnRlcnJ1cHQgbnVtYmVyCisKK0V4YW1wbGU6CisKKwl3YXRjaGRvZ0AxMjAgeworCQljb21wYXRpYmxlID0gInJhbGluayxydDI4ODAtd2R0IjsKKwkJcmVnID0gPDB4MTIwIDB4MTA+OworCisJCWludGVycnVwdC1wYXJlbnQgPSA8JmludGM+OworCQlpbnRlcnJ1cHRzID0gPDE+OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvc2Ftc3VuZy13ZHQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL3NhbXN1bmctd2R0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjNkOTZhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL3NhbXN1bmctd2R0LnR4dApAQCAtMCwwICsxLDM0IEBACisqIFNhbXN1bmcncyBXYXRjaGRvZyBUaW1lciBDb250cm9sbGVyCisKK1RoZSBTYW1zdW5nJ3MgV2F0Y2hkb2cgY29udHJvbGxlciBpcyB1c2VkIGZvciByZXN1bWluZyBzeXN0ZW0gb3BlcmF0aW9uCithZnRlciBhIHByZXNldCBhbW91bnQgb2YgdGltZSBkdXJpbmcgd2hpY2ggdGhlIFdEVCByZXNldCBldmVudCBoYXMgbm90CitvY2N1cnJlZC4KKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZSA6IHNob3VsZCBiZSBvbmUgYW1vbmcgdGhlIGZvbGxvd2luZworCShhKSAic2Ftc3VuZyxzM2MyNDEwLXdkdCIgZm9yIEV4eW5vczQgYW5kIHByZXZpb3VzIFNvQ3MKKwkoYikgInNhbXN1bmcsZXh5bm9zNTI1MC13ZHQiIGZvciBFeHlub3M1MjUwCisJKGMpICJzYW1zdW5nLGV4eW5vczU0MjAtd2R0IiBmb3IgRXh5bm9zNTQyMAorCShjKSAic2Ftc3VuZyxleHlub3M3LXdkdCIgZm9yIEV4eW5vczcKKworLSByZWcgOiBiYXNlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGNvbnRyb2xsZXIgYW5kIGxlbmd0aCBvZiBtZW1vcnkgbWFwcGVkCisJcmVnaW9uLgorLSBpbnRlcnJ1cHRzIDogaW50ZXJydXB0IG51bWJlciB0byB0aGUgY3B1LgorLSBzYW1zdW5nLHN5c2Nvbi1waGFuZGxlIDogcmVmZXJlbmNlIHRvIHN5c2NvbiBub2RlIChUaGlzIHByb3BlcnR5IHJlcXVpcmVkIG9ubHkKKwlpbiBjYXNlIG9mIGNvbXBhdGlibGUgYmVpbmcgInNhbXN1bmcsZXh5bm9zNTI1MC13ZHQiIG9yICJzYW1zdW5nLGV4eW5vczU0MjAtd2R0Ii4KKwlJbiBjYXNlIG9mIEV4eW5vczUyNTAgYW5kIDU0MjAgdGhpcyBwcm9wZXJ0eSBwb2ludHMgdG8gc3lzY29uIG5vZGUgaG9sZGluZyB0aGUgUE1VCisJYmFzZSBhZGRyZXNzKQorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSB0aW1lb3V0LXNlYyA6IGNvbnRhaW5zIHRoZSB3YXRjaGRvZyB0aW1lb3V0IGluIHNlY29uZHMuCisKK0V4YW1wbGU6CisKK3dhdGNoZG9nQDEwMUQwMDAwIHsKKwljb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTI1MC13ZHQiOworCXJlZyA9IDwweDEwMUQwMDAwIDB4MTAwPjsKKwlpbnRlcnJ1cHRzID0gPDAgNDIgMD47CisJY2xvY2tzID0gPCZjbG9jayAzMzY+OworCWNsb2NrLW5hbWVzID0gIndhdGNoZG9nIjsKKwlzYW1zdW5nLHN5c2Nvbi1waGFuZGxlID0gPCZwbXVfc3lzY29uPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvc2lyZnNvY193ZHQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL3NpcmZzb2Nfd2R0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2JjNzZjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL3NpcmZzb2Nfd2R0LnR4dApAQCAtMCwwICsxLDE0IEBACitTaVJGU29DIFRpbWVyIGFuZCBXYXRjaGRvZyBUaW1lcihXRFQpIENvbnRyb2xsZXIKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogInNpcmYscHJpbWEyLXRpY2siCistIHJlZzogQWRkcmVzcyByYW5nZSBvZiB0aWNrIHRpbWVyL1dEVCByZWdpc3RlciBzZXQKKy0gaW50ZXJydXB0czogaW50ZXJydXB0IG51bWJlciB0byB0aGUgY3B1CisKK0V4YW1wbGU6CisKK3RpbWVyQGIwMDIwMDAwIHsKKwljb21wYXRpYmxlID0gInNpcmYscHJpbWEyLXRpY2siOworCXJlZyA9IDwweGIwMDIwMDAwIDB4MTAwMD47CisJaW50ZXJydXB0cyA9IDwwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvc3RfbHBjX3dkdC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvc3RfbHBjX3dkdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM5YzVjYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9zdF9scGNfd2R0LnR4dApAQCAtMCwwICsxLDQyIEBACitTVE1pY3JvZWxlY3Ryb25pY3MgTG93IFBvd2VyIENvbnRyb2xsZXIgKExQQykgLSBXYXRjaGRvZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworTFBDIGN1cnJlbnRseSBzdXBwb3J0cyBXYXRjaGRvZyBPUiBSZWFsIFRpbWUgQ2xvY2sgT1IgQ2xvY2tzb3VyY2UKK2Z1bmN0aW9uYWxpdHkuCisKK1tTZWU6IC4uL3J0Yy9ydGMtc3QtbHBjLnR4dCBmb3IgUlRDIG9wdGlvbnNdCitbU2VlOiAuLi90aW1lci9zdCxzdGloNDA3LWxwYyBmb3IgQ2xvY2tzb3VyY2Ugb3B0aW9uc10KKworUmVxdWlyZWQgcHJvcGVydGllcworCistIGNvbXBhdGlibGUgCTogTXVzdCBiZSBvbmUgb2Y6ICJzdCxzdGloNDA3LWxwYyIgInN0LHN0aWg0MTYtbHBjIgorCQkJCSAgInN0LHN0aWg0MTUtbHBjIiAic3Qsc3RpZDEyNy1scGMiCistIHJlZwkJOiBMUEMgcmVnaXN0ZXJzIGJhc2UgYWRkcmVzcyArIHNpemUKKy0gaW50ZXJydXB0cyAgICA6IExQQyBpbnRlcnJ1cHQgbGluZSBudW1iZXIgYW5kIGFzc29jaWF0ZWQgZmxhZ3MKKy0gY2xvY2tzCTogQ2xvY2sgdXNlZCBieSBMUEMgZGV2aWNlIChTZWU6IC4uL2Nsb2NrL2Nsb2NrLWJpbmRpbmdzLnR4dCkKKy0gc3QsbHBjLW1vZGUJOiBUaGUgTFBDIGNhbiBydW4gZWl0aGVyIG9uZSBvZiB0aHJlZSBtb2RlczoKKyAgICAgICAgICAgICAgICAgIFNUX0xQQ19NT0RFX1JUQyAgICBbMF0KKyAgICAgICAgICAgICAgICAgIFNUX0xQQ19NT0RFX1dEVCAgICBbMV0KKyAgICAgICAgICAgICAgICAgIFNUX0xQQ19NT0RFX0NMS1NSQyBbMl0KKwkJIE9uZSAoYW5kIG9ubHkgb25lKSBtb2RlIG11c3QgYmUgc2VsZWN0ZWQuCisKK1JlcXVpcmVkIHByb3BlcnRpZXMgW3dhdGNoZG9nIG1vZGVdCisKKy0gc3Qsc3lzY2ZnCTogUGhhbmRsZSB0byBzeXNjZmcgbm9kZSB1c2VkIHRvIGVuYWJsZSB3YXRjaGRvZyBhbmQgY29uZmlndXJlCisJCSAgQ1BVIHJlc2V0IHR5cGUuCistIHRpbWVvdXQtc2VjCTogV2F0Y2hkb2cgdGltZW91dCBpbiBzZWNvbmRzCisKK09wdGlvbmFsIHByb3BlcnRpZXMgW3dhdGNoZG9nIG1vZGVdCisKKy0gc3Qsd2FybS1yZXNldAk6IElmIHByZXNlbnQgcmVzZXQgdHlwZSB3aWxsIGJlICd3YXJtJyAtIGlmIG5vdCBpdCB3aWxsIGJlIGNvbGQKKworRXhhbXBsZToKKwlscGNAZmRlMDUwMDAgeworCQljb21wYXRpYmxlCT0gInN0LHN0aWg0MDctbHBjIjsKKwkJcmVnCQk9IDwweGZkZTA1MDAwIDB4MTAwMD47CisJCWNsb2NrcyAJCT0gPCZjbGtfc19kM19mbGV4Z2VuIENMS19MUENfMD47CisJCXN0LHN5c2NmZwk9IDwmc3lzY2ZnX2NvcmU+OworCQl0aW1lb3V0LXNlYwk9IDwxMjA+OworCQlzdCxscGMtbW9kZQk9IDxTVF9MUENfTU9ERV9XRFQ+OworCQlzdCx3YXJtLXJlc2V0OworCX07CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvc3Rlcmljc3Nvbi1jb2g5MDEzMjcudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL3N0ZXJpY3Nzb24tY29oOTAxMzI3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmZiODhlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL3N0ZXJpY3Nzb24tY29oOTAxMzI3LnR4dApAQCAtMCwwICsxLDE5IEBACitTVC1Fcmljc3NvbiBDT0ggOTAxIDMyNyBXYXRjaGRvZyB0aW1lcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorLSBjb21wYXRpYmxlOiBtdXN0IGJlICJzdGVyaWNzc29uLGNvaDkwMTMyNyIuCistIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFuZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAorICByZWdpb24uCistIGludGVycnVwdHM6IHRoZSBpbnRlcnJ1cHQgdXNlZCBmb3IgdGhlIHdhdGNoZG9nIHRpbWVvdXQgd2FybmluZy4KKworT3B0aW9uYWwgcHJvcGVydGllczoKKy0gdGltZW91dC1zZWM6IGNvbnRhaW5zIHRoZSB3YXRjaGRvZyB0aW1lb3V0IGluIHNlY29uZHMuCisKK0V4YW1wbGU6CisKK3dhdGNoZG9nOiB3YXRjaGRvZ0BjMDAxMjAwMCB7CisJY29tcGF0aWJsZSA9ICJzdGVyaWNzc29uLGNvaDkwMTMyNyI7CisJcmVnID0gPDB4YzAwMTIwMDAgMHgxMDAwPjsKKwlpbnRlcnJ1cHRzID0gPDM+OworCXRpbWVvdXQtc2VjID0gPDYwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvc3VueGktd2R0LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9zdW54aS13ZHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4Zjc1YzUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvc3VueGktd2R0LnR4dApAQCAtMCwwICsxLDE0IEBACitBbGx3aW5uZXIgU29DcyBXYXRjaGRvZyB0aW1lcgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCistIGNvbXBhdGlibGUgOiBzaG91bGQgYmUgZWl0aGVyICJhbGx3aW5uZXIsc3VuNGktYTEwLXdkdCIgb3IKKyAgICAgICAgICAgICAgICJhbGx3aW5uZXIsc3VuNmktYTMxLXdkdCIKKy0gcmVnIDogU3BlY2lmaWVzIGJhc2UgcGh5c2ljYWwgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgcmVnaXN0ZXJzLgorCitFeGFtcGxlOgorCit3ZHQ6IHdhdGNoZG9nQDAxYzIwYzkwIHsKKwljb21wYXRpYmxlID0gImFsbHdpbm5lcixzdW40aS1hMTAtd2R0IjsKKwlyZWcgPSA8MHgwMWMyMGM5MCAweDEwPjsKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvdHdsNDAzMC13ZHQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL3R3bDQwMzAtd2R0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGEzNzE5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL3R3bDQwMzAtd2R0LnR4dApAQCAtMCwwICsxLDEwIEBACitEZXZpY2UgdHJlZSBiaW5kaW5ncyBmb3IgdHdsNDAzMC13ZHQgZHJpdmVyIChUV0w0MDMwIHdhdGNoZG9nKQorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCWNvbXBhdGlibGUgPSAidGksdHdsNDAzMC13ZHQiOworCitFeGFtcGxlOgorCit3YXRjaGRvZyB7CisJY29tcGF0aWJsZSA9ICJ0aSx0d2w0MDMwLXdkdCI7Cit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3g4Ni9jZTQxMDAudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3g4Ni9jZTQxMDAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0OWFlNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MveDg2L2NlNDEwMC50eHQKQEAgLTAsMCArMSwzOCBAQAorQ0U0MTAwIERldmljZSBUcmVlIEJpbmRpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIENFNDEwMCBTb0MgdXNlcyBmb3IgaW4gY29yZSBwZXJpcGhlcmFscyB0aGUgZm9sbG93aW5nIGNvbXBhdGlibGUKK2Zvcm1hdDogPHZlbmRvcj4sPGNoaXA+LTxkZXZpY2U+LgorTWFueSBvZiB0aGUgImdlbmVyaWMiIGRldmljZXMgbGlrZSBIUEVUIG9yIElPIEFQSUMgaGF2ZSB0aGUgY2U0MTAwCituYW1lIGluIHRoZWlyIGNvbXBhdGlibGUgcHJvcGVydHkgYmVjYXVzZSB0aGV5IGZpcnN0IGFwcGVhcmVkIGluIHRoaXMKK1NvQy4KKworVGhlIENQVSBub2RlCistLS0tLS0tLS0tLS0KKwljcHVAMCB7CisJCWRldmljZV90eXBlID0gImNwdSI7CisJCWNvbXBhdGlibGUgPSAiaW50ZWwsY2U0MTAwIjsKKwkJcmVnID0gPDA+OworCQlsYXBpYyA9IDwmbGFwaWMwPjsKKwl9OworCitUaGUgcmVnIHByb3BlcnR5IGRlc2NyaWJlcyB0aGUgQ1BVIG51bWJlci4gVGhlIGxhcGljIHByb3BlcnR5IHBvaW50cyB0bwordGhlIGxvY2FsIEFQSUMgdGltZXIuCisKK1RoZSBTb0Mgbm9kZQorLS0tLS0tLS0tLS0tCisKK1RoaXMgbm9kZSBkZXNjcmliZXMgdGhlIGluLWNvcmUgcGVyaXBoZXJhbHMuIFJlcXVpcmVkIHByb3BlcnR5OgorICBjb21wYXRpYmxlID0gImludGVsLGNlNDEwMC1jcCI7CisKK1RoZSBQQ0kgbm9kZQorLS0tLS0tLS0tLS0tCitUaGlzIG5vZGUgZGVzY3JpYmVzIHRoZSBQQ0kgYnVzIG9uIHRoZSBTb0MuIEl0cyBwcm9wZXJ0eSBzaG91bGQgYmUKKyAgY29tcGF0aWJsZSA9ICJpbnRlbCxjZTQxMDAtcGNpIiwgInBjaSI7CisKK0lmIHRoZSBPUyBpcyB1c2luZyB0aGUgSU8tQVBJQyBmb3IgaW50ZXJydXB0IHJvdXRpbmcgdGhlbiB0aGUgcmVwb3J0ZWQKK2ludGVycnVwdCBudW1iZXJzIGZvciBkZXZpY2VzIGlzIG5vIGxvbmdlciB0cnVlLiBJbiBvcmRlciB0byBvYnRhaW4gdGhlCitjb3JyZWN0IGludGVycnVwdCBudW1iZXIsIHRoZSBjaGlsZCBub2RlIHdoaWNoIHJlcHJlc2VudHMgdGhlIGRldmljZSBoYXMKK3RvIGNvbnRhaW4gdGhlIGludGVycnVwdCBwcm9wZXJ0eS4gQmVzaWRlcyB0aGUgaW50ZXJydXB0IHByb3BlcnR5IGl0IGhhcwordG8gY29udGFpbiBhdCBsZWFzdCB0aGUgcmVnIHByb3BlcnR5IGNvbnRhaW5pbmcgdGhlIFBDSSBidXMgYWRkcmVzcyBhbmQKK2NvbXBhdGlibGUgcHJvcGVydHkgYWNjb3JkaW5nIHRvICJQQ0kgQnVzIEJpbmRpbmcgUmV2aXNpb24gMi4xIi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy94ODYvdGltZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3g4Ni90aW1lci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4OGFmNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy94ODYvdGltZXIudHh0CkBAIC0wLDAgKzEsNiBAQAorVGltZXJzCistLS0tLS0KKworKiBIaWdoIFByZWNpc2lvbiBFdmVudCBUaW1lciAoSFBFVCkKKyAgUmVxdWlyZWQgcHJvcGVydHk6CisgICAgIGNvbXBhdGlibGUgPSAiaW50ZWwsY2U0MTAwLWhwZXQiOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3hpbGlueC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MveGlsaW54LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTlkMDkyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3hpbGlueC50eHQKQEAgLTAsMCArMSwzMDYgQEAKKyAgIGQpIFhpbGlueCBJUCBjb3JlcworCisgICBUaGUgWGlsaW54IEVESyB0b29sY2hhaW4gc2hpcHMgd2l0aCBhIHNldCBvZiBJUCBjb3JlcyAoZGV2aWNlcykgZm9yIHVzZQorICAgaW4gWGlsaW54IFNwYXJ0YW4gYW5kIFZpcnRleCBGUEdBcy4gIFRoZSBkZXZpY2VzIGNvdmVyIHRoZSB3aG9sZSByYW5nZQorICAgb2Ygc3RhbmRhcmQgZGV2aWNlIHR5cGVzIChuZXR3b3JrLCBzZXJpYWwsIGV0Yy4pIGFuZCBtaXNjZWxsYW5lb3VzCisgICBkZXZpY2VzIChncGlvLCBMQ0QsIHNwaSwgZXRjKS4gIEFsc28sIHNpbmNlIHRoZXNlIGRldmljZXMgYXJlCisgICBpbXBsZW1lbnRlZCB3aXRoaW4gdGhlIGZwZ2EgZmFicmljIGV2ZXJ5IGluc3RhbmNlIG9mIHRoZSBkZXZpY2UgY2FuIGJlCisgICBzeW50aGVzaXNlZCB3aXRoIGRpZmZlcmVudCBvcHRpb25zIHRoYXQgY2hhbmdlIHRoZSBiZWhhdmlvdXIuCisKKyAgIEVhY2ggSVAtY29yZSBoYXMgYSBzZXQgb2YgcGFyYW1ldGVycyB3aGljaCB0aGUgRlBHQSBkZXNpZ25lciBjYW4gdXNlIHRvCisgICBjb250cm9sIGhvdyB0aGUgY29yZSBpcyBzeW50aGVzaXplZC4gIEhpc3RvcmljYWxseSwgdGhlIEVESyB0b29sIHdvdWxkCisgICBleHRyYWN0IHRoZSBkZXZpY2UgcGFyYW1ldGVycyByZWxldmFudCB0byBkZXZpY2UgZHJpdmVycyBhbmQgY29weSB0aGVtCisgICBpbnRvIGFuICd4cGFyYW1ldGVycy5oJyBpbiB0aGUgZm9ybSBvZiAjZGVmaW5lIHN5bWJvbHMuICBUaGlzIHRlbGxzIHRoZQorICAgZGV2aWNlIGRyaXZlcnMgaG93IHRoZSBJUCBjb3JlcyBhcmUgY29uZmlndXJlZCwgYnV0IGl0IHJlcXVpcmVzIHRoZSBrZXJuZWwKKyAgIHRvIGJlIHJlY29tcGlsZWQgZXZlcnkgdGltZSB0aGUgRlBHQSBiaXRzdHJlYW0gaXMgcmVzeW50aGVzaXplZC4KKworICAgVGhlIG5ldyBhcHByb2FjaCBpcyB0byBleHBvcnQgdGhlIHBhcmFtZXRlcnMgaW50byB0aGUgZGV2aWNlIHRyZWUgYW5kCisgICBnZW5lcmF0ZSBhIG5ldyBkZXZpY2UgdHJlZSBlYWNoIHRpbWUgdGhlIEZQR0EgYml0c3RyZWFtIGNoYW5nZXMuICBUaGUKKyAgIHBhcmFtZXRlcnMgd2hpY2ggdXNlZCB0byBiZSBleHBvcnRlZCBhcyAjZGVmaW5lcyB3aWxsIG5vdyBiZWNvbWUKKyAgIHByb3BlcnRpZXMgb2YgdGhlIGRldmljZSBub2RlLiAgSW4gZ2VuZXJhbCwgZGV2aWNlIG5vZGVzIGZvciBJUC1jb3JlcworICAgd2lsbCB0YWtlIHRoZSBmb2xsb3dpbmcgZm9ybToKKworCShuYW1lKTogKGdlbmVyaWMtbmFtZSlAKGJhc2UtYWRkcmVzcykgeworCQljb21wYXRpYmxlID0gInhsbngsKGlwLWNvcmUtbmFtZSktKEhXX1ZFUikiCisJCQkgICAgIFssIChsaXN0IG9mIGNvbXBhdGlibGUgZGV2aWNlcyksIC4uLl07CisJCXJlZyA9IDwoYmFzZWFkZHIpIChzaXplKT47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmludGVycnVwdC1jb250cm9sbGVyLXBoYW5kbGU+OworCQlpbnRlcnJ1cHRzID0gPCAuLi4gPjsKKwkJeGxueCwocGFyYW1ldGVyMSkgPSAiKHN0cmluZy12YWx1ZSkiOworCQl4bG54LChwYXJhbWV0ZXIyKSA9IDwoaW50LXZhbHVlKT47CisJfTsKKworCShnZW5lcmljLW5hbWUpOiAgIGFuIG9wZW4gZmlybXdhcmUtc3R5bGUgbmFtZSB0aGF0IGRlc2NyaWJlcyB0aGUKKwkJCWdlbmVyaWMgY2xhc3Mgb2YgZGV2aWNlLiAgUHJlZmVyYWJseSwgdGhpcyBpcyBvbmUgd29yZCwgc3VjaAorCQkJYXMgJ3NlcmlhbCcgb3IgJ2V0aGVybmV0Jy4KKwkoaXAtY29yZS1uYW1lKToJdGhlIG5hbWUgb2YgdGhlIGlwIGJsb2NrIChnaXZlbiBhZnRlciB0aGUgQkVHSU4KKwkJCWRpcmVjdGl2ZSBpbiBzeXN0ZW0ubWhzKS4gIFNob3VsZCBiZSBpbiBsb3dlcmNhc2UKKwkJCWFuZCBhbGwgdW5kZXJzY29yZXMgJ18nIGNvbnZlcnRlZCB0byBkYXNoZXMgJy0nLgorCShuYW1lKToJCWlzIGRlcml2ZWQgZnJvbSB0aGUgIlBBUkFNRVRFUiBJTlNUQU5DRSIgdmFsdWUuCisJKHBhcmFtZXRlciMpOglDXyogcGFyYW1ldGVycyBmcm9tIHN5c3RlbS5taHMuICBUaGUgQ18gcHJlZml4IGlzCisJCQlkcm9wcGVkIGZyb20gdGhlIHBhcmFtZXRlciBuYW1lLCB0aGUgbmFtZSBpcyBjb252ZXJ0ZWQKKwkJCXRvIGxvd2VyY2FzZSBhbmQgYWxsIHVuZGVyc2NvcmUgJ18nIGNoYXJhY3RlcnMgYXJlCisJCQljb252ZXJ0ZWQgdG8gZGFzaGVzICctJy4KKwkoYmFzZWFkZHIpOgl0aGUgYmFzZWFkZHIgcGFyYW1ldGVyIHZhbHVlIChvZnRlbiBuYW1lZCBDX0JBU0VBRERSKS4KKwkoSFdfVkVSKToJZnJvbSB0aGUgSFdfVkVSIHBhcmFtZXRlci4KKwkoc2l6ZSk6CQl0aGUgYWRkcmVzcyByYW5nZSBzaXplIChvZnRlbiBDX0hJR0hBRERSIC0gQ19CQVNFQUREUiArIDEpLgorCisgICBUeXBpY2FsbHksIHRoZSBjb21wYXRpYmxlIGxpc3Qgd2lsbCBpbmNsdWRlIHRoZSBleGFjdCBJUCBjb3JlIHZlcnNpb24KKyAgIGZvbGxvd2VkIGJ5IGFuIG9sZGVyIElQIGNvcmUgdmVyc2lvbiB3aGljaCBpbXBsZW1lbnRzIHRoZSBzYW1lCisgICBpbnRlcmZhY2Ugb3IgYW55IG90aGVyIGRldmljZSB3aXRoIHRoZSBzYW1lIGludGVyZmFjZS4KKworICAgJ3JlZycsICdpbnRlcnJ1cHQtcGFyZW50JyBhbmQgJ2ludGVycnVwdHMnIGFyZSBhbGwgb3B0aW9uYWwgcHJvcGVydGllcy4KKworICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgYmxvY2sgZnJvbSBzeXN0ZW0ubWhzOgorCisJQkVHSU4gb3BiX3VhcnRsaXRlCisJCVBBUkFNRVRFUiBJTlNUQU5DRSA9IG9wYl91YXJ0bGl0ZV8wCisJCVBBUkFNRVRFUiBIV19WRVIgPSAxLjAwLmIKKwkJUEFSQU1FVEVSIENfQkFVRFJBVEUgPSAxMTUyMDAKKwkJUEFSQU1FVEVSIENfREFUQV9CSVRTID0gOAorCQlQQVJBTUVURVIgQ19PRERfUEFSSVRZID0gMAorCQlQQVJBTUVURVIgQ19VU0VfUEFSSVRZID0gMAorCQlQQVJBTUVURVIgQ19DTEtfRlJFUSA9IDUwMDAwMDAwCisJCVBBUkFNRVRFUiBDX0JBU0VBRERSID0gMHhFQzEwMDAwMAorCQlQQVJBTUVURVIgQ19ISUdIQUREUiA9IDB4RUMxMEZGRkYKKwkJQlVTX0lOVEVSRkFDRSBTT1BCID0gb3BiXzcKKwkJUE9SVCBPUEJfQ2xrID0gQ0xLXzUwTUh6CisJCVBPUlQgSW50ZXJydXB0ID0gb3BiX3VhcnRsaXRlXzBfSW50ZXJydXB0CisJCVBPUlQgUlggPSBvcGJfdWFydGxpdGVfMF9SWAorCQlQT1JUIFRYID0gb3BiX3VhcnRsaXRlXzBfVFgKKwkJUE9SVCBPUEJfUnN0ID0gc3lzX2J1c19yZXNldF8wCisJRU5ECisKKyAgIGJlY29tZXMgdGhlIGZvbGxvd2luZyBkZXZpY2UgdHJlZSBub2RlOgorCisJb3BiX3VhcnRsaXRlXzA6IHNlcmlhbEBlYzEwMDAwMCB7CisJCWRldmljZV90eXBlID0gInNlcmlhbCI7CisJCWNvbXBhdGlibGUgPSAieGxueCxvcGItdWFydGxpdGUtMS4wMC5iIjsKKwkJcmVnID0gPGVjMTAwMDAwIDEwMDAwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmb3BiX2ludGNfMD47CisJCWludGVycnVwdHMgPSA8MSAwPjsgLy8gZ290IHRoaXMgZnJvbSB0aGUgb3BiX2ludGMgcGFyYW1ldGVycworCQljdXJyZW50LXNwZWVkID0gPGQjMTE1MjAwPjsJLy8gc3RhbmRhcmQgc2VyaWFsIGRldmljZSBwcm9wCisJCWNsb2NrLWZyZXF1ZW5jeSA9IDxkIzUwMDAwMDAwPjsJLy8gc3RhbmRhcmQgc2VyaWFsIGRldmljZSBwcm9wCisJCXhsbngsZGF0YS1iaXRzID0gPDg+OworCQl4bG54LG9kZC1wYXJpdHkgPSA8MD47CisJCXhsbngsdXNlLXBhcml0eSA9IDwwPjsKKwl9OworCisgICBTb21lIElQIGNvcmVzIGFjdHVhbGx5IGltcGxlbWVudCAyIG9yIG1vcmUgbG9naWNhbCBkZXZpY2VzLiAgSW4KKyAgIHRoaXMgY2FzZSwgdGhlIGRldmljZSBzaG91bGQgc3RpbGwgZGVzY3JpYmUgdGhlIHdob2xlIElQIGNvcmUgd2l0aAorICAgYSBzaW5nbGUgbm9kZSBhbmQgYWRkIGEgY2hpbGQgbm9kZSBmb3IgZWFjaCBsb2dpY2FsIGRldmljZS4gIFRoZQorICAgcmFuZ2VzIHByb3BlcnR5IGNhbiBiZSB1c2VkIHRvIHRyYW5zbGF0ZSBmcm9tIHBhcmVudCBJUC1jb3JlIHRvIHRoZQorICAgcmVnaXN0ZXJzIG9mIGVhY2ggZGV2aWNlLiAgSW4gYWRkaXRpb24sIHRoZSBwYXJlbnQgbm9kZSBzaG91bGQgYmUKKyAgIGNvbXBhdGlibGUgd2l0aCB0aGUgYnVzIHR5cGUgJ3hsbngsY29tcG91bmQnLCBhbmQgc2hvdWxkIGNvbnRhaW4KKyAgICNhZGRyZXNzLWNlbGxzIGFuZCAjc2l6ZS1jZWxscywgYXMgd2l0aCBhbnkgb3RoZXIgYnVzLiAgKE5vdGU6IHRoaXMKKyAgIG1ha2VzIHRoZSBhc3N1bXB0aW9uIHRoYXQgYm90aCBsb2dpY2FsIGRldmljZXMgaGF2ZSB0aGUgc2FtZSBidXMKKyAgIGJpbmRpbmcuICBJZiB0aGlzIGlzIG5vdCB0cnVlLCB0aGVuIHNlcGFyYXRlIG5vZGVzIHNob3VsZCBiZSB1c2VkCisgICBmb3IgZWFjaCBsb2dpY2FsIGRldmljZSkuICBUaGUgJ2NlbGwtaW5kZXgnIHByb3BlcnR5IGNhbiBiZSB1c2VkIHRvCisgICBlbnVtZXJhdGUgbG9naWNhbCBkZXZpY2VzIHdpdGhpbiBhbiBJUCBjb3JlLiAgRm9yIGV4YW1wbGUsIHRoZQorICAgZm9sbG93aW5nIGlzIHRoZSBzeXN0ZW0ubWhzIGVudHJ5IGZvciB0aGUgZHVhbCBwczIgY29udHJvbGxlciBmb3VuZAorICAgb24gdGhlIG1sNDAzIHJlZmVyZW5jZSBkZXNpZ24uCisKKwlCRUdJTiBvcGJfcHMyX2R1YWxfcmVmCisJCVBBUkFNRVRFUiBJTlNUQU5DRSA9IG9wYl9wczJfZHVhbF9yZWZfMAorCQlQQVJBTUVURVIgSFdfVkVSID0gMS4wMC5hCisJCVBBUkFNRVRFUiBDX0JBU0VBRERSID0gMHhBOTAwMDAwMAorCQlQQVJBTUVURVIgQ19ISUdIQUREUiA9IDB4QTkwMDFGRkYKKwkJQlVTX0lOVEVSRkFDRSBTT1BCID0gb3BiX3YyMF8wCisJCVBPUlQgU3lzX0ludHIxID0gcHMyXzFfaW50cgorCQlQT1JUIFN5c19JbnRyMiA9IHBzMl8yX2ludHIKKwkJUE9SVCBDbGtpbjEgPSBwczJfY2xrX3J4XzEKKwkJUE9SVCBDbGtpbjIgPSBwczJfY2xrX3J4XzIKKwkJUE9SVCBDbGtwZDEgPSBwczJfY2xrX3R4XzEKKwkJUE9SVCBDbGtwZDIgPSBwczJfY2xrX3R4XzIKKwkJUE9SVCBSeDEgPSBwczJfZF9yeF8xCisJCVBPUlQgUngyID0gcHMyX2RfcnhfMgorCQlQT1JUIFR4cGQxID0gcHMyX2RfdHhfMQorCQlQT1JUIFR4cGQyID0gcHMyX2RfdHhfMgorCUVORAorCisgICBJdCB3b3VsZCByZXN1bHQgaW4gdGhlIGZvbGxvd2luZyBkZXZpY2UgdHJlZSBub2RlczoKKworCW9wYl9wczJfZHVhbF9yZWZfMDogb3BiLXBzMi1kdWFsLXJlZkBhOTAwMDAwMCB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJY29tcGF0aWJsZSA9ICJ4bG54LGNvbXBvdW5kIjsKKwkJcmFuZ2VzID0gPDAgYTkwMDAwMDAgMjAwMD47CisJCS8vIElmIHRoaXMgZGV2aWNlIGhhZCBleHRyYSBwYXJhbWV0ZXJzLCB0aGVuIHRoZXkgd291bGQKKwkJLy8gZ28gaGVyZS4KKwkJcHMyQDAgeworCQkJY29tcGF0aWJsZSA9ICJ4bG54LG9wYi1wczItZHVhbC1yZWYtMS4wMC5hIjsKKwkJCXJlZyA9IDwwIDQwPjsKKwkJCWludGVycnVwdC1wYXJlbnQgPSA8Jm9wYl9pbnRjXzA+OworCQkJaW50ZXJydXB0cyA9IDwzIDA+OworCQkJY2VsbC1pbmRleCA9IDwwPjsKKwkJfTsKKwkJcHMyQDEwMDAgeworCQkJY29tcGF0aWJsZSA9ICJ4bG54LG9wYi1wczItZHVhbC1yZWYtMS4wMC5hIjsKKwkJCXJlZyA9IDwxMDAwIDQwPjsKKwkJCWludGVycnVwdC1wYXJlbnQgPSA8Jm9wYl9pbnRjXzA+OworCQkJaW50ZXJydXB0cyA9IDwzIDA+OworCQkJY2VsbC1pbmRleCA9IDwwPjsKKwkJfTsKKwl9OworCisgICBBbHNvLCB0aGUgc3lzdGVtLm1ocyBmaWxlIGRlZmluZXMgYnVzIGF0dGFjaG1lbnRzIGZyb20gdGhlIHByb2Nlc3NvcgorICAgdG8gdGhlIGRldmljZXMuICBUaGUgZGV2aWNlIHRyZWUgc3RydWN0dXJlIHNob3VsZCByZWZsZWN0IHRoZSBidXMKKyAgIGF0dGFjaG1lbnRzLiAgQWdhaW4gYW4gZXhhbXBsZTsgdGhpcyBzeXN0ZW0ubWhzIGZyYWdtZW50OgorCisJQkVHSU4gcHBjNDA1X3ZpcnRleDQKKwkJUEFSQU1FVEVSIElOU1RBTkNFID0gcHBjNDA1XzAKKwkJUEFSQU1FVEVSIEhXX1ZFUiA9IDEuMDEuYQorCQlCVVNfSU5URVJGQUNFIERQTEIgPSBwbGJfdjM0XzAKKwkJQlVTX0lOVEVSRkFDRSBJUExCID0gcGxiX3YzNF8wCisJRU5ECisKKwlCRUdJTiBvcGJfaW50YworCQlQQVJBTUVURVIgSU5TVEFOQ0UgPSBvcGJfaW50Y18wCisJCVBBUkFNRVRFUiBIV19WRVIgPSAxLjAwLmMKKwkJUEFSQU1FVEVSIENfQkFTRUFERFIgPSAweEQxMDAwRkMwCisJCVBBUkFNRVRFUiBDX0hJR0hBRERSID0gMHhEMTAwMEZERgorCQlCVVNfSU5URVJGQUNFIFNPUEIgPSBvcGJfdjIwXzAKKwlFTkQKKworCUJFR0lOIG9wYl91YXJ0MTY1NTAKKwkJUEFSQU1FVEVSIElOU1RBTkNFID0gb3BiX3VhcnQxNjU1MF8wCisJCVBBUkFNRVRFUiBIV19WRVIgPSAxLjAwLmQKKwkJUEFSQU1FVEVSIENfQkFTRUFERFIgPSAweGEwMDAwMDAwCisJCVBBUkFNRVRFUiBDX0hJR0hBRERSID0gMHhhMDAwMUZGRgorCQlCVVNfSU5URVJGQUNFIFNPUEIgPSBvcGJfdjIwXzAKKwlFTkQKKworCUJFR0lOIHBsYl92MzQKKwkJUEFSQU1FVEVSIElOU1RBTkNFID0gcGxiX3YzNF8wCisJCVBBUkFNRVRFUiBIV19WRVIgPSAxLjAyLmEKKwlFTkQKKworCUJFR0lOIHBsYl9icmFtX2lmX2NudGxyCisJCVBBUkFNRVRFUiBJTlNUQU5DRSA9IHBsYl9icmFtX2lmX2NudGxyXzAKKwkJUEFSQU1FVEVSIEhXX1ZFUiA9IDEuMDAuYgorCQlQQVJBTUVURVIgQ19CQVNFQUREUiA9IDB4RkZGRjAwMDAKKwkJUEFSQU1FVEVSIENfSElHSEFERFIgPSAweEZGRkZGRkZGCisJCUJVU19JTlRFUkZBQ0UgU1BMQiA9IHBsYl92MzRfMAorCUVORAorCisJQkVHSU4gcGxiMm9wYl9icmlkZ2UKKwkJUEFSQU1FVEVSIElOU1RBTkNFID0gcGxiMm9wYl9icmlkZ2VfMAorCQlQQVJBTUVURVIgSFdfVkVSID0gMS4wMS5hCisJCVBBUkFNRVRFUiBDX1JORzBfQkFTRUFERFIgPSAweDIwMDAwMDAwCisJCVBBUkFNRVRFUiBDX1JORzBfSElHSEFERFIgPSAweDNGRkZGRkZGCisJCVBBUkFNRVRFUiBDX1JORzFfQkFTRUFERFIgPSAweDYwMDAwMDAwCisJCVBBUkFNRVRFUiBDX1JORzFfSElHSEFERFIgPSAweDdGRkZGRkZGCisJCVBBUkFNRVRFUiBDX1JORzJfQkFTRUFERFIgPSAweDgwMDAwMDAwCisJCVBBUkFNRVRFUiBDX1JORzJfSElHSEFERFIgPSAweEJGRkZGRkZGCisJCVBBUkFNRVRFUiBDX1JORzNfQkFTRUFERFIgPSAweEMwMDAwMDAwCisJCVBBUkFNRVRFUiBDX1JORzNfSElHSEFERFIgPSAweERGRkZGRkZGCisJCUJVU19JTlRFUkZBQ0UgU1BMQiA9IHBsYl92MzRfMAorCQlCVVNfSU5URVJGQUNFIE1PUEIgPSBvcGJfdjIwXzAKKwlFTkQKKworICAgR2l2ZXMgdGhpcyBkZXZpY2UgdHJlZSAoc29tZSBwcm9wZXJ0aWVzIHJlbW92ZWQgZm9yIGNsYXJpdHkpOgorCisJcGxiQDAgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3NpemUtY2VsbHMgPSA8MT47CisJCWNvbXBhdGlibGUgPSAieGxueCxwbGItdjM0LTEuMDIuYSI7CisJCWRldmljZV90eXBlID0gImlibSxwbGIiOworCQlyYW5nZXM7IC8vIDE6MSB0cmFuc2xhdGlvbgorCisJCXBsYl9icmFtX2lmX2NudHJsXzA6IGJyYW1AZmZmZjAwMDAgeworCQkJcmVnID0gPGZmZmYwMDAwIDEwMDAwPjsKKwkJfQorCisJCW9wYkAyMDAwMDAwMCB7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDE+OworCQkJcmFuZ2VzID0gPDIwMDAwMDAwIDIwMDAwMDAwIDIwMDAwMDAwCisJCQkJICA2MDAwMDAwMCA2MDAwMDAwMCAyMDAwMDAwMAorCQkJCSAgODAwMDAwMDAgODAwMDAwMDAgNDAwMDAwMDAKKwkJCQkgIGMwMDAwMDAwIGMwMDAwMDAwIDIwMDAwMDAwPjsKKworCQkJb3BiX3VhcnQxNjU1MF8wOiBzZXJpYWxAYTAwMDAwMDAgeworCQkJCXJlZyA9IDxhMDAwMDAwMDAgMjAwMD47CisJCQl9OworCisJCQlvcGJfaW50Y18wOiBpbnRlcnJ1cHQtY29udHJvbGxlckBkMTAwMGZjMCB7CisJCQkJcmVnID0gPGQxMDAwZmMwIDIwPjsKKwkJCX07CisJCX07CisJfTsKKworICAgVGhhdCBjb3ZlcnMgdGhlIGdlbmVyYWwgYXBwcm9hY2ggdG8gYmluZGluZyB4aWxpbnggSVAgY29yZXMgaW50byB0aGUKKyAgIGRldmljZSB0cmVlLiAgVGhlIGZvbGxvd2luZyBhcmUgYmluZGluZ3MgZm9yIHNwZWNpZmljIGRldmljZXM6CisKKyAgICAgIGkpIFhpbGlueCBNTDMwMCBGcmFtZWJ1ZmZlcgorCisgICAgICBTaW1wbGUgZnJhbWVidWZmZXIgZGV2aWNlIGZyb20gdGhlIE1MMzAwIHJlZmVyZW5jZSBkZXNpZ24gKGFsc28gb24gdGhlCisgICAgICBNTDQwMyByZWZlcmVuY2UgZGVzaWduIGFzIHdlbGwgYXMgb3RoZXJzKS4KKworICAgICAgT3B0aW9uYWwgcHJvcGVydGllczoKKyAgICAgICAtIHJlc29sdXRpb24gPSA8eHJlcyB5cmVzPiA6IHBpeGVsIHJlc29sdXRpb24gb2YgZnJhbWVidWZmZXIuICBTb21lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbnMgdXNlIGEgZGlmZmVyZW50IHJlc29sdXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IGlzIDxkIzY0MCBkIzQ4MD4KKyAgICAgICAtIHZpcnQtcmVzb2x1dGlvbiA9IDx4dmlydCB5dmlydD4gOiBTaXplIG9mIGZyYW1lYnVmZmVyIGluIG1lbW9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IGlzIDxkIzEwMjQgZCM0ODA+LgorICAgICAgIC0gcm90YXRlLWRpc3BsYXkgKGVtcHR5KSA6IHJvdGF0ZSBkaXNwbGF5IDE4MCBkZWdyZWVzLgorCisgICAgICBpaSkgWGlsaW54IFN5c3RlbUFDRQorCisgICAgICBUaGUgWGlsaW54IFN5c3RlbUFDRSBkZXZpY2UgaXMgdXNlZCB0byBwcm9ncmFtIEZQR0FzIGZyb20gYW4gRlBHQQorICAgICAgYml0c3RyZWFtIHN0b3JlZCBvbiBhIENGIGNhcmQuICBJdCBjYW4gYWxzbyBiZSB1c2VkIGFzIGEgZ2VuZXJpYyBDRgorICAgICAgaW50ZXJmYWNlIGRldmljZS4KKworICAgICAgT3B0aW9uYWwgcHJvcGVydGllczoKKyAgICAgICAtIDgtYml0IChlbXB0eSkgOiBTZXQgdGhpcyBwcm9wZXJ0eSBmb3IgU3lzdGVtQUNFIGluIDggYml0IG1vZGUKKworICAgICAgaWlpKSBYaWxpbnggRU1BQyBhbmQgWGlsaW54IFRFTUFDCisKKyAgICAgIFhpbGlueCBFdGhlcm5ldCBkZXZpY2VzLiAgSW4gYWRkaXRpb24gdG8gZ2VuZXJhbCB4aWxpbnggcHJvcGVydGllcworICAgICAgbGlzdGVkIGFib3ZlLCBub2RlcyBmb3IgdGhlc2UgZGV2aWNlcyBzaG91bGQgaW5jbHVkZSBhIHBoeS1oYW5kbGUKKyAgICAgIHByb3BlcnR5LCBhbmQgbWF5IGluY2x1ZGUgb3RoZXIgY29tbW9uIG5ldHdvcmsgZGV2aWNlIHByb3BlcnRpZXMKKyAgICAgIGxpa2UgbG9jYWwtbWFjLWFkZHJlc3MuCisKKyAgICAgIGl2KSBYaWxpbnggVWFydGxpdGUKKworICAgICAgWGlsaW54IHVhcnRsaXRlIGRldmljZXMgYXJlIHNpbXBsZSBmaXhlZCBzcGVlZCBzZXJpYWwgcG9ydHMuCisKKyAgICAgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisgICAgICAgLSBjdXJyZW50LXNwZWVkIDogQmF1ZCByYXRlIG9mIHVhcnRsaXRlCisKKyAgICAgIHYpIFhpbGlueCBod2ljYXAKKworCQlYaWxpbnggaHdpY2FwIGRldmljZXMgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlIGNvbmZpZ3VyYXRpb24gbG9naWMKKwkJb2YgdGhlIEZQR0EgdGhyb3VnaCB0aGUgSW50ZXJuYWwgQ29uZmlndXJhdGlvbiBBY2Nlc3MgUG9ydAorCQkoSUNBUCkuICBUaGUgSUNBUCBlbmFibGVzIHBhcnRpYWwgcmVjb25maWd1cmF0aW9uIG9mIHRoZSBGUEdBLAorCQlyZWFkYmFjayBvZiB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiwgYW5kIHNvbWUgY29udHJvbCBvdmVyCisJCSd3YXJtIGJvb3RzJyBvZiB0aGUgRlBHQSBmYWJyaWMuCisKKwkJUmVxdWlyZWQgcHJvcGVydGllczoKKwkJLSB4bG54LGZhbWlseSA6IFRoZSBmYW1pbHkgb2YgdGhlIEZQR0EsIG5lY2Vzc2FyeSBzaW5jZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXMgb2YgdGhlIHVuZGVybHlpbmcgSUNBUCBoYXJkd2FyZQorICAgICAgICAgICAgICAgICAgICAgIGRpZmZlciBiZXR3ZWVuIGRpZmZlcmVudCBmYW1pbGllcy4gIE1heSBiZQorICAgICAgICAgICAgICAgICAgICAgICd2aXJ0ZXgycCcsICd2aXJ0ZXg0Jywgb3IgJ3ZpcnRleDUnLgorCisgICAgICB2aSkgWGlsaW54IFVhcnQgMTY1NTAKKworICAgICAgWGlsaW54IFVBUlQgMTY1NTAgZGV2aWNlcyBhcmUgdmVyeSBzaW1pbGFyIHRvIHRoZSBOUzE2NTUwIGJ1dCB3aXRoCisgICAgICBkaWZmZXJlbnQgcmVnaXN0ZXIgc3BhY2luZyBhbmQgYW4gb2Zmc2V0IGZyb20gdGhlIGJhc2UgYWRkcmVzcy4KKworICAgICAgUmVxdWlyZWQgcHJvcGVydGllczoKKyAgICAgICAtIGNsb2NrLWZyZXF1ZW5jeSA6IEZyZXF1ZW5jeSBvZiB0aGUgY2xvY2sgaW5wdXQKKyAgICAgICAtIHJlZy1vZmZzZXQgOiBBIHZhbHVlIG9mIDMgaXMgcmVxdWlyZWQKKyAgICAgICAtIHJlZy1zaGlmdCA6IEEgdmFsdWUgb2YgMiBpcyByZXF1aXJlZAorCisgICAgICB2aWkpIFhpbGlueCBVU0IgSG9zdCBjb250cm9sbGVyCisKKyAgICAgIFRoZSBYaWxpbnggVVNCIGhvc3QgY29udHJvbGxlciBpcyBFSENJIGNvbXBhdGlibGUgYnV0IHdpdGggYSBkaWZmZXJlbnQKKyAgICAgIGJhc2UgYWRkcmVzcyBmb3IgdGhlIEVIQ0kgcmVnaXN0ZXJzLCBhbmQgaXQgaXMgYWx3YXlzIGEgYmlnLWVuZGlhbgorICAgICAgVVNCIEhvc3QgY29udHJvbGxlci4gVGhlIGhhcmR3YXJlIGNhbiBiZSBjb25maWd1cmVkIGFzIGhpZ2ggc3BlZWQgb25seSwKKyAgICAgIG9yIGhpZ2ggc3BlZWQvZnVsbCBzcGVlZCBoeWJyaWQuCisKKyAgICAgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisgICAgICAtIHhsbngsc3VwcG9ydC11c2ItZnM6IEEgdmFsdWUgMCBtZWFucyB0aGUgY29yZSBpcyBidWlsdCBhcyBoaWdoIHNwZWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkuIEEgdmFsdWUgMSBtZWFucyB0aGUgY29yZSBhbHNvIHN1cHBvcnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwgc3BlZWQgZGV2aWNlcy4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3hpbGx5YnVzL3hpbGx5YnVzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy94aWxseWJ1cy94aWxseWJ1cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWUzMTZkYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy94aWxseWJ1cy94aWxseWJ1cy50eHQKQEAgLTAsMCArMSwyMCBAQAorKiBYaWxseWJ1cyBkcml2ZXIgZm9yIGdlbmVyaWMgRlBHQSBpbnRlcmZhY2UKKworUmVxdWlyZWQgcHJvcGVydGllczoKKy0gY29tcGF0aWJsZTogU2hvdWxkIGJlICJ4aWxseWJ1cyx4aWxseWJ1cy0xLjAwLmEiCistIHJlZzogQWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlciBzZXQgZm9yIHRoZSBkZXZpY2UKKy0gaW50ZXJydXB0czogQ29udGFpbnMgb25lIGludGVycnVwdCBub2RlLCB0eXBpY2FsbHkgY29uc2lzdGluZyBvZiB0aHJlZSBjZWxscy4KKy0gaW50ZXJydXB0LXBhcmVudDogdGhlIHBoYW5kbGUgZm9yIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciB0aGF0CisgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VzIGludGVycnVwdHMgZm9yIHRoaXMgZGV2aWNlLgorCitPcHRpb25hbCBwcm9wZXJ0aWVzOgorLSBkbWEtY29oZXJlbnQ6IFByZXNlbnQgaWYgRE1BIG9wZXJhdGlvbnMgYXJlIGNvaGVyZW50CisKK0V4YW1wbGU6CisKKwl4aWxseWJ1c0BmZjIwMDQwMCB7CisJCWNvbXBhdGlibGUgPSAieGlsbHlidXMseGlsbHlidXMtMS4wMC5hIjsKKwkJcmVnID0gPCAweGZmMjAwNDAwIDB4MDAwMDAwODAgPjsKKwkJaW50ZXJydXB0cyA9IDwgMCA0MCAxID47CisJCWludGVycnVwdC1wYXJlbnQgPSA8JmludGM+OworCX0gOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jvb3Rpbmctd2l0aG91dC1vZi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYm9vdGluZy13aXRob3V0LW9mLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGQzNGY2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jvb3Rpbmctd2l0aG91dC1vZi50eHQKQEAgLTAsMCArMSwxNTMzIEBACisgICAgICAgICAgIEJvb3RpbmcgdGhlIExpbnV4L3BwYyBrZXJuZWwgd2l0aG91dCBPcGVuIEZpcm13YXJlCisgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyhjKSAyMDA1IEJlbmphbWluIEhlcnJlbnNjaG1pZHQgPGJlbmggYXQga2VybmVsLmNyYXNoaW5nLm9yZz4sCisgICAgSUJNIENvcnAuCisoYykgMjAwNSBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2UgYXQgZnJlZXNjYWxlLmNvbT4sCisgICAgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEZTTCBTT0MgYW5kIDMyLWJpdCBhZGRpdGlvbnMKKyhjKSAyMDA2IE1vbnRhVmlzdGEgU29mdHdhcmUsIEluYy4KKyAgICBGbGFzaCBjaGlwIG5vZGUgZGVmaW5pdGlvbgorCitUYWJsZSBvZiBDb250ZW50cworPT09PT09PT09PT09PT09PT0KKworICBJIC0gSW50cm9kdWN0aW9uCisgICAgMSkgRW50cnkgcG9pbnQgZm9yIGFyY2gvYXJtCisgICAgMikgRW50cnkgcG9pbnQgZm9yIGFyY2gvcG93ZXJwYworICAgIDMpIEVudHJ5IHBvaW50IGZvciBhcmNoL3g4NgorICAgIDQpIEVudHJ5IHBvaW50IGZvciBhcmNoL21pcHMvYm1pcHMKKworICBJSSAtIFRoZSBEVCBibG9jayBmb3JtYXQKKyAgICAxKSBIZWFkZXIKKyAgICAyKSBEZXZpY2UgdHJlZSBnZW5lcmFsaXRpZXMKKyAgICAzKSBEZXZpY2UgdHJlZSAic3RydWN0dXJlIiBibG9jaworICAgIDQpIERldmljZSB0cmVlICJzdHJpbmdzIiBibG9jaworCisgIElJSSAtIFJlcXVpcmVkIGNvbnRlbnQgb2YgdGhlIGRldmljZSB0cmVlCisgICAgMSkgTm90ZSBhYm91dCBjZWxscyBhbmQgYWRkcmVzcyByZXByZXNlbnRhdGlvbgorICAgIDIpIE5vdGUgYWJvdXQgImNvbXBhdGlibGUiIHByb3BlcnRpZXMKKyAgICAzKSBOb3RlIGFib3V0ICJuYW1lIiBwcm9wZXJ0aWVzCisgICAgNCkgTm90ZSBhYm91dCBub2RlIGFuZCBwcm9wZXJ0eSBuYW1lcyBhbmQgY2hhcmFjdGVyIHNldAorICAgIDUpIFJlcXVpcmVkIG5vZGVzIGFuZCBwcm9wZXJ0aWVzCisgICAgICBhKSBUaGUgcm9vdCBub2RlCisgICAgICBiKSBUaGUgL2NwdXMgbm9kZQorICAgICAgYykgVGhlIC9jcHVzLyogbm9kZXMKKyAgICAgIGQpIHRoZSAvbWVtb3J5IG5vZGUocykKKyAgICAgIGUpIFRoZSAvY2hvc2VuIG5vZGUKKyAgICAgIGYpIHRoZSAvc29jPFNPQ25hbWU+IG5vZGUKKworICBJViAtICJkdGMiLCB0aGUgZGV2aWNlIHRyZWUgY29tcGlsZXIKKworICBWIC0gUmVjb21tZW5kYXRpb25zIGZvciBhIGJvb3Rsb2FkZXIKKworICBWSSAtIFN5c3RlbS1vbi1hLWNoaXAgZGV2aWNlcyBhbmQgbm9kZXMKKyAgICAxKSBEZWZpbmluZyBjaGlsZCBub2RlcyBvZiBhbiBTT0MKKyAgICAyKSBSZXByZXNlbnRpbmcgZGV2aWNlcyB3aXRob3V0IGEgY3VycmVudCBPRiBzcGVjaWZpY2F0aW9uCisKKyAgVklJIC0gU3BlY2lmeWluZyBpbnRlcnJ1cHQgaW5mb3JtYXRpb24gZm9yIGRldmljZXMKKyAgICAxKSBpbnRlcnJ1cHRzIHByb3BlcnR5CisgICAgMikgaW50ZXJydXB0LXBhcmVudCBwcm9wZXJ0eQorICAgIDMpIE9wZW5QSUMgSW50ZXJydXB0IENvbnRyb2xsZXJzCisgICAgNCkgSVNBIEludGVycnVwdCBDb250cm9sbGVycworCisgIFZJSUkgLSBTcGVjaWZ5aW5nIGRldmljZSBwb3dlciBtYW5hZ2VtZW50IGluZm9ybWF0aW9uIChzbGVlcCBwcm9wZXJ0eSkKKworICBJWCAtIFNwZWNpZnlpbmcgZG1hIGJ1cyBpbmZvcm1hdGlvbgorCisgIEFwcGVuZGl4IEEgLSBTYW1wbGUgU09DIG5vZGUgZm9yIE1QQzg1NDAKKworCitSZXZpc2lvbiBJbmZvcm1hdGlvbgorPT09PT09PT09PT09PT09PT09PT0KKworICAgTWF5IDE4LCAyMDA1OiBSZXYgMC4xIC0gSW5pdGlhbCBkcmFmdCwgbm8gY2hhcHRlciBJSUkgeWV0LgorCisgICBNYXkgMTksIDIwMDU6IFJldiAwLjIgLSBBZGQgY2hhcHRlciBJSUkgYW5kIGJpdHMgJiBwaWVjZXMgaGVyZSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhcmlmaWVzIHRoZSBmYWN0IHRoYXQgYSBsb3Qgb2YgdGhpbmdzIGFyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwsIHRoZSBrZXJuZWwgb25seSByZXF1aXJlcyBhIHZlcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsIGRldmljZSB0cmVlLCB0aG91Z2ggaXQgaXMgZW5jb3VyYWdlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gcHJvdmlkZSBhbiBhcyBjb21wbGV0ZSBvbmUgYXMgcG9zc2libGUuCisKKyAgIE1heSAyNCwgMjAwNTogUmV2IDAuMyAtIFByZWNpc2UgdGhhdCBEVCBibG9jayBoYXMgdG8gYmUgaW4gUkFNCisJCQkgLSBNaXNjIGZpeGVzCisJCQkgLSBEZWZpbmUgdmVyc2lvbiAzIGFuZCBuZXcgZm9ybWF0IHZlcnNpb24gMTYKKwkJCSAgIGZvciB0aGUgRFQgYmxvY2sgKHZlcnNpb24gMTYgbmVlZHMga2VybmVsCisJCQkgICBwYXRjaGVzLCB3aWxsIGJlIGZ3ZCBzZXBhcmF0ZWx5KS4KKwkJCSAgIFN0cmluZyBibG9jayBub3cgaGFzIGEgc2l6ZSwgYW5kIGZ1bGwgcGF0aAorCQkJICAgaXMgcmVwbGFjZWQgYnkgdW5pdCBuYW1lIGZvciBtb3JlCisJCQkgICBjb21wYWN0bmVzcy4KKwkJCSAgIGxpbnV4LHBoYW5kbGUgaXMgbWFkZSBvcHRpb25hbCwgb25seSBub2RlcworCQkJICAgdGhhdCBhcmUgcmVmZXJlbmNlZCBieSBvdGhlciBub2RlcyBuZWVkIGl0LgorCQkJICAgIm5hbWUiIHByb3BlcnR5IGlzIG5vdyBhdXRvbWF0aWNhbGx5CisJCQkgICBkZWR1Y2VkIGZyb20gdGhlIHVuaXQgbmFtZQorCisgICBKdW5lIDEsIDIwMDU6IFJldiAwLjQgLSBDb3JyZWN0IGNvbmZ1c2lvbiBiZXR3ZWVuIE9GX0RUX0VORCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE9GX0RUX0VORF9OT0RFIGluIHN0cnVjdHVyZSBkZWZpbml0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgIC0gQ2hhbmdlIHZlcnNpb24gMTYgZm9ybWF0IHRvIGFsd2F5cyBhbGlnbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHkgZGF0YSB0byA0IGJ5dGVzLiBTaW5jZSB0b2tlbnMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IGFsaWduZWQsIHRoYXQgbWVhbnMgbm8gc3BlY2lmaWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkIGFsaWdubWVudCBiZXR3ZWVuIHByb3BlcnR5IHNpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBwcm9wZXJ0eSBkYXRhLiBUaGUgb2xkIHN0eWxlIHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbm1lbnQgd291bGQgbWFrZSBpdCBpbXBvc3NpYmxlIHRvIGRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAic2ltcGxlIiBpbnNlcnRpb24gb2YgcHJvcGVydGllcyB1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtbW92ZSAodGhhbmtzIE1pbHRvbiBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGljaW5nKS4gVXBkYXRlZCBrZXJuZWwgcGF0Y2ggYXMgd2VsbAorCQkJIC0gQ29ycmVjdCBhIGZldyBtb3JlIGFsaWdubWVudCBjb25zdHJhaW50cworCQkJIC0gQWRkIGEgY2hhcHRlciBhYm91dCB0aGUgZGV2aWNlLXRyZWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVyIGFuZCB0aGUgdGV4dHVyYWwgcmVwcmVzZW50YXRpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0cmVlIHRoYXQgY2FuIGJlICJjb21waWxlZCIgYnkgZHRjLgorCisgICBOb3ZlbWJlciAyMSwgMjAwNTogUmV2IDAuNQorCQkJIC0gQWRkaXRpb25zL2dlbmVyYWxpemF0aW9ucyBmb3IgMzItYml0CisJCQkgLSBDaGFuZ2VkIHRvIHJlZmxlY3QgdGhlIG5ldyBhcmNoL3Bvd2VycGMKKwkJCSAgIHN0cnVjdHVyZQorCQkJIC0gQWRkZWQgY2hhcHRlciBWSQorCisKKyBUb0RvOgorCS0gQWRkIHNvbWUgZGVmaW5pdGlvbnMgb2YgaW50ZXJydXB0IHRyZWUgKHNpbXBsZS9jb21wbGV4KQorCS0gQWRkIHNvbWUgZGVmaW5pdGlvbnMgZm9yIFBDSSBob3N0IGJyaWRnZXMKKwktIEFkZCBzb21lIGNvbW1vbiBhZGRyZXNzIGZvcm1hdCBleGFtcGxlcworCS0gQWRkIGRlZmluaXRpb25zIGZvciBzdGFuZGFyZCBwcm9wZXJ0aWVzIGFuZCAiY29tcGF0aWJsZSIKKwkgIG5hbWVzIGZvciBjZWxscyB0aGF0IGFyZSBub3QgYWxyZWFkeSBkZWZpbmVkIGJ5IHRoZSBleGlzdGluZworCSAgT0Ygc3BlYy4KKwktIENvbXBhcmUgRlNMIFNPQyB1c2Ugb2YgUENJIHRvIHN0YW5kYXJkIGFuZCBtYWtlIHN1cmUgbm8gbmV3CisJICBub2RlIGRlZmluaXRpb24gcmVxdWlyZWQuCisJLSBBZGQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBub2RlIGRlZmluaXRpb25zIGZvciBTT0MgZGV2aWNlcworICAJICB0aGF0IGN1cnJlbnRseSBoYXZlIG5vIHN0YW5kYXJkLCBsaWtlIHRoZSBGU0wgQ1BNLgorCisKK0kgLSBJbnRyb2R1Y3Rpb24KKz09PT09PT09PT09PT09PT0KKworRHVyaW5nIHRoZSBkZXZlbG9wbWVudCBvZiB0aGUgTGludXgvcHBjNjQga2VybmVsLCBhbmQgbW9yZQorc3BlY2lmaWNhbGx5LCB0aGUgYWRkaXRpb24gb2YgbmV3IHBsYXRmb3JtIHR5cGVzIG91dHNpZGUgb2YgdGhlIG9sZAorSUJNIHBTZXJpZXMvaVNlcmllcyBwYWlyLCBpdCB3YXMgZGVjaWRlZCB0byBlbmZvcmNlIHNvbWUgc3RyaWN0IHJ1bGVzCityZWdhcmRpbmcgdGhlIGtlcm5lbCBlbnRyeSBhbmQgYm9vdGxvYWRlciA8LT4ga2VybmVsIGludGVyZmFjZXMsIGluCitvcmRlciB0byBhdm9pZCB0aGUgZGVnZW5lcmF0aW9uIHRoYXQgaGFkIGJlY29tZSB0aGUgcHBjMzIga2VybmVsIGVudHJ5Citwb2ludCBhbmQgdGhlIHdheSBhIG5ldyBwbGF0Zm9ybSBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGtlcm5lbC4gVGhlCitsZWdhY3kgaVNlcmllcyBwbGF0Zm9ybSBicmVha3MgdGhvc2UgcnVsZXMgYXMgaXQgcHJlZGF0ZXMgdGhpcyBzY2hlbWUsCitidXQgbm8gbmV3IGJvYXJkIHN1cHBvcnQgd2lsbCBiZSBhY2NlcHRlZCBpbiB0aGUgbWFpbiB0cmVlIHRoYXQKK2RvZXNuJ3QgZm9sbG93IHRoZW0gcHJvcGVybHkuICBJbiBhZGRpdGlvbiwgc2luY2UgdGhlIGFkdmVudCBvZiB0aGUKK2FyY2gvcG93ZXJwYyBtZXJnZWQgYXJjaGl0ZWN0dXJlIGZvciBwcGMzMiBhbmQgcHBjNjQsIG5ldyAzMi1iaXQKK3BsYXRmb3JtcyBhbmQgMzItYml0IHBsYXRmb3JtcyB3aGljaCBtb3ZlIGludG8gYXJjaC9wb3dlcnBjIHdpbGwgYmUKK3JlcXVpcmVkIHRvIHVzZSB0aGVzZSBydWxlcyBhcyB3ZWxsLgorCitUaGUgbWFpbiByZXF1aXJlbWVudCB0aGF0IHdpbGwgYmUgZGVmaW5lZCBpbiBtb3JlIGRldGFpbCBiZWxvdyBpcwordGhlIHByZXNlbmNlIG9mIGEgZGV2aWNlLXRyZWUgd2hvc2UgZm9ybWF0IGlzIGRlZmluZWQgYWZ0ZXIgT3BlbgorRmlybXdhcmUgc3BlY2lmaWNhdGlvbi4gSG93ZXZlciwgaW4gb3JkZXIgdG8gbWFrZSBsaWZlIGVhc2llcgordG8gZW1iZWRkZWQgYm9hcmQgdmVuZG9ycywgdGhlIGtlcm5lbCBkb2Vzbid0IHJlcXVpcmUgdGhlIGRldmljZS10cmVlCit0byByZXByZXNlbnQgZXZlcnkgZGV2aWNlIGluIHRoZSBzeXN0ZW0gYW5kIG9ubHkgcmVxdWlyZXMgc29tZSBub2RlcworYW5kIHByb3BlcnRpZXMgdG8gYmUgcHJlc2VudC4gVGhpcyB3aWxsIGJlIGRlc2NyaWJlZCBpbiBkZXRhaWwgaW4KK3NlY3Rpb24gSUlJLCBidXQsIGZvciBleGFtcGxlLCB0aGUga2VybmVsIGRvZXMgbm90IHJlcXVpcmUgeW91IHRvCitjcmVhdGUgYSBub2RlIGZvciBldmVyeSBQQ0kgZGV2aWNlIGluIHRoZSBzeXN0ZW0uIEl0IGlzIGEgcmVxdWlyZW1lbnQKK3RvIGhhdmUgYSBub2RlIGZvciBQQ0kgaG9zdCBicmlkZ2VzIGluIG9yZGVyIHRvIHByb3ZpZGUgaW50ZXJydXB0Cityb3V0aW5nIGluZm9ybWF0aW9uIGFuZCBtZW1vcnkvSU8gcmFuZ2VzLCBhbW9uZyBvdGhlcnMuIEl0IGlzIGFsc28KK3JlY29tbWVuZGVkIHRvIGRlZmluZSBub2RlcyBmb3Igb24gY2hpcCBkZXZpY2VzIGFuZCBvdGhlciBidXNlcyB0aGF0Citkb24ndCBzcGVjaWZpY2FsbHkgZml0IGluIGFuIGV4aXN0aW5nIE9GIHNwZWNpZmljYXRpb24uIFRoaXMgY3JlYXRlcyBhCitncmVhdCBmbGV4aWJpbGl0eSBpbiB0aGUgd2F5IHRoZSBrZXJuZWwgY2FuIHRoZW4gcHJvYmUgdGhvc2UgYW5kIG1hdGNoCitkcml2ZXJzIHRvIGRldmljZSwgd2l0aG91dCBoYXZpbmcgdG8gaGFyZCBjb2RlIGFsbCBzb3J0cyBvZiB0YWJsZXMuIEl0CithbHNvIG1ha2VzIGl0IG1vcmUgZmxleGlibGUgZm9yIGJvYXJkIHZlbmRvcnMgdG8gZG8gbWlub3IgaGFyZHdhcmUKK3VwZ3JhZGVzIHdpdGhvdXQgc2lnbmlmaWNhbnRseSBpbXBhY3RpbmcgdGhlIGtlcm5lbCBjb2RlIG9yIGNsdXR0ZXJpbmcKK2l0IHdpdGggc3BlY2lhbCBjYXNlcy4KKworCisxKSBFbnRyeSBwb2ludCBmb3IgYXJjaC9hcm0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICBUaGVyZSBpcyBvbmUgc2luZ2xlIGVudHJ5IHBvaW50IHRvIHRoZSBrZXJuZWwsIGF0IHRoZSBzdGFydAorICAgb2YgdGhlIGtlcm5lbCBpbWFnZS4gVGhhdCBlbnRyeSBwb2ludCBzdXBwb3J0cyB0d28gY2FsbGluZworICAgY29udmVudGlvbnMuICBBIHN1bW1hcnkgb2YgdGhlIGludGVyZmFjZSBpcyBkZXNjcmliZWQgaGVyZS4gIEEgZnVsbAorICAgZGVzY3JpcHRpb24gb2YgdGhlIGJvb3QgcmVxdWlyZW1lbnRzIGlzIGRvY3VtZW50ZWQgaW4KKyAgIERvY3VtZW50YXRpb24vYXJtL0Jvb3RpbmcKKworICAgICAgICBhKSBBVEFHUyBpbnRlcmZhY2UuICBNaW5pbWFsIGluZm9ybWF0aW9uIGlzIHBhc3NlZCBmcm9tIGZpcm13YXJlCisgICAgICAgIHRvIHRoZSBrZXJuZWwgd2l0aCBhIHRhZ2dlZCBsaXN0IG9mIHByZWRlZmluZWQgcGFyYW1ldGVycy4KKworICAgICAgICAgICAgICAgIHIwIDogMAorCisgICAgICAgICAgICAgICAgcjEgOiBNYWNoaW5lIHR5cGUgbnVtYmVyCisKKyAgICAgICAgICAgICAgICByMiA6IFBoeXNpY2FsIGFkZHJlc3Mgb2YgdGFnZ2VkIGxpc3QgaW4gc3lzdGVtIFJBTQorCisgICAgICAgIGIpIEVudHJ5IHdpdGggYSBmbGF0dGVuZWQgZGV2aWNlLXRyZWUgYmxvY2suICBGaXJtd2FyZSBsb2FkcyB0aGUKKyAgICAgICAgcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgZmxhdHRlbmVkIGRldmljZSB0cmVlIGJsb2NrIChkdGIpIGludG8gcjIsCisgICAgICAgIHIxIGlzIG5vdCB1c2VkLCBidXQgaXQgaXMgY29uc2lkZXJlZCBnb29kIHByYWN0aWNlIHRvIHVzZSBhIHZhbGlkCisgICAgICAgIG1hY2hpbmUgbnVtYmVyIGFzIGRlc2NyaWJlZCBpbiBEb2N1bWVudGF0aW9uL2FybS9Cb290aW5nLgorCisgICAgICAgICAgICAgICAgcjAgOiAwCisKKyAgICAgICAgICAgICAgICByMSA6IFZhbGlkIG1hY2hpbmUgdHlwZSBudW1iZXIuICBXaGVuIHVzaW5nIGEgZGV2aWNlIHRyZWUsCisgICAgICAgICAgICAgICAgYSBzaW5nbGUgbWFjaGluZSB0eXBlIG51bWJlciB3aWxsIG9mdGVuIGJlIGFzc2lnbmVkIHRvCisgICAgICAgICAgICAgICAgcmVwcmVzZW50IGEgY2xhc3Mgb3IgZmFtaWx5IG9mIFNvQ3MuCisKKyAgICAgICAgICAgICAgICByMiA6IHBoeXNpY2FsIHBvaW50ZXIgdG8gdGhlIGRldmljZS10cmVlIGJsb2NrCisgICAgICAgICAgICAgICAgKGRlZmluZWQgaW4gY2hhcHRlciBJSSkgaW4gUkFNLiAgRGV2aWNlIHRyZWUgY2FuIGJlIGxvY2F0ZWQKKyAgICAgICAgICAgICAgICBhbnl3aGVyZSBpbiBzeXN0ZW0gUkFNLCBidXQgaXQgc2hvdWxkIGJlIGFsaWduZWQgb24gYSA2NCBiaXQKKyAgICAgICAgICAgICAgICBib3VuZGFyeS4KKworICAgVGhlIGtlcm5lbCB3aWxsIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBBVEFHUyBhbmQgZGV2aWNlIHRyZWUgYm9vdGluZyBieQorICAgcmVhZGluZyB0aGUgbWVtb3J5IHBvaW50ZWQgdG8gYnkgcjIgYW5kIGxvb2tpbmcgZm9yIGVpdGhlciB0aGUgZmxhdHRlbmVkCisgICBkZXZpY2UgdHJlZSBibG9jayBtYWdpYyB2YWx1ZSAoMHhkMDBkZmVlZCkgb3IgdGhlIEFUQUdfQ09SRSB2YWx1ZSBhdAorICAgb2Zmc2V0IDB4NCBmcm9tIHIyICgweDU0NDEwMDAxKS4KKworMikgRW50cnkgcG9pbnQgZm9yIGFyY2gvcG93ZXJwYworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICBUaGVyZSBpcyBvbmUgc2luZ2xlIGVudHJ5IHBvaW50IHRvIHRoZSBrZXJuZWwsIGF0IHRoZSBzdGFydAorICAgb2YgdGhlIGtlcm5lbCBpbWFnZS4gVGhhdCBlbnRyeSBwb2ludCBzdXBwb3J0cyB0d28gY2FsbGluZworICAgY29udmVudGlvbnM6CisKKyAgICAgICAgYSkgQm9vdCBmcm9tIE9wZW4gRmlybXdhcmUuIElmIHlvdXIgZmlybXdhcmUgaXMgY29tcGF0aWJsZQorICAgICAgICB3aXRoIE9wZW4gRmlybXdhcmUgKElFRUUgMTI3NSkgb3IgcHJvdmlkZXMgYW4gT0YgY29tcGF0aWJsZQorICAgICAgICBjbGllbnQgaW50ZXJmYWNlIEFQSSAoc3VwcG9ydCBmb3IgImludGVycHJldCIgY2FsbGJhY2sgb2YKKyAgICAgICAgZm9ydGggd29yZHMgaXNuJ3QgcmVxdWlyZWQpLCB5b3UgY2FuIGVudGVyIHRoZSBrZXJuZWwgd2l0aDoKKworICAgICAgICAgICAgICByNSA6IE9GIGNhbGxiYWNrIHBvaW50ZXIgYXMgZGVmaW5lZCBieSBJRUVFIDEyNzUKKyAgICAgICAgICAgICAgYmluZGluZ3MgdG8gcG93ZXJwYy4gT25seSB0aGUgMzItYml0IGNsaWVudCBpbnRlcmZhY2UKKyAgICAgICAgICAgICAgaXMgY3VycmVudGx5IHN1cHBvcnRlZAorCisgICAgICAgICAgICAgIHIzLCByNCA6IGFkZHJlc3MgJiBsZW5ndGggb2YgYW4gaW5pdHJkIGlmIGFueSBvciAwCisKKyAgICAgICAgICAgICAgVGhlIE1NVSBpcyBlaXRoZXIgb24gb3Igb2ZmOyB0aGUga2VybmVsIHdpbGwgcnVuIHRoZQorICAgICAgICAgICAgICB0cmFtcG9saW5lIGxvY2F0ZWQgaW4gYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tX2luaXQuYyB0bworICAgICAgICAgICAgICBleHRyYWN0IHRoZSBkZXZpY2UtdHJlZSBhbmQgb3RoZXIgaW5mb3JtYXRpb24gZnJvbSBvcGVuCisgICAgICAgICAgICAgIGZpcm13YXJlIGFuZCBidWlsZCBhIGZsYXR0ZW5lZCBkZXZpY2UtdHJlZSBhcyBkZXNjcmliZWQKKyAgICAgICAgICAgICAgaW4gYikuIHByb21faW5pdCgpIHdpbGwgdGhlbiByZS1lbnRlciB0aGUga2VybmVsIHVzaW5nCisgICAgICAgICAgICAgIHRoZSBzZWNvbmQgbWV0aG9kLiBUaGlzIHRyYW1wb2xpbmUgY29kZSBydW5zIGluIHRoZQorICAgICAgICAgICAgICBjb250ZXh0IG9mIHRoZSBmaXJtd2FyZSwgd2hpY2ggaXMgc3VwcG9zZWQgdG8gaGFuZGxlIGFsbAorICAgICAgICAgICAgICBleGNlcHRpb25zIGR1cmluZyB0aGF0IHRpbWUuCisKKyAgICAgICAgYikgRGlyZWN0IGVudHJ5IHdpdGggYSBmbGF0dGVuZWQgZGV2aWNlLXRyZWUgYmxvY2suIFRoaXMgZW50cnkKKyAgICAgICAgcG9pbnQgaXMgY2FsbGVkIGJ5IGEpIGFmdGVyIHRoZSBPRiB0cmFtcG9saW5lIGFuZCBjYW4gYWxzbyBiZQorICAgICAgICBjYWxsZWQgZGlyZWN0bHkgYnkgYSBib290bG9hZGVyIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgT3BlbgorICAgICAgICBGaXJtd2FyZSBjbGllbnQgaW50ZXJmYWNlLiBJdCBpcyBhbHNvIHVzZWQgYnkgImtleGVjIiB0bworICAgICAgICBpbXBsZW1lbnQgImhvdCIgYm9vdGluZyBvZiBhIG5ldyBrZXJuZWwgZnJvbSBhIHByZXZpb3VzCisgICAgICAgIHJ1bm5pbmcgb25lLiBUaGlzIG1ldGhvZCBpcyB3aGF0IEkgd2lsbCBkZXNjcmliZSBpbiBtb3JlCisgICAgICAgIGRldGFpbHMgaW4gdGhpcyBkb2N1bWVudCwgYXMgbWV0aG9kIGEpIGlzIHNpbXBseSBzdGFuZGFyZCBPcGVuCisgICAgICAgIEZpcm13YXJlLCBhbmQgdGh1cyBzaG91bGQgYmUgaW1wbGVtZW50ZWQgYWNjb3JkaW5nIHRvIHRoZQorICAgICAgICB2YXJpb3VzIHN0YW5kYXJkIGRvY3VtZW50cyBkZWZpbmluZyBpdCBhbmQgaXRzIGJpbmRpbmcgdG8gdGhlCisgICAgICAgIFBvd2VyUEMgcGxhdGZvcm0uIFRoZSBlbnRyeSBwb2ludCBkZWZpbml0aW9uIHRoZW4gYmVjb21lczoKKworICAgICAgICAgICAgICAgIHIzIDogcGh5c2ljYWwgcG9pbnRlciB0byB0aGUgZGV2aWNlLXRyZWUgYmxvY2sKKyAgICAgICAgICAgICAgICAoZGVmaW5lZCBpbiBjaGFwdGVyIElJKSBpbiBSQU0KKworICAgICAgICAgICAgICAgIHI0IDogcGh5c2ljYWwgcG9pbnRlciB0byB0aGUga2VybmVsIGl0c2VsZi4gVGhpcyBpcworICAgICAgICAgICAgICAgIHVzZWQgYnkgdGhlIGFzc2VtYmx5IGNvZGUgdG8gcHJvcGVybHkgZGlzYWJsZSB0aGUgTU1VCisgICAgICAgICAgICAgICAgaW4gY2FzZSB5b3UgYXJlIGVudGVyaW5nIHRoZSBrZXJuZWwgd2l0aCBNTVUgZW5hYmxlZAorICAgICAgICAgICAgICAgIGFuZCBhIG5vbi0xOjEgbWFwcGluZy4KKworICAgICAgICAgICAgICAgIHI1IDogTlVMTCAoYXMgdG8gZGlmZmVyZW50aWF0ZSB3aXRoIG1ldGhvZCBhKQorCisgICAgICAgIE5vdGUgYWJvdXQgU01QIGVudHJ5OiBFaXRoZXIgeW91ciBmaXJtd2FyZSBwdXRzIHlvdXIgb3RoZXIKKyAgICAgICAgQ1BVcyBpbiBzb21lIHNsZWVwIGxvb3Agb3Igc3BpbiBsb29wIGluIFJPTSB3aGVyZSB5b3UgY2FuIGdldAorICAgICAgICB0aGVtIG91dCB2aWEgYSBzb2Z0IHJlc2V0IG9yIHNvbWUgb3RoZXIgbWVhbnMsIGluIHdoaWNoIGNhc2UKKyAgICAgICAgeW91IGRvbid0IG5lZWQgdG8gY2FyZSwgb3IgeW91J2xsIGhhdmUgdG8gZW50ZXIgdGhlIGtlcm5lbAorICAgICAgICB3aXRoIGFsbCBDUFVzLiBUaGUgd2F5IHRvIGRvIHRoYXQgd2l0aCBtZXRob2QgYikgd2lsbCBiZQorICAgICAgICBkZXNjcmliZWQgaW4gYSBsYXRlciByZXZpc2lvbiBvZiB0aGlzIGRvY3VtZW50LgorCisgICBCb2FyZCBzdXBwb3J0cyAocGxhdGZvcm1zKSBhcmUgbm90IGV4Y2x1c2l2ZSBjb25maWcgb3B0aW9ucy4gQW4KKyAgIGFyYml0cmFyeSBzZXQgb2YgYm9hcmQgc3VwcG9ydHMgY2FuIGJlIGJ1aWx0IGluIGEgc2luZ2xlIGtlcm5lbAorICAgaW1hZ2UuIFRoZSBrZXJuZWwgd2lsbCAia25vdyIgd2hhdCBzZXQgb2YgZnVuY3Rpb25zIHRvIHVzZSBmb3IgYQorICAgZ2l2ZW4gcGxhdGZvcm0gYmFzZWQgb24gdGhlIGNvbnRlbnQgb2YgdGhlIGRldmljZS10cmVlLiBUaHVzLCB5b3UKKyAgIHNob3VsZDoKKworICAgICAgICBhKSBhZGQgeW91ciBwbGF0Zm9ybSBzdXBwb3J0IGFzIGEgX2Jvb2xlYW5fIG9wdGlvbiBpbgorICAgICAgICBhcmNoL3Bvd2VycGMvS2NvbmZpZywgZm9sbG93aW5nIHRoZSBleGFtcGxlIG9mIFBQQ19QU0VSSUVTLAorICAgICAgICBQUENfUE1BQyBhbmQgUFBDX01BUExFLiBUaGUgbGF0ZXIgaXMgcHJvYmFibHkgYSBnb29kCisgICAgICAgIGV4YW1wbGUgb2YgYSBib2FyZCBzdXBwb3J0IHRvIHN0YXJ0IGZyb20uCisKKyAgICAgICAgYikgY3JlYXRlIHlvdXIgbWFpbiBwbGF0Zm9ybSBmaWxlIGFzCisgICAgICAgICJhcmNoL3Bvd2VycGMvcGxhdGZvcm1zL215cGxhdGZvcm0vbXlib2FyZF9zZXR1cC5jIiBhbmQgYWRkIGl0CisgICAgICAgIHRvIHRoZSBNYWtlZmlsZSB1bmRlciB0aGUgY29uZGl0aW9uIG9mIHlvdXIgQ09ORklHXworICAgICAgICBvcHRpb24uIFRoaXMgZmlsZSB3aWxsIGRlZmluZSBhIHN0cnVjdHVyZSBvZiB0eXBlICJwcGNfbWQiCisgICAgICAgIGNvbnRhaW5pbmcgdGhlIHZhcmlvdXMgY2FsbGJhY2tzIHRoYXQgdGhlIGdlbmVyaWMgY29kZSB3aWxsCisgICAgICAgIHVzZSB0byBnZXQgdG8geW91ciBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlCisKKyAgQSBrZXJuZWwgaW1hZ2UgbWF5IHN1cHBvcnQgbXVsdGlwbGUgcGxhdGZvcm1zLCBidXQgb25seSBpZiB0aGUKKyAgcGxhdGZvcm1zIGZlYXR1cmUgdGhlIHNhbWUgY29yZSBhcmNoaXRlY3R1cmUuICBBIHNpbmdsZSBrZXJuZWwgYnVpbGQKKyAgY2Fubm90IHN1cHBvcnQgYm90aCBjb25maWd1cmF0aW9ucyB3aXRoIEJvb2sgRSBhbmQgY29uZmlndXJhdGlvbnMKKyAgd2l0aCBjbGFzc2ljIFBvd2VycGMgYXJjaGl0ZWN0dXJlcy4KKworMykgRW50cnkgcG9pbnQgZm9yIGFyY2gveDg2CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlcmUgaXMgb25lIHNpbmdsZSAzMmJpdCBlbnRyeSBwb2ludCB0byB0aGUga2VybmVsIGF0IGNvZGUzMl9zdGFydCwKKyAgdGhlIGRlY29tcHJlc3NvciAodGhlIHJlYWwgbW9kZSBlbnRyeSBwb2ludCBnb2VzIHRvIHRoZSBzYW1lICAzMmJpdAorICBlbnRyeSBwb2ludCBvbmNlIGl0IHN3aXRjaGVkIGludG8gcHJvdGVjdGVkIG1vZGUpLiBUaGF0IGVudHJ5IHBvaW50CisgIHN1cHBvcnRzIG9uZSBjYWxsaW5nIGNvbnZlbnRpb24gd2hpY2ggaXMgZG9jdW1lbnRlZCBpbgorICBEb2N1bWVudGF0aW9uL3g4Ni9ib290LnR4dAorICBUaGUgcGh5c2ljYWwgcG9pbnRlciB0byB0aGUgZGV2aWNlLXRyZWUgYmxvY2sgKGRlZmluZWQgaW4gY2hhcHRlciBJSSkKKyAgaXMgcGFzc2VkIHZpYSBzZXR1cF9kYXRhIHdoaWNoIHJlcXVpcmVzIGF0IGxlYXN0IGJvb3QgcHJvdG9jb2wgMi4wOS4KKyAgVGhlIHR5cGUgZmlsZWQgaXMgZGVmaW5lZCBhcworCisgICNkZWZpbmUgU0VUVVBfRFRCICAgICAgICAgICAgICAgICAgICAgIDIKKworICBUaGlzIGRldmljZS10cmVlIGlzIHVzZWQgYXMgYW4gZXh0ZW5zaW9uIHRvIHRoZSAiYm9vdCBwYWdlIi4gQXMgc3VjaCBpdAorICBkb2VzIG5vdCBwYXJzZSAvIGNvbnNpZGVyIGRhdGEgd2hpY2ggaXMgYWxyZWFkeSBjb3ZlcmVkIGJ5IHRoZSBib290CisgIHBhZ2UuIFRoaXMgaW5jbHVkZXMgbWVtb3J5IHNpemUsIHJlc2VydmVkIHJhbmdlcywgY29tbWFuZCBsaW5lIGFyZ3VtZW50cworICBvciBpbml0cmQgYWRkcmVzcy4gSXQgc2ltcGx5IGhvbGRzIGluZm9ybWF0aW9uIHdoaWNoIGNhbiBub3QgYmUgcmV0cmlldmVkCisgIG90aGVyd2lzZSBsaWtlIGludGVycnVwdCByb3V0aW5nIG9yIGEgbGlzdCBvZiBkZXZpY2VzIGJlaGluZCBhbiBJMkMgYnVzLgorCis0KSBFbnRyeSBwb2ludCBmb3IgYXJjaC9taXBzL2JtaXBzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgU29tZSBib290bG9hZGVycyBvbmx5IHN1cHBvcnQgYSBzaW5nbGUgZW50cnkgcG9pbnQsIGF0IHRoZSBzdGFydCBvZiB0aGUKKyAga2VybmVsIGltYWdlLiAgT3RoZXIgYm9vdGxvYWRlcnMgd2lsbCBqdW1wIHRvIHRoZSBFTEYgc3RhcnQgYWRkcmVzcy4KKyAgQm90aCBzY2hlbWVzIGFyZSBzdXBwb3J0ZWQ7IENPTkZJR19CT09UX1JBVz15IGFuZCBDT05GSUdfTk9fRVhDRVBUX0ZJTEw9eSwKKyAgc28gdGhlIGZpcnN0IGluc3RydWN0aW9uIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGtlcm5lbF9lbnRyeSgpLgorCisgIFNpbWlsYXIgdG8gdGhlIGFyY2gvYXJtIGNhc2UgKGIpLCBhIERULWF3YXJlIGJvb3Rsb2FkZXIgaXMgZXhwZWN0ZWQgdG8KKyAgc2V0IHVwIHRoZSBmb2xsb3dpbmcgcmVnaXN0ZXJzOgorCisgICAgICAgICBhMCA6IDAKKworICAgICAgICAgYTEgOiAweGZmZmZmZmZmCisKKyAgICAgICAgIGEyIDogUGh5c2ljYWwgcG9pbnRlciB0byB0aGUgZGV2aWNlIHRyZWUgYmxvY2sgKGRlZmluZWQgaW4gY2hhcHRlcgorICAgICAgICAgSUkpIGluIFJBTS4gIFRoZSBkZXZpY2UgdHJlZSBjYW4gYmUgbG9jYXRlZCBhbnl3aGVyZSBpbiB0aGUgZmlyc3QKKyAgICAgICAgIDUxMk1CIG9mIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlICgweDAwMDAwMDAwIC0gMHgxZmZmZmZmZiksCisgICAgICAgICBhbGlnbmVkIG9uIGEgNjQgYml0IGJvdW5kYXJ5LgorCisgIExlZ2FjeSBib290bG9hZGVycyBkbyBub3QgdXNlIHRoaXMgY29udmVudGlvbiwgYW5kIHRoZXkgZG8gbm90IHBhc3MgaW4gYQorICBEVCBibG9jay4gIEluIHRoaXMgY2FzZSwgTGludXggd2lsbCBsb29rIGZvciBhIGJ1aWx0aW4gRFRCLCBzZWxlY3RlZCB2aWEKKyAgQ09ORklHX0RUXyouCisKKyAgVGhpcyBjb252ZW50aW9uIGlzIGRlZmluZWQgZm9yIDMyLWJpdCBzeXN0ZW1zIG9ubHksIGFzIHRoZXJlIGFyZSBub3QKKyAgY3VycmVudGx5IGFueSA2NC1iaXQgQk1JUFMgaW1wbGVtZW50YXRpb25zLgorCitJSSAtIFRoZSBEVCBibG9jayBmb3JtYXQKKz09PT09PT09PT09PT09PT09PT09PT09PQorCisKK1RoaXMgY2hhcHRlciBkZWZpbmVzIHRoZSBhY3R1YWwgZm9ybWF0IG9mIHRoZSBmbGF0dGVuZWQgZGV2aWNlLXRyZWUKK3Bhc3NlZCB0byB0aGUga2VybmVsLiBUaGUgYWN0dWFsIGNvbnRlbnQgb2YgaXQgYW5kIGtlcm5lbCByZXF1aXJlbWVudHMKK2FyZSBkZXNjcmliZWQgbGF0ZXIuIFlvdSBjYW4gZmluZCBleGFtcGxlIG9mIGNvZGUgbWFuaXB1bGF0aW5nIHRoYXQKK2Zvcm1hdCBpbiB2YXJpb3VzIHBsYWNlcywgaW5jbHVkaW5nIGFyY2gvcG93ZXJwYy9rZXJuZWwvcHJvbV9pbml0LmMKK3doaWNoIHdpbGwgZ2VuZXJhdGUgYSBmbGF0dGVuZWQgZGV2aWNlLXRyZWUgZnJvbSB0aGUgT3BlbiBGaXJtd2FyZQorcmVwcmVzZW50YXRpb24sIG9yIHRoZSBmczJkdCB1dGlsaXR5IHdoaWNoIGlzIHBhcnQgb2YgdGhlIGtleGVjIHRvb2xzCit3aGljaCB3aWxsIGdlbmVyYXRlIG9uZSBmcm9tIGEgZmlsZXN5c3RlbSByZXByZXNlbnRhdGlvbi4gSXQgaXMKK2V4cGVjdGVkIHRoYXQgYSBib290bG9hZGVyIGxpa2UgdWJvb3QgcHJvdmlkZXMgYSBiaXQgbW9yZSBzdXBwb3J0LAordGhhdCB3aWxsIGJlIGRpc2N1c3NlZCBsYXRlciBhcyB3ZWxsLgorCitOb3RlOiBUaGUgYmxvY2sgaGFzIHRvIGJlIGluIG1haW4gbWVtb3J5LiBJdCBoYXMgdG8gYmUgYWNjZXNzaWJsZSBpbgorYm90aCByZWFsIG1vZGUgYW5kIHZpcnR1YWwgbW9kZSB3aXRoIG5vIG1hcHBpbmcgb3RoZXIgdGhhbiBtYWluCittZW1vcnkuIElmIHlvdSBhcmUgd3JpdGluZyBhIHNpbXBsZSBmbGFzaCBib290bG9hZGVyLCBpdCBzaG91bGQgY29weQordGhlIGJsb2NrIHRvIFJBTSBiZWZvcmUgcGFzc2luZyBpdCB0byB0aGUga2VybmVsLgorCisKKzEpIEhlYWRlcgorLS0tLS0tLS0tCisKKyAgIFRoZSBrZXJuZWwgaXMgcGFzc2VkIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHBvaW50aW5nIHRvIGFuIGFyZWEgb2YgbWVtb3J5CisgICB0aGF0IGlzIHJvdWdobHkgZGVzY3JpYmVkIGluIGluY2x1ZGUvbGludXgvb2ZfZmR0LmggYnkgdGhlIHN0cnVjdHVyZQorICAgYm9vdF9wYXJhbV9oZWFkZXI6CisKK3N0cnVjdCBib290X3BhcmFtX2hlYWRlciB7CisgICAgICAgIHUzMiAgICAgbWFnaWM7ICAgICAgICAgICAgICAgICAgLyogbWFnaWMgd29yZCBPRl9EVF9IRUFERVIgKi8KKyAgICAgICAgdTMyICAgICB0b3RhbHNpemU7ICAgICAgICAgICAgICAvKiB0b3RhbCBzaXplIG9mIERUIGJsb2NrICovCisgICAgICAgIHUzMiAgICAgb2ZmX2R0X3N0cnVjdDsgICAgICAgICAgLyogb2Zmc2V0IHRvIHN0cnVjdHVyZSAqLworICAgICAgICB1MzIgICAgIG9mZl9kdF9zdHJpbmdzOyAgICAgICAgIC8qIG9mZnNldCB0byBzdHJpbmdzICovCisgICAgICAgIHUzMiAgICAgb2ZmX21lbV9yc3ZtYXA7ICAgICAgICAgLyogb2Zmc2V0IHRvIG1lbW9yeSByZXNlcnZlIG1hcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIHUzMiAgICAgdmVyc2lvbjsgICAgICAgICAgICAgICAgLyogZm9ybWF0IHZlcnNpb24gKi8KKyAgICAgICAgdTMyICAgICBsYXN0X2NvbXBfdmVyc2lvbjsgICAgICAvKiBsYXN0IGNvbXBhdGlibGUgdmVyc2lvbiAqLworCisgICAgICAgIC8qIHZlcnNpb24gMiBmaWVsZHMgYmVsb3cgKi8KKyAgICAgICAgdTMyICAgICBib290X2NwdWlkX3BoeXM7ICAgICAgICAvKiBXaGljaCBwaHlzaWNhbCBDUFUgaWQgd2UncmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib290aW5nIG9uICovCisgICAgICAgIC8qIHZlcnNpb24gMyBmaWVsZHMgYmVsb3cgKi8KKyAgICAgICAgdTMyICAgICBzaXplX2R0X3N0cmluZ3M7ICAgICAgICAvKiBzaXplIG9mIHRoZSBzdHJpbmdzIGJsb2NrICovCisKKyAgICAgICAgLyogdmVyc2lvbiAxNyBmaWVsZHMgYmVsb3cgKi8KKyAgICAgICAgdTMyCXNpemVfZHRfc3RydWN0OwkJLyogc2l6ZSBvZiB0aGUgRFQgc3RydWN0dXJlIGJsb2NrICovCit9OworCisgICBBbG9uZyB3aXRoIHRoZSBjb25zdGFudHM6CisKKy8qIERlZmluaXRpb25zIHVzZWQgYnkgdGhlIGZsYXR0ZW5lZCBkZXZpY2UgdHJlZSAqLworI2RlZmluZSBPRl9EVF9IRUFERVIgICAgICAgICAgICAweGQwMGRmZWVkICAgICAgLyogNDogdmVyc2lvbiwKKwkJCQkJCSAgIDQ6IHRvdGFsIHNpemUgKi8KKyNkZWZpbmUgT0ZfRFRfQkVHSU5fTk9ERSAgICAgICAgMHgxICAgICAgICAgICAgIC8qIFN0YXJ0IG5vZGU6IGZ1bGwgbmFtZQorCQkJCQkJICAgKi8KKyNkZWZpbmUgT0ZfRFRfRU5EX05PREUgICAgICAgICAgMHgyICAgICAgICAgICAgIC8qIEVuZCBub2RlICovCisjZGVmaW5lIE9GX0RUX1BST1AgICAgICAgICAgICAgIDB4MyAgICAgICAgICAgICAvKiBQcm9wZXJ0eTogbmFtZSBvZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLCBjb250ZW50ICovCisjZGVmaW5lIE9GX0RUX0VORCAgICAgICAgICAgICAgIDB4OQorCisgICBBbGwgdmFsdWVzIGluIHRoaXMgaGVhZGVyIGFyZSBpbiBiaWcgZW5kaWFuIGZvcm1hdCwgdGhlIHZhcmlvdXMKKyAgIGZpZWxkcyBpbiB0aGlzIGhlYWRlciBhcmUgZGVmaW5lZCBtb3JlIHByZWNpc2VseSBiZWxvdy4gQWxsCisgICAib2Zmc2V0IiB2YWx1ZXMgYXJlIGluIGJ5dGVzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBoZWFkZXI7IHRoYXQgaXMKKyAgIGZyb20gdGhlIHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBvZiB0aGUgZGV2aWNlIHRyZWUgYmxvY2suCisKKyAgIC0gbWFnaWMKKworICAgICBUaGlzIGlzIGEgbWFnaWMgdmFsdWUgdGhhdCAibWFya3MiIHRoZSBiZWdpbm5pbmcgb2YgdGhlCisgICAgIGRldmljZS10cmVlIGJsb2NrIGhlYWRlci4gSXQgY29udGFpbnMgdGhlIHZhbHVlIDB4ZDAwZGZlZWQgYW5kIGlzCisgICAgIGRlZmluZWQgYnkgdGhlIGNvbnN0YW50IE9GX0RUX0hFQURFUgorCisgICAtIHRvdGFsc2l6ZQorCisgICAgIFRoaXMgaXMgdGhlIHRvdGFsIHNpemUgb2YgdGhlIERUIGJsb2NrIGluY2x1ZGluZyB0aGUgaGVhZGVyLiBUaGUKKyAgICAgIkRUIiBibG9jayBzaG91bGQgZW5jbG9zZSBhbGwgZGF0YSBzdHJ1Y3R1cmVzIGRlZmluZWQgaW4gdGhpcworICAgICBjaGFwdGVyICh3aG8gYXJlIHBvaW50ZWQgdG8gYnkgb2Zmc2V0cyBpbiB0aGlzIGhlYWRlcikuIFRoYXQgaXMsCisgICAgIHRoZSBkZXZpY2UtdHJlZSBzdHJ1Y3R1cmUsIHN0cmluZ3MsIGFuZCB0aGUgbWVtb3J5IHJlc2VydmUgbWFwLgorCisgICAtIG9mZl9kdF9zdHJ1Y3QKKworICAgICBUaGlzIGlzIGFuIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGhlYWRlciB0byB0aGUgc3RhcnQKKyAgICAgb2YgdGhlICJzdHJ1Y3R1cmUiIHBhcnQgdGhlIGRldmljZSB0cmVlLiAoc2VlIDIpIGRldmljZSB0cmVlKQorCisgICAtIG9mZl9kdF9zdHJpbmdzCisKKyAgICAgVGhpcyBpcyBhbiBvZmZzZXQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBoZWFkZXIgdG8gdGhlIHN0YXJ0CisgICAgIG9mIHRoZSAic3RyaW5ncyIgcGFydCBvZiB0aGUgZGV2aWNlLXRyZWUKKworICAgLSBvZmZfbWVtX3Jzdm1hcAorCisgICAgIFRoaXMgaXMgYW4gb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgaGVhZGVyIHRvIHRoZSBzdGFydAorICAgICBvZiB0aGUgcmVzZXJ2ZWQgbWVtb3J5IG1hcC4gVGhpcyBtYXAgaXMgYSBsaXN0IG9mIHBhaXJzIG9mIDY0LQorICAgICBiaXQgaW50ZWdlcnMuIEVhY2ggcGFpciBpcyBhIHBoeXNpY2FsIGFkZHJlc3MgYW5kIGEgc2l6ZS4gVGhlCisgICAgIGxpc3QgaXMgdGVybWluYXRlZCBieSBhbiBlbnRyeSBvZiBzaXplIDAuIFRoaXMgbWFwIHByb3ZpZGVzIHRoZQorICAgICBrZXJuZWwgd2l0aCBhIGxpc3Qgb2YgcGh5c2ljYWwgbWVtb3J5IGFyZWFzIHRoYXQgYXJlICJyZXNlcnZlZCIKKyAgICAgYW5kIHRodXMgbm90IHRvIGJlIHVzZWQgZm9yIG1lbW9yeSBhbGxvY2F0aW9ucywgZXNwZWNpYWxseSBkdXJpbmcKKyAgICAgZWFybHkgaW5pdGlhbGl6YXRpb24uIFRoZSBrZXJuZWwgbmVlZHMgdG8gYWxsb2NhdGUgbWVtb3J5IGR1cmluZworICAgICBib290IGZvciB0aGluZ3MgbGlrZSB1bi1mbGF0dGVuaW5nIHRoZSBkZXZpY2UtdHJlZSwgYWxsb2NhdGluZyBhbgorICAgICBNTVUgaGFzaCB0YWJsZSwgZXRjLi4uIFRob3NlIGFsbG9jYXRpb25zIG11c3QgYmUgZG9uZSBpbiBzdWNoIGEKKyAgICAgd2F5IHRvIGF2b2lkIG92ZXJyaWRpbmcgY3JpdGljYWwgdGhpbmdzIGxpa2UsIG9uIE9wZW4gRmlybXdhcmUKKyAgICAgY2FwYWJsZSBtYWNoaW5lcywgdGhlIFJUQVMgaW5zdGFuY2UsIG9yIG9uIHNvbWUgcFNlcmllcywgdGhlIFRDRQorICAgICB0YWJsZXMgdXNlZCBmb3IgdGhlIGlvbW11LiBUeXBpY2FsbHksIHRoZSByZXNlcnZlIG1hcCBzaG91bGQKKyAgICAgY29udGFpbiBfYXQgbGVhc3RfIHRoaXMgRFQgYmxvY2sgaXRzZWxmIChoZWFkZXIsdG90YWxfc2l6ZSkuIElmCisgICAgIHlvdSBhcmUgcGFzc2luZyBhbiBpbml0cmQgdG8gdGhlIGtlcm5lbCwgeW91IHNob3VsZCByZXNlcnZlIGl0IGFzCisgICAgIHdlbGwuIFlvdSBkbyBub3QgbmVlZCB0byByZXNlcnZlIHRoZSBrZXJuZWwgaW1hZ2UgaXRzZWxmLiBUaGUgbWFwCisgICAgIHNob3VsZCBiZSA2NC1iaXQgYWxpZ25lZC4KKworICAgLSB2ZXJzaW9uCisKKyAgICAgVGhpcyBpcyB0aGUgdmVyc2lvbiBvZiB0aGlzIHN0cnVjdHVyZS4gVmVyc2lvbiAxIHN0b3BzCisgICAgIGhlcmUuIFZlcnNpb24gMiBhZGRzIGFuIGFkZGl0aW9uYWwgZmllbGQgYm9vdF9jcHVpZF9waHlzLgorICAgICBWZXJzaW9uIDMgYWRkcyB0aGUgc2l6ZSBvZiB0aGUgc3RyaW5ncyBibG9jaywgYWxsb3dpbmcgdGhlIGtlcm5lbAorICAgICB0byByZWFsbG9jYXRlIGl0IGVhc2lseSBhdCBib290IGFuZCBmcmVlIHVwIHRoZSB1bnVzZWQgZmxhdHRlbmVkCisgICAgIHN0cnVjdHVyZSBhZnRlciBleHBhbnNpb24uIFZlcnNpb24gMTYgaW50cm9kdWNlcyBhIG5ldyBtb3JlCisgICAgICJjb21wYWN0IiBmb3JtYXQgZm9yIHRoZSB0cmVlIGl0c2VsZiB0aGF0IGlzIGhvd2V2ZXIgbm90IGJhY2t3YXJkCisgICAgIGNvbXBhdGlibGUuIFZlcnNpb24gMTcgYWRkcyBhbiBhZGRpdGlvbmFsIGZpZWxkLCBzaXplX2R0X3N0cnVjdCwKKyAgICAgYWxsb3dpbmcgaXQgdG8gYmUgcmVhbGxvY2F0ZWQgb3IgbW92ZWQgbW9yZSBlYXNpbHkgKHRoaXMgaXMKKyAgICAgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgYm9vdGxvYWRlcnMgd2hpY2ggbmVlZCB0byBtYWtlCisgICAgIGFkanVzdG1lbnRzIHRvIGEgZGV2aWNlIHRyZWUgYmFzZWQgb24gcHJvYmVkIGluZm9ybWF0aW9uKS4gWW91CisgICAgIHNob3VsZCBhbHdheXMgZ2VuZXJhdGUgYSBzdHJ1Y3R1cmUgb2YgdGhlIGhpZ2hlc3QgdmVyc2lvbiBkZWZpbmVkCisgICAgIGF0IHRoZSB0aW1lIG9mIHlvdXIgaW1wbGVtZW50YXRpb24uIEN1cnJlbnRseSB0aGF0IGlzIHZlcnNpb24gMTcsCisgICAgIHVubGVzcyB5b3UgZXhwbGljaXRseSBhaW0gYXQgYmVpbmcgYmFja3dhcmQgY29tcGF0aWJsZS4KKworICAgLSBsYXN0X2NvbXBfdmVyc2lvbgorCisgICAgIExhc3QgY29tcGF0aWJsZSB2ZXJzaW9uLiBUaGlzIGluZGljYXRlcyBkb3duIHRvIHdoYXQgdmVyc2lvbiBvZgorICAgICB0aGUgRFQgYmxvY2sgeW91IGFyZSBiYWNrd2FyZCBjb21wYXRpYmxlLiBGb3IgZXhhbXBsZSwgdmVyc2lvbiAyCisgICAgIGlzIGJhY2t3YXJkIGNvbXBhdGlibGUgd2l0aCB2ZXJzaW9uIDEgKHRoYXQgaXMsIGEga2VybmVsIGJ1aWxkCisgICAgIGZvciB2ZXJzaW9uIDEgd2lsbCBiZSBhYmxlIHRvIGJvb3Qgd2l0aCBhIHZlcnNpb24gMiBmb3JtYXQpLiBZb3UKKyAgICAgc2hvdWxkIHB1dCBhIDEgaW4gdGhpcyBmaWVsZCBpZiB5b3UgZ2VuZXJhdGUgYSBkZXZpY2UgdHJlZSBvZgorICAgICB2ZXJzaW9uIDEgdG8gMywgb3IgMTYgaWYgeW91IGdlbmVyYXRlIGEgdHJlZSBvZiB2ZXJzaW9uIDE2IG9yIDE3CisgICAgIHVzaW5nIHRoZSBuZXcgdW5pdCBuYW1lIGZvcm1hdC4KKworICAgLSBib290X2NwdWlkX3BoeXMKKworICAgICBUaGlzIGZpZWxkIG9ubHkgZXhpc3Qgb24gdmVyc2lvbiAyIGhlYWRlcnMuIEl0IGluZGljYXRlIHdoaWNoCisgICAgIHBoeXNpY2FsIENQVSBJRCBpcyBjYWxsaW5nIHRoZSBrZXJuZWwgZW50cnkgcG9pbnQuIFRoaXMgaXMgdXNlZCwKKyAgICAgYW1vbmcgb3RoZXJzLCBieSBrZXhlYy4gSWYgeW91IGFyZSBvbiBhbiBTTVAgc3lzdGVtLCB0aGlzIHZhbHVlCisgICAgIHNob3VsZCBtYXRjaCB0aGUgY29udGVudCBvZiB0aGUgInJlZyIgcHJvcGVydHkgb2YgdGhlIENQVSBub2RlIGluCisgICAgIHRoZSBkZXZpY2UtdHJlZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBDUFUgY2FsbGluZyB0aGUga2VybmVsIGVudHJ5CisgICAgIHBvaW50IChzZWUgZnVydGhlciBjaGFwdGVycyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgcmVxdWlyZWQKKyAgICAgZGV2aWNlLXRyZWUgY29udGVudHMpCisKKyAgIC0gc2l6ZV9kdF9zdHJpbmdzCisKKyAgICAgVGhpcyBmaWVsZCBvbmx5IGV4aXN0cyBvbiB2ZXJzaW9uIDMgYW5kIGxhdGVyIGhlYWRlcnMuICBJdAorICAgICBnaXZlcyB0aGUgc2l6ZSBvZiB0aGUgInN0cmluZ3MiIHNlY3Rpb24gb2YgdGhlIGRldmljZSB0cmVlICh3aGljaAorICAgICBzdGFydHMgYXQgdGhlIG9mZnNldCBnaXZlbiBieSBvZmZfZHRfc3RyaW5ncykuCisKKyAgIC0gc2l6ZV9kdF9zdHJ1Y3QKKworICAgICBUaGlzIGZpZWxkIG9ubHkgZXhpc3RzIG9uIHZlcnNpb24gMTcgYW5kIGxhdGVyIGhlYWRlcnMuICBJdCBnaXZlcworICAgICB0aGUgc2l6ZSBvZiB0aGUgInN0cnVjdHVyZSIgc2VjdGlvbiBvZiB0aGUgZGV2aWNlIHRyZWUgKHdoaWNoCisgICAgIHN0YXJ0cyBhdCB0aGUgb2Zmc2V0IGdpdmVuIGJ5IG9mZl9kdF9zdHJ1Y3QpLgorCisgICBTbyB0aGUgdHlwaWNhbCBsYXlvdXQgb2YgYSBEVCBibG9jayAodGhvdWdoIHRoZSB2YXJpb3VzIHBhcnRzIGRvbid0CisgICBuZWVkIHRvIGJlIGluIHRoYXQgb3JkZXIpIGxvb2tzIGxpa2UgdGhpcyAoYWRkcmVzc2VzIGdvIGZyb20gdG9wIHRvCisgICBib3R0b20pOgorCisKKyAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgYmFzZSAtPiB8ICBzdHJ1Y3QgYm9vdF9wYXJhbV9oZWFkZXIgIHwKKyAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICB8ICAgICAgKGFsaWdubWVudCBnYXApICgqKSAgIHwKKyAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICB8ICAgICAgbWVtb3J5IHJlc2VydmUgbWFwICAgIHwKKyAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICB8ICAgICAgKGFsaWdubWVudCBnYXApICAgICAgIHwKKyAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICB8ICAgIGRldmljZS10cmVlIHN0cnVjdHVyZSAgIHwKKyAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICB8ICAgICAgKGFsaWdubWVudCBnYXApICAgICAgIHwKKyAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICB8ICAgICBkZXZpY2UtdHJlZSBzdHJpbmdzICAgIHwKKyAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIC0tLS0tPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIHwKKyAgICAgIHwKKyAgICAgIC0tLSAoYmFzZSArIHRvdGFsc2l6ZSkKKworICAoKikgVGhlIGFsaWdubWVudCBnYXBzIGFyZSBub3QgbmVjZXNzYXJpbHkgcHJlc2VudDsgdGhlaXIgcHJlc2VuY2UKKyAgICAgIGFuZCBzaXplIGFyZSBkZXBlbmRlbnQgb24gdGhlIHZhcmlvdXMgYWxpZ25tZW50IHJlcXVpcmVtZW50cyBvZgorICAgICAgdGhlIGluZGl2aWR1YWwgZGF0YSBibG9ja3MuCisKKworMikgRGV2aWNlIHRyZWUgZ2VuZXJhbGl0aWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBkZXZpY2UtdHJlZSBpdHNlbGYgaXMgc2VwYXJhdGVkIGluIHR3byBkaWZmZXJlbnQgYmxvY2tzLCBhCitzdHJ1Y3R1cmUgYmxvY2sgYW5kIGEgc3RyaW5ncyBibG9jay4gQm90aCBuZWVkIHRvIGJlIGFsaWduZWQgdG8gYSA0CitieXRlIGJvdW5kYXJ5LgorCitGaXJzdCwgbGV0J3MgcXVpY2tseSBkZXNjcmliZSB0aGUgZGV2aWNlLXRyZWUgY29uY2VwdCBiZWZvcmUgZGV0YWlsaW5nCit0aGUgc3RvcmFnZSBmb3JtYXQuIFRoaXMgY2hhcHRlciBkb2VzIF9ub3RfIGRlc2NyaWJlIHRoZSBkZXRhaWwgb2YgdGhlCityZXF1aXJlZCB0eXBlcyBvZiBub2RlcyAmIHByb3BlcnRpZXMgZm9yIHRoZSBrZXJuZWwsIHRoaXMgaXMgZG9uZQorbGF0ZXIgaW4gY2hhcHRlciBJSUkuCisKK1RoZSBkZXZpY2UtdHJlZSBsYXlvdXQgaXMgc3Ryb25nbHkgaW5oZXJpdGVkIGZyb20gdGhlIGRlZmluaXRpb24gb2YKK3RoZSBPcGVuIEZpcm13YXJlIElFRUUgMTI3NSBkZXZpY2UtdHJlZS4gSXQncyBiYXNpY2FsbHkgYSB0cmVlIG9mCitub2RlcywgZWFjaCBub2RlIGhhdmluZyB0d28gb3IgbW9yZSBuYW1lZCBwcm9wZXJ0aWVzLiBBIHByb3BlcnR5IGNhbgoraGF2ZSBhIHZhbHVlIG9yIG5vdC4KKworSXQgaXMgYSB0cmVlLCBzbyBlYWNoIG5vZGUgaGFzIG9uZSBhbmQgb25seSBvbmUgcGFyZW50IGV4Y2VwdCBmb3IgdGhlCityb290IG5vZGUgd2hvIGhhcyBubyBwYXJlbnQuCisKK0Egbm9kZSBoYXMgMiBuYW1lcy4gVGhlIGFjdHVhbCBub2RlIG5hbWUgaXMgZ2VuZXJhbGx5IGNvbnRhaW5lZCBpbiBhCitwcm9wZXJ0eSBvZiB0eXBlICJuYW1lIiBpbiB0aGUgbm9kZSBwcm9wZXJ0eSBsaXN0IHdob3NlIHZhbHVlIGlzIGEKK3plcm8gdGVybWluYXRlZCBzdHJpbmcgYW5kIGlzIG1hbmRhdG9yeSBmb3IgdmVyc2lvbiAxIHRvIDMgb2YgdGhlCitmb3JtYXQgZGVmaW5pdGlvbiAoYXMgaXQgaXMgaW4gT3BlbiBGaXJtd2FyZSkuIFZlcnNpb24gMTYgbWFrZXMgaXQKK29wdGlvbmFsIGFzIGl0IGNhbiBnZW5lcmF0ZSBpdCBmcm9tIHRoZSB1bml0IG5hbWUgZGVmaW5lZCBiZWxvdy4KKworVGhlcmUgaXMgYWxzbyBhICJ1bml0IG5hbWUiIHRoYXQgaXMgdXNlZCB0byBkaWZmZXJlbnRpYXRlIG5vZGVzIHdpdGgKK3RoZSBzYW1lIG5hbWUgYXQgdGhlIHNhbWUgbGV2ZWwsIGl0IGlzIHVzdWFsbHkgbWFkZSBvZiB0aGUgbm9kZQorbmFtZXMsIHRoZSAiQCIgc2lnbiwgYW5kIGEgInVuaXQgYWRkcmVzcyIsIHdoaWNoIGRlZmluaXRpb24gaXMKK3NwZWNpZmljIHRvIHRoZSBidXMgdHlwZSB0aGUgbm9kZSBzaXRzIG9uLgorCitUaGUgdW5pdCBuYW1lIGRvZXNuJ3QgZXhpc3QgYXMgYSBwcm9wZXJ0eSBwZXItc2UgYnV0IGlzIGluY2x1ZGVkIGluCit0aGUgZGV2aWNlLXRyZWUgc3RydWN0dXJlLiBJdCBpcyB0eXBpY2FsbHkgdXNlZCB0byByZXByZXNlbnQgInBhdGgiIGluCit0aGUgZGV2aWNlLXRyZWUuIE1vcmUgZGV0YWlscyBhYm91dCB0aGUgYWN0dWFsIGZvcm1hdCBvZiB0aGVzZSB3aWxsIGJlCitiZWxvdy4KKworVGhlIGtlcm5lbCBnZW5lcmljIGNvZGUgZG9lcyBub3QgbWFrZSBhbnkgZm9ybWFsIHVzZSBvZiB0aGUKK3VuaXQgYWRkcmVzcyAodGhvdWdoIHNvbWUgYm9hcmQgc3VwcG9ydCBjb2RlIG1heSBkbykgc28gdGhlIG9ubHkgcmVhbAorcmVxdWlyZW1lbnQgaGVyZSBmb3IgdGhlIHVuaXQgYWRkcmVzcyBpcyB0byBlbnN1cmUgdW5pcXVlbmVzcyBvZgordGhlIG5vZGUgdW5pdCBuYW1lIGF0IGEgZ2l2ZW4gbGV2ZWwgb2YgdGhlIHRyZWUuIE5vZGVzIHdpdGggbm8gbm90aW9uCitvZiBhZGRyZXNzIGFuZCBubyBwb3NzaWJsZSBzaWJsaW5nIG9mIHRoZSBzYW1lIG5hbWUgKGxpa2UgL21lbW9yeSBvcgorL2NwdXMpIG1heSBvbWl0IHRoZSB1bml0IGFkZHJlc3MgaW4gdGhlIGNvbnRleHQgb2YgdGhpcyBzcGVjaWZpY2F0aW9uLAorb3IgdXNlIHRoZSAiQDAiIGRlZmF1bHQgdW5pdCBhZGRyZXNzLiBUaGUgdW5pdCBuYW1lIGlzIHVzZWQgdG8gZGVmaW5lCithIG5vZGUgImZ1bGwgcGF0aCIsIHdoaWNoIGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIGFsbCBwYXJlbnQgbm9kZQordW5pdCBuYW1lcyBzZXBhcmF0ZWQgd2l0aCAiLyIuCisKK1RoZSByb290IG5vZGUgZG9lc24ndCBoYXZlIGEgZGVmaW5lZCBuYW1lLCBhbmQgaXNuJ3QgcmVxdWlyZWQgdG8gaGF2ZQorYSBuYW1lIHByb3BlcnR5IGVpdGhlciBpZiB5b3UgYXJlIHVzaW5nIHZlcnNpb24gMyBvciBlYXJsaWVyIG9mIHRoZQorZm9ybWF0LiBJdCBhbHNvIGhhcyBubyB1bml0IGFkZHJlc3MgKG5vIEAgc3ltYm9sIGZvbGxvd2VkIGJ5IGEgdW5pdAorYWRkcmVzcykuIFRoZSByb290IG5vZGUgdW5pdCBuYW1lIGlzIHRodXMgYW4gZW1wdHkgc3RyaW5nLiBUaGUgZnVsbAorcGF0aCB0byB0aGUgcm9vdCBub2RlIGlzICIvIi4KKworRXZlcnkgbm9kZSB3aGljaCBhY3R1YWxseSByZXByZXNlbnRzIGFuIGFjdHVhbCBkZXZpY2UgKHRoYXQgaXMsIGEgbm9kZQord2hpY2ggaXNuJ3Qgb25seSBhIHZpcnR1YWwgImNvbnRhaW5lciIgZm9yIG1vcmUgbm9kZXMsIGxpa2UgIi9jcHVzIgoraXMpIGlzIGFsc28gcmVxdWlyZWQgdG8gaGF2ZSBhICJjb21wYXRpYmxlIiBwcm9wZXJ0eSBpbmRpY2F0aW5nIHRoZQorc3BlY2lmaWMgaGFyZHdhcmUgYW5kIGFuIG9wdGlvbmFsIGxpc3Qgb2YgZGV2aWNlcyBpdCBpcyBmdWxseQorYmFja3dhcmRzIGNvbXBhdGlibGUgd2l0aC4KKworRmluYWxseSwgZXZlcnkgbm9kZSB0aGF0IGNhbiBiZSByZWZlcmVuY2VkIGZyb20gYSBwcm9wZXJ0eSBpbiBhbm90aGVyCitub2RlIGlzIHJlcXVpcmVkIHRvIGhhdmUgZWl0aGVyIGEgInBoYW5kbGUiIG9yIGEgImxpbnV4LHBoYW5kbGUiCitwcm9wZXJ0eS4gUmVhbCBPcGVuIEZpcm13YXJlIGltcGxlbWVudGF0aW9ucyBwcm92aWRlIGEgdW5pcXVlCisicGhhbmRsZSIgdmFsdWUgZm9yIGV2ZXJ5IG5vZGUgdGhhdCB0aGUgInByb21faW5pdCgpIiB0cmFtcG9saW5lIGNvZGUKK3R1cm5zIGludG8gImxpbnV4LHBoYW5kbGUiIHByb3BlcnRpZXMuIEhvd2V2ZXIsIHRoaXMgaXMgbWFkZSBvcHRpb25hbAoraWYgdGhlIGZsYXR0ZW5lZCBkZXZpY2UgdHJlZSBpcyB1c2VkIGRpcmVjdGx5LiBBbiBleGFtcGxlIG9mIGEgbm9kZQorcmVmZXJlbmNpbmcgYW5vdGhlciBub2RlIHZpYSAicGhhbmRsZSIgaXMgd2hlbiBsYXlpbmcgb3V0IHRoZQoraW50ZXJydXB0IHRyZWUgd2hpY2ggd2lsbCBiZSBkZXNjcmliZWQgaW4gYSBmdXJ0aGVyIHZlcnNpb24gb2YgdGhpcworZG9jdW1lbnQuCisKK1RoZSAicGhhbmRsZSIgcHJvcGVydHkgaXMgYSAzMi1iaXQgdmFsdWUgdGhhdCB1bmlxdWVseQoraWRlbnRpZmllcyBhIG5vZGUuIFlvdSBhcmUgZnJlZSB0byB1c2Ugd2hhdGV2ZXIgdmFsdWVzIG9yIHN5c3RlbSBvZgordmFsdWVzLCBpbnRlcm5hbCBwb2ludGVycywgb3Igd2hhdGV2ZXIgdG8gZ2VuZXJhdGUgdGhlc2UsIHRoZSBvbmx5CityZXF1aXJlbWVudCBpcyB0aGF0IGV2ZXJ5IG5vZGUgZm9yIHdoaWNoIHlvdSBwcm92aWRlIHRoYXQgcHJvcGVydHkgaGFzCithIHVuaXF1ZSB2YWx1ZSBmb3IgaXQuCisKK0hlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIHNpbXBsZSBkZXZpY2UtdHJlZS4gSW4gdGhpcyBleGFtcGxlLCBhbiAibyIKK2Rlc2lnbmF0ZXMgYSBub2RlIGZvbGxvd2VkIGJ5IHRoZSBub2RlIHVuaXQgbmFtZS4gUHJvcGVydGllcyBhcmUKK3ByZXNlbnRlZCB3aXRoIHRoZWlyIG5hbWUgZm9sbG93ZWQgYnkgdGhlaXIgY29udGVudC4gImNvbnRlbnQiCityZXByZXNlbnRzIGFuIEFTQ0lJIHN0cmluZyAoemVybyB0ZXJtaW5hdGVkKSB2YWx1ZSwgd2hpbGUgPGNvbnRlbnQ+CityZXByZXNlbnRzIGEgMzItYml0IHZhbHVlLCBzcGVjaWZpZWQgaW4gZGVjaW1hbCBvciBoZXhhZGVjaW1hbCAodGhlCitsYXR0ZXIgcHJlZml4ZWQgMHgpLiBUaGUgdmFyaW91cyBub2RlcyBpbiB0aGlzIGV4YW1wbGUgd2lsbCBiZQorZGlzY3Vzc2VkIGluIGEgbGF0ZXIgY2hhcHRlci4gQXQgdGhpcyBwb2ludCwgaXQgaXMgb25seSBtZWFudCB0byBnaXZlCit5b3UgYSBpZGVhIG9mIHdoYXQgYSBkZXZpY2UtdHJlZSBsb29rcyBsaWtlLiBJIGhhdmUgcHVycG9zZWZ1bGx5IGtlcHQKK3RoZSAibmFtZSIgYW5kICJsaW51eCxwaGFuZGxlIiBwcm9wZXJ0aWVzIHdoaWNoIGFyZW4ndCBuZWNlc3NhcnkgaW4KK29yZGVyIHRvIGdpdmUgeW91IGEgYmV0dGVyIGlkZWEgb2Ygd2hhdCB0aGUgdHJlZSBsb29rcyBsaWtlIGluCitwcmFjdGljZS4KKworICAvIG8gZGV2aWNlLXRyZWUKKyAgICAgIHwtIG5hbWUgPSAiZGV2aWNlLXRyZWUiCisgICAgICB8LSBtb2RlbCA9ICJNeUJvYXJkTmFtZSIKKyAgICAgIHwtIGNvbXBhdGlibGUgPSAiTXlCb2FyZEZhbWlseU5hbWUiCisgICAgICB8LSAjYWRkcmVzcy1jZWxscyA9IDwyPgorICAgICAgfC0gI3NpemUtY2VsbHMgPSA8Mj4KKyAgICAgIHwtIGxpbnV4LHBoYW5kbGUgPSA8MD4KKyAgICAgIHwKKyAgICAgIG8gY3B1cworICAgICAgfCB8IC0gbmFtZSA9ICJjcHVzIgorICAgICAgfCB8IC0gbGludXgscGhhbmRsZSA9IDwxPgorICAgICAgfCB8IC0gI2FkZHJlc3MtY2VsbHMgPSA8MT4KKyAgICAgIHwgfCAtICNzaXplLWNlbGxzID0gPDA+CisgICAgICB8IHwKKyAgICAgIHwgbyBQb3dlclBDLDk3MEAwCisgICAgICB8ICAgfC0gbmFtZSA9ICJQb3dlclBDLDk3MCIKKyAgICAgIHwgICB8LSBkZXZpY2VfdHlwZSA9ICJjcHUiCisgICAgICB8ICAgfC0gcmVnID0gPDA+CisgICAgICB8ICAgfC0gY2xvY2stZnJlcXVlbmN5ID0gPDB4NWY1ZTEwMDA+CisgICAgICB8ICAgfC0gNjQtYml0CisgICAgICB8ICAgfC0gbGludXgscGhhbmRsZSA9IDwyPgorICAgICAgfAorICAgICAgbyBtZW1vcnlAMAorICAgICAgfCB8LSBuYW1lID0gIm1lbW9yeSIKKyAgICAgIHwgfC0gZGV2aWNlX3R5cGUgPSAibWVtb3J5IgorICAgICAgfCB8LSByZWcgPSA8MHgwMDAwMDAwMCAweDAwMDAwMDAwIDB4MDAwMDAwMDAgMHgyMDAwMDAwMD4KKyAgICAgIHwgfC0gbGludXgscGhhbmRsZSA9IDwzPgorICAgICAgfAorICAgICAgbyBjaG9zZW4KKyAgICAgICAgfC0gbmFtZSA9ICJjaG9zZW4iCisgICAgICAgIHwtIGJvb3RhcmdzID0gInJvb3Q9L2Rldi9zZGEyIgorICAgICAgICB8LSBsaW51eCxwaGFuZGxlID0gPDQ+CisKK1RoaXMgdHJlZSBpcyBhbG1vc3QgYSBtaW5pbWFsIHRyZWUuIEl0IHByZXR0eSBtdWNoIGNvbnRhaW5zIHRoZQorbWluaW1hbCBzZXQgb2YgcmVxdWlyZWQgbm9kZXMgYW5kIHByb3BlcnRpZXMgdG8gYm9vdCBhIGxpbnV4IGtlcm5lbDsKK3RoYXQgaXMsIHNvbWUgYmFzaWMgbW9kZWwgaW5mb3JtYXRpb24gYXQgdGhlIHJvb3QsIHRoZSBDUFVzLCBhbmQgdGhlCitwaHlzaWNhbCBtZW1vcnkgbGF5b3V0LiAgSXQgYWxzbyBpbmNsdWRlcyBtaXNjIGluZm9ybWF0aW9uIHBhc3NlZAordGhyb3VnaCAvY2hvc2VuLCBsaWtlIGluIHRoaXMgZXhhbXBsZSwgdGhlIHBsYXRmb3JtIHR5cGUgKG1hbmRhdG9yeSkKK2FuZCB0aGUga2VybmVsIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgKG9wdGlvbmFsKS4KKworVGhlIC9jcHVzL1Bvd2VyUEMsOTcwQDAvNjQtYml0IHByb3BlcnR5IGlzIGFuIGV4YW1wbGUgb2YgYQorcHJvcGVydHkgd2l0aG91dCBhIHZhbHVlLiBBbGwgb3RoZXIgcHJvcGVydGllcyBoYXZlIGEgdmFsdWUuIFRoZQorc2lnbmlmaWNhbmNlIG9mIHRoZSAjYWRkcmVzcy1jZWxscyBhbmQgI3NpemUtY2VsbHMgcHJvcGVydGllcyB3aWxsIGJlCitleHBsYWluZWQgaW4gY2hhcHRlciBJViB3aGljaCBkZWZpbmVzIHByZWNpc2VseSB0aGUgcmVxdWlyZWQgbm9kZXMgYW5kCitwcm9wZXJ0aWVzIGFuZCB0aGVpciBjb250ZW50LgorCisKKzMpIERldmljZSB0cmVlICJzdHJ1Y3R1cmUiIGJsb2NrCisKK1RoZSBzdHJ1Y3R1cmUgb2YgdGhlIGRldmljZSB0cmVlIGlzIGEgbGluZWFyaXplZCB0cmVlIHN0cnVjdHVyZS4gVGhlCisiT0ZfRFRfQkVHSU5fTk9ERSIgdG9rZW4gc3RhcnRzIGEgbmV3IG5vZGUsIGFuZCB0aGUgIk9GX0RUX0VORF9OT0RFIgorZW5kcyB0aGF0IG5vZGUgZGVmaW5pdGlvbi4gQ2hpbGQgbm9kZXMgYXJlIHNpbXBseSBkZWZpbmVkIGJlZm9yZQorIk9GX0RUX0VORF9OT0RFIiAodGhhdCBpcyBub2RlcyB3aXRoaW4gdGhlIG5vZGUpLiBBICd0b2tlbicgaXMgYSAzMgorYml0IHZhbHVlLiBUaGUgdHJlZSBoYXMgdG8gYmUgImZpbmlzaGVkIiB3aXRoIGEgT0ZfRFRfRU5EIHRva2VuCisKK0hlcmUncyB0aGUgYmFzaWMgc3RydWN0dXJlIG9mIGEgc2luZ2xlIG5vZGU6CisKKyAgICAgKiB0b2tlbiBPRl9EVF9CRUdJTl9OT0RFICh0aGF0IGlzIDB4MDAwMDAwMDEpCisgICAgICogZm9yIHZlcnNpb24gMSB0byAzLCB0aGlzIGlzIHRoZSBub2RlIGZ1bGwgcGF0aCBhcyBhIHplcm8KKyAgICAgICB0ZXJtaW5hdGVkIHN0cmluZywgc3RhcnRpbmcgd2l0aCAiLyIuIEZvciB2ZXJzaW9uIDE2IGFuZCBsYXRlciwKKyAgICAgICB0aGlzIGlzIHRoZSBub2RlIHVuaXQgbmFtZSBvbmx5IChvciBhbiBlbXB0eSBzdHJpbmcgZm9yIHRoZQorICAgICAgIHJvb3Qgbm9kZSkKKyAgICAgKiBbYWxpZ24gZ2FwIHRvIG5leHQgNCBieXRlcyBib3VuZGFyeV0KKyAgICAgKiBmb3IgZWFjaCBwcm9wZXJ0eToKKyAgICAgICAgKiB0b2tlbiBPRl9EVF9QUk9QICh0aGF0IGlzIDB4MDAwMDAwMDMpCisgICAgICAgICogMzItYml0IHZhbHVlIG9mIHByb3BlcnR5IHZhbHVlIHNpemUgaW4gYnl0ZXMgKG9yIDAgaWYgbm8KKyAgICAgICAgICB2YWx1ZSkKKyAgICAgICAgKiAzMi1iaXQgdmFsdWUgb2Ygb2Zmc2V0IGluIHN0cmluZyBibG9jayBvZiBwcm9wZXJ0eSBuYW1lCisgICAgICAgICogcHJvcGVydHkgdmFsdWUgZGF0YSBpZiBhbnkKKyAgICAgICAgKiBbYWxpZ24gZ2FwIHRvIG5leHQgNCBieXRlcyBib3VuZGFyeV0KKyAgICAgKiBbY2hpbGQgbm9kZXMgaWYgYW55XQorICAgICAqIHRva2VuIE9GX0RUX0VORF9OT0RFICh0aGF0IGlzIDB4MDAwMDAwMDIpCisKK1NvIHRoZSBub2RlIGNvbnRlbnQgY2FuIGJlIHN1bW1hcml6ZWQgYXMgYSBzdGFydCB0b2tlbiwgYSBmdWxsIHBhdGgsCithIGxpc3Qgb2YgcHJvcGVydGllcywgYSBsaXN0IG9mIGNoaWxkIG5vZGVzLCBhbmQgYW4gZW5kIHRva2VuLiBFdmVyeQorY2hpbGQgbm9kZSBpcyBhIGZ1bGwgbm9kZSBzdHJ1Y3R1cmUgaXRzZWxmIGFzIGRlZmluZWQgYWJvdmUuCisKK05PVEU6IFRoZSBhYm92ZSBkZWZpbml0aW9uIHJlcXVpcmVzIHRoYXQgYWxsIHByb3BlcnR5IGRlZmluaXRpb25zIGZvcgorYSBwYXJ0aWN1bGFyIG5vZGUgTVVTVCBwcmVjZWRlIGFueSBzdWJub2RlIGRlZmluaXRpb25zIGZvciB0aGF0IG5vZGUuCitBbHRob3VnaCB0aGUgc3RydWN0dXJlIHdvdWxkIG5vdCBiZSBhbWJpZ3VvdXMgaWYgcHJvcGVydGllcyBhbmQKK3N1Ym5vZGVzIHdlcmUgaW50ZXJtaW5nbGVkLCB0aGUga2VybmVsIHBhcnNlciByZXF1aXJlcyB0aGF0IHRoZQorcHJvcGVydGllcyBjb21lIGZpcnN0ICh1cCB1bnRpbCBhdCBsZWFzdCAyLjYuMjIpLiAgQW55IHRvb2xzCittYW5pcHVsYXRpbmcgYSBmbGF0dGVuZWQgdHJlZSBtdXN0IHRha2UgY2FyZSB0byBwcmVzZXJ2ZSB0aGlzCitjb25zdHJhaW50LgorCis0KSBEZXZpY2UgdHJlZSAic3RyaW5ncyIgYmxvY2sKKworSW4gb3JkZXIgdG8gc2F2ZSBzcGFjZSwgcHJvcGVydHkgbmFtZXMsIHdoaWNoIGFyZSBnZW5lcmFsbHkgcmVkdW5kYW50LAorYXJlIHN0b3JlZCBzZXBhcmF0ZWx5IGluIHRoZSAic3RyaW5ncyIgYmxvY2suIFRoaXMgYmxvY2sgaXMgc2ltcGx5IHRoZQord2hvbGUgYnVuY2ggb2YgemVybyB0ZXJtaW5hdGVkIHN0cmluZ3MgZm9yIGFsbCBwcm9wZXJ0eSBuYW1lcworY29uY2F0ZW5hdGVkIHRvZ2V0aGVyLiBUaGUgZGV2aWNlLXRyZWUgcHJvcGVydHkgZGVmaW5pdGlvbnMgaW4gdGhlCitzdHJ1Y3R1cmUgYmxvY2sgd2lsbCBjb250YWluIG9mZnNldCB2YWx1ZXMgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZQorc3RyaW5ncyBibG9jay4KKworCitJSUkgLSBSZXF1aXJlZCBjb250ZW50IG9mIHRoZSBkZXZpY2UgdHJlZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworV0FSTklORzogQWxsICJsaW51eCwqIiBwcm9wZXJ0aWVzIGRlZmluZWQgaW4gdGhpcyBkb2N1bWVudCBhcHBseSBvbmx5Cit0byBhIGZsYXR0ZW5lZCBkZXZpY2UtdHJlZS4gSWYgeW91ciBwbGF0Zm9ybSB1c2VzIGEgcmVhbAoraW1wbGVtZW50YXRpb24gb2YgT3BlbiBGaXJtd2FyZSBvciBhbiBpbXBsZW1lbnRhdGlvbiBjb21wYXRpYmxlIHdpdGgKK3RoZSBPcGVuIEZpcm13YXJlIGNsaWVudCBpbnRlcmZhY2UsIHRob3NlIHByb3BlcnRpZXMgd2lsbCBiZSBjcmVhdGVkCitieSB0aGUgdHJhbXBvbGluZSBjb2RlIGluIHRoZSBrZXJuZWwncyBwcm9tX2luaXQoKSBmaWxlLiBGb3IgZXhhbXBsZSwKK3RoYXQncyB3aGVyZSB5b3UnbGwgaGF2ZSB0byBhZGQgY29kZSB0byBkZXRlY3QgeW91ciBib2FyZCBtb2RlbCBhbmQKK3NldCB0aGUgcGxhdGZvcm0gbnVtYmVyLiBIb3dldmVyLCB3aGVuIHVzaW5nIHRoZSBmbGF0dGVuZWQgZGV2aWNlLXRyZWUKK2VudHJ5IHBvaW50LCB0aGVyZSBpcyBubyBwcm9tX2luaXQoKSBwYXNzLCBhbmQgdGh1cyB5b3UgaGF2ZSB0bworcHJvdmlkZSB0aG9zZSBwcm9wZXJ0aWVzIHlvdXJzZWxmLgorCisKKzEpIE5vdGUgYWJvdXQgY2VsbHMgYW5kIGFkZHJlc3MgcmVwcmVzZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGdlbmVyYWwgcnVsZSBpcyBkb2N1bWVudGVkIGluIHRoZSB2YXJpb3VzIE9wZW4gRmlybXdhcmUKK2RvY3VtZW50YXRpb25zLiBJZiB5b3UgY2hvb3NlIHRvIGRlc2NyaWJlIGEgYnVzIHdpdGggdGhlIGRldmljZS10cmVlCithbmQgdGhlcmUgZXhpc3QgYW4gT0YgYnVzIGJpbmRpbmcsIHRoZW4geW91IHNob3VsZCBmb2xsb3cgdGhlCitzcGVjaWZpY2F0aW9uLiBIb3dldmVyLCB0aGUga2VybmVsIGRvZXMgbm90IHJlcXVpcmUgZXZlcnkgc2luZ2xlCitkZXZpY2Ugb3IgYnVzIHRvIGJlIGRlc2NyaWJlZCBieSB0aGUgZGV2aWNlIHRyZWUuCisKK0luIGdlbmVyYWwsIHRoZSBmb3JtYXQgb2YgYW4gYWRkcmVzcyBmb3IgYSBkZXZpY2UgaXMgZGVmaW5lZCBieSB0aGUKK3BhcmVudCBidXMgdHlwZSwgYmFzZWQgb24gdGhlICNhZGRyZXNzLWNlbGxzIGFuZCAjc2l6ZS1jZWxscworcHJvcGVydGllcy4gIE5vdGUgdGhhdCB0aGUgcGFyZW50J3MgcGFyZW50IGRlZmluaXRpb25zIG9mICNhZGRyZXNzLWNlbGxzCithbmQgI3NpemUtY2VsbHMgYXJlIG5vdCBpbmhlcml0ZWQgc28gZXZlcnkgbm9kZSB3aXRoIGNoaWxkcmVuIG11c3Qgc3BlY2lmeQordGhlbS4gIFRoZSBrZXJuZWwgcmVxdWlyZXMgdGhlIHJvb3Qgbm9kZSB0byBoYXZlIHRob3NlIHByb3BlcnRpZXMgZGVmaW5pbmcKK2FkZHJlc3NlcyBmb3JtYXQgZm9yIGRldmljZXMgZGlyZWN0bHkgbWFwcGVkIG9uIHRoZSBwcm9jZXNzb3IgYnVzLgorCitUaG9zZSAyIHByb3BlcnRpZXMgZGVmaW5lICdjZWxscycgZm9yIHJlcHJlc2VudGluZyBhbiBhZGRyZXNzIGFuZCBhCitzaXplLiBBICJjZWxsIiBpcyBhIDMyLWJpdCBudW1iZXIuIEZvciBleGFtcGxlLCBpZiBib3RoIGNvbnRhaW4gMgorbGlrZSB0aGUgZXhhbXBsZSB0cmVlIGdpdmVuIGFib3ZlLCB0aGVuIGFuIGFkZHJlc3MgYW5kIGEgc2l6ZSBhcmUgYm90aAorY29tcG9zZWQgb2YgMiBjZWxscywgYW5kIGVhY2ggaXMgYSA2NC1iaXQgbnVtYmVyIChjZWxscyBhcmUKK2NvbmNhdGVuYXRlZCBhbmQgZXhwZWN0ZWQgdG8gYmUgaW4gYmlnIGVuZGlhbiBmb3JtYXQpLiBBbm90aGVyIGV4YW1wbGUKK2lzIHRoZSB3YXkgQXBwbGUgZmlybXdhcmUgZGVmaW5lcyB0aGVtLCB3aXRoIDIgY2VsbHMgZm9yIGFuIGFkZHJlc3MKK2FuZCBvbmUgY2VsbCBmb3IgYSBzaXplLiAgTW9zdCAzMi1iaXQgaW1wbGVtZW50YXRpb25zIHNob3VsZCBkZWZpbmUKKyNhZGRyZXNzLWNlbGxzIGFuZCAjc2l6ZS1jZWxscyB0byAxLCB3aGljaCByZXByZXNlbnRzIGEgMzItYml0IHZhbHVlLgorU29tZSAzMi1iaXQgcHJvY2Vzc29ycyBhbGxvdyBmb3IgcGh5c2ljYWwgYWRkcmVzc2VzIGdyZWF0ZXIgdGhhbiAzMgorYml0czsgdGhlc2UgcHJvY2Vzc29ycyBzaG91bGQgZGVmaW5lICNhZGRyZXNzLWNlbGxzIGFzIDIuCisKKyJyZWciIHByb3BlcnRpZXMgYXJlIGFsd2F5cyBhIHR1cGxlIG9mIHRoZSB0eXBlICJhZGRyZXNzIHNpemUiIHdoZXJlCit0aGUgbnVtYmVyIG9mIGNlbGxzIG9mIGFkZHJlc3MgYW5kIHNpemUgaXMgc3BlY2lmaWVkIGJ5IHRoZSBidXMKKyNhZGRyZXNzLWNlbGxzIGFuZCAjc2l6ZS1jZWxscy4gV2hlbiBhIGJ1cyBzdXBwb3J0cyB2YXJpb3VzIGFkZHJlc3MKK3NwYWNlcyBhbmQgb3RoZXIgZmxhZ3MgcmVsYXRpdmUgdG8gYSBnaXZlbiBhZGRyZXNzIGFsbG9jYXRpb24gKGxpa2UKK3ByZWZldGNoYWJsZSwgZXRjLi4uKSB0aG9zZSBmbGFncyBhcmUgdXN1YWxseSBhZGRlZCB0byB0aGUgdG9wIGxldmVsCitiaXRzIG9mIHRoZSBwaHlzaWNhbCBhZGRyZXNzLiBGb3IgZXhhbXBsZSwgYSBQQ0kgcGh5c2ljYWwgYWRkcmVzcyBpcworbWFkZSBvZiAzIGNlbGxzLCB0aGUgYm90dG9tIHR3byBjb250YWluaW5nIHRoZSBhY3R1YWwgYWRkcmVzcyBpdHNlbGYKK3doaWxlIHRoZSB0b3AgY2VsbCBjb250YWlucyBhZGRyZXNzIHNwYWNlIGluZGljYXRpb24sIGZsYWdzLCBhbmQgcGNpCitidXMgJiBkZXZpY2UgbnVtYmVycy4KKworRm9yIGJ1c2VzIHRoYXQgc3VwcG9ydCBkeW5hbWljIGFsbG9jYXRpb24sIGl0J3MgdGhlIGFjY2VwdGVkIHByYWN0aWNlCit0byB0aGVuIG5vdCBwcm92aWRlIHRoZSBhZGRyZXNzIGluICJyZWciIChrZWVwIGl0IDApIHRob3VnaCB3aGlsZQorcHJvdmlkaW5nIGEgZmxhZyBpbmRpY2F0aW5nIHRoZSBhZGRyZXNzIGlzIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCwgYW5kCit0aGVuLCB0byBwcm92aWRlIGEgc2VwYXJhdGUgImFzc2lnbmVkLWFkZHJlc3NlcyIgcHJvcGVydHkgdGhhdAorY29udGFpbnMgdGhlIGZ1bGx5IGFsbG9jYXRlZCBhZGRyZXNzZXMuIFNlZSB0aGUgUENJIE9GIGJpbmRpbmdzIGZvcgorZGV0YWlscy4KKworSW4gZ2VuZXJhbCwgYSBzaW1wbGUgYnVzIHdpdGggbm8gYWRkcmVzcyBzcGFjZSBiaXRzIGFuZCBubyBkeW5hbWljCithbGxvY2F0aW9uIGlzIHByZWZlcnJlZCBpZiBpdCByZWZsZWN0cyB5b3VyIGhhcmR3YXJlLCBhcyB0aGUgZXhpc3RpbmcKK2tlcm5lbCBhZGRyZXNzIHBhcnNpbmcgZnVuY3Rpb25zIHdpbGwgd29yayBvdXQgb2YgdGhlIGJveC4gSWYgeW91CitkZWZpbmUgYSBidXMgdHlwZSB3aXRoIGEgbW9yZSBjb21wbGV4IGFkZHJlc3MgZm9ybWF0LCBpbmNsdWRpbmcgdGhpbmdzCitsaWtlIGFkZHJlc3Mgc3BhY2UgYml0cywgeW91J2xsIGhhdmUgdG8gYWRkIGEgYnVzIHRyYW5zbGF0b3IgdG8gdGhlCitwcm9tX3BhcnNlLmMgZmlsZSBvZiB0aGUgcmVjZW50IGtlcm5lbHMgZm9yIHlvdXIgYnVzIHR5cGUuCisKK1RoZSAicmVnIiBwcm9wZXJ0eSBvbmx5IGRlZmluZXMgYWRkcmVzc2VzIGFuZCBzaXplcyAoaWYgI3NpemUtY2VsbHMgaXMKK25vbi0wKSB3aXRoaW4gYSBnaXZlbiBidXMuIEluIG9yZGVyIHRvIHRyYW5zbGF0ZSBhZGRyZXNzZXMgdXB3YXJkCisodGhhdCBpcyBpbnRvIHBhcmVudCBidXMgYWRkcmVzc2VzLCBhbmQgcG9zc2libHkgaW50byBDUFUgcGh5c2ljYWwKK2FkZHJlc3NlcyksIGFsbCBidXNlcyBtdXN0IGNvbnRhaW4gYSAicmFuZ2VzIiBwcm9wZXJ0eS4gSWYgdGhlCisicmFuZ2VzIiBwcm9wZXJ0eSBpcyBtaXNzaW5nIGF0IGEgZ2l2ZW4gbGV2ZWwsIGl0J3MgYXNzdW1lZCB0aGF0Cit0cmFuc2xhdGlvbiBpc24ndCBwb3NzaWJsZSwgaS5lLiwgdGhlIHJlZ2lzdGVycyBhcmUgbm90IHZpc2libGUgb24gdGhlCitwYXJlbnQgYnVzLiAgVGhlIGZvcm1hdCBvZiB0aGUgInJhbmdlcyIgcHJvcGVydHkgZm9yIGEgYnVzIGlzIGEgbGlzdAorb2Y6CisKKwlidXMgYWRkcmVzcywgcGFyZW50IGJ1cyBhZGRyZXNzLCBzaXplCisKKyJidXMgYWRkcmVzcyIgaXMgaW4gdGhlIGZvcm1hdCBvZiB0aGUgYnVzIHRoaXMgYnVzIG5vZGUgaXMgZGVmaW5pbmcsCit0aGF0IGlzLCBmb3IgYSBQQ0kgYnJpZGdlLCBpdCB3b3VsZCBiZSBhIFBDSSBhZGRyZXNzLiBUaHVzLCAoYnVzCithZGRyZXNzLCBzaXplKSBkZWZpbmVzIGEgcmFuZ2Ugb2YgYWRkcmVzc2VzIGZvciBjaGlsZCBkZXZpY2VzLiAicGFyZW50CitidXMgYWRkcmVzcyIgaXMgaW4gdGhlIGZvcm1hdCBvZiB0aGUgcGFyZW50IGJ1cyBvZiB0aGlzIGJ1cy4gRm9yCitleGFtcGxlLCBmb3IgYSBQQ0kgaG9zdCBjb250cm9sbGVyLCB0aGF0IHdvdWxkIGJlIGEgQ1BVIGFkZHJlc3MuIEZvciBhCitQQ0k8LT5JU0EgYnJpZGdlLCB0aGF0IHdvdWxkIGJlIGEgUENJIGFkZHJlc3MuIEl0IGRlZmluZXMgdGhlIGJhc2UKK2FkZHJlc3MgaW4gdGhlIHBhcmVudCBidXMgd2hlcmUgdGhlIGJlZ2lubmluZyBvZiB0aGF0IHJhbmdlIGlzIG1hcHBlZC4KKworRm9yIG5ldyA2NC1iaXQgYm9hcmQgc3VwcG9ydCwgSSByZWNvbW1lbmQgZWl0aGVyIHRoZSAyLzIgZm9ybWF0IG9yCitBcHBsZSdzIDIvMSBmb3JtYXQgd2hpY2ggaXMgc2xpZ2h0bHkgbW9yZSBjb21wYWN0IHNpbmNlIHNpemVzIHVzdWFsbHkKK2ZpdCBpbiBhIHNpbmdsZSAzMi1iaXQgd29yZC4gICBOZXcgMzItYml0IGJvYXJkIHN1cHBvcnQgc2hvdWxkIHVzZSBhCisxLzEgZm9ybWF0LCB1bmxlc3MgdGhlIHByb2Nlc3NvciBzdXBwb3J0cyBwaHlzaWNhbCBhZGRyZXNzZXMgZ3JlYXRlcgordGhhbiAzMi1iaXRzLCBpbiB3aGljaCBjYXNlIGEgMi8xIGZvcm1hdCBpcyByZWNvbW1lbmRlZC4KKworQWx0ZXJuYXRpdmVseSwgdGhlICJyYW5nZXMiIHByb3BlcnR5IG1heSBiZSBlbXB0eSwgaW5kaWNhdGluZyB0aGF0IHRoZQorcmVnaXN0ZXJzIGFyZSB2aXNpYmxlIG9uIHRoZSBwYXJlbnQgYnVzIHVzaW5nIGFuIGlkZW50aXR5IG1hcHBpbmcKK3RyYW5zbGF0aW9uLiAgSW4gb3RoZXIgd29yZHMsIHRoZSBwYXJlbnQgYnVzIGFkZHJlc3Mgc3BhY2UgaXMgdGhlIHNhbWUKK2FzIHRoZSBjaGlsZCBidXMgYWRkcmVzcyBzcGFjZS4KKworMikgTm90ZSBhYm91dCAiY29tcGF0aWJsZSIgcHJvcGVydGllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGVzZSBwcm9wZXJ0aWVzIGFyZSBvcHRpb25hbCwgYnV0IHJlY29tbWVuZGVkIGluIGRldmljZXMgYW5kIHRoZSByb290Citub2RlLiBUaGUgZm9ybWF0IG9mIGEgImNvbXBhdGlibGUiIHByb3BlcnR5IGlzIGEgbGlzdCBvZiBjb25jYXRlbmF0ZWQKK3plcm8gdGVybWluYXRlZCBzdHJpbmdzLiBUaGV5IGFsbG93IGEgZGV2aWNlIHRvIGV4cHJlc3MgaXRzCitjb21wYXRpYmlsaXR5IHdpdGggYSBmYW1pbHkgb2Ygc2ltaWxhciBkZXZpY2VzLCBpbiBzb21lIGNhc2VzLAorYWxsb3dpbmcgYSBzaW5nbGUgZHJpdmVyIHRvIG1hdGNoIGFnYWluc3Qgc2V2ZXJhbCBkZXZpY2VzIHJlZ2FyZGxlc3MKK29mIHRoZWlyIGFjdHVhbCBuYW1lcy4KKworMykgTm90ZSBhYm91dCAibmFtZSIgcHJvcGVydGllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaGlsZSBlYXJsaWVyIHVzZXJzIG9mIE9wZW4gRmlybXdhcmUgbGlrZSBPbGRXb3JsZCBtYWNpbnRvc2hlcyB0ZW5kZWQKK3RvIHVzZSB0aGUgYWN0dWFsIGRldmljZSBuYW1lIGZvciB0aGUgIm5hbWUiIHByb3BlcnR5LCBpdCdzIG5vd2FkYXlzCitjb25zaWRlcmVkIGEgZ29vZCBwcmFjdGljZSB0byB1c2UgYSBuYW1lIHRoYXQgaXMgY2xvc2VyIHRvIHRoZSBkZXZpY2UKK2NsYXNzIChvZnRlbiBlcXVhbCB0byBkZXZpY2VfdHlwZSkuIEZvciBleGFtcGxlLCBub3dhZGF5cywgRXRoZXJuZXQKK2NvbnRyb2xsZXJzIGFyZSBuYW1lZCAiZXRoZXJuZXQiLCBhbiBhZGRpdGlvbmFsICJtb2RlbCIgcHJvcGVydHkKK2RlZmluaW5nIHByZWNpc2VseSB0aGUgY2hpcCB0eXBlL21vZGVsLCBhbmQgImNvbXBhdGlibGUiIHByb3BlcnR5CitkZWZpbmluZyB0aGUgZmFtaWx5IGluIGNhc2UgYSBzaW5nbGUgZHJpdmVyIGNhbiBkcml2ZXIgbW9yZSB0aGFuIG9uZQorb2YgdGhlc2UgY2hpcHMuIEhvd2V2ZXIsIHRoZSBrZXJuZWwgZG9lc24ndCBnZW5lcmFsbHkgcHV0IGFueQorcmVzdHJpY3Rpb24gb24gdGhlICJuYW1lIiBwcm9wZXJ0eTsgaXQgaXMgc2ltcGx5IGNvbnNpZGVyZWQgZ29vZAorcHJhY3RpY2UgdG8gZm9sbG93IHRoZSBzdGFuZGFyZCBhbmQgaXRzIGV2b2x1dGlvbnMgYXMgY2xvc2VseSBhcworcG9zc2libGUuCisKK05vdGUgYWxzbyB0aGF0IHRoZSBuZXcgZm9ybWF0IHZlcnNpb24gMTYgbWFrZXMgdGhlICJuYW1lIiBwcm9wZXJ0eQorb3B0aW9uYWwuIElmIGl0J3MgYWJzZW50IGZvciBhIG5vZGUsIHRoZW4gdGhlIG5vZGUncyB1bml0IG5hbWUgaXMgdGhlbgordXNlZCB0byByZWNvbnN0cnVjdCB0aGUgbmFtZS4gVGhhdCBpcywgdGhlIHBhcnQgb2YgdGhlIHVuaXQgbmFtZQorYmVmb3JlIHRoZSAiQCIgc2lnbiBpcyB1c2VkIChvciB0aGUgZW50aXJlIHVuaXQgbmFtZSBpZiBubyAiQCIgc2lnbgoraXMgcHJlc2VudCkuCisKKzQpIE5vdGUgYWJvdXQgbm9kZSBhbmQgcHJvcGVydHkgbmFtZXMgYW5kIGNoYXJhY3RlciBzZXQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hpbGUgT3BlbiBGaXJtd2FyZSBwcm92aWRlcyBtb3JlIGZsZXhpYmxlIHVzYWdlIG9mIDg4NTktMSwgdGhpcworc3BlY2lmaWNhdGlvbiBlbmZvcmNlcyBtb3JlIHN0cmljdCBydWxlcy4gTm9kZXMgYW5kIHByb3BlcnRpZXMgc2hvdWxkCitiZSBjb21wcmlzZWQgb25seSBvZiBBU0NJSSBjaGFyYWN0ZXJzICdhJyB0byAneicsICcwJyB0bworJzknLCAnLCcsICcuJywgJ18nLCAnKycsICcjJywgJz8nLCBhbmQgJy0nLiBOb2RlIG5hbWVzIGFkZGl0aW9uYWxseQorYWxsb3cgdXBwZXJjYXNlIGNoYXJhY3RlcnMgJ0EnIHRvICdaJyAocHJvcGVydHkgbmFtZXMgc2hvdWxkIGJlCitsb3dlcmNhc2UuIFRoZSBmYWN0IHRoYXQgdmVuZG9ycyBsaWtlIEFwcGxlIGRvbid0IHJlc3BlY3QgdGhpcyBydWxlIGlzCitpcnJlbGV2YW50IGhlcmUpLiBBZGRpdGlvbmFsbHksIG5vZGUgYW5kIHByb3BlcnR5IG5hbWVzIHNob3VsZCBhbHdheXMKK2JlZ2luIHdpdGggYSBjaGFyYWN0ZXIgaW4gdGhlIHJhbmdlICdhJyB0byAneicgKG9yICdBJyB0byAnWicgZm9yIG5vZGUKK25hbWVzKS4KKworVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgZm9yIGJvdGggbm9kZXMgYW5kIHByb3BlcnR5IG5hbWVzCitpcyAzMS4gSW4gdGhlIGNhc2Ugb2Ygbm9kZSBuYW1lcywgdGhpcyBpcyBvbmx5IHRoZSBsZWZ0bW9zdCBwYXJ0IG9mCithIHVuaXQgbmFtZSAodGhlIHB1cmUgIm5hbWUiIHByb3BlcnR5KSwgaXQgZG9lc24ndCBpbmNsdWRlIHRoZSB1bml0CithZGRyZXNzIHdoaWNoIGNhbiBleHRlbmQgYmV5b25kIHRoYXQgbGltaXQuCisKKworNSkgUmVxdWlyZWQgbm9kZXMgYW5kIHByb3BlcnRpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFRoZXNlIGFyZSBhbGwgdGhhdCBhcmUgY3VycmVudGx5IHJlcXVpcmVkLiBIb3dldmVyLCBpdCBpcyBzdHJvbmdseQorICByZWNvbW1lbmRlZCB0aGF0IHlvdSBleHBvc2UgUENJIGhvc3QgYnJpZGdlcyBhcyBkb2N1bWVudGVkIGluIHRoZQorICBQQ0kgYmluZGluZyB0byBPcGVuIEZpcm13YXJlLCBhbmQgeW91ciBpbnRlcnJ1cHQgdHJlZSBhcyBkb2N1bWVudGVkCisgIGluIE9GIGludGVycnVwdCB0cmVlIHNwZWNpZmljYXRpb24uCisKKyAgYSkgVGhlIHJvb3Qgbm9kZQorCisgIFRoZSByb290IG5vZGUgcmVxdWlyZXMgc29tZSBwcm9wZXJ0aWVzIHRvIGJlIHByZXNlbnQ6CisKKyAgICAtIG1vZGVsIDogdGhpcyBpcyB5b3VyIGJvYXJkIG5hbWUvbW9kZWwKKyAgICAtICNhZGRyZXNzLWNlbGxzIDogYWRkcmVzcyByZXByZXNlbnRhdGlvbiBmb3IgInJvb3QiIGRldmljZXMKKyAgICAtICNzaXplLWNlbGxzOiB0aGUgc2l6ZSByZXByZXNlbnRhdGlvbiBmb3IgInJvb3QiIGRldmljZXMKKyAgICAtIGNvbXBhdGlibGUgOiB0aGUgYm9hcmQgImZhbWlseSIgZ2VuZXJhbGx5IGZpbmRzIGl0cyB3YXkgaGVyZSwKKyAgICAgIGZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSAyIGJvYXJkIG1vZGVscyB3aXRoIGEgc2ltaWxhciBsYXlvdXQsCisgICAgICB0aGF0IHR5cGljYWxseSBnZXQgZHJpdmVuIGJ5IHRoZSBzYW1lIHBsYXRmb3JtIGNvZGUgaW4gdGhlCisgICAgICBrZXJuZWwsIHlvdSB3b3VsZCBzcGVjaWZ5IHRoZSBleGFjdCBib2FyZCBtb2RlbCBpbiB0aGUKKyAgICAgIGNvbXBhdGlibGUgcHJvcGVydHkgZm9sbG93ZWQgYnkgYW4gZW50cnkgdGhhdCByZXByZXNlbnRzIHRoZSBTb0MKKyAgICAgIG1vZGVsLgorCisgIFRoZSByb290IG5vZGUgaXMgYWxzbyBnZW5lcmFsbHkgd2hlcmUgeW91IGFkZCBhZGRpdGlvbmFsIHByb3BlcnRpZXMKKyAgc3BlY2lmaWMgdG8geW91ciBib2FyZCBsaWtlIHRoZSBzZXJpYWwgbnVtYmVyIGlmIGFueSwgdGhhdCBzb3J0IG9mCisgIHRoaW5nLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IGlmIHlvdSBhZGQgYW55ICJjdXN0b20iIHByb3BlcnR5IHdob3NlCisgIG5hbWUgbWF5IGNsYXNoIHdpdGggc3RhbmRhcmQgZGVmaW5lZCBvbmVzLCB5b3UgcHJlZml4IHRoZW0gd2l0aCB5b3VyCisgIHZlbmRvciBuYW1lIGFuZCBhIGNvbW1hLgorCisgIEFkZGl0aW9uYWwgcHJvcGVydGllcyBmb3IgdGhlIHJvb3Qgbm9kZToKKworICAgIC0gc2VyaWFsLW51bWJlciA6IGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZGV2aWNlJ3Mgc2VyaWFsIG51bWJlcgorCisgIGIpIFRoZSAvY3B1cyBub2RlCisKKyAgVGhpcyBub2RlIGlzIHRoZSBwYXJlbnQgb2YgYWxsIGluZGl2aWR1YWwgQ1BVIG5vZGVzLiBJdCBkb2Vzbid0CisgIGhhdmUgYW55IHNwZWNpZmljIHJlcXVpcmVtZW50cywgdGhvdWdoIGl0J3MgZ2VuZXJhbGx5IGdvb2QgcHJhY3RpY2UKKyAgdG8gaGF2ZSBhdCBsZWFzdDoKKworICAgICAgICAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSA8MDAwMDAwMDE+CisgICAgICAgICAgICAgICAjc2l6ZS1jZWxscyAgICA9IDwwMDAwMDAwMD4KKworICBUaGlzIGRlZmluZXMgdGhhdCB0aGUgImFkZHJlc3MiIGZvciBhIENQVSBpcyBhIHNpbmdsZSBjZWxsLCBhbmQgaGFzCisgIG5vIG1lYW5pbmdmdWwgc2l6ZS4gVGhpcyBpcyBub3QgbmVjZXNzYXJ5IGJ1dCB0aGUga2VybmVsIHdpbGwgYXNzdW1lCisgIHRoYXQgZm9ybWF0IHdoZW4gcmVhZGluZyB0aGUgInJlZyIgcHJvcGVydGllcyBvZiBhIENQVSBub2RlLCBzZWUKKyAgYmVsb3cKKworICBjKSBUaGUgL2NwdXMvKiBub2RlcworCisgIFNvIHVuZGVyIC9jcHVzLCB5b3UgYXJlIHN1cHBvc2VkIHRvIGNyZWF0ZSBhIG5vZGUgZm9yIGV2ZXJ5IENQVSBvbgorICB0aGUgbWFjaGluZS4gVGhlcmUgaXMgbm8gc3BlY2lmaWMgcmVzdHJpY3Rpb24gb24gdGhlIG5hbWUgb2YgdGhlCisgIENQVSwgdGhvdWdoIGl0J3MgY29tbW9uIHRvIGNhbGwgaXQgPGFyY2hpdGVjdHVyZT4sPGNvcmU+LiBGb3IKKyAgZXhhbXBsZSwgQXBwbGUgdXNlcyBQb3dlclBDLEc1IHdoaWxlIElCTSB1c2VzIFBvd2VyUEMsOTcwRlguCisgIEhvd2V2ZXIsIHRoZSBHZW5lcmljIE5hbWVzIGNvbnZlbnRpb24gc3VnZ2VzdHMgdGhhdCBpdCB3b3VsZCBiZQorICBiZXR0ZXIgdG8gc2ltcGx5IHVzZSAnY3B1JyBmb3IgZWFjaCBjcHUgbm9kZSBhbmQgdXNlIHRoZSBjb21wYXRpYmxlCisgIHByb3BlcnR5IHRvIGlkZW50aWZ5IHRoZSBzcGVjaWZpYyBjcHUgY29yZS4KKworICBSZXF1aXJlZCBwcm9wZXJ0aWVzOgorCisgICAgLSBkZXZpY2VfdHlwZSA6IGhhcyB0byBiZSAiY3B1IgorICAgIC0gcmVnIDogVGhpcyBpcyB0aGUgcGh5c2ljYWwgQ1BVIG51bWJlciwgaXQncyBhIHNpbmdsZSAzMi1iaXQgY2VsbAorICAgICAgYW5kIGlzIGFsc28gdXNlZCBhcy1pcyBhcyB0aGUgdW5pdCBudW1iZXIgZm9yIGNvbnN0cnVjdGluZyB0aGUKKyAgICAgIHVuaXQgbmFtZSBpbiB0aGUgZnVsbCBwYXRoLiBGb3IgZXhhbXBsZSwgd2l0aCAyIENQVXMsIHlvdSB3b3VsZAorICAgICAgaGF2ZSB0aGUgZnVsbCBwYXRoOgorICAgICAgICAvY3B1cy9Qb3dlclBDLDk3MEZYQDAKKyAgICAgICAgL2NwdXMvUG93ZXJQQyw5NzBGWEAxCisgICAgICAodW5pdCBhZGRyZXNzZXMgZG8gbm90IHJlcXVpcmUgbGVhZGluZyB6ZXJvZXMpCisgICAgLSBkLWNhY2hlLWJsb2NrLXNpemUgOiBvbmUgY2VsbCwgTDEgZGF0YSBjYWNoZSBibG9jayBzaXplIGluIGJ5dGVzICgqKQorICAgIC0gaS1jYWNoZS1ibG9jay1zaXplIDogb25lIGNlbGwsIEwxIGluc3RydWN0aW9uIGNhY2hlIGJsb2NrIHNpemUgaW4KKyAgICAgIGJ5dGVzCisgICAgLSBkLWNhY2hlLXNpemUgOiBvbmUgY2VsbCwgc2l6ZSBvZiBMMSBkYXRhIGNhY2hlIGluIGJ5dGVzCisgICAgLSBpLWNhY2hlLXNpemUgOiBvbmUgY2VsbCwgc2l6ZSBvZiBMMSBpbnN0cnVjdGlvbiBjYWNoZSBpbiBieXRlcworCisoKikgVGhlIGNhY2hlICJibG9jayIgc2l6ZSBpcyB0aGUgc2l6ZSBvbiB3aGljaCB0aGUgY2FjaGUgbWFuYWdlbWVudAoraW5zdHJ1Y3Rpb25zIG9wZXJhdGUuIEhpc3RvcmljYWxseSwgdGhpcyBkb2N1bWVudCB1c2VkIHRoZSBjYWNoZQorImxpbmUiIHNpemUgaGVyZSB3aGljaCBpcyBpbmNvcnJlY3QuIFRoZSBrZXJuZWwgd2lsbCBwcmVmZXIgdGhlIGNhY2hlCitibG9jayBzaXplIGFuZCB3aWxsIGZhbGxiYWNrIHRvIGNhY2hlIGxpbmUgc2l6ZSBmb3IgYmFja3dhcmQKK2NvbXBhdGliaWxpdHkuCisKKyAgUmVjb21tZW5kZWQgcHJvcGVydGllczoKKworICAgIC0gdGltZWJhc2UtZnJlcXVlbmN5IDogYSBjZWxsIGluZGljYXRpbmcgdGhlIGZyZXF1ZW5jeSBvZiB0aGUKKyAgICAgIHRpbWViYXNlIGluIEh6LiBUaGlzIGlzIG5vdCBkaXJlY3RseSB1c2VkIGJ5IHRoZSBnZW5lcmljIGNvZGUsCisgICAgICBidXQgeW91IGFyZSB3ZWxjb21lIHRvIGNvcHkvcGFzdGUgdGhlIHBTZXJpZXMgY29kZSBmb3Igc2V0dGluZworICAgICAgdGhlIGtlcm5lbCB0aW1lYmFzZS9kZWNyZW1lbnRlciBjYWxpYnJhdGlvbiBiYXNlZCBvbiB0aGlzCisgICAgICB2YWx1ZS4KKyAgICAtIGNsb2NrLWZyZXF1ZW5jeSA6IGEgY2VsbCBpbmRpY2F0aW5nIHRoZSBDUFUgY29yZSBjbG9jayBmcmVxdWVuY3kKKyAgICAgIGluIEh6LiBBIG5ldyBwcm9wZXJ0eSB3aWxsIGJlIGRlZmluZWQgZm9yIDY0LWJpdCB2YWx1ZXMsIGJ1dCBpZgorICAgICAgeW91ciBmcmVxdWVuY3kgaXMgPCA0R2h6LCBvbmUgY2VsbCBpcyBlbm91Z2guIEhlcmUgYXMgd2VsbCBhcworICAgICAgZm9yIHRoZSBhYm92ZSwgdGhlIGNvbW1vbiBjb2RlIGRvZXNuJ3QgdXNlIHRoYXQgcHJvcGVydHksIGJ1dAorICAgICAgeW91IGFyZSB3ZWxjb21lIHRvIHJlLXVzZSB0aGUgcFNlcmllcyBvciBNYXBsZSBvbmUuIEEgZnV0dXJlCisgICAgICBrZXJuZWwgdmVyc2lvbiBtaWdodCBwcm92aWRlIGEgY29tbW9uIGZ1bmN0aW9uIGZvciB0aGlzLgorICAgIC0gZC1jYWNoZS1saW5lLXNpemUgOiBvbmUgY2VsbCwgTDEgZGF0YSBjYWNoZSBsaW5lIHNpemUgaW4gYnl0ZXMKKyAgICAgIGlmIGRpZmZlcmVudCBmcm9tIHRoZSBibG9jayBzaXplCisgICAgLSBpLWNhY2hlLWxpbmUtc2l6ZSA6IG9uZSBjZWxsLCBMMSBpbnN0cnVjdGlvbiBjYWNoZSBsaW5lIHNpemUgaW4KKyAgICAgIGJ5dGVzIGlmIGRpZmZlcmVudCBmcm9tIHRoZSBibG9jayBzaXplCisKKyAgWW91IGFyZSB3ZWxjb21lIHRvIGFkZCBhbnkgcHJvcGVydHkgeW91IGZpbmQgcmVsZXZhbnQgdG8geW91ciBib2FyZCwKKyAgbGlrZSBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZSBtZWNoYW5pc20gdXNlZCB0byBzb2Z0LXJlc2V0IHRoZQorICBDUFVzLiBGb3IgZXhhbXBsZSwgQXBwbGUgcHV0cyB0aGUgR1BJTyBudW1iZXIgZm9yIENQVSBzb2Z0IHJlc2V0CisgIGxpbmVzIGluIHRoZXJlIGFzIGEgInNvZnQtcmVzZXQiIHByb3BlcnR5IHNpbmNlIHRoZXkgc3RhcnQgc2Vjb25kYXJ5CisgIENQVXMgYnkgc29mdC1yZXNldHRpbmcgdGhlbS4KKworCisgIGQpIHRoZSAvbWVtb3J5IG5vZGUocykKKworICBUbyBkZWZpbmUgdGhlIHBoeXNpY2FsIG1lbW9yeSBsYXlvdXQgb2YgeW91ciBib2FyZCwgeW91IHNob3VsZAorICBjcmVhdGUgb25lIG9yIG1vcmUgbWVtb3J5IG5vZGUocykuIFlvdSBjYW4gZWl0aGVyIGNyZWF0ZSBhIHNpbmdsZQorICBub2RlIHdpdGggYWxsIG1lbW9yeSByYW5nZXMgaW4gaXRzIHJlZyBwcm9wZXJ0eSwgb3IgeW91IGNhbiBjcmVhdGUKKyAgc2V2ZXJhbCBub2RlcywgYXMgeW91IHdpc2guIFRoZSB1bml0IGFkZHJlc3MgKEAgcGFydCkgdXNlZCBmb3IgdGhlCisgIGZ1bGwgcGF0aCBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgZmlyc3QgcmFuZ2Ugb2YgbWVtb3J5IGRlZmluZWQgYnkgYQorICBnaXZlbiBub2RlLiBJZiB5b3UgdXNlIGEgc2luZ2xlIG1lbW9yeSBub2RlLCB0aGlzIHdpbGwgdHlwaWNhbGx5IGJlCisgIEAwLgorCisgIFJlcXVpcmVkIHByb3BlcnRpZXM6CisKKyAgICAtIGRldmljZV90eXBlIDogaGFzIHRvIGJlICJtZW1vcnkiCisgICAgLSByZWcgOiBUaGlzIHByb3BlcnR5IGNvbnRhaW5zIGFsbCB0aGUgcGh5c2ljYWwgbWVtb3J5IHJhbmdlcyBvZgorICAgICAgeW91ciBib2FyZC4gSXQncyBhIGxpc3Qgb2YgYWRkcmVzc2VzL3NpemVzIGNvbmNhdGVuYXRlZAorICAgICAgdG9nZXRoZXIsIHdpdGggdGhlIG51bWJlciBvZiBjZWxscyBvZiBlYWNoIGRlZmluZWQgYnkgdGhlCisgICAgICAjYWRkcmVzcy1jZWxscyBhbmQgI3NpemUtY2VsbHMgb2YgdGhlIHJvb3Qgbm9kZS4gRm9yIGV4YW1wbGUsCisgICAgICB3aXRoIGJvdGggb2YgdGhlc2UgcHJvcGVydGllcyBiZWluZyAyIGxpa2UgaW4gdGhlIGV4YW1wbGUgZ2l2ZW4KKyAgICAgIGVhcmxpZXIsIGEgOTcwIGJhc2VkIG1hY2hpbmUgd2l0aCA2R2Igb2YgUkFNIGNvdWxkIHR5cGljYWxseQorICAgICAgaGF2ZSBhICJyZWciIHByb3BlcnR5IGhlcmUgdGhhdCBsb29rcyBsaWtlOgorCisgICAgICAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCA4MDAwMDAwMAorICAgICAgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDEgMDAwMDAwMDAKKworICAgICAgVGhhdCBpcyBhIHJhbmdlIHN0YXJ0aW5nIGF0IDAgb2YgMHg4MDAwMDAwMCBieXRlcyBhbmQgYSByYW5nZQorICAgICAgc3RhcnRpbmcgYXQgMHgxMDAwMDAwMDAgYW5kIG9mIDB4MTAwMDAwMDAwIGJ5dGVzLiBZb3UgY2FuIHNlZQorICAgICAgdGhhdCB0aGVyZSBpcyBubyBtZW1vcnkgY292ZXJpbmcgdGhlIElPIGhvbGUgYmV0d2VlbiAyR2IgYW5kCisgICAgICA0R2IuIFNvbWUgdmVuZG9ycyBwcmVmZXIgc3BsaXR0aW5nIHRob3NlIHJhbmdlcyBpbnRvIHNtYWxsZXIKKyAgICAgIHNlZ21lbnRzLCBidXQgdGhlIGtlcm5lbCBkb2Vzbid0IGNhcmUuCisKKyAgZSkgVGhlIC9jaG9zZW4gbm9kZQorCisgIFRoaXMgbm9kZSBpcyBhIGJpdCAic3BlY2lhbCIuIE5vcm1hbGx5LCB0aGF0J3Mgd2hlcmUgT3BlbiBGaXJtd2FyZQorICBwdXRzIHNvbWUgdmFyaWFibGUgZW52aXJvbm1lbnQgaW5mb3JtYXRpb24sIGxpa2UgdGhlIGFyZ3VtZW50cywgb3IKKyAgdGhlIGRlZmF1bHQgaW5wdXQvb3V0cHV0IGRldmljZXMuCisKKyAgVGhpcyBzcGVjaWZpY2F0aW9uIG1ha2VzIGEgZmV3IG9mIHRoZXNlIG1hbmRhdG9yeSwgYnV0IGFsc28gZGVmaW5lcworICBzb21lIGxpbnV4LXNwZWNpZmljIHByb3BlcnRpZXMgdGhhdCB3b3VsZCBiZSBub3JtYWxseSBjb25zdHJ1Y3RlZCBieQorICB0aGUgcHJvbV9pbml0KCkgdHJhbXBvbGluZSB3aGVuIGJvb3Rpbmcgd2l0aCBhbiBPRiBjbGllbnQgaW50ZXJmYWNlLAorICBidXQgdGhhdCB5b3UgaGF2ZSB0byBwcm92aWRlIHlvdXJzZWxmIHdoZW4gdXNpbmcgdGhlIGZsYXR0ZW5lZCBmb3JtYXQuCisKKyAgUmVjb21tZW5kZWQgcHJvcGVydGllczoKKworICAgIC0gYm9vdGFyZ3MgOiBUaGlzIHplcm8tdGVybWluYXRlZCBzdHJpbmcgaXMgcGFzc2VkIGFzIHRoZSBrZXJuZWwKKyAgICAgIGNvbW1hbmQgbGluZQorICAgIC0gbGludXgsc3Rkb3V0LXBhdGggOiBUaGlzIGlzIHRoZSBmdWxsIHBhdGggdG8geW91ciBzdGFuZGFyZAorICAgICAgY29uc29sZSBkZXZpY2UgaWYgYW55LiBUeXBpY2FsbHksIGlmIHlvdSBoYXZlIHNlcmlhbCBkZXZpY2VzIG9uCisgICAgICB5b3VyIGJvYXJkLCB5b3UgbWF5IHdhbnQgdG8gcHV0IHRoZSBmdWxsIHBhdGggdG8gdGhlIG9uZSBzZXQgYXMKKyAgICAgIHRoZSBkZWZhdWx0IGNvbnNvbGUgaW4gdGhlIGZpcm13YXJlIGhlcmUsIGZvciB0aGUga2VybmVsIHRvIHBpY2sKKyAgICAgIGl0IHVwIGFzIGl0cyBvd24gZGVmYXVsdCBjb25zb2xlLgorCisgIE5vdGUgdGhhdCB1LWJvb3QgY3JlYXRlcyBhbmQgZmlsbHMgaW4gdGhlIGNob3NlbiBub2RlIGZvciBwbGF0Zm9ybXMKKyAgdGhhdCB1c2UgaXQuCisKKyAgKE5vdGU6IGEgcHJhY3RpY2UgdGhhdCBpcyBub3cgb2Jzb2xldGUgd2FzIHRvIGluY2x1ZGUgYSBwcm9wZXJ0eQorICB1bmRlciAvY2hvc2VuIGNhbGxlZCBpbnRlcnJ1cHQtY29udHJvbGxlciB3aGljaCBoYWQgYSBwaGFuZGxlIHZhbHVlCisgIHRoYXQgcG9pbnRlZCB0byB0aGUgbWFpbiBpbnRlcnJ1cHQgY29udHJvbGxlcikKKworICBmKSB0aGUgL3NvYzxTT0NuYW1lPiBub2RlCisKKyAgVGhpcyBub2RlIGlzIHVzZWQgdG8gcmVwcmVzZW50IGEgc3lzdGVtLW9uLWEtY2hpcCAoU29DKSBhbmQgbXVzdCBiZQorICBwcmVzZW50IGlmIHRoZSBwcm9jZXNzb3IgaXMgYSBTb0MuIFRoZSB0b3AtbGV2ZWwgc29jIG5vZGUgY29udGFpbnMKKyAgaW5mb3JtYXRpb24gdGhhdCBpcyBnbG9iYWwgdG8gYWxsIGRldmljZXMgb24gdGhlIFNvQy4gVGhlIG5vZGUgbmFtZQorICBzaG91bGQgY29udGFpbiBhIHVuaXQgYWRkcmVzcyBmb3IgdGhlIFNvQywgd2hpY2ggaXMgdGhlIGJhc2UgYWRkcmVzcworICBvZiB0aGUgbWVtb3J5LW1hcHBlZCByZWdpc3RlciBzZXQgZm9yIHRoZSBTb0MuIFRoZSBuYW1lIG9mIGFuIFNvQworICBub2RlIHNob3VsZCBzdGFydCB3aXRoICJzb2MiLCBhbmQgdGhlIHJlbWFpbmRlciBvZiB0aGUgbmFtZSBzaG91bGQKKyAgcmVwcmVzZW50IHRoZSBwYXJ0IG51bWJlciBmb3IgdGhlIHNvYy4gIEZvciBleGFtcGxlLCB0aGUgTVBDODU0MCdzCisgIHNvYyBub2RlIHdvdWxkIGJlIGNhbGxlZCAic29jODU0MCIuCisKKyAgUmVxdWlyZWQgcHJvcGVydGllczoKKworICAgIC0gcmFuZ2VzIDogU2hvdWxkIGJlIGRlZmluZWQgYXMgc3BlY2lmaWVkIGluIDEpIHRvIGRlc2NyaWJlIHRoZQorICAgICAgdHJhbnNsYXRpb24gb2YgU29DIGFkZHJlc3NlcyBmb3IgbWVtb3J5IG1hcHBlZCBTb0MgcmVnaXN0ZXJzLgorICAgIC0gYnVzLWZyZXF1ZW5jeTogQ29udGFpbnMgdGhlIGJ1cyBmcmVxdWVuY3kgZm9yIHRoZSBTb0Mgbm9kZS4KKyAgICAgIFR5cGljYWxseSwgdGhlIHZhbHVlIG9mIHRoaXMgZmllbGQgaXMgZmlsbGVkIGluIGJ5IHRoZSBib290CisgICAgICBsb2FkZXIuCisgICAgLSBjb21wYXRpYmxlIDogRXhhY3QgbW9kZWwgb2YgdGhlIFNvQworCisKKyAgUmVjb21tZW5kZWQgcHJvcGVydGllczoKKworICAgIC0gcmVnIDogVGhpcyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZQorICAgICAgbWVtb3J5LW1hcHBlZCByZWdpc3RlcnMgdGhhdCBhcmUgdXNlZCBmb3IgdGhlIFNPQyBub2RlIGl0c2VsZi4KKyAgICAgIEl0IGRvZXMgbm90IGluY2x1ZGUgdGhlIGNoaWxkIGRldmljZSByZWdpc3RlcnMgLSB0aGVzZSB3aWxsIGJlCisgICAgICBkZWZpbmVkIGluc2lkZSBlYWNoIGNoaWxkIG5vZGUuICBUaGUgYWRkcmVzcyBzcGVjaWZpZWQgaW4gdGhlCisgICAgICAicmVnIiBwcm9wZXJ0eSBzaG91bGQgbWF0Y2ggdGhlIHVuaXQgYWRkcmVzcyBvZiB0aGUgU09DIG5vZGUuCisgICAgLSAjYWRkcmVzcy1jZWxscyA6IEFkZHJlc3MgcmVwcmVzZW50YXRpb24gZm9yICJzb2MiIGRldmljZXMuICBUaGUKKyAgICAgIGZvcm1hdCBvZiB0aGlzIGZpZWxkIG1heSB2YXJ5IGRlcGVuZGluZyBvbiB3aGV0aGVyIG9yIG5vdCB0aGUKKyAgICAgIGRldmljZSByZWdpc3RlcnMgYXJlIG1lbW9yeSBtYXBwZWQuICBGb3IgbWVtb3J5IG1hcHBlZAorICAgICAgcmVnaXN0ZXJzLCB0aGlzIGZpZWxkIHJlcHJlc2VudHMgdGhlIG51bWJlciBvZiBjZWxscyBuZWVkZWQgdG8KKyAgICAgIHJlcHJlc2VudCB0aGUgYWRkcmVzcyBvZiB0aGUgcmVnaXN0ZXJzLiAgRm9yIFNPQ3MgdGhhdCBkbyBub3QKKyAgICAgIHVzZSBNTUlPLCBhIHNwZWNpYWwgYWRkcmVzcyBmb3JtYXQgc2hvdWxkIGJlIGRlZmluZWQgdGhhdAorICAgICAgY29udGFpbnMgZW5vdWdoIGNlbGxzIHRvIHJlcHJlc2VudCB0aGUgcmVxdWlyZWQgaW5mb3JtYXRpb24uCisgICAgICBTZWUgMSkgYWJvdmUgZm9yIG1vcmUgZGV0YWlscyBvbiBkZWZpbmluZyAjYWRkcmVzcy1jZWxscy4KKyAgICAtICNzaXplLWNlbGxzIDogU2l6ZSByZXByZXNlbnRhdGlvbiBmb3IgInNvYyIgZGV2aWNlcworICAgIC0gI2ludGVycnVwdC1jZWxscyA6IERlZmluZXMgdGhlIHdpZHRoIG9mIGNlbGxzIHVzZWQgdG8gcmVwcmVzZW50CisgICAgICAgaW50ZXJydXB0cy4gIFR5cGljYWxseSB0aGlzIHZhbHVlIGlzIDwyPiwgd2hpY2ggaW5jbHVkZXMgYQorICAgICAgIDMyLWJpdCBudW1iZXIgdGhhdCByZXByZXNlbnRzIHRoZSBpbnRlcnJ1cHQgbnVtYmVyLCBhbmQgYQorICAgICAgIDMyLWJpdCBudW1iZXIgdGhhdCByZXByZXNlbnRzIHRoZSBpbnRlcnJ1cHQgc2Vuc2UgYW5kIGxldmVsLgorICAgICAgIFRoaXMgZmllbGQgaXMgb25seSBuZWVkZWQgaWYgdGhlIFNPQyBjb250YWlucyBhbiBpbnRlcnJ1cHQKKyAgICAgICBjb250cm9sbGVyLgorCisgIFRoZSBTT0Mgbm9kZSBtYXkgY29udGFpbiBjaGlsZCBub2RlcyBmb3IgZWFjaCBTT0MgZGV2aWNlIHRoYXQgdGhlCisgIHBsYXRmb3JtIHVzZXMuICBOb2RlcyBzaG91bGQgbm90IGJlIGNyZWF0ZWQgZm9yIGRldmljZXMgd2hpY2ggZXhpc3QKKyAgb24gdGhlIFNPQyBidXQgYXJlIG5vdCB1c2VkIGJ5IGEgcGFydGljdWxhciBwbGF0Zm9ybS4gU2VlIGNoYXB0ZXIgVkkKKyAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHNwZWNpZnkgZGV2aWNlcyB0aGF0IGFyZSBwYXJ0IG9mIGEgU09DLgorCisgIEV4YW1wbGUgU09DIG5vZGUgZm9yIHRoZSBNUEM4NTQwOgorCisJc29jODU0MEBlMDAwMDAwMCB7CisJCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJI2ludGVycnVwdC1jZWxscyA9IDwyPjsKKwkJZGV2aWNlX3R5cGUgPSAic29jIjsKKwkJcmFuZ2VzID0gPDB4MDAwMDAwMDAgMHhlMDAwMDAwMCAweDAwMTAwMDAwPgorCQlyZWcgPSA8MHhlMDAwMDAwMCAweDAwMDAzMDAwPjsKKwkJYnVzLWZyZXF1ZW5jeSA9IDwwPjsKKwl9CisKKworCitJViAtICJkdGMiLCB0aGUgZGV2aWNlIHRyZWUgY29tcGlsZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKK2R0YyBzb3VyY2UgY29kZSBjYW4gYmUgZm91bmQgYXQKKzxodHRwOi8vZ2l0LmpkbC5jb20vZ2l0d2ViLz9wPWR0Yy5naXQ+CisKK1dBUk5JTkc6IFRoaXMgdmVyc2lvbiBpcyBzdGlsbCBpbiBlYXJseSBkZXZlbG9wbWVudCBzdGFnZTsgdGhlCityZXN1bHRpbmcgZGV2aWNlLXRyZWUgImJsb2JzIiBoYXZlIG5vdCB5ZXQgYmVlbiB2YWxpZGF0ZWQgd2l0aCB0aGUKK2tlcm5lbC4gVGhlIGN1cnJlbnQgZ2VuZXJhdGVkIGJsb2NrIGxhY2tzIGEgdXNlZnVsIHJlc2VydmUgbWFwIChpdCB3aWxsCitiZSBmaXhlZCB0byBnZW5lcmF0ZSBhbiBlbXB0eSBvbmUsIGl0J3MgdXAgdG8gdGhlIGJvb3Rsb2FkZXIgdG8gZmlsbAoraXQgdXApIGFtb25nIG90aGVycy4gVGhlIGVycm9yIGhhbmRsaW5nIG5lZWRzIHdvcmssIGJ1Z3MgYXJlIGx1cmtpbmcsCitldGMuLi4KKworZHRjIGJhc2ljYWxseSB0YWtlcyBhIGRldmljZS10cmVlIGluIGEgZ2l2ZW4gZm9ybWF0IGFuZCBvdXRwdXRzIGEKK2RldmljZS10cmVlIGluIGFub3RoZXIgZm9ybWF0LiBUaGUgY3VycmVudGx5IHN1cHBvcnRlZCBmb3JtYXRzIGFyZToKKworICBJbnB1dCBmb3JtYXRzOgorICAtLS0tLS0tLS0tLS0tCisKKyAgICAgLSAiZHRiIjogImJsb2IiIGZvcm1hdCwgdGhhdCBpcyBhIGZsYXR0ZW5lZCBkZXZpY2UtdHJlZSBibG9jaworICAgICAgIHdpdGgKKyAgICAgICAgaGVhZGVyIGFsbCBpbiBhIGJpbmFyeSBibG9iLgorICAgICAtICJkdHMiOiAic291cmNlIiBmb3JtYXQuIFRoaXMgaXMgYSB0ZXh0IGZpbGUgY29udGFpbmluZyBhCisgICAgICAgInNvdXJjZSIgZm9yIGEgZGV2aWNlLXRyZWUuIFRoZSBmb3JtYXQgaXMgZGVmaW5lZCBsYXRlciBpbiB0aGlzCisgICAgICAgIGNoYXB0ZXIuCisgICAgIC0gImZzIiBmb3JtYXQuIFRoaXMgaXMgYSByZXByZXNlbnRhdGlvbiBlcXVpdmFsZW50IHRvIHRoZQorICAgICAgICBvdXRwdXQgb2YgL3Byb2MvZGV2aWNlLXRyZWUsIHRoYXQgaXMgbm9kZXMgYXJlIGRpcmVjdG9yaWVzIGFuZAorCXByb3BlcnRpZXMgYXJlIGZpbGVzCisKKyBPdXRwdXQgZm9ybWF0czoKKyAtLS0tLS0tLS0tLS0tLS0KKworICAgICAtICJkdGIiOiAiYmxvYiIgZm9ybWF0CisgICAgIC0gImR0cyI6ICJzb3VyY2UiIGZvcm1hdAorICAgICAtICJhc20iOiBhc3NlbWJseSBsYW5ndWFnZSBmaWxlLiBUaGlzIGlzIGEgZmlsZSB0aGF0IGNhbiBiZQorICAgICAgIHNvdXJjZWQgYnkgZ2FzIHRvIGdlbmVyYXRlIGEgZGV2aWNlLXRyZWUgImJsb2IiLiBUaGF0IGZpbGUgY2FuCisgICAgICAgdGhlbiBzaW1wbHkgYmUgYWRkZWQgdG8geW91ciBNYWtlZmlsZS4gQWRkaXRpb25hbGx5LCB0aGUKKyAgICAgICBhc3NlbWJseSBmaWxlIGV4cG9ydHMgc29tZSBzeW1ib2xzIHRoYXQgY2FuIGJlIHVzZWQuCisKKworVGhlIHN5bnRheCBvZiB0aGUgZHRjIHRvb2wgaXMKKworICAgIGR0YyBbLUkgPGlucHV0LWZvcm1hdD5dIFstTyA8b3V0cHV0LWZvcm1hdD5dCisgICAgICAgIFstbyBvdXRwdXQtZmlsZW5hbWVdIFstViBvdXRwdXRfdmVyc2lvbl0gaW5wdXRfZmlsZW5hbWUKKworCitUaGUgIm91dHB1dF92ZXJzaW9uIiBkZWZpbmVzIHdoYXQgdmVyc2lvbiBvZiB0aGUgImJsb2IiIGZvcm1hdCB3aWxsIGJlCitnZW5lcmF0ZWQuIFN1cHBvcnRlZCB2ZXJzaW9ucyBhcmUgMSwyLDMgYW5kIDE2LiBUaGUgZGVmYXVsdCBpcworY3VycmVudGx5IHZlcnNpb24gMyBidXQgdGhhdCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUgdG8gdmVyc2lvbiAxNi4KKworQWRkaXRpb25hbGx5LCBkdGMgcGVyZm9ybXMgdmFyaW91cyBzYW5pdHkgY2hlY2tzIG9uIHRoZSB0cmVlLCBsaWtlIHRoZQordW5pcXVlbmVzcyBvZiBsaW51eCwgcGhhbmRsZSBwcm9wZXJ0aWVzLCB2YWxpZGl0eSBvZiBzdHJpbmdzLCBldGMuLi4KKworVGhlIGZvcm1hdCBvZiB0aGUgLmR0cyAic291cmNlIiBmaWxlIGlzICJDIiBsaWtlLCBzdXBwb3J0cyBDIGFuZCBDKysKK3N0eWxlIGNvbW1lbnRzLgorCisvIHsKK30KKworVGhlIGFib3ZlIGlzIHRoZSAiZGV2aWNlLXRyZWUiIGRlZmluaXRpb24uIEl0J3MgdGhlIG9ubHkgc3RhdGVtZW50CitzdXBwb3J0ZWQgY3VycmVudGx5IGF0IHRoZSB0b3BsZXZlbC4KKworLyB7CisgIHByb3BlcnR5MSA9ICJzdHJpbmdfdmFsdWUiOwkvKiBkZWZpbmUgYSBwcm9wZXJ0eSBjb250YWluaW5nIGEgMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0ZXJtaW5hdGVkIHN0cmluZworCQkJCSAqLworCisgIHByb3BlcnR5MiA9IDwweDEyMzRhYmNkPjsJLyogZGVmaW5lIGEgcHJvcGVydHkgY29udGFpbmluZyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG51bWVyaWNhbCAzMi1iaXQgdmFsdWUgKGhleGFkZWNpbWFsKQorCQkJCSAqLworCisgIHByb3BlcnR5MyA9IDwweDEyMzQ1Njc4IDB4MTIzNDU2NzggMHhkZWFkYmVlZj47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRlZmluZSBhIHByb3BlcnR5IGNvbnRhaW5pbmcgMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBudW1lcmljYWwgMzItYml0IHZhbHVlcyAoY2VsbHMpIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGhleGFkZWNpbWFsCisJCQkJICovCisgIHByb3BlcnR5NCA9IFsweDBhIDB4MGIgMHgwYyAweDBkIDB4ZGUgMHhlYSAweGFkIDB4YmUgMHhlZl07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRlZmluZSBhIHByb3BlcnR5IHdob3NlIGNvbnRlbnQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogYW4gYXJiaXRyYXJ5IGFycmF5IG9mIGJ5dGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgIGNoaWxkbm9kZUBhZGRyZXNzIHsJLyogZGVmaW5lIGEgY2hpbGQgbm9kZSBuYW1lZCAiY2hpbGRub2RlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB3aG9zZSB1bml0IG5hbWUgaXMgImNoaWxkbm9kZSBhdAorCQkJCSAqIGFkZHJlc3MiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgY2hpbGRwcm9wID0gImhlbGxvXG4iOyAgICAgIC8qIGRlZmluZSBhIHByb3BlcnR5ICJjaGlsZHByb3AiIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGNoaWxkbm9kZSAoaW4gdGhpcyBjYXNlLCBhIHN0cmluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIH07Cit9OworCitOb2RlcyBjYW4gY29udGFpbiBvdGhlciBub2RlcyBldGMuLi4gdGh1cyBkZWZpbmluZyB0aGUgaGllcmFyY2hpY2FsCitzdHJ1Y3R1cmUgb2YgdGhlIHRyZWUuCisKK1N0cmluZ3Mgc3VwcG9ydCBjb21tb24gZXNjYXBlIHNlcXVlbmNlcyBmcm9tIEM6ICJcbiIsICJcdCIsICJcciIsCisiXChvY3RhbCB2YWx1ZSkiLCAiXHgoaGV4IHZhbHVlKSIuCisKK0l0IGlzIGFsc28gc3VnZ2VzdGVkIHRoYXQgeW91IHBpcGUgeW91ciBzb3VyY2UgZmlsZSB0aHJvdWdoIGNwcCAoZ2NjCitwcmVwcm9jZXNzb3IpIHNvIHlvdSBjYW4gdXNlICNpbmNsdWRlJ3MsICNkZWZpbmUgZm9yIGNvbnN0YW50cywgZXRjLi4uCisKK0ZpbmFsbHksIHZhcmlvdXMgb3B0aW9ucyBhcmUgcGxhbm5lZCBidXQgbm90IHlldCBpbXBsZW1lbnRlZCwgbGlrZQorYXV0b21hdGljIGdlbmVyYXRpb24gb2YgcGhhbmRsZXMsIGxhYmVscyAoZXhwb3J0ZWQgdG8gdGhlIGFzbSBmaWxlIHNvCit5b3UgY2FuIHBvaW50IHRvIGEgcHJvcGVydHkgY29udGVudCBhbmQgY2hhbmdlIGl0IGVhc2lseSBmcm9tIHdoYXRldmVyCit5b3UgbGluayB0aGUgZGV2aWNlLXRyZWUgd2l0aCksIGxhYmVsIG9yIHBhdGggaW5zdGVhZCBvZiBudW1lcmljIHZhbHVlCitpbiBzb21lIGNlbGxzIHRvICJwb2ludCIgdG8gYSBub2RlIChyZXBsYWNlZCBieSBhIHBoYW5kbGUgYXQgY29tcGlsZQordGltZSksIGV4cG9ydCBvZiByZXNlcnZlIG1hcCBhZGRyZXNzIHRvIHRoZSBhc20gZmlsZSwgYWJpbGl0eSB0bworc3BlY2lmeSByZXNlcnZlIG1hcCBjb250ZW50IGF0IGNvbXBpbGUgdGltZSwgZXRjLi4uCisKK1dlIG1heSBwcm92aWRlIGEgLmggaW5jbHVkZSBmaWxlIHdpdGggY29tbW9uIGRlZmluaXRpb25zIG9mIHRoYXQKK3Byb3ZlcyB1c2VmdWwgZm9yIHNvbWUgcHJvcGVydGllcyAobGlrZSBidWlsZGluZyBQQ0kgcHJvcGVydGllcyBvcgoraW50ZXJydXB0IG1hcHMpIHRob3VnaCBpdCBtYXkgYmUgYmV0dGVyIHRvIGFkZCBhIG5vdGlvbiBvZiBzdHJ1Y3QKK2RlZmluaXRpb25zIHRvIHRoZSBjb21waWxlci4uLgorCisKK1YgLSBSZWNvbW1lbmRhdGlvbnMgZm9yIGEgYm9vdGxvYWRlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworSGVyZSBhcmUgc29tZSB2YXJpb3VzIGlkZWFzL3JlY29tbWVuZGF0aW9ucyB0aGF0IGhhdmUgYmVlbiBwcm9wb3NlZAord2hpbGUgYWxsIHRoaXMgaGFzIGJlZW4gZGVmaW5lZCBhbmQgaW1wbGVtZW50ZWQuCisKKyAgLSBUaGUgYm9vdGxvYWRlciBtYXkgd2FudCB0byBiZSBhYmxlIHRvIHVzZSB0aGUgZGV2aWNlLXRyZWUgaXRzZWxmCisgICAgYW5kIG1heSB3YW50IHRvIG1hbmlwdWxhdGUgaXQgKHRvIGFkZC9lZGl0IHNvbWUgcHJvcGVydGllcywKKyAgICBsaWtlIHBoeXNpY2FsIG1lbW9yeSBzaXplIG9yIGtlcm5lbCBhcmd1bWVudHMpLiBBdCB0aGlzIHBvaW50LCAyCisgICAgY2hvaWNlcyBjYW4gYmUgbWFkZS4gRWl0aGVyIHRoZSBib290bG9hZGVyIHdvcmtzIGRpcmVjdGx5IG9uIHRoZQorICAgIGZsYXR0ZW5lZCBmb3JtYXQsIG9yIHRoZSBib290bG9hZGVyIGhhcyBpdHMgb3duIGludGVybmFsIHRyZWUKKyAgICByZXByZXNlbnRhdGlvbiB3aXRoIHBvaW50ZXJzIChzaW1pbGFyIHRvIHRoZSBrZXJuZWwgb25lKSBhbmQKKyAgICByZS1mbGF0dGVucyB0aGUgdHJlZSB3aGVuIGJvb3RpbmcgdGhlIGtlcm5lbC4gVGhlIGZvcm1lciBpcyBhIGJpdAorICAgIG1vcmUgZGlmZmljdWx0IHRvIGVkaXQvbW9kaWZ5LCB0aGUgbGF0ZXIgcmVxdWlyZXMgcHJvYmFibHkgYSBiaXQKKyAgICBtb3JlIGNvZGUgdG8gaGFuZGxlIHRoZSB0cmVlIHN0cnVjdHVyZS4gTm90ZSB0aGF0IHRoZSBzdHJ1Y3R1cmUKKyAgICBmb3JtYXQgaGFzIGJlZW4gZGVzaWduZWQgc28gaXQncyByZWxhdGl2ZWx5IGVhc3kgdG8gImluc2VydCIKKyAgICBwcm9wZXJ0aWVzIG9yIG5vZGVzIG9yIGRlbGV0ZSB0aGVtIGJ5IGp1c3QgbWVtbW92aW5nIHRoaW5ncworICAgIGFyb3VuZC4gSXQgY29udGFpbnMgbm8gaW50ZXJuYWwgb2Zmc2V0cyBvciBwb2ludGVycyBmb3IgdGhpcworICAgIHB1cnBvc2UuCisKKyAgLSBBbiBleGFtcGxlIG9mIGNvZGUgZm9yIGl0ZXJhdGluZyBub2RlcyAmIHJldHJpZXZpbmcgcHJvcGVydGllcworICAgIGRpcmVjdGx5IGZyb20gdGhlIGZsYXR0ZW5lZCB0cmVlIGZvcm1hdCBjYW4gYmUgZm91bmQgaW4gdGhlIGtlcm5lbAorICAgIGZpbGUgZHJpdmVycy9vZi9mZHQuYy4gIExvb2sgYXQgdGhlIG9mX3NjYW5fZmxhdF9kdCgpIGZ1bmN0aW9uLAorICAgIGl0cyB1c2FnZSBpbiBlYXJseV9pbml0X2RldnRyZWUoKSwgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHZhcmlvdXMKKyAgICBlYXJseV9pbml0X2R0X3NjYW5fKigpIGNhbGxiYWNrcy4gVGhhdCBjb2RlIGNhbiBiZSByZS11c2VkIGluIGEKKyAgICBHUEwgYm9vdGxvYWRlciwgYW5kIGFzIHRoZSBhdXRob3Igb2YgdGhhdCBjb2RlLCBJIHdvdWxkIGJlIGhhcHB5CisgICAgdG8gZGlzY3VzcyBwb3NzaWJsZSBmcmVlIGxpY2Vuc2luZyB0byBhbnkgdmVuZG9yIHdobyB3aXNoZXMgdG8KKyAgICBpbnRlZ3JhdGUgYWxsIG9yIHBhcnQgb2YgdGhpcyBjb2RlIGludG8gYSBub24tR1BMIGJvb3Rsb2FkZXIuCisgICAgKHJlZmVyZW5jZSBuZWVkZWQ7IHdobyBpcyAnSScgaGVyZT8gLS0tZ2NsIEphbiAzMSwgMjAxMSkKKworCisKK1ZJIC0gU3lzdGVtLW9uLWEtY2hpcCBkZXZpY2VzIGFuZCBub2RlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK01hbnkgY29tcGFuaWVzIGFyZSBub3cgc3RhcnRpbmcgdG8gZGV2ZWxvcCBzeXN0ZW0tb24tYS1jaGlwCitwcm9jZXNzb3JzLCB3aGVyZSB0aGUgcHJvY2Vzc29yIGNvcmUgKENQVSkgYW5kIG1hbnkgcGVyaXBoZXJhbCBkZXZpY2VzCitleGlzdCBvbiBhIHNpbmdsZSBwaWVjZSBvZiBzaWxpY29uLiAgRm9yIHRoZXNlIFNPQ3MsIGFuIFNPQyBub2RlCitzaG91bGQgYmUgdXNlZCB0aGF0IGRlZmluZXMgY2hpbGQgbm9kZXMgZm9yIHRoZSBkZXZpY2VzIHRoYXQgbWFrZQordXAgdGhlIFNPQy4gV2hpbGUgcGxhdGZvcm1zIGFyZSBub3QgcmVxdWlyZWQgdG8gdXNlIHRoaXMgbW9kZWwgaW4KK29yZGVyIHRvIGJvb3QgdGhlIGtlcm5lbCwgaXQgaXMgaGlnaGx5IGVuY291cmFnZWQgdGhhdCBhbGwgU09DCitpbXBsZW1lbnRhdGlvbnMgZGVmaW5lIGFzIGNvbXBsZXRlIGEgZmxhdC1kZXZpY2UtdHJlZSBhcyBwb3NzaWJsZSB0bworZGVzY3JpYmUgdGhlIGRldmljZXMgb24gdGhlIFNPQy4gIFRoaXMgd2lsbCBhbGxvdyBmb3IgdGhlCitnZW5lcmljaXphdGlvbiBvZiBtdWNoIG9mIHRoZSBrZXJuZWwgY29kZS4KKworCisxKSBEZWZpbmluZyBjaGlsZCBub2RlcyBvZiBhbiBTT0MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFYWNoIGRldmljZSB0aGF0IGlzIHBhcnQgb2YgYW4gU09DIG1heSBoYXZlIGl0cyBvd24gbm9kZSBlbnRyeSBpbnNpZGUKK3RoZSBTT0Mgbm9kZS4gIEZvciBlYWNoIGRldmljZSB0aGF0IGlzIGluY2x1ZGVkIGluIHRoZSBTT0MsIHRoZSB1bml0CithZGRyZXNzIHByb3BlcnR5IHJlcHJlc2VudHMgdGhlIGFkZHJlc3Mgb2Zmc2V0IGZvciB0aGlzIGRldmljZSdzCittZW1vcnktbWFwcGVkIHJlZ2lzdGVycyBpbiB0aGUgcGFyZW50J3MgYWRkcmVzcyBzcGFjZS4gIFRoZSBwYXJlbnQncworYWRkcmVzcyBzcGFjZSBpcyBkZWZpbmVkIGJ5IHRoZSAicmFuZ2VzIiBwcm9wZXJ0eSBpbiB0aGUgdG9wLWxldmVsIHNvYworbm9kZS4gVGhlICJyZWciIHByb3BlcnR5IGZvciBlYWNoIG5vZGUgdGhhdCBleGlzdHMgZGlyZWN0bHkgdW5kZXIgdGhlCitTT0Mgbm9kZSBzaG91bGQgY29udGFpbiB0aGUgYWRkcmVzcyBtYXBwaW5nIGZyb20gdGhlIGNoaWxkIGFkZHJlc3Mgc3BhY2UKK3RvIHRoZSBwYXJlbnQgU09DIGFkZHJlc3Mgc3BhY2UgYW5kIHRoZSBzaXplIG9mIHRoZSBkZXZpY2UncworbWVtb3J5LW1hcHBlZCByZWdpc3RlciBmaWxlLgorCitGb3IgbWFueSBkZXZpY2VzIHRoYXQgbWF5IGV4aXN0IGluc2lkZSBhbiBTT0MsIHRoZXJlIGFyZSBwcmVkZWZpbmVkCitzcGVjaWZpY2F0aW9ucyBmb3IgdGhlIGZvcm1hdCBvZiB0aGUgZGV2aWNlIHRyZWUgbm9kZS4gIEFsbCBTT0MgY2hpbGQKK25vZGVzIHNob3VsZCBmb2xsb3cgdGhlc2Ugc3BlY2lmaWNhdGlvbnMsIGV4Y2VwdCB3aGVyZSBub3RlZCBpbiB0aGlzCitkb2N1bWVudC4KKworU2VlIGFwcGVuZGl4IEEgZm9yIGFuIGV4YW1wbGUgcGFydGlhbCBTT0Mgbm9kZSBkZWZpbml0aW9uIGZvciB0aGUKK01QQzg1NDAuCisKKworMikgUmVwcmVzZW50aW5nIGRldmljZXMgd2l0aG91dCBhIGN1cnJlbnQgT0Ygc3BlY2lmaWNhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDdXJyZW50bHksIHRoZXJlIGFyZSBtYW55IGRldmljZXMgb24gU29DcyB0aGF0IGRvIG5vdCBoYXZlIGEgc3RhbmRhcmQKK3JlcHJlc2VudGF0aW9uIGRlZmluZWQgYXMgcGFydCBvZiB0aGUgT3BlbiBGaXJtd2FyZSBzcGVjaWZpY2F0aW9ucywKK21haW5seSBiZWNhdXNlIHRoZSBib2FyZHMgdGhhdCBjb250YWluIHRoZXNlIFNvQ3MgYXJlIG5vdCBjdXJyZW50bHkKK2Jvb3RlZCB1c2luZyBPcGVuIEZpcm13YXJlLiAgQmluZGluZyBkb2N1bWVudGF0aW9uIGZvciBuZXcgZGV2aWNlcworc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MgZGlyZWN0b3J5LgorVGhhdCBkaXJlY3Rvcnkgd2lsbCBleHBhbmQgYXMgZGV2aWNlIHRyZWUgc3VwcG9ydCBpcyBhZGRlZCB0byBtb3JlIGFuZAorbW9yZSBTb0NzLgorCisKK1ZJSSAtIFNwZWNpZnlpbmcgaW50ZXJydXB0IGluZm9ybWF0aW9uIGZvciBkZXZpY2VzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGRldmljZSB0cmVlIHJlcHJlc2VudHMgdGhlIGJ1c2VzIGFuZCBkZXZpY2VzIG9mIGEgaGFyZHdhcmUKK3N5c3RlbSBpbiBhIGZvcm0gc2ltaWxhciB0byB0aGUgcGh5c2ljYWwgYnVzIHRvcG9sb2d5IG9mIHRoZQoraGFyZHdhcmUuCisKK0luIGFkZGl0aW9uLCBhIGxvZ2ljYWwgJ2ludGVycnVwdCB0cmVlJyBleGlzdHMgd2hpY2ggcmVwcmVzZW50cyB0aGUKK2hpZXJhcmNoeSBhbmQgcm91dGluZyBvZiBpbnRlcnJ1cHRzIGluIHRoZSBoYXJkd2FyZS4KKworVGhlIGludGVycnVwdCB0cmVlIG1vZGVsIGlzIGZ1bGx5IGRlc2NyaWJlZCBpbiB0aGUKK2RvY3VtZW50ICJPcGVuIEZpcm13YXJlIFJlY29tbWVuZGVkIFByYWN0aWNlOiBJbnRlcnJ1cHQKK01hcHBpbmcgVmVyc2lvbiAwLjkiLiAgVGhlIGRvY3VtZW50IGlzIGF2YWlsYWJsZSBhdDoKKzxodHRwOi8vd3d3Lm9wZW5maXJtd2FyZS5vcmcvb2Z3Zy9wcmFjdGljZS8+CisKKzEpIGludGVycnVwdHMgcHJvcGVydHkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRGV2aWNlcyB0aGF0IGdlbmVyYXRlIGludGVycnVwdHMgdG8gYSBzaW5nbGUgaW50ZXJydXB0IGNvbnRyb2xsZXIKK3Nob3VsZCB1c2UgdGhlIGNvbnZlbnRpb25hbCBPRiByZXByZXNlbnRhdGlvbiBkZXNjcmliZWQgaW4gdGhlCitPRiBpbnRlcnJ1cHQgbWFwcGluZyBkb2N1bWVudGF0aW9uLgorCitFYWNoIGRldmljZSB3aGljaCBnZW5lcmF0ZXMgaW50ZXJydXB0cyBtdXN0IGhhdmUgYW4gJ2ludGVycnVwdCcKK3Byb3BlcnR5LiAgVGhlIGludGVycnVwdCBwcm9wZXJ0eSB2YWx1ZSBpcyBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mCitvZiAnaW50ZXJydXB0IHNwZWNpZmllcicgdmFsdWVzIHdoaWNoIGRlc2NyaWJlIHRoZSBpbnRlcnJ1cHQgb3IKK2ludGVycnVwdHMgZm9yIHRoZSBkZXZpY2UuCisKK1RoZSBlbmNvZGluZyBvZiBhbiBpbnRlcnJ1cHQgc3BlY2lmaWVyIGlzIGRldGVybWluZWQgYnkgdGhlCitpbnRlcnJ1cHQgZG9tYWluIGluIHdoaWNoIHRoZSBkZXZpY2UgaXMgbG9jYXRlZCBpbiB0aGUKK2ludGVycnVwdCB0cmVlLiAgVGhlIHJvb3Qgb2YgYW4gaW50ZXJydXB0IGRvbWFpbiBzcGVjaWZpZXMgaW4KK2l0cyAjaW50ZXJydXB0LWNlbGxzIHByb3BlcnR5IHRoZSBudW1iZXIgb2YgMzItYml0IGNlbGxzCityZXF1aXJlZCB0byBlbmNvZGUgYW4gaW50ZXJydXB0IHNwZWNpZmllci4gIFNlZSB0aGUgT0YgaW50ZXJydXB0CittYXBwaW5nIGRvY3VtZW50YXRpb24gZm9yIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgZG9tYWlucy4KKworRm9yIGV4YW1wbGUsIHRoZSBiaW5kaW5nIGZvciB0aGUgT3BlblBJQyBpbnRlcnJ1cHQgY29udHJvbGxlcgorc3BlY2lmaWVzICBhbiAjaW50ZXJydXB0LWNlbGxzIHZhbHVlIG9mIDIgdG8gZW5jb2RlIHRoZSBpbnRlcnJ1cHQKK251bWJlciBhbmQgbGV2ZWwvc2Vuc2UgaW5mb3JtYXRpb24uIEFsbCBpbnRlcnJ1cHQgY2hpbGRyZW4gaW4gYW4KK09wZW5QSUMgaW50ZXJydXB0IGRvbWFpbiB1c2UgMiBjZWxscyBwZXIgaW50ZXJydXB0IGluIHRoZWlyIGludGVycnVwdHMKK3Byb3BlcnR5LgorCitUaGUgUENJIGJ1cyBiaW5kaW5nIHNwZWNpZmllcyBhICNpbnRlcnJ1cHQtY2VsbCB2YWx1ZSBvZiAxIHRvIGVuY29kZQord2hpY2ggaW50ZXJydXB0IHBpbiAoSU5UQSxJTlRCLElOVEMsSU5URCkgaXMgdXNlZC4KKworMikgaW50ZXJydXB0LXBhcmVudCBwcm9wZXJ0eQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgaW50ZXJydXB0LXBhcmVudCBwcm9wZXJ0eSBpcyBzcGVjaWZpZWQgdG8gZGVmaW5lIGFuIGV4cGxpY2l0CitsaW5rIGJldHdlZW4gYSBkZXZpY2Ugbm9kZSBhbmQgaXRzIGludGVycnVwdCBwYXJlbnQgaW4KK3RoZSBpbnRlcnJ1cHQgdHJlZS4gIFRoZSB2YWx1ZSBvZiBpbnRlcnJ1cHQtcGFyZW50IGlzIHRoZQorcGhhbmRsZSBvZiB0aGUgcGFyZW50IG5vZGUuCisKK0lmIHRoZSBpbnRlcnJ1cHQtcGFyZW50IHByb3BlcnR5IGlzIG5vdCBkZWZpbmVkIGZvciBhIG5vZGUsIGl0cworaW50ZXJydXB0IHBhcmVudCBpcyBhc3N1bWVkIHRvIGJlIGFuIGFuY2VzdG9yIGluIHRoZSBub2RlJ3MKK19kZXZpY2UgdHJlZV8gaGllcmFyY2h5LgorCiszKSBPcGVuUElDIEludGVycnVwdCBDb250cm9sbGVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT3BlblBJQyBpbnRlcnJ1cHQgY29udHJvbGxlcnMgcmVxdWlyZSAyIGNlbGxzIHRvIGVuY29kZQoraW50ZXJydXB0IGluZm9ybWF0aW9uLiAgVGhlIGZpcnN0IGNlbGwgZGVmaW5lcyB0aGUgaW50ZXJydXB0CitudW1iZXIuICBUaGUgc2Vjb25kIGNlbGwgZGVmaW5lcyB0aGUgc2Vuc2UgYW5kIGxldmVsCitpbmZvcm1hdGlvbi4KKworU2Vuc2UgYW5kIGxldmVsIGluZm9ybWF0aW9uIHNob3VsZCBiZSBlbmNvZGVkIGFzIGZvbGxvd3M6CisKKwkwID0gbG93IHRvIGhpZ2ggZWRnZSBzZW5zaXRpdmUgdHlwZSBlbmFibGVkCisJMSA9IGFjdGl2ZSBsb3cgbGV2ZWwgc2Vuc2l0aXZlIHR5cGUgZW5hYmxlZAorCTIgPSBhY3RpdmUgaGlnaCBsZXZlbCBzZW5zaXRpdmUgdHlwZSBlbmFibGVkCisJMyA9IGhpZ2ggdG8gbG93IGVkZ2Ugc2Vuc2l0aXZlIHR5cGUgZW5hYmxlZAorCis0KSBJU0EgSW50ZXJydXB0IENvbnRyb2xsZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lTQSBQSUMgaW50ZXJydXB0IGNvbnRyb2xsZXJzIHJlcXVpcmUgMiBjZWxscyB0byBlbmNvZGUKK2ludGVycnVwdCBpbmZvcm1hdGlvbi4gIFRoZSBmaXJzdCBjZWxsIGRlZmluZXMgdGhlIGludGVycnVwdAorbnVtYmVyLiAgVGhlIHNlY29uZCBjZWxsIGRlZmluZXMgdGhlIHNlbnNlIGFuZCBsZXZlbAoraW5mb3JtYXRpb24uCisKK0lTQSBQSUMgaW50ZXJydXB0IGNvbnRyb2xsZXJzIHNob3VsZCBhZGhlcmUgdG8gdGhlIElTQSBQSUMKK2VuY29kaW5ncyBsaXN0ZWQgYmVsb3c6CisKKwkwID0gIGFjdGl2ZSBsb3cgbGV2ZWwgc2Vuc2l0aXZlIHR5cGUgZW5hYmxlZAorCTEgPSAgYWN0aXZlIGhpZ2ggbGV2ZWwgc2Vuc2l0aXZlIHR5cGUgZW5hYmxlZAorCTIgPSAgaGlnaCB0byBsb3cgZWRnZSBzZW5zaXRpdmUgdHlwZSBlbmFibGVkCisJMyA9ICBsb3cgdG8gaGlnaCBlZGdlIHNlbnNpdGl2ZSB0eXBlIGVuYWJsZWQKKworVklJSSAtIFNwZWNpZnlpbmcgRGV2aWNlIFBvd2VyIE1hbmFnZW1lbnQgSW5mb3JtYXRpb24gKHNsZWVwIHByb3BlcnR5KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitEZXZpY2VzIG9uIFNPQ3Mgb2Z0ZW4gaGF2ZSBtZWNoYW5pc21zIGZvciBwbGFjaW5nIGRldmljZXMgaW50byBsb3ctcG93ZXIKK3N0YXRlcyB0aGF0IGFyZSBkZWNvdXBsZWQgZnJvbSB0aGUgZGV2aWNlcycgb3duIHJlZ2lzdGVyIGJsb2Nrcy4gIFNvbWV0aW1lcywKK3RoaXMgaW5mb3JtYXRpb24gaXMgbW9yZSBjb21wbGljYXRlZCB0aGFuIGEgY2VsbC1pbmRleCBwcm9wZXJ0eSBjYW4KK3JlYXNvbmFibHkgZGVzY3JpYmUuICBUaHVzLCBlYWNoIGRldmljZSBjb250cm9sbGVkIGluIHN1Y2ggYSBtYW5uZXIKK21heSBjb250YWluIGEgInNsZWVwIiBwcm9wZXJ0eSB3aGljaCBkZXNjcmliZXMgdGhlc2UgY29ubmVjdGlvbnMuCisKK1RoZSBzbGVlcCBwcm9wZXJ0eSBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSBzbGVlcCByZXNvdXJjZXMsIGVhY2ggb2YKK3doaWNoIGNvbnNpc3RzIG9mIGEgcGhhbmRsZSB0byBhIHNsZWVwIGNvbnRyb2xsZXIsIGZvbGxvd2VkIGJ5IGEKK2NvbnRyb2xsZXItc3BlY2lmaWMgc2xlZXAgc3BlY2lmaWVyIG9mIHplcm8gb3IgbW9yZSBjZWxscy4KKworVGhlIHNlbWFudGljcyBvZiB3aGF0IHR5cGUgb2YgbG93IHBvd2VyIG1vZGVzIGFyZSBwb3NzaWJsZSBhcmUgZGVmaW5lZAorYnkgdGhlIHNsZWVwIGNvbnRyb2xsZXIuICBTb21lIGV4YW1wbGVzIG9mIHRoZSB0eXBlcyBvZiBsb3cgcG93ZXIgbW9kZXMKK3RoYXQgbWF5IGJlIHN1cHBvcnRlZCBhcmU6CisKKyAtIER5bmFtaWM6IFRoZSBkZXZpY2UgbWF5IGJlIGRpc2FibGVkIG9yIGVuYWJsZWQgYXQgYW55IHRpbWUuCisgLSBTeXN0ZW0gU3VzcGVuZDogVGhlIGRldmljZSBtYXkgcmVxdWVzdCB0byBiZSBkaXNhYmxlZCBvciByZW1haW4KKyAgIGF3YWtlIGR1cmluZyBzeXN0ZW0gc3VzcGVuZCwgYnV0IHdpbGwgbm90IGJlIGRpc2FibGVkIHVudGlsIHRoZW4uCisgLSBQZXJtYW5lbnQ6IFRoZSBkZXZpY2UgaXMgZGlzYWJsZWQgcGVybWFuZW50bHkgKHVudGlsIHRoZSBuZXh0IGhhcmQKKyAgIHJlc2V0KS4KKworU29tZSBkZXZpY2VzIG1heSBzaGFyZSBhIGNsb2NrIGRvbWFpbiB3aXRoIGVhY2ggb3RoZXIsIHN1Y2ggdGhhdCB0aGV5IHNob3VsZAorb25seSBiZSBzdXNwZW5kZWQgd2hlbiBub25lIG9mIHRoZSBkZXZpY2VzIGFyZSBpbiB1c2UuICBXaGVyZSByZWFzb25hYmxlLAorc3VjaCBub2RlcyBzaG91bGQgYmUgcGxhY2VkIG9uIGEgdmlydHVhbCBidXMsIHdoZXJlIHRoZSBidXMgaGFzIHRoZSBzbGVlcAorcHJvcGVydHkuICBJZiB0aGUgY2xvY2sgZG9tYWluIGlzIHNoYXJlZCBhbW9uZyBkZXZpY2VzIHRoYXQgY2Fubm90IGJlCityZWFzb25hYmx5IGdyb3VwZWQgaW4gdGhpcyBtYW5uZXIsIHRoZW4gY3JlYXRlIGEgdmlydHVhbCBzbGVlcCBjb250cm9sbGVyCisoc2ltaWxhciB0byBhbiBpbnRlcnJ1cHQgbmV4dXMsIGV4Y2VwdCB0aGF0IGRlZmluaW5nIGEgc3RhbmRhcmRpemVkCitzbGVlcC1tYXAgc2hvdWxkIHdhaXQgdW50aWwgaXRzIG5lY2Vzc2l0eSBpcyBkZW1vbnN0cmF0ZWQpLgorCitJWCAtIFNwZWNpZnlpbmcgZG1hIGJ1cyBpbmZvcm1hdGlvbgorCitTb21lIGRldmljZXMgbWF5IGhhdmUgRE1BIG1lbW9yeSByYW5nZSBzaGlmdGVkIHJlbGF0aXZlbHkgdG8gdGhlIGJlZ2lubmluZyBvZgorUkFNLCBvciBldmVuIHBsYWNlZCBvdXRzaWRlIG9mIGtlcm5lbCBSQU0uIEZvciBleGFtcGxlLCB0aGUgS2V5c3RvbmUgMiBTb0MKK3dvcmtlZCBpbiBMUEFFIG1vZGUgd2l0aCA0RyBtZW1vcnkgaGFzOgorLSBSQU0gcmFuZ2U6IFsweDggMDAwMCAwMDAwLCAweDggRkZGRiBGRkZGXQorLSBETUEgcmFuZ2U6IFsgIDB4ODAwMCAwMDAwLCAgIDB4RkZGRiBGRkZGXQorYW5kIERNQSByYW5nZSBpcyBhbGlhc2VkIGludG8gZmlyc3QgMkcgb2YgUkFNIGluIEhXLgorCitJbiBzdWNoIGNhc2VzLCBETUEgYWRkcmVzc2VzIHRyYW5zbGF0aW9uIHNob3VsZCBiZSBwZXJmb3JtZWQgYmV0d2VlbiBDUFUgcGh5cworYW5kIERNQSBhZGRyZXNzZXMuIFRoZSAiZG1hLXJhbmdlcyIgcHJvcGVydHkgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZAorZm9yIGRlc2NyaWJpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb2Ygc3VjaCBzeXN0ZW0gaW4gRFQuCisKK0luIGFkZGl0aW9uLCBlYWNoIERNQSBtYXN0ZXIgZGV2aWNlIG9uIHRoZSBETUEgYnVzIG1heSBvciBtYXkgbm90IHN1cHBvcnQKK2NvaGVyZW50IERNQSBvcGVyYXRpb25zLiBUaGUgImRtYS1jb2hlcmVudCIgcHJvcGVydHkgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZAorZm9yIGlkZW50aWZ5aW5nIGRldmljZXMgc3VwcG9ydGVkIGNvaGVyZW50IERNQSBvcGVyYXRpb25zIGluIERULgorCisqIERNQSBCdXMgbWFzdGVyCitPcHRpb25hbCBwcm9wZXJ0eToKKy0gZG1hLXJhbmdlczogPHByb3AtZW5jb2RlZC1hcnJheT4gZW5jb2RlZCBhcyBhcmJpdHJhcnkgbnVtYmVyIG9mIHRyaXBsZXRzIG9mCisJKGNoaWxkLWJ1cy1hZGRyZXNzLCBwYXJlbnQtYnVzLWFkZHJlc3MsIGxlbmd0aCkuIEVhY2ggdHJpcGxldCBzcGVjaWZpZWQKKwlkZXNjcmliZXMgYSBjb250aWd1b3VzIERNQSBhZGRyZXNzIHJhbmdlLgorCVRoZSBkbWEtcmFuZ2VzIHByb3BlcnR5IGlzIHVzZWQgdG8gZGVzY3JpYmUgdGhlIGRpcmVjdCBtZW1vcnkgYWNjZXNzIChETUEpCisJc3RydWN0dXJlIG9mIGEgbWVtb3J5LW1hcHBlZCBidXMgd2hvc2UgZGV2aWNlIHRyZWUgcGFyZW50IGNhbiBiZSBhY2Nlc3NlZAorCWZyb20gRE1BIG9wZXJhdGlvbnMgb3JpZ2luYXRpbmcgZnJvbSB0aGUgYnVzLiBJdCBwcm92aWRlcyBhIG1lYW5zIG9mCisJZGVmaW5pbmcgYSBtYXBwaW5nIG9yIHRyYW5zbGF0aW9uIGJldHdlZW4gdGhlIHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2Ugb2YKKwl0aGUgYnVzIGFuZCB0aGUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZSBvZiB0aGUgcGFyZW50IG9mIHRoZSBidXMuCisJKGZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBlUEFQUiBzcGVjaWZpY2F0aW9uKQorCisqIERNQSBCdXMgY2hpbGQKK09wdGlvbmFsIHByb3BlcnR5OgorLSBkbWEtcmFuZ2VzOiA8ZW1wdHk+IHZhbHVlLiBpZiBwcmVzZW50IC0gSXQgbWVhbnMgdGhhdCBETUEgYWRkcmVzc2VzCisJdHJhbnNsYXRpb24gaGFzIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgZGV2aWNlLgorLSBkbWEtY29oZXJlbnQ6IFByZXNlbnQgaWYgZG1hIG9wZXJhdGlvbnMgYXJlIGNvaGVyZW50CisKK0V4YW1wbGU6Citzb2MgeworCQljb21wYXRpYmxlID0gInRpLGtleXN0b25lIiwic2ltcGxlLWJ1cyI7CisJCXJhbmdlcyA9IDwweDAgMHgwIDB4MCAweGMwMDAwMDAwPjsKKwkJZG1hLXJhbmdlcyA9IDwweDgwMDAwMDAwIDB4OCAweDAwMDAwMDAwIDB4ODAwMDAwMDA+OworCisJCVsuLi5dCisKKwkJdXNiOiB1c2JAMjY4MDAwMCB7CisJCQljb21wYXRpYmxlID0gInRpLGtleXN0b25lLWR3YzMiOworCisJCQlbLi4uXQorCQkJZG1hLWNvaGVyZW50OworCQl9OworfTsKKworQXBwZW5kaXggQSAtIFNhbXBsZSBTT0Mgbm9kZSBmb3IgTVBDODU0MAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisJc29jQGUwMDAwMDAwIHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQljb21wYXRpYmxlID0gImZzbCxtcGM4NTQwLWNjc3IiLCAic2ltcGxlLWJ1cyI7CisJCWRldmljZV90eXBlID0gInNvYyI7CisJCXJhbmdlcyA9IDwweDAwMDAwMDAwIDB4ZTAwMDAwMDAgMHgwMDEwMDAwMD4KKwkJYnVzLWZyZXF1ZW5jeSA9IDwwPjsKKwkJaW50ZXJydXB0LXBhcmVudCA9IDwmcGljPjsKKworCQlldGhlcm5ldEAyNDAwMCB7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDE+OworCQkJZGV2aWNlX3R5cGUgPSAibmV0d29yayI7CisJCQltb2RlbCA9ICJUU0VDIjsKKwkJCWNvbXBhdGlibGUgPSAiZ2lhbmZhciIsICJzaW1wbGUtYnVzIjsKKwkJCXJlZyA9IDwweDI0MDAwIDB4MTAwMD47CisJCQlsb2NhbC1tYWMtYWRkcmVzcyA9IFsgMHgwMCAweEUwIDB4MEMgMHgwMCAweDczIDB4MDAgXTsKKwkJCWludGVycnVwdHMgPSA8MHgyOSAyIDB4MzAgMiAweDM0IDI+OworCQkJcGh5LWhhbmRsZSA9IDwmcGh5MD47CisJCQlzbGVlcCA9IDwmcG1jIDB4MDAwMDAwODA+OworCQkJcmFuZ2VzOworCisJCQltZGlvQDI0NTIwIHsKKwkJCQlyZWcgPSA8MHgyNDUyMCAweDIwPjsKKwkJCQljb21wYXRpYmxlID0gImZzbCxnaWFuZmFyLW1kaW8iOworCisJCQkJcGh5MDogZXRoZXJuZXQtcGh5QDAgeworCQkJCQlpbnRlcnJ1cHRzID0gPDUgMT47CisJCQkJCXJlZyA9IDwwPjsKKwkJCQl9OworCisJCQkJcGh5MTogZXRoZXJuZXQtcGh5QDEgeworCQkJCQlpbnRlcnJ1cHRzID0gPDUgMT47CisJCQkJCXJlZyA9IDwxPjsKKwkJCQl9OworCisJCQkJcGh5MzogZXRoZXJuZXQtcGh5QDMgeworCQkJCQlpbnRlcnJ1cHRzID0gPDcgMT47CisJCQkJCXJlZyA9IDwzPjsKKwkJCQl9OworCQkJfTsKKwkJfTsKKworCQlldGhlcm5ldEAyNTAwMCB7CisJCQlkZXZpY2VfdHlwZSA9ICJuZXR3b3JrIjsKKwkJCW1vZGVsID0gIlRTRUMiOworCQkJY29tcGF0aWJsZSA9ICJnaWFuZmFyIjsKKwkJCXJlZyA9IDwweDI1MDAwIDB4MTAwMD47CisJCQlsb2NhbC1tYWMtYWRkcmVzcyA9IFsgMHgwMCAweEUwIDB4MEMgMHgwMCAweDczIDB4MDEgXTsKKwkJCWludGVycnVwdHMgPSA8MHgxMyAyIDB4MTQgMiAweDE4IDI+OworCQkJcGh5LWhhbmRsZSA9IDwmcGh5MT47CisJCQlzbGVlcCA9IDwmcG1jIDB4MDAwMDAwNDA+OworCQl9OworCisJCWV0aGVybmV0QDI2MDAwIHsKKwkJCWRldmljZV90eXBlID0gIm5ldHdvcmsiOworCQkJbW9kZWwgPSAiRkVDIjsKKwkJCWNvbXBhdGlibGUgPSAiZ2lhbmZhciI7CisJCQlyZWcgPSA8MHgyNjAwMCAweDEwMDA+OworCQkJbG9jYWwtbWFjLWFkZHJlc3MgPSBbIDB4MDAgMHhFMCAweDBDIDB4MDAgMHg3MyAweDAyIF07CisJCQlpbnRlcnJ1cHRzID0gPDB4NDEgMj47CisJCQlwaHktaGFuZGxlID0gPCZwaHkzPjsKKwkJCXNsZWVwID0gPCZwbWMgMHgwMDAwMDAyMD47CisJCX07CisKKwkJc2VyaWFsQDQ1MDAgeworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCQkjc2l6ZS1jZWxscyA9IDwxPjsKKwkJCWNvbXBhdGlibGUgPSAiZnNsLG1wYzg1NDAtZHVhcnQiLCAic2ltcGxlLWJ1cyI7CisJCQlzbGVlcCA9IDwmcG1jIDB4MDAwMDAwMDI+OworCQkJcmFuZ2VzOworCisJCQlzZXJpYWxANDUwMCB7CisJCQkJZGV2aWNlX3R5cGUgPSAic2VyaWFsIjsKKwkJCQljb21wYXRpYmxlID0gIm5zMTY1NTAiOworCQkJCXJlZyA9IDwweDQ1MDAgMHgxMDA+OworCQkJCWNsb2NrLWZyZXF1ZW5jeSA9IDwwPjsKKwkJCQlpbnRlcnJ1cHRzID0gPDB4NDIgMj47CisJCQl9OworCisJCQlzZXJpYWxANDYwMCB7CisJCQkJZGV2aWNlX3R5cGUgPSAic2VyaWFsIjsKKwkJCQljb21wYXRpYmxlID0gIm5zMTY1NTAiOworCQkJCXJlZyA9IDwweDQ2MDAgMHgxMDA+OworCQkJCWNsb2NrLWZyZXF1ZW5jeSA9IDwwPjsKKwkJCQlpbnRlcnJ1cHRzID0gPDB4NDIgMj47CisJCQl9OworCQl9OworCisJCXBpYzogcGljQDQwMDAwIHsKKwkJCWludGVycnVwdC1jb250cm9sbGVyOworCQkJI2FkZHJlc3MtY2VsbHMgPSA8MD47CisJCQkjaW50ZXJydXB0LWNlbGxzID0gPDI+OworCQkJcmVnID0gPDB4NDAwMDAgMHg0MDAwMD47CisJCQljb21wYXRpYmxlID0gImNocnAsb3Blbi1waWMiOworCQkJZGV2aWNlX3R5cGUgPSAib3Blbi1waWMiOworCQl9OworCisJCWkyY0AzMDAwIHsKKwkJCWludGVycnVwdHMgPSA8MHg0MyAyPjsKKwkJCXJlZyA9IDwweDMwMDAgMHgxMDA+OworCQkJY29tcGF0aWJsZSAgPSAiZnNsLWkyYyI7CisJCQlkZnNycjsKKwkJCXNsZWVwID0gPCZwbWMgMHgwMDAwMDAwND47CisJCX07CisKKwkJcG1jOiBwb3dlckBlMDA3MCB7CisJCQljb21wYXRpYmxlID0gImZzbCxtcGM4NTQwLXBtYyIsICJmc2wsbXBjODU0OC1wbWMiOworCQkJcmVnID0gPDB4ZTAwNzAgMHgyMD47CisJCX07CisJfTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9jaGFuZ2VzZXRzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9jaGFuZ2VzZXRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzViYTVhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2NoYW5nZXNldHMudHh0CkBAIC0wLDAgKzEsNDAgQEAKK0EgRFQgY2hhbmdlc2V0IGlzIGEgbWV0aG9kIHdoaWNoIGFsbG93cyBvbmUgdG8gYXBwbHkgY2hhbmdlcworaW4gdGhlIGxpdmUgdHJlZSBpbiBzdWNoIGEgd2F5IHRoYXQgZWl0aGVyIHRoZSBmdWxsIHNldCBvZiBjaGFuZ2VzCit3aWxsIGJlIGFwcGxpZWQsIG9yIG5vbmUgb2YgdGhlbSB3aWxsIGJlLiBJZiBhbiBlcnJvciBvY2N1cnMgcGFydHdheQordGhyb3VnaCBhcHBseWluZyB0aGUgY2hhbmdlc2V0LCB0aGVuIHRoZSB0cmVlIHdpbGwgYmUgcm9sbGVkIGJhY2sgdG8gdGhlCitwcmV2aW91cyBzdGF0ZS4gQSBjaGFuZ2VzZXQgY2FuIGFsc28gYmUgcmVtb3ZlZCBhZnRlciBpdCBoYXMgYmVlbgorYXBwbGllZC4KKworV2hlbiBhIGNoYW5nZXNldCBpcyBhcHBsaWVkLCBhbGwgb2YgdGhlIGNoYW5nZXMgZ2V0IGFwcGxpZWQgdG8gdGhlIHRyZWUKK2F0IG9uY2UgYmVmb3JlIGVtaXR0aW5nIE9GX1JFQ09ORklHIG5vdGlmaWVycy4gVGhpcyBpcyBzbyB0aGF0IHRoZQorcmVjZWl2ZXIgc2VlcyBhIGNvbXBsZXRlIGFuZCBjb25zaXN0ZW50IHN0YXRlIG9mIHRoZSB0cmVlIHdoZW4gaXQKK3JlY2VpdmVzIHRoZSBub3RpZmllci4KKworVGhlIHNlcXVlbmNlIG9mIGEgY2hhbmdlc2V0IGlzIGFzIGZvbGxvd3MuCisKKzEuIG9mX2NoYW5nZXNldF9pbml0KCkgLSBpbml0aWFsaXplcyBhIGNoYW5nZXNldAorCisyLiBBIG51bWJlciBvZiBEVCB0cmVlIGNoYW5nZSBjYWxscywgb2ZfY2hhbmdlc2V0X2F0dGFjaF9ub2RlKCksCitvZl9jaGFuZ2VzZXRfZGV0YWNoX25vZGUoKSwgb2ZfY2hhbmdlc2V0X2FkZF9wcm9wZXJ0eSgpLAorb2ZfY2hhbmdlc2V0X3JlbW92ZV9wcm9wZXJ0eSwgb2ZfY2hhbmdlc2V0X3VwZGF0ZV9wcm9wZXJ0eSgpIHRvIHByZXBhcmUKK2Egc2V0IG9mIGNoYW5nZXMuIE5vIGNoYW5nZXMgdG8gdGhlIGFjdGl2ZSB0cmVlIGFyZSBtYWRlIGF0IHRoaXMgcG9pbnQuCitBbGwgdGhlIGNoYW5nZSBvcGVyYXRpb25zIGFyZSByZWNvcmRlZCBpbiB0aGUgb2ZfY2hhbmdlc2V0ICdlbnRyaWVzJworbGlzdC4KKworMy4gbXV0ZXhfbG9jayhvZl9tdXRleCkgLSBzdGFydHMgYSBjaGFuZ2VzZXQ7IFRoZSBnbG9iYWwgb2ZfbXV0ZXgKK2Vuc3VyZXMgdGhlcmUgY2FuIG9ubHkgYmUgb25lIGVkaXRvciBhdCBhIHRpbWUuCisKKzQuIG9mX2NoYW5nZXNldF9hcHBseSgpIC0gQXBwbHkgdGhlIGNoYW5nZXMgdG8gdGhlIHRyZWUuIEVpdGhlciB0aGUKK2VudGlyZSBjaGFuZ2VzZXQgd2lsbCBnZXQgYXBwbGllZCwgb3IgaWYgdGhlcmUgaXMgYW4gZXJyb3IgdGhlIHRyZWUgd2lsbAorYmUgcmVzdG9yZWQgdG8gdGhlIHByZXZpb3VzIHN0YXRlCisKKzUuIG11dGV4X3VubG9jayhvZl9tdXRleCkgLSBBbGwgb3BlcmF0aW9ucyBjb21wbGV0ZSwgcmVsZWFzZSB0aGUgbXV0ZXgKKworSWYgYSBzdWNjZXNzZnVsbHkgYXBwbGllZCBjaGFuZ2VzZXQgbmVlZHMgdG8gYmUgcmVtb3ZlZCwgaXQgY2FuIGJlIGRvbmUKK3dpdGggdGhlIGZvbGxvd2luZyBzZXF1ZW5jZS4KKworMS4gbXV0ZXhfbG9jayhvZl9tdXRleCkKKworMi4gb2ZfY2hhbmdlc2V0X3JldmVydCgpCisKKzMuIG11dGV4X3VubG9jayhvZl9tdXRleCkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9keW5hbWljLXJlc29sdXRpb24tbm90ZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2R5bmFtaWMtcmVzb2x1dGlvbi1ub3Rlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgzZDIzMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9keW5hbWljLXJlc29sdXRpb24tbm90ZXMudHh0CkBAIC0wLDAgKzEsMjUgQEAKK0RldmljZSBUcmVlIER5bmFtaWMgUmVzb2x2ZXIgTm90ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBpbi1rZXJuZWwKK0RldmljZSBUcmVlIHJlc29sdmVyLCByZXNpZGluZyBpbiBkcml2ZXJzL29mL3Jlc29sdmVyLmMgYW5kIGlzIGEKK2NvbXBhbmlvbiBkb2N1bWVudCB0byBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvZHQtb2JqZWN0LWludGVybmFsLnR4dFsxXQorCitIb3cgdGhlIHJlc29sdmVyIHdvcmtzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSByZXNvbHZlciBpcyBnaXZlbiBhcyBhbiBpbnB1dCBhbiBhcmJpdHJhcnkgdHJlZSBjb21waWxlZCB3aXRoIHRoZQorcHJvcGVyIGR0YyBvcHRpb24gYW5kIGhhdmluZyBhIC9wbHVnaW4vIHRhZy4gVGhpcyBnZW5lcmF0ZXMgdGhlCithcHByb3ByaWF0ZSBfX2ZpeHVwc19fICYgX19sb2NhbF9maXh1cHNfXyBub2RlcyBhcyBkZXNjcmliZWQgaW4gWzFdLgorCitJbiBzZXF1ZW5jZSB0aGUgcmVzb2x2ZXIgd29ya3MgYnkgdGhlIGZvbGxvd2luZyBzdGVwczoKKworMS4gR2V0IHRoZSBtYXhpbXVtIGRldmljZSB0cmVlIHBoYW5kbGUgdmFsdWUgZnJvbSB0aGUgbGl2ZSB0cmVlICsgMS4KKzIuIEFkanVzdCBhbGwgdGhlIGxvY2FsIHBoYW5kbGVzIG9mIHRoZSB0cmVlIHRvIHJlc29sdmUgYnkgdGhhdCBhbW91bnQuCiszLiBVc2luZyB0aGUgX19sb2NhbF9fZml4dXBzX18gbm9kZSBpbmZvcm1hdGlvbiBhZGp1c3QgYWxsIGxvY2FsIHJlZmVyZW5jZXMKKyAgIGJ5IHRoZSBzYW1lIGFtb3VudC4KKzQuIEZvciBlYWNoIHByb3BlcnR5IGluIHRoZSBfX2ZpeHVwc19fIG5vZGUgbG9jYXRlIHRoZSBub2RlIGl0IHJlZmVyZW5jZXMKKyAgIGluIHRoZSBsaXZlIHRyZWUuIFRoaXMgaXMgdGhlIGxhYmVsIHVzZWQgdG8gdGFnIHRoZSBub2RlLgorNS4gUmV0cmlldmUgdGhlIHBoYW5kbGUgb2YgdGhlIHRhcmdldCBvZiB0aGUgZml4dXAuCis2LiBGb3IgZWFjaCBmaXh1cCBpbiB0aGUgcHJvcGVydHkgbG9jYXRlIHRoZSBub2RlOnByb3BlcnR5Om9mZnNldCBsb2NhdGlvbgorICAgYW5kIHJlcGxhY2UgaXQgd2l0aCB0aGUgcGhhbmRsZSB2YWx1ZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9vZl91bml0dGVzdC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvb2ZfdW5pdHRlc3QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNGU3ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvb2ZfdW5pdHRlc3QudHh0CkBAIC0wLDAgKzEsMTk3IEBACitPcGVuIEZpcm13YXJlIERldmljZSBUcmVlIFVuaXR0ZXN0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0F1dGhvcjogR2F1cmF2IE1pbm9jaGEgPGdhdXJhdi5taW5vY2hhLm9zQGdtYWlsLmNvbT4KKworMS4gSW50cm9kdWN0aW9uCisKK1RoaXMgZG9jdW1lbnQgZXhwbGFpbnMgaG93IHRoZSB0ZXN0IGRhdGEgcmVxdWlyZWQgZm9yIGV4ZWN1dGluZyBPRiB1bml0dGVzdAoraXMgYXR0YWNoZWQgdG8gdGhlIGxpdmUgdHJlZSBkeW5hbWljYWxseSwgaW5kZXBlbmRlbnQgb2YgdGhlIG1hY2hpbmUncworYXJjaGl0ZWN0dXJlLgorCitJdCBpcyByZWNvbW1lbmRlZCB0byByZWFkIHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRzIGJlZm9yZSBtb3ZpbmcgYWhlYWQuCisKK1sxXSBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvdXNhZ2UtbW9kZWwudHh0CitbMl0gaHR0cDovL3d3dy5kZXZpY2V0cmVlLm9yZy9EZXZpY2VfVHJlZV9Vc2FnZQorCitPRiBTZWxmdGVzdCBoYXMgYmVlbiBkZXNpZ25lZCB0byB0ZXN0IHRoZSBpbnRlcmZhY2UgKGluY2x1ZGUvbGludXgvb2YuaCkKK3Byb3ZpZGVkIHRvIGRldmljZSBkcml2ZXIgZGV2ZWxvcGVycyB0byBmZXRjaCB0aGUgZGV2aWNlIGluZm9ybWF0aW9uLi5ldGMuCitmcm9tIHRoZSB1bmZsYXR0ZW5lZCBkZXZpY2UgdHJlZSBkYXRhIHN0cnVjdHVyZS4gVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBieQorbW9zdCBvZiB0aGUgZGV2aWNlIGRyaXZlcnMgaW4gdmFyaW91cyB1c2UgY2FzZXMuCisKKworMi4gVGVzdC1kYXRhCisKK1RoZSBEZXZpY2UgVHJlZSBTb3VyY2UgZmlsZSAoZHJpdmVycy9vZi91bml0dGVzdC1kYXRhL3Rlc3RjYXNlcy5kdHMpIGNvbnRhaW5zCit0aGUgdGVzdCBkYXRhIHJlcXVpcmVkIGZvciBleGVjdXRpbmcgdGhlIHVuaXQgdGVzdHMgYXV0b21hdGVkIGluCitkcml2ZXJzL29mL3VuaXR0ZXN0LmMuIEN1cnJlbnRseSwgZm9sbG93aW5nIERldmljZSBUcmVlIFNvdXJjZSBJbmNsdWRlIGZpbGVzCisoLmR0c2kpIGFyZSBpbmNsdWRlZCBpbiB0ZXN0Y2FzZXMuZHRzOgorCitkcml2ZXJzL29mL3VuaXR0ZXN0LWRhdGEvdGVzdHMtaW50ZXJydXB0cy5kdHNpCitkcml2ZXJzL29mL3VuaXR0ZXN0LWRhdGEvdGVzdHMtcGxhdGZvcm0uZHRzaQorZHJpdmVycy9vZi91bml0dGVzdC1kYXRhL3Rlc3RzLXBoYW5kbGUuZHRzaQorZHJpdmVycy9vZi91bml0dGVzdC1kYXRhL3Rlc3RzLW1hdGNoLmR0c2kKKworV2hlbiB0aGUga2VybmVsIGlzIGJ1aWxkIHdpdGggT0ZfU0VMRlRFU1QgZW5hYmxlZCwgdGhlbiB0aGUgZm9sbG93aW5nIG1ha2UgcnVsZQorCiskKG9iaikvJS5kdGI6ICQoc3JjKS8lLmR0cyBGT1JDRQorCSQoY2FsbCBpZl9jaGFuZ2VkX2RlcCwgZHRjKQorCitpcyB1c2VkIHRvIGNvbXBpbGUgdGhlIERUIHNvdXJjZSBmaWxlICh0ZXN0Y2FzZXMuZHRzKSBpbnRvIGEgYmluYXJ5IGJsb2IKKyh0ZXN0Y2FzZXMuZHRiKSwgYWxzbyByZWZlcnJlZCBhcyBmbGF0dGVuZWQgRFQuCisKK0FmdGVyIHRoYXQsIHVzaW5nIHRoZSBmb2xsb3dpbmcgcnVsZSB0aGUgYmluYXJ5IGJsb2IgYWJvdmUgaXMgd3JhcHBlZCBhcyBhbgorYXNzZW1ibHkgZmlsZSAodGVzdGNhc2VzLmR0Yi5TKS4KKworJChvYmopLyUuZHRiLlM6ICQob2JqKS8lLmR0YgorCSQoY2FsbCBjbWQsIGR0X1NfZHRiKQorCitUaGUgYXNzZW1ibHkgZmlsZSBpcyBjb21waWxlZCBpbnRvIGFuIG9iamVjdCBmaWxlICh0ZXN0Y2FzZXMuZHRiLm8pLCBhbmQgaXMKK2xpbmtlZCBpbnRvIHRoZSBrZXJuZWwgaW1hZ2UuCisKKworMi4xLiBBZGRpbmcgdGhlIHRlc3QgZGF0YQorCitVbi1mbGF0dGVuZWQgZGV2aWNlIHRyZWUgc3RydWN0dXJlOgorCitVbi1mbGF0dGVuZWQgZGV2aWNlIHRyZWUgY29uc2lzdHMgb2YgY29ubmVjdGVkIGRldmljZV9ub2RlKHMpIGluIGZvcm0gb2YgYSB0cmVlCitzdHJ1Y3R1cmUgZGVzY3JpYmVkIGJlbG93LgorCisvLyBmb2xsb3dpbmcgc3RydWN0IG1lbWJlcnMgYXJlIHVzZWQgdG8gY29uc3RydWN0IHRoZSB0cmVlCitzdHJ1Y3QgZGV2aWNlX25vZGUgeworICAgIC4uLgorICAgIHN0cnVjdCAgZGV2aWNlX25vZGUgKnBhcmVudDsKKyAgICBzdHJ1Y3QgIGRldmljZV9ub2RlICpjaGlsZDsKKyAgICBzdHJ1Y3QgIGRldmljZV9ub2RlICpzaWJsaW5nOworICAgIC4uLgorIH07CisKK0ZpZ3VyZSAxLCBkZXNjcmliZXMgYSBnZW5lcmljIHN0cnVjdHVyZSBvZiBtYWNoaW5lJ3MgdW4tZmxhdHRlbmVkIGRldmljZSB0cmVlCitjb25zaWRlcmluZyBvbmx5IGNoaWxkIGFuZCBzaWJsaW5nIHBvaW50ZXJzLiBUaGVyZSBleGlzdHMgYW5vdGhlciBwb2ludGVyLAorKnBhcmVudCwgdGhhdCBpcyB1c2VkIHRvIHRyYXZlcnNlIHRoZSB0cmVlIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbi4gU28sIGF0CithIHBhcnRpY3VsYXIgbGV2ZWwgdGhlIGNoaWxkIG5vZGUgYW5kIGFsbCB0aGUgc2libGluZyBub2RlcyB3aWxsIGhhdmUgYSBwYXJlbnQKK3BvaW50ZXIgcG9pbnRpbmcgdG8gYSBjb21tb24gbm9kZSAoZS5nLiBjaGlsZDEsIHNpYmxpbmcyLCBzaWJsaW5nMywgc2libGluZzQncworcGFyZW50IHBvaW50cyB0byByb290IG5vZGUpCisKK3Jvb3QgKCcvJykKKyAgIHwKK2NoaWxkMSAtPiBzaWJsaW5nMiAtPiBzaWJsaW5nMyAtPiBzaWJsaW5nNCAtPiBudWxsCisgICB8ICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICAgfAorICAgfCAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgbnVsbAorICAgfCAgICAgICAgIHwgICAgICAgICAgIHwKKyAgIHwgICAgICAgICB8ICAgICAgICBjaGlsZDMxIC0+IHNpYmxpbmczMiAtPiBudWxsCisgICB8ICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8CisgICB8ICAgICAgICAgfCAgICAgICAgICBudWxsICAgICAgIG51bGwKKyAgIHwgICAgICAgICB8CisgICB8ICAgICAgY2hpbGQyMSAtPiBzaWJsaW5nMjIgLT4gc2libGluZzIzIC0+IG51bGwKKyAgIHwgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICB8CisgICB8ICAgICAgICBudWxsICAgICAgIG51bGwgICAgICAgICBudWxsCisgICB8CitjaGlsZDExIC0+IHNpYmxpbmcxMiAtPiBzaWJsaW5nMTMgLT4gc2libGluZzE0IC0+IG51bGwKKyAgIHwgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgICBudWxsCisgICB8ICAgICAgICAgICB8ICAgICAgICAgICB8CisgIG51bGwgICAgICAgIG51bGwgICAgICAgY2hpbGQxMzEgLT4gbnVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsCisKK0ZpZ3VyZSAxOiBHZW5lcmljIHN0cnVjdHVyZSBvZiB1bi1mbGF0dGVuZWQgZGV2aWNlIHRyZWUKKworCitCZWZvcmUgZXhlY3V0aW5nIE9GIHVuaXR0ZXN0LCBpdCBpcyByZXF1aXJlZCB0byBhdHRhY2ggdGhlIHRlc3QgZGF0YSB0bworbWFjaGluZSdzIGRldmljZSB0cmVlIChpZiBwcmVzZW50KS4gU28sIHdoZW4gc2VsZnRlc3RfZGF0YV9hZGQoKSBpcyBjYWxsZWQsCithdCBmaXJzdCBpdCByZWFkcyB0aGUgZmxhdHRlbmVkIGRldmljZSB0cmVlIGRhdGEgbGlua2VkIGludG8gdGhlIGtlcm5lbCBpbWFnZQordmlhIHRoZSBmb2xsb3dpbmcga2VybmVsIHN5bWJvbHM6CisKK19fZHRiX3Rlc3RjYXNlc19iZWdpbiAtIGFkZHJlc3MgbWFya2luZyB0aGUgc3RhcnQgb2YgdGVzdCBkYXRhIGJsb2IKK19fZHRiX3Rlc3RjYXNlc19lbmQgICAtIGFkZHJlc3MgbWFya2luZyB0aGUgZW5kIG9mIHRlc3QgZGF0YSBibG9iCisKK1NlY29uZGx5LCBpdCBjYWxscyBvZl9mZHRfdW5mbGF0dGVuX3RyZWUoKSB0byB1bmZsYXR0ZW4gdGhlIGZsYXR0ZW5lZAorYmxvYi4gQW5kIGZpbmFsbHksIGlmIHRoZSBtYWNoaW5lJ3MgZGV2aWNlIHRyZWUgKGkuZSBsaXZlIHRyZWUpIGlzIHByZXNlbnQsCit0aGVuIGl0IGF0dGFjaGVzIHRoZSB1bmZsYXR0ZW5lZCB0ZXN0IGRhdGEgdHJlZSB0byB0aGUgbGl2ZSB0cmVlLCBlbHNlIGl0CithdHRhY2hlcyBpdHNlbGYgYXMgYSBsaXZlIGRldmljZSB0cmVlLgorCithdHRhY2hfbm9kZV9hbmRfY2hpbGRyZW4oKSB1c2VzIG9mX2F0dGFjaF9ub2RlKCkgdG8gYXR0YWNoIHRoZSBub2RlcyBpbnRvIHRoZQorbGl2ZSB0cmVlIGFzIGV4cGxhaW5lZCBiZWxvdy4gVG8gZXhwbGFpbiB0aGUgc2FtZSwgdGhlIHRlc3QgZGF0YSB0cmVlIGRlc2NyaWJlZAorIGluIEZpZ3VyZSAyIGlzIGF0dGFjaGVkIHRvIHRoZSBsaXZlIHRyZWUgZGVzY3JpYmVkIGluIEZpZ3VyZSAxLgorCityb290ICgnLycpCisgICAgfAorIHRlc3RjYXNlLWRhdGEKKyAgICB8CisgdGVzdC1jaGlsZDAgLT4gdGVzdC1zaWJsaW5nMSAtPiB0ZXN0LXNpYmxpbmcyIC0+IHRlc3Qtc2libGluZzMgLT4gbnVsbAorICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfAorIHRlc3QtY2hpbGQwMSAgICAgIG51bGwgICAgICAgICAgICAgbnVsbCAgICAgICAgICAgICBudWxsCisKKworRmlndXJlIDI6IEV4YW1wbGUgdGVzdCBkYXRhIHRyZWUgdG8gYmUgYXR0YWNoZWQgdG8gbGl2ZSB0cmVlLgorCitBY2NvcmRpbmcgdG8gdGhlIHNjZW5hcmlvIGFib3ZlLCB0aGUgbGl2ZSB0cmVlIGlzIGFscmVhZHkgcHJlc2VudCBzbyBpdCBpc24ndAorcmVxdWlyZWQgdG8gYXR0YWNoIHRoZSByb290KCcvJykgbm9kZS4gQWxsIG90aGVyIG5vZGVzIGFyZSBhdHRhY2hlZCBieSBjYWxsaW5nCitvZl9hdHRhY2hfbm9kZSgpIG9uIGVhY2ggbm9kZS4KKworSW4gdGhlIGZ1bmN0aW9uIG9mX2F0dGFjaF9ub2RlKCksIHRoZSBuZXcgbm9kZSBpcyBhdHRhY2hlZCBhcyB0aGUgY2hpbGQgb2YgdGhlCitnaXZlbiBwYXJlbnQgaW4gbGl2ZSB0cmVlLiBCdXQsIGlmIHBhcmVudCBhbHJlYWR5IGhhcyBhIGNoaWxkIHRoZW4gdGhlIG5ldyBub2RlCityZXBsYWNlcyB0aGUgY3VycmVudCBjaGlsZCBhbmQgdHVybnMgaXQgaW50byBpdHMgc2libGluZy4gU28sIHdoZW4gdGhlIHRlc3RjYXNlCitkYXRhIG5vZGUgaXMgYXR0YWNoZWQgdG8gdGhlIGxpdmUgdHJlZSBhYm92ZSAoRmlndXJlIDEpLCB0aGUgZmluYWwgc3RydWN0dXJlIGlzCisgYXMgc2hvd24gaW4gRmlndXJlIDMuCisKK3Jvb3QgKCcvJykKKyAgIHwKK3Rlc3RjYXNlLWRhdGEgLT4gY2hpbGQxIC0+IHNpYmxpbmcyIC0+IHNpYmxpbmczIC0+IHNpYmxpbmc0IC0+IG51bGwKKyAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgIHwKKyAoLi4uKSAgICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgbnVsbAorICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIGNoaWxkMzEgLT4gc2libGluZzMyIC0+IG51bGwKKyAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgbnVsbCAgICAgICAgbnVsbAorICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgIHwgICAgICAgIGNoaWxkMjEgLT4gc2libGluZzIyIC0+IHNpYmxpbmcyMyAtPiBudWxsCisgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBudWxsICAgICAgICBudWxsICAgICAgICAgbnVsbAorICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICBjaGlsZDExIC0+IHNpYmxpbmcxMiAtPiBzaWJsaW5nMTMgLT4gc2libGluZzE0IC0+IG51bGwKKyAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgbnVsbCAgICAgICBudWxsICAgICAgICAgIHwgICAgICAgICAgIG51bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQxMzEgLT4gbnVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Jvb3QgKCcvJykKKyAgIHwKK3Rlc3RjYXNlLWRhdGEgLT4gY2hpbGQxIC0+IHNpYmxpbmcyIC0+IHNpYmxpbmczIC0+IHNpYmxpbmc0IC0+IG51bGwKKyAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgKC4uLikgICAgICAoLi4uKSAgICAgICAoLi4uKSAgICAgICAgbnVsbAorICAgfAordGVzdC1zaWJsaW5nMyAtPiB0ZXN0LXNpYmxpbmcyIC0+IHRlc3Qtc2libGluZzEgLT4gdGVzdC1jaGlsZDAgLT4gbnVsbAorICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfAorICBudWxsICAgICAgICAgICAgIG51bGwgICAgICAgICAgICAgICAgbnVsbCAgICAgICAgIHRlc3QtY2hpbGQwMQorCisKK0ZpZ3VyZSAzOiBMaXZlIGRldmljZSB0cmVlIHN0cnVjdHVyZSBhZnRlciBhdHRhY2hpbmcgdGhlIHRlc3RjYXNlLWRhdGEuCisKKworQXN0dXRlIHJlYWRlcnMgd291bGQgaGF2ZSBub3RpY2VkIHRoYXQgdGVzdC1jaGlsZDAgbm9kZSBiZWNvbWVzIHRoZSBsYXN0CitzaWJsaW5nIGNvbXBhcmVkIHRvIHRoZSBlYXJsaWVyIHN0cnVjdHVyZSAoRmlndXJlIDIpLiBBZnRlciBhdHRhY2hpbmcgZmlyc3QKK3Rlc3QtY2hpbGQwIHRoZSB0ZXN0LXNpYmxpbmcxIGlzIGF0dGFjaGVkIHRoYXQgcHVzaGVzIHRoZSBjaGlsZCBub2RlCisoaS5lLiB0ZXN0LWNoaWxkMCkgdG8gYmVjb21lIGEgc2libGluZyBhbmQgbWFrZXMgaXRzZWxmIGEgY2hpbGQgbm9kZSwKKyBhcyBtZW50aW9uZWQgYWJvdmUuCisKK0lmIGEgZHVwbGljYXRlIG5vZGUgaXMgZm91bmQgKGkuZS4gaWYgYSBub2RlIHdpdGggc2FtZSBmdWxsX25hbWUgcHJvcGVydHkgaXMKK2FscmVhZHkgcHJlc2VudCBpbiB0aGUgbGl2ZSB0cmVlKSwgdGhlbiB0aGUgbm9kZSBpc24ndCBhdHRhY2hlZCByYXRoZXIgaXRzCitwcm9wZXJ0aWVzIGFyZSB1cGRhdGVkIHRvIHRoZSBsaXZlIHRyZWUncyBub2RlIGJ5IGNhbGxpbmcgdGhlIGZ1bmN0aW9uCit1cGRhdGVfbm9kZV9wcm9wZXJ0aWVzKCkuCisKKworMi4yLiBSZW1vdmluZyB0aGUgdGVzdCBkYXRhCisKK09uY2UgdGhlIHRlc3QgY2FzZSBleGVjdXRpb24gaXMgY29tcGxldGUsIHNlbGZ0ZXN0X2RhdGFfcmVtb3ZlIGlzIGNhbGxlZCBpbgorb3JkZXIgdG8gcmVtb3ZlIHRoZSBkZXZpY2Ugbm9kZXMgYXR0YWNoZWQgaW5pdGlhbGx5IChmaXJzdCB0aGUgbGVhZiBub2RlcyBhcmUKK2RldGFjaGVkIGFuZCB0aGVuIG1vdmluZyB1cCB0aGUgcGFyZW50IG5vZGVzIGFyZSByZW1vdmVkLCBhbmQgZXZlbnR1YWxseSB0aGUKK3dob2xlIHRyZWUpLiBzZWxmdGVzdF9kYXRhX3JlbW92ZSgpIGNhbGxzIGRldGFjaF9ub2RlX2FuZF9jaGlsZHJlbigpIHRoYXQgdXNlcworb2ZfZGV0YWNoX25vZGUoKSB0byBkZXRhY2ggdGhlIG5vZGVzIGZyb20gdGhlIGxpdmUgZGV2aWNlIHRyZWUuCisKK1RvIGRldGFjaCBhIG5vZGUsIG9mX2RldGFjaF9ub2RlKCkgZWl0aGVyIHVwZGF0ZXMgdGhlIGNoaWxkIHBvaW50ZXIgb2YgZ2l2ZW4KK25vZGUncyBwYXJlbnQgdG8gaXRzIHNpYmxpbmcgb3IgYXR0YWNoZXMgdGhlIHByZXZpb3VzIHNpYmxpbmcgdG8gdGhlIGdpdmVuCitub2RlJ3Mgc2libGluZywgYXMgYXBwcm9wcmlhdGUuIFRoYXQgaXMgaXQgOikKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9vdmVybGF5LW5vdGVzLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9vdmVybGF5LW5vdGVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDE4YTZjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL292ZXJsYXktbm90ZXMudHh0CkBAIC0wLDAgKzEsMTMzIEBACitEZXZpY2UgVHJlZSBPdmVybGF5IE5vdGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaW4ta2VybmVsCitkZXZpY2UgdHJlZSBvdmVybGF5IGZ1bmN0aW9uYWxpdHkgcmVzaWRpbmcgaW4gZHJpdmVycy9vZi9vdmVybGF5LmMgYW5kIGlzIGEKK2NvbXBhbmlvbiBkb2N1bWVudCB0byBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvZHQtb2JqZWN0LWludGVybmFsLnR4dFsxXSAmCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvZHluYW1pYy1yZXNvbHV0aW9uLW5vdGVzLnR4dFsyXQorCitIb3cgb3ZlcmxheXMgd29yaworLS0tLS0tLS0tLS0tLS0tLS0KKworQSBEZXZpY2UgVHJlZSdzIG92ZXJsYXkgcHVycG9zZSBpcyB0byBtb2RpZnkgdGhlIGtlcm5lbCdzIGxpdmUgdHJlZSwgYW5kCitoYXZlIHRoZSBtb2RpZmljYXRpb24gYWZmZWN0aW5nIHRoZSBzdGF0ZSBvZiB0aGUga2VybmVsIGluIGEgd2F5IHRoYXQKK2lzIHJlZmxlY3RpbmcgdGhlIGNoYW5nZXMuCitTaW5jZSB0aGUga2VybmVsIG1haW5seSBkZWFscyB3aXRoIGRldmljZXMsIGFueSBuZXcgZGV2aWNlIG5vZGUgdGhhdCByZXN1bHQKK2luIGFuIGFjdGl2ZSBkZXZpY2Ugc2hvdWxkIGhhdmUgaXQgY3JlYXRlZCB3aGlsZSBpZiB0aGUgZGV2aWNlIG5vZGUgaXMgZWl0aGVyCitkaXNhYmxlZCBvciByZW1vdmVkIGFsbCB0b2dldGhlciwgdGhlIGFmZmVjdGVkIGRldmljZSBzaG91bGQgYmUgZGVyZWdpc3RlcmVkLgorCitMZXRzIHRha2UgYW4gZXhhbXBsZSB3aGVyZSB3ZSBoYXZlIGEgZm9vIGJvYXJkIHdpdGggdGhlIGZvbGxvd2luZyBiYXNlIHRyZWUKK3doaWNoIGlzIHRha2VuIGZyb20gWzFdLgorCistLS0tIGZvby5kdHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkvKiBGT08gcGxhdGZvcm0gKi8KKwkvIHsKKwkJY29tcGF0aWJsZSA9ICJjb3JwLGZvbyI7CisKKwkJLyogc2hhcmVkIHJlc291cmNlcyAqLworCQlyZXM6IHJlcyB7CisJCX07CisKKwkJLyogT24gY2hpcCBwZXJpcGhlcmFscyAqLworCQlvY3A6IG9jcCB7CisJCQkvKiBwZXJpcGhlcmFscyB0aGF0IGFyZSBhbHdheXMgaW5zdGFudGlhdGVkICovCisJCQlwZXJpcGhlcmFsMSB7IC4uLiB9OworCQl9CisJfTsKKy0tLS0gZm9vLmR0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgb3ZlcmxheSBiYXIuZHRzLCB3aGVuIGxvYWRlZCAoYW5kIHJlc29sdmVkIGFzIGRlc2NyaWJlZCBpbiBbMl0pIHNob3VsZAorCistLS0tIGJhci5kdHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy9wbHVnaW4vOwkvKiBhbGxvdyB1bmRlZmluZWQgbGFiZWwgcmVmZXJlbmNlcyBhbmQgcmVjb3JkIHRoZW0gKi8KKy8geworCS4uLi4JLyogdmFyaW91cyBwcm9wZXJ0aWVzIGZvciBsb2FkZXIgdXNlOyBpLmUuIHBhcnQgaWQgZXRjLiAqLworCWZyYWdtZW50QDAgeworCQl0YXJnZXQgPSA8Jm9jcD47CisJCV9fb3ZlcmxheV9fIHsKKwkJCS8qIGJhciBwZXJpcGhlcmFsICovCisJCQliYXIgeworCQkJCWNvbXBhdGlibGUgPSAiY29ycCxiYXIiOworCQkJCS4uLiAvKiB2YXJpb3VzIHByb3BlcnRpZXMgYW5kIGNoaWxkIG5vZGVzICovCisJCQl9CisJCX07CisJfTsKK307CistLS0tIGJhci5kdHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworcmVzdWx0IGluIGZvbytiYXIuZHRzCisKKy0tLS0gZm9vK2Jhci5kdHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCS8qIEZPTyBwbGF0Zm9ybSArIGJhciBwZXJpcGhlcmFsICovCisJLyB7CisJCWNvbXBhdGlibGUgPSAiY29ycCxmb28iOworCisJCS8qIHNoYXJlZCByZXNvdXJjZXMgKi8KKwkJcmVzOiByZXMgeworCQl9OworCisJCS8qIE9uIGNoaXAgcGVyaXBoZXJhbHMgKi8KKwkJb2NwOiBvY3AgeworCQkJLyogcGVyaXBoZXJhbHMgdGhhdCBhcmUgYWx3YXlzIGluc3RhbnRpYXRlZCAqLworCQkJcGVyaXBoZXJhbDEgeyAuLi4gfTsKKworCQkJLyogYmFyIHBlcmlwaGVyYWwgKi8KKwkJCWJhciB7CisJCQkJY29tcGF0aWJsZSA9ICJjb3JwLGJhciI7CisJCQkJLi4uIC8qIHZhcmlvdXMgcHJvcGVydGllcyBhbmQgY2hpbGQgbm9kZXMgKi8KKwkJCX0KKwkJfQorCX07CistLS0tIGZvbytiYXIuZHRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQXMgYSByZXN1bHQgb2YgdGhlIG92ZXJsYXksIGEgbmV3IGRldmljZSBub2RlIChiYXIpIGhhcyBiZWVuIGNyZWF0ZWQKK3NvIGEgYmFyIHBsYXRmb3JtIGRldmljZSB3aWxsIGJlIHJlZ2lzdGVyZWQgYW5kIGlmIGEgbWF0Y2hpbmcgZGV2aWNlIGRyaXZlcgoraXMgbG9hZGVkIHRoZSBkZXZpY2Ugd2lsbCBiZSBjcmVhdGVkIGFzIGV4cGVjdGVkLgorCitPdmVybGF5IGluLWtlcm5lbCBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBBUEkgaXMgcXVpdGUgZWFzeSB0byB1c2UuCisKKzEuIENhbGwgb2Zfb3ZlcmxheV9jcmVhdGUoKSB0byBjcmVhdGUgYW5kIGFwcGx5IGFuIG92ZXJsYXkuIFRoZSByZXR1cm4gdmFsdWUKK2lzIGEgY29va2llIGlkZW50aWZ5aW5nIHRoaXMgb3ZlcmxheS4KKworMi4gQ2FsbCBvZl9vdmVybGF5X2Rlc3Ryb3koKSB0byByZW1vdmUgYW5kIGNsZWFudXAgdGhlIG92ZXJsYXkgcHJldmlvdXNseQorY3JlYXRlZCB2aWEgdGhlIGNhbGwgdG8gb2Zfb3ZlcmxheV9jcmVhdGUoKS4gUmVtb3ZhbCBvZiBhbiBvdmVybGF5IHRoYXQKK2lzIHN0YWNrZWQgYnkgYW5vdGhlciB3aWxsIG5vdCBiZSBwZXJtaXR0ZWQuCisKK0ZpbmFsbHksIGlmIHlvdSBuZWVkIHRvIHJlbW92ZSBhbGwgb3ZlcmxheXMgaW4gb25lLWdvLCBqdXN0IGNhbGwKK29mX292ZXJsYXlfZGVzdHJveV9hbGwoKSB3aGljaCB3aWxsIHJlbW92ZSBldmVyeSBzaW5nbGUgb25lIGluIHRoZSBjb3JyZWN0CitvcmRlci4KKworT3ZlcmxheSBEVFMgRm9ybWF0CistLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIERUUyBvZiBhbiBvdmVybGF5IHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgZm9ybWF0OgorCit7CisJLyogaWdub3JlZCBwcm9wZXJ0aWVzIGJ5IHRoZSBvdmVybGF5ICovCisKKwlmcmFnbWVudEAwIHsJLyogZmlyc3QgY2hpbGQgbm9kZSAqLworCisJCXRhcmdldD08cGhhbmRsZT47CS8qIHBoYW5kbGUgdGFyZ2V0IG9mIHRoZSBvdmVybGF5ICovCisJb3IKKwkJdGFyZ2V0LXBhdGg9Ii9wYXRoIjsJLyogdGFyZ2V0IHBhdGggb2YgdGhlIG92ZXJsYXkgKi8KKworCQlfX292ZXJsYXlfXyB7CisJCQlwcm9wZXJ0eS1hOwkvKiBhZGQgcHJvcGVydHktYSB0byB0aGUgdGFyZ2V0ICovCisJCQlub2RlLWEgewkvKiBhZGQgdG8gYW4gZXhpc3RpbmcsIG9yIGNyZWF0ZSBhIG5vZGUtYSAqLworCQkJCS4uLgorCQkJfTsKKwkJfTsKKwl9CisJZnJhZ21lbnRAMSB7CS8qIHNlY29uZCBjaGlsZCBub2RlICovCisJCS4uLgorCX07CisJLyogbW9yZSBmcmFnbWVudHMgZm9sbG93ICovCit9CisKK1VzaW5nIHRoZSBub24tcGhhbmRsZSBiYXNlZCB0YXJnZXQgbWV0aG9kIGFsbG93cyBvbmUgdG8gdXNlIGEgYmFzZSBEVCB3aGljaCBkb2VzCitub3QgY29udGFpbiBhIF9fc3ltYm9sc19fIG5vZGUsIGkuZS4gaXQgd2FzIG5vdCBjb21waWxlZCB3aXRoIHRoZSAtQCBvcHRpb24uCitUaGUgX19zeW1ib2xzX18gbm9kZSBpcyBvbmx5IHJlcXVpcmVkIGZvciB0aGUgdGFyZ2V0PTxwaGFuZGxlPiBtZXRob2QsIHNpbmNlIGl0Citjb250YWlucyB0aGUgaW5mb3JtYXRpb24gcmVxdWlyZWQgdG8gbWFwIGZyb20gYSBwaGFuZGxlIHRvIGEgdHJlZSBsb2NhdGlvbi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS90b2RvLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS90b2RvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTEzOWQxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL3RvZG8udHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RvZG8gbGlzdCBmb3IgZGV2aWNldHJlZToKKworPT09IEdlbmVyYWwgc3RydWN0dXJlID09PQorLSBTd2l0Y2ggZnJvbSBjdXN0b20gbGlzdHMgdG8gKGgpbGlzdF9oZWFkIGZvciBub2RlcyBhbmQgcHJvcGVydGllcyBzdHJ1Y3R1cmUKKworPT09IENPTkZJR19PRl9EWU5BTUlDID09PQorLSBTd2l0Y2ggdG8gUkNVIGZvciB0cmVlIHVwZGF0ZXMgYW5kIGdldCByaWQgb2YgZ2xvYmFsIHNwaW5sb2NrCistIERvY3VtZW50IG5vZGUgbGlmZWN5Y2xlIGZvciBDT05GSUdfT0ZfRFlOQU1JQworLSBBbHdheXMgc2V0IC0+ZnVsbF9uYW1lIGF0IG9mX2F0dGFjaF9ub2RlKCkgdGltZQorLSBwc2VyaWVzOiBHZXQgcmlkIG9mIG9wZW4tY29kZWQgdHJlZSBtb2RpZmljYXRpb24gZnJvbSBhcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvZGxwYXIuYwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL3VzYWdlLW1vZGVsLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS91c2FnZS1tb2RlbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI2YjNkMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS91c2FnZS1tb2RlbC50eHQKQEAgLTAsMCArMSw0MTUgQEAKK0xpbnV4IGFuZCB0aGUgRGV2aWNlIFRyZWUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBMaW51eCB1c2FnZSBtb2RlbCBmb3IgZGV2aWNlIHRyZWUgZGF0YQorCitBdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KKworVGhpcyBhcnRpY2xlIGRlc2NyaWJlcyBob3cgTGludXggdXNlcyB0aGUgZGV2aWNlIHRyZWUuICBBbiBvdmVydmlldyBvZgordGhlIGRldmljZSB0cmVlIGRhdGEgZm9ybWF0IGNhbiBiZSBmb3VuZCBvbiB0aGUgZGV2aWNlIHRyZWUgdXNhZ2UgcGFnZQorYXQgZGV2aWNldHJlZS5vcmdbMV0uCisKK1sxXSBodHRwOi8vZGV2aWNldHJlZS5vcmcvRGV2aWNlX1RyZWVfVXNhZ2UKKworVGhlICJPcGVuIEZpcm13YXJlIERldmljZSBUcmVlIiwgb3Igc2ltcGx5IERldmljZSBUcmVlIChEVCksIGlzIGEgZGF0YQorc3RydWN0dXJlIGFuZCBsYW5ndWFnZSBmb3IgZGVzY3JpYmluZyBoYXJkd2FyZS4gIE1vcmUgc3BlY2lmaWNhbGx5LCBpdAoraXMgYSBkZXNjcmlwdGlvbiBvZiBoYXJkd2FyZSB0aGF0IGlzIHJlYWRhYmxlIGJ5IGFuIG9wZXJhdGluZyBzeXN0ZW0KK3NvIHRoYXQgdGhlIG9wZXJhdGluZyBzeXN0ZW0gZG9lc24ndCBuZWVkIHRvIGhhcmQgY29kZSBkZXRhaWxzIG9mIHRoZQorbWFjaGluZS4KKworU3RydWN0dXJhbGx5LCB0aGUgRFQgaXMgYSB0cmVlLCBvciBhY3ljbGljIGdyYXBoIHdpdGggbmFtZWQgbm9kZXMsIGFuZAorbm9kZXMgbWF5IGhhdmUgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBuYW1lZCBwcm9wZXJ0aWVzIGVuY2Fwc3VsYXRpbmcKK2FyYml0cmFyeSBkYXRhLiAgQSBtZWNoYW5pc20gYWxzbyBleGlzdHMgdG8gY3JlYXRlIGFyYml0cmFyeQorbGlua3MgZnJvbSBvbmUgbm9kZSB0byBhbm90aGVyIG91dHNpZGUgb2YgdGhlIG5hdHVyYWwgdHJlZSBzdHJ1Y3R1cmUuCisKK0NvbmNlcHR1YWxseSwgYSBjb21tb24gc2V0IG9mIHVzYWdlIGNvbnZlbnRpb25zLCBjYWxsZWQgJ2JpbmRpbmdzJywKK2lzIGRlZmluZWQgZm9yIGhvdyBkYXRhIHNob3VsZCBhcHBlYXIgaW4gdGhlIHRyZWUgdG8gZGVzY3JpYmUgdHlwaWNhbAoraGFyZHdhcmUgY2hhcmFjdGVyaXN0aWNzIGluY2x1ZGluZyBkYXRhIGJ1c3NlcywgaW50ZXJydXB0IGxpbmVzLCBHUElPCitjb25uZWN0aW9ucywgYW5kIHBlcmlwaGVyYWwgZGV2aWNlcy4KKworQXMgbXVjaCBhcyBwb3NzaWJsZSwgaGFyZHdhcmUgaXMgZGVzY3JpYmVkIHVzaW5nIGV4aXN0aW5nIGJpbmRpbmdzIHRvCittYXhpbWl6ZSB1c2Ugb2YgZXhpc3Rpbmcgc3VwcG9ydCBjb2RlLCBidXQgc2luY2UgcHJvcGVydHkgYW5kIG5vZGUKK25hbWVzIGFyZSBzaW1wbHkgdGV4dCBzdHJpbmdzLCBpdCBpcyBlYXN5IHRvIGV4dGVuZCBleGlzdGluZyBiaW5kaW5ncworb3IgY3JlYXRlIG5ldyBvbmVzIGJ5IGRlZmluaW5nIG5ldyBub2RlcyBhbmQgcHJvcGVydGllcy4gIEJlIHdhcnksCitob3dldmVyLCBvZiBjcmVhdGluZyBhIG5ldyBiaW5kaW5nIHdpdGhvdXQgZmlyc3QgZG9pbmcgc29tZSBob21ld29yaworYWJvdXQgd2hhdCBhbHJlYWR5IGV4aXN0cy4gIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGRpZmZlcmVudCwKK2luY29tcGF0aWJsZSwgYmluZGluZ3MgZm9yIGkyYyBidXNzZXMgdGhhdCBjYW1lIGFib3V0IGJlY2F1c2UgdGhlIG5ldworYmluZGluZyB3YXMgY3JlYXRlZCB3aXRob3V0IGZpcnN0IGludmVzdGlnYXRpbmcgaG93IGkyYyBkZXZpY2VzIHdlcmUKK2FscmVhZHkgYmVpbmcgZW51bWVyYXRlZCBpbiBleGlzdGluZyBzeXN0ZW1zLgorCisxLiBIaXN0b3J5CistLS0tLS0tLS0tCitUaGUgRFQgd2FzIG9yaWdpbmFsbHkgY3JlYXRlZCBieSBPcGVuIEZpcm13YXJlIGFzIHBhcnQgb2YgdGhlCitjb21tdW5pY2F0aW9uIG1ldGhvZCBmb3IgcGFzc2luZyBkYXRhIGZyb20gT3BlbiBGaXJtd2FyZSB0byBhIGNsaWVudAorcHJvZ3JhbSAobGlrZSB0byBhbiBvcGVyYXRpbmcgc3lzdGVtKS4gIEFuIG9wZXJhdGluZyBzeXN0ZW0gdXNlZCB0aGUKK0RldmljZSBUcmVlIHRvIGRpc2NvdmVyIHRoZSB0b3BvbG9neSBvZiB0aGUgaGFyZHdhcmUgYXQgcnVudGltZSwgYW5kCit0aGVyZWJ5IHN1cHBvcnQgYSBtYWpvcml0eSBvZiBhdmFpbGFibGUgaGFyZHdhcmUgd2l0aG91dCBoYXJkIGNvZGVkCitpbmZvcm1hdGlvbiAoYXNzdW1pbmcgZHJpdmVycyB3ZXJlIGF2YWlsYWJsZSBmb3IgYWxsIGRldmljZXMpLgorCitTaW5jZSBPcGVuIEZpcm13YXJlIGlzIGNvbW1vbmx5IHVzZWQgb24gUG93ZXJQQyBhbmQgU1BBUkMgcGxhdGZvcm1zLAordGhlIExpbnV4IHN1cHBvcnQgZm9yIHRob3NlIGFyY2hpdGVjdHVyZXMgaGFzIGZvciBhIGxvbmcgdGltZSB1c2VkIHRoZQorRGV2aWNlIFRyZWUuCisKK0luIDIwMDUsIHdoZW4gUG93ZXJQQyBMaW51eCBiZWdhbiBhIG1ham9yIGNsZWFudXAgYW5kIHRvIG1lcmdlIDMyLWJpdAorYW5kIDY0LWJpdCBzdXBwb3J0LCB0aGUgZGVjaXNpb24gd2FzIG1hZGUgdG8gcmVxdWlyZSBEVCBzdXBwb3J0IG9uIGFsbAorcG93ZXJwYyBwbGF0Zm9ybXMsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QgdGhleSB1c2VkIE9wZW4KK0Zpcm13YXJlLiAgVG8gZG8gdGhpcywgYSBEVCByZXByZXNlbnRhdGlvbiBjYWxsZWQgdGhlIEZsYXR0ZW5lZCBEZXZpY2UKK1RyZWUgKEZEVCkgd2FzIGNyZWF0ZWQgd2hpY2ggY291bGQgYmUgcGFzc2VkIHRvIHRoZSBrZXJuZWwgYXMgYSBiaW5hcnkKK2Jsb2Igd2l0aG91dCByZXF1aXJpbmcgYSByZWFsIE9wZW4gRmlybXdhcmUgaW1wbGVtZW50YXRpb24uICBVLUJvb3QsCitrZXhlYywgYW5kIG90aGVyIGJvb3Rsb2FkZXJzIHdlcmUgbW9kaWZpZWQgdG8gc3VwcG9ydCBib3RoIHBhc3NpbmcgYQorRGV2aWNlIFRyZWUgQmluYXJ5IChkdGIpIGFuZCB0byBtb2RpZnkgYSBkdGIgYXQgYm9vdCB0aW1lLiAgRFQgd2FzCithbHNvIGFkZGVkIHRvIHRoZSBQb3dlclBDIGJvb3Qgd3JhcHBlciAoYXJjaC9wb3dlcnBjL2Jvb3QvKikgc28gdGhhdAorYSBkdGIgY291bGQgYmUgd3JhcHBlZCB1cCB3aXRoIHRoZSBrZXJuZWwgaW1hZ2UgdG8gc3VwcG9ydCBib290aW5nCitleGlzdGluZyBub24tRFQgYXdhcmUgZmlybXdhcmUuCisKK1NvbWUgdGltZSBsYXRlciwgRkRUIGluZnJhc3RydWN0dXJlIHdhcyBnZW5lcmFsaXplZCB0byBiZSB1c2FibGUgYnkKK2FsbCBhcmNoaXRlY3R1cmVzLiAgQXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLCA2IG1haW5saW5lZAorYXJjaGl0ZWN0dXJlcyAoYXJtLCBtaWNyb2JsYXplLCBtaXBzLCBwb3dlcnBjLCBzcGFyYywgYW5kIHg4NikgYW5kIDEKK291dCBvZiBtYWlubGluZSAobmlvcykgaGF2ZSBzb21lIGxldmVsIG9mIERUIHN1cHBvcnQuCisKKzIuIERhdGEgTW9kZWwKKy0tLS0tLS0tLS0tLS0KK0lmIHlvdSBoYXZlbid0IGFscmVhZHkgcmVhZCB0aGUgRGV2aWNlIFRyZWUgVXNhZ2VbMV0gcGFnZSwKK3RoZW4gZ28gcmVhZCBpdCBub3cuICBJdCdzIG9rYXksIEknbGwgd2FpdC4uLi4KKworMi4xIEhpZ2ggTGV2ZWwgVmlldworLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIG1vc3QgaW1wb3J0YW50IHRoaW5nIHRvIHVuZGVyc3RhbmQgaXMgdGhhdCB0aGUgRFQgaXMgc2ltcGx5IGEgZGF0YQorc3RydWN0dXJlIHRoYXQgZGVzY3JpYmVzIHRoZSBoYXJkd2FyZS4gIFRoZXJlIGlzIG5vdGhpbmcgbWFnaWNhbCBhYm91dAoraXQsIGFuZCBpdCBkb2Vzbid0IG1hZ2ljYWxseSBtYWtlIGFsbCBoYXJkd2FyZSBjb25maWd1cmF0aW9uIHByb2JsZW1zCitnbyBhd2F5LiAgV2hhdCBpdCBkb2VzIGRvIGlzIHByb3ZpZGUgYSBsYW5ndWFnZSBmb3IgZGVjb3VwbGluZyB0aGUKK2hhcmR3YXJlIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgYm9hcmQgYW5kIGRldmljZSBkcml2ZXIgc3VwcG9ydCBpbiB0aGUKK0xpbnV4IGtlcm5lbCAob3IgYW55IG90aGVyIG9wZXJhdGluZyBzeXN0ZW0gZm9yIHRoYXQgbWF0dGVyKS4gIFVzaW5nCitpdCBhbGxvd3MgYm9hcmQgYW5kIGRldmljZSBzdXBwb3J0IHRvIGJlY29tZSBkYXRhIGRyaXZlbjsgdG8gbWFrZQorc2V0dXAgZGVjaXNpb25zIGJhc2VkIG9uIGRhdGEgcGFzc2VkIGludG8gdGhlIGtlcm5lbCBpbnN0ZWFkIG9mIG9uCitwZXItbWFjaGluZSBoYXJkIGNvZGVkIHNlbGVjdGlvbnMuCisKK0lkZWFsbHksIGRhdGEgZHJpdmVuIHBsYXRmb3JtIHNldHVwIHNob3VsZCByZXN1bHQgaW4gbGVzcyBjb2RlCitkdXBsaWNhdGlvbiBhbmQgbWFrZSBpdCBlYXNpZXIgdG8gc3VwcG9ydCBhIHdpZGUgcmFuZ2Ugb2YgaGFyZHdhcmUKK3dpdGggYSBzaW5nbGUga2VybmVsIGltYWdlLgorCitMaW51eCB1c2VzIERUIGRhdGEgZm9yIHRocmVlIG1ham9yIHB1cnBvc2VzOgorMSkgcGxhdGZvcm0gaWRlbnRpZmljYXRpb24sCisyKSBydW50aW1lIGNvbmZpZ3VyYXRpb24sIGFuZAorMykgZGV2aWNlIHBvcHVsYXRpb24uCisKKzIuMiBQbGF0Zm9ybSBJZGVudGlmaWNhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitGaXJzdCBhbmQgZm9yZW1vc3QsIHRoZSBrZXJuZWwgd2lsbCB1c2UgZGF0YSBpbiB0aGUgRFQgdG8gaWRlbnRpZnkgdGhlCitzcGVjaWZpYyBtYWNoaW5lLiAgSW4gYSBwZXJmZWN0IHdvcmxkLCB0aGUgc3BlY2lmaWMgcGxhdGZvcm0gc2hvdWxkbid0CittYXR0ZXIgdG8gdGhlIGtlcm5lbCBiZWNhdXNlIGFsbCBwbGF0Zm9ybSBkZXRhaWxzIHdvdWxkIGJlIGRlc2NyaWJlZAorcGVyZmVjdGx5IGJ5IHRoZSBkZXZpY2UgdHJlZSBpbiBhIGNvbnNpc3RlbnQgYW5kIHJlbGlhYmxlIG1hbm5lci4KK0hhcmR3YXJlIGlzIG5vdCBwZXJmZWN0IHRob3VnaCwgYW5kIHNvIHRoZSBrZXJuZWwgbXVzdCBpZGVudGlmeSB0aGUKK21hY2hpbmUgZHVyaW5nIGVhcmx5IGJvb3Qgc28gdGhhdCBpdCBoYXMgdGhlIG9wcG9ydHVuaXR5IHRvIHJ1bgorbWFjaGluZS1zcGVjaWZpYyBmaXh1cHMuCisKK0luIHRoZSBtYWpvcml0eSBvZiBjYXNlcywgdGhlIG1hY2hpbmUgaWRlbnRpdHkgaXMgaXJyZWxldmFudCwgYW5kIHRoZQora2VybmVsIHdpbGwgaW5zdGVhZCBzZWxlY3Qgc2V0dXAgY29kZSBiYXNlZCBvbiB0aGUgbWFjaGluZSdzIGNvcmUKK0NQVSBvciBTb0MuICBPbiBBUk0gZm9yIGV4YW1wbGUsIHNldHVwX2FyY2goKSBpbgorYXJjaC9hcm0va2VybmVsL3NldHVwLmMgd2lsbCBjYWxsIHNldHVwX21hY2hpbmVfZmR0KCkgaW4KK2FyY2gvYXJtL2tlcm5lbC9kZXZ0cmVlLmMgd2hpY2ggc2VhcmNoZXMgdGhyb3VnaCB0aGUgbWFjaGluZV9kZXNjCit0YWJsZSBhbmQgc2VsZWN0cyB0aGUgbWFjaGluZV9kZXNjIHdoaWNoIGJlc3QgbWF0Y2hlcyB0aGUgZGV2aWNlIHRyZWUKK2RhdGEuICBJdCBkZXRlcm1pbmVzIHRoZSBiZXN0IG1hdGNoIGJ5IGxvb2tpbmcgYXQgdGhlICdjb21wYXRpYmxlJworcHJvcGVydHkgaW4gdGhlIHJvb3QgZGV2aWNlIHRyZWUgbm9kZSwgYW5kIGNvbXBhcmluZyBpdCB3aXRoIHRoZQorZHRfY29tcGF0IGxpc3QgaW4gc3RydWN0IG1hY2hpbmVfZGVzYyAod2hpY2ggaXMgZGVmaW5lZCBpbgorYXJjaC9hcm0vaW5jbHVkZS9hc20vbWFjaC9hcmNoLmggaWYgeW91J3JlIGN1cmlvdXMpLgorCitUaGUgJ2NvbXBhdGlibGUnIHByb3BlcnR5IGNvbnRhaW5zIGEgc29ydGVkIGxpc3Qgb2Ygc3RyaW5ncyBzdGFydGluZword2l0aCB0aGUgZXhhY3QgbmFtZSBvZiB0aGUgbWFjaGluZSwgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgbGlzdCBvZgorYm9hcmRzIGl0IGlzIGNvbXBhdGlibGUgd2l0aCBzb3J0ZWQgZnJvbSBtb3N0IGNvbXBhdGlibGUgdG8gbGVhc3QuICBGb3IKK2V4YW1wbGUsIHRoZSByb290IGNvbXBhdGlibGUgcHJvcGVydGllcyBmb3IgdGhlIFRJIEJlYWdsZUJvYXJkIGFuZCBpdHMKK3N1Y2Nlc3NvciwgdGhlIEJlYWdsZUJvYXJkIHhNIGJvYXJkIG1pZ2h0IGxvb2sgbGlrZSwgcmVzcGVjdGl2ZWx5OgorCisJY29tcGF0aWJsZSA9ICJ0aSxvbWFwMy1iZWFnbGVib2FyZCIsICJ0aSxvbWFwMzQ1MCIsICJ0aSxvbWFwMyI7CisJY29tcGF0aWJsZSA9ICJ0aSxvbWFwMy1iZWFnbGVib2FyZC14bSIsICJ0aSxvbWFwMzQ1MCIsICJ0aSxvbWFwMyI7CisKK1doZXJlICJ0aSxvbWFwMy1iZWFnbGVib2FyZC14bSIgc3BlY2lmaWVzIHRoZSBleGFjdCBtb2RlbCwgaXQgYWxzbworY2xhaW1zIHRoYXQgaXQgY29tcGF0aWJsZSB3aXRoIHRoZSBPTUFQIDM0NTAgU29DLCBhbmQgdGhlIG9tYXAzIGZhbWlseQorb2YgU29DcyBpbiBnZW5lcmFsLiAgWW91J2xsIG5vdGljZSB0aGF0IHRoZSBsaXN0IGlzIHNvcnRlZCBmcm9tIG1vc3QKK3NwZWNpZmljIChleGFjdCBib2FyZCkgdG8gbGVhc3Qgc3BlY2lmaWMgKFNvQyBmYW1pbHkpLgorCitBc3R1dGUgcmVhZGVycyBtaWdodCBwb2ludCBvdXQgdGhhdCB0aGUgQmVhZ2xlIHhNIGNvdWxkIGFsc28gY2xhaW0KK2NvbXBhdGliaWxpdHkgd2l0aCB0aGUgb3JpZ2luYWwgQmVhZ2xlIGJvYXJkLiAgSG93ZXZlciwgb25lIHNob3VsZCBiZQorY2F1dGlvbmVkIGFib3V0IGRvaW5nIHNvIGF0IHRoZSBib2FyZCBsZXZlbCBzaW5jZSB0aGVyZSBpcyB0eXBpY2FsbHkgYQoraGlnaCBsZXZlbCBvZiBjaGFuZ2UgZnJvbSBvbmUgYm9hcmQgdG8gYW5vdGhlciwgZXZlbiB3aXRoaW4gdGhlIHNhbWUKK3Byb2R1Y3QgbGluZSwgYW5kIGl0IGlzIGhhcmQgdG8gbmFpbCBkb3duIGV4YWN0bHkgd2hhdCBpcyBtZWFudCB3aGVuIG9uZQorYm9hcmQgY2xhaW1zIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBhbm90aGVyLiAgRm9yIHRoZSB0b3AgbGV2ZWwsIGl0IGlzCitiZXR0ZXIgdG8gZXJyIG9uIHRoZSBzaWRlIG9mIGNhdXRpb24gYW5kIG5vdCBjbGFpbSBvbmUgYm9hcmQgaXMKK2NvbXBhdGlibGUgd2l0aCBhbm90aGVyLiAgVGhlIG5vdGFibGUgZXhjZXB0aW9uIHdvdWxkIGJlIHdoZW4gb25lCitib2FyZCBpcyBhIGNhcnJpZXIgZm9yIGFub3RoZXIsIHN1Y2ggYXMgYSBDUFUgbW9kdWxlIGF0dGFjaGVkIHRvIGEKK2NhcnJpZXIgYm9hcmQuCisKK09uZSBtb3JlIG5vdGUgb24gY29tcGF0aWJsZSB2YWx1ZXMuICBBbnkgc3RyaW5nIHVzZWQgaW4gYSBjb21wYXRpYmxlCitwcm9wZXJ0eSBtdXN0IGJlIGRvY3VtZW50ZWQgYXMgdG8gd2hhdCBpdCBpbmRpY2F0ZXMuICBBZGQKK2RvY3VtZW50YXRpb24gZm9yIGNvbXBhdGlibGUgc3RyaW5ncyBpbiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MuCisKK0FnYWluIG9uIEFSTSwgZm9yIGVhY2ggbWFjaGluZV9kZXNjLCB0aGUga2VybmVsIGxvb2tzIHRvIHNlZSBpZgorYW55IG9mIHRoZSBkdF9jb21wYXQgbGlzdCBlbnRyaWVzIGFwcGVhciBpbiB0aGUgY29tcGF0aWJsZSBwcm9wZXJ0eS4KK0lmIG9uZSBkb2VzLCB0aGVuIHRoYXQgbWFjaGluZV9kZXNjIGlzIGEgY2FuZGlkYXRlIGZvciBkcml2aW5nIHRoZQorbWFjaGluZS4gIEFmdGVyIHNlYXJjaGluZyB0aGUgZW50aXJlIHRhYmxlIG9mIG1hY2hpbmVfZGVzY3MsCitzZXR1cF9tYWNoaW5lX2ZkdCgpIHJldHVybnMgdGhlICdtb3N0IGNvbXBhdGlibGUnIG1hY2hpbmVfZGVzYyBiYXNlZAorb24gd2hpY2ggZW50cnkgaW4gdGhlIGNvbXBhdGlibGUgcHJvcGVydHkgZWFjaCBtYWNoaW5lX2Rlc2MgbWF0Y2hlcworYWdhaW5zdC4gIElmIG5vIG1hdGNoaW5nIG1hY2hpbmVfZGVzYyBpcyBmb3VuZCwgdGhlbiBpdCByZXR1cm5zIE5VTEwuCisKK1RoZSByZWFzb25pbmcgYmVoaW5kIHRoaXMgc2NoZW1lIGlzIHRoZSBvYnNlcnZhdGlvbiB0aGF0IGluIHRoZSBtYWpvcml0eQorb2YgY2FzZXMsIGEgc2luZ2xlIG1hY2hpbmVfZGVzYyBjYW4gc3VwcG9ydCBhIGxhcmdlIG51bWJlciBvZiBib2FyZHMKK2lmIHRoZXkgYWxsIHVzZSB0aGUgc2FtZSBTb0MsIG9yIHNhbWUgZmFtaWx5IG9mIFNvQ3MuICBIb3dldmVyLAoraW52YXJpYWJseSB0aGVyZSB3aWxsIGJlIHNvbWUgZXhjZXB0aW9ucyB3aGVyZSBhIHNwZWNpZmljIGJvYXJkIHdpbGwKK3JlcXVpcmUgc3BlY2lhbCBzZXR1cCBjb2RlIHRoYXQgaXMgbm90IHVzZWZ1bCBpbiB0aGUgZ2VuZXJpYyBjYXNlLgorU3BlY2lhbCBjYXNlcyBjb3VsZCBiZSBoYW5kbGVkIGJ5IGV4cGxpY2l0bHkgY2hlY2tpbmcgZm9yIHRoZQordHJvdWJsZXNvbWUgYm9hcmQocykgaW4gZ2VuZXJpYyBzZXR1cCBjb2RlLCBidXQgZG9pbmcgc28gdmVyeSBxdWlja2x5CitiZWNvbWVzIHVnbHkgYW5kL29yIHVubWFpbnRhaW5hYmxlIGlmIGl0IGlzIG1vcmUgdGhhbiBqdXN0IGEgY291cGxlIG9mCitjYXNlcy4KKworSW5zdGVhZCwgdGhlIGNvbXBhdGlibGUgbGlzdCBhbGxvd3MgYSBnZW5lcmljIG1hY2hpbmVfZGVzYyB0byBwcm92aWRlCitzdXBwb3J0IGZvciBhIHdpZGUgY29tbW9uIHNldCBvZiBib2FyZHMgYnkgc3BlY2lmeWluZyAibGVzcworY29tcGF0aWJsZSIgdmFsdWVzIGluIHRoZSBkdF9jb21wYXQgbGlzdC4gIEluIHRoZSBleGFtcGxlIGFib3ZlLAorZ2VuZXJpYyBib2FyZCBzdXBwb3J0IGNhbiBjbGFpbSBjb21wYXRpYmlsaXR5IHdpdGggInRpLG9tYXAzIiBvcgorInRpLG9tYXAzNDUwIi4gIElmIGEgYnVnIHdhcyBkaXNjb3ZlcmVkIG9uIHRoZSBvcmlnaW5hbCBiZWFnbGVib2FyZAordGhhdCByZXF1aXJlZCBzcGVjaWFsIHdvcmthcm91bmQgY29kZSBkdXJpbmcgZWFybHkgYm9vdCwgdGhlbiBhIG5ldworbWFjaGluZV9kZXNjIGNvdWxkIGJlIGFkZGVkIHdoaWNoIGltcGxlbWVudHMgdGhlIHdvcmthcm91bmRzIGFuZCBvbmx5CittYXRjaGVzIG9uICJ0aSxvbWFwMy1iZWFnbGVib2FyZCIuCisKK1Bvd2VyUEMgdXNlcyBhIHNsaWdodGx5IGRpZmZlcmVudCBzY2hlbWUgd2hlcmUgaXQgY2FsbHMgdGhlIC5wcm9iZSgpCitob29rIGZyb20gZWFjaCBtYWNoaW5lX2Rlc2MsIGFuZCB0aGUgZmlyc3Qgb25lIHJldHVybmluZyBUUlVFIGlzIHVzZWQuCitIb3dldmVyLCB0aGlzIGFwcHJvYWNoIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBwcmlvcml0eSBvZiB0aGUKK2NvbXBhdGlibGUgbGlzdCwgYW5kIHByb2JhYmx5IHNob3VsZCBiZSBhdm9pZGVkIGZvciBuZXcgYXJjaGl0ZWN0dXJlCitzdXBwb3J0LgorCisyLjMgUnVudGltZSBjb25maWd1cmF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJbiBtb3N0IGNhc2VzLCBhIERUIHdpbGwgYmUgdGhlIHNvbGUgbWV0aG9kIG9mIGNvbW11bmljYXRpbmcgZGF0YSBmcm9tCitmaXJtd2FyZSB0byB0aGUga2VybmVsLCBzbyBhbHNvIGdldHMgdXNlZCB0byBwYXNzIGluIHJ1bnRpbWUgYW5kCitjb25maWd1cmF0aW9uIGRhdGEgbGlrZSB0aGUga2VybmVsIHBhcmFtZXRlcnMgc3RyaW5nIGFuZCB0aGUgbG9jYXRpb24KK29mIGFuIGluaXRyZCBpbWFnZS4KKworTW9zdCBvZiB0aGlzIGRhdGEgaXMgY29udGFpbmVkIGluIHRoZSAvY2hvc2VuIG5vZGUsIGFuZCB3aGVuIGJvb3RpbmcKK0xpbnV4IGl0IHdpbGwgbG9vayBzb21ldGhpbmcgbGlrZSB0aGlzOgorCisJY2hvc2VuIHsKKwkJYm9vdGFyZ3MgPSAiY29uc29sZT10dHlTMCwxMTUyMDAgbG9nbGV2ZWw9OCI7CisJCWluaXRyZC1zdGFydCA9IDwweGM4MDAwMDAwPjsKKwkJaW5pdHJkLWVuZCA9IDwweGM4MjAwMDAwPjsKKwl9OworCitUaGUgYm9vdGFyZ3MgcHJvcGVydHkgY29udGFpbnMgdGhlIGtlcm5lbCBhcmd1bWVudHMsIGFuZCB0aGUgaW5pdHJkLSoKK3Byb3BlcnRpZXMgZGVmaW5lIHRoZSBhZGRyZXNzIGFuZCBzaXplIG9mIGFuIGluaXRyZCBibG9iLiAgTm90ZSB0aGF0Citpbml0cmQtZW5kIGlzIHRoZSBmaXJzdCBhZGRyZXNzIGFmdGVyIHRoZSBpbml0cmQgaW1hZ2UsIHNvIHRoaXMgZG9lc24ndAorbWF0Y2ggdGhlIHVzdWFsIHNlbWFudGljIG9mIHN0cnVjdCByZXNvdXJjZS4gIFRoZSBjaG9zZW4gbm9kZSBtYXkgYWxzbworb3B0aW9uYWxseSBjb250YWluIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGZvcgorcGxhdGZvcm0tc3BlY2lmaWMgY29uZmlndXJhdGlvbiBkYXRhLgorCitEdXJpbmcgZWFybHkgYm9vdCwgdGhlIGFyY2hpdGVjdHVyZSBzZXR1cCBjb2RlIGNhbGxzIG9mX3NjYW5fZmxhdF9kdCgpCitzZXZlcmFsIHRpbWVzIHdpdGggZGlmZmVyZW50IGhlbHBlciBjYWxsYmFja3MgdG8gcGFyc2UgZGV2aWNlIHRyZWUKK2RhdGEgYmVmb3JlIHBhZ2luZyBpcyBzZXR1cC4gIFRoZSBvZl9zY2FuX2ZsYXRfZHQoKSBjb2RlIHNjYW5zIHRocm91Z2gKK3RoZSBkZXZpY2UgdHJlZSBhbmQgdXNlcyB0aGUgaGVscGVycyB0byBleHRyYWN0IGluZm9ybWF0aW9uIHJlcXVpcmVkCitkdXJpbmcgZWFybHkgYm9vdC4gIFR5cGljYWxseSB0aGUgZWFybHlfaW5pdF9kdF9zY2FuX2Nob3NlbigpIGhlbHBlcgoraXMgdXNlZCB0byBwYXJzZSB0aGUgY2hvc2VuIG5vZGUgaW5jbHVkaW5nIGtlcm5lbCBwYXJhbWV0ZXJzLAorZWFybHlfaW5pdF9kdF9zY2FuX3Jvb3QoKSB0byBpbml0aWFsaXplIHRoZSBEVCBhZGRyZXNzIHNwYWNlIG1vZGVsLAorYW5kIGVhcmx5X2luaXRfZHRfc2Nhbl9tZW1vcnkoKSB0byBkZXRlcm1pbmUgdGhlIHNpemUgYW5kCitsb2NhdGlvbiBvZiB1c2FibGUgUkFNLgorCitPbiBBUk0sIHRoZSBmdW5jdGlvbiBzZXR1cF9tYWNoaW5lX2ZkdCgpIGlzIHJlc3BvbnNpYmxlIGZvciBlYXJseQorc2Nhbm5pbmcgb2YgdGhlIGRldmljZSB0cmVlIGFmdGVyIHNlbGVjdGluZyB0aGUgY29ycmVjdCBtYWNoaW5lX2Rlc2MKK3RoYXQgc3VwcG9ydHMgdGhlIGJvYXJkLgorCisyLjQgRGV2aWNlIHBvcHVsYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQWZ0ZXIgdGhlIGJvYXJkIGhhcyBiZWVuIGlkZW50aWZpZWQsIGFuZCBhZnRlciB0aGUgZWFybHkgY29uZmlndXJhdGlvbiBkYXRhCitoYXMgYmVlbiBwYXJzZWQsIHRoZW4ga2VybmVsIGluaXRpYWxpemF0aW9uIGNhbiBwcm9jZWVkIGluIHRoZSBub3JtYWwKK3dheS4gIEF0IHNvbWUgcG9pbnQgaW4gdGhpcyBwcm9jZXNzLCB1bmZsYXR0ZW5fZGV2aWNlX3RyZWUoKSBpcyBjYWxsZWQKK3RvIGNvbnZlcnQgdGhlIGRhdGEgaW50byBhIG1vcmUgZWZmaWNpZW50IHJ1bnRpbWUgcmVwcmVzZW50YXRpb24uCitUaGlzIGlzIGFsc28gd2hlbiBtYWNoaW5lLXNwZWNpZmljIHNldHVwIGhvb2tzIHdpbGwgZ2V0IGNhbGxlZCwgbGlrZQordGhlIG1hY2hpbmVfZGVzYyAuaW5pdF9lYXJseSgpLCAuaW5pdF9pcnEoKSBhbmQgLmluaXRfbWFjaGluZSgpIGhvb2tzCitvbiBBUk0uICBUaGUgcmVtYWluZGVyIG9mIHRoaXMgc2VjdGlvbiB1c2VzIGV4YW1wbGVzIGZyb20gdGhlIEFSTQoraW1wbGVtZW50YXRpb24sIGJ1dCBhbGwgYXJjaGl0ZWN0dXJlcyB3aWxsIGRvIHByZXR0eSBtdWNoIHRoZSBzYW1lCit0aGluZyB3aGVuIHVzaW5nIGEgRFQuCisKK0FzIGNhbiBiZSBndWVzc2VkIGJ5IHRoZSBuYW1lcywgLmluaXRfZWFybHkoKSBpcyB1c2VkIGZvciBhbnkgbWFjaGluZS0KK3NwZWNpZmljIHNldHVwIHRoYXQgbmVlZHMgdG8gYmUgZXhlY3V0ZWQgZWFybHkgaW4gdGhlIGJvb3QgcHJvY2VzcywKK2FuZCAuaW5pdF9pcnEoKSBpcyB1c2VkIHRvIHNldCB1cCBpbnRlcnJ1cHQgaGFuZGxpbmcuICBVc2luZyBhIERUCitkb2Vzbid0IG1hdGVyaWFsbHkgY2hhbmdlIHRoZSBiZWhhdmlvdXIgb2YgZWl0aGVyIG9mIHRoZXNlIGZ1bmN0aW9ucy4KK0lmIGEgRFQgaXMgcHJvdmlkZWQsIHRoZW4gYm90aCAuaW5pdF9lYXJseSgpIGFuZCAuaW5pdF9pcnEoKSBhcmUgYWJsZQordG8gY2FsbCBhbnkgb2YgdGhlIERUIHF1ZXJ5IGZ1bmN0aW9ucyAob2ZfKiBpbiBpbmNsdWRlL2xpbnV4L29mKi5oKSB0bworZ2V0IGFkZGl0aW9uYWwgZGF0YSBhYm91dCB0aGUgcGxhdGZvcm0uCisKK1RoZSBtb3N0IGludGVyZXN0aW5nIGhvb2sgaW4gdGhlIERUIGNvbnRleHQgaXMgLmluaXRfbWFjaGluZSgpIHdoaWNoCitpcyBwcmltYXJpbHkgcmVzcG9uc2libGUgZm9yIHBvcHVsYXRpbmcgdGhlIExpbnV4IGRldmljZSBtb2RlbCB3aXRoCitkYXRhIGFib3V0IHRoZSBwbGF0Zm9ybS4gIEhpc3RvcmljYWxseSB0aGlzIGhhcyBiZWVuIGltcGxlbWVudGVkIG9uCitlbWJlZGRlZCBwbGF0Zm9ybXMgYnkgZGVmaW5pbmcgYSBzZXQgb2Ygc3RhdGljIGNsb2NrIHN0cnVjdHVyZXMsCitwbGF0Zm9ybV9kZXZpY2VzLCBhbmQgb3RoZXIgZGF0YSBpbiB0aGUgYm9hcmQgc3VwcG9ydCAuYyBmaWxlLCBhbmQKK3JlZ2lzdGVyaW5nIGl0IGVuLW1hc3NlIGluIC5pbml0X21hY2hpbmUoKS4gIFdoZW4gRFQgaXMgdXNlZCwgdGhlbgoraW5zdGVhZCBvZiBoYXJkIGNvZGluZyBzdGF0aWMgZGV2aWNlcyBmb3IgZWFjaCBwbGF0Zm9ybSwgdGhlIGxpc3Qgb2YKK2RldmljZXMgY2FuIGJlIG9idGFpbmVkIGJ5IHBhcnNpbmcgdGhlIERULCBhbmQgYWxsb2NhdGluZyBkZXZpY2UKK3N0cnVjdHVyZXMgZHluYW1pY2FsbHkuCisKK1RoZSBzaW1wbGVzdCBjYXNlIGlzIHdoZW4gLmluaXRfbWFjaGluZSgpIGlzIG9ubHkgcmVzcG9uc2libGUgZm9yCityZWdpc3RlcmluZyBhIGJsb2NrIG9mIHBsYXRmb3JtX2RldmljZXMuICBBIHBsYXRmb3JtX2RldmljZSBpcyBhIGNvbmNlcHQKK3VzZWQgYnkgTGludXggZm9yIG1lbW9yeSBvciBJL08gbWFwcGVkIGRldmljZXMgd2hpY2ggY2Fubm90IGJlIGRldGVjdGVkCitieSBoYXJkd2FyZSwgYW5kIGZvciAnY29tcG9zaXRlJyBvciAndmlydHVhbCcgZGV2aWNlcyAobW9yZSBvbiB0aG9zZQorbGF0ZXIpLiAgV2hpbGUgdGhlcmUgaXMgbm8gJ3BsYXRmb3JtIGRldmljZScgdGVybWlub2xvZ3kgZm9yIHRoZSBEVCwKK3BsYXRmb3JtIGRldmljZXMgcm91Z2hseSBjb3JyZXNwb25kIHRvIGRldmljZSBub2RlcyBhdCB0aGUgcm9vdCBvZiB0aGUKK3RyZWUgYW5kIGNoaWxkcmVuIG9mIHNpbXBsZSBtZW1vcnkgbWFwcGVkIGJ1cyBub2Rlcy4KKworQWJvdXQgbm93IGlzIGEgZ29vZCB0aW1lIHRvIGxheSBvdXQgYW4gZXhhbXBsZS4gIEhlcmUgaXMgcGFydCBvZiB0aGUKK2RldmljZSB0cmVlIGZvciB0aGUgTlZJRElBIFRlZ3JhIGJvYXJkLgorCisveworCWNvbXBhdGlibGUgPSAibnZpZGlhLGhhcm1vbnkiLCAibnZpZGlhLHRlZ3JhMjAiOworCSNhZGRyZXNzLWNlbGxzID0gPDE+OworCSNzaXplLWNlbGxzID0gPDE+OworCWludGVycnVwdC1wYXJlbnQgPSA8JmludGM+OworCisJY2hvc2VuIHsgfTsKKwlhbGlhc2VzIHsgfTsKKworCW1lbW9yeSB7CisJCWRldmljZV90eXBlID0gIm1lbW9yeSI7CisJCXJlZyA9IDwweDAwMDAwMDAwIDB4NDAwMDAwMDA+OworCX07CisKKwlzb2MgeworCQljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTIwLXNvYyIsICJzaW1wbGUtYnVzIjsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQlyYW5nZXM7CisKKwkJaW50YzogaW50ZXJydXB0LWNvbnRyb2xsZXJANTAwNDEwMDAgeworCQkJY29tcGF0aWJsZSA9ICJudmlkaWEsdGVncmEyMC1naWMiOworCQkJaW50ZXJydXB0LWNvbnRyb2xsZXI7CisJCQkjaW50ZXJydXB0LWNlbGxzID0gPDE+OworCQkJcmVnID0gPDB4NTAwNDEwMDAgMHgxMDAwPiwgPCAweDUwMDQwMTAwIDB4MDEwMCA+OworCQl9OworCisJCXNlcmlhbEA3MDAwNjMwMCB7CisJCQljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTIwLXVhcnQiOworCQkJcmVnID0gPDB4NzAwMDYzMDAgMHgxMDA+OworCQkJaW50ZXJydXB0cyA9IDwxMjI+OworCQl9OworCisJCWkyczE6IGkyc0A3MDAwMjgwMCB7CisJCQljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTIwLWkycyI7CisJCQlyZWcgPSA8MHg3MDAwMjgwMCAweDEwMD47CisJCQlpbnRlcnJ1cHRzID0gPDc3PjsKKwkJCWNvZGVjID0gPCZ3bTg5MDM+OworCQl9OworCisJCWkyY0A3MDAwYzAwMCB7CisJCQljb21wYXRpYmxlID0gIm52aWRpYSx0ZWdyYTIwLWkyYyI7CisJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJCSNzaXplLWNlbGxzID0gPDA+OworCQkJcmVnID0gPDB4NzAwMGMwMDAgMHgxMDA+OworCQkJaW50ZXJydXB0cyA9IDw3MD47CisKKwkJCXdtODkwMzogY29kZWNAMWEgeworCQkJCWNvbXBhdGlibGUgPSAid2xmLHdtODkwMyI7CisJCQkJcmVnID0gPDB4MWE+OworCQkJCWludGVycnVwdHMgPSA8MzQ3PjsKKwkJCX07CisJCX07CisJfTsKKworCXNvdW5kIHsKKwkJY29tcGF0aWJsZSA9ICJudmlkaWEsaGFybW9ueS1zb3VuZCI7CisJCWkycy1jb250cm9sbGVyID0gPCZpMnMxPjsKKwkJaTJzLWNvZGVjID0gPCZ3bTg5MDM+OworCX07Cit9OworCitBdCAuaW5pdF9tYWNoaW5lKCkgdGltZSwgVGVncmEgYm9hcmQgc3VwcG9ydCBjb2RlIHdpbGwgbmVlZCB0byBsb29rIGF0Cit0aGlzIERUIGFuZCBkZWNpZGUgd2hpY2ggbm9kZXMgdG8gY3JlYXRlIHBsYXRmb3JtX2RldmljZXMgZm9yLgorSG93ZXZlciwgbG9va2luZyBhdCB0aGUgdHJlZSwgaXQgaXMgbm90IGltbWVkaWF0ZWx5IG9idmlvdXMgd2hhdCBraW5kCitvZiBkZXZpY2UgZWFjaCBub2RlIHJlcHJlc2VudHMsIG9yIGV2ZW4gaWYgYSBub2RlIHJlcHJlc2VudHMgYSBkZXZpY2UKK2F0IGFsbC4gIFRoZSAvY2hvc2VuLCAvYWxpYXNlcywgYW5kIC9tZW1vcnkgbm9kZXMgYXJlIGluZm9ybWF0aW9uYWwKK25vZGVzIHRoYXQgZG9uJ3QgZGVzY3JpYmUgZGV2aWNlcyAoYWx0aG91Z2ggYXJndWFibHkgbWVtb3J5IGNvdWxkIGJlCitjb25zaWRlcmVkIGEgZGV2aWNlKS4gIFRoZSBjaGlsZHJlbiBvZiB0aGUgL3NvYyBub2RlIGFyZSBtZW1vcnkgbWFwcGVkCitkZXZpY2VzLCBidXQgdGhlIGNvZGVjQDFhIGlzIGFuIGkyYyBkZXZpY2UsIGFuZCB0aGUgc291bmQgbm9kZQorcmVwcmVzZW50cyBub3QgYSBkZXZpY2UsIGJ1dCByYXRoZXIgaG93IG90aGVyIGRldmljZXMgYXJlIGNvbm5lY3RlZAordG9nZXRoZXIgdG8gY3JlYXRlIHRoZSBhdWRpbyBzdWJzeXN0ZW0uICBJIGtub3cgd2hhdCBlYWNoIGRldmljZSBpcworYmVjYXVzZSBJJ20gZmFtaWxpYXIgd2l0aCB0aGUgYm9hcmQgZGVzaWduLCBidXQgaG93IGRvZXMgdGhlIGtlcm5lbAora25vdyB3aGF0IHRvIGRvIHdpdGggZWFjaCBub2RlPworCitUaGUgdHJpY2sgaXMgdGhhdCB0aGUga2VybmVsIHN0YXJ0cyBhdCB0aGUgcm9vdCBvZiB0aGUgdHJlZSBhbmQgbG9va3MKK2ZvciBub2RlcyB0aGF0IGhhdmUgYSAnY29tcGF0aWJsZScgcHJvcGVydHkuICBGaXJzdCwgaXQgaXMgZ2VuZXJhbGx5Cithc3N1bWVkIHRoYXQgYW55IG5vZGUgd2l0aCBhICdjb21wYXRpYmxlJyBwcm9wZXJ0eSByZXByZXNlbnRzIGEgZGV2aWNlCitvZiBzb21lIGtpbmQsIGFuZCBzZWNvbmQsIGl0IGNhbiBiZSBhc3N1bWVkIHRoYXQgYW55IG5vZGUgYXQgdGhlIHJvb3QKK29mIHRoZSB0cmVlIGlzIGVpdGhlciBkaXJlY3RseSBhdHRhY2hlZCB0byB0aGUgcHJvY2Vzc29yIGJ1cywgb3IgaXMgYQorbWlzY2VsbGFuZW91cyBzeXN0ZW0gZGV2aWNlIHRoYXQgY2Fubm90IGJlIGRlc2NyaWJlZCBhbnkgb3RoZXIgd2F5LgorRm9yIGVhY2ggb2YgdGhlc2Ugbm9kZXMsIExpbnV4IGFsbG9jYXRlcyBhbmQgcmVnaXN0ZXJzIGEKK3BsYXRmb3JtX2RldmljZSwgd2hpY2ggaW4gdHVybiBtYXkgZ2V0IGJvdW5kIHRvIGEgcGxhdGZvcm1fZHJpdmVyLgorCitXaHkgaXMgdXNpbmcgYSBwbGF0Zm9ybV9kZXZpY2UgZm9yIHRoZXNlIG5vZGVzIGEgc2FmZSBhc3N1bXB0aW9uPworV2VsbCwgZm9yIHRoZSB3YXkgdGhhdCBMaW51eCBtb2RlbHMgZGV2aWNlcywganVzdCBhYm91dCBhbGwgYnVzX3R5cGVzCithc3N1bWUgdGhhdCBpdHMgZGV2aWNlcyBhcmUgY2hpbGRyZW4gb2YgYSBidXMgY29udHJvbGxlci4gIEZvcgorZXhhbXBsZSwgZWFjaCBpMmNfY2xpZW50IGlzIGEgY2hpbGQgb2YgYW4gaTJjX21hc3Rlci4gIEVhY2ggc3BpX2RldmljZQoraXMgYSBjaGlsZCBvZiBhbiBTUEkgYnVzLiAgU2ltaWxhcmx5IGZvciBVU0IsIFBDSSwgTURJTywgZXRjLiAgVGhlCitzYW1lIGhpZXJhcmNoeSBpcyBhbHNvIGZvdW5kIGluIHRoZSBEVCwgd2hlcmUgSTJDIGRldmljZSBub2RlcyBvbmx5CitldmVyIGFwcGVhciBhcyBjaGlsZHJlbiBvZiBhbiBJMkMgYnVzIG5vZGUuICBEaXR0byBmb3IgU1BJLCBNRElPLCBVU0IsCitldGMuICBUaGUgb25seSBkZXZpY2VzIHdoaWNoIGRvIG5vdCByZXF1aXJlIGEgc3BlY2lmaWMgdHlwZSBvZiBwYXJlbnQKK2RldmljZSBhcmUgcGxhdGZvcm1fZGV2aWNlcyAoYW5kIGFtYmFfZGV2aWNlcywgYnV0IG1vcmUgb24gdGhhdAorbGF0ZXIpLCB3aGljaCB3aWxsIGhhcHBpbHkgbGl2ZSBhdCB0aGUgYmFzZSBvZiB0aGUgTGludXggL3N5cy9kZXZpY2VzCit0cmVlLiAgVGhlcmVmb3JlLCBpZiBhIERUIG5vZGUgaXMgYXQgdGhlIHJvb3Qgb2YgdGhlIHRyZWUsIHRoZW4gaXQKK3JlYWxseSBwcm9iYWJseSBpcyBiZXN0IHJlZ2lzdGVyZWQgYXMgYSBwbGF0Zm9ybV9kZXZpY2UuCisKK0xpbnV4IGJvYXJkIHN1cHBvcnQgY29kZSBjYWxscyBvZl9wbGF0Zm9ybV9wb3B1bGF0ZShOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKQordG8ga2ljayBvZmYgZGlzY292ZXJ5IG9mIGRldmljZXMgYXQgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuICBUaGUKK3BhcmFtZXRlcnMgYXJlIGFsbCBOVUxMIGJlY2F1c2Ugd2hlbiBzdGFydGluZyBmcm9tIHRoZSByb290IG9mIHRoZQordHJlZSwgdGhlcmUgaXMgbm8gbmVlZCB0byBwcm92aWRlIGEgc3RhcnRpbmcgbm9kZSAodGhlIGZpcnN0IE5VTEwpLCBhCitwYXJlbnQgc3RydWN0IGRldmljZSAodGhlIGxhc3QgTlVMTCksIGFuZCB3ZSdyZSBub3QgdXNpbmcgYSBtYXRjaAordGFibGUgKHlldCkuICBGb3IgYSBib2FyZCB0aGF0IG9ubHkgbmVlZHMgdG8gcmVnaXN0ZXIgZGV2aWNlcywKKy5pbml0X21hY2hpbmUoKSBjYW4gYmUgY29tcGxldGVseSBlbXB0eSBleGNlcHQgZm9yIHRoZQorb2ZfcGxhdGZvcm1fcG9wdWxhdGUoKSBjYWxsLgorCitJbiB0aGUgVGVncmEgZXhhbXBsZSwgdGhpcyBhY2NvdW50cyBmb3IgdGhlIC9zb2MgYW5kIC9zb3VuZCBub2RlcywgYnV0Cit3aGF0IGFib3V0IHRoZSBjaGlsZHJlbiBvZiB0aGUgU29DIG5vZGU/ICBTaG91bGRuJ3QgdGhleSBiZSByZWdpc3RlcmVkCithcyBwbGF0Zm9ybSBkZXZpY2VzIHRvbz8gIEZvciBMaW51eCBEVCBzdXBwb3J0LCB0aGUgZ2VuZXJpYyBiZWhhdmlvdXIKK2lzIGZvciBjaGlsZCBkZXZpY2VzIHRvIGJlIHJlZ2lzdGVyZWQgYnkgdGhlIHBhcmVudCdzIGRldmljZSBkcml2ZXIgYXQKK2RyaXZlciAucHJvYmUoKSB0aW1lLiAgU28sIGFuIGkyYyBidXMgZGV2aWNlIGRyaXZlciB3aWxsIHJlZ2lzdGVyIGEKK2kyY19jbGllbnQgZm9yIGVhY2ggY2hpbGQgbm9kZSwgYW4gU1BJIGJ1cyBkcml2ZXIgd2lsbCByZWdpc3RlcgoraXRzIHNwaV9kZXZpY2UgY2hpbGRyZW4sIGFuZCBzaW1pbGFybHkgZm9yIG90aGVyIGJ1c190eXBlcy4KK0FjY29yZGluZyB0byB0aGF0IG1vZGVsLCBhIGRyaXZlciBjb3VsZCBiZSB3cml0dGVuIHRoYXQgYmluZHMgdG8gdGhlCitTb0Mgbm9kZSBhbmQgc2ltcGx5IHJlZ2lzdGVycyBwbGF0Zm9ybV9kZXZpY2VzIGZvciBlYWNoIG9mIGl0cworY2hpbGRyZW4uICBUaGUgYm9hcmQgc3VwcG9ydCBjb2RlIHdvdWxkIGFsbG9jYXRlIGFuZCByZWdpc3RlciBhbiBTb0MKK2RldmljZSwgYSAodGhlb3JldGljYWwpIFNvQyBkZXZpY2UgZHJpdmVyIGNvdWxkIGJpbmQgdG8gdGhlIFNvQyBkZXZpY2UsCithbmQgcmVnaXN0ZXIgcGxhdGZvcm1fZGV2aWNlcyBmb3IgL3NvYy9pbnRlcnJ1cHQtY29udHJvbGxlciwgL3NvYy9zZXJpYWwsCisvc29jL2kycywgYW5kIC9zb2MvaTJjIGluIGl0cyAucHJvYmUoKSBob29rLiAgRWFzeSwgcmlnaHQ/CisKK0FjdHVhbGx5LCBpdCB0dXJucyBvdXQgdGhhdCByZWdpc3RlcmluZyBjaGlsZHJlbiBvZiBzb21lCitwbGF0Zm9ybV9kZXZpY2VzIGFzIG1vcmUgcGxhdGZvcm1fZGV2aWNlcyBpcyBhIGNvbW1vbiBwYXR0ZXJuLCBhbmQgdGhlCitkZXZpY2UgdHJlZSBzdXBwb3J0IGNvZGUgcmVmbGVjdHMgdGhhdCBhbmQgbWFrZXMgdGhlIGFib3ZlIGV4YW1wbGUKK3NpbXBsZXIuICBUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIG9mX3BsYXRmb3JtX3BvcHVsYXRlKCkgaXMgYW4KK29mX2RldmljZV9pZCB0YWJsZSwgYW5kIGFueSBub2RlIHRoYXQgbWF0Y2hlcyBhbiBlbnRyeSBpbiB0aGF0IHRhYmxlCit3aWxsIGFsc28gZ2V0IGl0cyBjaGlsZCBub2RlcyByZWdpc3RlcmVkLiAgSW4gdGhlIFRlZ3JhIGNhc2UsIHRoZSBjb2RlCitjYW4gbG9vayBzb21ldGhpbmcgbGlrZSB0aGlzOgorCitzdGF0aWMgdm9pZCBfX2luaXQgaGFybW9ueV9pbml0X21hY2hpbmUodm9pZCkKK3sKKwkvKiAuLi4gKi8KKwlvZl9wbGF0Zm9ybV9wb3B1bGF0ZShOVUxMLCBvZl9kZWZhdWx0X2J1c19tYXRjaF90YWJsZSwgTlVMTCwgTlVMTCk7Cit9CisKKyJzaW1wbGUtYnVzIiBpcyBkZWZpbmVkIGluIHRoZSBlUEFQUiAxLjAgc3BlY2lmaWNhdGlvbiBhcyBhIHByb3BlcnR5CittZWFuaW5nIGEgc2ltcGxlIG1lbW9yeSBtYXBwZWQgYnVzLCBzbyB0aGUgb2ZfcGxhdGZvcm1fcG9wdWxhdGUoKSBjb2RlCitjb3VsZCBiZSB3cml0dGVuIHRvIGp1c3QgYXNzdW1lIHNpbXBsZS1idXMgY29tcGF0aWJsZSBub2RlcyB3aWxsCithbHdheXMgYmUgdHJhdmVyc2VkLiAgSG93ZXZlciwgd2UgcGFzcyBpdCBpbiBhcyBhbiBhcmd1bWVudCBzbyB0aGF0Citib2FyZCBzdXBwb3J0IGNvZGUgY2FuIGFsd2F5cyBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvdXIuCisKK1tOZWVkIHRvIGFkZCBkaXNjdXNzaW9uIG9mIGFkZGluZyBpMmMvc3BpL2V0YyBjaGlsZCBkZXZpY2VzXQorCitBcHBlbmRpeCBBOiBBTUJBIGRldmljZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBUk0gUHJpbWVjZWxscyBhcmUgYSBjZXJ0YWluIGtpbmQgb2YgZGV2aWNlIGF0dGFjaGVkIHRvIHRoZSBBUk0gQU1CQQorYnVzIHdoaWNoIGluY2x1ZGUgc29tZSBzdXBwb3J0IGZvciBoYXJkd2FyZSBkZXRlY3Rpb24gYW5kIHBvd2VyCittYW5hZ2VtZW50LiAgSW4gTGludXgsIHN0cnVjdCBhbWJhX2RldmljZSBhbmQgdGhlIGFtYmFfYnVzX3R5cGUgaXMKK3VzZWQgdG8gcmVwcmVzZW50IFByaW1lY2VsbCBkZXZpY2VzLiAgSG93ZXZlciwgdGhlIGZpZGRseSBiaXQgaXMgdGhhdAorbm90IGFsbCBkZXZpY2VzIG9uIGFuIEFNQkEgYnVzIGFyZSBQcmltZWNlbGxzLCBhbmQgZm9yIExpbnV4IGl0IGlzCit0eXBpY2FsIGZvciBib3RoIGFtYmFfZGV2aWNlIGFuZCBwbGF0Zm9ybV9kZXZpY2UgaW5zdGFuY2VzIHRvIGJlCitzaWJsaW5ncyBvZiB0aGUgc2FtZSBidXMgc2VnbWVudC4KKworV2hlbiB1c2luZyB0aGUgRFQsIHRoaXMgY3JlYXRlcyBwcm9ibGVtcyBmb3Igb2ZfcGxhdGZvcm1fcG9wdWxhdGUoKQorYmVjYXVzZSBpdCBtdXN0IGRlY2lkZSB3aGV0aGVyIHRvIHJlZ2lzdGVyIGVhY2ggbm9kZSBhcyBlaXRoZXIgYQorcGxhdGZvcm1fZGV2aWNlIG9yIGFuIGFtYmFfZGV2aWNlLiAgVGhpcyB1bmZvcnR1bmF0ZWx5IGNvbXBsaWNhdGVzIHRoZQorZGV2aWNlIGNyZWF0aW9uIG1vZGVsIGEgbGl0dGxlIGJpdCwgYnV0IHRoZSBzb2x1dGlvbiB0dXJucyBvdXQgbm90IHRvCitiZSB0b28gaW52YXNpdmUuICBJZiBhIG5vZGUgaXMgY29tcGF0aWJsZSB3aXRoICJhcm0sYW1iYS1wcmltZWNlbGwiLCB0aGVuCitvZl9wbGF0Zm9ybV9wb3B1bGF0ZSgpIHdpbGwgcmVnaXN0ZXIgaXQgYXMgYW4gYW1iYV9kZXZpY2UgaW5zdGVhZCBvZiBhCitwbGF0Zm9ybV9kZXZpY2UuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RpZ3NpZy50eHQgYi9Eb2N1bWVudGF0aW9uL2RpZ3NpZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y2ODI4OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGlnc2lnLnR4dApAQCAtMCwwICsxLDk2IEBACitEaWdpdGFsIFNpZ25hdHVyZSBWZXJpZmljYXRpb24gQVBJCisKK0NPTlRFTlRTCisKKzEuIEludHJvZHVjdGlvbgorMi4gQVBJCiszLiBVc2VyLXNwYWNlIHV0aWxpdGllcworCisKKzEuIEludHJvZHVjdGlvbgorCitEaWdpdGFsIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gQVBJIHByb3ZpZGVzIGEgbWV0aG9kIHRvIHZlcmlmeSBkaWdpdGFsIHNpZ25hdHVyZS4KK0N1cnJlbnRseSBkaWdpdGFsIHNpZ25hdHVyZXMgYXJlIHVzZWQgYnkgdGhlIElNQS9FVk0gaW50ZWdyaXR5IHByb3RlY3Rpb24gc3Vic3lzdGVtLgorCitEaWdpdGFsIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gaXMgaW1wbGVtZW50ZWQgdXNpbmcgY3V0LWRvd24ga2VybmVsIHBvcnQgb2YKK0dudVBHIG11bHRpLXByZWNpc2lvbiBpbnRlZ2VycyAoTVBJKSBsaWJyYXJ5LiBUaGUga2VybmVsIHBvcnQgcHJvdmlkZXMKK21lbW9yeSBhbGxvY2F0aW9uIGVycm9ycyBoYW5kbGluZywgaGFzIGJlZW4gcmVmYWN0b3JlZCBhY2NvcmRpbmcgdG8ga2VybmVsCitjb2Rpbmcgc3R5bGUsIGFuZCBjaGVja3BhdGNoLnBsIHJlcG9ydGVkIGVycm9ycyBhbmQgd2FybmluZ3MgaGF2ZSBiZWVuIGZpeGVkLgorCitQdWJsaWMga2V5IGFuZCBzaWduYXR1cmUgY29uc2lzdCBvZiBoZWFkZXIgYW5kIE1QSXMuCisKK3N0cnVjdCBwdWJrZXlfaGRyIHsKKwl1aW50OF90CQl2ZXJzaW9uOwkvKiBrZXkgZm9ybWF0IHZlcnNpb24gKi8KKwl0aW1lX3QJCXRpbWVzdGFtcDsJLyoga2V5IG1hZGUsIGFsd2F5cyAwIGZvciBub3cgKi8KKwl1aW50OF90CQlhbGdvOworCXVpbnQ4X3QJCW5tcGk7CisJY2hhcgkJbXBpWzBdOworfSBfX3BhY2tlZDsKKworc3RydWN0IHNpZ25hdHVyZV9oZHIgeworCXVpbnQ4X3QJCXZlcnNpb247CS8qIHNpZ25hdHVyZSBmb3JtYXQgdmVyc2lvbiAqLworCXRpbWVfdAkJdGltZXN0YW1wOwkvKiBzaWduYXR1cmUgbWFkZSAqLworCXVpbnQ4X3QJCWFsZ287CisJdWludDhfdAkJaGFzaDsKKwl1aW50OF90CQlrZXlpZFs4XTsKKwl1aW50OF90CQlubXBpOworCWNoYXIJCW1waVswXTsKK30gX19wYWNrZWQ7CisKK2tleWlkIGVxdWFscyB0byBTSEExWzEyLTE5XSBvdmVyIHRoZSB0b3RhbCBrZXkgY29udGVudC4KK1NpZ25hdHVyZSBoZWFkZXIgaXMgdXNlZCBhcyBhbiBpbnB1dCB0byBnZW5lcmF0ZSBhIHNpZ25hdHVyZS4KK1N1Y2ggYXBwcm9hY2ggaW5zdXJlcyB0aGF0IGtleSBvciBzaWduYXR1cmUgaGVhZGVyIGNvdWxkIG5vdCBiZSBjaGFuZ2VkLgorSXQgcHJvdGVjdHMgdGltZXN0YW1wIGZyb20gYmVlbiBjaGFuZ2VkIGFuZCBjYW4gYmUgdXNlZCBmb3Igcm9sbGJhY2sKK3Byb3RlY3Rpb24uCisKKzIuIEFQSQorCitBUEkgY3VycmVudGx5IGluY2x1ZGVzIG9ubHkgMSBmdW5jdGlvbjoKKworCWRpZ3NpZ192ZXJpZnkoKSAtIGRpZ2l0YWwgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiB3aXRoIHB1YmxpYyBrZXkKKworCisvKioKKyAqIGRpZ3NpZ192ZXJpZnkoKSAtIGRpZ2l0YWwgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiB3aXRoIHB1YmxpYyBrZXkKKyAqIEBrZXlyaW5nOglrZXlyaW5nIHRvIHNlYXJjaCBrZXkgaW4KKyAqIEBzaWc6CWRpZ2l0YWwgc2lnbmF0dXJlCisgKiBAc2lnZW46CWxlbmd0aCBvZiB0aGUgc2lnbmF0dXJlCisgKiBAZGF0YToJZGF0YQorICogQGRhdGFsZW46CWxlbmd0aCBvZiB0aGUgZGF0YQorICogQHJldHVybjoJMCBvbiBzdWNjZXNzLCAtRUlOVkFMIG90aGVyd2lzZQorICoKKyAqIFZlcmlmaWVzIGRhdGEgaW50ZWdyaXR5IGFnYWluc3QgZGlnaXRhbCBzaWduYXR1cmUuCisgKiBDdXJyZW50bHkgb25seSBSU0EgaXMgc3VwcG9ydGVkLgorICogTm9ybWFsbHkgaGFzaCBvZiB0aGUgY29udGVudCBpcyB1c2VkIGFzIGEgZGF0YSBmb3IgdGhpcyBmdW5jdGlvbi4KKyAqCisgKi8KK2ludCBkaWdzaWdfdmVyaWZ5KHN0cnVjdCBrZXkgKmtleXJpbmcsIGNvbnN0IGNoYXIgKnNpZywgaW50IHNpZ2xlbiwKKwkJCQkJCWNvbnN0IGNoYXIgKmRhdGEsIGludCBkYXRhbGVuKTsKKworMy4gVXNlci1zcGFjZSB1dGlsaXRpZXMKKworVGhlIHNpZ25pbmcgYW5kIGtleSBtYW5hZ2VtZW50IHV0aWxpdGllcyBldm0tdXRpbHMgcHJvdmlkZSBmdW5jdGlvbmFsaXR5Cit0byBnZW5lcmF0ZSBzaWduYXR1cmVzLCB0byBsb2FkIGtleXMgaW50byB0aGUga2VybmVsIGtleXJpbmcuCitLZXlzIGNhbiBiZSBpbiBQRU0gb3IgY29udmVydGVkIHRvIHRoZSBrZXJuZWwgZm9ybWF0LgorV2hlbiB0aGUga2V5IGlzIGFkZGVkIHRvIHRoZSBrZXJuZWwga2V5cmluZywgdGhlIGtleWlkIGRlZmluZXMgdGhlIG5hbWUKK29mIHRoZSBrZXk6IDVEMkIwNUZDNjMzRUUzRTggaW4gdGhlIGV4YW1wbGUgYmVsbG93LgorCitIZXJlIGlzIGV4YW1wbGUgb3V0cHV0IG9mIHRoZSBrZXljdGwgdXRpbGl0eS4KKworJCBrZXljdGwgc2hvdworU2Vzc2lvbiBLZXlyaW5nCisgICAgICAgLTMgLS1hbHN3cnYgICAgICAwICAgICAwICBrZXlyaW5nOiBfc2VzCis2MDM5NzYyNTAgLS1hbHN3cnYgICAgICAwICAgIC0xICAgXF8ga2V5cmluZzogX3VpZC4wCis4MTc3NzczNzcgLS1hbHN3cnYgICAgICAwICAgICAwICAgICAgIFxfIHVzZXI6IGttaworODkxOTc0OTAwIC0tYWxzd3J2ICAgICAgMCAgICAgMCAgICAgICBcXyBlbmNyeXB0ZWQ6IGV2bS1rZXkKKzE3MDMyMzYzNiAtLWFsc3dydiAgICAgIDAgICAgIDAgICAgICAgXF8ga2V5cmluZzogX21vZHVsZQorNTQ4MjIxNjE2IC0tYWxzd3J2ICAgICAgMCAgICAgMCAgICAgICBcXyBrZXlyaW5nOiBfaW1hCisxMjgxOTgwNTQgLS1hbHN3cnYgICAgICAwICAgICAwICAgICAgIFxfIGtleXJpbmc6IF9ldm0KKworJCBrZXljdGwgbGlzdCAxMjgxOTgwNTQKKzEga2V5IGluIGtleXJpbmc6Cis2MjA3ODk3NDU6IC0tYWxzd3J2ICAgICAwICAgICAwIHVzZXI6IDVEMkIwNUZDNjMzRUUzRTgKKworCitEbWl0cnkgS2FzYXRraW4KKzA2LjEwLjIwMTEKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZG1hLWJ1Zi1zaGFyaW5nLnR4dCBiL0RvY3VtZW50YXRpb24vZG1hLWJ1Zi1zaGFyaW5nLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODBjOGRlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kbWEtYnVmLXNoYXJpbmcudHh0CkBAIC0wLDAgKzEsNDY1IEBACisgICAgICAgICAgICAgICAgICAgIERNQSBCdWZmZXIgU2hhcmluZyBBUEkgR3VpZGUKKyAgICAgICAgICAgICAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VtaXQgU2Vtd2FsCisgICAgICAgICAgICAgICAgPHN1bWl0IGRvdCBzZW13YWwgYXQgbGluYXJvIGRvdCBvcmc+CisgICAgICAgICAgICAgICAgIDxzdW1pdCBkb3Qgc2Vtd2FsIGF0IHRpIGRvdCBjb20+CisKK1RoaXMgZG9jdW1lbnQgc2VydmVzIGFzIGEgZ3VpZGUgdG8gZGV2aWNlLWRyaXZlciB3cml0ZXJzIG9uIHdoYXQgaXMgdGhlIGRtYS1idWYKK2J1ZmZlciBzaGFyaW5nIEFQSSwgaG93IHRvIHVzZSBpdCBmb3IgZXhwb3J0aW5nIGFuZCB1c2luZyBzaGFyZWQgYnVmZmVycy4KKworQW55IGRldmljZSBkcml2ZXIgd2hpY2ggd2lzaGVzIHRvIGJlIGEgcGFydCBvZiBETUEgYnVmZmVyIHNoYXJpbmcsIGNhbiBkbyBzbyBhcworZWl0aGVyIHRoZSAnZXhwb3J0ZXInIG9mIGJ1ZmZlcnMsIG9yIHRoZSAndXNlcicgb2YgYnVmZmVycy4KKworU2F5IGEgZHJpdmVyIEEgd2FudHMgdG8gdXNlIGJ1ZmZlcnMgY3JlYXRlZCBieSBkcml2ZXIgQiwgdGhlbiB3ZSBjYWxsIEIgYXMgdGhlCitleHBvcnRlciwgYW5kIEEgYXMgYnVmZmVyLXVzZXIuCisKK1RoZSBleHBvcnRlcgorLSBpbXBsZW1lbnRzIGFuZCBtYW5hZ2VzIG9wZXJhdGlvbnNbMV0gZm9yIHRoZSBidWZmZXIKKy0gYWxsb3dzIG90aGVyIHVzZXJzIHRvIHNoYXJlIHRoZSBidWZmZXIgYnkgdXNpbmcgZG1hX2J1ZiBzaGFyaW5nIEFQSXMsCistIG1hbmFnZXMgdGhlIGRldGFpbHMgb2YgYnVmZmVyIGFsbG9jYXRpb24sCistIGRlY2lkZXMgYWJvdXQgdGhlIGFjdHVhbCBiYWNraW5nIHN0b3JhZ2Ugd2hlcmUgdGhpcyBhbGxvY2F0aW9uIGhhcHBlbnMsCistIHRha2VzIGNhcmUgb2YgYW55IG1pZ3JhdGlvbiBvZiBzY2F0dGVybGlzdCAtIGZvciBhbGwgKHNoYXJlZCkgdXNlcnMgb2YgdGhpcworICAgYnVmZmVyLAorCitUaGUgYnVmZmVyLXVzZXIKKy0gaXMgb25lIG9mIChtYW55KSBzaGFyaW5nIHVzZXJzIG9mIHRoZSBidWZmZXIuCistIGRvZXNuJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBob3cgdGhlIGJ1ZmZlciBpcyBhbGxvY2F0ZWQsIG9yIHdoZXJlLgorLSBuZWVkcyBhIG1lY2hhbmlzbSB0byBnZXQgYWNjZXNzIHRvIHRoZSBzY2F0dGVybGlzdCB0aGF0IG1ha2VzIHVwIHRoaXMgYnVmZmVyCisgICBpbiBtZW1vcnksIG1hcHBlZCBpbnRvIGl0cyBvd24gYWRkcmVzcyBzcGFjZSwgc28gaXQgY2FuIGFjY2VzcyB0aGUgc2FtZSBhcmVhCisgICBvZiBtZW1vcnkuCisKK2RtYS1idWYgb3BlcmF0aW9ucyBmb3IgZGV2aWNlIGRtYSBvbmx5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZG1hX2J1ZiBidWZmZXIgc2hhcmluZyBBUEkgdXNhZ2UgY29udGFpbnMgdGhlIGZvbGxvd2luZyBzdGVwczoKKworMS4gRXhwb3J0ZXIgYW5ub3VuY2VzIHRoYXQgaXQgd2lzaGVzIHRvIGV4cG9ydCBhIGJ1ZmZlcgorMi4gVXNlcnNwYWNlIGdldHMgdGhlIGZpbGUgZGVzY3JpcHRvciBhc3NvY2lhdGVkIHdpdGggdGhlIGV4cG9ydGVkIGJ1ZmZlciwgYW5kCisgICBwYXNzZXMgaXQgYXJvdW5kIHRvIHBvdGVudGlhbCBidWZmZXItdXNlcnMgYmFzZWQgb24gdXNlIGNhc2UKKzMuIEVhY2ggYnVmZmVyLXVzZXIgJ2Nvbm5lY3RzJyBpdHNlbGYgdG8gdGhlIGJ1ZmZlcgorNC4gV2hlbiBuZWVkZWQsIGJ1ZmZlci11c2VyIHJlcXVlc3RzIGFjY2VzcyB0byB0aGUgYnVmZmVyIGZyb20gZXhwb3J0ZXIKKzUuIFdoZW4gZmluaXNoZWQgd2l0aCBpdHMgdXNlLCB0aGUgYnVmZmVyLXVzZXIgbm90aWZpZXMgZW5kLW9mLURNQSB0byBleHBvcnRlcgorNi4gd2hlbiBidWZmZXItdXNlciBpcyBkb25lIHVzaW5nIHRoaXMgYnVmZmVyIGNvbXBsZXRlbHksIGl0ICdkaXNjb25uZWN0cycKKyAgIGl0c2VsZiBmcm9tIHRoZSBidWZmZXIuCisKKworMS4gRXhwb3J0ZXIncyBhbm5vdW5jZW1lbnQgb2YgYnVmZmVyIGV4cG9ydAorCisgICBUaGUgYnVmZmVyIGV4cG9ydGVyIGFubm91bmNlcyBpdHMgd2lzaCB0byBleHBvcnQgYSBidWZmZXIuIEluIHRoaXMsIGl0CisgICBjb25uZWN0cyBpdHMgb3duIHByaXZhdGUgYnVmZmVyIGRhdGEsIHByb3ZpZGVzIGltcGxlbWVudGF0aW9uIGZvciBvcGVyYXRpb25zCisgICB0aGF0IGNhbiBiZSBwZXJmb3JtZWQgb24gdGhlIGV4cG9ydGVkIGRtYV9idWYsIGFuZCBmbGFncyBmb3IgdGhlIGZpbGUKKyAgIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGJ1ZmZlci4gQWxsIHRoZXNlIGZpZWxkcyBhcmUgZmlsbGVkIGluIHN0cnVjdAorICAgZG1hX2J1Zl9leHBvcnRfaW5mbywgZGVmaW5lZCB2aWEgdGhlIERFRklORV9ETUFfQlVGX0VYUE9SVF9JTkZPIG1hY3JvLgorCisgICBJbnRlcmZhY2U6CisgICAgICBERUZJTkVfRE1BX0JVRl9FWFBPUlRfSU5GTyhleHBfaW5mbykKKyAgICAgIHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmX2V4cG9ydChzdHJ1Y3QgZG1hX2J1Zl9leHBvcnRfaW5mbyAqZXhwX2luZm8pCisKKyAgIElmIHRoaXMgc3VjY2VlZHMsIGRtYV9idWZfZXhwb3J0IGFsbG9jYXRlcyBhIGRtYV9idWYgc3RydWN0dXJlLCBhbmQKKyAgIHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBzYW1lLiBJdCBhbHNvIGFzc29jaWF0ZXMgYW4gYW5vbnltb3VzIGZpbGUgd2l0aCB0aGlzCisgICBidWZmZXIsIHNvIGl0IGNhbiBiZSBleHBvcnRlZC4gT24gZmFpbHVyZSB0byBhbGxvY2F0ZSB0aGUgZG1hX2J1ZiBvYmplY3QsCisgICBpdCByZXR1cm5zIE5VTEwuCisKKyAgICdleHBfbmFtZScgaW4gc3RydWN0IGRtYV9idWZfZXhwb3J0X2luZm8gaXMgdGhlIG5hbWUgb2YgZXhwb3J0ZXIgLSB0bworICAgZmFjaWxpdGF0ZSBpbmZvcm1hdGlvbiB3aGlsZSBkZWJ1Z2dpbmcuIEl0IGlzIHNldCB0byBLQlVJTERfTU9ETkFNRSBieQorICAgZGVmYXVsdCwgc28gZXhwb3J0ZXJzIGRvbid0IGhhdmUgdG8gcHJvdmlkZSBhIHNwZWNpZmljIG5hbWUsIGlmIHRoZXkgZG9uJ3QKKyAgIHdpc2ggdG8uCisKKyAgIERFRklORV9ETUFfQlVGX0VYUE9SVF9JTkZPIG1hY3JvIGRlZmluZXMgdGhlIHN0cnVjdCBkbWFfYnVmX2V4cG9ydF9pbmZvLAorICAgemVyb2VzIGl0IG91dCBhbmQgcHJlLXBvcHVsYXRlcyBleHBfbmFtZSBpbiBpdC4KKworCisyLiBVc2Vyc3BhY2UgZ2V0cyBhIGhhbmRsZSB0byBwYXNzIGFyb3VuZCB0byBwb3RlbnRpYWwgYnVmZmVyLXVzZXJzCisKKyAgIFVzZXJzcGFjZSBlbnRpdHkgcmVxdWVzdHMgZm9yIGEgZmlsZS1kZXNjcmlwdG9yIChmZCkgd2hpY2ggaXMgYSBoYW5kbGUgdG8gdGhlCisgICBhbm9ueW1vdXMgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIGJ1ZmZlci4gSXQgY2FuIHRoZW4gc2hhcmUgdGhlIGZkIHdpdGggb3RoZXIKKyAgIGRyaXZlcnMgYW5kL29yIHByb2Nlc3Nlcy4KKworICAgSW50ZXJmYWNlOgorICAgICAgaW50IGRtYV9idWZfZmQoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwgaW50IGZsYWdzKQorCisgICBUaGlzIEFQSSBpbnN0YWxscyBhbiBmZCBmb3IgdGhlIGFub255bW91cyBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGJ1ZmZlcjsKKyAgIHJldHVybnMgZWl0aGVyICdmZCcsIG9yIGVycm9yLgorCiszLiBFYWNoIGJ1ZmZlci11c2VyICdjb25uZWN0cycgaXRzZWxmIHRvIHRoZSBidWZmZXIKKworICAgRWFjaCBidWZmZXItdXNlciBub3cgZ2V0cyBhIHJlZmVyZW5jZSB0byB0aGUgYnVmZmVyLCB1c2luZyB0aGUgZmQgcGFzc2VkIHRvCisgICBpdC4KKworICAgSW50ZXJmYWNlOgorICAgICAgc3RydWN0IGRtYV9idWYgKmRtYV9idWZfZ2V0KGludCBmZCkKKworICAgVGhpcyBBUEkgd2lsbCByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIGRtYV9idWYsIGFuZCBpbmNyZW1lbnQgcmVmY291bnQgZm9yCisgICBpdC4KKworICAgQWZ0ZXIgdGhpcywgdGhlIGJ1ZmZlci11c2VyIG5lZWRzIHRvIGF0dGFjaCBpdHMgZGV2aWNlIHdpdGggdGhlIGJ1ZmZlciwgd2hpY2gKKyAgIGhlbHBzIHRoZSBleHBvcnRlciB0byBrbm93IG9mIGRldmljZSBidWZmZXIgY29uc3RyYWludHMuCisKKyAgIEludGVyZmFjZToKKyAgICAgIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmRtYV9idWZfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYpCisKKyAgIFRoaXMgQVBJIHJldHVybnMgcmVmZXJlbmNlIHRvIGFuIGF0dGFjaG1lbnQgc3RydWN0dXJlLCB3aGljaCBpcyB0aGVuIHVzZWQKKyAgIGZvciBzY2F0dGVybGlzdCBvcGVyYXRpb25zLiBJdCB3aWxsIG9wdGlvbmFsbHkgY2FsbCB0aGUgJ2F0dGFjaCcgZG1hX2J1ZgorICAgb3BlcmF0aW9uLCBpZiBwcm92aWRlZCBieSB0aGUgZXhwb3J0ZXIuCisKKyAgIFRoZSBkbWEtYnVmIHNoYXJpbmcgZnJhbWV3b3JrIGRvZXMgdGhlIGJvb2trZWVwaW5nIGJpdHMgcmVsYXRlZCB0byBtYW5hZ2luZworICAgdGhlIGxpc3Qgb2YgYWxsIGF0dGFjaG1lbnRzIHRvIGEgYnVmZmVyLgorCitVbnRpbCB0aGlzIHN0YWdlLCB0aGUgYnVmZmVyLWV4cG9ydGVyIGhhcyB0aGUgb3B0aW9uIHRvIGNob29zZSBub3QgdG8gYWN0dWFsbHkKK2FsbG9jYXRlIHRoZSBiYWNraW5nIHN0b3JhZ2UgZm9yIHRoaXMgYnVmZmVyLCBidXQgd2FpdCBmb3IgdGhlIGZpcnN0IGJ1ZmZlci11c2VyCit0byByZXF1ZXN0IHVzZSBvZiBidWZmZXIgZm9yIGFsbG9jYXRpb24uCisKKworNC4gV2hlbiBuZWVkZWQsIGJ1ZmZlci11c2VyIHJlcXVlc3RzIGFjY2VzcyB0byB0aGUgYnVmZmVyCisKKyAgIFdoZW5ldmVyIGEgYnVmZmVyLXVzZXIgd2FudHMgdG8gdXNlIHRoZSBidWZmZXIgZm9yIGFueSBETUEsIGl0IGFza3MgZm9yCisgICBhY2Nlc3MgdG8gdGhlIGJ1ZmZlciB1c2luZyBkbWFfYnVmX21hcF9hdHRhY2htZW50IEFQSS4gQXQgbGVhc3Qgb25lIGF0dGFjaCB0bworICAgdGhlIGJ1ZmZlciBtdXN0IGhhdmUgaGFwcGVuZWQgYmVmb3JlIG1hcF9kbWFfYnVmIGNhbiBiZSBjYWxsZWQuCisKKyAgIEludGVyZmFjZToKKyAgICAgIHN0cnVjdCBzZ190YWJsZSAqIGRtYV9idWZfbWFwX2F0dGFjaG1lbnQoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbik7CisKKyAgIFRoaXMgaXMgYSB3cmFwcGVyIHRvIGRtYV9idWYtPm9wcy0+bWFwX2RtYV9idWYgb3BlcmF0aW9uLCB3aGljaCBoaWRlcyB0aGUKKyAgICJkbWFfYnVmLT5vcHMtPiIgaW5kaXJlY3Rpb24gZnJvbSB0aGUgdXNlcnMgb2YgdGhpcyBpbnRlcmZhY2UuCisKKyAgIEluIHN0cnVjdCBkbWFfYnVmX29wcywgbWFwX2RtYV9idWYgaXMgZGVmaW5lZCBhcworICAgICAgc3RydWN0IHNnX3RhYmxlICogKCptYXBfZG1hX2J1Zikoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24pOworCisgICBJdCBpcyBvbmUgb2YgdGhlIGJ1ZmZlciBvcGVyYXRpb25zIHRoYXQgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSB0aGUgZXhwb3J0ZXIuCisgICBJdCBzaG91bGQgcmV0dXJuIHRoZSBzZ190YWJsZSBjb250YWluaW5nIHNjYXR0ZXJsaXN0IGZvciB0aGlzIGJ1ZmZlciwgbWFwcGVkCisgICBpbnRvIGNhbGxlcidzIGFkZHJlc3Mgc3BhY2UuCisKKyAgIElmIHRoaXMgaXMgYmVpbmcgY2FsbGVkIGZvciB0aGUgZmlyc3QgdGltZSwgdGhlIGV4cG9ydGVyIGNhbiBub3cgY2hvb3NlIHRvCisgICBzY2FuIHRocm91Z2ggdGhlIGxpc3Qgb2YgYXR0YWNobWVudHMgZm9yIHRoaXMgYnVmZmVyLCBjb2xsYXRlIHRoZSByZXF1aXJlbWVudHMKKyAgIG9mIHRoZSBhdHRhY2hlZCBkZXZpY2VzLCBhbmQgY2hvb3NlIGFuIGFwcHJvcHJpYXRlIGJhY2tpbmcgc3RvcmFnZSBmb3IgdGhlCisgICBidWZmZXIuCisKKyAgIEJhc2VkIG9uIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uLCBpdCBtaWdodCBiZSBwb3NzaWJsZSB0byBoYXZlIG11bHRpcGxlIHVzZXJzCisgICBhY2Nlc3NpbmcgYXQgdGhlIHNhbWUgdGltZSAoZm9yIHJlYWRpbmcsIG1heWJlKSwgb3IgYW55IG90aGVyIGtpbmQgb2Ygc2hhcmluZworICAgdGhhdCB0aGUgZXhwb3J0ZXIgbWlnaHQgd2lzaCB0byBtYWtlIGF2YWlsYWJsZSB0byBidWZmZXItdXNlcnMuCisKKyAgIG1hcF9kbWFfYnVmKCkgb3BlcmF0aW9uIGNhbiByZXR1cm4gLUVJTlRSIGlmIGl0IGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLgorCisKKzUuIFdoZW4gZmluaXNoZWQsIHRoZSBidWZmZXItdXNlciBub3RpZmllcyBlbmQtb2YtRE1BIHRvIGV4cG9ydGVyCisKKyAgIE9uY2UgdGhlIERNQSBmb3IgdGhlIGN1cnJlbnQgYnVmZmVyLXVzZXIgaXMgb3ZlciwgaXQgc2lnbmFscyAnZW5kLW9mLURNQScgdG8KKyAgIHRoZSBleHBvcnRlciB1c2luZyB0aGUgZG1hX2J1Zl91bm1hcF9hdHRhY2htZW50IEFQSS4KKworICAgSW50ZXJmYWNlOgorICAgICAgdm9pZCBkbWFfYnVmX3VubWFwX2F0dGFjaG1lbnQoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNnX3RhYmxlICopOworCisgICBUaGlzIGlzIGEgd3JhcHBlciB0byBkbWFfYnVmLT5vcHMtPnVubWFwX2RtYV9idWYoKSBvcGVyYXRpb24sIHdoaWNoIGhpZGVzIHRoZQorICAgImRtYV9idWYtPm9wcy0+IiBpbmRpcmVjdGlvbiBmcm9tIHRoZSB1c2VycyBvZiB0aGlzIGludGVyZmFjZS4KKworICAgSW4gc3RydWN0IGRtYV9idWZfb3BzLCB1bm1hcF9kbWFfYnVmIGlzIGRlZmluZWQgYXMKKyAgICAgIHZvaWQgKCp1bm1hcF9kbWFfYnVmKShzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNnX3RhYmxlICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24pOworCisgICB1bm1hcF9kbWFfYnVmIHNpZ25pZmllcyB0aGUgZW5kLW9mLURNQSBmb3IgdGhlIGF0dGFjaG1lbnQgcHJvdmlkZWQuIExpa2UKKyAgIG1hcF9kbWFfYnVmLCB0aGlzIEFQSSBhbHNvIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgdGhlIGV4cG9ydGVyLgorCisKKzYuIHdoZW4gYnVmZmVyLXVzZXIgaXMgZG9uZSB1c2luZyB0aGlzIGJ1ZmZlciwgaXQgJ2Rpc2Nvbm5lY3RzJyBpdHNlbGYgZnJvbSB0aGUKKyAgIGJ1ZmZlci4KKworICAgQWZ0ZXIgdGhlIGJ1ZmZlci11c2VyIGhhcyBubyBtb3JlIGludGVyZXN0IGluIHVzaW5nIHRoaXMgYnVmZmVyLCBpdCBzaG91bGQKKyAgIGRpc2Nvbm5lY3QgaXRzZWxmIGZyb20gdGhlIGJ1ZmZlcjoKKworICAgLSBpdCBmaXJzdCBkZXRhY2hlcyBpdHNlbGYgZnJvbSB0aGUgYnVmZmVyLgorCisgICBJbnRlcmZhY2U6CisgICAgICB2b2lkIGRtYV9idWZfZGV0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmRtYWJ1Zl9hdHRhY2gpOworCisgICBUaGlzIEFQSSByZW1vdmVzIHRoZSBhdHRhY2htZW50IGZyb20gdGhlIGxpc3QgaW4gZG1hYnVmLCBhbmQgb3B0aW9uYWxseSBjYWxscworICAgZG1hX2J1Zi0+b3BzLT5kZXRhY2goKSwgaWYgcHJvdmlkZWQgYnkgZXhwb3J0ZXIsIGZvciBhbnkgaG91c2VrZWVwaW5nIGJpdHMuCisKKyAgIC0gVGhlbiwgdGhlIGJ1ZmZlci11c2VyIHJldHVybnMgdGhlIGJ1ZmZlciByZWZlcmVuY2UgdG8gZXhwb3J0ZXIuCisKKyAgIEludGVyZmFjZToKKyAgICAgdm9pZCBkbWFfYnVmX3B1dChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmKTsKKworICAgVGhpcyBBUEkgdGhlbiByZWR1Y2VzIHRoZSByZWZjb3VudCBmb3IgdGhpcyBidWZmZXIuCisKKyAgIElmLCBhcyBhIHJlc3VsdCBvZiB0aGlzIGNhbGwsIHRoZSByZWZjb3VudCBiZWNvbWVzIDAsIHRoZSAncmVsZWFzZScgZmlsZQorICAgb3BlcmF0aW9uIHJlbGF0ZWQgdG8gdGhpcyBmZCBpcyBjYWxsZWQuIEl0IGNhbGxzIHRoZSBkbWFidWYtPm9wcy0+cmVsZWFzZSgpCisgICBvcGVyYXRpb24gaW4gdHVybiwgYW5kIGZyZWVzIHRoZSBtZW1vcnkgYWxsb2NhdGVkIGZvciBkbWFidWYgd2hlbiBleHBvcnRlZC4KKworTk9URVM6CistIEltcG9ydGFuY2Ugb2YgYXR0YWNoLWRldGFjaCBhbmQge21hcCx1bm1hcH1fZG1hX2J1ZiBvcGVyYXRpb24gcGFpcnMKKyAgIFRoZSBhdHRhY2gtZGV0YWNoIGNhbGxzIGFsbG93IHRoZSBleHBvcnRlciB0byBmaWd1cmUgb3V0IGJhY2tpbmctc3RvcmFnZQorICAgY29uc3RyYWludHMgZm9yIHRoZSBjdXJyZW50bHktaW50ZXJlc3RlZCBkZXZpY2VzLiBUaGlzIGFsbG93cyBwcmVmZXJlbnRpYWwKKyAgIGFsbG9jYXRpb24sIGFuZC9vciBtaWdyYXRpb24gb2YgcGFnZXMgYWNyb3NzIGRpZmZlcmVudCB0eXBlcyBvZiBzdG9yYWdlCisgICBhdmFpbGFibGUsIGlmIHBvc3NpYmxlLgorCisgICBCcmFja2V0aW5nIG9mIERNQSBhY2Nlc3Mgd2l0aCB7bWFwLHVubWFwfV9kbWFfYnVmIG9wZXJhdGlvbnMgaXMgZXNzZW50aWFsCisgICB0byBhbGxvdyBqdXN0LWluLXRpbWUgYmFja2luZyBvZiBzdG9yYWdlLCBhbmQgbWlncmF0aW9uIG1pZC13YXkgdGhyb3VnaCBhCisgICB1c2UtY2FzZS4KKworLSBNaWdyYXRpb24gb2YgYmFja2luZyBzdG9yYWdlIGlmIG5lZWRlZAorICAgSWYgYWZ0ZXIKKyAgIC0gYXQgbGVhc3Qgb25lIG1hcF9kbWFfYnVmIGhhcyBoYXBwZW5lZCwKKyAgIC0gYW5kIHRoZSBiYWNraW5nIHN0b3JhZ2UgaGFzIGJlZW4gYWxsb2NhdGVkIGZvciB0aGlzIGJ1ZmZlciwKKyAgIGFub3RoZXIgbmV3IGJ1ZmZlci11c2VyIGludGVuZHMgdG8gYXR0YWNoIGl0c2VsZiB0byB0aGlzIGJ1ZmZlciwgaXQgbWlnaHQKKyAgIGJlIGFsbG93ZWQsIGlmIHBvc3NpYmxlIGZvciB0aGUgZXhwb3J0ZXIuCisKKyAgIEluIGNhc2UgaXQgaXMgYWxsb3dlZCBieSB0aGUgZXhwb3J0ZXI6CisgICAgaWYgdGhlIG5ldyBidWZmZXItdXNlciBoYXMgc3RyaWN0ZXIgJ2JhY2tpbmctc3RvcmFnZSBjb25zdHJhaW50cycsIGFuZCB0aGUKKyAgICBleHBvcnRlciBjYW4gaGFuZGxlIHRoZXNlIGNvbnN0cmFpbnRzLCB0aGUgZXhwb3J0ZXIgY2FuIGp1c3Qgc3RhbGwgb24gdGhlCisgICAgbWFwX2RtYV9idWYgdW50aWwgYWxsIG91dHN0YW5kaW5nIGFjY2VzcyBpcyBjb21wbGV0ZWQgKGFzIHNpZ25hbGxlZCBieQorICAgIHVubWFwX2RtYV9idWYpLgorICAgIE9uY2UgYWxsIHVzZXJzIGhhdmUgZmluaXNoZWQgYWNjZXNzaW5nIGFuZCBoYXZlIHVubWFwcGVkIHRoaXMgYnVmZmVyLCB0aGUKKyAgICBleHBvcnRlciBjb3VsZCBwb3RlbnRpYWxseSBtb3ZlIHRoZSBidWZmZXIgdG8gdGhlIHN0cmljdGVyIGJhY2tpbmctc3RvcmFnZSwKKyAgICBhbmQgdGhlbiBhbGxvdyBmdXJ0aGVyIHttYXAsdW5tYXB9X2RtYV9idWYgb3BlcmF0aW9ucyBmcm9tIGFueSBidWZmZXItdXNlcgorICAgIGZyb20gdGhlIG1pZ3JhdGVkIGJhY2tpbmctc3RvcmFnZS4KKworICAgSWYgdGhlIGV4cG9ydGVyIGNhbm5vdCBmdWxmaWxsIHRoZSBiYWNraW5nLXN0b3JhZ2UgY29uc3RyYWludHMgb2YgdGhlIG5ldworICAgYnVmZmVyLXVzZXIgZGV2aWNlIGFzIHJlcXVlc3RlZCwgZG1hX2J1Zl9hdHRhY2goKSB3b3VsZCByZXR1cm4gYW4gZXJyb3IgdG8KKyAgIGRlbm90ZSBub24tY29tcGF0aWJpbGl0eSBvZiB0aGUgbmV3IGJ1ZmZlci1zaGFyaW5nIHJlcXVlc3Qgd2l0aCB0aGUgY3VycmVudAorICAgYnVmZmVyLgorCisgICBJZiB0aGUgZXhwb3J0ZXIgY2hvb3NlcyBub3QgdG8gYWxsb3cgYW4gYXR0YWNoKCkgb3BlcmF0aW9uIG9uY2UgYQorICAgbWFwX2RtYV9idWYoKSBBUEkgaGFzIGJlZW4gY2FsbGVkLCBpdCBzaW1wbHkgcmV0dXJucyBhbiBlcnJvci4KKworS2VybmVsIGNwdSBhY2Nlc3MgdG8gYSBkbWEtYnVmIGJ1ZmZlciBvYmplY3QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBtb3RpdmF0aW9uIHRvIGFsbG93IGNwdSBhY2Nlc3MgZnJvbSB0aGUga2VybmVsIHRvIGEgZG1hLWJ1ZiBvYmplY3QgZnJvbSB0aGUKK2ltcG9ydGVycyBzaWRlIGFyZToKKy0gZmFsbGJhY2sgb3BlcmF0aW9ucywgZS5nLiBpZiB0aGUgZGV2aWNlcyBpcyBjb25uZWN0ZWQgdG8gYSB1c2IgYnVzIGFuZCB0aGUKKyAga2VybmVsIG5lZWRzIHRvIHNodWZmbGUgdGhlIGRhdGEgYXJvdW5kIGZpcnN0IGJlZm9yZSBzZW5kaW5nIGl0IGF3YXkuCistIGZ1bGwgdHJhbnNwYXJlbmN5IGZvciBleGlzdGluZyB1c2VycyBvbiB0aGUgaW1wb3J0ZXIgc2lkZSwgaS5lLiB1c2Vyc3BhY2UKKyAgc2hvdWxkIG5vdCBub3RpY2UgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIG5vcm1hbCBvYmplY3QgZnJvbSB0aGF0IHN1YnN5c3RlbQorICBhbmQgYW4gaW1wb3J0ZWQgb25lIGJhY2tlZCBieSBhIGRtYS1idWYuIFRoaXMgaXMgcmVhbGx5IGltcG9ydGFudCBmb3IgZHJtCisgIG9wZW5nbCBkcml2ZXJzIHRoYXQgZXhwZWN0IHRvIHN0aWxsIHVzZSBhbGwgdGhlIGV4aXN0aW5nIHVwbG9hZC9kb3dubG9hZAorICBwYXRocy4KKworQWNjZXNzIHRvIGEgZG1hX2J1ZiBmcm9tIHRoZSBrZXJuZWwgY29udGV4dCBpbnZvbHZlcyB0aHJlZSBzdGVwczoKKworMS4gUHJlcGFyZSBhY2Nlc3MsIHdoaWNoIGludmFsaWRhdGUgYW55IG5lY2Vzc2FyeSBjYWNoZXMgYW5kIG1ha2UgdGhlIG9iamVjdAorICAgYXZhaWxhYmxlIGZvciBjcHUgYWNjZXNzLgorMi4gQWNjZXNzIHRoZSBvYmplY3QgcGFnZS1ieS1wYWdlIHdpdGggdGhlIGRtYV9idWYgbWFwIGFwaXMKKzMuIEZpbmlzaCBhY2Nlc3MsIHdoaWNoIHdpbGwgZmx1c2ggYW55IG5lY2Vzc2FyeSBjcHUgY2FjaGVzIGFuZCBmcmVlIHJlc2VydmVkCisgICByZXNvdXJjZXMuCisKKzEuIFByZXBhcmUgYWNjZXNzCisKKyAgIEJlZm9yZSBhbiBpbXBvcnRlciBjYW4gYWNjZXNzIGEgZG1hX2J1ZiBvYmplY3Qgd2l0aCB0aGUgY3B1IGZyb20gdGhlIGtlcm5lbAorICAgY29udGV4dCwgaXQgbmVlZHMgdG8gbm90aWZ5IHRoZSBleHBvcnRlciBvZiB0aGUgYWNjZXNzIHRoYXQgaXMgYWJvdXQgdG8KKyAgIGhhcHBlbi4KKworICAgSW50ZXJmYWNlOgorICAgICAgaW50IGRtYV9idWZfYmVnaW5fY3B1X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAorCQkJCSAgIHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbiwKKwkJCQkgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCisKKyAgIFRoaXMgYWxsb3dzIHRoZSBleHBvcnRlciB0byBlbnN1cmUgdGhhdCB0aGUgbWVtb3J5IGlzIGFjdHVhbGx5IGF2YWlsYWJsZSBmb3IKKyAgIGNwdSBhY2Nlc3MgLSB0aGUgZXhwb3J0ZXIgbWlnaHQgbmVlZCB0byBhbGxvY2F0ZSBvciBzd2FwLWluIGFuZCBwaW4gdGhlCisgICBiYWNraW5nIHN0b3JhZ2UuIFRoZSBleHBvcnRlciBhbHNvIG5lZWRzIHRvIGVuc3VyZSB0aGF0IGNwdSBhY2Nlc3MgaXMKKyAgIGNvaGVyZW50IGZvciB0aGUgZ2l2ZW4gcmFuZ2UgYW5kIGFjY2VzcyBkaXJlY3Rpb24uIFRoZSByYW5nZSBhbmQgYWNjZXNzCisgICBkaXJlY3Rpb24gY2FuIGJlIHVzZWQgYnkgdGhlIGV4cG9ydGVyIHRvIG9wdGltaXplIHRoZSBjYWNoZSBmbHVzaGluZywgaS5lLgorICAgYWNjZXNzIG91dHNpZGUgb2YgdGhlIHJhbmdlIG9yIHdpdGggYSBkaWZmZXJlbnQgZGlyZWN0aW9uIChyZWFkIGluc3RlYWQgb2YKKyAgIHdyaXRlKSBtaWdodCByZXR1cm4gc3RhbGUgb3IgZXZlbiBib2d1cyBkYXRhIChlLmcuIHdoZW4gdGhlIGV4cG9ydGVyIG5lZWRzIHRvCisgICBjb3B5IHRoZSBkYXRhIHRvIHRlbXBvcmFyeSBzdG9yYWdlKS4KKworICAgVGhpcyBzdGVwIG1pZ2h0IGZhaWwsIGUuZy4gaW4gb29tIGNvbmRpdGlvbnMuCisKKzIuIEFjY2Vzc2luZyB0aGUgYnVmZmVyCisKKyAgIFRvIHN1cHBvcnQgZG1hX2J1ZiBvYmplY3RzIHJlc2lkaW5nIGluIGhpZ2htZW0gY3B1IGFjY2VzcyBpcyBwYWdlLWJhc2VkIHVzaW5nCisgICBhbiBhcGkgc2ltaWxhciB0byBrbWFwLiBBY2Nlc3NpbmcgYSBkbWFfYnVmIGlzIGRvbmUgaW4gYWxpZ25lZCBjaHVua3Mgb2YKKyAgIFBBR0VfU0laRSBzaXplLiBCZWZvcmUgYWNjZXNzaW5nIGEgY2h1bmsgaXQgbmVlZHMgdG8gYmUgbWFwcGVkLCB3aGljaCByZXR1cm5zCisgICBhIHBvaW50ZXIgaW4ga2VybmVsIHZpcnR1YWwgYWRkcmVzcyBzcGFjZS4gQWZ0ZXJ3YXJkcyB0aGUgY2h1bmsgbmVlZHMgdG8gYmUKKyAgIHVubWFwcGVkIGFnYWluLiBUaGVyZSBpcyBubyBsaW1pdCBvbiBob3cgb2Z0ZW4gYSBnaXZlbiBjaHVuayBjYW4gYmUgbWFwcGVkCisgICBhbmQgdW5tYXBwZWQsIGkuZS4gdGhlIGltcG9ydGVyIGRvZXMgbm90IG5lZWQgdG8gY2FsbCBiZWdpbl9jcHVfYWNjZXNzIGFnYWluCisgICBiZWZvcmUgbWFwcGluZyB0aGUgc2FtZSBjaHVuayBhZ2Fpbi4KKworICAgSW50ZXJmYWNlczoKKyAgICAgIHZvaWQgKmRtYV9idWZfa21hcChzdHJ1Y3QgZG1hX2J1ZiAqLCB1bnNpZ25lZCBsb25nKTsKKyAgICAgIHZvaWQgZG1hX2J1Zl9rdW5tYXAoc3RydWN0IGRtYV9idWYgKiwgdW5zaWduZWQgbG9uZywgdm9pZCAqKTsKKworICAgVGhlcmUgYXJlIGFsc28gYXRvbWljIHZhcmlhbnRzIG9mIHRoZXNlIGludGVyZmFjZXMuIExpa2UgZm9yIGttYXAgdGhleQorICAgZmFjaWxpdGF0ZSBub24tYmxvY2tpbmcgZmFzdC1wYXRocy4gTmVpdGhlciB0aGUgaW1wb3J0ZXIgbm9yIHRoZSBleHBvcnRlciAoaW4KKyAgIHRoZSBjYWxsYmFjaykgaXMgYWxsb3dlZCB0byBibG9jayB3aGVuIHVzaW5nIHRoZXNlLgorCisgICBJbnRlcmZhY2VzOgorICAgICAgdm9pZCAqZG1hX2J1Zl9rbWFwX2F0b21pYyhzdHJ1Y3QgZG1hX2J1ZiAqLCB1bnNpZ25lZCBsb25nKTsKKyAgICAgIHZvaWQgZG1hX2J1Zl9rdW5tYXBfYXRvbWljKHN0cnVjdCBkbWFfYnVmICosIHVuc2lnbmVkIGxvbmcsIHZvaWQgKik7CisKKyAgIEZvciBpbXBvcnRlcnMgYWxsIHRoZSByZXN0cmljdGlvbnMgb2YgdXNpbmcga21hcCBhcHBseSwgbGlrZSB0aGUgbGltaXRlZAorICAgc3VwcGx5IG9mIGttYXBfYXRvbWljIHNsb3RzLiBIZW5jZSBhbiBpbXBvcnRlciBzaGFsbCBvbmx5IGhvbGQgb250byBhdCBtb3N0IDIKKyAgIGF0b21pYyBkbWFfYnVmIGttYXBzIGF0IHRoZSBzYW1lIHRpbWUgKGluIGFueSBnaXZlbiBwcm9jZXNzIGNvbnRleHQpLgorCisgICBkbWFfYnVmIGttYXAgY2FsbHMgb3V0c2lkZSBvZiB0aGUgcmFuZ2Ugc3BlY2lmaWVkIGluIGJlZ2luX2NwdV9hY2Nlc3MgYXJlCisgICB1bmRlZmluZWQuIElmIHRoZSByYW5nZSBpcyBub3QgUEFHRV9TSVpFIGFsaWduZWQsIGttYXAgbmVlZHMgdG8gc3VjY2VlZCBvbgorICAgdGhlIHBhcnRpYWwgY2h1bmtzIGF0IHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBidXQgbWF5IHJldHVybiBzdGFsZSBvciBib2d1cworICAgZGF0YSBvdXRzaWRlIG9mIHRoZSByYW5nZSAoaW4gdGhlc2UgcGFydGlhbCBjaHVua3MpLgorCisgICBOb3RlIHRoYXQgdGhlc2UgY2FsbHMgbmVlZCB0byBhbHdheXMgc3VjY2VlZC4gVGhlIGV4cG9ydGVyIG5lZWRzIHRvIGNvbXBsZXRlCisgICBhbnkgcHJlcGFyYXRpb25zIHRoYXQgbWlnaHQgZmFpbCBpbiBiZWdpbl9jcHVfYWNjZXNzLgorCisgICBGb3Igc29tZSBjYXNlcyB0aGUgb3ZlcmhlYWQgb2Yga21hcCBjYW4gYmUgdG9vIGhpZ2gsIGEgdm1hcCBpbnRlcmZhY2UKKyAgIGlzIGludHJvZHVjZWQuIFRoaXMgaW50ZXJmYWNlIHNob3VsZCBiZSB1c2VkIHZlcnkgY2FyZWZ1bGx5LCBhcyB2bWFsbG9jCisgICBzcGFjZSBpcyBhIGxpbWl0ZWQgcmVzb3VyY2VzIG9uIG1hbnkgYXJjaGl0ZWN0dXJlcy4KKworICAgSW50ZXJmYWNlczoKKyAgICAgIHZvaWQgKmRtYV9idWZfdm1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmKQorICAgICAgdm9pZCBkbWFfYnVmX3Z1bm1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCB2b2lkICp2YWRkcikKKworICAgVGhlIHZtYXAgY2FsbCBjYW4gZmFpbCBpZiB0aGVyZSBpcyBubyB2bWFwIHN1cHBvcnQgaW4gdGhlIGV4cG9ydGVyLCBvciBpZiBpdAorICAgcnVucyBvdXQgb2Ygdm1hbGxvYyBzcGFjZS4gRmFsbGJhY2sgdG8ga21hcCBzaG91bGQgYmUgaW1wbGVtZW50ZWQuIE5vdGUgdGhhdAorICAgdGhlIGRtYS1idWYgbGF5ZXIga2VlcHMgYSByZWZlcmVuY2UgY291bnQgZm9yIGFsbCB2bWFwIGFjY2VzcyBhbmQgY2FsbHMgZG93bgorICAgaW50byB0aGUgZXhwb3J0ZXIncyB2bWFwIGZ1bmN0aW9uIG9ubHkgd2hlbiBubyB2bWFwcGluZyBleGlzdHMsIGFuZCBvbmx5CisgICB1bm1hcHMgaXQgb25jZS4gUHJvdGVjdGlvbiBhZ2FpbnN0IGNvbmN1cnJlbnQgdm1hcC92dW5tYXAgY2FsbHMgaXMgcHJvdmlkZWQKKyAgIGJ5IHRha2luZyB0aGUgZG1hX2J1Zi0+bG9jayBtdXRleC4KKworMy4gRmluaXNoIGFjY2VzcworCisgICBXaGVuIHRoZSBpbXBvcnRlciBpcyBkb25lIGFjY2Vzc2luZyB0aGUgcmFuZ2Ugc3BlY2lmaWVkIGluIGJlZ2luX2NwdV9hY2Nlc3MsCisgICBpdCBuZWVkcyB0byBhbm5vdW5jZSB0aGlzIHRvIHRoZSBleHBvcnRlciAodG8gZmFjaWxpdGF0ZSBjYWNoZSBmbHVzaGluZyBhbmQKKyAgIHVucGlubmluZyBvZiBhbnkgcGlubmVkIHJlc291cmNlcykuIFRoZSByZXN1bHQgb2YgYW55IGRtYV9idWYga21hcCBjYWxscworICAgYWZ0ZXIgZW5kX2NwdV9hY2Nlc3MgaXMgdW5kZWZpbmVkLgorCisgICBJbnRlcmZhY2U6CisgICAgICB2b2lkIGRtYV9idWZfZW5kX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9idWYgKmRtYV9idWYsCisJCQkJICBzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW4sCisJCQkJICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpOworCisKK0RpcmVjdCBVc2Vyc3BhY2UgQWNjZXNzL21tYXAgU3VwcG9ydAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JlaW5nIGFibGUgdG8gbW1hcCBhbiBleHBvcnQgZG1hLWJ1ZiBidWZmZXIgb2JqZWN0IGhhcyAyIG1haW4gdXNlLWNhc2VzOgorLSBDUFUgZmFsbGJhY2sgcHJvY2Vzc2luZyBpbiBhIHBpcGVsaW5lIGFuZAorLSBzdXBwb3J0aW5nIGV4aXN0aW5nIG1tYXAgaW50ZXJmYWNlcyBpbiBpbXBvcnRlcnMuCisKKzEuIENQVSBmYWxsYmFjayBwcm9jZXNzaW5nIGluIGEgcGlwZWxpbmUKKworICAgSW4gbWFueSBwcm9jZXNzaW5nIHBpcGVsaW5lcyBpdCBpcyBzb21ldGltZXMgcmVxdWlyZWQgdGhhdCB0aGUgY3B1IGNhbiBhY2Nlc3MKKyAgIHRoZSBkYXRhIGluIGEgZG1hLWJ1ZiAoZS5nLiBmb3IgdGh1bWJuYWlsIGNyZWF0aW9uLCBzbmFwc2hvdHMsIC4uLikuIFRvIGF2b2lkCisgICB0aGUgbmVlZCB0byBoYW5kbGUgdGhpcyBzcGVjaWFsbHkgaW4gdXNlcnNwYWNlIGZyYW1ld29ya3MgZm9yIGJ1ZmZlciBzaGFyaW5nCisgICBpdCdzIGlkZWFsIGlmIHRoZSBkbWFfYnVmIGZkIGl0c2VsZiBjYW4gYmUgdXNlZCB0byBhY2Nlc3MgdGhlIGJhY2tpbmcgc3RvcmFnZQorICAgZnJvbSB1c2Vyc3BhY2UgdXNpbmcgbW1hcC4KKworICAgRnVydGhlcm1vcmUgQW5kcm9pZCdzIElPTiBmcmFtZXdvcmsgYWxyZWFkeSBzdXBwb3J0cyB0aGlzIChhbmQgaXMgb3RoZXJ3aXNlCisgICByYXRoZXIgc2ltaWxhciB0byBkbWEtYnVmIGZyb20gYSB1c2Vyc3BhY2UgY29uc3VtZXIgc2lkZSB3aXRoIHVzaW5nIGZkcyBhcworICAgaGFuZGxlcywgdG9vKS4gU28gaXQncyBiZW5lZmljaWFsIHRvIHN1cHBvcnQgdGhpcyBpbiBhIHNpbWlsYXIgZmFzaGlvbiBvbgorICAgZG1hLWJ1ZiB0byBoYXZlIGEgZ29vZCB0cmFuc2l0aW9uIHBhdGggZm9yIGV4aXN0aW5nIEFuZHJvaWQgdXNlcnNwYWNlLgorCisgICBObyBzcGVjaWFsIGludGVyZmFjZXMsIHVzZXJzcGFjZSBzaW1wbHkgY2FsbHMgbW1hcCBvbiB0aGUgZG1hLWJ1ZiBmZC4KKworMi4gU3VwcG9ydGluZyBleGlzdGluZyBtbWFwIGludGVyZmFjZXMgaW4gaW1wb3J0ZXJzCisKKyAgIFNpbWlsYXIgdG8gdGhlIG1vdGl2YXRpb24gZm9yIGtlcm5lbCBjcHUgYWNjZXNzIGl0IGlzIGFnYWluIGltcG9ydGFudCB0aGF0CisgICB0aGUgdXNlcnNwYWNlIGNvZGUgb2YgYSBnaXZlbiBpbXBvcnRpbmcgc3Vic3lzdGVtIGNhbiB1c2UgdGhlIHNhbWUgaW50ZXJmYWNlcworICAgd2l0aCBhIGltcG9ydGVkIGRtYS1idWYgYnVmZmVyIG9iamVjdCBhcyB3aXRoIGEgbmF0aXZlIGJ1ZmZlciBvYmplY3QuIFRoaXMgaXMKKyAgIGVzcGVjaWFsbHkgaW1wb3J0YW50IGZvciBkcm0gd2hlcmUgdGhlIHVzZXJzcGFjZSBwYXJ0IG9mIGNvbnRlbXBvcmFyeSBPcGVuR0wsCisgICBYLCBhbmQgb3RoZXIgZHJpdmVycyBpcyBodWdlLCBhbmQgcmV3b3JraW5nIHRoZW0gdG8gdXNlIGEgZGlmZmVyZW50IHdheSB0bworICAgbW1hcCBhIGJ1ZmZlciByYXRoZXIgaW52YXNpdmUuCisKKyAgIFRoZSBhc3N1bXB0aW9uIGluIHRoZSBjdXJyZW50IGRtYS1idWYgaW50ZXJmYWNlcyBpcyB0aGF0IHJlZGlyZWN0aW5nIHRoZQorICAgaW5pdGlhbCBtbWFwIGlzIGFsbCB0aGF0J3MgbmVlZGVkLiBBIHN1cnZleSBvZiBzb21lIG9mIHRoZSBleGlzdGluZworICAgc3Vic3lzdGVtcyBzaG93cyB0aGF0IG5vIGRyaXZlciBzZWVtcyB0byBkbyBhbnkgbmVmYXJpb3VzIHRoaW5nIGxpa2Ugc3luY2luZworICAgdXAgd2l0aCBvdXRzdGFuZGluZyBhc3luY2hyb25vdXMgcHJvY2Vzc2luZyBvbiB0aGUgZGV2aWNlIG9yIGFsbG9jYXRpbmcKKyAgIHNwZWNpYWwgcmVzb3VyY2VzIGF0IGZhdWx0IHRpbWUuIFNvIGhvcGVmdWxseSB0aGlzIGlzIGdvb2QgZW5vdWdoLCBzaW5jZQorICAgYWRkaW5nIGludGVyZmFjZXMgdG8gaW50ZXJjZXB0IHBhZ2VmYXVsdHMgYW5kIGFsbG93IHB0ZSBzaG9vdGRvd25zIHdvdWxkCisgICBpbmNyZWFzZSB0aGUgY29tcGxleGl0eSBxdWl0ZSBhIGJpdC4KKworICAgSW50ZXJmYWNlOgorICAgICAgaW50IGRtYV9idWZfbW1hcChzdHJ1Y3QgZG1hX2J1ZiAqLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiwKKwkJICAgICAgIHVuc2lnbmVkIGxvbmcpOworCisgICBJZiB0aGUgaW1wb3J0aW5nIHN1YnN5c3RlbSBzaW1wbHkgcHJvdmlkZXMgYSBzcGVjaWFsLXB1cnBvc2UgbW1hcCBjYWxsIHRvIHNldAorICAgdXAgYSBtYXBwaW5nIGluIHVzZXJzcGFjZSwgY2FsbGluZyBkb19tbWFwIHdpdGggZG1hX2J1Zi0+ZmlsZSB3aWxsIGVxdWFsbHkKKyAgIGFjaGlldmUgdGhhdCBmb3IgYSBkbWEtYnVmIG9iamVjdC4KKworMy4gSW1wbGVtZW50YXRpb24gbm90ZXMgZm9yIGV4cG9ydGVycworCisgICBCZWNhdXNlIGRtYS1idWYgYnVmZmVycyBoYXZlIGludmFyaWFudCBzaXplIG92ZXIgdGhlaXIgbGlmZXRpbWUsIHRoZSBkbWEtYnVmCisgICBjb3JlIGNoZWNrcyB3aGV0aGVyIGEgdm1hIGlzIHRvbyBsYXJnZSBhbmQgcmVqZWN0cyBzdWNoIG1hcHBpbmdzLiBUaGUKKyAgIGV4cG9ydGVyIGhlbmNlIGRvZXMgbm90IG5lZWQgdG8gZHVwbGljYXRlIHRoaXMgY2hlY2suCisKKyAgIEJlY2F1c2UgZXhpc3RpbmcgaW1wb3J0aW5nIHN1YnN5c3RlbXMgbWlnaHQgcHJlc3VtZSBjb2hlcmVudCBtYXBwaW5ncyBmb3IKKyAgIHVzZXJzcGFjZSwgdGhlIGV4cG9ydGVyIG5lZWRzIHRvIHNldCB1cCBhIGNvaGVyZW50IG1hcHBpbmcuIElmIHRoYXQncyBub3QKKyAgIHBvc3NpYmxlLCBpdCBuZWVkcyB0byBmYWtlIGNvaGVyZW5jeSBieSBtYW51YWxseSBzaG9vdGluZyBkb3duIHB0ZXMgd2hlbgorICAgbGVhdmluZyB0aGUgY3B1IGRvbWFpbiBhbmQgZmx1c2hpbmcgY2FjaGVzIGF0IGZhdWx0IHRpbWUuIE5vdGUgdGhhdCBhbGwgdGhlCisgICBkbWFfYnVmIGZpbGVzIHNoYXJlIHRoZSBzYW1lIGFub24gaW5vZGUsIGhlbmNlIHRoZSBleHBvcnRlciBuZWVkcyB0byByZXBsYWNlCisgICB0aGUgZG1hX2J1ZiBmaWxlIHN0b3JlZCBpbiB2bWEtPnZtX2ZpbGUgd2l0aCBpdCdzIG93biBpZiBwdGUgc2hvb3Rkb3duIGlzCisgICByZXF1aXJlZC4gVGhpcyBpcyBiZWNhdXNlIHRoZSBrZXJuZWwgdXNlcyB0aGUgdW5kZXJseWluZyBpbm9kZSdzIGFkZHJlc3Nfc3BhY2UKKyAgIGZvciB2bWEgdHJhY2tpbmcgKGFuZCBoZW5jZSBwdGUgdHJhY2tpbmcgYXQgc2hvb3Rkb3duIHRpbWUgd2l0aAorICAgdW5tYXBfbWFwcGluZ19yYW5nZSkuCisKKyAgIElmIHRoZSBhYm92ZSBzaG9vdGRvd24gZGFuY2UgdHVybnMgb3V0IHRvIGJlIHRvbyBleHBlbnNpdmUgaW4gY2VydGFpbgorICAgc2NlbmFyaW9zLCB3ZSBjYW4gZXh0ZW5kIGRtYS1idWYgd2l0aCBhIG1vcmUgZXhwbGljaXQgY2FjaGUgdHJhY2tpbmcgc2NoZW1lCisgICBmb3IgdXNlcnNwYWNlIG1hcHBpbmdzLiBCdXQgdGhlIGN1cnJlbnQgYXNzdW1wdGlvbiBpcyB0aGF0IHVzaW5nIG1tYXAgaXMKKyAgIGFsd2F5cyBhIHNsb3dlciBwYXRoLCBzbyBzb21lIGluZWZmaWNpZW5jaWVzIHNob3VsZCBiZSBhY2NlcHRhYmxlLgorCisgICBFeHBvcnRlcnMgdGhhdCBzaG9vdCBkb3duIG1hcHBpbmdzIChmb3IgYW55IHJlYXNvbnMpIHNoYWxsIG5vdCBkbyBhbnkKKyAgIHN5bmNocm9uaXphdGlvbiBhdCBmYXVsdCB0aW1lIHdpdGggb3V0c3RhbmRpbmcgZGV2aWNlIG9wZXJhdGlvbnMuCisgICBTeW5jaHJvbml6YXRpb24gaXMgYW4gb3J0aG9nb25hbCBpc3N1ZSB0byBzaGFyaW5nIHRoZSBiYWNraW5nIHN0b3JhZ2Ugb2YgYQorICAgYnVmZmVyIGFuZCBoZW5jZSBzaG91bGQgbm90IGJlIGhhbmRsZWQgYnkgZG1hLWJ1ZiBpdHNlbGYuIFRoaXMgaXMgZXhwbGljaXRseQorICAgbWVudGlvbmVkIGhlcmUgYmVjYXVzZSBtYW55IHBlb3BsZSBzZWVtIHRvIHdhbnQgc29tZXRoaW5nIGxpa2UgdGhpcywgYnV0IGlmCisgICBkaWZmZXJlbnQgZXhwb3J0ZXJzIGhhbmRsZSB0aGlzIGRpZmZlcmVudGx5LCBidWZmZXIgc2hhcmluZyBjYW4gZmFpbCBpbgorICAgaW50ZXJlc3Rpbmcgd2F5cyBkZXBlbmRpbmcgdXBvbmcgdGhlIGV4cG9ydGVyIChpZiB1c2Vyc3BhY2Ugc3RhcnRzIGRlcGVuZGluZworICAgdXBvbiB0aGlzIGltcGxpY2l0IHN5bmNocm9uaXphdGlvbikuCisKK090aGVyIEludGVyZmFjZXMgRXhwb3NlZCB0byBVc2Vyc3BhY2Ugb24gdGhlIGRtYS1idWYgRkQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIFNpbmNlIGtlcm5lbCAzLjEyIHRoZSBkbWEtYnVmIEZEIHN1cHBvcnRzIHRoZSBsbHNlZWsgc3lzdGVtIGNhbGwsIGJ1dCBvbmx5CisgIHdpdGggb2Zmc2V0PTAgYW5kIHdoZW5jZT1TRUVLX0VORHxTRUVLX1NFVC4gU0VFS19TRVQgaXMgc3VwcG9ydGVkIHRvIGFsbG93CisgIHRoZSB1c3VhbCBzaXplIGRpc2NvdmVyIHBhdHRlcm4gc2l6ZSA9IFNFRUtfRU5EKDApOyBTRUVLX1NFVCgwKS4gRXZlcnkgb3RoZXIKKyAgbGxzZWVrIG9wZXJhdGlvbiB3aWxsIHJlcG9ydCAtRUlOVkFMLgorCisgIElmIGxsc2VlayBvbiBkbWEtYnVmIEZEcyBpc24ndCBzdXBwb3J0IHRoZSBrZXJuZWwgd2lsbCByZXBvcnQgLUVTUElQRSBmb3IgYWxsCisgIGNhc2VzLiBVc2Vyc3BhY2UgY2FuIHVzZSB0aGlzIHRvIGRldGVjdCBzdXBwb3J0IGZvciBkaXNjb3ZlcmluZyB0aGUgZG1hLWJ1ZgorICBzaXplIHVzaW5nIGxsc2Vlay4KKworTWlzY2VsbGFuZW91cyBub3RlcworLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIEFueSBleHBvcnRlcnMgb3IgdXNlcnMgb2YgdGhlIGRtYS1idWYgYnVmZmVyIHNoYXJpbmcgZnJhbWV3b3JrIG11c3QgaGF2ZQorICBhICdzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVInIGluIHRoZWlyIHJlc3BlY3RpdmUgS2NvbmZpZ3MuCisKKy0gSW4gb3JkZXIgdG8gYXZvaWQgZmQgbGVha3Mgb24gZXhlYywgdGhlIEZEX0NMT0VYRUMgZmxhZyBtdXN0IGJlIHNldAorICBvbiB0aGUgZmlsZSBkZXNjcmlwdG9yLiAgVGhpcyBpcyBub3QganVzdCBhIHJlc291cmNlIGxlYWssIGJ1dCBhCisgIHBvdGVudGlhbCBzZWN1cml0eSBob2xlLiAgSXQgY291bGQgZ2l2ZSB0aGUgbmV3bHkgZXhlYydkIGFwcGxpY2F0aW9uCisgIGFjY2VzcyB0byBidWZmZXJzLCB2aWEgdGhlIGxlYWtlZCBmZCwgdG8gd2hpY2ggaXQgc2hvdWxkIG90aGVyd2lzZQorICBub3QgYmUgcGVybWl0dGVkIGFjY2Vzcy4KKworICBUaGUgcHJvYmxlbSB3aXRoIGRvaW5nIHRoaXMgdmlhIGEgc2VwYXJhdGUgZmNudGwoKSBjYWxsLCB2ZXJzdXMgZG9pbmcgaXQKKyAgYXRvbWljYWxseSB3aGVuIHRoZSBmZCBpcyBjcmVhdGVkLCBpcyB0aGF0IHRoaXMgaXMgaW5oZXJlbnRseSByYWN5IGluIGEKKyAgbXVsdGktdGhyZWFkZWQgYXBwWzNdLiAgVGhlIGlzc3VlIGlzIG1hZGUgd29yc2Ugd2hlbiBpdCBpcyBsaWJyYXJ5IGNvZGUKKyAgb3BlbmluZy9jcmVhdGluZyB0aGUgZmlsZSBkZXNjcmlwdG9yLCBhcyB0aGUgYXBwbGljYXRpb24gbWF5IG5vdCBldmVuIGJlCisgIGF3YXJlIG9mIHRoZSBmZCdzLgorCisgIFRvIGF2b2lkIHRoaXMgcHJvYmxlbSwgdXNlcnNwYWNlIG11c3QgaGF2ZSBhIHdheSB0byByZXF1ZXN0IE9fQ0xPRVhFQworICBmbGFnIGJlIHNldCB3aGVuIHRoZSBkbWEtYnVmIGZkIGlzIGNyZWF0ZWQuICBTbyBhbnkgQVBJIHByb3ZpZGVkIGJ5CisgIHRoZSBleHBvcnRpbmcgZHJpdmVyIHRvIGNyZWF0ZSBhIGRtYWJ1ZiBmZCBtdXN0IHByb3ZpZGUgYSB3YXkgdG8gbGV0CisgIHVzZXJzcGFjZSBjb250cm9sIHNldHRpbmcgb2YgT19DTE9FWEVDIGZsYWcgcGFzc2VkIGluIHRvIGRtYV9idWZfZmQoKS4KKworLSBJZiBhbiBleHBvcnRlciBuZWVkcyB0byBtYW51YWxseSBmbHVzaCBjYWNoZXMgYW5kIGhlbmNlIG5lZWRzIHRvIGZha2UKKyAgY29oZXJlbmN5IGZvciBtbWFwIHN1cHBvcnQsIGl0IG5lZWRzIHRvIGJlIGFibGUgdG8gemFwIGFsbCB0aGUgcHRlcyBwb2ludGluZworICBhdCB0aGUgYmFja2luZyBzdG9yYWdlLiBOb3cgbGludXggbW0gbmVlZHMgYSBzdHJ1Y3QgYWRkcmVzc19zcGFjZSBhc3NvY2lhdGVkCisgIHdpdGggdGhlIHN0cnVjdCBmaWxlIHN0b3JlZCBpbiB2bWEtPnZtX2ZpbGUgdG8gZG8gdGhhdCB3aXRoIHRoZSBmdW5jdGlvbgorICB1bm1hcF9tYXBwaW5nX3JhbmdlLiBCdXQgdGhlIGRtYV9idWYgZnJhbWV3b3JrIG9ubHkgYmFja3MgZXZlcnkgZG1hX2J1ZiBmZAorICB3aXRoIHRoZSBhbm9uX2ZpbGUgc3RydWN0IGZpbGUsIGkuZS4gYWxsIGRtYV9idWZzIHNoYXJlIHRoZSBzYW1lIGZpbGUuCisKKyAgSGVuY2UgZXhwb3J0ZXJzIG5lZWQgdG8gc2V0dXAgdGhlaXIgb3duIGZpbGUgKGFuZCBhZGRyZXNzX3NwYWNlKSBhc3NvY2lhdGlvbgorICBieSBzZXR0aW5nIHZtYS0+dm1fZmlsZSBhbmQgYWRqdXN0aW5nIHZtYS0+dm1fcGdvZmYgaW4gdGhlIGRtYV9idWYgbW1hcAorICBjYWxsYmFjay4gSW4gdGhlIHNwZWNpZmljIGNhc2Ugb2YgYSBnZW0gZHJpdmVyIHRoZSBleHBvcnRlciBjb3VsZCB1c2UgdGhlCisgIHNobWVtIGZpbGUgYWxyZWFkeSBwcm92aWRlZCBieSBnZW0gKGFuZCBzZXQgdm1fcGdvZmYgPSAwKS4gRXhwb3J0ZXJzIGNhbiB0aGVuCisgIHphcCBwdGVzIGJ5IHVubWFwcGluZyB0aGUgY29ycmVzcG9uZGluZyByYW5nZSBvZiB0aGUgc3RydWN0IGFkZHJlc3Nfc3BhY2UKKyAgYXNzb2NpYXRlZCB3aXRoIHRoZWlyIG93biBmaWxlLgorCitSZWZlcmVuY2VzOgorWzFdIHN0cnVjdCBkbWFfYnVmX29wcyBpbiBpbmNsdWRlL2xpbnV4L2RtYS1idWYuaAorWzJdIEFsbCBpbnRlcmZhY2VzIG1lbnRpb25lZCBhYm92ZSBkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvZG1hLWJ1Zi5oCitbM10gaHR0cHM6Ly9sd24ubmV0L0FydGljbGVzLzIzNjQ4Ni8KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZG1hZW5naW5lLzAwLUlOREVYIGIvRG9jdW1lbnRhdGlvbi9kbWFlbmdpbmUvMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdkZTY1NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZG1hZW5naW5lLzAwLUlOREVYCkBAIC0wLDAgKzEsOCBAQAorMDAtSU5ERVgKKwktIHRoaXMgZmlsZS4KK2NsaWVudC50eHQKKwktdGhlIERNQSBFbmdpbmUgQVBJIEd1aWRlLgorZG1hdGVzdC50eHQKKwktIGhvdyB0byBjb21waWxlLCBjb25maWd1cmUgYW5kIHVzZSB0aGUgZG1hdGVzdCBzeXN0ZW0uCitwcm92aWRlci50eHQKKwktIHRoZSBETUEgY29udHJvbGxlciBBUEkuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kbWFlbmdpbmUvY2xpZW50LnR4dCBiL0RvY3VtZW50YXRpb24vZG1hZW5naW5lL2NsaWVudC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFmYjg3ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZG1hZW5naW5lL2NsaWVudC50eHQKQEAgLTAsMCArMSwxOTkgQEAKKwkJCURNQSBFbmdpbmUgQVBJIEd1aWRlCisJCQk9PT09PT09PT09PT09PT09PT09PQorCisJCSBWaW5vZCBLb3VsIDx2aW5vZCBkb3Qga291bCBhdCBpbnRlbC5jb20+CisKK05PVEU6IEZvciBETUEgRW5naW5lIHVzYWdlIGluIGFzeW5jX3R4IHBsZWFzZSBzZWU6CisJRG9jdW1lbnRhdGlvbi9jcnlwdG8vYXN5bmMtdHgtYXBpLnR4dAorCisKK0JlbG93IGlzIGEgZ3VpZGUgdG8gZGV2aWNlIGRyaXZlciB3cml0ZXJzIG9uIGhvdyB0byB1c2UgdGhlIFNsYXZlLURNQSBBUEkgb2YgdGhlCitETUEgRW5naW5lLiBUaGlzIGlzIGFwcGxpY2FibGUgb25seSBmb3Igc2xhdmUgRE1BIHVzYWdlIG9ubHkuCisKK1RoZSBzbGF2ZSBETUEgdXNhZ2UgY29uc2lzdHMgb2YgZm9sbG93aW5nIHN0ZXBzOgorMS4gQWxsb2NhdGUgYSBETUEgc2xhdmUgY2hhbm5lbAorMi4gU2V0IHNsYXZlIGFuZCBjb250cm9sbGVyIHNwZWNpZmljIHBhcmFtZXRlcnMKKzMuIEdldCBhIGRlc2NyaXB0b3IgZm9yIHRyYW5zYWN0aW9uCis0LiBTdWJtaXQgdGhlIHRyYW5zYWN0aW9uCis1LiBJc3N1ZSBwZW5kaW5nIHJlcXVlc3RzIGFuZCB3YWl0IGZvciBjYWxsYmFjayBub3RpZmljYXRpb24KKworMS4gQWxsb2NhdGUgYSBETUEgc2xhdmUgY2hhbm5lbAorCisgICBDaGFubmVsIGFsbG9jYXRpb24gaXMgc2xpZ2h0bHkgZGlmZmVyZW50IGluIHRoZSBzbGF2ZSBETUEgY29udGV4dCwKKyAgIGNsaWVudCBkcml2ZXJzIHR5cGljYWxseSBuZWVkIGEgY2hhbm5lbCBmcm9tIGEgcGFydGljdWxhciBETUEKKyAgIGNvbnRyb2xsZXIgb25seSBhbmQgZXZlbiBpbiBzb21lIGNhc2VzIGEgc3BlY2lmaWMgY2hhbm5lbCBpcyBkZXNpcmVkLgorICAgVG8gcmVxdWVzdCBhIGNoYW5uZWwgZG1hX3JlcXVlc3RfY2hhbm5lbCgpIEFQSSBpcyB1c2VkLgorCisgICBJbnRlcmZhY2U6CisJc3RydWN0IGRtYV9jaGFuICpkbWFfcmVxdWVzdF9jaGFubmVsKGRtYV9jYXBfbWFza190IG1hc2ssCisJCQlkbWFfZmlsdGVyX2ZuIGZpbHRlcl9mbiwKKwkJCXZvaWQgKmZpbHRlcl9wYXJhbSk7CisgICB3aGVyZSBkbWFfZmlsdGVyX2ZuIGlzIGRlZmluZWQgYXM6CisJdHlwZWRlZiBib29sICgqZG1hX2ZpbHRlcl9mbikoc3RydWN0IGRtYV9jaGFuICpjaGFuLCB2b2lkICpmaWx0ZXJfcGFyYW0pOworCisgICBUaGUgJ2ZpbHRlcl9mbicgcGFyYW1ldGVyIGlzIG9wdGlvbmFsLCBidXQgaGlnaGx5IHJlY29tbWVuZGVkIGZvcgorICAgc2xhdmUgYW5kIGN5Y2xpYyBjaGFubmVscyBhcyB0aGV5IHR5cGljYWxseSBuZWVkIHRvIG9idGFpbiBhIHNwZWNpZmljCisgICBETUEgY2hhbm5lbC4KKworICAgV2hlbiB0aGUgb3B0aW9uYWwgJ2ZpbHRlcl9mbicgcGFyYW1ldGVyIGlzIE5VTEwsIGRtYV9yZXF1ZXN0X2NoYW5uZWwoKQorICAgc2ltcGx5IHJldHVybnMgdGhlIGZpcnN0IGNoYW5uZWwgdGhhdCBzYXRpc2ZpZXMgdGhlIGNhcGFiaWxpdHkgbWFzay4KKworICAgT3RoZXJ3aXNlLCB0aGUgJ2ZpbHRlcl9mbicgcm91dGluZSB3aWxsIGJlIGNhbGxlZCBvbmNlIGZvciBlYWNoIGZyZWUKKyAgIGNoYW5uZWwgd2hpY2ggaGFzIGEgY2FwYWJpbGl0eSBpbiAnbWFzaycuICAnZmlsdGVyX2ZuJyBpcyBleHBlY3RlZCB0bworICAgcmV0dXJuICd0cnVlJyB3aGVuIHRoZSBkZXNpcmVkIERNQSBjaGFubmVsIGlzIGZvdW5kLgorCisgICBBIGNoYW5uZWwgYWxsb2NhdGVkIHZpYSB0aGlzIGludGVyZmFjZSBpcyBleGNsdXNpdmUgdG8gdGhlIGNhbGxlciwKKyAgIHVudGlsIGRtYV9yZWxlYXNlX2NoYW5uZWwoKSBpcyBjYWxsZWQuCisKKzIuIFNldCBzbGF2ZSBhbmQgY29udHJvbGxlciBzcGVjaWZpYyBwYXJhbWV0ZXJzCisKKyAgIE5leHQgc3RlcCBpcyBhbHdheXMgdG8gcGFzcyBzb21lIHNwZWNpZmljIGluZm9ybWF0aW9uIHRvIHRoZSBETUEKKyAgIGRyaXZlci4gIE1vc3Qgb2YgdGhlIGdlbmVyaWMgaW5mb3JtYXRpb24gd2hpY2ggYSBzbGF2ZSBETUEgY2FuIHVzZQorICAgaXMgaW4gc3RydWN0IGRtYV9zbGF2ZV9jb25maWcuICBUaGlzIGFsbG93cyB0aGUgY2xpZW50cyB0byBzcGVjaWZ5CisgICBETUEgZGlyZWN0aW9uLCBETUEgYWRkcmVzc2VzLCBidXMgd2lkdGhzLCBETUEgYnVyc3QgbGVuZ3RocyBldGMKKyAgIGZvciB0aGUgcGVyaXBoZXJhbC4KKworICAgSWYgc29tZSBETUEgY29udHJvbGxlcnMgaGF2ZSBtb3JlIHBhcmFtZXRlcnMgdG8gYmUgc2VudCB0aGVuIHRoZXkKKyAgIHNob3VsZCB0cnkgdG8gZW1iZWQgc3RydWN0IGRtYV9zbGF2ZV9jb25maWcgaW4gdGhlaXIgY29udHJvbGxlcgorICAgc3BlY2lmaWMgc3RydWN0dXJlLiBUaGF0IGdpdmVzIGZsZXhpYmlsaXR5IHRvIGNsaWVudCB0byBwYXNzIG1vcmUKKyAgIHBhcmFtZXRlcnMsIGlmIHJlcXVpcmVkLgorCisgICBJbnRlcmZhY2U6CisJaW50IGRtYWVuZ2luZV9zbGF2ZV9jb25maWcoc3RydWN0IGRtYV9jaGFuICpjaGFuLAorCQkJCSAgc3RydWN0IGRtYV9zbGF2ZV9jb25maWcgKmNvbmZpZykKKworICAgUGxlYXNlIHNlZSB0aGUgZG1hX3NsYXZlX2NvbmZpZyBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBpbiBkbWFlbmdpbmUuaAorICAgZm9yIGEgZGV0YWlsZWQgZXhwbGFuYXRpb24gb2YgdGhlIHN0cnVjdCBtZW1iZXJzLiAgUGxlYXNlIG5vdGUKKyAgIHRoYXQgdGhlICdkaXJlY3Rpb24nIG1lbWJlciB3aWxsIGJlIGdvaW5nIGF3YXkgYXMgaXQgZHVwbGljYXRlcyB0aGUKKyAgIGRpcmVjdGlvbiBnaXZlbiBpbiB0aGUgcHJlcGFyZSBjYWxsLgorCiszLiBHZXQgYSBkZXNjcmlwdG9yIGZvciB0cmFuc2FjdGlvbgorCisgICBGb3Igc2xhdmUgdXNhZ2UgdGhlIHZhcmlvdXMgbW9kZXMgb2Ygc2xhdmUgdHJhbnNmZXJzIHN1cHBvcnRlZCBieSB0aGUKKyAgIERNQS1lbmdpbmUgYXJlOgorCisgICBzbGF2ZV9zZwktIERNQSBhIGxpc3Qgb2Ygc2NhdHRlciBnYXRoZXIgYnVmZmVycyBmcm9tL3RvIGEgcGVyaXBoZXJhbAorICAgZG1hX2N5Y2xpYwktIFBlcmZvcm0gYSBjeWNsaWMgRE1BIG9wZXJhdGlvbiBmcm9tL3RvIGEgcGVyaXBoZXJhbCB0aWxsIHRoZQorCQkgIG9wZXJhdGlvbiBpcyBleHBsaWNpdGx5IHN0b3BwZWQuCisgICBpbnRlcmxlYXZlZF9kbWEgLSBUaGlzIGlzIGNvbW1vbiB0byBTbGF2ZSBhcyB3ZWxsIGFzIE0yTSBjbGllbnRzLiBGb3Igc2xhdmUKKwkJIGFkZHJlc3Mgb2YgZGV2aWNlcycgZmlmbyBjb3VsZCBiZSBhbHJlYWR5IGtub3duIHRvIHRoZSBkcml2ZXIuCisJCSBWYXJpb3VzIHR5cGVzIG9mIG9wZXJhdGlvbnMgY291bGQgYmUgZXhwcmVzc2VkIGJ5IHNldHRpbmcKKwkJIGFwcHJvcHJpYXRlIHZhbHVlcyB0byB0aGUgJ2RtYV9pbnRlcmxlYXZlZF90ZW1wbGF0ZScgbWVtYmVycy4KKworICAgQSBub24tTlVMTCByZXR1cm4gb2YgdGhpcyB0cmFuc2ZlciBBUEkgcmVwcmVzZW50cyBhICJkZXNjcmlwdG9yIiBmb3IKKyAgIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi4KKworICAgSW50ZXJmYWNlOgorCXN0cnVjdCBkbWFfYXN5bmNfdHhfZGVzY3JpcHRvciAqZG1hZW5naW5lX3ByZXBfc2xhdmVfc2coCisJCXN0cnVjdCBkbWFfY2hhbiAqY2hhbiwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZ2wsCisJCXVuc2lnbmVkIGludCBzZ19sZW4sIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbiwKKwkJdW5zaWduZWQgbG9uZyBmbGFncyk7CisKKwlzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKmRtYWVuZ2luZV9wcmVwX2RtYV9jeWNsaWMoCisJCXN0cnVjdCBkbWFfY2hhbiAqY2hhbiwgZG1hX2FkZHJfdCBidWZfYWRkciwgc2l6ZV90IGJ1Zl9sZW4sCisJCXNpemVfdCBwZXJpb2RfbGVuLCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pOworCisJc3RydWN0IGRtYV9hc3luY190eF9kZXNjcmlwdG9yICpkbWFlbmdpbmVfcHJlcF9pbnRlcmxlYXZlZF9kbWEoCisJCXN0cnVjdCBkbWFfY2hhbiAqY2hhbiwgc3RydWN0IGRtYV9pbnRlcmxlYXZlZF90ZW1wbGF0ZSAqeHQsCisJCXVuc2lnbmVkIGxvbmcgZmxhZ3MpOworCisgICBUaGUgcGVyaXBoZXJhbCBkcml2ZXIgaXMgZXhwZWN0ZWQgdG8gaGF2ZSBtYXBwZWQgdGhlIHNjYXR0ZXJsaXN0IGZvcgorICAgdGhlIERNQSBvcGVyYXRpb24gcHJpb3IgdG8gY2FsbGluZyBkbWFlbmdpbmVfcHJlcF9zbGF2ZV9zZygpLCBhbmQgbXVzdAorICAga2VlcCB0aGUgc2NhdHRlcmxpc3QgbWFwcGVkIHVudGlsIHRoZSBETUEgb3BlcmF0aW9uIGhhcyBjb21wbGV0ZWQuCisgICBUaGUgc2NhdHRlcmxpc3QgbXVzdCBiZSBtYXBwZWQgdXNpbmcgdGhlIERNQSBzdHJ1Y3QgZGV2aWNlLgorICAgSWYgYSBtYXBwaW5nIG5lZWRzIHRvIGJlIHN5bmNocm9uaXplZCBsYXRlciwgZG1hX3N5bmNfKl9mb3JfKigpIG11c3QgYmUKKyAgIGNhbGxlZCB1c2luZyB0aGUgRE1BIHN0cnVjdCBkZXZpY2UsIHRvby4KKyAgIFNvLCBub3JtYWwgc2V0dXAgc2hvdWxkIGxvb2sgbGlrZSB0aGlzOgorCisJbnJfc2cgPSBkbWFfbWFwX3NnKGNoYW4tPmRldmljZS0+ZGV2LCBzZ2wsIHNnX2xlbik7CisJaWYgKG5yX3NnID09IDApCisJCS8qIGVycm9yICovCisKKwlkZXNjID0gZG1hZW5naW5lX3ByZXBfc2xhdmVfc2coY2hhbiwgc2dsLCBucl9zZywgZGlyZWN0aW9uLCBmbGFncyk7CisKKyAgIE9uY2UgYSBkZXNjcmlwdG9yIGhhcyBiZWVuIG9idGFpbmVkLCB0aGUgY2FsbGJhY2sgaW5mb3JtYXRpb24gY2FuIGJlCisgICBhZGRlZCBhbmQgdGhlIGRlc2NyaXB0b3IgbXVzdCB0aGVuIGJlIHN1Ym1pdHRlZC4gIFNvbWUgRE1BIGVuZ2luZQorICAgZHJpdmVycyBtYXkgaG9sZCBhIHNwaW5sb2NrIGJldHdlZW4gYSBzdWNjZXNzZnVsIHByZXBhcmF0aW9uIGFuZAorICAgc3VibWlzc2lvbiBzbyBpdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGVzZSB0d28gb3BlcmF0aW9ucyBhcmUgY2xvc2VseQorICAgcGFpcmVkLgorCisgICBOb3RlOgorCUFsdGhvdWdoIHRoZSBhc3luY190eCBBUEkgc3BlY2lmaWVzIHRoYXQgY29tcGxldGlvbiBjYWxsYmFjaworCXJvdXRpbmVzIGNhbm5vdCBzdWJtaXQgYW55IG5ldyBvcGVyYXRpb25zLCB0aGlzIGlzIG5vdCB0aGUKKwljYXNlIGZvciBzbGF2ZS9jeWNsaWMgRE1BLgorCisJRm9yIHNsYXZlIERNQSwgdGhlIHN1YnNlcXVlbnQgdHJhbnNhY3Rpb24gbWF5IG5vdCBiZSBhdmFpbGFibGUKKwlmb3Igc3VibWlzc2lvbiBwcmlvciB0byBjYWxsYmFjayBmdW5jdGlvbiBiZWluZyBpbnZva2VkLCBzbworCXNsYXZlIERNQSBjYWxsYmFja3MgYXJlIHBlcm1pdHRlZCB0byBwcmVwYXJlIGFuZCBzdWJtaXQgYSBuZXcKKwl0cmFuc2FjdGlvbi4KKworCUZvciBjeWNsaWMgRE1BLCBhIGNhbGxiYWNrIGZ1bmN0aW9uIG1heSB3aXNoIHRvIHRlcm1pbmF0ZSB0aGUKKwlETUEgdmlhIGRtYWVuZ2luZV90ZXJtaW5hdGVfYWxsKCkuCisKKwlUaGVyZWZvcmUsIGl0IGlzIGltcG9ydGFudCB0aGF0IERNQSBlbmdpbmUgZHJpdmVycyBkcm9wIGFueQorCWxvY2tzIGJlZm9yZSBjYWxsaW5nIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aGljaCBtYXkgY2F1c2UgYQorCWRlYWRsb2NrLgorCisJTm90ZSB0aGF0IGNhbGxiYWNrcyB3aWxsIGFsd2F5cyBiZSBpbnZva2VkIGZyb20gdGhlIERNQQorCWVuZ2luZXMgdGFza2xldCwgbmV2ZXIgZnJvbSBpbnRlcnJ1cHQgY29udGV4dC4KKworNC4gU3VibWl0IHRoZSB0cmFuc2FjdGlvbgorCisgICBPbmNlIHRoZSBkZXNjcmlwdG9yIGhhcyBiZWVuIHByZXBhcmVkIGFuZCB0aGUgY2FsbGJhY2sgaW5mb3JtYXRpb24KKyAgIGFkZGVkLCBpdCBtdXN0IGJlIHBsYWNlZCBvbiB0aGUgRE1BIGVuZ2luZSBkcml2ZXJzIHBlbmRpbmcgcXVldWUuCisKKyAgIEludGVyZmFjZToKKwlkbWFfY29va2llX3QgZG1hZW5naW5lX3N1Ym1pdChzdHJ1Y3QgZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3IgKmRlc2MpCisKKyAgIFRoaXMgcmV0dXJucyBhIGNvb2tpZSBjYW4gYmUgdXNlZCB0byBjaGVjayB0aGUgcHJvZ3Jlc3Mgb2YgRE1BIGVuZ2luZQorICAgYWN0aXZpdHkgdmlhIG90aGVyIERNQSBlbmdpbmUgY2FsbHMgbm90IGNvdmVyZWQgaW4gdGhpcyBkb2N1bWVudC4KKworICAgZG1hZW5naW5lX3N1Ym1pdCgpIHdpbGwgbm90IHN0YXJ0IHRoZSBETUEgb3BlcmF0aW9uLCBpdCBtZXJlbHkgYWRkcworICAgaXQgdG8gdGhlIHBlbmRpbmcgcXVldWUuICBGb3IgdGhpcywgc2VlIHN0ZXAgNSwgZG1hX2FzeW5jX2lzc3VlX3BlbmRpbmcuCisKKzUuIElzc3VlIHBlbmRpbmcgRE1BIHJlcXVlc3RzIGFuZCB3YWl0IGZvciBjYWxsYmFjayBub3RpZmljYXRpb24KKworICAgVGhlIHRyYW5zYWN0aW9ucyBpbiB0aGUgcGVuZGluZyBxdWV1ZSBjYW4gYmUgYWN0aXZhdGVkIGJ5IGNhbGxpbmcgdGhlCisgICBpc3N1ZV9wZW5kaW5nIEFQSS4gSWYgY2hhbm5lbCBpcyBpZGxlIHRoZW4gdGhlIGZpcnN0IHRyYW5zYWN0aW9uIGluCisgICBxdWV1ZSBpcyBzdGFydGVkIGFuZCBzdWJzZXF1ZW50IG9uZXMgcXVldWVkIHVwLgorCisgICBPbiBjb21wbGV0aW9uIG9mIGVhY2ggRE1BIG9wZXJhdGlvbiwgdGhlIG5leHQgaW4gcXVldWUgaXMgc3RhcnRlZCBhbmQKKyAgIGEgdGFza2xldCB0cmlnZ2VyZWQuIFRoZSB0YXNrbGV0IHdpbGwgdGhlbiBjYWxsIHRoZSBjbGllbnQgZHJpdmVyCisgICBjb21wbGV0aW9uIGNhbGxiYWNrIHJvdXRpbmUgZm9yIG5vdGlmaWNhdGlvbiwgaWYgc2V0LgorCisgICBJbnRlcmZhY2U6CisJdm9pZCBkbWFfYXN5bmNfaXNzdWVfcGVuZGluZyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pOworCitGdXJ0aGVyIEFQSXM6CisKKzEuIGludCBkbWFlbmdpbmVfdGVybWluYXRlX2FsbChzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pCisKKyAgIFRoaXMgY2F1c2VzIGFsbCBhY3Rpdml0eSBmb3IgdGhlIERNQSBjaGFubmVsIHRvIGJlIHN0b3BwZWQsIGFuZCBtYXkKKyAgIGRpc2NhcmQgZGF0YSBpbiB0aGUgRE1BIEZJRk8gd2hpY2ggaGFzbid0IGJlZW4gZnVsbHkgdHJhbnNmZXJyZWQuCisgICBObyBjYWxsYmFjayBmdW5jdGlvbnMgd2lsbCBiZSBjYWxsZWQgZm9yIGFueSBpbmNvbXBsZXRlIHRyYW5zZmVycy4KKworMi4gaW50IGRtYWVuZ2luZV9wYXVzZShzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4pCisKKyAgIFRoaXMgcGF1c2VzIGFjdGl2aXR5IG9uIHRoZSBETUEgY2hhbm5lbCB3aXRob3V0IGRhdGEgbG9zcy4KKworMy4gaW50IGRtYWVuZ2luZV9yZXN1bWUoc3RydWN0IGRtYV9jaGFuICpjaGFuKQorCisgICBSZXN1bWUgYSBwcmV2aW91c2x5IHBhdXNlZCBETUEgY2hhbm5lbC4gIEl0IGlzIGludmFsaWQgdG8gcmVzdW1lIGEKKyAgIGNoYW5uZWwgd2hpY2ggaXMgbm90IGN1cnJlbnRseSBwYXVzZWQuCisKKzQuIGVudW0gZG1hX3N0YXR1cyBkbWFfYXN5bmNfaXNfdHhfY29tcGxldGUoc3RydWN0IGRtYV9jaGFuICpjaGFuLAorICAgICAgICBkbWFfY29va2llX3QgY29va2llLCBkbWFfY29va2llX3QgKmxhc3QsIGRtYV9jb29raWVfdCAqdXNlZCkKKworICAgVGhpcyBjYW4gYmUgdXNlZCB0byBjaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBjaGFubmVsLiAgUGxlYXNlIHNlZQorICAgdGhlIGRvY3VtZW50YXRpb24gaW4gaW5jbHVkZS9saW51eC9kbWFlbmdpbmUuaCBmb3IgYSBtb3JlIGNvbXBsZXRlCisgICBkZXNjcmlwdGlvbiBvZiB0aGlzIEFQSS4KKworICAgVGhpcyBjYW4gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGRtYV9hc3luY19pc19jb21wbGV0ZSgpIGFuZAorICAgdGhlIGNvb2tpZSByZXR1cm5lZCBmcm9tIGRtYWVuZ2luZV9zdWJtaXQoKSB0byBjaGVjayBmb3IKKyAgIGNvbXBsZXRpb24gb2YgYSBzcGVjaWZpYyBETUEgdHJhbnNhY3Rpb24uCisKKyAgIE5vdGU6CisJTm90IGFsbCBETUEgZW5naW5lIGRyaXZlcnMgY2FuIHJldHVybiByZWxpYWJsZSBpbmZvcm1hdGlvbiBmb3IKKwlhIHJ1bm5pbmcgRE1BIGNoYW5uZWwuICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IERNQSBlbmdpbmUgdXNlcnMKKwlwYXVzZSBvciBzdG9wICh2aWEgZG1hZW5naW5lX3Rlcm1pbmF0ZV9hbGwoKSkgdGhlIGNoYW5uZWwgYmVmb3JlCisJdXNpbmcgdGhpcyBBUEkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RtYWVuZ2luZS9kbWF0ZXN0LnR4dCBiL0RvY3VtZW50YXRpb24vZG1hZW5naW5lL2RtYXRlc3QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkNzdhODEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RtYWVuZ2luZS9kbWF0ZXN0LnR4dApAQCAtMCwwICsxLDkyIEBACisJCQkJRE1BIFRlc3QgR3VpZGUKKwkJCQk9PT09PT09PT09PT09PQorCisJCUFuZHkgU2hldmNoZW5rbyA8YW5kcml5LnNoZXZjaGVua29AbGludXguaW50ZWwuY29tPgorCitUaGlzIHNtYWxsIGRvY3VtZW50IGludHJvZHVjZXMgaG93IHRvIHRlc3QgRE1BIGRyaXZlcnMgdXNpbmcgZG1hdGVzdCBtb2R1bGUuCisKKwlQYXJ0IDEgLSBIb3cgdG8gYnVpbGQgdGhlIHRlc3QgbW9kdWxlCisKK1RoZSBtZW51Y29uZmlnIGNvbnRhaW5zIGFuIG9wdGlvbiB0aGF0IGNvdWxkIGJlIGZvdW5kIGJ5IGZvbGxvd2luZyBwYXRoOgorCURldmljZSBEcml2ZXJzIC0+IERNQSBFbmdpbmUgc3VwcG9ydCAtPiBETUEgVGVzdCBjbGllbnQKKworSW4gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSB0aGUgb3B0aW9uIGNhbGxlZCBDT05GSUdfRE1BVEVTVC4gVGhlIGRtYXRlc3QgY291bGQKK2JlIGJ1aWx0IGFzIG1vZHVsZSBvciBpbnNpZGUga2VybmVsLiBMZXQncyBjb25zaWRlciB0aG9zZSBjYXNlcy4KKworCVBhcnQgMiAtIFdoZW4gZG1hdGVzdCBpcyBidWlsdCBhcyBhIG1vZHVsZS4uLgorCitFeGFtcGxlIG9mIHVzYWdlOgorCSUgbW9kcHJvYmUgZG1hdGVzdCBjaGFubmVsPWRtYTBjaGFuMCB0aW1lb3V0PTIwMDAgaXRlcmF0aW9ucz0xIHJ1bj0xCisKKy4uLm9yOgorCSUgbW9kcHJvYmUgZG1hdGVzdAorCSUgZWNobyBkbWEwY2hhbjAgPiAvc3lzL21vZHVsZS9kbWF0ZXN0L3BhcmFtZXRlcnMvY2hhbm5lbAorCSUgZWNobyAyMDAwID4gL3N5cy9tb2R1bGUvZG1hdGVzdC9wYXJhbWV0ZXJzL3RpbWVvdXQKKwklIGVjaG8gMSA+IC9zeXMvbW9kdWxlL2RtYXRlc3QvcGFyYW1ldGVycy9pdGVyYXRpb25zCisJJSBlY2hvIDEgPiAvc3lzL21vZHVsZS9kbWF0ZXN0L3BhcmFtZXRlcnMvcnVuCisKKy4uLm9yIG9uIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lOgorCisJZG1hdGVzdC5jaGFubmVsPWRtYTBjaGFuMCBkbWF0ZXN0LnRpbWVvdXQ9MjAwMCBkbWF0ZXN0Lml0ZXJhdGlvbnM9MSBkbWF0ZXN0LnJ1bj0xCisKK0hpbnQ6IGF2YWlsYWJsZSBjaGFubmVsIGxpc3QgY291bGQgYmUgZXh0cmFjdGVkIGJ5IHJ1bm5pbmcgdGhlIGZvbGxvd2luZworY29tbWFuZDoKKwklIGxzIC0xIC9zeXMvY2xhc3MvZG1hLworCitPbmNlIHN0YXJ0ZWQgYSBtZXNzYWdlIGxpa2UgImRtYXRlc3Q6IFN0YXJ0ZWQgMSB0aHJlYWRzIHVzaW5nIGRtYTBjaGFuMCIgaXMKK2VtaXR0ZWQuICBBZnRlciB0aGF0IG9ubHkgdGVzdCBmYWlsdXJlIG1lc3NhZ2VzIGFyZSByZXBvcnRlZCB1bnRpbCB0aGUgdGVzdAorc3RvcHMuCisKK05vdGUgdGhhdCBydW5uaW5nIGEgbmV3IHRlc3Qgd2lsbCBub3Qgc3RvcCBhbnkgaW4gcHJvZ3Jlc3MgdGVzdC4KKworVGhlIGZvbGxvd2luZyBjb21tYW5kIHJldHVybnMgdGhlIHN0YXRlIG9mIHRoZSB0ZXN0LgorCSUgY2F0IC9zeXMvbW9kdWxlL2RtYXRlc3QvcGFyYW1ldGVycy9ydW4KKworVG8gd2FpdCBmb3IgdGVzdCBjb21wbGV0aW9uIHVzZXJwYWNlIGNhbiBwb2xsICdydW4nIHVudGlsIGl0IGlzIGZhbHNlLCBvciB1c2UKK3RoZSB3YWl0IHBhcmFtZXRlci4gIFNwZWNpZnlpbmcgJ3dhaXQ9MScgd2hlbiBsb2FkaW5nIHRoZSBtb2R1bGUgY2F1c2VzIG1vZHVsZQoraW5pdGlhbGl6YXRpb24gdG8gcGF1c2UgdW50aWwgYSB0ZXN0IHJ1biBoYXMgY29tcGxldGVkLCB3aGlsZSByZWFkaW5nCisvc3lzL21vZHVsZS9kbWF0ZXN0L3BhcmFtZXRlcnMvd2FpdCB3YWl0cyBmb3IgYW55IHJ1bm5pbmcgdGVzdCB0byBjb21wbGV0ZQorYmVmb3JlIHJldHVybmluZy4gIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHNjcmlwdHMgd2FpdCBmb3IgNDIgdGVzdHMKK3RvIGNvbXBsZXRlIGJlZm9yZSBleGl0aW5nLiAgTm90ZSB0aGF0IGlmICdpdGVyYXRpb25zJyBpcyBzZXQgdG8gJ2luZmluaXRlJyB0aGVuCit3YWl0aW5nIGlzIGRpc2FibGVkLgorCitFeGFtcGxlOgorCSUgbW9kcHJvYmUgZG1hdGVzdCBydW49MSBpdGVyYXRpb25zPTQyIHdhaXQ9MQorCSUgbW9kcHJvYmUgLXIgZG1hdGVzdAorLi4ub3I6CisJJSBtb2Rwcm9iZSBkbWF0ZXN0IHJ1bj0xIGl0ZXJhdGlvbnM9NDIKKwklIGNhdCAvc3lzL21vZHVsZS9kbWF0ZXN0L3BhcmFtZXRlcnMvd2FpdAorCSUgbW9kcHJvYmUgLXIgZG1hdGVzdAorCisJUGFydCAzIC0gV2hlbiBidWlsdC1pbiBpbiB0aGUga2VybmVsLi4uCisKK1RoZSBtb2R1bGUgcGFyYW1ldGVycyB0aGF0IGlzIHN1cHBsaWVkIHRvIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIHdpbGwgYmUgdXNlZAorZm9yIHRoZSBmaXJzdCBwZXJmb3JtZWQgdGVzdC4gQWZ0ZXIgdXNlciBnZXRzIGEgY29udHJvbCwgdGhlIHRlc3QgY291bGQgYmUKK3JlLXJ1biB3aXRoIHRoZSBzYW1lIG9yIGRpZmZlcmVudCBwYXJhbWV0ZXJzLiBGb3IgdGhlIGRldGFpbHMgc2VlIHRoZSBhYm92ZQorc2VjdGlvbiAiUGFydCAyIC0gV2hlbiBkbWF0ZXN0IGlzIGJ1aWx0IGFzIGEgbW9kdWxlLi4uIgorCitJbiBib3RoIGNhc2VzIHRoZSBtb2R1bGUgcGFyYW1ldGVycyBhcmUgdXNlZCBhcyB0aGUgYWN0dWFsIHZhbHVlcyBmb3IgdGhlIHRlc3QKK2Nhc2UuIFlvdSBhbHdheXMgY291bGQgY2hlY2sgdGhlbSBhdCBydW4tdGltZSBieSBydW5uaW5nCisJJSBncmVwIC1IIC4gL3N5cy9tb2R1bGUvZG1hdGVzdC9wYXJhbWV0ZXJzLyoKKworCVBhcnQgNCAtIEdhdGhlcmluZyB0aGUgdGVzdCByZXN1bHRzCisKK1Rlc3QgcmVzdWx0cyBhcmUgcHJpbnRlZCB0byB0aGUga2VybmVsIGxvZyBidWZmZXIgd2l0aCB0aGUgZm9ybWF0OgorCisiZG1hdGVzdDogcmVzdWx0IDxjaGFubmVsPjogPHRlc3QgaWQ+OiAnPGVycm9yIG1zZz4nIHdpdGggc3JjX29mZj08dmFsPiBkc3Rfb2ZmPTx2YWw+IGxlbj08dmFsPiAoPGVyciBjb2RlPikiCisKK0V4YW1wbGUgb2Ygb3V0cHV0OgorCSUgZG1lc2cgfCB0YWlsIC1uIDEKKwlkbWF0ZXN0OiByZXN1bHQgZG1hMGNoYW4wLWNvcHkwOiAjMTogTm8gZXJyb3JzIHdpdGggc3JjX29mZj0weDdiZiBkc3Rfb2ZmPTB4OGFkIGxlbj0weDNmZWEgKDApCisKK1RoZSBtZXNzYWdlIGZvcm1hdCBpcyB1bmlmaWVkIGFjcm9zcyB0aGUgZGlmZmVyZW50IHR5cGVzIG9mIGVycm9ycy4gQSBudW1iZXIgaW4KK3RoZSBwYXJlbnMgcmVwcmVzZW50cyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLCBlLmcuIGVycm9yIGNvZGUsIGVycm9yIGNvdW50ZXIsCitvciBzdGF0dXMuICBBIHRlc3QgdGhyZWFkIGFsc28gZW1pdHMgYSBzdW1tYXJ5IGxpbmUgYXQgY29tcGxldGlvbiBsaXN0aW5nIHRoZQorbnVtYmVyIG9mIHRlc3RzIGV4ZWN1dGVkLCBudW1iZXIgdGhhdCBmYWlsZWQsIGFuZCBhIHJlc3VsdCBjb2RlLgorCitFeGFtcGxlOgorCSUgZG1lc2cgfCB0YWlsIC1uIDEKKwlkbWF0ZXN0OiBkbWEwY2hhbjAtY29weTA6IHN1bW1hcnkgMSB0ZXN0LCAwIGZhaWx1cmVzIDEwMDAgaW9wcyAxMDAwMDAgS0IvcyAoMCkKKworVGhlIGRldGFpbHMgb2YgYSBkYXRhIG1pc2NvbXBhcmUgZXJyb3IgYXJlIGFsc28gZW1pdHRlZCwgYnV0IGRvIG5vdCBmb2xsb3cgdGhlCithYm92ZSBmb3JtYXQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RtYWVuZ2luZS9wcm92aWRlci50eHQgYi9Eb2N1bWVudGF0aW9uL2RtYWVuZ2luZS9wcm92aWRlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjdkNGNlNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZG1hZW5naW5lL3Byb3ZpZGVyLnR4dApAQCAtMCwwICsxLDM5NyBAQAorRE1BZW5naW5lIGNvbnRyb2xsZXIgZG9jdW1lbnRhdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitIYXJkd2FyZSBJbnRyb2R1Y3Rpb24KKysrKysrKysrKysrKysrKysrKysrKworCitNb3N0IG9mIHRoZSBTbGF2ZSBETUEgY29udHJvbGxlcnMgaGF2ZSB0aGUgc2FtZSBnZW5lcmFsIHByaW5jaXBsZXMgb2YKK29wZXJhdGlvbnMuCisKK1RoZXkgaGF2ZSBhIGdpdmVuIG51bWJlciBvZiBjaGFubmVscyB0byB1c2UgZm9yIHRoZSBETUEgdHJhbnNmZXJzLCBhbmQKK2EgZ2l2ZW4gbnVtYmVyIG9mIHJlcXVlc3RzIGxpbmVzLgorCitSZXF1ZXN0cyBhbmQgY2hhbm5lbHMgYXJlIHByZXR0eSBtdWNoIG9ydGhvZ29uYWwuIENoYW5uZWxzIGNhbiBiZSB1c2VkCit0byBzZXJ2ZSBzZXZlcmFsIHRvIGFueSByZXF1ZXN0cy4gVG8gc2ltcGxpZnksIGNoYW5uZWxzIGFyZSB0aGUKK2VudGl0aWVzIHRoYXQgd2lsbCBiZSBkb2luZyB0aGUgY29weSwgYW5kIHJlcXVlc3RzIHdoYXQgZW5kcG9pbnRzIGFyZQoraW52b2x2ZWQuCisKK1RoZSByZXF1ZXN0IGxpbmVzIGFjdHVhbGx5IGNvcnJlc3BvbmQgdG8gcGh5c2ljYWwgbGluZXMgZ29pbmcgZnJvbSB0aGUKK0RNQS1lbGlnaWJsZSBkZXZpY2VzIHRvIHRoZSBjb250cm9sbGVyIGl0c2VsZi4gV2hlbmV2ZXIgdGhlIGRldmljZQord2lsbCB3YW50IHRvIHN0YXJ0IGEgdHJhbnNmZXIsIGl0IHdpbGwgYXNzZXJ0IGEgRE1BIHJlcXVlc3QgKERSUSkgYnkKK2Fzc2VydGluZyB0aGF0IHJlcXVlc3QgbGluZS4KKworQSB2ZXJ5IHNpbXBsZSBETUEgY29udHJvbGxlciB3b3VsZCBvbmx5IHRha2UgaW50byBhY2NvdW50IGEgc2luZ2xlCitwYXJhbWV0ZXI6IHRoZSB0cmFuc2ZlciBzaXplLiBBdCBlYWNoIGNsb2NrIGN5Y2xlLCBpdCB3b3VsZCB0cmFuc2ZlciBhCitieXRlIG9mIGRhdGEgZnJvbSBvbmUgYnVmZmVyIHRvIGFub3RoZXIsIHVudGlsIHRoZSB0cmFuc2ZlciBzaXplIGhhcworYmVlbiByZWFjaGVkLgorCitUaGF0IHdvdWxkbid0IHdvcmsgd2VsbCBpbiB0aGUgcmVhbCB3b3JsZCwgc2luY2Ugc2xhdmUgZGV2aWNlcyBtaWdodAorcmVxdWlyZSBhIHNwZWNpZmljIG51bWJlciBvZiBiaXRzIHRvIGJlIHRyYW5zZmVycmVkIGluIGEgc2luZ2xlCitjeWNsZS4gRm9yIGV4YW1wbGUsIHdlIG1heSB3YW50IHRvIHRyYW5zZmVyIGFzIG11Y2ggZGF0YSBhcyB0aGUKK3BoeXNpY2FsIGJ1cyBhbGxvd3MgdG8gbWF4aW1pemUgcGVyZm9ybWFuY2VzIHdoZW4gZG9pbmcgYSBzaW1wbGUKK21lbW9yeSBjb3B5IG9wZXJhdGlvbiwgYnV0IG91ciBhdWRpbyBkZXZpY2UgY291bGQgaGF2ZSBhIG5hcnJvd2VyIEZJRk8KK3RoYXQgcmVxdWlyZXMgZGF0YSB0byBiZSB3cml0dGVuIGV4YWN0bHkgMTYgb3IgMjQgYml0cyBhdCBhIHRpbWUuIFRoaXMKK2lzIHdoeSBtb3N0IGlmIG5vdCBhbGwgb2YgdGhlIERNQSBjb250cm9sbGVycyBjYW4gYWRqdXN0IHRoaXMsIHVzaW5nIGEKK3BhcmFtZXRlciBjYWxsZWQgdGhlIHRyYW5zZmVyIHdpZHRoLgorCitNb3Jlb3Zlciwgc29tZSBETUEgY29udHJvbGxlcnMsIHdoZW5ldmVyIHRoZSBSQU0gaXMgdXNlZCBhcyBhIHNvdXJjZQorb3IgZGVzdGluYXRpb24sIGNhbiBncm91cCB0aGUgcmVhZHMgb3Igd3JpdGVzIGluIG1lbW9yeSBpbnRvIGEgYnVmZmVyLAorc28gaW5zdGVhZCBvZiBoYXZpbmcgYSBsb3Qgb2Ygc21hbGwgbWVtb3J5IGFjY2Vzc2VzLCB3aGljaCBpcyBub3QKK3JlYWxseSBlZmZpY2llbnQsIHlvdSdsbCBnZXQgc2V2ZXJhbCBiaWdnZXIgdHJhbnNmZXJzLiBUaGlzIGlzIGRvbmUKK3VzaW5nIGEgcGFyYW1ldGVyIGNhbGxlZCB0aGUgYnVyc3Qgc2l6ZSwgdGhhdCBkZWZpbmVzIGhvdyBtYW55IHNpbmdsZQorcmVhZHMvd3JpdGVzIGl0J3MgYWxsb3dlZCB0byBkbyB3aXRob3V0IHRoZSBjb250cm9sbGVyIHNwbGl0dGluZyB0aGUKK3RyYW5zZmVyIGludG8gc21hbGxlciBzdWItdHJhbnNmZXJzLgorCitPdXIgdGhlb3JldGljYWwgRE1BIGNvbnRyb2xsZXIgd291bGQgdGhlbiBvbmx5IGJlIGFibGUgdG8gZG8gdHJhbnNmZXJzCit0aGF0IGludm9sdmUgYSBzaW5nbGUgY29udGlndW91cyBibG9jayBvZiBkYXRhLiBIb3dldmVyLCBzb21lIG9mIHRoZQordHJhbnNmZXJzIHdlIHVzdWFsbHkgaGF2ZSBhcmUgbm90LCBhbmQgd2FudCB0byBjb3B5IGRhdGEgZnJvbQorbm9uLWNvbnRpZ3VvdXMgYnVmZmVycyB0byBhIGNvbnRpZ3VvdXMgYnVmZmVyLCB3aGljaCBpcyBjYWxsZWQKK3NjYXR0ZXItZ2F0aGVyLgorCitETUFFbmdpbmUsIGF0IGxlYXN0IGZvciBtZW0yZGV2IHRyYW5zZmVycywgcmVxdWlyZSBzdXBwb3J0IGZvcgorc2NhdHRlci1nYXRoZXIuIFNvIHdlJ3JlIGxlZnQgd2l0aCB0d28gY2FzZXMgaGVyZTogZWl0aGVyIHdlIGhhdmUgYQorcXVpdGUgc2ltcGxlIERNQSBjb250cm9sbGVyIHRoYXQgZG9lc24ndCBzdXBwb3J0IGl0LCBhbmQgd2UnbGwgaGF2ZSB0bworaW1wbGVtZW50IGl0IGluIHNvZnR3YXJlLCBvciB3ZSBoYXZlIGEgbW9yZSBhZHZhbmNlZCBETUEgY29udHJvbGxlciwKK3RoYXQgaW1wbGVtZW50cyBpbiBoYXJkd2FyZSBzY2F0dGVyLWdhdGhlci4KKworVGhlIGxhdHRlciBhcmUgdXN1YWxseSBwcm9ncmFtbWVkIHVzaW5nIGEgY29sbGVjdGlvbiBvZiBjaHVua3MgdG8KK3RyYW5zZmVyLCBhbmQgd2hlbmV2ZXIgdGhlIHRyYW5zZmVyIGlzIHN0YXJ0ZWQsIHRoZSBjb250cm9sbGVyIHdpbGwgZ28KK292ZXIgdGhhdCBjb2xsZWN0aW9uLCBkb2luZyB3aGF0ZXZlciB3ZSBwcm9ncmFtbWVkIHRoZXJlLgorCitUaGlzIGNvbGxlY3Rpb24gaXMgdXN1YWxseSBlaXRoZXIgYSB0YWJsZSBvciBhIGxpbmtlZCBsaXN0LiBZb3Ugd2lsbAordGhlbiBwdXNoIGVpdGhlciB0aGUgYWRkcmVzcyBvZiB0aGUgdGFibGUgYW5kIGl0cyBudW1iZXIgb2YgZWxlbWVudHMsCitvciB0aGUgZmlyc3QgaXRlbSBvZiB0aGUgbGlzdCB0byBvbmUgY2hhbm5lbCBvZiB0aGUgRE1BIGNvbnRyb2xsZXIsCithbmQgd2hlbmV2ZXIgYSBEUlEgd2lsbCBiZSBhc3NlcnRlZCwgaXQgd2lsbCBnbyB0aHJvdWdoIHRoZSBjb2xsZWN0aW9uCit0byBrbm93IHdoZXJlIHRvIGZldGNoIHRoZSBkYXRhIGZyb20uCisKK0VpdGhlciB3YXksIHRoZSBmb3JtYXQgb2YgdGhpcyBjb2xsZWN0aW9uIGlzIGNvbXBsZXRlbHkgZGVwZW5kZW50IG9uCit5b3VyIGhhcmR3YXJlLiBFYWNoIERNQSBjb250cm9sbGVyIHdpbGwgcmVxdWlyZSBhIGRpZmZlcmVudCBzdHJ1Y3R1cmUsCitidXQgYWxsIG9mIHRoZW0gd2lsbCByZXF1aXJlLCBmb3IgZXZlcnkgY2h1bmssIGF0IGxlYXN0IHRoZSBzb3VyY2UgYW5kCitkZXN0aW5hdGlvbiBhZGRyZXNzZXMsIHdoZXRoZXIgaXQgc2hvdWxkIGluY3JlbWVudCB0aGVzZSBhZGRyZXNzZXMgb3IKK25vdCBhbmQgdGhlIHRocmVlIHBhcmFtZXRlcnMgd2Ugc2F3IGVhcmxpZXI6IHRoZSBidXJzdCBzaXplLCB0aGUKK3RyYW5zZmVyIHdpZHRoIGFuZCB0aGUgdHJhbnNmZXIgc2l6ZS4KKworVGhlIG9uZSBsYXN0IHRoaW5nIGlzIHRoYXQgdXN1YWxseSwgc2xhdmUgZGV2aWNlcyB3b24ndCBpc3N1ZSBEUlEgYnkKK2RlZmF1bHQsIGFuZCB5b3UgaGF2ZSB0byBlbmFibGUgdGhpcyBpbiB5b3VyIHNsYXZlIGRldmljZSBkcml2ZXIgZmlyc3QKK3doZW5ldmVyIHlvdSdyZSB3aWxsaW5nIHRvIHVzZSBETUEuCisKK1RoZXNlIHdlcmUganVzdCB0aGUgZ2VuZXJhbCBtZW1vcnktdG8tbWVtb3J5IChhbHNvIGNhbGxlZCBtZW0ybWVtKSBvcgorbWVtb3J5LXRvLWRldmljZSAobWVtMmRldikga2luZCBvZiB0cmFuc2ZlcnMuIE1vc3QgZGV2aWNlcyBvZnRlbgorc3VwcG9ydCBvdGhlciBraW5kIG9mIHRyYW5zZmVycyBvciBtZW1vcnkgb3BlcmF0aW9ucyB0aGF0IGRtYWVuZ2luZQorc3VwcG9ydCBhbmQgd2lsbCBiZSBkZXRhaWxlZCBsYXRlciBpbiB0aGlzIGRvY3VtZW50LgorCitETUEgU3VwcG9ydCBpbiBMaW51eAorKysrKysrKysrKysrKysrKysrKysKKworSGlzdG9yaWNhbGx5LCBETUEgY29udHJvbGxlciBkcml2ZXJzIGhhdmUgYmVlbiBpbXBsZW1lbnRlZCB1c2luZyB0aGUKK2FzeW5jIFRYIEFQSSwgdG8gb2ZmbG9hZCBvcGVyYXRpb25zIHN1Y2ggYXMgbWVtb3J5IGNvcHksIFhPUiwKK2NyeXB0b2dyYXBoeSwgZXRjLiwgYmFzaWNhbGx5IGFueSBtZW1vcnkgdG8gbWVtb3J5IG9wZXJhdGlvbi4KKworT3ZlciB0aW1lLCB0aGUgbmVlZCBmb3IgbWVtb3J5IHRvIGRldmljZSB0cmFuc2ZlcnMgYXJvc2UsIGFuZAorZG1hZW5naW5lIHdhcyBleHRlbmRlZC4gTm93YWRheXMsIHRoZSBhc3luYyBUWCBBUEkgaXMgd3JpdHRlbiBhcyBhCitsYXllciBvbiB0b3Agb2YgZG1hZW5naW5lLCBhbmQgYWN0cyBhcyBhIGNsaWVudC4gU3RpbGwsIGRtYWVuZ2luZQorYWNjb21tb2RhdGVzIHRoYXQgQVBJIGluIHNvbWUgY2FzZXMsIGFuZCBtYWRlIHNvbWUgZGVzaWduIGNob2ljZXMgdG8KK2Vuc3VyZSB0aGF0IGl0IHN0YXllZCBjb21wYXRpYmxlLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgQXN5bmMgVFggQVBJLCBwbGVhc2UgbG9vayB0aGUgcmVsZXZhbnQKK2RvY3VtZW50YXRpb24gZmlsZSBpbiBEb2N1bWVudGF0aW9uL2NyeXB0by9hc3luYy10eC1hcGkudHh0LgorCitETUFFbmdpbmUgUmVnaXN0cmF0aW9uCisrKysrKysrKysrKysrKysrKysrKysrCisKK3N0cnVjdCBkbWFfZGV2aWNlIEluaXRpYWxpemF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitKdXN0IGxpa2UgYW55IG90aGVyIGtlcm5lbCBmcmFtZXdvcmssIHRoZSB3aG9sZSBETUFFbmdpbmUgcmVnaXN0cmF0aW9uCityZWxpZXMgb24gdGhlIGRyaXZlciBmaWxsaW5nIGEgc3RydWN0dXJlIGFuZCByZWdpc3RlcmluZyBhZ2FpbnN0IHRoZQorZnJhbWV3b3JrLiBJbiBvdXIgY2FzZSwgdGhhdCBzdHJ1Y3R1cmUgaXMgZG1hX2RldmljZS4KKworVGhlIGZpcnN0IHRoaW5nIHlvdSBuZWVkIHRvIGRvIGluIHlvdXIgZHJpdmVyIGlzIHRvIGFsbG9jYXRlIHRoaXMKK3N0cnVjdHVyZS4gQW55IG9mIHRoZSB1c3VhbCBtZW1vcnkgYWxsb2NhdG9ycyB3aWxsIGRvLCBidXQgeW91J2xsIGFsc28KK25lZWQgdG8gaW5pdGlhbGl6ZSBhIGZldyBmaWVsZHMgaW4gdGhlcmU6CisKKyAgKiBjaGFubmVsczoJc2hvdWxkIGJlIGluaXRpYWxpemVkIGFzIGEgbGlzdCB1c2luZyB0aGUKKwkJSU5JVF9MSVNUX0hFQUQgbWFjcm8gZm9yIGV4YW1wbGUKKworICAqIHNyY19hZGRyX3dpZHRoczoKKyAgICAtIHNob3VsZCBjb250YWluIGEgYml0bWFzayBvZiB0aGUgc3VwcG9ydGVkIHNvdXJjZSB0cmFuc2ZlciB3aWR0aAorCisgICogZHN0X2FkZHJfd2lkdGhzOgorICAgIC0gc2hvdWxkIGNvbnRhaW4gYSBiaXRtYXNrIG9mIHRoZSBzdXBwb3J0ZWQgZGVzdGluYXRpb24gdHJhbnNmZXIKKyAgICAgIHdpZHRoCisKKyAgKiBkaXJlY3Rpb25zOgorICAgIC0gc2hvdWxkIGNvbnRhaW4gYSBiaXRtYXNrIG9mIHRoZSBzdXBwb3J0ZWQgc2xhdmUgZGlyZWN0aW9ucworICAgICAgKGkuZS4gZXhjbHVkaW5nIG1lbTJtZW0gdHJhbnNmZXJzKQorCisgICogcmVzaWR1ZV9ncmFudWxhcml0eToKKyAgICAtIEdyYW51bGFyaXR5IG9mIHRoZSB0cmFuc2ZlciByZXNpZHVlIHJlcG9ydGVkIHRvIGRtYV9zZXRfcmVzaWR1ZS4KKyAgICAtIFRoaXMgY2FuIGJlIGVpdGhlcjoKKyAgICAgICsgRGVzY3JpcHRvcgorICAgICAgICAtPiBZb3VyIGRldmljZSBkb2Vzbid0IHN1cHBvcnQgYW55IGtpbmQgb2YgcmVzaWR1ZQorICAgICAgICAgICByZXBvcnRpbmcuIFRoZSBmcmFtZXdvcmsgd2lsbCBvbmx5IGtub3cgdGhhdCBhIHBhcnRpY3VsYXIKKyAgICAgICAgICAgdHJhbnNhY3Rpb24gZGVzY3JpcHRvciBpcyBkb25lLgorICAgICAgKyBTZWdtZW50CisgICAgICAgIC0+IFlvdXIgZGV2aWNlIGlzIGFibGUgdG8gcmVwb3J0IHdoaWNoIGNodW5rcyBoYXZlIGJlZW4KKyAgICAgICAgICAgdHJhbnNmZXJyZWQKKyAgICAgICsgQnVyc3QKKyAgICAgICAgLT4gWW91ciBkZXZpY2UgaXMgYWJsZSB0byByZXBvcnQgd2hpY2ggYnVyc3QgaGF2ZSBiZWVuCisgICAgICAgICAgIHRyYW5zZmVycmVkCisKKyAgKiBkZXY6IAlzaG91bGQgaG9sZCB0aGUgcG9pbnRlciB0byB0aGUgc3RydWN0IGRldmljZSBhc3NvY2lhdGVkCisJCXRvIHlvdXIgY3VycmVudCBkcml2ZXIgaW5zdGFuY2UuCisKK1N1cHBvcnRlZCB0cmFuc2FjdGlvbiB0eXBlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBuZXh0IHRoaW5nIHlvdSBuZWVkIGlzIHRvIHNldCB3aGljaCB0cmFuc2FjdGlvbiB0eXBlcyB5b3VyIGRldmljZQorKGFuZCBkcml2ZXIpIHN1cHBvcnRzLgorCitPdXIgZG1hX2RldmljZSBzdHJ1Y3R1cmUgaGFzIGEgZmllbGQgY2FsbGVkIGNhcF9tYXNrIHRoYXQgaG9sZHMgdGhlCit2YXJpb3VzIHR5cGVzIG9mIHRyYW5zYWN0aW9uIHN1cHBvcnRlZCwgYW5kIHlvdSBuZWVkIHRvIG1vZGlmeSB0aGlzCittYXNrIHVzaW5nIHRoZSBkbWFfY2FwX3NldCBmdW5jdGlvbiwgd2l0aCB2YXJpb3VzIGZsYWdzIGRlcGVuZGluZyBvbgordHJhbnNhY3Rpb24gdHlwZXMgeW91IHN1cHBvcnQgYXMgYW4gYXJndW1lbnQuCisKK0FsbCB0aG9zZSBjYXBhYmlsaXRpZXMgYXJlIGRlZmluZWQgaW4gdGhlIGRtYV90cmFuc2FjdGlvbl90eXBlIGVudW0sCitpbiBpbmNsdWRlL2xpbnV4L2RtYWVuZ2luZS5oCisKK0N1cnJlbnRseSwgdGhlIHR5cGVzIGF2YWlsYWJsZSBhcmU6CisgICogRE1BX01FTUNQWQorICAgIC0gVGhlIGRldmljZSBpcyBhYmxlIHRvIGRvIG1lbW9yeSB0byBtZW1vcnkgY29waWVzCisKKyAgKiBETUFfWE9SCisgICAgLSBUaGUgZGV2aWNlIGlzIGFibGUgdG8gcGVyZm9ybSBYT1Igb3BlcmF0aW9ucyBvbiBtZW1vcnkgYXJlYXMKKyAgICAtIFVzZWQgdG8gYWNjZWxlcmF0ZSBYT1IgaW50ZW5zaXZlIHRhc2tzLCBzdWNoIGFzIFJBSUQ1CisKKyAgKiBETUFfWE9SX1ZBTAorICAgIC0gVGhlIGRldmljZSBpcyBhYmxlIHRvIHBlcmZvcm0gcGFyaXR5IGNoZWNrIHVzaW5nIHRoZSBYT1IKKyAgICAgIGFsZ29yaXRobSBhZ2FpbnN0IGEgbWVtb3J5IGJ1ZmZlci4KKworICAqIERNQV9QUQorICAgIC0gVGhlIGRldmljZSBpcyBhYmxlIHRvIHBlcmZvcm0gUkFJRDYgUCtRIGNvbXB1dGF0aW9ucywgUCBiZWluZyBhCisgICAgICBzaW1wbGUgWE9SLCBhbmQgUSBiZWluZyBhIFJlZWQtU29sb21vbiBhbGdvcml0aG0uCisKKyAgKiBETUFfUFFfVkFMCisgICAgLSBUaGUgZGV2aWNlIGlzIGFibGUgdG8gcGVyZm9ybSBwYXJpdHkgY2hlY2sgdXNpbmcgUkFJRDYgUCtRCisgICAgICBhbGdvcml0aG0gYWdhaW5zdCBhIG1lbW9yeSBidWZmZXIuCisKKyAgKiBETUFfSU5URVJSVVBUCisgICAgLSBUaGUgZGV2aWNlIGlzIGFibGUgdG8gdHJpZ2dlciBhIGR1bW15IHRyYW5zZmVyIHRoYXQgd2lsbAorICAgICAgZ2VuZXJhdGUgcGVyaW9kaWMgaW50ZXJydXB0cworICAgIC0gVXNlZCBieSB0aGUgY2xpZW50IGRyaXZlcnMgdG8gcmVnaXN0ZXIgYSBjYWxsYmFjayB0aGF0IHdpbGwgYmUKKyAgICAgIGNhbGxlZCBvbiBhIHJlZ3VsYXIgYmFzaXMgdGhyb3VnaCB0aGUgRE1BIGNvbnRyb2xsZXIgaW50ZXJydXB0CisKKyAgKiBETUFfU0cKKyAgICAtIFRoZSBkZXZpY2Ugc3VwcG9ydHMgbWVtb3J5IHRvIG1lbW9yeSBzY2F0dGVyLWdhdGhlcgorICAgICAgdHJhbnNmZXJzLgorICAgIC0gRXZlbiB0aG91Z2ggYSBwbGFpbiBtZW1jcHkgY2FuIGxvb2sgbGlrZSBhIHBhcnRpY3VsYXIgY2FzZSBvZiBhCisgICAgICBzY2F0dGVyLWdhdGhlciB0cmFuc2Zlciwgd2l0aCBhIHNpbmdsZSBjaHVuayB0byB0cmFuc2ZlciwgaXQncyBhCisgICAgICBkaXN0aW5jdCB0cmFuc2FjdGlvbiB0eXBlIGluIHRoZSBtZW0ybWVtIHRyYW5zZmVycyBjYXNlCisKKyAgKiBETUFfUFJJVkFURQorICAgIC0gVGhlIGRldmljZXMgb25seSBzdXBwb3J0cyBzbGF2ZSB0cmFuc2ZlcnMsIGFuZCBhcyBzdWNoIGlzbid0CisgICAgICBhdmFpbGFibGUgZm9yIGFzeW5jIHRyYW5zZmVycy4KKworICAqIERNQV9BU1lOQ19UWAorICAgIC0gTXVzdCBub3QgYmUgc2V0IGJ5IHRoZSBkZXZpY2UsIGFuZCB3aWxsIGJlIHNldCBieSB0aGUgZnJhbWV3b3JrCisgICAgICBpZiBuZWVkZWQKKyAgICAtIC8qIFRPRE86IFdoYXQgaXMgaXQgYWJvdXQ/ICovCisKKyAgKiBETUFfU0xBVkUKKyAgICAtIFRoZSBkZXZpY2UgY2FuIGhhbmRsZSBkZXZpY2UgdG8gbWVtb3J5IHRyYW5zZmVycywgaW5jbHVkaW5nCisgICAgICBzY2F0dGVyLWdhdGhlciB0cmFuc2ZlcnMuCisgICAgLSBXaGlsZSBpbiB0aGUgbWVtMm1lbSBjYXNlIHdlIHdlcmUgaGF2aW5nIHR3byBkaXN0aW5jdCB0eXBlcyB0bworICAgICAgZGVhbCB3aXRoIGEgc2luZ2xlIGNodW5rIHRvIGNvcHkgb3IgYSBjb2xsZWN0aW9uIG9mIHRoZW0sIGhlcmUsCisgICAgICB3ZSBqdXN0IGhhdmUgYSBzaW5nbGUgdHJhbnNhY3Rpb24gdHlwZSB0aGF0IGlzIHN1cHBvc2VkIHRvCisgICAgICBoYW5kbGUgYm90aC4KKyAgICAtIElmIHlvdSB3YW50IHRvIHRyYW5zZmVyIGEgc2luZ2xlIGNvbnRpZ3VvdXMgbWVtb3J5IGJ1ZmZlciwKKyAgICAgIHNpbXBseSBidWlsZCBhIHNjYXR0ZXIgbGlzdCB3aXRoIG9ubHkgb25lIGl0ZW0uCisKKyAgKiBETUFfQ1lDTElDCisgICAgLSBUaGUgZGV2aWNlIGNhbiBoYW5kbGUgY3ljbGljIHRyYW5zZmVycy4KKyAgICAtIEEgY3ljbGljIHRyYW5zZmVyIGlzIGEgdHJhbnNmZXIgd2hlcmUgdGhlIGNodW5rIGNvbGxlY3Rpb24gd2lsbAorICAgICAgbG9vcCBvdmVyIGl0c2VsZiwgd2l0aCB0aGUgbGFzdCBpdGVtIHBvaW50aW5nIHRvIHRoZSBmaXJzdC4KKyAgICAtIEl0J3MgdXN1YWxseSB1c2VkIGZvciBhdWRpbyB0cmFuc2ZlcnMsIHdoZXJlIHlvdSB3YW50IHRvIG9wZXJhdGUKKyAgICAgIG9uIGEgc2luZ2xlIHJpbmcgYnVmZmVyIHRoYXQgeW91IHdpbGwgZmlsbCB3aXRoIHlvdXIgYXVkaW8gZGF0YS4KKworICAqIERNQV9JTlRFUkxFQVZFCisgICAgLSBUaGUgZGV2aWNlIHN1cHBvcnRzIGludGVybGVhdmVkIHRyYW5zZmVyLgorICAgIC0gVGhlc2UgdHJhbnNmZXJzIGNhbiB0cmFuc2ZlciBkYXRhIGZyb20gYSBub24tY29udGlndW91cyBidWZmZXIKKyAgICAgIHRvIGEgbm9uLWNvbnRpZ3VvdXMgYnVmZmVyLCBvcHBvc2VkIHRvIERNQV9TTEFWRSB0aGF0IGNhbgorICAgICAgdHJhbnNmZXIgZGF0YSBmcm9tIGEgbm9uLWNvbnRpZ3VvdXMgZGF0YSBzZXQgdG8gYSBjb250aW51b3VzCisgICAgICBkZXN0aW5hdGlvbiBidWZmZXIuCisgICAgLSBJdCdzIHVzdWFsbHkgdXNlZCBmb3IgMmQgY29udGVudCB0cmFuc2ZlcnMsIGluIHdoaWNoIGNhc2UgeW91CisgICAgICB3YW50IHRvIHRyYW5zZmVyIGEgcG9ydGlvbiBvZiB1bmNvbXByZXNzZWQgZGF0YSBkaXJlY3RseSB0byB0aGUKKyAgICAgIGRpc3BsYXkgdG8gcHJpbnQgaXQKKworVGhlc2UgdmFyaW91cyB0eXBlcyB3aWxsIGFsc28gYWZmZWN0IGhvdyB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbgorYWRkcmVzc2VzIGNoYW5nZSBvdmVyIHRpbWUuCisKK0FkZHJlc3NlcyBwb2ludGluZyB0byBSQU0gYXJlIHR5cGljYWxseSBpbmNyZW1lbnRlZCAob3IgZGVjcmVtZW50ZWQpCithZnRlciBlYWNoIHRyYW5zZmVyLiBJbiBjYXNlIG9mIGEgcmluZyBidWZmZXIsIHRoZXkgbWF5IGxvb3AKKyhETUFfQ1lDTElDKS4gQWRkcmVzc2VzIHBvaW50aW5nIHRvIGEgZGV2aWNlJ3MgcmVnaXN0ZXIgKGUuZy4gYSBGSUZPKQorYXJlIHR5cGljYWxseSBmaXhlZC4KKworRGV2aWNlIG9wZXJhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK091ciBkbWFfZGV2aWNlIHN0cnVjdHVyZSBhbHNvIHJlcXVpcmVzIGEgZmV3IGZ1bmN0aW9uIHBvaW50ZXJzIGluCitvcmRlciB0byBpbXBsZW1lbnQgdGhlIGFjdHVhbCBsb2dpYywgbm93IHRoYXQgd2UgZGVzY3JpYmVkIHdoYXQKK29wZXJhdGlvbnMgd2Ugd2VyZSBhYmxlIHRvIHBlcmZvcm0uCisKK1RoZSBmdW5jdGlvbnMgdGhhdCB3ZSBoYXZlIHRvIGZpbGwgaW4gdGhlcmUsIGFuZCBoZW5jZSBoYXZlIHRvCitpbXBsZW1lbnQsIG9idmlvdXNseSBkZXBlbmQgb24gdGhlIHRyYW5zYWN0aW9uIHR5cGVzIHlvdSByZXBvcnRlZCBhcworc3VwcG9ydGVkLgorCisgICAqIGRldmljZV9hbGxvY19jaGFuX3Jlc291cmNlcworICAgKiBkZXZpY2VfZnJlZV9jaGFuX3Jlc291cmNlcworICAgICAtIFRoZXNlIGZ1bmN0aW9ucyB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBhIGRyaXZlciB3aWxsIGNhbGwKKyAgICAgICBkbWFfcmVxdWVzdF9jaGFubmVsIG9yIGRtYV9yZWxlYXNlX2NoYW5uZWwgZm9yIHRoZSBmaXJzdC9sYXN0CisgICAgICAgdGltZSBvbiB0aGUgY2hhbm5lbCBhc3NvY2lhdGVkIHRvIHRoYXQgZHJpdmVyLgorICAgICAtIFRoZXkgYXJlIGluIGNoYXJnZSBvZiBhbGxvY2F0aW5nL2ZyZWVpbmcgYWxsIHRoZSBuZWVkZWQKKyAgICAgICByZXNvdXJjZXMgaW4gb3JkZXIgZm9yIHRoYXQgY2hhbm5lbCB0byBiZSB1c2VmdWwgZm9yIHlvdXIKKyAgICAgICBkcml2ZXIuCisgICAgIC0gVGhlc2UgZnVuY3Rpb25zIGNhbiBzbGVlcC4KKworICAgKiBkZXZpY2VfcHJlcF9kbWFfKgorICAgICAtIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbWF0Y2hpbmcgdGhlIGNhcGFiaWxpdGllcyB5b3UgcmVnaXN0ZXJlZAorICAgICAgIHByZXZpb3VzbHkuCisgICAgIC0gVGhlc2UgZnVuY3Rpb25zIGFsbCB0YWtlIHRoZSBidWZmZXIgb3IgdGhlIHNjYXR0ZXJsaXN0IHJlbGV2YW50CisgICAgICAgZm9yIHRoZSB0cmFuc2ZlciBiZWluZyBwcmVwYXJlZCwgYW5kIHNob3VsZCBjcmVhdGUgYSBoYXJkd2FyZQorICAgICAgIGRlc2NyaXB0b3Igb3IgYSBsaXN0IG9mIGhhcmR3YXJlIGRlc2NyaXB0b3JzIGZyb20gaXQKKyAgICAgLSBUaGVzZSBmdW5jdGlvbnMgY2FuIGJlIGNhbGxlZCBmcm9tIGFuIGludGVycnVwdCBjb250ZXh0CisgICAgIC0gQW55IGFsbG9jYXRpb24geW91IG1pZ2h0IGRvIHNob3VsZCBiZSB1c2luZyB0aGUgR0ZQX05PV0FJVAorICAgICAgIGZsYWcsIGluIG9yZGVyIG5vdCB0byBwb3RlbnRpYWxseSBzbGVlcCwgYnV0IHdpdGhvdXQgZGVwbGV0aW5nCisgICAgICAgdGhlIGVtZXJnZW5jeSBwb29sIGVpdGhlci4KKyAgICAgLSBEcml2ZXJzIHNob3VsZCB0cnkgdG8gcHJlLWFsbG9jYXRlIGFueSBtZW1vcnkgdGhleSBtaWdodCBuZWVkCisgICAgICAgZHVyaW5nIHRoZSB0cmFuc2ZlciBzZXR1cCBhdCBwcm9iZSB0aW1lIHRvIGF2b2lkIHB1dHRpbmcgdG8KKyAgICAgICBtdWNoIHByZXNzdXJlIG9uIHRoZSBub3dhaXQgYWxsb2NhdG9yLgorCisgICAgIC0gSXQgc2hvdWxkIHJldHVybiBhIHVuaXF1ZSBpbnN0YW5jZSBvZiB0aGUKKyAgICAgICBkbWFfYXN5bmNfdHhfZGVzY3JpcHRvciBzdHJ1Y3R1cmUsIHRoYXQgZnVydGhlciByZXByZXNlbnRzIHRoaXMKKyAgICAgICBwYXJ0aWN1bGFyIHRyYW5zZmVyLgorCisgICAgIC0gVGhpcyBzdHJ1Y3R1cmUgY2FuIGJlIGluaXRpYWxpemVkIHVzaW5nIHRoZSBmdW5jdGlvbgorICAgICAgIGRtYV9hc3luY190eF9kZXNjcmlwdG9yX2luaXQuCisgICAgIC0gWW91J2xsIGFsc28gbmVlZCB0byBzZXQgdHdvIGZpZWxkcyBpbiB0aGlzIHN0cnVjdHVyZToKKyAgICAgICArIGZsYWdzOgorCQlUT0RPOiBDYW4gaXQgYmUgbW9kaWZpZWQgYnkgdGhlIGRyaXZlciBpdHNlbGYsIG9yCisJCXNob3VsZCBpdCBiZSBhbHdheXMgdGhlIGZsYWdzIHBhc3NlZCBpbiB0aGUgYXJndW1lbnRzCisKKyAgICAgICArIHR4X3N1Ym1pdDoJQSBwb2ludGVyIHRvIGEgZnVuY3Rpb24geW91IGhhdmUgdG8gaW1wbGVtZW50LAorCQkJdGhhdCBpcyBzdXBwb3NlZCB0byBwdXNoIHRoZSBjdXJyZW50CisJCQl0cmFuc2FjdGlvbiBkZXNjcmlwdG9yIHRvIGEgcGVuZGluZyBxdWV1ZSwgd2FpdGluZworCQkJZm9yIGlzc3VlX3BlbmRpbmcgdG8gYmUgY2FsbGVkLgorCisgICAqIGRldmljZV9pc3N1ZV9wZW5kaW5nCisgICAgIC0gVGFrZXMgdGhlIGZpcnN0IHRyYW5zYWN0aW9uIGRlc2NyaXB0b3IgaW4gdGhlIHBlbmRpbmcgcXVldWUsCisgICAgICAgYW5kIHN0YXJ0cyB0aGUgdHJhbnNmZXIuIFdoZW5ldmVyIHRoYXQgdHJhbnNmZXIgaXMgZG9uZSwgaXQKKyAgICAgICBzaG91bGQgbW92ZSB0byB0aGUgbmV4dCB0cmFuc2FjdGlvbiBpbiB0aGUgbGlzdC4KKyAgICAgLSBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgaW4gYW4gaW50ZXJydXB0IGNvbnRleHQKKworICAgKiBkZXZpY2VfdHhfc3RhdHVzCisgICAgIC0gU2hvdWxkIHJlcG9ydCB0aGUgYnl0ZXMgbGVmdCB0byBnbyBvdmVyIG9uIHRoZSBnaXZlbiBjaGFubmVsCisgICAgIC0gU2hvdWxkIG9ubHkgY2FyZSBhYm91dCB0aGUgdHJhbnNhY3Rpb24gZGVzY3JpcHRvciBwYXNzZWQgYXMKKyAgICAgICBhcmd1bWVudCwgbm90IHRoZSBjdXJyZW50bHkgYWN0aXZlIG9uZSBvbiBhIGdpdmVuIGNoYW5uZWwKKyAgICAgLSBUaGUgdHhfc3RhdGUgYXJndW1lbnQgbWlnaHQgYmUgTlVMTAorICAgICAtIFNob3VsZCB1c2UgZG1hX3NldF9yZXNpZHVlIHRvIHJlcG9ydCBpdAorICAgICAtIEluIHRoZSBjYXNlIG9mIGEgY3ljbGljIHRyYW5zZmVyLCBpdCBzaG91bGQgb25seSB0YWtlIGludG8KKyAgICAgICBhY2NvdW50IHRoZSBjdXJyZW50IHBlcmlvZC4KKyAgICAgLSBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgaW4gYW4gaW50ZXJydXB0IGNvbnRleHQuCisKKyAgICogZGV2aWNlX2NvbmZpZworICAgICAtIFJlY29uZmlndXJlcyB0aGUgY2hhbm5lbCB3aXRoIHRoZSBjb25maWd1cmF0aW9uIGdpdmVuIGFzCisgICAgICAgYXJndW1lbnQKKyAgICAgLSBUaGlzIGNvbW1hbmQgc2hvdWxkIE5PVCBwZXJmb3JtIHN5bmNocm9ub3VzbHksIG9yIG9uIGFueQorICAgICAgIGN1cnJlbnRseSBxdWV1ZWQgdHJhbnNmZXJzLCBidXQgb25seSBvbiBzdWJzZXF1ZW50IG9uZXMKKyAgICAgLSBJbiB0aGlzIGNhc2UsIHRoZSBmdW5jdGlvbiB3aWxsIHJlY2VpdmUgYSBkbWFfc2xhdmVfY29uZmlnCisgICAgICAgc3RydWN0dXJlIHBvaW50ZXIgYXMgYW4gYXJndW1lbnQsIHRoYXQgd2lsbCBkZXRhaWwgd2hpY2gKKyAgICAgICBjb25maWd1cmF0aW9uIHRvIHVzZS4KKyAgICAgLSBFdmVuIHRob3VnaCB0aGF0IHN0cnVjdHVyZSBjb250YWlucyBhIGRpcmVjdGlvbiBmaWVsZCwgdGhpcworICAgICAgIGZpZWxkIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhlIGRpcmVjdGlvbiBhcmd1bWVudCBnaXZlbiB0bworICAgICAgIHRoZSBwcmVwXyogZnVuY3Rpb25zCisgICAgIC0gVGhpcyBjYWxsIGlzIG1hbmRhdG9yeSBmb3Igc2xhdmUgb3BlcmF0aW9ucyBvbmx5LiBUaGlzIHNob3VsZCBOT1QgYmUKKyAgICAgICBzZXQgb3IgZXhwZWN0ZWQgdG8gYmUgc2V0IGZvciBtZW1jcHkgb3BlcmF0aW9ucy4KKyAgICAgICBJZiBhIGRyaXZlciBzdXBwb3J0IGJvdGgsIGl0IHNob3VsZCB1c2UgdGhpcyBjYWxsIGZvciBzbGF2ZQorICAgICAgIG9wZXJhdGlvbnMgb25seSBhbmQgbm90IGZvciBtZW1jcHkgb25lcy4KKworICAgKiBkZXZpY2VfcGF1c2UKKyAgICAgLSBQYXVzZXMgYSB0cmFuc2ZlciBvbiB0aGUgY2hhbm5lbAorICAgICAtIFRoaXMgY29tbWFuZCBzaG91bGQgb3BlcmF0ZSBzeW5jaHJvbm91c2x5IG9uIHRoZSBjaGFubmVsLAorICAgICAgIHBhdXNpbmcgcmlnaHQgYXdheSB0aGUgd29yayBvZiB0aGUgZ2l2ZW4gY2hhbm5lbAorCisgICAqIGRldmljZV9yZXN1bWUKKyAgICAgLSBSZXN1bWVzIGEgdHJhbnNmZXIgb24gdGhlIGNoYW5uZWwKKyAgICAgLSBUaGlzIGNvbW1hbmQgc2hvdWxkIG9wZXJhdGUgc3luY2hyb25vdXNseSBvbiB0aGUgY2hhbm5lbCwKKyAgICAgICBwYXVzaW5nIHJpZ2h0IGF3YXkgdGhlIHdvcmsgb2YgdGhlIGdpdmVuIGNoYW5uZWwKKworICAgKiBkZXZpY2VfdGVybWluYXRlX2FsbAorICAgICAtIEFib3J0cyBhbGwgdGhlIHBlbmRpbmcgYW5kIG9uZ29pbmcgdHJhbnNmZXJzIG9uIHRoZSBjaGFubmVsCisgICAgIC0gVGhpcyBjb21tYW5kIHNob3VsZCBvcGVyYXRlIHN5bmNocm9ub3VzbHkgb24gdGhlIGNoYW5uZWwsCisgICAgICAgdGVybWluYXRpbmcgcmlnaHQgYXdheSBhbGwgdGhlIGNoYW5uZWxzCisKK01pc2Mgbm90ZXMgKHN0dWZmIHRoYXQgc2hvdWxkIGJlIGRvY3VtZW50ZWQsIGJ1dCBkb24ndCByZWFsbHkga25vdword2hlcmUgdG8gcHV0IHRoZW0pCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgKiBkbWFfcnVuX2RlcGVuZGVuY2llcworICAgIC0gU2hvdWxkIGJlIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGFuIGFzeW5jIFRYIHRyYW5zZmVyLCBhbmQgY2FuIGJlCisgICAgICBpZ25vcmVkIGluIHRoZSBzbGF2ZSB0cmFuc2ZlcnMgY2FzZS4KKyAgICAtIE1ha2VzIHN1cmUgdGhhdCBkZXBlbmRlbnQgb3BlcmF0aW9ucyBhcmUgcnVuIGJlZm9yZSBtYXJraW5nIGl0CisgICAgICBhcyBjb21wbGV0ZS4KKworICAqIGRtYV9jb29raWVfdAorICAgIC0gaXQncyBhIERNQSB0cmFuc2FjdGlvbiBJRCB0aGF0IHdpbGwgaW5jcmVtZW50IG92ZXIgdGltZS4KKyAgICAtIE5vdCByZWFsbHkgcmVsZXZhbnQgYW55IG1vcmUgc2luY2UgdGhlIGludHJvZHVjdGlvbiBvZiB2aXJ0LWRtYQorICAgICAgdGhhdCBhYnN0cmFjdHMgaXQgYXdheS4KKworICAqIERNQV9DVFJMX0FDSworICAgIC0gSWYgY2xlYXIsIHRoZSBkZXNjcmlwdG9yIGNhbm5vdCBiZSByZXVzZWQgYnkgcHJvdmlkZXIgdW50aWwgdGhlCisgICAgICBjbGllbnQgYWNrbm93bGVkZ2VzIHJlY2VpcHQsIGkuZS4gaGFzIGhhcyBhIGNoYW5jZSB0byBlc3RhYmxpc2ggYW55CisgICAgICBkZXBlbmRlbmN5IGNoYWlucworICAgIC0gVGhpcyBjYW4gYmUgYWNrZWQgYnkgaW52b2tpbmcgYXN5bmNfdHhfYWNrKCkKKyAgICAtIElmIHNldCwgZG9lcyBub3QgbWVhbiBkZXNjcmlwdG9yIGNhbiBiZSByZXVzZWQKKworICAqIERNQV9DVFJMX1JFVVNFCisgICAgLSBJZiBzZXQsIHRoZSBkZXNjcmlwdG9yIGNhbiBiZSByZXVzZWQgYWZ0ZXIgYmVpbmcgY29tcGxldGVkLiBJdCBzaG91bGQKKyAgICAgIG5vdCBiZSBmcmVlZCBieSBwcm92aWRlciBpZiB0aGlzIGZsYWcgaXMgc2V0LgorICAgIC0gVGhlIGRlc2NyaXB0b3Igc2hvdWxkIGJlIHByZXBhcmVkIGZvciByZXVzZSBieSBpbnZva2luZworICAgICAgZG1hZW5naW5lX2Rlc2Nfc2V0X3JldXNlKCkgd2hpY2ggd2lsbCBzZXQgRE1BX0NUUkxfUkVVU0UuCisgICAgLSBkbWFlbmdpbmVfZGVzY19zZXRfcmV1c2UoKSB3aWxsIHN1Y2NlZWQgb25seSB3aGVuIGNoYW5uZWwgc3VwcG9ydAorICAgICAgcmV1c2FibGUgZGVzY3JpcHRvciBhcyBleGhpYml0ZWQgYnkgY2FwYWJsaXRpZXMKKyAgICAtIEFzIGEgY29uc2VxdWVuY2UsIGlmIGEgZGV2aWNlIGRyaXZlciB3YW50cyB0byBza2lwIHRoZSBkbWFfbWFwX3NnKCkgYW5kCisgICAgICBkbWFfdW5tYXBfc2coKSBpbiBiZXR3ZWVuIDIgdHJhbnNmZXJzLCBiZWNhdXNlIHRoZSBETUEnZCBkYXRhIHdhc24ndCB1c2VkLAorICAgICAgaXQgY2FuIHJlc3VibWl0IHRoZSB0cmFuc2ZlciByaWdodCBhZnRlciBpdHMgY29tcGxldGlvbi4KKyAgICAtIERlc2NyaXB0b3IgY2FuIGJlIGZyZWVkIGluIGZldyB3YXlzCisJLSBDbGVhcmluZyBETUFfQ1RSTF9SRVVTRSBieSBpbnZva2luZyBkbWFlbmdpbmVfZGVzY19jbGVhcl9yZXVzZSgpCisJICBhbmQgc3VibWl0dGluZyBmb3IgbGFzdCB0eG4KKwktIEV4cGxpY2l0bHkgaW52b2tpbmcgZG1hZW5naW5lX2Rlc2NfZnJlZSgpLCB0aGlzIGNhbiBzdWNjZWVkIG9ubHkKKwkgIHdoZW4gRE1BX0NUUkxfUkVVU0UgaXMgYWxyZWFkeSBzZXQKKwktIFRlcm1pbmF0aW5nIHRoZSBjaGFubmVsCisKKworR2VuZXJhbCBEZXNpZ24gTm90ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01vc3Qgb2YgdGhlIERNQUVuZ2luZSBkcml2ZXJzIHlvdSdsbCBzZWUgYXJlIGJhc2VkIG9uIGEgc2ltaWxhciBkZXNpZ24KK3RoYXQgaGFuZGxlcyB0aGUgZW5kIG9mIHRyYW5zZmVyIGludGVycnVwdHMgaW4gdGhlIGhhbmRsZXIsIGJ1dCBkZWZlcgorbW9zdCB3b3JrIHRvIGEgdGFza2xldCwgaW5jbHVkaW5nIHRoZSBzdGFydCBvZiBhIG5ldyB0cmFuc2ZlciB3aGVuZXZlcgordGhlIHByZXZpb3VzIHRyYW5zZmVyIGVuZGVkLgorCitUaGlzIGlzIGEgcmF0aGVyIGluZWZmaWNpZW50IGRlc2lnbiB0aG91Z2gsIGJlY2F1c2UgdGhlIGludGVyLXRyYW5zZmVyCitsYXRlbmN5IHdpbGwgYmUgbm90IG9ubHkgdGhlIGludGVycnVwdCBsYXRlbmN5LCBidXQgYWxzbyB0aGUKK3NjaGVkdWxpbmcgbGF0ZW5jeSBvZiB0aGUgdGFza2xldCwgd2hpY2ggd2lsbCBsZWF2ZSB0aGUgY2hhbm5lbCBpZGxlCitpbiBiZXR3ZWVuLCB3aGljaCB3aWxsIHNsb3cgZG93biB0aGUgZ2xvYmFsIHRyYW5zZmVyIHJhdGUuCisKK1lvdSBzaG91bGQgYXZvaWQgdGhpcyBraW5kIG9mIHByYWN0aWNlLCBhbmQgaW5zdGVhZCBvZiBlbGVjdGluZyBhIG5ldwordHJhbnNmZXIgaW4geW91ciB0YXNrbGV0LCBtb3ZlIHRoYXQgcGFydCB0byB0aGUgaW50ZXJydXB0IGhhbmRsZXIgaW4KK29yZGVyIHRvIGhhdmUgYSBzaG9ydGVyIGlkbGUgd2luZG93ICh0aGF0IHdlIGNhbid0IHJlYWxseSBhdm9pZAorYW55d2F5KS4KKworR2xvc3NhcnkKKy0tLS0tLS0tCisKK0J1cnN0OiAJCUEgbnVtYmVyIG9mIGNvbnNlY3V0aXZlIHJlYWQgb3Igd3JpdGUgb3BlcmF0aW9ucworCQl0aGF0IGNhbiBiZSBxdWV1ZWQgdG8gYnVmZmVycyBiZWZvcmUgYmVpbmcgZmx1c2hlZCB0bworCQltZW1vcnkuCitDaHVuazoJCUEgY29udGlndW91cyBjb2xsZWN0aW9uIG9mIGJ1cnN0cworVHJhbnNmZXI6CUEgY29sbGVjdGlvbiBvZiBjaHVua3MgKGJlIGl0IGNvbnRpZ3VvdXMgb3Igbm90KQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kbWFlbmdpbmUvcHhhX2RtYS50eHQgYi9Eb2N1bWVudGF0aW9uL2RtYWVuZ2luZS9weGFfZG1hLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTNlZjljCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kbWFlbmdpbmUvcHhhX2RtYS50eHQKQEAgLTAsMCArMSwxNTMgQEAKK1BYQS9NTVAgLSBETUEgU2xhdmUgY29udHJvbGxlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0NvbnN0cmFpbnRzCistLS0tLS0tLS0tLQorICBhKSBUcmFuc2ZlcnMgaG90IHF1ZXVpbmcKKyAgICAgQSBkcml2ZXIgc3VibWl0dGluZyBhIHRyYW5zZmVyIGFuZCBpc3N1aW5nIGl0IHNob3VsZCBiZSBncmFudGVkIHRoZSB0cmFuc2ZlcgorICAgICBpcyBxdWV1ZWQgZXZlbiBvbiBhIHJ1bm5pbmcgRE1BIGNoYW5uZWwuCisgICAgIFRoaXMgaW1wbGllcyB0aGF0IHRoZSBxdWV1aW5nIGRvZXNuJ3Qgd2FpdCBmb3IgdGhlIHByZXZpb3VzIHRyYW5zZmVyIGVuZCwKKyAgICAgYW5kIHRoYXQgdGhlIGRlc2NyaXB0b3IgY2hhaW5pbmcgaXMgbm90IG9ubHkgZG9uZSBpbiB0aGUgaXJxL3Rhc2tsZXQgY29kZQorICAgICB0cmlnZ2VyZWQgYnkgdGhlIGVuZCBvZiB0aGUgdHJhbnNmZXIuCisgICAgIEEgdHJhbnNmZXIgd2hpY2ggaXMgc3VibWl0dGVkIGFuZCBpc3N1ZWQgb24gYSBwaHkgZG9lc24ndCB3YWl0IGZvciBhIHBoeSB0bworICAgICBzdG9wIGFuZCByZXN0YXJ0LCBidXQgaXMgc3VibWl0dGVkIG9uIGEgInJ1bm5pbmcgY2hhbm5lbCIuIFRoZSBvdGhlcgorICAgICBkcml2ZXJzLCBlc3BlY2lhbGx5IG1tcF9wZG1hIHdhaXRlZCBmb3IgdGhlIHBoeSB0byBzdG9wIGJlZm9yZSByZWxhdW5jaGluZworICAgICBhIG5ldyB0cmFuc2Zlci4KKworICBiKSBBbGwgdHJhbnNmZXJzIGhhdmluZyBhc2tlZCBmb3IgY29uZmlybWF0aW9uIHNob3VsZCBiZSBzaWduYWxlZAorICAgICBBbnkgaXNzdWVkIHRyYW5zZmVyIHdpdGggRE1BX1BSRVBfSU5URVJSVVBUIHNob3VsZCB0cmlnZ2VyIGEgY2FsbGJhY2sgY2FsbC4KKyAgICAgVGhpcyBpbXBsaWVzIHRoYXQgZXZlbiBpZiBhbiBpcnEvdGFza2xldCBpcyB0cmlnZ2VyZWQgYnkgZW5kIG9mIHR4MSwgYnV0CisgICAgIGF0IHRoZSB0aW1lIG9mIGlycS9kbWEgdHgyIGlzIGFscmVhZHkgZmluaXNoZWQsIHR4MS0+Y29tcGxldGUoKSBhbmQKKyAgICAgdHgyLT5jb21wbGV0ZSgpIHNob3VsZCBiZSBjYWxsZWQuCisKKyAgYykgQ2hhbm5lbCBydW5uaW5nIHN0YXRlCisgICAgIEEgZHJpdmVyIHNob3VsZCBiZSBhYmxlIHRvIHF1ZXJ5IGlmIGEgY2hhbm5lbCBpcyBydW5uaW5nIG9yIG5vdC4gRm9yIHRoZQorICAgICBtdWx0aW1lZGlhIGNhc2UsIHN1Y2ggYXMgdmlkZW8gY2FwdHVyZSwgaWYgYSB0cmFuc2ZlciBpcyBzdWJtaXR0ZWQgYW5kIHRoZW4KKyAgICAgYSBjaGVjayBvZiB0aGUgRE1BIGNoYW5uZWwgcmVwb3J0cyBhICJzdG9wcGVkIGNoYW5uZWwiLCB0aGUgdHJhbnNmZXIgc2hvdWxkCisgICAgIG5vdCBiZSBpc3N1ZWQgdW50aWwgdGhlIG5leHQgInN0YXJ0IG9mIGZyYW1lIGludGVycnVwdCIsIGhlbmNlIHRoZSBuZWVkIHRvCisgICAgIGtub3cgaWYgYSBjaGFubmVsIGlzIGluIHJ1bm5pbmcgb3Igc3RvcHBlZCBzdGF0ZS4KKworICBkKSBCYW5kd2lkdGggZ3VhcmFudGVlCisgICAgIFRoZSBQWEEgYXJjaGl0ZWN0dXJlIGhhcyA0IGxldmVscyBvZiBETUFzIHByaW9yaXRpZXMgOiBoaWdoLCBub3JtYWwsIGxvdy4KKyAgICAgVGhlIGhpZ2ggcHJvcml0aWVzIGdldCB0d2ljZSBhcyBtdWNoIGJhbmR3aWR0aCBhcyB0aGUgbm9ybWFsLCB3aGljaCBnZXQgdHdpY2UKKyAgICAgYXMgbXVjaCBhcyB0aGUgbG93IHByaW9yaXRpZXMuCisgICAgIEEgZHJpdmVyIHNob3VsZCBiZSBhYmxlIHRvIHJlcXVlc3QgYSBwcmlvcml0eSwgZXNwZWNpYWxseSB0aGUgcmVhbC10aW1lCisgICAgIG9uZXMgc3VjaCBhcyBweGFfY2FtZXJhIHdpdGggKGJpZykgdGhyb3VnaHB1dHMuCisKK0Rlc2lnbgorLS0tLS0tCisgIGEpIFZpcnR1YWwgY2hhbm5lbHMKKyAgICAgU2FtZSBjb25jZXB0IGFzIGluIHNhMTF4MCBkcml2ZXIsIGllLiBhIGRyaXZlciB3YXMgYXNzaWduZWQgYSAidmlydHVhbAorICAgICBjaGFubmVsIiBsaW5rZWQgdG8gdGhlIHJlcXVlc3RvciBsaW5lLCBhbmQgdGhlIHBoeXNpY2FsIERNQSBjaGFubmVsIGlzCisgICAgIGFzc2lnbmVkIG9uIHRoZSBmbHkgd2hlbiB0aGUgdHJhbnNmZXIgaXMgaXNzdWVkLgorCisgIGIpIFRyYW5zZmVyIGFuYXRvbXkgZm9yIGEgc2NhdHRlci1nYXRoZXIgdHJhbnNmZXIKKyAgICAgKy0tLS0tLS0tLS0tLSstLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgfCBkZXNjLXNnWzBdIHwgLi4uIHwgZGVzYy1zZ1tsYXN0XSB8IHN0YXR1cyB1cGRhdGVyIHwgZmluaXNoZXIvbGlua2VyIHwKKyAgICAgKy0tLS0tLS0tLS0tLSstLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKworICAgICBUaGlzIHN0cnVjdHVyZSBpcyBwb2ludGVkIGJ5IGRtYS0+c2dfY3B1LgorICAgICBUaGUgZGVzY3JpcHRvcnMgYXJlIHVzZWQgYXMgZm9sbG93cyA6CisgICAgICAtIGRlc2Mtc2dbaV06IGktdGggZGVzY3JpcHRvciwgdHJhbnNmZXJyaW5nIHRoZSBpLXRoIHNnCisgICAgICAgIGVsZW1lbnQgdG8gdGhlIHZpZGVvIGJ1ZmZlciBzY2F0dGVyIGdhdGhlcgorICAgICAgLSBzdGF0dXMgdXBkYXRlcgorICAgICAgICBUcmFuc2ZlcnMgYSBzaW5nbGUgdTMyIHRvIGEgd2VsbCBrbm93biBkbWEgY29oZXJlbnQgbWVtb3J5IHRvIGxlYXZlCisgICAgICAgIGEgdHJhY2UgdGhhdCB0aGlzIHRyYW5zZmVyIGlzIGRvbmUuIFRoZSAid2VsbCBrbm93biIgaXMgdW5pcXVlIHBlcgorICAgICAgICBwaHlzaWNhbCBjaGFubmVsLCBtZWFuaW5nIHRoYXQgYSByZWFkIG9mIHRoaXMgdmFsdWUgd2lsbCB0ZWxsIHdoaWNoCisgICAgICAgIGlzIHRoZSBsYXN0IGZpbmlzaGVkIHRyYW5zZmVyIGF0IHRoYXQgcG9pbnQgaW4gdGltZS4KKyAgICAgIC0gZmluaXNoZXI6IGhhcyBkZGFkcj1EQUREUl9TVE9QLCBkY21kPUVORElSUUVOCisgICAgICAtIGxpbmtlcjogaGFzIGRkYWRyPSBkZXNjLXNnWzBdIG9mIG5leHQgdHJhbnNmZXIsIGRjbWQ9MAorCisgIGMpIFRyYW5zZmVycyBob3QtY2hhaW5pbmcKKyAgICAgU3VwcG9zZSB0aGUgcnVubmluZyBjaGFpbiBpcyA6CisgICAgICAgICBCdWZmZXIgMSAgICAgICAgIEJ1ZmZlciAyCisgICAgICstLS0tLS0tLS0rLS0tLSstLS0rICArLS0tLSstLS0tKy0tLS0rLS0tKworICAgICB8IGQwIHwgLi4gfCBkTiB8IGwgfCAgfCBkMCB8IC4uIHwgZE4gfCBmIHwKKyAgICAgKy0tLS0tLS0tLSstLS0tKy18LSsgIF4tLS0tKy0tLS0rLS0tLSstLS0rCisgICAgICAgICAgICAgICAgICAgICAgfCAgICB8CisgICAgICAgICAgICAgICAgICAgICAgKy0tLS0rCisKKyAgICAgQWZ0ZXIgYSBjYWxsIHRvIGRtYWVuZ2luZV9zdWJtaXQoYjMpLCB0aGUgY2hhaW4gd2lsbCBsb29rIGxpa2UgOgorICAgICAgICAgIEJ1ZmZlciAxICAgICAgICAgICAgICBCdWZmZXIgMiAgICAgICAgICAgICBCdWZmZXIgMworICAgICArLS0tLS0tLS0tKy0tLS0rLS0tKyAgKy0tLS0rLS0tLSstLS0tKy0tLSsgICstLS0tKy0tLS0rLS0tLSstLS0rCisgICAgIHwgZDAgfCAuLiB8IGROIHwgbCB8ICB8IGQwIHwgLi4gfCBkTiB8IGwgfCAgfCBkMCB8IC4uIHwgZE4gfCBmIHwKKyAgICAgKy0tLS0tLS0tLSstLS0tKy18LSsgIF4tLS0tKy0tLS0rLS0tLSstfC0rICBeLS0tLSstLS0tKy0tLS0rLS0tKworICAgICAgICAgICAgICAgICAgICAgIHwgICAgfCAgICAgICAgICAgICAgICB8ICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICArLS0tLSsgICAgICAgICAgICAgICAgKy0tLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2xpbmsKKworICAgICBJZiB3aGlsZSBuZXdfbGluayB3YXMgY3JlYXRlZCB0aGUgRE1BIGNoYW5uZWwgc3RvcHBlZCwgaXQgaXMgX25vdF8KKyAgICAgcmVzdGFydGVkLiBIb3QtY2hhaW5pbmcgZG9lc24ndCBicmVhayB0aGUgYXNzdW1wdGlvbiB0aGF0CisgICAgIGRtYV9hc3luY19pc3N1ZV9wZW5kaW5nKCkgaXMgdG8gYmUgdXNlZCB0byBlbnN1cmUgdGhlIHRyYW5zZmVyIGlzIGFjdHVhbGx5IHN0YXJ0ZWQuCisKKyAgICAgT25lIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGUgOgorICAgICAgIC0gaWYgQnVmZmVyMSBhbmQgQnVmZmVyMiBoYWQgYWxsIHRoZWlyIGFkZHJlc3NlcyA4IGJ5dGVzIGFsaWduZWQKKyAgICAgICAtIGFuZCBpZiBCdWZmZXIzIGhhcyBhdCBsZWFzdCBvbmUgYWRkcmVzcyBub3QgNCBieXRlcyBhbGlnbmVkCisgICAgICAgLSB0aGVuIGhvdC1jaGFpbmluZyBjYW5ub3QgaGFwcGVuLCBhcyB0aGUgY2hhbm5lbCBtdXN0IGJlIHN0b3BwZWQsIHRoZQorICAgICAgICAgImFsaWduIGJpdCIgbXVzdCBiZSBzZXQsIGFuZCB0aGUgY2hhbm5lbCByZXN0YXJ0ZWQgQXMgYSBjb25zZXF1ZW5jZSwKKyAgICAgICAgIHN1Y2ggYSB0cmFuc2ZlciB0eF9zdWJtaXQoKSB3aWxsIGJlIHF1ZXVlZCBvbiB0aGUgc3VibWl0dGVkIHF1ZXVlLCBhbmQKKyAgICAgICAgIHRoaXMgc3BlY2lmaWMgY2FzZSBpZiB0aGUgRE1BIGlzIGFscmVhZHkgcnVubmluZyBpbiBhbGlnbmVkIG1vZGUuCisKKyAgZCkgVHJhbnNmZXJzIGNvbXBsZXRpb24gdXBkYXRlcgorICAgICBFYWNoIHRpbWUgYSB0cmFuc2ZlciBpcyBjb21wbGV0ZWQgb24gYSBjaGFubmVsLCBhbiBpbnRlcnJ1cHQgbWlnaHQgYmUKKyAgICAgZ2VuZXJhdGVkIG9yIG5vdCwgdXAgdG8gdGhlIGNsaWVudCdzIHJlcXVlc3QuIEJ1dCBpbiBlYWNoIGNhc2UsIHRoZSBsYXN0CisgICAgIGRlc2NyaXB0b3Igb2YgYSB0cmFuc2ZlciwgdGhlICJzdGF0dXMgdXBkYXRlciIsIHdpbGwgd3JpdGUgdGhlIGxhdGVzdAorICAgICB0cmFuc2ZlciBiZWluZyBjb21wbGV0ZWQgaW50byB0aGUgcGh5c2ljYWwgY2hhbm5lbCdzIGNvbXBsZXRpb24gbWFyay4KKworICAgICBUaGlzIHdpbGwgc3BlZWQgdXAgcmVzaWR1ZSBjYWxjdWxhdGlvbiwgZm9yIGxhcmdlIHRyYW5zZmVycyBzdWNoIGFzIHZpZGVvCisgICAgIGJ1ZmZlcnMgd2hpY2ggaG9sZCBhcm91bmQgNmsgZGVzY3JpcHRvcnMgb3IgbW9yZS4gVGhpcyBhbHNvIGFsbG93cyB3aXRob3V0CisgICAgIGFueSBsb2NrIHRvIGZpbmQgb3V0IHdoYXQgaXMgdGhlIGxhdGVzdCBjb21wbGV0ZWQgdHJhbnNmZXIgaW4gYSBydW5uaW5nCisgICAgIERNQSBjaGFpbi4KKworICBlKSBUcmFuc2ZlcnMgY29tcGxldGlvbiwgaXJxIGFuZCB0YXNrbGV0CisgICAgIFdoZW4gYSB0cmFuc2ZlciBmbGFnZ2VkIGFzICJETUFfUFJFUF9JTlRFUlJVUFQiIGlzIGZpbmlzaGVkLCB0aGUgZG1hIGlycQorICAgICBpcyByYWlzZWQuIFVwb24gdGhpcyBpbnRlcnJ1cHQsIGEgdGFza2xldCBpcyBzY2hlZHVsZWQgZm9yIHRoZSBwaHlzaWNhbAorICAgICBjaGFubmVsLgorICAgICBUaGUgdGFza2xldCBpcyByZXNwb25zaWJsZSBmb3IgOgorICAgICAgLSByZWFkaW5nIHRoZSBwaHlzaWNhbCBjaGFubmVsIGxhc3QgdXBkYXRlciBtYXJrCisgICAgICAtIGNhbGxpbmcgYWxsIHRoZSB0cmFuc2ZlciBjYWxsYmFja3Mgb2YgZmluaXNoZWQgdHJhbnNmZXJzLCBiYXNlZCBvbgorICAgICAgICB0aGF0IG1hcmssIGFuZCBlYWNoIHRyYW5zZmVyIGZsYWdzLgorICAgICBJZiBhIHRyYW5zZmVyIGlzIGNvbXBsZXRlZCB3aGlsZSB0aGlzIGhhbmRsaW5nIGlzIGRvbmUsIGEgZG1hIGlycSB3aWxsCisgICAgIGJlIHJhaXNlZCwgYW5kIHRoZSB0YXNrbGV0IHdpbGwgYmUgc2NoZWR1bGVkIG9uY2UgYWdhaW4sIGhhdmluZyBhIG5ldworICAgICB1cGRhdGVyIG1hcmsuCisKKyAgZikgUmVzaWR1ZQorICAgICBSZXNpZHVlIGdyYW51bGFyaXR5IHdpbGwgYmUgZGVzY3JpcHRvciBiYXNlZC4gVGhlIGlzc3VlZCBidXQgbm90IGNvbXBsZXRlZAorICAgICB0cmFuc2ZlcnMgd2lsbCBiZSBzY2FubmVkIGZvciBhbGwgb2YgdGhlaXIgZGVzY3JpcHRvcnMgYWdhaW5zdCB0aGUKKyAgICAgY3VycmVudGx5IHJ1bm5pbmcgZGVzY3JpcHRvci4KKworICBnKSBNb3N0IGNvbXBsaWNhdGVkIGNhc2Ugb2YgZHJpdmVyJ3MgdHggcXVldWVzCisgICAgIFRoZSBtb3N0IHRyaWNreSBzaXR1YXRpb24gaXMgd2hlbiA6CisgICAgICAgLSB0aGVyZSBhcmUgbm90ICJhY2tlZCIgdHJhbnNmZXJzICh0eDApCisgICAgICAgLSBhIGRyaXZlciBzdWJtaXR0ZWQgYW4gYWxpZ25lZCB0eDEsIG5vdCBjaGFpbmVkCisgICAgICAgLSBhIGRyaXZlciBzdWJtaXR0ZWQgYW4gYWxpZ25lZCB0eDIgPT4gdHgyIGlzIGNvbGQgY2hhaW5lZCB0byB0eDEKKyAgICAgICAtIGEgZHJpdmVyIGlzc3VlZCB0eDErdHgyID0+IGNoYW5uZWwgaXMgcnVubmluZyBpbiBhbGlnbmVkIG1vZGUKKyAgICAgICAtIGEgZHJpdmVyIHN1Ym1pdHRlZCBhbiBhbGlnbmVkIHR4MyA9PiB0eDMgaXMgaG90LWNoYWluZWQKKyAgICAgICAtIGEgZHJpdmVyIHN1Ym1pdHRlZCBhbiB1bmFsaWduZWQgdHg0ID0+IHR4NCBpcyBwdXQgaW4gc3VibWl0dGVkIHF1ZXVlLAorICAgICAgICAgbm90IGNoYWluZWQKKyAgICAgICAtIGEgZHJpdmVyIGlzc3VlZCB0eDQgPT4gdHg0IGlzIHB1dCBpbiBpc3N1ZWQgcXVldWUsIG5vdCBjaGFpbmVkCisgICAgICAgLSBhIGRyaXZlciBzdWJtaXR0ZWQgYW4gYWxpZ25lZCB0eDUgPT4gdHg1IGlzIHB1dCBpbiBzdWJtaXR0ZWQgcXVldWUsIG5vdAorICAgICAgICAgY2hhaW5lZAorICAgICAgIC0gYSBkcml2ZXIgc3VibWl0dGVkIGFuIGFsaWduZWQgdHg2ID0+IHR4NiBpcyBwdXQgaW4gc3VibWl0dGVkIHF1ZXVlLAorICAgICAgICAgY29sZCBjaGFpbmVkIHRvIHR4NQorCisgICAgIFRoaXMgdHJhbnNsYXRlcyBpbnRvIChhZnRlciB0eDQgaXMgaXNzdWVkKSA6CisgICAgICAgLSBpc3N1ZWQgcXVldWUKKyAgICAgKy0tLS0tKyArLS0tLS0rICstLS0tLSsgKy0tLS0tKworICAgICB8IHR4MSB8IHwgdHgyIHwgfCB0eDMgfCB8IHR4NCB8CisgICAgICstLS18LSsgXi0tLXwtKyBeLS0tLS0rICstLS0tLSsKKyAgICAgICAgIHwgICB8ICAgfCAgIHwKKyAgICAgICAgICstLS0rICAgKy0tLSsKKyAgICAgICAtIHN1Ym1pdHRlZCBxdWV1ZQorICAgICArLS0tLS0rICstLS0tLSsKKyAgICAgfCB0eDUgfCB8IHR4NiB8CisgICAgICstLS18LSsgXi0tLS0tKworICAgICAgICAgfCAgIHwKKyAgICAgICAgICstLS0rCisgICAgICAgLSBjb21wbGV0ZWQgcXVldWUgOiBlbXB0eQorICAgICAgIC0gYWxsb2NhdGVkIHF1ZXVlIDogdHgwCisKKyAgICAgSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgYWZ0ZXIgdHgzIGlzIGNvbXBsZXRlZCwgdGhlIGNoYW5uZWwgaXMgc3RvcHBlZCwgYW5kCisgICAgIHJlc3RhcnRlZCBpbiAidW5hbGlnbmVkIG1vZGUiIHRvIGhhbmRsZSB0eDQuCisKK0F1dGhvcjogUm9iZXJ0IEphcnptaWsgPHJvYmVydC5qYXJ6bWlrQGZyZWUuZnI+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RvbnRkaWZmIGIvRG9jdW1lbnRhdGlvbi9kb250ZGlmZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWE4MzRmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kb250ZGlmZgpAQCAtMCwwICsxLDI1OSBAQAorKi5hCisqLmF1eAorKi5iYworKi5iaW4KKyouYnoyCisqLmNpcworKi5jcGlvCisqLmNzcAorKi5kc3AKKyouZHZpCisqLmVsZgorKi5lcHMKKyouZncKKyouZ2NubworKi5nY292CisqLmdlbi5TCisqLmdpZgorKi5ncmVwCisqLmdycAorKi5negorKi5odG1sCisqLmkKKyouanBlZworKi5rbworKi5sbAorKi5sb2cKKyoubHN0CisqLmx6bWEKKyoubHpvCisqLm1vCisqLm1vYworKi5tb2QuYworKi5vCisqLm8uKgorKi5vcmRlcgorKi5vcmlnCisqLm91dAorKi5wYXRjaAorKi5wZGYKKyoucGxpc3QKKyoucG5nCisqLnBvdAorKi5wcworKi5yZWoKKyoucworKi5zZ21sCisqLnNvCisqLnNvLmRiZworKi5zeW10eXBlcworKi50YWIuYworKi50YWIuaAorKi50ZXgKKyoudmVyCisqLnhtbAorKi54egorKl9NT0RVTEVTCisqX3ZnYTE2LmMKKyp+CitcIyojCisqLjkKKy4qCisuKi5kCisubW0KKzUzYzcwMF9kLmgKK0NWUworQ2hhbmdlU2V0CitHUEFUSAorR1JUQUdTCitHU1lNUworR1RBR1MKK0ltYWdlCitNb2R1bGUubWFya2VycworTW9kdWxlLnN5bXZlcnMKK1BFTkRJTkcKK1NDQ1MKK1N5c3RlbS5tYXAqCitUQUdTCithY29uZgorYWZfbmFtZXMuaAorYWljNypyZWcuaCoKK2FpYzcqcmVnX3ByaW50LmMqCithaWM3KnNlcS5oKgorYWljYXNtCithaWNkYi5oKgorYWx0aXZlYyouYworYXNtLW9mZnNldHMuaAorYXNtX29mZnNldHMuaAorYXV0b2NvbmYuaCoKK2F2X3Blcm1pc3Npb25zLmgKK2Jib290c2VjdAorYmluMmMKK2Jpbmtlcm5lbC5zcGVjCitib290c2VjdAorYm91bmRzLmgKK2JzZXR1cAorYnRmaXh1cHByZXAKK2J1aWxkCitidm1saW51eAorYnpJbWFnZSoKK2NhcGFiaWxpdHlfbmFtZXMuaAorY2FwZmxhZ3MuYworY2xhc3NsaXN0LmgqCitjb21wKi5sb2cKK2NvbXBpbGUuaCoKK2NvbmYKK2NvbmZpZworY29uZmlnLSoKK2NvbmZpZ19kYXRhLmgqCitjb25maWcubWFrCitjb25maWcubWFrLmF1dG9nZW4KK2Nvbm1ha2VoYXNoCitjb25zb2xlbWFwX2RlZnRibC5jKgorY3B1c3RyLmgKK2NyYzMydGFibGUuaCoKK2NzY29wZS4qCitkZWZrZXltYXAuYworZGV2bGlzdC5oKgorZG5vdGlmeV90ZXN0Citkb2Nwcm9jCitkc2xtCitlbGYyZWNvZmYKK2VsZmNvbmZpZy5oKgorZXZlcmdyZWVuX3JlZ19zYWZlLmgKK2ZpeGRlcAorZmxhc2suaAorZm9yZTIwMGVfbWtmaXJtCitmb3JlMjAwZV9wY2FfZncuYyoKK2djb25mCitnY29uZi5nbGFkZS5oCitnZW4tZGV2bGlzdAorZ2VuX2NyYzMydGFibGUKK2dlbl9pbml0X2NwaW8KK2dlbmVyYXRlZAorZ2VuaGVhZGVycworZ2Vua3N5bXMKKypfZ3JheTI1Ni5jCitocGV0X2V4YW1wbGUKK2h1Z2VwYWdlLW1tYXAKK2h1Z2VwYWdlLXNobQoraWhleDJmdworaWtjb25maWcuaCoKK2luYXQtdGFibGVzLmMKK2luaXRyYW1mc19saXN0CitpbnQxNi5jCitpbnQxLmMKK2ludDIuYworaW50MzIuYworaW50NC5jCitpbnQ4LmMKK2thbGxzeW1zCitrY29uZmlnCitrZXl3b3Jkcy5jCitrc3ltLmMqCitrc3ltLmgqCitreGdldHRleHQKK2xleC5jCitsZXguKi5jCitsaW51eAorbG9nb18qLmMKK2xvZ29fKl9jbHV0MjI0LmMKK2xvZ29fKl9tb25vLmMKK2x4ZGlhbG9nCittYWNoLXR5cGVzCittYWNoLXR5cGVzLmgKK21hY2h0eXBlcy5oCittYXAKK21hcF9odWdldGxiCittY29uZgorbWlib290KgorbWtfZWxmY29uZmlnCitta2Jvb3QKK21rYnVnYm9vdAorbWtjcHVzdHIKK21rZGVwCitta3ByZXAKK21rcmVndGFibGUKK21rdGFibGVzCitta3RyZWUKK21vZHBvc3QKK21vZHVsZXMuYnVpbHRpbgorbW9kdWxlcy5vcmRlcgorbW9kdmVyc2lvbnMuaCoKK25jb25mCituY3Njb3BlLioKK29mZnNldC5oCitvdWkuYyoKK3BhZ2UtdHlwZXMKK3BhcnNlLmMKK3BhcnNlLmgKK3BhdGNoZXMqCitwY2EyMDBlLmJpbgorcGNhMjAwZV9lY2QuYmluMgorcGVyZi5kYXRhCitwZXJmLmRhdGEub2xkCitwZXJmLWFyY2hpdmUKK3BpZ2d5YmFjaworcGlnZ3kuZ3ppcAorcGlnZ3kuUworcG5tdG9sb2dvCitwcGNfZGVmcy5oKgorcHNzX2Jvb3QuaAorcWNvbmYKK3IxMDBfcmVnX3NhZmUuaAorcjIwMF9yZWdfc2FmZS5oCityMzAwX3JlZ19zYWZlLmgKK3I0MjBfcmVnX3NhZmUuaAorcjYwMF9yZWdfc2FmZS5oCityZWNvcmRtY291bnQKK3JlbG9jcworcmxpbV9uYW1lcy5oCitybjUwX3JlZ19zYWZlLmgKK3JzNjAwX3JlZ19zYWZlLmgKK3J2NTE1X3JlZ19zYWZlLmgKK3Nlcmllcworc2V0dXAKK3NldHVwLmJpbgorc2V0dXAuZWxmCitzSW1hZ2UKK3NtX3RibCoKK3NwbGl0LWluY2x1ZGUKK3N5c2NhbGx0YWIuaAordGFibGVzLmMKK3RhZ3MKK3Rlc3RfZ2V0X2xlbgordGZ0cGJvb3QuaW1nCit0aW1lY29uc3QuaAordGltZXMuaCoKK3RyaXhfYm9vdC5oCit1dHNyZWxlYXNlLmgqCit2ZHNvLXN5bXMubGRzCit2ZHNvLmxkcwordmRzbzMyLWludDgwLXN5bXMubGRzCit2ZHNvMzItc3ltcy5sZHMKK3Zkc28zMi1zeXNjYWxsLXN5bXMubGRzCit2ZHNvMzItc3lzZW50ZXItc3ltcy5sZHMKK3Zkc28zMi5sZHMKK3Zkc28zMi5zby5kYmcKK3Zkc282NC5sZHMKK3Zkc282NC5zby5kYmcKK3ZlcnNpb24uaCoKK3ZtSW1hZ2UKK3ZtbGludXgKK3ZtbGludXgtKgordm1saW51eC5hb3V0Cit2bWxpbnV4LmJpbi5hbGwKK3ZtbGludXgubGRzCit2bWxpbnV6Cit2b2Zmc2V0LmgKK3ZzeXNjYWxsLmxkcwordnN5c2NhbGxfMzIubGRzCit3YW54bGZ3LmluYwordUltYWdlCit1bmlmZGVmCit3YWtldXAuYmluCit3YWtldXAuZWxmCit3YWtldXAubGRzCit6SW1hZ2UqCit6Y29uZi5oYXNoLmMKK3pvZmZzZXQuaApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItbW9kZWwvYmluZGluZy50eHQgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1tb2RlbC9iaW5kaW5nLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYmZjOGUyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItbW9kZWwvYmluZGluZy50eHQKQEAgLTAsMCArMSw5OCBAQAorCitEcml2ZXIgQmluZGluZworCitEcml2ZXIgYmluZGluZyBpcyB0aGUgcHJvY2VzcyBvZiBhc3NvY2lhdGluZyBhIGRldmljZSB3aXRoIGEgZGV2aWNlCitkcml2ZXIgdGhhdCBjYW4gY29udHJvbCBpdC4gQnVzIGRyaXZlcnMgaGF2ZSB0eXBpY2FsbHkgaGFuZGxlZCB0aGlzCitiZWNhdXNlIHRoZXJlIGhhdmUgYmVlbiBidXMtc3BlY2lmaWMgc3RydWN0dXJlcyB0byByZXByZXNlbnQgdGhlCitkZXZpY2VzIGFuZCB0aGUgZHJpdmVycy4gV2l0aCBnZW5lcmljIGRldmljZSBhbmQgZGV2aWNlIGRyaXZlcgorc3RydWN0dXJlcywgbW9zdCBvZiB0aGUgYmluZGluZyBjYW4gdGFrZSBwbGFjZSB1c2luZyBjb21tb24gY29kZS4KKworCitCdXMKK35+fgorCitUaGUgYnVzIHR5cGUgc3RydWN0dXJlIGNvbnRhaW5zIGEgbGlzdCBvZiBhbGwgZGV2aWNlcyB0aGF0IGFyZSBvbiB0aGF0IGJ1cwordHlwZSBpbiB0aGUgc3lzdGVtLiBXaGVuIGRldmljZV9yZWdpc3RlciBpcyBjYWxsZWQgZm9yIGEgZGV2aWNlLCBpdCBpcworaW5zZXJ0ZWQgaW50byB0aGUgZW5kIG9mIHRoaXMgbGlzdC4gVGhlIGJ1cyBvYmplY3QgYWxzbyBjb250YWlucyBhCitsaXN0IG9mIGFsbCBkcml2ZXJzIG9mIHRoYXQgYnVzIHR5cGUuIFdoZW4gZHJpdmVyX3JlZ2lzdGVyIGlzIGNhbGxlZAorZm9yIGEgZHJpdmVyLCBpdCBpcyBpbnNlcnRlZCBhdCB0aGUgZW5kIG9mIHRoaXMgbGlzdC4gVGhlc2UgYXJlIHRoZQordHdvIGV2ZW50cyB3aGljaCB0cmlnZ2VyIGRyaXZlciBiaW5kaW5nLgorCisKK2RldmljZV9yZWdpc3Rlcgorfn5+fn5+fn5+fn5+fn5+CisKK1doZW4gYSBuZXcgZGV2aWNlIGlzIGFkZGVkLCB0aGUgYnVzJ3MgbGlzdCBvZiBkcml2ZXJzIGlzIGl0ZXJhdGVkIG92ZXIKK3RvIGZpbmQgb25lIHRoYXQgc3VwcG9ydHMgaXQuIEluIG9yZGVyIHRvIGRldGVybWluZSB0aGF0LCB0aGUgZGV2aWNlCitJRCBvZiB0aGUgZGV2aWNlIG11c3QgbWF0Y2ggb25lIG9mIHRoZSBkZXZpY2UgSURzIHRoYXQgdGhlIGRyaXZlcgorc3VwcG9ydHMuIFRoZSBmb3JtYXQgYW5kIHNlbWFudGljcyBmb3IgY29tcGFyaW5nIElEcyBpcyBidXMtc3BlY2lmaWMuIAorSW5zdGVhZCBvZiB0cnlpbmcgdG8gZGVyaXZlIGEgY29tcGxleCBzdGF0ZSBtYWNoaW5lIGFuZCBtYXRjaGluZworYWxnb3JpdGhtLCBpdCBpcyB1cCB0byB0aGUgYnVzIGRyaXZlciB0byBwcm92aWRlIGEgY2FsbGJhY2sgdG8gY29tcGFyZQorYSBkZXZpY2UgYWdhaW5zdCB0aGUgSURzIG9mIGEgZHJpdmVyLiBUaGUgYnVzIHJldHVybnMgMSBpZiBhIG1hdGNoIHdhcworZm91bmQ7IDAgb3RoZXJ3aXNlLgorCitpbnQgbWF0Y2goc3RydWN0IGRldmljZSAqIGRldiwgc3RydWN0IGRldmljZV9kcml2ZXIgKiBkcnYpOworCitJZiBhIG1hdGNoIGlzIGZvdW5kLCB0aGUgZGV2aWNlJ3MgZHJpdmVyIGZpZWxkIGlzIHNldCB0byB0aGUgZHJpdmVyCithbmQgdGhlIGRyaXZlcidzIHByb2JlIGNhbGxiYWNrIGlzIGNhbGxlZC4gVGhpcyBnaXZlcyB0aGUgZHJpdmVyIGEKK2NoYW5jZSB0byB2ZXJpZnkgdGhhdCBpdCByZWFsbHkgZG9lcyBzdXBwb3J0IHRoZSBoYXJkd2FyZSwgYW5kIHRoYXQKK2l0J3MgaW4gYSB3b3JraW5nIHN0YXRlLiAKKworRGV2aWNlIENsYXNzCit+fn5+fn5+fn5+fn4KKworVXBvbiB0aGUgc3VjY2Vzc2Z1bCBjb21wbGV0aW9uIG9mIHByb2JlLCB0aGUgZGV2aWNlIGlzIHJlZ2lzdGVyZWQgd2l0aAordGhlIGNsYXNzIHRvIHdoaWNoIGl0IGJlbG9uZ3MuIERldmljZSBkcml2ZXJzIGJlbG9uZyB0byBvbmUgYW5kIG9ubHkgb25lCitjbGFzcywgYW5kIHRoYXQgaXMgc2V0IGluIHRoZSBkcml2ZXIncyBkZXZjbGFzcyBmaWVsZC4gCitkZXZjbGFzc19hZGRfZGV2aWNlIGlzIGNhbGxlZCB0byBlbnVtZXJhdGUgdGhlIGRldmljZSB3aXRoaW4gdGhlIGNsYXNzCithbmQgYWN0dWFsbHkgcmVnaXN0ZXIgaXQgd2l0aCB0aGUgY2xhc3MsIHdoaWNoIGhhcHBlbnMgd2l0aCB0aGUKK2NsYXNzJ3MgcmVnaXN0ZXJfZGV2IGNhbGxiYWNrLgorCisKK0RyaXZlcgorfn5+fn5+CisKK1doZW4gYSBkcml2ZXIgaXMgYXR0YWNoZWQgdG8gYSBkZXZpY2UsIHRoZSBkZXZpY2UgaXMgaW5zZXJ0ZWQgaW50byB0aGUKK2RyaXZlcidzIGxpc3Qgb2YgZGV2aWNlcy4gCisKKworc3lzZnMKK35+fn5+CisKK0Egc3ltbGluayBpcyBjcmVhdGVkIGluIHRoZSBidXMncyAnZGV2aWNlcycgZGlyZWN0b3J5IHRoYXQgcG9pbnRzIHRvCit0aGUgZGV2aWNlJ3MgZGlyZWN0b3J5IGluIHRoZSBwaHlzaWNhbCBoaWVyYXJjaHkuCisKK0Egc3ltbGluayBpcyBjcmVhdGVkIGluIHRoZSBkcml2ZXIncyAnZGV2aWNlcycgZGlyZWN0b3J5IHRoYXQgcG9pbnRzCit0byB0aGUgZGV2aWNlJ3MgZGlyZWN0b3J5IGluIHRoZSBwaHlzaWNhbCBoaWVyYXJjaHkuCisKK0EgZGlyZWN0b3J5IGZvciB0aGUgZGV2aWNlIGlzIGNyZWF0ZWQgaW4gdGhlIGNsYXNzJ3MgZGlyZWN0b3J5LiBBCitzeW1saW5rIGlzIGNyZWF0ZWQgaW4gdGhhdCBkaXJlY3RvcnkgdGhhdCBwb2ludHMgdG8gdGhlIGRldmljZSdzCitwaHlzaWNhbCBsb2NhdGlvbiBpbiB0aGUgc3lzZnMgdHJlZS4gCisKK0Egc3ltbGluayBjYW4gYmUgY3JlYXRlZCAodGhvdWdoIHRoaXMgaXNuJ3QgZG9uZSB5ZXQpIGluIHRoZSBkZXZpY2UncworcGh5c2ljYWwgZGlyZWN0b3J5IHRvIGVpdGhlciBpdHMgY2xhc3MgZGlyZWN0b3J5LCBvciB0aGUgY2xhc3MncwordG9wLWxldmVsIGRpcmVjdG9yeS4gT25lIGNhbiBhbHNvIGJlIGNyZWF0ZWQgdG8gcG9pbnQgdG8gaXRzIGRyaXZlcidzCitkaXJlY3RvcnkgYWxzby4gCisKKworZHJpdmVyX3JlZ2lzdGVyCit+fn5+fn5+fn5+fn5+fn4KKworVGhlIHByb2Nlc3MgaXMgYWxtb3N0IGlkZW50aWNhbCBmb3Igd2hlbiBhIG5ldyBkcml2ZXIgaXMgYWRkZWQuIAorVGhlIGJ1cydzIGxpc3Qgb2YgZGV2aWNlcyBpcyBpdGVyYXRlZCBvdmVyIHRvIGZpbmQgYSBtYXRjaC4gRGV2aWNlcwordGhhdCBhbHJlYWR5IGhhdmUgYSBkcml2ZXIgYXJlIHNraXBwZWQuIEFsbCB0aGUgZGV2aWNlcyBhcmUgaXRlcmF0ZWQKK292ZXIsIHRvIGJpbmQgYXMgbWFueSBkZXZpY2VzIGFzIHBvc3NpYmxlIHRvIHRoZSBkcml2ZXIuCisKKworUmVtb3ZhbAorfn5+fn5+fgorCitXaGVuIGEgZGV2aWNlIGlzIHJlbW92ZWQsIHRoZSByZWZlcmVuY2UgY291bnQgZm9yIGl0IHdpbGwgZXZlbnR1YWxseQorZ28gdG8gMC4gV2hlbiBpdCBkb2VzLCB0aGUgcmVtb3ZlIGNhbGxiYWNrIG9mIHRoZSBkcml2ZXIgaXMgY2FsbGVkLiBJdAoraXMgcmVtb3ZlZCBmcm9tIHRoZSBkcml2ZXIncyBsaXN0IG9mIGRldmljZXMgYW5kIHRoZSByZWZlcmVuY2UgY291bnQKK29mIHRoZSBkcml2ZXIgaXMgZGVjcmVtZW50ZWQuIEFsbCBzeW1saW5rcyBiZXR3ZWVuIHRoZSB0d28gYXJlIHJlbW92ZWQuCisKK1doZW4gYSBkcml2ZXIgaXMgcmVtb3ZlZCwgdGhlIGxpc3Qgb2YgZGV2aWNlcyB0aGF0IGl0IHN1cHBvcnRzIGlzCitpdGVyYXRlZCBvdmVyLCBhbmQgdGhlIGRyaXZlcidzIHJlbW92ZSBjYWxsYmFjayBpcyBjYWxsZWQgZm9yIGVhY2gKK29uZS4gVGhlIGRldmljZSBpcyByZW1vdmVkIGZyb20gdGhhdCBsaXN0IGFuZCB0aGUgc3ltbGlua3MgcmVtb3ZlZC4gCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHJpdmVyLW1vZGVsL2J1cy50eHQgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1tb2RlbC9idXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1NzdhNDUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1tb2RlbC9idXMudHh0CkBAIC0wLDAgKzEsMTQzIEBACisKK0J1cyBUeXBlcyAKKworRGVmaW5pdGlvbgorfn5+fn5+fn5+fgorU2VlIHRoZSBrZXJuZWxkb2MgZm9yIHRoZSBzdHJ1Y3QgYnVzX3R5cGUuCisKK2ludCBidXNfcmVnaXN0ZXIoc3RydWN0IGJ1c190eXBlICogYnVzKTsKKworCitEZWNsYXJhdGlvbgorfn5+fn5+fn5+fn4KKworRWFjaCBidXMgdHlwZSBpbiB0aGUga2VybmVsIChQQ0ksIFVTQiwgZXRjKSBzaG91bGQgZGVjbGFyZSBvbmUgc3RhdGljCitvYmplY3Qgb2YgdGhpcyB0eXBlLiBUaGV5IG11c3QgaW5pdGlhbGl6ZSB0aGUgbmFtZSBmaWVsZCwgYW5kIG1heQorb3B0aW9uYWxseSBpbml0aWFsaXplIHRoZSBtYXRjaCBjYWxsYmFjay4KKworc3RydWN0IGJ1c190eXBlIHBjaV9idXNfdHlwZSA9IHsKKyAgICAgICAubmFtZQk9ICJwY2kiLAorICAgICAgIC5tYXRjaAk9IHBjaV9idXNfbWF0Y2gsCit9OworCitUaGUgc3RydWN0dXJlIHNob3VsZCBiZSBleHBvcnRlZCB0byBkcml2ZXJzIGluIGEgaGVhZGVyIGZpbGU6CisKK2V4dGVybiBzdHJ1Y3QgYnVzX3R5cGUgcGNpX2J1c190eXBlOworCisKK1JlZ2lzdHJhdGlvbgorfn5+fn5+fn5+fn5+CisKK1doZW4gYSBidXMgZHJpdmVyIGlzIGluaXRpYWxpemVkLCBpdCBjYWxscyBidXNfcmVnaXN0ZXIuIFRoaXMKK2luaXRpYWxpemVzIHRoZSByZXN0IG9mIHRoZSBmaWVsZHMgaW4gdGhlIGJ1cyBvYmplY3QgYW5kIGluc2VydHMgaXQKK2ludG8gYSBnbG9iYWwgbGlzdCBvZiBidXMgdHlwZXMuIE9uY2UgdGhlIGJ1cyBvYmplY3QgaXMgcmVnaXN0ZXJlZCwgCit0aGUgZmllbGRzIGluIGl0IGFyZSB1c2FibGUgYnkgdGhlIGJ1cyBkcml2ZXIuIAorCisKK0NhbGxiYWNrcworfn5+fn5+fn5+CisKK21hdGNoKCk6IEF0dGFjaGluZyBEcml2ZXJzIHRvIERldmljZXMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworVGhlIGZvcm1hdCBvZiBkZXZpY2UgSUQgc3RydWN0dXJlcyBhbmQgdGhlIHNlbWFudGljcyBmb3IgY29tcGFyaW5nCit0aGVtIGFyZSBpbmhlcmVudGx5IGJ1cy1zcGVjaWZpYy4gRHJpdmVycyB0eXBpY2FsbHkgZGVjbGFyZSBhbiBhcnJheQorb2YgZGV2aWNlIElEcyBvZiBkZXZpY2VzIHRoZXkgc3VwcG9ydCB0aGF0IHJlc2lkZSBpbiBhIGJ1cy1zcGVjaWZpYworZHJpdmVyIHN0cnVjdHVyZS4gCisKK1RoZSBwdXJwb3NlIG9mIHRoZSBtYXRjaCBjYWxsYmFjayBpcyB0byBnaXZlIHRoZSBidXMgYW4gb3Bwb3J0dW5pdHkgdG8KK2RldGVybWluZSBpZiBhIHBhcnRpY3VsYXIgZHJpdmVyIHN1cHBvcnRzIGEgcGFydGljdWxhciBkZXZpY2UgYnkKK2NvbXBhcmluZyB0aGUgZGV2aWNlIElEcyB0aGUgZHJpdmVyIHN1cHBvcnRzIHdpdGggdGhlIGRldmljZSBJRCBvZiBhCitwYXJ0aWN1bGFyIGRldmljZSwgd2l0aG91dCBzYWNyaWZpY2luZyBidXMtc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBvcgordHlwZS1zYWZldHkuIAorCitXaGVuIGEgZHJpdmVyIGlzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgYnVzLCB0aGUgYnVzJ3MgbGlzdCBvZiBkZXZpY2VzIGlzCitpdGVyYXRlZCBvdmVyLCBhbmQgdGhlIG1hdGNoIGNhbGxiYWNrIGlzIGNhbGxlZCBmb3IgZWFjaCBkZXZpY2UgdGhhdAorZG9lcyBub3QgaGF2ZSBhIGRyaXZlciBhc3NvY2lhdGVkIHdpdGggaXQuIAorCisKKworRGV2aWNlIGFuZCBEcml2ZXIgTGlzdHMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1RoZSBsaXN0cyBvZiBkZXZpY2VzIGFuZCBkcml2ZXJzIGFyZSBpbnRlbmRlZCB0byByZXBsYWNlIHRoZSBsb2NhbAorbGlzdHMgdGhhdCBtYW55IGJ1c2VzIGtlZXAuIFRoZXkgYXJlIGxpc3RzIG9mIHN0cnVjdCBkZXZpY2VzIGFuZAorc3RydWN0IGRldmljZV9kcml2ZXJzLCByZXNwZWN0aXZlbHkuIEJ1cyBkcml2ZXJzIGFyZSBmcmVlIHRvIHVzZSB0aGUKK2xpc3RzIGFzIHRoZXkgcGxlYXNlLCBidXQgY29udmVyc2lvbiB0byB0aGUgYnVzLXNwZWNpZmljIHR5cGUgbWF5IGJlCituZWNlc3NhcnkuIAorCitUaGUgTERNIGNvcmUgcHJvdmlkZXMgaGVscGVyIGZ1bmN0aW9ucyBmb3IgaXRlcmF0aW5nIG92ZXIgZWFjaCBsaXN0LgorCitpbnQgYnVzX2Zvcl9lYWNoX2RldihzdHJ1Y3QgYnVzX3R5cGUgKiBidXMsIHN0cnVjdCBkZXZpY2UgKiBzdGFydCwgdm9pZCAqIGRhdGEsCisJCSAgICAgaW50ICgqZm4pKHN0cnVjdCBkZXZpY2UgKiwgdm9pZCAqKSk7CisKK2ludCBidXNfZm9yX2VhY2hfZHJ2KHN0cnVjdCBidXNfdHlwZSAqIGJ1cywgc3RydWN0IGRldmljZV9kcml2ZXIgKiBzdGFydCwgCisJCSAgICAgdm9pZCAqIGRhdGEsIGludCAoKmZuKShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqLCB2b2lkICopKTsKKworVGhlc2UgaGVscGVycyBpdGVyYXRlIG92ZXIgdGhlIHJlc3BlY3RpdmUgbGlzdCwgYW5kIGNhbGwgdGhlIGNhbGxiYWNrCitmb3IgZWFjaCBkZXZpY2Ugb3IgZHJpdmVyIGluIHRoZSBsaXN0LiBBbGwgbGlzdCBhY2Nlc3NlcyBhcmUKK3N5bmNocm9uaXplZCBieSB0YWtpbmcgdGhlIGJ1cydzIGxvY2sgKHJlYWQgY3VycmVudGx5KS4gVGhlIHJlZmVyZW5jZQorY291bnQgb24gZWFjaCBvYmplY3QgaW4gdGhlIGxpc3QgaXMgaW5jcmVtZW50ZWQgYmVmb3JlIHRoZSBjYWxsYmFjayBpcworY2FsbGVkOyBpdCBpcyBkZWNyZW1lbnRlZCBhZnRlciB0aGUgbmV4dCBvYmplY3QgaGFzIGJlZW4gb2J0YWluZWQuIFRoZQorbG9jayBpcyBub3QgaGVsZCB3aGVuIGNhbGxpbmcgdGhlIGNhbGxiYWNrLiAKKworCitzeXNmcworfn5+fn5+fn4KK1RoZXJlIGlzIGEgdG9wLWxldmVsIGRpcmVjdG9yeSBuYW1lZCAnYnVzJy4KKworRWFjaCBidXMgZ2V0cyBhIGRpcmVjdG9yeSBpbiB0aGUgYnVzIGRpcmVjdG9yeSwgYWxvbmcgd2l0aCB0d28gZGVmYXVsdAorZGlyZWN0b3JpZXM6CisKKwkvc3lzL2J1cy9wY2kvCisJfC0tIGRldmljZXMKKwlgLS0gZHJpdmVycworCitEcml2ZXJzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgYnVzIGdldCBhIGRpcmVjdG9yeSBpbiB0aGUgYnVzJ3MgZHJpdmVycworZGlyZWN0b3J5OgorCisJL3N5cy9idXMvcGNpLworCXwtLSBkZXZpY2VzCisJYC0tIGRyaXZlcnMKKwkgICAgfC0tIEludGVsIElDSAorCSAgICB8LS0gSW50ZWwgSUNIIEpveXN0aWNrCisJICAgIHwtLSBhZ3BnYXJ0CisJICAgIGAtLSBlMTAwCisKK0VhY2ggZGV2aWNlIHRoYXQgaXMgZGlzY292ZXJlZCBvbiBhIGJ1cyBvZiB0aGF0IHR5cGUgZ2V0cyBhIHN5bWxpbmsgaW4KK3RoZSBidXMncyBkZXZpY2VzIGRpcmVjdG9yeSB0byB0aGUgZGV2aWNlJ3MgZGlyZWN0b3J5IGluIHRoZSBwaHlzaWNhbAoraGllcmFyY2h5OgorCisJL3N5cy9idXMvcGNpLworCXwtLSBkZXZpY2VzCisJfCAgIHwtLSAwMDowMC4wIC0+IC4uLy4uLy4uL3Jvb3QvcGNpMC8wMDowMC4wCisJfCAgIHwtLSAwMDowMS4wIC0+IC4uLy4uLy4uL3Jvb3QvcGNpMC8wMDowMS4wCisJfCAgIGAtLSAwMDowMi4wIC0+IC4uLy4uLy4uL3Jvb3QvcGNpMC8wMDowMi4wCisJYC0tIGRyaXZlcnMKKworCitFeHBvcnRpbmcgQXR0cmlidXRlcworfn5+fn5+fn5+fn5+fn5+fn5+fn4KK3N0cnVjdCBidXNfYXR0cmlidXRlIHsKKwlzdHJ1Y3QgYXR0cmlidXRlCWF0dHI7CisJc3NpemVfdCAoKnNob3cpKHN0cnVjdCBidXNfdHlwZSAqLCBjaGFyICogYnVmKTsKKwlzc2l6ZV90ICgqc3RvcmUpKHN0cnVjdCBidXNfdHlwZSAqLCBjb25zdCBjaGFyICogYnVmLCBzaXplX3QgY291bnQpOworfTsKKworQnVzIGRyaXZlcnMgY2FuIGV4cG9ydCBhdHRyaWJ1dGVzIHVzaW5nIHRoZSBCVVNfQVRUUiBtYWNybyB0aGF0IHdvcmtzCitzaW1pbGFybHkgdG8gdGhlIERFVklDRV9BVFRSIG1hY3JvIGZvciBkZXZpY2VzLiBGb3IgZXhhbXBsZSwgYSBkZWZpbml0aW9uIAorbGlrZSB0aGlzOgorCitzdGF0aWMgQlVTX0FUVFIoZGVidWcsMDY0NCxzaG93X2RlYnVnLHN0b3JlX2RlYnVnKTsKKworaXMgZXF1aXZhbGVudCB0byBkZWNsYXJpbmc6CisKK3N0YXRpYyBidXNfYXR0cmlidXRlIGJ1c19hdHRyX2RlYnVnOworCitUaGlzIGNhbiB0aGVuIGJlIHVzZWQgdG8gYWRkIGFuZCByZW1vdmUgdGhlIGF0dHJpYnV0ZSBmcm9tIHRoZSBidXMncworc3lzZnMgZGlyZWN0b3J5IHVzaW5nOgorCitpbnQgYnVzX2NyZWF0ZV9maWxlKHN0cnVjdCBidXNfdHlwZSAqLCBzdHJ1Y3QgYnVzX2F0dHJpYnV0ZSAqKTsKK3ZvaWQgYnVzX3JlbW92ZV9maWxlKHN0cnVjdCBidXNfdHlwZSAqLCBzdHJ1Y3QgYnVzX2F0dHJpYnV0ZSAqKTsKKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1tb2RlbC9jbGFzcy50eHQgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1tb2RlbC9jbGFzcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZlZmM0OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZHJpdmVyLW1vZGVsL2NsYXNzLnR4dApAQCAtMCwwICsxLDE0NyBAQAorCitEZXZpY2UgQ2xhc3NlcworCisKK0ludHJvZHVjdGlvbgorfn5+fn5+fn5+fn5+CitBIGRldmljZSBjbGFzcyBkZXNjcmliZXMgYSB0eXBlIG9mIGRldmljZSwgbGlrZSBhbiBhdWRpbyBvciBuZXR3b3JrCitkZXZpY2UuIFRoZSBmb2xsb3dpbmcgZGV2aWNlIGNsYXNzZXMgaGF2ZSBiZWVuIGlkZW50aWZpZWQ6CisKKzxJbnNlcnQgTGlzdCBvZiBEZXZpY2UgQ2xhc3NlcyBIZXJlPgorCisKK0VhY2ggZGV2aWNlIGNsYXNzIGRlZmluZXMgYSBzZXQgb2Ygc2VtYW50aWNzIGFuZCBhIHByb2dyYW1taW5nIGludGVyZmFjZQordGhhdCBkZXZpY2VzIG9mIHRoYXQgY2xhc3MgYWRoZXJlIHRvLiBEZXZpY2UgZHJpdmVycyBhcmUgdGhlCitpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IHByb2dyYW1taW5nIGludGVyZmFjZSBmb3IgYSBwYXJ0aWN1bGFyIGRldmljZSBvbgorYSBwYXJ0aWN1bGFyIGJ1cy4gCisKK0RldmljZSBjbGFzc2VzIGFyZSBhZ25vc3RpYyB3aXRoIHJlc3BlY3QgdG8gd2hhdCBidXMgYSBkZXZpY2UgcmVzaWRlcworb24uIAorCisKK1Byb2dyYW1taW5nIEludGVyZmFjZQorfn5+fn5+fn5+fn5+fn5+fn5+fn5+CitUaGUgZGV2aWNlIGNsYXNzIHN0cnVjdHVyZSBsb29rcyBsaWtlOiAKKworCit0eXBlZGVmIGludCAoKmRldmNsYXNzX2FkZCkoc3RydWN0IGRldmljZSAqKTsKK3R5cGVkZWYgdm9pZCAoKmRldmNsYXNzX3JlbW92ZSkoc3RydWN0IGRldmljZSAqKTsKKworU2VlIHRoZSBrZXJuZWxkb2MgZm9yIHRoZSBzdHJ1Y3QgY2xhc3MuCisKK0EgdHlwaWNhbCBkZXZpY2UgY2xhc3MgZGVmaW5pdGlvbiB3b3VsZCBsb29rIGxpa2U6IAorCitzdHJ1Y3QgZGV2aWNlX2NsYXNzIGlucHV0X2RldmNsYXNzID0geworICAgICAgICAubmFtZQkJPSAiaW5wdXQiLAorICAgICAgICAuYWRkX2RldmljZQk9IGlucHV0X2FkZF9kZXZpY2UsCisJLnJlbW92ZV9kZXZpY2UJPSBpbnB1dF9yZW1vdmVfZGV2aWNlLAorfTsKKworRWFjaCBkZXZpY2UgY2xhc3Mgc3RydWN0dXJlIHNob3VsZCBiZSBleHBvcnRlZCBpbiBhIGhlYWRlciBmaWxlIHNvIGl0CitjYW4gYmUgdXNlZCBieSBkcml2ZXJzLCBleHRlbnNpb25zIGFuZCBpbnRlcmZhY2VzLgorCitEZXZpY2UgY2xhc3NlcyBhcmUgcmVnaXN0ZXJlZCBhbmQgdW5yZWdpc3RlcmVkIHdpdGggdGhlIGNvcmUgdXNpbmc6IAorCitpbnQgZGV2Y2xhc3NfcmVnaXN0ZXIoc3RydWN0IGRldmljZV9jbGFzcyAqIGNscyk7Cit2b2lkIGRldmNsYXNzX3VucmVnaXN0ZXIoc3RydWN0IGRldmljZV9jbGFzcyAqIGNscyk7CisKKworRGV2aWNlcworfn5+fn5+fgorQXMgZGV2aWNlcyBhcmUgYm91bmQgdG8gZHJpdmVycywgdGhleSBhcmUgYWRkZWQgdG8gdGhlIGRldmljZSBjbGFzcwordGhhdCB0aGUgZHJpdmVyIGJlbG9uZ3MgdG8uIEJlZm9yZSB0aGUgZHJpdmVyIG1vZGVsIGNvcmUsIHRoaXMgd291bGQKK3R5cGljYWxseSBoYXBwZW4gZHVyaW5nIHRoZSBkcml2ZXIncyBwcm9iZSgpIGNhbGxiYWNrLCBvbmNlIHRoZSBkZXZpY2UKK2hhcyBiZWVuIGluaXRpYWxpemVkLiBJdCBub3cgaGFwcGVucyBhZnRlciB0aGUgcHJvYmUoKSBjYWxsYmFjaworZmluaXNoZXMgZnJvbSB0aGUgY29yZS4gCisKK1RoZSBkZXZpY2UgaXMgZW51bWVyYXRlZCBpbiB0aGUgY2xhc3MuIEVhY2ggdGltZSBhIGRldmljZSBpcyBhZGRlZCB0bwordGhlIGNsYXNzLCB0aGUgY2xhc3MncyBkZXZudW0gZmllbGQgaXMgaW5jcmVtZW50ZWQgYW5kIGFzc2lnbmVkIHRvIHRoZQorZGV2aWNlLiBUaGUgZmllbGQgaXMgbmV2ZXIgZGVjcmVtZW50ZWQsIHNvIGlmIHRoZSBkZXZpY2UgaXMgcmVtb3ZlZAorZnJvbSB0aGUgY2xhc3MgYW5kIHJlLWFkZGVkLCBpdCB3aWxsIHJlY2VpdmUgYSBkaWZmZXJlbnQgZW51bWVyYXRlZAordmFsdWUuIAorCitUaGUgY2xhc3MgaXMgYWxsb3dlZCB0byBjcmVhdGUgYSBjbGFzcy1zcGVjaWZpYyBzdHJ1Y3R1cmUgZm9yIHRoZQorZGV2aWNlIGFuZCBzdG9yZSBpdCBpbiB0aGUgZGV2aWNlJ3MgY2xhc3NfZGF0YSBwb2ludGVyLiAKKworVGhlcmUgaXMgbm8gbGlzdCBvZiBkZXZpY2VzIGluIHRoZSBkZXZpY2UgY2xhc3MuIEVhY2ggZHJpdmVyIGhhcyBhCitsaXN0IG9mIGRldmljZXMgdGhhdCBpdCBzdXBwb3J0cy4gVGhlIGRldmljZSBjbGFzcyBoYXMgYSBsaXN0IG9mCitkcml2ZXJzIG9mIHRoYXQgcGFydGljdWxhciBjbGFzcy4gVG8gYWNjZXNzIGFsbCBvZiB0aGUgZGV2aWNlcyBpbiB0aGUKK2NsYXNzLCBpdGVyYXRlIG92ZXIgdGhlIGRldmljZSBsaXN0cyBvZiBlYWNoIGRyaXZlciBpbiB0aGUgY2xhc3MuCisKKworRGV2aWNlIERyaXZlcnMKK35+fn5+fn5+fn5+fn5+CitEZXZpY2UgZHJpdmVycyBhcmUgYWRkZWQgdG8gZGV2aWNlIGNsYXNzZXMgd2hlbiB0aGV5IGFyZSByZWdpc3RlcmVkCit3aXRoIHRoZSBjb3JlLiBBIGRyaXZlciBzcGVjaWZpZXMgdGhlIGNsYXNzIGl0IGJlbG9uZ3MgdG8gYnkgc2V0dGluZwordGhlIHN0cnVjdCBkZXZpY2VfZHJpdmVyOjpkZXZjbGFzcyBmaWVsZC4gCisKKworc3lzZnMgZGlyZWN0b3J5IHN0cnVjdHVyZQorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorVGhlcmUgaXMgYSB0b3AtbGV2ZWwgc3lzZnMgZGlyZWN0b3J5IG5hbWVkICdjbGFzcycuIAorCitFYWNoIGNsYXNzIGdldHMgYSBkaXJlY3RvcnkgaW4gdGhlIGNsYXNzIGRpcmVjdG9yeSwgYWxvbmcgd2l0aCB0d28KK2RlZmF1bHQgc3ViZGlyZWN0b3JpZXM6CisKKyAgICAgICAgY2xhc3MvCisgICAgICAgIGAtLSBpbnB1dAorICAgICAgICAgICAgfC0tIGRldmljZXMKKyAgICAgICAgICAgIGAtLSBkcml2ZXJzCisKKworRHJpdmVycyByZWdpc3RlcmVkIHdpdGggdGhlIGNsYXNzIGdldCBhIHN5bWxpbmsgaW4gdGhlIGRyaXZlcnMvIGRpcmVjdG9yeSAKK3RoYXQgcG9pbnRzIHRvIHRoZSBkcml2ZXIncyBkaXJlY3RvcnkgKHVuZGVyIGl0cyBidXMgZGlyZWN0b3J5KToKKworICAgY2xhc3MvCisgICBgLS0gaW5wdXQKKyAgICAgICB8LS0gZGV2aWNlcworICAgICAgIGAtLSBkcml2ZXJzCisgICAgICAgICAgIGAtLSB1c2I6dXNiX21vdXNlIC0+IC4uLy4uLy4uL2J1cy9kcml2ZXJzL3VzYl9tb3VzZS8KKworCitFYWNoIGRldmljZSBnZXRzIGEgc3ltbGluayBpbiB0aGUgZGV2aWNlcy8gZGlyZWN0b3J5IHRoYXQgcG9pbnRzIHRvIHRoZSAKK2RldmljZSdzIGRpcmVjdG9yeSBpbiB0aGUgcGh5c2ljYWwgaGllcmFyY2h5OgorCisgICBjbGFzcy8KKyAgIGAtLSBpbnB1dAorICAgICAgIHwtLSBkZXZpY2VzCisgICAgICAgfCAgIGAtLSAxIC0+IC4uLy4uLy4uL3Jvb3QvcGNpMC8wMDoxZi4wL3VzYl9idXMvMDA6MWYuMi0xOjAvCisgICAgICAgYC0tIGRyaXZlcnMKKworCitFeHBvcnRpbmcgQXR0cmlidXRlcworfn5+fn5+fn5+fn5+fn5+fn5+fn4KK3N0cnVjdCBkZXZjbGFzc19hdHRyaWJ1dGUgeworICAgICAgICBzdHJ1Y3QgYXR0cmlidXRlICAgICAgICBhdHRyOworICAgICAgICBzc2l6ZV90ICgqc2hvdykoc3RydWN0IGRldmljZV9jbGFzcyAqLCBjaGFyICogYnVmLCBzaXplX3QgY291bnQsIGxvZmZfdCBvZmYpOworICAgICAgICBzc2l6ZV90ICgqc3RvcmUpKHN0cnVjdCBkZXZpY2VfY2xhc3MgKiwgY29uc3QgY2hhciAqIGJ1Ziwgc2l6ZV90IGNvdW50LCBsb2ZmX3Qgb2ZmKTsKK307CisKK0NsYXNzIGRyaXZlcnMgY2FuIGV4cG9ydCBhdHRyaWJ1dGVzIHVzaW5nIHRoZSBERVZDTEFTU19BVFRSIG1hY3JvIHRoYXQgd29ya3MKK3NpbWlsYXJseSB0byB0aGUgREVWSUNFX0FUVFIgbWFjcm8gZm9yIGRldmljZXMuIEZvciBleGFtcGxlLCBhIGRlZmluaXRpb24gCitsaWtlIHRoaXM6CisKK3N0YXRpYyBERVZDTEFTU19BVFRSKGRlYnVnLDA2NDQsc2hvd19kZWJ1ZyxzdG9yZV9kZWJ1Zyk7CisKK2lzIGVxdWl2YWxlbnQgdG8gZGVjbGFyaW5nOgorCitzdGF0aWMgZGV2Y2xhc3NfYXR0cmlidXRlIGRldmNsYXNzX2F0dHJfZGVidWc7CisKK1RoZSBidXMgZHJpdmVyIGNhbiBhZGQgYW5kIHJlbW92ZSB0aGUgYXR0cmlidXRlIGZyb20gdGhlIGNsYXNzJ3MKK3N5c2ZzIGRpcmVjdG9yeSB1c2luZzoKKworaW50IGRldmNsYXNzX2NyZWF0ZV9maWxlKHN0cnVjdCBkZXZpY2VfY2xhc3MgKiwgc3RydWN0IGRldmNsYXNzX2F0dHJpYnV0ZSAqKTsKK3ZvaWQgZGV2Y2xhc3NfcmVtb3ZlX2ZpbGUoc3RydWN0IGRldmljZV9jbGFzcyAqLCBzdHJ1Y3QgZGV2Y2xhc3NfYXR0cmlidXRlICopOworCitJbiB0aGUgZXhhbXBsZSBhYm92ZSwgdGhlIGZpbGUgd2lsbCBiZSBuYW1lZCAnZGVidWcnIGluIHBsYWNlZCBpbiB0aGUKK2NsYXNzJ3MgZGlyZWN0b3J5IGluIHN5c2ZzLiAKKworCitJbnRlcmZhY2VzCit+fn5+fn5+fn5+CitUaGVyZSBtYXkgZXhpc3QgbXVsdGlwbGUgbWVjaGFuaXNtcyBmb3IgYWNjZXNzaW5nIHRoZSBzYW1lIGRldmljZSBvZiBhCitwYXJ0aWN1bGFyIGNsYXNzIHR5cGUuIERldmljZSBpbnRlcmZhY2VzIGRlc2NyaWJlIHRoZXNlIG1lY2hhbmlzbXMuIAorCitXaGVuIGEgZGV2aWNlIGlzIGFkZGVkIHRvIGEgZGV2aWNlIGNsYXNzLCB0aGUgY29yZSBhdHRlbXB0cyB0byBhZGQgaXQKK3RvIGV2ZXJ5IGludGVyZmFjZSB0aGF0IGlzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgZGV2aWNlIGNsYXNzLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1tb2RlbC9kZXNpZ24tcGF0dGVybnMudHh0IGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItbW9kZWwvZGVzaWduLXBhdHRlcm5zLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTdiMmRmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItbW9kZWwvZGVzaWduLXBhdHRlcm5zLnR4dApAQCAtMCwwICsxLDExNiBAQAorCitEZXZpY2UgRHJpdmVyIERlc2lnbiBQYXR0ZXJucworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgYSBmZXcgY29tbW9uIGRlc2lnbiBwYXR0ZXJucyBmb3VuZCBpbiBkZXZpY2UgZHJpdmVycy4KK0l0IGlzIGxpa2VseSB0aGF0IHN1YnN5c3RlbSBtYWludGFpbmVycyB3aWxsIGFzayBkcml2ZXIgZGV2ZWxvcGVycyB0bworY29uZm9ybSB0byB0aGVzZSBkZXNpZ24gcGF0dGVybnMuCisKKzEuIFN0YXRlIENvbnRhaW5lcgorMi4gY29udGFpbmVyX29mKCkKKworCisxLiBTdGF0ZSBDb250YWluZXIKK35+fn5+fn5+fn5+fn5+fn5+fgorCitXaGlsZSB0aGUga2VybmVsIGNvbnRhaW5zIGEgZmV3IGRldmljZSBkcml2ZXJzIHRoYXQgYXNzdW1lIHRoYXQgdGhleSB3aWxsCitvbmx5IGJlIHByb2JlZCgpIG9uY2Ugb24gYSBjZXJ0YWluIHN5c3RlbSAoc2luZ2xldG9ucyksIGl0IGlzIGN1c3RvbSB0byBhc3N1bWUKK3RoYXQgdGhlIGRldmljZSB0aGUgZHJpdmVyIGJpbmRzIHRvIHdpbGwgYXBwZWFyIGluIHNldmVyYWwgaW5zdGFuY2VzLiBUaGlzCittZWFucyB0aGF0IHRoZSBwcm9iZSgpIGZ1bmN0aW9uIGFuZCBhbGwgY2FsbGJhY2tzIG5lZWQgdG8gYmUgcmVlbnRyYW50LgorCitUaGUgbW9zdCBjb21tb24gd2F5IHRvIGFjaGlldmUgdGhpcyBpcyB0byB1c2UgdGhlIHN0YXRlIGNvbnRhaW5lciBkZXNpZ24KK3BhdHRlcm4uIEl0IHVzdWFsbHkgaGFzIHRoaXMgZm9ybToKKworc3RydWN0IGZvbyB7CisgICAgc3BpbmxvY2tfdCBsb2NrOyAvKiBFeGFtcGxlIG1lbWJlciAqLworICAgICguLi4pCit9OworCitzdGF0aWMgaW50IGZvb19wcm9iZSguLi4pCit7CisgICAgc3RydWN0IGZvbyAqZm9vOworCisgICAgZm9vID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpmb28pLCBHRlBfS0VSTkVMKTsKKyAgICBpZiAoIWZvbykKKyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisgICAgc3Bpbl9sb2NrX2luaXQoJmZvby0+bG9jayk7CisgICAgKC4uLikKK30KKworVGhpcyB3aWxsIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiBzdHJ1Y3QgZm9vIGluIG1lbW9yeSBldmVyeSB0aW1lIHByb2JlKCkgaXMKK2NhbGxlZC4gVGhpcyBpcyBvdXIgc3RhdGUgY29udGFpbmVyIGZvciB0aGlzIGluc3RhbmNlIG9mIHRoZSBkZXZpY2UgZHJpdmVyLgorT2YgY291cnNlIGl0IGlzIHRoZW4gbmVjZXNzYXJ5IHRvIGFsd2F5cyBwYXNzIHRoaXMgaW5zdGFuY2Ugb2YgdGhlCitzdGF0ZSBhcm91bmQgdG8gYWxsIGZ1bmN0aW9ucyB0aGF0IG5lZWQgYWNjZXNzIHRvIHRoZSBzdGF0ZSBhbmQgaXRzIG1lbWJlcnMuCisKK0ZvciBleGFtcGxlLCBpZiB0aGUgZHJpdmVyIGlzIHJlZ2lzdGVyaW5nIGFuIGludGVycnVwdCBoYW5kbGVyLCB5b3Ugd291bGQKK3Bhc3MgYXJvdW5kIGEgcG9pbnRlciB0byBzdHJ1Y3QgZm9vIGxpa2UgdGhpczoKKworc3RhdGljIGlycXJldHVybl90IGZvb19oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKK3sKKyAgICBzdHJ1Y3QgZm9vICpmb28gPSBhcmc7CisgICAgKC4uLikKK30KKworc3RhdGljIGludCBmb29fcHJvYmUoLi4uKQoreworICAgIHN0cnVjdCBmb28gKmZvbzsKKworICAgICguLi4pCisgICAgcmV0ID0gcmVxdWVzdF9pcnEoaXJxLCBmb29faGFuZGxlciwgMCwgImZvbyIsIGZvbyk7Cit9CisKK1RoaXMgd2F5IHlvdSBhbHdheXMgZ2V0IGEgcG9pbnRlciBiYWNrIHRvIHRoZSBjb3JyZWN0IGluc3RhbmNlIG9mIGZvbyBpbgoreW91ciBpbnRlcnJ1cHQgaGFuZGxlci4KKworCisyLiBjb250YWluZXJfb2YoKQorfn5+fn5+fn5+fn5+fn5+fn4KKworQ29udGludWluZyBvbiB0aGUgYWJvdmUgZXhhbXBsZSB3ZSBhZGQgYW4gb2ZmbG9hZGVkIHdvcms6CisKK3N0cnVjdCBmb28geworICAgIHNwaW5sb2NrX3QgbG9jazsKKyAgICBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqd3E7CisgICAgc3RydWN0IHdvcmtfc3RydWN0IG9mZmxvYWQ7CisgICAgKC4uLikKK307CisKK3N0YXRpYyB2b2lkIGZvb193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKK3sKKyAgICBzdHJ1Y3QgZm9vICpmb28gPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGZvbywgb2ZmbG9hZCk7CisKKyAgICAoLi4uKQorfQorCitzdGF0aWMgaXJxcmV0dXJuX3QgZm9vX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQoreworICAgIHN0cnVjdCBmb28gKmZvbyA9IGFyZzsKKworICAgIHF1ZXVlX3dvcmsoZm9vLT53cSwgJmZvby0+b2ZmbG9hZCk7CisgICAgKC4uLikKK30KKworc3RhdGljIGludCBmb29fcHJvYmUoLi4uKQoreworICAgIHN0cnVjdCBmb28gKmZvbzsKKworICAgIGZvby0+d3EgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZSgiZm9vLXdxIik7CisgICAgSU5JVF9XT1JLKCZmb28tPm9mZmxvYWQsIGZvb193b3JrKTsKKyAgICAoLi4uKQorfQorCitUaGUgZGVzaWduIHBhdHRlcm4gaXMgdGhlIHNhbWUgZm9yIGFuIGhydGltZXIgb3Igc29tZXRoaW5nIHNpbWlsYXIgdGhhdCB3aWxsCityZXR1cm4gYSBzaW5nbGUgYXJndW1lbnQgd2hpY2ggaXMgYSBwb2ludGVyIHRvIGEgc3RydWN0IG1lbWJlciBpbiB0aGUKK2NhbGxiYWNrLgorCitjb250YWluZXJfb2YoKSBpcyBhIG1hY3JvIGRlZmluZWQgaW4gPGxpbnV4L2tlcm5lbC5oPgorCitXaGF0IGNvbnRhaW5lcl9vZigpIGRvZXMgaXMgdG8gb2J0YWluIGEgcG9pbnRlciB0byB0aGUgY29udGFpbmluZyBzdHJ1Y3QgZnJvbQorYSBwb2ludGVyIHRvIGEgbWVtYmVyIGJ5IGEgc2ltcGxlIHN1YnRyYWN0aW9uIHVzaW5nIHRoZSBvZmZzZXRvZigpIG1hY3JvIGZyb20KK3N0YW5kYXJkIEMsIHdoaWNoIGFsbG93cyBzb21ldGhpbmcgc2ltaWxhciB0byBvYmplY3Qgb3JpZW50ZWQgYmVoYXZpb3Vycy4KK05vdGljZSB0aGF0IHRoZSBjb250YWluZWQgbWVtYmVyIG11c3Qgbm90IGJlIGEgcG9pbnRlciwgYnV0IGFuIGFjdHVhbCBtZW1iZXIKK2ZvciB0aGlzIHRvIHdvcmsuCisKK1dlIGNhbiBzZWUgaGVyZSB0aGF0IHdlIGF2b2lkIGhhdmluZyBnbG9iYWwgcG9pbnRlcnMgdG8gb3VyIHN0cnVjdCBmb28gKgoraW5zdGFuY2UgdGhpcyB3YXksIHdoaWxlIHN0aWxsIGtlZXBpbmcgdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzIHBhc3NlZCB0byB0aGUKK3dvcmsgZnVuY3Rpb24gdG8gYSBzaW5nbGUgcG9pbnRlci4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHJpdmVyLW1vZGVsL2RldmljZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1tb2RlbC9kZXZpY2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlNzAyMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1tb2RlbC9kZXZpY2UudHh0CkBAIC0wLDAgKzEsMTA2IEBACisKK1RoZSBCYXNpYyBEZXZpY2UgU3RydWN0dXJlCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitTZWUgdGhlIGtlcm5lbGRvYyBmb3IgdGhlIHN0cnVjdCBkZXZpY2UuCisKKworUHJvZ3JhbW1pbmcgSW50ZXJmYWNlCit+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK1RoZSBidXMgZHJpdmVyIHRoYXQgZGlzY292ZXJzIHRoZSBkZXZpY2UgdXNlcyB0aGlzIHRvIHJlZ2lzdGVyIHRoZQorZGV2aWNlIHdpdGggdGhlIGNvcmU6CisKK2ludCBkZXZpY2VfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqIGRldik7CisKK1RoZSBidXMgc2hvdWxkIGluaXRpYWxpemUgdGhlIGZvbGxvd2luZyBmaWVsZHM6CisKKyAgICAtIHBhcmVudAorICAgIC0gbmFtZQorICAgIC0gYnVzX2lkCisgICAgLSBidXMKKworQSBkZXZpY2UgaXMgcmVtb3ZlZCBmcm9tIHRoZSBjb3JlIHdoZW4gaXRzIHJlZmVyZW5jZSBjb3VudCBnb2VzIHRvCiswLiBUaGUgcmVmZXJlbmNlIGNvdW50IGNhbiBiZSBhZGp1c3RlZCB1c2luZzoKKworc3RydWN0IGRldmljZSAqIGdldF9kZXZpY2Uoc3RydWN0IGRldmljZSAqIGRldik7Cit2b2lkIHB1dF9kZXZpY2Uoc3RydWN0IGRldmljZSAqIGRldik7CisKK2dldF9kZXZpY2UoKSB3aWxsIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHN0cnVjdCBkZXZpY2UgcGFzc2VkIHRvIGl0CitpZiB0aGUgcmVmZXJlbmNlIGlzIG5vdCBhbHJlYWR5IDAgKGlmIGl0J3MgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcKK3JlbW92ZWQgYWxyZWFkeSkuCisKK0EgZHJpdmVyIGNhbiBhY2Nlc3MgdGhlIGxvY2sgaW4gdGhlIGRldmljZSBzdHJ1Y3R1cmUgdXNpbmc6IAorCit2b2lkIGxvY2tfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKiBkZXYpOwordm9pZCB1bmxvY2tfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKiBkZXYpOworCisKK0F0dHJpYnV0ZXMKK35+fn5+fn5+fn4KK3N0cnVjdCBkZXZpY2VfYXR0cmlidXRlIHsKKwlzdHJ1Y3QgYXR0cmlidXRlCWF0dHI7CisJc3NpemVfdCAoKnNob3cpKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQljaGFyICpidWYpOworCXNzaXplX3QgKCpzdG9yZSkoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCSBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCk7Cit9OworCitBdHRyaWJ1dGVzIG9mIGRldmljZXMgY2FuIGJlIGV4cG9ydGVkIGJ5IGEgZGV2aWNlIGRyaXZlciB0aHJvdWdoIHN5c2ZzLgorCitQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvc3lzZnMudHh0IGZvciBtb3JlIGluZm9ybWF0aW9uCitvbiBob3cgc3lzZnMgd29ya3MuCisKK0FzIGV4cGxhaW5lZCBpbiBEb2N1bWVudGF0aW9uL2tvYmplY3QudHh0LCBkZXZpY2UgYXR0cmlidXRlcyBtdXN0IGJlIGJlCitjcmVhdGVkIGJlZm9yZSB0aGUgS09CSl9BREQgdWV2ZW50IGlzIGdlbmVyYXRlZC4gVGhlIG9ubHkgd2F5IHRvIHJlYWxpemUKK3RoYXQgaXMgYnkgZGVmaW5pbmcgYW4gYXR0cmlidXRlIGdyb3VwLgorCitBdHRyaWJ1dGVzIGFyZSBkZWNsYXJlZCB1c2luZyBhIG1hY3JvIGNhbGxlZCBERVZJQ0VfQVRUUjoKKworI2RlZmluZSBERVZJQ0VfQVRUUihuYW1lLG1vZGUsc2hvdyxzdG9yZSkKKworRXhhbXBsZToKKworc3RhdGljIERFVklDRV9BVFRSKHR5cGUsIDA0NDQsIHNob3dfdHlwZSwgTlVMTCk7CitzdGF0aWMgREVWSUNFX0FUVFIocG93ZXIsIDA2NDQsIHNob3dfcG93ZXIsIHN0b3JlX3Bvd2VyKTsKKworVGhpcyBkZWNsYXJlcyB0d28gc3RydWN0dXJlcyBvZiB0eXBlIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIHdpdGggcmVzcGVjdGl2ZQorbmFtZXMgJ2Rldl9hdHRyX3R5cGUnIGFuZCAnZGV2X2F0dHJfcG93ZXInLiBUaGVzZSB0d28gYXR0cmlidXRlcyBjYW4gYmUKK29yZ2FuaXplZCBhcyBmb2xsb3dzIGludG8gYSBncm91cDoKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRldl9hdHRyc1tdID0geworCSZkZXZfYXR0cl90eXBlLmF0dHIsCisJJmRldl9hdHRyX3Bvd2VyLmF0dHIsCisJTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGRldl9hdHRyX2dyb3VwID0geworCS5hdHRycyA9IGRldl9hdHRycywKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpkZXZfYXR0cl9ncm91cHNbXSA9IHsKKwkmZGV2X2F0dHJfZ3JvdXAsCisJTlVMTCwKK307CisKK1RoaXMgYXJyYXkgb2YgZ3JvdXBzIGNhbiB0aGVuIGJlIGFzc29jaWF0ZWQgd2l0aCBhIGRldmljZSBieSBzZXR0aW5nIHRoZQorZ3JvdXAgcG9pbnRlciBpbiBzdHJ1Y3QgZGV2aWNlIGJlZm9yZSBkZXZpY2VfcmVnaXN0ZXIoKSBpcyBpbnZva2VkOgorCisgICAgICBkZXYtPmdyb3VwcyA9IGRldl9hdHRyX2dyb3VwczsKKyAgICAgIGRldmljZV9yZWdpc3RlcihkZXYpOworCitUaGUgZGV2aWNlX3JlZ2lzdGVyKCkgZnVuY3Rpb24gd2lsbCB1c2UgdGhlICdncm91cHMnIHBvaW50ZXIgdG8gY3JlYXRlIHRoZQorZGV2aWNlIGF0dHJpYnV0ZXMgYW5kIHRoZSBkZXZpY2VfdW5yZWdpc3RlcigpIGZ1bmN0aW9uIHdpbGwgdXNlIHRoaXMgcG9pbnRlcgordG8gcmVtb3ZlIHRoZSBkZXZpY2UgYXR0cmlidXRlcy4KKworV29yZCBvZiB3YXJuaW5nOiAgV2hpbGUgdGhlIGtlcm5lbCBhbGxvd3MgZGV2aWNlX2NyZWF0ZV9maWxlKCkgYW5kCitkZXZpY2VfcmVtb3ZlX2ZpbGUoKSB0byBiZSBjYWxsZWQgb24gYSBkZXZpY2UgYXQgYW55IHRpbWUsIHVzZXJzcGFjZSBoYXMKK3N0cmljdCBleHBlY3RhdGlvbnMgb24gd2hlbiBhdHRyaWJ1dGVzIGdldCBjcmVhdGVkLiAgV2hlbiBhIG5ldyBkZXZpY2UgaXMKK3JlZ2lzdGVyZWQgaW4gdGhlIGtlcm5lbCwgYSB1ZXZlbnQgaXMgZ2VuZXJhdGVkIHRvIG5vdGlmeSB1c2Vyc3BhY2UgKGxpa2UKK3VkZXYpIHRoYXQgYSBuZXcgZGV2aWNlIGlzIGF2YWlsYWJsZS4gIElmIGF0dHJpYnV0ZXMgYXJlIGFkZGVkIGFmdGVyIHRoZQorZGV2aWNlIGlzIHJlZ2lzdGVyZWQsIHRoZW4gdXNlcnNwYWNlIHdvbid0IGdldCBub3RpZmllZCBhbmQgdXNlcnNwYWNlIHdpbGwKK25vdCBrbm93IGFib3V0IHRoZSBuZXcgYXR0cmlidXRlcy4KKworVGhpcyBpcyBpbXBvcnRhbnQgZm9yIGRldmljZSBkcml2ZXIgdGhhdCBuZWVkIHRvIHB1Ymxpc2ggYWRkaXRpb25hbAorYXR0cmlidXRlcyBmb3IgYSBkZXZpY2UgYXQgZHJpdmVyIHByb2JlIHRpbWUuICBJZiB0aGUgZGV2aWNlIGRyaXZlciBzaW1wbHkKK2NhbGxzIGRldmljZV9jcmVhdGVfZmlsZSgpIG9uIHRoZSBkZXZpY2Ugc3RydWN0dXJlIHBhc3NlZCB0byBpdCwgdGhlbgordXNlcnNwYWNlIHdpbGwgbmV2ZXIgYmUgbm90aWZpZWQgb2YgdGhlIG5ldyBhdHRyaWJ1dGVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItbW9kZWwvZGV2cmVzLnR4dCBiL0RvY3VtZW50YXRpb24vZHJpdmVyLW1vZGVsL2RldnJlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMxYTUzNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZHJpdmVyLW1vZGVsL2RldnJlcy50eHQKQEAgLTAsMCArMSwzNDEgQEAKK0RldnJlcyAtIE1hbmFnZWQgRGV2aWNlIFJlc291cmNlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUZWp1biBIZW8JPHRlaGVvQHN1c2UuZGU+CisKK0ZpcnN0IGRyYWZ0CTEwIEphbnVhcnkgMjAwNworCisKKzEuIEludHJvCQkJOiBIdWg/IERldnJlcz8KKzIuIERldnJlcwkJCTogRGV2cmVzIGluIGEgbnV0c2hlbGwKKzMuIERldnJlcyBHcm91cAkJCTogR3JvdXAgZGV2cmVzJ2VzIGFuZCByZWxlYXNlIHRoZW0gdG9nZXRoZXIKKzQuIERldGFpbHMJCQk6IExpZmUgdGltZSBydWxlcywgY2FsbGluZyBjb250ZXh0LCAuLi4KKzUuIE92ZXJoZWFkCQkJOiBIb3cgbXVjaCBkbyB3ZSBoYXZlIHRvIHBheSBmb3IgdGhpcz8KKzYuIExpc3Qgb2YgbWFuYWdlZCBpbnRlcmZhY2VzCTogQ3VycmVudGx5IGltcGxlbWVudGVkIG1hbmFnZWQgaW50ZXJmYWNlcworCisKKyAgMS4gSW50cm8KKyAgLS0tLS0tLS0KKworZGV2cmVzIGNhbWUgdXAgd2hpbGUgdHJ5aW5nIHRvIGNvbnZlcnQgbGliYXRhIHRvIHVzZSBpb21hcC4gIEVhY2gKK2lvbWFwcGVkIGFkZHJlc3Mgc2hvdWxkIGJlIGtlcHQgYW5kIHVubWFwcGVkIG9uIGRyaXZlciBkZXRhY2guICBGb3IKK2V4YW1wbGUsIGEgcGxhaW4gU0ZGIEFUQSBjb250cm9sbGVyICh0aGF0IGlzLCBnb29kIG9sZCBQQ0kgSURFKSBpbgorbmF0aXZlIG1vZGUgbWFrZXMgdXNlIG9mIDUgUENJIEJBUnMgYW5kIGFsbCBvZiB0aGVtIHNob3VsZCBiZQorbWFpbnRhaW5lZC4KKworQXMgd2l0aCBtYW55IG90aGVyIGRldmljZSBkcml2ZXJzLCBsaWJhdGEgbG93IGxldmVsIGRyaXZlcnMgaGF2ZQorc3VmZmljaWVudCBidWdzIGluIC0+cmVtb3ZlIGFuZCAtPnByb2JlIGZhaWx1cmUgcGF0aC4gIFdlbGwsIHllcywKK3RoYXQncyBwcm9iYWJseSBiZWNhdXNlIGxpYmF0YSBsb3cgbGV2ZWwgZHJpdmVyIGRldmVsb3BlcnMgYXJlIGxhenkKK2J1bmNoLCBidXQgYXJlbid0IGFsbCBsb3cgbGV2ZWwgZHJpdmVyIGRldmVsb3BlcnM/ICBBZnRlciBzcGVuZGluZyBhCitkYXkgZmlkZGxpbmcgd2l0aCBicmFpbmRhbWFnZWQgaGFyZHdhcmUgd2l0aCBubyBkb2N1bWVudCBvcgorYnJhaW5kYW1hZ2VkIGRvY3VtZW50LCBpZiBpdCdzIGZpbmFsbHkgd29ya2luZywgd2VsbCwgaXQncyB3b3JraW5nLgorCitGb3Igb25lIHJlYXNvbiBvciBhbm90aGVyLCBsb3cgbGV2ZWwgZHJpdmVycyBkb24ndCByZWNlaXZlIGFzIG11Y2gKK2F0dGVudGlvbiBvciB0ZXN0aW5nIGFzIGNvcmUgY29kZSwgYW5kIGJ1Z3Mgb24gZHJpdmVyIGRldGFjaCBvcgoraW5pdGlhbGl6YXRpb24gZmFpbHVyZSBkb24ndCBoYXBwZW4gb2Z0ZW4gZW5vdWdoIHRvIGJlIG5vdGljZWFibGUuCitJbml0IGZhaWx1cmUgcGF0aCBpcyB3b3JzZSBiZWNhdXNlIGl0J3MgbXVjaCBsZXNzIHRyYXZlbGxlZCB3aGlsZQorbmVlZHMgdG8gaGFuZGxlIG11bHRpcGxlIGVudHJ5IHBvaW50cy4KKworU28sIG1hbnkgbG93IGxldmVsIGRyaXZlcnMgZW5kIHVwIGxlYWtpbmcgcmVzb3VyY2VzIG9uIGRyaXZlciBkZXRhY2gKK2FuZCBoYXZpbmcgaGFsZiBicm9rZW4gZmFpbHVyZSBwYXRoIGltcGxlbWVudGF0aW9uIGluIC0+cHJvYmUoKSB3aGljaAord291bGQgbGVhayByZXNvdXJjZXMgb3IgZXZlbiBjYXVzZSBvb3BzIHdoZW4gZmFpbHVyZSBvY2N1cnMuICBpb21hcAorYWRkcyBtb3JlIHRvIHRoaXMgbWl4LiAgU28gZG8gbXNpIGFuZCBtc2l4LgorCisKKyAgMi4gRGV2cmVzCisgIC0tLS0tLS0tLQorCitkZXZyZXMgaXMgYmFzaWNhbGx5IGxpbmtlZCBsaXN0IG9mIGFyYml0cmFyaWx5IHNpemVkIG1lbW9yeSBhcmVhcworYXNzb2NpYXRlZCB3aXRoIGEgc3RydWN0IGRldmljZS4gIEVhY2ggZGV2cmVzIGVudHJ5IGlzIGFzc29jaWF0ZWQgd2l0aAorYSByZWxlYXNlIGZ1bmN0aW9uLiAgQSBkZXZyZXMgY2FuIGJlIHJlbGVhc2VkIGluIHNldmVyYWwgd2F5cy4gIE5vCittYXR0ZXIgd2hhdCwgYWxsIGRldnJlcyBlbnRyaWVzIGFyZSByZWxlYXNlZCBvbiBkcml2ZXIgZGV0YWNoLiAgT24KK3JlbGVhc2UsIHRoZSBhc3NvY2lhdGVkIHJlbGVhc2UgZnVuY3Rpb24gaXMgaW52b2tlZCBhbmQgdGhlbiB0aGUKK2RldnJlcyBlbnRyeSBpcyBmcmVlZC4KKworTWFuYWdlZCBpbnRlcmZhY2UgaXMgY3JlYXRlZCBmb3IgcmVzb3VyY2VzIGNvbW1vbmx5IHVzZWQgYnkgZGV2aWNlCitkcml2ZXJzIHVzaW5nIGRldnJlcy4gIEZvciBleGFtcGxlLCBjb2hlcmVudCBETUEgbWVtb3J5IGlzIGFjcXVpcmVkCit1c2luZyBkbWFfYWxsb2NfY29oZXJlbnQoKS4gIFRoZSBtYW5hZ2VkIHZlcnNpb24gaXMgY2FsbGVkCitkbWFtX2FsbG9jX2NvaGVyZW50KCkuICBJdCBpcyBpZGVudGljYWwgdG8gZG1hX2FsbG9jX2NvaGVyZW50KCkgZXhjZXB0Citmb3IgdGhlIERNQSBtZW1vcnkgYWxsb2NhdGVkIHVzaW5nIGl0IGlzIG1hbmFnZWQgYW5kIHdpbGwgYmUKK2F1dG9tYXRpY2FsbHkgcmVsZWFzZWQgb24gZHJpdmVyIGRldGFjaC4gIEltcGxlbWVudGF0aW9uIGxvb2tzIGxpa2UKK3RoZSBmb2xsb3dpbmcuCisKKyAgc3RydWN0IGRtYV9kZXZyZXMgeworCXNpemVfdAkJc2l6ZTsKKwl2b2lkCQkqdmFkZHI7CisJZG1hX2FkZHJfdAlkbWFfaGFuZGxlOworICB9OworCisgIHN0YXRpYyB2b2lkIGRtYW1fY29oZXJlbnRfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnJlcykKKyAgeworCXN0cnVjdCBkbWFfZGV2cmVzICp0aGlzID0gcmVzOworCisJZG1hX2ZyZWVfY29oZXJlbnQoZGV2LCB0aGlzLT5zaXplLCB0aGlzLT52YWRkciwgdGhpcy0+ZG1hX2hhbmRsZSk7CisgIH0KKworICBkbWFtX2FsbG9jX2NvaGVyZW50KGRldiwgc2l6ZSwgZG1hX2hhbmRsZSwgZ2ZwKQorICB7CisJc3RydWN0IGRtYV9kZXZyZXMgKmRyOworCXZvaWQgKnZhZGRyOworCisJZHIgPSBkZXZyZXNfYWxsb2MoZG1hbV9jb2hlcmVudF9yZWxlYXNlLCBzaXplb2YoKmRyKSwgZ2ZwKTsKKwkuLi4KKworCS8qIGFsbG9jIERNQSBtZW1vcnkgYXMgdXN1YWwgKi8KKwl2YWRkciA9IGRtYV9hbGxvY19jb2hlcmVudCguLi4pOworCS4uLgorCisJLyogcmVjb3JkIHNpemUsIHZhZGRyLCBkbWFfaGFuZGxlIGluIGRyICovCisJZHItPnZhZGRyID0gdmFkZHI7CisJLi4uCisKKwlkZXZyZXNfYWRkKGRldiwgZHIpOworCisJcmV0dXJuIHZhZGRyOworICB9CisKK0lmIGEgZHJpdmVyIHVzZXMgZG1hbV9hbGxvY19jb2hlcmVudCgpLCB0aGUgYXJlYSBpcyBndWFyYW50ZWVkIHRvIGJlCitmcmVlZCB3aGV0aGVyIGluaXRpYWxpemF0aW9uIGZhaWxzIGhhbGYtd2F5IG9yIHRoZSBkZXZpY2UgZ2V0cworZGV0YWNoZWQuICBJZiBtb3N0IHJlc291cmNlcyBhcmUgYWNxdWlyZWQgdXNpbmcgbWFuYWdlZCBpbnRlcmZhY2UsIGEKK2RyaXZlciBjYW4gaGF2ZSBtdWNoIHNpbXBsZXIgaW5pdCBhbmQgZXhpdCBjb2RlLiAgSW5pdCBwYXRoIGJhc2ljYWxseQorbG9va3MgbGlrZSB0aGUgZm9sbG93aW5nLgorCisgIG15X2luaXRfb25lKCkKKyAgeworCXN0cnVjdCBteWRldiAqZDsKKworCWQgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmQpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWQpCisJCXJldHVybiAtRU5PTUVNOworCisJZC0+cmluZyA9IGRtYW1fYWxsb2NfY29oZXJlbnQoLi4uKTsKKwlpZiAoIWQtPnJpbmcpCisJCXJldHVybiAtRU5PTUVNOworCisJaWYgKGNoZWNrIHNvbWV0aGluZykKKwkJcmV0dXJuIC1FSU5WQUw7CisJLi4uCisKKwlyZXR1cm4gcmVnaXN0ZXJfdG9fdXBwZXJfbGF5ZXIoZCk7CisgIH0KKworQW5kIGV4aXQgcGF0aCwKKworICBteV9yZW1vdmVfb25lKCkKKyAgeworCXVucmVnaXN0ZXJfZnJvbV91cHBlcl9sYXllcihkKTsKKwlzaHV0ZG93bl9teV9oYXJkd2FyZSgpOworICB9CisKK0FzIHNob3duIGFib3ZlLCBsb3cgbGV2ZWwgZHJpdmVycyBjYW4gYmUgc2ltcGxpZmllZCBhIGxvdCBieSB1c2luZworZGV2cmVzLiAgQ29tcGxleGl0eSBpcyBzaGlmdGVkIGZyb20gbGVzcyBtYWludGFpbmVkIGxvdyBsZXZlbCBkcml2ZXJzCit0byBiZXR0ZXIgbWFpbnRhaW5lZCBoaWdoZXIgbGF5ZXIuICBBbHNvLCBhcyBpbml0IGZhaWx1cmUgcGF0aCBpcworc2hhcmVkIHdpdGggZXhpdCBwYXRoLCBib3RoIGNhbiBnZXQgbW9yZSB0ZXN0aW5nLgorCisKKyAgMy4gRGV2cmVzIGdyb3VwCisgIC0tLS0tLS0tLS0tLS0tLQorCitEZXZyZXMgZW50cmllcyBjYW4gYmUgZ3JvdXBlZCB1c2luZyBkZXZyZXMgZ3JvdXAuICBXaGVuIGEgZ3JvdXAgaXMKK3JlbGVhc2VkLCBhbGwgY29udGFpbmVkIG5vcm1hbCBkZXZyZXMgZW50cmllcyBhbmQgcHJvcGVybHkgbmVzdGVkCitncm91cHMgYXJlIHJlbGVhc2VkLiAgT25lIHVzYWdlIGlzIHRvIHJvbGxiYWNrIHNlcmllcyBvZiBhY3F1aXJlZAorcmVzb3VyY2VzIG9uIGZhaWx1cmUuICBGb3IgZXhhbXBsZSwKKworICBpZiAoIWRldnJlc19vcGVuX2dyb3VwKGRldiwgTlVMTCwgR0ZQX0tFUk5FTCkpCisJcmV0dXJuIC1FTk9NRU07CisKKyAgYWNxdWlyZSBBOworICBpZiAoZmFpbGVkKQorCWdvdG8gZXJyOworCisgIGFjcXVpcmUgQjsKKyAgaWYgKGZhaWxlZCkKKwlnb3RvIGVycjsKKyAgLi4uCisKKyAgZGV2cmVzX3JlbW92ZV9ncm91cChkZXYsIE5VTEwpOworICByZXR1cm4gMDsKKworIGVycjoKKyAgZGV2cmVzX3JlbGVhc2VfZ3JvdXAoZGV2LCBOVUxMKTsKKyAgcmV0dXJuIGVycl9jb2RlOworCitBcyByZXNvdXJjZSBhY3F1aXNpdGlvbiBmYWlsdXJlIHVzdWFsbHkgbWVhbnMgcHJvYmUgZmFpbHVyZSwgY29uc3RydWN0cworbGlrZSBhYm92ZSBhcmUgdXN1YWxseSB1c2VmdWwgaW4gbWlkbGF5ZXIgZHJpdmVyIChlLmcuIGxpYmF0YSBjb3JlCitsYXllcikgd2hlcmUgaW50ZXJmYWNlIGZ1bmN0aW9uIHNob3VsZG4ndCBoYXZlIHNpZGUgZWZmZWN0IG9uIGZhaWx1cmUuCitGb3IgTExEcywganVzdCByZXR1cm5pbmcgZXJyb3IgY29kZSBzdWZmaWNlcyBpbiBtb3N0IGNhc2VzLgorCitFYWNoIGdyb3VwIGlzIGlkZW50aWZpZWQgYnkgdm9pZCAqaWQuICBJdCBjYW4gZWl0aGVyIGJlIGV4cGxpY2l0bHkKK3NwZWNpZmllZCBieSBAaWQgYXJndW1lbnQgdG8gZGV2cmVzX29wZW5fZ3JvdXAoKSBvciBhdXRvbWF0aWNhbGx5CitjcmVhdGVkIGJ5IHBhc3NpbmcgTlVMTCBhcyBAaWQgYXMgaW4gdGhlIGFib3ZlIGV4YW1wbGUuICBJbiBib3RoCitjYXNlcywgZGV2cmVzX29wZW5fZ3JvdXAoKSByZXR1cm5zIHRoZSBncm91cCdzIGlkLiAgVGhlIHJldHVybmVkIGlkCitjYW4gYmUgcGFzc2VkIHRvIG90aGVyIGRldnJlcyBmdW5jdGlvbnMgdG8gc2VsZWN0IHRoZSB0YXJnZXQgZ3JvdXAuCitJZiBOVUxMIGlzIGdpdmVuIHRvIHRob3NlIGZ1bmN0aW9ucywgdGhlIGxhdGVzdCBvcGVuIGdyb3VwIGlzCitzZWxlY3RlZC4KKworRm9yIGV4YW1wbGUsIHlvdSBjYW4gZG8gc29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZy4KKworICBpbnQgbXlfbWlkbGF5ZXJfY3JlYXRlX3NvbWV0aGluZygpCisgIHsKKwlpZiAoIWRldnJlc19vcGVuX2dyb3VwKGRldiwgbXlfbWlkbGF5ZXJfY3JlYXRlX3NvbWV0aGluZywgR0ZQX0tFUk5FTCkpCisJCXJldHVybiAtRU5PTUVNOworCisJLi4uCisKKwlkZXZyZXNfY2xvc2VfZ3JvdXAoZGV2LCBteV9taWRsYXllcl9jcmVhdGVfc29tZXRoaW5nKTsKKwlyZXR1cm4gMDsKKyAgfQorCisgIHZvaWQgbXlfbWlkbGF5ZXJfZGVzdHJveV9zb21ldGhpbmcoKQorICB7CisJZGV2cmVzX3JlbGVhc2VfZ3JvdXAoZGV2LCBteV9taWRsYXllcl9jcmVhdGVfc29tZXRoaW5nKTsKKyAgfQorCisKKyAgNC4gRGV0YWlscworICAtLS0tLS0tLS0tCisKK0xpZmV0aW1lIG9mIGEgZGV2cmVzIGVudHJ5IGJlZ2lucyBvbiBkZXZyZXMgYWxsb2NhdGlvbiBhbmQgZmluaXNoZXMKK3doZW4gaXQgaXMgcmVsZWFzZWQgb3IgZGVzdHJveWVkIChyZW1vdmVkIGFuZCBmcmVlZCkgLSBubyByZWZlcmVuY2UKK2NvdW50aW5nLgorCitkZXZyZXMgY29yZSBndWFyYW50ZWVzIGF0b21pY2l0eSB0byBhbGwgYmFzaWMgZGV2cmVzIG9wZXJhdGlvbnMgYW5kCitoYXMgc3VwcG9ydCBmb3Igc2luZ2xlLWluc3RhbmNlIGRldnJlcyB0eXBlcyAoYXRvbWljCitsb29rdXAtYW5kLWFkZC1pZi1ub3QtZm91bmQpLiAgT3RoZXIgdGhhbiB0aGF0LCBzeW5jaHJvbml6aW5nCitjb25jdXJyZW50IGFjY2Vzc2VzIHRvIGFsbG9jYXRlZCBkZXZyZXMgZGF0YSBpcyBjYWxsZXIncworcmVzcG9uc2liaWxpdHkuICBUaGlzIGlzIHVzdWFsbHkgbm9uLWlzc3VlIGJlY2F1c2UgYnVzIG9wcyBhbmQKK3Jlc291cmNlIGFsbG9jYXRpb25zIGFscmVhZHkgZG8gdGhlIGpvYi4KKworRm9yIGFuIGV4YW1wbGUgb2Ygc2luZ2xlLWluc3RhbmNlIGRldnJlcyB0eXBlLCByZWFkIHBjaW1faW9tYXBfdGFibGUoKQoraW4gbGliL2RldnJlcy5jLgorCitBbGwgZGV2cmVzIGludGVyZmFjZSBmdW5jdGlvbnMgY2FuIGJlIGNhbGxlZCB3aXRob3V0IGNvbnRleHQgaWYgdGhlCityaWdodCBnZnAgbWFzayBpcyBnaXZlbi4KKworCisgIDUuIE92ZXJoZWFkCisgIC0tLS0tLS0tLS0tCisKK0VhY2ggZGV2cmVzIGJvb2trZWVwaW5nIGluZm8gaXMgYWxsb2NhdGVkIHRvZ2V0aGVyIHdpdGggcmVxdWVzdGVkIGRhdGEKK2FyZWEuICBXaXRoIGRlYnVnIG9wdGlvbiB0dXJuZWQgb2ZmLCBib29ra2VlcGluZyBpbmZvIG9jY3VwaWVzIDE2CitieXRlcyBvbiAzMmJpdCBtYWNoaW5lcyBhbmQgMjQgYnl0ZXMgb24gNjRiaXQgKHRocmVlIHBvaW50ZXJzIHJvdW5kZWQKK3VwIHRvIHVsbCBhbGlnbm1lbnQpLiAgSWYgc2luZ2x5IGxpbmtlZCBsaXN0IGlzIHVzZWQsIGl0IGNhbiBiZQorcmVkdWNlZCB0byB0d28gcG9pbnRlcnMgKDggYnl0ZXMgb24gMzJiaXQsIDE2IGJ5dGVzIG9uIDY0Yml0KS4KKworRWFjaCBkZXZyZXMgZ3JvdXAgb2NjdXBpZXMgOCBwb2ludGVycy4gIEl0IGNhbiBiZSByZWR1Y2VkIHRvIDYgaWYKK3NpbmdseSBsaW5rZWQgbGlzdCBpcyB1c2VkLgorCitNZW1vcnkgc3BhY2Ugb3ZlcmhlYWQgb24gYWhjaSBjb250cm9sbGVyIHdpdGggdHdvIHBvcnRzIGlzIGJldHdlZW4gMzAwCithbmQgNDAwIGJ5dGVzIG9uIDMyYml0IG1hY2hpbmUgYWZ0ZXIgbmFpdmUgY29udmVyc2lvbiAod2UgY2FuCitjZXJ0YWlubHkgaW52ZXN0IGEgYml0IG1vcmUgZWZmb3J0IGludG8gbGliYXRhIGNvcmUgbGF5ZXIpLgorCisKKyAgNi4gTGlzdCBvZiBtYW5hZ2VkIGludGVyZmFjZXMKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ0xPQ0sKKyAgZGV2bV9jbGtfZ2V0KCkKKyAgZGV2bV9jbGtfcHV0KCkKKworRE1BCisgIGRtYW1fYWxsb2NfY29oZXJlbnQoKQorICBkbWFtX2FsbG9jX25vbmNvaGVyZW50KCkKKyAgZG1hbV9kZWNsYXJlX2NvaGVyZW50X21lbW9yeSgpCisgIGRtYW1fZnJlZV9jb2hlcmVudCgpCisgIGRtYW1fZnJlZV9ub25jb2hlcmVudCgpCisgIGRtYW1fcG9vbF9jcmVhdGUoKQorICBkbWFtX3Bvb2xfZGVzdHJveSgpCisKK0dQSU8KKyAgZGV2bV9ncGlvZF9nZXQoKQorICBkZXZtX2dwaW9kX2dldF9pbmRleCgpCisgIGRldm1fZ3Bpb2RfZ2V0X2luZGV4X29wdGlvbmFsKCkKKyAgZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoKQorICBkZXZtX2dwaW9kX3B1dCgpCisKK0lJTworICBkZXZtX2lpb19kZXZpY2VfYWxsb2MoKQorICBkZXZtX2lpb19kZXZpY2VfZnJlZSgpCisgIGRldm1faWlvX2RldmljZV9yZWdpc3RlcigpCisgIGRldm1faWlvX2RldmljZV91bnJlZ2lzdGVyKCkKKyAgZGV2bV9paW9fa2ZpZm9fYWxsb2NhdGUoKQorICBkZXZtX2lpb19rZmlmb19mcmVlKCkKKyAgZGV2bV9paW9fdHJpZ2dlcl9hbGxvYygpCisgIGRldm1faWlvX3RyaWdnZXJfZnJlZSgpCisKK0lPIHJlZ2lvbgorICBkZXZtX3JlbGVhc2VfbWVtX3JlZ2lvbigpCisgIGRldm1fcmVsZWFzZV9yZWdpb24oKQorICBkZXZtX3JlbGVhc2VfcmVzb3VyY2UoKQorICBkZXZtX3JlcXVlc3RfbWVtX3JlZ2lvbigpCisgIGRldm1fcmVxdWVzdF9yZWdpb24oKQorICBkZXZtX3JlcXVlc3RfcmVzb3VyY2UoKQorCitJT01BUAorICBkZXZtX2lvcG9ydF9tYXAoKQorICBkZXZtX2lvcG9ydF91bm1hcCgpCisgIGRldm1faW9yZW1hcCgpCisgIGRldm1faW9yZW1hcF9ub2NhY2hlKCkKKyAgZGV2bV9pb3JlbWFwX3djKCkKKyAgZGV2bV9pb3JlbWFwX3Jlc291cmNlKCkgOiBjaGVja3MgcmVzb3VyY2UsIHJlcXVlc3RzIG1lbW9yeSByZWdpb24sIGlvcmVtYXBzCisgIGRldm1faW91bm1hcCgpCisgIHBjaW1faW9tYXAoKQorICBwY2ltX2lvbWFwX3JlZ2lvbnMoKQk6IGRvIHJlcXVlc3RfcmVnaW9uKCkgYW5kIGlvbWFwKCkgb24gbXVsdGlwbGUgQkFScworICBwY2ltX2lvbWFwX3RhYmxlKCkJOiBhcnJheSBvZiBtYXBwZWQgYWRkcmVzc2VzIGluZGV4ZWQgYnkgQkFSCisgIHBjaW1faW91bm1hcCgpCisKK0lSUQorICBkZXZtX2ZyZWVfaXJxKCkKKyAgZGV2bV9yZXF1ZXN0X2FueV9jb250ZXh0X2lycSgpCisgIGRldm1fcmVxdWVzdF9pcnEoKQorICBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKCkKKworTEVECisgIGRldm1fbGVkX2NsYXNzZGV2X3JlZ2lzdGVyKCkKKyAgZGV2bV9sZWRfY2xhc3NkZXZfdW5yZWdpc3RlcigpCisKK01ESU8KKyAgZGV2bV9tZGlvYnVzX2FsbG9jKCkKKyAgZGV2bV9tZGlvYnVzX2FsbG9jX3NpemUoKQorICBkZXZtX21kaW9idXNfZnJlZSgpCisKK01FTQorICBkZXZtX2ZyZWVfcGFnZXMoKQorICBkZXZtX2dldF9mcmVlX3BhZ2VzKCkKKyAgZGV2bV9rYXNwcmludGYoKQorICBkZXZtX2tjYWxsb2MoKQorICBkZXZtX2tmcmVlKCkKKyAgZGV2bV9rbWFsbG9jKCkKKyAgZGV2bV9rbWFsbG9jX2FycmF5KCkKKyAgZGV2bV9rbWVtZHVwKCkKKyAgZGV2bV9rc3RyZHVwKCkKKyAgZGV2bV9rdmFzcHJpbnRmKCkKKyAgZGV2bV9remFsbG9jKCkKKworUENJCisgIHBjaW1fZW5hYmxlX2RldmljZSgpCTogYWZ0ZXIgc3VjY2VzcywgYWxsIFBDSSBvcHMgYmVjb21lIG1hbmFnZWQKKyAgcGNpbV9waW5fZGV2aWNlKCkJOiBrZWVwIFBDSSBkZXZpY2UgZW5hYmxlZCBhZnRlciByZWxlYXNlCisKK1BIWQorICBkZXZtX3VzYl9nZXRfcGh5KCkKKyAgZGV2bV91c2JfcHV0X3BoeSgpCisKK1BJTkNUUkwKKyAgZGV2bV9waW5jdHJsX2dldCgpCisgIGRldm1fcGluY3RybF9wdXQoKQorCitQV00KKyAgZGV2bV9wd21fZ2V0KCkKKyAgZGV2bV9wd21fcHV0KCkKKworUkVHVUxBVE9SCisgIGRldm1fcmVndWxhdG9yX2J1bGtfZ2V0KCkKKyAgZGV2bV9yZWd1bGF0b3JfZ2V0KCkKKyAgZGV2bV9yZWd1bGF0b3JfcHV0KCkKKyAgZGV2bV9yZWd1bGF0b3JfcmVnaXN0ZXIoKQorCitTTEFWRSBETUEgRU5HSU5FCisgIGRldm1fYWNwaV9kbWFfY29udHJvbGxlcl9yZWdpc3RlcigpCisKK1NQSQorICBkZXZtX3NwaV9yZWdpc3Rlcl9tYXN0ZXIoKQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItbW9kZWwvZHJpdmVyLnR4dCBiL0RvY3VtZW50YXRpb24vZHJpdmVyLW1vZGVsL2RyaXZlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQyMTEzNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZHJpdmVyLW1vZGVsL2RyaXZlci50eHQKQEAgLTAsMCArMSwyMTQgQEAKKworRGV2aWNlIERyaXZlcnMKKworU2VlIHRoZSBrZXJuZWxkb2MgZm9yIHRoZSBzdHJ1Y3QgZGV2aWNlX2RyaXZlci4KKworCitBbGxvY2F0aW9uCit+fn5+fn5+fn5+CisKK0RldmljZSBkcml2ZXJzIGFyZSBzdGF0aWNhbGx5IGFsbG9jYXRlZCBzdHJ1Y3R1cmVzLiBUaG91Z2ggdGhlcmUgbWF5CitiZSBtdWx0aXBsZSBkZXZpY2VzIGluIGEgc3lzdGVtIHRoYXQgYSBkcml2ZXIgc3VwcG9ydHMsIHN0cnVjdAorZGV2aWNlX2RyaXZlciByZXByZXNlbnRzIHRoZSBkcml2ZXIgYXMgYSB3aG9sZSAobm90IGEgcGFydGljdWxhcgorZGV2aWNlIGluc3RhbmNlKS4KKworSW5pdGlhbGl6YXRpb24KK35+fn5+fn5+fn5+fn5+CisKK1RoZSBkcml2ZXIgbXVzdCBpbml0aWFsaXplIGF0IGxlYXN0IHRoZSBuYW1lIGFuZCBidXMgZmllbGRzLiBJdCBzaG91bGQKK2Fsc28gaW5pdGlhbGl6ZSB0aGUgZGV2Y2xhc3MgZmllbGQgKHdoZW4gaXQgYXJyaXZlcyksIHNvIGl0IG1heSBvYnRhaW4KK3RoZSBwcm9wZXIgbGlua2FnZSBpbnRlcm5hbGx5LiBJdCBzaG91bGQgYWxzbyBpbml0aWFsaXplIGFzIG1hbnkgb2YKK3RoZSBjYWxsYmFja3MgYXMgcG9zc2libGUsIHRob3VnaCBlYWNoIGlzIG9wdGlvbmFsLgorCitEZWNsYXJhdGlvbgorfn5+fn5+fn5+fn4KKworQXMgc3RhdGVkIGFib3ZlLCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciBvYmplY3RzIGFyZSBzdGF0aWNhbGx5CithbGxvY2F0ZWQuIEJlbG93IGlzIGFuIGV4YW1wbGUgZGVjbGFyYXRpb24gb2YgdGhlIGVlcHJvMTAwCitkcml2ZXIuIFRoaXMgZGVjbGFyYXRpb24gaXMgaHlwb3RoZXRpY2FsIG9ubHk7IGl0IHJlbGllcyBvbiB0aGUgZHJpdmVyCitiZWluZyBjb252ZXJ0ZWQgY29tcGxldGVseSB0byB0aGUgbmV3IG1vZGVsLiAKKworc3RhdGljIHN0cnVjdCBkZXZpY2VfZHJpdmVyIGVlcHJvMTAwX2RyaXZlciA9IHsKKyAgICAgICAubmFtZQkJPSAiZWVwcm8xMDAiLAorICAgICAgIC5idXMJCT0gJnBjaV9idXNfdHlwZSwKKyAgICAgICAKKyAgICAgICAucHJvYmUJCT0gZWVwcm8xMDBfcHJvYmUsCisgICAgICAgLnJlbW92ZQkJPSBlZXBybzEwMF9yZW1vdmUsCisgICAgICAgLnN1c3BlbmQJCT0gZWVwcm8xMDBfc3VzcGVuZCwKKyAgICAgICAucmVzdW1lCQk9IGVlcHJvMTAwX3Jlc3VtZSwKK307CisKK01vc3QgZHJpdmVycyB3aWxsIG5vdCBiZSBhYmxlIHRvIGJlIGNvbnZlcnRlZCBjb21wbGV0ZWx5IHRvIHRoZSBuZXcKK21vZGVsIGJlY2F1c2UgdGhlIGJ1cyB0aGV5IGJlbG9uZyB0byBoYXMgYSBidXMtc3BlY2lmaWMgc3RydWN0dXJlIHdpdGgKK2J1cy1zcGVjaWZpYyBmaWVsZHMgdGhhdCBjYW5ub3QgYmUgZ2VuZXJhbGl6ZWQuIAorCitUaGUgbW9zdCBjb21tb24gZXhhbXBsZSBvZiB0aGlzIGFyZSBkZXZpY2UgSUQgc3RydWN0dXJlcy4gQSBkcml2ZXIKK3R5cGljYWxseSBkZWZpbmVzIGFuIGFycmF5IG9mIGRldmljZSBJRHMgdGhhdCBpdCBzdXBwb3J0cy4gVGhlIGZvcm1hdAorb2YgdGhlc2Ugc3RydWN0dXJlcyBhbmQgdGhlIHNlbWFudGljcyBmb3IgY29tcGFyaW5nIGRldmljZSBJRHMgYXJlCitjb21wbGV0ZWx5IGJ1cy1zcGVjaWZpYy4gRGVmaW5pbmcgdGhlbSBhcyBidXMtc3BlY2lmaWMgZW50aXRpZXMgd291bGQKK3NhY3JpZmljZSB0eXBlLXNhZmV0eSwgc28gd2Uga2VlcCBidXMtc3BlY2lmaWMgc3RydWN0dXJlcyBhcm91bmQuIAorCitCdXMtc3BlY2lmaWMgZHJpdmVycyBzaG91bGQgaW5jbHVkZSBhIGdlbmVyaWMgc3RydWN0IGRldmljZV9kcml2ZXIgaW4KK3RoZSBkZWZpbml0aW9uIG9mIHRoZSBidXMtc3BlY2lmaWMgZHJpdmVyLiBMaWtlIHRoaXM6CisKK3N0cnVjdCBwY2lfZHJpdmVyIHsKKyAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWRfdGFibGU7CisgICAgICAgc3RydWN0IGRldmljZV9kcml2ZXIJICBkcml2ZXI7Cit9OworCitBIGRlZmluaXRpb24gdGhhdCBpbmNsdWRlZCBidXMtc3BlY2lmaWMgZmllbGRzIHdvdWxkIGxvb2sgbGlrZQorKHVzaW5nIHRoZSBlZXBybzEwMCBkcml2ZXIgYWdhaW4pOgorCitzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgZWVwcm8xMDBfZHJpdmVyID0geworICAgICAgIC5pZF90YWJsZSAgICAgICA9IGVlcHJvMTAwX3BjaV90YmwsCisgICAgICAgLmRyaXZlcgkgICAgICAgPSB7CisJCS5uYW1lCQk9ICJlZXBybzEwMCIsCisJCS5idXMJCT0gJnBjaV9idXNfdHlwZSwKKwkJLnByb2JlCQk9IGVlcHJvMTAwX3Byb2JlLAorCQkucmVtb3ZlCQk9IGVlcHJvMTAwX3JlbW92ZSwKKwkJLnN1c3BlbmQJPSBlZXBybzEwMF9zdXNwZW5kLAorCQkucmVzdW1lCQk9IGVlcHJvMTAwX3Jlc3VtZSwKKyAgICAgICB9LAorfTsKKworU29tZSBtYXkgZmluZCB0aGUgc3ludGF4IG9mIGVtYmVkZGVkIHN0cnVjdCBpbml0aWFsaXphdGlvbiBhd2t3YXJkIG9yCitldmVuIGEgYml0IHVnbHkuIFNvIGZhciwgaXQncyB0aGUgYmVzdCB3YXkgd2UndmUgZm91bmQgdG8gZG8gd2hhdCB3ZSB3YW50Li4uCisKK1JlZ2lzdHJhdGlvbgorfn5+fn5+fn5+fn5+CisKK2ludCBkcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGRldmljZV9kcml2ZXIgKiBkcnYpOworCitUaGUgZHJpdmVyIHJlZ2lzdGVycyB0aGUgc3RydWN0dXJlIG9uIHN0YXJ0dXAuIEZvciBkcml2ZXJzIHRoYXQgaGF2ZQorbm8gYnVzLXNwZWNpZmljIGZpZWxkcyAoaS5lLiBkb24ndCBoYXZlIGEgYnVzLXNwZWNpZmljIGRyaXZlcgorc3RydWN0dXJlKSwgdGhleSB3b3VsZCB1c2UgZHJpdmVyX3JlZ2lzdGVyIGFuZCBwYXNzIGEgcG9pbnRlciB0byB0aGVpcgorc3RydWN0IGRldmljZV9kcml2ZXIgb2JqZWN0LiAKKworTW9zdCBkcml2ZXJzLCBob3dldmVyLCB3aWxsIGhhdmUgYSBidXMtc3BlY2lmaWMgc3RydWN0dXJlIGFuZCB3aWxsCituZWVkIHRvIHJlZ2lzdGVyIHdpdGggdGhlIGJ1cyB1c2luZyBzb21ldGhpbmcgbGlrZSBwY2lfZHJpdmVyX3JlZ2lzdGVyLgorCitJdCBpcyBpbXBvcnRhbnQgdGhhdCBkcml2ZXJzIHJlZ2lzdGVyIHRoZWlyIGRyaXZlciBzdHJ1Y3R1cmUgYXMgZWFybHkgYXMKK3Bvc3NpYmxlLiBSZWdpc3RyYXRpb24gd2l0aCB0aGUgY29yZSBpbml0aWFsaXplcyBzZXZlcmFsIGZpZWxkcyBpbiB0aGUKK3N0cnVjdCBkZXZpY2VfZHJpdmVyIG9iamVjdCwgaW5jbHVkaW5nIHRoZSByZWZlcmVuY2UgY291bnQgYW5kIHRoZQorbG9jay4gVGhlc2UgZmllbGRzIGFyZSBhc3N1bWVkIHRvIGJlIHZhbGlkIGF0IGFsbCB0aW1lcyBhbmQgbWF5IGJlCit1c2VkIGJ5IHRoZSBkZXZpY2UgbW9kZWwgY29yZSBvciB0aGUgYnVzIGRyaXZlci4KKworCitUcmFuc2l0aW9uIEJ1cyBEcml2ZXJzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0J5IGRlZmluaW5nIHdyYXBwZXIgZnVuY3Rpb25zLCB0aGUgdHJhbnNpdGlvbiB0byB0aGUgbmV3IG1vZGVsIGNhbiBiZQorbWFkZSBlYXNpZXIuIERyaXZlcnMgY2FuIGlnbm9yZSB0aGUgZ2VuZXJpYyBzdHJ1Y3R1cmUgYWx0b2dldGhlciBhbmQKK2xldCB0aGUgYnVzIHdyYXBwZXIgZmlsbCBpbiB0aGUgZmllbGRzLiBGb3IgdGhlIGNhbGxiYWNrcywgdGhlIGJ1cyBjYW4KK2RlZmluZSBnZW5lcmljIGNhbGxiYWNrcyB0aGF0IGZvcndhcmQgdGhlIGNhbGwgdG8gdGhlIGJ1cy1zcGVjaWZpYworY2FsbGJhY2tzIG9mIHRoZSBkcml2ZXJzLiAKKworVGhpcyBzb2x1dGlvbiBpcyBpbnRlbmRlZCB0byBiZSBvbmx5IHRlbXBvcmFyeS4gSW4gb3JkZXIgdG8gZ2V0IGNsYXNzCitpbmZvcm1hdGlvbiBpbiB0aGUgZHJpdmVyLCB0aGUgZHJpdmVycyBtdXN0IGJlIG1vZGlmaWVkIGFueXdheS4gU2luY2UKK2NvbnZlcnRpbmcgZHJpdmVycyB0byB0aGUgbmV3IG1vZGVsIHNob3VsZCByZWR1Y2Ugc29tZSBpbmZyYXN0cnVjdHVyYWwKK2NvbXBsZXhpdHkgYW5kIGNvZGUgc2l6ZSwgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGV5IGFyZSBjb252ZXJ0ZWQgYXMKK2NsYXNzIGluZm9ybWF0aW9uIGlzIGFkZGVkLgorCitBY2Nlc3MKK35+fn5+fgorCitPbmNlIHRoZSBvYmplY3QgaGFzIGJlZW4gcmVnaXN0ZXJlZCwgaXQgbWF5IGFjY2VzcyB0aGUgY29tbW9uIGZpZWxkcyBvZgordGhlIG9iamVjdCwgbGlrZSB0aGUgbG9jayBhbmQgdGhlIGxpc3Qgb2YgZGV2aWNlcy4gCisKK2ludCBkcml2ZXJfZm9yX2VhY2hfZGV2KHN0cnVjdCBkZXZpY2VfZHJpdmVyICogZHJ2LCB2b2lkICogZGF0YSwgCisJCSAgICAgICAgaW50ICgqY2FsbGJhY2spKHN0cnVjdCBkZXZpY2UgKiBkZXYsIHZvaWQgKiBkYXRhKSk7CisKK1RoZSBkZXZpY2VzIGZpZWxkIGlzIGEgbGlzdCBvZiBhbGwgdGhlIGRldmljZXMgdGhhdCBoYXZlIGJlZW4gYm91bmQgdG8KK3RoZSBkcml2ZXIuIFRoZSBMRE0gY29yZSBwcm92aWRlcyBhIGhlbHBlciBmdW5jdGlvbiB0byBvcGVyYXRlIG9uIGFsbAordGhlIGRldmljZXMgYSBkcml2ZXIgY29udHJvbHMuIFRoaXMgaGVscGVyIGxvY2tzIHRoZSBkcml2ZXIgb24gZWFjaAorbm9kZSBhY2Nlc3MsIGFuZCBkb2VzIHByb3BlciByZWZlcmVuY2UgY291bnRpbmcgb24gZWFjaCBkZXZpY2UgYXMgaXQKK2FjY2Vzc2VzIGl0LiAKKworCitzeXNmcworfn5+fn4KKworV2hlbiBhIGRyaXZlciBpcyByZWdpc3RlcmVkLCBhIHN5c2ZzIGRpcmVjdG9yeSBpcyBjcmVhdGVkIGluIGl0cworYnVzJ3MgZGlyZWN0b3J5LiBJbiB0aGlzIGRpcmVjdG9yeSwgdGhlIGRyaXZlciBjYW4gZXhwb3J0IGFuIGludGVyZmFjZQordG8gdXNlcnNwYWNlIHRvIGNvbnRyb2wgb3BlcmF0aW9uIG9mIHRoZSBkcml2ZXIgb24gYSBnbG9iYWwgYmFzaXM7CitlLmcuIHRvZ2dsaW5nIGRlYnVnZ2luZyBvdXRwdXQgaW4gdGhlIGRyaXZlci4KKworQSBmdXR1cmUgZmVhdHVyZSBvZiB0aGlzIGRpcmVjdG9yeSB3aWxsIGJlIGEgJ2RldmljZXMnIGRpcmVjdG9yeS4gVGhpcworZGlyZWN0b3J5IHdpbGwgY29udGFpbiBzeW1saW5rcyB0byB0aGUgZGlyZWN0b3JpZXMgb2YgZGV2aWNlcyBpdAorc3VwcG9ydHMuCisKKworCitDYWxsYmFja3MKK35+fn5+fn5+fgorCisJaW50CSgqcHJvYmUpCShzdHJ1Y3QgZGV2aWNlICogZGV2KTsKKworVGhlIHByb2JlKCkgZW50cnkgaXMgY2FsbGVkIGluIHRhc2sgY29udGV4dCwgd2l0aCB0aGUgYnVzJ3MgcndzZW0gbG9ja2VkCithbmQgdGhlIGRyaXZlciBwYXJ0aWFsbHkgYm91bmQgdG8gdGhlIGRldmljZS4gIERyaXZlcnMgY29tbW9ubHkgdXNlCitjb250YWluZXJfb2YoKSB0byBjb252ZXJ0ICJkZXYiIHRvIGEgYnVzLXNwZWNpZmljIHR5cGUsIGJvdGggaW4gcHJvYmUoKQorYW5kIG90aGVyIHJvdXRpbmVzLiAgVGhhdCB0eXBlIG9mdGVuIHByb3ZpZGVzIGRldmljZSByZXNvdXJjZSBkYXRhLCBzdWNoCithcyBwY2lfZGV2LnJlc291cmNlW10gb3IgcGxhdGZvcm1fZGV2aWNlLnJlc291cmNlcywgd2hpY2ggaXMgdXNlZCBpbgorYWRkaXRpb24gdG8gZGV2LT5wbGF0Zm9ybV9kYXRhIHRvIGluaXRpYWxpemUgdGhlIGRyaXZlci4KKworVGhpcyBjYWxsYmFjayBob2xkcyB0aGUgZHJpdmVyLXNwZWNpZmljIGxvZ2ljIHRvIGJpbmQgdGhlIGRyaXZlciB0byBhCitnaXZlbiBkZXZpY2UuICBUaGF0IGluY2x1ZGVzIHZlcmlmeWluZyB0aGF0IHRoZSBkZXZpY2UgaXMgcHJlc2VudCwgdGhhdAoraXQncyBhIHZlcnNpb24gdGhlIGRyaXZlciBjYW4gaGFuZGxlLCB0aGF0IGRyaXZlciBkYXRhIHN0cnVjdHVyZXMgY2FuCitiZSBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkLCBhbmQgdGhhdCBhbnkgaGFyZHdhcmUgY2FuIGJlIGluaXRpYWxpemVkLgorRHJpdmVycyBvZnRlbiBzdG9yZSBhIHBvaW50ZXIgdG8gdGhlaXIgc3RhdGUgd2l0aCBkZXZfc2V0X2RydmRhdGEoKS4KK1doZW4gdGhlIGRyaXZlciBoYXMgc3VjY2Vzc2Z1bGx5IGJvdW5kIGl0c2VsZiB0byB0aGF0IGRldmljZSwgdGhlbiBwcm9iZSgpCityZXR1cm5zIHplcm8gYW5kIHRoZSBkcml2ZXIgbW9kZWwgY29kZSB3aWxsIGZpbmlzaCBpdHMgcGFydCBvZiBiaW5kaW5nCit0aGUgZHJpdmVyIHRvIHRoYXQgZGV2aWNlLgorCitBIGRyaXZlcidzIHByb2JlKCkgbWF5IHJldHVybiBhIG5lZ2F0aXZlIGVycm5vIHZhbHVlIHRvIGluZGljYXRlIHRoYXQKK3RoZSBkcml2ZXIgZGlkIG5vdCBiaW5kIHRvIHRoaXMgZGV2aWNlLCBpbiB3aGljaCBjYXNlIGl0IHNob3VsZCBoYXZlCityZWxlYXNlZCBhbGwgcmVzb3VyY2VzIGl0IGFsbG9jYXRlZC4KKworCWludCAJKCpyZW1vdmUpCShzdHJ1Y3QgZGV2aWNlICogZGV2KTsKKworcmVtb3ZlIGlzIGNhbGxlZCB0byB1bmJpbmQgYSBkcml2ZXIgZnJvbSBhIGRldmljZS4gVGhpcyBtYXkgYmUKK2NhbGxlZCBpZiBhIGRldmljZSBpcyBwaHlzaWNhbGx5IHJlbW92ZWQgZnJvbSB0aGUgc3lzdGVtLCBpZiB0aGUKK2RyaXZlciBtb2R1bGUgaXMgYmVpbmcgdW5sb2FkZWQsIGR1cmluZyBhIHJlYm9vdCBzZXF1ZW5jZSwgb3IKK2luIG90aGVyIGNhc2VzLgorCitJdCBpcyB1cCB0byB0aGUgZHJpdmVyIHRvIGRldGVybWluZSBpZiB0aGUgZGV2aWNlIGlzIHByZXNlbnQgb3IKK25vdC4gSXQgc2hvdWxkIGZyZWUgYW55IHJlc291cmNlcyBhbGxvY2F0ZWQgc3BlY2lmaWNhbGx5IGZvciB0aGUKK2RldmljZTsgaS5lLiBhbnl0aGluZyBpbiB0aGUgZGV2aWNlJ3MgZHJpdmVyX2RhdGEgZmllbGQuIAorCitJZiB0aGUgZGV2aWNlIGlzIHN0aWxsIHByZXNlbnQsIGl0IHNob3VsZCBxdWllc2NlIHRoZSBkZXZpY2UgYW5kIHBsYWNlCitpdCBpbnRvIGEgc3VwcG9ydGVkIGxvdy1wb3dlciBzdGF0ZS4KKworCWludAkoKnN1c3BlbmQpCShzdHJ1Y3QgZGV2aWNlICogZGV2LCBwbV9tZXNzYWdlX3Qgc3RhdGUpOworCitzdXNwZW5kIGlzIGNhbGxlZCB0byBwdXQgdGhlIGRldmljZSBpbiBhIGxvdyBwb3dlciBzdGF0ZS4KKworCWludAkoKnJlc3VtZSkJKHN0cnVjdCBkZXZpY2UgKiBkZXYpOworCitSZXN1bWUgaXMgdXNlZCB0byBicmluZyBhIGRldmljZSBiYWNrIGZyb20gYSBsb3cgcG93ZXIgc3RhdGUuCisKKworQXR0cmlidXRlcworfn5+fn5+fn5+fgorc3RydWN0IGRyaXZlcl9hdHRyaWJ1dGUgeworICAgICAgICBzdHJ1Y3QgYXR0cmlidXRlICAgICAgICBhdHRyOworICAgICAgICBzc2l6ZV90ICgqc2hvdykoc3RydWN0IGRldmljZV9kcml2ZXIgKmRyaXZlciwgY2hhciAqYnVmKTsKKyAgICAgICAgc3NpemVfdCAoKnN0b3JlKShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqLCBjb25zdCBjaGFyICogYnVmLCBzaXplX3QgY291bnQpOworfTsKKworRGV2aWNlIGRyaXZlcnMgY2FuIGV4cG9ydCBhdHRyaWJ1dGVzIHZpYSB0aGVpciBzeXNmcyBkaXJlY3Rvcmllcy4gCitEcml2ZXJzIGNhbiBkZWNsYXJlIGF0dHJpYnV0ZXMgdXNpbmcgYSBEUklWRVJfQVRUUiBtYWNybyB0aGF0IHdvcmtzCitpZGVudGljYWxseSB0byB0aGUgREVWSUNFX0FUVFIgbWFjcm8uIAorCitFeGFtcGxlOgorCitEUklWRVJfQVRUUihkZWJ1ZywwNjQ0LHNob3dfZGVidWcsc3RvcmVfZGVidWcpOworCitUaGlzIGlzIGVxdWl2YWxlbnQgdG8gZGVjbGFyaW5nOgorCitzdHJ1Y3QgZHJpdmVyX2F0dHJpYnV0ZSBkcml2ZXJfYXR0cl9kZWJ1ZzsKKworVGhpcyBjYW4gdGhlbiBiZSB1c2VkIHRvIGFkZCBhbmQgcmVtb3ZlIHRoZSBhdHRyaWJ1dGUgZnJvbSB0aGUKK2RyaXZlcidzIGRpcmVjdG9yeSB1c2luZzoKKworaW50IGRyaXZlcl9jcmVhdGVfZmlsZShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqLCBjb25zdCBzdHJ1Y3QgZHJpdmVyX2F0dHJpYnV0ZSAqKTsKK3ZvaWQgZHJpdmVyX3JlbW92ZV9maWxlKHN0cnVjdCBkZXZpY2VfZHJpdmVyICosIGNvbnN0IHN0cnVjdCBkcml2ZXJfYXR0cmlidXRlICopOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItbW9kZWwvb3ZlcnZpZXcudHh0IGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItbW9kZWwvb3ZlcnZpZXcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhOGY5YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1tb2RlbC9vdmVydmlldy50eHQKQEAgLTAsMCArMSwxMjMgQEAKK1RoZSBMaW51eCBLZXJuZWwgRGV2aWNlIE1vZGVsCisKK1BhdHJpY2sgTW9jaGVsCTxtb2NoZWxAZGlnaXRhbGltcGxhbnQub3JnPgorCitEcmFmdGVkIDI2IEF1Z3VzdCAyMDAyCitVcGRhdGVkIDMxIEphbnVhcnkgMjAwNgorCisKK092ZXJ2aWV3Cit+fn5+fn5+fgorCitUaGUgTGludXggS2VybmVsIERyaXZlciBNb2RlbCBpcyBhIHVuaWZpY2F0aW9uIG9mIGFsbCB0aGUgZGlzcGFyYXRlIGRyaXZlcgorbW9kZWxzIHRoYXQgd2VyZSBwcmV2aW91c2x5IHVzZWQgaW4gdGhlIGtlcm5lbC4gSXQgaXMgaW50ZW5kZWQgdG8gYXVnbWVudCB0aGUKK2J1cy1zcGVjaWZpYyBkcml2ZXJzIGZvciBicmlkZ2VzIGFuZCBkZXZpY2VzIGJ5IGNvbnNvbGlkYXRpbmcgYSBzZXQgb2YgZGF0YQorYW5kIG9wZXJhdGlvbnMgaW50byBnbG9iYWxseSBhY2Nlc3NpYmxlIGRhdGEgc3RydWN0dXJlcy4KKworVHJhZGl0aW9uYWwgZHJpdmVyIG1vZGVscyBpbXBsZW1lbnRlZCBzb21lIHNvcnQgb2YgdHJlZS1saWtlIHN0cnVjdHVyZQorKHNvbWV0aW1lcyBqdXN0IGEgbGlzdCkgZm9yIHRoZSBkZXZpY2VzIHRoZXkgY29udHJvbC4gVGhlcmUgd2Fzbid0IGFueQordW5pZm9ybWl0eSBhY3Jvc3MgdGhlIGRpZmZlcmVudCBidXMgdHlwZXMuCisKK1RoZSBjdXJyZW50IGRyaXZlciBtb2RlbCBwcm92aWRlcyBhIGNvbW1vbiwgdW5pZm9ybSBkYXRhIG1vZGVsIGZvciBkZXNjcmliaW5nCithIGJ1cyBhbmQgdGhlIGRldmljZXMgdGhhdCBjYW4gYXBwZWFyIHVuZGVyIHRoZSBidXMuIFRoZSB1bmlmaWVkIGJ1cworbW9kZWwgaW5jbHVkZXMgYSBzZXQgb2YgY29tbW9uIGF0dHJpYnV0ZXMgd2hpY2ggYWxsIGJ1c3NlcyBjYXJyeSwgYW5kIGEgc2V0CitvZiBjb21tb24gY2FsbGJhY2tzLCBzdWNoIGFzIGRldmljZSBkaXNjb3ZlcnkgZHVyaW5nIGJ1cyBwcm9iaW5nLCBidXMKK3NodXRkb3duLCBidXMgcG93ZXIgbWFuYWdlbWVudCwgZXRjLgorCitUaGUgY29tbW9uIGRldmljZSBhbmQgYnJpZGdlIGludGVyZmFjZSByZWZsZWN0cyB0aGUgZ29hbHMgb2YgdGhlIG1vZGVybgorY29tcHV0ZXI6IG5hbWVseSB0aGUgYWJpbGl0eSB0byBkbyBzZWFtbGVzcyBkZXZpY2UgInBsdWcgYW5kIHBsYXkiLCBwb3dlcgorbWFuYWdlbWVudCwgYW5kIGhvdCBwbHVnLiBJbiBwYXJ0aWN1bGFyLCB0aGUgbW9kZWwgZGljdGF0ZWQgYnkgSW50ZWwgYW5kCitNaWNyb3NvZnQgKG5hbWVseSBBQ1BJKSBlbnN1cmVzIHRoYXQgYWxtb3N0IGV2ZXJ5IGRldmljZSBvbiBhbG1vc3QgYW55IGJ1cworb24gYW4geDg2LWNvbXBhdGlibGUgc3lzdGVtIGNhbiB3b3JrIHdpdGhpbiB0aGlzIHBhcmFkaWdtLiAgT2YgY291cnNlLAorbm90IGV2ZXJ5IGJ1cyBpcyBhYmxlIHRvIHN1cHBvcnQgYWxsIHN1Y2ggb3BlcmF0aW9ucywgYWx0aG91Z2ggbW9zdAorYnVzZXMgc3VwcG9ydCBtb3N0IG9mIHRob3NlIG9wZXJhdGlvbnMuCisKKworRG93bnN0cmVhbSBBY2Nlc3MKK35+fn5+fn5+fn5+fn5+fn5+CisKK0NvbW1vbiBkYXRhIGZpZWxkcyBoYXZlIGJlZW4gbW92ZWQgb3V0IG9mIGluZGl2aWR1YWwgYnVzIGxheWVycyBpbnRvIGEgY29tbW9uCitkYXRhIHN0cnVjdHVyZS4gVGhlc2UgZmllbGRzIG11c3Qgc3RpbGwgYmUgYWNjZXNzZWQgYnkgdGhlIGJ1cyBsYXllcnMsCithbmQgc29tZXRpbWVzIGJ5IHRoZSBkZXZpY2Utc3BlY2lmaWMgZHJpdmVycy4KKworT3RoZXIgYnVzIGxheWVycyBhcmUgZW5jb3VyYWdlZCB0byBkbyB3aGF0IGhhcyBiZWVuIGRvbmUgZm9yIHRoZSBQQ0kgbGF5ZXIuCitzdHJ1Y3QgcGNpX2RldiBub3cgbG9va3MgbGlrZSB0aGlzOgorCitzdHJ1Y3QgcGNpX2RldiB7CisJLi4uCisKKwlzdHJ1Y3QgZGV2aWNlIGRldjsgICAgIC8qIEdlbmVyaWMgZGV2aWNlIGludGVyZmFjZSAqLworCS4uLgorfTsKKworTm90ZSBmaXJzdCB0aGF0IHRoZSBzdHJ1Y3QgZGV2aWNlIGRldiB3aXRoaW4gdGhlIHN0cnVjdCBwY2lfZGV2IGlzCitzdGF0aWNhbGx5IGFsbG9jYXRlZC4gVGhpcyBtZWFucyBvbmx5IG9uZSBhbGxvY2F0aW9uIG9uIGRldmljZSBkaXNjb3ZlcnkuCisKK05vdGUgYWxzbyB0aGF0IHRoYXQgc3RydWN0IGRldmljZSBkZXYgaXMgbm90IG5lY2Vzc2FyaWx5IGRlZmluZWQgYXQgdGhlCitmcm9udCBvZiB0aGUgcGNpX2RldiBzdHJ1Y3R1cmUuICBUaGlzIGlzIHRvIG1ha2UgcGVvcGxlIHRoaW5rIGFib3V0IHdoYXQKK3RoZXkncmUgZG9pbmcgd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiB0aGUgYnVzIGRyaXZlciBhbmQgdGhlIGdsb2JhbCBkcml2ZXIsCithbmQgdG8gZGlzY291cmFnZSBtZWFuaW5nbGVzcyBhbmQgaW5jb3JyZWN0IGNhc3RzIGJldHdlZW4gdGhlIHR3by4KKworVGhlIFBDSSBidXMgbGF5ZXIgZnJlZWx5IGFjY2Vzc2VzIHRoZSBmaWVsZHMgb2Ygc3RydWN0IGRldmljZS4gSXQga25vd3MgYWJvdXQKK3RoZSBzdHJ1Y3R1cmUgb2Ygc3RydWN0IHBjaV9kZXYsIGFuZCBpdCBzaG91bGQga25vdyB0aGUgc3RydWN0dXJlIG9mIHN0cnVjdAorZGV2aWNlLiBJbmRpdmlkdWFsIFBDSSBkZXZpY2UgZHJpdmVycyB0aGF0IGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gdGhlIGN1cnJlbnQKK2RyaXZlciBtb2RlbCBnZW5lcmFsbHkgZG8gbm90IGFuZCBzaG91bGQgbm90IHRvdWNoIHRoZSBmaWVsZHMgb2Ygc3RydWN0IGRldmljZSwKK3VubGVzcyB0aGVyZSBpcyBhIGNvbXBlbGxpbmcgcmVhc29uIHRvIGRvIHNvLgorCitUaGUgYWJvdmUgYWJzdHJhY3Rpb24gcHJldmVudHMgdW5uZWNlc3NhcnkgcGFpbiBkdXJpbmcgdHJhbnNpdGlvbmFsIHBoYXNlcy4KK0lmIGl0IHdlcmUgbm90IGRvbmUgdGhpcyB3YXksIHRoZW4gd2hlbiBhIGZpZWxkIHdhcyByZW5hbWVkIG9yIHJlbW92ZWQsIGV2ZXJ5Citkb3duc3RyZWFtIGRyaXZlciB3b3VsZCBicmVhay4gIE9uIHRoZSBvdGhlciBoYW5kLCBpZiBvbmx5IHRoZSBidXMgbGF5ZXIKKyhhbmQgbm90IHRoZSBkZXZpY2UgbGF5ZXIpIGFjY2Vzc2VzIHRoZSBzdHJ1Y3QgZGV2aWNlLCBpdCBpcyBvbmx5IHRoZSBidXMKK2xheWVyIHRoYXQgbmVlZHMgdG8gY2hhbmdlLgorCisKK1VzZXIgSW50ZXJmYWNlCit+fn5+fn5+fn5+fn5+fgorCitCeSB2aXJ0dWUgb2YgaGF2aW5nIGEgY29tcGxldGUgaGllcmFyY2hpY2FsIHZpZXcgb2YgYWxsIHRoZSBkZXZpY2VzIGluIHRoZQorc3lzdGVtLCBleHBvcnRpbmcgYSBjb21wbGV0ZSBoaWVyYXJjaGljYWwgdmlldyB0byB1c2Vyc3BhY2UgYmVjb21lcyByZWxhdGl2ZWx5CitlYXN5LiBUaGlzIGhhcyBiZWVuIGFjY29tcGxpc2hlZCBieSBpbXBsZW1lbnRpbmcgYSBzcGVjaWFsIHB1cnBvc2UgdmlydHVhbAorZmlsZSBzeXN0ZW0gbmFtZWQgc3lzZnMuCisKK0FsbW9zdCBhbGwgbWFpbnN0cmVhbSBMaW51eCBkaXN0cm9zIG1vdW50IHRoaXMgZmlsZXN5c3RlbSBhdXRvbWF0aWNhbGx5OyB5b3UKK2NhbiBzZWUgc29tZSB2YXJpYXRpb24gb2YgdGhlIGZvbGxvd2luZyBpbiB0aGUgb3V0cHV0IG9mIHRoZSAibW91bnQiIGNvbW1hbmQ6CisKKyQgbW91bnQKKy4uLgorbm9uZSBvbiAvc3lzIHR5cGUgc3lzZnMgKHJ3LG5vZXhlYyxub3N1aWQsbm9kZXYpCisuLi4KKyQKKworVGhlIGF1dG8tbW91bnRpbmcgb2Ygc3lzZnMgaXMgdHlwaWNhbGx5IGFjY29tcGxpc2hlZCBieSBhbiBlbnRyeSBzaW1pbGFyIHRvCit0aGUgZm9sbG93aW5nIGluIHRoZSAvZXRjL2ZzdGFiIGZpbGU6CisKK25vbmUgICAgIAkvc3lzCXN5c2ZzICAgIGRlZmF1bHRzCSAgCTAgMAorCitvciBzb21ldGhpbmcgc2ltaWxhciBpbiB0aGUgL2xpYi9pbml0L2ZzdGFiIGZpbGUgb24gRGViaWFuLWJhc2VkIHN5c3RlbXM6CisKK25vbmUgICAgICAgICAgICAvc3lzICAgIHN5c2ZzICAgIG5vZGV2LG5vZXhlYyxub3N1aWQgICAgMCAwCisKK0lmIHN5c2ZzIGlzIG5vdCBhdXRvbWF0aWNhbGx5IG1vdW50ZWQsIHlvdSBjYW4gYWx3YXlzIGRvIGl0IG1hbnVhbGx5IHdpdGg6CisKKyMgbW91bnQgLXQgc3lzZnMgc3lzZnMgL3N5cworCitXaGVuZXZlciBhIGRldmljZSBpcyBpbnNlcnRlZCBpbnRvIHRoZSB0cmVlLCBhIGRpcmVjdG9yeSBpcyBjcmVhdGVkIGZvciBpdC4KK1RoaXMgZGlyZWN0b3J5IG1heSBiZSBwb3B1bGF0ZWQgYXQgZWFjaCBsYXllciBvZiBkaXNjb3ZlcnkgLSB0aGUgZ2xvYmFsIGxheWVyLAordGhlIGJ1cyBsYXllciwgb3IgdGhlIGRldmljZSBsYXllci4KKworVGhlIGdsb2JhbCBsYXllciBjdXJyZW50bHkgY3JlYXRlcyB0d28gZmlsZXMgLSAnbmFtZScgYW5kICdwb3dlcicuIFRoZQorZm9ybWVyIG9ubHkgcmVwb3J0cyB0aGUgbmFtZSBvZiB0aGUgZGV2aWNlLiBUaGUgbGF0dGVyIHJlcG9ydHMgdGhlCitjdXJyZW50IHBvd2VyIHN0YXRlIG9mIHRoZSBkZXZpY2UuIEl0IHdpbGwgYWxzbyBiZSB1c2VkIHRvIHNldCB0aGUgY3VycmVudAorcG93ZXIgc3RhdGUuIAorCitUaGUgYnVzIGxheWVyIG1heSBhbHNvIGNyZWF0ZSBmaWxlcyBmb3IgdGhlIGRldmljZXMgaXQgZmluZHMgd2hpbGUgcHJvYmluZyB0aGUKK2J1cy4gRm9yIGV4YW1wbGUsIHRoZSBQQ0kgbGF5ZXIgY3VycmVudGx5IGNyZWF0ZXMgJ2lycScgYW5kICdyZXNvdXJjZScgZmlsZXMKK2ZvciBlYWNoIFBDSSBkZXZpY2UuCisKK0EgZGV2aWNlLXNwZWNpZmljIGRyaXZlciBtYXkgYWxzbyBleHBvcnQgZmlsZXMgaW4gaXRzIGRpcmVjdG9yeSB0byBleHBvc2UKK2RldmljZS1zcGVjaWZpYyBkYXRhIG9yIHR1bmFibGUgaW50ZXJmYWNlcy4KKworTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3lzZnMgZGlyZWN0b3J5IGxheW91dCBjYW4gYmUgZm91bmQgaW4KK3RoZSBvdGhlciBkb2N1bWVudHMgaW4gdGhpcyBkaXJlY3RvcnkgYW5kIGluIHRoZSBmaWxlIAorRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zeXNmcy50eHQuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHJpdmVyLW1vZGVsL3BsYXRmb3JtLnR4dCBiL0RvY3VtZW50YXRpb24vZHJpdmVyLW1vZGVsL3BsYXRmb3JtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDU2Njk2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItbW9kZWwvcGxhdGZvcm0udHh0CkBAIC0wLDAgKzEsMjQ0IEBACitQbGF0Zm9ybSBEZXZpY2VzIGFuZCBEcml2ZXJzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitTZWUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPiBmb3IgdGhlIGRyaXZlciBtb2RlbCBpbnRlcmZhY2UgdG8gdGhlCitwbGF0Zm9ybSBidXM6ICBwbGF0Zm9ybV9kZXZpY2UsIGFuZCBwbGF0Zm9ybV9kcml2ZXIuICBUaGlzIHBzZXVkby1idXMKK2lzIHVzZWQgdG8gY29ubmVjdCBkZXZpY2VzIG9uIGJ1c3NlcyB3aXRoIG1pbmltYWwgaW5mcmFzdHJ1Y3R1cmUsCitsaWtlIHRob3NlIHVzZWQgdG8gaW50ZWdyYXRlIHBlcmlwaGVyYWxzIG9uIG1hbnkgc3lzdGVtLW9uLWNoaXAKK3Byb2Nlc3NvcnMsIG9yIHNvbWUgImxlZ2FjeSIgUEMgaW50ZXJjb25uZWN0czsgYXMgb3Bwb3NlZCB0byBsYXJnZQorZm9ybWFsbHkgc3BlY2lmaWVkIG9uZXMgbGlrZSBQQ0kgb3IgVVNCLgorCisKK1BsYXRmb3JtIGRldmljZXMKK35+fn5+fn5+fn5+fn5+fn4KK1BsYXRmb3JtIGRldmljZXMgYXJlIGRldmljZXMgdGhhdCB0eXBpY2FsbHkgYXBwZWFyIGFzIGF1dG9ub21vdXMKK2VudGl0aWVzIGluIHRoZSBzeXN0ZW0uIFRoaXMgaW5jbHVkZXMgbGVnYWN5IHBvcnQtYmFzZWQgZGV2aWNlcyBhbmQKK2hvc3QgYnJpZGdlcyB0byBwZXJpcGhlcmFsIGJ1c2VzLCBhbmQgbW9zdCBjb250cm9sbGVycyBpbnRlZ3JhdGVkCitpbnRvIHN5c3RlbS1vbi1jaGlwIHBsYXRmb3Jtcy4gIFdoYXQgdGhleSB1c3VhbGx5IGhhdmUgaW4gY29tbW9uCitpcyBkaXJlY3QgYWRkcmVzc2luZyBmcm9tIGEgQ1BVIGJ1cy4gIFJhcmVseSwgYSBwbGF0Zm9ybV9kZXZpY2Ugd2lsbAorYmUgY29ubmVjdGVkIHRocm91Z2ggYSBzZWdtZW50IG9mIHNvbWUgb3RoZXIga2luZCBvZiBidXM7IGJ1dCBpdHMKK3JlZ2lzdGVycyB3aWxsIHN0aWxsIGJlIGRpcmVjdGx5IGFkZHJlc3NhYmxlLgorCitQbGF0Zm9ybSBkZXZpY2VzIGFyZSBnaXZlbiBhIG5hbWUsIHVzZWQgaW4gZHJpdmVyIGJpbmRpbmcsIGFuZCBhCitsaXN0IG9mIHJlc291cmNlcyBzdWNoIGFzIGFkZHJlc3NlcyBhbmQgSVJRcy4KKworc3RydWN0IHBsYXRmb3JtX2RldmljZSB7CisJY29uc3QgY2hhcgkqbmFtZTsKKwl1MzIJCWlkOworCXN0cnVjdCBkZXZpY2UJZGV2OworCXUzMgkJbnVtX3Jlc291cmNlczsKKwlzdHJ1Y3QgcmVzb3VyY2UJKnJlc291cmNlOworfTsKKworCitQbGF0Zm9ybSBkcml2ZXJzCit+fn5+fn5+fn5+fn5+fn5+CitQbGF0Zm9ybSBkcml2ZXJzIGZvbGxvdyB0aGUgc3RhbmRhcmQgZHJpdmVyIG1vZGVsIGNvbnZlbnRpb24sIHdoZXJlCitkaXNjb3ZlcnkvZW51bWVyYXRpb24gaXMgaGFuZGxlZCBvdXRzaWRlIHRoZSBkcml2ZXJzLCBhbmQgZHJpdmVycworcHJvdmlkZSBwcm9iZSgpIGFuZCByZW1vdmUoKSBtZXRob2RzLiAgVGhleSBzdXBwb3J0IHBvd2VyIG1hbmFnZW1lbnQKK2FuZCBzaHV0ZG93biBub3RpZmljYXRpb25zIHVzaW5nIHRoZSBzdGFuZGFyZCBjb252ZW50aW9ucy4KKworc3RydWN0IHBsYXRmb3JtX2RyaXZlciB7CisJaW50ICgqcHJvYmUpKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKik7CisJaW50ICgqcmVtb3ZlKShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICopOworCXZvaWQgKCpzaHV0ZG93bikoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqKTsKKwlpbnQgKCpzdXNwZW5kKShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICosIHBtX21lc3NhZ2VfdCBzdGF0ZSk7CisJaW50ICgqc3VzcGVuZF9sYXRlKShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICosIHBtX21lc3NhZ2VfdCBzdGF0ZSk7CisJaW50ICgqcmVzdW1lX2Vhcmx5KShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICopOworCWludCAoKnJlc3VtZSkoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqKTsKKwlzdHJ1Y3QgZGV2aWNlX2RyaXZlciBkcml2ZXI7Cit9OworCitOb3RlIHRoYXQgcHJvYmUoKSBzaG91bGQgaW4gZ2VuZXJhbCB2ZXJpZnkgdGhhdCB0aGUgc3BlY2lmaWVkIGRldmljZSBoYXJkd2FyZQorYWN0dWFsbHkgZXhpc3RzOyBzb21ldGltZXMgcGxhdGZvcm0gc2V0dXAgY29kZSBjYW4ndCBiZSBzdXJlLiAgVGhlIHByb2JpbmcKK2NhbiB1c2UgZGV2aWNlIHJlc291cmNlcywgaW5jbHVkaW5nIGNsb2NrcywgYW5kIGRldmljZSBwbGF0Zm9ybV9kYXRhLgorCitQbGF0Zm9ybSBkcml2ZXJzIHJlZ2lzdGVyIHRoZW1zZWx2ZXMgdGhlIG5vcm1hbCB3YXk6CisKKwlpbnQgcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmRydik7CisKK09yLCBpbiBjb21tb24gc2l0dWF0aW9ucyB3aGVyZSB0aGUgZGV2aWNlIGlzIGtub3duIG5vdCB0byBiZSBob3QtcGx1Z2dhYmxlLAordGhlIHByb2JlKCkgcm91dGluZSBjYW4gbGl2ZSBpbiBhbiBpbml0IHNlY3Rpb24gdG8gcmVkdWNlIHRoZSBkcml2ZXIncworcnVudGltZSBtZW1vcnkgZm9vdHByaW50OgorCisJaW50IHBsYXRmb3JtX2RyaXZlcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyICpkcnYsCisJCQkgIGludCAoKnByb2JlKShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICopKQorCitLZXJuZWwgbW9kdWxlcyBjYW4gYmUgY29tcG9zZWQgb2Ygc2V2ZXJhbCBwbGF0Zm9ybSBkcml2ZXJzLiBUaGUgcGxhdGZvcm0gY29yZQorcHJvdmlkZXMgaGVscGVycyB0byByZWdpc3RlciBhbmQgdW5yZWdpc3RlciBhbiBhcnJheSBvZiBkcml2ZXJzOgorCisJaW50IF9fcGxhdGZvcm1fcmVnaXN0ZXJfZHJpdmVycyhzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyICogY29uc3QgKmRyaXZlcnMsCisJCQkJICAgICAgdW5zaWduZWQgaW50IGNvdW50LCBzdHJ1Y3QgbW9kdWxlICpvd25lcik7CisJdm9pZCBwbGF0Zm9ybV91bnJlZ2lzdGVyX2RyaXZlcnMoc3RydWN0IHBsYXRmb3JtX2RyaXZlciAqIGNvbnN0ICpkcml2ZXJzLAorCQkJCQkgdW5zaWduZWQgaW50IGNvdW50KTsKKworSWYgb25lIG9mIHRoZSBkcml2ZXJzIGZhaWxzIHRvIHJlZ2lzdGVyLCBhbGwgZHJpdmVycyByZWdpc3RlcmVkIHVwIHRvIHRoYXQKK3BvaW50IHdpbGwgYmUgdW5yZWdpc3RlcmVkIGluIHJldmVyc2Ugb3JkZXIuIE5vdGUgdGhhdCB0aGVyZSBpcyBhIGNvbnZlbmllbmNlCittYWNybyB0aGF0IHBhc3NlcyBUSElTX01PRFVMRSBhcyBvd25lciBwYXJhbWV0ZXI6CisKKwkjZGVmaW5lIHBsYXRmb3JtX3JlZ2lzdGVyX2RyaXZlcihkcml2ZXJzLCBjb3VudCkKKworCitEZXZpY2UgRW51bWVyYXRpb24KK35+fn5+fn5+fn5+fn5+fn5+fgorQXMgYSBydWxlLCBwbGF0Zm9ybSBzcGVjaWZpYyAoYW5kIG9mdGVuIGJvYXJkLXNwZWNpZmljKSBzZXR1cCBjb2RlIHdpbGwKK3JlZ2lzdGVyIHBsYXRmb3JtIGRldmljZXM6CisKKwlpbnQgcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpOworCisJaW50IHBsYXRmb3JtX2FkZF9kZXZpY2VzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKipwZGV2cywgaW50IG5kZXYpOworCitUaGUgZ2VuZXJhbCBydWxlIGlzIHRvIHJlZ2lzdGVyIG9ubHkgdGhvc2UgZGV2aWNlcyB0aGF0IGFjdHVhbGx5IGV4aXN0LAorYnV0IGluIHNvbWUgY2FzZXMgZXh0cmEgZGV2aWNlcyBtaWdodCBiZSByZWdpc3RlcmVkLiAgRm9yIGV4YW1wbGUsIGEga2VybmVsCittaWdodCBiZSBjb25maWd1cmVkIHRvIHdvcmsgd2l0aCBhbiBleHRlcm5hbCBuZXR3b3JrIGFkYXB0ZXIgdGhhdCBtaWdodCBub3QKK2JlIHBvcHVsYXRlZCBvbiBhbGwgYm9hcmRzLCBvciBsaWtld2lzZSB0byB3b3JrIHdpdGggYW4gaW50ZWdyYXRlZCBjb250cm9sbGVyCit0aGF0IHNvbWUgYm9hcmRzIG1pZ2h0IG5vdCBob29rIHVwIHRvIGFueSBwZXJpcGhlcmFscy4KKworSW4gc29tZSBjYXNlcywgYm9vdCBmaXJtd2FyZSB3aWxsIGV4cG9ydCB0YWJsZXMgZGVzY3JpYmluZyB0aGUgZGV2aWNlcwordGhhdCBhcmUgcG9wdWxhdGVkIG9uIGEgZ2l2ZW4gYm9hcmQuICAgV2l0aG91dCBzdWNoIHRhYmxlcywgb2Z0ZW4gdGhlCitvbmx5IHdheSBmb3Igc3lzdGVtIHNldHVwIGNvZGUgdG8gc2V0IHVwIHRoZSBjb3JyZWN0IGRldmljZXMgaXMgdG8gYnVpbGQKK2Ega2VybmVsIGZvciBhIHNwZWNpZmljIHRhcmdldCBib2FyZC4gIFN1Y2ggYm9hcmQtc3BlY2lmaWMga2VybmVscyBhcmUKK2NvbW1vbiB3aXRoIGVtYmVkZGVkIGFuZCBjdXN0b20gc3lzdGVtcyBkZXZlbG9wbWVudC4KKworSW4gbWFueSBjYXNlcywgdGhlIG1lbW9yeSBhbmQgSVJRIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIHBsYXRmb3JtCitkZXZpY2UgYXJlIG5vdCBlbm91Z2ggdG8gbGV0IHRoZSBkZXZpY2UncyBkcml2ZXIgd29yay4gIEJvYXJkIHNldHVwIGNvZGUKK3dpbGwgb2Z0ZW4gcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHVzaW5nIHRoZSBkZXZpY2UncyBwbGF0Zm9ybV9kYXRhCitmaWVsZCB0byBob2xkIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisKK0VtYmVkZGVkIHN5c3RlbXMgZnJlcXVlbnRseSBuZWVkIG9uZSBvciBtb3JlIGNsb2NrcyBmb3IgcGxhdGZvcm0gZGV2aWNlcywKK3doaWNoIGFyZSBub3JtYWxseSBrZXB0IG9mZiB1bnRpbCB0aGV5J3JlIGFjdGl2ZWx5IG5lZWRlZCAodG8gc2F2ZSBwb3dlcikuCitTeXN0ZW0gc2V0dXAgYWxzbyBhc3NvY2lhdGVzIHRob3NlIGNsb2NrcyB3aXRoIHRoZSBkZXZpY2UsIHNvIHRoYXQgdGhhdAorY2FsbHMgdG8gY2xrX2dldCgmcGRldi0+ZGV2LCBjbG9ja19uYW1lKSByZXR1cm4gdGhlbSBhcyBuZWVkZWQuCisKKworTGVnYWN5IERyaXZlcnM6ICBEZXZpY2UgUHJvYmluZworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorU29tZSBkcml2ZXJzIGFyZSBub3QgZnVsbHkgY29udmVydGVkIHRvIHRoZSBkcml2ZXIgbW9kZWwsIGJlY2F1c2UgdGhleSB0YWtlCitvbiBhIG5vbi1kcml2ZXIgcm9sZTogIHRoZSBkcml2ZXIgcmVnaXN0ZXJzIGl0cyBwbGF0Zm9ybSBkZXZpY2UsIHJhdGhlciB0aGFuCitsZWF2aW5nIHRoYXQgZm9yIHN5c3RlbSBpbmZyYXN0cnVjdHVyZS4gIFN1Y2ggZHJpdmVycyBjYW4ndCBiZSBob3RwbHVnZ2VkCitvciBjb2xkcGx1Z2dlZCwgc2luY2UgdGhvc2UgbWVjaGFuaXNtcyByZXF1aXJlIGRldmljZSBjcmVhdGlvbiB0byBiZSBpbiBhCitkaWZmZXJlbnQgc3lzdGVtIGNvbXBvbmVudCB0aGFuIHRoZSBkcml2ZXIuCisKK1RoZSBvbmx5ICJnb29kIiByZWFzb24gZm9yIHRoaXMgaXMgdG8gaGFuZGxlIG9sZGVyIHN5c3RlbSBkZXNpZ25zIHdoaWNoLCBsaWtlCitvcmlnaW5hbCBJQk0gUENzLCByZWx5IG9uIGVycm9yLXByb25lICJwcm9iZS10aGUtaGFyZHdhcmUiIG1vZGVscyBmb3IgaGFyZHdhcmUKK2NvbmZpZ3VyYXRpb24uICBOZXdlciBzeXN0ZW1zIGhhdmUgbGFyZ2VseSBhYmFuZG9uZWQgdGhhdCBtb2RlbCwgaW4gZmF2b3Igb2YKK2J1cy1sZXZlbCBzdXBwb3J0IGZvciBkeW5hbWljIGNvbmZpZ3VyYXRpb24gKFBDSSwgVVNCKSwgb3IgZGV2aWNlIHRhYmxlcworcHJvdmlkZWQgYnkgdGhlIGJvb3QgZmlybXdhcmUgKGUuZy4gUE5QQUNQSSBvbiB4ODYpLiAgVGhlcmUgYXJlIHRvbyBtYW55Citjb25mbGljdGluZyBvcHRpb25zIGFib3V0IHdoYXQgbWlnaHQgYmUgd2hlcmUsIGFuZCBldmVuIGVkdWNhdGVkIGd1ZXNzZXMgYnkKK2FuIG9wZXJhdGluZyBzeXN0ZW0gd2lsbCBiZSB3cm9uZyBvZnRlbiBlbm91Z2ggdG8gbWFrZSB0cm91YmxlLgorCitUaGlzIHN0eWxlIG9mIGRyaXZlciBpcyBkaXNjb3VyYWdlZC4gIElmIHlvdSdyZSB1cGRhdGluZyBzdWNoIGEgZHJpdmVyLAorcGxlYXNlIHRyeSB0byBtb3ZlIHRoZSBkZXZpY2UgZW51bWVyYXRpb24gdG8gYSBtb3JlIGFwcHJvcHJpYXRlIGxvY2F0aW9uLAorb3V0c2lkZSB0aGUgZHJpdmVyLiAgVGhpcyB3aWxsIHVzdWFsbHkgYmUgY2xlYW51cCwgc2luY2Ugc3VjaCBkcml2ZXJzCit0ZW5kIHRvIGFscmVhZHkgaGF2ZSAibm9ybWFsIiBtb2Rlcywgc3VjaCBhcyBvbmVzIHVzaW5nIGRldmljZSBub2RlcyB0aGF0Cit3ZXJlIGNyZWF0ZWQgYnkgUE5QIG9yIGJ5IHBsYXRmb3JtIGRldmljZSBzZXR1cC4KKworTm9uZSB0aGUgbGVzcywgdGhlcmUgYXJlIHNvbWUgQVBJcyB0byBzdXBwb3J0IHN1Y2ggbGVnYWN5IGRyaXZlcnMuICBBdm9pZAordXNpbmcgdGhlc2UgY2FsbHMgZXhjZXB0IHdpdGggc3VjaCBob3RwbHVnLWRlZmljaWVudCBkcml2ZXJzLgorCisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGxhdGZvcm1fZGV2aWNlX2FsbG9jKAorCQkJY29uc3QgY2hhciAqbmFtZSwgaW50IGlkKTsKKworWW91IGNhbiB1c2UgcGxhdGZvcm1fZGV2aWNlX2FsbG9jKCkgdG8gZHluYW1pY2FsbHkgYWxsb2NhdGUgYSBkZXZpY2UsIHdoaWNoCit5b3Ugd2lsbCB0aGVuIGluaXRpYWxpemUgd2l0aCByZXNvdXJjZXMgYW5kIHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcigpLgorQSBiZXR0ZXIgc29sdXRpb24gaXMgdXN1YWxseToKKworCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcl9zaW1wbGUoCisJCQljb25zdCBjaGFyICpuYW1lLCBpbnQgaWQsCisJCQlzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgdW5zaWduZWQgaW50IG5yZXMpOworCitZb3UgY2FuIHVzZSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfc2ltcGxlKCkgYXMgYSBvbmUtc3RlcCBjYWxsIHRvIGFsbG9jYXRlCithbmQgcmVnaXN0ZXIgYSBkZXZpY2UuCisKKworRGV2aWNlIE5hbWluZyBhbmQgRHJpdmVyIEJpbmRpbmcKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitUaGUgcGxhdGZvcm1fZGV2aWNlLmRldi5idXNfaWQgaXMgdGhlIGNhbm9uaWNhbCBuYW1lIGZvciB0aGUgZGV2aWNlcy4KK0l0J3MgYnVpbHQgZnJvbSB0d28gY29tcG9uZW50czoKKworICAgICogcGxhdGZvcm1fZGV2aWNlLm5hbWUgLi4uIHdoaWNoIGlzIGFsc28gdXNlZCB0byBmb3IgZHJpdmVyIG1hdGNoaW5nLgorCisgICAgKiBwbGF0Zm9ybV9kZXZpY2UuaWQgLi4uIHRoZSBkZXZpY2UgaW5zdGFuY2UgbnVtYmVyLCBvciBlbHNlICItMSIKKyAgICAgIHRvIGluZGljYXRlIHRoZXJlJ3Mgb25seSBvbmUuCisKK1RoZXNlIGFyZSBjb25jYXRlbmF0ZWQsIHNvIG5hbWUvaWQgInNlcmlhbCIvMCBpbmRpY2F0ZXMgYnVzX2lkICJzZXJpYWwuMCIsIGFuZAorInNlcmlhbC8zIiBpbmRpY2F0ZXMgYnVzX2lkICJzZXJpYWwuMyI7IGJvdGggd291bGQgdXNlIHRoZSBwbGF0Zm9ybV9kcml2ZXIKK25hbWVkICJzZXJpYWwiLiAgV2hpbGUgIm15X3J0YyIvLTEgd291bGQgYmUgYnVzX2lkICJteV9ydGMiIChubyBpbnN0YW5jZSBpZCkKK2FuZCB1c2UgdGhlIHBsYXRmb3JtX2RyaXZlciBjYWxsZWQgIm15X3J0YyIuCisKK0RyaXZlciBiaW5kaW5nIGlzIHBlcmZvcm1lZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBkcml2ZXIgY29yZSwgaW52b2tpbmcKK2RyaXZlciBwcm9iZSgpIGFmdGVyIGZpbmRpbmcgYSBtYXRjaCBiZXR3ZWVuIGRldmljZSBhbmQgZHJpdmVyLiAgSWYgdGhlCitwcm9iZSgpIHN1Y2NlZWRzLCB0aGUgZHJpdmVyIGFuZCBkZXZpY2UgYXJlIGJvdW5kIGFzIHVzdWFsLiAgVGhlcmUgYXJlCit0aHJlZSBkaWZmZXJlbnQgd2F5cyB0byBmaW5kIHN1Y2ggYSBtYXRjaDoKKworICAgIC0gV2hlbmV2ZXIgYSBkZXZpY2UgaXMgcmVnaXN0ZXJlZCwgdGhlIGRyaXZlcnMgZm9yIHRoYXQgYnVzIGFyZQorICAgICAgY2hlY2tlZCBmb3IgbWF0Y2hlcy4gIFBsYXRmb3JtIGRldmljZXMgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgdmVyeQorICAgICAgZWFybHkgZHVyaW5nIHN5c3RlbSBib290LgorCisgICAgLSBXaGVuIGEgZHJpdmVyIGlzIHJlZ2lzdGVyZWQgdXNpbmcgcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCksIGFsbAorICAgICAgdW5ib3VuZCBkZXZpY2VzIG9uIHRoYXQgYnVzIGFyZSBjaGVja2VkIGZvciBtYXRjaGVzLiAgRHJpdmVycworICAgICAgdXN1YWxseSByZWdpc3RlciBsYXRlciBkdXJpbmcgYm9vdGluZywgb3IgYnkgbW9kdWxlIGxvYWRpbmcuCisKKyAgICAtIFJlZ2lzdGVyaW5nIGEgZHJpdmVyIHVzaW5nIHBsYXRmb3JtX2RyaXZlcl9wcm9iZSgpIHdvcmtzIGp1c3QgbGlrZQorICAgICAgdXNpbmcgcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCksIGV4Y2VwdCB0aGF0IHRoZSBkcml2ZXIgd29uJ3QKKyAgICAgIGJlIHByb2JlZCBsYXRlciBpZiBhbm90aGVyIGRldmljZSByZWdpc3RlcnMuICAoV2hpY2ggaXMgT0ssIHNpbmNlCisgICAgICB0aGlzIGludGVyZmFjZSBpcyBvbmx5IGZvciB1c2Ugd2l0aCBub24taG90cGx1Z2dhYmxlIGRldmljZXMuKQorCisKK0Vhcmx5IFBsYXRmb3JtIERldmljZXMgYW5kIERyaXZlcnMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK1RoZSBlYXJseSBwbGF0Zm9ybSBpbnRlcmZhY2VzIHByb3ZpZGUgcGxhdGZvcm0gZGF0YSB0byBwbGF0Zm9ybSBkZXZpY2UKK2RyaXZlcnMgZWFybHkgb24gZHVyaW5nIHRoZSBzeXN0ZW0gYm9vdC4gVGhlIGNvZGUgaXMgYnVpbHQgb24gdG9wIG9mIHRoZQorZWFybHlfcGFyYW0oKSBjb21tYW5kIGxpbmUgcGFyc2luZyBhbmQgY2FuIGJlIGV4ZWN1dGVkIHZlcnkgZWFybHkgb24uCisKK0V4YW1wbGU6ICJlYXJseXByaW50ayIgY2xhc3MgZWFybHkgc2VyaWFsIGNvbnNvbGUgaW4gNiBzdGVwcworCisxLiBSZWdpc3RlcmluZyBlYXJseSBwbGF0Zm9ybSBkZXZpY2UgZGF0YQorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK1RoZSBhcmNoaXRlY3R1cmUgY29kZSByZWdpc3RlcnMgcGxhdGZvcm0gZGV2aWNlIGRhdGEgdXNpbmcgdGhlIGZ1bmN0aW9uCitlYXJseV9wbGF0Zm9ybV9hZGRfZGV2aWNlcygpLiBJbiB0aGUgY2FzZSBvZiBlYXJseSBzZXJpYWwgY29uc29sZSB0aGlzCitzaG91bGQgYmUgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBmb3IgdGhlIHNlcmlhbCBwb3J0LiBEZXZpY2VzIHJlZ2lzdGVyZWQKK2F0IHRoaXMgcG9pbnQgd2lsbCBsYXRlciBvbiBiZSBtYXRjaGVkIGFnYWluc3QgZWFybHkgcGxhdGZvcm0gZHJpdmVycy4KKworMi4gUGFyc2luZyBrZXJuZWwgY29tbWFuZCBsaW5lCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK1RoZSBhcmNoaXRlY3R1cmUgY29kZSBjYWxscyBwYXJzZV9lYXJseV9wYXJhbSgpIHRvIHBhcnNlIHRoZSBrZXJuZWwKK2NvbW1hbmQgbGluZS4gVGhpcyB3aWxsIGV4ZWN1dGUgYWxsIG1hdGNoaW5nIGVhcmx5X3BhcmFtKCkgY2FsbGJhY2tzLgorVXNlciBzcGVjaWZpZWQgZWFybHkgcGxhdGZvcm0gZGV2aWNlcyB3aWxsIGJlIHJlZ2lzdGVyZWQgYXQgdGhpcyBwb2ludC4KK0ZvciB0aGUgZWFybHkgc2VyaWFsIGNvbnNvbGUgY2FzZSB0aGUgdXNlciBjYW4gc3BlY2lmeSBwb3J0IG9uIHRoZQora2VybmVsIGNvbW1hbmQgbGluZSBhcyAiZWFybHlwcmludGs9c2VyaWFsLjAiIHdoZXJlICJlYXJseXByaW50ayIgaXMKK3RoZSBjbGFzcyBzdHJpbmcsICJzZXJpYWwiIGlzIHRoZSBuYW1lIG9mIHRoZSBwbGF0Zm9ybSBkcml2ZXIgYW5kCiswIGlzIHRoZSBwbGF0Zm9ybSBkZXZpY2UgaWQuIElmIHRoZSBpZCBpcyAtMSB0aGVuIHRoZSBkb3QgYW5kIHRoZQoraWQgY2FuIGJlIG9taXR0ZWQuCisKKzMuIEluc3RhbGxpbmcgZWFybHkgcGxhdGZvcm0gZHJpdmVycyBiZWxvbmdpbmcgdG8gYSBjZXJ0YWluIGNsYXNzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorVGhlIGFyY2hpdGVjdHVyZSBjb2RlIG1heSBvcHRpb25hbGx5IGZvcmNlIHJlZ2lzdHJhdGlvbiBvZiBhbGwgZWFybHkKK3BsYXRmb3JtIGRyaXZlcnMgYmVsb25naW5nIHRvIGEgY2VydGFpbiBjbGFzcyB1c2luZyB0aGUgZnVuY3Rpb24KK2Vhcmx5X3BsYXRmb3JtX2RyaXZlcl9yZWdpc3Rlcl9hbGwoKS4gVXNlciBzcGVjaWZpZWQgZGV2aWNlcyBmcm9tCitzdGVwIDIgaGF2ZSBwcmlvcml0eSBvdmVyIHRoZXNlLiBUaGlzIHN0ZXAgaXMgb21pdHRlZCBieSB0aGUgc2VyaWFsCitkcml2ZXIgZXhhbXBsZSBzaW5jZSB0aGUgZWFybHkgc2VyaWFsIGRyaXZlciBjb2RlIHNob3VsZCBiZSBkaXNhYmxlZAordW5sZXNzIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgcG9ydCBvbiB0aGUga2VybmVsIGNvbW1hbmQgbGluZS4KKworNC4gRWFybHkgcGxhdGZvcm0gZHJpdmVyIHJlZ2lzdHJhdGlvbgorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorQ29tcGlsZWQtaW4gcGxhdGZvcm0gZHJpdmVycyBtYWtpbmcgdXNlIG9mIGVhcmx5X3BsYXRmb3JtX2luaXQoKSBhcmUKK2F1dG9tYXRpY2FsbHkgcmVnaXN0ZXJlZCBkdXJpbmcgc3RlcCAyIG9yIDMuIFRoZSBzZXJpYWwgZHJpdmVyIGV4YW1wbGUKK3Nob3VsZCB1c2UgZWFybHlfcGxhdGZvcm1faW5pdCgiZWFybHlwcmludGsiLCAmcGxhdGZvcm1fZHJpdmVyKS4KKworNS4gUHJvYmluZyBvZiBlYXJseSBwbGF0Zm9ybSBkcml2ZXJzIGJlbG9uZ2luZyB0byBhIGNlcnRhaW4gY2xhc3MKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitUaGUgYXJjaGl0ZWN0dXJlIGNvZGUgY2FsbHMgZWFybHlfcGxhdGZvcm1fZHJpdmVyX3Byb2JlKCkgdG8gbWF0Y2gKK3JlZ2lzdGVyZWQgZWFybHkgcGxhdGZvcm0gZGV2aWNlcyBhc3NvY2lhdGVkIHdpdGggYSBjZXJ0YWluIGNsYXNzIHdpdGgKK3JlZ2lzdGVyZWQgZWFybHkgcGxhdGZvcm0gZHJpdmVycy4gTWF0Y2hlZCBkZXZpY2VzIHdpbGwgZ2V0IHByb2JlZCgpLgorVGhpcyBzdGVwIGNhbiBiZSBleGVjdXRlZCBhdCBhbnkgcG9pbnQgZHVyaW5nIHRoZSBlYXJseSBib290LiBBcyBzb29uCithcyBwb3NzaWJsZSBtYXkgYmUgZ29vZCBmb3IgdGhlIHNlcmlhbCBwb3J0IGNhc2UuCisKKzYuIEluc2lkZSB0aGUgZWFybHkgcGxhdGZvcm0gZHJpdmVyIHByb2JlKCkKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK1RoZSBkcml2ZXIgY29kZSBuZWVkcyB0byB0YWtlIHNwZWNpYWwgY2FyZSBkdXJpbmcgZWFybHkgYm9vdCwgZXNwZWNpYWxseQord2hlbiBpdCBjb21lcyB0byBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgaW50ZXJydXB0IHJlZ2lzdHJhdGlvbi4gVGhlIGNvZGUKK2luIHRoZSBwcm9iZSgpIGZ1bmN0aW9uIGNhbiB1c2UgaXNfZWFybHlfcGxhdGZvcm1fZGV2aWNlKCkgdG8gY2hlY2sgaWYKK2l0IGlzIGNhbGxlZCBhdCBlYXJseSBwbGF0Zm9ybSBkZXZpY2Ugb3IgYXQgdGhlIHJlZ3VsYXIgcGxhdGZvcm0gZGV2aWNlCit0aW1lLiBUaGUgZWFybHkgc2VyaWFsIGRyaXZlciBwZXJmb3JtcyByZWdpc3Rlcl9jb25zb2xlKCkgYXQgdGhpcyBwb2ludC4KKworRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24sIHNlZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kcml2ZXItbW9kZWwvcG9ydGluZy50eHQgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1tb2RlbC9wb3J0aW5nLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmQ4NmY3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItbW9kZWwvcG9ydGluZy50eHQKQEAgLTAsMCArMSw0NDUgQEAKKworUG9ydGluZyBEcml2ZXJzIHRvIHRoZSBOZXcgRHJpdmVyIE1vZGVsCisKK1BhdHJpY2sgTW9jaGVsCisKKzcgSmFudWFyeSAyMDAzCisKKworT3ZlcnZpZXcKKworUGxlYXNlIHJlZmVyIHRvIERvY3VtZW50YXRpb24vZHJpdmVyLW1vZGVsLyoudHh0IGZvciBkZWZpbml0aW9ucyBvZgordmFyaW91cyBkcml2ZXIgdHlwZXMgYW5kIGNvbmNlcHRzLiAKKworTW9zdCBvZiB0aGUgd29yayBvZiBwb3J0aW5nIGRldmljZXMgZHJpdmVycyB0byB0aGUgbmV3IG1vZGVsIGhhcHBlbnMKK2F0IHRoZSBidXMgZHJpdmVyIGxheWVyLiBUaGlzIHdhcyBpbnRlbnRpb25hbCwgdG8gbWluaW1pemUgdGhlCituZWdhdGl2ZSBlZmZlY3Qgb24ga2VybmVsIGRyaXZlcnMsIGFuZCB0byBhbGxvdyBhIGdyYWR1YWwgdHJhbnNpdGlvbgorb2YgYnVzIGRyaXZlcnMuCisKK0luIGEgbnV0c2hlbGwsIHRoZSBkcml2ZXIgbW9kZWwgY29uc2lzdHMgb2YgYSBzZXQgb2Ygb2JqZWN0cyB0aGF0IGNhbgorYmUgZW1iZWRkZWQgaW4gbGFyZ2VyLCBidXMtc3BlY2lmaWMgb2JqZWN0cy4gRmllbGRzIGluIHRoZXNlIGdlbmVyaWMKK29iamVjdHMgY2FuIHJlcGxhY2UgZmllbGRzIGluIHRoZSBidXMtc3BlY2lmaWMgb2JqZWN0cy4gCisKK1RoZSBnZW5lcmljIG9iamVjdHMgbXVzdCBiZSByZWdpc3RlcmVkIHdpdGggdGhlIGRyaXZlciBtb2RlbCBjb3JlLiBCeQorZG9pbmcgc28sIHRoZXkgd2lsbCBleHBvcnRlZCB2aWEgdGhlIHN5c2ZzIGZpbGVzeXN0ZW0uIHN5c2ZzIGNhbiBiZQorbW91bnRlZCBieSBkb2luZyAKKworCSMgbW91bnQgLXQgc3lzZnMgc3lzZnMgL3N5cworCisKKworVGhlIFByb2Nlc3MKKworU3RlcCAwOiBSZWFkIGluY2x1ZGUvbGludXgvZGV2aWNlLmggZm9yIG9iamVjdCBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMuIAorCitTdGVwIDE6IFJlZ2lzdGVyaW5nIHRoZSBidXMgZHJpdmVyLiAKKworCistIERlZmluZSBhIHN0cnVjdCBidXNfdHlwZSBmb3IgdGhlIGJ1cyBkcml2ZXIuCisKK3N0cnVjdCBidXNfdHlwZSBwY2lfYnVzX3R5cGUgPSB7CisgICAgICAgIC5uYW1lICAgICAgICAgICA9ICJwY2kiLAorfTsKKworCistIFJlZ2lzdGVyIHRoZSBidXMgdHlwZS4KKyAgVGhpcyBzaG91bGQgYmUgZG9uZSBpbiB0aGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gZm9yIHRoZSBidXMgdHlwZSwKKyAgd2hpY2ggaXMgdXN1YWxseSB0aGUgbW9kdWxlX2luaXQoKSwgb3IgZXF1aXZhbGVudCwgZnVuY3Rpb24uIAorCitzdGF0aWMgaW50IF9faW5pdCBwY2lfZHJpdmVyX2luaXQodm9pZCkKK3sKKyAgICAgICAgcmV0dXJuIGJ1c19yZWdpc3RlcigmcGNpX2J1c190eXBlKTsKK30KKworc3Vic3lzX2luaXRjYWxsKHBjaV9kcml2ZXJfaW5pdCk7CisKKworICBUaGUgYnVzIHR5cGUgbWF5IGJlIHVucmVnaXN0ZXJlZCAoaWYgdGhlIGJ1cyBkcml2ZXIgbWF5IGJlIGNvbXBpbGVkCisgIGFzIGEgbW9kdWxlKSBieSBkb2luZzoKKworICAgICBidXNfdW5yZWdpc3RlcigmcGNpX2J1c190eXBlKTsKKworCistIEV4cG9ydCB0aGUgYnVzIHR5cGUgZm9yIG90aGVycyB0byB1c2UuIAorCisgIE90aGVyIGNvZGUgbWF5IHdpc2ggdG8gcmVmZXJlbmNlIHRoZSBidXMgdHlwZSwgc28gZGVjbGFyZSBpdCBpbiBhIAorICBzaGFyZWQgaGVhZGVyIGZpbGUgYW5kIGV4cG9ydCB0aGUgc3ltYm9sLgorCitGcm9tIGluY2x1ZGUvbGludXgvcGNpLmg6CisKK2V4dGVybiBzdHJ1Y3QgYnVzX3R5cGUgcGNpX2J1c190eXBlOworCisKK0Zyb20gZmlsZSB0aGUgYWJvdmUgY29kZSBhcHBlYXJzIGluOgorCitFWFBPUlRfU1lNQk9MKHBjaV9idXNfdHlwZSk7CisKKworCistIFRoaXMgd2lsbCBjYXVzZSB0aGUgYnVzIHRvIHNob3cgdXAgaW4gL3N5cy9idXMvcGNpLyB3aXRoIHR3bworICBzdWJkaXJlY3RvcmllczogJ2RldmljZXMnIGFuZCAnZHJpdmVycycuCisKKyMgdHJlZSAtZCAvc3lzL2J1cy9wY2kvCisvc3lzL2J1cy9wY2kvCit8LS0gZGV2aWNlcworYC0tIGRyaXZlcnMKKworCisKK1N0ZXAgMjogUmVnaXN0ZXJpbmcgRGV2aWNlcy4gCisKK3N0cnVjdCBkZXZpY2UgcmVwcmVzZW50cyBhIHNpbmdsZSBkZXZpY2UuIEl0IG1haW5seSBjb250YWlucyBtZXRhZGF0YQorZGVzY3JpYmluZyB0aGUgcmVsYXRpb25zaGlwIHRoZSBkZXZpY2UgaGFzIHRvIG90aGVyIGVudGl0aWVzLiAKKworCistIEVtYmVkIGEgc3RydWN0IGRldmljZSBpbiB0aGUgYnVzLXNwZWNpZmljIGRldmljZSB0eXBlLiAKKworCitzdHJ1Y3QgcGNpX2RldiB7CisgICAgICAgLi4uCisgICAgICAgc3RydWN0ICBkZXZpY2UgIGRldjsgICAgICAgICAgICAvKiBHZW5lcmljIGRldmljZSBpbnRlcmZhY2UgKi8KKyAgICAgICAuLi4KK307CisKKyAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGUgZ2VuZXJpYyBkZXZpY2Ugbm90IGJlIHRoZSBmaXJzdCBpdGVtIGluIAorICB0aGUgc3RydWN0IHRvIGRpc2NvdXJhZ2UgcHJvZ3JhbW1lcnMgZnJvbSBkb2luZyBtaW5kbGVzcyBjYXN0cworICBiZXR3ZWVuIHRoZSBvYmplY3QgdHlwZXMuIEluc3RlYWQgbWFjcm9zLCBvciBpbmxpbmUgZnVuY3Rpb25zLAorICBzaG91bGQgYmUgY3JlYXRlZCB0byBjb252ZXJ0IGZyb20gdGhlIGdlbmVyaWMgb2JqZWN0IHR5cGUuCisKKworI2RlZmluZSB0b19wY2lfZGV2KG4pIGNvbnRhaW5lcl9vZihuLCBzdHJ1Y3QgcGNpX2RldiwgZGV2KQorCitvciAKKworc3RhdGljIGlubGluZSBzdHJ1Y3QgcGNpX2RldiAqIHRvX3BjaV9kZXYoc3RydWN0IGtvYmplY3QgKiBrb2JqKQoreworCXJldHVybiBjb250YWluZXJfb2Yobiwgc3RydWN0IHBjaV9kZXYsIGRldik7Cit9CisKKyAgVGhpcyBhbGxvd3MgdGhlIGNvbXBpbGVyIHRvIHZlcmlmeSB0eXBlLXNhZmV0eSBvZiB0aGUgb3BlcmF0aW9ucyAKKyAgdGhhdCBhcmUgcGVyZm9ybWVkICh3aGljaCBpcyBHb29kKS4KKworCistIEluaXRpYWxpemUgdGhlIGRldmljZSBvbiByZWdpc3RyYXRpb24uCisKKyAgV2hlbiBkZXZpY2VzIGFyZSBkaXNjb3ZlcmVkIG9yIHJlZ2lzdGVyZWQgd2l0aCB0aGUgYnVzIHR5cGUsIHRoZSAKKyAgYnVzIGRyaXZlciBzaG91bGQgaW5pdGlhbGl6ZSB0aGUgZ2VuZXJpYyBkZXZpY2UuIFRoZSBtb3N0IGltcG9ydGFudAorICB0aGluZ3MgdG8gaW5pdGlhbGl6ZSBhcmUgdGhlIGJ1c19pZCwgcGFyZW50LCBhbmQgYnVzIGZpZWxkcy4KKworICBUaGUgYnVzX2lkIGlzIGFuIEFTQ0lJIHN0cmluZyB0aGF0IGNvbnRhaW5zIHRoZSBkZXZpY2UncyBhZGRyZXNzIG9uCisgIHRoZSBidXMuIFRoZSBmb3JtYXQgb2YgdGhpcyBzdHJpbmcgaXMgYnVzLXNwZWNpZmljLiBUaGlzIGlzCisgIG5lY2Vzc2FyeSBmb3IgcmVwcmVzZW50aW5nIGRldmljZXMgaW4gc3lzZnMuIAorCisgIHBhcmVudCBpcyB0aGUgcGh5c2ljYWwgcGFyZW50IG9mIHRoZSBkZXZpY2UuIEl0IGlzIGltcG9ydGFudCB0aGF0CisgIHRoZSBidXMgZHJpdmVyIHNldHMgdGhpcyBmaWVsZCBjb3JyZWN0bHkuIAorCisgIFRoZSBkcml2ZXIgbW9kZWwgbWFpbnRhaW5zIGFuIG9yZGVyZWQgbGlzdCBvZiBkZXZpY2VzIHRoYXQgaXQgdXNlcworICBmb3IgcG93ZXIgbWFuYWdlbWVudC4gVGhpcyBsaXN0IG11c3QgYmUgaW4gb3JkZXIgdG8gZ3VhcmFudGVlIHRoYXQKKyAgZGV2aWNlcyBhcmUgc2h1dGRvd24gYmVmb3JlIHRoZWlyIHBoeXNpY2FsIHBhcmVudHMsIGFuZCB2aWNlIHZlcnNhLgorICBUaGUgb3JkZXIgb2YgdGhpcyBsaXN0IGlzIGRldGVybWluZWQgYnkgdGhlIHBhcmVudCBvZiByZWdpc3RlcmVkCisgIGRldmljZXMuCisKKyAgQWxzbywgdGhlIGxvY2F0aW9uIG9mIHRoZSBkZXZpY2UncyBzeXNmcyBkaXJlY3RvcnkgZGVwZW5kcyBvbiBhCisgIGRldmljZSdzIHBhcmVudC4gc3lzZnMgZXhwb3J0cyBhIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgdGhhdCBtaXJyb3JzIAorICB0aGUgZGV2aWNlIGhpZXJhcmNoeS4gQWNjdXJhdGVseSBzZXR0aW5nIHRoZSBwYXJlbnQgZ3VhcmFudGVlcyB0aGF0CisgIHN5c2ZzIHdpbGwgYWNjdXJhdGVseSByZXByZXNlbnQgdGhlIGhpZXJhcmNoeS4KKworICBUaGUgZGV2aWNlJ3MgYnVzIGZpZWxkIGlzIGEgcG9pbnRlciB0byB0aGUgYnVzIHR5cGUgdGhlIGRldmljZQorICBiZWxvbmdzIHRvLiBUaGlzIHNob3VsZCBiZSBzZXQgdG8gdGhlIGJ1c190eXBlIHRoYXQgd2FzIGRlY2xhcmVkCisgIGFuZCBpbml0aWFsaXplZCBiZWZvcmUuIAorCisgIE9wdGlvbmFsbHksIHRoZSBidXMgZHJpdmVyIG1heSBzZXQgdGhlIGRldmljZSdzIG5hbWUgYW5kIHJlbGVhc2UKKyAgZmllbGRzLgorCisgIFRoZSBuYW1lIGZpZWxkIGlzIGFuIEFTQ0lJIHN0cmluZyBkZXNjcmliaW5nIHRoZSBkZXZpY2UsIGxpa2UKKworICAgICAiQVRJIFRlY2hub2xvZ2llcyBJbmMgUmFkZW9uIFFEIgorCisgIFRoZSByZWxlYXNlIGZpZWxkIGlzIGEgY2FsbGJhY2sgdGhhdCB0aGUgZHJpdmVyIG1vZGVsIGNvcmUgY2FsbHMgCisgIHdoZW4gdGhlIGRldmljZSBoYXMgYmVlbiByZW1vdmVkLCBhbmQgYWxsIHJlZmVyZW5jZXMgdG8gaXQgaGF2ZSAKKyAgYmVlbiByZWxlYXNlZC4gTW9yZSBvbiB0aGlzIGluIGEgbW9tZW50LgorCisKKy0gUmVnaXN0ZXIgdGhlIGRldmljZS4gCisKKyAgT25jZSB0aGUgZ2VuZXJpYyBkZXZpY2UgaGFzIGJlZW4gaW5pdGlhbGl6ZWQsIGl0IGNhbiBiZSByZWdpc3RlcmVkCisgIHdpdGggdGhlIGRyaXZlciBtb2RlbCBjb3JlIGJ5IGRvaW5nOgorCisgICAgICAgZGV2aWNlX3JlZ2lzdGVyKCZkZXYtPmRldik7CisKKyAgSXQgY2FuIGxhdGVyIGJlIHVucmVnaXN0ZXJlZCBieSBkb2luZzogCisKKyAgICAgICBkZXZpY2VfdW5yZWdpc3RlcigmZGV2LT5kZXYpOworCisgIFRoaXMgc2hvdWxkIGhhcHBlbiBvbiBidXNlcyB0aGF0IHN1cHBvcnQgaG90cGx1Z2dhYmxlIGRldmljZXMuIAorICBJZiBhIGJ1cyBkcml2ZXIgdW5yZWdpc3RlcnMgYSBkZXZpY2UsIGl0IHNob3VsZCBub3QgaW1tZWRpYXRlbHkgZnJlZQorICBpdC4gSXQgc2hvdWxkIGluc3RlYWQgd2FpdCBmb3IgdGhlIGRyaXZlciBtb2RlbCBjb3JlIHRvIGNhbGwgdGhlIAorICBkZXZpY2UncyByZWxlYXNlIG1ldGhvZCwgdGhlbiBmcmVlIHRoZSBidXMtc3BlY2lmaWMgb2JqZWN0LiAKKyAgKFRoZXJlIG1heSBiZSBvdGhlciBjb2RlIHRoYXQgaXMgY3VycmVudGx5IHJlZmVyZW5jaW5nIHRoZSBkZXZpY2UKKyAgc3RydWN0dXJlLCBhbmQgaXQgd291bGQgYmUgcnVkZSB0byBmcmVlIHRoZSBkZXZpY2Ugd2hpbGUgdGhhdCBpcyAKKyAgaGFwcGVuaW5nKS4KKworCisgIFdoZW4gdGhlIGRldmljZSBpcyByZWdpc3RlcmVkLCBhIGRpcmVjdG9yeSBpbiBzeXNmcyBpcyBjcmVhdGVkLiAKKyAgVGhlIFBDSSB0cmVlIGluIHN5c2ZzIGxvb2tzIGxpa2U6IAorCisvc3lzL2RldmljZXMvcGNpMC8KK3wtLSAwMDowMC4wCit8LS0gMDA6MDEuMAorfCAgIGAtLSAwMTowMC4wCit8LS0gMDA6MDIuMAorfCAgIGAtLSAwMjoxZi4wCit8ICAgICAgIGAtLSAwMzowMC4wCit8LS0gMDA6MWUuMAorfCAgIGAtLSAwNDowNC4wCit8LS0gMDA6MWYuMAorfC0tIDAwOjFmLjEKK3wgICB8LS0gaWRlMAorfCAgIHwgICB8LS0gMC4wCit8ICAgfCAgIGAtLSAwLjEKK3wgICBgLS0gaWRlMQorfCAgICAgICBgLS0gMS4wCit8LS0gMDA6MWYuMgorfC0tIDAwOjFmLjMKK2AtLSAwMDoxZi41CisKKyAgQWxzbywgc3ltbGlua3MgYXJlIGNyZWF0ZWQgaW4gdGhlIGJ1cydzICdkZXZpY2VzJyBkaXJlY3RvcnkKKyAgdGhhdCBwb2ludCB0byB0aGUgZGV2aWNlJ3MgZGlyZWN0b3J5IGluIHRoZSBwaHlzaWNhbCBoaWVyYXJjaHkuIAorCisvc3lzL2J1cy9wY2kvZGV2aWNlcy8KK3wtLSAwMDowMC4wIC0+IC4uLy4uLy4uL2RldmljZXMvcGNpMC8wMDowMC4wCit8LS0gMDA6MDEuMCAtPiAuLi8uLi8uLi9kZXZpY2VzL3BjaTAvMDA6MDEuMAorfC0tIDAwOjAyLjAgLT4gLi4vLi4vLi4vZGV2aWNlcy9wY2kwLzAwOjAyLjAKK3wtLSAwMDoxZS4wIC0+IC4uLy4uLy4uL2RldmljZXMvcGNpMC8wMDoxZS4wCit8LS0gMDA6MWYuMCAtPiAuLi8uLi8uLi9kZXZpY2VzL3BjaTAvMDA6MWYuMAorfC0tIDAwOjFmLjEgLT4gLi4vLi4vLi4vZGV2aWNlcy9wY2kwLzAwOjFmLjEKK3wtLSAwMDoxZi4yIC0+IC4uLy4uLy4uL2RldmljZXMvcGNpMC8wMDoxZi4yCit8LS0gMDA6MWYuMyAtPiAuLi8uLi8uLi9kZXZpY2VzL3BjaTAvMDA6MWYuMworfC0tIDAwOjFmLjUgLT4gLi4vLi4vLi4vZGV2aWNlcy9wY2kwLzAwOjFmLjUKK3wtLSAwMTowMC4wIC0+IC4uLy4uLy4uL2RldmljZXMvcGNpMC8wMDowMS4wLzAxOjAwLjAKK3wtLSAwMjoxZi4wIC0+IC4uLy4uLy4uL2RldmljZXMvcGNpMC8wMDowMi4wLzAyOjFmLjAKK3wtLSAwMzowMC4wIC0+IC4uLy4uLy4uL2RldmljZXMvcGNpMC8wMDowMi4wLzAyOjFmLjAvMDM6MDAuMAorYC0tIDA0OjA0LjAgLT4gLi4vLi4vLi4vZGV2aWNlcy9wY2kwLzAwOjFlLjAvMDQ6MDQuMAorCisKKworU3RlcCAzOiBSZWdpc3RlcmluZyBEcml2ZXJzLgorCitzdHJ1Y3QgZGV2aWNlX2RyaXZlciBpcyBhIHNpbXBsZSBkcml2ZXIgc3RydWN0dXJlIHRoYXQgY29udGFpbnMgYSBzZXQKK29mIG9wZXJhdGlvbnMgdGhhdCB0aGUgZHJpdmVyIG1vZGVsIGNvcmUgbWF5IGNhbGwuIAorCisKKy0gRW1iZWQgYSBzdHJ1Y3QgZGV2aWNlX2RyaXZlciBpbiB0aGUgYnVzLXNwZWNpZmljIGRyaXZlci4gCisKKyAgSnVzdCBsaWtlIHdpdGggZGV2aWNlcywgZG8gc29tZXRoaW5nIGxpa2U6CisKK3N0cnVjdCBwY2lfZHJpdmVyIHsKKyAgICAgICAuLi4KKyAgICAgICBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAgICBkcml2ZXI7Cit9OworCisKKy0gSW5pdGlhbGl6ZSB0aGUgZ2VuZXJpYyBkcml2ZXIgc3RydWN0dXJlLiAKKworICBXaGVuIHRoZSBkcml2ZXIgcmVnaXN0ZXJzIHdpdGggdGhlIGJ1cyAoZS5nLiBkb2luZyBwY2lfcmVnaXN0ZXJfZHJpdmVyKCkpLAorICBpbml0aWFsaXplIHRoZSBuZWNlc3NhcnkgZmllbGRzIG9mIHRoZSBkcml2ZXI6IHRoZSBuYW1lIGFuZCBidXMKKyAgZmllbGRzLiAKKworCistIFJlZ2lzdGVyIHRoZSBkcml2ZXIuCisKKyAgQWZ0ZXIgdGhlIGdlbmVyaWMgZHJpdmVyIGhhcyBiZWVuIGluaXRpYWxpemVkLCBjYWxsCisKKwlkcml2ZXJfcmVnaXN0ZXIoJmRydi0+ZHJpdmVyKTsKKworICB0byByZWdpc3RlciB0aGUgZHJpdmVyIHdpdGggdGhlIGNvcmUuCisKKyAgV2hlbiB0aGUgZHJpdmVyIGlzIHVucmVnaXN0ZXJlZCBmcm9tIHRoZSBidXMsIHVucmVnaXN0ZXIgaXQgZnJvbSB0aGUKKyAgY29yZSBieSBkb2luZzoKKworICAgICAgICBkcml2ZXJfdW5yZWdpc3RlcigmZHJ2LT5kcml2ZXIpOworCisgIE5vdGUgdGhhdCB0aGlzIHdpbGwgYmxvY2sgdW50aWwgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIGRyaXZlciBoYXZlCisgIGdvbmUgYXdheS4gTm9ybWFsbHksIHRoZXJlIHdpbGwgbm90IGJlIGFueS4KKworCistIFN5c2ZzIHJlcHJlc2VudGF0aW9uLgorCisgIERyaXZlcnMgYXJlIGV4cG9ydGVkIHZpYSBzeXNmcyBpbiB0aGVpciBidXMncyAnZHJpdmVyJ3MgZGlyZWN0b3J5LiAKKyAgRm9yIGV4YW1wbGU6CisKKy9zeXMvYnVzL3BjaS9kcml2ZXJzLworfC0tIDNjNTl4Cit8LS0gRW5zb25pcSBBdWRpb1BDSQorfC0tIGFncGdhcnQtYW1kazcKK3wtLSBlMTAwCitgLS0gc2VyaWFsCisKKworU3RlcCA0OiBEZWZpbmUgR2VuZXJpYyBNZXRob2RzIGZvciBEcml2ZXJzLgorCitzdHJ1Y3QgZGV2aWNlX2RyaXZlciBkZWZpbmVzIGEgc2V0IG9mIG9wZXJhdGlvbnMgdGhhdCB0aGUgZHJpdmVyIG1vZGVsCitjb3JlIGNhbGxzLiBNb3N0IG9mIHRoZXNlIG9wZXJhdGlvbnMgYXJlIHByb2JhYmx5IHNpbWlsYXIgdG8KK29wZXJhdGlvbnMgdGhlIGJ1cyBhbHJlYWR5IGRlZmluZXMgZm9yIGRyaXZlcnMsIGJ1dCB0YWtpbmcgZGlmZmVyZW50CitwYXJhbWV0ZXJzLiAKKworSXQgd291bGQgYmUgZGlmZmljdWx0IGFuZCB0ZWRpb3VzIHRvIGZvcmNlIGV2ZXJ5IGRyaXZlciBvbiBhIGJ1cyB0bworc2ltdWx0YW5lb3VzbHkgY29udmVydCB0aGVpciBkcml2ZXJzIHRvIGdlbmVyaWMgZm9ybWF0LiBJbnN0ZWFkLCB0aGUKK2J1cyBkcml2ZXIgc2hvdWxkIGRlZmluZSBzaW5nbGUgaW5zdGFuY2VzIG9mIHRoZSBnZW5lcmljIG1ldGhvZHMgdGhhdAorZm9yd2FyZCBjYWxsIHRvIHRoZSBidXMtc3BlY2lmaWMgZHJpdmVycy4gRm9yIGluc3RhbmNlOiAKKworCitzdGF0aWMgaW50IHBjaV9kZXZpY2VfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKiBkZXYpCit7CisgICAgICAgIHN0cnVjdCBwY2lfZGV2ICogcGNpX2RldiA9IHRvX3BjaV9kZXYoZGV2KTsKKyAgICAgICAgc3RydWN0IHBjaV9kcml2ZXIgKiBkcnYgPSBwY2lfZGV2LT5kcml2ZXI7CisKKyAgICAgICAgaWYgKGRydikgeworICAgICAgICAgICAgICAgIGlmIChkcnYtPnJlbW92ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRydi0+cmVtb3ZlKHBjaV9kZXYpOworICAgICAgICAgICAgICAgIHBjaV9kZXYtPmRyaXZlciA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7Cit9CisKKworVGhlIGdlbmVyaWMgZHJpdmVyIHNob3VsZCBiZSBpbml0aWFsaXplZCB3aXRoIHRoZXNlIG1ldGhvZHMgYmVmb3JlIGl0CitpcyByZWdpc3RlcmVkLiAKKworICAgICAgICAvKiBpbml0aWFsaXplIGNvbW1vbiBkcml2ZXIgZmllbGRzICovCisgICAgICAgIGRydi0+ZHJpdmVyLm5hbWUgPSBkcnYtPm5hbWU7CisgICAgICAgIGRydi0+ZHJpdmVyLmJ1cyA9ICZwY2lfYnVzX3R5cGU7CisgICAgICAgIGRydi0+ZHJpdmVyLnByb2JlID0gcGNpX2RldmljZV9wcm9iZTsKKyAgICAgICAgZHJ2LT5kcml2ZXIucmVzdW1lID0gcGNpX2RldmljZV9yZXN1bWU7CisgICAgICAgIGRydi0+ZHJpdmVyLnN1c3BlbmQgPSBwY2lfZGV2aWNlX3N1c3BlbmQ7CisgICAgICAgIGRydi0+ZHJpdmVyLnJlbW92ZSA9IHBjaV9kZXZpY2VfcmVtb3ZlOworCisgICAgICAgIC8qIHJlZ2lzdGVyIHdpdGggY29yZSAqLworICAgICAgICBkcml2ZXJfcmVnaXN0ZXIoJmRydi0+ZHJpdmVyKTsKKworCitJZGVhbGx5LCB0aGUgYnVzIHNob3VsZCBvbmx5IGluaXRpYWxpemUgdGhlIGZpZWxkcyBpZiB0aGV5IGFyZSBub3QKK2FscmVhZHkgc2V0LiBUaGlzIGFsbG93cyB0aGUgZHJpdmVycyB0byBpbXBsZW1lbnQgdGhlaXIgb3duIGdlbmVyaWMKK21ldGhvZHMuIAorCisKK1N0ZXAgNTogU3VwcG9ydCBnZW5lcmljIGRyaXZlciBiaW5kaW5nLiAKKworVGhlIG1vZGVsIGFzc3VtZXMgdGhhdCBhIGRldmljZSBvciBkcml2ZXIgY2FuIGJlIGR5bmFtaWNhbGx5CityZWdpc3RlcmVkIHdpdGggdGhlIGJ1cyBhdCBhbnkgdGltZS4gV2hlbiByZWdpc3RyYXRpb24gaGFwcGVucywKK2RldmljZXMgbXVzdCBiZSBib3VuZCB0byBhIGRyaXZlciwgb3IgZHJpdmVycyBtdXN0IGJlIGJvdW5kIHRvIGFsbAorZGV2aWNlcyB0aGF0IGl0IHN1cHBvcnRzLiAKKworQSBkcml2ZXIgdHlwaWNhbGx5IGNvbnRhaW5zIGEgbGlzdCBvZiBkZXZpY2UgSURzIHRoYXQgaXQgc3VwcG9ydHMuIFRoZQorYnVzIGRyaXZlciBjb21wYXJlcyB0aGVzZSBJRHMgdG8gdGhlIElEcyBvZiBkZXZpY2VzIHJlZ2lzdGVyZWQgd2l0aCBpdC4gCitUaGUgZm9ybWF0IG9mIHRoZSBkZXZpY2UgSURzLCBhbmQgdGhlIHNlbWFudGljcyBmb3IgY29tcGFyaW5nIHRoZW0gYXJlCitidXMtc3BlY2lmaWMsIHNvIHRoZSBnZW5lcmljIG1vZGVsIGRvZXMgYXR0ZW1wdCB0byBnZW5lcmFsaXplIHRoZW0uIAorCitJbnN0ZWFkLCBhIGJ1cyBtYXkgc3VwcGx5IGEgbWV0aG9kIGluIHN0cnVjdCBidXNfdHlwZSB0aGF0IGRvZXMgdGhlCitjb21wYXJpc29uOiAKKworICBpbnQgKCptYXRjaCkoc3RydWN0IGRldmljZSAqIGRldiwgc3RydWN0IGRldmljZV9kcml2ZXIgKiBkcnYpOworCittYXRjaCBzaG91bGQgcmV0dXJuICcxJyBpZiB0aGUgZHJpdmVyIHN1cHBvcnRzIHRoZSBkZXZpY2UsIGFuZCAnMCcKK290aGVyd2lzZS4gCisKK1doZW4gYSBkZXZpY2UgaXMgcmVnaXN0ZXJlZCwgdGhlIGJ1cydzIGxpc3Qgb2YgZHJpdmVycyBpcyBpdGVyYXRlZAorb3Zlci4gYnVzLT5tYXRjaCgpIGlzIGNhbGxlZCBmb3IgZWFjaCBvbmUgdW50aWwgYSBtYXRjaCBpcyBmb3VuZC4gCisKK1doZW4gYSBkcml2ZXIgaXMgcmVnaXN0ZXJlZCwgdGhlIGJ1cydzIGxpc3Qgb2YgZGV2aWNlcyBpcyBpdGVyYXRlZAorb3Zlci4gYnVzLT5tYXRjaCgpIGlzIGNhbGxlZCBmb3IgZWFjaCBkZXZpY2UgdGhhdCBpcyBub3QgYWxyZWFkeQorY2xhaW1lZCBieSBhIGRyaXZlci4gCisKK1doZW4gYSBkZXZpY2UgaXMgc3VjY2Vzc2Z1bGx5IGJvdW5kIHRvIGEgZHJpdmVyLCBkZXZpY2UtPmRyaXZlciBpcworc2V0LCB0aGUgZGV2aWNlIGlzIGFkZGVkIHRvIGEgcGVyLWRyaXZlciBsaXN0IG9mIGRldmljZXMsIGFuZCBhCitzeW1saW5rIGlzIGNyZWF0ZWQgaW4gdGhlIGRyaXZlcidzIHN5c2ZzIGRpcmVjdG9yeSB0aGF0IHBvaW50cyB0byB0aGUKK2RldmljZSdzIHBoeXNpY2FsIGRpcmVjdG9yeToKKworL3N5cy9idXMvcGNpL2RyaXZlcnMvCit8LS0gM2M1OXgKK3wgICBgLS0gMDA6MGIuMCAtPiAuLi8uLi8uLi8uLi9kZXZpY2VzL3BjaTAvMDA6MGIuMAorfC0tIEVuc29uaXEgQXVkaW9QQ0kKK3wtLSBhZ3BnYXJ0LWFtZGs3Cit8ICAgYC0tIDAwOjAwLjAgLT4gLi4vLi4vLi4vLi4vZGV2aWNlcy9wY2kwLzAwOjAwLjAKK3wtLSBlMTAwCit8ICAgYC0tIDAwOjBjLjAgLT4gLi4vLi4vLi4vLi4vZGV2aWNlcy9wY2kwLzAwOjBjLjAKK2AtLSBzZXJpYWwKKworCitUaGlzIGRyaXZlciBiaW5kaW5nIHNob3VsZCByZXBsYWNlIHRoZSBleGlzdGluZyBkcml2ZXIgYmluZGluZworbWVjaGFuaXNtIHRoZSBidXMgY3VycmVudGx5IHVzZXMuIAorCisKK1N0ZXAgNjogU3VwcGx5IGEgaG90cGx1ZyBjYWxsYmFjay4KKworV2hlbmV2ZXIgYSBkZXZpY2UgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBkcml2ZXIgbW9kZWwgY29yZSwgdGhlCit1c2Vyc3BhY2UgcHJvZ3JhbSAvc2Jpbi9ob3RwbHVnIGlzIGNhbGxlZCB0byBub3RpZnkgdXNlcnNwYWNlLiAKK1VzZXJzIGNhbiBkZWZpbmUgYWN0aW9ucyB0byBwZXJmb3JtIHdoZW4gYSBkZXZpY2UgaXMgaW5zZXJ0ZWQgb3IKK3JlbW92ZWQuIAorCitUaGUgZHJpdmVyIG1vZGVsIGNvcmUgcGFzc2VzIHNldmVyYWwgYXJndW1lbnRzIHRvIHVzZXJzcGFjZSB2aWEKK2Vudmlyb25tZW50IHZhcmlhYmxlcywgaW5jbHVkaW5nCisKKy0gQUNUSU9OOiBzZXQgdG8gJ2FkZCcgb3IgJ3JlbW92ZScKKy0gREVWUEFUSDogc2V0IHRvIHRoZSBkZXZpY2UncyBwaHlzaWNhbCBwYXRoIGluIHN5c2ZzLiAKKworQSBidXMgZHJpdmVyIG1heSBhbHNvIHN1cHBseSBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHVzZXJzcGFjZSB0bworY29uc3VtZS4gVG8gZG8gdGhpcywgYSBidXMgbXVzdCBpbXBsZW1lbnQgdGhlICdob3RwbHVnJyBtZXRob2QgaW4KK3N0cnVjdCBidXNfdHlwZToKKworICAgICBpbnQgKCpob3RwbHVnKSAoc3RydWN0IGRldmljZSAqZGV2LCBjaGFyICoqZW52cCwgCisgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtX2VudnAsIGNoYXIgKmJ1ZmZlciwgaW50IGJ1ZmZlcl9zaXplKTsKKworVGhpcyBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIC9zYmluL2hvdHBsdWcgaXMgZXhlY3V0ZWQuIAorCisKK1N0ZXAgNzogQ2xlYW5pbmcgdXAgdGhlIGJ1cyBkcml2ZXIuCisKK1RoZSBnZW5lcmljIGJ1cywgZGV2aWNlLCBhbmQgZHJpdmVyIHN0cnVjdHVyZXMgcHJvdmlkZSBzZXZlcmFsIGZpZWxkcwordGhhdCBjYW4gcmVwbGFjZSB0aG9zZSBkZWZpbmVkIHByaXZhdGVseSB0byB0aGUgYnVzIGRyaXZlci4gCisKKy0gRGV2aWNlIGxpc3QuCisKK3N0cnVjdCBidXNfdHlwZSBjb250YWlucyBhIGxpc3Qgb2YgYWxsIGRldmljZXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBidXMKK3R5cGUuIFRoaXMgaW5jbHVkZXMgYWxsIGRldmljZXMgb24gYWxsIGluc3RhbmNlcyBvZiB0aGF0IGJ1cyB0eXBlLgorQW4gaW50ZXJuYWwgbGlzdCB0aGF0IHRoZSBidXMgdXNlcyBtYXkgYmUgcmVtb3ZlZCwgaW4gZmF2b3Igb2YgdXNpbmcKK3RoaXMgb25lLgorCitUaGUgY29yZSBwcm92aWRlcyBhbiBpdGVyYXRvciB0byBhY2Nlc3MgdGhlc2UgZGV2aWNlcy4gCisKK2ludCBidXNfZm9yX2VhY2hfZGV2KHN0cnVjdCBidXNfdHlwZSAqIGJ1cywgc3RydWN0IGRldmljZSAqIHN0YXJ0LCAKKyAgICAgICAgICAgICAgICAgICAgIHZvaWQgKiBkYXRhLCBpbnQgKCpmbikoc3RydWN0IGRldmljZSAqLCB2b2lkICopKTsKKworCistIERyaXZlciBsaXN0LgorCitzdHJ1Y3QgYnVzX3R5cGUgYWxzbyBjb250YWlucyBhIGxpc3Qgb2YgYWxsIGRyaXZlcnMgcmVnaXN0ZXJlZCB3aXRoCitpdC4gQW4gaW50ZXJuYWwgbGlzdCBvZiBkcml2ZXJzIHRoYXQgdGhlIGJ1cyBkcml2ZXIgbWFpbnRhaW5zIG1heSAKK2JlIHJlbW92ZWQgaW4gZmF2b3Igb2YgdXNpbmcgdGhlIGdlbmVyaWMgb25lLiAKKworVGhlIGRyaXZlcnMgbWF5IGJlIGl0ZXJhdGVkIG92ZXIsIGxpa2UgZGV2aWNlczogCisKK2ludCBidXNfZm9yX2VhY2hfZHJ2KHN0cnVjdCBidXNfdHlwZSAqIGJ1cywgc3RydWN0IGRldmljZV9kcml2ZXIgKiBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgIHZvaWQgKiBkYXRhLCBpbnQgKCpmbikoc3RydWN0IGRldmljZV9kcml2ZXIgKiwgdm9pZCAqKSk7CisKKworUGxlYXNlIHNlZSBkcml2ZXJzL2Jhc2UvYnVzLmMgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKworLSByd3NlbSAKKworc3RydWN0IGJ1c190eXBlIGNvbnRhaW5zIGFuIHJ3c2VtIHRoYXQgcHJvdGVjdHMgYWxsIGNvcmUgYWNjZXNzZXMgdG8KK3RoZSBkZXZpY2UgYW5kIGRyaXZlciBsaXN0cy4gVGhpcyBjYW4gYmUgdXNlZCBieSB0aGUgYnVzIGRyaXZlcgoraW50ZXJuYWxseSwgYW5kIHNob3VsZCBiZSB1c2VkIHdoZW4gYWNjZXNzaW5nIHRoZSBkZXZpY2Ugb3IgZHJpdmVyCitsaXN0cyB0aGUgYnVzIG1haW50YWlucy4gCisKKworLSBEZXZpY2UgYW5kIGRyaXZlciBmaWVsZHMuIAorCitTb21lIG9mIHRoZSBmaWVsZHMgaW4gc3RydWN0IGRldmljZSBhbmQgc3RydWN0IGRldmljZV9kcml2ZXIgZHVwbGljYXRlCitmaWVsZHMgaW4gdGhlIGJ1cy1zcGVjaWZpYyByZXByZXNlbnRhdGlvbnMgb2YgdGhlc2Ugb2JqZWN0cy4gRmVlbCBmcmVlCit0byByZW1vdmUgdGhlIGJ1cy1zcGVjaWZpYyBvbmVzIGFuZCBmYXZvciB0aGUgZ2VuZXJpYyBvbmVzLiBOb3RlCit0aG91Z2gsIHRoYXQgdGhpcyB3aWxsIGxpa2VseSBtZWFuIGZpeGluZyB1cCBhbGwgdGhlIGRyaXZlcnMgdGhhdAorcmVmZXJlbmNlIHRoZSBidXMtc3BlY2lmaWMgZmllbGRzICh0aG91Z2ggdGhvc2Ugc2hvdWxkIGFsbCBiZSAxLWxpbmUKK2NoYW5nZXMpLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2R2Yi9SRUFETUUuZHZiLXVzYiBiL0RvY3VtZW50YXRpb24vZHZiL1JFQURNRS5kdmItdXNiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlYjkyMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2R2Yi9SRUFETUUuZHZiLXVzYgpAQCAtMCwwICsxLDIzMiBAQAorRG9jdW1lbnRhdGlvbiBmb3IgZHZiLXVzYi1mcmFtZXdvcmsgbW9kdWxlIGFuZCBpdHMgZGV2aWNlcworCitJZGVhIGJlaGluZCB0aGUgZHZiLXVzYi1mcmFtZXdvcmsKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbiBNYXJjaCAyMDA1IEkgZ290IHRoZSBuZXcgVHdpbmhhbiBVU0IyLjAgRFZCLVQgZGV2aWNlLiBUaGV5IHByb3ZpZGVkIHNwZWNzIGFuZCBhIGZpcm13YXJlLgorCitRdWl0ZSBrZWVuIEkgd2FudGVkIHRvIHB1dCB0aGUgZHJpdmVyICh3aXRoIHNvbWUgcXVpcmtzIG9mIGNvdXJzZSkgaW50byBkaWJ1c2IuCitBZnRlciByZWFkaW5nIHNvbWUgc3BlY3MgYW5kIGRvaW5nIHNvbWUgVVNCIHNub29waW5nLCBpdCByZWFsaXplZCwgdGhhdCB0aGUKK2RpYnVzYi1kcml2ZXIgd291bGQgYmUgYSBjb21wbGV0ZSBtZXNzIGFmdGVyd2FyZHMuIFNvIEkgZGVjaWRlZCB0byBkbyBpdCBpbiBhCitkaWZmZXJlbnQgd2F5OiBXaXRoIHRoZSBoZWxwIG9mIGEgZHZiLXVzYi1mcmFtZXdvcmsuCisKK1RoZSBmcmFtZXdvcmsgcHJvdmlkZXMgZ2VuZXJpYyBmdW5jdGlvbnMgKG1vc3RseSBrZXJuZWwgQVBJIGNhbGxzKSwgc3VjaCBhczoKKworLSBUcmFuc3BvcnQgU3RyZWFtIFVSQiBoYW5kbGluZyBpbiBjb25qdW5jdGlvbiB3aXRoIGR2Yi1kZW11eC1mZWVkLWNvbnRyb2wKKyAgKGJ1bGsgYW5kIGlzb2MgYXJlIHN1cHBvcnRlZCkKKy0gcmVnaXN0ZXJpbmcgdGhlIGRldmljZSBmb3IgdGhlIERWQi1BUEkKKy0gcmVnaXN0ZXJpbmcgYW4gSTJDLWFkYXB0ZXIgaWYgYXBwbGljYWJsZQorLSByZW1vdGUtY29udHJvbC9pbnB1dC1kZXZpY2UgaGFuZGxpbmcKKy0gZmlybXdhcmUgcmVxdWVzdGluZyBhbmQgbG9hZGluZyAoY3VycmVudGx5IGp1c3QgZm9yIHRoZSBDeXByZXNzIFVTQgorICBjb250cm9sbGVycykKKy0gb3RoZXIgZnVuY3Rpb25zL21ldGhvZHMgd2hpY2ggY2FuIGJlIHNoYXJlZCBieSBzZXZlcmFsIGRyaXZlcnMgKHN1Y2ggYXMKKyAgZnVuY3Rpb25zIGZvciBidWxrLWNvbnRyb2wtY29tbWFuZHMpCistIFRPRE86IGEgSTJDLWNodW5rZXIuIEl0IGNyZWF0ZXMgZGV2aWNlLXNwZWNpZmljIGNodW5rcyBvZiByZWdpc3Rlci1hY2Nlc3NlcworICBkZXBlbmRpbmcgb24gbGVuZ3RoIG9mIGEgcmVnaXN0ZXIgYW5kIHRoZSBudW1iZXIgb2YgdmFsdWVzIHRoYXQgY2FuIGJlCisgIG11bHRpLXdyaXR0ZW4gYW5kIG11bHRpLXJlYWQuCisKK1RoZSBzb3VyY2UgY29kZSBvZiB0aGUgcGFydGljdWxhciBEVkIgVVNCIGRldmljZXMgZG9lcyBqdXN0IHRoZSBjb21tdW5pY2F0aW9uCit3aXRoIHRoZSBkZXZpY2UgdmlhIHRoZSBidXMuIFRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIERWQi1BUEktZnVuY3Rpb25hbGl0eQoraXMgZG9uZSB2aWEgY2FsbGJhY2tzLCBhc3NpZ25lZCBpbiBhIHN0YXRpYyBkZXZpY2UtZGVzY3JpcHRpb24gKHN0cnVjdAorZHZiX3VzYl9kZXZpY2UpIGVhY2ggZGV2aWNlLWRyaXZlciBoYXMgdG8gaGF2ZS4KKworRm9yIGFuIGV4YW1wbGUgaGF2ZSBhIGxvb2sgaW4gZHJpdmVycy9tZWRpYS91c2IvZHZiLXVzYi92cDcwNDUqLgorCitPYmplY3RpdmUgaXMgdG8gbWlncmF0ZSBhbGwgdGhlIHVzYi1kZXZpY2VzIChkaWJ1c2IsIGNpbmVyZ3lUMiwgbWF5YmUgdGhlCit0dHVzYjsgZmxleGNvcC11c2IgYWxyZWFkeSBiZW5lZml0cyBmcm9tIHRoZSBnZW5lcmljIGZsZXhjb3AtZGV2aWNlKSB0byB1c2UKK3RoZSBkdmItdXNiLWxpYi4KKworVE9ETzogZHluYW1pYyBlbmFibGluZyBhbmQgZGlzYWJsaW5nIG9mIHRoZSBwaWQtZmlsdGVyIGluIHJlZ2FyZCB0byBudW1iZXIgb2YKK2ZlZWRzIHJlcXVlc3RlZC4KKworU3VwcG9ydGVkIGRldmljZXMKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitTZWUgdGhlIExpbnV4VFYgRFZCIFdpa2kgYXQgd3d3LmxpbnV4dHYub3JnIGZvciBhIGNvbXBsZXRlIGxpc3Qgb2YKK2NhcmRzL2RyaXZlcnMvZmlybXdhcmVzOgorCitodHRwOi8vd3d3LmxpbnV4dHYub3JnL3dpa2kvaW5kZXgucGhwL0RWQl9VU0IKKworMC4gSGlzdG9yeSAmIE5ld3M6CisgIDIwMDUtMDYtMzAgLSBhZGRlZCBzdXBwb3J0IGZvciBXaWRlVmlldyBXVC0yMjBVIChUaGFua3MgdG8gU3RldmUgQ2hhbmcpCisgIDIwMDUtMDUtMzAgLSBhZGRlZCBiYXNpYyBpc29jaHJvbm91cyBzdXBwb3J0IHRvIHRoZSBkdmItdXNiLWZyYW1ld29yaworCSAgICAgICBhZGRlZCBzdXBwb3J0IGZvciBDb25leGFudCBIeWJyaWQgcmVmZXJlbmNlIGRlc2lnbiBhbmQgTmVidWxhIERpZ2lUViBVU0IKKyAgMjAwNS0wNC0xNyAtIGFsbCBkaWJ1c2IgZGV2aWNlcyBwb3J0ZWQgdG8gbWFrZSB1c2Ugb2YgdGhlIGR2Yi11c2ItZnJhbWV3b3JrCisgIDIwMDUtMDQtMDIgLSByZS1lbmFibGVkIGFuZCBpbXByb3ZlZCByZW1vdGUgY29udHJvbCBjb2RlLgorICAyMDA1LTAzLTMxIC0gcG9ydGVkIHRoZSBZYWt1bW8vSGFtYS9UeXBob29uIERWQi1UIFVTQjIuMCBkZXZpY2UgdG8gZHZiLXVzYi4KKyAgMjAwNS0wMy0zMCAtIGZpcnN0IGNvbW1pdCBvZiB0aGUgZHZiLXVzYi1tb2R1bGUgYmFzZWQgb24gdGhlIGRpYnVzYi1zb3VyY2UuIEZpcnN0IGRldmljZSBpcyBhIG5ldyBkcml2ZXIgZm9yIHRoZQorCSAgICAgICBUd2luaGFuRFRWIEFscGhhIC8gTWFnaWNCb3ggSUkgVVNCMi4wLW9ubHkgRFZCLVQgZGV2aWNlLgorCisgIChjaGFuZ2UgZnJvbSBkdmItZGlidXNiIHRvIGR2Yi11c2IpCisgIDIwMDUtMDMtMjggLSBhZGRlZCBzdXBwb3J0IGZvciB0aGUgQVZlck1lZGlhIEF2ZXJUViBEVkItVCBVU0IyLjAgZGV2aWNlIChUaGFua3MgdG8gR2xlbiBIYXJyaXMgYW5kIEppdW4tS3VlaSBKdW5nLCBBVmVyTWVkaWEpCisgIDIwMDUtMDMtMTQgLSBhZGRlZCBzdXBwb3J0IGZvciB0aGUgVHlwaG9vbi9ZYWt1bW8vSEFNQSBEVkItVCBtb2JpbGUgVVNCMi4wCisgIDIwMDUtMDItMTEgLSBhZGRlZCBzdXBwb3J0IGZvciB0aGUgS1dvcmxkL0FEU1RlY2ggSW5zdGFudCBEVkItVCBVU0IyLjAuIFRoYW5rcyBhIGxvdCB0byBKb2FjaGltIHZvbiBDYXJvbgorICAyMDA1LTAyLTAyIC0gYWRkZWQgc3VwcG9ydCBmb3IgdGhlIEhhdXBwYXVnZSBXaW4tVFYgTm92YS1UIFVTQjIKKyAgMjAwNS0wMS0zMSAtIGRpc3RvcnRlZCBzdHJlYW1pbmcgaXMgZ29uZSBmb3IgVVNCMS4xIGRldmljZXMKKyAgMjAwNS0wMS0xMyAtIG1vdmVkIHRoZSBtaXJyb3JlZCBwaWRfZmlsdGVyX3RhYmxlIGJhY2sgdG8gZHZiLWRpYnVzYgorCSAgICAgLSBmaXJzdCBhbG1vc3Qgd29ya2luZyB2ZXJzaW9uIGZvciBIYW5mVGVrIFVNVC0wMTAKKwkgICAgIC0gZm91bmQgb3V0LCB0aGF0IFlha3Vtby9IQU1BL1R5cGhvb24gYXJlIHByZWRlY2Vzc29ycyBvZiB0aGUgSGFuZlRlayBVTVQtMDEwCisgIDIwMDUtMDEtMTAgLSByZWZhY3RvcmluZyBjb21wbGV0ZWQsIG5vdyBldmVyeXRoaW5nIGlzIHZlcnkgZGVsaWdodGZ1bAorCSAgICAgLSB0dW5lciBxdWlya3MgZm9yIHNvbWUgd2VpcmQgZGV2aWNlcyAoQXJ0ZWMgVDEgQU4yMjM1IGRldmljZSBoYXMgc29tZXRpbWVzIGEKKwkgICAgICAgUGFuYXNvbmljIFR1bmVyIGFzc2VtYmxlZCkuIFR1bmVycHJvYmluZyBpbXBsZW1lbnRlZC4gVGhhbmtzIGEgbG90IHRvIEd1bm5hciBXaXR0aWNoLgorICAyMDA0LTEyLTI5IC0gYWZ0ZXIgc2V2ZXJhbCBkYXlzIG9mIHN0cnVnZ2xpbmcgYXJvdW5kIGJ1ZyBvZiBubyByZXR1cm5pbmcgVVJCcyBmaXhlZC4KKyAgMjAwNC0xMi0yNiAtIHJlZmFjdG9yZWQgdGhlIGRpYnVzYi1kcml2ZXIsIHNwbGl0dGVkIGludG8gc2VwYXJhdGUgZmlsZXMKKwkgICAgIC0gaTJjLXByb2JpbmcgZW5hYmxlZAorICAyMDA0LTEyLTA2IC0gcG9zc2liaWxpdHkgZm9yIGRlbW9kIGkyYy1hZGRyZXNzIHByb2JpbmcKKwkgICAgIC0gbmV3IHVzYiBJRHMgKENvbXBybywgQXJ0ZWMpCisgIDIwMDQtMTEtMjMgLSBtZXJnZWQgY2hhbmdlcyBmcm9tIERpQjMwMDBNQ192ZXIyLjEKKwkgICAgIC0gcmV2aXNlZCB0aGUgZGVidWdnaW5nCisJICAgICAtIHBvc3NpYmlsaXR5IHRvIGRlbGl2ZXIgdGhlIGNvbXBsZXRlIFRTIGZvciBVU0IyLjAKKyAgMjAwNC0xMS0yMSAtIGZpcnN0IHdvcmtpbmcgdmVyc2lvbiBvZiB0aGUgZGliMzAwMG1jL3AgZnJvbnRlbmQgZHJpdmVyLgorICAyMDA0LTExLTEyIC0gYWRkZWQgYWRkaXRpb25hbCByZW1vdGUgY29udHJvbCBrZXlzLiBUaGFua3MgdG8gVXdlIEhhbmtlLgorICAyMDA0LTExLTA3IC0gYWRkZWQgcmVtb3RlIGNvbnRyb2wgc3VwcG9ydC4gVGhhbmtzIHRvIERhdmlkIE1hdHRoZXdzLgorICAyMDA0LTExLTA1IC0gYWRkZWQgc3VwcG9ydCBmb3IgYSBuZXcgZGV2aWNlcyAoR3JhbmR0ZWMvQXZlcm1lZGlhL0FydGVjKQorCSAgICAgLSBtZXJnZWQgbXkgY2hhbmdlcyAoZm9yIGRpYjMwMDBtYi9kaWJ1c2IpIHRvIHRoZSBGRV9SRUZBQ1RPUklORywgYmVjYXVzZSBpdCBiZWNhbWUgSEVBRAorCSAgICAgLSBtb3ZlZCB0cmFuc2ZlciBjb250cm9sIChwaWQgZmlsdGVyLCBmaWZvIGNvbnRyb2wpIGZyb20gdXNiIGRyaXZlciB0byBmcm9udGVuZCwgaXQgc2VlbXMKKwkgICAgICAgYmV0dGVyIHNldHRsZWQgdGhlcmUgKGFkZGVkIHhmZXJfb3BzLXN0cnVjdCkKKwkgICAgIC0gY3JlYXRlZCBhIGNvbW1vbiBmaWxlcyBmb3IgZnJvbnRlbmRzIChtYy9wL21iKQorICAyMDA0LTA5LTI4IC0gYWRkZWQgc3VwcG9ydCBmb3IgYSBuZXcgZGV2aWNlIChVbmtub3duLCB2ZW5kb3IgSUQgaXMgSHlwZXItUGFsdGVrKQorICAyMDA0LTA5LTIwIC0gYWRkZWQgc3VwcG9ydCBmb3IgYSBuZXcgZGV2aWNlIChDb21wcm8gRFZCLVUyMDAwKSwgdGhhbmtzCisJICAgICAgIHRvIEFtYXVyeSBEZW1vbCBmb3IgcmVwb3J0aW5nCisJICAgICAtIGNoYW5nZWQgdXNiIFRTIHRyYW5zZmVyIG1ldGhvZCAoc2V2ZXJhbCB1cmJzLCBzdG9wcGluZyB0cmFuc2ZlcgorCSAgICAgICBiZWZvcmUgc2V0dGluZyBhIG5ldyBwaWQpCisgIDIwMDQtMDktMTMgLSBhZGRlZCBzdXBwb3J0IGZvciBhIG5ldyBkZXZpY2UgKEFydGVjIFQxIFVTQiBUVkJPWCksIHRoYW5rcworCSAgICAgICB0byBDaHJpc3RpYW4gTW90c2Noa2UgZm9yIHJlcG9ydGluZworICAyMDA0LTA5LTA1IC0gcmVsZWFzZWQgdGhlIGRpYnVzYiBkZXZpY2UgYW5kIGRpYjMwMDBtYi1mcm9udGVuZCBkcml2ZXIKKworICAob2xkIG5ld3MgZm9yIHZwNzA0MS5jKQorICAyMDA0LTA3LTE1IC0gZm91bmQgb3V0LCBieSBhY2NpZGVudCwgdGhhdCB0aGUgZGV2aWNlIGhhcyBhIFRVQTYwMTBYUyBmb3IKKwkgICAgICAgUExMCisgIDIwMDQtMDctMTIgLSBmaWd1cmVkIG91dCwgdGhhdCB0aGUgZHJpdmVyIHNob3VsZCBhbHNvIHdvcmsgd2l0aCB0aGUKKwkgICAgICAgQ1RTIFBvcnRhYmxlIChDaGluZXNlIFRlbGV2aXNpb24gU3lzdGVtKQorICAyMDA0LTA3LTA4IC0gZmlybXdhcmUtZXh0cmFjdGlvbi0yLjQyMi1wcm9ibGVtIHNvbHZlZCwgZHJpdmVyIGlzIG5vdyB3b3JraW5nCisJICAgICAgIHByb3Blcmx5IHdpdGggZmlybXdhcmUgZXh0cmFjdGVkIGZyb20gMi40MjIKKwkgICAgIC0gI2lmIGZvciAyLjYuNCAoZHZiKSwgY29tcGlsZSBpc3N1ZQorCSAgICAgLSBjaGFuZ2VkIGZpcm13YXJlIGhhbmRsaW5nLCBzZWUgdnA3MDQxLnR4dCBzZWMgMS4xCisgIDIwMDQtMDctMDIgLSBzb21lIHR1bmVyIG1vZGlmaWNhdGlvbnMsIHYwLjEsIGNsZWFudXBzLCBmaXJzdCBwdWJsaWMKKyAgMjAwNC0wNi0yOCAtIG5vdyB1c2luZyB0aGUgZHZiX2RteF9zd2ZpbHRlcl9wYWNrZXRzLCBldmVyeXRoaW5nCisJICAgICAgIHJ1bnMgZmluZSBub3cKKyAgMjAwNC0wNi0yNyAtIGFibGUgdG8gd2F0Y2ggYW5kIHN3aXRjaGluZyBjaGFubmVscyAocHJlLWFscGhhKQorCSAgICAgLSBubyBzZWN0aW9uIGZpbHRlcmluZyB5ZXQKKyAgMjAwNC0wNi0wNiAtIGZpcnN0IFRTIHJlY2VpdmVkLCBidXQga2VybmVsIG9vcHMgOi8KKyAgMjAwNC0wNS0xNCAtIGZpcm13YXJlIGxvYWRlciBpcyB3b3JraW5nCisgIDIwMDQtMDUtMTEgLSBzdGFydCB3cml0aW5nIHRoZSBkcml2ZXIKKworMS4gSG93IHRvIHVzZT8KKzEuMS4gRmlybXdhcmUKKworTW9zdCBvZiB0aGUgVVNCIGRyaXZlcnMgbmVlZCB0byBkb3dubG9hZCBhIGZpcm13YXJlIHRvIHRoZSBkZXZpY2UgYmVmb3JlIHN0YXJ0Cit3b3JraW5nLgorCitIYXZlIGEgbG9vayBhdCB0aGUgV2lraXBhZ2UgZm9yIHRoZSBEVkItVVNCLWRyaXZlcnMgdG8gZmluZCBvdXQsIHdoaWNoIGZpcm13YXJlCit5b3UgbmVlZCBmb3IgeW91ciBkZXZpY2U6CisKK2h0dHA6Ly93d3cubGludXh0di5vcmcvd2lraS9pbmRleC5waHAvRFZCX1VTQgorCisxLjIuIENvbXBpbGluZworCitTaW5jZSB0aGUgZHJpdmVyIGlzIGluIHRoZSBsaW51eCBrZXJuZWwsIGFjdGl2YXRpbmcgdGhlIGRyaXZlciBpbgoreW91ciBmYXZvcml0ZSBjb25maWctZW52aXJvbm1lbnQgc2hvdWxkIHN1ZmZpY2llbnQuIEkgcmVjb21tZW5kCit0byBjb21waWxlIHRoZSBkcml2ZXIgYXMgbW9kdWxlLiBIb3RwbHVnIGRvZXMgdGhlIHJlc3QuCisKK0lmIHlvdSB1c2UgZHZiLWtlcm5lbCBlbnRlciB0aGUgYnVpbGQtMi42IGRpcmVjdG9yeSBydW4gJ21ha2UnIGFuZCAnaW5zbW9kLnNoCitsb2FkJyBhZnRlcndhcmRzLgorCisxLjMuIExvYWRpbmcgdGhlIGRyaXZlcnMKKworSG90cGx1ZyBpcyBhYmxlIHRvIGxvYWQgdGhlIGRyaXZlciwgd2hlbiBpdCBpcyBuZWVkZWQgKGJlY2F1c2UgeW91IHBsdWdnZWQKK2luIHRoZSBkZXZpY2UpLgorCitJZiB5b3Ugd2FudCB0byBlbmFibGUgZGVidWcgb3V0cHV0LCB5b3UgaGF2ZSB0byBsb2FkIHRoZSBkcml2ZXIgbWFudWFsbHkgYW5kCitmcm9tIHdpdGhpbiB0aGUgZHZiLWtlcm5lbCBjdnMgcmVwb3NpdG9yeS4KKworZmlyc3QgaGF2ZSBhIGxvb2ssIHdoaWNoIGRlYnVnIGxldmVsIGFyZSBhdmFpbGFibGU6CisKK21vZGluZm8gZHZiLXVzYgorbW9kaW5mbyBkdmItdXNiLXZwNzA0NQorZXRjLgorCittb2Rwcm9iZSBkdmItdXNiIGRlYnVnPTxsZXZlbD4KK21vZHByb2JlIGR2Yi11c2ItdnA3MDQ1IGRlYnVnPTxsZXZlbD4KK2V0Yy4KKworc2hvdWxkIGRvIHRoZSB0cmljay4KKworV2hlbiB0aGUgZHJpdmVyIGlzIGxvYWRlZCBzdWNjZXNzZnVsbHksIHRoZSBmaXJtd2FyZSBmaWxlIHdhcyBpbgordGhlIHJpZ2h0IHBsYWNlIGFuZCB0aGUgZGV2aWNlIGlzIGNvbm5lY3RlZCwgdGhlICJQb3dlciItTEVEIHNob3VsZCBiZQordHVybmVkIG9uLgorCitBdCB0aGlzIHBvaW50IHlvdSBzaG91bGQgYmUgYWJsZSB0byBzdGFydCBhIGR2Yi1jYXBhYmxlIGFwcGxpY2F0aW9uLiBJJ20gdXNlCisodHxzKXphcCwgbXBsYXllciBhbmQgZHZic2NhbiB0byB0ZXN0IHRoZSBiYXNpY3MuIFZEUi14aW5lIHByb3ZpZGVzIHRoZQorbG9uZy10ZXJtIHRlc3Qgc2NlbmFyaW8uCisKKzIuIEtub3duIHByb2JsZW1zIGFuZCBidWdzCisKKy0gRG9uJ3QgcmVtb3ZlIHRoZSBVU0IgZGV2aWNlIHdoaWxlIHJ1bm5pbmcgYW4gRFZCIGFwcGxpY2F0aW9uLCB5b3VyIHN5c3RlbQorICB3aWxsIGdvIGNyYXp5IG9yIGRpZSBtb3N0IGxpa2VseS4KKworMi4xLiBBZGRpbmcgc3VwcG9ydCBmb3IgZGV2aWNlcworCitUT0RPCisKKzIuMi4gVVNCMS4xIEJhbmR3aWR0aCBsaW1pdGF0aW9uCisKK0EgbG90IG9mIHRoZSBjdXJyZW50bHkgc3VwcG9ydGVkIGRldmljZXMgYXJlIFVTQjEuMSBhbmQgdGh1cyB0aGV5IGhhdmUgYQorbWF4aW11bSBiYW5kd2lkdGggb2YgYWJvdXQgNS02IE1CaXQvcyB3aGVuIGNvbm5lY3RlZCB0byBhIFVTQjIuMCBodWIuCitUaGlzIGlzIG5vdCBlbm91Z2ggZm9yIHJlY2VpdmluZyB0aGUgY29tcGxldGUgdHJhbnNwb3J0IHN0cmVhbSBvZiBhCitEVkItVCBjaGFubmVsICh3aGljaCBpcyBhYm91dCAxNiBNQml0L3MpLiBOb3JtYWxseSB0aGlzIGlzIG5vdCBhCitwcm9ibGVtLCBpZiB5b3Ugb25seSB3YW50IHRvIHdhdGNoIFRWICh0aGlzIGRvZXMgbm90IGFwcGx5IGZvciBIRFRWKSwKK2J1dCB3YXRjaGluZyBhIGNoYW5uZWwgd2hpbGUgcmVjb3JkaW5nIGFub3RoZXIgY2hhbm5lbCBvbiB0aGUgc2FtZQorZnJlcXVlbmN5IHNpbXBseSBkb2VzIG5vdCB3b3JrIHZlcnkgd2VsbC4gVGhpcyBhcHBsaWVzIHRvIGFsbCBVU0IxLjEKK0RWQi1UIGRldmljZXMsIG5vdCBqdXN0IHRoZSBkdmItdXNiLWRldmljZXMpCisKK1RoZSBidWcsIHdoZXJlIHRoZSBUUyBpcyBkaXN0b3J0ZWQgYnkgYSBoZWF2eSB1c2FnZSBvZiB0aGUgZGV2aWNlIGlzIGdvbmUKK2RlZmluaXRlbHkuIEFsbCBkdmItdXNiLWRldmljZXMgSSB3YXMgdXNpbmcgKFR3aW5oYW4sIEt3b3JsZCwgRGlCY29tKSBhcmUKK3dvcmtpbmcgbGlrZSBjaGFybSBub3cgd2l0aCBWRFIuIFNvbWV0aW1lcyBJIGV2ZW4gd2FzIGFibGUgdG8gcmVjb3JkIGEgY2hhbm5lbAorYW5kIHdhdGNoIGFub3RoZXIgb25lLgorCisyLjMuIENvbW1lbnRzCisKK1BhdGNoZXMsIGNvbW1lbnRzIGFuZCBzdWdnZXN0aW9ucyBhcmUgdmVyeSB2ZXJ5IHdlbGNvbWUuCisKKzMuIEFja25vd2xlZGdlbWVudHMKKyAgIEFtYXVyeSBEZW1vbCAoYWRlbW9sQGRpYmNvbS5mcikgYW5kIEZyYW5jb2lzIEthbm91bm5pa29mZiBmcm9tIERpQmNvbSBmb3IKKyAgICBwcm92aWRpbmcgc3BlY3MsIGNvZGUgYW5kIGhlbHAsIG9uIHdoaWNoIHRoZSBkdmItZGlidXNiLCBkaWIzMDAwbWIgYW5kCisgICAgZGliMzAwMG1jIGFyZSBiYXNlZC4KKworICAgRGF2aWQgTWF0dGhld3MgZm9yIGlkZW50aWZ5aW5nIGEgbmV3IGRldmljZSB0eXBlIChBcnRlYyBUMSB3aXRoIEFOMjIzNSkKKyAgICBhbmQgZm9yIGV4dGVuZGluZyBkaWJ1c2Igd2l0aCByZW1vdGUgY29udHJvbCBldmVudCBoYW5kbGluZy4gVGhhbmsgeW91LgorCisgICBBbGV4IFdvb2RzIGZvciBmcmVxdWVudGx5IGFuc3dlcmluZyBxdWVzdGlvbiBhYm91dCB1c2IgYW5kIGR2YgorICAgIHN0dWZmLCBhIGJpZyB0aGFuayB5b3UuCisKKyAgIEJlcm5kIFdhZ25lciBmb3IgaGVscGluZyB3aXRoIGh1Z2UgYnVnIHJlcG9ydHMgYW5kIGRpc2N1c3Npb25zLgorCisgICBHdW5uYXIgV2l0dGljaCBhbmQgSm9hY2hpbSB2b24gQ2Fyb24gZm9yIHRoZWlyIHRydXN0IGZvciBwcm92aWRpbmcKKyAgICByb290LXNoZWxscyBvbiB0aGVpciBtYWNoaW5lcyB0byBpbXBsZW1lbnQgc3VwcG9ydCBmb3IgbmV3IGRldmljZXMuCisKKyAgIEFsbGFuIFRoaXJkIGFuZCBNaWNoYWVsIEh1dGNoaW5zb24gZm9yIHRoZWlyIGhlbHAgdG8gd3JpdGUgdGhlIE5lYnVsYQorICAgIGRpZ2l0di1kcml2ZXIuCisKKyAgIEdsZW4gSGFycmlzIGZvciBicmluZ2luZyB1cCwgdGhhdCB0aGVyZSBpcyBhIG5ldyBkaWJ1c2ItZGV2aWNlIGFuZCBKaXVuLUt1ZWkKKyAgICBKdW5nIGZyb20gQVZlck1lZGlhIHdobyBraW5kbHkgcHJvdmlkZWQgYSBzcGVjaWFsIGZpcm13YXJlIHRvIGdldCB0aGUgZGV2aWNlCisgICAgdXAgYW5kIHJ1bm5pbmcgaW4gTGludXguCisKKyAgIEplbm5pZmVyIENoZW4sIEplZmYgYW5kIEphY2sgZnJvbSBUd2luaGFuIGZvciBraW5kbHkgc3VwcG9ydGluZyBieQorCXdyaXRpbmcgdGhlIHZwNzA0NS1kcml2ZXIuCisKKyAgIFN0ZXZlIENoYW5nIGZyb20gV2lkZVZpZXcgZm9yIHByb3ZpZGluZyBpbmZvcm1hdGlvbiBmb3IgbmV3IGRldmljZXMgYW5kCisJZmlybXdhcmUgZmlsZXMuCisKKyAgIE1pY2hhZWwgUGF4dG9uIGZvciBzdWJtaXR0aW5nIHJlbW90ZSBjb250cm9sIGtleW1hcHMuCisKKyAgIFNvbWUgZ3V5cyBvbiB0aGUgbGludXgtZHZiIG1haWxpbmcgbGlzdCBmb3IgZW5jb3VyYWdpbmcgbWUuCisKKyAgIFBldGVyIFNjaGlsZG1hbm4gPnBldGVyLnNjaGlsZG1hbm4tbm9zcGFtLWF0LXdlYi5kZTwgZm9yIGhpcworICAgIHVzZXItbGV2ZWwgZmlybXdhcmUgbG9hZGVyLCB3aGljaCBzYXZlcyBhIGxvdCBvZiB0aW1lCisgICAgKHdoZW4gd3JpdGluZyB0aGUgdnA3MDQxIGRyaXZlcikKKworICAgVWxmIEhlcm1lbmF1IGZvciBoZWxwaW5nIG1lIG91dCB3aXRoIHRyYWRpdGlvbmFsIGNoaW5lc2UuCisKKyAgIEFuZHLDqSBTbW9rdHVuIGFuZCBDaHJpc3RpYW4gRnLDtm1tZWwgZm9yIHN1cHBvcnRpbmcgbWUgd2l0aAorICAgIGhhcmR3YXJlIGFuZCBsaXN0ZW5pbmcgdG8gbXkgcHJvYmxlbXMgdmVyeSBwYXRpZW50bHkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2R2Yi9hdmVybWVkaWEudHh0IGIvRG9jdW1lbnRhdGlvbi9kdmIvYXZlcm1lZGlhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDRjMDA5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kdmIvYXZlcm1lZGlhLnR4dApAQCAtMCwwICsxLDMwMSBAQAorSE9XVE86IEdldCBBbiBBdmVybWVkaWEgRFZCLVQgd29ya2luZyB1bmRlciBMaW51eAorCSAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKworICAgVGFibGUgb2YgQ29udGVudHMKKyAgIEFzc3VtcHRpb25zIGFuZCBJbnRyb2R1Y3Rpb24KKyAgIFRoZSBBdmVybWVkaWEgRFZCLVQKKyAgIEdldHRpbmcgdGhlIGNhcmQgZ29pbmcKKyAgIFJlY2VpdmluZyBEVkItVCBpbiBBdXN0cmFsaWEKKyAgIEtub3duIExpbWl0YXRpb25zCisgICBGdXJ0aGVyIFVwZGF0ZQorCitBc3N1bXB0aW9ucyBhbmQgSW50cm9kdWN0aW9uCisKKyAgIEl0ICBpcyBhc3N1bWVkIHRoYXQgdGhlIHJlYWRlciB1bmRlcnN0YW5kcyB0aGUgYmFzaWMgc3RydWN0dXJlCisgICBvZiAgdGhlIExpbnV4IEtlcm5lbCBEVkIgZHJpdmVycyBhbmQgdGhlIGdlbmVyYWwgcHJpbmNpcGxlcyBvZgorICAgRGlnaXRhbCBUVi4KKworICAgT25lICBzaWduaWZpY2FudCBkaWZmZXJlbmNlIGJldHdlZW4gRGlnaXRhbCBUViBhbmQgQW5hbG9ndWUgVFYKKyAgIHRoYXQgIHRoZSAgdW53YXJ5ICAobGlrZSAgbXlzZWxmKSAgc2hvdWxkICBjb25zaWRlciAgaXMgIHRoYXQsCisgICBhbHRob3VnaCAgdGhlICBjb21wb25lbnQgIHN0cnVjdHVyZSAgb2YgYnVkZ2V0IERWQi1UIGNhcmRzIGFyZQorICAgc3Vic3RhbnRpYWxseSAgc2ltaWxhciAgdG8gQW5hbG9ndWUgVFYgY2FyZHMsIHRoZXkgZnVuY3Rpb24gaW4KKyAgIHN1YnN0YW50aWFsbHkgZGlmZmVyZW50IHdheXMuCisKKyAgIFRoZSAgcHVycG9zZSAgb2YgIGFuICBBbmFsb2d1ZSBUViBpcyB0byByZWNlaXZlIGFuZCBkaXNwbGF5IGFuCisgICBBbmFsb2d1ZSAgVGVsZXZpc2lvbiAgc2lnbmFsLiBBbiBBbmFsb2d1ZSBUViBzaWduYWwgKG90aGVyd2lzZQorICAga25vd24gIGFzICBjb21wb3NpdGUgIHZpZGVvKSAgaXMgIGFuICBhbmFsb2d1ZSAgZW5jb2RpbmcgIG9mIGEKKyAgIHNlcXVlbmNlICBvZiAgaW1hZ2UgZnJhbWVzICgyNSBwZXIgc2Vjb25kKSByYXN0ZXJpc2VkIHVzaW5nIGFuCisgICBpbnRlcmxhY2luZyAgIHRlY2huaXF1ZS4gICBJbnRlcmxhY2luZyAgdGFrZXMgIHR3byAgZmllbGRzICB0bworICAgcmVwcmVzZW50ICBvbmUgIGZyYW1lLiAgQ29tcHV0ZXJzIHRvZGF5IGFyZSBhdCB0aGVpciBiZXN0IHdoZW4KKyAgIGRlYWxpbmcgIHdpdGggIGRpZ2l0YWwgIHNpZ25hbHMsICBub3QgIGFuYWxvZ3VlICBzaWduYWxzIGFuZCBhCisgICBjb21wb3NpdGUgIHZpZGVvIHNpZ25hbCBpcyBhYm91dCBhcyBmYXIgcmVtb3ZlZCBmcm9tIGEgZGlnaXRhbAorICAgZGF0YSBzdHJlYW0gYXMgeW91IGNhbiBnZXQuIFRoZXJlZm9yZSwgYW4gQW5hbG9ndWUgVFYgY2FyZCBmb3IKKyAgIGEgUEMgaGFzIHRoZSBmb2xsb3dpbmcgcHVycG9zZToKKworICAgICAqIFR1bmUgdGhlIHJlY2VpdmVyIHRvIHJlY2VpdmUgYSBicm9hZGNhc3Qgc2lnbmFsCisgICAgICogZGVtb2R1bGF0ZSB0aGUgYnJvYWRjYXN0IHNpZ25hbAorICAgICAqIGRlbXVsdGlwbGV4ICB0aGUgIGFuYWxvZ3VlIHZpZGVvIHNpZ25hbCBhbmQgYW5hbG9ndWUgYXVkaW8KKyAgICAgICBzaWduYWwgIChub3RlIHNvbWUgY291bnRyaWVzIGVtcGxveSBhIGRpZ2l0YWwgYXVkaW8gc2lnbmFsCisgICAgICAgZW1iZWRkZWQgIHdpdGhpbiB0aGUgbW9kdWxhdGVkIGNvbXBvc2l0ZSBhbmFsb2d1ZSBzaWduYWwgLQorICAgICAgIE5JQ0FNLikKKyAgICAgKiBkaWdpdGl6ZSAgdGhlIGFuYWxvZ3VlIHZpZGVvIHNpZ25hbCBhbmQgbWFrZSB0aGUgcmVzdWx0aW5nCisgICAgICAgZGF0YXN0cmVhbSBhdmFpbGFibGUgdG8gdGhlIGRhdGEgYnVzLgorCisgICBUaGUgIGRpZ2l0YWwgIGRhdGFzdHJlYW0gZnJvbSBhbiBBbmFsb2d1ZSBUViBjYXJkIGlzIGdlbmVyYXRlZAorICAgYnkgIGNpcmN1aXRyeSBvbiB0aGUgY2FyZCBhbmQgaXMgb2Z0ZW4gcHJlc2VudGVkIHVuY29tcHJlc3NlZC4KKyAgIEZvciAgYSBQQUwgVFYgc2lnbmFsIGVuY29kZWQgYXQgYSByZXNvbHV0aW9uIG9mIDc2OHg1NzYgMjQtYml0CisgICBjb2xvciBwaXhlbHMgb3ZlciAyNSBmcmFtZXMgcGVyIHNlY29uZCAtIGEgZmFpciBhbW91bnQgb2YgZGF0YQorICAgaXMgIGdlbmVyYXRlZCBhbmQgbXVzdCBiZSBwcm9jZXNzZWQgYnkgdGhlIFBDIGJlZm9yZSBpdCBjYW4gYmUKKyAgIGRpc3BsYXllZCAgb24gdGhlIHZpZGVvIG1vbml0b3Igc2NyZWVuLiBTb21lIEFuYWxvZ3VlIFRWIGNhcmRzCisgICBmb3IgIFBDcyAgaGF2ZSAgb25ib2FyZCAgTVBFRzIgIGVuY29kZXJzICB3aGljaCBwZXJtaXQgdGhlIHJhdworICAgZGlnaXRhbCAgZGF0YSAgc3RyZWFtICB0byBiZSBwcmVzZW50ZWQgdG8gdGhlIFBDIGluIGFuIGVuY29kZWQKKyAgIGFuZCAgY29tcHJlc3NlZCAgZm9ybSAgLSAgc2ltaWxhciAgdG8gdGhlIGZvcm0gdGhhdCBpcyB1c2VkIGluCisgICBEaWdpdGFsIFRWLgorCisgICBUaGUgIHB1cnBvc2Ugb2YgYSBzaW1wbGUgYnVkZ2V0IGRpZ2l0YWwgVFYgY2FyZCAoRFZCLVQsQyBvciBTKQorICAgaXMgdG8gc2ltcGx5OgorCisgICAgICogVHVuZSB0aGUgcmVjZWl2ZWQgdG8gcmVjZWl2ZSBhIGJyb2FkY2FzdCBzaWduYWwuCisgICAgICogRXh0cmFjdCAgdGhlIGVuY29kZWQgZGlnaXRhbCBkYXRhc3RyZWFtIGZyb20gdGhlIGJyb2FkY2FzdAorICAgICAgIHNpZ25hbC4KKyAgICAgKiBNYWtlICB0aGUgIGVuY29kZWQgZGlnaXRhbCBkYXRhc3RyZWFtIChNUEVHMikgYXZhaWxhYmxlIHRvCisgICAgICAgdGhlIGRhdGEgYnVzLgorCisgICBUaGUgIHNpZ25pZmljYW50ICBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byBpcyB0aGF0IHRoZSB0dW5lcgorICAgb24gIHRoZSBhbmFsb2d1ZSBUViBjYXJkIHNwaXRzIG91dCBhbiBBbmFsb2d1ZSBzaWduYWwsIHdoZXJlYXMKKyAgIHRoZSAgdHVuZXIgIG9uICB0aGUgIGRpZ2l0YWwgIFRWICBjYXJkICBzcGl0cyBvdXQgYSBjb21wcmVzc2VkCisgICBlbmNvZGVkICAgZGlnaXRhbCAgIGRhdGFzdHJlYW0uICAgQXMgIHRoZSAgc2lnbmFsICBpcyAgYWxyZWFkeQorICAgZGlnaXRpc2VkLCAgaXQgIGlzICB0cml2aWFsICB0byBwYXNzIHRoaXMgZGF0YXN0cmVhbSB0byB0aGUgUEMKKyAgIGRhdGFidXMgIHdpdGggIG1pbmltYWwgIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBhbmQgdGhlbiBleHRyYWN0CisgICB0aGUgIGRpZ2l0YWwgIHZpZGVvICBhbmQgYXVkaW8gZGF0YXN0cmVhbXMgcGFzc2luZyB0aGVtIHRvIHRoZQorICAgYXBwcm9wcmlhdGUgc29mdHdhcmUgb3IgaGFyZHdhcmUgZm9yIGRlY29kaW5nIGFuZCB2aWV3aW5nLgorICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKworVGhlIEF2ZXJtZWRpYSBEVkItVAorCisgICBUaGUgQXZlcm1lZGlhIERWQi1UIGlzIGEgYnVkZ2V0IFBDSSBEVkIgY2FyZC4gSXQgaGFzIDMgaW5wdXRzOgorCisgICAgICogUkYgVHVuZXIgSW5wdXQKKyAgICAgKiBDb21wb3NpdGUgVmlkZW8gSW5wdXQgKFJDQSBKYWNrKQorICAgICAqIFNWSURFTyBJbnB1dCAoTWluaS1ESU4pCisKKyAgIFRoZSAgUkYgIFR1bmVyICBJbnB1dCAgaXMgdGhlIGlucHV0IHRvIHRoZSB0dW5lciBtb2R1bGUgb2YgdGhlCisgICBjYXJkLiAgVGhlICBUdW5lciAgaXMgIG90aGVyd2lzZSBrbm93biBhcyB0aGUgIkZyb250ZW5kIiAuIFRoZQorICAgRnJvbnRlbmQgb2YgdGhlIEF2ZXJtZWRpYSBEVkItVCBpcyBhIE1pY3JvdHVuZSA3MjAyRC4gQSB0aW1lbHkKKyAgIHBvc3QgIHRvICB0aGUgIGxpbnV4LWR2YiAgbWFpbGluZyAgbGlzdCAgYXNjZXJ0YWluZWQgIHRoYXQgdGhlCisgICBNaWNyb3R1bmUgIDcyMDJEICBpcyAgc3VwcG9ydGVkICBieSB0aGUgc3A4ODd4IGRyaXZlciB3aGljaCBpcworICAgZm91bmQgaW4gdGhlIGR2Yi1odyBDVlMgbW9kdWxlLgorCisgICBUaGUgIERWQi1UIGNhcmQgaXMgYmFzZWQgYXJvdW5kIHRoZSBCVDg3OCBjaGlwIHdoaWNoIGlzIGEgdmVyeQorICAgY29tbW9uIG11bHRpbWVkaWEgYnJpZGdlIGFuZCBvZnRlbiBmb3VuZCBvbiBBbmFsb2d1ZSBUViBjYXJkcy4KKyAgIFRoZXJlIGlzIG5vIG9uLWJvYXJkIE1QRUcyIGRlY29kZXIsIHdoaWNoIG1lYW5zIHRoYXQgYWxsIE1QRUcyCisgICBkZWNvZGluZyAgbXVzdCAgYmUgZG9uZSBpbiBzb2Z0d2FyZSwgb3IgaWYgeW91IGhhdmUgb25lLCBvbiBhbgorICAgTVBFRzIgaGFyZHdhcmUgZGVjb2RpbmcgY2FyZCBvciBjaGlwc2V0LgorICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKworR2V0dGluZyB0aGUgY2FyZCBnb2luZworCisgICBJbiBvcmRlciB0byBmaXJlIHVwIHRoZSBjYXJkLCBpdCBpcyBuZWNlc3NhcnkgdG8gbG9hZCBhIG51bWJlcgorICAgb2YgbW9kdWxlcyBmcm9tIHRoZSBEVkIgZHJpdmVyIHNldC4gUHJpb3IgdG8gdGhpcyBpdCB3aWxsIGhhdmUKKyAgIGJlZW4gIG5lY2Vzc2FyeSB0byBkb3dubG9hZCB0aGVzZSBkcml2ZXJzIGZyb20gdGhlIGxpbnV4dHYgQ1ZTCisgICBzZXJ2ZXIgYW5kIGNvbXBpbGUgdGhlbSBzdWNjZXNzZnVsbHkuCisKKyAgIERlcGVuZGluZyBvbiB0aGUgY2FyZCdzIGZlYXR1cmUgc2V0LCB0aGUgRGV2aWNlIERyaXZlciBBUEkgZm9yCisgICBEVkIgdW5kZXIgTGludXggd2lsbCBleHBvc2Ugc29tZSBvZiB0aGUgZm9sbG93aW5nIGRldmljZSBmaWxlcworICAgaW4gdGhlIC9kZXYgdHJlZToKKworICAgICAqIC9kZXYvZHZiL2FkYXB0ZXIwL2F1ZGlvMAorICAgICAqIC9kZXYvZHZiL2FkYXB0ZXIwL2NhMAorICAgICAqIC9kZXYvZHZiL2FkYXB0ZXIwL2RlbXV4MAorICAgICAqIC9kZXYvZHZiL2FkYXB0ZXIwL2R2cjAKKyAgICAgKiAvZGV2L2R2Yi9hZGFwdGVyMC9mcm9udGVuZDAKKyAgICAgKiAvZGV2L2R2Yi9hZGFwdGVyMC9uZXQwCisgICAgICogL2Rldi9kdmIvYWRhcHRlcjAvb3NkMAorICAgICAqIC9kZXYvZHZiL2FkYXB0ZXIwL3ZpZGVvMAorCisgICBUaGUgIHByaW1hcnkgIGRldmljZSAgbm9kZXMgdGhhdCB3ZSBhcmUgaW50ZXJlc3RlZCBpbiAoYXQgdGhpcworICAgc3RhZ2UpIGZvciB0aGUgQXZlcm1lZGlhIERWQi1UIGFyZToKKworICAgICAqIC9kZXYvZHZiL2FkYXB0ZXIwL2R2cjAKKyAgICAgKiAvZGV2L2R2Yi9hZGFwdGVyMC9mcm9udGVuZDAKKworICAgVGhlIGR2cjAgZGV2aWNlIG5vZGUgaXMgdXNlZCB0byByZWFkIHRoZSBNUEVHMiBEYXRhIFN0cmVhbSBhbmQKKyAgIHRoZSBmcm9udGVuZDAgbm9kZSBpcyB1c2VkIHRvIHR1bmUgdGhlIGZyb250ZW5kIHR1bmVyIG1vZHVsZS4KKworICAgQXQgIHRoaXMgIHN0YWdlLCAgaXQgIGhhcyAgbm90ICBiZWVuICBhYmxlICB0byAgYXNjZXJ0YWluICB0aGUKKyAgIGZ1bmN0aW9uYWxpdHkgIG9mIHRoZSByZW1haW5pbmcgZGV2aWNlIG5vZGVzIGluIHJlc3BlY3Qgb2YgdGhlCisgICBBdmVybWVkaWEgIERWQlQuICBIb3dldmVyLCAgZnVsbCAgZnVuY3Rpb25hbGl0eSAgaW4gcmVzcGVjdCBvZgorICAgdHVuaW5nLCAgcmVjZWl2aW5nICBhbmQgIHN1cHBseWluZyAgdGhlICBNUEVHMiAgZGF0YSBzdHJlYW0gaXMKKyAgIHBvc3NpYmxlICB3aXRoIHRoZSBjdXJyZW50bHkgYXZhaWxhYmxlIHZlcnNpb25zIG9mIHRoZSBkcml2ZXIuCisgICBJdCAgbWF5IGJlIHBvc3NpYmxlIHRoYXQgYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5IGlzIGF2YWlsYWJsZQorICAgZnJvbSAgdGhlICBjYXJkICAoaS5lLiAgdmlld2luZyB0aGUgYWRkaXRpb25hbCBhbmFsb2d1ZSBpbnB1dHMKKyAgIHRoYXQgIHRoZSBjYXJkIHByZXNlbnRzKSwgYnV0IHRoaXMgaGFzIG5vdCBiZWVuIHRlc3RlZCB5ZXQuIElmCisgICBJIGdldCBhcm91bmQgdG8gdGhpcywgSSdsbCB1cGRhdGUgdGhlIGRvY3VtZW50IHdpdGggd2hhdGV2ZXIgSQorICAgZmluZC4KKworICAgVG8gIHBvd2VyICB1cCAgdGhlICBjYXJkLCAgbG9hZCAgdGhlICBmb2xsb3dpbmcgbW9kdWxlcyBpbiB0aGUKKyAgIGZvbGxvd2luZyBvcmRlcjoKKworICAgICAqIG1vZHByb2JlIGJ0dHYgKG5vcm1hbGx5IGxvYWRlZCBhdXRvbWF0aWNhbGx5KQorICAgICAqIG1vZHByb2JlIGR2Yi1idDh4eCAob3IgcGxhY2UgZHZiLWJ0OHh4IGluIC9ldGMvbW9kdWxlcykKKworICAgSW5zZXJ0aW9uICBvZiAgdGhlc2UgIG1vZHVsZXMgIGludG8gIHRoZSAgcnVubmluZyAga2VybmVsIHdpbGwKKyAgIGFjdGl2YXRlIHRoZSBhcHByb3ByaWF0ZSBEVkIgZGV2aWNlIG5vZGVzLiBJdCBpcyB0aGVuIHBvc3NpYmxlCisgICB0byBzdGFydCBhY2Nlc3NpbmcgdGhlIGNhcmQgd2l0aCB1dGlsaXRpZXMgc3VjaCBhcyBzY2FuLCB0emFwLAorICAgZHZic3RyZWFtIGV0Yy4KKworICAgVGhlIGZyb250ZW5kIG1vZHVsZSBzcDg4N3gubywgcmVxdWlyZXMgYW4gZXh0ZXJuYWwgICBmaXJtd2FyZS4KKyAgIFBsZWFzZSB1c2UgIHRoZSAgY29tbWFuZCAiZ2V0X2R2Yl9maXJtd2FyZSBzcDg4N3giIHRvIGRvd25sb2FkCisgICBpdC4gVGhlbiBjb3B5IGl0IHRvIC91c3IvbGliL2hvdHBsdWcvZmlybXdhcmUgb3IgL2xpYi9maXJtd2FyZS8KKyAgIChkZXBlbmRpbmcgb24gY29uZmlndXJhdGlvbiBvZiBmaXJtd2FyZSBob3RwbHVnKS4KKworUmVjZWl2aW5nIERWQi1UIGluIEF1c3RyYWxpYQorCisgICBJICBoYXZlICBubyAgZXhwZXJpZW5jZSBvZiBEVkItVCBpbiBvdGhlciBjb3VudHJpZXMgb3RoZXIgdGhhbgorICAgQXVzdHJhbGlhLCAgc28gIEkgd2lsbCBhdHRlbXB0IHRvIGV4cGxhaW4gaG93IGl0IHdvcmtzIGhlcmUgaW4KKyAgIE1lbGJvdXJuZSAgYW5kIGhvdyB0aGlzIGFmZmVjdHMgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIERWQi1UCisgICBjYXJkLgorCisgICBUaGUgIERpZ2l0YWwgIEJyb2FkY2FzdGluZyAgQXVzdHJhbGlhICB3ZWJzaXRlIGhhcyBhIFJlY2VwdGlvbgorICAgbG9jYXRvcnRvb2wgd2hpY2ggcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gdHJhbnNwb25kZXIgY2hhbm5lbHMKKyAgIGFuZCAgZnJlcXVlbmNpZXMuICBNeSAgbG9jYWwgIHRyYW5zbWl0dGVyICBoYXBwZW5zIHRvIGJlIE1vdW50CisgICBEYW5kZW5vbmcuCisKKyAgIFRoZSBmcmVxdWVuY2llcyBicm9hZGNhc3QgYnkgTW91bnQgRGFuZGVub25nIGFyZToKKworICAgVGFibGUgMS4gVHJhbnNwb25kZXIgRnJlcXVlbmNpZXMgTW91bnQgRGFuZGVub25nLCBWaWMsIEF1cy4KKyAgIEJyb2FkY2FzdGVyIENoYW5uZWwgRnJlcXVlbmN5CisgICBBQkMgICAgICAgICBWSEYgMTIgIDIyNi41IE1IegorICAgVEVOICAgICAgICAgVkhGIDExICAyMTkuNSBNSHoKKyAgIE5JTkUgICAgICAgIFZIRiA4ICAgMTkxLjYyNSBNSHoKKyAgIFNFVkVOICAgICAgIFZIRiA2ICAgMTc3LjUgTUh6CisgICBTQlMgICAgICAgICBVSEYgMjkgIDUzNi41IE1IegorCisgICBUaGUgU2NhbiB1dGlsaXR5IGhhcyBhIHNldCBvZiBjb21waWxlZC1pbiBkZWZhdWx0cyBmb3IgdmFyaW91cworICAgY291bnRyaWVzIGFuZCByZWdpb25zLCBidXQgaWYgdGhleSBkbyBub3Qgc3VpdCwgb3IgaWYgeW91IGhhdmUKKyAgIGEgcHJlLWNvbXBpbGVkIHNjYW4gYmluYXJ5LCB5b3UgY2FuIHNwZWNpZnkgYSBkYXRhIGZpbGUgb24gdGhlCisgICBjb21tYW5kICBsaW5lIHdoaWNoIGNvbnRhaW5zIHRoZSB0cmFuc3BvbmRlciBmcmVxdWVuY2llcy4gSGVyZQorICAgaXMgYSBzYW1wbGUgZmlsZSBmb3IgdGhlIGFib3ZlIGNoYW5uZWwgdHJhbnNwb25kZXJzOgorIyBEYXRhIGZpbGUgZm9yIERWQiBzY2FuIHByb2dyYW0KKyMKKyMgQyBGcmVxdWVuY3kgU3ltYm9sUmF0ZSBGRUMgUUFNCisjIFMgRnJlcXVlbmN5IFBvbGFyaXNhdGlvbiBTeW1ib2xSYXRlIEZFQworIyBUIEZyZXF1ZW5jeSBCYW5kd2lkdGggRkVDIEZFQzIgUUFNIE1vZGUgR3VhcmQgSGllcgorVCAyMjY1MDAwMDAgN01IeiAyLzMgTk9ORSBRQU02NCA4ayAxLzggTk9ORQorVCAxOTE2MjUwMDAgN01IeiAyLzMgTk9ORSBRQU02NCA4ayAxLzggTk9ORQorVCAyMTk1MDAwMDAgN01IeiAyLzMgTk9ORSBRQU02NCA4ayAxLzggTk9ORQorVCAxNzc1MDAwMDAgN01IeiAyLzMgTk9ORSBRQU02NCA4ayAxLzggTk9ORQorVCA1MzY1MDAwMDAgN01IeiAyLzMgTk9ORSBRQU02NCA4ayAxLzggTk9ORQorCisgICBUaGUgICBkZWZhdWx0cyAgIGZvciAgIHRoZSAgdHJhbnNwb25kZXIgIGZyZXF1ZW5jeSAgYW5kICBvdGhlcgorICAgbW9kdWxhdGlvbiBwYXJhbWV0ZXJzIHdlcmUgb2J0YWluZWQgZnJvbSB3d3cuZGJhLm9yZy5hdS4KKworICAgV2hlbiAgU2NhbiAgcnVucywgaXQgd2lsbCBvdXRwdXQgY2hhbm5lbHMuY29uZiBpbmZvcm1hdGlvbiBmb3IKKyAgIGFueSAgY2hhbm5lbCdzIHRyYW5zcG9uZGVycyB3aGljaCB0aGUgY2FyZCdzIGZyb250ZW5kIGNhbiBsb2NrCisgICBvbnRvLiAgKGkuZS4gIGFueSAgd2hvc2UgIHNpZ25hbCAgaXMgIHN0cm9uZyAgZW5vdWdoICBhdCAgeW91cgorICAgYW50ZW5uYSkuCisKKyAgIEhlcmUncyBteSBjaGFubmVscy5jb25mIGZpbGUgZm9yIGFueW9uZSB3aG8ncyBpbnRlcmVzdGVkOgorQUJDIEhEVFY6MjI2NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18zXzQ6RkVDXzNfNDpRQU1fNjQKKzpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzE2OkhJRVJBUkNIWV9OT05FOjIzMDc6MDo1NjAKK0FCQyBUViBNZWxib3VybmU6MjI2NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18zXzQ6RkVDXzNfCis0OlFBTV82NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzE2OkhJRVJBUkNIWV9OT05FOjUxMjo2NQorMDo1NjEKK0FCQyBUViAyOjIyNjUwMDAwMDpJTlZFUlNJT05fT0ZGOkJBTkRXSURUSF83X01IWjpGRUNfM180OkZFQ18zXzQ6UUFNXzY0Cis6VFJBTlNNSVNTSU9OX01PREVfOEs6R1VBUkRfSU5URVJWQUxfMV8xNjpISUVSQVJDSFlfTk9ORTo1MTI6NjUwOjU2MgorQUJDIFRWIDM6MjI2NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18zXzQ6RkVDXzNfNDpRQU1fNjQKKzpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzE2OkhJRVJBUkNIWV9OT05FOjUxMjo2NTA6NTYzCitBQkMgVFYgNDoyMjY1MDAwMDA6SU5WRVJTSU9OX09GRjpCQU5EV0lEVEhfN19NSFo6RkVDXzNfNDpGRUNfM180OlFBTV82NAorOlRSQU5TTUlTU0lPTl9NT0RFXzhLOkdVQVJEX0lOVEVSVkFMXzFfMTY6SElFUkFSQ0hZX05PTkU6NTEyOjY1MDo1NjQKK0FCQyBEaUcgUmFkaW86MjI2NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18zXzQ6RkVDXzNfNDpRCitBTV82NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzE2OkhJRVJBUkNIWV9OT05FOjA6MjMxMTo1NgorNgorVEVOIERpZ2l0YWw6MjE5NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18zXzQ6RkVDXzFfMjpRQU0KK182NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzE2OkhJRVJBUkNIWV9OT05FOjUxMjo2NTA6MTU4Cis1CitURU4gRGlnaXRhbCAxOjIxOTUwMDAwMDpJTlZFUlNJT05fT0ZGOkJBTkRXSURUSF83X01IWjpGRUNfM180OkZFQ18xXzI6UQorQU1fNjQ6VFJBTlNNSVNTSU9OX01PREVfOEs6R1VBUkRfSU5URVJWQUxfMV8xNjpISUVSQVJDSFlfTk9ORTo1MTI6NjUwOjEKKzU4NgorVEVOIERpZ2l0YWwgMjoyMTk1MDAwMDA6SU5WRVJTSU9OX09GRjpCQU5EV0lEVEhfN19NSFo6RkVDXzNfNDpGRUNfMV8yOlEKK0FNXzY0OlRSQU5TTUlTU0lPTl9NT0RFXzhLOkdVQVJEX0lOVEVSVkFMXzFfMTY6SElFUkFSQ0hZX05PTkU6NTEyOjY1MDoxCis1ODcKK1RFTiBEaWdpdGFsIDM6MjE5NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18zXzQ6RkVDXzFfMjpRCitBTV82NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzE2OkhJRVJBUkNIWV9OT05FOjUxMjo2NTA6MQorNTg4CitURU4gRGlnaXRhbDoyMTk1MDAwMDA6SU5WRVJTSU9OX09GRjpCQU5EV0lEVEhfN19NSFo6RkVDXzNfNDpGRUNfMV8yOlFBTQorXzY0OlRSQU5TTUlTU0lPTl9NT0RFXzhLOkdVQVJEX0lOVEVSVkFMXzFfMTY6SElFUkFSQ0hZX05PTkU6NTEyOjY1MDoxNTgKKzkKK1RFTiBEaWdpdGFsIDQ6MjE5NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18zXzQ6RkVDXzFfMjpRCitBTV82NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzE2OkhJRVJBUkNIWV9OT05FOjUxMjo2NTA6MQorNTkwCitURU4gRGlnaXRhbDoyMTk1MDAwMDA6SU5WRVJTSU9OX09GRjpCQU5EV0lEVEhfN19NSFo6RkVDXzNfNDpGRUNfMV8yOlFBTQorXzY0OlRSQU5TTUlTU0lPTl9NT0RFXzhLOkdVQVJEX0lOVEVSVkFMXzFfMTY6SElFUkFSQ0hZX05PTkU6NTEyOjY1MDoxNTkKKzEKK1RFTiBIRDoyMTk1MDAwMDA6SU5WRVJTSU9OX09GRjpCQU5EV0lEVEhfN19NSFo6RkVDXzNfNDpGRUNfMV8yOlFBTV82NDpUCitSQU5TTUlTU0lPTl9NT0RFXzhLOkdVQVJEX0lOVEVSVkFMXzFfMTY6SElFUkFSQ0hZX05PTkU6NTE0OjA6MTU5MgorVEVOIERpZ2l0YWw6MjE5NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18zXzQ6RkVDXzFfMjpRQU0KK182NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzE2OkhJRVJBUkNIWV9OT05FOjUxMjo2NTA6MTU5CiszCitOaW5lIERpZ2l0YWw6MTkxNjI1MDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18zXzQ6RkVDXzFfMjpRQQorTV82NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzE2OkhJRVJBUkNIWV9OT05FOjUxMzo2NjA6MTAKKzcyCitOaW5lIERpZ2l0YWwgSEQ6MTkxNjI1MDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18zXzQ6RkVDXzFfMgorOlFBTV82NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzE2OkhJRVJBUkNIWV9OT05FOjUxMjowOjEKKzA3MworTmluZSBHdWlkZToxOTE2MjUwMDA6SU5WRVJTSU9OX09GRjpCQU5EV0lEVEhfN19NSFo6RkVDXzNfNDpGRUNfMV8yOlFBTV8KKzY0OlRSQU5TTUlTU0lPTl9NT0RFXzhLOkdVQVJEX0lOVEVSVkFMXzFfMTY6SElFUkFSQ0hZX05PTkU6NTE0OjY3MDoxMDc0Cis3IERpZ2l0YWw6MTc3NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18yXzM6RkVDXzJfMzpRQU1fNgorNDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzg6SElFUkFSQ0hZX05PTkU6NzY5Ojc3MDoxMzI4Cis3IERpZ2l0YWwgMToxNzc1MDAwMDA6SU5WRVJTSU9OX09GRjpCQU5EV0lEVEhfN19NSFo6RkVDXzJfMzpGRUNfMl8zOlFBTQorXzY0OlRSQU5TTUlTU0lPTl9NT0RFXzhLOkdVQVJEX0lOVEVSVkFMXzFfODpISUVSQVJDSFlfTk9ORTo3Njk6NzcwOjEzMjkKKzcgRGlnaXRhbCAyOjE3NzUwMDAwMDpJTlZFUlNJT05fT0ZGOkJBTkRXSURUSF83X01IWjpGRUNfMl8zOkZFQ18yXzM6UUFNCitfNjQ6VFJBTlNNSVNTSU9OX01PREVfOEs6R1VBUkRfSU5URVJWQUxfMV84OkhJRVJBUkNIWV9OT05FOjc2OTo3NzA6MTMzMAorNyBEaWdpdGFsIDM6MTc3NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18yXzM6RkVDXzJfMzpRQU0KK182NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzg6SElFUkFSQ0hZX05PTkU6NzY5Ojc3MDoxMzMxCis3IEhEIERpZ2l0YWw6MTc3NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18yXzM6RkVDXzJfMzpRQQorTV82NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzg6SElFUkFSQ0hZX05PTkU6ODMzOjgzNDoxMzMKKzIKKzcgUHJvZ3JhbSBHdWlkZToxNzc1MDAwMDA6SU5WRVJTSU9OX09GRjpCQU5EV0lEVEhfN19NSFo6RkVDXzJfMzpGRUNfMl8zCis6UUFNXzY0OlRSQU5TTUlTU0lPTl9NT0RFXzhLOkdVQVJEX0lOVEVSVkFMXzFfODpISUVSQVJDSFlfTk9ORTo4NjU6ODY2OgorMTMzNAorU0JTIEhEOjUzNjUwMDAwMDpJTlZFUlNJT05fT0ZGOkJBTkRXSURUSF83X01IWjpGRUNfMl8zOkZFQ18yXzM6UUFNXzY0OlQKK1JBTlNNSVNTSU9OX01PREVfOEs6R1VBUkRfSU5URVJWQUxfMV84OkhJRVJBUkNIWV9OT05FOjEwMjoxMDM6Nzg0CitTQlMgRElHSVRBTCAxOjUzNjUwMDAwMDpJTlZFUlNJT05fT0ZGOkJBTkRXSURUSF83X01IWjpGRUNfMl8zOkZFQ18yXzM6UQorQU1fNjQ6VFJBTlNNSVNTSU9OX01PREVfOEs6R1VBUkRfSU5URVJWQUxfMV84OkhJRVJBUkNIWV9OT05FOjE2MTo4MTo3ODUKK1NCUyBESUdJVEFMIDI6NTM2NTAwMDAwOklOVkVSU0lPTl9PRkY6QkFORFdJRFRIXzdfTUhaOkZFQ18yXzM6RkVDXzJfMzpRCitBTV82NDpUUkFOU01JU1NJT05fTU9ERV84SzpHVUFSRF9JTlRFUlZBTF8xXzg6SElFUkFSQ0hZX05PTkU6MTYyOjgzOjc4NgorU0JTIEVQRzo1MzY1MDAwMDA6SU5WRVJTSU9OX09GRjpCQU5EV0lEVEhfN19NSFo6RkVDXzJfMzpGRUNfMl8zOlFBTV82NDoKK1RSQU5TTUlTU0lPTl9NT0RFXzhLOkdVQVJEX0lOVEVSVkFMXzFfODpISUVSQVJDSFlfTk9ORToxNjM6ODU6Nzg3CitTQlMgUkFESU8gMTo1MzY1MDAwMDA6SU5WRVJTSU9OX09GRjpCQU5EV0lEVEhfN19NSFo6RkVDXzJfMzpGRUNfMl8zOlFBTQorXzY0OlRSQU5TTUlTU0lPTl9NT0RFXzhLOkdVQVJEX0lOVEVSVkFMXzFfODpISUVSQVJDSFlfTk9ORTowOjIwMTo3OTgKK1NCUyBSQURJTyAyOjUzNjUwMDAwMDpJTlZFUlNJT05fT0ZGOkJBTkRXSURUSF83X01IWjpGRUNfMl8zOkZFQ18yXzM6UUFNCitfNjQ6VFJBTlNNSVNTSU9OX01PREVfOEs6R1VBUkRfSU5URVJWQUxfMV84OkhJRVJBUkNIWV9OT05FOjA6MjAyOjc5OQorICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKworS25vd24gTGltaXRhdGlvbnMKKworICAgQXQgIHByZXNlbnQgIEkgY2FuIHNheSB3aXRoIGNvbmZpZGVuY2UgdGhhdCB0aGUgZnJvbnRlbmQgdHVuZXMKKyAgIHZpYSAvZGV2L2R2Yi9hZGFwdGVye3h9L2Zyb250ZW5kMCBhbmQgc3VwcGxpZXMgYW4gTVBFRzIgc3RyZWFtCisgICB2aWEgICAvZGV2L2R2Yi9hZGFwdGVye3h9L2R2cjAuICAgSSAgIGhhdmUgICBub3QgICB0ZXN0ZWQgIHRoZQorICAgZnVuY3Rpb25hbGl0eSAgb2YgYW55IG90aGVyIHBhcnQgb2YgdGhlIGNhcmQgeWV0LiBJIHdpbGwgZG8gc28KKyAgIG92ZXIgdGltZSBhbmQgdXBkYXRlIHRoaXMgZG9jdW1lbnQuCisKKyAgIFRoZXJlICBhcmUgc29tZSBsaW1pdGF0aW9ucyBpbiB0aGUgaTJjIGxheWVyIGR1ZSB0byBhIHJldHVybmVkCisgICBlcnJvciBtZXNzYWdlIGluY29uc2lzdGVuY3kuIEFsdGhvdWdoIHRoaXMgZ2VuZXJhdGVzIGVycm9ycyBpbgorICAgZG1lc2cgIGFuZCAgdGhlICBzeXN0ZW0gbG9ncywgaXQgZG9lcyBub3QgYXBwZWFyIHRvIGFmZmVjdCB0aGUKKyAgIGFiaWxpdHkgb2YgdGhlIGZyb250ZW5kIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4KKyAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisKK0Z1cnRoZXIgVXBkYXRlCisKKyAgIGR2YnN0cmVhbSAgYW5kICBWaWRlb0xBTiAgQ2xpZW50IG9uIHdpbmRvd3Mgd29ya3MgYSB0cmVhdCB3aXRoCisgICBEVkIsICBpbiAgZmFjdCAgdGhpcyAgaXMgIGN1cnJlbnRseSAgc2VydmluZyBhcyBteSBtYWluIHdheSBvZgorICAgdmlld2luZyAgRFZCLVQgIGF0ICB0aGUgIG1vbWVudC4gIEFkZGl0aW9uYWxseSwgVkxDIGlzIGhhcHBpbHkKKyAgIGRlY29kaW5nICBIRFRWICBzaWduYWxzLCAgYWx0aG91Z2ggIHRoZSBQQyBpcyBkcm9wcGluZyB0aGUgb2RkCisgICBmcmFtZSBoZXJlIGFuZCB0aGVyZSAtIEkgYXNzdW1lIGR1ZSB0byBwcm9jZXNzaW5nIGNhcGFiaWxpdHkgLQorICAgYXMgYWxsIHRoZSBkZWNvZGluZyBpcyBiZWluZyBkb25lIHVuZGVyIHdpbmRvd3MgaW4gc29mdHdhcmUuCisKKyAgIE1hbnkgIHRoYW5rcyB0byBOaWdlbCBQZWFyc29uIGZvciB0aGUgdXBkYXRlcyB0byB0aGlzIGRvY3VtZW50CisgICBzaW5jZSB0aGUgcmVjZW50IHJldmlzaW9uIG9mIHRoZSBkcml2ZXIuCisKKyAgIEZlYnJ1YXJ5IDE0dGggMjAwNgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kdmIvYnQ4eHgudHh0IGIvRG9jdW1lbnRhdGlvbi9kdmIvYnQ4eHgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3YjFkMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2R2Yi9idDh4eC50eHQKQEAgLTAsMCArMSw5OCBAQAorSG93IHRvIGdldCB0aGUgYnQ4eHggY2FyZHMgd29ya2luZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisxKSBHZW5lcmFsIGluZm9ybWF0aW9uCis9PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgY2xhc3Mgb2YgY2FyZHMgaGFzIGEgYnQ4NzhhIGFzIHRoZSBQQ0kgaW50ZXJmYWNlLCBhbmQgcmVxdWlyZSB0aGUgYnR0diBkcml2ZXIKK2ZvciBhY2Nlc3NpbmcgdGhlIGkyYyBidXMgYW5kIHRoZSBncGlvIHBpbnMgb2YgdGhlIGJ0OHh4IGNoaXBzZXQuCitQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vZHZiL2NhcmRzLnR4dCA9PiBvIENhcmRzIGJhc2VkIG9uIHRoZSBDb25leGFudCBCdDh4eCBQQ0kgYnJpZGdlOgorCitDb21waWxpbmcga2VybmVsIHBsZWFzZSBlbmFibGU6CithLikiRGV2aWNlIGRyaXZlcnMiID0+ICJNdWx0aW1lZGlhIGRldmljZXMiID0+ICJWaWRlbyBGb3IgTGludXgiID0+ICJFbmFibGUgVmlkZW8gZm9yIExpbnV4IEFQSSAxIChERVBSRUNBVEVEKSIKK2IuKSJEZXZpY2UgZHJpdmVycyIgPT4gIk11bHRpbWVkaWEgZGV2aWNlcyIgPT4gIlZpZGVvIEZvciBMaW51eCIgPT4gIlZpZGVvIENhcHR1cmUgQWRhcHRlcnMiID0+ICJCVDg0OCBWaWRlbyBGb3IgTGludXgiCitjLikiRGV2aWNlIGRyaXZlcnMiID0+ICJNdWx0aW1lZGlhIGRldmljZXMiID0+ICJEaWdpdGFsIFZpZGVvIEJyb2FkY2FzdGluZyBEZXZpY2VzIiA9PiAiRFZCIGZvciBMaW51eCIgIkRWQiBDb3JlIFN1cHBvcnQiICJCdDh4eCBiYXNlZCBQQ0kgQ2FyZHMiCisKK1BsZWFzZSB1c2UgdGhlIGZvbGxvd2luZyBvcHRpb25zIHdpdGggY2FyZSBhcyBkZXNlbGVjdGlvbiBvZiBkcml2ZXJzIHdoaWNoIGFyZSBpbiBmYWN0IG5lY2Vzc2FyeQorbWF5IHJlc3VsdCBpbiBEVkIgZGV2aWNlcyB0aGF0IGNhbm5vdCBiZSB0dW5lZCBkdWUgdG8gbGFjayBvZiBkcml2ZXIgc3VwcG9ydDoKK1lvdSBjYW4gc2F2ZSBSQU0gYnkgZGVzZWxlY3RpbmcgZXZlcnkgZnJvbnRlbmQgbW9kdWxlIHRoYXQgeW91ciBEVkIgY2FyZCBkb2VzIG5vdCBuZWVkLgorCitGaXJzdCBwbGVhc2UgcmVtb3ZlIHRoZSBzdGF0aWMgZGVwZW5kZW5jeSBvZiBEVkIgY2FyZCBkcml2ZXJzIG9uIGFsbCBmcm9udGVuZCBtb2R1bGVzIGZvciBhbGwgcG9zc2libGUgY2FyZCB2YXJpYW50cyBieSBlbmFibGluZzoKK2QuKSAiRGV2aWNlIGRyaXZlcnMiID0+ICJNdWx0aW1lZGlhIGRldmljZXMiID0+ICJEaWdpdGFsIFZpZGVvIEJyb2FkY2FzdGluZyBEZXZpY2VzIgorID0+ICJEVkIgZm9yIExpbnV4IiAiRFZCIENvcmUgU3VwcG9ydCIgIkxvYWQgYW5kIGF0dGFjaCBmcm9udGVuZCBtb2R1bGVzIGFzIG5lZWRlZCIKKworSWYgeW91IGtub3cgdGhlIGZyb250ZW5kIGRyaXZlciB0aGF0IHlvdXIgY2FyZCBuZWVkcyBwbGVhc2UgZW5hYmxlOgorZS4pIkRldmljZSBkcml2ZXJzIiA9PiAiTXVsdGltZWRpYSBkZXZpY2VzIiA9PiAiRGlnaXRhbCBWaWRlbyBCcm9hZGNhc3RpbmcgRGV2aWNlcyIKKyA9PiAiRFZCIGZvciBMaW51eCIgIkRWQiBDb3JlIFN1cHBvcnQiICJDdXN0b21pc2UgRFZCIEZyb250ZW5kcyIgPT4gIkN1c3RvbWlzZSB0aGUgZnJvbnRlbmQgbW9kdWxlcyB0byBidWlsZCIKKyBUaGVuIHBsZWFzZSBzZWxlY3QgeW91ciBjYXJkLXNwZWNpZmljIGZyb250ZW5kIG1vZHVsZS4KKworMikgTG9hZGluZyBNb2R1bGVzCis9PT09PT09PT09PT09PT09PT0KKworUmVndWxhciBjYXNlOiBJZiB0aGUgYnR0diBkcml2ZXIgZGV0ZWN0cyBhIGJ0OHh4LWJhc2VkIERWQiBjYXJkLCBhbGwgZnJvbnRlbmQgYW5kIGJhY2tlbmQgbW9kdWxlcyB3aWxsIGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5LgorRXhjZXB0aW9ucyBhcmU6CistIE9sZCBUd2luSGFuIERTVCBjYXJkcyBvciBjbG9uZXMgd2l0aCBvciB3aXRob3V0IENBIHNsb3QgYW5kIG5vdCBjb250YWluaW5nIGFuIEVlcHJvbS4KK1Blb3BsZSBydW5uaW5nIHVkZXYgcGxlYXNlIHNlZSBEb2N1bWVudGF0aW9uL2R2Yi91ZGV2LnR4dC4KKworSW4gdGhlIGZvbGxvd2luZyBjYXNlcyBvdmVycmlkaW5nIHRoZSBQQ0kgdHlwZSBkZXRlY3Rpb24gZm9yIGR2Yi1idDh4eCBtaWdodCBiZSBuZWNlc3Nhcnk6CisKKzJhKSBSdW5uaW5nIFR3aW5IYW4gYW5kIENsb25lcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwkkIG1vZHByb2JlIGJ0dHYgY2FyZD0xMTMKKwkkIG1vZHByb2JlIGRzdAorCitVc2VmdWwgcGFyYW1ldGVycyBmb3IgdmVyYm9zaXR5IGxldmVsIGFuZCBkZWJ1Z2dpbmcgdGhlIGRzdCBtb2R1bGU6CisKK3ZlcmJvc2U9MDoJCW1lc3NhZ2VzIGFyZSBkaXNhYmxlZAorCTE6CQlvbmx5IGVycm9yIG1lc3NhZ2VzIGFyZSBkaXNwbGF5ZWQKKwkyOgkJbm90aWZpY2F0aW9ucyBhcmUgZGlzcGxheWVkCisJMzoJCW90aGVyIHVzZWZ1bCBtZXNzYWdlcyBhcmUgZGlzcGxheWVkCisJNDoJCWRlYnVnIHNldHRpbmcKK2RzdF9hZGRvbnM9MDoJCWNhcmQgaXMgYSBmcmVlIHRvIGFpciAoRlRBKSBjYXJkIG9ubHkKKwkgICAweDIwOgljYXJkIGhhcyBhIGNvbmRpdGlvbmFsIGFjY2VzcyBzbG90IGZvciBzY3JhbWJsZWQgY2hhbm5lbHMKKworVGhlIGF1dG9kZXRlY3RlZCB2YWx1ZXMgYXJlIGRldGVybWluZWQgYnkgdGhlIGNhcmRzJyAicmVzcG9uc2Ugc3RyaW5nIi4KK0luIHlvdXIgbG9ncyBzZWUgZi4gZXguOiBkc3RfZ2V0X2RldmljZV9pZDogUmVjb2duaXplIFtEU1RNQ0ldLgorRm9yIGJ1ZyByZXBvcnRzIHBsZWFzZSBzZW5kIGluIGEgY29tcGxldGUgbG9nIHdpdGggdmVyYm9zZT00IGFjdGl2YXRlZC4KK1BsZWFzZSBhbHNvIHNlZSBEb2N1bWVudGF0aW9uL2R2Yi9jaS50eHQuCisKKzJiKSBSdW5uaW5nIG11bHRpcGxlIGNhcmRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFeGFtcGxlcyBvZiBjYXJkIElEJ3M6CisKK1Bpbm5hY2xlIFBDVFYgU2F0OgkJIDk0CitOZWJ1bGEgRWxlY3Ryb25pY3MgRGlnaSBUVjoJMTA0CitwY0hEVFYgSEQtMjAwMCBUVjoJCTExMgorVHdpbmhhbiBEU1QgYW5kIGNsb25lczoJCTExMworQXZlcm1lZGlhIEF2ZXJUViBEVkItVCA3NzE6CTEyMworQXZlcm1lZGlhIEF2ZXJUViBEVkItVCA3NjE6CTEyNAorRFZpQ08gRnVzaW9uSERUViBEVkItVCBMaXRlOgkxMjgKK0RWaUNPIEZ1c2lvbkhEVFYgNSBMaXRlOgkxMzUKKworTm90aWNlOiBUaGUgb3JkZXIgb2YgdGhlIGNhcmQgSUQgc2hvdWxkIGJlIHVwcmlzaW5nOgorRXhhbXBsZToKKwkkIG1vZHByb2JlIGJ0dHYgY2FyZD0xMTMgY2FyZD0xMzUKKworRm9yIGEgZnVsbCBsaXN0IG9mIGNhcmQgSUQncyBwbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vdmlkZW80bGludXgvQ0FSRExJU1QuYnR0di4KK0luIGNhc2Ugb2YgZnVydGhlciBwcm9ibGVtcyBwbGVhc2Ugc3Vic2NyaWJlIGFuZCBzZW5kIHF1ZXN0aW9ucyB0byB0aGUgbWFpbGluZyBsaXN0OiBsaW51eC1kdmJAbGludXh0di5vcmcuCisKKzJjKSBQcm9iaW5nIHRoZSBjYXJkcyB3aXRoIGJyb2tlbiBQQ0kgc3Vic3lzdGVtIElECistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlcmUgYXJlIHNvbWUgVHdpbkhhbiBjYXJkcyB0aGF0IHRoZSBFRVBST00gaGFzIGJlY29tZSBjb3JydXB0ZWQgZm9yIHNvbWUKK3JlYXNvbi4gVGhlIGNhcmRzIGRvIG5vdCBoYXZlIGNvcnJlY3QgUENJIHN1YnN5c3RlbSBJRC4gQnV0IHdlIGNhbiBmb3JjZQorcHJvYmluZyB0aGUgY2FyZHMgd2l0aCBicm9rZW4gUENJIHN1YnN5c3RlbSBJRAorCisJJCBlY2hvIDEwOWUgMDg3OCAkc3VidmVuZG9yICRzdWJkZXZpY2UgPiBcCisJCS9zeXMvYnVzL3BjaS9kcml2ZXJzL2J0ODc4L25ld19pZAorCisxMDllOiBQQ0lfVkVORE9SX0lEX0JST09LVFJFRQorMDg3ODogUENJX0RFVklDRV9JRF9CUk9PS1RSRUVfODc4CisKK0F1dGhvcnM6IFJpY2hhcmQgV2Fsa2VyLAorCSBKYW1pZSBIb25hbiwKKwkgTWljaGFlbCBIdW5vbGQsCisJIE1hbnUgQWJyYWhhbSwKKwkgVXdlIEJ1Z2xhLAorCSBNaWNoYWVsIEtydWZreQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kdmIvY2FyZHMudHh0IGIvRG9jdW1lbnRhdGlvbi9kdmIvY2FyZHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NzA5ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2R2Yi9jYXJkcy50eHQKQEAgLTAsMCArMSwxMjMgQEAKK0hhcmR3YXJlIHN1cHBvcnRlZCBieSB0aGUgbGludXh0di5vcmcgRFZCIGRyaXZlcnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICBHZW5lcmFsbHksIHRoZSBEVkIgaGFyZHdhcmUgbWFudWZhY3R1cmVycyBmcmVxdWVudGx5IGNoYW5nZSB0aGUKKyAgZnJvbnRlbmRzIChpLmUuIHR1bmVyIC8gZGVtb2R1bGF0b3IgdW5pdHMpIHVzZWQsIHVzdWFsbHkgd2l0aG91dAorICBjaGFuZ2luZyB0aGUgcHJvZHVjdCBuYW1lLCByZXZpc2lvbiBudW1iZXIgb3Igc3BlY3MuIFNvbWUgY2FyZHMKKyAgYXJlIGFsc28gYXZhaWxhYmxlIGluIHZlcnNpb25zIHdpdGggZGlmZmVyZW50IGZyb250ZW5kcyBmb3IKKyAgRFZCLVMvRFZCLUMvRFZCLVQuIFRodXMgdGhlIGZyb250ZW5kIGRyaXZlcnMgYXJlIGxpc3RlZCBzZXBhcmF0ZWx5LgorCisgIE5vdGUgMTogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgZXZlcnkgZnJvbnRlbmQgZHJpdmVyIHdvcmtzCisgIG91dCBvZiB0aGUgYm94IHdpdGggZXZlcnkgY2FyZCwgYmVjYXVzZSBvZiBkaWZmZXJlbnQgd2lyaW5nLgorCisgIE5vdGUgMjogVGhlIGRlbW9kdWxhdG9yIGNoaXBzIGNhbiBiZSB1c2VkIHdpdGggYSB2YXJpZXR5IG9mCisgIHR1bmVyL1BMTCBjaGlwcywgYW5kIG5vdCBhbGwgY29tYmluYXRpb25zIGFyZSBzdXBwb3J0ZWQuIE9mdGVuCisgIHRoZSBkZW1vZHVsYXRvciBhbmQgdHVuZXIvUExMIGNoaXAgYXJlIGluc2lkZSBhIG1ldGFsIGJveCBmb3IKKyAgc2hpZWxkaW5nLCBhbmQgdGhlIHdob2xlIG1ldGFsIGJveCBoYXMgaXRzIG93biBwYXJ0IG51bWJlci4KKworCitvIEZyb250ZW5kcyBkcml2ZXJzOgorICAtIGR2Yl9kdW1teV9mZTogZm9yIHRlc3RpbmcuLi4KKyAgRFZCLVM6CisgICAtIHZlczF4OTMJCTogQWxwcyBCU1JWMiAodmVzMTg5MyBkZW1vZHVsYXRvcikgYW5kIGRib3gyICh2ZXMxOTkzKQorICAgLSBjeDI0MTEwCQk6IENvbmV4YW50IEhNMTIyMS9ITTE4MTEgKGN4MjQxMTAgb3IgY3gyNDEwNiBkZW1vZCwgY3gyNDEwOCBQTEwpCisgICAtIGdydW5kaWdfMjk1MDQtNDkxCTogR3J1bmRpZyAyOTUwNC00OTEgKFBoaWxpcHMgVERBODA4MyBkZW1vZHVsYXRvciksIHRzYTU1MjIgUExMCisgICAtIG10MzEyCQk6IFphcmxpbmsgbXQzMTIgb3IgTWl0ZWwgdnAzMTAgZGVtb2R1bGF0b3IsIHNsMTkzNSBvciB0c2E1MDU5IFBMTGksIFRlY2huaXNhdCBTa3kyUGMgd2l0aCBiaW9zIFJldi4gMi4zCisgICAtIHN0djAyOTkJCTogQWxwcyBCU1JVNiAodHNhNTA1OSBQTEwpLCBMRyBURFFCLVMwMHggKHRzYTUwNTkgUExMKSwKKwkJCSAgTEcgVERRRi1TMDAxRiAoc2wxOTM1IFBMTCksIFBoaWxpcHMgU1UxMjc4ICh0dWE2MTAwIFBMTCksCisJCQkgIFBoaWxpcHMgU1UxMjc4U0ggKHRzYTUwNTkgUExMKSwgU2Ftc3VuZyBUQk1VMjQxMTJJTUIsIFRlY2huaXNhdCBTa3kyUGMgd2l0aCBiaW9zIFJldi4gMi42CisgIERWQi1DOgorICAgLSB2ZXMxODIwCQk6IHZhcmlvdXMgKHZlczE4MjAgZGVtb2R1bGF0b3IsIHNwNTY1OWMgb3Igc3BYWFhYIFBMTCkKKyAgIC0gYXQ3NmM2NTEJCTogQXRtZWwgQVQ3NmM2NTEoQikgd2l0aCBEQVQ3MDIxIFBMTAorICBEVkItVDoKKyAgIC0gYWxwc190ZGxiNwkJOiBBbHBzIFRETEI3IChzcDg4NzAgZGVtb2R1bGF0b3IsIHNwNTY1OSBQTEwpCisgICAtIGFscHNfdGRtYjcJCTogQWxwcyBURE1CNyAoY3gyMjcwMCBkZW1vZHVsYXRvcikKKyAgIC0gZ3J1bmRpZ18yOTUwNC00MDEJOiBHcnVuZGlnIDI5NTA0LTQwMSAoTFNJIEw2NDc4MSBkZW1vZHVsYXRvciksIHRzYTUwNjAgUExMCisgICAtIHRkYTEwMDR4CQk6IFBoaWxpcHMgdGRhMTAwNDVoICh0ZDEzNDQgb3IgdGRtMTMxNmwgUExMKQorICAgLSBueHQ2MDAwIAkJOiBBbHBzIFRETUU3IChNSVRFTCBTUDU2NTkgUExMKSwgQWxwcyBUREVENCAoVEkgQUxQNTEwIFBMTCksCisJCQkgIENvbXRlY2ggRFZCVC02azA3IChTUDU3MzAgUExMKQorCQkJICAoTnh0V2F2ZSBDb21tdW5pY2F0aW9ucyBOWFQ2MDAwIGRlbW9kdWxhdG9yKQorICAgLSBzcDg4N3gJCTogTWljcm90dW5lIDcyMDJECisgICAtIGRpYjMwMDBtYgk6IERpQmNvbSAzMDAwLU1CIGRlbW9kdWxhdG9yCisgIERWQi1TL0MvVDoKKyAgIC0gZHN0CQk6IFR3aW5IYW4gRFNUIEZyb250ZW5kCisgIEFUU0M6CisgICAtIG54dDIwMHgJCTogTnh0d2F2ZSBOWFQyMDAyICYgTlhUMjAwNAorICAgLSBvcjUxMjExCQk6IG9yNTEyMTEgYmFzZWQgKHBjSERUViBIRDIwMDAgY2FyZCkKKyAgIC0gb3I1MTEzMgkJOiBvcjUxMTMyIGJhc2VkIChwY0hEVFYgSEQzMDAwIGNhcmQpCisgICAtIGJjbTM1MTAJCTogQnJvYWRjb20gQkNNMzUxMAorICAgLSBsZ2R0MzMweAkJOiBMRyBFbGVjdHJvbmljcyBEVDMzMDIgJiBEVDMzMDMKKworCitvIENhcmRzIGJhc2VkIG9uIHRoZSBQaGlsbGlwcyBzYWE3MTQ2IG11bHRpbWVkaWEgUENJIGJyaWRnZSBjaGlwOgorICAtIFRJIEFWNzExMCBiYXNlZCBjYXJkcyAoaS5lLiB3aXRoIGhhcmR3YXJlIE1QRUcgZGVjb2Rlcik6CisgICAgLSBTaWVtZW5zL1RlY2hub3RyZW5kL0hhdXBwYXVnZSBQQ0kgRFZCIGNhcmQgcmV2aXNpb24gMS4xLCAxLjMsIDEuNSwgMS42LCAyLjEKKyAgICAgIChha2EgSGF1cHBhdWdlIE5leHVzKQorICAtICJidWRnZXQiIGNhcmRzIChpLmUuIHdpdGhvdXQgaGFyZHdhcmUgTVBFRyBkZWNvZGVyKToKKyAgICAtIFRlY2hub3RyZW5kIEJ1ZGdldCAvIEhhdXBwYXVnZSBXaW5UVi1Ob3ZhIFBDSSBDYXJkcworICAgIC0gU0FURUxDTyBNdWx0aW1lZGlhIFBDSQorICAgIC0gS05DMSBEVkItUywgVHlwaG9vbiBEVkItUywgVGVycmF0ZWMgQ2luZXJneSAxMjAwIERWQi1TIChubyBDSSBzdXBwb3J0KQorICAgIC0gVHlwaG9vbiBEVkItUyBidWRnZXQKKyAgICAtIEZ1aml0c3UtU2llbWVucyBBY3RpdnkgRFZCLVMgYnVkZ2V0IGNhcmQKKworbyBDYXJkcyBiYXNlZCBvbiB0aGUgQjJDMiBJbmMuIEZsZXhDb3BJSS9JSWIvSUlJOgorICAtIFRlY2huaXNhdCBTa3lTdGFyMiBQQ0kgRFZCIGNhcmQgcmV2aXNpb24gMi4zLCAyLjZCLCAyLjZDCisKK28gQ2FyZHMgYmFzZWQgb24gdGhlIENvbmV4YW50IEJ0OHh4IFBDSSBicmlkZ2U6CisgIC0gUGlubmFjbGUgUENUViBTYXQgRFZCCisgIC0gTmVidWxhIEVsZWN0cm9uaWNzIERpZ2lUVgorICAtIFR3aW5IYW4gRFNUCisgIC0gQXZlcm1lZGlhIERWQi1UCisgIC0gQ2hhaW5UZWNoIGRpZ2l0b3AgRFNULTEwMDAgRFZCLVMKKyAgLSBwY0hEVFYgSEQtMjAwMCBUVgorICAtIERWaUNPIEZ1c2lvbkhEVFYgRFZCLVQgTGl0ZQorICAtIERWaUNPIEZ1c2lvbkhEVFY1IExpdGUKKworbyBUZWNobm90cmVuZCAvIEhhdXBwYXVnZSBEVkIgVVNCIGRldmljZXM6CisgIC0gTm92YSBVU0IKKyAgLSBERUMgMjAwMC1ULCAzMDAwLVMsIDI1NDAtVAorCitvIERpQmNvbSBEVkItVCBVU0IgYmFzZWQgZGV2aWNlczoKKyAgLSBUd2luaGFuIFZpc2lvblBsdXMgVmlzaW9uRFRWIFVTQi1UZXIgRFZCLVQgRGV2aWNlCisgIC0gSEFNQSBEVkItVCBVU0IgZGV2aWNlCisgIC0gQ1RTIFBvcnRhYmxlIChDaGluZXNlIFRlbGV2aXNpb24gU3lzdGVtKQorICAtIEtXb3JsZCBWLVN0cmVhbSBYUEVSVCBEVFYgRFZCLVQgVVNCCisgIC0gSmV0V2F5IERUViBEVkItVCBVU0IKKyAgLSBBRFNUZWNoIEluc3RhbnQgVFYgRFZCLVQgVVNCCisgIC0gVWx0aW1hIEVsZWN0cm9uaWMvQXJ0ZWMgVDEgVVNCIFRWQk9YIChBTjIxMzUgYW5kIEFOMjIzNSkKKyAgLSBDb21wcm8gVmlkZW9tYXRlIERWQi1VMjAwMCAtIERWQi1UIFVTQgorICAtIEdyYW5kdGVjIFVTQiBEVkItVAorICAtIEF2ZXJtZWRpYSBBdmVyVFYgRFZCVCBVU0IKKyAgLSBEaUJjb20gVVNCIERWQi1UIHJlZmVyZW5jZSBkZXZpY2UgKG5vbi1wdWJsaWMpCisgIC0gWWFrdW1vIERWQi1UIG1vYmlsZSBVU0IyLjAKKyAgLSBEaUJjb20gVVNCMi4wIERWQi1UIHJlZmVyZW5jZSBkZXZpY2UgKG5vbi1wdWJsaWMpCisKK28gRXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIHRoZSBhbmFsb2cgbW9kdWxlIG9mIHRoZSBTaWVtZW5zIERWQi1DIFBDSSBjYXJkCisKK28gQ2FyZHMgYmFzZWQgb24gdGhlIENvbmV4YW50IGN4MjM4OHggUENJIGJyaWRnZToKKyAgLSBBRFMgVGVjaCBJbnN0YW50IFRWIERWQi1UIFBDSQorICAtIEFUSSBIRFRWIFdvbmRlcgorICAtIGRpZ2l0YWxub3cgRE5UViBMaXZlISBEVkItVAorICAtIERWaUNPIEZ1c2lvbkhEVFYgRFZCLVQxCisgIC0gRFZpQ08gRnVzaW9uSERUViBEVkItVCBQbHVzCisgIC0gRFZpQ08gRnVzaW9uSERUVjMgR29sZC1RCisgIC0gRFZpQ08gRnVzaW9uSERUVjMgR29sZC1UCisgIC0gRFZpQ08gRnVzaW9uSERUVjUgR29sZAorICAtIEhhdXBwYXVnZSBOb3ZhLVQgRFZCLVQKKyAgLSBLV29ybGQvVlN0cmVhbSBYUGVydCBEVkItVAorICAtIHBjSERUViBIRDMwMDAgSERUVgorICAtIFRlcnJhVGVjIENpbmVyZ3kgMTQwMCBEVkItVAorICAtIFdpbkZhc3QgRFRWMTAwMC1UCisKK28gQ2FyZHMgYmFzZWQgb24gdGhlIFBoaWxsaXBzIHNhYTcxMzQgUENJIGJyaWRnZToKKyAgLSBNZWRpb24gNzEzNAorICAtIFBpbm5hY2xlIFBDVFYgMzAwaSBEVkItVCArIFBBTAorICAtIExpZmVWaWV3IEZseURWQi1UIERVTworICAtIFR5cGhvb24gRFZCLVQgRHVvIERpZ2l0YWwvQW5hbG9nIENhcmRidXMKKyAgLSBQaGlsaXBzIFRPVUdIIERWQi1UIHJlZmVyZW5jZSBkZXNpZ24KKyAgLSBQaGlsaXBzIEVVUk9QQSBWMyByZWZlcmVuY2UgZGVzaWduCisgIC0gQ29tcHJvIFZpZGVvbWF0ZSBEVkItVDMwMAorICAtIENvbXBybyBWaWRlb21hdGUgRFZCLVQyMDAKKyAgLSBBVmVyTWVkaWEgQVZlclRWSEQgTUNFIEExODAKKyAgLSBLV29ybGQgUEMxNTAtVSBBVFNDIEh5YnJpZAorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2R2Yi9jaS50eHQgYi9Eb2N1bWVudGF0aW9uL2R2Yi9jaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmMzYmRhNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZHZiL2NpLnR4dApAQCAtMCwwICsxLDIxMiBAQAorKiBGb3IgdGhlIHVzZXIKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitOT1RFOiBUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgdXNhZ2Ugb2YgdGhlIGhpZ2ggbGV2ZWwgQ0kgQVBJIGFzCitpbiBhY2NvcmRhbmNlIHRvIHRoZSBMaW51eCBEVkIgQVBJLiBUaGlzIGlzIGEgbm90IGEgZG9jdW1lbnRhdGlvbiBmb3IgdGhlLAorZXhpc3RpbmcgbG93IGxldmVsIENJIEFQSS4KK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1RvIHV0aWxpemUgdGhlIEhpZ2ggTGV2ZWwgQ0kgY2FwYWJpbGl0aWVzLAorCisoMSopIFRoaXMgcG9pbnQgaXMgdmFsaWQgb25seSBmb3IgdGhlIFR3aW5oYW4vY2xvbmVzCisgIEZvciB0aGUgVHdpbmhhbi9Ud2luaGFuIGNsb25lcywgdGhlIGRzdF9jYSBtb2R1bGUgaGFuZGxlcyB0aGUgQ0kKKyAgaGFyZHdhcmUgaGFuZGxpbmcuVGhpcyBtb2R1bGUgaXMgbG9hZGVkIGF1dG9tYXRpY2FsbHkgaWYgYSBDSQorICAoQ29tbW9uIEludGVyZmFjZSwgdGhhdCBob2xkcyB0aGUgQ0FNIChDb25kaXRpb25hbCBBY2Nlc3MgTW9kdWxlKQorICBpcyBkZXRlY3RlZC4KKworKDIpIG9uZSByZXF1aXJlcyBhIHVzZXJzcGFjZSBhcHBsaWNhdGlvbiwgY2FfemFwLiBUaGlzIHNtYWxsIHVzZXJsYW5kCisgIGFwcGxpY2F0aW9uIGlzIGluIGNoYXJnZSBvZiBzZW5kaW5nIHRoZSBkZXNjcmFtYmxpbmcgcmVsYXRlZCBpbmZvcm1hdGlvbgorICB0byB0aGUgQ0FNLgorCitUaGlzIGFwcGxpY2F0aW9uIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgdG8gZnVuY3Rpb24gcHJvcGVybHkgYXMgb2Ygbm93LgorCisJKGEpIFR1bmUgdG8gYSB2YWxpZCBjaGFubmVsLCB3aXRoIHN6YXAuCisJICBlZzogJCBzemFwIC1jIGNoYW5uZWxzLmNvbmYgLXIgIlRNQyIgLXgKKworCShiKSBhIGNoYW5uZWxzLmNvbmYgY29udGFpbmluZyBhIHZhbGlkIFBNVCBQSUQKKwkgIGVnOiBUTUM6MTE5OTY6aDowOjI3NTAwOjI3ODo1MTI6NjUwOjMyMQorCisJICBoZXJlIDI3OCBpcyBhIHZhbGlkIFBNVCBQSUQuIHRoZSByZXN0IG9mIHRoZSB2YWx1ZXMgYXJlIHRoZQorCSAgc2FtZSBvbmVzIHRoYXQgc3phcCB1c2VzLgorCisJKGMpIGFmdGVyIHJ1bm5pbmcgYSBzemFwLCB5b3UgaGF2ZSB0byBydW4gY2FfemFwLCBmb3IgdGhlCisJICBkZXNjcmFtYmxlciB0byBmdW5jdGlvbiwKKwkgIGVnOiAkIGNhX3phcCBjaGFubmVscy5jb25mICJUTUMiCisKKwkoZCkgSG9wZWZ1bGx5IGVuam95IHlvdXIgZmF2b3VyaXRlIHN1YnNjcmliZWQgY2hhbm5lbCBhcyB5b3UgZG8gd2l0aAorCSAgYSBGVEEgY2FyZC4KKworKDMpIEN1cnJlbnRseSBjYV96YXAsIGFuZCBkc3RfdGVzdCwgYm90aCBhcmUgbWVhbnQgZm9yIGRlbW9uc3RyYXRpb24KKyAgcHVycG9zZXMgb25seSwgdGhleSBjYW4gYmVjb21lIGZ1bGwgZmxlZGdlZCBhcHBsaWNhdGlvbnMgaWYgbmVjZXNzYXJ5LgorCisKKyogQ2FyZHMgdGhhdCBmYWxsIGluIHRoaXMgY2F0ZWdvcnkKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitBdCBwcmVzZW50IHRoZSBjYXJkcyB0aGF0IGZhbGwgaW4gdGhpcyBjYXRlZ29yeSBhcmUgdGhlIFR3aW5oYW4gYW5kIGl0cworY2xvbmVzLCB0aGVzZSBjYXJkcyBhcmUgYXZhaWxhYmxlIGFzIFZWTUVSLCBUb21hdG8sIEhlcmN1bGVzLCBPcmFuZ2UgYW5kCitzbyBvbi4KKworKiBDSSBtb2R1bGVzIHRoYXQgYXJlIHN1cHBvcnRlZAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK1RoZSBDSSBtb2R1bGUgc3VwcG9ydCBpcyBsYXJnZWx5IGRlcGVuZGVudCB1cG9uIHRoZSBmaXJtd2FyZSBvbiB0aGUgY2FyZHMKK1NvbWUgY2FyZHMgZG8gc3VwcG9ydCBhbG1vc3QgYWxsIG9mIHRoZSBhdmFpbGFibGUgQ0kgbW9kdWxlcy4gVGhlcmUgaXMKK25vdGhpbmcgbXVjaCB0aGF0IGNhbiBiZSBkb25lIGluIG9yZGVyIHRvIG1ha2UgYWRkaXRpb25hbCBDSSBtb2R1bGVzCit3b3JraW5nIHdpdGggdGhlc2UgY2FyZHMuCisKK01vZHVsZXMgdGhhdCBoYXZlIGJlZW4gdGVzdGVkIGJ5IHRoaXMgZHJpdmVyIGF0IHByZXNlbnQgYXJlCisKKygxKSBJcmRldG8gMSBhbmQgMiBmcm9tIFNDTQorKDIpIFZpYWNjZXNzIGZyb20gU0NNCisoMykgRHJhZ29uY2FtCisKKyogVGhlIEhpZ2ggbGV2ZWwgQ0kgQVBJCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisqIEZvciB0aGUgcHJvZ3JhbW1lcgorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK1dpdGggdGhlIEhpZ2ggTGV2ZWwgQ0kgYXBwcm9hY2ggYW55IG5ldyBjYXJkIHdpdGggYWxtb3N0IGFueSByYW5kb20KK2FyY2hpdGVjdHVyZSBjYW4gYmUgaW1wbGVtZW50ZWQgd2l0aCB0aGlzIHN0eWxlLCB0aGUgZGVmaW5pdGlvbnMKK2luc2lkZSB0aGUgc3dpdGNoIHN0YXRlbWVudCBjYW4gYmUgZWFzaWx5IGFkYXB0ZWQgZm9yIGFueSBjYXJkLCB0aGVyZWJ5CitlbGltaW5hdGluZyB0aGUgbmVlZCBmb3IgYW55IGFkZGl0aW9uYWwgaW9jdGxzLgorCitUaGUgZGlzYWR2YW50YWdlIGlzIHRoYXQgdGhlIGRyaXZlci9oYXJkd2FyZSBoYXMgdG8gbWFuYWdlIHRoZSByZXN0LiBGb3IKK3RoZSBhcHBsaWNhdGlvbiBwcm9ncmFtbWVyIGl0IHdvdWxkIGJlIGFzIHNpbXBsZSBhcyBzZW5kaW5nL3JlY2VpdmluZyBhbgorYXJyYXkgdG8vZnJvbSB0aGUgQ0kgaW9jdGxzIGFzIGRlZmluZWQgaW4gdGhlIExpbnV4IERWQiBBUEkuIE5vIGNoYW5nZXMKK2hhdmUgYmVlbiBtYWRlIGluIHRoZSBBUEkgdG8gYWNjb21tb2RhdGUgdGhpcyBmZWF0dXJlLgorCisKKyogV2h5IHRoZSBuZWVkIGZvciBhbm90aGVyIENJIGludGVyZmFjZSA/Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorVGhpcyBpcyBvbmUgb2YgdGhlIG1vc3QgY29tbW9ubHkgYXNrZWQgcXVlc3Rpb24uIFdlbGwgYSBuaWNlIHF1ZXN0aW9uLgorU3RyaWN0bHkgc3BlYWtpbmcgdGhpcyBpcyBub3QgYSBuZXcgaW50ZXJmYWNlLgorCitUaGUgQ0kgaW50ZXJmYWNlIGlzIGRlZmluZWQgaW4gdGhlIERWQiBBUEkgaW4gY2EuaCBhcworCit0eXBlZGVmIHN0cnVjdCBjYV9zbG90X2luZm8geworCWludCBudW07ICAgICAgICAgICAgICAgLyogc2xvdCBudW1iZXIgKi8KKworCWludCB0eXBlOyAgICAgICAgICAgICAgLyogQ0EgaW50ZXJmYWNlIHRoaXMgc2xvdCBzdXBwb3J0cyAqLworI2RlZmluZSBDQV9DSSAgICAgICAgICAgIDEgICAgIC8qIENJIGhpZ2ggbGV2ZWwgaW50ZXJmYWNlICovCisjZGVmaW5lIENBX0NJX0xJTksgICAgICAgMiAgICAgLyogQ0kgbGluayBsYXllciBsZXZlbCBpbnRlcmZhY2UgKi8KKyNkZWZpbmUgQ0FfQ0lfUEhZUyAgICAgICA0ICAgICAvKiBDSSBwaHlzaWNhbCBsYXllciBsZXZlbCBpbnRlcmZhY2UgKi8KKyNkZWZpbmUgQ0FfREVTQ1IgICAgICAgICA4ICAgICAvKiBidWlsdC1pbiBkZXNjcmFtYmxlciAqLworI2RlZmluZSBDQV9TQyAgICAgICAgICAxMjggICAgIC8qIHNpbXBsZSBzbWFydCBjYXJkIGludGVyZmFjZSAqLworCisJdW5zaWduZWQgaW50IGZsYWdzOworI2RlZmluZSBDQV9DSV9NT0RVTEVfUFJFU0VOVCAxIC8qIG1vZHVsZSAob3IgY2FyZCkgaW5zZXJ0ZWQgKi8KKyNkZWZpbmUgQ0FfQ0lfTU9EVUxFX1JFQURZICAgMgorfSBjYV9zbG90X2luZm9fdDsKKworCisKK1RoaXMgQ0kgaW50ZXJmYWNlIGZvbGxvd3MgdGhlIENJIGhpZ2ggbGV2ZWwgaW50ZXJmYWNlLCB3aGljaCBpcyBub3QKK2ltcGxlbWVudGVkIGJ5IG1vc3QgYXBwbGljYXRpb25zLiBIZW5jZSB0aGlzIGFyZWEgaXMgcmV2aXNpdGVkLgorCitUaGlzIENJIGludGVyZmFjZSBpcyBxdWl0ZSBkaWZmZXJlbnQgaW4gdGhlIGNhc2UgdGhhdCBpdCB0cmllcyB0bworYWNjb21tb2RhdGUgYWxsIG90aGVyIENJIGJhc2VkIGRldmljZXMsIHRoYXQgZmFsbCBpbnRvIHRoZSBvdGhlciBjYXRlZ29yaWVzLgorCitUaGlzIG1lYW5zIHRoYXQgdGhpcyBDSSBpbnRlcmZhY2UgaGFuZGxlcyB0aGUgRU41MDIyMSBzdHlsZSB0YWdzIGluIHRoZQorQXBwbGljYXRpb24gbGF5ZXIgb25seSBhbmQgbm8gc2Vzc2lvbiBtYW5hZ2VtZW50IGlzIHRha2VuIGNhcmUgb2YgYnkgdGhlCithcHBsaWNhdGlvbi4gVGhlIGRyaXZlci9oYXJkd2FyZSB3aWxsIHRha2UgY2FyZSBvZiBhbGwgdGhhdC4KKworVGhpcyBpbnRlcmZhY2UgaXMgcHVyZWx5IGFuIEVONTAyMjEgaW50ZXJmYWNlIGV4Y2hhbmdpbmcgQVBEVSdzLiBUaGlzCittZWFucyB0aGF0IG5vIHNlc3Npb24gbWFuYWdlbWVudCwgbGluayBsYXllciBvciBhIHRyYW5zcG9ydCBsYXllciBkbworZXhpc3QgaW4gdGhpcyBjYXNlIGluIHRoZSBhcHBsaWNhdGlvbiB0byBkcml2ZXIgY29tbXVuaWNhdGlvbi4gSXQgaXMKK2FzIHNpbXBsZSBhcyB0aGF0LiBUaGUgZHJpdmVyL2hhcmR3YXJlIGhhcyB0byB0YWtlIGNhcmUgb2YgdGhhdC4KKworCitXaXRoIHRoaXMgSGlnaCBMZXZlbCBDSSBpbnRlcmZhY2UsIHRoZSBpbnRlcmZhY2UgY2FuIGJlIGRlZmluZWQgd2l0aCB0aGUKK3JlZ3VsYXIgaW9jdGxzLgorCitBbGwgdGhlc2UgaW9jdGxzIGFyZSBhbHNvIHZhbGlkIGZvciB0aGUgSGlnaCBsZXZlbCBDSSBpbnRlcmZhY2UKKworI2RlZmluZSBDQV9SRVNFVCAgICAgICAgICBfSU8oJ28nLCAxMjgpCisjZGVmaW5lIENBX0dFVF9DQVAgICAgICAgIF9JT1IoJ28nLCAxMjksIGNhX2NhcHNfdCkKKyNkZWZpbmUgQ0FfR0VUX1NMT1RfSU5GTyAgX0lPUignbycsIDEzMCwgY2Ffc2xvdF9pbmZvX3QpCisjZGVmaW5lIENBX0dFVF9ERVNDUl9JTkZPIF9JT1IoJ28nLCAxMzEsIGNhX2Rlc2NyX2luZm9fdCkKKyNkZWZpbmUgQ0FfR0VUX01TRyAgICAgICAgX0lPUignbycsIDEzMiwgY2FfbXNnX3QpCisjZGVmaW5lIENBX1NFTkRfTVNHICAgICAgIF9JT1coJ28nLCAxMzMsIGNhX21zZ190KQorI2RlZmluZSBDQV9TRVRfREVTQ1IgICAgICBfSU9XKCdvJywgMTM0LCBjYV9kZXNjcl90KQorI2RlZmluZSBDQV9TRVRfUElEICAgICAgICBfSU9XKCdvJywgMTM1LCBjYV9waWRfdCkKKworCitPbiBxdWVyeWluZyB0aGUgZGV2aWNlLCB0aGUgZGV2aWNlIHlpZWxkcyBpbmZvcm1hdGlvbiB0aHVzCisKK0NBX0dFVF9TTE9UX0lORk8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0NvbW1hbmQgPSBbaW5mb10KK0FQUDogTnVtYmVyPVsxXQorQVBQOiBUeXBlPVsxXQorQVBQOiBmbGFncz1bMV0KK0FQUDogQ0kgSGlnaCBsZXZlbCBpbnRlcmZhY2UKK0FQUDogQ0EvQ0kgTW9kdWxlIFByZXNlbnQKKworQ0FfR0VUX0NBUAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ29tbWFuZCA9IFtjYXBzXQorQVBQOiBTbG90cz1bMV0KK0FQUDogVHlwZT1bMV0KK0FQUDogRGVzY3JhbWJsZXIga2V5cz1bMTZdCitBUFA6IFR5cGU9WzFdCisKK0NBX1NFTkRfTVNHCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEZXNjcmlwdG9ycyhQcm9ncmFtIExldmVsKT1bIDA5IDA2IDA2IDA0IDA1IDUwIGZmIGYxXQorRm91bmQgQ0EgZGVzY3JpcHRvciBAIHByb2dyYW0gbGV2ZWwKKworKDIwKSBFUyB0eXBlPVsyXSBFUyBwaWQ9WzIwMV0gIEVTIGxlbmd0aCA9WzAgKDB4MCldCisoMjUpIEVTIHR5cGU9WzRdIEVTIHBpZD1bMzAxXSAgRVMgbGVuZ3RoID1bMCAoMHgwKV0KK2NhX21lc3NhZ2UgbGVuZ3RoIGlzIDI1ICgweDE5KSBieXRlcworRU41MDIyMSBDQSBNU0c9WyA5ZiA4MCAzMiAxOSAwMyAwMSAyZCBkMSBmMCAwOCAwMSAwOSAwNiAwNiAwNCAwNSA1MCBmZiBmMSAwMiBlMCBjOSAwMCAwMCAwNCBlMSAyZCAwMCAwMF0KKworCitOb3QgYWxsIGlvY3RsJ3MgYXJlIGltcGxlbWVudGVkIGluIHRoZSBkcml2ZXIgZnJvbSB0aGUgQVBJLCB0aGUgb3RoZXIKK2ZlYXR1cmVzIG9mIHRoZSBoYXJkd2FyZSB0aGF0IGNhbm5vdCBiZSBpbXBsZW1lbnRlZCBieSB0aGUgQVBJIGFyZSBhY2hpZXZlZAordXNpbmcgdGhlIENBX0dFVF9NU0cgYW5kIENBX1NFTkRfTVNHIGlvY3Rscy4gQW4gRU41MDIyMSBzdHlsZSB3cmFwcGVyIGlzCit1c2VkIHRvIGV4Y2hhbmdlIHRoZSBkYXRhIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBoYXJkd2FyZS4KKworCisvKiBhIG1lc3NhZ2UgdG8vZnJvbSBhIENJLUNBTSAqLwordHlwZWRlZiBzdHJ1Y3QgY2FfbXNnIHsKKwl1bnNpZ25lZCBpbnQgaW5kZXg7CisJdW5zaWduZWQgaW50IHR5cGU7CisJdW5zaWduZWQgaW50IGxlbmd0aDsKKwl1bnNpZ25lZCBjaGFyIG1zZ1syNTZdOworfSBjYV9tc2dfdDsKKworCitUaGUgZmxvdyBvZiBkYXRhIGNhbiBiZSBkZXNjcmliZWQgdGh1cywKKworCisKKworCisJQXBwIChVc2VyKQorCS0tLS0tCisJcGFyc2UKKwkgIHwKKwkgIHwKKwkgIHYKKwllbjUwMjIxIEFQRFUgKHBhY2thZ2UpCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgfAkgIHwJCQkJfCBIaWdoIExldmVsIENJIGRyaXZlcgorICAgfAkgIHwJCQkJfAorICAgfAkgIHYJCQkJfAorICAgfAllbjUwMjIxIEFQRFUgKHVucGFja2FnZSkJfAorICAgfAkgIHwJCQkJfAorICAgfAkgIHwJCQkJfAorICAgfAkgIHYJCQkJfAorICAgfAlzYW5pdHkgY2hlY2tzCQkJfAorICAgfAkgIHwJCQkJfAorICAgfAkgIHwJCQkJfAorICAgfAkgIHYJCQkJfAorICAgfAlkbyAoSC9XIGRlcCkJCQl8CisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCSAgfCAgICBIYXJkd2FyZQorCSAgfAorCSAgdgorCisKKworCitUaGUgSGlnaCBMZXZlbCBDSSBpbnRlcmZhY2UgdXNlcyB0aGUgRU41MDIyMSBEVkIgc3RhbmRhcmQsIGZvbGxvd2luZyBhCitzdGFuZGFyZCBlbnN1cmVzIGZ1dHVyZXByb29mbmVzcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHZiL2NvbnRyaWJ1dG9ycy50eHQgYi9Eb2N1bWVudGF0aW9uL2R2Yi9jb250cmlidXRvcnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczMWEwMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2R2Yi9jb250cmlidXRvcnMudHh0CkBAIC0wLDAgKzEsOTYgQEAKK1RoYW5rcyBnbyB0byB0aGUgZm9sbG93aW5nIHBlb3BsZSBmb3IgcGF0Y2hlcyBhbmQgY29udHJpYnV0aW9uczoKKworTWljaGFlbCBIdW5vbGQgPG0uaHVub2xkQGdteC5kZT4KKyAgZm9yIHRoZSBpbml0aWFsIHNhYTcxNDYgZHJpdmVyIGFuZCBpdHMgcmVjZW50IG92ZXJoYXVsCisKK0NocmlzdGlhbiBUaGVpc3MKKyAgZm9yIGhpcyB3b3JrIG9uIHRoZSBpbml0aWFsIExpbnV4IERWQiBkcml2ZXIKKworTWFyY3VzIE1ldHpsZXIgPG1vY21AbWV0emxlcmJyb3MuZGU+CitSYWxwaCBNZXR6bGVyIDxyamttQG1ldHpsZXJicm9zLmRlPgorICBmb3IgdGhlaXIgY29udGludWluZyB3b3JrIG9uIHRoZSBEVkIgZHJpdmVyCisKK01pY2hhZWwgSG9senQgPGtqdUBkZWJpYW4ub3JnPgorICBmb3IgaGlzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIGR2Yi1uZXQgZHJpdmVyCisKK0RpZWdvIFBpY2NpYW5pIDxkLnBpY2NpYW5pQG5vdmFjb21wLml0PgorICBmb3IgQ3liZXJMb2dpbiBmb3IgTGludXggd2hpY2ggYWxsb3dzIGxvZ2dpbmcgb250byBFT04KKyAgKGluIGNhc2UgeW91IGFyZSB3b25kZXJpbmcgd2hlcmUgQ3liZXJMb2dpbiBpcywgRU9OIGNoYW5nZWQgaXRzIGxvZ2luCisgIHByb2NlZHVyZSBhbmQgQ3liZXJMb2dpbiBpcyBubyBsb25nZXIgdXNlZC4pCisKK01hcnRpbiBTY2hhbGxlciA8bWFydGluQHNtdXJmLmZyYW5rZW4uZGU+CisgIGZvciBwYXRjaGluZyB0aGUgY2FibGUgY2FyZCBkZWNvZGVyIGRyaXZlcgorCitLbGF1cyBTY2htaWRpbmdlciA8S2xhdXMuU2NobWlkaW5nZXJAY2Fkc29mdC5kZT4KKyAgZm9yIHZhcmlvdXMgZml4ZXMgcmVnYXJkaW5nIHR1bmluZywgT1NEIGFuZCBDSSBzdHVmZiBhbmQgaGlzIHdvcmsgb24gVkRSCisKK1N0ZXZlIEJyb3duIDxzYnJvd25AY29ydGxhbmQuY29tPgorICBmb3IgaGlzIEFGQyBrZXJuZWwgdGhyZWFkCisKK0NocmlzdG9waCBNYXJ0aW4gPG1hcnRpbkB1bmktbWFpbnouZGU+CisgIGZvciBoaXMgTElSQyBpbmZyYXJlZCBoYW5kbGVyCisKK0FuZHJlYXMgT2JlcnJpdHRlciA8b2JpQGxpbnV4dHYub3JnPgorRGVubmlzIE5vZXJtYW5uIDxkZW5uaXMubm9lcm1hbm5Abm9lcm5ldC5kZT4KK0ZlbGl4IERvbWtlIDx0bWJpbmNAZWxpdGVkdmIubmV0PgorRmxvcmlhbiBTY2hpcm1lciA8am9sdEB0dXhib3gub3JnPgorUm9ubnkgU3RydXR6IDwzZGVzQGVsaXRlZHZiLmRlPgorV29sZnJhbSBKb29zdCA8ZGJveDJAZnJva2FzY2h3ZWkuZGU+CisuLi5hbmQgYWxsIHRoZSBvdGhlciBkYm94MiBwZW9wbGUKKyAgZm9yIG1hbnkgYnVnZml4ZXMgaW4gdGhlIGdlbmVyaWMgRFZCIENvcmUsIGZyb250ZW5kIGRyaXZlcnMgYW5kCisgIHRoZWlyIHdvcmsgb24gdGhlIGRib3gyIHBvcnQgb2YgdGhlIERWQiBkcml2ZXIKKworT2xpdmVyIEVuZHJpc3MgPG8uZW5kcmlzc0BnbXguZGU+CisgIGZvciBtYW55IGJ1Z2ZpeGVzCisKK0FuZHJldyBkZSBRdWluY2V5IDxhZHFfZHZiQGxpZHNraWFsZi5uZXQ+CisgIGZvciB0aGUgdGRhMTAwNHggZnJvbnRlbmQgZHJpdmVyLCBhbmQgdmFyaW91cyBidWdmaXhlcworCitQZXRlciBTY2hpbGRtYW5uIDxwZXRlci5zY2hpbGRtYW5uQHdlYi5kZT4KKyAgZm9yIHRoZSBkcml2ZXIgZm9yIHRoZSBUZWNobmlzYXQgU2t5U3RhcjIgUENJIERWQiBjYXJkCisKK1ZhZGltIENhdGFuYSA8c2t5c3RhckBtb2xkb3ZhLmNjPgorUm9iZXJ0byBSYWd1c2EgPHIucmFndXNhQGxpYmVyby5pdD4KK0F1Z3VzdG8gQ2FyZG9zbyA8YXVndXN0b0BjYXJoaWwubmV0PgorICBmb3IgYWxsIHRoZSB3b3JrIGZvciB0aGUgRmxleENvcElJIGNoaXBzZXQgYnkgQjJDMixJbmMuCisKK0Rhdm9yIEVtYXJkIDxlbWFyZEBzb2Z0aG9tZS5uZXQ+CisgIGZvciBoaXMgd29yayBvbiB0aGUgYnVkZ2V0IGRyaXZlcnMsIHRoZSBkZW11eCBjb2RlLAorICB0aGUgbW9kdWxlIHVubG9hZGluZyBwcm9ibGVtcywgLi4uCisKK0hhbnMtRnJpZWRlciBWb2d0IDxoZnZvZ3RAYXJjb3IuZGU+CisgIGZvciBoaXMgd29yayBvbiBjYWxjdWxhdGluZyBhbmQgY2hlY2tpbmcgdGhlIGNyYydzIGZvciB0aGUKKyAgVGVjaG5vVHJlbmQvSGF1cHBhdWdlIERFQyBkcml2ZXIgZmlybXdhcmUKKworTWljaGFlbCBEcmVoZXIgPG1pY2hhZWxANWRvdDEuZGU+CitBbmRyZWFzICdyYW5keScgV2VpbmJlcmdlcgorICBmb3IgdGhlIHN1cHBvcnQgb2YgdGhlIEZ1aml0c3UtU2llbWVucyBBY3RpdnkgYnVkZ2V0IERWQi1TCisKK0tlbm5ldGggQWFmbMO4eSA8a2UtYWFAZnJpc3VyZi5ubz4KKyAgZm9yIGFkZGluZyBzdXBwb3J0IGZvciBUeXBob29uIERWQi1TIGJ1ZGdldCBjYXJkCisKK0VybnN0IFBlaW5saWNoIDxlLnBlaW5saWNoQGlub2RlLmF0PgorICBmb3IgdHVuaW5nL0RpU0VxQyBzdXBwb3J0IGZvciB0aGUgREVDIDMwMDAtcworCitQZXRlciBCZXV0bmVyIDxwLmJldXRuZXJAZ214Lm5ldD4KKyAgZm9yIHRoZSBJUiBjb2RlIGZvciB0aGUgdHR1c2ItZGVjIGRyaXZlcgorCitXaWxzb24gTWljaGFlbHMgPHdpbHNvbm1pY2hhZWxzQGVhcnRobGluay5uZXQ+CisgIGZvciB0aGUgbGdkdDMzMHggZnJvbnRlbmQgZHJpdmVyLCBhbmQgdmFyaW91cyBidWdmaXhlcworCitNaWNoYWVsIEtydWZreSA8bWtydWZreUBsaW51eHR2Lm9yZz4KKyAgZm9yIG1haW50YWluaW5nIHY0bC9kdmIgaW50ZXItdHJlZSBkZXBlbmRlbmNpZXMKKworVGF5bG9yIEphY29iIDxydGphY29iQGVhcnRobGluay5uZXQ+CisgIGZvciB0aGUgbnh0MjAwMiBmcm9udGVuZCBkcml2ZXIKKworSmVhbi1GcmFuY29pcyBUaGliZXJ0IDxqZWFuZnJhbmNvaXNAc2FnZXR2LmNvbT4KKyAgZm9yIHRoZSBueHQyMDA0IGZyb250ZW5kIGRyaXZlcgorCitLaXJrIExhcHJheSA8a2lyay5sYXByYXlAZ21haWwuY29tPgorICBmb3IgdGhlIG9yNTEyMTEgYW5kIG9yNTExMzIgZnJvbnRlbmQgZHJpdmVycywgYW5kCisgIGZvciBtZXJnaW5nIHRoZSBueHQyMDAyIGFuZCBueHQyMDA0IG1vZHVsZXMgaW50byBhCisgIHNpbmdsZSBueHQyMDB4IGZyb250ZW5kIGRyaXZlci4KKworKElmIHlvdSB0aGluayB5b3Ugc2hvdWxkIGJlIGluIHRoaXMgbGlzdCwgYnV0IHlvdSBhcmUgbm90LCBkcm9wIGEKKyBsaW5lIHRvIHRoZSBEVkIgbWFpbGluZyBsaXN0KQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kdmIvZmFxLnR4dCBiL0RvY3VtZW50YXRpb24vZHZiL2ZhcS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdiMTM3MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZHZiL2ZhcS50eHQKQEAgLTAsMCArMSwxNTkgQEAKK1NvbWUgdmVyeSBmcmVxdWVudGx5IGFza2VkIHF1ZXN0aW9ucyBhYm91dCBsaW51eHR2LWR2YgorCisxLiBUaGUgc2lnbmFsIHNlZW1zIHRvIGRpZSBhIGZldyBzZWNvbmRzIGFmdGVyIHR1bmluZy4KKworCUl0J3Mgbm90IGEgYnVnLCBpdCdzIGEgZmVhdHVyZS4gQmVjYXVzZSB0aGUgZnJvbnRlbmRzIGhhdmUKKwlzaWduaWZpY2FudCBwb3dlciByZXF1aXJlbWVudHMgKGFuZCBoZW5jZSBnZXQgdmVyeSBob3QpLCB0aGV5CisJYXJlIHBvd2VyZWQgZG93biBpZiB0aGV5IGFyZSB1bnVzZWQgKGkuZS4gaWYgdGhlIGZyb250ZW5kIGRldmljZQorCWlzIGNsb3NlZCkuIFRoZSBkdmItY29yZS5vIG1vZHVsZSBwYXJhbWV0ZXIgImR2Yl9zaHV0ZG93bl90aW1lb3V0IgorCWFsbG93IHlvdSB0byBjaGFuZ2UgdGhlIHRpbWVvdXQgKGRlZmF1bHQgNSBzZWNvbmRzKS4gU2V0dGluZyB0aGUKKwl0aW1lb3V0IHRvIDAgZGlzYWJsZXMgdGhlIHRpbWVvdXQgZmVhdHVyZS4KKworMi4gSG93IGNhbiBJIHdhdGNoIFRWPworCisJVGhlIGRyaXZlciBkaXN0cmlidXRpb24gaW5jbHVkZXMgc29tZSBzaW1wbGUgdXRpbGl0aWVzIHdoaWNoCisJYXJlIG1haW5seSBpbnRlbmRlZCBmb3IgdGVzdGluZyBhbmQgdG8gZGVtb25zdHJhdGUgaG93IHRoZQorCURWQiBBUEkgd29ya3MuCisKKwlEZXBlbmRpbmcgb24gd2hldGhlciB5b3UgaGF2ZSBhIERWQi1TLCBEVkItQyBvciBEVkItVCBjYXJkLCB1c2UKKwlhcHBzL3N6YXAvc3phcCwgY3phcCBvciB0emFwLiBZb3UgbXVzdCBzdXBwbHkgYSBjaGFubmVsIGxpc3QKKwlpbiB+Ly5bc2N0XXphcC9jaGFubmVscy5jb25mLiBJZiB5b3UgYXJlIGx1Y2t5IHlvdSBjYW4ganVzdCBjb3B5CisJb25lIG9mIHRoZSBzdXBwbGllZCBjaGFubmVsIGxpc3RzLCBvciB5b3UgY2FuIGNyZWF0ZSBhIG5ldyBvbmUKKwlieSBydW5uaW5nIGFwcHMvc2Nhbi9zY2FuLiBJZiB5b3UgcnVuIHNjYW4gb24gYW4gdW5rbm93biBuZXR3b3JrCisJeW91IG1pZ2h0IGhhdmUgdG8gc3VwcGx5IHNvbWUgc3RhcnQgZGF0YSBpbiBhcHBzL3NjYW4vaW5pdGlhbC5oLgorCisJSWYgeW91IGhhdmUgYSBjYXJkIHdpdGggYSBidWlsdC1pbiBoYXJkd2FyZSBNUEVHLWRlY29kZXIgdGhlCisJZHJpdmVycyBjcmVhdGUgYSB2aWRlbzRsaW51eCBkZXZpY2UgKC9kZXYvdjRsL3ZpZGVvMCkgd2hpY2gKKwl5b3UgY2FuIHVzZSB0byB3YXRjaCBUViB3aXRoIGFueSB2NGwgYXBwbGljYXRpb24uIHhhd3R2IGlzIGtub3duCisJdG8gd29yay4gTm90ZSB0aGF0IHlvdSBjYW5ub3QgY2hhbmdlIGNoYW5uZWxzIHdpdGggeGF3dHYsIHlvdQorCWhhdmUgdG8gemFwIHVzaW5nIFtzY3RdemFwLiBJZiB5b3Ugd2FudCBhIG5pY2UgYXBwbGljYXRpb24gZm9yCisJVFYgd2F0Y2hpbmcgYW5kIHJlY29yZC9wbGF5YmFjaywgaGF2ZSBhIGxvb2sgYXQgVkRSLgorCisJSWYgeW91ciBjYXJkIGRvZXMgbm90IGhhdmUgYSBoYXJkd2FyZSBNUEVHIGRlY29kZXIgeW91IG5lZWQKKwlhIHNvZnR3YXJlIE1QRUcgZGVjb2Rlci4gTXBsYXllciBvciB4aW5lIGFyZSBrbm93biB0byB3b3JrLgorCU5ld3NmbGFzaDogTXl0aFRWIGFsc28gaGFzIERWQiBzdXBwb3J0IG5vdy4KKwlOb3RlOiBPbmx5IHZlcnkgcmVjZW50IHZlcnNpb25zIG9mIE1wbGF5ZXIgYW5kIHhpbmUgY2FuIGRlY29kZS4KKwlNUEVHMiB0cmFuc3BvcnQgc3RyZWFtcyAoVFMpIGRpcmVjdGx5LiBUaGVuLCBydW4KKwknW3NjdF16YXAgY2hhbm5lbG5hbWUgLXInIGluIG9uZSB4dGVybSwgYW5kIGtlZXAgaXQgcnVubmluZywKKwlhbmQgc3RhcnQgJ21wbGF5ZXIgLSA8IC9kZXYvZHZiL2FkYXB0ZXIwL2R2cjAnIG9yCisJJ3hpbmUgc3RkaW46Ly9tcGVnMiA8IC9kZXYvZHZiL2FkYXB0ZXIwL2R2cjAnIGluIGEgc2Vjb25kIHh0ZXJtLgorCVRoYXQncyBhbGwgZmFyIGZyb20gcGVyZmVjdCwgYnV0IGl0IHNlZW1zIG5vIG9uZSBoYXMgd3JpdHRlbgorCWEgbmljZSBEVkIgYXBwbGljYXRpb24gd2hpY2ggaW5jbHVkZXMgYSBidWlsdGluIHNvZnR3YXJlIE1QRUcKKwlkZWNvZGVyIHlldC4KKworCU5ld3NmbGFzaDogTmV3ZXN0IHhpbmUgZGlyZWN0bHkgc3VwcG9ydHMgRFZCLiBKdXN0IGNvcHkgeW91cgorCWNoYW5uZWxzLmNvbmYgdG8gfi8ueGluZSBhbmQgc3RhcnQgJ3hpbmUgZHZiOi8vJywgb3Igc2VsZWN0CisJdGhlIERWQiBidXR0b24gaW4gdGhlIHhpbmUgR1VJLiBDaGFubmVsIHN3aXRjaGluZyB3b3JrcyB1c2luZyB0aGUKKwludW1wYWQgcGd1cC9wZ2Rvd24gKE5QOSAvIE5QMykga2V5cyB0byBzY3JvbGwgdGhyb3VnaCB0aGUgY2hhbm5lbCBvc2QKKwltZW51IGFuZCBwcmVzc2luZyBudW1wYWQtZW50ZXIgdG8gc3dpdGNoIHRvIHRoZSBzZWxlY3RlZCBjaGFubmVsLgorCisJTm90ZTogT2xkZXIgdmVyc2lvbnMgb2YgeGluZSBhbmQgbXBsYXllciB1bmRlcnN0YW5kIE1QRUcgcHJvZ3JhbQorCXN0cmVhbXMgKFBTKSBvbmx5LCBhbmQgY2FuIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKKwl0czJwcyB0b29sIGZyb20gdGhlIE1ldHpsZXIgQnJvdGhlcidzIGR2Yi1tcGVndG9vbHMgcGFja2FnZS4KKworMy4gV2hpY2ggb3RoZXIgRFZCIGFwcGxpY2F0aW9ucyBleGlzdD8KKworCWh0dHA6Ly93d3cuY2Fkc29mdC5kZS9wZW9wbGUva2xzL3Zkci8KKwkJS2xhdXMgU2NobWlkaW5nZXIncyBWaWRlbyBEaXNrIFJlY29yZGVyCisKKwlodHRwOi8vd3d3Lm1ldHpsZXJicm9zLm9yZy9kdmIvCisJCU1ldHpsZXIgQnJvcy4gRFZCIGRldmVsb3BtZW50OyBhbHRlcm5hdGUgZHJpdmVycyBhbmQKKwkJRFZCIHV0aWxpdGllcywgaW5jbHVkZSBkdmItbXBlZ3Rvb2xzIGFuZCB0dXh6YXAuCisKKwlodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2R2YnRvb2xzLworCQlEYXZlIENoYXBtYW4ncyBkdmJ0b29scyBwYWNrYWdlLCBpbmNsdWRpbmcKKwkJZHZic3RyZWFtIGFuZCBkdmJ0dW5lCisKKwlodHRwOi8vd3d3LmxpbnV4ZHZiLnR2LworCQlIZW5uaW5nIEhvbHRzY2huZWlkZXIncyBzaXRlIHdpdGggbWFueSBpbnRlcmVzdGluZworCQlsaW5rcyBhbmQgZG9jcworCisJaHR0cDovL3d3dy5kYm94Mi5pbmZvLworCQlMaW51eERWQiBvbiB0aGUgZEJveDIKKworCWh0dHA6Ly93d3cudHV4Ym94Lm9yZy8KKwlodHRwOi8vY3ZzLnR1eGJveC5vcmcvCisJCXRoZSBUdXhCb3ggQ1ZTIG1hbnkgaW50ZXJlc3RpbmcgRFZCIGFwcGxpY2F0aW9ucyBhbmQgdGhlIGRCb3gyCisJCURWQiBzb3VyY2UKKworCWh0dHA6Ly93d3cubGludXh0di5vcmcvZG93bmxvYWRzLwkKKwkJRFZCIFN3aXNzIEFybXkgS25pZmUgbGlicmFyeSBhbmQgdXRpbGl0aWVzCisKKwlodHRwOi8vd3d3Lm5lbmllLm9yZy9taXNjL21wc3lzLworCQlNUFNZUzogYSBNUEVHMiBzeXN0ZW0gbGlicmFyeSBhbmQgdG9vbHMKKworCWh0dHA6Ly9tcGxheWVyaHEuaHUvCisJCW1wbGF5ZXIKKworCWh0dHA6Ly94aW5lLnNvdXJjZWZvcmdlLm5ldC8KKwlodHRwOi8veGluZWhxLmRlLworCQl4aW5lCisKKwlodHRwOi8vd3d3Lm15dGh0di5vcmcvCisJCU15dGhUViAtIGFuYWxvZyBUViBQVlIsIGJ1dCBub3cgd2l0aCBEVkIgc3VwcG9ydCwgdG9vCisJCSh3aXRoIHNvZnR3YXJlIE1QRUcgZGVjb2RlKQorCisJaHR0cDovL2R2YnNub29wLnNvdXJjZWZvcmdlLm5ldC8KKwkJRFZCIHNuaWZmZXIgcHJvZ3JhbSB0byBtb25pdG9yLCBhbmFseXplLCBkZWJ1ZywgZHVtcAorCQlvciB2aWV3IGR2Yi9tcGVnL2RzbS1jYy9taHAgc3RyZWFtIGluZm9ybWF0aW9uIChUUywKKwkJUEVTLCBTRUNUSU9OKQorCis0LiBDYW4ndCBnZXQgYSBzaWduYWwgdHVuZWQgY29ycmVjdGx5CisKKwlJZiB5b3UgYXJlIHVzaW5nIGEgVGVjaG5vdHJlbmQvSGF1cHBhdWdlIERWQi1DIGNhcmQgKndpdGhvdXQqIGFuYWxvZworCW1vZHVsZSwgeW91IG1pZ2h0IGhhdmUgdG8gdXNlIG1vZHVsZSBwYXJhbWV0ZXIgYWRhYz0tMSAoZHZiLXR0cGNpLm8pLgorCis1LiBUaGUgZHZiX25ldCBkZXZpY2UgZG9lc24ndCBnaXZlIG1lIGFueSBwYWNrZXRzIGF0IGFsbAorCisJUnVuIHRjcGR1bXAgb24gdGhlIGR2YjBfMCBpbnRlcmZhY2UuIFRoaXMgc2V0cyB0aGUgaW50ZXJmYWNlCisJaW50byBwcm9taXNjdW91cyBtb2RlIHNvIGl0IGFjY2VwdHMgYW55IHBhY2tldHMgZnJvbSB0aGUgUElECisJeW91IGhhdmUgY29uZmlndXJlZCB3aXRoIHRoZSBkdmJuZXQgdXRpbGl0eS4gQ2hlY2sgaWYgdGhlcmUKKwlhcmUgYW55IHBhY2tldHMgd2l0aCB0aGUgSVAgYWRkciBhbmQgTUFDIGFkZHIgeW91IGhhdmUKKwljb25maWd1cmVkIHdpdGggaWZjb25maWcuCisKKwlJZiB0Y3BkdW1wIGRvZXNuJ3QgZ2l2ZSB5b3UgYW55IG91dHB1dCwgY2hlY2sgdGhlIHN0YXRpc3RpY3MKKwl3aGljaCBpZmNvbmZpZyBvdXRwdXRzLiAoTm90ZTogSWYgdGhlIE1BQyBhZGRyZXNzIGlzIHdyb25nLAorCWR2Yl9uZXQgd29uJ3QgZ2V0IGFueSBpbnB1dDsgdGh1cyB5b3UgaGF2ZSB0byBydW4gdGNwZHVtcAorCWJlZm9yZSBjaGVja2luZyB0aGUgc3RhdGlzdGljcy4pIElmIHRoZXJlIGFyZSBubyBwYWNrZXRzIGF0CisJYWxsIHRoZW4gbWF5YmUgdGhlIFBJRCBpcyB3cm9uZy4gSWYgdGhlcmUgYXJlIGVycm9yIHBhY2tldHMsCisJdGhlbiBlaXRoZXIgdGhlIFBJRCBpcyB3cm9uZyBvciB0aGUgc3RyZWFtIGRvZXMgbm90IGNvbmZvcm0gdG8KKwl0aGUgTVBFIHN0YW5kYXJkIChFTiAzMDEgMTkyLCBodHRwOi8vd3d3LmV0c2kub3JnLykuIFlvdSBjYW4KKwl1c2UgZS5nLiBkdmJzbm9vcCBmb3IgZGVidWdnaW5nLgorCis2LiBUaGUgZHZiX25ldCBkZXZpY2UgZG9lc24ndCBnaXZlIG1lIGFueSBtdWx0aWNhc3QgcGFja2V0cworCisJQ2hlY2sgeW91ciByb3V0ZXMgaWYgdGhleSBpbmNsdWRlIHRoZSBtdWx0aWNhc3QgYWRkcmVzcyByYW5nZS4KKwlBZGRpdGlvbmFsbHkgbWFrZSBzdXJlIHRoYXQgInNvdXJjZSB2YWxpZGF0aW9uIGJ5IHJldmVyc2VkIHBhdGgKKwlsb29rdXAiIGlzIGRpc2FibGVkOgorCSAgJCAiZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L2NvbmYvZHZiMC9ycF9maWx0ZXIiCisKKzcuIFdoYXQgdGhlIGhlbGwgYXJlIGFsbCB0aG9zZSBtb2R1bGVzIHRoYXQgbmVlZCB0byBiZSBsb2FkZWQ/CisKKwlGb3IgYSBkdmItdHRwY2kgYXY3MTEwIGJhc2VkIGZ1bGwtZmVhdHVyZWQgY2FyZCB0aGUgZm9sbG93aW5nCisJbW9kdWxlcyBhcmUgbG9hZGVkOgorCisJLSB2aWRlb2RldjogVmlkZW80TGludXggY29yZSBtb2R1bGUuIFRoaXMgaXMgdGhlIGJhc2UgbW9kdWxlIHRoYXQKKwkgIGdpdmVzIHlvdSBhY2Nlc3MgdG8gdGhlICJhbmFsb2ciIHR2IHBpY3R1cmUgb2YgdGhlIGF2NzExMCBtcGVnMgorCSAgZGVjb2Rlci4KKworCS0gdjRsMi1jb21tb246IGNvbW1vbiBmdW5jdGlvbnMgZm9yIFZpZGVvNExpbnV4LTIgZHJpdmVycworCisJLSB2NGwxLWNvbXBhdDogYmFja3dhcmQgY29tcGF0aWJpbGl0eSBsYXllciBmb3IgVmlkZW80TGludXgtMSBsZWdhY3kKKwkgIGFwcGxpY2F0aW9ucworCisJLSBkdmItY29yZTogRFZCIGNvcmUgbW9kdWxlLiBUaGlzIHByb3ZpZGVzIHlvdSB3aXRoIHRoZQorCSAgL2Rldi9kdmIvYWRhcHRlciBlbnRyaWVzCisKKwktIHNhYTcxNDY6IFNBQTcxNDYgY29yZSBkcml2ZXIuIFRoaXMgaXMgbmVlZCB0byBhY2Nlc3MgYW55IFNBQTcxNDYKKwkgIGJhc2VkIGNhcmQgaW4geW91ciBzeXN0ZW0uCisKKwktIHNhYTcxNDZfdnY6IFNBQTcxNDYgdmlkZW8gYW5kIHZiaSBmdW5jdGlvbnMuIFRoZXNlIGFyZSBvbmx5IG5lZWRlZAorCSAgZm9yIGZ1bGwtZmVhdHVyZWQgY2FyZHMuCisKKwktIHZpZGVvYnVmLWRtYS1zZzogY2FwdHVyZSBoZWxwZXIgbW9kdWxlIGZvciB0aGUgc2FhNzE0Nl92diBkcml2ZXIuIFRoaXMKKwkgIG9uZSBpcyByZXNwb25zaWJsZSB0byBoYW5kbGUgY2FwdHVyZSBidWZmZXJzLgorCisJLSBkdmItdHRwY2k6IFRoZSBtYWluIGRyaXZlciBmb3IgQVY3MTEwIGJhc2VkLCBmdWxsLWZlYXR1cmVkCisJICBEVkItUy9DL1QgY2FyZHMKKworZW9mCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2R2Yi9nZXRfZHZiX2Zpcm13YXJlIGIvRG9jdW1lbnRhdGlvbi9kdmIvZ2V0X2R2Yl9maXJtd2FyZQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45MWI0M2QyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9kdmIvZ2V0X2R2Yl9maXJtd2FyZQpAQCAtMCwwICsxLDk0MiBAQAorIyEvdXNyL2Jpbi9wZXJsCisjICAgICBEVkIgZmlybXdhcmUgZXh0cmFjdG9yCisjCisjICAgICAoYykgMjAwNCBBbmRyZXcgZGUgUXVpbmNleQorIworIyAgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgICAgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgICAgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyMgICAgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyAgICAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyAgICAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjCisjICAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyAgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgICAgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgICAgICAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisKK3VzZSBGaWxlOjpUZW1wIHF3LyB0ZW1wZGlyIC87Cit1c2UgSU86OkhhbmRsZTsKKworQGNvbXBvbmVudHMgPSAoICJzcDg4NzAiLCAic3A4ODd4IiwgInRkYTEwMDQ1IiwgInRkYTEwMDQ2IiwKKwkJInRkYTEwMDQ2bGlmZXZpZXciLCAiYXY3MTEwIiwgImRlYzIwMDB0IiwgImRlYzI1NDB0IiwKKwkJImRlYzMwMDBzIiwgInZwNzA0MSIsICJ2cDcwNDkiLCAiZGlidXNiIiwgIm54dDIwMDIiLCAibnh0MjAwNCIsCisJCSJvcjUxMjExIiwgIm9yNTExMzJfcWFtIiwgIm9yNTExMzJfdnNiIiwgImJsdWViaXJkIiwKKwkJIm9wZXJhMSIsICJjeDIzMXh4IiwgImN4MTgiLCAiY3gyMzg4NSIsICJwdnJ1c2IyIiwgIm1wYzcxOCIsCisJCSJhZjkwMTUiLCAibmdlbmUiLCAiYXo2MDI3IiwgImxtZTI1MTBfbGciLCAibG1lMjUxMGNfczczOTUiLAorCQkibG1lMjUxMGNfczczOTVfb2xkIiwgImRyeGsiLCAiZHJ4a190ZXJyYXRlY19oNSIsCisJCSJkcnhrX2hhdXBwYXVnZV9odnI5MzBjIiwgInRkYTEwMDcxIiwgIml0OTEzNSIsICJkcnhrX3BjdHYiLAorCQkiZHJ4a190ZXJyYXRlY19odGNfc3RpY2siLCAic21zMXh4eF9oY3ciLCAic2kyMTY1Iik7CisKKyMgQ2hlY2sgYXJncworc3ludGF4KCkgaWYgKHNjYWxhcihAQVJHVikgIT0gMSk7CiskY2lkID0gJEFSR1ZbMF07CisKKyMgRG8gaXQhCitmb3IgKCRpPTA7ICRpIDwgc2NhbGFyKEBjb21wb25lbnRzKTsgJGkrKykgeworICAgIGlmICgkY2lkIGVxICRjb21wb25lbnRzWyRpXSkgeworCSRvdXRmaWxlID0gZXZhbCgkY2lkKTsKKwlkaWUgJEAgaWYgJEA7CisJcHJpbnQgU1RERVJSIDw8RU9GOworRmlybXdhcmUocykgJG91dGZpbGUgZXh0cmFjdGVkIHN1Y2Nlc3NmdWxseS4KK05vdyBjb3B5IGl0KHRoZW0pIHRvIGVpdGhlciAvdXNyL2xpYi9ob3RwbHVnL2Zpcm13YXJlIG9yIC9saWIvZmlybXdhcmUKKyhkZXBlbmRpbmcgb24gY29uZmlndXJhdGlvbiBvZiBmaXJtd2FyZSBob3RwbHVnKS4KK0VPRgorCWV4aXQoMCk7CisgICAgfQorfQorCisjIElmIHdlIGdldCBoZXJlLCBpdCB3YXNuJ3QgZm91bmQKK3ByaW50IFNUREVSUiAiVW5rbm93biBjb21wb25lbnQgXCIkY2lkXCJcbiI7CitzeW50YXgoKTsKKworCisKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRmlybXdhcmUtc3BlY2lmaWMgZXh0cmFjdGlvbiBzdWJyb3V0aW5lcworCitzdWIgc3A4ODcwIHsKKyAgICBteSAkc291cmNlZmlsZSA9ICJ0dF9QcmVtaXVtXzIxN2cuemlwIjsKKyAgICBteSAkdXJsID0gImh0dHA6Ly93d3cuc29mdHdhcmVwYXRjaC5wbC85OTk5Y2NkMDZhNDgxM2NiODI3ZGJiMDAwNTA3MWM3MS8kc291cmNlZmlsZSI7CisgICAgbXkgJGhhc2ggPSAiNTM5NzBlYzE3YTUzODk0NWE2ZDhjYjYwOGE3YjM4OTkiOworICAgIG15ICRvdXRmaWxlID0gImR2Yi1mZS1zcDg4NzAuZnciOworICAgIG15ICR0bXBkaXIgPSB0ZW1wZGlyKERJUiA9PiAiL3RtcCIsIENMRUFOVVAgPT4gMSk7CisKKyAgICBjaGVja3N0YW5kYXJkKCk7CisKKyAgICB3Z2V0ZmlsZSgkc291cmNlZmlsZSwgJHVybCk7CisgICAgdW56aXAoJHNvdXJjZWZpbGUsICR0bXBkaXIpOworICAgIHZlcmlmeSgiJHRtcGRpci9zb2Z0d2FyZS9PRU0vSEUvQXBwL2Jvb3QvU0NfTUFJTi5NQyIsICRoYXNoKTsKKyAgICBjb3B5KCIkdG1wZGlyL3NvZnR3YXJlL09FTS9IRS9BcHAvYm9vdC9TQ19NQUlOLk1DIiwgJG91dGZpbGUpOworCisgICAgJG91dGZpbGU7Cit9CisKK3N1YiBzcDg4N3ggeworICAgIG15ICRzb3VyY2VmaWxlID0gIkR2YnQxLjMuNTcuNi56aXAiOworICAgIG15ICR1cmwgPSAiaHR0cDovL3d3dy5hdmVybWVkaWEuY29tL3NvZnR3YXJlLyRzb3VyY2VmaWxlIjsKKyAgICBteSAkY2FiZmlsZSA9ICJEVkJUIE5ldCAgVmVyMS4zLjU3LjYvZGlzazEvZGF0YTEuY2FiIjsKKyAgICBteSAkaGFzaCA9ICIyMzc5MzhkNTNhN2Y4MzRjMDVjNDJiODk0Y2E2OGFjMyI7CisgICAgbXkgJG91dGZpbGUgPSAiZHZiLWZlLXNwODg3eC5mdyI7CisgICAgbXkgJHRtcGRpciA9IHRlbXBkaXIoRElSID0+ICIvdG1wIiwgQ0xFQU5VUCA9PiAxKTsKKworICAgIGNoZWNrc3RhbmRhcmQoKTsKKyAgICBjaGVja3Vuc2hpZWxkKCk7CisKKyAgICB3Z2V0ZmlsZSgkc291cmNlZmlsZSwgJHVybCk7CisgICAgdW56aXAoJHNvdXJjZWZpbGUsICR0bXBkaXIpOworICAgIHVuc2hpZWxkKCIkdG1wZGlyLyRjYWJmaWxlIiwgJHRtcGRpcik7CisgICAgdmVyaWZ5KCIkdG1wZGlyL1pFbmdsaXNoL3NjX21haW4ubWMiLCAkaGFzaCk7CisgICAgY29weSgiJHRtcGRpci9aRW5nbGlzaC9zY19tYWluLm1jIiwgJG91dGZpbGUpOworCisgICAgJG91dGZpbGU7Cit9CisKK3N1YiB0ZGExMDA0NSB7CisgICAgbXkgJHNvdXJjZWZpbGUgPSAidHRfYnVkZ2V0XzIxN2cuemlwIjsKKyAgICBteSAkdXJsID0gImh0dHA6Ly93d3cudGVjaG5vdHJlbmQuZGUvbmV3LzIxN2cvJHNvdXJjZWZpbGUiOworICAgIG15ICRoYXNoID0gIjIxMDVmZDViZjM3ODQyZmJjZGZhNGJmZDU4ZjM1OTRhIjsKKyAgICBteSAkb3V0ZmlsZSA9ICJkdmItZmUtdGRhMTAwNDUuZnciOworICAgIG15ICR0bXBkaXIgPSB0ZW1wZGlyKERJUiA9PiAiL3RtcCIsIENMRUFOVVAgPT4gMSk7CisKKyAgICBjaGVja3N0YW5kYXJkKCk7CisKKyAgICB3Z2V0ZmlsZSgkc291cmNlZmlsZSwgJHVybCk7CisgICAgdW56aXAoJHNvdXJjZWZpbGUsICR0bXBkaXIpOworICAgIGV4dHJhY3QoIiR0bXBkaXIvc29mdHdhcmUvT0VNL1BDSS9BcHAvdHRsY2RhY2MuZGxsIiwgMHgzN2VmOSwgMzA1NTUsICIkdG1wZGlyL2Z3dG1wIik7CisgICAgdmVyaWZ5KCIkdG1wZGlyL2Z3dG1wIiwgJGhhc2gpOworICAgIGNvcHkoIiR0bXBkaXIvZnd0bXAiLCAkb3V0ZmlsZSk7CisKKyAgICAkb3V0ZmlsZTsKK30KKworc3ViIHRkYTEwMDQ2IHsKKwlteSAkc291cmNlZmlsZSA9ICJUVF9QQ0lfMi4xOWhfMjhfMTFfMjAwNi56aXAiOworCW15ICR1cmwgPSAiaHR0cDovL3RlY2hub3RyZW5kLmNvbS51YS9kb3dubG9hZC9zb2Z0d2FyZS8yMTkvJHNvdXJjZWZpbGUiOworCW15ICRoYXNoID0gIjZhN2UxZTJmMjY0NGIxNjJmZjA1MDIzNjc1NTNjNzJkIjsKKwlteSAkb3V0ZmlsZSA9ICJkdmItZmUtdGRhMTAwNDYuZnciOworCW15ICR0bXBkaXIgPSB0ZW1wZGlyKERJUiA9PiAiL3RtcCIsIENMRUFOVVAgPT4gMSk7CisKKwljaGVja3N0YW5kYXJkKCk7CisKKwl3Z2V0ZmlsZSgkc291cmNlZmlsZSwgJHVybCk7CisJdW56aXAoJHNvdXJjZWZpbGUsICR0bXBkaXIpOworCWV4dHJhY3QoIiR0bXBkaXIvVFRfUENJXzIuMTloXzI4XzExXzIwMDYvc29mdHdhcmUvT0VNL1BDSS9BcHAvdHRsY2RhY2MuZGxsIiwgMHg2NTM4OSwgMjQ0NzgsICIkdG1wZGlyL2Z3dG1wIik7CisJdmVyaWZ5KCIkdG1wZGlyL2Z3dG1wIiwgJGhhc2gpOworCWNvcHkoIiR0bXBkaXIvZnd0bXAiLCAkb3V0ZmlsZSk7CisKKwkkb3V0ZmlsZTsKK30KKworc3ViIHRkYTEwMDQ2bGlmZXZpZXcgeworICAgIG15ICRzb3VyY2VmaWxlID0gIjclNUNkcnZfMi4xMS4wMi56aXAiOworICAgIG15ICR1cmwgPSAiaHR0cDovL3d3dy5saWZldmlldy5oay9kYmltYWdlcy9kb2N1bWVudC8kc291cmNlZmlsZSI7CisgICAgbXkgJGhhc2ggPSAiMWVhMjRkZWU0ZWVhOGZlOTcxNjg2OTgxZjM0ZmQyZTAiOworICAgIG15ICRvdXRmaWxlID0gImR2Yi1mZS10ZGExMDA0Ni5mdyI7CisgICAgbXkgJHRtcGRpciA9IHRlbXBkaXIoRElSID0+ICIvdG1wIiwgQ0xFQU5VUCA9PiAxKTsKKworICAgIGNoZWNrc3RhbmRhcmQoKTsKKworICAgIHdnZXRmaWxlKCRzb3VyY2VmaWxlLCAkdXJsKTsKKyAgICB1bnppcCgkc291cmNlZmlsZSwgJHRtcGRpcik7CisgICAgZXh0cmFjdCgiJHRtcGRpci9MVkh5YnJpZC5zeXMiLCAweDhiMDg4LCAyNDYwMiwgIiR0bXBkaXIvZnd0bXAiKTsKKyAgICB2ZXJpZnkoIiR0bXBkaXIvZnd0bXAiLCAkaGFzaCk7CisgICAgY29weSgiJHRtcGRpci9md3RtcCIsICRvdXRmaWxlKTsKKworICAgICRvdXRmaWxlOworfQorCitzdWIgYXY3MTEwIHsKKyAgICBteSAkc291cmNlZmlsZSA9ICJkdmItdHRwY2ktMDEuZnctMjYxZCI7CisgICAgbXkgJHVybCA9ICJodHRwOi8vd3d3LmxpbnV4dHYub3JnL2Rvd25sb2Fkcy9maXJtd2FyZS8kc291cmNlZmlsZSI7CisgICAgbXkgJGhhc2ggPSAiNjAzNDMxYjYyNTk3MTVhOGU4OGYzNzZhNTNiNjRlMmYiOworICAgIG15ICRvdXRmaWxlID0gImR2Yi10dHBjaS0wMS5mdyI7CisKKyAgICBjaGVja3N0YW5kYXJkKCk7CisKKyAgICB3Z2V0ZmlsZSgkc291cmNlZmlsZSwgJHVybCk7CisgICAgdmVyaWZ5KCRzb3VyY2VmaWxlLCAkaGFzaCk7CisgICAgY29weSgkc291cmNlZmlsZSwgJG91dGZpbGUpOworCisgICAgJG91dGZpbGU7Cit9CisKK3N1YiBkZWMyMDAwdCB7CisgICAgbXkgJHNvdXJjZWZpbGUgPSAiZGVjMjE3Zy5leGUiOworICAgIG15ICR1cmwgPSAiaHR0cDovL2hhdXBwYXVnZS5saWdodHBhdGgubmV0L2RlLyRzb3VyY2VmaWxlIjsKKyAgICBteSAkaGFzaCA9ICJiZDg2ZjQ1OGNlZTRhOGYwYThjZTJkMjBjNjYyMTVhOSI7CisgICAgbXkgJG91dGZpbGUgPSAiZHZiLXR0dXNiLWRlYy0yMDAwdC5mdyI7CisgICAgbXkgJHRtcGRpciA9IHRlbXBkaXIoRElSID0+ICIvdG1wIiwgQ0xFQU5VUCA9PiAxKTsKKworICAgIGNoZWNrc3RhbmRhcmQoKTsKKworICAgIHdnZXRmaWxlKCRzb3VyY2VmaWxlLCAkdXJsKTsKKyAgICB1bnppcCgkc291cmNlZmlsZSwgJHRtcGRpcik7CisgICAgdmVyaWZ5KCIkdG1wZGlyL3NvZnR3YXJlL09FTS9TVEIvQXBwL0Jvb3QvU1RCX1BDX1QuYmluIiwgJGhhc2gpOworICAgIGNvcHkoIiR0bXBkaXIvc29mdHdhcmUvT0VNL1NUQi9BcHAvQm9vdC9TVEJfUENfVC5iaW4iLCAkb3V0ZmlsZSk7CisKKyAgICAkb3V0ZmlsZTsKK30KKworc3ViIGRlYzI1NDB0IHsKKyAgICBteSAkc291cmNlZmlsZSA9ICJkZWMyMTdnLmV4ZSI7CisgICAgbXkgJHVybCA9ICJodHRwOi8vaGF1cHBhdWdlLmxpZ2h0cGF0aC5uZXQvZGUvJHNvdXJjZWZpbGUiOworICAgIG15ICRoYXNoID0gIjUzZTU4ZjRmNWI1YzI5MzBiZWVlNzRhNzY4MWZlZDkyIjsKKyAgICBteSAkb3V0ZmlsZSA9ICJkdmItdHR1c2ItZGVjLTI1NDB0LmZ3IjsKKyAgICBteSAkdG1wZGlyID0gdGVtcGRpcihESVIgPT4gIi90bXAiLCBDTEVBTlVQID0+IDEpOworCisgICAgY2hlY2tzdGFuZGFyZCgpOworCisgICAgd2dldGZpbGUoJHNvdXJjZWZpbGUsICR1cmwpOworICAgIHVuemlwKCRzb3VyY2VmaWxlLCAkdG1wZGlyKTsKKyAgICB2ZXJpZnkoIiR0bXBkaXIvc29mdHdhcmUvT0VNL1NUQi9BcHAvQm9vdC9TVEJfUENfWC5iaW4iLCAkaGFzaCk7CisgICAgY29weSgiJHRtcGRpci9zb2Z0d2FyZS9PRU0vU1RCL0FwcC9Cb290L1NUQl9QQ19YLmJpbiIsICRvdXRmaWxlKTsKKworICAgICRvdXRmaWxlOworfQorCitzdWIgZGVjMzAwMHMgeworICAgIG15ICRzb3VyY2VmaWxlID0gImRlYzIxN2cuZXhlIjsKKyAgICBteSAkdXJsID0gImh0dHA6Ly9oYXVwcGF1Z2UubGlnaHRwYXRoLm5ldC9kZS8kc291cmNlZmlsZSI7CisgICAgbXkgJGhhc2ggPSAiYjAxM2VjZWNlYTgzZjRkNmQ4ZDJhMjlhYzdjMWI0NDgiOworICAgIG15ICRvdXRmaWxlID0gImR2Yi10dHVzYi1kZWMtMzAwMHMuZnciOworICAgIG15ICR0bXBkaXIgPSB0ZW1wZGlyKERJUiA9PiAiL3RtcCIsIENMRUFOVVAgPT4gMSk7CisKKyAgICBjaGVja3N0YW5kYXJkKCk7CisKKyAgICB3Z2V0ZmlsZSgkc291cmNlZmlsZSwgJHVybCk7CisgICAgdW56aXAoJHNvdXJjZWZpbGUsICR0bXBkaXIpOworICAgIHZlcmlmeSgiJHRtcGRpci9zb2Z0d2FyZS9PRU0vU1RCL0FwcC9Cb290L1NUQl9QQ19TLmJpbiIsICRoYXNoKTsKKyAgICBjb3B5KCIkdG1wZGlyL3NvZnR3YXJlL09FTS9TVEIvQXBwL0Jvb3QvU1RCX1BDX1MuYmluIiwgJG91dGZpbGUpOworCisgICAgJG91dGZpbGU7Cit9CitzdWIgb3BlcmExeworCW15ICR0bXBkaXIgPSB0ZW1wZGlyKERJUiA9PiAiL3RtcCIsIENMRUFOVVAgPT4gMCk7CisKKwljaGVja3N0YW5kYXJkKCk7CisJbXkgJGZ3ZmlsZTE9ImR2Yi11c2Itb3BlcmExLWZwZ2EtMDEuZnciOworCW15ICRmd2ZpbGUyPSJkdmItdXNiLW9wZXJhLTAxLmZ3IjsKKwlleHRyYWN0KCIyODMwU0NhcDIuc3lzIiwgMHg2MmU4LCA1NTAyNCwgIiR0bXBkaXIvb3BlcmExLWZwZ2EuZnciKTsKKwlleHRyYWN0KCIyODMwU0xvYWQyLnN5cyIsMHgzMTc4LDB4MzY4NS0weDMxNzgsIiR0bXBkaXIvZncxcGFydDEiKTsKKwlleHRyYWN0KCIyODMwU0xvYWQyLnN5cyIsMHgwOTgwLDB4MzE1MC0weDA5ODAsIiR0bXBkaXIvZncxcGFydDIiKTsKKwlkZWx6ZXJvKCIkdG1wZGlyL2Z3MXBhcnQxIiwiJHRtcGRpci9mdzFwYXJ0MS0xIik7CisJZGVsemVybygiJHRtcGRpci9mdzFwYXJ0MiIsIiR0bXBkaXIvZncxcGFydDItMSIpOworCXZlcmlmeSgiJHRtcGRpci9mdzFwYXJ0MS0xIiwiNWUwOTA5ODU4ZmRmMGI1YjA5YWQ0OGI5ZmU2MjJlNzAiKTsKKwl2ZXJpZnkoIiR0bXBkaXIvZncxcGFydDItMSIsImQ2ZTE0NmYzMjE0MjdlOTMxZGYyYzZmY2FkYWMzN2ExIik7CisJdmVyaWZ5KCIkdG1wZGlyL29wZXJhMS1mcGdhLmZ3IiwiMGY4MTMzZjVlOTA1MWY1ZjNjMTkyOGY3ZTVhMWIwN2QiKTsKKworCW15ICRSRVMxPSJceDAxXHg5Mlx4N2ZceDAwXHgwMVx4MDAiOworCW15ICRSRVMwPSJceDAxXHg5Mlx4N2ZceDAwXHgwMFx4MDAiOworCW15ICREQVQxPSJceDAxXHgwMFx4ZTZceDAwXHgwMVx4MDAiOworCW15ICREQVQwPSJceDAxXHgwMFx4ZTZceDAwXHgwMFx4MDAiOworCW9wZW4gRlcsIj4kdG1wZGlyL29wZXJhLmZ3IjsKKwlwcmludCBGVyAiJFJFUzEiOworCXByaW50IEZXICIkREFUMSI7CisJcHJpbnQgRlcgIiRSRVMxIjsKKwlwcmludCBGVyAiJERBVDEiOworCWFwcGVuZGZpbGUoRlcsIiR0bXBkaXIvZncxcGFydDEtMSIpOworCXByaW50IEZXICIkUkVTMCI7CisJcHJpbnQgRlcgIiREQVQwIjsKKwlwcmludCBGVyAiJFJFUzEiOworCXByaW50IEZXICIkREFUMSI7CisJYXBwZW5kZmlsZShGVywiJHRtcGRpci9mdzFwYXJ0Mi0xIik7CisJcHJpbnQgRlcgIiRSRVMxIjsKKwlwcmludCBGVyAiJERBVDEiOworCXByaW50IEZXICIkUkVTMCI7CisJcHJpbnQgRlcgIiREQVQwIjsKKwljb3B5ICgiJHRtcGRpci9vcGVyYTEtZnBnYS5mdyIsJGZ3ZmlsZTEpOworCWNvcHkgKCIkdG1wZGlyL29wZXJhLmZ3IiwkZndmaWxlMik7CisKKwkkZndmaWxlMS4iLCIuJGZ3ZmlsZTI7Cit9CisKK3N1YiB2cDcwNDEgeworICAgIG15ICRzb3VyY2VmaWxlID0gIjIuNDIyLnppcCI7CisgICAgbXkgJHVybCA9ICJodHRwOi8vd3d3LnR3aW5oYW4uY29tL2ZpbGVzL2RyaXZlci9VU0ItVGVyLyRzb3VyY2VmaWxlIjsKKyAgICBteSAkaGFzaCA9ICJlODhjOTM3MmQxZjY2NjA5YTNlN2IwNzJjNTNmYmNmZSI7CisgICAgbXkgJG91dGZpbGUgPSAiZHZiLXZwNzA0MS0yLjQyMi5mdyI7CisgICAgbXkgJHRtcGRpciA9IHRlbXBkaXIoRElSID0+ICIvdG1wIiwgQ0xFQU5VUCA9PiAxKTsKKworICAgIGNoZWNrc3RhbmRhcmQoKTsKKworICAgIHdnZXRmaWxlKCRzb3VyY2VmaWxlLCAkdXJsKTsKKyAgICB1bnppcCgkc291cmNlZmlsZSwgJHRtcGRpcik7CisgICAgZXh0cmFjdCgiJHRtcGRpci9WaXNpb25EVFYvRHJpdmVycy9XaW4ySyZYUC9VRFRUbG9hZC5zeXMiLCAxMjUwMywgMzAzNiwgIiR0bXBkaXIvZnd0bXAxIik7CisgICAgZXh0cmFjdCgiJHRtcGRpci9WaXNpb25EVFYvRHJpdmVycy9XaW4ySyZYUC9VRFRUbG9hZC5zeXMiLCAyMjA3LCAxMDI3NCwgIiR0bXBkaXIvZnd0bXAyIik7CisKKyAgICBteSAkQ01EID0gIlwwMDBcMDAxXDAwMFwyMjJcMTc3XDAwMCI7CisgICAgbXkgJFBBRCA9ICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAiOworICAgIG15ICgkRlcpOworICAgIG9wZW4gJEZXLCAiPiR0bXBkaXIvZnd0bXAzIjsKKyAgICBwcmludCAkRlcgIiRDTURcMDAxJFBBRCI7CisgICAgcHJpbnQgJEZXICIkQ01EXDAwMSRQQUQiOworICAgIGFwcGVuZGZpbGUoJEZXLCAiJHRtcGRpci9md3RtcDEiKTsKKyAgICBwcmludCAkRlcgIiRDTURcMDAwJFBBRCI7CisgICAgcHJpbnQgJEZXICIkQ01EXDAwMSRQQUQiOworICAgIGFwcGVuZGZpbGUoJEZXLCAiJHRtcGRpci9md3RtcDIiKTsKKyAgICBwcmludCAkRlcgIiRDTURcMDAxJFBBRCI7CisgICAgcHJpbnQgJEZXICIkQ01EXDAwMCRQQUQiOworICAgIGNsb3NlKCRGVyk7CisKKyAgICB2ZXJpZnkoIiR0bXBkaXIvZnd0bXAzIiwgJGhhc2gpOworICAgIGNvcHkoIiR0bXBkaXIvZnd0bXAzIiwgJG91dGZpbGUpOworCisgICAgJG91dGZpbGU7Cit9CisKK3N1YiB2cDcwNDkgeworICAgIG15ICRmd2ZpbGUgPSAiZHZiLXVzYi12cDcwNDktMC45NS5mdyI7CisgICAgbXkgJHVybCA9ICJodHRwOi8vYW8yLml0L3NpdGVzL2RlZmF1bHQvZmlsZXMvYmxvZy8yMDEyLzExLzA2L2xpbnV4LXN1cHBvcnQtZGlnaWNvbS1kaWdpdHVuZS1zLXZwNzA0OS11ZHR0NzA0OS8kZndmaWxlIjsKKyAgICBteSAkaGFzaCA9ICI1NjA5ZmQyOTUxNjhhZWE4OGIyNWZmNDNhNmY3OWMzNiI7CisKKyAgICBjaGVja3N0YW5kYXJkKCk7CisKKyAgICB3Z2V0ZmlsZSgkZndmaWxlLCAkdXJsKTsKKyAgICB2ZXJpZnkoJGZ3ZmlsZSwgJGhhc2gpOworCisgICAgJGZ3ZmlsZTsKK30KKworc3ViIGRpYnVzYiB7CisJbXkgJHVybCA9ICJodHRwOi8vd3d3LmxpbnV4dHYub3JnL2Rvd25sb2Fkcy9maXJtd2FyZS9kdmItdXNiLWRpYnVzYi01LjAuMC4xMS5mdyI7CisJbXkgJG91dGZpbGUgPSAiZHZiLWRpYnVzYi01LjAuMC4xMS5mdyI7CisJbXkgJGhhc2ggPSAiZmE0OTAyOTVhNTI3MzYwY2ExNmRjZGYzMjI0Y2EyNDMiOworCisJY2hlY2tzdGFuZGFyZCgpOworCisJd2dldGZpbGUoJG91dGZpbGUsICR1cmwpOworCXZlcmlmeSgkb3V0ZmlsZSwkaGFzaCk7CisKKwkkb3V0ZmlsZTsKK30KKworc3ViIG54dDIwMDIgeworICAgIG15ICRzb3VyY2VmaWxlID0gIlRlY2huaXNhdF9EVkItUENfNF80X0NPTVBBQ1QuemlwIjsKKyAgICBteSAkdXJsID0gImh0dHA6Ly93d3cuYmJ0aS51cy9kb3dubG9hZC93aW5kb3dzLyRzb3VyY2VmaWxlIjsKKyAgICBteSAkaGFzaCA9ICI0NzZiZWZhZThjN2MxYmI5NjQ4OTU0MDYwYjFlZWMxZiI7CisgICAgbXkgJG91dGZpbGUgPSAiZHZiLWZlLW54dDIwMDIuZnciOworICAgIG15ICR0bXBkaXIgPSB0ZW1wZGlyKERJUiA9PiAiL3RtcCIsIENMRUFOVVAgPT4gMSk7CisKKyAgICBjaGVja3N0YW5kYXJkKCk7CisKKyAgICB3Z2V0ZmlsZSgkc291cmNlZmlsZSwgJHVybCk7CisgICAgdW56aXAoJHNvdXJjZWZpbGUsICR0bXBkaXIpOworICAgIHZlcmlmeSgiJHRtcGRpci9Ta3lORVQuc3lzIiwgJGhhc2gpOworICAgIGV4dHJhY3QoIiR0bXBkaXIvU2t5TkVULnN5cyIsIDMzMTYyNCwgNTkwOCwgJG91dGZpbGUpOworCisgICAgJG91dGZpbGU7Cit9CisKK3N1YiBueHQyMDA0IHsKKyAgICBteSAkc291cmNlZmlsZSA9ICJBVmVyVFZIRF9NQ0VfQTE4MF9EcnZfdjEuMi4yLjE2LnppcCI7CisgICAgbXkgJHVybCA9ICJodHRwOi8vd3d3LmF2ZXJtZWRpYS11c2EuY29tL3N1cHBvcnQvRHJpdmVycy8kc291cmNlZmlsZSI7CisgICAgbXkgJGhhc2ggPSAiMTExY2I4ODViMWUwMDkxODgzNDZkNzJhY2ZlZDAyNGMiOworICAgIG15ICRvdXRmaWxlID0gImR2Yi1mZS1ueHQyMDA0LmZ3IjsKKyAgICBteSAkdG1wZGlyID0gdGVtcGRpcihESVIgPT4gIi90bXAiLCBDTEVBTlVQID0+IDEpOworCisgICAgY2hlY2tzdGFuZGFyZCgpOworCisgICAgd2dldGZpbGUoJHNvdXJjZWZpbGUsICR1cmwpOworICAgIHVuemlwKCRzb3VyY2VmaWxlLCAkdG1wZGlyKTsKKyAgICB2ZXJpZnkoIiR0bXBkaXIvM3hIeWJyaWQuc3lzIiwgJGhhc2gpOworICAgIGV4dHJhY3QoIiR0bXBkaXIvM3hIeWJyaWQuc3lzIiwgNDY1MzA0LCA5NTg0LCAkb3V0ZmlsZSk7CisKKyAgICAkb3V0ZmlsZTsKK30KKworc3ViIG9yNTEyMTEgeworICAgIG15ICRmd2ZpbGUgPSAiZHZiLWZlLW9yNTEyMTEuZnciOworICAgIG15ICR1cmwgPSAiaHR0cDovL2xpbnV4dHYub3JnL2Rvd25sb2Fkcy9maXJtd2FyZS8kZndmaWxlIjsKKyAgICBteSAkaGFzaCA9ICJkODMwOTQ5Yzc3MWEyODk1MDViZjllYWZjMjI1ZDQ5MSI7CisKKyAgICBjaGVja3N0YW5kYXJkKCk7CisKKyAgICB3Z2V0ZmlsZSgkZndmaWxlLCAkdXJsKTsKKyAgICB2ZXJpZnkoJGZ3ZmlsZSwgJGhhc2gpOworCisgICAgJGZ3ZmlsZTsKK30KKworc3ViIGN4MjMxeHggeworICAgIG15ICRmd2ZpbGUgPSAidjRsLWN4MjMxeHgtYXZjb3JlLTAxLmZ3IjsKKyAgICBteSAkdXJsID0gImh0dHA6Ly9saW51eHR2Lm9yZy9kb3dubG9hZHMvZmlybXdhcmUvJGZ3ZmlsZSI7CisgICAgbXkgJGhhc2ggPSAiN2QzYmI5NTZkYzlkZjBlYWZkZWQyYjU2YmE1N2NjNDIiOworCisgICAgY2hlY2tzdGFuZGFyZCgpOworCisgICAgd2dldGZpbGUoJGZ3ZmlsZSwgJHVybCk7CisgICAgdmVyaWZ5KCRmd2ZpbGUsICRoYXNoKTsKKworICAgICRmd2ZpbGU7Cit9CisKK3N1YiBjeDE4IHsKKyAgICBteSAkdXJsID0gImh0dHA6Ly9saW51eHR2Lm9yZy9kb3dubG9hZHMvZmlybXdhcmUvIjsKKworICAgIG15ICVmaWxlcyA9ICgKKwkndjRsLWN4MjM0MTgtYXB1LmZ3JyA9PiAnNTg4ZjA4MWI1NjJmNWM2NTNhM2RiMWFkOGY2NTkzOWEnLAorCSd2NGwtY3gyMzQxOC1jcHUuZncnID0+ICdiNmM3ZWQ2NGJjNDRiMWE2ZTA4NDBhZGFlYWMzOWQ3OScsCisJJ3Y0bC1jeDIzNDE4LWRpZy5mdycgPT4gJzk1YmM2ODhkM2U3NTk5ZmQ1ODAwMTYxZTk5NzFjYzU1JywKKyAgICApOworCisgICAgY2hlY2tzdGFuZGFyZCgpOworCisgICAgbXkgJGFsbGZpbGVzOworICAgIGZvcmVhY2ggbXkgJGZ3ZmlsZSAoa2V5cyAlZmlsZXMpIHsKKwl3Z2V0ZmlsZSgkZndmaWxlLCAiJHVybC8kZndmaWxlIik7CisJdmVyaWZ5KCRmd2ZpbGUsICRmaWxlc3skZndmaWxlfSk7CisJJGFsbGZpbGVzIC49ICIgJGZ3ZmlsZSI7CisgICAgfQorCisgICAgJGFsbGZpbGVzID1+IHMvXlxzLy87CisKKyAgICAkYWxsZmlsZXM7Cit9CisKK3N1YiBtcGM3MTggeworICAgIG15ICRhcmNoaXZlID0gJ1l1YW4gTVBDNzE4IFRWIFR1bmVyIENhcmQgMi4xMy4xMC4xMDE2LnppcCc7CisgICAgbXkgJHVybCA9ICJmdHA6Ly9mdHAud29yay5hY2VyLWV1cm8uY29tL2Rlc2t0b3AvYXNwaXJlX2lkZWE1MTAvdmlzdGEvRHJpdmVycy8kYXJjaGl2ZSI7CisgICAgbXkgJGZ3ZmlsZSA9ICJkdmItY3gxOC1tcGM3MTgtbXQzNTIuZnciOworICAgIG15ICR0bXBkaXIgPSB0ZW1wZGlyKERJUiA9PiAiL3RtcCIsIENMRUFOVVAgPT4gMSk7CisKKyAgICBjaGVja3N0YW5kYXJkKCk7CisgICAgd2dldGZpbGUoJGFyY2hpdmUsICR1cmwpOworICAgIHVuemlwKCRhcmNoaXZlLCAkdG1wZGlyKTsKKworICAgIG15ICRzb3VyY2VmaWxlID0gIiR0bXBkaXIvWXVhbiBNUEM3MTggVFYgVHVuZXIgQ2FyZCAyLjEzLjEwLjEwMTYvbXBjNzE4XzMyYml0L3l1YW5yYXAuc3lzIjsKKyAgICBteSAkZm91bmQgPSAwOworCisgICAgb3BlbiBJTiwgJzwnLCAkc291cmNlZmlsZSBvciBkaWUgIkNvdWxkbid0IG9wZW4gJHNvdXJjZWZpbGUgdG8gZXh0cmFjdCAkZndmaWxlIGRhdGFcbiI7CisgICAgYmlubW9kZSBJTjsKKyAgICBvcGVuIE9VVCwgJz4nLCAkZndmaWxlOworICAgIGJpbm1vZGUgT1VUOworICAgIHsKKwkjIEJsb2NrIHNjb3BlIGJlY2F1c2Ugd2UgY2hhbmdlIHRoZSBsaW5lIHRlcm1pbmF0b3IgdmFyaWFibGUgJC8KKwlteSAkcHJldmxlbiA9IDA7CisJbXkgJGN1cnJsZW47CisKKwkjIEJ1cmllZCBpbiB0aGUgZGF0YSBzZWdtZW50IGFyZSAzIHJ1bnMgb2YgYWxtb3N0IGlkZW50aWNhbAorCSMgcmVnaXN0ZXItdmFsdWUgcGFpcnMgdGhhdCBlbmQgaW4gMHg1ZCAweDAxIHdoaWNoIGlzIGEgIlRVTkVSIEdPIgorCSMgY29tbWFuZCBmb3IgdGhlIE1UMzUyLgorCSMgUHVsbCBvdXQgdGhlIG1pZGRsZSBydW4gKGJlY2F1c2UgaXQncyBlYXN5KSBvZiByZWdpc3Rlci12YWx1ZQorCSMgcGFpcnMgdG8gbWFrZSB0aGUgImZpcm13YXJlIiBmaWxlLgorCisJbG9jYWwgJC8gPSAiXHg1ZFx4MDEiOyAjIE1UMzUyICJUVU5FUiBHTyIKKworCXdoaWxlICg8SU4+KSB7CisJICAgICRjdXJybGVuID0gbGVuZ3RoKCRfKTsKKwkgICAgaWYgKCRwcmV2bGVuID09ICRjdXJybGVuICYmICRjdXJybGVuIDw9IDY0KSB7CisJCWNob3A7IGNob3A7ICMgR2V0IHJpZCBvZiAiVFVORVIgR08iCisJCXMvXlwwXDAvLzsgICMgZ2V0IHJpZCBvZiBsZWFkaW5nIDAwIDAwIGlmIGl0J3MgdGhlcmUKKwkJcHJpbnRmIE9VVCAiJF8iOworCQkkZm91bmQgPSAxOworCQlsYXN0OworCSAgICB9CisJICAgICRwcmV2bGVuID0gJGN1cnJsZW47CisJfQorICAgIH0KKyAgICBjbG9zZSBPVVQ7CisgICAgY2xvc2UgSU47CisgICAgaWYgKCEkZm91bmQpIHsKKwl1bmxpbmsgJGZ3ZmlsZTsKKwlkaWUgIkNvdWxkbid0IGZpbmQgdmFsaWQgcmVnaXN0ZXItdmFsdWUgc2VxdWVuY2UgaW4gJHNvdXJjZWZpbGUgZm9yICRmd2ZpbGVcbiI7CisgICAgfQorICAgICRmd2ZpbGU7Cit9CisKK3N1YiBjeDIzODg1IHsKKyAgICBteSAkdXJsID0gImh0dHA6Ly9saW51eHR2Lm9yZy9kb3dubG9hZHMvZmlybXdhcmUvIjsKKworICAgIG15ICVmaWxlcyA9ICgKKwkndjRsLWN4MjM4ODUtYXZjb3JlLTAxLmZ3JyA9PiAnYTlmOGY1ZDkwMWE3ZmI0MmY1NTJlMWVlNjM4NGYzYmInLAorCSd2NGwtY3gyMzg4NS1lbmMuZncnICAgICAgID0+ICdhOWY4ZjVkOTAxYTdmYjQyZjU1MmUxZWU2Mzg0ZjNiYicsCisgICAgKTsKKworICAgIGNoZWNrc3RhbmRhcmQoKTsKKworICAgIG15ICRhbGxmaWxlczsKKyAgICBmb3JlYWNoIG15ICRmd2ZpbGUgKGtleXMgJWZpbGVzKSB7CisJd2dldGZpbGUoJGZ3ZmlsZSwgIiR1cmwvJGZ3ZmlsZSIpOworCXZlcmlmeSgkZndmaWxlLCAkZmlsZXN7JGZ3ZmlsZX0pOworCSRhbGxmaWxlcyAuPSAiICRmd2ZpbGUiOworICAgIH0KKworICAgICRhbGxmaWxlcyA9fiBzL15ccy8vOworCisgICAgJGFsbGZpbGVzOworfQorCitzdWIgcHZydXNiMiB7CisgICAgbXkgJHVybCA9ICJodHRwOi8vbGludXh0di5vcmcvZG93bmxvYWRzL2Zpcm13YXJlLyI7CisKKyAgICBteSAlZmlsZXMgPSAoCisJJ3Y0bC1jeDI1ODQwLmZ3JyAgICAgICAgICAgPT4gJ2RhZGI3OWU5OTA0ZmM4YWY5NmU4MTExZDljYjU5MzIwJywKKyAgICApOworCisgICAgY2hlY2tzdGFuZGFyZCgpOworCisgICAgbXkgJGFsbGZpbGVzOworICAgIGZvcmVhY2ggbXkgJGZ3ZmlsZSAoa2V5cyAlZmlsZXMpIHsKKwl3Z2V0ZmlsZSgkZndmaWxlLCAiJHVybC8kZndmaWxlIik7CisJdmVyaWZ5KCRmd2ZpbGUsICRmaWxlc3skZndmaWxlfSk7CisJJGFsbGZpbGVzIC49ICIgJGZ3ZmlsZSI7CisgICAgfQorCisgICAgJGFsbGZpbGVzID1+IHMvXlxzLy87CisKKyAgICAkYWxsZmlsZXM7Cit9CisKK3N1YiBvcjUxMTMyX3FhbSB7CisgICAgbXkgJGZ3ZmlsZSA9ICJkdmItZmUtb3I1MTEzMi1xYW0uZnciOworICAgIG15ICR1cmwgPSAiaHR0cDovL2xpbnV4dHYub3JnL2Rvd25sb2Fkcy9maXJtd2FyZS8kZndmaWxlIjsKKyAgICBteSAkaGFzaCA9ICI3NzAyZTg5Mzg2MTJkZTQ2Y2NhZGZlOWI0MTNjYjNiNSI7CisKKyAgICBjaGVja3N0YW5kYXJkKCk7CisKKyAgICB3Z2V0ZmlsZSgkZndmaWxlLCAkdXJsKTsKKyAgICB2ZXJpZnkoJGZ3ZmlsZSwgJGhhc2gpOworCisgICAgJGZ3ZmlsZTsKK30KKworc3ViIG9yNTExMzJfdnNiIHsKKyAgICBteSAkZndmaWxlID0gImR2Yi1mZS1vcjUxMTMyLXZzYi5mdyI7CisgICAgbXkgJHVybCA9ICJodHRwOi8vbGludXh0di5vcmcvZG93bmxvYWRzL2Zpcm13YXJlLyRmd2ZpbGUiOworICAgIG15ICRoYXNoID0gImMxNjIwOGUwMmYzNmZjNDM5YTU1N2FkNGM2MTMzNjRhIjsKKworICAgIGNoZWNrc3RhbmRhcmQoKTsKKworICAgIHdnZXRmaWxlKCRmd2ZpbGUsICR1cmwpOworICAgIHZlcmlmeSgkZndmaWxlLCAkaGFzaCk7CisKKyAgICAkZndmaWxlOworfQorCitzdWIgYmx1ZWJpcmQgeworCW15ICR1cmwgPSAiaHR0cDovL3d3dy5saW51eHR2Lm9yZy9kb3dubG9hZC9kdmIvZmlybXdhcmUvZHZiLXVzYi1ibHVlYmlyZC0wMS5mdyI7CisJbXkgJG91dGZpbGUgPSAiZHZiLXVzYi1ibHVlYmlyZC0wMS5mdyI7CisJbXkgJGhhc2ggPSAiNjU4Mzk3Y2I5ZWJhOTEwMWFmOTAzMTMwMjY3MWY0OWQiOworCisJY2hlY2tzdGFuZGFyZCgpOworCisJd2dldGZpbGUoJG91dGZpbGUsICR1cmwpOworCXZlcmlmeSgkb3V0ZmlsZSwkaGFzaCk7CisKKwkkb3V0ZmlsZTsKK30KKworc3ViIGFmOTAxNSB7CisJbXkgJHNvdXJjZWZpbGUgPSAiZG93bmxvYWQuYXNoeD9maWxlPTU3IjsKKwlteSAkdXJsID0gImh0dHA6Ly93d3cuaXRlLmNvbS50dy9FTi9TZXJ2aWNlcy8kc291cmNlZmlsZSI7CisJbXkgJGhhc2ggPSAiZTNmMDg5MzUxNTgwMzhkMzg1YWQzODI0NDJmNGJiMmQiOworCW15ICRvdXRmaWxlID0gImR2Yi11c2ItYWY5MDE1LmZ3IjsKKwlteSAkdG1wZGlyID0gdGVtcGRpcihESVIgPT4gIi90bXAiLCBDTEVBTlVQID0+IDEpOworCW15ICRmd29mZnNldCA9IDB4MjU2OTA7CisJbXkgJGZ3bGVuZ3RoID0gMTg3MjU7CisJbXkgKCRjaHVua2xlbmd0aCwgJGJ1ZiwgJHJjb3VudCk7CisKKwljaGVja3N0YW5kYXJkKCk7CisKKwl3Z2V0ZmlsZSgkc291cmNlZmlsZSwgJHVybCk7CisJdW56aXAoJHNvdXJjZWZpbGUsICR0bXBkaXIpOworCXZlcmlmeSgiJHRtcGRpci9Ecml2ZXIvRmlsZXMvQUYxNUJEQS5zeXMiLCAkaGFzaCk7CisKKwlvcGVuIElORklMRSwgJzwnLCAiJHRtcGRpci9Ecml2ZXIvRmlsZXMvQUYxNUJEQS5zeXMiOworCW9wZW4gT1VURklMRSwgJz4nLCAkb3V0ZmlsZTsKKworCXN5c3NlZWsoSU5GSUxFLCAkZndvZmZzZXQsIFNFRUtfU0VUKTsKKwl3aGlsZSgkZndsZW5ndGggPiAwKSB7CisJCSRjaHVua2xlbmd0aCA9IDU1OworCQkkY2h1bmtsZW5ndGggPSAkZndsZW5ndGggaWYgKCRjaHVua2xlbmd0aCA+ICRmd2xlbmd0aCk7CisJCSRyY291bnQgPSBzeXNyZWFkKElORklMRSwgJGJ1ZiwgJGNodW5rbGVuZ3RoKTsKKwkJZGllICJSYW4gb3V0IG9mIGRhdGFcbiIgaWYgKCRyY291bnQgIT0gJGNodW5rbGVuZ3RoKTsKKwkJc3lzd3JpdGUoT1VURklMRSwgJGJ1Zik7CisJCXN5c3JlYWQoSU5GSUxFLCAkYnVmLCA4KTsKKwkJJGZ3bGVuZ3RoIC09ICRyY291bnQgKyA4OworCX0KKworCWNsb3NlIE9VVEZJTEU7CisJY2xvc2UgSU5GSUxFOworfQorCitzdWIgbmdlbmUgeworICAgIG15ICR1cmwgPSAiaHR0cDovL3d3dy5kaWdpdGFsZGV2aWNlcy5kZS9kb3dubG9hZC8iOworICAgIG15ICRmaWxlMSA9ICJuZ2VuZV8xNS5mdyI7CisgICAgbXkgJGhhc2gxID0gImQ3OThkNWE3NTcxMjExNzRmMGRiYzVmMjgzM2MwYzg1IjsKKyAgICBteSAkZmlsZTIgPSAibmdlbmVfMTcuZnciOworICAgIG15ICRoYXNoMiA9ICIyNmI2ODcxMzZlMTI3YjhhYzI0YjgxZTBlZWFmYzIwYiI7CisgICAgbXkgJHVybDIgPSAiaHR0cDovL2w0bS1kYXRlbi5kZS9kb3dubG9hZHMvZmlybXdhcmUvZHZiLXMyL2xpbnV4L2FsbC8iOworICAgIG15ICRmaWxlMyA9ICJuZ2VuZV8xOC5mdyI7CisgICAgbXkgJGhhc2gzID0gImViY2UzZWE3NjlhNTNlM2UwYjAxOTdjM2IzZjEyN2UzIjsKKworICAgIGNoZWNrc3RhbmRhcmQoKTsKKworICAgIHdnZXRmaWxlKCRmaWxlMSwgJHVybCAuICRmaWxlMSk7CisgICAgdmVyaWZ5KCRmaWxlMSwgJGhhc2gxKTsKKworICAgIHdnZXRmaWxlKCRmaWxlMiwgJHVybCAuICRmaWxlMik7CisgICAgdmVyaWZ5KCRmaWxlMiwgJGhhc2gyKTsKKworICAgIHdnZXRmaWxlKCRmaWxlMywgJHVybDIgLiAkZmlsZTMpOworICAgIHZlcmlmeSgkZmlsZTMsICRoYXNoMyk7CisKKyAgICAiJGZpbGUxLCAkZmlsZTIsICRmaWxlMyI7Cit9CisKK3N1YiBhejYwMjd7CisgICAgbXkgJGZpcm13YXJlID0gImR2Yi11c2ItYXo2MDI3LTAzLmZ3IjsKKyAgICBteSAkdXJsID0gImh0dHA6Ly9saW51eC50ZXJyYXRlYy5kZS9maWxlcy9URVJSQVRFQ19TNy8kZmlybXdhcmUiOworCisgICAgd2dldGZpbGUoJGZpcm13YXJlLCAkdXJsKTsKKworICAgICRmaXJtd2FyZTsKK30KKworc3ViIGxtZTI1MTBfbGcgeworICAgIG15ICRzb3VyY2VmaWxlID0gIkxNRUJEQV9EVkJTLnN5cyI7CisgICAgbXkgJGhhc2ggPSAiZmM2MDE3YWQwMWU3OTg5MGE5N2VjNTNiZWExNTdlZDIiOworICAgIG15ICRvdXRmaWxlID0gImR2Yi11c2ItbG1lMjUxMC1sZy5mdyI7CisgICAgbXkgJGhhc2hvID0gImNhYTA2NWQ1ZmRiZDJjMDlhZDU3YjM5OWJiZjU1Y2FkIjsKKworICAgIGNoZWNrc3RhbmRhcmQoKTsKKworICAgIHZlcmlmeSgkc291cmNlZmlsZSwgJGhhc2gpOworICAgIGV4dHJhY3QoJHNvdXJjZWZpbGUsIDQxNjgsIDM4NDEsICRvdXRmaWxlKTsKKyAgICB2ZXJpZnkoJG91dGZpbGUsICRoYXNobyk7CisgICAgJG91dGZpbGU7Cit9CisKK3N1YiBsbWUyNTEwY19zNzM5NSB7CisgICAgbXkgJHNvdXJjZWZpbGUgPSAiVVMyQTBELnN5cyI7CisgICAgbXkgJGhhc2ggPSAiYjAxNTVhODA4M2ZiODIyYTNiZDQ3YmMzNjBlNzQ2MDEiOworICAgIG15ICRvdXRmaWxlID0gImR2Yi11c2ItbG1lMjUxMGMtczczOTUuZnciOworICAgIG15ICRoYXNobyA9ICIzYTNjZjFhZWViZDE3YjZkZGMwNGNlYmUxMzFlOTRjZiI7CisKKyAgICBjaGVja3N0YW5kYXJkKCk7CisKKyAgICB2ZXJpZnkoJHNvdXJjZWZpbGUsICRoYXNoKTsKKyAgICBleHRyYWN0KCRzb3VyY2VmaWxlLCAzNzI0OCwgMzcyMCwgJG91dGZpbGUpOworICAgIHZlcmlmeSgkb3V0ZmlsZSwgJGhhc2hvKTsKKyAgICAkb3V0ZmlsZTsKK30KKworc3ViIGxtZTI1MTBjX3M3Mzk1X29sZCB7CisgICAgbXkgJHNvdXJjZWZpbGUgPSAiTE1FQkRBX0RWQlM3Mzk1Qy5zeXMiOworICAgIG15ICRoYXNoID0gIjc1NzJhZTBlYjljZGY5MWJhYWJkN2MwYmE5ZTA5YjMxIjsKKyAgICBteSAkb3V0ZmlsZSA9ICJkdmItdXNiLWxtZTI1MTBjLXM3Mzk1LmZ3IjsKKyAgICBteSAkaGFzaG8gPSAiOTA0MzBjNWI0MzVlYjVjNmY4OGZkNDRhOWQ5NTA2NzQiOworCisgICAgY2hlY2tzdGFuZGFyZCgpOworCisgICAgdmVyaWZ5KCRzb3VyY2VmaWxlLCAkaGFzaCk7CisgICAgZXh0cmFjdCgkc291cmNlZmlsZSwgNDIwOCwgMzg4MSwgJG91dGZpbGUpOworICAgIHZlcmlmeSgkb3V0ZmlsZSwgJGhhc2hvKTsKKyAgICAkb3V0ZmlsZTsKK30KKworc3ViIGRyeGsgeworICAgIG15ICR1cmwgPSAiaHR0cDovL2w0bS1kYXRlbi5kZS9maWxlcy8iOworICAgIG15ICR6aXBmaWxlID0gIkREVHVuZXIuemlwIjsKKyAgICBteSAkaGFzaCA9ICJmNWEzN2I5YTIwYTM1MzQ5OTc5OTdjMGIxMzgyYTNlNSI7CisgICAgbXkgJHRtcGRpciA9IHRlbXBkaXIoRElSID0+ICIvdG1wIiwgQ0xFQU5VUCA9PiAxKTsKKyAgICBteSAkZHJ2ZmlsZSA9ICJERFR1bmVyLnN5cyI7CisgICAgbXkgJGZ3ZmlsZSA9ICJkcnhrX2EzLm1jIjsKKworICAgIGNoZWNrc3RhbmRhcmQoKTsKKworICAgIHdnZXRmaWxlKCR6aXBmaWxlLCAkdXJsIC4gJHppcGZpbGUpOworICAgIHZlcmlmeSgkemlwZmlsZSwgJGhhc2gpOworICAgIHVuemlwKCR6aXBmaWxlLCAkdG1wZGlyKTsKKyAgICBleHRyYWN0KCIkdG1wZGlyLyRkcnZmaWxlIiwgMHgxNGRkOCwgMTU2MzQsICIkZndmaWxlIik7CisKKyAgICAiJGZ3ZmlsZSIKK30KKworc3ViIGRyeGtfaGF1cHBhdWdlX2h2cjkzMGMgeworICAgIG15ICR1cmwgPSAiaHR0cDovL3d3dy53aW50dmNkLmNvLnVrL2RyaXZlcnMvIjsKKyAgICBteSAkemlwZmlsZSA9ICJIVlItOXgwXzVfMTBfMzI1XzI4MTUzX1NJR05FRC56aXAiOworICAgIG15ICRoYXNoID0gIjgzYWI4MmU3ZTk0ODBlYzhiZjFhZTAxNTVjYTYzYzg4IjsKKyAgICBteSAkdG1wZGlyID0gdGVtcGRpcihESVIgPT4gIi90bXAiLCBDTEVBTlVQID0+IDEpOworICAgIG15ICRkcnZmaWxlID0gIkhWUi05MDAvZW1PRU0uc3lzIjsKKyAgICBteSAkZndmaWxlID0gImR2Yi11c2ItaGF1cHBhdWdlLWh2cjkzMGMtZHJ4ay5mdyI7CisKKyAgICBjaGVja3N0YW5kYXJkKCk7CisKKyAgICB3Z2V0ZmlsZSgkemlwZmlsZSwgJHVybCAuICR6aXBmaWxlKTsKKyAgICB2ZXJpZnkoJHppcGZpbGUsICRoYXNoKTsKKyAgICB1bnppcCgkemlwZmlsZSwgJHRtcGRpcik7CisgICAgZXh0cmFjdCgiJHRtcGRpci8kZHJ2ZmlsZSIsIDB4MTE3YjAsIDQyNjkyLCAiJGZ3ZmlsZSIpOworCisgICAgIiRmd2ZpbGUiCit9CisKK3N1YiBkcnhrX3RlcnJhdGVjX2g1IHsKKyAgICBteSAkdXJsID0gImh0dHA6Ly93d3cubGludXh0di5vcmcvZG93bmxvYWRzL2Zpcm13YXJlLyI7CisgICAgbXkgJGhhc2ggPSAiMTkwMDBkYWRhOGUyNzQxMTYyY2NjNTBjYzkxZmE3ZjEiOworICAgIG15ICRmd2ZpbGUgPSAiZHZiLXVzYi10ZXJyYXRlYy1oNS1kcnhrLmZ3IjsKKworICAgIGNoZWNrc3RhbmRhcmQoKTsKKworICAgIHdnZXRmaWxlKCRmd2ZpbGUsICR1cmwgLiAkZndmaWxlKTsKKyAgICB2ZXJpZnkoJGZ3ZmlsZSwgJGhhc2gpOworCisgICAgIiRmd2ZpbGUiCit9CisKK3N1YiBkcnhrX3RlcnJhdGVjX2h0Y19zdGljayB7CisgICAgbXkgJHVybCA9ICJodHRwOi8vZnRwLnRlcnJhdGVjLmRlL1JlY2VpdmVyL0NpbmVyZ3lfSFRDX1N0aWNrL1VwZGF0ZXMvSGlzdG9yeS8iOworICAgIG15ICR6aXBmaWxlID0gIkNpbmVyZ3lfSFRDX1N0aWNrX0Rydl81LjA5LjEyMDIuMDBfWFBfVmlzdGFfNy5leGUiOworICAgIG15ICRoYXNoID0gIjY3MjJhMjQ0MmEwNTQyM2I3ODE3MjFmYmMwNjllZDVlIjsKKyAgICBteSAkdG1wZGlyID0gdGVtcGRpcihESVIgPT4gIi90bXAiLCBDTEVBTlVQID0+IDApOworICAgIG15ICRkcnZmaWxlID0gIkNpbmVyZ3kgSFRDIFN0aWNrL0JEQSBEcml2ZXIgNS4wOS4xMjAyLjAwL1dpbmRvd3MgMzIgQml0L2VtT0VNLnN5cyI7CisgICAgbXkgJGZ3ZmlsZSA9ICJkdmItdXNiLXRlcnJhdGVjLWh0Yy1zdGljay1kcnhrLmZ3IjsKKworICAgIGNoZWNrc3RhbmRhcmQoKTsKKworICAgIHdnZXRmaWxlKCR6aXBmaWxlLCAkdXJsIC4gJHppcGZpbGUpOworICAgIHZlcmlmeSgkemlwZmlsZSwgJGhhc2gpOworICAgIHVuemlwKCR6aXBmaWxlLCAkdG1wZGlyKTsKKyAgICBleHRyYWN0KCIkdG1wZGlyLyRkcnZmaWxlIiwgMHg0ZTVjMCwgNDI2OTIsICIkZndmaWxlIik7CisKKyAgICAiJGZ3ZmlsZSIKK30KKworc3ViIGl0OTEzNSB7CisJbXkgJHVybCA9ICJodHRwOi8vd3d3Lml0ZS5jb20udHcvdXBsb2Fkcy9maXJtd2FyZS92My4yNS4wLjAvIjsKKwlteSAkZmlsZTEgPSAiZHZiLXVzYi1pdDkxMzUtMDEuemlwIjsKKwlteSAkZndmaWxlMSA9ICJkdmItdXNiLWl0OTEzNS0wMS5mdyI7CisJbXkgJGhhc2gxID0gIjAyZmNmMTExNzRlZGE4NDc0NWRhZTdlNjFjNWZmOWJhIjsKKwlteSAkZmlsZTIgPSAiZHZiLXVzYi1pdDkxMzUtMDIuemlwIjsKKwlteSAkZndmaWxlMiA9ICJkdmItdXNiLWl0OTEzNS0wMi5mdyI7CisJbXkgJGhhc2gyID0gImQ1ZTE0MzdkYzI0MzU4NTc4ZTA3OTk5NDc1ZDRjYWM5IjsKKworCWNoZWNrc3RhbmRhcmQoKTsKKworCXdnZXRmaWxlKCRmaWxlMSwgJHVybCAuICRmaWxlMSk7CisJdW56aXAoJGZpbGUxLCAiIik7CisJdmVyaWZ5KCIkZndmaWxlMSIsICRoYXNoMSk7CisKKwl3Z2V0ZmlsZSgkZmlsZTIsICR1cmwgLiAkZmlsZTIpOworCXVuemlwKCRmaWxlMiwgIiIpOworCXZlcmlmeSgiJGZ3ZmlsZTIiLCAkaGFzaDIpOworCisJIiRmaWxlMSAkZmlsZTIiCit9CisKK3N1YiB0ZGExMDA3MSB7CisgICAgbXkgJHNvdXJjZWZpbGUgPSAiUENUVl80NjBlX3JlZmVyZW5jZS56aXAiOworICAgIG15ICR1cmwgPSAiZnRwOi8vZnRwLnBjdHZzeXN0ZW1zLmNvbS9UVi9kcml2ZXIvUENUViUyMDcwZSUyMDgwZSUyMDEwMGUlMjAzMjBlJTIwMzMwZSUyMDgwMGUvIjsKKyAgICBteSAkaGFzaCA9ICI0NDAzZGU5MDNiZjI1OTM0NjRjOGQ3NGJiYzIwMGE1NyI7CisgICAgbXkgJGZ3ZmlsZSA9ICJkdmItZmUtdGRhMTAwNzEuZnciOworICAgIG15ICR0bXBkaXIgPSB0ZW1wZGlyKERJUiA9PiAiL3RtcCIsIENMRUFOVVAgPT4gMSk7CisKKyAgICBjaGVja3N0YW5kYXJkKCk7CisKKyAgICB3Z2V0ZmlsZSgkc291cmNlZmlsZSwgJHVybCAuICRzb3VyY2VmaWxlKTsKKyAgICB2ZXJpZnkoJHNvdXJjZWZpbGUsICRoYXNoKTsKKyAgICB1bnppcCgkc291cmNlZmlsZSwgJHRtcGRpcik7CisgICAgZXh0cmFjdCgiJHRtcGRpci9QQ1RWXCA3MGVcIDgwZVwgMTAwZVwgMzIwZVwgMzMwZVwgODAwZS8zMlwgYml0L2VtT0VNLnN5cyIsIDB4NjdkMzgsIDQwNTA0LCAkZndmaWxlKTsKKworICAgICIkZndmaWxlIjsKK30KKworc3ViIGRyeGtfcGN0diB7CisgICAgbXkgJHNvdXJjZWZpbGUgPSAiUENUVl80NjBlX3JlZmVyZW5jZS56aXAiOworICAgIG15ICR1cmwgPSAiZnRwOi8vZnRwLnBjdHZzeXN0ZW1zLmNvbS9UVi9kcml2ZXIvUENUViUyMDcwZSUyMDgwZSUyMDEwMGUlMjAzMjBlJTIwMzMwZSUyMDgwMGUvIjsKKyAgICBteSAkaGFzaCA9ICI0NDAzZGU5MDNiZjI1OTM0NjRjOGQ3NGJiYzIwMGE1NyI7CisgICAgbXkgJGZ3ZmlsZSA9ICJkdmItZGVtb2QtZHJ4ay1wY3R2LmZ3IjsKKyAgICBteSAkdG1wZGlyID0gdGVtcGRpcihESVIgPT4gIi90bXAiLCBDTEVBTlVQID0+IDEpOworCisgICAgY2hlY2tzdGFuZGFyZCgpOworCisgICAgd2dldGZpbGUoJHNvdXJjZWZpbGUsICR1cmwgLiAkc291cmNlZmlsZSk7CisgICAgdmVyaWZ5KCRzb3VyY2VmaWxlLCAkaGFzaCk7CisgICAgdW56aXAoJHNvdXJjZWZpbGUsICR0bXBkaXIpOworICAgIGV4dHJhY3QoIiR0bXBkaXIvUENUVlwgNzBlXCA4MGVcIDEwMGVcIDMyMGVcIDMzMGVcIDgwMGUvMzJcIGJpdC9lbU9FTS5zeXMiLCAweDcyYjgwLCA0MjY5MiwgJGZ3ZmlsZSk7CisKKyAgICAiJGZ3ZmlsZSI7Cit9CisKK3N1YiBzbXMxeHh4X2hjdyB7CisgICAgbXkgJHVybCA9ICJodHRwOi8vc3RldmVudG90aC5uZXQvbGludXgvc21zMXh4eC8iOworICAgIG15ICVmaWxlcyA9ICgKKwknc21zMXh4eC1oY3ctNTV4eHgtZHZidC0wMS5mdycgID0+ICJhZmI2ZjlmYjlhNzFkNjQzOTJlODU2NGVmOTU3N2U1YSIsCisJJ3NtczF4eHgtaGN3LTU1eHh4LWR2YnQtMDIuZncnICA9PiAiYjQ0ODA3MDk4YmEyNmU1MmNiZWRlYWRjMDUyYmE1OGYiLAorCSdzbXMxeHh4LWhjdy01NXh4eC1pc2RidC0wMi5mdycgPT4gImRhZTkzNGVlZWE4NTIyNWFjYmQ2M2NlNmNmZTFjOWU0IiwKKyAgICApOworCisgICAgY2hlY2tzdGFuZGFyZCgpOworCisgICAgbXkgJGFsbGZpbGVzOworICAgIGZvcmVhY2ggbXkgJGZ3ZmlsZSAoa2V5cyAlZmlsZXMpIHsKKwl3Z2V0ZmlsZSgkZndmaWxlLCAiJHVybC8kZndmaWxlIik7CisJdmVyaWZ5KCRmd2ZpbGUsICRmaWxlc3skZndmaWxlfSk7CisJJGFsbGZpbGVzIC49ICIgJGZ3ZmlsZSI7CisgICAgfQorCisgICAgJGFsbGZpbGVzID1+IHMvXlxzLy87CisKKyAgICAkYWxsZmlsZXM7Cit9CisKK3N1YiBzaTIxNjUgeworICAgIG15ICRzb3VyY2VmaWxlID0gIm1vZGVsXzExMXh4eF8xMjJ4eHhfZHJpdmVyXzZfMF8xMTlfMzExOTFfV0hRTC56aXAiOworICAgIG15ICR1cmwgPSAiaHR0cDovL3d3dy5oYXVwcGF1Z2UuZGUvZmlsZXMvZHJpdmVycy8iOworICAgIG15ICRoYXNoID0gIjc2NjMzZTdjNzZiMGVkZWU0N2MzYmExOGRlZDk5MzM2IjsKKyAgICBteSAkZndmaWxlID0gImR2Yi1kZW1vZC1zaTIxNjUuZnciOworICAgIG15ICR0bXBkaXIgPSB0ZW1wZGlyKERJUiA9PiAiL3RtcCIsIENMRUFOVVAgPT4gMSk7CisKKyAgICBjaGVja3N0YW5kYXJkKCk7CisKKyAgICB3Z2V0ZmlsZSgkc291cmNlZmlsZSwgJHVybCAuICRzb3VyY2VmaWxlKTsKKyAgICB2ZXJpZnkoJHNvdXJjZWZpbGUsICRoYXNoKTsKKyAgICB1bnppcCgkc291cmNlZmlsZSwgJHRtcGRpcik7CisgICAgZXh0cmFjdCgiJHRtcGRpci9Ecml2ZXIxMC9IY3cxMGJkYS5zeXMiLCAweDgwNzg4LCAweDgxRTA4LTB4ODA3ODgsICIkdG1wZGlyL2Z3MSIpOworCisgICAgZGVsemVybygiJHRtcGRpci9mdzEiLCIkdG1wZGlyL2Z3MS0xIik7CisgICAgI3ZlcmlmeSgiJHRtcGRpci9mdzEiLCI1ZTA5MDk4NThmZGYwYjViMDlhZDQ4YjlmZTYyMmU3MCIpOworCisgICAgbXkgJENSQz0iXHgwQVx4Q0MiOworICAgIG15ICRCTE9DS1NfTUFJTj0iXHgyNyI7CisgICAgb3BlbiBGVywiPiRmd2ZpbGUiOworICAgIHByaW50IEZXICJceDAxXHgwMCI7ICMganVzdCBhIHZlcnNpb24gaWQgZm9yIHRoZSBkcml2ZXIgaXRzZWxmCisgICAgcHJpbnQgRlcgIlx4OUEiOyAjIGZ3IHZlcnNpb24KKyAgICBwcmludCBGVyAiXHgwMCI7ICMgcGFkZGluZworICAgIHByaW50IEZXICIkQkxPQ0tTX01BSU4iOyAjIG51bWJlciBvZiBibG9ja3Mgb2YgbWFpbiBwYXJ0CisgICAgcHJpbnQgRlcgIlx4MDAiOyAjIHBhZGRpbmcKKyAgICBwcmludCBGVyAiJENSQyI7ICMgMTZiaXQgY3JjIHZhbHVlIG9mIG1haW4gcGFydAorICAgIGFwcGVuZGZpbGUoRlcsIiR0bXBkaXIvZncxIik7CisKKyAgICAiJGZ3ZmlsZSI7Cit9CisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFV0aWxpdGllcworCitzdWIgY2hlY2tzdGFuZGFyZCB7CisgICAgaWYgKHN5c3RlbSgid2hpY2ggdW56aXAgPiAvZGV2L251bGwgMj4mMSIpKSB7CisJZGllICJUaGlzIGZpcm13YXJlIHJlcXVpcmVzIHRoZSB1bnppcCBjb21tYW5kIC0gc2VlIGZ0cDovL2Z0cC5pbmZvLXppcC5vcmcvcHViL2luZm96aXAvVW5aaXAuaHRtbFxuIjsKKyAgICB9CisgICAgaWYgKHN5c3RlbSgid2hpY2ggbWQ1c3VtID4gL2Rldi9udWxsIDI+JjEiKSkgeworCWRpZSAiVGhpcyBmaXJtd2FyZSByZXF1aXJlcyB0aGUgbWQ1c3VtIGNvbW1hbmQgLSBzZWUgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2NvcmV1dGlscy9cbiI7CisgICAgfQorICAgIGlmIChzeXN0ZW0oIndoaWNoIHdnZXQgPiAvZGV2L251bGwgMj4mMSIpKSB7CisJZGllICJUaGlzIGZpcm13YXJlIHJlcXVpcmVzIHRoZSB3Z2V0IGNvbW1hbmQgLSBzZWUgaHR0cDovL3dnZXQuc3Vuc2l0ZS5kay9cbiI7CisgICAgfQorfQorCitzdWIgY2hlY2t1bnNoaWVsZCB7CisgICAgaWYgKHN5c3RlbSgid2hpY2ggdW5zaGllbGQgPiAvZGV2L251bGwgMj4mMSIpKSB7CisJZGllICJUaGlzIGZpcm13YXJlIHJlcXVpcmVzIHRoZSB1bnNoaWVsZCBjb21tYW5kIC0gc2VlIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvc3luY2UvXG4iOworICAgIH0KK30KKworc3ViIHdnZXRmaWxlIHsKKyAgICBteSAoJHNvdXJjZWZpbGUsICR1cmwpID0gQF87CisKKyAgICBpZiAoISAtZiAkc291cmNlZmlsZSkgeworCXN5c3RlbSgid2dldCAtTyBcIiRzb3VyY2VmaWxlXCIgXCIkdXJsXCIiKSBhbmQgZGllICJ3Z2V0IGZhaWxlZCAtIHVuYWJsZSB0byBkb3dubG9hZCBmaXJtd2FyZSI7CisgICAgfQorfQorCitzdWIgdW56aXAgeworICAgIG15ICgkc291cmNlZmlsZSwgJHRvZGlyKSA9IEBfOworCisgICAgJHN0YXR1cyA9IHN5c3RlbSgidW56aXAgLXEgLW8gLWQgXCIkdG9kaXJcIiBcIiRzb3VyY2VmaWxlXCIgMj4vZGV2L251bGwiICk7CisgICAgaWYgKCgoJHN0YXR1cyA+PiA4KSA+IDIpIHx8ICgoJHN0YXR1cyAmIDB4ZmYpICE9IDApKSB7CisJZGllICgidW56aXAgZmFpbGVkIC0gdW5hYmxlIHRvIGV4dHJhY3QgZmlybXdhcmUiKTsKKyAgICB9Cit9CisKK3N1YiB1bnNoaWVsZCB7CisgICAgbXkgKCRzb3VyY2VmaWxlLCAkdG9kaXIpID0gQF87CisKKyAgICBzeXN0ZW0oInVuc2hpZWxkIHggLWQgXCIkdG9kaXJcIiBcIiRzb3VyY2VmaWxlXCIgPiAvZGV2L251bGwiICkgYW5kIGRpZSAoInVuc2hpZWxkIGZhaWxlZCAtIHVuYWJsZSB0byBleHRyYWN0IGZpcm13YXJlIik7Cit9CisKK3N1YiB2ZXJpZnkgeworICAgIG15ICgkZmlsZW5hbWUsICRoYXNoKSA9IEBfOworICAgIG15ICgkdGVzdGhhc2gpOworCisgICAgb3BlbihDTUQsICJtZDVzdW0gXCIkZmlsZW5hbWVcInwiKTsKKyAgICAkdGVzdGhhc2ggPSA8Q01EPjsKKyAgICAkdGVzdGhhc2ggPX4gLyhbYS16QS1aMC05XSopLzsKKyAgICAkdGVzdGhhc2ggPSAkMTsKKyAgICBjbG9zZSBDTUQ7CisgICAgZGllICJIYXNoIG9mIGV4dHJhY3RlZCBmaWxlIGRvZXMgbm90IG1hdGNoIVxuIiBpZiAoJHRlc3RoYXNoIG5lICRoYXNoKTsKK30KKworc3ViIGNvcHkgeworICAgIG15ICgkZnJvbSwgJHRvKSA9IEBfOworCisgICAgc3lzdGVtKCJjcCAtZiBcIiRmcm9tXCIgXCIkdG9cIiIpIGFuZCBkaWUgKCJjcCBmYWlsZWQiKTsKK30KKworc3ViIGV4dHJhY3QgeworICAgIG15ICgkaW5maWxlLCAkb2Zmc2V0LCAkbGVuZ3RoLCAkb3V0ZmlsZSkgPSBAXzsKKyAgICBteSAoJGNodW5rbGVuZ3RoLCAkYnVmLCAkcmNvdW50KTsKKworICAgIG9wZW4gSU5GSUxFLCAiPCRpbmZpbGUiOworICAgIG9wZW4gT1VURklMRSwgIj4kb3V0ZmlsZSI7CisgICAgc3lzc2VlayhJTkZJTEUsICRvZmZzZXQsIFNFRUtfU0VUKTsKKyAgICB3aGlsZSgkbGVuZ3RoID4gMCkgeworCSMgQ2FsYyBjaHVuayBzaXplCisJJGNodW5rbGVuZ3RoID0gMjA0ODsKKwkkY2h1bmtsZW5ndGggPSAkbGVuZ3RoIGlmICgkY2h1bmtsZW5ndGggPiAkbGVuZ3RoKTsKKworCSRyY291bnQgPSBzeXNyZWFkKElORklMRSwgJGJ1ZiwgJGNodW5rbGVuZ3RoKTsKKwlkaWUgIlJhbiBvdXQgb2YgZGF0YVxuIiBpZiAoJHJjb3VudCAhPSAkY2h1bmtsZW5ndGgpOworCXN5c3dyaXRlKE9VVEZJTEUsICRidWYpOworCSRsZW5ndGggLT0gJHJjb3VudDsKKyAgICB9CisgICAgY2xvc2UgSU5GSUxFOworICAgIGNsb3NlIE9VVEZJTEU7Cit9CisKK3N1YiBhcHBlbmRmaWxlIHsKKyAgICBteSAoJEZILCAkaW5maWxlKSA9IEBfOworICAgIG15ICgkYnVmKTsKKworICAgIG9wZW4gSU5GSUxFLCAiPCRpbmZpbGUiOworICAgIHdoaWxlKDEpIHsKKwkkcmNvdW50ID0gc3lzcmVhZChJTkZJTEUsICRidWYsIDIwNDgpOworCWxhc3QgaWYgKCRyY291bnQgPT0gMCk7CisJcHJpbnQgJEZIICRidWY7CisgICAgfQorICAgIGNsb3NlKElORklMRSk7Cit9CisKK3N1YiBkZWx6ZXJveworCW15ICgkaW5maWxlLCRvdXRmaWxlKSA9QF87CisKKwlvcGVuIElORklMRSwiPCRpbmZpbGUiOworCW9wZW4gT1VURklMRSwiPiRvdXRmaWxlIjsKKwl3aGlsZSAoMSl7CisJCSRyY291bnQ9c3lzcmVhZChJTkZJTEUsJGJ1ZiwyMik7CisJCSRsZW49b3JkKHN1YnN0cigkYnVmLDAsMSkpOworCQlwcmludCBPVVRGSUxFIHN1YnN0cigkYnVmLDAsMSk7CisJCXByaW50IE9VVEZJTEUgc3Vic3RyKCRidWYsMiwkbGVuKzMpOworCWxhc3QgaWYgKCRyY291bnQ8MSk7CisJcHJpbnRmIE9VVEZJTEUgIiVjIiwwOworI3ByaW50ICRsZW4uIiAiLmxlbmd0aCgkYnVmKS4iXG4iOworCisJfQorCWNsb3NlKElORklMRSk7CisJY2xvc2UoT1VURklMRSk7Cit9CisKK3N1YiBzeW50YXgoKSB7CisgICAgcHJpbnQgU1RERVJSICJzeW50YXg6IGdldF9kdmJfZmlybXdhcmUgPGNvbXBvbmVudD5cbiI7CisgICAgcHJpbnQgU1RERVJSICJTdXBwb3J0ZWQgY29tcG9uZW50czpcbiI7CisgICAgQGNvbXBvbmVudHMgPSBzb3J0IEBjb21wb25lbnRzOworICAgIGZvcigkaT0wOyAkaSA8IHNjYWxhcihAY29tcG9uZW50cyk7ICRpKyspIHsKKwlwcmludCBTVERFUlIgIlx0IiAuICRjb21wb25lbnRzWyRpXSAuICJcbiI7CisgICAgfQorICAgIGV4aXQoMSk7Cit9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2R2Yi9sbWVkbTA0LnR4dCBiL0RvY3VtZW50YXRpb24vZHZiL2xtZWRtMDQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0YjcyMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2R2Yi9sbWVkbTA0LnR4dApAQCAtMCwwICsxLDgxIEBACitUbyBleHRyYWN0IGZpcm13YXJlIGZvciB0aGUgRE0wNC9RUUJPWCB5b3UgbmVlZCB0byBjb3B5IHRoZQorZm9sbG93aW5nIGZpbGUocykgdG8gdGhpcyBkaXJlY3RvcnkuCisKK2ZvciBETTA0Ky9RUUJPWCBMTUUyNTEwQyAoU2hhcnAgNzM5NSBUdW5lcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIFNoYXJwIDczOTUgZHJpdmVyIGNhbiBiZSBmb3VuZCBpbiB3aW5kb3dzL3N5c3RlbTMyL2RyaXZlcnMKKworVVMyQTBELnN5cyAoZGF0ZWQgMTcgTWFyIDIwMDkpCisKKworYW5kIHJ1bgorLi9nZXRfZHZiX2Zpcm13YXJlIGxtZTI1MTBjX3M3Mzk1CisKKwl3aWxsIHByb2R1Y2UKKwlkdmItdXNiLWxtZTI1MTBjLXM3Mzk1LmZ3CisKK0FuIGFsdGVybmF0aXZlIGJ1dCBvbGRlciBmaXJtd2FyZSBjYW4gYmUgZm91bmQgb24gdGhlIGRyaXZlcgorZGlzayBEVkItU19FTl8zLjVBIGluIEJEQURyaXZlci9kcml2ZXIKKworTE1FQkRBX0RWQlM3Mzk1Qy5zeXMgKGRhdGVkIDE4IEphbiAyMDA4KQorCithbmQgcnVuCisuL2dldF9kdmJfZmlybXdhcmUgbG1lMjUxMGNfczczOTVfb2xkCisKKwl3aWxsIHByb2R1Y2UKKwlkdmItdXNiLWxtZTI1MTBjLXM3Mzk1LmZ3CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBMRyBmaXJtd2FyZSBjYW4gYmUgZm91bmQgb24gdGhlIGRyaXZlcgorZGlzayBETTA0K181LjFBW0xHXSBpbiBCREFEcml2ZXIvZHJpdmVyCisKK2ZvciBETTA0IExNRTI1MTAgKExHIFR1bmVyKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0xNRUJEQV9EVkJTLnN5cyAoZGF0ZWQgMTMgTm92IDIwMDcpCisKK2FuZCBydW4KKy4vZ2V0X2R2Yl9maXJtd2FyZSBsbWUyNTEwX2xnCisKKwl3aWxsIHByb2R1Y2UKKwlkdmItdXNiLWxtZTI1MTAtbGcuZncKKworCitPdGhlciBMRyBmaXJtd2FyZSBjYW4gYmUgZXh0cmFjdGVkIG1hbnVhbGx5IGZyb20gVVMyODBELnN5cworb25seSBmb3VuZCBpbiB3aW5kb3dzL3N5c3RlbTMyL2RyaXZlcnMKKworZGQgaWY9VVMyODBELnN5cyBpYnM9MSBza2lwPTQyMzYwIGNvdW50PTM5MjQgb2Y9ZHZiLXVzYi1sbWUyNTEwLWxnLmZ3CisKK2ZvciBETTA0IExNRTI1MTBDIChMRyBUdW5lcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitkZCBpZj1VUzI4MEQuc3lzIGlicz0xIHNraXA9MzUyMDAgY291bnQ9Mzg1MCBvZj1kdmItdXNiLWxtZTI1MTBjLWxnLmZ3CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgU2hhcnAgMDE5NCB0dW5lciBkcml2ZXIgY2FuIGJlIGZvdW5kIGluIHdpbmRvd3Mvc3lzdGVtMzIvZHJpdmVycworCitVUzI5MEQuc3lzIChkYXRlZCAwOSBBcHIgMjAwOSkKKworRm9yIExNRTI1MTAKK2RkIGlmPVVTMjkwRC5zeXMgaWJzPTEgc2tpcD0zNjg1NiBjb3VudD0zOTc2IG9mPWR2Yi11c2ItbG1lMjUxMC1zMDE5NC5mdworCisKK0ZvciBMTUUyNTEwQworZGQgaWY9VVMyOTBELnN5cyBpYnM9MSBza2lwPTMzMTUyIGNvdW50PTM2OTcgb2Y9ZHZiLXVzYi1sbWUyNTEwYy1zMDE5NC5mdworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG04OHJzMjAwMCB0dW5lciBkcml2ZXIgY2FuIGJlIGZvdW5kIGluIHdpbmRvd3Mvc3lzdGVtMzIvZHJpdmVycworCitVUzJCMEQuc3lzIChkYXRlZCAyOSBKdW4gMjAxMCkKKworZGQgaWY9VVMyQjBELnN5cyBpYnM9MSBza2lwPTM0NDMyIGNvdW50PTM4NzEgb2Y9ZHZiLXVzYi1sbWUyNTEwYy1yczIwMDAuZncKKworV2UgbmVlZCB0byBtb2RpZnkgaWQgb2YgcnMyMDAwIGZpcm13YXJlIG9yIGl0IHdpbGwgd2FybSBib290IGlkIDMzNDQ6MTEyMC4KKworZWNobyAtbmUgXFx4RjBcXHgyMiB8IGRkIGNvbnY9bm90cnVuYyBicz0xIGNvdW50PTIgc2Vlaz0yNjYgb2Y9ZHZiLXVzYi1sbWUyNTEwYy1yczIwMDAuZncKKworQ29weSB0aGUgZmlybXdhcmUgZmlsZShzKSB0byAvbGliL2Zpcm13YXJlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2R2Yi9vcGVyYS1maXJtd2FyZS50eHQgYi9Eb2N1bWVudGF0aW9uL2R2Yi9vcGVyYS1maXJtd2FyZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI2NjgzMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZHZiL29wZXJhLWZpcm13YXJlLnR4dApAQCAtMCwwICsxLDI3IEBACitUbyBleHRyYWN0IHRoZSBmaXJtd2FyZSBmb3IgdGhlIE9wZXJhIERWQi1TMSBVU0ItQm94Cit5b3UgbmVlZCB0byBjb3B5IHRoZSBmaWxlczoKKworMjgzMFNDYXAyLnN5cworMjgzMFNMb2FkMi5zeXMKKworZnJvbSB0aGUgd2luZHJpdmVyIGRpc2sgaW50byB0aGlzIGRpcmVjdG9yeS4KKworVGhlbiBydW4KKworLi9nZXRfZHZiX2Zpcm13YXJlIG9wZXJhMQorCithbmQgYWZ0ZXIgdGhhdCB5b3UgaGF2ZSAyIGZpbGVzOgorCitkdmItdXNiLW9wZXJhLTAxLmZ3CitkdmItdXNiLW9wZXJhMS1mcGdhLTAxLmZ3CisKK2luIGhlcmUuCisKK0NvcHkgdGhlbSBpbnRvIC9saWIvZmlybXdhcmUvIC4KKworQWZ0ZXIgdGhhdCB0aGUgZHJpdmVyIGNhbiBsb2FkIHRoZSBmaXJtd2FyZQorKGlmIHlvdSBoYXZlIGVuYWJsZWQgZmlybXdhcmUgbG9hZGluZworaW4ga2VybmVsIGNvbmZpZyBhbmQgaGF2ZSBob3RwbHVnIHJ1bm5pbmcpLgorCisKK01hcmNvIEdpdHRsZXIgPGcubWFyY29AZnJlZW5ldC5kZT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHZiL3JlYWRtZS50eHQgYi9Eb2N1bWVudGF0aW9uL2R2Yi9yZWFkbWUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMDM4MGMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2R2Yi9yZWFkbWUudHh0CkBAIC0wLDAgKzEsNjIgQEAKK0xpbnV4IERpZ2l0YWwgVmlkZW8gQnJvYWRjYXN0IChEVkIpIHN1YnN5c3RlbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBtYWluIGRldmVsb3BtZW50IHNpdGUgYW5kIENWUyByZXBvc2l0b3J5IGZvciB0aGVzZQorZHJpdmVycyBpcyBodHRwOi8vbGludXh0di5vcmcvLgorCitUaGUgZGV2ZWxvcGVyIG1haWxpbmcgbGlzdCBsaW51eC1kdmIgaXMgYWxzbyBob3N0ZWQgdGhlcmUsCitzZWUgaHR0cDovL2xpbnV4dHYub3JnL2xpc3RzLnBocC4gUGxlYXNlIGNoZWNrCit0aGUgYXJjaGl2ZSBodHRwOi8vbGludXh0di5vcmcvcGlwZXJtYWlsL2xpbnV4LWR2Yi8KK2FuZCB0aGUgV2lraSBodHRwOi8vbGludXh0di5vcmcvd2lraS8KK2JlZm9yZSBhc2tpbmcgbmV3YmllIHF1ZXN0aW9ucyBvbiB0aGUgbGlzdC4KKworQVBJIGRvY3VtZW50YXRpb24sIHV0aWxpdGllcyBhbmQgdGVzdC9leGFtcGxlIHByb2dyYW1zCithcmUgYXZhaWxhYmxlIGFzIHBhcnQgb2YgdGhlIG9sZCBkcml2ZXIgcGFja2FnZSBmb3IgTGludXggMi40CisobGludXh0di1kdmItMS4wLngudGFyLmd6KSwgb3IgZnJvbSBDVlMgKG1vZHVsZSBEVkIpLgorV2UgcGxhbiB0byBzcGxpdCB0aGlzIGludG8gc2VwYXJhdGUgcGFja2FnZXMsIGJ1dCBpdCdzIG5vdAorYmVlbiBkb25lIHlldC4KKworaHR0cDovL2xpbnV4dHYub3JnL2Rvd25sb2Fkcy8KKworV2hhdCdzIGluc2lkZSB0aGlzIGRpcmVjdG9yeToKKworImF2ZXJtZWRpYS50eHQiCitjb250YWlucyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUKK0F2ZXJtZWRpYSBEVkItVCBjYXJkcy4gU2VlIGFsc28gImJ0OHh4LnR4dCIuCisKKyJidDh4eC50eHQiCitjb250YWlucyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUKK3ZhcmlvdXMgYnQ4eHggYmFzZWQgImJ1ZGdldCIgRFZCIGNhcmRzLgorCisiY2FyZHMudHh0IgorY29udGFpbnMgYSBsaXN0IG9mIHN1cHBvcnRlZCBoYXJkd2FyZS4KKworImNpLnR4dCIKK2NvbnRhaW5zIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZQorQ0kgbW9kdWxlIGFzIHBhcnQgZnJvbSBUd2luSGFuIGNhcmRzIGFuZCBDbG9uZXMuCisKKyJjb250cmlidXRvcnMudHh0IgoraXMgdGhlIHdoby1pcy13aG8gb2YgRFZCIGRldmVsb3BtZW50LgorCisiZmFxLnR4dCIKK2NvbnRhaW5zIGZyZXF1ZW50bHkgYXNrZWQgcXVlc3Rpb25zIGFuZCB0aGVpciBhbnN3ZXJzLgorCisiZ2V0X2R2Yl9maXJtd2FyZSIKK3NjcmlwdCB0byBkb3dubG9hZCBhbmQgZXh0cmFjdCBmaXJtd2FyZSBmb3IgdGhvc2UgZGV2aWNlcwordGhhdCByZXF1aXJlIGl0LgorCisidHR1c2ItZGVjLnR4dCIKK2NvbnRhaW5zIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZQorVFQgREVDMjAwMC9ERUMzMDAwIFVTQiBEVkIgaGFyZHdhcmUuCisKKyJ1ZGV2LnR4dCIKK2hvdyB0byBnZXQgRFZCIGFuZCB1ZGV2IHVwIGFuZCBydW5uaW5nLgorCisiUkVBRE1FLmR2Yi11c2IiCitjb250YWlucyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgRFZCIFVTQiBjYXJkcy4KKworIlJFQURNRS5mbGV4Y29wIgorY29udGFpbnMgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlCitUZWNobmlzYXQtIGFuZCBGbGV4Y29wIEIyQzIgZHJpdmVycy4KKworR29vZCBsdWNrIGFuZCBoYXZlIGZ1biEKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHZiL3RlY2huaXNhdC50eHQgYi9Eb2N1bWVudGF0aW9uL2R2Yi90ZWNobmlzYXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwY2M0ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2R2Yi90ZWNobmlzYXQudHh0CkBAIC0wLDAgKzEsNzggQEAKK0hvdyB0byBzZXQgdXAgdGhlIFRlY2huaXNhdC9CMkMyIEZsZXhjb3AgZGV2aWNlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzEpIEZpbmQgb3V0IHdoYXQgZGV2aWNlIHlvdSBoYXZlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbXBvcnRhbnQgTm90aWNlOiBUaGUgZHJpdmVyIGRvZXMgTk9UIHN1cHBvcnQgVGVjaG5pc2F0IFVTQiAyIGRldmljZXMhCisKK0ZpcnN0IHN0YXJ0IHlvdXIgbGludXggYm94IHdpdGggYSBzaGlwcGVkIGtlcm5lbDoKK2xzcGNpIC12dnYgZm9yIGEgUENJIGRldmljZSAobHN1c2IgLXZ2diBmb3IgYW4gVVNCIGRldmljZSkgd2lsbCBzaG93IHlvdSBmb3IgZXhhbXBsZToKKzAyOjBiLjAgTmV0d29yayBjb250cm9sbGVyOiBUZWNoc2FuIEVsZWN0cm9uaWNzIENvIEx0ZCBCMkMyIEZsZXhDb3BJSSBEVkIgY2hpcCAvCisgVGVjaG5pc2F0IFNreVN0YXIyIERWQiBjYXJkIChyZXYgMDIpCisKK2RtZXNnIHwgZ3JlcCBmcm9udGVuZCBtYXkgc2hvdyB5b3UgZm9yIGV4YW1wbGU6CitEVkI6IHJlZ2lzdGVyaW5nIGZyb250ZW5kIDAgKENvbmV4YW50IENYMjQxMjMvQ1gyNDEwOSkuLi4KKworMikgS2VybmVsIGNvbXBpbGF0aW9uOgorPT09PT09PT09PT09PT09PT09PT09PQorCitJZiB0aGUgRmxleGNvcCAvIFRlY2huaXNhdCBpcyB0aGUgb25seSBEVkIgLyBUViAvIFJhZGlvIGRldmljZSBpbiB5b3VyIGJveAorIGdldCByaWQgb2YgdW5uZWNlc3NhcnkgbW9kdWxlcyBhbmQgY2hlY2sgdGhpcyBvbmU6CisiTXVsdGltZWRpYSBzdXBwb3J0IiA9PiAiQ3VzdG9taXNlIGFuYWxvZyBhbmQgaHlicmlkIHR1bmVyIG1vZHVsZXMgdG8gYnVpbGQiCitJbiB0aGlzIGRpcmVjdG9yeSB1bmNoZWNrIGV2ZXJ5IGRyaXZlciB3aGljaCBpcyBhY3RpdmF0ZWQgdGhlcmUKKyAoZXhjZXB0ICJTaW1wbGUgdHVuZXIgc3VwcG9ydCIgZm9yIEFUU0MgM3JkIGdlbmVyYXRpb24gb25seSAtPiBzZWUgY2FzZSA5IHBsZWFzZSkuCisKK1RoZW4gcGxlYXNlIGFjdGl2YXRlOgorMmEpIE1haW4gbW9kdWxlIHBhcnQ6CisiTXVsdGltZWRpYSBzdXBwb3J0IiA9PiAiRFZCL0FUU0MgYWRhcHRlcnMiCisgPT4gIlRlY2huaXNhdC9CMkMyIEZsZXhjb3BJSShiKSBhbmQgRmxleENvcElJSSBhZGFwdGVycyIKKworYS4pID0+ICJUZWNobmlzYXQvQjJDMiBBaXIvU2t5L0NhYmxlMlBDIFBDSSIgKFBDSSBjYXJkKSBvcgorYi4pID0+ICJUZWNobmlzYXQvQjJDMiBBaXIvU2t5L0NhYmxlMlBDIFVTQiIgKFVTQiAxLjEgYWRhcHRlcikKKyBhbmQgZm9yIHRyb3VibGVzaG9vdGluZyBwdXJwb3NlczoKK2MuKSA9PiAiRW5hYmxlIGRlYnVnIGZvciB0aGUgQjJDMiBGbGV4Q29wIGRyaXZlcnMiCisKKzJiKSBGcm9udGVuZCAvIFR1bmVyIC8gRGVtb2R1bGF0b3IgbW9kdWxlIHBhcnQ6CisiTXVsdGltZWRpYSBzdXBwb3J0IiA9PiAiRFZCL0FUU0MgYWRhcHRlcnMiCisgPT4gIkN1c3RvbWlzZSB0aGUgZnJvbnRlbmQgbW9kdWxlcyB0byBidWlsZCIgIkN1c3RvbWlzZSBEVkIgZnJvbnRlbmRzIiA9PgorCisxLikgU2t5U3RhciBEVkItUyBSZXZpc2lvbiAyLjM6CithLikgPT4gIlphcmxpbmsgVlAzMTAvTVQzMTIvWkwxMDMxMyBiYXNlZCIKK2IuKSA9PiAiR2VuZXJpYyBJMkMgUExMIGJhc2VkIHR1bmVycyIKKworMi4pIFNreVN0YXIgRFZCLVMgUmV2aXNpb24gMi42OgorYS4pID0+ICJTVCBTVFYwMjk5IGJhc2VkIgorYi4pID0+ICJHZW5lcmljIEkyQyBQTEwgYmFzZWQgdHVuZXJzIgorCiszLikgU2t5U3RhciBEVkItUyBSZXZpc2lvbiAyLjc6CithLikgPT4gIlNhbXN1bmcgUzVIMTQyMCBiYXNlZCIKK2IuKSA9PiAiSW50ZWdyYW50IElURDEwMDAgWmVybyBJRiB0dW5lciBmb3IgRFZCLVMvRFNTIgorYy4pID0+ICJJU0w2NDIxIFNFQyBjb250cm9sbGVyIgorCis0LikgU2t5U3RhciBEVkItUyBSZXZpc2lvbiAyLjg6CithLikgPT4gIkNvbmV4YW50IENYMjQxMjMgYmFzZWQiCitiLikgPT4gIkNvbmV4YW50IENYMjQxMTMvQ1gyNDEyOCB0dW5lciBmb3IgRFZCLVMvRFNTIgorYy4pID0+ICJJU0w2NDIxIFNFQyBjb250cm9sbGVyIgorCis1LikgQWlyU3RhciBEVkItVCBjYXJkOgorYS4pID0+ICJaYXJsaW5rIE1UMzUyIGJhc2VkIgorYi4pID0+ICJHZW5lcmljIEkyQyBQTEwgYmFzZWQgdHVuZXJzIgorCis2LikgQ2FibGVTdGFyIERWQi1DIGNhcmQ6CithLikgPT4gIlNUIFNUVjAyOTcgYmFzZWQiCitiLikgPT4gIkdlbmVyaWMgSTJDIFBMTCBiYXNlZCB0dW5lcnMiCisKKzcuKSBBaXJTdGFyIEFUU0MgY2FyZCAxc3QgZ2VuZXJhdGlvbjoKK2EuKSA9PiAiQnJvYWRjb20gQkNNMzUxMCIKKworOC4pIEFpclN0YXIgQVRTQyBjYXJkIDJuZCBnZW5lcmF0aW9uOgorYS4pID0+ICJOeHRXYXZlIENvbW11bmljYXRpb25zIE5YVDIwMDIvTlhUMjAwNCBiYXNlZCIKK2IuKSA9PiAiR2VuZXJpYyBJMkMgUExMIGJhc2VkIHR1bmVycyIKKworOS4pIEFpclN0YXIgQVRTQyBjYXJkIDNyZCBnZW5lcmF0aW9uOgorYS4pID0+ICJMRyBFbGVjdHJvbmljcyBMR0RUMzMwMi9MR0RUMzMwMyBiYXNlZCIKK2IuKSAiTXVsdGltZWRpYSBzdXBwb3J0IiA9PiAiQ3VzdG9taXNlIGFuYWxvZyBhbmQgaHlicmlkIHR1bmVyIG1vZHVsZXMgdG8gYnVpbGQiCisgPT4gIlNpbXBsZSB0dW5lciBzdXBwb3J0IgorCitBdXRob3I6IFV3ZSBCdWdsYSA8dXdlLmJ1Z2xhQGdteC5kZT4gQXVndXN0IDIwMDkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHZiL3R0dXNiLWRlYy50eHQgYi9Eb2N1bWVudGF0aW9uL2R2Yi90dHVzYi1kZWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyZjI3MWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2R2Yi90dHVzYi1kZWMudHh0CkBAIC0wLDAgKzEsNDUgQEAKK1RlY2hub1RyZW5kL0hhdXBwYXVnZSBERUMgVVNCIERyaXZlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0RyaXZlciBTdGF0dXMKKy0tLS0tLS0tLS0tLS0KKworU3VwcG9ydGVkOgorCURFQzIwMDAtdAorCURFQzI0NTAtdAorCURFQzMwMDAtcworCUxpbnV4IEtlcm5lbHMgMi40IGFuZCAyLjYKKwlWaWRlbyBTdHJlYW1pbmcKKwlBdWRpbyBTdHJlYW1pbmcKKwlTZWN0aW9uIEZpbHRlcnMKKwlDaGFubmVsIFphcHBpbmcKKwlIb3RwbHVnIGZpcm13YXJlIGxvYWRlciB1bmRlciAyLjYga2VybmVscworCitUbyBEbzoKKwlUdW5lciBzdGF0dXMgaW5mb3JtYXRpb24KKwlEVkIgbmV0d29yayBpbnRlcmZhY2UKKwlTdHJlYW1pbmcgdmlkZW8gUEMtPkRFQworCUNvbmF4IHN1cHBvcnQgZm9yIDI0NTAtdAorCitHZXR0aW5nIHRoZSBGaXJtd2FyZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RvIGRvd25sb2FkIHRoZSBmaXJtd2FyZSwgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CisiZ2V0X2R2Yl9maXJtd2FyZSBkZWMyMDAwdCIKKyJnZXRfZHZiX2Zpcm13YXJlIGRlYzI1NDB0IgorImdldF9kdmJfZmlybXdhcmUgZGVjMzAwMHMiCisKKworQ29tcGlsYXRpb24gTm90ZXMgZm9yIDIuNCBrZXJuZWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0ZvciAyLjQga2VybmVscyB0aGUgZmlybXdhcmUgZm9yIHRoZSBERUNzIGlzIGNvbXBpbGVkIGludG8gdGhlIGRyaXZlciBpdHNlbGYuCisKK0NvcHkgdGhlIHRocmVlIGZpbGVzIGRvd25sb2FkZWQgYWJvdmUgaW50byB0aGUgYnVpbGQtMi40IGRpcmVjdG9yeS4KKworCitIb3RwbHVnIEZpcm13YXJlIExvYWRpbmcgZm9yIDIuNiBrZXJuZWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitGb3IgMi42IGtlcm5lbHMgdGhlIGZpcm13YXJlIGlzIGxvYWRlZCBhdCB0aGUgcG9pbnQgdGhhdCB0aGUgZHJpdmVyIG1vZHVsZSBpcworbG9hZGVkLiAgU2VlIGxpbnV4L0RvY3VtZW50YXRpb24vZHZiL2Zpcm13YXJlLnR4dCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworQ29weSB0aGUgdGhyZWUgZmlsZXMgZG93bmxvYWRlZCBhYm92ZSBpbnRvIHRoZSAvdXNyL2xpYi9ob3RwbHVnL2Zpcm13YXJlIG9yCisvbGliL2Zpcm13YXJlIGRpcmVjdG9yeSAoZGVwZW5kaW5nIG9uIGNvbmZpZ3VyYXRpb24gb2YgZmlybXdhcmUgaG90cGx1ZykuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2R2Yi91ZGV2LnR4dCBiL0RvY3VtZW50YXRpb24vZHZiL3VkZXYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMjMwNWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2R2Yi91ZGV2LnR4dApAQCAtMCwwICsxLDQ2IEBACitUaGUgRFZCIHN1YnN5c3RlbSBjdXJyZW50bHkgcmVnaXN0ZXJzIHRvIHRoZSBzeXNmcyBzdWJzeXN0ZW0gdXNpbmcgdGhlCisiY2xhc3Nfc2ltcGxlIiBpbnRlcmZhY2UuCisKK1RoaXMgbWVhbnMgdGhhdCBvbmx5IHRoZSBiYXNpYyBpbmZvcm1hdGlvbiBsaWtlIG1vZHVsZSBsb2FkaW5nIHBhcmFtZXRlcnMKK2FyZSBwcmVzZW50ZWQgdGhyb3VnaCBzeXNmcy4gT3RoZXIgdGhpbmdzIHRoYXQgbWlnaHQgYmUgaW50ZXJlc3RpbmcgYXJlCitjdXJyZW50bHkgKm5vdCogYXZhaWxhYmxlLgorCitOZXZlcnRoZWxlc3MgaXQncyBub3cgcG9zc2libGUgdG8gYWRkIHByb3BlciB1ZGV2IHJ1bGVzIHNvIHRoYXQgdGhlCitEVkIgZGV2aWNlIG5vZGVzIGFyZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkuCisKK1dlIGFzc3VtZSB0aGF0IHlvdSBoYXZlIHVkZXYgYWxyZWFkeSB1cCBhbmQgcnVubmluZyBhbmQgdGhhdCBoYXZlIGJlZW4KK2NyZWF0aW5nIHRoZSBEVkIgZGV2aWNlIG5vZGVzIG1hbnVhbGx5IHVwIHRvIG5vdyBkdWUgdG8gdGhlIG1pc3Npbmcgc3lzZnMKK3N1cHBvcnQuCisKKzAuIERvbid0IGZvcmdldCB0byBkaXNhYmxlIHlvdXIgY3VycmVudCBtZXRob2Qgb2YgY3JlYXRpbmcgdGhlCitkZXZpY2Ugbm9kZXMgbWFudWFsbHkuCisKKzEuIFVuZm9ydHVuYXRlbHksIHlvdSdsbCBuZWVkIGEgaGVscGVyIHNjcmlwdCB0byB0cmFuc2Zvcm0gdGhlIGtlcm5lbAorc3lzZnMgZGV2aWNlIG5hbWUgaW50byB0aGUgd2VsbCBrbm93biBkdmIgYWRhcHRlciAvIGRldmljZSBuYW1pbmcgc2NoZW1lLgorVGhlIHNjcmlwdCBzaG91bGQgYmUgY2FsbGVkICJkdmIuc2giIGFuZCBzaG91bGQgYmUgcGxhY2VkIGludG8gYSBzY3JpcHQKK2RpciB3aGVyZSB1ZGV2IGNhbiBleGVjdXRlIGl0LCBtb3N0IGxpa2VseSAvZXRjL3VkZXYvc2NyaXB0cy8KKworU28sIGNyZWF0ZSBhIG5ldyBmaWxlIC9ldGMvdWRldi9zY3JpcHRzL2R2Yi5zaCBhbmQgYWRkIHRoZSBmb2xsb3dpbmc6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1zY2huaXBwLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIS9iaW4vc2gKKy9iaW4vZWNobyAkMSB8IC9iaW4vc2VkIC1lICdzLGR2YlwoWzAtOV1cKVwuXChbXjAtOV0qXClcKFswLTldXCksZHZiL2FkYXB0ZXJcMS9cMlwzLCcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXNjaG5pcHAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRG9uJ3QgZm9yZ2V0IHRvIG1ha2UgdGhlIHNjcmlwdCBleGVjdXRhYmxlIHdpdGggImNobW9kIi4KKworMS4gWW91IG5lZWQgdG8gY3JlYXRlIGEgcHJvcGVyIHVkZXYgcnVsZSB0aGF0IHdpbGwgY3JlYXRlIHRoZSBkZXZpY2Ugbm9kZXMKK2xpa2UgeW91IGtub3cgdGhlbS4gQWxsIHJlYWwgZGlzdHJpYnV0aW9ucyBvdXQgdGhlcmUgc2NhbiB0aGUgL2V0Yy91ZGV2L3J1bGVzLmQKK2RpcmVjdG9yeSBmb3IgcnVsZSBmaWxlcy4gVGhlIG1haW4gdWRldiBjb25maWd1cmF0aW9uIGZpbGUgL2V0Yy91ZGV2L3VkZXYuY29uZgord2lsbCB0ZWxsIHlvdSB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBydWxlcyBhcmUsIG1vc3QgbGlrZWx5IGl0J3MgL2V0Yy91ZGV2L3J1bGVzLmQvCisKK0NyZWF0ZSBhIG5ldyBydWxlIGZpbGUgaW4gdGhhdCBkaXJlY3RvcnkgY2FsbGVkICJkdmIucnVsZSIgYW5kIGFkZCB0aGUgZm9sbG93aW5nIGxpbmU6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1zY2huaXBwLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitLRVJORUw9ImR2YioiLCBQUk9HUkFNPSIvZXRjL3VkZXYvc2NyaXB0cy9kdmIuc2ggJWsiLCBOQU1FPSIlYyIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXNjaG5pcHAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgeW91IHdhbnQgbW9yZSBjb250cm9sIG92ZXIgdGhlIGRldmljZSBub2RlcyAoZm9yIGV4YW1wbGUgYSBzcGVjaWFsIGdyb3VwIG1lbWJlcnNoaXApCitoYXZlIGEgbG9vayBhdCAibWFuIHVkZXYiLgorCitGb3IgZXZlcnkgZGV2aWNlIHRoYXQgcmVnaXN0ZXJzIHRvIHRoZSBzeXNmcyBzdWJzeXN0ZW0gd2l0aCBhICJkdmIiIHByZWZpeCwKK3RoZSBoZWxwZXIgc2NyaXB0IC9ldGMvdWRldi9zY3JpcHRzL2R2Yi5zaCBpcyBpbnZva2VkLCB3aGljaCB3aWxsIHRoZW4KK2NyZWF0ZSB0aGUgcHJvcGVyIGRldmljZSBub2RlIGluIHlvdXIgL2Rldi8gZGlyZWN0b3J5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9keW5hbWljLWRlYnVnLWhvd3RvLnR4dCBiL0RvY3VtZW50YXRpb24vZHluYW1pYy1kZWJ1Zy1ob3d0by50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQxNzg3MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZHluYW1pYy1kZWJ1Zy1ob3d0by50eHQKQEAgLTAsMCArMSwzNDAgQEAKKworSW50cm9kdWN0aW9uCis9PT09PT09PT09PT0KKworVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgaG93IHRvIHVzZSB0aGUgZHluYW1pYyBkZWJ1ZyAoZHluZGJnKSBmZWF0dXJlLgorCitEeW5hbWljIGRlYnVnIGlzIGRlc2lnbmVkIHRvIGFsbG93IHlvdSB0byBkeW5hbWljYWxseSBlbmFibGUvZGlzYWJsZQora2VybmVsIGNvZGUgdG8gb2J0YWluIGFkZGl0aW9uYWwga2VybmVsIGluZm9ybWF0aW9uLiAgQ3VycmVudGx5LCBpZgorQ09ORklHX0RZTkFNSUNfREVCVUcgaXMgc2V0LCB0aGVuIGFsbCBwcl9kZWJ1ZygpL2Rldl9kYmcoKSBhbmQKK3ByaW50X2hleF9kdW1wX2RlYnVnKCkvcHJpbnRfaGV4X2R1bXBfYnl0ZXMoKSBjYWxscyBjYW4gYmUgZHluYW1pY2FsbHkKK2VuYWJsZWQgcGVyLWNhbGxzaXRlLgorCitJZiBDT05GSUdfRFlOQU1JQ19ERUJVRyBpcyBub3Qgc2V0LCBwcmludF9oZXhfZHVtcF9kZWJ1ZygpIGlzIGp1c3QKK3Nob3J0Y3V0IGZvciBwcmludF9oZXhfZHVtcChLRVJOX0RFQlVHKS4KKworRm9yIHByaW50X2hleF9kdW1wX2RlYnVnKCkvcHJpbnRfaGV4X2R1bXBfYnl0ZXMoKSwgZm9ybWF0IHN0cmluZyBpcworaXRzICdwcmVmaXhfc3RyJyBhcmd1bWVudCwgaWYgaXQgaXMgY29uc3RhbnQgc3RyaW5nOyBvciAiaGV4ZHVtcCIKK2luIGNhc2UgJ3ByZWZpeF9zdHInIGlzIGJ1aWxkIGR5bmFtaWNhbGx5LgorCitEeW5hbWljIGRlYnVnIGhhcyBldmVuIG1vcmUgdXNlZnVsIGZlYXR1cmVzOgorCisgKiBTaW1wbGUgcXVlcnkgbGFuZ3VhZ2UgYWxsb3dzIHR1cm5pbmcgb24gYW5kIG9mZiBkZWJ1Z2dpbmcKKyAgIHN0YXRlbWVudHMgYnkgbWF0Y2hpbmcgYW55IGNvbWJpbmF0aW9uIG9mIDAgb3IgMSBvZjoKKworICAgLSBzb3VyY2UgZmlsZW5hbWUKKyAgIC0gZnVuY3Rpb24gbmFtZQorICAgLSBsaW5lIG51bWJlciAoaW5jbHVkaW5nIHJhbmdlcyBvZiBsaW5lIG51bWJlcnMpCisgICAtIG1vZHVsZSBuYW1lCisgICAtIGZvcm1hdCBzdHJpbmcKKworICogUHJvdmlkZXMgYSBkZWJ1Z2ZzIGNvbnRyb2wgZmlsZTogPGRlYnVnZnM+L2R5bmFtaWNfZGVidWcvY29udHJvbAorICAgd2hpY2ggY2FuIGJlIHJlYWQgdG8gZGlzcGxheSB0aGUgY29tcGxldGUgbGlzdCBvZiBrbm93biBkZWJ1ZworICAgc3RhdGVtZW50cywgdG8gaGVscCBndWlkZSB5b3UKKworQ29udHJvbGxpbmcgZHluYW1pYyBkZWJ1ZyBCZWhhdmlvdXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBiZWhhdmlvdXIgb2YgcHJfZGVidWcoKS9kZXZfZGJnKClzIGFyZSBjb250cm9sbGVkIHZpYSB3cml0aW5nIHRvIGEKK2NvbnRyb2wgZmlsZSBpbiB0aGUgJ2RlYnVnZnMnIGZpbGVzeXN0ZW0uIFRodXMsIHlvdSBtdXN0IGZpcnN0IG1vdW50Cit0aGUgZGVidWdmcyBmaWxlc3lzdGVtLCBpbiBvcmRlciB0byBtYWtlIHVzZSBvZiB0aGlzIGZlYXR1cmUuCitTdWJzZXF1ZW50bHksIHdlIHJlZmVyIHRvIHRoZSBjb250cm9sIGZpbGUgYXM6Cis8ZGVidWdmcz4vZHluYW1pY19kZWJ1Zy9jb250cm9sLiBGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gZW5hYmxlCitwcmludGluZyBmcm9tIHNvdXJjZSBmaWxlICdzdmNzb2NrLmMnLCBsaW5lIDE2MDMgeW91IHNpbXBseSBkbzoKKworbnVsbGFyYm9yOn4gIyBlY2hvICdmaWxlIHN2Y3NvY2suYyBsaW5lIDE2MDMgK3AnID4KKwkJCQk8ZGVidWdmcz4vZHluYW1pY19kZWJ1Zy9jb250cm9sCisKK0lmIHlvdSBtYWtlIGEgbWlzdGFrZSB3aXRoIHRoZSBzeW50YXgsIHRoZSB3cml0ZSB3aWxsIGZhaWwgdGh1czoKKworbnVsbGFyYm9yOn4gIyBlY2hvICdmaWxlIHN2Y3NvY2suYyB3dGYgMSArcCcgPgorCQkJCTxkZWJ1Z2ZzPi9keW5hbWljX2RlYnVnL2NvbnRyb2wKKy1iYXNoOiBlY2hvOiB3cml0ZSBlcnJvcjogSW52YWxpZCBhcmd1bWVudAorCitWaWV3aW5nIER5bmFtaWMgRGVidWcgQmVoYXZpb3VyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworWW91IGNhbiB2aWV3IHRoZSBjdXJyZW50bHkgY29uZmlndXJlZCBiZWhhdmlvdXIgb2YgYWxsIHRoZSBkZWJ1Zworc3RhdGVtZW50cyB2aWE6CisKK251bGxhcmJvcjp+ICMgY2F0IDxkZWJ1Z2ZzPi9keW5hbWljX2RlYnVnL2NvbnRyb2wKKyMgZmlsZW5hbWU6bGluZW5vIFttb2R1bGVdZnVuY3Rpb24gZmxhZ3MgZm9ybWF0CisvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9zZ2ktZW5oYW5jZWRuZnMtMS40L2RlZmF1bHQvbmV0L3N1bnJwYy9zdmNfcmRtYS5jOjMyMyBbc3ZjeHBydF9yZG1hXXN2Y19yZG1hX2NsZWFudXAgPV8gIlNWQ1JETUEgTW9kdWxlIFJlbW92ZWQsIGRlcmVnaXN0ZXIgUlBDIFJETUEgdHJhbnNwb3J0XDAxMiIKKy91c3Ivc3JjL3BhY2thZ2VzL0JVSUxEL3NnaS1lbmhhbmNlZG5mcy0xLjQvZGVmYXVsdC9uZXQvc3VucnBjL3N2Y19yZG1hLmM6MzQxIFtzdmN4cHJ0X3JkbWFdc3ZjX3JkbWFfaW5pdCA9XyAiXDAxMW1heF9pbmxpbmUgICAgICAgOiAlZFwwMTIiCisvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9zZ2ktZW5oYW5jZWRuZnMtMS40L2RlZmF1bHQvbmV0L3N1bnJwYy9zdmNfcmRtYS5jOjM0MCBbc3ZjeHBydF9yZG1hXXN2Y19yZG1hX2luaXQgPV8gIlwwMTFzcV9kZXB0aCAgICAgICAgIDogJWRcMDEyIgorL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvc2dpLWVuaGFuY2VkbmZzLTEuNC9kZWZhdWx0L25ldC9zdW5ycGMvc3ZjX3JkbWEuYzozMzggW3N2Y3hwcnRfcmRtYV1zdmNfcmRtYV9pbml0ID1fICJcMDExbWF4X3JlcXVlc3RzICAgICA6ICVkXDAxMiIKKy4uLgorCisKK1lvdSBjYW4gYWxzbyBhcHBseSBzdGFuZGFyZCBVbml4IHRleHQgbWFuaXB1bGF0aW9uIGZpbHRlcnMgdG8gdGhpcworZGF0YSwgZS5nLgorCitudWxsYXJib3I6fiAjIGdyZXAgLWkgcmRtYSA8ZGVidWdmcz4vZHluYW1pY19kZWJ1Zy9jb250cm9sICB8IHdjIC1sCis2MgorCitudWxsYXJib3I6fiAjIGdyZXAgLWkgdGNwIDxkZWJ1Z2ZzPi9keW5hbWljX2RlYnVnL2NvbnRyb2wgfCB3YyAtbAorNDIKKworVGhlIHRoaXJkIGNvbHVtbiBzaG93cyB0aGUgY3VycmVudGx5IGVuYWJsZWQgZmxhZ3MgZm9yIGVhY2ggZGVidWcKK3N0YXRlbWVudCBjYWxsc2l0ZSAoc2VlIGJlbG93IGZvciBkZWZpbml0aW9ucyBvZiB0aGUgZmxhZ3MpLiAgVGhlCitkZWZhdWx0IHZhbHVlLCB3aXRoIG5vIGZsYWdzIGVuYWJsZWQsIGlzICI9XyIuICBTbyB5b3UgY2FuIHZpZXcgYWxsCit0aGUgZGVidWcgc3RhdGVtZW50IGNhbGxzaXRlcyB3aXRoIGFueSBub24tZGVmYXVsdCBmbGFnczoKKworbnVsbGFyYm9yOn4gIyBhd2sgJyQzICE9ICI9XyInIDxkZWJ1Z2ZzPi9keW5hbWljX2RlYnVnL2NvbnRyb2wKKyMgZmlsZW5hbWU6bGluZW5vIFttb2R1bGVdZnVuY3Rpb24gZmxhZ3MgZm9ybWF0CisvdXNyL3NyYy9wYWNrYWdlcy9CVUlMRC9zZ2ktZW5oYW5jZWRuZnMtMS40L2RlZmF1bHQvbmV0L3N1bnJwYy9zdmNzb2NrLmM6MTYwMyBbc3VucnBjXXN2Y19zZW5kIHAgInN2Y19wcm9jZXNzOiBzdF9zZW5kdG8gcmV0dXJuZWQgJWRcMDEyIgorCisKK0NvbW1hbmQgTGFuZ3VhZ2UgUmVmZXJlbmNlCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBdCB0aGUgbGV4aWNhbCBsZXZlbCwgYSBjb21tYW5kIGNvbXByaXNlcyBhIHNlcXVlbmNlIG9mIHdvcmRzIHNlcGFyYXRlZAorYnkgc3BhY2VzIG9yIHRhYnMuICBTbyB0aGVzZSBhcmUgYWxsIGVxdWl2YWxlbnQ6CisKK251bGxhcmJvcjp+ICMgZWNobyAtYyAnZmlsZSBzdmNzb2NrLmMgbGluZSAxNjAzICtwJyA+CisJCQkJPGRlYnVnZnM+L2R5bmFtaWNfZGVidWcvY29udHJvbAorbnVsbGFyYm9yOn4gIyBlY2hvIC1jICcgIGZpbGUgICBzdmNzb2NrLmMgICAgIGxpbmUgIDE2MDMgK3AgICcgPgorCQkJCTxkZWJ1Z2ZzPi9keW5hbWljX2RlYnVnL2NvbnRyb2wKK251bGxhcmJvcjp+ICMgZWNobyAtbiAnZmlsZSBzdmNzb2NrLmMgbGluZSAxNjAzICtwJyA+CisJCQkJPGRlYnVnZnM+L2R5bmFtaWNfZGVidWcvY29udHJvbAorCitDb21tYW5kIHN1Ym1pc3Npb25zIGFyZSBib3VuZGVkIGJ5IGEgd3JpdGUoKSBzeXN0ZW0gY2FsbC4KK011bHRpcGxlIGNvbW1hbmRzIGNhbiBiZSB3cml0dGVuIHRvZ2V0aGVyLCBzZXBhcmF0ZWQgYnkgJzsnIG9yICdcbicuCisKKyAgfiMgZWNobyAiZnVuYyBwbnBhY3BpX2dldF9yZXNvdXJjZXMgK3A7IGZ1bmMgcG5wX2Fzc2lnbl9tZW0gK3AiIFwKKyAgICAgPiA8ZGVidWdmcz4vZHluYW1pY19kZWJ1Zy9jb250cm9sCisKK0lmIHlvdXIgcXVlcnkgc2V0IGlzIGJpZywgeW91IGNhbiBiYXRjaCB0aGVtIHRvbzoKKworICB+IyBjYXQgcXVlcnktYmF0Y2gtZmlsZSA+IDxkZWJ1Z2ZzPi9keW5hbWljX2RlYnVnL2NvbnRyb2wKKworQSBhbm90aGVyIHdheSBpcyB0byB1c2Ugd2lsZGNhcmQuIFRoZSBtYXRjaCBydWxlIHN1cHBvcnQgJyonIChtYXRjaGVzCit6ZXJvIG9yIG1vcmUgY2hhcmFjdGVycykgYW5kICc/JyAobWF0Y2hlcyBleGFjdGx5IG9uZSBjaGFyYWN0ZXIpLkZvcgorZXhhbXBsZSwgeW91IGNhbiBtYXRjaCBhbGwgdXNiIGRyaXZlcnM6CisKKyAgfiMgZWNobyAiZmlsZSBkcml2ZXJzL3VzYi8qICtwIiA+IDxkZWJ1Z2ZzPi9keW5hbWljX2RlYnVnL2NvbnRyb2wKKworQXQgdGhlIHN5bnRhY3RpY2FsIGxldmVsLCBhIGNvbW1hbmQgY29tcHJpc2VzIGEgc2VxdWVuY2Ugb2YgbWF0Y2gKK3NwZWNpZmljYXRpb25zLCBmb2xsb3dlZCBieSBhIGZsYWdzIGNoYW5nZSBzcGVjaWZpY2F0aW9uLgorCitjb21tYW5kIDo6PSBtYXRjaC1zcGVjKiBmbGFncy1zcGVjCisKK1RoZSBtYXRjaC1zcGVjJ3MgYXJlIHVzZWQgdG8gY2hvb3NlIGEgc3Vic2V0IG9mIHRoZSBrbm93biBwcl9kZWJ1ZygpCitjYWxsc2l0ZXMgdG8gd2hpY2ggdG8gYXBwbHkgdGhlIGZsYWdzLXNwZWMuICBUaGluayBvZiB0aGVtIGFzIGEgcXVlcnkKK3dpdGggaW1wbGljaXQgQU5EcyBiZXR3ZWVuIGVhY2ggcGFpci4gIE5vdGUgdGhhdCBhbiBlbXB0eSBsaXN0IG9mCittYXRjaC1zcGVjcyB3aWxsIHNlbGVjdCBhbGwgZGVidWcgc3RhdGVtZW50IGNhbGxzaXRlcy4KKworQSBtYXRjaCBzcGVjaWZpY2F0aW9uIGNvbXByaXNlcyBhIGtleXdvcmQsIHdoaWNoIGNvbnRyb2xzIHRoZQorYXR0cmlidXRlIG9mIHRoZSBjYWxsc2l0ZSB0byBiZSBjb21wYXJlZCwgYW5kIGEgdmFsdWUgdG8gY29tcGFyZQorYWdhaW5zdC4gIFBvc3NpYmxlIGtleXdvcmRzIGFyZToKKworbWF0Y2gtc3BlYyA6Oj0gJ2Z1bmMnIHN0cmluZyB8CisJICAgICAgICdmaWxlJyBzdHJpbmcgfAorCSAgICAgICAnbW9kdWxlJyBzdHJpbmcgfAorCSAgICAgICAnZm9ybWF0JyBzdHJpbmcgfAorCSAgICAgICAnbGluZScgbGluZS1yYW5nZQorCitsaW5lLXJhbmdlIDo6PSBsaW5lbm8gfAorCSAgICAgICAnLSdsaW5lbm8gfAorCSAgICAgICBsaW5lbm8nLScgfAorCSAgICAgICBsaW5lbm8nLSdsaW5lbm8KKy8vIE5vdGU6IGxpbmUtcmFuZ2UgY2Fubm90IGNvbnRhaW4gc3BhY2UsIGUuZy4KKy8vICIxLTMwIiBpcyB2YWxpZCByYW5nZSBidXQgIjEgLSAzMCIgaXMgbm90LgorCitsaW5lbm8gOjo9IHVuc2lnbmVkLWludAorCitUaGUgbWVhbmluZ3Mgb2YgZWFjaCBrZXl3b3JkIGFyZToKKworZnVuYworICAgIFRoZSBnaXZlbiBzdHJpbmcgaXMgY29tcGFyZWQgYWdhaW5zdCB0aGUgZnVuY3Rpb24gbmFtZQorICAgIG9mIGVhY2ggY2FsbHNpdGUuICBFeGFtcGxlOgorCisgICAgZnVuYyBzdmNfdGNwX2FjY2VwdAorCitmaWxlCisgICAgVGhlIGdpdmVuIHN0cmluZyBpcyBjb21wYXJlZCBhZ2FpbnN0IGVpdGhlciB0aGUgZnVsbCBwYXRobmFtZSwgdGhlCisgICAgc3JjLXJvb3QgcmVsYXRpdmUgcGF0aG5hbWUsIG9yIHRoZSBiYXNlbmFtZSBvZiB0aGUgc291cmNlIGZpbGUgb2YKKyAgICBlYWNoIGNhbGxzaXRlLiAgRXhhbXBsZXM6CisKKyAgICBmaWxlIHN2Y3NvY2suYworICAgIGZpbGUga2VybmVsL2ZyZWV6ZXIuYworICAgIGZpbGUgL3Vzci9zcmMvcGFja2FnZXMvQlVJTEQvc2dpLWVuaGFuY2VkbmZzLTEuNC9kZWZhdWx0L25ldC9zdW5ycGMvc3Zjc29jay5jCisKK21vZHVsZQorICAgIFRoZSBnaXZlbiBzdHJpbmcgaXMgY29tcGFyZWQgYWdhaW5zdCB0aGUgbW9kdWxlIG5hbWUKKyAgICBvZiBlYWNoIGNhbGxzaXRlLiAgVGhlIG1vZHVsZSBuYW1lIGlzIHRoZSBzdHJpbmcgYXMKKyAgICBzZWVuIGluICJsc21vZCIsIGkuZS4gd2l0aG91dCB0aGUgZGlyZWN0b3J5IG9yIHRoZSAua28KKyAgICBzdWZmaXggYW5kIHdpdGggJy0nIGNoYW5nZWQgdG8gJ18nLiAgRXhhbXBsZXM6CisKKyAgICBtb2R1bGUgc3VucnBjCisgICAgbW9kdWxlIG5mc2QKKworZm9ybWF0CisgICAgVGhlIGdpdmVuIHN0cmluZyBpcyBzZWFyY2hlZCBmb3IgaW4gdGhlIGR5bmFtaWMgZGVidWcgZm9ybWF0CisgICAgc3RyaW5nLiAgTm90ZSB0aGF0IHRoZSBzdHJpbmcgZG9lcyBub3QgbmVlZCB0byBtYXRjaCB0aGUKKyAgICBlbnRpcmUgZm9ybWF0LCBvbmx5IHNvbWUgcGFydC4gIFdoaXRlc3BhY2UgYW5kIG90aGVyCisgICAgc3BlY2lhbCBjaGFyYWN0ZXJzIGNhbiBiZSBlc2NhcGVkIHVzaW5nIEMgb2N0YWwgY2hhcmFjdGVyCisgICAgZXNjYXBlIFxvb28gbm90YXRpb24sIGUuZy4gdGhlIHNwYWNlIGNoYXJhY3RlciBpcyBcMDQwLgorICAgIEFsdGVybmF0aXZlbHksIHRoZSBzdHJpbmcgY2FuIGJlIGVuY2xvc2VkIGluIGRvdWJsZSBxdW90ZQorICAgIGNoYXJhY3RlcnMgKCIpIG9yIHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzICgnKS4KKyAgICBFeGFtcGxlczoKKworICAgIGZvcm1hdCBzdmNyZG1hOgkgICAgLy8gbWFueSBvZiB0aGUgTkZTL1JETUEgc2VydmVyIHByX2RlYnVncworICAgIGZvcm1hdCByZWFkYWhlYWQJICAgIC8vIHNvbWUgcHJfZGVidWdzIGluIHRoZSByZWFkYWhlYWQgY2FjaGUKKyAgICBmb3JtYXQgbmZzZDpcMDQwU0VUQVRUUiAvLyBvbmUgd2F5IHRvIG1hdGNoIGEgZm9ybWF0IHdpdGggd2hpdGVzcGFjZQorICAgIGZvcm1hdCAibmZzZDogU0VUQVRUUiIgIC8vIGEgbmVhdGVyIHdheSB0byBtYXRjaCBhIGZvcm1hdCB3aXRoIHdoaXRlc3BhY2UKKyAgICBmb3JtYXQgJ25mc2Q6IFNFVEFUVFInICAvLyB5ZXQgYW5vdGhlciB3YXkgdG8gbWF0Y2ggYSBmb3JtYXQgd2l0aCB3aGl0ZXNwYWNlCisKK2xpbmUKKyAgICBUaGUgZ2l2ZW4gbGluZSBudW1iZXIgb3IgcmFuZ2Ugb2YgbGluZSBudW1iZXJzIGlzIGNvbXBhcmVkCisgICAgYWdhaW5zdCB0aGUgbGluZSBudW1iZXIgb2YgZWFjaCBwcl9kZWJ1ZygpIGNhbGxzaXRlLiAgQSBzaW5nbGUKKyAgICBsaW5lIG51bWJlciBtYXRjaGVzIHRoZSBjYWxsc2l0ZSBsaW5lIG51bWJlciBleGFjdGx5LiAgQQorICAgIHJhbmdlIG9mIGxpbmUgbnVtYmVycyBtYXRjaGVzIGFueSBjYWxsc2l0ZSBiZXR3ZWVuIHRoZSBmaXJzdAorICAgIGFuZCBsYXN0IGxpbmUgbnVtYmVyIGluY2x1c2l2ZS4gIEFuIGVtcHR5IGZpcnN0IG51bWJlciBtZWFucworICAgIHRoZSBmaXJzdCBsaW5lIGluIHRoZSBmaWxlLCBhbiBlbXB0eSBsaW5lIG51bWJlciBtZWFucyB0aGUKKyAgICBsYXN0IG51bWJlciBpbiB0aGUgZmlsZS4gIEV4YW1wbGVzOgorCisgICAgbGluZSAxNjAzCSAgICAvLyBleGFjdGx5IGxpbmUgMTYwMworICAgIGxpbmUgMTYwMC0xNjA1ICAvLyB0aGUgc2l4IGxpbmVzIGZyb20gbGluZSAxNjAwIHRvIGxpbmUgMTYwNQorICAgIGxpbmUgLTE2MDUJICAgIC8vIHRoZSAxNjA1IGxpbmVzIGZyb20gbGluZSAxIHRvIGxpbmUgMTYwNQorICAgIGxpbmUgMTYwMC0JICAgIC8vIGFsbCBsaW5lcyBmcm9tIGxpbmUgMTYwMCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlCisKK1RoZSBmbGFncyBzcGVjaWZpY2F0aW9uIGNvbXByaXNlcyBhIGNoYW5nZSBvcGVyYXRpb24gZm9sbG93ZWQKK2J5IG9uZSBvciBtb3JlIGZsYWcgY2hhcmFjdGVycy4gIFRoZSBjaGFuZ2Ugb3BlcmF0aW9uIGlzIG9uZQorb2YgdGhlIGNoYXJhY3RlcnM6CisKKyAgLSAgICByZW1vdmUgdGhlIGdpdmVuIGZsYWdzCisgICsgICAgYWRkIHRoZSBnaXZlbiBmbGFncworICA9ICAgIHNldCB0aGUgZmxhZ3MgdG8gdGhlIGdpdmVuIGZsYWdzCisKK1RoZSBmbGFncyBhcmU6CisKKyAgcCAgICBlbmFibGVzIHRoZSBwcl9kZWJ1ZygpIGNhbGxzaXRlLgorICBmICAgIEluY2x1ZGUgdGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIHByaW50ZWQgbWVzc2FnZQorICBsICAgIEluY2x1ZGUgbGluZSBudW1iZXIgaW4gdGhlIHByaW50ZWQgbWVzc2FnZQorICBtICAgIEluY2x1ZGUgbW9kdWxlIG5hbWUgaW4gdGhlIHByaW50ZWQgbWVzc2FnZQorICB0ICAgIEluY2x1ZGUgdGhyZWFkIElEIGluIG1lc3NhZ2VzIG5vdCBnZW5lcmF0ZWQgZnJvbSBpbnRlcnJ1cHQgY29udGV4dAorICBfICAgIE5vIGZsYWdzIGFyZSBzZXQuIChPcidkIHdpdGggb3RoZXJzIG9uIGlucHV0KQorCitGb3IgcHJpbnRfaGV4X2R1bXBfZGVidWcoKSBhbmQgcHJpbnRfaGV4X2R1bXBfYnl0ZXMoKSwgb25seSAncCcgZmxhZworaGF2ZSBtZWFuaW5nLCBvdGhlciBmbGFncyBpZ25vcmVkLgorCitGb3IgZGlzcGxheSwgdGhlIGZsYWdzIGFyZSBwcmVjZWRlZCBieSAnPScKKyhtbmVtb25pYzogd2hhdCB0aGUgZmxhZ3MgYXJlIGN1cnJlbnRseSBlcXVhbCB0bykuCisKK05vdGUgdGhlIHJlZ2V4cCBeWy0rPV1bZmxtcHRfXSskIG1hdGNoZXMgYSBmbGFncyBzcGVjaWZpY2F0aW9uLgorVG8gY2xlYXIgYWxsIGZsYWdzIGF0IG9uY2UsIHVzZSAiPV8iIG9yICItZmxtcHQiLgorCisKK0RlYnVnIG1lc3NhZ2VzIGR1cmluZyBCb290IFByb2Nlc3MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVG8gYWN0aXZhdGUgZGVidWcgbWVzc2FnZXMgZm9yIGNvcmUgY29kZSBhbmQgYnVpbHQtaW4gbW9kdWxlcyBkdXJpbmcKK3RoZSBib290IHByb2Nlc3MsIGV2ZW4gYmVmb3JlIHVzZXJzcGFjZSBhbmQgZGVidWdmcyBleGlzdHMsIHVzZQorZHluZGJnPSJRVUVSWSIsIG1vZHVsZS5keW5kYmc9IlFVRVJZIiwgb3IgZGRlYnVnX3F1ZXJ5PSJRVUVSWSIKKyhkZGVidWdfcXVlcnkgaXMgb2Jzb2xldGVkIGJ5IGR5bmRiZywgYW5kIGRlcHJlY2F0ZWQpLiAgUVVFUlkgZm9sbG93cwordGhlIHN5bnRheCBkZXNjcmliZWQgYWJvdmUsIGJ1dCBtdXN0IG5vdCBleGNlZWQgMTAyMyBjaGFyYWN0ZXJzLiAgWW91cgorYm9vdGxvYWRlciBtYXkgaW1wb3NlIGxvd2VyIGxpbWl0cy4KKworVGhlc2UgZHluZGJnIHBhcmFtcyBhcmUgcHJvY2Vzc2VkIGp1c3QgYWZ0ZXIgdGhlIGRkZWJ1ZyB0YWJsZXMgYXJlCitwcm9jZXNzZWQsIGFzIHBhcnQgb2YgdGhlIGFyY2hfaW5pdGNhbGwuICBUaHVzIHlvdSBjYW4gZW5hYmxlIGRlYnVnCittZXNzYWdlcyBpbiBhbGwgY29kZSBydW4gYWZ0ZXIgdGhpcyBhcmNoX2luaXRjYWxsIHZpYSB0aGlzIGJvb3QKK3BhcmFtZXRlci4KKworT24gYW4geDg2IHN5c3RlbSBmb3IgZXhhbXBsZSBBQ1BJIGVuYWJsZW1lbnQgaXMgYSBzdWJzeXNfaW5pdGNhbGwgYW5kCisgICBkeW5kYmc9ImZpbGUgZWMuYyArcCIKK3dpbGwgc2hvdyBlYXJseSBFbWJlZGRlZCBDb250cm9sbGVyIHRyYW5zYWN0aW9ucyBkdXJpbmcgQUNQSSBzZXR1cCBpZgoreW91ciBtYWNoaW5lICh0eXBpY2FsbHkgYSBsYXB0b3ApIGhhcyBhbiBFbWJlZGRlZCBDb250cm9sbGVyLgorUENJIChvciBvdGhlciBkZXZpY2VzKSBpbml0aWFsaXphdGlvbiBhbHNvIGlzIGEgaG90IGNhbmRpZGF0ZSBmb3IgdXNpbmcKK3RoaXMgYm9vdCBwYXJhbWV0ZXIgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KKworSWYgZm9vIG1vZHVsZSBpcyBub3QgYnVpbHQtaW4sIGZvby5keW5kYmcgd2lsbCBzdGlsbCBiZSBwcm9jZXNzZWQgYXQKK2Jvb3QgdGltZSwgd2l0aG91dCBlZmZlY3QsIGJ1dCB3aWxsIGJlIHJlcHJvY2Vzc2VkIHdoZW4gbW9kdWxlIGlzCitsb2FkZWQgbGF0ZXIuICBkeW5kYmdfcXVlcnk9IGFuZCBiYXJlIGR5bmRiZz0gYXJlIG9ubHkgcHJvY2Vzc2VkIGF0Citib290LgorCisKK0RlYnVnIE1lc3NhZ2VzIGF0IE1vZHVsZSBJbml0aWFsaXphdGlvbiBUaW1lCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitXaGVuICJtb2Rwcm9iZSBmb28iIGlzIGNhbGxlZCwgbW9kcHJvYmUgc2NhbnMgL3Byb2MvY21kbGluZSBmb3IKK2Zvby5wYXJhbXMsIHN0cmlwcyAiZm9vLiIsIGFuZCBwYXNzZXMgdGhlbSB0byB0aGUga2VybmVsIGFsb25nIHdpdGgKK3BhcmFtcyBnaXZlbiBpbiBtb2Rwcm9iZSBhcmdzIG9yIC9ldGMvbW9kcHJvYi5kLyouY29uZiBmaWxlcywKK2luIHRoZSBmb2xsb3dpbmcgb3JkZXI6CisKKzEuICMgcGFyYW1ldGVycyBnaXZlbiB2aWEgL2V0Yy9tb2Rwcm9iZS5kLyouY29uZgorICAgb3B0aW9ucyBmb28gZHluZGJnPStwdAorICAgb3B0aW9ucyBmb28gZHluZGJnICMgZGVmYXVsdHMgdG8gK3AKKworMi4gIyBmb28uZHluZGJnIGFzIGdpdmVuIGluIGJvb3QgYXJncywgImZvby4iIGlzIHN0cmlwcGVkIGFuZCBwYXNzZWQKKyAgIGZvby5keW5kYmc9IiBmdW5jIGJhciArcDsgZnVuYyBidXogK21wIgorCiszLiAjIGFyZ3MgdG8gbW9kcHJvYmUKKyAgIG1vZHByb2JlIGZvbyBkeW5kYmc9PXBtZiAjIG92ZXJyaWRlIHByZXZpb3VzIHNldHRpbmdzCisKK1RoZXNlIGR5bmRiZyBxdWVyaWVzIGFyZSBhcHBsaWVkIGluIG9yZGVyLCB3aXRoIGxhc3QgaGF2aW5nIGZpbmFsIHNheS4KK1RoaXMgYWxsb3dzIGJvb3QgYXJncyB0byBvdmVycmlkZSBvciBtb2RpZnkgdGhvc2UgZnJvbSAvZXRjL21vZHByb2JlLmQKKyhzZW5zaWJsZSwgc2luY2UgMSBpcyBzeXN0ZW0gd2lkZSwgMiBpcyBrZXJuZWwgb3IgYm9vdCBzcGVjaWZpYyksIGFuZAorbW9kcHJvYmUgYXJncyB0byBvdmVycmlkZSBib3RoLgorCitJbiB0aGUgZm9vLmR5bmRiZz0iUVVFUlkiIGZvcm0sIHRoZSBxdWVyeSBtdXN0IGV4Y2x1ZGUgIm1vZHVsZSBmb28iLgorImZvbyIgaXMgZXh0cmFjdGVkIGZyb20gdGhlIHBhcmFtLW5hbWUsIGFuZCBhcHBsaWVkIHRvIGVhY2ggcXVlcnkgaW4KKyJRVUVSWSIsIGFuZCBvbmx5IDEgbWF0Y2gtc3BlYyBvZiBlYWNoIHR5cGUgaXMgYWxsb3dlZC4KKworVGhlIGR5bmRiZyBvcHRpb24gaXMgYSAiZmFrZSIgbW9kdWxlIHBhcmFtZXRlciwgd2hpY2ggbWVhbnM6CisKKy0gbW9kdWxlcyBkbyBub3QgbmVlZCB0byBkZWZpbmUgaXQgZXhwbGljaXRseQorLSBldmVyeSBtb2R1bGUgZ2V0cyBpdCB0YWNpdGx5LCB3aGV0aGVyIHRoZXkgdXNlIHByX2RlYnVnIG9yIG5vdAorLSBpdCBkb2Vzbid0IGFwcGVhciBpbiAvc3lzL21vZHVsZS8kbW9kdWxlL3BhcmFtZXRlcnMvCisgIFRvIHNlZSBpdCwgZ3JlcCB0aGUgY29udHJvbCBmaWxlLCBvciBpbnNwZWN0IC9wcm9jL2NtZGxpbmUuCisKK0ZvciBDT05GSUdfRFlOQU1JQ19ERUJVRyBrZXJuZWxzLCBhbnkgc2V0dGluZ3MgZ2l2ZW4gYXQgYm9vdC10aW1lIChvcgorZW5hYmxlZCBieSAtRERFQlVHIGZsYWcgZHVyaW5nIGNvbXBpbGF0aW9uKSBjYW4gYmUgZGlzYWJsZWQgbGF0ZXIgdmlhCit0aGUgc3lzZnMgaW50ZXJmYWNlIGlmIHRoZSBkZWJ1ZyBtZXNzYWdlcyBhcmUgbm8gbG9uZ2VyIG5lZWRlZDoKKworICAgZWNobyAibW9kdWxlIG1vZHVsZV9uYW1lIC1wIiA+IDxkZWJ1Z2ZzPi9keW5hbWljX2RlYnVnL2NvbnRyb2wKKworRXhhbXBsZXMKKz09PT09PT09CisKKy8vIGVuYWJsZSB0aGUgbWVzc2FnZSBhdCBsaW5lIDE2MDMgb2YgZmlsZSBzdmNzb2NrLmMKK251bGxhcmJvcjp+ICMgZWNobyAtbiAnZmlsZSBzdmNzb2NrLmMgbGluZSAxNjAzICtwJyA+CisJCQkJPGRlYnVnZnM+L2R5bmFtaWNfZGVidWcvY29udHJvbAorCisvLyBlbmFibGUgYWxsIHRoZSBtZXNzYWdlcyBpbiBmaWxlIHN2Y3NvY2suYworbnVsbGFyYm9yOn4gIyBlY2hvIC1uICdmaWxlIHN2Y3NvY2suYyArcCcgPgorCQkJCTxkZWJ1Z2ZzPi9keW5hbWljX2RlYnVnL2NvbnRyb2wKKworLy8gZW5hYmxlIGFsbCB0aGUgbWVzc2FnZXMgaW4gdGhlIE5GUyBzZXJ2ZXIgbW9kdWxlCitudWxsYXJib3I6fiAjIGVjaG8gLW4gJ21vZHVsZSBuZnNkICtwJyA+CisJCQkJPGRlYnVnZnM+L2R5bmFtaWNfZGVidWcvY29udHJvbAorCisvLyBlbmFibGUgYWxsIDEyIG1lc3NhZ2VzIGluIHRoZSBmdW5jdGlvbiBzdmNfcHJvY2VzcygpCitudWxsYXJib3I6fiAjIGVjaG8gLW4gJ2Z1bmMgc3ZjX3Byb2Nlc3MgK3AnID4KKwkJCQk8ZGVidWdmcz4vZHluYW1pY19kZWJ1Zy9jb250cm9sCisKKy8vIGRpc2FibGUgYWxsIDEyIG1lc3NhZ2VzIGluIHRoZSBmdW5jdGlvbiBzdmNfcHJvY2VzcygpCitudWxsYXJib3I6fiAjIGVjaG8gLW4gJ2Z1bmMgc3ZjX3Byb2Nlc3MgLXAnID4KKwkJCQk8ZGVidWdmcz4vZHluYW1pY19kZWJ1Zy9jb250cm9sCisKKy8vIGVuYWJsZSBtZXNzYWdlcyBmb3IgTkZTIGNhbGxzIFJFQUQsIFJFQURMSU5LLCBSRUFERElSIGFuZCBSRUFERElSKy4KK251bGxhcmJvcjp+ICMgZWNobyAtbiAnZm9ybWF0ICJuZnNkOiBSRUFEIiArcCcgPgorCQkJCTxkZWJ1Z2ZzPi9keW5hbWljX2RlYnVnL2NvbnRyb2wKKworLy8gZW5hYmxlIG1lc3NhZ2VzIGluIGZpbGVzIG9mIHdoaWNoIHRoZSBwYXRocyBpbmNsdWRlIHN0cmluZyAidXNiIgorbnVsbGFyYm9yOn4gIyBlY2hvIC1uICcqdXNiKiArcCcgPiA8ZGVidWdmcz4vZHluYW1pY19kZWJ1Zy9jb250cm9sCisKKy8vIGVuYWJsZSBhbGwgbWVzc2FnZXMKK251bGxhcmJvcjp+ICMgZWNobyAtbiAnK3AnID4gPGRlYnVnZnM+L2R5bmFtaWNfZGVidWcvY29udHJvbAorCisvLyBhZGQgbW9kdWxlLCBmdW5jdGlvbiB0byBhbGwgZW5hYmxlZCBtZXNzYWdlcworbnVsbGFyYm9yOn4gIyBlY2hvIC1uICcrbWYnID4gPGRlYnVnZnM+L2R5bmFtaWNfZGVidWcvY29udHJvbAorCisvLyBib290LWFyZ3MgZXhhbXBsZSwgd2l0aCBuZXdsaW5lcyBhbmQgY29tbWVudHMgZm9yIHJlYWRhYmlsaXR5CitLZXJuZWwgY29tbWFuZCBsaW5lOiAuLi4KKyAgLy8gc2VlIHdoYXRzIGdvaW5nIG9uIGluIGR5bmRiZz12YWx1ZSBwcm9jZXNzaW5nCisgIGR5bmFtaWNfZGVidWcudmVyYm9zZT0xCisgIC8vIGVuYWJsZSBwcl9kZWJ1Z3MgaW4gMiBidWlsdGlucywgI2NtdCBpcyBzdHJpcHBlZAorICBkeW5kYmc9Im1vZHVsZSBwYXJhbXMgK3AgI2NtdCA7IG1vZHVsZSBzeXMgK3AiCisgIC8vIGVuYWJsZSBwcl9kZWJ1Z3MgaW4gMiBmdW5jdGlvbnMgaW4gYSBtb2R1bGUgbG9hZGVkIGxhdGVyCisgIHBjODczNjAuZHluZGJnPSJmdW5jIHBjODczNjBfaW5pdF9kZXZpY2UgK3A7IGZ1bmMgcGM4NzM2MF9maW5kICtwIgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9lYXJseS11c2Vyc3BhY2UvUkVBRE1FIGIvRG9jdW1lbnRhdGlvbi9lYXJseS11c2Vyc3BhY2UvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzZTYzYTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Vhcmx5LXVzZXJzcGFjZS9SRUFETUUKQEAgLTAsMCArMSwxNTEgQEAKK0Vhcmx5IHVzZXJzcGFjZSBzdXBwb3J0Cis9PT09PT09PT09PT09PT09PT09PT09PQorCitMYXN0IHVwZGF0ZTogMjAwNC0xMi0yMCB0bGgKKworCisiRWFybHkgdXNlcnNwYWNlIiBpcyBhIHNldCBvZiBsaWJyYXJpZXMgYW5kIHByb2dyYW1zIHRoYXQgcHJvdmlkZQordmFyaW91cyBwaWVjZXMgb2YgZnVuY3Rpb25hbGl0eSB0aGF0IGFyZSBpbXBvcnRhbnQgZW5vdWdoIHRvIGJlCithdmFpbGFibGUgd2hpbGUgYSBMaW51eCBrZXJuZWwgaXMgY29taW5nIHVwLCBidXQgdGhhdCBkb24ndCBuZWVkIHRvIGJlCitydW4gaW5zaWRlIHRoZSBrZXJuZWwgaXRzZWxmLgorCitJdCBjb25zaXN0cyBvZiBzZXZlcmFsIG1ham9yIGluZnJhc3RydWN0dXJlIGNvbXBvbmVudHM6CisKKy0gZ2VuX2luaXRfY3BpbywgYSBwcm9ncmFtIHRoYXQgYnVpbGRzIGEgY3Bpby1mb3JtYXQgYXJjaGl2ZQorICBjb250YWluaW5nIGEgcm9vdCBmaWxlc3lzdGVtIGltYWdlLiAgVGhpcyBhcmNoaXZlIGlzIGNvbXByZXNzZWQsIGFuZAorICB0aGUgY29tcHJlc3NlZCBpbWFnZSBpcyBsaW5rZWQgaW50byB0aGUga2VybmVsIGltYWdlLgorLSBpbml0cmFtZnMsIGEgY2h1bmsgb2YgY29kZSB0aGF0IHVucGFja3MgdGhlIGNvbXByZXNzZWQgY3BpbyBpbWFnZQorICBtaWR3YXkgdGhyb3VnaCB0aGUga2VybmVsIGJvb3QgcHJvY2Vzcy4KKy0ga2xpYmMsIGEgdXNlcnNwYWNlIEMgbGlicmFyeSwgY3VycmVudGx5IHBhY2thZ2VkIHNlcGFyYXRlbHksIHRoYXQgaXMKKyAgb3B0aW1pemVkIGZvciBjb3JyZWN0bmVzcyBhbmQgc21hbGwgc2l6ZS4KKworVGhlIGNwaW8gZmlsZSBmb3JtYXQgdXNlZCBieSBpbml0cmFtZnMgaXMgdGhlICJuZXdjIiAoYWthICJjcGlvIC1IIG5ld2MiKQorZm9ybWF0LCBhbmQgaXMgZG9jdW1lbnRlZCBpbiB0aGUgZmlsZSAiYnVmZmVyLWZvcm1hdC50eHQiLiAgVGhlcmUgYXJlCit0d28gd2F5cyB0byBhZGQgYW4gZWFybHkgdXNlcnNwYWNlIGltYWdlOiBzcGVjaWZ5IGFuIGV4aXN0aW5nIGNwaW8KK2FyY2hpdmUgdG8gYmUgdXNlZCBhcyB0aGUgaW1hZ2Ugb3IgaGF2ZSB0aGUga2VybmVsIGJ1aWxkIHByb2Nlc3MgYnVpbGQKK3RoZSBpbWFnZSBmcm9tIHNwZWNpZmljYXRpb25zLgorCitDUElPIEFSQ0hJVkUgbWV0aG9kCisKK1lvdSBjYW4gY3JlYXRlIGEgY3BpbyBhcmNoaXZlIHRoYXQgY29udGFpbnMgdGhlIGVhcmx5IHVzZXJzcGFjZSBpbWFnZS4KK1lvdXIgY3BpbyBhcmNoaXZlIHNob3VsZCBiZSBzcGVjaWZpZWQgaW4gQ09ORklHX0lOSVRSQU1GU19TT1VSQ0UgYW5kIGl0Cit3aWxsIGJlIHVzZWQgZGlyZWN0bHkuICBPbmx5IGEgc2luZ2xlIGNwaW8gZmlsZSBtYXkgYmUgc3BlY2lmaWVkIGluCitDT05GSUdfSU5JVFJBTUZTX1NPVVJDRSBhbmQgZGlyZWN0b3J5IGFuZCBmaWxlIG5hbWVzIGFyZSBub3QgYWxsb3dlZCBpbgorY29tYmluYXRpb24gd2l0aCBhIGNwaW8gYXJjaGl2ZS4KKworSU1BR0UgQlVJTERJTkcgbWV0aG9kCisKK1RoZSBrZXJuZWwgYnVpbGQgcHJvY2VzcyBjYW4gYWxzbyBidWlsZCBhbiBlYXJseSB1c2Vyc3BhY2UgaW1hZ2UgZnJvbQorc291cmNlIHBhcnRzIHJhdGhlciB0aGFuIHN1cHBseWluZyBhIGNwaW8gYXJjaGl2ZS4gIFRoaXMgbWV0aG9kIHByb3ZpZGVzCithIHdheSB0byBjcmVhdGUgaW1hZ2VzIHdpdGggcm9vdC1vd25lZCBmaWxlcyBldmVuIHRob3VnaCB0aGUgaW1hZ2Ugd2FzCitidWlsdCBieSBhbiB1bnByaXZpbGVnZWQgdXNlci4KKworVGhlIGltYWdlIGlzIHNwZWNpZmllZCBhcyBvbmUgb3IgbW9yZSBzb3VyY2VzIGluCitDT05GSUdfSU5JVFJBTUZTX1NPVVJDRS4gIFNvdXJjZXMgY2FuIGJlIGVpdGhlciBkaXJlY3RvcmllcyBvciBmaWxlcyAtCitjcGlvIGFyY2hpdmVzIGFyZSAqbm90KiBhbGxvd2VkIHdoZW4gYnVpbGRpbmcgZnJvbSBzb3VyY2VzLgorCitBIHNvdXJjZSBkaXJlY3Rvcnkgd2lsbCBoYXZlIGl0IGFuZCBhbGwgb2YgaXRzIGNvbnRlbnRzIHBhY2thZ2VkLiAgVGhlCitzcGVjaWZpZWQgZGlyZWN0b3J5IG5hbWUgd2lsbCBiZSBtYXBwZWQgdG8gJy8nLiAgV2hlbiBwYWNrYWdpbmcgYQorZGlyZWN0b3J5LCBsaW1pdGVkIHVzZXIgYW5kIGdyb3VwIElEIHRyYW5zbGF0aW9uIGNhbiBiZSBwZXJmb3JtZWQuCitJTklUUkFNRlNfUk9PVF9VSUQgY2FuIGJlIHNldCB0byBhIHVzZXIgSUQgdGhhdCBuZWVkcyB0byBiZSBtYXBwZWQgdG8KK3VzZXIgcm9vdCAoMCkuICBJTklUUkFNRlNfUk9PVF9HSUQgY2FuIGJlIHNldCB0byBhIGdyb3VwIElEIHRoYXQgbmVlZHMKK3RvIGJlIG1hcHBlZCB0byBncm91cCByb290ICgwKS4KKworQSBzb3VyY2UgZmlsZSBtdXN0IGJlIGRpcmVjdGl2ZXMgaW4gdGhlIGZvcm1hdCByZXF1aXJlZCBieSB0aGUKK3Vzci9nZW5faW5pdF9jcGlvIHV0aWxpdHkgKHJ1biAndXNyL2dlbl9pbml0X2NwaW8gLS1oZWxwJyB0byBnZXQgdGhlCitmaWxlIGZvcm1hdCkuICBUaGUgZGlyZWN0aXZlcyBpbiB0aGUgZmlsZSB3aWxsIGJlIHBhc3NlZCBkaXJlY3RseSB0bwordXNyL2dlbl9pbml0X2NwaW8uCisKK1doZW4gYSBjb21iaW5hdGlvbiBvZiBkaXJlY3RvcmllcyBhbmQgZmlsZXMgYXJlIHNwZWNpZmllZCB0aGVuIHRoZQoraW5pdHJhbWZzIGltYWdlIHdpbGwgYmUgYW4gYWdncmVnYXRlIG9mIGFsbCBvZiB0aGVtLiAgSW4gdGhpcyB3YXkgYSB1c2VyCitjYW4gY3JlYXRlIGEgJ3Jvb3QtaW1hZ2UnIGRpcmVjdG9yeSBhbmQgaW5zdGFsbCBhbGwgZmlsZXMgaW50byBpdC4KK0JlY2F1c2UgZGV2aWNlLXNwZWNpYWwgZmlsZXMgY2Fubm90IGJlIGNyZWF0ZWQgYnkgYSB1bnByaXZpbGVnZWQgdXNlciwKK3NwZWNpYWwgZmlsZXMgY2FuIGJlIGxpc3RlZCBpbiBhICdyb290LWZpbGVzJyBmaWxlLiAgQm90aCAncm9vdC1pbWFnZScKK2FuZCAncm9vdC1maWxlcycgY2FuIGJlIGxpc3RlZCBpbiBDT05GSUdfSU5JVFJBTUZTX1NPVVJDRSBhbmQgYSBjb21wbGV0ZQorZWFybHkgdXNlcnNwYWNlIGltYWdlIGNhbiBiZSBidWlsdCBieSBhbiB1bnByaXZpbGVnZWQgdXNlci4KKworQXMgYSB0ZWNobmljYWwgbm90ZSwgd2hlbiBkaXJlY3RvcmllcyBhbmQgZmlsZXMgYXJlIHNwZWNpZmllZCwgdGhlCitlbnRpcmUgQ09ORklHX0lOSVRSQU1GU19TT1VSQ0UgaXMgcGFzc2VkIHRvCitzY3JpcHRzL2dlbl9pbml0cmFtZnNfbGlzdC5zaC4gIFRoaXMgbWVhbnMgdGhhdCBDT05GSUdfSU5JVFJBTUZTX1NPVVJDRQorY2FuIHJlYWxseSBiZSBpbnRlcnByZXRlZCBhcyBhbnkgbGVnYWwgYXJndW1lbnQgdG8KK2dlbl9pbml0cmFtZnNfbGlzdC5zaC4gIElmIGEgZGlyZWN0b3J5IGlzIHNwZWNpZmllZCBhcyBhbiBhcmd1bWVudCB0aGVuCit0aGUgY29udGVudHMgYXJlIHNjYW5uZWQsIHVpZC9naWQgdHJhbnNsYXRpb24gaXMgcGVyZm9ybWVkLCBhbmQKK3Vzci9nZW5faW5pdF9jcGlvIGZpbGUgZGlyZWN0aXZlcyBhcmUgb3V0cHV0LiAgSWYgYSBkaXJlY3RvcnkgaXMKK3NwZWNpZmllZCBhcyBhbiBhcmd1bWVudCB0byBzY3JpcHRzL2dlbl9pbml0cmFtZnNfbGlzdC5zaCB0aGVuIHRoZQorY29udGVudHMgb2YgdGhlIGZpbGUgYXJlIHNpbXBseSBjb3BpZWQgdG8gdGhlIG91dHB1dC4gIEFsbCBvZiB0aGUgb3V0cHV0CitkaXJlY3RpdmVzIGZyb20gZGlyZWN0b3J5IHNjYW5uaW5nIGFuZCBmaWxlIGNvbnRlbnRzIGNvcHlpbmcgYXJlCitwcm9jZXNzZWQgYnkgdXNyL2dlbl9pbml0X2NwaW8uCisKK1NlZSBhbHNvICdzY3JpcHRzL2dlbl9pbml0cmFtZnNfbGlzdC5zaCAtaCcuCisKK1doZXJlJ3MgdGhpcyBhbGwgbGVhZGluZz8KKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGtsaWJjIGRpc3RyaWJ1dGlvbiBjb250YWlucyBzb21lIG9mIHRoZSBuZWNlc3Nhcnkgc29mdHdhcmUgdG8gbWFrZQorZWFybHkgdXNlcnNwYWNlIHVzZWZ1bC4gIFRoZSBrbGliYyBkaXN0cmlidXRpb24gaXMgY3VycmVudGx5CittYWludGFpbmVkIHNlcGFyYXRlbHkgZnJvbSB0aGUga2VybmVsLgorCitZb3UgY2FuIG9idGFpbiBzb21ld2hhdCBpbmZyZXF1ZW50IHNuYXBzaG90cyBvZiBrbGliYyBmcm9tCitmdHA6Ly9mdHAua2VybmVsLm9yZy9wdWIvbGludXgvbGlicy9rbGliYy8KKworRm9yIGFjdGl2ZSB1c2VycywgeW91IGFyZSBiZXR0ZXIgb2ZmIHVzaW5nIHRoZSBrbGliYyBnaXQKK3JlcG9zaXRvcnksIGF0IGh0dHA6Ly9naXQua2VybmVsLm9yZy8/cD1saWJzL2tsaWJjL2tsaWJjLmdpdAorCitUaGUgc3RhbmRhbG9uZSBrbGliYyBkaXN0cmlidXRpb24gY3VycmVudGx5IHByb3ZpZGVzIHRocmVlIGNvbXBvbmVudHMsCitpbiBhZGRpdGlvbiB0byB0aGUga2xpYmMgbGlicmFyeToKKworLSBpcGNvbmZpZywgYSBwcm9ncmFtIHRoYXQgY29uZmlndXJlcyBuZXR3b3JrIGludGVyZmFjZXMuICBJdCBjYW4KKyAgY29uZmlndXJlIHRoZW0gc3RhdGljYWxseSwgb3IgdXNlIERIQ1AgdG8gb2J0YWluIGluZm9ybWF0aW9uCisgIGR5bmFtaWNhbGx5IChha2EgIklQIGF1dG9jb25maWd1cmF0aW9uIikuCistIG5mc21vdW50LCBhIHByb2dyYW0gdGhhdCBjYW4gbW91bnQgYW4gTkZTIGZpbGVzeXN0ZW0uCistIGtpbml0LCB0aGUgImdsdWUiIHRoYXQgdXNlcyBpcGNvbmZpZyBhbmQgbmZzbW91bnQgdG8gcmVwbGFjZSB0aGUgb2xkCisgIHN1cHBvcnQgZm9yIElQIGF1dG9jb25maWcsIG1vdW50IGEgZmlsZXN5c3RlbSBvdmVyIE5GUywgYW5kIGNvbnRpbnVlCisgIHN5c3RlbSBib290IHVzaW5nIHRoYXQgZmlsZXN5c3RlbSBhcyByb290LgorCitraW5pdCBpcyBidWlsdCBhcyBhIHNpbmdsZSBzdGF0aWNhbGx5IGxpbmtlZCBiaW5hcnkgdG8gc2F2ZSBzcGFjZS4KKworRXZlbnR1YWxseSwgc2V2ZXJhbCBtb3JlIGNodW5rcyBvZiBrZXJuZWwgZnVuY3Rpb25hbGl0eSB3aWxsIGhvcGVmdWxseQorbW92ZSB0byBlYXJseSB1c2Vyc3BhY2U6CisKKy0gQWxtb3N0IGFsbCBvZiBpbml0L2RvX21vdW50cyogKHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBpcyBhbHJlYWR5IGluCisgIHBsYWNlKQorLSBBQ1BJIHRhYmxlIHBhcnNpbmcKKy0gSW5zZXJ0IHVud2llbGR5IHN1YnN5c3RlbSB0aGF0IGRvZXNuJ3QgcmVhbGx5IG5lZWQgdG8gYmUgaW4ga2VybmVsCisgIHNwYWNlIGhlcmUKKworSWYga2luaXQgZG9lc24ndCBtZWV0IHlvdXIgY3VycmVudCBuZWVkcyBhbmQgeW91J3ZlIGdvdCBieXRlcyB0byBidXJuLAordGhlIGtsaWJjIGRpc3RyaWJ1dGlvbiBpbmNsdWRlcyBhIHNtYWxsIEJvdXJuZS1jb21wYXRpYmxlIHNoZWxsIChhc2gpCithbmQgYSBudW1iZXIgb2Ygb3RoZXIgdXRpbGl0aWVzLCBzbyB5b3UgY2FuIHJlcGxhY2Uga2luaXQgYW5kIGJ1aWxkCitjdXN0b20gaW5pdHJhbWZzIGltYWdlcyB0aGF0IG1lZXQgeW91ciBuZWVkcyBleGFjdGx5LgorCitGb3IgcXVlc3Rpb25zIGFuZCBoZWxwLCB5b3UgY2FuIHNpZ24gdXAgZm9yIHRoZSBlYXJseSB1c2Vyc3BhY2UKK21haWxpbmcgbGlzdCBhdCBodHRwOi8vd3d3Lnp5dG9yLmNvbS9tYWlsbWFuL2xpc3RpbmZvL2tsaWJjCisKK0hvdyBkb2VzIGl0IHdvcms/Cis9PT09PT09PT09PT09PT09PQorCitUaGUga2VybmVsIGhhcyBjdXJyZW50bHkgMyB3YXlzIHRvIG1vdW50IHRoZSByb290IGZpbGVzeXN0ZW06CisKK2EpIGFsbCByZXF1aXJlZCBkZXZpY2UgYW5kIGZpbGVzeXN0ZW0gZHJpdmVycyBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwsIG5vCisgICBpbml0cmQuICBpbml0L21haW4uYzppbml0KCkgd2lsbCBjYWxsIHByZXBhcmVfbmFtZXNwYWNlKCkgdG8gbW91bnQgdGhlCisgICBmaW5hbCByb290IGZpbGVzeXN0ZW0sIGJhc2VkIG9uIHRoZSByb290PSBvcHRpb24gYW5kIG9wdGlvbmFsIGluaXQ9IHRvIHJ1bgorICAgc29tZSBvdGhlciBpbml0IGJpbmFyeSB0aGFuIGxpc3RlZCBhdCB0aGUgZW5kIG9mIGluaXQvbWFpbi5jOmluaXQoKS4KKworYikgc29tZSBkZXZpY2UgYW5kIGZpbGVzeXN0ZW0gZHJpdmVycyBidWlsdCBhcyBtb2R1bGVzIGFuZCBzdG9yZWQgaW4gYW4KKyAgIGluaXRyZC4gIFRoZSBpbml0cmQgbXVzdCBjb250YWluIGEgYmluYXJ5ICcvbGludXhyYycgd2hpY2ggaXMgc3VwcG9zZWQgdG8KKyAgIGxvYWQgdGhlc2UgZHJpdmVyIG1vZHVsZXMuICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIG1vdW50IHRoZSBmaW5hbCByb290CisgICBmaWxlc3lzdGVtIHZpYSBsaW51eHJjIGFuZCB1c2UgdGhlIHBpdm90X3Jvb3Qgc3lzY2FsbC4gIFRoZSBpbml0cmQgaXMKKyAgIG1vdW50ZWQgYW5kIGV4ZWN1dGVkIHZpYSBwcmVwYXJlX25hbWVzcGFjZSgpLgorCitjKSB1c2luZyBpbml0cmFtZnMuICBUaGUgY2FsbCB0byBwcmVwYXJlX25hbWVzcGFjZSgpIG11c3QgYmUgc2tpcHBlZC4KKyAgIFRoaXMgbWVhbnMgdGhhdCBhIGJpbmFyeSBtdXN0IGRvIGFsbCB0aGUgd29yay4gIFNhaWQgYmluYXJ5IGNhbiBiZSBzdG9yZWQKKyAgIGludG8gaW5pdHJhbWZzIGVpdGhlciB2aWEgbW9kaWZ5aW5nIHVzci9nZW5faW5pdF9jcGlvLmMgb3IgdmlhIHRoZSBuZXcKKyAgIGluaXRyZCBmb3JtYXQsIGFuIGNwaW8gYXJjaGl2ZS4gIEl0IG11c3QgYmUgY2FsbGVkICIvaW5pdCIuICBUaGlzIGJpbmFyeQorICAgaXMgcmVzcG9uc2libGUgdG8gZG8gYWxsIHRoZSB0aGluZ3MgcHJlcGFyZV9uYW1lc3BhY2UoKSB3b3VsZCBkby4KKworICAgVG8gbWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHRoZSAvaW5pdCBiaW5hcnkgd2lsbCBvbmx5IHJ1biBpZiBpdAorICAgY29tZXMgdmlhIGFuIGluaXRyYW1mcyBjcGlvIGFyY2hpdmUuICBJZiB0aGlzIGlzIG5vdCB0aGUgY2FzZSwKKyAgIGluaXQvbWFpbi5jOmluaXQoKSB3aWxsIHJ1biBwcmVwYXJlX25hbWVzcGFjZSgpIHRvIG1vdW50IHRoZSBmaW5hbCByb290CisgICBhbmQgZXhlYyBvbmUgb2YgdGhlIHByZWRlZmluZWQgaW5pdCBiaW5hcmllcy4KKworQnJ5YW4gTydTdWxsaXZhbiA8Ym9zQHNlcnBlbnRpbmUuY29tPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9lYXJseS11c2Vyc3BhY2UvYnVmZmVyLWZvcm1hdC50eHQgYi9Eb2N1bWVudGF0aW9uL2Vhcmx5LXVzZXJzcGFjZS9idWZmZXItZm9ybWF0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWZkN2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9lYXJseS11c2Vyc3BhY2UvYnVmZmVyLWZvcm1hdC50eHQKQEAgLTAsMCArMSwxMTIgQEAKKwkJICAgICAgIGluaXRyYW1mcyBidWZmZXIgZm9ybWF0CisJCSAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJCSAgICAgICBBbCBWaXJvLCBILiBQZXRlciBBbnZpbgorCQkgICAgICBMYXN0IHJldmlzaW9uOiAyMDAyLTAxLTEzCisKK1N0YXJ0aW5nIHdpdGgga2VybmVsIDIuNS54LCB0aGUgb2xkICJpbml0aWFsIHJhbWRpc2siIHByb3RvY29sIGlzCitnZXR0aW5nIHtyZXBsYWNlZC9jb21wbGVtZW50ZWR9IHdpdGggdGhlIG5ldyAiaW5pdGlhbCByYW1mcyIKKyhpbml0cmFtZnMpIHByb3RvY29sLiAgVGhlIGluaXRyYW1mcyBjb250ZW50cyBpcyBwYXNzZWQgdXNpbmcgdGhlIHNhbWUKK21lbW9yeSBidWZmZXIgcHJvdG9jb2wgdXNlZCBieSB0aGUgaW5pdHJkIHByb3RvY29sLCBidXQgdGhlIGNvbnRlbnRzCitpcyBkaWZmZXJlbnQuICBUaGUgaW5pdHJhbWZzIGJ1ZmZlciBjb250YWlucyBhbiBhcmNoaXZlIHdoaWNoIGlzCitleHBhbmRlZCBpbnRvIGEgcmFtZnMgZmlsZXN5c3RlbTsgdGhpcyBkb2N1bWVudCBkZXRhaWxzIHRoZSBmb3JtYXQgb2YKK3RoZSBpbml0cmFtZnMgYnVmZmVyIGZvcm1hdC4KKworVGhlIGluaXRyYW1mcyBidWZmZXIgZm9ybWF0IGlzIGJhc2VkIGFyb3VuZCB0aGUgIm5ld2MiIG9yICJjcmMiIENQSU8KK2Zvcm1hdHMsIGFuZCBjYW4gYmUgY3JlYXRlZCB3aXRoIHRoZSBjcGlvKDEpIHV0aWxpdHkuICBUaGUgY3BpbworYXJjaGl2ZSBjYW4gYmUgY29tcHJlc3NlZCB1c2luZyBnemlwKDEpLiAgT25lIHZhbGlkIHZlcnNpb24gb2YgYW4KK2luaXRyYW1mcyBidWZmZXIgaXMgdGh1cyBhIHNpbmdsZSAuY3Bpby5neiBmaWxlLgorCitUaGUgZnVsbCBmb3JtYXQgb2YgdGhlIGluaXRyYW1mcyBidWZmZXIgaXMgZGVmaW5lZCBieSB0aGUgZm9sbG93aW5nCitncmFtbWFyLCB3aGVyZToKKwkqCWlzIHVzZWQgdG8gaW5kaWNhdGUgIjAgb3IgbW9yZSBvY2N1cnJlbmNlcyBvZiIKKwkofCkJaW5kaWNhdGVzIGFsdGVybmF0aXZlcworCSsJaW5kaWNhdGVzIGNvbmNhdGVuYXRpb24KKwlHWklQKCkJaW5kaWNhdGVzIHRoZSBnemlwKDEpIG9mIHRoZSBvcGVyYW5kCisJQUxHTihuKQltZWFucyBwYWRkaW5nIHdpdGggbnVsbCBieXRlcyB0byBhbiBuLWJ5dGUgYm91bmRhcnkKKworCWluaXRyYW1mcyAgOj0gKCJcMCIgfCBjcGlvX2FyY2hpdmUgfCBjcGlvX2d6aXBfYXJjaGl2ZSkqCisKKwljcGlvX2d6aXBfYXJjaGl2ZSA6PSBHWklQKGNwaW9fYXJjaGl2ZSkKKworCWNwaW9fYXJjaGl2ZSA6PSBjcGlvX2ZpbGUqICsgKDxub3RoaW5nPiB8IGNwaW9fdHJhaWxlcikKKworCWNwaW9fZmlsZSA6PSBBTEdOKDQpICsgY3Bpb19oZWFkZXIgKyBmaWxlbmFtZSArICJcMCIgKyBBTEdOKDQpICsgZGF0YQorCisJY3Bpb190cmFpbGVyIDo9IEFMR04oNCkgKyBjcGlvX2hlYWRlciArICJUUkFJTEVSISEhXDAiICsgQUxHTig0KQorCisKK0luIGh1bWFuIHRlcm1zLCB0aGUgaW5pdHJhbWZzIGJ1ZmZlciBjb250YWlucyBhIGNvbGxlY3Rpb24gb2YKK2NvbXByZXNzZWQgYW5kL29yIHVuY29tcHJlc3NlZCBjcGlvIGFyY2hpdmVzIChpbiB0aGUgIm5ld2MiIG9yICJjcmMiCitmb3JtYXRzKTsgYXJiaXRyYXJ5IGFtb3VudHMgemVybyBieXRlcyAoZm9yIHBhZGRpbmcpIGNhbiBiZSBhZGRlZAorYmV0d2VlbiBtZW1iZXJzLgorCitUaGUgY3BpbyAiVFJBSUxFUiEhISIgZW50cnkgKGNwaW8gZW5kLW9mLWFyY2hpdmUpIGlzIG9wdGlvbmFsLCBidXQgaXMKK25vdCBpZ25vcmVkOyBzZWUgImhhbmRsaW5nIG9mIGhhcmQgbGlua3MiIGJlbG93LgorCitUaGUgc3RydWN0dXJlIG9mIHRoZSBjcGlvX2hlYWRlciBpcyBhcyBmb2xsb3dzIChhbGwgZmllbGRzIGNvbnRhaW4KK2hleGFkZWNpbWFsIEFTQ0lJIG51bWJlcnMgZnVsbHkgcGFkZGVkIHdpdGggJzAnIG9uIHRoZSBsZWZ0IHRvIHRoZQorZnVsbCB3aWR0aCBvZiB0aGUgZmllbGQsIGZvciBleGFtcGxlLCB0aGUgaW50ZWdlciA0NzgwIGlzIHJlcHJlc2VudGVkCitieSB0aGUgQVNDSUkgc3RyaW5nICIwMDAwMTJhYyIpOgorCitGaWVsZCBuYW1lICAgIEZpZWxkIHNpemUJIE1lYW5pbmcKK2NfbWFnaWMJICAgICAgNiBieXRlcwkJIFRoZSBzdHJpbmcgIjA3MDcwMSIgb3IgIjA3MDcwMiIKK2NfaW5vCSAgICAgIDggYnl0ZXMJCSBGaWxlIGlub2RlIG51bWJlcgorY19tb2RlCSAgICAgIDggYnl0ZXMJCSBGaWxlIG1vZGUgYW5kIHBlcm1pc3Npb25zCitjX3VpZAkgICAgICA4IGJ5dGVzCQkgRmlsZSB1aWQKK2NfZ2lkCSAgICAgIDggYnl0ZXMJCSBGaWxlIGdpZAorY19ubGluawkgICAgICA4IGJ5dGVzCQkgTnVtYmVyIG9mIGxpbmtzCitjX210aW1lCSAgICAgIDggYnl0ZXMJCSBNb2RpZmljYXRpb24gdGltZQorY19maWxlc2l6ZSAgICA4IGJ5dGVzCQkgU2l6ZSBvZiBkYXRhIGZpZWxkCitjX21hagkgICAgICA4IGJ5dGVzCQkgTWFqb3IgcGFydCBvZiBmaWxlIGRldmljZSBudW1iZXIKK2NfbWluCSAgICAgIDggYnl0ZXMJCSBNaW5vciBwYXJ0IG9mIGZpbGUgZGV2aWNlIG51bWJlcgorY19ybWFqCSAgICAgIDggYnl0ZXMJCSBNYWpvciBwYXJ0IG9mIGRldmljZSBub2RlIHJlZmVyZW5jZQorY19ybWluCSAgICAgIDggYnl0ZXMJCSBNaW5vciBwYXJ0IG9mIGRldmljZSBub2RlIHJlZmVyZW5jZQorY19uYW1lc2l6ZSAgICA4IGJ5dGVzCQkgTGVuZ3RoIG9mIGZpbGVuYW1lLCBpbmNsdWRpbmcgZmluYWwgXDAKK2NfY2hrc3VtICAgICAgOCBieXRlcwkJIENoZWNrc3VtIG9mIGRhdGEgZmllbGQgaWYgY19tYWdpYyBpcyAwNzA3MDI7CisJCQkJIG90aGVyd2lzZSB6ZXJvCisKK1RoZSBjX21vZGUgZmllbGQgbWF0Y2hlcyB0aGUgY29udGVudHMgb2Ygc3RfbW9kZSByZXR1cm5lZCBieSBzdGF0KDIpCitvbiBMaW51eCwgYW5kIGVuY29kZXMgdGhlIGZpbGUgdHlwZSBhbmQgZmlsZSBwZXJtaXNzaW9ucy4KKworVGhlIGNfZmlsZXNpemUgc2hvdWxkIGJlIHplcm8gZm9yIGFueSBmaWxlIHdoaWNoIGlzIG5vdCBhIHJlZ3VsYXIgZmlsZQorb3Igc3ltbGluay4KKworVGhlIGNfY2hrc3VtIGZpZWxkIGNvbnRhaW5zIGEgc2ltcGxlIDMyLWJpdCB1bnNpZ25lZCBzdW0gb2YgYWxsIHRoZQorYnl0ZXMgaW4gdGhlIGRhdGEgZmllbGQuICBjcGlvKDEpIHJlZmVycyB0byB0aGlzIGFzICJjcmMiLCB3aGljaCBpcworY2xlYXJseSBpbmNvcnJlY3QgKGEgY3ljbGljIHJlZHVuZGFuY3kgY2hlY2sgaXMgYSBkaWZmZXJlbnQgYW5kCitzaWduaWZpY2FudGx5IHN0cm9uZ2VyIGludGVncml0eSBjaGVjayksIGhvd2V2ZXIsIHRoaXMgaXMgdGhlCithbGdvcml0aG0gdXNlZC4KKworSWYgdGhlIGZpbGVuYW1lIGlzICJUUkFJTEVSISEhIiB0aGlzIGlzIGFjdHVhbGx5IGFuIGVuZC1vZi1hcmNoaXZlCittYXJrZXI7IHRoZSBjX2ZpbGVzaXplIGZvciBhbiBlbmQtb2YtYXJjaGl2ZSBtYXJrZXIgbXVzdCBiZSB6ZXJvLgorCisKKyoqKiBIYW5kbGluZyBvZiBoYXJkIGxpbmtzCisKK1doZW4gYSBub25kaXJlY3Rvcnkgd2l0aCBjX25saW5rID4gMSBpcyBzZWVuLCB0aGUgKGNfbWFqLGNfbWluLGNfaW5vKQordHVwbGUgaXMgbG9va2VkIHVwIGluIGEgdHVwbGUgYnVmZmVyLiAgSWYgbm90IGZvdW5kLCBpdCBpcyBlbnRlcmVkIGluCit0aGUgdHVwbGUgYnVmZmVyIGFuZCB0aGUgZW50cnkgaXMgY3JlYXRlZCBhcyB1c3VhbDsgaWYgZm91bmQsIGEgaGFyZAorbGluayByYXRoZXIgdGhhbiBhIHNlY29uZCBjb3B5IG9mIHRoZSBmaWxlIGlzIGNyZWF0ZWQuICBJdCBpcyBub3QKK25lY2Vzc2FyeSAoYnV0IHBlcm1pdHRlZCkgdG8gaW5jbHVkZSBhIHNlY29uZCBjb3B5IG9mIHRoZSBmaWxlCitjb250ZW50czsgaWYgdGhlIGZpbGUgY29udGVudHMgaXMgbm90IGluY2x1ZGVkLCB0aGUgY19maWxlc2l6ZSBmaWVsZAorc2hvdWxkIGJlIHNldCB0byB6ZXJvIHRvIGluZGljYXRlIG5vIGRhdGEgc2VjdGlvbiBmb2xsb3dzLiAgSWYgZGF0YSBpcworcHJlc2VudCwgdGhlIHByZXZpb3VzIGluc3RhbmNlIG9mIHRoZSBmaWxlIGlzIG92ZXJ3cml0dGVuOyB0aGlzIGFsbG93cwordGhlIGRhdGEtY2FycnlpbmcgaW5zdGFuY2Ugb2YgYSBmaWxlIHRvIG9jY3VyIGFueXdoZXJlIGluIHRoZSBzZXF1ZW5jZQorKEdOVSBjcGlvIGlzIHJlcG9ydGVkIHRvIGF0dGFjaCB0aGUgZGF0YSB0byB0aGUgbGFzdCBpbnN0YW5jZSBvZiBhCitmaWxlIG9ubHkuKQorCitjX2ZpbGVzaXplIG11c3Qgbm90IGJlIHplcm8gZm9yIGEgc3ltbGluay4KKworV2hlbiBhICJUUkFJTEVSISEhIiBlbmQtb2YtYXJjaGl2ZSBtYXJrZXIgaXMgc2VlbiwgdGhlIHR1cGxlIGJ1ZmZlciBpcworcmVzZXQuICBUaGlzIHBlcm1pdHMgYXJjaGl2ZXMgd2hpY2ggYXJlIGdlbmVyYXRlZCBpbmRlcGVuZGVudGx5IHRvIGJlCitjb25jYXRlbmF0ZWQuCisKK1RvIGNvbWJpbmUgZmlsZSBkYXRhIGZyb20gZGlmZmVyZW50IHNvdXJjZXMgKHdpdGhvdXQgaGF2aW5nIHRvCityZWdlbmVyYXRlIHRoZSAoY19tYWosY19taW4sY19pbm8pIGZpZWxkcyksIHRoZXJlZm9yZSwgZWl0aGVyIG9uZSBvZgordGhlIGZvbGxvd2luZyB0ZWNobmlxdWVzIGNhbiBiZSB1c2VkOgorCithKSBTZXBhcmF0ZSB0aGUgZGlmZmVyZW50IGZpbGUgZGF0YSBzb3VyY2VzIHdpdGggYSAiVFJBSUxFUiEhISIKKyAgIGVuZC1vZi1hcmNoaXZlIG1hcmtlciwgb3IKKworYikgTWFrZSBzdXJlIGNfbmxpbmsgPT0gMSBmb3IgYWxsIG5vbmRpcmVjdG9yeSBlbnRyaWVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9lZGFjLnR4dCBiL0RvY3VtZW50YXRpb24vZWRhYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA4NDFhMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZWRhYy50eHQKQEAgLTAsMCArMSw4MDggQEAKK0VEQUMgLSBFcnJvciBEZXRlY3Rpb24gQW5kIENvcnJlY3Rpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworImJsdWVzbW9rZSIgd2FzIHRoZSBuYW1lIGZvciB0aGlzIGRldmljZSBkcml2ZXIgd2hlbiBpdCB3YXMgIm91dC1vZi10cmVlIgorYW5kIG1haW50YWluZWQgYXQgc291cmNlZm9yZ2UubmV0LiAgV2hlbiBpdCB3YXMgcHVzaGVkIGludG8gMi42LjE2IGZvciB0aGUKK2ZpcnN0IHRpbWUsIGl0IHdhcyByZW5hbWVkIHRvICdFREFDJy4KKworUFVSUE9TRQorLS0tLS0tLQorCitUaGUgJ2VkYWMnIGtlcm5lbCBtb2R1bGUncyBnb2FsIGlzIHRvIGRldGVjdCBhbmQgcmVwb3J0IGhhcmR3YXJlIGVycm9ycwordGhhdCBvY2N1ciB3aXRoaW4gdGhlIGNvbXB1dGVyIHN5c3RlbSBydW5uaW5nIHVuZGVyIGxpbnV4LgorCitNRU1PUlkKKy0tLS0tLQorCitNZW1vcnkgQ29ycmVjdGFibGUgRXJyb3JzIChDRSkgYW5kIFVuY29ycmVjdGFibGUgRXJyb3JzIChVRSkgYXJlIHRoZQorcHJpbWFyeSBlcnJvcnMgYmVpbmcgaGFydmVzdGVkLiBUaGVzZSB0eXBlcyBvZiBlcnJvcnMgYXJlIGhhcnZlc3RlZCBieQordGhlICdlZGFjX21jJyBkZXZpY2UuCisKK0RldGVjdGluZyBDRSBldmVudHMsIHRoZW4gaGFydmVzdGluZyB0aG9zZSBldmVudHMgYW5kIHJlcG9ydGluZyB0aGVtLAorKmNhbiogYnV0IG11c3Qgbm90IG5lY2Vzc2FyaWx5IGJlIGEgcHJlZGljdG9yIG9mIGZ1dHVyZSBVRSBldmVudHMuIFdpdGgKK0NFIGV2ZW50cyBvbmx5LCB0aGUgc3lzdGVtIGNhbiBhbmQgd2lsbCBjb250aW51ZSB0byBvcGVyYXRlIGFzIG5vIGRhdGEKK2hhcyBiZWVuIGRhbWFnZWQgeWV0LgorCitIb3dldmVyLCBwcmV2ZW50aXZlIG1haW50ZW5hbmNlIGFuZCBwcm9hY3RpdmUgcGFydCByZXBsYWNlbWVudCBvZiBtZW1vcnkKK0RJTU1zIGV4aGliaXRpbmcgQ0VzIGNhbiByZWR1Y2UgdGhlIGxpa2VsaWhvb2Qgb2YgdGhlIGRyZWFkZWQgVUUgZXZlbnRzCithbmQgc3lzdGVtIHBhbmljcy4KKworT1RIRVIgSEFSRFdBUkUgRUxFTUVOVFMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgbmV3IGZlYXR1cmUgZm9yIEVEQUMsIHRoZSBlZGFjX2RldmljZSBjbGFzcyBvZiBkZXZpY2UsIHdhcyBhZGRlZCBpbgordGhlIDIuNi4yMyB2ZXJzaW9uIG9mIHRoZSBrZXJuZWwuCisKK1RoaXMgbmV3IGRldmljZSB0eXBlIGFsbG93cyBmb3Igbm9uLW1lbW9yeSB0eXBlIG9mIEVDQyBoYXJkd2FyZSBkZXRlY3RvcnMKK3RvIGhhdmUgdGhlaXIgc3RhdGVzIGhhcnZlc3RlZCBhbmQgcHJlc2VudGVkIHRvIHVzZXJzcGFjZSB2aWEgdGhlIHN5c2ZzCitpbnRlcmZhY2UuCisKK1NvbWUgYXJjaGl0ZWN0dXJlcyBoYXZlIEVDQyBkZXRlY3RvcnMgZm9yIEwxLCBMMiBhbmQgTDMgY2FjaGVzLAorYWxvbmcgd2l0aCBETUEgZW5naW5lcywgZmFicmljIHN3aXRjaGVzLCBtYWluIGRhdGEgcGF0aCBzd2l0Y2hlcywKK2ludGVyY29ubmVjdGlvbnMsIGFuZCB2YXJpb3VzIG90aGVyIGhhcmR3YXJlIGRhdGEgcGF0aHMuIElmIHRoZSBoYXJkd2FyZQorcmVwb3J0cyBpdCwgdGhlbiBhIGVkYWNfZGV2aWNlIGRldmljZSBwcm9iYWJseSBjYW4gYmUgY29uc3RydWN0ZWQgdG8KK2hhcnZlc3QgYW5kIHByZXNlbnQgdGhhdCB0byB1c2Vyc3BhY2UuCisKKworUENJIEJVUyBTQ0FOTklORworLS0tLS0tLS0tLS0tLS0tLQorCitJbiBhZGRpdGlvbiwgUENJIGRldmljZXMgYXJlIHNjYW5uZWQgZm9yIFBDSSBCdXMgUGFyaXR5IGFuZCBTRVJSIEVycm9ycworaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIGlmIGVycm9ycyBhcmUgb2NjdXJyaW5nIGR1cmluZyBkYXRhIHRyYW5zZmVycy4KKworVGhlIHByZXNlbmNlIG9mIFBDSSBQYXJpdHkgZXJyb3JzIG11c3QgYmUgZXhhbWluZWQgd2l0aCBhIGdyYWluIG9mIHNhbHQuCitUaGVyZSBhcmUgc2V2ZXJhbCBhZGQtaW4gYWRhcHRlcnMgdGhhdCBkbyAqbm90KiBmb2xsb3cgdGhlIFBDSSBzcGVjaWZpY2F0aW9uCit3aXRoIHJlZ2FyZHMgdG8gUGFyaXR5IGdlbmVyYXRpb24gYW5kIHJlcG9ydGluZy4gVGhlIHNwZWNpZmljYXRpb24gc2F5cwordGhlIHZlbmRvciBzaG91bGQgdGllIHRoZSBwYXJpdHkgc3RhdHVzIGJpdHMgdG8gMCBpZiB0aGV5IGRvIG5vdCBpbnRlbmQKK3RvIGdlbmVyYXRlIHBhcml0eS4gIFNvbWUgdmVuZG9ycyBkbyBub3QgZG8gdGhpcywgYW5kIHRodXMgdGhlIHBhcml0eSBiaXQKK2NhbiAiZmxvYXQiIGdpdmluZyBmYWxzZSBwb3NpdGl2ZXMuCisKK1RoZXJlIGlzIGEgUENJIGRldmljZSBhdHRyaWJ1dGUgbG9jYXRlZCBpbiBzeXNmcyB0aGF0IGlzIGNoZWNrZWQgYnkKK3RoZSBFREFDIFBDSSBzY2FubmluZyBjb2RlLiBJZiB0aGF0IGF0dHJpYnV0ZSBpcyBzZXQsIFBDSSBwYXJpdHkvZXJyb3IKK3NjYW5uaW5nIGlzIHNraXBwZWQgZm9yIHRoYXQgZGV2aWNlLiBUaGUgYXR0cmlidXRlIGlzOgorCisJYnJva2VuX3Bhcml0eV9zdGF0dXMKKworYW5kIGlzIGxvY2F0ZWQgaW4gL3N5cy9kZXZpY2VzL3BjaTxYWFg+LzAwMDA6WFg6WVkuWiBkaXJlY3RvcmllcyBmb3IKK1BDSSBkZXZpY2VzLgorCisKK1ZFUlNJT05JTkcKKy0tLS0tLS0tLS0KKworRURBQyBpcyBjb21wb3NlZCBvZiBhICJjb3JlIiBtb2R1bGUgKGVkYWNfY29yZS5rbykgYW5kIHNldmVyYWwgTWVtb3J5CitDb250cm9sbGVyIChNQykgZHJpdmVyIG1vZHVsZXMuIE9uIGEgZ2l2ZW4gc3lzdGVtLCB0aGUgQ09SRSBpcyBsb2FkZWQKK2FuZCBvbmUgTUMgZHJpdmVyIHdpbGwgYmUgbG9hZGVkLiBCb3RoIHRoZSBDT1JFIGFuZCB0aGUgTUMgZHJpdmVyIChvcgorZWRhY19kZXZpY2UgZHJpdmVyKSBoYXZlIGluZGl2aWR1YWwgdmVyc2lvbnMgdGhhdCByZWZsZWN0IGN1cnJlbnQKK3JlbGVhc2UgbGV2ZWwgb2YgdGhlaXIgcmVzcGVjdGl2ZSBtb2R1bGVzLgorCitUaHVzLCB0byAicmVwb3J0IiBvbiB3aGF0IHZlcnNpb24gYSBzeXN0ZW0gaXMgcnVubmluZywgb25lIG11c3QgcmVwb3J0Citib3RoIHRoZSBDT1JFJ3MgYW5kIHRoZSBNQyBkcml2ZXIncyB2ZXJzaW9ucy4KKworCitMT0FESU5HCistLS0tLS0tCisKK0lmICdlZGFjJyB3YXMgc3RhdGljYWxseSBsaW5rZWQgd2l0aCB0aGUga2VybmVsIHRoZW4gbm8gbG9hZGluZworaXMgbmVjZXNzYXJ5LiBJZiAnZWRhYycgd2FzIGJ1aWx0IGFzIG1vZHVsZXMgdGhlbiBzaW1wbHkgbW9kcHJvYmUKK3RoZSAnZWRhYycgcGllY2VzIHRoYXQgeW91IG5lZWQuIFlvdSBzaG91bGQgYmUgYWJsZSB0byBtb2Rwcm9iZQoraGFyZHdhcmUtc3BlY2lmaWMgbW9kdWxlcyBhbmQgaGF2ZSB0aGUgZGVwZW5kZW5jaWVzIGxvYWQgdGhlIG5lY2Vzc2FyeQorY29yZSBtb2R1bGVzLgorCitFeGFtcGxlOgorCiskPiBtb2Rwcm9iZSBhbWQ3NnhfZWRhYworCitsb2FkcyBib3RoIHRoZSBhbWQ3NnhfZWRhYy5rbyBtZW1vcnkgY29udHJvbGxlciBtb2R1bGUgYW5kIHRoZSBlZGFjX21jLmtvCitjb3JlIG1vZHVsZS4KKworCitTWVNGUyBJTlRFUkZBQ0UKKy0tLS0tLS0tLS0tLS0tLQorCitFREFDIHByZXNlbnRzIGEgJ3N5c2ZzJyBpbnRlcmZhY2UgZm9yIGNvbnRyb2wgYW5kIHJlcG9ydGluZyBwdXJwb3Nlcy4gSXQKK2xpdmVzIGluIHRoZSAvc3lzL2RldmljZXMvc3lzdGVtL2VkYWMgZGlyZWN0b3J5LgorCitXaXRoaW4gdGhpcyBkaXJlY3RvcnkgdGhlcmUgY3VycmVudGx5IHJlc2lkZSAyIGNvbXBvbmVudHM6CisKKwltYwltZW1vcnkgY29udHJvbGxlcihzKSBzeXN0ZW0KKwlwY2kJUENJIGNvbnRyb2wgYW5kIHN0YXR1cyBzeXN0ZW0KKworCisKK01lbW9yeSBDb250cm9sbGVyIChtYykgTW9kZWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRWFjaCAnbWMnIGRldmljZSBjb250cm9scyBhIHNldCBvZiBESU1NIG1lbW9yeSBtb2R1bGVzLiBUaGVzZSBtb2R1bGVzCithcmUgbGFpZCBvdXQgaW4gYSBDaGlwLVNlbGVjdCBSb3cgKGNzcm93WCkgYW5kIENoYW5uZWwgdGFibGUgKGNoWCkuCitUaGVyZSBjYW4gYmUgbXVsdGlwbGUgY3Nyb3dzIGFuZCBtdWx0aXBsZSBjaGFubmVscy4KKworTWVtb3J5IGNvbnRyb2xsZXJzIGFsbG93IGZvciBzZXZlcmFsIGNzcm93cywgd2l0aCA4IGNzcm93cyBiZWluZyBhCit0eXBpY2FsIHZhbHVlLiBZZXQsIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGNzcm93cyBkZXBlbmRzIG9uIHRoZSBsYXlvdXQgb2YKK2EgZ2l2ZW4gbW90aGVyYm9hcmQsIG1lbW9yeSBjb250cm9sbGVyIGFuZCBESU1NIGNoYXJhY3RlcmlzdGljcy4KKworRHVhbCBjaGFubmVscyBhbGxvd3MgZm9yIDEyOCBiaXQgZGF0YSB0cmFuc2ZlcnMgdG8vZnJvbSB0aGUgQ1BVIGZyb20vdG8KK21lbW9yeS4gU29tZSBuZXdlciBjaGlwc2V0cyBhbGxvdyBmb3IgbW9yZSB0aGFuIDIgY2hhbm5lbHMsIGxpa2UgRnVsbHkKK0J1ZmZlcmVkIERJTU1zIChGQi1ESU1NcykuIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSB3aWxsIGFzc3VtZSAyIGNoYW5uZWxzOgorCisKKwkJQ2hhbm5lbCAwCUNoYW5uZWwgMQorCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJY3Nyb3cwCXwgRElNTV9BMAl8IERJTU1fQjAgfAorCWNzcm93MQl8IERJTU1fQTAJfCBESU1NX0IwIHwKKwk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwljc3JvdzIJfCBESU1NX0ExCXwgRElNTV9CMSB8CisJY3Nyb3czCXwgRElNTV9BMQl8IERJTU1fQjEgfAorCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0luIHRoZSBhYm92ZSBleGFtcGxlIHRhYmxlIHRoZXJlIGFyZSA0IHBoeXNpY2FsIHNsb3RzIG9uIHRoZSBtb3RoZXJib2FyZAorZm9yIG1lbW9yeSBESU1NczoKKworCURJTU1fQTAKKwlESU1NX0IwCisJRElNTV9BMQorCURJTU1fQjEKKworTGFiZWxzIGZvciB0aGVzZSBzbG90cyBhcmUgdXN1YWxseSBzaWxrLXNjcmVlbmVkIG9uIHRoZSBtb3RoZXJib2FyZC4KK1Nsb3RzIGxhYmVsZWQgJ0EnIGFyZSBjaGFubmVsIDAgaW4gdGhpcyBleGFtcGxlLiBTbG90cyBsYWJlbGVkICdCJyBhcmUKK2NoYW5uZWwgMS4gTm90aWNlIHRoYXQgdGhlcmUgYXJlIHR3byBjc3Jvd3MgcG9zc2libGUgb24gYSBwaHlzaWNhbCBESU1NLgorVGhlc2UgY3Nyb3dzIGFyZSBhbGxvY2F0ZWQgdGhlaXIgY3Nyb3cgYXNzaWdubWVudCBiYXNlZCBvbiB0aGUgc2xvdCBpbnRvCit3aGljaCB0aGUgbWVtb3J5IERJTU0gaXMgcGxhY2VkLiBUaHVzLCB3aGVuIDEgRElNTSBpcyBwbGFjZWQgaW4gZWFjaAorQ2hhbm5lbCwgdGhlIGNzcm93cyBjcm9zcyBib3RoIERJTU1zLgorCitNZW1vcnkgRElNTXMgY29tZSBzaW5nbGUgb3IgZHVhbCAicmFua2VkIi4gQSByYW5rIGlzIGEgcG9wdWxhdGVkIGNzcm93LgorVGh1cywgMiBzaW5nbGUgcmFua2VkIERJTU1zLCBwbGFjZWQgaW4gc2xvdHMgRElNTV9BMCBhbmQgRElNTV9CMCBhYm92ZQord2lsbCBoYXZlIDEgY3Nyb3csIGNzcm93MC4gY3Nyb3cxIHdpbGwgYmUgZW1wdHkuIE9uIHRoZSBvdGhlciBoYW5kLAord2hlbiAyIGR1YWwgcmFua2VkIERJTU1zIGFyZSBzaW1pbGFybHkgcGxhY2VkLCB0aGVuIGJvdGggY3Nyb3cwIGFuZAorY3Nyb3cxIHdpbGwgYmUgcG9wdWxhdGVkLiBUaGUgcGF0dGVybiByZXBlYXRzIGl0c2VsZiBmb3IgY3Nyb3cyIGFuZAorY3Nyb3czLgorCitUaGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGFib3ZlIGlzIHJlZmxlY3RlZCBpbiB0aGUgZGlyZWN0b3J5Cit0cmVlIGluIEVEQUMncyBzeXNmcyBpbnRlcmZhY2UuIFN0YXJ0aW5nIGluIGRpcmVjdG9yeQorL3N5cy9kZXZpY2VzL3N5c3RlbS9lZGFjL21jIGVhY2ggbWVtb3J5IGNvbnRyb2xsZXIgd2lsbCBiZSByZXByZXNlbnRlZAorYnkgaXRzIG93biAnbWNYJyBkaXJlY3RvcnksIHdoZXJlICdYJyBpcyB0aGUgaW5kZXggb2YgdGhlIE1DLgorCisKKwkuLi4uL2VkYWMvbWMvCisJCSAgIHwKKwkJICAgfC0+bWMwCisJCSAgIHwtPm1jMQorCQkgICB8LT5tYzIKKwkJICAgLi4uLgorCitVbmRlciBlYWNoICdtY1gnIGRpcmVjdG9yeSBlYWNoICdjc3Jvd1gnIGlzIGFnYWluIHJlcHJlc2VudGVkIGJ5IGEKKydjc3Jvd1gnLCB3aGVyZSAnWCcgaXMgdGhlIGNzcm93IGluZGV4OgorCisKKwkuLi4vbWMvbWMwLworCQl8CisJCXwtPmNzcm93MAorCQl8LT5jc3JvdzIKKwkJfC0+Y3Nyb3czCisJCS4uLi4KKworTm90aWNlIHRoYXQgdGhlcmUgaXMgbm8gY3Nyb3cxLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCBjc3JvdzAgaXMgY29tcG9zZWQKK29mIGEgc2luZ2xlIHJhbmtlZCBESU1Ncy4gVGhpcyBzaG91bGQgYWxzbyBhcHBseSBpbiBib3RoIENoYW5uZWxzLCBpbgorb3JkZXIgdG8gaGF2ZSBkdWFsLWNoYW5uZWwgbW9kZSBiZSBvcGVyYXRpb25hbC4gU2luY2UgYm90aCBjc3JvdzIgYW5kCitjc3JvdzMgYXJlIHBvcHVsYXRlZCwgdGhpcyBpbmRpY2F0ZXMgYSBkdWFsIHJhbmtlZCBzZXQgb2YgRElNTXMgZm9yCitjaGFubmVscyAwIGFuZCAxLgorCisKK1dpdGhpbiBlYWNoIG9mIHRoZSAnbWNYJyBhbmQgJ2Nzcm93WCcgZGlyZWN0b3JpZXMgYXJlIHNldmVyYWwgRURBQworY29udHJvbCBhbmQgYXR0cmlidXRlIGZpbGVzLgorCisKKydtY1gnIGRpcmVjdG9yaWVzCistLS0tLS0tLS0tLS0tLS0tLQorCitJbiAnbWNYJyBkaXJlY3RvcmllcyBhcmUgRURBQyBjb250cm9sIGFuZCBhdHRyaWJ1dGUgZmlsZXMgZm9yCit0aGlzICdYJyBpbnN0YW5jZSBvZiB0aGUgbWVtb3J5IGNvbnRyb2xsZXJzLgorCitGb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgc3lzZnMgQVBJLCBwbGVhc2Ugc2VlOgorCURvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNlcy1lZGFjCisKKworCisnY3Nyb3dYJyBkaXJlY3RvcmllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hlbiBDT05GSUdfRURBQ19MRUdBQ1lfU1lTRlMgaXMgZW5hYmxlZCwgc3lzZnMgd2lsbCBjb250YWluIHRoZSBjc3Jvd1gKK2RpcmVjdG9yaWVzLiBBcyB0aGlzIEFQSSBkb2Vzbid0IHdvcmsgcHJvcGVybHkgZm9yIFJhbWJ1cywgRkItRElNTXMgYW5kCittb2Rlcm4gSW50ZWwgTWVtb3J5IENvbnRyb2xsZXJzLCB0aGlzIGlzIGJlaW5nIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YKK2RpbW1YIGRpcmVjdG9yaWVzLgorCitJbiB0aGUgJ2Nzcm93WCcgZGlyZWN0b3JpZXMgYXJlIEVEQUMgY29udHJvbCBhbmQgYXR0cmlidXRlIGZpbGVzIGZvcgordGhpcyAnWCcgaW5zdGFuY2Ugb2YgY3Nyb3c6CisKKworVG90YWwgVW5jb3JyZWN0YWJsZSBFcnJvcnMgY291bnQgYXR0cmlidXRlIGZpbGU6CisKKwkndWVfY291bnQnCisKKwlUaGlzIGF0dHJpYnV0ZSBmaWxlIGRpc3BsYXlzIHRoZSB0b3RhbCBjb3VudCBvZiB1bmNvcnJlY3RhYmxlCisJZXJyb3JzIHRoYXQgaGF2ZSBvY2N1cnJlZCBvbiB0aGlzIGNzcm93LiBJZiBwYW5pY19vbl91ZSBpcyBzZXQKKwl0aGlzIGNvdW50ZXIgd2lsbCBub3QgaGF2ZSBhIGNoYW5jZSB0byBpbmNyZW1lbnQsIHNpbmNlIEVEQUMKKwl3aWxsIHBhbmljIHRoZSBzeXN0ZW0uCisKKworVG90YWwgQ29ycmVjdGFibGUgRXJyb3JzIGNvdW50IGF0dHJpYnV0ZSBmaWxlOgorCisJJ2NlX2NvdW50JworCisJVGhpcyBhdHRyaWJ1dGUgZmlsZSBkaXNwbGF5cyB0aGUgdG90YWwgY291bnQgb2YgY29ycmVjdGFibGUKKwllcnJvcnMgdGhhdCBoYXZlIG9jY3VycmVkIG9uIHRoaXMgY3Nyb3cuIFRoaXMgY291bnQgaXMgdmVyeQorCWltcG9ydGFudCB0byBleGFtaW5lLiBDRXMgcHJvdmlkZSBlYXJseSBpbmRpY2F0aW9ucyB0aGF0IGEKKwlESU1NIGlzIGJlZ2lubmluZyB0byBmYWlsLiBUaGlzIGNvdW50IGZpZWxkIHNob3VsZCBiZQorCW1vbml0b3JlZCBmb3Igbm9uLXplcm8gdmFsdWVzIGFuZCByZXBvcnQgc3VjaCBpbmZvcm1hdGlvbgorCXRvIHRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvci4KKworCitUb3RhbCBtZW1vcnkgbWFuYWdlZCBieSB0aGlzIGNzcm93IGF0dHJpYnV0ZSBmaWxlOgorCisJJ3NpemVfbWInCisKKwlUaGlzIGF0dHJpYnV0ZSBmaWxlIGRpc3BsYXlzLCBpbiBjb3VudCBvZiBtZWdhYnl0ZXMsIHRoZSBtZW1vcnkKKwl0aGF0IHRoaXMgY3Nyb3cgY29udGFpbnMuCisKKworTWVtb3J5IFR5cGUgYXR0cmlidXRlIGZpbGU6CisKKwknbWVtX3R5cGUnCisKKwlUaGlzIGF0dHJpYnV0ZSBmaWxlIHdpbGwgZGlzcGxheSB3aGF0IHR5cGUgb2YgbWVtb3J5IGlzIGN1cnJlbnRseQorCW9uIHRoaXMgY3Nyb3cuIE5vcm1hbGx5LCBlaXRoZXIgYnVmZmVyZWQgb3IgdW5idWZmZXJlZCBtZW1vcnkuCisJRXhhbXBsZXM6CisJCVJlZ2lzdGVyZWQtRERSCisJCVVuYnVmZmVyZWQtRERSCisKKworRURBQyBNb2RlIG9mIG9wZXJhdGlvbiBhdHRyaWJ1dGUgZmlsZToKKworCSdlZGFjX21vZGUnCisKKwlUaGlzIGF0dHJpYnV0ZSBmaWxlIHdpbGwgZGlzcGxheSB3aGF0IHR5cGUgb2YgRXJyb3IgZGV0ZWN0aW9uCisJYW5kIGNvcnJlY3Rpb24gaXMgYmVpbmcgdXRpbGl6ZWQuCisKKworRGV2aWNlIHR5cGUgYXR0cmlidXRlIGZpbGU6CisKKwknZGV2X3R5cGUnCisKKwlUaGlzIGF0dHJpYnV0ZSBmaWxlIHdpbGwgZGlzcGxheSB3aGF0IHR5cGUgb2YgRFJBTSBkZXZpY2UgaXMKKwliZWluZyB1dGlsaXplZCBvbiB0aGlzIERJTU0uCisJRXhhbXBsZXM6CisJCXgxCisJCXgyCisJCXg0CisJCXg4CisKKworQ2hhbm5lbCAwIENFIENvdW50IGF0dHJpYnV0ZSBmaWxlOgorCisJJ2NoMF9jZV9jb3VudCcKKworCVRoaXMgYXR0cmlidXRlIGZpbGUgd2lsbCBkaXNwbGF5IHRoZSBjb3VudCBvZiBDRXMgb24gdGhpcworCURJTU0gbG9jYXRlZCBpbiBjaGFubmVsIDAuCisKKworQ2hhbm5lbCAwIFVFIENvdW50IGF0dHJpYnV0ZSBmaWxlOgorCisJJ2NoMF91ZV9jb3VudCcKKworCVRoaXMgYXR0cmlidXRlIGZpbGUgd2lsbCBkaXNwbGF5IHRoZSBjb3VudCBvZiBVRXMgb24gdGhpcworCURJTU0gbG9jYXRlZCBpbiBjaGFubmVsIDAuCisKKworQ2hhbm5lbCAwIERJTU0gTGFiZWwgY29udHJvbCBmaWxlOgorCisJJ2NoMF9kaW1tX2xhYmVsJworCisJVGhpcyBjb250cm9sIGZpbGUgYWxsb3dzIHRoaXMgRElNTSB0byBoYXZlIGEgbGFiZWwgYXNzaWduZWQKKwl0byBpdC4gV2l0aCB0aGlzIGxhYmVsIGluIHRoZSBtb2R1bGUsIHdoZW4gZXJyb3JzIG9jY3VyCisJdGhlIG91dHB1dCBjYW4gcHJvdmlkZSB0aGUgRElNTSBsYWJlbCBpbiB0aGUgc3lzdGVtIGxvZy4KKwlUaGlzIGJlY29tZXMgdml0YWwgZm9yIHBhbmljIGV2ZW50cyB0byBpc29sYXRlIHRoZQorCWNhdXNlIG9mIHRoZSBVRSBldmVudC4KKworCURJTU0gTGFiZWxzIG11c3QgYmUgYXNzaWduZWQgYWZ0ZXIgYm9vdGluZywgd2l0aCBpbmZvcm1hdGlvbgorCXRoYXQgY29ycmVjdGx5IGlkZW50aWZpZXMgdGhlIHBoeXNpY2FsIHNsb3Qgd2l0aCBpdHMKKwlzaWxrIHNjcmVlbiBsYWJlbC4gVGhpcyBpbmZvcm1hdGlvbiBpcyBjdXJyZW50bHkgdmVyeQorCW1vdGhlcmJvYXJkIHNwZWNpZmljIGFuZCBkZXRlcm1pbmF0aW9uIG9mIHRoaXMgaW5mb3JtYXRpb24KKwltdXN0IG9jY3VyIGluIHVzZXJsYW5kIGF0IHRoaXMgdGltZS4KKworCitDaGFubmVsIDEgQ0UgQ291bnQgYXR0cmlidXRlIGZpbGU6CisKKwknY2gxX2NlX2NvdW50JworCisJVGhpcyBhdHRyaWJ1dGUgZmlsZSB3aWxsIGRpc3BsYXkgdGhlIGNvdW50IG9mIENFcyBvbiB0aGlzCisJRElNTSBsb2NhdGVkIGluIGNoYW5uZWwgMS4KKworCitDaGFubmVsIDEgVUUgQ291bnQgYXR0cmlidXRlIGZpbGU6CisKKwknY2gxX3VlX2NvdW50JworCisJVGhpcyBhdHRyaWJ1dGUgZmlsZSB3aWxsIGRpc3BsYXkgdGhlIGNvdW50IG9mIFVFcyBvbiB0aGlzCisJRElNTSBsb2NhdGVkIGluIGNoYW5uZWwgMC4KKworCitDaGFubmVsIDEgRElNTSBMYWJlbCBjb250cm9sIGZpbGU6CisKKwknY2gxX2RpbW1fbGFiZWwnCisKKwlUaGlzIGNvbnRyb2wgZmlsZSBhbGxvd3MgdGhpcyBESU1NIHRvIGhhdmUgYSBsYWJlbCBhc3NpZ25lZAorCXRvIGl0LiBXaXRoIHRoaXMgbGFiZWwgaW4gdGhlIG1vZHVsZSwgd2hlbiBlcnJvcnMgb2NjdXIKKwl0aGUgb3V0cHV0IGNhbiBwcm92aWRlIHRoZSBESU1NIGxhYmVsIGluIHRoZSBzeXN0ZW0gbG9nLgorCVRoaXMgYmVjb21lcyB2aXRhbCBmb3IgcGFuaWMgZXZlbnRzIHRvIGlzb2xhdGUgdGhlCisJY2F1c2Ugb2YgdGhlIFVFIGV2ZW50LgorCisJRElNTSBMYWJlbHMgbXVzdCBiZSBhc3NpZ25lZCBhZnRlciBib290aW5nLCB3aXRoIGluZm9ybWF0aW9uCisJdGhhdCBjb3JyZWN0bHkgaWRlbnRpZmllcyB0aGUgcGh5c2ljYWwgc2xvdCB3aXRoIGl0cworCXNpbGsgc2NyZWVuIGxhYmVsLiBUaGlzIGluZm9ybWF0aW9uIGlzIGN1cnJlbnRseSB2ZXJ5CisJbW90aGVyYm9hcmQgc3BlY2lmaWMgYW5kIGRldGVybWluYXRpb24gb2YgdGhpcyBpbmZvcm1hdGlvbgorCW11c3Qgb2NjdXIgaW4gdXNlcmxhbmQgYXQgdGhpcyB0aW1lLgorCisKKworU1lTVEVNIExPR0dJTkcKKy0tLS0tLS0tLS0tLS0tCisKK0lmIGxvZ2dpbmcgZm9yIFVFcyBhbmQgQ0VzIGlzIGVuYWJsZWQsIHRoZW4gc3lzdGVtIGxvZ3Mgd2lsbCBjb250YWluCitpbmZvcm1hdGlvbiBpbmRpY2F0aW5nIHRoYXQgZXJyb3JzIGhhdmUgYmVlbiBkZXRlY3RlZDoKKworRURBQyBNQzA6IENFIHBhZ2UgMHgyODMsIG9mZnNldCAweGNlMCwgZ3JhaW4gOCwgc3luZHJvbWUgMHg2ZWMzLCByb3cgMCwKK2NoYW5uZWwgMSAiRElNTV9CMSI6IGFtZDc2eF9lZGFjCisKK0VEQUMgTUMwOiBDRSBwYWdlIDB4MWU1LCBvZmZzZXQgMHhmYjAsIGdyYWluIDgsIHN5bmRyb21lIDB4Yjc0MSwgcm93IDAsCitjaGFubmVsIDEgIkRJTU1fQjEiOiBhbWQ3NnhfZWRhYworCisKK1RoZSBzdHJ1Y3R1cmUgb2YgdGhlIG1lc3NhZ2UgaXM6CisJdGhlIG1lbW9yeSBjb250cm9sbGVyCQkJKE1DMCkKKwlFcnJvciB0eXBlCQkJCShDRSkKKwltZW1vcnkgcGFnZQkJCQkoMHgyODMpCisJb2Zmc2V0IGluIHRoZSBwYWdlCQkJKDB4Y2UwKQorCXRoZSBieXRlIGdyYW51bGFyaXR5IAkJCShncmFpbiA4KQorCQlvciByZXNvbHV0aW9uIG9mIHRoZSBlcnJvcgorCXRoZSBlcnJvciBzeW5kcm9tZQkJCSgweGI3NDEpCisJbWVtb3J5IHJvdwkJCQkocm93IDApCisJbWVtb3J5IGNoYW5uZWwJCQkJKGNoYW5uZWwgMSkKKwlESU1NIGxhYmVsLCBpZiBzZXQgcHJpb3IJCShESU1NIEIxCisJYW5kIHRoZW4gYW4gb3B0aW9uYWwsIGRyaXZlci1zcGVjaWZpYyBtZXNzYWdlIHRoYXQgbWF5CisJCWhhdmUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KKworQm90aCBVRXMgYW5kIENFcyB3aXRoIG5vIGluZm8gd2lsbCBsYWNrIGFsbCBidXQgbWVtb3J5IGNvbnRyb2xsZXIsIGVycm9yCit0eXBlLCBhIG5vdGljZSBvZiAibm8gaW5mbyIgYW5kIHRoZW4gYW4gb3B0aW9uYWwsIGRyaXZlci1zcGVjaWZpYyBlcnJvcgorbWVzc2FnZS4KKworCitQQ0kgQnVzIFBhcml0eSBEZXRlY3Rpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPbiBIZWFkZXIgVHlwZSAwMCBkZXZpY2VzLCB0aGUgcHJpbWFyeSBzdGF0dXMgaXMgbG9va2VkIGF0IGZvciBhbnkKK3Bhcml0eSBlcnJvciByZWdhcmRsZXNzIG9mIHdoZXRoZXIgcGFyaXR5IGlzIGVuYWJsZWQgb24gdGhlIGRldmljZSBvcgorbm90LiAoVGhlIHNwZWMgaW5kaWNhdGVzIHBhcml0eSBpcyBnZW5lcmF0ZWQgaW4gc29tZSBjYXNlcykuIE9uIEhlYWRlcgorVHlwZSAwMSBicmlkZ2VzLCB0aGUgc2Vjb25kYXJ5IHN0YXR1cyByZWdpc3RlciBpcyBhbHNvIGxvb2tlZCBhdCB0byBzZWUKK2lmIHBhcml0eSBvY2N1cnJlZCBvbiB0aGUgYnVzIG9uIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBicmlkZ2UuCisKKworU1lTRlMgQ09ORklHVVJBVElPTgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitVbmRlciAvc3lzL2RldmljZXMvc3lzdGVtL2VkYWMvcGNpIGFyZSBjb250cm9sIGFuZCBhdHRyaWJ1dGUgZmlsZXMgYXMgZm9sbG93czoKKworCitFbmFibGUvRGlzYWJsZSBQQ0kgUGFyaXR5IGNoZWNraW5nIGNvbnRyb2wgZmlsZToKKworCSdjaGVja19wY2lfcGFyaXR5JworCisKKwlUaGlzIGNvbnRyb2wgZmlsZSBlbmFibGVzIG9yIGRpc2FibGVzIHRoZSBQQ0kgQnVzIFBhcml0eSBzY2FubmluZworCW9wZXJhdGlvbi4gV3JpdGluZyBhIDEgdG8gdGhpcyBmaWxlIGVuYWJsZXMgdGhlIHNjYW5uaW5nLiBXcml0aW5nCisJYSAwIHRvIHRoaXMgZmlsZSBkaXNhYmxlcyB0aGUgc2Nhbm5pbmcuCisKKwlFbmFibGU6CisJZWNobyAiMSIgPi9zeXMvZGV2aWNlcy9zeXN0ZW0vZWRhYy9wY2kvY2hlY2tfcGNpX3Bhcml0eQorCisJRGlzYWJsZToKKwllY2hvICIwIiA+L3N5cy9kZXZpY2VzL3N5c3RlbS9lZGFjL3BjaS9jaGVja19wY2lfcGFyaXR5CisKKworUGFyaXR5IENvdW50OgorCisJJ3BjaV9wYXJpdHlfY291bnQnCisKKwlUaGlzIGF0dHJpYnV0ZSBmaWxlIHdpbGwgZGlzcGxheSB0aGUgbnVtYmVyIG9mIHBhcml0eSBlcnJvcnMgdGhhdAorCWhhdmUgYmVlbiBkZXRlY3RlZC4KKworCisKK01PRFVMRSBQQVJBTUVURVJTCistLS0tLS0tLS0tLS0tLS0tLQorCitQYW5pYyBvbiBVRSBjb250cm9sIGZpbGU6CisKKwknZWRhY19tY19wYW5pY19vbl91ZScKKworCUFuIHVuY29ycmVjdGFibGUgZXJyb3Igd2lsbCBjYXVzZSBhIG1hY2hpbmUgcGFuaWMuICBUaGlzIGlzIHVzdWFsbHkKKwlkZXNpcmFibGUuICBJdCBpcyBhIGJhZCBpZGVhIHRvIGNvbnRpbnVlIHdoZW4gYW4gdW5jb3JyZWN0YWJsZSBlcnJvcgorCW9jY3VycyAtIGl0IGlzIGluZGV0ZXJtaW5hdGUgd2hhdCB3YXMgdW5jb3JyZWN0ZWQgYW5kIHRoZSBvcGVyYXRpbmcKKwlzeXN0ZW0gY29udGV4dCBtaWdodCBiZSBzbyBtYW5nbGVkIHRoYXQgY29udGludWluZyB3aWxsIGxlYWQgdG8gZnVydGhlcgorCWNvcnJ1cHRpb24uIElmIHRoZSBrZXJuZWwgaGFzIE1DRSBjb25maWd1cmVkLCB0aGVuIEVEQUMgd2lsbCBuZXZlcgorCW5vdGljZSB0aGUgVUUuCisKKwlMT0FEIFRJTUU6IG1vZHVsZS9rZXJuZWwgcGFyYW1ldGVyOiBlZGFjX21jX3BhbmljX29uX3VlPVswfDFdCisKKwlSVU4gVElNRTogIGVjaG8gIjEiID4gL3N5cy9tb2R1bGUvZWRhY19jb3JlL3BhcmFtZXRlcnMvZWRhY19tY19wYW5pY19vbl91ZQorCisKK0xvZyBVRSBjb250cm9sIGZpbGU6CisKKwknZWRhY19tY19sb2dfdWUnCisKKwlHZW5lcmF0ZSBrZXJuZWwgbWVzc2FnZXMgZGVzY3JpYmluZyB1bmNvcnJlY3RhYmxlIGVycm9ycy4gIFRoZXNlIGVycm9ycworCWFyZSByZXBvcnRlZCB0aHJvdWdoIHRoZSBzeXN0ZW0gbWVzc2FnZSBsb2cgc3lzdGVtLiAgVUUgc3RhdGlzdGljcworCXdpbGwgYmUgYWNjdW11bGF0ZWQgZXZlbiB3aGVuIFVFIGxvZ2dpbmcgaXMgZGlzYWJsZWQuCisKKwlMT0FEIFRJTUU6IG1vZHVsZS9rZXJuZWwgcGFyYW1ldGVyOiBlZGFjX21jX2xvZ191ZT1bMHwxXQorCisJUlVOIFRJTUU6IGVjaG8gIjEiID4gL3N5cy9tb2R1bGUvZWRhY19jb3JlL3BhcmFtZXRlcnMvZWRhY19tY19sb2dfdWUKKworCitMb2cgQ0UgY29udHJvbCBmaWxlOgorCisJJ2VkYWNfbWNfbG9nX2NlJworCisJR2VuZXJhdGUga2VybmVsIG1lc3NhZ2VzIGRlc2NyaWJpbmcgY29ycmVjdGFibGUgZXJyb3JzLiAgVGhlc2UKKwllcnJvcnMgYXJlIHJlcG9ydGVkIHRocm91Z2ggdGhlIHN5c3RlbSBtZXNzYWdlIGxvZyBzeXN0ZW0uCisJQ0Ugc3RhdGlzdGljcyB3aWxsIGJlIGFjY3VtdWxhdGVkIGV2ZW4gd2hlbiBDRSBsb2dnaW5nIGlzIGRpc2FibGVkLgorCisJTE9BRCBUSU1FOiBtb2R1bGUva2VybmVsIHBhcmFtZXRlcjogZWRhY19tY19sb2dfY2U9WzB8MV0KKworCVJVTiBUSU1FOiBlY2hvICIxIiA+IC9zeXMvbW9kdWxlL2VkYWNfY29yZS9wYXJhbWV0ZXJzL2VkYWNfbWNfbG9nX2NlCisKKworUG9sbGluZyBwZXJpb2QgY29udHJvbCBmaWxlOgorCisJJ2VkYWNfbWNfcG9sbF9tc2VjJworCisJVGhlIHRpbWUgcGVyaW9kLCBpbiBtaWxsaXNlY29uZHMsIGZvciBwb2xsaW5nIGZvciBlcnJvciBpbmZvcm1hdGlvbi4KKwlUb28gc21hbGwgYSB2YWx1ZSB3YXN0ZXMgcmVzb3VyY2VzLiAgVG9vIGxhcmdlIGEgdmFsdWUgbWlnaHQgZGVsYXkKKwluZWNlc3NhcnkgaGFuZGxpbmcgb2YgZXJyb3JzIGFuZCBtaWdodCBsb29zZSB2YWx1YWJsZSBpbmZvcm1hdGlvbiBmb3IKKwlsb2NhdGluZyB0aGUgZXJyb3IuICAxMDAwIG1pbGxpc2Vjb25kcyAob25jZSBlYWNoIHNlY29uZCkgaXMgdGhlIGN1cnJlbnQKKwlkZWZhdWx0LiBTeXN0ZW1zIHdoaWNoIHJlcXVpcmUgYWxsIHRoZSBiYW5kd2lkdGggdGhleSBjYW4gZ2V0LCBtYXkKKwlpbmNyZWFzZSB0aGlzLgorCisJTE9BRCBUSU1FOiBtb2R1bGUva2VybmVsIHBhcmFtZXRlcjogZWRhY19tY19wb2xsX21zZWM9WzB8MV0KKworCVJVTiBUSU1FOiBlY2hvICIxMDAwIiA+IC9zeXMvbW9kdWxlL2VkYWNfY29yZS9wYXJhbWV0ZXJzL2VkYWNfbWNfcG9sbF9tc2VjCisKKworUGFuaWMgb24gUENJIFBBUklUWSBFcnJvcjoKKworCSdwYW5pY19vbl9wY2lfcGFyaXR5JworCisKKwlUaGlzIGNvbnRyb2wgZmlsZSBlbmFibGVzIG9yIGRpc2FibGVzIHBhbmlja2luZyB3aGVuIGEgcGFyaXR5CisJZXJyb3IgaGFzIGJlZW4gZGV0ZWN0ZWQuCisKKworCW1vZHVsZS9rZXJuZWwgcGFyYW1ldGVyOiBlZGFjX3BhbmljX29uX3BjaV9wZT1bMHwxXQorCisJRW5hYmxlOgorCWVjaG8gIjEiID4gL3N5cy9tb2R1bGUvZWRhY19jb3JlL3BhcmFtZXRlcnMvZWRhY19wYW5pY19vbl9wY2lfcGUKKworCURpc2FibGU6CisJZWNobyAiMCIgPiAvc3lzL21vZHVsZS9lZGFjX2NvcmUvcGFyYW1ldGVycy9lZGFjX3BhbmljX29uX3BjaV9wZQorCisKKworRURBQyBkZXZpY2UgdHlwZQorLS0tLS0tLS0tLS0tLS0tLQorCitJbiB0aGUgaGVhZGVyIGZpbGUsIGVkYWNfY29yZS5oLCB0aGVyZSBpcyBhIHNlcmllcyBvZiBlZGFjX2RldmljZSBzdHJ1Y3R1cmVzCithbmQgQVBJcyBmb3IgdGhlIEVEQUNfREVWSUNFLgorCitVc2VyIHNwYWNlIGFjY2VzcyB0byBhbiBlZGFjX2RldmljZSBpcyB0aHJvdWdoIHRoZSBzeXNmcyBpbnRlcmZhY2UuCisKK0F0IHRoZSBsb2NhdGlvbiAvc3lzL2RldmljZXMvc3lzdGVtL2VkYWMgKHN5c2ZzKSBuZXcgZWRhY19kZXZpY2UgZGV2aWNlcyB3aWxsCithcHBlYXIuCisKK1RoZXJlIGlzIGEgdGhyZWUgbGV2ZWwgdHJlZSBiZW5lYXRoIHRoZSBhYm92ZSAnZWRhYycgZGlyZWN0b3J5LiBGb3IgZXhhbXBsZSwKK3RoZSAndGVzdF9kZXZpY2VfZWRhYycgZGV2aWNlIChmb3VuZCBhdCB0aGUgYmx1ZXNtb2tlLnNvdXJjZWZvcmdldC5uZXQgd2Vic2l0ZSkKK2luc3RhbGxzIGl0c2VsZiBhczoKKworCS9zeXMvZGV2aWNlcy9zeXN0bS9lZGFjL3Rlc3QtaW5zdGFuY2UKKworaW4gdGhpcyBkaXJlY3RvcnkgYXJlIHZhcmlvdXMgY29udHJvbHMsIGEgc3ltbGluayBhbmQgb25lIG9yIG1vcmUgJ2luc3RhbmNlJworZGlyZWN0b3JpZXMuCisKK1RoZSBzdGFuZGFyZCBkZWZhdWx0IGNvbnRyb2xzIGFyZToKKworCWxvZ19jZQkJYm9vbGVhbiB0byBsb2cgQ0UgZXZlbnRzCisJbG9nX3VlCQlib29sZWFuIHRvIGxvZyBVRSBldmVudHMKKwlwYW5pY19vbl91ZQlib29sZWFuIHRvICdwYW5pYycgdGhlIHN5c3RlbSBpZiBhbiBVRSBpcyBlbmNvdW50ZXJlZAorCQkJKGRlZmF1bHQgb2ZmLCBjYW4gYmUgc2V0IHRydWUgdmlhIHN0YXJ0dXAgc2NyaXB0KQorCXBvbGxfbXNlYwl0aW1lIHBlcmlvZCBiZXR3ZWVuIFBPTEwgY3ljbGVzIGZvciBldmVudHMKKworVGhlIHRlc3RfZGV2aWNlX2VkYWMgZGV2aWNlIGFkZHMgYXQgbGVhc3Qgb25lIG9mIGl0cyBvd24gY3VzdG9tIGNvbnRyb2w6CisKKwl0ZXN0X2JpdHMJd2hpY2ggaW4gdGhlIGN1cnJlbnQgdGVzdCBkcml2ZXIgZG9lcyBub3RoaW5nIGJ1dAorCQkJc2hvdyBob3cgaXQgaXMgaW5zdGFsbGVkLiBBIHBvcnRlZCBkcml2ZXIgY2FuCisJCQlhZGQgb25lIG9yIG1vcmUgc3VjaCBjb250cm9scyBhbmQvb3IgYXR0cmlidXRlcworCQkJZm9yIHNwZWNpZmljIHVzZXMuCisJCQlPbmUgb3V0LW9mLXRyZWUgZHJpdmVyIHVzZXMgY29udHJvbHMgaGVyZSB0byBhbGxvdworCQkJZm9yIEVSUk9SIElOSkVDVElPTiBvcGVyYXRpb25zIHRvIGhhcmR3YXJlCisJCQlpbmplY3Rpb24gcmVnaXN0ZXJzCisKK1RoZSBzeW1saW5rIHBvaW50cyB0byB0aGUgJ3N0cnVjdCBkZXYnIHRoYXQgaXMgcmVnaXN0ZXJlZCBmb3IgdGhpcyBlZGFjX2RldmljZS4KKworSU5TVEFOQ0VTCistLS0tLS0tLS0KKworT25lIG9yIG1vcmUgaW5zdGFuY2UgZGlyZWN0b3JpZXMgYXJlIHByZXNlbnQuIEZvciB0aGUgJ3Rlc3RfZGV2aWNlX2VkYWMnIGNhc2U6CisKKwl0ZXN0LWluc3RhbmNlMAorCisKK0luIHRoaXMgZGlyZWN0b3J5IHRoZXJlIGFyZSB0d28gZGVmYXVsdCBjb3VudGVyIGF0dHJpYnV0ZXMsIHdoaWNoIGFyZSB0b3RhbHMgb2YKK2NvdW50ZXIgaW4gZGVlcGVyIHN1YmRpcmVjdG9yaWVzLgorCisJY2VfY291bnQJdG90YWwgb2YgQ0UgZXZlbnRzIG9mIHN1YmRpcmVjdG9yaWVzCisJdWVfY291bnQJdG90YWwgb2YgVUUgZXZlbnRzIG9mIHN1YmRpcmVjdG9yaWVzCisKK0JMT0NLUworLS0tLS0tCisKK0F0IHRoZSBsb3dlc3QgZGlyZWN0b3J5IGxldmVsIGlzIHRoZSAnYmxvY2snIGRpcmVjdG9yeS4gVGhlcmUgY2FuIGJlIDAsIDEKK29yIG1vcmUgYmxvY2tzIHNwZWNpZmllZCBpbiBlYWNoIGluc3RhbmNlLgorCisJdGVzdC1ibG9jazAKKworCitJbiB0aGlzIGRpcmVjdG9yeSB0aGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGFyZToKKworCWNlX2NvdW50CXdoaWNoIGlzIGNvdW50ZXIgb2YgQ0UgZXZlbnRzIGZvciB0aGlzICdibG9jaycKKwkJCW9mIGhhcmR3YXJlIGJlaW5nIG1vbml0b3JlZAorCXVlX2NvdW50CXdoaWNoIGlzIGNvdW50ZXIgb2YgVUUgZXZlbnRzIGZvciB0aGlzICdibG9jaycKKwkJCW9mIGhhcmR3YXJlIGJlaW5nIG1vbml0b3JlZAorCisKK1RoZSAndGVzdF9kZXZpY2VfZWRhYycgZGV2aWNlIGFkZHMgNCBhdHRyaWJ1dGVzIGFuZCAxIGNvbnRyb2w6CisKKwl0ZXN0LWJsb2NrLWJpdHMtMAlmb3IgZXZlcnkgUE9MTCBjeWNsZSB0aGlzIGNvdW50ZXIKKwkJCQlpcyBpbmNyZW1lbnRlZAorCXRlc3QtYmxvY2stYml0cy0xCWV2ZXJ5IDEwIGN5Y2xlcywgdGhpcyBjb3VudGVyIGlzIGJ1bXBlZCBvbmNlLAorCQkJCWFuZCB0ZXN0LWJsb2NrLWJpdHMtMCBpcyBzZXQgdG8gMAorCXRlc3QtYmxvY2stYml0cy0yCWV2ZXJ5IDEwMCBjeWNsZXMsIHRoaXMgY291bnRlciBpcyBidW1wZWQgb25jZSwKKwkJCQlhbmQgdGVzdC1ibG9jay1iaXRzLTEgaXMgc2V0IHRvIDAKKwl0ZXN0LWJsb2NrLWJpdHMtMwlldmVyeSAxMDAwIGN5Y2xlcywgdGhpcyBjb3VudGVyIGlzIGJ1bXBlZCBvbmNlLAorCQkJCWFuZCB0ZXN0LWJsb2NrLWJpdHMtMiBpcyBzZXQgdG8gMAorCisKKwlyZXNldC1jb3VudGVycwkJd3JpdGluZyBBTlkgdGhpbmcgdG8gdGhpcyBjb250cm9sIHdpbGwKKwkJCQlyZXNldCBhbGwgdGhlIGFib3ZlIGNvdW50ZXJzLgorCisKK1VzZSBvZiB0aGUgJ3Rlc3RfZGV2aWNlX2VkYWMnIGRyaXZlciBzaG91bGQgZW5hYmxlIGFueSBvdGhlcnMgdG8gY3JlYXRlIHRoZWlyIG93bgordW5pcXVlIGRyaXZlcnMgZm9yIHRoZWlyIGhhcmR3YXJlIHN5c3RlbXMuCisKK1RoZSAndGVzdF9kZXZpY2VfZWRhYycgc2FtcGxlIGRyaXZlciBpcyBsb2NhdGVkIGF0IHRoZQorYmx1ZXNtb2tlLnNvdXJjZWZvcmdlLm5ldCBwcm9qZWN0IHNpdGUgZm9yIEVEQUMuCisKKworTkVIQUxFTSBVU0FHRSBPRiBFREFDIEFQSXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgY2hhcHRlciBkb2N1bWVudHMgc29tZSBFWFBFUklNRU5UQUwgbWFwcGluZ3MgZm9yIEVEQUMgQVBJIHRvIGhhbmRsZQorTmVoYWxlbSBFREFDIGRyaXZlci4gVGhleSB3aWxsIGxpa2VseSBiZSBjaGFuZ2VkIG9uIGZ1dHVyZSB2ZXJzaW9ucworb2YgdGhlIGRyaXZlci4KKworRHVlIHRvIHRoZSB3YXkgTmVoYWxlbSBleHBvcnRzIE1lbW9yeSBDb250cm9sbGVyIGRhdGEsIHNvbWUgYWRqdXN0bWVudHMKK3dlcmUgZG9uZSBhdCBpN2NvcmVfZWRhYyBkcml2ZXIuIFRoaXMgY2hhcHRlciB3aWxsIGNvdmVyIHRob3NlIGRpZmZlcmVuY2VzCisKKzEpIE9uIE5laGFsZW0sIHRoZXJlIGlzIG9uZSBNZW1vcnkgQ29udHJvbGxlciBwZXIgUXVpY2sgUGF0Y2ggSW50ZXJjb25uZWN0CisgICAoUVBJKS4gQXQgdGhlIGRyaXZlciwgdGhlIHRlcm0gInNvY2tldCIgbWVhbnMgb25lIFFQSS4gVGhpcyBpcworICAgYXNzb2NpYXRlZCB3aXRoIGEgcGh5c2ljYWwgQ1BVIHNvY2tldC4KKworICAgRWFjaCBNQyBoYXZlIDMgcGh5c2ljYWwgcmVhZCBjaGFubmVscywgMyBwaHlzaWNhbCB3cml0ZSBjaGFubmVscyBhbmQKKyAgIDMgbG9naWMgY2hhbm5lbHMuIFRoZSBkcml2ZXIgY3VycmVudGx5IHNlZXMgaXQgYXMganVzdCAzIGNoYW5uZWxzLgorICAgRWFjaCBjaGFubmVsIGNhbiBoYXZlIHVwIHRvIDMgRElNTXMuCisKKyAgIFRoZSBtaW5pbXVtIGtub3duIHVuaXR5IGlzIERJTU1zLiBUaGVyZSBhcmUgbm8gaW5mb3JtYXRpb24gYWJvdXQgY3Nyb3dzLgorICAgQXMgRURBQyBBUEkgbWFwcyB0aGUgbWluaW11bSB1bml0eSBpcyBjc3Jvd3MsIHRoZSBkcml2ZXIgc2VxdWVudGlhbGx5CisgICBtYXBzIGNoYW5uZWwvZGltbSBpbnRvIGRpZmZlcmVudCBjc3Jvd3MuCisKKyAgIEZvciBleGFtcGxlLCBzdXBwb3NpbmcgdGhlIGZvbGxvd2luZyBsYXlvdXQ6CisJQ2gwIHBoeSByZDAsIHdyMCAoMHgwNjNmNDAzMSk6IDIgcmFua3MsIFVESU1NcworCSAgZGltbSAwIDEwMjQgTWIgb2Zmc2V0OiAwLCBiYW5rOiA4LCByYW5rOiAxLCByb3c6IDB4NDAwMCwgY29sOiAweDQwMAorCSAgZGltbSAxIDEwMjQgTWIgb2Zmc2V0OiA0LCBiYW5rOiA4LCByYW5rOiAxLCByb3c6IDB4NDAwMCwgY29sOiAweDQwMAorICAgICAgICBDaDEgcGh5IHJkMSwgd3IxICgweDA2M2Y0MDMxKTogMiByYW5rcywgVURJTU1zCisJICBkaW1tIDAgMTAyNCBNYiBvZmZzZXQ6IDAsIGJhbms6IDgsIHJhbms6IDEsIHJvdzogMHg0MDAwLCBjb2w6IDB4NDAwCisJQ2gyIHBoeSByZDMsIHdyMyAoMHgwNjNmNDAzMSk6IDIgcmFua3MsIFVESU1NcworCSAgZGltbSAwIDEwMjQgTWIgb2Zmc2V0OiAwLCBiYW5rOiA4LCByYW5rOiAxLCByb3c6IDB4NDAwMCwgY29sOiAweDQwMAorICAgVGhlIGRyaXZlciB3aWxsIG1hcCBpdCBhczoKKwljc3JvdzA6IGNoYW5uZWwgMCwgZGltbTAKKwljc3JvdzE6IGNoYW5uZWwgMCwgZGltbTEKKwljc3JvdzI6IGNoYW5uZWwgMSwgZGltbTAKKwljc3JvdzM6IGNoYW5uZWwgMiwgZGltbTAKKworZXhwb3J0cyBvbmUKKyAgIERJTU0gcGVyIGNzcm93LgorCisgICBFYWNoIFFQSSBpcyBleHBvcnRlZCBhcyBhIGRpZmZlcmVudCBtZW1vcnkgY29udHJvbGxlci4KKworMikgTmVoYWxlbSBNQyBoYXMgdGhlIGFiaWxpdHkgdG8gZ2VuZXJhdGUgZXJyb3JzLiBUaGUgZHJpdmVyIGltcGxlbWVudHMgdGhpcworICAgZnVuY3Rpb25hbGl0eSB2aWEgc29tZSBlcnJvciBpbmplY3Rpb24gbm9kZXM6CisKKyAgIEZvciBpbmplY3RpbmcgYSBtZW1vcnkgZXJyb3IsIHRoZXJlIGFyZSBzb21lIHN5c2ZzIG5vZGVzLCB1bmRlcgorICAgL3N5cy9kZXZpY2VzL3N5c3RlbS9lZGFjL21jL21jPy86CisKKyAgIGluamVjdF9hZGRybWF0Y2gvKjoKKyAgICAgIENvbnRyb2xzIHRoZSBlcnJvciBpbmplY3Rpb24gbWFzayByZWdpc3Rlci4gSXQgaXMgcG9zc2libGUgdG8gc3BlY2lmeQorICAgICAgc2V2ZXJhbCBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGFkZHJlc3MgdG8gbWF0Y2ggYW4gZXJyb3IgY29kZToKKyAgICAgICAgIGRpbW0gPSB0aGUgYWZmZWN0ZWQgZGltbS4gTnVtYmVycyBhcmUgcmVsYXRpdmUgdG8gYSBjaGFubmVsOworICAgICAgICAgcmFuayA9IHRoZSBtZW1vcnkgcmFuazsKKyAgICAgICAgIGNoYW5uZWwgPSB0aGUgY2hhbm5lbCB0aGF0IHdpbGwgZ2VuZXJhdGUgYW4gZXJyb3I7CisgICAgICAgICBiYW5rID0gdGhlIGFmZmVjdGVkIGJhbms7CisgICAgICAgICBwYWdlID0gdGhlIHBhZ2UgYWRkcmVzczsKKyAgICAgICAgIGNvbHVtbiAob3IgY29sKSA9IHRoZSBhZGRyZXNzIGNvbHVtbi4KKyAgICAgIGVhY2ggb2YgdGhlIGFib3ZlIHZhbHVlcyBjYW4gYmUgc2V0IHRvICJhbnkiIHRvIG1hdGNoIGFueSB2YWxpZCB2YWx1ZS4KKworICAgICAgQXQgZHJpdmVyIGluaXQsIGFsbCB2YWx1ZXMgYXJlIHNldCB0byBhbnkuCisKKyAgICAgIEZvciBleGFtcGxlLCB0byBnZW5lcmF0ZSBhbiBlcnJvciBhdCByYW5rIDEgb2YgZGltbSAyLCBmb3IgYW55IGNoYW5uZWwsCisgICAgICBhbnkgYmFuaywgYW55IHBhZ2UsIGFueSBjb2x1bW46CisJCWVjaG8gMiA+L3N5cy9kZXZpY2VzL3N5c3RlbS9lZGFjL21jL21jMC9pbmplY3RfYWRkcm1hdGNoL2RpbW0KKwkJZWNobyAxID4vc3lzL2RldmljZXMvc3lzdGVtL2VkYWMvbWMvbWMwL2luamVjdF9hZGRybWF0Y2gvcmFuaworCisJVG8gcmV0dXJuIHRvIHRoZSBkZWZhdWx0IGJlaGF2aW91ciBvZiBtYXRjaGluZyBhbnksIHlvdSBjYW4gZG86CisJCWVjaG8gYW55ID4vc3lzL2RldmljZXMvc3lzdGVtL2VkYWMvbWMvbWMwL2luamVjdF9hZGRybWF0Y2gvZGltbQorCQllY2hvIGFueSA+L3N5cy9kZXZpY2VzL3N5c3RlbS9lZGFjL21jL21jMC9pbmplY3RfYWRkcm1hdGNoL3JhbmsKKworICAgaW5qZWN0X2VjY21hc2s6CisgICAgICAgc3BlY2lmaWVzIHdoYXQgYml0cyB3aWxsIGhhdmUgdHJvdWJsZXMsCisKKyAgIGluamVjdF9zZWN0aW9uOgorICAgICAgIHNwZWNpZmllcyB3aGF0IEVDQyBjYWNoZSBzZWN0aW9uIHdpbGwgZ2V0IHRoZSBlcnJvcjoKKwkJMyBmb3IgYm90aAorCQkyIGZvciB0aGUgaGlnaGVzdAorCQkxIGZvciB0aGUgbG93ZXN0CisKKyAgIGluamVjdF90eXBlOgorICAgICAgIHNwZWNpZmllcyB0aGUgdHlwZSBvZiBlcnJvciwgYmVpbmcgYSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIGJpdHM6CisJCWJpdCAwIC0gcmVwZWF0CisJCWJpdCAxIC0gZWNjCisJCWJpdCAyIC0gcGFyaXR5CisKKyAgICAgICBpbmplY3RfZW5hYmxlIHN0YXJ0cyB0aGUgZXJyb3IgZ2VuZXJhdGlvbiB3aGVuIHNvbWV0aGluZyBkaWZmZXJlbnQKKyAgICAgICB0aGFuIDAgaXMgd3JpdHRlbi4KKworICAgQWxsIGluamVjdCB2YXJzIGNhbiBiZSByZWFkLiByb290IHBlcm1pc3Npb24gaXMgbmVlZGVkIGZvciB3cml0ZS4KKworICAgRGF0YXNoZWV0IHN0YXRlcyB0aGF0IHRoZSBlcnJvciB3aWxsIG9ubHkgYmUgZ2VuZXJhdGVkIGFmdGVyIGEgd3JpdGUgb24gYW4KKyAgIGFkZHJlc3MgdGhhdCBtYXRjaGVzIGluamVjdF9hZGRybWF0Y2guIEl0IHNlZW1zLCBob3dldmVyLCB0aGF0IHJlYWRpbmcgd2lsbAorICAgYWxzbyBwcm9kdWNlIGFuIGVycm9yLgorCisgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgZ2VuZXJhdGUgYW4gZXJyb3IgZm9yIGFueSB3cml0ZSBhY2Nlc3MKKyAgIGF0IHNvY2tldCAwLCBvbiBhbnkgRElNTS9hZGRyZXNzIG9uIGNoYW5uZWwgMjoKKworICAgZWNobyAyID4vc3lzL2RldmljZXMvc3lzdGVtL2VkYWMvbWMvbWMwL2luamVjdF9hZGRybWF0Y2gvY2hhbm5lbAorICAgZWNobyAyID4vc3lzL2RldmljZXMvc3lzdGVtL2VkYWMvbWMvbWMwL2luamVjdF90eXBlCisgICBlY2hvIDY0ID4vc3lzL2RldmljZXMvc3lzdGVtL2VkYWMvbWMvbWMwL2luamVjdF9lY2NtYXNrCisgICBlY2hvIDMgPi9zeXMvZGV2aWNlcy9zeXN0ZW0vZWRhYy9tYy9tYzAvaW5qZWN0X3NlY3Rpb24KKyAgIGVjaG8gMSA+L3N5cy9kZXZpY2VzL3N5c3RlbS9lZGFjL21jL21jMC9pbmplY3RfZW5hYmxlCisgICBkZCBpZj0vZGV2L21lbSBvZj0vZGV2L251bGwgc2Vlaz0xNmsgYnM9NGsgY291bnQ9MSA+JiAvZGV2L251bGwKKworICAgRm9yIHNvY2tldCAxLCBpdCBpcyBuZWVkZWQgdG8gcmVwbGFjZSAibWMwIiBieSAibWMxIiBhdCB0aGUgYWJvdmUKKyAgIGNvbW1hbmRzLgorCisgICBUaGUgZ2VuZXJhdGVkIGVycm9yIG1lc3NhZ2Ugd2lsbCBsb29rIGxpa2U6CisKKyAgIEVEQUMgTUMwOiBVRSByb3cgMCwgY2hhbm5lbC1hPSAwIGNoYW5uZWwtYj0gMCBsYWJlbHMgIi0iOiBOT05fRkFUQUwgKGFkZHIgPSAweDAwNzViOTgwLCBzb2NrZXQ9MCwgRGltbT0wLCBDaGFubmVsPTIsIHN5bmRyb21lPTB4MDAwMDAwNDAsIGNvdW50PTEsIEVycj04YzAwMDA0MDAwMDEwMDlmOjQwMDAwODA0ODIgKHJlYWQgZXJyb3I6IHJlYWQgRUNDIGVycm9yKSkKKworMykgTmVoYWxlbSBzcGVjaWZpYyBDb3JyZWN0ZWQgRXJyb3IgbWVtb3J5IGNvdW50ZXJzCisKKyAgIE5laGFsZW0gaGF2ZSBzb21lIHJlZ2lzdGVycyB0byBjb3VudCBtZW1vcnkgZXJyb3JzLiBUaGUgZHJpdmVyIHVzZXMgdGhvc2UKKyAgIHJlZ2lzdGVycyB0byByZXBvcnQgQ29ycmVjdGVkIEVycm9ycyBvbiBkZXZpY2VzIHdpdGggUmVnaXN0ZXJlZCBEaW1tcy4KKworICAgSG93ZXZlciwgdGhvc2UgY291bnRlcnMgZG9uJ3Qgd29yayB3aXRoIFVucmVnaXN0ZXJlZCBEaW1tcy4gQXMgdGhlIGNoaXBzZXQKKyAgIG9mZmVycyBzb21lIGNvdW50ZXJzIHRoYXQgYWxzbyB3b3JrIHdpdGggVURJTU1TIChidXQgd2l0aCBhIHdvcnNlIGxldmVsIG9mCisgICBncmFudWxhcml0eSB0aGFuIHRoZSBkZWZhdWx0IG9uZXMpLCB0aGUgZHJpdmVyIGV4cG9zZXMgdGhvc2UgcmVnaXN0ZXJzIGZvcgorICAgVURJTU0gbWVtb3JpZXMuCisKKyAgIFRoZXkgY2FuIGJlIHJlYWQgYnkgbG9va2luZyBhdCB0aGUgY29udGVudHMgb2YgYWxsX2NoYW5uZWxfY291bnRzLworCisgICAkIGZvciBpIGluIC9zeXMvZGV2aWNlcy9zeXN0ZW0vZWRhYy9tYy9tYzAvYWxsX2NoYW5uZWxfY291bnRzLyo7IGRvIGVjaG8gJGk7IGNhdCAkaTsgZG9uZQorCS9zeXMvZGV2aWNlcy9zeXN0ZW0vZWRhYy9tYy9tYzAvYWxsX2NoYW5uZWxfY291bnRzL3VkaW1tMAorCTAKKwkvc3lzL2RldmljZXMvc3lzdGVtL2VkYWMvbWMvbWMwL2FsbF9jaGFubmVsX2NvdW50cy91ZGltbTEKKwkwCisJL3N5cy9kZXZpY2VzL3N5c3RlbS9lZGFjL21jL21jMC9hbGxfY2hhbm5lbF9jb3VudHMvdWRpbW0yCisJMAorCisgICBXaGF0IGhhcHBlbnMgaGVyZSBpcyB0aGF0IGVycm9ycyBvbiBkaWZmZXJlbnQgY3Nyb3dzLCBidXQgYXQgdGhlIHNhbWUKKyAgIGRpbW0gbnVtYmVyIHdpbGwgaW5jcmVtZW50IHRoZSBzYW1lIGNvdW50ZXIuCisgICBTbywgaW4gdGhpcyBtZW1vcnkgbWFwcGluZzoKKwljc3JvdzA6IGNoYW5uZWwgMCwgZGltbTAKKwljc3JvdzE6IGNoYW5uZWwgMCwgZGltbTEKKwljc3JvdzI6IGNoYW5uZWwgMSwgZGltbTAKKwljc3JvdzM6IGNoYW5uZWwgMiwgZGltbTAKKyAgIFRoZSBoYXJkd2FyZSB3aWxsIGluY3JlbWVudCB1ZGltbTAgZm9yIGFuIGVycm9yIGF0IHRoZSBmaXJzdCBkaW1tIGF0IGVpdGhlcgorCWNzcm93MCwgY3Nyb3cyICBvciBjc3JvdzM7CisgICBUaGUgaGFyZHdhcmUgd2lsbCBpbmNyZW1lbnQgdWRpbW0xIGZvciBhbiBlcnJvciBhdCB0aGUgc2Vjb25kIGRpbW0gYXQgZWl0aGVyCisJY3Nyb3cwLCBjc3JvdzIgIG9yIGNzcm93MzsKKyAgIFRoZSBoYXJkd2FyZSB3aWxsIGluY3JlbWVudCB1ZGltbTIgZm9yIGFuIGVycm9yIGF0IHRoZSB0aGlyZCBkaW1tIGF0IGVpdGhlcgorCWNzcm93MCwgY3Nyb3cyICBvciBjc3JvdzM7CisKKzQpIFN0YW5kYXJkIGVycm9yIGNvdW50ZXJzCisKKyAgIFRoZSBzdGFuZGFyZCBlcnJvciBjb3VudGVycyBhcmUgZ2VuZXJhdGVkIHdoZW4gYW4gbWNlbG9nIGVycm9yIGlzIHJlY2VpdmVkCisgICBieSB0aGUgZHJpdmVyLiBTaW5jZSwgd2l0aCB1ZGltbSwgdGhpcyBpcyBjb3VudGVkIGJ5IHNvZnR3YXJlLCBpdCBpcworICAgcG9zc2libGUgdGhhdCBzb21lIGVycm9ycyBjb3VsZCBiZSBsb3N0LiBXaXRoIHJkaW1tJ3MsIHRoZXkgZGlzcGxheSB0aGUKKyAgIGNvbnRlbnRzIG9mIHRoZSByZWdpc3RlcnMKKworQU1ENjRfRURBQyBSRUZFUkVOQ0UgRE9DVU1FTlRTIFVTRUQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCithbWQ2NF9lZGFjIG1vZHVsZSBpcyBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIGRvY3VtZW50cworKGF2YWlsYWJsZSBmcm9tIGh0dHA6Ly9zdXBwb3J0LmFtZC5jb20vZW4tdXMvc2VhcmNoL3RlY2gtZG9jcyk6CisKKzEuIFRpdGxlOiAgQklPUyBhbmQgS2VybmVsIERldmVsb3BlcidzIEd1aWRlIGZvciBBTUQgQXRobG9uIDY0IGFuZCBBTUQKKwkgICBPcHRlcm9uIFByb2Nlc3NvcnMKKyAgIEFNRCBwdWJsaWNhdGlvbiAjOiAyNjA5NAorICAgUmV2aXNpb246IDMuMjYKKyAgIExpbms6IGh0dHA6Ly9zdXBwb3J0LmFtZC5jb20vVGVjaERvY3MvMjYwOTQuUERGCisKKzIuIFRpdGxlOiAgQklPUyBhbmQgS2VybmVsIERldmVsb3BlcidzIEd1aWRlIGZvciBBTUQgTlBUIEZhbWlseSAwRmgKKwkgICBQcm9jZXNzb3JzCisgICBBTUQgcHVibGljYXRpb24gIzogMzI1NTkKKyAgIFJldmlzaW9uOiAzLjAwCisgICBJc3N1ZSBEYXRlOiBNYXkgMjAwNgorICAgTGluazogaHR0cDovL3N1cHBvcnQuYW1kLmNvbS9UZWNoRG9jcy8zMjU1OS5wZGYKKworMy4gVGl0bGU6ICBCSU9TIGFuZCBLZXJuZWwgRGV2ZWxvcGVyJ3MgR3VpZGUgKEJLREcpIEZvciBBTUQgRmFtaWx5IDEwaAorCSAgIFByb2Nlc3NvcnMKKyAgIEFNRCBwdWJsaWNhdGlvbiAjOiAzMTExNgorICAgUmV2aXNpb246IDMuMDAKKyAgIElzc3VlIERhdGU6IFNlcHRlbWJlciAwNywgMjAwNworICAgTGluazogaHR0cDovL3N1cHBvcnQuYW1kLmNvbS9UZWNoRG9jcy8zMTExNi5wZGYKKworNC4gVGl0bGU6IEJJT1MgYW5kIEtlcm5lbCBEZXZlbG9wZXIncyBHdWlkZSAoQktERykgZm9yIEFNRCBGYW1pbHkgMTVoCisJICBNb2RlbHMgMzBoLTNGaCBQcm9jZXNzb3JzCisgICBBTUQgcHVibGljYXRpb24gIzogNDkxMjUKKyAgIFJldmlzaW9uOiAzLjA2CisgICBJc3N1ZSBEYXRlOiAyLzEyLzIwMTUgKGxhdGVzdCByZWxlYXNlKQorICAgTGluazogaHR0cDovL3N1cHBvcnQuYW1kLmNvbS9UZWNoRG9jcy80OTEyNV8xNWhfTW9kZWxzXzMwaC0zRmhfQktERy5wZGYKKworNS4gVGl0bGU6IEJJT1MgYW5kIEtlcm5lbCBEZXZlbG9wZXIncyBHdWlkZSAoQktERykgZm9yIEFNRCBGYW1pbHkgMTVoCisJICBNb2RlbHMgNjBoLTZGaCBQcm9jZXNzb3JzCisgICBBTUQgcHVibGljYXRpb24gIzogNTA3NDIKKyAgIFJldmlzaW9uOiAzLjAxCisgICBJc3N1ZSBEYXRlOiA3LzIzLzIwMTUgKGxhdGVzdCByZWxlYXNlKQorICAgTGluazogaHR0cDovL3N1cHBvcnQuYW1kLmNvbS9UZWNoRG9jcy81MDc0Ml8xNWhfTW9kZWxzXzYwaC02RmhfQktERy5wZGYKKworNi4gVGl0bGU6IEJJT1MgYW5kIEtlcm5lbCBEZXZlbG9wZXIncyBHdWlkZSAoQktERykgZm9yIEFNRCBGYW1pbHkgMTZoCisJICBNb2RlbHMgMDBoLTBGaCBQcm9jZXNzb3JzCisgICBBTUQgcHVibGljYXRpb24gIzogNDg3NTEKKyAgIFJldmlzaW9uOiAzLjAzCisgICBJc3N1ZSBEYXRlOiAyLzIzLzIwMTUgKGxhdGVzdCByZWxlYXNlKQorICAgTGluazogaHR0cDovL3N1cHBvcnQuYW1kLmNvbS9UZWNoRG9jcy80ODc1MV8xNmhfYmtkZy5wZGYKKworQ1JFRElUUzoKKz09PT09PT09CisKK1dyaXR0ZW4gYnkgRG91ZyBUaG9tcHNvbiA8ZG91Z3Rob21wc29uQHhtaXNzaW9uLmNvbT4KKzcgRGVjIDIwMDUKKzE3IEp1bCAyMDA3CVVwZGF0ZWQKKworKGMpIE1hdXJvIENhcnZhbGhvIENoZWhhYgorMDUgQXVnIDIwMDkJTmVoYWxlbSBpbnRlcmZhY2UKKworRURBQyBhdXRob3JzL21haW50YWluZXJzOgorCisJRG91ZyBUaG9tcHNvbiwgRGF2ZSBKaWFuZywgRGF2ZSBQZXRlcnNvbiBldCBhbCwKKwlNYXVybyBDYXJ2YWxobyBDaGVoYWIKKwlCb3Jpc2xhdiBQZXRrb3YKKwlvcmlnaW5hbCBhdXRob3I6IFRoYXluZSBIYXJiYXVnaApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9lZmktc3R1Yi50eHQgYi9Eb2N1bWVudGF0aW9uL2VmaS1zdHViLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzQ3MDI0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9lZmktc3R1Yi50eHQKQEAgLTAsMCArMSw4NCBAQAorCQkJICBUaGUgRUZJIEJvb3QgU3R1YgorCQkgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPbiB0aGUgeDg2IGFuZCBBUk0gcGxhdGZvcm1zLCBhIGtlcm5lbCB6SW1hZ2UvYnpJbWFnZSBjYW4gbWFzcXVlcmFkZQorYXMgYSBQRS9DT0ZGIGltYWdlLCB0aGVyZWJ5IGNvbnZpbmNpbmcgRUZJIGZpcm13YXJlIGxvYWRlcnMgdG8gbG9hZAoraXQgYXMgYW4gRUZJIGV4ZWN1dGFibGUuIFRoZSBjb2RlIHRoYXQgbW9kaWZpZXMgdGhlIGJ6SW1hZ2UgaGVhZGVyLAorYWxvbmcgd2l0aCB0aGUgRUZJLXNwZWNpZmljIGVudHJ5IHBvaW50IHRoYXQgdGhlIGZpcm13YXJlIGxvYWRlcgoranVtcHMgdG8gYXJlIGNvbGxlY3RpdmVseSBrbm93biBhcyB0aGUgIkVGSSBib290IHN0dWIiLCBhbmQgbGl2ZSBpbgorYXJjaC94ODYvYm9vdC9oZWFkZXIuUyBhbmQgYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL2Vib290LmMsCityZXNwZWN0aXZlbHkuIEZvciBBUk0gdGhlIEVGSSBzdHViIGlzIGltcGxlbWVudGVkIGluCithcmNoL2FybS9ib290L2NvbXByZXNzZWQvZWZpLWhlYWRlci5TIGFuZAorYXJjaC9hcm0vYm9vdC9jb21wcmVzc2VkL2VmaS1zdHViLmMuIEVGSSBzdHViIGNvZGUgdGhhdCBpcyBzaGFyZWQKK2JldHdlZW4gYXJjaGl0ZWN0dXJlcyBpcyBpbiBkcml2ZXJzL2Zpcm13YXJlL2VmaS9lZmktc3R1Yi1oZWxwZXIuYy4KKworRm9yIGFybTY0LCB0aGVyZSBpcyBubyBjb21wcmVzc2VkIGtlcm5lbCBzdXBwb3J0LCBzbyB0aGUgSW1hZ2UgaXRzZWxmCittYXNxdWVyYWRlcyBhcyBhIFBFL0NPRkYgaW1hZ2UgYW5kIHRoZSBFRkkgc3R1YiBpcyBsaW5rZWQgaW50byB0aGUKK2tlcm5lbC4gVGhlIGFybTY0IEVGSSBzdHViIGxpdmVzIGluIGFyY2gvYXJtNjQva2VybmVsL2VmaS1lbnRyeS5TCithbmQgYXJjaC9hcm02NC9rZXJuZWwvZWZpLXN0dWIuYy4KKworQnkgdXNpbmcgdGhlIEVGSSBib290IHN0dWIgaXQncyBwb3NzaWJsZSB0byBib290IGEgTGludXgga2VybmVsCit3aXRob3V0IHRoZSB1c2Ugb2YgYSBjb252ZW50aW9uYWwgRUZJIGJvb3QgbG9hZGVyLCBzdWNoIGFzIGdydWIgb3IKK2VsaWxvLiBTaW5jZSB0aGUgRUZJIGJvb3Qgc3R1YiBwZXJmb3JtcyB0aGUgam9icyBvZiBhIGJvb3QgbG9hZGVyLCBpbgorYSBjZXJ0YWluIHNlbnNlIGl0ICpJUyogdGhlIGJvb3QgbG9hZGVyLgorCitUaGUgRUZJIGJvb3Qgc3R1YiBpcyBlbmFibGVkIHdpdGggdGhlIENPTkZJR19FRklfU1RVQiBrZXJuZWwgb3B0aW9uLgorCisKKyoqKiogSG93IHRvIGluc3RhbGwgYnpJbWFnZS5lZmkKKworVGhlIGJ6SW1hZ2UgbG9jYXRlZCBpbiBhcmNoL3g4Ni9ib290L2J6SW1hZ2UgbXVzdCBiZSBjb3BpZWQgdG8gdGhlIEVGSQorU3lzdGVtIFBhcnRpdGlvbiAoRVNQKSBhbmQgcmVuYW1lZCB3aXRoIHRoZSBleHRlbnNpb24gIi5lZmkiLiBXaXRob3V0Cit0aGUgZXh0ZW5zaW9uIHRoZSBFRkkgZmlybXdhcmUgbG9hZGVyIHdpbGwgcmVmdXNlIHRvIGV4ZWN1dGUgaXQuIEl0J3MKK25vdCBwb3NzaWJsZSB0byBleGVjdXRlIGJ6SW1hZ2UuZWZpIGZyb20gdGhlIHVzdWFsIExpbnV4IGZpbGUgc3lzdGVtcworYmVjYXVzZSBFRkkgZmlybXdhcmUgZG9lc24ndCBoYXZlIHN1cHBvcnQgZm9yIHRoZW0uIEZvciBBUk0gdGhlCithcmNoL2FybS9ib290L3pJbWFnZSBzaG91bGQgYmUgY29waWVkIHRvIHRoZSBzeXN0ZW0gcGFydGl0aW9uLCBhbmQgaXQKK21heSBub3QgbmVlZCB0byBiZSByZW5hbWVkLiBTaW1pbGFybHkgZm9yIGFybTY0LCBhcmNoL2FybTY0L2Jvb3QvSW1hZ2UKK3Nob3VsZCBiZSBjb3BpZWQgYnV0IG5vdCBuZWNlc3NhcmlseSByZW5hbWVkLgorCisKKyoqKiogUGFzc2luZyBrZXJuZWwgcGFyYW1ldGVycyBmcm9tIHRoZSBFRkkgc2hlbGwKKworQXJndW1lbnRzIHRvIHRoZSBrZXJuZWwgY2FuIGJlIHBhc3NlZCBhZnRlciBiekltYWdlLmVmaSwgZS5nLgorCisJZnMwOj4gYnpJbWFnZS5lZmkgY29uc29sZT10dHlTMCByb290PS9kZXYvc2RhNAorCisKKyoqKiogVGhlICJpbml0cmQ9IiBvcHRpb24KKworTGlrZSBtb3N0IGJvb3QgbG9hZGVycywgdGhlIEVGSSBzdHViIGFsbG93cyB0aGUgdXNlciB0byBzcGVjaWZ5CittdWx0aXBsZSBpbml0cmQgZmlsZXMgdXNpbmcgdGhlICJpbml0cmQ9IiBvcHRpb24uIFRoaXMgaXMgdGhlIG9ubHkgRUZJCitzdHViLXNwZWNpZmljIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXIsIGV2ZXJ5dGhpbmcgZWxzZSBpcyBwYXNzZWQgdG8gdGhlCitrZXJuZWwgd2hlbiBpdCBib290cy4KKworVGhlIHBhdGggdG8gdGhlIGluaXRyZCBmaWxlIG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aCBmcm9tIHRoZQorYmVnaW5uaW5nIG9mIHRoZSBFU1AsIHJlbGF0aXZlIHBhdGggbmFtZXMgZG8gbm90IHdvcmsuIEFsc28sIHRoZSBwYXRoCitpcyBhbiBFRkktc3R5bGUgcGF0aCBhbmQgZGlyZWN0b3J5IGVsZW1lbnRzIG11c3QgYmUgc2VwYXJhdGVkIHdpdGgKK2JhY2tzbGFzaGVzIChcKS4gRm9yIGV4YW1wbGUsIGdpdmVuIHRoZSBmb2xsb3dpbmcgZGlyZWN0b3J5IGxheW91dCwKKworZnMwOj4KKwlLZXJuZWxzXAorCQkJYnpJbWFnZS5lZmkKKwkJCWluaXRyZC1sYXJnZS5pbWcKKworCVJhbWRpc2tzXAorCQkJaW5pdHJkLXNtYWxsLmltZworCQkJaW5pdHJkLW1lZGl1bS5pbWcKKwordG8gYm9vdCB3aXRoIHRoZSBpbml0cmQtbGFyZ2UuaW1nIGZpbGUgaWYgdGhlIGN1cnJlbnQgd29ya2luZworZGlyZWN0b3J5IGlzIGZzMDpcS2VybmVscywgdGhlIGZvbGxvd2luZyBjb21tYW5kIG11c3QgYmUgdXNlZCwKKworCWZzMDpcS2VybmVscz4gYnpJbWFnZS5lZmkgaW5pdHJkPVxLZXJuZWxzXGluaXRyZC1sYXJnZS5pbWcKKworTm90aWNlIGhvdyBiekltYWdlLmVmaSBjYW4gYmUgc3BlY2lmaWVkIHdpdGggYSByZWxhdGl2ZSBwYXRoLiBUaGF0J3MKK2JlY2F1c2UgdGhlIGltYWdlIHdlJ3JlIGV4ZWN1dGluZyBpcyBpbnRlcnByZXRlZCBieSB0aGUgRUZJIHNoZWxsLAord2hpY2ggdW5kZXJzdGFuZHMgcmVsYXRpdmUgcGF0aHMsIHdoZXJlYXMgdGhlIHJlc3Qgb2YgdGhlIGNvbW1hbmQgbGluZQoraXMgcGFzc2VkIHRvIGJ6SW1hZ2UuZWZpLgorCisKKyoqKiogVGhlICJkdGI9IiBvcHRpb24KKworRm9yIHRoZSBBUk0gYW5kIGFybTY0IGFyY2hpdGVjdHVyZXMsIHdlIGFsc28gbmVlZCB0byBiZSBhYmxlIHRvIHByb3ZpZGUgYQorZGV2aWNlIHRyZWUgdG8gdGhlIGtlcm5lbC4gVGhpcyBpcyBkb25lIHdpdGggdGhlICJkdGI9IiBjb21tYW5kIGxpbmUgb3B0aW9uLAorYW5kIGlzIHByb2Nlc3NlZCBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgdGhlICJpbml0cmQ9IiBvcHRpb24gdGhhdCBpcworZGVzY3JpYmVkIGFib3ZlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9laXNhLnR4dCBiL0RvY3VtZW50YXRpb24vZWlzYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTU1ZTQ5MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZWlzYS50eHQKQEAgLTAsMCArMSwyMDMgQEAKK0VJU0EgYnVzIHN1cHBvcnQgKE1hcmMgWnluZ2llciA8bWF6QHdpbGQtd2luZC5mci5ldS5vcmc+KQorCitUaGlzIGRvY3VtZW50IGdyb3VwcyByYW5kb20gbm90ZXMgYWJvdXQgcG9ydGluZyBFSVNBIGRyaXZlcnMgdG8gdGhlCituZXcgRUlTQS9zeXNmcyBBUEkuCisKK1N0YXJ0aW5nIGZyb20gdmVyc2lvbiAyLjUuNTksIHRoZSBFSVNBIGJ1cyBpcyBhbG1vc3QgZ2l2ZW4gdGhlIHNhbWUKK3N0YXR1cyBhcyBvdGhlciBtdWNoIG1vcmUgbWFpbnN0cmVhbSBidXNzZXMgc3VjaCBhcyBQQ0kgb3IgVVNCLiBUaGlzCitoYXMgYmVlbiBwb3NzaWJsZSB0aHJvdWdoIHN5c2ZzLCB3aGljaCBkZWZpbmVzIGEgbmljZSBlbm91Z2ggc2V0IG9mCithYnN0cmFjdGlvbnMgdG8gbWFuYWdlIGJ1c3NlcywgZGV2aWNlcyBhbmQgZHJpdmVycy4KKworQWx0aG91Z2ggdGhlIG5ldyBBUEkgaXMgcXVpdGUgc2ltcGxlIHRvIHVzZSwgY29udmVydGluZyBleGlzdGluZworZHJpdmVycyB0byB0aGUgbmV3IGluZnJhc3RydWN0dXJlIGlzIG5vdCBhbiBlYXN5IHRhc2sgKG1vc3RseSBiZWNhdXNlCitkZXRlY3Rpb24gY29kZSBpcyBnZW5lcmFsbHkgYWxzbyB1c2VkIHRvIHByb2JlIElTQSBjYXJkcykuIE1vcmVvdmVyLAorbW9zdCBFSVNBIGRyaXZlcnMgYXJlIGFtb25nIHRoZSBvbGRlc3QgTGludXggZHJpdmVycyBzbywgYXMgeW91IGNhbgoraW1hZ2luZSwgc29tZSBkdXN0IGhhcyBzZXR0bGVkIGhlcmUgb3ZlciB0aGUgeWVhcnMuCisKK1RoZSBFSVNBIGluZnJhc3RydWN0dXJlIGlzIG1hZGUgdXAgb2YgdGhyZWUgcGFydHMgOgorCisgICAgLSBUaGUgYnVzIGNvZGUgaW1wbGVtZW50cyBtb3N0IG9mIHRoZSBnZW5lcmljIGNvZGUuIEl0IGlzIHNoYXJlZAorICAgIGFtb25nIGFsbCB0aGUgYXJjaGl0ZWN0dXJlcyB0aGF0IHRoZSBFSVNBIGNvZGUgcnVucyBvbi4gSXQKKyAgICBpbXBsZW1lbnRzIGJ1cyBwcm9iaW5nIChkZXRlY3RpbmcgRUlTQSBjYXJkcyBhdmFpbGFibGUgb24gdGhlIGJ1cyksCisgICAgYWxsb2NhdGVzIEkvTyByZXNvdXJjZXMsIGFsbG93cyBmYW5jeSBuYW1pbmcgdGhyb3VnaCBzeXNmcywgYW5kCisgICAgb2ZmZXJzIGludGVyZmFjZXMgZm9yIGRyaXZlciB0byByZWdpc3Rlci4KKworICAgIC0gVGhlIGJ1cyByb290IGRyaXZlciBpbXBsZW1lbnRzIHRoZSBnbHVlIGJldHdlZW4gdGhlIGJ1cyBoYXJkd2FyZQorICAgIGFuZCB0aGUgZ2VuZXJpYyBidXMgY29kZS4gSXQgaXMgcmVzcG9uc2libGUgZm9yIGRpc2NvdmVyaW5nIHRoZQorICAgIGRldmljZSBpbXBsZW1lbnRpbmcgdGhlIGJ1cywgYW5kIHNldHRpbmcgaXQgdXAgdG8gYmUgbGF0dGVyIHByb2JlZAorICAgIGJ5IHRoZSBidXMgY29kZS4gVGhpcyBjYW4gZ28gZnJvbSBzb21ldGhpbmcgYXMgc2ltcGxlIGFzIHJlc2VydmluZworICAgIGFuIEkvTyByZWdpb24gb24geDg2LCB0byB0aGUgcmF0aGVyIG1vcmUgY29tcGxleCwgbGlrZSB0aGUgaHBwYQorICAgIEVJU0EgY29kZS4gVGhpcyBpcyB0aGUgcGFydCB0byBpbXBsZW1lbnQgaW4gb3JkZXIgdG8gaGF2ZSBFSVNBCisgICAgcnVubmluZyBvbiBhbiAibmV3IiBwbGF0Zm9ybS4KKworICAgIC0gVGhlIGRyaXZlciBvZmZlcnMgdGhlIGJ1cyBhIGxpc3Qgb2YgZGV2aWNlcyB0aGF0IGl0IG1hbmFnZXMsIGFuZAorICAgIGltcGxlbWVudHMgdGhlIG5lY2Vzc2FyeSBjYWxsYmFja3MgdG8gcHJvYmUgYW5kIHJlbGVhc2UgZGV2aWNlcworICAgIHdoZW5ldmVyIHRvbGQgdG8uCisKK0V2ZXJ5IGZ1bmN0aW9uL3N0cnVjdHVyZSBiZWxvdyBsaXZlcyBpbiA8bGludXgvZWlzYS5oPiwgd2hpY2ggZGVwZW5kcworaGVhdmlseSBvbiA8bGludXgvZGV2aWNlLmg+LgorCisqKiBCdXMgcm9vdCBkcml2ZXIgOgorCitpbnQgZWlzYV9yb290X3JlZ2lzdGVyIChzdHJ1Y3QgZWlzYV9yb290X2RldmljZSAqcm9vdCk7CisKK1RoZSBlaXNhX3Jvb3RfcmVnaXN0ZXIgZnVuY3Rpb24gaXMgdXNlZCB0byBkZWNsYXJlIGEgZGV2aWNlIGFzIHRoZQorcm9vdCBvZiBhbiBFSVNBIGJ1cy4gVGhlIGVpc2Ffcm9vdF9kZXZpY2Ugc3RydWN0dXJlIGhvbGRzIGEgcmVmZXJlbmNlCit0byB0aGlzIGRldmljZSwgYXMgd2VsbCBhcyBzb21lIHBhcmFtZXRlcnMgZm9yIHByb2JpbmcgcHVycG9zZXMuCisKK3N0cnVjdCBlaXNhX3Jvb3RfZGV2aWNlIHsKKwlzdHJ1Y3QgZGV2aWNlICAgKmRldjsJIC8qIFBvaW50ZXIgdG8gYnJpZGdlIGRldmljZSAqLworCXN0cnVjdCByZXNvdXJjZSAqcmVzOworCXVuc2lnbmVkIGxvbmcgICAgYnVzX2Jhc2VfYWRkcjsKKwlpbnQJCSBzbG90czsgIC8qIE1heCBzbG90IG51bWJlciAqLworCWludAkJIGZvcmNlX3Byb2JlOyAvKiBQcm9iZSBldmVuIHdoZW4gbm8gc2xvdCAwICovCisJdTY0CQkgZG1hX21hc2s7IC8qIGZyb20gYnJpZGdlIGRldmljZSAqLworCWludCAgICAgICAgICAgICAgYnVzX25yOyAvKiBTZXQgYnkgZWlzYV9yb290X3JlZ2lzdGVyICovCisJc3RydWN0IHJlc291cmNlICBlaXNhX3Jvb3RfcmVzOwkvKiBkaXR0byAqLworfTsKKworbm9kZSAgICAgICAgICA6IHVzZWQgZm9yIGVpc2Ffcm9vdF9yZWdpc3RlciBpbnRlcm5hbCBwdXJwb3NlCitkZXYgICAgICAgICAgIDogcG9pbnRlciB0byB0aGUgcm9vdCBkZXZpY2UKK3JlcyAgICAgICAgICAgOiByb290IGRldmljZSBJL08gcmVzb3VyY2UKK2J1c19iYXNlX2FkZHIgOiBzbG90IDAgYWRkcmVzcyBvbiB0aGlzIGJ1cworc2xvdHMJICAgICAgOiBtYXggc2xvdCBudW1iZXIgdG8gcHJvYmUKK2ZvcmNlX3Byb2JlICAgOiBQcm9iZSBldmVuIHdoZW4gc2xvdCAwIGlzIGVtcHR5IChubyBFSVNBIG1haW5ib2FyZCkKK2RtYV9tYXNrICAgICAgOiBEZWZhdWx0IERNQSBtYXNrLiBVc3VhbGx5IHRoZSBicmlkZ2UgZGV2aWNlIGRtYV9tYXNrLgorYnVzX25yCSAgICAgIDogdW5pcXVlIGJ1cyBpZCwgc2V0IGJ5IGVpc2Ffcm9vdF9yZWdpc3RlcgorCisqKiBEcml2ZXIgOgorCitpbnQgZWlzYV9kcml2ZXJfcmVnaXN0ZXIgKHN0cnVjdCBlaXNhX2RyaXZlciAqZWRydik7Cit2b2lkIGVpc2FfZHJpdmVyX3VucmVnaXN0ZXIgKHN0cnVjdCBlaXNhX2RyaXZlciAqZWRydik7CisKK0NsZWFyIGVub3VnaCA/CisKK3N0cnVjdCBlaXNhX2RldmljZV9pZCB7CisgICAgICAgIGNoYXIgc2lnW0VJU0FfU0lHX0xFTl07CisJdW5zaWduZWQgbG9uZyBkcml2ZXJfZGF0YTsKK307CisKK3N0cnVjdCBlaXNhX2RyaXZlciB7CisgICAgICAgIGNvbnN0IHN0cnVjdCBlaXNhX2RldmljZV9pZCAqaWRfdGFibGU7CisgICAgICAgIHN0cnVjdCBkZXZpY2VfZHJpdmVyICAgICAgICAgZHJpdmVyOworfTsKKworaWRfdGFibGUJOiBhbiBhcnJheSBvZiBOVUxMIHRlcm1pbmF0ZWQgRUlTQSBpZCBzdHJpbmdzLAorCQkgIGZvbGxvd2VkIGJ5IGFuIGVtcHR5IHN0cmluZy4gRWFjaCBzdHJpbmcgY2FuCisJCSAgb3B0aW9uYWxseSBiZSBwYWlyZWQgd2l0aCBhIGRyaXZlci1kZXBlbmRlbnQgdmFsdWUKKwkJICAoZHJpdmVyX2RhdGEpLgorCitkcml2ZXIJCTogYSBnZW5lcmljIGRyaXZlciwgc3VjaCBhcyBkZXNjcmliZWQgaW4KKwkJICBEb2N1bWVudGF0aW9uL2RyaXZlci1tb2RlbC9kcml2ZXIudHh0LiBPbmx5IC5uYW1lLAorCQkgIC5wcm9iZSBhbmQgLnJlbW92ZSBtZW1iZXJzIGFyZSBtYW5kYXRvcnkuCisKK0FuIGV4YW1wbGUgaXMgdGhlIDNjNTl4IGRyaXZlciA6CisKK3N0YXRpYyBzdHJ1Y3QgZWlzYV9kZXZpY2VfaWQgdm9ydGV4X2Vpc2FfaWRzW10gPSB7CisJeyAiVENNNTkyMCIsIEVJU0FfM0M1OTJfT0ZGU0VUIH0sCisJeyAiVENNNTk3MCIsIEVJU0FfM0M1OTdfT0ZGU0VUIH0sCisJeyAiIiB9Cit9OworCitzdGF0aWMgc3RydWN0IGVpc2FfZHJpdmVyIHZvcnRleF9laXNhX2RyaXZlciA9IHsKKwkuaWRfdGFibGUgPSB2b3J0ZXhfZWlzYV9pZHMsCisJLmRyaXZlciAgID0geworCQkubmFtZSAgICA9ICIzYzU5eCIsCisJCS5wcm9iZSAgID0gdm9ydGV4X2Vpc2FfcHJvYmUsCisJCS5yZW1vdmUgID0gdm9ydGV4X2Vpc2FfcmVtb3ZlCisJfQorfTsKKworKiogRGV2aWNlIDoKKworVGhlIHN5c2ZzIGZyYW1ld29yayBjYWxscyAucHJvYmUgYW5kIC5yZW1vdmUgZnVuY3Rpb25zIHVwb24gZGV2aWNlCitkaXNjb3ZlcnkgYW5kIHJlbW92YWwgKG5vdGUgdGhhdCB0aGUgLnJlbW92ZSBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZAord2hlbiBkcml2ZXIgaXMgYnVpbHQgYXMgYSBtb2R1bGUpLgorCitCb3RoIGZ1bmN0aW9ucyBhcmUgcGFzc2VkIGEgcG9pbnRlciB0byBhICdzdHJ1Y3QgZGV2aWNlJywgd2hpY2ggaXMKK2VuY2Fwc3VsYXRlZCBpbiBhICdzdHJ1Y3QgZWlzYV9kZXZpY2UnIGRlc2NyaWJlZCBhcyBmb2xsb3dzIDoKKworc3RydWN0IGVpc2FfZGV2aWNlIHsKKyAgICAgICAgc3RydWN0IGVpc2FfZGV2aWNlX2lkIGlkOworICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgc2xvdDsKKwlpbnQgICAgICAgICAgICAgICAgICAgc3RhdGU7CisJdW5zaWduZWQgbG9uZyAgICAgICAgIGJhc2VfYWRkcjsKKwlzdHJ1Y3QgcmVzb3VyY2UgICAgICAgcmVzW0VJU0FfTUFYX1JFU09VUkNFU107CisJdTY0ICAgICAgICAgICAgICAgICAgIGRtYV9tYXNrOworICAgICAgICBzdHJ1Y3QgZGV2aWNlICAgICAgICAgZGV2OyAvKiBnZW5lcmljIGRldmljZSAqLworfTsKKworaWQJOiBFSVNBIGlkLCBhcyByZWFkIGZyb20gZGV2aWNlLiBpZC5kcml2ZXJfZGF0YSBpcyBzZXQgZnJvbSB0aGUKKwkgIG1hdGNoaW5nIGRyaXZlciBFSVNBIGlkLgorc2xvdAk6IHNsb3QgbnVtYmVyIHdoaWNoIHRoZSBkZXZpY2Ugd2FzIGRldGVjdGVkIG9uCitzdGF0ZSAgIDogc2V0IG9mIGZsYWdzIGluZGljYXRpbmcgdGhlIHN0YXRlIG9mIHRoZSBkZXZpY2UuIEN1cnJlbnQKKwkgIGZsYWdzIGFyZSBFSVNBX0NPTkZJR19FTkFCTEVEIGFuZCBFSVNBX0NPTkZJR19GT1JDRUQuCityZXMJOiBzZXQgb2YgZm91ciAyNTYgYnl0ZXMgSS9PIHJlZ2lvbnMgYWxsb2NhdGVkIHRvIHRoaXMgZGV2aWNlCitkbWFfbWFzazogRE1BIG1hc2sgc2V0IGZyb20gdGhlIHBhcmVudCBkZXZpY2UuCitkZXYJOiBnZW5lcmljIGRldmljZSAoc2VlIERvY3VtZW50YXRpb24vZHJpdmVyLW1vZGVsL2RldmljZS50eHQpCisKK1lvdSBjYW4gZ2V0IHRoZSAnc3RydWN0IGVpc2FfZGV2aWNlJyBmcm9tICdzdHJ1Y3QgZGV2aWNlJyB1c2luZyB0aGUKKyd0b19laXNhX2RldmljZScgbWFjcm8uCisKKyoqIE1pc2Mgc3R1ZmYgOgorCit2b2lkIGVpc2Ffc2V0X2RydmRhdGEgKHN0cnVjdCBlaXNhX2RldmljZSAqZWRldiwgdm9pZCAqZGF0YSk7CisKK1N0b3JlcyBkYXRhIGludG8gdGhlIGRldmljZSdzIGRyaXZlcl9kYXRhIGFyZWEuCisKK3ZvaWQgKmVpc2FfZ2V0X2RydmRhdGEgKHN0cnVjdCBlaXNhX2RldmljZSAqZWRldik6CisKK0dldHMgdGhlIHBvaW50ZXIgcHJldmlvdXNseSBzdG9yZWQgaW50byB0aGUgZGV2aWNlJ3MgZHJpdmVyX2RhdGEgYXJlYS4KKworaW50IGVpc2FfZ2V0X3JlZ2lvbl9pbmRleCAodm9pZCAqYWRkcik7CisKK1JldHVybnMgdGhlIHJlZ2lvbiBudW1iZXIgKDAgPD0geCA8IEVJU0FfTUFYX1JFU09VUkNFUykgb2YgYSBnaXZlbgorYWRkcmVzcy4KKworKiogS2VybmVsIHBhcmFtZXRlcnMgOgorCitlaXNhX2J1cy5lbmFibGVfZGV2IDoKKworQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBzbG90cyB0byBiZSBlbmFibGVkLCBldmVuIGlmIHRoZSBmaXJtd2FyZQorc2V0IHRoZSBjYXJkIGFzIGRpc2FibGVkLiBUaGUgZHJpdmVyIG11c3QgYmUgYWJsZSB0byBwcm9wZXJseQoraW5pdGlhbGl6ZSB0aGUgZGV2aWNlIGluIHN1Y2ggY29uZGl0aW9ucy4KKworZWlzYV9idXMuZGlzYWJsZV9kZXYgOgorCitBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHNsb3RzIHRvIGJlIGVuYWJsZWQsIGV2ZW4gaWYgdGhlIGZpcm13YXJlCitzZXQgdGhlIGNhcmQgYXMgZW5hYmxlZC4gVGhlIGRyaXZlciB3b24ndCBiZSBjYWxsZWQgdG8gaGFuZGxlIHRoaXMKK2RldmljZS4KKwordmlydHVhbF9yb290LmZvcmNlX3Byb2JlIDoKKworRm9yY2UgdGhlIHByb2JpbmcgY29kZSB0byBwcm9iZSBFSVNBIHNsb3RzIGV2ZW4gd2hlbiBpdCBjYW5ub3QgZmluZCBhbgorRUlTQSBjb21wbGlhbnQgbWFpbmJvYXJkIChub3RoaW5nIGFwcGVhcnMgb24gc2xvdCAwKS4gRGVmYXVsdHMgdG8gMAorKGRvbid0IGZvcmNlKSwgYW5kIHNldCB0byAxIChmb3JjZSBwcm9iaW5nKSB3aGVuIGVpdGhlcgorQ09ORklHX0FMUEhBX0pFTlNFTiBvciBDT05GSUdfRUlTQV9WTEJfUFJJTUlORyBhcmUgc2V0LgorCisqKiBSYW5kb20gbm90ZXMgOgorCitDb252ZXJ0aW5nIGFuIEVJU0EgZHJpdmVyIHRvIHRoZSBuZXcgQVBJIG1vc3RseSBpbnZvbHZlcyAqZGVsZXRpbmcqCitjb2RlIChzaW5jZSBwcm9iaW5nIGlzIG5vdyBpbiB0aGUgY29yZSBFSVNBIGNvZGUpLiBVbmZvcnR1bmF0ZWx5LCBtb3N0Citkcml2ZXJzIHNoYXJlIHRoZWlyIHByb2Jpbmcgcm91dGluZSBiZXR3ZWVuIElTQSwgYW5kIEVJU0EuIFNwZWNpYWwKK2NhcmUgbXVzdCBiZSB0YWtlbiB3aGVuIHJpcHBpbmcgb3V0IHRoZSBFSVNBIGNvZGUsIHNvIG90aGVyIGJ1c3Nlcword29uJ3Qgc3VmZmVyIGZyb20gdGhlc2Ugc3VyZ2ljYWwgc3RyaWtlcy4uLgorCitZb3UgKm11c3Qgbm90KiBleHBlY3QgYW55IEVJU0EgZGV2aWNlIHRvIGJlIGRldGVjdGVkIHdoZW4gcmV0dXJuaW5nCitmcm9tIGVpc2FfZHJpdmVyX3JlZ2lzdGVyLCBzaW5jZSB0aGUgY2hhbmNlcyBhcmUgdGhhdCB0aGUgYnVzIGhhcyBub3QKK3lldCBiZWVuIHByb2JlZC4gSW4gZmFjdCwgdGhhdCdzIHdoYXQgaGFwcGVucyBtb3N0IG9mIHRoZSB0aW1lICh0aGUKK2J1cyByb290IGRyaXZlciB1c3VhbGx5IGtpY2tzIGluIHJhdGhlciBsYXRlIGluIHRoZSBib290IHByb2Nlc3MpLgorVW5mb3J0dW5hdGVseSwgbW9zdCBkcml2ZXJzIGFyZSBkb2luZyB0aGUgcHJvYmluZyBieSB0aGVtc2VsdmVzLCBhbmQKK2V4cGVjdCB0byBoYXZlIGV4cGxvcmVkIHRoZSB3aG9sZSBtYWNoaW5lIHdoZW4gdGhleSBleGl0IHRoZWlyIHByb2JlCityb3V0aW5lLgorCitGb3IgZXhhbXBsZSwgc3dpdGNoaW5nIHlvdXIgZmF2b3JpdGUgRUlTQSBTQ1NJIGNhcmQgdG8gdGhlICJob3RwbHVnIgorbW9kZWwgaXMgInRoZSByaWdodCB0aGluZyIodG0pLgorCisqKiBUaGFua3MgOgorCitJJ2QgbGlrZSB0byB0aGFuayB0aGUgZm9sbG93aW5nIHBlb3BsZSBmb3IgdGhlaXIgaGVscCA6CistIFhhdmllciBCZW5pZ25pIGZvciBsZW5kaW5nIG1lIGEgd29uZGVyZnVsIEFscGhhIEplbnNlbiwKKy0gSmFtZXMgQm90dG9tbGV5LCBKZWZmIEdhcnppayBmb3IgZ2V0dGluZyB0aGlzIHN0dWZmIGludG8gdGhlIGtlcm5lbCwKKy0gQW5kcmllcyBCcm91d2VyIGZvciBjb250cmlidXRpbmcgbnVtZXJvdXMgRUlTQSBpZHMsCistIENhdHJpbiBKb25lcyBmb3IgY29waW5nIHdpdGggZmFyIHRvbyBtYW55IG1hY2hpbmVzIGF0IGhvbWUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2VtYWlsLWNsaWVudHMudHh0IGIvRG9jdW1lbnRhdGlvbi9lbWFpbC1jbGllbnRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDQ4NWRlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9lbWFpbC1jbGllbnRzLnR4dApAQCAtMCwwICsxLDI5OSBAQAorRW1haWwgY2xpZW50cyBpbmZvIGZvciBMaW51eAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitHaXQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZXNlIGRheXMgbW9zdCBkZXZlbG9wZXJzIHVzZSBgZ2l0IHNlbmQtZW1haWxgIGluc3RlYWQgb2YgcmVndWxhcgorZW1haWwgY2xpZW50cy4gIFRoZSBtYW4gcGFnZSBmb3IgdGhpcyBpcyBxdWl0ZSBnb29kLiAgT24gdGhlIHJlY2VpdmluZworZW5kLCBtYWludGFpbmVycyB1c2UgYGdpdCBhbWAgdG8gYXBwbHkgdGhlIHBhdGNoZXMuCisKK0lmIHlvdSBhcmUgbmV3IHRvIGdpdCB0aGVuIHNlbmQgeW91ciBmaXJzdCBwYXRjaCB0byB5b3Vyc2VsZi4gIFNhdmUgaXQKK2FzIHJhdyB0ZXh0IGluY2x1ZGluZyBhbGwgdGhlIGhlYWRlcnMuICBSdW4gYGdpdCBhbSByYXdfZW1haWwudHh0YCBhbmQKK3RoZW4gcmV2aWV3IHRoZSBjaGFuZ2Vsb2cgd2l0aCBgZ2l0IGxvZ2AuICBXaGVuIHRoYXQgd29ya3MgdGhlbiBzZW5kCit0aGUgcGF0Y2ggdG8gdGhlIGFwcHJvcHJpYXRlIG1haWxpbmcgbGlzdChzKS4KKworR2VuZXJhbCBQcmVmZXJlbmNlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUGF0Y2hlcyBmb3IgdGhlIExpbnV4IGtlcm5lbCBhcmUgc3VibWl0dGVkIHZpYSBlbWFpbCwgcHJlZmVyYWJseSBhcworaW5saW5lIHRleHQgaW4gdGhlIGJvZHkgb2YgdGhlIGVtYWlsLiAgU29tZSBtYWludGFpbmVycyBhY2NlcHQKK2F0dGFjaG1lbnRzLCBidXQgdGhlbiB0aGUgYXR0YWNobWVudHMgc2hvdWxkIGhhdmUgY29udGVudC10eXBlCisidGV4dC9wbGFpbiIuICBIb3dldmVyLCBhdHRhY2htZW50cyBhcmUgZ2VuZXJhbGx5IGZyb3duZWQgdXBvbiBiZWNhdXNlCitpdCBtYWtlcyBxdW90aW5nIHBvcnRpb25zIG9mIHRoZSBwYXRjaCBtb3JlIGRpZmZpY3VsdCBpbiB0aGUgcGF0Y2gKK3JldmlldyBwcm9jZXNzLgorCitFbWFpbCBjbGllbnRzIHRoYXQgYXJlIHVzZWQgZm9yIExpbnV4IGtlcm5lbCBwYXRjaGVzIHNob3VsZCBzZW5kIHRoZQorcGF0Y2ggdGV4dCB1bnRvdWNoZWQuICBGb3IgZXhhbXBsZSwgdGhleSBzaG91bGQgbm90IG1vZGlmeSBvciBkZWxldGUgdGFicworb3Igc3BhY2VzLCBldmVuIGF0IHRoZSBiZWdpbm5pbmcgb3IgZW5kIG9mIGxpbmVzLgorCitEb24ndCBzZW5kIHBhdGNoZXMgd2l0aCAiZm9ybWF0PWZsb3dlZCIuICBUaGlzIGNhbiBjYXVzZSB1bmV4cGVjdGVkCithbmQgdW53YW50ZWQgbGluZSBicmVha3MuCisKK0Rvbid0IGxldCB5b3VyIGVtYWlsIGNsaWVudCBkbyBhdXRvbWF0aWMgd29yZCB3cmFwcGluZyBmb3IgeW91LgorVGhpcyBjYW4gYWxzbyBjb3JydXB0IHlvdXIgcGF0Y2guCisKK0VtYWlsIGNsaWVudHMgc2hvdWxkIG5vdCBtb2RpZnkgdGhlIGNoYXJhY3RlciBzZXQgZW5jb2Rpbmcgb2YgdGhlIHRleHQuCitFbWFpbGVkIHBhdGNoZXMgc2hvdWxkIGJlIGluIEFTQ0lJIG9yIFVURi04IGVuY29kaW5nIG9ubHkuCitJZiB5b3UgY29uZmlndXJlIHlvdXIgZW1haWwgY2xpZW50IHRvIHNlbmQgZW1haWxzIHdpdGggVVRGLTggZW5jb2RpbmcsCit5b3UgYXZvaWQgc29tZSBwb3NzaWJsZSBjaGFyc2V0IHByb2JsZW1zLgorCitFbWFpbCBjbGllbnRzIHNob3VsZCBnZW5lcmF0ZSBhbmQgbWFpbnRhaW4gUmVmZXJlbmNlczogb3IgSW4tUmVwbHktVG86CitoZWFkZXJzIHNvIHRoYXQgbWFpbCB0aHJlYWRpbmcgaXMgbm90IGJyb2tlbi4KKworQ29weS1hbmQtcGFzdGUgKG9yIGN1dC1hbmQtcGFzdGUpIHVzdWFsbHkgZG9lcyBub3Qgd29yayBmb3IgcGF0Y2hlcworYmVjYXVzZSB0YWJzIGFyZSBjb252ZXJ0ZWQgdG8gc3BhY2VzLiAgVXNpbmcgeGNsaXBib2FyZCwgeGNsaXAsIGFuZC9vcgoreGN1dHNlbCBtYXkgd29yaywgYnV0IGl0J3MgYmVzdCB0byB0ZXN0IHRoaXMgZm9yIHlvdXJzZWxmIG9yIGp1c3QgYXZvaWQKK2NvcHktYW5kLXBhc3RlLgorCitEb24ndCB1c2UgUEdQL0dQRyBzaWduYXR1cmVzIGluIG1haWwgdGhhdCBjb250YWlucyBwYXRjaGVzLgorVGhpcyBicmVha3MgbWFueSBzY3JpcHRzIHRoYXQgcmVhZCBhbmQgYXBwbHkgdGhlIHBhdGNoZXMuCisoVGhpcyBzaG91bGQgYmUgZml4YWJsZS4pCisKK0l0J3MgYSBnb29kIGlkZWEgdG8gc2VuZCBhIHBhdGNoIHRvIHlvdXJzZWxmLCBzYXZlIHRoZSByZWNlaXZlZCBtZXNzYWdlLAorYW5kIHN1Y2Nlc3NmdWxseSBhcHBseSBpdCB3aXRoICdwYXRjaCcgYmVmb3JlIHNlbmRpbmcgcGF0Y2hlcyB0byBMaW51eAorbWFpbGluZyBsaXN0cy4KKworCitTb21lIGVtYWlsIGNsaWVudCAoTVVBKSBoaW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSGVyZSBhcmUgc29tZSBzcGVjaWZpYyBNVUEgY29uZmlndXJhdGlvbiBoaW50cyBmb3IgZWRpdGluZyBhbmQgc2VuZGluZworcGF0Y2hlcyBmb3IgdGhlIExpbnV4IGtlcm5lbC4gIFRoZXNlIGFyZSBub3QgbWVhbnQgdG8gYmUgY29tcGxldGUKK3NvZnR3YXJlIHBhY2thZ2UgY29uZmlndXJhdGlvbiBzdW1tYXJpZXMuCisKK0xlZ2VuZDoKK1RVSSA9IHRleHQtYmFzZWQgdXNlciBpbnRlcmZhY2UKK0dVSSA9IGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZQorCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorQWxwaW5lIChUVUkpCisKK0NvbmZpZyBvcHRpb25zOgorSW4gdGhlICJTZW5kaW5nIFByZWZlcmVuY2VzIiBzZWN0aW9uOgorCistICJEbyBOb3QgU2VuZCBGbG93ZWQgVGV4dCIgbXVzdCBiZSBlbmFibGVkCistICJTdHJpcCBXaGl0ZXNwYWNlIEJlZm9yZSBTZW5kaW5nIiBtdXN0IGJlIGRpc2FibGVkCisKK1doZW4gY29tcG9zaW5nIHRoZSBtZXNzYWdlLCB0aGUgY3Vyc29yIHNob3VsZCBiZSBwbGFjZWQgd2hlcmUgdGhlIHBhdGNoCitzaG91bGQgYXBwZWFyLCBhbmQgdGhlbiBwcmVzc2luZyBDVFJMLVIgbGV0IHlvdSBzcGVjaWZ5IHRoZSBwYXRjaCBmaWxlCit0byBpbnNlcnQgaW50byB0aGUgbWVzc2FnZS4KKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK0NsYXdzIE1haWwgKEdVSSkKKworV29ya3MuIFNvbWUgcGVvcGxlIHVzZSB0aGlzIHN1Y2Nlc3NmdWxseSBmb3IgcGF0Y2hlcy4KKworVG8gaW5zZXJ0IGEgcGF0Y2ggdXNlIE1lc3NhZ2UtPkluc2VydCBGaWxlIChDVFJMK2kpIG9yIGFuIGV4dGVybmFsIGVkaXRvci4KKworSWYgdGhlIGluc2VydGVkIHBhdGNoIGhhcyB0byBiZSBlZGl0ZWQgaW4gdGhlIENsYXdzIGNvbXBvc2l0aW9uIHdpbmRvdworIkF1dG8gd3JhcHBpbmciIGluIENvbmZpZ3VyYXRpb24tPlByZWZlcmVuY2VzLT5Db21wb3NlLT5XcmFwcGluZyBzaG91bGQgYmUKK2Rpc2FibGVkLgorCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorRXZvbHV0aW9uIChHVUkpCisKK1NvbWUgcGVvcGxlIHVzZSB0aGlzIHN1Y2Nlc3NmdWxseSBmb3IgcGF0Y2hlcy4KKworV2hlbiBjb21wb3NpbmcgbWFpbCBzZWxlY3Q6IFByZWZvcm1hdAorICBmcm9tIEZvcm1hdC0+UGFyYWdyYXBoIFN0eWxlLT5QcmVmb3JtYXR0ZWQgKEN0cmwtNykKKyAgb3IgdGhlIHRvb2xiYXIKKworVGhlbiB1c2U6CisgIEluc2VydC0+VGV4dCBGaWxlLi4uIChBbHQtbiB4KQordG8gaW5zZXJ0IHRoZSBwYXRjaC4KKworWW91IGNhbiBhbHNvICJkaWZmIC1OcnUgb2xkLmMgbmV3LmMgfCB4Y2xpcCIsIHNlbGVjdCBQcmVmb3JtYXQsIHRoZW4KK3Bhc3RlIHdpdGggdGhlIG1pZGRsZSBidXR0b24uCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitLbWFpbCAoR1VJKQorCitTb21lIHBlb3BsZSB1c2UgS21haWwgc3VjY2Vzc2Z1bGx5IGZvciBwYXRjaGVzLgorCitUaGUgZGVmYXVsdCBzZXR0aW5nIG9mIG5vdCBjb21wb3NpbmcgaW4gSFRNTCBpcyBhcHByb3ByaWF0ZTsgZG8gbm90CitlbmFibGUgaXQuCisKK1doZW4gY29tcG9zaW5nIGFuIGVtYWlsLCB1bmRlciBvcHRpb25zLCB1bmNoZWNrICJ3b3JkIHdyYXAiLiBUaGUgb25seQorZGlzYWR2YW50YWdlIGlzIGFueSB0ZXh0IHlvdSB0eXBlIGluIHRoZSBlbWFpbCB3aWxsIG5vdCBiZSB3b3JkLXdyYXBwZWQKK3NvIHlvdSB3aWxsIGhhdmUgdG8gbWFudWFsbHkgd29yZCB3cmFwIHRleHQgYmVmb3JlIHRoZSBwYXRjaC4gVGhlIGVhc2llc3QKK3dheSBhcm91bmQgdGhpcyBpcyB0byBjb21wb3NlIHlvdXIgZW1haWwgd2l0aCB3b3JkIHdyYXAgZW5hYmxlZCwgdGhlbiBzYXZlCitpdCBhcyBhIGRyYWZ0LiBPbmNlIHlvdSBwdWxsIGl0IHVwIGFnYWluIGZyb20geW91ciBkcmFmdHMgaXQgaXMgbm93IGhhcmQKK3dvcmQtd3JhcHBlZCBhbmQgeW91IGNhbiB1bmNoZWNrICJ3b3JkIHdyYXAiIHdpdGhvdXQgbG9zaW5nIHRoZSBleGlzdGluZword3JhcHBpbmcuCisKK0F0IHRoZSBib3R0b20gb2YgeW91ciBlbWFpbCwgcHV0IHRoZSBjb21tb25seS11c2VkIHBhdGNoIGRlbGltaXRlciBiZWZvcmUKK2luc2VydGluZyB5b3VyIHBhdGNoOiAgdGhyZWUgaHlwaGVucyAoLS0tKS4KKworVGhlbiBmcm9tIHRoZSAiTWVzc2FnZSIgbWVudSBpdGVtLCBzZWxlY3QgaW5zZXJ0IGZpbGUgYW5kIGNob29zZSB5b3VyIHBhdGNoLgorQXMgYW4gYWRkZWQgYm9udXMgeW91IGNhbiBjdXN0b21pc2UgdGhlIG1lc3NhZ2UgY3JlYXRpb24gdG9vbGJhciBtZW51CithbmQgcHV0IHRoZSAiaW5zZXJ0IGZpbGUiIGljb24gdGhlcmUuCisKK01ha2UgdGhlIGNvbXBvc2VyIHdpbmRvdyB3aWRlIGVub3VnaCBzbyB0aGF0IG5vIGxpbmVzIHdyYXAuIEFzIG9mCitLTWFpbCAxLjEzLjUgKEtERSA0LjUuNCksIEtNYWlsIHdpbGwgYXBwbHkgd29yZCB3cmFwcGluZyB3aGVuIHNlbmRpbmcKK3RoZSBlbWFpbCBpZiB0aGUgbGluZXMgd3JhcCBpbiB0aGUgY29tcG9zZXIgd2luZG93LiBIYXZpbmcgd29yZCB3cmFwcGluZworZGlzYWJsZWQgaW4gdGhlIE9wdGlvbnMgbWVudSBpc24ndCBlbm91Z2guIFRodXMsIGlmIHlvdXIgcGF0Y2ggaGFzIHZlcnkKK2xvbmcgbGluZXMsIHlvdSBtdXN0IG1ha2UgdGhlIGNvbXBvc2VyIHdpbmRvdyB2ZXJ5IHdpZGUgYmVmb3JlIHNlbmRpbmcKK3RoZSBlbWFpbC4gU2VlOiBodHRwczovL2J1Z3Mua2RlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MDM0CisKK1lvdSBjYW4gc2FmZWx5IEdQRyBzaWduIGF0dGFjaG1lbnRzLCBidXQgaW5saW5lZCB0ZXh0IGlzIHByZWZlcnJlZCBmb3IKK3BhdGNoZXMgc28gZG8gbm90IEdQRyBzaWduIHRoZW0uICBTaWduaW5nIHBhdGNoZXMgdGhhdCBoYXZlIGJlZW4gaW5zZXJ0ZWQKK2FzIGlubGluZWQgdGV4dCB3aWxsIG1ha2UgdGhlbSB0cmlja3kgdG8gZXh0cmFjdCBmcm9tIHRoZWlyIDctYml0IGVuY29kaW5nLgorCitJZiB5b3UgYWJzb2x1dGVseSBtdXN0IHNlbmQgcGF0Y2hlcyBhcyBhdHRhY2htZW50cyBpbnN0ZWFkIG9mIGlubGluaW5nCit0aGVtIGFzIHRleHQsIHJpZ2h0IGNsaWNrIG9uIHRoZSBhdHRhY2htZW50IGFuZCBzZWxlY3QgcHJvcGVydGllcywgYW5kCitoaWdobGlnaHQgIlN1Z2dlc3QgYXV0b21hdGljIGRpc3BsYXkiIHRvIG1ha2UgdGhlIGF0dGFjaG1lbnQgaW5saW5lZCB0bworbWFrZSBpdCBtb3JlIHZpZXdhYmxlLgorCitXaGVuIHNhdmluZyBwYXRjaGVzIHRoYXQgYXJlIHNlbnQgYXMgaW5saW5lZCB0ZXh0LCBzZWxlY3QgdGhlIGVtYWlsIHRoYXQKK2NvbnRhaW5zIHRoZSBwYXRjaCBmcm9tIHRoZSBtZXNzYWdlIGxpc3QgcGFuZSwgcmlnaHQgY2xpY2sgYW5kIHNlbGVjdAorInNhdmUgYXMiLiAgWW91IGNhbiB1c2UgdGhlIHdob2xlIGVtYWlsIHVubW9kaWZpZWQgYXMgYSBwYXRjaCBpZiBpdCB3YXMKK3Byb3Blcmx5IGNvbXBvc2VkLiAgVGhlcmUgaXMgbm8gb3B0aW9uIGN1cnJlbnRseSB0byBzYXZlIHRoZSBlbWFpbCB3aGVuIHlvdQorYXJlIGFjdHVhbGx5IHZpZXdpbmcgaXQgaW4gaXRzIG93biB3aW5kb3cgLS0gdGhlcmUgaGFzIGJlZW4gYSByZXF1ZXN0IGZpbGVkCithdCBrbWFpbCdzIGJ1Z3ppbGxhIGFuZCBob3BlZnVsbHkgdGhpcyB3aWxsIGJlIGFkZHJlc3NlZC4gIEVtYWlscyBhcmUgc2F2ZWQKK2FzIHJlYWQtd3JpdGUgZm9yIHVzZXIgb25seSBzbyB5b3Ugd2lsbCBoYXZlIHRvIGNobW9kIHRoZW0gdG8gbWFrZSB0aGVtCitncm91cCBhbmQgd29ybGQgcmVhZGFibGUgaWYgeW91IGNvcHkgdGhlbSBlbHNld2hlcmUuCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitMb3R1cyBOb3RlcyAoR1VJKQorCitSdW4gYXdheSBmcm9tIGl0LgorCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorTXV0dCAoVFVJKQorCitQbGVudHkgb2YgTGludXggZGV2ZWxvcGVycyB1c2UgbXV0dCwgc28gaXQgbXVzdCB3b3JrIHByZXR0eSB3ZWxsLgorCitNdXR0IGRvZXNuJ3QgY29tZSB3aXRoIGFuIGVkaXRvciwgc28gd2hhdGV2ZXIgZWRpdG9yIHlvdSB1c2Ugc2hvdWxkIGJlCit1c2VkIGluIGEgd2F5IHRoYXQgdGhlcmUgYXJlIG5vIGF1dG9tYXRpYyBsaW5lYnJlYWtzLiAgTW9zdCBlZGl0b3JzIGhhdmUKK2FuICJpbnNlcnQgZmlsZSIgb3B0aW9uIHRoYXQgaW5zZXJ0cyB0aGUgY29udGVudHMgb2YgYSBmaWxlIHVuYWx0ZXJlZC4KKworVG8gdXNlICd2aW0nIHdpdGggbXV0dDoKKyAgc2V0IGVkaXRvcj0idmkiCisKKyAgSWYgdXNpbmcgeGNsaXAsIHR5cGUgdGhlIGNvbW1hbmQKKyAgOnNldCBwYXN0ZQorICBiZWZvcmUgbWlkZGxlIGJ1dHRvbiBvciBzaGlmdC1pbnNlcnQgb3IgdXNlCisgIDpyIGZpbGVuYW1lCisKK2lmIHlvdSB3YW50IHRvIGluY2x1ZGUgdGhlIHBhdGNoIGlubGluZS4KKyhhKXR0YWNoIHdvcmtzIGZpbmUgd2l0aG91dCAic2V0IHBhc3RlIi4KKworWW91IGNhbiBhbHNvIGdlbmVyYXRlIHBhdGNoZXMgd2l0aCAnZ2l0IGZvcm1hdC1wYXRjaCcgYW5kIHRoZW4gdXNlIE11dHQKK3RvIHNlbmQgdGhlbToKKyAgICAkIG11dHQgLUggMDAwMS1zb21lLWJ1Zy1maXgucGF0Y2gKKworQ29uZmlnIG9wdGlvbnM6CitJdCBzaG91bGQgd29yayB3aXRoIGRlZmF1bHQgc2V0dGluZ3MuCitIb3dldmVyLCBpdCdzIGEgZ29vZCBpZGVhIHRvIHNldCB0aGUgInNlbmRfY2hhcnNldCIgdG86CisgIHNldCBzZW5kX2NoYXJzZXQ9InVzLWFzY2lpOnV0Zi04IgorCitNdXR0IGlzIGhpZ2hseSBjdXN0b21pemFibGUuIEhlcmUgaXMgYSBtaW5pbXVtIGNvbmZpZ3VyYXRpb24gdG8gc3RhcnQKK3VzaW5nIE11dHQgdG8gc2VuZCBwYXRjaGVzIHRocm91Z2ggR21haWw6CisKKyMgLm11dHRyYworIyA9PT09PT09PT09PT09PT09ICBJTUFQID09PT09PT09PT09PT09PT09PT09CitzZXQgaW1hcF91c2VyID0gJ3lvdXJ1c2VybmFtZUBnbWFpbC5jb20nCitzZXQgaW1hcF9wYXNzID0gJ3lvdXJwYXNzd29yZCcKK3NldCBzcG9vbGZpbGUgPSBpbWFwczovL2ltYXAuZ21haWwuY29tL0lOQk9YCitzZXQgZm9sZGVyID0gaW1hcHM6Ly9pbWFwLmdtYWlsLmNvbS8KK3NldCByZWNvcmQ9ImltYXBzOi8vaW1hcC5nbWFpbC5jb20vW0dtYWlsXS9TZW50IE1haWwiCitzZXQgcG9zdHBvbmVkPSJpbWFwczovL2ltYXAuZ21haWwuY29tL1tHbWFpbF0vRHJhZnRzIgorc2V0IG1ib3g9ImltYXBzOi8vaW1hcC5nbWFpbC5jb20vW0dtYWlsXS9BbGwgTWFpbCIKKworIyA9PT09PT09PT09PT09PT09ICBTTVRQICA9PT09PT09PT09PT09PT09PT09PQorc2V0IHNtdHBfdXJsID0gInNtdHA6Ly91c2VybmFtZUBzbXRwLmdtYWlsLmNvbTo1ODcvIgorc2V0IHNtdHBfcGFzcyA9ICRpbWFwX3Bhc3MKK3NldCBzc2xfZm9yY2VfdGxzID0geWVzICMgUmVxdWlyZSBlbmNyeXB0ZWQgY29ubmVjdGlvbgorCisjID09PT09PT09PT09PT09PT0gIENvbXBvc2l0aW9uICA9PT09PT09PT09PT09PT09PT09PQorc2V0IGVkaXRvciA9IGBlY2hvIFwkRURJVE9SYAorc2V0IGVkaXRfaGVhZGVycyA9IHllcyAgIyBTZWUgdGhlIGhlYWRlcnMgd2hlbiBlZGl0aW5nCitzZXQgY2hhcnNldCA9IFVURi04ICAgICAjIHZhbHVlIG9mICRMQU5HOyBhbHNvIGZhbGxiYWNrIGZvciBzZW5kX2NoYXJzZXQKKyMgU2VuZGVyLCBlbWFpbCBhZGRyZXNzLCBhbmQgc2lnbi1vZmYgbGluZSBtdXN0IG1hdGNoCit1bnNldCB1c2VfZG9tYWluICAgICAgICAjIGJlY2F1c2Ugam9lQGxvY2FsaG9zdCBpcyBqdXN0IGVtYmFycmFzc2luZworc2V0IHJlYWxuYW1lID0gIllPVVIgTkFNRSIKK3NldCBmcm9tID0gInVzZXJuYW1lQGdtYWlsLmNvbSIKK3NldCB1c2VfZnJvbSA9IHllcworCitUaGUgTXV0dCBkb2NzIGhhdmUgbG90cyBtb3JlIGluZm9ybWF0aW9uOgorICAgIGh0dHA6Ly9kZXYubXV0dC5vcmcvdHJhYy93aWtpL1VzZUNhc2VzL0dtYWlsCisgICAgaHR0cDovL2Rldi5tdXR0Lm9yZy9kb2MvbWFudWFsLmh0bWwKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK1BpbmUgKFRVSSkKKworUGluZSBoYXMgaGFkIHNvbWUgd2hpdGVzcGFjZSB0cnVuY2F0aW9uIGlzc3VlcyBpbiB0aGUgcGFzdCwgYnV0IHRoZXNlCitzaG91bGQgYWxsIGJlIGZpeGVkIG5vdy4KKworVXNlIGFscGluZSAocGluZSdzIHN1Y2Nlc3NvcikgaWYgeW91IGNhbi4KKworQ29uZmlnIG9wdGlvbnM6CistIHF1ZWxsLWZsb3dlZC10ZXh0IGlzIG5lZWRlZCBmb3IgcmVjZW50IHZlcnNpb25zCistIHRoZSAibm8tc3RyaXAtd2hpdGVzcGFjZS1iZWZvcmUtc2VuZCIgb3B0aW9uIGlzIG5lZWRlZAorCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitTeWxwaGVlZCAoR1VJKQorCistIFdvcmtzIHdlbGwgZm9yIGlubGluaW5nIHRleHQgKG9yIHVzaW5nIGF0dGFjaG1lbnRzKS4KKy0gQWxsb3dzIHVzZSBvZiBhbiBleHRlcm5hbCBlZGl0b3IuCistIElzIHNsb3cgb24gbGFyZ2UgZm9sZGVycy4KKy0gV29uJ3QgZG8gVExTIFNNVFAgYXV0aCBvdmVyIGEgbm9uLVNTTCBjb25uZWN0aW9uLgorLSBIYXMgYSBoZWxwZnVsIHJ1bGVyIGJhciBpbiB0aGUgY29tcG9zZSB3aW5kb3cuCistIEFkZGluZyBhZGRyZXNzZXMgdG8gYWRkcmVzcyBib29rIGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGUgZGlzcGxheSBuYW1lCisgIHByb3Blcmx5LgorCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorVGh1bmRlcmJpcmQgKEdVSSkKKworVGh1bmRlcmJpcmQgaXMgYW4gT3V0bG9vayBjbG9uZSB0aGF0IGxpa2VzIHRvIG1hbmdsZSB0ZXh0LCBidXQgdGhlcmUgYXJlIHdheXMKK3RvIGNvZXJjZSBpdCBpbnRvIGJlaGF2aW5nLgorCistIEFsbG93IHVzZSBvZiBhbiBleHRlcm5hbCBlZGl0b3I6CisgIFRoZSBlYXNpZXN0IHRoaW5nIHRvIGRvIHdpdGggVGh1bmRlcmJpcmQgYW5kIHBhdGNoZXMgaXMgdG8gdXNlIGFuCisgICJleHRlcm5hbCBlZGl0b3IiIGV4dGVuc2lvbiBhbmQgdGhlbiBqdXN0IHVzZSB5b3VyIGZhdm9yaXRlICRFRElUT1IKKyAgZm9yIHJlYWRpbmcvbWVyZ2luZyBwYXRjaGVzIGludG8gdGhlIGJvZHkgdGV4dC4gIFRvIGRvIHRoaXMsIGRvd25sb2FkCisgIGFuZCBpbnN0YWxsIHRoZSBleHRlbnNpb24sIHRoZW4gYWRkIGEgYnV0dG9uIGZvciBpdCB1c2luZworICBWaWV3LT5Ub29sYmFycy0+Q3VzdG9taXplLi4uIGFuZCBmaW5hbGx5IGp1c3QgY2xpY2sgb24gaXQgd2hlbiBpbiB0aGUKKyAgQ29tcG9zZSBkaWFsb2cuCisKKyAgUGxlYXNlIG5vdGUgdGhhdCAiZXh0ZXJuYWwgZWRpdG9yIiByZXF1aXJlcyB0aGF0IHlvdXIgZWRpdG9yIG11c3Qgbm90CisgIGZvcmssIG9yIGluIG90aGVyIHdvcmRzLCB0aGUgZWRpdG9yIG11c3Qgbm90IHJldHVybiBiZWZvcmUgY2xvc2luZy4KKyAgWW91IG1heSBoYXZlIHRvIHBhc3MgYWRkaXRpb25hbCBmbGFncyBvciBjaGFuZ2UgdGhlIHNldHRpbmdzIG9mIHlvdXIKKyAgZWRpdG9yLiBNb3N0IG5vdGFibHkgaWYgeW91IGFyZSB1c2luZyBndmltIHRoZW4geW91IG11c3QgcGFzcyB0aGUgLWYKKyAgb3B0aW9uIHRvIGd2aW0gYnkgcHV0dGluZyAiL3Vzci9iaW4vZ3ZpbSAtZiIgKGlmIHRoZSBiaW5hcnkgaXMgaW4KKyAgL3Vzci9iaW4pIHRvIHRoZSB0ZXh0IGVkaXRvciBmaWVsZCBpbiAiZXh0ZXJuYWwgZWRpdG9yIiBzZXR0aW5ncy4gSWYgeW91CisgIGFyZSB1c2luZyBzb21lIG90aGVyIGVkaXRvciB0aGVuIHBsZWFzZSByZWFkIGl0cyBtYW51YWwgdG8gZmluZCBvdXQgaG93CisgIHRvIGRvIHRoaXMuCisKK1RvIGJlYXQgc29tZSBzZW5zZSBvdXQgb2YgdGhlIGludGVybmFsIGVkaXRvciwgZG8gdGhpczoKKworLSBFZGl0IHlvdXIgVGh1bmRlcmJpcmQgY29uZmlnIHNldHRpbmdzIHNvIHRoYXQgaXQgd29uJ3QgdXNlIGZvcm1hdD1mbG93ZWQuCisgIEdvIHRvICJlZGl0LT5wcmVmZXJlbmNlcy0+YWR2YW5jZWQtPmNvbmZpZyBlZGl0b3IiIHRvIGJyaW5nIHVwIHRoZQorICB0aHVuZGVyYmlyZCdzIHJlZ2lzdHJ5IGVkaXRvci4KKworLSBTZXQgIm1haWxuZXdzLnNlbmRfcGxhaW50ZXh0X2Zsb3dlZCIgdG8gImZhbHNlIgorCistIFNldCAibWFpbG5ld3Mud3JhcGxlbmd0aCIgZnJvbSAiNzIiIHRvICIwIgorCistICJWaWV3IiA+ICJNZXNzYWdlIEJvZHkgQXMiID4gIlBsYWluIFRleHQiCisKKy0gIlZpZXciID4gIkNoYXJhY3RlciBFbmNvZGluZyIgPiAiVW5pY29kZSAoVVRGLTgpIgorCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorVGtSYXQgKEdVSSkKKworV29ya3MuICBVc2UgIkluc2VydCBmaWxlLi4uIiBvciBleHRlcm5hbCBlZGl0b3IuCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitHbWFpbCAoV2ViIEdVSSkKKworRG9lcyBub3Qgd29yayBmb3Igc2VuZGluZyBwYXRjaGVzLgorCitHbWFpbCB3ZWIgY2xpZW50IGNvbnZlcnRzIHRhYnMgdG8gc3BhY2VzIGF1dG9tYXRpY2FsbHkuCisKK0F0IHRoZSBzYW1lIHRpbWUgaXQgd3JhcHMgbGluZXMgZXZlcnkgNzggY2hhcnMgd2l0aCBDUkxGIHN0eWxlIGxpbmUgYnJlYWtzCithbHRob3VnaCB0YWIyc3BhY2UgcHJvYmxlbSBjYW4gYmUgc29sdmVkIHdpdGggZXh0ZXJuYWwgZWRpdG9yLgorCitBbm90aGVyIHByb2JsZW0gaXMgdGhhdCBHbWFpbCB3aWxsIGJhc2U2NC1lbmNvZGUgYW55IG1lc3NhZ2UgdGhhdCBoYXMgYQorbm9uLUFTQ0lJIGNoYXJhY3Rlci4gVGhhdCBpbmNsdWRlcyB0aGluZ3MgbGlrZSBFdXJvcGVhbiBuYW1lcy4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZXh0Y29uL3BvcnRpbmctYW5kcm9pZC1zd2l0Y2gtY2xhc3MgYi9Eb2N1bWVudGF0aW9uL2V4dGNvbi9wb3J0aW5nLWFuZHJvaWQtc3dpdGNoLWNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5YzgxY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2V4dGNvbi9wb3J0aW5nLWFuZHJvaWQtc3dpdGNoLWNsYXNzCkBAIC0wLDAgKzEsMTIzIEBACisKKwlTdGFnaW5nL0FuZHJvaWQgU3dpdGNoIENsYXNzIFBvcnRpbmcgR3VpZGUKKwkobGludXgvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvc3dpdGNoKQorCShjKSBDb3B5cmlnaHQgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisKK0FVVEhPUlMKK015dW5nSm9vIEhhbSA8bXl1bmdqb28uaGFtQHNhbXN1bmcuY29tPgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENIQVBURVIgMS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogUE9SVElORyBTV0lUQ0ggQ0xBU1MgREVWSUNFIERSSVZFUlMgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyoqKioqKiBTVEVQIDEuIEJhc2ljIEZ1bmN0aW9uYWxpdHkKKwlObyBleHRjb24gZXh0ZW5kZWQgZmVhdHVyZSwgYnV0IHN3aXRjaCBmZWF0dXJlcyBvbmx5LgorCistIHN0cnVjdCBzd2l0Y2hfZGV2IChmZWQgdG8gc3dpdGNoX2Rldl9yZWdpc3Rlci91bnJlZ2lzdGVyKQorICAgIEBuYW1lOiBubyBjaGFuZ2UKKyAgICBAZGV2OiBubyBjaGFuZ2UKKyAgICBAaW5kZXg6IGRyb3AgKG5vdCB1c2VkIGluIHN3aXRjaCBkZXZpY2UgZHJpdmVyIHNpZGUgYW55d2F5KQorICAgIEBzdGF0ZTogbm8gY2hhbmdlCisJSWYgeW91IGhhdmUgdXNlZCBAc3RhdGUgd2l0aCBtYWdpYyBudW1iZXJzLCBrZWVwIGl0CisJYXQgdGhpcyBzdGVwLgorICAgIEBwcmludF9uYW1lOiBubyBjaGFuZ2UgYnV0IHR5cGUgY2hhbmdlIChzd2l0Y2hfZGV2LT5leHRjb25fZGV2KQorICAgIEBwcmludF9zdGF0ZTogbm8gY2hhbmdlIGJ1dCB0eXBlIGNoYW5nZSAoc3dpdGNoX2Rldi0+ZXh0Y29uX2RldikKKworLSBzd2l0Y2hfZGV2X3JlZ2lzdGVyKHNkZXYsIGRldikKKwk9PiBleHRjb25fZGV2X3JlZ2lzdGVyKGVkZXYpCisJOiB0eXBlIGNoYW5nZSAoc2Rldi0+ZWRldikKKwk6IHJlbW92ZSBzZWNvbmQgcGFyYW0oJ2RldicpLiBpZiBlZGV2IGhhcyBwYXJlbnQgZGV2aWNlLCBzaG91bGQgc3RvcmUKKwkgICdkZXYnIHRvICdlZGV2LmRldi5wYXJlbnQnIGJlZm9yZSByZWdpc3RlcmluZyBleHRjb24gZGV2aWNlCistIHN3aXRjaF9kZXZfdW5yZWdpc3RlcihzZGV2KQorCT0+IGV4dGNvbl9kZXZfdW5yZWdpc3RlcihlZGV2KQorCTogbm8gY2hhbmdlIGJ1dCB0eXBlIGNoYW5nZSAoc2Rldi0+ZWRldikKKy0gc3dpdGNoX2dldF9zdGF0ZShzZGV2KQorCT0+IGV4dGNvbl9nZXRfc3RhdGUoZWRldikKKwk6IG5vIGNoYW5nZSBidXQgdHlwZSBjaGFuZ2UgKHNkZXYtPmVkZXYpIGFuZCAocmV0dXJuOiBpbnQtPnUzMikKKy0gc3dpdGNoX3NldF9zdGF0ZShzZGV2LCBzdGF0ZSkKKwk9PiBleHRjb25fc2V0X3N0YXRlKGVkZXYsIHN0YXRlKQorCTogbm8gY2hhbmdlIGJ1dCB0eXBlIGNoYW5nZSAoc2Rldi0+ZWRldikgYW5kIChzdGF0ZTogaW50LT51MzIpCisKK1dpdGggdGhpcyBjaGFuZ2VzLCB0aGUgZXgtc3dpdGNoIGV4dGNvbiBjbGFzcyBkZXZpY2Ugd29ya3MgYXMgaXQgb25jZQord29ya2VkIGFzIHN3aXRjaCBjbGFzcyBkZXZpY2UuIEhvd2V2ZXIsIGl0IHdpbGwgbm93IGhhdmUgYWRkaXRpb25hbAoraW50ZXJmYWNlcyAoYm90aCBBQkkgYW5kIGluLWtlcm5lbCBBUEkpIGFuZCBkaWZmZXJlbnQgQUJJIGxvY2F0aW9ucy4KK0hvd2V2ZXIsIGlmIENPTkZJR19BTkRST0lEIGlzIGVuYWJsZWQgd2l0aG91dCBDT05GSUdfQU5EUk9JRF9TV0lUQ0gsCisvc3lzL2NsYXNzL3N3aXRjaC8qIHdpbGwgYmUgc3ltYm9saWNhbGx5IGxpbmtlZCB0byAvc3lzL2NsYXNzL2V4dGNvbi8KK3NvIHRoYXQgdGhleSBhcmUgc3RpbGwgY29tcGF0aWJsZSB3aXRoIGxlZ2FjeSB1c2Vyc3BhY2UgcHJvY2Vzc2VzLgorCisqKioqKiogU1RFUCAyLiBNdWx0aXN0YXRlIChubyBtb3JlIG1hZ2ljIG51bWJlcnMgaW4gc3RhdGUgdmFsdWUpCisJRXh0Y29uJ3MgZXh0ZW5kZWQgZmVhdHVyZXMgZm9yIHN3aXRjaCBkZXZpY2UgZHJpdmVycyB3aXRoCisJY29tcGxleCBmZWF0dXJlcyB1c3VhbGx5IHJlcXVpcmVkIG1hZ2ljIG51bWJlcnMgaW4gc3RhdGUKKwl2YWx1ZSBvZiBzd2l0Y2hfZGV2LiBXaXRoIGV4dGNvbiwgc3VjaCBtYWdpYyBudW1iZXJzIHRoYXQKKwlzdXBwb3J0IG11bHRpcGxlIGNhYmxlcyBhcmUgbm8gbW9yZSByZXF1aXJlZCBvciBzdXBwb3J0ZWQuCisKKyAgMS4gRGVmaW5lIGNhYmxlIG5hbWVzIGF0IGVkZXYtPnN1cHBvcnRlZF9jYWJsZS4KKyAgMi4gKFJlY29tbWVuZGVkKSByZW1vdmUgcHJpbnRfc3RhdGUgY2FsbGJhY2suCisgIDMuIFVzZSBleHRjb25fZ2V0X2NhYmxlX3N0YXRlXyhlZGV2LCBpbmRleCkgb3IKKyAgIGV4dGNvbl9nZXRfY2FibGVfc3RhdGUoZWRldiwgY2FibGVfbmFtZSkgaW5zdGVhZCBvZgorICAgZXh0Y29uX2dldF9zdGF0ZShlZGV2KSBpZiB5b3UgaW50ZW5kIHRvIGdldCBhIHN0YXRlIG9mIGEgc3BlY2lmaWMKKyAgIGNhYmxlLiBTYW1lIGZvciBzZXRfc3RhdGUuIFRoaXMgd2F5LCB5b3UgY2FuIHJlbW92ZSB0aGUgdXNhZ2Ugb2YKKyAgIG1hZ2ljIG51bWJlcnMgaW4gc3RhdGUgdmFsdWUuCisgIDQuIFVzZSBleHRjb25fdXBkYXRlX3N0YXRlKCkgaWYgeW91IGFyZSB1cGRhdGluZyBzcGVjaWZpYyBiaXRzIG9mCisgICB0aGUgc3RhdGUgdmFsdWUuCisKK0V4YW1wbGU6IGEgc3dpdGNoIGRldmljZSBkcml2ZXIgdy8gbWFnaWMgbnVtYmVycyBmb3IgdHdvIGNhYmxlcy4KKwkiMHgwMCI6IG5vIGNhYmxlcyBjb25uZWN0ZWQuCisJIjB4MDEiOiBjYWJsZSAxIGNvbm5lY3RlZAorCSIweDAyIjogY2FibGUgMiBjb25uZWN0ZWQKKwkiMHgwMyI6IGNhYmxlIDEgYW5kIDIgY29ubmVjdGVkCisgIDEuIGVkZXYtPnN1cHBvcnRlZF9jYWJsZSA9IHsiMSIsICIyIiwgTlVMTH07CisgIDIuIGVkZXYtPnByaW50X3N0YXRlID0gTlVMTDsKKyAgMy4gZXh0Y29uX2dldF9jYWJsZV9zdGF0ZV8oZWRldiwgMCkgc2hvd3MgY2FibGUgMSdzIHN0YXRlLgorICAgICBleHRjb25fZ2V0X2NhYmxlX3N0YXRlKGVkZXYsICIxIikgc2hvd3MgY2FibGUgMSdzIHN0YXRlLgorICAgICBleHRjb25fc2V0X2NhYmxlX3N0YXRlXyhlZGV2LCAxKSBzZXRzIGNhYmxlIDIncyBzdGF0ZS4KKyAgICAgZXh0Y29uX3NldF9jYWJsZV9zdGF0ZShlZGV2LCAiMiIpIHNldHMgY2FibGUgMidzIHN0YXRlCisgIDQuIGV4dGNvbl91cGRhdGVfc3RhdGUoZWRldiwgMHgwMSwgMCkgc2V0cyB0aGUgbGVhc3QgYml0J3MgMC4KKworKioqKioqIFNURVAgMy4gTm90aWZ5IG90aGVyIGRldmljZSBkcml2ZXJzCisKKyAgWW91IGNhbiBub3RpZnkgb3RoZXJzIG9mIHRoZSBjYWJsZSBhdHRhY2gvZGV0YWNoIGV2ZW50cyB3aXRoCitub3RpZmllciBjaGFpbnMuCisKKyAgQXQgdGhlIHNpZGUgb2Ygb3RoZXIgZGV2aWNlIGRyaXZlcnMgKHRoZSBleHRjb24gZGV2aWNlIGl0c2VsZgorZG9lcyBub3QgbmVlZCB0byBnZXQgbm90aWZpZWQgb2YgaXRzIG93biBldmVudHMpLCB0aGVyZSBhcmUgdHdvCittZXRob2RzIHRvIHJlZ2lzdGVyIG5vdGlmaWVyX2Jsb2NrIGZvciBjYWJsZSBldmVudHM6CisoYSkgZm9yIGEgc3BlY2lmaWMgY2FibGUgb3IgKGIpIGZvciBldmVyeSBjYWJsZS4KKworICAoYSkgZXh0Y29uX3JlZ2lzdGVyX2ludGVyZXN0KG9iaiwgZXh0Y29uX25hbWUsIGNhYmxlX25hbWUsIG5iKQorCUV4YW1wbGU6IHdhbnQgdG8gZ2V0IG5ld3Mgb2YgIk1BWDg5OTdfTVVJQyIncyAiVVNCIiBjYWJsZQorCisJb2JqID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGV4dGNvbl9zcGVjaWZpY19jYWJsZV9uYiksCisJCSAgICAgIEdGUF9LRVJORUwpOworCW5iLT5ub3RpZmllcl9jYWxsID0gdGhlX2NhbGxiYWNrX3RvX2hhbmRsZV91c2I7CisKKwlleHRjb25fcmVnaXN0ZXJfaW50ZXJlc2V0KG9iaiwgIk1BWDg5OTdfTVVJQyIsICJVU0IiLCBuYik7CisKKyAgKGIpIGV4dGNvbl9yZWdpc3Rlcl9ub3RpZmllcihlZGV2LCBuYikKKwlDYWxsIG5iIGZvciBhbnkgY2hhbmdlcyBpbiBlZGV2LgorCisgIFBsZWFzZSBub3RlIHRoYXQgaW4gb3JkZXIgdG8gcHJvcGVybHkgYmVoYXZlIHdpdGggbWV0aG9kIChhKSwKK3RoZSBleHRjb24gZGV2aWNlIGRyaXZlciBzaG91bGQgc3VwcG9ydCBtdWx0aXN0YXRlIGZlYXR1cmUgKFNURVAgMikuCisKKyoqKioqKiBTVEVQIDQuIEludGVyLWNhYmxlIHJlbGF0aW9uIChtdXR1YWxseSBleGNsdXNpdmUpCisKKyAgWW91IGNhbiBwcm92aWRlIGludGVyLWNhYmxlIG11dHVhbGx5IGV4Y2x1c2l2ZW5lc3MgaW5mb3JtYXRpb24KK2ZvciBhbiBleHRjb24gZGV2aWNlLiBXaGVuIGNhYmxlcyBBIGFuZCBCIGFyZSBkZWNsYXJlZCB0byBiZSBtdXR1YWxseQorZXhjbHVzaXZlLCB0aGUgdHdvIGNhYmxlcyBjYW5ub3QgYmUgaW4gQVRUQUNIRUQgc3RhdGUgc2ltdWx0ZW5lb3VzbHkuCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDSEFQVEVSIDIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFBPUlRJTkcgVVNFUlNQQUNFIHcvIFNXSVRDSCBDTEFTUyBERVZJQ0UgU1VQUE9SVCAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisqKioqKiogQUJJIExvY2F0aW9uCisKKyAgSWYgIkNPTkZJR19BTkRST0lEIiBpcyBlbmFibGVkLCAvc3lzL2NsYXNzL3N3aXRjaC8qIGFyZSBjcmVhdGVkCithcyBzeW1ib2xpYyBsaW5rcyB0byAvc3lzL2NsYXNzL2V4dGNvbi8qLgorCisgIFRoZSB0d28gZmlsZXMgb2Ygc3dpdGNoIGNsYXNzLCBuYW1lIGFuZCBzdGF0ZSwgYXJlIHByb3ZpZGVkIHdpdGgKK2V4dGNvbiwgdG9vLiBXaGVuIHRoZSBtdWx0aXN0YXRlIHN1cHBvcnQgKFNURVAgMiBvZiBDSEFQVEVSIDEuKSBpcworbm90IGVuYWJsZWQgb3IgcHJpbnRfc3RhdGUgY2FsbGJhY2sgaXMgc3VwcGxpZWQsIHRoZSBvdXRwdXQgb2YKK3N0YXRlIEFCSSBpcyBzYW1lIHdpdGggc3dpdGNoIGNsYXNzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mYXVsdC1pbmplY3Rpb24vZmF1bHQtaW5qZWN0aW9uLnR4dCBiL0RvY3VtZW50YXRpb24vZmF1bHQtaW5qZWN0aW9uL2ZhdWx0LWluamVjdGlvbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE1NDg0ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmF1bHQtaW5qZWN0aW9uL2ZhdWx0LWluamVjdGlvbi50eHQKQEAgLTAsMCArMSwyODAgQEAKK0ZhdWx0IGluamVjdGlvbiBjYXBhYmlsaXRpZXMgaW5mcmFzdHJ1Y3R1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU2VlIGFsc28gZHJpdmVycy9tZC9mYXVsdHkuYyBhbmQgImV2ZXJ5X250aCIgbW9kdWxlIG9wdGlvbiBmb3Igc2NzaV9kZWJ1Zy4KKworCitBdmFpbGFibGUgZmF1bHQgaW5qZWN0aW9uIGNhcGFiaWxpdGllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbyBmYWlsc2xhYgorCisgIGluamVjdHMgc2xhYiBhbGxvY2F0aW9uIGZhaWx1cmVzLiAoa21hbGxvYygpLCBrbWVtX2NhY2hlX2FsbG9jKCksIC4uLikKKworbyBmYWlsX3BhZ2VfYWxsb2MKKworICBpbmplY3RzIHBhZ2UgYWxsb2NhdGlvbiBmYWlsdXJlcy4gKGFsbG9jX3BhZ2VzKCksIGdldF9mcmVlX3BhZ2VzKCksIC4uLikKKworbyBmYWlsX2Z1dGV4CisKKyAgaW5qZWN0cyBmdXRleCBkZWFkbG9jayBhbmQgdWFkZHIgZmF1bHQgZXJyb3JzLgorCitvIGZhaWxfbWFrZV9yZXF1ZXN0CisKKyAgaW5qZWN0cyBkaXNrIElPIGVycm9ycyBvbiBkZXZpY2VzIHBlcm1pdHRlZCBieSBzZXR0aW5nCisgIC9zeXMvYmxvY2svPGRldmljZT4vbWFrZS1pdC1mYWlsIG9yCisgIC9zeXMvYmxvY2svPGRldmljZT4vPHBhcnRpdGlvbj4vbWFrZS1pdC1mYWlsLiAoZ2VuZXJpY19tYWtlX3JlcXVlc3QoKSkKKworbyBmYWlsX21tY19yZXF1ZXN0CisKKyAgaW5qZWN0cyBNTUMgZGF0YSBlcnJvcnMgb24gZGV2aWNlcyBwZXJtaXR0ZWQgYnkgc2V0dGluZworICBkZWJ1Z2ZzIGVudHJpZXMgdW5kZXIgL3N5cy9rZXJuZWwvZGVidWcvbW1jMC9mYWlsX21tY19yZXF1ZXN0CisKK0NvbmZpZ3VyZSBmYXVsdC1pbmplY3Rpb24gY2FwYWJpbGl0aWVzIGJlaGF2aW9yCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitvIGRlYnVnZnMgZW50cmllcworCitmYXVsdC1pbmplY3QtZGVidWdmcyBrZXJuZWwgbW9kdWxlIHByb3ZpZGVzIHNvbWUgZGVidWdmcyBlbnRyaWVzIGZvciBydW50aW1lCitjb25maWd1cmF0aW9uIG9mIGZhdWx0LWluamVjdGlvbiBjYXBhYmlsaXRpZXMuCisKKy0gL3N5cy9rZXJuZWwvZGVidWcvZmFpbCovcHJvYmFiaWxpdHk6CisKKwlsaWtlbGlob29kIG9mIGZhaWx1cmUgaW5qZWN0aW9uLCBpbiBwZXJjZW50LgorCUZvcm1hdDogPHBlcmNlbnQ+CisKKwlOb3RlIHRoYXQgb25lLWZhaWx1cmUtcGVyLWh1bmRyZWQgaXMgYSB2ZXJ5IGhpZ2ggZXJyb3IgcmF0ZQorCWZvciBzb21lIHRlc3RjYXNlcy4gIENvbnNpZGVyIHNldHRpbmcgcHJvYmFiaWxpdHk9MTAwIGFuZCBjb25maWd1cmUKKwkvc3lzL2tlcm5lbC9kZWJ1Zy9mYWlsKi9pbnRlcnZhbCBmb3Igc3VjaCB0ZXN0Y2FzZXMuCisKKy0gL3N5cy9rZXJuZWwvZGVidWcvZmFpbCovaW50ZXJ2YWw6CisKKwlzcGVjaWZpZXMgdGhlIGludGVydmFsIGJldHdlZW4gZmFpbHVyZXMsIGZvciBjYWxscyB0bworCXNob3VsZF9mYWlsKCkgdGhhdCBwYXNzIGFsbCB0aGUgb3RoZXIgdGVzdHMuCisKKwlOb3RlIHRoYXQgaWYgeW91IGVuYWJsZSB0aGlzLCBieSBzZXR0aW5nIGludGVydmFsPjEsIHlvdSB3aWxsCisJcHJvYmFibHkgd2FudCB0byBzZXQgcHJvYmFiaWxpdHk9MTAwLgorCistIC9zeXMva2VybmVsL2RlYnVnL2ZhaWwqL3RpbWVzOgorCisJc3BlY2lmaWVzIGhvdyBtYW55IHRpbWVzIGZhaWx1cmVzIG1heSBoYXBwZW4gYXQgbW9zdC4KKwlBIHZhbHVlIG9mIC0xIG1lYW5zICJubyBsaW1pdCIuCisKKy0gL3N5cy9rZXJuZWwvZGVidWcvZmFpbCovc3BhY2U6CisKKwlzcGVjaWZpZXMgYW4gaW5pdGlhbCByZXNvdXJjZSAiYnVkZ2V0IiwgZGVjcmVtZW50ZWQgYnkgInNpemUiCisJb24gZWFjaCBjYWxsIHRvIHNob3VsZF9mYWlsKCxzaXplKS4gIEZhaWx1cmUgaW5qZWN0aW9uIGlzCisJc3VwcHJlc3NlZCB1bnRpbCAic3BhY2UiIHJlYWNoZXMgemVyby4KKworLSAvc3lzL2tlcm5lbC9kZWJ1Zy9mYWlsKi92ZXJib3NlCisKKwlGb3JtYXQ6IHsgMCB8IDEgfCAyIH0KKwlzcGVjaWZpZXMgdGhlIHZlcmJvc2l0eSBvZiB0aGUgbWVzc2FnZXMgd2hlbiBmYWlsdXJlIGlzCisJaW5qZWN0ZWQuICAnMCcgbWVhbnMgbm8gbWVzc2FnZXM7ICcxJyB3aWxsIHByaW50IG9ubHkgYSBzaW5nbGUKKwlsb2cgbGluZSBwZXIgZmFpbHVyZTsgJzInIHdpbGwgcHJpbnQgYSBjYWxsIHRyYWNlIHRvbyAtLSB1c2VmdWwKKwl0byBkZWJ1ZyB0aGUgcHJvYmxlbXMgcmV2ZWFsZWQgYnkgZmF1bHQgaW5qZWN0aW9uLgorCistIC9zeXMva2VybmVsL2RlYnVnL2ZhaWwqL3Rhc2stZmlsdGVyOgorCisJRm9ybWF0OiB7ICdZJyB8ICdOJyB9CisJQSB2YWx1ZSBvZiAnTicgZGlzYWJsZXMgZmlsdGVyaW5nIGJ5IHByb2Nlc3MgKGRlZmF1bHQpLgorCUFueSBwb3NpdGl2ZSB2YWx1ZSBsaW1pdHMgZmFpbHVyZXMgdG8gb25seSBwcm9jZXNzZXMgaW5kaWNhdGVkIGJ5CisJL3Byb2MvPHBpZD4vbWFrZS1pdC1mYWlsPT0xLgorCistIC9zeXMva2VybmVsL2RlYnVnL2ZhaWwqL3JlcXVpcmUtc3RhcnQ6CistIC9zeXMva2VybmVsL2RlYnVnL2ZhaWwqL3JlcXVpcmUtZW5kOgorLSAvc3lzL2tlcm5lbC9kZWJ1Zy9mYWlsKi9yZWplY3Qtc3RhcnQ6CistIC9zeXMva2VybmVsL2RlYnVnL2ZhaWwqL3JlamVjdC1lbmQ6CisKKwlzcGVjaWZpZXMgdGhlIHJhbmdlIG9mIHZpcnR1YWwgYWRkcmVzc2VzIHRlc3RlZCBkdXJpbmcKKwlzdGFja3RyYWNlIHdhbGtpbmcuICBGYWlsdXJlIGlzIGluamVjdGVkIG9ubHkgaWYgc29tZSBjYWxsZXIKKwlpbiB0aGUgd2Fsa2VkIHN0YWNrdHJhY2UgbGllcyB3aXRoaW4gdGhlIHJlcXVpcmVkIHJhbmdlLCBhbmQKKwlub25lIGxpZXMgd2l0aGluIHRoZSByZWplY3RlZCByYW5nZS4KKwlEZWZhdWx0IHJlcXVpcmVkIHJhbmdlIGlzIFswLFVMT05HX01BWCkgKHdob2xlIG9mIHZpcnR1YWwgYWRkcmVzcyBzcGFjZSkuCisJRGVmYXVsdCByZWplY3RlZCByYW5nZSBpcyBbMCwwKS4KKworLSAvc3lzL2tlcm5lbC9kZWJ1Zy9mYWlsKi9zdGFja3RyYWNlLWRlcHRoOgorCisJc3BlY2lmaWVzIHRoZSBtYXhpbXVtIHN0YWNrdHJhY2UgZGVwdGggd2Fsa2VkIGR1cmluZyBzZWFyY2gKKwlmb3IgYSBjYWxsZXIgd2l0aGluIFtyZXF1aXJlLXN0YXJ0LHJlcXVpcmUtZW5kKSBPUgorCVtyZWplY3Qtc3RhcnQscmVqZWN0LWVuZCkuCisKKy0gL3N5cy9rZXJuZWwvZGVidWcvZmFpbF9wYWdlX2FsbG9jL2lnbm9yZS1nZnAtaGlnaG1lbToKKworCUZvcm1hdDogeyAnWScgfCAnTicgfQorCWRlZmF1bHQgaXMgJ04nLCBzZXR0aW5nIGl0IHRvICdZJyB3b24ndCBpbmplY3QgZmFpbHVyZXMgaW50bworCWhpZ2htZW0vdXNlciBhbGxvY2F0aW9ucy4KKworLSAvc3lzL2tlcm5lbC9kZWJ1Zy9mYWlsc2xhYi9pZ25vcmUtZ2ZwLXdhaXQ6CistIC9zeXMva2VybmVsL2RlYnVnL2ZhaWxfcGFnZV9hbGxvYy9pZ25vcmUtZ2ZwLXdhaXQ6CisKKwlGb3JtYXQ6IHsgJ1knIHwgJ04nIH0KKwlkZWZhdWx0IGlzICdOJywgc2V0dGluZyBpdCB0byAnWScgd2lsbCBpbmplY3QgZmFpbHVyZXMKKwlvbmx5IGludG8gbm9uLXNsZWVwIGFsbG9jYXRpb25zIChHRlBfQVRPTUlDIGFsbG9jYXRpb25zKS4KKworLSAvc3lzL2tlcm5lbC9kZWJ1Zy9mYWlsX3BhZ2VfYWxsb2MvbWluLW9yZGVyOgorCisJc3BlY2lmaWVzIHRoZSBtaW5pbXVtIHBhZ2UgYWxsb2NhdGlvbiBvcmRlciB0byBiZSBpbmplY3RlZAorCWZhaWx1cmVzLgorCistIC9zeXMva2VybmVsL2RlYnVnL2ZhaWxfZnV0ZXgvaWdub3JlLXByaXZhdGU6CisKKwlGb3JtYXQ6IHsgJ1knIHwgJ04nIH0KKwlkZWZhdWx0IGlzICdOJywgc2V0dGluZyBpdCB0byAnWScgd2lsbCBkaXNhYmxlIGZhaWx1cmUgaW5qZWN0aW9ucworCXdoZW4gZGVhbGluZyB3aXRoIHByaXZhdGUgKGFkZHJlc3Mgc3BhY2UpIGZ1dGV4ZXMuCisKK28gQm9vdCBvcHRpb24KKworSW4gb3JkZXIgdG8gaW5qZWN0IGZhdWx0cyB3aGlsZSBkZWJ1Z2ZzIGlzIG5vdCBhdmFpbGFibGUgKGVhcmx5IGJvb3QgdGltZSksCit1c2UgdGhlIGJvb3Qgb3B0aW9uOgorCisJZmFpbHNsYWI9CisJZmFpbF9wYWdlX2FsbG9jPQorCWZhaWxfbWFrZV9yZXF1ZXN0PQorCWZhaWxfZnV0ZXg9CisJbW1jX2NvcmUuZmFpbF9yZXF1ZXN0PTxpbnRlcnZhbD4sPHByb2JhYmlsaXR5Piw8c3BhY2U+LDx0aW1lcz4KKworSG93IHRvIGFkZCBuZXcgZmF1bHQgaW5qZWN0aW9uIGNhcGFiaWxpdHkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK28gI2luY2x1ZGUgPGxpbnV4L2ZhdWx0LWluamVjdC5oPgorCitvIGRlZmluZSB0aGUgZmF1bHQgYXR0cmlidXRlcworCisgIERFQ0xBUkVfRkFVTFRfSU5KRUNUSU9OKG5hbWUpOworCisgIFBsZWFzZSBzZWUgdGhlIGRlZmluaXRpb24gb2Ygc3RydWN0IGZhdWx0X2F0dHIgaW4gZmF1bHQtaW5qZWN0LmgKKyAgZm9yIGRldGFpbHMuCisKK28gcHJvdmlkZSBhIHdheSB0byBjb25maWd1cmUgZmF1bHQgYXR0cmlidXRlcworCistIGJvb3Qgb3B0aW9uCisKKyAgSWYgeW91IG5lZWQgdG8gZW5hYmxlIHRoZSBmYXVsdCBpbmplY3Rpb24gY2FwYWJpbGl0eSBmcm9tIGJvb3QgdGltZSwgeW91IGNhbgorICBwcm92aWRlIGJvb3Qgb3B0aW9uIHRvIGNvbmZpZ3VyZSBpdC4gVGhlcmUgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGl0OgorCisJc2V0dXBfZmF1bHRfYXR0cihhdHRyLCBzdHIpOworCistIGRlYnVnZnMgZW50cmllcworCisgIGZhaWxzbGFiLCBmYWlsX3BhZ2VfYWxsb2MsIGFuZCBmYWlsX21ha2VfcmVxdWVzdCB1c2UgdGhpcyB3YXkuCisgIEhlbHBlciBmdW5jdGlvbnM6CisKKwlmYXVsdF9jcmVhdGVfZGVidWdmc19hdHRyKG5hbWUsIHBhcmVudCwgYXR0cik7CisKKy0gbW9kdWxlIHBhcmFtZXRlcnMKKworICBJZiB0aGUgc2NvcGUgb2YgdGhlIGZhdWx0IGluamVjdGlvbiBjYXBhYmlsaXR5IGlzIGxpbWl0ZWQgdG8gYQorICBzaW5nbGUga2VybmVsIG1vZHVsZSwgaXQgaXMgYmV0dGVyIHRvIHByb3ZpZGUgbW9kdWxlIHBhcmFtZXRlcnMgdG8KKyAgY29uZmlndXJlIHRoZSBmYXVsdCBhdHRyaWJ1dGVzLgorCitvIGFkZCBhIGhvb2sgdG8gaW5zZXJ0IGZhaWx1cmVzCisKKyAgVXBvbiBzaG91bGRfZmFpbCgpIHJldHVybmluZyB0cnVlLCBjbGllbnQgY29kZSBzaG91bGQgaW5qZWN0IGEgZmFpbHVyZS4KKworCXNob3VsZF9mYWlsKGF0dHIsIHNpemUpOworCitBcHBsaWNhdGlvbiBFeGFtcGxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbyBJbmplY3Qgc2xhYiBhbGxvY2F0aW9uIGZhaWx1cmVzIGludG8gbW9kdWxlIGluaXQvZXhpdCBjb2RlCisKKyMhL2Jpbi9iYXNoCisKK0ZBSUxUWVBFPWZhaWxzbGFiCitlY2hvIFkgPiAvc3lzL2tlcm5lbC9kZWJ1Zy8kRkFJTFRZUEUvdGFzay1maWx0ZXIKK2VjaG8gMTAgPiAvc3lzL2tlcm5lbC9kZWJ1Zy8kRkFJTFRZUEUvcHJvYmFiaWxpdHkKK2VjaG8gMTAwID4gL3N5cy9rZXJuZWwvZGVidWcvJEZBSUxUWVBFL2ludGVydmFsCitlY2hvIC0xID4gL3N5cy9rZXJuZWwvZGVidWcvJEZBSUxUWVBFL3RpbWVzCitlY2hvIDAgPiAvc3lzL2tlcm5lbC9kZWJ1Zy8kRkFJTFRZUEUvc3BhY2UKK2VjaG8gMiA+IC9zeXMva2VybmVsL2RlYnVnLyRGQUlMVFlQRS92ZXJib3NlCitlY2hvIDEgPiAvc3lzL2tlcm5lbC9kZWJ1Zy8kRkFJTFRZUEUvaWdub3JlLWdmcC13YWl0CisKK2ZhdWx0eV9zeXN0ZW0oKQoreworCWJhc2ggLWMgImVjaG8gMSA+IC9wcm9jL3NlbGYvbWFrZS1pdC1mYWlsICYmIGV4ZWMgJCoiCit9CisKK2lmIFsgJCMgLWVxIDAgXQordGhlbgorCWVjaG8gIlVzYWdlOiAkMCBtb2R1bGVuYW1lIFsgbW9kdWxlbmFtZSAuLi4gXSIKKwlleGl0IDEKK2ZpCisKK2ZvciBtIGluICQqCitkbworCWVjaG8gaW5zZXJ0aW5nICRtLi4uCisJZmF1bHR5X3N5c3RlbSBtb2Rwcm9iZSAkbQorCisJZWNobyByZW1vdmluZyAkbS4uLgorCWZhdWx0eV9zeXN0ZW0gbW9kcHJvYmUgLXIgJG0KK2RvbmUKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK28gSW5qZWN0IHBhZ2UgYWxsb2NhdGlvbiBmYWlsdXJlcyBvbmx5IGZvciBhIHNwZWNpZmljIG1vZHVsZQorCisjIS9iaW4vYmFzaAorCitGQUlMVFlQRT1mYWlsX3BhZ2VfYWxsb2MKK21vZHVsZT0kMQorCitpZiBbIC16ICRtb2R1bGUgXQordGhlbgorCWVjaG8gIlVzYWdlOiAkMCA8bW9kdWxlbmFtZT4iCisJZXhpdCAxCitmaQorCittb2Rwcm9iZSAkbW9kdWxlCisKK2lmIFsgISAtZCAvc3lzL21vZHVsZS8kbW9kdWxlL3NlY3Rpb25zIF0KK3RoZW4KKwllY2hvIE1vZHVsZSAkbW9kdWxlIGlzIG5vdCBsb2FkZWQKKwlleGl0IDEKK2ZpCisKK2NhdCAvc3lzL21vZHVsZS8kbW9kdWxlL3NlY3Rpb25zLy50ZXh0ID4gL3N5cy9rZXJuZWwvZGVidWcvJEZBSUxUWVBFL3JlcXVpcmUtc3RhcnQKK2NhdCAvc3lzL21vZHVsZS8kbW9kdWxlL3NlY3Rpb25zLy5kYXRhID4gL3N5cy9rZXJuZWwvZGVidWcvJEZBSUxUWVBFL3JlcXVpcmUtZW5kCisKK2VjaG8gTiA+IC9zeXMva2VybmVsL2RlYnVnLyRGQUlMVFlQRS90YXNrLWZpbHRlcgorZWNobyAxMCA+IC9zeXMva2VybmVsL2RlYnVnLyRGQUlMVFlQRS9wcm9iYWJpbGl0eQorZWNobyAxMDAgPiAvc3lzL2tlcm5lbC9kZWJ1Zy8kRkFJTFRZUEUvaW50ZXJ2YWwKK2VjaG8gLTEgPiAvc3lzL2tlcm5lbC9kZWJ1Zy8kRkFJTFRZUEUvdGltZXMKK2VjaG8gMCA+IC9zeXMva2VybmVsL2RlYnVnLyRGQUlMVFlQRS9zcGFjZQorZWNobyAyID4gL3N5cy9rZXJuZWwvZGVidWcvJEZBSUxUWVBFL3ZlcmJvc2UKK2VjaG8gMSA+IC9zeXMva2VybmVsL2RlYnVnLyRGQUlMVFlQRS9pZ25vcmUtZ2ZwLXdhaXQKK2VjaG8gMSA+IC9zeXMva2VybmVsL2RlYnVnLyRGQUlMVFlQRS9pZ25vcmUtZ2ZwLWhpZ2htZW0KK2VjaG8gMTAgPiAvc3lzL2tlcm5lbC9kZWJ1Zy8kRkFJTFRZUEUvc3RhY2t0cmFjZS1kZXB0aAorCit0cmFwICJlY2hvIDAgPiAvc3lzL2tlcm5lbC9kZWJ1Zy8kRkFJTFRZUEUvcHJvYmFiaWxpdHkiIFNJR0lOVCBTSUdURVJNIEVYSVQKKworZWNobyAiSW5qZWN0aW5nIGVycm9ycyBpbnRvIHRoZSBtb2R1bGUgJG1vZHVsZS4uLiAoaW50ZXJydXB0IHRvIHN0b3ApIgorc2xlZXAgMTAwMDAwMAorCitUb29sIHRvIHJ1biBjb21tYW5kIHdpdGggZmFpbHNsYWIgb3IgZmFpbF9wYWdlX2FsbG9jCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJbiBvcmRlciB0byBtYWtlIGl0IGVhc2llciB0byBhY2NvbXBsaXNoIHRoZSB0YXNrcyBtZW50aW9uZWQgYWJvdmUsIHdlIGNhbiB1c2UKK3Rvb2xzL3Rlc3RpbmcvZmF1bHQtaW5qZWN0aW9uL2ZhaWxjbWQuc2guICBQbGVhc2UgcnVuIGEgY29tbWFuZAorIi4vdG9vbHMvdGVzdGluZy9mYXVsdC1pbmplY3Rpb24vZmFpbGNtZC5zaCAtLWhlbHAiIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZAorc2VlIHRoZSBmb2xsb3dpbmcgZXhhbXBsZXMuCisKK0V4YW1wbGVzOgorCitSdW4gYSBjb21tYW5kICJtYWtlIC1DIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLyBydW5fdGVzdHMiIHdpdGggaW5qZWN0aW5nIHNsYWIKK2FsbG9jYXRpb24gZmFpbHVyZS4KKworCSMgLi90b29scy90ZXN0aW5nL2ZhdWx0LWluamVjdGlvbi9mYWlsY21kLnNoIFwKKwkJLS0gbWFrZSAtQyB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8gcnVuX3Rlc3RzCisKK1NhbWUgYXMgYWJvdmUgZXhjZXB0IHRvIHNwZWNpZnkgMTAwIHRpbWVzIGZhaWx1cmVzIGF0IG1vc3QgaW5zdGVhZCBvZiBvbmUgdGltZQorYXQgbW9zdCBieSBkZWZhdWx0LgorCisJIyAuL3Rvb2xzL3Rlc3RpbmcvZmF1bHQtaW5qZWN0aW9uL2ZhaWxjbWQuc2ggLS10aW1lcz0xMDAgXAorCQktLSBtYWtlIC1DIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzLyBydW5fdGVzdHMKKworU2FtZSBhcyBhYm92ZSBleGNlcHQgdG8gaW5qZWN0IHBhZ2UgYWxsb2NhdGlvbiBmYWlsdXJlIGluc3RlYWQgb2Ygc2xhYgorYWxsb2NhdGlvbiBmYWlsdXJlLgorCisJIyBlbnYgRkFJTENNRF9UWVBFPWZhaWxfcGFnZV9hbGxvYyBcCisJCS4vdG9vbHMvdGVzdGluZy9mYXVsdC1pbmplY3Rpb24vZmFpbGNtZC5zaCAtLXRpbWVzPTEwMCBcCisgICAgICAgICAgICAgICAgLS0gbWFrZSAtQyB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8gcnVuX3Rlc3RzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZhdWx0LWluamVjdGlvbi9ub3RpZmllci1lcnJvci1pbmplY3QudHh0IGIvRG9jdW1lbnRhdGlvbi9mYXVsdC1pbmplY3Rpb24vbm90aWZpZXItZXJyb3ItaW5qZWN0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWFkYWJlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mYXVsdC1pbmplY3Rpb24vbm90aWZpZXItZXJyb3ItaW5qZWN0LnR4dApAQCAtMCwwICsxLDk5IEBACitOb3RpZmllciBlcnJvciBpbmplY3Rpb24KKz09PT09PT09PT09PT09PT09PT09PT09PQorCitOb3RpZmllciBlcnJvciBpbmplY3Rpb24gcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gaW5qZWN0IGFydGlmaWNpYWwgZXJyb3JzIHRvCitzcGVjaWZpZWQgbm90aWZpZXIgY2hhaW4gY2FsbGJhY2tzLiBJdCBpcyB1c2VmdWwgdG8gdGVzdCB0aGUgZXJyb3IgaGFuZGxpbmcgb2YKK25vdGlmaWVyIGNhbGwgY2hhaW4gZmFpbHVyZXMgd2hpY2ggaXMgcmFyZWx5IGV4ZWN1dGVkLiAgVGhlcmUgYXJlIGtlcm5lbAorbW9kdWxlcyB0aGF0IGNhbiBiZSB1c2VkIHRvIHRlc3QgdGhlIGZvbGxvd2luZyBub3RpZmllcnMuCisKKyAqIENQVSBub3RpZmllcgorICogUE0gbm90aWZpZXIKKyAqIE1lbW9yeSBob3RwbHVnIG5vdGlmaWVyCisgKiBwb3dlcnBjIHBTZXJpZXMgcmVjb25maWcgbm90aWZpZXIKKworQ1BVIG5vdGlmaWVyIGVycm9yIGluamVjdGlvbiBtb2R1bGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGlzIGZlYXR1cmUgY2FuIGJlIHVzZWQgdG8gdGVzdCB0aGUgZXJyb3IgaGFuZGxpbmcgb2YgdGhlIENQVSBub3RpZmllcnMgYnkKK2luamVjdGluZyBhcnRpZmljaWFsIGVycm9ycyB0byBDUFUgbm90aWZpZXIgY2hhaW4gY2FsbGJhY2tzLgorCitJZiB0aGUgbm90aWZpZXIgY2FsbCBjaGFpbiBzaG91bGQgYmUgZmFpbGVkIHdpdGggc29tZSBldmVudHMgbm90aWZpZWQsIHdyaXRlCit0aGUgZXJyb3IgY29kZSB0byBkZWJ1Z2ZzIGludGVyZmFjZQorL3N5cy9rZXJuZWwvZGVidWcvbm90aWZpZXItZXJyb3ItaW5qZWN0L2NwdS9hY3Rpb25zLzxub3RpZmllciBldmVudD4vZXJyb3IKKworUG9zc2libGUgQ1BVIG5vdGlmaWVyIGV2ZW50cyB0byBiZSBmYWlsZWQgYXJlOgorCisgKiBDUFVfVVBfUFJFUEFSRQorICogQ1BVX1VQX1BSRVBBUkVfRlJPWkVOCisgKiBDUFVfRE9XTl9QUkVQQVJFCisgKiBDUFVfRE9XTl9QUkVQQVJFX0ZST1pFTgorCitFeGFtcGxlMTogSW5qZWN0IENQVSBvZmZsaW5lIGVycm9yICgtMSA9PSAtRVBFUk0pCisKKwkjIGNkIC9zeXMva2VybmVsL2RlYnVnL25vdGlmaWVyLWVycm9yLWluamVjdC9jcHUKKwkjIGVjaG8gLTEgPiBhY3Rpb25zL0NQVV9ET1dOX1BSRVBBUkUvZXJyb3IKKwkjIGVjaG8gMCA+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTEvb25saW5lCisJYmFzaDogZWNobzogd3JpdGUgZXJyb3I6IE9wZXJhdGlvbiBub3QgcGVybWl0dGVkCisKK0V4YW1wbGUyOiBpbmplY3QgQ1BVIG9ubGluZSBlcnJvciAoLTIgPT0gLUVOT0VOVCkKKworCSMgZWNobyAtMiA+IGFjdGlvbnMvQ1BVX1VQX1BSRVBBUkUvZXJyb3IKKwkjIGVjaG8gMSA+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTEvb25saW5lCisJYmFzaDogZWNobzogd3JpdGUgZXJyb3I6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKworUE0gbm90aWZpZXIgZXJyb3IgaW5qZWN0aW9uIG1vZHVsZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhpcyBmZWF0dXJlIGlzIGNvbnRyb2xsZWQgdGhyb3VnaCBkZWJ1Z2ZzIGludGVyZmFjZQorL3N5cy9rZXJuZWwvZGVidWcvbm90aWZpZXItZXJyb3ItaW5qZWN0L3BtL2FjdGlvbnMvPG5vdGlmaWVyIGV2ZW50Pi9lcnJvcgorCitQb3NzaWJsZSBQTSBub3RpZmllciBldmVudHMgdG8gYmUgZmFpbGVkIGFyZToKKworICogUE1fSElCRVJOQVRJT05fUFJFUEFSRQorICogUE1fU1VTUEVORF9QUkVQQVJFCisgKiBQTV9SRVNUT1JFX1BSRVBBUkUKKworRXhhbXBsZTogSW5qZWN0IFBNIHN1c3BlbmQgZXJyb3IgKC0xMiA9IC1FTk9NRU0pCisKKwkjIGNkIC9zeXMva2VybmVsL2RlYnVnL25vdGlmaWVyLWVycm9yLWluamVjdC9wbS8KKwkjIGVjaG8gLTEyID4gYWN0aW9ucy9QTV9TVVNQRU5EX1BSRVBBUkUvZXJyb3IKKwkjIGVjaG8gbWVtID4gL3N5cy9wb3dlci9zdGF0ZQorCWJhc2g6IGVjaG86IHdyaXRlIGVycm9yOiBDYW5ub3QgYWxsb2NhdGUgbWVtb3J5CisKK01lbW9yeSBob3RwbHVnIG5vdGlmaWVyIGVycm9yIGluamVjdGlvbiBtb2R1bGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgZmVhdHVyZSBpcyBjb250cm9sbGVkIHRocm91Z2ggZGVidWdmcyBpbnRlcmZhY2UKKy9zeXMva2VybmVsL2RlYnVnL25vdGlmaWVyLWVycm9yLWluamVjdC9tZW1vcnkvYWN0aW9ucy88bm90aWZpZXIgZXZlbnQ+L2Vycm9yCisKK1Bvc3NpYmxlIG1lbW9yeSBub3RpZmllciBldmVudHMgdG8gYmUgZmFpbGVkIGFyZToKKworICogTUVNX0dPSU5HX09OTElORQorICogTUVNX0dPSU5HX09GRkxJTkUKKworRXhhbXBsZTogSW5qZWN0IG1lbW9yeSBob3RwbHVnIG9mZmxpbmUgZXJyb3IgKC0xMiA9PSAtRU5PTUVNKQorCisJIyBjZCAvc3lzL2tlcm5lbC9kZWJ1Zy9ub3RpZmllci1lcnJvci1pbmplY3QvbWVtb3J5CisJIyBlY2hvIC0xMiA+IGFjdGlvbnMvTUVNX0dPSU5HX09GRkxJTkUvZXJyb3IKKwkjIGVjaG8gb2ZmbGluZSA+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L21lbW9yeVhYWC9zdGF0ZQorCWJhc2g6IGVjaG86IHdyaXRlIGVycm9yOiBDYW5ub3QgYWxsb2NhdGUgbWVtb3J5CisKK3Bvd2VycGMgcFNlcmllcyByZWNvbmZpZyBub3RpZmllciBlcnJvciBpbmplY3Rpb24gbW9kdWxlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhpcyBmZWF0dXJlIGlzIGNvbnRyb2xsZWQgdGhyb3VnaCBkZWJ1Z2ZzIGludGVyZmFjZQorL3N5cy9rZXJuZWwvZGVidWcvbm90aWZpZXItZXJyb3ItaW5qZWN0L3BTZXJpZXMtcmVjb25maWcvYWN0aW9ucy88bm90aWZpZXIgZXZlbnQ+L2Vycm9yCisKK1Bvc3NpYmxlIHBTZXJpZXMgcmVjb25maWcgbm90aWZpZXIgZXZlbnRzIHRvIGJlIGZhaWxlZCBhcmU6CisKKyAqIFBTRVJJRVNfUkVDT05GSUdfQURECisgKiBQU0VSSUVTX1JFQ09ORklHX1JFTU9WRQorICogUFNFUklFU19EUkNPTkZfTUVNX0FERAorICogUFNFUklFU19EUkNPTkZfTUVNX1JFTU9WRQorCitGb3IgbW9yZSB1c2FnZSBleGFtcGxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZXJlIGFyZSB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cyB1c2luZyB0aGUgbm90aWZpZXIgZXJyb3IgaW5qZWN0aW9uIGZlYXR1cmVzCitmb3IgQ1BVIGFuZCBtZW1vcnkgbm90aWZpZXJzLgorCisgKiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jcHUtaG90cGx1Zy9vbi1vZmYtdGVzdC5zaAorICogdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbWVtb3J5LWhvdHBsdWcvb24tb2ZmLXRlc3Quc2gKKworVGhlc2Ugc2NyaXB0cyBmaXJzdCBkbyBzaW1wbGUgb25saW5lIGFuZCBvZmZsaW5lIHRlc3RzIGFuZCB0aGVuIGRvIGZhdWx0CitpbmplY3Rpb24gdGVzdHMgaWYgbm90aWZpZXIgZXJyb3IgaW5qZWN0aW9uIG1vZHVsZSBpcyBhdmFpbGFibGUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZhdWx0LWluamVjdGlvbi9wcm92b2tlLWNyYXNoZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9mYXVsdC1pbmplY3Rpb24vcHJvdm9rZS1jcmFzaGVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTlkM2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mYXVsdC1pbmplY3Rpb24vcHJvdm9rZS1jcmFzaGVzLnR4dApAQCAtMCwwICsxLDM4IEBACitUaGUgbGtkdG0gbW9kdWxlIHByb3ZpZGVzIGFuIGludGVyZmFjZSB0byBjcmFzaCBvciBpbmp1cmUgdGhlIGtlcm5lbCBhdAorcHJlZGVmaW5lZCBjcmFzaHBvaW50cyB0byBldmFsdWF0ZSB0aGUgcmVsaWFiaWxpdHkgb2YgY3Jhc2ggZHVtcHMgb2J0YWluZWQKK3VzaW5nIGRpZmZlcmVudCBkdW1waW5nIHNvbHV0aW9ucy4gVGhlIG1vZHVsZSB1c2VzIEtQUk9CRXMgdG8gaW5zdHJ1bWVudAorY3Jhc2hpbmcgcG9pbnRzLCBidXQgY2FuIGFsc28gY3Jhc2ggdGhlIGtlcm5lbCBkaXJlY3RseSB3aXRob3V0IEtSUE9CRQorc3VwcG9ydC4KKworCitZb3UgY2FuIHByb3ZpZGUgdGhlIHdheSBlaXRoZXIgdGhyb3VnaCBtb2R1bGUgYXJndW1lbnRzIHdoZW4gaW5zZXJ0aW5nCit0aGUgbW9kdWxlLCBvciB0aHJvdWdoIGEgZGVidWdmcyBpbnRlcmZhY2UuCisKK1VzYWdlOiBpbnNtb2QgbGtkdG0ua28gW3JlY3VyX2NvdW50PXs+MH1dIGNwb2ludF9uYW1lPTw+IGNwb2ludF90eXBlPTw+CisJCQkJW2Nwb2ludF9jb3VudD17PjB9XQorCisgIHJlY3VyX2NvdW50IDogUmVjdXJzaW9uIGxldmVsIGZvciB0aGUgc3RhY2sgb3ZlcmZsb3cgdGVzdC4gRGVmYXVsdCBpcyAxMC4KKworICBjcG9pbnRfbmFtZSA6IENyYXNoIHBvaW50IHdoZXJlIHRoZSBrZXJuZWwgaXMgdG8gYmUgY3Jhc2hlZC4gSXQgY2FuIGJlCisJIG9uZSBvZiBJTlRfSEFSRFdBUkVfRU5UUlksIElOVF9IV19JUlFfRU4sIElOVF9UQVNLTEVUX0VOVFJZLAorCSBGU19ERVZSVywgTUVNX1NXQVBPVVQsIFRJTUVSQURELCBTQ1NJX0RJU1BBVENIX0NNRCwKKwkgSURFX0NPUkVfQ1AsIERJUkVDVAorCisgIGNwb2ludF90eXBlIDogSW5kaWNhdGVzIHRoZSBhY3Rpb24gdG8gYmUgdGFrZW4gb24gaGl0dGluZyB0aGUgY3Jhc2ggcG9pbnQuCisgICAgIEl0IGNhbiBiZSBvbmUgb2YgUEFOSUMsIEJVRywgRVhDRVBUSU9OLCBMT09QLCBPVkVSRkxPVywKKyAgICAgQ09SUlVQVF9TVEFDSywgVU5BTElHTkVEX0xPQURfU1RPUkVfV1JJVEUsIE9WRVJXUklURV9BTExPQ0FUSU9OLAorICAgICBXUklURV9BRlRFUl9GUkVFLAorCisgIGNwb2ludF9jb3VudCA6IEluZGljYXRlcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBjcmFzaCBwb2ludCBpcyB0byBiZSBoaXQKKyAgICB0byB0cmlnZ2VyIGFuIGFjdGlvbi4gVGhlIGRlZmF1bHQgaXMgMTAuCisKK1lvdSBjYW4gYWxzbyBpbmR1Y2UgZmFpbHVyZXMgYnkgbW91bnRpbmcgZGVidWdmcyBhbmQgd3JpdGluZyB0aGUgdHlwZSB0bworPG1vdW50cG9pbnQ+L3Byb3Zva2UtY3Jhc2gvPGNyYXNocG9pbnQ+LiBFLmcuLAorCisgIG1vdW50IC10IGRlYnVnZnMgZGVidWdmcyAvbW50CisgIGVjaG8gRVhDRVBUSU9OID4gL21udC9wcm92b2tlLWNyYXNoL0lOVF9IQVJEV0FSRV9FTlRSWQorCisKK0Egc3BlY2lhbCBmaWxlIGlzIGBESVJFQ1QnIHdoaWNoIHdpbGwgaW5kdWNlIHRoZSBjcmFzaCBkaXJlY3RseSB3aXRob3V0CitLUFJPQkUgaW5zdHJ1bWVudGF0aW9uLiBUaGlzIG1vZGUgaXMgdGhlIG9ubHkgb25lIGF2YWlsYWJsZSB3aGVuIHRoZSBtb2R1bGUKK2lzIGJ1aWx0IG9uIGEga2VybmVsIHdpdGhvdXQgS1BST0JFcyBzdXBwb3J0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mYi8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vZmIvMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU4NWU3YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmIvMDAtSU5ERVgKQEAgLTAsMCArMSw3NSBAQAorSW5kZXggb2YgZmlsZXMgaW4gRG9jdW1lbnRhdGlvbi9mYi4gIElmIHlvdSB0aGluayBzb21ldGhpbmcgYWJvdXQgZnJhbWUKK2J1ZmZlciBkZXZpY2VzIG5lZWRzIGFuIGVudHJ5IGhlcmUsIG5lZWRzIGNvcnJlY3Rpb24gb3IgeW91J3ZlIHdyaXR0ZW4gb25lCitwbGVhc2UgbWFpbCBtZS4KKwkJCQkgICAgR2VlcnQgVXl0dGVyaG9ldmVuIDxnZWVydEBsaW51eC1tNjhrLm9yZz4KKworMDAtSU5ERVgKKwktIHRoaXMgZmlsZS4KK2FwaS50eHQKKwktIFRoZSBmcmFtZSBidWZmZXIgQVBJIGJldHdlZW4gYXBwbGljYXRpb25zIGFuZCBidWZmZXIgZGV2aWNlcy4KK2Fya2ZiLnR4dAorCS0gaW5mbyBvbiB0aGUgZmJkZXYgZHJpdmVyIGZvciBBUksgTG9naWMgY2hpcHMuCithdHkxMjhmYi50eHQKKwktIGluZm8gb24gdGhlIEFUSSBSYWdlMTI4IGZyYW1lIGJ1ZmZlciBkcml2ZXIuCitjaXJydXNmYi50eHQKKwktIGluZm8gb24gdGhlIGRyaXZlciBmb3IgQ2lycnVzIExvZ2ljIGNoaXBzZXRzLgorY21hcF94ZmJkZXYudHh0CisJLSBhbiBpbnRyb2R1Y3Rpb24gdG8gZmJkZXYncyBjbWFwIHN0cnVjdHVyZXMuCitkZWZlcnJlZF9pby50eHQKKwktIGFuIGludHJvZHVjdGlvbiB0byBkZWZlcnJlZCBJTy4KK2VmaWZiLnR4dAorCS0gaW5mbyBvbiB0aGUgRUZJIHBsYXRmb3JtIGRyaXZlciBmb3IgSW50ZWwgYmFzZWQgQXBwbGUgY29tcHV0ZXJzLgorZXA5M3h4LWZiLnR4dAorCS0gaW5mbyBvbiB0aGUgZHJpdmVyIGZvciBFUDkzeHggTENEIGNvbnRyb2xsZXIuCitmYmNvbi50eHQKKwktIGludHJvIHRvIGFuZCB1c2FnZSBndWlkZSBmb3IgdGhlIGZyYW1lYnVmZmVyIGNvbnNvbGUgKGZiY29uKS4KK2ZyYW1lYnVmZmVyLnR4dAorCS0gaW50cm9kdWN0aW9uIHRvIGZyYW1lIGJ1ZmZlciBkZXZpY2VzLgorZ3hmYi50eHQKKwktIGluZm8gb24gdGhlIGZyYW1lYnVmZmVyIGRyaXZlciBmb3IgQU1EIEdlb2RlIEdYMiBiYXNlZCBwcm9jZXNzb3JzLgoraW50ZWw4MTAudHh0CisJLSBkb2N1bWVudGF0aW9uIGZvciB0aGUgSW50ZWwgODEwLzgxNSBmcmFtZWJ1ZmZlciBkcml2ZXIuCitpbnRlbGZiLnR4dAorCS0gZG9jcyBmb3IgSW50ZWwgODMwTS84NDVHLzg1MkdNLzg1NUdNLzg2NUcvOTE1Ry85NDVHIGZiIGRyaXZlci4KK2ludGVybmFscy50eHQKKwktIHF1aWNrIG92ZXJ2aWV3IG9mIGZyYW1lIGJ1ZmZlciBkZXZpY2UgaW50ZXJuYWxzLgorbHhmYi50eHQKKwktIGluZm8gb24gdGhlIGZyYW1lYnVmZmVyIGRyaXZlciBmb3IgQU1EIEdlb2RlIExYIGJhc2VkIHByb2Nlc3NvcnMuCittYXRyb3hmYi50eHQKKwktIGluZm8gb24gdGhlIE1hdHJveCBmcmFtZWJ1ZmZlciBkcml2ZXIgZm9yIEFscGhhLCBJbnRlbCBhbmQgUFBDLgorbWV0cm9ub21lZmIudHh0CisJLSBpbmZvIG9uIHRoZSBkcml2ZXIgZm9yIHRoZSBNZXRyb25vbWUgZGlzcGxheSBjb250cm9sbGVyLgorbW9kZWRiLnR4dAorCS0gaW5mbyBvbiB0aGUgdmlkZW8gbW9kZSBkYXRhYmFzZS4KK3B2cjJmYi50eHQKKwktIGluZm8gb24gdGhlIFBvd2VyVlIgMiBmcmFtZSBidWZmZXIgZHJpdmVyLgorcHhhZmIudHh0CisJLSBpbmZvIG9uIHRoZSBkcml2ZXIgZm9yIHRoZSBQWEEyNXggTENEIGNvbnRyb2xsZXIuCitzM2ZiLnR4dAorCS0gaW5mbyBvbiB0aGUgZmJkZXYgZHJpdmVyIGZvciBTMyBUcmlvL1ZpcmdlIGNoaXBzLgorc2ExMTAwZmIudHh0CisJLSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZHJpdmVyIGZvciB0aGUgU0EtMTEwMCBMQ0QgY29udHJvbGxlci4KK3NoNzc2MGZiLnR4dAorCS0gaW5mbyBvbiB0aGUgU0g3NzYwL1NINzc2MyBpbnRlZ3JhdGVkIExDREMgRnJhbWVidWZmZXIgZHJpdmVyLgorc2lzZmIudHh0CisJLSBpbmZvIG9uIHRoZSBmcmFtZWJ1ZmZlciBkZXZpY2UgZHJpdmVyIGZvciB2YXJpb3VzIFNpUyBjaGlwcy4KK3NtNTAxLnR4dAorCS0gaW5mbyBvbiB0aGUgZnJhbWVidWZmZXIgZGV2aWNlIGRyaXZlciBmb3Igc201MDEgdmlkZW9mcmFtZWJ1ZmZlci4KK3NzdGZiLnR4dAorCS0gaW5mbyBvbiB0aGUgZnJhbWUgYnVmZmVyIGRyaXZlciBmb3IgM2RmeCcgVm9vZG9vIEdyYXBoaWNzIGJvYXJkcy4KK3RnYWZiLnR4dAorCS0gaW5mbyBvbiB0aGUgVEdBIChERUNDaGlwIDIxMDMwKSBmcmFtZSBidWZmZXIgZHJpdmVyLgordHJpZGVudGZiLnR4dAorCWluZm8gb24gdGhlIGZyYW1lYnVmZmVyIGRyaXZlciBmb3Igc29tZSBUcmlkZW50IGNoaXAgYmFzZWQgY2FyZHMuCit1ZGxmYi50eHQKKwktIERyaXZlciBmb3IgRGlzcGxheUxpbmsgVVNCIDIuMCBjaGlwcy4KK3V2ZXNhZmIudHh0CisJLSBpbmZvIG9uIHRoZSB1c2Vyc3BhY2UgVkVTQSAoVkJFMisgY29tcGxpYW50KSBmcmFtZSBidWZmZXIgZGV2aWNlLgordmVzYWZiLnR4dAorCS0gaW5mbyBvbiB0aGUgVkVTQSBmcmFtZSBidWZmZXIgZGV2aWNlLgordmlhZmIubW9kZXMKKwktIGxpc3Qgb2YgbW9kZXMgZm9yIFZJQSBJbnRlZ3JhdGlvbiBHcmFwaGljIENoaXAuCit2aWFmYi50eHQKKwktIGluZm8gb24gdGhlIFZJQSBJbnRlZ3JhdGlvbiBHcmFwaGljIENoaXAgY29uc29sZSBmcmFtZWJ1ZmZlciBkcml2ZXIuCit2dDg2MjNmYi50eHQKKwktIGluZm8gb24gdGhlIGZiIGRyaXZlciBmb3IgdGhlIGdyYXBoaWNzIGNvcmUgaW4gVklBIFZUODYyMyBjaGlwc2V0cy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvYXBpLnR4dCBiL0RvY3VtZW50YXRpb24vZmIvYXBpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGZmN2RlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mYi9hcGkudHh0CkBAIC0wLDAgKzEsMzA2IEBACisJCQlUaGUgRnJhbWUgQnVmZmVyIERldmljZSBBUEkKKwkJCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitMYXN0IHJldmlzZWQ6IEp1bmUgMjEsIDIwMTEKKworCiswLiBJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgZnJhbWUgYnVmZmVyIEFQSSB1c2VkIGJ5IGFwcGxpY2F0aW9ucyB0byBpbnRlcmFjdAord2l0aCBmcmFtZSBidWZmZXIgZGV2aWNlcy4gSW4ta2VybmVsIEFQSXMgYmV0d2VlbiBkZXZpY2UgZHJpdmVycyBhbmQgdGhlIGZyYW1lCitidWZmZXIgY29yZSBhcmUgbm90IGRlc2NyaWJlZC4KKworRHVlIHRvIGEgbGFjayBvZiBkb2N1bWVudGF0aW9uIGluIHRoZSBvcmlnaW5hbCBmcmFtZSBidWZmZXIgQVBJLCBkcml2ZXJzCitiZWhhdmlvdXJzIGRpZmZlciBpbiBzdWJ0bGUgKGFuZCBub3Qgc28gc3VidGxlKSB3YXlzLiBUaGlzIGRvY3VtZW50IGRlc2NyaWJlcwordGhlIHJlY29tbWVuZGVkIEFQSSBpbXBsZW1lbnRhdGlvbiwgYnV0IGFwcGxpY2F0aW9ucyBzaG91bGQgYmUgcHJlcGFyZWQgdG8KK2RlYWwgd2l0aCBkaWZmZXJlbnQgYmVoYXZpb3Vycy4KKworCisxLiBDYXBhYmlsaXRpZXMKKy0tLS0tLS0tLS0tLS0tLQorCitEZXZpY2UgYW5kIGRyaXZlciBjYXBhYmlsaXRpZXMgYXJlIHJlcG9ydGVkIGluIHRoZSBmaXhlZCBzY3JlZW4gaW5mb3JtYXRpb24KK2NhcGFiaWxpdGllcyBmaWVsZC4KKworc3RydWN0IGZiX2ZpeF9zY3JlZW5pbmZvIHsKKwkuLi4KKwlfX3UxNiBjYXBhYmlsaXRpZXM7CQkvKiBzZWUgRkJfQ0FQXyoJCQkqLworCS4uLgorfTsKKworQXBwbGljYXRpb24gc2hvdWxkIHVzZSB0aG9zZSBjYXBhYmlsaXRpZXMgdG8gZmluZCBvdXQgd2hhdCBmZWF0dXJlcyB0aGV5IGNhbgorZXhwZWN0IGZyb20gdGhlIGRldmljZSBhbmQgZHJpdmVyLgorCistIEZCX0NBUF9GT1VSQ0MKKworVGhlIGRyaXZlciBzdXBwb3J0cyB0aGUgZm91ciBjaGFyYWN0ZXIgY29kZSAoRk9VUkNDKSBiYXNlZCBmb3JtYXQgc2V0dGluZyBBUEkuCitXaGVuIHN1cHBvcnRlZCwgZm9ybWF0cyBhcmUgY29uZmlndXJlZCB1c2luZyBhIEZPVVJDQyBpbnN0ZWFkIG9mIG1hbnVhbGx5CitzcGVjaWZ5aW5nIGNvbG9yIGNvbXBvbmVudHMgbGF5b3V0LgorCisKKzIuIFR5cGVzIGFuZCB2aXN1YWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQaXhlbHMgYXJlIHN0b3JlZCBpbiBtZW1vcnkgaW4gaGFyZHdhcmUtZGVwZW5kZW50IGZvcm1hdHMuIEFwcGxpY2F0aW9ucyBuZWVkCit0byBiZSBhd2FyZSBvZiB0aGUgcGl4ZWwgc3RvcmFnZSBmb3JtYXQgaW4gb3JkZXIgdG8gd3JpdGUgaW1hZ2UgZGF0YSB0byB0aGUKK2ZyYW1lIGJ1ZmZlciBtZW1vcnkgaW4gdGhlIGZvcm1hdCBleHBlY3RlZCBieSB0aGUgaGFyZHdhcmUuCisKK0Zvcm1hdHMgYXJlIGRlc2NyaWJlZCBieSBmcmFtZSBidWZmZXIgdHlwZXMgYW5kIHZpc3VhbHMuIFNvbWUgdmlzdWFscyByZXF1aXJlCithZGRpdGlvbmFsIGluZm9ybWF0aW9uLCB3aGljaCBhcmUgc3RvcmVkIGluIHRoZSB2YXJpYWJsZSBzY3JlZW4gaW5mb3JtYXRpb24KK2JpdHNfcGVyX3BpeGVsLCBncmF5c2NhbGUsIHJlZCwgZ3JlZW4sIGJsdWUgYW5kIHRyYW5zcCBmaWVsZHMuCisKK1Zpc3VhbHMgZGVzY3JpYmUgaG93IGNvbG9yIGluZm9ybWF0aW9uIGlzIGVuY29kZWQgYW5kIGFzc2VtYmxlZCB0byBjcmVhdGUKK21hY3JvcGl4ZWxzLiBUeXBlcyBkZXNjcmliZSBob3cgbWFjcm9waXhlbHMgYXJlIHN0b3JlZCBpbiBtZW1vcnkuIFRoZSBmb2xsb3dpbmcKK3R5cGVzIGFuZCB2aXN1YWxzIGFyZSBzdXBwb3J0ZWQuCisKKy0gRkJfVFlQRV9QQUNLRURfUElYRUxTCisKK01hY3JvcGl4ZWxzIGFyZSBzdG9yZWQgY29udGlndW91c2x5IGluIGEgc2luZ2xlIHBsYW5lLiBJZiB0aGUgbnVtYmVyIG9mIGJpdHMKK3BlciBtYWNyb3BpeGVsIGlzIG5vdCBhIG11bHRpcGxlIG9mIDgsIHdoZXRoZXIgbWFjcm9waXhlbHMgYXJlIHBhZGRlZCB0byB0aGUKK25leHQgbXVsdGlwbGUgb2YgOCBiaXRzIG9yIHBhY2tlZCB0b2dldGhlciBpbnRvIGJ5dGVzIGRlcGVuZHMgb24gdGhlIHZpc3VhbC4KKworUGFkZGluZyBhdCBlbmQgb2YgbGluZXMgbWF5IGJlIHByZXNlbnQgYW5kIGlzIHRoZW4gcmVwb3J0ZWQgdGhyb3VnaCB0aGUgZml4ZWQKK3NjcmVlbiBpbmZvcm1hdGlvbiBsaW5lX2xlbmd0aCBmaWVsZC4KKworLSBGQl9UWVBFX1BMQU5FUworCitNYWNyb3BpeGVscyBhcmUgc3BsaXQgYWNyb3NzIG11bHRpcGxlIHBsYW5lcy4gVGhlIG51bWJlciBvZiBwbGFuZXMgaXMgZXF1YWwgdG8KK3RoZSBudW1iZXIgb2YgYml0cyBwZXIgbWFjcm9waXhlbCwgd2l0aCBwbGFuZSBpJ3RoIHN0b3JpbmcgaSd0aCBiaXQgZnJvbSBhbGwKK21hY3JvcGl4ZWxzLgorCitQbGFuZXMgYXJlIGxvY2F0ZWQgY29udGlndW91c2x5IGluIG1lbW9yeS4KKworLSBGQl9UWVBFX0lOVEVSTEVBVkVEX1BMQU5FUworCitNYWNyb3BpeGVscyBhcmUgc3BsaXQgYWNyb3NzIG11bHRpcGxlIHBsYW5lcy4gVGhlIG51bWJlciBvZiBwbGFuZXMgaXMgZXF1YWwgdG8KK3RoZSBudW1iZXIgb2YgYml0cyBwZXIgbWFjcm9waXhlbCwgd2l0aCBwbGFuZSBpJ3RoIHN0b3JpbmcgaSd0aCBiaXQgZnJvbSBhbGwKK21hY3JvcGl4ZWxzLgorCitQbGFuZXMgYXJlIGludGVybGVhdmVkIGluIG1lbW9yeS4gVGhlIGludGVybGVhdmUgZmFjdG9yLCBkZWZpbmVkIGFzIHRoZQorZGlzdGFuY2UgaW4gYnl0ZXMgYmV0d2VlbiB0aGUgYmVnaW5uaW5nIG9mIHR3byBjb25zZWN1dGl2ZSBpbnRlcmxlYXZlZCBibG9ja3MKK2JlbG9uZ2luZyB0byBkaWZmZXJlbnQgcGxhbmVzLCBpcyBzdG9yZWQgaW4gdGhlIGZpeGVkIHNjcmVlbiBpbmZvcm1hdGlvbgordHlwZV9hdXggZmllbGQuCisKKy0gRkJfVFlQRV9GT1VSQ0MKKworTWFjcm9waXhlbHMgYXJlIHN0b3JlZCBpbiBtZW1vcnkgYXMgZGVzY3JpYmVkIGJ5IHRoZSBmb3JtYXQgRk9VUkNDIGlkZW50aWZpZXIKK3N0b3JlZCBpbiB0aGUgdmFyaWFibGUgc2NyZWVuIGluZm9ybWF0aW9uIGdyYXlzY2FsZSBmaWVsZC4KKworLSBGQl9WSVNVQUxfTU9OTzAxCisKK1BpeGVscyBhcmUgYmxhY2sgb3Igd2hpdGUgYW5kIHN0b3JlZCBvbiBhIG51bWJlciBvZiBiaXRzICh0eXBpY2FsbHkgb25lKQorc3BlY2lmaWVkIGJ5IHRoZSB2YXJpYWJsZSBzY3JlZW4gaW5mb3JtYXRpb24gYnBwIGZpZWxkLgorCitCbGFjayBwaXhlbHMgYXJlIHJlcHJlc2VudGVkIGJ5IGFsbCBiaXRzIHNldCB0byAxIGFuZCB3aGl0ZSBwaXhlbHMgYnkgYWxsIGJpdHMKK3NldCB0byAwLiBXaGVuIHRoZSBudW1iZXIgb2YgYml0cyBwZXIgcGl4ZWwgaXMgc21hbGxlciB0aGFuIDgsIHNldmVyYWwgcGl4ZWxzCithcmUgcGFja2VkIHRvZ2V0aGVyIGluIGEgYnl0ZS4KKworRkJfVklTVUFMX01PTk8wMSBpcyBjdXJyZW50bHkgdXNlZCB3aXRoIEZCX1RZUEVfUEFDS0VEX1BJWEVMUyBvbmx5LgorCistIEZCX1ZJU1VBTF9NT05PMTAKKworUGl4ZWxzIGFyZSBibGFjayBvciB3aGl0ZSBhbmQgc3RvcmVkIG9uIGEgbnVtYmVyIG9mIGJpdHMgKHR5cGljYWxseSBvbmUpCitzcGVjaWZpZWQgYnkgdGhlIHZhcmlhYmxlIHNjcmVlbiBpbmZvcm1hdGlvbiBicHAgZmllbGQuCisKK0JsYWNrIHBpeGVscyBhcmUgcmVwcmVzZW50ZWQgYnkgYWxsIGJpdHMgc2V0IHRvIDAgYW5kIHdoaXRlIHBpeGVscyBieSBhbGwgYml0cworc2V0IHRvIDEuIFdoZW4gdGhlIG51bWJlciBvZiBiaXRzIHBlciBwaXhlbCBpcyBzbWFsbGVyIHRoYW4gOCwgc2V2ZXJhbCBwaXhlbHMKK2FyZSBwYWNrZWQgdG9nZXRoZXIgaW4gYSBieXRlLgorCitGQl9WSVNVQUxfTU9OTzAxIGlzIGN1cnJlbnRseSB1c2VkIHdpdGggRkJfVFlQRV9QQUNLRURfUElYRUxTIG9ubHkuCisKKy0gRkJfVklTVUFMX1RSVUVDT0xPUgorCitQaXhlbHMgYXJlIGJyb2tlbiBpbnRvIHJlZCwgZ3JlZW4gYW5kIGJsdWUgY29tcG9uZW50cywgYW5kIGVhY2ggY29tcG9uZW50CitpbmRleGVzIGEgcmVhZC1vbmx5IGxvb2t1cCB0YWJsZSBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUuIExvb2t1cCB0YWJsZXMKK2FyZSBkZXZpY2UtZGVwZW5kZW50LCBhbmQgcHJvdmlkZSBsaW5lYXIgb3Igbm9uLWxpbmVhciByYW1wcy4KKworRWFjaCBjb21wb25lbnQgaXMgc3RvcmVkIGluIGEgbWFjcm9waXhlbCBhY2NvcmRpbmcgdG8gdGhlIHZhcmlhYmxlIHNjcmVlbgoraW5mb3JtYXRpb24gcmVkLCBncmVlbiwgYmx1ZSBhbmQgdHJhbnNwIGZpZWxkcy4KKworLSBGQl9WSVNVQUxfUFNFVURPQ09MT1IgYW5kIEZCX1ZJU1VBTF9TVEFUSUNfUFNFVURPQ09MT1IKKworUGl4ZWwgdmFsdWVzIGFyZSBlbmNvZGVkIGFzIGluZGljZXMgaW50byBhIGNvbG9ybWFwIHRoYXQgc3RvcmVzIHJlZCwgZ3JlZW4gYW5kCitibHVlIGNvbXBvbmVudHMuIFRoZSBjb2xvcm1hcCBpcyByZWFkLW9ubHkgZm9yIEZCX1ZJU1VBTF9TVEFUSUNfUFNFVURPQ09MT1IKK2FuZCByZWFkLXdyaXRlIGZvciBGQl9WSVNVQUxfUFNFVURPQ09MT1IuCisKK0VhY2ggcGl4ZWwgdmFsdWUgaXMgc3RvcmVkIGluIHRoZSBudW1iZXIgb2YgYml0cyByZXBvcnRlZCBieSB0aGUgdmFyaWFibGUKK3NjcmVlbiBpbmZvcm1hdGlvbiBiaXRzX3Blcl9waXhlbCBmaWVsZC4KKworLSBGQl9WSVNVQUxfRElSRUNUQ09MT1IKKworUGl4ZWxzIGFyZSBicm9rZW4gaW50byByZWQsIGdyZWVuIGFuZCBibHVlIGNvbXBvbmVudHMsIGFuZCBlYWNoIGNvbXBvbmVudAoraW5kZXhlcyBhIHByb2dyYW1tYWJsZSBsb29rdXAgdGFibGUgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlLgorCitFYWNoIGNvbXBvbmVudCBpcyBzdG9yZWQgaW4gYSBtYWNyb3BpeGVsIGFjY29yZGluZyB0byB0aGUgdmFyaWFibGUgc2NyZWVuCitpbmZvcm1hdGlvbiByZWQsIGdyZWVuLCBibHVlIGFuZCB0cmFuc3AgZmllbGRzLgorCistIEZCX1ZJU1VBTF9GT1VSQ0MKKworUGl4ZWxzIGFyZSBlbmNvZGVkIGFuZCAgaW50ZXJwcmV0ZWQgYXMgZGVzY3JpYmVkIGJ5IHRoZSBmb3JtYXQgRk9VUkNDCitpZGVudGlmaWVyIHN0b3JlZCBpbiB0aGUgdmFyaWFibGUgc2NyZWVuIGluZm9ybWF0aW9uIGdyYXlzY2FsZSBmaWVsZC4KKworCiszLiBTY3JlZW4gaW5mb3JtYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTY3JlZW4gaW5mb3JtYXRpb24gYXJlIHF1ZXJpZWQgYnkgYXBwbGljYXRpb25zIHVzaW5nIHRoZSBGQklPR0VUX0ZTQ1JFRU5JTkZPCithbmQgRkJJT0dFVF9WU0NSRUVOSU5GTyBpb2N0bHMuIFRob3NlIGlvY3RscyB0YWtlIGEgcG9pbnRlciB0byBhCitmYl9maXhfc2NyZWVuaW5mbyBhbmQgZmJfdmFyX3NjcmVlbmluZm8gc3RydWN0dXJlIHJlc3BlY3RpdmVseS4KKworc3RydWN0IGZiX2ZpeF9zY3JlZW5pbmZvIHN0b3JlcyBkZXZpY2UgaW5kZXBlbmRlbnQgdW5jaGFuZ2VhYmxlIGluZm9ybWF0aW9uCithYm91dCB0aGUgZnJhbWUgYnVmZmVyIGRldmljZSBhbmQgdGhlIGN1cnJlbnQgZm9ybWF0LiBUaG9zZSBpbmZvcm1hdGlvbiBjYW4ndAorYmUgZGlyZWN0bHkgbW9kaWZpZWQgYnkgYXBwbGljYXRpb25zLCBidXQgY2FuIGJlIGNoYW5nZWQgYnkgdGhlIGRyaXZlciB3aGVuIGFuCithcHBsaWNhdGlvbiBtb2RpZmllcyB0aGUgZm9ybWF0LgorCitzdHJ1Y3QgZmJfZml4X3NjcmVlbmluZm8geworCWNoYXIgaWRbMTZdOwkJCS8qIGlkZW50aWZpY2F0aW9uIHN0cmluZyBlZyAiVFQgQnVpbHRpbiIgKi8KKwl1bnNpZ25lZCBsb25nIHNtZW1fc3RhcnQ7CS8qIFN0YXJ0IG9mIGZyYW1lIGJ1ZmZlciBtZW0gKi8KKwkJCQkJLyogKHBoeXNpY2FsIGFkZHJlc3MpICovCisJX191MzIgc21lbV9sZW47CQkJLyogTGVuZ3RoIG9mIGZyYW1lIGJ1ZmZlciBtZW0gKi8KKwlfX3UzMiB0eXBlOwkJCS8qIHNlZSBGQl9UWVBFXyoJCSovCisJX191MzIgdHlwZV9hdXg7CQkJLyogSW50ZXJsZWF2ZSBmb3IgaW50ZXJsZWF2ZWQgUGxhbmVzICovCisJX191MzIgdmlzdWFsOwkJCS8qIHNlZSBGQl9WSVNVQUxfKgkJKi8KKwlfX3UxNiB4cGFuc3RlcDsJCQkvKiB6ZXJvIGlmIG5vIGhhcmR3YXJlIHBhbm5pbmcgICovCisJX191MTYgeXBhbnN0ZXA7CQkJLyogemVybyBpZiBubyBoYXJkd2FyZSBwYW5uaW5nICAqLworCV9fdTE2IHl3cmFwc3RlcDsJCS8qIHplcm8gaWYgbm8gaGFyZHdhcmUgeXdyYXAgICAgKi8KKwlfX3UzMiBsaW5lX2xlbmd0aDsJCS8qIGxlbmd0aCBvZiBhIGxpbmUgaW4gYnl0ZXMgICAgKi8KKwl1bnNpZ25lZCBsb25nIG1taW9fc3RhcnQ7CS8qIFN0YXJ0IG9mIE1lbW9yeSBNYXBwZWQgSS9PICAgKi8KKwkJCQkJLyogKHBoeXNpY2FsIGFkZHJlc3MpICovCisJX191MzIgbW1pb19sZW47CQkJLyogTGVuZ3RoIG9mIE1lbW9yeSBNYXBwZWQgSS9PICAqLworCV9fdTMyIGFjY2VsOwkJCS8qIEluZGljYXRlIHRvIGRyaXZlciB3aGljaAkqLworCQkJCQkvKiAgc3BlY2lmaWMgY2hpcC9jYXJkIHdlIGhhdmUJKi8KKwlfX3UxNiBjYXBhYmlsaXRpZXM7CQkvKiBzZWUgRkJfQ0FQXyoJCQkqLworCV9fdTE2IHJlc2VydmVkWzJdOwkJLyogUmVzZXJ2ZWQgZm9yIGZ1dHVyZSBjb21wYXRpYmlsaXR5ICovCit9OworCitzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gc3RvcmVzIGRldmljZSBpbmRlcGVuZGVudCBjaGFuZ2VhYmxlIGluZm9ybWF0aW9uCithYm91dCBhIGZyYW1lIGJ1ZmZlciBkZXZpY2UsIGl0cyBjdXJyZW50IGZvcm1hdCBhbmQgdmlkZW8gbW9kZSwgYXMgd2VsbCBhcworb3RoZXIgbWlzY2VsbGFuZW91cyBwYXJhbWV0ZXJzLgorCitzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8geworCV9fdTMyIHhyZXM7CQkJLyogdmlzaWJsZSByZXNvbHV0aW9uCQkqLworCV9fdTMyIHlyZXM7CisJX191MzIgeHJlc192aXJ0dWFsOwkJLyogdmlydHVhbCByZXNvbHV0aW9uCQkqLworCV9fdTMyIHlyZXNfdmlydHVhbDsKKwlfX3UzMiB4b2Zmc2V0OwkJCS8qIG9mZnNldCBmcm9tIHZpcnR1YWwgdG8gdmlzaWJsZSAqLworCV9fdTMyIHlvZmZzZXQ7CQkJLyogcmVzb2x1dGlvbgkJCSovCisKKwlfX3UzMiBiaXRzX3Blcl9waXhlbDsJCS8qIGd1ZXNzIHdoYXQJCQkqLworCV9fdTMyIGdyYXlzY2FsZTsJCS8qIDAgPSBjb2xvciwgMSA9IGdyYXlzY2FsZSwJKi8KKwkJCQkJLyogPjEgPSBGT1VSQ0MJCQkqLworCXN0cnVjdCBmYl9iaXRmaWVsZCByZWQ7CQkvKiBiaXRmaWVsZCBpbiBmYiBtZW0gaWYgdHJ1ZSBjb2xvciwgKi8KKwlzdHJ1Y3QgZmJfYml0ZmllbGQgZ3JlZW47CS8qIGVsc2Ugb25seSBsZW5ndGggaXMgc2lnbmlmaWNhbnQgKi8KKwlzdHJ1Y3QgZmJfYml0ZmllbGQgYmx1ZTsKKwlzdHJ1Y3QgZmJfYml0ZmllbGQgdHJhbnNwOwkvKiB0cmFuc3BhcmVuY3kJCQkqLworCisJX191MzIgbm9uc3RkOwkJCS8qICE9IDAgTm9uIHN0YW5kYXJkIHBpeGVsIGZvcm1hdCAqLworCisJX191MzIgYWN0aXZhdGU7CQkJLyogc2VlIEZCX0FDVElWQVRFXyoJCSovCisKKwlfX3UzMiBoZWlnaHQ7CQkJLyogaGVpZ2h0IG9mIHBpY3R1cmUgaW4gbW0gICAgKi8KKwlfX3UzMiB3aWR0aDsJCQkvKiB3aWR0aCBvZiBwaWN0dXJlIGluIG1tICAgICAqLworCisJX191MzIgYWNjZWxfZmxhZ3M7CQkvKiAoT0JTT0xFVEUpIHNlZSBmYl9pbmZvLmZsYWdzICovCisKKwkvKiBUaW1pbmc6IEFsbCB2YWx1ZXMgaW4gcGl4Y2xvY2tzLCBleGNlcHQgcGl4Y2xvY2sgKG9mIGNvdXJzZSkgKi8KKwlfX3UzMiBwaXhjbG9jazsJCQkvKiBwaXhlbCBjbG9jayBpbiBwcyAocGljbyBzZWNvbmRzKSAqLworCV9fdTMyIGxlZnRfbWFyZ2luOwkJLyogdGltZSBmcm9tIHN5bmMgdG8gcGljdHVyZQkqLworCV9fdTMyIHJpZ2h0X21hcmdpbjsJCS8qIHRpbWUgZnJvbSBwaWN0dXJlIHRvIHN5bmMJKi8KKwlfX3UzMiB1cHBlcl9tYXJnaW47CQkvKiB0aW1lIGZyb20gc3luYyB0byBwaWN0dXJlCSovCisJX191MzIgbG93ZXJfbWFyZ2luOworCV9fdTMyIGhzeW5jX2xlbjsJCS8qIGxlbmd0aCBvZiBob3Jpem9udGFsIHN5bmMJKi8KKwlfX3UzMiB2c3luY19sZW47CQkvKiBsZW5ndGggb2YgdmVydGljYWwgc3luYwkqLworCV9fdTMyIHN5bmM7CQkJLyogc2VlIEZCX1NZTkNfKgkJKi8KKwlfX3UzMiB2bW9kZTsJCQkvKiBzZWUgRkJfVk1PREVfKgkJKi8KKwlfX3UzMiByb3RhdGU7CQkJLyogYW5nbGUgd2Ugcm90YXRlIGNvdW50ZXIgY2xvY2t3aXNlICovCisJX191MzIgY29sb3JzcGFjZTsJCS8qIGNvbG9yc3BhY2UgZm9yIEZPVVJDQy1iYXNlZCBtb2RlcyAqLworCV9fdTMyIHJlc2VydmVkWzRdOwkJLyogUmVzZXJ2ZWQgZm9yIGZ1dHVyZSBjb21wYXRpYmlsaXR5ICovCit9OworCitUbyBtb2RpZnkgdmFyaWFibGUgaW5mb3JtYXRpb24sIGFwcGxpY2F0aW9ucyBjYWxsIHRoZSBGQklPUFVUX1ZTQ1JFRU5JTkZPCitpb2N0bCB3aXRoIGEgcG9pbnRlciB0byBhIGZiX3Zhcl9zY3JlZW5pbmZvIHN0cnVjdHVyZS4gSWYgdGhlIGNhbGwgaXMKK3N1Y2Nlc3NmdWwsIHRoZSBkcml2ZXIgd2lsbCB1cGRhdGUgdGhlIGZpeGVkIHNjcmVlbiBpbmZvcm1hdGlvbiBhY2NvcmRpbmdseS4KKworSW5zdGVhZCBvZiBmaWxsaW5nIHRoZSBjb21wbGV0ZSBmYl92YXJfc2NyZWVuaW5mbyBzdHJ1Y3R1cmUgbWFudWFsbHksCithcHBsaWNhdGlvbnMgc2hvdWxkIGNhbGwgdGhlIEZCSU9HRVRfVlNDUkVFTklORk8gaW9jdGwgYW5kIG1vZGlmeSBvbmx5IHRoZQorZmllbGRzIHRoZXkgY2FyZSBhYm91dC4KKworCis0LiBGb3JtYXQgY29uZmlndXJhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRnJhbWUgYnVmZmVyIGRldmljZXMgb2ZmZXIgdHdvIHdheXMgdG8gY29uZmlndXJlIHRoZSBmcmFtZSBidWZmZXIgZm9ybWF0OiB0aGUKK2xlZ2FjeSBBUEkgYW5kIHRoZSBGT1VSQ0MtYmFzZWQgQVBJLgorCisKK1RoZSBsZWdhY3kgQVBJIGhhcyBiZWVuIHRoZSBvbmx5IGZyYW1lIGJ1ZmZlciBmb3JtYXQgY29uZmlndXJhdGlvbiBBUEkgZm9yIGEKK2xvbmcgdGltZSBhbmQgaXMgdGh1cyB3aWRlbHkgdXNlZCBieSBhcHBsaWNhdGlvbi4gSXQgaXMgdGhlIHJlY29tbWVuZGVkIEFQSQorZm9yIGFwcGxpY2F0aW9ucyB3aGVuIHVzaW5nIFJHQiBhbmQgZ3JheXNjYWxlIGZvcm1hdHMsIGFzIHdlbGwgYXMgbGVnYWN5Citub24tc3RhbmRhcmQgZm9ybWF0cy4KKworVG8gc2VsZWN0IGEgZm9ybWF0LCBhcHBsaWNhdGlvbnMgc2V0IHRoZSBmYl92YXJfc2NyZWVuaW5mbyBiaXRzX3Blcl9waXhlbCBmaWVsZAordG8gdGhlIGRlc2lyZWQgZnJhbWUgYnVmZmVyIGRlcHRoLiBWYWx1ZXMgdXAgdG8gOCB3aWxsIHVzdWFsbHkgbWFwIHRvCittb25vY2hyb21lLCBncmF5c2NhbGUgb3IgcHNldWRvY29sb3IgdmlzdWFscywgYWx0aG91Z2ggdGhpcyBpcyBub3QgcmVxdWlyZWQuCisKKy0gRm9yIGdyYXlzY2FsZSBmb3JtYXRzLCBhcHBsaWNhdGlvbnMgc2V0IHRoZSBncmF5c2NhbGUgZmllbGQgdG8gb25lLiBUaGUgcmVkLAorICBibHVlLCBncmVlbiBhbmQgdHJhbnNwIGZpZWxkcyBtdXN0IGJlIHNldCB0byAwIGJ5IGFwcGxpY2F0aW9ucyBhbmQgaWdub3JlZCBieQorICBkcml2ZXJzLiBEcml2ZXJzIG11c3QgZmlsbCB0aGUgcmVkLCBibHVlIGFuZCBncmVlbiBvZmZzZXRzIHRvIDAgYW5kIGxlbmd0aHMKKyAgdG8gdGhlIGJpdHNfcGVyX3BpeGVsIHZhbHVlLgorCistIEZvciBwc2V1ZG9jb2xvciBmb3JtYXRzLCBhcHBsaWNhdGlvbnMgc2V0IHRoZSBncmF5c2NhbGUgZmllbGQgdG8gemVyby4gVGhlCisgIHJlZCwgYmx1ZSwgZ3JlZW4gYW5kIHRyYW5zcCBmaWVsZHMgbXVzdCBiZSBzZXQgdG8gMCBieSBhcHBsaWNhdGlvbnMgYW5kCisgIGlnbm9yZWQgYnkgZHJpdmVycy4gRHJpdmVycyBtdXN0IGZpbGwgdGhlIHJlZCwgYmx1ZSBhbmQgZ3JlZW4gb2Zmc2V0cyB0byAwCisgIGFuZCBsZW5ndGhzIHRvIHRoZSBiaXRzX3Blcl9waXhlbCB2YWx1ZS4KKworLSBGb3IgdHJ1ZWNvbG9yIGFuZCBkaXJlY3Rjb2xvciBmb3JtYXRzLCBhcHBsaWNhdGlvbnMgc2V0IHRoZSBncmF5c2NhbGUgZmllbGQKKyAgdG8gemVybywgYW5kIHRoZSByZWQsIGJsdWUsIGdyZWVuIGFuZCB0cmFuc3AgZmllbGRzIHRvIGRlc2NyaWJlIHRoZSBsYXlvdXQgb2YKKyAgY29sb3IgY29tcG9uZW50cyBpbiBtZW1vcnkuCisKK3N0cnVjdCBmYl9iaXRmaWVsZCB7CisJX191MzIgb2Zmc2V0OwkJCS8qIGJlZ2lubmluZyBvZiBiaXRmaWVsZAkqLworCV9fdTMyIGxlbmd0aDsJCQkvKiBsZW5ndGggb2YgYml0ZmllbGQJCSovCisJX191MzIgbXNiX3JpZ2h0OwkJLyogIT0gMCA6IE1vc3Qgc2lnbmlmaWNhbnQgYml0IGlzICovCisJCQkJCS8qIHJpZ2h0ICovCit9OworCisgIFBpeGVsIHZhbHVlcyBhcmUgYml0c19wZXJfcGl4ZWwgd2lkZSBhbmQgYXJlIHNwbGl0IGluIG5vbi1vdmVybGFwcGluZyByZWQsCisgIGdyZWVuLCBibHVlIGFuZCBhbHBoYSAodHJhbnNwYXJlbmN5KSBjb21wb25lbnRzLiBMb2NhdGlvbiBhbmQgc2l6ZSBvZiBlYWNoCisgIGNvbXBvbmVudCBpbiB0aGUgcGl4ZWwgdmFsdWUgYXJlIGRlc2NyaWJlZCBieSB0aGUgZmJfYml0ZmllbGQgb2Zmc2V0IGFuZAorICBsZW5ndGggZmllbGRzLiBPZmZzZXQgYXJlIGNvbXB1dGVkIGZyb20gdGhlIHJpZ2h0LgorCisgIFBpeGVscyBhcmUgYWx3YXlzIHN0b3JlZCBpbiBhbiBpbnRlZ2VyIG51bWJlciBvZiBieXRlcy4gSWYgdGhlIG51bWJlciBvZgorICBiaXRzIHBlciBwaXhlbCBpcyBub3QgYSBtdWx0aXBsZSBvZiA4LCBwaXhlbCB2YWx1ZXMgYXJlIHBhZGRlZCB0byB0aGUgbmV4dAorICBtdWx0aXBsZSBvZiA4IGJpdHMuCisKK1Vwb24gc3VjY2Vzc2Z1bCBmb3JtYXQgY29uZmlndXJhdGlvbiwgZHJpdmVycyB1cGRhdGUgdGhlIGZiX2ZpeF9zY3JlZW5pbmZvCit0eXBlLCB2aXN1YWwgYW5kIGxpbmVfbGVuZ3RoIGZpZWxkcyBkZXBlbmRpbmcgb24gdGhlIHNlbGVjdGVkIGZvcm1hdC4KKworCitUaGUgRk9VUkNDLWJhc2VkIEFQSSByZXBsYWNlcyBmb3JtYXQgZGVzY3JpcHRpb25zIGJ5IGZvdXIgY2hhcmFjdGVyIGNvZGVzCisoRk9VUkNDKS4gRk9VUkNDcyBhcmUgYWJzdHJhY3QgaWRlbnRpZmllcnMgdGhhdCB1bmlxdWVseSBkZWZpbmUgYSBmb3JtYXQKK3dpdGhvdXQgZXhwbGljaXRseSBkZXNjcmliaW5nIGl0LiBUaGlzIGlzIHRoZSBvbmx5IEFQSSB0aGF0IHN1cHBvcnRzIFlVVgorZm9ybWF0cy4gRHJpdmVycyBhcmUgYWxzbyBlbmNvdXJhZ2VkIHRvIGltcGxlbWVudCB0aGUgRk9VUkNDLWJhc2VkIEFQSSBmb3IgUkdCCithbmQgZ3JheXNjYWxlIGZvcm1hdHMuCisKK0RyaXZlcnMgdGhhdCBzdXBwb3J0IHRoZSBGT1VSQ0MtYmFzZWQgQVBJIHJlcG9ydCB0aGlzIGNhcGFiaWxpdHkgYnkgc2V0dGluZwordGhlIEZCX0NBUF9GT1VSQ0MgYml0IGluIHRoZSBmYl9maXhfc2NyZWVuaW5mbyBjYXBhYmlsaXRpZXMgZmllbGQuCisKK0ZPVVJDQyBkZWZpbml0aW9ucyBhcmUgbG9jYXRlZCBpbiB0aGUgbGludXgvdmlkZW9kZXYyLmggaGVhZGVyLiBIb3dldmVyLCBhbmQKK2Rlc3BpdGUgc3RhcnRpbmcgd2l0aCB0aGUgVjRMMl9QSVhfRk1UX3ByZWZpeCwgdGhleSBhcmUgbm90IHJlc3RyaWN0ZWQgdG8gVjRMMgorYW5kIGRvbid0IHJlcXVpcmUgdXNhZ2Ugb2YgdGhlIFY0TDIgc3Vic3lzdGVtLiBGT1VSQ0MgZG9jdW1lbnRhdGlvbiBpcworYXZhaWxhYmxlIGluIERvY3VtZW50YXRpb24vRG9jQm9vay92NGwvcGl4Zm10LnhtbC4KKworVG8gc2VsZWN0IGEgZm9ybWF0LCBhcHBsaWNhdGlvbnMgc2V0IHRoZSBncmF5c2NhbGUgZmllbGQgdG8gdGhlIGRlc2lyZWQgRk9VUkNDLgorRm9yIFlVViBmb3JtYXRzLCB0aGV5IHNob3VsZCBhbHNvIHNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgY29sb3JzcGFjZSBieSBzZXR0aW5nCit0aGUgY29sb3JzcGFjZSBmaWVsZCB0byBvbmUgb2YgdGhlIGNvbG9yc3BhY2VzIGxpc3RlZCBpbiBsaW51eC92aWRlb2RldjIuaCBhbmQKK2RvY3VtZW50ZWQgaW4gRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3Y0bC9jb2xvcnNwYWNlcy54bWwuCisKK1RoZSByZWQsIGdyZWVuLCBibHVlIGFuZCB0cmFuc3AgZmllbGRzIGFyZSBub3QgdXNlZCB3aXRoIHRoZSBGT1VSQ0MtYmFzZWQgQVBJLgorRm9yIGZvcndhcmQgY29tcGF0aWJpbGl0eSByZWFzb25zIGFwcGxpY2F0aW9ucyBtdXN0IHplcm8gdGhvc2UgZmllbGRzLCBhbmQKK2RyaXZlcnMgbXVzdCBpZ25vcmUgdGhlbS4gVmFsdWVzIG90aGVyIHRoYW4gMCBtYXkgZ2V0IGEgbWVhbmluZyBpbiBmdXR1cmUKK2V4dGVuc2lvbnMuCisKK1Vwb24gc3VjY2Vzc2Z1bCBmb3JtYXQgY29uZmlndXJhdGlvbiwgZHJpdmVycyB1cGRhdGUgdGhlIGZiX2ZpeF9zY3JlZW5pbmZvCit0eXBlLCB2aXN1YWwgYW5kIGxpbmVfbGVuZ3RoIGZpZWxkcyBkZXBlbmRpbmcgb24gdGhlIHNlbGVjdGVkIGZvcm1hdC4gVGhlIHR5cGUKK2FuZCB2aXN1YWwgZmllbGRzIGFyZSBzZXQgdG8gRkJfVFlQRV9GT1VSQ0MgYW5kIEZCX1ZJU1VBTF9GT1VSQ0MgcmVzcGVjdGl2ZWx5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mYi9hcmtmYi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZiL2Fya2ZiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODQ4N2E5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mYi9hcmtmYi50eHQKQEAgLTAsMCArMSw2OCBAQAorCisJYXJrZmIgLSBmYmRldiBkcml2ZXIgZm9yIEFSSyBMb2dpYyBjaGlwcworCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCitTdXBwb3J0ZWQgSGFyZHdhcmUKKz09PT09PT09PT09PT09PT09PQorCisJQVJLIDIwMDBQViBjaGlwCisJSUNTIDUzNDIgcmFtZGFjCisKKwktIG9ubHkgQklPUyBpbml0aWFsaXplZCBWR0EgZGV2aWNlcyBzdXBwb3J0ZWQKKwktIHByb2JhYmx5IG5vdCB3b3JraW5nIG9uIGJpZyBlbmRpYW4KKworCitTdXBwb3J0ZWQgRmVhdHVyZXMKKz09PT09PT09PT09PT09PT09PQorCisJKiAgNCBicHAgcHNldWRvY29sb3IgbW9kZXMgKHdpdGggMThiaXQgcGFsZXR0ZSwgdHdvIHZhcmlhbnRzKQorCSogIDggYnBwIHBzZXVkb2NvbG9yIG1vZGUgKHdpdGggMThiaXQgcGFsZXR0ZSkKKwkqIDE2IGJwcCB0cnVlY29sb3IgbW9kZXMgKFJHQiA1NTUgYW5kIFJHQiA1NjUpCisJKiAyNCBicHAgdHJ1ZWNvbG9yIG1vZGUgKFJHQiA4ODgpCisJKiAzMiBicHAgdHJ1ZWNvbG9yIG1vZGUgKFJHQiA4ODgpCisJKiB0ZXh0IG1vZGUgKGFjdGl2YXRlZCBieSBicHAgPSAwKQorCSogZG91Ymxlc2NhbiBtb2RlIHZhcmlhbnQgKG5vdCBhdmFpbGFibGUgaW4gdGV4dCBtb2RlKQorCSogcGFubmluZyBpbiBib3RoIGRpcmVjdGlvbnMKKwkqIHN1c3BlbmQvcmVzdW1lIHN1cHBvcnQKKworVGV4dCBtb2RlIGlzIHN1cHBvcnRlZCBldmVuIGluIGhpZ2hlciByZXNvbHV0aW9ucywgYnV0IHRoZXJlIGlzIGxpbWl0YXRpb24gdG8KK2xvd2VyIHBpeGNsb2NrcyAoaSBnb3QgbWF4aW11bSBhYm91dCA3MCBNSHosIGl0IGlzIGRlcGVuZGVudCBvbiBzcGVjaWZpYworaGFyZHdhcmUpLiBUaGlzIGxpbWl0YXRpb24gaXMgbm90IGVuZm9yY2VkIGJ5IGRyaXZlci4gVGV4dCBtb2RlIHN1cHBvcnRzIDhiaXQKK3dpZGUgZm9udHMgb25seSAoaGFyZHdhcmUgbGltaXRhdGlvbikgYW5kIDE2Yml0IHRhbGwgZm9udHMgKGRyaXZlcgorbGltaXRhdGlvbikuIFVuZm9ydHVuYXRlbHkgY2hhcmFjdGVyIGF0dHJpYnV0ZXMgKGxpa2UgY29sb3IpIGluIHRleHQgbW9kZSBhcmUKK2Jyb2tlbiBmb3IgdW5rbm93biByZWFzb24sIHNvIGl0cyB1c2VmdWxuZXNzIGlzIGxpbWl0ZWQuCisKK1RoZXJlIGFyZSB0d28gNCBicHAgbW9kZXMuIEZpcnN0IG1vZGUgKHNlbGVjdGVkIGlmIG5vbnN0ZCA9PSAwKSBpcyBtb2RlIHdpdGgKK3BhY2tlZCBwaXhlbHMsIGhpZ2ggbmliYmxlIGZpcnN0LiBTZWNvbmQgbW9kZSAoc2VsZWN0ZWQgaWYgbm9uc3RkID09IDEpIGlzIG1vZGUKK3dpdGggaW50ZXJsZWF2ZWQgcGxhbmVzICgxIGJ5dGUgaW50ZXJsZWF2ZSksIE1TQiBmaXJzdC4gQm90aCBtb2RlcyBzdXBwb3J0Cis4Yml0IHdpZGUgZm9udHMgb25seSAoZHJpdmVyIGxpbWl0YXRpb24pLgorCitTdXNwZW5kL3Jlc3VtZSB3b3JrcyBvbiBzeXN0ZW1zIHRoYXQgaW5pdGlhbGl6ZSB2aWRlbyBjYXJkIGR1cmluZyByZXN1bWUgYW5kCitpZiBkZXZpY2UgaXMgYWN0aXZlIChmb3IgZXhhbXBsZSB1c2VkIGJ5IGZiY29uKS4KKworCitNaXNzaW5nIEZlYXR1cmVzCis9PT09PT09PT09PT09PT09CisoYWxpYXMgVE9ETyBsaXN0KQorCisJKiBzZWNvbmRhcnkgKG5vdCBpbml0aWFsaXplZCBieSBCSU9TKSBkZXZpY2Ugc3VwcG9ydAorICAgCSogYmlnIGVuZGlhbiBzdXBwb3J0CisJKiBEUE1TIHN1cHBvcnQKKwkqIE1NSU8gc3VwcG9ydAorCSogaW50ZXJsYWNlZCBtb2RlIHZhcmlhbnQKKwkqIHN1cHBvcnQgZm9yIGZvbnR3aWR0aHMgIT0gOCBpbiA0IGJwcCBtb2RlcworCSogc3VwcG9ydCBmb3IgZm9udGhlaWdodCAhPSAxNiBpbiB0ZXh0IG1vZGUKKwkqIGhhcmR3YXJlIGN1cnNvcgorCSogdnN5bmMgc3luY2hyb25pemF0aW9uCisJKiBmZWF0dXJlIGNvbm5lY3RvciBzdXBwb3J0CisJKiBhY2NlbGVyYXRpb24gc3VwcG9ydCAoODUxNC1saWtlIDJEKQorCisKK0tub3duIGJ1Z3MKKz09PT09PT09PT0KKworCSogY2hhcmFjdGVyIGF0dHJpYnV0ZXMgKGFuZCBjdXJzb3IpIGluIHRleHQgbW9kZSBhcmUgYnJva2VuCisKKy0tCitPbmRyZWogWmFqaWNlayA8c2FudGlhZ29AY3JmcmVlbmV0Lm9yZz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvYXR5MTI4ZmIudHh0IGIvRG9jdW1lbnRhdGlvbi9mYi9hdHkxMjhmYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYwNTIwNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmIvYXR5MTI4ZmIudHh0CkBAIC0wLDAgKzEsNzIgQEAKK1tUaGlzIGZpbGUgaXMgY2xvbmVkIGZyb20gVmVzYUZCL21hdHJveGZiXQorCitXaGF0IGlzIGF0eTEyOGZiPworPT09PT09PT09PT09PT09PT0KKworVGhpcyBpcyBhIGRyaXZlciBmb3IgYSBncmFwaGljIGZyYW1lYnVmZmVyIGZvciBBVEkgUmFnZTEyOCBiYXNlZCBkZXZpY2VzCitvbiBJbnRlbCBhbmQgUFBDIGJveGVzLgorCitBZHZhbnRhZ2VzOgorCisgKiBJdCBwcm92aWRlcyBhIG5pY2UgbGFyZ2UgY29uc29sZSAoMTI4IGNvbHMgKyA0OCBsaW5lcyB3aXRoIDEwMjR4NzY4KQorICAgd2l0aG91dCB1c2luZyB0aW55LCB1bnJlYWRhYmxlIGZvbnRzLgorICogWW91IGNhbiBydW4gWEY2OF9GQkRldiBvbiB0b3Agb2YgL2Rldi9mYjAKKyAqIE1vc3QgaW1wb3J0YW50OiBib290IGxvZ28gOi0pCisKK0Rpc2FkdmFudGFnZXM6CisKKyAqIGdyYXBoaWMgbW9kZSBpcyBzbG93ZXIgdGhhbiB0ZXh0IG1vZGUuLi4gYnV0IHlvdSBzaG91bGQgbm90IG5vdGljZQorICAgaWYgeW91IHVzZSBzYW1lIHJlc29sdXRpb24gYXMgeW91IHVzZWQgaW4gdGV4dG1vZGUuCisgKiBzdGlsbCBleHBlcmltZW50YWwuCisKKworSG93IHRvIHVzZSBpdD8KKz09PT09PT09PT09PT09CisKK1N3aXRjaGluZyBtb2RlcyBpcyBkb25lIHVzaW5nIHRoZSAgdmlkZW89YXR5MTI4ZmI6PHJlc29sdXRpb24+Li4uIG1vZGVkYgorYm9vdCBwYXJhbWV0ZXIgb3IgdXNpbmcgYGZic2V0JyBwcm9ncmFtLgorCitTZWUgRG9jdW1lbnRhdGlvbi9mYi9tb2RlZGIudHh0IGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIG1vZGVkYgorcmVzb2x1dGlvbnMuCisKK1lvdSBzaG91bGQgY29tcGlsZSBpbiBib3RoIHZnYWNvbiAodG8gYm9vdCBpZiB5b3UgcmVtb3ZlIHlvdXIgUmFnZTEyOCBmcm9tCitib3gpIGFuZCBhdHkxMjhmYiAoZm9yIGdyYXBoaWNzIG1vZGUpLiBZb3Ugc2hvdWxkIG5vdCBjb21waWxlLWluIHZlc2FmYgordW5sZXNzIHlvdSBoYXZlIHByaW1hcnkgZGlzcGxheSBvbiBub24tUmFnZTEyOCBWQkUyLjAgZGV2aWNlIChzZWUgCitEb2N1bWVudGF0aW9uL2ZiL3Zlc2FmYi50eHQgZm9yIGRldGFpbHMpLgorCisKK1gxMQorPT09CisKK1hGNjhfRkJEZXYgc2hvdWxkIGdlbmVyYWxseSB3b3JrIGZpbmUsIGJ1dCBpdCBpcyBub24tYWNjZWxlcmF0ZWQuIEFzIG9mCit0aGlzIGRvY3VtZW50LCA4IGFuZCAzMmJwcCB3b3JrcyBmaW5lLiAgVGhlcmUgaGF2ZSBiZWVuIHBhbGV0dGUgaXNzdWVzCit3aGVuIHN3aXRjaGluZyBmcm9tIFggdG8gY29uc29sZSBhbmQgYmFjayB0byBYLiAgWW91IHdpbGwgaGF2ZSB0byByZXN0YXJ0CitYIHRvIGZpeCB0aGlzLgorCisKK0NvbmZpZ3VyYXRpb24KKz09PT09PT09PT09PT0KKworWW91IGNhbiBwYXNzIGtlcm5lbCBjb21tYW5kIGxpbmUgb3B0aW9ucyB0byB2ZXNhZmIgd2l0aAorYHZpZGVvPWF0eTEyOGZiOm9wdGlvbjEsb3B0aW9uMjp2YWx1ZTIsb3B0aW9uMycgKG11bHRpcGxlIG9wdGlvbnMgc2hvdWxkCitiZSBzZXBhcmF0ZWQgYnkgY29tbWEsIHZhbHVlcyBhcmUgc2VwYXJhdGVkIGZyb20gb3B0aW9ucyBieSBgOicpLiAKK0FjY2VwdGVkIG9wdGlvbnM6CisKK25vYWNjZWwgIC0gZG8gbm90IHVzZSBhY2NlbGVyYXRpb24gZW5naW5lLiBJdCBpcyBkZWZhdWx0LgorYWNjZWwgICAgLSB1c2UgYWNjZWxlcmF0aW9uIGVuZ2luZS4gTm90IGZpbmlzaGVkLgordm1vZGU6eCAgLSBjaG9vc2VzIFBvd2VyTWFjaW50b3NoIHZpZGVvIG1vZGUgPHg+LiBEZXByZWNhdGVkLgorY21vZGU6eCAgLSBjaG9vc2VzIFBvd2VyTWFjaW50b3NoIGNvbG91ciBtb2RlIDx4Pi4gRGVwcmVjYXRlZC4KKzxYeFhAWD4gIC0gc2VsZWN0cyBzdGFydHVwIHZpZGVvbW9kZS4gU2VlIG1vZGVkYi50eHQgZm9yIGRldGFpbGVkCisJICAgZXhwbGFuYXRpb24uIERlZmF1bHQgaXMgNjQweDQ4MHg4YnBwLgorCisKK0xpbWl0YXRpb25zCis9PT09PT09PT09PQorCitUaGVyZSBhcmUga25vd24gYW5kIHVua25vd24gYnVncywgZmVhdHVyZXMgYW5kIG1pc2ZlYXR1cmVzLgorQ3VycmVudGx5IHRoZXJlIGFyZSBmb2xsb3dpbmcga25vd24gYnVnczoKKyArIFRoaXMgZHJpdmVyIGlzIHN0aWxsIGV4cGVyaW1lbnRhbCBhbmQgaXMgbm90IGZpbmlzaGVkLiAgVG9vIG1hbnkKKyAgIGJ1Z3MvZXJyYXRhIHRvIGxpc3QgaGVyZS4KKworLS0KK0JyYWQgRG91Z2xhcyA8YnJhZEBuZXJ1by5jb20+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZiL2NpcnJ1c2ZiLnR4dCBiL0RvY3VtZW50YXRpb24vZmIvY2lycnVzZmIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NTk1MGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZiL2NpcnJ1c2ZiLnR4dApAQCAtMCwwICsxLDk3IEBACisKKwkJRnJhbWVidWZmZXIgZHJpdmVyIGZvciBDaXJydXMgTG9naWMgY2hpcHNldHMKKwkJQ29weXJpZ2h0IDE5OTkgSmVmZiBHYXJ6aWsgPGpnYXJ6aWtAcG9ib3guY29tPgorCisKKworeyBqdXN0IGEgbGl0dGxlIHNvbWV0aGluZyB0byBnZXQgcGVvcGxlIGdvaW5nOyBjb250cmlidXRvcnMgd2VsY29tZSEgfQorCisKKworQ2hpcCBmYW1pbGllcyBzdXBwb3J0ZWQ6CisJU0Q2NAorCVBpY2NvbG8KKwlQaWNhc3NvCisJU3BlY3RydW0KKwlBbHBpbmUgKEdELTU0M3gvNHgpCisJUGljYXNzbzQgKEdELTU0NDYpCisJR0QtNTQ4MAorCUxhZ3VuYSAoR0QtNTQ2eCkKKworQnVzJ3Mgc3VwcG9ydGVkOgorCVBDSQorCVpvcnJvCisKK0FyY2hpdGVjdHVyZXMgc3VwcG9ydGVkOgorCWkzODYKKwlBbHBoYQorCVBQQyAoTW90b3JvbGEgUG93ZXJzdGFjaykKKwltNjhrIChBbWlnYSkKKworCisKK0RlZmF1bHQgdmlkZW8gbW9kZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KK0F0IHRoZSBtb21lbnQsIHRoZXJlIGFyZSB0d28ga2VybmVsIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgc3VwcG9ydGVkOgorCittb2RlOjY0MHg0ODAKK21vZGU6ODAweDYwMAorCW9yCittb2RlOjEwMjR4NzY4CisKK0Z1bGwgc3VwcG9ydCBmb3Igc3RhcnR1cCB2aWRlbyBtb2RlcyAobW9kZWRiKSB3aWxsIGJlIGludGVncmF0ZWQgc29vbi4KKworVmVyc2lvbiAxLjkuOS4xCistLS0tLS0tLS0tLS0tLS0KKyogRml4IG1lbW9yeSBkZXRlY3Rpb24gZm9yIDUxMmtCIGNhc2UKKyogODAweDYwMCBtb2RlCisqIEZpeGVkIHRpbWluZ3MKKyogSGludCBmb3IgQVhQOiBVc2UgLWFjY2VsIGZhbHNlIC12eXJlcyAtMSB3aGVuIGNoYW5naW5nIHJlc29sdXRpb24KKworCitWZXJzaW9uIDEuOS40LjQKKy0tLS0tLS0tLS0tLS0tLQorKiBQcmVsaW1pbmFyeSBMYWd1bmEgc3VwcG9ydAorKiBPdmVyaGF1bCBjb2xvciByZWdpc3RlciByb3V0aW5lcy4KKyogQXNzb2NpYXRlZCB3aXRoIHRoZSBhYm92ZSwgY29uc29sZSBjb2xvcnMgYXJlIG5vdyBvYnRhaW5lZCBmcm9tIGEgTFVUCisgIGNhbGxlZCAncGFsZXR0ZScgaW5zdGVhZCBvZiBmcm9tIHRoZSBWR0EgcmVnaXN0ZXJzLiAgVGhpcyBjb2RlIHdhcworICBtb2RlbGxlZCBhZnRlciB0aGF0IGluIGF0eWZiIGFuZCBtYXRyb3hmYi4KKyogQ29kZSBjbGVhbnVwLCBhZGQgY29tbWVudHMuCisqIE92ZXJoYXVsIFNSMDcgaGFuZGxpbmcuCisqIEJ1ZyBmaXhlcy4KKworCitWZXJzaW9uIDEuOS40LjMKKy0tLS0tLS0tLS0tLS0tLQorKiBDb3JyZWN0bHkgc2V0IGRlZmF1bHQgc3RhcnR1cCB2aWRlbyBtb2RlLgorKiBEbyBub3Qgb3ZlcnJpZGUgcmFtIHNpemUgc2V0dGluZy4gIERlZmluZQorICBDTEdFTl9VU0VfSEFSRENPREVEX1JBTV9TRVRUSU5HUyBpZiB5b3UgX2RvXyB3YW50IHRvIG92ZXJyaWRlIHRoZSBSQU0KKyAgc2V0dGluZy4KKyogQ29tcGlsZSBmaXhlcyByZWxhdGVkIHRvIG5ldyAyLjMueCBJT1JFU09VUkNFX0lPW1BPUlRdIHN5bWJvbCBjaGFuZ2VzLgorKiBVc2UgbmV3IDIuMy54IHJlc291cmNlIGFsbG9jYXRpb24uCisqIFNvbWUgY29kZSBjbGVhbnVwLgorCisKK1ZlcnNpb24gMS45LjQuMgorLS0tLS0tLS0tLS0tLS0tCisqIENhc3RpbmcgZml4ZXMuCisqIEFzc2VydGlvbnMgbm8gbG9uZ2VyIGNhdXNlIGFuIG9vcHMgb24gcHVycG9zZS4KKyogQnVnIGZpeGVzLgorCisKK1ZlcnNpb24gMS45LjQuMQorLS0tLS0tLS0tLS0tLS0tCisqIEFkZCBjb21wYXRpYmlsaXR5IHN1cHBvcnQuICBOb3cgcmVxdWlyZXMgYSAyLjEueCwgMi4yLnggb3IgMi4zLngga2VybmVsLgorCisKK1ZlcnNpb24gMS45LjQKKy0tLS0tLS0tLS0tLS0KKyogU2V2ZXJhbCBlbmhhbmNlbWVudHMsIHNtYWxsZXIgbWVtb3J5IGZvb3RwcmludCwgYSBmZXcgYnVnZml4ZXMuCisqIFJlcXVpcmVzIGtlcm5lbCAyLjMuMTQtcHJlMSBvciBsYXRlci4KKworCitWZXJzaW9uIDEuOS4zCistLS0tLS0tLS0tLS0tCisqIEJ1bmRsZWQgd2l0aCBrZXJuZWwgMi4zLjE0LXByZTEgb3IgbGF0ZXIuCisKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mYi9jbWFwX3hmYmRldi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZiL2NtYXBfeGZiZGV2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWUxZjBhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mYi9jbWFwX3hmYmRldi50eHQKQEAgLTAsMCArMSw1MyBAQAorVW5kZXJzdGFuZGluZyBmYmRldidzIGNtYXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXNlIG5vdGVzIGV4cGxhaW4gaG93IFgncyBkaXggbGF5ZXIgdXNlcyBmYmRldidzIGNtYXAgc3RydWN0dXJlcy4KKworKi4gZXhhbXBsZSBvZiByZWxldmFudCBzdHJ1Y3R1cmVzIGluIGZiZGV2IGFzIHVzZWQgZm9yIGEgMy1iaXQgZ3JheXNjYWxlIGNtYXAKK3N0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyB7CisgICAgICAgIC5iaXRzX3Blcl9waXhlbCA9IDgsCisgICAgICAgIC5ncmF5c2NhbGUgICAgICA9IDEsCisgICAgICAgIC5yZWQgPSAgICAgICAgICB7IDQsIDMsIDAgfSwKKyAgICAgICAgLmdyZWVuID0gICAgICAgIHsgMCwgMCwgMCB9LAorICAgICAgICAuYmx1ZSA9ICAgICAgICAgeyAwLCAwLCAwIH0sCit9CitzdHJ1Y3QgZmJfZml4X3NjcmVlbmluZm8geworICAgICAgICAudmlzdWFsID0gICAgICAgRkJfVklTVUFMX1NUQVRJQ19QU0VVRE9DT0xPUiwKK30KK2ZvciAoaSA9IDA7IGkgPCA4OyBpKyspCisJaW5mby0+Y21hcC5yZWRbaV0gPSAoKCgyKmkpKzEpKigweEZGRkYpKS8xNjsKK21lbWNweShpbmZvLT5jbWFwLmdyZWVuLCBpbmZvLT5jbWFwLnJlZCwgc2l6ZW9mKHUxNikqOCk7CittZW1jcHkoaW5mby0+Y21hcC5ibHVlLCBpbmZvLT5jbWFwLnJlZCwgc2l6ZW9mKHUxNikqOCk7CisKKyouIFgxMSBhcHBzIGRvIHNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgd2hlbiB0cnlpbmcgdG8gdXNlIGdyYXlzY2FsZS4KK2ZvciAoaT0wOyBpIDwgODsgaSsrKSB7CisJY2hhciBjb2xvcnNwZWNbNjRdOworCW1lbXNldChjb2xvcnNwZWMsMCw2NCk7CisJc3ByaW50Zihjb2xvcnNwZWMsICJyZ2I6JXgvJXgvJXgiLCBpKjM2LGkqMzYsaSozNik7CisJaWYgKCFYUGFyc2VDb2xvcihvdXRwdXREaXNwbGF5LCB0ZXN0Q29sb3JtYXAsIGNvbG9yc3BlYywgJndhbnRlZENvbG9yKSkKKwkJcHJpbnRmKCJDYW4ndCBnZXQgY29sb3IgJXNcbiIsY29sb3JzcGVjKTsKKwlYQWxsb2NDb2xvcihvdXRwdXREaXNwbGF5LCB0ZXN0Q29sb3JtYXAsICZ3YW50ZWRDb2xvcik7CisJZ3JheXNbaV0gPSB3YW50ZWRDb2xvcjsKK30KK1RoZXJlJ3MgYWxzbyBuYW1lZCBlcXVpdmFsZW50cyBsaWtlIGdyYXkxLi54IHByb3ZpZGVkIHlvdSBoYXZlIGFuIHJnYi50eHQuCisKK1NvbWV3aGVyZSBpbiBYJ3MgY2FsbGNoYWluLCB0aGlzIHJlc3VsdHMgaW4gYSBjYWxsIHRvIFggY29kZSB0aGF0IGhhbmRsZXMgdGhlCitjb2xvcm1hcC4gRm9yIGV4YW1wbGUsIFhmYmRldiBoaXRzIHRoZSBmb2xsb3dpbmc6CisKK3hjLTAxMTAxMC9wcm9ncmFtcy9Yc2VydmVyL2RpeC9jb2xvcm1hcC5jOgorCitGaW5kQmVzdFBpeGVsKHBlbnRGaXJzdCwgc2l6ZSwgcHJnYiwgY2hhbm5lbCkKKworZHIgPSAobG9uZykgcGVudC0+Y28ubG9jYWwucmVkIC0gcHJnYi0+cmVkOworZGcgPSAobG9uZykgcGVudC0+Y28ubG9jYWwuZ3JlZW4gLSBwcmdiLT5ncmVlbjsKK2RiID0gKGxvbmcpIHBlbnQtPmNvLmxvY2FsLmJsdWUgLSBwcmdiLT5ibHVlOworc3EgPSBkciAqIGRyOworVW5zaWduZWRUb0JpZ051bSAoc3EsICZzdW0pOworQmlnTnVtQWRkICgmc3VtLCAmdGVtcCwgJnN1bSk7CisKK2NvLmxvY2FsLnJlZCBhcmUgZW50cmllcyB0aGF0IHdlcmUgYnJvdWdodCBpbiB0aHJvdWdoIEZCSU9HRVRDTUFQIHdoaWNoIGNvbWUKK2RpcmVjdGx5IGZyb20gdGhlIGluZm8tPmNtYXAucmVkIHRoYXQgd2FzIGxpc3RlZCBhYm92ZS4gVGhlIHByZ2IgaXMgdGhlIHJnYgordGhhdCB0aGUgYXBwIHdhbnRzIHRvIG1hdGNoIHRvLiBUaGUgYWJvdmUgY29kZSBpcyBkb2luZyB3aGF0IGxvb2tzIGxpa2UgYSBsZWFzdAorc3F1YXJlcyBtYXRjaGluZyBmdW5jdGlvbi4gVGhhdCdzIHdoeSB0aGUgY21hcCBlbnRyaWVzIGNhbid0IGJlIHNldCB0byB0aGUgbGVmdAoraGFuZCBzaWRlIGJvdW5kYXJpZXMgb2YgYSBjb2xvciByYW5nZS4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mYi9kZWZlcnJlZF9pby50eHQgYi9Eb2N1bWVudGF0aW9uL2ZiL2RlZmVycmVkX2lvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDgzMjgzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mYi9kZWZlcnJlZF9pby50eHQKQEAgLTAsMCArMSw3NSBAQAorRGVmZXJyZWQgSU8KKy0tLS0tLS0tLS0tCisKK0RlZmVycmVkIElPIGlzIGEgd2F5IHRvIGRlbGF5IGFuZCByZXB1cnBvc2UgSU8uIEl0IHVzZXMgaG9zdCBtZW1vcnkgYXMgYQorYnVmZmVyIGFuZCB0aGUgTU1VIHBhZ2VmYXVsdCBhcyBhIHByZXRyaWdnZXIgZm9yIHdoZW4gdG8gcGVyZm9ybSB0aGUgZGV2aWNlCitJTy4gVGhlIGZvbGxvd2luZyBleGFtcGxlIG1heSBiZSBhIHVzZWZ1bCBleHBsYW5hdGlvbiBvZiBob3cgb25lIHN1Y2ggc2V0dXAKK3dvcmtzOgorCistIHVzZXJzcGFjZSBhcHAgbGlrZSBYZmJkZXYgbW1hcHMgZnJhbWVidWZmZXIKKy0gZGVmZXJyZWQgSU8gYW5kIGRyaXZlciBzZXRzIHVwIGZhdWx0IGFuZCBwYWdlX21rd3JpdGUgaGFuZGxlcnMKKy0gdXNlcnNwYWNlIGFwcCB0cmllcyB0byB3cml0ZSB0byBtbWFwZWQgdmFkZHJlc3MKKy0gd2UgZ2V0IHBhZ2VmYXVsdCBhbmQgcmVhY2ggZmF1bHQgaGFuZGxlcgorLSBmYXVsdCBoYW5kbGVyIGZpbmRzIGFuZCByZXR1cm5zIHBoeXNpY2FsIHBhZ2UKKy0gd2UgZ2V0IHBhZ2VfbWt3cml0ZSB3aGVyZSB3ZSBhZGQgdGhpcyBwYWdlIHRvIGEgbGlzdAorLSBzY2hlZHVsZSBhIHdvcmtxdWV1ZSB0YXNrIHRvIGJlIHJ1biBhZnRlciBhIGRlbGF5CistIGFwcCBjb250aW51ZXMgd3JpdGluZyB0byB0aGF0IHBhZ2Ugd2l0aCBubyBhZGRpdGlvbmFsIGNvc3QuIHRoaXMgaXMKKyAgdGhlIGtleSBiZW5lZml0LgorLSB0aGUgd29ya3F1ZXVlIHRhc2sgY29tZXMgaW4gYW5kIG1rY2xlYW5zIHRoZSBwYWdlcyBvbiB0aGUgbGlzdCwgdGhlbgorIGNvbXBsZXRlcyB0aGUgd29yayBhc3NvY2lhdGVkIHdpdGggdXBkYXRpbmcgdGhlIGZyYW1lYnVmZmVyLiB0aGlzIGlzCisgIHRoZSByZWFsIHdvcmsgdGFsa2luZyB0byB0aGUgZGV2aWNlLgorLSBhcHAgdHJpZXMgdG8gd3JpdGUgdG8gdGhlIGFkZHJlc3MgKHRoYXQgaGFzIG5vdyBiZWVuIG1rY2xlYW5lZCkKKy0gZ2V0IHBhZ2VmYXVsdCBhbmQgdGhlIGFib3ZlIHNlcXVlbmNlIG9jY3VycyBhZ2FpbgorCitBcyBjYW4gYmUgc2VlbiBmcm9tIGFib3ZlLCBvbmUgYmVuZWZpdCBpcyByb3VnaGx5IHRvIGFsbG93IGJ1cnN0eSBmcmFtZWJ1ZmZlcgord3JpdGVzIHRvIG9jY3VyIGF0IG1pbmltdW0gY29zdC4gVGhlbiBhZnRlciBzb21lIHRpbWUgd2hlbiBob3BlZnVsbHkgdGhpbmdzCitoYXZlIGdvbmUgcXVpZXQsIHdlIGdvIGFuZCByZWFsbHkgdXBkYXRlIHRoZSBmcmFtZWJ1ZmZlciB3aGljaCB3b3VsZCBiZQorYSByZWxhdGl2ZWx5IG1vcmUgZXhwZW5zaXZlIG9wZXJhdGlvbi4KKworRm9yIHNvbWUgdHlwZXMgb2Ygbm9udm9sYXRpbGUgaGlnaCBsYXRlbmN5IGRpc3BsYXlzLCB0aGUgZGVzaXJlZCBpbWFnZSBpcwordGhlIGZpbmFsIGltYWdlIHJhdGhlciB0aGFuIHRoZSBpbnRlcm1lZGlhdGUgc3RhZ2VzIHdoaWNoIGlzIHdoeSBpdCdzIG9rYXkKK3RvIG5vdCB1cGRhdGUgZm9yIGVhY2ggd3JpdGUgdGhhdCBpcyBvY2N1cnJpbmcuCisKK0l0IG1heSBiZSB0aGUgY2FzZSB0aGF0IHRoaXMgaXMgdXNlZnVsIGluIG90aGVyIHNjZW5hcmlvcyBhcyB3ZWxsLiBQYXVsIE11bmR0CitoYXMgbWVudGlvbmVkIGEgY2FzZSB3aGVyZSBpdCBpcyBiZW5lZmljaWFsIHRvIHVzZSB0aGUgcGFnZSBjb3VudCB0byBkZWNpZGUKK3doZXRoZXIgdG8gY29hbGVzY2UgYW5kIGlzc3VlIFNHIERNQSBvciB0byBkbyBtZW1vcnkgYnVyc3RzLgorCitBbm90aGVyIG9uZSBtYXkgYmUgaWYgb25lIGhhcyBhIGRldmljZSBmcmFtZWJ1ZmZlciB0aGF0IGlzIGluIGFuIHVzdWFsIGZvcm1hdCwKK3NheSBkaWFnb25hbGx5IHNoaWZ0aW5nIFJHQiwgdGhpcyBtYXkgdGhlbiBiZSBhIG1lY2hhbmlzbSBmb3IgeW91IHRvIGFsbG93CithcHBzIHRvIHByZXRlbmQgdG8gaGF2ZSBhIG5vcm1hbCBmcmFtZWJ1ZmZlciBidXQgcmVzd2l6emxlIGZvciB0aGUgZGV2aWNlCitmcmFtZWJ1ZmZlciBhdCB2c3luYyB0aW1lIGJhc2VkIG9uIHRoZSB0b3VjaGVkIHBhZ2VsaXN0LgorCitIb3cgdG8gdXNlIGl0OiAoZm9yIGFwcGxpY2F0aW9ucykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTm8gY2hhbmdlcyBuZWVkZWQuIG1tYXAgdGhlIGZyYW1lYnVmZmVyIGxpa2Ugbm9ybWFsIGFuZCBqdXN0IHVzZSBpdC4KKworSG93IHRvIHVzZSBpdDogKGZvciBmYmRldiBkcml2ZXJzKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIGZvbGxvd2luZyBleGFtcGxlIG1heSBiZSBoZWxwZnVsLgorCisxLiBTZXR1cCB5b3VyIHN0cnVjdHVyZS4gRWc6CisKK3N0YXRpYyBzdHJ1Y3QgZmJfZGVmZXJyZWRfaW8gaGVjdWJhZmJfZGVmaW8gPSB7CisJLmRlbGF5CQk9IEhaLAorCS5kZWZlcnJlZF9pbwk9IGhlY3ViYWZiX2RweV9kZWZlcnJlZF9pbywKK307CisKK1RoZSBkZWxheSBpcyB0aGUgbWluaW11bSBkZWxheSBiZXR3ZWVuIHdoZW4gdGhlIHBhZ2VfbWt3cml0ZSB0cmlnZ2VyIG9jY3VycworYW5kIHdoZW4gdGhlIGRlZmVycmVkX2lvIGNhbGxiYWNrIGlzIGNhbGxlZC4gVGhlIGRlZmVycmVkX2lvIGNhbGxiYWNrIGlzCitleHBsYWluZWQgYmVsb3cuCisKKzIuIFNldHVwIHlvdXIgZGVmZXJyZWQgSU8gY2FsbGJhY2suIEVnOgorc3RhdGljIHZvaWQgaGVjdWJhZmJfZHB5X2RlZmVycmVkX2lvKHN0cnVjdCBmYl9pbmZvICppbmZvLAorCQkJCXN0cnVjdCBsaXN0X2hlYWQgKnBhZ2VsaXN0KQorCitUaGUgZGVmZXJyZWRfaW8gY2FsbGJhY2sgaXMgd2hlcmUgeW91IHdvdWxkIHBlcmZvcm0gYWxsIHlvdXIgSU8gdG8gdGhlIGRpc3BsYXkKK2RldmljZS4gWW91IHJlY2VpdmUgdGhlIHBhZ2VsaXN0IHdoaWNoIGlzIHRoZSBsaXN0IG9mIHBhZ2VzIHRoYXQgd2VyZSB3cml0dGVuCit0byBkdXJpbmcgdGhlIGRlbGF5LiBZb3UgbXVzdCBub3QgbW9kaWZ5IHRoaXMgbGlzdC4gVGhpcyBjYWxsYmFjayBpcyBjYWxsZWQKK2Zyb20gYSB3b3JrcXVldWUuCisKKzMuIENhbGwgaW5pdAorCWluZm8tPmZiZGVmaW8gPSAmaGVjdWJhZmJfZGVmaW87CisJZmJfZGVmZXJyZWRfaW9faW5pdChpbmZvKTsKKworNC4gQ2FsbCBjbGVhbnVwCisJZmJfZGVmZXJyZWRfaW9fY2xlYW51cChpbmZvKTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvZWZpZmIudHh0IGIvRG9jdW1lbnRhdGlvbi9mYi9lZmlmYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTU5OTE2YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmIvZWZpZmIudHh0CkBAIC0wLDAgKzEsMzEgQEAKKworV2hhdCBpcyBlZmlmYj8KKz09PT09PT09PT09PT09PQorCitUaGlzIGlzIGEgZ2VuZXJpYyBFRkkgcGxhdGZvcm0gZHJpdmVyIGZvciBJbnRlbCBiYXNlZCBBcHBsZSBjb21wdXRlcnMuCitlZmlmYiBpcyBvbmx5IGZvciBFRkkgYm9vdGVkIEludGVsIE1hY3MuCisKK1N1cHBvcnRlZCBIYXJkd2FyZQorPT09PT09PT09PT09PT09PT09CisKK2lNYWMgMTciLzIwIgorTWFjYm9vaworTWFjYm9vayBQcm8gMTUiLzE3IgorTWFjTWluaQorCitIb3cgdG8gdXNlIGl0PworPT09PT09PT09PT09PT0KKworZWZpZmIgZG9lcyBub3QgaGF2ZSBhbnkga2luZCBvZiBhdXRvZGV0ZWN0aW9uIG9mIHlvdXIgbWFjaGluZS4KK1lvdSBoYXZlIHRvIGFkZCB0aGUgZm9sbG93aW5nIGtlcm5lbCBwYXJhbWV0ZXJzIGluIHlvdXIgZWxpbG8uY29uZjoKKwlNYWNib29rIDoKKwkJdmlkZW89ZWZpZmI6bWFjYm9vaworCU1hY01pbmkgOgorCQl2aWRlbz1lZmlmYjptaW5pCisJTWFjYm9vayBQcm8gMTUiLCBpTWFjIDE3IiA6CisJCXZpZGVvPWVmaWZiOmkxNworCU1hY2Jvb2sgUHJvIDE3IiwgaU1hYyAyMCIgOgorCQl2aWRlbz1lZmlmYjppMjAKKworLS0KK0VkZ2FyIEh1Y2VrIDxnaW1saUBkYXJrLWdyZWVuLmNvbT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvZXA5M3h4LWZiLnR4dCBiL0RvY3VtZW50YXRpb24vZmIvZXA5M3h4LWZiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWYxYmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mYi9lcDkzeHgtZmIudHh0CkBAIC0wLDAgKzEsMTM1IEBACis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorRHJpdmVyIGZvciBFUDkzeHggTENEIGNvbnRyb2xsZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBFUDkzeHggTENEIGNvbnRyb2xsZXIgY2FuIGRyaXZlIGJvdGggc3RhbmRhcmQgZGVza3RvcCBtb25pdG9ycyBhbmQKK2VtYmVkZGVkIExDRCBkaXNwbGF5cy4gSWYgeW91IGhhdmUgYSBzdGFuZGFyZCBkZXNrdG9wIG1vbml0b3IgdGhlbiB5b3UKK2NhbiB1c2UgdGhlIHN0YW5kYXJkIExpbnV4IHZpZGVvIG1vZGUgZGF0YWJhc2UuIEluIHlvdXIgYm9hcmQgZmlsZToKKworCXN0YXRpYyBzdHJ1Y3QgZXA5M3h4ZmJfbWFjaF9pbmZvIHNvbWVfYm9hcmRfZmJfaW5mbyA9IHsKKwkJLm51bV9tb2Rlcwk9IEVQOTNYWEZCX1VTRV9NT0RFREIsCisJCS5icHAJCT0gMTYsCisJfTsKKworSWYgeW91IGhhdmUgYW4gZW1iZWRkZWQgTENEIGRpc3BsYXkgdGhlbiB5b3UgbmVlZCB0byBkZWZpbmUgYSB2aWRlbworbW9kZSBmb3IgaXQgYXMgZm9sbG93czoKKworCXN0YXRpYyBzdHJ1Y3QgZmJfdmlkZW9tb2RlIHNvbWVfYm9hcmRfdmlkZW9fbW9kZXNbXSA9IHsKKwkJeworCQkJLm5hbWUJCT0gInNvbWVfbGNkX25hbWUiLAorCQkJLyogUGl4ZWwgY2xvY2ssIHBvcmNoZXMsIGV0YyAqLworCQl9LAorCX07CisKK05vdGUgdGhhdCB0aGUgcGl4ZWwgY2xvY2sgdmFsdWUgaXMgaW4gcGljby1zZWNvbmRzLiBZb3UgY2FuIHVzZSB0aGUKK0tIWjJQSUNPUyBtYWNybyB0byBjb252ZXJ0IHRoZSBwaXhlbCBjbG9jayB2YWx1ZS4gTW9zdCBvdGhlciB2YWx1ZXMKK2FyZSBpbiBwaXhlbCBjbG9ja3MuIFNlZSBEb2N1bWVudGF0aW9uL2ZiL2ZyYW1lYnVmZmVyLnR4dCBmb3IgZnVydGhlcgorZGV0YWlscy4KKworVGhlIGVwOTN4eGZiX21hY2hfaW5mbyBzdHJ1Y3R1cmUgZm9yIHlvdXIgYm9hcmQgc2hvdWxkIGxvb2sgbGlrZSB0aGUKK2ZvbGxvd2luZzoKKworCXN0YXRpYyBzdHJ1Y3QgZXA5M3h4ZmJfbWFjaF9pbmZvIHNvbWVfYm9hcmRfZmJfaW5mbyA9IHsKKwkJLm51bV9tb2Rlcwk9IEFSUkFZX1NJWkUoc29tZV9ib2FyZF92aWRlb19tb2RlcyksCisJCS5tb2RlcwkJPSBzb21lX2JvYXJkX3ZpZGVvX21vZGVzLAorCQkuZGVmYXVsdF9tb2RlCT0gJnNvbWVfYm9hcmRfdmlkZW9fbW9kZXNbMF0sCisJCS5icHAJCT0gMTYsCisJfTsKKworVGhlIGZyYW1lYnVmZmVyIGRldmljZSBjYW4gYmUgcmVnaXN0ZXJlZCBieSBhZGRpbmcgdGhlIGZvbGxvd2luZyB0bworeW91ciBib2FyZCBpbml0aWFsaXNhdGlvbiBmdW5jdGlvbjoKKworCWVwOTN4eF9yZWdpc3Rlcl9mYigmc29tZV9ib2FyZF9mYl9pbmZvKTsKKworPT09PT09PT09PT09PT09PT09PT09CitWaWRlbyBBdHRyaWJ1dGUgRmxhZ3MKKz09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZXA5M3h4ZmJfbWFjaF9pbmZvIHN0cnVjdHVyZSBoYXMgYSBmbGFncyBmaWVsZCB3aGljaCBjYW4gYmUgdXNlZAordG8gY29uZmlndXJlIHRoZSBjb250cm9sbGVyLiBUaGUgdmlkZW8gYXR0cmlidXRlcyBmbGFncyBhcmUgZnVsbHkKK2RvY3VtZW50ZWQgaW4gc2VjdGlvbiA3IG9mIHRoZSBFUDkzeHggdXNlcnMnIGd1aWRlLiBUaGUgZm9sbG93aW5nCitmbGFncyBhcmUgYXZhaWxhYmxlOgorCitFUDkzWFhGQl9QQ0xLX0ZBTExJTkcJCUNsb2NrIGRhdGEgb24gdGhlIGZhbGxpbmcgZWRnZSBvZiB0aGUKKwkJCQlwaXhlbCBjbG9jay4gVGhlIGRlZmF1bHQgaXMgdG8gY2xvY2sKKwkJCQlkYXRhIG9uIHRoZSByaXNpbmcgZWRnZS4KKworRVA5M1hYRkJfU1lOQ19CTEFOS19ISUdICUJsYW5rIHNpZ25hbCBpcyBhY3RpdmUgaGlnaC4gQnkKKwkJCQlkZWZhdWx0IHRoZSBibGFuayBzaWduYWwgaXMgYWN0aXZlIGxvdy4KKworRVA5M1hYRkJfU1lOQ19IT1JJWl9ISUdICUhvcml6b250YWwgc3luYyBpcyBhY3RpdmUgaGlnaC4gQnkKKwkJCQlkZWZhdWx0IHRoZSBob3Jpem9udGFsIHN5bmMgaXMgYWN0aXZlIGxvdy4KKworRVA5M1hYRkJfU1lOQ19WRVJUX0hJR0gJCVZlcnRpY2FsIHN5bmMgaXMgYWN0aXZlIGhpZ2guIEJ5CisJCQkJZGVmYXVsdCB0aGUgdmVydGljYWwgc3luYyBpcyBhY3RpdmUgaGlnaC4KKworVGhlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGZyYW1lYnVmZmVyIGNhbiBiZSBjb250cm9sbGVkIHVzaW5nIHRoZQorZm9sbG93aW5nIGZsYWdzOgorCitFUDkzWFhGQl9VU0VfU0RDU04wCQlVc2UgU0RDU25bMF0gZm9yIHRoZSBmcmFtZWJ1ZmZlci4gVGhpcworCQkJCWlzIHRoZSBkZWZhdWx0IHNldHRpbmcuCisKK0VQOTNYWEZCX1VTRV9TRENTTjEJCVVzZSBTRENTblsxXSBmb3IgdGhlIGZyYW1lYnVmZmVyLgorCitFUDkzWFhGQl9VU0VfU0RDU04yCQlVc2UgU0RDU25bMl0gZm9yIHRoZSBmcmFtZWJ1ZmZlci4KKworRVA5M1hYRkJfVVNFX1NEQ1NOMwkJVXNlIFNEQ1NuWzNdIGZvciB0aGUgZnJhbWVidWZmZXIuCisKKz09PT09PT09PT09PT09PT09PQorUGxhdGZvcm0gY2FsbGJhY2tzCis9PT09PT09PT09PT09PT09PT0KKworVGhlIEVQOTN4eCBmcmFtZWJ1ZmZlciBkcml2ZXIgc3VwcG9ydHMgdGhyZWUgb3B0aW9uYWwgcGxhdGZvcm0KK2NhbGxiYWNrczogc2V0dXAsIHRlYXJkb3duIGFuZCBibGFuay4gVGhlIHNldHVwIGFuZCB0ZWFyZG93biBmdW5jdGlvbnMKK2FyZSBjYWxsZWQgd2hlbiB0aGUgZnJhbWVidWZmZXIgZHJpdmVyIGlzIGluc3RhbGxlZCBhbmQgcmVtb3ZlZAorcmVzcGVjdGl2ZWx5LiBUaGUgYmxhbmsgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBkaXNwbGF5IGlzCitibGFua2VkIG9yIHVuYmxhbmtlZC4KKworVGhlIHNldHVwIGFuZCB0ZWFyZG93biBkZXZpY2VzIHBhc3MgdGhlIHBsYXRmb3JtX2RldmljZSBzdHJ1Y3R1cmUgYXMKK2FuIGFyZ3VtZW50LiBUaGUgZmJfaW5mbyBhbmQgZXA5M3h4ZmJfbWFjaF9pbmZvIHN0cnVjdHVyZXMgY2FuIGJlCitvYnRhaW5lZCBhcyBmb2xsb3dzOgorCisJc3RhdGljIGludCBzb21lX2JvYXJkX2ZiX3NldHVwKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCisJeworCQlzdHJ1Y3QgZXA5M3h4ZmJfbWFjaF9pbmZvICptYWNoX2luZm8gPSBwZGV2LT5kZXYucGxhdGZvcm1fZGF0YTsKKwkJc3RydWN0IGZiX2luZm8gKmZiX2luZm8gPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCQkvKiBCb2FyZCBzcGVjaWZpYyBmcmFtZWJ1ZmZlciBzZXR1cCAqLworCX0KKworPT09PT09PT09PT09PT09PT09PT09PQorU2V0dGluZyB0aGUgdmlkZW8gbW9kZQorPT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgdmlkZW8gbW9kZSBpcyBzZXQgdXNpbmcgdGhlIGZvbGxvd2luZyBzeW50YXg6CisKKwl2aWRlbz1YUkVTeFlSRVNbLUJQUF1bQFJFRlJFU0hdCisKK0lmIHRoZSBFUDkzeHggdmlkZW8gZHJpdmVyIGlzIGJ1aWx0LWluIHRoZW4gdGhlIHZpZGVvIG1vZGUgaXMgc2V0IG9uCit0aGUgTGludXgga2VybmVsIGNvbW1hbmQgbGluZSwgZm9yIGV4YW1wbGU6CisKKwl2aWRlbz1lcDkzeHgtZmI6ODAweDYwMC0xNkA2MAorCitJZiB0aGUgRVA5M3h4IHZpZGVvIGRyaXZlciBpcyBidWlsdCBhcyBhIG1vZHVsZSB0aGVuIHRoZSB2aWRlbyBtb2RlIGlzCitzZXQgd2hlbiB0aGUgbW9kdWxlIGlzIGluc3RhbGxlZDoKKworCW1vZHByb2JlIGVwOTN4eC1mYiB2aWRlbz0zMjB4MjQwCisKKz09PT09PT09PT09PT09CitTY3JlZW5wYWdlIGJ1ZworPT09PT09PT09PT09PT0KKworQXQgbGVhc3Qgb24gdGhlIEVQOTMxNSB0aGVyZSBpcyBhIHNpbGljb24gYnVnIHdoaWNoIGNhdXNlcyBiaXQgMjcgb2YKK3RoZSBWSURTQ1JOUEFHRSAoZnJhbWVidWZmZXIgcGh5c2ljYWwgb2Zmc2V0KSB0byBiZSB0aWVkIGxvdy4gVGhlcmUgaXMKK2FuIHVub2ZmaWNpYWwgZXJyYXRhIGZvciB0aGlzIGJ1ZyBhdDoKKwlodHRwOi8vbWFyYy5pbmZvLz9sPWxpbnV4LWFybS1rZXJuZWwmbT0xMTAwNjEyNDU1MDIwMDAmdz0yCisKK0J5IGRlZmF1bHQgdGhlIEVQOTN4eCBmcmFtZWJ1ZmZlciBkcml2ZXIgY2hlY2tzIGlmIHRoZSBhbGxvY2F0ZWQgcGh5c2ljYWwKK2FkZHJlc3MgaGFzIGJpdCAyNyBzZXQuIElmIGl0IGRvZXMsIHRoZW4gdGhlIG1lbW9yeSBpcyBmcmVlZCBhbmQgYW4KK2Vycm9yIGlzIHJldHVybmVkLiBUaGUgY2hlY2sgY2FuIGJlIGRpc2FibGVkIGJ5IGFkZGluZyB0aGUgZm9sbG93aW5nCitvcHRpb24gd2hlbiBsb2FkaW5nIHRoZSBkcml2ZXI6CisKKyAgICAgIGVwOTN4eC1mYi5jaGVja19zY3JlZW5wYWdlX2J1Zz0wCisKK0luIHNvbWUgY2FzZXMgaXQgbWF5IGJlIHBvc3NpYmxlIHRvIHJlY29uZmlndXJlIHlvdXIgU0RSQU0gbGF5b3V0IHRvCithdm9pZCB0aGlzIGJ1Zy4gU2VlIHNlY3Rpb24gMTMgb2YgdGhlIEVQOTN4eCB1c2VycycgZ3VpZGUgZm9yIGRldGFpbHMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZiL2ZiY29uLnR4dCBiL0RvY3VtZW50YXRpb24vZmIvZmJjb24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhOTczOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZiL2ZiY29uLnR4dApAQCAtMCwwICsxLDMyNCBAQAorVGhlIEZyYW1lYnVmZmVyIENvbnNvbGUKKz09PT09PT09PT09PT09PT09PT09PT09CisKKwlUaGUgZnJhbWVidWZmZXIgY29uc29sZSAoZmJjb24pLCBhcyBpdHMgbmFtZSBpbXBsaWVzLCBpcyBhIHRleHQKK2NvbnNvbGUgcnVubmluZyBvbiB0b3Agb2YgdGhlIGZyYW1lYnVmZmVyIGRldmljZS4gSXQgaGFzIHRoZSBmdW5jdGlvbmFsaXR5IG9mCithbnkgc3RhbmRhcmQgdGV4dCBjb25zb2xlIGRyaXZlciwgc3VjaCBhcyB0aGUgVkdBIGNvbnNvbGUsIHdpdGggdGhlIGFkZGVkCitmZWF0dXJlcyB0aGF0IGNhbiBiZSBhdHRyaWJ1dGVkIHRvIHRoZSBncmFwaGljYWwgbmF0dXJlIG9mIHRoZSBmcmFtZWJ1ZmZlci4KKworCSBJbiB0aGUgeDg2IGFyY2hpdGVjdHVyZSwgdGhlIGZyYW1lYnVmZmVyIGNvbnNvbGUgaXMgb3B0aW9uYWwsIGFuZAorc29tZSBldmVuIHRyZWF0IGl0IGFzIGEgdG95LiBGb3Igb3RoZXIgYXJjaGl0ZWN0dXJlcywgaXQgaXMgdGhlIG9ubHkgYXZhaWxhYmxlCitkaXNwbGF5IGRldmljZSwgdGV4dCBvciBncmFwaGljYWwuCisKKwkgV2hhdCBhcmUgdGhlIGZlYXR1cmVzIG9mIGZiY29uPyAgVGhlIGZyYW1lYnVmZmVyIGNvbnNvbGUgc3VwcG9ydHMKK2hpZ2ggcmVzb2x1dGlvbnMsIHZhcnlpbmcgZm9udCB0eXBlcywgZGlzcGxheSByb3RhdGlvbiwgcHJpbWl0aXZlIG11bHRpaGVhZCwKK2V0Yy4gVGhlb3JldGljYWxseSwgbXVsdGktY29sb3JlZCBmb250cywgYmxlbmRpbmcsIGFsaWFzaW5nLCBhbmQgYW55IGZlYXR1cmUKK21hZGUgYXZhaWxhYmxlIGJ5IHRoZSB1bmRlcmx5aW5nIGdyYXBoaWNzIGNhcmQgYXJlIGFsc28gcG9zc2libGUuCisKK0EuIENvbmZpZ3VyYXRpb24KKworCVRoZSBmcmFtZWJ1ZmZlciBjb25zb2xlIGNhbiBiZSBlbmFibGVkIGJ5IHVzaW5nIHlvdXIgZmF2b3JpdGUga2VybmVsCitjb25maWd1cmF0aW9uIHRvb2wuICBJdCBpcyB1bmRlciBEZXZpY2UgRHJpdmVycy0+R3JhcGhpY3MgU3VwcG9ydC0+U3VwcG9ydCBmb3IKK2ZyYW1lYnVmZmVyIGRldmljZXMtPkZyYW1lYnVmZmVyIENvbnNvbGUgU3VwcG9ydC4gU2VsZWN0ICd5JyB0byBjb21waWxlCitzdXBwb3J0IHN0YXRpY2FsbHksIG9yICdtJyBmb3IgbW9kdWxlIHN1cHBvcnQuICBUaGUgbW9kdWxlIHdpbGwgYmUgZmJjb24uCisKKwlJbiBvcmRlciBmb3IgZmJjb24gdG8gYWN0aXZhdGUsIGF0IGxlYXN0IG9uZSBmcmFtZWJ1ZmZlciBkcml2ZXIgaXMKK3JlcXVpcmVkLCBzbyBjaG9vc2UgZnJvbSBhbnkgb2YgdGhlIG51bWVyb3VzIGRyaXZlcnMgYXZhaWxhYmxlLiBGb3IgeDg2CitzeXN0ZW1zLCB0aGV5IGFsbW9zdCB1bml2ZXJzYWxseSBoYXZlIFZHQSBjYXJkcywgc28gdmdhMTZmYiBhbmQgdmVzYWZiIHdpbGwKK2Fsd2F5cyBiZSBhdmFpbGFibGUuIEhvd2V2ZXIsIHVzaW5nIGEgY2hpcHNldC1zcGVjaWZpYyBkcml2ZXIgd2lsbCBnaXZlIHlvdQorbW9yZSBzcGVlZCBhbmQgZmVhdHVyZXMsIHN1Y2ggYXMgdGhlIGFiaWxpdHkgdG8gY2hhbmdlIHRoZSB2aWRlbyBtb2RlCitkeW5hbWljYWxseS4KKworCVRvIGRpc3BsYXkgdGhlIHBlbmd1aW4gbG9nbywgY2hvb3NlIGFueSBsb2dvIGF2YWlsYWJsZSBpbiBMb2dvCitDb25maWd1cmF0aW9uLT5Cb290IHVwIGxvZ28uCisKKwlBbHNvLCB5b3Ugd2lsbCBuZWVkIHRvIHNlbGVjdCBhdCBsZWFzdCBvbmUgY29tcGlsZWQtaW4gZm9udHMsIGJ1dCBpZgoreW91IGRvbid0IGRvIGFueXRoaW5nLCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gdG9vbCB3aWxsIHNlbGVjdCBvbmUgZm9yIHlvdSwKK3VzdWFsbHkgYW4gOHgxNiBmb250LgorCitHT1RDSEE6IEEgY29tbW9uIGJ1ZyByZXBvcnQgaXMgZW5hYmxpbmcgdGhlIGZyYW1lYnVmZmVyIHdpdGhvdXQgZW5hYmxpbmcgdGhlCitmcmFtZWJ1ZmZlciBjb25zb2xlLiAgRGVwZW5kaW5nIG9uIHRoZSBkcml2ZXIsIHlvdSBtYXkgZ2V0IGEgYmxhbmtlZCBvcgorZ2FyYmxlZCBkaXNwbGF5LCBidXQgdGhlIHN5c3RlbSBzdGlsbCBib290cyB0byBjb21wbGV0aW9uLiAgSWYgeW91IGFyZQorZm9ydHVuYXRlIHRvIGhhdmUgYSBkcml2ZXIgdGhhdCBkb2VzIG5vdCBhbHRlciB0aGUgZ3JhcGhpY3MgY2hpcCwgdGhlbiB5b3UKK3dpbGwgc3RpbGwgZ2V0IGEgVkdBIGNvbnNvbGUuCisKK0IuIExvYWRpbmcKKworUG9zc2libGUgc2NlbmFyaW9zOgorCisxLiBEcml2ZXIgYW5kIGZiY29uIGFyZSBjb21waWxlZCBzdGF0aWNhbGx5CisKKwkgVXN1YWxseSwgZmJjb24gd2lsbCBhdXRvbWF0aWNhbGx5IHRha2Ugb3ZlciB5b3VyIGNvbnNvbGUuIFRoZSBub3RhYmxlCisJIGV4Y2VwdGlvbiBpcyB2ZXNhZmIuICBJdCBuZWVkcyB0byBiZSBleHBsaWNpdGx5IGFjdGl2YXRlZCB3aXRoIHRoZQorCSB2Z2E9IGJvb3Qgb3B0aW9uIHBhcmFtZXRlci4KKworMi4gRHJpdmVyIGlzIGNvbXBpbGVkIHN0YXRpY2FsbHksIGZiY29uIGlzIGNvbXBpbGVkIGFzIGEgbW9kdWxlCisKKwkgRGVwZW5kaW5nIG9uIHRoZSBkcml2ZXIsIHlvdSBlaXRoZXIgZ2V0IGEgc3RhbmRhcmQgY29uc29sZSwgb3IgYQorCSBnYXJibGVkIGRpc3BsYXksIGFzIG1lbnRpb25lZCBhYm92ZS4gIFRvIGdldCBhIGZyYW1lYnVmZmVyIGNvbnNvbGUsCisJIGRvIGEgJ21vZHByb2JlIGZiY29uJy4KKworMy4gRHJpdmVyIGlzIGNvbXBpbGVkIGFzIGEgbW9kdWxlLCBmYmNvbiBpcyBjb21waWxlZCBzdGF0aWNhbGx5CisKKwkgWW91IGdldCB5b3VyIHN0YW5kYXJkIGNvbnNvbGUuICBPbmNlIHRoZSBkcml2ZXIgaXMgbG9hZGVkIHdpdGgKKwkgJ21vZHByb2JlIHh4eGZiJywgZmJjb24gYXV0b21hdGljYWxseSB0YWtlcyBvdmVyIHRoZSBjb25zb2xlIHdpdGgKKwkgdGhlIHBvc3NpYmxlIGV4Y2VwdGlvbiBvZiB1c2luZyB0aGUgZmJjb249bWFwOm4gb3B0aW9uLiBTZWUgYmVsb3cuCisKKzQuIERyaXZlciBhbmQgZmJjb24gYXJlIGNvbXBpbGVkIGFzIGEgbW9kdWxlLgorCisJIFlvdSBjYW4gbG9hZCB0aGVtIGluIGFueSBvcmRlci4gT25jZSBib3RoIGFyZSBsb2FkZWQsIGZiY29uIHdpbGwgdGFrZQorCSBvdmVyIHRoZSBjb25zb2xlLgorCitDLiBCb290IG9wdGlvbnMKKworICAgICAgICAgVGhlIGZyYW1lYnVmZmVyIGNvbnNvbGUgaGFzIHNldmVyYWwsIGxhcmdlbHkgdW5rbm93biwgYm9vdCBvcHRpb25zCisgICAgICAgICB0aGF0IGNhbiBjaGFuZ2UgaXRzIGJlaGF2aW9yLgorCisxLiBmYmNvbj1mb250OjxuYW1lPgorCisgICAgICAgIFNlbGVjdCB0aGUgaW5pdGlhbCBmb250IHRvIHVzZS4gVGhlIHZhbHVlICduYW1lJyBjYW4gYmUgYW55IG9mIHRoZQorICAgICAgICBjb21waWxlZC1pbiBmb250czogVkdBOHgxNiwgN3gxNCwgMTB4MTgsIFZHQTh4OCwgTUlOSTR4NiwgUm9tYW5MYXJnZSwKKyAgICAgICAgU1VOOHgxNiwgU1VOMTJ4MjIsIFByb0ZvbnQ2eDExLCBBY29ybjh4OCwgUEVBUkw4eDguCisKKwlOb3RlLCBub3QgYWxsIGRyaXZlcnMgY2FuIGhhbmRsZSBmb250IHdpdGggd2lkdGhzIG5vdCBkaXZpc2libGUgYnkgOCwKKyAgICAgICAgc3VjaCBhcyB2Z2ExNmZiLgorCisyLiBmYmNvbj1zY3JvbGxiYWNrOjx2YWx1ZT5ba10KKworICAgICAgICBUaGUgc2Nyb2xsYmFjayBidWZmZXIgaXMgbWVtb3J5IHRoYXQgaXMgdXNlZCB0byBwcmVzZXJ2ZSBkaXNwbGF5CisgICAgICAgIGNvbnRlbnRzIHRoYXQgaGFzIGFscmVhZHkgc2Nyb2xsZWQgcGFzdCB5b3VyIHZpZXcuICBUaGlzIGlzIGFjY2Vzc2VkCisgICAgICAgIGJ5IHVzaW5nIHRoZSBTaGlmdC1QYWdlVXAga2V5IGNvbWJpbmF0aW9uLiAgVGhlIHZhbHVlICd2YWx1ZScgaXMgYW55CisgICAgICAgIGludGVnZXIuIEl0IGRlZmF1bHRzIHRvIDMyS0IuICBUaGUgJ2snIHN1ZmZpeCBpcyBvcHRpb25hbCwgYW5kIHdpbGwKKyAgICAgICAgbXVsdGlwbHkgdGhlICd2YWx1ZScgYnkgMTAyNC4KKworMy4gZmJjb249bWFwOjwwMTIzPgorCisgICAgICAgIFRoaXMgaXMgYW4gaW50ZXJlc3Rpbmcgb3B0aW9uLiBJdCB0ZWxscyB3aGljaCBkcml2ZXIgZ2V0cyBtYXBwZWQgdG8KKyAgICAgICAgd2hpY2ggY29uc29sZS4gVGhlIHZhbHVlICcwMTIzJyBpcyBhIHNlcXVlbmNlIHRoYXQgZ2V0cyByZXBlYXRlZCB1bnRpbAorICAgICAgICB0aGUgdG90YWwgbGVuZ3RoIGlzIDY0IHdoaWNoIGlzIHRoZSBudW1iZXIgb2YgY29uc29sZXMgYXZhaWxhYmxlLiBJbgorICAgICAgICB0aGUgYWJvdmUgZXhhbXBsZSwgaXQgaXMgZXhwYW5kZWQgdG8gMDEyMzAxMjMwMTIzLi4uIGFuZCB0aGUgbWFwcGluZworICAgICAgICB3aWxsIGJlOgorCisJCXR0eSB8IDEgMiAzIDQgNSA2IDcgOCA5IC4uLgorCQlmYiAgfCAwIDEgMiAzIDAgMSAyIDMgMCAuLi4KKworCQkoJ2NhdCAvcHJvYy9mYicgc2hvdWxkIHRlbGwgeW91IHdoYXQgdGhlIGZiIG51bWJlcnMgYXJlKQorCisJT25lIHNpZGUgZWZmZWN0IHRoYXQgbWF5IGJlIHVzZWZ1bCBpcyB1c2luZyBhIG1hcCB2YWx1ZSB0aGF0IGV4Y2VlZHMKKwl0aGUgbnVtYmVyIG9mIGxvYWRlZCBmYiBkcml2ZXJzLiBGb3IgZXhhbXBsZSwgaWYgb25seSBvbmUgZHJpdmVyIGlzCisJYXZhaWxhYmxlLCBmYjAsIGFkZGluZyBmYmNvbj1tYXA6MSB0ZWxscyBmYmNvbiBub3QgdG8gdGFrZSBvdmVyIHRoZQorCWNvbnNvbGUuCisKKwlMYXRlciBvbiwgd2hlbiB5b3Ugd2FudCB0byBtYXAgdGhlIGNvbnNvbGUgdGhlIHRvIHRoZSBmcmFtZWJ1ZmZlcgorCWRldmljZSwgeW91IGNhbiB1c2UgdGhlIGNvbjJmYm1hcCB1dGlsaXR5LgorCis0LiBmYmNvbj12Yzo8bjE+LTxuMj4KKworCVRoaXMgb3B0aW9uIHRlbGxzIGZiY29uIHRvIHRha2Ugb3ZlciBvbmx5IGEgcmFuZ2Ugb2YgY29uc29sZXMgYXMKKwlzcGVjaWZpZWQgYnkgdGhlIHZhbHVlcyAnbjEnIGFuZCAnbjInLiBUaGUgcmVzdCBvZiB0aGUgY29uc29sZXMKKwlvdXRzaWRlIHRoZSBnaXZlbiByYW5nZSB3aWxsIHN0aWxsIGJlIGNvbnRyb2xsZWQgYnkgdGhlIHN0YW5kYXJkCisJY29uc29sZSBkcml2ZXIuCisKKwlOT1RFOiBGb3IgeDg2IG1hY2hpbmVzLCB0aGUgc3RhbmRhcmQgY29uc29sZSBpcyB0aGUgVkdBIGNvbnNvbGUgd2hpY2gKKwlpcyB0eXBpY2FsbHkgbG9jYXRlZCBvbiB0aGUgc2FtZSB2aWRlbyBjYXJkLiAgVGh1cywgdGhlIGNvbnNvbGVzIHRoYXQKKwlhcmUgY29udHJvbGxlZCBieSB0aGUgVkdBIGNvbnNvbGUgd2lsbCBiZSBnYXJibGVkLgorCis0LiBmYmNvbj1yb3RhdGU6PG4+CisKKyAgICAgICAgVGhpcyBvcHRpb24gY2hhbmdlcyB0aGUgb3JpZW50YXRpb24gYW5nbGUgb2YgdGhlIGNvbnNvbGUgZGlzcGxheS4gVGhlCisgICAgICAgIHZhbHVlICduJyBhY2NlcHRzIHRoZSBmb2xsb3dpbmc6CisKKwkgICAgICAwIC0gbm9ybWFsIG9yaWVudGF0aW9uICgwIGRlZ3JlZSkKKwkgICAgICAxIC0gY2xvY2t3aXNlIG9yaWVudGF0aW9uICg5MCBkZWdyZWVzKQorCSAgICAgIDIgLSB1cHNpZGUgZG93biBvcmllbnRhdGlvbiAoMTgwIGRlZ3JlZXMpCisJICAgICAgMyAtIGNvdW50ZXJjbG9ja3dpc2Ugb3JpZW50YXRpb24gKDI3MCBkZWdyZWVzKQorCisJVGhlIGFuZ2xlIGNhbiBiZSBjaGFuZ2VkIGFueXRpbWUgYWZ0ZXJ3YXJkcyBieSAnZWNob2luZycgdGhlIHNhbWUKKwludW1iZXJzIHRvIGFueSBvbmUgb2YgdGhlIDIgYXR0cmlidXRlcyBmb3VuZCBpbgorCSAvc3lzL2NsYXNzL2dyYXBoaWNzL2ZiY29uCisKKwkJcm90YXRlICAgICAtIHJvdGF0ZSB0aGUgZGlzcGxheSBvZiB0aGUgYWN0aXZlIGNvbnNvbGUKKwkJcm90YXRlX2FsbCAtIHJvdGF0ZSB0aGUgZGlzcGxheSBvZiBhbGwgY29uc29sZXMKKworCUNvbnNvbGUgcm90YXRpb24gd2lsbCBvbmx5IGJlY29tZSBhdmFpbGFibGUgaWYgQ29uc29sZSBSb3RhdGlvbgorCVN1cHBvcnQgaXMgY29tcGlsZWQgaW4geW91ciBrZXJuZWwuCisKKwlOT1RFOiBUaGlzIGlzIHB1cmVseSBjb25zb2xlIHJvdGF0aW9uLiAgQW55IG90aGVyIGFwcGxpY2F0aW9ucyB0aGF0CisJdXNlIHRoZSBmcmFtZWJ1ZmZlciB3aWxsIHJlbWFpbiBhdCB0aGVpciAnbm9ybWFsJ29yaWVudGF0aW9uLgorCUFjdHVhbGx5LCB0aGUgdW5kZXJseWluZyBmYiBkcml2ZXIgaXMgdG90YWxseSBpZ25vcmFudCBvZiBjb25zb2xlCisJcm90YXRpb24uCisKK0MuIEF0dGFjaGluZywgRGV0YWNoaW5nIGFuZCBVbmxvYWRpbmcKKworQmVmb3JlIGdvaW5nIG9uIGhvdyB0byBhdHRhY2gsIGRldGFjaCBhbmQgdW5sb2FkIHRoZSBmcmFtZWJ1ZmZlciBjb25zb2xlLCBhbgoraWxsdXN0cmF0aW9uIG9mIHRoZSBkZXBlbmRlbmNpZXMgbWF5IGhlbHAuCisKK1RoZSBjb25zb2xlIGxheWVyLCBhcyB3aXRoIG1vc3Qgc3Vic3lzdGVtcywgbmVlZHMgYSBkcml2ZXIgdGhhdCBpbnRlcmZhY2VzIHdpdGgKK3RoZSBoYXJkd2FyZS4gVGh1cywgaW4gYSBWR0EgY29uc29sZToKKworY29uc29sZSAtLS0+IFZHQSBkcml2ZXIgLS0tPiBoYXJkd2FyZS4KKworQXNzdW1pbmcgdGhlIFZHQSBkcml2ZXIgY2FuIGJlIHVubG9hZGVkLCBvbmUgbXVzdCBmaXJzdCB1bmJpbmQgdGhlIFZHQSBkcml2ZXIKK2Zyb20gdGhlIGNvbnNvbGUgbGF5ZXIgYmVmb3JlIHVubG9hZGluZyB0aGUgZHJpdmVyLiAgVGhlIFZHQSBkcml2ZXIgY2Fubm90IGJlCit1bmxvYWRlZCBpZiBpdCBpcyBzdGlsbCBib3VuZCB0byB0aGUgY29uc29sZSBsYXllci4gKFNlZQorRG9jdW1lbnRhdGlvbi9jb25zb2xlL2NvbnNvbGUudHh0IGZvciBtb3JlIGluZm9ybWF0aW9uKS4KKworVGhpcyBpcyBtb3JlIGNvbXBsaWNhdGVkIGluIHRoZSBjYXNlIG9mIHRoZSBmcmFtZWJ1ZmZlciBjb25zb2xlIChmYmNvbiksCitiZWNhdXNlIGZiY29uIGlzIGFuIGludGVybWVkaWF0ZSBsYXllciBiZXR3ZWVuIHRoZSBjb25zb2xlIGFuZCB0aGUgZHJpdmVyczoKKworY29uc29sZSAtLS0+IGZiY29uIC0tLT4gZmJkZXYgZHJpdmVycyAtLS0+IGhhcmR3YXJlCisKK1RoZSBmYmRldiBkcml2ZXJzIGNhbm5vdCBiZSB1bmxvYWRlZCBpZiBpdCdzIGJvdW5kIHRvIGZiY29uLCBhbmQgZmJjb24gY2Fubm90CitiZSB1bmxvYWRlZCBpZiBpdCdzIGJvdW5kIHRvIHRoZSBjb25zb2xlIGxheWVyLgorCitTbyB0byB1bmxvYWQgdGhlIGZiZGV2IGRyaXZlcnMsIG9uZSBtdXN0IGZpcnN0IHVuYmluZCBmYmNvbiBmcm9tIHRoZSBjb25zb2xlLAordGhlbiB1bmJpbmQgdGhlIGZiZGV2IGRyaXZlcnMgZnJvbSBmYmNvbi4gIEZvcnR1bmF0ZWx5LCB1bmJpbmRpbmcgZmJjb24gZnJvbQordGhlIGNvbnNvbGUgbGF5ZXIgd2lsbCBhdXRvbWF0aWNhbGx5IHVuYmluZCBmcmFtZWJ1ZmZlciBkcml2ZXJzIGZyb20KK2ZiY29uLiBUaHVzLCB0aGVyZSBpcyBubyBuZWVkIHRvIGV4cGxpY2l0bHkgdW5iaW5kIHRoZSBmYmRldiBkcml2ZXJzIGZyb20KK2ZiY29uLgorCitTbywgaG93IGRvIHdlIHVuYmluZCBmYmNvbiBmcm9tIHRoZSBjb25zb2xlPyBQYXJ0IG9mIHRoZSBhbnN3ZXIgaXMgaW4KK0RvY3VtZW50YXRpb24vY29uc29sZS9jb25zb2xlLnR4dC4gVG8gc3VtbWFyaXplOgorCitFY2hvIGEgdmFsdWUgdG8gdGhlIGJpbmQgZmlsZSB0aGF0IHJlcHJlc2VudHMgdGhlIGZyYW1lYnVmZmVyIGNvbnNvbGUKK2RyaXZlci4gU28gYXNzdW1pbmcgdnRjb24xIHJlcHJlc2VudHMgZmJjb24sIHRoZW46CisKK2VjaG8gMSA+IHN5cy9jbGFzcy92dGNvbnNvbGUvdnRjb24xL2JpbmQgLSBhdHRhY2ggZnJhbWVidWZmZXIgY29uc29sZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUgbGF5ZXIKK2VjaG8gMCA+IHN5cy9jbGFzcy92dGNvbnNvbGUvdnRjb24xL2JpbmQgLSBkZXRhY2ggZnJhbWVidWZmZXIgY29uc29sZSBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZSBsYXllcgorCitJZiBmYmNvbiBpcyBkZXRhY2hlZCBmcm9tIHRoZSBjb25zb2xlIGxheWVyLCB5b3VyIGJvb3QgY29uc29sZSBkcml2ZXIgKHdoaWNoIGlzCit1c3VhbGx5IFZHQSB0ZXh0IG1vZGUpIHdpbGwgdGFrZSBvdmVyLiAgQSBmZXcgZHJpdmVycyAocml2YWZiIGFuZCBpODEwZmIpIHdpbGwKK3Jlc3RvcmUgVkdBIHRleHQgbW9kZSBmb3IgeW91LiAgV2l0aCB0aGUgcmVzdCwgYmVmb3JlIGRldGFjaGluZyBmYmNvbiwgeW91CittdXN0IHRha2UgYSBmZXcgYWRkaXRpb25hbCBzdGVwcyB0byBtYWtlIHN1cmUgdGhhdCB5b3VyIFZHQSB0ZXh0IG1vZGUgaXMKK3Jlc3RvcmVkIHByb3Blcmx5LiBUaGUgZm9sbG93aW5nIGlzIG9uZSBvZiB0aGUgc2V2ZXJhbCBtZXRob2RzIHRoYXQgeW91IGNhbiBkbzoKKworMS4gRG93bmxvYWQgb3IgaW5zdGFsbCB2YmV0b29sLiAgVGhpcyB1dGlsaXR5IGlzIGluY2x1ZGVkIHdpdGggbW9zdAorICAgZGlzdHJpYnV0aW9ucyBub3dhZGF5cywgYW5kIGlzIHVzdWFsbHkgcGFydCBvZiB0aGUgc3VzcGVuZC9yZXN1bWUgdG9vbC4KKworMi4gSW4geW91ciBrZXJuZWwgY29uZmlndXJhdGlvbiwgZW5zdXJlIHRoYXQgQ09ORklHX0ZSQU1FQlVGRkVSX0NPTlNPTEUgaXMgc2V0CisgICB0byAneScgb3IgJ20nLiBFbmFibGUgb25lIG9yIG1vcmUgb2YgeW91ciBmYXZvcml0ZSBmcmFtZWJ1ZmZlciBkcml2ZXJzLgorCiszLiBCb290IGludG8gdGV4dCBtb2RlIGFuZCBhcyByb290IHJ1bjoKKworCXZiZXRvb2wgdmJlc3RhdGUgc2F2ZSA+IDx2Z2Egc3RhdGUgZmlsZT4KKworCVRoZSBhYm92ZSBjb21tYW5kIHNhdmVzIHRoZSByZWdpc3RlciBjb250ZW50cyBvZiB5b3VyIGdyYXBoaWNzCisJaGFyZHdhcmUgdG8gPHZnYSBzdGF0ZSBmaWxlPi4gIFlvdSBuZWVkIHRvIGRvIHRoaXMgc3RlcCBvbmx5IG9uY2UgYXMKKwl0aGUgc3RhdGUgZmlsZSBjYW4gYmUgcmV1c2VkLgorCis0LiBJZiBmYmNvbiBpcyBjb21waWxlZCBhcyBhIG1vZHVsZSwgbG9hZCBmYmNvbiBieSBkb2luZzoKKworICAgICAgIG1vZHByb2JlIGZiY29uCisKKzUuIE5vdyB0byBkZXRhY2ggZmJjb246CisKKyAgICAgICB2YmV0b29sIHZiZXN0YXRlIHJlc3RvcmUgPCA8dmdhIHN0YXRlIGZpbGU+ICYmIFwKKyAgICAgICBlY2hvIDAgPiAvc3lzL2NsYXNzL3Z0Y29uc29sZS92dGNvbjEvYmluZAorCis2LiBUaGF0J3MgaXQsIHlvdSdyZSBiYWNrIHRvIFZHQSBtb2RlLiBBbmQgaWYgeW91IGNvbXBpbGVkIGZiY29uIGFzIGEgbW9kdWxlLAorICAgeW91IGNhbiB1bmxvYWQgaXQgYnkgJ3JtbW9kIGZiY29uJworCis3LiBUbyByZWF0dGFjaCBmYmNvbjoKKworICAgICAgIGVjaG8gMSA+IC9zeXMvY2xhc3MvdnRjb25zb2xlL3Z0Y29uMS9iaW5kCisKKzguIE9uY2UgZmJjb24gaXMgdW5ib3VuZCwgYWxsIGRyaXZlcnMgcmVnaXN0ZXJlZCB0byB0aGUgc3lzdGVtIHdpbGwgYWxzbworYmVjb21lIHVuYm91bmQuICBUaGlzIG1lYW5zIHRoYXQgZmJjb24gYW5kIGluZGl2aWR1YWwgZnJhbWVidWZmZXIgZHJpdmVycworY2FuIGJlIHVubG9hZGVkIG9yIHJlbG9hZGVkIGF0IHdpbGwuIFJlbG9hZGluZyB0aGUgZHJpdmVycyBvciBmYmNvbiB3aWxsCithdXRvbWF0aWNhbGx5IGJpbmQgdGhlIGNvbnNvbGUsIGZiY29uIGFuZCB0aGUgZHJpdmVycyB0b2dldGhlci4gVW5sb2FkaW5nCithbGwgdGhlIGRyaXZlcnMgd2l0aG91dCB1bmxvYWRpbmcgZmJjb24gd2lsbCBtYWtlIGl0IGltcG9zc2libGUgZm9yIHRoZQorY29uc29sZSB0byBiaW5kIGZiY29uLgorCitOb3RlcyBmb3IgdmVzYWZiIHVzZXJzOgorPT09PT09PT09PT09PT09PT09PT09PT0KKworVW5mb3J0dW5hdGVseSwgaWYgeW91ciBib290bGluZSBpbmNsdWRlcyBhIHZnYT14eHggcGFyYW1ldGVyIHRoYXQgc2V0cyB0aGUKK2hhcmR3YXJlIGluIGdyYXBoaWNzIG1vZGUsIHN1Y2ggYXMgd2hlbiBsb2FkaW5nIHZlc2FmYiwgdmdhY29uIHdpbGwgbm90IGxvYWQuCitJbnN0ZWFkLCB2Z2Fjb24gd2lsbCByZXBsYWNlIHRoZSBkZWZhdWx0IGJvb3QgY29uc29sZSB3aXRoIGR1bW15Y29uLCBhbmQgeW91Cit3b24ndCBnZXQgYW55IGRpc3BsYXkgYWZ0ZXIgZGV0YWNoaW5nIGZiY29uLiBZb3VyIG1hY2hpbmUgaXMgc3RpbGwgYWxpdmUsIHNvCit5b3UgY2FuIHJlYXR0YWNoIHZlc2FmYi4gSG93ZXZlciwgdG8gcmVhdHRhY2ggdmVzYWZiLCB5b3UgbmVlZCB0byBkbyBvbmUgb2YKK3RoZSBmb2xsb3dpbmc6CisKK1ZhcmlhdGlvbiAxOgorCisgICAgYS4gQmVmb3JlIGRldGFjaGluZyBmYmNvbiwgZG8KKworICAgICAgIHZiZXRvb2wgdmJlbW9kZSBzYXZlID4gPHZlc2Egc3RhdGUgZmlsZT4gIyBkbyBvbmNlIGZvciBlYWNoIHZlc2FmYiBtb2RlLAorCQkJCQkJIyB0aGUgZmlsZSBjYW4gYmUgcmV1c2VkCisKKyAgICBiLiBEZXRhY2ggZmJjb24gYXMgaW4gc3RlcCA1LgorCisgICAgYy4gQXR0YWNoIGZiY29uCisKKyAgICAgICAgdmJldG9vbCB2YmVzdGF0ZSByZXN0b3JlIDwgPHZlc2Egc3RhdGUgZmlsZT4gJiYgXAorCWVjaG8gMSA+IC9zeXMvY2xhc3MvdnRjb25zb2xlL3Z0Y29uMS9iaW5kCisKK1ZhcmlhdGlvbiAyOgorCisgICAgYS4gQmVmb3JlIGRldGFjaGluZyBmYmNvbiwgZG86CisJZWNobyA8SUQ+ID4gL3N5cy9jbGFzcy90dHkvY29uc29sZS9iaW5kCisKKworICAgICAgIHZiZXRvb2wgdmJlbW9kZSBnZXQKKworICAgIGIuIFRha2Ugbm90ZSBvZiB0aGUgbW9kZSBudW1iZXIKKworICAgIGIuIERldGFjaCBmYmNvbiBhcyBpbiBzdGVwIDUuCisKKyAgICBjLiBBdHRhY2ggZmJjb246CisKKyAgICAgICB2YmV0b29sIHZiZW1vZGUgc2V0IDxtb2RlIG51bWJlcj4gJiYgXAorICAgICAgIGVjaG8gMSA+IC9zeXMvY2xhc3MvdnRjb25zb2xlL3Z0Y29uMS9iaW5kCisKK1NhbXBsZXM6Cis9PT09PT09PQorCitIZXJlIGFyZSAyIHNhbXBsZSBiYXNoIHNjcmlwdHMgdGhhdCB5b3UgY2FuIHVzZSB0byBiaW5kIG9yIHVuYmluZCB0aGUKK2ZyYW1lYnVmZmVyIGNvbnNvbGUgZHJpdmVyIGlmIHlvdSBhcmUgaW4gYW4gWDg2IGJveDoKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIS9iaW4vYmFzaAorIyBVbmJpbmQgZmJjb24KKworIyBDaGFuZ2UgdGhpcyB0byB3aGVyZSB5b3VyIGFjdHVhbCB2Z2FzdGF0ZSBmaWxlIGlzIGxvY2F0ZWQKKyMgT3IgVXNlIFZHQVNUQVRFPSQxIHRvIGluZGljYXRlIHRoZSBzdGF0ZSBmaWxlIGF0IHJ1bnRpbWUKK1ZHQVNUQVRFPS90bXAvdmdhc3RhdGUKKworIyBwYXRoIHRvIHZiZXRvb2wKK1ZCRVRPT0w9L3Vzci9sb2NhbC9iaW4KKworCitmb3IgKCggaSA9IDA7IGkgPCAxNjsgaSsrKSkKK2RvCisgIGlmIHRlc3QgLXggL3N5cy9jbGFzcy92dGNvbnNvbGUvdnRjb24kaTsgdGhlbgorICAgICAgaWYgWyBgY2F0IC9zeXMvY2xhc3MvdnRjb25zb2xlL3Z0Y29uJGkvbmFtZSB8IGdyZXAgLWMgImZyYW1lIGJ1ZmZlciJgIFwKKyAgICAgICAgICAgPSAxIF07IHRoZW4KKwkgICAgaWYgdGVzdCAteCAkVkJFVE9PTC92YmV0b29sOyB0aGVuCisJICAgICAgIGVjaG8gVW5iaW5kaW5nIHZ0Y29uJGkKKwkgICAgICAgJFZCRVRPT0wvdmJldG9vbCB2YmVzdGF0ZSByZXN0b3JlIDwgJFZHQVNUQVRFCisJICAgICAgIGVjaG8gMCA+IC9zeXMvY2xhc3MvdnRjb25zb2xlL3Z0Y29uJGkvYmluZAorCSAgICBmaQorICAgICAgZmkKKyAgZmkKK2RvbmUKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIS9iaW4vYmFzaAorIyBCaW5kIGZiY29uCisKK2ZvciAoKCBpID0gMDsgaSA8IDE2OyBpKyspKQorZG8KKyAgaWYgdGVzdCAteCAvc3lzL2NsYXNzL3Z0Y29uc29sZS92dGNvbiRpOyB0aGVuCisgICAgICBpZiBbIGBjYXQgL3N5cy9jbGFzcy92dGNvbnNvbGUvdnRjb24kaS9uYW1lIHwgZ3JlcCAtYyAiZnJhbWUgYnVmZmVyImAgXAorICAgICAgICAgICA9IDEgXTsgdGhlbgorCSAgZWNobyBVbmJpbmRpbmcgdnRjb24kaQorCSAgZWNobyAxID4gL3N5cy9jbGFzcy92dGNvbnNvbGUvdnRjb24kaS9iaW5kCisgICAgICBmaQorICBmaQorZG9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0tCitBbnRvbmlubyBEYXBsYXMgPGFkYXBsYXNAcG9sLm5ldD4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvZnJhbWVidWZmZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9mYi9mcmFtZWJ1ZmZlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThjNWFlMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmIvZnJhbWVidWZmZXIudHh0CkBAIC0wLDAgKzEsMzQzIEBACisJCQlUaGUgRnJhbWUgQnVmZmVyIERldmljZQorCQkJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTWFpbnRhaW5lZCBieSBHZWVydCBVeXR0ZXJob2V2ZW4gPGdlZXJ0QGxpbnV4LW02OGsub3JnPgorTGFzdCByZXZpc2VkOiBNYXkgMTAsIDIwMDEKKworCiswLiBJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLS0tLQorCitUaGUgZnJhbWUgYnVmZmVyIGRldmljZSBwcm92aWRlcyBhbiBhYnN0cmFjdGlvbiBmb3IgdGhlIGdyYXBoaWNzIGhhcmR3YXJlLiBJdAorcmVwcmVzZW50cyB0aGUgZnJhbWUgYnVmZmVyIG9mIHNvbWUgdmlkZW8gaGFyZHdhcmUgYW5kIGFsbG93cyBhcHBsaWNhdGlvbgorc29mdHdhcmUgdG8gYWNjZXNzIHRoZSBncmFwaGljcyBoYXJkd2FyZSB0aHJvdWdoIGEgd2VsbC1kZWZpbmVkIGludGVyZmFjZSwgc28KK3RoZSBzb2Z0d2FyZSBkb2Vzbid0IG5lZWQgdG8ga25vdyBhbnl0aGluZyBhYm91dCB0aGUgbG93LWxldmVsIChoYXJkd2FyZQorcmVnaXN0ZXIpIHN0dWZmLgorCitUaGUgZGV2aWNlIGlzIGFjY2Vzc2VkIHRocm91Z2ggc3BlY2lhbCBkZXZpY2Ugbm9kZXMsIHVzdWFsbHkgbG9jYXRlZCBpbiB0aGUKKy9kZXYgZGlyZWN0b3J5LCBpLmUuIC9kZXYvZmIqLgorCisKKzEuIFVzZXIncyBWaWV3IG9mIC9kZXYvZmIqCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGcm9tIHRoZSB1c2VyJ3MgcG9pbnQgb2YgdmlldywgdGhlIGZyYW1lIGJ1ZmZlciBkZXZpY2UgbG9va3MganVzdCBsaWtlIGFueQorb3RoZXIgZGV2aWNlIGluIC9kZXYuIEl0J3MgYSBjaGFyYWN0ZXIgZGV2aWNlIHVzaW5nIG1ham9yIDI5OyB0aGUgbWlub3IKK3NwZWNpZmllcyB0aGUgZnJhbWUgYnVmZmVyIG51bWJlci4KKworQnkgY29udmVudGlvbiwgdGhlIGZvbGxvd2luZyBkZXZpY2Ugbm9kZXMgYXJlIHVzZWQgKG51bWJlcnMgaW5kaWNhdGUgdGhlIGRldmljZQorbWlub3IgbnVtYmVycyk6CisKKyAgICAgIDAgPSAvZGV2L2ZiMAlGaXJzdCBmcmFtZSBidWZmZXIKKyAgICAgIDEgPSAvZGV2L2ZiMQlTZWNvbmQgZnJhbWUgYnVmZmVyCisJICAuLi4KKyAgICAgMzEgPSAvZGV2L2ZiMzEJMzJuZCBmcmFtZSBidWZmZXIKKworRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB5b3UgbWF5IHdhbnQgdG8gY3JlYXRlIHRoZSBmb2xsb3dpbmcgc3ltYm9saWMKK2xpbmtzOgorCisgICAgL2Rldi9mYjBjdXJyZW50IC0+IGZiMAorICAgIC9kZXYvZmIxY3VycmVudCAtPiBmYjEKKworYW5kIHNvIG9uLi4uCisKK1RoZSBmcmFtZSBidWZmZXIgZGV2aWNlcyBhcmUgYWxzbyBgbm9ybWFsJyBtZW1vcnkgZGV2aWNlcywgdGhpcyBtZWFucywgeW91IGNhbgorcmVhZCBhbmQgd3JpdGUgdGhlaXIgY29udGVudHMuIFlvdSBjYW4sIGZvciBleGFtcGxlLCBtYWtlIGEgc2NyZWVuIHNuYXBzaG90IGJ5CisKKyAgY3AgL2Rldi9mYjAgbXlmaWxlCisKK1RoZXJlIGFsc28gY2FuIGJlIG1vcmUgdGhhbiBvbmUgZnJhbWUgYnVmZmVyIGF0IGEgdGltZSwgZS5nLiBpZiB5b3UgaGF2ZSBhCitncmFwaGljcyBjYXJkIGluIGFkZGl0aW9uIHRvIHRoZSBidWlsdC1pbiBoYXJkd2FyZS4gVGhlIGNvcnJlc3BvbmRpbmcgZnJhbWUKK2J1ZmZlciBkZXZpY2VzICgvZGV2L2ZiMCBhbmQgL2Rldi9mYjEgZXRjLikgd29yayBpbmRlcGVuZGVudGx5LgorCitBcHBsaWNhdGlvbiBzb2Z0d2FyZSB0aGF0IHVzZXMgdGhlIGZyYW1lIGJ1ZmZlciBkZXZpY2UgKGUuZy4gdGhlIFggc2VydmVyKSB3aWxsCit1c2UgL2Rldi9mYjAgYnkgZGVmYXVsdCAob2xkZXIgc29mdHdhcmUgdXNlcyAvZGV2L2ZiMGN1cnJlbnQpLiBZb3UgY2FuIHNwZWNpZnkKK2FuIGFsdGVybmF0aXZlIGZyYW1lIGJ1ZmZlciBkZXZpY2UgYnkgc2V0dGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKKyRGUkFNRUJVRkZFUiB0byB0aGUgcGF0aCBuYW1lIG9mIGEgZnJhbWUgYnVmZmVyIGRldmljZSwgZS5nLiAoZm9yIHNoL2Jhc2gKK3VzZXJzKToKKworICAgIGV4cG9ydCBGUkFNRUJVRkZFUj0vZGV2L2ZiMQorCitvciAoZm9yIGNzaCB1c2Vycyk6CisKKyAgICBzZXRlbnYgRlJBTUVCVUZGRVIgL2Rldi9mYjEKKworQWZ0ZXIgdGhpcyB0aGUgWCBzZXJ2ZXIgd2lsbCB1c2UgdGhlIHNlY29uZCBmcmFtZSBidWZmZXIuCisKKworMi4gUHJvZ3JhbW1lcidzIFZpZXcgb2YgL2Rldi9mYioKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FzIHlvdSBhbHJlYWR5IGtub3csIGEgZnJhbWUgYnVmZmVyIGRldmljZSBpcyBhIG1lbW9yeSBkZXZpY2UgbGlrZSAvZGV2L21lbSBhbmQKK2l0IGhhcyB0aGUgc2FtZSBmZWF0dXJlcy4gWW91IGNhbiByZWFkIGl0LCB3cml0ZSBpdCwgc2VlayB0byBzb21lIGxvY2F0aW9uIGluCitpdCBhbmQgbW1hcCgpIGl0ICh0aGUgbWFpbiB1c2FnZSkuIFRoZSBkaWZmZXJlbmNlIGlzIGp1c3QgdGhhdCB0aGUgbWVtb3J5IHRoYXQKK2FwcGVhcnMgaW4gdGhlIHNwZWNpYWwgZmlsZSBpcyBub3QgdGhlIHdob2xlIG1lbW9yeSwgYnV0IHRoZSBmcmFtZSBidWZmZXIgb2YKK3NvbWUgdmlkZW8gaGFyZHdhcmUuCisKKy9kZXYvZmIqIGFsc28gYWxsb3dzIHNldmVyYWwgaW9jdGxzIG9uIGl0LCBieSB3aGljaCBsb3RzIG9mIGluZm9ybWF0aW9uIGFib3V0Cit0aGUgaGFyZHdhcmUgY2FuIGJlIHF1ZXJpZWQgYW5kIHNldC4gVGhlIGNvbG9yIG1hcCBoYW5kbGluZyB3b3JrcyB2aWEgaW9jdGxzLAordG9vLiBMb29rIGludG8gPGxpbnV4L2ZiLmg+IGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHdoYXQgaW9jdGxzIGV4aXN0IGFuZCBvbgord2hpY2ggZGF0YSBzdHJ1Y3R1cmVzIHRoZXkgd29yay4gSGVyZSdzIGp1c3QgYSBicmllZiBvdmVydmlldzoKKworICAtIFlvdSBjYW4gcmVxdWVzdCB1bmNoYW5nZWFibGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGhhcmR3YXJlLCBsaWtlIG5hbWUsCisgICAgb3JnYW5pemF0aW9uIG9mIHRoZSBzY3JlZW4gbWVtb3J5IChwbGFuZXMsIHBhY2tlZCBwaXhlbHMsIC4uLikgYW5kIGFkZHJlc3MKKyAgICBhbmQgbGVuZ3RoIG9mIHRoZSBzY3JlZW4gbWVtb3J5LgorCisgIC0gWW91IGNhbiByZXF1ZXN0IGFuZCBjaGFuZ2UgdmFyaWFibGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGhhcmR3YXJlLCBsaWtlCisgICAgdmlzaWJsZSBhbmQgdmlydHVhbCBnZW9tZXRyeSwgZGVwdGgsIGNvbG9yIG1hcCBmb3JtYXQsIHRpbWluZywgYW5kIHNvIG9uLgorICAgIElmIHlvdSB0cnkgdG8gY2hhbmdlIHRoYXQgaW5mb3JtYXRpb24sIHRoZSBkcml2ZXIgbWF5YmUgd2lsbCByb3VuZCB1cCBzb21lCisgICAgdmFsdWVzIHRvIG1lZXQgdGhlIGhhcmR3YXJlJ3MgY2FwYWJpbGl0aWVzIChvciByZXR1cm4gRUlOVkFMIGlmIHRoYXQgaXNuJ3QKKyAgICBwb3NzaWJsZSkuCisKKyAgLSBZb3UgY2FuIGdldCBhbmQgc2V0IHBhcnRzIG9mIHRoZSBjb2xvciBtYXAuIENvbW11bmljYXRpb24gaXMgZG9uZSB3aXRoIDE2CisgICAgYml0cyBwZXIgY29sb3IgcGFydCAocmVkLCBncmVlbiwgYmx1ZSwgdHJhbnNwYXJlbmN5KSB0byBzdXBwb3J0IGFsbCAKKyAgICBleGlzdGluZyBoYXJkd2FyZS4gVGhlIGRyaXZlciBkb2VzIGFsbCB0aGUgY29tcHV0YXRpb25zIG5lZWRlZCB0byBhcHBseSAKKyAgICBpdCB0byB0aGUgaGFyZHdhcmUgKHJvdW5kIGl0IGRvd24gdG8gbGVzcyBiaXRzLCBtYXliZSB0aHJvdyBhd2F5IAorICAgIHRyYW5zcGFyZW5jeSkuCisKK0FsbCB0aGlzIGhhcmR3YXJlIGFic3RyYWN0aW9uIG1ha2VzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBhcHBsaWNhdGlvbiBwcm9ncmFtcworZWFzaWVyIGFuZCBtb3JlIHBvcnRhYmxlLiBFLmcuIHRoZSBYIHNlcnZlciB3b3JrcyBjb21wbGV0ZWx5IG9uIC9kZXYvZmIqIGFuZAordGh1cyBkb2Vzbid0IG5lZWQgdG8ga25vdywgZm9yIGV4YW1wbGUsIGhvdyB0aGUgY29sb3IgcmVnaXN0ZXJzIG9mIHRoZSBjb25jcmV0ZQoraGFyZHdhcmUgYXJlIG9yZ2FuaXplZC4gWEY2OF9GQkRldiBpcyBhIGdlbmVyYWwgWCBzZXJ2ZXIgZm9yIGJpdG1hcHBlZCwKK3VuYWNjZWxlcmF0ZWQgdmlkZW8gaGFyZHdhcmUuIFRoZSBvbmx5IHRoaW5nIHRoYXQgaGFzIHRvIGJlIGJ1aWx0IGludG8KK2FwcGxpY2F0aW9uIHByb2dyYW1zIGlzIHRoZSBzY3JlZW4gb3JnYW5pemF0aW9uIChiaXRwbGFuZXMgb3IgY2h1bmt5IHBpeGVscworZXRjLiksIGJlY2F1c2UgaXQgd29ya3Mgb24gdGhlIGZyYW1lIGJ1ZmZlciBpbWFnZSBkYXRhIGRpcmVjdGx5LgorCitGb3IgdGhlIGZ1dHVyZSBpdCBpcyBwbGFubmVkIHRoYXQgZnJhbWUgYnVmZmVyIGRyaXZlcnMgZm9yIGdyYXBoaWNzIGNhcmRzIGFuZAordGhlIGxpa2UgY2FuIGJlIGltcGxlbWVudGVkIGFzIGtlcm5lbCBtb2R1bGVzIHRoYXQgYXJlIGxvYWRlZCBhdCBydW50aW1lLiBTdWNoCithIGRyaXZlciBqdXN0IGhhcyB0byBjYWxsIHJlZ2lzdGVyX2ZyYW1lYnVmZmVyKCkgYW5kIHN1cHBseSBzb21lIGZ1bmN0aW9ucy4KK1dyaXRpbmcgYW5kIGRpc3RyaWJ1dGluZyBzdWNoIGRyaXZlcnMgaW5kZXBlbmRlbnRseSBmcm9tIHRoZSBrZXJuZWwgd2lsbCBzYXZlCittdWNoIHRyb3VibGUuLi4KKworCiszLiBGcmFtZSBCdWZmZXIgUmVzb2x1dGlvbiBNYWludGVuYW5jZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRnJhbWUgYnVmZmVyIHJlc29sdXRpb25zIGFyZSBtYWludGFpbmVkIHVzaW5nIHRoZSB1dGlsaXR5IGBmYnNldCcuIEl0IGNhbgorY2hhbmdlIHRoZSB2aWRlbyBtb2RlIHByb3BlcnRpZXMgb2YgYSBmcmFtZSBidWZmZXIgZGV2aWNlLiBJdHMgbWFpbiB1c2FnZSBpcwordG8gY2hhbmdlIHRoZSBjdXJyZW50IHZpZGVvIG1vZGUsIGUuZy4gZHVyaW5nIGJvb3QgdXAgaW4gb25lIG9mIHlvdXIgL2V0Yy9yYy4qCitvciAvZXRjL2luaXQuZC8qIGZpbGVzLgorCitGYnNldCB1c2VzIGEgdmlkZW8gbW9kZSBkYXRhYmFzZSBzdG9yZWQgaW4gYSBjb25maWd1cmF0aW9uIGZpbGUsIHNvIHlvdSBjYW4KK2Vhc2lseSBhZGQgeW91ciBvd24gbW9kZXMgYW5kIHJlZmVyIHRvIHRoZW0gd2l0aCBhIHNpbXBsZSBpZGVudGlmaWVyLgorCisKKzQuIFRoZSBYIFNlcnZlcgorLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBYIHNlcnZlciAoWEY2OF9GQkRldikgaXMgdGhlIG1vc3Qgbm90YWJsZSBhcHBsaWNhdGlvbiBwcm9ncmFtIGZvciB0aGUgZnJhbWUKK2J1ZmZlciBkZXZpY2UuIFN0YXJ0aW5nIHdpdGggWEZyZWU4NiByZWxlYXNlIDMuMiwgdGhlIFggc2VydmVyIGlzIHBhcnQgb2YKK1hGcmVlODYgYW5kIGhhcyAyIG1vZGVzOgorCisgIC0gSWYgdGhlIGBEaXNwbGF5JyBzdWJzZWN0aW9uIGZvciB0aGUgYGZiZGV2JyBkcml2ZXIgaW4gdGhlIC9ldGMvWEY4NkNvbmZpZworICAgIGZpbGUgY29udGFpbnMgYQorCisJTW9kZXMgImRlZmF1bHQiCisKKyAgICBsaW5lLCB0aGUgWCBzZXJ2ZXIgd2lsbCB1c2UgdGhlIHNjaGVtZSBkaXNjdXNzZWQgYWJvdmUsIGkuZS4gaXQgd2lsbCBzdGFydAorICAgIHVwIGluIHRoZSByZXNvbHV0aW9uIGRldGVybWluZWQgYnkgL2Rldi9mYjAgKG9yICRGUkFNRUJVRkZFUiwgaWYgc2V0KS4gWW91CisgICAgc3RpbGwgaGF2ZSB0byBzcGVjaWZ5IHRoZSBjb2xvciBkZXB0aCAodXNpbmcgdGhlIERlcHRoIGtleXdvcmQpIGFuZCB2aXJ0dWFsCisgICAgcmVzb2x1dGlvbiAodXNpbmcgdGhlIFZpcnR1YWwga2V5d29yZCkgdGhvdWdoLiBUaGlzIGlzIHRoZSBkZWZhdWx0IGZvciB0aGUKKyAgICBjb25maWd1cmF0aW9uIGZpbGUgc3VwcGxpZWQgd2l0aCBYRnJlZTg2LiBJdCdzIHRoZSBtb3N0IHNpbXBsZQorICAgIGNvbmZpZ3VyYXRpb24sIGJ1dCBpdCBoYXMgc29tZSBsaW1pdGF0aW9ucy4KKworICAtIFRoZXJlZm9yZSBpdCdzIGFsc28gcG9zc2libGUgdG8gc3BlY2lmeSByZXNvbHV0aW9ucyBpbiB0aGUgL2V0Yy9YRjg2Q29uZmlnCisgICAgZmlsZS4gVGhpcyBhbGxvd3MgZm9yIG9uLXRoZS1mbHkgcmVzb2x1dGlvbiBzd2l0Y2hpbmcgd2hpbGUgcmV0YWluaW5nIHRoZQorICAgIHNhbWUgdmlydHVhbCBkZXNrdG9wIHNpemUuIFRoZSBmcmFtZSBidWZmZXIgZGV2aWNlIHRoYXQncyB1c2VkIGlzIHN0aWxsCisgICAgL2Rldi9mYjBjdXJyZW50IChvciAkRlJBTUVCVUZGRVIpLCBidXQgdGhlIGF2YWlsYWJsZSByZXNvbHV0aW9ucyBhcmUKKyAgICBkZWZpbmVkIGJ5IC9ldGMvWEY4NkNvbmZpZyBub3cuIFRoZSBkaXNhZHZhbnRhZ2UgaXMgdGhhdCB5b3UgaGF2ZSB0bworICAgIHNwZWNpZnkgdGhlIHRpbWluZ3MgaW4gYSBkaWZmZXJlbnQgZm9ybWF0IChidXQgYGZic2V0IC14JyBtYXkgaGVscCkuCisKK1RvIHR1bmUgYSB2aWRlbyBtb2RlLCB5b3UgY2FuIHVzZSBmYnNldCBvciB4dmlkdHVuZS4gTm90ZSB0aGF0IHh2aWR0dW5lIGRvZXNuJ3QKK3dvcmsgMTAwJSB3aXRoIFhGNjhfRkJEZXY6IHRoZSByZXBvcnRlZCBjbG9jayB2YWx1ZXMgYXJlIGFsd2F5cyBpbmNvcnJlY3QuCisKKworNS4gVmlkZW8gTW9kZSBUaW1pbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSBtb25pdG9yIGRyYXdzIGFuIGltYWdlIG9uIHRoZSBzY3JlZW4gYnkgdXNpbmcgYW4gZWxlY3Ryb24gYmVhbSAoMyBlbGVjdHJvbgorYmVhbXMgZm9yIGNvbG9yIG1vZGVscywgMSBlbGVjdHJvbiBiZWFtIGZvciBtb25vY2hyb21lIG1vbml0b3JzKS4gVGhlIGZyb250IG9mCit0aGUgc2NyZWVuIGlzIGNvdmVyZWQgYnkgYSBwYXR0ZXJuIG9mIGNvbG9yZWQgcGhvc3Bob3JzIChwaXhlbHMpLiBJZiBhIHBob3NwaG9yCitpcyBoaXQgYnkgYW4gZWxlY3Ryb24sIGl0IGVtaXRzIGEgcGhvdG9uIGFuZCB0aHVzIGJlY29tZXMgdmlzaWJsZS4KKworVGhlIGVsZWN0cm9uIGJlYW0gZHJhd3MgaG9yaXpvbnRhbCBsaW5lcyAoc2NhbmxpbmVzKSBmcm9tIGxlZnQgdG8gcmlnaHQsIGFuZAorZnJvbSB0aGUgdG9wIHRvIHRoZSBib3R0b20gb2YgdGhlIHNjcmVlbi4gQnkgbW9kaWZ5aW5nIHRoZSBpbnRlbnNpdHkgb2YgdGhlCitlbGVjdHJvbiBiZWFtLCBwaXhlbHMgd2l0aCB2YXJpb3VzIGNvbG9ycyBhbmQgaW50ZW5zaXRpZXMgY2FuIGJlIHNob3duLgorCitBZnRlciBlYWNoIHNjYW5saW5lIHRoZSBlbGVjdHJvbiBiZWFtIGhhcyB0byBtb3ZlIGJhY2sgdG8gdGhlIGxlZnQgc2lkZSBvZiB0aGUKK3NjcmVlbiBhbmQgdG8gdGhlIG5leHQgbGluZTogdGhpcyBpcyBjYWxsZWQgdGhlIGhvcml6b250YWwgcmV0cmFjZS4gQWZ0ZXIgdGhlCit3aG9sZSBzY3JlZW4gKGZyYW1lKSB3YXMgcGFpbnRlZCwgdGhlIGJlYW0gbW92ZXMgYmFjayB0byB0aGUgdXBwZXIgbGVmdCBjb3JuZXI6Cit0aGlzIGlzIGNhbGxlZCB0aGUgdmVydGljYWwgcmV0cmFjZS4gRHVyaW5nIGJvdGggdGhlIGhvcml6b250YWwgYW5kIHZlcnRpY2FsCityZXRyYWNlLCB0aGUgZWxlY3Ryb24gYmVhbSBpcyB0dXJuZWQgb2ZmIChibGFua2VkKS4KKworVGhlIHNwZWVkIGF0IHdoaWNoIHRoZSBlbGVjdHJvbiBiZWFtIHBhaW50cyB0aGUgcGl4ZWxzIGlzIGRldGVybWluZWQgYnkgdGhlCitkb3RjbG9jayBpbiB0aGUgZ3JhcGhpY3MgYm9hcmQuIEZvciBhIGRvdGNsb2NrIG9mIGUuZy4gMjguMzc1MTYgTUh6IChtaWxsaW9ucworb2YgY3ljbGVzIHBlciBzZWNvbmQpLCBlYWNoIHBpeGVsIGlzIDM1MjQyIHBzIChwaWNvc2Vjb25kcykgbG9uZzoKKworICAgIDEvKDI4LjM3NTE2RTYgSHopID0gMzUuMjQyRS05IHMKKworSWYgdGhlIHNjcmVlbiByZXNvbHV0aW9uIGlzIDY0MHg0ODAsIGl0IHdpbGwgdGFrZQorCisgICAgNjQwKjM1LjI0MkUtOSBzID0gMjIuNTU1RS02IHMKKwordG8gcGFpbnQgdGhlIDY0MCAoeHJlcykgcGl4ZWxzIG9uIG9uZSBzY2FubGluZS4gQnV0IHRoZSBob3Jpem9udGFsIHJldHJhY2UKK2Fsc28gdGFrZXMgdGltZSAoZS5nLiAyNzIgYHBpeGVscycpLCBzbyBhIGZ1bGwgc2NhbmxpbmUgdGFrZXMKKworICAgICg2NDArMjcyKSozNS4yNDJFLTkgcyA9IDMyLjE0MUUtNiBzCisKK1dlJ2xsIHNheSB0aGF0IHRoZSBob3Jpem9udGFsIHNjYW5yYXRlIGlzIGFib3V0IDMxIGtIejoKKworICAgIDEvKDMyLjE0MUUtNiBzKSA9IDMxLjExM0UzIEh6CisKK0EgZnVsbCBzY3JlZW4gY291bnRzIDQ4MCAoeXJlcykgbGluZXMsIGJ1dCB3ZSBoYXZlIHRvIGNvbnNpZGVyIHRoZSB2ZXJ0aWNhbAorcmV0cmFjZSB0b28gKGUuZy4gNDkgYGxpbmVzJykuIFNvIGEgZnVsbCBzY3JlZW4gd2lsbCB0YWtlCisKKyAgICAoNDgwKzQ5KSozMi4xNDFFLTYgcyA9IDE3LjAwMkUtMyBzCisKK1RoZSB2ZXJ0aWNhbCBzY2FucmF0ZSBpcyBhYm91dCA1OSBIejoKKworICAgIDEvKDE3LjAwMkUtMyBzKSA9IDU4LjgxNSBIegorCitUaGlzIG1lYW5zIHRoZSBzY3JlZW4gZGF0YSBpcyByZWZyZXNoZWQgYWJvdXQgNTkgdGltZXMgcGVyIHNlY29uZC4gVG8gaGF2ZSBhCitzdGFibGUgcGljdHVyZSB3aXRob3V0IHZpc2libGUgZmxpY2tlciwgVkVTQSByZWNvbW1lbmRzIGEgdmVydGljYWwgc2NhbnJhdGUgb2YKK2F0IGxlYXN0IDcyIEh6LiBCdXQgdGhlIHBlcmNlaXZlZCBmbGlja2VyIGlzIHZlcnkgaHVtYW4gZGVwZW5kZW50OiBzb21lIHBlb3BsZQorY2FuIHVzZSA1MCBIeiB3aXRob3V0IGFueSB0cm91YmxlLCB3aGlsZSBJJ2xsIG5vdGljZSBpZiBpdCdzIGxlc3MgdGhhbiA4MCBIei4KKworU2luY2UgdGhlIG1vbml0b3IgZG9lc24ndCBrbm93IHdoZW4gYSBuZXcgc2NhbmxpbmUgc3RhcnRzLCB0aGUgZ3JhcGhpY3MgYm9hcmQKK3dpbGwgc3VwcGx5IGEgc3luY2hyb25pemF0aW9uIHB1bHNlIChob3Jpem9udGFsIHN5bmMgb3IgaHN5bmMpIGZvciBlYWNoCitzY2FubGluZS4gIFNpbWlsYXJseSBpdCBzdXBwbGllcyBhIHN5bmNocm9uaXphdGlvbiBwdWxzZSAodmVydGljYWwgc3luYyBvcgordnN5bmMpIGZvciBlYWNoIG5ldyBmcmFtZS4gVGhlIHBvc2l0aW9uIG9mIHRoZSBpbWFnZSBvbiB0aGUgc2NyZWVuIGlzCitpbmZsdWVuY2VkIGJ5IHRoZSBtb21lbnRzIGF0IHdoaWNoIHRoZSBzeW5jaHJvbml6YXRpb24gcHVsc2VzIG9jY3VyLgorCitUaGUgZm9sbG93aW5nIHBpY3R1cmUgc3VtbWFyaXplcyBhbGwgdGltaW5ncy4gVGhlIGhvcml6b250YWwgcmV0cmFjZSB0aW1lIGlzCit0aGUgc3VtIG9mIHRoZSBsZWZ0IG1hcmdpbiwgdGhlIHJpZ2h0IG1hcmdpbiBhbmQgdGhlIGhzeW5jIGxlbmd0aCwgd2hpbGUgdGhlCit2ZXJ0aWNhbCByZXRyYWNlIHRpbWUgaXMgdGhlIHN1bSBvZiB0aGUgdXBwZXIgbWFyZ2luLCB0aGUgbG93ZXIgbWFyZ2luIGFuZCB0aGUKK3ZzeW5jIGxlbmd0aC4KKworICArLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tKworICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICB8CisgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgICB8dXBwZXJfbWFyZ2luICAgICAgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICB8CisgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgICDihpMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgIHwKKyAgKy0tLS0tLS0tLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy0tLS0tLS0tLS0rLS0tLS0tLSsKKyAgfCAgICAgICAgICAjICAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIHwgICAgICAgfAorICB8ICAgICAgICAgICMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIHwgICAgICAgfAorICB8ICAgICAgICAgICMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIHwgICAgICAgfAorICB8ICAgICAgICAgICMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIHwgICAgICAgfAorICB8ICAgbGVmdCAgICMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICByaWdodCAgIHwgaHN5bmMgfAorICB8ICBtYXJnaW4gICMgICAgICAgICAgICAgICAgfCAgICAgICB4cmVzICAgICAgICAgICAgICAgICAjICBtYXJnaW4gIHwgIGxlbiAgfAorICB8PC0tLS0tLS0tPiM8LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4jPC0tLS0tLS0tPnw8LS0tLS0+fAorICB8ICAgICAgICAgICMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIHwgICAgICAgfAorICB8ICAgICAgICAgICMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIHwgICAgICAgfAorICB8ICAgICAgICAgICMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIHwgICAgICAgfAorICB8ICAgICAgICAgICMgICAgICAgICAgICAgICAgfHlyZXMgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIHwgICAgICAgfAorICB8ICAgICAgICAgICMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIHwgICAgICAgfAorICB8ICAgICAgICAgICMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIHwgICAgICAgfAorICB8ICAgICAgICAgICMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIHwgICAgICAgfAorICB8ICAgICAgICAgICMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIHwgICAgICAgfAorICB8ICAgICAgICAgICMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIHwgICAgICAgfAorICB8ICAgICAgICAgICMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIHwgICAgICAgfAorICB8ICAgICAgICAgICMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIHwgICAgICAgfAorICB8ICAgICAgICAgICMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgICAgICAgIHwgICAgICAgfAorICB8ICAgICAgICAgICMgICAgICAgICAgICAgICAg4oaTICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgfCAgICAgICB8CisgICstLS0tLS0tLS0tIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLS0tLS0tLS0tKy0tLS0tLS0rCisgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgIHxsb3dlcl9tYXJnaW4gICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgIHwKKyAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgIOKGkyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgfAorICArLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tKworICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICB8CisgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgICB8dnN5bmNfbGVuICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICB8CisgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgICDihpMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgIHwKKyAgKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLSsKKworVGhlIGZyYW1lIGJ1ZmZlciBkZXZpY2UgZXhwZWN0cyBhbGwgaG9yaXpvbnRhbCB0aW1pbmdzIGluIG51bWJlciBvZiBkb3RjbG9ja3MKKyhpbiBwaWNvc2Vjb25kcywgMUUtMTIgcyksIGFuZCB2ZXJ0aWNhbCB0aW1pbmdzIGluIG51bWJlciBvZiBzY2FubGluZXMuCisKKworNi4gQ29udmVydGluZyBYRnJlZTg2IHRpbWluZyB2YWx1ZXMgaW5mbyBmcmFtZSBidWZmZXIgZGV2aWNlIHRpbWluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FuIFhGcmVlODYgbW9kZSBsaW5lIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcgZmllbGRzOgorICI4MDB4NjAwIiAgICAgNTAgICAgICA4MDAgIDg1NiAgOTc2IDEwNDAgICAgNjAwICA2MzcgIDY0MyAgNjY2CisgPCBuYW1lID4gICAgIERDRiAgICAgICBIUiAgU0gxICBTSDIgIEhGTCAgICAgVlIgIFNWMSAgU1YyICBWRkwKKworVGhlIGZyYW1lIGJ1ZmZlciBkZXZpY2UgdXNlcyB0aGUgZm9sbG93aW5nIGZpZWxkczoKKworICAtIHBpeGNsb2NrOiBwaXhlbCBjbG9jayBpbiBwcyAocGljbyBzZWNvbmRzKQorICAtIGxlZnRfbWFyZ2luOiB0aW1lIGZyb20gc3luYyB0byBwaWN0dXJlCisgIC0gcmlnaHRfbWFyZ2luOiB0aW1lIGZyb20gcGljdHVyZSB0byBzeW5jCisgIC0gdXBwZXJfbWFyZ2luOiB0aW1lIGZyb20gc3luYyB0byBwaWN0dXJlCisgIC0gbG93ZXJfbWFyZ2luOiB0aW1lIGZyb20gcGljdHVyZSB0byBzeW5jCisgIC0gaHN5bmNfbGVuOiBsZW5ndGggb2YgaG9yaXpvbnRhbCBzeW5jCisgIC0gdnN5bmNfbGVuOiBsZW5ndGggb2YgdmVydGljYWwgc3luYworCisxKSBQaXhlbGNsb2NrOgorICAgeGZyZWU6IGluIE1IegorICAgZmI6IGluIHBpY29zZWNvbmRzIChwcykKKworICAgcGl4Y2xvY2sgPSAxMDAwMDAwIC8gRENGCisKKzIpIGhvcml6b250YWwgdGltaW5nczoKKyAgIGxlZnRfbWFyZ2luID0gSEZMIC0gU0gyCisgICByaWdodF9tYXJnaW4gPSBTSDEgLSBIUgorICAgaHN5bmNfbGVuID0gU0gyIC0gU0gxCisKKzMpIHZlcnRpY2FsIHRpbWluZ3M6CisgICB1cHBlcl9tYXJnaW4gPSBWRkwgLSBTVjIKKyAgIGxvd2VyX21hcmdpbiA9IFNWMSAtIFZSCisgICB2c3luY19sZW4gPSBTVjIgLSBTVjEKKworR29vZCBleGFtcGxlcyBmb3IgVkVTQSB0aW1pbmdzIGNhbiBiZSBmb3VuZCBpbiB0aGUgWEZyZWU4NiBzb3VyY2UgdHJlZSwKK3VuZGVyICJ4Yy9wcm9ncmFtcy9Yc2VydmVyL2h3L3hmcmVlODYvZG9jL21vZGVEQi50eHQiLgorCisKKzcuIFJlZmVyZW5jZXMKKy0tLS0tLS0tLS0tLS0KKworRm9yIG1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZyYW1lIGJ1ZmZlciBkZXZpY2UgYW5kIGl0cworYXBwbGljYXRpb25zLCBwbGVhc2UgcmVmZXIgdG8gdGhlIExpbnV4LWZiZGV2IHdlYnNpdGU6CisKKyAgICBodHRwOi8vbGludXgtZmJkZXYuc291cmNlZm9yZ2UubmV0LworCithbmQgdG8gdGhlIGZvbGxvd2luZyBkb2N1bWVudGF0aW9uOgorCisgIC0gVGhlIG1hbnVhbCBwYWdlcyBmb3IgZmJzZXQ6IGZic2V0KDgpLCBmYi5tb2Rlcyg1KQorICAtIFRoZSBtYW51YWwgcGFnZXMgZm9yIFhGcmVlODY6IFhGNjhfRkJEZXYoMSksIFhGODZDb25maWcoNC81KQorICAtIFRoZSBtaWdodHkga2VybmVsIHNvdXJjZXM6CisgICAgICBvIGxpbnV4L2RyaXZlcnMvdmlkZW8vCisgICAgICBvIGxpbnV4L2luY2x1ZGUvbGludXgvZmIuaAorICAgICAgbyBsaW51eC9pbmNsdWRlL3ZpZGVvLworCisKKworOC4gTWFpbGluZyBsaXN0CistLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgaXMgYSBmcmFtZSBidWZmZXIgZGV2aWNlIHJlbGF0ZWQgbWFpbGluZyBsaXN0IGF0IGtlcm5lbC5vcmc6CitsaW51eC1mYmRldkB2Z2VyLmtlcm5lbC5vcmcuCisKK1BvaW50IHlvdXIgd2ViIGJyb3dzZXIgdG8gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saW51eC1mYmRldi8gZm9yCitzdWJzY3JpcHRpb24gaW5mb3JtYXRpb24gYW5kIGFyY2hpdmUgYnJvd3NpbmcuCisKKworOS4gRG93bmxvYWRpbmcKKy0tLS0tLS0tLS0tLS0tCisKK0FsbCBuZWNlc3NhcnkgZmlsZXMgY2FuIGJlIGZvdW5kIGF0CisKKyAgICBmdHA6Ly9mdHAudW5pLWVybGFuZ2VuLmRlL3B1Yi9MaW51eC9MT0NBTC82ODB4MC8KKworYW5kIG9uIGl0cyBtaXJyb3JzLgorCitUaGUgbGF0ZXN0IHZlcnNpb24gb2YgZmJzZXQgY2FuIGJlIGZvdW5kIGF0CisKKyAgICBodHRwOi8vd3d3LmxpbnV4LWZiZGV2Lm9yZy8gCisKKyAgCisxMC4gQ3JlZGl0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgCitUaGlzIHJlYWRtZSB3YXMgd3JpdHRlbiBieSBHZWVydCBVeXR0ZXJob2V2ZW4sIHBhcnRseSBiYXNlZCBvbiB0aGUgb3JpZ2luYWwKK2BYLWZyYW1lYnVmZmVyLlJFQURNRScgYnkgUm9tYW4gSG9kZWsgYW5kIE1hcnRpbiBTY2hhbGxlci4gU2VjdGlvbiA2IHdhcworcHJvdmlkZWQgYnkgRnJhbmsgTmV1bWFubi4KKworVGhlIGZyYW1lIGJ1ZmZlciBkZXZpY2UgYWJzdHJhY3Rpb24gd2FzIGRlc2lnbmVkIGJ5IE1hcnRpbiBTY2hhbGxlci4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvZ3hmYi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZiL2d4ZmIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmNjQwOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZiL2d4ZmIudHh0CkBAIC0wLDAgKzEsNTIgQEAKK1tUaGlzIGZpbGUgaXMgY2xvbmVkIGZyb20gVmVzYUZCL2F0eTEyOGZiXQorCitXaGF0IGlzIGd4ZmI/Cis9PT09PT09PT09PT09PT09PQorCitUaGlzIGlzIGEgZ3JhcGhpY3MgZnJhbWVidWZmZXIgZHJpdmVyIGZvciBBTUQgR2VvZGUgR1gyIGJhc2VkIHByb2Nlc3NvcnMuCisKK0FkdmFudGFnZXM6CisKKyAqIE5vIG5lZWQgdG8gdXNlIEFNRCdzIFZTQSBjb2RlIChvciBvdGhlciBWRVNBIGVtdWxhdGlvbiBsYXllcikgaW4gdGhlCisgICBCSU9TLgorICogSXQgcHJvdmlkZXMgYSBuaWNlIGxhcmdlIGNvbnNvbGUgKDEyOCBjb2xzICsgNDggbGluZXMgd2l0aCAxMDI0eDc2OCkKKyAgIHdpdGhvdXQgdXNpbmcgdGlueSwgdW5yZWFkYWJsZSBmb250cy4KKyAqIFlvdSBjYW4gcnVuIFhGNjhfRkJEZXYgb24gdG9wIG9mIC9kZXYvZmIwCisgKiBNb3N0IGltcG9ydGFudDogYm9vdCBsb2dvIDotKQorCitEaXNhZHZhbnRhZ2VzOgorCisgKiBncmFwaGljIG1vZGUgaXMgc2xvd2VyIHRoYW4gdGV4dCBtb2RlLi4uCisKKworSG93IHRvIHVzZSBpdD8KKz09PT09PT09PT09PT09CisKK1N3aXRjaGluZyBtb2RlcyBpcyBkb25lIHVzaW5nICBneGZiLm1vZGVfb3B0aW9uPTxyZXNvbHV0aW9uPi4uLiBib290CitwYXJhbWV0ZXIgb3IgdXNpbmcgYGZic2V0JyBwcm9ncmFtLgorCitTZWUgRG9jdW1lbnRhdGlvbi9mYi9tb2RlZGIudHh0IGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIG1vZGVkYgorcmVzb2x1dGlvbnMuCisKKworWDExCis9PT0KKworWEY2OF9GQkRldiBzaG91bGQgZ2VuZXJhbGx5IHdvcmsgZmluZSwgYnV0IGl0IGlzIG5vbi1hY2NlbGVyYXRlZC4KKworCitDb25maWd1cmF0aW9uCis9PT09PT09PT09PT09CisKK1lvdSBjYW4gcGFzcyBrZXJuZWwgY29tbWFuZCBsaW5lIG9wdGlvbnMgdG8gZ3hmYiB3aXRoIGd4ZmIuPG9wdGlvbj4uCitGb3IgZXhhbXBsZSwgZ3hmYi5tb2RlX29wdGlvbj04MDB4NjAwQDc1LgorQWNjZXB0ZWQgb3B0aW9uczoKKworbW9kZV9vcHRpb24JLSBzcGVjaWZ5IHRoZSB2aWRlbyBtb2RlLiAgT2YgdGhlIGZvcm0KKwkJICA8eD54PHk+Wy08YnBwPl1bQDxyZWZyZXNoPl0KK3ZyYW0JCS0gc2l6ZSBvZiB2aWRlbyByYW0gKG5vcm1hbGx5IGF1dG8tZGV0ZWN0ZWQpCit2dF9zd2l0Y2gJLSBlbmFibGUgdnQgc3dpdGNoaW5nIGR1cmluZyBzdXNwZW5kL3Jlc3VtZS4gIFRoZSB2dAorCQkgIHN3aXRjaCBpcyBzbG93LCBidXQgaGFybWxlc3MuCisKKy0tCitBbmRyZXMgU2Fsb21vbiA8ZGlsaW5nZXJAZGViaWFuLm9yZz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvaW50ZWw4MTAudHh0IGIvRG9jdW1lbnRhdGlvbi9mYi9pbnRlbDgxMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThlOWY1YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmIvaW50ZWw4MTAudHh0CkBAIC0wLDAgKzEsMjc4IEBACitJbnRlbCA4MTAvODE1IEZyYW1lYnVmZmVyIGRyaXZlcgorIAlUb255IERhcGxhcyA8YWRhcGxhc0Bwb2wubmV0PgorCWh0dHA6Ly9pODEwZmIuc291cmNlZm9yZ2UubmV0CisKKwlNYXJjaCAxNywgMjAwMgorCisJRmlyc3QgUmVsZWFzZWQ6IEp1bHkgMjAwMQorCUxhc3QgVXBkYXRlOiAgICBTZXB0ZW1iZXIgMTIsIDIwMDUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQS4gSW50cm9kdWN0aW9uCisKKwlUaGlzIGlzIGEgZnJhbWVidWZmZXIgZHJpdmVyIGZvciB2YXJpb3VzIEludGVsIDgxMC84MTUgY29tcGF0aWJsZQorCWdyYXBoaWNzIGRldmljZXMuICBUaGVzZSBpbmNsdWRlOgorCisJSW50ZWwgODEwCisJSW50ZWwgODEwRQorCUludGVsIDgxMC1EQzEwMAorCUludGVsIDgxNSBJbnRlcm5hbCBncmFwaGljcyBvbmx5LCAxMDBNaHogRlNCCisJSW50ZWwgODE1IEludGVybmFsIGdyYXBoaWNzIG9ubHkKKwlJbnRlbCA4MTUgSW50ZXJuYWwgZ3JhcGhpY3MgYW5kIEFHUAorCitCLiAgRmVhdHVyZXMKKworCS0gQ2hvaWNlIG9mIHVzaW5nIERpc2NyZXRlIFZpZGVvIFRpbWluZ3MsIFZFU0EgR2VuZXJhbGl6ZWQgVGltaW5nCisJICBGb3JtdWxhLCBvciBhIGZyYW1lYnVmZmVyIHNwZWNpZmljIGRhdGFiYXNlIHRvIHNldCB0aGUgdmlkZW8gbW9kZQorCisJLSBTdXBwb3J0cyBhIHZhcmlhYmxlIHJhbmdlIG9mIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIHJlc29sdXRpb24gYW5kCisJICB2ZXJ0aWNhbCByZWZyZXNoIHJhdGVzIGlmIHRoZSBWRVNBIEdlbmVyYWxpemVkIFRpbWluZyBGb3JtdWxhIGlzCisJICBlbmFibGVkLgorCisJLSBTdXBwb3J0cyBjb2xvciBkZXB0aHMgb2YgOCwgMTYsIDI0IGFuZCAzMiBiaXRzIHBlciBwaXhlbAorCisJLSBTdXBwb3J0cyBwc2V1ZG9jb2xvciwgZGlyZWN0Y29sb3IsIG9yIHRydWVjb2xvciB2aXN1YWxzCisKKwktIEZ1bGwgYW5kIG9wdGltaXplZCBoYXJkd2FyZSBhY2NlbGVyYXRpb24gYXQgOCwgMTYgYW5kIDI0IGJwcAorCisJLSBSb2J1c3QgdmlkZW8gc3RhdGUgc2F2ZSBhbmQgcmVzdG9yZQorCisJLSBNVFJSIHN1cHBvcnQKKworCS0gVXRpbGl6ZXMgdXNlci1lbnRlcmVkIG1vbml0b3Igc3BlY2lmaWNhdGlvbnMgdG8gYXV0b21hdGljYWxseQorCSAgY2FsY3VsYXRlIHJlcXVpcmVkIHZpZGVvIG1vZGUgcGFyYW1ldGVycy4KKworCS0gQ2FuIGNvbmN1cnJlbnRseSBydW4gd2l0aCB4ZnJlZTg2IHJ1bm5pbmcgd2l0aCBuYXRpdmUgaTgxMCBkcml2ZXJzCisKKwktIEhhcmR3YXJlIEN1cnNvciBTdXBwb3J0CisgCisJLSBTdXBwb3J0cyBFRElEIHByb2JpbmcgZWl0aGVyIGJ5IEREQy9JMkMgb3IgdGhyb3VnaCB0aGUgQklPUworCitDLiAgTGlzdCBvZiBhdmFpbGFibGUgb3B0aW9ucworCisgICBhLiAidmlkZW89aTgxMGZiIgorCWVuYWJsZXMgdGhlIGk4MTAgZHJpdmVyCisKKwlSZWNvbW1lbmRhdGlvbjogcmVxdWlyZWQKKworICAgYi4gInhyZXM6PHZhbHVlPiIKKwlzZWxlY3QgaG9yaXpvbnRhbCByZXNvbHV0aW9uIGluIHBpeGVscy4gKFRoaXMgcGFyYW1ldGVyIHdpbGwgYmUKKwlpZ25vcmVkIGlmICdtb2RlX29wdGlvbicgaXMgc3BlY2lmaWVkLiAgU2VlICdvJyBiZWxvdykuCisKKwlSZWNvbW1lbmRhdGlvbjogdXNlciBwcmVmZXJlbmNlCisJKGRlZmF1bHQgPSA2NDApCisKKyAgIGMuICJ5cmVzOjx2YWx1ZT4iCisJc2VsZWN0IHZlcnRpY2FsIHJlc29sdXRpb24gaW4gc2NhbmxpbmVzLiBJZiBEaXNjcmV0ZSBWaWRlbyBUaW1pbmdzCisJaXMgZW5hYmxlZCwgdGhpcyB3aWxsIGJlIGlnbm9yZWQgYW5kIGNvbXB1dGVkIGFzIDMqeHJlcy80LiAgKFRoaXMKKwlwYXJhbWV0ZXIgd2lsbCBiZSBpZ25vcmVkIGlmICdtb2RlX29wdGlvbicgaXMgc3BlY2lmaWVkLiAgU2VlICdvJworCWJlbG93KQorCisJUmVjb21tZW5kYXRpb246IHVzZXIgcHJlZmVyZW5jZQorCShkZWZhdWx0ID0gNDgwKQorCisgICBkLiAidnlyZXM6PHZhbHVlPiIKKwlzZWxlY3QgdmlydHVhbCB2ZXJ0aWNhbCByZXNvbHV0aW9uIGluIHNjYW5saW5lcy4gSWYgKDApIG9yIG5vbmUKKwlpcyBzcGVjaWZpZWQsIHRoaXMgd2lsbCBiZSBjb21wdXRlZCBhZ2FpbnN0IG1heGltdW0gYXZhaWxhYmxlIG1lbW9yeS4KKworCVJlY29tbWVuZGF0aW9uOiBkbyBub3Qgc2V0CisJKGRlZmF1bHQgPSA0ODApCisKKyAgIGUuICJ2cmFtOjx2YWx1ZT4iCisJc2VsZWN0IGFtb3VudCBvZiBzeXN0ZW0gUkFNIGluIE1CIHRvIGFsbG9jYXRlIGZvciB0aGUgdmlkZW8gbWVtb3J5CisKKwlSZWNvbW1lbmRhdGlvbjogMSAtIDQgTUIuCisJKGRlZmF1bHQgPSA0KQorCisgICBmLiAiYnBwOjx2YWx1ZT4iCisJc2VsZWN0IGRlc2lyZWQgcGl4ZWwgZGVwdGgKKworCVJlY29tbWVuZGF0aW9uOiA4CisJKGRlZmF1bHQgPSA4KQorCisgICBnLiAiaHN5bmMxL2hzeW5jMjo8dmFsdWU+IgorCXNlbGVjdCB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBIb3Jpem9udGFsIFN5bmMgRnJlcXVlbmN5IG9mIHRoZQorCW1vbml0b3IgaW4ga0h6LiAgSWYgdXNpbmcgYSBmaXhlZCBmcmVxdWVuY3kgbW9uaXRvciwgaHN5bmMxIG11c3QKKwliZSBlcXVhbCB0byBoc3luYzIuIElmIEVESUQgcHJvYmluZyBpcyBzdWNjZXNzZnVsLCB0aGVzZSB3aWxsIGJlCisJaWdub3JlZCBhbmQgdmFsdWVzIHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgRURJRCBibG9jay4KKworCVJlY29tbWVuZGF0aW9uOiBjaGVjayBtb25pdG9yIG1hbnVhbCBmb3IgY29ycmVjdCB2YWx1ZXMKKwkoZGVmYXVsdCA9IDI5LzMwKQorCisgICBoLiAidnN5bmMxL3ZzeW5jMjo8dmFsdWU+IgorCXNlbGVjdCB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBWZXJ0aWNhbCBTeW5jIEZyZXF1ZW5jeSBvZiB0aGUgbW9uaXRvcgorCWluIEh6LiBZb3UgY2FuIGFsc28gdXNlIHRoaXMgb3B0aW9uIHRvIGxvY2sgeW91ciBtb25pdG9yJ3MgcmVmcmVzaAorCXJhdGUuIElmIEVESUQgcHJvYmluZyBpcyBzdWNjZXNzZnVsLCB0aGVzZSB3aWxsIGJlIGlnbm9yZWQgYW5kIHZhbHVlcworCXdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgRURJRCBibG9jay4KKworCVJlY29tbWVuZGF0aW9uOiBjaGVjayBtb25pdG9yIG1hbnVhbCBmb3IgY29ycmVjdCB2YWx1ZXMKKwkoZGVmYXVsdCA9IDYwLzYwKQorCisJSU1QT1JUQU5UOiAgSWYgeW91IG5lZWQgdG8gY2xhbXAgeW91ciB0aW1pbmdzLCB0cnkgdG8gZ2l2ZSBzb21lCisJbGVld2F5IGZvciBjb21wdXRhdGlvbmFsIGVycm9ycyAob3Zlci91bmRlcmZsb3dzKS4gIEV4YW1wbGU6IGlmCisJdXNpbmcgdnN5bmMxL3ZzeW5jMiA9IDYwLzYwLCBtYWtlIHN1cmUgaHN5bmMxL2hzeW5jMiBoYXMgYXQgbGVhc3QKKwlhIDEgdW5pdCBkaWZmZXJlbmNlLCBhbmQgdmljZSB2ZXJzYS4KKworICAgaS4gInZvZmZzZXQ6PHZhbHVlPiIKKwlzZWxlY3QgYXQgd2hhdCBvZmZzZXQgaW4gTUIgb2YgdGhlIGxvZ2ljYWwgbWVtb3J5IHRvIGFsbG9jYXRlIHRoZQorCWZyYW1lYnVmZmVyIG1lbW9yeS4gIFRoZSBpbnRlbnQgaXMgdG8gYXZvaWQgdGhlIG1lbW9yeSBibG9ja3MKKwl1c2VkIGJ5IHN0YW5kYXJkIGdyYXBoaWNzIGFwcGxpY2F0aW9ucyAoWEZyZWU4NikuICBUaGUgZGVmYXVsdAorCW9mZnNldCAoMTYgTUIgZm9yIGEgNjQgTUIgYXBlcnR1cmUsIDggTUIgZm9yIGEgMzIgTUIgYXBlcnR1cmUpIHdpbGwKKwlhdm9pZCBYRnJlZTg2J3MgdXNhZ2UgYW5kIGFsbG93cyB1cCB0byA3IE1CLzE1IE1CIG9mIGZyYW1lYnVmZmVyCisJbWVtb3J5LiAgRGVwZW5kaW5nIG9uIHlvdXIgdXNhZ2UsIGFkanVzdCB0aGUgdmFsdWUgdXAgb3IgZG93bgorCSgwIGZvciBtYXhpbXVtIHVzYWdlLCAzMS82MyBNQiBmb3IgdGhlIGxlYXN0IGFtb3VudCkuICBOb3RlLCBhbgorCWFyYml0cmFyeSBzZXR0aW5nIG1heSBjb25mbGljdCB3aXRoIFhGcmVlODYuCisKKwlSZWNvbW1lbmRhdGlvbjogZG8gbm90IHNldAorCShkZWZhdWx0ID0gOCBvciAxNiBNQikKKworICAgai4gImFjY2VsIgorCWVuYWJsZSB0ZXh0IGFjY2VsZXJhdGlvbi4gIFRoaXMgY2FuIGJlIGVuYWJsZWQvcmVlbmFibGVkIGFueXRpbWUKKwlieSB1c2luZyAnZmJzZXQgLWFjY2VsIHRydWUvZmFsc2UnLgorCisJUmVjb21tZW5kYXRpb246IGVuYWJsZQorCShkZWZhdWx0ID0gbm90IHNldCkKKworICAgay4gIm10cnIiCisJZW5hYmxlIE1UUlIuICBUaGlzIGFsbG93cyBkYXRhIHRyYW5zZmVycyB0byB0aGUgZnJhbWVidWZmZXIgbWVtb3J5CisJdG8gb2NjdXIgaW4gYnVyc3RzIHdoaWNoIGNhbiBzaWduaWZpY2FudGx5IGluY3JlYXNlIHBlcmZvcm1hbmNlLgorCU5vdCB2ZXJ5IGhlbHBmdWwgd2l0aCB0aGUgaTgxMC9pODE1IGJlY2F1c2Ugb2YgJ3NoYXJlZCBtZW1vcnknLgorCisJUmVjb21tZW5kYXRpb246IGRvIG5vdCBzZXQKKwkoZGVmYXVsdCA9IG5vdCBzZXQpCisKKyAgIGwuICJleHR2Z2EiCisJaWYgc3BlY2lmaWVkLCBzZWNvbmRhcnkvZXh0ZXJuYWwgVkdBIG91dHB1dCB3aWxsIGFsd2F5cyBiZSBlbmFibGVkLgorCVVzZWZ1bCBpZiB0aGUgQklPUyB0dXJucyBvZmYgdGhlIFZHQSBwb3J0IHdoZW4gbm8gbW9uaXRvciBpcyBhdHRhY2hlZC4KKwlUaGUgZXh0ZXJuYWwgVkdBIG1vbml0b3IgY2FuIHRoZW4gYmUgYXR0YWNoZWQgd2l0aG91dCByZWJvb3RpbmcuCisKKwlSZWNvbW1lbmRhdGlvbjogZG8gbm90IHNldAorCShkZWZhdWx0ID0gbm90IHNldCkKKworICAgbS4gInN5bmMiCisJRm9yY2VzIHRoZSBoYXJkd2FyZSBlbmdpbmUgdG8gZG8gYSAic3luYyIgb3Igd2FpdCBmb3IgdGhlIGhhcmR3YXJlCisJdG8gZmluaXNoIGJlZm9yZSBzdGFydGluZyBhbm90aGVyIGluc3RydWN0aW9uLiBUaGlzIHdpbGwgcHJvZHVjZSBhCisJbW9yZSBzdGFibGUgc2V0dXAsIGJ1dCB3aWxsIGJlIHNsb3dlci4KKworCVJlY29tbWVuZGF0aW9uOiBkbyBub3Qgc2V0CisJKGRlZmF1bHQgPSBub3Qgc2V0KQorCisgICBuLiAiZGNvbG9yIgorICAgICAgICBVc2UgZGlyZWN0Y29sb3IgdmlzdWFsIGluc3RlYWQgb2YgdHJ1ZWNvbG9yIGZvciBwaXhlbCBkZXB0aHMgZ3JlYXRlcgorCXRoYW4gOCBicHAuICBVc2VmdWwgZm9yIGNvbG9yIHR1bmluZywgc3VjaCBhcyBnYW1tYSBjb250cm9sLgorCisJUmVjb21tZW5kYXRpb246IGRvIG5vdCBzZXQKKwkoZGVmYXVsdCA9IG5vdCBzZXQpCisKKyAgIG8uIDx4cmVzPng8eXJlcz5bLTxicHA+XVtAPHJlZnJlc2g+XQorCVRoZSBkcml2ZXIgd2lsbCBub3cgYWNjZXB0IHNwZWNpZmljYXRpb24gb2YgYm9vdCBtb2RlIG9wdGlvbi4gIElmIHRoaXMKKwlpcyBzcGVjaWZpZWQsIHRoZSBvcHRpb25zICd4cmVzJyBhbmQgJ3lyZXMnIHdpbGwgYmUgaWdub3JlZC4gU2VlCisJRG9jdW1lbnRhdGlvbi9mYi9tb2RlZGIudHh0IGZvciB1c2FnZS4KKworRC4gS2VybmVsIGJvb3RpbmcKKworU2VwYXJhdGUgZWFjaCBvcHRpb24vb3B0aW9uLXBhaXIgYnkgY29tbWFzICgsKSBhbmQgdGhlIG9wdGlvbiBmcm9tIGl0cyB2YWx1ZQord2l0aCBhIGNvbG9uICg6KSBhcyBpbiB0aGUgZm9sbG93aW5nOgorCit2aWRlbz1pODEwZmI6b3B0aW9uMSxvcHRpb24yOnZhbHVlMgorCitTYW1wbGUgVXNhZ2UKKy0tLS0tLS0tLS0tLQorCitJbiAvZXRjL2xpbG8uY29uZiwgYWRkIHRoZSBsaW5lOgorCithcHBlbmQ9InZpZGVvPWk4MTBmYjp2cmFtOjIseHJlczoxMDI0LHlyZXM6NzY4LGJwcDo4LGhzeW5jMTozMCxoc3luYzI6NTUsIFwKKyAgICAgICAgdnN5bmMxOjUwLHZzeW5jMjo4NSxhY2NlbCxtdHJyIgorCitUaGlzIHdpbGwgaW5pdGlhbGl6ZSB0aGUgZnJhbWVidWZmZXIgdG8gMTAyNHg3NjggYXQgOGJwcC4gIFRoZSBmcmFtZWJ1ZmZlcgord2lsbCB1c2UgMiBNQiBvZiBTeXN0ZW0gUkFNLiBNVFJSIHN1cHBvcnQgd2lsbCBiZSBlbmFibGVkLiBUaGUgcmVmcmVzaCByYXRlCit3aWxsIGJlIGNvbXB1dGVkIGJhc2VkIG9uIHRoZSBoc3luYzEvaHN5bmMyIGFuZCB2c3luYzEvdnN5bmMyIHZhbHVlcy4KKworSU1QT1JUQU5UOgorWW91IG11c3QgaW5jbHVkZSBoc3luYzEsIGhzeW5jMiwgdnN5bmMxIGFuZCB2c3luYzIgdG8gZW5hYmxlIHZpZGVvIG1vZGVzCitiZXR0ZXIgdGhhbiA2NDB4NDgwIGF0IDYwSHouIEhPV0VWRVIsIGlmIHlvdXIgY2hpcHNldC9kaXNwbGF5IGNvbWJpbmF0aW9uCitzdXBwb3J0cyBJMkMgYW5kIGhhcyBhbiBFRElEIGJsb2NrLCB5b3UgY2FuIHNhZmVseSBleGNsdWRlIGhzeW5jMSwgaHN5bmMyLAordnN5bmMxIGFuZCB2c3luYzIgcGFyYW1ldGVycy4gIFRoZXNlIHBhcmFtZXRlcnMgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBFRElECitibG9jay4KKworRS4gIE1vZHVsZSBvcHRpb25zCisKK1RoZSBtb2R1bGUgcGFyYW1ldGVycyBhcmUgZXNzZW50aWFsbHkgc2ltaWxhciB0byB0aGUga2VybmVsCitwYXJhbWV0ZXJzLiBUaGUgbWFpbiBkaWZmZXJlbmNlIGlzIHRoYXQgeW91IG5lZWQgdG8gaW5jbHVkZSBhIEJvb2xlYW4gdmFsdWUKKygxIGZvciBUUlVFLCBhbmQgMCBmb3IgRkFMU0UpIGZvciB0aG9zZSBvcHRpb25zIHdoaWNoIGRvbid0IG5lZWQgYSB2YWx1ZS4KKworRXhhbXBsZSwgdG8gZW5hYmxlIE1UUlIsIGluY2x1ZGUgIm10cnI9MSIuCisKK1NhbXBsZSBVc2FnZQorLS0tLS0tLS0tLS0tCisKK1VzaW5nIHRoZSBzYW1lIHNldHVwIGFzIGRlc2NyaWJlZCBhYm92ZSwgbG9hZCB0aGUgbW9kdWxlIGxpa2UgdGhpczoKKworCW1vZHByb2JlIGk4MTBmYiB2cmFtPTIgeHJlcz0xMDI0IGJwcD04IGhzeW5jMT0zMCBoc3luYzI9NTUgdnN5bmMxPTUwIFwKKwkgICAgICAgICB2c3luYzI9ODUgYWNjZWw9MSBtdHJyPTEKKworT3IganVzdCBhZGQgdGhlIGZvbGxvd2luZyB0byBhIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiAvZXRjL21vZHByb2JlLmQvCisKKwlvcHRpb25zIGk4MTBmYiB2cmFtPTIgeHJlcz0xMDI0IGJwcD0xNiBoc3luYzE9MzAgaHN5bmMyPTU1IHZzeW5jMT01MCBcCisJdnN5bmMyPTg1IGFjY2VsPTEgbXRycj0xCisKK2FuZCBqdXN0IGRvIGEKKworCW1vZHByb2JlIGk4MTBmYgorCisKK0YuICBTZXR1cAorCisJYS4gRG8geW91ciB1c3VhbCBtZXRob2Qgb2YgY29uZmlndXJpbmcgdGhlIGtlcm5lbC4KKworCW1ha2UgbWVudWNvbmZpZy94Y29uZmlnL2NvbmZpZworCisJYi4gVW5kZXIgIkNvZGUgbWF0dXJpdHkgbGV2ZWwgb3B0aW9ucyIgZW5hYmxlICJQcm9tcHQgZm9yIGRldmVsb3BtZW50CisJICAgYW5kL29yIGluY29tcGxldGUgY29kZS9kcml2ZXJzIi4KKworIAljLiBFbmFibGUgYWdwZ2FydCBzdXBwb3J0IGZvciB0aGUgSW50ZWwgODEwLzgxNSBvbi1ib2FyZCBncmFwaGljcy4KKwkgICBUaGlzIGlzIHJlcXVpcmVkLiAgVGhlIG9wdGlvbiBpcyB1bmRlciAiQ2hhcmFjdGVyIERldmljZXMiLgorCisJZC4gVW5kZXIgIkdyYXBoaWNzIFN1cHBvcnQiLCBzZWxlY3QgIkludGVsIDgxMC84MTUiIGVpdGhlciBzdGF0aWNhbGx5CisJICAgb3IgYXMgYSBtb2R1bGUuICBDaG9vc2UgInVzZSBWRVNBIEdlbmVyYWxpemVkIFRpbWluZyBGb3JtdWxhIiBpZgorCSAgIHlvdSBuZWVkIHRvIG1heGltaXplIHRoZSBjYXBhYmlsaXR5IG9mIHlvdXIgZGlzcGxheS4gIFRvIGJlIG9uIHRoZQorCSAgIHNhZmUgc2lkZSwgeW91IGNhbiBsZWF2ZSB0aGlzIHVuc2VsZWN0ZWQuCisKKwllLiBJZiB5b3Ugd2FudCBzdXBwb3J0IGZvciBEREMvSTJDIHByb2JpbmcgKFBsdWcgYW5kIFBsYXkgRGlzcGxheXMpLAorCSAgIHNldCAnRW5hYmxlIEREQyBTdXBwb3J0JyB0byAneScuIFRvIG1ha2UgdGhpcyBvcHRpb24gYXBwZWFyLCBzZXQKKwkgICAndXNlIFZFU0EgR2VuZXJhbGl6ZWQgVGltaW5nIEZvcm11bGEnIHRvICd5Jy4KKworICAgICAgICBmLiBJZiB5b3Ugd2FudCBhIGZyYW1lYnVmZmVyIGNvbnNvbGUsIGVuYWJsZSBpdCB1bmRlciAiQ29uc29sZQorCSAgIERyaXZlcnMiLgorCisJZy4gQ29tcGlsZSB5b3VyIGtlcm5lbC4KKworCWguIExvYWQgdGhlIGRyaXZlciBhcyBkZXNjcmliZWQgaW4gc2VjdGlvbnMgRCBhbmQgRS4KKworCWkuICBUcnkgdGhlIERpcmVjdEZCIChodHRwOi8vd3d3LmRpcmVjdGZiLm9yZykgKyB0aGUgaTgxMCBnZnhkcml2ZXIKKwkgICAgcGF0Y2ggdG8gc2VlIHRoZSBjaGlwc2V0IGluIGFjdGlvbiAob3IgaW5hY3Rpb24gOi0pLgorCitHLiAgQWNrbm93bGVkZ21lbnQ6CisKKwkxLiAgR2VlcnQgVXl0dGVyaG9ldmVuIC0gaGlzIGV4Y2VsbGVudCBob3d0byBhbmQgdGhlIHZpcnR1YWwKKwkgICAgZnJhbWVidWZmZXIgZHJpdmVyIGNvZGUgbWFkZSB0aGlzIHBvc3NpYmxlLgorCisJMi4gIEplZmYgSGFydG1hbm4gZm9yIGhpcyBhZ3BnYXJ0IGNvZGUuCisKKwkzLiAgVGhlIFggZGV2ZWxvcGVycy4gIEluc2lnaHRzIHdlcmUgcHJvdmlkZWQganVzdCBieSByZWFkaW5nIHRoZQorCSAgICBYRnJlZTg2IHNvdXJjZSBjb2RlLgorCisJNC4gIEludGVsKGMpLiAgRm9yIHRoaXMgdmFsdWUtb3JpZW50ZWQgY2hpcHNldCBkcml2ZXIgYW5kIGZvcgorCSAgICBwcm92aWRpbmcgZG9jdW1lbnRhdGlvbi4KKworCTUuIE1hdHQgU290dGVrLiAgSGlzIGlucHV0cyBhbmQgaWRlYXMgIGhlbHBlZCBpbiBtYWtpbmcgc29tZQorCSAgIG9wdGltaXphdGlvbnMgcG9zc2libGUuCisKK0guICBIb21lIFBhZ2U6CisKKwlBIG1vcmUgY29tcGxldGUsIGFuZCBwcm9iYWJseSB1cGRhdGVkIGluZm9ybWF0aW9uIGlzIHByb3ZpZGVkIGF0CisJaHR0cDovL2k4MTBmYi5zb3VyY2Vmb3JnZS5uZXQuCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworVG9ueQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZiL2ludGVsZmIudHh0IGIvRG9jdW1lbnRhdGlvbi9mYi9pbnRlbGZiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWFjNGU0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mYi9pbnRlbGZiLnR4dApAQCAtMCwwICsxLDE0OSBAQAorSW50ZWwgODMwTS84NDVHLzg1MkdNLzg1NUdNLzg2NUcvOTE1Ry85NDVHIEZyYW1lYnVmZmVyIGRyaXZlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBLiBJbnRyb2R1Y3Rpb24KKwlUaGlzIGlzIGEgZnJhbWVidWZmZXIgZHJpdmVyIGZvciB2YXJpb3VzIEludGVsIDh4eC85eHggY29tcGF0aWJsZQorZ3JhcGhpY3MgZGV2aWNlcy4gIFRoZXNlIHdvdWxkIGluY2x1ZGU6CisKKwlJbnRlbCA4MzBNCisJSW50ZWwgODQ1RworCUludGVsIDg1MkdNCisJSW50ZWwgODU1R00KKwlJbnRlbCA4NjVHCisJSW50ZWwgOTE1RworCUludGVsIDkxNUdNCisJSW50ZWwgOTQ1RworCUludGVsIDk0NUdNCisJSW50ZWwgOTQ1R01FCisJSW50ZWwgOTY1RworCUludGVsIDk2NUdNCisKK0IuICBMaXN0IG9mIGF2YWlsYWJsZSBvcHRpb25zCisKKyAgIGEuICJ2aWRlbz1pbnRlbGZiIgorCWVuYWJsZXMgdGhlIGludGVsZmIgZHJpdmVyCisKKwlSZWNvbW1lbmRhdGlvbjogcmVxdWlyZWQKKworICAgYi4gIm1vZGU9PHhyZXM+eDx5cmVzPlstPGJwcD5dW0A8cmVmcmVzaD5dIgorCXNlbGVjdCBtb2RlCisKKwlSZWNvbW1lbmRhdGlvbjogdXNlciBwcmVmZXJlbmNlCisJKGRlZmF1bHQgPSAxMDI0eDc2OC0zMkA3MCkKKworICAgYy4gInZyYW09PHZhbHVlPiIKKwlzZWxlY3QgYW1vdW50IG9mIHN5c3RlbSBSQU0gaW4gTUIgdG8gYWxsb2NhdGUgZm9yIHRoZSB2aWRlbyBtZW1vcnkKKwlpZiBub3QgZW5vdWdoIFJBTSB3YXMgYWxyZWFkeSBhbGxvY2F0ZWQgYnkgdGhlIEJJT1MuCisKKwlSZWNvbW1lbmRhdGlvbjogMSAtIDQgTUIuCisJKGRlZmF1bHQgPSA0IE1CKQorCisgICBkLiAidm9mZnNldD08dmFsdWU+IgorICAgICAgICBzZWxlY3QgYXQgd2hhdCBvZmZzZXQgaW4gTUIgb2YgdGhlIGxvZ2ljYWwgbWVtb3J5IHRvIGFsbG9jYXRlIHRoZQorCWZyYW1lYnVmZmVyIG1lbW9yeS4gIFRoZSBpbnRlbnQgaXMgdG8gYXZvaWQgdGhlIG1lbW9yeSBibG9ja3MKKwl1c2VkIGJ5IHN0YW5kYXJkIGdyYXBoaWNzIGFwcGxpY2F0aW9ucyAoWEZyZWU4NikuIERlcGVuZGluZyBvbiB5b3VyCisgICAgICAgIHVzYWdlLCBhZGp1c3QgdGhlIHZhbHVlIHVwIG9yIGRvd24sICgwIGZvciBtYXhpbXVtIHVzYWdlLCA2My8xMjcgTUIKKyAgICAgICAgZm9yIHRoZSBsZWFzdCBhbW91bnQpLiAgTm90ZSwgYW4gYXJiaXRyYXJ5IHNldHRpbmcgbWF5IGNvbmZsaWN0CisgICAgICAgIHdpdGggWEZyZWU4Ni4KKworCVJlY29tbWVuZGF0aW9uOiBkbyBub3Qgc2V0CisJKGRlZmF1bHQgPSA0OCBNQikKKworICAgZS4gImFjY2VsIgorCWVuYWJsZSB0ZXh0IGFjY2VsZXJhdGlvbi4gIFRoaXMgY2FuIGJlIGVuYWJsZWQvcmVlbmFibGVkIGFueXRpbWUKKwlieSB1c2luZyAnZmJzZXQgLWFjY2VsIHRydWUvZmFsc2UnLgorCisJUmVjb21tZW5kYXRpb246IGVuYWJsZQorCShkZWZhdWx0ID0gc2V0KQorCisgICBmLiAiaHdjdXJzb3IiCisJZW5hYmxlIGN1cnNvciBhY2NlbGVyYXRpb24uCisKKwlSZWNvbW1lbmRhdGlvbjogZW5hYmxlCisJKGRlZmF1bHQgPSBzZXQpCisKKyAgIGcuICJtdHJyIgorCWVuYWJsZSBNVFJSLiAgVGhpcyBhbGxvd3MgZGF0YSB0cmFuc2ZlcnMgdG8gdGhlIGZyYW1lYnVmZmVyIG1lbW9yeQorCXRvIG9jY3VyIGluIGJ1cnN0cyB3aGljaCBjYW4gc2lnbmlmaWNhbnRseSBpbmNyZWFzZSBwZXJmb3JtYW5jZS4KKwlOb3QgdmVyeSBoZWxwZnVsIHdpdGggdGhlIGludGVsIGNoaXBzIGJlY2F1c2Ugb2YgJ3NoYXJlZCBtZW1vcnknLgorCisJUmVjb21tZW5kYXRpb246IHNldAorCShkZWZhdWx0ID0gc2V0KQorCisgICBoLiAiZml4ZWQiCisJZGlzYWJsZSBtb2RlIHN3aXRjaGluZy4KKworCVJlY29tbWVuZGF0aW9uOiBkbyBub3Qgc2V0CisJKGRlZmF1bHQgPSBub3Qgc2V0KQorCisgICBUaGUgYmluYXJ5IHBhcmFtZXRlcnMgY2FuIGJlIHVuc2V0IHdpdGggYSAibm8iIHByZWZpeCwgZXhhbXBsZSAibm9hY2NlbCIuCisgICBUaGUgZGVmYXVsdCBwYXJhbWV0ZXIgKG5vdCBuYW1lZCkgaXMgdGhlIG1vZGUuCisKK0MuIEtlcm5lbCBib290aW5nCisKK1NlcGFyYXRlIGVhY2ggb3B0aW9uL29wdGlvbi1wYWlyIGJ5IGNvbW1hcyAoLCkgYW5kIHRoZSBvcHRpb24gZnJvbSBpdHMgdmFsdWUKK3dpdGggYW4gZXF1YWxzIHNpZ24gKD0pIGFzIGluIHRoZSBmb2xsb3dpbmc6CisKK3ZpZGVvPWludGVsZmI6b3B0aW9uMSxvcHRpb24yPXZhbHVlMgorCitTYW1wbGUgVXNhZ2UKKy0tLS0tLS0tLS0tLQorCitJbiAvZXRjL2xpbG8uY29uZiwgYWRkIHRoZSBsaW5lOgorCithcHBlbmQ9InZpZGVvPWludGVsZmI6bW9kZT04MDB4NjAwLTMyQDc1LGFjY2VsLGh3Y3Vyc29yLHZyYW09OCIKKworVGhpcyB3aWxsIGluaXRpYWxpemUgdGhlIGZyYW1lYnVmZmVyIHRvIDgwMHg2MDAgYXQgMzJicHAgYW5kIDc1SHouIFRoZQorZnJhbWVidWZmZXIgd2lsbCB1c2UgOCBNQiBvZiBTeXN0ZW0gUkFNLiBodyBhY2NlbGVyYXRpb24gb2YgdGV4dCBhbmQgY3Vyc29yCit3aWxsIGJlIGVuYWJsZWQuCisKK1JlbWFya3MKKy0tLS0tLS0KKworSWYgc2V0dGluZyB0aGlzIHBhcmFtZXRlciBkb2Vzbid0IHdvcmsgKHlvdSBzdGF5IGluIGEgODB4MjUgdGV4dC1tb2RlKSwKK3lvdSBtaWdodCBuZWVkIHRvIHNldCB0aGUgInZnYT08bW9kZT4iIHBhcmFtZXRlciB0b28gLSBzZWUgdmVzYWZiLnR4dAoraW4gdGhpcyBkaXJlY3RvcnkuCisKKworRC4gIE1vZHVsZSBvcHRpb25zCisKKwlUaGUgbW9kdWxlIHBhcmFtZXRlcnMgYXJlIGVzc2VudGlhbGx5IHNpbWlsYXIgdG8gdGhlIGtlcm5lbAorcGFyYW1ldGVycy4gVGhlIG1haW4gZGlmZmVyZW5jZSBpcyB0aGF0IHlvdSBuZWVkIHRvIGluY2x1ZGUgYSBCb29sZWFuIHZhbHVlCisoMSBmb3IgVFJVRSwgYW5kIDAgZm9yIEZBTFNFKSBmb3IgdGhvc2Ugb3B0aW9ucyB3aGljaCBkb24ndCBuZWVkIGEgdmFsdWUuCisKK0V4YW1wbGUsIHRvIGVuYWJsZSBNVFJSLCBpbmNsdWRlICJtdHJyPTEiLgorCitTYW1wbGUgVXNhZ2UKKy0tLS0tLS0tLS0tLQorCitVc2luZyB0aGUgc2FtZSBzZXR1cCBhcyBkZXNjcmliZWQgYWJvdmUsIGxvYWQgdGhlIG1vZHVsZSBsaWtlIHRoaXM6CisKKwltb2Rwcm9iZSBpbnRlbGZiIG1vZGU9ODAweDYwMC0zMkA3NSB2cmFtPTggYWNjZWw9MSBod2N1cnNvcj0xCisKK09yIGp1c3QgYWRkIHRoZSBmb2xsb3dpbmcgdG8gYSBjb25maWd1cmF0aW9uIGZpbGUgaW4gL2V0Yy9tb2Rwcm9iZS5kLworCisJb3B0aW9ucyBpbnRlbGZiIG1vZGU9ODAweDYwMC0zMkA3NSB2cmFtPTggYWNjZWw9MSBod2N1cnNvcj0xCisKK2FuZCBqdXN0IGRvIGEKKworCW1vZHByb2JlIGludGVsZmIKKworCitFLiAgQWNrbm93bGVkZ21lbnQ6CisKKwkxLiAgR2VlcnQgVXl0dGVyaG9ldmVuIC0gaGlzIGV4Y2VsbGVudCBob3d0byBhbmQgdGhlIHZpcnR1YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyIGRyaXZlciBjb2RlIG1hZGUgdGhpcyBwb3NzaWJsZS4KKworCTIuICBKZWZmIEhhcnRtYW5uIGZvciBoaXMgYWdwZ2FydCBjb2RlLgorCisJMy4gIERhdmlkIERhd2VzIGZvciBoaXMgb3JpZ2luYWwga2VybmVsIDIuNCBjb2RlLgorCisJNC4gIFRoZSBYIGRldmVsb3BlcnMuICBJbnNpZ2h0cyB3ZXJlIHByb3ZpZGVkIGp1c3QgYnkgcmVhZGluZyB0aGUKKwkgICAgWEZyZWU4NiBzb3VyY2UgY29kZS4KKworCTUuICBBbnRvbmlubyBBLiBEYXBsYXMgZm9yIGhpcyBpbnNwaXJpbmcgaTgxMGZiIGRyaXZlci4KKworCTYuICBBbmRyZXcgTW9ydG9uIGZvciBoaXMga2VybmVsIHBhdGNoZXMgbWFpbnRlbmFuY2UuCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworU3lsdmFpbgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mYi9pbnRlcm5hbHMudHh0IGIvRG9jdW1lbnRhdGlvbi9mYi9pbnRlcm5hbHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliMmEyYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZiL2ludGVybmFscy50eHQKQEAgLTAsMCArMSw4MiBAQAorCitUaGlzIGlzIGEgZmlyc3Qgc3RhcnQgZm9yIHNvbWUgZG9jdW1lbnRhdGlvbiBhYm91dCBmcmFtZSBidWZmZXIgZGV2aWNlCitpbnRlcm5hbHMuCisKK0dlZXJ0IFV5dHRlcmhvZXZlbiA8Z2VlcnRAbGludXgtbTY4ay5vcmc+LCAyMSBKdWx5IDE5OTgKK0phbWVzIFNpbW1vbnMgPGpzaW1tb25zQHVzZXIuc2YubmV0PiwgTm92IDI2IDIwMDIKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCSAgICAqKiogIFNUUlVDVFVSRVMgVVNFRCBCWSBUSEUgRlJBTUUgQlVGRkVSIERFVklDRSBBUEkgICoqKgorCitUaGUgZm9sbG93aW5nIHN0cnVjdHVyZXMgcGxheSBhIHJvbGUgaW4gdGhlIGdhbWUgb2YgZnJhbWUgYnVmZmVyIGRldmljZXMuIFRoZXkKK2FyZSBkZWZpbmVkIGluIDxsaW51eC9mYi5oPi4KKworMS4gT3V0c2lkZSB0aGUga2VybmVsICh1c2VyIHNwYWNlKQorCisgIC0gc3RydWN0IGZiX2ZpeF9zY3JlZW5pbmZvCisKKyAgICBEZXZpY2UgaW5kZXBlbmRlbnQgdW5jaGFuZ2VhYmxlIGluZm9ybWF0aW9uIGFib3V0IGEgZnJhbWUgYnVmZmVyIGRldmljZSBhbmQKKyAgICBhIHNwZWNpZmljIHZpZGVvIG1vZGUuIFRoaXMgY2FuIGJlIG9idGFpbmVkIHVzaW5nIHRoZSBGQklPR0VUX0ZTQ1JFRU5JTkZPCisgICAgaW9jdGwuCisKKyAgLSBzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8KKworICAgIERldmljZSBpbmRlcGVuZGVudCBjaGFuZ2VhYmxlIGluZm9ybWF0aW9uIGFib3V0IGEgZnJhbWUgYnVmZmVyIGRldmljZSBhbmQgYQorICAgIHNwZWNpZmljIHZpZGVvIG1vZGUuIFRoaXMgY2FuIGJlIG9idGFpbmVkIHVzaW5nIHRoZSBGQklPR0VUX1ZTQ1JFRU5JTkZPCisgICAgaW9jdGwsIGFuZCB1cGRhdGVkIHdpdGggdGhlIEZCSU9QVVRfVlNDUkVFTklORk8gaW9jdGwuIElmIHlvdSB3YW50IHRvIHBhbgorICAgIHRoZSBzY3JlZW4gb25seSwgeW91IGNhbiB1c2UgdGhlIEZCSU9QQU5fRElTUExBWSBpb2N0bC4KKworICAtIHN0cnVjdCBmYl9jbWFwCisKKyAgICBEZXZpY2UgaW5kZXBlbmRlbnQgY29sb3JtYXAgaW5mb3JtYXRpb24uIFlvdSBjYW4gZ2V0IGFuZCBzZXQgdGhlIGNvbG9ybWFwCisgICAgdXNpbmcgdGhlIEZCSU9HRVRDTUFQIGFuZCBGQklPUFVUQ01BUCBpb2N0bHMuCisKKworMi4gSW5zaWRlIHRoZSBrZXJuZWwKKworICAtIHN0cnVjdCBmYl9pbmZvCisKKyAgICBHZW5lcmljIGluZm9ybWF0aW9uLCBBUEkgYW5kIGxvdyBsZXZlbCBpbmZvcm1hdGlvbiBhYm91dCBhIHNwZWNpZmljIGZyYW1lCisgICAgYnVmZmVyIGRldmljZSBpbnN0YW5jZSAoc2xvdCBudW1iZXIsIGJvYXJkIGFkZHJlc3MsIC4uLikuCisKKyAgLSBzdHJ1Y3QgYHBhcicKKworICAgIERldmljZSBkZXBlbmRlbnQgaW5mb3JtYXRpb24gdGhhdCB1bmlxdWVseSBkZWZpbmVzIHRoZSB2aWRlbyBtb2RlIGZvciB0aGlzCisgICAgcGFydGljdWxhciBwaWVjZSBvZiBoYXJkd2FyZS4KKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJICAgICoqKiAgVklTVUFMUyBVU0VEIEJZIFRIRSBGUkFNRSBCVUZGRVIgREVWSUNFIEFQSSAgKioqCisKKworTW9ub2Nocm9tZSAoRkJfVklTVUFMX01PTk8wMSBhbmQgRkJfVklTVUFMX01PTk8xMCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0VhY2ggcGl4ZWwgaXMgZWl0aGVyIGJsYWNrIG9yIHdoaXRlLgorCisKK1BzZXVkbyBjb2xvciAoRkJfVklTVUFMX1BTRVVET0NPTE9SIGFuZCBGQl9WSVNVQUxfU1RBVElDX1BTRVVET0NPTE9SKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgd2hvbGUgcGl4ZWwgdmFsdWUgaXMgZmVkIHRocm91Z2ggYSBwcm9ncmFtbWFibGUgbG9va3VwIHRhYmxlIHRoYXQgaGFzIG9uZQorY29sb3IgKGluY2x1ZGluZyByZWQsIGdyZWVuLCBhbmQgYmx1ZSBpbnRlbnNpdGllcykgZm9yIGVhY2ggcG9zc2libGUgcGl4ZWwKK3ZhbHVlLCBhbmQgdGhhdCBjb2xvciBpcyBkaXNwbGF5ZWQuCisKKworVHJ1ZSBjb2xvciAoRkJfVklTVUFMX1RSVUVDT0xPUikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgcGl4ZWwgdmFsdWUgaXMgYnJva2VuIHVwIGludG8gcmVkLCBncmVlbiwgYW5kIGJsdWUgZmllbGRzLgorCisKK0RpcmVjdCBjb2xvciAoRkJfVklTVUFMX0RJUkVDVENPTE9SKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgcGl4ZWwgdmFsdWUgaXMgYnJva2VuIHVwIGludG8gcmVkLCBncmVlbiwgYW5kIGJsdWUgZmllbGRzLCBlYWNoIG9mIHdoaWNoIAorYXJlIGxvb2tlZCB1cCBpbiBzZXBhcmF0ZSByZWQsIGdyZWVuLCBhbmQgYmx1ZSBsb29rdXAgdGFibGVzLgorCisKK0dyYXlzY2FsZSBkaXNwbGF5cworLS0tLS0tLS0tLS0tLS0tLS0tCitHcmF5c2NhbGUgYW5kIHN0YXRpYyBncmF5c2NhbGUgYXJlIHNwZWNpYWwgdmFyaWFudHMgb2YgcHNldWRvIGNvbG9yIGFuZCBzdGF0aWMKK3BzZXVkbyBjb2xvciwgd2hlcmUgdGhlIHJlZCwgZ3JlZW4gYW5kIGJsdWUgY29tcG9uZW50cyBhcmUgYWx3YXlzIGVxdWFsIHRvCitlYWNoIG90aGVyLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZiL2x4ZmIudHh0IGIvRG9jdW1lbnRhdGlvbi9mYi9seGZiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGIzY2E2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mYi9seGZiLnR4dApAQCAtMCwwICsxLDUyIEBACitbVGhpcyBmaWxlIGlzIGNsb25lZCBmcm9tIFZlc2FGQi9hdHkxMjhmYl0KKworV2hhdCBpcyBseGZiPworPT09PT09PT09PT09PT09PT0KKworVGhpcyBpcyBhIGdyYXBoaWNzIGZyYW1lYnVmZmVyIGRyaXZlciBmb3IgQU1EIEdlb2RlIExYIGJhc2VkIHByb2Nlc3NvcnMuCisKK0FkdmFudGFnZXM6CisKKyAqIE5vIG5lZWQgdG8gdXNlIEFNRCdzIFZTQSBjb2RlIChvciBvdGhlciBWRVNBIGVtdWxhdGlvbiBsYXllcikgaW4gdGhlCisgICBCSU9TLgorICogSXQgcHJvdmlkZXMgYSBuaWNlIGxhcmdlIGNvbnNvbGUgKDEyOCBjb2xzICsgNDggbGluZXMgd2l0aCAxMDI0eDc2OCkKKyAgIHdpdGhvdXQgdXNpbmcgdGlueSwgdW5yZWFkYWJsZSBmb250cy4KKyAqIFlvdSBjYW4gcnVuIFhGNjhfRkJEZXYgb24gdG9wIG9mIC9kZXYvZmIwCisgKiBNb3N0IGltcG9ydGFudDogYm9vdCBsb2dvIDotKQorCitEaXNhZHZhbnRhZ2VzOgorCisgKiBncmFwaGljIG1vZGUgaXMgc2xvd2VyIHRoYW4gdGV4dCBtb2RlLi4uCisKKworSG93IHRvIHVzZSBpdD8KKz09PT09PT09PT09PT09CisKK1N3aXRjaGluZyBtb2RlcyBpcyBkb25lIHVzaW5nICBseGZiLm1vZGVfb3B0aW9uPTxyZXNvbHV0aW9uPi4uLiBib290CitwYXJhbWV0ZXIgb3IgdXNpbmcgYGZic2V0JyBwcm9ncmFtLgorCitTZWUgRG9jdW1lbnRhdGlvbi9mYi9tb2RlZGIudHh0IGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIG1vZGVkYgorcmVzb2x1dGlvbnMuCisKKworWDExCis9PT0KKworWEY2OF9GQkRldiBzaG91bGQgZ2VuZXJhbGx5IHdvcmsgZmluZSwgYnV0IGl0IGlzIG5vbi1hY2NlbGVyYXRlZC4KKworCitDb25maWd1cmF0aW9uCis9PT09PT09PT09PT09CisKK1lvdSBjYW4gcGFzcyBrZXJuZWwgY29tbWFuZCBsaW5lIG9wdGlvbnMgdG8gbHhmYiB3aXRoIGx4ZmIuPG9wdGlvbj4uCitGb3IgZXhhbXBsZSwgbHhmYi5tb2RlX29wdGlvbj04MDB4NjAwQDc1LgorQWNjZXB0ZWQgb3B0aW9uczoKKworbW9kZV9vcHRpb24JLSBzcGVjaWZ5IHRoZSB2aWRlbyBtb2RlLiAgT2YgdGhlIGZvcm0KKwkJICA8eD54PHk+Wy08YnBwPl1bQDxyZWZyZXNoPl0KK3ZyYW0JCS0gc2l6ZSBvZiB2aWRlbyByYW0gKG5vcm1hbGx5IGF1dG8tZGV0ZWN0ZWQpCit2dF9zd2l0Y2gJLSBlbmFibGUgdnQgc3dpdGNoaW5nIGR1cmluZyBzdXNwZW5kL3Jlc3VtZS4gIFRoZSB2dAorCQkgIHN3aXRjaCBpcyBzbG93LCBidXQgaGFybWxlc3MuCisKKy0tCitBbmRyZXMgU2Fsb21vbiA8ZGlsaW5nZXJAZGViaWFuLm9yZz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvbWF0cm94ZmIudHh0IGIvRG9jdW1lbnRhdGlvbi9mYi9tYXRyb3hmYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk1ZjViYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmIvbWF0cm94ZmIudHh0CkBAIC0wLDAgKzEsNDEzIEBACitbVGhpcyBmaWxlIGlzIGNsb25lZCBmcm9tIFZlc2FGQi4gVGhhbmtzIGdvIHRvIEdlcmQgS25vcnJdCisKK1doYXQgaXMgbWF0cm94ZmI/Cis9PT09PT09PT09PT09PT09PQorCitUaGlzIGlzIGEgZHJpdmVyIGZvciBhIGdyYXBoaWMgZnJhbWVidWZmZXIgZm9yIE1hdHJveCBkZXZpY2VzIG9uCitBbHBoYSwgSW50ZWwgYW5kIFBQQyBib3hlcy4KKworQWR2YW50YWdlczoKKworICogSXQgcHJvdmlkZXMgYSBuaWNlIGxhcmdlIGNvbnNvbGUgKDEyOCBjb2xzICsgNDggbGluZXMgd2l0aCAxMDI0eDc2OCkKKyAgIHdpdGhvdXQgdXNpbmcgdGlueSwgdW5yZWFkYWJsZSBmb250cy4KKyAqIFlvdSBjYW4gcnVuIFhGezY4LDg2fV9GQkRldiBvciBYRnJlZTg2IGZiZGV2IGRyaXZlciBvbiB0b3Agb2YgL2Rldi9mYjAKKyAqIE1vc3QgaW1wb3J0YW50OiBib290IGxvZ28gOi0pCisKK0Rpc2FkdmFudGFnZXM6CisKKyAqIGdyYXBoaWMgbW9kZSBpcyBzbG93ZXIgdGhhbiB0ZXh0IG1vZGUuLi4gYnV0IHlvdSBzaG91bGQgbm90IG5vdGljZQorICAgaWYgeW91IHVzZSBzYW1lIHJlc29sdXRpb24gYXMgeW91IHVzZWQgaW4gdGV4dG1vZGUuCisKKworSG93IHRvIHVzZSBpdD8KKz09PT09PT09PT09PT09CisKK1N3aXRjaGluZyBtb2RlcyBpcyBkb25lIHVzaW5nIHRoZSB2aWRlbz1tYXRyb3hmYjp2ZXNhOi4uLiBib290IHBhcmFtZXRlcgorb3IgdXNpbmcgYGZic2V0JyBwcm9ncmFtLgorCitJZiB5b3Ugd2FudCwgZm9yIGV4YW1wbGUsIGVuYWJsZSBhIHJlc29sdXRpb24gb2YgMTI4MHgxMDI0eDI0YnBwIHlvdSBzaG91bGQKK3Bhc3MgdG8gdGhlIGtlcm5lbCB0aGlzIGNvbW1hbmQgbGluZTogInZpZGVvPW1hdHJveGZiOnZlc2E6MHgxQkIiLgorCitZb3Ugc2hvdWxkIGNvbXBpbGUgaW4gYm90aCB2Z2Fjb24gKHRvIGJvb3QgaWYgeW91IHJlbW92ZSB5b3UgTWF0cm94IGZyb20KK2JveCkgYW5kIG1hdHJveGZiIChmb3IgZ3JhcGhpY3MgbW9kZSkuIFlvdSBzaG91bGQgbm90IGNvbXBpbGUtaW4gdmVzYWZiCit1bmxlc3MgeW91IGhhdmUgcHJpbWFyeSBkaXNwbGF5IG9uIG5vbi1NYXRyb3ggVkJFMi4wIGRldmljZSAoc2VlIAorRG9jdW1lbnRhdGlvbi9mYi92ZXNhZmIudHh0IGZvciBkZXRhaWxzKS4KKworQ3VycmVudGx5IHN1cHBvcnRlZCB2aWRlbyBtb2RlcyBhcmUgKHRocm91Z2ggdmVzYTouLi4gaW50ZXJmYWNlLCBQb3dlck1hYworaGFzIFthcyBhZGRvbl0gY29tcGF0aWJpbGl0eSBjb2RlKToKKworCitbR3JhcGhpYyBtb2Rlc10KKworYnBwIHwgNjQweDQwMCAgNjQweDQ4MCAgNzY4eDU3NiAgODAweDYwMCAgOTYweDcyMAorLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICA0IHwgICAgICAgICAgICAweDEyICAgICAgICAgICAgIDB4MTAyICAgICAgICAgICAgCisgIDggfCAgMHgxMDAgICAgMHgxMDEgICAgMHgxODAgICAgMHgxMDMgICAgMHgxODggICAKKyAxNSB8ICAgICAgICAgICAweDExMCAgICAweDE4MSAgICAweDExMyAgICAweDE4OSAgIAorIDE2IHwgICAgICAgICAgIDB4MTExICAgIDB4MTgyICAgIDB4MTE0ICAgIDB4MThBICAgCisgMjQgfCAgICAgICAgICAgMHgxQjIgICAgMHgxODQgICAgMHgxQjUgICAgMHgxOEMgICAKKyAzMiB8ICAgICAgICAgICAweDExMiAgICAweDE4MyAgICAweDExNSAgICAweDE4QiAgIAorCisKK1tHcmFwaGljIG1vZGVzIChjb250aW51ZWQpXQorCiticHAgfCAxMDI0eDc2OCAxMTUyeDg2NCAxMjgweDEwMjQgMTQwOHgxMDU2IDE2MDB4MTIwMAorLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgNCB8ICAgMHgxMDQgICAgICAgICAgICAgMHgxMDYKKyAgOCB8ICAgMHgxMDUgICAgMHgxOTAgICAgMHgxMDcgICAgIDB4MTk4ICAgICAweDExQworIDE1IHwgICAweDExNiAgICAweDE5MSAgICAweDExOSAgICAgMHgxOTkgICAgIDB4MTFECisgMTYgfCAgIDB4MTE3ICAgIDB4MTkyICAgIDB4MTFBICAgICAweDE5QSAgICAgMHgxMUUKKyAyNCB8ICAgMHgxQjggICAgMHgxOTQgICAgMHgxQkIgICAgIDB4MTlDICAgICAweDFCRgorIDMyIHwgICAweDExOCAgICAweDE5MyAgICAweDExQiAgICAgMHgxOUIKKworCitbVGV4dCBtb2Rlc10KKwordGV4dCB8IDY0MHg0MDAgIDY0MHg0ODAgIDEwNTZ4MzQ0ICAxMDU2eDQwMCAgMTA1Nng0ODAKKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDh4OCB8ICAweDFDMCAgICAweDEwOCAgICAgMHgxMEEgICAgIDB4MTBCICAgICAweDEwQworOHgxNiB8IDIsIDMsIDcgICAgICAgICAgICAgICAgICAgICAgIDB4MTA5CisKK1lvdSBjYW4gZW50ZXIgdGhlc2UgbnVtYmVyIGVpdGhlciBoZXhhZGVjaW1hbCAobGVhZGluZyBgMHgnKSBvciBkZWNpbWFsCisoMHgxMDAgPSAyNTYpLiBZb3UgY2FuIGFsc28gdXNlIHZhbHVlICsgNTEyIHRvIGFjaGlldmUgY29tcGF0aWJpbGl0eQord2l0aCB5b3VyIG9sZCBudW1iZXIgcGFzc2VkIHRvIHZlc2FmYi4KKworTm9uLWxpc3RlZCBudW1iZXIgY2FuIGJlIGFjaGlldmVkIGJ5IG1vcmUgY29tcGxpY2F0ZWQgY29tbWFuZC1saW5lLCBmb3IKK2V4YW1wbGUgMTYwMHgxMjAweDMyYnBwIGNhbiBiZSBzcGVjaWZpZWQgYnkgYHZpZGVvPW1hdHJveGZiOnZlc2E6MHgxMUMsZGVwdGg6MzInLgorCisKK1gxMQorPT09CisKK1hGezY4LDg2fV9GQkRldiBzaG91bGQgd29yayBqdXN0IGZpbmUsIGJ1dCBpdCBpcyBub24tYWNjZWxlcmF0ZWQuIE9uIG5vbi1pbnRlbAorYXJjaGl0ZWN0dXJlcyB0aGVyZSBhcmUgc29tZSBnbGl0Y2hlcyBmb3IgMjRicHAgdmlkZW9tb2Rlcy4gOCwgMTYgYW5kIDMyYnBwCit3b3JrcyBmaW5lLgorCitSdW5uaW5nIGFub3RoZXIgKGFjY2VsZXJhdGVkKSBYLVNlcnZlciBsaWtlIFhGODZfU1ZHQSB3b3JrcyB0b28uIEJ1dCAoYXQgbGVhc3QpCitYRnJlZSBzZXJ2ZXJzIGhhdmUgYmlnIHRyb3VibGVzIGluIG11bHRpaGVhZCBjb25maWd1cmF0aW9ucyAoZXZlbiBvbiBmaXJzdAoraGVhZCwgbm90IGV2ZW4gdGFsa2luZyBhYm91dCBzZWNvbmQpLiBSdW5uaW5nIFhGcmVlODYgNC54IGFjY2VsZXJhdGVkIG1nYSAKK2RyaXZlciBpcyBwb3NzaWJsZSwgYnV0IHlvdSBtdXN0IG5vdCBlbmFibGUgRFJJIC0gaWYgeW91IGRvLCByZXNvbHV0aW9uIGFuZAorY29sb3IgZGVwdGggb2YgeW91ciBYIGRlc2t0b3AgbXVzdCBtYXRjaCByZXNvbHV0aW9uIGFuZCBjb2xvciBkZXB0aHMgb2YgeW91cgordmlydHVhbCBjb25zb2xlcywgb3RoZXJ3aXNlIFggd2lsbCBjb3JydXB0IGFjY2VsZXJhdG9yIHNldHRpbmdzLgorCisKK1NWR0FMaWIKKz09PT09PT0KKworRHJpdmVyIGNvbnRhaW5zIFNWR0FMaWIgY29tcGF0aWJpbGl0eSBjb2RlLiBJdCBpcyB0dXJuZWQgb24gYnkgY2hvb3NpbmcgdGV4dHVhbAorbW9kZSBmb3IgY29uc29sZS4gWW91IGNhbiBkbyBpdCBhdCBib290IHRpbWUgYnkgdXNpbmcgdmlkZW9tb2RlCisyLDMsNywweDEwOC0weDEwQyBvciAweDFDMC4gQXQgcnVudGltZSwgYGZic2V0IC1kZXB0aCAwJyBkb2VzIHRoaXMgd29yay4KK1VuZm9ydHVuYXRlbHksIGFmdGVyIFNWR0FMaWIgYXBwbGljYXRpb24gZXhpdHMsIHNjcmVlbiBjb250ZW50cyBpcyBjb3JydXB0ZWQuCitTd2l0Y2hpbmcgdG8gYW5vdGhlciBjb25zb2xlIGFuZCBiYWNrIGZpeGVzIGl0LiBJIGhvcGUgdGhhdCBpdCBpcyBTVkdBTGliJ3MKK3Byb2JsZW0gYW5kIG5vdCBtaW5lLCBidXQgSSdtIG5vdCBzdXJlLgorCisKK0NvbmZpZ3VyYXRpb24KKz09PT09PT09PT09PT0KKworWW91IGNhbiBwYXNzIGtlcm5lbCBjb21tYW5kIGxpbmUgb3B0aW9ucyB0byBtYXRyb3hmYiB3aXRoCitgdmlkZW89bWF0cm94ZmI6b3B0aW9uMSxvcHRpb24yOnZhbHVlMixvcHRpb24zJyAobXVsdGlwbGUgb3B0aW9ucyBzaG91bGQgYmUgCitzZXBhcmF0ZWQgYnkgY29tbWEsIHZhbHVlcyBhcmUgc2VwYXJhdGVkIGZyb20gb3B0aW9ucyBieSBgOicpLiAKK0FjY2VwdGVkIG9wdGlvbnM6CisKK21lbTpYICAgIC0gc2l6ZSBvZiBtZW1vcnkgKFggY2FuIGJlIGluIG1lZ2FieXRlcywga2lsb2J5dGVzIG9yIGJ5dGVzKQorICAgICAgICAgICBZb3UgY2FuIG9ubHkgZGVjcmVhc2UgdmFsdWUgZGV0ZXJtaW5lZCBieSBkcml2ZXIgYmVjYXVzZSBvZgorCSAgIGl0IGFsd2F5cyBwcm9iZSBmb3IgbWVtb3J5LiBEZWZhdWx0IGlzIHRvIHVzZSB3aG9sZSBkZXRlY3RlZAorCSAgIG1lbW9yeSB1c2FibGUgZm9yIG9uLXNjcmVlbiBkaXNwbGF5IChpLmUuIG1heC4gOCBNQikuCitkaXNhYmxlZCAtIGRvIG5vdCBsb2FkIGRyaXZlcjsgeW91IGNhbiB1c2UgYWxzbyBgb2ZmJywgYnV0IGBkaXNhYmxlZCcKKyAgICAgICAgICAgaXMgaGVyZSB0b28uCitlbmFibGVkICAtIGxvYWQgZHJpdmVyLCBpZiB5b3UgaGF2ZSBgdmlkZW89bWF0cm94ZmI6ZGlzYWJsZWQnIGluIExJTE8KKyAgICAgICAgICAgY29uZmlndXJhdGlvbiwgeW91IGNhbiBvdmVycmlkZSBpdCBieSB0aGlzICh5b3UgY2Fubm90IG92ZXJyaWRlCisJICAgYG9mZicpLiBJdCBpcyBkZWZhdWx0Lgorbm9hY2NlbCAgLSBkbyBub3QgdXNlIGFjY2VsZXJhdGlvbiBlbmdpbmUuIEl0IGRvZXMgbm90IHdvcmsgb24gQWxwaGFzLgorYWNjZWwgICAgLSB1c2UgYWNjZWxlcmF0aW9uIGVuZ2luZS4gSXQgaXMgZGVmYXVsdC4KK25vcGFuICAgIC0gY3JlYXRlIGluaXRpYWwgY29uc29sZXMgd2l0aCB2eXJlcyA9IHlyZXMsIHRodXMgZGlzYWJsaW5nIHZpcnR1YWwKKyAgICAgICAgICAgc2Nyb2xsaW5nLgorcGFuICAgICAgLSBjcmVhdGUgaW5pdGlhbCBjb25zb2xlcyBhcyB0YWxsIGFzIHBvc3NpYmxlICh2eXJlcyA9IG1lbW9yeS92eHJlcykuCisgICAgICAgICAgIEl0IGlzIGRlZmF1bHQuCitub3BjaXJldHJ5IC0gZGlzYWJsZSBQQ0kgcmV0cmllcy4gSXQgaXMgbmVlZGVkIGZvciBzb21lIGJyb2tlbiBjaGlwc2V0cywKKyAgICAgICAgICAgaXQgaXMgYXV0b2RldGVjdGVkIGZvciBpbnRlbCdzIDgyNDM3LiBJbiB0aGlzIGNhc2UgZGV2aWNlIGRvZXMKKwkgICBub3QgY29tcGx5IHRvIFBDSSAyLjEgc3BlY3MgKGl0IHdpbGwgbm90IGd1YXJhbnRlZSB0aGF0IGV2ZXJ5CisJICAgdHJhbnNhY3Rpb24gdGVybWluYXRlIHdpdGggc3VjY2VzcyBvciByZXRyeSBpbiAzMiBQQ0xLKS4KK3BjaXJldHJ5IC0gZW5hYmxlIFBDSSByZXRyaWVzLiBJdCBpcyBkZWZhdWx0LCBleGNlcHQgZm9yIGludGVsJ3MgODI0MzcuCitub3ZnYSAgICAtIGRpc2FibGVzIFZHQSBJL08gcG9ydHMuIEl0IGlzIGRlZmF1bHQgaWYgQklPUyBkaWQgbm90IGVuYWJsZSBkZXZpY2UuCisgICAgICAgICAgIFlvdSBzaG91bGQgbm90IHVzZSB0aGlzIG9wdGlvbiwgc29tZSBib2FyZHMgdGhlbiBkbyBub3QgcmVzdGFydAorCSAgIHdpdGhvdXQgcG93ZXIgb2ZmLgordmdhICAgICAgLSBwcmVzZXJ2ZSBzdGF0ZSBvZiBWR0EgSS9PIHBvcnRzLiBJdCBpcyBkZWZhdWx0LiBEcml2ZXIgZG9lcyBub3QKKyAgICAgICAgICAgZW5hYmxlIFZHQSBJL08gaWYgQklPUyBkaWQgbm90IGl0IChpdCBpcyBub3Qgc2FmZSB0byBlbmFibGUgaXQgaW4KKwkgICBtb3N0IGNhc2VzKS4KK25vYmlvcyAgIC0gZGlzYWJsZXMgQklPUyBST00uIEl0IGlzIGRlZmF1bHQgaWYgQklPUyBkaWQgbm90IGVuYWJsZSBCSU9TIGl0c2VsZi4KKyAgICAgICAgICAgWW91IHNob3VsZCBub3QgdXNlIHRoaXMgb3B0aW9uLCBzb21lIGJvYXJkcyB0aGVuIGRvIG5vdCByZXN0YXJ0CisJICAgd2l0aG91dCBwb3dlciBvZmYuCitiaW9zICAgICAtIHByZXNlcnZlIHN0YXRlIG9mIEJJT1MgUk9NLiBJdCBpcyBkZWZhdWx0LiBEcml2ZXIgZG9lcyBub3QgZW5hYmxlCisgICAgICAgICAgIEJJT1MgaWYgQklPUyB3YXMgbm90IGVuYWJsZWQgYmVmb3JlLgorbm9pbml0ICAgLSB0ZWxscyBkcml2ZXIsIHRoYXQgZGV2aWNlcyB3ZXJlIGFscmVhZHkgaW5pdGlhbGl6ZWQuIFlvdSBzaG91bGQgdXNlCisgICAgICAgICAgIGl0IGlmIHlvdSBoYXZlIEcxMDAgYW5kL29yIGlmIGRyaXZlciBjYW5ub3QgZGV0ZWN0IG1lbW9yeSwgeW91IHNlZQorCSAgIHN0cmFuZ2UgcGF0dGVybiBvbiBzY3JlZW4gYW5kIHNvIG9uLiBEZXZpY2VzIG5vdCBlbmFibGVkIGJ5IEJJT1MKKwkgICBhcmUgc3RpbGwgaW5pdGlhbGl6ZWQuIEl0IGlzIGRlZmF1bHQuCitpbml0ICAgICAtIGRyaXZlciBpbml0aWFsaXplcyBldmVyeSBkZXZpY2UgaXQga25vd3MgYWJvdXQuCittZW10eXBlICAtIHNwZWNpZmllcyBtZW1vcnkgdHlwZSwgaW1wbGllcyAnaW5pdCcuIFRoaXMgaXMgdmFsaWQgb25seSBmb3IgRzIwMCAKKyAgICAgICAgICAgYW5kIEc0MDAgYW5kIGhhcyBmb2xsb3dpbmcgbWVhbmluZzoKKyAgICAgICAgICAgICBHMjAwOiAwIC0+IDJ4MTI4S3gzMiBjaGlwcywgMk1CIG9uYm9hcmQsIHByb2JhYmx5IHNncmFtCisgICAgICAgICAgICAgICAgICAgMSAtPiAyeDEyOEt4MzIgY2hpcHMsIDRNQiBvbmJvYXJkLCBwcm9iYWJseSBzZ3JhbQorICAgICAgICAgICAgICAgICAgIDIgLT4gMngyNTZLeDMyIGNoaXBzLCA0TUIgb25ib2FyZCwgcHJvYmFibHkgc2dyYW0KKyAgICAgICAgICAgICAgICAgICAzIC0+IDJ4MjU2S3gzMiBjaGlwcywgOE1CIG9uYm9hcmQsIHByb2JhYmx5IHNncmFtCisgICAgICAgICAgICAgICAgICAgNCAtPiAyeDUxMkt4MTYgY2hpcHMsIDgvMTZNQiBvbmJvYXJkLCBwcm9iYWJseSBzZHJhbSBvbmx5CisgICAgICAgICAgICAgICAgICAgNSAtPiBzYW1lIGFzIGFib3ZlCisgICAgICAgICAgICAgICAgICAgNiAtPiA0eDEyOEt4MzIgY2hpcHMsIDRNQiBvbmJvYXJkLCBwcm9iYWJseSBzZ3JhbQorICAgICAgICAgICAgICAgICAgIDcgLT4gNHgxMjhLeDMyIGNoaXBzLCA4TUIgb25ib2FyZCwgcHJvYmFibHkgc2dyYW0KKyAgICAgICAgICAgICBHNDAwOiAwIC0+IDJ4NTEyS3gxNiBTRFJBTSwgMTYvMzJNQgorICAgICAgICAgICAgICAgICAgICAgICAgMng1MTJLeDMyIFNHUkFNLCAxNi8zMk1CCisgICAgICAgICAgICAgICAgICAgMSAtPiAyeDI1Nkt4MzIgU0dSQU0sIDgvMTZNQgorICAgICAgICAgICAgICAgICAgIDIgLT4gNHgxMjhLeDMyIFNHUkFNLCA4LzE2TUIKKyAgICAgICAgICAgICAgICAgICAzIC0+IDR4NTEyS3gzMiBTRFJBTSwgMzJNQgorICAgICAgICAgICAgICAgICAgIDQgLT4gNHgyNTZLeDMyIFNHUkFNLCAxNi8zMk1CCisgICAgICAgICAgICAgICAgICAgNSAtPiAyeDFNeDMyIFNEUkFNLCAzMk1CCisgICAgICAgICAgICAgICAgICAgNiAtPiByZXNlcnZlZAorICAgICAgICAgICAgICAgICAgIDcgLT4gcmVzZXJ2ZWQKKyAgICAgICAgICAgWW91IHNob3VsZCB1c2Ugc2RyYW0gb3Igc2dyYW0gcGFyYW1ldGVyIGluIGFkZGl0aW9uIHRvIG1lbXR5cGUgCisgICAgICAgICAgIHBhcmFtZXRlci4KK25vbXRyciAgIC0gZGlzYWJsZXMgd3JpdGUgY29tYmluaW5nIG9uIGZyYW1lIGJ1ZmZlci4gVGhpcyBzbG93cyBkb3duIGRyaXZlciBidXQKKyAgICAgICAgICAgdGhlcmUgaXMgcmVwb3J0ZWQgbWlub3IgaW5jb21wYXRpYmlsaXR5IGJldHdlZW4gR1VTIERNQSBhbmQgWEZyZWUKKwkgICB1bmRlciBoaWdoIGxvYWRzIGlmIHdyaXRlIGNvbWJpbmluZyBpcyBlbmFibGVkIChzb3VuZCBkcm9wb3V0cykuCittdHJyICAgICAtIGVuYWJsZXMgd3JpdGUgY29tYmluaW5nIG9uIGZyYW1lIGJ1ZmZlci4gSXQgc3BlZWRzIHVwIHZpZGVvIGFjY2Vzc2VzCisgICAgICAgICAgIG11Y2guIEl0IGlzIGRlZmF1bHQuIFlvdSBtdXN0IGhhdmUgTVRSUiBzdXBwb3J0IGVuYWJsZWQgaW4ga2VybmVsCisJICAgYW5kIHlvdXIgQ1BVIG11c3QgaGF2ZSBNVFJSIChmLmUuIFBlbnRpdW0gSUkgaGF2ZSB0aGVtKS4KK3NncmFtICAgIC0gdGVsbHMgdG8gZHJpdmVyIHRoYXQgeW91IGhhdmUgR3h4MCB3aXRoIFNHUkFNIG1lbW9yeS4gSXQgaGFzIG5vCisgICAgICAgICAgIGVmZmVjdCB3aXRob3V0IGBpbml0Jy4KK3NkcmFtICAgIC0gdGVsbHMgdG8gZHJpdmVyIHRoYXQgeW91IGhhdmUgR3h4MCB3aXRoIFNEUkFNIG1lbW9yeS4KKyAgICAgICAgICAgSXQgaXMgYSBkZWZhdWx0LgoraW52MjQgICAgLSBjaGFuZ2UgdGltaW5ncyBwYXJhbWV0ZXJzIGZvciAyNGJwcCBtb2RlcyBvbiBNaWxsZW5uaXVtIGFuZAorICAgICAgICAgICBNaWxsZW5uaXVtIElJLiBTcGVjaWZ5IHRoaXMgaWYgeW91IHNlZSBzdHJhbmdlIGNvbG9yIHNoYWRvd3MgYXJvdW5kCisJICAgY2hhcmFjdGVycy4KK25vaW52MjQgIC0gdXNlIHN0YW5kYXJkIHRpbWluZ3MuIEl0IGlzIHRoZSBkZWZhdWx0LgoraW52ZXJzZSAgLSBpbnZlcnQgY29sb3JzIG9uIHNjcmVlbiAoZm9yIExDRCBkaXNwbGF5cykKK25vaW52ZXJzZSAtIHNob3cgdHJ1ZSBjb2xvcnMgb24gc2NyZWVuLiBJdCBpcyBkZWZhdWx0LgorZGV2OlggICAgLSBiaW5kIGRyaXZlciB0byBkZXZpY2UgWC4gRHJpdmVyIG51bWJlcnMgZGV2aWNlIGZyb20gMCB1cCB0byBOLAorICAgICAgICAgICB3aGVyZSBkZXZpY2UgMCBpcyBmaXJzdCBga25vd24nIGRldmljZSBmb3VuZCwgMSBzZWNvbmQgYW5kIHNvIG9uLgorCSAgIGxzcGNpIGxpc3RzIGRldmljZXMgaW4gdGhpcyBvcmRlci4KKwkgICBEZWZhdWx0IGlzIGBldmVyeScga25vd24gZGV2aWNlLgorbm9od2N1cnNvciAtIGRpc2FibGVzIGhhcmR3YXJlIGN1cnNvciAodXNlIHNvZnR3YXJlIGN1cnNvciBpbnN0ZWFkKS4KK2h3Y3Vyc29yIC0gZW5hYmxlcyBoYXJkd2FyZSBjdXJzb3IuIEl0IGlzIGRlZmF1bHQuIElmIHlvdSBhcmUgdXNpbmcKKyAgICAgICAgICAgbm9uLWFjY2VsZXJhdGVkIG1vZGUgKGBub2FjY2VsJyBvciBgZmJzZXQgLWFjY2VsIGZhbHNlJyksIHNvZnR3YXJlCisJICAgY3Vyc29yIGlzIHVzZWQgKGV4Y2VwdCBmb3IgdGV4dCBtb2RlKS4KK25vYmxpbmsgIC0gZGlzYWJsZXMgY3Vyc29yIGJsaW5raW5nLiBDdXJzb3IgaW4gdGV4dCBtb2RlIGFsd2F5cyBibGlua3MgKGh3CisgICAgICAgICAgIGxpbWl0YXRpb24pLgorYmxpbmsgICAgLSBlbmFibGVzIGN1cnNvciBibGlua2luZy4gSXQgaXMgZGVmYXVsdC4KK25vZmFzdGZvbnQgLSBkaXNhYmxlcyBmYXN0Zm9udCBmZWF0dXJlLiBJdCBpcyBkZWZhdWx0LgorZmFzdGZvbnQ6WCAtIGVuYWJsZXMgZmFzdGZvbnQgZmVhdHVyZS4gWCBzcGVjaWZpZXMgc2l6ZSBvZiBtZW1vcnkgcmVzZXJ2ZWQgZm9yCisgICAgICAgICAgICAgZm9udCBkYXRhLCBpdCBtdXN0IGJlID49IChmb250d2lkdGgqZm9udGhlaWdodCpjaGFyc19pbl9mb250KS84LgorCSAgICAgSXQgaXMgZmFzdGVyIG9uIEd4MDAgc2VyaWVzLCBidXQgc2xvd2VyIG9uIG9sZGVyIGNhcmRzLgorZ3JheXNjYWxlIC0gZW5hYmxlIGdyYXlzY2FsZSBzdW1taW5nLiBJdCB3b3JrcyBpbiBQU0VVRE9DT0xPUiBtb2RlcyAodGV4dCwKKyAgICAgICAgICAgIDRicHAsIDhicHApLiBJbiBESVJFQ1RDT0xPUiBtb2RlcyBpdCBpcyBsaW1pdGVkIHRvIGNoYXJhY3RlcnMKKwkgICAgZGlzcGxheWVkIHRocm91Z2ggcHV0Yy9wdXRjcy4gRGlyZWN0IGFjY2Vzc2VzIHRvIGZyYW1lYnVmZmVyCisJICAgIGNhbiBwYWludCBjb2xvcnMuCitub2dyYXlzY2FsZSAtIGRpc2FibGUgZ3JheXNjYWxlIHN1bW1pbmcuIEl0IGlzIGRlZmF1bHQuCitjcm9zczRNQiAtIGVuYWJsZXMgdGhhdCBwaXhlbCBsaW5lIGNhbiBjcm9zcyA0TUIgYm91bmRhcnkuIEl0IGlzIGRlZmF1bHQgZm9yCisgICAgICAgICAgIG5vbi1NaWxsZW5uaXVtLgorbm9jcm9zczRNQiAtIHBpeGVsIGxpbmUgbXVzdCBub3QgY3Jvc3MgNE1CIGJvdW5kYXJ5LiBJdCBpcyBkZWZhdWx0IGZvcgorICAgICAgICAgICAgIE1pbGxlbm5pdW0gSSBvciBJSSwgYmVjYXVzZSBvZiB0aGVzZSBkZXZpY2VzIGhhdmUgaGFyZHdhcmUKKwkgICAgIGxpbWl0YXRpb25zIHdoaWNoIGRvIG5vdCBhbGxvdyB0aGlzLiBCdXQgdGhpcyBvcHRpb24gaXMKKwkgICAgIGluY29tcGF0aWJsZSB3aXRoIHNvbWUgKGlmIG5vdCBhbGwgeWV0IHJlbGVhc2VkKSB2ZXJzaW9ucyBvZgorCSAgICAgWEY4Nl9GQkRldi4KK2RmcCAgICAgIC0gZW5hYmxlcyBkaWdpdGFsIGZsYXQgcGFuZWwgaW50ZXJmYWNlLiBUaGlzIG9wdGlvbiBpcyBpbmNvbXBhdGlibGUgd2l0aAorICAgICAgICAgICBzZWNvbmRhcnkgKFRWKSBvdXRwdXQgLSBpZiBERlAgaXMgYWN0aXZlLCBUViBvdXRwdXQgbXVzdCBiZQorCSAgIGluYWN0aXZlIGFuZCB2aWNlIHZlcnNhLiBERlAgYWx3YXlzIHVzZXMgc2FtZSB0aW1pbmcgYXMgcHJpbWFyeQorCSAgIChtb25pdG9yKSBvdXRwdXQuCitkZnA6WCAgICAtIHVzZSBzZXR0aW5ncyBYIGZvciBkaWdpdGFsIGZsYXQgcGFuZWwgaW50ZXJmYWNlLiBYIGlzIG51bWJlciBmcm9tCisgICAgICAgICAgIDAgdG8gMHhGRiwgYW5kIG1lYW5pbmcgb2YgZWFjaCBpbmRpdmlkdWFsIGJpdCBpcyBkZXNjcmliZWQgaW4KKwkgICBHNDAwIG1hbnVhbCwgaW4gZGVzY3JpcHRpb24gb2YgREFDIHJlZ2lzdGVyIDB4MUYuIEZvciBub3JtYWwgb3BlcmF0aW9uCisJICAgeW91IHNob3VsZCBzZXQgYWxsIGJpdHMgdG8gemVybywgZXhjZXB0IGxvd2VzdCBiaXQuIFRoaXMgbG93ZXN0IGJpdAorCSAgIHNlbGVjdHMgd2hvIGlzIHNvdXJjZSBvZiBkaXNwbGF5IGNsb2Nrcywgd2hldGhlciBHNDAwLCBvciBwYW5lbC4KKwkgICBEZWZhdWx0IHZhbHVlIGlzIG5vdyByZWFkIGJhY2sgZnJvbSBoYXJkd2FyZSAtIHNvIHlvdSBzaG91bGQgc3BlY2lmeQorCSAgIHRoaXMgdmFsdWUgb25seSBpZiB5b3UgYXJlIGFsc28gdXNpbmcgYGluaXQnIHBhcmFtZXRlci4KK291dHB1dHM6WFlaIC0gc2V0IG1hcHBpbmcgYmV0d2VlbiBDUlRDIGFuZCBvdXRwdXRzLiBFYWNoIGxldHRlciBjYW4gaGF2ZSB2YWx1ZQorICAgICAgICAgICBvZiAwIChmb3Igbm8gQ1JUQyksIDEgKENSVEMxKSBvciAyIChDUlRDMiksIGFuZCBmaXJzdCBsZXR0ZXIgY29ycmVzcG9uZHMKKwkgICB0byBwcmltYXJ5IGFuYWxvZyBvdXRwdXQsIHNlY29uZCBsZXR0ZXIgdG8gdGhlIHNlY29uZGFyeSBhbmFsb2cgb3V0cHV0CisJICAgYW5kIHRoaXJkIGxldHRlciB0byB0aGUgRFZJIG91dHB1dC4gRGVmYXVsdCBzZXR0aW5nIGlzIDEwMCBmb3IKKwkgICBjYXJkcyBiZWxvdyBHNDAwIG9yIEc0MDAgd2l0aG91dCBERlAsIDEwMSBmb3IgRzQwMCB3aXRoIERGUCwgYW5kCisJICAgMTExIGZvciBHNDUwIGFuZCBHNTUwLiBZb3UgY2FuIHNldCBtYXBwaW5nIG9ubHkgb24gZmlyc3QgY2FyZCwKKwkgICB1c2UgbWF0cm94c2V0IGZvciBzZXR0aW5nIHVwIG90aGVyIGRldmljZXMuCit2ZXNhOlggICAtIHNlbGVjdHMgc3RhcnR1cCB2aWRlb21vZGUuIFggaXMgbnVtYmVyIGZyb20gMCB0byAweDFGRiwgc2VlIHRhYmxlCisgICAgICAgICAgIGFib3ZlIGZvciBkZXRhaWxlZCBleHBsYW5hdGlvbi4gRGVmYXVsdCBpcyA2NDB4NDgweDhicHAgaWYgZHJpdmVyCisJICAgaGFzIDhicHAgc3VwcG9ydC4gT3RoZXJ3aXNlIGZpcnN0IGF2YWlsYWJsZSBvZiA2NDB4MzUweDRicHAsCisJICAgNjQweDQ4MHgxNWJwcCwgNjQweDQ4MHgyNGJwcCwgNjQweDQ4MHgzMmJwcCBvciA4MHgyNSB0ZXh0CisJICAgKDgweDI1IHRleHQgaXMgYWx3YXlzIGF2YWlsYWJsZSkuCisKK0lmIHlvdSBhcmUgbm90IHNhdGlzZmllZCB3aXRoIHZpZGVvbW9kZSBzZWxlY3RlZCBieSBgdmVzYScgb3B0aW9uLCB5b3UKK2NhbiBtb2RpZnkgaXQgd2l0aCB0aGVzZSBvcHRpb25zOgorCit4cmVzOlggICAtIGhvcml6b250YWwgcmVzb2x1dGlvbiwgaW4gcGl4ZWxzLiBEZWZhdWx0IGlzIGRlcml2ZWQgZnJvbSBgdmVzYScKKyAgICAgICAgICAgb3B0aW9uLgoreXJlczpYICAgLSB2ZXJ0aWNhbCByZXNvbHV0aW9uLCBpbiBwaXhlbCBsaW5lcy4gRGVmYXVsdCBpcyBkZXJpdmVkIGZyb20gYHZlc2EnCisgICAgICAgICAgIG9wdGlvbi4KK3VwcGVyOlggIC0gdG9wIGJvdW5kYXJ5OiBsaW5lcyBiZXR3ZWVuIGVuZCBvZiBWU1lOQyBwdWxzZSBhbmQgc3RhcnQgb2YgZmlyc3QKKyAgICAgICAgICAgcGl4ZWwgbGluZSBvZiBwaWN0dXJlLiBEZWZhdWx0IGlzIGRlcml2ZWQgZnJvbSBgdmVzYScgb3B0aW9uLgorbG93ZXI6WCAgLSBib3R0b20gYm91bmRhcnk6IGxpbmVzIGJldHdlZW4gZW5kIG9mIHBpY3R1cmUgYW5kIHN0YXJ0IG9mIFZTWU5DCisgICAgICAgICAgIHB1bHNlLiBEZWZhdWx0IGlzIGRlcml2ZWQgZnJvbSBgdmVzYScgb3B0aW9uLgordnNsZW46WCAgLSBsZW5ndGggb2YgVlNZTkMgcHVsc2UsIGluIGxpbmVzLiBEZWZhdWx0IGlzIGRlcml2ZWQgZnJvbSBgdmVzYScKKyAgICAgICAgICAgb3B0aW9uLgorbGVmdDpYICAgLSBsZWZ0IGJvdW5kYXJ5OiBwaXhlbHMgYmV0d2VlbiBlbmQgb2YgSFNZTkMgcHVsc2UgYW5kIGZpcnN0IHBpeGVsLgorICAgICAgICAgICBEZWZhdWx0IGlzIGRlcml2ZWQgZnJvbSBgdmVzYScgb3B0aW9uLgorcmlnaHQ6WCAgLSByaWdodCBib3VuZGFyeTogcGl4ZWxzIGJldHdlZW4gZW5kIG9mIHBpY3R1cmUgYW5kIHN0YXJ0IG9mIEhTWU5DCisgICAgICAgICAgIHB1bHNlLiBEZWZhdWx0IGlzIGRlcml2ZWQgZnJvbSBgdmVzYScgb3B0aW9uLgoraHNsZW46WCAgLSBsZW5ndGggb2YgSFNZTkMgcHVsc2UsIGluIHBpeGVscy4gRGVmYXVsdCBpcyBkZXJpdmVkIGZyb20gYHZlc2EnCisgICAgICAgICAgIG9wdGlvbi4KK3BpeGNsb2NrOlggLSBkb3RjbG9ja3MsIGluIHBzIChwaWNvc2Vjb25kcykuIERlZmF1bHQgaXMgZGVyaXZlZCBmcm9tIGB2ZXNhJworICAgICAgICAgICAgIG9wdGlvbiBhbmQgZnJvbSBgZmgnIGFuZCBgZnYnIG9wdGlvbnMuCitzeW5jOlggICAtIHN5bmMuIHB1bHNlIC0gYml0IDAgaW52ZXJ0cyBIU1lOQyBwb2xhcml0eSwgYml0IDEgVlNZTkMgcG9sYXJpdHkuCisgICAgICAgICAgIElmIGJpdCAzICh2YWx1ZSAweDA4KSBpcyBzZXQsIGNvbXBvc2l0ZSBzeW5jIGluc3RlYWQgb2YgSFNZTkMgaXMKKwkgICBnZW5lcmF0ZWQuIElmIGJpdCA1ICh2YWx1ZSAweDIwKSBpcyBzZXQsIHN5bmMgb24gZ3JlZW4gaXMgdHVybmVkIG9uLgorCSAgIERvIG5vdCBmb3JnZXQgdGhhdCBpZiB5b3Ugd2FudCBzeW5jIG9uIGdyZWVuLCB5b3UgYWxzbyBwcm9iYWJseQorCSAgIHdhbnQgY29tcG9zaXRlIHN5bmMuCisJICAgRGVmYXVsdCBkZXBlbmRzIG9uIGB2ZXNhJy4KK2RlcHRoOlggIC0gQml0cyBwZXIgcGl4ZWw6IDA9dGV4dCwgNCw4LDE1LDE2LDI0IG9yIDMyLiBEZWZhdWx0IGRlcGVuZHMgb24KKyAgICAgICAgICAgYHZlc2EnLgorCitJZiB5b3Uga25vdyBjYXBhYmlsaXRpZXMgb2YgeW91ciBtb25pdG9yLCB5b3UgY2FuIHNwZWNpZnkgc29tZSAob3IgYWxsKSBvZgorYG1heGNsaycsIGBmaCcgYW5kIGBmdicuIEluIHRoaXMgY2FzZSwgYHBpeGNsb2NrJyBpcyBjb21wdXRlZCBzbyB0aGF0CitwaXhjbG9jayA8PSBtYXhjbGssIHJlYWxfZmggPD0gZmggYW5kIHJlYWxfZnYgPD0gZnYuCisKK21heGNsazpYIC0gbWF4aW11bSBkb3RjbG9jay4gWCBjYW4gYmUgc3BlY2lmaWVkIGluIE1Ieiwga0h6IG9yIEh6LiBEZWZhdWx0IGlzCisgICAgICAgICAgIGBkb24ndCBjYXJlJy4KK2ZoOlggICAgIC0gbWF4aW11bSBob3Jpem9udGFsIHN5bmNocm9uaXphdGlvbiBmcmVxdWVuY3kuIFggY2FuIGJlIHNwZWNpZmllZAorICAgICAgICAgICBpbiBrSHogb3IgSHouIERlZmF1bHQgaXMgYGRvbid0IGNhcmUnLgorZnY6WCAgICAgLSBtYXhpbXVtIHZlcnRpY2FsIGZyZXF1ZW5jeS4gWCBtdXN0IGJlIHNwZWNpZmllZCBpbiBIei4gRGVmYXVsdCBpcworICAgICAgICAgICA3MCBmb3IgbW9kZXMgZGVyaXZlZCBmcm9tIGB2ZXNhJyB3aXRoIHlyZXMgPD0gNDAwLCA2MEh6IGZvcgorCSAgIHlyZXMgPiA0MDAuCisKKworTGltaXRhdGlvbnMKKz09PT09PT09PT09CisKK1RoZXJlIGFyZSBrbm93biBhbmQgdW5rbm93biBidWdzLCBmZWF0dXJlcyBhbmQgbWlzZmVhdHVyZXMuCitDdXJyZW50bHkgdGhlcmUgYXJlIGZvbGxvd2luZyBrbm93biBidWdzOgorICsgU1ZHQUxpYiBkb2VzIG5vdCByZXN0b3JlIHNjcmVlbiBvbiBleGl0CisgKyBnZW5lcmljIGZiY29uLWNmYlggcHJvY2VkdXJlcyBkbyBub3Qgd29yayBvbiBBbHBoYXMuIER1ZSB0byB0aGlzLAorICAgYG5vYWNjZWwnIChhbmQgY2ZiNCBhY2NlbCkgZHJpdmVyIGRvZXMgbm90IHdvcmsgb24gQWxwaGEuIFNvIGV2ZXJ5b25lCisgICB3aXRoIGFjY2VzcyB0byAvZGV2L2ZiKiBvbiBBbHBoYSBjYW4gaGFuZyBtYWNoaW5lICh5b3Ugc2hvdWxkIHJlc3RyaWN0CisgICBhY2Nlc3MgdG8gL2Rldi9mYiogLSBldmVyeW9uZSB3aXRoIGFjY2VzcyB0byB0aGlzIGRldmljZSBjYW4gZGVzdHJveQorICAgeW91ciBtb25pdG9yLCBiZWxpZXZlIG1lLi4uKS4KKyArIDI0YnBwIGRvZXMgbm90IHN1cHBvcnQgY29ycmVjdGx5IFhGLUZCRGV2IG9uIGJpZy1lbmRpYW4gYXJjaGl0ZWN0dXJlcy4KKyArIGludGVybGFjZWQgdGV4dCBtb2RlIGlzIG5vdCBzdXBwb3J0ZWQ7IGl0IGxvb2tzIGxpa2UgaGFyZHdhcmUgbGltaXRhdGlvbiwKKyAgIGJ1dCBJJ20gbm90IHN1cmUuCisgKyBHeHgwIFNHUkFNL1NEUkFNIGlzIG5vdCBhdXRvZGV0ZWN0ZWQuCisgKyBJZiB5b3UgYXJlIHVzaW5nIG1vcmUgdGhhbiBvbmUgZnJhbWVidWZmZXIgZGV2aWNlLCB5b3UgbXVzdCBib290IGtlcm5lbAorICAgd2l0aCAndmlkZW89c2Nyb2xsYmFjazowJy4KKyArIG1heWJlIG1vcmUuLi4KK0FuZCBmb2xsb3dpbmcgbWlzZmVhdHVyZXM6CisgKyBTVkdBTGliIGRvZXMgbm90IHJlc3RvcmUgc2NyZWVuIG9uIGV4aXQuCisgKyBwaXhjbG9jayBmb3IgdGV4dCBtb2RlcyBpcyBsaW1pdGVkIGJ5IGhhcmR3YXJlIHRvCisgICAgODMgTUh6IG9uIEcyMDAKKyAgICA2NiBNSHogb24gTWlsbGVubml1bSBJCisgICAgNjAgTUh6IG9uIE1pbGxlbm5pdW0gSUkKKyAgIEJlY2F1c2UgSSBoYXZlIG5vIGFjY2VzcyB0byBvdGhlciBkZXZpY2VzLCBJIGRvIG5vdCBrbm93IHNwZWNpZmljCisgICBmcmVxdWVuY2llcyBmb3IgdGhlbS4gU28gZHJpdmVyIGRvZXMgbm90IGNoZWNrIHRoaXMgYW5kIGFsbG93cyB5b3UgdG8KKyAgIHNldCBmcmVxdWVuY3kgaGlnaGVyIHRoYXQgdGhpcy4gSXQgY2F1c2VzIHNwYXJrcywgYmxhY2sgaG9sZXMgYW5kIG90aGVyCisgICBwcmV0dHkgZWZmZWN0cyBvbiBzY3JlZW4uIERldmljZSB3YXMgbm90IGRlc3Ryb3llZCBkdXJpbmcgdGVzdHMuIDotKQorICsgbXkgTWlsbGVubml1bSBHMjAwIG9zY2lsbGF0b3IgaGFzIGZyZXF1ZW5jeSByYW5nZSBmcm9tIDM1IE1IeiB0byAzODAgTUh6CisgICAoYW5kIGl0IHdvcmtzIHdpdGggOGJwcCBvbiBhYm91dCAzMjAgTUh6IGRvdGNsb2NrcyAoYW5kIGNoYW5nZWQgbWNsaykpLgorICAgQnV0IE1hdHJveCBzYXlzIG9uIHByb2R1Y3Qgc2hlZXQgdGhhdCBWQ08gbGltaXQgaXMgNTAtMjUwIE1Ieiwgc28gSSBiZWxpZXZlCisgICB0aGVtIChtYXliZSB0aGF0IGNoaXAgb3ZlcmhlYXRzLCBidXQgaXQgaGFzIGEgdmVyeSBiaWcgY29vbGVyIChHMTAwIGhhcworICAgbm9uZSksIHNvIGl0IHNob3VsZCB3b3JrKS4KKyArIHNwZWNpYWwgbWl4ZWQgdmlkZW8vZ3JhcGhpY3MgdmlkZW9tb2RlcyBvZiBNeXN0aXF1ZSBhbmQgR3gwMCAtIDJHOFYxNiBhbmQKKyAgIEcxNlYxNiBhcmUgbm90IHN1cHBvcnRlZAorICsgY29sb3Iga2V5aW5nIGlzIG5vdCBzdXBwb3J0ZWQKKyArIGZlYXR1cmUgY29ubmVjdG9yIG9mIE15c3RpcXVlIGFuZCBHeDAwIGlzIHNldCB0byBWR0EgbW9kZSAoaXQgaXMgZGlzYWJsZWQKKyAgIGJ5IEJJT1MpCisgKyBEREMgKG1vbml0b3IgZGV0ZWN0aW9uKSBpcyBzdXBwb3J0ZWQgdGhyb3VnaCBkdWFsaGVhZCBkcml2ZXIKKyArIHNvbWUgY2hlY2sgZm9yIGlucHV0IHZhbHVlcyBhcmUgbm90IHNvIHN0cmljdCBob3cgaXQgc2hvdWxkIGJlICh5b3UgY2FuCisgICBzcGVjaWZ5IHZzbGVuPTQwMDAgYW5kIHNvIG9uKS4KKyArIG1heWJlIG1vcmUuLi4KK0FuZCBmb2xsb3dpbmcgZmVhdHVyZXM6CisgKyA0YnBwIGlzIGF2YWlsYWJsZSBvbmx5IG9uIE1pbGxlbm5pdW0gSSBhbmQgTWlsbGVubml1bSBJSS4gSXQgaXMgaGFyZHdhcmUKKyAgIGxpbWl0YXRpb24uCisgKyBzZWxlY3Rpb24gYmV0d2VlbiAxOjU6NTo1IGFuZCA1OjY6NSAxNmJwcCB2aWRlb21vZGUgaXMgZG9uZSBieSAtcmdiYSAKKyAgIG9wdGlvbiBvZiBmYnNldDogImZic2V0IC1kZXB0aCAxNiAtcmdiYSA1LDUsNSIgc2VsZWN0cyAxOjU6NTo1LCBhbnl0aGluZworICAgZWxzZSBzZWxlY3RzIDU6Njo1IG1vZGUuCisgKyB0ZXh0IG1vZGUgdXNlcyA2IGJpdCBWR0EgcGFsZXR0ZSBpbnN0ZWFkIG9mIDggYml0IChvbmUgb2YgMjYyMTQ0IGNvbG9ycworICAgaW5zdGVhZCBvZiBvbmUgb2YgMTZNIGNvbG9ycykuIEl0IGlzIGR1ZSB0byBoYXJkd2FyZSBsaW1pdGF0aW9uIG9mIAorICAgTWlsbGVubml1bSBJL0lJIGFuZCBTVkdBTGliIGNvbXBhdGliaWxpdHkuCisKKworQmVuY2htYXJrcworPT09PT09PT09PQorSXQgaXMgdGltZSB0byByZWRyYXcgd2hvbGUgc2NyZWVuIDEwMDAgdGltZXMgaW4gMTAyNHg3NjgsIDYwSHouIEl0IGlzCit0aW1lIGZvciBkcmF3IDYxNDQwMDAgY2hhcmFjdGVycyBvbiBzY3JlZW4gdGhyb3VnaCAvZGV2L3Zjc2EKKyhmb3IgMzJicHAgaXQgaXMgYWJvdXQgM0dCIG9mIGRhdGEgKGV4YWN0bHkgMzAwMCBNQik7IGZvciA4eDE2IGZvbnQgaW4gCisxNiBzZWNvbmRzLCBpLmUuIDE4NyBNQnBzKS4KK1RpbWVzIHdlcmUgb2J0YWluZWQgZnJvbSBvbmUgb2xkZXIgdmVyc2lvbiBvZiBkcml2ZXIsIG5vdyB0aGV5IGFyZSBhYm91dCAzJQorZmFzdGVyLCBpdCBpcyBrZXJuZWwtc3BhY2Ugb25seSB0aW1lIG9uIFAtSUkvMzUwIE1IeiwgTWlsbGVubml1bSBJIGluIDMzIE1IegorUENJIHNsb3QsIEcyMDAgaW4gQUdQIDJ4IHNsb3QuIEkgZGlkIG5vdCB0ZXN0IHZnYWNvbi4KKworTk9BQ0NFTAorICAgICAgICA4eDE2ICAgICAgICAgICAgICAgICAxMngyMgorICAgICAgICBNaWxsZW5uaXVtIEkgIEcyMDAgICBNaWxsZW5uaXVtIEkgIEcyMDAKKzhicHAgICAgMTYuNDIgICAgICAgICA5LjU0ICAgMTIuMzMgICAgICAgICA5LjEzCisxNmJwcCAgIDIxLjAwICAgICAgICAxNS43MCAgIDE5LjExICAgICAgICAxNS4wMgorMjRicHAgICAzNi42NiAgICAgICAgMzYuNjYgICAzNS4wMCAgICAgICAgMzUuMDAKKzMyYnBwICAgMzUuMDAgICAgICAgIDMwLjAwICAgMzMuODUgICAgICAgIDI4LjY2CisKK0FDQ0VMLCBub2Zhc3Rmb250CisgICAgICAgIDh4MTYgICAgICAgICAgICAgICAgIDEyeDIyICAgICAgICAgICAgICAgIDZ4MTEKKwlNaWxsZW5uaXVtIEkgIEcyMDAgICBNaWxsZW5uaXVtIEkgIEcyMDAgICBNaWxsZW5uaXVtIEkgIEcyMDAKKzhicHAgICAgIDcuNzkgICAgICAgICA3LjI0ICAgMTMuNTUgICAgICAgICA3Ljc4ICAgMzAuMDAgICAgICAgIDIxLjAxCisxNmJwcCAgICA5LjEzICAgICAgICAgNy43OCAgIDE2LjE2ICAgICAgICAgNy43OCAgIDMwLjAwICAgICAgICAyMS4wMQorMjRicHAgICAxNC4xNyAgICAgICAgMTAuNzIgICAxOC42OSAgICAgICAgMTAuMjQgICAzNC45OSAgICAgICAgMjEuMDEKKzMyYnBwICAgMTYuMTUJICAgICAxNi4xNiAgIDE4LjczICAgICAgICAxMy4wOSAgIDM0Ljk5ICAgICAgICAyMS4wMQorCitBQ0NFTCwgZmFzdGZvbnQKKyAgICAgICAgOHgxNiAgICAgICAgICAgICAgICAgMTJ4MjIgICAgICAgICAgICAgICAgNngxMQorCU1pbGxlbm5pdW0gSSAgRzIwMCAgIE1pbGxlbm5pdW0gSSAgRzIwMCAgIE1pbGxlbm5pdW0gSSAgRzIwMAorOGJwcCAgICAgOC40MSAgICAgICAgIDYuMDEgICAgNi41NCAgICAgICAgIDQuMzcgICAxNi4wMCAgICAgICAgMTAuNTEKKzE2YnBwICAgIDkuNTQgICAgICAgICA5LjEyICAgIDguNzYgICAgICAgICA2LjE3ICAgMTcuNTIgICAgICAgIDE0LjAxCisyNGJwcCAgIDE1LjAwICAgICAgICAxMi4zNiAgIDExLjY3ICAgICAgICAxMC4wMCAgIDIyLjAxICAgICAgICAxOC4zMgorMzJicHAgICAxNi4xOCAgICAgICAgMTguMjkqICAxMi43MSAgICAgICAgMTIuNzQgICAyNC40NCAgICAgICAgMjEuMDAKKworVEVYVAorICAgICAgICA4eDE2CisJTWlsbGVubml1bSBJICBHMjAwCitURVhUICAgICAzLjI5ICAgICAgICAgMS41MAorCisqIFllcywgaXQgaXMgc2xvd2VyIHRoYW4gTWlsbGVubml1bSBJLgorCisKK0R1YWxoZWFkIEc0MDAKKz09PT09PT09PT09PT0KK0RyaXZlciBzdXBwb3J0cyBkdWFsaGVhZCBHNDAwIHdpdGggc29tZSBsaW1pdGF0aW9uczoKKyArIHNlY29uZGFyeSBoZWFkIHNoYXJlcyB2aWRlb21lbW9yeSB3aXRoIHByaW1hcnkgaGVhZC4gSXQgaXMgbm90IHByb2JsZW0KKyAgIGlmIHlvdSBoYXZlIDMyTUIgb2YgdmlkZW9yYW0sIGJ1dCBpZiB5b3UgaGF2ZSBvbmx5IDE2TUIsIHlvdSBtYXkgaGF2ZQorICAgdG8gdGhpbmsgdHdpY2UgYmVmb3JlIGNob29zaW5nIHZpZGVvbW9kZSAoZm9yIGV4YW1wbGUgdHdpY2UgMTg4MHgxNDQweDMyYnBwCisgICBpcyBub3QgcG9zc2libGUpLgorICsgZHVlIHRvIGhhcmR3YXJlIGxpbWl0YXRpb24sIHNlY29uZGFyeSBoZWFkIGNhbiB1c2Ugb25seSAxNiBhbmQgMzJicHAKKyAgIHZpZGVvbW9kZXMuCisgKyBzZWNvbmRhcnkgaGVhZCBpcyBub3QgYWNjZWxlcmF0ZWQuIFRoZXJlIHdlcmUgYmFkIHByb2JsZW1zIHdpdGggYWNjZWxlcmF0ZWQKKyAgIFhGcmVlIHdoZW4gc2Vjb25kYXJ5IGhlYWQgdXNlZCB0byB1c2UgYWNjZWxlcmF0aW9uLgorICsgc2Vjb25kYXJ5IGhlYWQgYWx3YXlzIHBvd2VydXBzIGluIDY0MHg0ODBANjAtMzIgdmlkZW9tb2RlLiBZb3UgaGF2ZSB0byB1c2UKKyAgIGZic2V0IHRvIGNoYW5nZSB0aGlzIG1vZGUuCisgKyBzZWNvbmRhcnkgaGVhZCBhbHdheXMgcG93ZXJ1cHMgaW4gbW9uaXRvciBtb2RlLiBZb3UgaGF2ZSB0byB1c2UgZmJtYXRyb3hzZXQKKyAgIHRvIGNoYW5nZSBpdCB0byBUViBtb2RlLiBBbHNvLCB5b3UgbXVzdCBzZWxlY3QgYXQgbGVhc3QgNTI1IGxpbmVzIGZvcgorICAgTlRTQyBvdXRwdXQgYW5kIDYyNSBsaW5lcyBmb3IgUEFMIG91dHB1dC4KKyArIGtlcm5lbCBpcyBub3QgZnVsbHkgbXVsdGloZWFkIHJlYWR5LiBTbyBzb21lIHRoaW5ncyBhcmUgaW1wb3NzaWJsZSB0byBkby4KKyArIGlmIHlvdSBjb21waWxlZCBpdCBhcyBtb2R1bGUsIHlvdSBtdXN0IGluc2VydCBpMmMtbWF0cm94ZmIsIG1hdHJveGZiX21hdmVuCisgICBhbmQgbWF0cm94ZmJfY3J0YzIgaW50byBrZXJuZWwuCisKKworRHVhbGhlYWQgRzQ1MAorPT09PT09PT09PT09PQorRHJpdmVyIHN1cHBvcnRzIGR1YWxoZWFkIEc0NTAgd2l0aCBzb21lIGxpbWl0YXRpb25zOgorICsgc2Vjb25kYXJ5IGhlYWQgc2hhcmVzIHZpZGVvbWVtb3J5IHdpdGggcHJpbWFyeSBoZWFkLiBJdCBpcyBub3QgcHJvYmxlbQorICAgaWYgeW91IGhhdmUgMzJNQiBvZiB2aWRlb3JhbSwgYnV0IGlmIHlvdSBoYXZlIG9ubHkgMTZNQiwgeW91IG1heSBoYXZlCisgICB0byB0aGluayB0d2ljZSBiZWZvcmUgY2hvb3NpbmcgdmlkZW9tb2RlLgorICsgZHVlIHRvIGhhcmR3YXJlIGxpbWl0YXRpb24sIHNlY29uZGFyeSBoZWFkIGNhbiB1c2Ugb25seSAxNiBhbmQgMzJicHAKKyAgIHZpZGVvbW9kZXMuCisgKyBzZWNvbmRhcnkgaGVhZCBpcyBub3QgYWNjZWxlcmF0ZWQuCisgKyBzZWNvbmRhcnkgaGVhZCBhbHdheXMgcG93ZXJ1cHMgaW4gNjQweDQ4MEA2MC0zMiB2aWRlb21vZGUuIFlvdSBoYXZlIHRvIHVzZQorICAgZmJzZXQgdG8gY2hhbmdlIHRoaXMgbW9kZS4KKyArIFRWIG91dHB1dCBpcyBub3Qgc3VwcG9ydGVkCisgKyBrZXJuZWwgaXMgbm90IGZ1bGx5IG11bHRpaGVhZCByZWFkeSwgc28gc29tZSB0aGluZ3MgYXJlIGltcG9zc2libGUgdG8gZG8uCisgKyBpZiB5b3UgY29tcGlsZWQgaXQgYXMgbW9kdWxlLCB5b3UgbXVzdCBpbnNlcnQgbWF0cm94ZmJfZzQ1MCBhbmQgbWF0cm94ZmJfY3J0YzIKKyAgIGludG8ga2VybmVsLgorCQorLS0KK1BldHIgVmFuZHJvdmVjIDx2YW5kcm92ZUB2Yy5jdnV0LmN6PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mYi9tZXRyb25vbWVmYi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZiL21ldHJvbm9tZWZiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzdjYTQxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mYi9tZXRyb25vbWVmYi50eHQKQEAgLTAsMCArMSwzNiBAQAorCQkJTWV0cm9ub21lZmIKKwkJCS0tLS0tLS0tLS0tCitNYWludGFpbmVkIGJ5IEpheWEgS3VtYXIgPGpheWFrdW1hci5sa21sLmdtYWlsLmNvbT4KK0xhc3QgcmV2aXNlZDogTWFyIDEwLCAyMDA4CisKK01ldHJvbm9tZWZiIGlzIGEgZHJpdmVyIGZvciB0aGUgTWV0cm9ub21lIGRpc3BsYXkgY29udHJvbGxlci4gVGhlIGNvbnRyb2xsZXIKK2lzIGZyb20gRS1JbmsgQ29ycG9yYXRpb24uIEl0IGlzIGludGVuZGVkIHRvIGJlIHVzZWQgdG8gZHJpdmUgdGhlIEUtSW5rCitWaXpwbGV4IGRpc3BsYXkgbWVkaWEuIEUtSW5rIGhvc3RzIHNvbWUgZGV0YWlscyBvZiB0aGlzIGNvbnRyb2xsZXIgYW5kIHRoZQorZGlzcGxheSBtZWRpYSBoZXJlIGh0dHA6Ly93d3cuZS1pbmsuY29tL3Byb2R1Y3RzL21hdHJpeC9tZXRyb25vbWUuaHRtbCAuCisKK01ldHJvbm9tZSBpcyBpbnRlcmZhY2VkIHRvIHRoZSBob3N0IENQVSB0aHJvdWdoIHRoZSBBTUxDRCBpbnRlcmZhY2UuIFRoZQoraG9zdCBDUFUgZ2VuZXJhdGVzIHRoZSBjb250cm9sIGluZm9ybWF0aW9uIGFuZCB0aGUgaW1hZ2UgaW4gYSBmcmFtZWJ1ZmZlcgord2hpY2ggaXMgdGhlbiBkZWxpdmVyZWQgdG8gdGhlIEFNTENEIGludGVyZmFjZSBieSBhIGhvc3Qgc3BlY2lmaWMgbWV0aG9kLgorVGhlIGRpc3BsYXkgYW5kIGVycm9yIHN0YXR1cyBhcmUgZWFjaCBwdWxsZWQgdGhyb3VnaCBpbmRpdmlkdWFsIEdQSU9zLgorCitNZXRyb25vbWVmYiBpcyBwbGF0Zm9ybSBpbmRlcGVuZGVudCBhbmQgZGVwZW5kcyBvbiBhIGJvYXJkIHNwZWNpZmljIGRyaXZlcgordG8gZG8gYWxsIHBoeXNpY2FsIElPIHdvcmsuIEN1cnJlbnRseSwgYW4gZXhhbXBsZSBpcyBpbXBsZW1lbnRlZCBmb3IgdGhlCitQWEEgYm9hcmQgdXNlZCBpbiB0aGUgQU0tMjAwIEVQRCBkZXZraXQuIFRoaXMgZXhhbXBsZSBpcyBhbTIwMGVwZC5jCisKK01ldHJvbm9tZWZiIHJlcXVpcmVzIHdhdmVmb3JtIGluZm9ybWF0aW9uIHdoaWNoIGlzIGRlbGl2ZXJlZCB2aWEgdGhlIEFNTENECitpbnRlcmZhY2UgdG8gdGhlIG1ldHJvbm9tZSBjb250cm9sbGVyLiBUaGUgd2F2ZWZvcm0gaW5mb3JtYXRpb24gaXMgZXhwZWN0ZWQgdG8KK2JlIGRlbGl2ZXJlZCBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIGZpcm13YXJlIGNsYXNzIGludGVyZmFjZS4gVGhlIHdhdmVmb3JtIGZpbGUKK2NhbiBiZSBjb21wcmVzc2VkIGFzIGxvbmcgYXMgeW91ciB1ZGV2IG9yIGhvdHBsdWcgc2NyaXB0IGlzIGF3YXJlIG9mIHRoZSBuZWVkCit0byB1bmNvbXByZXNzIGl0IGJlZm9yZSBkZWxpdmVyaW5nIGl0LiBtZXRyb25vbWVmYiB3aWxsIGFzayBmb3IgbWV0cm9ub21lLndiZgord2hpY2ggd291bGQgdHlwaWNhbGx5IGdvIGludG8gL2xpYi9maXJtd2FyZS9tZXRyb25vbWUud2JmIGRlcGVuZGluZyBvbiB5b3VyCit1ZGV2L2hvdHBsdWcgc2V0dXAuIEkgaGF2ZSBvbmx5IHRlc3RlZCB3aXRoIGEgc2luZ2xlIHdhdmVmb3JtIGZpbGUgd2hpY2ggd2FzCitvcmlnaW5hbGx5IGxhYmVsZWQgMjNQMDEyMDFfNjBfV1QwMTA3X01UQy4gSSBkbyBub3Qga25vdyB3aGF0IGl0IHN0YW5kcyBmb3IuCitDYXV0aW9uIHNob3VsZCBiZSBleGVyY2lzZWQgd2hlbiBtYW5pcHVsYXRpbmcgdGhlIHdhdmVmb3JtIGFzIHRoZXJlIG1heSBiZQorYSBwb3NzaWJpbGl0eSB0aGF0IGl0IGNvdWxkIGhhdmUgc29tZSBwZXJtYW5lbnQgZWZmZWN0cyBvbiB0aGUgZGlzcGxheSBtZWRpYS4KK0kgbmVpdGhlciBoYXZlIGFjY2VzcyB0byBub3Iga25vdyBleGFjdGx5IHdoYXQgdGhlIHdhdmVmb3JtIGRvZXMgaW4gdGVybXMgb2YKK3RoZSBwaHlzaWNhbCBtZWRpYS4KKworTWV0cm9ub21lZmIgdXNlcyB0aGUgZGVmZXJyZWQgSU8gaW50ZXJmYWNlIHNvIHRoYXQgaXQgY2FuIHByb3ZpZGUgYSBtZW1vcnkKK21hcHBhYmxlIGZyYW1lIGJ1ZmZlci4gSXQgaGFzIGJlZW4gdGVzdGVkIHdpdGggdGlueXggKFhmYmRldikuIEl0IGlzIGtub3duCit0byB3b3JrIGF0IHRoaXMgdGltZSB3aXRoIHhleWVzLCB4Y2xvY2ssIHhsb2FkaW1hZ2UsIHhwZGYuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvbW9kZWRiLnR4dCBiL0RvY3VtZW50YXRpb24vZmIvbW9kZWRiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNmFhMDg0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mYi9tb2RlZGIudHh0CkBAIC0wLDAgKzEsMTUxIEBACisKKworCQkJbW9kZWRiIGRlZmF1bHQgdmlkZW8gbW9kZSBzdXBwb3J0CisKKworQ3VycmVudGx5IGFsbCBmcmFtZSBidWZmZXIgZGV2aWNlIGRyaXZlcnMgaGF2ZSB0aGVpciBvd24gdmlkZW8gbW9kZSBkYXRhYmFzZXMsCit3aGljaCBpcyBhIG1lc3MgYW5kIGEgd2FzdGUgb2YgcmVzb3VyY2VzLiBUaGUgbWFpbiBpZGVhIG9mIG1vZGVkYiBpcyB0byBoYXZlCisKKyAgLSBvbmUgcm91dGluZSB0byBwcm9iZSBmb3IgdmlkZW8gbW9kZXMsIHdoaWNoIGNhbiBiZSB1c2VkIGJ5IGFsbCBmcmFtZSBidWZmZXIKKyAgICBkZXZpY2VzCisgIC0gb25lIGdlbmVyaWMgdmlkZW8gbW9kZSBkYXRhYmFzZSB3aXRoIGEgZmFpciBhbW91bnQgb2Ygc3RhbmRhcmQgdmlkZW9tb2RlcworICAgICh0YWtlbiBmcm9tIFhGcmVlODYpCisgIC0gdGhlIHBvc3NpYmlsaXR5IHRvIHN1cHBseSB5b3VyIG93biBtb2RlIGRhdGFiYXNlIGZvciBncmFwaGljcyBoYXJkd2FyZSB0aGF0CisgICAgbmVlZHMgbm9uLXN0YW5kYXJkIG1vZGVzLCBsaWtlIGFtaWZiIGFuZCBNYWMgZnJhbWUgYnVmZmVyIGRyaXZlcnMgKHdoaWNoCisgICAgdXNlIG1hY21vZGVzLmMpCisKK1doZW4gYSBmcmFtZSBidWZmZXIgZGV2aWNlIHJlY2VpdmVzIGEgdmlkZW89IG9wdGlvbiBpdCBkb2Vzbid0IGtub3csIGl0IHNob3VsZAorY29uc2lkZXIgdGhhdCB0byBiZSBhIHZpZGVvIG1vZGUgb3B0aW9uLiBJZiBubyBmcmFtZSBidWZmZXIgZGV2aWNlIGlzIHNwZWNpZmllZAoraW4gYSB2aWRlbz0gb3B0aW9uLCBmYm1lbSBjb25zaWRlcnMgdGhhdCB0byBiZSBhIGdsb2JhbCB2aWRlbyBtb2RlIG9wdGlvbi4KKworVmFsaWQgbW9kZSBzcGVjaWZpZXJzIChtb2RlX29wdGlvbiBhcmd1bWVudCk6CisKKyAgICA8eHJlcz54PHlyZXM+W01dW1JdWy08YnBwPl1bQDxyZWZyZXNoPl1baV1bbV1bZURkXQorICAgIDxuYW1lPlstPGJwcD5dW0A8cmVmcmVzaD5dCisKK3dpdGggPHhyZXM+LCA8eXJlcz4sIDxicHA+IGFuZCA8cmVmcmVzaD4gZGVjaW1hbCBudW1iZXJzIGFuZCA8bmFtZT4gYSBzdHJpbmcuCitUaGluZ3MgYmV0d2VlbiBzcXVhcmUgYnJhY2tldHMgYXJlIG9wdGlvbmFsLgorCitJZiAnTScgaXMgc3BlY2lmaWVkIGluIHRoZSBtb2RlX29wdGlvbiBhcmd1bWVudCAoYWZ0ZXIgPHlyZXM+IGFuZCBiZWZvcmUKKzxicHA+IGFuZCA8cmVmcmVzaD4sIGlmIHNwZWNpZmllZCkgdGhlIHRpbWluZ3Mgd2lsbCBiZSBjYWxjdWxhdGVkIHVzaW5nCitWRVNBKFRNKSBDb29yZGluYXRlZCBWaWRlbyBUaW1pbmdzIGluc3RlYWQgb2YgbG9va2luZyB1cCB0aGUgbW9kZSBmcm9tIGEgdGFibGUuCitJZiAnUicgaXMgc3BlY2lmaWVkLCBkbyBhICdyZWR1Y2VkIGJsYW5raW5nJyBjYWxjdWxhdGlvbiBmb3IgZGlnaXRhbCBkaXNwbGF5cy4KK0lmICdpJyBpcyBzcGVjaWZpZWQsIGNhbGN1bGF0ZSBmb3IgYW4gaW50ZXJsYWNlZCBtb2RlLiAgQW5kIGlmICdtJyBpcworc3BlY2lmaWVkLCBhZGQgbWFyZ2lucyB0byB0aGUgY2FsY3VsYXRpb24gKDEuOCUgb2YgeHJlcyByb3VuZGVkIGRvd24gdG8gOAorcGl4ZWxzIGFuZCAxLjglIG9mIHlyZXMpLgorCisgICAgICAgU2FtcGxlIHVzYWdlOiAxMDI0eDc2OE1ANjBtIC0gQ1ZUIHRpbWluZyB3aXRoIG1hcmdpbnMKKworRFJNIGRyaXZlcnMgYWxzbyBhZGQgb3B0aW9ucyB0byBlbmFibGUgb3IgZGlzYWJsZSBvdXRwdXRzOgorCisnZScgd2lsbCBmb3JjZSB0aGUgZGlzcGxheSB0byBiZSBlbmFibGVkLCBpLmUuIGl0IHdpbGwgb3ZlcnJpZGUgdGhlIGRldGVjdGlvbgoraWYgYSBkaXNwbGF5IGlzIGNvbm5lY3RlZC4gJ0QnIHdpbGwgZm9yY2UgdGhlIGRpc3BsYXkgdG8gYmUgZW5hYmxlZCBhbmQgdXNlCitkaWdpdGFsIG91dHB1dC4gVGhpcyBpcyB1c2VmdWwgZm9yIG91dHB1dHMgdGhhdCBoYXZlIGJvdGggYW5hbG9nIGFuZCBkaWdpdGFsCitzaWduYWxzIChlLmcuIEhETUkgYW5kIERWSS1JKS4gRm9yIG90aGVyIG91dHB1dHMgaXQgYmVoYXZlcyBsaWtlICdlJy4gSWYgJ2QnCitpcyBzcGVjaWZpZWQgdGhlIG91dHB1dCBpcyBkaXNhYmxlZC4KKworWW91IGNhbiBhZGRpdGlvbmFsbHkgc3BlY2lmeSB3aGljaCBvdXRwdXQgdGhlIG9wdGlvbnMgbWF0Y2hlcyB0by4KK1RvIGZvcmNlIHRoZSBWR0Egb3V0cHV0IHRvIGJlIGVuYWJsZWQgYW5kIGRyaXZlIGEgc3BlY2lmaWMgbW9kZSBzYXk6CisgICAgdmlkZW89VkdBLTE6MTI4MHgxMDI0QDYwbWUKKworU3BlY2lmeWluZyB0aGUgb3B0aW9uIG11bHRpcGxlIHRpbWVzIGZvciBkaWZmZXJlbnQgcG9ydHMgaXMgcG9zc2libGUsIGUuZy46CisgICAgdmlkZW89TFZEUy0xOmQgdmlkZW89SERNSS0xOkQKKworKioqKiogb09vICoqKioqIG9PbyAqKioqKiBvT28gKioqKiogb09vICoqKioqIG9PbyAqKioqKiBvT28gKioqKiogb09vICoqKioqCisKK1doYXQgaXMgdGhlIFZFU0EoVE0pIENvb3JkaW5hdGVkIFZpZGVvIFRpbWluZ3MgKENWVCk/CisKK0Zyb20gdGhlIFZFU0EoVE0pIFdlYnNpdGU6CisKKyAgICAgIlRoZSBwdXJwb3NlIG9mIENWVCBpcyB0byBwcm92aWRlIGEgbWV0aG9kIGZvciBnZW5lcmF0aW5nIGEgY29uc2lzdGVudAorICAgICAgYW5kIGNvb3JkaW5hdGVkIHNldCBvZiBzdGFuZGFyZCBmb3JtYXRzLCBkaXNwbGF5IHJlZnJlc2ggcmF0ZXMsIGFuZAorICAgICAgdGltaW5nIHNwZWNpZmljYXRpb25zIGZvciBjb21wdXRlciBkaXNwbGF5IHByb2R1Y3RzLCBib3RoIHRob3NlCisgICAgICBlbXBsb3lpbmcgQ1JUcywgYW5kIHRob3NlIHVzaW5nIG90aGVyIGRpc3BsYXkgdGVjaG5vbG9naWVzLiBUaGUKKyAgICAgIGludGVudGlvbiBvZiBDVlQgaXMgdG8gZ2l2ZSBib3RoIHNvdXJjZSBhbmQgZGlzcGxheSBtYW51ZmFjdHVyZXJzIGEKKyAgICAgIGNvbW1vbiBzZXQgb2YgdG9vbHMgdG8gZW5hYmxlIG5ldyB0aW1pbmdzIHRvIGJlIGRldmVsb3BlZCBpbiBhCisgICAgICBjb25zaXN0ZW50IG1hbm5lciB0aGF0IGVuc3VyZXMgZ3JlYXRlciBjb21wYXRpYmlsaXR5LiIKKworVGhpcyBpcyB0aGUgdGhpcmQgc3RhbmRhcmQgYXBwcm92ZWQgYnkgVkVTQShUTSkgY29uY2VybmluZyB2aWRlbyB0aW1pbmdzLiAgVGhlCitmaXJzdCB3YXMgdGhlIERpc2NyZXRlIFZpZGVvIFRpbWluZ3MgKERWVCkgd2hpY2ggaXMgIGEgY29sbGVjdGlvbiBvZgorcHJlLWRlZmluZWQgbW9kZXMgYXBwcm92ZWQgYnkgVkVTQShUTSkuICBUaGUgc2Vjb25kIGlzIHRoZSBHZW5lcmFsaXplZCBUaW1pbmcKK0Zvcm11bGEgKEdURikgd2hpY2ggaXMgYW4gYWxnb3JpdGhtIHRvIGNhbGN1bGF0ZSB0aGUgdGltaW5ncywgZ2l2ZW4gdGhlCitwaXhlbGNsb2NrLCB0aGUgaG9yaXpvbnRhbCBzeW5jIGZyZXF1ZW5jeSwgb3IgdGhlIHZlcnRpY2FsIHJlZnJlc2ggcmF0ZS4KKworVGhlIEdURiBpcyBsaW1pdGVkIGJ5IHRoZSBmYWN0IHRoYXQgaXQgaXMgZGVzaWduZWQgbWFpbmx5IGZvciBDUlQgZGlzcGxheXMuCitJdCBhcnRpZmljaWFsbHkgaW5jcmVhc2VzIHRoZSBwaXhlbGNsb2NrIGJlY2F1c2Ugb2YgaXRzIGhpZ2ggYmxhbmtpbmcKK3JlcXVpcmVtZW50LiBUaGlzIGlzIGluYXBwcm9wcmlhdGUgZm9yIGRpZ2l0YWwgZGlzcGxheSBpbnRlcmZhY2Ugd2l0aCBpdHMgaGlnaAorZGF0YSByYXRlIHdoaWNoIHJlcXVpcmVzIHRoYXQgaXQgY29uc2VydmVzIHRoZSBwaXhlbGNsb2NrIGFzIG11Y2ggYXMgcG9zc2libGUuCitBbHNvLCBHVEYgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIGFzcGVjdCByYXRpbyBvZiB0aGUgZGlzcGxheS4KKworVGhlIENWVCBhZGRyZXNzZXMgdGhlc2UgbGltaXRhdGlvbnMuICBJZiB1c2VkIHdpdGggQ1JUJ3MsIHRoZSBmb3JtdWxhIHVzZWQKK2lzIGEgZGVyaXZhdGlvbiBvZiBHVEYgd2l0aCBhIGZldyBtb2RpZmljYXRpb25zLiAgSWYgdXNlZCB3aXRoIGRpZ2l0YWwKK2Rpc3BsYXlzLCB0aGUgInJlZHVjZWQgYmxhbmtpbmciIGNhbGN1bGF0aW9uIGNhbiBiZSB1c2VkLgorCitGcm9tIHRoZSBmcmFtZWJ1ZmZlciBzdWJzeXN0ZW0gcGVyc3BlY3RpdmUsIG5ldyBmb3JtYXRzIG5lZWQgbm90IGJlIGFkZGVkCit0byB0aGUgZ2xvYmFsIG1vZGUgZGF0YWJhc2Ugd2hlbmV2ZXIgYSBuZXcgbW9kZSBpcyByZWxlYXNlZCBieSBkaXNwbGF5CittYW51ZmFjdHVyZXJzLiBTcGVjaWZ5aW5nIGZvciBDVlQgd2lsbCB3b3JrIGZvciBtb3N0LCBpZiBub3QgYWxsLCByZWxhdGl2ZWx5CituZXcgQ1JUIGRpc3BsYXlzIGFuZCBwcm9iYWJseSB3aXRoIG1vc3QgZmxhdHBhbmVscywgaWYgJ3JlZHVjZWQgYmxhbmtpbmcnCitjYWxjdWxhdGlvbiBpcyBzcGVjaWZpZWQuICAoVGhlIENWVCBjb21wYXRpYmlsaXR5IG9mIHRoZSBkaXNwbGF5IGNhbiBiZQorZGV0ZXJtaW5lZCBmcm9tIGl0cyBFRElELiBUaGUgdmVyc2lvbiAxLjMgb2YgdGhlIEVESUQgaGFzIGV4dHJhIDEyOC1ieXRlCitibG9ja3Mgd2hlcmUgYWRkaXRpb25hbCB0aW1pbmcgaW5mb3JtYXRpb24gaXMgcGxhY2VkLiAgQXMgb2YgdGhpcyB0aW1lLCB0aGVyZQoraXMgbm8gc3VwcG9ydCB5ZXQgaW4gdGhlIGxheWVyIHRvIHBhcnNlIHRoaXMgYWRkaXRpb25hbCBibG9ja3MuKQorCitDVlQgYWxzbyBpbnRyb2R1Y2VkIGEgbmV3IG5hbWluZyBjb252ZW50aW9uIChzaG91bGQgYmUgc2VlbiBmcm9tIGRtZXNnIG91dHB1dCk6CisKKyAgICA8cGl4Pk08YT5bLVJdCisKKyAgICB3aGVyZTogcGl4ID0gdG90YWwgYW1vdW50IG9mIHBpeGVscyBpbiBNQiAoeHJlcyB4IHlyZXMpCisgICAgICAgICAgIE0gICA9IGFsd2F5cyBwcmVzZW50CisgICAgICAgICAgIGEgICA9IGFzcGVjdCByYXRpbyAoMyAtIDQ6MzsgNCAtIDU6NDsgOSAtIDE1OjksIDE2Ojk7IEEgLSAxNjoxMCkKKyAgICAgICAgICAtUiAgID0gcmVkdWNlZCBibGFua2luZworCisJICBleGFtcGxlOiAgLjQ4TTMtUiAtIDgwMHg2MDAgd2l0aCByZWR1Y2VkIGJsYW5raW5nCisKK05vdGU6IFZFU0EoVE0pIGhhcyByZXN0cmljdGlvbnMgb24gd2hhdCBpcyBhIHN0YW5kYXJkIENWVCB0aW1pbmc6CisKKyAgICAgIC0gYXNwZWN0IHJhdGlvIGNhbiBvbmx5IGJlIG9uZSBvZiB0aGUgYWJvdmUgdmFsdWVzCisgICAgICAtIGFjY2VwdGFibGUgcmVmcmVzaCByYXRlcyBhcmUgNTAsIDYwLCA3MCBvciA4NSBIeiBvbmx5CisgICAgICAtIGlmIHJlZHVjZWQgYmxhbmtpbmcsIHRoZSByZWZyZXNoIHJhdGUgbXVzdCBiZSBhdCA2MEh6CisKK0lmIG9uZSBvZiB0aGUgYWJvdmUgYXJlIG5vdCBzYXRpc2ZpZWQsIHRoZSBrZXJuZWwgd2lsbCBwcmludCBhIHdhcm5pbmcgYnV0IHRoZQordGltaW5ncyB3aWxsIHN0aWxsIGJlIGNhbGN1bGF0ZWQuCisKKyoqKioqIG9PbyAqKioqKiBvT28gKioqKiogb09vICoqKioqIG9PbyAqKioqKiBvT28gKioqKiogb09vICoqKioqIG9PbyAqKioqKgorCitUbyBmaW5kIGEgc3VpdGFibGUgdmlkZW8gbW9kZSwgeW91IGp1c3QgY2FsbAorCitpbnQgX19pbml0IGZiX2ZpbmRfbW9kZShzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBjaGFyICptb2RlX29wdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmYl92aWRlb21vZGUgKmRiLCB1bnNpZ25lZCBpbnQgZGJzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZiX3ZpZGVvbW9kZSAqZGVmYXVsdF9tb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlZmF1bHRfYnBwKQorCit3aXRoIGRiL2Ric2l6ZSB5b3VyIG5vbi1zdGFuZGFyZCB2aWRlbyBtb2RlIGRhdGFiYXNlLCBvciBOVUxMIHRvIHVzZSB0aGUKK3N0YW5kYXJkIHZpZGVvIG1vZGUgZGF0YWJhc2UuCisKK2ZiX2ZpbmRfbW9kZSgpIGZpcnN0IHRyaWVzIHRoZSBzcGVjaWZpZWQgdmlkZW8gbW9kZSAob3IgYW55IG1vZGUgdGhhdCBtYXRjaGVzLAorZS5nLiB0aGVyZSBjYW4gYmUgbXVsdGlwbGUgNjQweDQ4MCBtb2RlcywgZWFjaCBvZiB0aGVtIGlzIHRyaWVkKS4gSWYgdGhhdAorZmFpbHMsIHRoZSBkZWZhdWx0IG1vZGUgaXMgdHJpZWQuIElmIHRoYXQgZmFpbHMsIGl0IHdhbGtzIG92ZXIgYWxsIG1vZGVzLgorCitUbyBzcGVjaWZ5IGEgdmlkZW8gbW9kZSBhdCBib290dXAsIHVzZSB0aGUgZm9sbG93aW5nIGJvb3Qgb3B0aW9uczoKKyAgICB2aWRlbz08ZHJpdmVyPjo8eHJlcz54PHlyZXM+Wy08YnBwPl1bQHJlZnJlc2hdCisKK3doZXJlIDxkcml2ZXI+IGlzIGEgbmFtZSBmcm9tIHRoZSB0YWJsZSBiZWxvdy4gIFZhbGlkIGRlZmF1bHQgbW9kZXMgY2FuIGJlCitmb3VuZCBpbiBsaW51eC9kcml2ZXJzL3ZpZGVvL21vZGVkYi5jLiAgQ2hlY2sgeW91ciBkcml2ZXIncyBkb2N1bWVudGF0aW9uLgorVGhlcmUgbWF5IGJlIG1vcmUgbW9kZXMuCisKKyAgICBEcml2ZXJzIHRoYXQgc3VwcG9ydCBtb2RlZGIgYm9vdCBvcHRpb25zCisgICAgQm9vdCBOYW1lCSAgQ2FyZHMgU3VwcG9ydGVkCisKKyAgICBhbWlmYgktIEFtaWdhIGNoaXBzZXQgZnJhbWUgYnVmZmVyCisgICAgYXR5MTI4ZmIJLSBBVEkgUmFnZTEyOCAvIFBybyBmcmFtZSBidWZmZXIKKyAgICBhdHlmYgktIEFUSSBNYWNoNjQgZnJhbWUgYnVmZmVyCisgICAgcG0yZmIJLSBQZXJtZWRpYSAyLzJWIGZyYW1lIGJ1ZmZlcgorICAgIHBtM2ZiCS0gUGVybWVkaWEgMyBmcmFtZSBidWZmZXIKKyAgICBzc3RmYgktIFZvb2RvbyAxLzIgKFNTVDEpIGNoaXBzZXQgZnJhbWUgYnVmZmVyCisgICAgdGRmeGZiCS0gM0QgRnggZnJhbWUgYnVmZmVyCisgICAgdHJpZGVudGZiCS0gVHJpZGVudCAoQ3liZXIpYmxhZGUgY2hpcHNldCBmcmFtZSBidWZmZXIKKyAgICB2dDg2MjNmYgktIFZJQSA4NjIzIGZyYW1lIGJ1ZmZlcgorCitCVFcsIG9ubHkgYSBmZXcgZmIgZHJpdmVycyB1c2UgdGhpcyBhdCB0aGUgbW9tZW50LiBPdGhlcnMgYXJlIHRvIGZvbGxvdworKGZlZWwgZnJlZSB0byBzZW5kIHBhdGNoZXMpLiBUaGUgRFJNIGRyaXZlcnMgYWxzbyBzdXBwb3J0IHRoaXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZiL3B2cjJmYi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZiL3B2cjJmYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZiZGVmZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmIvcHZyMmZiLnR4dApAQCAtMCwwICsxLDY1IEBACiskSWQ6IHB2cjJmYi50eHQsdiAxLjEgMjAwMS8wNS8yNCAwNTowOToxNiBtcmJyb3duIEV4cCAkCisKK1doYXQgaXMgcHZyMmZiPworPT09PT09PT09PT09PT09CisKK1RoaXMgaXMgYSBkcml2ZXIgZm9yIFBvd2VyVlIgMiBiYXNlZCBncmFwaGljcyBmcmFtZSBidWZmZXJzLCBzdWNoIGFzIHRoZQorb25lIGZvdW5kIGluIHRoZSBEcmVhbWNhc3QuCisKK0FkdmFudGFnZXM6CisKKyAqIEl0IHByb3ZpZGVzIGEgbmljZSBsYXJnZSBjb25zb2xlICgxMjggY29scyArIDQ4IGxpbmVzIHdpdGggMTAyNHg3NjgpCisgICB3aXRob3V0IHVzaW5nIHRpbnksIHVucmVhZGFibGUgZm9udHMgKE5PVCBvbiB0aGUgRHJlYW1jYXN0KQorICogWW91IGNhbiBydW4gWEY4Nl9GQkRldiBvbiB0b3Agb2YgL2Rldi9mYjAKKyAqIE1vc3QgaW1wb3J0YW50OiBib290IGxvZ28gOi0pCisKK0Rpc2FkdmFudGFnZXM6CisKKyAqIERyaXZlciBpcyBsYXJnZWx5IHVudGVzdGVkIG9uIG5vbi1EcmVhbWNhc3Qgc3lzdGVtcy4KKworQ29uZmlndXJhdGlvbgorPT09PT09PT09PT09PQorCitZb3UgY2FuIHBhc3Mga2VybmVsIGNvbW1hbmQgbGluZSBvcHRpb25zIHRvIHB2cjJmYiB3aXRoCitgdmlkZW89cHZyMmZiOm9wdGlvbjEsb3B0aW9uMjp2YWx1ZTIsb3B0aW9uMycgKG11bHRpcGxlIG9wdGlvbnMgc2hvdWxkIGJlCitzZXBhcmF0ZWQgYnkgY29tbWEsIHZhbHVlcyBhcmUgc2VwYXJhdGVkIGZyb20gb3B0aW9ucyBieSBgOicpLgorQWNjZXB0ZWQgb3B0aW9uczoKKworZm9udDpYICAgIC0gZGVmYXVsdCBmb250IHRvIHVzZS4gQWxsIGZvbnRzIGFyZSBzdXBwb3J0ZWQsIGluY2x1ZGluZyB0aGUKKyAgICAgICAgICAgIFNVTjEyeDIyIGZvbnQgd2hpY2ggaXMgdmVyeSBuaWNlIGF0IGhpZ2ggcmVzb2x1dGlvbnMuCisKKwkgICAgCittb2RlOlggICAgLSBkZWZhdWx0IHZpZGVvIG1vZGUgd2l0aCBmb3JtYXQgW3hyZXNdeFt5cmVzXS08YnBwPkA8cmVmcmVzaCByYXRlPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyB2aWRlbyBtb2RlcyBhcmUgc3VwcG9ydGVkOgorICAgICAgICAgICAgNjQweDY0MC0xNkA2MCwgNjQweDQ4MC0yNEA2MCwgNjQweDQ4MC0zMkA2MC4gVGhlIERyZWFtY2FzdAorICAgICAgICAgICAgZGVmYXVsdHMgdG8gNjQweDQ4MC0xNkA2MC4gQXQgdGhlIHRpbWUgb2Ygd3JpdGluZyB0aGUKKyAgICAgICAgICAgIDI0YnBwIGFuZCAzMmJwcCBtb2RlcyBmdW5jdGlvbiBwb29ybHkuIFdvcmsgdG8gZml4IHRoYXQgaXMKKyAgICAgICAgICAgIG9uZ29pbmcKKworICAgICAgICAgICAgTm90ZTogdGhlIDY0MHgyNDAgbW9kZSBpcyBjdXJyZW50bHkgYnJva2VuLCBhbmQgc2hvdWxkIG5vdCBiZQorICAgICAgICAgICAgdXNlZCBmb3IgYW55IHJlYXNvbi4gSXQgaXMgb25seSBtZW50aW9uZWQgaGVyZSBhcyBhIHJlZmVyZW5jZS4KKworaW52ZXJzZSAgIC0gaW52ZXJ0IGNvbG9ycyBvbiBzY3JlZW4gKGZvciBMQ0QgZGlzcGxheXMpCisKK25vbXRyciAgICAtIGRpc2FibGVzIHdyaXRlIGNvbWJpbmluZyBvbiBmcmFtZSBidWZmZXIuIFRoaXMgc2xvd3MgZG93biBkcml2ZXIKKyAgICAgICAgICAgIGJ1dCB0aGVyZSBpcyByZXBvcnRlZCBtaW5vciBpbmNvbXBhdGliaWxpdHkgYmV0d2VlbiBHVVMgRE1BIGFuZAorICAgICAgICAgICAgWEZyZWUgdW5kZXIgaGlnaCBsb2FkcyBpZiB3cml0ZSBjb21iaW5pbmcgaXMgZW5hYmxlZCAoc291bmQKKyAgICAgICAgICAgIGRyb3BvdXRzKS4gTVRSUiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb24gc3lzdGVtcyB0aGF0IGhhdmUgaXQKKyAgICAgICAgICAgIGNvbmZpZ3VyZWQgYW5kIHRoYXQgc3VwcG9ydCBpdC4KKworY2FibGU6WCAgIC0gY2FibGUgdHlwZS4gVGhpcyBjYW4gYmUgYW55IG9mIHRoZSBmb2xsb3dpbmc6IHZnYSwgcmdiLCBhbmQKKyAgICAgICAgICAgIGNvbXBvc2l0ZS4gSWYgbm9uZSBpcyBzcGVjaWZpZWQsIHdlIGd1ZXNzLgorCitvdXRwdXQ6WCAgLSBvdXRwdXQgdHlwZS4gVGhpcyBjYW4gYmUgYW55IG9mIHRoZSBmb2xsb3dpbmc6IHBhbCwgbnRzYywgYW5kCisgICAgICAgICAgICB2Z2EuIElmIG5vbmUgaXMgc3BlY2lmaWVkLCB3ZSBndWVzcy4KKworWDExCis9PT0KKworWEY4Nl9GQkRldiBoYXMgYmVlbiBzaG93biB0byB3b3JrIG9uIHRoZSBEcmVhbWNhc3QgaW4gdGhlIHBhc3QgLSB0aG91Z2ggbm90IHlldAorb24gYW55IDIuNiBzZXJpZXMga2VybmVsLgorCistLQorUGF1bCBNdW5kdCA8bGV0aGFsQGxpbnV4ZGMub3JnPgorVXBkYXRlZCBieSBBZHJpYW4gTWNNZW5hbWluIDxhZHJpYW5AbWNtZW4uZGVtb24uY28udWs+CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvcHhhZmIudHh0IGIvRG9jdW1lbnRhdGlvbi9mYi9weGFmYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE0M2EwYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmIvcHhhZmIudHh0CkBAIC0wLDAgKzEsMTQyIEBACitEcml2ZXIgZm9yIFBYQTI1eCBMQ0QgY29udHJvbGxlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGRyaXZlciBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIG9wdGlvbnMsIGVpdGhlciB2aWEKK29wdGlvbnM9PE9QVElPTlM+IHdoZW4gbW9kdWxhciBvciB2aWRlbz1weGFmYjo8T1BUSU9OUz4gd2hlbiBidWlsdCBpbi4KKworRm9yIGV4YW1wbGU6CisJbW9kcHJvYmUgcHhhZmIgb3B0aW9ucz12bWVtOjJNLG1vZGU6NjQweDQ4MC04LHBhc3NpdmUKK29yIG9uIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lCisJdmlkZW89cHhhZmI6dm1lbToyTSxtb2RlOjY0MHg0ODAtOCxwYXNzaXZlCisKK3ZtZW06IFZJREVPX01FTV9TSVpFCisJQW1vdW50IG9mIHZpZGVvIG1lbW9yeSB0byBhbGxvY2F0ZSAoY2FuIGJlIHN1ZmZpeGVkIHdpdGggSyBvciBNCisJZm9yIGtpbG9ieXRlcyBvciBtZWdhYnl0ZXMpCisKK21vZGU6WFJFU3hZUkVTWy1CUFBdCisJWFJFUyA9PSBMQ0NSMV9QUEwgKyAxCisJWVJFUyA9PSBMTENSMl9MUFAgKyAxCisJCVRoZSByZXNvbHV0aW9uIG9mIHRoZSBkaXNwbGF5IGluIHBpeGVscworCUJQUCA9PSBUaGUgYml0IGRlcHRoLiBWYWxpZCB2YWx1ZXMgYXJlIDEsIDIsIDQsIDggYW5kIDE2LgorCitwaXhjbG9jazpQSVhDTE9DSworCVBpeGVsIGNsb2NrIGluIHBpY29zZWNvbmRzCisKK2xlZnQ6TEVGVCA9PSBMQ0NSMV9CTFcgKyAxCityaWdodDpSSUdIVCA9PSBMQ0NSMV9FTFcgKyAxCitoc3luY2xlbjpIU1lOQyA9PSBMQ0NSMV9IU1cgKyAxCit1cHBlcjpVUFBFUiA9PSBMQ0NSMl9CRlcKK2xvd2VyOkxPV0VSID09IExDQ1IyX0VGUgordnN5bmNsZW46VlNZTkMgPT0gTENDUjJfVlNXICsgMQorCURpc3BsYXkgbWFyZ2lucyBhbmQgc3luYyB0aW1lcworCitjb2xvciB8IG1vbm8gPT4gTENDUjBfQ01TCisJdW1tLi4uCisKK2FjdGl2ZSB8IHBhc3NpdmUgPT4gTENDUjBfUEFTCisJQWN0aXZlIChURlQpIG9yIFBhc3NpdmUgKFNUTikgZGlzcGxheQorCitzaW5nbGUgfCBkdWFsID0+IExDQ1IwX1NEUworCVNpbmdsZSBvciBkdWFsIHBhbmVsIHBhc3NpdmUgZGlzcGxheQorCis0cGl4IHwgOHBpeCA9PiBMQ0NSMF9EUEQKKwk0IG9yIDggcGl4ZWwgbW9ub2Nocm9tZSBzaW5nbGUgcGFuZWwgZGF0YQorCitoc3luYzpIU1lOQwordnN5bmM6VlNZTkMKKwlIb3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBzeW5jLiAwID0+IGFjdGl2ZSBsb3csIDEgPT4gYWN0aXZlCisJaGlnaC4KKworZHBjOkRQQworCURvdWJsZSBwaXhlbCBjbG9jay4gMT0+dHJ1ZSwgMD0+ZmFsc2UKKworb3V0cHV0ZW46UE9MQVJJVFkKKwlPdXRwdXQgRW5hYmxlIFBvbGFyaXR5LiAwID0+IGFjdGl2ZSBsb3csIDEgPT4gYWN0aXZlIGhpZ2gKKworcGl4Y2xvY2twb2w6UE9MQVJJVFkKKwlwaXhlbCBjbG9jayBwb2xhcml0eQorCTAgPT4gZmFsbGluZyBlZGdlLCAxID0+IHJpc2luZyBlZGdlCisKKworT3ZlcmxheSBTdXBwb3J0IGZvciBQWEEyN3ggYW5kIGxhdGVyIExDRCBjb250cm9sbGVycworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgIFBYQTI3eCBhbmQgbGF0ZXIgcHJvY2Vzc29ycyBzdXBwb3J0IG92ZXJsYXkxIGFuZCBvdmVybGF5MiBvbi10b3Agb2YgdGhlCisgIGJhc2UgZnJhbWVidWZmZXIgKGFsdGhvdWdoIHVuZGVyLW5lYXRoIHRoZSBiYXNlIGlzIGFsc28gcG9zc2libGUpLiBUaGV5CisgIHN1cHBvcnQgcGFsZXR0ZSBhbmQgbm8tcGFsZXR0ZSBSR0IgZm9ybWF0cywgYXMgd2VsbCBhcyBZVVYgZm9ybWF0cyAob25seQorICBhdmFpbGFibGUgb24gb3ZlcmxheTIpLiBUaGVzZSBvdmVybGF5cyBoYXZlIGRlZGljYXRlZCBETUEgY2hhbm5lbHMgYW5kCisgIGJlaGF2ZSBpbiBhIHNpbWlsYXIgd2F5IGFzIGEgZnJhbWVidWZmZXIuCisKKyAgSG93ZXZlciwgdGhlcmUgYXJlIHNvbWUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGVzZSBvdmVybGF5IGZyYW1lYnVmZmVycworICBhbmQgbm9ybWFsIGZyYW1lYnVmZmVycywgYXMgbGlzdGVkIGJlbG93OgorCisgIDEuIG92ZXJsYXkgY2FuIHN0YXJ0IGF0IGEgMzItYml0IHdvcmQgYWxpZ25lZCBwb3NpdGlvbiB3aXRoaW4gdGhlIGJhc2UKKyAgICAgZnJhbWVidWZmZXIsIHdoaWNoIG1lYW5zIHRoZXkgaGF2ZSBhIHN0YXJ0ICh4LCB5KS4gVGhpcyBpbmZvcm1hdGlvbgorICAgICBpcyBlbmNvZGVkIGludG8gdmFyLT5ub25zdGQgKG5vLCB2YXItPnhvZmZzZXQgYW5kIHZhci0+eW9mZnNldCBhcmUKKyAgICAgbm90IGZvciBzdWNoIHB1cnBvc2UpLgorCisgIDIuIG92ZXJsYXkgZnJhbWVidWZmZXIgaXMgYWxsb2NhdGVkIGR5bmFtaWNhbGx5IGFjY29yZGluZyB0byBzcGVjaWZpZWQKKyAgICAgJ3N0cnVjdCBmYl92YXJfc2NyZWVuaW5mbycsIHRoZSBhbW91bnQgaXMgZGVjaWRlZCBieToKKworICAgICAgICB2YXItPnhyZXNfdmlydHVhbCAqIHZhci0+eXJlc192aXJ0dWFsICogYnBwCisKKyAgICAgYnBwID0gMTYgLS0gZm9yIFJHQjU2NSBvciBSR0JUNTU1CisgICAgICAgICA9IDI0IC0tIGZvciBZVVY0NDQgcGFja2VkCisgICAgICAgICA9IDI0IC0tIGZvciBZVVY0NDQgcGxhbmFyCisJID0gMTYgLS0gZm9yIFlVVjQyMiBwbGFuYXIgKDEgcGl4ZWwgPSAxIFkgKyAxLzIgQ2IgKyAxLzIgQ3IpCisJID0gMTIgLS0gZm9yIFlVVjQyMCBwbGFuYXIgKDEgcGl4ZWwgPSAxIFkgKyAxLzQgQ2IgKyAxLzQgQ3IpCisKKyAgICAgTk9URToKKworICAgICBhLiBvdmVybGF5IGRvZXMgbm90IHN1cHBvcnQgcGFubmluZyBpbiB4LWRpcmVjdGlvbiwgdGh1cworICAgICAgICB2YXItPnhyZXNfdmlydHVhbCB3aWxsIGFsd2F5cyBiZSBlcXVhbCB0byB2YXItPnhyZXMKKworICAgICBiLiBsaW5lIGxlbmd0aCBvZiBvdmVybGF5KHMpIG11c3QgYmUgb24gYSAzMi1iaXQgd29yZCBib3VuZGFyeSwKKyAgICAgICAgZm9yIFlVViBwbGFuYXIgbW9kZXMsIGl0IGlzIGEgcmVxdWlyZW1lbnQgZm9yIHRoZSBjb21wb25lbnQKKwl3aXRoIG1pbmltdW0gYml0cyBwZXIgcGl4ZWwsICBlLmcuIGZvciBZVVY0MjAsIENyIGNvbXBvbmVudAorCWZvciBvbmUgcGl4ZWwgaXMgYWN0dWFsbHkgMi1iaXRzLCBpdCBtZWFucyB0aGUgbGluZSBsZW5ndGgKKwlzaG91bGQgYmUgYSBtdWx0aXBsZSBvZiAxNi1waXhlbHMKKworICAgICBjLiBzdGFydGluZyBob3Jpem9udGFsIHBvc2l0aW9uIChYUE9TKSBzaG91bGQgc3RhcnQgb24gYSAzMi1iaXQKKyAgICAgICAgd29yZCBib3VuZGFyeSwgb3RoZXJ3aXNlIHRoZSBmYl9jaGVja192YXIoKSB3aWxsIGp1c3QgZmFpbC4KKworICAgICBkLiB0aGUgcmVjdGFuZ2xlIG9mIHRoZSBvdmVybGF5IHNob3VsZCBiZSB3aXRoaW4gdGhlIGJhc2UgcGxhbmUsCisgICAgICAgIG90aGVyd2lzZSBmYWlsCisKKyAgICAgQXBwbGljYXRpb25zIHNob3VsZCBmb2xsb3cgdGhlIHNlcXVlbmNlIGJlbG93IHRvIG9wZXJhdGUgYW4gb3ZlcmxheQorICAgICBmcmFtZWJ1ZmZlcjoKKworICAgICAgICAgYS4gb3BlbigiL2Rldi9mYlsxLTJdIiwgLi4uKQorCSBiLiBpb2N0bChmZCwgRkJJT0dFVF9WU0NSRUVOSU5GTywgLi4uKQorCSBjLiBtb2RpZnkgJ3Zhcicgd2l0aCBkZXNpcmVkIHBhcmFtZXRlcnM6CisJICAgIDEpIHZhci0+eHJlcyBhbmQgdmFyLT55cmVzCisJICAgIDIpIGxhcmdlciB2YXItPnlyZXNfdmlydHVhbCBpZiBtb3JlIG1lbW9yeSBpcyByZXF1aXJlZCwKKwkgICAgICAgdXN1YWxseSBmb3IgZG91YmxlLWJ1ZmZlcmluZworCSAgICAzKSB2YXItPm5vbnN0ZCBmb3Igc3RhcnRpbmcgKHgsIHkpIGFuZCBjb2xvciBmb3JtYXQKKwkgICAgNCkgdmFyLT57cmVkLCBncmVlbiwgYmx1ZSwgdHJhbnNwfSBpZiBSR0IgbW9kZSBpcyB0byBiZSB1c2VkCisJIGQuIGlvY3RsKGZkLCBGQklPUFVUX1ZTQ1JFRU5JTkZPLCAuLi4pCisJIGUuIGlvY3RsKGZkLCBGQklPR0VUX0ZTQ1JFRU5JTkZPLCAuLi4pCisJIGYuIG1tYXAKKwkgZy4gLi4uCisKKyAgMy4gZm9yIFlVViBwbGFuYXIgZm9ybWF0cywgdGhlc2UgYXJlIGFjdHVhbGx5IG5vdCBzdXBwb3J0ZWQgd2l0aGluIHRoZQorICAgICBmcmFtZWJ1ZmZlciBmcmFtZXdvcmssIGFwcGxpY2F0aW9uIGhhcyB0byB0YWtlIGNhcmUgb2YgdGhlIG9mZnNldHMKKyAgICAgYW5kIGxlbmd0aHMgb2YgZWFjaCBjb21wb25lbnQgd2l0aGluIHRoZSBmcmFtZWJ1ZmZlci4KKworICA0LiB2YXItPm5vbnN0ZCBpcyB1c2VkIHRvIHBhc3Mgc3RhcnRpbmcgKHgsIHkpIHBvc2l0aW9uIGFuZCBjb2xvciBmb3JtYXQsCisgICAgIHRoZSBkZXRhaWxlZCBiaXQgZmllbGRzIGFyZSBzaG93biBiZWxvdzoKKworICAgIDMxICAgICAgICAgICAgICAgIDIzICAyMCAgICAgICAgIDEwICAgICAgICAgIDAKKyAgICAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rCisgICAgIHwgIC4uLiB1bnVzZWQgLi4uIHxGT1J8ICAgWFBPUyAgIHwgICBZUE9TICAgfAorICAgICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKKworICAgICBGT1IgIC0gY29sb3IgZm9ybWF0LCBhcyBkZWZpbmVkIGJ5IE9WRVJMQVlfRk9STUFUXyogaW4gcHhhZmIuaAorICAgICAgICAgICAgMCAtIFJHQgorCSAgICAxIC0gWVVWNDQ0IFBBQ0tFRAorCSAgICAyIC0gWVVWNDQ0IFBMQU5BUgorCSAgICAzIC0gWVVWNDIyIFBMQU5BUgorCSAgICA0IC0gWVVSNDIwIFBMQU5BUgorCisgICAgIFhQT1MgLSBzdGFydGluZyBob3Jpem9udGFsIHBvc2l0aW9uCisgICAgIFlQT1MgLSBzdGFydGluZyB2ZXJ0aWNhbCBwb3NpdGlvbgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mYi9zM2ZiLnR4dCBiL0RvY3VtZW50YXRpb24vZmIvczNmYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM5Nzc3MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmIvczNmYi50eHQKQEAgLTAsMCArMSw4MiBAQAorCisJczNmYiAtIGZiZGV2IGRyaXZlciBmb3IgUzMgVHJpby9WaXJnZSBjaGlwcworCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCitTdXBwb3J0ZWQgSGFyZHdhcmUKKz09PT09PT09PT09PT09PT09PQorCisJUzMgVHJpbzMyCisJUzMgVHJpbzY0IChhbmQgdmFyaWFudHMgVissIFVWKywgVjIvRFgsIFYyL0dYKQorCVMzIFZpcmdlICAoYW5kIHZhcmlhbnRzIFZYLCBEWCwgR1ggYW5kIEdYMispCisJUzMgUGxhdG8vUFgJCShjb21wbGV0ZWx5IHVudGVzdGVkKQorCVMzIEF1cm9yYTY0VisJCShjb21wbGV0ZWx5IHVudGVzdGVkKQorCisJLSBvbmx5IFBDSSBidXMgc3VwcG9ydGVkCisJLSBvbmx5IEJJT1MgaW5pdGlhbGl6ZWQgVkdBIGRldmljZXMgc3VwcG9ydGVkCisJLSBwcm9iYWJseSBub3Qgd29ya2luZyBvbiBiaWcgZW5kaWFuCisKK0kgdGVzdGVkIHMzZmIgb24gVHJpbzY0IChwbGFpbiwgVisgYW5kIFYyL0RYKSBhbmQgVmlyZ2UgKHBsYWluLCBWWCwgRFgpLAorYWxsIG9uIGkzODYuCisKKworU3VwcG9ydGVkIEZlYXR1cmVzCis9PT09PT09PT09PT09PT09PT0KKworCSogIDQgYnBwIHBzZXVkb2NvbG9yIG1vZGVzICh3aXRoIDE4Yml0IHBhbGV0dGUsIHR3byB2YXJpYW50cykKKwkqICA4IGJwcCBwc2V1ZG9jb2xvciBtb2RlICh3aXRoIDE4Yml0IHBhbGV0dGUpCisJKiAxNiBicHAgdHJ1ZWNvbG9yIG1vZGVzIChSR0IgNTU1IGFuZCBSR0IgNTY1KQorCSogMjQgYnBwIHRydWVjb2xvciBtb2RlIChSR0IgODg4KSBvbiAob25seSBvbiBWaXJnZSBWWCkKKwkqIDMyIGJwcCB0cnVlY29sb3IgbW9kZSAoUkdCIDg4OCkgb24gKG5vdCBvbiBWaXJnZSBWWCkKKwkqIHRleHQgbW9kZSAoYWN0aXZhdGVkIGJ5IGJwcCA9IDApCisJKiBpbnRlcmxhY2VkIG1vZGUgdmFyaWFudCAobm90IGF2YWlsYWJsZSBpbiB0ZXh0IG1vZGUpCisJKiBkb3VibGVzY2FuIG1vZGUgdmFyaWFudCAobm90IGF2YWlsYWJsZSBpbiB0ZXh0IG1vZGUpCisJKiBwYW5uaW5nIGluIGJvdGggZGlyZWN0aW9ucworCSogc3VzcGVuZC9yZXN1bWUgc3VwcG9ydAorCSogRFBNUyBzdXBwb3J0CisKK1RleHQgbW9kZSBpcyBzdXBwb3J0ZWQgZXZlbiBpbiBoaWdoZXIgcmVzb2x1dGlvbnMsIGJ1dCB0aGVyZSBpcyBsaW1pdGF0aW9uIHRvCitsb3dlciBwaXhjbG9ja3MgKG1heGltdW0gdXN1YWxseSBiZXR3ZWVuIDUwLTYwIE1IeiwgZGVwZW5kaW5nIG9uIHNwZWNpZmljCitoYXJkd2FyZSwgaSBnZXQgYmVzdCByZXN1bHRzIGZyb20gcGxhaW4gUzMgVHJpbzMyIGNhcmQgLSBhYm91dCA3NSBNSHopLiBUaGlzCitsaW1pdGF0aW9uIGlzIG5vdCBlbmZvcmNlZCBieSBkcml2ZXIuIFRleHQgbW9kZSBzdXBwb3J0cyA4Yml0IHdpZGUgZm9udHMgb25seQorKGhhcmR3YXJlIGxpbWl0YXRpb24pIGFuZCAxNmJpdCB0YWxsIGZvbnRzIChkcml2ZXIgbGltaXRhdGlvbikuIFRleHQgbW9kZQorc3VwcG9ydCBpcyBicm9rZW4gb24gUzMgVHJpbzY0IFYyL0RYLgorCitUaGVyZSBhcmUgdHdvIDQgYnBwIG1vZGVzLiBGaXJzdCBtb2RlIChzZWxlY3RlZCBpZiBub25zdGQgPT0gMCkgaXMgbW9kZSB3aXRoCitwYWNrZWQgcGl4ZWxzLCBoaWdoIG5pYmJsZSBmaXJzdC4gU2Vjb25kIG1vZGUgKHNlbGVjdGVkIGlmIG5vbnN0ZCA9PSAxKSBpcyBtb2RlCit3aXRoIGludGVybGVhdmVkIHBsYW5lcyAoMSBieXRlIGludGVybGVhdmUpLCBNU0IgZmlyc3QuIEJvdGggbW9kZXMgc3VwcG9ydAorOGJpdCB3aWRlIGZvbnRzIG9ubHkgKGRyaXZlciBsaW1pdGF0aW9uKS4KKworU3VzcGVuZC9yZXN1bWUgd29ya3Mgb24gc3lzdGVtcyB0aGF0IGluaXRpYWxpemUgdmlkZW8gY2FyZCBkdXJpbmcgcmVzdW1lIGFuZAoraWYgZGV2aWNlIGlzIGFjdGl2ZSAoZm9yIGV4YW1wbGUgdXNlZCBieSBmYmNvbikuCisKKworTWlzc2luZyBGZWF0dXJlcworPT09PT09PT09PT09PT09PQorKGFsaWFzIFRPRE8gbGlzdCkKKworCSogc2Vjb25kYXJ5IChub3QgaW5pdGlhbGl6ZWQgYnkgQklPUykgZGV2aWNlIHN1cHBvcnQKKyAgIAkqIGJpZyBlbmRpYW4gc3VwcG9ydAorCSogWm9ycm8gYnVzIHN1cHBvcnQKKwkqIE1NSU8gc3VwcG9ydAorCSogMjQgYnBwIG1vZGUgc3VwcG9ydCBvbiBtb3JlIGNhcmRzCisJKiBzdXBwb3J0IGZvciBmb250d2lkdGhzICE9IDggaW4gNCBicHAgbW9kZXMKKwkqIHN1cHBvcnQgZm9yIGZvbnRoZWlnaHQgIT0gMTYgaW4gdGV4dCBtb2RlCisJKiBjb21wb3NpdGUgYW5kIGV4dGVybmFsIHN5bmMgKGlzIGFueW9uZSBhYmxlIHRvIHRlc3QgdGhpcz8pCisJKiBoYXJkd2FyZSBjdXJzb3IKKwkqIHZpZGVvIG92ZXJsYXkgc3VwcG9ydAorCSogdnN5bmMgc3luY2hyb25pemF0aW9uCisJKiBmZWF0dXJlIGNvbm5lY3RvciBzdXBwb3J0CisJKiBhY2NlbGVyYXRpb24gc3VwcG9ydCAoODUxNC1saWtlIDJELCBWaXJnZSAzRCwgYnVzbWFzdGVyIHRyYW5zZmVycykKKwkqIGJldHRlciB2YWx1ZXMgZm9yIHNvbWUgbWFnaWMgcmVnaXN0ZXJzIChwZXJmb3JtYW5jZSBpc3N1ZXMpCisKKworS25vd24gYnVncworPT09PT09PT09PQorCisJKiBjdXJzb3IgZGlzYWJsZSBpbiB0ZXh0IG1vZGUgZG9lc24ndCB3b3JrCisJKiB0ZXh0IG1vZGUgYnJva2VuIG9uIFMzIFRyaW82NCBWMi9EWAorCisKKy0tCitPbmRyZWogWmFqaWNlayA8c2FudGlhZ29AY3JmcmVlbmV0Lm9yZz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvc2ExMTAwZmIudHh0IGIvRG9jdW1lbnRhdGlvbi9mYi9zYTExMDBmYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFiNDIyMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmIvc2ExMTAwZmIudHh0CkBAIC0wLDAgKzEsMzkgQEAKK1tUaGlzIGZpbGUgaXMgY2xvbmVkIGZyb20gVmVzYUZCL21hdHJveGZiXQorCitXaGF0IGlzIHNhMTEwMGZiPworPT09PT09PT09PT09PT09PT0KKworVGhpcyBpcyBhIGRyaXZlciBmb3IgYSBncmFwaGljIGZyYW1lYnVmZmVyIGZvciB0aGUgU0EtMTEwMCBMQ0QKK2NvbnRyb2xsZXIuCisKK0NvbmZpZ3VyYXRpb24KKz09PT09PT09PT09PT09CisKK0ZvciBtb3N0IGNvbW1vbiBwYXNzaXZlIGRpc3BsYXlzLCBnaXZpbmcgdGhlIG9wdGlvbgorCit2aWRlbz1zYTExMDBmYjpicHA6PHZhbHVlPixsY2NyMDo8dmFsdWU+LGxjY3IxOjx2YWx1ZT4sbGNjcjI6PHZhbHVlPixsY2NyMzo8dmFsdWU+CisKK29uIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIHNob3VsZCBiZSBlbm91Z2ggdG8gY29uZmlndXJlIHRoZQorY29udHJvbGxlci4gVGhlIGJpdHMgcGVyIHBpeGVsIChicHApIHZhbHVlIHNob3VsZCBiZSA0LCA4LCAxMiwgb3IKKzE2LiBMQ0NSIHZhbHVlcyBhcmUgZGlzcGxheS1zcGVjaWZpYyBhbmQgc2hvdWxkIGJlIGNvbXB1dGVkIGFzCitkb2N1bWVudGVkIGluIHRoZSBTQS0xMTAwIERldmVsb3BlcidzIE1hbnVhbCwgU2VjdGlvbiAxMS43LiBEdWFsLXBhbmVsCitkaXNwbGF5cyBhcmUgc3VwcG9ydGVkIGFzIGxvbmcgYXMgdGhlIFNEUyBiaXQgaXMgc2V0IGluIExDQ1IwOyBHUElPPDk6Mj4KK2FyZSB1c2VkIGZvciB0aGUgbG93ZXIgcGFuZWwuCisKK0ZvciBhY3RpdmUgZGlzcGxheXMgb3IgZGlzcGxheXMgcmVxdWlyaW5nIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbgorKGNvbnRyb2xsaW5nIGJhY2tsaWdodHMsIHBvd2VyaW5nIG9uIHRoZSBMQ0QsIGV0Yy4pLCB0aGUgY29tbWFuZCBsaW5lCitvcHRpb25zIG1heSBub3QgYmUgZW5vdWdoIHRvIGNvbmZpZ3VyZSB0aGUgZGlzcGxheS4gQWRkaW5nIHNlY3Rpb25zIHRvCitzYTExMDBmYl9pbml0X2ZiaW5mbygpLCBzYTExMDBmYl9hY3RpdmF0ZV92YXIoKSwKK3NhMTEwMGZiX2Rpc2FibGVfbGNkX2NvbnRyb2xsZXIoKSwgYW5kIHNhMTEwMGZiX2VuYWJsZV9sY2RfY29udHJvbGxlcigpCit3aWxsIHByb2JhYmx5IGJlIG5lY2Vzc2FyeS4KKworQWNjZXB0ZWQgb3B0aW9uczoKKworYnBwOjx2YWx1ZT4JQ29uZmlndXJlIGZvciA8dmFsdWU+IGJpdHMgcGVyIHBpeGVsCitsY2NyMDo8dmFsdWU+CUNvbmZpZ3VyZSBMQ0QgY29udHJvbCByZWdpc3RlciAwICgxMS43LjMpCitsY2NyMTo8dmFsdWU+CUNvbmZpZ3VyZSBMQ0QgY29udHJvbCByZWdpc3RlciAxICgxMS43LjQpCitsY2NyMjo8dmFsdWU+CUNvbmZpZ3VyZSBMQ0QgY29udHJvbCByZWdpc3RlciAyICgxMS43LjUpCitsY2NyMzo8dmFsdWU+CUNvbmZpZ3VyZSBMQ0QgY29udHJvbCByZWdpc3RlciAzICgxMS43LjYpCisKKy0tCitNYXJrIEh1YW5nIDxtaHVhbmdAbGl2ZXRveS5jb20+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZiL3NoNzc2MGZiLnR4dCBiL0RvY3VtZW50YXRpb24vZmIvc2g3NzYwZmIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5OTRjM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZiL3NoNzc2MGZiLnR4dApAQCAtMCwwICsxLDEzMSBAQAorU0g3NzYwL1NINzc2MyBpbnRlZ3JhdGVkIExDREMgRnJhbWVidWZmZXIgZHJpdmVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworMC4gT3ZlcnZpZXcKKy0tLS0tLS0tLS0tCitUaGUgU0g3NzYwL1NINzc2MyBoYXZlIGFuIGludGVncmF0ZWQgTENEIERpc3BsYXkgY29udHJvbGxlciAoTENEQykgd2hpY2gKK3N1cHBvcnRzIChpbiB0aGVvcnkpIHJlc29sdXRpb25zIHJhbmdpbmcgZnJvbSAxeDEgdG8gMTAyNHgxMDI0LAord2l0aCBjb2xvciBkZXB0aHMgcmFuZ2luZyBmcm9tIDEgdG8gMTYgYml0cywgb24gU1ROLCBEU1ROIGFuZCBURlQgUGFuZWxzLgorCitDYXZlYXRzOgorKiBGcmFtZWJ1ZmZlciBtZW1vcnkgbXVzdCBiZSBhIGxhcmdlIGNodW5rIGFsbG9jYXRlZCBhdCB0aGUgdG9wCisgIG9mIEFyZWEzIChIVyByZXF1aXJlbWVudCkuIEJlY2F1c2Ugb2YgdGhpcyByZXF1aXJlbWVudCB5b3Ugc2hvdWxkIE5PVAorICBtYWtlIHRoZSBkcml2ZXIgYSBtb2R1bGUgc2luY2UgYXQgcnVudGltZSBpdCBtYXkgYmVjb21lIGltcG9zc2libGUgdG8KKyAgZ2V0IGEgbGFyZ2UgZW5vdWdoIGNvbnRpZ3VvdXMgY2h1bmsgb2YgbWVtb3J5LgorCisqIFRoZSBkcml2ZXIgZG9lcyBub3Qgc3VwcG9ydCBjaGFuZ2luZyByZXNvbHV0aW9uIHdoaWxlIGxvYWRlZAorICAoZGlzcGxheXMgYXJlbid0IGhvdHBsdWdnYWJsZSBhbnl3YXkpCisKKyogSGVhdnkgZmxpY2tlcmluZyBtYXkgYmUgb2JzZXJ2ZWQKKyAgYSkgaWYgeW91J3JlIHVzaW5nIDE1LzE2Yml0IGNvbG9yIG1vZGVzIGF0ID49IDY0MHg0ODAgcHggcmVzb2x1dGlvbnMsCisgIGIpIGR1cmluZyBQQ01DSUEgKG9yIGFueSBvdGhlciBzbG93IGJ1cykgYWN0aXZpdHkuCisKKyogUm90YXRpb24gd29ya3Mgb25seSA5MGRlZ3Jlc3MgY2xvY2t3aXNlLCBhbmQgb25seSBpZiBob3Jpem9udGFsCisgIHJlc29sdXRpb24gaXMgPD0gMzIwIHBpeGVscy4KKworZmlsZXM6ICAgZHJpdmVycy92aWRlby9zaDc3NjBmYi5jCisgICAgICAgIGluY2x1ZGUvYXNtLXNoL3NoNzc2MGZiLmgKKyAgICAgICAgRG9jdW1lbnRhdGlvbi9mYi9zaDc3NjBmYi50eHQKKworMS4gUGxhdGZvcm0gc2V0dXAKKy0tLS0tLS0tLS0tLS0tLS0tCitTSDc3NjA6CisgVmlkZW8gZGF0YSBpcyBmZXRjaGVkIHZpYSB0aGUgRE1BQlJHIERNQSBlbmdpbmUsIHNvIHlvdSBoYXZlIHRvCisgY29uZmlndXJlIHRoZSBTSCBETUFDIGZvciBETUFCUkcgbW9kZSAod3JpdGUgMHg5NDgwODA4MCB0byB0aGUKKyBETUFSU1JBIHJlZ2lzdGVyIHNvbWV3aGVyZSBhdCBib290KS4KKworIFBGQyByZWdpc3RlcnMgUENDUiBhbmQgUENEUiBtdXN0IGJlIHNldCB0byBwZXJpcGhlcmFsIG1vZGUuCisgKHdyaXRlIHplcm9zIHRvIGJvdGgpLgorCitUaGUgZHJpdmVyIGRvZXMgTk9UIGRvIHRoZSBhYm92ZSBmb3IgeW91IHNpbmNlIGJvYXJkIHNldHVwIGlzLCB3ZWxsLCBqb2IKK29mIHRoZSBib2FyZCBzZXR1cCBjb2RlLgorCisyLiBQYW5lbCBkZWZpbml0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBMQ0RDIG11c3QgZXhwbGljaXRseSBiZSB0b2xkIGFib3V0IHRoZSB0eXBlIG9mIExDRCBwYW5lbAorYXR0YWNoZWQuICBEYXRhIG11c3QgYmUgd3JhcHBlZCBpbiBhICJzdHJ1Y3Qgc2g3NzYwZmJfcGxhdGRhdGEiIGFuZAorcGFzc2VkIHRvIHRoZSBkcml2ZXIgYXMgcGxhdGZvcm1fZGF0YS4KKworU3VnZ2VzdCB5b3UgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBTSDc3NjAgTWFudWFsLCBTZWN0aW9uIDMwLgorKGh0dHA6Ly9kb2N1bWVudGF0aW9uLnJlbmVzYXMuY29tL2VuZy9wcm9kdWN0cy9tcHVtY3UvZTYwMjI5MV9zaDc3NjAucGRmKQorCitUaGUgZm9sbG93aW5nIGNvZGUgaWxsdXN0cmF0ZXMgd2hhdCBuZWVkcyB0byBiZSBkb25lIHRvCitnZXQgdGhlIGZyYW1lYnVmZmVyIHdvcmtpbmcgb24gYSA2NDB4NDgwIFRGVDoKKworPT09PT09PT09PT09PT09PT09PT09PSBjdXQgaGVyZSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjaW5jbHVkZSA8bGludXgvZmIuaD4KKyNpbmNsdWRlIDxhc20vc2g3NzYwZmIuaD4KKworLyoKKyAqIE5FQyBOTDY0NDBiYzI2LTAxIDY0MHg0ODAgVEZUCisgKiBkb3RjbG9jayAyNTE3NSBrSHoKKyAqIFhyZXMgICAgICAgICAgICAgICAgNjQwICAgICBZcmVzICAgICAgICAgICAgNDgwCisgKiBIdG90YWwgICAgICA4MDAgICAgIFZ0b3RhbCAgICAgICAgICA1MjUKKyAqIEhzeW5TdGFydCAgIDY1NiAgICAgVnN5blN0YXJ0ICAgICAgIDQ5MAorICogSHN5bkxlbm4gICAgMzAgICAgICBWc3luTGVubiAgICAgICAgMgorICoKKyAqIFRoZSBsaW51eCBmcmFtZWJ1ZmZlciBsYXllciBkb2VzIG5vdCB1c2UgdGhlIHN5bmNzdGFydC9zeW5jbGVuCisgKiB2YWx1ZXMgYnV0IHJpZ2h0L2xlZnQvdXBwZXIvbG93ZXIgbWFyZ2luIHZhbHVlcy4gVGhlIGNvbW1lbnRzCisgKiBmb3IgdGhlIHhfbWFyZ2luIGV4cGxhaW4gaG93IHRvIGNhbGN1bGF0ZSB0aG9zZSBmcm9tIGdpdmVuCisgKiBwYW5lbCBzeW5jIHRpbWluZ3MuCisgKi8KK3N0YXRpYyBzdHJ1Y3QgZmJfdmlkZW9tb2RlIG5sNjQ0OGJjMjYgPSB7CisgICAgICAgLm5hbWUgICAgICAgICAgID0gIk5MNjQ0OEJDMjYiLAorICAgICAgIC5yZWZyZXNoICAgICAgICA9IDYwLAorICAgICAgIC54cmVzICAgICAgICAgICA9IDY0MCwKKyAgICAgICAueXJlcyAgICAgICAgICAgPSA0ODAsCisgICAgICAgLnBpeGNsb2NrICAgICAgID0gMzk2ODMsICAgICAgICAvKiBpbiBwaWNvc2Vjb25kcyEgKi8KKyAgICAgICAuaHN5bmNfbGVuICAgICAgPSAzMCwKKyAgICAgICAudnN5bmNfbGVuICAgICAgPSAyLAorICAgICAgIC5sZWZ0X21hcmdpbiAgICA9IDExNCwgIC8qIEhUT1QgLSAoSFNZTlNMRU4gKyBIU1lOU1RBUlQpICovCisgICAgICAgLnJpZ2h0X21hcmdpbiAgID0gMTYsICAgLyogSFNZTlNUQVJUIC0gWFJFUyAqLworICAgICAgIC51cHBlcl9tYXJnaW4gICA9IDMzLCAgIC8qIFZUT1QgLSAoVlNZTkxFTiArIFZTWU5TVEFSVCkgKi8KKyAgICAgICAubG93ZXJfbWFyZ2luICAgPSAxMCwgICAvKiBWU1lOU1RBUlQgLSBZUkVTICovCisgICAgICAgLnN5bmMgICAgICAgICAgID0gRkJfU1lOQ19IT1JfSElHSF9BQ1QgfCBGQl9TWU5DX1ZFUlRfSElHSF9BQ1QsCisgICAgICAgLnZtb2RlICAgICAgICAgID0gRkJfVk1PREVfTk9OSU5URVJMQUNFRCwKKyAgICAgICAuZmxhZyAgICAgICAgICAgPSAwLAorfTsKKworc3RhdGljIHN0cnVjdCBzaDc3NjBmYl9wbGF0ZGF0YSBzaDc3NjBmYl9ubDY0NDggPSB7CisgICAgICAgLmRlZl9tb2RlICAgICAgID0gJm5sNjQ0OGJjMjYsCisgICAgICAgLmxkbXRyICAgICAgICAgID0gTERNVFJfVEZUX0NPTE9SXzE2LCAgIC8qIDE2Yml0IFRGVCBwYW5lbCAqLworICAgICAgIC5sZGRmciAgICAgICAgICA9IExEREZSXzhCUFAsICAgICAgICAgICAvKiB3ZSB3YW50IDhiaXQgb3V0cHV0ICovCisgICAgICAgLmxkcG1tciAgICAgICAgID0gMHgwMDcwLAorICAgICAgIC5sZHBzcHIgICAgICAgICA9IDB4MDUwMCwKKyAgICAgICAubGRhY2xuciAgICAgICAgPSAwLAorICAgICAgIC5sZGlja3IgICAgICAgICA9IExESUNLUl9DTEtTUkMoTENEQ19DTEtTUkNfRVhURVJOQUwpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICBMRElDS1JfQ0xLRElWKDEpLAorICAgICAgIC5yb3RhdGUgICAgICAgICA9IDAsCisgICAgICAgLm5vdnN5bmMgICAgICAgID0gMSwKKyAgICAgICAuYmxhbmsgICAgICAgICAgPSBOVUxMLAorfTsKKworLyogU0g3NzYwOgorICogMHhGRTMwMDgwMDogMjU2ICogNGJ5dGUgeFJHQiBwYWxldHRlIHJhbQorICogMHhGRTMwMEMwMDogNDIgYnl0ZXMgY3RybCByZWdpc3RlcnMKKyAqLworc3RhdGljIHN0cnVjdCByZXNvdXJjZSBzaDc3NjBfbGNkY19yZXNbXSA9IHsKKyAgICAgICBbMF0gPSB7CisgICAgICAgICAgICAgICAuc3RhcnQgID0gMHhGRTMwMDgwMCwKKyAgICAgICAgICAgICAgIC5lbmQgICAgPSAweEZFMzAwQ0ZGLAorICAgICAgICAgICAgICAgLmZsYWdzICA9IElPUkVTT1VSQ0VfTUVNLAorICAgICAgIH0sCisgICAgICAgWzFdID0geworICAgICAgICAgICAgICAgLnN0YXJ0ICA9IDY1LAorICAgICAgICAgICAgICAgLmVuZCAgICA9IDY1LAorICAgICAgICAgICAgICAgLmZsYWdzICA9IElPUkVTT1VSQ0VfSVJRLAorICAgICAgIH0sCit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBzaDc3NjBfbGNkY19kZXYgPSB7CisgICAgICAgLmRldiAgICA9IHsKKyAgICAgICAgICAgICAgIC5wbGF0Zm9ybV9kYXRhID0gJnNoNzc2MGZiX25sNjQ0OCwKKyAgICAgICB9LAorICAgICAgIC5uYW1lICAgICAgICAgICA9ICJzaDc3NjAtbGNkYyIsCisgICAgICAgLmlkICAgICAgICAgICAgID0gLTEsCisgICAgICAgLnJlc291cmNlICAgICAgID0gc2g3NzYwX2xjZGNfcmVzLAorICAgICAgIC5udW1fcmVzb3VyY2VzICA9IEFSUkFZX1NJWkUoc2g3NzYwX2xjZGNfcmVzKSwKK307CisKKz09PT09PT09PT09PT09PT09PT09PT0gY3V0IGhlcmUgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvc2lzZmIudHh0IGIvRG9jdW1lbnRhdGlvbi9mYi9zaXNmYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU2OGU1MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmIvc2lzZmIudHh0CkBAIC0wLDAgKzEsMTU4IEBACisKK1doYXQgaXMgc2lzZmI/Cis9PT09PT09PT09PT09PQorCitzaXNmYiBpcyBhIGZyYW1lYnVmZmVyIGRldmljZSBkcml2ZXIgZm9yIFNpUyAoU2lsaWNvbiBJbnRlZ3JhdGVkIFN5c3RlbXMpCitncmFwaGljcyBjaGlwcy4gU3VwcG9ydGVkIGFyZToKKworLSBTaVMgMzAwIHNlcmllczogU2lTIDMwMC8zMDUsIDU0MCwgNjMwKFMpLCA3MzAoUykKKy0gU2lTIDMxNSBzZXJpZXM6IFNpUyAzMTUvSC9QUk8sIDU1eCwgKE0pNjV4LCA3NDAsIChNKTY2MShGL00pWCwgKE0pNzQxKEdYKQorLSBTaVMgMzMwIHNlcmllczogU2lTIDMzMCAoIlhhYnJlIiksIChNKTc2MAorCisKK1doeSBkbyBJIG5lZWQgYSBmcmFtZWJ1ZmZlciBkcml2ZXI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitzaXNmYiBpcyBlZy4gdXNlZnVsIGlmIHlvdSB3YW50IGEgaGlnaC1yZXNvbHV0aW9uIHRleHQgY29uc29sZS4gQmVzaWRlcyB0aGF0LAorc2lzZmIgaXMgcmVxdWlyZWQgdG8gcnVuIERpcmVjdEZCICh3aGljaCBjb21lcyB3aXRoIGFuIGFkZGl0aW9uYWwsIGRlZGljYXRlZAorZHJpdmVyIGZvciB0aGUgMzE1IHNlcmllcykuCisKK09uIHRoZSAzMDAgc2VyaWVzLCBzaXNmYiBvbiBrZXJuZWxzIG9sZGVyIHRoYW4gMi42LjMgZnVydGhlcm1vcmUgcGxheXMgYW4KK2ltcG9ydGFudCByb2xlIGluIGNvbm5lY3Rpb24gd2l0aCBEUk0vRFJJOiBTaXNmYiBtYW5hZ2VzIHRoZSBtZW1vcnkgaGVhcAordXNlZCBieSBEUk0vRFJJIGZvciAzRCB0ZXh0dXJlIGFuZCBvdGhlciBkYXRhLiBUaGlzIG1lbW9yeSBtYW5hZ2VtZW50IGlzCityZXF1aXJlZCBmb3IgdXNpbmcgRFJJL0RSTS4KKworS2VybmVscyA+PSBhcm91bmQgMi42LjMgZG8gbm90IG5lZWQgc2lzZmIgYW55IGxvbmdlciBmb3IgRFJJL0RSTSBtZW1vcnkKK21hbmFnZW1lbnQuIFRoZSBTaVMgRFJNIGRyaXZlciBoYXMgYmVlbiB1cGRhdGVkIGFuZCBmZWF0dXJlcyBhIG1lbW9yeSBtYW5hZ2VyCitvZiBpdHMgb3duICh3aGljaCB3aWxsIGJlIHVzZWQgaWYgc2lzZmIgaXMgbm90IGNvbXBpbGVkKS4gU28gdW5sZXNzIHlvdSB3YW50CithIGdyYXBoaWNhbCBjb25zb2xlLCB5b3UgZG9uJ3QgbmVlZCBzaXNmYiBvbiBrZXJuZWxzID49Mi42LjMuCisKK1NpZGVub3RlOiBTaW5jZSB0aGlzIHNlZW1zIHRvIGJlIGEgY29tbW9ubHkgbWFkZSBtaXN0YWtlOiBzaXNmYiBhbmQgdmVzYWZiCitjYW5ub3QgYmUgYWN0aXZlIGF0IHRoZSBzYW1lIHRpbWUhIERvIG9ubHkgc2VsZWN0IG9uZSBvZiB0aGVtIGluIHlvdXIga2VybmVsCitjb25maWd1cmF0aW9uLgorCisKK0hvdyBhcmUgcGFyYW1ldGVycyBwYXNzZWQgdG8gc2lzZmI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitXZWxsLCBpdCBkZXBlbmRzOiBJZiBjb21waWxlZCBzdGF0aWNhbGx5IGludG8gdGhlIGtlcm5lbCwgdXNlIGxpbG8ncyBhcHBlbmQKK3N0YXRlbWVudCB0byBhZGQgdGhlIHBhcmFtZXRlcnMgdG8gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUuIFBsZWFzZSBzZWUgbGlsbydzCisob3IgR1JVQidzKSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLiBJZiBzaXNmYiBpcyBhIGtlcm5lbCBtb2R1bGUsCitwYXJhbWV0ZXJzIGFyZSBnaXZlbiB3aXRoIHRoZSBtb2Rwcm9iZSAob3IgaW5zbW9kKSBjb21tYW5kLgorCitFeGFtcGxlIGZvciBzaXNmYiBhcyBwYXJ0IG9mIHRoZSBzdGF0aWMga2VybmVsOiBBZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHlvdXIKK2xpbG8uY29uZjoKKworICAgICBhcHBlbmQ9InZpZGVvPXNpc2ZiOm1vZGU6MTAyNHg3Njh4MTYsbWVtOjEyMjg4LHJhdGU6NzUiCisKK0V4YW1wbGUgZm9yIHNpc2ZiIGFzIGEgbW9kdWxlOiBTdGFydCBzaXNmYiBieSB0eXBpbmcKKworICAgICBtb2Rwcm9iZSBzaXNmYiBtb2RlPTEwMjR4NzY4eDE2IHJhdGU9NzUgbWVtPTEyMjg4CisKK0EgY29tbW9uIG1pc3Rha2UgaXMgdGhhdCBmb2xrcyB1c2UgYSB3cm9uZyBwYXJhbWV0ZXIgZm9ybWF0IHdoZW4gdXNpbmcgdGhlCitkcml2ZXIgY29tcGlsZWQgaW50byB0aGUga2VybmVsLiBQbGVhc2Ugbm90ZTogSWYgY29tcGlsZWQgaW50byB0aGUga2VybmVsLAordGhlIHBhcmFtZXRlciBmb3JtYXQgaXMgdmlkZW89c2lzZmI6bW9kZTpub25lIG9yIHZpZGVvPXNpc2ZiOm1vZGU6MTAyNHg3Njh4MTYKKyhvciB3aGF0ZXZlciBtb2RlIHlvdSB3YW50IHRvIHVzZSwgYWx0ZXJuYXRpdmVseSB1c2luZyBhbnkgb3RoZXIgZm9ybWF0CitkZXNjcmliZWQgYWJvdmUgb3IgdGhlIHZlc2Ega2V5d29yZCBpbnN0ZWFkIG9mIG1vZGUpLiBJZiBjb21waWxlZCBhcyBhIG1vZHVsZSwKK3RoZSBwYXJhbWV0ZXIgZm9ybWF0IHJlYWRzIG1vZGU9bm9uZSBvciBtb2RlPTEwMjR4NzY4eDE2IChvciB3aGF0ZXZlciBtb2RlIHlvdQord2FudCB0byB1c2UpLiBVc2luZyBhICI9IiBmb3IgYSAiOiIgKGFuZCB2aWNlIHZlcnNhKSBpcyBhIGh1Z2UgZGlmZmVyZW5jZSEKK0FkZGl0aW9uYWxseTogSWYgeW91IGdpdmUgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCB0byB0aGUgaW4ta2VybmVsIHNpc2ZiLCB0aGUKK2FyZ3VtZW50cyBhcmUgc2VwYXJhdGVkIHdpdGggIiwiLiBGb3IgZXhhbXBsZToKKworICAgdmlkZW89c2lzZmI6bW9kZToxMDI0eDc2OHgxNixyYXRlOjc1LG1lbToxMjI4OAorCisKK0hvdyBkbyBJIHVzZSBpdD8KKz09PT09PT09PT09PT09PT0KKworUHJlZmFjZSBzdGF0ZW1lbnQ6IFRoaXMgZmlsZSBvbmx5IGNvdmVycyB2ZXJ5IGxpdHRsZSBvZiB0aGUgZHJpdmVyJ3MKK2NhcGFiaWxpdGllcyBhbmQgZmVhdHVyZXMuIFBsZWFzZSByZWZlciB0byB0aGUgYXV0aG9yJ3MgYW5kIG1haW50YWluZXIncword2Vic2l0ZSBhdCBodHRwOi8vd3d3LndpbmlzY2hob2Zlci5uZXQvbGludXhzaXN2Z2Euc2h0bWwgZm9yIG1vcmUKK2luZm9ybWF0aW9uLiBBZGRpdGlvbmFsbHksICJtb2RpbmZvIHNpc2ZiIiBnaXZlcyBhbiBvdmVydmlldyBvdmVyIGFsbAorc3VwcG9ydGVkIG9wdGlvbnMgaW5jbHVkaW5nIHNvbWUgZXhwbGFuYXRpb24uCisKK1RoZSBkZXNpcmVkIGRpc3BsYXkgbW9kZSBjYW4gYmUgc3BlY2lmaWVkIHVzaW5nIHRoZSBrZXl3b3JkICJtb2RlIiB3aXRoCithIHBhcmFtZXRlciBpbiBvbmUgb2YgdGhlIGZvbGxvd2luZyBmb3JtYXRzOgorICAtIFh4WXhEZXB0aCBvcgorICAtIFh4WS1EZXB0aCBvcgorICAtIFh4WS1EZXB0aEBSYXRlIG9yCisgIC0gWHhZCisgIC0gb3Igc2ltcGx5IHVzZSB0aGUgVkVTQSBtb2RlIG51bWJlciBpbiBoZXhhZGVjaW1hbCBvciBkZWNpbWFsLgorCitGb3IgZXhhbXBsZTogMTAyNHg3Njh4MTYsIDEwMjR4NzY4LTE2QDc1LCAxMjgweDEwMjQtMTYuIElmIG5vIGRlcHRoIGlzCitzcGVjaWZpZWQsIGl0IGRlZmF1bHRzIHRvIDguIElmIG5vIHJhdGUgaXMgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvIDYwSHouIERlcHRoIDMyCittZWFucyAyNGJpdCBjb2xvciBkZXB0aCAoYnV0IDMyIGJpdCBmcmFtZWJ1ZmZlciBkZXB0aCwgd2hpY2ggaXMgbm90IHJlbGV2YW50Cit0byB0aGUgdXNlcikuCisKK0FkZGl0aW9uYWxseSwgc2lzZmIgdW5kZXJzdGFuZHMgdGhlIGtleXdvcmQgInZlc2EiIGZvbGxvd2VkIGJ5IGEgVkVTQSBtb2RlCitudW1iZXIgaW4gZGVjaW1hbCBvciBoZXhhZGVjaW1hbC4gRm9yIGV4YW1wbGU6IHZlc2E9NzkxIG9yIHZlc2E9MHgxMTcuIFBsZWFzZQordXNlIGVpdGhlciAibW9kZSIgb3IgInZlc2EiIGJ1dCBub3QgYm90aC4KKworTGludXggMi40IG9ubHk6IElmIG5vIG1vZGUgaXMgZ2l2ZW4sIHNpc2ZiIGRlZmF1bHRzIHRvICJubyBtb2RlIiAobW9kZT1ub25lKSBpZgorY29tcGlsZWQgYXMgYSBtb2R1bGU7IGlmIHNpc2ZiIGlzIHN0YXRpY2FsbHkgY29tcGlsZWQgaW50byB0aGUga2VybmVsLCBpdAorZGVmYXVsdHMgdG8gODAweDYwMHg4IHVubGVzcyBDUlQyIHR5cGUgaXMgTENELCBpbiB3aGljaCBjYXNlIHRoZSBMQ0QncyBuYXRpdmUKK3Jlc29sdXRpb24gaXMgdXNlZC4gSWYgeW91IHdhbnQgdG8gc3dpdGNoIHRvIGEgZGlmZmVyZW50IG1vZGUsIHVzZSB0aGUgZmJzZXQKK3NoZWxsIGNvbW1hbmQuCisKK0xpbnV4IDIuNiBvbmx5OiBJZiBubyBtb2RlIGlzIGdpdmVuLCBzaXNmYiBkZWZhdWx0cyB0byA4MDB4NjAweDggdW5sZXNzIENSVDIKK3R5cGUgaXMgTENELCBpbiB3aGljaCBjYXNlIGl0IGRlZmF1bHRzIHRvIHRoZSBMQ0QncyBuYXRpdmUgcmVzb2x1dGlvbi4gSWYKK3lvdSB3YW50IHRvIHN3aXRjaCB0byBhbm90aGVyIG1vZGUsIHVzZSB0aGUgc3R0eSBzaGVsbCBjb21tYW5kLgorCitZb3Ugc2hvdWxkIGNvbXBpbGUgaW4gYm90aCB2Z2Fjb24gKHRvIGJvb3QgaWYgeW91IHJlbW92ZSB5b3UgU2lTIGNhcmQgZnJvbQoreW91ciBzeXN0ZW0pIGFuZCBzaXNmYiAoZm9yIGdyYXBoaWNzIG1vZGUpLiBVbmRlciBMaW51eCAyLjYsIGFsc28gIkZyYW1lYnVmZmVyCitjb25zb2xlIHN1cHBvcnQiIChmYmNvbikgaXMgbmVlZGVkIGZvciBhIGdyYXBoaWNhbCBjb25zb2xlLgorCitZb3Ugc2hvdWxkICpub3QqIGNvbXBpbGUtaW4gdmVzYWZiLiBBbmQgcGxlYXNlIGRvIG5vdCB1c2UgdGhlICJ2Z2E9IiBrZXl3b3JkCitpbiBsaWxvJ3Mgb3IgZ3J1YidzIGNvbmZpZ3VyYXRpb24gZmlsZTsgbW9kZSBzZWxlY3Rpb24gaXMgZG9uZSB1c2luZyB0aGUKKyJtb2RlIiBvciAidmVzYSIga2V5d29yZHMgYXMgYSBwYXJhbWV0ZXIuIFNlZSBhYm92ZSBhbmQgYmVsb3cuCisKKworWDExCis9PT0KKworSWYgdXNpbmcgWEZyZWU4NiBvciBYLm9yZywgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgZG9uJ3QgdXNlIHRoZSAiZmJkZXYiCitkcml2ZXIgYnV0IHRoZSBkZWRpY2F0ZWQgInNpcyIgWCBkcml2ZXIuIFRoZSAic2lzIiBYIGRyaXZlciBhbmQgc2lzZmIgYXJlCitkZXZlbG9wZWQgYnkgdGhlIHNhbWUgcGVyc29uIChUaG9tYXMgV2luaXNjaGhvZmVyKSBhbmQgY29vcGVyYXRlIHdlbGwgd2l0aAorZWFjaCBvdGhlci4KKworCitTVkdBTGliCis9PT09PT09CisKK1NWR0FMaWIsIGlmIGRpcmVjdGx5IGFjY2Vzc2luZyB0aGUgaGFyZHdhcmUsIG5ldmVyIHJlc3RvcmVzIHRoZSBzY3JlZW4KK2NvcnJlY3RseSwgZXNwZWNpYWxseSBvbiBsYXB0b3BzIG9yIGlmIHRoZSBvdXRwdXQgZGV2aWNlcyBhcmUgTENEIG9yIFRWLgorVGhlcmVmb3JlLCB1c2UgdGhlIGNoaXBzZXQgIkZCREVWIiBpbiBTVkdBTGliIGNvbmZpZ3VyYXRpb24uIFRoaXMgd2lsbCBtYWtlCitTVkdBTGliIHVzZSB0aGUgZnJhbWVidWZmZXIgZGV2aWNlIGZvciBtb2RlIHN3aXRjaGVzIGFuZCByZXN0b3JhdGlvbi4KKworCitDb25maWd1cmF0aW9uCis9PT09PT09PT09PT09CisKKyhTb21lKSBhY2NlcHRlZCBvcHRpb25zOgorCitvZmYgICAgICAtIERpc2FibGUgc2lzZmIuIFRoaXMgb3B0aW9uIGlzIG9ubHkgdW5kZXJzdG9vZCBpZiBzaXNmYiBpcworICAgICAgICAgICBpbi1rZXJuZWwsIG5vdCBhIG1vZHVsZS4KK21lbTpYICAgIC0gc2l6ZSBvZiBtZW1vcnkgZm9yIHRoZSBjb25zb2xlLCByZXN0IHdpbGwgYmUgdXNlZCBmb3IgRFJJL0RSTS4gWAorICAgICAgICAgICBpcyBpbiBraWxvYnl0ZXMuIE9uIDMwMCBzZXJpZXMsIHRoZSBkZWZhdWx0IGlzIDQwOTYsIDgxOTIgb3IKKwkgICAxNjM4NCAoZWFjaCBpbiBraWxvYnl0ZSkgZGVwZW5kaW5nIG9uIGhvdyBtdWNoIHZpZGVvIHJhbSB0aGUgY2FyZAorICAgICAgICAgICBoYXMuIE9uIDMxNS8zMzAgc2VyaWVzLCB0aGUgZGVmYXVsdCBpcyB0aGUgbWF4aW11bSBhdmFpbGFibGUgcmFtCisJICAgKHNpbmNlIERSSS9EUk0gaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhlc2UgY2hpcHNldHMpLgorbm9hY2NlbCAgLSBkbyBub3QgdXNlIDJEIGFjY2VsZXJhdGlvbiBlbmdpbmUuIChEZWZhdWx0OiB1c2UgYWNjZWxlcmF0aW9uKQorbm95cGFuICAgLSBkaXNhYmxlIHktcGFubmluZyBhbmQgc2Nyb2xsIGJ5IHJlZHJhd2luZyB0aGUgZW50aXJlIHNjcmVlbi4KKyAgICAgICAgICAgVGhpcyBpcyBtdWNoIHNsb3dlciB0aGFuIHktcGFubmluZy4gKERlZmF1bHQ6IHVzZSB5LXBhbm5pbmcpCit2ZXNhOlggICAtIHNlbGVjdHMgc3RhcnR1cCB2aWRlb21vZGUuIFggaXMgbnVtYmVyIGZyb20gMCB0byAweDFGRiBhbmQKKyAgICAgICAgICAgcmVwcmVzZW50cyB0aGUgVkVTQSBtb2RlIG51bWJlciAoY2FuIGJlIGdpdmVuIGluIGRlY2ltYWwgb3IKKwkgICBoZXhhZGVjaW1hbCBmb3JtLCB0aGUgbGF0dGVyIHByZWZpeGVkIHdpdGggIjB4IikuCittb2RlOlggICAtIHNlbGVjdHMgc3RhcnR1cCB2aWRlb21vZGUuIFBsZWFzZSBzZWUgYWJvdmUgZm9yIHRoZSBmb3JtYXQgb2YKKyAgICAgICAgICAgIlgiLgorCitCb29sZWFuIG9wdGlvbnMgc3VjaCBhcyAibm9hY2NlbCIgb3IgIm5veXBhbiIgYXJlIHRvIGJlIGdpdmVuIHdpdGhvdXQgYQorcGFyYW1ldGVyIGlmIHNpc2ZiIGlzIGluLWtlcm5lbCAoZm9yIGV4YW1wbGUgInZpZGVvPXNpc2ZiOm5veXBhbikuIElmCitzaXNmYiBpcyBhIG1vZHVsZSwgdGhlc2UgYXJlIHRvIGJlIHNldCB0byAxIChmb3IgZXhhbXBsZSAibW9kcHJvYmUgc2lzZmIKK25veXBhbj0xIikuCisKKy0tCitUaG9tYXMgV2luaXNjaGhvZmVyIDx0aG9tYXNAd2luaXNjaGhvZmVyLm5ldD4KK01heSAyNywgMjAwNAorCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvc201MDEudHh0IGIvRG9jdW1lbnRhdGlvbi9mYi9zbTUwMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg3ZjNiMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmIvc201MDEudHh0CkBAIC0wLDAgKzEsMTAgQEAKK0NvbmZpZ3VyYXRpb246CisKK1lvdSBjYW4gcGFzcyB0aGUgZm9sbG93aW5nIGtlcm5lbCBjb21tYW5kIGxpbmUgb3B0aW9ucyB0byBzbTUwMSB2aWRlb2ZyYW1lYnVmZmVyOgorCisJc201MDFmYi5icHA9CVNNNTAxIERpc3BsYXkgZHJpdmVyOgorCQkJU3BlY2lmeSBiaXRzLXBlci1waXhlbCBpZiBub3Qgc3BlY2lmaWVkIGJ5ICdtb2RlJworCisJc201MDFmYi5tb2RlPQlTTTUwMSBEaXNwbGF5IGRyaXZlcjoKKwkJCVNwZWNpZnkgcmVzb2x1dGlvbiBhcworCQkJIjx4cmVzPng8eXJlcz5bLTxicHA+XVtAPHJlZnJlc2g+XSIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvc203MTJmYi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZiL3NtNzEyZmIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzODg0NDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZiL3NtNzEyZmIudHh0CkBAIC0wLDAgKzEsMzEgQEAKK1doYXQgaXMgc203MTJmYj8KKz09PT09PT09PT09PT09PT09CisKK1RoaXMgaXMgYSBncmFwaGljcyBmcmFtZWJ1ZmZlciBkcml2ZXIgZm9yIFNpbGljb24gTW90aW9uIFNNNzEyIGJhc2VkIHByb2Nlc3NvcnMuCisKK0hvdyB0byB1c2UgaXQ/Cis9PT09PT09PT09PT09PQorCitTd2l0Y2hpbmcgbW9kZXMgaXMgZG9uZSB1c2luZyB0aGUgdmlkZW89c203MTJmYjouLi4gYm9vdCBwYXJhbWV0ZXIuCisKK0lmIHlvdSB3YW50LCBmb3IgZXhhbXBsZSwgZW5hYmxlIGEgcmVzb2x1dGlvbiBvZiAxMjgweDEwMjR4MjRicHAgeW91IHNob3VsZAorcGFzcyB0byB0aGUga2VybmVsIHRoaXMgY29tbWFuZCBsaW5lOiAidmlkZW89c203MTJmYjoweDMxQiIuCisKK1lvdSBzaG91bGQgbm90IGNvbXBpbGUtaW4gdmVzYWZiLgorCitDdXJyZW50bHkgc3VwcG9ydGVkIHZpZGVvIG1vZGVzIGFyZToKKworW0dyYXBoaWMgbW9kZXNdCisKK2JwcCB8IDY0MHg0ODAgIDgwMHg2MDAgIDEwMjR4NzY4ICAxMjgweDEwMjQKKy0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgOCB8IDB4MzAxICAgIDB4MzAzICAgIDB4MzA1ICAgIDB4MzA3CisgMTYgfCAweDMxMSAgICAweDMxNCAgICAweDMxNyAgICAweDMxQQorIDI0IHwgMHgzMTIgICAgMHgzMTUgICAgMHgzMTggICAgMHgzMUIKKworTWlzc2luZyBGZWF0dXJlcworPT09PT09PT09PT09PT09PQorKGFsaWFzIFRPRE8gbGlzdCkKKworCSogMkQgYWNjZWxlcmF0cmlvbgorCSogZHVhbC1oZWFkIHN1cHBvcnQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvc3N0ZmIudHh0IGIvRG9jdW1lbnRhdGlvbi9mYi9zc3RmYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNkYjEwNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmIvc3N0ZmIudHh0CkBAIC0wLDAgKzEsMTc0IEBACisKK0ludHJvZHVjdGlvbgorCisJICBUaGlzIGlzIGEgZnJhbWUgYnVmZmVyIGRldmljZSBkcml2ZXIgZm9yIDNkZngnIFZvb2RvbyBHcmFwaGljcyAKKwkoYWthIHZvb2RvbyAxLCBha2Egc3N0MSkgYW5kIFZvb2Rvb8KyIChha2EgVm9vZG9vIDIsIGFrYSBDVkcpIGJhc2VkIAorCXZpZGVvIGJvYXJkcy4gSXQncyBoaWdobHkgZXhwZXJpbWVudGFsIGNvZGUsIGJ1dCBpcyBndWFyYW50ZWVkIHRvIHdvcmsKKwlvbiBteSBjb21wdXRlciwgd2l0aCBteSAiTWF4aSBHYW1lciAzRCIgYW5kICJNYXhpIEdhbWVyIDNkwrIiIGJvYXJkcywKKwlhbmQgd2l0aCBtZSAiYmV0d2VlbiBjaGFpciBhbmQga2V5Ym9hcmQiLiBTb21lIHBlb3BsZSB0ZXN0ZWQgb3RoZXIKKwljb21iaW5hdGlvbnMgYW5kIGl0IHNlZW1zIHRoYXQgaXQgd29ya3MuCisJICBUaGUgbWFpbiBwYWdlIGlzIGxvY2F0ZWQgYXQgPGh0dHA6Ly9zc3RmYi5zb3VyY2Vmb3JnZS5uZXQ+LCBhbmQgaWYKKwl5b3Ugd2FudCB0aGUgbGF0ZXN0IHZlcnNpb24sIGNoZWNrIG91dCB0aGUgQ1ZTLCBhcyB0aGUgZHJpdmVyIGlzIGEgd29yaworCWluIHByb2dyZXNzLCBJIGZlZWwgdW5jb21mb3J0YWJsZSB3aXRoIHJlbGVhc2luZyB0YXJiYWxscyBvZiBzb21ldGhpbmcKKwlub3QgY29tcGxldGVseSB3b3JraW5nLi4uRG9uJ3Qgd29ycnksIGl0J3Mgc3RpbGwgbW9yZSB0aGFuIHVzYWJsZQorCShJIGVhdCBteSBvd24gZG9nIGZvb2QpCisKKwkgIFBsZWFzZSByZWFkIHRoZSBCdWcgc2VjdGlvbiwgYW5kIHJlcG9ydCBhbnkgc3VjY2VzcyBvciBmYWlsdXJlIHRvIG1lCisJKEdob3psYW5lIFRvdW1pIDxndG91bWlAbGFwb3N0ZS5uZXQ+KS4KKwkgIEJUVywgSWYgeW91IGhhdmUgb25seSBvbmUgbW9uaXRvciAsIGFuZCB5b3UgZG9uJ3QgZmVlbCBsaWtlIHBsYXlpbmcKKwl3aXRoIHRoZSB2Z2EgcGFzc3Rocm91IGNhYmxlLCBJIGNhbiBvbmx5IHN1Z2dlc3QgYm9ycm93aW5nIGEgc2NyZWVuCisJc29tZXdoZXJlLi4uIAorCisKK0luc3RhbGxhdGlvbiAKKworCSAgVGhpcyBkcml2ZXIgKHNob3VsZCkgd29yayBvbiBpeDg2LCB3aXRoICJsYXRlIiAyLjIueCBrZXJuZWwgKHRlc3RlZAorCXdpdGggeCA9IDE5KSBhbmQgInJlY2VudCIgMi40Lngga2VybmVsLCBhcyBhIG1vZHVsZSBvciBjb21waWxlZCBpbi4KKwkgIEl0IGhhcyBiZWVuIGluY2x1ZGVkIGluIG1haW5zdHJlYW0ga2VybmVsIHNpbmNlIHRoZSBpbmZhbW91cyAyLjQuMTAuCisJICBZb3UgY2FuIGFwcGx5IHRoZSBwYXRjaGVzIGZvdW5kIGluIHNzdGZiL2tlcm5lbC8qLTIuezJ8NH0ueC5wYXRjaCwKKwlhbmQgY29weSBzc3RmYi5jIHRvIGxpbnV4L2RyaXZlcnMvdmlkZW8vLCBvciBhcHBseSBhIHNpbmdsZSBwYXRjaCwgCisJc3N0ZmIvcGF0Y2gtMi57Mnw0fS54LXNzdGZiLXl5bW1kZCB0byB5b3VyIGxpbnV4IHNvdXJjZSB0cmVlLgorCisJICBUaGVuIGNvbmZpZ3VyZSB5b3VyIGtlcm5lbCBhcyB1c3VhbDogY2hvb3NlICJtIiBvciAieSIgdG8gM0RmeCBWb29kb28KKwlHcmFwaGljcyBpbiBzZWN0aW9uICJjb25zb2xlIi4gQ29tcGlsZSwgaW5zdGFsbCwgaGF2ZSBmdW4uLi4gYW5kIHBsZWFzZQorCWRyb3AgbWUgYSByZXBvcnQgOikKKworCitNb2R1bGUgVXNhZ2UKKwkKKwlXYXJuaW5ncy4KKwkjIFlvdSBzaG91bGQgcmVhZCBjb21wbGV0ZWx5IHRoaXMgc2VjdGlvbiBiZWZvcmUgaXNzdWluZyBhbnkgY29tbWFuZC4KKwkjIElmIHlvdSBoYXZlIG9ubHkgb25lIG1vbml0b3IgdG8gcGxheSB3aXRoLCBvbmNlIHlvdSBpbnNtb2QgdGhlCisJICBtb2R1bGUsIHRoZSAzZGZ4IHRha2VzIGNvbnRyb2wgb2YgdGhlIG91dHB1dCwgc28geW91J2xsIGhhdmUgdG8KKwkgIHBsdWcgdGhlIG1vbml0b3IgdG8gdGhlICJub3JtYWwiIHZpZGVvIGJvYXJkIGluIG9yZGVyIHRvIGlzc3VlCisJICB0aGUgY29tbWFuZHMsIG9yIHlvdSBjYW4gYmxpbmRseSB1c2Ugc3N0X2RiZ192Z2FwYXNzCisgICAgICAgICAgaW4gdGhlIHRvb2xzIGRpcmVjdG9yeSAoU2VlIFRvb2xzKS4gVGhlIGxhdGVzdCBzb2x1dGlvbiBpcyBwYXNzIHRoZQorCSAgcGFyYW1ldGVyIHZnYXBhc3M9MSB3aGVuIGluc21vZGRpbmcgdGhlIGRyaXZlci4gKFNlZSBLZXJuZWwvTW9kdWxlcworCSAgT3B0aW9ucykKKworCU1vZHVsZSBpbnNlcnRpb246CisJIyBpbnNtb2Qgc3N0ZmIubworCSAgeW91IHNob3VsZCBzZWUgc29tZSBzdHJhbmdlIG91dHB1dCBmcm9tIHRoZSBib2FyZDogCisJICBhIGJpZyBibHVlIHNxdWFyZSwgYSBncmVlbiBhbmQgYSByZWQgc21hbGwgc3F1YXJlcyBhbmQgYSB2ZXJ0aWNhbAorCSAgd2hpdGUgcmVjdGFuZ2xlLiB3aHk/IHRoZSBmdW5jdGlvbidzIG5hbWUgaXMgc2VsZi1leHBsYW5hdG9yeToKKwkgICJzc3RmYl90ZXN0KCkiLi4uCisJICAoaWYgeW91IGRvbid0IGhhdmUgYSBzZWNvbmQgbW9uaXRvciwgeW91J2xsIGhhdmUgdG8gcGx1ZyB5b3VyIG1vbml0b3IKKwkgIGRpcmVjdGx5IHRvIHRoZSAyRCB2aWRlb2NhcmQgdG8gc2VlIHdoYXQgeW91J3JlIHR5cGluZykKKwkjIGNvbjJmYiAvZGV2L2ZieCAvZGV2L3R0eXgKKwkgIGJpbmQgYSB0dHkgdG8gdGhlIG5ldyBmcmFtZSBidWZmZXIuIGlmIHlvdSBhbHJlYWR5IGhhdmUgYSBmcmFtZQorCSAgYnVmZmVyIGRyaXZlciwgdGhlIHZvb2RvbyBmYiB3aWxsIGxpa2VseSBiZSAvZGV2L2ZiMS4gaWYgbm90LCAKKwkgIHRoZSBkZXZpY2Ugd2lsbCBiZSAvZGV2L2ZiMC4gWW91IGNhbiBjaGVjayB0aGlzIGJ5IGRvaW5nIGEgCisJICBjYXQgL3Byb2MvZmIuIFlvdSBjYW4gZmluZCBhIGNvcHkgb2YgY29uMmZiIGluIHRvb2xzLyBkaXJlY3RvcnkuCisJICBpZiB5b3UgZG9uJ3QgaGF2ZSBhbm90aGVyIGZiIGRldmljZSwgdGhpcyBzdGVwIGlzIHN1cGVyZmx1b3VzLAorCSAgYXMgdGhlIGNvbnNvbGUgc3Vic3lzdGVtIGF1dG9tYWdpY2FseSBiaW5kcyB0dHlzIHRvIHRoZSBmYi4KKwkjIHN3aXRjaCB0byB0aGUgdmlydHVhbCBjb25zb2xlIHlvdSBqdXN0IG1hcHBlZC4gInRhZGFhYSIgLi4uCisKKwlNb2R1bGUgcmVtb3ZhbDoKKwkjIGNvbjJmYiAvZGV2L2ZieCAvZGV2L3R0eXgKKwkgIGJpbmQgdGhlIHR0eSB0byB0aGUgb2xkIGZyYW1lIGJ1ZmZlciBzbyB0aGUgbW9kdWxlIGNhbiBiZSByZW1vdmVkLgorCSAgKGhvdyBkb2VzIGl0IHdvcmsgd2l0aCB2Z2Fjb24gPyBzaG9ydCBhbnN3ZXIgOiBpdCBkb2Vzbid0IHdvcmspCisJIyBybW1vZCBzc3RmYgorCisKK0tlcm5lbC9Nb2R1bGVzIE9wdGlvbnMKKworCVlvdSBjYW4gcGFzcyBzb21lIG9wdGlvbnMgdG8gdGhlIHNzdGZiIG1vZHVsZSwgYW5kIHZpYSB0aGUga2VybmVsIAorCWNvbW1hbmQgbGluZSB3aGVuIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgaW46CisJZm9yIG1vZHVsZSA6IGluc21vZCBzc3RmYi5vIG9wdGlvbjE9dmFsdWUxIG9wdGlvbjI9dmFsdWUyIC4uLgorCWluIGtlcm5lbCA6ICB2aWRlbz1zc3RmYjpvcHRpb24xLG9wdGlvbjI6dmFsdWUyLG9wdGlvbjMgLi4uCisJCisJc3N0ZmIgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBvcHRpb25zIDoKKworTW9kdWxlCQlLZXJuZWwJCURlc2NyaXB0aW9uCisKK3ZnYXBhc3M9MAl2Z2Fub3Bhc3MJRW5hYmxlIG9yIGRpc2FibGUgVkdBIHBhc3N0aHJvdSBjYWJsZS4KK3ZnYXBhc3M9MQl2Z2FwYXNzCQlXaGVuIGVuYWJsZWQsIHRoZSBtb25pdG9yIHdpbGwgZ2V0IHRoZSBzaWduYWwKKwkJCQlmcm9tIHRoZSBWR0EgYm9hcmQgYW5kIG5vdCBmcm9tIHRoZSB2b29kb28uCisJCQkJRGVmYXVsdDogbm9wYXNzCisKK21lbT14CQltZW06eAkJRm9yY2UgZnJhbWUgYnVmZmVyIG1lbW9yeSBpbiBNaUIKKwkJCQlhbGxvd2VkIHZhbHVlczogMCwgMSwgMiwgNC4KKwkJCQlEZWZhdWx0OiAwICg9IGF1dG9kZXRlY3QpCisKK2ludmVyc2U9MQlpbnZlcnNlCQlTdXBwb3NlZCB0byBlbmFibGUgaW52ZXJzZSBjb25zb2xlLgorCQkJCWRvZXNuJ3Qgd29yayB5ZXQuLi4KKworY2xpcHBpbmc9MQljbGlwcGluZwlFbmFibGUgb3IgZGlzYWJsZSBjbGlwcGluZy4KK2NsaXBwaW5nPTAJbm9jbGlwcGluZwlXaXRoIGNsaXBwaW5nIGVuYWJsZWQsIGFsbCBvZmZzY3JlZW4KKwkJCQlyZWFkcyBhbmQgd3JpdGVzIGFyZSBkaXNjYXJkZWQuCisJCQkJRGVmYXVsdDogZW5hYmxlIGNsaXBwaW5nLgorCitnZnhjbGs9eAlnZnhjbGs6eAlGb3JjZSBncmFwaGljIGNsb2NrIGZyZXF1ZW5jeSAoaW4gTUh6KS4KKwkJCQlCZSBjYXJlZnVsIHdpdGggdGhpcyBvcHRpb24sIGl0IG1heSBiZQorCQkJCURBTkdFUk9VUy4KKwkJCQlEZWZhdWx0OiBhdXRvIAorCQkJCQk1ME1oeiBmb3IgVm9vZG9vIDEsCisJCQkJCTc1TUh6IGZvciBWb29kb28gMi4gCisKK3Nsb3dwY2k9MQlmYXN0cGNpCQlFbmFibGUgb3IgZGlzYWJsZSBmYXN0IFBDSSByZWFkL3dyaXRlcy4KK3Nsb3dwY2k9MQlzbG93cGNpCQlEZWZhdWx0IDogZmFzdHBjaQorCitkZXY9eAkJZGV2OngJCUF0dGFjaCB0aGUgZHJpdmVyIHRvIGRldmljZSBudW1iZXIgeC4KKwkJCQkwIGlzIHRoZSBmaXJzdCBjb21wYXRpYmxlIGJvYXJkIChpbiAKKwkJCQlsc3BjaSBvcmRlcikKKworVG9vbHMKKworCVRoZXNlIHRvb2xzIGFyZSBtb3N0bHkgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcywgYnV0IHlvdSBjYW4gCisJZmluZCBzb21lIG9mIHRoZXNlIGludGVyZXN0aW5nIDoKKwkgLSBjb24yZmIgLCBtYXBzIGEgdHR5IHRvIGEgZmJyYW1lYnVmZmVyIC4KKwkJY29uMmZiIC9kZXYvZmIxIC9kZXYvdHR5NQorCSAtIHNzdF9kYmdfdmdhcGFzcyAsIGNoYW5nZXMgdmdhIHBhc3N0aHJvdS4gWW91IGhhdmUgdG8gcmVjb21waWxlIHRoZQorCWRyaXZlciB3aXRoIFNTVF9ERUJVRyBhbmQgU1NUX0RFQlVHX0lPQ1RMIHNldCB0byAxCisJCXNzdF9kYmdfdmdhcGFzcyAvZGV2L2ZiMSAxIChlbmFibGVzIHZnYSBjYWJsZSkKKwkJc3N0X2RiZ192Z2FwYXNzIC9kZXYvZmIxIDAgKGRpc2FibGVzIHZnYSBjYWJsZSkKKwkgLSBnbGlkZV9yZXNldCAsIHJlc2V0cyB0aGUgdm9vZG9vIHVzaW5nIGdsaWRlCisJCXVzZSB0aGlzIGFmdGVyIHJtbW9kaW5nIHNzdGZiLCBpZiB0aGUgbW9kdWxlIHJlZnVzZXMgdG8KKwkJcmVpbnNlcnQgLgorCitCdWdzCisKKwktIERPIE5PVCB1c2UgZ2xpZGUgd2hpbGUgdGhlIHNzdGZiIG1vZHVsZSBpcyBpbiwgeW91J2xsIG1vc3QgbGlrZWx5CisJaGFuZyB5b3VyIGNvbXB1dGVyLgorCS0gSWYgeW91IHNlZSBzb21lIGFydGVmYWN0cyAocGl4ZWxzIG5vdCBjbGVhbmluZyBhbmQgc3R1ZmYgbGlrZSB0aGF0KSwgCisJdHJ5IHR1cm5pbmcgb2ZmIGNsaXBwaW5nIChjbGlwcGluZz0wKSwgYW5kL29yIHVzaW5nIHNsb3dwY2kKKwktIHRoZSBkcml2ZXIgZG9uJ3QgZGV0ZWN0IHRoZSA0TWIgZnJhbWUgYnVmZmVyIHZvb2Rvb3MsIGl0IHNlZW1zIHRoYXQKKwl0aGUgMiBsYXN0IE1icyB3cmFwIGFyb3VuZC4gbG9va2luZyBpbnRvIHRoYXQgLgorCS0gVGhlIGRyaXZlciBpcyAxNiBicHAgb25seSwgMjQvMzIgd29uJ3Qgd29yay4KKwktIFRoZSBkcml2ZXIgaXMgbm90IHlvdXJfZmF2b3JpdGVfdG95LXNhZmUuIHRoaXMgaW5jbHVkZXMgU01QLi4uCisgICAgICAgICAgW0FjdHVhbGx5IGZyb20gaW5zcGVjdGlvbiBpdCBzZWVtcyB0byBiZSBzYWZlIC0gQWxhbl0KKwktIFdoZW4gdXNpbmcgWEZyZWU4NiBGQmRldiAoWCBvdmVyIGZiZGV2KSB5b3UgbWF5IHNlZSBzdHJhbmdlIGNvbG9yCisJcGF0dGVybnMgYXQgdGhlIGJvcmRlciBvZiB5b3VyIHdpbmRvd3MgKHRoZSBwaXhlbHMgbG9zZSB0aGUgbG93ZXN0CisJYnl0ZSAtPiBiYXNpY2FsbHkgdGhlIGJsdWUgY29tcG9uZW50IGFuZCBzb21lIG9mIHRoZSBncmVlbikuIEknbSB1bmFibGUKKwl0byByZXByb2R1Y2UgdGhpcyB3aXRoIFhGcmVlODYtMy4zLCBidXQgb25lIG9mIHRoZSB0ZXN0ZXJzIGhhcyB0aGlzCisJcHJvYmxlbSB3aXRoIFhGcmVlODYtNC4gQXBwYXJlbnRseSByZWNlbnQgWGZyZWU4Ni00Lnggc29sdmUgdGhpcworCXByb2JsZW0uCisJLSBJIGRpZG4ndCByZWFsbHkgdGVzdCBjaGFuZ2luZyB0aGUgcGFsZXR0ZSwgc28geW91IG1heSBmaW5kIHNvbWUgd2VpcmQKKwl0aGluZ3Mgd2hlbiBwbGF5aW5nIHdpdGggdGhhdC4KKwktIFNvbWV0aW1lcyB0aGUgZHJpdmVyIHdpbGwgbm90IHJlY29nbmlzZSB0aGUgREFDLCBhbmQgdGhlCisgICAgICAgIGluaXRpYWxpc2F0aW9uIHdpbGwgZmFpbC4gVGhpcyBpcyBzcGVjaWZpY2FsbHkgdHJ1ZSBmb3IKKwl2b29kb28gMiBib2FyZHMsIGJ1dCBpdCBzaG91bGQgYmUgc29sdmVkIGluIHJlY2VudCB2ZXJzaW9ucy4gUGxlYXNlCisJY29udGFjdCBtZS4KKwktIFRoZSAyNC8zMiBpcyBub3QgbGlrZWx5IHRvIHdvcmsgYW55dGltZSBzb29uLCBrbm93aW5nIHRoYXQgdGhlCisJaGFyZHdhcmUgZG9lcyAuLi4gdW51c3VhbCB0aGluZ3MgaW4gMjQvMzIgYnBwLgorCS0gV2hlbiB1c2VkIHdpdGggYW5vdGhlciB2aWRlbyBib2FyZCwgY3VycmVudCBsaW1pdGF0aW9ucyBvZiB0aGUgbGludXgKKwljb25zb2xlIHN1YnN5c3RlbSBjYW4gY2F1c2Ugc29tZSB0cm91Ymxlcywgc3BlY2lmaWNhbGx5LCB5b3Ugc2hvdWxkCisJZGlzYWJsZSBzb2Z0d2FyZSBzY3JvbGxiYWNrLCBhcyBpdCBjYW4gb29wcyBiYWRseSAuLi4KKworVG9kbworCisJLSBHZXQgcmlkIG9mIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGguCisJLSBCdXkgbW9yZSBjb2ZmZWUuCisJLSB0ZXN0L3BvcnQgdG8gb3RoZXIgYXJjaC4KKwktIHRyeSB0byBhZGQgcGFubmluZyB1c2luZyB0d2Vla3Mgd2l0aCBmcm9udCBhbmQgYmFjayBidWZmZXIgLgorCS0gdHJ5IHRvIGltcGxlbWVudCBhY2NlbCBvbiB2b29kb28yLCB0aGlzIGJvYXJkIGNhbiBhY3R1YWxseSBkbyBhIAorCSAgbG90IGluIDJEIGV2ZW4gaWYgaXQgd2FzIHNvbGQgYXMgYSAzRCBvbmx5IGJvYXJkIC4uLgorCitnaG96LgorCistLSAKK0dob3psYW5lIFRvdW1pIDxndG91bWlAbGFwb3N0ZS5uZXQ+CisKKworJERhdGU6IDIwMDIvMDUvMDkgMjA6MTE6NDUgJAoraHR0cDovL3NzdGZiLnNvdXJjZWZvcmdlLm5ldC9SRUFETUUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvdGdhZmIudHh0IGIvRG9jdW1lbnRhdGlvbi9mYi90Z2FmYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUwMDgzYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmIvdGdhZmIudHh0CkBAIC0wLDAgKzEsNjkgQEAKKyRJZDogdGdhZmIudHh0LHYgMS4xLjIuMiAyMDAwLzA0LzA0IDA2OjUwOjE4IG1hdG8gRXhwICQKKworV2hhdCBpcyB0Z2FmYj8KKz09PT09PT09PT09PT09PQorCitUaGlzIGlzIGEgZHJpdmVyIGZvciBERUNDaGlwIDIxMDMwIGJhc2VkIGdyYXBoaWNzIGZyYW1lYnVmZmVycywgYS5rLmEuIFRHQQorY2FyZHMsIHdoaWNoIGFyZSB1c3VhbGx5IGZvdW5kIGluIG9sZGVyIERpZ2l0YWwgQWxwaGEgc3lzdGVtcy4gVGhlCitmb2xsb3dpbmcgbW9kZWxzIGFyZSBzdXBwb3J0ZWQ6CisKK1pMeFAtRTEgKDhicHAsIDIgTUIgVlJBTSkKK1pMeFAtRTIgKDMyYnBwLCA4IE1CIFZSQU0pCitaTHhQLUUzICgzMmJwcCwgMTYgTUIgVlJBTSwgWmJ1ZmZlcikKKworVGhpcyB2ZXJzaW9uIGlzIGFuIGFsbW9zdCBjb21wbGV0ZSByZXdyaXRlIG9mIHRoZSBjb2RlIHdyaXR0ZW4gYnkgR2VlcnQKK1V5dHRlcmhvZXZlbiwgd2hpY2ggd2FzIGJhc2VkIG9uIHRoZSBvcmlnaW5hbCBUR0EgY29uc29sZSBjb2RlIHdyaXR0ZW4gYnkKK0pheSBFc3RhYnJvb2suCisKK01ham9yIG5ldyBmZWF0dXJlcyBzaW5jZSBMaW51eCAyLjAueDoKKworICogU3VwcG9ydCBmb3IgbXVsdGlwbGUgcmVzb2x1dGlvbnMKKyAqIFN1cHBvcnQgZm9yIGZpeGVkLWZyZXF1ZW5jeSBhbmQgb3RoZXIgb2RkYmFsbCBtb25pdG9ycyAKKyAgIChieSBhbGxvd2luZyB0aGUgdmlkZW8gbW9kZSB0byBiZSBzZXQgYXQgYm9vdCB0aW1lKQorCitVc2VyLXZpc2libGUgY2hhbmdlcyBzaW5jZSBMaW51eCAyLjIueDoKKworICogU3luYy1vbi1ncmVlbiBpcyBub3cgaGFuZGxlZCBwcm9wZXJseQorICogTW9yZSB1c2VmdWwgaW5mb3JtYXRpb24gaXMgcHJpbnRlZCBvbiBib290dXAKKyAgICh0aGlzIGhlbHBzIGlmIHBlb3BsZSBydW4gaW50byBwcm9ibGVtcykKKworVGhpcyBkcml2ZXIgZG9lcyBub3QgKHlldCkgc3VwcG9ydCB0aGUgVEdBMiBmYW1pbHkgb2YgZnJhbWVidWZmZXJzLCBzbyB0aGUKK1Bvd2VyU3Rvcm0gM0QzMC80RDIwIChhbHNvIGtub3duIGFzIFBCWEdCKSBjYXJkcyBhcmUgbm90IHN1cHBvcnRlZC4gVGhlc2UKK2NhbiBob3dldmVyIGJlIHVzZWQgd2l0aCB0aGUgc3RhbmRhcmQgVkdBIFRleHQgQ29uc29sZSBkcml2ZXIuCisKKworQ29uZmlndXJhdGlvbgorPT09PT09PT09PT09PQorCitZb3UgY2FuIHBhc3Mga2VybmVsIGNvbW1hbmQgbGluZSBvcHRpb25zIHRvIHRnYWZiIHdpdGgKK2B2aWRlbz10Z2FmYjpvcHRpb24xLG9wdGlvbjI6dmFsdWUyLG9wdGlvbjMnIChtdWx0aXBsZSBvcHRpb25zIHNob3VsZCBiZQorc2VwYXJhdGVkIGJ5IGNvbW1hLCB2YWx1ZXMgYXJlIHNlcGFyYXRlZCBmcm9tIG9wdGlvbnMgYnkgYDonKS4KK0FjY2VwdGVkIG9wdGlvbnM6CisKK2ZvbnQ6WCAgICAtIGRlZmF1bHQgZm9udCB0byB1c2UuIEFsbCBmb250cyBhcmUgc3VwcG9ydGVkLCBpbmNsdWRpbmcgdGhlCisgICAgICAgICAgICBTVU4xMngyMiBmb250IHdoaWNoIGlzIHZlcnkgbmljZSBhdCBoaWdoIHJlc29sdXRpb25zLgorCittb2RlOlggICAgLSBkZWZhdWx0IHZpZGVvIG1vZGUuIFRoZSBmb2xsb3dpbmcgdmlkZW8gbW9kZXMgYXJlIHN1cHBvcnRlZDoKKyAgICAgICAgICAgIDY0MHg0ODAtNjAsIDgwMHg2MDAtNTYsIDY0MHg0ODAtNzIsIDgwMHg2MDAtNjAsIDgwMHg2MDAtNzIsIAorCSAgICAxMDI0eDc2OC02MCwgMTE1Mng4NjQtNjAsIDEwMjR4NzY4LTcwLCAxMDI0eDc2OC03NiwKKwkgICAgMTE1Mng4NjQtNzAsIDEyODB4MTAyNC02MSwgMTAyNHg3NjgtODUsIDEyODB4MTAyNC03MCwKKwkgICAgMTE1Mng4NjQtODQsIDEyODB4MTAyNC03NiwgMTI4MHgxMDI0LTg1CisgCisKK0tub3duIElzc3VlcworPT09PT09PT09PT09CisKK1RoZSBYRnJlZTg2IEZCRGV2IHNlcnZlciBoYXMgYmVlbiByZXBvcnRlZCBub3QgdG8gd29yaywgc2luY2UgdGdhZmIgZG9lc24ndCBkbworbW1hcCgpLiBSdW5uaW5nIHRoZSBzdGFuZGFyZCBYRjg2X1RHQSBzZXJ2ZXIgZnJvbSBYRnJlZTg2IDMuMy54IHdvcmtzIGZpbmUgZm9yCittZSwgaG93ZXZlciB0aGlzIHNlcnZlciBkb2VzIG5vdCBkbyBhY2NlbGVyYXRpb24sIHdoaWNoIG1ha2UgY2VydGFpbiBvcGVyYXRpb25zCitxdWl0ZSBzbG93LiBTdXBwb3J0IGZvciBhY2NlbGVyYXRpb24gaXMgYmVpbmcgcHJvZ3Jlc3NpdmVseSBpbnRlZ3JhdGVkIGluCitYRnJlZTg2IDQueC4KKworV2hlbiBydW5uaW5nIHRnYWZiIGluIHJlc29sdXRpb25zIGhpZ2hlciB0aGFuIDY0MHg0ODAsIG9uIHN3aXRjaGluZyBWQ3MgZnJvbQordGdhZmIgdG8gWEY4Nl9UR0EgMy4zLngsIHRoZSBlbnRpcmUgc2NyZWVuIGlzIG5vdCByZS1kcmF3biBhbmQgbXVzdCBiZSBtYW51YWxseQorcmVmcmVzaGVkLiBUaGlzIGlzIGFuIFggc2VydmVyIHByb2JsZW0sIG5vdCBhIHRnYWZiIHByb2JsZW0sIGFuZCBpcyBmaXhlZCBpbgorWEZyZWU4NiA0LjAuCisKK0Vuam95IQorCitNYXJ0aW4gTHVjaW5hIDxtYXRvQGtvdGVsbmEuc2s+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZiL3RyaWRlbnRmYi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZiL3RyaWRlbnRmYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVkOWRlNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmIvdHJpZGVudGZiLnR4dApAQCAtMCwwICsxLDcwIEBACitUcmlkZW50ZmIgaXMgYSBmcmFtZWJ1ZmZlciBkcml2ZXIgZm9yIHNvbWUgVHJpZGVudCBjaGlwIGJhc2VkIGNhcmRzLgorCitUaGUgZm9sbG93aW5nIGxpc3Qgb2YgY2hpcHMgaXMgdGhvdWdodCB0byBiZSBzdXBwb3J0ZWQgYWx0aG91Z2ggbm90IGFsbCBhcmUKK3Rlc3RlZDoKKwordGhvc2UgZnJvbSB0aGUgVEdVSSBzZXJpZXMgOTQ0MC85NlhYIGFuZCB3aXRoIEN5YmVyIGluIHRoZWlyIG5hbWVzCit0aG9zZSBmcm9tIHRoZSBJbWFnZSBzZXJpZXMgYW5kIHdpdGggQ3liZXIgaW4gdGhlaXIgbmFtZXMKK3Rob3NlIHdpdGggQmxhZGUgaW4gdGhlaXIgbmFtZXMgKEJsYWRlM0QsQ3liZXJCbGFkZS4uLikKK3RoZSBuZXdlciBDeWJlckJsYWRlWFAgZmFtaWx5CisKK0FsbCBmYW1pbGllcyBhcmUgYWNjZWxlcmF0ZWQuIE9ubHkgUENJL0FHUCBiYXNlZCBjYXJkcyBhcmUgc3VwcG9ydGVkLAorbm9uZSBvZiB0aGUgb2xkZXIgVHJpZGVudHMuCitUaGUgZHJpdmVyIHN1cHBvcnRzIDgsIDE2IGFuZCAzMiBiaXRzIHBlciBwaXhlbCBkZXB0aHMuCitUaGUgVEdVSSBmYW1pbHkgcmVxdWlyZXMgYSBsaW5lIGxlbmd0aCB0byBiZSBwb3dlciBvZiAyIGlmIGFjY2VsZXJhdGlvbgoraXMgZW5hYmxlZC4gVGhpcyBtZWFucyB0aGF0IHJhbmdlIG9mIHBvc3NpYmxlIHJlc29sdXRpb25zIGFuZCBicHAgaXMKK2xpbWl0ZWQgY29tcGFyaW5nIHRvIHRoZSByYW5nZSBpZiBhY2NlbGVyYXRpb24gaXMgZGlzYWJsZWQgKHNlZSBsaXN0CitvZiBwYXJhbWV0ZXJzIGJlbG93KS4KKworS25vd24gYnVnczoKKzEuIFRoZSBkcml2ZXIgcmFuZG9tbHkgbG9ja3MgdXAgb24gM0RJbWFnZTk3NSBjaGlwIHdpdGggYWNjZWxlcmF0aW9uCisgICBlbmFibGVkLiBUaGUgc2FtZSBoYXBwZW5zIGluIFgxMSAoWG9yZykuCisyLiBUaGUgcmFtZGFjIHNwZWVkcyByZXF1aXJlIHNvbWUgbW9yZSBmaW5lIHR1bmluZy4gSXQgaXMgcG9zc2libGUgdG8KKyAgIHN3aXRjaCByZXNvbHV0aW9uIHdoaWNoIHRoZSBjaGlwIGRvZXMgbm90IHN1cHBvcnQgYXQgc29tZSBkZXB0aHMgZm9yCisgICBvbGRlciBjaGlwcy4KKworSG93IHRvIHVzZSBpdD8KKz09PT09PT09PT09PT09CisKK1doZW4gYm9vdGluZyB5b3UgY2FuIHBhc3MgdGhlIHZpZGVvIHBhcmFtZXRlci4KK3ZpZGVvPXRyaWRlbnRmYgorCitUaGUgcGFyYW1ldGVycyBmb3IgdHJpZGVudGZiIGFyZSBjb25jYXRlbmF0ZWQgd2l0aCBhICc6JyBhcyBpbiB0aGlzIGV4YW1wbGUuCisKK3ZpZGVvPXRyaWRlbnRmYjo4MDB4NjAwLTE2QDc1LG5vYWNjZWwKKworVGhlIHNlY29uZCBsZXZlbCBwYXJhbWV0ZXJzIHRoYXQgdHJpZGVudGZiIHVuZGVyc3RhbmRzIGFyZToKKworbm9hY2NlbCAtIHR1cm5zIG9mZiBhY2NlbGVyYXRpb24gKHdoZW4gaXQgZG9lc24ndCB3b3JrIGZvciB5b3VyIGNhcmQpCisKK2ZwCS0gdXNlIGZsYXQgcGFuZWwgcmVsYXRlZCBzdHVmZgorY3J0IAktIGFzc3VtZSBtb25pdG9yIGlzIHByZXNlbnQgaW5zdGVhZCBvZiBmcAorCitjZW50ZXIgCS0gZm9yIGZsYXQgcGFuZWxzIGFuZCByZXNvbHV0aW9ucyBzbWFsbGVyIHRoYW4gbmF0aXZlIHNpemUgY2VudGVyIHRoZQorCSAgaW1hZ2UsIG90aGVyd2lzZSB1c2UKK3N0cmV0Y2gKKworbWVtc2l6ZSAtIGludGVnZXIgdmFsdWUgaW4gS0IsIHVzZSBpZiB5b3VyIGNhcmQncyBtZW1vcnkgc2l6ZSBpcyBtaXNkZXRlY3RlZC4KKwkgIGxvb2sgYXQgdGhlIGRyaXZlciBvdXRwdXQgdG8gc2VlIHdoYXQgaXQgc2F5cyB3aGVuIGluaXRpYWxpemluZy4KKworbWVtZGlmZiAtIGludGVnZXIgdmFsdWUgaW4gS0IsIHNob3VsZCBiZSBub256ZXJvIGlmIHlvdXIgY2FyZCByZXBvcnRzCisJICBtb3JlIG1lbW9yeSB0aGFuIGl0IGFjdHVhbGx5IGhhcy4gRm9yIGluc3RhbmNlIG1pbmUgaXMgMTkySyBsZXNzIHRoYW4KKwkgIGRldGVjdGlvbiBzYXlzIGluIGFsbCB0aHJlZSBCSU9TIHNlbGVjdGFibGUgc2l0dWF0aW9ucyAyTSwgNE0sIDhNLgorCSAgT25seSB1c2UgaWYgeW91ciB2aWRlbyBtZW1vcnkgaXMgdGFrZW4gZnJvbSBtYWluIG1lbW9yeSBoZW5jZSBvZgorCSAgY29uZmlndXJhYmxlIHNpemUuIE90aGVyd2lzZSB1c2UgbWVtc2l6ZS4KKwkgIElmIGluIHNvbWUgbW9kZXMgd2hpY2ggYmFyZWx5IGZpdCB0aGUgbWVtb3J5IHlvdSBzZWUgZ2FyYmFnZQorCSAgYXQgdGhlIGJvdHRvbSB0aGlzIG1pZ2h0IGhlbHAgYnkgbm90IGxldHRpbmcgY2hhbmdlIHRvIHRoYXQgbW9kZQorCSAgYW55bW9yZS4KKworbmF0aXZleCAtIHRoZSB3aWR0aCBpbiBwaXhlbHMgb2YgdGhlIGZsYXQgcGFuZWwuSWYgeW91IGtub3cgaXQgKHVzdWFsbHkgMTAyNAorCSAgODAwIG9yIDEyODApIGFuZCBpdCBpcyBub3Qgd2hhdCB0aGUgZHJpdmVyIHNlZW1zIHRvIGRldGVjdCB1c2UgaXQuCisKK2JwcAktIGJpdHMgcGVyIHBpeGVsICg4LDE2IG9yIDMyKQorbW9kZQktIGEgbW9kZSBuYW1lIGxpa2UgODAweDYwMC04QDc1IGFzIGRlc2NyaWJlZCBpbgorCSAgRG9jdW1lbnRhdGlvbi9mYi9tb2RlZGIudHh0CisKK1VzaW5nIGluc2FuZSB2YWx1ZXMgZm9yIHRoZSBhYm92ZSBwYXJhbWV0ZXJzIHdpbGwgcHJvYmFibHkgcmVzdWx0IGluIGRyaXZlcgorbWlzYmVoYXZpb3VyIHNvIHRha2UgY2FyZShmb3IgaW5zdGFuY2UgbWVtc2l6ZT0xMjM0NTY3OCBvciBtZW1kaWZmPTIzNzg0IG9yCituYXRpdmV4PTkzKQorCitDb250YWN0OiBqYW5pQGFzdGVjaG5peC5ybwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mYi91ZGxmYi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZiL3VkbGZiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2QyZjI5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mYi91ZGxmYi50eHQKQEAgLTAsMCArMSwxNTkgQEAKKworV2hhdCBpcyB1ZGxmYj8KKz09PT09PT09PT09PT09PQorCitUaGlzIGlzIGEgZHJpdmVyIGZvciBEaXNwbGF5TGluayBVU0IgMi4wIGVyYSBncmFwaGljcyBjaGlwcy4KKworRGlzcGxheUxpbmsgY2hpcHMgcHJvdmlkZSBzaW1wbGUgaGxpbmUvYmxpdCBvcGVyYXRpb25zIHdpdGggc29tZSBjb21wcmVzc2lvbiwKK3BhaXJpbmcgdGhhdCB3aXRoIGEgaGFyZHdhcmUgZnJhbWVidWZmZXIgKDE2TUIpIG9uIHRoZSBvdGhlciBlbmQgb2YgdGhlCitVU0Igd2lyZS4gIFRoYXQgaGFyZHdhcmUgZnJhbWVidWZmZXIgaXMgYWJsZSB0byBkcml2ZSB0aGUgVkdBLCBEVkksIG9yIEhETUkKK21vbml0b3Igd2l0aCBubyBDUFUgaW52b2x2ZW1lbnQgdW50aWwgYSBwaXhlbCBoYXMgdG8gY2hhbmdlLgorCitUaGUgQ1BVIG9yIG90aGVyIGxvY2FsIHJlc291cmNlIGRvZXMgYWxsIHRoZSByZW5kZXJpbmc7IG9wdGluYWxseSBjb21wYXJlcyB0aGUKK3Jlc3VsdCB3aXRoIGEgbG9jYWwgc2hhZG93IG9mIHRoZSByZW1vdGUgaGFyZHdhcmUgZnJhbWVidWZmZXIgdG8gaWRlbnRpZnkKK3RoZSBtaW5pbWFsIHNldCBvZiBwaXhlbHMgdGhhdCBoYXZlIGNoYW5nZWQ7IGFuZCBjb21wcmVzc2VzIGFuZCBzZW5kcyB0aG9zZQorcGl4ZWxzIGxpbmUtYnktbGluZSB2aWEgVVNCIGJ1bGsgdHJhbnNmZXJzLgorCitCZWNhdXNlIG9mIHRoZSBlZmZpY2llbmN5IG9mIGJ1bGsgdHJhbnNmZXJzIGFuZCBhIHByb3RvY29sIG9uIHRvcCB0aGF0Citkb2VzIG5vdCByZXF1aXJlIGFueSBhY2tzIC0gdGhlIGVmZmVjdCBpcyB2ZXJ5IGxvdyBsYXRlbmN5IHRoYXQKK2NhbiBzdXBwb3J0IHN1cnByaXNpbmdseSBoaWdoIHJlc29sdXRpb25zIHdpdGggZ29vZCBwZXJmb3JtYW5jZSBmb3IKK25vbi1nYW1pbmcgYW5kIG5vbi12aWRlbyBhcHBsaWNhdGlvbnMuCisKK01vZGUgc2V0dGluZywgRURJRCByZWFkLCBldGMgYXJlIG90aGVyIGJ1bGsgb3IgY29udHJvbCB0cmFuc2ZlcnMuIE1vZGUKK3NldHRpbmcgaXMgdmVyeSBmbGV4aWJsZSAtIGFibGUgdG8gc2V0IG5lYXJseSBhcmJpdHJhcnkgbW9kZXMgZnJvbSBhbnkgdGltaW5nLgorCitBZHZhbnRhZ2VzIG9mIFVTQiBncmFwaGljcyBpbiBnZW5lcmFsOgorCisgKiBBYmlsaXR5IHRvIGFkZCBhIG5lYXJseSBhcmJpdHJhcnkgbnVtYmVyIG9mIGRpc3BsYXlzIHRvIGFueSBVU0IgMi4wCisgICBjYXBhYmxlIHN5c3RlbS4gT24gTGludXgsIG51bWJlciBvZiBkaXNwbGF5cyBpcyBsaW1pdGVkIGJ5IGZiZGV2IGludGVyZmFjZQorICAgKEZCX01BWCBpcyBjdXJyZW50bHkgMzIpLiBPZiBjb3Vyc2UsIGFsbCBVU0IgZGV2aWNlcyBvbiB0aGUgc2FtZQorICAgaG9zdCBjb250cm9sbGVyIHNoYXJlIHRoZSBzYW1lIDQ4ME1icyBVU0IgMi4wIGludGVyZmFjZS4KKworQWR2YW50YWdlcyBvZiBzdXBwb3J0aW5nIERpc3BsYXlMaW5rIGNoaXBzIHdpdGgga2VybmVsIGZyYW1lYnVmZmVyIGludGVyZmFjZToKKworICogVGhlIGFjdHVhbCBoYXJkd2FyZSBmdW5jdGlvbmFsaXR5IG9mIERpc3BsYXlMaW5rIGNoaXBzIG1hdGNoZXMgbmVhcmx5CisgICBvbmUtdG8tb25lIHdpdGggdGhlIGZiZGV2IGludGVyZmFjZSwgbWFraW5nIHRoZSBkcml2ZXIgcXVpdGUgc21hbGwgYW5kCisgICB0aWdodCByZWxhdGl2ZSB0byB0aGUgZnVuY3Rpb25hbGl0eSBpdCBwcm92aWRlcy4KKyAqIFggc2VydmVycyBhbmQgb3RoZXIgYXBwbGljYXRpb25zIGNhbiB1c2UgdGhlIHN0YW5kYXJkIGZiZGV2IGludGVyZmFjZQorICAgZnJvbSB1c2VyIG1vZGUgdG8gdGFsayB0byB0aGUgZGV2aWNlLCB3aXRob3V0IG5lZWRpbmcgdG8ga25vdyBhbnl0aGluZworICAgYWJvdXQgVVNCIG9yIERpc3BsYXlMaW5rJ3MgcHJvdG9jb2wgYXQgYWxsLiBBICJkaXNwbGF5bGluayIgWCBkcml2ZXIKKyAgIGFuZCBhIHNsaWdodGx5IG1vZGlmaWVkICJmYmRldiIgWCBkcml2ZXIgYXJlIGFtb25nIHRob3NlIHRoYXQgYWxyZWFkeSBkby4KKworRGlzYWR2YW50YWdlczoKKworICogRmJkZXYncyBtbWFwIGludGVyZmFjZSBhc3N1bWVzIGEgcmVhbCBoYXJkd2FyZSBmcmFtZWJ1ZmZlciBpcyBtYXBwZWQuCisgICBJbiB0aGUgY2FzZSBvZiBVU0IgZ3JhcGhpY3MsIGl0IGlzIGp1c3QgYW4gYWxsb2NhdGVkICh2aXJ0dWFsKSBidWZmZXIuCisgICBXcml0ZXMgbmVlZCB0byBiZSBkZXRlY3RlZCBhbmQgZW5jb2RlZCBpbnRvIFVTQiBidWxrIHRyYW5zZmVycyBieSB0aGUgQ1BVLgorICAgQWNjdXJhdGUgZGFtYWdlL2NoYW5nZWQgYXJlYSBub3RpZmljYXRpb25zIHdvcmsgYXJvdW5kIHRoaXMgcHJvYmxlbS4KKyAgIEluIHRoZSBmdXR1cmUsIGhvcGVmdWxseSBmYmRldiB3aWxsIGJlIGVuaGFuY2VkIHdpdGggYW4gc21hbGwgc3RhbmRhcmQKKyAgIGludGVyZmFjZSB0byBhbGxvdyBtbWFwIGNsaWVudHMgdG8gcmVwb3J0IGRhbWFnZSwgZm9yIHRoZSBiZW5lZml0CisgICBvZiB2aXJ0dWFsIG9yIHJlbW90ZSBmcmFtZWJ1ZmZlcnMuCisgKiBGYmRldiBkb2VzIG5vdCBhcmJpdHJhdGUgY2xpZW50IG93bmVyc2hpcCBvZiB0aGUgZnJhbWVidWZmZXIgd2VsbC4KKyAqIEZiY29uIGFzc3VtZXMgdGhlIGZpcnN0IGZyYW1lYnVmZmVyIGl0IGZpbmRzIHNob3VsZCBiZSBjb25zdW1lZCBmb3IgY29uc29sZS4KKyAqIEl0J3Mgbm90IGNsZWFyIHdoYXQgdGhlIGZ1dHVyZSBvZiBmYmRldiBpcywgZ2l2ZW4gdGhlIHJpc2Ugb2YgS01TL0RSTS4KKworSG93IHRvIHVzZSBpdD8KKz09PT09PT09PT09PT09CisKK1VkbGZiLCB3aGVuIGxvYWRlZCBhcyBhIG1vZHVsZSwgd2lsbCBtYXRjaCBhZ2FpbnN0IGFsbCBVU0IgMi4wIGdlbmVyYXRpb24KK0Rpc3BsYXlMaW5rIGNoaXBzIChBbGV4IGFuZCBPbGxpZSBmYW1pbHkpLiBJdCB3aWxsIHRoZW4gYXR0ZW1wdCB0byByZWFkIHRoZSBFRElECitvZiB0aGUgbW9uaXRvciwgYW5kIHNldCB0aGUgYmVzdCBjb21tb24gbW9kZSBiZXR3ZWVuIHRoZSBEaXNwbGF5TGluayBkZXZpY2UKK2FuZCB0aGUgbW9uaXRvcidzIGNhcGFiaWxpdGllcy4KKworSWYgdGhlIERpc3BsYXlMaW5rIGRldmljZSBpcyBzdWNjZXNzZnVsLCBpdCB3aWxsIHBhaW50IGEgImdyZWVuIHNjcmVlbiIgd2hpY2gKK21lYW5zIHRoYXQgZnJvbSBhIGhhcmR3YXJlIGFuZCBmYmRldiBzb2Z0d2FyZSBwZXJzcGVjdGl2ZSwgZXZlcnl0aGluZyBpcyBnb29kLgorCitBdCB0aGF0IHBvaW50LCBhIC9kZXYvZmI/IGludGVyZmFjZSB3aWxsIGJlIHByZXNlbnQgZm9yIHVzZXItbW9kZSBhcHBsaWNhdGlvbnMKK3RvIG9wZW4gYW5kIGJlZ2luIHdyaXRpbmcgdG8gdGhlIGZyYW1lYnVmZmVyIG9mIHRoZSBEaXNwbGF5TGluayBkZXZpY2UgdXNpbmcKK3N0YW5kYXJkIGZiZGV2IGNhbGxzLiAgTm90ZSB0aGF0IGlmIG1tYXAoKSBpcyB1c2VkLCBieSBkZWZhdWx0IHRoZSB1c2VyIG1vZGUKK2FwcGxpY2F0aW9uIG11c3Qgc2VuZCBkb3duIGRhbWFnZSBub3RpZmNhdGlvbnMgdG8gdHJpZ2dlciByZXBhaW50cyBvZiB0aGUKK2NoYW5nZWQgcmVnaW9ucy4gIEFsdGVybmF0aXZlbHksIHVkbGZiIGNhbiBiZSByZWNvbXBpbGVkIHdpdGggZXhwZXJpbWVudGFsCitkZWZpbyBzdXBwb3J0IGVuYWJsZWQsIHRvIHN1cHBvcnQgYSBwYWdlLWZhdWx0IGJhc2VkIGRldGVjdGlvbiBtZWNoYW5pc20KK3RoYXQgY2FuIHdvcmsgd2l0aG91dCBleHBsaWNpdCBub3RpZmNhdGlvbi4KKworVGhlIG1vc3QgY29tbW9uIGNsaWVudCBvZiB1ZGxmYiBpcyB4Zjg2LXZpZGVvLWRpc3BsYXlsaW5rIG9yIGEgbW9kaWZpZWQKK3hmODYtdmlkZW8tZmJkZXYgWCBzZXJ2ZXIuIFRoZXNlIHNlcnZlcnMgaGF2ZSBubyByZWFsIERpc3BsYXlMaW5rIHNwZWNpZmljCitjb2RlLiBUaGV5IHdyaXRlIHRvIHRoZSBzdGFuZGFyZCBmcmFtZWJ1ZmZlciBpbnRlcmZhY2UgYW5kIHJlbHkgb24gdWRsZmIKK3RvIGRvIGl0cyB0aGluZy4gIFRoZSBvbmUgZXh0cmEgZmVhdHVyZSB0aGV5IGhhdmUgaXMgdGhlIGFiaWxpdHkgdG8gcmVwb3J0CityZWN0YW5nbGVzIGZyb20gdGhlIFggREFNQUdFIHByb3RvY29sIGV4dGVuc2lvbiBkb3duIHRvIHVkbGZiIHZpYSB1ZGxmYidzCitkYW1hZ2UgaW50ZXJmYWNlICh3aGljaCB3aWxsIGhvcGVmdWxseSBiZSBzdGFuZGFyZGl6ZWQgZm9yIGFsbCB2aXJ0dWFsCitmcmFtZWJ1ZmZlcnMgdGhhdCBuZWVkIGRhbWFnZSBpbmZvKS4gVGhlc2UgZGFtYWdlIG5vdGlmaWNhdGlvbnMgYWxsb3cKK3VkbGZiIHRvIGVmZmljaWVudGx5IHByb2Nlc3MgdGhlIGNoYW5nZWQgcGl4ZWxzLgorCitNb2R1bGUgT3B0aW9ucworPT09PT09PT09PT09PT0KKworU3BlY2lhbCBjb25maWd1cmF0aW9uIGZvciB1ZGxmYiBpcyB1c3VhbGx5IHVubmVjZXNzYXJ5LiBUaGVyZSBhcmUgYSBmZXcKK29wdGlvbnMsIGhvd2V2ZXIuCisKK0Zyb20gdGhlIGNvbW1hbmQgbGluZSwgcGFzcyBvcHRpb25zIHRvIG1vZHByb2JlCittb2Rwcm9iZSB1ZGxmYiBmYl9kZWZpbz0wIGNvbnNvbGU9MSBzaGFkb3c9MQorCitPciBtb2RpZnkgb3B0aW9ucyBvbiB0aGUgZmx5IGF0IC9zeXMvbW9kdWxlL3VkbGZiL3BhcmFtZXRlcnMgZGlyZWN0b3J5IHZpYQorc3VkbyBuYW5vIGZiX2RlZmlvCitjaGFuZ2UgdGhlIHBhcmFtZXRlciBpbiBwbGFjZSwgYW5kIHNhdmUgdGhlIGZpbGUuCisKK1VucGx1Zy9yZXBsdWcgVVNCIGRldmljZSB0byBhcHBseSB3aXRoIG5ldyBzZXR0aW5ncworCitPciBmb3IgcGVybWFuZW50IG9wdGlvbiwgY3JlYXRlIGZpbGUgbGlrZSAvZXRjL21vZHByb2JlLmQvdWRsZmIuY29uZiB3aXRoIHRleHQKK29wdGlvbnMgdWRsZmIgZmJfZGVmaW89MCBjb25zb2xlPTEgc2hhZG93PTEKKworQWNjZXB0ZWQgYm9vbGVhbiBvcHRpb25zOgorCitmYl9kZWZpbwlNYWtlIHVzZSBvZiB0aGUgZmJfZGVmaW8gKENPTkZJR19GQl9ERUZFUlJFRF9JTykga2VybmVsCisJCW1vZHVsZSB0byB0cmFjayBjaGFuZ2VkIGFyZWFzIG9mIHRoZSBmcmFtZWJ1ZmZlciBieSBwYWdlIGZhdWx0cy4KKwkJU3RhbmRhcmQgZmJkZXYgYXBwbGljYXRpb25zIHRoYXQgdXNlIG1tYXAgYnV0IHRoYXQgZG8gbm90CisJCXJlcG9ydCBkYW1hZ2UsIHNob3VsZCBiZSBhYmxlIHRvIHdvcmsgd2l0aCB0aGlzIGVuYWJsZWQuCisJCURpc2FibGUgd2hlbiBydW5uaW5nIHdpdGggWCBzZXJ2ZXIgdGhhdCBzdXBwb3J0cyByZXBvcnRpbmcKKwkJY2hhbmdlZCByZWdpb25zIHZpYSBpb2N0bCwgYXMgdGhpcyBtZXRob2QgaXMgc2ltcGxlciwKKwkJbW9yZSBzdGFibGUsIGFuZCBoaWdoZXIgcGVyZm9ybWFuY2UuCisJCWRlZmF1bHQ6IGZiX2RlZmlvPTEKKworY29uc29sZQlBbGxvdyBmYmNvbiB0byBhdHRhY2ggdG8gdWRsZmIgcHJvdmlkZWQgZnJhbWVidWZmZXJzLgorCQlDYW4gYmUgZGlzYWJsZWQgaWYgZmJjb24gYW5kIG90aGVyIGNsaWVudHMKKwkJKGUuZy4gWCB3aXRoIC0tc2hhcmVkLXZ0KSBhcmUgaW4gY29uZmxpY3QuCisJCWRlZmF1bHQ6IGNvbnNvbGU9MQorCitzaGFkb3cJCUFsbG9jYXRlIGEgMm5kIGZyYW1lYnVmZmVyIHRvIHNoYWRvdyB3aGF0J3MgY3VycmVudGx5IGFjcm9zcworCQl0aGUgVVNCIGJ1cyBpbiBkZXZpY2UgbWVtb3J5LiBJZiBhbnkgcGl4ZWxzIGFyZSB1bmNoYW5nZWQsCisJCWRvIG5vdCB0cmFuc21pdC4gU3BlbmRzIGhvc3QgbWVtb3J5IHRvIHNhdmUgVVNCIHRyYW5zZmVycy4KKwkJRW5hYmxlZCBieSBkZWZhdWx0LiBPbmx5IGRpc2FibGUgb24gdmVyeSBsb3cgbWVtb3J5IHN5c3RlbXMuCisJCWRlZmF1bHQ6IHNoYWRvdz0xCisKK1N5c2ZzIEF0dHJpYnV0ZXMKKz09PT09PT09PT09PT09PT0KKworVWRsZmIgY3JlYXRlcyBzZXZlcmFsIGZpbGVzIGluIC9zeXMvY2xhc3MvZ3JhcGhpY3MvZmI/CitXaGVyZSA/IGlzIHRoZSBzZXF1ZW50aWFsIGZyYW1lYnVmZmVyIGlkIG9mIHRoZSBwYXJ0aWN1bGFyIERpc3BsYXlMaW5rIGRldmljZQorCitlZGlkCSAgICAgICAJCUlmIGEgdmFsaWQgRURJRCBibG9iIGlzIHdyaXR0ZW4gdG8gdGhpcyBmaWxlICh0eXBpY2FsbHkKKwkJCWJ5IGEgdWRldiBydWxlKSwgdGhlbiB1ZGxmYiB3aWxsIHVzZSB0aGlzIEVESUQgYXMgYQorCQkJYmFja3VwIGluIGNhc2UgcmVhZGluZyB0aGUgYWN0dWFsIEVESUQgb2YgdGhlIG1vbml0b3IKKwkJCWF0dGFjaGVkIHRvIHRoZSBEaXNwbGF5TGluayBkZXZpY2UgZmFpbHMuIFRoaXMgaXMKKwkJCWVzcGVjaWFsbHkgdXNlZnVsIGZvciBmaXhlZCBwYW5lbHMsIGV0Yy4gdGhhdCBjYW5ub3QKKwkJCWNvbW11bmljYXRlIHRoZWlyIGNhcGFiaWxpdGllcyB2aWEgRURJRC4gUmVhZGluZworCQkJdGhpcyBmaWxlIHJldHVybnMgdGhlIGN1cnJlbnQgRURJRCBvZiB0aGUgYXR0YWNoZWQKKwkJCW1vbml0b3IgKG9yIGxhc3QgYmFja3VwIHZhbHVlIHdyaXR0ZW4pLiBUaGlzIGlzCisJCQl1c2VmdWwgdG8gZ2V0IHRoZSBFRElEIG9mIHRoZSBhdHRhY2hlZCBtb25pdG9yLAorCQkJd2hpY2ggY2FuIGJlIHBhc3NlZCB0byB1dGlsaXRpZXMgbGlrZSBwYXJzZS1lZGlkLgorCittZXRyaWNzX2J5dGVzX3JlbmRlcmVkCTMyLWJpdCBjb3VudCBvZiBwaXhlbCBieXRlcyByZW5kZXJlZAorCittZXRyaWNzX2J5dGVzX2lkZW50aWNhbCAzMi1iaXQgY291bnQgb2YgaG93IG1hbnkgb2YgdGhvc2UgYnl0ZXMgd2VyZSBmb3VuZCB0byBiZQorCQkJdW5jaGFuZ2VkLCBiYXNlZCBvbiBhIHNoYWRvdyBmcmFtZWJ1ZmZlciBjaGVjaworCittZXRyaWNzX2J5dGVzX3NlbnQJMzItYml0IGNvdW50IG9mIGhvdyBtYW55IGJ5dGVzIHdlcmUgdHJhbnNmZXJyZWQgb3ZlcgorCQkJVVNCIHRvIGNvbW11bmljYXRlIHRoZSByZXN1bHRpbmcgY2hhbmdlZCBwaXhlbHMgdG8gdGhlCisJCQloYXJkd2FyZS4gSW5jbHVkZXMgY29tcHJlc3Npb24gYW5kIHByb3RvY29sIG92ZXJoZWFkCisKK21ldHJpY3NfY3B1X2tjeWNsZXNfdXNlZCAzMi1iaXQgY291bnQgb2YgQ1BVIGN5Y2xlcyB1c2VkIGluIHByb2Nlc3NpbmcgdGhlCisJCQlhYm92ZSBwaXhlbHMgKGluIHRob3VzYW5kcyBvZiBjeWNsZXMpLgorCittZXRyaWNzX3Jlc2V0CQlXcml0ZS1vbmx5LiBBbnkgd3JpdGUgdG8gdGhpcyBmaWxlIHJlc2V0cyBhbGwgbWV0cmljcworCQkJYWJvdmUgdG8gemVyby4gIE5vdGUgdGhhdCB0aGUgMzItYml0IGNvdW50ZXJzIGFib3ZlCisJCQlyb2xsIG92ZXIgdmVyeSBxdWlja2x5LiBUbyBnZXQgcmVsaWFibGUgcmVzdWx0cywgZGVzaWduCisJCQlwZXJmb3JtYW5jZSB0ZXN0cyB0byBzdGFydCBhbmQgZmluaXNoIGluIGEgdmVyeSBzaG9ydAorCQkJcGVyaW9kIG9mIHRpbWUgKG9uZSBtaW51dGUgb3IgbGVzcyBpcyBzYWZlKS4KKworLS0KK0Jlcm5pZSBUaG9tcHNvbiA8YmVybmllQHBsdWdhYmxlLmNvbT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvdXZlc2FmYi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZiL3V2ZXNhZmIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2MzYyZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZiL3V2ZXNhZmIudHh0CkBAIC0wLDAgKzEsMTgzIEBACisKK3V2ZXNhZmIgLSBBIEdlbmVyaWMgRHJpdmVyIGZvciBWQkUyKyBjb21wbGlhbnQgdmlkZW8gY2FyZHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworMS4gUmVxdWlyZW1lbnRzCistLS0tLS0tLS0tLS0tLS0KKwordXZlc2FmYiBzaG91bGQgd29yayB3aXRoIGFueSB2aWRlbyBjYXJkIHRoYXQgaGFzIGEgVmlkZW8gQklPUyBjb21wbGlhbnQKK3dpdGggdGhlIFZCRSAyLjAgc3RhbmRhcmQuCisKK1VubGlrZSBvdGhlciBkcml2ZXJzLCB1dmVzYWZiIG1ha2VzIHVzZSBvZiBhIHVzZXJzcGFjZSBoZWxwZXIgY2FsbGVkCit2ODZkLiAgdjg2ZCBpcyB1c2VkIHRvIHJ1biB0aGUgeDg2IFZpZGVvIEJJT1MgY29kZSBpbiBhIHNpbXVsYXRlZCBhbmQKK2NvbnRyb2xsZWQgZW52aXJvbm1lbnQuICBUaGlzIGFsbG93cyB1dmVzYWZiIHRvIGZ1bmN0aW9uIG9uIGFyY2hlcyBvdGhlcgordGhhbiB4ODYuICBDaGVjayB0aGUgdjg2ZCBkb2N1bWVudGF0aW9uIGZvciBhIGxpc3Qgb2YgY3VycmVudGx5IHN1cHBvcnRlZAorYXJjaGVzLgorCit2ODZkIHNvdXJjZSBjb2RlIGNhbiBiZSBkb3dubG9hZGVkIGZyb20gdGhlIGZvbGxvd2luZyB3ZWJzaXRlOgorICBodHRwOi8vZGV2LmdlbnRvby5vcmcvfnNwb2NrL3Byb2plY3RzL3V2ZXNhZmIKKworUGxlYXNlIHJlZmVyIHRvIHRoZSB2ODZkIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbGVkIGNvbmZpZ3VyYXRpb24gYW5kCitpbnN0YWxsYXRpb24gaW5zdHJ1Y3Rpb25zLgorCitOb3RlIHRoYXQgdGhlIHY4NmQgdXNlcnNwYWNlIGhlbHBlciBoYXMgdG8gYmUgYXZhaWxhYmxlIGF0IGFsbCB0aW1lcyBpbgorb3JkZXIgZm9yIHV2ZXNhZmIgdG8gd29yayBwcm9wZXJseS4gIElmIHlvdSB3YW50IHRvIHVzZSB1dmVzYWZiIGR1cmluZworZWFybHkgYm9vdCwgeW91IHdpbGwgaGF2ZSB0byBpbmNsdWRlIHY4NmQgaW50byBhbiBpbml0cmFtZnMgaW1hZ2UsIGFuZAorZWl0aGVyIGNvbXBpbGUgaXQgaW50byB0aGUga2VybmVsIG9yIHVzZSBpdCBhcyBhbiBpbml0cmQuCisKKzIuIENhdmVhdHMgYW5kIGxpbWl0YXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit1dmVzYWZiIGlzIGEgX2dlbmVyaWNfIGRyaXZlciB3aGljaCBzdXBwb3J0cyBhIHdpZGUgdmFyaWV0eSBvZiB2aWRlbworY2FyZHMsIGJ1dCB3aGljaCBpcyB1bHRpbWF0ZWx5IGxpbWl0ZWQgYnkgdGhlIFZpZGVvIEJJT1MgaW50ZXJmYWNlLgorVGhlIG1vc3QgaW1wb3J0YW50IGxpbWl0YXRpb25zIGFyZToKKworLSBMYWNrIG9mIGFueSB0eXBlIG9mIGFjY2VsZXJhdGlvbi4KKy0gQSBzdHJpY3QgYW5kIGxpbWl0ZWQgc2V0IG9mIHN1cHBvcnRlZCB2aWRlbyBtb2Rlcy4gIE9mdGVuIHRoZSBuYXRpdmUKKyAgb3IgbW9zdCBvcHRpbWFsIHJlc29sdXRpb24vcmVmcmVzaCByYXRlIGZvciB5b3VyIHNldHVwIHdpbGwgbm90IHdvcmsKKyAgd2l0aCB1dmVzYWZiLCBzaW1wbHkgYmVjYXVzZSB0aGUgVmlkZW8gQklPUyBkb2Vzbid0IHN1cHBvcnQgdGhlCisgIHZpZGVvIG1vZGUgeW91IHdhbnQgdG8gdXNlLiAgVGhpcyBjYW4gYmUgZXNwZWNpYWxseSBwYWluZnVsIHdpdGgKKyAgd2lkZXNjcmVlbiBwYW5lbHMsIHdoZXJlIG5hdGl2ZSB2aWRlbyBtb2RlcyBkb24ndCBoYXZlIHRoZSA0OjMgYXNwZWN0CisgIHJhdGlvLCB3aGljaCBpcyB3aGF0IG1vc3QgQklPUy1lcyBhcmUgbGltaXRlZCB0by4KKy0gQWRqdXN0aW5nIHRoZSByZWZyZXNoIHJhdGUgaXMgb25seSBwb3NzaWJsZSB3aXRoIGEgVkJFIDMuMCBjb21wbGlhbnQKKyAgVmlkZW8gQklPUy4gIE5vdGUgdGhhdCBtYW55IG5WaWRpYSBWaWRlbyBCSU9TLWVzIGNsYWltIHRvIGJlIFZCRSAzLjAKKyAgY29tcGxpYW50LCB3aGlsZSB0aGV5IHNpbXBseSBpZ25vcmUgYW55IHJlZnJlc2ggcmF0ZSBzZXR0aW5ncy4KKworMy4gQ29uZmlndXJhdGlvbgorLS0tLS0tLS0tLS0tLS0tLQorCit1dmVzYWZiIGNhbiBiZSBjb21waWxlZCBlaXRoZXIgYXMgYSBtb2R1bGUsIG9yIGRpcmVjdGx5IGludG8gdGhlIGtlcm5lbC4KK0luIGJvdGggY2FzZXMgaXQgc3VwcG9ydHMgdGhlIHNhbWUgc2V0IG9mIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgd2hpY2gKK2FyZSBlaXRoZXIgZ2l2ZW4gb24gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgb3IgYXMgbW9kdWxlIHBhcmFtZXRlcnMsIGUuZy46CisKKyB2aWRlbz11dmVzYWZiOjEwMjR4NzY4LTMyLG10cnI6Myx5d3JhcCAoY29tcGlsZWQgaW50byB0aGUga2VybmVsKQorCisgIyBtb2Rwcm9iZSB1dmVzYWZiIG1vZGVfb3B0aW9uPTEwMjR4NzY4LTMyIG10cnI9MyBzY3JvbGw9eXdyYXAgIChtb2R1bGUpCisKK0FjY2VwdGVkIG9wdGlvbnM6CisKK3lwYW4gICAgRW5hYmxlIGRpc3BsYXkgcGFubmluZyB1c2luZyB0aGUgVkVTQSBwcm90ZWN0ZWQgbW9kZQorICAgICAgICBpbnRlcmZhY2UuICBUaGUgdmlzaWJsZSBzY3JlZW4gaXMganVzdCBhIHdpbmRvdyBvZiB0aGUKKyAgICAgICAgdmlkZW8gbWVtb3J5LCBjb25zb2xlIHNjcm9sbGluZyBpcyBkb25lIGJ5IGNoYW5naW5nIHRoZQorICAgICAgICBzdGFydCBvZiB0aGUgd2luZG93LiAgVGhpcyBvcHRpb24gaXMgYXZhaWxhYmxlIG9uIHg4NgorICAgICAgICBvbmx5IGFuZCBpcyB0aGUgZGVmYXVsdCBvcHRpb24gb24gdGhhdCBhcmNoaXRlY3R1cmUuCisKK3l3cmFwICAgU2FtZSBhcyB5cGFuLCBidXQgYXNzdW1lcyB5b3VyIGdmeCBib2FyZCBjYW4gd3JhcC1hcm91bmQKKyAgICAgICAgdGhlIHZpZGVvIG1lbW9yeSAoaS5lLiBzdGFydHMgcmVhZGluZyBmcm9tIHRvcCBpZiBpdAorICAgICAgICByZWFjaGVzIHRoZSBlbmQgb2YgdmlkZW8gbWVtb3J5KS4gIEZhc3RlciB0aGFuIHlwYW4uCisgICAgICAgIEF2YWlsYWJsZSBvbiB4ODYgb25seS4KKworcmVkcmF3ICBTY3JvbGwgYnkgcmVkcmF3aW5nIHRoZSBhZmZlY3RlZCBwYXJ0IG9mIHRoZSBzY3JlZW4sIHRoaXMKKyAgICAgICAgaXMgdGhlIGRlZmF1bHQgb24gbm9uLXg4Ni4KKworKElmIHlvdSdyZSB1c2luZyB1dmVzYWZiIGFzIGEgbW9kdWxlLCB0aGUgYWJvdmUgdGhyZWUgb3B0aW9ucyBhcmUKKyB1c2VkIGEgcGFyYW1ldGVyIG9mIHRoZSBzY3JvbGwgb3B0aW9uLCBlLmcuIHNjcm9sbD15cGFuLikKKwordmdhcGFsICBVc2UgdGhlIHN0YW5kYXJkIFZHQSByZWdpc3RlcnMgZm9yIHBhbGV0dGUgY2hhbmdlcy4KKworcG1pcGFsICBVc2UgdGhlIHByb3RlY3RlZCBtb2RlIGludGVyZmFjZSBmb3IgcGFsZXR0ZSBjaGFuZ2VzLgorICAgICAgICBUaGlzIGlzIHRoZSBkZWZhdWx0IGlmIHRoZSBwcm90ZWN0ZWQgbW9kZSBpbnRlcmZhY2UgaXMKKyAgICAgICAgYXZhaWxhYmxlLiAgQXZhaWxhYmxlIG9uIHg4NiBvbmx5LgorCittdHJyOm4gIFNldHVwIG1lbW9yeSB0eXBlIHJhbmdlIHJlZ2lzdGVycyBmb3IgdGhlIGZyYW1lYnVmZmVyCisgICAgICAgIHdoZXJlIG46CisgICAgICAgICAgICAgIDAgLSBkaXNhYmxlZCAoZXF1aXZhbGVudCB0byBub210cnIpCisgICAgICAgICAgICAgIDMgLSB3cml0ZS1jb21iaW5pbmcgKGRlZmF1bHQpCisKKwlWYWx1ZXMgb3RoZXIgdGhhbiAwIGFuZCAzIHdpbGwgcmVzdWx0IGluIGEgd2FybmluZyBhbmQgd2lsbCBiZQorCXRyZWF0ZWQganVzdCBsaWtlIDMuCisKK25vbXRyciAgRG8gbm90IHVzZSBtZW1vcnkgdHlwZSByYW5nZSByZWdpc3RlcnMuCisKK3ZyZW1hcDpuCisgICAgICAgIFJlbWFwICduJyBNaUIgb2YgdmlkZW8gUkFNLiAgSWYgMCBvciBub3Qgc3BlY2lmaWVkLCByZW1hcCBtZW1vcnkKKyAgICAgICAgYWNjb3JkaW5nIHRvIHZpZGVvIG1vZGUuCisKK3Z0b3RhbDpuCisgICAgICAgIElmIHRoZSB2aWRlbyBCSU9TIG9mIHlvdXIgY2FyZCBpbmNvcnJlY3RseSBkZXRlcm1pbmVzIHRoZSB0b3RhbAorICAgICAgICBhbW91bnQgb2YgdmlkZW8gUkFNLCB1c2UgdGhpcyBvcHRpb24gdG8gb3ZlcnJpZGUgdGhlIEJJT1MgKGluIE1pQikuCisKKzxtb2RlPiAgVGhlIG1vZGUgeW91IHdhbnQgdG8gc2V0LCBpbiB0aGUgc3RhbmRhcmQgbW9kZWRiIGZvcm1hdC4gIFJlZmVyIHRvCisgICAgICAgIG1vZGVkYi50eHQgZm9yIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24uICBXaGVuIHV2ZXNhZmIgaXMgY29tcGlsZWQgYXMKKyAgICAgICAgYSBtb2R1bGUsIHRoZSBtb2RlIHN0cmluZyBzaG91bGQgYmUgcHJvdmlkZWQgYXMgYSB2YWx1ZSBvZiB0aGUKKyAgICAgICAgJ21vZGVfb3B0aW9uJyBvcHRpb24uCisKK3ZiZW1vZGU6eAorICAgICAgICBGb3JjZSB0aGUgdXNlIG9mIFZCRSBtb2RlIHguICBUaGUgbW9kZSB3aWxsIG9ubHkgYmUgc2V0IGlmIGl0J3MKKyAgICAgICAgZm91bmQgaW4gdGhlIFZCRS1wcm92aWRlZCBsaXN0IG9mIHN1cHBvcnRlZCBtb2Rlcy4KKyAgICAgICAgTk9URTogVGhlIG1vZGUgbnVtYmVyICd4JyBzaG91bGQgYmUgc3BlY2lmaWVkIGluIFZFU0EgbW9kZSBudW1iZXIKKyAgICAgICAgbm90YXRpb24sIG5vdCB0aGUgTGludXgga2VybmVsIG9uZSAoZWcuIDI1NyBpbnN0ZWFkIG9mIDc2OSkuCisgICAgICAgIEhJTlQ6IElmIHlvdSB1c2UgdGhpcyBvcHRpb24gYmVjYXVzZSBub3JtYWwgPG1vZGU+IHBhcmFtZXRlciBkb2VzCisgICAgICAgIG5vdCB3b3JrIGZvciB5b3UgYW5kIHlvdSB1c2UgYSBYIHNlcnZlciwgeW91J2xsIHByb2JhYmx5IHdhbnQgdG8KKyAgICAgICAgc2V0IHRoZSAnbm9jcnRjJyBvcHRpb24gdG8gZW5zdXJlIHRoYXQgdGhlIHZpZGVvIG1vZGUgaXMgcHJvcGVybHkKKyAgICAgICAgcmVzdG9yZWQgYWZ0ZXIgY29uc29sZSA8LT4gWCBzd2l0Y2hlcy4KKworbm9jcnRjICBEbyBub3QgdXNlIENSVEMgdGltaW5ncyB3aGlsZSBzZXR0aW5nIHRoZSB2aWRlbyBtb2RlLiAgVGhpcyBvcHRpb24KKyAgICAgICAgaGFzIGFueSBlZmZlY3Qgb25seSBpZiB0aGUgVmlkZW8gQklPUyBpcyBWQkUgMy4wIGNvbXBsaWFudC4gIFVzZSBpdAorICAgICAgICBpZiB5b3UgaGF2ZSBwcm9ibGVtcyB3aXRoIG1vZGVzIHNldCB0aGUgc3RhbmRhcmQgd2F5LiAgTm90ZSB0aGF0CisgICAgICAgIHVzaW5nIHRoaXMgb3B0aW9uIGltcGxpZXMgdGhhdCBhbnkgcmVmcmVzaCByYXRlIGFkanVzdG1lbnRzIHdpbGwKKyAgICAgICAgYmUgaWdub3JlZCBhbmQgdGhlIHJlZnJlc2ggcmF0ZSB3aWxsIHN0YXkgYXQgeW91ciBCSU9TIGRlZmF1bHQgKDYwIEh6KS4KKworbm9lZGlkICBEbyBub3QgdHJ5IHRvIGZldGNoIGFuZCB1c2UgRURJRC1wcm92aWRlZCBtb2Rlcy4KKworbm9ibGFuayBEaXNhYmxlIGhhcmR3YXJlIGJsYW5raW5nLgorCit2ODZkOnBhdGgKKyAgICAgICAgU2V0IHBhdGggdG8gdGhlIHY4NmQgZXhlY3V0YWJsZS4gVGhpcyBvcHRpb24gaXMgb25seSBhdmFpbGFibGUgYXMKKyAgICAgICAgYSBtb2R1bGUgcGFyYW1ldGVyLCBhbmQgbm90IGFzIGEgcGFydCBvZiB0aGUgdmlkZW89IHN0cmluZy4gIElmIHlvdQorICAgICAgICBuZWVkIHRvIHVzZSBpdCBhbmQgaGF2ZSB1dmVzYWZiIGJ1aWx0IGludG8gdGhlIGtlcm5lbCwgdXNlCisgICAgICAgIHV2ZXNhZmIudjg2ZD0icGF0aCIuCisKK0FkZGl0aW9uYWxseSwgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIG1heSBiZSBwcm92aWRlZC4gIFRoZXkgYWxsIG92ZXJyaWRlIHRoZQorRURJRC1wcm92aWRlZCB2YWx1ZXMgYW5kIEJJT1MgZGVmYXVsdHMuICBSZWZlciB0byB5b3VyIG1vbml0b3IncyBzcGVjcyB0byBnZXQKK3RoZSBjb3JyZWN0IHZhbHVlcyBmb3IgbWF4aGYsIG1heHZmIGFuZCBtYXhjbGsgZm9yIHlvdXIgaGFyZHdhcmUuCisKK21heGhmOm4gICAgIE1heGltdW0gaG9yaXpvbnRhbCBmcmVxdWVuY3kgKGluIGtIeikuCittYXh2ZjpuICAgICBNYXhpbXVtIHZlcnRpY2FsIGZyZXF1ZW5jeSAoaW4gSHopLgorbWF4Y2xrOm4gICAgTWF4aW11bSBwaXhlbCBjbG9jayAoaW4gTUh6KS4KKworNC4gVGhlIHN5c2ZzIGludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit1dmVzYWZiIHByb3ZpZGVzIHNldmVyYWwgc3lzZnMgbm9kZXMgZm9yIGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzIGFuZAorYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KKworRHJpdmVyIGF0dHJpYnV0ZXM6CisKKy9zeXMvYnVzL3BsYXRmb3JtL2RyaXZlcnMvdXZlc2FmYgorICAtIHY4NmQgKGRlZmF1bHQ6IC9zYmluL3Y4NmQpCisgICAgUGF0aCB0byB0aGUgdjg2ZCBleGVjdXRhYmxlLiB2ODZkIGlzIHN0YXJ0ZWQgYnkgdXZlc2FmYgorICAgIGlmIGFuIGluc3RhbmNlIG9mIHRoZSBkYWVtb24gaXNuJ3QgYWxyZWFkeSBydW5uaW5nLgorCitEZXZpY2UgYXR0cmlidXRlczoKKworL3N5cy9idXMvcGxhdGZvcm0vZHJpdmVycy91dmVzYWZiL3V2ZXNhZmIuMAorICAtIG5vY3J0YworICAgIFVzZSB0aGUgZGVmYXVsdCByZWZyZXNoIHJhdGUgKDYwIEh6KSBpZiBzZXQgdG8gMS4KKworICAtIG9lbV9wcm9kdWN0X25hbWUKKyAgLSBvZW1fcHJvZHVjdF9yZXYKKyAgLSBvZW1fc3RyaW5nCisgIC0gb2VtX3ZlbmRvcgorICAgIEluZm9ybWF0aW9uIGFib3V0IHRoZSBjYXJkIGFuZCBpdHMgbWFrZXIuCisKKyAgLSB2YmVfbW9kZXMKKyAgICBBIGxpc3Qgb2YgdmlkZW8gbW9kZXMgc3VwcG9ydGVkIGJ5IHRoZSBWaWRlbyBCSU9TIGFsb25nIHdpdGggdGhlaXIKKyAgICBWQkUgbW9kZSBudW1iZXJzIGluIGhleC4KKworICAtIHZiZV92ZXJzaW9uCisgICAgQSBCQ0QgdmFsdWUgaW5kaWNhdGluZyB0aGUgaW1wbGVtZW50ZWQgVkJFIHN0YW5kYXJkLgorCis1LiBNaXNjZWxsYW5lb3VzCistLS0tLS0tLS0tLS0tLS0tCisKK1V2ZXNhZmIgd2lsbCBzZXQgYSB2aWRlbyBtb2RlIHdpdGggdGhlIGRlZmF1bHQgcmVmcmVzaCByYXRlIGFuZCB0aW1pbmdzCitmcm9tIHRoZSBWaWRlbyBCSU9TIGlmIHlvdSBzZXQgcGl4Y2xvY2sgdG8gMCBpbiBmYl92YXJfc2NyZWVuaW5mby4KKworCistLQorIE1pY2hhbCBKYW51c3pld3NraSA8c3BvY2tAZ2VudG9vLm9yZz4KKyBMYXN0IHVwZGF0ZWQ6IDIwMDktMDMtMzAKKworIERvY3VtZW50YXRpb24gb2YgdGhlIHV2ZXNhZmIgb3B0aW9ucyBpcyBsb29zZWx5IGJhc2VkIG9uIHZlc2FmYi50eHQuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvdmVzYWZiLnR4dCBiL0RvY3VtZW50YXRpb24vZmIvdmVzYWZiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTBkNWE2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mYi92ZXNhZmIudHh0CkBAIC0wLDAgKzEsMTgxIEBACisKK1doYXQgaXMgdmVzYWZiPworPT09PT09PT09PT09PT09CisKK1RoaXMgaXMgYSBnZW5lcmljIGRyaXZlciBmb3IgYSBncmFwaGljIGZyYW1lYnVmZmVyIG9uIGludGVsIGJveGVzLgorCitUaGUgaWRlYSBpcyBzaW1wbGU6ICBUdXJuIG9uIGdyYXBoaWNzIG1vZGUgYXQgYm9vdCB0aW1lIHdpdGggdGhlIGhlbHAKK29mIHRoZSBCSU9TLCBhbmQgdXNlIHRoaXMgYXMgZnJhbWVidWZmZXIgZGV2aWNlIC9kZXYvZmIwLCBsaWtlIHRoZSBtNjhrCisoYW5kIG90aGVyKSBwb3J0cyBkby4KKworVGhpcyBtZWFucyB3ZSBkZWNpZGUgYXQgYm9vdCB0aW1lIHdoZW5ldmVyIHdlIHdhbnQgdG8gcnVuIGluIHRleHQgb3IKK2dyYXBoaWNzIG1vZGUuICBTd2l0Y2hpbmcgbW9kZSBsYXRlciBvbiAoaW4gcHJvdGVjdGVkIG1vZGUpIGlzCitpbXBvc3NpYmxlOyBCSU9TIGNhbGxzIHdvcmsgaW4gcmVhbCBtb2RlIG9ubHkuICBWRVNBIEJJT1MgRXh0ZW5zaW9ucworVmVyc2lvbiAyLjAgYXJlIHJlcXVpcmVkLCBiZWNhdXNlIHdlIG5lZWQgYSBsaW5lYXIgZnJhbWUgYnVmZmVyLgorCitBZHZhbnRhZ2VzOgorCisgKiBJdCBwcm92aWRlcyBhIG5pY2UgbGFyZ2UgY29uc29sZSAoMTI4IGNvbHMgKyA0OCBsaW5lcyB3aXRoIDEwMjR4NzY4KQorICAgd2l0aG91dCB1c2luZyB0aW55LCB1bnJlYWRhYmxlIGZvbnRzLgorICogWW91IGNhbiBydW4gWEY2OF9GQkRldiBvbiB0b3Agb2YgL2Rldi9mYjAgKD0+IG5vbi1hY2NlbGVyYXRlZCBYMTEKKyAgIHN1cHBvcnQgZm9yIGV2ZXJ5IFZCRSAyLjAgY29tcGxpYW50IGdyYXBoaWNzIGJvYXJkKS4KKyAqIE1vc3QgaW1wb3J0YW50OiBib290IGxvZ28gOi0pCisKK0Rpc2FkdmFudGFnZXM6CisKKyAqIGdyYXBoaWMgbW9kZSBpcyBzbG93ZXIgdGhhbiB0ZXh0IG1vZGUuLi4KKworCitIb3cgdG8gdXNlIGl0PworPT09PT09PT09PT09PT0KKworU3dpdGNoaW5nIG1vZGVzIGlzIGRvbmUgdXNpbmcgdGhlIHZnYT0uLi4gYm9vdCBwYXJhbWV0ZXIuICBSZWFkCitEb2N1bWVudGF0aW9uL3N2Z2EudHh0IGZvciBkZXRhaWxzLgorCitZb3Ugc2hvdWxkIGNvbXBpbGUgaW4gYm90aCB2Z2Fjb24gKGZvciB0ZXh0IG1vZGUpIGFuZCB2ZXNhZmIgKGZvcgorZ3JhcGhpY3MgbW9kZSkuIFdoaWNoIG9mIHRoZW0gdGFrZXMgb3ZlciB0aGUgY29uc29sZSBkZXBlbmRzIG9uCit3aGVuZXZlciB0aGUgc3BlY2lmaWVkIG1vZGUgaXMgdGV4dCBvciBncmFwaGljcy4KKworVGhlIGdyYXBoaWMgbW9kZXMgYXJlIE5PVCBpbiB0aGUgbGlzdCB3aGljaCB5b3UgZ2V0IGlmIHlvdSBib290IHdpdGgKK3ZnYT1hc2sgYW5kIGhpdCByZXR1cm4uIFRoZSBtb2RlIHlvdSB3aXNoIHRvIHVzZSBpcyBkZXJpdmVkIGZyb20gdGhlCitWRVNBIG1vZGUgbnVtYmVyLiBIZXJlIGFyZSB0aG9zZSBWRVNBIG1vZGUgbnVtYmVyczoKKworICAgIHwgNjQweDQ4MCAgODAweDYwMCAgMTAyNHg3NjggMTI4MHgxMDI0CistLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzI1NiB8ICAweDEwMSAgICAweDEwMyAgICAweDEwNSAgICAweDEwNyAgIAorMzJrIHwgIDB4MTEwICAgIDB4MTEzICAgIDB4MTE2ICAgIDB4MTE5ICAgCis2NGsgfCAgMHgxMTEgICAgMHgxMTQgICAgMHgxMTcgICAgMHgxMUEgICAKKzE2TSB8ICAweDExMiAgICAweDExNSAgICAweDExOCAgICAweDExQiAgIAorCitUaGUgdmlkZW8gbW9kZSBudW1iZXIgb2YgdGhlIExpbnV4IGtlcm5lbCBpcyB0aGUgVkVTQSBtb2RlIG51bWJlciBwbHVzCisweDIwMC4KKyAKKyBMaW51eF9rZXJuZWxfbW9kZV9udW1iZXIgPSBWRVNBX21vZGVfbnVtYmVyICsgMHgyMDAKKworU28gdGhlIHRhYmxlIGZvciB0aGUgS2VybmVsIG1vZGUgbnVtYmVycyBhcmU6CisKKyAgICB8IDY0MHg0ODAgIDgwMHg2MDAgIDEwMjR4NzY4IDEyODB4MTAyNAorLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyNTYgfCAgMHgzMDEgICAgMHgzMDMgICAgMHgzMDUgICAgMHgzMDcgICAKKzMyayB8ICAweDMxMCAgICAweDMxMyAgICAweDMxNiAgICAweDMxOSAgIAorNjRrIHwgIDB4MzExICAgIDB4MzE0ICAgIDB4MzE3ICAgIDB4MzFBICAgCisxNk0gfCAgMHgzMTIgICAgMHgzMTUgICAgMHgzMTggICAgMHgzMUIgICAKKworVG8gZW5hYmxlIG9uZSBvZiB0aG9zZSBtb2RlcyB5b3UgaGF2ZSB0byBzcGVjaWZ5ICJ2Z2E9YXNrIiBpbiB0aGUKK2xpbG8uY29uZiBmaWxlIGFuZCByZXJ1biBMSUxPLiBUaGVuIHlvdSBjYW4gdHlwZSBpbiB0aGUgZGVzaXJlZAorbW9kZSBhdCB0aGUgInZnYT1hc2siIHByb21wdC4gRm9yIGV4YW1wbGUgaWYgeW91IGxpa2UgdG8gdXNlIAorMTAyNHg3Njh4MjU2IGNvbG9ycyB5b3UgaGF2ZSB0byBzYXkgIjMwNSIgYXQgdGhpcyBwcm9tcHQuCisKK0lmIHRoaXMgZG9lcyBub3Qgd29yaywgdGhpcyBtaWdodCBiZSBiZWNhdXNlIHlvdXIgQklPUyBkb2VzIG5vdCBzdXBwb3J0CitsaW5lYXIgZnJhbWVidWZmZXJzIG9yIGJlY2F1c2UgaXQgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG1vZGUgYXQgYWxsLgorRXZlbiBpZiB5b3VyIGJvYXJkIGRvZXMsIGl0IG1pZ2h0IGJlIHRoZSBCSU9TIHdoaWNoIGRvZXMgbm90LiAgVkVTQSBCSU9TCitFeHRlbnNpb25zIHYyLjAgYXJlIHJlcXVpcmVkLCAxLjIgaXMgTk9UIHN1ZmZpY2llbnQuICBZb3Ugd2lsbCBnZXQgYQorImJhZCBtb2RlIG51bWJlciIgbWVzc2FnZSBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZy4KKworMS4gTm90ZTogTElMTyBjYW5ub3QgaGFuZGxlIGhleCwgZm9yIGJvb3RpbmcgZGlyZWN0bHkgd2l0aCAKKyAgICAgICAgICJ2Z2E9bW9kZS1udW1iZXIiIHlvdSBoYXZlIHRvIHRyYW5zZm9ybSB0aGUgbnVtYmVycyB0byBkZWNpbWFsLgorMi4gTm90ZTogU29tZSBuZXdlciB2ZXJzaW9ucyBvZiBMSUxPIGFwcGVhciB0byB3b3JrIHdpdGggdGhvc2UgaGV4IHZhbHVlcywKKyAgICAgICAgIGlmIHlvdSBzZXQgdGhlIDB4IGluIGZyb250IG9mIHRoZSBudW1iZXJzLgorCitYMTEKKz09PQorCitYRjY4X0ZCRGV2IHNob3VsZCB3b3JrIGp1c3QgZmluZSwgYnV0IGl0IGlzIG5vbi1hY2NlbGVyYXRlZC4gIFJ1bm5pbmcKK2Fub3RoZXIgKGFjY2VsZXJhdGVkKSBYLVNlcnZlciBsaWtlIFhGODZfU1ZHQSBtaWdodCBvciBtaWdodCBub3Qgd29yay4KK0l0IGRlcGVuZHMgb24gWC1TZXJ2ZXIgYW5kIGdyYXBoaWNzIGJvYXJkLgorCitUaGUgWC1TZXJ2ZXIgbXVzdCByZXN0b3JlIHRoZSB2aWRlbyBtb2RlIGNvcnJlY3RseSwgZWxzZSB5b3UgZW5kIHVwCit3aXRoIGEgYnJva2VuIGNvbnNvbGUgKGFuZCB2ZXNhZmIgY2Fubm90IGRvIGFueXRoaW5nIGFib3V0IHRoaXMpLgorCisKK1JlZnJlc2ggcmF0ZXMKKz09PT09PT09PT09PT0KKworVGhlcmUgaXMgbm8gd2F5IHRvIGNoYW5nZSB0aGUgdmVzYWZiIHZpZGVvIG1vZGUgYW5kL29yIHRpbWluZ3MgYWZ0ZXIKK2Jvb3RpbmcgbGludXguICBJZiB5b3UgYXJlIG5vdCBoYXBweSB3aXRoIHRoZSA2MCBIeiByZWZyZXNoIHJhdGUsIHlvdQoraGF2ZSB0aGVzZSBvcHRpb25zOgorCisgKiBjb25maWd1cmUgYW5kIGxvYWQgdGhlIERPUy1Ub29scyBmb3IgdGhlIGdyYXBoaWNzIGJvYXJkIChpZgorICAgYXZhaWxhYmxlKSBhbmQgYm9vdCBsaW51eCB3aXRoIGxvYWRsaW4uCisgKiB1c2UgYSBuYXRpdmUgZHJpdmVyIChtYXRyb3hmYi9hdHlmYikgaW5zdGVhZCBpZiB2ZXNhZmIuICBJZiBub25lCisgICBpcyBhdmFpbGFibGUsIHdyaXRlIGEgbmV3IG9uZSEKKyAqIFZCRSAzLjAgbWlnaHQgd29yayB0b28uICBJIGhhdmUgbmVpdGhlciBhIGdmeCBib2FyZCB3aXRoIFZCRSAzLjAKKyAgIHN1cHBvcnQgbm9yIHRoZSBzcGVjcywgc28gSSBoYXZlIG5vdCBjaGVja2VkIHRoaXMgeWV0LgorCisKK0NvbmZpZ3VyYXRpb24KKz09PT09PT09PT09PT0KKworVGhlIFZFU0EgQklPUyBwcm92aWRlcyBwcm90ZWN0ZWQgbW9kZSBpbnRlcmZhY2UgZm9yIGNoYW5naW5nCitzb21lIHBhcmFtZXRlcnMuICB2ZXNhZmIgY2FuIHVzZSBpdCBmb3IgcGFsZXR0ZSBjaGFuZ2VzIGFuZAordG8gcGFuIHRoZSBkaXNwbGF5LiAgSXQgaXMgdHVybmVkIG9mZiBieSBkZWZhdWx0IGJlY2F1c2UgaXQKK3NlZW1zIG5vdCB0byB3b3JrIHdpdGggc29tZSBCSU9TIHZlcnNpb25zLCBidXQgdGhlcmUgYXJlIG9wdGlvbnMKK3RvIHR1cm4gaXQgb24uCisKK1lvdSBjYW4gcGFzcyBvcHRpb25zIHRvIHZlc2FmYiB1c2luZyAidmlkZW89dmVzYWZiOm9wdGlvbiIgb24KK3RoZSBrZXJuZWwgY29tbWFuZCBsaW5lLiAgTXVsdGlwbGUgb3B0aW9ucyBzaG91bGQgYmUgc2VwYXJhdGVkCitieSBjb21tYSwgbGlrZSB0aGlzOiAidmlkZW89dmVzYWZiOnlwYW4saW52ZXJzIgorCitBY2NlcHRlZCBvcHRpb25zOgorCitpbnZlcnMJbm8gY29tbWVudC4uLgorCit5cGFuCWVuYWJsZSBkaXNwbGF5IHBhbm5pbmcgdXNpbmcgdGhlIFZFU0EgcHJvdGVjdGVkIG1vZGUgCisJaW50ZXJmYWNlLiAgVGhlIHZpc2libGUgc2NyZWVuIGlzIGp1c3QgYSB3aW5kb3cgb2YgdGhlCisJdmlkZW8gbWVtb3J5LCBjb25zb2xlIHNjcm9sbGluZyBpcyBkb25lIGJ5IGNoYW5naW5nIHRoZQorCXN0YXJ0IG9mIHRoZSB3aW5kb3cuCisJcHJvOgkqIHNjcm9sbGluZyAoZnVsbHNjcmVlbikgaXMgZmFzdCwgYmVjYXVzZSB0aGVyZSBpcworCQkgIG5vIG5lZWQgdG8gY29weSBhcm91bmQgZGF0YS4KKwkJKiBZb3UnbGwgZ2V0IHNjcm9sbGJhY2sgKHRoZSBTaGlmdC1QZ1VwIHRoaW5nKSwKKwkJICB0aGUgdmlkZW8gbWVtb3J5IGNhbiBiZSB1c2VkIGFzIHNjcm9sbGJhY2sgYnVmZmVyCisJa29udHJhOiAqIHNjcm9sbGluZyBvbmx5IHBhcnRzIG9mIHRoZSBzY3JlZW4gY2F1c2VzIHNvbWUKKwkJICB1Z2x5IGZsaWNrZXIgZWZmZWN0cyAoYm9vdCBsb2dvIGZsaWNrZXJzIGZvcgorCQkgIGV4YW1wbGUpLgorCit5d3JhcAlTYW1lIGFzIHlwYW4sIGJ1dCBhc3N1bWVzIHlvdXIgZ2Z4IGJvYXJkIGNhbiB3cmFwLWFyb3VuZCAKKwl0aGUgdmlkZW8gbWVtb3J5IChpLmUuIHN0YXJ0cyByZWFkaW5nIGZyb20gdG9wIGlmIGl0CisJcmVhY2hlcyB0aGUgZW5kIG9mIHZpZGVvIG1lbW9yeSkuICBGYXN0ZXIgdGhhbiB5cGFuLgorCityZWRyYXcJc2Nyb2xsIGJ5IHJlZHJhd2luZyB0aGUgYWZmZWN0ZWQgcGFydCBvZiB0aGUgc2NyZWVuLCB0aGlzCisJaXMgdGhlIHNhZmUgKGFuZCBzbG93KSBkZWZhdWx0LgorCisKK3ZnYXBhbAlVc2UgdGhlIHN0YW5kYXJkIHZnYSByZWdpc3RlcnMgZm9yIHBhbGV0dGUgY2hhbmdlcy4KKwlUaGlzIGlzIHRoZSBkZWZhdWx0LgorcG1pcGFsCVVzZSB0aGUgcHJvdGVjdGVkIG1vZGUgaW50ZXJmYWNlIGZvciBwYWxldHRlIGNoYW5nZXMuCisKK210cnI6bglzZXR1cCBtZW1vcnkgdHlwZSByYW5nZSByZWdpc3RlcnMgZm9yIHRoZSB2ZXNhZmIgZnJhbWVidWZmZXIKKwl3aGVyZSBuOgorCSAgICAgIDAgLSBkaXNhYmxlZCAoZXF1aXZhbGVudCB0byBub210cnIpIChkZWZhdWx0KQorCSAgICAgIDEgLSB1bmNhY2hhYmxlCisJICAgICAgMiAtIHdyaXRlLWJhY2sKKwkgICAgICAzIC0gd3JpdGUtY29tYmluaW5nCisJICAgICAgNCAtIHdyaXRlLXRocm91Z2gKKworCUlmIHlvdSBzZWUgdGhlIGZvbGxvd2luZyBpbiBkbWVzZywgY2hvb3NlIHRoZSB0eXBlIHRoYXQgbWF0Y2hlcyB0aGUKKwlvbGQgb25lLiBJbiB0aGlzIGV4YW1wbGUsIHVzZSAibXRycjoyIi4KKy4uLgorbXRycjogdHlwZSBtaXNtYXRjaCBmb3IgZTAwMDAwMDAsODAwMDAwMCBvbGQ6IHdyaXRlLWJhY2sgbmV3OiB3cml0ZS1jb21iaW5pbmcKKy4uLgorCitub210cnIgIGRpc2FibGUgbXRycgorCit2cmVtYXA6bgorICAgICAgICByZW1hcCAnbicgTWlCIG9mIHZpZGVvIFJBTS4gSWYgMCBvciBub3Qgc3BlY2lmaWVkLCByZW1hcCBtZW1vcnkKKwlhY2NvcmRpbmcgdG8gdmlkZW8gbW9kZS4gKDIuNS42NiBwYXRjaC9pZGVhIGJ5IEFudG9uaW5vIERhcGxhcworCXJldmVyc2VkIHRvIGdpdmUgb3ZlcnJpZGUgcG9zc2liaWxpdHkgKGFsbG9jYXRlIG1vcmUgZmIgbWVtb3J5CisJdGhhbiB0aGUga2VybmVsIHdvdWxkKSB0byAyLjQgYnkgdG1iQGlraS5maSkKKwordnRvdGFsOm4KKyAgICAgICAgaWYgdGhlIHZpZGVvIEJJT1Mgb2YgeW91ciBjYXJkIGluY29ycmVjdGx5IGRldGVybWluZXMgdGhlIHRvdGFsCisgICAgICAgIGFtb3VudCBvZiB2aWRlbyBSQU0sIHVzZSB0aGlzIG9wdGlvbiB0byBvdmVycmlkZSB0aGUgQklPUyAoaW4gTWlCKS4KKworSGF2ZSBmdW4hCisKKyAgR2VyZAorCistLQorR2VyZCBLbm9yciA8a3JheGVsQGdvbGRiYWNoLmluLWJlcmxpbi5kZT4KKworTWlub3IgKG1vc3RseSB0eXBvKSBjaGFuZ2VzIAorYnkgTmljbyBTY2htb2lnbCA8c2NobW9pZ2xAcnVtbXMudW5pLW1hbm5oZWltLmRlPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mYi92aWFmYi5tb2RlcyBiL0RvY3VtZW50YXRpb24vZmIvdmlhZmIubW9kZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE1NDdkYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmIvdmlhZmIubW9kZXMKQEAgLTAsMCArMSw4NzAgQEAKKyMKKyMKKyMgICBUaGVzZSBkYXRhIGFyZSBiYXNlZCBvbiB0aGUgQ1JUQyBwYXJhbWV0ZXJzIGluCisjCisjICAgICAgIFZJQSBJbnRlZ3JhdGlvbiBHcmFwaGljcyBDaGlwCisjICAgICAgIChDKSAyMDA0IFZJQSBUZWNobm9sb2dpZXMgSW5jLgorIworCisjCisjICAgNjQweDQ4MCwgNjAgSHosIE5vbi1JbnRlcmxhY2VkICgyNS4xNzUgTUh6IGRvdGNsb2NrKQorIworIyAgICAgICAgICAgICAgIEhvcml6b250YWwgIFZlcnRpY2FsCisjICAgUmVzb2x1dGlvbiAgICAgIDY0MCAgICAgNDgwCisjICAgU2NhbiBGcmVxdWVuY3kgICAgICAzMS40Njkga0h6ICA1OS45NCBIegorIyAgIFN5bmMgV2lkdGggICAgICAzLjgxMyB1cyAgICAwLjA2NCBtcworIyAgICAgICAgICAgICAgIDEyIGNoYXJzICAgIDIgbGluZXMKKyMgICBGcm9udCBQb3JjaCAgICAgMC42MzYgdXMgICAgMC4zMTggIG1zCisjICAgICAgICAgICAgICAgMiBjaGFycyAgICAgMTAgbGluZXMKKyMgICBCYWNrIFBvcmNoICAgICAgMS45MDcgdXMgICAgMS4wNDggIG1zCisjICAgICAgICAgICAgICAgNiBjaGFycyAgICAgMzMgbGluZXMKKyMgICBBY3RpdmUgVGltZSAgICAgMjUuNDIyIHVzICAgMTUuMjUzIG1zCisjICAgICAgICAgICAgICAgODAgY2hhcnMgICAgNDgwIGxpbmVzCisjICAgQmxhbmsgVGltZSAgICAgIDYuMzU2IHVzICAgIDEuNDMwIG1zCisjICAgICAgICAgICAgICAgMjAgY2hhcnMgICAgNDUgbGluZXMKKyMgICBQb2xhcml0eSAgICAgICAgbmVnYXRpdmUgICAgbmVnYXRpdmUKKyMKKworbW9kZSAiNjQweDQ4MC02MCIKKyMgRDogMjUuMTc1IE1IeiwgSDogMzEuNDY5IGtIeiwgVjogNTkuOTQgSHoKKyAgICBnZW9tZXRyeSA2NDAgNDgwIDY0MCA0ODAgMzIKKyAgICB0aW1pbmdzIDM5NzIyIDQ4IDE2IDMzIDEwIDk2IDIgZW5kbW9kZSBtb2RlICI0ODB4NjQwLTYwIgorIyBEOiAyNC44MjMgTUh6LCBIOiAzOS43ODAga0h6LCBWOiA2MC4wMCBIegorICAgIGdlb21ldHJ5IDQ4MCA2NDAgNDgwIDY0MCAzMiB0aW1pbmdzIDM5NzIyIDcyIDI0IDE5IDEgNDggMyBlbmRtb2RlCisjCisjICAgNjQweDQ4MCwgNzUgSHosIE5vbi1JbnRlcmxhY2VkICgzMS41MCBNSHogZG90Y2xvY2spCisjCisjICAgICAgICAgICAgICAgSG9yaXpvbnRhbCAgVmVydGljYWwKKyMgICBSZXNvbHV0aW9uICAgICAgNjQwICAgICA0ODAKKyMgICBTY2FuIEZyZXF1ZW5jeSAgICAgIDM3LjUwMCBrSHogIDc1LjAwIEh6CisjICAgU3luYyBXaWR0aCAgICAgIDIuMDMyIHVzICAgIDAuMDgwIG1zCisjICAgICAgICAgICAgICAgOCBjaGFycyAgICAgMyBsaW5lcworIyAgIEZyb250IFBvcmNoICAgICAwLjUwOCB1cyAgICAwLjAyNyBtcworIyAgICAgICAgICAgICAgIDIgY2hhcnMgICAgIDEgbGluZXMKKyMgICBCYWNrIFBvcmNoICAgICAgMy44MTAgdXMgICAgMC40MjcgbXMKKyMgICAgICAgICAgICAgICAxNSBjaGFycyAgICAxNiBsaW5lcworIyAgIEFjdGl2ZSBUaW1lICAgICAyMC4zMTcgdXMgICAxMi44MDAgbXMKKyMgICAgICAgICAgICAgICA4MCBjaGFycyAgICA0ODAgbGluZXMKKyMgICBCbGFuayBUaW1lICAgICAgNi4zNDkgdXMgICAgMC41MzMgbXMKKyMgICAgICAgICAgICAgICAyNSBjaGFycyAgICAyMCBsaW5lcworIyAgIFBvbGFyaXR5ICAgICAgICBuZWdhdGl2ZSAgICBuZWdhdGl2ZQorIworICAgIG1vZGUgIjY0MHg0ODAtNzUiCisjIEQ6IDMxLjUwIE1IeiwgSDogMzcuNTAwIGtIeiwgVjogNzUuMDAgSHoKKyAgICBnZW9tZXRyeSA2NDAgNDgwIDY0MCA0ODAgMzIgdGltaW5ncyAzMTc0NyAxMjAgMTYgMTYgMSA2NCAzIGVuZG1vZGUKKyMKKyMgICA2NDB4NDgwLCA4NSBIeiwgTm9uLUludGVybGFjZWQgKDM2LjAwMCBNSHogZG90Y2xvY2spCisjCisjICAgICAgICAgICAgICAgSG9yaXpvbnRhbCAgVmVydGljYWwKKyMgICBSZXNvbHV0aW9uICAgICAgNjQwICAgICA0ODAKKyMgICBTY2FuIEZyZXF1ZW5jeSAgNDMuMjY5IGtIeiAgODUuMDAgSHoKKyMgICBTeW5jIFdpZHRoICAgICAgMS41NTYgdXMgICAgMC4wNjkgbXMKKyMgICAgICAgICAgICAgICA3IGNoYXJzICAgICAzIGxpbmVzCisjICAgRnJvbnQgUG9yY2ggICAgIDEuNTU2IHVzICAgIDAuMDIzIG1zCisjICAgICAgICAgICAgICAgNyBjaGFycyAgICAgMSBsaW5lcworIyAgIEJhY2sgUG9yY2ggICAgICAyLjIyMiB1cyAgICAwLjU3OCBtcworIyAgICAgICAgICAgICAgIDEwIGNoYXJzICAgIDI1IGxpbmVzCisjICAgQWN0aXZlIFRpbWUgICAgIDE3Ljc3OCB1cyAgIDExLjA5MyBtcworIyAgICAgICAgICAgICAgIDgwIGNoYXJzICAgIDQ4MCBsaW5lcworIyAgIEJsYW5rIFRpbWUgICAgICA1LjMzMyB1cyAgICAwLjY3MCBtcworIyAgICAgICAgICAgICAgIDI0IGNoYXJzICAgIDI5IGxpbmVzCisjICAgUG9sYXJpdHkgICAgICAgIG5lZ2F0aXZlICAgIG5lZ2F0aXZlCisjCisgICAgbW9kZSAiNjQweDQ4MC04NSIKKyMgRDogMzYuMDAwIE1IeiwgSDogNDMuMjY5IGtIeiwgVjogODUuMDAgSHoKKyAgICBnZW9tZXRyeSA2NDAgNDgwIDY0MCA0ODAgMzIgdGltaW5ncyAyNzc3NyA4MCA1NiAyNSAxIDU2IDMgZW5kbW9kZQorIworIyAgIDY0MHg0ODAsIDEwMCBIeiwgTm9uLUludGVybGFjZWQgKDQzLjE2MyBNSHogZG90Y2xvY2spCisjCisjICAgICAgICAgICAgICAgSG9yaXpvbnRhbCAgVmVydGljYWwKKyMgICBSZXNvbHV0aW9uICAgICAgNjQwICAgICA0ODAKKyMgICBTY2FuIEZyZXF1ZW5jeSAgICAgIDUwLjkwMCBrSHogIDEwMC4wMCBIegorIyAgIFN5bmMgV2lkdGggICAgICAxLjQ4MyB1cyAgICAwLjA1OCBtcworIyAgICAgICAgICAgICAgIDggY2hhcnMgICAgIDMgbGluZXMKKyMgICBGcm9udCBQb3JjaCAgICAgMC45MjcgdXMgICAgMC4wMTkgbXMKKyMgICAgICAgICAgICAgICA1IGNoYXJzICAgICAxIGxpbmVzCisjICAgQmFjayBQb3JjaCAgICAgIDIuNDA5IHVzICAgIDAuNDc1IG1zCisjICAgICAgICAgICAgICAgMTMgY2hhcnMgICAgMjUgbGluZXMKKyMgICBBY3RpdmUgVGltZSAgICAgMTQuODI3IHVzICAgOS40MzAgbXMKKyMgICAgICAgICAgICAgICA4MCBjaGFycyAgICA0ODAgbGluZXMKKyMgICBCbGFuayBUaW1lICAgICAgNC44MTkgdXMgICAgMC41NzAgbXMKKyMgICAgICAgICAgICAgICAyNiBjaGFycyAgICAyOSBsaW5lcworIyAgIFBvbGFyaXR5ICAgICAgICBwb3NpdGl2ZSAgICBwb3NpdGl2ZQorIworICAgIG1vZGUgIjY0MHg0ODAtMTAwIgorIyBEOiA0My4xNjMgTUh6LCBIOiA1MC45MDAga0h6LCBWOiAxMDAuMDAgSHoKKyAgICBnZW9tZXRyeSA2NDAgNDgwIDY0MCA0ODAgMzIgdGltaW5ncyAyMzE2OCAxMDQgNDAgMjUgMSA2NCAzIGVuZG1vZGUKKyMKKyMgICA2NDB4NDgwLCAxMjAgSHosIE5vbi1JbnRlcmxhY2VkICg1Mi40MDYgTUh6IGRvdGNsb2NrKQorIworIyAgICAgICAgICAgICAgIEhvcml6b250YWwgIFZlcnRpY2FsCisjICAgUmVzb2x1dGlvbiAgICAgIDY0MCAgICAgNDgwCisjICAgU2NhbiBGcmVxdWVuY3kgICAgICA2MS44MDAga0h6ICAxMjAuMDAgSHoKKyMgICBTeW5jIFdpZHRoICAgICAgMS4yMjEgdXMgICAgMC4wNDggbXMKKyMgICAgICAgICAgICAgICA4IGNoYXJzICAgICAgICAgMyBsaW5lcworIyAgIEZyb250IFBvcmNoICAgICAwLjc2MyB1cyAgICAwLjAxNiBtcworIyAgICAgICAgICAgICAgIDUgY2hhcnMgICAgIDEgbGluZXMKKyMgICBCYWNrIFBvcmNoICAgICAgMS45ODQgdXMgICAgMC40OTYgbXMKKyMgICAgICAgICAgICAgICAxMyBjaGFycyAgICAzMSBsaW5lcworIyAgIEFjdGl2ZSBUaW1lICAgICAxMi4yMTIgdXMgICA3Ljc2NyBtcworIyAgICAgICAgICAgICAgIDgwIGNoYXJzICAgIDQ4MCBsaW5lcworIyAgIEJsYW5rIFRpbWUgICAgICAzLjk2OSB1cyAgICAwLjU2NiBtcworIyAgICAgICAgICAgICAgIDI2IGNoYXJzICAgIDM1IGxpbmVzCisjICAgUG9sYXJpdHkgICAgICAgIHBvc2l0aXZlICAgIHBvc2l0aXZlCisjCisgICAgbW9kZSAiNjQweDQ4MC0xMjAiCisjIEQ6IDUyLjQwNiBNSHosIEg6IDYxLjgwMCBrSHosIFY6IDEyMC4wMCBIegorICAgIGdlb21ldHJ5IDY0MCA0ODAgNjQwIDQ4MCAzMiB0aW1pbmdzIDE5MDgxIDEwNCA0MCAzMSAxIDY0IDMgZW5kbW9kZQorIworIyAgIDcyMHg0ODAsIDYwIEh6LCBOb24tSW50ZXJsYWNlZCAoMjYuODgwIE1IeiBkb3RjbG9jaykKKyMKKyMgICAgICAgICAgICAgICBIb3Jpem9udGFsICBWZXJ0aWNhbAorIyAgIFJlc29sdXRpb24gICAgICA3MjAgICAgIDQ4MAorIyAgIFNjYW4gRnJlcXVlbmN5ICAgICAgMzAuMDAwIGtIeiAgNjAuMjQxIEh6CisjICAgU3luYyBXaWR0aCAgICAgIDIuNjc5IHVzICAgIDAuMDk5IG1zCisjICAgICAgICAgICAgICAgOSBjaGFycyAgICAgMyBsaW5lcworIyAgIEZyb250IFBvcmNoICAgICAwLjU5NSB1cyAgICAwLjAzMyBtcworIyAgICAgICAgICAgICAgIDIgY2hhcnMgICAgIDEgbGluZXMKKyMgICBCYWNrIFBvcmNoICAgICAgMy4yNzQgdXMgICAgMC40NjIgbXMKKyMgICAgICAgICAgICAgICAxMSBjaGFycyAgICAxNCBsaW5lcworIyAgIEFjdGl2ZSBUaW1lICAgICAyNi43ODYgdXMgICAxNi4wMDAgbXMKKyMgICAgICAgICAgICAgICA5MCBjaGFycyAgICA0ODAgbGluZXMKKyMgICBCbGFuayBUaW1lICAgICAgNi41NDggdXMgICAgMC42MDAgbXMKKyMgICAgICAgICAgICAgICAyMiBjaGFycyAgICAxOCBsaW5lcworIyAgIFBvbGFyaXR5ICAgICAgICBwb3NpdGl2ZSAgICBwb3NpdGl2ZQorIworICAgIG1vZGUgIjcyMHg0ODAtNjAiCisjIEQ6IDI2Ljg4MCBNSHosIEg6IDMwLjAwMCBrSHosIFY6IDYwLjI0IEh6CisgICAgZ2VvbWV0cnkgNzIwIDQ4MCA3MjAgNDgwIDMyIHRpbWluZ3MgMzcyMDIgODggMTYgMTQgMSA3MiAzIGVuZG1vZGUKKyMKKyMgICA4MDB4NDgwLCA2MCBIeiwgTm9uLUludGVybGFjZWQgKDI5LjU4MSBNSHogZG90Y2xvY2spCisjCisjICAgICAgICAgICAgICAgSG9yaXpvbnRhbCAgICBWZXJ0aWNhbAorIyAgIFJlc29sdXRpb24gICAgICA4MDAgICAgICAgICA0ODAKKyMgICBTY2FuIEZyZXF1ZW5jeSAgMjkuODkyIGtIeiAgNjAuMDAgSHoKKyMgICBTeW5jIFdpZHRoICAgICAgMi43MDQgdXMgICAgMTAwLjYwNCB1cworIyAgICAgICAgICAgICAgICAgICAxMCBjaGFycyAgICAzIGxpbmVzCisjICAgRnJvbnQgUG9yY2ggICAgIDAuNTQxIHVzICAgIDMzLjUzNSB1cworIyAgICAgICAgICAgICAgICAgICAyIGNoYXJzICAgICAxIGxpbmVzCisjICAgQmFjayBQb3JjaCAgICAgIDMuMjQ1IHVzICAgIDQzNS45NDkgdXMKKyMgICAgICAgICAgICAgICAgICAgMTIgY2hhcnMgICAgMTMgbGluZXMKKyMgICBBY3RpdmUgVGltZSAgICAgMjcuMDQ0IHVzICAgMTYuMDk3IG1zCisjICAgICAgICAgICAgICAgICAgIDEwMCBjaGFycyAgIDQ4MCBsaW5lcworIyAgIEJsYW5rIFRpbWUgICAgICA2LjQ5MSB1cyAgICAwLjU3MCBtcworIyAgICAgICAgICAgICAgICAgICAyNCBjaGFycyAgICAxNyBsaW5lcworIyAgIFBvbGFyaXR5ICAgICAgICBwb3NpdGl2ZSAgICBwb3NpdGl2ZQorIworICAgIG1vZGUgIjgwMHg0ODAtNjAiCisjIEQ6IDI5LjUwMCBNSHosIEg6IDI5LjczOCBrSHosIFY6IDYwLjAwIEh6CisgICAgZ2VvbWV0cnkgODAwIDQ4MCA4MDAgNDgwIDMyIHRpbWluZ3MgMzM4MDUgOTYgMjQgMTAgMyA3MiA3IGVuZG1vZGUKKyMKKyMgICA3MjB4NTc2LCA2MCBIeiwgTm9uLUludGVybGFjZWQgKDMyLjY2OCBNSHogZG90Y2xvY2spCisjCisjICAgICAgICAgICAgICAgSG9yaXpvbnRhbCAgVmVydGljYWwKKyMgICBSZXNvbHV0aW9uICAgICAgNzIwICAgICA1NzYKKyMgICBTY2FuIEZyZXF1ZW5jeSAgICAgIDM1LjgyMCBrSHogIDYwLjAwIEh6CisjICAgU3luYyBXaWR0aCAgICAgIDIuMjA0IHVzICAgIDAuMDgzIG1zCisjICAgICAgICAgICAgICAgOSBjaGFycyAgICAgMyBsaW5lcworIyAgIEZyb250IFBvcmNoICAgICAwLjczNSB1cyAgICAwLjAyNyBtcworIyAgICAgICAgICAgICAgIDMgY2hhcnMgICAgIDEgbGluZXMKKyMgICBCYWNrIFBvcmNoICAgICAgMi45MzkgdXMgICAgMC40NTkgbXMKKyMgICAgICAgICAgICAgICAxMiBjaGFycyAgICAxNyBsaW5lcworIyAgIEFjdGl2ZSBUaW1lICAgICAyMi4wNDAgdXMgICAxNi4wODAgbXMKKyMgICAgICAgICAgICAgICA5MCBjaGFycyAgICA0NzYgbGluZXMKKyMgICBCbGFuayBUaW1lICAgICAgNS44NzcgdXMgICAgMC41ODYgbXMKKyMgICAgICAgICAgICAgICAyNCBjaGFycyAgICAyMSBsaW5lcworIyAgIFBvbGFyaXR5ICAgICAgICBwb3NpdGl2ZSAgICBwb3NpdGl2ZQorIworICAgIG1vZGUgIjcyMHg1NzYtNjAiCisjIEQ6IDMyLjY2OCBNSHosIEg6IDM1LjgyMCBrSHosIFY6IDYwLjAwIEh6CisgICAgZ2VvbWV0cnkgNzIwIDU3NiA3MjAgNTc2IDMyIHRpbWluZ3MgMzA2MTEgOTYgMjQgMTcgMSA3MiAzIGVuZG1vZGUKKyMKKyMgICA4MDB4NjAwLCA2MCBIeiwgTm9uLUludGVybGFjZWQgKDQwLjAwIE1IeiBkb3RjbG9jaykKKyMKKyMgICAgICAgICAgICAgICBIb3Jpem9udGFsICBWZXJ0aWNhbAorIyAgIFJlc29sdXRpb24gICAgICA4MDAgICAgIDYwMAorIyAgIFNjYW4gRnJlcXVlbmN5ICAgICAgMzcuODc5IGtIeiAgNjAuMzIgSHoKKyMgICBTeW5jIFdpZHRoICAgICAgMy4yMDAgdXMgICAgMC4xMDYgbXMKKyMgICAgICAgICAgICAgICAxNiBjaGFycyAgICA0IGxpbmVzCisjICAgRnJvbnQgUG9yY2ggICAgIDEuMDAwIHVzICAgIDAuMDI2IG1zCisjICAgICAgICAgICAgICAgNSBjaGFycyAgICAgMSBsaW5lcworIyAgIEJhY2sgUG9yY2ggICAgICAyLjIwMCB1cyAgICAwLjYwNyBtcworIyAgICAgICAgICAgICAgIDExIGNoYXJzICAgIDIzIGxpbmVzCisjICAgQWN0aXZlIFRpbWUgICAgIDIwLjAwMCB1cyAgIDE1Ljg0MCBtcworIyAgICAgICAgICAgICAgIDEwMCBjaGFycyAgIDYwMCBsaW5lcworIyAgIEJsYW5rIFRpbWUgICAgICA2LjQwMCB1cyAgICAwLjczOSBtcworIyAgICAgICAgICAgICAgIDMyIGNoYXJzICAgIDI4IGxpbmVzCisjICAgUG9sYXJpdHkgICAgICAgIHBvc2l0aXZlICAgIHBvc2l0aXZlCisjCisgICAgbW9kZSAiODAweDYwMC02MCIKKyMgRDogNDAuMDAgTUh6LCBIOiAzNy44Nzkga0h6LCBWOiA2MC4zMiBIegorICAgIGdlb21ldHJ5IDgwMCA2MDAgODAwIDYwMCAzMgorICAgIHRpbWluZ3MgMjUwMDAgODggNDAgMjMgMSAxMjggNCBoc3luYyBoaWdoIHZzeW5jIGhpZ2ggZW5kbW9kZQorIworIyAgIDgwMHg2MDAsIDc1IEh6LCBOb24tSW50ZXJsYWNlZCAoNDkuNTAgTUh6IGRvdGNsb2NrKQorIworIyAgICAgICAgICAgICAgIEhvcml6b250YWwgIFZlcnRpY2FsCisjICAgUmVzb2x1dGlvbiAgICAgIDgwMCAgICAgNjAwCisjICAgU2NhbiBGcmVxdWVuY3kgICAgICA0Ni44NzUga0h6ICA3NS4wMCBIegorIyAgIFN5bmMgV2lkdGggICAgICAxLjYxNiB1cyAgICAwLjA2NCBtcworIyAgICAgICAgICAgICAgIDEwIGNoYXJzICAgIDMgbGluZXMKKyMgICBGcm9udCBQb3JjaCAgICAgMC4zMjMgdXMgICAgMC4wMjEgbXMKKyMgICAgICAgICAgICAgICAyIGNoYXJzICAgICAxIGxpbmVzCisjICAgQmFjayBQb3JjaCAgICAgIDMuMjMyIHVzICAgIDAuNDQ4IG1zCisjICAgICAgICAgICAgICAgMjAgY2hhcnMgICAgMjEgbGluZXMKKyMgICBBY3RpdmUgVGltZSAgICAgMTYuMTYyIHVzICAgMTIuODAwIG1zCisjICAgICAgICAgICAgICAgMTAwIGNoYXJzICAgNjAwIGxpbmVzCisjICAgQmxhbmsgVGltZSAgICAgIDUuMTcyIHVzICAgIDAuNTMzIG1zCisjICAgICAgICAgICAgICAgMzIgY2hhcnMgICAgMjUgbGluZXMKKyMgICBQb2xhcml0eSAgICAgICAgcG9zaXRpdmUgICAgcG9zaXRpdmUKKyMKKyAgICBtb2RlICI4MDB4NjAwLTc1IgorIyBEOiA0OS41MCBNSHosIEg6IDQ2Ljg3NSBrSHosIFY6IDc1LjAwIEh6CisgICAgZ2VvbWV0cnkgODAwIDYwMCA4MDAgNjAwIDMyCisgICAgdGltaW5ncyAyMDIwMyAxNjAgMTYgMjEgMSA4MCAzIGhzeW5jIGhpZ2ggdnN5bmMgaGlnaCBlbmRtb2RlCisjCisjICAgODAweDYwMCwgODUgSHosIE5vbi1JbnRlcmxhY2VkICg1Ni4yNSBNSHogZG90Y2xvY2spCisjCisjICAgICAgICAgICAgICAgSG9yaXpvbnRhbCAgVmVydGljYWwKKyMgICBSZXNvbHV0aW9uICAgICAgODAwICAgICA2MDAKKyMgICBTY2FuIEZyZXF1ZW5jeSAgICAgIDUzLjY3NCBrSHogIDg1LjA2MSBIegorIyAgIFN5bmMgV2lkdGggICAgICAxLjEzOCB1cyAgICAwLjA1NiBtcworIyAgICAgICAgICAgICAgIDggY2hhcnMgICAgIDMgbGluZXMKKyMgICBGcm9udCBQb3JjaCAgICAgMC41NjkgdXMgICAgMC4wMTkgbXMKKyMgICAgICAgICAgICAgICA0IGNoYXJzICAgICAxIGxpbmVzCisjICAgQmFjayBQb3JjaCAgICAgIDIuNzAyIHVzICAgIDAuNTAzIG1zCisjICAgICAgICAgICAgICAgMTkgY2hhcnMgICAgMjcgbGluZXMKKyMgICBBY3RpdmUgVGltZSAgICAgMTQuMjIyIHVzICAgMTEuMTc5IG1zCisjICAgICAgICAgICAgICAgMTAwIGNoYXJzICAgNjAwIGxpbmVzCisjICAgQmxhbmsgVGltZSAgICAgIDQuNDA5IHVzICAgIDAuNTc4IG1zCisjICAgICAgICAgICAgICAgMzEgY2hhcnMgICAgMzEgbGluZXMKKyMgICBQb2xhcml0eSAgICAgICAgcG9zaXRpdmUgICAgcG9zaXRpdmUKKyMKKyAgICBtb2RlICI4MDB4NjAwLTg1IgorIyBEOiA1Ni4yNSBNSHosIEg6IDUzLjY3NCBrSHosIFY6IDg1LjA2MSBIegorICAgIGdlb21ldHJ5IDgwMCA2MDAgODAwIDYwMCAzMgorICAgIHRpbWluZ3MgMTc3NzcgMTUyIDMyIDI3IDEgNjQgMyBoc3luYyBoaWdoIHZzeW5jIGhpZ2ggZW5kbW9kZQorIworIyAgIDgwMHg2MDAsIDEwMCBIeiwgTm9uLUludGVybGFjZWQgKDY3LjUwIE1IeiBkb3RjbG9jaykKKyMKKyMgICAgICAgICAgICAgICBIb3Jpem9udGFsICBWZXJ0aWNhbAorIyAgIFJlc29sdXRpb24gICAgICA4MDAgICAgIDYwMAorIyAgIFNjYW4gRnJlcXVlbmN5ICAgICAgNjIuNTAwIGtIeiAgMTAwLjAwIEh6CisjICAgU3luYyBXaWR0aCAgICAgIDAuOTQ4IHVzICAgIDAuMDY0IG1zCisjICAgICAgICAgICAgICAgOCBjaGFycyAgICAgNCBsaW5lcworIyAgIEZyb250IFBvcmNoICAgICAwLjAwMCB1cyAgICAwLjExMiBtcworIyAgICAgICAgICAgICAgIDAgY2hhcnMgICAgIDcgbGluZXMKKyMgICBCYWNrIFBvcmNoICAgICAgMy4yMDAgdXMgICAgMC4yMjQgbXMKKyMgICAgICAgICAgICAgICAyNyBjaGFycyAgICAxNCBsaW5lcworIyAgIEFjdGl2ZSBUaW1lICAgICAxMS44NTIgdXMgICA5LjYwMCBtcworIyAgICAgICAgICAgICAgIDEwMCBjaGFycyAgIDYwMCBsaW5lcworIyAgIEJsYW5rIFRpbWUgICAgICA0LjE0OCB1cyAgICAwLjQwMCBtcworIyAgICAgICAgICAgICAgIDM1IGNoYXJzICAgIDI1IGxpbmVzCisjICAgUG9sYXJpdHkgICAgICAgIHBvc2l0aXZlICAgIHBvc2l0aXZlCisjCisgICAgbW9kZSAiODAweDYwMC0xMDAiCisjIEQ6IDY3LjUwIE1IeiwgSDogNjIuNTAwIGtIeiwgVjogMTAwLjAwIEh6CisgICAgZ2VvbWV0cnkgODAwIDYwMCA4MDAgNjAwIDMyCisgICAgdGltaW5ncyAxNDY2NyAyMTYgMCAxNCA3IDY0IDQgaHN5bmMgaGlnaCB2c3luYyBoaWdoIGVuZG1vZGUKKyMKKyMgICA4MDB4NjAwLCAxMjAgSHosIE5vbi1JbnRlcmxhY2VkICg4My45NTAgTUh6IGRvdGNsb2NrKQorIworIyAgICAgICAgICAgICAgIEhvcml6b250YWwgIFZlcnRpY2FsCisjICAgUmVzb2x1dGlvbiAgICAgIDgwMCAgICAgNjAwCisjICAgU2NhbiBGcmVxdWVuY3kgIDc3LjE2MCBrSHogIDEyMC4wMCBIegorIyAgIFN5bmMgV2lkdGggICAgICAxLjA0OCB1cyAgICAwLjAzOSBtcworIyAgICAgICAgICAgICAgIDExIGNoYXJzICAgIDMgbGluZXMKKyMgICBGcm9udCBQb3JjaCAgICAgMC42NjcgdXMgICAgMC4wMTMgbXMKKyMgICAgICAgICAgICAgICA3IGNoYXJzICAgICAxIGxpbmVzCisjICAgQmFjayBQb3JjaCAgICAgIDEuNzE1IHVzICAgIDAuNTA3IG1zCisjICAgICAgICAgICAgICAgMTggY2hhcnMgICAgMzkgbGluZXMKKyMgICBBY3RpdmUgVGltZSAgICAgOS41MjkgdXMgICAgNy43NzYgbXMKKyMgICAgICAgICAgICAgICAxMDAgY2hhcnMgICA2MDAgbGluZXMKKyMgICBCbGFuayBUaW1lICAgICAgMy40MzEgdXMgICAgMC41NTcgbXMKKyMgICAgICAgICAgICAgICAzNiBjaGFycyAgICA0MyBsaW5lcworIyAgIFBvbGFyaXR5ICAgICAgICBwb3NpdGl2ZSAgICBwb3NpdGl2ZQorIworICAgIG1vZGUgIjgwMHg2MDAtMTIwIgorIyBEOiA4My45NTAgTUh6LCBIOiA3Ny4xNjAga0h6LCBWOiAxMjAuMDAgSHoKKyAgICBnZW9tZXRyeSA4MDAgNjAwIDgwMCA2MDAgMzIKKyAgICB0aW1pbmdzIDExOTEyIDE0NCA1NiAzOSAxIDg4IDMgaHN5bmMgaGlnaCB2c3luYyBoaWdoIGVuZG1vZGUKKyMKKyMgICA4NDh4NDgwLCA2MCBIeiwgTm9uLUludGVybGFjZWQgKDMxLjQ5MCBNSHogZG90Y2xvY2spCisjCisjICAgICAgICAgICAgICAgSG9yaXpvbnRhbCAgVmVydGljYWwKKyMgICBSZXNvbHV0aW9uICAgICAgODQ4ICAgICA0ODAKKyMgICBTY2FuIEZyZXF1ZW5jeSAgMjkuODIwIGtIeiAgNjAuMDAgSHoKKyMgICBTeW5jIFdpZHRoICAgICAgMi43OTUgdXMgICAgMC4wOTkgbXMKKyMgICAgICAgICAgICAgICAxMSBjaGFycyAgICAzIGxpbmVzCisjICAgRnJvbnQgUG9yY2ggICAgIDAuNTA4IHVzICAgIDAuMDMzIG1zCisjICAgICAgICAgICAgICAgMiBjaGFycyAgICAgMSBsaW5lcworIyAgIEJhY2sgUG9yY2ggICAgICAzLjMwMyB1cyAgICAwLjQyOSBtcworIyAgICAgICAgICAgICAgIDEzIGNoYXJzICAgIDEzIGxpbmVzCisjICAgQWN0aXZlIFRpbWUgICAgIDI2LjkyOSB1cyAgIDE2LjA5NyBtcworIyAgICAgICAgICAgICAgIDEwNiBjaGFycyAgIDQ4MCBsaW5lcworIyAgIEJsYW5rIFRpbWUgICAgICA2LjYwNSB1cyAgICAwLjU3MCBtcworIyAgICAgICAgICAgICAgIDI2IGNoYXJzICAgIDE3IGxpbmVzCisjICAgUG9sYXJpdHkgICAgICAgIHBvc2l0aXZlICAgIHBvc2l0aXZlCisjCisgICAgbW9kZSAiODQ4eDQ4MC02MCIKKyMgRDogMzEuNTAwIE1IeiwgSDogMjkuODMwIGtIeiwgVjogNjAuMDAgSHoKKyAgICBnZW9tZXRyeSA4NDggNDgwIDg0OCA0ODAgMzIKKyAgICB0aW1pbmdzIDMxNzQ2IDEwNCAyNCAxMiAzIDgwIDUgaHN5bmMgaGlnaCB2c3luYyBoaWdoIGVuZG1vZGUKKyMKKyMgICA4NTZ4NDgwLCA2MCBIeiwgTm9uLUludGVybGFjZWQgKDMxLjcyOCBNSHogZG90Y2xvY2spCisjCisjICAgICAgICAgICAgICAgSG9yaXpvbnRhbCAgVmVydGljYWwKKyMgICBSZXNvbHV0aW9uICAgICAgODU2ICAgICA0ODAKKyMgICBTY2FuIEZyZXF1ZW5jeSAgMjkuODIwIGtIeiAgNjAuMDAgSHoKKyMgICBTeW5jIFdpZHRoICAgICAgMi43NzQgdXMgICAgMC4wOTkgbXMKKyMgICAgICAgICAgICAgICAxMSBjaGFycyAgICAzIGxpbmVzCisjICAgRnJvbnQgUG9yY2ggICAgIDAuNTA0IHVzICAgIDAuMDMzIG1zCisjICAgICAgICAgICAgICAgMiBjaGFycyAgICAgMSBsaW5lcworIyAgIEJhY2sgUG9yY2ggICAgICAzLjcyOCB1cyAgICAwLjQyOSBtcworIyAgICAgICAgICAgICAgIDEzIGNoYXJzICAgIDEzIGxpbmVzCisjICAgQWN0aXZlIFRpbWUgICAgIDI2Ljk3OSB1cyAgIDE2LjA5NyBtcworIyAgICAgICAgICAgICAgIDEwNyBjaGFycyAgIDQ4MCBsaW5lcworIyAgIEJsYW5rIFRpbWUgICAgICA2LjU1NiB1cyAgICAwLjU3MCBtcworIyAgICAgICAgICAgICAgIDI2IGNoYXJzICAgIDE3IGxpbmVzCisjICAgUG9sYXJpdHkgICAgICAgIHBvc2l0aXZlICAgIHBvc2l0aXZlCisjCisgICAgbW9kZSAiODU2eDQ4MC02MCIKKyMgRDogMzEuNzI4IE1IeiwgSDogMjkuODIwIGtIeiwgVjogNjAuMDAgSHoKKyAgICBnZW9tZXRyeSA4NTYgNDgwIDg1NiA0ODAgMzIKKyAgICB0aW1pbmdzIDMxNTE4IDEwNCAxNiAxMyAxIDg4IDMKKyAgICBoc3luYyBoaWdoIHZzeW5jIGhpZ2ggZW5kbW9kZSBtb2RlICI5NjB4NjAwLTYwIgorIyBEOiA0NS4yNTAgTUh6LCBIOiAzNy4yMTIga0h6LCBWOiA2MC4wMCBIegorICAgIGdlb21ldHJ5IDk2MCA2MDAgOTYwIDYwMCAzMiB0aW1pbmdzIDIyMDk5IDEyOCAzMiAxNSAzIDk2IDYgZW5kbW9kZQorIworIyAgIDEwMDB4NjAwLCA2MCBIeiwgTm9uLUludGVybGFjZWQgKDQ4LjA2OCBNSHogZG90Y2xvY2spCisjCisjICAgICAgICAgICAgICAgSG9yaXpvbnRhbCAgVmVydGljYWwKKyMgICBSZXNvbHV0aW9uICAgICAgMTAwMCAgICAgNjAwCisjICAgU2NhbiBGcmVxdWVuY3kgIDM3LjMyMCBrSHogIDYwLjAwIEh6CisjICAgU3luYyBXaWR0aCAgICAgIDIuMTY0IHVzICAgIDAuMDgwIG1zCisjICAgICAgICAgICAgICAgMTMgY2hhcnMgICAgMyBsaW5lcworIyAgIEZyb250IFBvcmNoICAgICAwLjgzMiB1cyAgICAwLjAyNyBtcworIyAgICAgICAgICAgICAgIDUgY2hhcnMgICAgIDEgbGluZXMKKyMgICBCYWNrIFBvcmNoICAgICAgMi45OTYgdXMgICAgMC40ODMgbXMKKyMgICAgICAgICAgICAgICAxOCBjaGFycyAgICAxOCBsaW5lcworIyAgIEFjdGl2ZSBUaW1lICAgICAyMC44MDQgdXMgICAxNi4wNzcgbXMKKyMgICAgICAgICAgICAgICAxMjUgY2hhcnMgICA2MDAgbGluZXMKKyMgICBCbGFuayBUaW1lICAgICAgNS45OTEgdXMgICAgMC41ODkgbXMKKyMgICAgICAgICAgICAgICAzNiBjaGFycyAgICAyMiBsaW5lcworIyAgIFBvbGFyaXR5ICAgICAgICBuZWdhdGl2ZSAgICBwb3NpdGl2ZQorIworICAgIG1vZGUgIjEwMDB4NjAwLTYwIgorIyBEOiA0OC4wNjggTUh6LCBIOiAzNy4zMjAga0h6LCBWOiA2MC4wMCBIegorICAgIGdlb21ldHJ5IDEwMDAgNjAwIDEwMDAgNjAwIDMyCisgICAgdGltaW5ncyAyMDgzNCAxNDQgNDAgMTggMSAxMDQgMyBlbmRtb2RlIG1vZGUgIjEwMjR4NTc2LTYwIgorIyBEOiA0Ni45OTYgTUh6LCBIOiAzNS44MjAga0h6LCBWOiA2MC4wMCBIegorICAgIGdlb21ldHJ5IDEwMjQgNTc2IDEwMjQgNTc2IDMyCisgICAgdGltaW5ncyAyMTI3OCAxNDQgNDAgMTcgMSAxMDQgMyBlbmRtb2RlIG1vZGUgIjEwMjR4NjAwLTYwIgorIyBEOiA0OC45NjQgTUh6LCBIOiAzNy4zMjAga0h6LCBWOiA2MC4wMCBIegorICAgIGdlb21ldHJ5IDEwMjQgNjAwIDEwMjQgNjAwIDMyCisgICAgdGltaW5ncyAyMDQ2MSAxNDQgNDAgMTggMSAxMDQgMyBlbmRtb2RlIG1vZGUgIjEwODh4NjEyLTYwIgorIyBEOiA1Mi45NTIgTUh6LCBIOiAzOC4wNDAga0h6LCBWOiA2MC4wMCBIegorICAgIGdlb21ldHJ5IDEwODggNjEyIDEwODggNjEyIDMyIHRpbWluZ3MgMTg4NzcgMTUyIDQ4IDE2IDMgMTA0IDUgZW5kbW9kZQorIworIyAgIDEwMjR4NTEyLCA2MCBIeiwgTm9uLUludGVybGFjZWQgKDQxLjI5MSBNSHogZG90Y2xvY2spCisjCisjICAgICAgICAgICAgICAgSG9yaXpvbnRhbCAgVmVydGljYWwKKyMgICBSZXNvbHV0aW9uICAgICAgMTAyNCAgICA1MTIKKyMgICBTY2FuIEZyZXF1ZW5jeSAgMzEuODYwIGtIeiAgNjAuMDAgSHoKKyMgICBTeW5jIFdpZHRoICAgICAgMi41MTkgdXMgICAgMC4wOTQgbXMKKyMgICAgICAgICAgICAgICAxMyBjaGFycyAgICAzIGxpbmVzCisjICAgRnJvbnQgUG9yY2ggICAgIDAuNzc1IHVzICAgIDAuMDMxIG1zCisjICAgICAgICAgICAgICAgNCBjaGFycyAgICAgMSBsaW5lcworIyAgIEJhY2sgUG9yY2ggICAgICAzLjI5NCB1cyAgICAwLjQ2NSBtcworIyAgICAgICAgICAgICAgIDE3IGNoYXJzICAgIDE1IGxpbmVzCisjICAgQWN0aXZlIFRpbWUgICAgIDI0LjgwMCB1cyAgIDE2LjA3MCBtcworIyAgICAgICAgICAgICAgIDEyOCBjaGFycyAgIDUxMiBsaW5lcworIyAgIEJsYW5rIFRpbWUgICAgICA2LjU4NyB1cyAgICAwLjU5NiBtcworIyAgICAgICAgICAgICAgIDM0IGNoYXJzICAgIDE5IGxpbmVzCisjICAgUG9sYXJpdHkgICAgICAgIHBvc2l0aXZlICAgIHBvc2l0aXZlCisjCisgICAgbW9kZSAiMTAyNHg1MTItNjAiCisjIEQ6IDQxLjI5MSBNSHosIEg6IDMxLjg2MCBrSHosIFY6IDYwLjAwIEh6CisgICAgZ2VvbWV0cnkgMTAyNCA1MTIgMTAyNCA1MTIgMzIKKyAgICB0aW1pbmdzIDI0MjE4IDEyNiAzMiAxNSAxIDEwNCAzIGhzeW5jIGhpZ2ggdnN5bmMgaGlnaCBlbmRtb2RlCisjCisjICAgMTAyNHg2MDAsIDYwIEh6LCBOb24tSW50ZXJsYWNlZCAoNDguODc1IE1IeiBkb3RjbG9jaykKKyMKKyMgICAgICAgICAgICAgICAgICAgICBIb3Jpem9udGFsICBWZXJ0aWNhbAorIyAgIFJlc29sdXRpb24gICAgICAgICAgMTAyNCAgICAgICAgNzY4CisjICAgU2NhbiBGcmVxdWVuY3kgICAgICAzNy4yNTIga0h6ICA2MC4wMCBIegorIyAgIFN5bmMgV2lkdGggICAgICAgICAgMi4xMjggdXMgICAgODAuNTMydXMKKyMgICAgICAgICAgICAgICAgICAgICAgIDEzIGNoYXJzICAgIDMgbGluZXMKKyMgICBGcm9udCBQb3JjaCAgICAgICAgMC44MTggdXMgICAgIDI2Ljg0NCB1cworIyAgICAgICAgICAgICAgICAgICAgICAgNSBjaGFycyAgICAgMSBsaW5lcworIyAgIEJhY2sgUG9yY2ggICAgICAgICAgMi45NDYgdXMgICAgNDgzLjE5MiB1cworIyAgICAgICAgICAgICAgICAgICAgICAgMTggY2hhcnMgICAgMTggbGluZXMKKyMgICBBY3RpdmUgVGltZSAgICAgICAgIDIwLjk1MSB1cyAgIDE2LjY5NyBtcworIyAgICAgICAgICAgICAgICAgICAgICAgMTI4IGNoYXJzICAgNjIyIGxpbmVzCisjICAgQmxhbmsgVGltZSAgICAgICAgICA1Ljg5MyB1cyAgICAwLjU5MSBtcworIyAgICAgICAgICAgICAgICAgICAgICAgMzYgY2hhcnMgICAgMjIgbGluZXMKKyMgICBQb2xhcml0eSAgICAgICAgICAgIG5lZ2F0aXZlICAgIHBvc2l0aXZlCisjCisjbW9kZSAiMTAyNHg2MDAtNjAiCisjICAgICAjIEQ6IDQ4Ljg3NSBNSHosIEg6IDM3LjI1MiBrSHosIFY6IDYwLjAwIEh6CisjICAgICBnZW9tZXRyeSAxMDI0IDYwMCAxMDI0IDYwMCAzMgorIyAgICB0aW1pbmdzIDIwNDYwICAxNDQgNDAgMTggMSAxMDQgIDMKKyMgZW5kbW9kZQorIworIyAgIDEwMjR4NzY4LCA2MCBIeiwgTm9uLUludGVybGFjZWQgKDY1LjAwIE1IeiBkb3RjbG9jaykKKyMKKyMgICAgICAgICAgICAgICBIb3Jpem9udGFsICBWZXJ0aWNhbAorIyAgIFJlc29sdXRpb24gICAgICAxMDI0ICAgICAgICA3NjgKKyMgICBTY2FuIEZyZXF1ZW5jeSAgICAgIDQ4LjM2MyBrSHogIDYwLjAwIEh6CisjICAgU3luYyBXaWR0aCAgICAgIDIuMDkyIHVzICAgIDAuMTI0IG1zCisjICAgICAgICAgICAgICAgMTcgY2hhcnMgICAgNiBsaW5lcworIyAgIEZyb250IFBvcmNoICAgICAwLjM2OSB1cyAgICAwLjA2MiBtcworIyAgICAgICAgICAgICAgIDMgY2hhcnMgICAgIDMgbGluZXMKKyMgICBCYWNrIFBvcmNoICAgICAgMi40NjIgdXMgICAgMC42MDEgbXMKKyMgICAgICAgICAgICAgICAyMCBjaGFycyAgICAyOSBsaW5lcworIyAgIEFjdGl2ZSBUaW1lICAgICAxNS43NTQgdXMgICAxNS44ODAgbXMKKyMgICAgICAgICAgICAgICAxMjggY2hhcnMgICA3NjggbGluZXMKKyMgICBCbGFuayBUaW1lICAgICAgNC45MjMgdXMgICAgMC43ODYgbXMKKyMgICAgICAgICAgICAgICA0MCBjaGFycyAgICAzOCBsaW5lcworIyAgIFBvbGFyaXR5ICAgICAgICBuZWdhdGl2ZSAgICBuZWdhdGl2ZQorIworICAgIG1vZGUgIjEwMjR4NzY4LTYwIgorIyBEOiA2NS4wMCBNSHosIEg6IDQ4LjM2MyBrSHosIFY6IDYwLjAwIEh6CisgICAgZ2VvbWV0cnkgMTAyNCA3NjggMTAyNCA3NjggMzIgdGltaW5ncyAxNTM4NSAxNjAgMjQgMjkgMyAxMzYgNiBlbmRtb2RlCisjCisjICAgMTAyNHg3NjgsIDc1IEh6LCBOb24tSW50ZXJsYWNlZCAoNzguNzUgTUh6IGRvdGNsb2NrKQorIworIyAgICAgICAgICAgICAgIEhvcml6b250YWwgIFZlcnRpY2FsCisjICAgUmVzb2x1dGlvbiAgICAgIDEwMjQgICAgICAgIDc2OAorIyAgIFNjYW4gRnJlcXVlbmN5ICAgICAgNjAuMDIzIGtIeiAgNzUuMDMgSHoKKyMgICBTeW5jIFdpZHRoICAgICAgMS4yMTkgdXMgICAgMC4wNTAgbXMKKyMgICAgICAgICAgICAgICAxMiBjaGFycyAgICAzIGxpbmVzCisjICAgRnJvbnQgUG9yY2ggICAgIDAuMjAzIHVzICAgIDAuMDE3IG1zCisjICAgICAgICAgICAgICAgMiBjaGFycyAgICAgMSBsaW5lcworIyAgIEJhY2sgUG9yY2ggICAgICAyLjIzNSB1cyAgICAwLjQ2NiBtcworIyAgICAgICAgICAgICAgIDIyIGNoYXJzICAgIDI4IGxpbmVzCisjICAgQWN0aXZlIFRpbWUgICAgIDEzLjAwMyB1cyAgIDEyLjc5NSBtcworIyAgICAgICAgICAgICAgIDEyOCBjaGFycyAgIDc2OCBsaW5lcworIyAgIEJsYW5rIFRpbWUgICAgICAzLjY1NyB1cyAgICAwLjUzMyBtcworIyAgICAgICAgICAgICAgIDM2IGNoYXJzICAgIDMyIGxpbmVzCisjICAgUG9sYXJpdHkgICAgICAgIHBvc2l0aXZlICAgIHBvc2l0aXZlCisjCisgICAgbW9kZSAiMTAyNHg3NjgtNzUiCisjIEQ6IDc4Ljc1IE1IeiwgSDogNjAuMDIzIGtIeiwgVjogNzUuMDMgSHoKKyAgICBnZW9tZXRyeSAxMDI0IDc2OCAxMDI0IDc2OCAzMgorICAgIHRpbWluZ3MgMTI2OTkgMTc2IDE2IDI4IDEgOTYgMyBoc3luYyBoaWdoIHZzeW5jIGhpZ2ggZW5kbW9kZQorIworIyAgIDEwMjR4NzY4LCA4NSBIeiwgTm9uLUludGVybGFjZWQgKDk0LjUwIE1IeiBkb3RjbG9jaykKKyMKKyMgICAgICAgICAgICAgICBIb3Jpem9udGFsICBWZXJ0aWNhbAorIyAgIFJlc29sdXRpb24gICAgICAxMDI0ICAgICAgICA3NjgKKyMgICBTY2FuIEZyZXF1ZW5jeSAgNjguNjc3IGtIeiAgODUuMDAgSHoKKyMgICBTeW5jIFdpZHRoICAgICAgMS4wMTYgdXMgICAgMC4wNDQgbXMKKyMgICAgICAgICAgICAgICAxMiBjaGFycyAgICAzIGxpbmVzCisjICAgRnJvbnQgUG9yY2ggICAgIDAuNTA4IHVzICAgIDAuMDE1IG1zCisjICAgICAgICAgICAgICAgNiBjaGFycyAgICAgMSBsaW5lcworIyAgIEJhY2sgUG9yY2ggICAgICAyLjIwMSB1cyAgICAwLjUyNCBtcworIyAgICAgICAgICAgICAgIDI2IGNoYXJzICAgIDM2IGxpbmVzCisjICAgQWN0aXZlIFRpbWUgICAgIDEwLjgzNiB1cyAgIDExLjE4MyBtcworIyAgICAgICAgICAgICAgIDEyOCBjaGFycyAgIDc2OCBsaW5lcworIyAgIEJsYW5rIFRpbWUgICAgICAzLjcyNSB1cyAgICAwLjU4MiBtcworIyAgICAgICAgICAgICAgIDQ0IGNoYXJzICAgIDQwIGxpbmVzCisjICAgUG9sYXJpdHkgICAgICAgIHBvc2l0aXZlICAgIHBvc2l0aXZlCisjCisgICAgbW9kZSAiMTAyNHg3NjgtODUiCisjIEQ6IDk0LjUwIE1IeiwgSDogNjguNjc3IGtIeiwgVjogODUuMDAgSHoKKyAgICBnZW9tZXRyeSAxMDI0IDc2OCAxMDI0IDc2OCAzMgorICAgIHRpbWluZ3MgMTA1ODIgMjA4IDQ4IDM2IDEgOTYgMyBoc3luYyBoaWdoIHZzeW5jIGhpZ2ggZW5kbW9kZQorIworIyAgIDEwMjR4NzY4LCAxMDAgSHosIE5vbi1JbnRlcmxhY2VkICgxMTAuMCBNSHogZG90Y2xvY2spCisjCisjICAgICAgICAgICAgICAgSG9yaXpvbnRhbCAgVmVydGljYWwKKyMgICBSZXNvbHV0aW9uICAgICAgMTAyNCAgICAgICAgNzY4CisjICAgU2NhbiBGcmVxdWVuY3kgICAgICA3OS4wMjMga0h6ICA5OS43OCBIegorIyAgIFN5bmMgV2lkdGggICAgICAwLjgwMCB1cyAgICAwLjEwMSBtcworIyAgICAgICAgICAgICAgIDExIGNoYXJzICAgIDggbGluZXMKKyMgICBGcm9udCBQb3JjaCAgICAgMC4wMDAgdXMgICAgMC4wMDAgbXMKKyMgICAgICAgICAgICAgICAwIGNoYXJzICAgICAwIGxpbmVzCisjICAgQmFjayBQb3JjaCAgICAgIDIuNTQ1IHVzICAgIDAuMjAyIG1zCisjICAgICAgICAgICAgICAgMzUgY2hhcnMgICAgMTYgbGluZXMKKyMgICBBY3RpdmUgVGltZSAgICAgOS4zMDkgdXMgICAgOS43MTkgbXMKKyMgICAgICAgICAgICAgICAxMjggY2hhcnMgICA3NjggbGluZXMKKyMgICBCbGFuayBUaW1lICAgICAgMy4zNDUgdXMgICAgMC4zMDQgbXMKKyMgICAgICAgICAgICAgICA0NiBjaGFycyAgICAyNCBsaW5lcworIyAgIFBvbGFyaXR5ICAgICAgICBuZWdhdGl2ZSAgICBuZWdhdGl2ZQorIworICAgIG1vZGUgIjEwMjR4NzY4LTEwMCIKKyMgRDogMTEzLjMgTUh6LCBIOiA3OS4wMjMga0h6LCBWOiA5OS43OCBIegorICAgIGdlb21ldHJ5IDEwMjQgNzY4IDEwMjQgNzY4IDMyCisgICAgdGltaW5ncyA4ODI1IDI4MCAwIDE2IDAgODggOCBlbmRtb2RlIG1vZGUgIjExNTJ4NzIwLTYwIgorIyBEOiA2Ni43NTAgTUh6LCBIOiA0NC44NTkga0h6LCBWOiA2MC4wMCBIegorICAgIGdlb21ldHJ5IDExNTIgNzIwIDExNTIgNzIwIDMyIHRpbWluZ3MgMTQ5ODEgMTY4IDU2IDE5IDMgMTEyIDYgZW5kbW9kZQorIworIyAgIDExNTJ4ODY0LCA3NSBIeiwgTm9uLUludGVybGFjZWQgKDExMC4wIE1IeiBkb3RjbG9jaykKKyMKKyMgICAgICAgICAgICAgICBIb3Jpem9udGFsICBWZXJ0aWNhbAorIyAgIFJlc29sdXRpb24gICAgICAxMTUyICAgICAgICA4NjQKKyMgICBTY2FuIEZyZXF1ZW5jeSAgICAgIDc1LjEzNyBrSHogIDc0Ljk5IEh6CisjICAgU3luYyBXaWR0aCAgICAgIDEuMzA5IHVzICAgIDAuMTA2IG1zCisjICAgICAgICAgICAgICAgMTggY2hhcnMgICAgOCBsaW5lcworIyAgIEZyb250IFBvcmNoICAgICAwLjI0NSB1cyAgICAwLjU5OSBtcworIyAgICAgICAgICAgICAgIDMgY2hhcnMgICAgIDQ1IGxpbmVzCisjICAgQmFjayBQb3JjaCAgICAgIDEuMjgyIHVzICAgIDEuMTMyIG1zCisjICAgICAgICAgICAgICAgMTggY2hhcnMgICAgODUgbGluZXMKKyMgICBBY3RpdmUgVGltZSAgICAgMTAuNDczIHVzICAgMTEuNDk5IG1zCisjICAgICAgICAgICAgICAgMTQ0IGNoYXJzICAgODY0IGxpbmVzCisjICAgQmxhbmsgVGltZSAgICAgIDIuODM2IHVzICAgIDEuODM3IG1zCisjICAgICAgICAgICAgICAgMzkgY2hhcnMgICAgMTM4IGxpbmVzCisjICAgUG9sYXJpdHkgICAgICAgIHBvc2l0aXZlICAgIHBvc2l0aXZlCisjCisgICAgbW9kZSAiMTE1Mng4NjQtNzUiCisjIEQ6IDExMC4wIE1IeiwgSDogNzUuMTM3IGtIeiwgVjogNzQuOTkgSHoKKyAgICBnZW9tZXRyeSAxMTUyIDg2NCAxMTUyIDg2NCAzMgorICAgIHRpbWluZ3MgOTI1OSAxNDQgMjQgODUgNDUgMTQ0IDgKKyAgICBoc3luYyBoaWdoIHZzeW5jIGhpZ2ggZW5kbW9kZSBtb2RlICIxMjAweDcyMC02MCIKKyMgRDogNzAuMTg0IE1IeiwgSDogNDQuNzYwIGtIeiwgVjogNjAuMDAgSHoKKyAgICBnZW9tZXRyeSAxMjAwIDcyMCAxMjAwIDcyMCAzMgorICAgIHRpbWluZ3MgMTQyNTMgMTg0IDI4IDIyIDEgMTI4IDMgZW5kbW9kZSBtb2RlICIxMjgweDYwMC02MCIKKyMgRDogNjEuNTAzIE1IeiwgSDogMzcuMzIwIGtIeiwgVjogNjAuMDAgSHoKKyAgICBnZW9tZXRyeSAxMjgwIDYwMCAxMjgwIDYwMCAzMgorICAgIHRpbWluZ3MgMTYyNjAgMTg0IDI4IDE4IDEgMTI4IDMgZW5kbW9kZSBtb2RlICIxMjgweDcyMC01MCIKKyMgRDogNjAuNDY2IE1IeiwgSDogMzcuMDUwIGtIeiwgVjogNTAuMDAgSHoKKyAgICBnZW9tZXRyeSAxMjgwIDcyMCAxMjgwIDcyMCAzMgorICAgIHRpbWluZ3MgMTY1MzggMTc2IDQ4IDE3IDEgMTI4IDMgZW5kbW9kZSBtb2RlICIxMjgweDc2OC01MCIKKyMgRDogNjUuMTc4IE1IeiwgSDogMzkuNTUwIGtIeiwgVjogNTAuMDAgSHoKKyAgICBnZW9tZXRyeSAxMjgwIDc2OCAxMjgwIDc2OCAzMiB0aW1pbmdzIDE1MzQyIDE4NCAyOCAxOSAxIDEyOCAzIGVuZG1vZGUKKyMKKyMgICAxMjgweDc2OCwgNjAgSHosIE5vbi1JbnRlcmxhY2VkICg4MC4xMzYgTUh6IGRvdGNsb2NrKQorIworIyAgICAgICAgICAgICAgIEhvcml6b250YWwgIFZlcnRpY2FsCisjICAgUmVzb2x1dGlvbiAgICAgIDEyODAgICAgNzY4CisjICAgU2NhbiBGcmVxdWVuY3kgIDQ3LjcwMCBrSHogIDYwLjAwIEh6CisjICAgU3luYyBXaWR0aCAgICAgIDEuNjk3IHVzICAgIDAuMDYzIG1zCisjICAgICAgICAgICAgICAgMTcgY2hhcnMgICAgMyBsaW5lcworIyAgIEZyb250IFBvcmNoICAgICAwLjc5OSB1cyAgICAwLjAyMSBtcworIyAgICAgICAgICAgICAgIDggY2hhcnMgICAgIDEgbGluZXMKKyMgICBCYWNrIFBvcmNoICAgICAgMi40OTYgdXMgICAgMC40ODMgbXMKKyMgICAgICAgICAgICAgICAyNSBjaGFycyAgICAyMyBsaW5lcworIyAgIEFjdGl2ZSBUaW1lICAgICAxNS45NzMgdXMgICAxNi4xMDEgbXMKKyMgICAgICAgICAgICAgICAxNjAgY2hhcnMgICA3NjggbGluZXMKKyMgICBCbGFuayBUaW1lICAgICAgNC45OTIgdXMgICAgMC41NjYgbXMKKyMgICAgICAgICAgICAgICA1MCBjaGFycyAgICAyNyBsaW5lcworIyAgIFBvbGFyaXR5ICAgICAgICBwb3NpdGl2ZSAgICBwb3NpdGl2ZQorIworICAgIG1vZGUgIjEyODB4NzY4LTYwIgorIyBEOiA4MC4xMyBNSHosIEg6IDQ3LjcwMCBrSHosIFY6IDYwLjAwIEh6CisgICAgZ2VvbWV0cnkgMTI4MCA3NjggMTI4MCA3NjggMzIKKyAgICB0aW1pbmdzIDEyNDgwIDIwMCA0OCAyMyAxIDEyNiAzIGhzeW5jIGhpZ2ggdnN5bmMgaGlnaCBlbmRtb2RlCisjCisjICAgMTI4MHg4MDAsIDYwIEh6LCBOb24tSW50ZXJsYWNlZCAoODMuMzc1IE1IeiBkb3RjbG9jaykKKyMKKyMgICAgICAgICAgICAgICBIb3Jpem9udGFsICBWZXJ0aWNhbAorIyAgIFJlc29sdXRpb24gICAgICAxMjgwICAgIDgwMAorIyAgIFNjYW4gRnJlcXVlbmN5ICA0OS42Mjgga0h6ICA2MC4wMCBIegorIyAgIFN5bmMgV2lkdGggICAgICAxLjYzMSB1cyAgICA2MC40NTAgdXMKKyMgICAgICAgICAgICAgICAgICAgMTcgY2hhcnMgICAgMyBsaW5lcworIyAgIEZyb250IFBvcmNoICAgICAwLjc2OCB1cyAgICAyMC4xNSB1cworIyAgICAgICAgICAgICAgICAgICA4IGNoYXJzICAgICAxIGxpbmVzCisjICAgQmFjayBQb3JjaCAgICAgIDIuMzk5IHVzICAgIDAuNDgzIG1zCisjICAgICAgICAgICAgICAgICAgIDI1IGNoYXJzICAgIDI0IGxpbmVzCisjICAgQWN0aXZlIFRpbWUgICAgIDE1LjM1MiB1cyAgIDE2LjEyMCBtcworIyAgICAgICAgICAgICAgICAgICAxNjAgY2hhcnMgICA4MDAgbGluZXMKKyMgICBCbGFuayBUaW1lICAgICAgNC43OTggdXMgICAgMC41NjQgbXMKKyMgICAgICAgICAgICAgICAgICAgNTAgY2hhcnMgICAgMjggbGluZXMKKyMgICBQb2xhcml0eSAgICAgICAgbmVnYXRpdmUgICAgcG9zaXRpdmUKKyMKKyAgICBtb2RlICIxMjgweDgwMC02MCIKKyMgRDogODMuNTAwIE1IeiwgSDogNDkuNzAyIGtIeiwgVjogNjAuMDAgSHoKKyAgICBnZW9tZXRyeSAxMjgwIDgwMCAxMjgwIDgwMCAzMiB0aW1pbmdzIDExOTk0IDIwMCA3MiAyMiAzIDEyOCA2IGVuZG1vZGUKKyMKKyMgICAxMjgweDk2MCwgNjAgSHosIE5vbi1JbnRlcmxhY2VkICgxMDguMDAgTUh6IGRvdGNsb2NrKQorIworIyAgICAgICAgICAgICAgIEhvcml6b250YWwgIFZlcnRpY2FsCisjICAgUmVzb2x1dGlvbiAgICAgIDEyODAgICAgOTYwCisjICAgU2NhbiBGcmVxdWVuY3kgIDYwLjAwMCBrSHogIDYwLjAwIEh6CisjICAgU3luYyBXaWR0aCAgICAgIDEuMDM3IHVzICAgIDAuMDUwIG1zCisjICAgICAgICAgICAgICAgMTQgY2hhcnMgICAgMyBsaW5lcworIyAgIEZyb250IFBvcmNoICAgICAwLjg4OSB1cyAgICAwLjAxNyBtcworIyAgICAgICAgICAgICAgIDEyIGNoYXJzICAgIDEgbGluZXMKKyMgICBCYWNrIFBvcmNoICAgICAgMi44ODkgdXMgICAgMC42MDAgbXMKKyMgICAgICAgICAgICAgICAzOSBjaGFycyAgICAzNiBsaW5lcworIyAgIEFjdGl2ZSBUaW1lICAgICAxMS44NTIgdXMgICAxNi4wMDAgbXMKKyMgICAgICAgICAgICAgICAxNjAgY2hhcnMgICA5NjAgbGluZXMKKyMgICBCbGFuayBUaW1lICAgICAgNC44MTUgdXMgICAgMC42NjcgbXMKKyMgICAgICAgICAgICAgICA2NSBjaGFycyAgICA0MCBsaW5lcworIyAgIFBvbGFyaXR5ICAgICAgICBwb3NpdGl2ZSAgICBwb3NpdGl2ZQorIworICAgIG1vZGUgIjEyODB4OTYwLTYwIgorIyBEOiAxMDguMDAgTUh6LCBIOiA2MC4wMDAga0h6LCBWOiA2MC4wMCBIegorICAgIGdlb21ldHJ5IDEyODAgOTYwIDEyODAgOTYwIDMyCisgICAgdGltaW5ncyA5MjU5IDMxMiA5NiAzNiAxIDExMiAzIGhzeW5jIGhpZ2ggdnN5bmMgaGlnaCBlbmRtb2RlCisjCisjICAgMTI4MHgxMDI0LCA2MCBIeiwgTm9uLUludGVybGFjZWQgKDEwOC4wMCBNSHogZG90Y2xvY2spCisjCisjICAgICAgICAgICAgICAgSG9yaXpvbnRhbCAgVmVydGljYWwKKyMgICBSZXNvbHV0aW9uICAgICAgMTI4MCAgICAgICAgMTAyNAorIyAgIFNjYW4gRnJlcXVlbmN5ICAgICAgNjMuOTgxIGtIeiAgNjAuMDIgSHoKKyMgICBTeW5jIFdpZHRoICAgICAgMS4wMzcgdXMgICAgMC4wNDcgbXMKKyMgICAgICAgICAgICAgICAxNCBjaGFycyAgICAzIGxpbmVzCisjICAgRnJvbnQgUG9yY2ggICAgIDAuNDQ0IHVzICAgIDAuMDE1IG1zCisjICAgICAgICAgICAgICAgNiBjaGFycyAgICAgMSBsaW5lcworIyAgIEJhY2sgUG9yY2ggICAgICAyLjI5NyB1cyAgICAwLjU5NCBtcworIyAgICAgICAgICAgICAgIDMxIGNoYXJzICAgIDM4IGxpbmVzCisjICAgQWN0aXZlIFRpbWUgICAgIDExLjg1MiB1cyAgIDE2LjAwNSBtcworIyAgICAgICAgICAgICAgIDE2MCBjaGFycyAgIDEwMjQgbGluZXMKKyMgICBCbGFuayBUaW1lICAgICAgMy43NzggdXMgICAgMC42NTYgbXMKKyMgICAgICAgICAgICAgICA1MSBjaGFycyAgICA0MiBsaW5lcworIyAgIFBvbGFyaXR5ICAgICAgICBwb3NpdGl2ZSAgICBwb3NpdGl2ZQorIworICAgIG1vZGUgIjEyODB4MTAyNC02MCIKKyMgRDogMTA4LjAwIE1IeiwgSDogNjMuOTgxIGtIeiwgVjogNjAuMDIgSHoKKyAgICBnZW9tZXRyeSAxMjgwIDEwMjQgMTI4MCAxMDI0IDMyCisgICAgdGltaW5ncyA5MjYwIDI0OCA0OCAzOCAxIDExMiAzIGhzeW5jIGhpZ2ggdnN5bmMgaGlnaCBlbmRtb2RlCisjCisjICAgMTI4MHgxMDI0LCA3NSBIeiwgTm9uLUludGVybGFjZWQgKDEzNS4wMCBNSHogZG90Y2xvY2spCisjCisjICAgICAgICAgICAgICAgSG9yaXpvbnRhbCAgVmVydGljYWwKKyMgICBSZXNvbHV0aW9uICAgICAgMTI4MCAgICAgICAgMTAyNAorIyAgIFNjYW4gRnJlcXVlbmN5ICAgICAgNzkuOTc2IGtIeiAgNzUuMDIgSHoKKyMgICBTeW5jIFdpZHRoICAgICAgMS4wNjcgdXMgICAgMC4wMzggbXMKKyMgICAgICAgICAgICAgICAxOCBjaGFycyAgICAzIGxpbmVzCisjICAgRnJvbnQgUG9yY2ggICAgIDAuMTE5IHVzICAgIDAuMDEyIG1zCisjICAgICAgICAgICAgICAgMiBjaGFycyAgICAgMSBsaW5lcworIyAgIEJhY2sgUG9yY2ggICAgICAxLjgzNyB1cyAgICAwLjQ3NSBtcworIyAgICAgICAgICAgICAgIDMxIGNoYXJzICAgIDM4IGxpbmVzCisjICAgQWN0aXZlIFRpbWUgICAgIDkuNDgxIHVzICAgIDEyLjgwNCBtcworIyAgICAgICAgICAgICAgIDE2MCBjaGFycyAgIDEwMjQgbGluZXMKKyMgICBCbGFuayBUaW1lICAgICAgMy4wMjIgdXMgICAgMC41MjUgbXMKKyMgICAgICAgICAgICAgICA1MSBjaGFycyAgICA0MiBsaW5lcworIyAgIFBvbGFyaXR5ICAgICAgICBwb3NpdGl2ZSAgICBwb3NpdGl2ZQorIworICAgIG1vZGUgIjEyODB4MTAyNC03NSIKKyMgRDogMTM1LjAwIE1IeiwgSDogNzkuOTc2IGtIeiwgVjogNzUuMDIgSHoKKyAgICBnZW9tZXRyeSAxMjgwIDEwMjQgMTI4MCAxMDI0IDMyCisgICAgdGltaW5ncyA3NDA4IDI0OCAxNiAzOCAxIDE0NCAzIGhzeW5jIGhpZ2ggdnN5bmMgaGlnaCBlbmRtb2RlCisjCisjICAgMTI4MHgxMDI0LCA4NSBIeiwgTm9uLUludGVybGFjZWQgKDE1Ny41MCBNSHogZG90Y2xvY2spCisjCisjICAgICAgICAgICAgICAgSG9yaXpvbnRhbCAgVmVydGljYWwKKyMgICBSZXNvbHV0aW9uICAgICAgMTI4MCAgICAgICAgMTAyNAorIyAgIFNjYW4gRnJlcXVlbmN5ICA5MS4xNDYga0h6ICA4NS4wMiBIegorIyAgIFN5bmMgV2lkdGggICAgICAxLjAxNiB1cyAgICAwLjAzMyBtcworIyAgICAgICAgICAgICAgIDIwIGNoYXJzICAgIDMgbGluZXMKKyMgICBGcm9udCBQb3JjaCAgICAgMC40MDYgdXMgICAgMC4wMTEgbXMKKyMgICAgICAgICAgICAgICA4IGNoYXJzICAgICAxIGxpbmVzCisjICAgQmFjayBQb3JjaCAgICAgIDEuNDIyIHVzICAgIDAuNDgzIG1zCisjICAgICAgICAgICAgICAgMjggY2hhcnMgICAgNDQgbGluZXMKKyMgICBBY3RpdmUgVGltZSAgICAgOC4xMjcgdXMgICAgMTEuMjM1IG1zCisjICAgICAgICAgICAgICAgMTYwIGNoYXJzICAgMTAyNCBsaW5lcworIyAgIEJsYW5rIFRpbWUgICAgICAyLjg0NCB1cyAgICAwLjUyNyBtcworIyAgICAgICAgICAgICAgIDU2IGNoYXJzICAgIDQ4IGxpbmVzCisjICAgUG9sYXJpdHkgICAgICAgIHBvc2l0aXZlICAgIHBvc2l0aXZlCisjCisgICAgbW9kZSAiMTI4MHgxMDI0LTg1IgorIyBEOiAxNTcuNTAgTUh6LCBIOiA5MS4xNDYga0h6LCBWOiA4NS4wMiBIegorICAgIGdlb21ldHJ5IDEyODAgMTAyNCAxMjgwIDEwMjQgMzIKKyAgICB0aW1pbmdzIDYzNDkgMjI0IDY0IDQ0IDEgMTYwIDMKKyAgICBoc3luYyBoaWdoIHZzeW5jIGhpZ2ggZW5kbW9kZSBtb2RlICIxNDQweDkwMC02MCIKKyMgRDogMTA2LjUwMCBNSHosIEg6IDU1LjkzNSBrSHosIFY6IDYwLjAwIEh6CisgICAgZ2VvbWV0cnkgMTQ0MCA5MDAgMTQ0MCA5MDAgMzIKKyAgICB0aW1pbmdzIDkzOTAgMjMyIDgwIDI1IDMgMTUyIDYKKyAgICBoc3luYyBoaWdoIHZzeW5jIGhpZ2ggZW5kbW9kZSBtb2RlICIxNDQweDkwMC03NSIKKyMgRDogMTM2Ljc1MCBNSHosIEg6IDcwLjYzNSBrSHosIFY6IDc1LjAwIEh6CisgICAgZ2VvbWV0cnkgMTQ0MCA5MDAgMTQ0MCA5MDAgMzIKKyAgICB0aW1pbmdzIDczMTUgMjQ4IDk2IDMzIDMgMTUyIDYgaHN5bmMgaGlnaCB2c3luYyBoaWdoIGVuZG1vZGUKKyMKKyMgICAxNDQweDEwNTAsIDYwIEh6LCBOb24tSW50ZXJsYWNlZCAoMTI1LjEwIE1IeiBkb3RjbG9jaykKKyMKKyMgICAgICAgICAgICAgICBIb3Jpem9udGFsICBWZXJ0aWNhbAorIyAgIFJlc29sdXRpb24gICAgICAxNDQwICAgICAgICAxMDUwCisjICAgU2NhbiBGcmVxdWVuY3kgICAgICA2NS4yMjAga0h6ICA2MC4wMCBIegorIyAgIFN5bmMgV2lkdGggICAgICAxLjIwNCB1cyAgICAwLjA0NiBtcworIyAgICAgICAgICAgICAgIDE5IGNoYXJzICAgIDMgbGluZXMKKyMgICBGcm9udCBQb3JjaCAgICAgMC43NjAgdXMgICAgMC4wMTUgbXMKKyMgICAgICAgICAgICAgICAxMiBjaGFycyAgICAxIGxpbmVzCisjICAgQmFjayBQb3JjaCAgICAgIDEuOTY0IHVzICAgIDAuNDk1IG1zCisjICAgICAgICAgICAgICAgMzEgY2hhcnMgICAgMzMgbGluZXMKKyMgICBBY3RpdmUgVGltZSAgICAgMTEuNDA1IHVzICAgMTYuMDk5IG1zCisjICAgICAgICAgICAgICAgMTgwIGNoYXJzICAgMTA1MCBsaW5lcworIyAgIEJsYW5rIFRpbWUgICAgICAzLjkyOCB1cyAgICAwLjU2NyBtcworIyAgICAgICAgICAgICAgIDYyIGNoYXJzICAgIDM3IGxpbmVzCisjICAgUG9sYXJpdHkgICAgICAgIHBvc2l0aXZlICAgIHBvc2l0aXZlCisjCisgICAgbW9kZSAiMTQ0MHgxMDUwLTYwIgorIyBEOiAxMjUuMTAgTUh6LCBIOiA2NS4yMjAga0h6LCBWOiA2MC4wMCBIegorICAgIGdlb21ldHJ5IDE0NDAgMTA1MCAxNDQwIDEwNTAgMzIKKyAgICB0aW1pbmdzIDc5OTMgMjQ4IDk2IDMzIDEgMTUyIDMKKyAgICBoc3luYyBoaWdoIHZzeW5jIGhpZ2ggZW5kbW9kZSBtb2RlICIxNjAweDkwMC02MCIKKyMgRDogMTE4LjI1MCBNSHosIEg6IDU1Ljk5MCBrSHosIFY6IDYwLjAwIEh6CisgICAgZ2VvbWV0cnkgMTYwMCA5MDAgMTYwMCA5MDAgMzIKKyAgICB0aW1pbmdzIDg0MTUgMjU2IDg4IDI2IDMgMTY4IDUgZW5kbW9kZSBtb2RlICIxNjAweDEwMjQtNjAiCisjIEQ6IDEzNi4zNTggTUh6LCBIOiA2My42MDAga0h6LCBWOiA2MC4wMCBIegorICAgIGdlb21ldHJ5IDE2MDAgMTAyNCAxNjAwIDEwMjQgMzIgdGltaW5ncyA3MzE1IDI3MiAxMDQgMzIgMSAxNjggMyBlbmRtb2RlCisjCisjICAgMTYwMHgxMjAwLCA2MCBIeiwgTm9uLUludGVybGFjZWQgKDE1Ni4wMCBNSHogZG90Y2xvY2spCisjCisjICAgICAgICAgICAgICAgSG9yaXpvbnRhbCAgVmVydGljYWwKKyMgICBSZXNvbHV0aW9uICAgICAgMTYwMCAgICAgICAgMTIwMAorIyAgIFNjYW4gRnJlcXVlbmN5ICAgICAgNzYuMjAwIGtIeiAgNjAuMDAgSHoKKyMgICBTeW5jIFdpZHRoICAgICAgMS4wMjYgdXMgICAgMC4xMDUgbXMKKyMgICAgICAgICAgICAgICAyMCBjaGFycyAgICA4IGxpbmVzCisjICAgRnJvbnQgUG9yY2ggICAgIDAuMjA1IHVzICAgIDAuMTMxIG1zCisjICAgICAgICAgICAgICAgNCBjaGFycyAgICAgMTAgbGluZXMKKyMgICBCYWNrIFBvcmNoICAgICAgMS42MzYgdXMgICAgMC42ODIgbXMKKyMgICAgICAgICAgICAgICAzMiBjaGFycyAgICA1MiBsaW5lcworIyAgIEFjdGl2ZSBUaW1lICAgICAxMC4yNTYgdXMgICAxNS43NDggbXMKKyMgICAgICAgICAgICAgICAyMDAgY2hhcnMgICAxMjAwIGxpbmVzCisjICAgQmxhbmsgVGltZSAgICAgIDIuODcyIHVzICAgIDAuODY2IG1zCisjICAgICAgICAgICAgICAgNTYgY2hhcnMgICAgNjYgbGluZXMKKyMgICBQb2xhcml0eSAgICAgICAgbmVnYXRpdmUgICAgbmVnYXRpdmUKKyMKKyAgICBtb2RlICIxNjAweDEyMDAtNjAiCisjIEQ6IDE1Ni4wMCBNSHosIEg6IDc2LjIwMCBrSHosIFY6IDYwLjAwIEh6CisgICAgZ2VvbWV0cnkgMTYwMCAxMjAwIDE2MDAgMTIwMCAzMiB0aW1pbmdzIDYxNzIgMjU2IDMyIDUyIDEwIDE2MCA4IGVuZG1vZGUKKyMKKyMgICAxNjAweDEyMDAsIDc1IEh6LCBOb24tSW50ZXJsYWNlZCAoMjAyLjUwIE1IeiBkb3RjbG9jaykKKyMKKyMgICAgICAgICAgICAgICBIb3Jpem9udGFsICBWZXJ0aWNhbAorIyAgIFJlc29sdXRpb24gICAgICAxNjAwICAgICAgICAxMjAwCisjICAgU2NhbiBGcmVxdWVuY3kgIDkzLjc1MCBrSHogIDc1LjAwIEh6CisjICAgU3luYyBXaWR0aCAgICAgIDAuOTQ4IHVzICAgIDAuMDMyIG1zCisjICAgICAgICAgICAgICAgMjQgY2hhcnMgICAgMyBsaW5lcworIyAgIEZyb250IFBvcmNoICAgICAwLjMxNiB1cyAgICAwLjAxMSBtcworIyAgICAgICAgICAgICAgIDggY2hhcnMgICAgIDEgbGluZXMKKyMgICBCYWNrIFBvcmNoICAgICAgMS41MDEgdXMgICAgMC40OTEgbXMKKyMgICAgICAgICAgICAgICAzOCBjaGFycyAgICA0NiBsaW5lcworIyAgIEFjdGl2ZSBUaW1lICAgICA3LjkwMSB1cyAgICAxMi44MDAgbXMKKyMgICAgICAgICAgICAgICAyMDAgY2hhcnMgICAxMjAwIGxpbmVzCisjICAgQmxhbmsgVGltZSAgICAgIDIuNzY1IHVzICAgIDAuNTMzIG1zCisjICAgICAgICAgICAgICAgNzAgY2hhcnMgICAgNTAgbGluZXMKKyMgICBQb2xhcml0eSAgICBwb3NpdGl2ZSAgICBwb3NpdGl2ZQorIworICAgIG1vZGUgIjE2MDB4MTIwMC03NSIKKyMgRDogMjAyLjUwIE1IeiwgSDogOTMuNzUwIGtIeiwgVjogNzUuMDAgSHoKKyAgICBnZW9tZXRyeSAxNjAwIDEyMDAgMTYwMCAxMjAwIDMyCisgICAgdGltaW5ncyA0OTM4IDMwNCA2NCA0NiAxIDE5MiAzCisgICAgaHN5bmMgaGlnaCB2c3luYyBoaWdoIGVuZG1vZGUgbW9kZSAiMTY4MHgxMDUwLTYwIgorIyBEOiAxNDYuMjUwIE1IeiwgSDogNjUuMjkwIGtIeiwgVjogNTkuOTU0IEh6CisgICAgZ2VvbWV0cnkgMTY4MCAxMDUwIDE2ODAgMTA1MCAzMgorICAgIHRpbWluZ3MgNjgxNCAyODAgMTA0IDMwIDMgMTc2IDYKKyAgICBoc3luYyBoaWdoIHZzeW5jIGhpZ2ggZW5kbW9kZSBtb2RlICIxNjgweDEwNTAtNzUiCisjIEQ6IDE4Ny4wMDAgTUh6LCBIOiA4Mi4zMDYga0h6LCBWOiA3NC44OTIgSHoKKyAgICBnZW9tZXRyeSAxNjgwIDEwNTAgMTY4MCAxMDUwIDMyCisgICAgdGltaW5ncyA1MzQ4IDI5NiAxMjAgNDAgMyAxNzYgNgorICAgIGhzeW5jIGhpZ2ggdnN5bmMgaGlnaCBlbmRtb2RlIG1vZGUgIjE3OTJ4MTM0NC02MCIKKyMgRDogMjAyLjk3NSBNSHosIEg6IDgzLjQ2MCBrSHosIFY6IDYwLjAwIEh6CisgICAgZ2VvbWV0cnkgMTc5MiAxMzQ0IDE3OTIgMTM0NCAzMgorICAgIHRpbWluZ3MgNDkwMiAzMjAgMTI4IDQzIDEgMTkyIDMKKyAgICBoc3luYyBoaWdoIHZzeW5jIGhpZ2ggZW5kbW9kZSBtb2RlICIxODU2eDEzOTItNjAiCisjIEQ6IDIxOC41NzEgTUh6LCBIOiA4Ni40NjAga0h6LCBWOiA2MC4wMCBIegorICAgIGdlb21ldHJ5IDE4NTYgMTM5MiAxODU2IDEzOTIgMzIKKyAgICB0aW1pbmdzIDQ1NzcgMzM2IDEzNiA0NSAxIDIwMCAzCisgICAgaHN5bmMgaGlnaCB2c3luYyBoaWdoIGVuZG1vZGUgbW9kZSAiMTkyMHgxMjAwLTYwIgorIyBEOiAxOTMuMjUwIE1IeiwgSDogNzQuNTU2IGtIeiwgVjogNjAuMDAgSHoKKyAgICBnZW9tZXRyeSAxOTIwIDEyMDAgMTkyMCAxMjAwIDMyCisgICAgdGltaW5ncyA1MTczIDMzNiAxMzYgMzYgMyAyMDAgNgorICAgIGhzeW5jIGhpZ2ggdnN5bmMgaGlnaCBlbmRtb2RlIG1vZGUgIjE5MjB4MTQ0MC02MCIKKyMgRDogMjM0LjAwMCBNSHosIEg6OTAuMDAwIGtIeiwgVjogNjAuMDAgSHoKKyAgICBnZW9tZXRyeSAxOTIwIDE0NDAgMTkyMCAxNDQwIDMyCisgICAgdGltaW5ncyA0Mjc0IDM0NCAxMjggNTYgMSAyMDggMworICAgIGhzeW5jIGhpZ2ggdnN5bmMgaGlnaCBlbmRtb2RlIG1vZGUgIjE5MjB4MTQ0MC03NSIKKyMgRDogMjk3LjAwMCBNSHosIEg6MTEyLjUwMCBrSHosIFY6IDc1LjAwIEh6CisgICAgZ2VvbWV0cnkgMTkyMCAxNDQwIDE5MjAgMTQ0MCAzMgorICAgIHRpbWluZ3MgMzM2NyAzNTIgMTQ0IDU2IDEgMjI0IDMKKyAgICBoc3luYyBoaWdoIHZzeW5jIGhpZ2ggZW5kbW9kZSBtb2RlICIyMDQ4eDE1MzYtNjAiCisjIEQ6IDI2Ny4yNTAgTUh6LCBIOiA5NS40NDYga0h6LCBWOiA2MC4wMCBIegorICAgIGdlb21ldHJ5IDIwNDggMTUzNiAyMDQ4IDE1MzYgMzIKKyAgICB0aW1pbmdzIDM3NDIgMzc2IDE1MiA0OSAzIDIyNCA0IGhzeW5jIGhpZ2ggdnN5bmMgaGlnaCBlbmRtb2RlCisjCisjICAgMTI4MHg3MjAsIDYwIEh6LCBOb24tSW50ZXJsYWNlZCAoNzQuNDgxIE1IeiBkb3RjbG9jaykKKyMKKyMgICAgICAgICAgICAgICBIb3Jpem9udGFsICBWZXJ0aWNhbAorIyAgIFJlc29sdXRpb24gICAgICAxMjgwICAgICAgICA3MjAKKyMgICBTY2FuIEZyZXF1ZW5jeSAgICAgIDQ0Ljc2MCBrSHogIDYwLjAwIEh6CisjICAgU3luYyBXaWR0aCAgICAgIDEuODI2IHVzICAgIDY3LjAyNCBtcworIyAgICAgICAgICAgICAgIDE3IGNoYXJzICAgIDMgbGluZXMKKyMgICBGcm9udCBQb3JjaCAgICAgMC43NTIgdXMgICAgMjIuMzQxIG1zCisjICAgICAgICAgICAgICAgNyBjaGFycyAgICAgMSBsaW5lcworIyAgIEJhY2sgUG9yY2ggICAgICAyLjU3OCB1cyAgICA0OTEuNTEwIG1zCisjICAgICAgICAgICAgICAgMjQgY2hhcnMgICAgMjIgbGluZXMKKyMgICBBY3RpdmUgVGltZSAgICAgMTcuMTg2IHVzICAgMTYuMDg2IG1zCisjICAgICAgICAgICAgICAgMTYwIGNoYXJzICAgNzIwIGxpbmVzCisjICAgQmxhbmsgVGltZSAgICAgIDUuMTU2IHVzICAgIDAuNTgxIG1zCisjICAgICAgICAgICAgICAgNDggY2hhcnMgICAgMjYgbGluZXMKKyMgICBQb2xhcml0eSAgICAgICAgbmVnYXRpdmUgICAgbmVnYXRpdmUKKyMKKyAgICBtb2RlICIxMjgweDcyMC02MCIKKyMgRDogNzQuNDgxIE1IeiwgSDogNDQuNzYwIGtIeiwgVjogNjAuMDAgSHoKKyAgICBnZW9tZXRyeSAxMjgwIDcyMCAxMjgwIDcyMCAzMiB0aW1pbmdzIDEzNDI2IDE5MiA2NCAyMiAxIDEzNiAzIGVuZG1vZGUKKyMKKyMgICAxOTIweDEwODAsIDYwIEh6LCBOb24tSW50ZXJsYWNlZCAoMTcyLjc5OCBNSHogZG90Y2xvY2spCisjCisjICAgICAgICAgICAgICAgSG9yaXpvbnRhbCAgVmVydGljYWwKKyMgICBSZXNvbHV0aW9uICAgICAgMTkyMCAgICAgICAgMTA4MAorIyAgIFNjYW4gRnJlcXVlbmN5ICAgICAgNjcuMDgwIGtIeiAgNjAuMDAgSHoKKyMgICBTeW5jIFdpZHRoICAgICAgMS4yMDQgdXMgICAgNDQuNzIzIG1zCisjICAgICAgICAgICAgICAgMjYgY2hhcnMgICAgMyBsaW5lcworIyAgIEZyb250IFBvcmNoICAgICAwLjY5NCB1cyAgICAxNC45MDggbXMKKyMgICAgICAgICAgICAgICAxNSBjaGFycyAgICAgMSBsaW5lcworIyAgIEJhY2sgUG9yY2ggICAgICAxLjg5OCB1cyAgICA1MDYuODU3IG1zCisjICAgICAgICAgICAgICAgNDEgY2hhcnMgICAgMzQgbGluZXMKKyMgICBBY3RpdmUgVGltZSAgICAgMTEuMTExIHVzICAgMTYuMTAwIG1zCisjICAgICAgICAgICAgICAgMjQwIGNoYXJzICAgMTA4MCBsaW5lcworIyAgIEJsYW5rIFRpbWUgICAgICAzLjc5NiB1cyAgICAwLjU2NiBtcworIyAgICAgICAgICAgICAgIDgyIGNoYXJzICAgIDM4IGxpbmVzCisjICAgUG9sYXJpdHkgICAgICAgIG5lZ2F0aXZlICAgIG5lZ2F0aXZlCisjCisgICAgbW9kZSAiMTkyMHgxMDgwLTYwIgorIyBEOiA3NC40ODEgTUh6LCBIOiA2Ny4wODAga0h6LCBWOiA2MC4wMCBIegorICAgIGdlb21ldHJ5IDE5MjAgMTA4MCAxOTIwIDEwODAgMzIgdGltaW5ncyA1Nzg3IDMyOCAxMjAgMzQgMSAyMDggMyBlbmRtb2RlCisjCisjICAgMTQwMHgxMDUwLCA2MCBIeiwgTm9uLUludGVybGFjZWQgKDEyMi42MSBNSHogZG90Y2xvY2spCisjCisjICAgICAgICAgICAgICAgSG9yaXpvbnRhbCAgVmVydGljYWwKKyMgICBSZXNvbHV0aW9uICAgICAgMTQwMCAgICAgICAgMTA1MAorIyAgIFNjYW4gRnJlcXVlbmN5ICAgICAgNjUuMjE4IGtIeiAgNTkuOTkgSHoKKyMgICBTeW5jIFdpZHRoICAgICAgMS4wMzcgdXMgICAgMC4wNDcgbXMKKyMgICAgICAgICAgICAgICAxOSBjaGFycyAgICAzIGxpbmVzCisjICAgRnJvbnQgUG9yY2ggICAgIDAuNDQ0IHVzICAgIDAuMDE1IG1zCisjICAgICAgICAgICAgICAgMTEgY2hhcnMgICAgIDEgbGluZXMKKyMgICBCYWNrIFBvcmNoICAgICAgMS4xODUgdXMgICAgMC4xODggbXMKKyMgICAgICAgICAgICAgICAzMCBjaGFycyAgICAzMyBsaW5lcworIyAgIEFjdGl2ZSBUaW1lICAgICAxMi45NjMgdXMgICAxNi40MTEgbXMKKyMgICAgICAgICAgICAgICAxNzUgY2hhcnMgICAxMDUwIGxpbmVzCisjICAgQmxhbmsgVGltZSAgICAgIDIuNjY3IHVzICAgIDAuMjUwIG1zCisjICAgICAgICAgICAgICAgNjAgY2hhcnMgICAgMzcgbGluZXMKKyMgICBQb2xhcml0eSAgICAgICAgbmVnYXRpdmUgICAgcG9zaXRpdmUKKyMKKyAgICBtb2RlICIxNDAweDEwNTAtNjAiCisjIEQ6IDEyMi43NTAgTUh6LCBIOiA2NS4zMTcga0h6LCBWOiA1OS45OSBIegorICAgIGdlb21ldHJ5IDE0MDAgMTA1MCAxNDA4IDEwNTAgMzIKKyAgICB0aW1pbmdzIDgyMTQgMjMyIDg4IDMyIDMgMTQ0IDQgZW5kbW9kZSBtb2RlICIxNDAweDEwNTAtNzUiCisjIEQ6IDE1Ni4wMDAgTUh6LCBIOiA4Mi4yNzgga0h6LCBWOiA3NC44NjcgSHoKKyAgICBnZW9tZXRyeSAxNDAwIDEwNTAgMTQwOCAxMDUwIDMyIHRpbWluZ3MgNjQxMCAyNDggMTA0IDQyIDMgMTQ0IDQgZW5kbW9kZQorIworIyAgIDEzNjZ4NzY4LCA2MCBIeiwgTm9uLUludGVybGFjZWQgKDg1Ljg2IE1IeiBkb3RjbG9jaykKKyMKKyMgICAgICAgICAgICAgICBIb3Jpem9udGFsICBWZXJ0aWNhbAorIyAgIFJlc29sdXRpb24gICAgICAxMzY2ICAgICAgICA3NjgKKyMgICBTY2FuIEZyZXF1ZW5jeSAgICAgIDQ3LjcwMCBrSHogIDYwLjAwIEh6CisjICAgU3luYyBXaWR0aCAgICAgIDEuNjc3IHVzICAgIDAuMDYzIG1zCisjICAgICAgICAgICAgICAgMTggY2hhcnMgICAgMyBsaW5lcworIyAgIEZyb250IFBvcmNoICAgICAwLjgzOSB1cyAgICAwLjAyMSBtcworIyAgICAgICAgICAgICAgIDkgY2hhcnMgICAgIDEgbGluZXMKKyMgICBCYWNrIFBvcmNoICAgICAgMi41MTYgdXMgICAgMC40ODIgbXMKKyMgICAgICAgICAgICAgICAyNyBjaGFycyAgICAyMyBsaW5lcworIyAgIEFjdGl2ZSBUaW1lICAgICAxNS45MzMgdXMgICAxNi4xMDEgbXMKKyMgICAgICAgICAgICAgICAxNzEgY2hhcnMgICA3NjggbGluZXMKKyMgICBCbGFuayBUaW1lICAgICAgNS4wMzEgdXMgICAgMC41NjYgbXMKKyMgICAgICAgICAgICAgICA1NCBjaGFycyAgICAyNyBsaW5lcworIyAgIFBvbGFyaXR5ICAgICAgICBuZWdhdGl2ZSAgICBwb3NpdGl2ZQorIworICAgIG1vZGUgIjEzNjB4NzY4LTYwIgorIyBEOiA4NC43NTAgTUh6LCBIOiA0Ny43MjAga0h6LCBWOiA2MC4wMCBIegorICAgIGdlb21ldHJ5IDEzNjAgNzY4IDEzNjAgNzY4IDMyCisgICAgdGltaW5ncyAxMTc5OSAyMDggNzIgMjIgMyAxMzYgNSBlbmRtb2RlIG1vZGUgIjEzNjZ4NzY4LTYwIgorIyBEOiA4NS44NiBNSHosIEg6IDQ3LjcwMCBrSHosIFY6IDYwLjAwIEh6CisgICAgZ2VvbWV0cnkgMTM2NiA3NjggMTM2NiA3NjggMzIKKyAgICB0aW1pbmdzIDExNjQ3IDIxNiA3MiAyMyAxIDE0NCAzIGVuZG1vZGUgbW9kZSAiMTM2Nng3NjgtNTAiCisjIEQ6IDY5LDkyNCBNSHosIEg6IDM5LjU1MCBrSHosIFY6IDUwLjAwIEh6CisgICAgZ2VvbWV0cnkgMTM2NiA3NjggMTM2NiA3NjggMzIgdGltaW5ncyAxNDMwMSAyMDAgNTYgMTkgMSAxNDQgMyBlbmRtb2RlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZiL3ZpYWZiLnR4dCBiL0RvY3VtZW50YXRpb24vZmIvdmlhZmIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYjI0NjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZiL3ZpYWZiLnR4dApAQCAtMCwwICsxLDI1MiBAQAorCisgICAgICAgIFZJQSBJbnRlZ3JhdGlvbiBHcmFwaGljIENoaXAgQ29uc29sZSBGcmFtZWJ1ZmZlciBEcml2ZXIKKworW1BsYXRmb3JtXQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBUaGUgY29uc29sZSBmcmFtZWJ1ZmZlciBkcml2ZXIgaXMgZm9yIGdyYXBoaWNzIGNoaXBzIG9mCisgICAgVklBIFVuaUNocm9tZSBGYW1pbHkoQ0xFMjY2LCBQTTgwMCAvIENONDAwIC8gQ04zMDAsCisgICAgICAgICAgICAgICAgICAgICAgICBQNE04MDBDRSAvIFA0TTgwMFBybyAvIENONzAwIC8gVk44MDAsCisgICAgICAgICAgICAgICAgICAgICAgICBDWDcwMCAvIFZYNzAwLCBLOE04OTAsIFA0TTg5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgIENOODk2IC8gUDRNOTAwLCBWWDgwMCwgVlg4NTUpCisKK1tEcml2ZXIgZmVhdHVyZXNdCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBEZXZpY2U6IENSVCwgTENELCBEVkkKKworICAgIFN1cHBvcnQgdmlhZmJfbW9kZToKKyAgICAgICAgQ1JUOgorICAgICAgICAgICAgNjQweDQ4MCg2MCwgNzUsIDg1LCAxMDAsIDEyMCBIeiksIDcyMHg0ODAoNjAgSHopLAorICAgICAgICAgICAgNzIweDU3Nig2MCBIeiksIDgwMHg2MDAoNjAsIDc1LCA4NSwgMTAwLCAxMjAgSHopLAorICAgICAgICAgICAgODQ4eDQ4MCg2MCBIeiksIDg1Nng0ODAoNjAgSHopLCAxMDI0eDUxMig2MCBIeiksCisgICAgICAgICAgICAxMDI0eDc2OCg2MCwgNzUsIDg1LCAxMDAgSHopLCAxMTUyeDg2NCg3NSBIeiksCisgICAgICAgICAgICAxMjgweDc2OCg2MCBIeiksIDEyODB4OTYwKDYwIEh6KSwgMTI4MHgxMDI0KDYwLCA3NSwgODUgSHopLAorICAgICAgICAgICAgMTQ0MHgxMDUwKDYwIEh6KSwgMTYwMHgxMjAwKDYwLCA3NSBIeiksIDEyODB4NzIwKDYwIEh6KSwKKyAgICAgICAgICAgIDE5MjB4MTA4MCg2MCBIeiksIDE0MDB4MTA1MCg2MCBIeiksIDgwMHg0ODAoNjAgSHopCisKKyAgICBjb2xvciBkZXB0aDogOCBicHAsIDE2IGJwcCwgMzIgYnBwIHN1cHBvcnRzLgorCisgICAgU3VwcG9ydCAyRCBoYXJkd2FyZSBhY2NlbGVyYXRvci4KKworW1VzaW5nIHRoZSB2aWFmYiBtb2R1bGVdCistLSAtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIFN0YXJ0IHZpYWZiIHdpdGggZGVmYXVsdCBzZXR0aW5nczoKKyAgICAgICAgI21vZHByb2JlIHZpYWZiCisKKyAgICBTdGFydCB2aWFmYiB3aXRoIHVzZXIgb3B0aW9uczoKKyAgICAgICAgI21vZHByb2JlIHZpYWZiIHZpYWZiX21vZGU9ODAweDYwMCB2aWFmYl9icHA9MTYgdmlhZmJfcmVmcmVzaD02MAorICAgICAgICAgICAgICAgICAgdmlhZmJfYWN0aXZlX2Rldj1DUlQrRFZJIHZpYWZiX2R2aV9wb3J0PURWUDEKKyAgICAgICAgICAgICAgICAgIHZpYWZiX21vZGUxPTEwMjR4NzY4IHZpYWZiX2JwcD0xNiB2aWFmYl9yZWZyZXNoMT02MAorICAgICAgICAgICAgICAgICAgdmlhZmJfU0FNTV9PTj0xCisKKyAgICB2aWFmYl9tb2RlOgorICAgICAgICA2NDB4NDgwIChkZWZhdWx0KQorICAgICAgICA3MjB4NDgwCisgICAgICAgIDgwMHg2MDAKKyAgICAgICAgMTAyNHg3NjgKKyAgICAgICAgLi4uLi4uCisKKyAgICB2aWFmYl9icHA6CisgICAgICAgIDgsIDE2LCAzMiAoZGVmYXVsdDozMikKKworICAgIHZpYWZiX3JlZnJlc2g6CisgICAgICAgIDYwLCA3NSwgODUsIDEwMCwgMTIwIChkZWZhdWx0OjYwKQorCisgICAgdmlhZmJfbGNkX2RzcF9tZXRob2Q6CisgICAgICAgIDAgOiBleHBhbnNpb24gKGRlZmF1bHQpCisgICAgICAgIDEgOiBjZW50ZXJpbmcKKworICAgIHZpYWZiX2xjZF9tb2RlOgorICAgICAgICAwIDogTENEIHBhbmVsIHdpdGggTFNCIGRhdGEgZm9ybWF0IGlucHV0IChkZWZhdWx0KQorICAgICAgICAxIDogTENEIHBhbmVsIHdpdGggTVNCIGRhdGEgZm9ybWF0IGlucHV0CisKKyAgICB2aWFmYl9sY2RfcGFuZWxfaWQ6CisgICAgICAgIDAgOiBSZXNvbHV0aW9uOiA2NDB4NDgwLCBDaGFubmVsOiBzaW5nbGUsIERpdGhlcmluZzogRW5hYmxlCisgICAgICAgIDEgOiBSZXNvbHV0aW9uOiA4MDB4NjAwLCBDaGFubmVsOiBzaW5nbGUsIERpdGhlcmluZzogRW5hYmxlCisgICAgICAgIDIgOiBSZXNvbHV0aW9uOiAxMDI0eDc2OCwgQ2hhbm5lbDogc2luZ2xlLCBEaXRoZXJpbmc6IEVuYWJsZSAoZGVmYXVsdCkKKyAgICAgICAgMyA6IFJlc29sdXRpb246IDEyODB4NzY4LCBDaGFubmVsOiBzaW5nbGUsIERpdGhlcmluZzogRW5hYmxlCisgICAgICAgIDQgOiBSZXNvbHV0aW9uOiAxMjgweDEwMjQsIENoYW5uZWw6IGR1YWwsIERpdGhlcmluZzogRW5hYmxlCisgICAgICAgIDUgOiBSZXNvbHV0aW9uOiAxNDAweDEwNTAsIENoYW5uZWw6IGR1YWwsIERpdGhlcmluZzogRW5hYmxlCisgICAgICAgIDYgOiBSZXNvbHV0aW9uOiAxNjAweDEyMDAsIENoYW5uZWw6IGR1YWwsIERpdGhlcmluZzogRW5hYmxlCisKKyAgICAgICAgOCA6IFJlc29sdXRpb246IDgwMHg0ODAsIENoYW5uZWw6IHNpbmdsZSwgRGl0aGVyaW5nOiBFbmFibGUKKyAgICAgICAgOSA6IFJlc29sdXRpb246IDEwMjR4NzY4LCBDaGFubmVsOiBkdWFsLCBEaXRoZXJpbmc6IEVuYWJsZQorICAgICAgICAxMDogUmVzb2x1dGlvbjogMTAyNHg3NjgsIENoYW5uZWw6IHNpbmdsZSwgRGl0aGVyaW5nOiBEaXNhYmxlCisgICAgICAgIDExOiBSZXNvbHV0aW9uOiAxMDI0eDc2OCwgQ2hhbm5lbDogZHVhbCwgRGl0aGVyaW5nOiBEaXNhYmxlCisgICAgICAgIDEyOiBSZXNvbHV0aW9uOiAxMjgweDc2OCwgQ2hhbm5lbDogc2luZ2xlLCBEaXRoZXJpbmc6IERpc2FibGUKKyAgICAgICAgMTM6IFJlc29sdXRpb246IDEyODB4MTAyNCwgQ2hhbm5lbDogZHVhbCwgRGl0aGVyaW5nOiBEaXNhYmxlCisgICAgICAgIDE0OiBSZXNvbHV0aW9uOiAxNDAweDEwNTAsIENoYW5uZWw6IGR1YWwsIERpdGhlcmluZzogRGlzYWJsZQorICAgICAgICAxNTogUmVzb2x1dGlvbjogMTYwMHgxMjAwLCBDaGFubmVsOiBkdWFsLCBEaXRoZXJpbmc6IERpc2FibGUKKyAgICAgICAgMTY6IFJlc29sdXRpb246IDEzNjZ4NzY4LCBDaGFubmVsOiBzaW5nbGUsIERpdGhlcmluZzogRGlzYWJsZQorICAgICAgICAxNzogUmVzb2x1dGlvbjogMTAyNHg2MDAsIENoYW5uZWw6IHNpbmdsZSwgRGl0aGVyaW5nOiBFbmFibGUKKyAgICAgICAgMTg6IFJlc29sdXRpb246IDEyODB4NzY4LCBDaGFubmVsOiBkdWFsLCBEaXRoZXJpbmc6IEVuYWJsZQorICAgICAgICAxOTogUmVzb2x1dGlvbjogMTI4MHg4MDAsIENoYW5uZWw6IHNpbmdsZSwgRGl0aGVyaW5nOiBFbmFibGUKKworICAgIHZpYWZiX2FjY2VsOgorICAgICAgICAwIDogTm8gMkQgSGFyZHdhcmUgQWNjZWxlcmF0aW9uCisgICAgICAgIDEgOiAyRCBIYXJkd2FyZSBBY2NlbGVyYXRpb24gKGRlZmF1bHQpCisKKyAgICB2aWFmYl9TQU1NX09OOgorICAgICAgICAwIDogdmlhZmJfU0FNTV9PTiBkaXNhYmxlIChkZWZhdWx0KQorICAgICAgICAxIDogdmlhZmJfU0FNTV9PTiBlbmFibGUKKworICAgIHZpYWZiX21vZGUxOiAoc2Vjb25kYXJ5IGRpc3BsYXkgZGV2aWNlKQorICAgICAgICA2NDB4NDgwIChkZWZhdWx0KQorICAgICAgICA3MjB4NDgwCisgICAgICAgIDgwMHg2MDAKKyAgICAgICAgMTAyNHg3NjgKKyAgICAgICAgLi4uIC4uLgorCisgICAgdmlhZmJfYnBwMTogKHNlY29uZGFyeSBkaXNwbGF5IGRldmljZSkKKyAgICAgICAgOCwgMTYsIDMyIChkZWZhdWx0OjMyKQorCisgICAgdmlhZmJfcmVmcmVzaDE6IChzZWNvbmRhcnkgZGlzcGxheSBkZXZpY2UpCisgICAgICAgIDYwLCA3NSwgODUsIDEwMCwgMTIwIChkZWZhdWx0OjYwKQorCisgICAgdmlhZmJfYWN0aXZlX2RldjoKKyAgICAgICAgVGhpcyBvcHRpb24gaXMgdXNlZCB0byBzcGVjaWZ5IGFjdGl2ZSBkZXZpY2VzLihDUlQsIERWSSwgQ1JUK0xDRC4uLikKKyAgICAgICAgRFZJIHN0YW5kcyBmb3IgRFZJIG9yIEhETUksIEUuZy4sIElmIHlvdSB3YW50IHRvIGVuYWJsZSBIRE1JLAorICAgICAgICBzZXQgdmlhZmJfYWN0aXZlX2Rldj1EVkkuIEluIFNBTU0gY2FzZSwgdGhlIHByZXZpb3VzIG9mCisgICAgICAgIHZpYWZiX2FjdGl2ZV9kZXYgaXMgcHJpbWFyeSBkZXZpY2UsIGFuZCB0aGUgZm9sbG93aW5nIGlzCisgICAgICAgIHNlY29uZGFyeSBkZXZpY2UuCisKKyAgICAgICAgRm9yIGV4YW1wbGU6CisgICAgICAgIFRvIGVuYWJsZSBvbmUgZGV2aWNlLCBzdWNoIGFzIERWSSBvbmx5LCB3ZSBjYW4gdXNlOgorICAgICAgICAgICAgbW9kcHJvYmUgdmlhZmIgdmlhZmJfYWN0aXZlX2Rldj1EVkkKKyAgICAgICAgVG8gZW5hYmxlIHR3byBkZXZpY2VzLCBzdWNoIGFzIENSVCtEVkk6CisgICAgICAgICAgICBtb2Rwcm9iZSB2aWFmYiB2aWFmYl9hY3RpdmVfZGV2PUNSVCtEVkk7CisKKyAgICAgICAgRm9yIER1b1ZpZXcgY2FzZSwgd2UgY2FuIHVzZToKKyAgICAgICAgICAgIG1vZHByb2JlIHZpYWZiIHZpYWZiX2FjdGl2ZV9kZXY9Q1JUK0RWSQorICAgICAgICAgICAgT1IKKyAgICAgICAgICAgIG1vZHByb2JlIHZpYWZiIHZpYWZiX2FjdGl2ZV9kZXY9RFZJK0NSVC4uLgorCisgICAgICAgIEZvciBTQU1NIGNhc2U6CisgICAgICAgIElmIENSVCBpcyBwcmltYXJ5IGFuZCBEVkkgaXMgc2Vjb25kYXJ5LCB3ZSBzaG91bGQgdXNlOgorICAgICAgICAgICAgbW9kcHJvYmUgdmlhZmIgdmlhZmJfYWN0aXZlX2Rldj1DUlQrRFZJIHZpYWZiX1NBTU1fT049MS4uLgorICAgICAgICBJZiBEVkkgaXMgcHJpbWFyeSBhbmQgQ1JUIGlzIHNlY29uZGFyeSwgd2Ugc2hvdWxkIHVzZToKKyAgICAgICAgICAgIG1vZHByb2JlIHZpYWZiIHZpYWZiX2FjdGl2ZV9kZXY9RFZJK0NSVCB2aWFmYl9TQU1NX09OPTEuLi4KKworICAgIHZpYWZiX2Rpc3BsYXlfaGFyZHdhcmVfbGF5b3V0OgorICAgICAgICBUaGlzIG9wdGlvbiBpcyB1c2VkIHRvIHNwZWNpZnkgZGlzcGxheSBoYXJkd2FyZSBsYXlvdXQgZm9yIENYNzAwIGNoaXAuCisgICAgICAgIDEgOiBMQ0Qgb25seQorICAgICAgICAyIDogRFZJIG9ubHkKKyAgICAgICAgMyA6IExDRCtEVkkgKGRlZmF1bHQpCisgICAgICAgIDQgOiBMQ0QxK0xDRDIgKGludGVybmFsICsgaW50ZXJuYWwpCisgICAgICAgIDE2OiBMQ0QxK0V4dGVybmFsTENEMiAoaW50ZXJuYWwgKyBleHRlcm5hbCkKKworICAgIHZpYWZiX3NlY29uZF9zaXplOgorICAgICAgICBUaGlzIG9wdGlvbiBpcyB1c2VkIHRvIHNldCBzZWNvbmQgZGV2aWNlIG1lbW9yeSBzaXplKE1CKSBpbiBTQU1NIGNhc2UuCisgICAgICAgIFRoZSBtaW5pbWFsIHNpemUgaXMgMTYuCisKKyAgICB2aWFmYl9wbGF0Zm9ybV9lcGlhX2R2aToKKyAgICAgICAgVGhpcyBvcHRpb24gaXMgdXNlZCB0byBlbmFibGUgRFZJIG9uIEVQSUEgLSBNCisgICAgICAgIDAgOiBObyBEVkkgb24gRVBJQSAtIE0gKGRlZmF1bHQpCisgICAgICAgIDEgOiBEVkkgb24gRVBJQSAtIE0KKworICAgIHZpYWZiX2J1c193aWR0aDoKKyAgICAgICAgV2hlbiB1c2luZyAyNCAtIEJpdCBCdXMgV2lkdGggRGlnaXRhbCBJbnRlcmZhY2UsCisgICAgICAgIHRoaXMgb3B0aW9uIHNob3VsZCBiZSBzZXQuCisgICAgICAgIDEyOiAxMi1CaXQgTFZEUyBvciAxMi1CaXQgVE1EUyAoZGVmYXVsdCkKKyAgICAgICAgMjQ6IDI0LUJpdCBMVkRTIG9yIDI0LUJpdCBUTURTCisKKyAgICB2aWFmYl9kZXZpY2VfbGNkX2R1YWxlZGdlOgorICAgICAgICBXaGVuIHVzaW5nIER1YWwgRWRnZSBQYW5lbCwgdGhpcyBvcHRpb24gc2hvdWxkIGJlIHNldC4KKyAgICAgICAgMCA6IE5vIER1YWwgRWRnZSBQYW5lbCAoZGVmYXVsdCkKKyAgICAgICAgMSA6IER1YWwgRWRnZSBQYW5lbAorCisgICAgdmlhZmJfbGNkX3BvcnQ6CisgICAgICAgIFRoaXMgb3B0aW9uIGlzIHVzZWQgdG8gc3BlY2lmeSBMQ0Qgb3V0cHV0IHBvcnQsCisgICAgICAgIGF2YWlsYWJsZSB2YWx1ZXMgYXJlICJEVlAwIiAiRFZQMSIgIkRGUF9ISUdITE9XIiAiREZQX0hJR0giICJERlBfTE9XIi4KKyAgICAgICAgZm9yIGV4dGVybmFsIExDRCArIGV4dGVybmFsIERWSSBvbiBDWDcwMChFeHRlcm5hbCBMQ0QgaXMgb24gRFZQMCksCisgICAgICAgIHdlIHNob3VsZCB1c2U6CisgICAgICAgICAgICBtb2Rwcm9iZSB2aWFmYiB2aWFmYl9sY2RfcG9ydD1EVlAwLi4uCisKK05vdGVzOgorICAgIDEuIENSVCBtYXkgbm90IGRpc3BsYXkgcHJvcGVybHkgZm9yIER1b1ZpZXcgQ1JUICYgRFZJIGRpc3BsYXkgYXQKKyAgICAgICB0aGUgIjY0MHg0ODAiIFBBTCBtb2RlIHdpdGggRFZJIG92ZXJzY2FuIGVuYWJsZWQuCisgICAgMi4gU0FNTSBzdGFuZHMgZm9yIHNpbmdsZSBhZGFwdGVyIG11bHRpIG1vbml0b3JzLiBJdCBpcyBkaWZmZXJlbnQgZnJvbQorICAgICAgIG11bHRpLWhlYWQgc2luY2UgU0FNTSBzdXBwb3J0IG11bHRpIG1vbml0b3IgYXQgZHJpdmVyIGxheWVycywgdGh1cyBmYmNvbgorICAgICAgIGxheWVyIGRvZXNuJ3QgZXZlbiBrbm93IGFib3V0IGl0OyBTQU1NJ3Mgc2Vjb25kIHNjcmVlbiBkb2Vzbid0IGhhdmUgYQorICAgICAgIGRldmljZSBub2RlIGZpbGUsIHRodXMgYSB1c2VyIG1vZGUgYXBwbGljYXRpb24gY2FuJ3QgYWNjZXNzIGl0IGRpcmVjdGx5LgorICAgICAgIFdoZW4gU0FNTSBpcyBlbmFibGVkLCB2aWFmYl9tb2RlIGFuZCB2aWFmYl9tb2RlMSwgdmlhZmJfYnBwIGFuZAorICAgICAgIHZpYWZiX2JwcDEsIHZpYWZiX3JlZnJlc2ggYW5kIHZpYWZiX3JlZnJlc2gxIGNhbiBiZSBkaWZmZXJlbnQuCisgICAgMy4gV2hlbiBjb25zb2xlIGlzIGRlcGVuZGluZyBvbiB2aWFmYmluZm8xLCBkeW5hbWljYWxseSBjaGFuZ2UgcmVzb2x1dGlvbgorICAgICAgIGFuZCBicHAsIG5lZWQgdG8gY2FsbCBWSUFGQiBzcGVjaWZpZWQgaW9jdGwgaW50ZXJmYWNlIFZJQUZCX1NFVF9ERVZJQ0UKKyAgICAgICBpbnN0ZWFkIG9mIGNhbGxpbmcgY29tbW9uIGlvY3RsIGZ1bmN0aW9uIEZCSU9QVVRfVlNDUkVFTklORk8gc2luY2UKKyAgICAgICB2aWFmYiBkb2Vzbid0IHN1cHBvcnQgbXVsdGktaGVhZCB3ZWxsLCBvciBpdCB3aWxsIGNhdXNlIHNjcmVlbiBjcnVzaC4KKworCitbQ29uZmlndXJlIHZpYWZiIHdpdGggImZic2V0IiB0b29sXQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAiZmJzZXQiIGlzIGFuIGluYm94IHV0aWxpdHkgb2YgTGludXguCisgICAgMS4gSW5xdWlyZSBjdXJyZW50IHZpYWZiIGluZm9ybWF0aW9uLCB0eXBlLAorICAgICAgICAgICAjIGZic2V0IC1pCisKKyAgICAyLiBTZXQgdmFyaW91cyByZXNvbHV0aW9ucyBhbmQgdmlhZmJfcmVmcmVzaCByYXRlcywKKyAgICAgICAgICAgIyBmYnNldCA8cmVzb2x1dGlvbi12ZXJ0aWNhbF9zeW5jPgorCisgICAgICAgZXhhbXBsZSwKKyAgICAgICAgICAgIyBmYnNldCAiMTAyNHg3NjgtNzUiCisgICAgICAgb3IKKyAgICAgICAgICAgIyBmYnNldCAtZyAxMDI0IDc2OCAxMDI0IDc2OCAzMgorICAgICAgIENoZWNrIHRoZSBmaWxlICIvZXRjL2ZiLm1vZGVzIiB0byBmaW5kIGRpc3BsYXkgbW9kZXMgYXZhaWxhYmxlLgorCisgICAgMy4gU2V0IHRoZSBjb2xvciBkZXB0aCwKKyAgICAgICAgICAgIyBmYnNldCAtZGVwdGggPHZhbHVlPgorCisgICAgICAgZXhhbXBsZSwKKyAgICAgICAgICAgIyBmYnNldCAtZGVwdGggMTYKKworCitbQ29uZmlndXJlIHZpYWZiIHZpYSAvcHJvY10KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIFRoZSBmb2xsb3dpbmcgZmlsZXMgZXhpc3QgaW4gL3Byb2MvdmlhZmIKKworICAgIHN1cHBvcnRlZF9vdXRwdXRfZGV2aWNlcworCisgICAgICAgIFRoaXMgcmVhZC1vbmx5IGZpbGUgY29udGFpbnMgYSBmdWxsICcsJyBzZXBhcmF0ZWQgbGlzdCBjb250YWluaW5nIGFsbAorICAgICAgICBvdXRwdXQgZGV2aWNlcyB0aGF0IGNvdWxkIGJlIGF2YWlsYWJsZSBvbiB5b3VyIHBsYXRmb3JtLiBJdCBpcyBsaWtlbHkKKyAgICAgICAgdGhhdCBub3QgYWxsIG9mIHRob3NlIGhhdmUgYSBjb25uZWN0b3Igb24geW91ciBoYXJkd2FyZSBidXQgaXQgc2hvdWxkCisgICAgICAgIHByb3ZpZGUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGZpZ3VyZSBvdXQgd2hpY2ggb2YgdGhvc2UgbmFtZXMgbWF0Y2gKKyAgICAgICAgYSByZWFsIGNvbm5lY3Rvci4KKyAgICAgICAgRXhhbXBsZToKKyAgICAgICAgIyBjYXQgL3Byb2MvdmlhZmIvc3VwcG9ydGVkX291dHB1dF9kZXZpY2VzCisKKyAgICBpZ2ExL291dHB1dF9kZXZpY2VzCisgICAgaWdhMi9vdXRwdXRfZGV2aWNlcworCisgICAgICAgIFRoZXNlIHR3byBmaWxlcyBhcmUgcmVhZGFibGUgYW5kIHdyaXRhYmxlLiBpZ2ExIGFuZCBpZ2EyIGFyZSB0aGUgdHdvCisgICAgICAgIGluZGVwZW5kZW50IHVuaXRzIHRoYXQgcHJvZHVjZSB0aGUgc2NyZWVuIGltYWdlLiBUaG9zZSBpbWFnZXMgY2FuIGJlCisgICAgICAgIGZvcndhcmRlZCB0byBvbmUgb3IgbW9yZSBvdXRwdXQgZGV2aWNlcy4gUmVhZGluZyB0aG9zZSBmaWxlcyBpcyBhIHdheQorICAgICAgICB0byBxdWVyeSB3aGljaCBvdXRwdXQgZGV2aWNlcyBhcmUgY3VycmVudGx5IHVzZWQgYnkgYW4gaWdhLgorICAgICAgICBFeGFtcGxlOgorICAgICAgICAjIGNhdCAvcHJvYy92aWFmYi9pZ2ExL291dHB1dF9kZXZpY2VzCisgICAgICAgIElmIHRoZXJlIGFyZSBubyBvdXRwdXQgZGV2aWNlcyBwcmludGVkIHRoZSBvdXRwdXQgb2YgdGhpcyBpZ2EgaXMgbG9zdC4KKyAgICAgICAgVGhpcyBjYW4gaGFwcGVuIGZvciBleGFtcGxlIGlmIG9ubHkgb25lICh0aGUgb3RoZXIpIGlnYSBpcyB1c2VkLgorICAgICAgICBXcml0aW5nIHRvIHRoZXNlIGZpbGVzIGFsbG93cyBhZGp1c3RpbmcgdGhlIG91dHB1dCBkZXZpY2VzIGR1cmluZworICAgICAgICBydW50aW1lLiBPbmUgY2FuIGFkZCBuZXcgZGV2aWNlcywgcmVtb3ZlIGV4aXN0aW5nIG9uZXMgb3Igc3dpdGNoCisgICAgICAgIGJldHdlZW4gaWdhcy4gRXNzZW50aWFsbHkgeW91IGNhbiB3cml0ZSBhICcsJyBzZXBhcmF0ZWQgbGlzdCBvZiBkZXZpY2UKKyAgICAgICAgbmFtZXMgKG9yIGEgc2luZ2xlIG9uZSkgaW4gdGhlIHNhbWUgZm9ybWF0IGFzIHRoZSBvdXRwdXQgdG8gdGhvc2UKKyAgICAgICAgZmlsZXMuIFlvdSBjYW4gYWRkIGEgJysnIG9yICctJyBhcyBhIHByZWZpeCBhbGxvd2luZyBzaW1wbGUgYWRkaXRpb24KKyAgICAgICAgYW5kIHJlbW92YWwgb2YgZGV2aWNlcy4gU28gYSBwcmVmaXggJysnIGFkZHMgdGhlIGRldmljZXMgZnJvbSB5b3VyIGxpc3QKKyAgICAgICAgdG8gdGhlIGFscmVhZHkgZXhpc3Rpbmcgb25lcywgJy0nIHJlbW92ZXMgdGhlIGxpc3RlZCBkZXZpY2VzIGZyb20gdGhlCisgICAgICAgIGV4aXN0aW5nIG9uZXMgYW5kIGlmIG5vIHByZWZpeCBpcyBnaXZlbiBpdCByZXBsYWNlcyBhbGwgZXhpc3Rpbmcgb25lcworICAgICAgICB3aXRoIHRoZSBsaXN0ZWQgb25lcy4gSWYgeW91IHJlbW92ZSBkZXZpY2VzIHRoZXkgYXJlIGV4cGVjdGVkIHRvIHR1cm4KKyAgICAgICAgb2ZmLiBJZiB5b3UgYWRkIGRldmljZXMgdGhhdCBhcmUgYWxyZWFkeSBwYXJ0IG9mIHRoZSBvdGhlciBpZ2EgdGhleSBhcmUKKyAgICAgICAgcmVtb3ZlZCB0aGVyZSBhbmQgYWRkZWQgdG8gdGhlIG5ldyBvbmUuCisgICAgICAgIEV4YW1wbGVzOgorICAgICAgICBBZGQgQ1JUIGFzIG91dHB1dCBkZXZpY2UgdG8gaWdhMQorICAgICAgICAjIGVjaG8gK0NSVCA+IC9wcm9jL3ZpYWZiL2lnYTEvb3V0cHV0X2RldmljZXMKKworICAgICAgICBSZW1vdmUgKHR1cm4gb2ZmKSBEVlAxIGFuZCBMVkRTMSBhcyBvdXRwdXQgZGV2aWNlcyBvZiBpZ2EyCisgICAgICAgICMgZWNobyAtRFZQMSxMVkRTMSA+IC9wcm9jL3ZpYWZiL2lnYTIvb3V0cHV0X2RldmljZXMKKworICAgICAgICBSZXBsYWNlIGFsbCBpZ2ExIG91dHB1dCBkZXZpY2VzIGJ5IENSVAorICAgICAgICAjIGVjaG8gQ1JUID4gL3Byb2MvdmlhZmIvaWdhMS9vdXRwdXRfZGV2aWNlcworCisKK1tCb290dXAgd2l0aCB2aWFmYl06CistLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIEFkZCB0aGUgZm9sbG93aW5nIGxpbmUgdG8geW91ciBncnViLmNvbmY6CisgICAgYXBwZW5kID0gInZpZGVvPXZpYWZiOnZpYWZiX21vZGU9MTAyNHg3NjgsdmlhZmJfYnBwPTMyLHZpYWZiX3JlZnJlc2g9ODUiCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvdnQ4NjIzZmIudHh0IGIvRG9jdW1lbnRhdGlvbi9mYi92dDg2MjNmYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY1NDU3NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmIvdnQ4NjIzZmIudHh0CkBAIC0wLDAgKzEsNjQgQEAKKworCXZ0ODYyM2ZiIC0gZmJkZXYgZHJpdmVyIGZvciBncmFwaGljcyBjb3JlIGluIFZJQSBWVDg2MjMgY2hpcHNldAorCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKK1N1cHBvcnRlZCBIYXJkd2FyZQorPT09PT09PT09PT09PT09PT09CisKKwlWSUEgVlQ4NjIzIFtDTEUyNjZdIGNoaXBzZXQgYW5kCWl0cyBncmFwaGljcyBjb3JlCisJCShrbm93biBhcyBDYXN0bGVSb2NrIG9yIFVuaWNocm9tZSkKKworSSB0ZXN0ZWQgdnQ4NjIzZmIgb24gVklBIEVQSUEgTUwtNjAwMAorCisKK1N1cHBvcnRlZCBGZWF0dXJlcworPT09PT09PT09PT09PT09PT09CisKKwkqICA0IGJwcCBwc2V1ZG9jb2xvciBtb2RlcyAod2l0aCAxOGJpdCBwYWxldHRlLCB0d28gdmFyaWFudHMpCisJKiAgOCBicHAgcHNldWRvY29sb3IgbW9kZSAod2l0aCAxOGJpdCBwYWxldHRlKQorCSogMTYgYnBwIHRydWVjb2xvciBtb2RlIChSR0IgNTY1KQorCSogMzIgYnBwIHRydWVjb2xvciBtb2RlIChSR0IgODg4KQorCSogdGV4dCBtb2RlIChhY3RpdmF0ZWQgYnkgYnBwID0gMCkKKwkqIGRvdWJsZXNjYW4gbW9kZSB2YXJpYW50IChub3QgYXZhaWxhYmxlIGluIHRleHQgbW9kZSkKKwkqIHBhbm5pbmcgaW4gYm90aCBkaXJlY3Rpb25zCisJKiBzdXNwZW5kL3Jlc3VtZSBzdXBwb3J0CisJKiBEUE1TIHN1cHBvcnQKKworVGV4dCBtb2RlIGlzIHN1cHBvcnRlZCBldmVuIGluIGhpZ2hlciByZXNvbHV0aW9ucywgYnV0IHRoZXJlIGlzIGxpbWl0YXRpb24gdG8KK2xvd2VyIHBpeGNsb2NrcyAobWF4aW11bSBhYm91dCAxMDAgTUh6KS4gVGhpcyBsaW1pdGF0aW9uIGlzIG5vdCBlbmZvcmNlZCBieQorZHJpdmVyLiBUZXh0IG1vZGUgc3VwcG9ydHMgOGJpdCB3aWRlIGZvbnRzIG9ubHkgKGhhcmR3YXJlIGxpbWl0YXRpb24pIGFuZAorMTZiaXQgdGFsbCBmb250cyAoZHJpdmVyIGxpbWl0YXRpb24pLgorCitUaGVyZSBhcmUgdHdvIDQgYnBwIG1vZGVzLiBGaXJzdCBtb2RlIChzZWxlY3RlZCBpZiBub25zdGQgPT0gMCkgaXMgbW9kZSB3aXRoCitwYWNrZWQgcGl4ZWxzLCBoaWdoIG5pYmJsZSBmaXJzdC4gU2Vjb25kIG1vZGUgKHNlbGVjdGVkIGlmIG5vbnN0ZCA9PSAxKSBpcyBtb2RlCit3aXRoIGludGVybGVhdmVkIHBsYW5lcyAoMSBieXRlIGludGVybGVhdmUpLCBNU0IgZmlyc3QuIEJvdGggbW9kZXMgc3VwcG9ydAorOGJpdCB3aWRlIGZvbnRzIG9ubHkgKGRyaXZlciBsaW1pdGF0aW9uKS4KKworU3VzcGVuZC9yZXN1bWUgd29ya3Mgb24gc3lzdGVtcyB0aGF0IGluaXRpYWxpemUgdmlkZW8gY2FyZCBkdXJpbmcgcmVzdW1lIGFuZAoraWYgZGV2aWNlIGlzIGFjdGl2ZSAoZm9yIGV4YW1wbGUgdXNlZCBieSBmYmNvbikuCisKKworTWlzc2luZyBGZWF0dXJlcworPT09PT09PT09PT09PT09PQorKGFsaWFzIFRPRE8gbGlzdCkKKworCSogc2Vjb25kYXJ5IChub3QgaW5pdGlhbGl6ZWQgYnkgQklPUykgZGV2aWNlIHN1cHBvcnQKKwkqIE1NSU8gc3VwcG9ydAorCSogaW50ZXJsYWNlZCBtb2RlIHZhcmlhbnQKKwkqIHN1cHBvcnQgZm9yIGZvbnR3aWR0aHMgIT0gOCBpbiA0IGJwcCBtb2RlcworCSogc3VwcG9ydCBmb3IgZm9udGhlaWdodCAhPSAxNiBpbiB0ZXh0IG1vZGUKKwkqIGhhcmR3YXJlIGN1cnNvcgorCSogdmlkZW8gb3ZlcmxheSBzdXBwb3J0CisJKiB2c3luYyBzeW5jaHJvbml6YXRpb24KKwkqIGFjY2VsZXJhdGlvbiBzdXBwb3J0ICg4NTE0LWxpa2UgMkQsIGJ1c21hc3RlciB0cmFuc2ZlcnMpCisKKworS25vd24gYnVncworPT09PT09PT09PQorCisJKiBjdXJzb3IgZGlzYWJsZSBpbiB0ZXh0IG1vZGUgZG9lc24ndCB3b3JrCisKKworLS0KK09uZHJlaiBaYWppY2VrIDxzYW50aWFnb0BjcmZyZWVuZXQub3JnPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9hcmNoLXN1cHBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9hcmNoLXN1cHBvcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMmExMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2FyY2gtc3VwcG9ydC50eHQKQEAgLTAsMCArMSwxMSBAQAorCitGb3IgZ2VuZXJpYyBrZXJuZWwgZmVhdHVyZXMgdGhhdCBuZWVkIGFyY2hpdGVjdHVyZSBzdXBwb3J0LCB0aGUKK2FyY2gtc3VwcG9ydC50eHQgZmlsZSBpbiBlYWNoIGZlYXR1cmUgZGlyZWN0b3J5IHNob3dzIHRoZSBhcmNoCitzdXBwb3J0IG1hdHJpeCwgZm9yIGFsbCB1cHN0cmVhbSBMaW51eCBhcmNoaXRlY3R1cmVzLgorCitUaGUgbWVhbmluZyBvZiBlbnRyaWVzIGluIHRoZSB0YWJsZXMgaXM6CisKKyAgICB8IG9rIHwgICMgZmVhdHVyZSBzdXBwb3J0ZWQgYnkgdGhlIGFyY2hpdGVjdHVyZQorICAgIHxUT0RPfCAgIyBmZWF0dXJlIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5IHRoZSBhcmNoaXRlY3R1cmUKKyAgICB8IC4uIHwgICMgZmVhdHVyZSBjYW5ub3QgYmUgc3VwcG9ydGVkIGJ5IHRoZSBoYXJkd2FyZQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2NvcmUvQlBGLUpJVC9hcmNoLXN1cHBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9jb3JlL0JQRi1KSVQvYXJjaC1zdXBwb3J0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWI0ZjkxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9jb3JlL0JQRi1KSVQvYXJjaC1zdXBwb3J0LnR4dApAQCAtMCwwICsxLDQwIEBACisjCisjIEZlYXR1cmUgbmFtZTogICAgICAgICAgQlBGLUpJVAorIyAgICAgICAgIEtjb25maWc6ICAgICAgIEhBVkVfQlBGX0pJVAorIyAgICAgICAgIGRlc2NyaXB0aW9uOiAgIGFyY2ggc3VwcG9ydHMgQlBGIEpJVCBvcHRpbWl6YXRpb25zCisjCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgICAgYXJjaCB8c3RhdHVzfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICBhbHBoYTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYXJjOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBhcm06IHwgIG9rICB8CisgICAgfCAgICAgICBhcm02NDogfCAgb2sgIHwKKyAgICB8ICAgICAgIGF2cjMyOiB8IFRPRE8gfAorICAgIHwgICAgYmxhY2tmaW46IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGM2eDogfCBUT0RPIHwKKyAgICB8ICAgICAgICBjcmlzOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBmcnY6IHwgVE9ETyB8CisgICAgfCAgICAgICBoODMwMDogfCBUT0RPIHwKKyAgICB8ICAgICBoZXhhZ29uOiB8IFRPRE8gfAorICAgIHwgICAgICAgIGlhNjQ6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTMycjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtNjhrOiB8IFRPRE8gfAorICAgIHwgICAgICAgbWV0YWc6IHwgVE9ETyB8CisgICAgfCAgbWljcm9ibGF6ZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtaXBzOiB8ICBvayAgfAorICAgIHwgICAgIG1uMTAzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgICBuaW9zMjogfCBUT0RPIHwKKyAgICB8ICAgIG9wZW5yaXNjOiB8IFRPRE8gfAorICAgIHwgICAgICBwYXJpc2M6IHwgVE9ETyB8CisgICAgfCAgICAgcG93ZXJwYzogfCAgb2sgIHwKKyAgICB8ICAgICAgICBzMzkwOiB8ICBvayAgfAorICAgIHwgICAgICAgc2NvcmU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgICBzaDogfCBUT0RPIHwKKyAgICB8ICAgICAgIHNwYXJjOiB8ICBvayAgfAorICAgIHwgICAgICAgIHRpbGU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgICB1bTogfCBUT0RPIHwKKyAgICB8ICAgdW5pY29yZTMyOiB8IFRPRE8gfAorICAgIHwgICAgICAgICB4ODY6IHwgIG9rICB8CisgICAgfCAgICAgIHh0ZW5zYTogfCBUT0RPIHwKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9jb3JlL2dlbmVyaWMtaWRsZS10aHJlYWQvYXJjaC1zdXBwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvY29yZS9nZW5lcmljLWlkbGUtdGhyZWFkL2FyY2gtc3VwcG9ydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ5MzBmYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvY29yZS9nZW5lcmljLWlkbGUtdGhyZWFkL2FyY2gtc3VwcG9ydC50eHQKQEAgLTAsMCArMSw0MCBAQAorIworIyBGZWF0dXJlIG5hbWU6ICAgICAgICAgIGdlbmVyaWMtaWRsZS10aHJlYWQKKyMgICAgICAgICBLY29uZmlnOiAgICAgICBHRU5FUklDX1NNUF9JRExFX1RIUkVBRAorIyAgICAgICAgIGRlc2NyaXB0aW9uOiAgIGFyY2ggbWFrZXMgdXNlIG9mIHRoZSBnZW5lcmljIFNNUCBpZGxlIHRocmVhZCBmYWNpbGl0eQorIworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICAgIGFyY2ggfHN0YXR1c3wKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgYWxwaGE6IHwgIG9rICB8CisgICAgfCAgICAgICAgIGFyYzogfCAgb2sgIHwKKyAgICB8ICAgICAgICAgYXJtOiB8ICBvayAgfAorICAgIHwgICAgICAgYXJtNjQ6IHwgIG9rICB8CisgICAgfCAgICAgICBhdnIzMjogfCBUT0RPIHwKKyAgICB8ICAgIGJsYWNrZmluOiB8ICBvayAgfAorICAgIHwgICAgICAgICBjNng6IHwgVE9ETyB8CisgICAgfCAgICAgICAgY3JpczogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgZnJ2OiB8IFRPRE8gfAorICAgIHwgICAgICAgaDgzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgaGV4YWdvbjogfCAgb2sgIHwKKyAgICB8ICAgICAgICBpYTY0OiB8ICBvayAgfAorICAgIHwgICAgICAgIG0zMnI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTY4azogfCBUT0RPIHwKKyAgICB8ICAgICAgIG1ldGFnOiB8ICBvayAgfAorICAgIHwgIG1pY3JvYmxhemU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbWlwczogfCAgb2sgIHwKKyAgICB8ICAgICBtbjEwMzAwOiB8IFRPRE8gfAorICAgIHwgICAgICAgbmlvczI6IHwgVE9ETyB8CisgICAgfCAgICBvcGVucmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICAgcGFyaXNjOiB8ICBvayAgfAorICAgIHwgICAgIHBvd2VycGM6IHwgIG9rICB8CisgICAgfCAgICAgICAgczM5MDogfCAgb2sgIHwKKyAgICB8ICAgICAgIHNjb3JlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgc2g6IHwgIG9rICB8CisgICAgfCAgICAgICBzcGFyYzogfCAgb2sgIHwKKyAgICB8ICAgICAgICB0aWxlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgdW06IHwgVE9ETyB8CisgICAgfCAgIHVuaWNvcmUzMjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgeDg2OiB8ICBvayAgfAorICAgIHwgICAgICB4dGVuc2E6IHwgIG9rICB8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvY29yZS9qdW1wLWxhYmVscy9hcmNoLXN1cHBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9jb3JlL2p1bXAtbGFiZWxzL2FyY2gtc3VwcG9ydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM2ODY4YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvY29yZS9qdW1wLWxhYmVscy9hcmNoLXN1cHBvcnQudHh0CkBAIC0wLDAgKzEsNDAgQEAKKyMKKyMgRmVhdHVyZSBuYW1lOiAgICAgICAgICBqdW1wLWxhYmVscworIyAgICAgICAgIEtjb25maWc6ICAgICAgIEhBVkVfQVJDSF9KVU1QX0xBQkVMCisjICAgICAgICAgZGVzY3JpcHRpb246ICAgYXJjaCBzdXBwb3J0cyBsaXZlIHBhdGNoZWQsIGhpZ2ggZWZmaWNpZW5jeSBicmFuY2hlcworIworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICAgIGFyY2ggfHN0YXR1c3wKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgYWxwaGE6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFyYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYXJtOiB8ICBvayAgfAorICAgIHwgICAgICAgYXJtNjQ6IHwgIG9rICB8CisgICAgfCAgICAgICBhdnIzMjogfCBUT0RPIHwKKyAgICB8ICAgIGJsYWNrZmluOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBjNng6IHwgVE9ETyB8CisgICAgfCAgICAgICAgY3JpczogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgZnJ2OiB8IFRPRE8gfAorICAgIHwgICAgICAgaDgzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgaGV4YWdvbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBpYTY0OiB8IFRPRE8gfAorICAgIHwgICAgICAgIG0zMnI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTY4azogfCBUT0RPIHwKKyAgICB8ICAgICAgIG1ldGFnOiB8IFRPRE8gfAorICAgIHwgIG1pY3JvYmxhemU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbWlwczogfCAgb2sgIHwKKyAgICB8ICAgICBtbjEwMzAwOiB8IFRPRE8gfAorICAgIHwgICAgICAgbmlvczI6IHwgVE9ETyB8CisgICAgfCAgICBvcGVucmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICAgcGFyaXNjOiB8IFRPRE8gfAorICAgIHwgICAgIHBvd2VycGM6IHwgIG9rICB8CisgICAgfCAgICAgICAgczM5MDogfCAgb2sgIHwKKyAgICB8ICAgICAgIHNjb3JlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgc2g6IHwgVE9ETyB8CisgICAgfCAgICAgICBzcGFyYzogfCAgb2sgIHwKKyAgICB8ICAgICAgICB0aWxlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgdW06IHwgVE9ETyB8CisgICAgfCAgIHVuaWNvcmUzMjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgeDg2OiB8ICBvayAgfAorICAgIHwgICAgICB4dGVuc2E6IHwgVE9ETyB8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvY29yZS90cmFjZWhvb2svYXJjaC1zdXBwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvY29yZS90cmFjZWhvb2svYXJjaC1zdXBwb3J0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjgwNjFkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9jb3JlL3RyYWNlaG9vay9hcmNoLXN1cHBvcnQudHh0CkBAIC0wLDAgKzEsNDAgQEAKKyMKKyMgRmVhdHVyZSBuYW1lOiAgICAgICAgICB0cmFjZWhvb2sKKyMgICAgICAgICBLY29uZmlnOiAgICAgICBIQVZFX0FSQ0hfVFJBQ0VIT09LCisjICAgICAgICAgZGVzY3JpcHRpb246ICAgYXJjaCBzdXBwb3J0cyB0cmFjZWhvb2sgKHB0cmFjZSkgcmVnaXN0ZXIgaGFuZGxpbmcgQVBJcworIworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICAgIGFyY2ggfHN0YXR1c3wKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgYWxwaGE6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFyYzogfCAgb2sgIHwKKyAgICB8ICAgICAgICAgYXJtOiB8ICBvayAgfAorICAgIHwgICAgICAgYXJtNjQ6IHwgIG9rICB8CisgICAgfCAgICAgICBhdnIzMjogfCBUT0RPIHwKKyAgICB8ICAgIGJsYWNrZmluOiB8ICBvayAgfAorICAgIHwgICAgICAgICBjNng6IHwgIG9rICB8CisgICAgfCAgICAgICAgY3JpczogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgZnJ2OiB8ICBvayAgfAorICAgIHwgICAgICAgaDgzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgaGV4YWdvbjogfCAgb2sgIHwKKyAgICB8ICAgICAgICBpYTY0OiB8ICBvayAgfAorICAgIHwgICAgICAgIG0zMnI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTY4azogfCBUT0RPIHwKKyAgICB8ICAgICAgIG1ldGFnOiB8ICBvayAgfAorICAgIHwgIG1pY3JvYmxhemU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbWlwczogfCAgb2sgIHwKKyAgICB8ICAgICBtbjEwMzAwOiB8ICBvayAgfAorICAgIHwgICAgICAgbmlvczI6IHwgIG9rICB8CisgICAgfCAgICBvcGVucmlzYzogfCAgb2sgIHwKKyAgICB8ICAgICAgcGFyaXNjOiB8IFRPRE8gfAorICAgIHwgICAgIHBvd2VycGM6IHwgIG9rICB8CisgICAgfCAgICAgICAgczM5MDogfCAgb2sgIHwKKyAgICB8ICAgICAgIHNjb3JlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgc2g6IHwgIG9rICB8CisgICAgfCAgICAgICBzcGFyYzogfCAgb2sgIHwKKyAgICB8ICAgICAgICB0aWxlOiB8ICBvayAgfAorICAgIHwgICAgICAgICAgdW06IHwgVE9ETyB8CisgICAgfCAgIHVuaWNvcmUzMjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgeDg2OiB8ICBvayAgfAorICAgIHwgICAgICB4dGVuc2E6IHwgVE9ETyB8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvZGVidWcvS0FTQU4vYXJjaC1zdXBwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvZGVidWcvS0FTQU4vYXJjaC1zdXBwb3J0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDNmNTc4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9kZWJ1Zy9LQVNBTi9hcmNoLXN1cHBvcnQudHh0CkBAIC0wLDAgKzEsNDAgQEAKKyMKKyMgRmVhdHVyZSBuYW1lOiAgICAgICAgICBLQVNBTgorIyAgICAgICAgIEtjb25maWc6ICAgICAgIEhBVkVfQVJDSF9LQVNBTgorIyAgICAgICAgIGRlc2NyaXB0aW9uOiAgIGFyY2ggc3VwcG9ydHMgdGhlIEtBU0FOIHJ1bnRpbWUgbWVtb3J5IGNoZWNrZXIKKyMKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgICBhcmNoIHxzdGF0dXN8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgIGFscGhhOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFybTogfCBUT0RPIHwKKyAgICB8ICAgICAgIGFybTY0OiB8ICBvayAgfAorICAgIHwgICAgICAgYXZyMzI6IHwgVE9ETyB8CisgICAgfCAgICBibGFja2ZpbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYzZ4OiB8IFRPRE8gfAorICAgIHwgICAgICAgIGNyaXM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGZydjogfCBUT0RPIHwKKyAgICB8ICAgICAgIGg4MzAwOiB8IFRPRE8gfAorICAgIHwgICAgIGhleGFnb246IHwgVE9ETyB8CisgICAgfCAgICAgICAgaWE2NDogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtMzJyOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG02OGs6IHwgVE9ETyB8CisgICAgfCAgICAgICBtZXRhZzogfCBUT0RPIHwKKyAgICB8ICBtaWNyb2JsYXplOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG1pcHM6IHwgVE9ETyB8CisgICAgfCAgICAgbW4xMDMwMDogfCBUT0RPIHwKKyAgICB8ICAgICAgIG5pb3MyOiB8IFRPRE8gfAorICAgIHwgICAgb3BlbnJpc2M6IHwgVE9ETyB8CisgICAgfCAgICAgIHBhcmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICBwb3dlcnBjOiB8IFRPRE8gfAorICAgIHwgICAgICAgIHMzOTA6IHwgVE9ETyB8CisgICAgfCAgICAgICBzY29yZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgIHNoOiB8IFRPRE8gfAorICAgIHwgICAgICAgc3BhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgdGlsZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgIHVtOiB8IFRPRE8gfAorICAgIHwgICB1bmljb3JlMzI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIHg4NjogfCAgb2sgIHwKKyAgICB8ICAgICAgeHRlbnNhOiB8IFRPRE8gfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2RlYnVnL2djb3YtcHJvZmlsZS1hbGwvYXJjaC1zdXBwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvZGVidWcvZ2Nvdi1wcm9maWxlLWFsbC9hcmNoLXN1cHBvcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4ZGVhOGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2RlYnVnL2djb3YtcHJvZmlsZS1hbGwvYXJjaC1zdXBwb3J0LnR4dApAQCAtMCwwICsxLDQwIEBACisjCisjIEZlYXR1cmUgbmFtZTogICAgICAgICAgZ2Nvdi1wcm9maWxlLWFsbAorIyAgICAgICAgIEtjb25maWc6ICAgICAgIEFSQ0hfSEFTX0dDT1ZfUFJPRklMRV9BTEwKKyMgICAgICAgICBkZXNjcmlwdGlvbjogICBhcmNoIHN1cHBvcnRzIHdob2xlLWtlcm5lbCBHQ09WIGNvZGUgY292ZXJhZ2UgcHJvZmlsaW5nCisjCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgICAgYXJjaCB8c3RhdHVzfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICBhbHBoYTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYXJjOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBhcm06IHwgIG9rICB8CisgICAgfCAgICAgICBhcm02NDogfCAgb2sgIHwKKyAgICB8ICAgICAgIGF2cjMyOiB8IFRPRE8gfAorICAgIHwgICAgYmxhY2tmaW46IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGM2eDogfCBUT0RPIHwKKyAgICB8ICAgICAgICBjcmlzOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBmcnY6IHwgVE9ETyB8CisgICAgfCAgICAgICBoODMwMDogfCBUT0RPIHwKKyAgICB8ICAgICBoZXhhZ29uOiB8IFRPRE8gfAorICAgIHwgICAgICAgIGlhNjQ6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTMycjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtNjhrOiB8IFRPRE8gfAorICAgIHwgICAgICAgbWV0YWc6IHwgVE9ETyB8CisgICAgfCAgbWljcm9ibGF6ZTogfCAgb2sgIHwKKyAgICB8ICAgICAgICBtaXBzOiB8IFRPRE8gfAorICAgIHwgICAgIG1uMTAzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgICBuaW9zMjogfCBUT0RPIHwKKyAgICB8ICAgIG9wZW5yaXNjOiB8IFRPRE8gfAorICAgIHwgICAgICBwYXJpc2M6IHwgVE9ETyB8CisgICAgfCAgICAgcG93ZXJwYzogfCAgb2sgIHwKKyAgICB8ICAgICAgICBzMzkwOiB8ICBvayAgfAorICAgIHwgICAgICAgc2NvcmU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgICBzaDogfCAgb2sgIHwKKyAgICB8ICAgICAgIHNwYXJjOiB8IFRPRE8gfAorICAgIHwgICAgICAgIHRpbGU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgICB1bTogfCBUT0RPIHwKKyAgICB8ICAgdW5pY29yZTMyOiB8IFRPRE8gfAorICAgIHwgICAgICAgICB4ODY6IHwgIG9rICB8CisgICAgfCAgICAgIHh0ZW5zYTogfCBUT0RPIHwKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9kZWJ1Zy9rZ2RiL2FyY2gtc3VwcG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2RlYnVnL2tnZGIvYXJjaC1zdXBwb3J0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjJlMTVkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9kZWJ1Zy9rZ2RiL2FyY2gtc3VwcG9ydC50eHQKQEAgLTAsMCArMSw0MCBAQAorIworIyBGZWF0dXJlIG5hbWU6ICAgICAgICAgIGtnZGIKKyMgICAgICAgICBLY29uZmlnOiAgICAgICBIQVZFX0FSQ0hfS0dEQgorIyAgICAgICAgIGRlc2NyaXB0aW9uOiAgIGFyY2ggc3VwcG9ydHMgdGhlIGtHREIga2VybmVsIGRlYnVnZ2VyCisjCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgICAgYXJjaCB8c3RhdHVzfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICBhbHBoYTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYXJjOiB8ICBvayAgfAorICAgIHwgICAgICAgICBhcm06IHwgIG9rICB8CisgICAgfCAgICAgICBhcm02NDogfCAgb2sgIHwKKyAgICB8ICAgICAgIGF2cjMyOiB8IFRPRE8gfAorICAgIHwgICAgYmxhY2tmaW46IHwgIG9rICB8CisgICAgfCAgICAgICAgIGM2eDogfCBUT0RPIHwKKyAgICB8ICAgICAgICBjcmlzOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBmcnY6IHwgVE9ETyB8CisgICAgfCAgICAgICBoODMwMDogfCBUT0RPIHwKKyAgICB8ICAgICBoZXhhZ29uOiB8ICBvayAgfAorICAgIHwgICAgICAgIGlhNjQ6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTMycjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtNjhrOiB8IFRPRE8gfAorICAgIHwgICAgICAgbWV0YWc6IHwgVE9ETyB8CisgICAgfCAgbWljcm9ibGF6ZTogfCAgb2sgIHwKKyAgICB8ICAgICAgICBtaXBzOiB8ICBvayAgfAorICAgIHwgICAgIG1uMTAzMDA6IHwgIG9rICB8CisgICAgfCAgICAgICBuaW9zMjogfCAgb2sgIHwKKyAgICB8ICAgIG9wZW5yaXNjOiB8IFRPRE8gfAorICAgIHwgICAgICBwYXJpc2M6IHwgVE9ETyB8CisgICAgfCAgICAgcG93ZXJwYzogfCAgb2sgIHwKKyAgICB8ICAgICAgICBzMzkwOiB8IFRPRE8gfAorICAgIHwgICAgICAgc2NvcmU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgICBzaDogfCAgb2sgIHwKKyAgICB8ICAgICAgIHNwYXJjOiB8ICBvayAgfAorICAgIHwgICAgICAgIHRpbGU6IHwgIG9rICB8CisgICAgfCAgICAgICAgICB1bTogfCBUT0RPIHwKKyAgICB8ICAgdW5pY29yZTMyOiB8IFRPRE8gfAorICAgIHwgICAgICAgICB4ODY6IHwgIG9rICB8CisgICAgfCAgICAgIHh0ZW5zYTogfCBUT0RPIHwKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9kZWJ1Zy9rcHJvYmVzLW9uLWZ0cmFjZS9hcmNoLXN1cHBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9kZWJ1Zy9rcHJvYmVzLW9uLWZ0cmFjZS9hcmNoLXN1cHBvcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZjQ0ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2RlYnVnL2twcm9iZXMtb24tZnRyYWNlL2FyY2gtc3VwcG9ydC50eHQKQEAgLTAsMCArMSw0MCBAQAorIworIyBGZWF0dXJlIG5hbWU6ICAgICAgICAgIGtwcm9iZXMtb24tZnRyYWNlCisjICAgICAgICAgS2NvbmZpZzogICAgICAgSEFWRV9LUFJPQkVTX09OX0ZUUkFDRQorIyAgICAgICAgIGRlc2NyaXB0aW9uOiAgIGFyY2ggc3VwcG9ydHMgY29tYmluZWQga3Byb2JlcyBhbmQgZnRyYWNlIGxpdmUgcGF0Y2hpbmcKKyMKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgICBhcmNoIHxzdGF0dXN8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgIGFscGhhOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFybTogfCBUT0RPIHwKKyAgICB8ICAgICAgIGFybTY0OiB8IFRPRE8gfAorICAgIHwgICAgICAgYXZyMzI6IHwgVE9ETyB8CisgICAgfCAgICBibGFja2ZpbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYzZ4OiB8IFRPRE8gfAorICAgIHwgICAgICAgIGNyaXM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGZydjogfCBUT0RPIHwKKyAgICB8ICAgICAgIGg4MzAwOiB8IFRPRE8gfAorICAgIHwgICAgIGhleGFnb246IHwgVE9ETyB8CisgICAgfCAgICAgICAgaWE2NDogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtMzJyOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG02OGs6IHwgVE9ETyB8CisgICAgfCAgICAgICBtZXRhZzogfCBUT0RPIHwKKyAgICB8ICBtaWNyb2JsYXplOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG1pcHM6IHwgVE9ETyB8CisgICAgfCAgICAgbW4xMDMwMDogfCBUT0RPIHwKKyAgICB8ICAgICAgIG5pb3MyOiB8IFRPRE8gfAorICAgIHwgICAgb3BlbnJpc2M6IHwgVE9ETyB8CisgICAgfCAgICAgIHBhcmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICBwb3dlcnBjOiB8IFRPRE8gfAorICAgIHwgICAgICAgIHMzOTA6IHwgVE9ETyB8CisgICAgfCAgICAgICBzY29yZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgIHNoOiB8IFRPRE8gfAorICAgIHwgICAgICAgc3BhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgdGlsZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgIHVtOiB8IFRPRE8gfAorICAgIHwgICB1bmljb3JlMzI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIHg4NjogfCAgb2sgIHwKKyAgICB8ICAgICAgeHRlbnNhOiB8IFRPRE8gfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2RlYnVnL2twcm9iZXMvYXJjaC1zdXBwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvZGVidWcva3Byb2Jlcy9hcmNoLXN1cHBvcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0NGJmZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2RlYnVnL2twcm9iZXMvYXJjaC1zdXBwb3J0LnR4dApAQCAtMCwwICsxLDQwIEBACisjCisjIEZlYXR1cmUgbmFtZTogICAgICAgICAga3Byb2JlcworIyAgICAgICAgIEtjb25maWc6ICAgICAgIEhBVkVfS1BST0JFUworIyAgICAgICAgIGRlc2NyaXB0aW9uOiAgIGFyY2ggc3VwcG9ydHMgbGl2ZSBwYXRjaGVkIGtlcm5lbCBwcm9iZQorIworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICAgIGFyY2ggfHN0YXR1c3wKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgYWxwaGE6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFyYzogfCAgb2sgIHwKKyAgICB8ICAgICAgICAgYXJtOiB8ICBvayAgfAorICAgIHwgICAgICAgYXJtNjQ6IHwgVE9ETyB8CisgICAgfCAgICAgICBhdnIzMjogfCAgb2sgIHwKKyAgICB8ICAgIGJsYWNrZmluOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBjNng6IHwgVE9ETyB8CisgICAgfCAgICAgICAgY3JpczogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgZnJ2OiB8IFRPRE8gfAorICAgIHwgICAgICAgaDgzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgaGV4YWdvbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBpYTY0OiB8ICBvayAgfAorICAgIHwgICAgICAgIG0zMnI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTY4azogfCBUT0RPIHwKKyAgICB8ICAgICAgIG1ldGFnOiB8IFRPRE8gfAorICAgIHwgIG1pY3JvYmxhemU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbWlwczogfCAgb2sgIHwKKyAgICB8ICAgICBtbjEwMzAwOiB8IFRPRE8gfAorICAgIHwgICAgICAgbmlvczI6IHwgVE9ETyB8CisgICAgfCAgICBvcGVucmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICAgcGFyaXNjOiB8IFRPRE8gfAorICAgIHwgICAgIHBvd2VycGM6IHwgIG9rICB8CisgICAgfCAgICAgICAgczM5MDogfCAgb2sgIHwKKyAgICB8ICAgICAgIHNjb3JlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgc2g6IHwgIG9rICB8CisgICAgfCAgICAgICBzcGFyYzogfCAgb2sgIHwKKyAgICB8ICAgICAgICB0aWxlOiB8ICBvayAgfAorICAgIHwgICAgICAgICAgdW06IHwgVE9ETyB8CisgICAgfCAgIHVuaWNvcmUzMjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgeDg2OiB8ICBvayAgfAorICAgIHwgICAgICB4dGVuc2E6IHwgVE9ETyB8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvZGVidWcva3JldHByb2Jlcy9hcmNoLXN1cHBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9kZWJ1Zy9rcmV0cHJvYmVzL2FyY2gtc3VwcG9ydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg3YzFjZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvZGVidWcva3JldHByb2Jlcy9hcmNoLXN1cHBvcnQudHh0CkBAIC0wLDAgKzEsNDAgQEAKKyMKKyMgRmVhdHVyZSBuYW1lOiAgICAgICAgICBrcmV0cHJvYmVzCisjICAgICAgICAgS2NvbmZpZzogICAgICAgSEFWRV9LUkVUUFJPQkVTCisjICAgICAgICAgZGVzY3JpcHRpb246ICAgYXJjaCBzdXBwb3J0cyBrZXJuZWwgZnVuY3Rpb24tcmV0dXJuIHByb2JlcworIworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICAgIGFyY2ggfHN0YXR1c3wKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgYWxwaGE6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFyYzogfCAgb2sgIHwKKyAgICB8ICAgICAgICAgYXJtOiB8ICBvayAgfAorICAgIHwgICAgICAgYXJtNjQ6IHwgVE9ETyB8CisgICAgfCAgICAgICBhdnIzMjogfCBUT0RPIHwKKyAgICB8ICAgIGJsYWNrZmluOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBjNng6IHwgVE9ETyB8CisgICAgfCAgICAgICAgY3JpczogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgZnJ2OiB8IFRPRE8gfAorICAgIHwgICAgICAgaDgzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgaGV4YWdvbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBpYTY0OiB8ICBvayAgfAorICAgIHwgICAgICAgIG0zMnI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTY4azogfCBUT0RPIHwKKyAgICB8ICAgICAgIG1ldGFnOiB8IFRPRE8gfAorICAgIHwgIG1pY3JvYmxhemU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbWlwczogfCAgb2sgIHwKKyAgICB8ICAgICBtbjEwMzAwOiB8IFRPRE8gfAorICAgIHwgICAgICAgbmlvczI6IHwgVE9ETyB8CisgICAgfCAgICBvcGVucmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICAgcGFyaXNjOiB8IFRPRE8gfAorICAgIHwgICAgIHBvd2VycGM6IHwgIG9rICB8CisgICAgfCAgICAgICAgczM5MDogfCAgb2sgIHwKKyAgICB8ICAgICAgIHNjb3JlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgc2g6IHwgIG9rICB8CisgICAgfCAgICAgICBzcGFyYzogfCAgb2sgIHwKKyAgICB8ICAgICAgICB0aWxlOiB8ICBvayAgfAorICAgIHwgICAgICAgICAgdW06IHwgVE9ETyB8CisgICAgfCAgIHVuaWNvcmUzMjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgeDg2OiB8ICBvayAgfAorICAgIHwgICAgICB4dGVuc2E6IHwgVE9ETyB8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvZGVidWcvb3B0cHJvYmVzL2FyY2gtc3VwcG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2RlYnVnL29wdHByb2Jlcy9hcmNoLXN1cHBvcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4OTk5ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2RlYnVnL29wdHByb2Jlcy9hcmNoLXN1cHBvcnQudHh0CkBAIC0wLDAgKzEsNDAgQEAKKyMKKyMgRmVhdHVyZSBuYW1lOiAgICAgICAgICBvcHRwcm9iZXMKKyMgICAgICAgICBLY29uZmlnOiAgICAgICBIQVZFX09QVFBST0JFUworIyAgICAgICAgIGRlc2NyaXB0aW9uOiAgIGFyY2ggc3VwcG9ydHMgbGl2ZSBwYXRjaGVkIG9wdHByb2JlcworIworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICAgIGFyY2ggfHN0YXR1c3wKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgYWxwaGE6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFyYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYXJtOiB8ICBvayAgfAorICAgIHwgICAgICAgYXJtNjQ6IHwgVE9ETyB8CisgICAgfCAgICAgICBhdnIzMjogfCBUT0RPIHwKKyAgICB8ICAgIGJsYWNrZmluOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBjNng6IHwgVE9ETyB8CisgICAgfCAgICAgICAgY3JpczogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgZnJ2OiB8IFRPRE8gfAorICAgIHwgICAgICAgaDgzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgaGV4YWdvbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBpYTY0OiB8IFRPRE8gfAorICAgIHwgICAgICAgIG0zMnI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTY4azogfCBUT0RPIHwKKyAgICB8ICAgICAgIG1ldGFnOiB8IFRPRE8gfAorICAgIHwgIG1pY3JvYmxhemU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbWlwczogfCBUT0RPIHwKKyAgICB8ICAgICBtbjEwMzAwOiB8IFRPRE8gfAorICAgIHwgICAgICAgbmlvczI6IHwgVE9ETyB8CisgICAgfCAgICBvcGVucmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICAgcGFyaXNjOiB8IFRPRE8gfAorICAgIHwgICAgIHBvd2VycGM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgczM5MDogfCBUT0RPIHwKKyAgICB8ICAgICAgIHNjb3JlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgc2g6IHwgVE9ETyB8CisgICAgfCAgICAgICBzcGFyYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICB0aWxlOiB8ICBvayAgfAorICAgIHwgICAgICAgICAgdW06IHwgVE9ETyB8CisgICAgfCAgIHVuaWNvcmUzMjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgeDg2OiB8ICBvayAgfAorICAgIHwgICAgICB4dGVuc2E6IHwgVE9ETyB8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvZGVidWcvc3RhY2twcm90ZWN0b3IvYXJjaC1zdXBwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvZGVidWcvc3RhY2twcm90ZWN0b3IvYXJjaC1zdXBwb3J0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmE0MjMzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9kZWJ1Zy9zdGFja3Byb3RlY3Rvci9hcmNoLXN1cHBvcnQudHh0CkBAIC0wLDAgKzEsNDAgQEAKKyMKKyMgRmVhdHVyZSBuYW1lOiAgICAgICAgICBzdGFja3Byb3RlY3RvcgorIyAgICAgICAgIEtjb25maWc6ICAgICAgIEhBVkVfQ0NfU1RBQ0tQUk9URUNUT1IKKyMgICAgICAgICBkZXNjcmlwdGlvbjogICBhcmNoIHN1cHBvcnRzIGNvbXBpbGVyIGRyaXZlbiBzdGFjayBvdmVyZmxvdyBwcm90ZWN0aW9uCisjCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgICAgYXJjaCB8c3RhdHVzfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICBhbHBoYTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYXJjOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBhcm06IHwgIG9rICB8CisgICAgfCAgICAgICBhcm02NDogfCAgb2sgIHwKKyAgICB8ICAgICAgIGF2cjMyOiB8IFRPRE8gfAorICAgIHwgICAgYmxhY2tmaW46IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGM2eDogfCBUT0RPIHwKKyAgICB8ICAgICAgICBjcmlzOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBmcnY6IHwgVE9ETyB8CisgICAgfCAgICAgICBoODMwMDogfCBUT0RPIHwKKyAgICB8ICAgICBoZXhhZ29uOiB8IFRPRE8gfAorICAgIHwgICAgICAgIGlhNjQ6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTMycjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtNjhrOiB8IFRPRE8gfAorICAgIHwgICAgICAgbWV0YWc6IHwgVE9ETyB8CisgICAgfCAgbWljcm9ibGF6ZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtaXBzOiB8ICBvayAgfAorICAgIHwgICAgIG1uMTAzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgICBuaW9zMjogfCBUT0RPIHwKKyAgICB8ICAgIG9wZW5yaXNjOiB8IFRPRE8gfAorICAgIHwgICAgICBwYXJpc2M6IHwgVE9ETyB8CisgICAgfCAgICAgcG93ZXJwYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICBzMzkwOiB8IFRPRE8gfAorICAgIHwgICAgICAgc2NvcmU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgICBzaDogfCAgb2sgIHwKKyAgICB8ICAgICAgIHNwYXJjOiB8IFRPRE8gfAorICAgIHwgICAgICAgIHRpbGU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgICB1bTogfCBUT0RPIHwKKyAgICB8ICAgdW5pY29yZTMyOiB8IFRPRE8gfAorICAgIHwgICAgICAgICB4ODY6IHwgIG9rICB8CisgICAgfCAgICAgIHh0ZW5zYTogfCBUT0RPIHwKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9kZWJ1Zy91cHJvYmVzL2FyY2gtc3VwcG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2RlYnVnL3Vwcm9iZXMvYXJjaC1zdXBwb3J0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjA1YzNmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9kZWJ1Zy91cHJvYmVzL2FyY2gtc3VwcG9ydC50eHQKQEAgLTAsMCArMSw0MCBAQAorIworIyBGZWF0dXJlIG5hbWU6ICAgICAgICAgIHVwcm9iZXMKKyMgICAgICAgICBLY29uZmlnOiAgICAgICBBUkNIX1NVUFBPUlRTX1VQUk9CRVMKKyMgICAgICAgICBkZXNjcmlwdGlvbjogICBhcmNoIHN1cHBvcnRzIGxpdmUgcGF0Y2hlZCB1c2VyIHByb2JlcworIworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICAgIGFyY2ggfHN0YXR1c3wKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgYWxwaGE6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFyYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYXJtOiB8ICBvayAgfAorICAgIHwgICAgICAgYXJtNjQ6IHwgVE9ETyB8CisgICAgfCAgICAgICBhdnIzMjogfCBUT0RPIHwKKyAgICB8ICAgIGJsYWNrZmluOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBjNng6IHwgVE9ETyB8CisgICAgfCAgICAgICAgY3JpczogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgZnJ2OiB8IFRPRE8gfAorICAgIHwgICAgICAgaDgzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgaGV4YWdvbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBpYTY0OiB8IFRPRE8gfAorICAgIHwgICAgICAgIG0zMnI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTY4azogfCBUT0RPIHwKKyAgICB8ICAgICAgIG1ldGFnOiB8IFRPRE8gfAorICAgIHwgIG1pY3JvYmxhemU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbWlwczogfCAgb2sgIHwKKyAgICB8ICAgICBtbjEwMzAwOiB8IFRPRE8gfAorICAgIHwgICAgICAgbmlvczI6IHwgVE9ETyB8CisgICAgfCAgICBvcGVucmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICAgcGFyaXNjOiB8IFRPRE8gfAorICAgIHwgICAgIHBvd2VycGM6IHwgIG9rICB8CisgICAgfCAgICAgICAgczM5MDogfCAgb2sgIHwKKyAgICB8ICAgICAgIHNjb3JlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgc2g6IHwgVE9ETyB8CisgICAgfCAgICAgICBzcGFyYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICB0aWxlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgdW06IHwgVE9ETyB8CisgICAgfCAgIHVuaWNvcmUzMjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgeDg2OiB8ICBvayAgfAorICAgIHwgICAgICB4dGVuc2E6IHwgVE9ETyB8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvZGVidWcvdXNlci1yZXQtcHJvZmlsZXIvYXJjaC1zdXBwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvZGVidWcvdXNlci1yZXQtcHJvZmlsZXIvYXJjaC1zdXBwb3J0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGNjMWZmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9kZWJ1Zy91c2VyLXJldC1wcm9maWxlci9hcmNoLXN1cHBvcnQudHh0CkBAIC0wLDAgKzEsNDAgQEAKKyMKKyMgRmVhdHVyZSBuYW1lOiAgICAgICAgICB1c2VyLXJldC1wcm9maWxlcgorIyAgICAgICAgIEtjb25maWc6ICAgICAgIEhBVkVfVVNFUl9SRVRVUk5fTk9USUZJRVIKKyMgICAgICAgICBkZXNjcmlwdGlvbjogICBhcmNoIHN1cHBvcnRzIHVzZXItc3BhY2UgcmV0dXJuIGZyb20gc3lzdGVtIGNhbGwgcHJvZmlsZXIKKyMKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgICBhcmNoIHxzdGF0dXN8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgIGFscGhhOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFybTogfCBUT0RPIHwKKyAgICB8ICAgICAgIGFybTY0OiB8IFRPRE8gfAorICAgIHwgICAgICAgYXZyMzI6IHwgVE9ETyB8CisgICAgfCAgICBibGFja2ZpbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYzZ4OiB8IFRPRE8gfAorICAgIHwgICAgICAgIGNyaXM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGZydjogfCBUT0RPIHwKKyAgICB8ICAgICAgIGg4MzAwOiB8IFRPRE8gfAorICAgIHwgICAgIGhleGFnb246IHwgVE9ETyB8CisgICAgfCAgICAgICAgaWE2NDogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtMzJyOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG02OGs6IHwgVE9ETyB8CisgICAgfCAgICAgICBtZXRhZzogfCBUT0RPIHwKKyAgICB8ICBtaWNyb2JsYXplOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG1pcHM6IHwgVE9ETyB8CisgICAgfCAgICAgbW4xMDMwMDogfCBUT0RPIHwKKyAgICB8ICAgICAgIG5pb3MyOiB8IFRPRE8gfAorICAgIHwgICAgb3BlbnJpc2M6IHwgVE9ETyB8CisgICAgfCAgICAgIHBhcmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICBwb3dlcnBjOiB8IFRPRE8gfAorICAgIHwgICAgICAgIHMzOTA6IHwgVE9ETyB8CisgICAgfCAgICAgICBzY29yZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgIHNoOiB8IFRPRE8gfAorICAgIHwgICAgICAgc3BhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgdGlsZTogfCAgb2sgIHwKKyAgICB8ICAgICAgICAgIHVtOiB8IFRPRE8gfAorICAgIHwgICB1bmljb3JlMzI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIHg4NjogfCAgb2sgIHwKKyAgICB8ICAgICAgeHRlbnNhOiB8IFRPRE8gfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2lvL2RtYS1hcGktZGVidWcvYXJjaC1zdXBwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvaW8vZG1hLWFwaS1kZWJ1Zy9hcmNoLXN1cHBvcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmNGEzNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2lvL2RtYS1hcGktZGVidWcvYXJjaC1zdXBwb3J0LnR4dApAQCAtMCwwICsxLDQwIEBACisjCisjIEZlYXR1cmUgbmFtZTogICAgICAgICAgZG1hLWFwaS1kZWJ1ZworIyAgICAgICAgIEtjb25maWc6ICAgICAgIEhBVkVfRE1BX0FQSV9ERUJVRworIyAgICAgICAgIGRlc2NyaXB0aW9uOiAgIGFyY2ggc3VwcG9ydHMgRE1BIGRlYnVnIGZhY2lsaXRpZXMKKyMKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgICBhcmNoIHxzdGF0dXN8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgIGFscGhhOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFybTogfCAgb2sgIHwKKyAgICB8ICAgICAgIGFybTY0OiB8ICBvayAgfAorICAgIHwgICAgICAgYXZyMzI6IHwgVE9ETyB8CisgICAgfCAgICBibGFja2ZpbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYzZ4OiB8ICBvayAgfAorICAgIHwgICAgICAgIGNyaXM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGZydjogfCBUT0RPIHwKKyAgICB8ICAgICAgIGg4MzAwOiB8IFRPRE8gfAorICAgIHwgICAgIGhleGFnb246IHwgVE9ETyB8CisgICAgfCAgICAgICAgaWE2NDogfCAgb2sgIHwKKyAgICB8ICAgICAgICBtMzJyOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG02OGs6IHwgVE9ETyB8CisgICAgfCAgICAgICBtZXRhZzogfCBUT0RPIHwKKyAgICB8ICBtaWNyb2JsYXplOiB8ICBvayAgfAorICAgIHwgICAgICAgIG1pcHM6IHwgIG9rICB8CisgICAgfCAgICAgbW4xMDMwMDogfCBUT0RPIHwKKyAgICB8ICAgICAgIG5pb3MyOiB8IFRPRE8gfAorICAgIHwgICAgb3BlbnJpc2M6IHwgVE9ETyB8CisgICAgfCAgICAgIHBhcmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICBwb3dlcnBjOiB8ICBvayAgfAorICAgIHwgICAgICAgIHMzOTA6IHwgIG9rICB8CisgICAgfCAgICAgICBzY29yZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgIHNoOiB8ICBvayAgfAorICAgIHwgICAgICAgc3BhcmM6IHwgIG9rICB8CisgICAgfCAgICAgICAgdGlsZTogfCAgb2sgIHwKKyAgICB8ICAgICAgICAgIHVtOiB8IFRPRE8gfAorICAgIHwgICB1bmljb3JlMzI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIHg4NjogfCAgb2sgIHwKKyAgICB8ICAgICAgeHRlbnNhOiB8IFRPRE8gfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2lvL2RtYS1jb250aWd1b3VzL2FyY2gtc3VwcG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2lvL2RtYS1jb250aWd1b3VzL2FyY2gtc3VwcG9ydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk3ZThlMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvaW8vZG1hLWNvbnRpZ3VvdXMvYXJjaC1zdXBwb3J0LnR4dApAQCAtMCwwICsxLDQwIEBACisjCisjIEZlYXR1cmUgbmFtZTogICAgICAgICAgZG1hLWNvbnRpZ3VvdXMKKyMgICAgICAgICBLY29uZmlnOiAgICAgICBIQVZFX0RNQV9DT05USUdVT1VTCisjICAgICAgICAgZGVzY3JpcHRpb246ICAgYXJjaCBzdXBwb3J0cyB0aGUgRE1BIENNQSAoY29udGludW91cyBtZW1vcnkgYWxsb2NhdG9yKQorIworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICAgIGFyY2ggfHN0YXR1c3wKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgYWxwaGE6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFyYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYXJtOiB8ICBvayAgfAorICAgIHwgICAgICAgYXJtNjQ6IHwgIG9rICB8CisgICAgfCAgICAgICBhdnIzMjogfCBUT0RPIHwKKyAgICB8ICAgIGJsYWNrZmluOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBjNng6IHwgVE9ETyB8CisgICAgfCAgICAgICAgY3JpczogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgZnJ2OiB8IFRPRE8gfAorICAgIHwgICAgICAgaDgzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgaGV4YWdvbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBpYTY0OiB8IFRPRE8gfAorICAgIHwgICAgICAgIG0zMnI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTY4azogfCBUT0RPIHwKKyAgICB8ICAgICAgIG1ldGFnOiB8IFRPRE8gfAorICAgIHwgIG1pY3JvYmxhemU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbWlwczogfCAgb2sgIHwKKyAgICB8ICAgICBtbjEwMzAwOiB8IFRPRE8gfAorICAgIHwgICAgICAgbmlvczI6IHwgVE9ETyB8CisgICAgfCAgICBvcGVucmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICAgcGFyaXNjOiB8IFRPRE8gfAorICAgIHwgICAgIHBvd2VycGM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgczM5MDogfCBUT0RPIHwKKyAgICB8ICAgICAgIHNjb3JlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgc2g6IHwgVE9ETyB8CisgICAgfCAgICAgICBzcGFyYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICB0aWxlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgdW06IHwgVE9ETyB8CisgICAgfCAgIHVuaWNvcmUzMjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgeDg2OiB8ICBvayAgfAorICAgIHwgICAgICB4dGVuc2E6IHwgVE9ETyB8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvaW8vZG1hX21hcF9hdHRycy9hcmNoLXN1cHBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9pby9kbWFfbWFwX2F0dHJzL2FyY2gtc3VwcG9ydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFkMGYxYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvaW8vZG1hX21hcF9hdHRycy9hcmNoLXN1cHBvcnQudHh0CkBAIC0wLDAgKzEsNDAgQEAKKyMKKyMgRmVhdHVyZSBuYW1lOiAgICAgICAgICBkbWFfbWFwX2F0dHJzCisjICAgICAgICAgS2NvbmZpZzogICAgICAgSEFWRV9ETUFfQVRUUlMKKyMgICAgICAgICBkZXNjcmlwdGlvbjogICBhcmNoIHByb3ZpZGVzIGRtYV8qbWFwKl9hdHRycygpIEFQSXMKKyMKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgICBhcmNoIHxzdGF0dXN8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgIGFscGhhOiB8ICBvayAgfAorICAgIHwgICAgICAgICBhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFybTogfCAgb2sgIHwKKyAgICB8ICAgICAgIGFybTY0OiB8ICBvayAgfAorICAgIHwgICAgICAgYXZyMzI6IHwgVE9ETyB8CisgICAgfCAgICBibGFja2ZpbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYzZ4OiB8IFRPRE8gfAorICAgIHwgICAgICAgIGNyaXM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGZydjogfCBUT0RPIHwKKyAgICB8ICAgICAgIGg4MzAwOiB8ICBvayAgfAorICAgIHwgICAgIGhleGFnb246IHwgIG9rICB8CisgICAgfCAgICAgICAgaWE2NDogfCAgb2sgIHwKKyAgICB8ICAgICAgICBtMzJyOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG02OGs6IHwgVE9ETyB8CisgICAgfCAgICAgICBtZXRhZzogfCBUT0RPIHwKKyAgICB8ICBtaWNyb2JsYXplOiB8ICBvayAgfAorICAgIHwgICAgICAgIG1pcHM6IHwgIG9rICB8CisgICAgfCAgICAgbW4xMDMwMDogfCBUT0RPIHwKKyAgICB8ICAgICAgIG5pb3MyOiB8IFRPRE8gfAorICAgIHwgICAgb3BlbnJpc2M6IHwgIG9rICB8CisgICAgfCAgICAgIHBhcmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICBwb3dlcnBjOiB8ICBvayAgfAorICAgIHwgICAgICAgIHMzOTA6IHwgIG9rICB8CisgICAgfCAgICAgICBzY29yZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgIHNoOiB8ICBvayAgfAorICAgIHwgICAgICAgc3BhcmM6IHwgIG9rICB8CisgICAgfCAgICAgICAgdGlsZTogfCAgb2sgIHwKKyAgICB8ICAgICAgICAgIHVtOiB8IFRPRE8gfAorICAgIHwgICB1bmljb3JlMzI6IHwgIG9rICB8CisgICAgfCAgICAgICAgIHg4NjogfCAgb2sgIHwKKyAgICB8ICAgICAgeHRlbnNhOiB8IFRPRE8gfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2lvL3NnLWNoYWluL2FyY2gtc3VwcG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2lvL3NnLWNoYWluL2FyY2gtc3VwcG9ydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjliNjc1NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvaW8vc2ctY2hhaW4vYXJjaC1zdXBwb3J0LnR4dApAQCAtMCwwICsxLDQwIEBACisjCisjIEZlYXR1cmUgbmFtZTogICAgICAgICAgc2ctY2hhaW4KKyMgICAgICAgICBLY29uZmlnOiAgICAgICBBUkNIX0hBU19TR19DSEFJTgorIyAgICAgICAgIGRlc2NyaXB0aW9uOiAgIGFyY2ggc3VwcG9ydHMgY2hhaW5lZCBzY2F0dGVyLWdhdGhlciBsaXN0cworIworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICAgIGFyY2ggfHN0YXR1c3wKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgYWxwaGE6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFyYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYXJtOiB8ICBvayAgfAorICAgIHwgICAgICAgYXJtNjQ6IHwgIG9rICB8CisgICAgfCAgICAgICBhdnIzMjogfCBUT0RPIHwKKyAgICB8ICAgIGJsYWNrZmluOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBjNng6IHwgVE9ETyB8CisgICAgfCAgICAgICAgY3JpczogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgZnJ2OiB8IFRPRE8gfAorICAgIHwgICAgICAgaDgzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgaGV4YWdvbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBpYTY0OiB8ICBvayAgfAorICAgIHwgICAgICAgIG0zMnI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTY4azogfCBUT0RPIHwKKyAgICB8ICAgICAgIG1ldGFnOiB8IFRPRE8gfAorICAgIHwgIG1pY3JvYmxhemU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbWlwczogfCBUT0RPIHwKKyAgICB8ICAgICBtbjEwMzAwOiB8IFRPRE8gfAorICAgIHwgICAgICAgbmlvczI6IHwgVE9ETyB8CisgICAgfCAgICBvcGVucmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICAgcGFyaXNjOiB8IFRPRE8gfAorICAgIHwgICAgIHBvd2VycGM6IHwgIG9rICB8CisgICAgfCAgICAgICAgczM5MDogfCAgb2sgIHwKKyAgICB8ICAgICAgIHNjb3JlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgc2g6IHwgVE9ETyB8CisgICAgfCAgICAgICBzcGFyYzogfCAgb2sgIHwKKyAgICB8ICAgICAgICB0aWxlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgdW06IHwgVE9ETyB8CisgICAgfCAgIHVuaWNvcmUzMjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgeDg2OiB8ICBvayAgfAorICAgIHwgICAgICB4dGVuc2E6IHwgVE9ETyB8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvbGliL3N0cm5jYXNlY21wL2FyY2gtc3VwcG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2xpYi9zdHJuY2FzZWNtcC9hcmNoLXN1cHBvcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyYjFjOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2xpYi9zdHJuY2FzZWNtcC9hcmNoLXN1cHBvcnQudHh0CkBAIC0wLDAgKzEsNDAgQEAKKyMKKyMgRmVhdHVyZSBuYW1lOiAgICAgICAgICBzdHJuY2FzZWNtcAorIyAgICAgICAgIEtjb25maWc6ICAgICAgIF9fSEFWRV9BUkNIX1NUUk5DQVNFQ01QCisjICAgICAgICAgZGVzY3JpcHRpb246ICAgYXJjaCBwcm92aWRlcyBhbiBvcHRpbWl6ZWQgc3RybmNhc2VjbXAoKSBmdW5jdGlvbgorIworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICAgIGFyY2ggfHN0YXR1c3wKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgYWxwaGE6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFyYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYXJtOiB8IFRPRE8gfAorICAgIHwgICAgICAgYXJtNjQ6IHwgVE9ETyB8CisgICAgfCAgICAgICBhdnIzMjogfCBUT0RPIHwKKyAgICB8ICAgIGJsYWNrZmluOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBjNng6IHwgVE9ETyB8CisgICAgfCAgICAgICAgY3JpczogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgZnJ2OiB8IFRPRE8gfAorICAgIHwgICAgICAgaDgzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgaGV4YWdvbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBpYTY0OiB8IFRPRE8gfAorICAgIHwgICAgICAgIG0zMnI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTY4azogfCBUT0RPIHwKKyAgICB8ICAgICAgIG1ldGFnOiB8IFRPRE8gfAorICAgIHwgIG1pY3JvYmxhemU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbWlwczogfCBUT0RPIHwKKyAgICB8ICAgICBtbjEwMzAwOiB8IFRPRE8gfAorICAgIHwgICAgICAgbmlvczI6IHwgVE9ETyB8CisgICAgfCAgICBvcGVucmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICAgcGFyaXNjOiB8IFRPRE8gfAorICAgIHwgICAgIHBvd2VycGM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgczM5MDogfCBUT0RPIHwKKyAgICB8ICAgICAgIHNjb3JlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgc2g6IHwgVE9ETyB8CisgICAgfCAgICAgICBzcGFyYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICB0aWxlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgdW06IHwgVE9ETyB8CisgICAgfCAgIHVuaWNvcmUzMjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgeDg2OiB8IFRPRE8gfAorICAgIHwgICAgICB4dGVuc2E6IHwgVE9ETyB8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvbGlzdC1hcmNoLnNoIGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9saXN0LWFyY2guc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjA2NTEyNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvbGlzdC1hcmNoLnNoCkBAIC0wLDAgKzEsMjQgQEAKKyMKKyMgU21hbGwgc2NyaXB0IHRoYXQgdmlzdWFsaXplcyB0aGUga2VybmVsIGZlYXR1cmUgc3VwcG9ydCBzdGF0dXMKKyMgb2YgYW4gYXJjaGl0ZWN0dXJlLgorIworIyAoSWYgbm8gYXJndW1lbnRzIGFyZSBnaXZlbiB0aGVuIGl0IHdpbGwgcHJpbnQgdGhlIGhvc3QgYXJjaGl0ZWN0dXJlJ3Mgc3RhdHVzLikKKyMKKworQVJDSD0kezE6LSQoYXJjaCB8IHNlZCAncy94ODZfNjQveDg2LycgfCBzZWQgJ3MvaTM4Ni94ODYvJyl9CisKK2NkICQoZGlybmFtZSAkMCkKK2VjaG8gIiMiCitlY2hvICIjIEtlcm5lbCBmZWF0dXJlIHN1cHBvcnQgbWF0cml4IG9mIHRoZSAnJEFSQ0gnIGFyY2hpdGVjdHVyZToiCitlY2hvICIjIgorCitmb3IgRiBpbiAqLyovYXJjaC1zdXBwb3J0LnR4dDsgZG8KKyAgU1VCU1lTPSQoZWNobyAkRiB8IGN1dCAtZC8gLWYxKQorICBOPSQoZ3JlcCAtaCAiXiMgRmVhdHVyZSBuYW1lOiIgICAgICAgICRGIHwgY3V0IC1jMjUtKQorICBDPSQoZ3JlcCAtaCAiXiMgICAgICAgICBLY29uZmlnOiIgICAgICRGIHwgY3V0IC1jMjUtKQorICBEPSQoZ3JlcCAtaCAiXiMgICAgICAgICBkZXNjcmlwdGlvbjoiICRGIHwgY3V0IC1jMjUtKQorICBTPSQoZ3JlcCAtaHcgJEFSQ0ggJEYgfCBjdXQgLWRcfCAtZjMpCisKKyAgcHJpbnRmICIlMTBzLyUtMjJzOiVzfCAlMzVzICMgJXNcbiIgIiRTVUJTWVMiICIkTiIgIiRTIiAiJEMiICIkRCIKK2RvbmUKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9sb2NraW5nL2NtcHhjaGctbG9jYWwvYXJjaC1zdXBwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvbG9ja2luZy9jbXB4Y2hnLWxvY2FsL2FyY2gtc3VwcG9ydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDljMzEwOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvbG9ja2luZy9jbXB4Y2hnLWxvY2FsL2FyY2gtc3VwcG9ydC50eHQKQEAgLTAsMCArMSw0MCBAQAorIworIyBGZWF0dXJlIG5hbWU6ICAgICAgICAgIGNtcHhjaGctbG9jYWwKKyMgICAgICAgICBLY29uZmlnOiAgICAgICBIQVZFX0NNUFhDSEdfTE9DQUwKKyMgICAgICAgICBkZXNjcmlwdGlvbjogICBhcmNoIHN1cHBvcnRzIHRoZSB0aGlzX2NwdV9jbXB4Y2hnKCkgQVBJCisjCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgICAgYXJjaCB8c3RhdHVzfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICBhbHBoYTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYXJjOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBhcm06IHwgVE9ETyB8CisgICAgfCAgICAgICBhcm02NDogfCBUT0RPIHwKKyAgICB8ICAgICAgIGF2cjMyOiB8IFRPRE8gfAorICAgIHwgICAgYmxhY2tmaW46IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGM2eDogfCBUT0RPIHwKKyAgICB8ICAgICAgICBjcmlzOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBmcnY6IHwgVE9ETyB8CisgICAgfCAgICAgICBoODMwMDogfCBUT0RPIHwKKyAgICB8ICAgICBoZXhhZ29uOiB8IFRPRE8gfAorICAgIHwgICAgICAgIGlhNjQ6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTMycjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtNjhrOiB8IFRPRE8gfAorICAgIHwgICAgICAgbWV0YWc6IHwgVE9ETyB8CisgICAgfCAgbWljcm9ibGF6ZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtaXBzOiB8IFRPRE8gfAorICAgIHwgICAgIG1uMTAzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgICBuaW9zMjogfCBUT0RPIHwKKyAgICB8ICAgIG9wZW5yaXNjOiB8IFRPRE8gfAorICAgIHwgICAgICBwYXJpc2M6IHwgVE9ETyB8CisgICAgfCAgICAgcG93ZXJwYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICBzMzkwOiB8ICBvayAgfAorICAgIHwgICAgICAgc2NvcmU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgICBzaDogfCBUT0RPIHwKKyAgICB8ICAgICAgIHNwYXJjOiB8IFRPRE8gfAorICAgIHwgICAgICAgIHRpbGU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgICB1bTogfCBUT0RPIHwKKyAgICB8ICAgdW5pY29yZTMyOiB8IFRPRE8gfAorICAgIHwgICAgICAgICB4ODY6IHwgIG9rICB8CisgICAgfCAgICAgIHh0ZW5zYTogfCBUT0RPIHwKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9sb2NraW5nL2xvY2tkZXAvYXJjaC1zdXBwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvbG9ja2luZy9sb2NrZGVwL2FyY2gtc3VwcG9ydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y5MDYzNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvbG9ja2luZy9sb2NrZGVwL2FyY2gtc3VwcG9ydC50eHQKQEAgLTAsMCArMSw0MCBAQAorIworIyBGZWF0dXJlIG5hbWU6ICAgICAgICAgIGxvY2tkZXAKKyMgICAgICAgICBLY29uZmlnOiAgICAgICBMT0NLREVQX1NVUFBPUlQKKyMgICAgICAgICBkZXNjcmlwdGlvbjogICBhcmNoIHN1cHBvcnRzIHRoZSBydW50aW1lIGxvY2tpbmcgY29ycmVjdG5lc3MgZGVidWcgZmFjaWxpdHkKKyMKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgICBhcmNoIHxzdGF0dXN8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgIGFscGhhOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBhcmM6IHwgIG9rICB8CisgICAgfCAgICAgICAgIGFybTogfCAgb2sgIHwKKyAgICB8ICAgICAgIGFybTY0OiB8ICBvayAgfAorICAgIHwgICAgICAgYXZyMzI6IHwgIG9rICB8CisgICAgfCAgICBibGFja2ZpbjogfCAgb2sgIHwKKyAgICB8ICAgICAgICAgYzZ4OiB8IFRPRE8gfAorICAgIHwgICAgICAgIGNyaXM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGZydjogfCBUT0RPIHwKKyAgICB8ICAgICAgIGg4MzAwOiB8IFRPRE8gfAorICAgIHwgICAgIGhleGFnb246IHwgIG9rICB8CisgICAgfCAgICAgICAgaWE2NDogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtMzJyOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG02OGs6IHwgVE9ETyB8CisgICAgfCAgICAgICBtZXRhZzogfCAgb2sgIHwKKyAgICB8ICBtaWNyb2JsYXplOiB8ICBvayAgfAorICAgIHwgICAgICAgIG1pcHM6IHwgIG9rICB8CisgICAgfCAgICAgbW4xMDMwMDogfCBUT0RPIHwKKyAgICB8ICAgICAgIG5pb3MyOiB8IFRPRE8gfAorICAgIHwgICAgb3BlbnJpc2M6IHwgVE9ETyB8CisgICAgfCAgICAgIHBhcmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICBwb3dlcnBjOiB8ICBvayAgfAorICAgIHwgICAgICAgIHMzOTA6IHwgIG9rICB8CisgICAgfCAgICAgICBzY29yZTogfCAgb2sgIHwKKyAgICB8ICAgICAgICAgIHNoOiB8ICBvayAgfAorICAgIHwgICAgICAgc3BhcmM6IHwgIG9rICB8CisgICAgfCAgICAgICAgdGlsZTogfCAgb2sgIHwKKyAgICB8ICAgICAgICAgIHVtOiB8ICBvayAgfAorICAgIHwgICB1bmljb3JlMzI6IHwgIG9rICB8CisgICAgfCAgICAgICAgIHg4NjogfCAgb2sgIHwKKyAgICB8ICAgICAgeHRlbnNhOiB8ICBvayAgfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2xvY2tpbmcvcXVldWVkLXJ3bG9ja3MvYXJjaC1zdXBwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvbG9ja2luZy9xdWV1ZWQtcndsb2Nrcy9hcmNoLXN1cHBvcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4YzNhNWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2xvY2tpbmcvcXVldWVkLXJ3bG9ja3MvYXJjaC1zdXBwb3J0LnR4dApAQCAtMCwwICsxLDQwIEBACisjCisjIEZlYXR1cmUgbmFtZTogICAgICAgICAgcXVldWVkLXJ3bG9ja3MKKyMgICAgICAgICBLY29uZmlnOiAgICAgICBBUkNIX1VTRV9RVUVVRURfUldMT0NLUworIyAgICAgICAgIGRlc2NyaXB0aW9uOiAgIGFyY2ggc3VwcG9ydHMgcXVldWVkIHJ3bG9ja3MKKyMKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgICBhcmNoIHxzdGF0dXN8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgIGFscGhhOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFybTogfCBUT0RPIHwKKyAgICB8ICAgICAgIGFybTY0OiB8IFRPRE8gfAorICAgIHwgICAgICAgYXZyMzI6IHwgVE9ETyB8CisgICAgfCAgICBibGFja2ZpbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYzZ4OiB8IFRPRE8gfAorICAgIHwgICAgICAgIGNyaXM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGZydjogfCBUT0RPIHwKKyAgICB8ICAgICAgIGg4MzAwOiB8IFRPRE8gfAorICAgIHwgICAgIGhleGFnb246IHwgVE9ETyB8CisgICAgfCAgICAgICAgaWE2NDogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtMzJyOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG02OGs6IHwgVE9ETyB8CisgICAgfCAgICAgICBtZXRhZzogfCBUT0RPIHwKKyAgICB8ICBtaWNyb2JsYXplOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG1pcHM6IHwgVE9ETyB8CisgICAgfCAgICAgbW4xMDMwMDogfCBUT0RPIHwKKyAgICB8ICAgICAgIG5pb3MyOiB8IFRPRE8gfAorICAgIHwgICAgb3BlbnJpc2M6IHwgVE9ETyB8CisgICAgfCAgICAgIHBhcmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICBwb3dlcnBjOiB8IFRPRE8gfAorICAgIHwgICAgICAgIHMzOTA6IHwgVE9ETyB8CisgICAgfCAgICAgICBzY29yZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgIHNoOiB8IFRPRE8gfAorICAgIHwgICAgICAgc3BhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgdGlsZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgIHVtOiB8IFRPRE8gfAorICAgIHwgICB1bmljb3JlMzI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIHg4NjogfCAgb2sgIHwKKyAgICB8ICAgICAgeHRlbnNhOiB8IFRPRE8gfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2xvY2tpbmcvcXVldWVkLXNwaW5sb2Nrcy9hcmNoLXN1cHBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9sb2NraW5nL3F1ZXVlZC1zcGlubG9ja3MvYXJjaC1zdXBwb3J0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTczYjFhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9sb2NraW5nL3F1ZXVlZC1zcGlubG9ja3MvYXJjaC1zdXBwb3J0LnR4dApAQCAtMCwwICsxLDQwIEBACisjCisjIEZlYXR1cmUgbmFtZTogICAgICAgICAgcXVldWVkLXNwaW5sb2NrcworIyAgICAgICAgIEtjb25maWc6ICAgICAgIEFSQ0hfVVNFX1FVRVVFRF9TUElOTE9DS1MKKyMgICAgICAgICBkZXNjcmlwdGlvbjogICBhcmNoIHN1cHBvcnRzIHF1ZXVlZCBzcGlubG9ja3MKKyMKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgICBhcmNoIHxzdGF0dXN8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgIGFscGhhOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFybTogfCBUT0RPIHwKKyAgICB8ICAgICAgIGFybTY0OiB8IFRPRE8gfAorICAgIHwgICAgICAgYXZyMzI6IHwgVE9ETyB8CisgICAgfCAgICBibGFja2ZpbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYzZ4OiB8IFRPRE8gfAorICAgIHwgICAgICAgIGNyaXM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGZydjogfCBUT0RPIHwKKyAgICB8ICAgICAgIGg4MzAwOiB8IFRPRE8gfAorICAgIHwgICAgIGhleGFnb246IHwgVE9ETyB8CisgICAgfCAgICAgICAgaWE2NDogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtMzJyOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG02OGs6IHwgVE9ETyB8CisgICAgfCAgICAgICBtZXRhZzogfCBUT0RPIHwKKyAgICB8ICBtaWNyb2JsYXplOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG1pcHM6IHwgVE9ETyB8CisgICAgfCAgICAgbW4xMDMwMDogfCBUT0RPIHwKKyAgICB8ICAgICAgIG5pb3MyOiB8IFRPRE8gfAorICAgIHwgICAgb3BlbnJpc2M6IHwgVE9ETyB8CisgICAgfCAgICAgIHBhcmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICBwb3dlcnBjOiB8IFRPRE8gfAorICAgIHwgICAgICAgIHMzOTA6IHwgVE9ETyB8CisgICAgfCAgICAgICBzY29yZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgIHNoOiB8IFRPRE8gfAorICAgIHwgICAgICAgc3BhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgdGlsZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgIHVtOiB8IFRPRE8gfAorICAgIHwgICB1bmljb3JlMzI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIHg4NjogfCAgb2sgIHwKKyAgICB8ICAgICAgeHRlbnNhOiB8IFRPRE8gfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2xvY2tpbmcvcndzZW0tb3B0aW1pemVkL2FyY2gtc3VwcG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL2xvY2tpbmcvcndzZW0tb3B0aW1pemVkL2FyY2gtc3VwcG9ydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM5M2Q3YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvbG9ja2luZy9yd3NlbS1vcHRpbWl6ZWQvYXJjaC1zdXBwb3J0LnR4dApAQCAtMCwwICsxLDQwIEBACisjCisjIEZlYXR1cmUgbmFtZTogICAgICAgICAgcndzZW0tb3B0aW1pemVkCisjICAgICAgICAgS2NvbmZpZzogICAgICAgT3B0aW1pemVkIGFzbS9yd3NlbS5oCisjICAgICAgICAgZGVzY3JpcHRpb246ICAgYXJjaCBwcm92aWRlcyBvcHRpbWl6ZWQgcndzZW0gQVBJcworIworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICAgIGFyY2ggfHN0YXR1c3wKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgYWxwaGE6IHwgIG9rICB8CisgICAgfCAgICAgICAgIGFyYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYXJtOiB8IFRPRE8gfAorICAgIHwgICAgICAgYXJtNjQ6IHwgVE9ETyB8CisgICAgfCAgICAgICBhdnIzMjogfCBUT0RPIHwKKyAgICB8ICAgIGJsYWNrZmluOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBjNng6IHwgVE9ETyB8CisgICAgfCAgICAgICAgY3JpczogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgZnJ2OiB8IFRPRE8gfAorICAgIHwgICAgICAgaDgzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgaGV4YWdvbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBpYTY0OiB8ICBvayAgfAorICAgIHwgICAgICAgIG0zMnI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTY4azogfCBUT0RPIHwKKyAgICB8ICAgICAgIG1ldGFnOiB8IFRPRE8gfAorICAgIHwgIG1pY3JvYmxhemU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbWlwczogfCBUT0RPIHwKKyAgICB8ICAgICBtbjEwMzAwOiB8IFRPRE8gfAorICAgIHwgICAgICAgbmlvczI6IHwgVE9ETyB8CisgICAgfCAgICBvcGVucmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICAgcGFyaXNjOiB8IFRPRE8gfAorICAgIHwgICAgIHBvd2VycGM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgczM5MDogfCAgb2sgIHwKKyAgICB8ICAgICAgIHNjb3JlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgc2g6IHwgIG9rICB8CisgICAgfCAgICAgICBzcGFyYzogfCAgb2sgIHwKKyAgICB8ICAgICAgICB0aWxlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgdW06IHwgVE9ETyB8CisgICAgfCAgIHVuaWNvcmUzMjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgeDg2OiB8ICBvayAgfAorICAgIHwgICAgICB4dGVuc2E6IHwgIG9rICB8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvcGVyZi9rcHJvYmVzLWV2ZW50L2FyY2gtc3VwcG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3BlcmYva3Byb2Jlcy1ldmVudC9hcmNoLXN1cHBvcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4NTVhZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3BlcmYva3Byb2Jlcy1ldmVudC9hcmNoLXN1cHBvcnQudHh0CkBAIC0wLDAgKzEsNDAgQEAKKyMKKyMgRmVhdHVyZSBuYW1lOiAgICAgICAgICBrcHJvYmVzLWV2ZW50CisjICAgICAgICAgS2NvbmZpZzogICAgICAgSEFWRV9SRUdTX0FORF9TVEFDS19BQ0NFU1NfQVBJCisjICAgICAgICAgZGVzY3JpcHRpb246ICAgYXJjaCBzdXBwb3J0cyBrcHJvYmVzIHdpdGggcGVyZiBldmVudHMKKyMKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgICBhcmNoIHxzdGF0dXN8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgIGFscGhhOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFybTogfCAgb2sgIHwKKyAgICB8ICAgICAgIGFybTY0OiB8IFRPRE8gfAorICAgIHwgICAgICAgYXZyMzI6IHwgVE9ETyB8CisgICAgfCAgICBibGFja2ZpbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYzZ4OiB8IFRPRE8gfAorICAgIHwgICAgICAgIGNyaXM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGZydjogfCBUT0RPIHwKKyAgICB8ICAgICAgIGg4MzAwOiB8IFRPRE8gfAorICAgIHwgICAgIGhleGFnb246IHwgIG9rICB8CisgICAgfCAgICAgICAgaWE2NDogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtMzJyOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG02OGs6IHwgVE9ETyB8CisgICAgfCAgICAgICBtZXRhZzogfCBUT0RPIHwKKyAgICB8ICBtaWNyb2JsYXplOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG1pcHM6IHwgVE9ETyB8CisgICAgfCAgICAgbW4xMDMwMDogfCBUT0RPIHwKKyAgICB8ICAgICAgIG5pb3MyOiB8IFRPRE8gfAorICAgIHwgICAgb3BlbnJpc2M6IHwgVE9ETyB8CisgICAgfCAgICAgIHBhcmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICBwb3dlcnBjOiB8ICBvayAgfAorICAgIHwgICAgICAgIHMzOTA6IHwgIG9rICB8CisgICAgfCAgICAgICBzY29yZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgIHNoOiB8ICBvayAgfAorICAgIHwgICAgICAgc3BhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgdGlsZTogfCAgb2sgIHwKKyAgICB8ICAgICAgICAgIHVtOiB8IFRPRE8gfAorICAgIHwgICB1bmljb3JlMzI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIHg4NjogfCAgb2sgIHwKKyAgICB8ICAgICAgeHRlbnNhOiB8IFRPRE8gfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3BlcmYvcGVyZi1yZWdzL2FyY2gtc3VwcG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3BlcmYvcGVyZi1yZWdzL2FyY2gtc3VwcG9ydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJiNGE3OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvcGVyZi9wZXJmLXJlZ3MvYXJjaC1zdXBwb3J0LnR4dApAQCAtMCwwICsxLDQwIEBACisjCisjIEZlYXR1cmUgbmFtZTogICAgICAgICAgcGVyZi1yZWdzCisjICAgICAgICAgS2NvbmZpZzogICAgICAgSEFWRV9QRVJGX1JFR1MKKyMgICAgICAgICBkZXNjcmlwdGlvbjogICBhcmNoIHN1cHBvcnRzIHBlcmYgZXZlbnRzIHJlZ2lzdGVyIGFjY2VzcworIworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICAgIGFyY2ggfHN0YXR1c3wKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgYWxwaGE6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFyYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYXJtOiB8ICBvayAgfAorICAgIHwgICAgICAgYXJtNjQ6IHwgIG9rICB8CisgICAgfCAgICAgICBhdnIzMjogfCBUT0RPIHwKKyAgICB8ICAgIGJsYWNrZmluOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBjNng6IHwgVE9ETyB8CisgICAgfCAgICAgICAgY3JpczogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgZnJ2OiB8IFRPRE8gfAorICAgIHwgICAgICAgaDgzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgaGV4YWdvbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBpYTY0OiB8IFRPRE8gfAorICAgIHwgICAgICAgIG0zMnI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTY4azogfCBUT0RPIHwKKyAgICB8ICAgICAgIG1ldGFnOiB8IFRPRE8gfAorICAgIHwgIG1pY3JvYmxhemU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbWlwczogfCBUT0RPIHwKKyAgICB8ICAgICBtbjEwMzAwOiB8IFRPRE8gfAorICAgIHwgICAgICAgbmlvczI6IHwgVE9ETyB8CisgICAgfCAgICBvcGVucmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICAgcGFyaXNjOiB8IFRPRE8gfAorICAgIHwgICAgIHBvd2VycGM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgczM5MDogfCBUT0RPIHwKKyAgICB8ICAgICAgIHNjb3JlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgc2g6IHwgVE9ETyB8CisgICAgfCAgICAgICBzcGFyYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICB0aWxlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgdW06IHwgVE9ETyB8CisgICAgfCAgIHVuaWNvcmUzMjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgeDg2OiB8ICBvayAgfAorICAgIHwgICAgICB4dGVuc2E6IHwgVE9ETyB8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvcGVyZi9wZXJmLXN0YWNrZHVtcC9hcmNoLXN1cHBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9wZXJmL3BlcmYtc3RhY2tkdW1wL2FyY2gtc3VwcG9ydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RjMjRiMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvcGVyZi9wZXJmLXN0YWNrZHVtcC9hcmNoLXN1cHBvcnQudHh0CkBAIC0wLDAgKzEsNDAgQEAKKyMKKyMgRmVhdHVyZSBuYW1lOiAgICAgICAgICBwZXJmLXN0YWNrZHVtcAorIyAgICAgICAgIEtjb25maWc6ICAgICAgIEhBVkVfUEVSRl9VU0VSX1NUQUNLX0RVTVAKKyMgICAgICAgICBkZXNjcmlwdGlvbjogICBhcmNoIHN1cHBvcnRzIHBlcmYgZXZlbnRzIHN0YWNrIGR1bXBzCisjCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgICAgYXJjaCB8c3RhdHVzfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICBhbHBoYTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYXJjOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBhcm06IHwgIG9rICB8CisgICAgfCAgICAgICBhcm02NDogfCAgb2sgIHwKKyAgICB8ICAgICAgIGF2cjMyOiB8IFRPRE8gfAorICAgIHwgICAgYmxhY2tmaW46IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGM2eDogfCBUT0RPIHwKKyAgICB8ICAgICAgICBjcmlzOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBmcnY6IHwgVE9ETyB8CisgICAgfCAgICAgICBoODMwMDogfCBUT0RPIHwKKyAgICB8ICAgICBoZXhhZ29uOiB8IFRPRE8gfAorICAgIHwgICAgICAgIGlhNjQ6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTMycjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtNjhrOiB8IFRPRE8gfAorICAgIHwgICAgICAgbWV0YWc6IHwgVE9ETyB8CisgICAgfCAgbWljcm9ibGF6ZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtaXBzOiB8IFRPRE8gfAorICAgIHwgICAgIG1uMTAzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgICBuaW9zMjogfCBUT0RPIHwKKyAgICB8ICAgIG9wZW5yaXNjOiB8IFRPRE8gfAorICAgIHwgICAgICBwYXJpc2M6IHwgVE9ETyB8CisgICAgfCAgICAgcG93ZXJwYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICBzMzkwOiB8IFRPRE8gfAorICAgIHwgICAgICAgc2NvcmU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgICBzaDogfCBUT0RPIHwKKyAgICB8ICAgICAgIHNwYXJjOiB8IFRPRE8gfAorICAgIHwgICAgICAgIHRpbGU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgICB1bTogfCBUT0RPIHwKKyAgICB8ICAgdW5pY29yZTMyOiB8IFRPRE8gfAorICAgIHwgICAgICAgICB4ODY6IHwgIG9rICB8CisgICAgfCAgICAgIHh0ZW5zYTogfCBUT0RPIHwKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9zY2hlZC9udW1hLWJhbGFuY2luZy9hcmNoLXN1cHBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy9zY2hlZC9udW1hLWJhbGFuY2luZy9hcmNoLXN1cHBvcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjN2NkNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3NjaGVkL251bWEtYmFsYW5jaW5nL2FyY2gtc3VwcG9ydC50eHQKQEAgLTAsMCArMSw0MCBAQAorIworIyBGZWF0dXJlIG5hbWU6ICAgICAgICAgIG51bWEtYmFsYW5jaW5nCisjICAgICAgICAgS2NvbmZpZzogICAgICAgQVJDSF9TVVBQT1JUU19OVU1BX0JBTEFOQ0lORworIyAgICAgICAgIGRlc2NyaXB0aW9uOiAgIGFyY2ggc3VwcG9ydHMgTlVNQSBiYWxhbmNpbmcKKyMKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgICBhcmNoIHxzdGF0dXN8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgIGFscGhhOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBhcmM6IHwgIC4uICB8CisgICAgfCAgICAgICAgIGFybTogfCAgLi4gIHwKKyAgICB8ICAgICAgIGFybTY0OiB8ICAuLiAgfAorICAgIHwgICAgICAgYXZyMzI6IHwgIC4uICB8CisgICAgfCAgICBibGFja2ZpbjogfCAgLi4gIHwKKyAgICB8ICAgICAgICAgYzZ4OiB8ICAuLiAgfAorICAgIHwgICAgICAgIGNyaXM6IHwgIC4uICB8CisgICAgfCAgICAgICAgIGZydjogfCAgLi4gIHwKKyAgICB8ICAgICAgIGg4MzAwOiB8ICAuLiAgfAorICAgIHwgICAgIGhleGFnb246IHwgIC4uICB8CisgICAgfCAgICAgICAgaWE2NDogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtMzJyOiB8ICAuLiAgfAorICAgIHwgICAgICAgIG02OGs6IHwgIC4uICB8CisgICAgfCAgICAgICBtZXRhZzogfCAgLi4gIHwKKyAgICB8ICBtaWNyb2JsYXplOiB8ICAuLiAgfAorICAgIHwgICAgICAgIG1pcHM6IHwgVE9ETyB8CisgICAgfCAgICAgbW4xMDMwMDogfCAgLi4gIHwKKyAgICB8ICAgICAgIG5pb3MyOiB8ICAuLiAgfAorICAgIHwgICAgb3BlbnJpc2M6IHwgIC4uICB8CisgICAgfCAgICAgIHBhcmlzYzogfCAgLi4gIHwKKyAgICB8ICAgICBwb3dlcnBjOiB8ICBvayAgfAorICAgIHwgICAgICAgIHMzOTA6IHwgIC4uICB8CisgICAgfCAgICAgICBzY29yZTogfCAgLi4gIHwKKyAgICB8ICAgICAgICAgIHNoOiB8ICAuLiAgfAorICAgIHwgICAgICAgc3BhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgdGlsZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgIHVtOiB8ICAuLiAgfAorICAgIHwgICB1bmljb3JlMzI6IHwgIC4uICB8CisgICAgfCAgICAgICAgIHg4NjogfCAgb2sgIHwKKyAgICB8ICAgICAgeHRlbnNhOiB8ICAuLiAgfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3NlY2NvbXAvc2VjY29tcC1maWx0ZXIvYXJjaC1zdXBwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvc2VjY29tcC9zZWNjb21wLWZpbHRlci9hcmNoLXN1cHBvcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2ZDM5ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3NlY2NvbXAvc2VjY29tcC1maWx0ZXIvYXJjaC1zdXBwb3J0LnR4dApAQCAtMCwwICsxLDQwIEBACisjCisjIEZlYXR1cmUgbmFtZTogICAgICAgICAgc2VjY29tcC1maWx0ZXIKKyMgICAgICAgICBLY29uZmlnOiAgICAgICBIQVZFX0FSQ0hfU0VDQ09NUF9GSUxURVIKKyMgICAgICAgICBkZXNjcmlwdGlvbjogICBhcmNoIHN1cHBvcnRzIHNlY2NvbXAgZmlsdGVycworIworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICAgIGFyY2ggfHN0YXR1c3wKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgYWxwaGE6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFyYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYXJtOiB8ICBvayAgfAorICAgIHwgICAgICAgYXJtNjQ6IHwgIG9rICB8CisgICAgfCAgICAgICBhdnIzMjogfCBUT0RPIHwKKyAgICB8ICAgIGJsYWNrZmluOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBjNng6IHwgVE9ETyB8CisgICAgfCAgICAgICAgY3JpczogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgZnJ2OiB8IFRPRE8gfAorICAgIHwgICAgICAgaDgzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgaGV4YWdvbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBpYTY0OiB8IFRPRE8gfAorICAgIHwgICAgICAgIG0zMnI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTY4azogfCBUT0RPIHwKKyAgICB8ICAgICAgIG1ldGFnOiB8IFRPRE8gfAorICAgIHwgIG1pY3JvYmxhemU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbWlwczogfCAgb2sgIHwKKyAgICB8ICAgICBtbjEwMzAwOiB8IFRPRE8gfAorICAgIHwgICAgICAgbmlvczI6IHwgVE9ETyB8CisgICAgfCAgICBvcGVucmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICAgcGFyaXNjOiB8IFRPRE8gfAorICAgIHwgICAgIHBvd2VycGM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgczM5MDogfCAgb2sgIHwKKyAgICB8ICAgICAgIHNjb3JlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgc2g6IHwgVE9ETyB8CisgICAgfCAgICAgICBzcGFyYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICB0aWxlOiB8ICBvayAgfAorICAgIHwgICAgICAgICAgdW06IHwgVE9ETyB8CisgICAgfCAgIHVuaWNvcmUzMjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgeDg2OiB8ICBvayAgfAorICAgIHwgICAgICB4dGVuc2E6IHwgVE9ETyB8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvdGltZS9hcmNoLXRpY2stYnJvYWRjYXN0L2FyY2gtc3VwcG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3RpbWUvYXJjaC10aWNrLWJyb2FkY2FzdC9hcmNoLXN1cHBvcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhY2I0MzkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3RpbWUvYXJjaC10aWNrLWJyb2FkY2FzdC9hcmNoLXN1cHBvcnQudHh0CkBAIC0wLDAgKzEsNDAgQEAKKyMKKyMgRmVhdHVyZSBuYW1lOiAgICAgICAgICBhcmNoLXRpY2stYnJvYWRjYXN0CisjICAgICAgICAgS2NvbmZpZzogICAgICAgQVJDSF9IQVNfVElDS19CUk9BRENBU1QKKyMgICAgICAgICBkZXNjcmlwdGlvbjogICBhcmNoIHByb3ZpZGVzIHRpY2tfYnJvYWRjYXN0KCkKKyMKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgICBhcmNoIHxzdGF0dXN8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgIGFscGhhOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFybTogfCAgb2sgIHwKKyAgICB8ICAgICAgIGFybTY0OiB8ICBvayAgfAorICAgIHwgICAgICAgYXZyMzI6IHwgVE9ETyB8CisgICAgfCAgICBibGFja2ZpbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYzZ4OiB8IFRPRE8gfAorICAgIHwgICAgICAgIGNyaXM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGZydjogfCBUT0RPIHwKKyAgICB8ICAgICAgIGg4MzAwOiB8IFRPRE8gfAorICAgIHwgICAgIGhleGFnb246IHwgVE9ETyB8CisgICAgfCAgICAgICAgaWE2NDogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtMzJyOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG02OGs6IHwgVE9ETyB8CisgICAgfCAgICAgICBtZXRhZzogfCBUT0RPIHwKKyAgICB8ICBtaWNyb2JsYXplOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG1pcHM6IHwgIG9rICB8CisgICAgfCAgICAgbW4xMDMwMDogfCBUT0RPIHwKKyAgICB8ICAgICAgIG5pb3MyOiB8IFRPRE8gfAorICAgIHwgICAgb3BlbnJpc2M6IHwgVE9ETyB8CisgICAgfCAgICAgIHBhcmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICBwb3dlcnBjOiB8ICBvayAgfAorICAgIHwgICAgICAgIHMzOTA6IHwgVE9ETyB8CisgICAgfCAgICAgICBzY29yZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgIHNoOiB8IFRPRE8gfAorICAgIHwgICAgICAgc3BhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgdGlsZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgIHVtOiB8IFRPRE8gfAorICAgIHwgICB1bmljb3JlMzI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIHg4NjogfCBUT0RPIHwKKyAgICB8ICAgICAgeHRlbnNhOiB8IFRPRE8gfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3RpbWUvY2xvY2tldmVudHMvYXJjaC1zdXBwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvdGltZS9jbG9ja2V2ZW50cy9hcmNoLXN1cHBvcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNjcwYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3RpbWUvY2xvY2tldmVudHMvYXJjaC1zdXBwb3J0LnR4dApAQCAtMCwwICsxLDQwIEBACisjCisjIEZlYXR1cmUgbmFtZTogICAgICAgICAgY2xvY2tldmVudHMKKyMgICAgICAgICBLY29uZmlnOiAgICAgICBHRU5FUklDX0NMT0NLRVZFTlRTCisjICAgICAgICAgZGVzY3JpcHRpb246ICAgYXJjaCBzdXBwb3J0IGdlbmVyaWMgY2xvY2sgZXZlbnRzCisjCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgICAgYXJjaCB8c3RhdHVzfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICBhbHBoYTogfCAgb2sgIHwKKyAgICB8ICAgICAgICAgYXJjOiB8ICBvayAgfAorICAgIHwgICAgICAgICBhcm06IHwgIG9rICB8CisgICAgfCAgICAgICBhcm02NDogfCAgb2sgIHwKKyAgICB8ICAgICAgIGF2cjMyOiB8ICBvayAgfAorICAgIHwgICAgYmxhY2tmaW46IHwgIG9rICB8CisgICAgfCAgICAgICAgIGM2eDogfCAgb2sgIHwKKyAgICB8ICAgICAgICBjcmlzOiB8ICBvayAgfAorICAgIHwgICAgICAgICBmcnY6IHwgVE9ETyB8CisgICAgfCAgICAgICBoODMwMDogfCAgb2sgIHwKKyAgICB8ICAgICBoZXhhZ29uOiB8ICBvayAgfAorICAgIHwgICAgICAgIGlhNjQ6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTMycjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtNjhrOiB8ICBvayAgfAorICAgIHwgICAgICAgbWV0YWc6IHwgIG9rICB8CisgICAgfCAgbWljcm9ibGF6ZTogfCAgb2sgIHwKKyAgICB8ICAgICAgICBtaXBzOiB8ICBvayAgfAorICAgIHwgICAgIG1uMTAzMDA6IHwgIG9rICB8CisgICAgfCAgICAgICBuaW9zMjogfCAgb2sgIHwKKyAgICB8ICAgIG9wZW5yaXNjOiB8ICBvayAgfAorICAgIHwgICAgICBwYXJpc2M6IHwgVE9ETyB8CisgICAgfCAgICAgcG93ZXJwYzogfCAgb2sgIHwKKyAgICB8ICAgICAgICBzMzkwOiB8ICBvayAgfAorICAgIHwgICAgICAgc2NvcmU6IHwgIG9rICB8CisgICAgfCAgICAgICAgICBzaDogfCAgb2sgIHwKKyAgICB8ICAgICAgIHNwYXJjOiB8ICBvayAgfAorICAgIHwgICAgICAgIHRpbGU6IHwgIG9rICB8CisgICAgfCAgICAgICAgICB1bTogfCAgb2sgIHwKKyAgICB8ICAgdW5pY29yZTMyOiB8ICBvayAgfAorICAgIHwgICAgICAgICB4ODY6IHwgIG9rICB8CisgICAgfCAgICAgIHh0ZW5zYTogfCAgb2sgIHwKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy90aW1lL2NvbnRleHQtdHJhY2tpbmcvYXJjaC1zdXBwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvdGltZS9jb250ZXh0LXRyYWNraW5nL2FyY2gtc3VwcG9ydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFlM2VlYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvdGltZS9jb250ZXh0LXRyYWNraW5nL2FyY2gtc3VwcG9ydC50eHQKQEAgLTAsMCArMSw0MCBAQAorIworIyBGZWF0dXJlIG5hbWU6ICAgICAgICAgIGNvbnRleHQtdHJhY2tpbmcKKyMgICAgICAgICBLY29uZmlnOiAgICAgICBIQVZFX0NPTlRFWFRfVFJBQ0tJTkcKKyMgICAgICAgICBkZXNjcmlwdGlvbjogICBhcmNoIHN1cHBvcnRzIGNvbnRleHQgdHJhY2tpbmcgZm9yIE5PX0haX0ZVTEwKKyMKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgICBhcmNoIHxzdGF0dXN8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgIGFscGhhOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFybTogfCAgb2sgIHwKKyAgICB8ICAgICAgIGFybTY0OiB8ICBvayAgfAorICAgIHwgICAgICAgYXZyMzI6IHwgVE9ETyB8CisgICAgfCAgICBibGFja2ZpbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYzZ4OiB8IFRPRE8gfAorICAgIHwgICAgICAgIGNyaXM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGZydjogfCBUT0RPIHwKKyAgICB8ICAgICAgIGg4MzAwOiB8IFRPRE8gfAorICAgIHwgICAgIGhleGFnb246IHwgVE9ETyB8CisgICAgfCAgICAgICAgaWE2NDogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtMzJyOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG02OGs6IHwgVE9ETyB8CisgICAgfCAgICAgICBtZXRhZzogfCBUT0RPIHwKKyAgICB8ICBtaWNyb2JsYXplOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG1pcHM6IHwgIG9rICB8CisgICAgfCAgICAgbW4xMDMwMDogfCBUT0RPIHwKKyAgICB8ICAgICAgIG5pb3MyOiB8IFRPRE8gfAorICAgIHwgICAgb3BlbnJpc2M6IHwgVE9ETyB8CisgICAgfCAgICAgIHBhcmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICBwb3dlcnBjOiB8ICBvayAgfAorICAgIHwgICAgICAgIHMzOTA6IHwgVE9ETyB8CisgICAgfCAgICAgICBzY29yZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgIHNoOiB8IFRPRE8gfAorICAgIHwgICAgICAgc3BhcmM6IHwgIG9rICB8CisgICAgfCAgICAgICAgdGlsZTogfCAgb2sgIHwKKyAgICB8ICAgICAgICAgIHVtOiB8IFRPRE8gfAorICAgIHwgICB1bmljb3JlMzI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIHg4NjogfCAgb2sgIHwKKyAgICB8ICAgICAgeHRlbnNhOiB8IFRPRE8gfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3RpbWUvaXJxLXRpbWUtYWNjdC9hcmNoLXN1cHBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy90aW1lL2lycS10aW1lLWFjY3QvYXJjaC1zdXBwb3J0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjMzMTYyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy90aW1lL2lycS10aW1lLWFjY3QvYXJjaC1zdXBwb3J0LnR4dApAQCAtMCwwICsxLDQwIEBACisjCisjIEZlYXR1cmUgbmFtZTogICAgICAgICAgaXJxLXRpbWUtYWNjdAorIyAgICAgICAgIEtjb25maWc6ICAgICAgIEhBVkVfSVJRX1RJTUVfQUNDT1VOVElORworIyAgICAgICAgIGRlc2NyaXB0aW9uOiAgIGFyY2ggc3VwcG9ydHMgcHJlY2lzZSBJUlEgdGltZSBhY2NvdW50aW5nCisjCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgICAgYXJjaCB8c3RhdHVzfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICBhbHBoYTogfCAgLi4gIHwKKyAgICB8ICAgICAgICAgYXJjOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBhcm06IHwgIG9rICB8CisgICAgfCAgICAgICBhcm02NDogfCAgLi4gIHwKKyAgICB8ICAgICAgIGF2cjMyOiB8IFRPRE8gfAorICAgIHwgICAgYmxhY2tmaW46IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGM2eDogfCBUT0RPIHwKKyAgICB8ICAgICAgICBjcmlzOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBmcnY6IHwgVE9ETyB8CisgICAgfCAgICAgICBoODMwMDogfCBUT0RPIHwKKyAgICB8ICAgICBoZXhhZ29uOiB8IFRPRE8gfAorICAgIHwgICAgICAgIGlhNjQ6IHwgIC4uICB8CisgICAgfCAgICAgICAgbTMycjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtNjhrOiB8IFRPRE8gfAorICAgIHwgICAgICAgbWV0YWc6IHwgVE9ETyB8CisgICAgfCAgbWljcm9ibGF6ZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtaXBzOiB8ICBvayAgfAorICAgIHwgICAgIG1uMTAzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgICBuaW9zMjogfCBUT0RPIHwKKyAgICB8ICAgIG9wZW5yaXNjOiB8IFRPRE8gfAorICAgIHwgICAgICBwYXJpc2M6IHwgIC4uICB8CisgICAgfCAgICAgcG93ZXJwYzogfCAgLi4gIHwKKyAgICB8ICAgICAgICBzMzkwOiB8ICAuLiAgfAorICAgIHwgICAgICAgc2NvcmU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgICBzaDogfCBUT0RPIHwKKyAgICB8ICAgICAgIHNwYXJjOiB8ICAuLiAgfAorICAgIHwgICAgICAgIHRpbGU6IHwgIC4uICB8CisgICAgfCAgICAgICAgICB1bTogfCBUT0RPIHwKKyAgICB8ICAgdW5pY29yZTMyOiB8IFRPRE8gfAorICAgIHwgICAgICAgICB4ODY6IHwgIG9rICB8CisgICAgfCAgICAgIHh0ZW5zYTogfCAgb2sgIHwKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy90aW1lL21vZGVybi10aW1la2VlcGluZy9hcmNoLXN1cHBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy90aW1lL21vZGVybi10aW1la2VlcGluZy9hcmNoLXN1cHBvcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ZjY4YTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3RpbWUvbW9kZXJuLXRpbWVrZWVwaW5nL2FyY2gtc3VwcG9ydC50eHQKQEAgLTAsMCArMSw0MCBAQAorIworIyBGZWF0dXJlIG5hbWU6ICAgICAgICAgIG1vZGVybi10aW1la2VlcGluZworIyAgICAgICAgIEtjb25maWc6ICAgICAgICFBUkNIX1VTRVNfR0VUVElNRU9GRlNFVAorIyAgICAgICAgIGRlc2NyaXB0aW9uOiAgIGFyY2ggZG9lcyBub3QgdXNlIGFyY2hfZ2V0dGltZW9mZnNldCgpIGFueW1vcmUKKyMKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgICBhcmNoIHxzdGF0dXN8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgIGFscGhhOiB8ICBvayAgfAorICAgIHwgICAgICAgICBhcmM6IHwgIG9rICB8CisgICAgfCAgICAgICAgIGFybTogfCBUT0RPIHwKKyAgICB8ICAgICAgIGFybTY0OiB8ICBvayAgfAorICAgIHwgICAgICAgYXZyMzI6IHwgIG9rICB8CisgICAgfCAgICBibGFja2ZpbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYzZ4OiB8ICBvayAgfAorICAgIHwgICAgICAgIGNyaXM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGZydjogfCAgb2sgIHwKKyAgICB8ICAgICAgIGg4MzAwOiB8ICBvayAgfAorICAgIHwgICAgIGhleGFnb246IHwgIG9rICB8CisgICAgfCAgICAgICAgaWE2NDogfCAgb2sgIHwKKyAgICB8ICAgICAgICBtMzJyOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG02OGs6IHwgVE9ETyB8CisgICAgfCAgICAgICBtZXRhZzogfCAgb2sgIHwKKyAgICB8ICBtaWNyb2JsYXplOiB8ICBvayAgfAorICAgIHwgICAgICAgIG1pcHM6IHwgIG9rICB8CisgICAgfCAgICAgbW4xMDMwMDogfCAgb2sgIHwKKyAgICB8ICAgICAgIG5pb3MyOiB8ICBvayAgfAorICAgIHwgICAgb3BlbnJpc2M6IHwgIG9rICB8CisgICAgfCAgICAgIHBhcmlzYzogfCAgb2sgIHwKKyAgICB8ICAgICBwb3dlcnBjOiB8ICBvayAgfAorICAgIHwgICAgICAgIHMzOTA6IHwgIG9rICB8CisgICAgfCAgICAgICBzY29yZTogfCAgb2sgIHwKKyAgICB8ICAgICAgICAgIHNoOiB8ICBvayAgfAorICAgIHwgICAgICAgc3BhcmM6IHwgIG9rICB8CisgICAgfCAgICAgICAgdGlsZTogfCAgb2sgIHwKKyAgICB8ICAgICAgICAgIHVtOiB8ICBvayAgfAorICAgIHwgICB1bmljb3JlMzI6IHwgIG9rICB8CisgICAgfCAgICAgICAgIHg4NjogfCAgb2sgIHwKKyAgICB8ICAgICAgeHRlbnNhOiB8ICBvayAgfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3RpbWUvdmlydC1jcHVhY2N0L2FyY2gtc3VwcG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3RpbWUvdmlydC1jcHVhY2N0L2FyY2gtc3VwcG9ydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YzYzNlMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvdGltZS92aXJ0LWNwdWFjY3QvYXJjaC1zdXBwb3J0LnR4dApAQCAtMCwwICsxLDQwIEBACisjCisjIEZlYXR1cmUgbmFtZTogICAgICAgICAgdmlydC1jcHVhY2N0CisjICAgICAgICAgS2NvbmZpZzogICAgICAgSEFWRV9WSVJUX0NQVV9BQ0NPVU5USU5HCisjICAgICAgICAgZGVzY3JpcHRpb246ICAgYXJjaCBzdXBwb3J0cyBwcmVjaXNlIHZpcnR1YWwgQ1BVIHRpbWUgYWNjb3VudGluZworIworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICAgIGFyY2ggfHN0YXR1c3wKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgYWxwaGE6IHwgIG9rICB8CisgICAgfCAgICAgICAgIGFyYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYXJtOiB8ICBvayAgfAorICAgIHwgICAgICAgYXJtNjQ6IHwgIG9rICB8CisgICAgfCAgICAgICBhdnIzMjogfCBUT0RPIHwKKyAgICB8ICAgIGJsYWNrZmluOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBjNng6IHwgVE9ETyB8CisgICAgfCAgICAgICAgY3JpczogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgZnJ2OiB8IFRPRE8gfAorICAgIHwgICAgICAgaDgzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgaGV4YWdvbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBpYTY0OiB8ICBvayAgfAorICAgIHwgICAgICAgIG0zMnI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTY4azogfCBUT0RPIHwKKyAgICB8ICAgICAgIG1ldGFnOiB8IFRPRE8gfAorICAgIHwgIG1pY3JvYmxhemU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbWlwczogfCAgb2sgIHwKKyAgICB8ICAgICBtbjEwMzAwOiB8IFRPRE8gfAorICAgIHwgICAgICAgbmlvczI6IHwgVE9ETyB8CisgICAgfCAgICBvcGVucmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICAgcGFyaXNjOiB8ICBvayAgfAorICAgIHwgICAgIHBvd2VycGM6IHwgIG9rICB8CisgICAgfCAgICAgICAgczM5MDogfCAgb2sgIHwKKyAgICB8ICAgICAgIHNjb3JlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgc2g6IHwgVE9ETyB8CisgICAgfCAgICAgICBzcGFyYzogfCAgb2sgIHwKKyAgICB8ICAgICAgICB0aWxlOiB8ICBvayAgfAorICAgIHwgICAgICAgICAgdW06IHwgVE9ETyB8CisgICAgfCAgIHVuaWNvcmUzMjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgeDg2OiB8ICBvayAgfAorICAgIHwgICAgICB4dGVuc2E6IHwgVE9ETyB8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvdm0vRUxGLUFTTFIvYXJjaC1zdXBwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvdm0vRUxGLUFTTFIvYXJjaC1zdXBwb3J0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzRkZDI4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy92bS9FTEYtQVNMUi9hcmNoLXN1cHBvcnQudHh0CkBAIC0wLDAgKzEsNDAgQEAKKyMKKyMgRmVhdHVyZSBuYW1lOiAgICAgICAgICBFTEYtQVNMUgorIyAgICAgICAgIEtjb25maWc6ICAgICAgIEFSQ0hfSEFTX0VMRl9SQU5ET01JWkUKKyMgICAgICAgICBkZXNjcmlwdGlvbjogICBhcmNoIHJhbmRvbWl6ZXMgdGhlIHN0YWNrLCBoZWFwIGFuZCBiaW5hcnkgaW1hZ2VzIG9mIEVMRiBiaW5hcmllcworIworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICAgIGFyY2ggfHN0YXR1c3wKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgYWxwaGE6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFyYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYXJtOiB8ICBvayAgfAorICAgIHwgICAgICAgYXJtNjQ6IHwgIG9rICB8CisgICAgfCAgICAgICBhdnIzMjogfCBUT0RPIHwKKyAgICB8ICAgIGJsYWNrZmluOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBjNng6IHwgVE9ETyB8CisgICAgfCAgICAgICAgY3JpczogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgZnJ2OiB8IFRPRE8gfAorICAgIHwgICAgICAgaDgzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgaGV4YWdvbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBpYTY0OiB8IFRPRE8gfAorICAgIHwgICAgICAgIG0zMnI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTY4azogfCBUT0RPIHwKKyAgICB8ICAgICAgIG1ldGFnOiB8IFRPRE8gfAorICAgIHwgIG1pY3JvYmxhemU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbWlwczogfCAgb2sgIHwKKyAgICB8ICAgICBtbjEwMzAwOiB8IFRPRE8gfAorICAgIHwgICAgICAgbmlvczI6IHwgVE9ETyB8CisgICAgfCAgICBvcGVucmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICAgcGFyaXNjOiB8IFRPRE8gfAorICAgIHwgICAgIHBvd2VycGM6IHwgIG9rICB8CisgICAgfCAgICAgICAgczM5MDogfCAgb2sgIHwKKyAgICB8ICAgICAgIHNjb3JlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgc2g6IHwgVE9ETyB8CisgICAgfCAgICAgICBzcGFyYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICB0aWxlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgdW06IHwgVE9ETyB8CisgICAgfCAgIHVuaWNvcmUzMjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgeDg2OiB8ICBvayAgfAorICAgIHwgICAgICB4dGVuc2E6IHwgVE9ETyB8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvdm0vUEdfdW5jYWNoZWQvYXJjaC1zdXBwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvdm0vUEdfdW5jYWNoZWQvYXJjaC1zdXBwb3J0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTE5NzQyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy92bS9QR191bmNhY2hlZC9hcmNoLXN1cHBvcnQudHh0CkBAIC0wLDAgKzEsNDAgQEAKKyMKKyMgRmVhdHVyZSBuYW1lOiAgICAgICAgICBQR191bmNhY2hlZAorIyAgICAgICAgIEtjb25maWc6ICAgICAgIEFSQ0hfVVNFU19QR19VTkNBQ0hFRAorIyAgICAgICAgIGRlc2NyaXB0aW9uOiAgIGFyY2ggc3VwcG9ydHMgdGhlIFBHX3VuY2FjaGVkIHBhZ2UgZmxhZworIworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICAgIGFyY2ggfHN0YXR1c3wKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgYWxwaGE6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFyYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYXJtOiB8IFRPRE8gfAorICAgIHwgICAgICAgYXJtNjQ6IHwgVE9ETyB8CisgICAgfCAgICAgICBhdnIzMjogfCBUT0RPIHwKKyAgICB8ICAgIGJsYWNrZmluOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBjNng6IHwgVE9ETyB8CisgICAgfCAgICAgICAgY3JpczogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgZnJ2OiB8IFRPRE8gfAorICAgIHwgICAgICAgaDgzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgaGV4YWdvbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBpYTY0OiB8ICBvayAgfAorICAgIHwgICAgICAgIG0zMnI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTY4azogfCBUT0RPIHwKKyAgICB8ICAgICAgIG1ldGFnOiB8IFRPRE8gfAorICAgIHwgIG1pY3JvYmxhemU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbWlwczogfCBUT0RPIHwKKyAgICB8ICAgICBtbjEwMzAwOiB8IFRPRE8gfAorICAgIHwgICAgICAgbmlvczI6IHwgVE9ETyB8CisgICAgfCAgICBvcGVucmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICAgcGFyaXNjOiB8IFRPRE8gfAorICAgIHwgICAgIHBvd2VycGM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgczM5MDogfCBUT0RPIHwKKyAgICB8ICAgICAgIHNjb3JlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgc2g6IHwgVE9ETyB8CisgICAgfCAgICAgICBzcGFyYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICB0aWxlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgdW06IHwgVE9ETyB8CisgICAgfCAgIHVuaWNvcmUzMjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgeDg2OiB8ICBvayAgfAorICAgIHwgICAgICB4dGVuc2E6IHwgVE9ETyB8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvdm0vVEhQL2FyY2gtc3VwcG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3ZtL1RIUC9hcmNoLXN1cHBvcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyM2Y4MzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3ZtL1RIUC9hcmNoLXN1cHBvcnQudHh0CkBAIC0wLDAgKzEsNDAgQEAKKyMKKyMgRmVhdHVyZSBuYW1lOiAgICAgICAgICBUSFAKKyMgICAgICAgICBLY29uZmlnOiAgICAgICBIQVZFX0FSQ0hfVFJBTlNQQVJFTlRfSFVHRVBBR0UKKyMgICAgICAgICBkZXNjcmlwdGlvbjogICBhcmNoIHN1cHBvcnRzIHRyYW5zcGFyZW50IGh1Z2VwYWdlcworIworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICAgIGFyY2ggfHN0YXR1c3wKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgYWxwaGE6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFyYzogfCAgb2sgIHwKKyAgICB8ICAgICAgICAgYXJtOiB8ICBvayAgfAorICAgIHwgICAgICAgYXJtNjQ6IHwgIG9rICB8CisgICAgfCAgICAgICBhdnIzMjogfCAgLi4gIHwKKyAgICB8ICAgIGJsYWNrZmluOiB8ICAuLiAgfAorICAgIHwgICAgICAgICBjNng6IHwgIC4uICB8CisgICAgfCAgICAgICAgY3JpczogfCAgLi4gIHwKKyAgICB8ICAgICAgICAgZnJ2OiB8ICAuLiAgfAorICAgIHwgICAgICAgaDgzMDA6IHwgIC4uICB8CisgICAgfCAgICAgaGV4YWdvbjogfCAgLi4gIHwKKyAgICB8ICAgICAgICBpYTY0OiB8IFRPRE8gfAorICAgIHwgICAgICAgIG0zMnI6IHwgIC4uICB8CisgICAgfCAgICAgICAgbTY4azogfCAgLi4gIHwKKyAgICB8ICAgICAgIG1ldGFnOiB8IFRPRE8gfAorICAgIHwgIG1pY3JvYmxhemU6IHwgIC4uICB8CisgICAgfCAgICAgICAgbWlwczogfCAgb2sgIHwKKyAgICB8ICAgICBtbjEwMzAwOiB8ICAuLiAgfAorICAgIHwgICAgICAgbmlvczI6IHwgIC4uICB8CisgICAgfCAgICBvcGVucmlzYzogfCAgLi4gIHwKKyAgICB8ICAgICAgcGFyaXNjOiB8IFRPRE8gfAorICAgIHwgICAgIHBvd2VycGM6IHwgIG9rICB8CisgICAgfCAgICAgICAgczM5MDogfCAgb2sgIHwKKyAgICB8ICAgICAgIHNjb3JlOiB8ICAuLiAgfAorICAgIHwgICAgICAgICAgc2g6IHwgIC4uICB8CisgICAgfCAgICAgICBzcGFyYzogfCAgb2sgIHwKKyAgICB8ICAgICAgICB0aWxlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgdW06IHwgIC4uICB8CisgICAgfCAgIHVuaWNvcmUzMjogfCAgLi4gIHwKKyAgICB8ICAgICAgICAgeDg2OiB8ICBvayAgfAorICAgIHwgICAgICB4dGVuc2E6IHwgIC4uICB8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvdm0vVExCL2FyY2gtc3VwcG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3ZtL1RMQi9hcmNoLXN1cHBvcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2MWI5MmUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3ZtL1RMQi9hcmNoLXN1cHBvcnQudHh0CkBAIC0wLDAgKzEsNDAgQEAKKyMKKyMgRmVhdHVyZSBuYW1lOiAgICAgICAgICBiYXRjaC11bm1hcC10bGItZmx1c2gKKyMgICAgICAgICBLY29uZmlnOiAgICAgICBBUkNIX1dBTlRfQkFUQ0hFRF9VTk1BUF9UTEJfRkxVU0gKKyMgICAgICAgICBkZXNjcmlwdGlvbjogICBhcmNoIHN1cHBvcnRzIGRlZmVycmFsIG9mIFRMQiBmbHVzaCB1bnRpbCBtdWx0aXBsZSBwYWdlcyBhcmUgdW5tYXBwZWQKKyMKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgICBhcmNoIHxzdGF0dXN8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgIGFscGhhOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFybTogfCBUT0RPIHwKKyAgICB8ICAgICAgIGFybTY0OiB8IFRPRE8gfAorICAgIHwgICAgICAgYXZyMzI6IHwgIC4uICB8CisgICAgfCAgICBibGFja2ZpbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYzZ4OiB8ICAuLiAgfAorICAgIHwgICAgICAgIGNyaXM6IHwgIC4uICB8CisgICAgfCAgICAgICAgIGZydjogfCAgLi4gIHwKKyAgICB8ICAgICAgIGg4MzAwOiB8ICAuLiAgfAorICAgIHwgICAgIGhleGFnb246IHwgVE9ETyB8CisgICAgfCAgICAgICAgaWE2NDogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtMzJyOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG02OGs6IHwgIC4uICB8CisgICAgfCAgICAgICBtZXRhZzogfCBUT0RPIHwKKyAgICB8ICBtaWNyb2JsYXplOiB8ICAuLiAgfAorICAgIHwgICAgICAgIG1pcHM6IHwgVE9ETyB8CisgICAgfCAgICAgbW4xMDMwMDogfCBUT0RPIHwKKyAgICB8ICAgICAgIG5pb3MyOiB8ICAuLiAgfAorICAgIHwgICAgb3BlbnJpc2M6IHwgIC4uICB8CisgICAgfCAgICAgIHBhcmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICBwb3dlcnBjOiB8IFRPRE8gfAorICAgIHwgICAgICAgIHMzOTA6IHwgVE9ETyB8CisgICAgfCAgICAgICBzY29yZTogfCAgLi4gIHwKKyAgICB8ICAgICAgICAgIHNoOiB8IFRPRE8gfAorICAgIHwgICAgICAgc3BhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgdGlsZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgIHVtOiB8ICAuLiAgfAorICAgIHwgICB1bmljb3JlMzI6IHwgIC4uICB8CisgICAgfCAgICAgICAgIHg4NjogfCAgb2sgIHwKKyAgICB8ICAgICAgeHRlbnNhOiB8IFRPRE8gfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3ZtL2h1Z2Utdm1hcC9hcmNoLXN1cHBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy92bS9odWdlLXZtYXAvYXJjaC1zdXBwb3J0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjY4MTZiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy92bS9odWdlLXZtYXAvYXJjaC1zdXBwb3J0LnR4dApAQCAtMCwwICsxLDQwIEBACisjCisjIEZlYXR1cmUgbmFtZTogICAgICAgICAgaHVnZS12bWFwCisjICAgICAgICAgS2NvbmZpZzogICAgICAgSEFWRV9BUkNIX0hVR0VfVk1BUAorIyAgICAgICAgIGRlc2NyaXB0aW9uOiAgIGFyY2ggc3VwcG9ydHMgdGhlIGlvcmVtYXBfcHVkX2VuYWJsZWQoKSBhbmQgaW9yZW1hcF9wbWRfZW5hYmxlZCgpIFZNIEFQSXMKKyMKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgICBhcmNoIHxzdGF0dXN8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgIGFscGhhOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFybTogfCBUT0RPIHwKKyAgICB8ICAgICAgIGFybTY0OiB8IFRPRE8gfAorICAgIHwgICAgICAgYXZyMzI6IHwgVE9ETyB8CisgICAgfCAgICBibGFja2ZpbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYzZ4OiB8IFRPRE8gfAorICAgIHwgICAgICAgIGNyaXM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGZydjogfCBUT0RPIHwKKyAgICB8ICAgICAgIGg4MzAwOiB8IFRPRE8gfAorICAgIHwgICAgIGhleGFnb246IHwgVE9ETyB8CisgICAgfCAgICAgICAgaWE2NDogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtMzJyOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG02OGs6IHwgVE9ETyB8CisgICAgfCAgICAgICBtZXRhZzogfCBUT0RPIHwKKyAgICB8ICBtaWNyb2JsYXplOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG1pcHM6IHwgVE9ETyB8CisgICAgfCAgICAgbW4xMDMwMDogfCBUT0RPIHwKKyAgICB8ICAgICAgIG5pb3MyOiB8IFRPRE8gfAorICAgIHwgICAgb3BlbnJpc2M6IHwgVE9ETyB8CisgICAgfCAgICAgIHBhcmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICBwb3dlcnBjOiB8IFRPRE8gfAorICAgIHwgICAgICAgIHMzOTA6IHwgVE9ETyB8CisgICAgfCAgICAgICBzY29yZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgIHNoOiB8IFRPRE8gfAorICAgIHwgICAgICAgc3BhcmM6IHwgVE9ETyB8CisgICAgfCAgICAgICAgdGlsZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgIHVtOiB8IFRPRE8gfAorICAgIHwgICB1bmljb3JlMzI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIHg4NjogfCAgb2sgIHwKKyAgICB8ICAgICAgeHRlbnNhOiB8IFRPRE8gfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3ZtL2lvcmVtYXBfcHJvdC9hcmNoLXN1cHBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy92bS9pb3JlbWFwX3Byb3QvYXJjaC1zdXBwb3J0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGM1Mzc0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy92bS9pb3JlbWFwX3Byb3QvYXJjaC1zdXBwb3J0LnR4dApAQCAtMCwwICsxLDQwIEBACisjCisjIEZlYXR1cmUgbmFtZTogICAgICAgICAgaW9yZW1hcF9wcm90CisjICAgICAgICAgS2NvbmZpZzogICAgICAgSEFWRV9JT1JFTUFQX1BST1QKKyMgICAgICAgICBkZXNjcmlwdGlvbjogICBhcmNoIGhhcyBpb3JlbWFwX3Byb3QoKQorIworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICAgIGFyY2ggfHN0YXR1c3wKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgYWxwaGE6IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGFyYzogfCAgb2sgIHwKKyAgICB8ICAgICAgICAgYXJtOiB8IFRPRE8gfAorICAgIHwgICAgICAgYXJtNjQ6IHwgVE9ETyB8CisgICAgfCAgICAgICBhdnIzMjogfCBUT0RPIHwKKyAgICB8ICAgIGJsYWNrZmluOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBjNng6IHwgVE9ETyB8CisgICAgfCAgICAgICAgY3JpczogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgZnJ2OiB8IFRPRE8gfAorICAgIHwgICAgICAgaDgzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgaGV4YWdvbjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBpYTY0OiB8IFRPRE8gfAorICAgIHwgICAgICAgIG0zMnI6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTY4azogfCBUT0RPIHwKKyAgICB8ICAgICAgIG1ldGFnOiB8IFRPRE8gfAorICAgIHwgIG1pY3JvYmxhemU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbWlwczogfCBUT0RPIHwKKyAgICB8ICAgICBtbjEwMzAwOiB8IFRPRE8gfAorICAgIHwgICAgICAgbmlvczI6IHwgVE9ETyB8CisgICAgfCAgICBvcGVucmlzYzogfCBUT0RPIHwKKyAgICB8ICAgICAgcGFyaXNjOiB8IFRPRE8gfAorICAgIHwgICAgIHBvd2VycGM6IHwgIG9rICB8CisgICAgfCAgICAgICAgczM5MDogfCBUT0RPIHwKKyAgICB8ICAgICAgIHNjb3JlOiB8IFRPRE8gfAorICAgIHwgICAgICAgICAgc2g6IHwgIG9rICB8CisgICAgfCAgICAgICBzcGFyYzogfCBUT0RPIHwKKyAgICB8ICAgICAgICB0aWxlOiB8ICBvayAgfAorICAgIHwgICAgICAgICAgdW06IHwgVE9ETyB8CisgICAgfCAgIHVuaWNvcmUzMjogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgeDg2OiB8ICBvayAgfAorICAgIHwgICAgICB4dGVuc2E6IHwgVE9ETyB8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvdm0vbnVtYS1tZW1ibG9jay9hcmNoLXN1cHBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy92bS9udW1hLW1lbWJsb2NrL2FyY2gtc3VwcG9ydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdjMjUyYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvdm0vbnVtYS1tZW1ibG9jay9hcmNoLXN1cHBvcnQudHh0CkBAIC0wLDAgKzEsNDAgQEAKKyMKKyMgRmVhdHVyZSBuYW1lOiAgICAgICAgICBudW1hLW1lbWJsb2NrCisjICAgICAgICAgS2NvbmZpZzogICAgICAgSEFWRV9NRU1CTE9DS19OT0RFX01BUAorIyAgICAgICAgIGRlc2NyaXB0aW9uOiAgIGFyY2ggc3VwcG9ydHMgTlVNQSBhd2FyZSBtZW1ibG9ja3MKKyMKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgICAgICAgICBhcmNoIHxzdGF0dXN8CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgIGFscGhhOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBhcmM6IHwgIC4uICB8CisgICAgfCAgICAgICAgIGFybTogfCAgLi4gIHwKKyAgICB8ICAgICAgIGFybTY0OiB8ICAuLiAgfAorICAgIHwgICAgICAgYXZyMzI6IHwgIC4uICB8CisgICAgfCAgICBibGFja2ZpbjogfCAgLi4gIHwKKyAgICB8ICAgICAgICAgYzZ4OiB8ICAuLiAgfAorICAgIHwgICAgICAgIGNyaXM6IHwgIC4uICB8CisgICAgfCAgICAgICAgIGZydjogfCAgLi4gIHwKKyAgICB8ICAgICAgIGg4MzAwOiB8ICAuLiAgfAorICAgIHwgICAgIGhleGFnb246IHwgIC4uICB8CisgICAgfCAgICAgICAgaWE2NDogfCAgb2sgIHwKKyAgICB8ICAgICAgICBtMzJyOiB8IFRPRE8gfAorICAgIHwgICAgICAgIG02OGs6IHwgIC4uICB8CisgICAgfCAgICAgICBtZXRhZzogfCAgb2sgIHwKKyAgICB8ICBtaWNyb2JsYXplOiB8ICBvayAgfAorICAgIHwgICAgICAgIG1pcHM6IHwgIG9rICB8CisgICAgfCAgICAgbW4xMDMwMDogfCBUT0RPIHwKKyAgICB8ICAgICAgIG5pb3MyOiB8ICAuLiAgfAorICAgIHwgICAgb3BlbnJpc2M6IHwgIC4uICB8CisgICAgfCAgICAgIHBhcmlzYzogfCAgLi4gIHwKKyAgICB8ICAgICBwb3dlcnBjOiB8ICBvayAgfAorICAgIHwgICAgICAgIHMzOTA6IHwgIG9rICB8CisgICAgfCAgICAgICBzY29yZTogfCAgb2sgIHwKKyAgICB8ICAgICAgICAgIHNoOiB8ICBvayAgfAorICAgIHwgICAgICAgc3BhcmM6IHwgIG9rICB8CisgICAgfCAgICAgICAgdGlsZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgIHVtOiB8ICAuLiAgfAorICAgIHwgICB1bmljb3JlMzI6IHwgIC4uICB8CisgICAgfCAgICAgICAgIHg4NjogfCAgb2sgIHwKKyAgICB8ICAgICAgeHRlbnNhOiB8ICAuLiAgfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3ZtL3BtZHBfc3BsaXR0aW5nX2ZsdXNoL2FyY2gtc3VwcG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3ZtL3BtZHBfc3BsaXR0aW5nX2ZsdXNoL2FyY2gtc3VwcG9ydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZmNzRiNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmVhdHVyZXMvdm0vcG1kcF9zcGxpdHRpbmdfZmx1c2gvYXJjaC1zdXBwb3J0LnR4dApAQCAtMCwwICsxLDQwIEBACisjCisjIEZlYXR1cmUgbmFtZTogICAgICAgICAgcG1kcF9zcGxpdHRpbmdfZmx1c2gKKyMgICAgICAgICBLY29uZmlnOiAgICAgICBfX0hBVkVfQVJDSF9QTURQX1NQTElUVElOR19GTFVTSAorIyAgICAgICAgIGRlc2NyaXB0aW9uOiAgIGFyY2ggc3VwcG9ydHMgdGhlIHBtZHBfc3BsaXR0aW5nX2ZsdXNoKCkgVk0gQVBJCisjCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgICAgYXJjaCB8c3RhdHVzfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICBhbHBoYTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYXJjOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBhcm06IHwgIG9rICB8CisgICAgfCAgICAgICBhcm02NDogfCAgb2sgIHwKKyAgICB8ICAgICAgIGF2cjMyOiB8IFRPRE8gfAorICAgIHwgICAgYmxhY2tmaW46IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGM2eDogfCBUT0RPIHwKKyAgICB8ICAgICAgICBjcmlzOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBmcnY6IHwgVE9ETyB8CisgICAgfCAgICAgICBoODMwMDogfCBUT0RPIHwKKyAgICB8ICAgICBoZXhhZ29uOiB8IFRPRE8gfAorICAgIHwgICAgICAgIGlhNjQ6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTMycjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtNjhrOiB8IFRPRE8gfAorICAgIHwgICAgICAgbWV0YWc6IHwgVE9ETyB8CisgICAgfCAgbWljcm9ibGF6ZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtaXBzOiB8ICBvayAgfAorICAgIHwgICAgIG1uMTAzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgICBuaW9zMjogfCBUT0RPIHwKKyAgICB8ICAgIG9wZW5yaXNjOiB8IFRPRE8gfAorICAgIHwgICAgICBwYXJpc2M6IHwgVE9ETyB8CisgICAgfCAgICAgcG93ZXJwYzogfCAgb2sgIHwKKyAgICB8ICAgICAgICBzMzkwOiB8ICBvayAgfAorICAgIHwgICAgICAgc2NvcmU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgICBzaDogfCBUT0RPIHwKKyAgICB8ICAgICAgIHNwYXJjOiB8IFRPRE8gfAorICAgIHwgICAgICAgIHRpbGU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgICB1bTogfCBUT0RPIHwKKyAgICB8ICAgdW5pY29yZTMyOiB8IFRPRE8gfAorICAgIHwgICAgICAgICB4ODY6IHwgIG9rICB8CisgICAgfCAgICAgIHh0ZW5zYTogfCBUT0RPIHwKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy92bS9wdGVfc3BlY2lhbC9hcmNoLXN1cHBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9mZWF0dXJlcy92bS9wdGVfc3BlY2lhbC9hcmNoLXN1cHBvcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkZTU0MzQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZlYXR1cmVzL3ZtL3B0ZV9zcGVjaWFsL2FyY2gtc3VwcG9ydC50eHQKQEAgLTAsMCArMSw0MCBAQAorIworIyBGZWF0dXJlIG5hbWU6ICAgICAgICAgIHB0ZV9zcGVjaWFsCisjICAgICAgICAgS2NvbmZpZzogICAgICAgX19IQVZFX0FSQ0hfUFRFX1NQRUNJQUwKKyMgICAgICAgICBkZXNjcmlwdGlvbjogICBhcmNoIHN1cHBvcnRzIHRoZSBwdGVfc3BlY2lhbCgpL3B0ZV9ta3NwZWNpYWwoKSBWTSBBUElzCisjCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB8ICAgICAgICAgYXJjaCB8c3RhdHVzfAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgfCAgICAgICBhbHBoYTogfCBUT0RPIHwKKyAgICB8ICAgICAgICAgYXJjOiB8ICBvayAgfAorICAgIHwgICAgICAgICBhcm06IHwgIG9rICB8CisgICAgfCAgICAgICBhcm02NDogfCAgb2sgIHwKKyAgICB8ICAgICAgIGF2cjMyOiB8IFRPRE8gfAorICAgIHwgICAgYmxhY2tmaW46IHwgVE9ETyB8CisgICAgfCAgICAgICAgIGM2eDogfCBUT0RPIHwKKyAgICB8ICAgICAgICBjcmlzOiB8IFRPRE8gfAorICAgIHwgICAgICAgICBmcnY6IHwgVE9ETyB8CisgICAgfCAgICAgICBoODMwMDogfCBUT0RPIHwKKyAgICB8ICAgICBoZXhhZ29uOiB8IFRPRE8gfAorICAgIHwgICAgICAgIGlhNjQ6IHwgVE9ETyB8CisgICAgfCAgICAgICAgbTMycjogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtNjhrOiB8IFRPRE8gfAorICAgIHwgICAgICAgbWV0YWc6IHwgVE9ETyB8CisgICAgfCAgbWljcm9ibGF6ZTogfCBUT0RPIHwKKyAgICB8ICAgICAgICBtaXBzOiB8IFRPRE8gfAorICAgIHwgICAgIG1uMTAzMDA6IHwgVE9ETyB8CisgICAgfCAgICAgICBuaW9zMjogfCBUT0RPIHwKKyAgICB8ICAgIG9wZW5yaXNjOiB8IFRPRE8gfAorICAgIHwgICAgICBwYXJpc2M6IHwgVE9ETyB8CisgICAgfCAgICAgcG93ZXJwYzogfCAgb2sgIHwKKyAgICB8ICAgICAgICBzMzkwOiB8ICBvayAgfAorICAgIHwgICAgICAgc2NvcmU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgICBzaDogfCAgb2sgIHwKKyAgICB8ICAgICAgIHNwYXJjOiB8ICBvayAgfAorICAgIHwgICAgICAgIHRpbGU6IHwgVE9ETyB8CisgICAgfCAgICAgICAgICB1bTogfCBUT0RPIHwKKyAgICB8ICAgdW5pY29yZTMyOiB8IFRPRE8gfAorICAgIHwgICAgICAgICB4ODY6IHwgIG9rICB8CisgICAgfCAgICAgIHh0ZW5zYTogfCBUT0RPIHwKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy8uZ2l0aWdub3JlIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxZDZlNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zLy5naXRpZ25vcmUKQEAgLTAsMCArMSBAQAorZG5vdGlmeV90ZXN0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zLzAwLUlOREVYIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy8wMC1JTkRFWApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTIyOTM5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy8wMC1JTkRFWApAQCAtMCwwICsxLDE1OSBAQAorMDAtSU5ERVgKKwktIHRoaXMgZmlsZSAoaW5mbyBvbiBzb21lIG9mIHRoZSBmaWxlc3lzdGVtcyBzdXBwb3J0ZWQgYnkgbGludXgpLgorTG9ja2luZworCS0gaW5mbyBvbiBsb2NraW5nIHJ1bGVzIGFzIHRoZXkgcGVydGFpbiB0byBMaW51eCBWRlMuCitNYWtlZmlsZQorCS0gTWFrZWZpbGUgZm9yIGJ1aWxkaW5nIHRoZSBmaWxzeXN0ZW1zLXBhcnQgb2YgRG9jQm9vay4KKzlwLnR4dAorCS0gOXAgKHY5ZnMpIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBQbGFuIDkgcmVtb3RlIGZzIHByb3RvY29sLgorYWRmcy50eHQKKwktIGluZm8gYW5kIG1vdW50IG9wdGlvbnMgZm9yIHRoZSBBY29ybiBBZHZhbmNlZCBEaXNjIEZpbGluZyBTeXN0ZW0uCithZnMudHh0CisJLSBpbmZvIGFuZCBleGFtcGxlcyBmb3IgdGhlIGRpc3RyaWJ1dGVkIEFGUyAoQW5kcmV3IEZpbGUgU3lzdGVtKSBmcy4KK2FmZnMudHh0CisJLSBpbmZvIGFuZCBtb3VudCBvcHRpb25zIGZvciB0aGUgQW1pZ2EgRmFzdCBGaWxlIFN5c3RlbS4KK2F1dG9mczQtbW91bnQtY29udHJvbC50eHQKKwktIGluZm8gb24gZGV2aWNlIGNvbnRyb2wgb3BlcmF0aW9ucyBmb3IgYXV0b2ZzNCBtb2R1bGUuCithdXRvbW91bnQtc3VwcG9ydC50eHQKKwktIGluZm9ybWF0aW9uIGFib3V0IGZpbGVzeXN0ZW0gYXV0b21vdW50IHN1cHBvcnQuCitiZWZzLnR4dAorCS0gaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJlT1MgZmlsZXN5c3RlbSBmb3IgTGludXguCitiZnMudHh0CisJLSBpbmZvIGZvciB0aGUgU0NPIFVuaXhXYXJlIEJvb3QgRmlsZXN5c3RlbSAoQkZTKS4KK2J0cmZzLnR4dAorCS0gaW5mbyBmb3IgdGhlIEJUUkZTIGZpbGVzeXN0ZW0uCitjYWNoaW5nLworCS0gZGlyZWN0b3J5IGNvbnRhaW5pbmcgZmlsZXN5c3RlbSBjYWNoZSBkb2N1bWVudGF0aW9uLgorY2VwaC50eHQKKwktIGluZm8gZm9yIHRoZSBDZXBoIERpc3RyaWJ1dGVkIEZpbGUgU3lzdGVtLgorY2lmcy8KKwktIGRpcmVjdG9yeSBjb250YWluaW5nIENJRlMgZmlsZXN5c3RlbSBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlIGNvZGUuCitjb2RhLnR4dAorCS0gZGVzY3JpcHRpb24gb2YgdGhlIENPREEgZmlsZXN5c3RlbS4KK2NvbmZpZ2ZzLworCS0gZGlyZWN0b3J5IGNvbnRhaW5pbmcgY29uZmlnZnMgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZSBjb2RlLgorY3JhbWZzLnR4dAorCS0gaW5mbyBvbiB0aGUgY3JhbSBmaWxlc3lzdGVtIGZvciBzbWFsbCBzdG9yYWdlIChST01zIGV0YykuCitkYXgudHh0CisJLSBpbmZvIG9uIGF2b2lkaW5nIHRoZSBwYWdlIGNhY2hlIGZvciBmaWxlcyBzdG9yZWQgb24gQ1BVLWFkZHJlc3NhYmxlCisJICBzdG9yYWdlIGRldmljZXMuCitkZWJ1Z2ZzLnR4dAorCS0gaW5mbyBvbiB0aGUgZGVidWdmcyBmaWxlc3lzdGVtLgorZGV2cHRzLnR4dAorCS0gaW5mbyBvbiB0aGUgZGV2cHRzIGZpbGVzeXN0ZW0uCitkaXJlY3RvcnktbG9ja2luZworCS0gaW5mbyBhYm91dCB0aGUgbG9ja2luZyBzY2hlbWUgdXNlZCBmb3IgZGlyZWN0b3J5IG9wZXJhdGlvbnMuCitkbG1mcy50eHQKKwktIGluZm8gb24gdGhlIHVzZXJzcGFjZSBpbnRlcmZhY2UgdG8gdGhlIE9DRlMyIERMTS4KK2Rub3RpZnkudHh0CisJLSBpbmZvIGFib3V0IGRpcmVjdG9yeSBub3RpZmljYXRpb24gaW4gTGludXguCitkbm90aWZ5X3Rlc3QuYworCS0gZXhhbXBsZSBwcm9ncmFtIGZvciBkbm90aWZ5LgorZWNyeXB0ZnMudHh0CisJLSBkb2NzIG9uIGVDcnlwdGZzOiBzdGFja2VkIGNyeXB0b2dyYXBoaWMgZmlsZXN5c3RlbSBmb3IgTGludXguCitlZml2YXJmcy50eHQKKwktIGluZm8gZm9yIHRoZSBlZml2YXJmcyBmaWxlc3lzdGVtLgorZXhvZnMudHh0CisJLSBpbmZvLCB1c2FnZSwgbW91bnQgb3B0aW9ucywgZGVzaWduIGFib3V0IEVYT0ZTLgorZXh0Mi50eHQKKwktIGluZm8sIG1vdW50IG9wdGlvbnMgYW5kIHNwZWNpZmljYXRpb25zIGZvciB0aGUgRXh0MiBmaWxlc3lzdGVtLgorZXh0My50eHQKKwktIGluZm8sIG1vdW50IG9wdGlvbnMgYW5kIHNwZWNpZmljYXRpb25zIGZvciB0aGUgRXh0MyBmaWxlc3lzdGVtLgorZXh0NC50eHQKKwktIGluZm8sIG1vdW50IG9wdGlvbnMgYW5kIHNwZWNpZmljYXRpb25zIGZvciB0aGUgRXh0NCBmaWxlc3lzdGVtLgorZjJmcy50eHQKKwktIGluZm8gYW5kIG1vdW50IG9wdGlvbnMgZm9yIHRoZSBGMkZTIGZpbGVzeXN0ZW0uCitmaWVtYXAudHh0CisJLSBpbmZvIG9uIGZpZW1hcCBpb2N0bC4KK2ZpbGVzLnR4dAorCS0gaW5mbyBvbiBmaWxlIG1hbmFnZW1lbnQgaW4gdGhlIExpbnV4IGtlcm5lbC4KK2Z1c2UudHh0CisJLSBpbmZvIG9uIHRoZSBGaWxlc3lzdGVtIGluIFVzZXIgU3BhY0UgaW5jbHVkaW5nIG1vdW50IG9wdGlvbnMuCitnZnMyLWdsb2Nrcy50eHQKKwktIGluZm8gb24gdGhlIEdsb2JhbCBGaWxlIFN5c3RlbSAyIC0gR2xvY2sgaW50ZXJuYWwgbG9ja2luZyBydWxlcy4KK2dmczItdWV2ZW50cy50eHQKKwktIGluZm8gb24gdGhlIEdsb2JhbCBGaWxlIFN5c3RlbSAyIC0gdWV2ZW50cy4KK2dmczIudHh0CisJLSBpbmZvIG9uIHRoZSBHbG9iYWwgRmlsZSBTeXN0ZW0gMi4KK2hmcy50eHQKKwktIGluZm8gb24gdGhlIE1hY2ludG9zaCBIRlMgRmlsZXN5c3RlbSBmb3IgTGludXguCitoZnNwbHVzLnR4dAorCS0gaW5mbyBvbiB0aGUgTWFjaW50b3NoIEhGU1BsdXMgRmlsZXN5c3RlbSBmb3IgTGludXguCitocGZzLnR4dAorCS0gaW5mbyBhbmQgbW91bnQgb3B0aW9ucyBmb3IgdGhlIE9TLzIgSFBGUy4KK2lub3RpZnkudHh0CisJLSBpbmZvIG9uIHRoZSBwb3dlcmZ1bCB5ZXQgc2ltcGxlIGZpbGUgY2hhbmdlIG5vdGlmaWNhdGlvbiBzeXN0ZW0uCitpc29mcy50eHQKKwktIGluZm8gYW5kIG1vdW50IG9wdGlvbnMgZm9yIHRoZSBJU08gOTY2MCAoQ0RST00pIGZpbGVzeXN0ZW0uCitqZnMudHh0CisJLSBpbmZvIGFuZCBtb3VudCBvcHRpb25zIGZvciB0aGUgSkZTIGZpbGVzeXN0ZW0uCitsb2Nrcy50eHQKKwktIGluZm8gb24gZmlsZSBsb2NraW5nIGltcGxlbWVudGF0aW9ucywgZmxvY2soKSB2cy4gZmNudGwoKSwgZXRjLgorbG9nZnMudHh0CisJLSBpbmZvIG9uIHRoZSBMb2dGUyBmbGFzaCBmaWxlc3lzdGVtLgorbWFuZGF0b3J5LWxvY2tpbmcudHh0CisJLSBpbmZvIG9uIHRoZSBMaW51eCBpbXBsZW1lbnRhdGlvbiBvZiBTeXMgViBtYW5kYXRvcnkgZmlsZSBsb2NraW5nLgorbmNwZnMudHh0CisJLSBpbmZvIG9uIE5vdmVsbCBOZXR3YXJlKHRtKSBmaWxlc3lzdGVtIHVzaW5nIE5DUCBwcm90b2NvbC4KK25mcy8KKwktIG5mcy1yZWxhdGVkIGRvY3VtZW50YXRpb24uCituaWxmczIudHh0CisJLSBpbmZvIGFuZCBtb3VudCBvcHRpb25zIGZvciB0aGUgTklMRlMyIGZpbGVzeXN0ZW0uCitudGZzLnR4dAorCS0gaW5mbyBhbmQgbW91bnQgb3B0aW9ucyBmb3IgdGhlIE5URlMgZmlsZXN5c3RlbSAoV2luZG93cyBOVCkuCitvY2ZzMi50eHQKKwktIGluZm8gYW5kIG1vdW50IG9wdGlvbnMgZm9yIHRoZSBPQ0ZTMiBjbHVzdGVyZWQgZmlsZXN5c3RlbS4KK29tZnMudHh0CisJLSBpbmZvIG9uIHRoZSBPcHRpbWl6ZWQgTVBFRyBGaWxlU3lzdGVtLgorcGF0aC1sb29rdXAudHh0CisJLSBpbmZvIG9uIHBhdGggd2Fsa2luZyBhbmQgbmFtZSBsb29rdXAgbG9ja2luZy4KK3BvaG1lbGZzLworCS0gZGlyZWN0b3J5IGNvbnRhaW5pbmcgcG9obWVsZnMgZmlsZXN5c3RlbSBkb2N1bWVudGF0aW9uLgorcG9ydGluZworCS0gdmFyaW91cyBpbmZvcm1hdGlvbiBvbiBmaWxlc3lzdGVtIHBvcnRpbmcuCitwcm9jLnR4dAorCS0gaW5mbyBvbiBMaW51eCdzIC9wcm9jIGZpbGVzeXN0ZW0uCitxbng2LnR4dAorCS0gaW5mbyBvbiB0aGUgUU5YNiBmaWxlc3lzdGVtLgorcXVvdGEudHh0CisJLSBpbmZvIG9uIFF1b3RhIHN1YnN5c3RlbS4KK3JhbWZzLXJvb3Rmcy1pbml0cmFtZnMudHh0CisJLSBpbmZvIG9uIHRoZSAnaW4gbWVtb3J5JyBmaWxlc3lzdGVtcyByYW1mcywgcm9vdGZzIGFuZCBpbml0cmFtZnMuCityZWxheS50eHQKKwktIGluZm8gb24gcmVsYXksIGZvciBlZmZpY2llbnQgc3RyZWFtaW5nIGZyb20ga2VybmVsIHRvIHVzZXIgc3BhY2UuCityb21mcy50eHQKKwktIGRlc2NyaXB0aW9uIG9mIHRoZSBST01GUyBmaWxlc3lzdGVtLgorc2VxX2ZpbGUudHh0CisJLSBob3cgdG8gdXNlIHRoZSBzZXFfZmlsZSBBUEkuCitzaGFyZWRzdWJ0cmVlLnR4dAorCS0gYSBkZXNjcmlwdGlvbiBvZiBzaGFyZWQgc3VidHJlZXMgZm9yIG5hbWVzcGFjZXMuCitzcHVmcy50eHQKKwktIGluZm8gYW5kIG1vdW50IG9wdGlvbnMgZm9yIHRoZSBTUFUgZmlsZXN5c3RlbSB1c2VkIG9uIENlbGwuCitzcXVhc2hmcy50eHQKKwktIGluZm8gb24gdGhlIHNxdWFzaGZzIGZpbGVzeXN0ZW0uCitzeXNmcy1wY2kudHh0CisJLSBpbmZvIG9uIGFjY2Vzc2luZyBQQ0kgZGV2aWNlIHJlc291cmNlcyB0aHJvdWdoIHN5c2ZzLgorc3lzZnMtdGFnZ2luZy50eHQKKwktIGluZm8gb24gc3lzZnMgdGFnZ2luZyB0byBhdm9pZCBkdXBsaWNhdGVzLgorc3lzZnMudHh0CisJLSBpbmZvIG9uIHN5c2ZzLCBhIHJhbS1iYXNlZCBmaWxlc3lzdGVtIGZvciBleHBvcnRpbmcga2VybmVsIG9iamVjdHMuCitzeXN2LWZzLnR4dAorCS0gaW5mbyBvbiB0aGUgU3lzdGVtVi9WNy9YZW5peC9Db2hlcmVudCBmaWxlc3lzdGVtLgordG1wZnMudHh0CisJLSBpbmZvIG9uIHRtcGZzLCBhIGZpbGVzeXN0ZW0gdGhhdCBob2xkcyBhbGwgZmlsZXMgaW4gdmlydHVhbCBtZW1vcnkuCit1Ymlmcy50eHQKKwktIGluZm8gb24gdGhlIFVuc29ydGVkIEJsb2NrIEltYWdlcyBGaWxlU3lzdGVtLgordWRmLnR4dAorCS0gaW5mbyBhbmQgbW91bnQgb3B0aW9ucyBmb3IgdGhlIFVERiBmaWxlc3lzdGVtLgordWZzLnR4dAorCS0gaW5mbyBvbiB0aGUgdWZzIGZpbGVzeXN0ZW0uCit2ZmF0LnR4dAorCS0gaW5mbyBvbiB1c2luZyB0aGUgVkZBVCBmaWxlc3lzdGVtIHVzZWQgaW4gV2luZG93cyBOVCBhbmQgV2luZG93cyA5NS4KK3Zmcy50eHQKKwktIG92ZXJ2aWV3IG9mIHRoZSBWaXJ0dWFsIEZpbGUgU3lzdGVtLgoreGZzLWRlbGF5ZWQtbG9nZ2luZy1kZXNpZ24udHh0CisJLSBpbmZvIG9uIHRoZSBYRlMgRGVsYXllZCBMb2dnaW5nIERlc2lnbi4KK3hmcy1zZWxmLWRlc2NyaWJpbmctbWV0YWRhdGEudHh0CisJLSBpbmZvIG9uIFhGUyBTZWxmIERlc2NyaWJpbmcgTWV0YWRhdGEuCit4ZnMudHh0CisJLSBpbmZvIGFuZCBtb3VudCBvcHRpb25zIGZvciB0aGUgWEZTIGZpbGVzeXN0ZW0uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zLzlwLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvOXAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlYzcxNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zLzlwLnR4dApAQCAtMCwwICsxLDE2MSBAQAorCSAgCSAgICB2OWZzOiBQbGFuIDkgUmVzb3VyY2UgU2hhcmluZyBmb3IgTGludXgKKwkJICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBQk9VVAorPT09PT0KKwordjlmcyBpcyBhIFVuaXggaW1wbGVtZW50YXRpb24gb2YgdGhlIFBsYW4gOSA5cCByZW1vdGUgZmlsZXN5c3RlbSBwcm90b2NvbC4KKworVGhpcyBzb2Z0d2FyZSB3YXMgb3JpZ2luYWxseSBkZXZlbG9wZWQgYnkgUm9uIE1pbm5pY2ggPHJtaW5uaWNoQHNhbmRpYS5nb3Y+CithbmQgTWF5YSBHb2toYWxlLiAgQWRkaXRpb25hbCBkZXZlbG9wbWVudCBieSBHcmVnIFdhdHNvbgorPGd3YXRzb25AbGFubC5nb3Y+IGFuZCBtb3N0IHJlY2VudGx5IEVyaWMgVmFuIEhlbnNiZXJnZW4KKzxlcmljdmhAZ21haWwuY29tPiwgTGF0Y2hlc2FyIElvbmtvdiA8bHVjaG9AaW9ua292Lm5ldD4gYW5kIFJ1c3MgQ294Cis8cnNjQHN3dGNoLmNvbT4uCisKK1RoZSBiZXN0IGRldGFpbGVkIGV4cGxhbmF0aW9uIG9mIHRoZSBMaW51eCBpbXBsZW1lbnRhdGlvbiBhbmQgYXBwbGljYXRpb25zIG9mCit0aGUgOXAgY2xpZW50IGlzIGF2YWlsYWJsZSBpbiB0aGUgZm9ybSBvZiBhIFVTRU5JWCBwYXBlcjoKKyAgIGh0dHA6Ly93d3cudXNlbml4Lm9yZy9ldmVudHMvdXNlbml4MDUvdGVjaC9mcmVlbml4L2hlbnNiZXJnZW4uaHRtbAorCitPdGhlciBhcHBsaWNhdGlvbnMgYXJlIGRlc2NyaWJlZCBpbiB0aGUgZm9sbG93aW5nIHBhcGVyczoKKwkqIFhDUFUgJiBDbHVzdGVyaW5nCisJCWh0dHA6Ly94Y3B1Lm9yZy9wYXBlcnMveGNwdS10YWxrLnBkZgorCSogS1ZNRlM6IGNvbnRyb2wgZmlsZSBzeXN0ZW0gZm9yIEtWTQorCQlodHRwOi8veGNwdS5vcmcvcGFwZXJzL2t2bWZzLnBkZgorCSogQ2VsbEZTOiBBIE5ldyBQcm9ncmFtbWluZyBNb2RlbCBmb3IgdGhlIENlbGwgQkUKKwkJaHR0cDovL3hjcHUub3JnL3BhcGVycy9jZWxsZnMtdGFsay5wZGYKKwkqIFBST1NFIEkvTzogVXNpbmcgOXAgdG8gZW5hYmxlIEFwcGxpY2F0aW9uIFBhcnRpdGlvbnMKKwkJaHR0cDovL3BsYW45LmVzY2V0LnVyamMuZXMvaXdwOS9jcmVhZHkvUFJPU0VfaXdwOV8yMDA2LnBkZgorCSogVmlydEZTOiBBIFZpcnR1YWxpemF0aW9uIEF3YXJlIEZpbGUgU3lzdGVtIHBhc3MtdGhyb3VnaAorCQlodHRwOi8vZ29vLmdsLzNXUERnCisKK1VTQUdFCis9PT09PQorCitGb3IgcmVtb3RlIGZpbGUgc2VydmVyOgorCisJbW91bnQgLXQgOXAgMTAuMTAuMS4yIC9tbnQvOQorCitGb3IgUGxhbiA5IEZyb20gVXNlciBTcGFjZSBhcHBsaWNhdGlvbnMgKGh0dHA6Ly9zd3RjaC5jb20vcGxhbjkpCisKKwltb3VudCAtdCA5cCBgbmFtZXNwYWNlYC9hY21lIC9tbnQvOSAtbyB0cmFucz11bml4LHVuYW1lPSRVU0VSCisKK0ZvciBzZXJ2ZXIgcnVubmluZyBvbiBRRU1VIGhvc3Qgd2l0aCB2aXJ0aW8gdHJhbnNwb3J0OgorCisJbW91bnQgLXQgOXAgLW8gdHJhbnM9dmlydGlvIDxtb3VudF90YWc+IC9tbnQvOQorCit3aGVyZSBtb3VudF90YWcgaXMgdGhlIHRhZyBhc3NvY2lhdGVkIGJ5IHRoZSBzZXJ2ZXIgdG8gZWFjaCBvZiB0aGUgZXhwb3J0ZWQKK21vdW50IHBvaW50cy4gRWFjaCA5UCBleHBvcnQgaXMgc2VlbiBieSB0aGUgY2xpZW50IGFzIGEgdmlydGlvIGRldmljZSB3aXRoIGFuCithc3NvY2lhdGVkICJtb3VudF90YWciIHByb3BlcnR5LiBBdmFpbGFibGUgbW91bnQgdGFncyBjYW4gYmUKK3NlZW4gYnkgcmVhZGluZyAvc3lzL2J1cy92aXJ0aW8vZHJpdmVycy85cG5ldF92aXJ0aW8vdmlydGlvPG4+L21vdW50X3RhZyBmaWxlcy4KKworT1BUSU9OUworPT09PT09PQorCisgIHRyYW5zPW5hbWUJc2VsZWN0IGFuIGFsdGVybmF0aXZlIHRyYW5zcG9ydC4gIFZhbGlkIG9wdGlvbnMgYXJlCisgIAkJY3VycmVudGx5OgorCQkJdW5peCAJLSBzcGVjaWZ5aW5nIGEgbmFtZWQgcGlwZSBtb3VudCBwb2ludAorCQkJdGNwCS0gc3BlY2lmeWluZyBhIG5vcm1hbCBUQ1AvSVAgY29ubmVjdGlvbgorCQkJZmQgICAJLSB1c2VkIHBhc3NlZCBmaWxlIGRlc2NyaXB0b3JzIGZvciBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWUgcmZkbm8gYW5kIHdmZG5vKQorCQkJdmlydGlvCS0gY29ubmVjdCB0byB0aGUgbmV4dCB2aXJ0aW8gY2hhbm5lbCBhdmFpbGFibGUKKwkJCQkoZnJvbSBRRU1VIHdpdGggdHJhbnNfdmlydGlvIG1vZHVsZSkKKwkJCXJkbWEJLSBjb25uZWN0IHRvIGEgc3BlY2lmaWVkIFJETUEgY2hhbm5lbAorCisgIHVuYW1lPW5hbWUJdXNlciBuYW1lIHRvIGF0dGVtcHQgbW91bnQgYXMgb24gdGhlIHJlbW90ZSBzZXJ2ZXIuICBUaGUKKyAgCQlzZXJ2ZXIgbWF5IG92ZXJyaWRlIG9yIGlnbm9yZSB0aGlzIHZhbHVlLiAgQ2VydGFpbiB1c2VyCisJCW5hbWVzIG1heSByZXF1aXJlIGF1dGhlbnRpY2F0aW9uLgorCisgIGFuYW1lPW5hbWUJYW5hbWUgc3BlY2lmaWVzIHRoZSBmaWxlIHRyZWUgdG8gYWNjZXNzIHdoZW4gdGhlIHNlcnZlciBpcworICAJCW9mZmVyaW5nIHNldmVyYWwgZXhwb3J0ZWQgZmlsZSBzeXN0ZW1zLgorCisgIGNhY2hlPW1vZGUJc3BlY2lmaWVzIGEgY2FjaGluZyBwb2xpY3kuICBCeSBkZWZhdWx0LCBubyBjYWNoZXMgYXJlIHVzZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBub25lID0gZGVmYXVsdCBubyBjYWNoZSBwb2xpY3ksIG1ldGFkYXRhIGFuZCBkYXRhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWtlIGFyZSBzeW5jaHJvbm91cy4KKwkJCWxvb3NlID0gbm8gYXR0ZW1wdHMgYXJlIG1hZGUgYXQgY29uc2lzdGVuY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVuZGVkIGZvciBleGNsdXNpdmUsIHJlYWQtb25seSBtb3VudHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGZzY2FjaGUgPSB1c2UgRlMtQ2FjaGUgZm9yIGEgcGVyc2lzdGVudCwgcmVhZC1vbmx5CisJCQkJY2FjaGUgYmFja2VuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIG1tYXAgPSBtaW5pbWFsIGNhY2hlIHRoYXQgaXMgb25seSB1c2VkIGZvciByZWFkLXdyaXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1tYXAuICBOb3J0aGluZyBlbHNlIGlzIGNhY2hlZCwgbGlrZSBjYWNoZT1ub25lCisKKyAgZGVidWc9bglzcGVjaWZpZXMgZGVidWcgbGV2ZWwuICBUaGUgZGVidWcgbGV2ZWwgaXMgYSBiaXRtYXNrLgorCQkJMHgwMSAgPSBkaXNwbGF5IHZlcmJvc2UgZXJyb3IgbWVzc2FnZXMKKwkJCTB4MDIgID0gZGV2ZWxvcGVyIGRlYnVnIChERUJVR19DVVJSRU5UKQorCQkJMHgwNCAgPSBkaXNwbGF5IDlwIHRyYWNlCisJCQkweDA4ICA9IGRpc3BsYXkgVkZTIHRyYWNlCisJCQkweDEwICA9IGRpc3BsYXkgTWFyc2hhbGxpbmcgZGVidWcKKwkJCTB4MjAgID0gZGlzcGxheSBSUEMgZGVidWcKKwkJCTB4NDAgID0gZGlzcGxheSB0cmFuc3BvcnQgZGVidWcKKwkJCTB4ODAgID0gZGlzcGxheSBhbGxvY2F0aW9uIGRlYnVnCisJCQkweDEwMCA9IGRpc3BsYXkgcHJvdG9jb2wgbWVzc2FnZSBkZWJ1ZworCQkJMHgyMDAgPSBkaXNwbGF5IEZpZCBkZWJ1ZworCQkJMHg0MDAgPSBkaXNwbGF5IHBhY2tldCBkZWJ1ZworCQkJMHg4MDAgPSBkaXNwbGF5IGZzY2FjaGUgdHJhY2luZyBkZWJ1ZworCisgIHJmZG5vPW4JdGhlIGZpbGUgZGVzY3JpcHRvciBmb3IgcmVhZGluZyB3aXRoIHRyYW5zPWZkCisKKyAgd2Zkbm89bgl0aGUgZmlsZSBkZXNjcmlwdG9yIGZvciB3cml0aW5nIHdpdGggdHJhbnM9ZmQKKworICBtc2l6ZT1uCXRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gdXNlIGZvciA5cCBwYWNrZXQgcGF5bG9hZAorCisgIHBvcnQ9bglwb3J0IHRvIGNvbm5lY3QgdG8gb24gdGhlIHJlbW90ZSBzZXJ2ZXIKKworICBub2V4dGVuZAlmb3JjZSBsZWdhY3kgbW9kZSAobm8gOXAyMDAwLnUgb3IgOXAyMDAwLkwgc2VtYW50aWNzKQorCisgIHZlcnNpb249bmFtZQlTZWxlY3QgOVAgcHJvdG9jb2wgdmVyc2lvbi4gVmFsaWQgb3B0aW9ucyBhcmU6CisJCQk5cDIwMDAgICAgICAgICAgLSBMZWdhY3kgbW9kZSAoc2FtZSBhcyBub2V4dGVuZCkKKwkJCTlwMjAwMC51ICAgICAgICAtIFVzZSA5UDIwMDAudSBwcm90b2NvbAorCQkJOXAyMDAwLkwgICAgICAgIC0gVXNlIDlQMjAwMC5MIHByb3RvY29sCisKKyAgZGZsdHVpZAlhdHRlbXB0IHRvIG1vdW50IGFzIGEgcGFydGljdWxhciB1aWQKKworICBkZmx0Z2lkCWF0dGVtcHQgdG8gbW91bnQgd2l0aCBhIHBhcnRpY3VsYXIgZ2lkCisKKyAgYWZpZAkJc2VjdXJpdHkgY2hhbm5lbCAtIHVzZWQgYnkgUGxhbiA5IGF1dGhlbnRpY2F0aW9uIHByb3RvY29scworCisgIG5vZGV2bWFwCWRvIG5vdCBtYXAgc3BlY2lhbCBmaWxlcyAtIHJlcHJlc2VudCB0aGVtIGFzIG5vcm1hbCBmaWxlcy4KKyAgCQlUaGlzIGNhbiBiZSB1c2VkIHRvIHNoYXJlIGRldmljZXMvbmFtZWQgcGlwZXMvc29ja2V0cyBiZXR3ZWVuCisJCWhvc3RzLiAgVGhpcyBmdW5jdGlvbmFsaXR5IHdpbGwgYmUgZXhwYW5kZWQgaW4gbGF0ZXIgdmVyc2lvbnMuCisKKyAgYWNjZXNzCXRoZXJlIGFyZSBmb3VyIGFjY2VzcyBtb2Rlcy4KKwkJCXVzZXIgID0gaWYgYSB1c2VyIHRyaWVzIHRvIGFjY2VzcyBhIGZpbGUgb24gdjlmcworCQkJICAgICAgICBmaWxlc3lzdGVtIGZvciB0aGUgZmlyc3QgdGltZSwgdjlmcyBzZW5kcyBhbgorCQkJICAgICAgICBhdHRhY2ggY29tbWFuZCAoVGF0dGFjaCkgZm9yIHRoYXQgdXNlci4KKwkJCQlUaGlzIGlzIHRoZSBkZWZhdWx0IG1vZGUuCisJCQk8dWlkPiA9IGFsbG93cyBvbmx5IHVzZXIgd2l0aCB1aWQ9PHVpZD4gdG8gYWNjZXNzCisJCQkJdGhlIGZpbGVzIG9uIHRoZSBtb3VudGVkIGZpbGVzeXN0ZW0KKwkJCWFueSAgID0gdjlmcyBkb2VzIHNpbmdsZSBhdHRhY2ggYW5kIHBlcmZvcm1zIGFsbAorCQkJCW9wZXJhdGlvbnMgYXMgb25lIHVzZXIKKwkJCWNsaWVudCA9IEFDTCBiYXNlZCBhY2Nlc3MgY2hlY2sgb24gdGhlIDlwIGNsaWVudAorCQkJICAgICAgICAgc2lkZSBmb3IgYWNjZXNzIHZhbGlkYXRpb24KKworICBjYWNoZXRhZwljYWNoZSB0YWcgdG8gdXNlIHRoZSBzcGVjaWZpZWQgcGVyc2lzdGVudCBjYWNoZS4KKwkJY2FjaGUgdGFncyBmb3IgZXhpc3RpbmcgY2FjaGUgc2Vzc2lvbnMgY2FuIGJlIGxpc3RlZCBhdAorCQkvc3lzL2ZzLzlwL2NhY2hlcy4gKGFwcGxpZXMgb25seSB0byBjYWNoZT1mc2NhY2hlKQorCitSRVNPVVJDRVMKKz09PT09PT09PQorCitQcm90b2NvbCBzcGVjaWZpY2F0aW9ucyBhcmUgbWFpbnRhaW5lZCBvbiBnaXRodWI6CitodHRwOi8vZXJpY3ZoLmdpdGh1Yi5jb20vOXAtcmZjLworCis5cCBjbGllbnQgYW5kIHNlcnZlciBpbXBsZW1lbnRhdGlvbnMgYXJlIGxpc3RlZCBvbgoraHR0cDovLzlwLmNhdC12Lm9yZy9pbXBsZW1lbnRhdGlvbnMKKworQSA5cDIwMDAuTCBzZXJ2ZXIgaXMgYmVpbmcgZGV2ZWxvcGVkIGJ5IExMTkwgYW5kIGNhbiBiZSBmb3VuZAorYXQgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Rpb2QvCisKK1RoZXJlIGFyZSB1c2VyIGFuZCBkZXZlbG9wZXIgbWFpbGluZyBsaXN0cyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgdjlmcyBwcm9qZWN0CitvbiBzb3VyY2Vmb3JnZSAoaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy92OWZzKS4KKworTmV3cyBhbmQgb3RoZXIgaW5mb3JtYXRpb24gaXMgbWFpbnRhaW5lZCBvbiBhIFdpa2kuCisoaHR0cDovL3NmLm5ldC9hcHBzL21lZGlhd2lraS92OWZzL2luZGV4LnBocCkuCisKK0J1ZyByZXBvcnRzIGFyZSBiZXN0IGlzc3VlZCB2aWEgdGhlIG1haWxpbmcgbGlzdC4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIFBsYW4gOSBPcGVyYXRpbmcgU3lzdGVtIGNoZWNrIG91dAoraHR0cDovL3BsYW45LmJlbGwtbGFicy5jb20vcGxhbjkKKworRm9yIGluZm9ybWF0aW9uIG9uIFBsYW4gOSBmcm9tIFVzZXIgU3BhY2UgKFBsYW4gOSBhcHBsaWNhdGlvbnMgYW5kIGxpYnJhcmllcworcG9ydGVkIHRvIExpbnV4L0JTRC9PU1gvZXRjKSBjaGVjayBvdXQgaHR0cDovL3N3dGNoLmNvbS9wbGFuOQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL0xvY2tpbmcgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL0xvY2tpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZkNDQzNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvTG9ja2luZwpAQCAtMCwwICsxLDU3OSBAQAorCVRoZSB0ZXh0IGJlbG93IGRlc2NyaWJlcyB0aGUgbG9ja2luZyBydWxlcyBmb3IgVkZTLXJlbGF0ZWQgbWV0aG9kcy4KK0l0IGlzIChiZWxpZXZlZCB0byBiZSkgdXAtdG8tZGF0ZS4gKlBsZWFzZSosIGlmIHlvdSBjaGFuZ2UgYW55dGhpbmcgaW4KK3Byb3RvdHlwZXMgb3IgbG9ja2luZyBwcm90b2NvbHMgLSB1cGRhdGUgdGhpcyBmaWxlLiBBbmQgdXBkYXRlIHRoZSByZWxldmFudAoraW5zdGFuY2VzIGluIHRoZSB0cmVlLCBkb24ndCBsZWF2ZSB0aGF0IHRvIG1haW50YWluZXJzIG9mIGZpbGVzeXN0ZW1zL2RldmljZXMvCitldGMuIEF0IHRoZSB2ZXJ5IGxlYXN0LCBwdXQgdGhlIGxpc3Qgb2YgZHViaW91cyBjYXNlcyBpbiB0aGUgZW5kIG9mIHRoaXMgZmlsZS4KK0Rvbid0IHR1cm4gaXQgaW50byBsb2cgLSBtYWludGFpbmVycyBvZiBvdXQtb2YtdGhlLXRyZWUgY29kZSBhcmUgc3VwcG9zZWQgdG8KK2JlIGFibGUgdG8gdXNlIGRpZmYoMSkuCisJVGhpbmcgY3VycmVudGx5IG1pc3NpbmcgaGVyZTogc29ja2V0IG9wZXJhdGlvbnMuIEFsZXhleT8KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGRlbnRyeV9vcGVyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitwcm90b3R5cGVzOgorCWludCAoKmRfcmV2YWxpZGF0ZSkoc3RydWN0IGRlbnRyeSAqLCB1bnNpZ25lZCBpbnQpOworCWludCAoKmRfd2Vha19yZXZhbGlkYXRlKShzdHJ1Y3QgZGVudHJ5ICosIHVuc2lnbmVkIGludCk7CisJaW50ICgqZF9oYXNoKShjb25zdCBzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBxc3RyICopOworCWludCAoKmRfY29tcGFyZSkoY29uc3Qgc3RydWN0IGRlbnRyeSAqLCBjb25zdCBzdHJ1Y3QgZGVudHJ5ICosCisJCQl1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IHFzdHIgKik7CisJaW50ICgqZF9kZWxldGUpKHN0cnVjdCBkZW50cnkgKik7CisJdm9pZCAoKmRfcmVsZWFzZSkoc3RydWN0IGRlbnRyeSAqKTsKKwl2b2lkICgqZF9pcHV0KShzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqKTsKKwljaGFyICooKmRfZG5hbWUpKChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGNoYXIgKmJ1ZmZlciwgaW50IGJ1Zmxlbik7CisJc3RydWN0IHZmc21vdW50ICooKmRfYXV0b21vdW50KShzdHJ1Y3QgcGF0aCAqcGF0aCk7CisJaW50ICgqZF9tYW5hZ2UpKHN0cnVjdCBkZW50cnkgKiwgYm9vbCk7CisKK2xvY2tpbmcgcnVsZXM6CisJCXJlbmFtZV9sb2NrCS0+ZF9sb2NrCW1heSBibG9jawlyY3Utd2FsaworZF9yZXZhbGlkYXRlOglubwkJbm8JCXllcyAocmVmLXdhbGspCW1heWJlCitkX3dlYWtfcmV2YWxpZGF0ZTpubwkJbm8JCXllcwkgCW5vCitkX2hhc2gJCW5vCQlubwkJbm8JCW1heWJlCitkX2NvbXBhcmU6CXllcwkJbm8JCW5vCQltYXliZQorZF9kZWxldGU6CW5vCQl5ZXMJCW5vCQlubworZF9yZWxlYXNlOglubwkJbm8JCXllcwkJbm8KK2RfcHJ1bmU6ICAgICAgICBubyAgICAgICAgICAgICAgeWVzICAgICAgICAgICAgIG5vICAgICAgICAgICAgICBubworZF9pcHV0OgkJbm8JCW5vCQl5ZXMJCW5vCitkX2RuYW1lOglubwkJbm8JCW5vCQlubworZF9hdXRvbW91bnQ6CW5vCQlubwkJeWVzCQlubworZF9tYW5hZ2U6CW5vCQlubwkJeWVzIChyZWYtd2FsaykJbWF5YmUKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGlub2RlX29wZXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIAorcHJvdG90eXBlczoKKwlpbnQgKCpjcmVhdGUpIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICosdW1vZGVfdCwgYm9vbCk7CisJc3RydWN0IGRlbnRyeSAqICgqbG9va3VwKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqLCB1bnNpZ25lZCBpbnQpOworCWludCAoKmxpbmspIChzdHJ1Y3QgZGVudHJ5ICosc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqKTsKKwlpbnQgKCp1bmxpbmspIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOworCWludCAoKnN5bWxpbmspIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICosY29uc3QgY2hhciAqKTsKKwlpbnQgKCpta2RpcikgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKix1bW9kZV90KTsKKwlpbnQgKCpybWRpcikgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CisJaW50ICgqbWtub2QpIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICosdW1vZGVfdCxkZXZfdCk7CisJaW50ICgqcmVuYW1lKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwKKwkJCXN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICopOworCWludCAoKnJlbmFtZTIpIChzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLAorCQkJc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwgdW5zaWduZWQgaW50KTsKKwlpbnQgKCpyZWFkbGluaykgKHN0cnVjdCBkZW50cnkgKiwgY2hhciBfX3VzZXIgKixpbnQpOworCWNvbnN0IGNoYXIgKigqZm9sbG93X2xpbmspIChzdHJ1Y3QgZGVudHJ5ICosIHZvaWQgKiopOworCXZvaWQgKCpwdXRfbGluaykgKHN0cnVjdCBpbm9kZSAqLCB2b2lkICopOworCXZvaWQgKCp0cnVuY2F0ZSkgKHN0cnVjdCBpbm9kZSAqKTsKKwlpbnQgKCpwZXJtaXNzaW9uKSAoc3RydWN0IGlub2RlICosIGludCwgdW5zaWduZWQgaW50KTsKKwlpbnQgKCpnZXRfYWNsKShzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKKwlpbnQgKCpzZXRhdHRyKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaWF0dHIgKik7CisJaW50ICgqZ2V0YXR0cikgKHN0cnVjdCB2ZnNtb3VudCAqLCBzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBrc3RhdCAqKTsKKwlpbnQgKCpzZXR4YXR0cikgKHN0cnVjdCBkZW50cnkgKiwgY29uc3QgY2hhciAqLGNvbnN0IHZvaWQgKixzaXplX3QsaW50KTsKKwlzc2l6ZV90ICgqZ2V0eGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGNoYXIgKiwgdm9pZCAqLCBzaXplX3QpOworCXNzaXplX3QgKCpsaXN0eGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKiwgc2l6ZV90KTsKKwlpbnQgKCpyZW1vdmV4YXR0cikgKHN0cnVjdCBkZW50cnkgKiwgY29uc3QgY2hhciAqKTsKKwlpbnQgKCpmaWVtYXApKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmllbWFwX2V4dGVudF9pbmZvICosIHU2NCBzdGFydCwgdTY0IGxlbik7CisJdm9pZCAoKnVwZGF0ZV90aW1lKShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHRpbWVzcGVjICosIGludCk7CisJaW50ICgqYXRvbWljX29wZW4pKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosCisJCQkJc3RydWN0IGZpbGUgKiwgdW5zaWduZWQgb3Blbl9mbGFnLAorCQkJCXVtb2RlX3QgY3JlYXRlX21vZGUsIGludCAqb3BlbmVkKTsKKwlpbnQgKCp0bXBmaWxlKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwgdW1vZGVfdCk7CisJaW50ICgqZGVudHJ5X29wZW4pKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGZpbGUgKiwgY29uc3Qgc3RydWN0IGNyZWQgKik7CisKK2xvY2tpbmcgcnVsZXM6CisJYWxsIG1heSBibG9jaworCQlpX211dGV4KGlub2RlKQorbG9va3VwOgkJeWVzCitjcmVhdGU6CQl5ZXMKK2xpbms6CQl5ZXMgKGJvdGgpCitta25vZDoJCXllcworc3ltbGluazoJeWVzCitta2RpcjoJCXllcwordW5saW5rOgkJeWVzIChib3RoKQorcm1kaXI6CQl5ZXMgKGJvdGgpCShzZWUgYmVsb3cpCityZW5hbWU6CQl5ZXMgKGFsbCkJKHNlZSBiZWxvdykKK3JlbmFtZTI6CXllcyAoYWxsKQkoc2VlIGJlbG93KQorcmVhZGxpbms6CW5vCitmb2xsb3dfbGluazoJbm8KK3B1dF9saW5rOglubworc2V0YXR0cjoJeWVzCitwZXJtaXNzaW9uOglubyAobWF5IG5vdCBibG9jayBpZiBjYWxsZWQgaW4gcmN1LXdhbGsgbW9kZSkKK2dldF9hY2w6CW5vCitnZXRhdHRyOglubworc2V0eGF0dHI6CXllcworZ2V0eGF0dHI6CW5vCitsaXN0eGF0dHI6CW5vCityZW1vdmV4YXR0cjoJeWVzCitmaWVtYXA6CQlubwordXBkYXRlX3RpbWU6CW5vCithdG9taWNfb3BlbjoJeWVzCit0bXBmaWxlOglubworZGVudHJ5X29wZW46CW5vCisKKwlBZGRpdGlvbmFsbHksIC0+cm1kaXIoKSwgLT51bmxpbmsoKSBhbmQgLT5yZW5hbWUoKSBoYXZlIC0+aV9tdXRleCBvbgordmljdGltLgorCWNyb3NzLWRpcmVjdG9yeSAtPnJlbmFtZSgpIGFuZCByZW5hbWUyKCkgaGFzIChwZXItc3VwZXJibG9jaykKKy0+c192ZnNfcmVuYW1lX3NlbS4KKworU2VlIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZGlyZWN0b3J5LWxvY2tpbmcgZm9yIG1vcmUgZGV0YWlsZWQgZGlzY3Vzc2lvbgorb2YgdGhlIGxvY2tpbmcgc2NoZW1lIGZvciBkaXJlY3Rvcnkgb3BlcmF0aW9ucy4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHN1cGVyX29wZXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitwcm90b3R5cGVzOgorCXN0cnVjdCBpbm9kZSAqKCphbGxvY19pbm9kZSkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYik7CisJdm9pZCAoKmRlc3Ryb3lfaW5vZGUpKHN0cnVjdCBpbm9kZSAqKTsKKwl2b2lkICgqZGlydHlfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKiwgaW50IGZsYWdzKTsKKwlpbnQgKCp3cml0ZV9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKndiYyk7CisJaW50ICgqZHJvcF9pbm9kZSkgKHN0cnVjdCBpbm9kZSAqKTsKKwl2b2lkICgqZXZpY3RfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKik7CisJdm9pZCAoKnB1dF9zdXBlcikgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKKwlpbnQgKCpzeW5jX2ZzKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgd2FpdCk7CisJaW50ICgqZnJlZXplX2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOworCWludCAoKnVuZnJlZXplX2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOworCWludCAoKnN0YXRmcykgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGtzdGF0ZnMgKik7CisJaW50ICgqcmVtb3VudF9mcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQgKiwgY2hhciAqKTsKKwl2b2lkICgqdW1vdW50X2JlZ2luKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOworCWludCAoKnNob3dfb3B0aW9ucykoc3RydWN0IHNlcV9maWxlICosIHN0cnVjdCBkZW50cnkgKik7CisJc3NpemVfdCAoKnF1b3RhX3JlYWQpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQsIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QpOworCXNzaXplX3QgKCpxdW90YV93cml0ZSkoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCwgY29uc3QgY2hhciAqLCBzaXplX3QsIGxvZmZfdCk7CisJaW50ICgqYmRldl90cnlfdG9fZnJlZV9wYWdlKShzdHJ1Y3Qgc3VwZXJfYmxvY2sqLCBzdHJ1Y3QgcGFnZSosIGdmcF90KTsKKworbG9ja2luZyBydWxlczoKKwlBbGwgbWF5IGJsb2NrIFtub3QgdHJ1ZSwgc2VlIGJlbG93XQorCQkJc191bW91bnQKK2FsbG9jX2lub2RlOgorZGVzdHJveV9pbm9kZToKK2RpcnR5X2lub2RlOgord3JpdGVfaW5vZGU6Citkcm9wX2lub2RlOgkJCQkhISFpbm9kZS0+aV9sb2NrISEhCitldmljdF9pbm9kZToKK3B1dF9zdXBlcjoJCXdyaXRlCitzeW5jX2ZzOgkJcmVhZAorZnJlZXplX2ZzOgkJd3JpdGUKK3VuZnJlZXplX2ZzOgkJd3JpdGUKK3N0YXRmczoJCQltYXliZShyZWFkKQkoc2VlIGJlbG93KQorcmVtb3VudF9mczoJCXdyaXRlCit1bW91bnRfYmVnaW46CQlubworc2hvd19vcHRpb25zOgkJbm8JCShuYW1lc3BhY2Vfc2VtKQorcXVvdGFfcmVhZDoJCW5vCQkoc2VlIGJlbG93KQorcXVvdGFfd3JpdGU6CQlubwkJKHNlZSBiZWxvdykKK2JkZXZfdHJ5X3RvX2ZyZWVfcGFnZToJbm8JCShzZWUgYmVsb3cpCisKKy0+c3RhdGZzKCkgaGFzIHNfdW1vdW50IChzaGFyZWQpIHdoZW4gY2FsbGVkIGJ5IHVzdGF0KDIpIChuYXRpdmUgb3IKK2NvbXBhdCksIGJ1dCB0aGF0J3MgYW4gYWNjaWRlbnQgb2YgYmFkIEFQSTsgc191bW91bnQgaXMgdXNlZCB0byBwaW4KK3RoZSBzdXBlcmJsb2NrIGRvd24gd2hlbiB3ZSBvbmx5IGhhdmUgZGV2X3QgZ2l2ZW4gdXMgYnkgdXNlcmxhbmQgdG8KK2lkZW50aWZ5IHRoZSBzdXBlcmJsb2NrLiAgRXZlcnl0aGluZyBlbHNlIChzdGF0ZnMoKSwgZnN0YXRmcygpLCBldGMuKQorZG9lc24ndCBob2xkIGl0IHdoZW4gY2FsbGluZyAtPnN0YXRmcygpIC0gc3VwZXJibG9jayBpcyBwaW5uZWQgZG93bgorYnkgcmVzb2x2aW5nIHRoZSBwYXRobmFtZSBwYXNzZWQgdG8gc3lzY2FsbC4KKy0+cXVvdGFfcmVhZCgpIGFuZCAtPnF1b3RhX3dyaXRlKCkgZnVuY3Rpb25zIGFyZSBib3RoIGd1YXJhbnRlZWQgdG8KK2JlIHRoZSBvbmx5IG9uZXMgb3BlcmF0aW5nIG9uIHRoZSBxdW90YSBmaWxlIGJ5IHRoZSBxdW90YSBjb2RlICh2aWEKK2RxaW9fc2VtKSAodW5sZXNzIGFuIGFkbWluIHJlYWxseSB3YW50cyB0byBzY3JldyB1cCBzb21ldGhpbmcgYW5kCit3cml0ZXMgdG8gcXVvdGEgZmlsZXMgd2l0aCBxdW90YXMgb24pLiBGb3Igb3RoZXIgZGV0YWlscyBhYm91dCBsb2NraW5nCitzZWUgYWxzbyBkcXVvdF9vcGVyYXRpb25zIHNlY3Rpb24uCistPmJkZXZfdHJ5X3RvX2ZyZWVfcGFnZSBpcyBjYWxsZWQgZnJvbSB0aGUgLT5yZWxlYXNlcGFnZSBoYW5kbGVyIG9mCit0aGUgYmxvY2sgZGV2aWNlIGlub2RlLiAgU2VlIHRoZXJlIGZvciBtb3JlIGRldGFpbHMuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBmaWxlX3N5c3RlbV90eXBlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorcHJvdG90eXBlczoKKwlzdHJ1Y3QgZGVudHJ5ICooKm1vdW50KSAoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKiwgaW50LAorCQkgICAgICAgY29uc3QgY2hhciAqLCB2b2lkICopOworCXZvaWQgKCpraWxsX3NiKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOworbG9ja2luZyBydWxlczoKKwkJbWF5IGJsb2NrCittb3VudAkJeWVzCitraWxsX3NiCQl5ZXMKKworLT5tb3VudCgpIHJldHVybnMgRVJSX1BUUiBvciB0aGUgcm9vdCBkZW50cnk7IGl0cyBzdXBlcmJsb2NrIHNob3VsZCBiZSBsb2NrZWQKK29uIHJldHVybi4KKy0+a2lsbF9zYigpIHRha2VzIGEgd3JpdGUtbG9ja2VkIHN1cGVyYmxvY2ssIGRvZXMgYWxsIHNodXRkb3duIHdvcmsgb24gaXQsCit1bmxvY2tzIGFuZCBkcm9wcyB0aGUgcmVmZXJlbmNlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gYWRkcmVzc19zcGFjZV9vcGVyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitwcm90b3R5cGVzOgorCWludCAoKndyaXRlcGFnZSkoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjKTsKKwlpbnQgKCpyZWFkcGFnZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKik7CisJaW50ICgqc3luY19wYWdlKShzdHJ1Y3QgcGFnZSAqKTsKKwlpbnQgKCp3cml0ZXBhZ2VzKShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBzdHJ1Y3Qgd3JpdGViYWNrX2NvbnRyb2wgKik7CisJaW50ICgqc2V0X3BhZ2VfZGlydHkpKHN0cnVjdCBwYWdlICpwYWdlKTsKKwlpbnQgKCpyZWFkcGFnZXMpKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKKwkJCXN0cnVjdCBsaXN0X2hlYWQgKnBhZ2VzLCB1bnNpZ25lZCBucl9wYWdlcyk7CisJaW50ICgqd3JpdGVfYmVnaW4pKHN0cnVjdCBmaWxlICosIHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLAorCQkJCWxvZmZfdCBwb3MsIHVuc2lnbmVkIGxlbiwgdW5zaWduZWQgZmxhZ3MsCisJCQkJc3RydWN0IHBhZ2UgKipwYWdlcCwgdm9pZCAqKmZzZGF0YSk7CisJaW50ICgqd3JpdGVfZW5kKShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKKwkJCQlsb2ZmX3QgcG9zLCB1bnNpZ25lZCBsZW4sIHVuc2lnbmVkIGNvcGllZCwKKwkJCQlzdHJ1Y3QgcGFnZSAqcGFnZSwgdm9pZCAqZnNkYXRhKTsKKwlzZWN0b3JfdCAoKmJtYXApKHN0cnVjdCBhZGRyZXNzX3NwYWNlICosIHNlY3Rvcl90KTsKKwl2b2lkICgqaW52YWxpZGF0ZXBhZ2UpIChzdHJ1Y3QgcGFnZSAqLCB1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCk7CisJaW50ICgqcmVsZWFzZXBhZ2UpIChzdHJ1Y3QgcGFnZSAqLCBpbnQpOworCXZvaWQgKCpmcmVlcGFnZSkoc3RydWN0IHBhZ2UgKik7CisJaW50ICgqZGlyZWN0X0lPKShzdHJ1Y3Qga2lvY2IgKiwgc3RydWN0IGlvdl9pdGVyICppdGVyLCBsb2ZmX3Qgb2Zmc2V0KTsKKwlpbnQgKCptaWdyYXRlcGFnZSkoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgc3RydWN0IHBhZ2UgKiwgc3RydWN0IHBhZ2UgKik7CisJaW50ICgqbGF1bmRlcl9wYWdlKShzdHJ1Y3QgcGFnZSAqKTsKKwlpbnQgKCppc19wYXJ0aWFsbHlfdXB0b2RhdGUpKHN0cnVjdCBwYWdlICosIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOworCWludCAoKmVycm9yX3JlbW92ZV9wYWdlKShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBzdHJ1Y3QgcGFnZSAqKTsKKwlpbnQgKCpzd2FwX2FjdGl2YXRlKShzdHJ1Y3QgZmlsZSAqKTsKKwlpbnQgKCpzd2FwX2RlYWN0aXZhdGUpKHN0cnVjdCBmaWxlICopOworCitsb2NraW5nIHJ1bGVzOgorCUFsbCBleGNlcHQgc2V0X3BhZ2VfZGlydHkgYW5kIGZyZWVwYWdlIG1heSBibG9jaworCisJCQlQYWdlTG9ja2VkKHBhZ2UpCWlfbXV0ZXgKK3dyaXRlcGFnZToJCXllcywgdW5sb2NrcyAoc2VlIGJlbG93KQorcmVhZHBhZ2U6CQl5ZXMsIHVubG9ja3MKK3N5bmNfcGFnZToJCW1heWJlCit3cml0ZXBhZ2VzOgorc2V0X3BhZ2VfZGlydHkJCW5vCityZWFkcGFnZXM6Cit3cml0ZV9iZWdpbjoJCWxvY2tzIHRoZSBwYWdlCQl5ZXMKK3dyaXRlX2VuZDoJCXllcywgdW5sb2NrcwkJeWVzCitibWFwOgoraW52YWxpZGF0ZXBhZ2U6CQl5ZXMKK3JlbGVhc2VwYWdlOgkJeWVzCitmcmVlcGFnZToJCXllcworZGlyZWN0X0lPOgorbWlncmF0ZXBhZ2U6CQl5ZXMgKGJvdGgpCitsYXVuZGVyX3BhZ2U6CQl5ZXMKK2lzX3BhcnRpYWxseV91cHRvZGF0ZToJeWVzCitlcnJvcl9yZW1vdmVfcGFnZToJeWVzCitzd2FwX2FjdGl2YXRlOgkJbm8KK3N3YXBfZGVhY3RpdmF0ZToJbm8KKworCS0+d3JpdGVfYmVnaW4oKSwgLT53cml0ZV9lbmQoKSwgLT5zeW5jX3BhZ2UoKSBhbmQgLT5yZWFkcGFnZSgpCittYXkgYmUgY2FsbGVkIGZyb20gdGhlIHJlcXVlc3QgaGFuZGxlciAoL2Rldi9sb29wKS4KKworCS0+cmVhZHBhZ2UoKSB1bmxvY2tzIHRoZSBwYWdlLCBlaXRoZXIgc3luY2hyb25vdXNseSBvciB2aWEgSS9PCitjb21wbGV0aW9uLgorCisJLT5yZWFkcGFnZXMoKSBwb3B1bGF0ZXMgdGhlIHBhZ2VjYWNoZSB3aXRoIHRoZSBwYXNzZWQgcGFnZXMgYW5kIHN0YXJ0cworSS9PIGFnYWluc3QgdGhlbS4gIFRoZXkgY29tZSB1bmxvY2tlZCB1cG9uIEkvTyBjb21wbGV0aW9uLgorCisJLT53cml0ZXBhZ2UoKSBpcyB1c2VkIGZvciB0d28gcHVycG9zZXM6IGZvciAibWVtb3J5IGNsZWFuc2luZyIgYW5kIGZvcgorInN5bmMiLiAgVGhlc2UgYXJlIHF1aXRlIGRpZmZlcmVudCBvcGVyYXRpb25zIGFuZCB0aGUgYmVoYXZpb3VyIG1heSBkaWZmZXIKK2RlcGVuZGluZyB1cG9uIHRoZSBtb2RlLgorCitJZiB3cml0ZXBhZ2UgaXMgY2FsbGVkIGZvciBzeW5jICh3YmMtPnN5bmNfbW9kZSAhPSBXQkNfU1lOQ19OT05FKSB0aGVuCitpdCAqbXVzdCogc3RhcnQgSS9PIGFnYWluc3QgdGhlIHBhZ2UsIGV2ZW4gaWYgdGhhdCB3b3VsZCBpbnZvbHZlCitibG9ja2luZyBvbiBpbi1wcm9ncmVzcyBJL08uCisKK0lmIHdyaXRlcGFnZSBpcyBjYWxsZWQgZm9yIG1lbW9yeSBjbGVhbnNpbmcgKHN5bmNfbW9kZSA9PQorV0JDX1NZTkNfTk9ORSkgdGhlbiBpdHMgcm9sZSBpcyB0byBnZXQgYXMgbXVjaCB3cml0ZW91dCB1bmRlcndheSBhcworcG9zc2libGUuICBTbyB3cml0ZXBhZ2Ugc2hvdWxkIHRyeSB0byBhdm9pZCBibG9ja2luZyBhZ2FpbnN0CitjdXJyZW50bHktaW4tcHJvZ3Jlc3MgSS9PLgorCitJZiB0aGUgZmlsZXN5c3RlbSBpcyBub3QgY2FsbGVkIGZvciAic3luYyIgYW5kIGl0IGRldGVybWluZXMgdGhhdCBpdAord291bGQgbmVlZCB0byBibG9jayBhZ2FpbnN0IGluLXByb2dyZXNzIEkvTyB0byBiZSBhYmxlIHRvIHN0YXJ0IG5ldyBJL08KK2FnYWluc3QgdGhlIHBhZ2UgdGhlIGZpbGVzeXN0ZW0gc2hvdWxkIHJlZGlydHkgdGhlIHBhZ2Ugd2l0aAorcmVkaXJ0eV9wYWdlX2Zvcl93cml0ZXBhZ2UoKSwgdGhlbiB1bmxvY2sgdGhlIHBhZ2UgYW5kIHJldHVybiB6ZXJvLgorVGhpcyBtYXkgYWxzbyBiZSBkb25lIHRvIGF2b2lkIGludGVybmFsIGRlYWRsb2NrcywgYnV0IHJhcmVseS4KKworSWYgdGhlIGZpbGVzeXN0ZW0gaXMgY2FsbGVkIGZvciBzeW5jIHRoZW4gaXQgbXVzdCB3YWl0IG9uIGFueQoraW4tcHJvZ3Jlc3MgSS9PIGFuZCB0aGVuIHN0YXJ0IG5ldyBJL08uCisKK1RoZSBmaWxlc3lzdGVtIHNob3VsZCB1bmxvY2sgdGhlIHBhZ2Ugc3luY2hyb25vdXNseSwgYmVmb3JlIHJldHVybmluZyB0byB0aGUKK2NhbGxlciwgdW5sZXNzIC0+d3JpdGVwYWdlKCkgcmV0dXJucyBzcGVjaWFsIFdSSVRFUEFHRV9BQ1RJVkFURQordmFsdWUuIFdSSVRFUEFHRV9BQ1RJVkFURSBtZWFucyB0aGF0IHBhZ2UgY2Fubm90IHJlYWxseSBiZSB3cml0dGVuIG91dAorY3VycmVudGx5LCBhbmQgVk0gc2hvdWxkIHN0b3AgY2FsbGluZyAtPndyaXRlcGFnZSgpIG9uIHRoaXMgcGFnZSBmb3Igc29tZQordGltZS4gVk0gZG9lcyB0aGlzIGJ5IG1vdmluZyBwYWdlIHRvIHRoZSBoZWFkIG9mIHRoZSBhY3RpdmUgbGlzdCwgaGVuY2UgdGhlCituYW1lLgorCitVbmxlc3MgdGhlIGZpbGVzeXN0ZW0gaXMgZ29pbmcgdG8gcmVkaXJ0eV9wYWdlX2Zvcl93cml0ZXBhZ2UoKSwgdW5sb2NrIHRoZSBwYWdlCithbmQgcmV0dXJuIHplcm8sIHdyaXRlcGFnZSAqbXVzdCogcnVuIHNldF9wYWdlX3dyaXRlYmFjaygpIGFnYWluc3QgdGhlIHBhZ2UsCitmb2xsb3dlZCBieSB1bmxvY2tpbmcgaXQuICBPbmNlIHNldF9wYWdlX3dyaXRlYmFjaygpIGhhcyBiZWVuIHJ1biBhZ2FpbnN0IHRoZQorcGFnZSwgd3JpdGUgSS9PIGNhbiBiZSBzdWJtaXR0ZWQgYW5kIHRoZSB3cml0ZSBJL08gY29tcGxldGlvbiBoYW5kbGVyIG11c3QgcnVuCitlbmRfcGFnZV93cml0ZWJhY2soKSBvbmNlIHRoZSBJL08gaXMgY29tcGxldGUuICBJZiBubyBJL08gaXMgc3VibWl0dGVkLCB0aGUKK2ZpbGVzeXN0ZW0gbXVzdCBydW4gZW5kX3BhZ2Vfd3JpdGViYWNrKCkgYWdhaW5zdCB0aGUgcGFnZSBiZWZvcmUgcmV0dXJuaW5nIGZyb20KK3dyaXRlcGFnZS4KKworVGhhdCBpczogYWZ0ZXIgMi41LjEyLCBwYWdlcyB3aGljaCBhcmUgdW5kZXIgd3JpdGVvdXQgYXJlICpub3QqIGxvY2tlZC4gIE5vdGUsCitpZiB0aGUgZmlsZXN5c3RlbSBuZWVkcyB0aGUgcGFnZSB0byBiZSBsb2NrZWQgZHVyaW5nIHdyaXRlb3V0LCB0aGF0IGlzIG9rLCB0b28sCit0aGUgcGFnZSBpcyBhbGxvd2VkIHRvIGJlIHVubG9ja2VkIGF0IGFueSBwb2ludCBpbiB0aW1lIGJldHdlZW4gdGhlIGNhbGxzIHRvCitzZXRfcGFnZV93cml0ZWJhY2soKSBhbmQgZW5kX3BhZ2Vfd3JpdGViYWNrKCkuCisKK05vdGUsIGZhaWx1cmUgdG8gcnVuIGVpdGhlciByZWRpcnR5X3BhZ2VfZm9yX3dyaXRlcGFnZSgpIG9yIHRoZSBjb21iaW5hdGlvbiBvZgorc2V0X3BhZ2Vfd3JpdGViYWNrKCkvZW5kX3BhZ2Vfd3JpdGViYWNrKCkgb24gYSBwYWdlIHN1Ym1pdHRlZCB0byB3cml0ZXBhZ2UKK3dpbGwgbGVhdmUgdGhlIHBhZ2UgaXRzZWxmIG1hcmtlZCBjbGVhbiBidXQgaXQgd2lsbCBiZSB0YWdnZWQgYXMgZGlydHkgaW4gdGhlCityYWRpeCB0cmVlLiAgVGhpcyBpbmNvaGVyZW5jeSBjYW4gbGVhZCB0byBhbGwgc29ydHMgb2YgaGFyZC10by1kZWJ1ZyBwcm9ibGVtcworaW4gdGhlIGZpbGVzeXN0ZW0gbGlrZSBoYXZpbmcgZGlydHkgaW5vZGVzIGF0IHVtb3VudCBhbmQgbG9zaW5nIHdyaXR0ZW4gZGF0YS4KKworCS0+c3luY19wYWdlKCkgbG9ja2luZyBydWxlcyBhcmUgbm90IHdlbGwtZGVmaW5lZCAtIHVzdWFsbHkgaXQgaXMgY2FsbGVkCit3aXRoIGxvY2sgb24gcGFnZSwgYnV0IHRoYXQgaXMgbm90IGd1YXJhbnRlZWQuIENvbnNpZGVyaW5nIHRoZSBjdXJyZW50bHkKK2V4aXN0aW5nIGluc3RhbmNlcyBvZiB0aGlzIG1ldGhvZCAtPnN5bmNfcGFnZSgpIGl0c2VsZiBkb2Vzbid0IGxvb2sKK3dlbGwtZGVmaW5lZC4uLgorCisJLT53cml0ZXBhZ2VzKCkgaXMgdXNlZCBmb3IgcGVyaW9kaWMgd3JpdGViYWNrIGFuZCBmb3Igc3lzY2FsbC1pbml0aWF0ZWQKK3N5bmMgb3BlcmF0aW9ucy4gIFRoZSBhZGRyZXNzX3NwYWNlIHNob3VsZCBzdGFydCBJL08gYWdhaW5zdCBhdCBsZWFzdAorKm5yX3RvX3dyaXRlIHBhZ2VzLiAgKm5yX3RvX3dyaXRlIG11c3QgYmUgZGVjcmVtZW50ZWQgZm9yIGVhY2ggcGFnZSB3aGljaCBpcword3JpdHRlbi4gIFRoZSBhZGRyZXNzX3NwYWNlIGltcGxlbWVudGF0aW9uIG1heSB3cml0ZSBtb3JlIChvciBsZXNzKSBwYWdlcwordGhhbiAqbnJfdG9fd3JpdGUgYXNrcyBmb3IsIGJ1dCBpdCBzaG91bGQgdHJ5IHRvIGJlIHJlYXNvbmFibHkgY2xvc2UuICBJZgorbnJfdG9fd3JpdGUgaXMgTlVMTCwgYWxsIGRpcnR5IHBhZ2VzIG11c3QgYmUgd3JpdHRlbi4KKword3JpdGVwYWdlcyBzaG91bGQgX29ubHlfIHdyaXRlIHBhZ2VzIHdoaWNoIGFyZSBwcmVzZW50IG9uCittYXBwaW5nLT5pb19wYWdlcy4KKworCS0+c2V0X3BhZ2VfZGlydHkoKSBpcyBjYWxsZWQgZnJvbSB2YXJpb3VzIHBsYWNlcyBpbiB0aGUga2VybmVsCit3aGVuIHRoZSB0YXJnZXQgcGFnZSBpcyBtYXJrZWQgYXMgbmVlZGluZyB3cml0ZWJhY2suICBJdCBtYXkgYmUgY2FsbGVkCit1bmRlciBzcGlubG9jayAoaXQgY2Fubm90IGJsb2NrKSBhbmQgaXMgc29tZXRpbWVzIGNhbGxlZCB3aXRoIHRoZSBwYWdlCitub3QgbG9ja2VkLgorCisJLT5ibWFwKCkgaXMgY3VycmVudGx5IHVzZWQgYnkgbGVnYWN5IGlvY3RsKCkgKEZJQk1BUCkgcHJvdmlkZWQgYnkgc29tZQorZmlsZXN5c3RlbXMgYW5kIGJ5IHRoZSBzd2FwcGVyLiBUaGUgbGF0dGVyIHdpbGwgZXZlbnR1YWxseSBnbyBhd2F5LiAgUGxlYXNlLAora2VlcCBpdCB0aGF0IHdheSBhbmQgZG9uJ3QgYnJlZWQgbmV3IGNhbGxlcnMuCisKKwktPmludmFsaWRhdGVwYWdlKCkgaXMgY2FsbGVkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gbXVzdCBhdHRlbXB0IHRvIGRyb3AKK3NvbWUgb3IgYWxsIG9mIHRoZSBidWZmZXJzIGZyb20gdGhlIHBhZ2Ugd2hlbiBpdCBpcyBiZWluZyB0cnVuY2F0ZWQuIEl0CityZXR1cm5zIHplcm8gb24gc3VjY2Vzcy4gSWYgLT5pbnZhbGlkYXRlcGFnZSBpcyB6ZXJvLCB0aGUga2VybmVsIHVzZXMKK2Jsb2NrX2ludmFsaWRhdGVwYWdlKCkgaW5zdGVhZC4KKworCS0+cmVsZWFzZXBhZ2UoKSBpcyBjYWxsZWQgd2hlbiB0aGUga2VybmVsIGlzIGFib3V0IHRvIHRyeSB0byBkcm9wIHRoZQorYnVmZmVycyBmcm9tIHRoZSBwYWdlIGluIHByZXBhcmF0aW9uIGZvciBmcmVlaW5nIGl0LiAgSXQgcmV0dXJucyB6ZXJvIHRvCitpbmRpY2F0ZSB0aGF0IHRoZSBidWZmZXJzIGFyZSAob3IgbWF5IGJlKSBmcmVlYWJsZS4gIElmIC0+cmVsZWFzZXBhZ2UgaXMgemVybywKK3RoZSBrZXJuZWwgYXNzdW1lcyB0aGF0IHRoZSBmcyBoYXMgbm8gcHJpdmF0ZSBpbnRlcmVzdCBpbiB0aGUgYnVmZmVycy4KKworCS0+ZnJlZXBhZ2UoKSBpcyBjYWxsZWQgd2hlbiB0aGUga2VybmVsIGlzIGRvbmUgZHJvcHBpbmcgdGhlIHBhZ2UKK2Zyb20gdGhlIHBhZ2UgY2FjaGUuCisKKwktPmxhdW5kZXJfcGFnZSgpIG1heSBiZSBjYWxsZWQgcHJpb3IgdG8gcmVsZWFzaW5nIGEgcGFnZSBpZgoraXQgaXMgc3RpbGwgZm91bmQgdG8gYmUgZGlydHkuIEl0IHJldHVybnMgemVybyBpZiB0aGUgcGFnZSB3YXMgc3VjY2Vzc2Z1bGx5CitjbGVhbmVkLCBvciBhbiBlcnJvciB2YWx1ZSBpZiBub3QuIE5vdGUgdGhhdCBpbiBvcmRlciB0byBwcmV2ZW50IHRoZSBwYWdlCitnZXR0aW5nIG1hcHBlZCBiYWNrIGluIGFuZCByZWRpcnRpZWQsIGl0IG5lZWRzIHRvIGJlIGtlcHQgbG9ja2VkCithY3Jvc3MgdGhlIGVudGlyZSBvcGVyYXRpb24uCisKKwktPnN3YXBfYWN0aXZhdGUgd2lsbCBiZSBjYWxsZWQgd2l0aCBhIG5vbi16ZXJvIGFyZ3VtZW50IG9uCitmaWxlcyBiYWNraW5nIChub24gYmxvY2sgZGV2aWNlIGJhY2tlZCkgc3dhcGZpbGVzLiBBIHJldHVybiB2YWx1ZQorb2YgemVybyBpbmRpY2F0ZXMgc3VjY2VzcywgaW4gd2hpY2ggY2FzZSB0aGlzIGZpbGUgY2FuIGJlIHVzZWQgZm9yCitiYWNraW5nIHN3YXBzcGFjZS4gVGhlIHN3YXBzcGFjZSBvcGVyYXRpb25zIHdpbGwgYmUgcHJveGllZCB0byB0aGUKK2FkZHJlc3Mgc3BhY2Ugb3BlcmF0aW9ucy4KKworCS0+c3dhcF9kZWFjdGl2YXRlKCkgd2lsbCBiZSBjYWxsZWQgaW4gdGhlIHN5c19zd2Fwb2ZmKCkKK3BhdGggYWZ0ZXIgLT5zd2FwX2FjdGl2YXRlKCkgcmV0dXJuZWQgc3VjY2Vzcy4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZmlsZV9sb2NrX29wZXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitwcm90b3R5cGVzOgorCXZvaWQgKCpmbF9jb3B5X2xvY2spKHN0cnVjdCBmaWxlX2xvY2sgKiwgc3RydWN0IGZpbGVfbG9jayAqKTsKKwl2b2lkICgqZmxfcmVsZWFzZV9wcml2YXRlKShzdHJ1Y3QgZmlsZV9sb2NrICopOworCisKK2xvY2tpbmcgcnVsZXM6CisJCQlpbm9kZS0+aV9sb2NrCW1heSBibG9jaworZmxfY29weV9sb2NrOgkJeWVzCQlubworZmxfcmVsZWFzZV9wcml2YXRlOgltYXliZQkJbWF5YmVbMV0KKworWzFdOgktPmZsX3JlbGVhc2VfcHJpdmF0ZSBmb3IgZmxvY2sgb3IgUE9TSVggbG9ja3MgaXMgY3VycmVudGx5IGFsbG93ZWQKK3RvIGJsb2NrLiBMZWFzZXMgaG93ZXZlciBjYW4gc3RpbGwgYmUgZnJlZWQgd2hpbGUgdGhlIGlfbG9jayBpcyBoZWxkIGFuZAorc28gZmxfcmVsZWFzZV9wcml2YXRlIGNhbGxlZCBvbiBhIGxlYXNlIHNob3VsZCBub3QgYmxvY2suCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGxvY2tfbWFuYWdlcl9vcGVyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorcHJvdG90eXBlczoKKwlpbnQgKCpsbV9jb21wYXJlX293bmVyKShzdHJ1Y3QgZmlsZV9sb2NrICosIHN0cnVjdCBmaWxlX2xvY2sgKik7CisJdW5zaWduZWQgbG9uZyAoKmxtX293bmVyX2tleSkoc3RydWN0IGZpbGVfbG9jayAqKTsKKwl2b2lkICgqbG1fbm90aWZ5KShzdHJ1Y3QgZmlsZV9sb2NrICopOyAgLyogdW5ibG9jayBjYWxsYmFjayAqLworCWludCAoKmxtX2dyYW50KShzdHJ1Y3QgZmlsZV9sb2NrICosIHN0cnVjdCBmaWxlX2xvY2sgKiwgaW50KTsKKwl2b2lkICgqbG1fYnJlYWspKHN0cnVjdCBmaWxlX2xvY2sgKik7IC8qIGJyZWFrX2xlYXNlIGNhbGxiYWNrICovCisJaW50ICgqbG1fY2hhbmdlKShzdHJ1Y3QgZmlsZV9sb2NrICoqLCBpbnQpOworCitsb2NraW5nIHJ1bGVzOgorCisJCQlpbm9kZS0+aV9sb2NrCWJsb2NrZWRfbG9ja19sb2NrCW1heSBibG9jaworbG1fY29tcGFyZV9vd25lcjoJeWVzWzFdCQltYXliZQkJCW5vCitsbV9vd25lcl9rZXkJCXllc1sxXQkJeWVzCQkJbm8KK2xtX25vdGlmeToJCXllcwkJeWVzCQkJbm8KK2xtX2dyYW50OgkJbm8JCW5vCQkJbm8KK2xtX2JyZWFrOgkJeWVzCQlubwkJCW5vCitsbV9jaGFuZ2UJCXllcwkJbm8JCQlubworCitbMV06CS0+bG1fY29tcGFyZV9vd25lciBhbmQgLT5sbV9vd25lcl9rZXkgYXJlIGdlbmVyYWxseSBjYWxsZWQgd2l0aAorKmFuKiBpbm9kZS0+aV9sb2NrIGhlbGQuIEl0IG1heSBub3QgYmUgdGhlIGlfbG9jayBvZiB0aGUgaW5vZGUKK2Fzc29jaWF0ZWQgd2l0aCBlaXRoZXIgZmlsZV9sb2NrIGFyZ3VtZW50ISBUaGlzIGlzIHRoZSBjYXNlIHdpdGggZGVhZGxvY2sKK2RldGVjdGlvbiwgc2luY2UgdGhlIGNvZGUgaGFzIHRvIGNoYXNlIGRvd24gdGhlIG93bmVycyBvZiBsb2NrcyB0aGF0IG1heQorYmUgZW50aXJlbHkgdW5yZWxhdGVkIHRvIHRoZSBvbmUgb24gd2hpY2ggdGhlIGxvY2sgaXMgYmVpbmcgYWNxdWlyZWQuCitGb3IgZGVhZGxvY2sgZGV0ZWN0aW9uIGhvd2V2ZXIsIHRoZSBibG9ja2VkX2xvY2tfbG9jayBpcyBhbHNvIGhlbGQuIFRoZQorZmFjdCB0aGF0IHRoZXNlIGxvY2tzIGFyZSBoZWxkIGVuc3VyZXMgdGhhdCB0aGUgZmlsZV9sb2NrcyBkbyBub3QKK2Rpc2FwcGVhciBvdXQgZnJvbSB1bmRlciB5b3Ugd2hpbGUgZG9pbmcgdGhlIGNvbXBhcmlzb24gb3IgZ2VuZXJhdGluZyBhbgorb3duZXIga2V5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gYnVmZmVyX2hlYWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3Byb3RvdHlwZXM6CisJdm9pZCAoKmJfZW5kX2lvKShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBpbnQgdXB0b2RhdGUpOworCitsb2NraW5nIHJ1bGVzOgorCWNhbGxlZCBmcm9tIGludGVycnVwdHMuIEluIG90aGVyIHdvcmRzLCBleHRyZW1lIGNhcmUgaXMgbmVlZGVkIGhlcmUuCitiaCBpcyBsb2NrZWQsIGJ1dCB0aGF0J3MgYWxsIHdhcnJhbnRpZXMgd2UgaGF2ZSBoZXJlLiBDdXJyZW50bHkgb25seSBSQUlEMSwKK2hpZ2htZW0sIGZzL2J1ZmZlci5jLCBhbmQgZnMvbnRmcy9hb3BzLmMgYXJlIHByb3ZpZGluZyB0aGVzZS4gQmxvY2sgZGV2aWNlcworY2FsbCB0aGlzIG1ldGhvZCB1cG9uIHRoZSBJTyBjb21wbGV0aW9uLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gYmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3Byb3RvdHlwZXM6CisJaW50ICgqb3BlbikgKHN0cnVjdCBibG9ja19kZXZpY2UgKiwgZm1vZGVfdCk7CisJaW50ICgqcmVsZWFzZSkgKHN0cnVjdCBnZW5kaXNrICosIGZtb2RlX3QpOworCWludCAoKmlvY3RsKSAoc3RydWN0IGJsb2NrX2RldmljZSAqLCBmbW9kZV90LCB1bnNpZ25lZCwgdW5zaWduZWQgbG9uZyk7CisJaW50ICgqY29tcGF0X2lvY3RsKSAoc3RydWN0IGJsb2NrX2RldmljZSAqLCBmbW9kZV90LCB1bnNpZ25lZCwgdW5zaWduZWQgbG9uZyk7CisJaW50ICgqZGlyZWN0X2FjY2VzcykgKHN0cnVjdCBibG9ja19kZXZpY2UgKiwgc2VjdG9yX3QsIHZvaWQgX19wbWVtICoqLAorCQkJCXVuc2lnbmVkIGxvbmcgKik7CisJaW50ICgqbWVkaWFfY2hhbmdlZCkgKHN0cnVjdCBnZW5kaXNrICopOworCXZvaWQgKCp1bmxvY2tfbmF0aXZlX2NhcGFjaXR5KSAoc3RydWN0IGdlbmRpc2sgKik7CisJaW50ICgqcmV2YWxpZGF0ZV9kaXNrKSAoc3RydWN0IGdlbmRpc2sgKik7CisJaW50ICgqZ2V0Z2VvKShzdHJ1Y3QgYmxvY2tfZGV2aWNlICosIHN0cnVjdCBoZF9nZW9tZXRyeSAqKTsKKwl2b2lkICgqc3dhcF9zbG90X2ZyZWVfbm90aWZ5KSAoc3RydWN0IGJsb2NrX2RldmljZSAqLCB1bnNpZ25lZCBsb25nKTsKKworbG9ja2luZyBydWxlczoKKwkJCWJkX211dGV4CitvcGVuOgkJCXllcworcmVsZWFzZToJCXllcworaW9jdGw6CQkJbm8KK2NvbXBhdF9pb2N0bDoJCW5vCitkaXJlY3RfYWNjZXNzOgkJbm8KK21lZGlhX2NoYW5nZWQ6CQlubwordW5sb2NrX25hdGl2ZV9jYXBhY2l0eToJbm8KK3JldmFsaWRhdGVfZGlzazoJbm8KK2dldGdlbzoJCQlubworc3dhcF9zbG90X2ZyZWVfbm90aWZ5Oglubwkoc2VlIGJlbG93KQorCittZWRpYV9jaGFuZ2VkLCB1bmxvY2tfbmF0aXZlX2NhcGFjaXR5IGFuZCByZXZhbGlkYXRlX2Rpc2sgYXJlIGNhbGxlZCBvbmx5IGZyb20KK2NoZWNrX2Rpc2tfY2hhbmdlKCkuCisKK3N3YXBfc2xvdF9mcmVlX25vdGlmeSBpcyBjYWxsZWQgd2l0aCBzd2FwX2xvY2sgYW5kIHNvbWV0aW1lcyB0aGUgcGFnZSBsb2NrCitoZWxkLgorCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBmaWxlX29wZXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorcHJvdG90eXBlczoKKwlsb2ZmX3QgKCpsbHNlZWspIChzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGludCk7CisJc3NpemVfdCAoKnJlYWQpIChzdHJ1Y3QgZmlsZSAqLCBjaGFyIF9fdXNlciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKKwlzc2l6ZV90ICgqd3JpdGUpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyIF9fdXNlciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKKwlzc2l6ZV90ICgqcmVhZF9pdGVyKSAoc3RydWN0IGtpb2NiICosIHN0cnVjdCBpb3ZfaXRlciAqKTsKKwlzc2l6ZV90ICgqd3JpdGVfaXRlcikgKHN0cnVjdCBraW9jYiAqLCBzdHJ1Y3QgaW92X2l0ZXIgKik7CisJaW50ICgqaXRlcmF0ZSkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCBkaXJfY29udGV4dCAqKTsKKwl1bnNpZ25lZCBpbnQgKCpwb2xsKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICopOworCWxvbmcgKCp1bmxvY2tlZF9pb2N0bCkgKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGludCwgdW5zaWduZWQgbG9uZyk7CisJbG9uZyAoKmNvbXBhdF9pb2N0bCkgKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGludCwgdW5zaWduZWQgbG9uZyk7CisJaW50ICgqbW1hcCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKKwlpbnQgKCpvcGVuKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOworCWludCAoKmZsdXNoKSAoc3RydWN0IGZpbGUgKik7CisJaW50ICgqcmVsZWFzZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKKwlpbnQgKCpmc3luYykgKHN0cnVjdCBmaWxlICosIGxvZmZfdCBzdGFydCwgbG9mZl90IGVuZCwgaW50IGRhdGFzeW5jKTsKKwlpbnQgKCphaW9fZnN5bmMpIChzdHJ1Y3Qga2lvY2IgKiwgaW50IGRhdGFzeW5jKTsKKwlpbnQgKCpmYXN5bmMpIChpbnQsIHN0cnVjdCBmaWxlICosIGludCk7CisJaW50ICgqbG9jaykgKHN0cnVjdCBmaWxlICosIGludCwgc3RydWN0IGZpbGVfbG9jayAqKTsKKwlzc2l6ZV90ICgqcmVhZHYpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKiwgdW5zaWduZWQgbG9uZywKKwkJCWxvZmZfdCAqKTsKKwlzc2l6ZV90ICgqd3JpdGV2KSAoc3RydWN0IGZpbGUgKiwgY29uc3Qgc3RydWN0IGlvdmVjICosIHVuc2lnbmVkIGxvbmcsCisJCQlsb2ZmX3QgKik7CisJc3NpemVfdCAoKnNlbmRmaWxlKSAoc3RydWN0IGZpbGUgKiwgbG9mZl90ICosIHNpemVfdCwgcmVhZF9hY3Rvcl90LAorCQkJdm9pZCBfX3VzZXIgKik7CisJc3NpemVfdCAoKnNlbmRwYWdlKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKiwgaW50LCBzaXplX3QsCisJCQlsb2ZmX3QgKiwgaW50KTsKKwl1bnNpZ25lZCBsb25nICgqZ2V0X3VubWFwcGVkX2FyZWEpKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGxvbmcsCisJCQl1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKTsKKwlpbnQgKCpjaGVja19mbGFncykoaW50KTsKKwlpbnQgKCpmbG9jaykgKHN0cnVjdCBmaWxlICosIGludCwgc3RydWN0IGZpbGVfbG9jayAqKTsKKwlzc2l6ZV90ICgqc3BsaWNlX3dyaXRlKShzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICosIHN0cnVjdCBmaWxlICosIGxvZmZfdCAqLAorCQkJc2l6ZV90LCB1bnNpZ25lZCBpbnQpOworCXNzaXplX3QgKCpzcGxpY2VfcmVhZCkoc3RydWN0IGZpbGUgKiwgbG9mZl90ICosIHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKiwKKwkJCXNpemVfdCwgdW5zaWduZWQgaW50KTsKKwlpbnQgKCpzZXRsZWFzZSkoc3RydWN0IGZpbGUgKiwgbG9uZywgc3RydWN0IGZpbGVfbG9jayAqKiwgdm9pZCAqKik7CisJbG9uZyAoKmZhbGxvY2F0ZSkoc3RydWN0IGZpbGUgKiwgaW50LCBsb2ZmX3QsIGxvZmZfdCk7Cit9OworCitsb2NraW5nIHJ1bGVzOgorCUFsbCBtYXkgYmxvY2suCisKKy0+bGxzZWVrKCkgbG9ja2luZyBoYXMgbW92ZWQgZnJvbSBsbHNlZWsgdG8gdGhlIGluZGl2aWR1YWwgbGxzZWVrCitpbXBsZW1lbnRhdGlvbnMuICBJZiB5b3VyIGZzIGlzIG5vdCB1c2luZyBnZW5lcmljX2ZpbGVfbGxzZWVrLCB5b3UKK25lZWQgdG8gYWNxdWlyZSBhbmQgcmVsZWFzZSB0aGUgYXBwcm9wcmlhdGUgbG9ja3MgaW4geW91ciAtPmxsc2VlaygpLgorRm9yIG1hbnkgZmlsZXN5c3RlbXMsIGl0IGlzIHByb2JhYmx5IHNhZmUgdG8gYWNxdWlyZSB0aGUgaW5vZGUKK211dGV4IG9yIGp1c3QgdG8gdXNlIGlfc2l6ZV9yZWFkKCkgaW5zdGVhZC4KK05vdGU6IHRoaXMgZG9lcyBub3QgcHJvdGVjdCB0aGUgZmlsZS0+Zl9wb3MgYWdhaW5zdCBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMKK3NpbmNlIHRoaXMgaXMgc29tZXRoaW5nIHRoZSB1c2Vyc3BhY2UgaGFzIHRvIHRha2UgY2FyZSBhYm91dC4KKworLT5mYXN5bmMoKSBpcyByZXNwb25zaWJsZSBmb3IgbWFpbnRhaW5pbmcgdGhlIEZBU1lOQyBiaXQgaW4gZmlscC0+Zl9mbGFncy4KK01vc3QgaW5zdGFuY2VzIGNhbGwgZmFzeW5jX2hlbHBlcigpLCB3aGljaCBkb2VzIHRoYXQgbWFpbnRlbmFuY2UsIHNvIGl0J3MKK25vdCBub3JtYWxseSBzb21ldGhpbmcgb25lIG5lZWRzIHRvIHdvcnJ5IGFib3V0LiAgUmV0dXJuIHZhbHVlcyA+IDAgd2lsbCBiZQorbWFwcGVkIHRvIHplcm8gaW4gdGhlIFZGUyBsYXllci4KKworLT5yZWFkZGlyKCkgYW5kIC0+aW9jdGwoKSBvbiBkaXJlY3RvcmllcyBtdXN0IGJlIGNoYW5nZWQuIElkZWFsbHkgd2Ugd291bGQKK21vdmUgLT5yZWFkZGlyKCkgdG8gaW5vZGVfb3BlcmF0aW9ucyBhbmQgdXNlIGEgc2VwYXJhdGUgbWV0aG9kIGZvciBkaXJlY3RvcnkKKy0+aW9jdGwoKSBvciBraWxsIHRoZSBsYXR0ZXIgY29tcGxldGVseS4gT25lIG9mIHRoZSBwcm9ibGVtcyBpcyB0aGF0IGZvcgorYW55dGhpbmcgdGhhdCByZXNlbWJsZXMgdW5pb24tbW91bnQgd2Ugd29uJ3QgaGF2ZSBhIHN0cnVjdCBmaWxlIGZvciBhbGwKK2NvbXBvbmVudHMuIEFuZCB0aGVyZSBhcmUgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGN1cnJlbnQgaW50ZXJmYWNlIGlzIGEgbWVzcy4uLgorCistPnJlYWQgb24gZGlyZWN0b3JpZXMgcHJvYmFibHkgbXVzdCBnbyBhd2F5IC0gd2Ugc2hvdWxkIGp1c3QgZW5mb3JjZSAtRUlTRElSCitpbiBzeXNfcmVhZCgpIGFuZCBmcmllbmRzLgorCistPnNldGxlYXNlIG9wZXJhdGlvbnMgc2hvdWxkIGNhbGwgZ2VuZXJpY19zZXRsZWFzZSgpIGJlZm9yZSBvciBhZnRlciBzZXR0aW5nCit0aGUgbGVhc2Ugd2l0aGluIHRoZSBpbmRpdmlkdWFsIGZpbGVzeXN0ZW0gdG8gcmVjb3JkIHRoZSByZXN1bHQgb2YgdGhlCitvcGVyYXRpb24KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGRxdW90X29wZXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorcHJvdG90eXBlczoKKwlpbnQgKCp3cml0ZV9kcXVvdCkgKHN0cnVjdCBkcXVvdCAqKTsKKwlpbnQgKCphY3F1aXJlX2RxdW90KSAoc3RydWN0IGRxdW90ICopOworCWludCAoKnJlbGVhc2VfZHF1b3QpIChzdHJ1Y3QgZHF1b3QgKik7CisJaW50ICgqbWFya19kaXJ0eSkgKHN0cnVjdCBkcXVvdCAqKTsKKwlpbnQgKCp3cml0ZV9pbmZvKSAoc3RydWN0IHN1cGVyX2Jsb2NrICosIGludCk7CisKK1RoZXNlIG9wZXJhdGlvbnMgYXJlIGludGVuZGVkIHRvIGJlIG1vcmUgb3IgbGVzcyB3cmFwcGluZyBmdW5jdGlvbnMgdGhhdCBlbnN1cmUKK2EgcHJvcGVyIGxvY2tpbmcgd3J0IHRoZSBmaWxlc3lzdGVtIGFuZCBjYWxsIHRoZSBnZW5lcmljIHF1b3RhIG9wZXJhdGlvbnMuCisKK1doYXQgZmlsZXN5c3RlbSBzaG91bGQgZXhwZWN0IGZyb20gdGhlIGdlbmVyaWMgcXVvdGEgZnVuY3Rpb25zOgorCisJCUZTIHJlY3Vyc2lvbglIZWxkIGxvY2tzIHdoZW4gY2FsbGVkCit3cml0ZV9kcXVvdDoJeWVzCQlkcW9ub2ZmX3NlbSBvciBkcXB0cl9zZW0KK2FjcXVpcmVfZHF1b3Q6CXllcwkJZHFvbm9mZl9zZW0gb3IgZHFwdHJfc2VtCityZWxlYXNlX2RxdW90Ogl5ZXMJCWRxb25vZmZfc2VtIG9yIGRxcHRyX3NlbQorbWFya19kaXJ0eToJbm8JCS0KK3dyaXRlX2luZm86CXllcwkJZHFvbm9mZl9zZW0KKworRlMgcmVjdXJzaW9uIG1lYW5zIGNhbGxpbmcgLT5xdW90YV9yZWFkKCkgYW5kIC0+cXVvdGFfd3JpdGUoKSBmcm9tIHN1cGVyYmxvY2sKK29wZXJhdGlvbnMuCisKK01vcmUgZGV0YWlscyBhYm91dCBxdW90YSBsb2NraW5nIGNhbiBiZSBmb3VuZCBpbiBmcy9kcXVvdC5jLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gdm1fb3BlcmF0aW9uc19zdHJ1Y3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3Byb3RvdHlwZXM6CisJdm9pZCAoKm9wZW4pKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCopOworCXZvaWQgKCpjbG9zZSkoc3RydWN0IHZtX2FyZWFfc3RydWN0Kik7CisJaW50ICgqZmF1bHQpKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCosIHN0cnVjdCB2bV9mYXVsdCAqKTsKKwlpbnQgKCpwYWdlX21rd3JpdGUpKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqLCBzdHJ1Y3Qgdm1fZmF1bHQgKik7CisJaW50ICgqcGZuX21rd3JpdGUpKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqLCBzdHJ1Y3Qgdm1fZmF1bHQgKik7CisJaW50ICgqYWNjZXNzKShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiwgdW5zaWduZWQgbG9uZywgdm9pZCosIGludCwgaW50KTsKKworbG9ja2luZyBydWxlczoKKwkJbW1hcF9zZW0JUGFnZUxvY2tlZChwYWdlKQorb3BlbjoJCXllcworY2xvc2U6CQl5ZXMKK2ZhdWx0OgkJeWVzCQljYW4gcmV0dXJuIHdpdGggcGFnZSBsb2NrZWQKK21hcF9wYWdlczoJeWVzCitwYWdlX21rd3JpdGU6CXllcwkJY2FuIHJldHVybiB3aXRoIHBhZ2UgbG9ja2VkCitwZm5fbWt3cml0ZToJeWVzCithY2Nlc3M6CQl5ZXMKKworCS0+ZmF1bHQoKSBpcyBjYWxsZWQgd2hlbiBhIHByZXZpb3VzbHkgbm90IHByZXNlbnQgcHRlIGlzIGFib3V0Cit0byBiZSBmYXVsdGVkIGluLiBUaGUgZmlsZXN5c3RlbSBtdXN0IGZpbmQgYW5kIHJldHVybiB0aGUgcGFnZSBhc3NvY2lhdGVkCit3aXRoIHRoZSBwYXNzZWQgaW4gInBnb2ZmIiBpbiB0aGUgdm1fZmF1bHQgc3RydWN0dXJlLiBJZiBpdCBpcyBwb3NzaWJsZSB0aGF0Cit0aGUgcGFnZSBtYXkgYmUgdHJ1bmNhdGVkIGFuZC9vciBpbnZhbGlkYXRlZCwgdGhlbiB0aGUgZmlsZXN5c3RlbSBtdXN0IGxvY2sKK3RoZSBwYWdlLCB0aGVuIGVuc3VyZSBpdCBpcyBub3QgYWxyZWFkeSB0cnVuY2F0ZWQgKHRoZSBwYWdlIGxvY2sgd2lsbCBibG9jaworc3Vic2VxdWVudCB0cnVuY2F0ZSksIGFuZCB0aGVuIHJldHVybiB3aXRoIFZNX0ZBVUxUX0xPQ0tFRCwgYW5kIHRoZSBwYWdlCitsb2NrZWQuIFRoZSBWTSB3aWxsIHVubG9jayB0aGUgcGFnZS4KKworCS0+bWFwX3BhZ2VzKCkgaXMgY2FsbGVkIHdoZW4gVk0gYXNrcyB0byBtYXAgZWFzeSBhY2Nlc3NpYmxlIHBhZ2VzLgorRmlsZXN5c3RlbSBzaG91bGQgZmluZCBhbmQgbWFwIHBhZ2VzIGFzc29jaWF0ZWQgd2l0aCBvZmZzZXRzIGZyb20gInBnb2ZmIgordGlsbCAibWF4X3Bnb2ZmIi4gLT5tYXBfcGFnZXMoKSBpcyBjYWxsZWQgd2l0aCBwYWdlIHRhYmxlIGxvY2tlZCBhbmQgbXVzdAorbm90IGJsb2NrLiAgSWYgaXQncyBub3QgcG9zc2libGUgdG8gcmVhY2ggYSBwYWdlIHdpdGhvdXQgYmxvY2tpbmcsCitmaWxlc3lzdGVtIHNob3VsZCBza2lwIGl0LiBGaWxlc3lzdGVtIHNob3VsZCB1c2UgZG9fc2V0X3B0ZSgpIHRvIHNldHVwCitwYWdlIHRhYmxlIGVudHJ5LiBQb2ludGVyIHRvIGVudHJ5IGFzc29jaWF0ZWQgd2l0aCBvZmZzZXQgInBnb2ZmIiBpcworcGFzc2VkIGluICJwdGUiIGZpZWxkIGluIHZtX2ZhdWx0IHN0cnVjdHVyZS4gUG9pbnRlcnMgdG8gZW50cmllcyBmb3Igb3RoZXIKK29mZnNldHMgc2hvdWxkIGJlIGNhbGN1bGF0ZWQgcmVsYXRpdmUgdG8gInB0ZSIuCisKKwktPnBhZ2VfbWt3cml0ZSgpIGlzIGNhbGxlZCB3aGVuIGEgcHJldmlvdXNseSByZWFkLW9ubHkgcHRlIGlzCithYm91dCB0byBiZWNvbWUgd3JpdGVhYmxlLiBUaGUgZmlsZXN5c3RlbSBhZ2FpbiBtdXN0IGVuc3VyZSB0aGF0IHRoZXJlIGFyZQorbm8gdHJ1bmNhdGUvaW52YWxpZGF0ZSByYWNlcywgYW5kIHRoZW4gcmV0dXJuIHdpdGggdGhlIHBhZ2UgbG9ja2VkLiBJZgordGhlIHBhZ2UgaGFzIGJlZW4gdHJ1bmNhdGVkLCB0aGUgZmlsZXN5c3RlbSBzaG91bGQgbm90IGxvb2sgdXAgYSBuZXcgcGFnZQorbGlrZSB0aGUgLT5mYXVsdCgpIGhhbmRsZXIsIGJ1dCBzaW1wbHkgcmV0dXJuIHdpdGggVk1fRkFVTFRfTk9QQUdFLCB3aGljaAord2lsbCBjYXVzZSB0aGUgVk0gdG8gcmV0cnkgdGhlIGZhdWx0LgorCisJLT5wZm5fbWt3cml0ZSgpIGlzIHRoZSBzYW1lIGFzIHBhZ2VfbWt3cml0ZSBidXQgd2hlbiB0aGUgcHRlIGlzCitWTV9QRk5NQVAgb3IgVk1fTUlYRURNQVAgd2l0aCBhIHBhZ2UtbGVzcyBlbnRyeS4gRXhwZWN0ZWQgcmV0dXJuIGlzCitWTV9GQVVMVF9OT1BBR0UuIE9yIG9uZSBvZiB0aGUgVk1fRkFVTFRfRVJST1IgdHlwZXMuIFRoZSBkZWZhdWx0IGJlaGF2aW9yCithZnRlciB0aGlzIGNhbGwgaXMgdG8gbWFrZSB0aGUgcHRlIHJlYWQtd3JpdGUsIHVubGVzcyBwZm5fbWt3cml0ZSByZXR1cm5zCithbiBlcnJvci4KKworCS0+YWNjZXNzKCkgaXMgY2FsbGVkIHdoZW4gZ2V0X3VzZXJfcGFnZXMoKSBmYWlscyBpbgorYWNjZXNzX3Byb2Nlc3Nfdm0oKSwgdHlwaWNhbGx5IHVzZWQgdG8gZGVidWcgYSBwcm9jZXNzIHRocm91Z2gKKy9wcm9jL3BpZC9tZW0gb3IgcHRyYWNlLiAgVGhpcyBmdW5jdGlvbiBpcyBuZWVkZWQgb25seSBmb3IKK1ZNX0lPIHwgVk1fUEZOTUFQIFZNQXMuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJCQlEdWJpb3VzIHN0dWZmCisKKyhpZiB5b3UgYnJlYWsgc29tZXRoaW5nIG9yIG5vdGljZSB0aGF0IGl0IGlzIGJyb2tlbiBhbmQgZG8gbm90IGZpeCBpdCB5b3Vyc2VsZgorLSBhdCBsZWFzdCBwdXQgaXQgaGVyZSkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvTWFrZWZpbGUgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4MzAxMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL01ha2VmaWxlCkBAIC0wLDAgKzEsNSBAQAorIyBMaXN0IG9mIHByb2dyYW1zIHRvIGJ1aWxkCitob3N0cHJvZ3MteSA6PSBkbm90aWZ5X3Rlc3QKKworIyBUZWxsIGtidWlsZCB0byBhbHdheXMgYnVpbGQgdGhlIHByb2dyYW1zCithbHdheXMgOj0gJChob3N0cHJvZ3MteSkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvYWRmcy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2FkZnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5NDk3NjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2FkZnMudHh0CkBAIC0wLDAgKzEsNzUgQEAKK01vdW50IG9wdGlvbnMgZm9yIEFERlMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICB1aWQ9bm5uCUFsbCBmaWxlcyBpbiB0aGUgcGFydGl0aW9uIHdpbGwgYmUgb3duZWQgYnkKKwkJdXNlciBpZCBubm4uICBEZWZhdWx0IDAgKHJvb3QpLgorICBnaWQ9bm5uCUFsbCBmaWxlcyBpbiB0aGUgcGFydGl0aW9uIHdpbGwgYmUgaW4gZ3JvdXAKKwkJbm5uLiAgRGVmYXVsdCAwIChyb290KS4KKyAgb3dubWFzaz1ubm4JVGhlIHBlcm1pc3Npb24gbWFzayBmb3IgQURGUyAnb3duZXInIHBlcm1pc3Npb25zCisJCXdpbGwgYmUgbm5uLiAgRGVmYXVsdCAwNzAwLgorICBvdGhtYXNrPW5ubglUaGUgcGVybWlzc2lvbiBtYXNrIGZvciBBREZTICdvdGhlcicgcGVybWlzc2lvbnMKKwkJd2lsbCBiZSBubm4uICBEZWZhdWx0IDAwNzcuCisgIGZ0c3VmZml4PW4JV2hlbiBmdHN1ZmZpeD0wLCBubyBmaWxlIHR5cGUgc3VmZml4IHdpbGwgYmUgYXBwbGllZC4KKwkJV2hlbiBmdHN1ZmZpeD0xLCBhIGhleGFkZWNpbWFsIHN1ZmZpeCBjb3JyZXNwb25kaW5nIHRvCisJCXRoZSBSSVNDIE9TIGZpbGUgdHlwZSB3aWxsIGJlIGFkZGVkLiAgRGVmYXVsdCAwLgorCitNYXBwaW5nIG9mIEFERlMgcGVybWlzc2lvbnMgdG8gTGludXggcGVybWlzc2lvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEFERlMgcGVybWlzc2lvbnMgY29uc2lzdCBvZiB0aGUgZm9sbG93aW5nOgorCisJT3duZXIgcmVhZAorCU93bmVyIHdyaXRlCisJT3RoZXIgcmVhZAorCU90aGVyIHdyaXRlCisKKyAgKEluIG9sZGVyIHZlcnNpb25zLCBhbiAnZXhlY3V0ZScgcGVybWlzc2lvbiBkaWQgZXhpc3QsIGJ1dCB0aGlzCisgICBkb2VzIG5vdCBob2xkIHRoZSBzYW1lIG1lYW5pbmcgYXMgdGhlIExpbnV4ICdleGVjdXRlJyBwZXJtaXNzaW9uCisgICBhbmQgaXMgbm93IG9ic29sZXRlKS4KKworICBUaGUgbWFwcGluZyBpcyBwZXJmb3JtZWQgYXMgZm9sbG93czoKKworCU93bmVyIHJlYWQJCQkJLT4gLXItLXItLXItLQorCU93bmVyIHdyaXRlCQkJCS0+IC0tdy0tdy0tLXcKKwlPd25lciByZWFkIGFuZCBmaWxldHlwZSBVbml4RXhlYwktPiAtLS14LS14LS14CisgICAgVGhlc2UgYXJlIHRoZW4gbWFza2VkIGJ5IG93bm1hc2ssIGVnIDcwMAktPiAtcnd4LS0tLS0tCisJUG9zc2libGUgb3duZXIgbW9kZSBwZXJtaXNzaW9ucwkJLT4gLXJ3eC0tLS0tLQorCisJT3RoZXIgcmVhZAkJCQktPiAtci0tci0tci0tCisJT3RoZXIgd3JpdGUJCQkJLT4gLS13LS13LS13LQorCU90aGVyIHJlYWQgYW5kIGZpbGV0eXBlIFVuaXhFeGVjCS0+IC0tLXgtLXgtLXgKKyAgICBUaGVzZSBhcmUgdGhlbiBtYXNrZWQgYnkgb3RobWFzaywgZWcgMDc3CS0+IC0tLS1yd3hyd3gKKwlQb3NzaWJsZSBvdGhlciBtb2RlIHBlcm1pc3Npb25zCQktPiAtLS0tcnd4cnd4CisKKyAgSGVuY2UsIHdpdGggdGhlIGRlZmF1bHQgbWFza3MsIGlmIGEgZmlsZSBpcyBvd25lciByZWFkL3dyaXRlLCBhbmQKKyAgbm90IGEgVW5peEV4ZWMgZmlsZXR5cGUsIHRoZW4gdGhlIHBlcm1pc3Npb25zIHdpbGwgYmU6CisKKwkJCS1ydy0tLS0tLS0KKworICBIb3dldmVyLCBpZiB0aGUgbWFza3Mgd2VyZSBvd25tYXNrPTA3NzAsb3RobWFzaz0wMDA3LCB0aGVuIHRoaXMgd291bGQKKyAgYmUgbW9kaWZpZWQgdG86CisJCQktcnctcnctLS0tCisKKyAgVGhlcmUgaXMgbm8gcmVzdHJpY3Rpb24gb24gd2hhdCB5b3UgY2FuIGRvIHdpdGggdGhlc2UgbWFza3MuICBZb3UgbWF5CisgIHdpc2ggdGhhdCBlaXRoZXIgcmVhZCBiaXRzIGdpdmUgcmVhZCBhY2Nlc3MgdG8gdGhlIGZpbGUgZm9yIGFsbCwgYnV0CisgIGtlZXAgdGhlIGRlZmF1bHQgd3JpdGUgcHJvdGVjdGlvbiAob3dubWFzaz0wNzU1LG90aG1hc2s9MDU3Nyk6CisKKwkJCS1ydy1yLS1yLS0KKworICBZb3UgY2FuIHRoZXJlZm9yZSB0YWlsb3IgdGhlIHBlcm1pc3Npb24gdHJhbnNsYXRpb24gdG8gd2hhdGV2ZXIgeW91CisgIGRlc2lyZSB0aGUgcGVybWlzc2lvbnMgc2hvdWxkIGJlIHVuZGVyIExpbnV4LgorCitSSVNDIE9TIGZpbGUgdHlwZSBzdWZmaXgKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFJJU0MgT1MgZmlsZSB0eXBlcyBhcmUgc3RvcmVkIGluIGJpdHMgMTkuLjggb2YgdGhlIGZpbGUgbG9hZCBhZGRyZXNzLgorCisgIFRvIGVuYWJsZSBub24tUklTQyBPUyBzeXN0ZW1zIHRvIGJlIHVzZWQgdG8gc3RvcmUgZmlsZXMgd2l0aG91dCBsb3NpbmcKKyAgZmlsZSB0eXBlIGluZm9ybWF0aW9uLCBhIGZpbGUgbmFtaW5nIGNvbnZlbnRpb24gd2FzIGRldmlzZWQgKGluaXRpYWxseQorICBmb3IgdXNlIHdpdGggTkZTKSBzdWNoIHRoYXQgYSBoZXhhZGVjaW1hbCBzdWZmaXggb2YgdGhlIGZvcm0gLHh5egorICBkZW5vdGVkIHRoZSBmaWxlIHR5cGU6IGUuZy4gQmFzaWNGaWxlLGZmYiBpcyBhIEJBU0lDICgweGZmYikgZmlsZS4gIFRoaXMKKyAgbmFtaW5nIGNvbnZlbnRpb24gaXMgbm93IGFsc28gdXNlZCBieSBSSVNDIE9TIGVtdWxhdG9ycyBzdWNoIGFzIFJQQ0VtdS4KKworICBNb3VudGluZyBhbiBBREZTIGRpc2Mgd2l0aCBvcHRpb24gZnRzdWZmaXg9MSB3aWxsIGNhdXNlIGFwcHJvcHJpYXRlIGZpbGUKKyAgdHlwZSBzdWZmaXhlcyB0byBiZSBhcHBlbmRlZCB0byBmaWxlIG5hbWVzIHJlYWQgZnJvbSBhIGRpcmVjdG9yeS4gIElmIHRoZQorICBmdHN1ZmZpeCBvcHRpb24gaXMgemVybyBvciBvbWl0dGVkLCBubyBmaWxlIHR5cGUgc3VmZml4ZXMgd2lsbCBiZSBhZGRlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvYWZmcy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2FmZnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYjYzYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2FmZnMudHh0CkBAIC0wLDAgKzEsMjIyIEBACitPdmVydmlldyBvZiBBbWlnYSBGaWxlc3lzdGVtcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworTm90IGFsbCB2YXJpZXRpZXMgb2YgdGhlIEFtaWdhIGZpbGVzeXN0ZW1zIGFyZSBzdXBwb3J0ZWQgZm9yIHJlYWRpbmcgYW5kCit3cml0aW5nLiBUaGUgQW1pZ2EgY3VycmVudGx5IGtub3dzIHNpeCBkaWZmZXJlbnQgZmlsZXN5c3RlbXM6CisKK0RPU1wwCQlUaGUgb2xkIG9yIG9yaWdpbmFsIGZpbGVzeXN0ZW0sIG5vdCByZWFsbHkgc3VpdGVkIGZvcgorCQloYXJkIGRpc2tzIGFuZCBub3JtYWxseSBub3QgdXNlZCBvbiB0aGVtLCBlaXRoZXIuCisJCVN1cHBvcnRlZCByZWFkL3dyaXRlLgorCitET1NcMQkJVGhlIG9yaWdpbmFsIEZhc3QgRmlsZSBTeXN0ZW0uIFN1cHBvcnRlZCByZWFkL3dyaXRlLgorCitET1NcMgkJVGhlIG9sZCAiaW50ZXJuYXRpb25hbCIgZmlsZXN5c3RlbS4gSW50ZXJuYXRpb25hbCBtZWFucyB0aGF0CisJCWEgYnVnIGhhcyBiZWVuIGZpeGVkIHNvIHRoYXQgYWNjZW50ZWQgKCJpbnRlcm5hdGlvbmFsIikgbGV0dGVycworCQlpbiBmaWxlIG5hbWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlLCBhcyB0aGV5IG91Z2h0IHRvIGJlLgorCQlTdXBwb3J0ZWQgcmVhZC93cml0ZS4KKworRE9TXDMJCVRoZSAiaW50ZXJuYXRpb25hbCIgRmFzdCBGaWxlIFN5c3RlbS4gIFN1cHBvcnRlZCByZWFkL3dyaXRlLgorCitET1NcNAkJVGhlIG9yaWdpbmFsIGZpbGVzeXN0ZW0gd2l0aCBkaXJlY3RvcnkgY2FjaGUuIFRoZSBkaXJlY3RvcnkKKwkJY2FjaGUgc3BlZWRzIHVwIGRpcmVjdG9yeSBhY2Nlc3NlcyBvbiBmbG9wcGllcyBjb25zaWRlcmFibHksCisJCWJ1dCBzbG93cyBkb3duIGZpbGUgY3JlYXRpb24vZGVsZXRpb24uIERvZXNuJ3QgbWFrZSBtdWNoCisJCXNlbnNlIG9uIGhhcmQgZGlza3MuIFN1cHBvcnRlZCByZWFkIG9ubHkuCisKK0RPU1w1CQlUaGUgRmFzdCBGaWxlIFN5c3RlbSB3aXRoIGRpcmVjdG9yeSBjYWNoZS4gU3VwcG9ydGVkIHJlYWQgb25seS4KKworQWxsIG9mIHRoZSBhYm92ZSBmaWxlc3lzdGVtcyBhbGxvdyBibG9jayBzaXplcyBmcm9tIDUxMiB0byAzMksgYnl0ZXMuCitTdXBwb3J0ZWQgYmxvY2sgc2l6ZXMgYXJlOiA1MTIsIDEwMjQsIDIwNDggYW5kIDQwOTYgYnl0ZXMuIExhcmdlciBibG9ja3MKK3NwZWVkIHVwIGFsbW9zdCBldmVyeXRoaW5nIGF0IHRoZSBleHBlbnNlIG9mIHdhc3RlZCBkaXNrIHNwYWNlLiBUaGUgc3BlZWQKK2dhaW4gYWJvdmUgNEsgc2VlbXMgbm90IHJlYWxseSB3b3J0aCB0aGUgcHJpY2UsIHNvIHlvdSBkb24ndCBsb3NlIHRvbworbXVjaCBoZXJlLCBlaXRoZXIuCisKK1RoZSBtdUZTIChtdWx0aSB1c2VyIEZpbGUgU3lzdGVtKSBlcXVpdmFsZW50cyBvZiB0aGUgYWJvdmUgZmlsZSBzeXN0ZW1zCithcmUgc3VwcG9ydGVkLCB0b28uCisKK01vdW50IG9wdGlvbnMgZm9yIHRoZSBBRkZTCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitwcm90ZWN0CQlJZiB0aGlzIG9wdGlvbiBpcyBzZXQsIHRoZSBwcm90ZWN0aW9uIGJpdHMgY2Fubm90IGJlIGFsdGVyZWQuCisKK3NldHVpZFs9dWlkXQlUaGlzIHNldHMgdGhlIG93bmVyIG9mIGFsbCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgaW4gdGhlIGZpbGUKKwkJc3lzdGVtIHRvIHVpZCBvciB0aGUgdWlkIG9mIHRoZSBjdXJyZW50IHVzZXIsIHJlc3BlY3RpdmVseS4KKworc2V0Z2lkWz1naWRdCVNhbWUgYXMgYWJvdmUsIGJ1dCBmb3IgZ2lkLgorCittb2RlPW1vZGUJU2V0cyB0aGUgbW9kZSBmbGFncyB0byB0aGUgZ2l2ZW4gKG9jdGFsKSB2YWx1ZSwgcmVnYXJkbGVzcworCQlvZiB0aGUgb3JpZ2luYWwgcGVybWlzc2lvbnMuIERpcmVjdG9yaWVzIHdpbGwgZ2V0IGFuIHgKKwkJcGVybWlzc2lvbiBpZiB0aGUgY29ycmVzcG9uZGluZyByIGJpdCBpcyBzZXQuCisJCVRoaXMgaXMgdXNlZnVsIHNpbmNlIG1vc3Qgb2YgdGhlIHBsYWluIEFtaWdhT1MgZmlsZXMKKwkJd2lsbCBtYXAgdG8gNjAwLgorCitub2ZpbGVuYW1ldHJ1bmNhdGUKKwkJVGhlIGZpbGUgc3lzdGVtIHdpbGwgcmV0dXJuIGFuIGVycm9yIHdoZW4gZmlsZW5hbWUgZXhjZWVkcworCQlzdGFuZGFyZCBtYXhpbXVtIGZpbGVuYW1lIGxlbmd0aCAoMzAgY2hhcmFjdGVycykuCisKK3Jlc2VydmVkPW51bQlTZXRzIHRoZSBudW1iZXIgb2YgcmVzZXJ2ZWQgYmxvY2tzIGF0IHRoZSBzdGFydCBvZiB0aGUKKwkJcGFydGl0aW9uIHRvIG51bS4gWW91IHNob3VsZCBuZXZlciBuZWVkIHRoaXMgb3B0aW9uLgorCQlEZWZhdWx0IGlzIDIuCisKK3Jvb3Q9YmxvY2sJU2V0cyB0aGUgYmxvY2sgbnVtYmVyIG9mIHRoZSByb290IGJsb2NrLiBUaGlzIHNob3VsZCBuZXZlcgorCQliZSBuZWNlc3NhcnkuCisKK2JzPWJsa3NpemUJU2V0cyB0aGUgYmxvY2tzaXplIHRvIGJsa3NpemUuIFZhbGlkIGJsb2NrIHNpemVzIGFyZSA1MTIsCisJCTEwMjQsIDIwNDggYW5kIDQwOTYuIExpa2UgdGhlIHJvb3Qgb3B0aW9uLCB0aGlzIHNob3VsZAorCQluZXZlciBiZSBuZWNlc3NhcnksIGFzIHRoZSBhZmZzIGNhbiBmaWd1cmUgaXQgb3V0IGl0c2VsZi4KKworcXVpZXQJCVRoZSBmaWxlIHN5c3RlbSB3aWxsIG5vdCByZXR1cm4gYW4gZXJyb3IgZm9yIGRpc2FsbG93ZWQKKwkJbW9kZSBjaGFuZ2VzLgorCit2ZXJib3NlCQlUaGUgdm9sdW1lIG5hbWUsIGZpbGUgc3lzdGVtIHR5cGUgYW5kIGJsb2NrIHNpemUgd2lsbAorCQliZSB3cml0dGVuIHRvIHRoZSBzeXNsb2cgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkLgorCittdWZzCQlUaGUgZmlsZXN5c3RlbSBpcyByZWFsbHkgYSBtdUZTLCBhbHNvIGl0IGRvZXNuJ3QKKwkJaWRlbnRpZnkgaXRzZWxmIGFzIG9uZS4gVGhpcyBvcHRpb24gaXMgbmVjZXNzYXJ5IGlmCisJCXRoZSBmaWxlc3lzdGVtIHdhc24ndCBmb3JtYXR0ZWQgYXMgbXVGUywgYnV0IGlzIHVzZWQKKwkJYXMgb25lLgorCitwcmVmaXg9cGF0aAlQYXRoIHdpbGwgYmUgcHJlZml4ZWQgdG8gZXZlcnkgYWJzb2x1dGUgcGF0aCBuYW1lIG9mCisJCXN5bWJvbGljIGxpbmtzIG9uIGFuIEFGRlMgcGFydGl0aW9uLiBEZWZhdWx0ID0gIi8iLgorCQkoU2VlIGJlbG93LikKKwordm9sdW1lPW5hbWUJV2hlbiBzeW1ib2xpYyBsaW5rcyB3aXRoIGFuIGFic29sdXRlIHBhdGggYXJlIGNyZWF0ZWQKKwkJb24gYW4gQUZGUyBwYXJ0aXRpb24sIG5hbWUgd2lsbCBiZSBwcmVwZW5kZWQgYXMgdGhlCisJCXZvbHVtZSBuYW1lLiBEZWZhdWx0ID0gIiIgKGVtcHR5IHN0cmluZykuCisJCShTZWUgYmVsb3cuKQorCitIYW5kbGluZyBvZiB0aGUgVXNlcnMvR3JvdXBzIGFuZCBwcm90ZWN0aW9uIGZsYWdzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FtaWdhIC0+IExpbnV4OgorCitUaGUgQW1pZ2EgcHJvdGVjdGlvbiBmbGFncyBSV0VEUldFREhTUEFSV0VEIGFyZSBoYW5kbGVkIGFzIGZvbGxvd3M6CisKKyAgLSBSIG1hcHMgdG8gciBmb3IgdXNlciwgZ3JvdXAgYW5kIG90aGVycy4gT24gZGlyZWN0b3JpZXMsIFIgaW1wbGllcyB4LgorCisgIC0gSWYgYm90aCBXIGFuZCBEIGFyZSBhbGxvd2VkLCB3IHdpbGwgYmUgc2V0LgorCisgIC0gRSBtYXBzIHRvIHguCisKKyAgLSBIIGFuZCBQIGFyZSBhbHdheXMgcmV0YWluZWQgYW5kIGlnbm9yZWQgdW5kZXIgTGludXguCisKKyAgLSBBIGlzIGFsd2F5cyByZXNldCB3aGVuIGEgZmlsZSBpcyB3cml0dGVuIHRvLgorCitVc2VyIGlkIGFuZCBncm91cCBpZCB3aWxsIGJlIHVzZWQgdW5sZXNzIHNldFtndV1pZCBhcmUgZ2l2ZW4gYXMgbW91bnQKK29wdGlvbnMuIFNpbmNlIG1vc3Qgb2YgdGhlIEFtaWdhIGZpbGUgc3lzdGVtcyBhcmUgc2luZ2xlIHVzZXIgc3lzdGVtcwordGhleSB3aWxsIGJlIG93bmVkIGJ5IHJvb3QuIFRoZSByb290IGRpcmVjdG9yeSAodGhlIG1vdW50IHBvaW50KSBvZiB0aGUKK0FtaWdhIGZpbGVzeXN0ZW0gd2lsbCBiZSBvd25lZCBieSB0aGUgdXNlciB3aG8gYWN0dWFsbHkgbW91bnRzIHRoZQorZmlsZXN5c3RlbSAodGhlIHJvb3QgZGlyZWN0b3J5IGRvZXNuJ3QgaGF2ZSB1aWQvZ2lkIGZpZWxkcykuCisKK0xpbnV4IC0+IEFtaWdhOgorCitUaGUgTGludXggcnd4cnd4cnd4IGZpbGUgbW9kZSBpcyBoYW5kbGVkIGFzIGZvbGxvd3M6CisKKyAgLSByIHBlcm1pc3Npb24gd2lsbCBzZXQgUiBmb3IgdXNlciwgZ3JvdXAgYW5kIG90aGVycy4KKworICAtIHcgcGVybWlzc2lvbiB3aWxsIHNldCBXIGFuZCBEIGZvciB1c2VyLCBncm91cCBhbmQgb3RoZXJzLgorCisgIC0geCBwZXJtaXNzaW9uIG9mIHRoZSB1c2VyIHdpbGwgc2V0IEUgZm9yIHBsYWluIGZpbGVzLgorCisgIC0gQWxsIG90aGVyIGZsYWdzIChzdWlkLCBzZ2lkLCAuLi4pIGFyZSBpZ25vcmVkIGFuZCB3aWxsCisgICAgbm90IGJlIHJldGFpbmVkLgorICAgIAorTmV3bHkgY3JlYXRlZCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgd2lsbCBnZXQgdGhlIHVzZXIgYW5kIGdyb3VwIElECitvZiB0aGUgY3VycmVudCB1c2VyIGFuZCBhIG1vZGUgYWNjb3JkaW5nIHRvIHRoZSB1bWFzay4KKworU3ltYm9saWMgbGlua3MKKz09PT09PT09PT09PT09CisKK0FsdGhvdWdoIHRoZSBBbWlnYSBhbmQgTGludXggZmlsZSBzeXN0ZW1zIHJlc2VtYmxlIGVhY2ggb3RoZXIsIHRoZXJlCithcmUgc29tZSwgbm90IGFsd2F5cyBzdWJ0bGUsIGRpZmZlcmVuY2VzLiBPbmUgb2YgdGhlbSBiZWNvbWVzIGFwcGFyZW50Cit3aXRoIHN5bWJvbGljIGxpbmtzLiBXaGlsZSBMaW51eCBoYXMgYSBmaWxlIHN5c3RlbSB3aXRoIGV4YWN0bHkgb25lCityb290IGRpcmVjdG9yeSwgdGhlIEFtaWdhIGhhcyBhIHNlcGFyYXRlIHJvb3QgZGlyZWN0b3J5IGZvciBlYWNoCitmaWxlIHN5c3RlbSAoZm9yIGV4YW1wbGUsIHBhcnRpdGlvbiwgZmxvcHB5IGRpc2ssIC4uLikuIFdpdGggdGhlIEFtaWdhLAordGhlc2UgZW50aXRpZXMgYXJlIGNhbGxlZCAidm9sdW1lcyIuIFRoZXkgaGF2ZSBzeW1ib2xpYyBuYW1lcyB3aGljaAorY2FuIGJlIHVzZWQgdG8gYWNjZXNzIHRoZW0uIFRodXMsIHN5bWJvbGljIGxpbmtzIGNhbiBwb2ludCB0byBhCitkaWZmZXJlbnQgdm9sdW1lLiBBRkZTIHR1cm5zIHRoZSB2b2x1bWUgbmFtZSBpbnRvIGEgZGlyZWN0b3J5IG5hbWUKK2FuZCBwcmVwZW5kcyB0aGUgcHJlZml4IHBhdGggKHNlZSBwcmVmaXggb3B0aW9uKSB0byBpdC4KKworRXhhbXBsZToKK1lvdSBtb3VudCBhbGwgeW91ciBBbWlnYSBwYXJ0aXRpb25zIHVuZGVyIC9hbWlnYS88dm9sdW1lPiAod2hlcmUKKzx2b2x1bWU+IGlzIHRoZSBuYW1lIG9mIHRoZSB2b2x1bWUpLCBhbmQgeW91IGdpdmUgdGhlIG9wdGlvbgorInByZWZpeD0vYW1pZ2EvIiB3aGVuIG1vdW50aW5nIGFsbCB5b3VyIEFGRlMgcGFydGl0aW9ucy4gKFRoZXkKK21pZ2h0IGJlICJVc2VyIiwgIldCIiBhbmQgIkdyYXBoaWNzIiwgdGhlIG1vdW50IHBvaW50cyAvYW1pZ2EvVXNlciwKKy9hbWlnYS9XQiBhbmQgL2FtaWdhL0dyYXBoaWNzKS4gQSBzeW1ib2xpYyBsaW5rIHJlZmVycmluZyB0bworIlVzZXI6c2MvaW5jbHVkZS9kb3MvZG9zLmgiIHdpbGwgYmUgZm9sbG93ZWQgdG8KKyIvYW1pZ2EvVXNlci9zYy9pbmNsdWRlL2Rvcy9kb3MuaCIuCisKK0V4YW1wbGVzCis9PT09PT09PQorCitDb21tYW5kIGxpbmU6CisgICAgbW91bnQgIEFyY2hpdmUvQW1pZ2EvV29ya2JlbmNoMy4xLmFkZiAvbW50IC10IGFmZnMgLW8gbG9vcCx2ZXJib3NlCisgICAgbW91bnQgIC9kZXYvc2RhMyAvQW1pZ2EgLXQgYWZmcworCisvZXRjL2ZzdGFiIGVudHJ5OgorICAgIC9kZXYvc2RiNQkvYW1pZ2EvV29ya2JlbmNoICAgIGFmZnMgICAgbm9hdXRvLHVzZXIsZXhlYyx2ZXJib3NlIDAgMAorCitJTVBPUlRBTlQgTk9URQorPT09PT09PT09PT09PT0KKworSWYgeW91IGJvb3QgV2luZG93cyA5NSAoZG9uJ3Qga25vdyBhYm91dCAzLngsIDk4IGFuZCBOVCkgd2hpbGUgeW91CitoYXZlIGFuIEFtaWdhIGhhcmRkaXNrIGNvbm5lY3RlZCB0byB5b3VyIFBDLCBpdCB3aWxsIG92ZXJ3cml0ZQordGhlIGJ5dGVzIDB4MDBkYy4uMHgwMGRmIG9mIGJsb2NrIDAgd2l0aCBnYXJiYWdlLCB0aHVzIGludmFsaWRhdGluZwordGhlIFJpZ2lkIERpc2sgQmxvY2suIFNoZWVyIGx1Y2sgaGFzIGl0IHRoYXQgdGhpcyBpcyBhbiB1bnVzZWQKK2FyZWEgb2YgdGhlIFJEQiwgc28gb25seSB0aGUgY2hlY2tzdW0gZG9lc24ndCBtYXRjaCBhbnltb3JlLgorTGludXggd2lsbCBpZ25vcmUgdGhpcyBnYXJiYWdlIGFuZCByZWNvZ25pemUgdGhlIFJEQiBhbnl3YXksIGJ1dAorYmVmb3JlIHlvdSBjb25uZWN0IHRoYXQgZHJpdmUgdG8geW91ciBBbWlnYSBhZ2FpbiwgeW91IG11c3QKK3Jlc3RvcmUgb3IgcmVwYWlyIHlvdXIgUkRCLiBTbyBwbGVhc2UgZG8gbWFrZSBhIGJhY2t1cCBjb3B5IG9mIGl0CitiZWZvcmUgYm9vdGluZyBXaW5kb3dzIQorCitJZiB0aGUgZGFtYWdlIGlzIGFscmVhZHkgZG9uZSwgdGhlIGZvbGxvd2luZyBzaG91bGQgZml4IHRoZSBSREIKKyh3aGVyZSA8ZGlzaz4gaXMgdGhlIGRldmljZSBuYW1lKS4KK0RPIEFUIFlPVVIgT1dOIFJJU0s6CisKKyAgZGQgaWY9L2Rldi88ZGlzaz4gb2Y9cmRiLnRtcCBjb3VudD0xCisgIGNwIHJkYi50bXAgcmRiLmZpeGVkCisgIGRkIGlmPS9kZXYvemVybyBvZj1yZGIuZml4ZWQgYnM9MSBzZWVrPTIyMCBjb3VudD00CisgIGRkIGlmPXJkYi5maXhlZCBvZj0vZGV2LzxkaXNrPgorCitCdWdzLCBSZXN0cmljdGlvbnMsIENhdmVhdHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitRdWl0ZSBhIGZldyB0aGluZ3MgbWF5IG5vdCB3b3JrIGFzIGFkdmVydGlzZWQuIE5vdCBldmVyeXRoaW5nIGlzCit0ZXN0ZWQsIHRob3VnaCBzZXZlcmFsIGh1bmRyZWQgTUIgaGF2ZSBiZWVuIHJlYWQgYW5kIHdyaXR0ZW4gdXNpbmcKK3RoaXMgZnMuIEZvciBhIG1vc3QgdXAtdG8tZGF0ZSBsaXN0IG9mIGJ1Z3MgcGxlYXNlIGNvbnN1bHQKK2ZzL2FmZnMvQ2hhbmdlcy4KKworQnkgZGVmYXVsdCwgZmlsZW5hbWVzIGFyZSB0cnVuY2F0ZWQgdG8gMzAgY2hhcmFjdGVycyB3aXRob3V0IHdhcm5pbmcuCisnbm9maWxlbmFtZXRydW5jYXRlJyBtb3VudCBvcHRpb24gY2FuIGNoYW5nZSB0aGF0IGJlaGF2aW9yLgorCitDYXNlIGlzIGlnbm9yZWQgYnkgdGhlIGFmZnMgaW4gZmlsZW5hbWUgbWF0Y2hpbmcsIGJ1dCBMaW51eCBzaGVsbHMKK2RvIGNhcmUgYWJvdXQgdGhlIGNhc2UuIEV4YW1wbGUgKHdpdGggL3diIGJlaW5nIGFuIGFmZnMgbW91bnRlZCBmcyk6CisgICAgcm0gL3diL1dST05HQ0FTRQord2lsbCByZW1vdmUgL21udC93cm9uZ2Nhc2UsIGJ1dAorICAgIHJtIC93Yi9XUioKK3dpbGwgbm90IHNpbmNlIHRoZSBuYW1lcyBhcmUgbWF0Y2hlZCBieSB0aGUgc2hlbGwuCisKK1RoZSBibG9jayBhbGxvY2F0aW9uIGlzIGRlc2lnbmVkIGZvciBoYXJkIGRpc2sgcGFydGl0aW9ucy4gSWYgbW9yZQordGhhbiAxIHByb2Nlc3Mgd3JpdGVzIHRvIGEgKHNtYWxsKSBkaXNrZXR0ZSwgdGhlIGJsb2NrcyBhcmUgYWxsb2NhdGVkCitpbiBhbiB1Z2x5IHdheSAoYnV0IHRoZSByZWFsIEFGRlMgZG9lc24ndCBkbyBtdWNoIGJldHRlcikuIFRoaXMKK2lzIGFsc28gdHJ1ZSB3aGVuIHNwYWNlIGdldHMgdGlnaHQuCisKK1lvdSBjYW5ub3QgZXhlY3V0ZSBwcm9ncmFtcyBvbiBhbiBPRlMgKE9sZCBGaWxlIFN5c3RlbSksIHNpbmNlIHRoZQorcHJvZ3JhbSBmaWxlcyBjYW5ub3QgYmUgbWVtb3J5IG1hcHBlZCBkdWUgdG8gdGhlIDQ4OCBieXRlIGJsb2Nrcy4KK0ZvciB0aGUgc2FtZSByZWFzb24geW91IGNhbm5vdCBtb3VudCBhbiBpbWFnZSBvbiBzdWNoIGEgZmlsZXN5c3RlbQordmlhIHRoZSBsb29wYmFjayBkZXZpY2UuCisKK1RoZSBiaXRtYXAgdmFsaWQgZmxhZyBpbiB0aGUgcm9vdCBibG9jayBtYXkgbm90IGJlIGFjY3VyYXRlIHdoZW4gdGhlCitzeXN0ZW0gY3Jhc2hlcyB3aGlsZSBhbiBhZmZzIHBhcnRpdGlvbiBpcyBtb3VudGVkLiBUaGVyZSdzIGN1cnJlbnRseQorbm8gd2F5IHRvIGZpeCBhIGdhcmJsZWQgZmlsZXN5c3RlbSB3aXRob3V0IGFuIEFtaWdhIChkaXNrIHZhbGlkYXRvcikKK29yIG1hbnVhbGx5ICh3aG8gd291bGQgZG8gdGhpcz8pLiBNYXliZSBsYXRlci4KKworSWYgeW91IG1vdW50IGFmZnMgcGFydGl0aW9ucyBvbiBzeXN0ZW0gc3RhcnR1cCwgeW91IG1heSB3YW50IHRvIHRlbGwKK2ZzY2sgdGhhdCB0aGUgZnMgc2hvdWxkIG5vdCBiZSBjaGVja2VkIChwbGFjZSBhICcwJyBpbiB0aGUgc2l4dGggZmllbGQKK29mIC9ldGMvZnN0YWIpLgorCitJdCdzIG5vdCBwb3NzaWJsZSB0byByZWFkIGZsb3BweSBkaXNrcyB3aXRoIGEgbm9ybWFsIFBDIG9yIHdvcmtzdGF0aW9uCitkdWUgdG8gYW4gaW5jb21wYXRpYmlsaXR5IHdpdGggdGhlIEFtaWdhIGZsb3BweSBjb250cm9sbGVyLgorCitJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gYW4gQW1pZ2EgRW11bGF0b3IgZm9yIExpbnV4LCBsb29rIGF0CisKK2h0dHA6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLyovaHR0cDovL3d3dy5mcmVpYnVyZy5saW51eC5kZS9+dWFlLwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9hZnMudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9hZnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmZWY5MWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2Fmcy50eHQKQEAgLTAsMCArMSwyNDcgQEAKKwkJCSAgICAgPT09PT09PT09PT09PT09PT09PT0KKwkJCSAgICAga0FGUzogQUZTIEZJTEVTWVNURU0KKwkJCSAgICAgPT09PT09PT09PT09PT09PT09PT0KKworQ29udGVudHM6CisKKyAtIE92ZXJ2aWV3LgorIC0gVXNhZ2UuCisgLSBNb3VudHBvaW50cy4KKyAtIFByb2MgZmlsZXN5c3RlbS4KKyAtIFRoZSBjZWxsIGRhdGFiYXNlLgorIC0gU2VjdXJpdHkuCisgLSBFeGFtcGxlcy4KKworCis9PT09PT09PQorT1ZFUlZJRVcKKz09PT09PT09CisKK1RoaXMgZmlsZXN5c3RlbSBwcm92aWRlcyBhIGZhaXJseSBzaW1wbGUgc2VjdXJlIEFGUyBmaWxlc3lzdGVtIGRyaXZlci4gSXQgaXMKK3VuZGVyIGRldmVsb3BtZW50IGFuZCBkb2VzIG5vdCB5ZXQgcHJvdmlkZSB0aGUgZnVsbCBmZWF0dXJlIHNldC4gIFRoZSBmZWF0dXJlcworaXQgZG9lcyBzdXBwb3J0IGluY2x1ZGU6CisKKyAoKikgU2VjdXJpdHkgKGN1cnJlbnRseSBvbmx5IEFGUyBrYXNlcnZlciBhbmQgS2VyYmVyb3NJViB0aWNrZXRzKS4KKworICgqKSBGaWxlIHJlYWRpbmcgYW5kIHdyaXRpbmcuCisKKyAoKikgQXV0b21vdW50aW5nLgorCisgKCopIExvY2FsIGNhY2hpbmcgKHZpYSBmc2NhY2hlKS4KKworSXQgZG9lcyBub3QgeWV0IHN1cHBvcnQgdGhlIGZvbGxvd2luZyBBRlMgZmVhdHVyZXM6CisKKyAoKikgcGlvY3RsKCkgc3lzdGVtIGNhbGwuCisKKworPT09PT09PT09PT0KK0NPTVBJTEFUSU9OCis9PT09PT09PT09PQorCitUaGUgZmlsZXN5c3RlbSBzaG91bGQgYmUgZW5hYmxlZCBieSB0dXJuaW5nIG9uIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbgorb3B0aW9uczoKKworCUNPTkZJR19BRl9SWFJQQwkJLSBUaGUgUnhSUEMgcHJvdG9jb2wgdHJhbnNwb3J0CisJQ09ORklHX1JYS0FECQktIFRoZSBSeFJQQyBLZXJiZXJvcyBzZWN1cml0eSBoYW5kbGVyCisJQ09ORklHX0FGUwkJLSBUaGUgQUZTIGZpbGVzeXN0ZW0KKworQWRkaXRpb25hbGx5LCB0aGUgZm9sbG93aW5nIGNhbiBiZSB0dXJuZWQgb24gdG8gYWlkIGRlYnVnZ2luZzoKKworCUNPTkZJR19BRl9SWFJQQ19ERUJVRwktIFBlcm1pdCBBRl9SWFJQQyBkZWJ1Z2dpbmcgdG8gYmUgZW5hYmxlZAorCUNPTkZJR19BRlNfREVCVUcJLSBQZXJtaXQgQUZTIGRlYnVnZ2luZyB0byBiZSBlbmFibGVkCisKK1RoZXkgcGVybWl0IHRoZSBkZWJ1Z2dpbmcgbWVzc2FnZXMgdG8gYmUgdHVybmVkIG9uIGR5bmFtaWNhbGx5IGJ5IG1hbmlwdWxhdGluZwordGhlIG1hc2tzIGluIHRoZSBmb2xsb3dpbmcgZmlsZXM6CisKKwkvc3lzL21vZHVsZS9hZl9yeHJwYy9wYXJhbWV0ZXJzL2RlYnVnCisJL3N5cy9tb2R1bGUva2Fmcy9wYXJhbWV0ZXJzL2RlYnVnCisKKworPT09PT0KK1VTQUdFCis9PT09PQorCitXaGVuIGluc2VydGluZyB0aGUgZHJpdmVyIG1vZHVsZXMgdGhlIHJvb3QgY2VsbCBtdXN0IGJlIHNwZWNpZmllZCBhbG9uZyB3aXRoIGEKK2xpc3Qgb2Ygdm9sdW1lIGxvY2F0aW9uIHNlcnZlciBJUCBhZGRyZXNzZXM6CisKKwltb2Rwcm9iZSBhZl9yeHJwYworCW1vZHByb2JlIHJ4a2FkCisJbW9kcHJvYmUga2FmcyByb290Y2VsbD1jYW1icmlkZ2UucmVkaGF0LmNvbToxNzIuMTYuMTguNzM6MTcyLjE2LjE4LjkxCisKK1RoZSBmaXJzdCBtb2R1bGUgaXMgdGhlIEFGX1JYUlBDIG5ldHdvcmsgcHJvdG9jb2wgZHJpdmVyLiAgVGhpcyBwcm92aWRlcyB0aGUKK1J4UlBDIHJlbW90ZSBvcGVyYXRpb24gcHJvdG9jb2wgYW5kIG1heSBhbHNvIGJlIGFjY2Vzc2VkIGZyb20gdXNlcnNwYWNlLiAgU2VlOgorCisJRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3J4cnBjLnR4dAorCitUaGUgc2Vjb25kIG1vZHVsZSBpcyB0aGUga2VyYmVyb3MgUnhSUEMgc2VjdXJpdHkgZHJpdmVyLCBhbmQgdGhlIHRoaXJkIG1vZHVsZQoraXMgdGhlIGFjdHVhbCBmaWxlc3lzdGVtIGRyaXZlciBmb3IgdGhlIEFGUyBmaWxlc3lzdGVtLgorCitPbmNlIHRoZSBtb2R1bGUgaGFzIGJlZW4gbG9hZGVkLCBtb3JlIG1vZHVsZXMgY2FuIGJlIGFkZGVkIGJ5IHRoZSBmb2xsb3dpbmcKK3Byb2NlZHVyZToKKworCWVjaG8gYWRkIGdyYW5kLmNlbnRyYWwub3JnIDE4LjkuNDguMTQ6MTI4LjIuMjAzLjYxOjEzMC4yMzcuNDguODcgPi9wcm9jL2ZzL2Fmcy9jZWxscworCitXaGVyZSB0aGUgcGFyYW1ldGVycyB0byB0aGUgImFkZCIgY29tbWFuZCBhcmUgdGhlIG5hbWUgb2YgYSBjZWxsIGFuZCBhIGxpc3Qgb2YKK3ZvbHVtZSBsb2NhdGlvbiBzZXJ2ZXJzIHdpdGhpbiB0aGF0IGNlbGwsIHdpdGggdGhlIGxhdHRlciBzZXBhcmF0ZWQgYnkgY29sb25zLgorCitGaWxlc3lzdGVtcyBjYW4gYmUgbW91bnRlZCBhbnl3aGVyZSBieSBjb21tYW5kcyBzaW1pbGFyIHRvIHRoZSBmb2xsb3dpbmc6CisKKwltb3VudCAtdCBhZnMgIiVjYW1icmlkZ2UucmVkaGF0LmNvbTpyb290LmFmcy4iIC9hZnMKKwltb3VudCAtdCBhZnMgIiNjYW1icmlkZ2UucmVkaGF0LmNvbTpyb290LmNlbGwuIiAvYWZzL2NhbWJyaWRnZQorCW1vdW50IC10IGFmcyAiI3Jvb3QuYWZzLiIgL2FmcworCW1vdW50IC10IGFmcyAiI3Jvb3QuY2VsbC4iIC9hZnMvY2FtYnJpZGdlCisKK1doZXJlIHRoZSBpbml0aWFsIGNoYXJhY3RlciBpcyBlaXRoZXIgYSBoYXNoIG9yIGEgcGVyY2VudCBzeW1ib2wgZGVwZW5kaW5nIG9uCit3aGV0aGVyIHlvdSBkZWZpbml0ZWx5IHdhbnQgYSBSL1cgdm9sdW1lIChoYXNoKSBvciB3aGV0aGVyIHlvdSdkIHByZWZlciBhIFIvTwordm9sdW1lLCBidXQgYXJlIHdpbGxpbmcgdG8gdXNlIGEgUi9XIHZvbHVtZSBpbnN0ZWFkIChwZXJjZW50KS4KKworVGhlIG5hbWUgb2YgdGhlIHZvbHVtZSBjYW4gYmUgc3VmZml4ZXMgd2l0aCAiLmJhY2t1cCIgb3IgIi5yZWFkb25seSIgdG8KK3NwZWNpZnkgY29ubmVjdGlvbiB0byBvbmx5IHZvbHVtZXMgb2YgdGhvc2UgdHlwZXMuCisKK1RoZSBuYW1lIG9mIHRoZSBjZWxsIGlzIG9wdGlvbmFsLCBhbmQgaWYgbm90IGdpdmVuIGR1cmluZyBhIG1vdW50LCB0aGVuIHRoZQorbmFtZWQgdm9sdW1lIHdpbGwgYmUgbG9va2VkIHVwIGluIHRoZSBjZWxsIHNwZWNpZmllZCBkdXJpbmcgbW9kcHJvYmUuCisKK0FkZGl0aW9uYWwgY2VsbHMgY2FuIGJlIGFkZGVkIHRocm91Z2ggL3Byb2MgKHNlZSBsYXRlciBzZWN0aW9uKS4KKworCis9PT09PT09PT09PQorTU9VTlRQT0lOVFMKKz09PT09PT09PT09CisKK0FGUyBoYXMgYSBjb25jZXB0IG9mIG1vdW50cG9pbnRzLiBJbiBBRlMgdGVybXMsIHRoZXNlIGFyZSBzcGVjaWFsbHkgZm9ybWF0dGVkCitzeW1ib2xpYyBsaW5rcyAob2YgdGhlIHNhbWUgZm9ybSBhcyB0aGUgImRldmljZSBuYW1lIiBwYXNzZWQgdG8gbW91bnQpLiAga0FGUworcHJlc2VudHMgdGhlc2UgdG8gdGhlIHVzZXIgYXMgZGlyZWN0b3JpZXMgdGhhdCBoYXZlIGEgZm9sbG93LWxpbmsgY2FwYWJpbGl0eQorKGllOiBzeW1ib2xpYyBsaW5rIHNlbWFudGljcykuICBJZiBhbnlvbmUgYXR0ZW1wdHMgdG8gYWNjZXNzIHRoZW0sIHRoZXkgd2lsbAorYXV0b21hdGljYWxseSBjYXVzZSB0aGUgdGFyZ2V0IHZvbHVtZSB0byBiZSBtb3VudGVkIChpZiBwb3NzaWJsZSkgb24gdGhhdCBzaXRlLgorCitBdXRvbWF0aWNhbGx5IG1vdW50ZWQgZmlsZXN5c3RlbXMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHVubW91bnRlZCBhcHByb3hpbWF0ZWx5Cit0d2VudHkgbWludXRlcyBhZnRlciB0aGV5IHdlcmUgbGFzdCB1c2VkLiAgQWx0ZXJuYXRpdmVseSB0aGV5IGNhbiBiZSB1bm1vdW50ZWQKK2RpcmVjdGx5IHdpdGggdGhlIHVtb3VudCgpIHN5c3RlbSBjYWxsLgorCitNYW51YWxseSB1bm1vdW50aW5nIGFuIEFGUyB2b2x1bWUgd2lsbCBjYXVzZSBhbnkgaWRsZSBzdWJtb3VudHMgdXBvbiBpdCB0byBiZQorY3VsbGVkIGZpcnN0LiAgSWYgYWxsIGFyZSBjdWxsZWQsIHRoZW4gdGhlIHJlcXVlc3RlZCB2b2x1bWUgd2lsbCBhbHNvIGJlCit1bm1vdW50ZWQsIG90aGVyd2lzZSBlcnJvciBFQlVTWSB3aWxsIGJlIHJldHVybmVkLgorCitUaGlzIGNhbiBiZSB1c2VkIGJ5IHRoZSBhZG1pbmlzdHJhdG9yIHRvIGF0dGVtcHQgdG8gdW5tb3VudCB0aGUgd2hvbGUgQUZTIHRyZWUKK21vdW50ZWQgb24gL2FmcyBpbiBvbmUgZ28gYnkgZG9pbmc6CisKKwl1bW91bnQgL2FmcworCisKKz09PT09PT09PT09PT09PQorUFJPQyBGSUxFU1lTVEVNCis9PT09PT09PT09PT09PT0KKworVGhlIEFGUyBtb2R1bGVzIGNyZWF0ZXMgYSAiL3Byb2MvZnMvYWZzLyIgZGlyZWN0b3J5IGFuZCBwb3B1bGF0ZXMgaXQ6CisKKyAgKCopIEEgImNlbGxzIiBmaWxlIHRoYXQgbGlzdHMgY2VsbHMgY3VycmVudGx5IGtub3duIHRvIHRoZSBhZnMgbW9kdWxlIGFuZAorICAgICAgdGhlaXIgdXNhZ2UgY291bnRzOgorCisJW3Jvb3RAYW5kcm9tZWRhIH5dIyBjYXQgL3Byb2MvZnMvYWZzL2NlbGxzCisJVVNFIE5BTUUKKwkgIDMgY2FtYnJpZGdlLnJlZGhhdC5jb20KKworICAoKikgQSBkaXJlY3RvcnkgcGVyIGNlbGwgdGhhdCBjb250YWlucyBmaWxlcyB0aGF0IGxpc3Qgdm9sdW1lIGxvY2F0aW9uCisgICAgICBzZXJ2ZXJzLCB2b2x1bWVzLCBhbmQgYWN0aXZlIHNlcnZlcnMga25vd24gd2l0aGluIHRoYXQgY2VsbC4KKworCVtyb290QGFuZHJvbWVkYSB+XSMgY2F0IC9wcm9jL2ZzL2Fmcy9jYW1icmlkZ2UucmVkaGF0LmNvbS9zZXJ2ZXJzCisJVVNFIEFERFIgICAgICAgICAgICBTVEFURQorCSAgNCAxNzIuMTYuMTguOTEgICAgICAgIDAKKwlbcm9vdEBhbmRyb21lZGEgfl0jIGNhdCAvcHJvYy9mcy9hZnMvY2FtYnJpZGdlLnJlZGhhdC5jb20vdmxzZXJ2ZXJzCisJQUREUkVTUworCTE3Mi4xNi4xOC45MQorCVtyb290QGFuZHJvbWVkYSB+XSMgY2F0IC9wcm9jL2ZzL2Fmcy9jYW1icmlkZ2UucmVkaGF0LmNvbS92b2x1bWVzCisJVVNFIFNUVCBWTElEWzBdICBWTElEWzFdICBWTElEWzJdICBOQU1FCisJICAxIFZhbCAyMDAwMDAwMCAyMDAwMDAwMSAyMDAwMDAwMiByb290LmFmcworCisKKz09PT09PT09PT09PT09PT09CitUSEUgQ0VMTCBEQVRBQkFTRQorPT09PT09PT09PT09PT09PT0KKworVGhlIGZpbGVzeXN0ZW0gbWFpbnRhaW5zIGFuIGludGVybmFsIGRhdGFiYXNlIG9mIGFsbCB0aGUgY2VsbHMgaXQga25vd3MgYW5kIHRoZQorSVAgYWRkcmVzc2VzIG9mIHRoZSB2b2x1bWUgbG9jYXRpb24gc2VydmVycyBmb3IgdGhvc2UgY2VsbHMuICBUaGUgY2VsbCB0byB3aGljaAordGhlIHN5c3RlbSBiZWxvbmdzIGlzIGFkZGVkIHRvIHRoZSBkYXRhYmFzZSB3aGVuIG1vZHByb2JlIGlzIHBlcmZvcm1lZCBieSB0aGUKKyJyb290Y2VsbD0iIGFyZ3VtZW50IG9yLCBpZiBjb21waWxlZCBpbiwgdXNpbmcgYSAia2Fmcy5yb290Y2VsbD0iIGFyZ3VtZW50IG9uCit0aGUga2VybmVsIGNvbW1hbmQgbGluZS4KKworRnVydGhlciBjZWxscyBjYW4gYmUgYWRkZWQgYnkgY29tbWFuZHMgc2ltaWxhciB0byB0aGUgZm9sbG93aW5nOgorCisJZWNobyBhZGQgQ0VMTE5BTUUgVkxBRERSWzpWTEFERFJdWzpWTEFERFJdLi4uID4vcHJvYy9mcy9hZnMvY2VsbHMKKwllY2hvIGFkZCBncmFuZC5jZW50cmFsLm9yZyAxOC45LjQ4LjE0OjEyOC4yLjIwMy42MToxMzAuMjM3LjQ4Ljg3ID4vcHJvYy9mcy9hZnMvY2VsbHMKKworTm8gb3RoZXIgY2VsbCBkYXRhYmFzZSBvcGVyYXRpb25zIGFyZSBhdmFpbGFibGUgYXQgdGhpcyB0aW1lLgorCisKKz09PT09PT09CitTRUNVUklUWQorPT09PT09PT0KKworU2VjdXJlIG9wZXJhdGlvbnMgYXJlIGluaXRpYXRlZCBieSBhY3F1aXJpbmcgYSBrZXkgdXNpbmcgdGhlIGtsb2cgcHJvZ3JhbS4gIEEKK3ZlcnkgcHJpbWl0aXZlIGtsb2cgcHJvZ3JhbSBpcyBhdmFpbGFibGUgYXQ6CisKKwlodHRwOi8vcGVvcGxlLnJlZGhhdC5jb20vfmRob3dlbGxzL3J4cnBjL2tsb2cuYworCitUaGlzIHNob3VsZCBiZSBjb21waWxlZCBieToKKworCW1ha2Uga2xvZyBMRExJQlM9Ii1sY3J5cHRvIC1sY3J5cHQgLWxrcmI0IC1sa2V5dXRpbHMiCisKK0FuZCB0aGVuIHJ1biBhczoKKworCS4va2xvZworCitBc3N1bWluZyBpdCdzIHN1Y2Nlc3NmdWwsIHRoaXMgYWRkcyBhIGtleSBvZiB0eXBlIFJ4UlBDLCBuYW1lZCBmb3IgdGhlIHNlcnZpY2UKK2FuZCBjZWxsLCBlZzogImFmc0A8Y2VsbG5hbWU+Ii4gIFRoaXMgY2FuIGJlIHZpZXdlZCB3aXRoIHRoZSBrZXljdGwgcHJvZ3JhbSBvcgorYnkgY2F0J2luZyAvcHJvYy9rZXlzOgorCisJW3Jvb3RAYW5kcm9tZWRhIH5dIyBrZXljdGwgc2hvdworCVNlc3Npb24gS2V5cmluZworCSAgICAgICAtMyAtLWFsc3dydiAgICAgIDAgICAgIDAgIGtleXJpbmc6IF9zZXMuMzI2OAorCQkyIC0tYWxzd3J2ICAgICAgMCAgICAgMCAgIFxfIGtleXJpbmc6IF91aWQuMAorCTExMTQxNjU1MyAtLWFscy0tdiAgICAgIDAgICAgIDAgICBcXyByeHJwYzogYWZzQENBTUJSSURHRS5SRURIQVQuQ09NCisKK0N1cnJlbnRseSB0aGUgdXNlcm5hbWUsIHJlYWxtLCBwYXNzd29yZCBhbmQgcHJvcG9zZWQgdGlja2V0IGxpZmV0aW1lIGFyZQorY29tcGlsZWQgaW4gdG8gdGhlIHByb2dyYW0uCisKK0l0IGlzIG5vdCByZXF1aXJlZCB0byBhY3F1aXJlIGEga2V5IGJlZm9yZSB1c2luZyBBRlMgZmFjaWxpdGllcywgYnV0IGlmIG9uZSBpcworbm90IGFjcXVpcmVkIHRoZW4gYWxsIG9wZXJhdGlvbnMgd2lsbCBiZSBnb3Zlcm5lZCBieSB0aGUgYW5vbnltb3VzIHVzZXIgcGFydHMKK29mIHRoZSBBQ0xzLgorCitJZiBhIGtleSBpcyBhY3F1aXJlZCwgdGhlbiBhbGwgQUZTIG9wZXJhdGlvbnMsIGluY2x1ZGluZyBtb3VudHMgYW5kIGF1dG9tb3VudHMsCittYWRlIGJ5IGEgcG9zc2Vzc29yIG9mIHRoYXQga2V5IHdpbGwgYmUgc2VjdXJlZCB3aXRoIHRoYXQga2V5LgorCitJZiBhIGZpbGUgaXMgb3BlbmVkIHdpdGggYSBwYXJ0aWN1bGFyIGtleSBhbmQgdGhlbiB0aGUgZmlsZSBkZXNjcmlwdG9yIGlzCitwYXNzZWQgdG8gYSBwcm9jZXNzIHRoYXQgZG9lc24ndCBoYXZlIHRoYXQga2V5IChwZXJoYXBzIG92ZXIgYW4gQUZfVU5JWAorc29ja2V0KSwgdGhlbiB0aGUgb3BlcmF0aW9ucyBvbiB0aGUgZmlsZSB3aWxsIGJlIG1hZGUgd2l0aCBrZXkgdGhhdCB3YXMgdXNlZCB0bworb3BlbiB0aGUgZmlsZS4KKworCis9PT09PT09PQorRVhBTVBMRVMKKz09PT09PT09CisKK0hlcmUncyB3aGF0IEkgdXNlIHRvIHRlc3QgdGhpcy4gIFNvbWUgb2YgdGhlIG5hbWVzIGFuZCBJUCBhZGRyZXNzZXMgYXJlIGxvY2FsCit0byBteSBpbnRlcm5hbCBETlMuICBNeSAicm9vdC5hZnMiIHBhcnRpdGlvbiBoYXMgYSBtb3VudCBwb2ludCB3aXRoaW4gaXQgZm9yCitzb21lIHB1YmxpYyB2b2x1bWVzIHZvbHVtZXMuCisKK2luc21vZCAvdG1wL3J4cnBjLm8KK2luc21vZCAvdG1wL3J4a2FkLm8KK2luc21vZCAvdG1wL2thZnMubyByb290Y2VsbD1jYW1icmlkZ2UucmVkaGF0LmNvbToxNzIuMTYuMTguOTEKKworbW91bnQgLXQgYWZzIFwlcm9vdC5hZnMuIC9hZnMKK21vdW50IC10IGFmcyBcJWNhbWJyaWRnZS5yZWRoYXQuY29tOnJvb3QuY2VsbC4gL2Fmcy9jYW1icmlkZ2UucmVkaGF0LmNvbS8KKworZWNobyBhZGQgZ3JhbmQuY2VudHJhbC5vcmcgMTguOS40OC4xNDoxMjguMi4yMDMuNjE6MTMwLjIzNy40OC44NyA+IC9wcm9jL2ZzL2Fmcy9jZWxscworbW91bnQgLXQgYWZzICIjZ3JhbmQuY2VudHJhbC5vcmc6cm9vdC5jZWxsLiIgL2Fmcy9ncmFuZC5jZW50cmFsLm9yZy8KK21vdW50IC10IGFmcyAiI2dyYW5kLmNlbnRyYWwub3JnOnJvb3QuYXJjaGl2ZS4iIC9hZnMvZ3JhbmQuY2VudHJhbC5vcmcvYXJjaGl2ZQorbW91bnQgLXQgYWZzICIjZ3JhbmQuY2VudHJhbC5vcmc6cm9vdC5jb250cmliLiIgL2Fmcy9ncmFuZC5jZW50cmFsLm9yZy9jb250cmliCittb3VudCAtdCBhZnMgIiNncmFuZC5jZW50cmFsLm9yZzpyb290LmRvYy4iIC9hZnMvZ3JhbmQuY2VudHJhbC5vcmcvZG9jCittb3VudCAtdCBhZnMgIiNncmFuZC5jZW50cmFsLm9yZzpyb290LnByb2plY3QuIiAvYWZzL2dyYW5kLmNlbnRyYWwub3JnL3Byb2plY3QKK21vdW50IC10IGFmcyAiI2dyYW5kLmNlbnRyYWwub3JnOnJvb3Quc2VydmljZS4iIC9hZnMvZ3JhbmQuY2VudHJhbC5vcmcvc2VydmljZQorbW91bnQgLXQgYWZzICIjZ3JhbmQuY2VudHJhbC5vcmc6cm9vdC5zb2Z0d2FyZS4iIC9hZnMvZ3JhbmQuY2VudHJhbC5vcmcvc29mdHdhcmUKK21vdW50IC10IGFmcyAiI2dyYW5kLmNlbnRyYWwub3JnOnJvb3QudXNlci4iIC9hZnMvZ3JhbmQuY2VudHJhbC5vcmcvdXNlcgorCit1bW91bnQgL2Fmcworcm1tb2Qga2Fmcworcm1tb2QgcnhrYWQKK3JtbW9kIHJ4cnBjCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2F1dG9mczQtbW91bnQtY29udHJvbC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2F1dG9mczQtbW91bnQtY29udHJvbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZmMjIxMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvYXV0b2ZzNC1tb3VudC1jb250cm9sLnR4dApAQCAtMCwwICsxLDM5MyBAQAorCitNaXNjZWxsYW5lb3VzIERldmljZSBjb250cm9sIG9wZXJhdGlvbnMgZm9yIHRoZSBhdXRvZnM0IGtlcm5lbCBtb2R1bGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBwcm9ibGVtCis9PT09PT09PT09PQorCitUaGVyZSBpcyBhIHByb2JsZW0gd2l0aCBhY3RpdmUgcmVzdGFydHMgaW4gYXV0b2ZzICh0aGF0IGlzIHRvIHNheQorcmVzdGFydGluZyBhdXRvZnMgd2hlbiB0aGVyZSBhcmUgYnVzeSBtb3VudHMpLgorCitEdXJpbmcgbm9ybWFsIG9wZXJhdGlvbiBhdXRvZnMgdXNlcyBhIGZpbGUgZGVzY3JpcHRvciBvcGVuZWQgb24gdGhlCitkaXJlY3RvcnkgdGhhdCBpcyBiZWluZyBtYW5hZ2VkIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gaXNzdWUgY29udHJvbAorb3BlcmF0aW9ucy4gVXNpbmcgYSBmaWxlIGRlc2NyaXB0b3IgZ2l2ZXMgaW9jdGwgb3BlcmF0aW9ucyBhY2Nlc3MgdG8KK2F1dG9mcyBzcGVjaWZpYyBpbmZvcm1hdGlvbiBzdG9yZWQgaW4gdGhlIHN1cGVyIGJsb2NrLiBUaGUgb3BlcmF0aW9ucworYXJlIHRoaW5ncyBzdWNoIGFzIHNldHRpbmcgYW4gYXV0b2ZzIG1vdW50IGNhdGF0b25pYywgc2V0dGluZyB0aGUKK2V4cGlyZSB0aW1lb3V0IGFuZCByZXF1ZXN0aW5nIGV4cGlyZSBjaGVja3MuIEFzIGlzIGV4cGxhaW5lZCBiZWxvdywKK2NlcnRhaW4gdHlwZXMgb2YgYXV0b2ZzIHRyaWdnZXJlZCBtb3VudHMgY2FuIGVuZCB1cCBjb3ZlcmluZyBhbiBhdXRvZnMKK21vdW50IGl0c2VsZiB3aGljaCBwcmV2ZW50cyB1cyBiZWluZyBhYmxlIHRvIHVzZSBvcGVuKDIpIHRvIG9idGFpbiBhCitmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZXNlIG9wZXJhdGlvbnMgaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZSBvcGVuLgorCitDdXJyZW50bHkgYXV0b2ZzIHVzZXMgInVtb3VudCAtbCIgKGxhenkgdW1vdW50KSB0byBjbGVhciBhY3RpdmUgbW91bnRzCithdCByZXN0YXJ0LiBXaGlsZSB1c2luZyBsYXp5IHVtb3VudCB3b3JrcyBmb3IgbW9zdCBjYXNlcywgYW55dGhpbmcgdGhhdAorbmVlZHMgdG8gd2FsayBiYWNrIHVwIHRoZSBtb3VudCB0cmVlIHRvIGNvbnN0cnVjdCBhIHBhdGgsIHN1Y2ggYXMKK2dldGN3ZCgyKSBhbmQgdGhlIHByb2MgZmlsZSBzeXN0ZW0gL3Byb2MvPHBpZD4vY3dkLCBubyBsb25nZXIgd29ya3MKK2JlY2F1c2UgdGhlIHBvaW50IGZyb20gd2hpY2ggdGhlIHBhdGggaXMgY29uc3RydWN0ZWQgaGFzIGJlZW4gZGV0YWNoZWQKK2Zyb20gdGhlIG1vdW50IHRyZWUuCisKK1RoZSBhY3R1YWwgcHJvYmxlbSB3aXRoIGF1dG9mcyBpcyB0aGF0IGl0IGNhbid0IHJlY29ubmVjdCB0byBleGlzdGluZworbW91bnRzLiBJbW1lZGlhdGVseSBvbmUgdGhpbmtzIG9mIGp1c3QgYWRkaW5nIHRoZSBhYmlsaXR5IHRvIHJlbW91bnQKK2F1dG9mcyBmaWxlIHN5c3RlbXMgd291bGQgc29sdmUgaXQsIGJ1dCBhbGFzLCB0aGF0IGNhbid0IHdvcmsuIFRoaXMgaXMKK2JlY2F1c2UgYXV0b2ZzIGRpcmVjdCBtb3VudHMgYW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiAib24gZGVtYW5kIG1vdW50CithbmQgZXhwaXJlIiBvZiBuZXN0ZWQgbW91bnQgdHJlZXMgaGF2ZSB0aGUgZmlsZSBzeXN0ZW0gbW91bnRlZCBkaXJlY3RseQorb24gdG9wIG9mIHRoZSBtb3VudCB0cmlnZ2VyIGRpcmVjdG9yeSBkZW50cnkuCisKK0ZvciBleGFtcGxlLCB0aGVyZSBhcmUgdHdvIHR5cGVzIG9mIGF1dG9tb3VudCBtYXBzLCBkaXJlY3QgKGluIHRoZSBrZXJuZWwKK21vZHVsZSBzb3VyY2UgeW91IHdpbGwgc2VlIGEgdGhpcmQgdHlwZSBjYWxsZWQgYW4gb2Zmc2V0LCB3aGljaCBpcyBqdXN0CithIGRpcmVjdCBtb3VudCBpbiBkaXNndWlzZSkgYW5kIGluZGlyZWN0LgorCitIZXJlIGlzIGEgbWFzdGVyIG1hcCB3aXRoIGRpcmVjdCBhbmQgaW5kaXJlY3QgbWFwIGVudHJpZXM6CisKKy8tICAgICAgL2V0Yy9hdXRvLmRpcmVjdAorL3Rlc3QgICAvZXRjL2F1dG8uaW5kaXJlY3QKKworYW5kIHRoZSBjb3JyZXNwb25kaW5nIG1hcCBmaWxlczoKKworL2V0Yy9hdXRvLmRpcmVjdDoKKworL2F1dG9tb3VudC9kcGFyc2UvZzYgIGJ1ZGdpZTovYXV0b2ZzL2V4cG9ydDEKKy9hdXRvbW91bnQvZHBhcnNlL2cxICBzaGFyazovYXV0b2ZzL2V4cG9ydDEKK2FuZCBzbyBvbi4KKworL2V0Yy9hdXRvLmluZGlyZWN0OgorCitnMSAgICBzaGFyazovYXV0b2ZzL2V4cG9ydDEKK2c2ICAgIGJ1ZGdpZTovYXV0b2ZzL2V4cG9ydDEKK2FuZCBzbyBvbi4KKworRm9yIHRoZSBhYm92ZSBpbmRpcmVjdCBtYXAgYW4gYXV0b2ZzIGZpbGUgc3lzdGVtIGlzIG1vdW50ZWQgb24gL3Rlc3QgYW5kCittb3VudHMgYXJlIHRyaWdnZXJlZCBmb3IgZWFjaCBzdWItZGlyZWN0b3J5IGtleSBieSB0aGUgaW5vZGUgbG9va3VwCitvcGVyYXRpb24uIFNvIHdlIHNlZSBhIG1vdW50IG9mIHNoYXJrOi9hdXRvZnMvZXhwb3J0MSBvbiAvdGVzdC9nMSwgZm9yCitleGFtcGxlLgorCitUaGUgd2F5IHRoYXQgZGlyZWN0IG1vdW50cyBhcmUgaGFuZGxlZCBpcyBieSBtYWtpbmcgYW4gYXV0b2ZzIG1vdW50IG9uCitlYWNoIGZ1bGwgcGF0aCwgc3VjaCBhcyAvYXV0b21vdW50L2RwYXJzZS9nMSwgYW5kIHVzaW5nIGl0IGFzIGEgbW91bnQKK3RyaWdnZXIuIFNvIHdoZW4gd2Ugd2FsayBvbiB0aGUgcGF0aCB3ZSBtb3VudCBzaGFyazovYXV0b2ZzL2V4cG9ydDEgIm9uCit0b3Agb2YgdGhpcyBtb3VudCBwb2ludCIuIFNpbmNlIHRoZXNlIGFyZSBhbHdheXMgZGlyZWN0b3JpZXMgd2UgY2FuCit1c2UgdGhlIGZvbGxvd19saW5rIGlub2RlIG9wZXJhdGlvbiB0byB0cmlnZ2VyIHRoZSBtb3VudC4KKworQnV0LCBlYWNoIGVudHJ5IGluIGRpcmVjdCBhbmQgaW5kaXJlY3QgbWFwcyBjYW4gaGF2ZSBvZmZzZXRzIChtYWtpbmcKK3RoZW0gbXVsdGktbW91bnQgbWFwIGVudHJpZXMpLgorCitGb3IgZXhhbXBsZSwgYW4gaW5kaXJlY3QgbW91bnQgbWFwIGVudHJ5IGNvdWxkIGFsc28gYmU6CisKK2cxICBcCisgICAvICAgICAgICBzaGFyazovYXV0b2ZzL2V4cG9ydDUvdGVzdGluZy90ZXN0IFwKKyAgIC9zMSAgICAgIHNoYXJrOi9hdXRvZnMvZXhwb3J0L3Rlc3RpbmcvdGVzdC9zMSBcCisgICAvczIgICAgICBzaGFyazovYXV0b2ZzL2V4cG9ydDUvdGVzdGluZy90ZXN0L3MyIFwKKyAgIC9zMS9zczEgIHNoYXJrOi9hdXRvZnMvZXhwb3J0MSBcCisgICAvczIvc3MyICBzaGFyazovYXV0b2ZzL2V4cG9ydDIKKworYW5kIGEgc2ltaWxhcmx5IGEgZGlyZWN0IG1vdW50IG1hcCBlbnRyeSBjb3VsZCBhbHNvIGJlOgorCisvYXV0b21vdW50L2RwYXJzZS9nMSBcCisgICAgLyAgICAgICBzaGFyazovYXV0b2ZzL2V4cG9ydDUvdGVzdGluZy90ZXN0IFwKKyAgICAvczEgICAgIHNoYXJrOi9hdXRvZnMvZXhwb3J0L3Rlc3RpbmcvdGVzdC9zMSBcCisgICAgL3MyICAgICBzaGFyazovYXV0b2ZzL2V4cG9ydDUvdGVzdGluZy90ZXN0L3MyIFwKKyAgICAvczEvc3MxIHNoYXJrOi9hdXRvZnMvZXhwb3J0MiBcCisgICAgL3MyL3NzMiBzaGFyazovYXV0b2ZzL2V4cG9ydDIKKworT25lIG9mIHRoZSBpc3N1ZXMgd2l0aCB2ZXJzaW9uIDQgb2YgYXV0b2ZzIHdhcyB0aGF0LCB3aGVuIG1vdW50aW5nIGFuCitlbnRyeSB3aXRoIGEgbGFyZ2UgbnVtYmVyIG9mIG9mZnNldHMsIHBvc3NpYmx5IHdpdGggbmVzdGluZywgd2UgbmVlZGVkCit0byBtb3VudCBhbmQgdW1vdW50IGFsbCBvZiB0aGUgb2Zmc2V0cyBhcyBhIHNpbmdsZSB1bml0LiBOb3QgcmVhbGx5IGEKK3Byb2JsZW0sIGV4Y2VwdCBmb3IgcGVvcGxlIHdpdGggYSBsYXJnZSBudW1iZXIgb2Ygb2Zmc2V0cyBpbiBtYXAgZW50cmllcy4KK1RoaXMgbWVjaGFuaXNtIGlzIHVzZWQgZm9yIHRoZSB3ZWxsIGtub3duICJob3N0cyIgbWFwIGFuZCB3ZSBoYXZlIHNlZW4KK2Nhc2VzIChpbiAyLjQpIHdoZXJlIHRoZSBhdmFpbGFibGUgbnVtYmVyIG9mIG1vdW50cyBhcmUgZXhoYXVzdGVkIG9yCit3aGVyZSB0aGUgbnVtYmVyIG9mIHByaXZpbGVnZWQgcG9ydHMgYXZhaWxhYmxlIGlzIGV4aGF1c3RlZC4KKworSW4gdmVyc2lvbiA1IHdlIG1vdW50IG9ubHkgYXMgd2UgZ28gZG93biB0aGUgdHJlZSBvZiBvZmZzZXRzIGFuZAorc2ltaWxhcmx5IGZvciBleHBpcmluZyB0aGVtIHdoaWNoIHJlc29sdmVzIHRoZSBhYm92ZSBwcm9ibGVtLiBUaGVyZSBpcworc29tZXdoYXQgbW9yZSBkZXRhaWwgdG8gdGhlIGltcGxlbWVudGF0aW9uIGJ1dCBpdCBpc24ndCBuZWVkZWQgZm9yIHRoZQorc2FrZSBvZiB0aGUgcHJvYmxlbSBleHBsYW5hdGlvbi4gVGhlIG9uZSBpbXBvcnRhbnQgZGV0YWlsIGlzIHRoYXQgdGhlc2UKK29mZnNldHMgYXJlIGltcGxlbWVudGVkIHVzaW5nIHRoZSBzYW1lIG1lY2hhbmlzbSBhcyB0aGUgZGlyZWN0IG1vdW50cworYWJvdmUgYW5kIHNvIHRoZSBtb3VudCBwb2ludHMgY2FuIGJlIGNvdmVyZWQgYnkgYSBtb3VudC4KKworVGhlIGN1cnJlbnQgYXV0b2ZzIGltcGxlbWVudGF0aW9uIHVzZXMgYW4gaW9jdGwgZmlsZSBkZXNjcmlwdG9yIG9wZW5lZAorb24gdGhlIG1vdW50IHBvaW50IGZvciBjb250cm9sIG9wZXJhdGlvbnMuIFRoZSByZWZlcmVuY2VzIGhlbGQgYnkgdGhlCitkZXNjcmlwdG9yIGFyZSBhY2NvdW50ZWQgZm9yIGluIGNoZWNrcyBtYWRlIHRvIGRldGVybWluZSBpZiBhIG1vdW50IGlzCitpbiB1c2UgYW5kIGlzIGFsc28gdXNlZCB0byBhY2Nlc3MgYXV0b2ZzIGZpbGUgc3lzdGVtIGluZm9ybWF0aW9uIGhlbGQKK2luIHRoZSBtb3VudCBzdXBlciBibG9jay4gU28gdGhlIHVzZSBvZiBhIGZpbGUgaGFuZGxlIG5lZWRzIHRvIGJlCityZXRhaW5lZC4KKworCitUaGUgU29sdXRpb24KKz09PT09PT09PT09PQorCitUbyBiZSBhYmxlIHRvIHJlc3RhcnQgYXV0b2ZzIGxlYXZpbmcgZXhpc3RpbmcgZGlyZWN0LCBpbmRpcmVjdCBhbmQKK29mZnNldCBtb3VudHMgaW4gcGxhY2Ugd2UgbmVlZCB0byBiZSBhYmxlIHRvIG9idGFpbiBhIGZpbGUgaGFuZGxlCitmb3IgdGhlc2UgcG90ZW50aWFsbHkgY292ZXJlZCBhdXRvZnMgbW91bnQgcG9pbnRzLiBSYXRoZXIgdGhhbiBqdXN0CitpbXBsZW1lbnQgYW4gaXNvbGF0ZWQgb3BlcmF0aW9uIGl0IHdhcyBkZWNpZGVkIHRvIHJlLWltcGxlbWVudCB0aGUKK2V4aXN0aW5nIGlvY3RsIGludGVyZmFjZSBhbmQgYWRkIG5ldyBvcGVyYXRpb25zIHRvIHByb3ZpZGUgdGhpcworZnVuY3Rpb25hbGl0eS4KKworSW4gYWRkaXRpb24sIHRvIGJlIGFibGUgdG8gcmVjb25zdHJ1Y3QgYSBtb3VudCB0cmVlIHRoYXQgaGFzIGJ1c3kgbW91bnRzLAordGhlIHVpZCBhbmQgZ2lkIG9mIHRoZSBsYXN0IHVzZXIgdGhhdCB0cmlnZ2VyZWQgdGhlIG1vdW50IG5lZWRzIHRvIGJlCithdmFpbGFibGUgYmVjYXVzZSB0aGVzZSBjYW4gYmUgdXNlZCBhcyBtYWNybyBzdWJzdGl0dXRpb24gdmFyaWFibGVzIGluCithdXRvZnMgbWFwcy4gVGhleSBhcmUgcmVjb3JkZWQgYXQgbW91bnQgcmVxdWVzdCB0aW1lIGFuZCBhbiBvcGVyYXRpb24KK2hhcyBiZWVuIGFkZGVkIHRvIHJldHJpZXZlIHRoZW0uCisKK1NpbmNlIHdlJ3JlIHJlLWltcGxlbWVudGluZyB0aGUgY29udHJvbCBpbnRlcmZhY2UsIGEgY291cGxlIG9mIG90aGVyCitwcm9ibGVtcyB3aXRoIHRoZSBleGlzdGluZyBpbnRlcmZhY2UgaGF2ZSBiZWVuIGFkZHJlc3NlZC4gRmlyc3QsIHdoZW4KK2EgbW91bnQgb3IgZXhwaXJlIG9wZXJhdGlvbiBjb21wbGV0ZXMgYSBzdGF0dXMgaXMgcmV0dXJuZWQgdG8gdGhlCitrZXJuZWwgYnkgZWl0aGVyIGEgInNlbmQgcmVhZHkiIG9yIGEgInNlbmQgZmFpbCIgb3BlcmF0aW9uLiBUaGUKKyJzZW5kIGZhaWwiIG9wZXJhdGlvbiBvZiB0aGUgaW9jdGwgaW50ZXJmYWNlIGNvdWxkIG9ubHkgZXZlciBzZW5kCitFTk9FTlQgc28gdGhlIHJlLWltcGxlbWVudGF0aW9uIGFsbG93cyB1c2VyIHNwYWNlIHRvIHNlbmQgYW4gYWN0dWFsCitzdGF0dXMuIEFub3RoZXIgZXhwZW5zaXZlIG9wZXJhdGlvbiBpbiB1c2VyIHNwYWNlLCBmb3IgdGhvc2UgdXNpbmcKK3ZlcnkgbGFyZ2UgbWFwcywgaXMgZGlzY292ZXJpbmcgaWYgYSBtb3VudCBpcyBwcmVzZW50LiBVc3VhbGx5IHRoaXMKK2ludm9sdmVzIHNjYW5uaW5nIC9wcm9jL21vdW50cyBhbmQgc2luY2UgaXQgbmVlZHMgdG8gYmUgZG9uZSBxdWl0ZQorb2Z0ZW4gaXQgY2FuIGludHJvZHVjZSBzaWduaWZpY2FudCBvdmVyaGVhZCB3aGVuIHRoZXJlIGFyZSBtYW55IGVudHJpZXMKK2luIHRoZSBtb3VudCB0YWJsZS4gQW4gb3BlcmF0aW9uIHRvIGxvb2t1cCB0aGUgbW91bnQgc3RhdHVzIG9mIGEgbW91bnQKK3BvaW50IGRlbnRyeSAoY292ZXJlZCBvciBub3QpIGhhcyBhbHNvIGJlZW4gYWRkZWQuCisKK0N1cnJlbnQga2VybmVsIGRldmVsb3BtZW50IHBvbGljeSByZWNvbW1lbmRzIGF2b2lkaW5nIHRoZSB1c2Ugb2YgdGhlCitpb2N0bCBtZWNoYW5pc20gaW4gZmF2b3Igb2Ygc3lzdGVtcyBzdWNoIGFzIE5ldGxpbmsuIEFuIGltcGxlbWVudGF0aW9uCit1c2luZyB0aGlzIHN5c3RlbSB3YXMgYXR0ZW1wdGVkIHRvIGV2YWx1YXRlIGl0cyBzdWl0YWJpbGl0eSBhbmQgaXQgd2FzCitmb3VuZCB0byBiZSBpbmFkZXF1YXRlLCBpbiB0aGlzIGNhc2UuIFRoZSBHZW5lcmljIE5ldGxpbmsgc3lzdGVtIHdhcwordXNlZCBmb3IgdGhpcyBhcyByYXcgTmV0bGluayB3b3VsZCBsZWFkIHRvIGEgc2lnbmlmaWNhbnQgaW5jcmVhc2UgaW4KK2NvbXBsZXhpdHkuIFRoZXJlJ3Mgbm8gcXVlc3Rpb24gdGhhdCB0aGUgR2VuZXJpYyBOZXRsaW5rIHN5c3RlbSBpcyBhbgorZWxlZ2FudCBzb2x1dGlvbiBmb3IgY29tbW9uIGNhc2UgaW9jdGwgZnVuY3Rpb25zIGJ1dCBpdCdzIG5vdCBhIGNvbXBsZXRlCityZXBsYWNlbWVudCBwcm9iYWJseSBiZWNhdXNlIGl0cyBwcmltYXJ5IHB1cnBvc2UgaW4gbGlmZSBpcyB0byBiZSBhCittZXNzYWdlIGJ1cyBpbXBsZW1lbnRhdGlvbiByYXRoZXIgdGhhbiBzcGVjaWZpY2FsbHkgYW4gaW9jdGwgcmVwbGFjZW1lbnQuCitXaGlsZSBpdCB3b3VsZCBiZSBwb3NzaWJsZSB0byB3b3JrIGFyb3VuZCB0aGlzIHRoZXJlIGlzIG9uZSBjb25jZXJuCit0aGF0IGxlYWQgdG8gdGhlIGRlY2lzaW9uIHRvIG5vdCB1c2UgaXQuIFRoaXMgaXMgdGhhdCB0aGUgYXV0b2ZzCitleHBpcmUgaW4gdGhlIGRhZW1vbiBoYXMgYmVjb21lIGZhciB0byBjb21wbGV4IGJlY2F1c2UgdW1vdW50CitjYW5kaWRhdGVzIGFyZSBlbnVtZXJhdGVkLCBhbG1vc3QgZm9yIG5vIG90aGVyIHJlYXNvbiB0aGFuIHRvICJjb3VudCIKK3RoZSBudW1iZXIgb2YgdGltZXMgdG8gY2FsbCB0aGUgZXhwaXJlIGlvY3RsLiBUaGlzIGludm9sdmVzIHNjYW5uaW5nCit0aGUgbW91bnQgdGFibGUgd2hpY2ggaGFzIHByb3ZlZCB0byBiZSBhIGJpZyBvdmVyaGVhZCBmb3IgdXNlcnMgd2l0aAorbGFyZ2UgbWFwcy4gVGhlIGJlc3Qgd2F5IHRvIGltcHJvdmUgdGhpcyBpcyB0cnkgYW5kIGdldCBiYWNrIHRvIHRoZQord2F5IHRoZSBleHBpcmUgd2FzIGRvbmUgbG9uZyBhZ28uIFRoYXQgaXMsIHdoZW4gYW4gZXhwaXJlIHJlcXVlc3QgaXMKK2lzc3VlZCBmb3IgYSBtb3VudCAoZmlsZSBoYW5kbGUpIHdlIHNob3VsZCBjb250aW51YWxseSBjYWxsIGJhY2sgdG8KK3RoZSBkYWVtb24gdW50aWwgd2UgY2FuJ3QgdW1vdW50IGFueSBtb3JlIG1vdW50cywgdGhlbiByZXR1cm4gdGhlCithcHByb3ByaWF0ZSBzdGF0dXMgdG8gdGhlIGRhZW1vbi4gQXQgdGhlIG1vbWVudCB3ZSBqdXN0IGV4cGlyZSBvbmUKK21vdW50IGF0IGEgdGltZS4gQSBHZW5lcmljIE5ldGxpbmsgaW1wbGVtZW50YXRpb24gd291bGQgZXhjbHVkZSB0aGlzCitwb3NzaWJpbGl0eSBmb3IgZnV0dXJlIGRldmVsb3BtZW50IGR1ZSB0byB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoZQorbWVzc2FnZSBidXMgYXJjaGl0ZWN0dXJlLgorCisKK2F1dG9mczQgTWlzY2VsbGFuZW91cyBEZXZpY2UgbW91bnQgY29udHJvbCBpbnRlcmZhY2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGNvbnRyb2wgaW50ZXJmYWNlIGlzIG9wZW5pbmcgYSBkZXZpY2Ugbm9kZSwgdHlwaWNhbGx5IC9kZXYvYXV0b2ZzLgorCitBbGwgdGhlIGlvY3RscyB1c2UgYSBjb21tb24gc3RydWN0dXJlIHRvIHBhc3MgdGhlIG5lZWRlZCBwYXJhbWV0ZXIKK2luZm9ybWF0aW9uIGFuZCByZXR1cm4gb3BlcmF0aW9uIHJlc3VsdHM6CisKK3N0cnVjdCBhdXRvZnNfZGV2X2lvY3RsIHsKKwlfX3UzMiB2ZXJfbWFqb3I7CisJX191MzIgdmVyX21pbm9yOworCV9fdTMyIHNpemU7ICAgICAgICAgICAgIC8qIHRvdGFsIHNpemUgb2YgZGF0YSBwYXNzZWQgaW4KKwkJCQkgKiBpbmNsdWRpbmcgdGhpcyBzdHJ1Y3QgKi8KKwlfX3MzMiBpb2N0bGZkOyAgICAgICAgICAvKiBhdXRvbW91bnQgY29tbWFuZCBmZCAqLworCisJX191MzIgYXJnMTsgICAgICAgICAgICAgLyogQ29tbWFuZCBwYXJhbWV0ZXJzICovCisJX191MzIgYXJnMjsKKworCWNoYXIgcGF0aFswXTsKK307CisKK1RoZSBpb2N0bGZkIGZpZWxkIGlzIGEgbW91bnQgcG9pbnQgZmlsZSBkZXNjcmlwdG9yIG9mIGFuIGF1dG9mcyBtb3VudAorcG9pbnQuIEl0IGlzIHJldHVybmVkIGJ5IHRoZSBvcGVuIGNhbGwgYW5kIGlzIHVzZWQgYnkgYWxsIGNhbGxzIGV4Y2VwdAordGhlIGNoZWNrIGZvciB3aGV0aGVyIGEgZ2l2ZW4gcGF0aCBpcyBhIG1vdW50IHBvaW50LCB3aGVyZSBpdCBtYXkKK29wdGlvbmFsbHkgYmUgdXNlZCB0byBjaGVjayBhIHNwZWNpZmljIG1vdW50IGNvcnJlc3BvbmRpbmcgdG8gYSBnaXZlbgorbW91bnQgcG9pbnQgZmlsZSBkZXNjcmlwdG9yLCBhbmQgd2hlbiByZXF1ZXN0aW5nIHRoZSB1aWQgYW5kIGdpZCBvZiB0aGUKK2xhc3Qgc3VjY2Vzc2Z1bCBtb3VudCBvbiBhIGRpcmVjdG9yeSB3aXRoaW4gdGhlIGF1dG9mcyBmaWxlIHN5c3RlbS4KKworVGhlIGZpZWxkcyBhcmcxIGFuZCBhcmcyIGFyZSB1c2VkIHRvIGNvbW11bmljYXRlIHBhcmFtZXRlcnMgYW5kIHJlc3VsdHMgb2YKK2NhbGxzIG1hZGUgYXMgZGVzY3JpYmVkIGJlbG93LgorCitUaGUgcGF0aCBmaWVsZCBpcyB1c2VkIHRvIHBhc3MgYSBwYXRoIHdoZXJlIGl0IGlzIG5lZWRlZCBhbmQgdGhlIHNpemUgZmllbGQKK2lzIHVzZWQgYWNjb3VudCBmb3IgdGhlIGluY3JlYXNlZCBzdHJ1Y3R1cmUgbGVuZ3RoIHdoZW4gdHJhbnNsYXRpbmcgdGhlCitzdHJ1Y3R1cmUgc2VudCBmcm9tIHVzZXIgc3BhY2UuCisKK1RoaXMgc3RydWN0dXJlIGNhbiBiZSBpbml0aWFsaXplZCBiZWZvcmUgc2V0dGluZyBzcGVjaWZpYyBmaWVsZHMgYnkgdXNpbmcKK3RoZSB2b2lkIGZ1bmN0aW9uIGNhbGwgaW5pdF9hdXRvZnNfZGV2X2lvY3RsKHN0cnVjdCBhdXRvZnNfZGV2X2lvY3RsICopLgorCitBbGwgb2YgdGhlIGlvY3RscyBwZXJmb3JtIGEgY29weSBvZiB0aGlzIHN0cnVjdHVyZSBmcm9tIHVzZXIgc3BhY2UgdG8KK2tlcm5lbCBzcGFjZSBhbmQgcmV0dXJuIC1FSU5WQUwgaWYgdGhlIHNpemUgcGFyYW1ldGVyIGlzIHNtYWxsZXIgdGhhbgordGhlIHN0cnVjdHVyZSBzaXplIGl0c2VsZiwgLUVOT01FTSBpZiB0aGUga2VybmVsIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxzCitvciAtRUZBVUxUIGlmIHRoZSBjb3B5IGl0c2VsZiBmYWlscy4gT3RoZXIgY2hlY2tzIGluY2x1ZGUgYSB2ZXJzaW9uIGNoZWNrCitvZiB0aGUgY29tcGlsZWQgaW4gdXNlciBzcGFjZSB2ZXJzaW9uIGFnYWluc3QgdGhlIG1vZHVsZSB2ZXJzaW9uIGFuZCBhCittaXNtYXRjaCByZXN1bHRzIGluIGEgLUVJTlZBTCByZXR1cm4uIElmIHRoZSBzaXplIGZpZWxkIGlzIGdyZWF0ZXIgdGhhbgordGhlIHN0cnVjdHVyZSBzaXplIHRoZW4gYSBwYXRoIGlzIGFzc3VtZWQgdG8gYmUgcHJlc2VudCBhbmQgaXMgY2hlY2tlZCB0bworZW5zdXJlIGl0IGJlZ2lucyB3aXRoIGEgIi8iIGFuZCBpcyBOVUxMIHRlcm1pbmF0ZWQsIG90aGVyd2lzZSAtRUlOVkFMIGlzCityZXR1cm5lZC4gRm9sbG93aW5nIHRoZXNlIGNoZWNrcywgZm9yIGFsbCBpb2N0bCBjb21tYW5kcyBleGNlcHQKK0FVVE9GU19ERVZfSU9DVExfVkVSU0lPTl9DTUQsIEFVVE9GU19ERVZfSU9DVExfT1BFTk1PVU5UX0NNRCBhbmQKK0FVVE9GU19ERVZfSU9DVExfQ0xPU0VNT1VOVF9DTUQgdGhlIGlvY3RsZmQgaXMgdmFsaWRhdGVkIGFuZCBpZiBpdCBpcworbm90IGEgdmFsaWQgZGVzY3JpcHRvciBvciBkb2Vzbid0IGNvcnJlc3BvbmQgdG8gYW4gYXV0b2ZzIG1vdW50IHBvaW50CithbiBlcnJvciBvZiAtRUJBREYsIC1FTk9UVFkgb3IgLUVJTlZBTCAobm90IGFuIGF1dG9mcyBkZXNjcmlwdG9yKSBpcworcmV0dXJuZWQuCisKKworVGhlIGlvY3RscworPT09PT09PT09PQorCitBbiBleGFtcGxlIG9mIGFuIGltcGxlbWVudGF0aW9uIHdoaWNoIHVzZXMgdGhpcyBpbnRlcmZhY2UgY2FuIGJlIHNlZW4KK2luIGF1dG9mcyB2ZXJzaW9uIDUuMC40IGFuZCBsYXRlciBpbiBmaWxlIGxpYi9kZXYtaW9jdGwtbGliLmMgb2YgdGhlCitkaXN0cmlidXRpb24gdGFyIGF2YWlsYWJsZSBmb3IgZG93bmxvYWQgZnJvbSBrZXJuZWwub3JnIGluIGRpcmVjdG9yeQorL3B1Yi9saW51eC9kYWVtb25zL2F1dG9mcy92NS4KKworVGhlIGRldmljZSBub2RlIGlvY3RsIG9wZXJhdGlvbnMgaW1wbGVtZW50ZWQgYnkgdGhpcyBpbnRlcmZhY2UgYXJlOgorCisKK0FVVE9GU19ERVZfSU9DVExfVkVSU0lPTgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0dldCB0aGUgbWFqb3IgYW5kIG1pbm9yIHZlcnNpb24gb2YgdGhlIGF1dG9mczQgZGV2aWNlIGlvY3RsIGtlcm5lbCBtb2R1bGUKK2ltcGxlbWVudGF0aW9uLiBJdCByZXF1aXJlcyBhbiBpbml0aWFsaXplZCBzdHJ1Y3QgYXV0b2ZzX2Rldl9pb2N0bCBhcyBhbgoraW5wdXQgcGFyYW1ldGVyIGFuZCBzZXRzIHRoZSB2ZXJzaW9uIGluZm9ybWF0aW9uIGluIHRoZSBwYXNzZWQgaW4gc3RydWN0dXJlLgorSXQgcmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgdGhlIGVycm9yIC1FSU5WQUwgaWYgYSB2ZXJzaW9uIG1pc21hdGNoIGlzCitkZXRlY3RlZC4KKworCitBVVRPRlNfREVWX0lPQ1RMX1BST1RPVkVSX0NNRCBhbmQgQVVUT0ZTX0RFVl9JT0NUTF9QUk9UT1NVQlZFUl9DTUQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitHZXQgdGhlIG1ham9yIGFuZCBtaW5vciB2ZXJzaW9uIG9mIHRoZSBhdXRvZnM0IHByb3RvY29sIHZlcnNpb24gdW5kZXJzdG9vZAorYnkgbG9hZGVkIG1vZHVsZS4gVGhpcyBjYWxsIHJlcXVpcmVzIGFuIGluaXRpYWxpemVkIHN0cnVjdCBhdXRvZnNfZGV2X2lvY3RsCit3aXRoIHRoZSBpb2N0bGZkIGZpZWxkIHNldCB0byBhIHZhbGlkIGF1dG9mcyBtb3VudCBwb2ludCBkZXNjcmlwdG9yCithbmQgc2V0cyB0aGUgcmVxdWVzdGVkIHZlcnNpb24gbnVtYmVyIGluIHN0cnVjdHVyZSBmaWVsZCBhcmcxLiBUaGVzZQorY29tbWFuZHMgcmV0dXJuIDAgb24gc3VjY2VzcyBvciBvbmUgb2YgdGhlIG5lZ2F0aXZlIGVycm9yIGNvZGVzIGlmCit2YWxpZGF0aW9uIGZhaWxzLgorCisKK0FVVE9GU19ERVZfSU9DVExfT1BFTk1PVU5UIGFuZCBBVVRPRlNfREVWX0lPQ1RMX0NMT1NFTU9VTlQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT2J0YWluIGFuZCByZWxlYXNlIGEgZmlsZSBkZXNjcmlwdG9yIGZvciBhbiBhdXRvZnMgbWFuYWdlZCBtb3VudCBwb2ludAorcGF0aC4gVGhlIG9wZW4gY2FsbCByZXF1aXJlcyBhbiBpbml0aWFsaXplZCBzdHJ1Y3QgYXV0b2ZzX2Rldl9pb2N0bCB3aXRoCit0aGUgcGF0aCBmaWVsZCBzZXQgYW5kIHRoZSBzaXplIGZpZWxkIGFkanVzdGVkIGFwcHJvcHJpYXRlbHkgYXMgd2VsbAorYXMgdGhlIGFyZzEgZmllbGQgc2V0IHRvIHRoZSBkZXZpY2UgbnVtYmVyIG9mIHRoZSBhdXRvZnMgbW91bnQuIFRoZQorZGV2aWNlIG51bWJlciBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgbW91bnQgb3B0aW9ucyBzaG93biBpbgorL3Byb2MvbW91bnRzLiBUaGUgY2xvc2UgY2FsbCByZXF1aXJlcyBhbiBpbml0aWFsaXplZCBzdHJ1Y3QKK2F1dG9mc19kZXZfaW9jdCB3aXRoIHRoZSBpb2N0bGZkIGZpZWxkIHNldCB0byB0aGUgZGVzY3JpcHRvciBvYnRhaW5lZAorZnJvbSB0aGUgb3BlbiBjYWxsLiBUaGUgcmVsZWFzZSBvZiB0aGUgZmlsZSBkZXNjcmlwdG9yIGNhbiBhbHNvIGJlIGRvbmUKK3dpdGggY2xvc2UoMikgc28gYW55IG9wZW4gZGVzY3JpcHRvcnMgd2lsbCBhbHNvIGJlIGNsb3NlZCBhdCBwcm9jZXNzIGV4aXQuCitUaGUgY2xvc2UgY2FsbCBpcyBpbmNsdWRlZCBpbiB0aGUgaW1wbGVtZW50ZWQgb3BlcmF0aW9ucyBsYXJnZWx5IGZvcgorY29tcGxldGVuZXNzIGFuZCB0byBwcm92aWRlIGZvciBhIGNvbnNpc3RlbnQgdXNlciBzcGFjZSBpbXBsZW1lbnRhdGlvbi4KKworCitBVVRPRlNfREVWX0lPQ1RMX1JFQURZX0NNRCBhbmQgQVVUT0ZTX0RFVl9JT0NUTF9GQUlMX0NNRAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmV0dXJuIG1vdW50IGFuZCBleHBpcmUgcmVzdWx0IHN0YXR1cyBmcm9tIHVzZXIgc3BhY2UgdG8gdGhlIGtlcm5lbC4KK0JvdGggb2YgdGhlc2UgY2FsbHMgcmVxdWlyZSBhbiBpbml0aWFsaXplZCBzdHJ1Y3QgYXV0b2ZzX2Rldl9pb2N0bAord2l0aCB0aGUgaW9jdGxmZCBmaWVsZCBzZXQgdG8gdGhlIGRlc2NyaXB0b3Igb2J0YWluZWQgZnJvbSB0aGUgb3BlbgorY2FsbCBhbmQgdGhlIGFyZzEgZmllbGQgc2V0IHRvIHRoZSB3YWl0IHF1ZXVlIHRva2VuIG51bWJlciwgcmVjZWl2ZWQKK2J5IHVzZXIgc3BhY2UgaW4gdGhlIGZvcmVnb2luZyBtb3VudCBvciBleHBpcmUgcmVxdWVzdC4gVGhlIGFyZzIgZmllbGQKK2lzIHNldCB0byB0aGUgc3RhdHVzIHRvIGJlIHJldHVybmVkLiBGb3IgdGhlIHJlYWR5IGNhbGwgdGhpcyBpcyBhbHdheXMKKzAgYW5kIGZvciB0aGUgZmFpbCBjYWxsIGl0IGlzIHNldCB0byB0aGUgZXJybm8gb2YgdGhlIG9wZXJhdGlvbi4KKworCitBVVRPRlNfREVWX0lPQ1RMX1NFVFBJUEVGRF9DTUQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTZXQgdGhlIHBpcGUgZmlsZSBkZXNjcmlwdG9yIHVzZWQgZm9yIGtlcm5lbCBjb21tdW5pY2F0aW9uIHRvIHRoZSBkYWVtb24uCitOb3JtYWxseSB0aGlzIGlzIHNldCBhdCBtb3VudCB0aW1lIHVzaW5nIGFuIG9wdGlvbiBidXQgd2hlbiByZWNvbm5lY3RpbmcKK3RvIGEgZXhpc3RpbmcgbW91bnQgd2UgbmVlZCB0byB1c2UgdGhpcyB0byB0ZWxsIHRoZSBhdXRvZnMgbW91bnQgYWJvdXQKK3RoZSBuZXcga2VybmVsIHBpcGUgZGVzY3JpcHRvci4gSW4gb3JkZXIgdG8gcHJvdGVjdCBtb3VudHMgYWdhaW5zdAoraW5jb3JyZWN0bHkgc2V0dGluZyB0aGUgcGlwZSBkZXNjcmlwdG9yIHdlIGFsc28gcmVxdWlyZSB0aGF0IHRoZSBhdXRvZnMKK21vdW50IGJlIGNhdGF0b25pYyAoc2VlIG5leHQgY2FsbCkuCisKK1RoZSBjYWxsIHJlcXVpcmVzIGFuIGluaXRpYWxpemVkIHN0cnVjdCBhdXRvZnNfZGV2X2lvY3RsIHdpdGggdGhlCitpb2N0bGZkIGZpZWxkIHNldCB0byB0aGUgZGVzY3JpcHRvciBvYnRhaW5lZCBmcm9tIHRoZSBvcGVuIGNhbGwgYW5kCit0aGUgYXJnMSBmaWVsZCBzZXQgdG8gZGVzY3JpcHRvciBvZiB0aGUgcGlwZS4gT24gc3VjY2VzcyB0aGUgY2FsbAorYWxzbyBzZXRzIHRoZSBwcm9jZXNzIGdyb3VwIGlkIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGNvbnRyb2xsaW5nIHByb2Nlc3MKKyhlZy4gdGhlIG93bmluZyBhdXRvbW91bnQoOCkgZGFlbW9uKSB0byB0aGUgcHJvY2VzcyBncm91cCBvZiB0aGUgY2FsbGVyLgorCisKK0FVVE9GU19ERVZfSU9DVExfQ0FUQVRPTklDX0NNRAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01ha2UgdGhlIGF1dG9mcyBtb3VudCBwb2ludCBjYXRhdG9uaWMuIFRoZSBhdXRvZnMgbW91bnQgd2lsbCBubyBsb25nZXIKK2lzc3VlIG1vdW50IHJlcXVlc3RzLCB0aGUga2VybmVsIGNvbW11bmljYXRpb24gcGlwZSBkZXNjcmlwdG9yIGlzIHJlbGVhc2VkCithbmQgYW55IHJlbWFpbmluZyB3YWl0cyBpbiB0aGUgcXVldWUgcmVsZWFzZWQuCisKK1RoZSBjYWxsIHJlcXVpcmVzIGFuIGluaXRpYWxpemVkIHN0cnVjdCBhdXRvZnNfZGV2X2lvY3RsIHdpdGggdGhlCitpb2N0bGZkIGZpZWxkIHNldCB0byB0aGUgZGVzY3JpcHRvciBvYnRhaW5lZCBmcm9tIHRoZSBvcGVuIGNhbGwuCisKKworQVVUT0ZTX0RFVl9JT0NUTF9USU1FT1VUX0NNRAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTZXQgdGhlIGV4cGlyZSB0aW1lb3V0IGZvciBtb3VudHMgd2l0aGluIGFuIGF1dG9mcyBtb3VudCBwb2ludC4KKworVGhlIGNhbGwgcmVxdWlyZXMgYW4gaW5pdGlhbGl6ZWQgc3RydWN0IGF1dG9mc19kZXZfaW9jdGwgd2l0aCB0aGUKK2lvY3RsZmQgZmllbGQgc2V0IHRvIHRoZSBkZXNjcmlwdG9yIG9idGFpbmVkIGZyb20gdGhlIG9wZW4gY2FsbC4KKworCitBVVRPRlNfREVWX0lPQ1RMX1JFUVVFU1RFUl9DTUQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXR1cm4gdGhlIHVpZCBhbmQgZ2lkIG9mIHRoZSBsYXN0IHByb2Nlc3MgdG8gc3VjY2Vzc2Z1bGx5IHRyaWdnZXIgYSB0aGUKK21vdW50IG9uIHRoZSBnaXZlbiBwYXRoIGRlbnRyeS4KKworVGhlIGNhbGwgcmVxdWlyZXMgYW4gaW5pdGlhbGl6ZWQgc3RydWN0IGF1dG9mc19kZXZfaW9jdGwgd2l0aCB0aGUgcGF0aAorZmllbGQgc2V0IHRvIHRoZSBtb3VudCBwb2ludCBpbiBxdWVzdGlvbiBhbmQgdGhlIHNpemUgZmllbGQgYWRqdXN0ZWQKK2FwcHJvcHJpYXRlbHkgYXMgd2VsbCBhcyB0aGUgYXJnMSBmaWVsZCBzZXQgdG8gdGhlIGRldmljZSBudW1iZXIgb2YgdGhlCitjb250YWluaW5nIGF1dG9mcyBtb3VudC4gVXBvbiByZXR1cm4gdGhlIHN0cnVjdCBmaWVsZCBhcmcxIGNvbnRhaW5zIHRoZQordWlkIGFuZCBhcmcyIHRoZSBnaWQuCisKK1doZW4gcmVjb25zdHJ1Y3RpbmcgYW4gYXV0b2ZzIG1vdW50IHRyZWUgd2l0aCBhY3RpdmUgbW91bnRzIHdlIG5lZWQgdG8KK3JlLWNvbm5lY3QgdG8gbW91bnRzIHRoYXQgbWF5IGhhdmUgdXNlZCB0aGUgb3JpZ2luYWwgcHJvY2VzcyB1aWQgYW5kCitnaWQgKG9yIHN0cmluZyB2YXJpYXRpb25zIG9mIHRoZW0pIGZvciBtb3VudCBsb29rdXBzIHdpdGhpbiB0aGUgbWFwIGVudHJ5LgorVGhpcyBjYWxsIHByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIG9idGFpbiB0aGlzIHVpZCBhbmQgZ2lkIHNvIHRoZXkgbWF5IGJlCit1c2VkIGJ5IHVzZXIgc3BhY2UgZm9yIHRoZSBtb3VudCBtYXAgbG9va3Vwcy4KKworCitBVVRPRlNfREVWX0lPQ1RMX0VYUElSRV9DTUQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJc3N1ZSBhbiBleHBpcmUgcmVxdWVzdCB0byB0aGUga2VybmVsIGZvciBhbiBhdXRvZnMgbW91bnQuIFR5cGljYWxseQordGhpcyBpb2N0bCBpcyBjYWxsZWQgdW50aWwgbm8gZnVydGhlciBleHBpcmUgY2FuZGlkYXRlcyBhcmUgZm91bmQuCisKK1RoZSBjYWxsIHJlcXVpcmVzIGFuIGluaXRpYWxpemVkIHN0cnVjdCBhdXRvZnNfZGV2X2lvY3RsIHdpdGggdGhlCitpb2N0bGZkIGZpZWxkIHNldCB0byB0aGUgZGVzY3JpcHRvciBvYnRhaW5lZCBmcm9tIHRoZSBvcGVuIGNhbGwuIEluCithZGRpdGlvbiBhbiBpbW1lZGlhdGUgZXhwaXJlLCBpbmRlcGVuZGVudCBvZiB0aGUgbW91bnQgdGltZW91dCwgY2FuIGJlCityZXF1ZXN0ZWQgYnkgc2V0dGluZyB0aGUgYXJnMSBmaWVsZCB0byAxLiBJZiBubyBleHBpcmUgY2FuZGlkYXRlcyBjYW4KK2JlIGZvdW5kIHRoZSBpb2N0bCByZXR1cm5zIC0xIHdpdGggZXJybm8gc2V0IHRvIEVBR0FJTi4KKworVGhpcyBjYWxsIGNhdXNlcyB0aGUga2VybmVsIG1vZHVsZSB0byBjaGVjayB0aGUgbW91bnQgY29ycmVzcG9uZGluZwordG8gdGhlIGdpdmVuIGlvY3RsZmQgZm9yIG1vdW50cyB0aGF0IGNhbiBiZSBleHBpcmVkLCBpc3N1ZXMgYW4gZXhwaXJlCityZXF1ZXN0IGJhY2sgdG8gdGhlIGRhZW1vbiBhbmQgd2FpdHMgZm9yIGNvbXBsZXRpb24uCisKK0FVVE9GU19ERVZfSU9DVExfQVNLVU1PVU5UX0NNRAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoZWNrcyBpZiBhbiBhdXRvZnMgbW91bnQgcG9pbnQgaXMgaW4gdXNlLgorCitUaGUgY2FsbCByZXF1aXJlcyBhbiBpbml0aWFsaXplZCBzdHJ1Y3QgYXV0b2ZzX2Rldl9pb2N0bCB3aXRoIHRoZQoraW9jdGxmZCBmaWVsZCBzZXQgdG8gdGhlIGRlc2NyaXB0b3Igb2J0YWluZWQgZnJvbSB0aGUgb3BlbiBjYWxsIGFuZAoraXQgcmV0dXJucyB0aGUgcmVzdWx0IGluIHRoZSBhcmcxIGZpZWxkLCAxIGZvciBidXN5IGFuZCAwIG90aGVyd2lzZS4KKworCitBVVRPRlNfREVWX0lPQ1RMX0lTTU9VTlRQT0lOVF9DTUQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGVjayBpZiB0aGUgZ2l2ZW4gcGF0aCBpcyBhIG1vdW50cG9pbnQuCisKK1RoZSBjYWxsIHJlcXVpcmVzIGFuIGluaXRpYWxpemVkIHN0cnVjdCBhdXRvZnNfZGV2X2lvY3RsLiBUaGVyZSBhcmUgdHdvCitwb3NzaWJsZSB2YXJpYXRpb25zLiBCb3RoIHVzZSB0aGUgcGF0aCBmaWVsZCBzZXQgdG8gdGhlIHBhdGggb2YgdGhlIG1vdW50Citwb2ludCB0byBjaGVjayBhbmQgdGhlIHNpemUgZmllbGQgYWRqdXN0ZWQgYXBwcm9wcmlhdGVseS4gT25lIHVzZXMgdGhlCitpb2N0bGZkIGZpZWxkIHRvIGlkZW50aWZ5IGEgc3BlY2lmaWMgbW91bnQgcG9pbnQgdG8gY2hlY2sgd2hpbGUgdGhlIG90aGVyCit2YXJpYXRpb24gdXNlcyB0aGUgcGF0aCBhbmQgb3B0aW9uYWxseSBhcmcxIHNldCB0byBhbiBhdXRvZnMgbW91bnQgdHlwZS4KK1RoZSBjYWxsIHJldHVybnMgMSBpZiB0aGlzIGlzIGEgbW91bnQgcG9pbnQgYW5kIHNldHMgYXJnMSB0byB0aGUgZGV2aWNlCitudW1iZXIgb2YgdGhlIG1vdW50IGFuZCBmaWVsZCBhcmcyIHRvIHRoZSByZWxldmFudCBzdXBlciBibG9jayBtYWdpYworbnVtYmVyIChkZXNjcmliZWQgYmVsb3cpIG9yIDAgaWYgaXQgaXNuJ3QgYSBtb3VudHBvaW50LiBJbiBib3RoIGNhc2VzCit0aGUgdGhlIGRldmljZSBudW1iZXIgKGFzIHJldHVybmVkIGJ5IG5ld19lbmNvZGVfZGV2KCkpIGlzIHJldHVybmVkCitpbiBmaWVsZCBhcmcxLgorCitJZiBzdXBwbGllZCB3aXRoIGEgZmlsZSBkZXNjcmlwdG9yIHdlJ3JlIGxvb2tpbmcgZm9yIGEgc3BlY2lmaWMgbW91bnQsCitub3QgbmVjZXNzYXJpbHkgYXQgdGhlIHRvcCBvZiB0aGUgbW91bnRlZCBzdGFjay4gSW4gdGhpcyBjYXNlIHRoZSBwYXRoCit0aGUgZGVzY3JpcHRvciBjb3JyZXNwb25kcyB0byBpcyBjb25zaWRlcmVkIGEgbW91bnRwb2ludCBpZiBpdCBpcyBpdHNlbGYKK2EgbW91bnRwb2ludCBvciBjb250YWlucyBhIG1vdW50LCBzdWNoIGFzIGEgbXVsdGktbW91bnQgd2l0aG91dCBhIHJvb3QKK21vdW50LiBJbiB0aGlzIGNhc2Ugd2UgcmV0dXJuIDEgaWYgdGhlIGRlc2NyaXB0b3IgY29ycmVzcG9uZHMgdG8gYSBtb3VudAorcG9pbnQgYW5kIGFuZCBhbHNvIHJldHVybnMgdGhlIHN1cGVyIG1hZ2ljIG9mIHRoZSBjb3ZlcmluZyBtb3VudCBpZiB0aGVyZQoraXMgb25lIG9yIDAgaWYgaXQgaXNuJ3QgYSBtb3VudHBvaW50LgorCitJZiBhIHBhdGggaXMgc3VwcGxpZWQgKGFuZCB0aGUgaW9jdGxmZCBmaWVsZCBpcyBzZXQgdG8gLTEpIHRoZW4gdGhlIHBhdGgKK2lzIGxvb2tlZCB1cCBhbmQgaXMgY2hlY2tlZCB0byBzZWUgaWYgaXQgaXMgdGhlIHJvb3Qgb2YgYSBtb3VudC4gSWYgYQordHlwZSBpcyBhbHNvIGdpdmVuIHdlIGFyZSBsb29raW5nIGZvciBhIHBhcnRpY3VsYXIgYXV0b2ZzIG1vdW50IGFuZCBpZgorYSBtYXRjaCBpc24ndCBmb3VuZCBhIGZhaWwgaXMgcmV0dXJuZWQuIElmIHRoZSB0aGUgbG9jYXRlZCBwYXRoIGlzIHRoZQorcm9vdCBvZiBhIG1vdW50IDEgaXMgcmV0dXJuZWQgYWxvbmcgd2l0aCB0aGUgc3VwZXIgbWFnaWMgb2YgdGhlIG1vdW50CitvciAwIG90aGVyd2lzZS4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9hdXRvZnM0LnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvYXV0b2ZzNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzlkMDJlMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvYXV0b2ZzNC50eHQKQEAgLTAsMCArMSw1MjAgQEAKKzxoZWFkPgorPHN0eWxlPiBwIHsgbWF4LXdpZHRoOjUwZW19IG9sLCB1bCB7bWF4LXdpZHRoOiA0MGVtfTwvc3R5bGU+Cis8L2hlYWQ+CisKK2F1dG9mcyAtIGhvdyBpdCB3b3JrcworPT09PT09PT09PT09PT09PT09PT09CisKK1B1cnBvc2UKKy0tLS0tLS0KKworVGhlIGdvYWwgb2YgYXV0b2ZzIGlzIHRvIHByb3ZpZGUgb24tZGVtYW5kIG1vdW50aW5nIGFuZCByYWNlIGZyZWUKK2F1dG9tYXRpYyB1bm1vdW50aW5nIG9mIHZhcmlvdXMgb3RoZXIgZmlsZXN5c3RlbXMuICBUaGlzIHByb3ZpZGVzIHR3bwora2V5IGFkdmFudGFnZXM6CisKKzEuIFRoZXJlIGlzIG5vIG5lZWQgdG8gZGVsYXkgYm9vdCB1bnRpbCBhbGwgZmlsZXN5c3RlbXMgdGhhdAorICAgbWlnaHQgYmUgbmVlZGVkIGFyZSBtb3VudGVkLiAgUHJvY2Vzc2VzIHRoYXQgdHJ5IHRvIGFjY2VzcyB0aG9zZQorICAgc2xvdyBmaWxlc3lzdGVtcyBtaWdodCBiZSBkZWxheWVkIGJ1dCBvdGhlciBwcm9jZXNzZXMgY2FuCisgICBjb250aW51ZSBmcmVlbHkuICBUaGlzIGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgZm9yCisgICBuZXR3b3JrIGZpbGVzeXN0ZW1zIChlLmcuIE5GUykgb3IgZmlsZXN5c3RlbXMgc3RvcmVkIG9uCisgICBtZWRpYSB3aXRoIGEgbWVkaWEtY2hhbmdpbmcgcm9ib3QuCisKKzIuIFRoZSBuYW1lcyBhbmQgbG9jYXRpb25zIG9mIGZpbGVzeXN0ZW1zIGNhbiBiZSBzdG9yZWQgaW4KKyAgIGEgcmVtb3RlIGRhdGFiYXNlIGFuZCBjYW4gY2hhbmdlIGF0IGFueSB0aW1lLiAgVGhlIGNvbnRlbnQKKyAgIGluIHRoYXQgZGF0YSBiYXNlIGF0IHRoZSB0aW1lIG9mIGFjY2VzcyB3aWxsIGJlIHVzZWQgdG8gcHJvdmlkZQorICAgYSB0YXJnZXQgZm9yIHRoZSBhY2Nlc3MuICBUaGUgaW50ZXJwcmV0YXRpb24gb2YgbmFtZXMgaW4gdGhlCisgICBmaWxlc3lzdGVtIGNhbiBldmVuIGJlIHByb2dyYW1tYXRpYyByYXRoZXIgdGhhbiBkYXRhYmFzZS1iYWNrZWQsCisgICBhbGxvd2luZyB3aWxkY2FyZHMgZm9yIGV4YW1wbGUsIGFuZCBjYW4gdmFyeSBiYXNlZCBvbiB0aGUgdXNlciB3aG8KKyAgIGZpcnN0IGFjY2Vzc2VkIGEgbmFtZS4KKworQ29udGV4dAorLS0tLS0tLQorCitUaGUgImF1dG9mczQiIGZpbGVzeXN0ZW0gbW9kdWxlIGlzIG9ubHkgb25lIHBhcnQgb2YgYW4gYXV0b2ZzIHN5c3RlbS4KK1RoZXJlIGFsc28gbmVlZHMgdG8gYmUgYSB1c2VyLXNwYWNlIHByb2dyYW0gd2hpY2ggbG9va3MgdXAgbmFtZXMKK2FuZCBtb3VudHMgZmlsZXN5c3RlbXMuICBUaGlzIHdpbGwgb2Z0ZW4gYmUgdGhlICJhdXRvbW91bnQiIHByb2dyYW0sCit0aG91Z2ggb3RoZXIgdG9vbHMgaW5jbHVkaW5nICJzeXN0ZW1kIiBjYW4gbWFrZSB1c2Ugb2YgImF1dG9mczQiLgorVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgb25seSB0aGUga2VybmVsIG1vZHVsZSBhbmQgdGhlIGludGVyYWN0aW9ucworcmVxdWlyZWQgd2l0aCBhbnkgdXNlci1zcGFjZSBwcm9ncmFtLiAgU3Vic2VxdWVudCB0ZXh0IHJlZmVycyB0byB0aGlzCithcyB0aGUgImF1dG9tb3VudCBkYWVtb24iIG9yIHNpbXBseSAidGhlIGRhZW1vbiIuCisKKyJhdXRvZnM0IiBpcyBhIExpbnV4IGtlcm5lbCBtb2R1bGUgd2l0aCBwcm92aWRlcyB0aGUgImF1dG9mcyIKK2ZpbGVzeXN0ZW0gdHlwZS4gIFNldmVyYWwgImF1dG9mcyIgZmlsZXN5c3RlbXMgY2FuIGJlIG1vdW50ZWQgYW5kIHRoZXkKK2NhbiBlYWNoIGJlIG1hbmFnZWQgc2VwYXJhdGVseSwgb3IgYWxsIG1hbmFnZWQgYnkgdGhlIHNhbWUgZGFlbW9uLgorCitDb250ZW50CistLS0tLS0tCisKK0FuIGF1dG9mcyBmaWxlc3lzdGVtIGNhbiBjb250YWluIDMgc29ydHMgb2Ygb2JqZWN0czogZGlyZWN0b3JpZXMsCitzeW1ib2xpYyBsaW5rcyBhbmQgbW91bnQgdHJhcHMuICBNb3VudCB0cmFwcyBhcmUgZGlyZWN0b3JpZXMgd2l0aAorZXh0cmEgcHJvcGVydGllcyBhcyBkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbi4KKworT2JqZWN0cyBjYW4gb25seSBiZSBjcmVhdGVkIGJ5IHRoZSBhdXRvbW91bnQgZGFlbW9uOiBzeW1saW5rcyBhcmUKK2NyZWF0ZWQgd2l0aCBhIHJlZ3VsYXIgYHN5bWxpbmtgIHN5c3RlbSBjYWxsLCB3aGlsZSBkaXJlY3RvcmllcyBhbmQKK21vdW50IHRyYXBzIGFyZSBjcmVhdGVkIHdpdGggYG1rZGlyYC4gIFRoZSBkZXRlcm1pbmF0aW9uIG9mIHdoZXRoZXIgYQorZGlyZWN0b3J5IHNob3VsZCBiZSBhIG1vdW50IHRyYXAgb3Igbm90IGlzIHF1aXRlIF9hZCBob2NfLCBsYXJnZWx5IGZvcgoraGlzdG9yaWNhbCByZWFzb25zLCBhbmQgaXMgZGV0ZXJtaW5lZCBpbiBwYXJ0IGJ5IHRoZQorKmRpcmVjdCovKmluZGlyZWN0Ki8qb2Zmc2V0KiBtb3VudCBvcHRpb25zLCBhbmQgdGhlICptYXhwcm90byogbW91bnQgb3B0aW9uLgorCitJZiBuZWl0aGVyIHRoZSAqZGlyZWN0KiBvciAqb2Zmc2V0KiBtb3VudCBvcHRpb25zIGFyZSBnaXZlbiAoc28gdGhlCittb3VudCBpcyBjb25zaWRlcmVkIHRvIGJlICppbmRpcmVjdCopLCB0aGVuIHRoZSByb290IGRpcmVjdG9yeSBpcworYWx3YXlzIGEgcmVndWxhciBkaXJlY3RvcnksIG90aGVyd2lzZSBpdCBpcyBhIG1vdW50IHRyYXAgd2hlbiBpdCBpcworZW1wdHkgYW5kIGEgcmVndWxhciBkaXJlY3Rvcnkgd2hlbiBub3QgZW1wdHkuICBOb3RlIHRoYXQgKmRpcmVjdCogYW5kCisqb2Zmc2V0KiBhcmUgdHJlYXRlZCBpZGVudGljYWxseSBzbyBhIGNvbmNpc2Ugc3VtbWFyeSBpcyB0aGF0IHRoZSByb290CitkaXJlY3RvcnkgaXMgYSBtb3VudCB0cmFwIG9ubHkgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCAqZGlyZWN0KgorYW5kIHRoZSByb290IGlzIGVtcHR5LgorCitEaXJlY3RvcmllcyBjcmVhdGVkIGluIHRoZSByb290IGRpcmVjdG9yeSBhcmUgbW91bnQgdHJhcHMgb25seSBpZiB0aGUKK2ZpbGVzeXN0ZW0gaXMgbW91bnRlZCAgKmluZGlyZWN0KiBhbmQgdGhleSBhcmUgZW1wdHkuCisKK0RpcmVjdG9yaWVzIGZ1cnRoZXIgZG93biB0aGUgdHJlZSBkZXBlbmQgb24gdGhlICptYXhwcm90byogbW91bnQKK29wdGlvbiBhbmQgcGFydGljdWxhcmx5IHdoZXRoZXIgaXQgaXMgbGVzcyB0aGFuIGZpdmUgb3Igbm90LgorV2hlbiAqbWF4cHJvdG8qIGlzIGZpdmUsIG5vIGRpcmVjdG9yaWVzIGZ1cnRoZXIgZG93biB0aGUKK3RyZWUgYXJlIGV2ZXIgbW91bnQgdHJhcHMsIHRoZXkgYXJlIGFsd2F5cyByZWd1bGFyIGRpcmVjdG9yaWVzLiAgV2hlbgordGhlICptYXhwcm90byogaXMgZm91ciAob3IgdGhyZWUpLCB0aGVzZSBkaXJlY3RvcmllcyBhcmUgbW91bnQgdHJhcHMKK3ByZWNpc2VseSB3aGVuIHRoZXkgYXJlIGVtcHR5LgorCitTbzogbm9uLWVtcHR5IChpLmUuIG5vbi1sZWFmKSBkaXJlY3RvcmllcyBhcmUgbmV2ZXIgbW91bnQgdHJhcHMuIEVtcHR5CitkaXJlY3RvcmllcyBhcmUgc29tZXRpbWVzIG1vdW50IHRyYXBzLCBhbmQgc29tZXRpbWVzIG5vdCBkZXBlbmRpbmcgb24KK3doZXJlIGluIHRoZSB0cmVlIHRoZXkgYXJlIChyb290LCB0b3AgbGV2ZWwsIG9yIGxvd2VyKSwgdGhlICptYXhwcm90byosCithbmQgd2hldGhlciB0aGUgbW91bnQgd2FzICppbmRpcmVjdCogb3Igbm90LgorCitNb3VudCBUcmFwcworLS0tLS0tLS0tLS0tLS0tCisKK0EgY29yZSBlbGVtZW50IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBhdXRvZnMgaXMgdGhlIE1vdW50IFRyYXBzCit3aGljaCBhcmUgcHJvdmlkZWQgYnkgdGhlIExpbnV4IFZGUy4gIEFueSBkaXJlY3RvcnkgcHJvdmlkZWQgYnkgYQorZmlsZXN5c3RlbSBjYW4gYmUgZGVzaWduYXRlZCBhcyBhIHRyYXAuICBUaGlzIGludm9sdmVzIHR3byBzZXBhcmF0ZQorZmVhdHVyZXMgdGhhdCB3b3JrIHRvZ2V0aGVyIHRvIGFsbG93IGF1dG9mcyB0byBkbyBpdHMgam9iLgorCisqKkRDQUNIRV9ORUVEX0FVVE9NT1VOVCoqCisKK0lmIGEgZGVudHJ5IGhhcyB0aGUgRENBQ0hFX05FRURfQVVUT01PVU5UIGZsYWcgc2V0ICh3aGljaCBnZXRzIHNldCBpZgordGhlIGlub2RlIGhhcyBTX0FVVE9NT1VOVCBzZXQsIG9yIGNhbiBiZSBzZXQgZGlyZWN0bHkpIHRoZW4gaXQgaXMKKyhwb3RlbnRpYWxseSkgYSBtb3VudCB0cmFwLiAgQW55IGFjY2VzcyB0byB0aGlzIGRpcmVjdG9yeSBiZXlvbmQgYQorImBzdGF0YCIgd2lsbCAobm9ybWFsbHkpIGNhdXNlIHRoZSBgZF9vcC0+ZF9hdXRvbW91bnQoKWAgZGVudHJ5IG9wZXJhdGlvbgordG8gYmUgY2FsbGVkLiBUaGUgdGFzayBvZiB0aGlzIG1ldGhvZCBpcyB0byBmaW5kIHRoZSBmaWxlc3lzdGVtIHRoYXQKK3Nob3VsZCBiZSBtb3VudGVkIG9uIHRoZSBkaXJlY3RvcnkgYW5kIHRvIHJldHVybiBpdC4gIFRoZSBWRlMgaXMKK3Jlc3BvbnNpYmxlIGZvciBhY3R1YWxseSBtb3VudGluZyB0aGUgcm9vdCBvZiB0aGlzIGZpbGVzeXN0ZW0gb24gdGhlCitkaXJlY3RvcnkuCisKK2F1dG9mcyBkb2Vzbid0IGZpbmQgdGhlIGZpbGVzeXN0ZW0gaXRzZWxmIGJ1dCBzZW5kcyBhIG1lc3NhZ2UgdG8gdGhlCithdXRvbW91bnQgZGFlbW9uIGFza2luZyBpdCB0byBmaW5kIGFuZCBtb3VudCB0aGUgZmlsZXN5c3RlbS4gIFRoZQorYXV0b2ZzIGBkX2F1dG9tb3VudGAgbWV0aG9kIHRoZW4gd2FpdHMgZm9yIHRoZSBkYWVtb24gdG8gcmVwb3J0IHRoYXQKK2V2ZXJ5dGhpbmcgaXMgcmVhZHkuICBJdCB3aWxsIHRoZW4gcmV0dXJuICJgTlVMTGAiIGluZGljYXRpbmcgdGhhdCB0aGUKK21vdW50IGhhcyBhbHJlYWR5IGhhcHBlbmVkLiAgVGhlIFZGUyBkb2Vzbid0IHRyeSB0byBtb3VudCBhbnl0aGluZyBidXQKK2ZvbGxvd3MgZG93biB0aGUgbW91bnQgdGhhdCBpcyBhbHJlYWR5IHRoZXJlLgorCitUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgc3VmZmljaWVudCBmb3Igc29tZSB1c2VycyBvZiBtb3VudCB0cmFwcyBzdWNoCithcyBORlMgd2hpY2ggY3JlYXRlcyB0cmFwcyBzbyB0aGF0IG1vdW50cG9pbnRzIG9uIHRoZSBzZXJ2ZXIgY2FuIGJlCityZWZsZWN0ZWQgb24gdGhlIGNsaWVudC4gIEhvd2V2ZXIgaXQgaXMgbm90IHN1ZmZpY2llbnQgZm9yIGF1dG9mcy4gIEFzCittb3VudGluZyBvbnRvIGEgZGlyZWN0b3J5IGlzIGNvbnNpZGVyZWQgdG8gYmUgImJleW9uZCBhIGBzdGF0YCIsIHRoZQorYXV0b21vdW50IGRhZW1vbiB3b3VsZCBub3QgYmUgYWJsZSB0byBtb3VudCBhIGZpbGVzeXN0ZW0gb24gdGhlICd0cmFwJworZGlyZWN0b3J5IHdpdGhvdXQgc29tZSB3YXkgdG8gYXZvaWQgZ2V0dGluZyBjYXVnaHQgaW4gdGhlIHRyYXAuICBGb3IKK3RoYXQgcHVycG9zZSB0aGVyZSBpcyBhbm90aGVyIGZsYWcuCisKKyoqRENBQ0hFX01BTkFHRV9UUkFOU0lUKioKKworSWYgYSBkZW50cnkgaGFzIERDQUNIRV9NQU5BR0VfVFJBTlNJVCBzZXQgdGhlbiB0d28gdmVyeSBkaWZmZXJlbnQgYnV0CityZWxhdGVkIGJlaGF2aW9ycyBhcmUgaW52b2tlZCwgYm90aCB1c2luZyB0aGUgYGRfb3AtPmRfbWFuYWdlKClgCitkZW50cnkgb3BlcmF0aW9uLgorCitGaXJzdGx5LCBiZWZvcmUgY2hlY2tpbmcgdG8gc2VlIGlmIGFueSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQgb24gdGhlCitkaXJlY3RvcnksIGRfbWFuYWdlKCkgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgYHJjdV93YWxrYCBwYXJhbWV0ZXIgc2V0Cit0byBgZmFsc2VgLiAgSXQgbWF5IHJldHVybiBvbmUgb2YgdGhyZWUgdGhpbmdzOgorCistICBBIHJldHVybiB2YWx1ZSBvZiB6ZXJvIGluZGljYXRlcyB0aGF0IHRoZXJlIGlzIG5vdGhpbmcgc3BlY2lhbAorICAgYWJvdXQgdGhpcyBkZW50cnkgYW5kIG5vcm1hbCBjaGVja3MgZm9yIG1vdW50cyBhbmQgYXV0b21vdW50cworICAgc2hvdWxkIHByb2NlZWQuCisKKyAgIGF1dG9mcyBub3JtYWxseSByZXR1cm5zIHplcm8sIGJ1dCBmaXJzdCB3YWl0cyBmb3IgYW55CisgICBleHBpcnkgKGF1dG9tYXRpYyB1bm1vdW50aW5nIG9mIHRoZSBtb3VudGVkIGZpbGVzeXN0ZW0pIHRvCisgICBjb21wbGV0ZS4gIFRoaXMgYXZvaWRzIHJhY2VzLgorCistICBBIHJldHVybiB2YWx1ZSBvZiBgLUVJU0RJUmAgdGVsbHMgdGhlIFZGUyB0byBpZ25vcmUgYW55IG1vdW50cworICAgb24gdGhlIGRpcmVjdG9yeSBhbmQgdG8gbm90IGNvbnNpZGVyIGNhbGxpbmcgYC0+ZF9hdXRvbW91bnQoKWAuCisgICBUaGlzIGVmZmVjdGl2ZWx5IGRpc2FibGVzIHRoZSAqKkRDQUNIRV9ORUVEX0FVVE9NT1VOVCoqIGZsYWcKKyAgIGNhdXNpbmcgdGhlIGRpcmVjdG9yeSBub3QgYmUgYSBtb3VudCB0cmFwIGFmdGVyIGFsbC4KKworICAgYXV0b2ZzIHJldHVybnMgdGhpcyBpZiBpdCBkZXRlY3RzIHRoYXQgdGhlIHByb2Nlc3MgcGVyZm9ybWluZyB0aGUKKyAgIGxvb2t1cCBpcyB0aGUgYXV0b21vdW50IGRhZW1vbiBhbmQgdGhhdCB0aGUgbW91bnQgaGFzIGJlZW4KKyAgIHJlcXVlc3RlZCBidXQgaGFzIG5vdCB5ZXQgY29tcGxldGVkLiAgSG93IGl0IGRldGVybWluZXMgdGhpcyBpcworICAgZGlzY3Vzc2VkIGxhdGVyLiAgVGhpcyBhbGxvd3MgdGhlIGF1dG9tb3VudCBkYWVtb24gbm90IHRvIGdldAorICAgY2F1Z2h0IGluIHRoZSBtb3VudCB0cmFwLgorCisgICBUaGVyZSBpcyBhIHN1YnRsZXR5IGhlcmUuICBJdCBpcyBwb3NzaWJsZSB0aGF0IGEgc2Vjb25kIGF1dG9mcworICAgZmlsZXN5c3RlbSBjYW4gYmUgbW91bnRlZCBiZWxvdyB0aGUgZmlyc3QgYW5kIGZvciBib3RoIG9mIHRoZW0gdG8KKyAgIGJlIG1hbmFnZWQgYnkgdGhlIHNhbWUgZGFlbW9uLiAgRm9yIHRoZSBkYWVtb24gdG8gYmUgYWJsZSB0byBtb3VudAorICAgc29tZXRoaW5nIG9uIHRoZSBzZWNvbmQgaXQgbXVzdCBiZSBhYmxlIHRvICJ3YWxrIiBkb3duIHBhc3QgdGhlCisgICBmaXJzdC4gIFRoaXMgbWVhbnMgdGhhdCBkX21hbmFnZSBjYW5ub3QgKmFsd2F5cyogcmV0dXJuIC1FSVNESVIgZm9yCisgICB0aGUgYXV0b21vdW50IGRhZW1vbi4gIEl0IG11c3Qgb25seSByZXR1cm4gaXQgd2hlbiBhIG1vdW50IGhhcworICAgYmVlbiByZXF1ZXN0ZWQsIGJ1dCBoYXMgbm90IHlldCBjb21wbGV0ZWQuCisKKyAgIGBkX21hbmFnZWAgYWxzbyByZXR1cm5zIGAtRUlTRElSYCBpZiB0aGUgZGVudHJ5IHNob3VsZG4ndCBiZSBhCisgICBtb3VudCB0cmFwLCBlaXRoZXIgYmVjYXVzZSBpdCBpcyBhIHN5bWJvbGljIGxpbmsgb3IgYmVjYXVzZSBpdCBpcworICAgbm90IGVtcHR5LgorCistICBBbnkgb3RoZXIgbmVnYXRpdmUgdmFsdWUgaXMgdHJlYXRlZCBhcyBhbiBlcnJvciBhbmQgcmV0dXJuZWQKKyAgIHRvIHRoZSBjYWxsZXIuCisKKyAgIGF1dG9mcyBjYW4gcmV0dXJuCisKKyAgIC0gLUVOT0VOVCBpZiB0aGUgYXV0b21vdW50IGRhZW1vbiBmYWlsZWQgdG8gbW91bnQgYW55dGhpbmcsCisgICAtIC1FTk9NRU0gaWYgaXQgcmFuIG91dCBvZiBtZW1vcnksCisgICAtIC1FSU5UUiBpZiBhIHNpZ25hbCBhcnJpdmVkIHdoaWxlIHdhaXRpbmcgZm9yIGV4cGlyeSB0bworICAgICBjb21wbGV0ZQorICAgLSBvciBhbnkgb3RoZXIgZXJyb3Igc2VudCBkb3duIGJ5IHRoZSBhdXRvbW91bnQgZGFlbW9uLgorCisKK1RoZSBzZWNvbmQgdXNlIGNhc2Ugb25seSBvY2N1cnMgZHVyaW5nIGFuICJSQ1Utd2FsayIgYW5kIHNvIGByY3Vfd2Fsa2AKK3dpbGwgYmUgc2V0LgorCitBbiBSQ1Utd2FsayBpcyBhIGZhc3QgYW5kIGxpZ2h0d2VpZ2h0IHByb2Nlc3MgZm9yIHdhbGtpbmcgZG93biBhCitmaWxlbmFtZSBwYXRoIChpLmUuIGl0IGlzIGxpa2UgcnVubmluZyBvbiB0aXAtdG9lcykuICBSQ1Utd2FsayBjYW5ub3QKK2NvcGUgd2l0aCBhbGwgc2l0dWF0aW9ucyBzbyB3aGVuIGl0IGZpbmRzIGEgZGlmZmljdWx0eSBpdCBmYWxscyBiYWNrCit0byAiUkVGLXdhbGsiLCB3aGljaCBpcyBzbG93ZXIgYnV0IG1vcmUgcm9idXN0LgorCitSQ1Utd2FsayB3aWxsIG5ldmVyIGNhbGwgYC0+ZF9hdXRvbW91bnRgOyB0aGUgZmlsZXN5c3RlbXMgbXVzdCBhbHJlYWR5CitiZSBtb3VudGVkIG9yIFJDVS13YWxrIGNhbm5vdCBoYW5kbGUgdGhlIHBhdGguCitUbyBkZXRlcm1pbmUgaWYgYSBtb3VudC10cmFwIGlzIHNhZmUgZm9yIFJDVS13YWxrIG1vZGUgaXQgY2FsbHMKK2AtPmRfbWFuYWdlKClgIHdpdGggYHJjdV93YWxrYCBzZXQgdG8gYHRydWVgLgorCitJbiB0aGlzIGNhc2UgYGRfbWFuYWdlKClgIG11c3QgYXZvaWQgYmxvY2tpbmcgYW5kIHNob3VsZCBhdm9pZCB0YWtpbmcKK3NwaW5sb2NrcyBpZiBhdCBhbGwgcG9zc2libGUuICBJdHMgc29sZSBwdXJwb3NlIGlzIHRvIGRldGVybWluZSBpZiBpdAord291bGQgYmUgc2FmZSB0byBmb2xsb3cgZG93biBpbnRvIGFueSBtb3VudGVkIGRpcmVjdG9yeSBhbmQgdGhlIG9ubHkKK3JlYXNvbiB0aGF0IGl0IG1pZ2h0IG5vdCBiZSBpcyBpZiBhbiBleHBpcnkgb2YgdGhlIG1vdW50IGlzCit1bmRlcndheS4KKworSW4gdGhlIGByY3Vfd2Fsa2AgY2FzZSwgYGRfbWFuYWdlKClgIGNhbm5vdCByZXR1cm4gLUVJU0RJUiB0byB0ZWxsIHRoZQorVkZTIHRoYXQgdGhpcyBpcyBhIGRpcmVjdG9yeSB0aGF0IGRvZXNuJ3QgcmVxdWlyZSBkX2F1dG9tb3VudC4gIElmCitgcmN1X3dhbGtgIHNlZXMgYSBkZW50cnkgd2l0aCBEQ0FDSEVfTkVFRF9BVVRPTU9VTlQgc2V0IGJ1dCBub3RoaW5nCittb3VudGVkLCBpdCAqd2lsbCogZmFsbCBiYWNrIHRvIFJFRi13YWxrLiAgYGRfbWFuYWdlKClgIGNhbm5vdCBtYWtlIHRoZQorVkZTIHJlbWFpbiBpbiBSQ1Utd2FsayBtb2RlLCBidXQgY2FuIG9ubHkgdGVsbCBpdCB0byBnZXQgb3V0IG9mCitSQ1Utd2FsayBtb2RlIGJ5IHJldHVybmluZyBgLUVDSElMRGAuCisKK1NvIGBkX21hbmFnZSgpYCwgd2hlbiBjYWxsZWQgd2l0aCBgcmN1X3dhbGtgIHNldCwgc2hvdWxkIGVpdGhlciByZXR1cm4KKy1FQ0hJTEQgaWYgdGhlcmUgaXMgYW55IHJlYXNvbiB0byBiZWxpZXZlIGl0IGlzIHVuc2FmZSB0byBlbmQgdGhlCittb3VudGVkIGZpbGVzeXN0ZW0sIGFuZCBvdGhlcndpc2Ugc2hvdWxkIHJldHVybiAwLgorCithdXRvZnMgd2lsbCByZXR1cm4gYC1FQ0hJTERgIGlmIGFuIGV4cGlyeSBvZiB0aGUgZmlsZXN5c3RlbSBoYXMgYmVlbgoraW5pdGlhdGVkIG9yIGlzIGJlaW5nIGNvbnNpZGVyZWQsIG90aGVyd2lzZSBpdCByZXR1cm5zIDAuCisKKworTW91bnRwb2ludCBleHBpcnkKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBWRlMgaGFzIGEgbWVjaGFuc2ltIGZvciBhdXRvbWF0aWNhbGx5IGV4cGlyaW5nIHVudXNlZCBtb3VudHMsCittdWNoIGFzIGl0IGNhbiBleHBpcmUgYW55IHVudXNlZCBkZW50cnkgaW5mb3JtYXRpb24gZnJvbSB0aGUgZGNhY2hlLgorVGhpcyBpcyBndWlkZWQgYnkgdGhlIE1OVF9TSFJJTktBQkxFIGZsYWcuICBUaGlzICBvbmx5IGFwcGxpZXMgdG8KK21vdW50cyB0aGF0IHdlcmUgY3JlYXRlZCBieSBgZF9hdXRvbW91bnQoKWAgcmV0dXJuaW5nIGEgZmlsZXN5c3RlbSB0byBiZQorbW91bnRlZC4gIEFzIGF1dG9mcyBkb2Vzbid0IHJldHVybiBzdWNoIGEgZmlsZXN5c3RlbSBidXQgbGVhdmVzIHRoZQorbW91bnRpbmcgdG8gdGhlIGF1dG9tb3VudCBkYWVtb24sIGl0IG11c3QgaW52b2x2ZSB0aGUgYXV0b21vdW50IGRhZW1vbgoraW4gdW5tb3VudGluZyBhcyB3ZWxsLiAgVGhpcyBhbHNvIG1lYW5zIHRoYXQgYXV0b2ZzIGhhcyBtb3JlIGNvbnRyb2wKK29mIGV4cGlyeS4KKworVGhlIFZGUyBhbHNvIHN1cHBvcnRzICJleHBpcnkiIG9mIG1vdW50cyB1c2luZyB0aGUgTU5UX0VYUElSRSBmbGFnIHRvCit0aGUgYHVtb3VudGAgc3lzdGVtIGNhbGwuICBVbm1vdW50aW5nIHdpdGggTU5UX0VYUElSRSB3aWxsIGZhaWwgdW5sZXNzCithIHByZXZpb3VzIGF0dGVtcHQgaGFkIGJlZW4gbWFkZSwgYW5kIHRoZSBmaWxlc3lzdGVtIGhhcyBiZWVuIGluYWN0aXZlCithbmQgdW50b3VjaGVkIHNpbmNlIHRoYXQgcHJldmlvdXMgYXR0ZW1wdC4gIGF1dG9mczQgZG9lcyBub3QgZGVwZW5kIG9uCit0aGlzIGJ1dCBoYXMgaXRzIG93biBpbnRlcm5hbCB0cmFja2luZyBvZiB3aGV0aGVyIGZpbGVzeXN0ZW1zIHdlcmUKK3JlY2VudGx5IHVzZWQuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsIG5hbWVzIGluIHRoZSBhdXRvZnMgZGlyZWN0b3J5Cit0byBleHBpcmUgc2VwYXJhdGVseS4KKworV2l0aCB2ZXJzaW9uIDQgb2YgdGhlIHByb3RvY29sLCB0aGUgYXV0b21vdW50IGRhZW1vbiBjYW4gdHJ5IHRvCit1bm1vdW50IGFueSBmaWxlc3lzdGVtcyBtb3VudGVkIG9uIHRoZSBhdXRvZnMgZmlsZXN5c3RlbSBvciByZW1vdmUgYW55CitzeW1ib2xpYyBsaW5rcyBvciBlbXB0eSBkaXJlY3RvcmllcyBhbnkgdGltZSBpdCBsaWtlcy4gIElmIHRoZSB1bm1vdW50CitvciByZW1vdmFsIGlzIHN1Y2Nlc3NmdWwgdGhlIGZpbGVzeXN0ZW0gd2lsbCBiZSByZXR1cm5lZCB0byB0aGUgc3RhdGUKK2l0IHdhcyBiZWZvcmUgdGhlIG1vdW50IG9yIGNyZWF0aW9uLCBzbyB0aGF0IGFueSBhY2Nlc3Mgb2YgdGhlIG5hbWUKK3dpbGwgdHJpZ2dlciBub3JtYWwgYXV0by1tb3VudCBwcm9jZXNzaW5nLiAgSW4gcGFydGljbGFyLCBgcm1kaXJgIGFuZAorYHVubGlua2AgZG8gbm90IGxlYXZlIG5lZ2F0aXZlIGVudHJpZXMgaW4gdGhlIGRjYWNoZSBhcyBhIG5vcm1hbAorZmlsZXN5c3RlbSB3b3VsZCwgc28gYW4gYXR0ZW1wdCB0byBhY2Nlc3MgYSByZWNlbnRseS1yZW1vdmVkIG9iamVjdCBpcworcGFzc2VkIHRvIGF1dG9mcyBmb3IgaGFuZGxpbmcuCisKK1dpdGggdmVyc2lvbiA1LCB0aGlzIGlzIG5vdCBzYWZlIGV4Y2VwdCBmb3IgdW5tb3VudGluZyBmcm9tIHRvcC1sZXZlbAorZGlyZWN0b3JpZXMuICBBcyBsb3dlci1sZXZlbCBkaXJlY3RvcmllcyBhcmUgbmV2ZXIgbW91bnQgdHJhcHMsIG90aGVyCitwcm9jZXNzZXMgd2lsbCBzZWUgYW4gZW1wdHkgZGlyZWN0b3J5IGFzIHNvb24gYXMgdGhlIGZpbGVzeXN0ZW0gaXMKK3VubW91bnRlZC4gIFNvIGl0IGlzIGdlbmVyYWxseSBzYWZlc3QgdG8gdXNlIHRoZSBhdXRvZnMgZXhwaXJ5Citwcm90b2NvbCBkZXNjcmliZWQgYmVsb3cuCisKK05vcm1hbGx5IHRoZSBkYWVtb24gb25seSB3YW50cyB0byByZW1vdmUgZW50cmllcyB3aGljaCBoYXZlbid0IGJlZW4KK3VzZWQgZm9yIGEgd2hpbGUuICBGb3IgdGhpcyBwdXJwb3NlIGF1dG9mcyBtYWludGFpbnMgYSAiYGxhc3RfdXNlZGAiCit0aW1lIHN0YW1wIG9uIGVhY2ggZGlyZWN0b3J5IG9yIHN5bWxpbmsuICBGb3Igc3ltbGlua3MgaXQgZ2VudWluZWx5Citkb2VzIHJlY29yZCB0aGUgbGFzdCB0aW1lIHRoZSBzeW1saW5rIHdhcyAidXNlZCIgb3IgZm9sbG93ZWQgdG8gZmluZAorb3V0IHdoZXJlIGl0IHBvaW50cyB0by4gIEZvciBkaXJlY3RvcmllcyB0aGUgZmllbGQgaXMgYSBzbGlnaHQKK21pc25vbWVyLiAgSXQgYWN0dWFsbHkgcmVjb3JkcyB0aGUgbGFzdCB0aW1lIHRoYXQgYXV0b2ZzIGNoZWNrZWQgaWYKK3RoZSBkaXJlY3Rvcnkgb3Igb25lIG9mIGl0cyBkZXNjZW5kZW50cyB3YXMgYnVzeSBhbmQgZm91bmQgdGhhdCBpdAord2FzLiAgVGhpcyBpcyBqdXN0IGFzIHVzZWZ1bCBhbmQgZG9lc24ndCByZXF1aXJlIHVwZGF0aW5nIHRoZSBmaWVsZCBzbworb2Z0ZW4uCisKK1RoZSBkYWVtb24gaXMgYWJsZSB0byBhc2sgYXV0b2ZzIGlmIGFueXRoaW5nIGlzIGR1ZSB0byBiZSBleHBpcmVkLAordXNpbmcgYW4gYGlvY3RsYCBhcyBkaXNjdXNzZWQgbGF0ZXIuICBGb3IgYSAqZGlyZWN0KiBtb3VudCwgYXV0b2ZzCitjb25zaWRlcnMgaWYgdGhlIGVudGlyZSBtb3VudC10cmVlIGNhbiBiZSB1bm1vdW50ZWQgb3Igbm90LiAgRm9yIGFuCisqaW5kaXJlY3QqIG1vdW50LCBhdXRvZnMgY29uc2lkZXJzIGVhY2ggb2YgdGhlIG5hbWVzIGluIHRoZSB0b3AgbGV2ZWwKK2RpcmVjdG9yeSB0byBkZXRlcm1pbmUgaWYgYW55IG9mIHRob3NlIGNhbiBiZSB1bm1vdW50ZWQgYW5kIGNsZWFuZWQKK3VwLgorCitUaGVyZSBpcyBhbiBvcHRpb24gd2l0aCBpbmRpcmVjdCBtb3VudHMgdG8gY29uc2lkZXIgZWFjaCBvZiB0aGUgbGVhdmVzCit0aGF0IGhhcyBiZWVuIG1vdW50ZWQgb24gaW5zdGVhZCBvZiBjb25zaWRlcmluZyB0aGUgdG9wLWxldmVsIG5hbWVzLgorVGhpcyBpcyBpbnRlbmRlZCBmb3IgY29tcGF0YWJpbGl0eSB3aXRoIHZlcnNpb24gNCBvZiBhdXRvZnMgYW5kIHNob3VsZAorYmUgY29uc2lkZXJlZCBhcyBkZXByZWNhdGVkLgorCitXaGVuIGF1dG9mcyBjb25zaWRlcnMgYSBkaXJlY3RvcnkgaXQgY2hlY2tzIHRoZSBgbGFzdF91c2VkYCB0aW1lIGFuZAorY29tcGFyZXMgaXQgd2l0aCB0aGUgInRpbWVvdXQiIHZhbHVlIHNldCB3aGVuIHRoZSBmaWxlc3lzdGVtIHdhcworbW91bnRlZCwgdGhvdWdoIHRoaXMgY2hlY2sgaXMgaWdub3JlZCBpbiBzb21lIGNhc2VzLiBJdCBhbHNvIGNoZWNrcyBpZgordGhlIGRpcmVjdG9yeSBvciBhbnl0aGluZyBiZWxvdyBpdCBpcyBpbiB1c2UuICBGb3Igc3ltYm9saWMgbGlua3MsCitvbmx5IHRoZSBgbGFzdF91c2VkYCB0aW1lIGlzIGV2ZXIgY29uc2lkZXJlZC4KKworSWYgYm90aCBhcHBlYXIgdG8gc3VwcG9ydCBleHBpcmluZyB0aGUgZGlyZWN0b3J5IG9yIHN5bWxpbmssIGFuIGFjdGlvbgoraXMgdGFrZW4uCisKK1RoZXJlIGFyZSB0d28gd2F5cyB0byBhc2sgYXV0b2ZzIHRvIGNvbnNpZGVyIGV4cGlyeS4gIFRoZSBmaXJzdCBpcyB0bwordXNlIHRoZSAqKkFVVE9GU19JT0NfRVhQSVJFKiogaW9jdGwuICBUaGlzIG9ubHkgd29ya3MgZm9yIGluZGlyZWN0Cittb3VudHMuICBJZiBpdCBmaW5kcyBzb21ldGhpbmcgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IHRvIGV4cGlyZSBpdCB3aWxsCityZXR1cm4gdGhlIG5hbWUgb2YgdGhhdCB0aGluZy4gIE9uY2UgYSBuYW1lIGhhcyBiZWVuIHJldHVybmVkIHRoZQorYXV0b21vdW50IGRhZW1vbiBuZWVkcyB0byB1bm1vdW50IGFueSBmaWxlc3lzdGVtcyBtb3VudGVkIGJlbG93IHRoZQorbmFtZSBub3JtYWxseS4gIEFzIGRlc2NyaWJlZCBhYm92ZSwgdGhpcyBpcyB1bnNhZmUgZm9yIG5vbi10b3BsZXZlbAorbW91bnRzIGluIGEgdmVyc2lvbi01IGF1dG9mcy4gIEZvciB0aGlzIHJlYXNvbiB0aGUgY3VycmVudCBgYXV0b21vdW50ZGAKK2RvZXMgbm90IHVzZSB0aGlzIGlvY3RsLgorCitUaGUgc2Vjb25kIG1lY2hhbmlzbSB1c2VzIGVpdGhlciB0aGUgKipBVVRPRlNfREVWX0lPQ1RMX0VYUElSRV9DTUQqKiBvcgordGhlICoqQVVUT0ZTX0lPQ19FWFBJUkVfTVVMVEkqKiBpb2N0bC4gIFRoaXMgd2lsbCB3b3JrIGZvciBib3RoIGRpcmVjdCBhbmQKK2luZGlyZWN0IG1vdW50cy4gIElmIGl0IHNlbGVjdHMgYW4gb2JqZWN0IHRvIGV4cGlyZSwgaXQgd2lsbCBub3RpZnkKK3RoZSBkYWVtb24gdXNpbmcgdGhlIG5vdGlmaWNhdGlvbiBtZWNoYW5pc20gZGVzY3JpYmVkIGJlbG93LiAgVGhpcword2lsbCBibG9jayB1bnRpbCB0aGUgZGFlbW9uIGFja25vd2xlZGdlcyB0aGUgZXhwaXJ5IG5vdGlmaWNhdGlvbi4KK1RoaXMgaW1wbGllcyB0aGF0IHRoZSAiYEVYUElSRWAiIGlvY3RsIG11c3QgYmUgc2VudCBmcm9tIGEgZGlmZmVyZW50Cit0aHJlYWQgdGhhbiB0aGUgb25lIHdoaWNoIGhhbmRsZXMgbm90aWZpY2F0aW9uLgorCitXaGlsZSB0aGUgaW9jdGwgaXMgYmxvY2tpbmcsIHRoZSBlbnRyeSBpcyBtYXJrZWQgYXMgImV4cGlyaW5nIiBhbmQKK2BkX21hbmFnZWAgd2lsbCBibG9jayB1bnRpbCB0aGUgZGFlbW9uIGFmZmlybXMgdGhhdCB0aGUgdW5tb3VudCBoYXMKK2NvbXBsZXRlZCAodG9nZXRoZXIgd2l0aCByZW1vdmluZyBhbnkgZGlyZWN0b3JpZXMgdGhhdCBtaWdodCBoYXZlIGJlZW4KK25lY2Vzc2FyeSksIG9yIGhhcyBiZWVuIGFib3J0ZWQuCisKK0NvbW11bmljYXRpbmcgd2l0aCBhdXRvZnM6IGRldGVjdGluZyB0aGUgZGFlbW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGVyZSBhcmUgc2V2ZXJhbCBmb3JtcyBvZiBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIGF1dG9tb3VudCBkYWVtb24KK2FuZCB0aGUgZmlsZXN5c3RlbS4gIEFzIHdlIGhhdmUgYWxyZWFkeSBzZWVuLCB0aGUgZGFlbW9uIGNhbiBjcmVhdGUgYW5kCityZW1vdmUgZGlyZWN0b3JpZXMgYW5kIHN5bWxpbmtzIHVzaW5nIG5vcm1hbCBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuCithdXRvZnMga25vd3Mgd2hldGhlciBhIHByb2Nlc3MgcmVxdWVzdGluZyBzb21lIG9wZXJhdGlvbiBpcyB0aGUgZGFlbW9uCitvciBub3QgYmFzZWQgb24gaXRzIHByb2Nlc3MtZ3JvdXAgaWQgbnVtYmVyIChzZWUgZ2V0cGdpZCgxKSkuCisKK1doZW4gYW4gYXV0b2ZzIGZpbGVzeXN0ZW0gaXQgbW91bnRlZCB0aGUgcGdpZCBvZiB0aGUgbW91bnRpbmcKK3Byb2Nlc3NlcyBpcyByZWNvcmRlZCB1bmxlc3MgdGhlICJwZ3JwPSIgb3B0aW9uIGlzIGdpdmVuLCBpbiB3aGljaAorY2FzZSB0aGF0IG51bWJlciBpcyByZWNvcmRlZCBpbnN0ZWFkLiAgQW55IHJlcXVlc3QgYXJyaXZpbmcgZnJvbSBhCitwcm9jZXNzIGluIHRoYXQgcHJvY2VzcyBncm91cCBpcyBjb25zaWRlcmVkIHRvIGNvbWUgZnJvbSB0aGUgZGFlbW9uLgorSWYgdGhlIGRhZW1vbiBldmVyIGhhcyB0byBiZSBzdG9wcGVkIGFuZCByZXN0YXJ0ZWQgYSBuZXcgcGdpZCBjYW4gYmUKK3Byb3ZpZGVkIHRocm91Z2ggYW4gaW9jdGwgYXMgd2lsbCBiZSBkZXNjcmliZWQgYmVsb3cuCisKK0NvbW11bmljYXRpbmcgd2l0aCBhdXRvZnM6IHRoZSBldmVudCBwaXBlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaGVuIGFuIGF1dG9mcyBmaWxlc3lzdGVtIGlzIG1vdW50ZWQsIHRoZSAnd3JpdGUnIGVuZCBvZiBhIHBpcGUgbXVzdAorYmUgcGFzc2VkIHVzaW5nIHRoZSAnZmQ9JyBtb3VudCBvcHRpb24uICBhdXRvZnMgd2lsbCB3cml0ZQorbm90aWZpY2F0aW9uIG1lc3NhZ2VzIHRvIHRoaXMgcGlwZSBmb3IgdGhlIGRhZW1vbiB0byByZXNwb25kIHRvLgorRm9yIHZlcnNpb24gNSwgdGhlIGZvcm1hdCBvZiB0aGUgbWVzc2FnZSBpczoKKworICAgICAgICBzdHJ1Y3QgYXV0b2ZzX3Y1X3BhY2tldCB7CisgICAgICAgICAgICAgICAgaW50IHByb3RvX3ZlcnNpb247ICAgICAgICAgICAgICAgIC8qIFByb3RvY29sIHZlcnNpb24gKi8KKyAgICAgICAgICAgICAgICBpbnQgdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAvKiBUeXBlIG9mIHBhY2tldCAqLworICAgICAgICAgICAgICAgIGF1dG9mc193cXRfdCB3YWl0X3F1ZXVlX3Rva2VuOworICAgICAgICAgICAgICAgIF9fdTMyIGRldjsKKyAgICAgICAgICAgICAgICBfX3U2NCBpbm87CisgICAgICAgICAgICAgICAgX191MzIgdWlkOworICAgICAgICAgICAgICAgIF9fdTMyIGdpZDsKKyAgICAgICAgICAgICAgICBfX3UzMiBwaWQ7CisgICAgICAgICAgICAgICAgX191MzIgdGdpZDsKKyAgICAgICAgICAgICAgICBfX3UzMiBsZW47CisgICAgICAgICAgICAgICAgY2hhciBuYW1lW05BTUVfTUFYKzFdOworICAgICAgICB9OworCit3aGVyZSB0aGUgdHlwZSBpcyBvbmUgb2YKKworICAgICAgICBhdXRvZnNfcHR5cGVfbWlzc2luZ19pbmRpcmVjdAorICAgICAgICBhdXRvZnNfcHR5cGVfZXhwaXJlX2luZGlyZWN0CisgICAgICAgIGF1dG9mc19wdHlwZV9taXNzaW5nX2RpcmVjdAorICAgICAgICBhdXRvZnNfcHR5cGVfZXhwaXJlX2RpcmVjdAorCitzbyBtZXNzYWdlcyBjYW4gaW5kaWNhdGUgdGhhdCBhIG5hbWUgaXMgbWlzc2luZyAoc29tZXRoaW5nIHRyaWVkIHRvCithY2Nlc3MgaXQgYnV0IGl0IGlzbid0IHRoZXJlKSBvciB0aGF0IGl0IGhhcyBiZWVuIHNlbGVjdGVkIGZvciBleHBpcnkuCisKK1RoZSBwaXBlIHdpbGwgYmUgc2V0IHRvICJwYWNrZXQgbW9kZSIgKGVxdWl2YWxlbnQgdG8gcGFzc2luZworYE9fRElSRUNUYCkgdG8gX3BpcGUyKDIpXyBzbyB0aGF0IGEgcmVhZCBmcm9tIHRoZSBwaXBlIHdpbGwgcmV0dXJuIGF0Cittb3N0IG9uZSBwYWNrZXQsIGFuZCBhbnkgdW5yZWFkIHBvcnRpb24gb2YgYSBwYWNrZXQgd2lsbCBiZSBkaXNjYXJkZWQuCisKK1RoZSBgd2FpdF9xdWV1ZV90b2tlbmAgaXMgYSB1bmlxdWUgbnVtYmVyIHdoaWNoIGNhbiBpZGVudGlmeSBhCitwYXJ0aWN1bGFyIHJlcXVlc3QgdG8gYmUgYWNrbm93bGVkZ2VkLiAgV2hlbiBhIG1lc3NhZ2UgaXMgc2VudCBvdmVyCit0aGUgcGlwZSB0aGUgYWZmZWN0ZWQgZGVudHJ5IGlzIG1hcmtlZCBhcyBlaXRoZXIgImFjdGl2ZSIgb3IKKyJleHBpcmluZyIgYW5kIG90aGVyIGFjY2Vzc2VzIHRvIGl0IGJsb2NrIHVudGlsIHRoZSBtZXNzYWdlIGlzCithY2tub3dsZWRnZWQgdXNpbmcgb25lIG9mIHRoZSBpb2N0bHMgYmVsb3cgYW5kIHRoZSByZWxldmFudAorYHdhaXRfcXVldWVfdG9rZW5gLgorCitDb21tdW5pY2F0aW5nIHdpdGggYXV0b2ZzOiByb290IGRpcmVjdG9yeSBpb2N0bHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgcm9vdCBkaXJlY3Rvcnkgb2YgYW4gYXV0b2ZzIGZpbGVzeXN0ZW0gd2lsbCByZXNwb25kIHRvIGEgbnVtYmVyIG9mCitpb2N0bHMuICAgVGhlIHByb2Nlc3MgaXNzdWluZyB0aGUgaW9jdGwgbXVzdCBoYXZlIHRoZSBDQVBfU1lTX0FETUlOCitjYXBhYmlsaXR5LCBvciBtdXN0IGJlIHRoZSBhdXRvbW91bnQgZGFlbW9uLgorCitUaGUgYXZhaWxhYmxlIGlvY3RsIGNvbW1hbmRzIGFyZToKKworLSAqKkFVVE9GU19JT0NfUkVBRFkqKjogYSBub3RpZmljYXRpb24gaGFzIGJlZW4gaGFuZGxlZC4gIFRoZSBhcmd1bWVudAorICAgIHRvIHRoZSBpb2N0bCBjb21tYW5kIGlzIHRoZSAid2FpdF9xdWV1ZV90b2tlbiIgbnVtYmVyCisgICAgY29ycmVzcG9uZGluZyB0byB0aGUgbm90aWZpY2F0aW9uIGJlaW5nIGFja25vd2xlZGdlZC4KKy0gKipBVVRPRlNfSU9DX0ZBSUwqKjogc2ltaWxhciB0byBhYm92ZSwgYnV0IGluZGljYXRlcyBmYWlsdXJlIHdpdGgKKyAgICB0aGUgZXJyb3IgY29kZSBgRU5PRU5UYC4KKy0gKipBVVRPRlNfSU9DX0NBVEFUT05JQyoqOiBDYXVzZXMgdGhlIGF1dG9mcyB0byBlbnRlciAiY2F0YXRvbmljIgorICAgIG1vZGUgbWVhbmluZyB0aGF0IGl0IHN0b3BzIHNlbmRpbmcgbm90aWZpY2F0aW9ucyB0byB0aGUgZGFlbW9uLgorICAgIFRoaXMgbW9kZSBpcyBhbHNvIGVudGVyZWQgaWYgYSB3cml0ZSB0byB0aGUgcGlwZSBmYWlscy4KKy0gKipBVVRPRlNfSU9DX1BST1RPVkVSKio6ICBUaGlzIHJldHVybnMgdGhlIHByb3RvY29sIHZlcnNpb24gaW4gdXNlLgorLSAqKkFVVE9GU19JT0NfUFJPVE9TVUJWRVIqKjogUmV0dXJucyB0aGUgcHJvdG9jb2wgc3ViLXZlcnNpb24gd2hpY2gKKyAgICBpcyByZWFsbHkgYSB2ZXJzaW9uIG51bWJlciBmb3IgdGhlIGltcGxlbWVudGF0aW9uLiAgSXQgaXMKKyAgICBjdXJyZW50bHkgMi4KKy0gKipBVVRPRlNfSU9DX1NFVFRJTUVPVVQqKjogIFRoaXMgcGFzc2VzIGEgcG9pbnRlciB0byBhbiB1bnNpZ25lZAorICAgIGxvbmcuICBUaGUgdmFsdWUgaXMgdXNlZCB0byBzZXQgdGhlIHRpbWVvdXQgZm9yIGV4cGlyeSwgYW5kCisgICAgdGhlIGN1cnJlbnQgdGltZW91dCB2YWx1ZSBpcyBzdG9yZWQgYmFjayB0aHJvdWdoIHRoZSBwb2ludGVyLgorLSAqKkFVVE9GU19JT0NfQVNLVU1PVU5UKio6ICBSZXR1cm5zLCBpbiB0aGUgcG9pbnRlZC10byBgaW50YCwgMSBpZgorICAgIHRoZSBmaWxlc3lzdGVtIGNvdWxkIGJlIHVubW91bnRlZC4gIFRoaXMgaXMgb25seSBhIGhpbnQgYXMKKyAgICB0aGUgc2l0dWF0aW9uIGNvdWxkIGNoYW5nZSBhdCBhbnkgaW5zdGFudC4gIFRoaXMgY2FsbCBjYW4gYmUKKyAgICB1c2UgdG8gYXZvaWQgYSBtb3JlIGV4cGVuc2l2ZSBmdWxsIHVubW91bnQgYXR0ZW1wdC4KKy0gKipBVVRPRlNfSU9DX0VYUElSRSoqOiBhcyBkZXNjcmliZWQgYWJvdmUsIHRoaXMgYXNrcyBpZiB0aGVyZSBpcworICAgIGFueXRoaW5nIHN1aXRhYmxlIHRvIGV4cGlyZS4gIEEgcG9pbnRlciB0byBhIHBhY2tldDoKKworICAgICAgICBzdHJ1Y3QgYXV0b2ZzX3BhY2tldF9leHBpcmVfbXVsdGkgeworICAgICAgICAgICAgICAgIGludCBwcm90b192ZXJzaW9uOyAgICAgICAgICAgICAgLyogUHJvdG9jb2wgdmVyc2lvbiAqLworICAgICAgICAgICAgICAgIGludCB0eXBlOyAgICAgICAgICAgICAgICAgICAgICAgLyogVHlwZSBvZiBwYWNrZXQgKi8KKyAgICAgICAgICAgICAgICBhdXRvZnNfd3F0X3Qgd2FpdF9xdWV1ZV90b2tlbjsKKyAgICAgICAgICAgICAgICBpbnQgbGVuOworICAgICAgICAgICAgICAgIGNoYXIgbmFtZVtOQU1FX01BWCsxXTsKKyAgICAgICAgfTsKKworICAgICBpcyByZXF1aXJlZC4gIFRoaXMgaXMgZmlsbGVkIGluIHdpdGggdGhlIG5hbWUgb2Ygc29tZXRoaW5nCisgICAgIHRoYXQgY2FuIGJlIHVubW91bnRlZCBvciByZW1vdmVkLiAgSWYgbm90aGluZyBjYW4gYmUgZXhwaXJlZCwKKyAgICAgYGVycm5vYCBpcyBzZXQgdG8gYEVBR0FJTmAuICBFdmVuIHRob3VnaCBhIGB3YWl0X3F1ZXVlX3Rva2VuYAorICAgICBpcyBwcmVzZW50IGluIHRoZSBzdHJ1Y3R1cmUsIG5vICJ3YWl0IHF1ZXVlIiBpcyBlc3RhYmxpc2hlZAorICAgICBhbmQgbm8gYWNrbm93bGVkZ21lbnQgaXMgbmVlZGVkLgorLSAqKkFVVE9GU19JT0NfRVhQSVJFX01VTFRJKio6ICBUaGlzIGlzIHNpbWlsYXIgdG8KKyAgICAgKipBVVRPRlNfSU9DX0VYUElSRSoqIGV4Y2VwdCB0aGF0IGl0IGNhdXNlcyBub3RpZmljYXRpb24gdG8gYmUKKyAgICAgc2VudCB0byB0aGUgZGFlbW9uLCBhbmQgaXQgYmxvY2tzIHVudGlsIHRoZSBkYWVtb24gYWNrbm93bGVkZ2VzLgorICAgICBUaGUgYXJndW1lbnQgaXMgYW4gaW50ZWdlciB3aGljaCBjYW4gY29udGFpbiB0d28gZGlmZmVyZW50IGZsYWdzLgorCisgICAgICoqQVVUT0ZTX0VYUF9JTU1FRElBVEUqKiBjYXVzZXMgYGxhc3RfdXNlZGAgdGltZSB0byBiZSBpZ25vcmVkCisgICAgIGFuZCBvYmplY3RzIGFyZSBleHBpcmVkIGlmIHRoZSBhcmUgbm90IGluIHVzZS4KKworICAgICAqKkFVVE9GU19FWFBfTEVBVkVTKiogd2lsbCBzZWxlY3QgYSBsZWFmIHJhdGhlciB0aGFuIGEgdG9wLWxldmVsCisgICAgIG5hbWUgdG8gZXhwaXJlLiAgVGhpcyBpcyBvbmx5IHNhZmUgd2hlbiAqbWF4cHJvdG8qIGlzIDQuCisKK0NvbW11bmljYXRpbmcgd2l0aCBhdXRvZnM6IGNoYXItZGV2aWNlIGlvY3RscworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0l0IGlzIG5vdCBhbHdheXMgcG9zc2libGUgdG8gb3BlbiB0aGUgcm9vdCBvZiBhbiBhdXRvZnMgZmlsZXN5c3RlbSwKK3BhcnRpY3VsYXJseSBhICpkaXJlY3QqIG1vdW50ZWQgZmlsZXN5c3RlbS4gIElmIHRoZSBhdXRvbW91bnQgZGFlbW9uCitpcyByZXN0YXJ0ZWQgdGhlcmUgaXMgbm8gd2F5IGZvciBpdCB0byByZWdhaW4gY29udHJvbCBvZiBleGlzdGluZworbW91bnRzIHVzaW5nIGFueSBvZiB0aGUgYWJvdmUgY29tbXVuaWNhdGlvbiBjaGFubmVscy4gIFRvIGFkZHJlc3MgdGhpcworbmVlZCB0aGVyZSBpcyBhICJtaXNjZWxsYW5lb3VzIiBjaGFyYWN0ZXIgZGV2aWNlIChtYWpvciAxMCwgbWlub3IgMjM1KQord2hpY2ggY2FuIGJlIHVzZWQgdG8gY29tbXVuaWNhdGUgZGlyZWN0bHkgd2l0aCB0aGUgYXV0b2ZzIGZpbGVzeXN0ZW0uCitJdCByZXF1aXJlcyBDQVBfU1lTX0FETUlOIGZvciBhY2Nlc3MuCisKK1RoZSBgaW9jdGxgcyB0aGF0IGNhbiBiZSB1c2VkIG9uIHRoaXMgZGV2aWNlIGFyZSBkZXNjcmliZWQgaW4gYSBzZXBhcmF0ZQorZG9jdW1lbnQgYGF1dG9mczQtbW91bnQtY29udHJvbC50eHRgLCBhbmQgYXJlIHN1bW1hcml6ZWQgYnJpZWZseSBoZXJlLgorRWFjaCBpb2N0bCBpcyBwYXNzZWQgYSBwb2ludGVyIHRvIGFuIGBhdXRvZnNfZGV2X2lvY3RsYCBzdHJ1Y3R1cmU6CisKKyAgICAgICAgc3RydWN0IGF1dG9mc19kZXZfaW9jdGwgeworICAgICAgICAgICAgICAgIF9fdTMyIHZlcl9tYWpvcjsKKyAgICAgICAgICAgICAgICBfX3UzMiB2ZXJfbWlub3I7CisgICAgICAgICAgICAgICAgX191MzIgc2l6ZTsgICAgICAgICAgICAgLyogdG90YWwgc2l6ZSBvZiBkYXRhIHBhc3NlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGluY2x1ZGluZyB0aGlzIHN0cnVjdCAqLworICAgICAgICAgICAgICAgIF9fczMyIGlvY3RsZmQ7ICAgICAgICAgIC8qIGF1dG9tb3VudCBjb21tYW5kIGZkICovCisKKyAgICAgICAgICAgICAgICBfX3UzMiBhcmcxOyAgICAgICAgICAgICAvKiBDb21tYW5kIHBhcmFtZXRlcnMgKi8KKyAgICAgICAgICAgICAgICBfX3UzMiBhcmcyOworCisgICAgICAgICAgICAgICAgY2hhciBwYXRoWzBdOworICAgICAgICB9OworCitGb3IgdGhlICoqT1BFTl9NT1VOVCoqIGFuZCAqKklTX01PVU5UUE9JTlQqKiBjb21tYW5kcywgdGhlIHRhcmdldAorZmlsZXN5c3RlbSBpcyBpZGVudGlmaWVkIGJ5IHRoZSBgcGF0aGAuICBBbGwgb3RoZXIgY29tbWFuZHMgaWRlbnRpZnkKK3RoZSBmaWxlc3lzdGVtIGJ5IHRoZSBgaW9jdGxmZGAgd2hpY2ggaXMgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiBvbiB0aGUKK3Jvb3QsIGFuZCB3aGljaCBjYW4gYmUgcmV0dXJuZWQgYnkgKipPUEVOX01PVU5UKiouCisKK1RoZSBgdmVyX21ham9yYCBhbmQgYHZlcl9taW5vcmAgYXJlIGluL291dCBwYXJhbWV0ZXJzIHdoaWNoIGNoZWNrIHRoYXQKK3RoZSByZXF1ZXN0ZWQgdmVyc2lvbiBpcyBzdXBwb3J0ZWQsIGFuZCByZXBvcnQgdGhlIG1heGltdW0gdmVyc2lvbgordGhhdCB0aGUga2VybmVsIG1vZHVsZSBjYW4gc3VwcG9ydC4KKworQ29tbWFuZHMgYXJlOgorCistICoqQVVUT0ZTX0RFVl9JT0NUTF9WRVJTSU9OX0NNRCoqOiBkb2VzIG5vdGhpbmcsIGV4Y2VwdCB2YWxpZGF0ZSBhbmQKKyAgICBzZXQgdmVyc2lvbiBudW1iZXJzLgorLSAqKkFVVE9GU19ERVZfSU9DVExfT1BFTk1PVU5UX0NNRCoqOiByZXR1cm4gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IKKyAgICBvbiB0aGUgcm9vdCBvZiBhbiBhdXRvZnMgZmlsZXN5c3RlbS4gIFRoZSBmaWxlc3lzdGVtIGlzIGlkZW50aWZpZWQKKyAgICBieSBuYW1lIGFuZCBkZXZpY2UgbnVtYmVyLCB3aGljaCBpcyBzdG9yZWQgaW4gYGFyZzFgLiAgRGV2aWNlCisgICAgbnVtYmVycyBmb3IgZXhpc3RpbmcgZmlsZXN5c3RlbXMgY2FuIGJlIGZvdW5kIGluCisgICAgYC9wcm9jL3NlbGYvbW91bnRpbmZvYC4KKy0gKipBVVRPRlNfREVWX0lPQ1RMX0NMT1NFTU9VTlRfQ01EKio6IHNhbWUgYXMgYGNsb3NlKGlvY3RsZmQpYC4KKy0gKipBVVRPRlNfREVWX0lPQ1RMX1NFVFBJUEVGRF9DTUQqKjogaWYgdGhlICBmaWxlc3lzdGVtIGlzIGluCisgICAgY2F0YXRvbmljIG1vZGUsIHRoaXMgY2FuIHByb3ZpZGUgdGhlIHdyaXRlIGVuZCBvZiBhIG5ldyBwaXBlCisgICAgaW4gYGFyZzFgIHRvIHJlLWVzdGFibGlzaCBjb21tdW5pY2F0aW9uIHdpdGggYSBkYWVtb24uICBUaGUKKyAgICBwcm9jZXNzIGdyb3VwIG9mIHRoZSBjYWxsaW5nIHByb2Nlc3MgaXMgdXNlZCB0byBpZGVudGlmeSB0aGUKKyAgICBkYWVtb24uCistICoqQVVUT0ZTX0RFVl9JT0NUTF9SRVFVRVNURVJfQ01EKio6IGBwYXRoYCBzaG91bGQgYmUgYQorICAgIG5hbWUgd2l0aGluIHRoZSBmaWxlc3lzdGVtIHRoYXQgaGFzIGJlZW4gYXV0by1tb3VudGVkIG9uLgorICAgIGFyZzEgaXMgdGhlIGRldiBudW1iZXIgb2YgdGhlIHVuZGVybHlpbmcgYXV0b2ZzLiAgT24gc3VjY2Vzc2Z1bAorICAgIHJldHVybiwgYGFyZzFgIGFuZCBgYXJnMmAgd2lsbCBiZSB0aGUgVUlEIGFuZCBHSUQgb2YgdGhlIHByb2Nlc3MKKyAgICB3aGljaCB0cmlnZ2VyZWQgdGhhdCBtb3VudC4KKworLSAqKkFVVE9GU19ERVZfSU9DVExfSVNNT1VOVFBPSU5UX0NNRCoqOiBDaGVjayBpZiBwYXRoIGlzIGEKKyAgICBtb3VudHBvaW50IG9mIGEgcGFydGljdWxhciB0eXBlIC0gc2VlIHNlcGFyYXRlIGRvY3VtZW50YXRpb24gZm9yCisgICAgZGV0YWlscy4KKworLSAqKkFVVE9GU19ERVZfSU9DVExfUFJPVE9WRVJfQ01EKio6CistICoqQVVUT0ZTX0RFVl9JT0NUTF9QUk9UT1NVQlZFUl9DTUQqKjoKKy0gKipBVVRPRlNfREVWX0lPQ1RMX1JFQURZX0NNRCoqOgorLSAqKkFVVE9GU19ERVZfSU9DVExfRkFJTF9DTUQqKjoKKy0gKipBVVRPRlNfREVWX0lPQ1RMX0NBVEFUT05JQ19DTUQqKjoKKy0gKipBVVRPRlNfREVWX0lPQ1RMX1RJTUVPVVRfQ01EKio6CistICoqQVVUT0ZTX0RFVl9JT0NUTF9FWFBJUkVfQ01EKio6CistICoqQVVUT0ZTX0RFVl9JT0NUTF9BU0tVTU9VTlRfQ01EKio6ICBUaGVzZSBhbGwgaGF2ZSB0aGUgc2FtZQorICAgIGZ1bmN0aW9uIGFzIHRoZSBzaW1pbGFybHkgbmFtZWQgKipBVVRPRlNfSU9DKiogaW9jdGxzLCBleGNlcHQKKyAgICB0aGF0ICoqRkFJTCoqIGNhbiBiZSBnaXZlbiBhbiBleHBsaWNpdCBlcnJvciBudW1iZXIgaW4gYGFyZzFgCisgICAgaW5zdGVhZCBvZiBhc3N1bWluZyBgRU5PRU5UYCwgYW5kIHRoaXMgKipFWFBJUkUqKiBjb21tYW5kCisgICAgY29ycmVzcG9uZHMgdG8gKipBVVRPRlNfSU9DX0VYUElSRV9NVUxUSSoqLgorCitDYXRhdG9uaWMgbW9kZQorLS0tLS0tLS0tLS0tLS0KKworQXMgbWVudGlvbmVkLCBhbiBhdXRvZnMgbW91bnQgY2FuIGVudGVyICJjYXRhdG9uaWMiIG1vZGUuICBUaGlzCitoYXBwZW5zIGlmIGEgd3JpdGUgdG8gdGhlIG5vdGlmaWNhdGlvbiBwaXBlIGZhaWxzLCBvciBpZiBpdCBpcworZXhwbGljaXRseSByZXF1ZXN0ZWQgYnkgYW4gYGlvY3RsYC4KKworV2hlbiBlbnRlcmluZyBjYXRhdG9uaWMgbW9kZSwgdGhlIHBpcGUgaXMgY2xvc2VkIGFuZCBhbnkgcGVuZGluZworbm90aWZpY2F0aW9ucyBhcmUgYWNrbm93bGVkZ2VkIHdpdGggdGhlIGVycm9yIGBFTk9FTlRgLgorCitPbmNlIGluIGNhdGF0b25pYyBtb2RlIGF0dGVtcHRzIHRvIGFjY2VzcyBub24tZXhpc3RpbmcgbmFtZXMgd2lsbAorcmVzdWx0IGluIGBFTk9FTlRgIHdoaWxlIGF0dGVtcHRzIHRvIGFjY2VzcyBleGlzdGluZyBkaXJlY3RvcmllcyB3aWxsCitiZSB0cmVhdGVkIGluIHRoZSBzYW1lIHdheSBhcyBpZiB0aGV5IGNhbWUgZnJvbSB0aGUgZGFlbW9uLCBzbyBtb3VudAordHJhcHMgd2lsbCBub3QgZmlyZS4KKworV2hlbiB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkIGEgX3VpZF8gYW5kIF9naWRfIGNhbiBiZSBnaXZlbiB3aGljaAorc2V0IHRoZSBvd25lcnNoaXAgb2YgZGlyZWN0b3JpZXMgYW5kIHN5bWJvbGljIGxpbmtzLiAgV2hlbiB0aGUKK2ZpbGVzeXN0ZW0gaXMgaW4gY2F0YXRvbmljIG1vZGUsIGFueSBwcm9jZXNzIHdpdGggYSBtYXRjaGluZyBVSUQgY2FuCitjcmVhdGUgZGlyZWN0b3JpZXMgb3Igc3ltbGlua3MgaW4gdGhlIHJvb3QgZGlyZWN0b3J5LCBidXQgbm90IGluIG90aGVyCitkaXJlY3Rvcmllcy4KKworQ2F0YXRvbmljIG1vZGUgY2FuIG9ubHkgYmUgbGVmdCB2aWEgdGhlCisqKkFVVE9GU19ERVZfSU9DVExfT1BFTk1PVU5UX0NNRCoqIGlvY3RsIG9uIHRoZSBgL2Rldi9hdXRvZnNgLgorCithdXRvZnMsIG5hbWUgc3BhY2VzLCBhbmQgc2hhcmVkIG1vdW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2l0aCBiaW5kIG1vdW50cyBhbmQgbmFtZSBzcGFjZXMgaXQgaXMgcG9zc2libGUgZm9yIGFuIGF1dG9mcworZmlsZXN5c3RlbSB0byBhcHBlYXIgYXQgbXVsdGlwbGUgcGxhY2VzIGluIG9uZSBvciBtb3JlIGZpbGVzeXN0ZW0KK25hbWUgc3BhY2VzLiAgRm9yIHRoaXMgdG8gd29yayBzZW5zaWJseSwgdGhlIGF1dG9mcyBmaWxlc3lzdGVtIHNob3VsZAorYWx3YXlzIGJlIG1vdW50ZWQgInNoYXJlZCIuIGUuZy4KKworPiBgbW91bnQgLS1tYWtlLXNoYXJlZCAvYXV0b2ZzL21vdW50L3BvaW50YAorCitUaGUgYXV0b21vdW50IGRhZW1vbiBpcyBvbmx5IGFibGUgdG8gbWFuZ2UgYSBzaW5nbGUgbW91bnQgbG9jYXRpb24gZm9yCithbiBhdXRvZnMgZmlsZXN5c3RlbSBhbmQgaWYgbW91bnRzIG9uIHRoYXQgYXJlIG5vdCAnc2hhcmVkJywgb3RoZXIKK2xvY2F0aW9ucyB3aWxsIG5vdCBiZWhhdmUgYXMgZXhwZWN0ZWQuICBJbiBwYXJ0aWN1bGFyIGFjY2VzcyB0byB0aG9zZQorb3RoZXIgbG9jYXRpb25zIHdpbGwgbGlrZWx5IHJlc3VsdCBpbiB0aGUgYEVMT09QYCBlcnJvcgorCis+IFRvbyBtYW55IGxldmVscyBvZiBzeW1ib2xpYyBsaW5rcwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9hdXRvbW91bnQtc3VwcG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2F1dG9tb3VudC1zdXBwb3J0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWI3NjJlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9hdXRvbW91bnQtc3VwcG9ydC50eHQKQEAgLTAsMCArMSw5MyBAQAorU3VwcG9ydCBpcyBhdmFpbGFibGUgZm9yIGZpbGVzeXN0ZW1zIHRoYXQgd2lzaCB0byBkbyBhdXRvbW91bnRpbmcKK3N1cHBvcnQgKHN1Y2ggYXMga0FGUyB3aGljaCBjYW4gYmUgZm91bmQgaW4gZnMvYWZzLyBhbmQgTkZTIGluCitmcy9uZnMvKS4gVGhpcyBmYWNpbGl0eSBpbmNsdWRlcyBhbGxvd2luZyBpbi1rZXJuZWwgbW91bnRzIHRvIGJlCitwZXJmb3JtZWQgYW5kIG1vdW50cG9pbnQgZGVncmFkYXRpb24gdG8gYmUgcmVxdWVzdGVkLiBUaGUgbGF0dGVyIGNhbgorYWxzbyBiZSByZXF1ZXN0ZWQgYnkgdXNlcnNwYWNlLgorCisKKz09PT09PT09PT09PT09PT09PT09PT0KK0lOLUtFUk5FTCBBVVRPTU9VTlRJTkcKKz09PT09PT09PT09PT09PT09PT09PT0KKworU2VlIHNlY3Rpb24gIk1vdW50IFRyYXBzIiBvZiAgRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9hdXRvZnM0LnR4dAorCitUaGVuIGZyb20gdXNlcnNwYWNlLCB5b3UgY2FuIGp1c3QgZG8gc29tZXRoaW5nIGxpa2U6CisKKwlbcm9vdEBhbmRyb21lZGEgcm9vdF0jIG1vdW50IC10IGFmcyBcI3Jvb3QuYWZzLiAvYWZzCisJW3Jvb3RAYW5kcm9tZWRhIHJvb3RdIyBscyAvYWZzCisJYXNkICBjYW1icmlkZ2UgIGNhbWJyaWRnZS5yZWRoYXQuY29tICBncmFuZC5jZW50cmFsLm9yZworCVtyb290QGFuZHJvbWVkYSByb290XSMgbHMgL2Fmcy9jYW1icmlkZ2UKKwlhZnNkb2MKKwlbcm9vdEBhbmRyb21lZGEgcm9vdF0jIGxzIC9hZnMvY2FtYnJpZGdlL2Fmc2RvYy8KKwlDaGFuZ2VMb2cgIGh0bWwgIExJQ0VOU0UgIHBkZiAgUkVMTk9URVMtMS4yLjIKKworQW5kIHRoZW4gaWYgeW91IGxvb2sgaW4gdGhlIG1vdW50cG9pbnQgY2F0YWxvZ3VlLCB5b3UnbGwgc2VlIHNvbWV0aGluZyBsaWtlOgorCisJW3Jvb3RAYW5kcm9tZWRhIHJvb3RdIyBjYXQgL3Byb2MvbW91bnRzCisJLi4uCisJI3Jvb3QuYWZzLiAvYWZzIGFmcyBydyAwIDAKKwkjcm9vdC5jZWxsLiAvYWZzL2NhbWJyaWRnZS5yZWRoYXQuY29tIGFmcyBydyAwIDAKKwkjYWZzZG9jLiAvYWZzL2NhbWJyaWRnZS5yZWRoYXQuY29tL2Fmc2RvYyBhZnMgcncgMCAwCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09CitBVVRPTUFUSUMgTU9VTlRQT0lOVCBFWFBJUlkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBdXRvbWF0aWMgZXhwaXJhdGlvbiBvZiBtb3VudHBvaW50cyBpcyBlYXN5LCBwcm92aWRlZCB5b3UndmUgbW91bnRlZCB0aGUKK21vdW50cG9pbnQgdG8gYmUgZXhwaXJlZCBpbiB0aGUgYXV0b21vdW50aW5nIHByb2NlZHVyZSBvdXRsaW5lZCBzZXBhcmF0ZWx5LgorCitUbyBkbyBleHBpcmF0aW9uLCB5b3UgbmVlZCB0byBmb2xsb3cgdGhlc2Ugc3RlcHM6CisKKyAoMSkgQ3JlYXRlIGF0IGxlYXN0IG9uZSBsaXN0IG9mZiB3aGljaCB0aGUgdmZzbW91bnRzIHRvIGJlIGV4cGlyZWQgY2FuIGJlCisgICAgIGh1bmcuCisKKyAoMikgV2hlbiBhIG5ldyBtb3VudHBvaW50IGlzIGNyZWF0ZWQgaW4gdGhlIC0+ZF9hdXRvbW91bnQgbWV0aG9kLCBhZGQKKyAgICAgdGhlIG1udCB0byB0aGUgbGlzdCB1c2luZyBtbnRfc2V0X2V4cGlyeSgpCisgICAgICAgICAgICAgbW50X3NldF9leHBpcnkobmV3bW50LCAmYWZzX3Zmc21vdW50cyk7CisKKyAoMykgV2hlbiB5b3Ugd2FudCBtb3VudHBvaW50cyB0byBiZSBleHBpcmVkLCBjYWxsIG1hcmtfbW91bnRzX2Zvcl9leHBpcnkoKQorICAgICB3aXRoIGEgcG9pbnRlciB0byB0aGlzIGxpc3QuIFRoaXMgd2lsbCBwcm9jZXNzIHRoZSBsaXN0LCBtYXJraW5nIGV2ZXJ5CisgICAgIHZmc21vdW50IHRoZXJlb24gZm9yIHBvdGVudGlhbCBleHBpcnkgb24gdGhlIG5leHQgY2FsbC4KKworICAgICBJZiBhIHZmc21vdW50IHdhcyBhbHJlYWR5IGZsYWdnZWQgZm9yIGV4cGlyeSwgYW5kIGlmIGl0cyB1c2FnZSBjb3VudCBpcyAxCisgICAgIChpdCdzIG9ubHkgcmVmZXJlbmNlZCBieSBpdHMgcGFyZW50IHZmc21vdW50KSwgdGhlbiBpdCB3aWxsIGJlIGRlbGV0ZWQKKyAgICAgZnJvbSB0aGUgbmFtZXNwYWNlIGFuZCB0aHJvd24gYXdheSAoZWZmZWN0aXZlbHkgdW5tb3VudGVkKS4KKworICAgICBJdCBtYXkgcHJvdmUgc2ltcGxlc3QgdG8gc2ltcGx5IGNhbGwgdGhpcyBhdCByZWd1bGFyIGludGVydmFscywgdXNpbmcKKyAgICAgc29tZSBzb3J0IG9mIHRpbWVkIGV2ZW50IHRvIGRyaXZlIGl0LgorCitUaGUgZXhwaXJhdGlvbiBmbGFnIGlzIGNsZWFyZWQgYnkgY2FsbHMgdG8gbW50cHV0LiBUaGlzIG1lYW5zIHRoYXQgZXhwaXJhdGlvbgord2lsbCBvbmx5IGhhcHBlbiBvbiB0aGUgc2Vjb25kIGV4cGlyYXRpb24gcmVxdWVzdCBhZnRlciB0aGUgbGFzdCB0aW1lIHRoZQorbW91bnRwb2ludCB3YXMgYWNjZXNzZWQuCisKK0lmIGEgbW91bnRwb2ludCBpcyBtb3ZlZCwgaXQgZ2V0cyByZW1vdmVkIGZyb20gdGhlIGV4cGlyYXRpb24gbGlzdC4gSWYgYSBiaW5kCittb3VudCBpcyBtYWRlIG9uIGFuIGV4cGlyYWJsZSBtb3VudCwgdGhlIG5ldyB2ZnNtb3VudCB3aWxsIG5vdCBiZSBvbiB0aGUKK2V4cGlyYXRpb24gbGlzdCBhbmQgd2lsbCBub3QgZXhwaXJlLgorCitJZiBhIG5hbWVzcGFjZSBpcyBjb3BpZWQsIGFsbCBtb3VudHBvaW50cyBjb250YWluZWQgdGhlcmVpbiB3aWxsIGJlIGNvcGllZCwKK2FuZCB0aGUgY29waWVzIG9mIHRob3NlIHRoYXQgYXJlIG9uIGFuIGV4cGlyYXRpb24gbGlzdCB3aWxsIGJlIGFkZGVkIHRvIHRoZQorc2FtZSBleHBpcmF0aW9uIGxpc3QuCisKKworPT09PT09PT09PT09PT09PT09PT09PT0KK1VTRVJTUEFDRSBEUklWRU4gRVhQSVJZCis9PT09PT09PT09PT09PT09PT09PT09PQorCitBcyBhbiBhbHRlcm5hdGl2ZSwgaXQgaXMgcG9zc2libGUgZm9yIHVzZXJzcGFjZSB0byByZXF1ZXN0IGV4cGlyeSBvZiBhbnkKK21vdW50cG9pbnQgKHRob3VnaCBzb21lIHdpbGwgYmUgcmVqZWN0ZWQgLSB0aGUgY3VycmVudCBwcm9jZXNzJ3MgaWRlYSBvZiB0aGUKK3Jvb3RmcyBmb3IgZXhhbXBsZSkuIEl0IGRvZXMgdGhpcyBieSBwYXNzaW5nIHRoZSBNTlRfRVhQSVJFIGZsYWcgdG8KK3Vtb3VudCgpLiBUaGlzIGZsYWcgaXMgY29uc2lkZXJlZCBpbmNvbXBhdGlibGUgd2l0aCBNTlRfRk9SQ0UgYW5kIE1OVF9ERVRBQ0guCisKK0lmIHRoZSBtb3VudHBvaW50IGluIHF1ZXN0aW9uIGlzIGluIHJlZmVyZW5jZWQgYnkgc29tZXRoaW5nIG90aGVyIHRoYW4KK3Vtb3VudCgpIG9yIGl0cyBwYXJlbnQgbW91bnRwb2ludCwgYW4gRUJVU1kgZXJyb3Igd2lsbCBiZSByZXR1cm5lZCBhbmQgdGhlCittb3VudHBvaW50IHdpbGwgbm90IGJlIG1hcmtlZCBmb3IgZXhwaXJhdGlvbiBvciB1bm1vdW50ZWQuCisKK0lmIHRoZSBtb3VudHBvaW50IHdhcyBub3QgYWxyZWFkeSBtYXJrZWQgZm9yIGV4cGlyeSBhdCB0aGF0IHRpbWUsIGFuIEVBR0FJTgorZXJyb3Igd2lsbCBiZSBnaXZlbiBhbmQgaXQgd29uJ3QgYmUgdW5tb3VudGVkLgorCitPdGhlcndpc2UgaWYgaXQgd2FzIGFscmVhZHkgbWFya2VkIGFuZCBpdCB3YXNuJ3QgcmVmZXJlbmNlZCwgdW5tb3VudGluZyB3aWxsCit0YWtlIHBsYWNlIGFzIHVzdWFsLgorCitBZ2FpbiwgdGhlIGV4cGlyYXRpb24gZmxhZyBpcyBjbGVhcmVkIGV2ZXJ5IHRpbWUgYW55dGhpbmcgb3RoZXIgdGhhbiB1bW91bnQoKQorbG9va3MgYXQgYSBtb3VudHBvaW50LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9iZWZzLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvYmVmcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE0NWU2YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvYmVmcy50eHQKQEAgLTAsMCArMSwxMTcgQEAKK0JlT1MgZmlsZXN5c3RlbSBmb3IgTGludXgKKworRG9jdW1lbnQgbGFzdCB1cGRhdGVkOiBEZWMgNiwgMjAwMQorCitXQVJOSU5HCis9PT09PT09CitNYWtlIHN1cmUgeW91IHVuZGVyc3RhbmQgdGhhdCB0aGlzIGlzIGFscGhhIHNvZnR3YXJlLiAgVGhpcyBtZWFucyB0aGF0IHRoZQoraW1wbGVtZW50YXRpb24gaXMgbmVpdGhlciBjb21wbGV0ZSBub3Igd2VsbC10ZXN0ZWQuIAorCitJIERJU0NMQUlNIEFMTCBSRVNQT05TSUJJTElUWSBGT1IgQU5ZIFBPU1NJQkxFIEJBRCBFRkZFQ1RTIE9GIFRISVMgQ09ERSEKKworTElDRU5TRQorPT09PT0KK1RoaXMgc29mdHdhcmUgaXMgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIAorU2VlIHRoZSBmaWxlIENPUFlJTkcgZm9yIHRoZSBjb21wbGV0ZSB0ZXh0IG9mIHRoZSBsaWNlbnNlLgorT3IgdGhlIEdOVSB3ZWJzaXRlOiA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWw+CisKK0FVVEhPUgorPT09PT0KK1RoZSBsYXJnZXN0IHBhcnQgb2YgdGhlIGNvZGUgd3JpdHRlbiBieSBXaWxsIER5c29uIDx3aWxsX2R5c29uQHBvYm94LmNvbT4KK0hlIGhhcyBiZWVuIHdvcmtpbmcgb24gdGhlIGNvZGUgc2luY2UgQXVnIDEzLCAyMDAxLiBTZWUgdGhlIGNoYW5nZWxvZyBmb3IKK2RldGFpbHMuCisKK09yaWdpbmFsIEF1dGhvcjogTWFrb3RvIEthdG8gPG1fa2F0b0BnYTIuc28tbmV0Lm5lLmpwPgorSGlzIG9yaWdpbmFsIGNvZGUgY2FuIHN0aWxsIGJlIGZvdW5kIGF0OgorPGh0dHA6Ly9ocC52ZWN0b3IuY28uanAvYXV0aG9ycy9WQTAwODAzMC9iZnMvPgorRG9lcyBhbnlvbmUga25vdyBvZiBhIG1vcmUgY3VycmVudCBlbWFpbCBhZGRyZXNzIGZvciBNYWtvdG8/IEhlIGRvZXNuJ3QKK3Jlc3BvbmQgdG8gdGhlIGFkZHJlc3MgZ2l2ZW4gYWJvdmUuLi4KKworVGhpcyBmaWxlc3lzdGVtIGRvZXNuJ3QgaGF2ZSBhIG1haW50YWluZXIuCisKK1dIQVQgSVMgVEhJUyBEUklWRVI/Cis9PT09PT09PT09PT09PT09PT0KK1RoaXMgbW9kdWxlIGltcGxlbWVudHMgdGhlIG5hdGl2ZSBmaWxlc3lzdGVtIG9mIEJlT1MgaHR0cDovL3d3dy5iZWluY29ycG9yYXRlZC5jb20vIAorZm9yIHRoZSBsaW51eCAyLjQuMSBhbmQgbGF0ZXIga2VybmVscy4gQ3VycmVudGx5IGl0IGlzIGEgcmVhZC1vbmx5CitpbXBsZW1lbnRhdGlvbi4KKworV2hpY2ggaXMgaXQsIEJGUyBvciBCRUZTPworPT09PT09PT09PT09PT09PQorQmUsIEluYyBzYWlkLCAiQmVPUyBGaWxlc3lzdGVtIGlzIG9mZmljaWFsbHkgY2FsbGVkIEJGUywgbm90IEJlRlMiLiAKK0J1dCBVbml4d2FyZSBCb290IEZpbGVzeXN0ZW0gaXMgY2FsbGVkIGJmcywgdG9vLiBBbmQgdGhleSBhcmUgYWxyZWFkeSBpbgordGhlIGtlcm5lbC4gQmVjYXVzZSBvZiB0aGlzIG5hbWluZyBjb25mbGljdCwgb24gTGludXggdGhlIEJlT1MKK2ZpbGVzeXN0ZW0gaXMgY2FsbGVkIGJlZnMuCisKK0hPVyBUTyBJTlNUQUxMCis9PT09PT09PT09PT09PQorc3RlcCAxLiAgSW5zdGFsbCB0aGUgQmVGUyAgcGF0Y2ggaW50byB0aGUgc291cmNlIGNvZGUgdHJlZSBvZiBsaW51eC4KKworQXBwbHkgdGhlIHBhdGNoZmlsZSB0byB5b3VyIGtlcm5lbCBzb3VyY2UgdHJlZS4KK0Fzc3VtaW5nIHRoYXQgeW91ciBrZXJuZWwgc291cmNlIGlzIGluIC9mb28vYmFyL2xpbnV4IGFuZCB0aGUgcGF0Y2hmaWxlCitpcyBjYWxsZWQgcGF0Y2gtYmVmcy14eHgsIHlvdSB3b3VsZCBkbyB0aGUgZm9sbG93aW5nOgorCisJY2QgL2Zvby9iYXIvbGludXgKKwlwYXRjaCAtcDEgPCAvcGF0aC90by9wYXRjaC1iZWZzLXh4eAorCitpZiB0aGUgcGF0Y2hpbmcgc3RlcCBmYWlscyAoaS5lLiB0aGVyZSBhcmUgcmVqZWN0ZWQgaHVua3MpLCB5b3UgY2FuIHRyeSB0bworZmlndXJlIGl0IG91dCB5b3Vyc2VsZiAoaXQgc2hvdWxkbid0IGJlIGhhcmQpLCBvciBtYWlsIHRoZSBtYWludGFpbmVyIAorKFdpbGwgRHlzb24gPHdpbGxfZHlzb25AcG9ib3guY29tPikgZm9yIGhlbHAuCisKK3N0ZXAgMi4gIENvbmZpZ3VyYXRpb24gJiBtYWtlIGtlcm5lbAorCitUaGUgbGludXgga2VybmVsIGhhcyBtYW55IGNvbXBpbGUtdGltZSBvcHRpb25zLiBNb3N0IG9mIHRoZW0gYXJlIGJleW9uZCB0aGUKK3Njb3BlIG9mIHRoaXMgZG9jdW1lbnQuIEkgc3VnZ2VzdCB0aGUgS2VybmVsLUhPV1RPIGRvY3VtZW50IGFzIGEgZ29vZCBnZW5lcmFsCityZWZlcmVuY2Ugb24gdGhpcyB0b3BpYy4gaHR0cDovL3d3dy5saW51eGRvY3Mub3JnL0hPV1RPcy9LZXJuZWwtSE9XVE8tNC5odG1sIAorCitIb3dldmVyLCB0byB1c2UgdGhlIEJlRlMgbW9kdWxlLCB5b3UgbXVzdCBlbmFibGUgaXQgYXQgY29uZmlndXJlIHRpbWUuCisKKwljZCAvZm9vL2Jhci9saW51eAorCW1ha2UgbWVudWNvbmZpZyAob3IgeGNvbmZpZykKKworVGhlIEJlRlMgbW9kdWxlIGlzIG5vdCBhIHN0YW5kYXJkIHBhcnQgb2YgdGhlIGxpbnV4IGtlcm5lbCwgc28geW91IG11c3QgZmlyc3QKK2VuYWJsZSBzdXBwb3J0IGZvciBleHBlcmltZW50YWwgY29kZSB1bmRlciB0aGUgIkNvZGUgbWF0dXJpdHkgbGV2ZWwiIG1lbnUuCisKK1RoZW4sIHVuZGVyIHRoZSAiRmlsZXN5c3RlbXMiIG1lbnUgd2lsbCBiZSBhbiBvcHRpb24gY2FsbGVkICJCZUZTCitmaWxlc3lzdGVtIChleHBlcmltZW50YWwpIiwgb3Igc29tZXRoaW5nIGxpa2UgdGhhdC4gRW5hYmxlIHRoYXQgb3B0aW9uCisoaXQgaXMgZmluZSB0byBtYWtlIGl0IGEgbW9kdWxlKS4KKworU2F2ZSB5b3VyIGtlcm5lbCBjb25maWd1cmF0aW9uIGFuZCB0aGVuIGJ1aWxkIHlvdXIga2VybmVsLgorCitzdGVwIDMuICBJbnN0YWxsCisKK1NlZSB0aGUga2VybmVsIGhvd3RvIDxodHRwOi8vd3d3LmxpbnV4LmNvbS9ob3d0by9LZXJuZWwtSE9XVE8uaHRtbD4gZm9yCitpbnN0cnVjdGlvbnMgb24gdGhpcyBjcml0aWNhbCBzdGVwLgorCitVU0lORyBCRlMKKz09PT09PT09PQorVG8gdXNlIHRoZSBCZU9TIGZpbGVzeXN0ZW0sIHVzZSBmaWxlc3lzdGVtIHR5cGUgJ2JlZnMnLgorCitleCkKKyAgICBtb3VudCAtdCBiZWZzIC9kZXYvZmQwIC9iZW9zCisKK01PVU5UIE9QVElPTlMKKz09PT09PT09PT09PT0KK3VpZD1ubm4gICAgICAgIEFsbCBmaWxlcyBpbiB0aGUgcGFydGl0aW9uIHdpbGwgYmUgb3duZWQgYnkgdXNlciBpZCBubm4uCitnaWQ9bm5uCSAgICAgICBBbGwgZmlsZXMgaW4gdGhlIHBhcnRpdGlvbiB3aWxsIGJlIGluIGdyb3VwIG5ubi4KK2lvY2hhcnNldD14eHggIFVzZSB4eHggYXMgdGhlIG5hbWUgb2YgdGhlIE5MUyB0cmFuc2xhdGlvbiB0YWJsZS4KK2RlYnVnICAgICAgICAgIFRoZSBkcml2ZXIgd2lsbCBvdXRwdXQgZGVidWdnaW5nIGluZm9ybWF0aW9uIHRvIHRoZSBzeXNsb2cuCisKK0hPVyBUTyBHRVQgTEFTVEVTVCBWRVJTSU9OCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgbGF0ZXN0IHZlcnNpb24gaXMgY3VycmVudGx5IGF2YWlsYWJsZSBhdDoKKzxodHRwOi8vYmVmcy1kcml2ZXIuc291cmNlZm9yZ2UubmV0Lz4KKworQU5ZIEtOT1dOIEJVR1M/Cis9PT09PT09PT09PQorQXMgb2YgSmFuIDIwLCAyMDAyOgorCQorCU5vbmUKKworU1BFQ0lBTCBUSEFOS1MKKz09PT09PT09PT09PT09CitEb21pbmljIEdpYW1wYWxvIC4uLiBXcml0aW5nICJQcmFjdGljYWwgZmlsZSBzeXN0ZW0gZGVzaWduIHdpdGggQmUgZmlsZXN5c3RlbSIKK0hpcm95dWtpIFlhbWFkYSAgLi4uIFRlc3RpbmcgTGludXhQUEMuCisKKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2Jmcy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2Jmcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgwNDNkNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvYmZzLnR4dApAQCAtMCwwICsxLDU3IEBACitCRlMgRklMRVNZU1RFTSBGT1IgTElOVVgKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgQkZTIGZpbGVzeXN0ZW0gaXMgdXNlZCBieSBTQ08gVW5peFdhcmUgT1MgZm9yIHRoZSAvc3RhbmQgc2xpY2UsIHdoaWNoCit1c3VhbGx5IGNvbnRhaW5zIHRoZSBrZXJuZWwgaW1hZ2UgYW5kIGEgZmV3IG90aGVyIGZpbGVzIHJlcXVpcmVkIGZvciB0aGUKK2Jvb3QgcHJvY2Vzcy4KKworSW4gb3JkZXIgdG8gYWNjZXNzIC9zdGFuZCBwYXJ0aXRpb24gdW5kZXIgTGludXggeW91IG9idmlvdXNseSBuZWVkIHRvCitrbm93IHRoZSBwYXJ0aXRpb24gbnVtYmVyIGFuZCB0aGUga2VybmVsIG11c3Qgc3VwcG9ydCBVbml4V2FyZSBkaXNrIHNsaWNlcworKENPTkZJR19VTklYV0FSRV9ESVNLTEFCRUwgY29uZmlnIG9wdGlvbikuIEhvd2V2ZXIgQkZTIHN1cHBvcnQgZG9lcyBub3QKK2RlcGVuZCBvbiBoYXZpbmcgVW5peFdhcmUgZGlza2xhYmVsIHN1cHBvcnQgYmVjYXVzZSBvbmUgY2FuIGFsc28gbW91bnQKK0JGUyBmaWxlc3lzdGVtIHZpYSBsb29wYmFjazoKKworIyBsb3NldHVwIC9kZXYvbG9vcDAgc3RhbmQuaW1nCisjIG1vdW50IC10IGJmcyAvZGV2L2xvb3AwIC9tbnQvc3RhbmQKKword2hlcmUgc3RhbmQuaW1nIGlzIGEgZmlsZSBjb250YWluaW5nIHRoZSBpbWFnZSBvZiBCRlMgZmlsZXN5c3RlbS4gCitXaGVuIHlvdSBoYXZlIGZpbmlzaGVkIHVzaW5nIGl0IGFuZCB1bW91bnRlZCB5b3UgbmVlZCB0byBhbHNvIGRlYWxsb2NhdGUKKy9kZXYvbG9vcDAgZGV2aWNlIGJ5OgorCisjIGxvc2V0dXAgLWQgL2Rldi9sb29wMAorCitZb3UgY2FuIHNpbXBsaWZ5IG1vdW50aW5nIGJ5IGp1c3QgdHlwaW5nOgorCisjIG1vdW50IC10IGJmcyAtbyBsb29wIHN0YW5kLmltZyAvbW50L3N0YW5kCisKK3RoaXMgd2lsbCBhbGxvY2F0ZSB0aGUgZmlyc3QgYXZhaWxhYmxlIGxvb3BiYWNrIGRldmljZSAoYW5kIGxvYWQgbG9vcC5vIAora2VybmVsIG1vZHVsZSBpZiBuZWNlc3NhcnkpIGF1dG9tYXRpY2FsbHkuIElmIHRoZSBsb29wYmFjayBkcml2ZXIgaXMgbm90Citsb2FkZWQgYXV0b21hdGljYWxseSwgbWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgY29tcGlsZWQgdGhlIG1vZHVsZSBhbmQKK3RoYXQgbW9kcHJvYmUgaXMgZnVuY3Rpb25pbmcuIEJld2FyZSB0aGF0IHVtb3VudCB3aWxsIG5vdCBkZWFsbG9jYXRlCisvZGV2L2xvb3BOIGRldmljZSBpZiAvZXRjL210YWIgZmlsZSBvbiB5b3VyIHN5c3RlbSBpcyBhIHN5bWJvbGljIGxpbmsgdG8KKy9wcm9jL21vdW50cy4gWW91IHdpbGwgbmVlZCB0byBkbyBpdCBtYW51YWxseSB1c2luZyAiLWQiIHN3aXRjaCBvZgorbG9zZXR1cCg4KS4gUmVhZCBsb3NldHVwKDgpIG1hbnBhZ2UgZm9yIG1vcmUgaW5mby4KKworVG8gY3JlYXRlIHRoZSBCRlMgaW1hZ2UgdW5kZXIgVW5peFdhcmUgeW91IG5lZWQgdG8gZmluZCBvdXQgZmlyc3Qgd2hpY2gKK3NsaWNlIGNvbnRhaW5zIGl0LiBUaGUgY29tbWFuZCBwcnR2dG9jKDFNKSBpcyB5b3VyIGZyaWVuZDoKKworIyBwcnR2dG9jIC9kZXYvcmRzay9jMGIwdDBkMHMwCisKKyhhc3N1bWluZyB5b3VyIHJvb3QgZGlzayBpcyBvbiB0YXJnZXQ9MCwgbHVuPTAsIGJ1cz0wLCBjb250cm9sbGVyPTApLiBUaGVuIHlvdQorbG9vayBmb3IgdGhlIHNsaWNlIHdpdGggdGFnICJTVEFORCIsIHdoaWNoIGlzIHVzdWFsbHkgc2xpY2UgMTAuIFdpdGggdGhpcworaW5mb3JtYXRpb24geW91IGNhbiB1c2UgZGQoMSkgdG8gY3JlYXRlIHRoZSBCRlMgaW1hZ2U6CisKKyMgdW1vdW50IC9zdGFuZAorIyBkZCBpZj0vZGV2L3Jkc2svYzBiMHQwZDBzYSBvZj1zdGFuZC5pbWcgYnM9NTEyCisKK0p1c3QgaW4gY2FzZSwgeW91IGNhbiB2ZXJpZnkgdGhhdCB5b3UgaGF2ZSBkb25lIHRoZSByaWdodCB0aGluZyBieSBjaGVja2luZwordGhlIG1hZ2ljIG51bWJlcjoKKworIyBvZCAtQWQgLXR4NCBzdGFuZC5pbWcgfCBtb3JlCisKK1RoZSBmaXJzdCA0IGJ5dGVzIHNob3VsZCBiZSAweDFiYWRmYWNlLgorCitJZiB5b3UgaGF2ZSBhbnkgcGF0Y2hlcywgcXVlc3Rpb25zIG9yIHN1Z2dlc3Rpb25zIHJlZ2FyZGluZyB0aGlzIEJGUworaW1wbGVtZW50YXRpb24gcGxlYXNlIGNvbnRhY3QgdGhlIGF1dGhvcjoKKworVGlncmFuIEFpdmF6aWFuIDx0aWdyYW5AYWl2YXppYW4uZnNuZXQuY28udWs+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2J0cmZzLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvYnRyZnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3NzJiNDcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2J0cmZzLnR4dApAQCAtMCwwICsxLDI3MCBAQAorCitCVFJGUworPT09PT0KKworQnRyZnMgaXMgYSBjb3B5IG9uIHdyaXRlIGZpbGVzeXN0ZW0gZm9yIExpbnV4IGFpbWVkIGF0CitpbXBsZW1lbnRpbmcgYWR2YW5jZWQgZmVhdHVyZXMgd2hpbGUgZm9jdXNpbmcgb24gZmF1bHQgdG9sZXJhbmNlLAorcmVwYWlyIGFuZCBlYXN5IGFkbWluaXN0cmF0aW9uLiBJbml0aWFsbHkgZGV2ZWxvcGVkIGJ5IE9yYWNsZSwgQnRyZnMKK2lzIGxpY2Vuc2VkIHVuZGVyIHRoZSBHUEwgYW5kIG9wZW4gZm9yIGNvbnRyaWJ1dGlvbiBmcm9tIGFueW9uZS4KKworTGludXggaGFzIGEgd2VhbHRoIG9mIGZpbGVzeXN0ZW1zIHRvIGNob29zZSBmcm9tLCBidXQgd2UgYXJlIGZhY2luZyBhCitudW1iZXIgb2YgY2hhbGxlbmdlcyB3aXRoIHNjYWxpbmcgdG8gdGhlIGxhcmdlIHN0b3JhZ2Ugc3Vic3lzdGVtcyB0aGF0CithcmUgYmVjb21pbmcgY29tbW9uIGluIHRvZGF5J3MgZGF0YSBjZW50ZXJzLiBGaWxlc3lzdGVtcyBuZWVkIHRvIHNjYWxlCitpbiB0aGVpciBhYmlsaXR5IHRvIGFkZHJlc3MgYW5kIG1hbmFnZSBsYXJnZSBzdG9yYWdlLCBhbmQgYWxzbyBpbgordGhlaXIgYWJpbGl0eSB0byBkZXRlY3QsIHJlcGFpciBhbmQgdG9sZXJhdGUgZXJyb3JzIGluIHRoZSBkYXRhIHN0b3JlZAorb24gZGlzay4gIEJ0cmZzIGlzIHVuZGVyIGhlYXZ5IGRldmVsb3BtZW50LCBhbmQgaXMgbm90IHN1aXRhYmxlIGZvcgorYW55IHVzZXMgb3RoZXIgdGhhbiBiZW5jaG1hcmtpbmcgYW5kIHJldmlldy4gVGhlIEJ0cmZzIGRpc2sgZm9ybWF0IGlzCitub3QgeWV0IGZpbmFsaXplZC4KKworVGhlIG1haW4gQnRyZnMgZmVhdHVyZXMgaW5jbHVkZToKKworICAgICogRXh0ZW50IGJhc2VkIGZpbGUgc3RvcmFnZSAoMl42NCBtYXggZmlsZSBzaXplKQorICAgICogU3BhY2UgZWZmaWNpZW50IHBhY2tpbmcgb2Ygc21hbGwgZmlsZXMKKyAgICAqIFNwYWNlIGVmZmljaWVudCBpbmRleGVkIGRpcmVjdG9yaWVzCisgICAgKiBEeW5hbWljIGlub2RlIGFsbG9jYXRpb24KKyAgICAqIFdyaXRhYmxlIHNuYXBzaG90cworICAgICogU3Vidm9sdW1lcyAoc2VwYXJhdGUgaW50ZXJuYWwgZmlsZXN5c3RlbSByb290cykKKyAgICAqIE9iamVjdCBsZXZlbCBtaXJyb3JpbmcgYW5kIHN0cmlwaW5nCisgICAgKiBDaGVja3N1bXMgb24gZGF0YSBhbmQgbWV0YWRhdGEgKG11bHRpcGxlIGFsZ29yaXRobXMgYXZhaWxhYmxlKQorICAgICogQ29tcHJlc3Npb24KKyAgICAqIEludGVncmF0ZWQgbXVsdGlwbGUgZGV2aWNlIHN1cHBvcnQsIHdpdGggc2V2ZXJhbCByYWlkIGFsZ29yaXRobXMKKyAgICAqIE9ubGluZSBmaWxlc3lzdGVtIGNoZWNrIChub3QgeWV0IGltcGxlbWVudGVkKQorICAgICogVmVyeSBmYXN0IG9mZmxpbmUgZmlsZXN5c3RlbSBjaGVjaworICAgICogRWZmaWNpZW50IGluY3JlbWVudGFsIGJhY2t1cCBhbmQgRlMgbWlycm9yaW5nIChub3QgeWV0IGltcGxlbWVudGVkKQorICAgICogT25saW5lIGZpbGVzeXN0ZW0gZGVmcmFnbWVudGF0aW9uCisKKworTW91bnQgT3B0aW9ucworPT09PT09PT09PT09PQorCitXaGVuIG1vdW50aW5nIGEgYnRyZnMgZmlsZXN5c3RlbSwgdGhlIGZvbGxvd2luZyBvcHRpb24gYXJlIGFjY2VwdGVkLgorT3B0aW9ucyB3aXRoICgqKSBhcmUgZGVmYXVsdCBvcHRpb25zIGFuZCB3aWxsIG5vdCBzaG93IGluIHRoZSBtb3VudCBvcHRpb25zLgorCisgIGFsbG9jX3N0YXJ0PTxieXRlcz4KKwlEZWJ1Z2dpbmcgb3B0aW9uIHRvIGZvcmNlIGFsbCBibG9jayBhbGxvY2F0aW9ucyBhYm92ZSBhIGNlcnRhaW4KKwlieXRlIHRocmVzaG9sZCBvbiBlYWNoIGJsb2NrIGRldmljZS4gIFRoZSB2YWx1ZSBpcyBzcGVjaWZpZWQgaW4KKwlieXRlcywgb3B0aW9uYWxseSB3aXRoIGEgSywgTSwgb3IgRyBzdWZmaXgsIGNhc2UgaW5zZW5zaXRpdmUuCisJRGVmYXVsdCBpcyAxTUIuCisKKyAgbm9hdXRvZGVmcmFnKCopCisgIGF1dG9kZWZyYWcKKwlEaXNhYmxlL2VuYWJsZSBhdXRvIGRlZnJhZ21lbnRhdGlvbi4KKwlBdXRvIGRlZnJhZ21lbnRhdGlvbiBkZXRlY3RzIHNtYWxsIHJhbmRvbSB3cml0ZXMgaW50byBmaWxlcyBhbmQgcXVldWUKKwl0aGVtIHVwIGZvciB0aGUgZGVmcmFnIHByb2Nlc3MuICBXb3JrcyBiZXN0IGZvciBzbWFsbCBmaWxlczsKKwlOb3Qgd2VsbCBzdWl0ZWQgZm9yIGxhcmdlIGRhdGFiYXNlIHdvcmtsb2Fkcy4KKworICBjaGVja19pbnQKKyAgY2hlY2tfaW50X2RhdGEKKyAgY2hlY2tfaW50X3ByaW50X21hc2s9PHZhbHVlPgorCVRoZXNlIGRlYnVnZ2luZyBvcHRpb25zIGNvbnRyb2wgdGhlIGJlaGF2aW9yIG9mIHRoZSBpbnRlZ3JpdHkgY2hlY2tpbmcKKwltb2R1bGUgKHRoZSBCVFJGU19GU19DSEVDS19JTlRFR1JJVFkgY29uZmlnIG9wdGlvbiByZXF1aXJlZCkuCisKKwljaGVja19pbnQgZW5hYmxlcyB0aGUgaW50ZWdyaXR5IGNoZWNrZXIgbW9kdWxlLCB3aGljaCBleGFtaW5lcyBhbGwKKwlibG9jayB3cml0ZSByZXF1ZXN0cyB0byBlbnN1cmUgb24tZGlzayBjb25zaXN0ZW5jeSwgYXQgYSBsYXJnZQorCW1lbW9yeSBhbmQgQ1BVIGNvc3QuCisKKwljaGVja19pbnRfZGF0YSBpbmNsdWRlcyBleHRlbnQgZGF0YSBpbiB0aGUgaW50ZWdyaXR5IGNoZWNrcywgYW5kCisJaW1wbGllcyB0aGUgY2hlY2tfaW50IG9wdGlvbi4KKworCWNoZWNrX2ludF9wcmludF9tYXNrIHRha2VzIGEgYml0bWFzayBvZiBCVFJGU0lDX1BSSU5UX01BU0tfKiB2YWx1ZXMKKwlhcyBkZWZpbmVkIGluIGZzL2J0cmZzL2NoZWNrLWludGVncml0eS5jLCB0byBjb250cm9sIHRoZSBpbnRlZ3JpdHkKKwljaGVja2VyIG1vZHVsZSBiZWhhdmlvci4KKworCVNlZSBjb21tZW50cyBhdCB0aGUgdG9wIG9mIGZzL2J0cmZzL2NoZWNrLWludGVncml0eS5jIGZvciBtb3JlIGluZm8uCisKKyAgY29tbWl0PTxzZWNvbmRzPgorCVNldCB0aGUgaW50ZXJ2YWwgb2YgcGVyaW9kaWMgY29tbWl0LCAzMCBzZWNvbmRzIGJ5IGRlZmF1bHQuIEhpZ2hlcgorCXZhbHVlcyBkZWZlciBkYXRhIGJlaW5nIHN5bmNlZCB0byBwZXJtYW5lbnQgc3RvcmFnZSB3aXRoIG9idmlvdXMKKwljb25zZXF1ZW5jZXMgd2hlbiB0aGUgc3lzdGVtIGNyYXNoZXMuIFRoZSB1cHBlciBib3VuZCBpcyBub3QgZm9yY2VkLAorCWJ1dCBhIHdhcm5pbmcgaXMgcHJpbnRlZCBpZiBpdCdzIG1vcmUgdGhhbiAzMDAgc2Vjb25kcyAoNSBtaW51dGVzKS4KKworICBjb21wcmVzcworICBjb21wcmVzcz08dHlwZT4KKyAgY29tcHJlc3MtZm9yY2UKKyAgY29tcHJlc3MtZm9yY2U9PHR5cGU+CisJQ29udHJvbCBCVFJGUyBmaWxlIGRhdGEgY29tcHJlc3Npb24uICBUeXBlIG1heSBiZSBzcGVjaWZpZWQgYXMgInpsaWIiCisJImx6byIgb3IgIm5vIiAoZm9yIG5vIGNvbXByZXNzaW9uLCB1c2VkIGZvciByZW1vdW50aW5nKS4gIElmIG5vIHR5cGUKKwlpcyBzcGVjaWZpZWQsIHpsaWIgaXMgdXNlZC4gIElmIGNvbXByZXNzLWZvcmNlIGlzIHNwZWNpZmllZCwKKwlhbGwgZmlsZXMgd2lsbCBiZSBjb21wcmVzc2VkLCB3aGV0aGVyIG9yIG5vdCB0aGV5IGNvbXByZXNzIHdlbGwuCisJSWYgY29tcHJlc3Npb24gaXMgZW5hYmxlZCwgbm9kYXRhY293IGFuZCBub2RhdGFzdW0gYXJlIGRpc2FibGVkLgorCisgIGRlZ3JhZGVkCisJQWxsb3cgbW91bnRzIHRvIGNvbnRpbnVlIHdpdGggbWlzc2luZyBkZXZpY2VzLiAgQSByZWFkLXdyaXRlIG1vdW50IG1heQorCWZhaWwgd2l0aCB0b28gbWFueSBkZXZpY2VzIG1pc3NpbmcsIGZvciBleGFtcGxlIGlmIGEgc3RyaXBlIG1lbWJlcgorCWlzIGNvbXBsZXRlbHkgbWlzc2luZy4KKworICBkZXZpY2U9PGRldmljZXBhdGg+CisJU3BlY2lmeSBhIGRldmljZSBkdXJpbmcgbW91bnQgc28gdGhhdCBpb2N0bHMgb24gdGhlIGNvbnRyb2wgZGV2aWNlCisJY2FuIGJlIGF2b2lkZWQuICBFc3BlY2lhbGx5IHVzZWZ1bCB3aGVuIHRyeWluZyB0byBtb3VudCBhIG11bHRpLWRldmljZQorCXNldHVwIGFzIHJvb3QuICBNYXkgYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzIGZvciBtdWx0aXBsZSBkZXZpY2VzLgorCisgIG5vZGlzY2FyZCgqKQorICBkaXNjYXJkCisJRGlzYWJsZS9lbmFibGUgZGlzY2FyZCBtb3VudCBvcHRpb24uCisJRGlzY2FyZCBpc3N1ZXMgZnJlcXVlbnQgY29tbWFuZHMgdG8gbGV0IHRoZSBibG9jayBkZXZpY2UgcmVjbGFpbSBzcGFjZQorCWZyZWVkIGJ5IHRoZSBmaWxlc3lzdGVtLgorCVRoaXMgaXMgdXNlZnVsIGZvciBTU0QgZGV2aWNlcywgdGhpbmx5IHByb3Zpc2lvbmVkCisJTFVOcyBhbmQgdmlydHVhbCBtYWNoaW5lIGltYWdlcywgYnV0IG1heSBoYXZlIGEgc2lnbmlmaWNhbnQKKwlwZXJmb3JtYW5jZSBpbXBhY3QuICAoVGhlIGZzdHJpbSBjb21tYW5kIGlzIGFsc28gYXZhaWxhYmxlIHRvCisJaW5pdGlhdGUgYmF0Y2ggdHJpbXMgZnJvbSB1c2Vyc3BhY2UpLgorCisgIG5vZW5vc3BjX2RlYnVnKCopCisgIGVub3NwY19kZWJ1ZworCURpc2FibGUvZW5hYmxlIGRlYnVnZ2luZyBvcHRpb24gdG8gYmUgbW9yZSB2ZXJib3NlIGluIHNvbWUgRU5PU1BDIGNvbmRpdGlvbnMuCisKKyAgZmF0YWxfZXJyb3JzPTxhY3Rpb24+CisJQWN0aW9uIHRvIHRha2Ugd2hlbiBlbmNvdW50ZXJpbmcgYSBmYXRhbCBlcnJvcjoKKwkgICJidWciIC0gQlVHKCkgb24gYSBmYXRhbCBlcnJvci4gIFRoaXMgaXMgdGhlIGRlZmF1bHQuCisJICAicGFuaWMiIC0gcGFuaWMoKSBvbiBhIGZhdGFsIGVycm9yLgorCisgIG5vZmx1c2hvbmNvbW1pdCgqKQorICBmbHVzaG9uY29tbWl0CisJVGhlICdmbHVzaG9uY29tbWl0JyBtb3VudCBvcHRpb24gZm9yY2VzIGFueSBkYXRhIGRpcnRpZWQgYnkgYSB3cml0ZSBpbiBhCisJcHJpb3IgdHJhbnNhY3Rpb24gdG8gY29tbWl0IGFzIHBhcnQgb2YgdGhlIGN1cnJlbnQgY29tbWl0LiAgVGhpcyBtYWtlcworCXRoZSBjb21taXR0ZWQgc3RhdGUgYSBmdWxseSBjb25zaXN0ZW50IHZpZXcgb2YgdGhlIGZpbGUgc3lzdGVtIGZyb20gdGhlCisJYXBwbGljYXRpb24ncyBwZXJzcGVjdGl2ZSAoaS5lLiwgaXQgaW5jbHVkZXMgYWxsIGNvbXBsZXRlZCBmaWxlIHN5c3RlbQorCW9wZXJhdGlvbnMpLiAgVGhpcyB3YXMgcHJldmlvdXNseSB0aGUgYmVoYXZpb3Igb25seSB3aGVuIGEgc25hcHNob3QgaXMKKwljcmVhdGVkLgorCisgIGlub2RlX2NhY2hlCisJRW5hYmxlIGZyZWUgaW5vZGUgbnVtYmVyIGNhY2hpbmcuICAgRGVmYXVsdHMgdG8gb2ZmIGR1ZSB0byBhbiBvdmVyZmxvdworCXByb2JsZW0gd2hlbiB0aGUgZnJlZSBzcGFjZSBjcmNzIGRvbid0IGZpdCBpbnNpZGUgYSBzaW5nbGUgcGFnZS4KKworICBtYXhfaW5saW5lPTxieXRlcz4KKwlTcGVjaWZ5IHRoZSBtYXhpbXVtIGFtb3VudCBvZiBzcGFjZSwgaW4gYnl0ZXMsIHRoYXQgY2FuIGJlIGlubGluZWQgaW4KKwlhIG1ldGFkYXRhIEItdHJlZSBsZWFmLiAgVGhlIHZhbHVlIGlzIHNwZWNpZmllZCBpbiBieXRlcywgb3B0aW9uYWxseQorCXdpdGggYSBLLCBNLCBvciBHIHN1ZmZpeCwgY2FzZSBpbnNlbnNpdGl2ZS4gIEluIHByYWN0aWNlLCB0aGlzIHZhbHVlCisJaXMgbGltaXRlZCBieSB0aGUgcm9vdCBzZWN0b3Igc2l6ZSwgd2l0aCBzb21lIHNwYWNlIHVuYXZhaWxhYmxlIGR1ZQorCXRvIGxlYWYgaGVhZGVycy4gIEZvciBhIDRrIHNlY3RvciBzaXplLCBtYXggaW5saW5lIGRhdGEgaXMgfjM5MDAgYnl0ZXMuCisKKyAgbWV0YWRhdGFfcmF0aW89PHZhbHVlPgorCVNwZWNpZnkgdGhhdCAxIG1ldGFkYXRhIGNodW5rIHNob3VsZCBiZSBhbGxvY2F0ZWQgYWZ0ZXIgZXZlcnkgPHZhbHVlPgorCWRhdGEgY2h1bmtzLiAgT2ZmIGJ5IGRlZmF1bHQuCisKKyAgYWNsKCopCisgIG5vYWNsCisJRW5hYmxlL2Rpc2FibGUgc3VwcG9ydCBmb3IgUG9zaXggQWNjZXNzIENvbnRyb2wgTGlzdHMgKEFDTHMpLiAgU2VlIHRoZQorCWFjbCg1KSBtYW51YWwgcGFnZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBBQ0xzLgorCisgIGJhcnJpZXIoKikKKyAgbm9iYXJyaWVyCisgICAgICAgIEVuYWJsZS9kaXNhYmxlIHRoZSB1c2Ugb2YgYmxvY2sgbGF5ZXIgd3JpdGUgYmFycmllcnMuICBXcml0ZSBiYXJyaWVycworCWVuc3VyZSB0aGF0IGNlcnRhaW4gSU9zIG1ha2UgaXQgdGhyb3VnaCB0aGUgZGV2aWNlIGNhY2hlIGFuZCBhcmUgb24KKwlwZXJzaXN0ZW50IHN0b3JhZ2UuIElmIGRpc2FibGVkIG9uIGEgZGV2aWNlIHdpdGggYSB2b2xhdGlsZQorCShub24tYmF0dGVyeS1iYWNrZWQpIHdyaXRlLWJhY2sgY2FjaGUsIG5vYmFycmllciBvcHRpb24gd2lsbCBsZWFkIHRvCisJZmlsZXN5c3RlbSBjb3JydXB0aW9uIG9uIGEgc3lzdGVtIGNyYXNoIG9yIHBvd2VyIGxvc3MuCisKKyAgZGF0YWNvdygqKQorICBub2RhdGFjb3cKKwlFbmFibGUvZGlzYWJsZSBkYXRhIGNvcHktb24td3JpdGUgZm9yIG5ld2x5IGNyZWF0ZWQgZmlsZXMuCisJTm9kYXRhY293IGltcGxpZXMgbm9kYXRhc3VtLCBhbmQgZGlzYWJsZXMgYWxsIGNvbXByZXNzaW9uLgorCisgIGRhdGFzdW0oKikKKyAgbm9kYXRhc3VtCisJRW5hYmxlL2Rpc2FibGUgZGF0YSBjaGVja3N1bW1pbmcgZm9yIG5ld2x5IGNyZWF0ZWQgZmlsZXMuCisJRGF0YXN1bSBpbXBsaWVzIGRhdGFjb3cuCisKKyAgdHJlZWxvZygqKQorICBub3RyZWVsb2cKKwlFbmFibGUvZGlzYWJsZSB0aGUgdHJlZSBsb2dnaW5nIHVzZWQgZm9yIGZzeW5jIGFuZCBPX1NZTkMgd3JpdGVzLgorCisgIHJlY292ZXJ5CisJRW5hYmxlIGF1dG9yZWNvdmVyeSBhdHRlbXB0cyBpZiBhIGJhZCB0cmVlIHJvb3QgaXMgZm91bmQgYXQgbW91bnQgdGltZS4KKwlDdXJyZW50bHkgdGhpcyBzY2FucyBhIGxpc3Qgb2Ygc2V2ZXJhbCBwcmV2aW91cyB0cmVlIHJvb3RzIGFuZCB0cmllcyB0bworCXVzZSB0aGUgZmlyc3QgcmVhZGFibGUuCisKKyAgcmVzY2FuX3V1aWRfdHJlZQorCUZvcmNlIGNoZWNrIGFuZCByZWJ1aWxkIHByb2NlZHVyZSBvZiB0aGUgVVVJRCB0cmVlLiBUaGlzIHNob3VsZCBub3QKKwlub3JtYWxseSBiZSBuZWVkZWQuCisKKyAgc2tpcF9iYWxhbmNlCisJU2tpcCBhdXRvbWF0aWMgcmVzdW1lIG9mIGludGVycnVwdGVkIGJhbGFuY2Ugb3BlcmF0aW9uIGFmdGVyIG1vdW50LgorCU1heSBiZSByZXN1bWVkIHdpdGggImJ0cmZzIGJhbGFuY2UgcmVzdW1lLiIKKworICBzcGFjZV9jYWNoZSAoKikKKwlFbmFibGUgdGhlIG9uLWRpc2sgZnJlZXNwYWNlIGNhY2hlLgorICBub3NwYWNlX2NhY2hlCisJRGlzYWJsZSBmcmVlc3BhY2UgY2FjaGUgbG9hZGluZyB3aXRob3V0IGNsZWFyaW5nIHRoZSBjYWNoZS4KKyAgY2xlYXJfY2FjaGUKKwlGb3JjZSBjbGVhcmluZyBhbmQgcmVidWlsZGluZyBvZiB0aGUgZGlzayBzcGFjZSBjYWNoZSBpZiBzb21ldGhpbmcKKwloYXMgZ29uZSB3cm9uZy4KKworICBzc2QKKyAgbm9zc2QKKyAgc3NkX3NwcmVhZAorCU9wdGlvbnMgdG8gY29udHJvbCBzc2QgYWxsb2NhdGlvbiBzY2hlbWVzLiAgQnkgZGVmYXVsdCwgQlRSRlMgd2lsbAorCWVuYWJsZSBvciBkaXNhYmxlIHNzZCBhbGxvY2F0aW9uIGhldXJpc3RpY3MgZGVwZW5kaW5nIG9uIHdoZXRoZXIgYQorCXJvdGF0aW9uYWwgb3Igbm9uLXJvdGF0aW9uYWwgZGlzayBpcyBpbiB1c2UuICBUaGUgc3NkIGFuZCBub3NzZCBvcHRpb25zCisJY2FuIG92ZXJyaWRlIHRoaXMgYXV0b2RldGVjdGlvbi4KKworCVRoZSBzc2Rfc3ByZWFkIG1vdW50IG9wdGlvbiBhdHRlbXB0cyB0byBhbGxvY2F0ZSBpbnRvIGJpZyBjaHVua3MKKwlvZiB1bnVzZWQgc3BhY2UsIGFuZCBtYXkgcGVyZm9ybSBiZXR0ZXIgb24gbG93LWVuZCBzc2RzLiAgc3NkX3NwcmVhZAorCWltcGxpZXMgc3NkLCBlbmFibGluZyBhbGwgb3RoZXIgc3NkIGhldXJpc3RpY3MgYXMgd2VsbC4KKworICBzdWJ2b2w9PHBhdGg+CisJTW91bnQgc3Vidm9sdW1lIGF0IDxwYXRoPiByYXRoZXIgdGhhbiB0aGUgcm9vdCBzdWJ2b2x1bWUuICA8cGF0aD4gaXMKKwlyZWxhdGl2ZSB0byB0aGUgdG9wIGxldmVsIHN1YnZvbHVtZS4KKworICBzdWJ2b2xpZD08SUQ+CisJTW91bnQgc3Vidm9sdW1lIHNwZWNpZmllZCBieSBhbiBJRCBudW1iZXIgcmF0aGVyIHRoYW4gdGhlIHJvb3Qgc3Vidm9sdW1lLgorCVRoaXMgYWxsb3dzIG1vdW50aW5nIG9mIHN1YnZvbHVtZXMgd2hpY2ggYXJlIG5vdCBpbiB0aGUgcm9vdCBvZiB0aGUgbW91bnRlZAorCWZpbGVzeXN0ZW0uCisJWW91IGNhbiB1c2UgImJ0cmZzIHN1YnZvbHVtZSBsaXN0IiB0byBzZWUgc3Vidm9sdW1lIElEIG51bWJlcnMuCisKKyAgc3Vidm9scm9vdGlkPTxvYmplY3RpZD4gKGRlcHJlY2F0ZWQpCisJTW91bnQgc3Vidm9sdW1lIHNwZWNpZmllZCBieSA8b2JqZWN0aWQ+IHJhdGhlciB0aGFuIHRoZSByb290IHN1YnZvbHVtZS4KKwlUaGlzIGFsbG93cyBtb3VudGluZyBvZiBzdWJ2b2x1bWVzIHdoaWNoIGFyZSBub3QgaW4gdGhlIHJvb3Qgb2YgdGhlIG1vdW50ZWQKKwlmaWxlc3lzdGVtLgorCVlvdSBjYW4gdXNlICJidHJmcyBzdWJ2b2x1bWUgc2hvdyAiIHRvIHNlZSB0aGUgb2JqZWN0IElEIGZvciBhIHN1YnZvbHVtZS4KKworICB0aHJlYWRfcG9vbD08bnVtYmVyPgorCVRoZSBudW1iZXIgb2Ygd29ya2VyIHRocmVhZHMgdG8gYWxsb2NhdGUuICBUaGUgZGVmYXVsdCBudW1iZXIgaXMgZXF1YWwKKwl0byB0aGUgbnVtYmVyIG9mIENQVXMgKyAyLCBvciA4LCB3aGljaGV2ZXIgaXMgc21hbGxlci4KKworICB1c2VyX3N1YnZvbF9ybV9hbGxvd2VkCisJQWxsb3cgc3Vidm9sdW1lcyB0byBiZSBkZWxldGVkIGJ5IGEgbm9uLXJvb3QgdXNlci4gVXNlIHdpdGggY2F1dGlvbi4KKworTUFJTElORyBMSVNUCis9PT09PT09PT09PT0KKworVGhlcmUgaXMgYSBCdHJmcyBtYWlsaW5nIGxpc3QgaG9zdGVkIG9uIHZnZXIua2VybmVsLm9yZy4gWW91IGNhbgorZmluZCBkZXRhaWxzIG9uIGhvdyB0byBzdWJzY3JpYmUgaGVyZToKKworaHR0cDovL3ZnZXIua2VybmVsLm9yZy92Z2VyLWxpc3RzLmh0bWwjbGludXgtYnRyZnMKKworTWFpbGluZyBsaXN0IGFyY2hpdmVzIGFyZSBhdmFpbGFibGUgZnJvbSBnbWFuZToKKworaHR0cDovL2Rpci5nbWFuZS5vcmcvZ21hbmUuY29tcC5maWxlLXN5c3RlbXMuYnRyZnMKKworCisKK0lSQworPT09CisKK0Rpc2N1c3Npb24gb2YgQnRyZnMgYWxzbyBvY2N1cnMgb24gdGhlICNidHJmcyBjaGFubmVsIG9mIHRoZSBGcmVlbm9kZQorSVJDIG5ldHdvcmsuCisKKworCisJVVRJTElUSUVTCisJPT09PT09PT09CisKK1VzZXJzcGFjZSB0b29scyBmb3IgY3JlYXRpbmcgYW5kIG1hbmlwdWxhdGluZyBCdHJmcyBmaWxlIHN5c3RlbXMgYXJlCithdmFpbGFibGUgZnJvbSB0aGUgZ2l0IHJlcG9zaXRvcnkgYXQgdGhlIGZvbGxvd2luZyBsb2NhdGlvbjoKKworIGh0dHA6Ly9naXQua2VybmVsLm9yZy8/cD1saW51eC9rZXJuZWwvZ2l0L21hc29uL2J0cmZzLXByb2dzLmdpdAorIGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9tYXNvbi9idHJmcy1wcm9ncy5naXQKKworVGhlc2UgaW5jbHVkZSB0aGUgZm9sbG93aW5nIHRvb2xzOgorCisqIG1rZnMuYnRyZnM6IGNyZWF0ZSBhIGZpbGVzeXN0ZW0KKworKiBidHJmczogYSBzaW5nbGUgdG9vbCB0byBtYW5hZ2UgdGhlIGZpbGVzeXN0ZW1zLCByZWZlciB0byB0aGUgbWFucGFnZSBmb3IgbW9yZSBkZXRhaWxzCisKKyogJ2J0cmZzY2snIG9yICdidHJmcyBjaGVjayc6IGRvIGEgY29uc2lzdGVuY3kgY2hlY2sgb2YgdGhlIGZpbGVzeXN0ZW0KKworT3RoZXIgdG9vbHMgZm9yIHNwZWNpZmljIHRhc2tzOgorCisqIGJ0cmZzLWNvbnZlcnQ6IGluLXBsYWNlIGNvbnZlcnNpb24gZnJvbSBleHQyLzMvNCBmaWxlc3lzdGVtcworCisqIGJ0cmZzLWltYWdlOiBkdW1wIGZpbGVzeXN0ZW0gbWV0YWRhdGEgZm9yIGRlYnVnZ2luZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9jYWNoaW5nL2JhY2tlbmQtYXBpLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2FjaGluZy9iYWNrZW5kLWFwaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBiZDU2NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2FjaGluZy9iYWNrZW5kLWFwaS50eHQKQEAgLTAsMCArMSw3MjYgQEAKKwkJCSAgPT09PT09PT09PT09PT09PT09PT09PT09PT0KKwkJCSAgRlMtQ0FDSEUgQ0FDSEUgQkFDS0VORCBBUEkKKwkJCSAgPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIEZTLUNhY2hlIHN5c3RlbSBwcm92aWRlcyBhbiBBUEkgYnkgd2hpY2ggYWN0dWFsIGNhY2hlcyBjYW4gYmUgc3VwcGxpZWQgdG8KK0ZTLUNhY2hlIGZvciBpdCB0byB0aGVuIHNlcnZlIG91dCB0byBuZXR3b3JrIGZpbGVzeXN0ZW1zIGFuZCBvdGhlciBpbnRlcmVzdGVkCitwYXJ0aWVzLgorCitUaGlzIEFQSSBpcyBkZWNsYXJlZCBpbiA8bGludXgvZnNjYWNoZS1jYWNoZS5oPi4KKworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0lOSVRJQUxJU0lORyBBTkQgUkVHSVNURVJJTkcgQSBDQUNIRQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RvIHN0YXJ0IG9mZiwgYSBjYWNoZSBkZWZpbml0aW9uIG11c3QgYmUgaW5pdGlhbGlzZWQgYW5kIHJlZ2lzdGVyZWQgZm9yIGVhY2gKK2NhY2hlIHRoZSBiYWNrZW5kIHdhbnRzIHRvIG1ha2UgYXZhaWxhYmxlLiAgRm9yIGluc3RhbmNlLCBDYWNoZUZTIGRvZXMgdGhpcyBpbgordGhlIGZpbGxfc3VwZXIoKSBvcGVyYXRpb24gb24gbW91bnRpbmcuCisKK1RoZSBjYWNoZSBkZWZpbml0aW9uIChzdHJ1Y3QgZnNjYWNoZV9jYWNoZSkgc2hvdWxkIGJlIGluaXRpYWxpc2VkIGJ5IGNhbGxpbmc6CisKKwl2b2lkIGZzY2FjaGVfaW5pdF9jYWNoZShzdHJ1Y3QgZnNjYWNoZV9jYWNoZSAqY2FjaGUsCisJCQkJc3RydWN0IGZzY2FjaGVfY2FjaGVfb3BzICpvcHMsCisJCQkJY29uc3QgY2hhciAqaWRmbXQsCisJCQkJLi4uKTsKKworV2hlcmU6CisKKyAoKikgImNhY2hlIiBpcyBhIHBvaW50ZXIgdG8gdGhlIGNhY2hlIGRlZmluaXRpb247CisKKyAoKikgIm9wcyIgaXMgYSBwb2ludGVyIHRvIHRoZSB0YWJsZSBvZiBvcGVyYXRpb25zIHRoYXQgdGhlIGJhY2tlbmQgc3VwcG9ydHMgb24KKyAgICAgdGhpcyBjYWNoZTsgYW5kCisKKyAoKikgImlkZm10IiBpcyBhIGZvcm1hdCBhbmQgcHJpbnRmLXN0eWxlIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0aW5nIGEgbGFiZWwKKyAgICAgZm9yIHRoZSBjYWNoZS4KKworCitUaGUgY2FjaGUgc2hvdWxkIHRoZW4gYmUgcmVnaXN0ZXJlZCB3aXRoIEZTLUNhY2hlIGJ5IHBhc3NpbmcgYSBwb2ludGVyIHRvIHRoZQorcHJldmlvdXNseSBpbml0aWFsaXNlZCBjYWNoZSBkZWZpbml0aW9uIHRvOgorCisJaW50IGZzY2FjaGVfYWRkX2NhY2hlKHN0cnVjdCBmc2NhY2hlX2NhY2hlICpjYWNoZSwKKwkJCSAgICAgIHN0cnVjdCBmc2NhY2hlX29iamVjdCAqZnNkZWYsCisJCQkgICAgICBjb25zdCBjaGFyICp0YWduYW1lKTsKKworVHdvIGV4dHJhIGFyZ3VtZW50cyBzaG91bGQgYWxzbyBiZSBzdXBwbGllZDoKKworICgqKSAiZnNkZWYiIHdoaWNoIHNob3VsZCBwb2ludCB0byB0aGUgb2JqZWN0IHJlcHJlc2VudGF0aW9uIGZvciB0aGUgRlMtQ2FjaGUKKyAgICAgbWFzdGVyIGluZGV4IGluIHRoaXMgY2FjaGUuICBOZXRmcyBwcmltYXJ5IGluZGV4IGVudHJpZXMgd2lsbCBiZSBjcmVhdGVkCisgICAgIGhlcmUuICBGUy1DYWNoZSBrZWVwcyB0aGUgY2FsbGVyJ3MgcmVmZXJlbmNlIHRvIHRoZSBpbmRleCBvYmplY3QgaWYKKyAgICAgc3VjY2Vzc2Z1bCBhbmQgd2lsbCByZWxlYXNlIGl0IHVwb24gd2l0aGRyYXdhbCBvZiB0aGUgY2FjaGUuCisKKyAoKikgInRhZ25hbWUiIHdoaWNoLCBpZiBnaXZlbiwgc2hvdWxkIGJlIGEgdGV4dCBzdHJpbmcgbmFtaW5nIHRoaXMgY2FjaGUuICBJZgorICAgICB0aGlzIGlzIE5VTEwsIHRoZSBpZGVudGlmaWVyIHdpbGwgYmUgdXNlZCBpbnN0ZWFkLiAgRm9yIENhY2hlRlMsIHRoZQorICAgICBpZGVudGlmaWVyIGlzIHNldCB0byBuYW1lIHRoZSB1bmRlcmx5aW5nIGJsb2NrIGRldmljZSBhbmQgdGhlIHRhZyBjYW4gYmUKKyAgICAgc3VwcGxpZWQgYnkgbW91bnQuCisKK1RoaXMgZnVuY3Rpb24gbWF5IHJldHVybiAtRU5PTUVNIGlmIGl0IHJhbiBvdXQgb2YgbWVtb3J5IG9yIC1FRVhJU1QgaWYgdGhlIHRhZworaXMgYWxyZWFkeSBpbiB1c2UuICAwIHdpbGwgYmUgcmV0dXJuZWQgb24gc3VjY2Vzcy4KKworCis9PT09PT09PT09PT09PT09PT09PT0KK1VOUkVHSVNURVJJTkcgQSBDQUNIRQorPT09PT09PT09PT09PT09PT09PT09CisKK0EgY2FjaGUgY2FuIGJlIHdpdGhkcmF3biBmcm9tIHRoZSBzeXN0ZW0gYnkgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHdpdGggYQorcG9pbnRlciB0byB0aGUgY2FjaGUgZGVmaW5pdGlvbjoKKworCXZvaWQgZnNjYWNoZV93aXRoZHJhd19jYWNoZShzdHJ1Y3QgZnNjYWNoZV9jYWNoZSAqY2FjaGUpOworCitJbiBDYWNoZUZTJ3MgY2FzZSwgdGhpcyBpcyBjYWxsZWQgYnkgcHV0X3N1cGVyKCkuCisKKworPT09PT09PT0KK1NFQ1VSSVRZCis9PT09PT09PQorCitUaGUgY2FjaGUgbWV0aG9kcyBhcmUgZXhlY3V0ZWQgb25lIG9mIHR3byBjb250ZXh0czoKKworICgxKSB0aGF0IG9mIHRoZSB1c2Vyc3BhY2UgcHJvY2VzcyB0aGF0IGlzc3VlZCB0aGUgbmV0ZnMgb3BlcmF0aW9uIHRoYXQgY2F1c2VkCisgICAgIHRoZSBjYWNoZSBtZXRob2QgdG8gYmUgaW52b2tlZCwgb3IKKworICgyKSB0aGF0IG9mIG9uZSBvZiB0aGUgcHJvY2Vzc2VzIGluIHRoZSBGUy1DYWNoZSB0aHJlYWQgcG9vbC4KKworSW4gZWl0aGVyIGNhc2UsIHRoaXMgbWF5IG5vdCBiZSBhbiBhcHByb3ByaWF0ZSBjb250ZXh0IGluIHdoaWNoIHRvIGFjY2VzcyB0aGUKK2NhY2hlLgorCitUaGUgY2FsbGluZyBwcm9jZXNzJ3MgZnN1aWQsIGZzZ2lkIGFuZCBTRUxpbnV4IHNlY3VyaXR5IGlkZW50aXRpZXMgbWF5IG5lZWQgdG8KK2JlIG1hc3F1ZXJhZGVkIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGNhY2hlIGRyaXZlcidzIGFjY2VzcyB0byB0aGUgY2FjaGUuCitUaGlzIGlzIGxlZnQgdG8gdGhlIGNhY2hlIHRvIGhhbmRsZTsgRlMtQ2FjaGUgbWFrZXMgbm8gZWZmb3J0IGluIHRoaXMgcmVnYXJkLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDT05UUk9MIEFORCBTVEFUSVNUSUNTIFBSRVNFTlRBVElPTgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGNhY2hlIG1heSBwcmVzZW50IGRhdGEgdG8gdGhlIG91dHNpZGUgd29ybGQgdGhyb3VnaCBGUy1DYWNoZSdzIGludGVyZmFjZXMKK2luIHN5c2ZzIGFuZCBwcm9jZnMgLSB0aGUgZm9ybWVyIGZvciBjb250cm9sIGFuZCB0aGUgbGF0dGVyIGZvciBzdGF0aXN0aWNzLgorCitBIHN5c2ZzIGRpcmVjdG9yeSBjYWxsZWQgL3N5cy9mcy9mc2NhY2hlLzxjYWNoZXRhZz4vIGlzIGNyZWF0ZWQgaWYgQ09ORklHX1NZU0ZTCitpcyBlbmFibGVkLiAgVGhpcyBpcyBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIGtvYmplY3Qgc3RydWN0IGZzY2FjaGVfY2FjaGU6OmtvYmoKK2FuZCBpcyBmb3IgdXNlIGJ5IHRoZSBjYWNoZSBhcyBpdCBzZWVzIGZpdC4KKworCis9PT09PT09PT09PT09PT09PT09PT09PT0KK1JFTEVWQU5UIERBVEEgU1RSVUNUVVJFUworPT09PT09PT09PT09PT09PT09PT09PT09CisKKyAoKikgSW5kZXgvRGF0YSBmaWxlIEZTLUNhY2hlIHJlcHJlc2VudGF0aW9uIGNvb2tpZToKKworCXN0cnVjdCBmc2NhY2hlX2Nvb2tpZSB7CisJCXN0cnVjdCBmc2NhY2hlX29iamVjdF9kZWYJKmRlZjsKKwkJc3RydWN0IGZzY2FjaGVfbmV0ZnMJCSpuZXRmczsKKwkJdm9pZAkJCQkqbmV0ZnNfZGF0YTsKKwkJLi4uCisJfTsKKworICAgICBUaGUgZmllbGRzIHRoYXQgbWlnaHQgYmUgb2YgdXNlIHRvIHRoZSBiYWNrZW5kIGRlc2NyaWJlIHRoZSBvYmplY3QKKyAgICAgZGVmaW5pdGlvbiwgdGhlIG5ldGZzIGRlZmluaXRpb24gYW5kIHRoZSBuZXRmcydzIGRhdGEgZm9yIHRoaXMgY29va2llLgorICAgICBUaGUgb2JqZWN0IGRlZmluaXRpb24gY29udGFpbiBmdW5jdGlvbnMgc3VwcGxpZWQgYnkgdGhlIG5ldGZzIGZvciBsb2FkaW5nCisgICAgIGFuZCBtYXRjaGluZyBpbmRleCBlbnRyaWVzOyB0aGVzZSBhcmUgcmVxdWlyZWQgdG8gcHJvdmlkZSBzb21lIG9mIHRoZQorICAgICBjYWNoZSBvcGVyYXRpb25zLgorCisKKyAoKikgSW4tY2FjaGUgb2JqZWN0IHJlcHJlc2VudGF0aW9uOgorCisJc3RydWN0IGZzY2FjaGVfb2JqZWN0IHsKKwkJaW50CQkJCWRlYnVnX2lkOworCQllbnVtIHsKKwkJCUZTQ0FDSEVfT0JKRUNUX1JFQ1lDTElORywKKwkJCS4uLgorCQl9CQkJCXN0YXRlOworCQlzcGlubG9ja190CQkJbG9jaworCQlzdHJ1Y3QgZnNjYWNoZV9jYWNoZQkJKmNhY2hlOworCQlzdHJ1Y3QgZnNjYWNoZV9jb29raWUJCSpjb29raWU7CisJCS4uLgorCX07CisKKyAgICAgU3RydWN0dXJlcyBvZiB0aGlzIHR5cGUgc2hvdWxkIGJlIGFsbG9jYXRlZCBieSB0aGUgY2FjaGUgYmFja2VuZCBhbmQKKyAgICAgcGFzc2VkIHRvIEZTLUNhY2hlIHdoZW4gcmVxdWVzdGVkIGJ5IHRoZSBhcHByb3ByaWF0ZSBjYWNoZSBvcGVyYXRpb24uICBJbgorICAgICB0aGUgY2FzZSBvZiBDYWNoZUZTLCB0aGV5J3JlIGVtYmVkZGVkIGluIENhY2hlRlMncyBpbnRlcm5hbCBvYmplY3QKKyAgICAgc3RydWN0dXJlcy4KKworICAgICBUaGUgZGVidWdfaWQgaXMgYSBzaW1wbGUgaW50ZWdlciB0aGF0IGNhbiBiZSB1c2VkIGluIGRlYnVnZ2luZyBtZXNzYWdlcworICAgICB0aGF0IHJlZmVyIHRvIGEgcGFydGljdWxhciBvYmplY3QuICBJbiBzdWNoIGEgY2FzZSBpdCBzaG91bGQgYmUgcHJpbnRlZAorICAgICB1c2luZyAiT0JKJXgiIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBGUy1DYWNoZS4KKworICAgICBFYWNoIG9iamVjdCBjb250YWlucyBhIHBvaW50ZXIgdG8gdGhlIGNvb2tpZSB0aGF0IHJlcHJlc2VudHMgdGhlIG9iamVjdCBpdAorICAgICBpcyBiYWNraW5nLiAgQW4gb2JqZWN0IHNob3VsZCByZXRpcmVkIHdoZW4gcHV0X29iamVjdCgpIGlzIGNhbGxlZCBpZiBpdCBpcworICAgICBpbiBzdGF0ZSBGU0NBQ0hFX09CSkVDVF9SRUNZQ0xJTkcuICBUaGUgZnNjYWNoZV9vYmplY3Qgc3RydWN0IHNob3VsZCBiZQorICAgICBpbml0aWFsaXNlZCBieSBjYWxsaW5nIGZzY2FjaGVfb2JqZWN0X2luaXQob2JqZWN0KS4KKworCisgKCopIEZTLUNhY2hlIG9wZXJhdGlvbiByZWNvcmQ6CisKKwlzdHJ1Y3QgZnNjYWNoZV9vcGVyYXRpb24geworCQlhdG9taWNfdAkJdXNhZ2U7CisJCXN0cnVjdCBmc2NhY2hlX29iamVjdAkqb2JqZWN0OworCQl1bnNpZ25lZCBsb25nCQlmbGFnczsKKwkjZGVmaW5lIEZTQ0FDSEVfT1BfRVhDTFVTSVZFCisJCXZvaWQgKCpwcm9jZXNzb3IpKHN0cnVjdCBmc2NhY2hlX29wZXJhdGlvbiAqb3ApOworCQl2b2lkICgqcmVsZWFzZSkoc3RydWN0IGZzY2FjaGVfb3BlcmF0aW9uICpvcCk7CisJCS4uLgorCX07CisKKyAgICAgRlMtQ2FjaGUgaGFzIGEgcG9vbCBvZiB0aHJlYWRzIHRoYXQgaXQgdXNlcyB0byBnaXZlIENQVSB0aW1lIHRvIHRoZQorICAgICB2YXJpb3VzIGFzeW5jaHJvbm91cyBvcGVyYXRpb25zIHRoYXQgbmVlZCB0byBiZSBkb25lIGFzIHBhcnQgb2YgZHJpdmluZworICAgICB0aGUgY2FjaGUuICBUaGVzZSBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIGFib3ZlIHN0cnVjdHVyZS4gIFRoZSBwcm9jZXNzb3IKKyAgICAgbWV0aG9kIGlzIGNhbGxlZCB0byBnaXZlIHRoZSBvcCBDUFUgdGltZSwgYW5kIHRoZSByZWxlYXNlIG1ldGhvZCB0byBnZXQKKyAgICAgcmlkIG9mIGl0IHdoZW4gaXRzIHVzYWdlIGNvdW50IHJlYWNoZXMgMC4KKworICAgICBBbiBvcGVyYXRpb24gY2FuIGJlIG1hZGUgZXhjbHVzaXZlIHVwb24gYW4gb2JqZWN0IGJ5IHNldHRpbmcgdGhlCisgICAgIGFwcHJvcHJpYXRlIGZsYWcgYmVmb3JlIGVucXVldWluZyBpdCB3aXRoIGZzY2FjaGVfZW5xdWV1ZV9vcGVyYXRpb24oKS4gIElmCisgICAgIGFuIG9wZXJhdGlvbiBuZWVkcyBtb3JlIHByb2Nlc3NpbmcgdGltZSwgaXQgc2hvdWxkIGJlIGVucXVldWVkIGFnYWluLgorCisKKyAoKikgRlMtQ2FjaGUgcmV0cmlldmFsIG9wZXJhdGlvbiByZWNvcmQ6CisKKwlzdHJ1Y3QgZnNjYWNoZV9yZXRyaWV2YWwgeworCQlzdHJ1Y3QgZnNjYWNoZV9vcGVyYXRpb24gb3A7CisJCXN0cnVjdCBhZGRyZXNzX3NwYWNlCSptYXBwaW5nOworCQlzdHJ1Y3QgbGlzdF9oZWFkCSp0b19kbzsKKwkJLi4uCisJfTsKKworICAgICBBIHN0cnVjdHVyZSBvZiB0aGlzIHR5cGUgaXMgYWxsb2NhdGVkIGJ5IEZTLUNhY2hlIHRvIHJlY29yZCByZXRyaWV2YWwgYW5kCisgICAgIGFsbG9jYXRpb24gcmVxdWVzdHMgbWFkZSBieSB0aGUgbmV0ZnMuICBUaGlzIHN0cnVjdCBpcyB0aGVuIHBhc3NlZCB0byB0aGUKKyAgICAgYmFja2VuZCB0byBkbyB0aGUgb3BlcmF0aW9uLiAgVGhlIGJhY2tlbmQgbWF5IGdldCBleHRyYSByZWZzIHRvIGl0IGJ5CisgICAgIGNhbGxpbmcgZnNjYWNoZV9nZXRfcmV0cmlldmFsKCkgYW5kIHJlZnMgbWF5IGJlIGRpc2NhcmRlZCBieSBjYWxsaW5nCisgICAgIGZzY2FjaGVfcHV0X3JldHJpZXZhbCgpLgorCisgICAgIEEgcmV0cmlldmFsIG9wZXJhdGlvbiBjYW4gYmUgdXNlZCBieSB0aGUgYmFja2VuZCB0byBkbyByZXRyaWV2YWwgd29yay4gIFRvCisgICAgIGRvIHRoaXMsIHRoZSByZXRyaWV2YWwtPm9wLnByb2Nlc3NvciBtZXRob2QgcG9pbnRlciBzaG91bGQgYmUgc2V0CisgICAgIGFwcHJvcHJpYXRlbHkgYnkgdGhlIGJhY2tlbmQgYW5kIGZzY2FjaGVfZW5xdWV1ZV9yZXRyaWV2YWwoKSBjYWxsZWQgdG8KKyAgICAgc3VibWl0IGl0IHRvIHRoZSB0aHJlYWQgcG9vbC4gIENhY2hlRmlsZXMsIGZvciBleGFtcGxlLCB1c2VzIHRoaXMgdG8gcXVldWUKKyAgICAgcGFnZSBleGFtaW5hdGlvbiB3aGVuIGl0IGRldGVjdHMgUEdfbG9jayBiZWluZyBjbGVhcmVkLgorCisgICAgIFRoZSB0b19kbyBmaWVsZCBpcyBhbiBlbXB0eSBsaXN0IGF2YWlsYWJsZSBmb3IgdGhlIGNhY2hlIGJhY2tlbmQgdG8gdXNlIGFzCisgICAgIGl0IHNlZXMgZml0LgorCisKKyAoKikgRlMtQ2FjaGUgc3RvcmFnZSBvcGVyYXRpb24gcmVjb3JkOgorCisJc3RydWN0IGZzY2FjaGVfc3RvcmFnZSB7CisJCXN0cnVjdCBmc2NhY2hlX29wZXJhdGlvbiBvcDsKKwkJcGdvZmZfdAkJCXN0b3JlX2xpbWl0OworCQkuLi4KKwl9OworCisgICAgIEEgc3RydWN0dXJlIG9mIHRoaXMgdHlwZSBpcyBhbGxvY2F0ZWQgYnkgRlMtQ2FjaGUgdG8gcmVjb3JkIG91dHN0YW5kaW5nCisgICAgIHdyaXRlcyB0byBiZSBtYWRlLiAgRlMtQ2FjaGUgaXRzZWxmIGVucXVldWVzIHRoaXMgb3BlcmF0aW9uIGFuZCBpbnZva2VzCisgICAgIHRoZSB3cml0ZV9wYWdlKCkgbWV0aG9kIG9uIHRoZSBvYmplY3QgYXQgYXBwcm9wcmlhdGUgdGltZXMgdG8gZWZmZWN0CisgICAgIHN0b3JhZ2UuCisKKworPT09PT09PT09PT09PT09PQorQ0FDSEUgT1BFUkFUSU9OUworPT09PT09PT09PT09PT09PQorCitUaGUgY2FjaGUgYmFja2VuZCBwcm92aWRlcyBGUy1DYWNoZSB3aXRoIGEgdGFibGUgb2Ygb3BlcmF0aW9ucyB0aGF0IGNhbiBiZQorcGVyZm9ybWVkIG9uIHRoZSBkZW5pemVucyBvZiB0aGUgY2FjaGUuICBUaGVzZSBhcmUgaGVsZCBpbiBhIHN0cnVjdHVyZSBvZiB0eXBlOgorCisJc3RydWN0IGZzY2FjaGVfY2FjaGVfb3BzCisKKyAoKikgTmFtZSBvZiBjYWNoZSBwcm92aWRlciBbbWFuZGF0b3J5XToKKworCWNvbnN0IGNoYXIgKm5hbWUKKworICAgICBUaGlzIGlzbid0IHN0cmljdGx5IGFuIG9wZXJhdGlvbiwgYnV0IHNob3VsZCBiZSBwb2ludGVkIGF0IGEgc3RyaW5nIG5hbWluZworICAgICB0aGUgYmFja2VuZC4KKworCisgKCopIEFsbG9jYXRlIGEgbmV3IG9iamVjdCBbbWFuZGF0b3J5XToKKworCXN0cnVjdCBmc2NhY2hlX29iamVjdCAqKCphbGxvY19vYmplY3QpKHN0cnVjdCBmc2NhY2hlX2NhY2hlICpjYWNoZSwKKwkJCQkJICAgICAgIHN0cnVjdCBmc2NhY2hlX2Nvb2tpZSAqY29va2llKQorCisgICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gYWxsb2NhdGUgYSBjYWNoZSBvYmplY3QgcmVwcmVzZW50YXRpb24gdG8gYmFjayBhCisgICAgIGNvb2tpZSBpbiBhIHBhcnRpY3VsYXIgY2FjaGUuICBmc2NhY2hlX29iamVjdF9pbml0KCkgc2hvdWxkIGJlIGNhbGxlZCBvbgorICAgICB0aGUgb2JqZWN0IHRvIGluaXRpYWxpc2UgaXQgcHJpb3IgdG8gcmV0dXJuaW5nLgorCisgICAgIFRoaXMgZnVuY3Rpb24gbWF5IGFsc28gYmUgdXNlZCB0byBwYXJzZSB0aGUgaW5kZXgga2V5IHRvIGJlIHVzZWQgZm9yCisgICAgIG11bHRpcGxlIGxvb2t1cCBjYWxscyB0byB0dXJuIGl0IGludG8gYSBtb3JlIGNvbnZlbmllbnQgZm9ybS4gIEZTLUNhY2hlCisgICAgIHdpbGwgY2FsbCB0aGUgbG9va3VwX2NvbXBsZXRlKCkgbWV0aG9kIHRvIGFsbG93IHRoZSBjYWNoZSB0byByZWxlYXNlIHRoZQorICAgICBmb3JtIG9uY2UgbG9va3VwIGlzIGNvbXBsZXRlIG9yIGFib3J0ZWQuCisKKworICgqKSBMb29rIHVwIGFuZCBjcmVhdGUgb2JqZWN0IFttYW5kYXRvcnldOgorCisJdm9pZCAoKmxvb2t1cF9vYmplY3QpKHN0cnVjdCBmc2NhY2hlX29iamVjdCAqb2JqZWN0KQorCisgICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gbG9vayB1cCBhbiBvYmplY3QsIGdpdmVuIHRoYXQgdGhlIG9iamVjdCBpcyBhbHJlYWR5CisgICAgIGFsbG9jYXRlZCBhbmQgYXR0YWNoZWQgdG8gdGhlIGNvb2tpZS4gIFRoaXMgc2hvdWxkIGluc3RhbnRpYXRlIHRoYXQgb2JqZWN0CisgICAgIGluIHRoZSBjYWNoZSBpZiBpdCBjYW4uCisKKyAgICAgVGhlIG1ldGhvZCBzaG91bGQgY2FsbCBmc2NhY2hlX29iamVjdF9sb29rdXBfbmVnYXRpdmUoKSBhcyBzb29uIGFzCisgICAgIHBvc3NpYmxlIGlmIGl0IGRldGVybWluZXMgdGhlIG9iamVjdCBkb2Vzbid0IGV4aXN0IGluIHRoZSBjYWNoZS4gIElmIHRoZQorICAgICBvYmplY3QgaXMgZm91bmQgdG8gZXhpc3QgYW5kIHRoZSBuZXRmcyBpbmRpY2F0ZXMgdGhhdCBpdCBpcyB2YWxpZCB0aGVuCisgICAgIGZzY2FjaGVfb2J0YWluZWRfb2JqZWN0KCkgc2hvdWxkIGJlIGNhbGxlZCBvbmNlIHRoZSBvYmplY3QgaXMgaW4gYQorICAgICBwb3NpdGlvbiB0byBoYXZlIGRhdGEgc3RvcmVkIGluIGl0LiAgU2ltaWxhcmx5LCBmc2NhY2hlX29idGFpbmVkX29iamVjdCgpCisgICAgIHNob3VsZCBhbHNvIGJlIGNhbGxlZCBvbmNlIGEgbm9uLXByZXNlbnQgb2JqZWN0IGhhcyBiZWVuIGNyZWF0ZWQuCisKKyAgICAgSWYgYSBsb29rdXAgZXJyb3Igb2NjdXJzLCBmc2NhY2hlX29iamVjdF9sb29rdXBfZXJyb3IoKSBzaG91bGQgYmUgY2FsbGVkCisgICAgIHRvIGFib3J0IHRoZSBsb29rdXAgb2YgdGhhdCBvYmplY3QuCisKKworICgqKSBSZWxlYXNlIGxvb2t1cCBkYXRhIFttYW5kYXRvcnldOgorCisJdm9pZCAoKmxvb2t1cF9jb21wbGV0ZSkoc3RydWN0IGZzY2FjaGVfb2JqZWN0ICpvYmplY3QpCisKKyAgICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHRvIGFzayB0aGUgY2FjaGUgdG8gcmVsZWFzZSBhbnkgcmVzb3VyY2VzIGl0IHdhcworICAgICB1c2luZyB0byBwZXJmb3JtIGEgbG9va3VwLgorCisKKyAoKikgSW5jcmVtZW50IG9iamVjdCByZWZjb3VudCBbbWFuZGF0b3J5XToKKworCXN0cnVjdCBmc2NhY2hlX29iamVjdCAqKCpncmFiX29iamVjdCkoc3RydWN0IGZzY2FjaGVfb2JqZWN0ICpvYmplY3QpCisKKyAgICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHRvIGluY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIGFuIG9iamVjdC4gIEl0CisgICAgIG1heSBmYWlsIChmb3IgaW5zdGFuY2UgaWYgdGhlIGNhY2hlIGlzIGJlaW5nIHdpdGhkcmF3bikgYnkgcmV0dXJuaW5nIE5VTEwuCisgICAgIEl0IHNob3VsZCByZXR1cm4gdGhlIG9iamVjdCBwb2ludGVyIGlmIHN1Y2Nlc3NmdWwuCisKKworICgqKSBMb2NrL1VubG9jayBvYmplY3QgW21hbmRhdG9yeV06CisKKwl2b2lkICgqbG9ja19vYmplY3QpKHN0cnVjdCBmc2NhY2hlX29iamVjdCAqb2JqZWN0KQorCXZvaWQgKCp1bmxvY2tfb2JqZWN0KShzdHJ1Y3QgZnNjYWNoZV9vYmplY3QgKm9iamVjdCkKKworICAgICBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIHRvIGV4Y2x1c2l2ZWx5IGxvY2sgYW4gb2JqZWN0LiAgSXQgbXVzdCBiZSBwb3NzaWJsZQorICAgICB0byBzY2hlZHVsZSB3aXRoIHRoZSBsb2NrIGhlbGQsIHNvIGEgc3BpbmxvY2sgaXNuJ3Qgc3VmZmljaWVudC4KKworCisgKCopIFBpbi9VbnBpbiBvYmplY3QgW29wdGlvbmFsXToKKworCWludCAoKnBpbl9vYmplY3QpKHN0cnVjdCBmc2NhY2hlX29iamVjdCAqb2JqZWN0KQorCXZvaWQgKCp1bnBpbl9vYmplY3QpKHN0cnVjdCBmc2NhY2hlX29iamVjdCAqb2JqZWN0KQorCisgICAgIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgdG8gcGluIGFuIG9iamVjdCBpbnRvIHRoZSBjYWNoZS4gIE9uY2UgcGlubmVkIGFuCisgICAgIG9iamVjdCBjYW5ub3QgYmUgcmVjbGFpbWVkIHRvIG1ha2Ugc3BhY2UuICBSZXR1cm4gLUVOT1NQQyBpZiB0aGVyZSdzIG5vdAorICAgICBlbm91Z2ggc3BhY2UgaW4gdGhlIGNhY2hlIHRvIHBlcm1pdCB0aGlzLgorCisKKyAoKikgQ2hlY2sgY29oZXJlbmN5IHN0YXRlIG9mIGFuIG9iamVjdCBbbWFuZGF0b3J5XToKKworCWludCAoKmNoZWNrX2NvbnNpc3RlbmN5KShzdHJ1Y3QgZnNjYWNoZV9vYmplY3QgKm9iamVjdCkKKworICAgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgdG8gaGF2ZSB0aGUgY2FjaGUgY2hlY2sgdGhlIHNhdmVkIGF1eGlsaWFyeSBkYXRhIG9mCisgICAgIHRoZSBvYmplY3QgYWdhaW5zdCB0aGUgbmV0ZnMncyBpZGVhIG9mIHRoZSBzdGF0ZS4gIDAgc2hvdWxkIGJlIHJldHVybmVkCisgICAgIGlmIHRoZXkncmUgY29uc2lzdGVudCBhbmQgLUVTVEFMRSBvdGhlcndpc2UuICAtRU5PTUVNIGFuZCAtRVJFU1RBUlRTWVMKKyAgICAgbWF5IGFsc28gYmUgcmV0dXJuZWQuCisKKyAoKikgVXBkYXRlIG9iamVjdCBbbWFuZGF0b3J5XToKKworCWludCAoKnVwZGF0ZV9vYmplY3QpKHN0cnVjdCBmc2NhY2hlX29iamVjdCAqb2JqZWN0KQorCisgICAgIFRoaXMgaXMgY2FsbGVkIHRvIHVwZGF0ZSB0aGUgaW5kZXggZW50cnkgZm9yIHRoZSBzcGVjaWZpZWQgb2JqZWN0LiAgVGhlCisgICAgIG5ldyBpbmZvcm1hdGlvbiBzaG91bGQgYmUgaW4gb2JqZWN0LT5jb29raWUtPm5ldGZzX2RhdGEuICBUaGlzIGNhbiBiZQorICAgICBvYnRhaW5lZCBieSBjYWxsaW5nIG9iamVjdC0+Y29va2llLT5kZWYtPmdldF9hdXgoKS9nZXRfYXR0cigpLgorCisKKyAoKikgSW52YWxpZGF0ZSBkYXRhIG9iamVjdCBbbWFuZGF0b3J5XToKKworCWludCAoKmludmFsaWRhdGVfb2JqZWN0KShzdHJ1Y3QgZnNjYWNoZV9vcGVyYXRpb24gKm9wKQorCisgICAgIFRoaXMgaXMgY2FsbGVkIHRvIGludmFsaWRhdGUgYSBkYXRhIG9iamVjdCAoYXMgcG9pbnRlZCB0byBieSBvcC0+b2JqZWN0KS4KKyAgICAgQWxsIHRoZSBkYXRhIHN0b3JlZCBmb3IgdGhpcyBvYmplY3Qgc2hvdWxkIGJlIGRpc2NhcmRlZCBhbmQgYW4KKyAgICAgYXR0cl9jaGFuZ2VkIG9wZXJhdGlvbiBzaG91bGQgYmUgcGVyZm9ybWVkLiAgVGhlIGNhbGxlciB3aWxsIGZvbGxvdyB1cAorICAgICB3aXRoIGFuIG9iamVjdCB1cGRhdGUgb3BlcmF0aW9uLgorCisgICAgIGZzY2FjaGVfb3BfY29tcGxldGUoKSBtdXN0IGJlIGNhbGxlZCBvbiBvcCBiZWZvcmUgcmV0dXJuaW5nLgorCisKKyAoKikgRGlzY2FyZCBvYmplY3QgW21hbmRhdG9yeV06CisKKwl2b2lkICgqZHJvcF9vYmplY3QpKHN0cnVjdCBmc2NhY2hlX29iamVjdCAqb2JqZWN0KQorCisgICAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB0byBpbmRpY2F0ZSB0aGF0IGFuIG9iamVjdCBoYXMgYmVlbiB1bmJvdW5kIGZyb20gaXRzCisgICAgIGNvb2tpZSwgYW5kIHRoYXQgdGhlIGNhY2hlIHNob3VsZCByZWxlYXNlIHRoZSBvYmplY3QncyByZXNvdXJjZXMgYW5kCisgICAgIHJldGlyZSBpdCBpZiBpdCdzIGluIHN0YXRlIEZTQ0FDSEVfT0JKRUNUX1JFQ1lDTElORy4KKworICAgICBUaGlzIG1ldGhvZCBzaG91bGQgbm90IGF0dGVtcHQgdG8gcmVsZWFzZSBhbnkgcmVmZXJlbmNlcyBoZWxkIGJ5IHRoZQorICAgICBjYWxsZXIuICBUaGUgY2FsbGVyIHdpbGwgaW52b2tlIHRoZSBwdXRfb2JqZWN0KCkgbWV0aG9kIGFzIGFwcHJvcHJpYXRlLgorCisKKyAoKikgUmVsZWFzZSBvYmplY3QgcmVmZXJlbmNlIFttYW5kYXRvcnldOgorCisJdm9pZCAoKnB1dF9vYmplY3QpKHN0cnVjdCBmc2NhY2hlX29iamVjdCAqb2JqZWN0KQorCisgICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gZGlzY2FyZCBhIHJlZmVyZW5jZSB0byBhbiBvYmplY3QuICBUaGUgb2JqZWN0IG1heQorICAgICBiZSBmcmVlZCB3aGVuIGFsbCB0aGUgcmVmZXJlbmNlcyB0byBpdCBhcmUgcmVsZWFzZWQuCisKKworICgqKSBTeW5jaHJvbmlzZSBhIGNhY2hlIFttYW5kYXRvcnldOgorCisJdm9pZCAoKnN5bmMpKHN0cnVjdCBmc2NhY2hlX2NhY2hlICpjYWNoZSkKKworICAgICBUaGlzIGlzIGNhbGxlZCB0byBhc2sgdGhlIGJhY2tlbmQgdG8gc3luY2hyb25pc2UgYSBjYWNoZSB3aXRoIGl0cyBiYWNraW5nCisgICAgIGRldmljZS4KKworCisgKCopIERpc3NvY2lhdGUgYSBjYWNoZSBbbWFuZGF0b3J5XToKKworCXZvaWQgKCpkaXNzb2NpYXRlX3BhZ2VzKShzdHJ1Y3QgZnNjYWNoZV9jYWNoZSAqY2FjaGUpCisKKyAgICAgVGhpcyBpcyBjYWxsZWQgdG8gYXNrIGEgY2FjaGUgdG8gcGVyZm9ybSBhbnkgcGFnZSBkaXNzb2NpYXRpb25zIGFzIHBhcnQgb2YKKyAgICAgY2FjaGUgd2l0aGRyYXdhbC4KKworCisgKCopIE5vdGlmaWNhdGlvbiB0aGF0IHRoZSBhdHRyaWJ1dGVzIG9uIGEgbmV0ZnMgZmlsZSBjaGFuZ2VkIFttYW5kYXRvcnldOgorCisJaW50ICgqYXR0cl9jaGFuZ2VkKShzdHJ1Y3QgZnNjYWNoZV9vYmplY3QgKm9iamVjdCk7CisKKyAgICAgVGhpcyBpcyBjYWxsZWQgdG8gaW5kaWNhdGUgdG8gdGhlIGNhY2hlIHRoYXQgY2VydGFpbiBhdHRyaWJ1dGVzIG9uIGEgbmV0ZnMKKyAgICAgZmlsZSBoYXZlIGNoYW5nZWQgKGZvciBleGFtcGxlIHRoZSBtYXhpbXVtIHNpemUgYSBmaWxlIG1heSByZWFjaCkuICBUaGUKKyAgICAgY2FjaGUgY2FuIHJlYWQgdGhlc2UgZnJvbSB0aGUgbmV0ZnMgYnkgY2FsbGluZyB0aGUgY29va2llJ3MgZ2V0X2F0dHIoKQorICAgICBtZXRob2QuCisKKyAgICAgVGhlIGNhY2hlIG1heSB1c2UgdGhlIGZpbGUgc2l6ZSBpbmZvcm1hdGlvbiB0byByZXNlcnZlIHNwYWNlIG9uIHRoZSBjYWNoZS4KKyAgICAgSXQgc2hvdWxkIGFsc28gY2FsbCBmc2NhY2hlX3NldF9zdG9yZV9saW1pdCgpIHRvIGluZGljYXRlIHRvIEZTLUNhY2hlIHRoZQorICAgICBoaWdoZXN0IGJ5dGUgaXQncyB3aWxsaW5nIHRvIHN0b3JlIGZvciBhbiBvYmplY3QuCisKKyAgICAgVGhpcyBtZXRob2QgbWF5IHJldHVybiAtdmUgaWYgYW4gZXJyb3Igb2NjdXJyZWQgb3IgdGhlIGNhY2hlIG9iamVjdCBjYW5ub3QKKyAgICAgYmUgZXhwYW5kZWQuICBJbiBzdWNoIGEgY2FzZSwgdGhlIG9iamVjdCB3aWxsIGJlIHdpdGhkcmF3biBmcm9tIHNlcnZpY2UuCisKKyAgICAgVGhpcyBvcGVyYXRpb24gaXMgcnVuIGFzeW5jaHJvbm91c2x5IGZyb20gRlMtQ2FjaGUncyB0aHJlYWQgcG9vbCwgYW5kCisgICAgIHN0b3JhZ2UgYW5kIHJldHJpZXZhbCBvcGVyYXRpb25zIGZyb20gdGhlIG5ldGZzIGFyZSBleGNsdWRlZCBkdXJpbmcgdGhlCisgICAgIGV4ZWN1dGlvbiBvZiB0aGlzIG9wZXJhdGlvbi4KKworCisgKCopIFJlc2VydmUgY2FjaGUgc3BhY2UgZm9yIGFuIG9iamVjdCdzIGRhdGEgW29wdGlvbmFsXToKKworCWludCAoKnJlc2VydmVfc3BhY2UpKHN0cnVjdCBmc2NhY2hlX29iamVjdCAqb2JqZWN0LCBsb2ZmX3Qgc2l6ZSk7CisKKyAgICAgVGhpcyBpcyBjYWxsZWQgdG8gcmVxdWVzdCB0aGF0IGNhY2hlIHNwYWNlIGJlIHJlc2VydmVkIHRvIGhvbGQgdGhlIGRhdGEKKyAgICAgZm9yIGFuIG9iamVjdCBhbmQgdGhlIG1ldGFkYXRhIHVzZWQgdG8gdHJhY2sgaXQuICBaZXJvIHNpemUgc2hvdWxkIGJlCisgICAgIHRha2VuIGFzIHJlcXVlc3QgdG8gY2FuY2VsIGEgcmVzZXJ2YXRpb24uCisKKyAgICAgVGhpcyBzaG91bGQgcmV0dXJuIDAgaWYgc3VjY2Vzc2Z1bCwgLUVOT1NQQyBpZiB0aGVyZSBpc24ndCBlbm91Z2ggc3BhY2UKKyAgICAgYXZhaWxhYmxlLCBvciAtRU5PTUVNIG9yIC1FSU8gb24gb3RoZXIgZXJyb3JzLgorCisgICAgIFRoZSByZXNlcnZhdGlvbiBtYXkgZXhjZWVkIHRoZSBjdXJyZW50IHNpemUgb2YgdGhlIG9iamVjdCwgdGh1cyBwZXJtaXR0aW5nCisgICAgIGZ1dHVyZSBleHBhbnNpb24uICBJZiB0aGUgYW1vdW50IG9mIHNwYWNlIGNvbnN1bWVkIGJ5IGFuIG9iamVjdCB3b3VsZAorICAgICBleGNlZWQgdGhlIHJlc2VydmF0aW9uLCBpdCdzIHBlcm1pdHRlZCB0byByZWZ1c2UgcmVxdWVzdHMgdG8gYWxsb2NhdGUKKyAgICAgcGFnZXMsIGJ1dCBub3QgcmVxdWlyZWQuICBBbiBvYmplY3QgbWF5IGJlIHBydW5lZCBkb3duIHRvIGl0cyByZXNlcnZhdGlvbgorICAgICBzaXplIGlmIGxhcmdlciB0aGFuIHRoYXQgYWxyZWFkeS4KKworCisgKCopIFJlcXVlc3QgcGFnZSBiZSByZWFkIGZyb20gY2FjaGUgW21hbmRhdG9yeV06CisKKwlpbnQgKCpyZWFkX29yX2FsbG9jX3BhZ2UpKHN0cnVjdCBmc2NhY2hlX3JldHJpZXZhbCAqb3AsCisJCQkJICBzdHJ1Y3QgcGFnZSAqcGFnZSwKKwkJCQkgIGdmcF90IGdmcCkKKworICAgICBUaGlzIGlzIGNhbGxlZCB0byBhdHRlbXB0IHRvIHJlYWQgYSBuZXRmcyBwYWdlIGZyb20gdGhlIGNhY2hlLCBvciB0bworICAgICByZXNlcnZlIGEgYmFja2luZyBibG9jayBpZiBub3QuICBGUy1DYWNoZSB3aWxsIGhhdmUgZG9uZSBhcyBtdWNoIGNoZWNraW5nCisgICAgIGFzIGl0IGNhbiBiZWZvcmUgY2FsbGluZywgYnV0IG1vc3Qgb2YgdGhlIHdvcmsgYmVsb25ncyB0byB0aGUgYmFja2VuZC4KKworICAgICBJZiB0aGVyZSdzIG5vIHBhZ2UgaW4gdGhlIGNhY2hlLCB0aGVuIC1FTk9EQVRBIHNob3VsZCBiZSByZXR1cm5lZCBpZiB0aGUKKyAgICAgYmFja2VuZCBtYW5hZ2VkIHRvIHJlc2VydmUgYSBiYWNraW5nIGJsb2NrOyAtRU5PQlVGUyBvciAtRU5PTUVNIGlmIGl0CisgICAgIGRpZG4ndC4KKworICAgICBJZiB0aGVyZSBpcyBzdWl0YWJsZSBkYXRhIGluIHRoZSBjYWNoZSwgdGhlbiBhIHJlYWQgb3BlcmF0aW9uIHNob3VsZCBiZQorICAgICBxdWV1ZWQgYW5kIDAgcmV0dXJuZWQuICBXaGVuIHRoZSByZWFkIGZpbmlzaGVzLCBmc2NhY2hlX2VuZF9pbygpIHNob3VsZCBiZQorICAgICBjYWxsZWQuCisKKyAgICAgVGhlIGZzY2FjaGVfbWFya19wYWdlc19jYWNoZWQoKSBzaG91bGQgYmUgY2FsbGVkIGZvciB0aGUgcGFnZSBpZiBhbnkgY2FjaGUKKyAgICAgbWV0YWRhdGEgaXMgcmV0YWluZWQuICBUaGlzIHdpbGwgaW5kaWNhdGUgdG8gdGhlIG5ldGZzIHRoYXQgdGhlIHBhZ2UgbmVlZHMKKyAgICAgZXhwbGljaXQgdW5jYWNoaW5nLiAgVGhpcyBvcGVyYXRpb24gdGFrZXMgYSBwYWdldmVjLCB0aHVzIGFsbG93aW5nIHNldmVyYWwKKyAgICAgcGFnZXMgdG8gYmUgbWFya2VkIGF0IG9uY2UuCisKKyAgICAgVGhlIHJldHJpZXZhbCByZWNvcmQgcG9pbnRlZCB0byBieSBvcCBzaG91bGQgYmUgcmV0YWluZWQgZm9yIGVhY2ggcGFnZQorICAgICBxdWV1ZWQgYW5kIHJlbGVhc2VkIHdoZW4gSS9PIG9uIHRoZSBwYWdlIGhhcyBiZWVuIGZvcm1hbGx5IGVuZGVkLgorICAgICBmc2NhY2hlX2dldC9wdXRfcmV0cmlldmFsKCkgYXJlIGF2YWlsYWJsZSBmb3IgdGhpcyBwdXJwb3NlLgorCisgICAgIFRoZSByZXRyaWV2YWwgcmVjb3JkIG1heSBiZSB1c2VkIHRvIGdldCBDUFUgdGltZSB2aWEgdGhlIEZTLUNhY2hlIHRocmVhZAorICAgICBwb29sLiAgSWYgdGhpcyBpcyBkZXNpcmVkLCB0aGUgb3AtPm9wLnByb2Nlc3NvciBzaG91bGQgYmUgc2V0IHRvIHBvaW50IHRvCisgICAgIHRoZSBhcHByb3ByaWF0ZSBwcm9jZXNzaW5nIHJvdXRpbmUsIGFuZCBmc2NhY2hlX2VucXVldWVfcmV0cmlldmFsKCkgc2hvdWxkCisgICAgIGJlIGNhbGxlZCBhdCBhbiBhcHByb3ByaWF0ZSBwb2ludCB0byByZXF1ZXN0IENQVSB0aW1lLiAgRm9yIGluc3RhbmNlLCB0aGUKKyAgICAgcmV0cmlldmFsIHJvdXRpbmUgY291bGQgYmUgZW5xdWV1ZWQgdXBvbiB0aGUgY29tcGxldGlvbiBvZiBhIGRpc2sgcmVhZC4KKyAgICAgVGhlIHRvX2RvIGZpZWxkIGluIHRoZSByZXRyaWV2YWwgcmVjb3JkIGlzIHByb3ZpZGVkIHRvIGFpZCBpbiB0aGlzLgorCisgICAgIElmIGFuIEkvTyBlcnJvciBvY2N1cnMsIGZzY2FjaGVfaW9fZXJyb3IoKSBzaG91bGQgYmUgY2FsbGVkIGFuZCAtRU5PQlVGUworICAgICByZXR1cm5lZCBpZiBwb3NzaWJsZSBvciBmc2NhY2hlX2VuZF9pbygpIGNhbGxlZCB3aXRoIGEgc3VpdGFibGUgZXJyb3IKKyAgICAgY29kZS4KKworICAgICBmc2NhY2hlX3B1dF9yZXRyaWV2YWwoKSBzaG91bGQgYmUgY2FsbGVkIGFmdGVyIGEgcGFnZSBvciBwYWdlcyBhcmUgZGVhbHQKKyAgICAgd2l0aC4gIFRoaXMgd2lsbCBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uIHdoZW4gYWxsIHBhZ2VzIGFyZSBkZWFsdCB3aXRoLgorCisKKyAoKikgUmVxdWVzdCBwYWdlcyBiZSByZWFkIGZyb20gY2FjaGUgW21hbmRhdG9yeV06CisKKwlpbnQgKCpyZWFkX29yX2FsbG9jX3BhZ2VzKShzdHJ1Y3QgZnNjYWNoZV9yZXRyaWV2YWwgKm9wLAorCQkJCSAgIHN0cnVjdCBsaXN0X2hlYWQgKnBhZ2VzLAorCQkJCSAgIHVuc2lnbmVkICpucl9wYWdlcywKKwkJCQkgICBnZnBfdCBnZnApCisKKyAgICAgVGhpcyBpcyBsaWtlIHRoZSByZWFkX29yX2FsbG9jX3BhZ2UoKSBtZXRob2QsIGV4Y2VwdCBpdCBpcyBoYW5kZWQgYSBsaXN0CisgICAgIG9mIHBhZ2VzIGluc3RlYWQgb2Ygb25lIHBhZ2UuICBBbnkgcGFnZXMgb24gd2hpY2ggYSByZWFkIG9wZXJhdGlvbiBpcworICAgICBzdGFydGVkIG11c3QgYmUgYWRkZWQgdG8gdGhlIHBhZ2UgY2FjaGUgZm9yIHRoZSBzcGVjaWZpZWQgbWFwcGluZyBhbmQgYWxzbworICAgICB0byB0aGUgTFJVLiAgU3VjaCBwYWdlcyBtdXN0IGFsc28gYmUgcmVtb3ZlZCBmcm9tIHRoZSBwYWdlcyBsaXN0IGFuZAorICAgICAqbnJfcGFnZXMgZGVjcmVtZW50ZWQgcGVyIHBhZ2UuCisKKyAgICAgSWYgdGhlcmUgd2FzIGFuIGVycm9yIHN1Y2ggYXMgLUVOT01FTSwgdGhlbiB0aGF0IHNob3VsZCBiZSByZXR1cm5lZDsgZWxzZQorICAgICBpZiBvbmUgb3IgbW9yZSBwYWdlcyBjb3VsZG4ndCBiZSByZWFkIG9yIGFsbG9jYXRlZCwgdGhlbiAtRU5PQlVGUyBzaG91bGQKKyAgICAgYmUgcmV0dXJuZWQ7IGVsc2UgaWYgb25lIG9yIG1vcmUgcGFnZXMgY291bGRuJ3QgYmUgcmVhZCwgdGhlbiAtRU5PREFUQQorICAgICBzaG91bGQgYmUgcmV0dXJuZWQuICBJZiBhbGwgdGhlIHBhZ2VzIGFyZSBkaXNwYXRjaGVkIHRoZW4gMCBzaG91bGQgYmUKKyAgICAgcmV0dXJuZWQuCisKKworICgqKSBSZXF1ZXN0IHBhZ2UgYmUgYWxsb2NhdGVkIGluIHRoZSBjYWNoZSBbbWFuZGF0b3J5XToKKworCWludCAoKmFsbG9jYXRlX3BhZ2UpKHN0cnVjdCBmc2NhY2hlX3JldHJpZXZhbCAqb3AsCisJCQkgICAgIHN0cnVjdCBwYWdlICpwYWdlLAorCQkJICAgICBnZnBfdCBnZnApCisKKyAgICAgVGhpcyBpcyBsaWtlIHRoZSByZWFkX29yX2FsbG9jX3BhZ2UoKSBtZXRob2QsIGV4Y2VwdCB0aGF0IGl0IHNob3VsZG4ndAorICAgICByZWFkIGZyb20gdGhlIGNhY2hlLCBldmVuIGlmIHRoZXJlJ3MgZGF0YSB0aGVyZSB0aGF0IGNvdWxkIGJlIHJldHJpZXZlZC4KKyAgICAgSXQgc2hvdWxkLCBob3dldmVyLCBzZXQgdXAgYW55IGludGVybmFsIG1ldGFkYXRhIHJlcXVpcmVkIHN1Y2ggdGhhdAorICAgICB0aGUgd3JpdGVfcGFnZSgpIG1ldGhvZCBjYW4gd3JpdGUgdG8gdGhlIGNhY2hlLgorCisgICAgIElmIHRoZXJlJ3Mgbm8gYmFja2luZyBibG9jayBhdmFpbGFibGUsIHRoZW4gLUVOT0JVRlMgc2hvdWxkIGJlIHJldHVybmVkCisgICAgIChvciAtRU5PTUVNIGlmIHRoZXJlIHdlcmUgb3RoZXIgcHJvYmxlbXMpLiAgSWYgYSBibG9jayBpcyBzdWNjZXNzZnVsbHkKKyAgICAgYWxsb2NhdGVkLCB0aGVuIHRoZSBuZXRmcyBwYWdlIHNob3VsZCBiZSBtYXJrZWQgYW5kIDAgcmV0dXJuZWQuCisKKworICgqKSBSZXF1ZXN0IHBhZ2VzIGJlIGFsbG9jYXRlZCBpbiB0aGUgY2FjaGUgW21hbmRhdG9yeV06CisKKwlpbnQgKCphbGxvY2F0ZV9wYWdlcykoc3RydWN0IGZzY2FjaGVfcmV0cmlldmFsICpvcCwKKwkJCSAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnBhZ2VzLAorCQkJICAgICAgdW5zaWduZWQgKm5yX3BhZ2VzLAorCQkJICAgICAgZ2ZwX3QgZ2ZwKQorCisgICAgIFRoaXMgaXMgYW4gbXVsdGlwbGUgcGFnZSB2ZXJzaW9uIG9mIHRoZSBhbGxvY2F0ZV9wYWdlKCkgbWV0aG9kLiAgcGFnZXMgYW5kCisgICAgIG5yX3BhZ2VzIHNob3VsZCBiZSB0cmVhdGVkIGFzIGZvciB0aGUgcmVhZF9vcl9hbGxvY19wYWdlcygpIG1ldGhvZC4KKworCisgKCopIFJlcXVlc3QgcGFnZSBiZSB3cml0dGVuIHRvIGNhY2hlIFttYW5kYXRvcnldOgorCisJaW50ICgqd3JpdGVfcGFnZSkoc3RydWN0IGZzY2FjaGVfc3RvcmFnZSAqb3AsCisJCQkgIHN0cnVjdCBwYWdlICpwYWdlKTsKKworICAgICBUaGlzIGlzIGNhbGxlZCB0byB3cml0ZSBmcm9tIGEgcGFnZSBvbiB3aGljaCB0aGVyZSB3YXMgYSBwcmV2aW91c2x5CisgICAgIHN1Y2Nlc3NmdWwgcmVhZF9vcl9hbGxvY19wYWdlKCkgY2FsbCBvciBzaW1pbGFyLiAgRlMtQ2FjaGUgZmlsdGVycyBvdXQKKyAgICAgcGFnZXMgdGhhdCBkb24ndCBoYXZlIG1hcHBpbmdzLgorCisgICAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBhc3luY2hyb25vdXNseSBmcm9tIHRoZSBGUy1DYWNoZSB0aHJlYWQgcG9vbC4gIEl0IGlzCisgICAgIG5vdCByZXF1aXJlZCB0byBhY3R1YWxseSBzdG9yZSBhbnl0aGluZywgcHJvdmlkZWQgLUVOT0RBVEEgaXMgdGhlbgorICAgICByZXR1cm5lZCB0byB0aGUgbmV4dCByZWFkIG9mIHRoaXMgcGFnZS4KKworICAgICBJZiBhbiBlcnJvciBvY2N1cnJlZCwgdGhlbiBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgc2hvdWxkIGJlIHJldHVybmVkLAorICAgICBvdGhlcndpc2UgemVybyBzaG91bGQgYmUgcmV0dXJuZWQuICBGUy1DYWNoZSB3aWxsIHRha2UgYXBwcm9wcmlhdGUgYWN0aW9uCisgICAgIGluIHJlc3BvbnNlIHRvIGFuIGVycm9yLCBzdWNoIGFzIHdpdGhkcmF3aW5nIHRoaXMgb2JqZWN0LgorCisgICAgIElmIHRoaXMgbWV0aG9kIHJldHVybnMgc3VjY2VzcyB0aGVuIEZTLUNhY2hlIHdpbGwgaW5mb3JtIHRoZSBuZXRmcworICAgICBhcHByb3ByaWF0ZWx5LgorCisKKyAoKikgRGlzY2FyZCByZXRhaW5lZCBwZXItcGFnZSBtZXRhZGF0YSBbbWFuZGF0b3J5XToKKworCXZvaWQgKCp1bmNhY2hlX3BhZ2UpKHN0cnVjdCBmc2NhY2hlX29iamVjdCAqb2JqZWN0LCBzdHJ1Y3QgcGFnZSAqcGFnZSkKKworICAgICBUaGlzIGlzIGNhbGxlZCB3aGVuIGEgbmV0ZnMgcGFnZSBpcyBiZWluZyBldmljdGVkIGZyb20gdGhlIHBhZ2VjYWNoZS4gIFRoZQorICAgICBjYWNoZSBiYWNrZW5kIHNob3VsZCB0ZWFyIGRvd24gYW55IGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9yIHRyYWNraW5nIGl0CisgICAgIG1haW50YWlucyBmb3IgdGhpcyBwYWdlLgorCisKKz09PT09PT09PT09PT09PT09PQorRlMtQ0FDSEUgVVRJTElUSUVTCis9PT09PT09PT09PT09PT09PT0KKworRlMtQ2FjaGUgcHJvdmlkZXMgc29tZSB1dGlsaXRpZXMgdGhhdCBhIGNhY2hlIGJhY2tlbmQgbWF5IG1ha2UgdXNlIG9mOgorCisgKCopIE5vdGUgb2NjdXJyZW5jZSBvZiBhbiBJL08gZXJyb3IgaW4gYSBjYWNoZToKKworCXZvaWQgZnNjYWNoZV9pb19lcnJvcihzdHJ1Y3QgZnNjYWNoZV9jYWNoZSAqY2FjaGUpCisKKyAgICAgVGhpcyB0ZWxscyBGUy1DYWNoZSB0aGF0IGFuIEkvTyBlcnJvciBvY2N1cnJlZCBpbiB0aGUgY2FjaGUuICBBZnRlciB0aGlzCisgICAgIGhhcyBiZWVuIGNhbGxlZCwgb25seSByZXNvdXJjZSBkaXNzb2NpYXRpb24gb3BlcmF0aW9ucyAob2JqZWN0IGFuZCBwYWdlCisgICAgIHJlbGVhc2UpIHdpbGwgYmUgcGFzc2VkIGZyb20gdGhlIG5ldGZzIHRvIHRoZSBjYWNoZSBiYWNrZW5kIGZvciB0aGUKKyAgICAgc3BlY2lmaWVkIGNhY2hlLgorCisgICAgIFRoaXMgZG9lcyBub3QgYWN0dWFsbHkgd2l0aGRyYXcgdGhlIGNhY2hlLiAgVGhhdCBtdXN0IGJlIGRvbmUgc2VwYXJhdGVseS4KKworCisgKCopIEludm9rZSB0aGUgcmV0cmlldmFsIEkvTyBjb21wbGV0aW9uIGZ1bmN0aW9uOgorCisJdm9pZCBmc2NhY2hlX2VuZF9pbyhzdHJ1Y3QgZnNjYWNoZV9yZXRyaWV2YWwgKm9wLCBzdHJ1Y3QgcGFnZSAqcGFnZSwKKwkJCSAgICBpbnQgZXJyb3IpOworCisgICAgIFRoaXMgaXMgY2FsbGVkIHRvIG5vdGUgdGhlIGVuZCBvZiBhbiBhdHRlbXB0IHRvIHJldHJpZXZlIGEgcGFnZS4gIFRoZQorICAgICBlcnJvciB2YWx1ZSBzaG91bGQgYmUgMCBpZiBzdWNjZXNzZnVsIGFuZCBhbiBlcnJvciBvdGhlcndpc2UuCisKKworICgqKSBSZWNvcmQgdGhhdCBvbmUgb3IgbW9yZSBwYWdlcyBiZWluZyByZXRyaWV2ZWQgb3IgYWxsb2NhdGVkIGhhdmUgYmVlbiBkZWFsdAorICAgICB3aXRoOgorCisJdm9pZCBmc2NhY2hlX3JldHJpZXZhbF9jb21wbGV0ZShzdHJ1Y3QgZnNjYWNoZV9yZXRyaWV2YWwgKm9wLAorCQkJCQlpbnQgbl9wYWdlcyk7CisKKyAgICAgVGhpcyBpcyBjYWxsZWQgdG8gcmVjb3JkIHRoZSBmYWN0IHRoYXQgb25lIG9yIG1vcmUgcGFnZXMgaGF2ZSBiZWVuIGRlYWx0CisgICAgIHdpdGggYW5kIGFyZSBubyBsb25nZXIgdGhlIGNvbmNlcm4gb2YgdGhpcyBvcGVyYXRpb24uICBXaGVuIHRoZSBudW1iZXIgb2YKKyAgICAgcGFnZXMgcmVtYWluaW5nIGluIHRoZSBvcGVyYXRpb24gcmVhY2hlcyAwLCB0aGUgb3BlcmF0aW9uIHdpbGwgYmUKKyAgICAgY29tcGxldGVkLgorCisKKyAoKikgUmVjb3JkIG9wZXJhdGlvbiBjb21wbGV0aW9uOgorCisJdm9pZCBmc2NhY2hlX29wX2NvbXBsZXRlKHN0cnVjdCBmc2NhY2hlX29wZXJhdGlvbiAqb3ApOworCisgICAgIFRoaXMgaXMgY2FsbGVkIHRvIHJlY29yZCB0aGUgY29tcGxldGlvbiBvZiBhbiBvcGVyYXRpb24uICBUaGlzIGRlZHVjdHMKKyAgICAgdGhpcyBvcGVyYXRpb24gZnJvbSB0aGUgcGFyZW50IG9iamVjdCdzIHJ1biBzdGF0ZSwgcG90ZW50aWFsbHkgcGVybWl0dGluZworICAgICBvbmUgb3IgbW9yZSBwZW5kaW5nIG9wZXJhdGlvbnMgdG8gc3RhcnQgcnVubmluZy4KKworCisgKCopIFNldCBoaWdoZXN0IHN0b3JlIGxpbWl0OgorCisJdm9pZCBmc2NhY2hlX3NldF9zdG9yZV9saW1pdChzdHJ1Y3QgZnNjYWNoZV9vYmplY3QgKm9iamVjdCwKKwkJCQkgICAgIGxvZmZfdCBpX3NpemUpOworCisgICAgIFRoaXMgc2V0cyB0aGUgbGltaXQgRlMtQ2FjaGUgaW1wb3NlcyBvbiB0aGUgaGlnaGVzdCBieXRlIGl0J3Mgd2lsbGluZyB0bworICAgICB0cnkgYW5kIHN0b3JlIGZvciBhIG5ldGZzLiAgQW55IHBhZ2Ugb3ZlciB0aGlzIGxpbWl0IGlzIGF1dG9tYXRpY2FsbHkKKyAgICAgcmVqZWN0ZWQgYnkgZnNjYWNoZV9yZWFkX2FsbG9jX3BhZ2UoKSBhbmQgY28gd2l0aCAtRU5PQlVGUy4KKworCisgKCopIE1hcmsgcGFnZXMgYXMgYmVpbmcgY2FjaGVkOgorCisJdm9pZCBmc2NhY2hlX21hcmtfcGFnZXNfY2FjaGVkKHN0cnVjdCBmc2NhY2hlX3JldHJpZXZhbCAqb3AsCisJCQkJICAgICAgIHN0cnVjdCBwYWdldmVjICpwYWdldmVjKTsKKworICAgICBUaGlzIG1hcmtzIGEgc2V0IG9mIHBhZ2VzIGFzIGJlaW5nIGNhY2hlZC4gIEFmdGVyIHRoaXMgaGFzIGJlZW4gY2FsbGVkLAorICAgICB0aGUgbmV0ZnMgbXVzdCBjYWxsIGZzY2FjaGVfdW5jYWNoZV9wYWdlKCkgdG8gdW5tYXJrIHRoZSBwYWdlcy4KKworCisgKCopIFBlcmZvcm0gY29oZXJlbmN5IGNoZWNrIG9uIGFuIG9iamVjdDoKKworCWVudW0gZnNjYWNoZV9jaGVja2F1eCBmc2NhY2hlX2NoZWNrX2F1eChzdHJ1Y3QgZnNjYWNoZV9vYmplY3QgKm9iamVjdCwKKwkJCQkJCWNvbnN0IHZvaWQgKmRhdGEsCisJCQkJCQl1aW50MTZfdCBkYXRhbGVuKTsKKworICAgICBUaGlzIGFza3MgdGhlIG5ldGZzIHRvIHBlcmZvcm0gYSBjb2hlcmVuY3kgY2hlY2sgb24gYW4gb2JqZWN0IHRoYXQgaGFzCisgICAgIGp1c3QgYmVlbiBsb29rZWQgdXAuICBUaGUgY29va2llIGF0dGFjaGVkIHRvIHRoZSBvYmplY3Qgd2lsbCBkZXRlcm1pbmUgdGhlCisgICAgIG5ldGZzIHRvIHVzZS4gIGRhdGEgYW5kIGRhdGFsZW4gc2hvdWxkIHNwZWNpZnkgd2hlcmUgdGhlIGF1eGlsaWFyeSBkYXRhCisgICAgIHJldHJpZXZlZCBmcm9tIHRoZSBjYWNoZSBjYW4gYmUgZm91bmQuCisKKyAgICAgT25lIG9mIHRocmVlIHZhbHVlcyB3aWxsIGJlIHJldHVybmVkOgorCisJKCopIEZTQ0FDSEVfQ0hFQ0tBVVhfT0tBWQorCisJICAgIFRoZSBjb2hlcmVuY3kgZGF0YSBpbmRpY2F0ZXMgdGhlIG9iamVjdCBpcyB2YWxpZCBhcyBpcy4KKworCSgqKSBGU0NBQ0hFX0NIRUNLQVVYX05FRURTX1VQREFURQorCisJICAgIFRoZSBjb2hlcmVuY3kgZGF0YSBuZWVkcyB1cGRhdGluZywgYnV0IG90aGVyd2lzZSB0aGUgb2JqZWN0IGlzCisJICAgIHZhbGlkLgorCisJKCopIEZTQ0FDSEVfQ0hFQ0tBVVhfT0JTT0xFVEUKKworCSAgICBUaGUgY29oZXJlbmN5IGRhdGEgaW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCBpcyBvYnNvbGV0ZSBhbmQgc2hvdWxkCisJICAgIGJlIGRpc2NhcmRlZC4KKworCisgKCopIEluaXRpYWxpc2UgYSBmcmVzaGx5IGFsbG9jYXRlZCBvYmplY3Q6CisKKwl2b2lkIGZzY2FjaGVfb2JqZWN0X2luaXQoc3RydWN0IGZzY2FjaGVfb2JqZWN0ICpvYmplY3QpOworCisgICAgIFRoaXMgaW5pdGlhbGlzZXMgYWxsIHRoZSBmaWVsZHMgaW4gYW4gb2JqZWN0IHJlcHJlc2VudGF0aW9uLgorCisKKyAoKikgSW5kaWNhdGUgdGhlIGRlc3RydWN0aW9uIG9mIGFuIG9iamVjdDoKKworCXZvaWQgZnNjYWNoZV9vYmplY3RfZGVzdHJveWVkKHN0cnVjdCBmc2NhY2hlX2NhY2hlICpjYWNoZSk7CisKKyAgICAgVGhpcyBtdXN0IGJlIGNhbGxlZCB0byBpbmZvcm0gRlMtQ2FjaGUgdGhhdCBhbiBvYmplY3QgdGhhdCBiZWxvbmdlZCB0byBhCisgICAgIGNhY2hlIGhhcyBiZWVuIGRlc3Ryb3llZCBhbmQgZGVhbGxvY2F0ZWQuICBUaGlzIHdpbGwgYWxsb3cgY29udGludWF0aW9uCisgICAgIG9mIHRoZSBjYWNoZSB3aXRoZHJhd2FsIHByb2Nlc3Mgd2hlbiBpdCBpcyBzdG9wcGVkIHBlbmRpbmcgZGVzdHJ1Y3Rpb24gb2YKKyAgICAgYWxsIHRoZSBvYmplY3RzLgorCisKKyAoKikgSW5kaWNhdGUgbmVnYXRpdmUgbG9va3VwIG9uIGFuIG9iamVjdDoKKworCXZvaWQgZnNjYWNoZV9vYmplY3RfbG9va3VwX25lZ2F0aXZlKHN0cnVjdCBmc2NhY2hlX29iamVjdCAqb2JqZWN0KTsKKworICAgICBUaGlzIGlzIGNhbGxlZCB0byBpbmRpY2F0ZSB0byBGUy1DYWNoZSB0aGF0IGEgbG9va3VwIHByb2Nlc3MgZm9yIGFuIG9iamVjdAorICAgICBmb3VuZCBhIG5lZ2F0aXZlIHJlc3VsdC4KKworICAgICBUaGlzIGNoYW5nZXMgdGhlIHN0YXRlIG9mIGFuIG9iamVjdCB0byBwZXJtaXQgcmVhZHMgcGVuZGluZyBvbiBsb29rdXAKKyAgICAgY29tcGxldGlvbiB0byBnbyBvZmYgYW5kIHN0YXJ0IGZldGNoaW5nIGRhdGEgZnJvbSB0aGUgbmV0ZnMgc2VydmVyIGFzIGl0J3MKKyAgICAga25vd24gYXQgdGhpcyBwb2ludCB0aGF0IHRoZXJlIGNhbid0IGJlIGFueSBkYXRhIGluIHRoZSBjYWNoZS4KKworICAgICBUaGlzIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgb24gYW4gb2JqZWN0LiAgT25seSB0aGUgZmlyc3QgY2FsbCBpcworICAgICBzaWduaWZpY2FudCAtIGFsbCBzdWJzZXF1ZW50IGNhbGxzIGFyZSBpZ25vcmVkLgorCisKKyAoKikgSW5kaWNhdGUgYW4gb2JqZWN0IGhhcyBiZWVuIG9idGFpbmVkOgorCisJdm9pZCBmc2NhY2hlX29idGFpbmVkX29iamVjdChzdHJ1Y3QgZnNjYWNoZV9vYmplY3QgKm9iamVjdCk7CisKKyAgICAgVGhpcyBpcyBjYWxsZWQgdG8gaW5kaWNhdGUgdG8gRlMtQ2FjaGUgdGhhdCBhIGxvb2t1cCBwcm9jZXNzIGZvciBhbiBvYmplY3QKKyAgICAgcHJvZHVjZWQgYSBwb3NpdGl2ZSByZXN1bHQsIG9yIHRoYXQgYW4gb2JqZWN0IHdhcyBjcmVhdGVkLiAgVGhpcyBzaG91bGQKKyAgICAgb25seSBiZSBjYWxsZWQgb25jZSBmb3IgYW55IHBhcnRpY3VsYXIgb2JqZWN0LgorCisgICAgIFRoaXMgY2hhbmdlcyB0aGUgc3RhdGUgb2YgYW4gb2JqZWN0IHRvIGluZGljYXRlOgorCisJKDEpIGlmIG5vIGNhbGwgdG8gZnNjYWNoZV9vYmplY3RfbG9va3VwX25lZ2F0aXZlKCkgaGFzIGJlZW4gbWFkZSBvbgorCSAgICB0aGlzIG9iamVjdCwgdGhhdCB0aGVyZSBtYXkgYmUgZGF0YSBhdmFpbGFibGUsIGFuZCB0aGF0IHJlYWRzIGNhbgorCSAgICBub3cgZ28gYW5kIGxvb2sgZm9yIGl0OyBhbmQKKworICAgICAgICAoMikgdGhhdCB3cml0ZXMgbWF5IG5vdyBwcm9jZWVkIGFnYWluc3QgdGhpcyBvYmplY3QuCisKKworICgqKSBJbmRpY2F0ZSB0aGF0IG9iamVjdCBsb29rdXAgZmFpbGVkOgorCisJdm9pZCBmc2NhY2hlX29iamVjdF9sb29rdXBfZXJyb3Ioc3RydWN0IGZzY2FjaGVfb2JqZWN0ICpvYmplY3QpOworCisgICAgIFRoaXMgbWFya3MgYW4gb2JqZWN0IGFzIGhhdmluZyBlbmNvdW50ZXJlZCBhIGZhdGFsIGVycm9yICh1c3VhbGx5IEVJTykKKyAgICAgYW5kIGNhdXNlcyBpdCB0byBtb3ZlIGludG8gYSBzdGF0ZSB3aGVyZWJ5IGl0IHdpbGwgYmUgd2l0aGRyYXduIGFzIHNvb24KKyAgICAgYXMgcG9zc2libGUuCisKKworICgqKSBJbmRpY2F0ZSB0aGF0IGEgc3RhbGUgb2JqZWN0IHdhcyBmb3VuZCBhbmQgZGlzY2FyZGVkOgorCisJdm9pZCBmc2NhY2hlX29iamVjdF9yZXRyeWluZ19zdGFsZShzdHJ1Y3QgZnNjYWNoZV9vYmplY3QgKm9iamVjdCk7CisKKyAgICAgVGhpcyBpcyBjYWxsZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgbG9va3VwIHByb2NlZHVyZSBmb3VuZCBhbiBvYmplY3QgaW4KKyAgICAgdGhlIGNhY2hlIHRoYXQgdGhlIG5ldGZzIGRlY2lkZWQgd2FzIHN0YWxlLiAgVGhlIG9iamVjdCBoYXMgYmVlbgorICAgICBkaXNjYXJkZWQgZnJvbSB0aGUgY2FjaGUgYW5kIHRoZSBsb29rdXAgd2lsbCBiZSBwZXJmb3JtZWQgYWdhaW4uCisKKworICgqKSBJbmRpY2F0ZSB0aGF0IHRoZSBjYWNoaW5nIGJhY2tlbmQga2lsbGVkIGFuIG9iamVjdDoKKworCXZvaWQgZnNjYWNoZV9vYmplY3RfbWFya19raWxsZWQoc3RydWN0IGZzY2FjaGVfb2JqZWN0ICpvYmplY3QsCisJCQkJCWVudW0gZnNjYWNoZV93aHlfb2JqZWN0X2tpbGxlZCB3aHkpOworCisgICAgIFRoaXMgaXMgY2FsbGVkIHRvIGluZGljYXRlIHRoYXQgdGhlIGNhY2hlIGJhY2tlbmQgcHJlZW1wdGl2ZWx5IGtpbGxlZCBhbgorICAgICBvYmplY3QuICBUaGUgd2h5IHBhcmFtZXRlciBzaG91bGQgYmUgc2V0IHRvIGluZGljYXRlIHRoZSByZWFzb246CisKKwlGU0NBQ0hFX09CSkVDVF9JU19TVEFMRSAtIHRoZSBvYmplY3Qgd2FzIHN0YWxlIGFuZCBuZWVkcyBkaXNjYXJkaW5nLgorCUZTQ0FDSEVfT0JKRUNUX05PX1NQQUNFIC0gdGhlcmUgd2FzIGluc3VmZmljaWVudCBjYWNoZSBzcGFjZQorCUZTQ0FDSEVfT0JKRUNUX1dBU19SRVRJUkVEIC0gdGhlIG9iamVjdCB3YXMgcmV0aXJlZCB3aGVuIHJlbGlucXVpc2hlZC4KKwlGU0NBQ0hFX09CSkVDVF9XQVNfQ1VMTEVEIC0gdGhlIG9iamVjdCB3YXMgY3VsbGVkIHRvIG1ha2Ugc3BhY2UuCisKKworICgqKSBHZXQgYW5kIHJlbGVhc2UgcmVmZXJlbmNlcyBvbiBhIHJldHJpZXZhbCByZWNvcmQ6CisKKwl2b2lkIGZzY2FjaGVfZ2V0X3JldHJpZXZhbChzdHJ1Y3QgZnNjYWNoZV9yZXRyaWV2YWwgKm9wKTsKKwl2b2lkIGZzY2FjaGVfcHV0X3JldHJpZXZhbChzdHJ1Y3QgZnNjYWNoZV9yZXRyaWV2YWwgKm9wKTsKKworICAgICBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSB1c2VkIHRvIHJldGFpbiBhIHJldHJpZXZhbCByZWNvcmQgd2hpbHN0IGRvaW5nCisgICAgIGFzeW5jaHJvbm91cyBkYXRhIHJldHJpZXZhbCBhbmQgYmxvY2sgYWxsb2NhdGlvbi4KKworCisgKCopIEVucXVldWUgYSByZXRyaWV2YWwgcmVjb3JkIGZvciBwcm9jZXNzaW5nLgorCisJdm9pZCBmc2NhY2hlX2VucXVldWVfcmV0cmlldmFsKHN0cnVjdCBmc2NhY2hlX3JldHJpZXZhbCAqb3ApOworCisgICAgIFRoaXMgZW5xdWV1ZXMgYSByZXRyaWV2YWwgcmVjb3JkIGZvciBwcm9jZXNzaW5nIGJ5IHRoZSBGUy1DYWNoZSB0aHJlYWQKKyAgICAgcG9vbC4gIE9uZSBvZiB0aGUgdGhyZWFkcyBpbiB0aGUgcG9vbCB3aWxsIGludm9rZSB0aGUgcmV0cmlldmFsIHJlY29yZCdzCisgICAgIG9wLT5vcC5wcm9jZXNzb3IgY2FsbGJhY2sgZnVuY3Rpb24uICBUaGlzIGZ1bmN0aW9uIG1heSBiZSBjYWxsZWQgZnJvbQorICAgICB3aXRoaW4gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLgorCisKKyAoKikgTGlzdCBvZiBvYmplY3Qgc3RhdGUgbmFtZXM6CisKKwljb25zdCBjaGFyICpmc2NhY2hlX29iamVjdF9zdGF0ZXNbXTsKKworICAgICBGb3IgZGVidWdnaW5nIHB1cnBvc2VzLCB0aGlzIG1heSBiZSB1c2VkIHRvIHR1cm4gdGhlIHN0YXRlIHRoYXQgYW4gb2JqZWN0CisgICAgIGlzIGluIGludG8gYSB0ZXh0IHN0cmluZyBmb3IgZGlzcGxheSBwdXJwb3Nlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2FjaGluZy9jYWNoZWZpbGVzLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2FjaGluZy9jYWNoZWZpbGVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDhhMWFlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9jYWNoaW5nL2NhY2hlZmlsZXMudHh0CkBAIC0wLDAgKzEsNTAxIEBACisJICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJICAgICAgIENhY2hlRmlsZXM6IENBQ0hFIE9OIEFMUkVBRFkgTU9VTlRFRCBGSUxFU1lTVEVNCisJICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0NvbnRlbnRzOgorCisgKCopIE92ZXJ2aWV3LgorCisgKCopIFJlcXVpcmVtZW50cy4KKworICgqKSBDb25maWd1cmF0aW9uLgorCisgKCopIFN0YXJ0aW5nIHRoZSBjYWNoZS4KKworICgqKSBUaGluZ3MgdG8gYXZvaWQuCisKKyAoKikgQ2FjaGUgY3VsbGluZy4KKworICgqKSBDYWNoZSBzdHJ1Y3R1cmUuCisKKyAoKikgU2VjdXJpdHkgbW9kZWwgYW5kIFNFTGludXguCisKKyAoKikgQSBub3RlIG9uIHNlY3VyaXR5LgorCisgKCopIFN0YXRpc3RpY2FsIGluZm9ybWF0aW9uLgorCisgKCopIERlYnVnZ2luZy4KKworCis9PT09PT09PQorT1ZFUlZJRVcKKz09PT09PT09CisKK0NhY2hlRmlsZXMgaXMgYSBjYWNoaW5nIGJhY2tlbmQgdGhhdCdzIG1lYW50IHRvIHVzZSBhcyBhIGNhY2hlIGEgZGlyZWN0b3J5IG9uCithbiBhbHJlYWR5IG1vdW50ZWQgZmlsZXN5c3RlbSBvZiBhIGxvY2FsIHR5cGUgKHN1Y2ggYXMgRXh0MykuCisKK0NhY2hlRmlsZXMgdXNlcyBhIHVzZXJzcGFjZSBkYWVtb24gdG8gZG8gc29tZSBvZiB0aGUgY2FjaGUgbWFuYWdlbWVudCAtIHN1Y2ggYXMKK3JlYXBpbmcgc3RhbGUgbm9kZXMgYW5kIGN1bGxpbmcuICBUaGlzIGlzIGNhbGxlZCBjYWNoZWZpbGVzZCBhbmQgbGl2ZXMgaW4KKy9zYmluLgorCitUaGUgZmlsZXN5c3RlbSBhbmQgZGF0YSBpbnRlZ3JpdHkgb2YgdGhlIGNhY2hlIGFyZSBvbmx5IGFzIGdvb2QgYXMgdGhvc2Ugb2YgdGhlCitmaWxlc3lzdGVtIHByb3ZpZGluZyB0aGUgYmFja2luZyBzZXJ2aWNlcy4gIE5vdGUgdGhhdCBDYWNoZUZpbGVzIGRvZXMgbm90CithdHRlbXB0IHRvIGpvdXJuYWwgYW55dGhpbmcgc2luY2UgdGhlIGpvdXJuYWxsaW5nIGludGVyZmFjZXMgb2YgdGhlIHZhcmlvdXMKK2ZpbGVzeXN0ZW1zIGFyZSB2ZXJ5IHNwZWNpZmljIGluIG5hdHVyZS4KKworQ2FjaGVGaWxlcyBjcmVhdGVzIGEgbWlzYyBjaGFyYWN0ZXIgZGV2aWNlIC0gIi9kZXYvY2FjaGVmaWxlcyIgLSB0aGF0IGlzIHVzZWQKK3RvIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZGFlbW9uLiAgT25seSBvbmUgdGhpbmcgbWF5IGhhdmUgdGhpcyBvcGVuIGF0IG9uY2UsCithbmQgd2hpbHN0IGl0IGlzIG9wZW4sIGEgY2FjaGUgaXMgYXQgbGVhc3QgcGFydGlhbGx5IGluIGV4aXN0ZW5jZS4gIFRoZSBkYWVtb24KK29wZW5zIHRoaXMgYW5kIHNlbmRzIGNvbW1hbmRzIGRvd24gaXQgdG8gY29udHJvbCB0aGUgY2FjaGUuCisKK0NhY2hlRmlsZXMgaXMgY3VycmVudGx5IGxpbWl0ZWQgdG8gYSBzaW5nbGUgY2FjaGUuCisKK0NhY2hlRmlsZXMgYXR0ZW1wdHMgdG8gbWFpbnRhaW4gYXQgbGVhc3QgYSBjZXJ0YWluIHBlcmNlbnRhZ2Ugb2YgZnJlZSBzcGFjZSBvbgordGhlIGZpbGVzeXN0ZW0sIHNocmlua2luZyB0aGUgY2FjaGUgYnkgY3VsbGluZyB0aGUgb2JqZWN0cyBpdCBjb250YWlucyB0byBtYWtlCitzcGFjZSBpZiBuZWNlc3NhcnkgLSBzZWUgdGhlICJDYWNoZSBDdWxsaW5nIiBzZWN0aW9uLiAgVGhpcyBtZWFucyBpdCBjYW4gYmUKK3BsYWNlZCBvbiB0aGUgc2FtZSBtZWRpdW0gYXMgYSBsaXZlIHNldCBvZiBkYXRhLCBhbmQgd2lsbCBleHBhbmQgdG8gbWFrZSB1c2Ugb2YKK3NwYXJlIHNwYWNlIGFuZCBhdXRvbWF0aWNhbGx5IGNvbnRyYWN0IHdoZW4gdGhlIHNldCBvZiBkYXRhIHJlcXVpcmVzIG1vcmUKK3NwYWNlLgorCisKKz09PT09PT09PT09PQorUkVRVUlSRU1FTlRTCis9PT09PT09PT09PT0KKworVGhlIHVzZSBvZiBDYWNoZUZpbGVzIGFuZCBpdHMgZGFlbW9uIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgdG8gYmUKK2F2YWlsYWJsZSBpbiB0aGUgc3lzdGVtIGFuZCBpbiB0aGUgY2FjaGUgZmlsZXN5c3RlbToKKworCS0gZG5vdGlmeS4KKworCS0gZXh0ZW5kZWQgYXR0cmlidXRlcyAoeGF0dHJzKS4KKworCS0gb3BlbmF0KCkgYW5kIGZyaWVuZHMuCisKKwktIGJtYXAoKSBzdXBwb3J0IG9uIGZpbGVzIGluIHRoZSBmaWxlc3lzdGVtIChGSUJNQVAgaW9jdGwpLgorCisJLSBUaGUgdXNlIG9mIGJtYXAoKSB0byBkZXRlY3QgYSBwYXJ0aWFsIHBhZ2UgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZS4KKworSXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdGhhdCB0aGUgImRpcl9pbmRleCIgb3B0aW9uIGlzIGVuYWJsZWQgb24gRXh0MworZmlsZXN5c3RlbXMgYmVpbmcgdXNlZCBhcyBhIGNhY2hlLgorCisKKz09PT09PT09PT09PT0KK0NPTkZJR1VSQVRJT04KKz09PT09PT09PT09PT0KKworVGhlIGNhY2hlIGlzIGNvbmZpZ3VyZWQgYnkgYSBzY3JpcHQgaW4gL2V0Yy9jYWNoZWZpbGVzZC5jb25mLiAgVGhlc2UgY29tbWFuZHMKK3NldCB1cCBjYWNoZSByZWFkeSBmb3IgdXNlLiAgVGhlIGZvbGxvd2luZyBzY3JpcHQgY29tbWFuZHMgYXJlIGF2YWlsYWJsZToKKworICgqKSBicnVuIDxOPiUKKyAoKikgYmN1bGwgPE4+JQorICgqKSBic3RvcCA8Tj4lCisgKCopIGZydW4gPE4+JQorICgqKSBmY3VsbCA8Tj4lCisgKCopIGZzdG9wIDxOPiUKKworCUNvbmZpZ3VyZSB0aGUgY3VsbGluZyBsaW1pdHMuICBPcHRpb25hbC4gIFNlZSB0aGUgc2VjdGlvbiBvbiBjdWxsaW5nCisJVGhlIGRlZmF1bHRzIGFyZSA3JSAocnVuKSwgNSUgKGN1bGwpIGFuZCAxJSAoc3RvcCkgcmVzcGVjdGl2ZWx5LgorCisJVGhlIGNvbW1hbmRzIGJlZ2lubmluZyB3aXRoIGEgJ2InIGFyZSBmaWxlIHNwYWNlIChibG9jaykgbGltaXRzLCB0aG9zZQorCWJlZ2lubmluZyB3aXRoIGFuICdmJyBhcmUgZmlsZSBjb3VudCBsaW1pdHMuCisKKyAoKikgZGlyIDxwYXRoPgorCisJU3BlY2lmeSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIHJvb3Qgb2YgdGhlIGNhY2hlLiAgTWFuZGF0b3J5LgorCisgKCopIHRhZyA8bmFtZT4KKworCVNwZWNpZnkgYSB0YWcgdG8gRlMtQ2FjaGUgdG8gdXNlIGluIGRpc3Rpbmd1aXNoaW5nIG11bHRpcGxlIGNhY2hlcy4KKwlPcHRpb25hbC4gIFRoZSBkZWZhdWx0IGlzICJDYWNoZUZpbGVzIi4KKworICgqKSBkZWJ1ZyA8bWFzaz4KKworCVNwZWNpZnkgYSBudW1lcmljIGJpdG1hc2sgdG8gY29udHJvbCBkZWJ1Z2dpbmcgaW4gdGhlIGtlcm5lbCBtb2R1bGUuCisJT3B0aW9uYWwuICBUaGUgZGVmYXVsdCBpcyB6ZXJvIChhbGwgb2ZmKS4gIFRoZSBmb2xsb3dpbmcgdmFsdWVzIGNhbiBiZQorCU9SJ2QgaW50byB0aGUgbWFzayB0byBjb2xsZWN0IHZhcmlvdXMgaW5mb3JtYXRpb246CisKKwkJMQlUdXJuIG9uIHRyYWNlIG9mIGZ1bmN0aW9uIGVudHJ5IChfZW50ZXIoKSBtYWNyb3MpCisJCTIJVHVybiBvbiB0cmFjZSBvZiBmdW5jdGlvbiBleGl0IChfbGVhdmUoKSBtYWNyb3MpCisJCTQJVHVybiBvbiB0cmFjZSBvZiBpbnRlcm5hbCBkZWJ1ZyBwb2ludHMgKF9kZWJ1ZygpKQorCisJVGhpcyBtYXNrIGNhbiBhbHNvIGJlIHNldCB0aHJvdWdoIHN5c2ZzLCBlZzoKKworCQllY2hvIDUgPi9zeXMvbW9kdWxlcy9jYWNoZWZpbGVzL3BhcmFtZXRlcnMvZGVidWcKKworCis9PT09PT09PT09PT09PT09PT0KK1NUQVJUSU5HIFRIRSBDQUNIRQorPT09PT09PT09PT09PT09PT09CisKK1RoZSBjYWNoZSBpcyBzdGFydGVkIGJ5IHJ1bm5pbmcgdGhlIGRhZW1vbi4gIFRoZSBkYWVtb24gb3BlbnMgdGhlIGNhY2hlIGRldmljZSwKK2NvbmZpZ3VyZXMgdGhlIGNhY2hlIGFuZCB0ZWxscyBpdCB0byBiZWdpbiBjYWNoaW5nLiAgQXQgdGhhdCBwb2ludCB0aGUgY2FjaGUKK2JpbmRzIHRvIGZzY2FjaGUgYW5kIHRoZSBjYWNoZSBiZWNvbWVzIGxpdmUuCisKK1RoZSBkYWVtb24gaXMgcnVuIGFzIGZvbGxvd3M6CisKKwkvc2Jpbi9jYWNoZWZpbGVzZCBbLWRdKiBbLXNdIFstbl0gWy1mIDxjb25maWdmaWxlPl0KKworVGhlIGZsYWdzIGFyZToKKworICgqKSAtZAorCisJSW5jcmVhc2UgdGhlIGRlYnVnZ2luZyBsZXZlbC4gIFRoaXMgY2FuIGJlIHNwZWNpZmllZCBtdWx0aXBsZSB0aW1lcyBhbmQKKwlpcyBjdW11bGF0aXZlIHdpdGggaXRzZWxmLgorCisgKCopIC1zCisKKwlTZW5kIG1lc3NhZ2VzIHRvIHN0ZGVyciBpbnN0ZWFkIG9mIHN5c2xvZy4KKworICgqKSAtbgorCisJRG9uJ3QgZGFlbW9uaXNlIGFuZCBnbyBpbnRvIGJhY2tncm91bmQuCisKKyAoKikgLWYgPGNvbmZpZ2ZpbGU+CisKKwlVc2UgYW4gYWx0ZXJuYXRpdmUgY29uZmlndXJhdGlvbiBmaWxlIHJhdGhlciB0aGFuIHRoZSBkZWZhdWx0IG9uZS4KKworCis9PT09PT09PT09PT09PT0KK1RISU5HUyBUTyBBVk9JRAorPT09PT09PT09PT09PT09CisKK0RvIG5vdCBtb3VudCBvdGhlciB0aGluZ3Mgd2l0aGluIHRoZSBjYWNoZSBhcyB0aGlzIHdpbGwgY2F1c2UgcHJvYmxlbXMuICBUaGUKK2tlcm5lbCBtb2R1bGUgY29udGFpbnMgaXRzIG93biB2ZXJ5IGN1dC1kb3duIHBhdGggd2Fsa2luZyBmYWNpbGl0eSB0aGF0IGlnbm9yZXMKK21vdW50cG9pbnRzLCBidXQgdGhlIGRhZW1vbiBjYW4ndCBhdm9pZCB0aGVtLgorCitEbyBub3QgY3JlYXRlLCByZW5hbWUgb3IgdW5saW5rIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBpbiB0aGUgY2FjaGUgd2hpbHN0IHRoZQorY2FjaGUgaXMgYWN0aXZlLCBhcyB0aGlzIG1heSBjYXVzZSB0aGUgc3RhdGUgdG8gYmVjb21lIHVuY2VydGFpbi4KKworUmVuYW1pbmcgZmlsZXMgaW4gdGhlIGNhY2hlIG1pZ2h0IG1ha2Ugb2JqZWN0cyBhcHBlYXIgdG8gYmUgb3RoZXIgb2JqZWN0cyAodGhlCitmaWxlbmFtZSBpcyBwYXJ0IG9mIHRoZSBsb29rdXAga2V5KS4KKworRG8gbm90IGNoYW5nZSBvciByZW1vdmUgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXR0YWNoZWQgdG8gY2FjaGUgZmlsZXMgYnkgdGhlCitjYWNoZSBhcyB0aGlzIHdpbGwgY2F1c2UgdGhlIGNhY2hlIHN0YXRlIG1hbmFnZW1lbnQgdG8gZ2V0IGNvbmZ1c2VkLgorCitEbyBub3QgY3JlYXRlIGZpbGVzIG9yIGRpcmVjdG9yaWVzIGluIHRoZSBjYWNoZSwgbGVzdCB0aGUgY2FjaGUgZ2V0IGNvbmZ1c2VkIG9yCitzZXJ2ZSBpbmNvcnJlY3QgZGF0YS4KKworRG8gbm90IGNobW9kIGZpbGVzIGluIHRoZSBjYWNoZS4gIFRoZSBtb2R1bGUgY3JlYXRlcyB0aGluZ3Mgd2l0aCBtaW5pbWFsCitwZXJtaXNzaW9ucyB0byBwcmV2ZW50IHJhbmRvbSB1c2VycyBiZWluZyBhYmxlIHRvIGFjY2VzcyB0aGVtIGRpcmVjdGx5LgorCisKKz09PT09PT09PT09PT0KK0NBQ0hFIENVTExJTkcKKz09PT09PT09PT09PT0KKworVGhlIGNhY2hlIG1heSBuZWVkIGN1bGxpbmcgb2NjYXNpb25hbGx5IHRvIG1ha2Ugc3BhY2UuICBUaGlzIGludm9sdmVzCitkaXNjYXJkaW5nIG9iamVjdHMgZnJvbSB0aGUgY2FjaGUgdGhhdCBoYXZlIGJlZW4gdXNlZCBsZXNzIHJlY2VudGx5IHRoYW4KK2FueXRoaW5nIGVsc2UuICBDdWxsaW5nIGlzIGJhc2VkIG9uIHRoZSBhY2Nlc3MgdGltZSBvZiBkYXRhIG9iamVjdHMuICBFbXB0eQorZGlyZWN0b3JpZXMgYXJlIGN1bGxlZCBpZiBub3QgaW4gdXNlLgorCitDYWNoZSBjdWxsaW5nIGlzIGRvbmUgb24gdGhlIGJhc2lzIG9mIHRoZSBwZXJjZW50YWdlIG9mIGJsb2NrcyBhbmQgdGhlCitwZXJjZW50YWdlIG9mIGZpbGVzIGF2YWlsYWJsZSBpbiB0aGUgdW5kZXJseWluZyBmaWxlc3lzdGVtLiAgVGhlcmUgYXJlIHNpeAorImxpbWl0cyI6CisKKyAoKikgYnJ1bgorICgqKSBmcnVuCisKKyAgICAgSWYgdGhlIGFtb3VudCBvZiBmcmVlIHNwYWNlIGFuZCB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBmaWxlcyBpbiB0aGUgY2FjaGUKKyAgICAgcmlzZXMgYWJvdmUgYm90aCB0aGVzZSBsaW1pdHMsIHRoZW4gY3VsbGluZyBpcyB0dXJuZWQgb2ZmLgorCisgKCopIGJjdWxsCisgKCopIGZjdWxsCisKKyAgICAgSWYgdGhlIGFtb3VudCBvZiBhdmFpbGFibGUgc3BhY2Ugb3IgdGhlIG51bWJlciBvZiBhdmFpbGFibGUgZmlsZXMgaW4gdGhlCisgICAgIGNhY2hlIGZhbGxzIGJlbG93IGVpdGhlciBvZiB0aGVzZSBsaW1pdHMsIHRoZW4gY3VsbGluZyBpcyBzdGFydGVkLgorCisgKCopIGJzdG9wCisgKCopIGZzdG9wCisKKyAgICAgSWYgdGhlIGFtb3VudCBvZiBhdmFpbGFibGUgc3BhY2Ugb3IgdGhlIG51bWJlciBvZiBhdmFpbGFibGUgZmlsZXMgaW4gdGhlCisgICAgIGNhY2hlIGZhbGxzIGJlbG93IGVpdGhlciBvZiB0aGVzZSBsaW1pdHMsIHRoZW4gbm8gZnVydGhlciBhbGxvY2F0aW9uIG9mCisgICAgIGRpc2sgc3BhY2Ugb3IgZmlsZXMgaXMgcGVybWl0dGVkIHVudGlsIGN1bGxpbmcgaGFzIHJhaXNlZCB0aGluZ3MgYWJvdmUKKyAgICAgdGhlc2UgbGltaXRzIGFnYWluLgorCitUaGVzZSBtdXN0IGJlIGNvbmZpZ3VyZWQgdGh1c2x5OgorCisJMCA8PSBic3RvcCA8IGJjdWxsIDwgYnJ1biA8IDEwMAorCTAgPD0gZnN0b3AgPCBmY3VsbCA8IGZydW4gPCAxMDAKKworTm90ZSB0aGF0IHRoZXNlIGFyZSBwZXJjZW50YWdlcyBvZiBhdmFpbGFibGUgc3BhY2UgYW5kIGF2YWlsYWJsZSBmaWxlcywgYW5kIGRvCitfbm90XyBhcHBlYXIgYXMgMTAwIG1pbnVzIHRoZSBwZXJjZW50YWdlIGRpc3BsYXllZCBieSB0aGUgImRmIiBwcm9ncmFtLgorCitUaGUgdXNlcnNwYWNlIGRhZW1vbiBzY2FucyB0aGUgY2FjaGUgdG8gYnVpbGQgdXAgYSB0YWJsZSBvZiBjdWxsYWJsZSBvYmplY3RzLgorVGhlc2UgYXJlIHRoZW4gY3VsbGVkIGluIGxlYXN0IHJlY2VudGx5IHVzZWQgb3JkZXIuICBBIG5ldyBzY2FuIG9mIHRoZSBjYWNoZSBpcworc3RhcnRlZCBhcyBzb29uIGFzIHNwYWNlIGlzIG1hZGUgaW4gdGhlIHRhYmxlLiAgT2JqZWN0cyB3aWxsIGJlIHNraXBwZWQgaWYKK3RoZWlyIGF0aW1lcyBoYXZlIGNoYW5nZWQgb3IgaWYgdGhlIGtlcm5lbCBtb2R1bGUgc2F5cyBpdCBpcyBzdGlsbCB1c2luZyB0aGVtLgorCisKKz09PT09PT09PT09PT09PQorQ0FDSEUgU1RSVUNUVVJFCis9PT09PT09PT09PT09PT0KKworVGhlIENhY2hlRmlsZXMgbW9kdWxlIHdpbGwgY3JlYXRlIHR3byBkaXJlY3RvcmllcyBpbiB0aGUgZGlyZWN0b3J5IGl0IHdhcworZ2l2ZW46CisKKyAoKikgY2FjaGUvCisKKyAoKikgZ3JhdmV5YXJkLworCitUaGUgYWN0aXZlIGNhY2hlIG9iamVjdHMgYWxsIHJlc2lkZSBpbiB0aGUgZmlyc3QgZGlyZWN0b3J5LiAgVGhlIENhY2hlRmlsZXMKK2tlcm5lbCBtb2R1bGUgbW92ZXMgYW55IHJldGlyZWQgb3IgY3VsbGVkIG9iamVjdHMgdGhhdCBpdCBjYW4ndCBzaW1wbHkgdW5saW5rCit0byB0aGUgZ3JhdmV5YXJkIGZyb20gd2hpY2ggdGhlIGRhZW1vbiB3aWxsIGFjdHVhbGx5IGRlbGV0ZSB0aGVtLgorCitUaGUgZGFlbW9uIHVzZXMgZG5vdGlmeSB0byBtb25pdG9yIHRoZSBncmF2ZXlhcmQgZGlyZWN0b3J5LCBhbmQgd2lsbCBkZWxldGUKK2FueXRoaW5nIHRoYXQgYXBwZWFycyB0aGVyZWluLgorCisKK1RoZSBtb2R1bGUgcmVwcmVzZW50cyBpbmRleCBvYmplY3RzIGFzIGRpcmVjdG9yaWVzIHdpdGggdGhlIGZpbGVuYW1lICJJLi4uIiBvcgorIkouLi4iLiAgTm90ZSB0aGF0IHRoZSAiY2FjaGUvIiBkaXJlY3RvcnkgaXMgaXRzZWxmIGEgc3BlY2lhbCBpbmRleC4KKworRGF0YSBvYmplY3RzIGFyZSByZXByZXNlbnRlZCBhcyBmaWxlcyBpZiB0aGV5IGhhdmUgbm8gY2hpbGRyZW4sIG9yIGRpcmVjdG9yaWVzCitpZiB0aGV5IGRvLiAgVGhlaXIgZmlsZW5hbWVzIGFsbCBiZWdpbiAiRC4uLiIgb3IgIkUuLi4iLiAgSWYgcmVwcmVzZW50ZWQgYXMgYQorZGlyZWN0b3J5LCBkYXRhIG9iamVjdHMgd2lsbCBoYXZlIGEgZmlsZSBpbiB0aGUgZGlyZWN0b3J5IGNhbGxlZCAiZGF0YSIgdGhhdAorYWN0dWFsbHkgaG9sZHMgdGhlIGRhdGEuCisKK1NwZWNpYWwgb2JqZWN0cyBhcmUgc2ltaWxhciB0byBkYXRhIG9iamVjdHMsIGV4Y2VwdCB0aGVpciBmaWxlbmFtZXMgYmVnaW4KKyJTLi4uIiBvciAiVC4uLiIuCisKKworSWYgYW4gb2JqZWN0IGhhcyBjaGlsZHJlbiwgdGhlbiBpdCB3aWxsIGJlIHJlcHJlc2VudGVkIGFzIGEgZGlyZWN0b3J5LgorSW1tZWRpYXRlbHkgaW4gdGhlIHJlcHJlc2VudGF0aXZlIGRpcmVjdG9yeSBhcmUgYSBjb2xsZWN0aW9uIG9mIGRpcmVjdG9yaWVzCituYW1lZCBmb3IgaGFzaCB2YWx1ZXMgb2YgdGhlIGNoaWxkIG9iamVjdCBrZXlzIHdpdGggYW4gJ0AnIHByZXBlbmRlZC4gIEludG8KK3RoaXMgZGlyZWN0b3J5LCBpZiBwb3NzaWJsZSwgd2lsbCBiZSBwbGFjZWQgdGhlIHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgY2hpbGQKK29iamVjdHM6CisKKwlJTkRFWCAgICAgSU5ERVggICAgICBJTkRFWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFUQSBGSUxFUworCT09PT09PT09PSA9PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09CisJY2FjaGUvQDRhL0kwM25mcy9AMzAvSmkwMDAwMDAwMDAwMDAwMDAtLWZIZzhoaTg0MDAKKwljYWNoZS9ANGEvSTAzbmZzL0AzMC9KaTAwMDAwMDAwMDAwMDAwMC0tZkhnOGhpODQwMC9ANzUvRXMwZzAwMHcuLi5EQjFyeQorCWNhY2hlL0A0YS9JMDNuZnMvQDMwL0ppMDAwMDAwMDAwMDAwMDAwLS1mSGc4aGk4NDAwL0A3NS9FczBnMDAwdy4uLk4yMnJ5CisJY2FjaGUvQDRhL0kwM25mcy9AMzAvSmkwMDAwMDAwMDAwMDAwMDAtLWZIZzhoaTg0MDAvQDc1L0VzMGcwMDB3Li4uRlAxcnkKKworCitJZiB0aGUga2V5IGlzIHNvIGxvbmcgdGhhdCBpdCBleGNlZWRzIE5BTUVfTUFYIHdpdGggdGhlIGRlY29yYXRpb25zIGFkZGVkIG9uIHRvCitpdCwgdGhlbiBpdCB3aWxsIGJlIGN1dCBpbnRvIHBpZWNlcywgdGhlIGZpcnN0IGZldyBvZiB3aGljaCB3aWxsIGJlIHVzZWQgdG8KK21ha2UgYSBuZXN0IG9mIGRpcmVjdG9yaWVzLCBhbmQgdGhlIGxhc3Qgb25lIG9mIHdoaWNoIHdpbGwgYmUgdGhlIG9iamVjdHMKK2luc2lkZSB0aGUgbGFzdCBkaXJlY3RvcnkuICBUaGUgbmFtZXMgb2YgdGhlIGludGVybWVkaWF0ZSBkaXJlY3RvcmllcyB3aWxsIGhhdmUKKycrJyBwcmVwZW5kZWQ6CisKKwlKMTIyMy9AMjMvK3h5Li4uei8ra2wuLi5tL0VwcXIKKworCitOb3RlIHRoYXQga2V5cyBhcmUgcmF3IGRhdGEsIGFuZCBub3Qgb25seSBtYXkgdGhleSBleGNlZWQgTkFNRV9NQVggaW4gc2l6ZSwKK3RoZXkgbWF5IGFsc28gY29udGFpbiB0aGluZ3MgbGlrZSAnLycgYW5kIE5VTCBjaGFyYWN0ZXJzLCBhbmQgc28gdGhleSBtYXkgbm90CitiZSBzdWl0YWJsZSBmb3IgdHVybmluZyBkaXJlY3RseSBpbnRvIGEgZmlsZW5hbWUuCisKK1RvIGhhbmRsZSB0aGlzLCBDYWNoZUZpbGVzIHdpbGwgdXNlIGEgc3VpdGFibHkgcHJpbnRhYmxlIGZpbGVuYW1lIGRpcmVjdGx5IGFuZAorImJhc2UtNjQiIGVuY29kZSBvbmVzIHRoYXQgYXJlbid0IGRpcmVjdGx5IHN1aXRhYmxlLiAgVGhlIHR3byB2ZXJzaW9ucyBvZgorb2JqZWN0IGZpbGVuYW1lcyBpbmRpY2F0ZSB0aGUgZW5jb2Rpbmc6CisKKwlPQkpFQ1QgVFlQRQlQUklOVEFCTEUJRU5DT0RFRAorCT09PT09PT09PT09PT09PQk9PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09CisJSW5kZXgJCSJJLi4uIgkJIkouLi4iCisJRGF0YQkJIkQuLi4iCQkiRS4uLiIKKwlTcGVjaWFsCQkiUy4uLiIJCSJULi4uIgorCitJbnRlcm1lZGlhdGUgZGlyZWN0b3JpZXMgYXJlIGFsd2F5cyAiQCIgb3IgIisiIGFzIGFwcHJvcHJpYXRlLgorCisKK0VhY2ggb2JqZWN0IGluIHRoZSBjYWNoZSBoYXMgYW4gZXh0ZW5kZWQgYXR0cmlidXRlIGxhYmVsIHRoYXQgaG9sZHMgdGhlIG9iamVjdAordHlwZSBJRCAocmVxdWlyZWQgdG8gZGlzdGluZ3Vpc2ggc3BlY2lhbCBvYmplY3RzKSBhbmQgdGhlIGF1eGlsaWFyeSBkYXRhIGZyb20KK3RoZSBuZXRmcy4gIFRoZSBsYXR0ZXIgaXMgdXNlZCB0byBkZXRlY3Qgc3RhbGUgb2JqZWN0cyBpbiB0aGUgY2FjaGUgYW5kIHVwZGF0ZQorb3IgcmV0aXJlIHRoZW0uCisKKworTm90ZSB0aGF0IENhY2hlRmlsZXMgd2lsbCBlcmFzZSBmcm9tIHRoZSBjYWNoZSBhbnkgZmlsZSBpdCBkb2Vzbid0IHJlY29nbmlzZSBvcgorYW55IGZpbGUgb2YgYW4gaW5jb3JyZWN0IHR5cGUgKHN1Y2ggYXMgYSBGSUZPIGZpbGUgb3IgYSBkZXZpY2UgZmlsZSkuCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT0KK1NFQ1VSSVRZIE1PREVMIEFORCBTRUxJTlVYCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitDYWNoZUZpbGVzIGlzIGltcGxlbWVudGVkIHRvIGRlYWwgcHJvcGVybHkgd2l0aCB0aGUgTFNNIHNlY3VyaXR5IGZlYXR1cmVzIG9mCit0aGUgTGludXgga2VybmVsIGFuZCB0aGUgU0VMaW51eCBmYWNpbGl0eS4KKworT25lIG9mIHRoZSBwcm9ibGVtcyB0aGF0IENhY2hlRmlsZXMgZmFjZXMgaXMgdGhhdCBpdCBpcyBnZW5lcmFsbHkgYWN0aW5nIG9uCitiZWhhbGYgb2YgYSBwcm9jZXNzLCBhbmQgcnVubmluZyBpbiB0aGF0IHByb2Nlc3MncyBjb250ZXh0LCBhbmQgdGhhdCBpbmNsdWRlcyBhCitzZWN1cml0eSBjb250ZXh0IHRoYXQgaXMgbm90IGFwcHJvcHJpYXRlIGZvciBhY2Nlc3NpbmcgdGhlIGNhY2hlIC0gZWl0aGVyCitiZWNhdXNlIHRoZSBmaWxlcyBpbiB0aGUgY2FjaGUgYXJlIGluYWNjZXNzaWJsZSB0byB0aGF0IHByb2Nlc3MsIG9yIGJlY2F1c2UgaWYKK3RoZSBwcm9jZXNzIGNyZWF0ZXMgYSBmaWxlIGluIHRoZSBjYWNoZSwgdGhhdCBmaWxlIG1heSBiZSBpbmFjY2Vzc2libGUgdG8gb3RoZXIKK3Byb2Nlc3Nlcy4KKworVGhlIHdheSBDYWNoZUZpbGVzIHdvcmtzIGlzIHRvIHRlbXBvcmFyaWx5IGNoYW5nZSB0aGUgc2VjdXJpdHkgY29udGV4dCAoZnN1aWQsCitmc2dpZCBhbmQgYWN0b3Igc2VjdXJpdHkgbGFiZWwpIHRoYXQgdGhlIHByb2Nlc3MgYWN0cyBhcyAtIHdpdGhvdXQgY2hhbmdpbmcgdGhlCitzZWN1cml0eSBjb250ZXh0IG9mIHRoZSBwcm9jZXNzIHdoZW4gaXQgdGhlIHRhcmdldCBvZiBhbiBvcGVyYXRpb24gcGVyZm9ybWVkIGJ5Citzb21lIG90aGVyIHByb2Nlc3MgKHNvIHNpZ25hbGxpbmcgYW5kIHN1Y2hsaWtlIHN0aWxsIHdvcmsgY29ycmVjdGx5KS4KKworCitXaGVuIHRoZSBDYWNoZUZpbGVzIG1vZHVsZSBpcyBhc2tlZCB0byBiaW5kIHRvIGl0cyBjYWNoZSwgaXQ6CisKKyAoMSkgRmluZHMgdGhlIHNlY3VyaXR5IGxhYmVsIGF0dGFjaGVkIHRvIHRoZSByb290IGNhY2hlIGRpcmVjdG9yeSBhbmQgdXNlcworICAgICB0aGF0IGFzIHRoZSBzZWN1cml0eSBsYWJlbCB3aXRoIHdoaWNoIGl0IHdpbGwgY3JlYXRlIGZpbGVzLiAgQnkgZGVmYXVsdCwKKyAgICAgdGhpcyBpczoKKworCWNhY2hlZmlsZXNfdmFyX3QKKworICgyKSBGaW5kcyB0aGUgc2VjdXJpdHkgbGFiZWwgb2YgdGhlIHByb2Nlc3Mgd2hpY2ggaXNzdWVkIHRoZSBiaW5kIHJlcXVlc3QKKyAgICAgKHByZXN1bWVkIHRvIGJlIHRoZSBjYWNoZWZpbGVzZCBkYWVtb24pLCB3aGljaCBieSBkZWZhdWx0IHdpbGwgYmU6CisKKwljYWNoZWZpbGVzZF90CisKKyAgICAgYW5kIGFza3MgTFNNIHRvIHN1cHBseSBhIHNlY3VyaXR5IElEIGFzIHdoaWNoIGl0IHNob3VsZCBhY3QgZ2l2ZW4gdGhlCisgICAgIGRhZW1vbidzIGxhYmVsLiAgQnkgZGVmYXVsdCwgdGhpcyB3aWxsIGJlOgorCisJY2FjaGVmaWxlc19rZXJuZWxfdAorCisgICAgIFNFTGludXggdHJhbnNpdGlvbnMgdGhlIGRhZW1vbidzIHNlY3VyaXR5IElEIHRvIHRoZSBtb2R1bGUncyBzZWN1cml0eSBJRAorICAgICBiYXNlZCBvbiBhIHJ1bGUgb2YgdGhpcyBmb3JtIGluIHRoZSBwb2xpY3kuCisKKwl0eXBlX3RyYW5zaXRpb24gPGRhZW1vbidzLUlEPiBrZXJuZWxfdCA6IHByb2Nlc3MgPG1vZHVsZSdzLUlEPjsKKworICAgICBGb3IgaW5zdGFuY2U6CisKKwl0eXBlX3RyYW5zaXRpb24gY2FjaGVmaWxlc2RfdCBrZXJuZWxfdCA6IHByb2Nlc3MgY2FjaGVmaWxlc19rZXJuZWxfdDsKKworCitUaGUgbW9kdWxlJ3Mgc2VjdXJpdHkgSUQgZ2l2ZXMgaXQgcGVybWlzc2lvbiB0byBjcmVhdGUsIG1vdmUgYW5kIHJlbW92ZSBmaWxlcworYW5kIGRpcmVjdG9yaWVzIGluIHRoZSBjYWNoZSwgdG8gZmluZCBhbmQgYWNjZXNzIGRpcmVjdG9yaWVzIGFuZCBmaWxlcyBpbiB0aGUKK2NhY2hlLCB0byBzZXQgYW5kIGFjY2VzcyBleHRlbmRlZCBhdHRyaWJ1dGVzIG9uIGNhY2hlIG9iamVjdHMsIGFuZCB0byByZWFkIGFuZAord3JpdGUgZmlsZXMgaW4gdGhlIGNhY2hlLgorCitUaGUgZGFlbW9uJ3Mgc2VjdXJpdHkgSUQgZ2l2ZXMgaXQgb25seSBhIHZlcnkgcmVzdHJpY3RlZCBzZXQgb2YgcGVybWlzc2lvbnM6IGl0CittYXkgc2NhbiBkaXJlY3Rvcmllcywgc3RhdCBmaWxlcyBhbmQgZXJhc2UgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLiAgSXQgbWF5Citub3QgcmVhZCBvciB3cml0ZSBmaWxlcyBpbiB0aGUgY2FjaGUsIGFuZCBzbyBpdCBpcyBwcmVjbHVkZWQgZnJvbSBhY2Nlc3NpbmcgdGhlCitkYXRhIGNhY2hlZCB0aGVyZWluOyBub3IgaXMgaXQgcGVybWl0dGVkIHRvIGNyZWF0ZSBuZXcgZmlsZXMgaW4gdGhlIGNhY2hlLgorCisKK1RoZXJlIGFyZSBwb2xpY3kgc291cmNlIGZpbGVzIGF2YWlsYWJsZSBpbjoKKworCWh0dHA6Ly9wZW9wbGUucmVkaGF0LmNvbS9+ZGhvd2VsbHMvZnNjYWNoZS9jYWNoZWZpbGVzZC0wLjgudGFyLmJ6MgorCithbmQgbGF0ZXIgdmVyc2lvbnMuICBJbiB0aGF0IHRhcmJhbGwsIHNlZSB0aGUgZmlsZXM6CisKKwljYWNoZWZpbGVzZC50ZQorCWNhY2hlZmlsZXNkLmZjCisJY2FjaGVmaWxlc2QuaWYKKworVGhleSBhcmUgYnVpbHQgYW5kIGluc3RhbGxlZCBkaXJlY3RseSBieSB0aGUgUlBNLgorCitJZiBhIG5vbi1SUE0gYmFzZWQgc3lzdGVtIGlzIGJlaW5nIHVzZWQsIHRoZW4gY29weSB0aGUgYWJvdmUgZmlsZXMgdG8gdGhlaXIgb3duCitkaXJlY3RvcnkgYW5kIHJ1bjoKKworCW1ha2UgLWYgL3Vzci9zaGFyZS9zZWxpbnV4L2RldmVsL01ha2VmaWxlCisJc2Vtb2R1bGUgLWkgY2FjaGVmaWxlc2QucHAKKworWW91IHdpbGwgbmVlZCBjaGVja3BvbGljeSBhbmQgc2VsaW51eC1wb2xpY3ktZGV2ZWwgaW5zdGFsbGVkIHByaW9yIHRvIHRoZQorYnVpbGQuCisKKworQnkgZGVmYXVsdCwgdGhlIGNhY2hlIGlzIGxvY2F0ZWQgaW4gL3Zhci9mc2NhY2hlLCBidXQgaWYgaXQgaXMgZGVzaXJhYmxlIHRoYXQKK2l0IHNob3VsZCBiZSBlbHNld2hlcmUsIHRoYW4gZWl0aGVyIHRoZSBhYm92ZSBwb2xpY3kgZmlsZXMgbXVzdCBiZSBhbHRlcmVkLCBvcgorYW4gYXV4aWxpYXJ5IHBvbGljeSBtdXN0IGJlIGluc3RhbGxlZCB0byBsYWJlbCB0aGUgYWx0ZXJuYXRlIGxvY2F0aW9uIG9mIHRoZQorY2FjaGUuCisKK0ZvciBpbnN0cnVjdGlvbnMgb24gaG93IHRvIGFkZCBhbiBhdXhpbGlhcnkgcG9saWN5IHRvIGVuYWJsZSB0aGUgY2FjaGUgdG8gYmUKK2xvY2F0ZWQgZWxzZXdoZXJlIHdoZW4gU0VMaW51eCBpcyBpbiBlbmZvcmNpbmcgbW9kZSwgcGxlYXNlIHNlZToKKworCS91c3Ivc2hhcmUvZG9jL2NhY2hlZmlsZXNkLSovbW92ZS1jYWNoZS50eHQKKworV2hlbiB0aGUgY2FjaGVmaWxlc2QgcnBtIGlzIGluc3RhbGxlZDsgYWx0ZXJuYXRpdmVseSwgdGhlIGRvY3VtZW50IGNhbiBiZSBmb3VuZAoraW4gdGhlIHNvdXJjZXMuCisKKworPT09PT09PT09PT09PT09PT09CitBIE5PVEUgT04gU0VDVVJJVFkKKz09PT09PT09PT09PT09PT09PQorCitDYWNoZUZpbGVzIG1ha2VzIHVzZSBvZiB0aGUgc3BsaXQgc2VjdXJpdHkgaW4gdGhlIHRhc2tfc3RydWN0LiAgSXQgYWxsb2NhdGVzCitpdHMgb3duIHRhc2tfc2VjdXJpdHkgc3RydWN0dXJlLCBhbmQgcmVkaXJlY3RzIGN1cnJlbnQtPmNyZWQgdG8gcG9pbnQgdG8gaXQKK3doZW4gaXQgYWN0cyBvbiBiZWhhbGYgb2YgYW5vdGhlciBwcm9jZXNzLCBpbiB0aGF0IHByb2Nlc3MncyBjb250ZXh0LgorCitUaGUgcmVhc29uIGl0IGRvZXMgdGhpcyBpcyB0aGF0IGl0IGNhbGxzIHZmc19ta2RpcigpIGFuZCBzdWNobGlrZSByYXRoZXIgdGhhbgorYnlwYXNzaW5nIHNlY3VyaXR5IGFuZCBjYWxsaW5nIGlub2RlIG9wcyBkaXJlY3RseS4gIFRoZXJlZm9yZSB0aGUgVkZTIGFuZCBMU00KK21heSBkZW55IHRoZSBDYWNoZUZpbGVzIGFjY2VzcyB0byB0aGUgY2FjaGUgZGF0YSBiZWNhdXNlIHVuZGVyIHNvbWUKK2NpcmN1bXN0YW5jZXMgdGhlIGNhY2hpbmcgY29kZSBpcyBydW5uaW5nIGluIHRoZSBzZWN1cml0eSBjb250ZXh0IG9mIHdoYXRldmVyCitwcm9jZXNzIGlzc3VlZCB0aGUgb3JpZ2luYWwgc3lzY2FsbCBvbiB0aGUgbmV0ZnMuCisKK0Z1cnRoZXJtb3JlLCBzaG91bGQgQ2FjaGVGaWxlcyBjcmVhdGUgYSBmaWxlIG9yIGRpcmVjdG9yeSwgdGhlIHNlY3VyaXR5CitwYXJhbWV0ZXJzIHdpdGggdGhhdCBvYmplY3QgaXMgY3JlYXRlZCAoVUlELCBHSUQsIHNlY3VyaXR5IGxhYmVsKSB3b3VsZCBiZQorZGVyaXZlZCBmcm9tIHRoYXQgcHJvY2VzcyB0aGF0IGlzc3VlZCB0aGUgc3lzdGVtIGNhbGwsIHRodXMgcG90ZW50aWFsbHkKK3ByZXZlbnRpbmcgb3RoZXIgcHJvY2Vzc2VzIGZyb20gYWNjZXNzaW5nIHRoZSBjYWNoZSAtIGluY2x1ZGluZyBDYWNoZUZpbGVzJ3MKK2NhY2hlIG1hbmFnZW1lbnQgZGFlbW9uIChjYWNoZWZpbGVzZCkuCisKK1doYXQgaXMgcmVxdWlyZWQgaXMgdG8gdGVtcG9yYXJpbHkgb3ZlcnJpZGUgdGhlIHNlY3VyaXR5IG9mIHRoZSBwcm9jZXNzIHRoYXQKK2lzc3VlZCB0aGUgc3lzdGVtIGNhbGwuICBXZSBjYW4ndCwgaG93ZXZlciwganVzdCBkbyBhbiBpbi1wbGFjZSBjaGFuZ2Ugb2YgdGhlCitzZWN1cml0eSBkYXRhIGFzIHRoYXQgYWZmZWN0cyB0aGUgcHJvY2VzcyBhcyBhbiBvYmplY3QsIG5vdCBqdXN0IGFzIGEgc3ViamVjdC4KK1RoaXMgbWVhbnMgaXQgbWF5IGxvc2Ugc2lnbmFscyBvciBwdHJhY2UgZXZlbnRzIGZvciBleGFtcGxlLCBhbmQgYWZmZWN0cyB3aGF0Cit0aGUgcHJvY2VzcyBsb29rcyBsaWtlIGluIC9wcm9jLgorCitTbyBDYWNoZUZpbGVzIG1ha2VzIHVzZSBvZiBhIGxvZ2ljYWwgc3BsaXQgaW4gdGhlIHNlY3VyaXR5IGJldHdlZW4gdGhlCitvYmplY3RpdmUgc2VjdXJpdHkgKHRhc2stPnJlYWxfY3JlZCkgYW5kIHRoZSBzdWJqZWN0aXZlIHNlY3VyaXR5ICh0YXNrLT5jcmVkKS4KK1RoZSBvYmplY3RpdmUgc2VjdXJpdHkgaG9sZHMgdGhlIGludHJpbnNpYyBzZWN1cml0eSBwcm9wZXJ0aWVzIG9mIGEgcHJvY2VzcyBhbmQKK2lzIG5ldmVyIG92ZXJyaWRkZW4uICBUaGlzIGlzIHdoYXQgYXBwZWFycyBpbiAvcHJvYywgYW5kIGlzIHdoYXQgaXMgdXNlZCB3aGVuIGEKK3Byb2Nlc3MgaXMgdGhlIHRhcmdldCBvZiBhbiBvcGVyYXRpb24gYnkgc29tZSBvdGhlciBwcm9jZXNzIChTSUdLSUxMIGZvcgorZXhhbXBsZSkuCisKK1RoZSBzdWJqZWN0aXZlIHNlY3VyaXR5IGhvbGRzIHRoZSBhY3RpdmUgc2VjdXJpdHkgcHJvcGVydGllcyBvZiBhIHByb2Nlc3MsIGFuZAorbWF5IGJlIG92ZXJyaWRkZW4uICBUaGlzIGlzIG5vdCBzZWVuIGV4dGVybmFsbHksIGFuZCBpcyB1c2VkIHdoYW4gYSBwcm9jZXNzCithY3RzIHVwb24gYW5vdGhlciBvYmplY3QsIGZvciBleGFtcGxlIFNJR0tJTExpbmcgYW5vdGhlciBwcm9jZXNzIG9yIG9wZW5pbmcgYQorZmlsZS4KKworTFNNIGhvb2tzIGV4aXN0IHRoYXQgYWxsb3cgU0VMaW51eCAob3IgU21hY2sgb3Igd2hhdGV2ZXIpIHRvIHJlamVjdCBhIHJlcXVlc3QKK2ZvciBDYWNoZUZpbGVzIHRvIHJ1biBpbiBhIGNvbnRleHQgb2YgYSBzcGVjaWZpYyBzZWN1cml0eSBsYWJlbCwgb3IgdG8gY3JlYXRlCitmaWxlcyBhbmQgZGlyZWN0b3JpZXMgd2l0aCBhbm90aGVyIHNlY3VyaXR5IGxhYmVsLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09CitTVEFUSVNUSUNBTCBJTkZPUk1BVElPTgorPT09PT09PT09PT09PT09PT09PT09PT0KKworSWYgRlMtQ2FjaGUgaXMgY29tcGlsZWQgd2l0aCB0aGUgZm9sbG93aW5nIG9wdGlvbiBlbmFibGVkOgorCisJQ09ORklHX0NBQ0hFRklMRVNfSElTVE9HUkFNPXkKKwordGhlbiBpdCB3aWxsIGdhdGhlciBjZXJ0YWluIHN0YXRpc3RpY3MgYW5kIGRpc3BsYXkgdGhlbSB0aHJvdWdoIGEgcHJvYyBmaWxlLgorCisgKCopIC9wcm9jL2ZzL2NhY2hlZmlsZXMvaGlzdG9ncmFtCisKKwljYXQgL3Byb2MvZnMvY2FjaGVmaWxlcy9oaXN0b2dyYW0KKwlKSUZTICBTRUNTICBMT09LVVBTICAgTUtESVJTICAgIENSRUFURVMKKwk9PT09PSA9PT09PSA9PT09PT09PT0gPT09PT09PT09ID09PT09PT09PQorCisgICAgIFRoaXMgc2hvd3MgdGhlIGJyZWFrZG93biBvZiB0aGUgbnVtYmVyIG9mIHRpbWVzIGVhY2ggYW1vdW50IG9mIHRpbWUKKyAgICAgYmV0d2VlbiAwIGppZmZpZXMgYW5kIEhaLTEgamlmZmllcyBhIHZhcmlldHkgb2YgdGFza3MgdG9vayB0byBydW4uICBUaGUKKyAgICAgY29sdW1ucyBhcmUgYXMgZm9sbG93czoKKworCUNPTFVNTgkJVElNRSBNRUFTVVJFTUVOVAorCT09PT09PT0JCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwlMT09LVVBTCQlMZW5ndGggb2YgdGltZSB0byBwZXJmb3JtIGEgbG9va3VwIG9uIHRoZSBiYWNraW5nIGZzCisJTUtESVJTCQlMZW5ndGggb2YgdGltZSB0byBwZXJmb3JtIGEgbWtkaXIgb24gdGhlIGJhY2tpbmcgZnMKKwlDUkVBVEVTCQlMZW5ndGggb2YgdGltZSB0byBwZXJmb3JtIGEgY3JlYXRlIG9uIHRoZSBiYWNraW5nIGZzCisKKyAgICAgRWFjaCByb3cgc2hvd3MgdGhlIG51bWJlciBvZiBldmVudHMgdGhhdCB0b29rIGEgcGFydGljdWxhciByYW5nZSBvZiB0aW1lcy4KKyAgICAgRWFjaCBzdGVwIGlzIDEgamlmZnkgaW4gc2l6ZS4gIFRoZSBKSUZTIGNvbHVtbiBpbmRpY2F0ZXMgdGhlIHBhcnRpY3VsYXIKKyAgICAgamlmZnkgcmFuZ2UgY292ZXJlZCwgYW5kIHRoZSBTRUNTIGZpZWxkIHRoZSBlcXVpdmFsZW50IG51bWJlciBvZiBzZWNvbmRzLgorCisKKz09PT09PT09PQorREVCVUdHSU5HCis9PT09PT09PT0KKworSWYgQ09ORklHX0NBQ0hFRklMRVNfREVCVUcgaXMgZW5hYmxlZCwgdGhlIENhY2hlRmlsZXMgZmFjaWxpdHkgY2FuIGhhdmUgcnVudGltZQorZGVidWdnaW5nIGVuYWJsZWQgYnkgYWRqdXN0aW5nIHRoZSB2YWx1ZSBpbjoKKworCS9zeXMvbW9kdWxlL2NhY2hlZmlsZXMvcGFyYW1ldGVycy9kZWJ1ZworCitUaGlzIGlzIGEgYml0bWFzayBvZiBkZWJ1Z2dpbmcgc3RyZWFtcyB0byBlbmFibGU6CisKKwlCSVQJVkFMVUUJU1RSRUFNCQkJCVBPSU5UCisJPT09PT09PQk9PT09PT09CT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT0KKwkwCTEJR2VuZXJhbAkJCQlGdW5jdGlvbiBlbnRyeSB0cmFjZQorCTEJMgkJCQkJRnVuY3Rpb24gZXhpdCB0cmFjZQorCTIJNAkJCQkJR2VuZXJhbAorCitUaGUgYXBwcm9wcmlhdGUgc2V0IG9mIHZhbHVlcyBzaG91bGQgYmUgT1InZCB0b2dldGhlciBhbmQgdGhlIHJlc3VsdCB3cml0dGVuIHRvCit0aGUgY29udHJvbCBmaWxlLiAgRm9yIGV4YW1wbGU6CisKKwllY2hvICQoKDF8NHw4KSkgPi9zeXMvbW9kdWxlL2NhY2hlZmlsZXMvcGFyYW1ldGVycy9kZWJ1ZworCit3aWxsIHR1cm4gb24gYWxsIGZ1bmN0aW9uIGVudHJ5IGRlYnVnZ2luZy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2FjaGluZy9mc2NhY2hlLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2FjaGluZy9mc2NhY2hlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGYwYTU3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9jYWNoaW5nL2ZzY2FjaGUudHh0CkBAIC0wLDAgKzEsNDQ4IEBACisJCQkgID09PT09PT09PT09PT09PT09PT09PT09PT09CisJCQkgIEdlbmVyYWwgRmlsZXN5c3RlbSBDYWNoaW5nCisJCQkgID09PT09PT09PT09PT09PT09PT09PT09PT09CisKKz09PT09PT09CitPVkVSVklFVworPT09PT09PT0KKworVGhpcyBmYWNpbGl0eSBpcyBhIGdlbmVyYWwgcHVycG9zZSBjYWNoZSBmb3IgbmV0d29yayBmaWxlc3lzdGVtcywgdGhvdWdoIGl0Citjb3VsZCBiZSB1c2VkIGZvciBjYWNoaW5nIG90aGVyIHRoaW5ncyBzdWNoIGFzIElTTzk2NjAgZmlsZXN5c3RlbXMgdG9vLgorCitGUy1DYWNoZSBtZWRpYXRlcyBiZXR3ZWVuIGNhY2hlIGJhY2tlbmRzIChzdWNoIGFzIENhY2hlRlMpIGFuZCBuZXR3b3JrCitmaWxlc3lzdGVtczoKKworCSstLS0tLS0tLS0rCisJfCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0rCisJfCAgIE5GUyAgIHwtLSsgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8CisJfCAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICstLT58ICAgQ2FjaGVGUyAgICB8CisJKy0tLS0tLS0tLSsgIHwgICArLS0tLS0tLS0tLSsgIHwgICB8ICAvZGV2L2hkYTUgICB8CisJICAgICAgICAgICAgIHwgICB8ICAgICAgICAgIHwgIHwgICArLS0tLS0tLS0tLS0tLS0rCisJKy0tLS0tLS0tLSsgICstLT58ICAgICAgICAgIHwgIHwKKwl8ICAgICAgICAgfCAgICAgIHwgICAgICAgICAgfC0tKworCXwgICBBRlMgICB8LS0tLS0+fCBGUy1DYWNoZSB8CisJfCAgICAgICAgIHwgICAgICB8ICAgICAgICAgIHwtLSsKKwkrLS0tLS0tLS0tKyAgKy0tPnwgICAgICAgICAgfCAgfAorCSAgICAgICAgICAgICB8ICAgfCAgICAgICAgICB8ICB8ICAgKy0tLS0tLS0tLS0tLS0tKworCSstLS0tLS0tLS0rICB8ICAgKy0tLS0tLS0tLS0rICB8ICAgfCAgICAgICAgICAgICAgfAorCXwgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICArLS0+fCAgQ2FjaGVGaWxlcyAgfAorCXwgIElTT0ZTICB8LS0rICAgICAgICAgICAgICAgICAgICAgfCAgL3Zhci9jYWNoZSAgfAorCXwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tKworCSstLS0tLS0tLS0rCisKK09yIHRvIGxvb2sgYXQgaXQgYW5vdGhlciB3YXksIEZTLUNhY2hlIGlzIGEgbW9kdWxlIHRoYXQgcHJvdmlkZXMgYSBjYWNoaW5nCitmYWNpbGl0eSB0byBhIG5ldHdvcmsgZmlsZXN5c3RlbSBzdWNoIHRoYXQgdGhlIGNhY2hlIGlzIHRyYW5zcGFyZW50IHRvIHRoZQordXNlcjoKKworCSstLS0tLS0tLS0rCisJfCAgICAgICAgIHwKKwl8IFNlcnZlciAgfAorCXwgICAgICAgICB8CisJKy0tLS0tLS0tLSsKKwkgICAgIHwgICAgICAgICAgICAgICAgICBORVRXT1JLCisJfn5+fn58fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCSAgICAgfAorCSAgICAgfCAgICAgICAgICAgKy0tLS0tLS0tLS0rCisJICAgICBWICAgICAgICAgICB8ICAgICAgICAgIHwKKwkrLS0tLS0tLS0tKyAgICAgIHwgICAgICAgICAgfAorCXwgICAgICAgICB8ICAgICAgfCAgICAgICAgICB8CisJfCAgIE5GUyAgIHwtLS0tLT58IEZTLUNhY2hlIHwKKwl8ICAgICAgICAgfCAgICAgIHwgICAgICAgICAgfC0tKworCSstLS0tLS0tLS0rICAgICAgfCAgICAgICAgICB8ICB8ICAgKy0tLS0tLS0tLS0tLS0tKyAgICstLS0tLS0tLS0tLS0tLSsKKwkgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgfCAgIHwgICAgICAgICAgICAgIHwgICB8ICAgICAgICAgICAgICB8CisJICAgICBWICAgICAgICAgICArLS0tLS0tLS0tLSsgICstLT58ICBDYWNoZUZpbGVzICB8LS0+fCAgRXh0MyAgICAgICAgfAorCSstLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgfCAgL3Zhci9jYWNoZSAgfCAgIHwgIC9kZXYvc2RhNiAgIHwKKwl8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLSsgICArLS0tLS0tLS0tLS0tLS0rCisJfCAgIFZGUyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICBeCisJfCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisJKy0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLSsgICAgICB8CisJICAgICB8ICAgICAgICAgICAgICAgICAgS0VSTkVMIFNQQUNFICAgICAgICAgICAgICAgICAgICAgIHwgICAgICB8CisJfn5+fn58fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fnx+fn5+fn58fn5+fgorCSAgICAgfCAgICAgICAgICAgICAgICAgIFVTRVIgU1BBQ0UgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgfAorCSAgICAgViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgfAorCSstLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLSsKKwl8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8CisJfCBQcm9jZXNzIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYWNoZWZpbGVzZCAgfAorCXwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwKKwkrLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0rCisKKworRlMtQ2FjaGUgZG9lcyBub3QgZm9sbG93IHRoZSBpZGVhIG9mIGNvbXBsZXRlbHkgbG9hZGluZyBldmVyeSBuZXRmcyBmaWxlCitvcGVuZWQgaW4gaXRzIGVudGlyZXR5IGludG8gYSBjYWNoZSBiZWZvcmUgcGVybWl0dGluZyBpdCB0byBiZSBhY2Nlc3NlZCBhbmQKK3RoZW4gc2VydmluZyB0aGUgcGFnZXMgb3V0IG9mIHRoYXQgY2FjaGUgcmF0aGVyIHRoYW4gdGhlIG5ldGZzIGlub2RlIGJlY2F1c2U6CisKKyAoMSkgSXQgbXVzdCBiZSBwcmFjdGljYWwgdG8gb3BlcmF0ZSB3aXRob3V0IGEgY2FjaGUuCisKKyAoMikgVGhlIHNpemUgb2YgYW55IGFjY2Vzc2libGUgZmlsZSBtdXN0IG5vdCBiZSBsaW1pdGVkIHRvIHRoZSBzaXplIG9mIHRoZQorICAgICBjYWNoZS4KKworICgzKSBUaGUgY29tYmluZWQgc2l6ZSBvZiBhbGwgb3BlbmVkIGZpbGVzICh0aGlzIGluY2x1ZGVzIG1hcHBlZCBsaWJyYXJpZXMpCisgICAgIG11c3Qgbm90IGJlIGxpbWl0ZWQgdG8gdGhlIHNpemUgb2YgdGhlIGNhY2hlLgorCisgKDQpIFRoZSB1c2VyIHNob3VsZCBub3QgYmUgZm9yY2VkIHRvIGRvd25sb2FkIGFuIGVudGlyZSBmaWxlIGp1c3QgdG8gZG8gYQorICAgICBvbmUtb2ZmIGFjY2VzcyBvZiBhIHNtYWxsIHBvcnRpb24gb2YgaXQgKHN1Y2ggYXMgbWlnaHQgYmUgZG9uZSB3aXRoIHRoZQorICAgICAiZmlsZSIgcHJvZ3JhbSkuCisKK0l0IGluc3RlYWQgc2VydmVzIHRoZSBjYWNoZSBvdXQgaW4gUEFHRV9TSVpFIGNodW5rcyBhcyBhbmQgd2hlbiByZXF1ZXN0ZWQgYnkKK3RoZSBuZXRmcygncykgdXNpbmcgaXQuCisKKworRlMtQ2FjaGUgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBmYWNpbGl0aWVzOgorCisgKDEpIE1vcmUgdGhhbiBvbmUgY2FjaGUgY2FuIGJlIHVzZWQgYXQgb25jZS4gIENhY2hlcyBjYW4gYmUgc2VsZWN0ZWQKKyAgICAgZXhwbGljaXRseSBieSB1c2Ugb2YgdGFncy4KKworICgyKSBDYWNoZXMgY2FuIGJlIGFkZGVkIC8gcmVtb3ZlZCBhdCBhbnkgdGltZS4KKworICgzKSBUaGUgbmV0ZnMgaXMgcHJvdmlkZWQgd2l0aCBhbiBpbnRlcmZhY2UgdGhhdCBhbGxvd3MgZWl0aGVyIHBhcnR5IHRvCisgICAgIHdpdGhkcmF3IGNhY2hpbmcgZmFjaWxpdGllcyBmcm9tIGEgZmlsZSAocmVxdWlyZWQgZm9yICgyKSkuCisKKyAoNCkgVGhlIGludGVyZmFjZSB0byB0aGUgbmV0ZnMgcmV0dXJucyBhcyBmZXcgZXJyb3JzIGFzIHBvc3NpYmxlLCBwcmVmZXJyaW5nCisgICAgIHJhdGhlciB0byBsZXQgdGhlIG5ldGZzIHJlbWFpbiBvYmxpdmlvdXMuCisKKyAoNSkgQ29va2llcyBhcmUgdXNlZCB0byByZXByZXNlbnQgaW5kaWNlcywgZmlsZXMgYW5kIG90aGVyIG9iamVjdHMgdG8gdGhlCisgICAgIG5ldGZzLiAgVGhlIHNpbXBsZXN0IGNvb2tpZSBpcyBqdXN0IGEgTlVMTCBwb2ludGVyIC0gaW5kaWNhdGluZyBub3RoaW5nCisgICAgIGNhY2hlZCB0aGVyZS4KKworICg2KSBUaGUgbmV0ZnMgaXMgYWxsb3dlZCB0byBwcm9wb3NlIC0gZHluYW1pY2FsbHkgLSBhbnkgaW5kZXggaGllcmFyY2h5IGl0CisgICAgIGRlc2lyZXMsIHRob3VnaCBpdCBtdXN0IGJlIGF3YXJlIHRoYXQgdGhlIGluZGV4IHNlYXJjaCBmdW5jdGlvbiBpcworICAgICByZWN1cnNpdmUsIHN0YWNrIHNwYWNlIGlzIGxpbWl0ZWQsIGFuZCBpbmRpY2VzIGNhbiBvbmx5IGJlIGNoaWxkcmVuIG9mCisgICAgIGluZGljZXMuCisKKyAoNykgRGF0YSBJL08gaXMgZG9uZSBkaXJlY3QgdG8gYW5kIGZyb20gdGhlIG5ldGZzJ3MgcGFnZXMuICBUaGUgbmV0ZnMKKyAgICAgaW5kaWNhdGVzIHRoYXQgcGFnZSBBIGlzIGF0IGluZGV4IEIgb2YgdGhlIGRhdGEtZmlsZSByZXByZXNlbnRlZCBieSBjb29raWUKKyAgICAgQywgYW5kIHRoYXQgaXQgc2hvdWxkIGJlIHJlYWQgb3Igd3JpdHRlbi4gIFRoZSBjYWNoZSBiYWNrZW5kIG1heSBvciBtYXkKKyAgICAgbm90IHN0YXJ0IEkvTyBvbiB0aGF0IHBhZ2UsIGJ1dCBpZiBpdCBkb2VzLCBhIG5ldGZzIGNhbGxiYWNrIHdpbGwgYmUKKyAgICAgaW52b2tlZCB0byBpbmRpY2F0ZSBjb21wbGV0aW9uLiAgVGhlIEkvTyBtYXkgYmUgZWl0aGVyIHN5bmNocm9ub3VzIG9yCisgICAgIGFzeW5jaHJvbm91cy4KKworICg4KSBDb29raWVzIGNhbiBiZSAicmV0aXJlZCIgdXBvbiByZWxlYXNlLiAgQXQgdGhpcyBwb2ludCBGUy1DYWNoZSB3aWxsIG1hcmsKKyAgICAgdGhlbSBhcyBvYnNvbGV0ZSBhbmQgdGhlIGluZGV4IGhpZXJhcmNoeSByb290ZWQgYXQgdGhhdCBwb2ludCB3aWxsIGdldAorICAgICByZWN5Y2xlZC4KKworICg5KSBUaGUgbmV0ZnMgcHJvdmlkZXMgYSAibWF0Y2giIGZ1bmN0aW9uIGZvciBpbmRleCBzZWFyY2hlcy4gIEluIGFkZGl0aW9uIHRvCisgICAgIHNheWluZyB3aGV0aGVyIGEgbWF0Y2ggd2FzIG1hZGUgb3Igbm90LCB0aGlzIGNhbiBhbHNvIHNwZWNpZnkgdGhhdCBhbgorICAgICBlbnRyeSBzaG91bGQgYmUgdXBkYXRlZCBvciBkZWxldGVkLgorCisoMTApIEFzIG11Y2ggYXMgcG9zc2libGUgaXMgZG9uZSBhc3luY2hyb25vdXNseS4KKworCitGUy1DYWNoZSBtYWludGFpbnMgYSB2aXJ0dWFsIGluZGV4aW5nIHRyZWUgaW4gd2hpY2ggYWxsIGluZGljZXMsIGZpbGVzLCBvYmplY3RzCithbmQgcGFnZXMgYXJlIGtlcHQuICBCaXRzIG9mIHRoaXMgdHJlZSBtYXkgYWN0dWFsbHkgcmVzaWRlIGluIG9uZSBvciBtb3JlCitjYWNoZXMuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGU0RFRgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgIE5GUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBRlMKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tKworICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwKKyAgICAgICAgaG9tZWRpciAgICAgICAgICAgICAgICAgICAgIG1pcnJvciAgICAgICAgICBhZnMub3JnICAgcmVkaGF0LmNvbQorICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgKy0tLS0tLS0tLS0tLSsgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICArLS0tLS0tLS0tLSsKKyAgICAgfCAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKyAgIDAwMDAxICAgICAgICAwMDAwMiAgICAgICAwMDAwNyAgICAgICAgICAgMDAxMjUgICAgICAgIHZvbDAwMDAxICAgdm9sMDAwMDIKKyAgICAgfCAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyArLS0tKy0tLSsgICAgICstLS0tLSsgICAgICArLS0tKyAgICAgICstLS0tLS0rLS0tLS0tKyAgICAgICAgICAgICstLS0tLSstLS0tKworIHwgICB8ICAgfCAgICAgfCAgICAgfCAgICAgIHwgICB8ICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgICAgICAgfCAgICAgfCAgICB8CitQRzAgUEcxIFBHMiAgIFBHMCAgWEFUVFIgICBQRzAgUEcxICAgRElSRU5UIERJUkVOVCBESVJFTlQgICAgICAgIFIvVyAgIFIvTyAgQmFrCisgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgIFBHMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAwMDAxICAgMDAwMDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0rLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICB8ICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEcwIFBHMSBQRzIKKworSW4gdGhlIGV4YW1wbGUgYWJvdmUsIHlvdSBjYW4gc2VlIHR3byBuZXRmcydzIGJlaW5nIGJhY2tlZDogTkZTIGFuZCBBRlMuICBUaGVzZQoraGF2ZSBkaWZmZXJlbnQgaW5kZXggaGllcmFyY2hpZXM6CisKKyAoKikgVGhlIE5GUyBwcmltYXJ5IGluZGV4IGNvbnRhaW5zIHBlci1zZXJ2ZXIgaW5kaWNlcy4gIEVhY2ggc2VydmVyIGluZGV4IGlzCisgICAgIGluZGV4ZWQgYnkgTkZTIGZpbGUgaGFuZGxlcyB0byBnZXQgZGF0YSBmaWxlIG9iamVjdHMuICBFYWNoIGRhdGEgZmlsZQorICAgICBvYmplY3RzIGNhbiBoYXZlIGFuIGFycmF5IG9mIHBhZ2VzLCBidXQgbWF5IGFsc28gaGF2ZSBmdXJ0aGVyIGNoaWxkCisgICAgIG9iamVjdHMsIHN1Y2ggYXMgZXh0ZW5kZWQgYXR0cmlidXRlcyBhbmQgZGlyZWN0b3J5IGVudHJpZXMuICBFeHRlbmRlZAorICAgICBhdHRyaWJ1dGUgb2JqZWN0cyB0aGVtc2VsdmVzIGhhdmUgcGFnZS1hcnJheSBjb250ZW50cy4KKworICgqKSBUaGUgQUZTIHByaW1hcnkgaW5kZXggY29udGFpbnMgcGVyLWNlbGwgaW5kaWNlcy4gIEVhY2ggY2VsbCBpbmRleCBjb250YWlucworICAgICBwZXItbG9naWNhbC12b2x1bWUgaW5kaWNlcy4gIEVhY2ggb2Ygdm9sdW1lIGluZGV4IGNvbnRhaW5zIHVwIHRvIHRocmVlCisgICAgIGluZGljZXMgZm9yIHRoZSByZWFkLXdyaXRlLCByZWFkLW9ubHkgYW5kIGJhY2t1cCBtaXJyb3JzIG9mIHRob3NlIHZvbHVtZXMuCisgICAgIEVhY2ggb2YgdGhlc2UgY29udGFpbnMgdm5vZGUgZGF0YSBmaWxlIG9iamVjdHMsIGVhY2ggb2Ygd2hpY2ggY29udGFpbnMgYW4KKyAgICAgYXJyYXkgb2YgcGFnZXMuCisKK1RoZSB2ZXJ5IHRvcCBpbmRleCBpcyB0aGUgRlMtQ2FjaGUgbWFzdGVyIGluZGV4IGluIHdoaWNoIGluZGl2aWR1YWwgbmV0ZnMncworaGF2ZSBlbnRyaWVzLgorCitBbnkgaW5kZXggb2JqZWN0IG1heSByZXNpZGUgaW4gbW9yZSB0aGFuIG9uZSBjYWNoZSwgcHJvdmlkZWQgaXQgb25seSBoYXMgaW5kZXgKK2NoaWxkcmVuLiAgQW55IGluZGV4IHdpdGggbm9uLWluZGV4IG9iamVjdCBjaGlsZHJlbiB3aWxsIGJlIGFzc3VtZWQgdG8gb25seQorcmVzaWRlIGluIG9uZSBjYWNoZS4KKworCitUaGUgbmV0ZnMgQVBJIHRvIEZTLUNhY2hlIGNhbiBiZSBmb3VuZCBpbjoKKworCURvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2FjaGluZy9uZXRmcy1hcGkudHh0CisKK1RoZSBjYWNoZSBiYWNrZW5kIEFQSSB0byBGUy1DYWNoZSBjYW4gYmUgZm91bmQgaW46CisKKwlEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NhY2hpbmcvYmFja2VuZC1hcGkudHh0CisKK0EgZGVzY3JpcHRpb24gb2YgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9ucyBhbmQgb2JqZWN0IHN0YXRlIG1hY2hpbmUgY2FuIGJlCitmb3VuZCBpbjoKKworCURvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2FjaGluZy9vYmplY3QudHh0CisKKworPT09PT09PT09PT09PT09PT09PT09PT0KK1NUQVRJU1RJQ0FMIElORk9STUFUSU9OCis9PT09PT09PT09PT09PT09PT09PT09PQorCitJZiBGUy1DYWNoZSBpcyBjb21waWxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBlbmFibGVkOgorCisJQ09ORklHX0ZTQ0FDSEVfU1RBVFM9eQorCUNPTkZJR19GU0NBQ0hFX0hJU1RPR1JBTT15CisKK3RoZW4gaXQgd2lsbCBnYXRoZXIgY2VydGFpbiBzdGF0aXN0aWNzIGFuZCBkaXNwbGF5IHRoZW0gdGhyb3VnaCBhIG51bWJlciBvZgorcHJvYyBmaWxlcy4KKworICgqKSAvcHJvYy9mcy9mc2NhY2hlL3N0YXRzCisKKyAgICAgVGhpcyBzaG93cyBjb3VudHMgb2YgYSBudW1iZXIgb2YgZXZlbnRzIHRoYXQgY2FuIGhhcHBlbiBpbiBGUy1DYWNoZToKKworCUNMQVNTCUVWRU5UCU1FQU5JTkcKKwk9PT09PT09CT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCUNvb2tpZXMJaWR4PU4JTnVtYmVyIG9mIGluZGV4IGNvb2tpZXMgYWxsb2NhdGVkCisJCWRhdD1OCU51bWJlciBvZiBkYXRhIHN0b3JhZ2UgY29va2llcyBhbGxvY2F0ZWQKKwkJc3BjPU4JTnVtYmVyIG9mIHNwZWNpYWwgY29va2llcyBhbGxvY2F0ZWQKKwlPYmplY3RzCWFsYz1OCU51bWJlciBvZiBvYmplY3RzIGFsbG9jYXRlZAorCQluYWw9TglOdW1iZXIgb2Ygb2JqZWN0IGFsbG9jYXRpb24gZmFpbHVyZXMKKwkJYXZsPU4JTnVtYmVyIG9mIG9iamVjdHMgdGhhdCByZWFjaGVkIHRoZSBhdmFpbGFibGUgc3RhdGUKKwkJZGVkPU4JTnVtYmVyIG9mIG9iamVjdHMgdGhhdCByZWFjaGVkIHRoZSBkZWFkIHN0YXRlCisJQ2hrQXV4CW5vbj1OCU51bWJlciBvZiBvYmplY3RzIHRoYXQgZGlkbid0IGhhdmUgYSBjb2hlcmVuY3kgY2hlY2sKKwkJb2s9TglOdW1iZXIgb2Ygb2JqZWN0cyB0aGF0IHBhc3NlZCBhIGNvaGVyZW5jeSBjaGVjaworCQl1cGQ9TglOdW1iZXIgb2Ygb2JqZWN0cyB0aGF0IG5lZWRlZCBhIGNvaGVyZW5jeSBkYXRhIHVwZGF0ZQorCQlvYnM9TglOdW1iZXIgb2Ygb2JqZWN0cyB0aGF0IHdlcmUgZGVjbGFyZWQgb2Jzb2xldGUKKwlQYWdlcwltcms9TglOdW1iZXIgb2YgcGFnZXMgbWFya2VkIGFzIGJlaW5nIGNhY2hlZAorCQl1bmM9TglOdW1iZXIgb2YgdW5jYWNoZSBwYWdlIHJlcXVlc3RzIHNlZW4KKwlBY3F1aXJlCW49TglOdW1iZXIgb2YgYWNxdWlyZSBjb29raWUgcmVxdWVzdHMgc2VlbgorCQludWw9TglOdW1iZXIgb2YgYWNxIHJlcXMgZ2l2ZW4gYSBOVUxMIHBhcmVudAorCQlub2M9TglOdW1iZXIgb2YgYWNxIHJlcXMgcmVqZWN0ZWQgZHVlIHRvIG5vIGNhY2hlIGF2YWlsYWJsZQorCQlvaz1OCU51bWJlciBvZiBhY3EgcmVxcyBzdWNjZWVkZWQKKwkJbmJmPU4JTnVtYmVyIG9mIGFjcSByZXFzIHJlamVjdGVkIGR1ZSB0byBlcnJvcgorCQlvb209TglOdW1iZXIgb2YgYWNxIHJlcXMgZmFpbGVkIG9uIEVOT01FTQorCUxvb2t1cHMJbj1OCU51bWJlciBvZiBsb29rdXAgY2FsbHMgbWFkZSBvbiBjYWNoZSBiYWNrZW5kcworCQluZWc9TglOdW1iZXIgb2YgbmVnYXRpdmUgbG9va3VwcyBtYWRlCisJCXBvcz1OCU51bWJlciBvZiBwb3NpdGl2ZSBsb29rdXBzIG1hZGUKKwkJY3J0PU4JTnVtYmVyIG9mIG9iamVjdHMgY3JlYXRlZCBieSBsb29rdXAKKwkJdG1vPU4JTnVtYmVyIG9mIGxvb2t1cHMgdGltZWQgb3V0IGFuZCByZXF1ZXVlZAorCVVwZGF0ZXMJbj1OCU51bWJlciBvZiB1cGRhdGUgY29va2llIHJlcXVlc3RzIHNlZW4KKwkJbnVsPU4JTnVtYmVyIG9mIHVwZCByZXFzIGdpdmVuIGEgTlVMTCBwYXJlbnQKKwkJcnVuPU4JTnVtYmVyIG9mIHVwZCByZXFzIGdyYW50ZWQgQ1BVIHRpbWUKKwlSZWxpbnFzCW49TglOdW1iZXIgb2YgcmVsaW5xdWlzaCBjb29raWUgcmVxdWVzdHMgc2VlbgorCQludWw9TglOdW1iZXIgb2YgcmxxIHJlcXMgZ2l2ZW4gYSBOVUxMIHBhcmVudAorCQl3Y3I9TglOdW1iZXIgb2YgcmxxIHJlcXMgd2FpdGVkIG9uIGNvbXBsZXRpb24gb2YgY3JlYXRpb24KKwlBdHRyQ2hnCW49TglOdW1iZXIgb2YgYXR0cmlidXRlIGNoYW5nZWQgcmVxdWVzdHMgc2VlbgorCQlvaz1OCU51bWJlciBvZiBhdHRyIGNoYW5nZWQgcmVxdWVzdHMgcXVldWVkCisJCW5iZj1OCU51bWJlciBvZiBhdHRyIGNoYW5nZWQgcmVqZWN0ZWQgLUVOT0JVRlMKKwkJb29tPU4JTnVtYmVyIG9mIGF0dHIgY2hhbmdlZCBmYWlsZWQgLUVOT01FTQorCQlydW49TglOdW1iZXIgb2YgYXR0ciBjaGFuZ2VkIG9wcyBnaXZlbiBDUFUgdGltZQorCUFsbG9jcwluPU4JTnVtYmVyIG9mIGFsbG9jYXRpb24gcmVxdWVzdHMgc2VlbgorCQlvaz1OCU51bWJlciBvZiBzdWNjZXNzZnVsIGFsbG9jIHJlcXMKKwkJd3Q9TglOdW1iZXIgb2YgYWxsb2MgcmVxcyB0aGF0IHdhaXRlZCBvbiBsb29rdXAgY29tcGxldGlvbgorCQluYmY9TglOdW1iZXIgb2YgYWxsb2MgcmVxcyByZWplY3RlZCAtRU5PQlVGUworCQlpbnQ9TglOdW1iZXIgb2YgYWxsb2MgcmVxcyBhYm9ydGVkIC1FUkVTVEFSVFNZUworCQlvcHM9TglOdW1iZXIgb2YgYWxsb2MgcmVxcyBzdWJtaXR0ZWQKKwkJb3d0PU4JTnVtYmVyIG9mIGFsbG9jIHJlcXMgd2FpdGVkIGZvciBDUFUgdGltZQorCQlhYnQ9TglOdW1iZXIgb2YgYWxsb2MgcmVxcyBhYm9ydGVkIGR1ZSB0byBvYmplY3QgZGVhdGgKKwlSZXRydmxzCW49TglOdW1iZXIgb2YgcmV0cmlldmFsIChyZWFkKSByZXF1ZXN0cyBzZWVuCisJCW9rPU4JTnVtYmVyIG9mIHN1Y2Nlc3NmdWwgcmV0ciByZXFzCisJCXd0PU4JTnVtYmVyIG9mIHJldHIgcmVxcyB0aGF0IHdhaXRlZCBvbiBsb29rdXAgY29tcGxldGlvbgorCQlub2Q9TglOdW1iZXIgb2YgcmV0ciByZXFzIHJldHVybmVkIC1FTk9EQVRBCisJCW5iZj1OCU51bWJlciBvZiByZXRyIHJlcXMgcmVqZWN0ZWQgLUVOT0JVRlMKKwkJaW50PU4JTnVtYmVyIG9mIHJldHIgcmVxcyBhYm9ydGVkIC1FUkVTVEFSVFNZUworCQlvb209TglOdW1iZXIgb2YgcmV0ciByZXFzIGZhaWxlZCAtRU5PTUVNCisJCW9wcz1OCU51bWJlciBvZiByZXRyIHJlcXMgc3VibWl0dGVkCisJCW93dD1OCU51bWJlciBvZiByZXRyIHJlcXMgd2FpdGVkIGZvciBDUFUgdGltZQorCQlhYnQ9TglOdW1iZXIgb2YgcmV0ciByZXFzIGFib3J0ZWQgZHVlIHRvIG9iamVjdCBkZWF0aAorCVN0b3JlcwluPU4JTnVtYmVyIG9mIHN0b3JhZ2UgKHdyaXRlKSByZXF1ZXN0cyBzZWVuCisJCW9rPU4JTnVtYmVyIG9mIHN1Y2Nlc3NmdWwgc3RvcmUgcmVxcworCQlhZ249TglOdW1iZXIgb2Ygc3RvcmUgcmVxcyBvbiBhIHBhZ2UgYWxyZWFkeSBwZW5kaW5nIHN0b3JhZ2UKKwkJbmJmPU4JTnVtYmVyIG9mIHN0b3JlIHJlcXMgcmVqZWN0ZWQgLUVOT0JVRlMKKwkJb29tPU4JTnVtYmVyIG9mIHN0b3JlIHJlcXMgZmFpbGVkIC1FTk9NRU0KKwkJb3BzPU4JTnVtYmVyIG9mIHN0b3JlIHJlcXMgc3VibWl0dGVkCisJCXJ1bj1OCU51bWJlciBvZiBzdG9yZSByZXFzIGdyYW50ZWQgQ1BVIHRpbWUKKwkJcGdzPU4JTnVtYmVyIG9mIHBhZ2VzIGdpdmVuIHN0b3JlIHJlcSBwcm9jZXNzaW5nIHRpbWUKKwkJcnhkPU4JTnVtYmVyIG9mIHN0b3JlIHJlcXMgZGVsZXRlZCBmcm9tIHRyYWNraW5nIHRyZWUKKwkJb2xtPU4JTnVtYmVyIG9mIHN0b3JlIHJlcXMgb3ZlciBzdG9yZSBsaW1pdAorCVZtU2Nhbglub3M9TglOdW1iZXIgb2YgcmVsZWFzZSByZXFzIGFnYWluc3QgcGFnZXMgd2l0aCBubyBwZW5kaW5nIHN0b3JlCisJCWdvbj1OCU51bWJlciBvZiByZWxlYXNlIHJlcXMgYWdhaW5zdCBwYWdlcyBzdG9yZWQgYnkgdGltZSBsb2NrIGdyYW50ZWQKKwkJYnN5PU4JTnVtYmVyIG9mIHJlbGVhc2UgcmVxcyBpZ25vcmVkIGR1ZSB0byBpbi1wcm9ncmVzcyBzdG9yZQorCQljYW49TglOdW1iZXIgb2YgcGFnZSBzdG9yZXMgY2FuY2VsbGVkIGR1ZSB0byByZWxlYXNlIHJlcQorCU9wcwlwZW5kPU4JTnVtYmVyIG9mIHRpbWVzIGFzeW5jIG9wcyBhZGRlZCB0byBwZW5kaW5nIHF1ZXVlcworCQlydW49TglOdW1iZXIgb2YgdGltZXMgYXN5bmMgb3BzIGdpdmVuIENQVSB0aW1lCisJCWVucT1OCU51bWJlciBvZiB0aW1lcyBhc3luYyBvcHMgcXVldWVkIGZvciBwcm9jZXNzaW5nCisJCWNhbj1OCU51bWJlciBvZiBhc3luYyBvcHMgY2FuY2VsbGVkCisJCXJlaj1OCU51bWJlciBvZiBhc3luYyBvcHMgcmVqZWN0ZWQgZHVlIHRvIG9iamVjdCBsb29rdXAvY3JlYXRlIGZhaWx1cmUKKwkJaW5pPU4JTnVtYmVyIG9mIGFzeW5jIG9wcyBpbml0aWFsaXNlZAorCQlkZnI9TglOdW1iZXIgb2YgYXN5bmMgb3BzIHF1ZXVlZCBmb3IgZGVmZXJyZWQgcmVsZWFzZQorCQlyZWw9TglOdW1iZXIgb2YgYXN5bmMgb3BzIHJlbGVhc2VkIChzaG91bGQgZXF1YWwgaW5pPU4gd2hlbiBpZGxlKQorCQlnYz1OCU51bWJlciBvZiBkZWZlcnJlZC1yZWxlYXNlIGFzeW5jIG9wcyBnYXJiYWdlIGNvbGxlY3RlZAorCUNhY2hlT3AJYWxvPU4JTnVtYmVyIG9mIGluLXByb2dyZXNzIGFsbG9jX29iamVjdCgpIGNhY2hlIG9wcworCQlsdW89TglOdW1iZXIgb2YgaW4tcHJvZ3Jlc3MgbG9va3VwX29iamVjdCgpIGNhY2hlIG9wcworCQlsdWM9TglOdW1iZXIgb2YgaW4tcHJvZ3Jlc3MgbG9va3VwX2NvbXBsZXRlKCkgY2FjaGUgb3BzCisJCWdybz1OCU51bWJlciBvZiBpbi1wcm9ncmVzcyBncmFiX29iamVjdCgpIGNhY2hlIG9wcworCQl1cG89TglOdW1iZXIgb2YgaW4tcHJvZ3Jlc3MgdXBkYXRlX29iamVjdCgpIGNhY2hlIG9wcworCQlkcm89TglOdW1iZXIgb2YgaW4tcHJvZ3Jlc3MgZHJvcF9vYmplY3QoKSBjYWNoZSBvcHMKKwkJcHRvPU4JTnVtYmVyIG9mIGluLXByb2dyZXNzIHB1dF9vYmplY3QoKSBjYWNoZSBvcHMKKwkJc3luPU4JTnVtYmVyIG9mIGluLXByb2dyZXNzIHN5bmNfY2FjaGUoKSBjYWNoZSBvcHMKKwkJYXRjPU4JTnVtYmVyIG9mIGluLXByb2dyZXNzIGF0dHJfY2hhbmdlZCgpIGNhY2hlIG9wcworCQlyYXA9TglOdW1iZXIgb2YgaW4tcHJvZ3Jlc3MgcmVhZF9vcl9hbGxvY19wYWdlKCkgY2FjaGUgb3BzCisJCXJhcz1OCU51bWJlciBvZiBpbi1wcm9ncmVzcyByZWFkX29yX2FsbG9jX3BhZ2VzKCkgY2FjaGUgb3BzCisJCWFscD1OCU51bWJlciBvZiBpbi1wcm9ncmVzcyBhbGxvY2F0ZV9wYWdlKCkgY2FjaGUgb3BzCisJCWFscz1OCU51bWJlciBvZiBpbi1wcm9ncmVzcyBhbGxvY2F0ZV9wYWdlcygpIGNhY2hlIG9wcworCQl3cnA9TglOdW1iZXIgb2YgaW4tcHJvZ3Jlc3Mgd3JpdGVfcGFnZSgpIGNhY2hlIG9wcworCQl1Y3A9TglOdW1iZXIgb2YgaW4tcHJvZ3Jlc3MgdW5jYWNoZV9wYWdlKCkgY2FjaGUgb3BzCisJCWRzcD1OCU51bWJlciBvZiBpbi1wcm9ncmVzcyBkaXNzb2NpYXRlX3BhZ2VzKCkgY2FjaGUgb3BzCisJQ2FjaGVFdgluc3A9TglOdW1iZXIgb2Ygb2JqZWN0IGxvb2t1cHMvY3JlYXRpb25zIHJlamVjdGVkIGR1ZSB0byBsYWNrIG9mIHNwYWNlCisJCXN0bD1OCU51bWJlciBvZiBzdGFsZSBvYmplY3RzIGRlbGV0ZWQKKwkJcnRyPU4JTnVtYmVyIG9mIG9iamVjdHMgcmV0aXJlZCB3aGVuIHJlbGlucXVpc2hlZAorCQljdWw9TglOdW1iZXIgb2Ygb2JqZWN0cyBjdWxsZWQKKworCisgKCopIC9wcm9jL2ZzL2ZzY2FjaGUvaGlzdG9ncmFtCisKKwljYXQgL3Byb2MvZnMvZnNjYWNoZS9oaXN0b2dyYW0KKwlKSUZTICBTRUNTICBPQkogSU5TVCAgT1AgUlVOUyAgIE9CSiBSVU5TICBSRVRSViBETFkgUkVUUklFVkxTCisJPT09PT0gPT09PT0gPT09PT09PT09ID09PT09PT09PSA9PT09PT09PT0gPT09PT09PT09ID09PT09PT09PQorCisgICAgIFRoaXMgc2hvd3MgdGhlIGJyZWFrZG93biBvZiB0aGUgbnVtYmVyIG9mIHRpbWVzIGVhY2ggYW1vdW50IG9mIHRpbWUKKyAgICAgYmV0d2VlbiAwIGppZmZpZXMgYW5kIEhaLTEgamlmZmllcyBhIHZhcmlldHkgb2YgdGFza3MgdG9vayB0byBydW4uICBUaGUKKyAgICAgY29sdW1ucyBhcmUgYXMgZm9sbG93czoKKworCUNPTFVNTgkJVElNRSBNRUFTVVJFTUVOVAorCT09PT09PT0JCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwlPQkogSU5TVAlMZW5ndGggb2YgdGltZSB0byBpbnN0YW50aWF0ZSBhbiBvYmplY3QKKwlPUCBSVU5TCQlMZW5ndGggb2YgdGltZSBhIGNhbGwgdG8gcHJvY2VzcyBhbiBvcGVyYXRpb24gdG9vaworCU9CSiBSVU5TCUxlbmd0aCBvZiB0aW1lIGEgY2FsbCB0byBwcm9jZXNzIGFuIG9iamVjdCBldmVudCB0b29rCisJUkVUUlYgRExZCVRpbWUgYmV0d2VlbiBhbiByZXF1ZXN0aW5nIGEgcmVhZCBhbmQgbG9va3VwIGNvbXBsZXRpbmcKKwlSRVRSSUVWTFMJVGltZSBiZXR3ZWVuIGJlZ2lubmluZyBhbmQgZW5kIG9mIGEgcmV0cmlldmFsCisKKyAgICAgRWFjaCByb3cgc2hvd3MgdGhlIG51bWJlciBvZiBldmVudHMgdGhhdCB0b29rIGEgcGFydGljdWxhciByYW5nZSBvZiB0aW1lcy4KKyAgICAgRWFjaCBzdGVwIGlzIDEgamlmZnkgaW4gc2l6ZS4gIFRoZSBKSUZTIGNvbHVtbiBpbmRpY2F0ZXMgdGhlIHBhcnRpY3VsYXIKKyAgICAgamlmZnkgcmFuZ2UgY292ZXJlZCwgYW5kIHRoZSBTRUNTIGZpZWxkIHRoZSBlcXVpdmFsZW50IG51bWJlciBvZiBzZWNvbmRzLgorCisKKz09PT09PT09PT09CitPQkpFQ1QgTElTVAorPT09PT09PT09PT0KKworSWYgQ09ORklHX0ZTQ0FDSEVfT0JKRUNUX0xJU1QgaXMgZW5hYmxlZCwgdGhlIEZTLUNhY2hlIGZhY2lsaXR5IHdpbGwgbWFpbnRhaW4gYQorbGlzdCBvZiBhbGwgdGhlIG9iamVjdHMgY3VycmVudGx5IGFsbG9jYXRlZCBhbmQgYWxsb3cgdGhlbSB0byBiZSB2aWV3ZWQKK3Rocm91Z2g6CisKKwkvcHJvYy9mcy9mc2NhY2hlL29iamVjdHMKKworVGhpcyB3aWxsIGxvb2sgc29tZXRoaW5nIGxpa2U6CisKKwlbcm9vdEBhbmRyb21lZGEgfl0jIGhlYWQgL3Byb2MvZnMvZnNjYWNoZS9vYmplY3RzCisJT0JKRUNUICAgUEFSRU5UICAgU1RBVCBDSExETiBPUFMgT09QIElQUiBFWCBSRUFEUyBFTSBFViBGIFMgfCBORVRGU19DT09LSUVfREVGIFRZIEZMIE5FVEZTX0RBVEEgICAgICAgT0JKRUNUX0tFWSwgQVVYX0RBVEEKKwk9PT09PT09PSA9PT09PT09PSA9PT09ID09PT09ID09PSA9PT0gPT09ID09ID09PT09ID09ID09ID0gPSB8ID09PT09PT09PT09PT09PT0gPT0gPT0gPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09CisJICAgMTdlNGIgICAgICAgIDIgQUNUViAgICAgMCAgIDAgICAwICAgMCAgMCAgICAgMCA3YiAgNCAwIDAgfCBORlMuZmggICAgICAgICAgIERUICAwIGZmZmY4ODAwMWRkODI4MjAgMDEwMDA2MDE3ZWRjZjhiYmM5M2I0MzI5OGZkZmJlNzFlNTBiNTdiMTNhMTcyYzAxMTdmMzg0NzIsIGU1Njc2MzQ3MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjNmMjQwNGEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBjOTAzMDAwMDAwMDAwMDAwMDAwMDAwMDA2M2YyNDA0YQorCSAgIDE2OTNhICAgICAgICAyIEFDVFYgICAgIDAgICAwICAgMCAgIDAgIDAgICAgIDAgN2IgIDQgMCAwIHwgTkZTLmZoICAgICAgICAgICBEVCAgMCBmZmZmODgwMDJkYjIzMzgwIDAxMDAwNjAxN2VkY2Y4YmJjOTNiNDMyOThmZGZiZTcxZTUwYjU3YjFlMDE2MmMwMWEyZGYwZWE2LCA0MjBlYmM0YTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQyMGViYzRhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGUxODAxMDAwMDAwMDAwMDAwMDAwMDAwNDIwZWJjNGEKKword2hlcmUgdGhlIGZpcnN0IHNldCBvZiBjb2x1bW5zIGJlZm9yZSB0aGUgJ3wnIGRlc2NyaWJlIHRoZSBvYmplY3Q6CisKKwlDT0xVTU4JREVTQ1JJUFRJT04KKwk9PT09PT09CT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCU9CSkVDVAlPYmplY3QgZGVidWdnaW5nIElEIChhcHBlYXJzIGFzIE9CSiV4IGluIHNvbWUgZGVidWcgbWVzc2FnZXMpCisJUEFSRU5UCURlYnVnZ2luZyBJRCBvZiBwYXJlbnQgb2JqZWN0CisJU1RBVAlPYmplY3Qgc3RhdGUKKwlDSExETglOdW1iZXIgb2YgY2hpbGQgb2JqZWN0cyBvZiB0aGlzIG9iamVjdAorCU9QUwlOdW1iZXIgb2Ygb3V0c3RhbmRpbmcgb3BlcmF0aW9ucyBvbiB0aGlzIG9iamVjdAorCU9PUAlOdW1iZXIgb2Ygb3V0c3RhbmRpbmcgY2hpbGQgb2JqZWN0IG1hbmFnZW1lbnQgb3BlcmF0aW9ucworCUlQUgorCUVYCU51bWJlciBvZiBvdXRzdGFuZGluZyBleGNsdXNpdmUgb3BlcmF0aW9ucworCVJFQURTCU51bWJlciBvZiBvdXRzdGFuZGluZyByZWFkIG9wZXJhdGlvbnMKKwlFTQlPYmplY3QncyBldmVudCBtYXNrCisJRVYJRXZlbnRzIHJhaXNlZCBvbiB0aGlzIG9iamVjdAorCUYJT2JqZWN0IGZsYWdzCisJUwlPYmplY3Qgd29yayBpdGVtIGJ1c3kgc3RhdGUgbWFzayAoMTpwZW5kaW5nIDI6cnVubmluZykKKworYW5kIHRoZSBzZWNvbmQgc2V0IG9mIGNvbHVtbnMgZGVzY3JpYmUgdGhlIG9iamVjdCdzIGNvb2tpZSwgaWYgcHJlc2VudDoKKworCUNPTFVNTgkJREVTQ1JJUFRJT04KKwk9PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCU5FVEZTX0NPT0tJRV9ERUYgTmFtZSBvZiBuZXRmcyBjb29raWUgZGVmaW5pdGlvbgorCVRZCQlDb29raWUgdHlwZSAoSVggLSBpbmRleCwgRFQgLSBkYXRhLCBoZXggLSBzcGVjaWFsKQorCUZMCQlDb29raWUgZmxhZ3MKKwlORVRGU19EQVRBCU5ldGZzIHByaXZhdGUgZGF0YSBzdG9yZWQgaW4gdGhlIGNvb2tpZQorCU9CSkVDVF9LRVkJT2JqZWN0IGtleQl9IDEgY29sdW1uLCB3aXRoIHNlcGFyYXRpbmcgY29tbWEKKwlBVVhfREFUQQlPYmplY3QgYXV4IGRhdGEJfSBwcmVzZW5jZSBtYXkgYmUgY29uZmlndXJlZAorCitUaGUgZGF0YSBzaG93biBtYXkgYmUgZmlsdGVyZWQgYnkgYXR0YWNoaW5nIHRoZSBhIGtleSB0byBhbiBhcHByb3ByaWF0ZSBrZXlyaW5nCitiZWZvcmUgdmlld2luZyB0aGUgZmlsZS4gIFNvbWV0aGluZyBsaWtlOgorCisJCWtleWN0bCBhZGQgdXNlciBmc2NhY2hlOm9iamxpc3QgPHJlc3RyaWN0aW9ucz4gQHMKKword2hlcmUgPHJlc3RyaWN0aW9ucz4gYXJlIGEgc2VsZWN0aW9uIG9mIHRoZSBmb2xsb3dpbmcgbGV0dGVyczoKKworCUsJU2hvdyBoZXhkdW1wIG9mIG9iamVjdCBrZXkgKGRvbid0IHNob3cgaWYgbm90IGdpdmVuKQorCUEJU2hvdyBoZXhkdW1wIG9mIG9iamVjdCBhdXggZGF0YSAoZG9uJ3Qgc2hvdyBpZiBub3QgZ2l2ZW4pCisKK2FuZCB0aGUgZm9sbG93aW5nIHBhaXJlZCBsZXR0ZXJzOgorCisJQwlTaG93IG9iamVjdHMgdGhhdCBoYXZlIGEgY29va2llCisJYwlTaG93IG9iamVjdHMgdGhhdCBkb24ndCBoYXZlIGEgY29va2llCisJQglTaG93IG9iamVjdHMgdGhhdCBhcmUgYnVzeQorCWIJU2hvdyBvYmplY3RzIHRoYXQgYXJlbid0IGJ1c3kKKwlXCVNob3cgb2JqZWN0cyB0aGF0IGhhdmUgcGVuZGluZyB3cml0ZXMKKwl3CVNob3cgb2JqZWN0cyB0aGF0IGRvbid0IGhhdmUgcGVuZGluZyB3cml0ZXMKKwlSCVNob3cgb2JqZWN0cyB0aGF0IGhhdmUgb3V0c3RhbmRpbmcgcmVhZHMKKwlyCVNob3cgb2JqZWN0cyB0aGF0IGRvbid0IGhhdmUgb3V0c3RhbmRpbmcgcmVhZHMKKwlTCVNob3cgb2JqZWN0cyB0aGF0IGhhdmUgd29yayBxdWV1ZWQKKwlzCVNob3cgb2JqZWN0cyB0aGF0IGRvbid0IGhhdmUgd29yayBxdWV1ZWQKKworSWYgbmVpdGhlciBzaWRlIG9mIGEgbGV0dGVyIHBhaXIgaXMgZ2l2ZW4sIHRoZW4gYm90aCBhcmUgaW1wbGllZC4gIEZvciBleGFtcGxlOgorCisJa2V5Y3RsIGFkZCB1c2VyIGZzY2FjaGU6b2JqbGlzdCBLQiBAcworCitzaG93cyBvYmplY3RzIHRoYXQgYXJlIGJ1c3ksIGFuZCBsaXN0cyB0aGVpciBvYmplY3Qga2V5cywgYnV0IGRvZXMgbm90IGR1bXAKK3RoZWlyIGF1eGlsaWFyeSBkYXRhLiAgSXQgYWxzbyBpbXBsaWVzICJDY1d3UnJTcyIsIGJ1dCBhcyAnQicgaXMgZ2l2ZW4sICdiJyBpcworbm90IGltcGxpZWQuCisKK0J5IGRlZmF1bHQgYWxsIG9iamVjdHMgYW5kIGFsbCBmaWVsZHMgd2lsbCBiZSBzaG93bi4KKworCis9PT09PT09PT0KK0RFQlVHR0lORworPT09PT09PT09CisKK0lmIENPTkZJR19GU0NBQ0hFX0RFQlVHIGlzIGVuYWJsZWQsIHRoZSBGUy1DYWNoZSBmYWNpbGl0eSBjYW4gaGF2ZSBydW50aW1lCitkZWJ1Z2dpbmcgZW5hYmxlZCBieSBhZGp1c3RpbmcgdGhlIHZhbHVlIGluOgorCisJL3N5cy9tb2R1bGUvZnNjYWNoZS9wYXJhbWV0ZXJzL2RlYnVnCisKK1RoaXMgaXMgYSBiaXRtYXNrIG9mIGRlYnVnZ2luZyBzdHJlYW1zIHRvIGVuYWJsZToKKworCUJJVAlWQUxVRQlTVFJFQU0JCQkJUE9JTlQKKwk9PT09PT09CT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQk9PT09PT09PT09PT09PT09PT09PT09PQorCTAJMQlDYWNoZSBtYW5hZ2VtZW50CQlGdW5jdGlvbiBlbnRyeSB0cmFjZQorCTEJMgkJCQkJRnVuY3Rpb24gZXhpdCB0cmFjZQorCTIJNAkJCQkJR2VuZXJhbAorCTMJOAlDb29raWUgbWFuYWdlbWVudAkJRnVuY3Rpb24gZW50cnkgdHJhY2UKKwk0CTE2CQkJCQlGdW5jdGlvbiBleGl0IHRyYWNlCisJNQkzMgkJCQkJR2VuZXJhbAorCTYJNjQJUGFnZSBoYW5kbGluZwkJCUZ1bmN0aW9uIGVudHJ5IHRyYWNlCisJNwkxMjgJCQkJCUZ1bmN0aW9uIGV4aXQgdHJhY2UKKwk4CTI1NgkJCQkJR2VuZXJhbAorCTkJNTEyCU9wZXJhdGlvbiBtYW5hZ2VtZW50CQlGdW5jdGlvbiBlbnRyeSB0cmFjZQorCTEwCTEwMjQJCQkJCUZ1bmN0aW9uIGV4aXQgdHJhY2UKKwkxMQkyMDQ4CQkJCQlHZW5lcmFsCisKK1RoZSBhcHByb3ByaWF0ZSBzZXQgb2YgdmFsdWVzIHNob3VsZCBiZSBPUidkIHRvZ2V0aGVyIGFuZCB0aGUgcmVzdWx0IHdyaXR0ZW4gdG8KK3RoZSBjb250cm9sIGZpbGUuICBGb3IgZXhhbXBsZToKKworCWVjaG8gJCgoMXw4fDY0KSkgPi9zeXMvbW9kdWxlL2ZzY2FjaGUvcGFyYW1ldGVycy9kZWJ1ZworCit3aWxsIHR1cm4gb24gYWxsIGZ1bmN0aW9uIGVudHJ5IGRlYnVnZ2luZy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2FjaGluZy9uZXRmcy1hcGkudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9jYWNoaW5nL25ldGZzLWFwaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVkNmI5NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2FjaGluZy9uZXRmcy1hcGkudHh0CkBAIC0wLDAgKzEsOTE1IEBACisJCQk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJCQlGUy1DQUNIRSBORVRXT1JLIEZJTEVTWVNURU0gQVBJCisJCQk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZXJlJ3MgYW4gQVBJIGJ5IHdoaWNoIGEgbmV0d29yayBmaWxlc3lzdGVtIGNhbiBtYWtlIHVzZSBvZiB0aGUgRlMtQ2FjaGUKK2ZhY2lsaXRpZXMuICBUaGlzIGlzIGJhc2VkIGFyb3VuZCBhIG51bWJlciBvZiBwcmluY2lwbGVzOgorCisgKDEpIENhY2hlcyBjYW4gc3RvcmUgYSBudW1iZXIgb2YgZGlmZmVyZW50IG9iamVjdCB0eXBlcy4gIFRoZXJlIGFyZSB0d28gbWFpbgorICAgICBvYmplY3QgdHlwZXM6IGluZGljZXMgYW5kIGZpbGVzLiAgVGhlIGZpcnN0IGlzIGEgc3BlY2lhbCB0eXBlIHVzZWQgYnkKKyAgICAgRlMtQ2FjaGUgdG8gbWFrZSBmaW5kaW5nIG9iamVjdHMgZmFzdGVyIGFuZCB0byBtYWtlIHJldGlyaW5nIG9mIGdyb3VwcyBvZgorICAgICBvYmplY3RzIGVhc2llci4KKworICgyKSBFdmVyeSBpbmRleCwgZmlsZSBvciBvdGhlciBvYmplY3QgaXMgcmVwcmVzZW50ZWQgYnkgYSBjb29raWUuICBUaGlzIGNvb2tpZQorICAgICBtYXkgb3IgbWF5IG5vdCBoYXZlIGFueXRoaW5nIGFzc29jaWF0ZWQgd2l0aCBpdCwgYnV0IHRoZSBuZXRmcyBkb2Vzbid0CisgICAgIG5lZWQgdG8gY2FyZS4KKworICgzKSBCYXJyaW5nIHRoZSB0b3AtbGV2ZWwgaW5kZXggKG9uZSBlbnRyeSBwZXIgY2FjaGVkIG5ldGZzKSwgdGhlIGluZGV4CisgICAgIGhpZXJhcmNoeSBmb3IgZWFjaCBuZXRmcyBpcyBzdHJ1Y3R1cmVkIGFjY29yZGluZyB0aGUgd2hpbSBvZiB0aGUgbmV0ZnMuCisKK1RoaXMgQVBJIGlzIGRlY2xhcmVkIGluIDxsaW51eC9mc2NhY2hlLmg+LgorCitUaGlzIGRvY3VtZW50IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnM6CisKKwkgKDEpIE5ldHdvcmsgZmlsZXN5c3RlbSBkZWZpbml0aW9uCisJICgyKSBJbmRleCBkZWZpbml0aW9uCisJICgzKSBPYmplY3QgZGVmaW5pdGlvbgorCSAoNCkgTmV0d29yayBmaWxlc3lzdGVtICh1bilyZWdpc3RyYXRpb24KKwkgKDUpIENhY2hlIHRhZyBsb29rdXAKKwkgKDYpIEluZGV4IHJlZ2lzdHJhdGlvbgorCSAoNykgRGF0YSBmaWxlIHJlZ2lzdHJhdGlvbgorCSAoOCkgTWlzY2VsbGFuZW91cyBvYmplY3QgcmVnaXN0cmF0aW9uCisgCSAoOSkgU2V0dGluZyB0aGUgZGF0YSBmaWxlIHNpemUKKwkoMTApIFBhZ2UgYWxsb2MvcmVhZC93cml0ZQorCSgxMSkgUGFnZSB1bmNhY2hpbmcKKwkoMTIpIEluZGV4IGFuZCBkYXRhIGZpbGUgY29uc2lzdGVuY3kKKwkoMTMpIENvb2tpZSBlbmFibGVtZW50CisJKDE0KSBNaXNjZWxsYW5lb3VzIGNvb2tpZSBvcGVyYXRpb25zCisJKDE1KSBDb29raWUgdW5yZWdpc3RyYXRpb24KKwkoMTYpIEluZGV4IGludmFsaWRhdGlvbgorCSgxNykgRGF0YSBmaWxlIGludmFsaWRhdGlvbgorCSgxOCkgRlMtQ2FjaGUgc3BlY2lmaWMgcGFnZSBmbGFncy4KKworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorTkVUV09SSyBGSUxFU1lTVEVNIERFRklOSVRJT04KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZTLUNhY2hlIG5lZWRzIGEgZGVzY3JpcHRpb24gb2YgdGhlIG5ldHdvcmsgZmlsZXN5c3RlbS4gIFRoaXMgaXMgc3BlY2lmaWVkCit1c2luZyBhIHJlY29yZCBvZiB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKKworCXN0cnVjdCBmc2NhY2hlX25ldGZzIHsKKwkJdWludDMyX3QJCQl2ZXJzaW9uOworCQljb25zdCBjaGFyCQkJKm5hbWU7CisJCXN0cnVjdCBmc2NhY2hlX2Nvb2tpZQkJKnByaW1hcnlfaW5kZXg7CisJCS4uLgorCX07CisKK1RoaXMgZmlyc3QgdHdvIGZpZWxkcyBzaG91bGQgYmUgZmlsbGVkIGluIGJlZm9yZSByZWdpc3RyYXRpb24sIGFuZCB0aGUgdGhpcmQKK3dpbGwgYmUgZmlsbGVkIGluIGJ5IHRoZSByZWdpc3RyYXRpb24gZnVuY3Rpb247IGFueSBvdGhlciBmaWVsZHMgc2hvdWxkIGp1c3QgYmUKK2lnbm9yZWQgYW5kIGFyZSBmb3IgaW50ZXJuYWwgdXNlIG9ubHkuCisKK1RoZSBmaWVsZHMgYXJlOgorCisgKDEpIFRoZSBuYW1lIG9mIHRoZSBuZXRmcyAodXNlZCBhcyB0aGUga2V5IGluIHRoZSB0b3BsZXZlbCBpbmRleCkuCisKKyAoMikgVGhlIHZlcnNpb24gb2YgdGhlIG5ldGZzIChpZiB0aGUgbmFtZSBtYXRjaGVzIGJ1dCB0aGUgdmVyc2lvbiBkb2Vzbid0LCB0aGUKKyAgICAgZW50aXJlIGluLWNhY2hlIGhpZXJhcmNoeSBmb3IgdGhpcyBuZXRmcyB3aWxsIGJlIHNjcmFwcGVkIGFuZCBiZWd1bgorICAgICBhZnJlc2gpLgorCisgKDMpIFRoZSBjb29raWUgcmVwcmVzZW50aW5nIHRoZSBwcmltYXJ5IGluZGV4IHdpbGwgYmUgYWxsb2NhdGVkIGFjY29yZGluZyB0bworICAgICBhbm90aGVyIHBhcmFtZXRlciBwYXNzZWQgaW50byB0aGUgcmVnaXN0cmF0aW9uIGZ1bmN0aW9uLgorCitGb3IgZXhhbXBsZSwga0FGUyAobGludXgvZnMvYWZzLykgdXNlcyB0aGUgZm9sbG93aW5nIGRlZmluaXRpb25zIHRvIGRlc2NyaWJlCitpdHNlbGY6CisKKwlzdHJ1Y3QgZnNjYWNoZV9uZXRmcyBhZnNfY2FjaGVfbmV0ZnMgPSB7CisJCS52ZXJzaW9uCT0gMCwKKwkJLm5hbWUJCT0gImFmcyIsCisJfTsKKworCis9PT09PT09PT09PT09PT09CitJTkRFWCBERUZJTklUSU9OCis9PT09PT09PT09PT09PT09CisKK0luZGljZXMgYXJlIHVzZWQgZm9yIHR3byBwdXJwb3NlczoKKworICgxKSBUbyBhaWQgdGhlIGZpbmRpbmcgb2YgYSBmaWxlIGJhc2VkIG9uIGEgc2VyaWVzIG9mIGtleXMgKHN1Y2ggYXMgQUZTJ3MKKyAgICAgImNlbGwiLCAidm9sdW1lIElEIiwgInZub2RlIElEIikuCisKKyAoMikgVG8gbWFrZSBpdCBlYXNpZXIgdG8gZGlzY2FyZCBhIHN1YnNldCBvZiBhbGwgdGhlIGZpbGVzIGNhY2hlZCBiYXNlZCBhcm91bmQKKyAgICAgYSBwYXJ0aWN1bGFyIGtleSAtIGZvciBpbnN0YW5jZSB0byBtaXJyb3IgdGhlIHJlbW92YWwgb2YgYW4gQUZTIHZvbHVtZS4KKworSG93ZXZlciwgc2luY2UgaXQncyB1bmxpa2VseSB0aGF0IGFueSB0d28gbmV0ZnMncyBhcmUgZ29pbmcgdG8gd2FudCB0byBkZWZpbmUKK3RoZWlyIGluZGV4IGhpZXJhcmNoaWVzIGluIHF1aXRlIHRoZSBzYW1lIHdheSwgRlMtQ2FjaGUgdHJpZXMgdG8gaW1wb3NlIGFzIGZldworcmVzdHJhaW50cyBhcyBwb3NzaWJsZSBvbiBob3cgYW4gaW5kZXggaXMgc3RydWN0dXJlZCBhbmQgd2hlcmUgaXQgaXMgcGxhY2VkIGluCit0aGUgdHJlZS4gIFRoZSBuZXRmcyBjYW4gZXZlbiBtaXggaW5kaWNlcyBhbmQgZGF0YSBmaWxlcyBhdCB0aGUgc2FtZSBsZXZlbCwgYnV0CitpdCdzIG5vdCByZWNvbW1lbmRlZC4KKworRWFjaCBpbmRleCBlbnRyeSBjb25zaXN0cyBvZiBhIGtleSBvZiBpbmRldGVybWluYXRlIGxlbmd0aCBwbHVzIHNvbWUgYXV4aWxpYXJ5CitkYXRhLCBhbHNvIG9mIGluZGV0ZXJtaW5hdGUgbGVuZ3RoLgorCitUaGVyZSBhcmUgc29tZSBsaW1pdHMgb24gaW5kaWNlczoKKworICgxKSBBbnkgaW5kZXggY29udGFpbmluZyBub24taW5kZXggb2JqZWN0cyBzaG91bGQgYmUgcmVzdHJpY3RlZCB0byBhIHNpbmdsZQorICAgICBjYWNoZS4gIEFueSBzdWNoIG9iamVjdHMgY3JlYXRlZCB3aXRoaW4gYW4gaW5kZXggd2lsbCBiZSBjcmVhdGVkIGluIHRoZQorICAgICBmaXJzdCBjYWNoZSBvbmx5LiAgVGhlIGNhY2hlIGluIHdoaWNoIGFuIGluZGV4IGlzIGNyZWF0ZWQgY2FuIGJlCisgICAgIGNvbnRyb2xsZWQgYnkgY2FjaGUgdGFncyAoc2VlIGJlbG93KS4KKworICgyKSBUaGUgZW50cnkgZGF0YSBtdXN0IGJlIGF0b21pY2FsbHkgam91cm5hbGxhYmxlLCBzbyBpdCBpcyBsaW1pdGVkIHRvIGFib3V0CisgICAgIDQwMCBieXRlcyBhdCBwcmVzZW50LiAgQXQgbGVhc3QgNDAwIGJ5dGVzIHdpbGwgYmUgYXZhaWxhYmxlLgorCisgKDMpIFRoZSBkZXB0aCBvZiB0aGUgaW5kZXggdHJlZSBzaG91bGQgYmUganVkZ2VkIHdpdGggY2FyZSBhcyB0aGUgc2VhcmNoCisgICAgIGZ1bmN0aW9uIGlzIHJlY3Vyc2l2ZS4gIFRvbyBtYW55IGxheWVycyB3aWxsIHJ1biB0aGUga2VybmVsIG91dCBvZiBzdGFjay4KKworCis9PT09PT09PT09PT09PT09PQorT0JKRUNUIERFRklOSVRJT04KKz09PT09PT09PT09PT09PT09CisKK1RvIGRlZmluZSBhbiBvYmplY3QsIGEgc3RydWN0dXJlIG9mIHRoZSBmb2xsb3dpbmcgdHlwZSBzaG91bGQgYmUgZmlsbGVkIG91dDoKKworCXN0cnVjdCBmc2NhY2hlX2Nvb2tpZV9kZWYKKwl7CisJCXVpbnQ4X3QgbmFtZVsxNl07CisJCXVpbnQ4X3QgdHlwZTsKKworCQlzdHJ1Y3QgZnNjYWNoZV9jYWNoZV90YWcgKigqc2VsZWN0X2NhY2hlKSgKKwkJCWNvbnN0IHZvaWQgKnBhcmVudF9uZXRmc19kYXRhLAorCQkJY29uc3Qgdm9pZCAqY29va2llX25ldGZzX2RhdGEpOworCisJCXVpbnQxNl90ICgqZ2V0X2tleSkoY29uc3Qgdm9pZCAqY29va2llX25ldGZzX2RhdGEsCisJCQkJICAgIHZvaWQgKmJ1ZmZlciwKKwkJCQkgICAgdWludDE2X3QgYnVmbWF4KTsKKworCQl2b2lkICgqZ2V0X2F0dHIpKGNvbnN0IHZvaWQgKmNvb2tpZV9uZXRmc19kYXRhLAorCQkJCSB1aW50NjRfdCAqc2l6ZSk7CisKKwkJdWludDE2X3QgKCpnZXRfYXV4KShjb25zdCB2b2lkICpjb29raWVfbmV0ZnNfZGF0YSwKKwkJCQkgICAgdm9pZCAqYnVmZmVyLAorCQkJCSAgICB1aW50MTZfdCBidWZtYXgpOworCisJCWVudW0gZnNjYWNoZV9jaGVja2F1eCAoKmNoZWNrX2F1eCkodm9pZCAqY29va2llX25ldGZzX2RhdGEsCisJCQkJCQkgICBjb25zdCB2b2lkICpkYXRhLAorCQkJCQkJICAgdWludDE2X3QgZGF0YWxlbik7CisKKwkJdm9pZCAoKmdldF9jb250ZXh0KSh2b2lkICpjb29raWVfbmV0ZnNfZGF0YSwgdm9pZCAqY29udGV4dCk7CisKKwkJdm9pZCAoKnB1dF9jb250ZXh0KSh2b2lkICpjb29raWVfbmV0ZnNfZGF0YSwgdm9pZCAqY29udGV4dCk7CisKKwkJdm9pZCAoKm1hcmtfcGFnZXNfY2FjaGVkKSh2b2lkICpjb29raWVfbmV0ZnNfZGF0YSwKKwkJCQkJICBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKKwkJCQkJICBzdHJ1Y3QgcGFnZXZlYyAqY2FjaGVkX3B2ZWMpOworCisJCXZvaWQgKCpub3dfdW5jYWNoZWQpKHZvaWQgKmNvb2tpZV9uZXRmc19kYXRhKTsKKwl9OworCitUaGlzIGhhcyB0aGUgZm9sbG93aW5nIGZpZWxkczoKKworICgxKSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0IFttYW5kYXRvcnldLgorCisgICAgIFRoaXMgaXMgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorCisJKCopIEZTQ0FDSEVfQ09PS0lFX1RZUEVfSU5ERVgKKworCSAgICBUaGlzIGRlZmluZXMgYW4gaW5kZXgsIHdoaWNoIGlzIGEgc3BlY2lhbCBGUy1DYWNoZSB0eXBlLgorCisJKCopIEZTQ0FDSEVfQ09PS0lFX1RZUEVfREFUQUZJTEUKKworCSAgICBUaGlzIGRlZmluZXMgYW4gb3JkaW5hcnkgZGF0YSBmaWxlLgorCisJKCopIEFueSBvdGhlciB2YWx1ZSBiZXR3ZWVuIDIgYW5kIDI1NQorCisJICAgIFRoaXMgZGVmaW5lcyBhbiBleHRyYW9yZGluYXJ5IG9iamVjdCBzdWNoIGFzIGFuIFhBVFRSLgorCisgKDIpIFRoZSBuYW1lIG9mIHRoZSBvYmplY3QgdHlwZSAoTlVMIHRlcm1pbmF0ZWQgdW5sZXNzIGFsbCAxNiBjaGFycyBhcmUgdXNlZCkKKyAgICAgW29wdGlvbmFsXS4KKworICgzKSBBIGZ1bmN0aW9uIHRvIHNlbGVjdCB0aGUgY2FjaGUgaW4gd2hpY2ggdG8gc3RvcmUgYW4gaW5kZXggW29wdGlvbmFsXS4KKworICAgICBUaGlzIGZ1bmN0aW9uIGlzIGludm9rZWQgd2hlbiBhbiBpbmRleCBuZWVkcyB0byBiZSBpbnN0YW50aWF0ZWQgaW4gYSBjYWNoZQorICAgICBkdXJpbmcgdGhlIGluc3RhbnRpYXRpb24gb2YgYSBub24taW5kZXggb2JqZWN0LiAgT25seSB0aGUgaW1tZWRpYXRlIGluZGV4CisgICAgIHBhcmVudCBmb3IgdGhlIG5vbi1pbmRleCBvYmplY3Qgd2lsbCBiZSBxdWVyaWVkLiAgQW55IGluZGljZXMgYWJvdmUgdGhhdAorICAgICBpbiB0aGUgaGllcmFyY2h5IG1heSBiZSBzdG9yZWQgaW4gbXVsdGlwbGUgY2FjaGVzLiAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdAorICAgICBuZWVkIHRvIGJlIHN1cHBsaWVkIGZvciBhbnkgbm9uLWluZGV4IG9iamVjdCBvciBhbnkgaW5kZXggdGhhdCB3aWxsIG9ubHkKKyAgICAgaGF2ZSBpbmRleCBjaGlsZHJlbi4KKworICAgICBJZiB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBzdXBwbGllZCBvciBpZiBpdCByZXR1cm5zIE5VTEwgdGhlbiB0aGUgZmlyc3QKKyAgICAgY2FjaGUgaW4gdGhlIHBhcmVudCdzIGxpc3Qgd2lsbCBiZSBjaG9zZW4sIG9yIGZhaWxpbmcgdGhhdCwgdGhlIGZpcnN0CisgICAgIGNhY2hlIGluIHRoZSBtYXN0ZXIgbGlzdC4KKworICg0KSBBIGZ1bmN0aW9uIHRvIHJldHJpZXZlIGFuIG9iamVjdCdzIGtleSBmcm9tIHRoZSBuZXRmcyBbbWFuZGF0b3J5XS4KKworICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIG5ldGZzIGRhdGEgdGhhdCB3YXMgcGFzc2VkIHRvIHRoZQorICAgICBjb29raWUgYWNxdWlzaXRpb24gZnVuY3Rpb24gYW5kIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBrZXkgZGF0YSB0aGF0IGl0IG1heQorICAgICBwcm92aWRlLiAgSXQgc2hvdWxkIHdyaXRlIHRoZSByZXF1aXJlZCBrZXkgZGF0YSBpbnRvIHRoZSBnaXZlbiBidWZmZXIgYW5kCisgICAgIHJldHVybiB0aGUgcXVhbnRpdHkgaXQgd3JvdGUuCisKKyAoNSkgQSBmdW5jdGlvbiB0byByZXRyaWV2ZSBhdHRyaWJ1dGUgZGF0YSBmcm9tIHRoZSBuZXRmcyBbb3B0aW9uYWxdLgorCisgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgbmV0ZnMgZGF0YSB0aGF0IHdhcyBwYXNzZWQgdG8gdGhlCisgICAgIGNvb2tpZSBhY3F1aXNpdGlvbiBmdW5jdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gdGhlIHNpemUgb2YgdGhlIGZpbGUgaWYKKyAgICAgdGhpcyBpcyBhIGRhdGEgZmlsZS4gIFRoZSBzaXplIG1heSBiZSB1c2VkIHRvIGdvdmVybiBob3cgbXVjaCBjYWNoZSBtdXN0CisgICAgIGJlIHJlc2VydmVkIGZvciB0aGlzIGZpbGUgaW4gdGhlIGNhY2hlLgorCisgICAgIElmIHRoZSBmdW5jdGlvbiBpcyBhYnNlbnQsIGEgZmlsZSBzaXplIG9mIDAgaXMgYXNzdW1lZC4KKworICg2KSBBIGZ1bmN0aW9uIHRvIHJldHJpZXZlIGF1eGlsaWFyeSBkYXRhIGZyb20gdGhlIG5ldGZzIFtvcHRpb25hbF0uCisKKyAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBuZXRmcyBkYXRhIHRoYXQgd2FzIHBhc3NlZCB0byB0aGUKKyAgICAgY29va2llIGFjcXVpc2l0aW9uIGZ1bmN0aW9uIGFuZCB0aGUgbWF4aW11bSBsZW5ndGggb2YgYXV4aWxpYXJ5IGRhdGEgdGhhdAorICAgICBpdCBtYXkgcHJvdmlkZS4gIEl0IHNob3VsZCB3cml0ZSB0aGUgYXV4aWxpYXJ5IGRhdGEgaW50byB0aGUgZ2l2ZW4gYnVmZmVyCisgICAgIGFuZCByZXR1cm4gdGhlIHF1YW50aXR5IGl0IHdyb3RlLgorCisgICAgIElmIHRoaXMgZnVuY3Rpb24gaXMgYWJzZW50LCB0aGUgYXV4aWxpYXJ5IGRhdGEgbGVuZ3RoIHdpbGwgYmUgc2V0IHRvIDAuCisKKyAgICAgVGhlIGxlbmd0aCBvZiB0aGUgYXV4aWxpYXJ5IGRhdGEgYnVmZmVyIG1heSBiZSBkZXBlbmRlbnQgb24gdGhlIGtleQorICAgICBsZW5ndGguICBBIG5ldGZzIG11c3RuJ3QgcmVseSBvbiBiZWluZyBhYmxlIHRvIHByb3ZpZGUgbW9yZSB0aGFuIDQwMCBieXRlcworICAgICBmb3IgYm90aC4KKworICg3KSBBIGZ1bmN0aW9uIHRvIGNoZWNrIHRoZSBhdXhpbGlhcnkgZGF0YSBbb3B0aW9uYWxdLgorCisgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgdG8gY2hlY2sgdGhhdCBhIG1hdGNoIGZvdW5kIGluIHRoZSBjYWNoZSBmb3IKKyAgICAgdGhpcyBvYmplY3QgaXMgdmFsaWQuICBGb3IgaW5zdGFuY2Ugd2l0aCBBRlMgaXQgY291bGQgY2hlY2sgdGhlIGF1eGlsaWFyeQorICAgICBkYXRhIGFnYWluc3QgdGhlIGRhdGEgdmVyc2lvbiBudW1iZXIgcmV0dXJuZWQgYnkgdGhlIHNlcnZlciB0byBkZXRlcm1pbmUKKyAgICAgd2hldGhlciB0aGUgaW5kZXggZW50cnkgaW4gYSBjYWNoZSBpcyBzdGlsbCB2YWxpZC4KKworICAgICBJZiB0aGlzIGZ1bmN0aW9uIGlzIGFic2VudCwgaXQgd2lsbCBiZSBhc3N1bWVkIHRoYXQgbWF0Y2hpbmcgb2JqZWN0cyBpbiBhCisgICAgIGNhY2hlIGFyZSBhbHdheXMgdmFsaWQuCisKKyAgICAgSWYgcHJlc2VudCwgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorCisJKCopIEZTQ0FDSEVfQ0hFQ0tBVVhfT0tBWQkJLSB0aGUgZW50cnkgaXMgb2theSBhcyBpcworCSgqKSBGU0NBQ0hFX0NIRUNLQVVYX05FRURTX1VQREFURQktIHRoZSBlbnRyeSByZXF1aXJlcyB1cGRhdGUKKwkoKikgRlNDQUNIRV9DSEVDS0FVWF9PQlNPTEVURQkJLSB0aGUgZW50cnkgc2hvdWxkIGJlIGRlbGV0ZWQKKworICAgICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIGJlIHVzZWQgdG8gZXh0cmFjdCBkYXRhIGZyb20gdGhlIGF1eGlsaWFyeSBkYXRhIGluCisgICAgIHRoZSBjYWNoZSBhbmQgY29weSBpdCBpbnRvIHRoZSBuZXRmcydzIHN0cnVjdHVyZXMuCisKKyAoOCkgQSBwYWlyIG9mIGZ1bmN0aW9ucyB0byBtYW5hZ2UgY29udGV4dHMgZm9yIHRoZSBjb21wbGV0aW9uIGNhbGxiYWNrCisgICAgIFtvcHRpb25hbF0uCisKKyAgICAgVGhlIGNhY2hlIHJlYWQvd3JpdGUgZnVuY3Rpb25zIGFyZSBwYXNzZWQgYSBjb250ZXh0IHdoaWNoIGlzIHRoZW4gcGFzc2VkCisgICAgIHRvIHRoZSBJL08gY29tcGxldGlvbiBjYWxsYmFjayBmdW5jdGlvbi4gIFRvIGVuc3VyZSB0aGlzIGNvbnRleHQgcmVtYWlucworICAgICB2YWxpZCB1bnRpbCBhZnRlciB0aGUgSS9PIGNvbXBsZXRpb24gaXMgY2FsbGVkLCB0d28gZnVuY3Rpb25zIG1heSBiZQorICAgICBwcm92aWRlZDogb25lIHRvIGdldCBhbiBleHRyYSByZWZlcmVuY2Ugb24gdGhlIGNvbnRleHQsIGFuZCBvbmUgdG8gZHJvcCBhCisgICAgIHJlZmVyZW5jZSB0byBpdC4KKworICAgICBJZiB0aGUgY29udGV4dCBpcyBub3QgdXNlZCBvciBpcyBhIHR5cGUgb2Ygb2JqZWN0IHRoYXQgd29uJ3QgZ28gb3V0IG9mCisgICAgIHNjb3BlLCB0aGVuIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbm90IHJlcXVpcmVkLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBub3QKKyAgICAgcmVxdWlyZWQgZm9yIGluZGljZXMgYXMgaW5kaWNlcyBtYXkgbm90IGNvbnRhaW4gZGF0YS4gIFRoZXNlIGZ1bmN0aW9ucyBtYXkKKyAgICAgYmUgY2FsbGVkIGluIGludGVycnVwdCBjb250ZXh0IGFuZCBzbyBtYXkgbm90IHNsZWVwLgorCisgKDkpIEEgZnVuY3Rpb24gdG8gbWFyayBhIHBhZ2UgYXMgcmV0YWluaW5nIGNhY2hlIG1ldGFkYXRhIFtvcHRpb25hbF0uCisKKyAgICAgVGhpcyBpcyBjYWxsZWQgYnkgdGhlIGNhY2hlIHRvIGluZGljYXRlIHRoYXQgaXQgaXMgcmV0YWluaW5nIGluLW1lbW9yeQorICAgICBpbmZvcm1hdGlvbiBmb3IgdGhpcyBwYWdlIGFuZCB0aGF0IHRoZSBuZXRmcyBzaG91bGQgdW5jYWNoZSB0aGUgcGFnZSB3aGVuCisgICAgIGl0IGhhcyBmaW5pc2hlZC4gIFRoaXMgZG9lcyBub3QgaW5kaWNhdGUgd2hldGhlciB0aGVyZSdzIGRhdGEgb24gdGhlIGRpc2sKKyAgICAgb3Igbm90LiAgTm90ZSB0aGF0IHNldmVyYWwgcGFnZXMgYXQgb25jZSBtYXkgYmUgcHJlc2VudGVkIGZvciBtYXJraW5nLgorCisgICAgIFRoZSBQR19mc2NhY2hlIGJpdCBpcyBzZXQgb24gdGhlIHBhZ2VzIGJlZm9yZSB0aGlzIGZ1bmN0aW9uIHdvdWxkIGJlCisgICAgIGNhbGxlZCwgc28gdGhlIGZ1bmN0aW9uIG5lZWQgbm90IGJlIHByb3ZpZGVkIGlmIHRoaXMgaXMgc3VmZmljaWVudC4KKworICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdCByZXF1aXJlZCBmb3IgaW5kaWNlcyBhcyB0aGV5J3JlIG5vdCBwZXJtaXR0ZWQgZGF0YS4KKworKDEwKSBBIGZ1bmN0aW9uIHRvIHVubWFyayBhbGwgdGhlIHBhZ2VzIHJldGFpbmluZyBjYWNoZSBtZXRhZGF0YSBbbWFuZGF0b3J5XS4KKworICAgICBUaGlzIGlzIGNhbGxlZCBieSBGUy1DYWNoZSB0byBpbmRpY2F0ZSB0aGF0IGEgYmFja2luZyBzdG9yZSBpcyBiZWluZworICAgICB1bmJvdW5kIGZyb20gYSBjb29raWUgYW5kIHRoYXQgYWxsIHRoZSBtYXJrcyBvbiB0aGUgcGFnZXMgc2hvdWxkIGJlCisgICAgIGNsZWFyZWQgdG8gcHJldmVudCBjb25mdXNpb24uICBOb3RlIHRoYXQgdGhlIGNhY2hlIHdpbGwgaGF2ZSB0b3JuIGRvd24gYWxsCisgICAgIGl0cyB0cmFja2luZyBpbmZvcm1hdGlvbiBzbyB0aGF0IHRoZSBwYWdlcyBkb24ndCBuZWVkIHRvIGJlIGV4cGxpY2l0bHkKKyAgICAgdW5jYWNoZWQuCisKKyAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3QgcmVxdWlyZWQgZm9yIGluZGljZXMgYXMgdGhleSdyZSBub3QgcGVybWl0dGVkIGRhdGEuCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK05FVFdPUksgRklMRVNZU1RFTSAoVU4pUkVHSVNUUkFUSU9OCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZmlyc3Qgc3RlcCBpcyB0byBkZWNsYXJlIHRoZSBuZXR3b3JrIGZpbGVzeXN0ZW0gdG8gdGhlIGNhY2hlLiAgVGhpcyBhbHNvCitpbnZvbHZlcyBzcGVjaWZ5aW5nIHRoZSBsYXlvdXQgb2YgdGhlIHByaW1hcnkgaW5kZXggKGZvciBBRlMsIHRoaXMgd291bGQgYmUgdGhlCisiY2VsbCIgbGV2ZWwpLgorCitUaGUgcmVnaXN0cmF0aW9uIGZ1bmN0aW9uIGlzOgorCisJaW50IGZzY2FjaGVfcmVnaXN0ZXJfbmV0ZnMoc3RydWN0IGZzY2FjaGVfbmV0ZnMgKm5ldGZzKTsKKworSXQganVzdCB0YWtlcyBhIHBvaW50ZXIgdG8gdGhlIG5ldGZzIGRlZmluaXRpb24uICBJdCByZXR1cm5zIDAgb3IgYW4gZXJyb3IgYXMKK2FwcHJvcHJpYXRlLgorCitGb3Iga0FGUywgcmVnaXN0cmF0aW9uIGlzIGRvbmUgYXMgZm9sbG93czoKKworCXJldCA9IGZzY2FjaGVfcmVnaXN0ZXJfbmV0ZnMoJmFmc19jYWNoZV9uZXRmcyk7CisKK1RoZSBsYXN0IHN0ZXAgaXMsIG9mIGNvdXJzZSwgdW5yZWdpc3RyYXRpb246CisKKwl2b2lkIGZzY2FjaGVfdW5yZWdpc3Rlcl9uZXRmcyhzdHJ1Y3QgZnNjYWNoZV9uZXRmcyAqbmV0ZnMpOworCisKKz09PT09PT09PT09PT09PT0KK0NBQ0hFIFRBRyBMT09LVVAKKz09PT09PT09PT09PT09PT0KKworRlMtQ2FjaGUgcGVybWl0cyB0aGUgdXNlIG9mIG1vcmUgdGhhbiBvbmUgY2FjaGUuICBUbyBwZXJtaXQgcGFydGljdWxhciBpbmRleAorc3VidHJlZXMgdG8gYmUgYm91bmQgdG8gcGFydGljdWxhciBjYWNoZXMsIHRoZSBzZWNvbmQgc3RlcCBpcyB0byBsb29rIHVwIGNhY2hlCityZXByZXNlbnRhdGlvbiB0YWdzLiAgVGhpcyBzdGVwIGlzIG9wdGlvbmFsOyBpdCBjYW4gYmUgbGVmdCBlbnRpcmVseSB1cCB0bworRlMtQ2FjaGUgYXMgdG8gd2hpY2ggY2FjaGUgc2hvdWxkIGJlIHVzZWQuICBUaGUgcHJvYmxlbSB3aXRoIGRvaW5nIHRoYXQgaXMgdGhhdAorRlMtQ2FjaGUgd2lsbCBhbHdheXMgcGljayB0aGUgZmlyc3QgY2FjaGUgdGhhdCB3YXMgcmVnaXN0ZXJlZC4KKworVG8gZ2V0IHRoZSByZXByZXNlbnRhdGlvbiBmb3IgYSBuYW1lZCB0YWc6CisKKwlzdHJ1Y3QgZnNjYWNoZV9jYWNoZV90YWcgKmZzY2FjaGVfbG9va3VwX2NhY2hlX3RhZyhjb25zdCBjaGFyICpuYW1lKTsKKworVGhpcyB0YWtlcyBhIHRleHQgc3RyaW5nIGFzIHRoZSBuYW1lIGFuZCByZXR1cm5zIGEgcmVwcmVzZW50YXRpb24gb2YgYSB0YWcuICBJdAord2lsbCBuZXZlciByZXR1cm4gYW4gZXJyb3IuICBJdCBtYXkgcmV0dXJuIGEgZHVtbXkgdGFnLCBob3dldmVyLCBpZiBpdCBydW5zIG91dAorb2YgbWVtb3J5OyB0aGlzIHdpbGwgaW5oaWJpdCBjYWNoaW5nIHdpdGggdGhpcyB0YWcuCisKK0FueSByZXByZXNlbnRhdGlvbiBzbyBvYnRhaW5lZCBtdXN0IGJlIHJlbGVhc2VkIGJ5IHBhc3NpbmcgaXQgdG8gdGhpcyBmdW5jdGlvbjoKKworCXZvaWQgZnNjYWNoZV9yZWxlYXNlX2NhY2hlX3RhZyhzdHJ1Y3QgZnNjYWNoZV9jYWNoZV90YWcgKnRhZyk7CisKK1RoZSB0YWcgd2lsbCBiZSByZXRyaWV2ZWQgYnkgRlMtQ2FjaGUgd2hlbiBpdCBjYWxscyB0aGUgb2JqZWN0IGRlZmluaXRpb24KK29wZXJhdGlvbiBzZWxlY3RfY2FjaGUoKS4KKworCis9PT09PT09PT09PT09PT09PT0KK0lOREVYIFJFR0lTVFJBVElPTgorPT09PT09PT09PT09PT09PT09CisKK1RoZSB0aGlyZCBzdGVwIGlzIHRvIGluZm9ybSBGUy1DYWNoZSBhYm91dCBwYXJ0IG9mIGFuIGluZGV4IGhpZXJhcmNoeSB0aGF0IGNhbgorYmUgdXNlZCB0byBsb2NhdGUgZmlsZXMuICBUaGlzIGlzIGRvbmUgYnkgcmVxdWVzdGluZyBhIGNvb2tpZSBmb3IgZWFjaCBpbmRleCBpbgordGhlIHBhdGggdG8gdGhlIGZpbGU6CisKKwlzdHJ1Y3QgZnNjYWNoZV9jb29raWUgKgorCWZzY2FjaGVfYWNxdWlyZV9jb29raWUoc3RydWN0IGZzY2FjaGVfY29va2llICpwYXJlbnQsCisJCQkgICAgICAgY29uc3Qgc3RydWN0IGZzY2FjaGVfb2JqZWN0X2RlZiAqZGVmLAorCQkJICAgICAgIHZvaWQgKm5ldGZzX2RhdGEsCisJCQkgICAgICAgYm9vbCBlbmFibGUpOworCitUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYW4gaW5kZXggZW50cnkgaW4gdGhlIGluZGV4IHJlcHJlc2VudGVkIGJ5IHBhcmVudCwKK2ZpbGxpbmcgaW4gdGhlIGluZGV4IGVudHJ5IGJ5IGNhbGxpbmcgdGhlIG9wZXJhdGlvbnMgcG9pbnRlZCB0byBieSBkZWYuCisKK05vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIG5ldmVyIHJldHVybnMgYW4gZXJyb3IgLSBhbGwgZXJyb3JzIGFyZSBoYW5kbGVkCitpbnRlcm5hbGx5LiAgSXQgbWF5LCBob3dldmVyLCByZXR1cm4gTlVMTCB0byBpbmRpY2F0ZSBubyBjb29raWUuICBJdCBpcyBxdWl0ZQorYWNjZXB0YWJsZSB0byBwYXNzIHRoaXMgdG9rZW4gYmFjayB0byB0aGlzIGZ1bmN0aW9uIGFzIHRoZSBwYXJlbnQgdG8gYW5vdGhlcgorYWNxdWlzaXRpb24gKG9yIGV2ZW4gdG8gdGhlIHJlbGlucXVpc2ggY29va2llLCByZWFkIHBhZ2UgYW5kIHdyaXRlIHBhZ2UKK2Z1bmN0aW9ucyAtIHNlZSBiZWxvdykuCisKK05vdGUgYWxzbyB0aGF0IG5vIGluZGljZXMgYXJlIGFjdHVhbGx5IGNyZWF0ZWQgaW4gYSBjYWNoZSB1bnRpbCBhIG5vbi1pbmRleAorb2JqZWN0IG5lZWRzIHRvIGJlIGNyZWF0ZWQgc29tZXdoZXJlIGRvd24gdGhlIGhpZXJhcmNoeS4gIEZ1cnRoZXJtb3JlLCBhbiBpbmRleAorbWF5IGJlIGNyZWF0ZWQgaW4gc2V2ZXJhbCBkaWZmZXJlbnQgY2FjaGVzIGluZGVwZW5kZW50bHkgYXQgZGlmZmVyZW50IHRpbWVzLgorVGhpcyBpcyBhbGwgaGFuZGxlZCB0cmFuc3BhcmVudGx5LCBhbmQgdGhlIG5ldGZzIGRvZXNuJ3Qgc2VlIGFueSBvZiBpdC4KKworQSBjb29raWUgd2lsbCBiZSBjcmVhdGVkIGluIHRoZSBkaXNhYmxlZCBzdGF0ZSBpZiBlbmFibGVkIGlzIGZhbHNlLiAgQSBjb29raWUKK211c3QgYmUgZW5hYmxlZCB0byBkbyBhbnl0aGluZyB3aXRoIGl0LiAgQSBkaXNhYmxlZCBjb29raWUgY2FuIGJlIGVuYWJsZWQgYnkKK2NhbGxpbmcgZnNjYWNoZV9lbmFibGVfY29va2llKCkgKHNlZSBiZWxvdykuCisKK0ZvciBleGFtcGxlLCB3aXRoIEFGUywgYSBjZWxsIHdvdWxkIGJlIGFkZGVkIHRvIHRoZSBwcmltYXJ5IGluZGV4LiAgVGhpcyBpbmRleAorZW50cnkgd291bGQgaGF2ZSBhIGRlcGVuZGVudCBpbm9kZSBjb250YWluaW5nIGEgdm9sdW1lIGxvY2F0aW9uIGluZGV4IGZvciB0aGUKK3ZvbHVtZSBtYXBwaW5ncyB3aXRoaW4gdGhpcyBjZWxsOgorCisJY2VsbC0+Y2FjaGUgPQorCQlmc2NhY2hlX2FjcXVpcmVfY29va2llKGFmc19jYWNoZV9uZXRmcy5wcmltYXJ5X2luZGV4LAorCQkJCSAgICAgICAmYWZzX2NlbGxfY2FjaGVfaW5kZXhfZGVmLAorCQkJCSAgICAgICBjZWxsLCB0cnVlKTsKKworVGhlbiB3aGVuIGEgdm9sdW1lIGxvY2F0aW9uIHdhcyBhY2Nlc3NlZCwgaXQgd291bGQgYmUgZW50ZXJlZCBpbnRvIHRoZSBjZWxsJ3MKK2luZGV4IGFuZCBhbiBpbm9kZSB3b3VsZCBiZSBhbGxvY2F0ZWQgdGhhdCBhY3RzIGFzIGEgdm9sdW1lIHR5cGUgYW5kIGhhc2ggY2hhaW4KK2NvbWJpbmF0aW9uOgorCisJdmxvY2F0aW9uLT5jYWNoZSA9CisJCWZzY2FjaGVfYWNxdWlyZV9jb29raWUoY2VsbC0+Y2FjaGUsCisJCQkJICAgICAgICZhZnNfdmxvY2F0aW9uX2NhY2hlX2luZGV4X2RlZiwKKwkJCQkgICAgICAgdmxvY2F0aW9uLCB0cnVlKTsKKworQW5kIHRoZW4gYSBwYXJ0aWN1bGFyIGZsYXZvdXIgb2Ygdm9sdW1lIChSL08gZm9yIGV4YW1wbGUpIGNvdWxkIGJlIGFkZGVkIHRvCit0aGF0IGluZGV4LCBjcmVhdGluZyBhbm90aGVyIGluZGV4IGZvciB2bm9kZXMgKEFGUyBpbm9kZSBlcXVpdmFsZW50cyk6CisKKwl2b2x1bWUtPmNhY2hlID0KKwkJZnNjYWNoZV9hY3F1aXJlX2Nvb2tpZSh2bG9jYXRpb24tPmNhY2hlLAorCQkJCSAgICAgICAmYWZzX3ZvbHVtZV9jYWNoZV9pbmRleF9kZWYsCisJCQkJICAgICAgIHZvbHVtZSwgdHJ1ZSk7CisKKworPT09PT09PT09PT09PT09PT09PT09PQorREFUQSBGSUxFIFJFR0lTVFJBVElPTgorPT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZm91cnRoIHN0ZXAgaXMgdG8gcmVxdWVzdCBhIGRhdGEgZmlsZSBiZSBjcmVhdGVkIGluIHRoZSBjYWNoZS4gIFRoaXMgaXMKK2lkZW50aWNhbCB0byBpbmRleCBjb29raWUgYWNxdWlzaXRpb24uICBUaGUgb25seSBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIHR5cGUgaW4KK3RoZSBvYmplY3QgZGVmaW5pdGlvbiBzaG91bGQgYmUgc29tZXRoaW5nIG90aGVyIHRoYW4gaW5kZXggdHlwZS4KKworCXZub2RlLT5jYWNoZSA9CisJCWZzY2FjaGVfYWNxdWlyZV9jb29raWUodm9sdW1lLT5jYWNoZSwKKwkJCQkgICAgICAgJmFmc192bm9kZV9jYWNoZV9vYmplY3RfZGVmLAorCQkJCSAgICAgICB2bm9kZSwgdHJ1ZSk7CisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitNSVNDRUxMQU5FT1VTIE9CSkVDVCBSRUdJU1RSQVRJT04KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBbiBvcHRpb25hbCBzdGVwIGlzIHRvIHJlcXVlc3QgYW4gb2JqZWN0IG9mIG1pc2NlbGxhbmVvdXMgdHlwZSBiZSBjcmVhdGVkIGluCit0aGUgY2FjaGUuICBUaGlzIGlzIGFsbW9zdCBpZGVudGljYWwgdG8gaW5kZXggY29va2llIGFjcXVpc2l0aW9uLiAgVGhlIG9ubHkKK2RpZmZlcmVuY2UgaXMgdGhhdCB0aGUgdHlwZSBpbiB0aGUgb2JqZWN0IGRlZmluaXRpb24gc2hvdWxkIGJlIHNvbWV0aGluZyBvdGhlcgordGhhbiBpbmRleCB0eXBlLiAgV2hpbHN0IHRoZSBwYXJlbnQgb2JqZWN0IGNvdWxkIGJlIGFuIGluZGV4LCBpdCdzIG1vcmUgbGlrZWx5CitpdCB3b3VsZCBiZSBzb21lIG90aGVyIHR5cGUgb2Ygb2JqZWN0IHN1Y2ggYXMgYSBkYXRhIGZpbGUuCisKKwl4YXR0ci0+Y2FjaGUgPQorCQlmc2NhY2hlX2FjcXVpcmVfY29va2llKHZub2RlLT5jYWNoZSwKKwkJCQkgICAgICAgJmFmc194YXR0cl9jYWNoZV9vYmplY3RfZGVmLAorCQkJCSAgICAgICB4YXR0ciwgdHJ1ZSk7CisKK01pc2NlbGxhbmVvdXMgb2JqZWN0cyBtaWdodCBiZSB1c2VkIHRvIHN0b3JlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgb3IgZGlyZWN0b3J5CitlbnRyaWVzIGZvciBleGFtcGxlLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09CitTRVRUSU5HIFRIRSBEQVRBIEZJTEUgU0laRQorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGZpZnRoIHN0ZXAgaXMgdG8gc2V0IHRoZSBwaHlzaWNhbCBhdHRyaWJ1dGVzIG9mIHRoZSBmaWxlLCBzdWNoIGFzIGl0cyBzaXplLgorVGhpcyBkb2Vzbid0IGF1dG9tYXRpY2FsbHkgcmVzZXJ2ZSBhbnkgc3BhY2UgaW4gdGhlIGNhY2hlLCBidXQgcGVybWl0cyB0aGUKK2NhY2hlIHRvIGFkanVzdCBpdHMgbWV0YWRhdGEgZm9yIGRhdGEgdHJhY2tpbmcgYXBwcm9wcmlhdGVseToKKworCWludCBmc2NhY2hlX2F0dHJfY2hhbmdlZChzdHJ1Y3QgZnNjYWNoZV9jb29raWUgKmNvb2tpZSk7CisKK1RoZSBjYWNoZSB3aWxsIHJldHVybiAtRU5PQlVGUyBpZiB0aGVyZSBpcyBubyBiYWNraW5nIGNhY2hlIG9yIGlmIHRoZXJlIGlzIG5vCitzcGFjZSB0byBhbGxvY2F0ZSBhbnkgZXh0cmEgbWV0YWRhdGEgcmVxdWlyZWQgaW4gdGhlIGNhY2hlLiAgVGhlIGF0dHJpYnV0ZXMKK3dpbGwgYmUgYWNjZXNzZWQgd2l0aCB0aGUgZ2V0X2F0dHIoKSBjb29raWUgZGVmaW5pdGlvbiBvcGVyYXRpb24uCisKK05vdGUgdGhhdCBhdHRlbXB0cyB0byByZWFkIG9yIHdyaXRlIGRhdGEgcGFnZXMgaW4gdGhlIGNhY2hlIG92ZXIgdGhpcyBzaXplIG1heQorYmUgcmVidWZmZWQgd2l0aCAtRU5PQlVGUy4KKworVGhpcyBvcGVyYXRpb24gc2NoZWR1bGVzIGFuIGF0dHJpYnV0ZSBhZGp1c3RtZW50IHRvIGhhcHBlbiBhc3luY2hyb25vdXNseSBhdAorc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLCBhbmQgYXMgc3VjaCwgaXQgbWF5IGhhcHBlbiBhZnRlciB0aGUgZnVuY3Rpb24gcmV0dXJucwordG8gdGhlIGNhbGxlci4gIFRoZSBhdHRyaWJ1dGUgYWRqdXN0bWVudCBleGNsdWRlcyByZWFkIGFuZCB3cml0ZSBvcGVyYXRpb25zLgorCisKKz09PT09PT09PT09PT09PT09PT09PQorUEFHRSBBTExPQy9SRUFEL1dSSVRFCis9PT09PT09PT09PT09PT09PT09PT0KKworQW5kIHRoZSBzaXh0aCBzdGVwIGlzIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBwYWdlcyBpbiB0aGUgY2FjaGUuICBUaGVyZSBhcmUKK3RocmVlIGZ1bmN0aW9ucyB0aGF0IGFyZSB1c2VkIHRvIGRvIHRoaXMuCisKK05vdGU6CisKKyAoMSkgQSBwYWdlIHNob3VsZCBub3QgYmUgcmUtcmVhZCBvciByZS1hbGxvY2F0ZWQgd2l0aG91dCB1bmNhY2hpbmcgaXQgZmlyc3QuCisKKyAoMikgQSByZWFkIG9yIGFsbG9jYXRlZCBwYWdlIG11c3QgYmUgdW5jYWNoZWQgd2hlbiB0aGUgbmV0ZnMgcGFnZSBpcyByZWxlYXNlZAorICAgICBmcm9tIHRoZSBwYWdlY2FjaGUuCisKKyAoMykgQSBwYWdlIHNob3VsZCBvbmx5IGJlIHdyaXR0ZW4gdG8gdGhlIGNhY2hlIGlmIHByZXZpb3VzIHJlYWQgb3IgYWxsb2NhdGVkLgorCitUaGlzIHBlcm1pdHMgdGhlIGNhY2hlIHRvIG1haW50YWluIGl0cyBwYWdlIHRyYWNraW5nIGluIHByb3BlciBvcmRlci4KKworCitQQUdFIFJFQUQKKy0tLS0tLS0tLQorCitGaXJzdGx5LCB0aGUgbmV0ZnMgc2hvdWxkIGFzayBGUy1DYWNoZSB0byBleGFtaW5lIHRoZSBjYWNoZXMgYW5kIHJlYWQgdGhlCitjb250ZW50cyBjYWNoZWQgZm9yIGEgcGFydGljdWxhciBwYWdlIG9mIGEgcGFydGljdWxhciBmaWxlIGlmIHByZXNlbnQsIG9yIGVsc2UKK2FsbG9jYXRlIHNwYWNlIHRvIHN0b3JlIHRoZSBjb250ZW50cyBpZiBub3Q6CisKKwl0eXBlZGVmCisJdm9pZCAoKmZzY2FjaGVfcndfY29tcGxldGVfdCkoc3RydWN0IHBhZ2UgKnBhZ2UsCisJCQkJICAgICAgdm9pZCAqY29udGV4dCwKKwkJCQkgICAgICBpbnQgZXJyb3IpOworCisJaW50IGZzY2FjaGVfcmVhZF9vcl9hbGxvY19wYWdlKHN0cnVjdCBmc2NhY2hlX2Nvb2tpZSAqY29va2llLAorCQkJCSAgICAgICBzdHJ1Y3QgcGFnZSAqcGFnZSwKKwkJCQkgICAgICAgZnNjYWNoZV9yd19jb21wbGV0ZV90IGVuZF9pb19mdW5jLAorCQkJCSAgICAgICB2b2lkICpjb250ZXh0LAorCQkJCSAgICAgICBnZnBfdCBnZnApOworCitUaGUgY29va2llIGFyZ3VtZW50IG11c3Qgc3BlY2lmeSBhIGNvb2tpZSBmb3IgYW4gb2JqZWN0IHRoYXQgaXNuJ3QgYW4gaW5kZXgsCit0aGUgcGFnZSBzcGVjaWZpZWQgd2lsbCBoYXZlIHRoZSBkYXRhIGxvYWRlZCBpbnRvIGl0IChhbmQgaXMgYWxzbyB1c2VkIHRvCitzcGVjaWZ5IHRoZSBwYWdlIG51bWJlciksIGFuZCB0aGUgZ2ZwIGFyZ3VtZW50IGlzIHVzZWQgdG8gY29udHJvbCBob3cgYW55CittZW1vcnkgYWxsb2NhdGlvbnMgbWFkZSBhcmUgc2F0aXNmaWVkLgorCitJZiB0aGUgY29va2llIGluZGljYXRlcyB0aGUgaW5vZGUgaXMgbm90IGNhY2hlZDoKKworICgxKSBUaGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gLUVOT0JVRlMuCisKK0Vsc2UgaWYgdGhlcmUncyBhIGNvcHkgb2YgdGhlIHBhZ2UgcmVzaWRlbnQgaW4gdGhlIGNhY2hlOgorCisgKDEpIFRoZSBtYXJrX3BhZ2VzX2NhY2hlZCgpIGNvb2tpZSBvcGVyYXRpb24gd2lsbCBiZSBjYWxsZWQgb24gdGhhdCBwYWdlLgorCisgKDIpIFRoZSBmdW5jdGlvbiB3aWxsIHN1Ym1pdCBhIHJlcXVlc3QgdG8gcmVhZCB0aGUgZGF0YSBmcm9tIHRoZSBjYWNoZSdzCisgICAgIGJhY2tpbmcgZGV2aWNlIGRpcmVjdGx5IGludG8gdGhlIHBhZ2Ugc3BlY2lmaWVkLgorCisgKDMpIFRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiAwLgorCisgKDQpIFdoZW4gdGhlIHJlYWQgaXMgY29tcGxldGUsIGVuZF9pb19mdW5jKCkgd2lsbCBiZSBpbnZva2VkIHdpdGg6CisKKyAgICAgKCopIFRoZSBuZXRmcyBkYXRhIHN1cHBsaWVkIHdoZW4gdGhlIGNvb2tpZSB3YXMgY3JlYXRlZC4KKworICAgICAoKikgVGhlIHBhZ2UgZGVzY3JpcHRvci4KKworICAgICAoKikgVGhlIGNvbnRleHQgYXJndW1lbnQgcGFzc2VkIHRvIHRoZSBhYm92ZSBmdW5jdGlvbi4gIFRoaXMgd2lsbCBiZQorICAgICAgICAgbWFpbnRhaW5lZCB3aXRoIHRoZSBnZXRfY29udGV4dC9wdXRfY29udGV4dCBmdW5jdGlvbnMgbWVudGlvbmVkIGFib3ZlLgorCisgICAgICgqKSBBbiBhcmd1bWVudCB0aGF0J3MgMCBvbiBzdWNjZXNzIG9yIG5lZ2F0aXZlIGZvciBhbiBlcnJvciBjb2RlLgorCisgICAgIElmIGFuIGVycm9yIG9jY3VycywgaXQgc2hvdWxkIGJlIGFzc3VtZWQgdGhhdCB0aGUgcGFnZSBjb250YWlucyBubyB1c2FibGUKKyAgICAgZGF0YS4gIGZzY2FjaGVfcmVhZHBhZ2VzX2NhbmNlbCgpIG1heSBuZWVkIHRvIGJlIGNhbGxlZC4KKworICAgICBlbmRfaW9fZnVuYygpIHdpbGwgYmUgY2FsbGVkIGluIHByb2Nlc3MgY29udGV4dCBpZiB0aGUgcmVhZCBpcyByZXN1bHRzIGluCisgICAgIGFuIGVycm9yLCBidXQgaXQgbWlnaHQgYmUgY2FsbGVkIGluIGludGVycnVwdCBjb250ZXh0IGlmIHRoZSByZWFkIGlzCisgICAgIHN1Y2Nlc3NmdWwuCisKK090aGVyd2lzZSwgaWYgdGhlcmUncyBub3QgYSBjb3B5IGF2YWlsYWJsZSBpbiBjYWNoZSwgYnV0IHRoZSBjYWNoZSBtYXkgYmUgYWJsZQordG8gc3RvcmUgdGhlIHBhZ2U6CisKKyAoMSkgVGhlIG1hcmtfcGFnZXNfY2FjaGVkKCkgY29va2llIG9wZXJhdGlvbiB3aWxsIGJlIGNhbGxlZCBvbiB0aGF0IHBhZ2UuCisKKyAoMikgQSBibG9jayBtYXkgYmUgcmVzZXJ2ZWQgaW4gdGhlIGNhY2hlIGFuZCBhdHRhY2hlZCB0byB0aGUgb2JqZWN0IGF0IHRoZQorICAgICBhcHByb3ByaWF0ZSBwbGFjZS4KKworICgzKSBUaGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gLUVOT0RBVEEuCisKK1RoaXMgZnVuY3Rpb24gbWF5IGFsc28gcmV0dXJuIC1FTk9NRU0gb3IgLUVJTlRSLCBpbiB3aGljaCBjYXNlIGl0IHdvbid0IGhhdmUKK3JlYWQgYW55IGRhdGEgZnJvbSB0aGUgY2FjaGUuCisKKworUEFHRSBBTExPQ0FURQorLS0tLS0tLS0tLS0tLQorCitBbHRlcm5hdGl2ZWx5LCBpZiB0aGVyZSdzIG5vdCBleHBlY3RlZCB0byBiZSBhbnkgZGF0YSBpbiB0aGUgY2FjaGUgZm9yIGEgcGFnZQorYmVjYXVzZSB0aGUgZmlsZSBoYXMgYmVlbiBleHRlbmRlZCwgYSBibG9jayBjYW4gc2ltcGx5IGJlIGFsbG9jYXRlZCBpbnN0ZWFkOgorCisJaW50IGZzY2FjaGVfYWxsb2NfcGFnZShzdHJ1Y3QgZnNjYWNoZV9jb29raWUgKmNvb2tpZSwKKwkJCSAgICAgICBzdHJ1Y3QgcGFnZSAqcGFnZSwKKwkJCSAgICAgICBnZnBfdCBnZnApOworCitUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIGZzY2FjaGVfcmVhZF9vcl9hbGxvY19wYWdlKCkgZnVuY3Rpb24sIGV4Y2VwdCB0aGF0IGl0CituZXZlciByZWFkcyBmcm9tIHRoZSBjYWNoZS4gIEl0IHdpbGwgcmV0dXJuIDAgaWYgYSBibG9jayBoYXMgYmVlbiBhbGxvY2F0ZWQsCityYXRoZXIgdGhhbiAtRU5PREFUQSBhcyB0aGUgb3RoZXIgd291bGQuICBPbmUgb3IgdGhlIG90aGVyIG11c3QgYmUgcGVyZm9ybWVkCitiZWZvcmUgd3JpdGluZyB0byB0aGUgY2FjaGUuCisKK1RoZSBtYXJrX3BhZ2VzX2NhY2hlZCgpIGNvb2tpZSBvcGVyYXRpb24gd2lsbCBiZSBjYWxsZWQgb24gdGhlIHBhZ2UgaWYKK3N1Y2Nlc3NmdWwuCisKKworUEFHRSBXUklURQorLS0tLS0tLS0tLQorCitTZWNvbmRseSwgaWYgdGhlIG5ldGZzIGNoYW5nZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBwYWdlIChlaXRoZXIgZHVlIHRvIGFuCitpbml0aWFsIGRvd25sb2FkIG9yIGlmIGEgdXNlciBwZXJmb3JtcyBhIHdyaXRlKSwgdGhlbiB0aGUgcGFnZSBzaG91bGQgYmUKK3dyaXR0ZW4gYmFjayB0byB0aGUgY2FjaGU6CisKKwlpbnQgZnNjYWNoZV93cml0ZV9wYWdlKHN0cnVjdCBmc2NhY2hlX2Nvb2tpZSAqY29va2llLAorCQkJICAgICAgIHN0cnVjdCBwYWdlICpwYWdlLAorCQkJICAgICAgIGdmcF90IGdmcCk7CisKK1RoZSBjb29raWUgYXJndW1lbnQgbXVzdCBzcGVjaWZ5IGEgZGF0YSBmaWxlIGNvb2tpZSwgdGhlIHBhZ2Ugc3BlY2lmaWVkIHNob3VsZAorY29udGFpbiB0aGUgZGF0YSB0byBiZSB3cml0dGVuIChhbmQgaXMgYWxzbyB1c2VkIHRvIHNwZWNpZnkgdGhlIHBhZ2UgbnVtYmVyKSwKK2FuZCB0aGUgZ2ZwIGFyZ3VtZW50IGlzIHVzZWQgdG8gY29udHJvbCBob3cgYW55IG1lbW9yeSBhbGxvY2F0aW9ucyBtYWRlIGFyZQorc2F0aXNmaWVkLgorCitUaGUgcGFnZSBtdXN0IGhhdmUgZmlyc3QgYmVlbiByZWFkIG9yIGFsbG9jYXRlZCBzdWNjZXNzZnVsbHkgYW5kIG11c3Qgbm90IGhhdmUKK2JlZW4gdW5jYWNoZWQgYmVmb3JlIHdyaXRpbmcgaXMgcGVyZm9ybWVkLgorCitJZiB0aGUgY29va2llIGluZGljYXRlcyB0aGUgaW5vZGUgaXMgbm90IGNhY2hlZCB0aGVuOgorCisgKDEpIFRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiAtRU5PQlVGUy4KKworRWxzZSBpZiBzcGFjZSBjYW4gYmUgYWxsb2NhdGVkIGluIHRoZSBjYWNoZSB0byBob2xkIHRoaXMgcGFnZToKKworICgxKSBQR19mc2NhY2hlX3dyaXRlIHdpbGwgYmUgc2V0IG9uIHRoZSBwYWdlLgorCisgKDIpIFRoZSBmdW5jdGlvbiB3aWxsIHN1Ym1pdCBhIHJlcXVlc3QgdG8gd3JpdGUgdGhlIGRhdGEgdG8gY2FjaGUncyBiYWNraW5nCisgICAgIGRldmljZSBkaXJlY3RseSBmcm9tIHRoZSBwYWdlIHNwZWNpZmllZC4KKworICgzKSBUaGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gMC4KKworICg0KSBXaGVuIHRoZSB3cml0ZSBpcyBjb21wbGV0ZSBQR19mc2NhY2hlX3dyaXRlIGlzIGNsZWFyZWQgb24gdGhlIHBhZ2UgYW5kCisgICAgIGFueW9uZSB3YWl0aW5nIGZvciB0aGF0IGJpdCB3aWxsIGJlIHdva2VuIHVwLgorCitFbHNlIGlmIHRoZXJlJ3Mgbm8gc3BhY2UgYXZhaWxhYmxlIGluIHRoZSBjYWNoZSwgLUVOT0JVRlMgd2lsbCBiZSByZXR1cm5lZC4gIEl0CitpcyBhbHNvIHBvc3NpYmxlIGZvciB0aGUgUEdfZnNjYWNoZV93cml0ZSBiaXQgdG8gYmUgY2xlYXJlZCB3aGVuIG5vIHdyaXRlIHRvb2sKK3BsYWNlIGlmIHVuZm9yZXNlZW4gY2lyY3Vtc3RhbmNlcyBhcm9zZSAoc3VjaCBhcyBhIGRpc2sgZXJyb3IpLgorCitXcml0aW5nIHRha2VzIHBsYWNlIGFzeW5jaHJvbm91c2x5LgorCisKK01VTFRJUExFIFBBR0UgUkVBRAorLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgZmFjaWxpdHkgaXMgcHJvdmlkZWQgdG8gcmVhZCBzZXZlcmFsIHBhZ2VzIGF0IG9uY2UsIGFzIHJlcXVlc3RlZCBieSB0aGUKK3JlYWRwYWdlcygpIGFkZHJlc3Mgc3BhY2Ugb3BlcmF0aW9uOgorCisJaW50IGZzY2FjaGVfcmVhZF9vcl9hbGxvY19wYWdlcyhzdHJ1Y3QgZnNjYWNoZV9jb29raWUgKmNvb2tpZSwKKwkJCQkJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCisJCQkJCXN0cnVjdCBsaXN0X2hlYWQgKnBhZ2VzLAorCQkJCQlpbnQgKm5yX3BhZ2VzLAorCQkJCQlmc2NhY2hlX3J3X2NvbXBsZXRlX3QgZW5kX2lvX2Z1bmMsCisJCQkJCXZvaWQgKmNvbnRleHQsCisJCQkJCWdmcF90IGdmcCk7CisKK1RoaXMgd29ya3MgaW4gYSBzaW1pbGFyIHdheSB0byBmc2NhY2hlX3JlYWRfb3JfYWxsb2NfcGFnZSgpLCBleGNlcHQ6CisKKyAoMSkgQW55IHBhZ2UgaXQgY2FuIHJldHJpZXZlIGRhdGEgZm9yIGlzIHJlbW92ZWQgZnJvbSBwYWdlcyBhbmQgbnJfcGFnZXMgYW5kCisgICAgIGRpc3BhdGNoZWQgZm9yIHJlYWRpbmcgdG8gdGhlIGRpc2suICBSZWFkcyBvZiBhZGphY2VudCBwYWdlcyBvbiBkaXNrIG1heQorICAgICBiZSBtZXJnZWQgZm9yIGdyZWF0ZXIgZWZmaWNpZW5jeS4KKworICgyKSBUaGUgbWFya19wYWdlc19jYWNoZWQoKSBjb29raWUgb3BlcmF0aW9uIHdpbGwgYmUgY2FsbGVkIG9uIHNldmVyYWwgcGFnZXMKKyAgICAgYXQgb25jZSBpZiB0aGV5J3JlIGJlaW5nIHJlYWQgb3IgYWxsb2NhdGVkLgorCisgKDMpIElmIHRoZXJlIHdhcyBhbiBnZW5lcmFsIGVycm9yLCB0aGVuIHRoYXQgZXJyb3Igd2lsbCBiZSByZXR1cm5lZC4KKworICAgICBFbHNlIGlmIHNvbWUgcGFnZXMgY291bGRuJ3QgYmUgYWxsb2NhdGVkIG9yIHJlYWQsIHRoZW4gLUVOT0JVRlMgd2lsbCBiZQorICAgICByZXR1cm5lZC4KKworICAgICBFbHNlIGlmIHNvbWUgcGFnZXMgY291bGRuJ3QgYmUgcmVhZCBidXQgd2VyZSBhbGxvY2F0ZWQsIHRoZW4gLUVOT0RBVEEgd2lsbAorICAgICBiZSByZXR1cm5lZC4KKworICAgICBPdGhlcndpc2UsIGlmIGFsbCBwYWdlcyBoYWQgcmVhZHMgZGlzcGF0Y2hlZCwgdGhlbiAwIHdpbGwgYmUgcmV0dXJuZWQsIHRoZQorICAgICBsaXN0IHdpbGwgYmUgZW1wdHkgYW5kICpucl9wYWdlcyB3aWxsIGJlIDAuCisKKyAoNCkgZW5kX2lvX2Z1bmMgd2lsbCBiZSBjYWxsZWQgb25jZSBmb3IgZWFjaCBwYWdlIGJlaW5nIHJlYWQgYXMgdGhlIHJlYWRzCisgICAgIGNvbXBsZXRlLiAgSXQgd2lsbCBiZSBjYWxsZWQgaW4gcHJvY2VzcyBjb250ZXh0IGlmIGVycm9yICE9IDAsIGJ1dCBpdCBtYXkKKyAgICAgYmUgY2FsbGVkIGluIGludGVycnVwdCBjb250ZXh0IGlmIHRoZXJlIGlzIG5vIGVycm9yLgorCitOb3RlIHRoYXQgYSByZXR1cm4gb2YgLUVOT0RBVEEsIC1FTk9CVUZTIG9yIGFueSBvdGhlciBlcnJvciBkb2VzIG5vdCBwcmVjbHVkZQorc29tZSBvZiB0aGUgcGFnZXMgYmVpbmcgcmVhZCBhbmQgc29tZSBiZWluZyBhbGxvY2F0ZWQuICBUaG9zZSBwYWdlcyB3aWxsIGhhdmUKK2JlZW4gbWFya2VkIGFwcHJvcHJpYXRlbHkgYW5kIHdpbGwgbmVlZCB1bmNhY2hpbmcuCisKKworQ0FOQ0VMTEFUSU9OIE9GIFVOUkVBRCBQQUdFUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJZiBvbmUgb3IgbW9yZSBwYWdlcyBhcmUgcGFzc2VkIHRvIGZzY2FjaGVfcmVhZF9vcl9hbGxvY19wYWdlcygpIGJ1dCBub3QgdGhlbgorcmVhZCBmcm9tIHRoZSBjYWNoZSBhbmQgYWxzbyBub3QgcmVhZCBmcm9tIHRoZSB1bmRlcmx5aW5nIGZpbGVzeXN0ZW0gdGhlbgordGhvc2UgcGFnZXMgd2lsbCBuZWVkIHRvIGhhdmUgYW55IG1hcmtzIGFuZCByZXNlcnZhdGlvbnMgcmVtb3ZlZC4gIFRoaXMgY2FuIGJlCitkb25lIGJ5IGNhbGxpbmc6CisKKwl2b2lkIGZzY2FjaGVfcmVhZHBhZ2VzX2NhbmNlbChzdHJ1Y3QgZnNjYWNoZV9jb29raWUgKmNvb2tpZSwKKwkJCQkgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpwYWdlcyk7CisKK3ByaW9yIHRvIHJldHVybmluZyB0byB0aGUgY2FsbGVyLiAgVGhlIGNvb2tpZSBhcmd1bWVudCBzaG91bGQgYmUgYXMgcGFzc2VkIHRvCitmc2NhY2hlX3JlYWRfb3JfYWxsb2NfcGFnZXMoKS4gIEV2ZXJ5IHBhZ2UgaW4gdGhlIHBhZ2VzIGxpc3Qgd2lsbCBiZSBleGFtaW5lZAorYW5kIGFueSB0aGF0IGhhdmUgUEdfZnNjYWNoZSBzZXQgd2lsbCBiZSB1bmNhY2hlZC4KKworCis9PT09PT09PT09PT09PQorUEFHRSBVTkNBQ0hJTkcKKz09PT09PT09PT09PT09CisKK1RvIHVuY2FjaGUgYSBwYWdlLCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQ6CisKKwl2b2lkIGZzY2FjaGVfdW5jYWNoZV9wYWdlKHN0cnVjdCBmc2NhY2hlX2Nvb2tpZSAqY29va2llLAorCQkJCSAgc3RydWN0IHBhZ2UgKnBhZ2UpOworCitUaGlzIGZ1bmN0aW9uIHBlcm1pdHMgdGhlIGNhY2hlIHRvIHJlbGVhc2UgYW55IGluLW1lbW9yeSByZXByZXNlbnRhdGlvbiBpdAorbWlnaHQgYmUgaG9sZGluZyBmb3IgdGhpcyBuZXRmcyBwYWdlLiAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBvbmNlIGZvcgorZWFjaCBwYWdlIG9uIHdoaWNoIHRoZSByZWFkIG9yIHdyaXRlIHBhZ2UgZnVuY3Rpb25zIGFib3ZlIGhhdmUgYmVlbiBjYWxsZWQgdG8KK21ha2Ugc3VyZSB0aGUgY2FjaGUncyBpbi1tZW1vcnkgdHJhY2tpbmcgaW5mb3JtYXRpb24gZ2V0cyB0b3JuIGRvd24uCisKK05vdGUgdGhhdCBwYWdlcyBjYW4ndCBiZSBleHBsaWNpdGx5IGRlbGV0ZWQgZnJvbSB0aGUgYSBkYXRhIGZpbGUuICBUaGUgd2hvbGUKK2RhdGEgZmlsZSBtdXN0IGJlIHJldGlyZWQgKHNlZSB0aGUgcmVsaW5xdWlzaCBjb29raWUgZnVuY3Rpb24gYmVsb3cpLgorCitGdXJ0aGVybW9yZSwgbm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgY2FuY2VsIHRoZSBhc3luY2hyb25vdXMgcmVhZCBvciB3cml0ZQorb3BlcmF0aW9uIHN0YXJ0ZWQgYnkgdGhlIHJlYWQvYWxsb2MgYW5kIHdyaXRlIGZ1bmN0aW9ucywgc28gdGhlIHBhZ2UKK2ludmFsaWRhdGlvbiBmdW5jdGlvbnMgbXVzdCB1c2U6CisKKwlib29sIGZzY2FjaGVfY2hlY2tfcGFnZV93cml0ZShzdHJ1Y3QgZnNjYWNoZV9jb29raWUgKmNvb2tpZSwKKwkJCQkgICAgICBzdHJ1Y3QgcGFnZSAqcGFnZSk7CisKK3RvIHNlZSBpZiBhIHBhZ2UgaXMgYmVpbmcgd3JpdHRlbiB0byB0aGUgY2FjaGUsIGFuZDoKKworCXZvaWQgZnNjYWNoZV93YWl0X29uX3BhZ2Vfd3JpdGUoc3RydWN0IGZzY2FjaGVfY29va2llICpjb29raWUsCisJCQkJCXN0cnVjdCBwYWdlICpwYWdlKTsKKwordG8gd2FpdCBmb3IgaXQgdG8gZmluaXNoIGlmIGl0IGlzLgorCisKK1doZW4gcmVsZWFzZXBhZ2UoKSBpcyBiZWluZyBpbXBsZW1lbnRlZCwgYSBzcGVjaWFsIEZTLUNhY2hlIGZ1bmN0aW9uIGV4aXN0cyB0bworbWFuYWdlIHRoZSBoZXVyaXN0aWNzIG9mIGNvcGluZyB3aXRoIHZtc2NhbiB0cnlpbmcgdG8gZWplY3QgcGFnZXMsIHdoaWNoIG1heQorY29uZmxpY3Qgd2l0aCB0aGUgY2FjaGUgdHJ5aW5nIHRvIHdyaXRlIHBhZ2VzIHRvIHRoZSBjYWNoZSAod2hpY2ggbWF5IGl0c2VsZgorbmVlZCB0byBhbGxvY2F0ZSBtZW1vcnkpOgorCisJYm9vbCBmc2NhY2hlX21heWJlX3JlbGVhc2VfcGFnZShzdHJ1Y3QgZnNjYWNoZV9jb29raWUgKmNvb2tpZSwKKwkJCQkJc3RydWN0IHBhZ2UgKnBhZ2UsCisJCQkJCWdmcF90IGdmcCk7CisKK1RoaXMgdGFrZXMgdGhlIG5ldGZzIGNvb2tpZSwgYW5kIHRoZSBwYWdlIGFuZCBnZnAgYXJndW1lbnRzIGFzIHN1cHBsaWVkIHRvCityZWxlYXNlcGFnZSgpLiAgSXQgd2lsbCByZXR1cm4gZmFsc2UgaWYgdGhlIHBhZ2UgY2Fubm90IGJlIHJlbGVhc2VkIHlldCBmb3IKK3NvbWUgcmVhc29uIGFuZCBpZiBpdCByZXR1cm5zIHRydWUsIHRoZSBwYWdlIGhhcyBiZWVuIHVuY2FjaGVkIGFuZCBjYW4gbm93IGJlCityZWxlYXNlZC4KKworVG8gbWFrZSBhIHBhZ2UgYXZhaWxhYmxlIGZvciByZWxlYXNlLCB0aGlzIGZ1bmN0aW9uIG1heSB3YWl0IGZvciBhbiBvdXRzdGFuZGluZworc3RvcmFnZSByZXF1ZXN0IHRvIGNvbXBsZXRlLCBvciBpdCBtYXkgYXR0ZW1wdCB0byBjYW5jZWwgdGhlIHN0b3JhZ2UgcmVxdWVzdCAtCitpbiB3aGljaCBjYXNlIHRoZSBwYWdlIHdpbGwgbm90IGJlIHN0b3JlZCBpbiB0aGUgY2FjaGUgdGhpcyB0aW1lLgorCisKK0JVTEsgSU5PREUgUEFHRSBVTkNBQ0hFCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBIGNvbnZlbmllbmNlIHJvdXRpbmUgaXMgcHJvdmlkZWQgdG8gcGVyZm9ybSBhbiB1bmNhY2hlIG9uIGFsbCB0aGUgcGFnZXMKK2F0dGFjaGVkIHRvIGFuIGlub2RlLiAgVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHBhZ2VzIG9uIHRoZSBpbm9kZSBjb3JyZXNwb25kIG9uIGEKKzE6MSBiYXNpcyB3aXRoIHRoZSBwYWdlcyBpbiB0aGUgY2FjaGUuCisKKwl2b2lkIGZzY2FjaGVfdW5jYWNoZV9hbGxfaW5vZGVfcGFnZXMoc3RydWN0IGZzY2FjaGVfY29va2llICpjb29raWUsCisJCQkJCSAgICAgc3RydWN0IGlub2RlICppbm9kZSk7CisKK1RoaXMgdGFrZXMgdGhlIG5ldGZzIGNvb2tpZSB0aGF0IHRoZSBwYWdlcyB3ZXJlIGNhY2hlZCB3aXRoIGFuZCB0aGUgaW5vZGUgdGhhdAordGhlIHBhZ2VzIGFyZSBhdHRhY2hlZCB0by4gIFRoaXMgZnVuY3Rpb24gd2lsbCB3YWl0IGZvciBwYWdlcyB0byBmaW5pc2ggYmVpbmcKK3dyaXR0ZW4gdG8gdGhlIGNhY2hlIGFuZCBmb3IgdGhlIGNhY2hlIHRvIGZpbmlzaCB3aXRoIHRoZSBwYWdlIGdlbmVyYWxseS4gIE5vCitlcnJvciBpcyByZXR1cm5lZC4KKworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitJTkRFWCBBTkQgREFUQSBGSUxFIENPTlNJU1RFTkNZCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RvIGZpbmQgb3V0IHdoZXRoZXIgYXV4aWxpYXJ5IGRhdGEgZm9yIGFuIG9iamVjdCBpcyB1cCB0byBkYXRhIHdpdGhpbiB0aGUKK2NhY2hlLCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQ6CisKKwlpbnQgZnNjYWNoZV9jaGVja19jb25zaXN0ZW5jeShzdHJ1Y3QgZnNjYWNoZV9jb29raWUgKmNvb2tpZSkKKworVGhpcyB3aWxsIGNhbGwgYmFjayB0byB0aGUgbmV0ZnMgdG8gY2hlY2sgd2hldGhlciB0aGUgYXV4aWxpYXJ5IGRhdGEgYXNzb2NpYXRlZAord2l0aCBhIGNvb2tpZSBpcyBjb3JyZWN0LiAgSXQgcmV0dXJucyAwIGlmIGl0IGlzIGFuZCAtRVNUQUxFIGlmIGl0IGlzbid0OyBpdAorbWF5IGFsc28gcmV0dXJuIC1FTk9NRU0gYW5kIC1FUkVTVEFSVFNZUy4KKworVG8gcmVxdWVzdCBhbiB1cGRhdGUgb2YgdGhlIGluZGV4IGRhdGEgZm9yIGFuIGluZGV4IG9yIG90aGVyIG9iamVjdCwgdGhlCitmb2xsb3dpbmcgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZDoKKworCXZvaWQgZnNjYWNoZV91cGRhdGVfY29va2llKHN0cnVjdCBmc2NhY2hlX2Nvb2tpZSAqY29va2llKTsKKworVGhpcyBmdW5jdGlvbiB3aWxsIHJlZmVyIGJhY2sgdG8gdGhlIG5ldGZzX2RhdGEgcG9pbnRlciBzdG9yZWQgaW4gdGhlIGNvb2tpZSBieQordGhlIGFjcXVpc2l0aW9uIGZ1bmN0aW9uIHRvIG9idGFpbiB0aGUgZGF0YSB0byB3cml0ZSBpbnRvIGVhY2ggcmV2aXNlZCBpbmRleAorZW50cnkuICBUaGUgdXBkYXRlIG1ldGhvZCBpbiB0aGUgcGFyZW50IGluZGV4IGRlZmluaXRpb24gd2lsbCBiZSBjYWxsZWQgdG8KK3RyYW5zZmVyIHRoZSBkYXRhLgorCitOb3RlIHRoYXQgcGFydGlhbCB1cGRhdGVzIG1heSBoYXBwZW4gYXV0b21hdGljYWxseSBhdCBvdGhlciB0aW1lcywgc3VjaCBhcyB3aGVuCitkYXRhIGJsb2NrcyBhcmUgYWRkZWQgdG8gYSBkYXRhIGZpbGUgb2JqZWN0LgorCisKKz09PT09PT09PT09PT09PT09CitDT09LSUUgRU5BQkxFTUVOVAorPT09PT09PT09PT09PT09PT0KKworQ29va2llcyBleGlzdCBpbiBvbmUgb2YgdHdvIHN0YXRlczogZW5hYmxlZCBhbmQgZGlzYWJsZWQuICBJZiBhIGNvb2tpZSBpcworZGlzYWJsZWQsIGl0IGlnbm9yZXMgYWxsIGF0dGVtcHRzIHRvIGFjcXVpcmUgY2hpbGQgY29va2llczsgY2hlY2ssIHVwZGF0ZSBvcgoraW52YWxpZGF0ZSBpdHMgc3RhdGU7IGFsbG9jYXRlLCByZWFkIG9yIHdyaXRlIGJhY2tpbmcgcGFnZXMgLSB0aG91Z2ggaXQgaXMKK3N0aWxsIHBvc3NpYmxlIHRvIHVuY2FjaGUgcGFnZXMgYW5kIHJlbGlucXVpc2ggdGhlIGNvb2tpZS4KKworVGhlIGluaXRpYWwgZW5hYmxlbWVudCBzdGF0ZSBpcyBzZXQgYnkgZnNjYWNoZV9hY3F1aXJlX2Nvb2tpZSgpLCBidXQgdGhlIGNvb2tpZQorY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgbGF0ZXIuICBUbyBkaXNhYmxlIGEgY29va2llLCBjYWxsOgorICAgIAorCXZvaWQgZnNjYWNoZV9kaXNhYmxlX2Nvb2tpZShzdHJ1Y3QgZnNjYWNoZV9jb29raWUgKmNvb2tpZSwKKyAgICAJCQkJICAgIGJvb2wgaW52YWxpZGF0ZSk7CisgICAgCitJZiB0aGUgY29va2llIGlzIG5vdCBhbHJlYWR5IGRpc2FibGVkLCB0aGlzIGxvY2tzIHRoZSBjb29raWUgYWdhaW5zdCBvdGhlcgorZW5hYmxlIGFuZCBkaXNhYmxlIG9wcywgbWFya3MgdGhlIGNvb2tpZSBhcyBiZWluZyBkaXNhYmxlZCwgZGlzY2FyZHMgb3IKK2ludmFsaWRhdGVzIGFueSBiYWNraW5nIG9iamVjdHMgYW5kIHdhaXRzIGZvciBjZXNzYXRpb24gb2YgYWN0aXZpdHkgb24gYW55Cithc3NvY2lhdGVkIG9iamVjdCBiZWZvcmUgdW5sb2NraW5nIHRoZSBjb29raWUuCisKK0FsbCBwb3NzaWJsZSBmYWlsdXJlcyBhcmUgaGFuZGxlZCBpbnRlcm5hbGx5LiAgVGhlIGNhbGxlciBzaG91bGQgY29uc2lkZXIKK2NhbGxpbmcgZnNjYWNoZV91bmNhY2hlX2FsbF9pbm9kZV9wYWdlcygpIGFmdGVyd2FyZHMgdG8gbWFrZSBzdXJlIGFsbCBwYWdlCittYXJraW5ncyBhcmUgY2xlYXJlZCB1cC4KKyAgICAKK0Nvb2tpZXMgY2FuIGJlIGVuYWJsZWQgb3IgcmVlbmFibGVkIHdpdGg6CisgICAgCisgICAgCXZvaWQgZnNjYWNoZV9lbmFibGVfY29va2llKHN0cnVjdCBmc2NhY2hlX2Nvb2tpZSAqY29va2llLAorICAgIAkJCQkgICBib29sICgqY2FuX2VuYWJsZSkodm9pZCAqZGF0YSksCisgICAgCQkJCSAgIHZvaWQgKmRhdGEpCisgICAgCitJZiB0aGUgY29va2llIGlzIG5vdCBhbHJlYWR5IGVuYWJsZWQsIHRoaXMgbG9ja3MgdGhlIGNvb2tpZSBhZ2FpbnN0IG90aGVyCitlbmFibGUgYW5kIGRpc2FibGUgb3BzLCBpbnZva2VzIGNhbl9lbmFibGUoKSBhbmQsIGlmIHRoZSBjb29raWUgaXMgbm90IGFuIGluZGV4Citjb29raWUsIHdpbGwgYmVnaW4gdGhlIHByb2NlZHVyZSBvZiBhY3F1aXJpbmcgYmFja2luZyBvYmplY3RzLgorCitUaGUgb3B0aW9uYWwgY2FuX2VuYWJsZSgpIGZ1bmN0aW9uIGlzIHBhc3NlZCB0aGUgZGF0YSBhcmd1bWVudCBhbmQgcmV0dXJucyBhCitydWxpbmcgYXMgdG8gd2hldGhlciBvciBub3QgZW5hYmxlbWVudCBzaG91bGQgYWN0dWFsbHkgYmUgcGVybWl0dGVkIHRvIGJlZ2luLgorCitBbGwgcG9zc2libGUgZmFpbHVyZXMgYXJlIGhhbmRsZWQgaW50ZXJuYWxseS4gIFRoZSBjb29raWUgd2lsbCBvbmx5IGJlIG1hcmtlZAorYXMgZW5hYmxlZCBpZiBwcm92aXNpb25hbCBiYWNraW5nIG9iamVjdHMgYXJlIGFsbG9jYXRlZC4KKworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitNSVNDRUxMQU5FT1VTIENPT0tJRSBPUEVSQVRJT05TCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZXJlIGFyZSBhIG51bWJlciBvZiBvcGVyYXRpb25zIHRoYXQgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBjb29raWVzOgorCisgKCopIENvb2tpZSBwaW5uaW5nOgorCisJaW50IGZzY2FjaGVfcGluX2Nvb2tpZShzdHJ1Y3QgZnNjYWNoZV9jb29raWUgKmNvb2tpZSk7CisJdm9pZCBmc2NhY2hlX3VucGluX2Nvb2tpZShzdHJ1Y3QgZnNjYWNoZV9jb29raWUgKmNvb2tpZSk7CisKKyAgICAgVGhlc2Ugb3BlcmF0aW9ucyBwZXJtaXQgZGF0YSBjb29raWVzIHRvIGJlIHBpbm5lZCBpbnRvIHRoZSBjYWNoZSBhbmQgdG8KKyAgICAgaGF2ZSB0aGUgcGlubmluZyByZW1vdmVkLiAgVGhleSBhcmUgbm90IHBlcm1pdHRlZCBvbiBpbmRleCBjb29raWVzLgorCisgICAgIFRoZSBwaW5uaW5nIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIDAgaWYgc3VjY2Vzc2Z1bCwgLUVOT0JVRlMgaW4gdGhlIGNvb2tpZQorICAgICBpc24ndCBiYWNrZWQgYnkgYSBjYWNoZSwgLUVPUE5PVFNVUFAgaWYgdGhlIGNhY2hlIGRvZXNuJ3Qgc3VwcG9ydCBwaW5uaW5nLAorICAgICAtRU5PU1BDIGlmIHRoZXJlIGlzbid0IGVub3VnaCBzcGFjZSB0byBob25vdXIgdGhlIG9wZXJhdGlvbiwgLUVOT01FTSBvcgorICAgICAtRUlPIGlmIHRoZXJlJ3MgYW55IG90aGVyIHByb2JsZW0uCisKKyAoKikgRGF0YSBzcGFjZSByZXNlcnZhdGlvbjoKKworCWludCBmc2NhY2hlX3Jlc2VydmVfc3BhY2Uoc3RydWN0IGZzY2FjaGVfY29va2llICpjb29raWUsIGxvZmZfdCBzaXplKTsKKworICAgICBUaGlzIHBlcm1pdHMgYSBuZXRmcyB0byByZXF1ZXN0IGNhY2hlIHNwYWNlIGJlIHJlc2VydmVkIHRvIHN0b3JlIHVwIHRvIHRoZQorICAgICBnaXZlbiBhbW91bnQgb2YgYSBmaWxlLiAgSXQgaXMgcGVybWl0dGVkIHRvIGFzayBmb3IgbW9yZSB0aGFuIHRoZSBjdXJyZW50CisgICAgIHNpemUgb2YgdGhlIGZpbGUgdG8gYWxsb3cgZm9yIGZ1dHVyZSBmaWxlIGV4cGFuc2lvbi4KKworICAgICBJZiBzaXplIGlzIGdpdmVuIGFzIHplcm8gdGhlbiB0aGUgcmVzZXJ2YXRpb24gd2lsbCBiZSBjYW5jZWxsZWQuCisKKyAgICAgVGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIDAgaWYgc3VjY2Vzc2Z1bCwgLUVOT0JVRlMgaW4gdGhlIGNvb2tpZSBpc24ndAorICAgICBiYWNrZWQgYnkgYSBjYWNoZSwgLUVPUE5PVFNVUFAgaWYgdGhlIGNhY2hlIGRvZXNuJ3Qgc3VwcG9ydCByZXNlcnZhdGlvbnMsCisgICAgIC1FTk9TUEMgaWYgdGhlcmUgaXNuJ3QgZW5vdWdoIHNwYWNlIHRvIGhvbm91ciB0aGUgb3BlcmF0aW9uLCAtRU5PTUVNIG9yCisgICAgIC1FSU8gaWYgdGhlcmUncyBhbnkgb3RoZXIgcHJvYmxlbS4KKworICAgICBOb3RlIHRoYXQgdGhpcyBkb2Vzbid0IHBpbiBhbiBvYmplY3QgaW4gYSBjYWNoZTsgaXQgY2FuIHN0aWxsIGJlIGN1bGxlZCB0bworICAgICBtYWtlIHNwYWNlIGlmIGl0J3Mgbm90IGluIHVzZS4KKworCis9PT09PT09PT09PT09PT09PT09PT0KK0NPT0tJRSBVTlJFR0lTVFJBVElPTgorPT09PT09PT09PT09PT09PT09PT09CisKK1RvIGdldCByaWQgb2YgYSBjb29raWUsIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZC4KKworCXZvaWQgZnNjYWNoZV9yZWxpbnF1aXNoX2Nvb2tpZShzdHJ1Y3QgZnNjYWNoZV9jb29raWUgKmNvb2tpZSwKKwkJCQkgICAgICAgYm9vbCByZXRpcmUpOworCitJZiByZXRpcmUgaXMgbm9uLXplcm8sIHRoZW4gdGhlIG9iamVjdCB3aWxsIGJlIG1hcmtlZCBmb3IgcmVjeWNsaW5nLCBhbmQgYWxsCitjb3BpZXMgb2YgaXQgd2lsbCBiZSByZW1vdmVkIGZyb20gYWxsIGFjdGl2ZSBjYWNoZXMgaW4gd2hpY2ggaXQgaXMgcHJlc2VudC4KK05vdCBvbmx5IHRoYXQgYnV0IGFsbCBjaGlsZCBvYmplY3RzIHdpbGwgYWxzbyBiZSByZXRpcmVkLgorCitJZiByZXRpcmUgaXMgemVybywgdGhlbiB0aGUgb2JqZWN0IG1heSBiZSBhdmFpbGFibGUgYWdhaW4gd2hlbiBuZXh0IHRoZQorYWNxdWlzaXRpb24gZnVuY3Rpb24gaXMgY2FsbGVkLiAgUmV0aXJlbWVudCBoZXJlIHdpbGwgb3ZlcnJ1bGUgdGhlIHBpbm5pbmcgb24gYQorY29va2llLgorCitPbmUgdmVyeSBpbXBvcnRhbnQgbm90ZSAtIHJlbGlucXVpc2ggbXVzdCBOT1QgYmUgY2FsbGVkIGZvciBhIGNvb2tpZSB1bmxlc3MgYWxsCit0aGUgY29va2llcyBmb3IgImNoaWxkIiBpbmRpY2VzLCBvYmplY3RzIGFuZCBwYWdlcyBoYXZlIGJlZW4gcmVsaW5xdWlzaGVkCitmaXJzdC4KKworCis9PT09PT09PT09PT09PT09PT0KK0lOREVYIElOVkFMSURBVElPTgorPT09PT09PT09PT09PT09PT09CisKK1RoZXJlIGlzIG5vIGRpcmVjdCB3YXkgdG8gaW52YWxpZGF0ZSBhbiBpbmRleCBzdWJ0cmVlLiAgVG8gZG8gdGhpcywgdGhlIGNhbGxlcgorc2hvdWxkIHJlbGlucXVpc2ggYW5kIHJldGlyZSB0aGUgY29va2llIHRoZXkgaGF2ZSwgYW5kIHRoZW4gYWNxdWlyZSBhIG5ldyBvbmUuCisKKworPT09PT09PT09PT09PT09PT09PT09PQorREFUQSBGSUxFIElOVkFMSURBVElPTgorPT09PT09PT09PT09PT09PT09PT09PQorCitTb21ldGltZXMgaXQgd2lsbCBiZSBuZWNlc3NhcnkgdG8gaW52YWxpZGF0ZSBhbiBvYmplY3QgdGhhdCBjb250YWlucyBkYXRhLgorVHlwaWNhbGx5IHRoaXMgd2lsbCBiZSBuZWNlc3Nhcnkgd2hlbiB0aGUgc2VydmVyIHRlbGxzIHRoZSBuZXRmcyBvZiBhIGZvcmVpZ24KK2NoYW5nZSAtIGF0IHdoaWNoIHBvaW50IHRoZSBuZXRmcyBoYXMgdG8gdGhyb3cgYXdheSBhbGwgdGhlIHN0YXRlIGl0IGhhZCBmb3IgYW4KK2lub2RlIGFuZCByZWxvYWQgZnJvbSB0aGUgc2VydmVyLgorCitUbyBpbmRpY2F0ZSB0aGF0IGEgY2FjaGUgb2JqZWN0IHNob3VsZCBiZSBpbnZhbGlkYXRlZCwgdGhlIGZvbGxvd2luZyBmdW5jdGlvbgorY2FuIGJlIGNhbGxlZDoKKworCXZvaWQgZnNjYWNoZV9pbnZhbGlkYXRlKHN0cnVjdCBmc2NhY2hlX2Nvb2tpZSAqY29va2llKTsKKworVGhpcyBjYW4gYmUgY2FsbGVkIHdpdGggc3BpbmxvY2tzIGhlbGQgYXMgaXQgZGVmZXJzIHRoZSB3b3JrIHRvIGEgdGhyZWFkIHBvb2wuCitBbGwgZXh0YW50IHN0b3JhZ2UsIHJldHJpZXZhbCBhbmQgYXR0cmlidXRlIGNoYW5nZSBvcHMgYXQgdGhpcyBwb2ludCBhcmUKK2NhbmNlbGxlZCBhbmQgZGlzY2FyZGVkLiAgU29tZSBmdXR1cmUgb3BlcmF0aW9ucyB3aWxsIGJlIHJlamVjdGVkIHVudGlsIHRoZQorY2FjaGUgaGFzIGhhZCBhIGNoYW5jZSB0byBpbnNlcnQgYSBiYXJyaWVyIGluIHRoZSBvcGVyYXRpb25zIHF1ZXVlLiAgQWZ0ZXIKK3RoYXQsIG9wZXJhdGlvbnMgd2lsbCBiZSBxdWV1ZWQgYWdhaW4gYmVoaW5kIHRoZSBpbnZhbGlkYXRpb24gb3BlcmF0aW9uLgorCitUaGUgaW52YWxpZGF0aW9uIG9wZXJhdGlvbiB3aWxsIHBlcmZvcm0gYW4gYXR0cmlidXRlIGNoYW5nZSBvcGVyYXRpb24gYW5kIGFuCithdXhpbGlhcnkgZGF0YSB1cGRhdGUgb3BlcmF0aW9uIGFzIGl0IGlzIHZlcnkgbGlrZWx5IHRoZXNlIHdpbGwgaGF2ZSBjaGFuZ2VkLgorCitVc2luZyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uLCB0aGUgbmV0ZnMgY2FuIHdhaXQgZm9yIHRoZSBpbnZhbGlkYXRpb24gb3BlcmF0aW9uCit0byBoYXZlIHJlYWNoZWQgYSBwb2ludCBhdCB3aGljaCBpdCBjYW4gc3RhcnQgc3VibWl0dGluZyBvcmRpbmFyeSBvcGVyYXRpb25zCitvbmNlIGFnYWluOgorCisJdm9pZCBmc2NhY2hlX3dhaXRfb25faW52YWxpZGF0ZShzdHJ1Y3QgZnNjYWNoZV9jb29raWUgKmNvb2tpZSk7CisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09CitGUy1DQUNIRSBTUEVDSUZJQyBQQUdFIEZMQUcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGUy1DYWNoZSBtYWtlcyB1c2Ugb2YgYSBwYWdlIGZsYWcsIFBHX3ByaXZhdGVfMiwgZm9yIGl0cyBvd24gcHVycG9zZS4gIFRoaXMgaXMKK2dpdmVuIHRoZSBhbHRlcm5hdGl2ZSBuYW1lIFBHX2ZzY2FjaGUuCisKK1BHX2ZzY2FjaGUgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBwYWdlIGlzIGtub3duIGJ5IHRoZSBjYWNoZSwgYW5kIHRoYXQKK3RoZSBjYWNoZSBtdXN0IGJlIGluZm9ybWVkIGlmIHRoZSBwYWdlIGlzIGdvaW5nIHRvIGdvIGF3YXkuICBJdCdzIGFuIGluZGljYXRpb24KK3RvIHRoZSBuZXRmcyB0aGF0IHRoZSBjYWNoZSBoYXMgYW4gaW50ZXJlc3QgaW4gdGhpcyBwYWdlLCB3aGVyZSBhbiBpbnRlcmVzdCBtYXkKK2JlIGEgcG9pbnRlciB0byBpdCwgcmVzb3VyY2VzIGFsbG9jYXRlZCBvciByZXNlcnZlZCBmb3IgaXQsIG9yIEkvTyBpbiBwcm9ncmVzcwordXBvbiBpdC4KKworVGhlIG5ldGZzIGNhbiB1c2UgdGhpcyBpbmZvcm1hdGlvbiBpbiBtZXRob2RzIHN1Y2ggYXMgcmVsZWFzZXBhZ2UoKSB0bworZGV0ZXJtaW5lIHdoZXRoZXIgaXQgbmVlZHMgdG8gdW5jYWNoZSBhIHBhZ2Ugb3IgdXBkYXRlIGl0LgorCitGdXJ0aGVybW9yZSwgaWYgdGhpcyBiaXQgaXMgc2V0LCByZWxlYXNlcGFnZSgpIGFuZCBpbnZhbGlkYXRlcGFnZSgpIG9wZXJhdGlvbnMKK3dpbGwgYmUgY2FsbGVkIG9uIGEgcGFnZSB0byBnZXQgcmlkIG9mIGl0LCBldmVuIGlmIFBHX3ByaXZhdGUgaXMgbm90IHNldC4gIFRoaXMKK2FsbG93cyBjYWNoaW5nIHRvIGF0dGVtcHRlZCBvbiBhIHBhZ2UgYmVmb3JlIHJlYWRfY2FjaGVfcGFnZXMoKSB0byBiZSBjYWxsZWQKK2FmdGVyIGZzY2FjaGVfcmVhZF9vcl9hbGxvY19wYWdlcygpIGFzIHRoZSBmb3JtZXIgd2lsbCB0cnkgYW5kIHJlbGVhc2UgcGFnZXMgaXQKK3dhcyBnaXZlbiB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMuCisKK1RoaXMgYml0IGRvZXMgbm90IG92ZXJsYXAgd2l0aCBzdWNoIGFzIFBHX3ByaXZhdGUuICBUaGlzIG1lYW5zIHRoYXQgRlMtQ2FjaGUKK2NhbiBiZSB1c2VkIHdpdGggYSBmaWxlc3lzdGVtIHRoYXQgdXNlcyB0aGUgYmxvY2sgYnVmZmVyaW5nIGNvZGUuCisKK1RoZXJlIGFyZSBhIG51bWJlciBvZiBvcGVyYXRpb25zIGRlZmluZWQgb24gdGhpcyBmbGFnOgorCisJaW50IFBhZ2VGc0NhY2hlKHN0cnVjdCBwYWdlICpwYWdlKTsKKwl2b2lkIFNldFBhZ2VGc0NhY2hlKHN0cnVjdCBwYWdlICpwYWdlKQorCXZvaWQgQ2xlYXJQYWdlRnNDYWNoZShzdHJ1Y3QgcGFnZSAqcGFnZSkKKwlpbnQgVGVzdFNldFBhZ2VGc0NhY2hlKHN0cnVjdCBwYWdlICpwYWdlKQorCWludCBUZXN0Q2xlYXJQYWdlRnNDYWNoZShzdHJ1Y3QgcGFnZSAqcGFnZSkKKworVGhlc2UgZnVuY3Rpb25zIGFyZSBiaXQgdGVzdCwgYml0IHNldCwgYml0IGNsZWFyLCBiaXQgdGVzdCBhbmQgc2V0IGFuZCBiaXQKK3Rlc3QgYW5kIGNsZWFyIG9wZXJhdGlvbnMgb24gUEdfZnNjYWNoZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2FjaGluZy9vYmplY3QudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9jYWNoaW5nL29iamVjdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAwZmY0MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2FjaGluZy9vYmplY3QudHh0CkBAIC0wLDAgKzEsMzIwIEBACisJICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJICAgICBJTi1LRVJORUwgQ0FDSEUgT0JKRUNUIFJFUFJFU0VOVEFUSU9OIEFORCBNQU5BR0VNRU5UCisJICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0J5OiBEYXZpZCBIb3dlbGxzIDxkaG93ZWxsc0ByZWRoYXQuY29tPgorCitDb250ZW50czoKKworICgqKSBSZXByZXNlbnRhdGlvbgorCisgKCopIE9iamVjdCBtYW5hZ2VtZW50IHN0YXRlIG1hY2hpbmUuCisKKyAgICAgLSBQcm92aXNpb24gb2YgY3B1IHRpbWUuCisgICAgIC0gTG9ja2luZyBzaW1wbGlmaWNhdGlvbi4KKworICgqKSBUaGUgc2V0IG9mIHN0YXRlcy4KKworICgqKSBUaGUgc2V0IG9mIGV2ZW50cy4KKworCis9PT09PT09PT09PT09PQorUkVQUkVTRU5UQVRJT04KKz09PT09PT09PT09PT09CisKK0ZTLUNhY2hlIG1haW50YWlucyBhbiBpbi1rZXJuZWwgcmVwcmVzZW50YXRpb24gb2YgZWFjaCBvYmplY3QgdGhhdCBhIG5ldGZzIGlzCitjdXJyZW50bHkgaW50ZXJlc3RlZCBpbi4gIFN1Y2ggb2JqZWN0cyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIGZzY2FjaGVfY29va2llCitzdHJ1Y3QgYW5kIGFyZSByZWZlcnJlZCB0byBhcyBjb29raWVzLgorCitGUy1DYWNoZSBhbHNvIG1haW50YWlucyBhIHNlcGFyYXRlIGluLWtlcm5lbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0cyB0aGF0CithIGNhY2hlIGJhY2tlbmQgaXMgY3VycmVudGx5IGFjdGl2ZWx5IGNhY2hpbmcuICBTdWNoIG9iamVjdHMgYXJlIHJlcHJlc2VudGVkIGJ5Cit0aGUgZnNjYWNoZV9vYmplY3Qgc3RydWN0LiAgVGhlIGNhY2hlIGJhY2tlbmRzIGFsbG9jYXRlIHRoZXNlIHVwb24gcmVxdWVzdCwgYW5kCithcmUgZXhwZWN0ZWQgdG8gZW1iZWQgdGhlbSBpbiB0aGVpciBvd24gcmVwcmVzZW50YXRpb25zLiAgVGhlc2UgYXJlIHJlZmVycmVkIHRvCithcyBvYmplY3RzLgorCitUaGVyZSBpcyBhIDE6TiByZWxhdGlvbnNoaXAgYmV0d2VlbiBjb29raWVzIGFuZCBvYmplY3RzLiAgQSBjb29raWUgbWF5IGJlCityZXByZXNlbnRlZCBieSBtdWx0aXBsZSBvYmplY3RzIC0gYW4gaW5kZXggbWF5IGV4aXN0IGluIG1vcmUgdGhhbiBvbmUgY2FjaGUgLQorb3IgZXZlbiBieSBubyBvYmplY3RzIChpdCBtYXkgbm90IGJlIGNhY2hlZCkuCisKK0Z1cnRoZXJtb3JlLCBib3RoIGNvb2tpZXMgYW5kIG9iamVjdHMgYXJlIGhpZXJhcmNoaWNhbC4gIFRoZSB0d28gaGllcmFyY2hpZXMKK2NvcnJlc3BvbmQsIGJ1dCB0aGUgY29va2llcyB0cmVlIGlzIGEgc3VwZXJzZXQgb2YgdGhlIHVuaW9uIG9mIHRoZSBvYmplY3QgdHJlZXMKK29mIG11bHRpcGxlIGNhY2hlczoKKworCSAgICBORVRGUyBJTkRFWCBUUkVFICAgICAgICAgICAgICAgOiAgICAgIENBQ0hFIDEgICAgIDogICAgICBDQUNIRSAyCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICAgICAgICAgICAgICAgICAgOgorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgICstLS0tLS0tLS0tLSsgIDoKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLT58ICBJT2JqZWN0ICB8ICA6CisJICAgICAgKy0tLS0tLS0tLS0tKyAgICAgICB8ICAgICAgICA6ICAgKy0tLS0tLS0tLS0tKyAgOgorCSAgICAgIHwgIElDb29raWUgIHwtLS0tLS0tKyAgICAgICAgOiAgICAgICAgIHwgICAgICAgIDoKKwkgICAgICArLS0tLS0tLS0tLS0rICAgICAgIHwgICAgICAgIDogICAgICAgICB8ICAgICAgICA6ICAgKy0tLS0tLS0tLS0tKworCSAgICAgICAgICAgIHwgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT58ICBJT2JqZWN0ICB8CisJICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICA6ICAgICAgICAgfCAgICAgICAgOiAgICstLS0tLS0tLS0tLSsKKwkgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIDogICAgICAgICBWICAgICAgICA6ICAgICAgICAgfAorCSAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgOiAgICstLS0tLS0tLS0tLSsgIDogICAgICAgICB8CisJICAgICAgICAgICAgViAgICAgICAgICAgICArLS0tLS0tLS0tLS0+fCAgSU9iamVjdCAgfCAgOiAgICAgICAgIHwKKwkgICAgICArLS0tLS0tLS0tLS0rICAgICAgIHwgICAgICAgIDogICArLS0tLS0tLS0tLS0rICA6ICAgICAgICAgfAorCSAgICAgIHwgIElDb29raWUgIHwtLS0tLS0tKyAgICAgICAgOiAgICAgICAgIHwgICAgICAgIDogICAgICAgICBWCisJICAgICAgKy0tLS0tLS0tLS0tKyAgICAgICB8ICAgICAgICA6ICAgICAgICAgfCAgICAgICAgOiAgICstLS0tLS0tLS0tLSsKKwkgICAgICAgICAgICB8ICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+fCAgSU9iamVjdCAgfAorCSAgICAgICstLS0tLSstLS0tLSsgICAgICAgICAgICAgICAgOiAgICAgICAgIHwgICAgICAgIDogICArLS0tLS0tLS0tLS0rCisJICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICA6ICAgICAgICAgfCAgICAgICAgOiAgICAgICAgIHwKKwkgICAgICBWICAgICAgICAgICB8ICAgICAgICAgICAgICAgIDogICAgICAgICBWICAgICAgICA6ICAgICAgICAgfAorCSstLS0tLS0tLS0tLSsgICAgIHwgICAgICAgICAgICAgICAgOiAgICstLS0tLS0tLS0tLSsgIDogICAgICAgICB8CisJfCAgSUNvb2tpZSAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+fCAgSU9iamVjdCAgfCAgOiAgICAgICAgIHwKKwkrLS0tLS0tLS0tLS0rICAgICB8ICAgICAgICAgICAgICAgIDogICArLS0tLS0tLS0tLS0rICA6ICAgICAgICAgfAorCSAgICAgIHwgICAgICAgICAgIFYgICAgICAgICAgICAgICAgOiAgICAgICAgIHwgICAgICAgIDogICAgICAgICBWCisJICAgICAgfCAgICAgKy0tLS0tLS0tLS0tKyAgICAgICAgICA6ICAgICAgICAgfCAgICAgICAgOiAgICstLS0tLS0tLS0tLSsKKwkgICAgICB8ICAgICB8ICBJQ29va2llICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+fCAgSU9iamVjdCAgfAorCSAgICAgIHwgICAgICstLS0tLS0tLS0tLSsgICAgICAgICAgOiAgICAgICAgIHwgICAgICAgIDogICArLS0tLS0tLS0tLS0rCisJICAgICAgViAgICAgICAgICAgfCAgICAgICAgICAgICAgICA6ICAgICAgICAgViAgICAgICAgOiAgICAgICAgIHwKKwkrLS0tLS0tLS0tLS0rICAgICB8ICAgICAgICAgICAgICAgIDogICArLS0tLS0tLS0tLS0rICA6ICAgICAgICAgfAorCXwgIERDb29raWUgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPnwgIERPYmplY3QgIHwgIDogICAgICAgICB8CisJKy0tLS0tLS0tLS0tKyAgICAgfCAgICAgICAgICAgICAgICA6ICAgKy0tLS0tLS0tLS0tKyAgOiAgICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIDogICAgICAgICAgICAgICAgICA6ICAgICAgICAgfAorCSAgICAgICAgICArLS0tLS0tLSstLS0tLS0tKyAgICAgICAgOiAgICAgICAgICAgICAgICAgIDogICAgICAgICB8CisJICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICA6ICAgICAgICAgICAgICAgICAgOiAgICAgICAgIHwKKwkgICAgICAgICAgViAgICAgICAgICAgICAgIFYgICAgICAgIDogICAgICAgICAgICAgICAgICA6ICAgICAgICAgVgorCSAgICArLS0tLS0tLS0tLS0rICAgKy0tLS0tLS0tLS0tKyAgOiAgICAgICAgICAgICAgICAgIDogICArLS0tLS0tLS0tLS0rCisJICAgIHwgIERDb29raWUgIHwgICB8ICBEQ29va2llICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPnwgIERPYmplY3QgIHwKKwkgICAgKy0tLS0tLS0tLS0tKyAgICstLS0tLS0tLS0tLSsgIDogICAgICAgICAgICAgICAgICA6ICAgKy0tLS0tLS0tLS0tKworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgICAgICAgICAgICAgICAgIDoKKworSW4gdGhlIGFib3ZlIGlsbHVzdHJhdGlvbiwgSUNvb2tpZSBhbmQgSU9iamVjdCByZXByZXNlbnQgaW5kaWNlcyBhbmQgRENvb2tpZQorYW5kIERPYmplY3QgcmVwcmVzZW50IGRhdGEgc3RvcmFnZSBvYmplY3RzLiAgSW5kaWNlcyBtYXkgaGF2ZSByZXByZXNlbnRhdGlvbiBpbgorbXVsdGlwbGUgY2FjaGVzLCBidXQgY3VycmVudGx5LCBub24taW5kZXggb2JqZWN0cyBtYXkgbm90LiAgT2JqZWN0cyBvZiBhbnkgdHlwZQorbWF5IGFsc28gYmUgZW50aXJlbHkgdW5yZXByZXNlbnRlZC4KKworQXMgZmFyIGFzIHRoZSBuZXRmcyBBUEkgZ29lcywgdGhlIG5ldGZzIGlzIG9ubHkgYWN0dWFsbHkgcGVybWl0dGVkIHRvIHNlZQorcG9pbnRlcnMgdG8gdGhlIGNvb2tpZXMuICBUaGUgY29va2llcyB0aGVtc2VsdmVzIGFuZCBhbnkgb2JqZWN0cyBhdHRhY2hlZCB0bwordGhvc2UgY29va2llcyBhcmUgaGlkZGVuIGZyb20gaXQuCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorT0JKRUNUIE1BTkFHRU1FTlQgU1RBVEUgTUFDSElORQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitXaXRoaW4gRlMtQ2FjaGUsIGVhY2ggYWN0aXZlIG9iamVjdCBpcyBtYW5hZ2VkIGJ5IGl0cyBvd24gaW5kaXZpZHVhbCBzdGF0ZQorbWFjaGluZS4gIFRoZSBzdGF0ZSBmb3IgYW4gb2JqZWN0IGlzIGtlcHQgaW4gdGhlIGZzY2FjaGVfb2JqZWN0IHN0cnVjdCwgaW4KK29iamVjdC0+c3RhdGUuICBBIGNvb2tpZSBtYXkgcG9pbnQgdG8gYSBzZXQgb2Ygb2JqZWN0cyB0aGF0IGFyZSBpbiBkaWZmZXJlbnQKK3N0YXRlcy4KKworRWFjaCBzdGF0ZSBoYXMgYW4gYWN0aW9uIGFzc29jaWF0ZWQgd2l0aCBpdCB0aGF0IGlzIGludm9rZWQgd2hlbiB0aGUgbWFjaGluZQord2FrZXMgdXAgaW4gdGhhdCBzdGF0ZS4gIFRoZXJlIGFyZSBmb3VyIGxvZ2ljYWwgc2V0cyBvZiBzdGF0ZXM6CisKKyAoMSkgUHJlcGFyYXRpb246IHN0YXRlcyB0aGF0IHdhaXQgZm9yIHRoZSBwYXJlbnQgb2JqZWN0cyB0byBiZWNvbWUgcmVhZHkuICBUaGUKKyAgICAgcmVwcmVzZW50YXRpb25zIGFyZSBoaWVyYXJjaGljYWwsIGFuZCBpdCBpcyBleHBlY3RlZCB0aGF0IGFuIG9iamVjdCBtdXN0CisgICAgIGJlIGNyZWF0ZWQgb3IgYWNjZXNzZWQgd2l0aCByZXNwZWN0IHRvIGl0cyBwYXJlbnQgb2JqZWN0LgorCisgKDIpIEluaXRpYWxpc2F0aW9uOiBzdGF0ZXMgdGhhdCBwZXJmb3JtIGxvb2t1cHMgaW4gdGhlIGNhY2hlIGFuZCB2YWxpZGF0ZQorICAgICB3aGF0J3MgZm91bmQgYW5kIHRoYXQgY3JlYXRlIG9uIGRpc2sgYW55IG1pc3NpbmcgbWV0YWRhdGEuCisKKyAoMykgTm9ybWFsIHJ1bm5pbmc6IHN0YXRlcyB0aGF0IGFsbG93IG5ldGZzIG9wZXJhdGlvbnMgb24gb2JqZWN0cyB0byBwcm9jZWVkCisgICAgIGFuZCB0aGF0IHVwZGF0ZSB0aGUgc3RhdGUgb2Ygb2JqZWN0cy4KKworICg0KSBUZXJtaW5hdGlvbjogc3RhdGVzIHRoYXQgZGV0YWNoIG9iamVjdHMgZnJvbSB0aGVpciBuZXRmcyBjb29raWVzLCB0aGF0CisgICAgIGRlbGV0ZSBvYmplY3RzIGZyb20gZGlzaywgdGhhdCBoYW5kbGUgZGlzayBhbmQgc3lzdGVtIGVycm9ycyBhbmQgdGhhdCBmcmVlCisgICAgIHVwIGluLW1lbW9yeSByZXNvdXJjZXMuCisKKworSW4gbW9zdCBjYXNlcywgdHJhbnNpdGlvbmluZyBiZXR3ZWVuIHN0YXRlcyBpcyBpbiByZXNwb25zZSB0byBzaWduYWxsZWQgZXZlbnRzLgorV2hlbiBhIHN0YXRlIGhhcyBmaW5pc2hlZCBwcm9jZXNzaW5nLCBpdCB3aWxsIHVzdWFsbHkgc2V0IHRoZSBtYXNrIG9mIGV2ZW50cyBpbgord2hpY2ggaXQgaXMgaW50ZXJlc3RlZCAob2JqZWN0LT5ldmVudF9tYXNrKSBhbmQgcmVsaW5xdWlzaCB0aGUgd29ya2VyIHRocmVhZC4KK1RoZW4gd2hlbiBhbiBldmVudCBpcyByYWlzZWQgKGJ5IGNhbGxpbmcgZnNjYWNoZV9yYWlzZV9ldmVudCgpKSwgaWYgdGhlIGV2ZW50CitpcyBub3QgbWFza2VkLCB0aGUgb2JqZWN0IHdpbGwgYmUgcXVldWVkIGZvciBwcm9jZXNzaW5nIChieSBjYWxsaW5nCitmc2NhY2hlX2VucXVldWVfb2JqZWN0KCkpLgorCisKK1BST1ZJU0lPTiBPRiBDUFUgVElNRQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSB3b3JrIHRvIGJlIGRvbmUgYnkgdGhlIHZhcmlvdXMgc3RhdGVzIHdhcyBnaXZlbiBDUFUgdGltZSBieSB0aGUgdGhyZWFkcyBvZgordGhlIHNsb3cgd29yayBmYWNpbGl0eS4gIFRoaXMgd2FzIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aGUgd29ya3F1ZXVlIGZhY2lsaXR5CitiZWNhdXNlOgorCisgKDEpIFRocmVhZHMgbWF5IGJlIGNvbXBsZXRlbHkgb2NjdXBpZWQgZm9yIHZlcnkgbG9uZyBwZXJpb2RzIG9mIHRpbWUgYnkgYQorICAgICBwYXJ0aWN1bGFyIHdvcmsgaXRlbS4gIFRoZXNlIHN0YXRlIGFjdGlvbnMgbWF5IGJlIGRvaW5nIHNlcXVlbmNlcyBvZgorICAgICBzeW5jaHJvbm91cywgam91cm5hbGxlZCBkaXNrIGFjY2Vzc2VzIChsb29rdXAsIG1rZGlyLCBjcmVhdGUsIHNldHhhdHRyLAorICAgICBnZXR4YXR0ciwgdHJ1bmNhdGUsIHVubGluaywgcm1kaXIsIHJlbmFtZSkuCisKKyAoMikgVGhyZWFkcyBtYXkgZG8gbGl0dGxlIGFjdHVhbCB3b3JrLCBidXQgbWF5IHJhdGhlciBzcGVuZCBhIGxvdCBvZiB0aW1lCisgICAgIHNsZWVwaW5nIG9uIEkvTy4gIFRoaXMgbWVhbnMgdGhhdCBzaW5nbGUtdGhyZWFkZWQgYW5kIDEtcGVyLUNQVS10aHJlYWRlZAorICAgICB3b3JrcXVldWVzIGRvbid0IG5lY2Vzc2FyaWx5IGhhdmUgdGhlIHJpZ2h0IG51bWJlcnMgb2YgdGhyZWFkcy4KKworCitMT0NLSU5HIFNJTVBMSUZJQ0FUSU9OCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JlY2F1c2Ugb25seSBvbmUgd29ya2VyIHRocmVhZCBtYXkgYmUgb3BlcmF0aW5nIG9uIGFueSBwYXJ0aWN1bGFyIG9iamVjdCdzCitzdGF0ZSBtYWNoaW5lIGF0IG9uY2UsIHRoaXMgc2ltcGxpZmllcyB0aGUgbG9ja2luZywgcGFydGljdWxhcmx5IHdpdGggcmVzcGVjdAordG8gZGlzY29ubmVjdGluZyB0aGUgbmV0ZnMncyByZXByZXNlbnRhdGlvbiBvZiBhIGNhY2hlIG9iamVjdCAoZnNjYWNoZV9jb29raWUpCitmcm9tIHRoZSBjYWNoZSBiYWNrZW5kJ3MgcmVwcmVzZW50YXRpb24gKGZzY2FjaGVfb2JqZWN0KSAtIHdoaWNoIG1heSBiZQorcmVxdWVzdGVkIGZyb20gZWl0aGVyIGVuZC4KKworCis9PT09PT09PT09PT09PT09PQorVEhFIFNFVCBPRiBTVEFURVMKKz09PT09PT09PT09PT09PT09CisKK1RoZSBvYmplY3Qgc3RhdGUgbWFjaGluZSBoYXMgYSBzZXQgb2Ygc3RhdGVzIHRoYXQgaXQgY2FuIGJlIGluLiAgVGhlcmUgYXJlCitwcmVwYXJhdGlvbiBzdGF0ZXMgaW4gd2hpY2ggdGhlIG9iamVjdCBzZXRzIGl0c2VsZiB1cCBhbmQgd2FpdHMgZm9yIGl0cyBwYXJlbnQKK29iamVjdCB0byB0cmFuc2l0IHRvIGEgc3RhdGUgdGhhdCBhbGxvd3MgYWNjZXNzIHRvIGl0cyBjaGlsZHJlbjoKKworICgxKSBTdGF0ZSBGU0NBQ0hFX09CSkVDVF9JTklULgorCisgICAgIEluaXRpYWxpc2UgdGhlIG9iamVjdCBhbmQgd2FpdCBmb3IgdGhlIHBhcmVudCBvYmplY3QgdG8gYmVjb21lIGFjdGl2ZS4gIEluCisgICAgIHRoZSBjYWNoZSwgaXQgaXMgZXhwZWN0ZWQgdGhhdCBpdCB3aWxsIG5vdCBiZSBwb3NzaWJsZSB0byBsb29rIGFuIG9iamVjdAorICAgICB1cCBmcm9tIHRoZSBwYXJlbnQgb2JqZWN0LCB1bnRpbCB0aGF0IHBhcmVudCBvYmplY3QgaXRzZWxmIGhhcyBiZWVuIGxvb2tlZAorICAgICB1cC4KKworVGhlcmUgYXJlIGluaXRpYWxpc2F0aW9uIHN0YXRlcyBpbiB3aGljaCB0aGUgb2JqZWN0IHNldHMgaXRzZWxmIHVwIGFuZCBhY2Nlc3NlcworZGlzayBmb3IgdGhlIG9iamVjdCBtZXRhZGF0YToKKworICgyKSBTdGF0ZSBGU0NBQ0hFX09CSkVDVF9MT09LSU5HX1VQLgorCisgICAgIExvb2sgdXAgdGhlIG9iamVjdCBvbiBkaXNrLCB1c2luZyB0aGUgcGFyZW50IGFzIGEgc3RhcnRpbmcgcG9pbnQuCisgICAgIEZTLUNhY2hlIGV4cGVjdHMgdGhlIGNhY2hlIGJhY2tlbmQgdG8gcHJvYmUgdGhlIGNhY2hlIHRvIHNlZSB3aGV0aGVyIHRoaXMKKyAgICAgb2JqZWN0IGlzIHJlcHJlc2VudGVkIHRoZXJlLCBhbmQgaWYgaXQgaXMsIHRvIHNlZSBpZiBpdCdzIHZhbGlkIChjb2hlcmVuY3kKKyAgICAgbWFuYWdlbWVudCkuCisKKyAgICAgVGhlIGNhY2hlIHNob3VsZCBjYWxsIGZzY2FjaGVfb2JqZWN0X2xvb2t1cF9uZWdhdGl2ZSgpIHRvIGluZGljYXRlIGxvb2t1cAorICAgICBmYWlsdXJlIGZvciB3aGF0ZXZlciByZWFzb24sIGFuZCBzaG91bGQgY2FsbCBmc2NhY2hlX29idGFpbmVkX29iamVjdCgpIHRvCisgICAgIGluZGljYXRlIHN1Y2Nlc3MuCisKKyAgICAgQXQgdGhlIGNvbXBsZXRpb24gb2YgbG9va3VwLCBGUy1DYWNoZSB3aWxsIGxldCB0aGUgbmV0ZnMgZ28gYWhlYWQgd2l0aAorICAgICByZWFkIG9wZXJhdGlvbnMsIG5vIG1hdHRlciB3aGV0aGVyIHRoZSBmaWxlIGlzIHlldCBjYWNoZWQuICBJZiBub3QgeWV0CisgICAgIGNhY2hlZCwgcmVhZCBvcGVyYXRpb25zIHdpbGwgYmUgaW1tZWRpYXRlbHkgcmVqZWN0ZWQgd2l0aCBFTk9EQVRBIHVudGlsCisgICAgIHRoZSBmaXJzdCBrbm93biBwYWdlIGlzIHVuY2FjaGVkIC0gYXMgdG8gdGhhdCBwb2ludCB0aGVyZSBjYW4gYmUgbm8gZGF0YQorICAgICB0byBiZSByZWFkIG91dCBvZiB0aGUgY2FjaGUgZm9yIHRoYXQgZmlsZSB0aGF0IGlzbid0IGN1cnJlbnRseSBhbHNvIGhlbGQKKyAgICAgaW4gdGhlIHBhZ2VjYWNoZS4KKworICgzKSBTdGF0ZSBGU0NBQ0hFX09CSkVDVF9DUkVBVElORy4KKworICAgICBDcmVhdGUgYW4gb2JqZWN0IG9uIGRpc2ssIHVzaW5nIHRoZSBwYXJlbnQgYXMgYSBzdGFydGluZyBwb2ludC4gIFRoaXMKKyAgICAgaGFwcGVucyBpZiB0aGUgbG9va3VwIGZhaWxlZCB0byBmaW5kIHRoZSBvYmplY3QsIG9yIGlmIHRoZSBvYmplY3QncworICAgICBjb2hlcmVuY3kgZGF0YSBpbmRpY2F0ZWQgd2hhdCdzIG9uIGRpc2sgaXMgb3V0IG9mIGRhdGUuICBJbiB0aGlzIHN0YXRlLAorICAgICBGUy1DYWNoZSBleHBlY3RzIHRoZSBjYWNoZSB0byBjcmVhdGUKKworICAgICBUaGUgY2FjaGUgc2hvdWxkIGNhbGwgZnNjYWNoZV9vYnRhaW5lZF9vYmplY3QoKSBpZiBjcmVhdGlvbiBjb21wbGV0ZXMKKyAgICAgc3VjY2Vzc2Z1bGx5LCBmc2NhY2hlX29iamVjdF9sb29rdXBfbmVnYXRpdmUoKSBvdGhlcndpc2UuCisKKyAgICAgQXQgdGhlIGNvbXBsZXRpb24gb2YgY3JlYXRpb24sIEZTLUNhY2hlIHdpbGwgc3RhcnQgcHJvY2Vzc2luZyB3cml0ZQorICAgICBvcGVyYXRpb25zIHRoZSBuZXRmcyBoYXMgcXVldWVkIGZvciBhbiBvYmplY3QuICBJZiBjcmVhdGlvbiBmYWlsZWQsIHRoZQorICAgICB3cml0ZSBvcHMgd2lsbCBiZSB0cmFuc3BhcmVudGx5IGRpc2NhcmRlZCwgYW5kIG5vdGhpbmcgcmVjb3JkZWQgaW4gdGhlCisgICAgIGNhY2hlLgorCitUaGVyZSBhcmUgc29tZSBub3JtYWwgcnVubmluZyBzdGF0ZXMgaW4gd2hpY2ggdGhlIG9iamVjdCBzcGVuZHMgaXRzIHRpbWUKK3NlcnZpY2luZyBuZXRmcyByZXF1ZXN0czoKKworICg0KSBTdGF0ZSBGU0NBQ0hFX09CSkVDVF9BVkFJTEFCTEUuCisKKyAgICAgQSB0cmFuc2llbnQgc3RhdGUgaW4gd2hpY2ggcGVuZGluZyBvcGVyYXRpb25zIGFyZSBzdGFydGVkLCBjaGlsZCBvYmplY3RzCisgICAgIGFyZSBwZXJtaXR0ZWQgdG8gYWR2YW5jZSBmcm9tIEZTQ0FDSEVfT0JKRUNUX0lOSVQgc3RhdGUsIGFuZCB0ZW1wb3JhcnkKKyAgICAgbG9va3VwIGRhdGEgaXMgZnJlZWQuCisKKyAoNSkgU3RhdGUgRlNDQUNIRV9PQkpFQ1RfQUNUSVZFLgorCisgICAgIFRoZSBub3JtYWwgcnVubmluZyBzdGF0ZS4gIEluIHRoaXMgc3RhdGUsIHJlcXVlc3RzIHRoZSBuZXRmcyBtYWtlcyB3aWxsIGJlCisgICAgIHBhc3NlZCBvbiB0byB0aGUgY2FjaGUuCisKKyAoNikgU3RhdGUgRlNDQUNIRV9PQkpFQ1RfSU5WQUxJREFUSU5HLgorCisgICAgIFRoZSBvYmplY3QgaXMgdW5kZXJnb2luZyBpbnZhbGlkYXRpb24uICBXaGVuIHRoZSBzdGF0ZSBjb21lcyBoZXJlLCBpdAorICAgICBkaXNjYXJkcyBhbGwgcGVuZGluZyByZWFkLCB3cml0ZSBhbmQgYXR0cmlidXRlIGNoYW5nZSBvcGVyYXRpb25zIGFzIGl0IGlzCisgICAgIGdvaW5nIHRvIGNsZWFyIG91dCB0aGUgY2FjaGUgZW50aXJlbHkgYW5kIHJlaW5pdGlhbGlzZSBpdC4gIEl0IHdpbGwgdGhlbgorICAgICBjb250aW51ZSB0byB0aGUgRlNDQUNIRV9PQkpFQ1RfVVBEQVRJTkcgc3RhdGUuCisKKyAoNykgU3RhdGUgRlNDQUNIRV9PQkpFQ1RfVVBEQVRJTkcuCisKKyAgICAgVGhlIHN0YXRlIG1hY2hpbmUgY29tZXMgaGVyZSB0byB1cGRhdGUgdGhlIG9iamVjdCBpbiB0aGUgY2FjaGUgZnJvbSB0aGUKKyAgICAgbmV0ZnMncyByZWNvcmRzLiAgVGhpcyBpbnZvbHZlcyB1cGRhdGluZyB0aGUgYXV4aWxpYXJ5IGRhdGEgdGhhdCBpcyB1c2VkCisgICAgIHRvIG1haW50YWluIGNvaGVyZW5jeS4KKworQW5kIHRoZXJlIGFyZSB0ZXJtaW5hbCBzdGF0ZXMgaW4gd2hpY2ggYW4gb2JqZWN0IGNsZWFucyBpdHNlbGYgdXAsIGRlYWxsb2NhdGVzCittZW1vcnkgYW5kIHBvdGVudGlhbGx5IGRlbGV0ZXMgc3R1ZmYgZnJvbSBkaXNrOgorCisgKDgpIFN0YXRlIEZTQ0FDSEVfT0JKRUNUX0xDX0RZSU5HLgorCisgICAgIFRoZSBvYmplY3QgY29tZXMgaGVyZSBpZiBpdCBpcyBkeWluZyBiZWNhdXNlIG9mIGEgbG9va3VwIG9yIGNyZWF0aW9uCisgICAgIGVycm9yLiAgVGhpcyB3b3VsZCBiZSBkdWUgdG8gYSBkaXNrIGVycm9yIG9yIHN5c3RlbSBlcnJvciBvZiBzb21lIHNvcnQuCisgICAgIFRlbXBvcmFyeSBkYXRhIGlzIGNsZWFuZWQgdXAsIGFuZCB0aGUgcGFyZW50IGlzIHJlbGVhc2VkLgorCisgKDkpIFN0YXRlIEZTQ0FDSEVfT0JKRUNUX0RZSU5HLgorCisgICAgIFRoZSBvYmplY3QgY29tZXMgaGVyZSBpZiBpdCBpcyBkeWluZyBkdWUgdG8gYW4gZXJyb3IsIGJlY2F1c2UgaXRzIHBhcmVudAorICAgICBjb29raWUgaGFzIGJlZW4gcmVsaW5xdWlzaGVkIGJ5IHRoZSBuZXRmcyBvciBiZWNhdXNlIHRoZSBjYWNoZSBpcyBiZWluZworICAgICB3aXRoZHJhd24uCisKKyAgICAgQW55IGNoaWxkIG9iamVjdHMgd2FpdGluZyBvbiB0aGlzIG9uZSBhcmUgZ2l2ZW4gQ1BVIHRpbWUgc28gdGhhdCB0aGV5IHRvbworICAgICBjYW4gZGVzdHJveSB0aGVtc2VsdmVzLiAgVGhpcyBvYmplY3Qgd2FpdHMgZm9yIGFsbCBpdHMgY2hpbGRyZW4gdG8gZ28gYXdheQorICAgICBiZWZvcmUgYWR2YW5jaW5nIHRvIHRoZSBuZXh0IHN0YXRlLgorCisoMTApIFN0YXRlIEZTQ0FDSEVfT0JKRUNUX0FCT1JUX0lOSVQuCisKKyAgICAgVGhlIG9iamVjdCBjb21lcyB0byB0aGlzIHN0YXRlIGlmIGl0IHdhcyB3YWl0aW5nIG9uIGl0cyBwYXJlbnQgaW4KKyAgICAgRlNDQUNIRV9PQkpFQ1RfSU5JVCwgYnV0IGl0cyBwYXJlbnQgZGllZC4gIFRoZSBvYmplY3Qgd2lsbCBkZXN0cm95IGl0c2VsZgorICAgICBzbyB0aGF0IHRoZSBwYXJlbnQgbWF5IHByb2NlZWQgZnJvbSB0aGUgRlNDQUNIRV9PQkpFQ1RfRFlJTkcgc3RhdGUuCisKKygxMSkgU3RhdGUgRlNDQUNIRV9PQkpFQ1RfUkVMRUFTSU5HLgorKDEyKSBTdGF0ZSBGU0NBQ0hFX09CSkVDVF9SRUNZQ0xJTkcuCisKKyAgICAgVGhlIG9iamVjdCBjb21lcyB0byBvbmUgb2YgdGhlc2UgdHdvIHN0YXRlcyB3aGVuIGR5aW5nIG9uY2UgaXQgaXMgcmlkIG9mCisgICAgIGFsbCBpdHMgY2hpbGRyZW4sIGlmIGl0IGlzIGR5aW5nIGJlY2F1c2UgdGhlIG5ldGZzIHJlbGlucXVpc2hlZCBpdHMKKyAgICAgY29va2llLiAgSW4gdGhlIGZpcnN0IHN0YXRlLCB0aGUgY2FjaGVkIGRhdGEgaXMgZXhwZWN0ZWQgdG8gcGVyc2lzdCwgYW5kCisgICAgIGluIHRoZSBzZWNvbmQgaXQgd2lsbCBiZSBkZWxldGVkLgorCisoMTMpIFN0YXRlIEZTQ0FDSEVfT0JKRUNUX1dJVEhEUkFXSU5HLgorCisgICAgIFRoZSBvYmplY3QgdHJhbnNpdHMgdG8gdGhpcyBzdGF0ZSBpZiB0aGUgY2FjaGUgZGVjaWRlcyBpdCB3YW50cyB0bworICAgICB3aXRoZHJhdyB0aGUgb2JqZWN0IGZyb20gc2VydmljZSwgcGVyaGFwcyB0byBtYWtlIHNwYWNlLCBidXQgYWxzbyBkdWUgdG8KKyAgICAgZXJyb3Igb3IganVzdCBiZWNhdXNlIHRoZSB3aG9sZSBjYWNoZSBpcyBiZWluZyB3aXRoZHJhd24uCisKKygxNCkgU3RhdGUgRlNDQUNIRV9PQkpFQ1RfREVBRC4KKworICAgICBUaGUgb2JqZWN0IHRyYW5zaXRzIHRvIHRoaXMgc3RhdGUgd2hlbiB0aGUgaW4tbWVtb3J5IG9iamVjdCByZWNvcmQgaXMKKyAgICAgcmVhZHkgdG8gYmUgZGVsZXRlZC4gIFRoZSBvYmplY3QgcHJvY2Vzc29yIHNob3VsZG4ndCBldmVyIHNlZSBhbiBvYmplY3QgaW4KKyAgICAgdGhpcyBzdGF0ZS4KKworCitUSEUgU0VUIE9GIEVWRU5UUworLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGV2ZW50cyB0aGF0IGNhbiBiZSByYWlzZWQgdG8gYW4gb2JqZWN0IHN0YXRlIG1hY2hpbmU6CisKKyAoKikgRlNDQUNIRV9PQkpFQ1RfRVZfVVBEQVRFCisKKyAgICAgVGhlIG5ldGZzIHJlcXVlc3RlZCB0aGF0IGFuIG9iamVjdCBiZSB1cGRhdGVkLiAgVGhlIHN0YXRlIG1hY2hpbmUgd2lsbCBhc2sKKyAgICAgdGhlIGNhY2hlIGJhY2tlbmQgdG8gdXBkYXRlIHRoZSBvYmplY3QsIGFuZCB0aGUgY2FjaGUgYmFja2VuZCB3aWxsIGFzayB0aGUKKyAgICAgbmV0ZnMgZm9yIGRldGFpbHMgb2YgdGhlIGNoYW5nZSB0aHJvdWdoIGl0cyBjb29raWUgZGVmaW5pdGlvbiBvcHMuCisKKyAoKikgRlNDQUNIRV9PQkpFQ1RfRVZfQ0xFQVJFRAorCisgICAgIFRoaXMgaXMgc2lnbmFsbGVkIGluIHR3byBjaXJjdW1zdGFuY2VzOgorCisgICAgIChhKSB3aGVuIGFuIG9iamVjdCdzIGxhc3QgY2hpbGQgb2JqZWN0IGlzIGRyb3BwZWQgYW5kCisKKyAgICAgKGIpIHdoZW4gdGhlIGxhc3Qgb3BlcmF0aW9uIG91dHN0YW5kaW5nIG9uIGFuIG9iamVjdCBpcyBjb21wbGV0ZWQuCisKKyAgICAgVGhpcyBpcyB1c2VkIHRvIHByb2NlZWQgZnJvbSB0aGUgZHlpbmcgc3RhdGUuCisKKyAoKikgRlNDQUNIRV9PQkpFQ1RfRVZfRVJST1IKKworICAgICBUaGlzIGlzIHNpZ25hbGxlZCB3aGVuIGFuIEkvTyBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBwcm9jZXNzaW5nIG9mIHNvbWUKKyAgICAgb2JqZWN0LgorCisgKCopIEZTQ0FDSEVfT0JKRUNUX0VWX1JFTEVBU0UKKyAoKikgRlNDQUNIRV9PQkpFQ1RfRVZfUkVUSVJFCisKKyAgICAgVGhlc2UgYXJlIHNpZ25hbGxlZCB3aGVuIHRoZSBuZXRmcyByZWxpbnF1aXNoZXMgYSBjb29raWUgaXQgd2FzIHVzaW5nLgorICAgICBUaGUgZXZlbnQgc2VsZWN0ZWQgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBuZXRmcyBhc2tzIGZvciB0aGUgYmFja2luZworICAgICBvYmplY3QgdG8gYmUgcmV0aXJlZCAoZGVsZXRlZCkgb3IgcmV0YWluZWQuCisKKyAoKikgRlNDQUNIRV9PQkpFQ1RfRVZfV0lUSERSQVcKKworICAgICBUaGlzIGlzIHNpZ25hbGxlZCB3aGVuIHRoZSBjYWNoZSBiYWNrZW5kIHdhbnRzIHRvIHdpdGhkcmF3IGFuIG9iamVjdC4KKyAgICAgVGhpcyBtZWFucyB0aGF0IHRoZSBvYmplY3Qgd2lsbCBoYXZlIHRvIGJlIGRldGFjaGVkIGZyb20gdGhlIG5ldGZzJ3MKKyAgICAgY29va2llLgorCitCZWNhdXNlIHRoZSB3aXRoZHJhd2luZyByZWxlYXNpbmcvcmV0aXJpbmcgZXZlbnRzIGFyZSBhbGwgaGFuZGxlZCBieSB0aGUgb2JqZWN0CitzdGF0ZSBtYWNoaW5lLCBpdCBkb2Vzbid0IG1hdHRlciBpZiB0aGVyZSdzIGEgY29sbGlzaW9uIHdpdGggYm90aCBlbmRzIHRyeWluZwordG8gc2V2ZXIgdGhlIGNvbm5lY3Rpb24gYXQgdGhlIHNhbWUgdGltZS4gIFRoZSBzdGF0ZSBtYWNoaW5lIGNhbiBqdXN0IHBpY2sKK3doaWNoIG9uZSBpdCB3YW50cyB0byBob25vdXIsIGFuZCB0aGF0IGVmZmVjdHMgdGhlIG90aGVyLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9jYWNoaW5nL29wZXJhdGlvbnMudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9jYWNoaW5nL29wZXJhdGlvbnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExYzA1MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NhY2hpbmcvb3BlcmF0aW9ucy50eHQKQEAgLTAsMCArMSwyMTMgQEAKKwkJICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJCSAgICAgICBBU1lOQ0hST05PVVMgT1BFUkFUSU9OUyBIQU5ETElORworCQkgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnk6IERhdmlkIEhvd2VsbHMgPGRob3dlbGxzQHJlZGhhdC5jb20+CisKK0NvbnRlbnRzOgorCisgKCopIE92ZXJ2aWV3LgorCisgKCopIE9wZXJhdGlvbiByZWNvcmQgaW5pdGlhbGlzYXRpb24uCisKKyAoKikgUGFyYW1ldGVycy4KKworICgqKSBQcm9jZWR1cmUuCisKKyAoKikgQXN5bmNocm9ub3VzIGNhbGxiYWNrLgorCisKKz09PT09PT09CitPVkVSVklFVworPT09PT09PT0KKworRlMtQ2FjaGUgaGFzIGFuIGFzeW5jaHJvbm91cyBvcGVyYXRpb25zIGhhbmRsaW5nIGZhY2lsaXR5IHRoYXQgaXQgdXNlcyBmb3IgaXRzCitkYXRhIHN0b3JhZ2UgYW5kIHJldHJpZXZhbCByb3V0aW5lcy4gIEl0cyBvcGVyYXRpb25zIGFyZSByZXByZXNlbnRlZCBieQorZnNjYWNoZV9vcGVyYXRpb24gc3RydWN0cywgdGhvdWdoIHRoZXNlIGFyZSB1c3VhbGx5IGVtYmVkZGVkIGludG8gc29tZSBvdGhlcgorc3RydWN0dXJlLgorCitUaGlzIGZhY2lsaXR5IGlzIGF2YWlsYWJsZSB0byBhbmQgZXhwZWN0ZWQgdG8gYmUgYmUgdXNlZCBieSB0aGUgY2FjaGUgYmFja2VuZHMsCithbmQgRlMtQ2FjaGUgd2lsbCBjcmVhdGUgb3BlcmF0aW9ucyBhbmQgcGFzcyB0aGVtIG9mZiB0byB0aGUgYXBwcm9wcmlhdGUgY2FjaGUKK2JhY2tlbmQgZm9yIGNvbXBsZXRpb24uCisKK1RvIG1ha2UgdXNlIG9mIHRoaXMgZmFjaWxpdHksIDxsaW51eC9mc2NhY2hlLWNhY2hlLmg+IHNob3VsZCBiZSAjaW5jbHVkZWQuCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorT1BFUkFUSU9OIFJFQ09SRCBJTklUSUFMSVNBVElPTgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBbiBvcGVyYXRpb24gaXMgcmVjb3JkZWQgaW4gYW4gZnNjYWNoZV9vcGVyYXRpb24gc3RydWN0OgorCisJc3RydWN0IGZzY2FjaGVfb3BlcmF0aW9uIHsKKwkJdW5pb24geworCQkJc3RydWN0IHdvcmtfc3RydWN0IGZhc3Rfd29yazsKKwkJCXN0cnVjdCBzbG93X3dvcmsgc2xvd193b3JrOworCQl9OworCQl1bnNpZ25lZCBsb25nCQlmbGFnczsKKwkJZnNjYWNoZV9vcGVyYXRpb25fcHJvY2Vzc29yX3QgcHJvY2Vzc29yOworCQkuLi4KKwl9OworCitTb21lb25lIHdhbnRpbmcgdG8gaXNzdWUgYW4gb3BlcmF0aW9uIHNob3VsZCBhbGxvY2F0ZSBzb21ldGhpbmcgd2l0aCB0aGlzCitzdHJ1Y3QgZW1iZWRkZWQgaW4gaXQuICBUaGV5IHNob3VsZCBpbml0aWFsaXNlIGl0IGJ5IGNhbGxpbmc6CisKKwl2b2lkIGZzY2FjaGVfb3BlcmF0aW9uX2luaXQoc3RydWN0IGZzY2FjaGVfb3BlcmF0aW9uICpvcCwKKwkJCQkgICAgZnNjYWNoZV9vcGVyYXRpb25fcmVsZWFzZV90IHJlbGVhc2UpOworCit3aXRoIHRoZSBvcGVyYXRpb24gdG8gYmUgaW5pdGlhbGlzZWQgYW5kIHRoZSByZWxlYXNlIGZ1bmN0aW9uIHRvIHVzZS4KKworVGhlIG9wLT5mbGFncyBwYXJhbWV0ZXIgc2hvdWxkIGJlIHNldCB0byBpbmRpY2F0ZSB0aGUgQ1BVIHRpbWUgcHJvdmlzaW9uIGFuZAordGhlIGV4Y2x1c2l2aXR5IChzZWUgdGhlIFBhcmFtZXRlcnMgc2VjdGlvbikuCisKK1RoZSBvcC0+ZmFzdF93b3JrLCBvcC0+c2xvd193b3JrIGFuZCBvcC0+cHJvY2Vzc29yIGZsYWdzIHNob3VsZCBiZSBzZXQgYXMKK2FwcHJvcHJpYXRlIGZvciB0aGUgQ1BVIHRpbWUgcHJvdmlzaW9uIChzZWUgdGhlIFBhcmFtZXRlcnMgc2VjdGlvbikuCisKK0ZTQ0FDSEVfT1BfV0FJVElORyBtYXkgYmUgc2V0IGluIG9wLT5mbGFncyBwcmlvciB0byBlYWNoIHN1Ym1pc3Npb24gb2YgdGhlCitvcGVyYXRpb24gYW5kIHdhaXRlZCBmb3IgYWZ0ZXJ3YXJkcy4KKworCis9PT09PT09PT09CitQQVJBTUVURVJTCis9PT09PT09PT09CisKK1RoZXJlIGFyZSBhIG51bWJlciBvZiBwYXJhbWV0ZXJzIHRoYXQgY2FuIGJlIHNldCBpbiB0aGUgb3BlcmF0aW9uIHJlY29yZCdzIGZsYWcKK3BhcmFtZXRlci4gIFRoZXJlIGFyZSB0aHJlZSBvcHRpb25zIGZvciB0aGUgcHJvdmlzaW9uIG9mIENQVSB0aW1lIGluIHRoZXNlCitvcGVyYXRpb25zOgorCisgKDEpIFRoZSBvcGVyYXRpb24gbWF5IGJlIGRvbmUgc3luY2hyb25vdXNseSAoRlNDQUNIRV9PUF9NWVRIUkVBRCkuICBBIHRocmVhZAorICAgICBtYXkgZGVjaWRlIGl0IHdhbnRzIHRvIGhhbmRsZSBhbiBvcGVyYXRpb24gaXRzZWxmIHdpdGhvdXQgZGVmZXJyaW5nIGl0IHRvCisgICAgIGFub3RoZXIgdGhyZWFkLgorCisgICAgIFRoaXMgaXMsIGZvciBleGFtcGxlLCB1c2VkIGluIHJlYWQgb3BlcmF0aW9ucyBmb3IgY2FsbGluZyByZWFkcGFnZXMoKSBvbgorICAgICB0aGUgYmFja2luZyBmaWxlc3lzdGVtIGluIENhY2hlRmlsZXMuICBBbHRob3VnaCByZWFkcGFnZXMoKSBkb2VzIGFuCisgICAgIGFzeW5jaHJvbm91cyBkYXRhIGZldGNoLCB0aGUgZGV0ZXJtaW5hdGlvbiBvZiB3aGV0aGVyIHBhZ2VzIGV4aXN0IGlzIGRvbmUKKyAgICAgc3luY2hyb25vdXNseSAtIGFuZCB0aGUgbmV0ZnMgZG9lcyBub3QgcHJvY2VlZCB1bnRpbCB0aGlzIGhhcyBiZWVuCisgICAgIGRldGVybWluZWQuCisKKyAgICAgSWYgdGhpcyBvcHRpb24gaXMgdG8gYmUgdXNlZCwgRlNDQUNIRV9PUF9XQUlUSU5HIG11c3QgYmUgc2V0IGluIG9wLT5mbGFncworICAgICBiZWZvcmUgc3VibWl0dGluZyB0aGUgb3BlcmF0aW9uLCBhbmQgdGhlIG9wZXJhdGluZyB0aHJlYWQgbXVzdCB3YWl0IGZvciBpdAorICAgICB0byBiZSBjbGVhcmVkIGJlZm9yZSBwcm9jZWVkaW5nOgorCisJCXdhaXRfb25fYml0KCZvcC0+ZmxhZ3MsIEZTQ0FDSEVfT1BfV0FJVElORywKKwkJCSAgICBUQVNLX1VOSU5URVJSVVBUSUJMRSk7CisKKworICgyKSBUaGUgb3BlcmF0aW9uIG1heSBiZSBmYXN0IGFzeW5jaHJvbm91cyAoRlNDQUNIRV9PUF9GQVNUKSwgaW4gd2hpY2ggY2FzZSBpdAorICAgICB3aWxsIGJlIGdpdmVuIHRvIGtldmVudGQgdG8gcHJvY2Vzcy4gIFN1Y2ggYW4gb3BlcmF0aW9uIGlzIG5vdCBwZXJtaXR0ZWQKKyAgICAgdG8gc2xlZXAgb24gSS9PLgorCisgICAgIFRoaXMgaXMsIGZvciBleGFtcGxlLCB1c2VkIGJ5IENhY2hlRmlsZXMgdG8gY29weSBkYXRhIGZyb20gYSBiYWNraW5nIGZzCisgICAgIHBhZ2UgdG8gYSBuZXRmcyBwYWdlIGFmdGVyIHRoZSBiYWNraW5nIGZzIGhhcyByZWFkIHRoZSBwYWdlIGluLgorCisgICAgIElmIHRoaXMgb3B0aW9uIGlzIHVzZWQsIG9wLT5mYXN0X3dvcmsgYW5kIG9wLT5wcm9jZXNzb3IgbXVzdCBiZQorICAgICBpbml0aWFsaXNlZCBiZWZvcmUgc3VibWl0dGluZyB0aGUgb3BlcmF0aW9uOgorCisJCUlOSVRfV09SSygmb3AtPmZhc3Rfd29yaywgZG9fc29tZV93b3JrKTsKKworCisgKDMpIFRoZSBvcGVyYXRpb24gbWF5IGJlIHNsb3cgYXN5bmNocm9ub3VzIChGU0NBQ0hFX09QX1NMT1cpLCBpbiB3aGljaCBjYXNlIGl0CisgICAgIHdpbGwgYmUgZ2l2ZW4gdG8gdGhlIHNsb3cgd29yayBmYWNpbGl0eSB0byBwcm9jZXNzLiAgU3VjaCBhbiBvcGVyYXRpb24gaXMKKyAgICAgcGVybWl0dGVkIHRvIHNsZWVwIG9uIEkvTy4KKworICAgICBUaGlzIGlzLCBmb3IgZXhhbXBsZSwgdXNlZCBieSBGUy1DYWNoZSB0byBoYW5kbGUgYmFja2dyb3VuZCB3cml0ZXMgb2YKKyAgICAgcGFnZXMgdGhhdCBoYXZlIGp1c3QgYmVlbiBmZXRjaGVkIGZyb20gYSByZW1vdGUgc2VydmVyLgorCisgICAgIElmIHRoaXMgb3B0aW9uIGlzIHVzZWQsIG9wLT5zbG93X3dvcmsgYW5kIG9wLT5wcm9jZXNzb3IgbXVzdCBiZQorICAgICBpbml0aWFsaXNlZCBiZWZvcmUgc3VibWl0dGluZyB0aGUgb3BlcmF0aW9uOgorCisJCWZzY2FjaGVfb3BlcmF0aW9uX2luaXRfc2xvdyhvcCwgcHJvY2Vzc29yKQorCisKK0Z1cnRoZXJtb3JlLCBvcGVyYXRpb25zIG1heSBiZSBvbmUgb2YgdHdvIHR5cGVzOgorCisgKDEpIEV4Y2x1c2l2ZSAoRlNDQUNIRV9PUF9FWENMVVNJVkUpLiAgT3BlcmF0aW9ucyBvZiB0aGlzIHR5cGUgbWF5IG5vdCBydW4gaW4KKyAgICAgY29uanVuY3Rpb24gd2l0aCBhbnkgb3RoZXIgb3BlcmF0aW9uIG9uIHRoZSBvYmplY3QgYmVpbmcgb3BlcmF0ZWQgdXBvbi4KKworICAgICBBbiBleGFtcGxlIG9mIHRoaXMgaXMgdGhlIGF0dHJpYnV0ZSBjaGFuZ2Ugb3BlcmF0aW9uLCBpbiB3aGljaCB0aGUgZmlsZQorICAgICBiZWluZyB3cml0dGVuIHRvIG1heSBuZWVkIHRydW5jYXRpb24uCisKKyAoMikgU2hhcmVhYmxlLiAgT3BlcmF0aW9ucyBvZiB0aGlzIHR5cGUgbWF5IGJlIHJ1bm5pbmcgc2ltdWx0YW5lb3VzbHkuICBJdCdzCisgICAgIHVwIHRvIHRoZSBvcGVyYXRpb24gaW1wbGVtZW50YXRpb24gdG8gcHJldmVudCBpbnRlcmZlcmVuY2UgYmV0d2VlbiBvdGhlcgorICAgICBvcGVyYXRpb25zIHJ1bm5pbmcgYXQgdGhlIHNhbWUgdGltZS4KKworCis9PT09PT09PT0KK1BST0NFRFVSRQorPT09PT09PT09CisKK09wZXJhdGlvbnMgYXJlIHVzZWQgdGhyb3VnaCB0aGUgZm9sbG93aW5nIHByb2NlZHVyZToKKworICgxKSBUaGUgc3VibWl0dGluZyB0aHJlYWQgbXVzdCBhbGxvY2F0ZSB0aGUgb3BlcmF0aW9uIGFuZCBpbml0aWFsaXNlIGl0CisgICAgIGl0c2VsZi4gIE5vcm1hbGx5IHRoaXMgd291bGQgYmUgcGFydCBvZiBhIG1vcmUgc3BlY2lmaWMgc3RydWN0dXJlIHdpdGggdGhlCisgICAgIGdlbmVyaWMgb3AgZW1iZWRkZWQgd2l0aGluLgorCisgKDIpIFRoZSBzdWJtaXR0aW5nIHRocmVhZCBtdXN0IHRoZW4gc3VibWl0IHRoZSBvcGVyYXRpb24gZm9yIHByb2Nlc3NpbmcgdXNpbmcKKyAgICAgb25lIG9mIHRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9uczoKKworCWludCBmc2NhY2hlX3N1Ym1pdF9vcChzdHJ1Y3QgZnNjYWNoZV9vYmplY3QgKm9iamVjdCwKKwkJCSAgICAgIHN0cnVjdCBmc2NhY2hlX29wZXJhdGlvbiAqb3ApOworCisJaW50IGZzY2FjaGVfc3VibWl0X2V4Y2x1c2l2ZV9vcChzdHJ1Y3QgZnNjYWNoZV9vYmplY3QgKm9iamVjdCwKKwkJCQkJc3RydWN0IGZzY2FjaGVfb3BlcmF0aW9uICpvcCk7CisKKyAgICAgVGhlIGZpcnN0IGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIHRvIHN1Ym1pdCBub24tZXhjbHVzaXZlIG9wcyBhbmQgdGhlCisgICAgIHNlY29uZCB0byBzdWJtaXQgZXhjbHVzaXZlIG9uZXMuICBUaGUgY2FsbGVyIG11c3Qgc3RpbGwgc2V0IHRoZQorICAgICBGU0NBQ0hFX09QX0VYQ0xVU0lWRSBmbGFnLgorCisgICAgIElmIHN1Y2Nlc3NmdWwsIGJvdGggZnVuY3Rpb25zIHdpbGwgYXNzaWduIHRoZSBvcGVyYXRpb24gdG8gdGhlIHNwZWNpZmllZAorICAgICBvYmplY3QgYW5kIHJldHVybiAwLiAgLUVOT0JVRlMgd2lsbCBiZSByZXR1cm5lZCBpZiB0aGUgb2JqZWN0IHNwZWNpZmllZCBpcworICAgICBwZXJtYW5lbnRseSB1bmF2YWlsYWJsZS4KKworICAgICBUaGUgb3BlcmF0aW9uIG1hbmFnZXIgd2lsbCBkZWZlciBvcGVyYXRpb25zIG9uIGFuIG9iamVjdCB0aGF0IGlzIHN0aWxsCisgICAgIHVuZGVyZ29pbmcgbG9va3VwIG9yIGNyZWF0aW9uLiAgVGhlIG9wZXJhdGlvbiB3aWxsIGFsc28gYmUgZGVmZXJyZWQgaWYgYW4KKyAgICAgb3BlcmF0aW9uIG9mIGNvbmZsaWN0aW5nIGV4Y2x1c2l2aXR5IGlzIGluIHByb2dyZXNzIG9uIHRoZSBvYmplY3QuCisKKyAgICAgSWYgdGhlIG9wZXJhdGlvbiBpcyBhc3luY2hyb25vdXMsIHRoZSBtYW5hZ2VyIHdpbGwgcmV0YWluIGEgcmVmZXJlbmNlIHRvCisgICAgIGl0LCBzbyB0aGUgY2FsbGVyIHNob3VsZCBwdXQgdGhlaXIgcmVmZXJlbmNlIHRvIGl0IGJ5IHBhc3NpbmcgaXQgdG86CisKKwl2b2lkIGZzY2FjaGVfcHV0X29wZXJhdGlvbihzdHJ1Y3QgZnNjYWNoZV9vcGVyYXRpb24gKm9wKTsKKworICgzKSBJZiB0aGUgc3VibWl0dGluZyB0aHJlYWQgd2FudHMgdG8gZG8gdGhlIHdvcmsgaXRzZWxmLCBhbmQgaGFzIG1hcmtlZCB0aGUKKyAgICAgb3BlcmF0aW9uIHdpdGggRlNDQUNIRV9PUF9NWVRIUkVBRCwgdGhlbiBpdCBzaG91bGQgbW9uaXRvcgorICAgICBGU0NBQ0hFX09QX1dBSVRJTkcgYXMgZGVzY3JpYmVkIGFib3ZlIGFuZCBjaGVjayB0aGUgc3RhdGUgb2YgdGhlIG9iamVjdCBpZgorICAgICBuZWNlc3NhcnkgKHRoZSBvYmplY3QgbWlnaHQgaGF2ZSBkaWVkIHdoaWxzdCB0aGUgdGhyZWFkIHdhcyB3YWl0aW5nKS4KKworICAgICBXaGVuIGl0IGhhcyBmaW5pc2hlZCBkb2luZyBpdHMgcHJvY2Vzc2luZywgaXQgc2hvdWxkIGNhbGwKKyAgICAgZnNjYWNoZV9vcF9jb21wbGV0ZSgpIGFuZCBmc2NhY2hlX3B1dF9vcGVyYXRpb24oKSBvbiBpdC4KKworICg0KSBUaGUgb3BlcmF0aW9uIGhvbGRzIGFuIGVmZmVjdGl2ZSBsb2NrIHVwb24gdGhlIG9iamVjdCwgcHJldmVudGluZyBvdGhlcgorICAgICBleGNsdXNpdmUgb3BzIGNvbmZsaWN0aW5nIHVudGlsIGl0IGlzIHJlbGVhc2VkLiAgVGhlIG9wZXJhdGlvbiBjYW4gYmUKKyAgICAgZW5xdWV1ZWQgZm9yIGZ1cnRoZXIgaW1tZWRpYXRlIGFzeW5jaHJvbm91cyBwcm9jZXNzaW5nIGJ5IGFkanVzdGluZyB0aGUKKyAgICAgQ1BVIHRpbWUgcHJvdmlzaW9uaW5nIG9wdGlvbiBpZiBuZWNlc3NhcnksIGVnOgorCisJb3AtPmZsYWdzICY9IH5GU0NBQ0hFX09QX1RZUEU7CisJb3AtPmZsYWdzIHw9IH5GU0NBQ0hFX09QX0ZBU1Q7CisKKyAgICAgYW5kIGNhbGxpbmc6CisKKwl2b2lkIGZzY2FjaGVfZW5xdWV1ZV9vcGVyYXRpb24oc3RydWN0IGZzY2FjaGVfb3BlcmF0aW9uICpvcCkKKworICAgICBUaGlzIGNhbiBiZSB1c2VkIHRvIGFsbG93IG90aGVyIHRoaW5ncyB0byBoYXZlIHVzZSBvZiB0aGUgd29ya2VyIHRocmVhZAorICAgICBwb29scy4KKworCis9PT09PT09PT09PT09PT09PT09PT0KK0FTWU5DSFJPTk9VUyBDQUxMQkFDSworPT09PT09PT09PT09PT09PT09PT09CisKK1doZW4gdXNlZCBpbiBhc3luY2hyb25vdXMgbW9kZSwgdGhlIHdvcmtlciB0aHJlYWQgcG9vbCB3aWxsIGludm9rZSB0aGUKK3Byb2Nlc3NvciBtZXRob2Qgd2l0aCBhIHBvaW50ZXIgdG8gdGhlIG9wZXJhdGlvbi4gIFRoaXMgc2hvdWxkIHRoZW4gZ2V0IGF0IHRoZQorY29udGFpbmVyIHN0cnVjdCBieSB1c2luZyBjb250YWluZXJfb2YoKToKKworCXN0YXRpYyB2b2lkIGZzY2FjaGVfd3JpdGVfb3Aoc3RydWN0IGZzY2FjaGVfb3BlcmF0aW9uICpfb3ApCisJeworCQlzdHJ1Y3QgZnNjYWNoZV9zdG9yYWdlICpvcCA9CisJCQljb250YWluZXJfb2YoX29wLCBzdHJ1Y3QgZnNjYWNoZV9zdG9yYWdlLCBvcCk7CisJLi4uCisJfQorCitUaGUgY2FsbGVyIGhvbGRzIGEgcmVmZXJlbmNlIG9uIHRoZSBvcGVyYXRpb24sIGFuZCB3aWxsIGludm9rZQorZnNjYWNoZV9wdXRfb3BlcmF0aW9uKCkgd2hlbiB0aGUgcHJvY2Vzc29yIGZ1bmN0aW9uIHJldHVybnMuICBUaGUgcHJvY2Vzc29yCitmdW5jdGlvbiBpcyBhdCBsaWJlcnR5IHRvIGNhbGwgZnNjYWNoZV9lbnF1ZXVlX29wZXJhdGlvbigpIG9yIHRvIHRha2UgZXh0cmEKK3JlZmVyZW5jZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NlcGgudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9jZXBoLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjAzMGFhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9jZXBoLnR4dApAQCAtMCwwICsxLDE0OCBAQAorQ2VwaCBEaXN0cmlidXRlZCBGaWxlIFN5c3RlbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitDZXBoIGlzIGEgZGlzdHJpYnV0ZWQgbmV0d29yayBmaWxlIHN5c3RlbSBkZXNpZ25lZCB0byBwcm92aWRlIGdvb2QKK3BlcmZvcm1hbmNlLCByZWxpYWJpbGl0eSwgYW5kIHNjYWxhYmlsaXR5LgorCitCYXNpYyBmZWF0dXJlcyBpbmNsdWRlOgorCisgKiBQT1NJWCBzZW1hbnRpY3MKKyAqIFNlYW1sZXNzIHNjYWxpbmcgZnJvbSAxIHRvIG1hbnkgdGhvdXNhbmRzIG9mIG5vZGVzCisgKiBIaWdoIGF2YWlsYWJpbGl0eSBhbmQgcmVsaWFiaWxpdHkuICBObyBzaW5nbGUgcG9pbnQgb2YgZmFpbHVyZS4KKyAqIE4td2F5IHJlcGxpY2F0aW9uIG9mIGRhdGEgYWNyb3NzIHN0b3JhZ2Ugbm9kZXMKKyAqIEZhc3QgcmVjb3ZlcnkgZnJvbSBub2RlIGZhaWx1cmVzCisgKiBBdXRvbWF0aWMgcmViYWxhbmNpbmcgb2YgZGF0YSBvbiBub2RlIGFkZGl0aW9uL3JlbW92YWwKKyAqIEVhc3kgZGVwbG95bWVudDogbW9zdCBGUyBjb21wb25lbnRzIGFyZSB1c2Vyc3BhY2UgZGFlbW9ucworCitBbHNvLAorICogRmxleGlibGUgc25hcHNob3RzIChvbiBhbnkgZGlyZWN0b3J5KQorICogUmVjdXJzaXZlIGFjY291bnRpbmcgKG5lc3RlZCBmaWxlcywgZGlyZWN0b3JpZXMsIGJ5dGVzKQorCitJbiBjb250cmFzdCB0byBjbHVzdGVyIGZpbGVzeXN0ZW1zIGxpa2UgR0ZTLCBPQ0ZTMiwgYW5kIEdQRlMgdGhhdCByZWx5CitvbiBzeW1tZXRyaWMgYWNjZXNzIGJ5IGFsbCBjbGllbnRzIHRvIHNoYXJlZCBibG9jayBkZXZpY2VzLCBDZXBoCitzZXBhcmF0ZXMgZGF0YSBhbmQgbWV0YWRhdGEgbWFuYWdlbWVudCBpbnRvIGluZGVwZW5kZW50IHNlcnZlcgorY2x1c3RlcnMsIHNpbWlsYXIgdG8gTHVzdHJlLiAgVW5saWtlIEx1c3RyZSwgaG93ZXZlciwgbWV0YWRhdGEgYW5kCitzdG9yYWdlIG5vZGVzIHJ1biBlbnRpcmVseSBhcyB1c2VyIHNwYWNlIGRhZW1vbnMuICBTdG9yYWdlIG5vZGVzCit1dGlsaXplIGJ0cmZzIHRvIHN0b3JlIGRhdGEgb2JqZWN0cywgbGV2ZXJhZ2luZyBpdHMgYWR2YW5jZWQgZmVhdHVyZXMKKyhjaGVja3N1bW1pbmcsIG1ldGFkYXRhIHJlcGxpY2F0aW9uLCBldGMuKS4gIEZpbGUgZGF0YSBpcyBzdHJpcGVkCithY3Jvc3Mgc3RvcmFnZSBub2RlcyBpbiBsYXJnZSBjaHVua3MgdG8gZGlzdHJpYnV0ZSB3b3JrbG9hZCBhbmQKK2ZhY2lsaXRhdGUgaGlnaCB0aHJvdWdocHV0cy4gIFdoZW4gc3RvcmFnZSBub2RlcyBmYWlsLCBkYXRhIGlzCityZS1yZXBsaWNhdGVkIGluIGEgZGlzdHJpYnV0ZWQgZmFzaGlvbiBieSB0aGUgc3RvcmFnZSBub2RlcyB0aGVtc2VsdmVzCisod2l0aCBzb21lIG1pbmltYWwgY29vcmRpbmF0aW9uIGZyb20gYSBjbHVzdGVyIG1vbml0b3IpLCBtYWtpbmcgdGhlCitzeXN0ZW0gZXh0cmVtZWx5IGVmZmljaWVudCBhbmQgc2NhbGFibGUuCisKK01ldGFkYXRhIHNlcnZlcnMgZWZmZWN0aXZlbHkgZm9ybSBhIGxhcmdlLCBjb25zaXN0ZW50LCBkaXN0cmlidXRlZAoraW4tbWVtb3J5IGNhY2hlIGFib3ZlIHRoZSBmaWxlIG5hbWVzcGFjZSB0aGF0IGlzIGV4dHJlbWVseSBzY2FsYWJsZSwKK2R5bmFtaWNhbGx5IHJlZGlzdHJpYnV0ZXMgbWV0YWRhdGEgaW4gcmVzcG9uc2UgdG8gd29ya2xvYWQgY2hhbmdlcywKK2FuZCBjYW4gdG9sZXJhdGUgYXJiaXRyYXJ5ICh3ZWxsLCBub24tQnl6YW50aW5lKSBub2RlIGZhaWx1cmVzLiAgVGhlCittZXRhZGF0YSBzZXJ2ZXIgdGFrZXMgYSBzb21ld2hhdCB1bmNvbnZlbnRpb25hbCBhcHByb2FjaCB0byBtZXRhZGF0YQorc3RvcmFnZSB0byBzaWduaWZpY2FudGx5IGltcHJvdmUgcGVyZm9ybWFuY2UgZm9yIGNvbW1vbiB3b3JrbG9hZHMuICBJbgorcGFydGljdWxhciwgaW5vZGVzIHdpdGggb25seSBhIHNpbmdsZSBsaW5rIGFyZSBlbWJlZGRlZCBpbgorZGlyZWN0b3JpZXMsIGFsbG93aW5nIGVudGlyZSBkaXJlY3RvcmllcyBvZiBkZW50cmllcyBhbmQgaW5vZGVzIHRvIGJlCitsb2FkZWQgaW50byBpdHMgY2FjaGUgd2l0aCBhIHNpbmdsZSBJL08gb3BlcmF0aW9uLiAgVGhlIGNvbnRlbnRzIG9mCitleHRyZW1lbHkgbGFyZ2UgZGlyZWN0b3JpZXMgY2FuIGJlIGZyYWdtZW50ZWQgYW5kIG1hbmFnZWQgYnkKK2luZGVwZW5kZW50IG1ldGFkYXRhIHNlcnZlcnMsIGFsbG93aW5nIHNjYWxhYmxlIGNvbmN1cnJlbnQgYWNjZXNzLgorCitUaGUgc3lzdGVtIG9mZmVycyBhdXRvbWF0aWMgZGF0YSByZWJhbGFuY2luZy9taWdyYXRpb24gd2hlbiBzY2FsaW5nCitmcm9tIGEgc21hbGwgY2x1c3RlciBvZiBqdXN0IGEgZmV3IG5vZGVzIHRvIG1hbnkgaHVuZHJlZHMsIHdpdGhvdXQKK3JlcXVpcmluZyBhbiBhZG1pbmlzdHJhdG9yIGNhcnZlIHRoZSBkYXRhIHNldCBpbnRvIHN0YXRpYyB2b2x1bWVzIG9yCitnbyB0aHJvdWdoIHRoZSB0ZWRpb3VzIHByb2Nlc3Mgb2YgbWlncmF0aW5nIGRhdGEgYmV0d2VlbiBzZXJ2ZXJzLgorV2hlbiB0aGUgZmlsZSBzeXN0ZW0gYXBwcm9hY2hlcyBmdWxsLCBuZXcgbm9kZXMgY2FuIGJlIGVhc2lseSBhZGRlZAorYW5kIHRoaW5ncyB3aWxsICJqdXN0IHdvcmsuIgorCitDZXBoIGluY2x1ZGVzIGZsZXhpYmxlIHNuYXBzaG90IG1lY2hhbmlzbSB0aGF0IGFsbG93cyBhIHVzZXIgdG8gY3JlYXRlCithIHNuYXBzaG90IG9uIGFueSBzdWJkaXJlY3RvcnkgKGFuZCBpdHMgbmVzdGVkIGNvbnRlbnRzKSBpbiB0aGUKK3N5c3RlbS4gIFNuYXBzaG90IGNyZWF0aW9uIGFuZCBkZWxldGlvbiBhcmUgYXMgc2ltcGxlIGFzICdta2RpcgorLnNuYXAvZm9vJyBhbmQgJ3JtZGlyIC5zbmFwL2ZvbycuCisKK0NlcGggYWxzbyBwcm92aWRlcyBzb21lIHJlY3Vyc2l2ZSBhY2NvdW50aW5nIG9uIGRpcmVjdG9yaWVzIGZvciBuZXN0ZWQKK2ZpbGVzIGFuZCBieXRlcy4gIFRoYXQgaXMsIGEgJ2dldGZhdHRyIC1kIGZvbycgb24gYW55IGRpcmVjdG9yeSBpbiB0aGUKK3N5c3RlbSB3aWxsIHJldmVhbCB0aGUgdG90YWwgbnVtYmVyIG9mIG5lc3RlZCByZWd1bGFyIGZpbGVzIGFuZAorc3ViZGlyZWN0b3JpZXMsIGFuZCBhIHN1bW1hdGlvbiBvZiBhbGwgbmVzdGVkIGZpbGUgc2l6ZXMuICBUaGlzIG1ha2VzCit0aGUgaWRlbnRpZmljYXRpb24gb2YgbGFyZ2UgZGlzayBzcGFjZSBjb25zdW1lcnMgcmVsYXRpdmVseSBxdWljaywgYXMKK25vICdkdScgb3Igc2ltaWxhciByZWN1cnNpdmUgc2NhbiBvZiB0aGUgZmlsZSBzeXN0ZW0gaXMgcmVxdWlyZWQuCisKKworTW91bnQgU3ludGF4Cis9PT09PT09PT09PT0KKworVGhlIGJhc2ljIG1vdW50IHN5bnRheCBpczoKKworICMgbW91bnQgLXQgY2VwaCBtb25pcFs6cG9ydF1bLG1vbmlwMls6cG9ydF0uLi5dOi9bc3ViZGlyXSBtbnQKKworWW91IG9ubHkgbmVlZCB0byBzcGVjaWZ5IGEgc2luZ2xlIG1vbml0b3IsIGFzIHRoZSBjbGllbnQgd2lsbCBnZXQgdGhlCitmdWxsIGxpc3Qgd2hlbiBpdCBjb25uZWN0cy4gIChIb3dldmVyLCBpZiB0aGUgbW9uaXRvciB5b3Ugc3BlY2lmeQoraGFwcGVucyB0byBiZSBkb3duLCB0aGUgbW91bnQgd29uJ3Qgc3VjY2VlZC4pICBUaGUgcG9ydCBjYW4gYmUgbGVmdAorb2ZmIGlmIHRoZSBtb25pdG9yIGlzIHVzaW5nIHRoZSBkZWZhdWx0LiAgU28gaWYgdGhlIG1vbml0b3IgaXMgYXQKKzEuMi4zLjQsCisKKyAjIG1vdW50IC10IGNlcGggMS4yLjMuNDovIC9tbnQvY2VwaAorCitpcyBzdWZmaWNpZW50LiAgSWYgL3NiaW4vbW91bnQuY2VwaCBpcyBpbnN0YWxsZWQsIGEgaG9zdG5hbWUgY2FuIGJlCit1c2VkIGluc3RlYWQgb2YgYW4gSVAgYWRkcmVzcy4KKworCisKK01vdW50IE9wdGlvbnMKKz09PT09PT09PT09PT0KKworICBpcD1BLkIuQy5EWzpOXQorCVNwZWNpZnkgdGhlIElQIGFuZC9vciBwb3J0IHRoZSBjbGllbnQgc2hvdWxkIGJpbmQgdG8gbG9jYWxseS4KKwlUaGVyZSBpcyBub3JtYWxseSBub3QgbXVjaCByZWFzb24gdG8gZG8gdGhpcy4gIElmIHRoZSBJUCBpcyBub3QKKwlzcGVjaWZpZWQsIHRoZSBjbGllbnQncyBJUCBhZGRyZXNzIGlzIGRldGVybWluZWQgYnkgbG9va2luZyBhdCB0aGUKKwlhZGRyZXNzIGl0cyBjb25uZWN0aW9uIHRvIHRoZSBtb25pdG9yIG9yaWdpbmF0ZXMgZnJvbS4KKworICB3c2l6ZT1YCisJU3BlY2lmeSB0aGUgbWF4aW11bSB3cml0ZSBzaXplIGluIGJ5dGVzLiAgQnkgZGVmYXVsdCB0aGVyZSBpcyBubworCW1heGltdW0uICBDZXBoIHdpbGwgbm9ybWFsbHkgc2l6ZSB3cml0ZXMgYmFzZWQgb24gdGhlIGZpbGUgc3RyaXBlCisJc2l6ZS4KKworICByc2l6ZT1YCisJU3BlY2lmeSB0aGUgbWF4aW11bSByZWFkYWhlYWQuCisKKyAgbW91bnRfdGltZW91dD1YCisJU3BlY2lmeSB0aGUgdGltZW91dCB2YWx1ZSBmb3IgbW91bnQgKGluIHNlY29uZHMpLCBpbiB0aGUgY2FzZQorCW9mIGEgbm9uLXJlc3BvbnNpdmUgQ2VwaCBmaWxlIHN5c3RlbS4gIFRoZSBkZWZhdWx0IGlzIDMwCisJc2Vjb25kcy4KKworICByYnl0ZXMKKwlXaGVuIHN0YXQoKSBpcyBjYWxsZWQgb24gYSBkaXJlY3RvcnksIHNldCBzdF9zaXplIHRvICdyYnl0ZXMnLAorCXRoZSBzdW1tYXRpb24gb2YgZmlsZSBzaXplcyBvdmVyIGFsbCBmaWxlcyBuZXN0ZWQgYmVuZWF0aCB0aGF0CisJZGlyZWN0b3J5LiAgVGhpcyBpcyB0aGUgZGVmYXVsdC4KKworICBub3JieXRlcworCVdoZW4gc3RhdCgpIGlzIGNhbGxlZCBvbiBhIGRpcmVjdG9yeSwgc2V0IHN0X3NpemUgdG8gdGhlCisJbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhhdCBkaXJlY3RvcnkuCisKKyAgbm9jcmMKKwlEaXNhYmxlIENSQzMyQyBjYWxjdWxhdGlvbiBmb3IgZGF0YSB3cml0ZXMuICBJZiBzZXQsIHRoZSBzdG9yYWdlIG5vZGUKKwltdXN0IHJlbHkgb24gVENQJ3MgZXJyb3IgY29ycmVjdGlvbiB0byBkZXRlY3QgZGF0YSBjb3JydXB0aW9uCisJaW4gdGhlIGRhdGEgcGF5bG9hZC4KKworICBkY2FjaGUKKyAgICAgICAgVXNlIHRoZSBkY2FjaGUgY29udGVudHMgdG8gcGVyZm9ybSBuZWdhdGl2ZSBsb29rdXBzIGFuZAorICAgICAgICByZWFkZGlyIHdoZW4gdGhlIGNsaWVudCBoYXMgdGhlIGVudGlyZSBkaXJlY3RvcnkgY29udGVudHMgaW4KKyAgICAgICAgaXRzIGNhY2hlLiAgKFRoaXMgZG9lcyBub3QgY2hhbmdlIGNvcnJlY3RuZXNzOyB0aGUgY2xpZW50IHVzZXMKKyAgICAgICAgY2FjaGVkIG1ldGFkYXRhIG9ubHkgd2hlbiBhIGxlYXNlIG9yIGNhcGFiaWxpdHkgZW5zdXJlcyBpdCBpcworICAgICAgICB2YWxpZC4pCisKKyAgbm9kY2FjaGUKKyAgICAgICAgRG8gbm90IHVzZSB0aGUgZGNhY2hlIGFzIGFib3ZlLiAgVGhpcyBhdm9pZHMgYSBzaWduaWZpY2FudCBhbW91bnQgb2YKKyAgICAgICAgY29tcGxleCBjb2RlLCBzYWNyaWZpY2luZyBwZXJmb3JtYW5jZSB3aXRob3V0IGFmZmVjdGluZyBjb3JyZWN0bmVzcywKKyAgICAgICAgYW5kIGlzIHVzZWZ1bCBmb3IgdHJhY2tpbmcgZG93biBidWdzLgorCisgIG5vYXN5bmNyZWFkZGlyCisJRG8gbm90IHVzZSB0aGUgZGNhY2hlIGFzIGFib3ZlIGZvciByZWFkZGlyLgorCitNb3JlIEluZm9ybWF0aW9uCis9PT09PT09PT09PT09PT09CisKK0ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIENlcGgsIHNlZSB0aGUgaG9tZSBwYWdlIGF0CisJaHR0cDovL2NlcGgubmV3ZHJlYW0ubmV0LworCitUaGUgTGludXgga2VybmVsIGNsaWVudCBzb3VyY2UgdHJlZSBpcyBhdmFpbGFibGUgYXQKKwlnaXQ6Ly9jZXBoLm5ld2RyZWFtLm5ldC9naXQvY2VwaC1jbGllbnQuZ2l0CisJZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3NhZ2UvY2VwaC1jbGllbnQuZ2l0CisKK2FuZCB0aGUgc291cmNlIGZvciB0aGUgZnVsbCBzeXN0ZW0gaXMgYXQKKwlnaXQ6Ly9jZXBoLm5ld2RyZWFtLm5ldC9naXQvY2VwaC5naXQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2lmcy9BVVRIT1JTIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9jaWZzL0FVVEhPUlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk4ODAwZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2lmcy9BVVRIT1JTCkBAIC0wLDAgKzEsNTcgQEAKK09yaWdpbmFsIEF1dGhvcgorPT09PT09PT09PT09PT09CitTdGV2ZSBGcmVuY2ggKHNmcmVuY2hAc2FtYmEub3JnKQorCitUaGUgYXV0aG9yIHdpc2hlcyB0byBleHByZXNzIGhpcyBhcHByZWNpYXRpb24gYW5kIHRoYW5rcyB0bzoKK0FuZHJldyBUcmlkZ2VsbCAoU2FtYmEgdGVhbSkgZm9yIGhpcyBlYXJseSBzdWdnZXN0aW9ucyBhYm91dCBzbWIvY2lmcyBWRlMKK2ltcHJvdmVtZW50cy4gVGhhbmtzIHRvIElCTSBmb3IgYWxsb3dpbmcgbWUgdGltZSBhbmQgdGVzdCByZXNvdXJjZXMgdG8gcHVyc3VlCit0aGlzIHByb2plY3QsIHRvIEppbSBNY0Rvbm91Z2ggZnJvbSBJQk0gKGFuZCB0aGUgU2FtYmEgVGVhbSkgZm9yIGhpcyBoZWxwLCB0bwordGhlIElCTSBMaW51eCBKRlMgdGVhbSBmb3IgZXhwbGFpbmluZyBtYW55IGVzb3RlcmljIExpbnV4IGZpbGVzeXN0ZW0gZmVhdHVyZXMuCitKZXJlbXkgQWxsaXNvbiBvZiB0aGUgU2FtYmEgdGVhbSBoYXMgZG9uZSBpbnZhbHVhYmxlIHdvcmsgaW4gYWRkaW5nIHRoZSBzZXJ2ZXIKK3NpZGUgb2YgdGhlIG9yaWdpbmFsIENJRlMgVW5peCBleHRlbnNpb25zIGFuZCByZXZpZXdpbmcgYW5kIGltcGxlbWVudGluZworcG9ydGlvbnMgb2YgdGhlIG5ld2VyIENJRlMgUE9TSVggZXh0ZW5zaW9ucyBpbnRvIHRoZSBTYW1iYSAzIGZpbGUgc2VydmVyLiBUaGFuaworRGF2ZSBCb3V0Y2hlciBvZiBJQk0gUm9jaGVzdGVyIChhdXRob3Igb2YgdGhlIE9TLzQwMCBzbWIvY2lmcyBmaWxlc3lzdGVtIGNsaWVudCkKK2ZvciBwcm92aW5nIHllYXJzIGFnbyB0aGF0IHZlcnkgZ29vZCBzbWIvY2lmcyBjbGllbnRzIGNvdWxkIGJlIGRvbmUgb24gVW5peC1saWtlCitvcGVyYXRpbmcgc3lzdGVtcy4gIFZvbGtlciBMZW5kZWNrZSwgQW5kcmV3IFRyaWRnZWxsLCBVcmJhbiBXaWRtYXJrLCBKb2huIAorTmV3YmlnaW4gYW5kIG90aGVycyBmb3IgdGhlaXIgd29yayBvbiB0aGUgTGludXggc21iZnMgbW9kdWxlLiAgVGhhbmtzIHRvCit0aGUgb3RoZXIgbWVtYmVycyBvZiB0aGUgU3RvcmFnZSBOZXR3b3JrIEluZHVzdHJ5IEFzc29jaWF0aW9uIENJRlMgVGVjaG5pY2FsCitXb3JrZ3JvdXAgZm9yIHRoZWlyIHdvcmsgc3BlY2lmeWluZyB0aGlzIGhpZ2hseSBjb21wbGV4IHByb3RvY29sIGFuZCBmaW5hbGx5Cit0aGFua3MgdG8gdGhlIFNhbWJhIHRlYW0gZm9yIHRoZWlyIHRlY2huaWNhbCBhZHZpY2UgYW5kIGVuY291cmFnZW1lbnQuCisKK1BhdGNoIENvbnRyaWJ1dG9ycworLS0tLS0tLS0tLS0tLS0tLS0tCitad2FuZSBNd2Fpa2FtYm8KK0FuZGkgS2xlZW4KK0FtcnV0IEpvc2hpCitTaG9iaGl0IERheWFsCitTZXJnZXkgVmxhc292CitSaWNoYXJkIEh1Z2hlcworWXVyeSBVbWFuZXRzCitNYXJrIEhhbXp5IChmb3Igc29tZSBvZiB0aGUgZWFybHkgY2lmcyBJUHY2IHdvcmspCitEb21lbiBQdW5jZXIKK0plc3BlciBKdWhsIChpbiBwYXJ0aWN1bGFyIGZvciBsb3RzIG9mIHdoaXRlc3BhY2UvZm9ybWF0dGluZyBjbGVhbnVwKQorVmluY2UgTmVncmkgYW5kIERhdmUgU3RhaGwgKGZvciBmaW5kaW5nIGFuIGltcG9ydGFudCBjYWNoaW5nIGJ1ZykKK0FkcmlhbiBCdW5rIChrY2FsbG9jIGNsZWFudXBzKQorTWlrbG9zIFN6ZXJlZGkgCitLYXplb24gdGVhbSBmb3IgdmFyaW91cyBmaXhlcyBlc3BlY2lhbGx5IGZvciAyLjQgdmVyc2lvbi4KK0Fzc2VyIEZlcm5vIChDaGFuZ2UgTm90aWZ5IHN1cHBvcnQpCitTaGFnZ3kgKERhdmUgS2xlaWthbXApIGZvciBpbm51bWVyYWJsZSBzbWFsbCBmcyBzdWdnZXN0aW9ucyBhbmQgc29tZSBnb29kIGNsZWFudXAKK0d1bnRlciBLdWtrdWtrICh0ZXN0aW5nIGFuZCBzdWdnZXN0aW9ucyBmb3Igc3VwcG9ydCBvZiBvbGQgc2VydmVycykKK0lnb3IgTWFtbWVkb3YgKERGUyBzdXBwb3J0KQorSmVmZiBMYXl0b24gKG1hbnksIG1hbnkgZml4ZXMsIGFzIHdlbGwgYXMgZ3JlYXQgd29yayBvbiB0aGUgY2lmcyBLZXJiZXJvcyBjb2RlKQorU2NvdHQgTG92ZW5iZXJnCitQYXZlbCBTaGlsb3Zza3kgKGZvciBncmVhdCB3b3JrIGFkZGluZyBTTUIyIHN1cHBvcnQsIGFuZCB2YXJpb3VzIFNNQjMgZmVhdHVyZXMpCisKK1Rlc3QgY2FzZSBhbmQgQnVnIFJlcG9ydCBjb250cmlidXRvcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoYW5rcyB0byB0aG9zZSBpbiB0aGUgY29tbXVuaXR5IHdobyBoYXZlIHN1Ym1pdHRlZCBkZXRhaWxlZCBidWcgcmVwb3J0cworYW5kIGRlYnVnIG9mIHByb2JsZW1zIHRoZXkgaGF2ZSBmb3VuZDogIEpvY2hlbiBEb2x6ZSwgRGF2aWQgQmxhaW5lLAorUmVuZSBTY2hhcmZlLCBNYXJ0aW4gSm9zZWZzc29uLCBBbGV4YW5kZXIgV2lsZCwgQW50aG9ueSBMaWd1b3JpLAorTGFycyBNdWxsZXIsIFVyYmFuIFdpZG1hcmssIE1hc3NpbWlsaWFubyBGZXJyZXJvLCBIb3dhcmQgT3dlbiwKK09sYWYgS2lyY2gsIEtpZXJvbiBCcmlnZ3MsIE5pY2sgTWlsbGluZ3RvbiBhbmQgb3RoZXJzLiBBbHNvIHNwZWNpYWwKK21lbnRpb24gdG8gdGhlIFN0YW5mb3JkIENoZWNrZXIgKFNXQVQpIHdoaWNoIHBvaW50ZWQgb3V0IG1hbnkgbWlub3IKK2J1Z3MgaW4gZXJyb3IgcGF0aHMuICBWYWx1YWJsZSBzdWdnZXN0aW9ucyBhbHNvIGhhdmUgY29tZSBmcm9tIEFsIFZpcm8KK2FuZCBEYXZlIE1pbGxlci4KKworQW5kIHRoYW5rcyB0byB0aGUgSUJNIExUQyBhbmQgUG93ZXIgdGVzdCB0ZWFtcyBhbmQgU3VTRSB0ZXN0ZXJzIGZvcgorZmluZGluZyBtdWx0aXBsZSBidWdzIGR1cmluZyBleGNlbGxlbnQgc3RyZXNzIHRlc3QgcnVucy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2lmcy9DSEFOR0VTIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9jaWZzL0NIQU5HRVMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMwMDI1YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2lmcy9DSEFOR0VTCkBAIC0wLDAgKzEsMTA2NSBAQAorVmVyc2lvbiAxLjYyCistLS0tLS0tLS0tLS0KK0FkZCBzb2Nrb3B0PVRDUF9OT0RFTEFZIG1vdW50IG9wdGlvbi4gRUEgKHhhdHRyKSByb3V0aW5lcyBoYXJkZW5lZAordG8gbW9yZSBzdHJpY3RseSBoYW5kbGUgY29ycnVwdCBmcmFtZXMuCisKK1ZlcnNpb24gMS42MQorLS0tLS0tLS0tLS0tCitGaXggYXBwZW5kIHByb2JsZW0gdG8gU2FtYmEgc2VydmVycyAoZmlsZXMgb3BlbmVkIHdpdGggT19BUFBFTkQgY291bGQKK2hhdmUgZHVwbGljYXRlZCBkYXRhKS4gRml4IG9vcHMgaW4gY2lmc19sb29rdXAuIFdvcmthcm91bmQgcHJvYmxlbQorbW91bnRpbmcgdG8gT1MvNDAwIE5ldHNlcnZlLiBGaXggb29wcyBpbiBjaWZzX2dldF90Y3Bfc2Vzc2lvbi4KK0Rpc2FibGUgdXNlIG9mIHNlcnZlciBpbm9kZSBudW1iZXJzIHdoZW4gc2VydmVyIG9ubHkKK3BhcnRpYWxseSBzdXBwb3J0cyB0aGVtIChlLmcuIGZvciBvbmUgc2VydmVyIHF1ZXJ5aW5nIGlub2RlIG51bWJlcnMgb24KK0ZpbmRGaXJzdCBmYWlscyBidXQgUVBhdGhJbmZvIHF1ZXJpZXMgd29ya3MpLiBGaXggb29wcyB3aXRoIGRmcyBpbiAKK2NpZnNfcHV0X3NtYl9zZXMuIEZpeCBtbWFwIHRvIHdvcmsgb24gZGlyZWN0aW8gbW91bnRzIChuZWVkZWQKK2ZvciBPcGVuT2ZmaWNlIHdoZW4gb24gZm9yY2VkaXJlY3RpbyBtb3VudCBlLmcuKQorCitWZXJzaW9uIDEuNjAKKy0tLS0tLS0tLS0tLS0KK0ZpeCBtZW1vcnkgbGVhayBpbiByZWNvbm5lY3QuICBGaXggb29wcyBpbiBERlMgbW91bnQgZXJyb3IgcGF0aC4KK1NldCBzX21heGJ5dGVzIHRvIHNtYWxsZXIgKHRoZSBtYXggdGhhdCB2ZnMgY2FuIGhhbmRsZSkgc28gdGhhdAorc2VuZGZpbGUgd2lsbCBub3cgd29yayBvdmVyIGNpZnMgbW91bnRzIGFnYWluLiAgQWRkIG5vZm9yY2VnaWQKK2FuZCBub2ZvcmNldWlkIG1vdW50IHBhcmFtZXRlcnMuIEZpeCBzbWFsbCBtZW0gbGVhayB3aGVuIHVzaW5nCitudGxtdjIuIEZpeCAybmQgbW91bnQgdG8gc2FtZSBzZXJ2ZXIgYnV0IHdpdGggZGlmZmVyZW50IHBvcnQgdG8KK2JlIGFsbG93ZWQgKHJhdGhlciB0aGFuIHJldXNpbmcgdGhlIDFzdCBwb3J0KSAtIG9ubHkgd2hlbiB0aGUKK3VzZXIgZXhwbGljaXRseSBvdmVycmlkZXMgdGhlIHBvcnQgb24gdGhlIDJuZCBtb3VudC4KKworVmVyc2lvbiAxLjU5CistLS0tLS0tLS0tLS0KK0NsaWVudCB1c2VzIHNlcnZlciBpbm9kZSBudW1iZXJzICh3aGljaCBhcmUgcGVyc2lzdGVudCkgcmF0aGVyIHRoYW4KK2NsaWVudCBnZW5lcmF0ZWQgb25lcyBieSBkZWZhdWx0IChtb3VudCBvcHRpb24gInNlcnZlcmlubyIgdHVybmVkCitvbiBieSBkZWZhdWx0IGlmIHNlcnZlciBzdXBwb3J0cyBpdCkuICBBZGQgZm9yY2V1aWQgYW5kIGZvcmNlZ2lkCittb3VudCBvcHRpb25zIChzbyB0aGF0IHdoZW4gbmVnb3RpYXRpbmcgdW5peCBleHRlbnNpb25zIHNwZWNpZnlpbmcKK3doaWNoIHVpZCBtb3VudGVkIGRvZXMgbm90IGltbWVkaWF0ZWx5IGZvcmNlIHRoZSBzZXJ2ZXIncyByZXBvcnRlZAordWlkcyB0byBiZSBvdmVycmlkZGVuKS4gIEFkZCBzdXBwb3J0IGZvciBzY29wZSBtb3VudCBwYXJtLiBJbXByb3ZlCitoYXJkIGxpbmsgZGV0ZWN0aW9uIHRvIHVzZSBzYW1lIGlub2RlIGZvciBib3RoLiAgRG8gbm90IHNldAorcmVhZC1vbmx5IGRvcyBhdHRyaWJ1dGUgb24gZGlyZWN0b3JpZXMgKGZvciBjaG1vZCkgc2luY2UgV2luZG93cworZXhwbG9yZXIgc3BlY2lhbCBjYXNlcyB0aGlzIGF0dHJpYnV0ZSBiaXQgZm9yIGRpcmVjdG9yaWVzIGZvcgorYSBkaWZmZXJlbnQgcHVycG9zZS4KKworVmVyc2lvbiAxLjU4CistLS0tLS0tLS0tLS0KK0d1YXJkIGFnYWluc3QgYnVmZmVyIG92ZXJydW5zIGluIHZhcmlvdXMgVUNTLTIgdG8gVVRGLTggc3RyaW5nIGNvbnZlcnNpb25zCit3aGVuIHRoZSBVVEYtOCBzdHJpbmcgaXMgY29tcG9zZWQgb2YgdW51c3VhbGx5IGxvbmcgKG1vcmUgdGhhbiA0IGJ5dGUpIGNvbnZlcnRlZAorY2hhcmFjdGVycy4gQWRkIHN1cHBvcnQgZm9yIG1vdW50aW5nIHJvb3Qgb2YgYSBzaGFyZSB3aGljaCByZWRpcmVjdHMgaW1tZWRpYXRlbHkKK3RvIERGUyB0YXJnZXQuIENvbnZlcnQgc3RyaW5nIGNvbnZlcnNpb24gZnVuY3Rpb25zIGZyb20gVW5pY29kZSB0byBtb3JlCithY2N1cmF0ZWx5IG1hcmsgc3RyaW5nIGxlbmd0aCBiZWZvcmUgYWxsb2NhdGluZyBtZW1vcnkgKHdoaWNoIG1heSBoZWxwIHRoZQorcmFyZSBjYXNlcyB3aGVyZSBhIFVURi04IHN0cmluZyBpcyBtdWNoIGxhcmdlciB0aGFuIHRoZSBVQ1MyIHN0cmluZyB0aGF0Cit3ZSBjb252ZXJ0ZWQgZnJvbSkuICBGaXggZW5kaWFubmVzcyBvZiB0aGUgdmNudW0gZmllbGQgdXNlZCBkdXJpbmcKK3Nlc3Npb24gc2V0dXAgdG8gZGlzdGluZ3Vpc2ggbXVsdGlwbGUgbW91bnRzIHRvIHNhbWUgc2VydmVyIGZyb20gZGlmZmVyZW50Cit1c2VyaWRzLiBSYXcgTlRMTVNTUCBmaXhlZCAoaXQgcmVxdWlyZXMgL3Byb2MvZnMvY2lmcy9leHBlcmltZW50YWwKK2ZsYWcgdG8gYmUgc2V0IHRvIDIsIGFuZCBtb3VudCBtdXN0IGVuYWJsZSBrcmI1IHRvIHR1cm4gb24gZXh0ZW5kZWQgc2VjdXJpdHkpLgorUGVyZm9ybWFuY2Ugb2YgZmlsZSBjcmVhdGUgdG8gU2FtYmEgaW1wcm92ZWQgKHBvc2l4IGNyZWF0ZSBvbiBsb29rdXAKK3JlbW92ZXMgMSBvZiAyIG5ldHdvcmsgcmVxdWVzdHMgc2VudCBvbiBmaWxlIGNyZWF0ZSkKKyAKK1ZlcnNpb24gMS41NworLS0tLS0tLS0tLS0tCitJbXByb3ZlIHN1cHBvcnQgZm9yIG11bHRpcGxlIHNlY3VyaXR5IGNvbnRleHRzIHRvIHRoZSBzYW1lIHNlcnZlci4gV2UKK3VzZWQgdG8gdXNlIHRoZSBzYW1lICJ2Y251bWJlciIgZm9yIGFsbCBjb25uZWN0aW9ucyB3aGljaCBjb3VsZCBjYXVzZQordGhlIHNlcnZlciB0byB0cmVhdCBzdWJzZXF1ZW50IGNvbm5lY3Rpb25zLCBlc3BlY2lhbGx5IHRob3NlIHRoYXQKK2FyZSBhdXRoZW50aWNhdGVkIGFzIGd1ZXN0LCBhcyByZWNvbm5lY3Rpb25zLCBpbnZhbGlkYXRpbmcgdGhlIGVhcmxpZXIKK3VzZXIncyBzbWIgc2Vzc2lvbi4gIFRoaXMgZml4IGFsbG93cyBjaWZzIHRvIG1vdW50IG11bHRpcGxlIHRpbWVzIHRvIHRoZQorc2FtZSBzZXJ2ZXIgd2l0aCBkaWZmZXJlbnQgdXNlcmlkcyB3aXRob3V0IHJpc2tpbmcgaW52YWxpZGF0aW5nIGVhcmxpZXIKK2VzdGFibGlzaGVkIHNlY3VyaXR5IGNvbnRleHRzLiAgZnN5bmMgbm93IHNlbmRzIFNNQiBGbHVzaCBvcGVyYXRpb24KK3RvIGJldHRlciBlbnN1cmUgdGhhdCB3ZSB3YWl0IGZvciBzZXJ2ZXIgdG8gd3JpdGUgYWxsIG9mIHRoZSBkYXRhIHRvCitzZXJ2ZXIgZGlzayAobm90IGp1c3Qgd3JpdGUgaXQgb3ZlciB0aGUgbmV0d29yaykuICBBZGQgbmV3IG1vdW50CitwYXJhbWV0ZXIgdG8gYWxsb3cgdXNlciB0byBkaXNhYmxlIHNlbmRpbmcgdGhlIChzbG93KSBTTUIgZmx1c2ggb24KK2ZzeW5jIGlmIGRlc2lyZWQgKGZzeW5jIHN0aWxsIGZsdXNoZXMgYWxsIGNhY2hlZCB3cml0ZSBkYXRhIHRvIHRoZSBzZXJ2ZXIpLgorUG9zaXggZmlsZSBvcGVuIHN1cHBvcnQgYWRkZWQgKHR1cm5lZCBvZmYgYWZ0ZXIgb25lIGF0dGVtcHQgaWYgc2VydmVyCitmYWlscyB0byBzdXBwb3J0IGl0IHByb3Blcmx5LCBhcyB3aXRoIFNhbWJhIHNlcnZlciB2ZXJzaW9ucyBwcmlvciB0byAzLjMuMikKK0ZpeCAicmVkem9uZSBvdmVyd3JpdHRlbiIgYnVnIGluIGNpZnNfcHV0X3Rjb24gKENJRlNUY29uIG1heSBhbGxvY2F0ZSB0b28KK2xpdHRsZSBtZW1vcnkgZm9yIHRoZSAibmF0aXZlRmlsZVN5c3RlbSIgZmllbGQgcmV0dXJuZWQgYnkgdGhlIHNlcnZlcgorZHVyaW5nIG1vdW50KS4gIEVuZGlhbiBjb252ZXJ0IGlub2RlIG51bWJlcnMgaWYgbmVjZXNzYXJ5IChtYWtlcyBpdCBlYXNpZXIKK3RvIGNvbXBhcmUgaW5vZGUgbnVtYmVycyBvbiBuZXR3b3JrIGZpbGVzIGZyb20gYmlnIGVuZGlhbiBzeXN0ZW1zKS4gCisKK1ZlcnNpb24gMS41NgorLS0tLS0tLS0tLS0tCitBZGQgImZvcmNlbWFuZGF0b3J5bG9jayIgbW91bnQgb3B0aW9uIHRvIGFsbG93IHVzZXIgdG8gdXNlIG1hbmRhdG9yeQorcmF0aGVyIHRoYW4gcG9zaXggKGFkdmlzb3J5KSBieXRlIHJhbmdlIGxvY2tzLCBldmVuIHRob3VnaCBzZXJ2ZXIgd291bGQKK3N1cHBvcnQgcG9zaXggYnl0ZSByYW5nZSBsb2Nrcy4gIEZpeCBxdWVyeSBvZiByb290IGlub2RlIHdoZW4gcHJlZml4cGF0aAorc3BlY2lmaWVkIGFuZCB1c2VyIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHF1ZXJ5IGluZm9ybWF0aW9uIGFib3V0IHRoZQordG9wIG9mIHRoZSBzaGFyZS4gIEZpeCBwcm9ibGVtIGluIDIuNi4yOCByZXNvbHZpbmcgREZTIHBhdGhzIHRvCitTYW1iYSBzZXJ2ZXJzICh3b3JrZWQgdG8gV2luZG93cykuICBGaXggcm1kaXIgc28gdGhhdCBwZW5kaW5nIHNlYXJjaAorKHJlYWRkaXIpIHJlcXVlc3RzIGRvIG5vdCBnZXQgaW52YWxpZCByZXN1bHRzIHdoaWNoIGluY2x1ZGUgdGhlIG5vdworcmVtb3ZlZCBkaXJlY3RvcnkuICBGaXggb29wcyBpbiBjaWZzX2Rmc19yZWYuYyB3aGVuIHByZWZpeHBhdGggaXMgbm90IHJlYWNoYWJsZQord2hlbiB1c2luZyBERlMuICBBZGQgYmV0dGVyIGZpbGUgY3JlYXRlIHN1cHBvcnQgdG8gc2VydmVycyB3aGljaCBzdXBwb3J0Cit0aGUgQ0lGUyBQT1NJWCBwcm90b2NvbCBleHRlbnNpb25zICh0aGlzIGFkZHMgc3VwcG9ydCBmb3IgbmV3IGZsYWdzCitvbiBjcmVhdGUsIGFuZCBpbXByb3ZlcyBzZW1hbnRpY3MgZm9yIHdyaXRlIG9mIGxvY2tlZCByYW5nZXMpLgorCitWZXJzaW9uIDEuNTUKKy0tLS0tLS0tLS0tLQorVmFyaW91cyBmaXhlcyB0byBtYWtlIGRlbGV0ZSBvZiBvcGVuIGZpbGVzIGJlaGF2aW9yIG1vcmUgcHJlZGljdGFibGUKKyh3aGVuIGRlbGV0ZSBvZiBhbiBvcGVuIGZpbGUgZmFpbHMgd2UgbWFyayB0aGUgZmlsZSBhcyAiZGVsZXRlLW9uLWNsb3NlIgoraW4gYSB3YXkgdGhhdCBtb3JlIHNlcnZlcnMgYWNjZXB0LCBidXQgb25seSBpZiB3ZSBjYW4gZmlyc3QgcmVuYW1lIHRoZQorZmlsZSB0byBhIHRlbXBvcmFyeSBuYW1lKS4gIEFkZCBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgbW9yZSBzYWZlbHkKK2hhbmRsaW5nIGZjbnRsKEZfU0VUTEVBU0UpLiAgQ29udmVydCBjaWZzIHRvIHVzaW5nIGJsb2NraW5nIHRjcAorc2VuZHMsIGFuZCBhbHNvIGxldCB0Y3AgYXV0b3R1bmUgdGhlIHNvY2tldCBzZW5kIGFuZCByZWNlaXZlIGJ1ZmZlcnMuCitUaGlzIHJlZHVjZXMgdGhlIG51bWJlciBvZiBFQUdBSU4gZXJyb3JzIHJldHVybmVkIGJ5IFRDUC9JUCBpbgoraGlnaCBzdHJlc3Mgd29ya2xvYWRzIChhbmQgdGhlIG51bWJlciBvZiByZXRyaWVzIG9uIHNvY2tldCB3cml0ZXMKK3doZW4gc2VuZGluZyBsYXJnZSBTTUJXcml0ZVggcmVxdWVzdHMpLiAgRml4IGNhc2UgaW4gd2hpY2ggYSBwb3J0aW9uIG9mCitkYXRhIGNhbiBpbiBzb21lIGNhc2VzIG5vdCBnZXQgd3JpdHRlbiB0byB0aGUgZmlsZSBvbiB0aGUgc2VydmVyIGJlZm9yZSB0aGUKK2ZpbGUgaXMgY2xvc2VkLiAgRml4IERGUyBwYXJzaW5nIHRvIHByb3Blcmx5IGhhbmRsZSBwYXRoIGNvbnN1bWVkIGZpZWxkLAorYW5kIHRvIGhhbmRsZSBjZXJ0YWluIGNvZGVwYWdlIGNvbnZlcnNpb25zIGJldHRlci4gIEZpeCBtb3VudCBhbmQKK3Vtb3VudCByYWNlIHRoYXQgY2FuIGNhdXNlIG9vcHMgaW4gbW91bnQgb3IgdW1vdW50IG9yIHJlY29ubmVjdC4KKworVmVyc2lvbiAxLjU0CistLS0tLS0tLS0tLS0KK0ZpeCBwcmVtYXR1cmUgd3JpdGUgZmFpbHVyZSBvbiBjb25nZXN0ZWQgbmV0d29ya3MgKHdlIHdvdWxkIGdpdmUgdXAKK29uIEVBR0FJTiBmcm9tIHRoZSBzb2NrZXQgdG9vIHF1aWNrbHkgb24gbGFyZ2Ugd3JpdGVzKS4KK0NpZnNfbWtkaXIgYW5kIGNpZnNfY3JlYXRlIG5vdyByZXNwZWN0IHRoZSBzZXRnaWQgYml0IG9uIHBhcmVudCBkaXIuCitGaXggZW5kaWFuIHByb2JsZW1zIGluIGFjbCAobW9kZSBmcm9tL3RvIGNpZnMgYWNsKSBvbiBiaWdlbmRpYW4KK2FyY2hpdGVjdHVyZXMuICBGaXggcHJvYmxlbXMgd2l0aCBwcmVzZXJ2aW5nIHRpbWVzdGFtcHMgb24gY29weWluZyBvcGVuCitmaWxlcyAoZS5nLiAiY3AgLWEiKSB0byBXaW5kb3dzIHNlcnZlcnMuICBGb3IgbWtkaXIgYW5kIGNyZWF0ZSBob25vciBzZXRnaWQgYml0CitvbiBwYXJlbnQgZGlyZWN0b3J5IHdoZW4gc2VydmVyIHN1cHBvcnRzIFVuaXggRXh0ZW5zaW9ucyBidXQgbm90IFBPU0lYCitjcmVhdGUuIFVwZGF0ZSBjaWZzLnVwY2FsbCB2ZXJzaW9uIHRvIGhhbmRsZSBuZXcgS2VyYmVyb3Mgc2VjIGZsYWdzCisodGhpcyByZXF1aXJlcyB1cGRhdGUgb2YgY2lmcy51cGNhbGwgcHJvZ3JhbSBmcm9tIFNhbWJhKS4gIEZpeCBtZW1vcnkgbGVhaworb24gZG5zX3VwY2FsbCAocmVzb2x2aW5nIERGUyByZWZlcnJhbGxzKS4gIEZpeCBwbGFpbiB0ZXh0IHBhc3N3b3JkCithdXRoZW50aWNhdGlvbiAocmVxdWlyZXMgc2V0dGluZyBTZWN1cml0eUZsYWdzIHRvIDB4MzAwMzAgdG8gZW5hYmxlCitsYW5tYW4gYW5kIHBsYWluIHRleHQgdGhvdWdoKS4gIEZpeCB3cml0ZXMgdG8gYmUgYXQgY29ycmVjdCBvZmZzZXQgd2hlbgorZmlsZSBpcyBvcGVuIHdpdGggT19BUFBFTkQgYW5kIGZpbGUgaXMgb24gYSBkaXJlY3RpbyAoZm9yY2VkaXJldGlvKSBtb3VudC4KK0ZpeCBidWcgaW4gcmV3aW5kaW5nIHJlYWRkaXIgZGlyZWN0b3J5IHNlYXJjaGVzLiAgQWRkIG5vZGZzIG1vdW50IG9wdGlvbi4KKworVmVyc2lvbiAxLjUzCistLS0tLS0tLS0tLS0KK0RGUyBzdXBwb3J0IGFkZGVkIChNaWNyb3NvZnQgRGlzdHJpYnV0ZWQgRmlsZSBTeXN0ZW0gY2xpZW50IHN1cHBvcnQgbmVlZGVkCitmb3IgcmVmZXJyYWxzIHdoaWNoIGVuYWJsZSBhIGhpZXJhcmNoaWNhbCBuYW1lIHNwYWNlIGFtb25nIHNlcnZlcnMpLgorRGlzYWJsZSB0ZW1wb3JhcnkgY2FjaGluZyBvZiBtb2RlIGJpdHMgdG8gc2VydmVycyB3aGljaCBkbyBub3Qgc3VwcG9ydAorc3RvcmluZyBvZiBtb2RlIChlLmcuIFdpbmRvd3Mgc2VydmVycywgd2hlbiBjbGllbnQgbW91bnRzIHdpdGhvdXQgY2lmc2FjbAorbW91bnQgb3B0aW9uKSBhbmQgYWRkIG5ldyAiZHlucGVybSIgbW91bnQgb3B0aW9uIHRvIGVuYWJsZSB0ZW1wb3JhcnkgY2FjaGluZworb2YgbW9kZSAoZW5hYmxlIG9sZCBiZWhhdmlvcikuICBGaXggaGFuZyBvbiBtb3VudCBjYXVzZWQgd2hlbiBzZXJ2ZXIgY3Jhc2hlcwordGNwIHNlc3Npb24gZHVyaW5nIG5lZ290aWF0ZSBwcm90b2NvbC4KKworVmVyc2lvbiAxLjUyCistLS0tLS0tLS0tLS0KK0ZpeCBvb3BzIG9uIHNlY29uZCBtb3VudCB0byBzZXJ2ZXIgd2hlbiBudWxsIGF1dGggaXMgdXNlZC4KK0VuYWJsZSBleHBlcmltZW50YWwgS2VyYmVyb3Mgc3VwcG9ydC4gIFJldHVybiB3cml0ZWJlaGluZCBlcnJvcnMgb24gZmx1c2gKK2FuZCBzeW5jIHNvIHRoYXQgZXZlbnRzIGxpa2Ugb3V0IG9mIGRpc2sgc3BhY2UgZ2V0IHJlcG9ydGVkIHByb3Blcmx5IG9uCitjYWNoZWQgZmlsZXMuIEZpeCBzZXR4YXR0ciBmYWlsdXJlIHRvIGNlcnRhaW4gU2FtYmEgdmVyc2lvbnMuIEZpeCBtb3VudAorb2Ygc2Vjb25kIHNoYXJlIHRvIGRpc2Nvbm5lY3RlZCBzZXJ2ZXIgc2Vzc2lvbiAoYXV0b3JlY29ubmVjdCBvbiB0aGlzKS4KK0FkZCBhYmlsaXR5IHRvIG1vZGlmeSBjaWZzIGFjbHMgZm9yIGhhbmRsaW5nIGNobW9kICh3aGVuIG1vdW50ZWQgd2l0aAorY2lmc2FjbCBmbGFnKS4gRml4IHByZWZpeHBhdGggcGF0aCBzZXBhcmF0b3Igc28gd2UgY2FuIGhhbmRsZSBtb3VudHMKK3dpdGggcHJlZml4cGF0aHMgbG9uZ2VyIHRoYW4gb25lIGRpcmVjdG9yeSAob25lIHBhdGggY29tcG9uZW50KSB3aGVuCittb3VudGVkIHRvIFdpbmRvd3Mgc2VydmVycy4gIEZpeCBzbG93IGZpbGUgb3BlbiB3aGVuIGNpZnNhY2wKK2VuYWJsZWQuIEZpeCBtZW1vcnkgbGVhayBpbiBGaW5kTmV4dCB3aGVuIHRoZSBTTUIgY2FsbCByZXR1cm5zIC1FQkFERi4KKworCitWZXJzaW9uIDEuNTEKKy0tLS0tLS0tLS0tLQorRml4IG1lbW9yeSBsZWFrIGluIHN0YXRmcyB3aGVuIG1vdW50ZWQgdG8gdmVyeSBvbGQgc2VydmVycyAoZS5nLgorV2luZG93cyA5eCkuICBBZGQgbmV3IGZlYXR1cmUgIlBPU0lYIG9wZW4iIHdoaWNoIGFsbG93cyBzZXJ2ZXJzCit3aGljaCBzdXBwb3J0IHRoZSBjdXJyZW50IFBPU0lYIEV4dGVuc2lvbnMgdG8gcHJvdmlkZSBiZXR0ZXIgc2VtYW50aWNzCisoZS5nLiBkZWxldGUgZm9yIG9wZW4gZmlsZXMgb3BlbmVkIHdpdGggcG9zaXggb3BlbikuICBUYWtlIGludG8KK2FjY291bnQgdW1hc2sgb24gcG9zaXggbWtkaXIgbm90IGp1c3Qgb2xkZXIgc3R5bGUgbWtkaXIuICBBZGQKK2FiaWxpdHkgdG8gbW91bnQgdG8gSVBDJCBzaGFyZSAod2hpY2ggYWxsb3dzIENJRlMgbmFtZWQgcGlwZXMgdG8gYmUKK29wZW5lZCwgcmVhZCBhbmQgd3JpdHRlbiBhcyBpZiB0aGV5IHdlcmUgZmlsZXMpLiAgV2hlbiAxc3QgdHJlZQorY29ubmVjdCBmYWlscyAoZS5nLiBkdWUgdG8gc2lnbmluZyBuZWdvdGlhdGlvbiBmYWlsdXJlKSBmaXgKK2xlYWsgdGhhdCBjYXVzZXMgY2lmc2Qgbm90IHRvIHN0b3AgYW5kIHJtbW9kIHRvIGZhaWwgdG8gY2xlYW51cAorY2lmc19yZXF1ZXN0X2J1ZmZlcnMgcG9vbC4gRml4IHByb2JsZW0gd2l0aCBQT1NJWCBPcGVuL01rZGlyIG9uCitiaWdlbmRpYW4gYXJjaGl0ZWN0dXJlcy4gRml4IHBvc3NpYmxlIG1lbW9yeSBjb3JydXB0aW9uIHdoZW4KK0VBR0FJTiByZXR1cm5lZCBvbiBrZXJuX3JlY3Ztc2cuIFJldHVybiBiZXR0ZXIgZXJyb3IgaWYgc2VydmVyCityZXF1aXJlcyBwYWNrZXQgc2lnbmluZyBidXQgY2xpZW50IGhhcyBkaXNhYmxlZCBpdC4gV2hlbiBtb3VudGVkCit3aXRoIGNpZnNhY2wgbW91bnQgb3B0aW9uIC0gbW9kZSBiaXRzIGFyZSBhcHByb3hpbWF0ZWQgYmFzZWQKK29uIHRoZSBjb250ZW50cyBvZiB0aGUgQUNMIG9mIHRoZSBmaWxlIG9yIGRpcmVjdG9yeS4gV2hlbiBjaWZzCittb3VudCBoZWxwZXIgaXMgbWlzc2luZyBjb252ZXJ0IG1ha2Ugc3VyZSB0aGF0IFVOQyBuYW1lIAoraGFzIGJhY2tzbGFzaCAobm90IGZvcndhcmQgc2xhc2gpIGJldHdlZW4gaXAgYWRkcmVzcyBvZiBzZXJ2ZXIKK2FuZCB0aGUgc2hhcmUgbmFtZS4KKworVmVyc2lvbiAxLjUwCistLS0tLS0tLS0tLS0KK0ZpeCBOVExNdjIgc2lnbmluZy4gTkZTIHNlcnZlciBtb3VudGVkIG92ZXIgY2lmcyB3b3JrcyAoaWYgY2lmcyBtb3VudCBpcworZG9uZSB3aXRoICJzZXJ2ZXJpbm8iIG1vdW50IG9wdGlvbikuICBBZGQgc3VwcG9ydCBmb3IgUE9TSVggVW5saW5rCisoaGVscHMgd2l0aCBjZXJ0YWluIHNoYXJpbmcgdmlvbGF0aW9uIGNhc2VzIHdoZW4gc2VydmVyIHN1Y2ggYXMKK1NhbWJhIHN1cHBvcnRzIG5ld2VyIFBPU0lYIENJRlMgUHJvdG9jb2wgRXh0ZW5zaW9ucykuIEFkZCAibm91bml4IgorbW91bnQgb3B0aW9uIHRvIGFsbG93IGRpc2FibGluZyB0aGUgQ0lGUyBVbml4IEV4dGVuc2lvbnMgZm9yIGp1c3QKK3RoYXQgbW91bnQuIEZpeCBoYW5nIG9uIHNwaW5sb2NrIGluIGZpbmRfd3JpdGFibGVfZmlsZSAocmFjZSB3aGVuCityZW9wZW5pbmcgZmlsZSBhZnRlciBzZXNzaW9uIGNyYXNoKS4gIEJ5dGUgcmFuZ2UgdW5sb2NrIHJlcXVlc3QgdG8KK3dpbmRvd3Mgc2VydmVyIGNvdWxkIHVubG9jayBtb3JlIGJ5dGVzIChvbiBzZXJ2ZXIgY29weSBvZiBmaWxlKQordGhhbiBpbnRlbmRlZCBpZiBzdGFydCBvZiB1bmxvY2sgcmVxdWVzdCBpcyB3ZWxsIGJlZm9yZSBzdGFydCBvZgorYSBwcmV2aW91cyBieXRlIHJhbmdlIGxvY2sgdGhhdCB3ZSBpc3N1ZWQuCisKK1ZlcnNpb24gMS40OQorLS0tLS0tLS0tLS0tCitJUHY2IHN1cHBvcnQuICBFbmFibGUgaXB2NiBhZGRyZXNzZXMgdG8gYmUgcGFzc2VkIG9uIG1vdW50IChwdXQgdGhlIGlwdjYKK2FkZHJlc3MgYWZ0ZXIgdGhlICJpcD0iIG1vdW50IG9wdGlvbiwgYXQgbGVhc3QgdW50aWwgbW91bnQuY2lmcyBpcyBmaXhlZCB0bworaGFuZGxlIEROUyBob3N0IHRvIGlwdjYgbmFtZSB0cmFuc2xhdGlvbikuICBBY2NlcHQgb3ZlcnJpZGUgb2YgdWlkIG9yIGdpZAorb24gbW91bnQgZXZlbiB3aGVuIFVuaXggRXh0ZW5zaW9ucyBhcmUgbmVnb3RpYXRlZCAoaXQgdXNlZCB0byBiZSBpZ25vcmVkCit3aGVuIFVuaXggRXh0ZW5zaW9ucyB3ZXJlIGlnbm9yZWQpLiAgVGhpcyBhbGxvd3MgdXNlcnMgdG8gb3ZlcnJpZGUgdGhlCitkZWZhdWx0IHVpZCBhbmQgZ2lkIGZvciBmaWxlcyB3aGVuIHRoZXkgYXJlIGNlcnRhaW4gdGhhdCB0aGUgdWlkcyBvcgorZ2lkcyBvbiB0aGUgc2VydmVyIGRvIG5vdCBtYXRjaCB0aG9zZSBvZiB0aGUgY2xpZW50LiAgTWFrZSAic2VjPW5vbmUiCittb3VudCBvdmVycmlkZSB1c2VybmFtZSAoc28gdGhhdCBudWxsIHVzZXIgY29ubmVjdGlvbiBpcyBhdHRlbXB0ZWQpCit0byBtYXRjaCB3aGF0IGRvY3VtZW50YXRpb24gc2FpZC4gU3VwcG9ydCBmb3IgdmVyeSBsYXJnZSByZWFkcywgb3ZlciAxMjdLLAorYXZhaWxhYmxlIHRvIHNvbWUgbmV3ZXIgc2VydmVycyAoc3VjaCBhcyBTYW1iYSAzLjAuMjYgYW5kIGxhdGVyIGJ1dAorbm90ZSB0aGF0IGl0IGFsc28gcmVxdWlyZXMgc2V0dGluZyBDSUZTTWF4QnVmU2l6ZSBhdCBtb2R1bGUgaW5zdGFsbAordGltZSB0byBhIGxhcmdlciB2YWx1ZSB3aGljaCBtYXkgaHVydCBwZXJmb3JtYW5jZSBpbiBzb21lIGNhc2VzKS4KK01ha2Ugc2lnbiBvcHRpb24gZm9yY2Ugc2lnbmluZyAob3IgZmFpbCBpZiBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBpdCkuCisKK1ZlcnNpb24gMS40OAorLS0tLS0tLS0tLS0tCitGaXggbXRpbWUgYm91bmNpbmcgYXJvdW5kIGZyb20gbG9jYWwgaWRlYSBvZiBsYXN0IHdyaXRlIHRpbWVzIHRvIHJlbW90ZSB0aW1lLgorRml4IGhhbmcgKGluIGlfc2l6ZV9yZWFkKSB3aGVuIHNpbXVsdGFuZW91cyBzaXplIHVwZGF0ZSBvZiBzYW1lIHJlbW90ZSBmaWxlCitvbiBzbXAgc3lzdGVtIGNvcnJ1cHRzIHNlcXVlbmNlIG51bWJlci4gRG8gbm90IHJlcmVhZCB1bm5lY2Vzc2FyaWx5IHBhcnRpYWwgcGFnZQorKHdoaWNoIHdlIGFyZSBhYm91dCB0byBvdmVyd3JpdGUgYW55d2F5KSB3aGVuIHdyaXRpbmcgb3V0IGZpbGUgb3BlbmVkIHJ3LgorV2hlbiBET1MgYXR0cmlidXRlIG9mIGZpbGUgb24gbm9uLVVuaXggc2VydmVyJ3MgZmlsZSBjaGFuZ2VzIG9uIHRoZSBzZXJ2ZXIgc2lkZQorZnJvbSByZWFkLW9ubHkgYmFjayB0byByZWFkLXdyaXRlLCByZWZsZWN0IHRoaXMgY2hhbmdlIGluIGRlZmF1bHQgZmlsZSBtb2RlCisod2UgaGFkIGJlZW4gbGVhdmluZyBhIGZpbGUncyBtb2RlIHJlYWQtb25seSB1bnRpbCB0aGUgaW5vZGUgd2VyZSByZWxvYWRlZCkuCitBbGxvdyBzZXR0aW5nIG9mIGF0dHJpYnV0ZSBiYWNrIHRvIEFUVFJfTk9STUFMIChyZW1vdmluZyByZWFkb25seSBkb3MgYXR0cmlidXRlCit3aGVuIGFyY2hpdmUgZG9zIGF0dHJpYnV0ZSBub3Qgc2V0IGFuZCB3ZSBhcmUgY2hhbmdpbmcgbW9kZSBiYWNrIHRvIHdyaXRlYWJsZQorb24gc2VydmVyIHdoaWNoIGRvZXMgbm90IHN1cHBvcnQgdGhlIFVuaXggRXh0ZW5zaW9ucykuICBSZW1vdmUgcmVhZCBvbmx5IGRvcworYXR0cmlidXRlIG9uIGNobW9kIHdoZW4gYWRkaW5nIGFueSB3cml0ZSBwZXJtaXNzaW9uIChpZSBvbiBhbnkgb2YKK3VzZXIvZ3JvdXAvb3RoZXIgKG5vdCBhbGwgb2YgdXNlci9ncm91cC9vdGhlciBpZSAgMDIyMikgd2hlbgorbW91bnRlZCB0byB3aW5kb3dzLiAgQWRkIHN1cHBvcnQgZm9yIFBPU0lYIE1rRGlyIChzbGlnaHQgcGVyZm9ybWFuY2UKK2VuaGFuY2VtZW50IGFuZCBlbGltaW5hdGVzIHRoZSBuZXR3b3JrIHJhY2UgYmV0d2VlbiB0aGUgbWtkaXIgYW5kIHNldCAKK3BhdGggaW5mbyBvZiB0aGUgbW9kZSkuCisKKworVmVyc2lvbiAxLjQ3CistLS0tLS0tLS0tLS0KK0ZpeCBvb3BzIGluIGxpc3RfZGVsIGR1cmluZyBtb3VudCBjYXVzZWQgYnkgdW5hbGlnbmVkIHN0cmluZy4KK0ZpeCBmaWxlIGNvcnJ1cHRpb24gd2hpY2ggY291bGQgb2NjdXIgb24gc29tZSBsYXJnZSBmaWxlCitjb3BpZXMgY2F1c2VkIGJ5IHdyaXRlcGFnZXMgcGFnZSBpL28gY29tcGxldGlvbiBidWcuCitTZWVrIHRvIFNFRUtfRU5EIGZvcmNlcyBjaGVjayBmb3IgdXBkYXRlIG9mIGZpbGUgc2l6ZSBmb3Igbm9uLWNhY2hlZAorZmlsZXMuIEFsbG93IGZpbGUgc2l6ZSB0byBiZSB1cGRhdGVkIG9uIHJlbW90ZSBleHRlbmQgb2YgbG9jYWxseSBvcGVuLAorbm9uLWNhY2hlZCBmaWxlLiAgRml4IHJlY29ubmVjdCB0byBuZXdlciBTYW1iYSBzZXJ2ZXJzIChvciBvdGhlciBzZXJ2ZXJzCit3aGljaCBzdXBwb3J0IHRoZSBDSUZTIFVuaXgvUE9TSVggZXh0ZW5zaW9ucykgc28gdGhhdCB3ZSBhZ2FpbiB0ZWxsIHRoZQorc2VydmVyIHRoZSBVbml4L1BPU0lYIGNpZnMgY2FwYWJpbGl0aWVzIHdoaWNoIHdlIHN1cHBvcnQgKFNldEZTSW5mbykuCitBZGQgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIG5ldyBQT1NJWCBPcGVuL01rZGlyICh3aGljaCByZXR1cm5zCitzdGF0IGluZm9ybWF0aW9uIG9uIHRoZSBvcGVuLCBhbmQgYWxsb3dzIHNldHRpbmcgdGhlIG1vZGUpLgorCitWZXJzaW9uIDEuNDYKKy0tLS0tLS0tLS0tLQorU3VwcG9ydCBkZWVwIHRyZWUgbW91bnRzLiAgQmV0dGVyIHN1cHBvcnQgT1MvMiwgV2luOXggKERPUykgdGltZSBzdGFtcHMuCitBbGxvdyBudWxsIHVzZXIgdG8gYmUgc3BlY2lmaWVkIG9uIG1vdW50ICgidXNlcm5hbWU9IikuIERvIG5vdCByZXR1cm4KK0VJTlZBTCBvbiByZWFkZGlyIHdoZW4gZmlsbGRpciBmYWlscyBkdWUgdG8gb3ZlcndyaXR0ZW4gYmxvY2tzaXplCisoZml4ZXMgRkMgcHJvYmxlbSkuICBSZXR1cm4gZXJyb3IgaW4gcmVuYW1lIDJuZCBhdHRlbXB0IHJldHJ5IChpZSByZXBvcnQKK2lmIHJlbmFtZSBieSBoYW5kbGUgYWxzbyBmYWlscywgYWZ0ZXIgcmVuYW1lIGJ5IHBhdGggZmFpbHMsIHdlIHdlcmUKK25vdCByZXBvcnRpbmcgd2hldGhlciB0aGUgcmV0cnkgd29ya2VkIG9yIG5vdCkuIEZpeCBOVExNdjIgdG8KK3dvcmsgdG8gV2luZG93cyBzZXJ2ZXJzIChtb3VudCB3aXRoIG9wdGlvbiAic2VjPW50bG12MiIpLgorCitWZXJzaW9uIDEuNDUKKy0tLS0tLS0tLS0tLQorRG8gbm90IHRpbWUgb3V0IGxvY2t3IGNhbGxzIHdoZW4gdXNpbmcgcG9zaXggZXh0ZW5zaW9ucy4gRG8gbm90Cit0aW1lIG91dCByZXF1ZXN0cyBpZiBzZXJ2ZXIgc3RpbGwgcmVzcG9uZGluZyByZWFzb25hYmx5IGZhc3QKK29uIHJlcXVlc3RzIG9uIG90aGVyIHRocmVhZHMuICBJbXByb3ZlIFBPU0lYIGxvY2tpbmcgZW11bGF0aW9uLAorKGxvY2sgY2FuY2VsIG5vdyB3b3JrcywgYW5kIHVubG9jayBvZiBtZXJnZWQgcmFuZ2Ugd29ya3MgZXZlbgordG8gV2luZG93cyBzZXJ2ZXJzIG5vdykuICBGaXggb29wcyBvbiBtb3VudCB0byBsYW5tYW4gc2VydmVycworKHdpbjl4LCBvcy8yIGV0Yy4pIHdoZW4gbnVsbCBwYXNzd29yZC4gIERvIG5vdCBzZW5kIGxpc3R4YXR0cgorKFNNQiB0byBxdWVyeSBhbGwgRUFzKSBpZiBub3VzZXJfeGF0dHIgc3BlY2lmaWVkLiAgRml4IFNFIExpbnV4Citwcm9ibGVtIChpbnN0YW50aWF0ZSBpbm9kZXMvZGVudHJpZXMgaW4gcmlnaHQgb3JkZXIgZm9yIHJlYWRkaXIpLgorCitWZXJzaW9uIDEuNDQKKy0tLS0tLS0tLS0tLQorUmV3cml0dGVuIHNlc3Npb25zZXR1cCBzdXBwb3J0LCBpbmNsdWRpbmcgc3VwcG9ydCBmb3IgbGVnYWN5IFNNQgorc2Vzc2lvbiBzZXR1cCBuZWVkZWQgZm9yIE9TLzIgYW5kIG9sZGVyIHNlcnZlcnMgc3VjaCBhcyBXaW5kb3dzIDk1IGFuZCA5OC4KK0ZpeCBvb3BzIG9uIGxzIHRvIE9TLzIgc2VydmVycy4gIEFkZCBzdXBwb3J0IGZvciBsZXZlbCAxIEZpbmRGaXJzdAorc28gd2UgY2FuIGRvIHNlYXJjaCAobHMgZXRjLikgdG8gT1MvMi4gIERvIG5vdCBzZW5kIE5UQ3JlYXRlWAorb3IgcmVjZW50IGxldmVscyBvZiBGaW5kRmlyc3QgdW5sZXNzIHNlcnZlciBzYXlzIGl0IHN1cHBvcnRzIE5UIFNNQnMKKyhpbnN0ZWFkIHVzZSBsZWdhY3kgZXF1aXZhbGVudHMgZnJvbSBMQU5NQU4gZGlhbGVjdCkuIEZpeCB0byBhbGxvdworTlRMTXYyIGF1dGhlbnRpY2F0aW9uIHN1cHBvcnQgKG5vdyBjYW4gdXNlIHN0cm9uZ2VyIHBhc3N3b3JkIGhhc2hpbmcKK29uIG1vdW50IGlmIGNvcnJlc3BvbmRpbmcgL3Byb2MvZnMvY2lmcy9TZWN1cml0eUZsYWdzIGlzIHNldCAoMHg0MDA0KS4KK0FsbG93IG92ZXJyaWRlIG9mIGdsb2JhbCBjaWZzIHNlY3VyaXR5IGZsYWdzIG9uIG1vdW50IHZpYSAic2VjPSIgb3B0aW9uKHMpLgorCitWZXJzaW9uIDEuNDMKKy0tLS0tLS0tLS0tLQorUE9TSVggbG9ja2luZyB0byBzZXJ2ZXJzIHdoaWNoIHN1cHBvcnQgQ0lGUyBQT1NJWCBFeHRlbnNpb25zCisoZGlzYWJsZWQgYnkgZGVmYXVsdCBjb250cm9sbGVkIGJ5IHByb2MvZnMvY2lmcy9FeHBlcmltZW50YWwpLgorSGFuZGxlIGNvbnZlcnNpb24gb2YgbG9uZyBzaGFyZSBuYW1lcyAoZXNwZWNpYWxseSBBc2lhbiBsYW5ndWFnZXMpCit0byBVbmljb2RlIGR1cmluZyBtb3VudC4gRml4IG1lbW9yeSBsZWFrIGluIHNlc3Mgc3RydWN0IG9uIHJlY29ubmVjdC4KK0ZpeCByYXJlIG9vcHMgYWZ0ZXIgYWNwaSBzdXNwZW5kLiAgRml4IE9fVFJVTkMgb3BlbnMgdG8gb3ZlcndyaXRlIG9uCitjaWZzIG9wZW4gd2hpY2ggaGVscHMgcmFyZSBjYXNlIHdoZW4gc2V0cGF0aGluZm8gZmFpbHMgb3Igc2VydmVyIGRvZXMKK25vdCBzdXBwb3J0IGl0LiAKKworVmVyc2lvbiAxLjQyCistLS0tLS0tLS0tLS0KK0ZpeCBzbG93IG9wbG9jayBicmVhayB3aGVuIG1vdW50ZWQgdG8gZGlmZmVyZW50IHNlcnZlcnMgYXQgdGhlIHNhbWUgdGltZSBhbmQKK3RoZSB0aWRzIG1hdGNoIGFuZCB3ZSB0cnkgdG8gZmluZCBtYXRjaGluZyBmaWQgb24gd3Jvbmcgc2VydmVyLiBGaXggcmVhZAorbG9vcGluZyB3aGVuIHNpZ25pbmcgcmVxdWlyZWQgYnkgc2VydmVyICgyLjYuMTYga2VybmVsIG9ubHkpLiBGaXggcmVhZGRpcgordnMuIHJlbmFtZSByYWNlIHdoaWNoIGNvdWxkIGNhdXNlIGVhY2ggdG8gaGFuZy4gUmV0dXJuIC4gYW5kIC4uIGV2ZW4KK2lmIHNlcnZlciBkb2VzIG5vdC4gIEFsbG93IHNlYXJjaGVzIHRvIHNraXAgZmlyc3QgdGhyZWUgZW50cmllcyBhbmQKK2JlZ2luIGF0IGFueSBsb2NhdGlvbi4gRml4IG9vcHMgaW4gZmluZF93cml0ZWFibGVfZmlsZS4KKworVmVyc2lvbiAxLjQxCistLS0tLS0tLS0tLS0KK0ZpeCBOVExNdjIgc2VjdXJpdHkgKGNhbiBiZSBlbmFibGVkIGluIC9wcm9jL2ZzL2NpZnMpIHNvIGN1c3RvbWVycyBjYW4KK2NvbmZpZ3VyZSBzdHJvbmdlciBhdXRoZW50aWNhdGlvbi4gIEZpeCBzZnUgc3ltbGlua3Mgc28gdGhleSBjYW4KK2JlIGZvbGxvd2VkIChub3QganVzdCByZWNvZ25pemVkKS4gIEZpeCB3cmFwYXJvdW5kIG9mIGJjYyBvbgorcmVhZCByZXNwb25zZXMgd2hlbiBidWZmZXIgc2l6ZSBvdmVyIDY0SyBhbmQgYWxzbyBmaXggd3JhcCBvZgorbWF4IHNtYiBidWZmZXIgc2l6ZSB3aGVuIENJRlNNYXhCdWZTaXplIG92ZXIgNjRLLiAgRml4IG9vcHMgaW4KK2NpZnNfdXNlcl9yZWFkIGFuZCBjaWZzX3JlYWRwYWdlcyAod2hlbiBFQUdBSU4gb24gc2VuZCBvZiBzbWIKK29uIHNvY2tldCBpcyByZXR1cm5lZCBvdmVyIGFuZCBvdmVyKS4gIEFkZCBQT1NJWCAoYWR2aXNvcnkpIGJ5dGUgcmFuZ2UKK2xvY2tpbmcgc3VwcG9ydCAocmVxdWlyZXMgc2VydmVyIHdpdGggbmV3ZXN0IENJRlMgVU5JWCBFeHRlbnNpb25zCit0byB0aGUgcHJvdG9jb2wgaW1wbGVtZW50ZWQpLiBTbG93IGRvd24gbmVncHJvdCBzbGlnaHRseSBpbiBwb3J0IDEzOQorUkZDMTAwMSBjYXNlIHRvIGdpdmUgc2Vzc2lvbl9pbml0IHRpbWUgb24gYnVnZ3kgc2VydmVycy4KKworVmVyc2lvbiAxLjQwCistLS0tLS0tLS0tLS0KK1VzZSBmc3VpZCAoZnNnaWQpIG1vcmUgY29uc2lzdGVudGx5IGluc3RlYWQgb2YgdWlkIChnaWQpLiBJbXByb3ZlIHBlcmZvcm1hbmNlCitvZiByZWFkcGFnZXMgYnkgZWxpbWluYXRpbmcgb25lIGV4dHJhIG1lbWNweS4gQWxsb3cgdXBkYXRlIG9mIGZpbGUgc2l6ZQorZnJvbSByZW1vdGUgc2VydmVyIGV2ZW4gaWYgZmlsZSBpcyBvcGVuIGZvciB3cml0ZSBhcyBsb25nIGFzIG1vdW50IGlzCitkaXJlY3Rpby4gIFJlY29nbml6ZSBzaGFyZSBtb2RlIHNlY3VyaXR5IGFuZCBzZW5kIE5UTE0gZW5jcnlwdGVkIHBhc3N3b3JkCitvbiB0cmVlIGNvbm5lY3QgaWYgc2hhcmUgbW9kZSBuZWdvdGlhdGVkLgorCitWZXJzaW9uIDEuMzkKKy0tLS0tLS0tLS0tLQorRGVmZXIgY2xvc2Ugb2YgYSBmaWxlIGhhbmRsZSBzbGlnaHRseSBpZiBwZW5kaW5nIHdyaXRlcyBkZXBlbmQgb24gdGhhdCBoYW5kbGUKKyh0aGlzIHJlZHVjZXMgdGhlIEVCQURGIGJhZCBmaWxlIGhhbmRsZSBlcnJvcnMgdGhhdCBjYW4gYmUgbG9nZ2VkIHVuZGVyIGhlYXZ5CitzdHJlc3Mgb24gd3JpdGVzKS4gTW9kaWZ5IGNpZnMgS2NvbmZpZyBvcHRpb25zIHRvIGV4cG9zZSBDT05GSUdfQ0lGU19TVEFUUzIgCitGaXggU0ZVIHN0eWxlIHN5bWxpbmtzIGFuZCBta25vZCBuZWVkZWQgZm9yIHNlcnZlcnMgd2hpY2ggZG8gbm90IHN1cHBvcnQgdGhlCitDSUZTIFVuaXggRXh0ZW5zaW9ucy4gIEZpeCBzZXRmYWNsL2dldGZhY2wgb24gYmlnZW5kaWFuLiBUaW1lb3V0IG5lZ2F0aXZlCitkZW50cmllcyBzbyBmaWxlcyB0aGF0IHRoZSBjbGllbnQgc2VlcyBhcyBkZWxldGVkIGJ1dCB0aGF0IGxhdGVyIGdldCBjcmVhdGVkCitvbiB0aGUgc2VydmVyIHdpbGwgYmUgcmVjb2duaXplZC4gIEFkZCBjbGllbnQgc2lkZSBwZXJtaXNzaW9uIGNoZWNrIG9uIHNldGF0dHIuCitUaW1lb3V0IHN0dWNrIHJlcXVlc3RzIGJldHRlciAod2hlcmUgc2VydmVyIGhhcyBuZXZlciByZXNwb25kZWQgb3Igc2VudCBjb3JydXB0CityZXNwb25zZXMpCisKK1ZlcnNpb24gMS4zOAorLS0tLS0tLS0tLS0tCitGaXggdGNwIHNvY2tldCByZXRyYW5zbWlzc2lvbiB0aW1lb3V0cyAoZS5nLiBvbiBFTk9TUEFDRSBmcm9tIHRoZSBzb2NrZXQpCit0byBiZSBzbWFsbGVyIGF0IGZpcnN0IChidXQgaW5jcmVhc2luZykgc28gbGFyZ2Ugd3JpdGUgcGVyZm9ybWFuY2UgcGVyZm9ybWFuY2UKK292ZXIgR2lnRSBpcyBiZXR0ZXIuICBEbyBub3QgaGFuZyB0aHJlYWQgb24gaWxsZWdhbCBieXRlIHJhbmdlIGxvY2sgcmVzcG9uc2UKK2Zyb20gV2luZG93cyAoV2luZG93cyBjYW4gc2VuZCBhbiBSRkMxMDAxIHNpemUgd2hpY2ggZG9lcyBub3QgbWF0Y2ggc21iIHNpemUpIGJ5CithbGxvd2luZyBhbiBTTUJzIFRDUCBsZW5ndGggdG8gYmUgdXAgdG8gYSBmZXcgYnl0ZXMgbG9uZ2VyIHRoYW4gaXQgc2hvdWxkIGJlLgord3NpemUgYW5kIHJzaXplIGNhbiBub3cgYmUgbGFyZ2VyIHRoYW4gbmVnb3RpYXRlZCBidWZmZXIgc2l6ZSBpZiBzZXJ2ZXIKK3N1cHBvcnRzIGxhcmdlIHJlYWR4L3dyaXRleCwgZXZlbiB3aGVuIGRpcmVjdGlvIG1vdW50IGZsYWcgbm90IHNwZWNpZmllZC4KK1dyaXRlIHNpemUgd2lsbCBpbiBtYW55IGNhc2VzIG5vdyBiZSAxNksgaW5zdGVhZCBvZiA0SyB3aGljaCBncmVhdGx5IGhlbHBzCitmaWxlIGNvcHkgcGVyZm9ybWFuY2Ugb24gbGlnaHRseSBsb2FkZWQgbmV0d29ya3MuICBGaXggb29wcyBpbiBkbm90aWZ5Cit3aGVuIGV4cGVyaW1lbnRhbCBjb25maWcgZmxhZyBlbmFibGVkLiBNYWtlIGNpZnNGWUkgbW9yZSBncmFudWxhci4KKworVmVyc2lvbiAxLjM3CistLS0tLS0tLS0tLS0KK0ZpeCByZWFkZGlyIGNhY2hpbmcgd2hlbiB1bmxpbmsgcmVtb3ZlcyBmaWxlIGluIGN1cnJlbnQgc2VhcmNoIGJ1ZmZlciwKK2FuZCB0aGlzIGlzIGZvbGxvd2VkIGJ5IGEgcmV3aW5kIHNlYXJjaCB0byBqdXN0IGJlZm9yZSB0aGUgZGVsZXRlZCBlbnRyeS4KK0RvIG5vdCBhdHRlbXB0IHRvIHNldCBjdGltZSB1bmxlc3MgYXRpbWUgYW5kL29yIG10aW1lIGNoYW5nZSByZXF1ZXN0ZWQKKyhtb3N0IHNlcnZlcnMgdGhyb3cgaXQgYXdheSBhbnl3YXkpLiBGaXggbGVuZ3RoIGNoZWNrIG9mIHJlY2VpdmVkIHNtYnMKK3RvIGJlIG1vcmUgYWNjdXJhdGUuIEZpeCBiaWcgZW5kaWFuIHByb2JsZW0gd2l0aCBtYXBjaGFycyBtb3VudCBvcHRpb24sCithbmQgd2l0aCBhIGZpZWxkIHJldHVybmVkIGJ5IHN0YXRmcy4KKworVmVyc2lvbiAxLjM2CistLS0tLS0tLS0tLS0KK0FkZCBzdXBwb3J0IGZvciBtb3VudGluZyB0byBvbGRlciBwcmUtQ0lGUyBzZXJ2ZXJzIHN1Y2ggYXMgV2luZG93czl4IGFuZCBNRS4KK0ZvciB0aGVzZSBvbGRlciBzZXJ2ZXJzLCBhZGQgb3B0aW9uIGZvciBwYXNzaW5nIG5ldGJpb3MgbmFtZSBvZiBzZXJ2ZXIgaW4KK29uIG1vdW50IChzZXJ2ZXJuZXRiaW9zbmFtZSkuICBBZGQgc3VzcGVuZCBzdXBwb3J0IGZvciBwb3dlciBtYW5hZ2VtZW50LCB0bworYXZvaWQgY2lmc2QgdGhyZWFkIHByZXZlbnRpbmcgc29mdHdhcmUgc3VzcGVuZCBmcm9tIHdvcmtpbmcuCitBZGQgbW91bnQgb3B0aW9uIGZvciBkaXNhYmxpbmcgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2Ygc2VuZGluZyBieXRlIHJhbmdlIGxvY2sKK3JlcXVlc3RzIHRvIHRoZSBzZXJ2ZXIgKG5lY2Vzc2FyeSBmb3IgY2VydGFpbiBhcHBsaWNhdGlvbnMgd2hpY2ggYnJlYWsgd2l0aAorbWFuZGF0b3J5IGxvY2sgYmVoYXZpb3Igc3VjaCBhcyBFdm9sdXRpb24pLCBhbmQgYWxzbyBtb3VudCBvcHRpb24gZm9yCityZXF1ZXN0aW5nIGNhc2UgaW5zZW5zaXRpdmUgbWF0Y2hpbmcgZm9yIHBhdGggYmFzZWQgcmVxdWVzdHMgKHJlcXVlc3RpbmcKK2Nhc2Ugc2Vuc2l0aXZlIGlzIHRoZSBkZWZhdWx0KS4KKworVmVyc2lvbiAxLjM1CistLS0tLS0tLS0tLS0KK0FkZCB3cml0ZXBhZ2UgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzLiAgRml4IHBhdGggbmFtZSBjb252ZXJzaW9ucworZm9yIGxvbmcgZmlsZW5hbWVzIG9uIG1vdW50cyB3aGljaCB3ZXJlIGRvbmUgd2l0aCAibWFwY2hhcnMiIG1vdW50IG9wdGlvbgorc3BlY2lmaWVkLiAgRW5zdXJlIG11bHRpcGxleCBpZHMgZG8gbm90IGNvbGxpZGUuICBGaXggY2FzZSBpbiB3aGljaCAKK3JtbW9kIGNhbiBvb3BzIGlmIGRvbmUgc29vbiBhZnRlciBsYXN0IHVubW91bnQuICBGaXggdHJ1bmNhdGVkCitzZWFyY2ggKHJlYWRkaXIpIG91dHB1dCB3aGVuIHJlc3VtZSBmaWxlbmFtZSB3YXMgYSBsb25nIGZpbGVuYW1lLgorRml4IGZpbGVuYW1lIGNvbnZlcnNpb24gd2hlbiBtYXBjaGFycyBtb3VudCBvcHRpb24gd2FzIHNwZWNpZmllZCBhbmQKK2ZpbGVuYW1lIHdhcyBhIGxvbmcgZmlsZW5hbWUuCisKK1ZlcnNpb24gMS4zNAorLS0tLS0tLS0tLS0tCitGaXggZXJyb3IgbWFwcGluZyBvZiB0aGUgVE9PX01BTllfTElOS1MgKGhhcmRsaW5rcykgY2FzZS4KK0RvIG5vdCBvb3BzIGlmIHJvb3QgdXNlciBraWxscyBjaWZzIG9wbG9jayBrZXJuZWwgdGhyZWFkIG9yCitraWxscyB0aGUgY2lmc2QgdGhyZWFkIChOQjoga2lsbGluZyB0aGUgY2lmcyBrZXJuZWwgdGhyZWFkcyBpcyBub3QKK3JlY29tbWVuZGVkLCB1bm1vdW50IGFuZCBybW1vZCBjaWZzIHdpbGwga2lsbCB0aGVtIHdoZW4gdGhleSBhcmUKK25vIGxvbmdlciBuZWVkZWQpLiAgRml4IHJlYWRkaXIgdG8gQVNDSUkgc2VydmVycyAoaWUgb2xkZXIgc2VydmVycword2hpY2ggZG8gbm90IHN1cHBvcnQgVW5pY29kZSkgYW5kIGFsc28gcmVxdWlyZSBhc3Rlcmlzay4KK0ZpeCBvdXQgb2YgbWVtb3J5IGNhc2UgaW4gd2hpY2ggZGF0YSBjb3VsZCBiZSB3cml0dGVuIG9uZSBwYWdlCitvZmYgaW4gdGhlIHBhZ2UgY2FjaGUuCisKK1ZlcnNpb24gMS4zMworLS0tLS0tLS0tLS0tCitGaXggY2FjaGluZyBwcm9ibGVtLCBpbiB3aGljaCByZWFkZGlyIG9mIGRpcmVjdG9yeSBjb250YWluaW5nIGEgZmlsZQord2hpY2ggd2FzIGNhY2hlZCBjb3VsZCBjYXVzZSB0aGUgZmlsZSdzIHRpbWUgc3RhbXAgdG8gYmUgdXBkYXRlZAord2l0aG91dCBpbnZhbGlkYXRpbmcgdGhlIHJlYWRhaGVhZCBkYXRhIChzbyB3ZSBjb3VsZCBnZXQgc3RhbGUKK2ZpbGUgZGF0YSBvbiB0aGUgY2xpZW50IGZvciB0aGF0IGZpbGUgZXZlbiBhcyB0aGUgc2VydmVyIGNvcHkgY2hhbmdlZCkuCitDbGVhbnVwIHJlc3BvbnNlIHByb2Nlc3Npbmcgc28gY2lmc2QgY2FuIG5vdCBsb29wIHdoZW4gYWJub3JtYWxseQordGVybWluYXRlZC4KKworCitWZXJzaW9uIDEuMzIKKy0tLS0tLS0tLS0tLQorRml4IG9vcHMgaW4gbHMgd2hlbiBUcmFuc2FjdDIgRmluZEZpcnN0IChvciBGaW5kTmV4dCkgcmV0dXJucyBtb3JlIHRoYW4gb25lCit0cmFuc2FjdCByZXNwb25zZSBmb3IgYW4gU01CIHJlcXVlc3QgYW5kIHNlYXJjaCBlbnRyeSBzcGxpdCBhY3Jvc3MgdHdvIGZyYW1lcy4KK0FkZCBzdXBwb3J0IGZvciBsc2F0dHIgKGdldHRpbmcgZXh0Mi9leHQzL3JlaXNlcmZzIGF0dHIgZmxhZ3MgZnJvbSB0aGUgc2VydmVyKQorYXMgbmV3IHByb3RvY29sIGV4dGVuc2lvbnMuIERvIG5vdCBzZW5kIEdldC9TZXQgY2FsbHMgZm9yIFBPU0lYIEFDTHMKK3VubGVzcyBzZXJ2ZXIgZXhwbGljaXRseSBjbGFpbXMgdG8gc3VwcG9ydCB0aGVtIGluIENJRlMgVW5peCBleHRlbnNpb25zCitQT1NJWCBBQ0wgY2FwYWJpbGl0eSBiaXQuIEZpeCBwYWNrZXQgc2lnbmluZyB3aGVuIG11bHRpdXNlciBtb3VudGluZyB3aXRoCitkaWZmZXJlbnQgdXNlcnMgZnJvbSB0aGUgc2FtZSBjbGllbnQgdG8gdGhlIHNhbWUgc2VydmVyLiBGaXggb29wcyBpbgorY2lmc19jbG9zZS4gQWRkIG1vdW50IG9wdGlvbiBmb3IgcmVtYXBwaW5nIHJlc2VydmVkIGNoYXJhY3RlcnMgaW4KK2ZpbGVuYW1lcyAoYWxzbyBhbGxvdyByZWNvZ25pemluZyBmaWxlcyB3aXRoIGNyZWF0ZWQgYnkgU0ZVIHdoaWNoIGhhdmUgYW55CitvZiB0aGVzZSBzZXZlbiByZXNlcnZlZCBjaGFyYWN0ZXJzLCBleGNlcHQgYmFja3NsYXNoLCB0byBiZSByZWNvZ25pemVkKS4KK0ZpeCBpbnZhbGlkIHRyYW5zYWN0MiBtZXNzYWdlICh3ZSB3ZXJlIHNvbWV0aW1lcyB0cnlpbmcgdG8gaW50ZXJwcmV0CitvcGxvY2sgYnJlYWtzIGFzIFNNQiByZXNwb25zZXMpLiBBZGQgaW9jdGwgZm9yIGNoZWNraW5nIHRoYXQgdGhlCitjdXJyZW50IHVpZCBtYXRjaGVzIHRoZSB1aWQgb2YgdGhlIG1vdW50ZXIgKG5lZWRlZCBieSB1bW91bnQuY2lmcykuCitSZWR1Y2UgdGhlIG51bWJlciBvZiBsYXJnZSBidWZmZXIgYWxsb2NhdGlvbnMgaW4gY2lmcyByZXNwb25zZSBwcm9jZXNzaW5nCisoc2lnbmlmaWNhbnRseSByZWR1Y2VzIG1lbW9yeSBwcmVzc3VyZSB1bmRlciBoZWF2eSBzdHJlc3Mgd2l0aCBtdWx0aXBsZQorcHJvY2Vzc2VzIGFjY2Vzc2luZyB0aGUgc2FtZSBzZXJ2ZXIgYXQgdGhlIHNhbWUgdGltZSkuCisKK1ZlcnNpb24gMS4zMQorLS0tLS0tLS0tLS0tCitGaXggdXBkYXRlcyBvZiBET1MgYXR0cmlidXRlcyBhbmQgdGltZSBmaWVsZHMgc28gdGhhdCBmaWxlcyBvbiBOVDQgc2VydmVycworZG8gbm90IGdldCBtYXJrZWQgZGVsZXRlIG9uIGNsb3NlLiBEaXNwbGF5IHNpemVzIG9mIGNpZnMgYnVmZmVyIHBvb2xzIGluCitjaWZzIHN0YXRzLiBGaXggb29wcyBpbiB1bm1vdW50IHdoZW4gY2lmc2QgdGhyZWFkIGJlaW5nIGtpbGxlZCBieSAKK3NodXRkb3duLiBBZGQgZ2VuZXJpYyByZWFkdi93cml0ZXYgYW5kIGFpbyBzdXBwb3J0LiBSZXBvcnQgaW5vZGUgbnVtYmVycyAKK2NvbnNpc3RlbnRseSBpbiByZWFkZGlyIGFuZCBsb29rdXAgKHdoZW4gc2VydmVyaW5vIG1vdW50IG9wdGlvbiBpcworc3BlY2lmaWVkIHVzZSB0aGUgaW5vZGUgbnVtYmVyIHRoYXQgdGhlIHNlcnZlciByZXBvcnRzIC0gZm9yIGJvdGggbG9va3VwCithbmQgcmVhZGRpciwgb3RoZXJ3aXNlIGJ5IGRlZmF1bHQgdGhlIGxvY2FsbHkgZ2VuZXJhdGVkIGlub2RlIG51bWJlciBpcyB1c2VkCitmb3IgaW5vZGVzIGNyZWF0ZWQgaW4gZWl0aGVyIHBhdGggc2luY2Ugc2VydmVycyBhcmUgbm90IGFsd2F5cyBhYmxlIHRvIAorcHJvdmlkZSB1bmlxdWUgaW5vZGUgbnVtYmVycyB3aGVuIGV4cG9ydGluZyBtdWx0aXBsZSB2b2x1bWVzIGZyb20gdW5kZXIgb25lCitzaGFyZW5hbWUpLgorCitWZXJzaW9uIDEuMzAKKy0tLS0tLS0tLS0tLQorQWxsb3cgbmV3IG5vdXNlcl94YXR0ciBtb3VudCBwYXJtIHRvIGRpc2FibGUgeGF0dHIgc3VwcG9ydCBmb3IgdXNlciBuYW1lc3BhY2UuCitEbyBub3QgZmxhZyB1c2VyX3hhdHRyIG1vdW50IHBhcm0gaW4gZG1lc2cuICBSZXRyeSBmYWlsdXJlcyBzZXR0aW5nIGZpbGUgdGltZSAgCisobW9zdGx5IGFmZmVjdHMgTlQ0IHNlcnZlcnMpIGJ5IHJldHJ5IHdpdGggaGFuZGxlIGJhc2VkIG5ldHdvcmsgb3BlcmF0aW9uLiAKK0FkZCBuZXcgUE9TSVggUXVlcnkgRlMgSW5mbyBmb3IgcmV0dXJuaW5nIHN0YXRmcyBpbmZvIG1vcmUgYWNjdXJhdGVseS4KK0hhbmRsZSBwYXNzd29yZHMgd2l0aCBtdWx0aXBsZSBjb21tYXMgaW4gdGhlbS4KKworVmVyc2lvbiAxLjI5CistLS0tLS0tLS0tLS0KK0ZpeCBkZWZhdWx0IG1vZGUgaW4gc3lzZnMgb2YgY2lmcyBtb2R1bGUgcGFybXMuICBSZW1vdmUgb2xkIHJlYWRkaXIgcm91dGluZS4KK0ZpeCBjYXBhYmlsaXRpZXMgZmxhZ3MgZm9yIGxhcmdlIHJlYWR4IHNvIGFzIHRvIGFsbG93IHJlYWRzIGxhcmdlciB0aGFuIDY0Sy4KKworVmVyc2lvbiAxLjI4CistLS0tLS0tLS0tLS0KK0FkZCBtb2R1bGUgaW5pdCBwYXJtIGZvciBsYXJnZSBTTUIgYnVmZmVyIHNpemUgKHRvIGFsbG93IGl0IHRvIGJlIGNoYW5nZWQKK2Zyb20gaXRzIGRlZmF1bHQgb2YgMTZLKSB3aGljaCBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IgbGFyZ2UgZmlsZSBjb3B5Cit3aGVuIG1vdW50aW5nIHdpdGggdGhlIGRpcmVjdGlvIG1vdW50IG9wdGlvbi4gRml4IG9vcHMgYWZ0ZXIgCityZXR1cm5pbmcgZnJvbSBtb3VudCB3aGVuIGV4cGVyaW1lbnRhbCBFeHRlbmRlZFNlY3VyaXR5IGVuYWJsZWQgYW5kCitTcG5lZ29OZWdvdGlhdGVkIHJldHVybmluZyBpbnZhbGlkIGVycm9yLiBGaXggY2FzZSB0byByZXRyeSBiZXR0ZXIgd2hlbiAKK3BlZWsgcmV0dXJucyBmcm9tIDEgdG8gMyBieXRlcyBvbiBzb2NrZXQgd2hpY2ggc2hvdWxkIGhhdmUgbW9yZSBkYXRhLgorRml4ZWQgcGF0aCBiYXNlZCBjYWxscyAoc3VjaCBhcyBjaWZzIGxvb2t1cCkgdG8gaGFuZGxlIHBhdGggbmFtZXMKK2xvbmdlciB0aGFuIDUzMCAobm93IGNhbiBoYW5kbGUgUEFUSF9NQVgpLiBGaXggcGFzcyB0aHJvdWdoIGF1dGhlbnRpY2F0aW9uCitmcm9tIFNhbWJhIHNlcnZlciB0byBEQyAoU2FtYmEgcmVxdWlyZWQgZHVtbXkgTE0gcGFzc3dvcmQpLgorCitWZXJzaW9uIDEuMjcKKy0tLS0tLS0tLS0tLQorVHVybiBvZmYgRE5PVElGWSAoZGlyZWN0b3J5IGNoYW5nZSBub3RpZmljYXRpb24gc3VwcG9ydCkgYnkgZGVmYXVsdAorKHVubGVzcyBidWlsdCB3aXRoIHRoZSBleHBlcmltZW50YWwgZmxhZykgdG8gZml4IGhhbmcgd2l0aCBLREUKK2ZpbGUgYnJvd3Nlci4gRml4IEROT1RJRlkgZmxhZyBtYXBwaW5ncy4gIEZpeCBoYW5nIChpbiB3YWl0X2V2ZW50Cit3YWl0aW5nIG9uIGFuIFNNQiByZXNwb25zZSkgaW4gU2VuZFJlY2VpdmUgd2hlbiBzZXNzaW9uIGRpZXMgYnV0CityZWNvbm5lY3RzIHF1aWNrbHkgZnJvbSBhbm90aGVyIHRhc2suICBBZGQgbW9kdWxlIGluaXQgIHBhcm1zIGZvcgorbWluaW11bSBudW1iZXIgb2YgbGFyZ2UgYW5kIHNtYWxsIG5ldHdvcmsgYnVmZmVycyBpbiB0aGUgYnVmZmVyIHBvb2xzLAorYW5kIGZvciB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIHJlcXVlc3RzLgorCitWZXJzaW9uIDEuMjYKKy0tLS0tLS0tLS0tLQorQWRkIHNldGZhY2wgc3VwcG9ydCB0byBhbGxvdyBzZXR0aW5nIG9mIEFDTHMgcmVtb3RlbHkgdG8gU2FtYmEgMy4xMCBhbmQgbGF0ZXIKK2FuZCBvdGhlciBQT1NJWCBDSUZTIGNvbXBsaWFudCBzZXJ2ZXJzLiAgRml4IGVycm9yIG1hcHBpbmcgZm9yIGdldGZhY2wgCit0byBFT1BOT1RTVVBQIHdoZW4gc2VydmVyIGRvZXMgbm90IHN1cHBvcnQgcG9zaXggYWNscyBvbiB0aGUgd2lyZS4gRml4IAoraW1wcm9wZXJseSB6ZXJvZWQgYnVmZmVyIGluIENJRlMgVW5peCBleHRlbnNpb25zIHNldCB0aW1lcyBjYWxsLiAKKworVmVyc2lvbiAxLjI1CistLS0tLS0tLS0tLS0KK0ZpeCBpbnRlcm5hdGlvbmFsaXphdGlvbiBwcm9ibGVtIGluIGNpZnMgcmVhZGRpciB3aXRoIGZpbGVuYW1lcyB0aGF0IG1hcCB0byAKK2xvbmdlciBVVEYtOCBzdHJpbmdzIHRoYW4gdGhlIHN0cmluZyBvbiB0aGUgd2lyZSB3YXMgaW4gVW5pY29kZS4gIEFkZCB3b3JrYXJvdW5kCitmb3IgcmVhZGRpciB0byBuZXRhcHAgc2VydmVycy4gRml4IHNlYXJjaCByZXdpbmQgKHNlZWsgaW50byByZWFkZGlyIHRvIHJldHVybiAKK25vbi1jb25zZWN1dGl2ZSBlbnRyaWVzKS4gIERvIG5vdCBkbyByZWFkZGlyIHdoZW4gc2VydmVyIG5lZ290aWF0ZXMgCitidWZmZXIgc2l6ZSB0byBzbWFsbCB0byBmaXQgZmlsZW5hbWUuIEFkZCBzdXBwb3J0IGZvciByZWFkaW5nIFBPU0lYIEFDTHMgZnJvbQordGhlIHNlcnZlciAoYWRkIGFsc28gYWNsIGFuZCBub2FjbCBtb3VudCBvcHRpb25zKS4KKworVmVyc2lvbiAxLjI0CistLS0tLS0tLS0tLS0KK09wdGlvbmFsbHkgYWxsb3cgdXNpbmcgc2VydmVyIHNpZGUgaW5vZGUgbnVtYmVycywgcmF0aGVyIHRoYW4gY2xpZW50IGdlbmVyYXRlZAorb25lcyBieSBzcGVjaWZ5aW5nIG1vdW50IG9wdGlvbiAic2VydmVyaW5vIiAtIHRoaXMgaXMgcmVxdWlyZWQgZm9yIHNvbWUgYXBwcwordG8gd29yayB3aGljaCBkb3VibGUgY2hlY2sgaGFyZGxpbmtlZCBmaWxlcyBhbmQgaGF2ZSBwZXJzaXN0ZW50IGlub2RlIG51bWJlcnMuCisKK1ZlcnNpb24gMS4yMworLS0tLS0tLS0tLS0tCitNdWx0aXBsZSBiaWdlbmRpYW4gZml4ZXMuIE9uIGxpdHRsZSBlbmRpYW4gc3lzdGVtcyAoZm9yIHJlY29ubmVjdCBhZnRlcgorbmV0d29yayBmYWlsdXJlKSBmaXggdGNwIHNlc3Npb24gcmVjb25uZWN0IGNvZGUgc28gd2UgZG8gbm90IHRyeSBmaXJzdAordG8gcmVjb25uZWN0IG9uIHJldmVyc2Ugb2YgcG9ydCA0NDUuIFRyZWF0IHJlcGFyc2UgcG9pbnRzIChOVEZTIGp1bmN0aW9ucykKK2FzIGRpcmVjdG9yaWVzIHJhdGhlciB0aGFuIHN5bWxpbmtzIGJlY2F1c2Ugd2UgY2FuIGRvIGZvbGxvdyBsaW5rIG9uIHRoZW0uCisKK1ZlcnNpb24gMS4yMgorLS0tLS0tLS0tLS0tCitBZGQgY29uZmlnIG9wdGlvbiB0byBlbmFibGUgWEFUVFIgKGV4dGVuZGVkIGF0dHJpYnV0ZSkgc3VwcG9ydCwgbWFwcGluZworeGF0dHIgbmFtZXMgaW4gdGhlICJ1c2VyLiIgbmFtZXNwYWNlIHNwYWNlIHRvIFNNQi9DSUZTIEVBcy4gTG90cyBvZgorbWlub3IgZml4ZXMgcG9pbnRlZCBvdXQgYnkgdGhlIFN0YW5mb3JkIFNXQVQgY2hlY2tlciAobW9zdGx5IG1pc3NpbmcKK29yIG91dCBvZiBvcmRlciBOVUxMIHBvaW50ZXIgY2hlY2tzIGluIGxpdHRsZSB1c2VkIGVycm9yIHBhdGhzKS4KKworVmVyc2lvbiAxLjIxCistLS0tLS0tLS0tLS0KK0FkZCBuZXcgbW91bnQgcGFybSB0byBjb250cm9sIHdoZXRoZXIgbW9kZSBjaGVjayAoZ2VuZXJpY19wZXJtaXNzaW9uKSBpcyBkb25lCitvbiB0aGUgY2xpZW50LiAgSWYgVW5peCBleHRlbnNpb25zIGFyZSBlbmFibGVkIGFuZCB0aGUgdWlkcyBvbiB0aGUgY2xpZW50CithbmQgc2VydmVyIGRvIG5vdCBtYXRjaCwgY2xpZW50IHBlcm1pc3Npb24gY2hlY2tzIGFyZSBtZWFuaW5nbGVzcyBvbgorc2VydmVyIHVpZHMgdGhhdCBkbyBub3QgZXhpc3Qgb24gdGhlIGNsaWVudCAodGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlCitub3JtYWwgQUNMIGNoZWNrIHdoaWNoIG9jY3VycyBvbiB0aGUgc2VydmVyKS4gIEZpeCBkZWZhdWx0IHVpZAorb24gbWtub2QgdG8gbWF0Y2ggY3JlYXRlIGFuZCBta2Rpci4gQWRkIG9wdGlvbmFsIG1vdW50IHBhcm0gdG8gYWxsb3cKK292ZXJyaWRlIG9mIHRoZSBkZWZhdWx0IHVpZCBiZWhhdmlvciAoaW4gd2hpY2ggdGhlIHNlcnZlciBzZXRzIHRoZSB1aWQKK2FuZCBnaWQgb2YgbmV3bHkgY3JlYXRlZCBmaWxlcykuIE5vcm1hbGx5IGZvciBuZXR3b3JrIGZpbGVzeXN0ZW0gbW91bnRzCit1c2VyIHdhbnQgdGhlIHNlcnZlciB0byBzZXQgdGhlIHVpZC9naWQgb24gbmV3bHkgY3JlYXRlZCBmaWxlcyAocmF0aGVyIHRoYW4gCit1c2luZyB1aWQgb2YgdGhlIGNsaWVudCBwcm9jZXNzZXMgeW91IHdvdWxkIGluIGEgbG9jYWwgZmlsZXN5c3RlbSkuCisKK1ZlcnNpb24gMS4yMAorLS0tLS0tLS0tLS0tCitNYWtlIHRyYW5zYWN0aW9uIGNvdW50cyBtb3JlIGNvbnNpc3RlbnQuIE1lcmdlIC9wcm9jL2ZzL2NpZnMvU2ltdWx0YW5lb3VzT3BzCitpbmZvIGludG8gL3Byb2MvZnMvY2lmcy9EZWJ1Z0RhdGEuICBGaXggb29wcyBpbiByYXJlIG9vcHMgaW4gcmVhZGRpciAKKyhpbiBidWlsZF93aWxkY2FyZF9wYXRoX2Zyb21fZGVudHJ5KS4gIEZpeCBta25vZCB0byBwYXNzIHR5cGUgZmllbGQKKyhibG9jay9jaGFyL2ZpZm8pIHByb3Blcmx5LiAgUmVtb3ZlIHNwdXJpb3VzIG1vdW50IHdhcm5pbmcgbG9nIGVudHJ5IHdoZW4KK2NyZWRlbnRpYWxzIHBhc3NlZCBhcyBtb3VudCBhcmd1bWVudC4gU2V0IG1ham9yL21pbm9yIGRldmljZSBudW1iZXIgaW4KK2lub2RlIGZvciBibG9jayBhbmQgY2hhciBkZXZpY2VzIHdoZW4gdW5peCBleHRlbnNpb25zIGVuYWJsZWQuCisKK1ZlcnNpb24gMS4xOQorLS0tLS0tLS0tLS0tCitGaXggL3Byb2MvZnMvY2lmcy9TdGF0cyBhbmQgRGVidWdEYXRhIGRpc3BsYXkgdG8gaGFuZGxlIGxhcmdlcgorYW1vdW50cyBvZiByZXR1cm4gZGF0YS4gUHJvcGVybHkgbGltaXQgcmVxdWVzdHMgdG8gTUFYX1JFUSAoNTAKK2lzIHRoZSB1c3VhbCBtYXhpbXVtIGFjdGl2ZSBtdWx0aXBsZXggU01CL0NJRlMgcmVxdWVzdHMgcGVyIHNlcnZlcikuCitEbyBub3Qga2lsbCBjaWZzZCAoYW5kIHRodXMgaHVydCB0aGUgb3RoZXIgU01CIHNlc3Npb24pIHdoZW4gbW9yZSB0aGFuIG9uZQorc2Vzc2lvbiB0byB0aGUgc2FtZSBzZXJ2ZXIgKGJ1dCB3aXRoIGRpZmZlcmVudCB1c2VyaWRzKSBleGlzdHMgYW5kIG9uZQorb2YgdGhlIHR3byB1c2VyJ3Mgc21iIHNlc3Npb25zIGlzIGJlaW5nIHJlbW92ZWQgd2hpbGUgbGVhdmluZyB0aGUgb3RoZXIuCitEbyBub3QgbG9vcCByZWNvbm5lY3RpbmcgaW4gY2lmc2QgZGVtdWx0aXBsZXggdGhyZWFkIHdoZW4gYWRtaW4KK2tpbGxzIHRoZSB0aHJlYWQgd2l0aG91dCBnb2luZyB0aHJvdWdoIHVubW91bnQuCisKK1ZlcnNpb24gMS4xOAorLS0tLS0tLS0tLS0tCitEbyBub3QgcmVuYW1lIGhhcmRsaW5rZWQgZmlsZXMgKHNpbmNlIHRoYXQgc2hvdWxkIGJlIGEgbm9vcCkuIEZsdXNoCitjYWNoZWQgd3JpdGUgYmVoaW5kIGRhdGEgd2hlbiByZW9wZW5pbmcgYSBmaWxlIGFmdGVyIHNlc3Npb24gYWJlbmQsCitleGNlcHQgd2hlbiBhbHJlYWR5IGluIHdyaXRlLiBHcmFiIHBlciBzb2NrZXQgc2VtIGR1cmluZyByZWNvbm5lY3QgCit0byBhdm9pZCBvb3BzIGluIHNlbmRtc2cgaWYgb3ZlcmxhcHBpbmcgd2l0aCByZWNvbm5lY3QuIERvIG5vdAorcmVzZXQgY2FjaGVkIGlub2RlIGZpbGUgc2l6ZSBvbiByZWFkZGlyIGZvciBmaWxlcyBvcGVuIGZvciB3cml0ZSBvbiAKK2NsaWVudC4KKworCitWZXJzaW9uIDEuMTcKKy0tLS0tLS0tLS0tLQorVXBkYXRlIG51bWJlciBvZiBibG9ja3MgaW4gZmlsZSBzbyBkdSBjb21tYW5kIGlzIGhhcHBpZXIgKGluIExpbnV4IGEgZmFrZQorYmxvY2tzaXplIG9mIDUxMiBpcyByZXF1aXJlZCBmb3IgY2FsY3VsYXRpbmcgbnVtYmVyIG9mIGJsb2NrcyBpbiBpbm9kZSkuCitGaXggcHJlcGFyZSB3cml0ZSBvZiBwYXJ0aWFsIHBhZ2VzIHRvIHJlYWQgaW4gZGF0YSBmcm9tIHNlcnZlciBpZiBwb3NzaWJsZS4KK0ZpeCByYWNlIG9uIHRjcFN0YXR1cyBmaWVsZCBiZXR3ZWVuIHVubW91bnQgYW5kIHJlY29ubmVjdGlvbiBjb2RlLCBjYXVzaW5nCitjaWZzZCBwcm9jZXNzIHNvbWV0aW1lcyB0byBoYW5nIGFyb3VuZCBmb3JldmVyLiBJbXByb3ZlIG91dCBvZiBtZW1vcnkKK2NoZWNrcyBpbiBjaWZzX2ZpbGxkaXIKKworVmVyc2lvbiAxLjE2CistLS0tLS0tLS0tLS0KK0ZpeCBpbmNvcnJlY3QgZmlsZSBzaXplIGluIGZpbGUgaGFuZGxlIGJhc2VkIHNldGF0dHIgb24gYmlnIGVuZGlhbiBoYXJkd2FyZS4KK0ZpeCBvb3BzIGluIGJ1aWxkX3BhdGhfZnJvbV9kZW50cnkgd2hlbiBvdXQgb2YgbWVtb3J5LiAgQWRkIGNoZWNrcyBmb3IgaW52YWxpZAorYW5kIGNsb3NpbmcgZmlsZSBzdHJ1Y3RzIGluIHdyaXRlcGFnZS9wYXJ0aWFscGFnZXdyaXRlLiAgQWRkIHN0YXRpc3RpY3MKK2ZvciBlYWNoIG1vdW50ZWQgc2hhcmUgKG5ldyBtZW51Y29uZmlnIG9wdGlvbikuIEZpeCBlbmRpYW5uZXNzIHByb2JsZW0gaW4KK3ZvbHVtZSBpbmZvcm1hdGlvbiBkaXNwbGF5ZWQgaW4gL3Byb2MvZnMvY2lmcy9EZWJ1Z0RhdGEgKG9ubHkgYWZmZWN0cworYWZmZWN0cyBiaWcgZW5kaWFuIGFyY2hpdGVjdHVyZXMpLiBQcmV2ZW50IHJlbmFtZXMgd2hpbGUgY29uc3RydWN0aW5nCitwYXRoIG5hbWVzIGZvciBvcGVuLCBta2RpciBhbmQgcm1kaXIuCisKK1ZlcnNpb24gMS4xNQorLS0tLS0tLS0tLS0tCitDaGFuZ2UgdG8gbWVtcG9vbHMgZm9yIGFsbG9jIHNtYiByZXF1ZXN0IGJ1ZmZlcnMgYW5kIG11bHRpcGxleCBzdHJ1Y3RzCit0byBiZXR0ZXIgaGFuZGxlIGxvdyBtZW1vcnkgcHJvYmxlbXMgKGFuZCBwb3RlbnRpYWwgZGVhZGxvY2tzKS4KKworVmVyc2lvbiAxLjE0CistLS0tLS0tLS0tLS0KK0ZpeCBpbmNvbXBsZXRlIGxpc3RpbmdzIG9mIGxhcmdlIGRpcmVjdG9yaWVzIG9uIFNhbWJhIHNlcnZlcnMgd2hlbiBVbml4CitleHRlbnNpb25zIGVuYWJsZWQuICBGaXggb29wcyB3aGVuIHNtYl9idWZmZXIgY2FuIG5vdCBiZSBhbGxvY2F0ZWQuIEZpeAorcmVuYW1lIGRlYWRsb2NrIHdoZW4gd3JpdGluZyBvdXQgZGlydHkgcGFnZXMgYXQgc2FtZSB0aW1lLgorCitWZXJzaW9uIDEuMTMKKy0tLS0tLS0tLS0tLQorRml4IG9wZW4gb2YgZmlsZXMgaW4gd2hpY2ggT19DUkVBVEUgY2FuIGNhdXNlIHRoZSBtb2RlIHRvIGNoYW5nZSBpbgorc29tZSBjYXNlcy4gRml4IGNhc2UgaW4gd2hpY2ggcmV0cnkgb2Ygd3JpdGUgb3ZlcmxhcHMgZmlsZSBjbG9zZS4KK0ZpeCBQUEM2NCBidWlsZCBlcnJvci4gIFJlZHVjZSBleGNlc3NpdmUgc3RhY2sgdXNhZ2UgaW4gc21iIHBhc3N3b3JkCitoYXNoaW5nLiBGaXggb3ZlcndyaXRlIG9mIExpbnV4IHVzZXIncyB2aWV3IG9mIGZpbGUgbW9kZSB0byBXaW5kb3dzIHNlcnZlcnMuCisKK1ZlcnNpb24gMS4xMgorLS0tLS0tLS0tLS0tCitGaXhlcyBmb3IgbGFyZ2UgZmlsZSBjb3B5LCBzaWduYWwgaGFuZGxpbmcsIHNvY2tldCByZXRyeSwgYnVmZmVyCithbGxvY2F0aW9uIGFuZCBsb3cgbWVtb3J5IHNpdHVhdGlvbnMuCisKK1ZlcnNpb24gMS4xMQorLS0tLS0tLS0tLS0tCitCZXR0ZXIgcG9ydCAxMzkgc3VwcG9ydCB0byBXaW5kb3dzIHNlcnZlcnMgKFJGQzEwMDEvUkZDMTAwMiBTZXNzaW9uX0luaXRpYWxpemUpCithbHNvIG5vdyBhbGxvd2luZyBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGNsaWVudCBuZXRiaW9zbmFtZS4gIE5UNCBzdXBwb3J0IGFkZGVkLgorCitWZXJzaW9uIDEuMTAKKy0tLS0tLS0tLS0tLQorRml4IHJlY29ubmVjdGlvbiAoYW5kIGNlcnRhaW4gZmFpbGVkIG1vdW50cykgdG8gcHJvcGVybHkgd2FrZSB1cCB0aGUKK2Jsb2NrZWQgdXNlcnMgdGhyZWFkIHNvIGl0IGRvZXMgbm90IHNlZW0gaHVuZyAoaW4gc29tZSBjYXNlcyB3YXMgYmxvY2tlZAordW50aWwgdGhlIGNpZnMgcmVjZWl2ZSB0aW1lb3V0IGV4cGlyZWQpLiBGaXggc3B1cmlvdXMgZXJyb3IgbG9nZ2luZwordG8ga2VybmVsIGxvZyB3aGVuIGFwcGxpY2F0aW9uIHdpdGggb3BlbiBuZXR3b3JrIGZpbGVzIGtpbGxlZC4gCisKK1ZlcnNpb24gMS4wOQorLS0tLS0tLS0tLS0tCitGaXggL3Byb2MvZnMgbW9kdWxlIHVubG9hZCB3YXJuaW5nIG1lc3NhZ2UgKHRoYXQgY291bGQgYmUgbG9nZ2VkCit0byB0aGUga2VybmVsIGxvZykuIEZpeCBpbnRlcm1pdHRlbnQgZmFpbHVyZSBpbiBjb25uZWN0YXRob24KK3Rlc3Q3IChoYXJkbGluayBjb3VudCBub3QgaW1tZWRpYXRlbHkgcmVmcmVzaGVkIGluIGNhc2UgaW4gd2hpY2gKK2lub2RlIG1ldGFkYXRhIGNhbiBiZSBpbmNvcnJlY3RseSBrZXB0IGNhY2hlZCB3aGVuIHRpbWUgbmVhciB6ZXJvKQorCitWZXJzaW9uIDEuMDgKKy0tLS0tLS0tLS0tLQorQWxsb3cgZmlsZV9tb2RlIGFuZCBkaXJfbW9kZSAoc3BlY2lmaWVkIGF0IG1vdW50IHRpbWUpIHRvIGJlIGVuZm9yY2VkCitsb2NhbGx5ICh0aGUgc2VydmVyIGFscmVhZHkgZW5mb3JjZWQgaXRzIG93biBBQ0xzIHRvbykgZm9yIHNlcnZlcnMKK3RoYXQgZG8gbm90IHJlcG9ydCB0aGUgY29ycmVjdCBtb2RlIChkbyBub3Qgc3VwcG9ydCB0aGUgCitDSUZTIFVuaXggRXh0ZW5zaW9ucykuCisKK1ZlcnNpb24gMS4wNworLS0tLS0tLS0tLS0tCitGaXggc29tZSBzbWFsbCBtZW1vcnkgbGVha3MgaW4gc29tZSB1bm1vdW50IGVycm9yIHBhdGhzLiBGaXggbWFqb3IgbGVhaworb2YgY2FjaGUgcGFnZXMgaW4gcmVhZHBhZ2VzIGNhdXNpbmcgbXVsdGlwbGUgcmVhZCBvcmllbnRlZCBzdHJlc3MKK3Rlc3RjYXNlcyAoaW5jbHVkaW5nIGZzeCwgYW5kIGV2ZW4gbGFyZ2UgZmlsZSBjb3B5KSB0byBmYWlsIG92ZXIgdGltZS4gCisKK1ZlcnNpb24gMS4wNgorLS0tLS0tLS0tLS0tCitTZW5kIE5UQ3JlYXRlWCB3aXRoIEFUVFJfUE9TSVggaWYgTGludXgvVW5peCBleHRlbnNpb25zIG5lZ290aWF0ZWQgd2l0aCBzZXJ2ZXIuCitUaGlzIGFsbG93cyBmaWxlcyB0aGF0IGRpZmZlciBvbmx5IGluIGNhc2UgYW5kIGltcHJvdmVzIHBlcmZvcm1hbmNlIG9mIGZpbGUKK2NyZWF0aW9uIGFuZCBmaWxlIG9wZW4gdG8gc3VjaCBzZXJ2ZXJzLiAgRml4IHNlbWFwaG9yZSBjb25mbGljdCB3aGljaCBjYXVzZXMgCitzbG93IGRlbGV0ZSBvZiBvcGVuIGZpbGUgdG8gU2FtYmEgKHdoaWNoIHVuZm9ydHVuYXRlbHkgY2FuIGNhdXNlIGFuIG9wbG9jaworYnJlYWsgdG8gc2VsZiB3aGlsZSB2ZnNfdW5saW5rIGhlbGQgaV9zZW0pIHdoaWNoIGNhbiBoYW5nIGZvciAyMCBzZWNvbmRzLgorCitWZXJzaW9uIDEuMDUKKy0tLS0tLS0tLS0tLQorZml4ZXMgdG8gY2lmc19yZWFkcGFnZXMgZm9yIGZzeCB0ZXN0IGNhc2UKKworVmVyc2lvbiAxLjA0CistLS0tLS0tLS0tLS0KK0ZpeCBjYWNoaW5nIGRhdGEgaW50ZWdyaXR5IGJ1ZyB3aGVuIGV4dGVuZGluZyBmaWxlIHNpemUgZXNwZWNpYWxseSB3aGVuIG5vCitvcGxvY2sgb24gZmlsZS4gIEZpeCBzcHVyaW91cyBsb2dnaW5nIG9mIHZhbGlkIGFscmVhZHkgcGFyc2VkIG1vdW50IG9wdGlvbnMKK3RoYXQgYXJlIHBhcnNlZCBvdXRzaWRlIG9mIHRoZSBjaWZzIHZmcyBzdWNoIGFzIG5vc3VpZC4KKworCitWZXJzaW9uIDEuMDMKKy0tLS0tLS0tLS0tLQorQ29ubmVjdCB0byBzZXJ2ZXIgd2hlbiBwb3J0IG51bWJlciBvdmVycmlkZSBub3Qgc3BlY2lmaWVkLCBhbmQgdGNwIHBvcnQKK3VuaXRpYWxpemVkLiAgUmVzZXQgc2VhcmNoIHRvIHJlc3RhcnQgYXQgY29ycmVjdCBmaWxlIHdoZW4ga2VybmVsIHJvdXRpbmUKK2ZpbGxkaXIgcmV0dXJucyBlcnJvciBkdXJpbmcgbGFyZ2UgZGlyZWN0b3J5IHNlYXJjaGVzIChyZWFkZGlyKS4gCisKK1ZlcnNpb24gMS4wMgorLS0tLS0tLS0tLS0tCitGaXggY2FjaGluZyBwcm9ibGVtIHdoZW4gZmlsZXMgb3BlbmVkIGJ5IG11bHRpcGxlIGNsaWVudHMgaW4gd2hpY2ggCitwYWdlIGNhY2hlIGNvdWxkIGNvbnRhaW4gc3RhbGUgZGF0YSwgYW5kIHdyaXRlIHRocm91Z2ggZGlkCitub3Qgb2NjdXIgb2Z0ZW4gZW5vdWdoIHdoaWxlIGZpbGUgd2FzIHN0aWxsIG9wZW4gd2hlbiByZWFkIGFoZWFkCisocmVhZCBvcGxvY2spIG5vdCBhbGxvd2VkLiAgVHJlYXQgInNlcD0iIHdoZW4gZmlyc3QgbW91bnQgb3B0aW9uCithcyBhbiBvdmVycmlkZSBvZiBjb21tYSBhcyB0aGUgZGVmYXVsdCBzZXBhcmF0b3IgYmV0d2VlbiBtb3VudAorb3B0aW9ucy4gCisKK1ZlcnNpb24gMS4wMQorLS0tLS0tLS0tLS0tCitBbGxvdyBwYXNzd29yZHMgbG9uZ2VyIHRoYW4gMTYgYnl0ZXMuIEFsbG93IG51bGwgcGFzc3dvcmQgc3RyaW5nLgorCitWZXJzaW9uIDEuMDAKKy0tLS0tLS0tLS0tLQorR3JhY2VmdWxseSBjbGVhbiB1cCBmYWlsZWQgbW91bnRzIHdoZW4gYXR0ZW1wdGluZyB0byBtb3VudCB0byBzZXJ2ZXJzIHN1Y2ggYXMKK1dpbmRvd3MgOTggdGhhdCB0ZXJtaW5hdGUgdGNwIHNlc3Npb25zIGR1cmluZyBwcm90b2NvbCBuZWdvdGlhdGlvbi4gIEhhbmRsZQorZW1iZWRkZWQgY29tbWFzIGluIG1vdW50IHBhcnNpbmcgb2YgcGFzc3dvcmRzLgorCitWZXJzaW9uIDAuOTkKKy0tLS0tLS0tLS0tLQorSW52YWxpZGF0ZSBsb2NhbCBpbm9kZSBjYWNoZWQgcGFnZXMgb24gb3Bsb2NrIGJyZWFrIGFuZCB3aGVuIGxhc3QgZmlsZQoraW5zdGFuY2UgaXMgY2xvc2VkIHNvIHRoYXQgdGhlIGNsaWVudCBkb2VzIG5vdCBjb250aW51ZSB1c2luZyBzdGFsZSBsb2NhbAorY29weSByYXRoZXIgdGhhbiBsYXRlciBtb2RpZmllZCBzZXJ2ZXIgY29weSBvZiBmaWxlLiAgRG8gbm90IHJlY29ubmVjdAord2hlbiBzZXJ2ZXIgZHJvcHMgdGhlIHRjcCBzZXNzaW9uIHByZW1hdHVyZWx5IGJlZm9yZSBuZWdvdGlhdGUKK3Byb3RvY29sIHJlc3BvbnNlLiAgRml4IG9vcHMgaW4gcmVvcGVuX2ZpbGUgd2hlbiBkZW50cnkgZnJlZWQuICBBbGxvdwordGhlIHN1cHBvcnQgZm9yIENJRlMgVW5peCBFeHRlbnNpb25zIHRvIGJlIGRpc2FibGVkIHZpYSBwcm9jIGludGVyZmFjZS4KKworVmVyc2lvbiAwLjk4CistLS0tLS0tLS0tLS0KK0ZpeCBoYW5nIGluIGNvbW1pdF93cml0ZSBkdXJpbmcgcmVjb25uZWN0aW9uIG9mIG9wZW4gZmlsZXMgdW5kZXIgaGVhdnkgbG9hZC4KK0ZpeCB1bmxvYWRfbmxzIG9vcHMgaW4gYSBtb3VudCBmYWlsdXJlIHBhdGguIFNlcmlhbGl6ZSB3cml0ZXMgdG8gc2FtZSBzb2NrZXQKK3doaWNoIGFsc28gZml4ZXMgYW55IHBvc3NpYmxlIHJhY2VzIHdoZW4gY2lmcyBzaWduYXR1cmVzIGFyZSBlbmFibGVkIGluIFNNQnMKK2JlaW5nIHNlbnQgb3V0IG9mIHNpZ25hdHVyZSBzZXF1ZW5jZSBudW1iZXIgb3JkZXIuICAgIAorCitWZXJzaW9uIDAuOTcKKy0tLS0tLS0tLS0tLQorRml4IGJ5dGUgcmFuZ2UgbG9ja2luZyBidWcgKGVuZGlhbiBwcm9ibGVtKSBjYXVzaW5nIGJhZCBvZmZzZXQgYW5kCitsZW5ndGguCisKK1ZlcnNpb24gMC45NgorLS0tLS0tLS0tLS0tCitGaXggb29wcyAoaW4gc2VuZF9zaWcpIGNhdXNlZCBieSBDSUZTIHVubW91bnQgY29kZSB0cnlpbmcgdG8KK3dha2UgdXAgdGhlIGRlbXVsdGlwbGV4IHRocmVhZCBhZnRlciBpdCBoYWQgZXhpdGVkLiBEbyBub3QgbG9nCitlcnJvciBvbiBoYXJtbGVzcyBvcGxvY2sgcmVsZWFzZSBvZiBjbG9zZWQgaGFuZGxlLgorCitWZXJzaW9uIDAuOTUKKy0tLS0tLS0tLS0tLQorRml4IHVuc2FmZSBnbG9iYWwgdmFyaWFibGUgdXNhZ2UgYW5kIHBhc3N3b3JkIGhhc2ggZmFpbHVyZSBvbiBnY2MgMy4zLjEKK0ZpeCBwcm9ibGVtIHJlY29ubmVjdGluZyBzZWNvbmRhcnkgbW91bnRzIHRvIHNhbWUgc2VydmVyIGFmdGVyIHNlc3Npb24gCitmYWlsdXJlLiAgRml4IGludmFsaWQgZGVudHJ5IC0gcmFjZSBpbiBta2RpciB3aGVuIGRpcmVjdG9yeSBnZXRzIGNyZWF0ZWQKK2J5IGFub3RoZXIgY2xpZW50IGJldHdlZW4gdGhlIGxvb2t1cCBhbmQgbWtkaXIuCisgCitWZXJzaW9uIDAuOTQKKy0tLS0tLS0tLS0tLQorRml4IHRvIGxpc3QgcHJvY2Vzc2luZyBpbiByZW9wZW5fZmlsZXMuIEZpeCByZWNvbm5lY3Rpb24gd2hlbiBzZXJ2ZXIgaHVuZworYnV0IHRjcGlwIHNlc3Npb24gc3RpbGwgYWxpdmUuICBTZXQgcHJvcGVyIHRpbWVvdXQgb24gc29ja2V0IHJlYWQuCisKK1ZlcnNpb24gMC45MworLS0tLS0tLS0tLS0tCitBZGQgbWlzc2luZyBtb3VudCBvcHRpb25zIGluY2x1ZGluZyBpb2NoYXJzZXQuICBTTVAgZml4ZXMgaW4gd3JpdGUgYW5kIG9wZW4uIAorRml4IGVycm9ycyBpbiByZWNvbm5lY3RpbmcgYWZ0ZXIgVENQIHNlc3Npb24gZmFpbHVyZS4gIEZpeCBtb2R1bGUgdW5sb2FkaW5nCitvZiBkZWZhdWx0IG5scyBjb2RlcGFnZQorCitWZXJzaW9uIDAuOTIKKy0tLS0tLS0tLS0tLQorQWN0aXZlIHNtYiB0cmFuc2FjdGlvbnMgc2hvdWxkIG5ldmVyIGdvIG5lZ2F0aXZlIChmaXggZG91YmxlIEZyZWVYaWQpLiBGaXgKK2xpc3QgcHJvY2Vzc2luZyBpbiBmaWxlIHJvdXRpbmVzLiBDaGVjayByZXR1cm4gY29kZSBvbiBrbWFsbG9jIGluIG9wZW4uCitGaXggc3BpbmxvY2sgdXNhZ2UgZm9yIFNNUC4KKworVmVyc2lvbiAwLjkxCistLS0tLS0tLS0tLS0KK0ZpeCBvb3BzIGluIHJlb3Blbl9maWxlcyB3aGVuIGludmFsaWQgZGVudHJ5LiBkcm9wIGRlbnRyeSBvbiBzZXJ2ZXIgcmVuYW1lIAorYW5kIG9uIHJldmFsaWRhdGUgZXJyb3JzLiBGaXggY2FzZXMgd2hlcmUgcGlkIGlzIG5vdyB0Z2lkLiAgRml4IHJldHVybiBjb2RlCitvbiBjcmVhdGUgaGFyZCBsaW5rIHdoZW4gc2VydmVyIGRvZXMgbm90IHN1cHBvcnQgdGhlbS4gCisKK1ZlcnNpb24gMC45MAorLS0tLS0tLS0tLS0tCitGaXggc2NoZWR1bGluZyB3aGlsZSBhdG9taWMgZXJyb3IgaW4gZ2V0dGluZyBpbm9kZSBpbmZvIG9uIG5ld2x5IGNyZWF0ZWQgZmlsZS4gCitGaXggdHJ1bmNhdGUgb2YgZXhpc3RpbmcgZmlsZXMgb3BlbmVkIHdpdGggT19DUkVBVCBidXQgbm90IE9fVFJVTkMgc2V0LgorCitWZXJzaW9uIDAuODkKKy0tLS0tLS0tLS0tLQorRml4IG9vcHMgb24gd3JpdGUgdG8gZGVhZCB0Y3Agc2Vzc2lvbi4gUmVtb3ZlIGVycm9yIGxvZyB3cml0ZSBmb3IgY2FzZSB3aGVuIGZpbGUgb3BlbgorT19DUkVBVCBidXQgbm90IE9fRVhDTAorCitWZXJzaW9uIDAuODgKKy0tLS0tLS0tLS0tLQorRml4IG5vbi1QT1NJWCBiZWhhdmlvciBvbiByZW5hbWUgb2Ygb3BlbiBmaWxlIGFuZCBkZWxldGUgb2Ygb3BlbiBmaWxlIGJ5IHRha2luZyAKK2FkdmFudGFnZSBvZiB0cmFuczIgU2V0RmlsZUluZm8gcmVuYW1lIGZhY2lsaXR5IGlmIGF2YWlsYWJsZSBvbiB0YXJnZXQgc2VydmVyLgorUmV0cnkgb24gRU5PU1BDIGFuZCBFQUdBSU4gc29ja2V0IGVycm9ycy4KKworVmVyc2lvbiAwLjg3CistLS0tLS0tLS0tLS0KK0ZpeCBvb3BzIG9uIGJpZyBlbmRpYW4gcmVhZGRpci4gIFNldCBibGtzaXplIHRvIGJlIGV2ZW4gcG93ZXIgb2YgdHdvICgyKipibGtiaXRzKSB0byBmaXgKK2FsbG9jYXRpb24gc2l6ZSBtaXNjYWxjdWxhdGlvbi4gQWZ0ZXIgb3Bsb2NrIHRva2VuIGxvc3QgZG8gbm90IHJlYWQgdGhyb3VnaAorY2FjaGUuIAorCitWZXJzaW9uIDAuODYKKy0tLS0tLS0tLS0tLQorRml4IG9vcHMgb24gZW1wdHkgZmlsZSByZWFkYWhlYWQuICBGaXggZm9yIGZpbGUgc2l6ZSBoYW5kbGluZyBmb3IgbG9jYWxseSBjYWNoZWQgZmlsZXMuCisKK1ZlcnNpb24gMC44NQorLS0tLS0tLS0tLS0tCitGaXggb29wcyBpbiBta2RpciB3aGVuIHNlcnZlciBmYWlscyB0byByZXR1cm4gaW5vZGUgaW5mby4gRml4IG9vcHMgaW4gcmVvcGVuX2ZpbGVzCitkdXJpbmcgYXV0byByZWNvbm5lY3Rpb24gdG8gc2VydmVyIGFmdGVyIHNlcnZlciByZWNvdmVyZWQgZnJvbSBmYWlsdXJlLgorCitWZXJzaW9uIDAuODQKKy0tLS0tLS0tLS0tLQorRmluaXNoIHN1cHBvcnQgZm9yIExpbnV4IDIuNSBvcGVuL2NyZWF0ZSBjaGFuZ2VzLCB3aGljaCByZW1vdmVzIHRoZQorcmVkdW5kYW50IE5UQ3JlYXRlL1FQYXRoSW5mby9jbG9zZSB0aGF0IHdhcyBzZW50IGR1cmluZyBmaWxlIGNyZWF0ZS4KK0VuYWJsZSBvcGxvY2sgYnkgZGVmYXVsdC4gRW5hYmxlIHBhY2tldCBzaWduaW5nIGJ5IGRlZmF1bHQgKG5lZWRlZCB0byAKK2FjY2VzcyBtYW55IHJlY2VudCBXaW5kb3dzIHNlcnZlcnMpCisKK1ZlcnNpb24gMC44MworLS0tLS0tLS0tLS0tCitGaXggb29wcyB3aGVuIG1vdW50aW5nIHRvIGxvbmcgc2VydmVyIG5hbWVzIGNhdXNlZCBieSBpbnZlcnRlZCBwYXJtcyB0byBrbWFsbG9jLgorRml4IE11bHRpdXNlck1vdW50ICgvcHJvYy9mcy9jaWZzIGNvbmZpZ3VyYXRpb24gc2V0dGluZykgc28gdGhhdCB3aGVuIGVuYWJsZWQKK3dlIHdpbGwgY2hvb3NlIGEgY2lmcyB1c2VyIHNlc3Npb24gKHNtYiB1aWQpIHRoYXQgYmV0dGVyIG1hdGNoZXMgdGhlIGxvY2FsCit1aWQgaWYgYSkgdGhlIG1vdW50IHVpZCBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCB1aWQgYW5kIGIpIHdlIGhhdmUgYW5vdGhlcgorc2Vzc2lvbiB0byB0aGUgc2FtZSBzZXJ2ZXIgKGlwIGFkZHJlc3MpIGZvciBhIGRpZmZlcmVudCBtb3VudCB3aGljaAorbWF0Y2hlcyB0aGUgY3VycmVudCBsb2NhbCB1aWQuCisKK1ZlcnNpb24gMC44MgorLS0tLS0tLS0tLS0tCitBZGQgc3VwcG9ydCBmb3IgbWtub2Qgb2YgYmxvY2sgb3IgY2hhcmFjdGVyIGRldmljZXMuICBGaXggb3Bsb2NrCitjb2RlIChkaXN0cmlidXRlZCBjYWNoaW5nKSB0byBwcm9wZXJseSBzZW5kIHJlc3BvbnNlIHRvIG9wbG9jaworYnJlYWsgZnJvbSBzZXJ2ZXIuCisKK1ZlcnNpb24gMC44MQorLS0tLS0tLS0tLS0tCitGaW5pc2ggdXAgQ0lGUyBwYWNrZXQgZGlnaXRhbCBzaWduaW5nIGZvciB0aGUgZGVmYXVsdAorTlRMTSBzZWN1cml0eSBjYXNlLiBUaGlzIHNob3VsZCBoZWxwIFdpbmRvd3MgMjAwMworbmV0d29yayBpbnRlcm9wZXJhYmlsaXR5IHNpbmNlIGl0IGlzIGNvbW1vbiBmb3IKK3BhY2tldCBzaWduaW5nIHRvIGJlIHJlcXVpcmVkIG5vdy4gRml4IHN0YXRmcyAoc3RhdCAtZikKK3doaWNoIHJlY2VudGx5IHN0YXJ0ZWQgcmV0dXJuaW5nIGVycm9ycyBkdWUgdG8gCitpbnZhbGlkIHZhbHVlICgtMSBpbnN0ZWFkIG9mIDApIGJlaW5nIHNldCBpbiB0aGUKK3N0cnVjdCBrc3RhdGZzIGZfZmZpbGVzIGZpZWxkLgorCitWZXJzaW9uIDAuODAKKy0tLS0tLS0tLS0tCitGaXggb29wcyBvbiBzdG9wcGluZyBvcGxvY2sgdGhyZWFkIHdoZW4gcmVtb3ZpbmcgY2lmcyB3aGVuCitidWlsdCBhcyBtb2R1bGUuCisKK1ZlcnNpb24gMC43OQorLS0tLS0tLS0tLS0tCitGaXggbW91bnQgb3B0aW9ucyBmb3Igcm8gKHJlYWRvbmx5KSwgdWlkLCBnaWQgYW5kIGZpbGUgYW5kIGRpcmVjdG9yeSBtb2RlLiAKKworVmVyc2lvbiAwLjc4CistLS0tLS0tLS0tLS0KK0ZpeCBlcnJvcnMgZGlzcGxheWVkIG9uIGZhaWxlZCBtb3VudHMgdG8gYmUgbW9yZSB1bmRlcnN0YW5kYWJsZS4KK0ZpeGVkIHZhcmlvdXMgaW5jb3JyZWN0IG9yIG1pc2xlYWRpbmcgc21iIHRvIHBvc2l4IGVycm9yIGNvZGUgbWFwcGluZ3MuCisKK1ZlcnNpb24gMC43NworLS0tLS0tLS0tLS0tCitGaXggZGlzcGxheSBvZiBOVEZTIERGUyBqdW5jdGlvbnMgdG8gZGlzcGxheSBhcyBzeW1saW5rcy4KK1RoZXkgYXJlIHRoZSBuZXR3b3JrIGVxdWl2YWxlbnQuICBGaXggb29wcyBpbiAKK2NpZnNfcGFydGlhbHBhZ2V3cml0ZSBjYXVzZWQgYnkgbWlzc2luZyBzcGlubG9jayBwcm90ZWN0aW9uCitvZiBvcGVuZmlsZSBsaW5rZWQgbGlzdC4gIEFsbG93IHdyaXRlYmVoaW5kIGNhY2hpbmcgZXJyb3JzIHRvIAorYmUgcmV0dXJuZWQgdG8gdGhlIGFwcGxpY2F0aW9uIGF0IGZpbGUgY2xvc2UuCisKK1ZlcnNpb24gMC43NgorLS0tLS0tLS0tLS0tCitDbGVhbiB1cCBvcHRpb25zIGRpc3BsYXllZCBpbiAvcHJvYy9tb3VudHMgYnkgc2hvd19vcHRpb25zIHRvCitiZSBtb3JlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBmaWxlc3lzdGVtcy4KKworVmVyc2lvbiAwLjc1CistLS0tLS0tLS0tLS0KK0ZpeCBkZWxldGUgb2YgcmVhZG9ubHkgZmlsZSB0byBXaW5kb3dzIHNlcnZlcnMuICBSZWZsZWN0CitwcmVzZW5jZSBvciBhYnNlbmNlIG9mIHJlYWQgb25seSBkb3MgYXR0cmlidXRlIGluIG1vZGUKK2JpdHMgZm9yIHNlcnZlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBDSUZTIFVuaXggZXh0ZW5zaW9ucy4KK0ZpeCBzaG9ydGVuZWQgcmVzdWx0cyBvbiByZWFkZGlyIG9mIGxhcmdlIGRpcmVjdG9yaWVzIHRvCitzZXJ2ZXJzIHN1cHBvcnRpbmcgQ0lGUyBVbml4IGV4dGVuc2lvbnMgKGNhdXNlZCBieQoraW5jb3JyZWN0IHJlc3VtZSBrZXkpLgorCitWZXJzaW9uIDAuNzQKKy0tLS0tLS0tLS0tLQorRml4IHRydW5jYXRlIGJ1ZyAoc2V0IGZpbGUgc2l6ZSkgdGhhdCBjb3VsZCBjYXVzZSBoYW5ncyBlLmcuIHJ1bm5pbmcgZnN4CisKK1ZlcnNpb24gMC43MworLS0tLS0tLS0tLS0tCit1bmxvYWQgbmxzIGlmIG1vdW50IGZhaWxzLgorCitWZXJzaW9uIDAuNzIKKy0tLS0tLS0tLS0tLQorQWRkIHJlc3VtZSBrZXkgc3VwcG9ydCB0byBzZWFyY2ggKHJlYWRkaXIpIGNvZGUgdG8gd29ya2Fyb3VuZAorV2luZG93cyBidWcuICBBZGQgL3Byb2MvZnMvY2lmcy9Mb29rdXBDYWNoZUVuYWJsZSB3aGljaAorYWxsb3dzIGRpc2FibGluZyBjYWNoaW5nIG9mIGF0dHJpYnV0ZSBpbmZvcm1hdGlvbiBmb3IKK2xvb2t1cHMuCisKK1ZlcnNpb24gMC43MQorLS0tLS0tLS0tLS0tCitBZGQgbW9yZSBvcGxvY2sgaGFuZGxpbmcgKGRpc3RyaWJ1dGVkIGNhY2hpbmcgY29kZSkuICBSZW1vdmUKK2RlYWQgY29kZS4gIFJlbW92ZSBleGNlc3NpdmUgc3RhY2sgc3BhY2UgdXRpbGl6YXRpb24gZnJvbQorc3ltbGluayByb3V0aW5lcy4KKworVmVyc2lvbiAwLjcwCistLS0tLS0tLS0tLS0KK0ZpeCBvb3BzIGluIGdldCBkZnMgcmVmZXJyYWwgKHRyaWdnZXJlZCB3aGVuIG51bGwgcGF0aCBzZW50IGluIHRvCittb3VudCkuICBBZGQgc3VwcG9ydCBmb3Igb3ZlcnJpZGluZyByc2l6ZSBhdCBtb3VudCB0aW1lLgorCitWZXJzaW9uIDAuNjkKKy0tLS0tLS0tLS0tLQorRml4IGJ1ZmZlciBvdmVycnVuIGluIHJlYWRkaXIgd2hpY2ggY2F1c2VkIGludGVybWl0dGVudCBrZXJuZWwgb29wc2VzLgorRml4IHdyaXRlcGFnZSBjb2RlIHRvIHJlbGVhc2Uga21hcCBvbiB3cml0ZSBkYXRhLiAgQWxsb3cgIi1pcD0iIG5ldyAKK21vdW50IG9wdGlvbiB0byBiZSBwYXNzZWQgaW4gb24gcGFyYW1ldGVyIGRpc3RpbmN0IGZyb20gdGhlIGZpcnN0IHBhcnQKKyhzZXJ2ZXIgbmFtZSBwb3J0aW9uIG9mKSB0aGUgVU5DIG5hbWUuICBBbGxvdyBvdmVycmlkZSBvZiB0aGUKK3RjcCBwb3J0IG9mIHRoZSB0YXJnZXQgc2VydmVyIHZpYSBuZXcgbW91bnQgb3B0aW9uICItcG9ydD0iICAKKworVmVyc2lvbiAwLjY4CistLS0tLS0tLS0tLS0KK0ZpeCBzZWFyY2ggaGFuZGxlIGxlYWsgb24gcmV3aW5kLiAgRml4IHNldHVpZCBhbmQgZ2lkIHNvIHRoYXQgdGhleSBhcmUgCityZWZsZWN0ZWQgaW4gdGhlIGxvY2FsIGlub2RlIGltbWVkaWF0ZWx5LiAgQ2xlYW51cCBvZiB3aGl0ZXNwYWNlCit0byBtYWtlIDIuNCBhbmQgMi41IHZlcnNpb25zIG1vcmUgY29uc2lzdGVudC4KKworCitWZXJzaW9uIDAuNjcKKy0tLS0tLS0tLS0tLQorRml4IHNpZ25hbCBzZW5kaW5nIHNvIHRoYXQgY2FwdGl2ZSB0aHJlYWQgKGNpZnNkKSBleGl0cyBvbiB1bW91bnQgCisod2hpY2ggd2FzIGNhdXNpbmcgdGhlIHdhcm5pbmcgaW4ga21lbV9jYWNoZV9mcmVlIG9mIHRoZSByZXF1ZXN0IGJ1ZmZlcnMKK2F0IHJtbW9kIHRpbWUpLiAgVGhpcyBoYWQgYnJva2VuIGFzIGEgc2lkZWVmZmVjdCBvZiB0aGUgcmVjZW50IGdsb2JhbAora2VybmVsIGNoYW5nZSB0byBkYWVtb25pemUuICBGaXggbWVtb3J5IGxlYWsgaW4gcmVhZGRpciBjb2RlIHdoaWNoCitzaG93ZWQgdXAgaW4gImxzIC1SIiAoYW5kIGFwcGxpY2F0aW9ucyB0aGF0IGRpZCBzZWFyY2ggcmV3aW5kaW5nKS4KKworVmVyc2lvbiAwLjY2CistLS0tLS0tLS0tLS0KK1JlY29ubmVjdCB0aWRzIGFuZCBmaWRzIGFmdGVyIHNlc3Npb24gcmVjb25uZWN0aW9uIChzdGlsbCBkbyBub3QKK3JlY29ubmVjdCBieXRlIHJhbmdlIGxvY2tzIHRob3VnaCkuICBGaXggcHJvYmxlbSBjYWNoaW5nCitsb29rdXAgaW5mb3JtYXRpb24gZm9yIGRpcmVjdG9yeSBpbm9kZXMsIGltcHJvdmluZyBwZXJmb3JtYW5jZSwKK2VzcGVjaWFsbHkgaW4gZGVlcCBkaXJlY3RvcnkgdHJlZXMuICBGaXggdmFyaW91cyBidWlsZCB3YXJuaW5ncy4KKworVmVyc2lvbiAwLjY1CistLS0tLS0tLS0tLS0KK0ZpbmlzaCBmaXhlcyB0byBjb21taXQgd3JpdGUgZm9yIGNhY2hpbmcvcmVhZGFoZWFkIGNvbnNpc3RlbmN5LiAgZnN4IAorbm93IHdvcmtzIHRvIFNhbWJhIHNlcnZlcnMuICBGaXggb29wcyBjYXVzZWQgd2hlbiByZWFkYWhlYWQKK3dhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4KKworVmVyc2lvbiAwLjY0CistLS0tLS0tLS0tLS0KK0ZpeCBkYXRhIGNvcnJ1cHRpb24gKGluIHBhcnRpYWwgcGFnZSBhZnRlciB0cnVuY2F0ZSkgdGhhdCBjYXVzZWQgZnN4IHRvCitmYWlsIHRvIFdpbmRvd3Mgc2VydmVycy4gIENsZWFuZWQgdXAgc29tZSBleHRyYW5lb3VzIGVycm9yIGxvZ2dpbmcgaW4KK2NvbW1vbiBlcnJvciBwYXRocy4gIEFkZCBnZW5lcmljIHNlbmRmaWxlIHN1cHBvcnQuCisKK1ZlcnNpb24gMC42MworLS0tLS0tLS0tLS0tCitGaXggbWVtb3J5IGxlYWsgaW4gQWxsb2NNaWRRRW50cnkuCitGaW5pc2ggcmVjb25uZWN0aW9uIGxvZ2ljLCBzbyBjb25uZWN0aW9uIHdpdGggc2VydmVyIGNhbiBiZSBkcm9wcGVkCisob3Igc2VydmVyIHJlYm9vdGVkKSBhbmQgdGhlIGNpZnMgY2xpZW50IHdpbGwgcmVjb25uZWN0LiAgCisKK1ZlcnNpb24gMC42MgorLS0tLS0tLS0tLS0tCitGaXggdGVtcG9yYXJ5IHNvY2tldCBsZWFrIHdoZW4gYmFkIHVzZXJpZCBvciBwYXNzd29yZCBzcGVjaWZpZWQgCisob3Igb3RoZXIgU01CU2Vzc1NldHVwIGZhaWx1cmUpLiAgSW5jcmVhc2UgbWF4aW11bSBidWZmZXIgc2l6ZSB0byBzbGlnaHRseQorb3ZlciAxNksgdG8gYWxsb3cgbmVnb3RpYXRpb24gb2YgdXAgdG8gU2FtYmEgYW5kIFdpbmRvd3Mgc2VydmVyIGRlZmF1bHQgcmVhZCAKK3NpemVzLiAgQWRkIHN1cHBvcnQgZm9yIHJlYWRwYWdlcworCitWZXJzaW9uIDAuNjEKKy0tLS0tLS0tLS0tLQorRml4IG9vcHMgd2hlbiB1c2VybmFtZSBub3QgcGFzc2VkIGluIG9uIG1vdW50LiAgRXh0ZW5zaXZlIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMKK3RvIGVycm9yIGxvZ2dpbmcgKHN0cmlwIHJlZHVuZGFudCBuZXdsaW5lcywgY2hhbmdlIGRlYnVnIG1hY3JvcyB0byBlbnN1cmUgbmV3bGluZQorcGFzc2VkIGluIGFuZCB0byBiZSBtb3JlIGNvbnNpc3RlbnQpLiAgRml4IHdyaXRlcGFnZSB3cm9uZyBmaWxlIGhhbmRsZSBwcm9ibGVtLAorYSByZWFkb25seSBmaWxlIGhhbmRsZSBjb3VsZCBiZSBpbmNvcnJlY3RseSB1c2VkIHRvIGF0dGVtcHQgdG8gd3JpdGUgb3V0CitmaWxlIHVwZGF0ZXMgdGhyb3VnaCB0aGUgcGFnZSBjYWNoZSB0byBtdWx0aXBseSBvcGVuIGZpbGVzLiAgVGhpcyBjb3VsZCBjYXVzZQordGhlIGlvem9uZSBiZW5jaG1hcmsgdG8gZmFpbCBvbiB0aGUgZndyaXRlIHRlc3QuIEZpeCBidWcgbW91bnRpbmcgdHdvIGRpZmZlcmVudAorc2hhcmVzIHRvIHRoZSBzYW1lIFdpbmRvd3Mgc2VydmVyIHdoZW4gdXNpbmcgZGlmZmVyZW50IHVzZXJuYW1lcworKGRvaW5nIHRoaXMgdG8gU2FtYmEgc2VydmVycyB3b3JrZWQgYnV0IFdpbmRvd3Mgd2FzIHJlamVjdGluZyBpdCkgLSBub3cgaXQgaXMKK3Bvc3NpYmxlIHRvIHVzZSBkaWZmZXJlbnQgdXNlcmlkcyB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIHNhbWUgc2VydmVyIGZyb20gYQorTGludXggY2xpZW50LiBGaXggb29wcyB3aGVuIHRyZWVEaXNjb25uZWN0IGNhbGxlZCBkdXJpbmcgdW5tb3VudCBvbgorcHJldmlvdXNseSBmcmVlZCBzb2NrZXQuCisKK1ZlcnNpb24gMC42MAorLS0tLS0tLS0tLS0tCitGaXggb29wcyBpbiByZWFkcGFnZXMgY2F1c2VkIGJ5IG5vdCBzZXR0aW5nIGFkZHJlc3Mgc3BhY2Ugb3BlcmF0aW9ucyBpbiBpbm9kZSBpbiAKK3JhcmUgY29kZSBwYXRoLiAKKworVmVyc2lvbiAwLjU5CistLS0tLS0tLS0tLS0KK0luY2x1ZGVzIHN1cHBvcnQgZm9yIGRlbGV0aW5nIG9mIG9wZW4gZmlsZXMgYW5kIHJlbmFtaW5nIG92ZXIgZXhpc3RpbmcgZmlsZXMgKHBlciBQT1NJWAorcmVxdWlyZW1lbnQpLiAgQWRkIHJlYWRsaW5rIHN1cHBvcnQgZm9yIFdpbmRvd3MganVuY3Rpb24gcG9pbnRzIChkaXJlY3Rvcnkgc3ltbGlua3MpLgorCitWZXJzaW9uIDAuNTgKKy0tLS0tLS0tLS0tLQorQ2hhbmdlZCByZWFkIGFuZCB3cml0ZSB0byBnbyB0aHJvdWdoIHBhZ2VjYWNoZS4gQWRkZWQgYWRkaXRpb25hbCBhZGRyZXNzIHNwYWNlIG9wZXJhdGlvbnMuCitNZW1vcnkgbWFwcGVkIG9wZXJhdGlvbnMgbm93IHdvcmtpbmcuCisKK1ZlcnNpb24gMC41NworLS0tLS0tLS0tLS0tCitBZGRlZCB3cml0ZXBhZ2UgY29kZSBmb3IgYWRkaXRpb25hbCBtZW1vcnkgbWFwcGluZyBzdXBwb3J0LiAgRml4ZWQgbGVhayBpbiB4aWRzIGNhdXNpbmcKK3RoZSBzaW11bHRhbmVvdXMgb3BlcmF0aW9ucyBjb3VudGVyICgvcHJvYy9mcy9jaWZzL1NpbXVsdGFuZW91c09wcykgdG8gaW5jcmVhc2Ugb24gCitldmVyeSBzdGF0IGNhbGwuICBBZGRpdGlvbmFsIGZvcm1hdHRpbmcgY2xlYW51cC4gCisKK1ZlcnNpb24gMC41NgorLS0tLS0tLS0tLS0tCitGaXggYmlnZW5kaWFuIGJ1ZyBpbiBvcmRlciBvZiB0aW1lIGNvbnZlcnNpb24uIE1lcmdlIDIuNSB0byAyLjQgdmVyc2lvbi4gIEZvcm1hdHRpbmcgY2xlYW51cC4gICAKKworVmVyc2lvbiAwLjU1CistLS0tLS0tLS0tLS0KK0ZpeGVzIGZyb20gWndhbmUgTXdhaWthbWJvIGZvciBhZGRpbmcgbWlzc2luZyByZXR1cm4gY29kZSBjaGVja2luZyBpbiBhIGZldyBwbGFjZXMuCitBbHNvIGluY2x1ZGVkIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiBoaXMgZml4IHRvIHByb3RlY3QgZ2xvYmFsIGxpc3QgbWFuaXB1bGF0aW9uIG9mCit0aGUgc21iIHNlc3Npb24gYW5kIHRyZWUgY29ubmVjdGlvbiBhbmQgbWlkIHJlbGF0ZWQgZ2xvYmFsIHZhcmlhYmxlcy4KKworVmVyc2lvbiAwLjU0CistLS0tLS0tLS0tLS0KK0ZpeCBwcm9ibGVtIHdpdGggY2FwdGl2ZSB0aHJlYWQgaGFuZ2luZyBhcm91bmQgYXQgdW5tb3VudCB0aW1lLiAgQWRqdXN0IHRvIDIuNS40Mi1wcmUKK2NoYW5nZXMgdG8gc3VwZXJibG9jayBsYXlvdXQuICAgUmVtb3ZlIHdhc3RlZnVsIGFsbG9jYXRpb24gb2Ygc21iIGJ1ZmZlcnMgKG5vdyB0aGUgc2VuZCAKK2J1ZmZlciBpcyByZXVzZWQgZm9yIHJlc3BvbnNlcykuICBBZGQgbW9yZSBvcGxvY2sgaGFuZGxpbmcuIEFkZGl0aW9uYWwgbWlub3IgY2xlYW51cC4KKworVmVyc2lvbiAwLjUzCistLS0tLS0tLS0tLS0KK01vcmUgc3R5bGlzdGljIHVwZGF0ZXMgdG8gYmV0dGVyIG1hdGNoIGtlcm5lbCBzdHlsZS4gIEFkZCBhZGRpdGlvbmFsIHN0YXRpc3RpY3MKK2ZvciBmaWxlc3lzdGVtIHdoaWNoIGNhbiBiZSB2aWV3ZWQgdmlhIC9wcm9jL2ZzL2NpZnMuICBBZGQgbW9yZSBwaWVjZXMgb2YgTlRMTXYyCithbmQgQ0lGUyBQYWNrZXQgU2lnbmluZyBlbmFibGVtZW50LgorCitWZXJzaW9uIDAuNTIKKy0tLS0tLS0tLS0tLQorUmVwbGFjZSBjYWxsIHRvIHNsZWVwX29uIHdpdGggc2FmZXIgd2FpdF9vbl9ldmVudC4KK01ha2Ugc3R5bGlzdGljIGNoYW5nZXMgdG8gYmV0dGVyIG1hdGNoIGtlcm5lbCBzdHlsZSByZWNvbW1lbmRhdGlvbnMuCitSZW1vdmUgbW9zdCB0eXBlZGVmIHVzYWdlIChleGNlcHQgZm9yIHRoZSBQRFVzIHRoZW1zZWx2ZXMpLgorCitWZXJzaW9uIDAuNTEKKy0tLS0tLS0tLS0tLQorVXBkYXRlIG1vdW50IHNvIHRoZSAtdW5jIG1vdW50IG9wdGlvbiBpcyBubyBsb25nZXIgcmVxdWlyZWQgKHRoZSBpcCBhZGRyZXNzIGNhbiBiZSBzcGVjaWZpZWQKK2luIGEgVU5DIHN0eWxlIGRldmljZSBuYW1lLiAgIEltcGxlbWVudGF0aW9uIG9mIHJlYWRwYWdlL3dyaXRlcGFnZSBzdGFydGVkLgorCitWZXJzaW9uIDAuNTAKKy0tLS0tLS0tLS0tLQorRml4IGludGVybWl0dGVudCBwcm9ibGVtIHdpdGggaW5jb3JyZWN0IHNtYiBoZWFkZXIgY2hlY2tpbmcgb24gYmFkbHkgCitmcmFnbWVudGVkIHRjcCByZXNwb25zZXMKKworVmVyc2lvbiAwLjQ5CistLS0tLS0tLS0tLS0KK0ZpeGVzIHRvIHNldHRpbmcgb2YgYWxsb2NhdGlvbiBzaXplIGFuZCBmaWxlIHNpemUuCisKK1ZlcnNpb24gMC40OAorLS0tLS0tLS0tLS0tCitWYXJpb3VzIDIuNS4zOCBmaXhlcy4gIE5vdyB3b3JrcyBvbiAyLjUuMzgKKworVmVyc2lvbiAwLjQ3CistLS0tLS0tLS0tLS0KK1ByZXBhcmUgZm9yIDIuNSBrZXJuZWwgbWVyZ2UuICBSZW1vdmUgaWZkZWZzLgorCitWZXJzaW9uIDAuNDYKKy0tLS0tLS0tLS0tLQorU29ja2V0IGJ1ZmZlciBtYW5hZ2VtZW50IGZpeGVzLiAgRml4IGR1YWwgZnJlZS4KKworVmVyc2lvbiAwLjQ1CistLS0tLS0tLS0tLS0KK1ZhcmlvdXMgYmlnIGVuZGlhbiBmaXhlcyBmb3IgaGFyZGxpbmtzIGFuZCBzeW1saW5rcyBhbmQgYWxzbyBmb3IgZGZzLgorCitWZXJzaW9uIDAuNDQKKy0tLS0tLS0tLS0tLQorVmFyaW91cyBiaWcgZW5kaWFuIGZpeGVzIGZvciBzZXJ2ZXJzIHdpdGggVW5peCBleHRlbnNpb25zIHN1Y2ggYXMgU2FtYmEKKworVmVyc2lvbiAwLjQzCistLS0tLS0tLS0tLS0KK1ZhcmlvdXMgRmluZE5leHQgZml4ZXMgZm9yIGluY29ycmVjdCBmaWxlbmFtZXMgb24gbGFyZ2UgZGlyZWN0b3J5IHNlYXJjaGVzIG9uIGJpZyBlbmRpYW4KK2NsaWVudHMuICBiYXNpYyBwb3NpeCBmaWxlIGkvbyB0ZXN0cyBub3cgd29yayBvbiBiaWcgZW5kaWFuIG1hY2hpbmVzLCBub3QganVzdCBsZQorCitWZXJzaW9uIDAuNDIKKy0tLS0tLS0tLS0tLQorU2Vzc2lvblNldHVwIGFuZCBOZWdvdGlhdGVQcm90b2NvbCBub3cgd29yayBmcm9tIEJpZyBFbmRpYW4gbWFjaGluZXMuCitWYXJpb3VzIEJpZyBFbmRpYW4gZml4ZXMgZm91bmQgZHVyaW5nIHRlc3Rpbmcgb24gdGhlIExpbnV4IG9uIDM5MC4gIFZhcmlvdXMgZml4ZXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlcgordmVyc2lvbnMgb2YgMi40IGtlcm5lbCAobm93IGJ1aWxkcyBhbmQgd29ya3MgYWdhaW4gb24ga2VybmVscyBhdCBsZWFzdCBhcyBlYXJseSBhcyAyLjQuNykuCisKK1ZlcnNpb24gMC40MQorLS0tLS0tLS0tLS0tCitWYXJpb3VzIG1pbm9yIGZpeGVzIGZvciBDb25uZWN0YXRob24gUG9zaXggImJhc2ljIiBmaWxlIGkvbyB0ZXN0IHN1aXRlLiAgRGlyZWN0b3J5IGNhY2hpbmcgZml4ZWQgc28gaGFyZGxpbmtlZAorZmlsZXMgbm93IHJldHVybiB0aGUgY29ycmVjdCBudW1iZXIgb2YgbGlua3Mgb24gZnN0YXQgYXMgdGhleSBhcmUgcmVwZWF0ZWRseSBsaW5rZWQgYW5kIHVubGlua2VkLgorCitWZXJzaW9uIDAuNDAKKy0tLS0tLS0tLS0tLQorSW1wbGVtZW50ZWQgIlJhdyIgKGkuZS4gbm90IGVuY2Fwc3VsYXRlZCBpbiBTUE5FR08pIE5UTE1TU1AgKGkuZS4gdGhlIFNlY3VyaXR5IFByb3ZpZGVyIEludGVyZmFjZSB1c2VkIHRvIG5lZ290aWF0ZQorc2Vzc2lvbiBhZHZhbmNlZCBzZXNzaW9uIGF1dGhlbnRpY2F0aW9uKS4gIFJhdyBOVExNU1NQIGlzIHByZWZlcnJlZCBieSBXaW5kb3dzIDIwMDAgUHJvZmVzc2lvbmFsIGFuZCBXaW5kb3dzIFhQLgorQmVnYW4gaW1wbGVtZW50aW5nIHN1cHBvcnQgZm9yIFNQTkVHTyBlbmNhcHN1bGF0aW9uIG9mIE5UTE1TU1AgYmFzZWQgc2Vzc2lvbiBhdXRoZW50aWNhdGlvbiBibG9icworKHdoaWNoIGlzIHRoZSBtZWNoYW5pc20gcHJlZmVycmVkIGJ5IFdpbmRvd3MgMjAwMCBzZXJ2ZXIgaW4gdGhlIGFic2VuY2Ugb2YgS2VyYmVyb3MpLgorCitWZXJzaW9uIDAuMzgKKy0tLS0tLS0tLS0tLQorSW50cm9kdWNlZCBvcHRpb25hbCBtb3VudCBoZWxwZXIgdXRpbGl0eSBtb3VudC5jaWZzIGFuZCBtYWRlIGNvcmVxIGNoYW5nZXMgdG8gY2lmcyB2ZnMgdG8gZW5hYmxlCitpdC4gRml4ZWQgYSBmZXcgYnVncyBpbiB0aGUgREZTIGNvZGUgKGUuZy4gYmNjIHR3byBieXRlcyB0b28gc2hvcnQgYW5kIGluY29ycmVjdCB1aWQgaW4gUERVKS4KKworVmVyc2lvbiAwLjM3CistLS0tLS0tLS0tLS0KK1Jld3JvdGUgbXVjaCBvZiBjb25uZWN0aW9uIGFuZCBtb3VudC91bm1vdW50IGxvZ2ljIHRvIGhhbmRsZSBidWdzIHdpdGgKK211bHRpcGxlIHVzZXMgdG8gc2FtZSBzaGFyZSwgbXVsdGlwbGUgdXNlcnMgdG8gc2FtZSBzZXJ2ZXIgZXRjLgorCitWZXJzaW9uIDAuMzYKKy0tLS0tLS0tLS0tLQorRml4ZWQgbWFqb3IgcHJvYmxlbSB3aXRoIGRlbnRyeSBjb3JydXB0aW9uIChtaXNzaW5nIGNhbGwgdG8gZHB1dCkKKworVmVyc2lvbiAwLjM1CistLS0tLS0tLS0tLS0KK1Jld3JpdGUgb2YgcmVhZGRpciBjb2RlIHRvIGZpeCBidWcuIFZhcmlvdXMgZml4ZXMgZm9yIGJpZ2VuZGlhbiBtYWNoaW5lcy4KK0JlZ2luIGFkZGluZyBvcGxvY2sgc3VwcG9ydC4gIE11bHRpdXNlcm1vdW50IGFuZCBvcGxvY2tFbmFibGVkIGZsYWdzIGFkZGVkIHRvIC9wcm9jL2ZzL2NpZnMKK2FsdGhvdWdoIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb24gbm90IGZ1bGx5IGltcGxlbWVudGVkIGluIHRoZSB2ZnMgeWV0CisKK1ZlcnNpb24gMC4zNAorLS0tLS0tLS0tLS0tCitGaXhlZCBkZW50cnkgY2FjaGluZyBidWcsIG1pc2MuIGNsZWFudXAgCisKK1ZlcnNpb24gMC4zMworLS0tLS0tLS0tLS0tCitGaXhlZCAyLjUgc3VwcG9ydCB0byBoYW5kbGUgYnVpbGQgYW5kIGNvbmZpZ3VyZSBjaGFuZ2VzIGFzIHdlbGwgYXMgbWlzYy4gMi41IGNoYW5nZXMuICBOb3cgY2FuIGJ1aWxkCitvbiBjdXJyZW50IDIuNSBiZXRhIHZlcnNpb24gKDIuNS4yNCkgb2YgdGhlIExpbnV4IGtlcm5lbCBhcyB3ZWxsIGFzIG9uIDIuNCBMaW51eCBrZXJuZWxzLgorU3VwcG9ydCBmb3IgU1RBVFVTIGNvZGVzIChuZXdlciAzMiBiaXQgTlQgZXJyb3IgY29kZXMpIGFkZGVkLiAgREZTIHN1cHBvcnQgYmVndW4gdG8gYmUgYWRkZWQuCisKK1ZlcnNpb24gMC4zMgorLS0tLS0tLS0tLS0tCitVbml4IGV4dGVuc2lvbnMgKHN5bWxpbmssIHJlYWRsaW5rLCBoYXJkbGluaywgY2htb2QgYW5kIHNvbWUgY2hncnAgYW5kIGNob3duKSBpbXBsZW1lbnRlZAorYW5kIHRlc3RlZCBhZ2FpbnN0IFNhbWJhIDIuMi41CisKKworVmVyc2lvbiAwLjMxCistLS0tLS0tLS0tLS0KKzEpIEZpeGVkIGxvY2tyYW5nZSB0byBiZSBjb3JyZWN0IChpdCB3YXMgb25lIGJ5dGUgdG9vIHNob3J0KQorCisyKSBGaXhlZCBHRVRMSyAoaS5lLiB0aGUgZmNudGwgY2FsbCB0byB0ZXN0IGEgcmFuZ2Ugb2YgYnl0ZXMgaW4gYSBmaWxlIHRvIHNlZSBpZiBsb2NrZWQpIHRvIGNvcnJlY3RseSAKK3Nob3cgcmFuZ2UgYXMgbG9ja2VkIHdoZW4gdGhlcmUgaXMgYSBjb25mbGljdCB3aXRoIGFuIGV4aXN0aW5nIGxvY2suCisKKzMpIGRlZmF1bHQgZmlsZSBwZXJtcyBhcmUgbm93IDI3NjcgKGluZGljYXRpbmcgc3VwcG9ydCBmb3IgbWFuZGF0b3J5IGxvY2tzKSBpbnN0ZWFkIG9mIDc3NyBmb3IgZGlyZWN0b3JpZXMKK2luIG1vc3QgY2FzZXMuICBFdmVudHVhbGx5IHdpbGwgb2ZmZXIgb3B0aW9uYWwgYWJpbGl0eSB0byBxdWVyeSBzZXJ2ZXIgZm9yIHRoZSBjb3JyZWN0IHBlcm1zLgorCiszKSBGaXhlZCBldmVudHVhbCB0cmFwIHdoZW4gbW91bnRpbmcgdHdpY2UgdG8gZGlmZmVyZW50IHNoYXJlcyBvbiB0aGUgc2FtZSBzZXJ2ZXIgd2hlbiB0aGUgZmlyc3Qgc3VjY2VlZGVkIAorYnV0IHRoZSBzZWNvbmQgb25lIHdhcyBpbnZhbGlkIGFuZCBmYWlsZWQgKHRoZSBzZWNvbmQgb25lIHdhcyBpbmNvcnJlY3RseSBkaXNjb25uZWN0aW5nIHRoZSB0Y3AgYW5kIHNtYgorc2Vzc2lvbikgCisKKzQpIEZpeGVkIGVycm9yIGxvZ2dpbmcgb2YgdmFsaWQgbW91bnQgb3B0aW9ucworCis1KSBSZW1vdmVkIGxvZ2dpbmcgb2YgcGFzc3dvcmQgZmllbGQuCisKKzYpIE1vdmVkIG5lZ290aWF0ZSwgdHJlZURpc2Nvbm5lY3QgYW5kIHVsb2dnb2ZmWCAob25seSB0Q29ueCBhbmQgU2Vzc1NldHVwIHJlbWFpbiBpbiBjb25uZWN0LmMpIHRvIGNpZnNzbWIuYworYW5kIGNsZWFuZWQgdGhlbSB1cCBhbmQgbWFkZSB0aGVtIG1vcmUgY29uc2lzdGVudCB3aXRoIG90aGVyIGNpZnMgZnVuY3Rpb25zLiAKKworNykgU2VydmVyIHN1cHBvcnQgZm9yIFVuaXggZXh0ZW5zaW9ucyBpcyBub3cgZnVsbHkgZGV0ZWN0ZWQgYW5kIEZpbmRGaXJzdCBpcyBpbXBsZW1lbnRlZCBib3RoIHdheXMgCisod2l0aCBvciB3aXRob3V0IFVuaXggZXh0ZW5zaW9ucykgYnV0IEZpbmROZXh0IGFuZCBRdWVyeVBhdGhJbmZvIHdpdGggdGhlIFVuaXggZXh0ZW5zaW9ucyBhcmUgbm90IGNvbXBsZXRlZCwKK25vciBpcyB0aGUgc3ltbGluayBzdXBwb3J0IHVzaW5nIHRoZSBVbml4IGV4dGVuc2lvbnMKKworOCkgU3RhcnRlZCBhZGRpbmcgdGhlIHJlYWRsaW5rIGFuZCBmb2xsb3dfbGluayBjb2RlIAorCitWZXJzaW9uIDAuMyAKKy0tLS0tLS0tLS0tCitJbml0aWFsIGRyb3AKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9jaWZzL1JFQURNRSBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2lmcy9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ1NjIyZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2lmcy9SRUFETUUKQEAgLTAsMCArMSw3NTMgQEAKK1RoZSBDSUZTIFZGUyBzdXBwb3J0IGZvciBMaW51eCBzdXBwb3J0cyBtYW55IGFkdmFuY2VkIG5ldHdvcmsgZmlsZXN5c3RlbSAKK2ZlYXR1cmVzIHN1Y2ggYXMgaGllcmFyY2hpY2FsIGRmcyBsaWtlIG5hbWVzcGFjZSwgaGFyZGxpbmtzLCBsb2NraW5nIGFuZCBtb3JlLiAgCitJdCB3YXMgZGVzaWduZWQgdG8gY29tcGx5IHdpdGggdGhlIFNOSUEgQ0lGUyBUZWNobmljYWwgUmVmZXJlbmNlICh3aGljaCAKK3N1cGVyc2VkZXMgdGhlIDE5OTIgWC9PcGVuIFNNQiBTdGFuZGFyZCkgYXMgd2VsbCBhcyB0byBwZXJmb3JtIGJlc3QgcHJhY3RpY2UgCitwcmFjdGljYWwgaW50ZXJvcGVyYWJpbGl0eSB3aXRoIFdpbmRvd3MgMjAwMCwgV2luZG93cyBYUCwgU2FtYmEgYW5kIGVxdWl2YWxlbnQgCitzZXJ2ZXJzLiAgVGhpcyBjb2RlIHdhcyBkZXZlbG9wZWQgaW4gcGFydGljaXBhdGlvbiB3aXRoIHRoZSBQcm90b2NvbCBGcmVlZG9tCitJbmZvcm1hdGlvbiBGb3VuZGF0aW9uLgorCitQbGVhc2Ugc2VlCisgIGh0dHA6Ly9wcm90b2NvbGZyZWVkb20ub3JnLyBhbmQKKyAgaHR0cDovL3NhbWJhLm9yZy9zYW1iYS9QRklGLworZm9yIG1vcmUgZGV0YWlscy4KKworCitGb3IgcXVlc3Rpb25zIG9yIGJ1ZyByZXBvcnRzIHBsZWFzZSBjb250YWN0OgorICAgIHNmcmVuY2hAc2FtYmEub3JnIChzZnJlbmNoQHVzLmlibS5jb20pIAorCitCdWlsZCBpbnN0cnVjdGlvbnM6Cis9PT09PT09PT09PT09PT09PT0KK0ZvciBMaW51eCAyLjQ6CisxKSBHZXQgdGhlIGtlcm5lbCBzb3VyY2UgKGUuZy5mcm9tIGh0dHA6Ly93d3cua2VybmVsLm9yZykKK2FuZCBkb3dubG9hZCB0aGUgY2lmcyB2ZnMgc291cmNlIChzZWUgdGhlIHByb2plY3QgcGFnZQorYXQgaHR0cDovL3VzMS5zYW1iYS5vcmcvc2FtYmEvTGludXhfQ0lGU19jbGllbnQuaHRtbCkKK2FuZCBjaGFuZ2UgZGlyZWN0b3J5IGludG8gdGhlIHRvcCBvZiB0aGUga2VybmVsIGRpcmVjdG9yeQordGhlbiBwYXRjaCB0aGUga2VybmVsIChlLmcuICJwYXRjaCAtcDEgPCBjaWZzXzI0LnBhdGNoIikgCit0byBhZGQgdGhlIGNpZnMgdmZzIHRvIHlvdXIga2VybmVsIGNvbmZpZ3VyZSBvcHRpb25zIGlmCitpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBhZGRlZCAoZS5nLiBjdXJyZW50IFN1U0UgYW5kIFVMCit1c2VycyBkbyBub3QgbmVlZCB0byBhcHBseSB0aGUgY2lmc18yNC5wYXRjaCBzaW5jZSB0aGUgY2lmcyB2ZnMgaXMKK2FscmVhZHkgaW4gdGhlIGtlcm5lbCBjb25maWd1cmUgbWVudSkgYW5kIHRoZW4KK21rZGlyIGxpbnV4L2ZzL2NpZnMgYW5kIHRoZW4gY29weSB0aGUgY3VycmVudCBjaWZzIHZmcyBmaWxlcyBmcm9tCit0aGUgY2lmcyBkb3dubG9hZCB0byB5b3VyIGtlcm5lbCBidWlsZCBkaXJlY3RvcnkgZS5nLgorCisJY3AgPGNpZnNfZG93bmxvYWRfZGlyPi9mcy9jaWZzLyogdG8gPGtlcm5lbF9kb3dubG9hZF9kaXI+L2ZzL2NpZnMKKwkKKzIpIG1ha2UgbWVudWNvbmZpZyAob3IgbWFrZSB4Y29uZmlnKQorMykgc2VsZWN0IGNpZnMgZnJvbSB3aXRoaW4gdGhlIG5ldHdvcmsgZmlsZXN5c3RlbSBjaG9pY2VzCis0KSBzYXZlIGFuZCBleGl0Cis1KSBtYWtlIGRlcAorNikgbWFrZSBtb2R1bGVzIChvciAibWFrZSIgaWYgQ0lGUyBWRlMgbm90IHRvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlKQorCitGb3IgTGludXggMi42OgorMSkgRG93bmxvYWQgdGhlIGtlcm5lbCAoZS5nLiBmcm9tIGh0dHA6Ly93d3cua2VybmVsLm9yZykKK2FuZCBjaGFuZ2UgZGlyZWN0b3J5IGludG8gdGhlIHRvcCBvZiB0aGUga2VybmVsIGRpcmVjdG9yeSB0cmVlCisoZS5nLiAvdXNyL3NyYy9saW51eC0yLjUuNzMpCisyKSBtYWtlIG1lbnVjb25maWcgKG9yIG1ha2UgeGNvbmZpZykKKzMpIHNlbGVjdCBjaWZzIGZyb20gd2l0aGluIHRoZSBuZXR3b3JrIGZpbGVzeXN0ZW0gY2hvaWNlcworNCkgc2F2ZSBhbmQgZXhpdAorNSkgbWFrZQorCisKK0luc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnM6Cis9PT09PT09PT09PT09PT09PT09PT09PT09CitJZiB5b3UgaGF2ZSBidWlsdCB0aGUgQ0lGUyB2ZnMgYXMgbW9kdWxlIChzdWNjZXNzZnVsbHkpIHNpbXBseQordHlwZSAibWFrZSBtb2R1bGVzX2luc3RhbGwiIChvciBpZiB5b3UgcHJlZmVyLCBtYW51YWxseSBjb3B5IHRoZSBmaWxlIHRvCit0aGUgbW9kdWxlcyBkaXJlY3RvcnkgZS5nLiAvbGliL21vZHVsZXMvMi40LjEwLTRHQi9rZXJuZWwvZnMvY2lmcy9jaWZzLm8pLgorCitJZiB5b3UgaGF2ZSBidWlsdCB0aGUgQ0lGUyB2ZnMgaW50byB0aGUga2VybmVsIGl0c2VsZiwgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMKK2ZvciB5b3VyIGRpc3RyaWJ1dGlvbiBvbiBob3cgdG8gaW5zdGFsbCBhIG5ldyBrZXJuZWwgKHVzdWFsbHkgeW91Cit3b3VsZCBzaW1wbHkgdHlwZSAibWFrZSBpbnN0YWxsIikuCisKK0lmIHlvdSBkbyBub3QgaGF2ZSB0aGUgdXRpbGl0eSBtb3VudC5jaWZzIChpbiB0aGUgU2FtYmEgMy4wIHNvdXJjZSB0cmVlIGFuZCBvbiAKK3RoZSBDSUZTIFZGUyB3ZWIgc2l0ZSkgY29weSBpdCB0byB0aGUgc2FtZSBkaXJlY3RvcnkgaW4gd2hpY2ggbW91bnQuc21iZnMgYW5kIAorc2ltaWxhciBmaWxlcyByZXNpZGUgKHVzdWFsbHkgL3NiaW4pLiAgQWx0aG91Z2ggdGhlIGhlbHBlciBzb2Z0d2FyZSBpcyBub3QgIAorcmVxdWlyZWQsIG1vdW50LmNpZnMgaXMgcmVjb21tZW5kZWQuICBFdmVudHVhbGx5IHRoZSBTYW1iYSAzLjAgdXRpbGl0eSBwcm9ncmFtIAorIm5ldCIgbWF5IGFsc28gYmUgaGVscGZ1bCBzaW5jZSBpdCBtYXkgc29tZWRheSBwcm92aWRlIGVhc2llciBtb3VudCBzeW50YXggZm9yCit1c2VycyB3aG8gYXJlIHVzZWQgdG8gV2luZG93cyBlLmcuCisJbmV0IHVzZSA8bW91bnQgcG9pbnQ+IDxVTkMgbmFtZSBvciBjaWZzIFVSTD4KK05vdGUgdGhhdCBydW5uaW5nIHRoZSBXaW5iaW5kIHBhbS9uc3MgbW9kdWxlIChsb2dvbiBzZXJ2aWNlKSBvbiBhbGwgb2YgeW91cgorTGludXggY2xpZW50cyBpcyB1c2VmdWwgaW4gbWFwcGluZyBVaWRzIGFuZCBHaWRzIGNvbnNpc3RlbnRseSBhY3Jvc3MgdGhlCitkb21haW4gdG8gdGhlIHByb3BlciBuZXR3b3JrIHVzZXIuICBUaGUgbW91bnQuY2lmcyBtb3VudCBoZWxwZXIgY2FuIGJlCit0cml2aWFsbHkgYnVpbHQgZnJvbSBTYW1iYSAzLjAgb3IgbGF0ZXIgc291cmNlIGUuZy4gYnkgZXhlY3V0aW5nOgorCisJZ2NjIHNhbWJhL3NvdXJjZS9jbGllbnQvbW91bnQuY2lmcy5jIC1vIG1vdW50LmNpZnMKKworSWYgY2lmcyBpcyBidWlsdCBhcyBhIG1vZHVsZSwgdGhlbiB0aGUgc2l6ZSBhbmQgbnVtYmVyIG9mIG5ldHdvcmsgYnVmZmVycworYW5kIG1heGltdW0gbnVtYmVyIG9mIHNpbXVsdGFuZW91cyByZXF1ZXN0cyB0byBvbmUgc2VydmVyIGNhbiBiZSBjb25maWd1cmVkLgorQ2hhbmdpbmcgdGhlc2UgZnJvbSB0aGVpciBkZWZhdWx0cyBpcyBub3QgcmVjb21tZW5kZWQuIEJ5IGV4ZWN1dGluZyBtb2RpbmZvCisJbW9kaW5mbyBrZXJuZWwvZnMvY2lmcy9jaWZzLmtvCitvbiBrZXJuZWwvZnMvY2lmcy9jaWZzLmtvIHRoZSBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyB0aGF0IGNhbiBiZSBtYWRlCithdCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gdGltZSAoYnkgcnVubmluZyBpbnNtb2QgY2lmcy5rbykgY2FuIGJlIHNlZW4uCisKK0FsbG93aW5nIFVzZXIgTW91bnRzCis9PT09PT09PT09PT09PT09PT09PQorVG8gcGVybWl0IHVzZXJzIHRvIG1vdW50IGFuZCB1bm1vdW50IG92ZXIgZGlyZWN0b3JpZXMgdGhleSBvd24gaXMgcG9zc2libGUKK3dpdGggdGhlIGNpZnMgdmZzLiAgQSB3YXkgdG8gZW5hYmxlIHN1Y2ggbW91bnRpbmcgaXMgdG8gbWFyayB0aGUgbW91bnQuY2lmcwordXRpbGl0eSBhcyBzdWlkIChlLmcuICJjaG1vZCArcyAvc2Jpbi9tb3VudC5jaWZzKS4gVG8gZW5hYmxlIHVzZXJzIHRvIAordW1vdW50IHNoYXJlcyB0aGV5IG1vdW50IHJlcXVpcmVzCisxKSBtb3VudC5jaWZzIHZlcnNpb24gMS40IG9yIGxhdGVyCisyKSBhbiBlbnRyeSBmb3IgdGhlIHNoYXJlIGluIC9ldGMvZnN0YWIgaW5kaWNhdGluZyB0aGF0IGEgdXNlciBtYXkKK3VubW91bnQgaXQgZS5nLgorLy9zZXJ2ZXIvdXNlcnNoYXJlbmFtZSAgL21udC91c2VybmFtZSBjaWZzIHVzZXIgMCAwCisKK05vdGUgdGhhdCB3aGVuIHRoZSBtb3VudC5jaWZzIHV0aWxpdHkgaXMgcnVuIHN1aWQgKGFsbG93aW5nIHVzZXIgbW91bnRzKSwgCitpbiBvcmRlciB0byByZWR1Y2Ugcmlza3MsIHRoZSAibm9zdWlkIiBtb3VudCBmbGFnIGlzIHBhc3NlZCBpbiBvbiBtb3VudCB0bworZGlzYWxsb3cgZXhlY3V0aW9uIG9mIGFuIHN1aWQgcHJvZ3JhbSBtb3VudGVkIG9uIHRoZSByZW1vdGUgdGFyZ2V0LgorV2hlbiBtb3VudCBpcyBleGVjdXRlZCBhcyByb290LCBub3N1aWQgaXMgbm90IHBhc3NlZCBpbiBieSBkZWZhdWx0LAorYW5kIGV4ZWN1dGlvbiBvZiBzdWlkIHByb2dyYW1zIG9uIHRoZSByZW1vdGUgdGFyZ2V0IHdvdWxkIGJlIGVuYWJsZWQKK2J5IGRlZmF1bHQuIFRoaXMgY2FuIGJlIGNoYW5nZWQsIGFzIHdpdGggbmZzIGFuZCBvdGhlciBmaWxlc3lzdGVtcywgCitieSBzaW1wbHkgc3BlY2lmeWluZyAibm9zdWlkIiBhbW9uZyB0aGUgbW91bnQgb3B0aW9ucy4gRm9yIHVzZXIgbW91bnRzIAordGhvdWdoIHRvIGJlIGFibGUgdG8gcGFzcyB0aGUgc3VpZCBmbGFnIHRvIG1vdW50IHJlcXVpcmVzIHJlYnVpbGRpbmcgCittb3VudC5jaWZzIHdpdGggdGhlIGZvbGxvd2luZyBmbGFnOiAKKyAKKyAgICAgICAgZ2NjIHNhbWJhL3NvdXJjZS9jbGllbnQvbW91bnQuY2lmcy5jIC1EQ0lGU19BTExPV19VU1JfU1VJRCAtbyBtb3VudC5jaWZzCisKK1RoZXJlIGlzIGEgY29ycmVzcG9uZGluZyBtYW51YWwgcGFnZSBmb3IgY2lmcyBtb3VudGluZyBpbiB0aGUgU2FtYmEgMy4wIGFuZAorbGF0ZXIgc291cmNlIHRyZWUgaW4gZG9jcy9tYW5wYWdlcy9tb3VudC5jaWZzLjggCisKK0FsbG93aW5nIFVzZXIgVW5tb3VudHMKKz09PT09PT09PT09PT09PT09PT09PT0KK1RvIHBlcm1pdCB1c2VycyB0byB1bW1vdW50IGRpcmVjdG9yaWVzIHRoYXQgdGhleSBoYXZlIHVzZXIgbW91bnRlZCAoc2VlIGFib3ZlKSwKK3RoZSB1dGlsaXR5IHVtb3VudC5jaWZzIG1heSBiZSB1c2VkLiAgSXQgbWF5IGJlIGludm9rZWQgZGlyZWN0bHksIG9yIGlmIAordW1vdW50LmNpZnMgaXMgcGxhY2VkIGluIC9zYmluLCB1bW91bnQgY2FuIGludm9rZSB0aGUgY2lmcyB1bW91bnQgaGVscGVyCisoYXQgbGVhc3QgZm9yIG1vc3QgdmVyc2lvbnMgb2YgdGhlIHVtb3VudCB1dGlsaXR5KSBmb3IgdW1vdW50IG9mIGNpZnMKK21vdW50cywgdW5sZXNzIHVtb3VudCBpcyBpbnZva2VkIHdpdGggLWkgKHdoaWNoIHdpbGwgYXZvaWQgaW52b2tpbmcgYSB1bW91bnQKK2hlbHBlcikuIEFzIHdpdGggbW91bnQuY2lmcywgdG8gZW5hYmxlIHVzZXIgdW5tb3VudHMgdW1vdW50LmNpZnMgbXVzdCBiZSBtYXJrZWQKK2FzIHN1aWQgKGUuZy4gImNobW9kICtzIC9zYmluL3Vtb3VudC5jaWZzIikgb3IgZXF1aXZhbGVudCAoc29tZSBkaXN0cmlidXRpb25zCithbGxvdyBhZGRpbmcgZW50cmllcyB0byBhIGZpbGUgdG8gdGhlIC9ldGMvcGVybWlzc2lvbnMgZmlsZSB0byBhY2hpZXZlIHRoZQorZXF1aXZhbGVudCBzdWlkIGVmZmVjdCkuICBGb3IgdGhpcyB1dGlsaXR5IHRvIHN1Y2NlZWQgdGhlIHRhcmdldCBwYXRoCittdXN0IGJlIGEgY2lmcyBtb3VudCwgYW5kIHRoZSB1aWQgb2YgdGhlIGN1cnJlbnQgdXNlciBtdXN0IG1hdGNoIHRoZSB1aWQKK29mIHRoZSB1c2VyIHdobyBtb3VudGVkIHRoZSByZXNvdXJjZS4KKworQWxzbyBub3RlIHRoYXQgdGhlIGN1c3RvbWFyeSB3YXkgb2YgYWxsb3dpbmcgdXNlciBtb3VudHMgYW5kIHVubW91bnRzIGlzIAorKGluc3RlYWQgb2YgdXNpbmcgbW91bnQuY2lmcyBhbmQgdW5tb3VudC5jaWZzIGFzIHN1aWQpIHRvIGFkZCBhIGxpbmUKK3RvIHRoZSBmaWxlIC9ldGMvZnN0YWIgZm9yIGVhY2ggLy9zZXJ2ZXIvc2hhcmUgeW91IHdpc2ggdG8gbW91bnQsIGJ1dAordGhpcyBjYW4gYmVjb21lIHVud2llbGR5IHdoZW4gcG90ZW50aWFsIG1vdW50IHRhcmdldHMgaW5jbHVkZSBtYW55CitvciAgdW5wcmVkaWN0YWJsZSBVTkMgbmFtZXMuCisKK1NhbWJhIENvbnNpZGVyYXRpb25zIAorPT09PT09PT09PT09PT09PT09PT0gCitUbyBnZXQgdGhlIG1heGltdW0gYmVuZWZpdCBmcm9tIHRoZSBDSUZTIFZGUywgd2UgcmVjb21tZW5kIHVzaW5nIGEgc2VydmVyIHRoYXQgCitzdXBwb3J0cyB0aGUgU05JQSBDSUZTIFVuaXggRXh0ZW5zaW9ucyBzdGFuZGFyZCAoZS5nLiAgU2FtYmEgMi4yLjUgb3IgbGF0ZXIgb3IgCitTYW1iYSAzLjApIGJ1dCB0aGUgQ0lGUyB2ZnMgd29ya3MgZmluZSB3aXRoIGEgd2lkZSB2YXJpZXR5IG9mIENJRlMgc2VydmVycy4gIAorTm90ZSB0aGF0IHVpZCwgZ2lkIGFuZCBmaWxlIHBlcm1pc3Npb25zIHdpbGwgZGlzcGxheSBkZWZhdWx0IHZhbHVlcyBpZiB5b3UgZG8gCitub3QgaGF2ZSBhIHNlcnZlciB0aGF0IHN1cHBvcnRzIHRoZSBVbml4IGV4dGVuc2lvbnMgZm9yIENJRlMgKHN1Y2ggYXMgU2FtYmEgCisyLjIuNSBvciBsYXRlcikuICBUbyBlbmFibGUgdGhlIFVuaXggQ0lGUyBFeHRlbnNpb25zIGluIHRoZSBTYW1iYSBzZXJ2ZXIsIGFkZCAKK3RoZSBsaW5lOiAKKworCXVuaXggZXh0ZW5zaW9ucyA9IHllcworCQordG8geW91ciBzbWIuY29uZiBmaWxlIG9uIHRoZSBzZXJ2ZXIuICBOb3RlIHRoYXQgdGhlIGZvbGxvd2luZyBzbWIuY29uZiBzZXR0aW5ncyAKK2FyZSBhbHNvIHVzZWZ1bCAob24gdGhlIFNhbWJhIHNlcnZlcikgd2hlbiB0aGUgbWFqb3JpdHkgb2YgY2xpZW50cyBhcmUgVW5peCBvciAKK0xpbnV4OiAKKworCWNhc2Ugc2Vuc2l0aXZlID0geWVzCisJZGVsZXRlIHJlYWRvbmx5ID0geWVzIAorCWVhIHN1cHBvcnQgPSB5ZXMKKworTm90ZSB0aGF0IHNlcnZlciBlYSBzdXBwb3J0IGlzIHJlcXVpcmVkIGZvciBzdXBwb3J0aW5nIHhhdHRycyBmcm9tIHRoZSBMaW51eAorY2lmcyBjbGllbnQsIGFuZCB0aGF0IEVBIHN1cHBvcnQgaXMgcHJlc2VudCBpbiBsYXRlciB2ZXJzaW9ucyBvZiBTYW1iYSAoZS5nLiAKKzMuMC42IGFuZCBsYXRlciAoYWxzbyBFQSBzdXBwb3J0IHdvcmtzIGluIGFsbCB2ZXJzaW9ucyBvZiBXaW5kb3dzLCBhdCBsZWFzdCB0bworc2hhcmVzIG9uIE5URlMgZmlsZXN5c3RlbXMpLiAgRXh0ZW5kZWQgQXR0cmlidXRlICh4YXR0cikgc3VwcG9ydCBpcyBhbiBvcHRpb25hbAorZmVhdHVyZSBvZiBtb3N0IExpbnV4IGZpbGVzeXN0ZW1zIHdoaWNoIG1heSByZXF1aXJlIGVuYWJsaW5nIHZpYQorbWFrZSBtZW51Y29uZmlnLiBDbGllbnQgc3VwcG9ydCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlcyAodXNlciB4YXR0cikgY2FuIGJlCitkaXNhYmxlZCBvbiBhIHBlci1tb3VudCBiYXNpcyBieSBzcGVjaWZ5aW5nICJub3VzZXJfeGF0dHIiIG9uIG1vdW50LgorCitUaGUgQ0lGUyBjbGllbnQgY2FuIGdldCBhbmQgc2V0IFBPU0lYIEFDTHMgKGdldGZhY2wsIHNldGZhY2wpIHRvIFNhbWJhIHNlcnZlcnMKK3ZlcnNpb24gMy4xMCBhbmQgbGF0ZXIuICBTZXR0aW5nIFBPU0lYIEFDTHMgcmVxdWlyZXMgZW5hYmxpbmcgYm90aCBYQVRUUiBhbmQgCit0aGVuIFBPU0lYIHN1cHBvcnQgaW4gdGhlIENJRlMgY29uZmlndXJhdGlvbiBvcHRpb25zIHdoZW4gYnVpbGRpbmcgdGhlIGNpZnMKK21vZHVsZS4gIFBPU0lYIEFDTCBzdXBwb3J0IGNhbiBiZSBkaXNhYmxlZCBvbiBhIHBlciBtb3VudCBiYXNpYyBieSBzcGVjaWZ5aW5nCisibm9hY2wiIG9uIG1vdW50LgorIAorU29tZSBhZG1pbmlzdHJhdG9ycyBtYXkgd2FudCB0byBjaGFuZ2UgU2FtYmEncyBzbWIuY29uZiAibWFwIGFyY2hpdmUiIGFuZCAKKyJjcmVhdGUgbWFzayIgcGFyYW1ldGVycyBmcm9tIHRoZSBkZWZhdWx0LiAgVW5sZXNzIHRoZSBjcmVhdGUgbWFzayBpcyBjaGFuZ2VkCituZXdseSBjcmVhdGVkIGZpbGVzIGNhbiBlbmQgdXAgd2l0aCBhbiB1bm5lY2Vzc2FyaWx5IHJlc3RyaWN0aXZlIGRlZmF1bHQgbW9kZSwKK3doaWNoIG1heSBub3QgYmUgd2hhdCB5b3Ugd2FudCwgYWx0aG91Z2ggaWYgdGhlIENJRlMgVW5peCBleHRlbnNpb25zIGFyZQorZW5hYmxlZCBvbiB0aGUgc2VydmVyIGFuZCBjbGllbnQsIHN1YnNlcXVlbnQgc2V0YXR0ciBjYWxscyAoZS5nLiBjaG1vZCkgY2FuCitmaXggdGhlIG1vZGUuICBOb3RlIHRoYXQgY3JlYXRpbmcgc3BlY2lhbCBkZXZpY2VzIChta25vZCkgcmVtb3RlbHkgCittYXkgcmVxdWlyZSBzcGVjaWZ5aW5nIGEgbWtkZXYgZnVuY3Rpb24gdG8gU2FtYmEgaWYgeW91IGFyZSBub3QgdXNpbmcgCitTYW1iYSAzLjAuNiBvciBsYXRlci4gIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZXNlIHNlZSB0aGUgbWFudWFsIHBhZ2VzCisoIm1hbiBzbWIuY29uZiIpIG9uIHRoZSBTYW1iYSBzZXJ2ZXIgc3lzdGVtLiAgTm90ZSB0aGF0IHRoZSBjaWZzIHZmcywKK3VubGlrZSB0aGUgc21iZnMgdmZzLCBkb2VzIG5vdCByZWFkIHRoZSBzbWIuY29uZiBvbiB0aGUgY2xpZW50IHN5c3RlbSAKKyh0aGUgZmV3IG9wdGlvbmFsIHNldHRpbmdzIGFyZSBwYXNzZWQgaW4gb24gbW91bnQgdmlhIC1vIHBhcmFtZXRlcnMgaW5zdGVhZCkuICAKK05vdGUgdGhhdCBTYW1iYSAyLjIuNyBvciBsYXRlciBpbmNsdWRlcyBhIGZpeCB0aGF0IGFsbG93cyB0aGUgQ0lGUyBWRlMgdG8gZGVsZXRlCitvcGVuIGZpbGVzIChyZXF1aXJlZCBmb3Igc3RyaWN0IFBPU0lYIGNvbXBsaWFuY2UpLiAgV2luZG93cyBTZXJ2ZXJzIGFscmVhZHkgCitzdXBwb3J0ZWQgdGhpcyBmZWF0dXJlLiBTYW1iYSBzZXJ2ZXIgZG9lcyBub3QgYWxsb3cgc3ltbGlua3MgdGhhdCByZWZlciB0byBmaWxlcworb3V0c2lkZSBvZiB0aGUgc2hhcmUsIHNvIGluIFNhbWJhIHZlcnNpb25zIHByaW9yIHRvIDMuMC42LCBtb3N0IHN5bWxpbmtzIHRvCitmaWxlcyB3aXRoIGFic29sdXRlIHBhdGhzIChpZSBiZWdpbm5pbmcgd2l0aCBzbGFzaCkgc3VjaCBhczoKKwkgbG4gLXMgL21udC9mb28gYmFyCit3b3VsZCBiZSBmb3JiaWRkZW4uIFNhbWJhIDMuMC42IHNlcnZlciBvciBsYXRlciBpbmNsdWRlcyB0aGUgYWJpbGl0eSB0byBjcmVhdGUgCitzdWNoIHN5bWxpbmtzIHNhZmVseSBieSBjb252ZXJ0aW5nIHVuc2FmZSBzeW1saW5rcyAoaWUgc3ltbGlua3MgdG8gc2VydmVyIAorZmlsZXMgdGhhdCBhcmUgb3V0c2lkZSBvZiB0aGUgc2hhcmUpIHRvIGEgc2FtYmEgc3BlY2lmaWMgZm9ybWF0IG9uIHRoZSBzZXJ2ZXIKK3RoYXQgaXMgaWdub3JlZCBieSBsb2NhbCBzZXJ2ZXIgYXBwbGljYXRpb25zIGFuZCBub24tY2lmcyBjbGllbnRzIGFuZCB0aGF0IHdpbGwKK25vdCBiZSB0cmF2ZXJzZWQgYnkgdGhlIFNhbWJhIHNlcnZlcikuICBUaGlzIGlzIG9wYXF1ZSB0byB0aGUgTGludXggY2xpZW50CithcHBsaWNhdGlvbiB1c2luZyB0aGUgY2lmcyB2ZnMuIEFic29sdXRlIHN5bWxpbmtzIHdpbGwgd29yayB0byBTYW1iYSAzLjAuNSBvcgorbGF0ZXIsIGJ1dCBvbmx5IGZvciByZW1vdGUgY2xpZW50cyB1c2luZyB0aGUgQ0lGUyBVbml4IGV4dGVuc2lvbnMsIGFuZCB3aWxsCitiZSBpbnZpc2JpbGUgdG8gV2luZG93cyBjbGllbnRzIGFuZCB0eXBpY2FsbHkgd2lsbCBub3QgYWZmZWN0IGxvY2FsCithcHBsaWNhdGlvbnMgcnVubmluZyBvbiB0aGUgc2FtZSBzZXJ2ZXIgYXMgU2FtYmEuICAKKworVXNlIGluc3RydWN0aW9uczoKKz09PT09PT09PT09PT09PT0KK09uY2UgdGhlIENJRlMgVkZTIHN1cHBvcnQgaXMgYnVpbHQgaW50byB0aGUga2VybmVsIG9yIGluc3RhbGxlZCBhcyBhIG1vZHVsZSAKKyhjaWZzLm8pLCB5b3UgY2FuIHVzZSBtb3VudCBzeW50YXggbGlrZSB0aGUgZm9sbG93aW5nIHRvIGFjY2VzcyBTYW1iYSBvciBXaW5kb3dzIAorc2VydmVyczogCisKKyAgbW91bnQgLXQgY2lmcyAvLzkuNTMuMjE2LjExL2UkIC9tbnQgLW8gdXNlcj1teW5hbWUscGFzcz1teXBhc3N3b3JkCisKK0JlZm9yZSAtbyB0aGUgb3B0aW9uIC12IG1heSBiZSBzcGVjaWZpZWQgdG8gbWFrZSB0aGUgbW91bnQuY2lmcworbW91bnQgaGVscGVyIGRpc3BsYXkgdGhlIG1vdW50IHN0ZXBzIG1vcmUgdmVyYm9zZWx5LiAgCitBZnRlciAtbyB0aGUgZm9sbG93aW5nIGNvbW1vbmx5IHVzZWQgY2lmcyB2ZnMgc3BlY2lmaWMgb3B0aW9ucworYXJlIHN1cHBvcnRlZDoKKworICB1c2VyPTx1c2VybmFtZT4KKyAgcGFzcz08cGFzc3dvcmQ+CisgIGRvbWFpbj08ZG9tYWluIG5hbWU+CisgIAorT3RoZXIgY2lmcyBtb3VudCBvcHRpb25zIGFyZSBkZXNjcmliZWQgYmVsb3cuICBVc2Ugb2YgVENQIG5hbWVzIChpbiBhZGRpdGlvbiB0bworaXAgYWRkcmVzc2VzKSBpcyBhdmFpbGFibGUgaWYgdGhlIG1vdW50IGhlbHBlciAobW91bnQuY2lmcykgaXMgaW5zdGFsbGVkLiBJZgoreW91IGRvIG5vdCB0cnVzdCB0aGUgc2VydmVyIHRvIHdoaWNoIGFyZSBtb3VudGVkLCBvciBpZiB5b3UgZG8gbm90IGhhdmUKK2NpZnMgc2lnbmluZyBlbmFibGVkIChhbmQgdGhlIHBoeXNpY2FsIG5ldHdvcmsgaXMgaW5zZWN1cmUpLCBjb25zaWRlciB1c2UKK29mIHRoZSBzdGFuZGFyZCBtb3VudCBvcHRpb25zICJub2V4ZWMiIGFuZCAibm9zdWlkIiB0byByZWR1Y2UgdGhlIHJpc2sgb2YgCitydW5uaW5nIGFuIGFsdGVyZWQgYmluYXJ5IG9uIHlvdXIgbG9jYWwgc3lzdGVtIChkb3dubG9hZGVkIGZyb20gYSBob3N0aWxlIHNlcnZlcgorb3IgYWx0ZXJlZCBieSBhIGhvc3RpbGUgcm91dGVyKS4KKworQWx0aG91Z2ggbW91bnRpbmcgdXNpbmcgZm9ybWF0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIENJRlMgVVJMIHNwZWNpZmljYXRpb24gaXMKK25vdCBwb3NzaWJsZSBpbiBtb3VudC5jaWZzIHlldCwgaXQgaXMgcG9zc2libGUgdG8gdXNlIGFuIGFsdGVybmF0ZSBmb3JtYXQKK2ZvciB0aGUgc2VydmVyIGFuZCBzaGFyZW5hbWUgKHdoaWNoIGlzIHNvbWV3aGF0IHNpbWlsYXIgdG8gTkZTIHN0eWxlIG1vdW50CitzeW50YXgpIGluc3RlYWQgb2YgdGhlIG1vcmUgd2lkZWx5IHVzZWQgVU5DIGZvcm1hdCAoaS5lLiBcXHNlcnZlclxzaGFyZSk6CisgIG1vdW50IC10IGNpZnMgdGNwX25hbWVfb2Zfc2VydmVyOnNoYXJlX25hbWUgL21udCAtbyB1c2VyPW15bmFtZSxwYXNzPW15cGFzc3dkCisKK1doZW4gdXNpbmcgdGhlIG1vdW50IGhlbHBlciBtb3VudC5jaWZzLCBwYXNzd29yZHMgbWF5IGJlIHNwZWNpZmllZCB2aWEgYWx0ZXJuYXRlCittZWNoYW5pc21zLCBpbnN0ZWFkIG9mIHNwZWNpZnlpbmcgaXQgYWZ0ZXIgLW8gdXNpbmcgdGhlIG5vcm1hbCAicGFzcz0iIHN5bnRheAorb24gdGhlIGNvbW1hbmQgbGluZToKKzEpIEJ5IGluY2x1ZGluZyBpdCBpbiBhIGNyZWRlbnRpYWwgZmlsZS4gU3BlY2lmeSBjcmVkZW50aWFscz1maWxlbmFtZSBhcyBvbmUKK29mIHRoZSBtb3VudCBvcHRpb25zLiBDcmVkZW50aWFsIGZpbGVzIGNvbnRhaW4gdHdvIGxpbmVzCisgICAgICAgIHVzZXJuYW1lPXNvbWV1c2VyCisgICAgICAgIHBhc3N3b3JkPXlvdXJfcGFzc3dvcmQKKzIpIEJ5IHNwZWNpZnlpbmcgdGhlIHBhc3N3b3JkIGluIHRoZSBQQVNTV0QgZW52aXJvbm1lbnQgdmFyaWFibGUgKHNpbWlsYXJseQordGhlIHVzZXIgbmFtZSBjYW4gYmUgdGFrZW4gZnJvbSB0aGUgVVNFUiBlbnZpcm9ubWVudCB2YXJpYWJsZSkuCiszKSBCeSBzcGVjaWZ5aW5nIHRoZSBwYXNzd29yZCBpbiBhIGZpbGUgYnkgbmFtZSB2aWEgUEFTU1dEX0ZJTEUKKzQpIEJ5IHNwZWNpZnlpbmcgdGhlIHBhc3N3b3JkIGluIGEgZmlsZSBieSBmaWxlIGRlc2NyaXB0b3IgdmlhIFBBU1NXRF9GRAorCitJZiBubyBwYXNzd29yZCBpcyBwcm92aWRlZCwgbW91bnQuY2lmcyB3aWxsIHByb21wdCBmb3IgcGFzc3dvcmQgZW50cnkKKworUmVzdHJpY3Rpb25zCis9PT09PT09PT09PT0KK1NlcnZlcnMgbXVzdCBzdXBwb3J0IGVpdGhlciAicHVyZS1UQ1AiIChwb3J0IDQ0NSBUQ1AvSVAgQ0lGUyBjb25uZWN0aW9ucykgb3IgUkZDIAorMTAwMS8xMDAyIHN1cHBvcnQgZm9yICJOZXRiaW9zLU92ZXItVENQL0lQLiIgVGhpcyBpcyBub3QgbGlrZWx5IHRvIGJlIGEgCitwcm9ibGVtIGFzIG1vc3Qgc2VydmVycyBzdXBwb3J0IHRoaXMuCisKK1ZhbGlkIGZpbGVuYW1lcyBkaWZmZXIgYmV0d2VlbiBXaW5kb3dzIGFuZCBMaW51eC4gIFdpbmRvd3MgdHlwaWNhbGx5IHJlc3RyaWN0cworZmlsZW5hbWVzIHdoaWNoIGNvbnRhaW4gY2VydGFpbiByZXNlcnZlZCBjaGFyYWN0ZXJzIChlLmcudGhlIGNoYXJhY3RlciA6IAord2hpY2ggaXMgdXNlZCB0byBkZWxpbWl0IHRoZSBiZWdpbm5pbmcgb2YgYSBzdHJlYW0gbmFtZSBieSBXaW5kb3dzKSwgd2hpbGUKK0xpbnV4IGFsbG93cyBhIHNsaWdodGx5IHdpZGVyIHNldCBvZiB2YWxpZCBjaGFyYWN0ZXJzIGluIGZpbGVuYW1lcy4gV2luZG93cworc2VydmVycyBjYW4gcmVtYXAgc3VjaCBjaGFyYWN0ZXJzIHdoZW4gYW4gZXhwbGljaXQgbWFwcGluZyBpcyBzcGVjaWZpZWQgaW4KK3RoZSBTZXJ2ZXIncyByZWdpc3RyeS4gIFNhbWJhIHN0YXJ0aW5nIHdpdGggdmVyc2lvbiAzLjEwIHdpbGwgYWxsb3cgc3VjaCAKK2ZpbGVuYW1lcyAoaWUgdGhvc2Ugd2hpY2ggY29udGFpbiB2YWxpZCBMaW51eCBjaGFyYWN0ZXJzLCB3aGljaCBub3JtYWxseQord291bGQgYmUgZm9yYmlkZGVuIGZvciBXaW5kb3dzL0NJRlMgc2VtYW50aWNzKSBhcyBsb25nIGFzIHRoZSBzZXJ2ZXIgaXMKK2NvbmZpZ3VyZWQgZm9yIFVuaXggRXh0ZW5zaW9ucyAoYW5kIHRoZSBjbGllbnQgaGFzIG5vdCBkaXNhYmxlZAorL3Byb2MvZnMvY2lmcy9MaW51eEV4dGVuc2lvbnNFbmFibGVkKS4KKyAgCisKK0NJRlMgVkZTIE1vdW50IE9wdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT0KK0EgcGFydGlhbCBsaXN0IG9mIHRoZSBzdXBwb3J0ZWQgbW91bnQgb3B0aW9ucyBmb2xsb3dzOgorICB1c2VyCQlUaGUgdXNlciBuYW1lIHRvIHVzZSB3aGVuIHRyeWluZyB0byBlc3RhYmxpc2gKKwkJdGhlIENJRlMgc2Vzc2lvbi4KKyAgcGFzc3dvcmQJVGhlIHVzZXIgcGFzc3dvcmQuICBJZiB0aGUgbW91bnQgaGVscGVyIGlzCisJCWluc3RhbGxlZCwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCBmb3IgcGFzc3dvcmQKKwkJaWYgbm90IHN1cHBsaWVkLgorICBpcAkJVGhlIGlwIGFkZHJlc3Mgb2YgdGhlIHRhcmdldCBzZXJ2ZXIKKyAgdW5jCQlUaGUgdGFyZ2V0IHNlcnZlciBVbml2ZXJzYWwgTmV0d29yayBOYW1lIChleHBvcnQpIHRvIAorCQltb3VudC4JCisgIGRvbWFpbglTZXQgdGhlIFNNQi9DSUZTIHdvcmtncm91cCBuYW1lIHByZXBlbmRlZCB0byB0aGUKKwkJdXNlcm5hbWUgZHVyaW5nIENJRlMgc2Vzc2lvbiBlc3RhYmxpc2htZW50CisgIGZvcmNldWlkCVNldCB0aGUgZGVmYXVsdCB1aWQgZm9yIGlub2RlcyB0byB0aGUgdWlkCisJCXBhc3NlZCBpbiBvbiBtb3VudC4gRm9yIG1vdW50cyB0byBzZXJ2ZXJzCisJCXdoaWNoIGRvIHN1cHBvcnQgdGhlIENJRlMgVW5peCBleHRlbnNpb25zLCBzdWNoIGFzIGEKKwkJcHJvcGVybHkgY29uZmlndXJlZCBTYW1iYSBzZXJ2ZXIsIHRoZSBzZXJ2ZXIgcHJvdmlkZXMKKwkJdGhlIHVpZCwgZ2lkIGFuZCBtb2RlIHNvIHRoaXMgcGFyYW1ldGVyIHNob3VsZCBub3QgYmUKKwkJc3BlY2lmaWVkIHVubGVzcyB0aGUgc2VydmVyIGFuZCBjbGllbnRzIHVpZCBhbmQgZ2lkCisJCW51bWJlcmluZyBkaWZmZXIuICBJZiB0aGUgc2VydmVyIGFuZCBjbGllbnQgYXJlIGluIHRoZQorCQlzYW1lIGRvbWFpbiAoZS5nLiBydW5uaW5nIHdpbmJpbmQgb3IgbnNzX2xkYXApIGFuZAorCQl0aGUgc2VydmVyIHN1cHBvcnRzIHRoZSBVbml4IEV4dGVuc2lvbnMgdGhlbiB0aGUgdWlkCisJCWFuZCBnaWQgY2FuIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBzZXJ2ZXIgKGFuZCB1aWQKKwkJYW5kIGdpZCB3b3VsZCBub3QgaGF2ZSB0byBiZSBzcGVjaWZlZCBvbiB0aGUgbW91bnQuIAorCQlGb3Igc2VydmVycyB3aGljaCBkbyBub3Qgc3VwcG9ydCB0aGUgQ0lGUyBVbml4CisJCWV4dGVuc2lvbnMsIHRoZSBkZWZhdWx0IHVpZCAoYW5kIGdpZCkgcmV0dXJuZWQgb24gbG9va3VwCisJCW9mIGV4aXN0aW5nIGZpbGVzIHdpbGwgYmUgdGhlIHVpZCAoZ2lkKSBvZiB0aGUgcGVyc29uCisJCXdobyBleGVjdXRlZCB0aGUgbW91bnQgKHJvb3QsIGV4Y2VwdCB3aGVuIG1vdW50LmNpZnMKKwkJaXMgY29uZmlndXJlZCBzZXR1aWQgZm9yIHVzZXIgbW91bnRzKSB1bmxlc3MgdGhlICJ1aWQ9IiAKKwkJKGdpZCkgbW91bnQgb3B0aW9uIGlzIHNwZWNpZmllZC4gQWxzbyBub3RlIHRoYXQgcGVybWlzc2lvbgorCQljaGVja3MgKGF1dGhvcml6YXRpb24gY2hlY2tzKSBvbiBhY2Nlc3NlcyB0byBhIGZpbGUgb2NjdXIKKwkJYXQgdGhlIHNlcnZlciwgYnV0IHRoZXJlIGFyZSBjYXNlcyBpbiB3aGljaCBhbiBhZG1pbmlzdHJhdG9yCisJCW1heSB3YW50IHRvIHJlc3RyaWN0IGF0IHRoZSBjbGllbnQgYXMgd2VsbC4gIEZvciB0aG9zZQorCQlzZXJ2ZXJzIHdoaWNoIGRvIG5vdCByZXBvcnQgYSB1aWQvZ2lkIG93bmVyCisJCShzdWNoIGFzIFdpbmRvd3MpLCBwZXJtaXNzaW9ucyBjYW4gYWxzbyBiZSBjaGVja2VkIGF0IHRoZQorCQljbGllbnQsIGFuZCBhIGNydWRlIGZvcm0gb2YgY2xpZW50IHNpZGUgcGVybWlzc2lvbiBjaGVja2luZyAKKwkJY2FuIGJlIGVuYWJsZWQgYnkgc3BlY2lmeWluZyBmaWxlX21vZGUgYW5kIGRpcl9tb2RlIG9uIAorCQl0aGUgY2xpZW50LiAgKGRlZmF1bHQpCisgIGZvcmNlZ2lkCShzaW1pbGFyIHRvIGFib3ZlIGJ1dCBmb3IgdGhlIGdyb3VwaWQgaW5zdGVhZCBvZiB1aWQpIChkZWZhdWx0KQorICBub2ZvcmNldWlkCUZpbGwgaW4gZmlsZSBvd25lciBpbmZvcm1hdGlvbiAodWlkKSBieSByZXF1ZXN0aW5nIGl0IGZyb20KKwkJdGhlIHNlcnZlciBpZiBwb3NzaWJsZS4gV2l0aCB0aGlzIG9wdGlvbiwgdGhlIHZhbHVlIGdpdmVuIGluCisJCXRoZSB1aWQ9IG9wdGlvbiAob24gbW91bnQpIHdpbGwgb25seSBiZSB1c2VkIGlmIHRoZSBzZXJ2ZXIKKwkJY2FuIG5vdCBzdXBwb3J0IHJldHVybmluZyB1aWRzIG9uIGlub2Rlcy4KKyAgbm9mb3JjZWdpZAkoc2ltaWxhciB0byBhYm92ZSBidXQgZm9yIHRoZSBncm91cCBvd25lciwgZ2lkLCBpbnN0ZWFkIG9mIHVpZCkKKyAgdWlkCQlTZXQgdGhlIGRlZmF1bHQgdWlkIGZvciBpbm9kZXMsIGFuZCBpbmRpY2F0ZSB0byB0aGUKKwkJY2lmcyBrZXJuZWwgZHJpdmVyIHdoaWNoIGxvY2FsIHVzZXIgbW91bnRlZC4gSWYgdGhlIHNlcnZlcgorCQlzdXBwb3J0cyB0aGUgdW5peCBleHRlbnNpb25zIHRoZSBkZWZhdWx0IHVpZCBpcworCQlub3QgdXNlZCB0byBmaWxsIGluIHRoZSBvd25lciBmaWVsZHMgb2YgaW5vZGVzIChmaWxlcykKKwkJdW5sZXNzIHRoZSAiZm9yY2V1aWQiIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQuCisgIGdpZAkJU2V0IHRoZSBkZWZhdWx0IGdpZCBmb3IgaW5vZGVzIChzaW1pbGFyIHRvIGFib3ZlKS4KKyAgZmlsZV9tb2RlICAgICBJZiBDSUZTIFVuaXggZXh0ZW5zaW9ucyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgc2VydmVyCisJCXRoaXMgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IG1vZGUgZm9yIGZpbGUgaW5vZGVzLgorICBmc2MJCUVuYWJsZSBsb2NhbCBkaXNrIGNhY2hpbmcgdXNpbmcgRlMtQ2FjaGUgKG9mZiBieSBkZWZhdWx0KS4gVGhpcworICAJCW9wdGlvbiBjb3VsZCBiZSB1c2VmdWwgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSBvbiBhIHNsb3cgbGluaywKKwkJaGVhdmlseSBsb2FkZWQgc2VydmVyIGFuZC9vciBuZXR3b3JrIHdoZXJlIHJlYWRpbmcgZnJvbSB0aGUKKwkJZGlzayBpcyBmYXN0ZXIgdGhhbiByZWFkaW5nIGZyb20gdGhlIHNlcnZlciAob3ZlciB0aGUgbmV0d29yaykuCisJCVRoaXMgY291bGQgYWxzbyBpbXBhY3Qgc2NhbGFiaWxpdHkgcG9zaXRpdmVseSBhcyB0aGUKKwkJbnVtYmVyIG9mIGNhbGxzIHRvIHRoZSBzZXJ2ZXIgYXJlIHJlZHVjZWQuIEhvd2V2ZXIsIGxvY2FsCisJCWNhY2hpbmcgaXMgbm90IHN1aXRhYmxlIGZvciBhbGwgd29ya2xvYWRzIGZvciBlLmcuIHJlYWQtb25jZQorCQl0eXBlIHdvcmtsb2Fkcy4gU28sIHlvdSBuZWVkIHRvIGNvbnNpZGVyIGNhcmVmdWxseSB5b3VyCisJCXdvcmtsb2FkL3NjZW5hcmlvIGJlZm9yZSB1c2luZyB0aGlzIG9wdGlvbi4gQ3VycmVudGx5LCBsb2NhbAorCQlkaXNrIGNhY2hpbmcgaXMgZnVuY3Rpb25hbCBmb3IgQ0lGUyBmaWxlcyBvcGVuZWQgYXMgcmVhZC1vbmx5LgorICBkaXJfbW9kZSAgICAgIElmIENJRlMgVW5peCBleHRlbnNpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzZXJ2ZXIgCisJCXRoaXMgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IG1vZGUgZm9yIGRpcmVjdG9yeSBpbm9kZXMuCisgIHBvcnQJCWF0dGVtcHQgdG8gY29udGFjdCB0aGUgc2VydmVyIG9uIHRoaXMgdGNwIHBvcnQsIGJlZm9yZQorCQl0cnlpbmcgdGhlIHVzdWFsIHBvcnRzIChwb3J0IDQ0NSwgdGhlbiAxMzkpLgorICBpb2NoYXJzZXQgICAgIENvZGVwYWdlIHVzZWQgdG8gY29udmVydCBsb2NhbCBwYXRoIG5hbWVzIHRvIGFuZCBmcm9tCisJCVVuaWNvZGUuIFVuaWNvZGUgaXMgdXNlZCBieSBkZWZhdWx0IGZvciBuZXR3b3JrIHBhdGgKKwkJbmFtZXMgaWYgdGhlIHNlcnZlciBzdXBwb3J0cyBpdC4gIElmIGlvY2hhcnNldCBpcworCQlub3Qgc3BlY2lmaWVkIHRoZW4gdGhlIG5sc19kZWZhdWx0IHNwZWNpZmllZAorCQlkdXJpbmcgdGhlIGxvY2FsIGNsaWVudCBrZXJuZWwgYnVpbGQgd2lsbCBiZSB1c2VkLgorCQlJZiBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBVbmljb2RlLCB0aGlzIHBhcmFtZXRlciBpcworCQl1bnVzZWQuCisgIHJzaXplCQlkZWZhdWx0IHJlYWQgc2l6ZSAodXN1YWxseSAxNkspLiBUaGUgY2xpZW50IGN1cnJlbnRseQorCQljYW4gbm90IHVzZSByc2l6ZSBsYXJnZXIgdGhhbiBDSUZTTWF4QnVmU2l6ZS4gQ0lGU01heEJ1ZlNpemUKKwkJZGVmYXVsdHMgdG8gMTZLIGFuZCBtYXkgYmUgY2hhbmdlZCAoZnJvbSA4SyB0byB0aGUgbWF4aW11bQorCQlrbWFsbG9jIHNpemUgYWxsb3dlZCBieSB5b3VyIGtlcm5lbCkgYXQgbW9kdWxlIGluc3RhbGwgdGltZQorCQlmb3IgY2lmcy5rby4gU2V0dGluZyBDSUZTTWF4QnVmU2l6ZSB0byBhIHZlcnkgbGFyZ2UgdmFsdWUKKwkJd2lsbCBjYXVzZSBjaWZzIHRvIHVzZSBtb3JlIG1lbW9yeSBhbmQgbWF5IHJlZHVjZSBwZXJmb3JtYW5jZQorCQlpbiBzb21lIGNhc2VzLiAgVG8gdXNlIHJzaXplIGdyZWF0ZXIgdGhhbiAxMjdLICh0aGUgb3JpZ2luYWwKKwkJY2lmcyBwcm90b2NvbCBtYXhpbXVtKSBhbHNvIHJlcXVpcmVzIHRoYXQgdGhlIHNlcnZlciBzdXBwb3J0CisJCWEgbmV3IFVuaXggQ2FwYWJpbGl0eSBmbGFnIChmb3IgdmVyeSBsYXJnZSByZWFkKSB3aGljaCBzb21lCisJCW5ld2VyIHNlcnZlcnMgKGUuZy4gU2FtYmEgMy4wLjI2IG9yIGxhdGVyKSBkby4gcnNpemUgY2FuIGJlCisJCXNldCBmcm9tIGEgbWluaW11bSBvZiAyMDQ4IHRvIGEgbWF4aW11bSBvZiAxMzAwNDggKDEyN0sgb3IKKwkJQ0lGU01heEJ1ZlNpemUsIHdoaWNoZXZlciBpcyBzbWFsbGVyKQorICB3c2l6ZQkJZGVmYXVsdCB3cml0ZSBzaXplIChkZWZhdWx0IDU3MzQ0KQorCQltYXhpbXVtIHdzaXplIGN1cnJlbnRseSBhbGxvd2VkIGJ5IENJRlMgaXMgNTczNDQgKGZvdXJ0ZWVuCisJCTQwOTYgYnl0ZSBwYWdlcykKKyAgYWN0aW1lbz1uCWF0dHJpYnV0ZSBjYWNoZSB0aW1lb3V0IGluIHNlY29uZHMgKGRlZmF1bHQgMSBzZWNvbmQpLgorCQlBZnRlciB0aGlzIHRpbWVvdXQsIHRoZSBjaWZzIGNsaWVudCByZXF1ZXN0cyBmcmVzaCBhdHRyaWJ1dGUKKwkJaW5mb3JtYXRpb24gZnJvbSB0aGUgc2VydmVyLiBUaGlzIG9wdGlvbiBhbGxvd3MgdG8gdHVuZSB0aGUKKwkJYXR0cmlidXRlIGNhY2hlIHRpbWVvdXQgdG8gc3VpdCB0aGUgd29ya2xvYWQgbmVlZHMuIFNob3J0ZXIKKwkJdGltZW91dHMgbWVhbiBiZXR0ZXIgdGhlIGNhY2hlIGNvaGVyZW5jeSwgYnV0IGluY3JlYXNlZCBudW1iZXIKKwkJb2YgY2FsbHMgdG8gdGhlIHNlcnZlci4gTG9uZ2VyIHRpbWVvdXRzIG1lYW4gcmVkdWNlZCBudW1iZXIKKwkJb2YgY2FsbHMgdG8gdGhlIHNlcnZlciBhdCB0aGUgZXhwZW5zZSBvZiBsZXNzIHN0cmljdGVyIGNhY2hlCisJCWNvaGVyZW5jeSBjaGVja3MgKGkuZS4gaW5jb3JyZWN0IGF0dHJpYnV0ZSBjYWNoZSBmb3IgYSBzaG9ydAorCQlwZXJpb2Qgb2YgdGltZSkuCisgIHJ3CQltb3VudCB0aGUgbmV0d29yayBzaGFyZSByZWFkLXdyaXRlIChub3RlIHRoYXQgdGhlCisJCXNlcnZlciBtYXkgc3RpbGwgY29uc2lkZXIgdGhlIHNoYXJlIHJlYWQtb25seSkKKyAgcm8JCW1vdW50IG5ldHdvcmsgc2hhcmUgcmVhZC1vbmx5CisgIHZlcnNpb24JdXNlZCB0byBkaXN0aW5ndWlzaCBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlCisJCW1vdW50IGhlbHBlciB1dGlsaXR5IChub3QgdHlwaWNhbGx5IG5lZWRlZCkKKyAgc2VwCQlpZiBmaXJzdCBtb3VudCBvcHRpb24gKGFmdGVyIHRoZSAtbyksIG92ZXJyaWRlcworCQl0aGUgY29tbWEgYXMgdGhlIHNlcGFyYXRvciBiZXR3ZWVuIHRoZSBtb3VudAorCQlwYXJtcy4gZS5nLgorCQkJLW8gdXNlcj1teW5hbWUscGFzc3dvcmQ9bXlwYXNzd29yZCxkb21haW49bXlkb20KKwkJY291bGQgYmUgcGFzc2VkIGluc3RlYWQgd2l0aCBwZXJpb2QgYXMgdGhlIHNlcGFyYXRvciBieQorCQkJLW8gc2VwPS51c2VyPW15bmFtZS5wYXNzd29yZD1teXBhc3N3b3JkLmRvbWFpbj1teWRvbQorCQl0aGlzIG1pZ2h0IGJlIHVzZWZ1bCB3aGVuIGNvbW1hIGlzIGNvbnRhaW5lZCB3aXRoaW4gdXNlcm5hbWUKKwkJb3IgcGFzc3dvcmQgb3IgZG9tYWluLiBUaGlzIG9wdGlvbiBpcyBsZXNzIGltcG9ydGFudAorCQl3aGVuIHRoZSBjaWZzIG1vdW50IGhlbHBlciBjaWZzLm1vdW50ICh2ZXJzaW9uIDEuMSBvciBsYXRlcikKKwkJaXMgdXNlZC4KKyAgbm9zdWlkICAgICAgICBEbyBub3QgYWxsb3cgcmVtb3RlIGV4ZWN1dGFibGVzIHdpdGggdGhlIHN1aWQgYml0IAorCQlwcm9ncmFtIHRvIGJlIGV4ZWN1dGVkLiAgVGhpcyBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIG1vdW50cworCQl0byBzZXJ2ZXJzIHN1Y2ggYXMgU2FtYmEgd2hpY2ggc3VwcG9ydCB0aGUgQ0lGUyBVbml4IEV4dGVuc2lvbnMuCisJCUlmIHlvdSBkbyBub3QgdHJ1c3QgdGhlIHNlcnZlcnMgaW4geW91ciBuZXR3b3JrICh5b3VyIG1vdW50CisJCXRhcmdldHMpIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHNwZWNpZnkgdGhpcyBvcHRpb24gZm9yCisJCWdyZWF0ZXIgc2VjdXJpdHkuCisgIGV4ZWMJCVBlcm1pdCBleGVjdXRpb24gb2YgYmluYXJpZXMgb24gdGhlIG1vdW50LgorICBub2V4ZWMJRG8gbm90IHBlcm1pdCBleGVjdXRpb24gb2YgYmluYXJpZXMgb24gdGhlIG1vdW50LgorICBkZXYJCVJlY29nbml6ZSBibG9jayBkZXZpY2VzIG9uIHRoZSByZW1vdGUgbW91bnQuCisgIG5vZGV2CQlEbyBub3QgcmVjb2duaXplIGRldmljZXMgb24gdGhlIHJlbW90ZSBtb3VudC4KKyAgc3VpZCAgICAgICAgICBBbGxvdyByZW1vdGUgZmlsZXMgb24gdGhpcyBtb3VudHBvaW50IHdpdGggc3VpZCBlbmFibGVkIHRvIAorCQliZSBleGVjdXRlZCAoZGVmYXVsdCBmb3IgbW91bnRzIHdoZW4gZXhlY3V0ZWQgYXMgcm9vdCwKKwkJbm9zdWlkIGlzIGRlZmF1bHQgZm9yIHVzZXIgbW91bnRzKS4KKyAgY3JlZGVudGlhbHMgICBBbHRob3VnaCBpZ25vcmVkIGJ5IHRoZSBjaWZzIGtlcm5lbCBjb21wb25lbnQsIGl0IGlzIHVzZWQgYnkgCisJCXRoZSBtb3VudCBoZWxwZXIsIG1vdW50LmNpZnMuIFdoZW4gbW91bnQuY2lmcyBpcyBpbnN0YWxsZWQgaXQKKwkJb3BlbnMgYW5kIHJlYWRzIHRoZSBjcmVkZW50aWFsIGZpbGUgc3BlY2lmaWVkIGluIG9yZGVyICAKKwkJdG8gb2J0YWluIHRoZSB1c2VyaWQgYW5kIHBhc3N3b3JkIGFyZ3VtZW50cyB3aGljaCBhcmUgcGFzc2VkIHRvCisJCXRoZSBjaWZzIHZmcy4KKyAgZ3Vlc3QgICAgICAgICBBbHRob3VnaCBpZ25vcmVkIGJ5IHRoZSBrZXJuZWwgY29tcG9uZW50LCB0aGUgbW91bnQuY2lmcworCQltb3VudCBoZWxwZXIgd2lsbCBub3QgcHJvbXB0IHRoZSB1c2VyIGZvciBhIHBhc3N3b3JkCisJCWlmIGd1ZXN0IGlzIHNwZWNpZmllZCBvbiB0aGUgbW91bnQgb3B0aW9ucy4gIElmIG5vCisJCXBhc3N3b3JkIGlzIHNwZWNpZmllZCBhIG51bGwgcGFzc3dvcmQgd2lsbCBiZSB1c2VkLgorICBwZXJtICAgICAgICAgIENsaWVudCBkb2VzIHBlcm1pc3Npb24gY2hlY2tzICh2ZnNfcGVybWlzc2lvbiBjaGVjayBvZiB1aWQKKwkJYW5kIGdpZCBvZiB0aGUgZmlsZSBhZ2FpbnN0IHRoZSBtb2RlIGFuZCBkZXNpcmVkIG9wZXJhdGlvbiksCisJCU5vdGUgdGhhdCB0aGlzIGlzIGluIGFkZGl0aW9uIHRvIHRoZSBub3JtYWwgQUNMIGNoZWNrIG9uIHRoZQorCQl0YXJnZXQgbWFjaGluZSBkb25lIGJ5IHRoZSBzZXJ2ZXIgc29mdHdhcmUuIAorCQlDbGllbnQgcGVybWlzc2lvbiBjaGVja2luZyBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCisgIG5vcGVybSAgICAgICAgQ2xpZW50IGRvZXMgbm90IGRvIHBlcm1pc3Npb24gY2hlY2tzLiAgVGhpcyBjYW4gZXhwb3NlCisJCWZpbGVzIG9uIHRoaXMgbW91bnQgdG8gYWNjZXNzIGJ5IG90aGVyIHVzZXJzIG9uIHRoZSBsb2NhbAorCQljbGllbnQgc3lzdGVtLiBJdCBpcyB0eXBpY2FsbHkgb25seSBuZWVkZWQgd2hlbiB0aGUgc2VydmVyCisJCXN1cHBvcnRzIHRoZSBDSUZTIFVuaXggRXh0ZW5zaW9ucyBidXQgdGhlIFVJRHMvR0lEcyBvbiB0aGUKKwkJY2xpZW50IGFuZCBzZXJ2ZXIgc3lzdGVtIGRvIG5vdCBtYXRjaCBjbG9zZWx5IGVub3VnaCB0byBhbGxvdworCQlhY2Nlc3MgYnkgdGhlIHVzZXIgZG9pbmcgdGhlIG1vdW50LCBidXQgaXQgbWF5IGJlIHVzZWZ1bCB3aXRoCisJCW5vbiBDSUZTIFVuaXggRXh0ZW5zaW9uIG1vdW50cyBmb3IgY2FzZXMgaW4gd2hpY2ggdGhlIGRlZmF1bHQKKwkJbW9kZSBpcyBzcGVjaWZpZWQgb24gdGhlIG1vdW50IGJ1dCBpcyBub3QgdG8gYmUgZW5mb3JjZWQgb24gdGhlCisJCWNsaWVudCAoZS5nLiBwZXJoYXBzIHdoZW4gTXVsdGlVc2VyTW91bnQgaXMgZW5hYmxlZCkKKwkJTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYWZmZWN0IHRoZSBub3JtYWwgQUNMIGNoZWNrIG9uIHRoZQorCQl0YXJnZXQgbWFjaGluZSBkb25lIGJ5IHRoZSBzZXJ2ZXIgc29mdHdhcmUgKG9mIHRoZSBzZXJ2ZXIKKwkJQUNMIGFnYWluc3QgdGhlIHVzZXIgbmFtZSBwcm92aWRlZCBhdCBtb3VudCB0aW1lKS4KKyAgc2VydmVyaW5vCVVzZSBzZXJ2ZXIncyBpbm9kZSBudW1iZXJzIGluc3RlYWQgb2YgZ2VuZXJhdGluZyBhdXRvbWF0aWNhbGx5CisJCWluY3JlbWVudGluZyBpbm9kZSBudW1iZXJzIG9uIHRoZSBjbGllbnQuICBBbHRob3VnaCB0aGlzIHdpbGwKKwkJbWFrZSBpdCBlYXNpZXIgdG8gc3BvdCBoYXJkbGlua2VkIGZpbGVzIChhcyB0aGV5IHdpbGwgaGF2ZQorCQl0aGUgc2FtZSBpbm9kZSBudW1iZXJzKSBhbmQgaW5vZGUgbnVtYmVycyBtYXkgYmUgcGVyc2lzdGVudCwKKwkJbm90ZSB0aGF0IHRoZSBzZXJ2ZXIgZG9lcyBub3QgZ3VhcmFudGVlIHRoYXQgdGhlIGlub2RlIG51bWJlcnMKKwkJYXJlIHVuaXF1ZSBpZiBtdWx0aXBsZSBzZXJ2ZXIgc2lkZSBtb3VudHMgYXJlIGV4cG9ydGVkIHVuZGVyIGEKKwkJc2luZ2xlIHNoYXJlIChzaW5jZSBpbm9kZSBudW1iZXJzIG9uIHRoZSBzZXJ2ZXJzIG1pZ2h0IG5vdAorCQliZSB1bmlxdWUgaWYgbXVsdGlwbGUgZmlsZXN5c3RlbXMgYXJlIG1vdW50ZWQgdW5kZXIgdGhlIHNhbWUKKwkJc2hhcmVkIGhpZ2hlciBsZXZlbCBkaXJlY3RvcnkpLiAgTm90ZSB0aGF0IHNvbWUgb2xkZXIKKwkJKGUuZy4gcHJlLVdpbmRvd3MgMjAwMCkgZG8gbm90IHN1cHBvcnQgcmV0dXJuaW5nIFVuaXF1ZUlEcworCQlvciB0aGUgQ0lGUyBVbml4IEV4dGVuc2lvbnMgZXF1aXZhbGVudCBhbmQgZm9yIHRob3NlCisJCXRoaXMgbW91bnQgb3B0aW9uIHdpbGwgaGF2ZSBubyBlZmZlY3QuICBFeHBvcnRpbmcgY2lmcyBtb3VudHMKKwkJdW5kZXIgbmZzZCByZXF1aXJlcyB0aGlzIG1vdW50IG9wdGlvbiBvbiB0aGUgY2lmcyBtb3VudC4KKwkJVGhpcyBpcyBub3cgdGhlIGRlZmF1bHQgaWYgc2VydmVyIHN1cHBvcnRzIHRoZSAKKwkJcmVxdWlyZWQgbmV0d29yayBvcGVyYXRpb24uCisgIG5vc2VydmVyaW5vICAgQ2xpZW50IGdlbmVyYXRlcyBpbm9kZSBudW1iZXJzIChyYXRoZXIgdGhhbiB1c2luZyB0aGUgYWN0dWFsIG9uZQorCQlmcm9tIHRoZSBzZXJ2ZXIpLiBUaGVzZSBpbm9kZSBudW1iZXJzIHdpbGwgdmFyeSBhZnRlcgorCQl1bm1vdW50IG9yIHJlYm9vdCB3aGljaCBjYW4gY29uZnVzZSBzb21lIGFwcGxpY2F0aW9ucywKKwkJYnV0IG5vdCBhbGwgc2VydmVyIGZpbGVzeXN0ZW1zIHN1cHBvcnQgdW5pcXVlIGlub2RlCisJCW51bWJlcnMuCisgIHNldHVpZHMgICAgICAgSWYgdGhlIENJRlMgVW5peCBleHRlbnNpb25zIGFyZSBuZWdvdGlhdGVkIHdpdGggdGhlIHNlcnZlcgorCQl0aGUgY2xpZW50IHdpbGwgYXR0ZW1wdCB0byBzZXQgdGhlIGVmZmVjdGl2ZSB1aWQgYW5kIGdpZCBvZgorCQl0aGUgbG9jYWwgcHJvY2VzcyBvbiBuZXdseSBjcmVhdGVkIGZpbGVzLCBkaXJlY3RvcmllcywgYW5kCisJCWRldmljZXMgKGNyZWF0ZSwgbWtkaXIsIG1rbm9kKS4gIElmIHRoZSBDSUZTIFVuaXggRXh0ZW5zaW9ucworCQlhcmUgbm90IG5lZ290aWF0ZWQsIGZvciBuZXdseSBjcmVhdGVkIGZpbGVzIGFuZCBkaXJlY3RvcmllcworCQlpbnN0ZWFkIG9mIHVzaW5nIHRoZSBkZWZhdWx0IHVpZCBhbmQgZ2lkIHNwZWNpZmllZCBvbgorCQl0aGUgbW91bnQsIGNhY2hlIHRoZSBuZXcgZmlsZSdzIHVpZCBhbmQgZ2lkIGxvY2FsbHkgd2hpY2ggbWVhbnMKKwkJdGhhdCB0aGUgdWlkIGZvciB0aGUgZmlsZSBjYW4gY2hhbmdlIHdoZW4gdGhlIGlub2RlIGlzCisJICAgICAgICByZWxvYWRlZCAob3IgdGhlIHVzZXIgcmVtb3VudHMgdGhlIHNoYXJlKS4KKyAgbm9zZXR1aWRzICAgICBUaGUgY2xpZW50IHdpbGwgbm90IGF0dGVtcHQgdG8gc2V0IHRoZSB1aWQgYW5kIGdpZCBvbgorCQlvbiBuZXdseSBjcmVhdGVkIGZpbGVzLCBkaXJlY3RvcmllcywgYW5kIGRldmljZXMgKGNyZWF0ZSwgCisJCW1rZGlyLCBta25vZCkgd2hpY2ggd2lsbCByZXN1bHQgaW4gdGhlIHNlcnZlciBzZXR0aW5nIHRoZQorCQl1aWQgYW5kIGdpZCB0byB0aGUgZGVmYXVsdCAodXN1YWxseSB0aGUgc2VydmVyIHVpZCBvZiB0aGUKKwkJdXNlciB3aG8gbW91bnRlZCB0aGUgc2hhcmUpLiAgTGV0dGluZyB0aGUgc2VydmVyIChyYXRoZXIgdGhhbgorCQl0aGUgY2xpZW50KSBzZXQgdGhlIHVpZCBhbmQgZ2lkIGlzIHRoZSBkZWZhdWx0LiBJZiB0aGUgQ0lGUworCQlVbml4IEV4dGVuc2lvbnMgYXJlIG5vdCBuZWdvdGlhdGVkIHRoZW4gdGhlIHVpZCBhbmQgZ2lkIGZvcgorCQluZXcgZmlsZXMgd2lsbCBhcHBlYXIgdG8gYmUgdGhlIHVpZCAoZ2lkKSBvZiB0aGUgbW91bnRlciBvciB0aGUKKwkJdWlkIChnaWQpIHBhcmFtZXRlciBzcGVjaWZpZWQgb24gdGhlIG1vdW50LgorICBuZXRiaW9zbmFtZSAgIFdoZW4gbW91bnRpbmcgdG8gc2VydmVycyB2aWEgcG9ydCAxMzksIHNwZWNpZmllcyB0aGUgUkZDMTAwMQorCQlzb3VyY2UgbmFtZSB0byB1c2UgdG8gcmVwcmVzZW50IHRoZSBjbGllbnQgbmV0YmlvcyBtYWNoaW5lIAorCQluYW1lIHdoZW4gZG9pbmcgdGhlIFJGQzEwMDEgbmV0YmlvcyBzZXNzaW9uIGluaXRpYWxpemUuCisgIGRpcmVjdCAgICAgICAgRG8gbm90IGRvIGlub2RlIGRhdGEgY2FjaGluZyBvbiBmaWxlcyBvcGVuZWQgb24gdGhpcyBtb3VudC4KKwkJVGhpcyBwcmVjbHVkZXMgbW1hcHBpbmcgZmlsZXMgb24gdGhpcyBtb3VudC4gSW4gc29tZSBjYXNlcworCQl3aXRoIGZhc3QgbmV0d29ya3MgYW5kIGxpdHRsZSBvciBubyBjYWNoaW5nIGJlbmVmaXRzIG9uIHRoZQorCQljbGllbnQgKGUuZy4gd2hlbiB0aGUgYXBwbGljYXRpb24gaXMgZG9pbmcgbGFyZ2Ugc2VxdWVudGlhbAorCQlyZWFkcyBiaWdnZXIgdGhhbiBwYWdlIHNpemUgd2l0aG91dCByZXJlYWRpbmcgdGhlIHNhbWUgZGF0YSkgCisJCXRoaXMgY2FuIHByb3ZpZGUgYmV0dGVyIHBlcmZvcm1hbmNlIHRoYW4gdGhlIGRlZmF1bHQKKwkJYmVoYXZpb3Igd2hpY2ggY2FjaGVzIHJlYWRzIChyZWFkYWhlYWQpIGFuZCB3cml0ZXMgCisJCSh3cml0ZWJlaGluZCkgdGhyb3VnaCB0aGUgbG9jYWwgTGludXggY2xpZW50IHBhZ2VjYWNoZSAKKwkJaWYgb3Bsb2NrIChjYWNoaW5nIHRva2VuKSBpcyBncmFudGVkIGFuZCBoZWxkLiBOb3RlIHRoYXQKKwkJZGlyZWN0IGFsbG93cyB3cml0ZSBvcGVyYXRpb25zIGxhcmdlciB0aGFuIHBhZ2Ugc2l6ZQorCQl0byBiZSBzZW50IHRvIHRoZSBzZXJ2ZXIuCisgIHN0cmljdGNhY2hlICAgVXNlIGZvciBzd2l0Y2hpbmcgb24gc3RyaWN0IGNhY2hlIG1vZGUuIEluIHRoaXMgbW9kZSB0aGUKKwkJY2xpZW50IHJlYWQgZnJvbSB0aGUgY2FjaGUgYWxsIHRoZSB0aW1lIGl0IGhhcyBPcGxvY2sgTGV2ZWwgSUksCisJCW90aGVyd2lzZSAtIHJlYWQgZnJvbSB0aGUgc2VydmVyLiBBbGwgd3JpdHRlbiBkYXRhIGFyZSBzdG9yZWQKKwkJaW4gdGhlIGNhY2hlLCBidXQgaWYgdGhlIGNsaWVudCBkb2Vzbid0IGhhdmUgRXhjbHVzaXZlIE9wbG9jaywKKwkJaXQgd3JpdGVzIHRoZSBkYXRhIHRvIHRoZSBzZXJ2ZXIuCisgIHJ3cGlkZm9yd2FyZCAgRm9yd2FyZCBwaWQgb2YgYSBwcm9jZXNzIHdobyBvcGVuZWQgYSBmaWxlIHRvIGFueSByZWFkIG9yIHdyaXRlCisJCW9wZXJhdGlvbiBvbiB0aGF0IGZpbGUuIFRoaXMgcHJldmVudCBhcHBsaWNhdGlvbnMgbGlrZSBXSU5FCisJCWZyb20gZmFpbGluZyBvbiByZWFkIGFuZCB3cml0ZSBpZiB3ZSB1c2UgbWFuZGF0b3J5IGJybG9jayBzdHlsZS4KKyAgYWNsICAgCUFsbG93IHNldGZhY2wgYW5kIGdldGZhY2wgdG8gbWFuYWdlIHBvc2l4IEFDTHMgaWYgc2VydmVyCisJCXN1cHBvcnRzIHRoZW0uICAoZGVmYXVsdCkKKyAgbm9hY2wgCURvIG5vdCBhbGxvdyBzZXRmYWNsIGFuZCBnZXRmYWNsIGNhbGxzIG9uIHRoaXMgbW91bnQKKyAgdXNlcl94YXR0ciAgICBBbGxvdyBnZXR0aW5nIGFuZCBzZXR0aW5nIHVzZXIgeGF0dHJzICh0aG9zZSBhdHRyaWJ1dGVzIHdob3NlCisJCW5hbWUgYmVnaW5zIHdpdGggInVzZXIuIiBvciAib3MyLiIpIGFzIE9TLzIgRUFzIChleHRlbmRlZAorCQlhdHRyaWJ1dGVzKSB0byB0aGUgc2VydmVyLiAgVGhpcyBhbGxvd3Mgc3VwcG9ydCBvZiB0aGUKKwkJc2V0ZmF0dHIgYW5kIGdldGZhdHRyIHV0aWxpdGllcy4gKGRlZmF1bHQpCisgIG5vdXNlcl94YXR0ciAgRG8gbm90IGFsbG93IGdldGZhdHRyL3NldGZhdHRyIHRvIGdldC9zZXQvbGlzdCB4YXR0cnMgCisgIG1hcGNoYXJzICAgICAgVHJhbnNsYXRlIHNpeCBvZiB0aGUgc2V2ZW4gcmVzZXJ2ZWQgY2hhcmFjdGVycyAobm90IGJhY2tzbGFzaCkKKwkJCSo/PD58OgorCQl0byB0aGUgcmVtYXAgcmFuZ2UgKGFib3ZlIDB4RjAwMCksIHdoaWNoIGFsc28KKwkJYWxsb3dzIHRoZSBDSUZTIGNsaWVudCB0byByZWNvZ25pemUgZmlsZXMgY3JlYXRlZCB3aXRoCisJCXN1Y2ggY2hhcmFjdGVycyBieSBXaW5kb3dzJ3MgUE9TSVggZW11bGF0aW9uLiBUaGlzIGNhbgorCQlhbHNvIGJlIHVzZWZ1bCB3aGVuIG1vdW50aW5nIHRvIG1vc3QgdmVyc2lvbnMgb2YgU2FtYmEKKwkJKHdoaWNoIGFsc28gZm9yYmlkcyBjcmVhdGluZyBhbmQgb3BlbmluZyBmaWxlcworCQl3aG9zZSBuYW1lcyBjb250YWluIGFueSBvZiB0aGVzZSBzZXZlbiBjaGFyYWN0ZXJzKS4KKwkJVGhpcyBoYXMgbm8gZWZmZWN0IGlmIHRoZSBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydAorCQlVbmljb2RlIG9uIHRoZSB3aXJlLgorIG5vbWFwY2hhcnMgICAgIERvIG5vdCB0cmFuc2xhdGUgYW55IG9mIHRoZXNlIHNldmVuIGNoYXJhY3RlcnMgKGRlZmF1bHQpLgorIG5vY2FzZSAgICAgICAgIFJlcXVlc3QgY2FzZSBpbnNlbnNpdGl2ZSBwYXRoIG5hbWUgbWF0Y2hpbmcgKGNhc2UKKwkJc2Vuc2l0aXZlIGlzIHRoZSBkZWZhdWx0IGlmIHRoZSBzZXJ2ZXIgc3VwcG9ydHMgaXQpLgorCQkobW91bnQgb3B0aW9uICJpZ25vcmVjYXNlIiBpcyBpZGVudGljYWwgdG8gIm5vY2FzZSIpCisgcG9zaXhwYXRocyAgICAgSWYgQ0lGUyBVbml4IGV4dGVuc2lvbnMgYXJlIHN1cHBvcnRlZCwgYXR0ZW1wdCB0bworCQluZWdvdGlhdGUgcG9zaXggcGF0aCBuYW1lIHN1cHBvcnQgd2hpY2ggYWxsb3dzIGNlcnRhaW4KKwkJY2hhcmFjdGVycyBmb3JiaWRkZW4gaW4gdHlwaWNhbCBDSUZTIGZpbGVuYW1lcywgd2l0aG91dAorCQlyZXF1aXJpbmcgcmVtYXBwaW5nLiAoZGVmYXVsdCkKKyBub3Bvc2l4cGF0aHMgICBJZiBDSUZTIFVuaXggZXh0ZW5zaW9ucyBhcmUgc3VwcG9ydGVkLCBkbyBub3QgcmVxdWVzdAorCQlwb3NpeCBwYXRoIG5hbWUgc3VwcG9ydCAodGhpcyBtYXkgY2F1c2Ugc2VydmVycyB0bworCQlyZWplY3QgY3JlYXRpbmdmaWxlIHdpdGggY2VydGFpbiByZXNlcnZlZCBjaGFyYWN0ZXJzKS4KKyBub3VuaXggICAgICAgICBEaXNhYmxlIHRoZSBDSUZTIFVuaXggRXh0ZW5zaW9ucyBmb3IgdGhpcyBtb3VudCAodHJlZQorCQljb25uZWN0aW9uKS4gVGhpcyBpcyByYXJlbHkgbmVlZGVkLCBidXQgaXQgbWF5IGJlIHVzZWZ1bAorCQlpbiBvcmRlciB0byB0dXJuIG9mZiBtdWx0aXBsZSBzZXR0aW5ncyBhbGwgYXQgb25jZSAoaWUKKwkJcG9zaXggYWNscywgcG9zaXggbG9ja3MsIHBvc2l4IHBhdGhzLCBzeW1saW5rIHN1cHBvcnQKKwkJYW5kIHJldHJpZXZpbmcgdWlkcy9naWRzL21vZGUgZnJvbSB0aGUgc2VydmVyKSBvciB0bworCQl3b3JrIGFyb3VuZCBhIGJ1ZyBpbiBzZXJ2ZXIgd2hpY2ggaW1wbGVtZW50IHRoZSBVbml4CisJCUV4dGVuc2lvbnMuCisgbm9icmwgICAgICAgICAgRG8gbm90IHNlbmQgYnl0ZSByYW5nZSBsb2NrIHJlcXVlc3RzIHRvIHRoZSBzZXJ2ZXIuCisJCVRoaXMgaXMgbmVjZXNzYXJ5IGZvciBjZXJ0YWluIGFwcGxpY2F0aW9ucyB0aGF0IGJyZWFrCisJCXdpdGggY2lmcyBzdHlsZSBtYW5kYXRvcnkgYnl0ZSByYW5nZSBsb2NrcyAoYW5kIG1vc3QKKwkJY2lmcyBzZXJ2ZXJzIGRvIG5vdCB5ZXQgc3VwcG9ydCByZXF1ZXN0aW5nIGFkdmlzb3J5CisJCWJ5dGUgcmFuZ2UgbG9ja3MpLgorIGZvcmNlbWFuZGF0b3J5bG9jayBFdmVuIGlmIHRoZSBzZXJ2ZXIgc3VwcG9ydHMgcG9zaXggKGFkdmlzb3J5KSBieXRlIHJhbmdlCisJCWxvY2tpbmcsIHNlbmQgb25seSBtYW5kYXRvcnkgbG9jayByZXF1ZXN0cy4gIEZvciBzb21lCisJCShwcmVzdW1hYmx5IHJhcmUpIGFwcGxpY2F0aW9ucywgb3JpZ2luYWxseSBjb2RlZCBmb3IKKwkJRE9TL1dpbmRvd3MsIHdoaWNoIHJlcXVpcmUgV2luZG93cyBzdHlsZSBtYW5kYXRvcnkgYnl0ZSByYW5nZQorCQlsb2NraW5nLCB0aGV5IG1heSBiZSBhYmxlIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoaXMgb3B0aW9uLAorCQlmb3JjaW5nIHRoZSBjaWZzIGNsaWVudCB0byBvbmx5IHNlbmQgbWFuZGF0b3J5IGxvY2tzCisJCWV2ZW4gaWYgdGhlIGNpZnMgc2VydmVyIHdvdWxkIHN1cHBvcnQgcG9zaXggYWR2aXNvcnkgbG9ja3MuCisJCSJmb3JjZW1hbmQiIGlzIGFjY2VwdGVkIGFzIGEgc2hvcnRlciBmb3JtIG9mIHRoaXMgbW91bnQKKwkJb3B0aW9uLgorIG5vc3RyaWN0c3luYyAgIElmIHRoaXMgbW91bnQgb3B0aW9uIGlzIHNldCwgd2hlbiBhbiBhcHBsaWNhdGlvbiBkb2VzIGFuCisJCWZzeW5jIGNhbGwgdGhlbiB0aGUgY2lmcyBjbGllbnQgZG9lcyBub3Qgc2VuZCBhbiBTTUIgRmx1c2gKKwkJdG8gdGhlIHNlcnZlciAodG8gZm9yY2UgdGhlIHNlcnZlciB0byB3cml0ZSBhbGwgZGlydHkgZGF0YQorCQlmb3IgdGhpcyBmaWxlIGltbWVkaWF0ZWx5IHRvIGRpc2spLCBhbHRob3VnaCBjaWZzIHN0aWxsIHNlbmRzCisJCWFsbCBkaXJ0eSAoY2FjaGVkKSBmaWxlIGRhdGEgdG8gdGhlIHNlcnZlciBhbmQgd2FpdHMgZm9yIHRoZQorCQlzZXJ2ZXIgdG8gcmVzcG9uZCB0byB0aGUgd3JpdGUuICBTaW5jZSBTTUIgRmx1c2ggY2FuIGJlCisJCXZlcnkgc2xvdywgYW5kIHNvbWUgc2VydmVycyBtYXkgYmUgcmVsaWFibGUgZW5vdWdoICh0byByaXNrCisJCWRlbGF5aW5nIHNsaWdodGx5IGZsdXNoaW5nIHRoZSBkYXRhIHRvIGRpc2sgb24gdGhlIHNlcnZlciksCisJCXR1cm5pbmcgb24gdGhpcyBvcHRpb24gbWF5IGJlIHVzZWZ1bCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIGZvcgorCQlhcHBsaWNhdGlvbnMgdGhhdCBmc3luYyB0b28gbXVjaCwgYXQgYSBzbWFsbCByaXNrIG9mIHNlcnZlcgorCQljcmFzaC4gIElmIHRoaXMgbW91bnQgb3B0aW9uIGlzIG5vdCBzZXQsIGJ5IGRlZmF1bHQgY2lmcyB3aWxsCisJCXNlbmQgYW4gU01CIGZsdXNoIHJlcXVlc3QgKGFuZCB3YWl0IGZvciBhIHJlc3BvbnNlKSBvbiBldmVyeQorCQlmc3luYyBjYWxsLgorIG5vZGZzICAgICAgICAgIERpc2FibGUgREZTIChnbG9iYWwgbmFtZSBzcGFjZSBzdXBwb3J0KSBldmVuIGlmIHRoZQorCQlzZXJ2ZXIgY2xhaW1zIHRvIHN1cHBvcnQgaXQuICBUaGlzIGNhbiBoZWxwIHdvcmsgYXJvdW5kCisJCWEgcHJvYmxlbSB3aXRoIHBhcnNpbmcgb2YgREZTIHBhdGhzIHdpdGggU2FtYmEgc2VydmVyCisJCXZlcnNpb25zIDMuMC4yNCBhbmQgMy4wLjI1LgorIHJlbW91bnQgICAgICAgIHJlbW91bnQgdGhlIHNoYXJlIChvZnRlbiB1c2VkIHRvIGNoYW5nZSBmcm9tIHJvIHRvIHJ3IG1vdW50cworCSAgICAgICAgb3IgdmljZSB2ZXJzYSkKKyBjaWZzYWNsICAgICAgICBSZXBvcnQgbW9kZSBiaXRzIChlLmcuIG9uIHN0YXQpIGJhc2VkIG9uIHRoZSBXaW5kb3dzIEFDTCBmb3IKKwkgICAgICAgIHRoZSBmaWxlLiAoRVhQRVJJTUVOVEFMKQorIHNlcnZlcm4gICAgICAgIFNwZWNpZnkgdGhlIHNlcnZlciAncyBuZXRiaW9zIG5hbWUgKFJGQzEwMDEgbmFtZSkgdG8gdXNlCisJCXdoZW4gYXR0ZW1wdGluZyB0byBzZXR1cCBhIHNlc3Npb24gdG8gdGhlIHNlcnZlci4gCisJCVRoaXMgaXMgbmVlZGVkIGZvciBtb3VudGluZyB0byBzb21lIG9sZGVyIHNlcnZlcnMgKHN1Y2gKKwkJYXMgT1MvMiBvciBXaW5kb3dzIDk4IGFuZCBXaW5kb3dzIE1FKSBzaW5jZSB0aGV5IGRvIG5vdAorCQlzdXBwb3J0IGEgZGVmYXVsdCBzZXJ2ZXIgbmFtZS4gIEEgc2VydmVyIG5hbWUgY2FuIGJlIHVwCisJCXRvIDE1IGNoYXJhY3RlcnMgbG9uZyBhbmQgaXMgdXN1YWxseSB1cHBlcmNhc2VkLgorIHNmdSAgICAgICAgICAgIFdoZW4gdGhlIENJRlMgVW5peCBFeHRlbnNpb25zIGFyZSBub3QgbmVnb3RpYXRlZCwgYXR0ZW1wdCB0bworCQljcmVhdGUgZGV2aWNlIGZpbGVzIGFuZCBmaWZvcyBpbiBhIGZvcm1hdCBjb21wYXRpYmxlIHdpdGgKKwkJU2VydmljZXMgZm9yIFVuaXggKFNGVSkuICBJbiBhZGRpdGlvbiByZXRyaWV2ZSBiaXRzIDEwLTEyCisJCW9mIHRoZSBtb2RlIHZpYSB0aGUgU0VURklMRUJJVFMgZXh0ZW5kZWQgYXR0cmlidXRlIChhcworCQlTRlUgZG9lcykuICBJbiB0aGUgZnV0dXJlIHRoZSBib3R0b20gOSBiaXRzIG9mIHRoZQorCQltb2RlIGFsc28gd2lsbCBiZSBlbXVsYXRlZCB1c2luZyBxdWVyaWVzIG9mIHRoZSBzZWN1cml0eQorCQlkZXNjcmlwdG9yIChBQ0wpLgorIG1mc3ltbGlua3MgICAgIEVuYWJsZSBzdXBwb3J0IGZvciBNaW5zaGFsbCtGcmVuY2ggc3ltbGlua3MKKwkJKHNlZSBodHRwOi8vd2lraS5zYW1iYS5vcmcvaW5kZXgucGhwL1VOSVhfRXh0ZW5zaW9ucyNNaW5zaGFsbC4yQkZyZW5jaF9zeW1saW5rcykKKwkJVGhpcyBvcHRpb24gaXMgaWdub3JlZCB3aGVuIHNwZWNpZmllZCB0b2dldGhlciB3aXRoIHRoZQorCQknc2Z1JyBvcHRpb24uIE1pbnNoYWxsK0ZyZW5jaCBzeW1saW5rcyBhcmUgdXNlZCBldmVuIGlmCisJCXRoZSBzZXJ2ZXIgc3VwcG9ydHMgdGhlIENJRlMgVW5peCBFeHRlbnNpb25zLgorIHNpZ24gICAgICAgICAgIE11c3QgdXNlIHBhY2tldCBzaWduaW5nIChoZWxwcyBhdm9pZCB1bndhbnRlZCBkYXRhIG1vZGlmaWNhdGlvbgorCQlieSBpbnRlcm1lZGlhdGUgc3lzdGVtcyBpbiB0aGUgcm91dGUpLiAgTm90ZSB0aGF0IHNpZ25pbmcKKwkJZG9lcyBub3Qgd29yayB3aXRoIGxhbm1hbiBvciBwbGFpbnRleHQgYXV0aGVudGljYXRpb24uCisgc2VhbCAgICAgICAgICAgTXVzdCBzZWFsIChlbmNyeXB0KSBhbGwgZGF0YSBvbiB0aGlzIG1vdW50ZWQgc2hhcmUgYmVmb3JlCisJCXNlbmRpbmcgb24gdGhlIG5ldHdvcmsuICBSZXF1aXJlcyBzdXBwb3J0IGZvciBVbml4IEV4dGVuc2lvbnMuCisJCU5vdGUgdGhhdCB0aGlzIGRpZmZlcnMgZnJvbSB0aGUgc2lnbiBtb3VudCBvcHRpb24gaW4gdGhhdCBpdAorCQljYXVzZXMgZW5jcnlwdGlvbiBvZiBkYXRhIHNlbnQgb3ZlciB0aGlzIG1vdW50ZWQgc2hhcmUgYnV0IG90aGVyCisJCXNoYXJlcyBtb3VudGVkIHRvIHRoZSBzYW1lIHNlcnZlciBhcmUgdW5hZmZlY3RlZC4KKyBsb2NhbGxlYXNlICAgICBUaGlzIG9wdGlvbiBpcyByYXJlbHkgbmVlZGVkLiBGY250bCBGX1NFVExFQVNFIGlzCisJCXVzZWQgYnkgc29tZSBhcHBsaWNhdGlvbnMgc3VjaCBhcyBTYW1iYSBhbmQgTkZTdjQgc2VydmVyIHRvCisJCWNoZWNrIHRvIHNlZSB3aGV0aGVyIGEgZmlsZSBpcyBjYWNoZWFibGUuICBDSUZTIGhhcyBubyB3YXkKKwkJdG8gZXhwbGljaXRseSByZXF1ZXN0IGEgbGVhc2UsIGJ1dCBjYW4gY2hlY2sgd2hldGhlciBhIGZpbGUKKwkJaXMgY2FjaGVhYmxlIChvcGxvY2tlZCkuICBVbmZvcnR1bmF0ZWx5LCBldmVuIGlmIGEgZmlsZQorCQlpcyBub3Qgb3Bsb2NrZWQsIGl0IGNvdWxkIHN0aWxsIGJlIGNhY2hlYWJsZSAoaWUgY2lmcyBjbGllbnQKKwkJY291bGQgZ3JhbnQgZmNudGwgbGVhc2VzIGlmIG5vIG90aGVyIGxvY2FsIHByb2Nlc3NlcyBhcmUgdXNpbmcKKwkJdGhlIGZpbGUpIGZvciBjYXNlcyBmb3IgZXhhbXBsZSBzdWNoIGFzIHdoZW4gdGhlIHNlcnZlciBkb2VzIG5vdAorCQlzdXBwb3J0IG9wbG9ja3MgYW5kIHRoZSB1c2VyIGlzIHN1cmUgdGhhdCB0aGUgb25seSB1cGRhdGVzIHRvCisJCXRoZSBmaWxlIHdpbGwgYmUgZnJvbSB0aGlzIGNsaWVudC4gU3BlY2lmeWluZyB0aGlzIG1vdW50IG9wdGlvbgorCQl3aWxsIGFsbG93IHRoZSBjaWZzIGNsaWVudCB0byBjaGVjayBmb3IgbGVhc2VzIChvbmx5KSBsb2NhbGx5CisJCWZvciBmaWxlcyB3aGljaCBhcmUgbm90IG9wbG9ja2VkIGluc3RlYWQgb2YgZGVueWluZyBsZWFzZXMKKwkJaW4gdGhhdCBjYXNlLiAoRVhQRVJJTUVOVEFMKQorIHNlYyAgICAgICAgICAgIFNlY3VyaXR5IG1vZGUuICBBbGxvd2VkIHZhbHVlcyBhcmU6CisJCQlub25lCWF0dGVtcHQgdG8gY29ubmVjdGlvbiBhcyBhIG51bGwgdXNlciAobm8gbmFtZSkKKwkJCWtyYjUgICAgVXNlIEtlcmJlcm9zIHZlcnNpb24gNSBhdXRoZW50aWNhdGlvbgorCQkJa3JiNWkgICBVc2UgS2VyYmVyb3MgYXV0aGVudGljYXRpb24gYW5kIHBhY2tldCBzaWduaW5nCisJCQludGxtICAgIFVzZSBOVExNIHBhc3N3b3JkIGhhc2hpbmcgKGRlZmF1bHQpCisJCQludGxtaSAgIFVzZSBOVExNIHBhc3N3b3JkIGhhc2hpbmcgd2l0aCBzaWduaW5nIChpZgorCQkJCS9wcm9jL2ZzL2NpZnMvUGFja2V0U2lnbmluZ0VuYWJsZWQgb24gb3IgaWYKKwkJCQlzZXJ2ZXIgcmVxdWlyZXMgc2lnbmluZyBhbHNvIGNhbiBiZSB0aGUgZGVmYXVsdCkgCisJCQludGxtdjIgIFVzZSBOVExNdjIgcGFzc3dvcmQgaGFzaGluZyAgICAgIAorCQkJbnRsbXYyaSBVc2UgTlRMTXYyIHBhc3N3b3JkIGhhc2hpbmcgd2l0aCBwYWNrZXQgc2lnbmluZworCQkJbGFubWFuICAoaWYgY29uZmlndXJlZCBpbiBrZXJuZWwgY29uZmlnKSB1c2Ugb2xkZXIKKwkJCQlsYW5tYW4gaGFzaAoraGFyZAkJUmV0cnkgZmlsZSBvcGVyYXRpb25zIGlmIHNlcnZlciBpcyBub3QgcmVzcG9uZGluZworc29mdAkJTGltaXQgcmV0cmllcyB0byB1bnJlc3BvbnNpdmUgc2VydmVycyAodXN1YWxseSBvbmx5CisJCW9uZSByZXRyeSkgYmVmb3JlIHJldHVybmluZyBhbiBlcnJvci4gIChkZWZhdWx0KQorCitUaGUgbW91bnQuY2lmcyBtb3VudCBoZWxwZXIgYWxzbyBhY2NlcHRzIGEgZmV3IG1vdW50IG9wdGlvbnMgYmVmb3JlIC1vCitpbmNsdWRpbmc6CisKKwktUyAgICAgIHRha2UgcGFzc3dvcmQgZnJvbSBzdGRpbiAoZXF1aXZhbGVudCB0byBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudAorCQl2YXJpYWJsZSAiUEFTU1dEX0ZEPTAiCisJLVYgICAgICBwcmludCBtb3VudC5jaWZzIHZlcnNpb24KKwktPyAgICAgIGRpc3BsYXkgc2ltcGxlIHVzYWdlIGluZm9ybWF0aW9uCisKK1dpdGggbW9zdCAyLjYga2VybmVsIHZlcnNpb25zIG9mIG1vZHV0aWxzLCB0aGUgdmVyc2lvbiBvZiB0aGUgY2lmcyBrZXJuZWwKK21vZHVsZSBjYW4gYmUgZGlzcGxheWVkIHZpYSBtb2RpbmZvLgorCitNaXNjIC9wcm9jL2ZzL2NpZnMgRmxhZ3MgYW5kIERlYnVnIEluZm8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorSW5mb3JtYXRpb25hbCBwc2V1ZG8tZmlsZXM6CitEZWJ1Z0RhdGEJCURpc3BsYXlzIGluZm9ybWF0aW9uIGFib3V0IGFjdGl2ZSBDSUZTIHNlc3Npb25zIGFuZAorCQkJc2hhcmVzLCBmZWF0dXJlcyBlbmFibGVkIGFzIHdlbGwgYXMgdGhlIGNpZnMua28KKwkJCXZlcnNpb24uCitTdGF0cwkJCUxpc3RzIHN1bW1hcnkgcmVzb3VyY2UgdXNhZ2UgaW5mb3JtYXRpb24gYXMgd2VsbCBhcyBwZXIKKwkJCXNoYXJlIHN0YXRpc3RpY3MsIGlmIENPTkZJR19DSUZTX1NUQVRTIGluIGVuYWJsZWQKKwkJCWluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4KKworQ29uZmlndXJhdGlvbiBwc2V1ZG8tZmlsZXM6CitQYWNrZXRTaWduaW5nRW5hYmxlZAlJZiBzZXQgdG8gb25lLCBjaWZzIHBhY2tldCBzaWduaW5nIGlzIGVuYWJsZWQKKwkJCWFuZCB3aWxsIGJlIHVzZWQgaWYgdGhlIHNlcnZlciByZXF1aXJlcyAKKwkJCWl0LiAgSWYgc2V0IHRvIHR3bywgY2lmcyBwYWNrZXQgc2lnbmluZyBpcworCQkJcmVxdWlyZWQgZXZlbiBpZiB0aGUgc2VydmVyIGNvbnNpZGVycyBwYWNrZXQKKwkJCXNpZ25pbmcgb3B0aW9uYWwuIChkZWZhdWx0IDEpCitTZWN1cml0eUZsYWdzCQlGbGFncyB3aGljaCBjb250cm9sIHNlY3VyaXR5IG5lZ290aWF0aW9uIGFuZAorCQkJYWxzbyBwYWNrZXQgc2lnbmluZy4gQXV0aGVudGljYXRpb24gKG1heS9tdXN0KQorCQkJZmxhZ3MgKGUuZy4gZm9yIE5UTE0gYW5kL29yIE5UTE12MikgbWF5IGJlIGNvbWJpbmVkIHdpdGgKKwkJCXRoZSBzaWduaW5nIGZsYWdzLiAgU3BlY2lmeWluZyB0d28gZGlmZmVyZW50IHBhc3N3b3JkCisJCQloYXNoaW5nIG1lY2hhbmlzbXMgKGFzICJtdXN0IHVzZSIpIG9uIHRoZSBvdGhlciBoYW5kIAorCQkJZG9lcyBub3QgbWFrZSBtdWNoIHNlbnNlLiBEZWZhdWx0IGZsYWdzIGFyZSAKKwkJCQkweDA3MDA3IAorCQkJKE5UTE0sIE5UTE12MiBhbmQgcGFja2V0IHNpZ25pbmcgYWxsb3dlZCkuICBUaGUgbWF4aW11bSAKKwkJCWFsbG93YWJsZSBmbGFncyBpZiB5b3Ugd2FudCB0byBhbGxvdyBtb3VudHMgdG8gc2VydmVycworCQkJdXNpbmcgd2Vha2VyIHBhc3N3b3JkIGhhc2hlcyBpcyAweDM3MDM3IChsYW5tYW4sCisJCQlwbGFpbnRleHQsIG50bG0sIG50bG12Miwgc2lnbmluZyBhbGxvd2VkKS4gIFNvbWUKKwkJCVNlY3VyaXR5RmxhZ3MgcmVxdWlyZSB0aGUgY29ycmVzcG9uZGluZyBtZW51Y29uZmlnCisJCQlvcHRpb25zIHRvIGJlIGVuYWJsZWQgKGxhbm1hbiBhbmQgcGxhaW50ZXh0IHJlcXVpcmUKKwkJCUNPTkZJR19DSUZTX1dFQUtfUFdfSEFTSCBmb3IgZXhhbXBsZSkuICBFbmFibGluZworCQkJcGxhaW50ZXh0IGF1dGhlbnRpY2F0aW9uIGN1cnJlbnRseSByZXF1aXJlcyBhbHNvCisJCQllbmFibGluZyBsYW5tYW4gYXV0aGVudGljYXRpb24gaW4gdGhlIHNlY3VyaXR5IGZsYWdzCisJCQliZWNhdXNlIHRoZSBjaWZzIG1vZHVsZSBvbmx5IHN1cHBvcnRzIHNlbmRpbmcKKwkJCWxhaW50ZXh0IHBhc3N3b3JkcyB1c2luZyB0aGUgb2xkZXIgbGFubWFuIGRpYWxlY3QKKwkJCWZvcm0gb2YgdGhlIHNlc3Npb24gc2V0dXAgU01CLiAgKGUuZy4gZm9yIGF1dGhlbnRpY2F0aW9uCisJCQl1c2luZyBwbGFpbiB0ZXh0IHBhc3N3b3Jkcywgc2V0IHRoZSBTZWN1cml0eUZsYWdzCisJCQl0byAweDMwMDMwKToKKyAKKwkJCW1heSB1c2UgcGFja2V0IHNpZ25pbmcgCQkJCTB4MDAwMDEKKwkJCW11c3QgdXNlIHBhY2tldCBzaWduaW5nCQkJCTB4MDEwMDEKKwkJCW1heSB1c2UgTlRMTSAobW9zdCBjb21tb24gcGFzc3dvcmQgaGFzaCkJMHgwMDAwMgorCQkJbXVzdCB1c2UgTlRMTQkJCQkJMHgwMjAwMgorCQkJbWF5IHVzZSBOVExNdjIJCQkJCTB4MDAwMDQKKwkJCW11c3QgdXNlIE5UTE12MgkJCQkJMHgwNDAwNAorCQkJbWF5IHVzZSBLZXJiZXJvcyBzZWN1cml0eQkJCTB4MDAwMDgKKwkJCW11c3QgdXNlIEtlcmJlcm9zCQkJCTB4MDgwMDgKKwkJCW1heSB1c2UgbGFubWFuICh3ZWFrKSBwYXNzd29yZCBoYXNoICAJCTB4MDAwMTAKKwkJCW11c3QgdXNlIGxhbm1hbiBwYXNzd29yZCBoYXNoCQkJMHgxMDAxMAorCQkJbWF5IHVzZSBwbGFpbnRleHQgcGFzc3dvcmRzICAgIAkJCTB4MDAwMjAKKwkJCW11c3QgdXNlIHBsYWludGV4dCBwYXNzd29yZHMJCQkweDIwMDIwCisJCQkocmVzZXJ2ZWQgZm9yIGZ1dHVyZSBwYWNrZXQgZW5jcnlwdGlvbikJCTB4MDAwNDAKKworY2lmc0ZZSQkJCUlmIHNldCB0byBub24temVybyB2YWx1ZSwgYWRkaXRpb25hbCBkZWJ1ZyBpbmZvcm1hdGlvbgorCQkJd2lsbCBiZSBsb2dnZWQgdG8gdGhlIHN5c3RlbSBlcnJvciBsb2cuICBUaGlzIGZpZWxkCisJCQljb250YWlucyB0aHJlZSBmbGFncyBjb250cm9sbGluZyBkaWZmZXJlbnQgY2xhc3NlcyBvZgorCQkJZGVidWdnaW5nIGVudHJpZXMuICBUaGUgbWF4aW11bSB2YWx1ZSBpdCBjYW4gYmUgc2V0CisJCQl0byBpcyA3IHdoaWNoIGVuYWJsZXMgYWxsIGRlYnVnZ2luZyBwb2ludHMgKGRlZmF1bHQgMCkuCisJCQlTb21lIGRlYnVnZ2luZyBzdGF0ZW1lbnRzIGFyZSBub3QgY29tcGlsZWQgaW50byB0aGUKKwkJCWNpZnMga2VybmVsIHVubGVzcyBDT05GSUdfQ0lGU19ERUJVRzIgaXMgZW5hYmxlZCBpbiB0aGUKKwkJCWtlcm5lbCBjb25maWd1cmF0aW9uLiBjaWZzRllJIG1heSBiZSBzZXQgdG8gb25lIG9yCisJCQlub3JlIG9mIHRoZSBmb2xsb3dpbmcgZmxhZ3MgKDcgc2V0cyB0aGVtIGFsbCk6CisKKwkJCWxvZyBjaWZzIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMJCQkweDAxCisJCQlsb2cgcmV0dXJuIGNvZGVzIGZyb20gY2lmcyBlbnRyeSBwb2ludHMJCTB4MDIKKwkJCWxvZyBzbG93IHJlc3BvbnNlcyAoaWUgd2hpY2ggdGFrZSBsb25nZXIgdGhhbiAxIHNlY29uZCkKKwkJCSAgQ09ORklHX0NJRlNfU1RBVFMyIG11c3QgYmUgZW5hYmxlZCBpbiAuY29uZmlnCTB4MDQKKwkJCQkKKwkJCQkKK3RyYWNlU01CCQlJZiBzZXQgdG8gb25lLCBkZWJ1ZyBpbmZvcm1hdGlvbiBpcyBsb2dnZWQgdG8gdGhlCisJCQlzeXN0ZW0gZXJyb3IgbG9nIHdpdGggdGhlIHN0YXJ0IG9mIHNtYiByZXF1ZXN0cworCQkJYW5kIHJlc3BvbnNlcyAoZGVmYXVsdCAwKQorTG9va3VwQ2FjaGVFbmFibGUJSWYgc2V0IHRvIG9uZSwgaW5vZGUgaW5mb3JtYXRpb24gaXMga2VwdCBjYWNoZWQKKwkJCWZvciBvbmUgc2Vjb25kIGltcHJvdmluZyBwZXJmb3JtYW5jZSBvZiBsb29rdXBzCisJCQkoZGVmYXVsdCAxKQorT3Bsb2NrRW5hYmxlZAkJSWYgc2V0IHRvIG9uZSwgc2FmZSBkaXN0cmlidXRlZCBjYWNoaW5nIGVuYWJsZWQuCisJCQkoZGVmYXVsdCAxKQorTGludXhFeHRlbnNpb25zRW5hYmxlZAlJZiBzZXQgdG8gb25lIHRoZW4gdGhlIGNsaWVudCB3aWxsIGF0dGVtcHQgdG8KKwkJCXVzZSB0aGUgQ0lGUyAiVU5JWCIgZXh0ZW5zaW9ucyB3aGljaCBhcmUgb3B0aW9uYWwKKwkJCXByb3RvY29sIGVuaGFuY2VtZW50cyB0aGF0IGFsbG93IENJRlMgc2VydmVycworCQkJdG8gcmV0dXJuIGFjY3VyYXRlIFVJRC9HSUQgaW5mb3JtYXRpb24gYXMgd2VsbAorCQkJYXMgc3VwcG9ydCBzeW1ib2xpYyBsaW5rcy4gSWYgeW91IHVzZSBzZXJ2ZXJzCisJCQlzdWNoIGFzIFNhbWJhIHRoYXQgc3VwcG9ydCB0aGUgQ0lGUyBVbml4CisJCQlleHRlbnNpb25zIGJ1dCBkbyBub3Qgd2FudCB0byB1c2Ugc3ltYm9saWMgbGluaworCQkJc3VwcG9ydCBhbmQgd2FudCB0byBtYXAgdGhlIHVpZCBhbmQgZ2lkIGZpZWxkcyAKKwkJCXRvIHZhbHVlcyBzdXBwbGllZCBhdCBtb3VudCAocmF0aGVyIHRoYW4gdGhlIAorCQkJYWN0dWFsIHZhbHVlcywgdGhlbiBzZXQgdGhpcyB0byB6ZXJvLiAoZGVmYXVsdCAxKQorCitUaGVzZSBleHBlcmltZW50YWwgZmVhdHVyZXMgYW5kIHRyYWNpbmcgY2FuIGJlIGVuYWJsZWQgYnkgY2hhbmdpbmcgZmxhZ3MgaW4gCisvcHJvYy9mcy9jaWZzIChhZnRlciB0aGUgY2lmcyBtb2R1bGUgaGFzIGJlZW4gaW5zdGFsbGVkIG9yIGJ1aWx0IGludG8gdGhlIAora2VybmVsLCBlLmcuICBpbnNtb2QgY2lmcykuICBUbyBlbmFibGUgYSBmZWF0dXJlIHNldCBpdCB0byAxIGUuZy4gIHRvIGVuYWJsZSAKK3RyYWNpbmcgdG8gdGhlIGtlcm5lbCBtZXNzYWdlIGxvZyB0eXBlOiAKKworCWVjaG8gNyA+IC9wcm9jL2ZzL2NpZnMvY2lmc0ZZSQorCQorY2lmc0ZZSSBmdW5jdGlvbnMgYXMgYSBiaXQgbWFzay4gU2V0dGluZyBpdCB0byAxIGVuYWJsZXMgYWRkaXRpb25hbCBrZXJuZWwKK2xvZ2dpbmcgb2YgdmFyaW91cyBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzLiAgMiBlbmFibGVzIGxvZ2dpbmcgb2Ygbm9uLXplcm8KK1NNQiByZXR1cm4gY29kZXMgd2hpbGUgNCBlbmFibGVzIGxvZ2dpbmcgb2YgcmVxdWVzdHMgdGhhdCB0YWtlIGxvbmdlcgordGhhbiBvbmUgc2Vjb25kIHRvIGNvbXBsZXRlIChleGNlcHQgZm9yIGJ5dGUgcmFuZ2UgbG9jayByZXF1ZXN0cykuIAorU2V0dGluZyBpdCB0byA0IHJlcXVpcmVzIGRlZmluaW5nIENPTkZJR19DSUZTX1NUQVRTMiBtYW51YWxseSBpbiB0aGUKK3NvdXJjZSBjb2RlICh0eXBpY2FsbHkgYnkgc2V0dGluZyBpdCBpbiB0aGUgYmVnaW5uaW5nIG9mIGNpZnNnbG9iLmgpLAorYW5kIHNldHRpbmcgaXQgdG8gc2V2ZW4gZW5hYmxlcyBhbGwgdGhyZWUuICBGaW5hbGx5LCB0cmFjaW5nCit0aGUgc3RhcnQgb2Ygc21iIHJlcXVlc3RzIGFuZCByZXNwb25zZXMgY2FuIGJlIGVuYWJsZWQgdmlhOgorCisJZWNobyAxID4gL3Byb2MvZnMvY2lmcy90cmFjZVNNQgorCitQZXIgc2hhcmUgKHBlciBjbGllbnQgbW91bnQpIHN0YXRpc3RpY3MgYXJlIGF2YWlsYWJsZSBpbiAvcHJvYy9mcy9jaWZzL1N0YXRzCitpZiB0aGUga2VybmVsIHdhcyBjb25maWd1cmVkIHdpdGggY2lmcyBzdGF0aXN0aWNzIGVuYWJsZWQuICBUaGUgc3RhdGlzdGljcworcmVwcmVzZW50IHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCAoaWUgbm9uLXplcm8gcmV0dXJuIGNvZGUgZnJvbSB0aGUgc2VydmVyKSAKK1NNQiByZXNwb25zZXMgdG8gc29tZSBvZiB0aGUgbW9yZSBjb21tb24gY29tbWFuZHMgKG9wZW4sIGRlbGV0ZSwgbWtkaXIgZXRjLikuCitBbHNvIHJlY29yZGVkIGlzIHRoZSB0b3RhbCBieXRlcyByZWFkIGFuZCBieXRlcyB3cml0dGVuIHRvIHRoZSBzZXJ2ZXIgZm9yCit0aGF0IHNoYXJlLiAgTm90ZSB0aGF0IGR1ZSB0byBjbGllbnQgY2FjaGluZyBlZmZlY3RzIHRoaXMgY2FuIGJlIGxlc3MgdGhhbiB0aGUKK251bWJlciBvZiBieXRlcyByZWFkIGFuZCB3cml0dGVuIGJ5IHRoZSBhcHBsaWNhdGlvbiBydW5uaW5nIG9uIHRoZSBjbGllbnQuCitUaGUgc3RhdGlzdGljcyBmb3IgdGhlIG51bWJlciBvZiB0b3RhbCBTTUJzIGFuZCBvcGxvY2sgYnJlYWtzIGFyZSBkaWZmZXJlbnQgaW4KK3RoYXQgdGhleSByZXByZXNlbnQgYWxsIGZvciB0aGF0IHNoYXJlLCBub3QganVzdCB0aG9zZSBmb3Igd2hpY2ggdGhlIHNlcnZlcgorcmV0dXJuZWQgc3VjY2Vzcy4KKwkKK0Fsc28gbm90ZSB0aGF0ICJjYXQgL3Byb2MvZnMvY2lmcy9EZWJ1Z0RhdGEiIHdpbGwgZGlzcGxheSBpbmZvcm1hdGlvbiBhYm91dAordGhlIGFjdGl2ZSBzZXNzaW9ucyBhbmQgdGhlIHNoYXJlcyB0aGF0IGFyZSBtb3VudGVkLgorCitFbmFibGluZyBLZXJiZXJvcyAoZXh0ZW5kZWQgc2VjdXJpdHkpIHdvcmtzIGJ1dCByZXF1aXJlcyB2ZXJzaW9uIDEuMiBvciBsYXRlcgorb2YgdGhlIGhlbHBlciBwcm9ncmFtIGNpZnMudXBjYWxsIHRvIGJlIHByZXNlbnQgYW5kIHRvIGJlIGNvbmZpZ3VyZWQgaW4gdGhlCisvZXRjL3JlcXVlc3Qta2V5LmNvbmYgZmlsZS4gIFRoZSBjaWZzLnVwY2FsbCBoZWxwZXIgcHJvZ3JhbSBpcyBmcm9tIHRoZSBTYW1iYQorcHJvamVjdChodHRwOi8vd3d3LnNhbWJhLm9yZykuIE5UTE0gYW5kIE5UTE12MiBhbmQgTEFOTUFOIHN1cHBvcnQgZG8gbm90CityZXF1aXJlIHRoaXMgaGVscGVyLiBOb3RlIHRoYXQgTlRMTXYyIHNlY3VyaXR5ICh3aGljaCBkb2VzIG5vdCByZXF1aXJlIHRoZQorY2lmcy51cGNhbGwgaGVscGVyIHByb2dyYW0pLCBpbnN0ZWFkIG9mIHVzaW5nIEtlcmJlcm9zLCBpcyBzdWZmaWNpZW50IGZvcgorc29tZSB1c2UgY2FzZXMuCisKK0RGUyBzdXBwb3J0IGFsbG93cyB0cmFuc3BhcmVudCByZWRpcmVjdGlvbiB0byBzaGFyZXMgaW4gYW4gTVMtREZTIG5hbWUgc3BhY2UuCitJbiBhZGRpdGlvbiwgREZTIHN1cHBvcnQgZm9yIHRhcmdldCBzaGFyZXMgd2hpY2ggYXJlIHNwZWNpZmllZCBhcyBVTkMKK25hbWVzIHdoaWNoIGJlZ2luIHdpdGggaG9zdCBuYW1lcyAocmF0aGVyIHRoYW4gSVAgYWRkcmVzc2VzKSByZXF1aXJlcworYSB1c2VyIHNwYWNlIGhlbHBlciAoc3VjaCBhcyBjaWZzLnVwY2FsbCkgdG8gYmUgcHJlc2VudCBpbiBvcmRlciB0bwordHJhbnNsYXRlIGhvc3QgbmFtZXMgdG8gaXAgYWRkcmVzcywgYW5kIHRoZSB1c2VyIHNwYWNlIGhlbHBlciBtdXN0IGFsc28KK2JlIGNvbmZpZ3VyZWQgaW4gdGhlIGZpbGUgL2V0Yy9yZXF1ZXN0LWtleS5jb25mLiAgU2FtYmEsIFdpbmRvd3Mgc2VydmVycyBhbmQKK21hbnkgTkFTIGFwcGxpYW5jZXMgc3VwcG9ydCBERlMgYXMgYSB3YXkgb2YgY29uc3RydWN0aW5nIGEgZ2xvYmFsIG5hbWUKK3NwYWNlIHRvIGVhc2UgbmV0d29yayBjb25maWd1cmF0aW9uIGFuZCBpbXByb3ZlIHJlbGlhYmlsaXR5LgorCitUbyB1c2UgY2lmcyBLZXJiZXJvcyBhbmQgREZTIHN1cHBvcnQsIHRoZSBMaW51eCBrZXl1dGlscyBwYWNrYWdlIHNob3VsZCBiZQoraW5zdGFsbGVkIGFuZCBzb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nIGxpbmVzIHNob3VsZCBiZSBhZGRlZCB0byB0aGUKKy9ldGMvcmVxdWVzdC1rZXkuY29uZiBmaWxlOgorCitjcmVhdGUgY2lmcy5zcG5lZ28gKiAqIC91c3IvbG9jYWwvc2Jpbi9jaWZzLnVwY2FsbCAlaworY3JlYXRlIGRuc19yZXNvbHZlciAqICogL3Vzci9sb2NhbC9zYmluL2NpZnMudXBjYWxsICVrCisKK0NJRlMga2VybmVsIG1vZHVsZSBwYXJhbWV0ZXJzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorVGhlc2UgbW9kdWxlIHBhcmFtZXRlcnMgY2FuIGJlIHNwZWNpZmllZCBvciBtb2RpZmllZCBlaXRoZXIgZHVyaW5nIHRoZSB0aW1lIG9mCittb2R1bGUgbG9hZGluZyBvciBkdXJpbmcgdGhlIHJ1bnRpbWUgYnkgdXNpbmcgdGhlIGludGVyZmFjZQorCS9wcm9jL21vZHVsZS9jaWZzL3BhcmFtZXRlcnMvPHBhcmFtPgorCitpLmUuIGVjaG8gInZhbHVlIiA+IC9zeXMvbW9kdWxlL2NpZnMvcGFyYW1ldGVycy88cGFyYW0+CisKKzEuIGVuYWJsZV9vcGxvY2tzIC0gRW5hYmxlIG9yIGRpc2FibGUgb3Bsb2Nrcy4gT3Bsb2NrcyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LgorCQkgICAgW1kveS8xXS4gVG8gZGlzYWJsZSB1c2UgYW55IG9mIFtOL24vMF0uCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2lmcy9UT0RPIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9jaWZzL1RPRE8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY2ZmZkZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2lmcy9UT0RPCkBAIC0wLDAgKzEsMTA0IEBACitWZXJzaW9uIDIuMDMgQXVndXN0IDEsIDIwMTQKKworQSBQYXJ0aWFsIExpc3Qgb2YgTWlzc2luZyBGZWF0dXJlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitDb250cmlidXRpb25zIGFyZSB3ZWxjb21lLiAgVGhlcmUgYXJlIHBsZW50eSBvZiBvcHBvcnR1bml0aWVzCitmb3IgdmlzaWJsZSwgaW1wb3J0YW50IGNvbnRyaWJ1dGlvbnMgdG8gdGhpcyBtb2R1bGUuICBIZXJlCitpcyBhIHBhcnRpYWwgbGlzdCBvZiB0aGUga25vd24gcHJvYmxlbXMgYW5kIG1pc3NpbmcgZmVhdHVyZXM6CisKK2EpIFNNQjMgKGFuZCBTTUIzLjAyKSBtaXNzaW5nIG9wdGlvbmFsIGZlYXR1cmVzOgorICAgLSBSRE1BCisgICAtIG11bHRpY2hhbm5lbCAoc3RhcnRlZCkKKyAgIC0gZGlyZWN0b3J5IGxlYXNlcyAoaW1wcm92ZWQgbWV0YWRhdGEgY2FjaGluZykKKyAgIC0gVDEwIGNvcHkgb2ZmbG9hZCAoY29weSBjaHVuayBpcyBvbmx5IG1lY2hhbmlzbSBzdXBwb3J0ZWQpCisgICAtIGVuY3J5cHRlZCBzaGFyZXMKKworYikgaW1wcm92ZWQgc3BhcnNlIGZpbGUgc3VwcG9ydAorCitjKSBEaXJlY3RvcnkgZW50cnkgY2FjaGluZyByZWxpZXMgb24gYSAxIHNlY29uZCB0aW1lciwgcmF0aGVyIHRoYW4KK3VzaW5nIEZpbmROb3RpZnkgb3IgZXF1aXZhbGVudC4gIC0gKHN0YXJ0ZWQpCisKK2QpIHF1b3RhIHN1cHBvcnQgKG5lZWRzIG1pbm9yIGtlcm5lbCBjaGFuZ2Ugc2luY2UgcXVvdGEgY2FsbHMKK3RvIG1ha2UgaXQgdG8gbmV0d29yayBmaWxlc3lzdGVtcyBvciBkZXZpY2VsZXNzIGZpbGVzeXN0ZW1zKQorCitlKSBpbXByb3ZlIHN1cHBvcnQgZm9yIHZlcnkgb2xkIHNlcnZlcnMgKE9TLzIgYW5kIFdpbjl4IGZvciBleGFtcGxlKQorSW5jbHVkaW5nIHN1cHBvcnQgZm9yIGNoYW5naW5nIHRoZSB0aW1lIHJlbW90ZWx5ICh1dGltZXMgY29tbWFuZCkuCisKK2YpIGhvb2sgbG93ZXIgaW50byB0aGUgc29ja2V0cyBhcGkgKGFzIE5GUy9TdW5SUEMgZG9lcykgdG8gYXZvaWQgdGhlCitleHRyYSBjb3B5IGluL291dCBvZiB0aGUgc29ja2V0IGJ1ZmZlcnMgaW4gc29tZSBjYXNlcy4KKworZykgQmV0dGVyIG9wdGltaXplIG9wZW4gKGFuZCBwYXRoYmFzZWQgc2V0ZmlsZXNpemUpIHRvIHJlZHVjZSB0aGUKK29wbG9jayBicmVha3MgY29taW5nIGZyb20gd2luZG93cyBzcnYuICBQaWdneWJhY2sgaWRlbnRpY2FsIGZpbGUKK29wZW5zIG9uIHRvcCBvZiBlYWNoIG90aGVyIGJ5IGluY3JlbWVudGluZyByZWZlcmVuY2UgY291bnQgcmF0aGVyCit0aGFuIHJlc2VuZGluZyAoaGVscHMgcmVkdWNlIHNlcnZlciByZXNvdXJjZSB1dGlsaXphdGlvbiBhbmQgYXZvaWQKK3NwdXJpb3VzIG9wbG9jayBicmVha3MpLgorCitoKSBBZGQgc3VwcG9ydCBmb3Igc3RvcmluZyBzeW1saW5rIGluZm8gdG8gV2luZG93cyBzZXJ2ZXJzCitpbiB0aGUgRXh0ZW5kZWQgQXR0cmlidXRlIGZvcm1hdCB0aGVpciBTRlUgY2xpZW50cyB3b3VsZCByZWNvZ25pemUuCisKK2kpIEZpbmlzaCBpbm90aWZ5IHN1cHBvcnQgc28ga2RlIGFuZCBnbm9tZSBmaWxlIGxpc3Qgd2luZG93cword2lsbCBhdXRvcmVmcmVzaCAocGFydGlhbGx5IGNvbXBsZXRlIGJ5IEFzc2VyKS4gTmVlZHMgbWlub3Iga2VybmVsCit2ZnMgY2hhbmdlIHRvIHN1cHBvcnQgcmVtb3ZpbmcgRF9OT1RJRlkgb24gYSBmaWxlLiAgIAorCitqKSBBZGQgR1VJIHRvb2wgdG8gY29uZmlndXJlIC9wcm9jL2ZzL2NpZnMgc2V0dGluZ3MgYW5kIGZvciBkaXNwbGF5IG9mCit0aGUgQ0lGUyBzdGF0aXN0aWNzIChzdGFydGVkKQorCitrKSBpbXBsZW1lbnQgc3VwcG9ydCBmb3Igc2VjdXJpdHkgYW5kIHRydXN0ZWQgY2F0ZWdvcmllcyBvZiB4YXR0cnMKKyhyZXF1aXJlcyBtaW5vciBwcm90b2NvbCBleHRlbnNpb24pIHRvIGVuYWJsZSBiZXR0ZXIgc3VwcG9ydCBmb3IgU0VMSU5VWAorCitsKSBJbXBsZW1lbnQgT19ESVJFQ1QgZmxhZyBvbiBvcGVuIChhbHJlYWR5IHN1cHBvcnRlZCBvbiBtb3VudCkKKworbSkgQ3JlYXRlIFVJRCBtYXBwaW5nIGZhY2lsaXR5IHNvIHNlcnZlciBVSURzIGNhbiBiZSBtYXBwZWQgb24gYSBwZXIKK21vdW50IG9yIGEgcGVyIHNlcnZlciBiYXNpcyB0byBjbGllbnQgVUlEcyBvciBub2JvZHkgaWYgbm8gbWFwcGluZworZXhpc3RzLiAgVGhpcyBpcyBoZWxwZnVsIHdoZW4gVW5peCBleHRlbnNpb25zIGFyZSBuZWdvdGlhdGVkIHRvCithbGxvdyBiZXR0ZXIgcGVybWlzc2lvbiBjaGVja2luZyB3aGVuIFVJRHMgZGlmZmVyIG9uIHRoZSBzZXJ2ZXIKK2FuZCBjbGllbnQuICBBZGQgbmV3IHByb3RvY29sIHJlcXVlc3QgdG8gdGhlIENJRlMgcHJvdG9jb2wgCitzdGFuZGFyZCBmb3IgYXNraW5nIHRoZSBzZXJ2ZXIgZm9yIHRoZSBjb3JyZXNwb25kaW5nIG5hbWUgb2YgYQorcGFydGljdWxhciB1aWQuCisKK24pIERPUyBhdHRycyAtIHJldHVybmVkIGFzIHBzZXVkby14YXR0ciBpbiBTYW1iYSBmb3JtYXQgKGNoZWNrIFZGQVQgYW5kIE5URlMgZm9yIHRoaXMgdG9vKQorCitvKSBtb3VudCBjaGVjayBmb3IgdW5tYXRjaGVkIHVpZHMKKworcCkgQWRkIHN1cHBvcnQgZm9yIG5ldyB2ZnMgZW50cnkgcG9pbnQgZm9yIGZhbGxvY2F0ZQorCitxKSBBZGQgdG9vbHMgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgY2lmcy9zbWIzIHNwZWNpZmljIGlvY3RscyBhbmQgZmVhdHVyZXMKK3N1Y2ggYXMgIkNvcHlDaHVuayIgKGZhc3Qgc2VydmVyIHNpZGUgZmlsZSBjb3B5KQorCityKSBlbmNyeXB0ZWQgZmlsZSBzdXBwb3J0CisKK3MpIGltcHJvdmVkIHN0YXRzIGdhdGhlcmluZywgdG9vbHMgKHBlcmhhcHMgaW50ZWdyYXRpb24gd2l0aCBuZnNvbWV0ZXI/KQorCit0KSBhbGxvdyBzZXR0aW5nIG1vcmUgTlRGUy9TTUIzIGZpbGUgYXR0cmlidXRlcyByZW1vdGVseSAoY3VycmVudGx5IGxpbWl0ZWQgdG8gY29tcHJlc3NlZAorZmlsZSBhdHRyaWJ1dGUgdmlhIGNoZmxhZ3MpCisKK3UpIG1vdW50IGhlbHBlciBHVUkgKHRvIHNpbXBsaWZ5IHRoZSB2YXJpb3VzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvbiBtb3VudCkKKworCitLTk9XTiBCVUdTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1NlZSBodHRwOi8vYnVnemlsbGEuc2FtYmEub3JnIC0gc2VhcmNoIG9uIHByb2R1Y3QgIkNpZnNWRlMiIGZvcgorY3VycmVudCBidWcgbGlzdC4gIEFsc28gY2hlY2sgaHR0cDovL2J1Z3ppbGxhLmtlcm5lbC5vcmcgKFByb2R1Y3QgPSBGaWxlIFN5c3RlbSwgQ29tcG9uZW50ID0gQ0lGUykKKworMSkgZXhpc3Rpbmcgc3ltYm9saWMgbGlua3MgKFdpbmRvd3MgcmVwYXJzZSBwb2ludHMpIGFyZSByZWNvZ25pemVkIGJ1dAorY2FuIG5vdCBiZSBjcmVhdGVkIHJlbW90ZWx5LiBUaGV5IGFyZSBpbXBsZW1lbnRlZCBmb3IgU2FtYmEgYW5kIHRob3NlIHRoYXQKK3N1cHBvcnQgdGhlIENJRlMgVW5peCBleHRlbnNpb25zLCBhbHRob3VnaCBlYXJsaWVyIHZlcnNpb25zIG9mIFNhbWJhCitvdmVybHkgcmVzdHJpY3QgdGhlIHBhdGhuYW1lcy4KKzIpIGZvbGxvd19saW5rIGFuZCByZWFkZGlyIGNvZGUgZG9lcyBub3QgZm9sbG93IGRmcyBqdW5jdGlvbnMKK2J1dCByZWNvZ25pemVzIHRoZW0KKworTWlzYyB0ZXN0aW5nIHRvIGRvCis9PT09PT09PT09PT09PT09PT0KKzEpIGNoZWNrIG91dCBtYXggcGF0aCBuYW1lcyBhbmQgbWF4IHBhdGggbmFtZSBjb21wb25lbnRzIGFnYWluc3QgdmFyaW91cyBzZXJ2ZXIKK3R5cGVzLiBUcnkgbmVzdGVkIHN5bWxpbmtzICg4IGRlZXApLiBSZXR1cm4gbWF4IHBhdGggbmFtZSBpbiBzdGF0IC1mIGluZm9ybWF0aW9uCisKKzIpIEltcHJvdmUgeGZzdGVzdCdzIGNpZnMgZW5hYmxlbWVudCBhbmQgYWRhcHQgeGZzdGVzdHMgd2hlcmUgbmVlZGVkIHRvIHRlc3QKK2NpZnMgYmV0dGVyCisKKzMpIEFkZGl0aW9uYWwgcGVyZm9ybWFuY2UgdGVzdGluZyBhbmQgb3B0aW1pemF0aW9uIHVzaW5nIGlvem9uZSBhbmQgc2ltaWxhciAtIAordGhlcmUgYXJlIHNvbWUgZWFzeSBjaGFuZ2VzIHRoYXQgY2FuIGJlIGRvbmUgdG8gcGFyYWxsZWxpemUgc2VxdWVudGlhbCB3cml0ZXMsCithbmQgd2hlbiBzaWduaW5nIGlzIGRpc2FibGVkIHRvIHJlcXVlc3QgbGFyZ2VyIHJlYWQgc2l6ZXMgKGxhcmdlciB0aGFuIAorbmVnb3RpYXRlZCBzaXplKSBhbmQgc2VuZCBsYXJnZXIgd3JpdGUgc2l6ZXMgdG8gbW9kZXJuIHNlcnZlcnMuCisKKzQpIE1vcmUgZXhoYXVzdGl2ZWx5IHRlc3QgYWdhaW5zdCBsZXNzIGNvbW1vbiBzZXJ2ZXJzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NpZnMvY2lmcy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NpZnMvY2lmcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZhYzkxYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY2lmcy9jaWZzLnR4dApAQCAtMCwwICsxLDMxIEBACisgIFRoaXMgaXMgdGhlIGNsaWVudCBWRlMgbW9kdWxlIGZvciB0aGUgQ29tbW9uIEludGVybmV0IEZpbGUgU3lzdGVtCisgIChDSUZTKSBwcm90b2NvbCB3aGljaCBpcyB0aGUgc3VjY2Vzc29yIHRvIHRoZSBTZXJ2ZXIgTWVzc2FnZSBCbG9jayAKKyAgKFNNQikgcHJvdG9jb2wsIHRoZSBuYXRpdmUgZmlsZSBzaGFyaW5nIG1lY2hhbmlzbSBmb3IgbW9zdCBlYXJseQorICBQQyBvcGVyYXRpbmcgc3lzdGVtcy4gTmV3IGFuZCBpbXByb3ZlZCB2ZXJzaW9ucyBvZiBDSUZTIGFyZSBub3cKKyAgY2FsbGVkIFNNQjIgYW5kIFNNQjMuIFRoZXNlIGRpYWxlY3RzIGFyZSBhbHNvIHN1cHBvcnRlZCBieSB0aGUKKyAgQ0lGUyBWRlMgbW9kdWxlLiBDSUZTIGlzIGZ1bGx5IHN1cHBvcnRlZCBieSBuZXR3b3JrCisgIGZpbGUgc2VydmVycyBzdWNoIGFzIFdpbmRvd3MgMjAwMCwgMjAwMywgMjAwOCBhbmQgMjAxMgorICBhcyB3ZWxsIGJ5IFNhbWJhICh3aGljaCBwcm92aWRlcyBleGNlbGxlbnQgQ0lGUworICBzZXJ2ZXIgc3VwcG9ydCBmb3IgTGludXggYW5kIG1hbnkgb3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMpLCBzbworICB0aGlzIG5ldHdvcmsgZmlsZXN5c3RlbSBjbGllbnQgY2FuIG1vdW50IHRvIGEgd2lkZSB2YXJpZXR5IG9mCisgIHNlcnZlcnMuCisKKyAgVGhlIGludGVudCBvZiB0aGlzIG1vZHVsZSBpcyB0byBwcm92aWRlIHRoZSBtb3N0IGFkdmFuY2VkIG5ldHdvcmsKKyAgZmlsZSBzeXN0ZW0gZnVuY3Rpb24gZm9yIENJRlMgY29tcGxpYW50IHNlcnZlcnMsIGluY2x1ZGluZyBiZXR0ZXIKKyAgUE9TSVggY29tcGxpYW5jZSwgc2VjdXJlIHBlci11c2VyIHNlc3Npb24gZXN0YWJsaXNobWVudCwgaGlnaAorICBwZXJmb3JtYW5jZSBzYWZlIGRpc3RyaWJ1dGVkIGNhY2hpbmcgKG9wbG9jayksIG9wdGlvbmFsIHBhY2tldAorICBzaWduaW5nLCBsYXJnZSBmaWxlcywgVW5pY29kZSBzdXBwb3J0IGFuZCBvdGhlciBpbnRlcm5hdGlvbmFsaXphdGlvbgorICBpbXByb3ZlbWVudHMuIFNpbmNlIGJvdGggU2FtYmEgc2VydmVyIGFuZCB0aGlzIGZpbGVzeXN0ZW0gY2xpZW50IHN1cHBvcnQKKyAgdGhlIENJRlMgVW5peCBleHRlbnNpb25zLCB0aGUgY29tYmluYXRpb24gY2FuIHByb3ZpZGUgYSByZWFzb25hYmxlIAorICBhbHRlcm5hdGl2ZSB0byBORlN2NCBmb3IgZmlsZXNlcnZpbmcgaW4gc29tZSBMaW51eCB0byBMaW51eCBlbnZpcm9ubWVudHMsCisgIG5vdCBqdXN0IGluIExpbnV4IHRvIFdpbmRvd3MgZW52aXJvbm1lbnRzLgorCisgIFRoaXMgZmlsZXN5c3RlbSBoYXMgYW4gbW91bnQgdXRpbGl0eSAobW91bnQuY2lmcykgdGhhdCBjYW4gYmUgb2J0YWluZWQgZnJvbQorCisgICAgICBodHRwczovL2Z0cC5zYW1iYS5vcmcvcHViL2xpbnV4LWNpZnMvY2lmcy11dGlscy8KKworICBJdCBtdXN0IGJlIGluc3RhbGxlZCBpbiB0aGUgZGlyZWN0b3J5IHdpdGggdGhlIG90aGVyIG1vdW50IGhlbHBlcnMuCisKKyAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIG1vZHVsZSBzZWUgdGhlIHByb2plY3Qgd2lraSBwYWdlIGF0CisKKyAgICAgIGh0dHBzOi8vd2lraS5zYW1iYS5vcmcvaW5kZXgucGhwL0xpbnV4Q0lGU191dGlscwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9jaWZzL3dpbnVjYXNlX2NvbnZlcnQucGwgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NpZnMvd2ludWNhc2VfY29udmVydC5wbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zMjJhOWM4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9jaWZzL3dpbnVjYXNlX2NvbnZlcnQucGwKQEAgLTAsMCArMSw2MiBAQAorIyEvdXNyL2Jpbi9wZXJsIC13CisjCisjIHdpbnVjYXNlX2NvbnZlcnQucGwgLS0gY29udmVydCAiV2luZG93cyA4IFVwcGVyIENhc2UgTWFwcGluZyBUYWJsZS50eHQiIHRvCisjICAgICAgICAgICAgICAgICAgICAgICAgYSB0d28tbGV2ZWwgc2V0IG9mIEMgYXJyYXlzLgorIworIyAgIENvcHlyaWdodCAyMDEzOiBKZWZmIExheXRvbiA8amxheXRvbkByZWRoYXQuY29tPgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIworCit3aGlsZSg8PikgeworCW5leHQgaWYgKCEvXjB4KC4uKSguLilcdDB4KC4uLi4pXHQvKTsKKwkkZmlyc3RjaGFyID0gaGV4KCQxKTsKKwkkc2Vjb25kY2hhciA9IGhleCgkMik7CisJJHVwcGVyY2FzZSA9IGhleCgkMyk7CisKKwkkdG9wWyRmaXJzdGNoYXJdWyRzZWNvbmRjaGFyXSA9ICR1cHBlcmNhc2U7Cit9CisKK2ZvciAoJGkgPSAwOyAkaSA8IDI1NjsgJGkrKykgeworCW5leHQgaWYgKCEkdG9wWyRpXSk7CisKKwlwcmludGYoInN0YXRpYyBjb25zdCB3Y2hhcl90IHQyXyUyLjJ4WzI1Nl0gPSB7IiwgJGkpOworCWZvciAoJGogPSAwOyAkaiA8IDI1NjsgJGorKykgeworCQlpZiAoKCRqICUgOCkgPT0gMCkgeworCQkJcHJpbnQgIlxuXHQiOworCQl9IGVsc2UgeworCQkJcHJpbnQgIiAiOworCQl9CisJCXByaW50ZigiMHglNC40eCwiLCAkdG9wWyRpXVskal0gPyAkdG9wWyRpXVskal0gOiAwKTsKKwl9CisJcHJpbnQgIlxufTtcblxuIjsKK30KKworcHJpbnRmKCJzdGF0aWMgY29uc3Qgd2NoYXJfdCAqY29uc3QgdG9wbGV2ZWxbMjU2XSA9IHsiLCAkaSk7Citmb3IgKCRpID0gMDsgJGkgPCAyNTY7ICRpKyspIHsKKwlpZiAoKCRpICUgOCkgPT0gMCkgeworCQlwcmludCAiXG5cdCI7CisJfSBlbHNpZiAoJHRvcFskaV0pIHsKKwkJcHJpbnQgIiAiOworCX0gZWxzZSB7CisJCXByaW50ICIgICI7CisJfQorCisJaWYgKCR0b3BbJGldKSB7CisJCXByaW50ZigidDJfJTIuMngsIiwgJGkpOworCX0gZWxzZSB7CisJCXByaW50ICJOVUxMLCI7CisJfQorfQorcHJpbnQgIlxufTtcblxuIjsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY29kYS50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NvZGEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMzExMzUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NvZGEudHh0CkBAIC0wLDAgKzEsMTY3MyBAQAorTk9URTogCitUaGlzIGlzIG9uZSBvZiB0aGUgdGVjaG5pY2FsIGRvY3VtZW50cyBkZXNjcmliaW5nIGEgY29tcG9uZW50IG9mCitDb2RhIC0tIHRoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBjbGllbnQga2VybmVsLVZlbnVzIGludGVyZmFjZS4KKworRm9yIG1vcmUgaW5mb3JtYXRpb246CisgIGh0dHA6Ly93d3cuY29kYS5jcy5jbXUuZWR1CitGb3IgdXNlciBsZXZlbCBzb2Z0d2FyZSBuZWVkZWQgdG8gcnVuIENvZGE6CisgIGZ0cDovL2Z0cC5jb2RhLmNzLmNtdS5lZHUKKworVG8gcnVuIENvZGEgeW91IG5lZWQgdG8gZ2V0IGEgdXNlciBsZXZlbCBjYWNoZSBtYW5hZ2VyIGZvciB0aGUgY2xpZW50LAorbmFtZWQgVmVudXMsIGFzIHdlbGwgYXMgdG9vbHMgdG8gbWFuaXB1bGF0ZSBBQ0xzLCB0byBsb2cgaW4sIGV0Yy4gIFRoZQorY2xpZW50IG5lZWRzIHRvIGhhdmUgdGhlIENvZGEgZmlsZXN5c3RlbSBzZWxlY3RlZCBpbiB0aGUga2VybmVsCitjb25maWd1cmF0aW9uLgorCitUaGUgc2VydmVyIG5lZWRzIGEgdXNlciBsZXZlbCBzZXJ2ZXIgYW5kIGF0IHByZXNlbnQgZG9lcyBub3QgZGVwZW5kIG9uCitrZXJuZWwgc3VwcG9ydC4KKworCisKKworCisKKworICBUaGUgVmVudXMga2VybmVsIGludGVyZmFjZQorICBQZXRlciBKLiBCcmFhbQorICB2MS4wLCBOb3YgOSwgMTk5NworCisgIFRoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBjb21tdW5pY2F0aW9uIGJldHdlZW4gVmVudXMgYW5kIGtlcm5lbAorICBsZXZlbCBmaWxlc3lzdGVtIGNvZGUgbmVlZGVkIGZvciB0aGUgb3BlcmF0aW9uIG9mIHRoZSBDb2RhIGZpbGUgc3lzLQorICB0ZW0uICBUaGlzIGRvY3VtZW50IHZlcnNpb24gaXMgbWVhbnQgdG8gZGVzY3JpYmUgdGhlIGN1cnJlbnQgaW50ZXJmYWNlCisgICh2ZXJzaW9uIDEuMCkgYXMgd2VsbCBhcyBpbXByb3ZlbWVudHMgd2UgZW52aXNhZ2UuCisgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKworICBUYWJsZSBvZiBDb250ZW50cworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisgIDEuIEludHJvZHVjdGlvbgorCisgIDIuIFNlcnZpY2luZyBDb2RhIGZpbGVzeXN0ZW0gY2FsbHMKKworICAzLiBUaGUgbWVzc2FnZSBsYXllcgorCisgICAgIDMuMSBJbXBsZW1lbnRhdGlvbiBkZXRhaWxzCisKKyAgNC4gVGhlIGludGVyZmFjZSBhdCB0aGUgY2FsbCBsZXZlbAorCisgICAgIDQuMSBEYXRhIHN0cnVjdHVyZXMgc2hhcmVkIGJ5IHRoZSBrZXJuZWwgYW5kIFZlbnVzCisgICAgIDQuMiBUaGUgcGlvY3RsIGludGVyZmFjZQorICAgICA0LjMgcm9vdAorICAgICA0LjQgbG9va3VwCisgICAgIDQuNSBnZXRhdHRyCisgICAgIDQuNiBzZXRhdHRyCisgICAgIDQuNyBhY2Nlc3MKKyAgICAgNC44IGNyZWF0ZQorICAgICA0LjkgbWtkaXIKKyAgICAgNC4xMCBsaW5rCisgICAgIDQuMTEgc3ltbGluaworICAgICA0LjEyIHJlbW92ZQorICAgICA0LjEzIHJtZGlyCisgICAgIDQuMTQgcmVhZGxpbmsKKyAgICAgNC4xNSBvcGVuCisgICAgIDQuMTYgY2xvc2UKKyAgICAgNC4xNyBpb2N0bAorICAgICA0LjE4IHJlbmFtZQorICAgICA0LjE5IHJlYWRkaXIKKyAgICAgNC4yMCB2Z2V0CisgICAgIDQuMjEgZnN5bmMKKyAgICAgNC4yMiBpbmFjdGl2ZQorICAgICA0LjIzIHJkd3IKKyAgICAgNC4yNCBvZHltb3VudAorICAgICA0LjI1IG9keV9sb29rdXAKKyAgICAgNC4yNiBvZHlfZXhwYW5kCisgICAgIDQuMjcgcHJlZmV0Y2gKKyAgICAgNC4yOCBzaWduYWwKKworICA1LiBUaGUgbWluaWNhY2hlIGFuZCBkb3duY2FsbHMKKworICAgICA1LjEgSU5WQUxJREFURQorICAgICA1LjIgRkxVU0gKKyAgICAgNS4zIFBVUkdFVVNFUgorICAgICA1LjQgWkFQRklMRQorICAgICA1LjUgWkFQRElSCisgICAgIDUuNiBaQVBWTk9ERQorICAgICA1LjcgUFVSR0VGSUQKKyAgICAgNS44IFJFUExBQ0UKKworICA2LiBJbml0aWFsaXphdGlvbiBhbmQgY2xlYW51cAorCisgICAgIDYuMSBSZXF1aXJlbWVudHMKKworCisgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKyAgMHdwYWdlCisKKyAgMQgxLgguICBJCEluCG50CHRyCHJvCG9kCGR1CHVjCGN0CHRpCGlvCG9uCG4KKworCisKKyAgQSBrZXkgY29tcG9uZW50IGluIHRoZSBDb2RhIERpc3RyaWJ1dGVkIEZpbGUgU3lzdGVtIGlzIHRoZSBjYWNoZQorICBtYW5hZ2VyLCBfCFZfCGVfCG5fCHVfCHMuCisKKworICBXaGVuIHByb2Nlc3NlcyBvbiBhIENvZGEgZW5hYmxlZCBzeXN0ZW0gYWNjZXNzIGZpbGVzIGluIHRoZSBDb2RhCisgIGZpbGVzeXN0ZW0sIHJlcXVlc3RzIGFyZSBkaXJlY3RlZCBhdCB0aGUgZmlsZXN5c3RlbSBsYXllciBpbiB0aGUKKyAgb3BlcmF0aW5nIHN5c3RlbS4gVGhlIG9wZXJhdGluZyBzeXN0ZW0gd2lsbCBjb21tdW5pY2F0ZSB3aXRoIFZlbnVzIHRvCisgIHNlcnZpY2UgdGhlIHJlcXVlc3QgZm9yIHRoZSBwcm9jZXNzLiAgVmVudXMgbWFuYWdlcyBhIHBlcnNpc3RlbnQKKyAgY2xpZW50IGNhY2hlIGFuZCBtYWtlcyByZW1vdGUgcHJvY2VkdXJlIGNhbGxzIHRvIENvZGEgZmlsZSBzZXJ2ZXJzIGFuZAorICByZWxhdGVkIHNlcnZlcnMgKHN1Y2ggYXMgYXV0aGVudGljYXRpb24gc2VydmVycykgdG8gc2VydmljZSB0aGVzZQorICByZXF1ZXN0cyBpdCByZWNlaXZlcyBmcm9tIHRoZSBvcGVyYXRpbmcgc3lzdGVtLiAgV2hlbiBWZW51cyBoYXMKKyAgc2VydmljZWQgYSByZXF1ZXN0IGl0IHJlcGxpZXMgdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0gd2l0aCBhcHByb3ByaWF0ZQorICByZXR1cm4gY29kZXMsIGFuZCBvdGhlciBkYXRhIHJlbGF0ZWQgdG8gdGhlIHJlcXVlc3QuICBPcHRpb25hbGx5IHRoZQorICBrZXJuZWwgc3VwcG9ydCBmb3IgQ29kYSBtYXkgbWFpbnRhaW4gYSBtaW5pY2FjaGUgb2YgcmVjZW50bHkgcHJvY2Vzc2VkCisgIHJlcXVlc3RzIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgaW50ZXJhY3Rpb25zIHdpdGggVmVudXMuICBWZW51cworICBwb3NzZXNzZXMgdGhlIGZhY2lsaXR5IHRvIGluZm9ybSB0aGUga2VybmVsIHdoZW4gZWxlbWVudHMgZnJvbSBpdHMKKyAgbWluaWNhY2hlIGFyZSBubyBsb25nZXIgdmFsaWQuCisKKyAgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgcHJlY2lzZWx5IHRoaXMgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZQorICBrZXJuZWwgYW5kIFZlbnVzLiAgVGhlIGRlZmluaXRpb25zIG9mIHNvIGNhbGxlZCB1cGNhbGxzIGFuZCBkb3duY2FsbHMKKyAgd2lsbCBiZSBnaXZlbiB3aXRoIHRoZSBmb3JtYXQgb2YgdGhlIGRhdGEgdGhleSBoYW5kbGUuIFdlIHNoYWxsIGFsc28KKyAgZGVzY3JpYmUgdGhlIHNlbWFudGljIGludmFyaWFudHMgcmVzdWx0aW5nIGZyb20gdGhlIGNhbGxzLgorCisgIEhpc3RvcmljYWxseSBDb2RhIHdhcyBpbXBsZW1lbnRlZCBpbiBhIEJTRCBmaWxlIHN5c3RlbSBpbiBNYWNoIDIuNi4KKyAgVGhlIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBrZXJuZWwgYW5kIFZlbnVzIGlzIHZlcnkgc2ltaWxhciB0byB0aGUgQlNECisgIFZGUyBpbnRlcmZhY2UuICBTaW1pbGFyIGZ1bmN0aW9uYWxpdHkgaXMgcHJvdmlkZWQsIGFuZCB0aGUgZm9ybWF0IG9mCisgIHRoZSBwYXJhbWV0ZXJzIGFuZCByZXR1cm5lZCBkYXRhIGlzIHZlcnkgc2ltaWxhciB0byB0aGUgQlNEIFZGUy4gIFRoaXMKKyAgbGVhZHMgdG8gYW4gYWxtb3N0IG5hdHVyYWwgZW52aXJvbm1lbnQgZm9yIGltcGxlbWVudGluZyBhIGtlcm5lbC1sZXZlbAorICBmaWxlc3lzdGVtIGRyaXZlciBmb3IgQ29kYSBpbiBhIEJTRCBzeXN0ZW0uICBIb3dldmVyLCBvdGhlciBvcGVyYXRpbmcKKyAgc3lzdGVtcyBzdWNoIGFzIExpbnV4IGFuZCBXaW5kb3dzIDk1IGFuZCBOVCBoYXZlIHZpcnR1YWwgZmlsZXN5c3RlbQorICB3aXRoIGRpZmZlcmVudCBpbnRlcmZhY2VzLgorCisgIFRvIGltcGxlbWVudCBDb2RhIG9uIHRoZXNlIHN5c3RlbXMgc29tZSByZXZlcnNlIGVuZ2luZWVyaW5nIG9mIHRoZQorICBWZW51cy9LZXJuZWwgcHJvdG9jb2wgaXMgbmVjZXNzYXJ5LiAgQWxzbyBpdCBjYW1lIHRvIGxpZ2h0IHRoYXQgb3RoZXIKKyAgc3lzdGVtcyBjb3VsZCBwcm9maXQgc2lnbmlmaWNhbnRseSBmcm9tIGNlcnRhaW4gc21hbGwgb3B0aW1pemF0aW9ucworICBhbmQgbW9kaWZpY2F0aW9ucyB0byB0aGUgcHJvdG9jb2wuIFRvIGZhY2lsaXRhdGUgdGhpcyB3b3JrIGFzIHdlbGwgYXMKKyAgdG8gbWFrZSBmdXR1cmUgcG9ydHMgZWFzaWVyLCBjb21tdW5pY2F0aW9uIGJldHdlZW4gVmVudXMgYW5kIHRoZQorICBrZXJuZWwgc2hvdWxkIGJlIGRvY3VtZW50ZWQgaW4gZ3JlYXQgZGV0YWlsLiAgVGhpcyBpcyB0aGUgYWltIG9mIHRoaXMKKyAgZG9jdW1lbnQuCisKKyAgMHdwYWdlCisKKyAgMggyLgguICBTCFNlCGVyCHJ2CHZpCGljCGNpCGluCG5nCGcgQwhDbwhvZAhkYQhhIGYIZmkIaWwIbGUIZXMIc3kIeXMIc3QIdGUIZW0IbSBjCGNhCGFsCGxsCGxzCHMKKworICBUaGUgc2VydmljZSBvZiBhIHJlcXVlc3QgZm9yIGEgQ29kYSBmaWxlIHN5c3RlbSBzZXJ2aWNlIG9yaWdpbmF0ZXMgaW4KKyAgYSBwcm9jZXNzIFAIUCB3aGljaCBhY2Nlc3NpbmcgYSBDb2RhIGZpbGUuIEl0IG1ha2VzIGEgc3lzdGVtIGNhbGwgd2hpY2gKKyAgdHJhcHMgdG8gdGhlIE9TIGtlcm5lbC4gRXhhbXBsZXMgb2Ygc3VjaCBjYWxscyB0cmFwcGluZyB0byB0aGUga2VybmVsCisgIGFyZSBfCHJfCGVfCGFfCGRfCCwgXwh3XwhyXwhpXwh0XwhlXwgsIF8Ib18IcF8IZV8Ibl8ILCBfCGNfCGxfCG9fCHNfCGVfCCwgXwhjXwhyXwhlXwhhXwh0XwhlXwgsIF8IbV8Ia18IZF8IaV8Icl8ILCBfCHJfCG1fCGRfCGlfCHJfCCwgXwhjXwhoXwhtXwhvXwhkIGluIGEgVW5peAorICBjb250ZXh0LiAgU2ltaWxhciBjYWxscyBleGlzdCBpbiB0aGUgV2luMzIgZW52aXJvbm1lbnQsIGFuZCBhcmUgbmFtZWQKKyAgXwhDXwhyXwhlXwhhXwh0XwhlXwhGXwhpXwhsXwhlXwgsIC4KKworICBHZW5lcmFsbHkgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaGFuZGxlcyB0aGUgcmVxdWVzdCBpbiBhIHZpcnR1YWwKKyAgZmlsZXN5c3RlbSAoVkZTKSBsYXllciwgd2hpY2ggaXMgbmFtZWQgSS9PIE1hbmFnZXIgaW4gTlQgYW5kIElGUworICBtYW5hZ2VyIGluIFdpbmRvd3MgOTUuICBUaGUgVkZTIGlzIHJlc3BvbnNpYmxlIGZvciBwYXJ0aWFsIHByb2Nlc3NpbmcKKyAgb2YgdGhlIHJlcXVlc3QgYW5kIGZvciBsb2NhdGluZyB0aGUgc3BlY2lmaWMgZmlsZXN5c3RlbShzKSB3aGljaCB3aWxsCisgIHNlcnZpY2UgcGFydHMgb2YgdGhlIHJlcXVlc3QuICBVc3VhbGx5IHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgcGF0aAorICBhc3Npc3RzIGluIGxvY2F0aW5nIHRoZSBjb3JyZWN0IEZTIGRyaXZlcnMuICBTb21ldGltZXMgYWZ0ZXIgZXh0ZW5zaXZlCisgIHByZS1wcm9jZXNzaW5nLCB0aGUgVkZTIHN0YXJ0cyBpbnZva2luZyBleHBvcnRlZCByb3V0aW5lcyBpbiB0aGUgRlMKKyAgZHJpdmVyLiAgVGhpcyBpcyB0aGUgcG9pbnQgd2hlcmUgdGhlIEZTIHNwZWNpZmljIHByb2Nlc3Npbmcgb2YgdGhlCisgIHJlcXVlc3Qgc3RhcnRzLCBhbmQgaGVyZSB0aGUgQ29kYSBzcGVjaWZpYyBrZXJuZWwgY29kZSBjb21lcyBpbnRvCisgIHBsYXkuCisKKyAgVGhlIEZTIGxheWVyIGZvciBDb2RhIG11c3QgZXhwb3NlIGFuZCBpbXBsZW1lbnQgc2V2ZXJhbCBpbnRlcmZhY2VzLgorICBGaXJzdCBhbmQgZm9yZW1vc3QgdGhlIFZGUyBtdXN0IGJlIGFibGUgdG8gbWFrZSBhbGwgbmVjZXNzYXJ5IGNhbGxzIHRvCisgIHRoZSBDb2RhIEZTIGxheWVyLCBzbyB0aGUgQ29kYSBGUyBkcml2ZXIgbXVzdCBleHBvc2UgdGhlIFZGUyBpbnRlcmZhY2UKKyAgYXMgYXBwbGljYWJsZSBpbiB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gVGhlc2UgZGlmZmVyIHZlcnkgc2lnbmlmaWNhbnRseQorICBhbW9uZyBvcGVyYXRpbmcgc3lzdGVtcywgYnV0IHNoYXJlIGZlYXR1cmVzIHN1Y2ggYXMgZmFjaWxpdGllcyB0bworICByZWFkL3dyaXRlIGFuZCBjcmVhdGUgYW5kIHJlbW92ZSBvYmplY3RzLiAgVGhlIENvZGEgRlMgbGF5ZXIgc2VydmljZXMKKyAgc3VjaCBWRlMgcmVxdWVzdHMgYnkgaW52b2tpbmcgb25lIG9yIG1vcmUgd2VsbCBkZWZpbmVkIHNlcnZpY2VzCisgIG9mZmVyZWQgYnkgdGhlIGNhY2hlIG1hbmFnZXIgVmVudXMuICBXaGVuIHRoZSByZXBsaWVzIGZyb20gVmVudXMgaGF2ZQorICBjb21lIGJhY2sgdG8gdGhlIEZTIGRyaXZlciwgc2VydmljaW5nIG9mIHRoZSBWRlMgY2FsbCBjb250aW51ZXMgYW5kCisgIGZpbmlzaGVzIHdpdGggYSByZXBseSB0byB0aGUga2VybmVsJ3MgVkZTLiBGaW5hbGx5IHRoZSBWRlMgbGF5ZXIKKyAgcmV0dXJucyB0byB0aGUgcHJvY2Vzcy4KKworICBBcyBhIHJlc3VsdCBvZiB0aGlzIGRlc2lnbiBhIGJhc2ljIGludGVyZmFjZSBleHBvc2VkIGJ5IHRoZSBGUyBkcml2ZXIKKyAgbXVzdCBhbGxvdyBWZW51cyB0byBtYW5hZ2UgbWVzc2FnZSB0cmFmZmljLiAgSW4gcGFydGljdWxhciBWZW51cyBtdXN0CisgIGJlIGFibGUgdG8gcmV0cmlldmUgYW5kIHBsYWNlIG1lc3NhZ2VzIGFuZCB0byBiZSBub3RpZmllZCBvZiB0aGUKKyAgYXJyaXZhbCBvZiBhIG5ldyBtZXNzYWdlLiBUaGUgbm90aWZpY2F0aW9uIG11c3QgYmUgdGhyb3VnaCBhIG1lY2hhbmlzbQorICB3aGljaCBkb2VzIG5vdCBibG9jayBWZW51cyBzaW5jZSBWZW51cyBtdXN0IGF0dGVuZCB0byBvdGhlciB0YXNrcyBldmVuCisgIHdoZW4gbm8gbWVzc2FnZXMgYXJlIHdhaXRpbmcgb3IgYmVpbmcgcHJvY2Vzc2VkLgorCisKKworCisKKworICAgICAgICAgICAgICAgICAgICAgSW50ZXJmYWNlcyBvZiB0aGUgQ29kYSBGUyBEcml2ZXIKKworICBGdXJ0aGVybW9yZSB0aGUgRlMgbGF5ZXIgcHJvdmlkZXMgZm9yIGEgc3BlY2lhbCBwYXRoIG9mIGNvbW11bmljYXRpb24KKyAgYmV0d2VlbiBhIHVzZXIgcHJvY2VzcyBhbmQgVmVudXMsIGNhbGxlZCB0aGUgcGlvY3RsIGludGVyZmFjZS4gVGhlCisgIHBpb2N0bCBpbnRlcmZhY2UgaXMgdXNlZCBmb3IgQ29kYSBzcGVjaWZpYyBzZXJ2aWNlcywgc3VjaCBhcworICByZXF1ZXN0aW5nIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwZXJzaXN0ZW50IGNhY2hlIG1hbmFnZWQgYnkKKyAgVmVudXMuIEhlcmUgdGhlIGludm9sdmVtZW50IG9mIHRoZSBrZXJuZWwgaXMgbWluaW1hbC4gIEl0IGlkZW50aWZpZXMKKyAgdGhlIGNhbGxpbmcgcHJvY2VzcyBhbmQgcGFzc2VzIHRoZSBpbmZvcm1hdGlvbiBvbiB0byBWZW51cy4gIFdoZW4KKyAgVmVudXMgcmVwbGllcyB0aGUgcmVzcG9uc2UgaXMgcGFzc2VkIGJhY2sgdG8gdGhlIGNhbGxlciBpbiB1bm1vZGlmaWVkCisgIGZvcm0uCisKKyAgRmluYWxseSBWZW51cyBhbGxvd3MgdGhlIGtlcm5lbCBGUyBkcml2ZXIgdG8gY2FjaGUgdGhlIHJlc3VsdHMgZnJvbQorICBjZXJ0YWluIHNlcnZpY2VzLiAgVGhpcyBpcyBkb25lIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBjb250ZXh0IHN3aXRjaGVzCisgIGFuZCByZXN1bHRzIGluIGFuIGVmZmljaWVudCBzeXN0ZW0uICBIb3dldmVyLCBWZW51cyBtYXkgYWNxdWlyZQorICBpbmZvcm1hdGlvbiwgZm9yIGV4YW1wbGUgZnJvbSB0aGUgbmV0d29yayB3aGljaCBpbXBsaWVzIHRoYXQgY2FjaGVkCisgIGluZm9ybWF0aW9uIG11c3QgYmUgZmx1c2hlZCBvciByZXBsYWNlZC4gVmVudXMgdGhlbiBtYWtlcyBhIGRvd25jYWxsCisgIHRvIHRoZSBDb2RhIEZTIGxheWVyIHRvIHJlcXVlc3QgZmx1c2hlcyBvciB1cGRhdGVzIGluIHRoZSBjYWNoZS4gIFRoZQorICBrZXJuZWwgRlMgZHJpdmVyIGhhbmRsZXMgc3VjaCByZXF1ZXN0cyBzeW5jaHJvbm91c2x5LgorCisgIEFtb25nIHRoZXNlIGludGVyZmFjZXMgdGhlIFZGUyBpbnRlcmZhY2UgYW5kIHRoZSBmYWNpbGl0eSB0byBwbGFjZSwKKyAgcmVjZWl2ZSBhbmQgYmUgbm90aWZpZWQgb2YgbWVzc2FnZXMgYXJlIHBsYXRmb3JtIHNwZWNpZmljLiAgV2Ugd2lsbAorICBub3QgZ28gaW50byB0aGUgY2FsbHMgZXhwb3J0ZWQgdG8gdGhlIFZGUyBsYXllciBidXQgd2Ugd2lsbCBzdGF0ZSB0aGUKKyAgcmVxdWlyZW1lbnRzIG9mIHRoZSBtZXNzYWdlIGV4Y2hhbmdlIG1lY2hhbmlzbS4KKworICAwd3BhZ2UKKworICAzCDMuCC4gIFQIVGgIaGUIZSBtCG1lCGVzCHNzCHNhCGFnCGdlCGUgbAhsYQhheQh5ZQhlcghyCisKKworCisgIEF0IHRoZSBsb3dlc3QgbGV2ZWwgdGhlIGNvbW11bmljYXRpb24gYmV0d2VlbiBWZW51cyBhbmQgdGhlIEZTIGRyaXZlcgorICBwcm9jZWVkcyB0aHJvdWdoIG1lc3NhZ2VzLiAgVGhlIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIHByb2Nlc3NlcworICByZXF1ZXN0aW5nIENvZGEgZmlsZSBzZXJ2aWNlIGFuZCBWZW51cyByZWxpZXMgb24gYmxvY2tpbmcgYW5kIHdha2luZworICB1cCBwcm9jZXNzZXMuICBUaGUgQ29kYSBGUyBkcml2ZXIgcHJvY2Vzc2VzIFZGUy0gYW5kIHBpb2N0bC1yZXF1ZXN0cworICBvbiBiZWhhbGYgb2YgYSBwcm9jZXNzIFAsIGNyZWF0ZXMgbWVzc2FnZXMgZm9yIFZlbnVzLCBhd2FpdHMgcmVwbGllcworICBhbmQgZmluYWxseSByZXR1cm5zIHRvIHRoZSBjYWxsZXIuICBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGV4Y2hhbmdlCisgIG9mIG1lc3NhZ2VzIGlzIHBsYXRmb3JtIHNwZWNpZmljLCBidXQgdGhlIHNlbWFudGljcyBoYXZlIChzbyBmYXIpCisgIGFwcGVhcmVkIHRvIGJlIGdlbmVyYWxseSBhcHBsaWNhYmxlLiAgRGF0YSBidWZmZXJzIGFyZSBjcmVhdGVkIGJ5IHRoZQorICBGUyBEcml2ZXIgaW4ga2VybmVsIG1lbW9yeSBvbiBiZWhhbGYgb2YgUCBhbmQgY29waWVkIHRvIHVzZXIgbWVtb3J5IGluCisgIFZlbnVzLgorCisgIFRoZSBGUyBEcml2ZXIgd2hpbGUgc2VydmljaW5nIFAgbWFrZXMgdXBjYWxscyB0byBWZW51cy4gIFN1Y2ggYW4KKyAgdXBjYWxsIGlzIGRpc3BhdGNoZWQgdG8gVmVudXMgYnkgY3JlYXRpbmcgYSBtZXNzYWdlIHN0cnVjdHVyZS4gIFRoZQorICBzdHJ1Y3R1cmUgY29udGFpbnMgdGhlIGlkZW50aWZpY2F0aW9uIG9mIFAsIHRoZSBtZXNzYWdlIHNlcXVlbmNlCisgIG51bWJlciwgdGhlIHNpemUgb2YgdGhlIHJlcXVlc3QgYW5kIGEgcG9pbnRlciB0byB0aGUgZGF0YSBpbiBrZXJuZWwKKyAgbWVtb3J5IGZvciB0aGUgcmVxdWVzdC4gIFNpbmNlIHRoZSBkYXRhIGJ1ZmZlciBpcyByZS11c2VkIHRvIGhvbGQgdGhlCisgIHJlcGx5IGZyb20gVmVudXMsIHRoZXJlIGlzIGEgZmllbGQgZm9yIHRoZSBzaXplIG9mIHRoZSByZXBseS4gIEEgZmxhZ3MKKyAgZmllbGQgaXMgdXNlZCBpbiB0aGUgbWVzc2FnZSB0byBwcmVjaXNlbHkgcmVjb3JkIHRoZSBzdGF0dXMgb2YgdGhlCisgIG1lc3NhZ2UuICBBZGRpdGlvbmFsIHBsYXRmb3JtIGRlcGVuZGVudCBzdHJ1Y3R1cmVzIGludm9sdmUgcG9pbnRlcnMgdG8KKyAgZGV0ZXJtaW5lIHRoZSBwb3NpdGlvbiBvZiB0aGUgbWVzc2FnZSBvbiBxdWV1ZXMgYW5kIHBvaW50ZXJzIHRvCisgIHN5bmNocm9uaXphdGlvbiBvYmplY3RzLiAgSW4gdGhlIHVwY2FsbCByb3V0aW5lIHRoZSBtZXNzYWdlIHN0cnVjdHVyZQorICBpcyBmaWxsZWQgaW4sIGZsYWdzIGFyZSBzZXQgdG8gMCwgYW5kIGl0IGlzIHBsYWNlZCBvbiB0aGUgXwhwXwhlXwhuXwhkXwhpXwhuXwhnCisgIHF1ZXVlLiAgVGhlIHJvdXRpbmUgY2FsbGluZyB1cGNhbGwgaXMgcmVzcG9uc2libGUgZm9yIGFsbG9jYXRpbmcgdGhlCisgIGRhdGEgYnVmZmVyOyBpdHMgc3RydWN0dXJlIHdpbGwgYmUgZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24uCisKKyAgQSBmYWNpbGl0eSBtdXN0IGV4aXN0IHRvIG5vdGlmeSBWZW51cyB0aGF0IHRoZSBtZXNzYWdlIGhhcyBiZWVuCisgIGNyZWF0ZWQsIGFuZCBpbXBsZW1lbnRlZCB1c2luZyBhdmFpbGFibGUgc3luY2hyb25pemF0aW9uIG9iamVjdHMgaW4KKyAgdGhlIE9TLiBUaGlzIG5vdGlmaWNhdGlvbiBpcyBkb25lIGluIHRoZSB1cGNhbGwgY29udGV4dCBvZiB0aGUgcHJvY2VzcworICBQLiBXaGVuIHRoZSBtZXNzYWdlIGlzIG9uIHRoZSBwZW5kaW5nIHF1ZXVlLCBwcm9jZXNzIFAgY2Fubm90IHByb2NlZWQKKyAgaW4gdXBjYWxsLiAgVGhlIChrZXJuZWwgbW9kZSkgcHJvY2Vzc2luZyBvZiBQIGluIHRoZSBmaWxlc3lzdGVtCisgIHJlcXVlc3Qgcm91dGluZSBtdXN0IGJlIHN1c3BlbmRlZCB1bnRpbCBWZW51cyBoYXMgcmVwbGllZC4gIFRoZXJlZm9yZQorICB0aGUgY2FsbGluZyB0aHJlYWQgaW4gUCBpcyBibG9ja2VkIGluIHVwY2FsbC4gIEEgcG9pbnRlciBpbiB0aGUKKyAgbWVzc2FnZSBzdHJ1Y3R1cmUgd2lsbCBsb2NhdGUgdGhlIHN5bmNocm9uaXphdGlvbiBvYmplY3Qgb24gd2hpY2ggUCBpcworICBzbGVlcGluZy4KKworICBWZW51cyBkZXRlY3RzIHRoZSBub3RpZmljYXRpb24gdGhhdCBhIG1lc3NhZ2UgaGFzIGFycml2ZWQsIGFuZCB0aGUgRlMKKyAgZHJpdmVyIGFsbG93IFZlbnVzIHRvIHJldHJpZXZlIHRoZSBtZXNzYWdlIHdpdGggYSBnZXRtc2dfZnJvbV9rZXJuZWwKKyAgY2FsbC4gVGhpcyBhY3Rpb24gZmluaXNoZXMgaW4gdGhlIGtlcm5lbCBieSBwdXR0aW5nIHRoZSBtZXNzYWdlIG9uIHRoZQorICBxdWV1ZSBvZiBwcm9jZXNzaW5nIG1lc3NhZ2VzIGFuZCBzZXR0aW5nIGZsYWdzIHRvIFJFQUQuICBWZW51cyBpcworICBwYXNzZWQgdGhlIGNvbnRlbnRzIG9mIHRoZSBkYXRhIGJ1ZmZlci4gVGhlIGdldG1zZ19mcm9tX2tlcm5lbCBjYWxsCisgIG5vdyByZXR1cm5zIGFuZCBWZW51cyBwcm9jZXNzZXMgdGhlIHJlcXVlc3QuCisKKyAgQXQgc29tZSBsYXRlciBwb2ludCB0aGUgRlMgZHJpdmVyIHJlY2VpdmVzIGEgbWVzc2FnZSBmcm9tIFZlbnVzLAorICBuYW1lbHkgd2hlbiBWZW51cyBjYWxscyBzZW5kbXNnX3RvX2tlcm5lbC4gIEF0IHRoaXMgbW9tZW50IHRoZSBDb2RhIEZTCisgIGRyaXZlciBsb29rcyBhdCB0aGUgY29udGVudHMgb2YgdGhlIG1lc3NhZ2UgYW5kIGRlY2lkZXMgaWY6CisKKworICArCG8gIHRoZSBtZXNzYWdlIGlzIGEgcmVwbHkgZm9yIGEgc3VzcGVuZGVkIHRocmVhZCBQLiAgSWYgc28gaXQgcmVtb3ZlcworICAgICB0aGUgbWVzc2FnZSBmcm9tIHRoZSBwcm9jZXNzaW5nIHF1ZXVlIGFuZCBtYXJrcyB0aGUgbWVzc2FnZSBhcworICAgICBXUklUVEVOLiAgRmluYWxseSwgdGhlIEZTIGRyaXZlciB1bmJsb2NrcyBQIChzdGlsbCBpbiB0aGUga2VybmVsCisgICAgIG1vZGUgY29udGV4dCBvZiBWZW51cykgYW5kIHRoZSBzZW5kbXNnX3RvX2tlcm5lbCBjYWxsIHJldHVybnMgdG8KKyAgICAgVmVudXMuICBUaGUgcHJvY2VzcyBQIHdpbGwgYmUgc2NoZWR1bGVkIGF0IHNvbWUgcG9pbnQgYW5kIGNvbnRpbnVlcworICAgICBwcm9jZXNzaW5nIGl0cyB1cGNhbGwgd2l0aCB0aGUgZGF0YSBidWZmZXIgcmVwbGFjZWQgd2l0aCB0aGUgcmVwbHkKKyAgICAgZnJvbSBWZW51cy4KKworICArCG8gIFRoZSBtZXNzYWdlIGlzIGEgXwhkXwhvXwh3XwhuXwhjXwhhXwhsXwhsLiAgQSBkb3duY2FsbCBpcyBhIHJlcXVlc3QgZnJvbSBWZW51cyB0bworICAgICB0aGUgRlMgRHJpdmVyLiBUaGUgRlMgZHJpdmVyIHByb2Nlc3NlcyB0aGUgcmVxdWVzdCBpbW1lZGlhdGVseQorICAgICAodXN1YWxseSBhIGNhY2hlIGV2aWN0aW9uIG9yIHJlcGxhY2VtZW50KSBhbmQgd2hlbiBpdCBmaW5pc2hlcworICAgICBzZW5kbXNnX3RvX2tlcm5lbCByZXR1cm5zLgorCisgIE5vdyBQIGF3YWtlcyBhbmQgY29udGludWVzIHByb2Nlc3NpbmcgdXBjYWxsLiAgVGhlcmUgYXJlIHNvbWUKKyAgc3VidGxldGllcyB0byB0YWtlIGFjY291bnQgb2YuIEZpcnN0IFAgd2lsbCBkZXRlcm1pbmUgaWYgaXQgd2FzIHdva2VuCisgIHVwIGluIHVwY2FsbCBieSBhIHNpZ25hbCBmcm9tIHNvbWUgb3RoZXIgc291cmNlIChmb3IgZXhhbXBsZSBhbgorICBhdHRlbXB0IHRvIHRlcm1pbmF0ZSBQKSBvciBhcyBpcyBub3JtYWxseSB0aGUgY2FzZSBieSBWZW51cyBpbiBpdHMKKyAgc2VuZG1zZ190b19rZXJuZWwgY2FsbC4gIEluIHRoZSBub3JtYWwgY2FzZSwgdGhlIHVwY2FsbCByb3V0aW5lIHdpbGwKKyAgZGVhbGxvY2F0ZSB0aGUgbWVzc2FnZSBzdHJ1Y3R1cmUgYW5kIHJldHVybi4gIFRoZSBGUyByb3V0aW5lIGNhbiBwcm9jZWVkCisgIHdpdGggaXRzIHByb2Nlc3NpbmcuCisKKworCisKKworCisKKyAgICAgICAgICAgICAgICAgICAgICBTbGVlcGluZyBhbmQgSVBDIGFycmFuZ2VtZW50cworCisgIEluIGNhc2UgUCBpcyB3b2tlbiB1cCBieSBhIHNpZ25hbCBhbmQgbm90IGJ5IFZlbnVzLCBpdCB3aWxsIGZpcnN0IGxvb2sKKyAgYXQgdGhlIGZsYWdzIGZpZWxkLiAgSWYgdGhlIG1lc3NhZ2UgaXMgbm90IHlldCBSRUFELCB0aGUgcHJvY2VzcyBQIGNhbgorICBoYW5kbGUgaXRzIHNpZ25hbCB3aXRob3V0IG5vdGlmeWluZyBWZW51cy4gIElmIFZlbnVzIGhhcyBSRUFELCBhbmQKKyAgdGhlIHJlcXVlc3Qgc2hvdWxkIG5vdCBiZSBwcm9jZXNzZWQsIFAgY2FuIHNlbmQgVmVudXMgYSBzaWduYWwgbWVzc2FnZQorICB0byBpbmRpY2F0ZSB0aGF0IGl0IHNob3VsZCBkaXNyZWdhcmQgdGhlIHByZXZpb3VzIG1lc3NhZ2UuICBTdWNoCisgIHNpZ25hbHMgYXJlIHB1dCBpbiB0aGUgcXVldWUgYXQgdGhlIGhlYWQsIGFuZCByZWFkIGZpcnN0IGJ5IFZlbnVzLiAgSWYKKyAgdGhlIG1lc3NhZ2UgaXMgYWxyZWFkeSBtYXJrZWQgYXMgV1JJVFRFTiBpdCBpcyB0b28gbGF0ZSB0byBzdG9wIHRoZQorICBwcm9jZXNzaW5nLiAgVGhlIFZGUyByb3V0aW5lIHdpbGwgbm93IGNvbnRpbnVlLiAgKC0tIElmIGEgVkZTIHJlcXVlc3QKKyAgaW52b2x2ZXMgbW9yZSB0aGFuIG9uZSB1cGNhbGwsIHRoaXMgY2FuIGxlYWQgdG8gY29tcGxpY2F0ZWQgc3RhdGUsIGFuCisgIGV4dHJhIGZpZWxkICJoYW5kbGVfc2lnbmFscyIgY291bGQgYmUgYWRkZWQgaW4gdGhlIG1lc3NhZ2Ugc3RydWN0dXJlCisgIHRvIGluZGljYXRlIHBvaW50cyBvZiBubyByZXR1cm4gaGF2ZSBiZWVuIHBhc3NlZC4tLSkKKworCisKKyAgMwgzLgguMQgxLgguICBJCEltCG1wCHBsCGxlCGVtCG1lCGVuCG50CHRhCGF0CHRpCGlvCG9uCG4gZAhkZQhldAh0YQhhaQhpbAhscwhzCisKKyAgVGhlIFVuaXggaW1wbGVtZW50YXRpb24gb2YgdGhpcyBtZWNoYW5pc20gaGFzIGJlZW4gdGhyb3VnaCB0aGUKKyAgaW1wbGVtZW50YXRpb24gb2YgYSBjaGFyYWN0ZXIgZGV2aWNlIGFzc29jaWF0ZWQgd2l0aCBDb2RhLiAgVmVudXMKKyAgcmV0cmlldmVzIG1lc3NhZ2VzIGJ5IGRvaW5nIGEgcmVhZCBvbiB0aGUgZGV2aWNlLCByZXBsaWVzIGFyZSBzZW50CisgIHdpdGggYSB3cml0ZSBhbmQgbm90aWZpY2F0aW9uIGlzIHRocm91Z2ggdGhlIHNlbGVjdCBzeXN0ZW0gY2FsbCBvbiB0aGUKKyAgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgZGV2aWNlLiAgVGhlIHByb2Nlc3MgUCBpcyBrZXB0IHdhaXRpbmcgb24gYW4KKyAgaW50ZXJydXB0aWJsZSB3YWl0IHF1ZXVlIG9iamVjdC4KKworICBJbiBXaW5kb3dzIE5UIGFuZCB0aGUgRFBNSSBXaW5kb3dzIDk1IGltcGxlbWVudGF0aW9uIGEgRGV2aWNlSW9Db250cm9sCisgIGNhbGwgaXMgdXNlZC4gIFRoZSBEZXZpY2VJb0NvbnRyb2wgY2FsbCBpcyBkZXNpZ25lZCB0byBjb3B5IGJ1ZmZlcnMKKyAgZnJvbSB1c2VyIG1lbW9yeSB0byBrZXJuZWwgbWVtb3J5IHdpdGggT1BDT0RFUy4gVGhlIHNlbmRtc2dfdG9fa2VybmVsCisgIGlzIGlzc3VlZCBhcyBhIHN5bmNocm9ub3VzIGNhbGwsIHdoaWxlIHRoZSBnZXRtc2dfZnJvbV9rZXJuZWwgY2FsbCBpcworICBhc3luY2hyb25vdXMuICBXaW5kb3dzIEV2ZW50T2JqZWN0cyBhcmUgdXNlZCBmb3Igbm90aWZpY2F0aW9uIG9mCisgIG1lc3NhZ2UgYXJyaXZhbC4gIFRoZSBwcm9jZXNzIFAgaXMga2VwdCB3YWl0aW5nIG9uIGEgS2VybmVsRXZlbnQKKyAgb2JqZWN0IGluIE5UIGFuZCBhIHNlbWFwaG9yZSBpbiBXaW5kb3dzIDk1LgorCisgIDB3cGFnZQorCisgIDQINC4ILiAgVAhUaAhoZQhlIGkIaW4IbnQIdGUIZXIIcmYIZmEIYWMIY2UIZSBhCGF0CHQgdAh0aAhoZQhlIGMIY2EIYWwIbGwIbCBsCGxlCGV2CHZlCGVsCGwKKworCisgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhlIHVwY2FsbHMgYSBDb2RhIEZTIGRyaXZlciBjYW4gbWFrZSB0byBWZW51cy4KKyAgRWFjaCBvZiB0aGVzZSB1cGNhbGxzIG1ha2UgdXNlIG9mIHR3byBzdHJ1Y3R1cmVzOiBpbnB1dEFyZ3MgYW5kCisgIG91dHB1dEFyZ3MuICAgSW4gcHNldWRvIEJORiBmb3JtIHRoZSBzdHJ1Y3R1cmVzIHRha2UgdGhlIGZvbGxvd2luZworICBmb3JtOgorCisKKyAgc3RydWN0IGlucHV0QXJncyB7CisgICAgICB1X2xvbmcgb3Bjb2RlOworICAgICAgdV9sb25nIHVuaXF1ZTsgICAgIC8qIEtlZXAgbXVsdGlwbGUgb3V0c3RhbmRpbmcgbXNncyBkaXN0aW5jdCAqLworICAgICAgdV9zaG9ydCBwaWQ7ICAgICAgICAgICAgICAgICAvKiBDb21tb24gdG8gYWxsICovCisgICAgICB1X3Nob3J0IHBnaWQ7ICAgICAgICAgICAgICAgIC8qIENvbW1vbiB0byBhbGwgKi8KKyAgICAgIHN0cnVjdCBDb2RhQ3JlZCBjcmVkOyAgICAgICAgLyogQ29tbW9uIHRvIGFsbCAqLworCisgICAgICA8dW5pb24gImluIiBvZiBjYWxsIGRlcGVuZGVudCBwYXJ0cyBvZiBpbnB1dEFyZ3M+CisgIH07CisKKyAgc3RydWN0IG91dHB1dEFyZ3MgeworICAgICAgdV9sb25nIG9wY29kZTsKKyAgICAgIHVfbG9uZyB1bmlxdWU7ICAgICAgIC8qIEtlZXAgbXVsdGlwbGUgb3V0c3RhbmRpbmcgbXNncyBkaXN0aW5jdCAqLworICAgICAgdV9sb25nIHJlc3VsdDsKKworICAgICAgPHVuaW9uICJvdXQiIG9mIGNhbGwgZGVwZW5kZW50IHBhcnRzIG9mIGlucHV0QXJncz4KKyAgfTsKKworCisKKyAgQmVmb3JlIGdvaW5nIG9uIGxldCB1cyBlbHVjaWRhdGUgdGhlIHJvbGUgb2YgdGhlIHZhcmlvdXMgZmllbGRzLiBUaGUKKyAgaW5wdXRBcmdzIHN0YXJ0IHdpdGggdGhlIG9wY29kZSB3aGljaCBkZWZpbmVzIHRoZSB0eXBlIG9mIHNlcnZpY2UKKyAgcmVxdWVzdGVkIGZyb20gVmVudXMuIFRoZXJlIGFyZSBhcHByb3hpbWF0ZWx5IDMwIHVwY2FsbHMgYXQgcHJlc2VudAorICB3aGljaCB3ZSB3aWxsIGRpc2N1c3MuICAgVGhlIHVuaXF1ZSBmaWVsZCBsYWJlbHMgdGhlIGlucHV0QXJnIHdpdGggYQorICB1bmlxdWUgbnVtYmVyIHdoaWNoIHdpbGwgaWRlbnRpZnkgdGhlIG1lc3NhZ2UgdW5pcXVlbHkuICBBIHByb2Nlc3MgYW5kCisgIHByb2Nlc3MgZ3JvdXAgaWQgYXJlIHBhc3NlZC4gIEZpbmFsbHkgdGhlIGNyZWRlbnRpYWxzIG9mIHRoZSBjYWxsZXIKKyAgYXJlIGluY2x1ZGVkLgorCisgIEJlZm9yZSBkZWx2aW5nIGludG8gdGhlIHNwZWNpZmljIGNhbGxzIHdlIG5lZWQgdG8gZGlzY3VzcyBhIHZhcmlldHkgb2YKKyAgZGF0YSBzdHJ1Y3R1cmVzIHNoYXJlZCBieSB0aGUga2VybmVsIGFuZCBWZW51cy4KKworCisKKworICA0CDQuCC4xCDEuCC4gIEQIRGEIYXQIdGEIYSBzCHN0CHRyCHJ1CHVjCGN0CHR1CHVyCHJlCGVzCHMgcwhzaAhoYQhhcghyZQhlZAhkIGIIYnkIeSB0CHRoCGhlCGUgawhrZQhlcghybghuZQhlbAhsIGEIYW4IbmQIZCBWCFZlCGVuCG51CHVzCHMKKworCisgIFRoZSBDb2RhQ3JlZCBzdHJ1Y3R1cmUgZGVmaW5lcyBhIHZhcmlldHkgb2YgdXNlciBhbmQgZ3JvdXAgaWRzIGFzCisgIHRoZXkgYXJlIHNldCBmb3IgdGhlIGNhbGxpbmcgcHJvY2Vzcy4gVGhlIHZ1aWRfdCBhbmQgZ3VpZF90IGFyZSAzMiBiaXQKKyAgdW5zaWduZWQgaW50ZWdlcnMuICBJdCBhbHNvIGRlZmluZXMgZ3JvdXAgbWVtYmVyc2hpcCBpbiBhbiBhcnJheS4gIE9uCisgIFVuaXggdGhlIENvZGFDcmVkIGhhcyBwcm92ZW4gc3VmZmljaWVudCB0byBpbXBsZW1lbnQgZ29vZCBzZWN1cml0eQorICBzZW1hbnRpY3MgZm9yIENvZGEgYnV0IHRoZSBzdHJ1Y3R1cmUgbWF5IGhhdmUgdG8gdW5kZXJnbyBtb2RpZmljYXRpb24KKyAgZm9yIHRoZSBXaW5kb3dzIGVudmlyb25tZW50IHdoZW4gdGhlc2UgbWF0dXJlLgorCisgIHN0cnVjdCBDb2RhQ3JlZCB7CisgICAgICB2dWlkX3QgY3JfdWlkLCBjcl9ldWlkLCBjcl9zdWlkLCBjcl9mc3VpZDsgLyogUmVhbCwgZWZmZWN0aXZlLCBzZXQsIGZzIHVpZCovCisgICAgICB2Z2lkX3QgY3JfZ2lkLCBjcl9lZ2lkLCBjcl9zZ2lkLCBjcl9mc2dpZDsgLyogc2FtZSBmb3IgZ3JvdXBzICovCisgICAgICB2Z2lkX3QgY3JfZ3JvdXBzW05HUk9VUFNdOyAgICAgICAgLyogR3JvdXAgbWVtYmVyc2hpcCBmb3IgY2FsbGVyICovCisgIH07CisKKworCisgIE4ITk8IT1QIVEUIRSBJdCBpcyBxdWVzdGlvbmFibGUgaWYgd2UgbmVlZCBDb2RhQ3JlZHMgaW4gVmVudXMuIEZpbmFsbHkgVmVudXMKKyAgZG9lc24ndCBrbm93IGFib3V0IGdyb3VwcywgYWx0aG91Z2ggaXQgZG9lcyBjcmVhdGUgZmlsZXMgd2l0aCB0aGUKKyAgZGVmYXVsdCB1aWQvZ2lkLiAgUGVyaGFwcyB0aGUgbGlzdCBvZiBncm91cCBtZW1iZXJzaGlwIGlzIHN1cGVyZmx1b3VzLgorCisKKyAgVGhlIG5leHQgaXRlbSBpcyB0aGUgZnVuZGFtZW50YWwgaWRlbnRpZmllciB1c2VkIHRvIGlkZW50aWZ5IENvZGEKKyAgZmlsZXMsIHRoZSBWaWNlRmlkLiAgQSBmaWQgb2YgYSBmaWxlIHVuaXF1ZWx5IGRlZmluZXMgYSBmaWxlIG9yCisgIGRpcmVjdG9yeSBpbiB0aGUgQ29kYSBmaWxlc3lzdGVtIHdpdGhpbiBhIF8IY18IZV8IbF8IbC4gICAoLS0gQSBfCGNfCGVfCGxfCGwgaXMgYQorICBncm91cCBvZiBDb2RhIHNlcnZlcnMgYWN0aW5nIHVuZGVyIHRoZSBhZWdpcyBvZiBhIHNpbmdsZSBzeXN0ZW0KKyAgY29udHJvbCBtYWNoaW5lIG9yIFNDTS4gU2VlIHRoZSBDb2RhIEFkbWluaXN0cmF0aW9uIG1hbnVhbCBmb3IgYQorICBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgcm9sZSBvZiB0aGUgU0NNLi0tKQorCisKKyAgdHlwZWRlZiBzdHJ1Y3QgVmljZUZpZCB7CisgICAgICBWb2x1bWVJZCBWb2x1bWU7CisgICAgICBWbm9kZUlkIFZub2RlOworICAgICAgVW5pcXVlX3QgVW5pcXVlOworICB9IFZpY2VGaWQ7CisKKworCisgIEVhY2ggb2YgdGhlIGNvbnN0aXR1ZW50IGZpZWxkczogVm9sdW1lSWQsIFZub2RlSWQgYW5kIFVuaXF1ZV90IGFyZQorICB1bnNpZ25lZCAzMiBiaXQgaW50ZWdlcnMuICBXZSBlbnZpc2FnZSB0aGF0IGEgZnVydGhlciBmaWVsZCB3aWxsIG5lZWQKKyAgdG8gYmUgcHJlZml4ZWQgdG8gaWRlbnRpZnkgdGhlIENvZGEgY2VsbDsgdGhpcyB3aWxsIHByb2JhYmx5IHRha2UgdGhlCisgIGZvcm0gb2YgYSBJcHY2IHNpemUgSVAgYWRkcmVzcyBuYW1pbmcgdGhlIENvZGEgY2VsbCB0aHJvdWdoIEROUy4KKworICBUaGUgbmV4dCBpbXBvcnRhbnQgc3RydWN0dXJlIHNoYXJlZCBiZXR3ZWVuIFZlbnVzIGFuZCB0aGUga2VybmVsIGlzCisgIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBmaWxlLiAgVGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgaXMgdXNlZCB0bworICBleGNoYW5nZSBpbmZvcm1hdGlvbi4gIEl0IGhhcyByb29tIGZvciBmdXR1cmUgZXh0ZW5zaW9ucyBzdWNoIGFzCisgIHN1cHBvcnQgZm9yIGRldmljZSBmaWxlcyAoY3VycmVudGx5IG5vdCBwcmVzZW50IGluIENvZGEpLgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworICBzdHJ1Y3QgY29kYV92YXR0ciB7CisgICAgICAgICAgZW51bSBjb2RhX3Z0eXBlIHZhX3R5cGU7ICAgICAgICAvKiB2bm9kZSB0eXBlIChmb3IgY3JlYXRlKSAqLworICAgICAgICAgIHVfc2hvcnQgICAgICAgICB2YV9tb2RlOyAgICAgICAgLyogZmlsZXMgYWNjZXNzIG1vZGUgYW5kIHR5cGUgKi8KKyAgICAgICAgICBzaG9ydCAgICAgICAgICAgdmFfbmxpbms7ICAgICAgIC8qIG51bWJlciBvZiByZWZlcmVuY2VzIHRvIGZpbGUgKi8KKyAgICAgICAgICB2dWlkX3QgICAgICAgICAgdmFfdWlkOyAgICAgICAgIC8qIG93bmVyIHVzZXIgaWQgKi8KKyAgICAgICAgICB2Z2lkX3QgICAgICAgICAgdmFfZ2lkOyAgICAgICAgIC8qIG93bmVyIGdyb3VwIGlkICovCisgICAgICAgICAgbG9uZyAgICAgICAgICAgIHZhX2ZzaWQ7ICAgICAgICAvKiBmaWxlIHN5c3RlbSBpZCAoZGV2IGZvciBub3cpICovCisgICAgICAgICAgbG9uZyAgICAgICAgICAgIHZhX2ZpbGVpZDsgICAgICAvKiBmaWxlIGlkICovCisgICAgICAgICAgdV9xdWFkX3QgICAgICAgIHZhX3NpemU7ICAgICAgICAvKiBmaWxlIHNpemUgaW4gYnl0ZXMgKi8KKyAgICAgICAgICBsb25nICAgICAgICAgICAgdmFfYmxvY2tzaXplOyAgIC8qIGJsb2Nrc2l6ZSBwcmVmZXJyZWQgZm9yIGkvbyAqLworICAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyB2YV9hdGltZTsgICAgICAgLyogdGltZSBvZiBsYXN0IGFjY2VzcyAqLworICAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyB2YV9tdGltZTsgICAgICAgLyogdGltZSBvZiBsYXN0IG1vZGlmaWNhdGlvbiAqLworICAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyB2YV9jdGltZTsgICAgICAgLyogdGltZSBmaWxlIGNoYW5nZWQgKi8KKyAgICAgICAgICB1X2xvbmcgICAgICAgICAgdmFfZ2VuOyAgICAgICAgIC8qIGdlbmVyYXRpb24gbnVtYmVyIG9mIGZpbGUgKi8KKyAgICAgICAgICB1X2xvbmcgICAgICAgICAgdmFfZmxhZ3M7ICAgICAgIC8qIGZsYWdzIGRlZmluZWQgZm9yIGZpbGUgKi8KKyAgICAgICAgICBkZXZfdCAgICAgICAgICAgdmFfcmRldjsgICAgICAgIC8qIGRldmljZSBzcGVjaWFsIGZpbGUgcmVwcmVzZW50cyAqLworICAgICAgICAgIHVfcXVhZF90ICAgICAgICB2YV9ieXRlczsgICAgICAgLyogYnl0ZXMgb2YgZGlzayBzcGFjZSBoZWxkIGJ5IGZpbGUgKi8KKyAgICAgICAgICB1X3F1YWRfdCAgICAgICAgdmFfZmlsZXJldjsgICAgIC8qIGZpbGUgbW9kaWZpY2F0aW9uIG51bWJlciAqLworICAgICAgICAgIHVfaW50ICAgICAgICAgICB2YV92YWZsYWdzOyAgICAgLyogb3BlcmF0aW9ucyBmbGFncywgc2VlIGJlbG93ICovCisgICAgICAgICAgbG9uZyAgICAgICAgICAgIHZhX3NwYXJlOyAgICAgICAvKiByZW1haW4gcXVhZCBhbGlnbmVkICovCisgIH07CisKKworCisKKyAgNAg0LgguMggyLgguICBUCFRoCGhlCGUgcAhwaQhpbwhvYwhjdAh0bAhsIGkIaW4IbnQIdGUIZXIIcmYIZmEIYWMIY2UIZQorCisKKyAgQ29kYSBzcGVjaWZpYyByZXF1ZXN0cyBjYW4gYmUgbWFkZSBieSBhcHBsaWNhdGlvbiB0aHJvdWdoIHRoZSBwaW9jdGwKKyAgaW50ZXJmYWNlLiBUaGUgcGlvY3RsIGlzIGltcGxlbWVudGVkIGFzIGFuIG9yZGluYXJ5IGlvY3RsIG9uIGEKKyAgZmljdGl0aW91cyBmaWxlIC9jb2RhLy5DT05UUk9MLiAgVGhlIHBpb2N0bCBjYWxsIG9wZW5zIHRoaXMgZmlsZSwgZ2V0cworICBhIGZpbGUgaGFuZGxlIGFuZCBtYWtlcyB0aGUgaW9jdGwgY2FsbC4gRmluYWxseSBpdCBjbG9zZXMgdGhlIGZpbGUuCisKKyAgVGhlIGtlcm5lbCBpbnZvbHZlbWVudCBpbiB0aGlzIGlzIGxpbWl0ZWQgdG8gcHJvdmlkaW5nIHRoZSBmYWNpbGl0eSB0bworICBvcGVuIGFuZCBjbG9zZSBhbmQgcGFzcyB0aGUgaW9jdGwgbWVzc2FnZSBfCGFfCG5fCGQgdG8gdmVyaWZ5IHRoYXQgYSBwYXRoIGluCisgIHRoZSBwaW9jdGwgZGF0YSBidWZmZXJzIGlzIGEgZmlsZSBpbiBhIENvZGEgZmlsZXN5c3RlbS4KKworICBUaGUga2VybmVsIGlzIGhhbmRlZCBhIGRhdGEgcGFja2V0IG9mIHRoZSBmb3JtOgorCisgICAgICBzdHJ1Y3QgeworICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGg7CisgICAgICAgICAgc3RydWN0IFZpY2VJb2N0bCB2aWRhdGE7CisgICAgICAgICAgaW50IGZvbGxvdzsKKyAgICAgIH0gZGF0YTsKKworCisKKyAgd2hlcmUKKworCisgIHN0cnVjdCBWaWNlSW9jdGwgeworICAgICAgICAgIGNhZGRyX3QgaW4sIG91dDsgICAgICAgIC8qIERhdGEgdG8gYmUgdHJhbnNmZXJyZWQgaW4sIG9yIG91dCAqLworICAgICAgICAgIHNob3J0IGluX3NpemU7ICAgICAgICAgIC8qIFNpemUgb2YgaW5wdXQgYnVmZmVyIDw9IDJLICovCisgICAgICAgICAgc2hvcnQgb3V0X3NpemU7ICAgICAgICAgLyogTWF4aW11bSBzaXplIG9mIG91dHB1dCBidWZmZXIsIDw9IDJLICovCisgIH07CisKKworCisgIFRoZSBwYXRoIG11c3QgYmUgYSBDb2RhIGZpbGUsIG90aGVyd2lzZSB0aGUgaW9jdGwgdXBjYWxsIHdpbGwgbm90IGJlCisgIG1hZGUuCisKKyAgTghOTwhPVAhURQhFICBUaGUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBjb2RlIGFyZSBhIG1lc3MuICBXZSBuZWVkIHRvIGNsZWFuIHRoaXMKKyAgdXAuCisKKyAgV2Ugbm93IHByb2NlZWQgdG8gZG9jdW1lbnQgdGhlIGluZGl2aWR1YWwgY2FsbHM6CisKKyAgMHdwYWdlCisKKyAgNAg0LgguMwgzLgguICByCHJvCG9vCG90CHQKKworCisgIEEIQXIIcmcIZ3UIdW0IbWUIZW4IbnQIdHMIcworCisgICAgIGkIaW4IbiBlbXB0eQorCisgICAgIG8Ib3UIdXQIdAorCisgICAgICAgICAgICAgICAgc3RydWN0IGNmc19yb290X291dCB7CisgICAgICAgICAgICAgICAgICAgIFZpY2VGaWQgVkZpZDsKKyAgICAgICAgICAgICAgICB9IGNmc19yb290OworCisKKworICBECERlCGVzCHNjCGNyCHJpCGlwCHB0CHRpCGlvCG9uCG4gVGhpcyBjYWxsIGlzIG1hZGUgdG8gVmVudXMgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZgorICB0aGUgQ29kYSBmaWxlc3lzdGVtLiBJZiB0aGUgcmVzdWx0IGlzIHplcm8sIHRoZSBjZnNfcm9vdCBzdHJ1Y3R1cmUKKyAgY29udGFpbnMgdGhlIFZpY2VGaWQgb2YgdGhlIHJvb3Qgb2YgdGhlIENvZGEgZmlsZXN5c3RlbS4gSWYgYSBub24temVybworICByZXN1bHQgaXMgZ2VuZXJhdGVkLCBpdHMgdmFsdWUgaXMgYSBwbGF0Zm9ybSBkZXBlbmRlbnQgZXJyb3IgY29kZQorICBpbmRpY2F0aW5nIHRoZSBkaWZmaWN1bHR5IFZlbnVzIGVuY291bnRlcmVkIGluIGxvY2F0aW5nIHRoZSByb290IG9mCisgIHRoZSBDb2RhIGZpbGVzeXN0ZW0uCisKKyAgMHdwYWdlCisKKyAgNAg0LgguNAg0LgguICBsCGxvCG9vCG9rCGt1CHVwCHAKKworCisgIFMIU3UIdW0IbW0IbWEIYXIIcnkIeSBGaW5kIHRoZSBWaWNlRmlkIGFuZCB0eXBlIG9mIGFuIG9iamVjdCBpbiBhIGRpcmVjdG9yeSBpZiBpdAorICBleGlzdHMuCisKKyAgQQhBcghyZwhndQh1bQhtZQhlbghudAh0cwhzCisKKyAgICAgaQhpbghuCisKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgIGNmc19sb29rdXBfaW4geworICAgICAgICAgICAgICAgICAgICBWaWNlRmlkICAgICBWRmlkOworICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAqbmFtZTsgICAgICAgICAgLyogUGxhY2UgaG9sZGVyIGZvciBkYXRhLiAqLworICAgICAgICAgICAgICAgIH0gY2ZzX2xvb2t1cDsKKworCisKKyAgICAgbwhvdQh1dAh0CisKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgY2ZzX2xvb2t1cF9vdXQgeworICAgICAgICAgICAgICAgICAgICBWaWNlRmlkIFZGaWQ7CisgICAgICAgICAgICAgICAgICAgIGludCB2dHlwZTsKKyAgICAgICAgICAgICAgICB9IGNmc19sb29rdXA7CisKKworCisgIEQIRGUIZXMIc2MIY3IIcmkIaXAIcHQIdGkIaW8Ib24IbiBUaGlzIGNhbGwgaXMgbWFkZSB0byBkZXRlcm1pbmUgdGhlIFZpY2VGaWQgYW5kIGZpbGV0eXBlIG9mCisgIGEgZGlyZWN0b3J5IGVudHJ5LiAgVGhlIGRpcmVjdG9yeSBlbnRyeSByZXF1ZXN0ZWQgY2FycmllcyBuYW1lIG5hbWUKKyAgYW5kIFZlbnVzIHdpbGwgc2VhcmNoIHRoZSBkaXJlY3RvcnkgaWRlbnRpZmllZCBieSBjZnNfbG9va3VwX2luLlZGaWQuCisgIFRoZSByZXN1bHQgbWF5IGluZGljYXRlIHRoYXQgdGhlIG5hbWUgZG9lcyBub3QgZXhpc3QsIG9yIHRoYXQKKyAgZGlmZmljdWx0eSB3YXMgZW5jb3VudGVyZWQgaW4gZmluZGluZyBpdCAoZS5nLiBkdWUgdG8gZGlzY29ubmVjdGlvbikuCisgIElmIHRoZSByZXN1bHQgaXMgemVybywgdGhlIGZpZWxkIGNmc19sb29rdXBfb3V0LlZGaWQgY29udGFpbnMgdGhlCisgIHRhcmdldHMgVmljZUZpZCBhbmQgY2ZzX2xvb2t1cF9vdXQudnR5cGUgdGhlIGNvZGFfdnR5cGUgZ2l2aW5nIHRoZQorICB0eXBlIG9mIG9iamVjdCB0aGUgbmFtZSBkZXNpZ25hdGVzLgorCisgIFRoZSBuYW1lIG9mIHRoZSBvYmplY3QgaXMgYW4gOCBiaXQgY2hhcmFjdGVyIHN0cmluZyBvZiBtYXhpbXVtIGxlbmd0aAorICBDRlNfTUFYTkFNTEVOLCBjdXJyZW50bHkgc2V0IHRvIDI1NiAoaW5jbHVkaW5nIGEgMCB0ZXJtaW5hdG9yLikKKworICBJdCBpcyBleHRyZW1lbHkgaW1wb3J0YW50IHRvIHJlYWxpemUgdGhhdCBWZW51cyBiaXR3aXNlIG9ycyB0aGUgZmllbGQKKyAgY2ZzX2xvb2t1cC52dHlwZSB3aXRoIENGU19OT0NBQ0hFIHRvIGluZGljYXRlIHRoYXQgdGhlIG9iamVjdCBzaG91bGQKKyAgbm90IGJlIHB1dCBpbiB0aGUga2VybmVsIG5hbWUgY2FjaGUuCisKKyAgTghOTwhPVAhURQhFIFRoZSB0eXBlIG9mIHRoZSB2dHlwZSBpcyBjdXJyZW50bHkgd3JvbmcuICBJdCBzaG91bGQgYmUKKyAgY29kYV92dHlwZS4gTGludXggZG9lcyBub3QgdGFrZSBub3RlIG9mIENGU19OT0NBQ0hFLiAgSXQgc2hvdWxkLgorCisgIDB3cGFnZQorCisgIDQINC4ILjUINS4ILiAgZwhnZQhldAh0YQhhdAh0dAh0cghyCisKKworICBTCFN1CHVtCG1tCG1hCGFyCHJ5CHkgR2V0IHRoZSBhdHRyaWJ1dGVzIG9mIGEgZmlsZS4KKworICBBCEFyCHJnCGd1CHVtCG1lCGVuCG50CHRzCHMKKworICAgICBpCGluCG4KKworICAgICAgICAgICAgICAgIHN0cnVjdCBjZnNfZ2V0YXR0cl9pbiB7CisgICAgICAgICAgICAgICAgICAgIFZpY2VGaWQgVkZpZDsKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsgLyogWFhYWFggKi8KKyAgICAgICAgICAgICAgICB9IGNmc19nZXRhdHRyOworCisKKworICAgICBvCG91CHV0CHQKKworICAgICAgICAgICAgICAgIHN0cnVjdCBjZnNfZ2V0YXR0cl9vdXQgeworICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOworICAgICAgICAgICAgICAgIH0gY2ZzX2dldGF0dHI7CisKKworCisgIEQIRGUIZXMIc2MIY3IIcmkIaXAIcHQIdGkIaW8Ib24IbiBUaGlzIGNhbGwgcmV0dXJucyB0aGUgYXR0cmlidXRlcyBvZiB0aGUgZmlsZSBpZGVudGlmaWVkIGJ5CisgIGZpZC4KKworICBFCEVyCHJyCHJvCG9yCHJzCHMgRXJyb3JzIGNhbiBvY2N1ciBpZiB0aGUgb2JqZWN0IHdpdGggZmlkIGRvZXMgbm90IGV4aXN0LCBpcworICB1bmFjY2Vzc2libGUgb3IgaWYgdGhlIGNhbGxlciBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gZmV0Y2gKKyAgYXR0cmlidXRlcy4KKworICBOCE5vCG90CHRlCGUgTWFueSBrZXJuZWwgRlMgZHJpdmVycyAoTGludXgsIE5UIGFuZCBXaW5kb3dzIDk1KSBuZWVkIHRvIGFjcXVpcmUKKyAgdGhlIGF0dHJpYnV0ZXMgYXMgd2VsbCBhcyB0aGUgRmlkIGZvciB0aGUgaW5zdGFudGlhdGlvbiBvZiBhbiBpbnRlcm5hbAorICAiaW5vZGUiIG9yICJGaWxlSGFuZGxlIi4gIEEgc2lnbmlmaWNhbnQgaW1wcm92ZW1lbnQgaW4gcGVyZm9ybWFuY2Ugb24KKyAgc3VjaCBzeXN0ZW1zIGNvdWxkIGJlIG1hZGUgYnkgY29tYmluaW5nIHRoZSBfCGxfCG9fCG9fCGtfCHVfCHAgYW5kIF8IZ18IZV8IdF8IYV8IdF8IdF8IciBjYWxscworICBib3RoIGF0IHRoZSBWZW51cy9rZXJuZWwgaW50ZXJhY3Rpb24gbGV2ZWwgYW5kIGF0IHRoZSBSUEMgbGV2ZWwuCisKKyAgVGhlIHZhdHRyIHN0cnVjdHVyZSBpbmNsdWRlZCBpbiB0aGUgaW5wdXQgYXJndW1lbnRzIGlzIHN1cGVyZmx1b3VzIGFuZAorICBzaG91bGQgYmUgcmVtb3ZlZC4KKworICAwd3BhZ2UKKworICA0CDQuCC42CDYuCC4gIHMIc2UIZXQIdGEIYXQIdHQIdHIIcgorCisKKyAgUwhTdQh1bQhtbQhtYQhhcghyeQh5IFNldCB0aGUgYXR0cmlidXRlcyBvZiBhIGZpbGUuCisKKyAgQQhBcghyZwhndQh1bQhtZQhlbghudAh0cwhzCisKKyAgICAgaQhpbghuCisKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgY2ZzX3NldGF0dHJfaW4geworICAgICAgICAgICAgICAgICAgICBWaWNlRmlkIFZGaWQ7CisgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7CisgICAgICAgICAgICAgICAgfSBjZnNfc2V0YXR0cjsKKworCisKKworICAgICBvCG91CHV0CHQKKyAgICAgICAgZW1wdHkKKworICBECERlCGVzCHNjCGNyCHJpCGlwCHB0CHRpCGlvCG9uCG4gVGhlIHN0cnVjdHVyZSBhdHRyIGlzIGZpbGxlZCB3aXRoIGF0dHJpYnV0ZXMgdG8gYmUgY2hhbmdlZAorICBpbiBCU0Qgc3R5bGUuICBBdHRyaWJ1dGVzIG5vdCB0byBiZSBjaGFuZ2VkIGFyZSBzZXQgdG8gLTEsIGFwYXJ0IGZyb20KKyAgdnR5cGUgd2hpY2ggaXMgc2V0IHRvIFZOT04uIE90aGVyIGFyZSBzZXQgdG8gdGhlIHZhbHVlIHRvIGJlIGFzc2lnbmVkLgorICBUaGUgb25seSBhdHRyaWJ1dGVzIHdoaWNoIHRoZSBGUyBkcml2ZXIgbWF5IHJlcXVlc3QgdG8gY2hhbmdlIGFyZSB0aGUKKyAgbW9kZSwgb3duZXIsIGdyb3VwaWQsIGF0aW1lLCBtdGltZSBhbmQgY3RpbWUuICBUaGUgcmV0dXJuIHZhbHVlCisgIGluZGljYXRlcyBzdWNjZXNzIG9yIGZhaWx1cmUuCisKKyAgRQhFcghycghybwhvcghycwhzIEEgdmFyaWV0eSBvZiBlcnJvcnMgY2FuIG9jY3VyLiAgVGhlIG9iamVjdCBtYXkgbm90IGV4aXN0LCBtYXkKKyAgYmUgaW5hY2Nlc3NpYmxlLCBvciBwZXJtaXNzaW9uIG1heSBub3QgYmUgZ3JhbnRlZCBieSBWZW51cy4KKworICAwd3BhZ2UKKworICA0CDQuCC43CDcuCC4gIGEIYWMIY2MIY2UIZXMIc3MIcworCisKKyAgUwhTdQh1bQhtbQhtYQhhcghyeQh5CisKKyAgQQhBcghyZwhndQh1bQhtZQhlbghudAh0cwhzCisKKyAgICAgaQhpbghuCisKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgY2ZzX2FjY2Vzc19pbiB7CisgICAgICAgICAgICAgICAgICAgIFZpY2VGaWQgICAgIFZGaWQ7CisgICAgICAgICAgICAgICAgICAgIGludCBmbGFnczsKKyAgICAgICAgICAgICAgICB9IGNmc19hY2Nlc3M7CisKKworCisgICAgIG8Ib3UIdXQIdAorICAgICAgICBlbXB0eQorCisgIEQIRGUIZXMIc2MIY3IIcmkIaXAIcHQIdGkIaW8Ib24IbiBWZXJpZnkgaWYgYWNjZXNzIHRvIHRoZSBvYmplY3QgaWRlbnRpZmllZCBieSBWRmlkIGZvcgorICBvcGVyYXRpb25zIGRlc2NyaWJlZCBieSBmbGFncyBpcyBwZXJtaXR0ZWQuICBUaGUgcmVzdWx0IGluZGljYXRlcyBpZgorICBhY2Nlc3Mgd2lsbCBiZSBncmFudGVkLiAgSXQgaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRoYXQgQ29kYSB1c2VzCisgIEFDTHMgdG8gZW5mb3JjZSBwcm90ZWN0aW9uIGFuZCB0aGF0IHVsdGltYXRlbHkgdGhlIHNlcnZlcnMsIG5vdCB0aGUKKyAgY2xpZW50cyBlbmZvcmNlIHRoZSBzZWN1cml0eSBvZiB0aGUgc3lzdGVtLiAgVGhlIHJlc3VsdCBvZiB0aGlzIGNhbGwKKyAgd2lsbCBkZXBlbmQgb24gd2hldGhlciBhIF8IdF8Ib18Ia18IZV8IbiBpcyBoZWxkIGJ5IHRoZSB1c2VyLgorCisgIEUIRXIIcnIIcm8Ib3IIcnMIcyBUaGUgb2JqZWN0IG1heSBub3QgZXhpc3QsIG9yIHRoZSBBQ0wgZGVzY3JpYmluZyB0aGUgcHJvdGVjdGlvbgorICBtYXkgbm90IGJlIGFjY2Vzc2libGUuCisKKyAgMHdwYWdlCisKKyAgNAg0LgguOAg4LgguICBjCGNyCHJlCGVhCGF0CHRlCGUKKworCisgIFMIU3UIdW0IbW0IbWEIYXIIcnkIeSBJbnZva2VkIHRvIGNyZWF0ZSBhIGZpbGUKKworICBBCEFyCHJnCGd1CHVtCG1lCGVuCG50CHRzCHMKKworICAgICBpCGluCG4KKworICAgICAgICAgICAgICAgIHN0cnVjdCBjZnNfY3JlYXRlX2luIHsKKyAgICAgICAgICAgICAgICAgICAgVmljZUZpZCBWRmlkOworICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOworICAgICAgICAgICAgICAgICAgICBpbnQgZXhjbDsKKyAgICAgICAgICAgICAgICAgICAgaW50IG1vZGU7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICpuYW1lOyAgICAgICAgICAvKiBQbGFjZSBob2xkZXIgZm9yIGRhdGEuICovCisgICAgICAgICAgICAgICAgfSBjZnNfY3JlYXRlOworCisKKworCisgICAgIG8Ib3UIdXQIdAorCisgICAgICAgICAgICAgICAgc3RydWN0IGNmc19jcmVhdGVfb3V0IHsKKyAgICAgICAgICAgICAgICAgICAgVmljZUZpZCBWRmlkOworICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29kYV92YXR0ciBhdHRyOworICAgICAgICAgICAgICAgIH0gY2ZzX2NyZWF0ZTsKKworCisKKyAgRAhEZQhlcwhzYwhjcghyaQhpcAhwdAh0aQhpbwhvbghuICBUaGlzIHVwY2FsbCBpcyBpbnZva2VkIHRvIHJlcXVlc3QgY3JlYXRpb24gb2YgYSBmaWxlLgorICBUaGUgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhlIGRpcmVjdG9yeSBpZGVudGlmaWVkIGJ5IFZGaWQsIGl0cyBuYW1lCisgIHdpbGwgYmUgbmFtZSwgYW5kIHRoZSBtb2RlIHdpbGwgYmUgbW9kZS4gIElmIGV4Y2wgaXMgc2V0IGFuIGVycm9yIHdpbGwKKyAgYmUgcmV0dXJuZWQgaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMuICBJZiB0aGUgc2l6ZSBmaWVsZCBpbiBhdHRyIGlzCisgIHNldCB0byB6ZXJvIHRoZSBmaWxlIHdpbGwgYmUgdHJ1bmNhdGVkLiAgVGhlIHVpZCBhbmQgZ2lkIG9mIHRoZSBmaWxlCisgIGFyZSBzZXQgYnkgY29udmVydGluZyB0aGUgQ29kYUNyZWQgdG8gYSB1aWQgdXNpbmcgYSBtYWNybyBDUlRPVUlECisgICh0aGlzIG1hY3JvIGlzIHBsYXRmb3JtIGRlcGVuZGVudCkuICBVcG9uIHN1Y2Nlc3MgdGhlIFZGaWQgYW5kCisgIGF0dHJpYnV0ZXMgb2YgdGhlIGZpbGUgYXJlIHJldHVybmVkLiAgVGhlIENvZGEgRlMgRHJpdmVyIHdpbGwgbm9ybWFsbHkKKyAgaW5zdGFudGlhdGUgYSB2bm9kZSwgaW5vZGUgb3IgZmlsZSBoYW5kbGUgYXQga2VybmVsIGxldmVsIGZvciB0aGUgbmV3CisgIG9iamVjdC4KKworCisgIEUIRXIIcnIIcm8Ib3IIcnMIcyBBIHZhcmlldHkgb2YgZXJyb3JzIGNhbiBvY2N1ci4gUGVybWlzc2lvbnMgbWF5IGJlIGluc3VmZmljaWVudC4KKyAgSWYgdGhlIG9iamVjdCBleGlzdHMgYW5kIGlzIG5vdCBhIGZpbGUgdGhlIGVycm9yIEVJU0RJUiBpcyByZXR1cm5lZAorICB1bmRlciBVbml4LgorCisgIE4ITk8IT1QIVEUIRSBUaGUgcGFja2luZyBvZiBwYXJhbWV0ZXJzIGlzIHZlcnkgaW5lZmZpY2llbnQgYW5kIGFwcGVhcnMgdG8KKyAgaW5kaWNhdGUgY29uZnVzaW9uIGJldHdlZW4gdGhlIHN5c3RlbSBjYWxsIGNyZWF0IGFuZCB0aGUgVkZTIG9wZXJhdGlvbgorICBjcmVhdGUuIFRoZSBWRlMgb3BlcmF0aW9uIGNyZWF0ZSBpcyBvbmx5IGNhbGxlZCB0byBjcmVhdGUgbmV3IG9iamVjdHMuCisgIFRoaXMgY3JlYXRlIGNhbGwgZGlmZmVycyBmcm9tIHRoZSBVbml4IG9uZSBpbiB0aGF0IGl0IGlzIG5vdCBpbnZva2VkCisgIHRvIHJldHVybiBhIGZpbGUgZGVzY3JpcHRvci4gVGhlIHRydW5jYXRlIGFuZCBleGNsdXNpdmUgb3B0aW9ucywKKyAgdG9nZXRoZXIgd2l0aCB0aGUgbW9kZSwgY291bGQgc2ltcGx5IGJlIHBhcnQgb2YgdGhlIG1vZGUgYXMgaXQgaXMKKyAgdW5kZXIgVW5peC4gIFRoZXJlIHNob3VsZCBiZSBubyBmbGFncyBhcmd1bWVudDsgdGhpcyBpcyB1c2VkIGluIG9wZW4KKyAgKDIpIHRvIHJldHVybiBhIGZpbGUgZGVzY3JpcHRvciBmb3IgUkVBRCBvciBXUklURSBtb2RlLgorCisgIFRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBkaXJlY3Rvcnkgc2hvdWxkIGJlIHJldHVybmVkIHRvbywgc2luY2UgdGhlIHNpemUKKyAgYW5kIG10aW1lIGNoYW5nZWQuCisKKyAgMHdwYWdlCisKKyAgNAg0LgguOQg5LgguICBtCG1rCGtkCGRpCGlyCHIKKworCisgIFMIU3UIdW0IbW0IbWEIYXIIcnkIeSBDcmVhdGUgYSBuZXcgZGlyZWN0b3J5LgorCisgIEEIQXIIcmcIZ3UIdW0IbWUIZW4IbnQIdHMIcworCisgICAgIGkIaW4IbgorCisgICAgICAgICAgICAgICAgc3RydWN0IGNmc19ta2Rpcl9pbiB7CisgICAgICAgICAgICAgICAgICAgIFZpY2VGaWQgICAgIFZGaWQ7CisgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICpuYW1lOyAgICAgICAgICAvKiBQbGFjZSBob2xkZXIgZm9yIGRhdGEuICovCisgICAgICAgICAgICAgICAgfSBjZnNfbWtkaXI7CisKKworCisgICAgIG8Ib3UIdXQIdAorCisgICAgICAgICAgICAgICAgc3RydWN0IGNmc19ta2Rpcl9vdXQgeworICAgICAgICAgICAgICAgICAgICBWaWNlRmlkIFZGaWQ7CisgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb2RhX3ZhdHRyIGF0dHI7CisgICAgICAgICAgICAgICAgfSBjZnNfbWtkaXI7CisKKworCisKKyAgRAhEZQhlcwhzYwhjcghyaQhpcAhwdAh0aQhpbwhvbghuIFRoaXMgY2FsbCBpcyBzaW1pbGFyIHRvIGNyZWF0ZSBidXQgY3JlYXRlcyBhIGRpcmVjdG9yeS4KKyAgT25seSB0aGUgbW9kZSBmaWVsZCBpbiB0aGUgaW5wdXQgcGFyYW1ldGVycyBpcyB1c2VkIGZvciBjcmVhdGlvbi4KKyAgVXBvbiBzdWNjZXNzZnVsIGNyZWF0aW9uLCB0aGUgYXR0ciByZXR1cm5lZCBjb250YWlucyB0aGUgYXR0cmlidXRlcyBvZgorICB0aGUgbmV3IGRpcmVjdG9yeS4KKworICBFCEVyCHJyCHJvCG9yCHJzCHMgQXMgZm9yIGNyZWF0ZS4KKworICBOCE5PCE9UCFRFCEUgVGhlIGlucHV0IHBhcmFtZXRlciBzaG91bGQgYmUgY2hhbmdlZCB0byBtb2RlIGluc3RlYWQgb2YKKyAgYXR0cmlidXRlcy4KKworICBUaGUgYXR0cmlidXRlcyBvZiB0aGUgcGFyZW50IHNob3VsZCBiZSByZXR1cm5lZCBzaW5jZSB0aGUgc2l6ZSBhbmQKKyAgbXRpbWUgY2hhbmdlcy4KKworICAwd3BhZ2UKKworICA0CDQuCC4xCDEwCDAuCC4gIGwIbGkIaW4IbmsIaworCisKKyAgUwhTdQh1bQhtbQhtYQhhcghyeQh5IENyZWF0ZSBhIGxpbmsgdG8gYW4gZXhpc3RpbmcgZmlsZS4KKworICBBCEFyCHJnCGd1CHVtCG1lCGVuCG50CHRzCHMKKworICAgICBpCGluCG4KKworICAgICAgICAgICAgICAgIHN0cnVjdCBjZnNfbGlua19pbiB7CisgICAgICAgICAgICAgICAgICAgIFZpY2VGaWQgc291cmNlRmlkOyAgICAgICAgICAvKiBjbm9kZSB0byBsaW5rICp0byogKi8KKyAgICAgICAgICAgICAgICAgICAgVmljZUZpZCBkZXN0RmlkOyAgICAgICAgICAgIC8qIERpcmVjdG9yeSBpbiB3aGljaCB0byBwbGFjZSBsaW5rICovCisgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICp0bmFtZTsgICAgICAgICAvKiBQbGFjZSBob2xkZXIgZm9yIGRhdGEuICovCisgICAgICAgICAgICAgICAgfSBjZnNfbGluazsKKworCisKKyAgICAgbwhvdQh1dAh0CisgICAgICAgIGVtcHR5CisKKyAgRAhEZQhlcwhzYwhjcghyaQhpcAhwdAh0aQhpbwhvbghuIFRoaXMgY2FsbCBjcmVhdGVzIGEgbGluayB0byB0aGUgc291cmNlRmlkIGluIHRoZSBkaXJlY3RvcnkKKyAgaWRlbnRpZmllZCBieSBkZXN0RmlkIHdpdGggbmFtZSB0bmFtZS4gIFRoZSBzb3VyY2UgbXVzdCByZXNpZGUgaW4gdGhlCisgIHRhcmdldCdzIHBhcmVudCwgaS5lLiB0aGUgc291cmNlIG11c3QgYmUgaGF2ZSBwYXJlbnQgZGVzdEZpZCwgaS5lLiBDb2RhCisgIGRvZXMgbm90IHN1cHBvcnQgY3Jvc3MgZGlyZWN0b3J5IGhhcmQgbGlua3MuICBPbmx5IHRoZSByZXR1cm4gdmFsdWUgaXMKKyAgcmVsZXZhbnQuICBJdCBpbmRpY2F0ZXMgc3VjY2VzcyBvciB0aGUgdHlwZSBvZiBmYWlsdXJlLgorCisgIEUIRXIIcnIIcm8Ib3IIcnMIcyBUaGUgdXN1YWwgZXJyb3JzIGNhbiBvY2N1ci4wd3BhZ2UKKworICA0CDQuCC4xCDExCDEuCC4gIHMIc3kIeW0IbWwIbGkIaW4IbmsIaworCisKKyAgUwhTdQh1bQhtbQhtYQhhcghyeQh5IGNyZWF0ZSBhIHN5bWJvbGljIGxpbmsKKworICBBCEFyCHJnCGd1CHVtCG1lCGVuCG50CHRzCHMKKworICAgICBpCGluCG4KKworICAgICAgICAgICAgICAgIHN0cnVjdCBjZnNfc3ltbGlua19pbiB7CisgICAgICAgICAgICAgICAgICAgIFZpY2VGaWQgICAgIFZGaWQ7ICAgICAgICAgIC8qIERpcmVjdG9yeSB0byBwdXQgc3ltbGluayBpbiAqLworICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAqc3JjbmFtZTsKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvZGFfdmF0dHIgYXR0cjsKKyAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgKnRuYW1lOworICAgICAgICAgICAgICAgIH0gY2ZzX3N5bWxpbms7CisKKworCisgICAgIG8Ib3UIdXQIdAorICAgICAgICBub25lCisKKyAgRAhEZQhlcwhzYwhjcghyaQhpcAhwdAh0aQhpbwhvbghuIENyZWF0ZSBhIHN5bWJvbGljIGxpbmsuIFRoZSBsaW5rIGlzIHRvIGJlIHBsYWNlZCBpbiB0aGUKKyAgZGlyZWN0b3J5IGlkZW50aWZpZWQgYnkgVkZpZCBhbmQgbmFtZWQgdG5hbWUuICBJdCBzaG91bGQgcG9pbnQgdG8gdGhlCisgIHBhdGhuYW1lIHNyY25hbWUuICBUaGUgYXR0cmlidXRlcyBvZiB0aGUgbmV3bHkgY3JlYXRlZCBvYmplY3QgYXJlIHRvCisgIGJlIHNldCB0byBhdHRyLgorCisgIEUIRXIIcnIIcm8Ib3IIcnMIcworCisgIE4ITk8IT1QIVEUIRSBUaGUgYXR0cmlidXRlcyBvZiB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBzaG91bGQgYmUgcmV0dXJuZWQgc2luY2UKKyAgaXRzIHNpemUgY2hhbmdlZC4KKworICAwd3BhZ2UKKworICA0CDQuCC4xCDEyCDIuCC4gIHIIcmUIZW0IbW8Ib3YIdmUIZQorCisKKyAgUwhTdQh1bQhtbQhtYQhhcghyeQh5IFJlbW92ZSBhIGZpbGUKKworICBBCEFyCHJnCGd1CHVtCG1lCGVuCG50CHRzCHMKKworICAgICBpCGluCG4KKworICAgICAgICAgICAgICAgIHN0cnVjdCBjZnNfcmVtb3ZlX2luIHsKKyAgICAgICAgICAgICAgICAgICAgVmljZUZpZCAgICAgVkZpZDsKKyAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgKm5hbWU7ICAgICAgICAgIC8qIFBsYWNlIGhvbGRlciBmb3IgZGF0YS4gKi8KKyAgICAgICAgICAgICAgICB9IGNmc19yZW1vdmU7CisKKworCisgICAgIG8Ib3UIdXQIdAorICAgICAgICBub25lCisKKyAgRAhEZQhlcwhzYwhjcghyaQhpcAhwdAh0aQhpbwhvbghuICBSZW1vdmUgZmlsZSBuYW1lZCBjZnNfcmVtb3ZlX2luLm5hbWUgaW4gZGlyZWN0b3J5CisgIGlkZW50aWZpZWQgYnkgICBWRmlkLgorCisgIEUIRXIIcnIIcm8Ib3IIcnMIcworCisgIE4ITk8IT1QIVEUIRSBUaGUgYXR0cmlidXRlcyBvZiB0aGUgZGlyZWN0b3J5IHNob3VsZCBiZSByZXR1cm5lZCBzaW5jZSBpdHMKKyAgbXRpbWUgYW5kIHNpemUgbWF5IGNoYW5nZS4KKworICAwd3BhZ2UKKworICA0CDQuCC4xCDEzCDMuCC4gIHIIcm0IbWQIZGkIaXIIcgorCisKKyAgUwhTdQh1bQhtbQhtYQhhcghyeQh5IFJlbW92ZSBhIGRpcmVjdG9yeQorCisgIEEIQXIIcmcIZ3UIdW0IbWUIZW4IbnQIdHMIcworCisgICAgIGkIaW4IbgorCisgICAgICAgICAgICAgICAgc3RydWN0IGNmc19ybWRpcl9pbiB7CisgICAgICAgICAgICAgICAgICAgIFZpY2VGaWQgICAgIFZGaWQ7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICpuYW1lOyAgICAgICAgICAvKiBQbGFjZSBob2xkZXIgZm9yIGRhdGEuICovCisgICAgICAgICAgICAgICAgfSBjZnNfcm1kaXI7CisKKworCisgICAgIG8Ib3UIdXQIdAorICAgICAgICBub25lCisKKyAgRAhEZQhlcwhzYwhjcghyaQhpcAhwdAh0aQhpbwhvbghuIFJlbW92ZSB0aGUgZGlyZWN0b3J5IHdpdGggbmFtZSBuYW1lIGZyb20gdGhlIGRpcmVjdG9yeQorICBpZGVudGlmaWVkIGJ5IFZGaWQuCisKKyAgRQhFcghycghybwhvcghycwhzCisKKyAgTghOTwhPVAhURQhFIFRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBwYXJlbnQgZGlyZWN0b3J5IHNob3VsZCBiZSByZXR1cm5lZCBzaW5jZQorICBpdHMgbXRpbWUgYW5kIHNpemUgbWF5IGNoYW5nZS4KKworICAwd3BhZ2UKKworICA0CDQuCC4xCDE0CDQuCC4gIHIIcmUIZWEIYWQIZGwIbGkIaW4IbmsIaworCisKKyAgUwhTdQh1bQhtbQhtYQhhcghyeQh5IFJlYWQgdGhlIHZhbHVlIG9mIGEgc3ltYm9saWMgbGluay4KKworICBBCEFyCHJnCGd1CHVtCG1lCGVuCG50CHRzCHMKKworICAgICBpCGluCG4KKworICAgICAgICAgICAgICAgIHN0cnVjdCBjZnNfcmVhZGxpbmtfaW4geworICAgICAgICAgICAgICAgICAgICBWaWNlRmlkIFZGaWQ7CisgICAgICAgICAgICAgICAgfSBjZnNfcmVhZGxpbms7CisKKworCisgICAgIG8Ib3UIdXQIdAorCisgICAgICAgICAgICAgICAgc3RydWN0IGNmc19yZWFkbGlua19vdXQgeworICAgICAgICAgICAgICAgICAgICBpbnQgY291bnQ7CisgICAgICAgICAgICAgICAgICAgIGNhZGRyX3QgICAgIGRhdGE7ICAgICAgICAgICAvKiBQbGFjZSBob2xkZXIgZm9yIGRhdGEuICovCisgICAgICAgICAgICAgICAgfSBjZnNfcmVhZGxpbms7CisKKworCisgIEQIRGUIZXMIc2MIY3IIcmkIaXAIcHQIdGkIaW8Ib24IbiBUaGlzIHJvdXRpbmUgcmVhZHMgdGhlIGNvbnRlbnRzIG9mIHN5bWJvbGljIGxpbmsKKyAgaWRlbnRpZmllZCBieSBWRmlkIGludG8gdGhlIGJ1ZmZlciBkYXRhLiAgVGhlIGJ1ZmZlciBkYXRhIG11c3QgYmUgYWJsZQorICB0byBob2xkIGFueSBuYW1lIHVwIHRvIENGU19NQVhOQU1MRU4gKFBBVEggb3IgTkFNPz8pLgorCisgIEUIRXIIcnIIcm8Ib3IIcnMIcyBObyB1bnVzdWFsIGVycm9ycy4KKworICAwd3BhZ2UKKworICA0CDQuCC4xCDE1CDUuCC4gIG8Ib3AIcGUIZW4IbgorCisKKyAgUwhTdQh1bQhtbQhtYQhhcghyeQh5IE9wZW4gYSBmaWxlLgorCisgIEEIQXIIcmcIZ3UIdW0IbWUIZW4IbnQIdHMIcworCisgICAgIGkIaW4IbgorCisgICAgICAgICAgICAgICAgc3RydWN0IGNmc19vcGVuX2luIHsKKyAgICAgICAgICAgICAgICAgICAgVmljZUZpZCAgICAgVkZpZDsKKyAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzOworICAgICAgICAgICAgICAgIH0gY2ZzX29wZW47CisKKworCisgICAgIG8Ib3UIdXQIdAorCisgICAgICAgICAgICAgICAgc3RydWN0IGNmc19vcGVuX291dCB7CisgICAgICAgICAgICAgICAgICAgIGRldl90ICAgICAgIGRldjsKKyAgICAgICAgICAgICAgICAgICAgaW5vX3QgICAgICAgaW5vZGU7CisgICAgICAgICAgICAgICAgfSBjZnNfb3BlbjsKKworCisKKyAgRAhEZQhlcwhzYwhjcghyaQhpcAhwdAh0aQhpbwhvbghuICBUaGlzIHJlcXVlc3QgYXNrcyBWZW51cyB0byBwbGFjZSB0aGUgZmlsZSBpZGVudGlmaWVkIGJ5CisgIFZGaWQgaW4gaXRzIGNhY2hlIGFuZCB0byBub3RlIHRoYXQgdGhlIGNhbGxpbmcgcHJvY2VzcyB3aXNoZXMgdG8gb3BlbgorICBpdCB3aXRoIGZsYWdzIGFzIGluIG9wZW4oMikuICBUaGUgcmV0dXJuIHZhbHVlIHRvIHRoZSBrZXJuZWwgZGlmZmVycworICBmb3IgVW5peCBhbmQgV2luZG93cyBzeXN0ZW1zLiAgRm9yIFVuaXggc3lzdGVtcyB0aGUgQ29kYSBGUyBEcml2ZXIgaXMKKyAgaW5mb3JtZWQgb2YgdGhlIGRldmljZSBhbmQgaW5vZGUgbnVtYmVyIG9mIHRoZSBjb250YWluZXIgZmlsZSBpbiB0aGUKKyAgZmllbGRzIGRldiBhbmQgaW5vZGUuICBGb3IgV2luZG93cyB0aGUgcGF0aCBvZiB0aGUgY29udGFpbmVyIGZpbGUgaXMKKyAgcmV0dXJuZWQgdG8gdGhlIGtlcm5lbC4KKyAgRQhFcghycghybwhvcghycwhzCisKKyAgTghOTwhPVAhURQhFIEN1cnJlbnRseSB0aGUgY2ZzX29wZW5fb3V0IHN0cnVjdHVyZSBpcyBub3QgcHJvcGVybHkgYWRhcHRlZCB0bworICBkZWFsIHdpdGggdGhlIFdpbmRvd3MgY2FzZS4gIEl0IG1pZ2h0IGJlIGJlc3QgdG8gaW1wbGVtZW50IHR3bworICB1cGNhbGxzLCBvbmUgdG8gb3BlbiBhaW1pbmcgYXQgYSBjb250YWluZXIgZmlsZSBuYW1lLCB0aGUgb3RoZXIgYXQgYQorICBjb250YWluZXIgZmlsZSBpbm9kZS4KKworICAwd3BhZ2UKKworICA0CDQuCC4xCDE2CDYuCC4gIGMIY2wIbG8Ib3MIc2UIZQorCisKKyAgUwhTdQh1bQhtbQhtYQhhcghyeQh5IENsb3NlIGEgZmlsZSwgdXBkYXRlIGl0IG9uIHRoZSBzZXJ2ZXJzLgorCisgIEEIQXIIcmcIZ3UIdW0IbWUIZW4IbnQIdHMIcworCisgICAgIGkIaW4IbgorCisgICAgICAgICAgICAgICAgc3RydWN0IGNmc19jbG9zZV9pbiB7CisgICAgICAgICAgICAgICAgICAgIFZpY2VGaWQgICAgIFZGaWQ7CisgICAgICAgICAgICAgICAgICAgIGludCBmbGFnczsKKyAgICAgICAgICAgICAgICB9IGNmc19jbG9zZTsKKworCisKKyAgICAgbwhvdQh1dAh0CisgICAgICAgIG5vbmUKKworICBECERlCGVzCHNjCGNyCHJpCGlwCHB0CHRpCGlvCG9uCG4gQ2xvc2UgdGhlIGZpbGUgaWRlbnRpZmllZCBieSBWRmlkLgorCisgIEUIRXIIcnIIcm8Ib3IIcnMIcworCisgIE4ITk8IT1QIVEUIRSBUaGUgZmxhZ3MgYXJndW1lbnQgaXMgYm9ndXMgYW5kIG5vdCB1c2VkLiAgSG93ZXZlciwgVmVudXMnIGNvZGUKKyAgaGFzIHJvb20gdG8gZGVhbCB3aXRoIGFuIGV4ZWNwIGlucHV0IGZpZWxkLCBwcm9iYWJseSB0aGlzIGZpZWxkIHNob3VsZAorICBiZSB1c2VkIHRvIGluZm9ybSBWZW51cyB0aGF0IHRoZSBmaWxlIHdhcyBjbG9zZWQgYnV0IGlzIHN0aWxsIG1lbW9yeQorICBtYXBwZWQgZm9yIGV4ZWN1dGlvbi4gIFRoZXJlIGFyZSBjb21tZW50cyBhYm91dCBmZXRjaGluZyB2ZXJzdXMgbm90CisgIGZldGNoaW5nIHRoZSBkYXRhIGluIFZlbnVzIHZwcm9jX3Zmc2NhbGxzLiAgVGhpcyBzZWVtcyBzaWxseS4gIElmIGEKKyAgZmlsZSBpcyBiZWluZyBjbG9zZWQsIHRoZSBkYXRhIGluIHRoZSBjb250YWluZXIgZmlsZSBpcyB0byBiZSB0aGUgbmV3CisgIGRhdGEuICBIZXJlIGFnYWluIHRoZSBleGVjcCBmbGFnIG1pZ2h0IGJlIGluIHBsYXkgdG8gY3JlYXRlIGNvbmZ1c2lvbjoKKyAgY3VycmVudGx5IFZlbnVzIG1pZ2h0IHRoaW5rIGEgZmlsZSBjYW4gYmUgZmx1c2hlZCBmcm9tIHRoZSBjYWNoZSB3aGVuCisgIGl0IGlzIHN0aWxsIG1lbW9yeSBtYXBwZWQuICBUaGlzIG5lZWRzIHRvIGJlIHVuZGVyc3Rvb2QuCisKKyAgMHdwYWdlCisKKyAgNAg0LgguMQgxNwg3LgguICBpCGlvCG9jCGN0CHRsCGwKKworCisgIFMIU3UIdW0IbW0IbWEIYXIIcnkIeSBEbyBhbiBpb2N0bCBvbiBhIGZpbGUuIFRoaXMgaW5jbHVkZXMgdGhlIHBpb2N0bCBpbnRlcmZhY2UuCisKKyAgQQhBcghyZwhndQh1bQhtZQhlbghudAh0cwhzCisKKyAgICAgaQhpbghuCisKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgY2ZzX2lvY3RsX2luIHsKKyAgICAgICAgICAgICAgICAgICAgVmljZUZpZCBWRmlkOworICAgICAgICAgICAgICAgICAgICBpbnQgY21kOworICAgICAgICAgICAgICAgICAgICBpbnQgbGVuOworICAgICAgICAgICAgICAgICAgICBpbnQgcndmbGFnOworICAgICAgICAgICAgICAgICAgICBjaGFyICpkYXRhOyAgICAgICAgICAgICAgICAgLyogUGxhY2UgaG9sZGVyIGZvciBkYXRhLiAqLworICAgICAgICAgICAgICAgIH0gY2ZzX2lvY3RsOworCisKKworICAgICBvCG91CHV0CHQKKworCisgICAgICAgICAgICAgICAgc3RydWN0IGNmc19pb2N0bF9vdXQgeworICAgICAgICAgICAgICAgICAgICBpbnQgbGVuOworICAgICAgICAgICAgICAgICAgICBjYWRkcl90ICAgICBkYXRhOyAgICAgICAgICAgLyogUGxhY2UgaG9sZGVyIGZvciBkYXRhLiAqLworICAgICAgICAgICAgICAgIH0gY2ZzX2lvY3RsOworCisKKworICBECERlCGVzCHNjCGNyCHJpCGlwCHB0CHRpCGlvCG9uCG4gRG8gYW4gaW9jdGwgb3BlcmF0aW9uIG9uIGEgZmlsZS4gIFRoZSBjb21tYW5kLCBsZW4gYW5kCisgIGRhdGEgYXJndW1lbnRzIGFyZSBmaWxsZWQgYXMgdXN1YWwuICBmbGFncyBpcyBub3QgdXNlZCBieSBWZW51cy4KKworICBFCEVyCHJyCHJvCG9yCHJzCHMKKworICBOCE5PCE9UCFRFCEUgQW5vdGhlciBib2d1cyBwYXJhbWV0ZXIuICBmbGFncyBpcyBub3QgdXNlZC4gIFdoYXQgaXMgdGhlCisgIGJ1c2luZXNzIGFib3V0IFBSRUZFVENISU5HIGluIHRoZSBWZW51cyBjb2RlPworCisKKyAgMHdwYWdlCisKKyAgNAg0LgguMQgxOAg4LgguICByCHJlCGVuCG5hCGFtCG1lCGUKKworCisgIFMIU3UIdW0IbW0IbWEIYXIIcnkIeSBSZW5hbWUgYSBmaWQuCisKKyAgQQhBcghyZwhndQh1bQhtZQhlbghudAh0cwhzCisKKyAgICAgaQhpbghuCisKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgY2ZzX3JlbmFtZV9pbiB7CisgICAgICAgICAgICAgICAgICAgIFZpY2VGaWQgICAgIHNvdXJjZUZpZDsKKyAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgKnNyY25hbWU7CisgICAgICAgICAgICAgICAgICAgIFZpY2VGaWQgZGVzdEZpZDsKKyAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgKmRlc3RuYW1lOworICAgICAgICAgICAgICAgIH0gY2ZzX3JlbmFtZTsKKworCisKKyAgICAgbwhvdQh1dAh0CisgICAgICAgIG5vbmUKKworICBECERlCGVzCHNjCGNyCHJpCGlwCHB0CHRpCGlvCG9uCG4gIFJlbmFtZSB0aGUgb2JqZWN0IHdpdGggbmFtZSBzcmNuYW1lIGluIGRpcmVjdG9yeQorICBzb3VyY2VGaWQgdG8gZGVzdG5hbWUgaW4gZGVzdEZpZC4gICBJdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGUgbmFtZXMKKyAgc3JjbmFtZSBhbmQgZGVzdG5hbWUgYXJlIDAgdGVybWluYXRlZCBzdHJpbmdzLiAgU3RyaW5ncyBpbiBVbml4CisgIGtlcm5lbHMgYXJlIG5vdCBhbHdheXMgbnVsbCB0ZXJtaW5hdGVkLgorCisgIEUIRXIIcnIIcm8Ib3IIcnMIcworCisgIDB3cGFnZQorCisgIDQINC4ILjEIMTkIOS4ILiAgcghyZQhlYQhhZAhkZAhkaQhpcghyCisKKworICBTCFN1CHVtCG1tCG1hCGFyCHJ5CHkgUmVhZCBkaXJlY3RvcnkgZW50cmllcy4KKworICBBCEFyCHJnCGd1CHVtCG1lCGVuCG50CHRzCHMKKworICAgICBpCGluCG4KKworICAgICAgICAgICAgICAgIHN0cnVjdCBjZnNfcmVhZGRpcl9pbiB7CisgICAgICAgICAgICAgICAgICAgIFZpY2VGaWQgICAgIFZGaWQ7CisgICAgICAgICAgICAgICAgICAgIGludCBjb3VudDsKKyAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldDsKKyAgICAgICAgICAgICAgICB9IGNmc19yZWFkZGlyOworCisKKworCisgICAgIG8Ib3UIdXQIdAorCisgICAgICAgICAgICAgICAgc3RydWN0IGNmc19yZWFkZGlyX291dCB7CisgICAgICAgICAgICAgICAgICAgIGludCBzaXplOworICAgICAgICAgICAgICAgICAgICBjYWRkcl90ICAgICBkYXRhOyAgICAgICAgICAgLyogUGxhY2UgaG9sZGVyIGZvciBkYXRhLiAqLworICAgICAgICAgICAgICAgIH0gY2ZzX3JlYWRkaXI7CisKKworCisgIEQIRGUIZXMIc2MIY3IIcmkIaXAIcHQIdGkIaW8Ib24IbiBSZWFkIGRpcmVjdG9yeSBlbnRyaWVzIGZyb20gVkZpZCBzdGFydGluZyBhdCBvZmZzZXQgYW5kCisgIHJlYWQgYXQgbW9zdCBjb3VudCBieXRlcy4gIFJldHVybnMgdGhlIGRhdGEgaW4gZGF0YSBhbmQgcmV0dXJucworICB0aGUgc2l6ZSBpbiBzaXplLgorCisgIEUIRXIIcnIIcm8Ib3IIcnMIcworCisgIE4ITk8IT1QIVEUIRSBUaGlzIGNhbGwgaXMgbm90IHVzZWQuICBSZWFkZGlyIG9wZXJhdGlvbnMgZXhwbG9pdCBjb250YWluZXIKKyAgZmlsZXMuICBXZSB3aWxsIHJlLWV2YWx1YXRlIHRoaXMgZHVyaW5nIHRoZSBkaXJlY3RvcnkgcmV2YW1wIHdoaWNoIGlzCisgIGFib3V0IHRvIHRha2UgcGxhY2UuCisKKyAgMHdwYWdlCisKKyAgNAg0LgguMggyMAgwLgguICB2CHZnCGdlCGV0CHQKKworCisgIFMIU3UIdW0IbW0IbWEIYXIIcnkIeSBpbnN0cnVjdHMgVmVudXMgdG8gZG8gYW4gRlNEQi0+R2V0LgorCisgIEEIQXIIcmcIZ3UIdW0IbWUIZW4IbnQIdHMIcworCisgICAgIGkIaW4IbgorCisgICAgICAgICAgICAgICAgc3RydWN0IGNmc192Z2V0X2luIHsKKyAgICAgICAgICAgICAgICAgICAgVmljZUZpZCBWRmlkOworICAgICAgICAgICAgICAgIH0gY2ZzX3ZnZXQ7CisKKworCisgICAgIG8Ib3UIdXQIdAorCisgICAgICAgICAgICAgICAgc3RydWN0IGNmc192Z2V0X291dCB7CisgICAgICAgICAgICAgICAgICAgIFZpY2VGaWQgVkZpZDsKKyAgICAgICAgICAgICAgICAgICAgaW50IHZ0eXBlOworICAgICAgICAgICAgICAgIH0gY2ZzX3ZnZXQ7CisKKworCisgIEQIRGUIZXMIc2MIY3IIcmkIaXAIcHQIdGkIaW8Ib24IbiBUaGlzIHVwY2FsbCBhc2tzIFZlbnVzIHRvIGRvIGEgZ2V0IG9wZXJhdGlvbiBvbiBhbiBmc29iagorICBsYWJlbGxlZCBieSBWRmlkLgorCisgIEUIRXIIcnIIcm8Ib3IIcnMIcworCisgIE4ITk8IT1QIVEUIRSBUaGlzIG9wZXJhdGlvbiBpcyBub3QgdXNlZC4gIEhvd2V2ZXIsIGl0IGlzIGV4dHJlbWVseSB1c2VmdWwKKyAgc2luY2UgaXQgY2FuIGJlIHVzZWQgdG8gZGVhbCB3aXRoIHJlYWQvd3JpdGUgbWVtb3J5IG1hcHBlZCBmaWxlcy4KKyAgVGhlc2UgY2FuIGJlICJwaW5uZWQiIGluIHRoZSBWZW51cyBjYWNoZSB1c2luZyB2Z2V0IGFuZCByZWxlYXNlZCB3aXRoCisgIGluYWN0aXZlLgorCisgIDB3cGFnZQorCisgIDQINC4ILjIIMjEIMS4ILiAgZghmcwhzeQh5bghuYwhjCisKKworICBTCFN1CHVtCG1tCG1hCGFyCHJ5CHkgVGVsbCBWZW51cyB0byB1cGRhdGUgdGhlIFJWTSBhdHRyaWJ1dGVzIG9mIGEgZmlsZS4KKworICBBCEFyCHJnCGd1CHVtCG1lCGVuCG50CHRzCHMKKworICAgICBpCGluCG4KKworICAgICAgICAgICAgICAgIHN0cnVjdCBjZnNfZnN5bmNfaW4geworICAgICAgICAgICAgICAgICAgICBWaWNlRmlkIFZGaWQ7CisgICAgICAgICAgICAgICAgfSBjZnNfZnN5bmM7CisKKworCisgICAgIG8Ib3UIdXQIdAorICAgICAgICBub25lCisKKyAgRAhEZQhlcwhzYwhjcghyaQhpcAhwdAh0aQhpbwhvbghuIEFzayBWZW51cyB0byB1cGRhdGUgUlZNIGF0dHJpYnV0ZXMgb2Ygb2JqZWN0IFZGaWQuIFRoaXMKKyAgc2hvdWxkIGJlIGNhbGxlZCBhcyBwYXJ0IG9mIGtlcm5lbCBsZXZlbCBmc3luYyB0eXBlIGNhbGxzLiAgVGhlCisgIHJlc3VsdCBpbmRpY2F0ZXMgaWYgdGhlIHN5bmNpbmcgd2FzIHN1Y2Nlc3NmdWwuCisKKyAgRQhFcghycghybwhvcghycwhzCisKKyAgTghOTwhPVAhURQhFIExpbnV4IGRvZXMgbm90IGltcGxlbWVudCB0aGlzIGNhbGwuIEl0IHNob3VsZC4KKworICAwd3BhZ2UKKworICA0CDQuCC4yCDIyCDIuCC4gIGkIaW4IbmEIYWMIY3QIdGkIaXYIdmUIZQorCisKKyAgUwhTdQh1bQhtbQhtYQhhcghyeQh5IFRlbGwgVmVudXMgYSB2bm9kZSBpcyBubyBsb25nZXIgaW4gdXNlLgorCisgIEEIQXIIcmcIZ3UIdW0IbWUIZW4IbnQIdHMIcworCisgICAgIGkIaW4IbgorCisgICAgICAgICAgICAgICAgc3RydWN0IGNmc19pbmFjdGl2ZV9pbiB7CisgICAgICAgICAgICAgICAgICAgIFZpY2VGaWQgVkZpZDsKKyAgICAgICAgICAgICAgICB9IGNmc19pbmFjdGl2ZTsKKworCisKKyAgICAgbwhvdQh1dAh0CisgICAgICAgIG5vbmUKKworICBECERlCGVzCHNjCGNyCHJpCGlwCHB0CHRpCGlvCG9uCG4gVGhpcyBvcGVyYXRpb24gcmV0dXJucyBFT1BOT1RTVVBQLgorCisgIEUIRXIIcnIIcm8Ib3IIcnMIcworCisgIE4ITk8IT1QIVEUIRSBUaGlzIHNob3VsZCBwZXJoYXBzIGJlIHJlbW92ZWQuCisKKyAgMHdwYWdlCisKKyAgNAg0LgguMggyMwgzLgguICByCHJkCGR3CHdyCHIKKworCisgIFMIU3UIdW0IbW0IbWEIYXIIcnkIeSBSZWFkIG9yIHdyaXRlIGZyb20gYSBmaWxlCisKKyAgQQhBcghyZwhndQh1bQhtZQhlbghudAh0cwhzCisKKyAgICAgaQhpbghuCisKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgY2ZzX3Jkd3JfaW4geworICAgICAgICAgICAgICAgICAgICBWaWNlRmlkICAgICBWRmlkOworICAgICAgICAgICAgICAgICAgICBpbnQgcndmbGFnOworICAgICAgICAgICAgICAgICAgICBpbnQgY291bnQ7CisgICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIGludCBpb2ZsYWc7CisgICAgICAgICAgICAgICAgICAgIGNhZGRyX3QgICAgIGRhdGE7ICAgICAgICAgICAvKiBQbGFjZSBob2xkZXIgZm9yIGRhdGEuICovCisgICAgICAgICAgICAgICAgfSBjZnNfcmR3cjsKKworCisKKworICAgICBvCG91CHV0CHQKKworICAgICAgICAgICAgICAgIHN0cnVjdCBjZnNfcmR3cl9vdXQgeworICAgICAgICAgICAgICAgICAgICBpbnQgcndmbGFnOworICAgICAgICAgICAgICAgICAgICBpbnQgY291bnQ7CisgICAgICAgICAgICAgICAgICAgIGNhZGRyX3QgICAgIGRhdGE7ICAgLyogUGxhY2UgaG9sZGVyIGZvciBkYXRhLiAqLworICAgICAgICAgICAgICAgIH0gY2ZzX3Jkd3I7CisKKworCisgIEQIRGUIZXMIc2MIY3IIcmkIaXAIcHQIdGkIaW8Ib24IbiBUaGlzIHVwY2FsbCBhc2tzIFZlbnVzIHRvIHJlYWQgb3Igd3JpdGUgZnJvbSBhIGZpbGUuCisKKyAgRQhFcghycghybwhvcghycwhzCisKKyAgTghOTwhPVAhURQhFIEl0IHNob3VsZCBiZSByZW1vdmVkIHNpbmNlIGl0IGlzIGFnYWluc3QgdGhlIENvZGEgcGhpbG9zb3BoeSB0aGF0CisgIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBuZXZlciByZWFjaCBWZW51cy4gIEkgaGF2ZSBiZWVuIHRvbGQgdGhlCisgIG9wZXJhdGlvbiBkb2VzIG5vdCB3b3JrLiAgSXQgaXMgbm90IGN1cnJlbnRseSB1c2VkLgorCisKKyAgMHdwYWdlCisKKyAgNAg0LgguMggyNAg0LgguICBvCG9kCGR5CHltCG1vCG91CHVuCG50CHQKKworCisgIFMIU3UIdW0IbW0IbWEIYXIIcnkIeSBBbGxvd3MgbW91bnRpbmcgbXVsdGlwbGUgQ29kYSAiZmlsZXN5c3RlbXMiIG9uIG9uZSBVbml4IG1vdW50CisgIHBvaW50LgorCisgIEEIQXIIcmcIZ3UIdW0IbWUIZW4IbnQIdHMIcworCisgICAgIGkIaW4IbgorCisgICAgICAgICAgICAgICAgc3RydWN0IG9keV9tb3VudF9pbiB7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICpuYW1lOyAgICAgICAgICAvKiBQbGFjZSBob2xkZXIgZm9yIGRhdGEuICovCisgICAgICAgICAgICAgICAgfSBvZHlfbW91bnQ7CisKKworCisgICAgIG8Ib3UIdXQIdAorCisgICAgICAgICAgICAgICAgc3RydWN0IG9keV9tb3VudF9vdXQgeworICAgICAgICAgICAgICAgICAgICBWaWNlRmlkIFZGaWQ7CisgICAgICAgICAgICAgICAgfSBvZHlfbW91bnQ7CisKKworCisgIEQIRGUIZXMIc2MIY3IIcmkIaXAIcHQIdGkIaW8Ib24IbiAgQXNrcyBWZW51cyB0byByZXR1cm4gdGhlIHJvb3RmaWQgb2YgYSBDb2RhIHN5c3RlbSBuYW1lZAorICBuYW1lLiAgVGhlIGZpZCBpcyByZXR1cm5lZCBpbiBWRmlkLgorCisgIEUIRXIIcnIIcm8Ib3IIcnMIcworCisgIE4ITk8IT1QIVEUIRSBUaGlzIGNhbGwgd2FzIHVzZWQgYnkgRGF2aWQgZm9yIGR5bmFtaWMgc2V0cy4gIEl0IHNob3VsZCBiZQorICByZW1vdmVkIHNpbmNlIGl0IGNhdXNlcyBhIGp1bmdsZSBvZiBwb2ludGVycyBpbiB0aGUgVkZTIG1vdW50aW5nIGFyZWEuCisgIEl0IGlzIG5vdCB1c2VkIGJ5IENvZGEgcHJvcGVyLiAgQ2FsbCBpcyBub3QgaW1wbGVtZW50ZWQgYnkgVmVudXMuCisKKyAgMHdwYWdlCisKKyAgNAg0LgguMggyNQg1LgguICBvCG9kCGR5CHlfCF9sCGxvCG9vCG9rCGt1CHVwCHAKKworCisgIFMIU3UIdW0IbW0IbWEIYXIIcnkIeSBMb29rcyB1cCBzb21ldGhpbmcuCisKKyAgQQhBcghyZwhndQh1bQhtZQhlbghudAh0cwhzCisKKyAgICAgaQhpbghuIGlycmVsZXZhbnQKKworCisgICAgIG8Ib3UIdXQIdAorICAgICAgICBpcnJlbGV2YW50CisKKyAgRAhEZQhlcwhzYwhjcghyaQhpcAhwdAh0aQhpbwhvbghuCisKKyAgRQhFcghycghybwhvcghycwhzCisKKyAgTghOTwhPVAhURQhFIEd1dCBpdC4gQ2FsbCBpcyBub3QgaW1wbGVtZW50ZWQgYnkgVmVudXMuCisKKyAgMHdwYWdlCisKKyAgNAg0LgguMggyNgg2LgguICBvCG9kCGR5CHlfCF9lCGV4CHhwCHBhCGFuCG5kCGQKKworCisgIFMIU3UIdW0IbW0IbWEIYXIIcnkIeSBleHBhbmRzIHNvbWV0aGluZyBpbiBhIGR5bmFtaWMgc2V0LgorCisgIEEIQXIIcmcIZ3UIdW0IbWUIZW4IbnQIdHMIcworCisgICAgIGkIaW4IbiBpcnJlbGV2YW50CisKKyAgICAgbwhvdQh1dAh0CisgICAgICAgIGlycmVsZXZhbnQKKworICBECERlCGVzCHNjCGNyCHJpCGlwCHB0CHRpCGlvCG9uCG4KKworICBFCEVyCHJyCHJvCG9yCHJzCHMKKworICBOCE5PCE9UCFRFCEUgR3V0IGl0LiAgQ2FsbCBpcyBub3QgaW1wbGVtZW50ZWQgYnkgVmVudXMuCisKKyAgMHdwYWdlCisKKyAgNAg0LgguMggyNwg3LgguICBwCHByCHJlCGVmCGZlCGV0CHRjCGNoCGgKKworCisgIFMIU3UIdW0IbW0IbWEIYXIIcnkIeSBQcmVmZXRjaCBhIGR5bmFtaWMgc2V0LgorCisgIEEIQXIIcmcIZ3UIdW0IbWUIZW4IbnQIdHMIcworCisgICAgIGkIaW4IbiBOb3QgZG9jdW1lbnRlZC4KKworICAgICBvCG91CHV0CHQKKyAgICAgICAgTm90IGRvY3VtZW50ZWQuCisKKyAgRAhEZQhlcwhzYwhjcghyaQhpcAhwdAh0aQhpbwhvbghuICBWZW51cyB3b3JrZXIuY2MgaGFzIHN1cHBvcnQgZm9yIHRoaXMgY2FsbCwgYWx0aG91Z2ggaXQgaXMKKyAgbm90ZWQgdGhhdCBpdCBkb2Vzbid0IHdvcmsuICBOb3Qgc3VycHJpc2luZywgc2luY2UgdGhlIGtlcm5lbCBkb2VzIG5vdAorICBoYXZlIHN1cHBvcnQgZm9yIGl0LiAoT0RZX1BSRUZFVENIIGlzIG5vdCBhIGRlZmluZWQgb3BlcmF0aW9uKS4KKworICBFCEVyCHJyCHJvCG9yCHJzCHMKKworICBOCE5PCE9UCFRFCEUgR3V0IGl0LiBJdCBpc24ndCB3b3JraW5nIGFuZCBpc24ndCB1c2VkIGJ5IENvZGEuCisKKworICAwd3BhZ2UKKworICA0CDQuCC4yCDI4CDguCC4gIHMIc2kIaWcIZ24IbmEIYWwIbAorCisKKyAgUwhTdQh1bQhtbQhtYQhhcghyeQh5IFNlbmQgVmVudXMgYSBzaWduYWwgYWJvdXQgYW4gdXBjYWxsLgorCisgIEEIQXIIcmcIZ3UIdW0IbWUIZW4IbnQIdHMIcworCisgICAgIGkIaW4IbiBub25lCisKKyAgICAgbwhvdQh1dAh0CisgICAgICAgIG5vdCBhcHBsaWNhYmxlLgorCisgIEQIRGUIZXMIc2MIY3IIcmkIaXAIcHQIdGkIaW8Ib24IbiAgVGhpcyBpcyBhbiBvdXQtb2YtYmFuZCB1cGNhbGwgdG8gVmVudXMgdG8gaW5mb3JtIFZlbnVzCisgIHRoYXQgdGhlIGNhbGxpbmcgcHJvY2VzcyByZWNlaXZlZCBhIHNpZ25hbCBhZnRlciBWZW51cyByZWFkIHRoZQorICBtZXNzYWdlIGZyb20gdGhlIGlucHV0IHF1ZXVlLiAgVmVudXMgaXMgc3VwcG9zZWQgdG8gY2xlYW4gdXAgdGhlCisgIG9wZXJhdGlvbi4KKworICBFCEVyCHJyCHJvCG9yCHJzCHMgTm8gcmVwbHkgaXMgZ2l2ZW4uCisKKyAgTghOTwhPVAhURQhFIFdlIG5lZWQgdG8gYmV0dGVyIHVuZGVyc3RhbmQgd2hhdCBWZW51cyBuZWVkcyB0byBjbGVhbiB1cCBhbmQgaWYKKyAgaXQgaXMgZG9pbmcgdGhpcyBjb3JyZWN0bHkuICBBbHNvIHdlIG5lZWQgdG8gaGFuZGxlIG11bHRpcGxlIHVwY2FsbAorICBwZXIgc3lzdGVtIGNhbGwgc2l0dWF0aW9ucyBjb3JyZWN0bHkuICBJdCB3b3VsZCBiZSBpbXBvcnRhbnQgdG8ga25vdworICB3aGF0IHN0YXRlIGNoYW5nZXMgaW4gVmVudXMgdGFrZSBwbGFjZSBhZnRlciBhbiB1cGNhbGwgZm9yIHdoaWNoIHRoZQorICBrZXJuZWwgaXMgcmVzcG9uc2libGUgZm9yIG5vdGlmeWluZyBWZW51cyB0byBjbGVhbiB1cCAoZS5nLiBvcGVuCisgIGRlZmluaXRlbHkgaXMgc3VjaCBhIHN0YXRlIGNoYW5nZSwgYnV0IG1hbnkgb3RoZXJzIGFyZSBtYXliZSBub3QpLgorCisgIDB3cGFnZQorCisgIDUINS4ILiAgVAhUaAhoZQhlIG0IbWkIaW4IbmkIaWMIY2EIYWMIY2gIaGUIZSBhCGFuCG5kCGQgZAhkbwhvdwh3bghuYwhjYQhhbAhsbAhscwhzCisKKworICBUaGUgQ29kYSBGUyBEcml2ZXIgY2FuIGNhY2hlIHJlc3VsdHMgb2YgbG9va3VwIGFuZCBhY2Nlc3MgdXBjYWxscywgdG8KKyAgbGltaXQgdGhlIGZyZXF1ZW5jeSBvZiB1cGNhbGxzLiAgVXBjYWxscyBjYXJyeSBhIHByaWNlIHNpbmNlIGEgcHJvY2VzcworICBjb250ZXh0IHN3aXRjaCBuZWVkcyB0byB0YWtlIHBsYWNlLiAgVGhlIGNvdW50ZXJwYXJ0IG9mIGNhY2hpbmcgdGhlCisgIGluZm9ybWF0aW9uIGlzIHRoYXQgVmVudXMgd2lsbCBub3RpZnkgdGhlIEZTIERyaXZlciB0aGF0IGNhY2hlZAorICBlbnRyaWVzIG11c3QgYmUgZmx1c2hlZCBvciByZW5hbWVkLgorCisgIFRoZSBrZXJuZWwgY29kZSBnZW5lcmFsbHkgaGFzIHRvIG1haW50YWluIGEgc3RydWN0dXJlIHdoaWNoIGxpbmtzIHRoZQorICBpbnRlcm5hbCBmaWxlIGhhbmRsZXMgKGNhbGxlZCB2bm9kZXMgaW4gQlNELCBpbm9kZXMgaW4gTGludXggYW5kCisgIEZpbGVIYW5kbGVzIGluIFdpbmRvd3MpIHdpdGggdGhlIFZpY2VGaWQncyB3aGljaCBWZW51cyBtYWludGFpbnMuICBUaGUKKyAgcmVhc29uIGlzIHRoYXQgZnJlcXVlbnQgdHJhbnNsYXRpb25zIGJhY2sgYW5kIGZvcnRoIGFyZSBuZWVkZWQgaW4KKyAgb3JkZXIgdG8gbWFrZSB1cGNhbGxzIGFuZCB1c2UgdGhlIHJlc3VsdHMgb2YgdXBjYWxscy4gIFN1Y2ggbGlua2luZworICBvYmplY3RzIGFyZSBjYWxsZWQgYwhjbghubwhvZAhkZQhlcwhzLgorCisgIFRoZSBjdXJyZW50IG1pbmljYWNoZSBpbXBsZW1lbnRhdGlvbnMgaGF2ZSBjYWNoZSBlbnRyaWVzIHdoaWNoIHJlY29yZAorICB0aGUgZm9sbG93aW5nOgorCisgIDEuIHRoZSBuYW1lIG9mIHRoZSBmaWxlCisKKyAgMi4gdGhlIGNub2RlIG9mIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgb2JqZWN0CisKKyAgMy4gYSBsaXN0IG9mIENvZGFDcmVkJ3MgZm9yIHdoaWNoIHRoZSBsb29rdXAgaXMgcGVybWl0dGVkLgorCisgIDQuIHRoZSBjbm9kZSBvZiB0aGUgb2JqZWN0CisKKyAgVGhlIGxvb2t1cCBjYWxsIGluIHRoZSBDb2RhIEZTIERyaXZlciBtYXkgcmVxdWVzdCB0aGUgY25vZGUgb2YgdGhlCisgIGRlc2lyZWQgb2JqZWN0IGZyb20gdGhlIGNhY2hlLCBieSBwYXNzaW5nIGl0cyBuYW1lLCBkaXJlY3RvcnkgYW5kIHRoZQorICBDb2RhQ3JlZCdzIG9mIHRoZSBjYWxsZXIuICBUaGUgY2FjaGUgd2lsbCByZXR1cm4gdGhlIGNub2RlIG9yIGluZGljYXRlCisgIHRoYXQgaXQgY2Fubm90IGJlIGZvdW5kLiAgVGhlIENvZGEgRlMgRHJpdmVyIG11c3QgYmUgY2FyZWZ1bCB0bworICBpbnZhbGlkYXRlIGNhY2hlIGVudHJpZXMgd2hlbiBpdCBtb2RpZmllcyBvciByZW1vdmVzIG9iamVjdHMuCisKKyAgV2hlbiBWZW51cyBvYnRhaW5zIGluZm9ybWF0aW9uIHRoYXQgaW5kaWNhdGVzIHRoYXQgY2FjaGUgZW50cmllcyBhcmUKKyAgbm8gbG9uZ2VyIHZhbGlkLCBpdCB3aWxsIG1ha2UgYSBkb3duY2FsbCB0byB0aGUga2VybmVsLiAgRG93bmNhbGxzIGFyZQorICBpbnRlcmNlcHRlZCBieSB0aGUgQ29kYSBGUyBEcml2ZXIgYW5kIGxlYWQgdG8gY2FjaGUgaW52YWxpZGF0aW9ucyBvZgorICB0aGUga2luZCBkZXNjcmliZWQgYmVsb3cuICBUaGUgQ29kYSBGUyBEcml2ZXIgZG9lcyBub3QgcmV0dXJuIGFuIGVycm9yCisgIHVubGVzcyB0aGUgZG93bmNhbGwgZGF0YSBjb3VsZCBub3QgYmUgcmVhZCBpbnRvIGtlcm5lbCBtZW1vcnkuCisKKworICA1CDUuCC4xCDEuCC4gIEkISU4ITlYIVkEIQUwITEkISUQIREEIQVQIVEUIRQorCisKKyAgTm8gaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIG9uIHRoaXMgY2FsbC4KKworCisgIDUINS4ILjIIMi4ILiAgRghGTAhMVQhVUwhTSAhICisKKworCisgIEEIQXIIcmcIZ3UIdW0IbWUIZW4IbnQIdHMIcyBOb25lCisKKyAgUwhTdQh1bQhtbQhtYQhhcghyeQh5IEZsdXNoIHRoZSBuYW1lIGNhY2hlIGVudGlyZWx5LgorCisgIEQIRGUIZXMIc2MIY3IIcmkIaXAIcHQIdGkIaW8Ib24IbiBWZW51cyBpc3N1ZXMgdGhpcyBjYWxsIHVwb24gc3RhcnR1cCBhbmQgd2hlbiBpdCBkaWVzLiBUaGlzCisgIGlzIHRvIHByZXZlbnQgc3RhbGUgY2FjaGUgaW5mb3JtYXRpb24gYmVpbmcgaGVsZC4gIFNvbWUgb3BlcmF0aW5nCisgIHN5c3RlbXMgYWxsb3cgdGhlIGtlcm5lbCBuYW1lIGNhY2hlIHRvIGJlIHN3aXRjaGVkIG9mZiBkeW5hbWljYWxseS4KKyAgV2hlbiB0aGlzIGlzIGRvbmUsIHRoaXMgZG93bmNhbGwgaXMgbWFkZS4KKworCisgIDUINS4ILjMIMy4ILiAgUAhQVQhVUghSRwhHRQhFVQhVUwhTRQhFUghSCisKKworICBBCEFyCHJnCGd1CHVtCG1lCGVuCG50CHRzCHMKKworICAgICAgICAgIHN0cnVjdCBjZnNfcHVyZ2V1c2VyX291dCB7LyogQ0ZTX1BVUkdFVVNFUiBpcyBhIHZlbnVzLT5rZXJuZWwgY2FsbCAqLworICAgICAgICAgICAgICBzdHJ1Y3QgQ29kYUNyZWQgY3JlZDsKKyAgICAgICAgICB9IGNmc19wdXJnZXVzZXI7CisKKworCisgIEQIRGUIZXMIc2MIY3IIcmkIaXAIcHQIdGkIaW8Ib24IbiBSZW1vdmUgYWxsIGVudHJpZXMgaW4gdGhlIGNhY2hlIGNhcnJ5aW5nIHRoZSBDcmVkLiAgVGhpcworICBjYWxsIGlzIGlzc3VlZCB3aGVuIHRva2VucyBmb3IgYSB1c2VyIGV4cGlyZSBvciBhcmUgZmx1c2hlZC4KKworCisgIDUINS4ILjQINC4ILiAgWghaQQhBUAhQRghGSQhJTAhMRQhFCisKKworICBBCEFyCHJnCGd1CHVtCG1lCGVuCG50CHRzCHMKKworICAgICAgICAgIHN0cnVjdCBjZnNfemFwZmlsZV9vdXQgeyAgLyogQ0ZTX1pBUEZJTEUgaXMgYSB2ZW51cy0+a2VybmVsIGNhbGwgKi8KKyAgICAgICAgICAgICAgVmljZUZpZCBDb2RhRmlkOworICAgICAgICAgIH0gY2ZzX3phcGZpbGU7CisKKworCisgIEQIRGUIZXMIc2MIY3IIcmkIaXAIcHQIdGkIaW8Ib24IbiBSZW1vdmUgYWxsIGVudHJpZXMgd2hpY2ggaGF2ZSB0aGUgKGRpciB2bm9kZSwgbmFtZSkgcGFpci4KKyAgVGhpcyBpcyBpc3N1ZWQgYXMgYSByZXN1bHQgb2YgYW4gaW52YWxpZGF0aW9uIG9mIGNhY2hlZCBhdHRyaWJ1dGVzIG9mCisgIGEgdm5vZGUuCisKKyAgTghOTwhPVAhURQhFIENhbGwgaXMgbm90IG5hbWVkIGNvcnJlY3RseSBpbiBOZXRCU0QgYW5kIE1hY2guICBUaGUgbWluaWNhY2hlCisgIHphcGZpbGUgcm91dGluZSB0YWtlcyBkaWZmZXJlbnQgYXJndW1lbnRzLiBMaW51eCBkb2VzIG5vdCBpbXBsZW1lbnQKKyAgdGhlIGludmFsaWRhdGlvbiBvZiBhdHRyaWJ1dGVzIGNvcnJlY3RseS4KKworCisKKyAgNQg1LgguNQg1LgguICBaCFpBCEFQCFBECERJCElSCFIKKworCisgIEEIQXIIcmcIZ3UIdW0IbWUIZW4IbnQIdHMIcworCisgICAgICAgICAgc3RydWN0IGNmc196YXBkaXJfb3V0IHsgICAvKiBDRlNfWkFQRElSIGlzIGEgdmVudXMtPmtlcm5lbCBjYWxsICovCisgICAgICAgICAgICAgIFZpY2VGaWQgQ29kYUZpZDsKKyAgICAgICAgICB9IGNmc196YXBkaXI7CisKKworCisgIEQIRGUIZXMIc2MIY3IIcmkIaXAIcHQIdGkIaW8Ib24IbiBSZW1vdmUgYWxsIGVudHJpZXMgaW4gdGhlIGNhY2hlIGx5aW5nIGluIGEgZGlyZWN0b3J5CisgIENvZGFGaWQsIGFuZCBhbGwgY2hpbGRyZW4gb2YgdGhpcyBkaXJlY3RvcnkuIFRoaXMgY2FsbCBpcyBpc3N1ZWQgd2hlbgorICBWZW51cyByZWNlaXZlcyBhIGNhbGxiYWNrIG9uIHRoZSBkaXJlY3RvcnkuCisKKworICA1CDUuCC42CDYuCC4gIFoIWkEIQVAIUFYIVk4ITk8IT0QIREUIRQorCisKKworICBBCEFyCHJnCGd1CHVtCG1lCGVuCG50CHRzCHMKKworICAgICAgICAgIHN0cnVjdCBjZnNfemFwdm5vZGVfb3V0IHsgLyogQ0ZTX1pBUFZOT0RFIGlzIGEgdmVudXMtPmtlcm5lbCBjYWxsICovCisgICAgICAgICAgICAgIHN0cnVjdCBDb2RhQ3JlZCBjcmVkOworICAgICAgICAgICAgICBWaWNlRmlkIFZGaWQ7CisgICAgICAgICAgfSBjZnNfemFwdm5vZGU7CisKKworCisgIEQIRGUIZXMIc2MIY3IIcmkIaXAIcHQIdGkIaW8Ib24IbiBSZW1vdmUgYWxsIGVudHJpZXMgaW4gdGhlIGNhY2hlIGNhcnJ5aW5nIHRoZSBjcmVkIGFuZCBWRmlkCisgIGFzIGluIHRoZSBhcmd1bWVudHMuIFRoaXMgZG93bmNhbGwgaXMgcHJvYmFibHkgbmV2ZXIgaXNzdWVkLgorCisKKyAgNQg1LgguNwg3LgguICBQCFBVCFVSCFJHCEdFCEVGCEZJCElECEQKKworCisgIFMIU3UIdW0IbW0IbWEIYXIIcnkIeQorCisgIEEIQXIIcmcIZ3UIdW0IbWUIZW4IbnQIdHMIcworCisgICAgICAgICAgc3RydWN0IGNmc19wdXJnZWZpZF9vdXQgeyAvKiBDRlNfUFVSR0VGSUQgaXMgYSB2ZW51cy0+a2VybmVsIGNhbGwgKi8KKyAgICAgICAgICAgICAgVmljZUZpZCBDb2RhRmlkOworICAgICAgICAgIH0gY2ZzX3B1cmdlZmlkOworCisKKworICBECERlCGVzCHNjCGNyCHJpCGlwCHB0CHRpCGlvCG9uCG4gRmx1c2ggdGhlIGF0dHJpYnV0ZSBmb3IgdGhlIGZpbGUuIElmIGl0IGlzIGEgZGlyIChvZGQKKyAgdm5vZGUpLCBwdXJnZSBpdHMgY2hpbGRyZW4gZnJvbSB0aGUgbmFtZWNhY2hlIGFuZCByZW1vdmUgdGhlIGZpbGUgZnJvbSB0aGUKKyAgbmFtZWNhY2hlLgorCisKKworICA1CDUuCC44CDguCC4gIFIIUkUIRVAIUEwITEEIQUMIQ0UIRQorCisKKyAgUwhTdQh1bQhtbQhtYQhhcghyeQh5IFJlcGxhY2UgdGhlIEZpZCdzIGZvciBhIGNvbGxlY3Rpb24gb2YgbmFtZXMuCisKKyAgQQhBcghyZwhndQh1bQhtZQhlbghudAh0cwhzCisKKyAgICAgICAgICBzdHJ1Y3QgY2ZzX3JlcGxhY2Vfb3V0IHsgLyogY2ZzX3JlcGxhY2UgaXMgYSB2ZW51cy0+a2VybmVsIGNhbGwgKi8KKyAgICAgICAgICAgICAgVmljZUZpZCBOZXdGaWQ7CisgICAgICAgICAgICAgIFZpY2VGaWQgT2xkRmlkOworICAgICAgICAgIH0gY2ZzX3JlcGxhY2U7CisKKworCisgIEQIRGUIZXMIc2MIY3IIcmkIaXAIcHQIdGkIaW8Ib24IbiBUaGlzIHJvdXRpbmUgcmVwbGFjZXMgYSBWaWNlRmlkIGluIHRoZSBuYW1lIGNhY2hlIHdpdGgKKyAgYW5vdGhlci4gIEl0IGlzIGFkZGVkIHRvIGFsbG93IFZlbnVzIGR1cmluZyByZWludGVncmF0aW9uIHRvIHJlcGxhY2UKKyAgbG9jYWxseSBhbGxvY2F0ZWQgdGVtcCBmaWRzIHdoaWxlIGRpc2Nvbm5lY3RlZCB3aXRoIGdsb2JhbCBmaWRzIGV2ZW4KKyAgd2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50cyBvbiB0aG9zZSBmaWRzIGFyZSBub3QgemVyby4KKworICAwd3BhZ2UKKworICA2CDYuCC4gIEkISW4IbmkIaXQIdGkIaWEIYWwIbGkIaXoIemEIYXQIdGkIaW8Ib24IbiBhCGFuCG5kCGQgYwhjbAhsZQhlYQhhbghudQh1cAhwCisKKworICBUaGlzIHNlY3Rpb24gZ2l2ZXMgYnJpZWYgaGludHMgYXMgdG8gZGVzaXJhYmxlIGZlYXR1cmVzIGZvciB0aGUgQ29kYQorICBGUyBEcml2ZXIgYXQgc3RhcnR1cCBhbmQgdXBvbiBzaHV0ZG93biBvciBWZW51cyBmYWlsdXJlcy4gIEJlZm9yZQorICBlbnRlcmluZyB0aGUgZGlzY3Vzc2lvbiBpdCBpcyB1c2VmdWwgdG8gcmVwZWF0IHRoYXQgdGhlIENvZGEgRlMgRHJpdmVyCisgIG1haW50YWlucyB0aGUgZm9sbG93aW5nIGRhdGE6CisKKworICAxLiBtZXNzYWdlIHF1ZXVlcworCisgIDIuIGNub2RlcworCisgIDMuIG5hbWUgY2FjaGUgZW50cmllcworCisgICAgIFRoZSBuYW1lIGNhY2hlIGVudHJpZXMgYXJlIGVudGlyZWx5IHByaXZhdGUgdG8gdGhlIGRyaXZlciwgc28gdGhleQorICAgICBjYW4gZWFzaWx5IGJlIG1hbmlwdWxhdGVkLiAgIFRoZSBtZXNzYWdlIHF1ZXVlcyB3aWxsIGdlbmVyYWxseSBoYXZlCisgICAgIGNsZWFyIHBvaW50cyBvZiBpbml0aWFsaXphdGlvbiBhbmQgZGVzdHJ1Y3Rpb24uICBUaGUgY25vZGVzIGFyZQorICAgICBtdWNoIG1vcmUgZGVsaWNhdGUuICBVc2VyIHByb2Nlc3NlcyBob2xkIHJlZmVyZW5jZSBjb3VudHMgaW4gQ29kYQorICAgICBmaWxlc3lzdGVtcyBhbmQgaXQgY2FuIGJlIGRpZmZpY3VsdCB0byBjbGVhbiB1cCB0aGUgY25vZGVzLgorCisgIEl0IGNhbiBleHBlY3QgcmVxdWVzdHMgdGhyb3VnaDoKKworICAxLiB0aGUgbWVzc2FnZSBzdWJzeXN0ZW0KKworICAyLiB0aGUgVkZTIGxheWVyCisKKyAgMy4gcGlvY3RsIGludGVyZmFjZQorCisgICAgIEN1cnJlbnRseSB0aGUgXwhwXwhpXwhvXwhjXwh0XwhsIHBhc3NlcyB0aHJvdWdoIHRoZSBWRlMgZm9yIENvZGEgc28gd2UgY2FuCisgICAgIHRyZWF0IHRoZXNlIHNpbWlsYXJseS4KKworCisgIDYINi4ILjEIMS4ILiAgUghSZQhlcQhxdQh1aQhpcghyZQhlbQhtZQhlbghudAh0cwhzCisKKworICBUaGUgZm9sbG93aW5nIHJlcXVpcmVtZW50cyBzaG91bGQgYmUgYWNjb21tb2RhdGVkOgorCisgIDEuIFRoZSBtZXNzYWdlIHF1ZXVlcyBzaG91bGQgaGF2ZSBvcGVuIGFuZCBjbG9zZSByb3V0aW5lcy4gIE9uIFVuaXgKKyAgICAgdGhlIG9wZW5pbmcgb2YgdGhlIGNoYXJhY3RlciBkZXZpY2VzIGFyZSBzdWNoIHJvdXRpbmVzLgorCisgICsIbyAgQmVmb3JlIG9wZW5pbmcsIG5vIG1lc3NhZ2VzIGNhbiBiZSBwbGFjZWQuCisKKyAgKwhvICBPcGVuaW5nIHdpbGwgcmVtb3ZlIGFueSBvbGQgbWVzc2FnZXMgc3RpbGwgcGVuZGluZy4KKworICArCG8gIENsb3NlIHdpbGwgbm90aWZ5IGFueSBzbGVlcGluZyBwcm9jZXNzZXMgdGhhdCB0aGVpciB1cGNhbGwgY2Fubm90CisgICAgIGJlIGNvbXBsZXRlZC4KKworICArCG8gIENsb3NlIHdpbGwgZnJlZSBhbGwgbWVtb3J5IGFsbG9jYXRlZCBieSB0aGUgbWVzc2FnZSBxdWV1ZXMuCisKKworICAyLiBBdCBvcGVuIHRoZSBuYW1lY2FjaGUgc2hhbGwgYmUgaW5pdGlhbGl6ZWQgdG8gZW1wdHkgc3RhdGUuCisKKyAgMy4gQmVmb3JlIHRoZSBtZXNzYWdlIHF1ZXVlcyBhcmUgb3BlbiwgYWxsIFZGUyBvcGVyYXRpb25zIHdpbGwgZmFpbC4KKyAgICAgRm9ydHVuYXRlbHkgdGhpcyBjYW4gYmUgYWNoaWV2ZWQgYnkgbWFraW5nIHN1cmUgdGhhbiBtb3VudGluZyB0aGUKKyAgICAgQ29kYSBmaWxlc3lzdGVtIGNhbm5vdCBzdWNjZWVkIGJlZm9yZSBvcGVuaW5nLgorCisgIDQuIEFmdGVyIGNsb3Npbmcgb2YgdGhlIHF1ZXVlcywgbm8gVkZTIG9wZXJhdGlvbnMgY2FuIHN1Y2NlZWQuICBIZXJlCisgICAgIG9uZSBuZWVkcyB0byBiZSBjYXJlZnVsLCBzaW5jZSBhIGZldyBvcGVyYXRpb25zIChsb29rdXAsCisgICAgIHJlYWQvd3JpdGUsIHJlYWRkaXIpIGNhbiBwcm9jZWVkIHdpdGhvdXQgdXBjYWxscy4gIFRoZXNlIG11c3QgYmUKKyAgICAgZXhwbGljaXRseSBibG9ja2VkLgorCisgIDUuIFVwb24gY2xvc2luZyB0aGUgbmFtZWNhY2hlIHNoYWxsIGJlIGZsdXNoZWQgYW5kIGRpc2FibGVkLgorCisgIDYuIEFsbCBtZW1vcnkgaGVsZCBieSBjbm9kZXMgY2FuIGJlIGZyZWVkIHdpdGhvdXQgcmVseWluZyBvbiB1cGNhbGxzLgorCisgIDcuIFVubW91bnRpbmcgdGhlIGZpbGUgc3lzdGVtIGNhbiBiZSBkb25lIHdpdGhvdXQgcmVseWluZyBvbiB1cGNhbGxzLgorCisgIDguIE1vdW50aW5nIHRoZSBDb2RhIGZpbGVzeXN0ZW0gc2hvdWxkIGZhaWwgZ3JhY2VmdWxseSBpZiBWZW51cyBjYW5ub3QKKyAgICAgZ2V0IHRoZSByb290ZmlkIG9yIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSByb290ZmlkLiAgVGhlIGxhdHRlciBpcworICAgICBiZXN0IGltcGxlbWVudGVkIGJ5IFZlbnVzIGZldGNoaW5nIHRoZXNlIG9iamVjdHMgYmVmb3JlIGF0dGVtcHRpbmcKKyAgICAgdG8gbW91bnQuCisKKyAgTghOTwhPVAhURQhFICBOZXRCU0QgaW4gcGFydGljdWxhciBidXQgYWxzbyBMaW51eCBoYXZlIG5vdCBpbXBsZW1lbnRlZCB0aGUKKyAgYWJvdmUgcmVxdWlyZW1lbnRzIGZ1bGx5LiAgRm9yIHNtb290aCBvcGVyYXRpb24gdGhpcyBuZWVkcyB0byBiZQorICBjb3JyZWN0ZWQuCisKKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NvbmZpZ2ZzL2NvbmZpZ2ZzLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY29uZmlnZnMvY29uZmlnZnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNjhlZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NvbmZpZ2ZzL2NvbmZpZ2ZzLnR4dApAQCAtMCwwICsxLDQ2OCBAQAorCitjb25maWdmcyAtIFVzZXJzcGFjZS1kcml2ZW4ga2VybmVsIG9iamVjdCBjb25maWd1cmF0aW9uLgorCitKb2VsIEJlY2tlciA8am9lbC5iZWNrZXJAb3JhY2xlLmNvbT4KKworVXBkYXRlZDogMzEgTWFyY2ggMjAwNQorCitDb3B5cmlnaHQgKGMpIDIwMDUgT3JhY2xlIENvcnBvcmF0aW9uLAorCUpvZWwgQmVja2VyIDxqb2VsLmJlY2tlckBvcmFjbGUuY29tPgorCisKK1tXaGF0IGlzIGNvbmZpZ2ZzP10KKworY29uZmlnZnMgaXMgYSByYW0tYmFzZWQgZmlsZXN5c3RlbSB0aGF0IHByb3ZpZGVzIHRoZSBjb252ZXJzZSBvZgorc3lzZnMncyBmdW5jdGlvbmFsaXR5LiAgV2hlcmUgc3lzZnMgaXMgYSBmaWxlc3lzdGVtLWJhc2VkIHZpZXcgb2YKK2tlcm5lbCBvYmplY3RzLCBjb25maWdmcyBpcyBhIGZpbGVzeXN0ZW0tYmFzZWQgbWFuYWdlciBvZiBrZXJuZWwKK29iamVjdHMsIG9yIGNvbmZpZ19pdGVtcy4KKworV2l0aCBzeXNmcywgYW4gb2JqZWN0IGlzIGNyZWF0ZWQgaW4ga2VybmVsIChmb3IgZXhhbXBsZSwgd2hlbiBhIGRldmljZQoraXMgZGlzY292ZXJlZCkgYW5kIGl0IGlzIHJlZ2lzdGVyZWQgd2l0aCBzeXNmcy4gIEl0cyBhdHRyaWJ1dGVzIHRoZW4KK2FwcGVhciBpbiBzeXNmcywgYWxsb3dpbmcgdXNlcnNwYWNlIHRvIHJlYWQgdGhlIGF0dHJpYnV0ZXMgdmlhCityZWFkZGlyKDMpL3JlYWQoMikuICBJdCBtYXkgYWxsb3cgc29tZSBhdHRyaWJ1dGVzIHRvIGJlIG1vZGlmaWVkIHZpYQord3JpdGUoMikuICBUaGUgaW1wb3J0YW50IHBvaW50IGlzIHRoYXQgdGhlIG9iamVjdCBpcyBjcmVhdGVkIGFuZAorZGVzdHJveWVkIGluIGtlcm5lbCwgdGhlIGtlcm5lbCBjb250cm9scyB0aGUgbGlmZWN5Y2xlIG9mIHRoZSBzeXNmcworcmVwcmVzZW50YXRpb24sIGFuZCBzeXNmcyBpcyBtZXJlbHkgYSB3aW5kb3cgb24gYWxsIHRoaXMuCisKK0EgY29uZmlnZnMgY29uZmlnX2l0ZW0gaXMgY3JlYXRlZCB2aWEgYW4gZXhwbGljaXQgdXNlcnNwYWNlIG9wZXJhdGlvbjoKK21rZGlyKDIpLiAgSXQgaXMgZGVzdHJveWVkIHZpYSBybWRpcigyKS4gIFRoZSBhdHRyaWJ1dGVzIGFwcGVhciBhdAorbWtkaXIoMikgdGltZSwgYW5kIGNhbiBiZSByZWFkIG9yIG1vZGlmaWVkIHZpYSByZWFkKDIpIGFuZCB3cml0ZSgyKS4KK0FzIHdpdGggc3lzZnMsIHJlYWRkaXIoMykgcXVlcmllcyB0aGUgbGlzdCBvZiBpdGVtcyBhbmQvb3IgYXR0cmlidXRlcy4KK3N5bWxpbmsoMikgY2FuIGJlIHVzZWQgdG8gZ3JvdXAgaXRlbXMgdG9nZXRoZXIuICBVbmxpa2Ugc3lzZnMsIHRoZQorbGlmZXRpbWUgb2YgdGhlIHJlcHJlc2VudGF0aW9uIGlzIGNvbXBsZXRlbHkgZHJpdmVuIGJ5IHVzZXJzcGFjZS4gIFRoZQora2VybmVsIG1vZHVsZXMgYmFja2luZyB0aGUgaXRlbXMgbXVzdCByZXNwb25kIHRvIHRoaXMuCisKK0JvdGggc3lzZnMgYW5kIGNvbmZpZ2ZzIGNhbiBhbmQgc2hvdWxkIGV4aXN0IHRvZ2V0aGVyIG9uIHRoZSBzYW1lCitzeXN0ZW0uICBPbmUgaXMgbm90IGEgcmVwbGFjZW1lbnQgZm9yIHRoZSBvdGhlci4KKworW1VzaW5nIGNvbmZpZ2ZzXQorCitjb25maWdmcyBjYW4gYmUgY29tcGlsZWQgYXMgYSBtb2R1bGUgb3IgaW50byB0aGUga2VybmVsLiAgWW91IGNhbiBhY2Nlc3MKK2l0IGJ5IGRvaW5nCisKKwltb3VudCAtdCBjb25maWdmcyBub25lIC9jb25maWcKKworVGhlIGNvbmZpZ2ZzIHRyZWUgd2lsbCBiZSBlbXB0eSB1bmxlc3MgY2xpZW50IG1vZHVsZXMgYXJlIGFsc28gbG9hZGVkLgorVGhlc2UgYXJlIG1vZHVsZXMgdGhhdCByZWdpc3RlciB0aGVpciBpdGVtIHR5cGVzIHdpdGggY29uZmlnZnMgYXMKK3N1YnN5c3RlbXMuICBPbmNlIGEgY2xpZW50IHN1YnN5c3RlbSBpcyBsb2FkZWQsIGl0IHdpbGwgYXBwZWFyIGFzIGEKK3N1YmRpcmVjdG9yeSAob3IgbW9yZSB0aGFuIG9uZSkgdW5kZXIgL2NvbmZpZy4gIExpa2Ugc3lzZnMsIHRoZQorY29uZmlnZnMgdHJlZSBpcyBhbHdheXMgdGhlcmUsIHdoZXRoZXIgbW91bnRlZCBvbiAvY29uZmlnIG9yIG5vdC4KKworQW4gaXRlbSBpcyBjcmVhdGVkIHZpYSBta2RpcigyKS4gIFRoZSBpdGVtJ3MgYXR0cmlidXRlcyB3aWxsIGFsc28KK2FwcGVhciBhdCB0aGlzIHRpbWUuICByZWFkZGlyKDMpIGNhbiBkZXRlcm1pbmUgd2hhdCB0aGUgYXR0cmlidXRlcyBhcmUsCityZWFkKDIpIGNhbiBxdWVyeSB0aGVpciBkZWZhdWx0IHZhbHVlcywgYW5kIHdyaXRlKDIpIGNhbiBzdG9yZSBuZXcKK3ZhbHVlcy4gIExpa2Ugc3lzZnMsIGF0dHJpYnV0ZXMgc2hvdWxkIGJlIEFTQ0lJIHRleHQgZmlsZXMsIHByZWZlcmFibHkKK3dpdGggb25seSBvbmUgdmFsdWUgcGVyIGZpbGUuICBUaGUgc2FtZSBlZmZpY2llbmN5IGNhdmVhdHMgZnJvbSBzeXNmcworYXBwbHkuICBEb24ndCBtaXggbW9yZSB0aGFuIG9uZSBhdHRyaWJ1dGUgaW4gb25lIGF0dHJpYnV0ZSBmaWxlLgorCitMaWtlIHN5c2ZzLCBjb25maWdmcyBleHBlY3RzIHdyaXRlKDIpIHRvIHN0b3JlIHRoZSBlbnRpcmUgYnVmZmVyIGF0CitvbmNlLiAgV2hlbiB3cml0aW5nIHRvIGNvbmZpZ2ZzIGF0dHJpYnV0ZXMsIHVzZXJzcGFjZSBwcm9jZXNzZXMgc2hvdWxkCitmaXJzdCByZWFkIHRoZSBlbnRpcmUgZmlsZSwgbW9kaWZ5IHRoZSBwb3J0aW9ucyB0aGV5IHdpc2ggdG8gY2hhbmdlLCBhbmQKK3RoZW4gd3JpdGUgdGhlIGVudGlyZSBidWZmZXIgYmFjay4gIEF0dHJpYnV0ZSBmaWxlcyBoYXZlIGEgbWF4aW11bSBzaXplCitvZiBvbmUgcGFnZSAoUEFHRV9TSVpFLCA0MDk2IG9uIGkzODYpLgorCitXaGVuIGFuIGl0ZW0gbmVlZHMgdG8gYmUgZGVzdHJveWVkLCByZW1vdmUgaXQgd2l0aCBybWRpcigyKS4gIEFuCitpdGVtIGNhbm5vdCBiZSBkZXN0cm95ZWQgaWYgYW55IG90aGVyIGl0ZW0gaGFzIGEgbGluayB0byBpdCAodmlhCitzeW1saW5rKDIpKS4gIExpbmtzIGNhbiBiZSByZW1vdmVkIHZpYSB1bmxpbmsoMikuCisKK1tDb25maWd1cmluZyBGYWtlTkJEOiBhbiBFeGFtcGxlXQorCitJbWFnaW5lIHRoZXJlJ3MgYSBOZXR3b3JrIEJsb2NrIERldmljZSAoTkJEKSBkcml2ZXIgdGhhdCBhbGxvd3MgeW91IHRvCithY2Nlc3MgcmVtb3RlIGJsb2NrIGRldmljZXMuICBDYWxsIGl0IEZha2VOQkQuICBGYWtlTkJEIHVzZXMgY29uZmlnZnMKK2ZvciBpdHMgY29uZmlndXJhdGlvbi4gIE9idmlvdXNseSwgdGhlcmUgd2lsbCBiZSBhIG5pY2UgcHJvZ3JhbSB0aGF0CitzeXNhZG1pbnMgdXNlIHRvIGNvbmZpZ3VyZSBGYWtlTkJELCBidXQgc29tZWhvdyB0aGF0IHByb2dyYW0gaGFzIHRvIHRlbGwKK3RoZSBkcml2ZXIgYWJvdXQgaXQuICBIZXJlJ3Mgd2hlcmUgY29uZmlnZnMgY29tZXMgaW4uCisKK1doZW4gdGhlIEZha2VOQkQgZHJpdmVyIGlzIGxvYWRlZCwgaXQgcmVnaXN0ZXJzIGl0c2VsZiB3aXRoIGNvbmZpZ2ZzLgorcmVhZGRpcigzKSBzZWVzIHRoaXMganVzdCBmaW5lOgorCisJIyBscyAvY29uZmlnCisJZmFrZW5iZAorCitBIGZha2VuYmQgY29ubmVjdGlvbiBjYW4gYmUgY3JlYXRlZCB3aXRoIG1rZGlyKDIpLiAgVGhlIG5hbWUgaXMKK2FyYml0cmFyeSwgYnV0IGxpa2VseSB0aGUgdG9vbCB3aWxsIG1ha2Ugc29tZSB1c2Ugb2YgdGhlIG5hbWUuICBQZXJoYXBzCitpdCBpcyBhIHV1aWQgb3IgYSBkaXNrIG5hbWU6CisKKwkjIG1rZGlyIC9jb25maWcvZmFrZW5iZC9kaXNrMQorCSMgbHMgL2NvbmZpZy9mYWtlbmJkL2Rpc2sxCisJdGFyZ2V0IGRldmljZSBydworCitUaGUgdGFyZ2V0IGF0dHJpYnV0ZSBjb250YWlucyB0aGUgSVAgYWRkcmVzcyBvZiB0aGUgc2VydmVyIEZha2VOQkQgd2lsbAorY29ubmVjdCB0by4gIFRoZSBkZXZpY2UgYXR0cmlidXRlIGlzIHRoZSBkZXZpY2Ugb24gdGhlIHNlcnZlci4KK1ByZWRpY3RhYmx5LCB0aGUgcncgYXR0cmlidXRlIGRldGVybWluZXMgd2hldGhlciB0aGUgY29ubmVjdGlvbiBpcworcmVhZC1vbmx5IG9yIHJlYWQtd3JpdGUuCisKKwkjIGVjaG8gMTAuMC4wLjEgPiAvY29uZmlnL2Zha2VuYmQvZGlzazEvdGFyZ2V0CisJIyBlY2hvIC9kZXYvc2RhMSA+IC9jb25maWcvZmFrZW5iZC9kaXNrMS9kZXZpY2UKKwkjIGVjaG8gMSA+IC9jb25maWcvZmFrZW5iZC9kaXNrMS9ydworCitUaGF0J3MgaXQuICBUaGF0J3MgYWxsIHRoZXJlIGlzLiAgTm93IHRoZSBkZXZpY2UgaXMgY29uZmlndXJlZCwgdmlhIHRoZQorc2hlbGwgbm8gbGVzcy4KKworW0NvZGluZyBXaXRoIGNvbmZpZ2ZzXQorCitFdmVyeSBvYmplY3QgaW4gY29uZmlnZnMgaXMgYSBjb25maWdfaXRlbS4gIEEgY29uZmlnX2l0ZW0gcmVmbGVjdHMgYW4KK29iamVjdCBpbiB0aGUgc3Vic3lzdGVtLiAgSXQgaGFzIGF0dHJpYnV0ZXMgdGhhdCBtYXRjaCB2YWx1ZXMgb24gdGhhdAorb2JqZWN0LiAgY29uZmlnZnMgaGFuZGxlcyB0aGUgZmlsZXN5c3RlbSByZXByZXNlbnRhdGlvbiBvZiB0aGF0IG9iamVjdAorYW5kIGl0cyBhdHRyaWJ1dGVzLCBhbGxvd2luZyB0aGUgc3Vic3lzdGVtIHRvIGlnbm9yZSBhbGwgYnV0IHRoZQorYmFzaWMgc2hvdy9zdG9yZSBpbnRlcmFjdGlvbi4KKworSXRlbXMgYXJlIGNyZWF0ZWQgYW5kIGRlc3Ryb3llZCBpbnNpZGUgYSBjb25maWdfZ3JvdXAuICBBIGdyb3VwIGlzIGEKK2NvbGxlY3Rpb24gb2YgaXRlbXMgdGhhdCBzaGFyZSB0aGUgc2FtZSBhdHRyaWJ1dGVzIGFuZCBvcGVyYXRpb25zLgorSXRlbXMgYXJlIGNyZWF0ZWQgYnkgbWtkaXIoMikgYW5kIHJlbW92ZWQgYnkgcm1kaXIoMiksIGJ1dCBjb25maWdmcworaGFuZGxlcyB0aGF0LiAgVGhlIGdyb3VwIGhhcyBhIHNldCBvZiBvcGVyYXRpb25zIHRvIHBlcmZvcm0gdGhlc2UgdGFza3MKKworQSBzdWJzeXN0ZW0gaXMgdGhlIHRvcCBsZXZlbCBvZiBhIGNsaWVudCBtb2R1bGUuICBEdXJpbmcgaW5pdGlhbGl6YXRpb24sCit0aGUgY2xpZW50IG1vZHVsZSByZWdpc3RlcnMgdGhlIHN1YnN5c3RlbSB3aXRoIGNvbmZpZ2ZzLCB0aGUgc3Vic3lzdGVtCithcHBlYXJzIGFzIGEgZGlyZWN0b3J5IGF0IHRoZSB0b3Agb2YgdGhlIGNvbmZpZ2ZzIGZpbGVzeXN0ZW0uICBBCitzdWJzeXN0ZW0gaXMgYWxzbyBhIGNvbmZpZ19ncm91cCwgYW5kIGNhbiBkbyBldmVyeXRoaW5nIGEgY29uZmlnX2dyb3VwCitjYW4uCisKK1tzdHJ1Y3QgY29uZmlnX2l0ZW1dCisKKwlzdHJ1Y3QgY29uZmlnX2l0ZW0geworCQljaGFyICAgICAgICAgICAgICAgICAgICAqY2lfbmFtZTsKKwkJY2hhciAgICAgICAgICAgICAgICAgICAgY2lfbmFtZWJ1ZltVT0JKX05BTUVfTEVOXTsKKwkJc3RydWN0IGtyZWYgICAgICAgICAgICAgY2lfa3JlZjsKKwkJc3RydWN0IGxpc3RfaGVhZCAgICAgICAgY2lfZW50cnk7CisJCXN0cnVjdCBjb25maWdfaXRlbSAgICAgICpjaV9wYXJlbnQ7CisJCXN0cnVjdCBjb25maWdfZ3JvdXAgICAgICpjaV9ncm91cDsKKwkJc3RydWN0IGNvbmZpZ19pdGVtX3R5cGUgKmNpX3R5cGU7CisJCXN0cnVjdCBkZW50cnkgICAgICAgICAgICpjaV9kZW50cnk7CisJfTsKKworCXZvaWQgY29uZmlnX2l0ZW1faW5pdChzdHJ1Y3QgY29uZmlnX2l0ZW0gKik7CisJdm9pZCBjb25maWdfaXRlbV9pbml0X3R5cGVfbmFtZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKiwKKwkJCQkJY29uc3QgY2hhciAqbmFtZSwKKwkJCQkJc3RydWN0IGNvbmZpZ19pdGVtX3R5cGUgKnR5cGUpOworCXN0cnVjdCBjb25maWdfaXRlbSAqY29uZmlnX2l0ZW1fZ2V0KHN0cnVjdCBjb25maWdfaXRlbSAqKTsKKwl2b2lkIGNvbmZpZ19pdGVtX3B1dChzdHJ1Y3QgY29uZmlnX2l0ZW0gKik7CisKK0dlbmVyYWxseSwgc3RydWN0IGNvbmZpZ19pdGVtIGlzIGVtYmVkZGVkIGluIGEgY29udGFpbmVyIHN0cnVjdHVyZSwgYQorc3RydWN0dXJlIHRoYXQgYWN0dWFsbHkgcmVwcmVzZW50cyB3aGF0IHRoZSBzdWJzeXN0ZW0gaXMgZG9pbmcuICBUaGUKK2NvbmZpZ19pdGVtIHBvcnRpb24gb2YgdGhhdCBzdHJ1Y3R1cmUgaXMgaG93IHRoZSBvYmplY3QgaW50ZXJhY3RzIHdpdGgKK2NvbmZpZ2ZzLgorCitXaGV0aGVyIHN0YXRpY2FsbHkgZGVmaW5lZCBpbiBhIHNvdXJjZSBmaWxlIG9yIGNyZWF0ZWQgYnkgYSBwYXJlbnQKK2NvbmZpZ19ncm91cCwgYSBjb25maWdfaXRlbSBtdXN0IGhhdmUgb25lIG9mIHRoZSBfaW5pdCgpIGZ1bmN0aW9ucworY2FsbGVkIG9uIGl0LiAgVGhpcyBpbml0aWFsaXplcyB0aGUgcmVmZXJlbmNlIGNvdW50IGFuZCBzZXRzIHVwIHRoZQorYXBwcm9wcmlhdGUgZmllbGRzLgorCitBbGwgdXNlcnMgb2YgYSBjb25maWdfaXRlbSBzaG91bGQgaGF2ZSBhIHJlZmVyZW5jZSBvbiBpdCB2aWEKK2NvbmZpZ19pdGVtX2dldCgpLCBhbmQgZHJvcCB0aGUgcmVmZXJlbmNlIHdoZW4gdGhleSBhcmUgZG9uZSB2aWEKK2NvbmZpZ19pdGVtX3B1dCgpLgorCitCeSBpdHNlbGYsIGEgY29uZmlnX2l0ZW0gY2Fubm90IGRvIG11Y2ggbW9yZSB0aGFuIGFwcGVhciBpbiBjb25maWdmcy4KK1VzdWFsbHkgYSBzdWJzeXN0ZW0gd2FudHMgdGhlIGl0ZW0gdG8gZGlzcGxheSBhbmQvb3Igc3RvcmUgYXR0cmlidXRlcywKK2Ftb25nIG90aGVyIHRoaW5ncy4gIEZvciB0aGF0LCBpdCBuZWVkcyBhIHR5cGUuCisKK1tzdHJ1Y3QgY29uZmlnX2l0ZW1fdHlwZV0KKworCXN0cnVjdCBjb25maWdmc19pdGVtX29wZXJhdGlvbnMgeworCQl2b2lkICgqcmVsZWFzZSkoc3RydWN0IGNvbmZpZ19pdGVtICopOworCQlpbnQgKCphbGxvd19saW5rKShzdHJ1Y3QgY29uZmlnX2l0ZW0gKnNyYywKKwkJCQkgIHN0cnVjdCBjb25maWdfaXRlbSAqdGFyZ2V0KTsKKwkJaW50ICgqZHJvcF9saW5rKShzdHJ1Y3QgY29uZmlnX2l0ZW0gKnNyYywKKwkJCQkgc3RydWN0IGNvbmZpZ19pdGVtICp0YXJnZXQpOworCX07CisKKwlzdHJ1Y3QgY29uZmlnX2l0ZW1fdHlwZSB7CisJCXN0cnVjdCBtb2R1bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAqY3Rfb3duZXI7CisJCXN0cnVjdCBjb25maWdmc19pdGVtX29wZXJhdGlvbnMgICAgICAgICAqY3RfaXRlbV9vcHM7CisJCXN0cnVjdCBjb25maWdmc19ncm91cF9vcGVyYXRpb25zICAgICAgICAqY3RfZ3JvdXBfb3BzOworCQlzdHJ1Y3QgY29uZmlnZnNfYXR0cmlidXRlICAgICAgICAgICAgICAgKipjdF9hdHRyczsKKwl9OworCitUaGUgbW9zdCBiYXNpYyBmdW5jdGlvbiBvZiBhIGNvbmZpZ19pdGVtX3R5cGUgaXMgdG8gZGVmaW5lIHdoYXQKK29wZXJhdGlvbnMgY2FuIGJlIHBlcmZvcm1lZCBvbiBhIGNvbmZpZ19pdGVtLiAgQWxsIGl0ZW1zIHRoYXQgaGF2ZSBiZWVuCithbGxvY2F0ZWQgZHluYW1pY2FsbHkgd2lsbCBuZWVkIHRvIHByb3ZpZGUgdGhlIGN0X2l0ZW1fb3BzLT5yZWxlYXNlKCkKK21ldGhvZC4gIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBjb25maWdfaXRlbSdzIHJlZmVyZW5jZSBjb3VudAorcmVhY2hlcyB6ZXJvLgorCitbc3RydWN0IGNvbmZpZ2ZzX2F0dHJpYnV0ZV0KKworCXN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGUgeworCQljaGFyICAgICAgICAgICAgICAgICAgICAqY2FfbmFtZTsKKwkJc3RydWN0IG1vZHVsZSAgICAgICAgICAgKmNhX293bmVyOworCQl1bW9kZV90ICAgICAgICAgICAgICAgICAgY2FfbW9kZTsKKwkJc3NpemVfdCAoKnNob3cpKHN0cnVjdCBjb25maWdfaXRlbSAqLCBjaGFyICopOworCQlzc2l6ZV90ICgqc3RvcmUpKHN0cnVjdCBjb25maWdfaXRlbSAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CisJfTsKKworV2hlbiBhIGNvbmZpZ19pdGVtIHdhbnRzIGFuIGF0dHJpYnV0ZSB0byBhcHBlYXIgYXMgYSBmaWxlIGluIHRoZSBpdGVtJ3MKK2NvbmZpZ2ZzIGRpcmVjdG9yeSwgaXQgbXVzdCBkZWZpbmUgYSBjb25maWdmc19hdHRyaWJ1dGUgZGVzY3JpYmluZyBpdC4KK0l0IHRoZW4gYWRkcyB0aGUgYXR0cmlidXRlIHRvIHRoZSBOVUxMLXRlcm1pbmF0ZWQgYXJyYXkKK2NvbmZpZ19pdGVtX3R5cGUtPmN0X2F0dHJzLiAgV2hlbiB0aGUgaXRlbSBhcHBlYXJzIGluIGNvbmZpZ2ZzLCB0aGUKK2F0dHJpYnV0ZSBmaWxlIHdpbGwgYXBwZWFyIHdpdGggdGhlIGNvbmZpZ2ZzX2F0dHJpYnV0ZS0+Y2FfbmFtZQorZmlsZW5hbWUuICBjb25maWdmc19hdHRyaWJ1dGUtPmNhX21vZGUgc3BlY2lmaWVzIHRoZSBmaWxlIHBlcm1pc3Npb25zLgorCitJZiBhbiBhdHRyaWJ1dGUgaXMgcmVhZGFibGUgYW5kIHByb3ZpZGVzIGEgLT5zaG93IG1ldGhvZCwgdGhhdCBtZXRob2Qgd2lsbAorYmUgY2FsbGVkIHdoZW5ldmVyIHVzZXJzcGFjZSBhc2tzIGZvciBhIHJlYWQoMikgb24gdGhlIGF0dHJpYnV0ZS4gIElmIGFuCithdHRyaWJ1dGUgaXMgd3JpdGFibGUgYW5kIHByb3ZpZGVzIGEgLT5zdG9yZSAgbWV0aG9kLCB0aGF0IG1ldGhvZCB3aWxsIGJlCitiZSBjYWxsZWQgd2hlbmV2ZXIgdXNlcnNwYWNlIGFza3MgZm9yIGEgd3JpdGUoMikgb24gdGhlIGF0dHJpYnV0ZS4KKworW3N0cnVjdCBjb25maWdfZ3JvdXBdCisKK0EgY29uZmlnX2l0ZW0gY2Fubm90IGxpdmUgaW4gYSB2YWN1dW0uICBUaGUgb25seSB3YXkgb25lIGNhbiBiZSBjcmVhdGVkCitpcyB2aWEgbWtkaXIoMikgb24gYSBjb25maWdfZ3JvdXAuICBUaGlzIHdpbGwgdHJpZ2dlciBjcmVhdGlvbiBvZiBhCitjaGlsZCBpdGVtLgorCisJc3RydWN0IGNvbmZpZ19ncm91cCB7CisJCXN0cnVjdCBjb25maWdfaXRlbQkJY2dfaXRlbTsKKwkJc3RydWN0IGxpc3RfaGVhZAkJY2dfY2hpbGRyZW47CisJCXN0cnVjdCBjb25maWdmc19zdWJzeXN0ZW0gCSpjZ19zdWJzeXM7CisJCXN0cnVjdCBjb25maWdfZ3JvdXAJCSoqZGVmYXVsdF9ncm91cHM7CisJfTsKKworCXZvaWQgY29uZmlnX2dyb3VwX2luaXQoc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXApOworCXZvaWQgY29uZmlnX2dyb3VwX2luaXRfdHlwZV9uYW1lKHN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLAorCQkJCQkgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkJIHN0cnVjdCBjb25maWdfaXRlbV90eXBlICp0eXBlKTsKKworCitUaGUgY29uZmlnX2dyb3VwIHN0cnVjdHVyZSBjb250YWlucyBhIGNvbmZpZ19pdGVtLiAgUHJvcGVybHkgY29uZmlndXJpbmcKK3RoYXQgaXRlbSBtZWFucyB0aGF0IGEgZ3JvdXAgY2FuIGJlaGF2ZSBhcyBhbiBpdGVtIGluIGl0cyBvd24gcmlnaHQuCitIb3dldmVyLCBpdCBjYW4gZG8gbW9yZTogaXQgY2FuIGNyZWF0ZSBjaGlsZCBpdGVtcyBvciBncm91cHMuICBUaGlzIGlzCithY2NvbXBsaXNoZWQgdmlhIHRoZSBncm91cCBvcGVyYXRpb25zIHNwZWNpZmllZCBvbiB0aGUgZ3JvdXAncworY29uZmlnX2l0ZW1fdHlwZS4KKworCXN0cnVjdCBjb25maWdmc19ncm91cF9vcGVyYXRpb25zIHsKKwkJc3RydWN0IGNvbmZpZ19pdGVtICooKm1ha2VfaXRlbSkoc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXAsCisJCQkJCQkgY29uc3QgY2hhciAqbmFtZSk7CisJCXN0cnVjdCBjb25maWdfZ3JvdXAgKigqbWFrZV9ncm91cCkoc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXAsCisJCQkJCQkgICBjb25zdCBjaGFyICpuYW1lKTsKKwkJaW50ICgqY29tbWl0X2l0ZW0pKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSk7CisJCXZvaWQgKCpkaXNjb25uZWN0X25vdGlmeSkoc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXAsCisJCQkJCSAgc3RydWN0IGNvbmZpZ19pdGVtICppdGVtKTsKKwkJdm9pZCAoKmRyb3BfaXRlbSkoc3RydWN0IGNvbmZpZ19ncm91cCAqZ3JvdXAsCisJCQkJICBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0pOworCX07CisKK0EgZ3JvdXAgY3JlYXRlcyBjaGlsZCBpdGVtcyBieSBwcm92aWRpbmcgdGhlCitjdF9ncm91cF9vcHMtPm1ha2VfaXRlbSgpIG1ldGhvZC4gIElmIHByb3ZpZGVkLCB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgZnJvbSBta2RpcigyKSBpbiB0aGUgZ3JvdXAncyBkaXJlY3RvcnkuICBUaGUgc3Vic3lzdGVtIGFsbG9jYXRlcyBhIG5ldworY29uZmlnX2l0ZW0gKG9yIG1vcmUgbGlrZWx5LCBpdHMgY29udGFpbmVyIHN0cnVjdHVyZSksIGluaXRpYWxpemVzIGl0LAorYW5kIHJldHVybnMgaXQgdG8gY29uZmlnZnMuICBDb25maWdmcyB3aWxsIHRoZW4gcG9wdWxhdGUgdGhlIGZpbGVzeXN0ZW0KK3RyZWUgdG8gcmVmbGVjdCB0aGUgbmV3IGl0ZW0uCisKK0lmIHRoZSBzdWJzeXN0ZW0gd2FudHMgdGhlIGNoaWxkIHRvIGJlIGEgZ3JvdXAgaXRzZWxmLCB0aGUgc3Vic3lzdGVtCitwcm92aWRlcyBjdF9ncm91cF9vcHMtPm1ha2VfZ3JvdXAoKS4gIEV2ZXJ5dGhpbmcgZWxzZSBiZWhhdmVzIHRoZSBzYW1lLAordXNpbmcgdGhlIGdyb3VwIF9pbml0KCkgZnVuY3Rpb25zIG9uIHRoZSBncm91cC4KKworRmluYWxseSwgd2hlbiB1c2Vyc3BhY2UgY2FsbHMgcm1kaXIoMikgb24gdGhlIGl0ZW0gb3IgZ3JvdXAsCitjdF9ncm91cF9vcHMtPmRyb3BfaXRlbSgpIGlzIGNhbGxlZC4gIEFzIGEgY29uZmlnX2dyb3VwIGlzIGFsc28gYQorY29uZmlnX2l0ZW0sIGl0IGlzIG5vdCBuZWNlc3NhcnkgZm9yIGEgc2VwYXJhdGUgZHJvcF9ncm91cCgpIG1ldGhvZC4KK1RoZSBzdWJzeXN0ZW0gbXVzdCBjb25maWdfaXRlbV9wdXQoKSB0aGUgcmVmZXJlbmNlIHRoYXQgd2FzIGluaXRpYWxpemVkCit1cG9uIGl0ZW0gYWxsb2NhdGlvbi4gIElmIGEgc3Vic3lzdGVtIGhhcyBubyB3b3JrIHRvIGRvLCBpdCBtYXkgb21pdAordGhlIGN0X2dyb3VwX29wcy0+ZHJvcF9pdGVtKCkgbWV0aG9kLCBhbmQgY29uZmlnZnMgd2lsbCBjYWxsCitjb25maWdfaXRlbV9wdXQoKSBvbiB0aGUgaXRlbSBvbiBiZWhhbGYgb2YgdGhlIHN1YnN5c3RlbS4KKworSU1QT1JUQU5UOiBkcm9wX2l0ZW0oKSBpcyB2b2lkLCBhbmQgYXMgc3VjaCBjYW5ub3QgZmFpbC4gIFdoZW4gcm1kaXIoMikKK2lzIGNhbGxlZCwgY29uZmlnZnMgV0lMTCByZW1vdmUgdGhlIGl0ZW0gZnJvbSB0aGUgZmlsZXN5c3RlbSB0cmVlCisoYXNzdW1pbmcgdGhhdCBpdCBoYXMgbm8gY2hpbGRyZW4gdG8ga2VlcCBpdCBidXN5KS4gIFRoZSBzdWJzeXN0ZW0gaXMKK3Jlc3BvbnNpYmxlIGZvciByZXNwb25kaW5nIHRvIHRoaXMuICBJZiB0aGUgc3Vic3lzdGVtIGhhcyByZWZlcmVuY2VzIHRvCit0aGUgaXRlbSBpbiBvdGhlciB0aHJlYWRzLCB0aGUgbWVtb3J5IGlzIHNhZmUuICBJdCBtYXkgdGFrZSBzb21lIHRpbWUKK2ZvciB0aGUgaXRlbSB0byBhY3R1YWxseSBkaXNhcHBlYXIgZnJvbSB0aGUgc3Vic3lzdGVtJ3MgdXNhZ2UuICBCdXQgaXQKK2lzIGdvbmUgZnJvbSBjb25maWdmcy4KKworV2hlbiBkcm9wX2l0ZW0oKSBpcyBjYWxsZWQsIHRoZSBpdGVtJ3MgbGlua2FnZSBoYXMgYWxyZWFkeSBiZWVuIHRvcm4KK2Rvd24uICBJdCBubyBsb25nZXIgaGFzIGEgcmVmZXJlbmNlIG9uIGl0cyBwYXJlbnQgYW5kIGhhcyBubyBwbGFjZSBpbgordGhlIGl0ZW0gaGllcmFyY2h5LiAgSWYgYSBjbGllbnQgbmVlZHMgdG8gZG8gc29tZSBjbGVhbnVwIGJlZm9yZSB0aGlzCit0ZWFyZG93biBoYXBwZW5zLCB0aGUgc3Vic3lzdGVtIGNhbiBpbXBsZW1lbnQgdGhlCitjdF9ncm91cF9vcHMtPmRpc2Nvbm5lY3Rfbm90aWZ5KCkgbWV0aG9kLiAgVGhlIG1ldGhvZCBpcyBjYWxsZWQgYWZ0ZXIKK2NvbmZpZ2ZzIGhhcyByZW1vdmVkIHRoZSBpdGVtIGZyb20gdGhlIGZpbGVzeXN0ZW0gdmlldyBidXQgYmVmb3JlIHRoZQoraXRlbSBpcyByZW1vdmVkIGZyb20gaXRzIHBhcmVudCBncm91cC4gIExpa2UgZHJvcF9pdGVtKCksCitkaXNjb25uZWN0X25vdGlmeSgpIGlzIHZvaWQgYW5kIGNhbm5vdCBmYWlsLiAgQ2xpZW50IHN1YnN5c3RlbXMgc2hvdWxkCitub3QgZHJvcCBhbnkgcmVmZXJlbmNlcyBoZXJlLCBhcyB0aGV5IHN0aWxsIG11c3QgZG8gaXQgaW4gZHJvcF9pdGVtKCkuCisKK0EgY29uZmlnX2dyb3VwIGNhbm5vdCBiZSByZW1vdmVkIHdoaWxlIGl0IHN0aWxsIGhhcyBjaGlsZCBpdGVtcy4gIFRoaXMKK2lzIGltcGxlbWVudGVkIGluIHRoZSBjb25maWdmcyBybWRpcigyKSBjb2RlLiAgLT5kcm9wX2l0ZW0oKSB3aWxsIG5vdCBiZQorY2FsbGVkLCBhcyB0aGUgaXRlbSBoYXMgbm90IGJlZW4gZHJvcHBlZC4gIHJtZGlyKDIpIHdpbGwgZmFpbCwgYXMgdGhlCitkaXJlY3RvcnkgaXMgbm90IGVtcHR5LgorCitbc3RydWN0IGNvbmZpZ2ZzX3N1YnN5c3RlbV0KKworQSBzdWJzeXN0ZW0gbXVzdCByZWdpc3RlciBpdHNlbGYsIHVzdWFsbHkgYXQgbW9kdWxlX2luaXQgdGltZS4gIFRoaXMKK3RlbGxzIGNvbmZpZ2ZzIHRvIG1ha2UgdGhlIHN1YnN5c3RlbSBhcHBlYXIgaW4gdGhlIGZpbGUgdHJlZS4KKworCXN0cnVjdCBjb25maWdmc19zdWJzeXN0ZW0geworCQlzdHJ1Y3QgY29uZmlnX2dyb3VwCXN1X2dyb3VwOworCQlzdHJ1Y3QgbXV0ZXgJCXN1X211dGV4OworCX07CisKKwlpbnQgY29uZmlnZnNfcmVnaXN0ZXJfc3Vic3lzdGVtKHN0cnVjdCBjb25maWdmc19zdWJzeXN0ZW0gKnN1YnN5cyk7CisJdm9pZCBjb25maWdmc191bnJlZ2lzdGVyX3N1YnN5c3RlbShzdHJ1Y3QgY29uZmlnZnNfc3Vic3lzdGVtICpzdWJzeXMpOworCisJQSBzdWJzeXN0ZW0gY29uc2lzdHMgb2YgYSB0b3BsZXZlbCBjb25maWdfZ3JvdXAgYW5kIGEgbXV0ZXguCitUaGUgZ3JvdXAgaXMgd2hlcmUgY2hpbGQgY29uZmlnX2l0ZW1zIGFyZSBjcmVhdGVkLiAgRm9yIGEgc3Vic3lzdGVtLAordGhpcyBncm91cCBpcyB1c3VhbGx5IGRlZmluZWQgc3RhdGljYWxseS4gIEJlZm9yZSBjYWxsaW5nCitjb25maWdmc19yZWdpc3Rlcl9zdWJzeXN0ZW0oKSwgdGhlIHN1YnN5c3RlbSBtdXN0IGhhdmUgaW5pdGlhbGl6ZWQgdGhlCitncm91cCB2aWEgdGhlIHVzdWFsIGdyb3VwIF9pbml0KCkgZnVuY3Rpb25zLCBhbmQgaXQgbXVzdCBhbHNvIGhhdmUKK2luaXRpYWxpemVkIHRoZSBtdXRleC4KKwlXaGVuIHRoZSByZWdpc3RlciBjYWxsIHJldHVybnMsIHRoZSBzdWJzeXN0ZW0gaXMgbGl2ZSwgYW5kIGl0Cit3aWxsIGJlIHZpc2libGUgdmlhIGNvbmZpZ2ZzLiAgQXQgdGhhdCBwb2ludCwgbWtkaXIoMikgY2FuIGJlIGNhbGxlZCBhbmQKK3RoZSBzdWJzeXN0ZW0gbXVzdCBiZSByZWFkeSBmb3IgaXQuCisKK1tBbiBFeGFtcGxlXQorCitUaGUgYmVzdCBleGFtcGxlIG9mIHRoZXNlIGJhc2ljIGNvbmNlcHRzIGlzIHRoZSBzaW1wbGVfY2hpbGRyZW4KK3N1YnN5c3RlbS9ncm91cCBhbmQgdGhlIHNpbXBsZV9jaGlsZCBpdGVtIGluCitzYW1wbGVzL2NvbmZpZ2ZzL2NvbmZpZ2ZzX3NhbXBsZS5jLiBJdCBzaG93cyBhIHRyaXZpYWwgb2JqZWN0IGRpc3BsYXlpbmcKK2FuZCBzdG9yaW5nIGFuIGF0dHJpYnV0ZSwgYW5kIGEgc2ltcGxlIGdyb3VwIGNyZWF0aW5nIGFuZCBkZXN0cm95aW5nCit0aGVzZSBjaGlsZHJlbi4KKworW0hpZXJhcmNoeSBOYXZpZ2F0aW9uIGFuZCB0aGUgU3Vic3lzdGVtIE11dGV4XQorCitUaGVyZSBpcyBhbiBleHRyYSBib251cyB0aGF0IGNvbmZpZ2ZzIHByb3ZpZGVzLiAgVGhlIGNvbmZpZ19ncm91cHMgYW5kCitjb25maWdfaXRlbXMgYXJlIGFycmFuZ2VkIGluIGEgaGllcmFyY2h5IGR1ZSB0byB0aGUgZmFjdCB0aGF0IHRoZXkKK2FwcGVhciBpbiBhIGZpbGVzeXN0ZW0uICBBIHN1YnN5c3RlbSBpcyBORVZFUiB0byB0b3VjaCB0aGUgZmlsZXN5c3RlbQorcGFydHMsIGJ1dCB0aGUgc3Vic3lzdGVtIG1pZ2h0IGJlIGludGVyZXN0ZWQgaW4gdGhpcyBoaWVyYXJjaHkuICBGb3IKK3RoaXMgcmVhc29uLCB0aGUgaGllcmFyY2h5IGlzIG1pcnJvcmVkIHZpYSB0aGUgY29uZmlnX2dyb3VwLT5jZ19jaGlsZHJlbgorYW5kIGNvbmZpZ19pdGVtLT5jaV9wYXJlbnQgc3RydWN0dXJlIG1lbWJlcnMuCisKK0Egc3Vic3lzdGVtIGNhbiBuYXZpZ2F0ZSB0aGUgY2dfY2hpbGRyZW4gbGlzdCBhbmQgdGhlIGNpX3BhcmVudCBwb2ludGVyCit0byBzZWUgdGhlIHRyZWUgY3JlYXRlZCBieSB0aGUgc3Vic3lzdGVtLiAgVGhpcyBjYW4gcmFjZSB3aXRoIGNvbmZpZ2ZzJworbWFuYWdlbWVudCBvZiB0aGUgaGllcmFyY2h5LCBzbyBjb25maWdmcyB1c2VzIHRoZSBzdWJzeXN0ZW0gbXV0ZXggdG8KK3Byb3RlY3QgbW9kaWZpY2F0aW9ucy4gIFdoZW5ldmVyIGEgc3Vic3lzdGVtIHdhbnRzIHRvIG5hdmlnYXRlIHRoZQoraGllcmFyY2h5LCBpdCBtdXN0IGRvIHNvIHVuZGVyIHRoZSBwcm90ZWN0aW9uIG9mIHRoZSBzdWJzeXN0ZW0KK211dGV4LgorCitBIHN1YnN5c3RlbSB3aWxsIGJlIHByZXZlbnRlZCBmcm9tIGFjcXVpcmluZyB0aGUgbXV0ZXggd2hpbGUgYSBuZXdseQorYWxsb2NhdGVkIGl0ZW0gaGFzIG5vdCBiZWVuIGxpbmtlZCBpbnRvIHRoaXMgaGllcmFyY2h5LiAgIFNpbWlsYXJseSwgaXQKK3dpbGwgbm90IGJlIGFibGUgdG8gYWNxdWlyZSB0aGUgbXV0ZXggd2hpbGUgYSBkcm9wcGluZyBpdGVtIGhhcyBub3QKK3lldCBiZWVuIHVubGlua2VkLiAgVGhpcyBtZWFucyB0aGF0IGFuIGl0ZW0ncyBjaV9wYXJlbnQgcG9pbnRlciB3aWxsCituZXZlciBiZSBOVUxMIHdoaWxlIHRoZSBpdGVtIGlzIGluIGNvbmZpZ2ZzLCBhbmQgdGhhdCBhbiBpdGVtIHdpbGwgb25seQorYmUgaW4gaXRzIHBhcmVudCdzIGNnX2NoaWxkcmVuIGxpc3QgZm9yIHRoZSBzYW1lIGR1cmF0aW9uLiAgVGhpcyBhbGxvd3MKK2Egc3Vic3lzdGVtIHRvIHRydXN0IGNpX3BhcmVudCBhbmQgY2dfY2hpbGRyZW4gd2hpbGUgdGhleSBob2xkIHRoZQorbXV0ZXguCisKK1tJdGVtIEFnZ3JlZ2F0aW9uIFZpYSBzeW1saW5rKDIpXQorCitjb25maWdmcyBwcm92aWRlcyBhIHNpbXBsZSBncm91cCB2aWEgdGhlIGdyb3VwLT5pdGVtIHBhcmVudC9jaGlsZAorcmVsYXRpb25zaGlwLiAgT2Z0ZW4sIGhvd2V2ZXIsIGEgbGFyZ2VyIGVudmlyb25tZW50IHJlcXVpcmVzIGFnZ3JlZ2F0aW9uCitvdXRzaWRlIG9mIHRoZSBwYXJlbnQvY2hpbGQgY29ubmVjdGlvbi4gIFRoaXMgaXMgaW1wbGVtZW50ZWQgdmlhCitzeW1saW5rKDIpLgorCitBIGNvbmZpZ19pdGVtIG1heSBwcm92aWRlIHRoZSBjdF9pdGVtX29wcy0+YWxsb3dfbGluaygpIGFuZAorY3RfaXRlbV9vcHMtPmRyb3BfbGluaygpIG1ldGhvZHMuICBJZiB0aGUgLT5hbGxvd19saW5rKCkgbWV0aG9kIGV4aXN0cywKK3N5bWxpbmsoMikgbWF5IGJlIGNhbGxlZCB3aXRoIHRoZSBjb25maWdfaXRlbSBhcyB0aGUgc291cmNlIG9mIHRoZSBsaW5rLgorVGhlc2UgbGlua3MgYXJlIG9ubHkgYWxsb3dlZCBiZXR3ZWVuIGNvbmZpZ2ZzIGNvbmZpZ19pdGVtcy4gIEFueQorc3ltbGluaygyKSBhdHRlbXB0IG91dHNpZGUgdGhlIGNvbmZpZ2ZzIGZpbGVzeXN0ZW0gd2lsbCBiZSBkZW5pZWQuCisKK1doZW4gc3ltbGluaygyKSBpcyBjYWxsZWQsIHRoZSBzb3VyY2UgY29uZmlnX2l0ZW0ncyAtPmFsbG93X2xpbmsoKQorbWV0aG9kIGlzIGNhbGxlZCB3aXRoIGl0c2VsZiBhbmQgYSB0YXJnZXQgaXRlbS4gIElmIHRoZSBzb3VyY2UgaXRlbQorYWxsb3dzIGxpbmtpbmcgdG8gdGFyZ2V0IGl0ZW0sIGl0IHJldHVybnMgMC4gIEEgc291cmNlIGl0ZW0gbWF5IHdpc2ggdG8KK3JlamVjdCBhIGxpbmsgaWYgaXQgb25seSB3YW50cyBsaW5rcyB0byBhIGNlcnRhaW4gdHlwZSBvZiBvYmplY3QgKHNheSwKK2luIGl0cyBvd24gc3Vic3lzdGVtKS4KKworV2hlbiB1bmxpbmsoMikgaXMgY2FsbGVkIG9uIHRoZSBzeW1ib2xpYyBsaW5rLCB0aGUgc291cmNlIGl0ZW0gaXMKK25vdGlmaWVkIHZpYSB0aGUgLT5kcm9wX2xpbmsoKSBtZXRob2QuICBMaWtlIHRoZSAtPmRyb3BfaXRlbSgpIG1ldGhvZCwKK3RoaXMgaXMgYSB2b2lkIGZ1bmN0aW9uIGFuZCBjYW5ub3QgcmV0dXJuIGZhaWx1cmUuICBUaGUgc3Vic3lzdGVtIGlzCityZXNwb25zaWJsZSBmb3IgcmVzcG9uZGluZyB0byB0aGUgY2hhbmdlLgorCitBIGNvbmZpZ19pdGVtIGNhbm5vdCBiZSByZW1vdmVkIHdoaWxlIGl0IGxpbmtzIHRvIGFueSBvdGhlciBpdGVtLCBub3IKK2NhbiBpdCBiZSByZW1vdmVkIHdoaWxlIGFuIGl0ZW0gbGlua3MgdG8gaXQuICBEYW5nbGluZyBzeW1saW5rcyBhcmUgbm90CithbGxvd2VkIGluIGNvbmZpZ2ZzLgorCitbQXV0b21hdGljYWxseSBDcmVhdGVkIFN1Ymdyb3Vwc10KKworQSBuZXcgY29uZmlnX2dyb3VwIG1heSB3YW50IHRvIGhhdmUgdHdvIHR5cGVzIG9mIGNoaWxkIGNvbmZpZ19pdGVtcy4KK1doaWxlIHRoaXMgY291bGQgYmUgY29kaWZpZWQgYnkgbWFnaWMgbmFtZXMgaW4gLT5tYWtlX2l0ZW0oKSwgaXQgaXMgbXVjaAorbW9yZSBleHBsaWNpdCB0byBoYXZlIGEgbWV0aG9kIHdoZXJlYnkgdXNlcnNwYWNlIHNlZXMgdGhpcyBkaXZlcmdlbmNlLgorCitSYXRoZXIgdGhhbiBoYXZlIGEgZ3JvdXAgd2hlcmUgc29tZSBpdGVtcyBiZWhhdmUgZGlmZmVyZW50bHkgdGhhbgorb3RoZXJzLCBjb25maWdmcyBwcm92aWRlcyBhIG1ldGhvZCB3aGVyZWJ5IG9uZSBvciBtYW55IHN1Ymdyb3VwcyBhcmUKK2F1dG9tYXRpY2FsbHkgY3JlYXRlZCBpbnNpZGUgdGhlIHBhcmVudCBhdCBpdHMgY3JlYXRpb24uICBUaHVzLAorbWtkaXIoInBhcmVudCIpIHJlc3VsdHMgaW4gInBhcmVudCIsICJwYXJlbnQvc3ViZ3JvdXAxIiwgdXAgdGhyb3VnaAorInBhcmVudC9zdWJncm91cE4iLiAgSXRlbXMgb2YgdHlwZSAxIGNhbiBub3cgYmUgY3JlYXRlZCBpbgorInBhcmVudC9zdWJncm91cDEiLCBhbmQgaXRlbXMgb2YgdHlwZSBOIGNhbiBiZSBjcmVhdGVkIGluCisicGFyZW50L3N1Ymdyb3VwTiIuCisKK1RoZXNlIGF1dG9tYXRpYyBzdWJncm91cHMsIG9yIGRlZmF1bHQgZ3JvdXBzLCBkbyBub3QgcHJlY2x1ZGUgb3RoZXIKK2NoaWxkcmVuIG9mIHRoZSBwYXJlbnQgZ3JvdXAuICBJZiBjdF9ncm91cF9vcHMtPm1ha2VfZ3JvdXAoKSBleGlzdHMsCitvdGhlciBjaGlsZCBncm91cHMgY2FuIGJlIGNyZWF0ZWQgb24gdGhlIHBhcmVudCBncm91cCBkaXJlY3RseS4KKworQSBjb25maWdmcyBzdWJzeXN0ZW0gc3BlY2lmaWVzIGRlZmF1bHQgZ3JvdXBzIGJ5IGZpbGxpbmcgaW4gdGhlCitOVUxMLXRlcm1pbmF0ZWQgYXJyYXkgZGVmYXVsdF9ncm91cHMgb24gdGhlIGNvbmZpZ19ncm91cCBzdHJ1Y3R1cmUuCitFYWNoIGdyb3VwIGluIHRoYXQgYXJyYXkgaXMgcG9wdWxhdGVkIGluIHRoZSBjb25maWdmcyB0cmVlIGF0IHRoZSBzYW1lCit0aW1lIGFzIHRoZSBwYXJlbnQgZ3JvdXAuICBTaW1pbGFybHksIHRoZXkgYXJlIHJlbW92ZWQgYXQgdGhlIHNhbWUgdGltZQorYXMgdGhlIHBhcmVudC4gIE5vIGV4dHJhIG5vdGlmaWNhdGlvbiBpcyBwcm92aWRlZC4gIFdoZW4gYSAtPmRyb3BfaXRlbSgpCittZXRob2QgY2FsbCBub3RpZmllcyB0aGUgc3Vic3lzdGVtIHRoZSBwYXJlbnQgZ3JvdXAgaXMgZ29pbmcgYXdheSwgaXQKK2Fsc28gbWVhbnMgZXZlcnkgZGVmYXVsdCBncm91cCBjaGlsZCBhc3NvY2lhdGVkIHdpdGggdGhhdCBwYXJlbnQgZ3JvdXAuCisKK0FzIGEgY29uc2VxdWVuY2Ugb2YgdGhpcywgZGVmYXVsdF9ncm91cHMgY2Fubm90IGJlIHJlbW92ZWQgZGlyZWN0bHkgdmlhCitybWRpcigyKS4gIFRoZXkgYWxzbyBhcmUgbm90IGNvbnNpZGVyZWQgd2hlbiBybWRpcigyKSBvbiB0aGUgcGFyZW50Citncm91cCBpcyBjaGVja2luZyBmb3IgY2hpbGRyZW4uCisKK1tEZXBlbmRlbnQgU3Vic3lzdGVtc10KKworU29tZXRpbWVzIG90aGVyIGRyaXZlcnMgZGVwZW5kIG9uIHBhcnRpY3VsYXIgY29uZmlnZnMgaXRlbXMuICBGb3IKK2V4YW1wbGUsIG9jZnMyIG1vdW50cyBkZXBlbmQgb24gYSBoZWFydGJlYXQgcmVnaW9uIGl0ZW0uICBJZiB0aGF0CityZWdpb24gaXRlbSBpcyByZW1vdmVkIHdpdGggcm1kaXIoMiksIHRoZSBvY2ZzMiBtb3VudCBtdXN0IEJVRyBvciBnbworcmVhZG9ubHkuICBOb3QgaGFwcHkuCisKK2NvbmZpZ2ZzIHByb3ZpZGVzIHR3byBhZGRpdGlvbmFsIEFQSSBjYWxsczogY29uZmlnZnNfZGVwZW5kX2l0ZW0oKSBhbmQKK2NvbmZpZ2ZzX3VuZGVwZW5kX2l0ZW0oKS4gIEEgY2xpZW50IGRyaXZlciBjYW4gY2FsbAorY29uZmlnZnNfZGVwZW5kX2l0ZW0oKSBvbiBhbiBleGlzdGluZyBpdGVtIHRvIHRlbGwgY29uZmlnZnMgdGhhdCBpdCBpcworZGVwZW5kZWQgb24uICBjb25maWdmcyB3aWxsIHRoZW4gcmV0dXJuIC1FQlVTWSBmcm9tIHJtZGlyKDIpIGZvciB0aGF0CitpdGVtLiAgV2hlbiB0aGUgaXRlbSBpcyBubyBsb25nZXIgZGVwZW5kZWQgb24sIHRoZSBjbGllbnQgZHJpdmVyIGNhbGxzCitjb25maWdmc191bmRlcGVuZF9pdGVtKCkgb24gaXQuCisKK1RoZXNlIEFQSSBjYW5ub3QgYmUgY2FsbGVkIHVuZGVybmVhdGggYW55IGNvbmZpZ2ZzIGNhbGxiYWNrcywgYXMKK3RoZXkgd2lsbCBjb25mbGljdC4gIFRoZXkgY2FuIGJsb2NrIGFuZCBhbGxvY2F0ZS4gIEEgY2xpZW50IGRyaXZlcgorcHJvYmFibHkgc2hvdWxkbid0IGNhbGxpbmcgdGhlbSBvZiBpdHMgb3duIGd1bXB0aW9uLiAgUmF0aGVyIGl0IHNob3VsZAorYmUgcHJvdmlkaW5nIGFuIEFQSSB0aGF0IGV4dGVybmFsIHN1YnN5c3RlbXMgY2FsbC4KKworSG93IGRvZXMgdGhpcyB3b3JrPyAgSW1hZ2luZSB0aGUgb2NmczIgbW91bnQgcHJvY2Vzcy4gIFdoZW4gaXQgbW91bnRzLAoraXQgYXNrcyBmb3IgYSBoZWFydGJlYXQgcmVnaW9uIGl0ZW0uICBUaGlzIGlzIGRvbmUgdmlhIGEgY2FsbCBpbnRvIHRoZQoraGVhcnRiZWF0IGNvZGUuICBJbnNpZGUgdGhlIGhlYXJ0YmVhdCBjb2RlLCB0aGUgcmVnaW9uIGl0ZW0gaXMgbG9va2VkCit1cC4gIEhlcmUsIHRoZSBoZWFydGJlYXQgY29kZSBjYWxscyBjb25maWdmc19kZXBlbmRfaXRlbSgpLiAgSWYgaXQKK3N1Y2NlZWRzLCB0aGVuIGhlYXJ0YmVhdCBrbm93cyB0aGUgcmVnaW9uIGlzIHNhZmUgdG8gZ2l2ZSB0byBvY2ZzMi4KK0lmIGl0IGZhaWxzLCBpdCB3YXMgYmVpbmcgdG9ybiBkb3duIGFueXdheSwgYW5kIGhlYXJ0YmVhdCBjYW4gZ3JhY2VmdWxseQorcGFzcyB1cCBhbiBlcnJvci4KKworW0NvbW1pdHRhYmxlIEl0ZW1zXQorCitOT1RFOiBDb21taXR0YWJsZSBpdGVtcyBhcmUgY3VycmVudGx5IHVuaW1wbGVtZW50ZWQuCisKK1NvbWUgY29uZmlnX2l0ZW1zIGNhbm5vdCBoYXZlIGEgdmFsaWQgaW5pdGlhbCBzdGF0ZS4gIFRoYXQgaXMsIG5vCitkZWZhdWx0IHZhbHVlcyBjYW4gYmUgc3BlY2lmaWVkIGZvciB0aGUgaXRlbSdzIGF0dHJpYnV0ZXMgc3VjaCB0aGF0IHRoZQoraXRlbSBjYW4gZG8gaXRzIHdvcmsuICBVc2Vyc3BhY2UgbXVzdCBjb25maWd1cmUgb25lIG9yIG1vcmUgYXR0cmlidXRlcywKK2FmdGVyIHdoaWNoIHRoZSBzdWJzeXN0ZW0gY2FuIHN0YXJ0IHdoYXRldmVyIGVudGl0eSB0aGlzIGl0ZW0KK3JlcHJlc2VudHMuCisKK0NvbnNpZGVyIHRoZSBGYWtlTkJEIGRldmljZSBmcm9tIGFib3ZlLiAgV2l0aG91dCBhIHRhcmdldCBhZGRyZXNzICphbmQqCithIHRhcmdldCBkZXZpY2UsIHRoZSBzdWJzeXN0ZW0gaGFzIG5vIGlkZWEgd2hhdCBibG9jayBkZXZpY2UgdG8gaW1wb3J0LgorVGhlIHNpbXBsZSBleGFtcGxlIGFzc3VtZXMgdGhhdCB0aGUgc3Vic3lzdGVtIG1lcmVseSB3YWl0cyB1bnRpbCBhbGwgdGhlCithcHByb3ByaWF0ZSBhdHRyaWJ1dGVzIGFyZSBjb25maWd1cmVkLCBhbmQgdGhlbiBjb25uZWN0cy4gIFRoaXMgd2lsbCwKK2luZGVlZCwgd29yaywgYnV0IG5vdyBldmVyeSBhdHRyaWJ1dGUgc3RvcmUgbXVzdCBjaGVjayBpZiB0aGUgYXR0cmlidXRlcworYXJlIGluaXRpYWxpemVkLiAgRXZlcnkgYXR0cmlidXRlIHN0b3JlIG11c3QgZmlyZSBvZmYgdGhlIGNvbm5lY3Rpb24gaWYKK3RoYXQgY29uZGl0aW9uIGlzIG1ldC4KKworRmFyIGJldHRlciB3b3VsZCBiZSBhbiBleHBsaWNpdCBhY3Rpb24gbm90aWZ5aW5nIHRoZSBzdWJzeXN0ZW0gdGhhdCB0aGUKK2NvbmZpZ19pdGVtIGlzIHJlYWR5IHRvIGdvLiAgTW9yZSBpbXBvcnRhbnRseSwgYW4gZXhwbGljaXQgYWN0aW9uIGFsbG93cwordGhlIHN1YnN5c3RlbSB0byBwcm92aWRlIGZlZWRiYWNrIGFzIHRvIHdoZXRoZXIgdGhlIGF0dHJpYnV0ZXMgYXJlCitpbml0aWFsaXplZCBpbiBhIHdheSB0aGF0IG1ha2VzIHNlbnNlLiAgY29uZmlnZnMgcHJvdmlkZXMgdGhpcyBhcworY29tbWl0dGFibGUgaXRlbXMuCisKK2NvbmZpZ2ZzIHN0aWxsIHVzZXMgb25seSBub3JtYWwgZmlsZXN5c3RlbSBvcGVyYXRpb25zLiAgQW4gaXRlbSBpcworY29tbWl0dGVkIHZpYSByZW5hbWUoMikuICBUaGUgaXRlbSBpcyBtb3ZlZCBmcm9tIGEgZGlyZWN0b3J5IHdoZXJlIGl0CitjYW4gYmUgbW9kaWZpZWQgdG8gYSBkaXJlY3Rvcnkgd2hlcmUgaXQgY2Fubm90LgorCitBbnkgZ3JvdXAgdGhhdCBwcm92aWRlcyB0aGUgY3RfZ3JvdXBfb3BzLT5jb21taXRfaXRlbSgpIG1ldGhvZCBoYXMKK2NvbW1pdHRhYmxlIGl0ZW1zLiAgV2hlbiB0aGlzIGdyb3VwIGFwcGVhcnMgaW4gY29uZmlnZnMsIG1rZGlyKDIpIHdpbGwKK25vdCB3b3JrIGRpcmVjdGx5IGluIHRoZSBncm91cC4gIEluc3RlYWQsIHRoZSBncm91cCB3aWxsIGhhdmUgdHdvCitzdWJkaXJlY3RvcmllczogImxpdmUiIGFuZCAicGVuZGluZyIuICBUaGUgImxpdmUiIGRpcmVjdG9yeSBkb2VzIG5vdAorc3VwcG9ydCBta2RpcigyKSBvciBybWRpcigyKSBlaXRoZXIuICBJdCBvbmx5IGFsbG93cyByZW5hbWUoMikuICBUaGUKKyJwZW5kaW5nIiBkaXJlY3RvcnkgZG9lcyBhbGxvdyBta2RpcigyKSBhbmQgcm1kaXIoMikuICBBbiBpdGVtIGlzCitjcmVhdGVkIGluIHRoZSAicGVuZGluZyIgZGlyZWN0b3J5LiAgSXRzIGF0dHJpYnV0ZXMgY2FuIGJlIG1vZGlmaWVkIGF0Cit3aWxsLiAgVXNlcnNwYWNlIGNvbW1pdHMgdGhlIGl0ZW0gYnkgcmVuYW1pbmcgaXQgaW50byB0aGUgImxpdmUiCitkaXJlY3RvcnkuICBBdCB0aGlzIHBvaW50LCB0aGUgc3Vic3lzdGVtIHJlY2VpdmVzIHRoZSAtPmNvbW1pdF9pdGVtKCkKK2NhbGxiYWNrLiAgSWYgYWxsIHJlcXVpcmVkIGF0dHJpYnV0ZXMgYXJlIGZpbGxlZCB0byBzYXRpc2ZhY3Rpb24sIHRoZQorbWV0aG9kIHJldHVybnMgemVybyBhbmQgdGhlIGl0ZW0gaXMgbW92ZWQgdG8gdGhlICJsaXZlIiBkaXJlY3RvcnkuCisKK0FzIHJtZGlyKDIpIGRvZXMgbm90IHdvcmsgaW4gdGhlICJsaXZlIiBkaXJlY3RvcnksIGFuIGl0ZW0gbXVzdCBiZQorc2h1dGRvd24sIG9yICJ1bmNvbW1pdHRlZCIuICBBZ2FpbiwgdGhpcyBpcyBkb25lIHZpYSByZW5hbWUoMiksIHRoaXMKK3RpbWUgZnJvbSB0aGUgImxpdmUiIGRpcmVjdG9yeSBiYWNrIHRvIHRoZSAicGVuZGluZyIgb25lLiAgVGhlIHN1YnN5c3RlbQoraXMgbm90aWZpZWQgYnkgdGhlIGN0X2dyb3VwX29wcy0+dW5jb21taXRfb2JqZWN0KCkgbWV0aG9kLgorCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY3JhbWZzLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY3JhbWZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWY1M2YwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9jcmFtZnMudHh0CkBAIC0wLDAgKzEsNzYgQEAKKworCUNyYW1mcyAtIGNyYW0gYSBmaWxlc3lzdGVtIG9udG8gYSBzbWFsbCBST00KKworY3JhbWZzIGlzIGRlc2lnbmVkIHRvIGJlIHNpbXBsZSBhbmQgc21hbGwsIGFuZCB0byBjb21wcmVzcyB0aGluZ3Mgd2VsbC4gCisKK0l0IHVzZXMgdGhlIHpsaWIgcm91dGluZXMgdG8gY29tcHJlc3MgYSBmaWxlIG9uZSBwYWdlIGF0IGEgdGltZSwgYW5kCithbGxvd3MgcmFuZG9tIHBhZ2UgYWNjZXNzLiAgVGhlIG1ldGEtZGF0YSBpcyBub3QgY29tcHJlc3NlZCwgYnV0IGlzCitleHByZXNzZWQgaW4gYSB2ZXJ5IHRlcnNlIHJlcHJlc2VudGF0aW9uIHRvIG1ha2UgaXQgdXNlIG11Y2ggbGVzcworZGlza3NwYWNlIHRoYW4gdHJhZGl0aW9uYWwgZmlsZXN5c3RlbXMuIAorCitZb3UgY2FuJ3Qgd3JpdGUgdG8gYSBjcmFtZnMgZmlsZXN5c3RlbSAobWFraW5nIGl0IGNvbXByZXNzaWJsZSBhbmQKK2NvbXBhY3QgYWxzbyBtYWtlcyBpdCBfdmVyeV8gaGFyZCB0byB1cGRhdGUgb24tdGhlLWZseSksIHNvIHlvdSBoYXZlIHRvCitjcmVhdGUgdGhlIGRpc2sgaW1hZ2Ugd2l0aCB0aGUgIm1rY3JhbWZzIiB1dGlsaXR5LgorCisKK1VzYWdlIE5vdGVzCistLS0tLS0tLS0tLQorCitGaWxlIHNpemVzIGFyZSBsaW1pdGVkIHRvIGxlc3MgdGhhbiAxNk1CLgorCitNYXhpbXVtIGZpbGVzeXN0ZW0gc2l6ZSBpcyBhIGxpdHRsZSBvdmVyIDI1Nk1CLiAgKFRoZSBsYXN0IGZpbGUgb24gdGhlCitmaWxlc3lzdGVtIGlzIGFsbG93ZWQgdG8gZXh0ZW5kIHBhc3QgMjU2TUIuKQorCitPbmx5IHRoZSBsb3cgOCBiaXRzIG9mIGdpZCBhcmUgc3RvcmVkLiAgVGhlIGN1cnJlbnQgdmVyc2lvbiBvZgorbWtjcmFtZnMgc2ltcGx5IHRydW5jYXRlcyB0byA4IGJpdHMsIHdoaWNoIGlzIGEgcG90ZW50aWFsIHNlY3VyaXR5Citpc3N1ZS4KKworSGFyZCBsaW5rcyBhcmUgc3VwcG9ydGVkLCBidXQgaGFyZCBsaW5rZWQgZmlsZXMKK3dpbGwgc3RpbGwgaGF2ZSBhIGxpbmsgY291bnQgb2YgMSBpbiB0aGUgY3JhbWZzIGltYWdlLgorCitDcmFtZnMgZGlyZWN0b3JpZXMgaGF2ZSBubyBgLicgb3IgYC4uJyBlbnRyaWVzLiAgRGlyZWN0b3JpZXMgKGxpa2UKK2V2ZXJ5IG90aGVyIGZpbGUgb24gY3JhbWZzKSBhbHdheXMgaGF2ZSBhIGxpbmsgY291bnQgb2YgMS4gIChUaGVyZSdzCitubyBuZWVkIHRvIHVzZSAtbm9sZWFmIGluIGBmaW5kJywgYnR3LikKKworTm8gdGltZXN0YW1wcyBhcmUgc3RvcmVkIGluIGEgY3JhbWZzLCBzbyB0aGVzZSBkZWZhdWx0IHRvIHRoZSBlcG9jaAorKDE5NzAgR01UKS4gIFJlY2VudGx5LWFjY2Vzc2VkIGZpbGVzIG1heSBoYXZlIHVwZGF0ZWQgdGltZXN0YW1wcywgYnV0Cit0aGUgdXBkYXRlIGxhc3RzIG9ubHkgYXMgbG9uZyBhcyB0aGUgaW5vZGUgaXMgY2FjaGVkIGluIG1lbW9yeSwgYWZ0ZXIKK3doaWNoIHRoZSB0aW1lc3RhbXAgcmV2ZXJ0cyB0byAxOTcwLCBpLmUuIG1vdmVzIGJhY2t3YXJkcyBpbiB0aW1lLgorCitDdXJyZW50bHksIGNyYW1mcyBtdXN0IGJlIHdyaXR0ZW4gYW5kIHJlYWQgd2l0aCBhcmNoaXRlY3R1cmVzIG9mIHRoZQorc2FtZSBlbmRpYW5uZXNzLCBhbmQgY2FuIGJlIHJlYWQgb25seSBieSBrZXJuZWxzIHdpdGggUEFHRV9DQUNIRV9TSVpFCis9PSA0MDk2LiAgQXQgbGVhc3QgdGhlIGxhdHRlciBvZiB0aGVzZSBpcyBhIGJ1ZywgYnV0IGl0IGhhc24ndCBiZWVuCitkZWNpZGVkIHdoYXQgdGhlIGJlc3QgZml4IGlzLiAgRm9yIHRoZSBtb21lbnQgaWYgeW91IGhhdmUgbGFyZ2VyIHBhZ2VzCit5b3UgY2FuIGp1c3QgY2hhbmdlIHRoZSAjZGVmaW5lIGluIG1rY3JhbWZzLmMsIHNvIGxvbmcgYXMgeW91IGRvbid0CittaW5kIHRoZSBmaWxlc3lzdGVtIGJlY29taW5nIHVucmVhZGFibGUgdG8gZnV0dXJlIGtlcm5lbHMuCisKKworRm9yIC91c3Ivc2hhcmUvbWFnaWMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzAJdWxlbG9uZwkweDI4Y2QzZDQ1CUxpbnV4IGNyYW1mcyBvZmZzZXQgMAorPjQJdWxlbG9uZwl4CQlzaXplICVkCis+OAl1bGVsb25nCXgJCWZsYWdzIDB4JXgKKz4xMgl1bGVsb25nCXgJCWZ1dHVyZSAweCV4Cis+MTYJc3RyaW5nCT5cMAkJc2lnbmF0dXJlICIlLjE2cyIKKz4zMgl1bGVsb25nCXgJCWZzaWQuY3JjIDB4JXgKKz4zNgl1bGVsb25nCXgJCWZzaWQuZWRpdGlvbiAlZAorPjQwCXVsZWxvbmcJeAkJZnNpZC5ibG9ja3MgJWQKKz40NAl1bGVsb25nCXgJCWZzaWQuZmlsZXMgJWQKKz40OAlzdHJpbmcJPlwwCQluYW1lICIlLjE2cyIKKzUxMgl1bGVsb25nCTB4MjhjZDNkNDUJTGludXggY3JhbWZzIG9mZnNldCA1MTIKKz41MTYJdWxlbG9uZwl4CQlzaXplICVkCis+NTIwCXVsZWxvbmcJeAkJZmxhZ3MgMHgleAorPjUyNAl1bGVsb25nCXgJCWZ1dHVyZSAweCV4Cis+NTI4CXN0cmluZwk+XDAJCXNpZ25hdHVyZSAiJS4xNnMiCis+NTQ0CXVsZWxvbmcJeAkJZnNpZC5jcmMgMHgleAorPjU0OAl1bGVsb25nCXgJCWZzaWQuZWRpdGlvbiAlZAorPjU1Mgl1bGVsb25nCXgJCWZzaWQuYmxvY2tzICVkCis+NTU2CXVsZWxvbmcJeAkJZnNpZC5maWxlcyAlZAorPjU2MAlzdHJpbmcJPlwwCQluYW1lICIlLjE2cyIKKworCitIYWNrZXIgTm90ZXMKKy0tLS0tLS0tLS0tLQorCitTZWUgZnMvY3JhbWZzL1JFQURNRSBmb3IgZmlsZXN5c3RlbSBsYXlvdXQgYW5kIGltcGxlbWVudGF0aW9uIG5vdGVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9kYXgudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9kYXgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiZGU2NDAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2RheC50eHQKQEAgLTAsMCArMSw5NyBAQAorRGlyZWN0IEFjY2VzcyBmb3IgZmlsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01vdGl2YXRpb24KKy0tLS0tLS0tLS0KKworVGhlIHBhZ2UgY2FjaGUgaXMgdXN1YWxseSB1c2VkIHRvIGJ1ZmZlciByZWFkcyBhbmQgd3JpdGVzIHRvIGZpbGVzLgorSXQgaXMgYWxzbyB1c2VkIHRvIHByb3ZpZGUgdGhlIHBhZ2VzIHdoaWNoIGFyZSBtYXBwZWQgaW50byB1c2Vyc3BhY2UKK2J5IGEgY2FsbCB0byBtbWFwLgorCitGb3IgYmxvY2sgZGV2aWNlcyB0aGF0IGFyZSBtZW1vcnktbGlrZSwgdGhlIHBhZ2UgY2FjaGUgcGFnZXMgd291bGQgYmUKK3VubmVjZXNzYXJ5IGNvcGllcyBvZiB0aGUgb3JpZ2luYWwgc3RvcmFnZS4gIFRoZSBEQVggY29kZSByZW1vdmVzIHRoZQorZXh0cmEgY29weSBieSBwZXJmb3JtaW5nIHJlYWRzIGFuZCB3cml0ZXMgZGlyZWN0bHkgdG8gdGhlIHN0b3JhZ2UgZGV2aWNlLgorRm9yIGZpbGUgbWFwcGluZ3MsIHRoZSBzdG9yYWdlIGRldmljZSBpcyBtYXBwZWQgZGlyZWN0bHkgaW50byB1c2Vyc3BhY2UuCisKKworVXNhZ2UKKy0tLS0tCisKK0lmIHlvdSBoYXZlIGEgYmxvY2sgZGV2aWNlIHdoaWNoIHN1cHBvcnRzIERBWCwgeW91IGNhbiBtYWtlIGEgZmlsZXN5c3RlbQorb24gaXQgYXMgdXN1YWwuICBUaGUgREFYIGNvZGUgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgZmlsZXMgd2l0aCBhIGJsb2NrCitzaXplIGVxdWFsIHRvIHlvdXIga2VybmVsJ3MgUEFHRV9TSVpFLCBzbyB5b3UgbWF5IG5lZWQgdG8gc3BlY2lmeSBhIGJsb2NrCitzaXplIHdoZW4gY3JlYXRpbmcgdGhlIGZpbGVzeXN0ZW0uICBXaGVuIG1vdW50aW5nIGl0LCB1c2UgdGhlICItbyBkYXgiCitvcHRpb24gb24gdGhlIGNvbW1hbmQgbGluZSBvciBhZGQgJ2RheCcgdG8gdGhlIG9wdGlvbnMgaW4gL2V0Yy9mc3RhYi4KKworCitJbXBsZW1lbnRhdGlvbiBUaXBzIGZvciBCbG9jayBEcml2ZXIgV3JpdGVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVG8gc3VwcG9ydCBEQVggaW4geW91ciBibG9jayBkcml2ZXIsIGltcGxlbWVudCB0aGUgJ2RpcmVjdF9hY2Nlc3MnCitibG9jayBkZXZpY2Ugb3BlcmF0aW9uLiAgSXQgaXMgdXNlZCB0byB0cmFuc2xhdGUgdGhlIHNlY3RvciBudW1iZXIKKyhleHByZXNzZWQgaW4gdW5pdHMgb2YgNTEyLWJ5dGUgc2VjdG9ycykgdG8gYSBwYWdlIGZyYW1lIG51bWJlciAocGZuKQordGhhdCBpZGVudGlmaWVzIHRoZSBwaHlzaWNhbCBwYWdlIGZvciB0aGUgbWVtb3J5LiAgSXQgYWxzbyByZXR1cm5zIGEKK2tlcm5lbCB2aXJ0dWFsIGFkZHJlc3MgdGhhdCBjYW4gYmUgdXNlZCB0byBhY2Nlc3MgdGhlIG1lbW9yeS4KKworVGhlIGRpcmVjdF9hY2Nlc3MgbWV0aG9kIHRha2VzIGEgJ3NpemUnIHBhcmFtZXRlciB0aGF0IGluZGljYXRlcyB0aGUKK251bWJlciBvZiBieXRlcyBiZWluZyByZXF1ZXN0ZWQuICBUaGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0aGUgbnVtYmVyCitvZiBieXRlcyB0aGF0IGNhbiBiZSBjb250aWd1b3VzbHkgYWNjZXNzZWQgYXQgdGhhdCBvZmZzZXQuICBJdCBtYXkgYWxzbworcmV0dXJuIGEgbmVnYXRpdmUgZXJybm8gaWYgYW4gZXJyb3Igb2NjdXJzLgorCitJbiBvcmRlciB0byBzdXBwb3J0IHRoaXMgbWV0aG9kLCB0aGUgc3RvcmFnZSBtdXN0IGJlIGJ5dGUtYWNjZXNzaWJsZSBieQordGhlIENQVSBhdCBhbGwgdGltZXMuICBJZiB5b3VyIGRldmljZSB1c2VzIHBhZ2luZyB0ZWNobmlxdWVzIHRvIGV4cG9zZQorYSBsYXJnZSBhbW91bnQgb2YgbWVtb3J5IHRocm91Z2ggYSBzbWFsbGVyIHdpbmRvdywgdGhlbiB5b3UgY2Fubm90CitpbXBsZW1lbnQgZGlyZWN0X2FjY2Vzcy4gIEVxdWFsbHksIGlmIHlvdXIgZGV2aWNlIGNhbiBvY2Nhc2lvbmFsbHkKK3N0YWxsIHRoZSBDUFUgZm9yIGFuIGV4dGVuZGVkIHBlcmlvZCwgeW91IHNob3VsZCBhbHNvIG5vdCBhdHRlbXB0IHRvCitpbXBsZW1lbnQgZGlyZWN0X2FjY2Vzcy4KKworVGhlc2UgYmxvY2sgZGV2aWNlcyBtYXkgYmUgdXNlZCBmb3IgaW5zcGlyYXRpb246CistIGF4b25yYW06IEF4b24gRERSMiBkZXZpY2UgZHJpdmVyCistIGJyZDogUkFNIGJhY2tlZCBibG9jayBkZXZpY2UgZHJpdmVyCistIGRjc3NibGs6IHMzOTAgZGNzcyBibG9jayBkZXZpY2UgZHJpdmVyCisKKworSW1wbGVtZW50YXRpb24gVGlwcyBmb3IgRmlsZXN5c3RlbSBXcml0ZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRmlsZXN5c3RlbSBzdXBwb3J0IGNvbnNpc3RzIG9mCistIGFkZGluZyBzdXBwb3J0IHRvIG1hcmsgaW5vZGVzIGFzIGJlaW5nIERBWCBieSBzZXR0aW5nIHRoZSBTX0RBWCBmbGFnIGluCisgIGlfZmxhZ3MKKy0gaW1wbGVtZW50aW5nIHRoZSBkaXJlY3RfSU8gYWRkcmVzcyBzcGFjZSBvcGVyYXRpb24sIGFuZCBjYWxsaW5nCisgIGRheF9kb19pbygpIGluc3RlYWQgb2YgYmxvY2tkZXZfZGlyZWN0X0lPKCkgaWYgU19EQVggaXMgc2V0CistIGltcGxlbWVudGluZyBhbiBtbWFwIGZpbGUgb3BlcmF0aW9uIGZvciBEQVggZmlsZXMgd2hpY2ggc2V0cyB0aGUKKyAgVk1fTUlYRURNQVAgYW5kIFZNX0hVR0VQQUdFIGZsYWdzIG9uIHRoZSBWTUEsIGFuZCBzZXR0aW5nIHRoZSB2bV9vcHMgdG8KKyAgaW5jbHVkZSBoYW5kbGVycyBmb3IgZmF1bHQsIHBtZF9mYXVsdCBhbmQgcGFnZV9ta3dyaXRlICh3aGljaCBzaG91bGQKKyAgcHJvYmFibHkgY2FsbCBkYXhfZmF1bHQoKSwgZGF4X3BtZF9mYXVsdCgpIGFuZCBkYXhfbWt3cml0ZSgpLCBwYXNzaW5nIHRoZQorICBhcHByb3ByaWF0ZSBnZXRfYmxvY2soKSBjYWxsYmFjaykKKy0gY2FsbGluZyBkYXhfdHJ1bmNhdGVfcGFnZSgpIGluc3RlYWQgb2YgYmxvY2tfdHJ1bmNhdGVfcGFnZSgpIGZvciBEQVggZmlsZXMKKy0gY2FsbGluZyBkYXhfemVyb19wYWdlX3JhbmdlKCkgaW5zdGVhZCBvZiB6ZXJvX3VzZXIoKSBmb3IgREFYIGZpbGVzCistIGVuc3VyaW5nIHRoYXQgdGhlcmUgaXMgc3VmZmljaWVudCBsb2NraW5nIGJldHdlZW4gcmVhZHMsIHdyaXRlcywKKyAgdHJ1bmNhdGVzIGFuZCBwYWdlIGZhdWx0cworCitUaGUgZ2V0X2Jsb2NrKCkgY2FsbGJhY2sgcGFzc2VkIHRvIHRoZSBEQVggZnVuY3Rpb25zIG1heSByZXR1cm4KK3VuaW5pdGlhbGlzZWQgZXh0ZW50cy4gIElmIGl0IGRvZXMsIGl0IG11c3QgZW5zdXJlIHRoYXQgc2ltdWx0YW5lb3VzCitjYWxscyB0byBnZXRfYmxvY2soKSAoZm9yIGV4YW1wbGUgYnkgYSBwYWdlLWZhdWx0IHJhY2luZyB3aXRoIGEgcmVhZCgpCitvciBhIHdyaXRlKCkpIHdvcmsgY29ycmVjdGx5LgorCitUaGVzZSBmaWxlc3lzdGVtcyBtYXkgYmUgdXNlZCBmb3IgaW5zcGlyYXRpb246CistIGV4dDI6IHRoZSBzZWNvbmQgZXh0ZW5kZWQgZmlsZXN5c3RlbSwgc2VlIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXh0Mi50eHQKKy0gZXh0NDogdGhlIGZvdXJ0aCBleHRlbmRlZCBmaWxlc3lzdGVtLCBzZWUgRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9leHQ0LnR4dAorCisKK1Nob3J0Y29taW5ncworLS0tLS0tLS0tLS0tCisKK0V2ZW4gaWYgdGhlIGtlcm5lbCBvciBpdHMgbW9kdWxlcyBhcmUgc3RvcmVkIG9uIGEgZmlsZXN5c3RlbSB0aGF0IHN1cHBvcnRzCitEQVggb24gYSBibG9jayBkZXZpY2UgdGhhdCBzdXBwb3J0cyBEQVgsIHRoZXkgd2lsbCBzdGlsbCBiZSBjb3BpZWQgaW50byBSQU0uCisKK1RoZSBEQVggY29kZSBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseSBvbiBhcmNoaXRlY3R1cmVzIHdoaWNoIGhhdmUgdmlydHVhbGx5CittYXBwZWQgY2FjaGVzIHN1Y2ggYXMgQVJNLCBNSVBTIGFuZCBTUEFSQy4KKworQ2FsbGluZyBnZXRfdXNlcl9wYWdlcygpIG9uIGEgcmFuZ2Ugb2YgdXNlciBtZW1vcnkgdGhhdCBoYXMgYmVlbiBtbWFwZWQKK2Zyb20gYSBEQVggZmlsZSB3aWxsIGZhaWwgYXMgdGhlcmUgYXJlIG5vICdzdHJ1Y3QgcGFnZScgdG8gZGVzY3JpYmUKK3Rob3NlIHBhZ2VzLiAgVGhpcyBwcm9ibGVtIGlzIGJlaW5nIHdvcmtlZCBvbi4gIFRoYXQgbWVhbnMgdGhhdCBPX0RJUkVDVAorcmVhZHMvd3JpdGVzIHRvIHRob3NlIG1lbW9yeSByYW5nZXMgZnJvbSBhIG5vbi1EQVggZmlsZSB3aWxsIGZhaWwgKG5vdGUKK3RoYXQgT19ESVJFQ1QgcmVhZHMvd3JpdGVzIF9vZiBhIERBWCBmaWxlXyBkbyB3b3JrLCBpdCBpcyB0aGUgbWVtb3J5Cit0aGF0IGlzIGJlaW5nIGFjY2Vzc2VkIHRoYXQgaXMga2V5IGhlcmUpLiAgT3RoZXIgdGhpbmdzIHRoYXQgd2lsbCBub3QKK3dvcmsgaW5jbHVkZSBSRE1BLCBzZW5kZmlsZSgpIGFuZCBzcGxpY2UoKS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZGVidWdmcy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2RlYnVnZnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmNDVmNzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2RlYnVnZnMudHh0CkBAIC0wLDAgKzEsMjMxIEBACitDb3B5cmlnaHQgMjAwOSBKb25hdGhhbiBDb3JiZXQgPGNvcmJldEBsd24ubmV0PgorCitEZWJ1Z2ZzIGV4aXN0cyBhcyBhIHNpbXBsZSB3YXkgZm9yIGtlcm5lbCBkZXZlbG9wZXJzIHRvIG1ha2UgaW5mb3JtYXRpb24KK2F2YWlsYWJsZSB0byB1c2VyIHNwYWNlLiAgVW5saWtlIC9wcm9jLCB3aGljaCBpcyBvbmx5IG1lYW50IGZvciBpbmZvcm1hdGlvbgorYWJvdXQgYSBwcm9jZXNzLCBvciBzeXNmcywgd2hpY2ggaGFzIHN0cmljdCBvbmUtdmFsdWUtcGVyLWZpbGUgcnVsZXMsCitkZWJ1Z2ZzIGhhcyBubyBydWxlcyBhdCBhbGwuICBEZXZlbG9wZXJzIGNhbiBwdXQgYW55IGluZm9ybWF0aW9uIHRoZXkgd2FudAordGhlcmUuICBUaGUgZGVidWdmcyBmaWxlc3lzdGVtIGlzIGFsc28gaW50ZW5kZWQgdG8gbm90IHNlcnZlIGFzIGEgc3RhYmxlCitBQkkgdG8gdXNlciBzcGFjZTsgaW4gdGhlb3J5LCB0aGVyZSBhcmUgbm8gc3RhYmlsaXR5IGNvbnN0cmFpbnRzIHBsYWNlZCBvbgorZmlsZXMgZXhwb3J0ZWQgdGhlcmUuICBUaGUgcmVhbCB3b3JsZCBpcyBub3QgYWx3YXlzIHNvIHNpbXBsZSwgdGhvdWdoIFsxXTsKK2V2ZW4gZGVidWdmcyBpbnRlcmZhY2VzIGFyZSBiZXN0IGRlc2lnbmVkIHdpdGggdGhlIGlkZWEgdGhhdCB0aGV5IHdpbGwgbmVlZAordG8gYmUgbWFpbnRhaW5lZCBmb3JldmVyLgorCitEZWJ1Z2ZzIGlzIHR5cGljYWxseSBtb3VudGVkIHdpdGggYSBjb21tYW5kIGxpa2U6CisKKyAgICBtb3VudCAtdCBkZWJ1Z2ZzIG5vbmUgL3N5cy9rZXJuZWwvZGVidWcKKworKE9yIGFuIGVxdWl2YWxlbnQgL2V0Yy9mc3RhYiBsaW5lKS4KK1RoZSBkZWJ1Z2ZzIHJvb3QgZGlyZWN0b3J5IGlzIGFjY2Vzc2libGUgb25seSB0byB0aGUgcm9vdCB1c2VyIGJ5CitkZWZhdWx0LiBUbyBjaGFuZ2UgYWNjZXNzIHRvIHRoZSB0cmVlIHRoZSAidWlkIiwgImdpZCIgYW5kICJtb2RlIiBtb3VudAorb3B0aW9ucyBjYW4gYmUgdXNlZC4KKworTm90ZSB0aGF0IHRoZSBkZWJ1Z2ZzIEFQSSBpcyBleHBvcnRlZCBHUEwtb25seSB0byBtb2R1bGVzLgorCitDb2RlIHVzaW5nIGRlYnVnZnMgc2hvdWxkIGluY2x1ZGUgPGxpbnV4L2RlYnVnZnMuaD4uICBUaGVuLCB0aGUgZmlyc3Qgb3JkZXIKK29mIGJ1c2luZXNzIHdpbGwgYmUgdG8gY3JlYXRlIGF0IGxlYXN0IG9uZSBkaXJlY3RvcnkgdG8gaG9sZCBhIHNldCBvZgorZGVidWdmcyBmaWxlczoKKworICAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfY3JlYXRlX2Rpcihjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQpOworCitUaGlzIGNhbGwsIGlmIHN1Y2Nlc3NmdWwsIHdpbGwgbWFrZSBhIGRpcmVjdG9yeSBjYWxsZWQgbmFtZSB1bmRlcm5lYXRoIHRoZQoraW5kaWNhdGVkIHBhcmVudCBkaXJlY3RvcnkuICBJZiBwYXJlbnQgaXMgTlVMTCwgdGhlIGRpcmVjdG9yeSB3aWxsIGJlCitjcmVhdGVkIGluIHRoZSBkZWJ1Z2ZzIHJvb3QuICBPbiBzdWNjZXNzLCB0aGUgcmV0dXJuIHZhbHVlIGlzIGEgc3RydWN0CitkZW50cnkgcG9pbnRlciB3aGljaCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeSAoYW5kIHRvCitjbGVhbiBpdCB1cCBhdCB0aGUgZW5kKS4gIEEgTlVMTCByZXR1cm4gdmFsdWUgaW5kaWNhdGVzIHRoYXQgc29tZXRoaW5nIHdlbnQKK3dyb25nLiAgSWYgRVJSX1BUUigtRU5PREVWKSBpcyByZXR1cm5lZCwgdGhhdCBpcyBhbiBpbmRpY2F0aW9uIHRoYXQgdGhlCitrZXJuZWwgaGFzIGJlZW4gYnVpbHQgd2l0aG91dCBkZWJ1Z2ZzIHN1cHBvcnQgYW5kIG5vbmUgb2YgdGhlIGZ1bmN0aW9ucworZGVzY3JpYmVkIGJlbG93IHdpbGwgd29yay4KKworVGhlIG1vc3QgZ2VuZXJhbCB3YXkgdG8gY3JlYXRlIGEgZmlsZSB3aXRoaW4gYSBkZWJ1Z2ZzIGRpcmVjdG9yeSBpcyB3aXRoOgorCisgICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19jcmVhdGVfZmlsZShjb25zdCBjaGFyICpuYW1lLCB1bW9kZV90IG1vZGUsCisJCQkJICAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCwgdm9pZCAqZGF0YSwKKwkJCQkgICAgICAgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqZm9wcyk7CisKK0hlcmUsIG5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gY3JlYXRlLCBtb2RlIGRlc2NyaWJlcyB0aGUgYWNjZXNzCitwZXJtaXNzaW9ucyB0aGUgZmlsZSBzaG91bGQgaGF2ZSwgcGFyZW50IGluZGljYXRlcyB0aGUgZGlyZWN0b3J5IHdoaWNoCitzaG91bGQgaG9sZCB0aGUgZmlsZSwgZGF0YSB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgaV9wcml2YXRlIGZpZWxkIG9mIHRoZQorcmVzdWx0aW5nIGlub2RlIHN0cnVjdHVyZSwgYW5kIGZvcHMgaXMgYSBzZXQgb2YgZmlsZSBvcGVyYXRpb25zIHdoaWNoCitpbXBsZW1lbnQgdGhlIGZpbGUncyBiZWhhdmlvci4gIEF0IGEgbWluaW11bSwgdGhlIHJlYWQoKSBhbmQvb3Igd3JpdGUoKQorb3BlcmF0aW9ucyBzaG91bGQgYmUgcHJvdmlkZWQ7IG90aGVycyBjYW4gYmUgaW5jbHVkZWQgYXMgbmVlZGVkLiAgQWdhaW4sCit0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgYSBkZW50cnkgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBmaWxlLCBOVUxMIGZvcgorZXJyb3IsIG9yIEVSUl9QVFIoLUVOT0RFVikgaWYgZGVidWdmcyBzdXBwb3J0IGlzIG1pc3NpbmcuCisKK0NyZWF0ZSBhIGZpbGUgd2l0aCBhbiBpbml0aWFsIHNpemUsIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gY2FuIGJlIHVzZWQKK2luc3RlYWQ6CisKKyAgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX2NyZWF0ZV9maWxlX3NpemUoY29uc3QgY2hhciAqbmFtZSwgdW1vZGVfdCBtb2RlLAorCQkJCXN0cnVjdCBkZW50cnkgKnBhcmVudCwgdm9pZCAqZGF0YSwKKwkJCQljb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpmb3BzLAorCQkJCWxvZmZfdCBmaWxlX3NpemUpOworCitmaWxlX3NpemUgaXMgdGhlIGluaXRpYWwgZmlsZSBzaXplLiBUaGUgb3RoZXIgcGFyYW1ldGVycyBhcmUgdGhlIHNhbWUKK2FzIHRoZSBmdW5jdGlvbiBkZWJ1Z2ZzX2NyZWF0ZV9maWxlLgorCitJbiBhIG51bWJlciBvZiBjYXNlcywgdGhlIGNyZWF0aW9uIG9mIGEgc2V0IG9mIGZpbGUgb3BlcmF0aW9ucyBpcyBub3QKK2FjdHVhbGx5IG5lY2Vzc2FyeTsgdGhlIGRlYnVnZnMgY29kZSBwcm92aWRlcyBhIG51bWJlciBvZiBoZWxwZXIgZnVuY3Rpb25zCitmb3Igc2ltcGxlIHNpdHVhdGlvbnMuICBGaWxlcyBjb250YWluaW5nIGEgc2luZ2xlIGludGVnZXIgdmFsdWUgY2FuIGJlCitjcmVhdGVkIHdpdGggYW55IG9mOgorCisgICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19jcmVhdGVfdTgoY29uc3QgY2hhciAqbmFtZSwgdW1vZGVfdCBtb2RlLAorCQkJCSAgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LCB1OCAqdmFsdWUpOworICAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfY3JlYXRlX3UxNihjb25zdCBjaGFyICpuYW1lLCB1bW9kZV90IG1vZGUsCisJCQkJICAgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LCB1MTYgKnZhbHVlKTsKKyAgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX2NyZWF0ZV91MzIoY29uc3QgY2hhciAqbmFtZSwgdW1vZGVfdCBtb2RlLAorCQkJCSAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCwgdTMyICp2YWx1ZSk7CisgICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19jcmVhdGVfdTY0KGNvbnN0IGNoYXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwKKwkJCQkgICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHU2NCAqdmFsdWUpOworCitUaGVzZSBmaWxlcyBzdXBwb3J0IGJvdGggcmVhZGluZyBhbmQgd3JpdGluZyB0aGUgZ2l2ZW4gdmFsdWU7IGlmIGEgc3BlY2lmaWMKK2ZpbGUgc2hvdWxkIG5vdCBiZSB3cml0dGVuIHRvLCBzaW1wbHkgc2V0IHRoZSBtb2RlIGJpdHMgYWNjb3JkaW5nbHkuICBUaGUKK3ZhbHVlcyBpbiB0aGVzZSBmaWxlcyBhcmUgaW4gZGVjaW1hbDsgaWYgaGV4YWRlY2ltYWwgaXMgbW9yZSBhcHByb3ByaWF0ZSwKK3RoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGNhbiBiZSB1c2VkIGluc3RlYWQ6CisKKyAgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX2NyZWF0ZV94OChjb25zdCBjaGFyICpuYW1lLCB1bW9kZV90IG1vZGUsCisJCQkJICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHU4ICp2YWx1ZSk7CisgICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19jcmVhdGVfeDE2KGNvbnN0IGNoYXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwKKwkJCQkgICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHUxNiAqdmFsdWUpOworICAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfY3JlYXRlX3gzMihjb25zdCBjaGFyICpuYW1lLCB1bW9kZV90IG1vZGUsCisJCQkJICAgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LCB1MzIgKnZhbHVlKTsKKyAgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX2NyZWF0ZV94NjQoY29uc3QgY2hhciAqbmFtZSwgdW1vZGVfdCBtb2RlLAorCQkJCSAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCwgdTY0ICp2YWx1ZSk7CisKK1RoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZnVsIGFzIGxvbmcgYXMgdGhlIGRldmVsb3BlciBrbm93cyB0aGUgc2l6ZSBvZiB0aGUKK3ZhbHVlIHRvIGJlIGV4cG9ydGVkLiAgU29tZSB0eXBlcyBjYW4gaGF2ZSBkaWZmZXJlbnQgd2lkdGhzIG9uIGRpZmZlcmVudAorYXJjaGl0ZWN0dXJlcywgdGhvdWdoLCBjb21wbGljYXRpbmcgdGhlIHNpdHVhdGlvbiBzb21ld2hhdC4gIFRoZXJlIGlzIGEKK2Z1bmN0aW9uIG1lYW50IHRvIGhlbHAgb3V0IGluIG9uZSBzcGVjaWFsIGNhc2U6CisKKyAgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX2NyZWF0ZV9zaXplX3QoY29uc3QgY2hhciAqbmFtZSwgdW1vZGVfdCBtb2RlLAorCQkJCSAgICAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCwgCisJCQkJCSBzaXplX3QgKnZhbHVlKTsKKworQXMgbWlnaHQgYmUgZXhwZWN0ZWQsIHRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGUgYSBkZWJ1Z2ZzIGZpbGUgdG8gcmVwcmVzZW50CithIHZhcmlhYmxlIG9mIHR5cGUgc2l6ZV90LgorCitCb29sZWFuIHZhbHVlcyBjYW4gYmUgcGxhY2VkIGluIGRlYnVnZnMgd2l0aDoKKworICAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfY3JlYXRlX2Jvb2woY29uc3QgY2hhciAqbmFtZSwgdW1vZGVfdCBtb2RlLAorCQkJCSAgICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIGJvb2wgKnZhbHVlKTsKKworQSByZWFkIG9uIHRoZSByZXN1bHRpbmcgZmlsZSB3aWxsIHlpZWxkIGVpdGhlciBZIChmb3Igbm9uLXplcm8gdmFsdWVzKSBvcgorTiwgZm9sbG93ZWQgYnkgYSBuZXdsaW5lLiAgSWYgd3JpdHRlbiB0bywgaXQgd2lsbCBhY2NlcHQgZWl0aGVyIHVwcGVyLSBvcgorbG93ZXItY2FzZSB2YWx1ZXMsIG9yIDEgb3IgMC4gIEFueSBvdGhlciBpbnB1dCB3aWxsIGJlIHNpbGVudGx5IGlnbm9yZWQuCisKK0Fsc28sIGF0b21pY190IHZhbHVlcyBjYW4gYmUgcGxhY2VkIGluIGRlYnVnZnMgd2l0aDoKKworICAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfY3JlYXRlX2F0b21pY190KGNvbnN0IGNoYXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwKKwkJCQlzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIGF0b21pY190ICp2YWx1ZSkKKworQSByZWFkIG9mIHRoaXMgZmlsZSB3aWxsIGdldCBhdG9taWNfdCB2YWx1ZXMsIGFuZCBhIHdyaXRlIG9mIHRoaXMgZmlsZQord2lsbCBzZXQgYXRvbWljX3QgdmFsdWVzLgorCitBbm90aGVyIG9wdGlvbiBpcyBleHBvcnRpbmcgYSBibG9jayBvZiBhcmJpdHJhcnkgYmluYXJ5IGRhdGEsIHdpdGgKK3RoaXMgc3RydWN0dXJlIGFuZCBmdW5jdGlvbjoKKworICAgIHN0cnVjdCBkZWJ1Z2ZzX2Jsb2Jfd3JhcHBlciB7CisJdm9pZCAqZGF0YTsKKwl1bnNpZ25lZCBsb25nIHNpemU7CisgICAgfTsKKworICAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfY3JlYXRlX2Jsb2IoY29uc3QgY2hhciAqbmFtZSwgdW1vZGVfdCBtb2RlLAorCQkJCSAgICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCisJCQkJICAgICAgIHN0cnVjdCBkZWJ1Z2ZzX2Jsb2Jfd3JhcHBlciAqYmxvYik7CisKK0EgcmVhZCBvZiB0aGlzIGZpbGUgd2lsbCByZXR1cm4gdGhlIGRhdGEgcG9pbnRlZCB0byBieSB0aGUKK2RlYnVnZnNfYmxvYl93cmFwcGVyIHN0cnVjdHVyZS4gIFNvbWUgZHJpdmVycyB1c2UgImJsb2JzIiBhcyBhIHNpbXBsZSB3YXkKK3RvIHJldHVybiBzZXZlcmFsIGxpbmVzIG9mIChzdGF0aWMpIGZvcm1hdHRlZCB0ZXh0IG91dHB1dC4gIFRoaXMgZnVuY3Rpb24KK2NhbiBiZSB1c2VkIHRvIGV4cG9ydCBiaW5hcnkgaW5mb3JtYXRpb24sIGJ1dCB0aGVyZSBkb2VzIG5vdCBhcHBlYXIgdG8gYmUKK2FueSBjb2RlIHdoaWNoIGRvZXMgc28gaW4gdGhlIG1haW5saW5lLiAgTm90ZSB0aGF0IGFsbCBmaWxlcyBjcmVhdGVkIHdpdGgKK2RlYnVnZnNfY3JlYXRlX2Jsb2IoKSBhcmUgcmVhZC1vbmx5LgorCitJZiB5b3Ugd2FudCB0byBkdW1wIGEgYmxvY2sgb2YgcmVnaXN0ZXJzIChzb21ldGhpbmcgdGhhdCBoYXBwZW5zIHF1aXRlCitvZnRlbiBkdXJpbmcgZGV2ZWxvcG1lbnQsIGV2ZW4gaWYgbGl0dGxlIHN1Y2ggY29kZSByZWFjaGVzIG1haW5saW5lLgorRGVidWdmcyBvZmZlcnMgdHdvIGZ1bmN0aW9uczogb25lIHRvIG1ha2UgYSByZWdpc3RlcnMtb25seSBmaWxlLCBhbmQKK2Fub3RoZXIgdG8gaW5zZXJ0IGEgcmVnaXN0ZXIgYmxvY2sgaW4gdGhlIG1pZGRsZSBvZiBhbm90aGVyIHNlcXVlbnRpYWwKK2ZpbGUuCisKKyAgICBzdHJ1Y3QgZGVidWdmc19yZWczMiB7CisJY2hhciAqbmFtZTsKKwl1bnNpZ25lZCBsb25nIG9mZnNldDsKKyAgICB9OworCisgICAgc3RydWN0IGRlYnVnZnNfcmVnc2V0MzIgeworCXN0cnVjdCBkZWJ1Z2ZzX3JlZzMyICpyZWdzOworCWludCBucmVnczsKKwl2b2lkIF9faW9tZW0gKmJhc2U7CisgICAgfTsKKworICAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfY3JlYXRlX3JlZ3NldDMyKGNvbnN0IGNoYXIgKm5hbWUsIHVtb2RlX3QgbW9kZSwKKwkJCQkgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCwKKwkJCQkgICAgIHN0cnVjdCBkZWJ1Z2ZzX3JlZ3NldDMyICpyZWdzZXQpOworCisgICAgdm9pZCBkZWJ1Z2ZzX3ByaW50X3JlZ3MzMihzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHN0cnVjdCBkZWJ1Z2ZzX3JlZzMyICpyZWdzLAorCQkJIGludCBucmVncywgdm9pZCBfX2lvbWVtICpiYXNlLCBjaGFyICpwcmVmaXgpOworCitUaGUgImJhc2UiIGFyZ3VtZW50IG1heSBiZSAwLCBidXQgeW91IG1heSB3YW50IHRvIGJ1aWxkIHRoZSByZWczMiBhcnJheQordXNpbmcgX19zdHJpbmdpZnksIGFuZCBhIG51bWJlciBvZiByZWdpc3RlciBuYW1lcyAobWFjcm9zKSBhcmUgYWN0dWFsbHkKK2J5dGUgb2Zmc2V0cyBvdmVyIGEgYmFzZSBmb3IgdGhlIHJlZ2lzdGVyIGJsb2NrLgorCitJZiB5b3Ugd2FudCB0byBkdW1wIGFuIHUzMiBhcnJheSBpbiBkZWJ1Z2ZzLCB5b3UgY2FuIGNyZWF0ZSBmaWxlIHdpdGg6CisKKyAgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX2NyZWF0ZV91MzJfYXJyYXkoY29uc3QgY2hhciAqbmFtZSwgdW1vZGVfdCBtb2RlLAorCQkJc3RydWN0IGRlbnRyeSAqcGFyZW50LAorCQkJdTMyICphcnJheSwgdTMyIGVsZW1lbnRzKTsKKworVGhlICJhcnJheSIgYXJndW1lbnQgcHJvdmlkZXMgZGF0YSwgYW5kIHRoZSAiZWxlbWVudHMiIGFyZ3VtZW50IGlzCit0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBhcnJheS4gTm90ZTogT25jZSBhcnJheSBpcyBjcmVhdGVkIGl0cworc2l6ZSBjYW4gbm90IGJlIGNoYW5nZWQuCisKK1RoZXJlIGlzIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBkZXZpY2UgcmVsYXRlZCBzZXFfZmlsZToKKworICAgc3RydWN0IGRlbnRyeSAqZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCQljb25zdCBjaGFyICpuYW1lLAorCQkJCXN0cnVjdCBkZW50cnkgKnBhcmVudCwKKwkJCQlpbnQgKCpyZWFkX2ZuKShzdHJ1Y3Qgc2VxX2ZpbGUgKnMsCisJCQkJCXZvaWQgKmRhdGEpKTsKKworVGhlICJkZXYiIGFyZ3VtZW50IGlzIHRoZSBkZXZpY2UgcmVsYXRlZCB0byB0aGlzIGRlYnVnZnMgZmlsZSwgYW5kCit0aGUgInJlYWRfZm4iIGlzIGEgZnVuY3Rpb24gcG9pbnRlciB3aGljaCB0byBiZSBjYWxsZWQgdG8gcHJpbnQgdGhlCitzZXFfZmlsZSBjb250ZW50LgorCitUaGVyZSBhcmUgYSBjb3VwbGUgb2Ygb3RoZXIgZGlyZWN0b3J5LW9yaWVudGVkIGhlbHBlciBmdW5jdGlvbnM6CisKKyAgICBzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3JlbmFtZShzdHJ1Y3QgZGVudHJ5ICpvbGRfZGlyLCAKKyAgICAJCQkJICBzdHJ1Y3QgZGVudHJ5ICpvbGRfZGVudHJ5LAorCQkgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpuZXdfZGlyLCAKKwkJCQkgIGNvbnN0IGNoYXIgKm5ld19uYW1lKTsKKworICAgIHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfY3JlYXRlX3N5bWxpbmsoY29uc3QgY2hhciAqbmFtZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCisJCQkJICAgICAgCSAgY29uc3QgY2hhciAqdGFyZ2V0KTsKKworQSBjYWxsIHRvIGRlYnVnZnNfcmVuYW1lKCkgd2lsbCBnaXZlIGEgbmV3IG5hbWUgdG8gYW4gZXhpc3RpbmcgZGVidWdmcworZmlsZSwgcG9zc2libHkgaW4gYSBkaWZmZXJlbnQgZGlyZWN0b3J5LiAgVGhlIG5ld19uYW1lIG11c3Qgbm90IGV4aXN0IHByaW9yCit0byB0aGUgY2FsbDsgdGhlIHJldHVybiB2YWx1ZSBpcyBvbGRfZGVudHJ5IHdpdGggdXBkYXRlZCBpbmZvcm1hdGlvbi4KK1N5bWJvbGljIGxpbmtzIGNhbiBiZSBjcmVhdGVkIHdpdGggZGVidWdmc19jcmVhdGVfc3ltbGluaygpLgorCitUaGVyZSBpcyBvbmUgaW1wb3J0YW50IHRoaW5nIHRoYXQgYWxsIGRlYnVnZnMgdXNlcnMgbXVzdCB0YWtlIGludG8gYWNjb3VudDoKK3RoZXJlIGlzIG5vIGF1dG9tYXRpYyBjbGVhbnVwIG9mIGFueSBkaXJlY3RvcmllcyBjcmVhdGVkIGluIGRlYnVnZnMuICBJZiBhCittb2R1bGUgaXMgdW5sb2FkZWQgd2l0aG91dCBleHBsaWNpdGx5IHJlbW92aW5nIGRlYnVnZnMgZW50cmllcywgdGhlIHJlc3VsdAord2lsbCBiZSBhIGxvdCBvZiBzdGFsZSBwb2ludGVycyBhbmQgbm8gZW5kIG9mIGhpZ2hseSBhbnRpc29jaWFsIGJlaGF2aW9yLgorU28gYWxsIGRlYnVnZnMgdXNlcnMgLSBhdCBsZWFzdCB0aG9zZSB3aGljaCBjYW4gYmUgYnVpbHQgYXMgbW9kdWxlcyAtIG11c3QKK2JlIHByZXBhcmVkIHRvIHJlbW92ZSBhbGwgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRoZXkgY3JlYXRlIHRoZXJlLiAgQSBmaWxlCitjYW4gYmUgcmVtb3ZlZCB3aXRoOgorCisgICAgdm9pZCBkZWJ1Z2ZzX3JlbW92ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOworCitUaGUgZGVudHJ5IHZhbHVlIGNhbiBiZSBOVUxMLCBpbiB3aGljaCBjYXNlIG5vdGhpbmcgd2lsbCBiZSByZW1vdmVkLgorCitPbmNlIHVwb24gYSB0aW1lLCBkZWJ1Z2ZzIHVzZXJzIHdlcmUgcmVxdWlyZWQgdG8gcmVtZW1iZXIgdGhlIGRlbnRyeQorcG9pbnRlciBmb3IgZXZlcnkgZGVidWdmcyBmaWxlIHRoZXkgY3JlYXRlZCBzbyB0aGF0IGFsbCBmaWxlcyBjb3VsZCBiZQorY2xlYW5lZCB1cC4gIFdlIGxpdmUgaW4gbW9yZSBjaXZpbGl6ZWQgdGltZXMgbm93LCB0aG91Z2gsIGFuZCBkZWJ1Z2ZzIHVzZXJzCitjYW4gY2FsbDoKKworICAgIHZvaWQgZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CisKK0lmIHRoaXMgZnVuY3Rpb24gaXMgcGFzc2VkIGEgcG9pbnRlciBmb3IgdGhlIGRlbnRyeSBjb3JyZXNwb25kaW5nIHRvIHRoZQordG9wLWxldmVsIGRpcmVjdG9yeSwgdGhlIGVudGlyZSBoaWVyYXJjaHkgYmVsb3cgdGhhdCBkaXJlY3Rvcnkgd2lsbCBiZQorcmVtb3ZlZC4KKworTm90ZXM6CisJWzFdIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzMwOTI5OC8KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZGV2cHRzLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZGV2cHRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGRmZmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9kZXZwdHMudHh0CkBAIC0wLDAgKzEsMTMyIEBACisKK1RvIHN1cHBvcnQgY29udGFpbmVycywgd2Ugbm93IGFsbG93IG11bHRpcGxlIGluc3RhbmNlcyBvZiBkZXZwdHMgZmlsZXN5c3RlbSwKK3N1Y2ggdGhhdCBpbmRpY2VzIG9mIHB0eXMgYWxsb2NhdGVkIGluIG9uZSBpbnN0YW5jZSBhcmUgaW5kZXBlbmRlbnQgb2YgaW5kaWNlcworYWxsb2NhdGVkIGluIG90aGVyIGluc3RhbmNlcyBvZiBkZXZwdHMuCisKK1RvIHByZXNlcnZlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHRoaXMgc3VwcG9ydCBmb3IgbXVsdGlwbGUgaW5zdGFuY2VzIGlzCitlbmFibGVkIG9ubHkgaWY6CisKKwktIENPTkZJR19ERVZQVFNfTVVMVElQTEVfSU5TVEFOQ0VTPXksIGFuZAorCS0gJy1vIG5ld2luc3RhbmNlJyBtb3VudCBvcHRpb24gaXMgc3BlY2lmaWVkIHdoaWxlIG1vdW50aW5nIGRldnB0cworCitJT1csIGRldnB0cyBub3cgc3VwcG9ydHMgYm90aCBzaW5nbGUtaW5zdGFuY2UgYW5kIG11bHRpLWluc3RhbmNlIHNlbWFudGljcy4KKworSWYgQ09ORklHX0RFVlBUU19NVUxUSVBMRV9JTlNUQU5DRVM9biwgdGhlcmUgaXMgbm8gY2hhbmdlIGluIGJlaGF2aW9yIGFuZAordGhpcyByZWZlcnJlZCB0byBhcyB0aGUgImxlZ2FjeSIgbW9kZS4gSW4gdGhpcyBtb2RlLCB0aGUgbmV3IG1vdW50IG9wdGlvbnMKKygtbyBuZXdpbnN0YW5jZSBhbmQgLW8gcHRteG1vZGUpIHdpbGwgYmUgaWdub3JlZCB3aXRoIGEgJ2JvZ3VzIG9wdGlvbicgbWVzc2FnZQorb24gY29uc29sZS4KKworSWYgQ09ORklHX0RFVlBUU19NVUxUSVBMRV9JTlNUQU5DRVM9eSBhbmQgZGV2cHRzIGlzIG1vdW50ZWQgd2l0aG91dCB0aGUKKyduZXdpbnN0YW5jZScgb3B0aW9uIChhcyBpbiBjdXJyZW50IHN0YXJ0LXVwIHNjcmlwdHMpIHRoZSBuZXcgbW91bnQgYmluZHMKK3RvIHRoZSBpbml0aWFsIGtlcm5lbCBtb3VudCBvZiBkZXZwdHMuIFRoaXMgbW9kZSBpcyByZWZlcnJlZCB0byBhcyB0aGUKKydzaW5nbGUtaW5zdGFuY2UnIG1vZGUgYW5kIHRoZSBjdXJyZW50LCBzaW5nbGUtaW5zdGFuY2Ugc2VtYW50aWNzIGFyZQorcHJlc2VydmVkLCBpLmUgUFRZcyBhcmUgY29tbW9uIGFjcm9zcyB0aGUgc3lzdGVtLgorCitUaGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBzaW5nbGUtaW5zdGFuY2UgbW9kZSBhbmQgdGhlIGxlZ2FjeSBtb2RlCitpcyB0aGUgcHJlc2VuY2Ugb2YgbmV3LCAnL2Rldi9wdHMvcHRteCcgbm9kZSB3aXRoIHBlcm1pc3Npb25zIDAwMDAsIHdoaWNoCitjYW4gc2FmZWx5IGJlIGlnbm9yZWQuCisKK0lmIENPTkZJR19ERVZQVFNfTVVMVElQTEVfSU5TVEFOQ0VTPXkgYW5kICduZXdpbnN0YW5jZScgb3B0aW9uIGlzIHNwZWNpZmllZCwKK3RoZSBtb3VudCBpcyBjb25zaWRlcmVkIHRvIGJlIGluIHRoZSBtdWx0aS1pbnN0YW5jZSBtb2RlIGFuZCBhIG5ldyBpbnN0YW5jZQorb2YgdGhlIGRldnB0cyBmcyBpcyBjcmVhdGVkLiBBbnkgcHR5cyBjcmVhdGVkIGluIHRoaXMgaW5zdGFuY2UgYXJlIGluZGVwZW5kZW50CitvZiBwdHlzIGluIG90aGVyIGluc3RhbmNlcyBvZiBkZXZwdHMuIExpa2UgaW4gdGhlIHNpbmdsZS1pbnN0YW5jZSBtb2RlLCB0aGUKKy9kZXYvcHRzL3B0bXggbm9kZSBpcyBwcmVzZW50LiBUbyBlZmZlY3RpdmVseSB1c2UgdGhlIG11bHRpLWluc3RhbmNlIG1vZGUsCitvcGVuIG9mIC9kZXYvcHRteCBtdXN0IGJlIGEgcmVkaXJlY3RlZCB0byAnL2Rldi9wdHMvcHRteCcgdXNpbmcgYSBzeW1saW5rIG9yCitiaW5kLW1vdW50LgorCitFZzogQSBjb250YWluZXIgc3RhcnR1cCBzY3JpcHQgY291bGQgZG8gdGhlIGZvbGxvd2luZzoKKworCSQgY2htb2QgMDY2NiAvZGV2L3B0cy9wdG14CisJJCBybSAvZGV2L3B0bXgKKwkkIGxuIC1zIHB0cy9wdG14IC9kZXYvcHRteAorCSQgbnNfZXhlYyAtY20gL2Jpbi9iYXNoCisKKwkjIFdlIGFyZSBub3cgaW4gbmV3IGNvbnRhaW5lcgorCisJJCB1bW91bnQgL2Rldi9wdHMKKwkkIG1vdW50IC10IGRldnB0cyAtbyBuZXdpbnN0YW5jZSBseGNwdHMgL2Rldi9wdHMKKwkkIHNzaGQgLXAgMTIzNAorCit3aGVyZSAnbnNfZXhlYyAtY20gL2Jpbi9iYXNoJyBjYWxscyBjbG9uZSgpIHdpdGggQ0xPTkVfTkVXTlMgZmxhZyBhbmQgZXhlY3MKKy9iaW4vYmFzaCBpbiB0aGUgY2hpbGQgcHJvY2Vzcy4gIEEgcHR5IGNyZWF0ZWQgYnkgdGhlIHNzaGQgaXMgbm90IHZpc2libGUgaW4KK3RoZSBvcmlnaW5hbCBtb3VudCBvZiAvZGV2L3B0cy4KKworVXNlci1zcGFjZSBjaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0KKworSW4gbXVsdGktaW5zdGFuY2UgbW9kZSAoaS5lICctbyBuZXdpbnN0YW5jZScgbW91bnQgb3B0aW9uIGlzIHNwZWNpZmllZCBhdCBsZWFzdAorb25jZSksIGZvbGxvd2luZyB1c2VyLXNwYWNlIGlzc3VlcyBzaG91bGQgYmUgbm90ZWQuCisKKzEuIElmIC1vIG5ld2luc3RhbmNlIG1vdW50IG9wdGlvbiBpcyBuZXZlciB1c2VkLCAvZGV2L3B0cy9wdG14IGNhbiBiZSBpZ25vcmVkCisgICBhbmQgbm8gY2hhbmdlIGlzIG5lZWRlZCB0byBzeXN0ZW0tc3RhcnR1cCBzY3JpcHRzLgorCisyLiBUbyBlZmZlY3RpdmVseSB1c2UgbXVsdGktaW5zdGFuY2UgbW9kZSAoaS5lIC1vIG5ld2luc3RhbmNlIGlzIHNwZWNpZmllZCkKKyAgIGFkbWluaXN0cmF0b3JzIG9yIHN0YXJ0dXAgc2NyaXB0cyBzaG91bGQgInJlZGlyZWN0IiBvcGVuIG9mIC9kZXYvcHRteCB0bworICAgL2Rldi9wdHMvcHRteCB1c2luZyBlaXRoZXIgYSBiaW5kIG1vdW50IG9yIHN5bWxpbmsuCisKKwkkIG1vdW50IC10IGRldnB0cyAtbyBuZXdpbnN0YW5jZSBkZXZwdHMgL2Rldi9wdHMKKworICAgZm9sbG93ZWQgYnkgZWl0aGVyCisKKwkkIHJtIC9kZXYvcHRteAorCSQgbG4gLXMgcHRzL3B0bXggL2Rldi9wdG14CisJJCBjaG1vZCA2NjYgL2Rldi9wdHMvcHRteAorICAgb3IKKwkkIG1vdW50IC1vIGJpbmQgL2Rldi9wdHMvcHRteCAvZGV2L3B0bXgKKworMy4gVGhlICcvZGV2L3B0bXggLT4gcHRzL3B0bXgnIHN5bWxpbmsgaXMgdGhlIHByZWZlcnJlZCBtZXRob2Qgc2luY2UgaXQKKyAgIGVuYWJsZXMgYmV0dGVyIGVycm9yLXJlcG9ydGluZyBhbmQgdHJlYXRzIGJvdGggc2luZ2xlLWluc3RhbmNlIGFuZAorICAgbXVsdGktaW5zdGFuY2UgbW91bnRzIHNpbWlsYXJseS4KKworICAgQnV0IHRoaXMgbWV0aG9kIHJlcXVpcmVzIHRoYXQgc3lzdGVtLXN0YXJ0dXAgc2NyaXB0cyBzZXQgdGhlIG1vZGUgb2YKKyAgIC9kZXYvcHRzL3B0bXggY29ycmVjdGx5IChkZWZhdWx0IG1vZGUgaXMgMDAwMCkuIFRoZSBzY3JpcHRzIGNhbiBzZXQgdGhlCisgICBtb2RlIGJ5LCBlaXRoZXIKKworICAgCS0gYWRkaW5nIHB0bXhtb2RlIG1vdW50IG9wdGlvbiB0byBkZXZwdHMgZW50cnkgaW4gL2V0Yy9mc3RhYiwgb3IKKwktIHVzaW5nICdjaG1vZCAwNjY2IC9kZXYvcHRzL3B0bXgnCisKKzQuIElmIG11bHRpLWluc3RhbmNlIG1vZGUgbW91bnQgaXMgbmVlZGVkIGZvciBjb250YWluZXJzLCBidXQgdGhlIHN5c3RlbQorICAgc3RhcnR1cCBzY3JpcHRzIGhhdmUgbm90IHlldCBiZWVuIHVwZGF0ZWQsIGNvbnRhaW5lci1zdGFydHVwIHNjcmlwdHMKKyAgIHNob3VsZCBiaW5kIG1vdW50IC9kZXYvcHRteCB0byAvZGV2L3B0cy9wdG14IHRvIGF2b2lkIGJyZWFraW5nIHNpbmdsZS0KKyAgIGluc3RhbmNlIG1vdW50cy4KKworICAgT3IsIGluIGdlbmVyYWwsIGNvbnRhaW5lci1zdGFydHVwIHNjcmlwdHMgc2hvdWxkIHVzZToKKworCW1vdW50IC10IGRldnB0cyAtbyBuZXdpbnN0YW5jZSAtbyBwdG14bW9kZT0wNjY2IGRldnB0cyAvZGV2L3B0cworCWlmIFsgISAtTCAvZGV2L3B0bXggXTsgdGhlbgorCQltb3VudCAtbyBiaW5kIC9kZXYvcHRzL3B0bXggL2Rldi9wdG14CisJZmkKKworICAgV2hlbiBhbGwgZGV2cHRzIG1vdW50cyBhcmUgbXVsdGktaW5zdGFuY2UsIC9kZXYvcHRteCBjYW4gcGVybWFuZW50bHkgYmUKKyAgIGEgc3ltbGluayB0byBwdHMvcHRteCBhbmQgdGhlIGJpbmQgbW91bnQgY2FuIGJlIGlnbm9yZWQuCisKKzUuIEEgbXVsdGktaW5zdGFuY2UgbW91bnQgdGhhdCBpcyBub3QgYWNjb21wYW5pZWQgYnkgdGhlIC9kZXYvcHRteCB0bworICAgL2Rldi9wdHMvcHRteCByZWRpcmVjdGlvbiB3b3VsZCByZXN1bHQgaW4gYW4gdW51c2FibGUvdW5yZWFjaGFibGUgcHR5LgorCisJbW91bnQgLXQgZGV2cHRzIC1vIG5ld2luc3RhbmNlIGx4Y3B0cyAvZGV2L3B0cworCisgICBpbW1lZGlhdGVseSBmb2xsb3dlZCBieToKKworCW9wZW4oIi9kZXYvcHRteCIpCisKKyAgICB3b3VsZCBjcmVhdGUgYSBwdHksIHNheSAvZGV2L3B0cy83LCBpbiB0aGUgaW5pdGlhbCBrZXJuZWwgbW91bnQuCisgICAgQnV0IC9kZXYvcHRzLzcgd291bGQgYmUgaW52aXNpYmxlIGluIHRoZSBuZXcgbW91bnQuCisKKzYuIFRoZSBwZXJtaXNzaW9ucyBmb3IgL2Rldi9wdHMvcHRteCBub2RlIHNob3VsZCBiZSBzcGVjaWZpZWQgd2hlbiBtb3VudGluZworICAgL2Rldi9wdHMsIHVzaW5nIHRoZSAnLW8gcHRteG1vZGU9JW8nIG1vdW50IG9wdGlvbiAoZGVmYXVsdCBpcyAwMDAwKS4KKworCW1vdW50IC10IGRldnB0cyAtbyBuZXdpbnN0YW5jZSAtbyBwdG14bW9kZT0wNjQ0IGRldnB0cyAvZGV2L3B0cworCisgICBUaGUgcGVybWlzc2lvbnMgY2FuIGJlIGxhdGVyIGJlIGNoYW5nZWQgYXMgdXN1YWwgd2l0aCAnY2htb2QnLgorCisJY2htb2QgNjY2IC9kZXYvcHRzL3B0bXgKKworNy4gQSBtb3VudCBvZiBkZXZwdHMgd2l0aG91dCB0aGUgJ25ld2luc3RhbmNlJyBvcHRpb24gcmVzdWx0cyBpbiBiaW5kaW5nIHRvCisgICBpbml0aWFsIGtlcm5lbCBtb3VudC4gIFRoaXMgYmVoYXZpb3Igd2hpbGUgcHJlc2VydmluZyBsZWdhY3kgc2VtYW50aWNzLAorICAgZG9lcyBub3QgcHJvdmlkZSBzdHJpY3QgaXNvbGF0aW9uIGluIGEgY29udGFpbmVyIGVudmlyb25tZW50LiBpLmUgYnkKKyAgIG1vdW50aW5nIGRldnB0cyB3aXRob3V0IHRoZSAnbmV3aW5zdGFuY2UnIG9wdGlvbiwgYSBjb250YWluZXIgY291bGQKKyAgIGdldCB2aXNpYmlsaXR5IGludG8gdGhlICdob3N0JyBvciByb290IGNvbnRhaW5lcidzIGRldnB0cy4KKyAgIAorICAgVG8gd29ya2Fyb3VuZCB0aGlzIGFuZCBoYXZlIHN0cmljdCBpc29sYXRpb24sIGFsbCBtb3VudHMgb2YgZGV2cHRzLAorICAgaW5jbHVkaW5nIHRoZSBtb3VudCBpbiB0aGUgcm9vdCBjb250YWluZXIsIHNob3VsZCB1c2UgdGhlIG5ld2luc3RhbmNlCisgICBvcHRpb24uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2RpcmVjdG9yeS1sb2NraW5nIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9kaXJlY3RvcnktbG9ja2luZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWJiZjlhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9kaXJlY3RvcnktbG9ja2luZwpAQCAtMCwwICsxLDEyNyBAQAorCUxvY2tpbmcgc2NoZW1lIHVzZWQgZm9yIGRpcmVjdG9yeSBvcGVyYXRpb25zIGlzIGJhc2VkIG9uIHR3bwora2luZHMgb2YgbG9ja3MgLSBwZXItaW5vZGUgKC0+aV9tdXRleCkgYW5kIHBlci1maWxlc3lzdGVtCisoLT5zX3Zmc19yZW5hbWVfbXV0ZXgpLgorCisJV2hlbiB0YWtpbmcgdGhlIGlfbXV0ZXggb24gbXVsdGlwbGUgbm9uLWRpcmVjdG9yeSBvYmplY3RzLCB3ZQorYWx3YXlzIGFjcXVpcmUgdGhlIGxvY2tzIGluIG9yZGVyIGJ5IGluY3JlYXNpbmcgYWRkcmVzcy4gIFdlJ2xsIGNhbGwKK3RoYXQgImlub2RlIHBvaW50ZXIiIG9yZGVyIGluIHRoZSBmb2xsb3dpbmcuCisKKwlGb3Igb3VyIHB1cnBvc2VzIGFsbCBvcGVyYXRpb25zIGZhbGwgaW4gNSBjbGFzc2VzOgorCisxKSByZWFkIGFjY2Vzcy4gIExvY2tpbmcgcnVsZXM6IGNhbGxlciBsb2NrcyBkaXJlY3Rvcnkgd2UgYXJlIGFjY2Vzc2luZy4KKworMikgb2JqZWN0IGNyZWF0aW9uLiAgTG9ja2luZyBydWxlczogc2FtZSBhcyBhYm92ZS4KKworMykgb2JqZWN0IHJlbW92YWwuICBMb2NraW5nIHJ1bGVzOiBjYWxsZXIgbG9ja3MgcGFyZW50LCBmaW5kcyB2aWN0aW0sCitsb2NrcyB2aWN0aW0gYW5kIGNhbGxzIHRoZSBtZXRob2QuCisKKzQpIHJlbmFtZSgpIHRoYXQgaXMgX25vdF8gY3Jvc3MtZGlyZWN0b3J5LiAgTG9ja2luZyBydWxlczogY2FsbGVyIGxvY2tzCit0aGUgcGFyZW50IGFuZCBmaW5kcyBzb3VyY2UgYW5kIHRhcmdldC4gIElmIHRhcmdldCBhbHJlYWR5IGV4aXN0cywgbG9jaworaXQuICBJZiBzb3VyY2UgaXMgYSBub24tZGlyZWN0b3J5LCBsb2NrIGl0LiAgSWYgdGhhdCBtZWFucyB3ZSBuZWVkIHRvCitsb2NrIGJvdGgsIGxvY2sgdGhlbSBpbiBpbm9kZSBwb2ludGVyIG9yZGVyLgorCis1KSBsaW5rIGNyZWF0aW9uLiAgTG9ja2luZyBydWxlczoKKwkqIGxvY2sgcGFyZW50CisJKiBjaGVjayB0aGF0IHNvdXJjZSBpcyBub3QgYSBkaXJlY3RvcnkKKwkqIGxvY2sgc291cmNlCisJKiBjYWxsIHRoZSBtZXRob2QuCisKKzYpIGNyb3NzLWRpcmVjdG9yeSByZW5hbWUuICBUaGUgdHJpY2tpZXN0IGluIHRoZSB3aG9sZSBidW5jaC4gIExvY2tpbmcKK3J1bGVzOgorCSogbG9jayB0aGUgZmlsZXN5c3RlbQorCSogbG9jayBwYXJlbnRzIGluICJhbmNlc3RvcnMgZmlyc3QiIG9yZGVyLgorCSogZmluZCBzb3VyY2UgYW5kIHRhcmdldC4KKwkqIGlmIG9sZCBwYXJlbnQgaXMgZXF1YWwgdG8gb3IgaXMgYSBkZXNjZW5kZW50IG9mIHRhcmdldAorCQlmYWlsIHdpdGggLUVOT1RFTVBUWQorCSogaWYgbmV3IHBhcmVudCBpcyBlcXVhbCB0byBvciBpcyBhIGRlc2NlbmRlbnQgb2Ygc291cmNlCisJCWZhaWwgd2l0aCAtRUxPT1AKKwkqIElmIHRhcmdldCBleGlzdHMsIGxvY2sgaXQuICBJZiBzb3VyY2UgaXMgYSBub24tZGlyZWN0b3J5LCBsb2NrCisJICBpdC4gIEluIGNhc2UgdGhhdCBtZWFucyB3ZSBuZWVkIHRvIGxvY2sgYm90aCBzb3VyY2UgYW5kIHRhcmdldCwKKwkgIGRvIHNvIGluIGlub2RlIHBvaW50ZXIgb3JkZXIuCisJKiBjYWxsIHRoZSBtZXRob2QuCisKKworVGhlIHJ1bGVzIGFib3ZlIG9idmlvdXNseSBndWFyYW50ZWUgdGhhdCBhbGwgZGlyZWN0b3JpZXMgdGhhdCBhcmUgZ29pbmcgdG8gYmUKK3JlYWQsIG1vZGlmaWVkIG9yIHJlbW92ZWQgYnkgbWV0aG9kIHdpbGwgYmUgbG9ja2VkIGJ5IGNhbGxlci4KKworCitJZiBubyBkaXJlY3RvcnkgaXMgaXRzIG93biBhbmNlc3RvciwgdGhlIHNjaGVtZSBhYm92ZSBpcyBkZWFkbG9jay1mcmVlLgorUHJvb2Y6CisKKwlGaXJzdCBvZiBhbGwsIGF0IGFueSBtb21lbnQgd2UgaGF2ZSBhIHBhcnRpYWwgb3JkZXJpbmcgb2YgdGhlCitvYmplY3RzIC0gQSA8IEIgaWZmIEEgaXMgYW4gYW5jZXN0b3Igb2YgQi4KKworCVRoYXQgb3JkZXJpbmcgY2FuIGNoYW5nZS4gIEhvd2V2ZXIsIHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZToKKworKDEpIGlmIG9iamVjdCByZW1vdmFsIG9yIG5vbi1jcm9zcy1kaXJlY3RvcnkgcmVuYW1lIGhvbGRzIGxvY2sgb24gQSBhbmQKKyAgICBhdHRlbXB0cyB0byBhY3F1aXJlIGxvY2sgb24gQiwgQSB3aWxsIHJlbWFpbiB0aGUgcGFyZW50IG9mIEIgdW50aWwgd2UKKyAgICBhY3F1aXJlIHRoZSBsb2NrIG9uIEIuICAoUHJvb2Y6IG9ubHkgY3Jvc3MtZGlyZWN0b3J5IHJlbmFtZSBjYW4gY2hhbmdlCisgICAgdGhlIHBhcmVudCBvZiBvYmplY3QgYW5kIGl0IHdvdWxkIGhhdmUgdG8gbG9jayB0aGUgcGFyZW50KS4KKworKDIpIGlmIGNyb3NzLWRpcmVjdG9yeSByZW5hbWUgaG9sZHMgdGhlIGxvY2sgb24gZmlsZXN5c3RlbSwgb3JkZXIgd2lsbCBub3QKKyAgICBjaGFuZ2UgdW50aWwgcmVuYW1lIGFjcXVpcmVzIGFsbCBsb2Nrcy4gIChQcm9vZjogb3RoZXIgY3Jvc3MtZGlyZWN0b3J5CisgICAgcmVuYW1lcyB3aWxsIGJlIGJsb2NrZWQgb24gZmlsZXN5c3RlbSBsb2NrIGFuZCB3ZSBkb24ndCBzdGFydCBjaGFuZ2luZworICAgIHRoZSBvcmRlciB1bnRpbCB3ZSBoYWQgYWNxdWlyZWQgYWxsIGxvY2tzKS4KKworKDMpIGxvY2tzIG9uIG5vbi1kaXJlY3Rvcnkgb2JqZWN0cyBhcmUgYWNxdWlyZWQgb25seSBhZnRlciBsb2NrcyBvbgorICAgIGRpcmVjdG9yeSBvYmplY3RzLCBhbmQgYXJlIGFjcXVpcmVkIGluIGlub2RlIHBvaW50ZXIgb3JkZXIuCisgICAgKFByb29mOiBhbGwgb3BlcmF0aW9ucyBidXQgcmVuYW1lcyB0YWtlIGxvY2sgb24gYXQgbW9zdCBvbmUKKyAgICBub24tZGlyZWN0b3J5IG9iamVjdCwgZXhjZXB0IHJlbmFtZXMsIHdoaWNoIHRha2UgbG9ja3Mgb24gc291cmNlIGFuZAorICAgIHRhcmdldCBpbiBpbm9kZSBwb2ludGVyIG9yZGVyIGluIHRoZSBjYXNlIHRoZXkgYXJlIG5vdCBkaXJlY3Rvcmllcy4pCisKKwlOb3cgY29uc2lkZXIgdGhlIG1pbmltYWwgZGVhZGxvY2suICBFYWNoIHByb2Nlc3MgaXMgYmxvY2tlZCBvbgorYXR0ZW1wdCB0byBhY3F1aXJlIHNvbWUgbG9jayBhbmQgYWxyZWFkeSBob2xkcyBhdCBsZWFzdCBvbmUgbG9jay4gIExldCdzCitjb25zaWRlciB0aGUgc2V0IG9mIGNvbnRlbmRlZCBsb2Nrcy4gIEZpcnN0IG9mIGFsbCwgZmlsZXN5c3RlbSBsb2NrIGlzCitub3QgY29udGVuZGVkLCBzaW5jZSBhbnkgcHJvY2VzcyBibG9ja2VkIG9uIGl0IGlzIG5vdCBob2xkaW5nIGFueSBsb2Nrcy4KK1RodXMgYWxsIHByb2Nlc3NlcyBhcmUgYmxvY2tlZCBvbiAtPmlfbXV0ZXguCisKKwlCeSAoMyksIGFueSBwcm9jZXNzIGhvbGRpbmcgYSBub24tZGlyZWN0b3J5IGxvY2sgY2FuIG9ubHkgYmUKK3dhaXRpbmcgb24gYW5vdGhlciBub24tZGlyZWN0b3J5IGxvY2sgd2l0aCBhIGxhcmdlciBhZGRyZXNzLiAgVGhlcmVmb3JlCit0aGUgcHJvY2VzcyBob2xkaW5nIHRoZSAibGFyZ2VzdCIgc3VjaCBsb2NrIGNhbiBhbHdheXMgbWFrZSBwcm9ncmVzcywgYW5kCitub24tZGlyZWN0b3J5IG9iamVjdHMgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgc2V0IG9mIGNvbnRlbmRlZCBsb2Nrcy4KKworCVRodXMgbGluayBjcmVhdGlvbiBjYW4ndCBiZSBhIHBhcnQgb2YgZGVhZGxvY2sgLSBpdCBjYW4ndCBiZQorYmxvY2tlZCBvbiBzb3VyY2UgYW5kIGl0IG1lYW5zIHRoYXQgaXQgZG9lc24ndCBob2xkIGFueSBsb2Nrcy4KKworCUFueSBjb250ZW5kZWQgb2JqZWN0IGlzIGVpdGhlciBoZWxkIGJ5IGNyb3NzLWRpcmVjdG9yeSByZW5hbWUgb3IKK2hhcyBhIGNoaWxkIHRoYXQgaXMgYWxzbyBjb250ZW5kZWQuICBJbmRlZWQsIHN1cHBvc2UgdGhhdCBpdCBpcyBoZWxkIGJ5CitvcGVyYXRpb24gb3RoZXIgdGhhbiBjcm9zcy1kaXJlY3RvcnkgcmVuYW1lLiAgVGhlbiB0aGUgbG9jayB0aGlzIG9wZXJhdGlvbgoraXMgYmxvY2tlZCBvbiBiZWxvbmdzIHRvIGNoaWxkIG9mIHRoYXQgb2JqZWN0IGR1ZSB0byAoMSkuCisKKwlJdCBtZWFucyB0aGF0IG9uZSBvZiB0aGUgb3BlcmF0aW9ucyBpcyBjcm9zcy1kaXJlY3RvcnkgcmVuYW1lLgorT3RoZXJ3aXNlIHRoZSBzZXQgb2YgY29udGVuZGVkIG9iamVjdHMgd291bGQgYmUgaW5maW5pdGUgLSBlYWNoIG9mIHRoZW0KK3dvdWxkIGhhdmUgYSBjb250ZW5kZWQgY2hpbGQgYW5kIHdlIGhhZCBhc3N1bWVkIHRoYXQgbm8gb2JqZWN0IGlzIGl0cworb3duIGRlc2NlbmRlbnQuICBNb3Jlb3ZlciwgdGhlcmUgaXMgZXhhY3RseSBvbmUgY3Jvc3MtZGlyZWN0b3J5IHJlbmFtZQorKHNlZSBhYm92ZSkuCisKKwlDb25zaWRlciB0aGUgb2JqZWN0IGJsb2NraW5nIHRoZSBjcm9zcy1kaXJlY3RvcnkgcmVuYW1lLiAgT25lCitvZiBpdHMgZGVzY2VuZGVudHMgaXMgbG9ja2VkIGJ5IGNyb3NzLWRpcmVjdG9yeSByZW5hbWUgKG90aGVyd2lzZSB3ZQord291bGQgYWdhaW4gaGF2ZSBhbiBpbmZpbml0ZSBzZXQgb2YgY29udGVuZGVkIG9iamVjdHMpLiAgQnV0IHRoYXQKK21lYW5zIHRoYXQgY3Jvc3MtZGlyZWN0b3J5IHJlbmFtZSBpcyB0YWtpbmcgbG9ja3Mgb3V0IG9mIG9yZGVyLiAgRHVlCit0byAoMikgdGhlIG9yZGVyIGhhZG4ndCBjaGFuZ2VkIHNpbmNlIHdlIGhhZCBhY3F1aXJlZCBmaWxlc3lzdGVtIGxvY2suCitCdXQgbG9ja2luZyBydWxlcyBmb3IgY3Jvc3MtZGlyZWN0b3J5IHJlbmFtZSBndWFyYW50ZWUgdGhhdCB3ZSBkbyBub3QKK3RyeSB0byBhY3F1aXJlIGxvY2sgb24gZGVzY2VuZGVudCBiZWZvcmUgdGhlIGxvY2sgb24gYW5jZXN0b3IuCitDb250cmFkaWN0aW9uLiAgSS5lLiAgZGVhZGxvY2sgaXMgaW1wb3NzaWJsZS4gIFEuRS5ELgorCisKKwlUaGVzZSBvcGVyYXRpb25zIGFyZSBndWFyYW50ZWVkIHRvIGF2b2lkIGxvb3AgY3JlYXRpb24uICBJbmRlZWQsCit0aGUgb25seSBvcGVyYXRpb24gdGhhdCBjb3VsZCBpbnRyb2R1Y2UgbG9vcHMgaXMgY3Jvc3MtZGlyZWN0b3J5IHJlbmFtZS4KK1NpbmNlIHRoZSBvbmx5IG5ldyAocGFyZW50LCBjaGlsZCkgcGFpciBhZGRlZCBieSByZW5hbWUoKSBpcyAobmV3IHBhcmVudCwKK3NvdXJjZSksIHN1Y2ggbG9vcCB3b3VsZCBoYXZlIHRvIGNvbnRhaW4gdGhlc2Ugb2JqZWN0cyBhbmQgdGhlIHJlc3Qgb2YgaXQKK3dvdWxkIGhhdmUgdG8gZXhpc3QgYmVmb3JlIHJlbmFtZSgpLiAgSS5lLiBhdCB0aGUgbW9tZW50IG9mIGxvb3AgY3JlYXRpb24KK3JlbmFtZSgpIHJlc3BvbnNpYmxlIGZvciB0aGF0IHdvdWxkIGJlIGhvbGRpbmcgZmlsZXN5c3RlbSBsb2NrIGFuZCBuZXcgcGFyZW50Cit3b3VsZCBoYXZlIHRvIGJlIGVxdWFsIHRvIG9yIGEgZGVzY2VuZGVudCBvZiBzb3VyY2UuICBCdXQgdGhhdCBtZWFucyB0aGF0CituZXcgcGFyZW50IGhhZCBiZWVuIGVxdWFsIHRvIG9yIGEgZGVzY2VuZGVudCBvZiBzb3VyY2Ugc2luY2UgdGhlIG1vbWVudCB3aGVuCit3ZSBoYWQgYWNxdWlyZWQgZmlsZXN5c3RlbSBsb2NrIGFuZCByZW5hbWUoKSB3b3VsZCBmYWlsIHdpdGggLUVMT09QIGluIHRoYXQKK2Nhc2UuCisKKwlXaGlsZSB0aGlzIGxvY2tpbmcgc2NoZW1lIHdvcmtzIGZvciBhcmJpdHJhcnkgREFHcywgaXQgcmVsaWVzIG9uCithYmlsaXR5IHRvIGNoZWNrIHRoYXQgZGlyZWN0b3J5IGlzIGEgZGVzY2VuZGVudCBvZiBhbm90aGVyIG9iamVjdC4gIEN1cnJlbnQKK2ltcGxlbWVudGF0aW9uIGFzc3VtZXMgdGhhdCBkaXJlY3RvcnkgZ3JhcGggaXMgYSB0cmVlLiAgVGhpcyBhc3N1bXB0aW9uIGlzCithbHNvIHByZXNlcnZlZCBieSBhbGwgb3BlcmF0aW9ucyAoY3Jvc3MtZGlyZWN0b3J5IHJlbmFtZSBvbiBhIHRyZWUgdGhhdCB3b3VsZAorbm90IGludHJvZHVjZSBhIGN5Y2xlIHdpbGwgbGVhdmUgaXQgYSB0cmVlIGFuZCBsaW5rKCkgZmFpbHMgZm9yIGRpcmVjdG9yaWVzKS4KKworCU5vdGljZSB0aGF0ICJkaXJlY3RvcnkiIGluIHRoZSBhYm92ZSA9PSAiYW55dGhpbmcgdGhhdCBtaWdodCBoYXZlCitjaGlsZHJlbiIsIHNvIGlmIHdlIGFyZSBnb2luZyB0byBpbnRyb2R1Y2UgaHlicmlkIG9iamVjdHMgd2Ugd2lsbCBuZWVkCitlaXRoZXIgdG8gbWFrZSBzdXJlIHRoYXQgbGluaygyKSBkb2Vzbid0IHdvcmsgZm9yIHRoZW0gb3IgdG8gbWFrZSBjaGFuZ2VzCitpbiBpc19zdWJkaXIoKSB0aGF0IHdvdWxkIG1ha2UgaXQgd29yayBldmVuIGluIHByZXNlbmNlIG9mIHN1Y2ggYmVhc3RzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9kbG1mcy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2RsbWZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2Y0ZDUwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9kbG1mcy50eHQKQEAgLTAsMCArMSwxMzAgQEAKK2RsbWZzCis9PT09PT09PT09PT09PT09PT0KK0EgbWluaW1hbCBETE0gdXNlcnNwYWNlIGludGVyZmFjZSBpbXBsZW1lbnRlZCB2aWEgYSB2aXJ0dWFsIGZpbGUKK3N5c3RlbS4KKworZGxtZnMgaXMgYnVpbHQgd2l0aCBPQ0ZTMiBhcyBpdCByZXF1aXJlcyBtb3N0IG9mIGl0cyBpbmZyYXN0cnVjdHVyZS4KKworUHJvamVjdCB3ZWIgcGFnZTogICAgaHR0cDovL29jZnMyLndpa2kua2VybmVsLm9yZworVG9vbHMgd2ViIHBhZ2U6ICAgICAgaHR0cHM6Ly9naXRodWIuY29tL21hcmtmYXNoZWgvb2NmczItdG9vbHMKK09DRlMyIG1haWxpbmcgbGlzdHM6IGh0dHA6Ly9vc3Mub3JhY2xlLmNvbS9wcm9qZWN0cy9vY2ZzMi9tYWlsbWFuLworCitBbGwgY29kZSBjb3B5cmlnaHQgMjAwNSBPcmFjbGUgZXhjZXB0IHdoZW4gb3RoZXJ3aXNlIG5vdGVkLgorCitDUkVESVRTCis9PT09PT09CisKK1NvbWUgY29kZSB0YWtlbiBmcm9tIHJhbWZzIHdoaWNoIGlzIENvcHlyaWdodCAoQykgMjAwMCBMaW51cyBUb3J2YWxkcworYW5kIFRyYW5zbWV0YSBDb3JwLgorCitNYXJrIEZhc2hlaCA8bWFyay5mYXNoZWhAb3JhY2xlLmNvbT4KKworQ2F2ZWF0cworPT09PT09PQorLSBSaWdodCBub3cgaXQgb25seSB3b3JrcyB3aXRoIHRoZSBPQ0ZTMiBETE0sIHRob3VnaCBzdXBwb3J0IGZvciBvdGhlcgorICBETE0gaW1wbGVtZW50YXRpb25zIHNob3VsZCBub3QgYmUgYSBtYWpvciBpc3N1ZS4KKworTW91bnQgb3B0aW9ucworPT09PT09PT09PT09PQorTm9uZQorCitVc2FnZQorPT09PT0KKworSWYgeW91J3JlIGp1c3QgaW50ZXJlc3RlZCBpbiBPQ0ZTMiwgdGhlbiBwbGVhc2Ugc2VlIG9jZnMyLnR4dC4gVGhlCityZXN0IG9mIHRoaXMgZG9jdW1lbnQgd2lsbCBiZSBnZWFyZWQgdG93YXJkcyB0aG9zZSB3aG8gd2FudCB0byB1c2UKK2RsbWZzIGZvciBlYXN5IHRvIHNldHVwIGFuZCBlYXN5IHRvIHVzZSBjbHVzdGVyZWQgbG9ja2luZyBpbgordXNlcnNwYWNlLgorCitTZXR1cAorPT09PT0KKworZGxtZnMgcmVxdWlyZXMgdGhhdCB0aGUgT0NGUzIgY2x1c3RlciBpbmZyYXN0cnVjdHVyZSBiZSBpbgorcGxhY2UuIFBsZWFzZSBkb3dubG9hZCBvY2ZzMi10b29scyBmcm9tIHRoZSBhYm92ZSB1cmwgYW5kIGNvbmZpZ3VyZSBhCitjbHVzdGVyLgorCitZb3UnbGwgd2FudCB0byBzdGFydCBoZWFydGJlYXRpbmcgb24gYSB2b2x1bWUgd2hpY2ggYWxsIHRoZSBub2RlcyBpbgoreW91ciBsb2Nrc3BhY2UgY2FuIGFjY2Vzcy4gVGhlIGVhc2llc3Qgd2F5IHRvIGRvIHRoaXMgaXMgdmlhCitvY2ZzMl9oYl9jdGwgKGRpc3RyaWJ1dGVkIHdpdGggb2NmczItdG9vbHMpLiBSaWdodCBub3cgaXQgcmVxdWlyZXMKK3RoYXQgYW4gT0NGUzIgZmlsZSBzeXN0ZW0gYmUgaW4gcGxhY2Ugc28gdGhhdCBpdCBjYW4gYXV0b21hdGljYWxseQorZmluZCBpdHMgaGVhcnRiZWF0IGFyZWEsIHRob3VnaCBpdCB3aWxsIGV2ZW50dWFsbHkgc3VwcG9ydCBoZWFydGJlYXQKK2FnYWluc3QgcmF3IGRpc2tzLgorCitQbGVhc2Ugc2VlIHRoZSBvY2ZzMl9oYl9jdGwgYW5kIG1rZnMub2NmczIgbWFudWFsIHBhZ2VzIGRpc3RyaWJ1dGVkCit3aXRoIG9jZnMyLXRvb2xzLgorCitPbmNlIHlvdSdyZSBoZWFydGJlYXRpbmcsIERMTSBsb2NrICdkb21haW5zJyBjYW4gYmUgZWFzaWx5IGNyZWF0ZWQgLworZGVzdHJveWVkIGFuZCBsb2NrcyB3aXRoaW4gdGhlbSBhY2Nlc3NlZC4KKworTG9ja2luZworPT09PT09PQorCitVc2VycyBtYXkgYWNjZXNzIGRsbWZzIHZpYSBzdGFuZGFyZCBmaWxlIHN5c3RlbSBjYWxscywgb3IgdGhleSBjYW4gdXNlCisnbGlibzJkbG0nIChkaXN0cmlidXRlZCB3aXRoIG9jZnMyLXRvb2xzKSB3aGljaCBhYnN0cmFjdHMgdGhlIGZpbGUKK3N5c3RlbSBjYWxscyBhbmQgcHJlc2VudHMgYSBtb3JlIHRyYWRpdGlvbmFsIGxvY2tpbmcgYXBpLgorCitkbG1mcyBoYW5kbGVzIGxvY2sgY2FjaGluZyBhdXRvbWF0aWNhbGx5IGZvciB0aGUgdXNlciwgc28gYSBsb2NrCityZXF1ZXN0IGZvciBhbiBhbHJlYWR5IGFjcXVpcmVkIGxvY2sgd2lsbCBub3QgZ2VuZXJhdGUgYW5vdGhlciBETE0KK2NhbGwuIFVzZXJzcGFjZSBwcm9ncmFtcyBhcmUgYXNzdW1lZCB0byBoYW5kbGUgdGhlaXIgb3duIGxvY2FsCitsb2NraW5nLgorCitUd28gbGV2ZWxzIG9mIGxvY2tzIGFyZSBzdXBwb3J0ZWQgLSBTaGFyZWQgUmVhZCwgYW5kIEV4Y2x1c2l2ZS4KK0Fsc28gc3VwcG9ydGVkIGlzIGEgVHJ5bG9jayBvcGVyYXRpb24uCisKK0ZvciBpbmZvcm1hdGlvbiBvbiB0aGUgbGlibzJkbG0gaW50ZXJmYWNlLCBwbGVhc2Ugc2VlIG8yZGxtLmgsCitkaXN0cmlidXRlZCB3aXRoIG9jZnMyLXRvb2xzLgorCitMb2NrIHZhbHVlIGJsb2NrcyBjYW4gYmUgcmVhZCBhbmQgd3JpdHRlbiB0byBhIHJlc291cmNlIHZpYSByZWFkKDIpCithbmQgd3JpdGUoMikgYWdhaW5zdCB0aGUgZmQgb2J0YWluZWQgdmlhIHlvdXIgb3BlbigyKSBjYWxsLiBUaGUKK21heGltdW0gY3VycmVudGx5IHN1cHBvcnRlZCBMVkIgbGVuZ3RoIGlzIDY0IGJ5dGVzICh0aG91Z2ggdGhhdCBpcyBhbgorT0NGUzIgRExNIGxpbWl0YXRpb24pLiBUaHJvdWdoIHRoaXMgbWVjaGFuaXNtLCB1c2VycyBvZiBkbG1mcyBjYW4gc2hhcmUKK3NtYWxsIGFtb3VudHMgb2YgZGF0YSBhbW9uZ3N0IHRoZWlyIG5vZGVzLgorCitta2RpcigyKSBzaWduYWxzIGRsbWZzIHRvIGpvaW4gYSBkb21haW4gKHdoaWNoIHdpbGwgaGF2ZSB0aGUgc2FtZSBuYW1lCithcyB0aGUgcmVzdWx0aW5nIGRpcmVjdG9yeSkKKworcm1kaXIoMikgc2lnbmFscyBkbG1mcyB0byBsZWF2ZSB0aGUgZG9tYWluCisKK0xvY2tzIGZvciBhIGdpdmVuIGRvbWFpbiBhcmUgcmVwcmVzZW50ZWQgYnkgcmVndWxhciBpbm9kZXMgaW5zaWRlIHRoZQorZG9tYWluIGRpcmVjdG9yeS4gIExvY2tpbmcgYWdhaW5zdCB0aGVtIGlzIGRvbmUgdmlhIHRoZSBvcGVuKDIpIHN5c3RlbQorY2FsbC4KKworVGhlIG9wZW4oMikgY2FsbCB3aWxsIG5vdCByZXR1cm4gdW50aWwgeW91ciBsb2NrIGhhcyBiZWVuIGdyYW50ZWQgb3IKK2FuIGVycm9yIGhhcyBvY2N1cnJlZCwgdW5sZXNzIGl0IGhhcyBiZWVuIGluc3RydWN0ZWQgdG8gZG8gYSB0cnlsb2NrCitvcGVyYXRpb24uIElmIHRoZSBsb2NrIHN1Y2NlZWRzLCB5b3UnbGwgZ2V0IGFuIGZkLgorCitvcGVuKDIpIHdpdGggT19DUkVBVCB0byBlbnN1cmUgdGhlIHJlc291cmNlIGlub2RlIGlzIGNyZWF0ZWQgLSBkbG1mcyBkb2VzCitub3QgYXV0b21hdGljYWxseSBjcmVhdGUgaW5vZGVzIGZvciBleGlzdGluZyBsb2NrIHJlc291cmNlcy4KKworT3BlbiBGbGFnICAgICBMb2NrIFJlcXVlc3QgVHlwZQorLS0tLS0tLS0tICAgICAtLS0tLS0tLS0tLS0tLS0tLQorT19SRE9OTFkgICAgICBTaGFyZWQgUmVhZAorT19SRFdSICAgICAgICBFeGNsdXNpdmUKKworT3BlbiBGbGFnICAgICBSZXN1bHRpbmcgTG9ja2luZyBCZWhhdmlvcgorLS0tLS0tLS0tICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorT19OT05CTE9DSyAgICBUcnlsb2NrIG9wZXJhdGlvbgorCitZb3UgbXVzdCBwcm92aWRlIGV4YWN0bHkgb25lIG9mIE9fUkRPTkxZIG9yIE9fUkRXUi4KKworSWYgT19OT05CTE9DSyBpcyBhbHNvIHByb3ZpZGVkIGFuZCB0aGUgdHJ5bG9jayBvcGVyYXRpb24gd2FzIHZhbGlkIGJ1dAorY291bGQgbm90IGxvY2sgdGhlIHJlc291cmNlIHRoZW4gb3BlbigyKSB3aWxsIHJldHVybiBFVFhUQlVTWS4KKworY2xvc2UoMikgZHJvcHMgdGhlIGxvY2sgYXNzb2NpYXRlZCB3aXRoIHlvdXIgZmQuCisKK01vZGVzIHBhc3NlZCB0byBta2RpcigyKSBvciBvcGVuKDIpIGFyZSBhZGhlcmVkIHRvIGxvY2FsbHkuIENob3duIGlzCitzdXBwb3J0ZWQgbG9jYWxseSBhcyB3ZWxsLiBUaGlzIG1lYW5zIHlvdSBjYW4gdXNlIHRoZW0gdG8gcmVzdHJpY3QKK2FjY2VzcyB0byB0aGUgcmVzb3VyY2VzIHZpYSBkbG1mcyBvbiB5b3VyIGxvY2FsIG5vZGUgb25seS4KKworVGhlIHJlc291cmNlIExWQiBtYXkgYmUgcmVhZCBmcm9tIHRoZSBmZCBpbiBlaXRoZXIgU2hhcmVkIFJlYWQgb3IKK0V4Y2x1c2l2ZSBtb2RlcyB2aWEgdGhlIHJlYWQoMikgc3lzdGVtIGNhbGwuIEl0IGNhbiBiZSB3cml0dGVuIHZpYQord3JpdGUoMikgb25seSB3aGVuIG9wZW4gaW4gRXhjbHVzaXZlIG1vZGUuCisKK09uY2Ugd3JpdHRlbiwgYW4gTFZCIHdpbGwgYmUgdmlzaWJsZSB0byBvdGhlciBub2RlcyB3aG8gb2J0YWluIFJlYWQKK09ubHkgb3IgaGlnaGVyIGxldmVsIGxvY2tzIG9uIHRoZSByZXNvdXJjZS4KKworU2VlIEFsc28KKz09PT09PT09CitodHRwOi8vb3BlbmRsbS5zb3VyY2Vmb3JnZS5uZXQvY3ZzbWlycm9yL29wZW5kbG0vZG9jcy9kbG1ib29rX2ZpbmFsLnBkZgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgVk1TIGRpc3RyaWJ1dGVkIGxvY2tpbmcgQVBJLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9kbm90aWZ5LnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZG5vdGlmeS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJhZjg4ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZG5vdGlmeS50eHQKQEAgLTAsMCArMSw3MCBAQAorCQlMaW51eCBEaXJlY3RvcnkgTm90aWZpY2F0aW9uCisJCT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCSAgIFN0ZXBoZW4gUm90aHdlbGwgPHNmckBjYW5iLmF1dWcub3JnLmF1PgorCitUaGUgaW50ZW50aW9uIG9mIGRpcmVjdG9yeSBub3RpZmljYXRpb24gaXMgdG8gYWxsb3cgdXNlciBhcHBsaWNhdGlvbnMKK3RvIGJlIG5vdGlmaWVkIHdoZW4gYSBkaXJlY3RvcnksIG9yIGFueSBvZiB0aGUgZmlsZXMgaW4gaXQsIGFyZSBjaGFuZ2VkLgorVGhlIGJhc2ljIG1lY2hhbmlzbSBpbnZvbHZlcyB0aGUgYXBwbGljYXRpb24gcmVnaXN0ZXJpbmcgZm9yIG5vdGlmaWNhdGlvbgorb24gYSBkaXJlY3RvcnkgdXNpbmcgYSBmY250bCgyKSBjYWxsIGFuZCB0aGUgbm90aWZpY2F0aW9ucyB0aGVtc2VsdmVzCitiZWluZyBkZWxpdmVyZWQgdXNpbmcgc2lnbmFscy4KKworVGhlIGFwcGxpY2F0aW9uIGRlY2lkZXMgd2hpY2ggImV2ZW50cyIgaXQgd2FudHMgdG8gYmUgbm90aWZpZWQgYWJvdXQuCitUaGUgY3VycmVudGx5IGRlZmluZWQgZXZlbnRzIGFyZToKKworCUROX0FDQ0VTUwlBIGZpbGUgaW4gdGhlIGRpcmVjdG9yeSB3YXMgYWNjZXNzZWQgKHJlYWQpCisJRE5fTU9ESUZZCUEgZmlsZSBpbiB0aGUgZGlyZWN0b3J5IHdhcyBtb2RpZmllZCAod3JpdGUsdHJ1bmNhdGUpCisJRE5fQ1JFQVRFCUEgZmlsZSB3YXMgY3JlYXRlZCBpbiB0aGUgZGlyZWN0b3J5CisJRE5fREVMRVRFCUEgZmlsZSB3YXMgdW5saW5rZWQgZnJvbSBkaXJlY3RvcnkKKwlETl9SRU5BTUUJQSBmaWxlIGluIHRoZSBkaXJlY3Rvcnkgd2FzIHJlbmFtZWQKKwlETl9BVFRSSUIJQSBmaWxlIGluIHRoZSBkaXJlY3RvcnkgaGFkIGl0cyBhdHRyaWJ1dGVzCisJCQljaGFuZ2VkIChjaG1vZCxjaG93bikKKworVXN1YWxseSwgdGhlIGFwcGxpY2F0aW9uIG11c3QgcmVyZWdpc3RlciBhZnRlciBlYWNoIG5vdGlmaWNhdGlvbiwgYnV0CitpZiBETl9NVUxUSVNIT1QgaXMgb3InZWQgd2l0aCB0aGUgZXZlbnQgbWFzaywgdGhlbiB0aGUgcmVnaXN0cmF0aW9uIHdpbGwKK3JlbWFpbiB1bnRpbCBleHBsaWNpdGx5IHJlbW92ZWQgKGJ5IHJlZ2lzdGVyaW5nIGZvciBubyBldmVudHMpLgorCitCeSBkZWZhdWx0LCBTSUdJTyB3aWxsIGJlIGRlbGl2ZXJlZCB0byB0aGUgcHJvY2VzcyBhbmQgbm8gb3RoZXIgdXNlZnVsCitpbmZvcm1hdGlvbi4gIEhvd2V2ZXIsIGlmIHRoZSBGX1NFVFNJRyBmY250bCgyKSBjYWxsIGlzIHVzZWQgdG8gbGV0IHRoZQora2VybmVsIGtub3cgd2hpY2ggc2lnbmFsIHRvIGRlbGl2ZXIsIGEgc2lnaW5mbyBzdHJ1Y3R1cmUgd2lsbCBiZSBwYXNzZWQgdG8KK3RoZSBzaWduYWwgaGFuZGxlciBhbmQgdGhlIHNpX2ZkIG1lbWJlciBvZiB0aGF0IHN0cnVjdHVyZSB3aWxsIGNvbnRhaW4gdGhlCitmaWxlIGRlc2NyaXB0b3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGV2ZW50IG9jY3VycmVkLgorCitQcmVmZXJhYmx5IHRoZSBhcHBsaWNhdGlvbiB3aWxsIGNob29zZSBvbmUgb2YgdGhlIHJlYWwgdGltZSBzaWduYWxzCisoU0lHUlRNSU4gKyA8bj4pIHNvIHRoYXQgdGhlIG5vdGlmaWNhdGlvbnMgbWF5IGJlIHF1ZXVlZC4gIFRoaXMgaXMKK2VzcGVjaWFsbHkgaW1wb3J0YW50IGlmIEROX01VTFRJU0hPVCBpcyBzcGVjaWZpZWQuICBOb3RlIHRoYXQgU0lHUlRNSU4KK2lzIG9mdGVuIGJsb2NrZWQsIHNvIGl0IGlzIGJldHRlciB0byB1c2UgKGF0IGxlYXN0KSBTSUdSVE1JTiArIDEuCisKK0ltcGxlbWVudGF0aW9uIGV4cGVjdGF0aW9ucyAoZmVhdHVyZXMgYW5kIGJ1Z3MgOi0pKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBub3RpZmljYXRpb24gc2hvdWxkIHdvcmsgZm9yIGFueSBsb2NhbCBhY2Nlc3MgdG8gZmlsZXMgZXZlbiBpZiB0aGUKK2FjdHVhbCBmaWxlIHN5c3RlbSBpcyBvbiBhIHJlbW90ZSBzZXJ2ZXIuICBUaGlzIGltcGxpZXMgdGhhdCByZW1vdGUKK2FjY2VzcyB0byBmaWxlcyBzZXJ2ZWQgYnkgbG9jYWwgdXNlciBtb2RlIHNlcnZlcnMgc2hvdWxkIGJlIG5vdGlmaWVkLgorQWxzbywgcmVtb3RlIGFjY2Vzc2VzIHRvIGZpbGVzIHNlcnZlZCBieSBhIGxvY2FsIGtlcm5lbCBORlMgc2VydmVyIHNob3VsZAorYmUgbm90aWZpZWQuCisKK0luIG9yZGVyIHRvIG1ha2UgdGhlIGltcGFjdCBvbiB0aGUgZmlsZSBzeXN0ZW0gY29kZSBhcyBzbWFsbCBhcyBwb3NzaWJsZSwKK3RoZSBwcm9ibGVtIG9mIGhhcmQgbGlua3MgdG8gZmlsZXMgaGFzIGJlZW4gaWdub3JlZC4gIFNvIGlmIGEgZmlsZSAoeCkKK2V4aXN0cyBpbiB0d28gZGlyZWN0b3JpZXMgKGEgYW5kIGIpIHRoZW4gYSBjaGFuZ2UgdG8gdGhlIGZpbGUgdXNpbmcgdGhlCituYW1lICJhL3giIHNob3VsZCBiZSBub3RpZmllZCB0byBhIHByb2dyYW0gZXhwZWN0aW5nIG5vdGlmaWNhdGlvbnMgb24KK2RpcmVjdG9yeSAiYSIsIGJ1dCB3aWxsIG5vdCBiZSBub3RpZmllZCB0byBvbmUgZXhwZWN0aW5nIG5vdGlmaWNhdGlvbnMgb24KK2RpcmVjdG9yeSAiYiIuCisKK0Fsc28sIGZpbGVzIHRoYXQgYXJlIHVubGlua2VkLCB3aWxsIHN0aWxsIGNhdXNlIG5vdGlmaWNhdGlvbnMgaW4gdGhlCitsYXN0IGRpcmVjdG9yeSB0aGF0IHRoZXkgd2VyZSBsaW5rZWQgdG8uCisKK0NvbmZpZ3VyYXRpb24KKy0tLS0tLS0tLS0tLS0KKworRG5vdGlmeSBpcyBjb250cm9sbGVkIHZpYSB0aGUgQ09ORklHX0ROT1RJRlkgY29uZmlndXJhdGlvbiBvcHRpb24uICBXaGVuCitkaXNhYmxlZCwgZmNudGwoZmQsIEZfTk9USUZZLCAuLi4pIHdpbGwgcmV0dXJuIC1FSU5WQUwuCisKK0V4YW1wbGUKKy0tLS0tLS0KK1NlZSBEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2Rub3RpZnlfdGVzdC5jIGZvciBhbiBleGFtcGxlLgorCitOT1RFCistLS0tCitCZWdpbm5pbmcgd2l0aCBMaW51eCAyLjYuMTMsIGRub3RpZnkgaGFzIGJlZW4gcmVwbGFjZWQgYnkgaW5vdGlmeS4KK1NlZSBEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lub3RpZnkudHh0IGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGl0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9kbm90aWZ5X3Rlc3QuYyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZG5vdGlmeV90ZXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGIzN2I0YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZG5vdGlmeV90ZXN0LmMKQEAgLTAsMCArMSwzNCBAQAorI2RlZmluZSBfR05VX1NPVVJDRQkvKiBuZWVkZWQgdG8gZ2V0IHRoZSBkZWZpbmVzICovCisjaW5jbHVkZSA8ZmNudGwuaD4JLyogaW4gZ2xpYmMgMi4yIHRoaXMgaGFzIHRoZSBuZWVkZWQKKwkJCQkgICB2YWx1ZXMgZGVmaW5lZCAqLworI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKK3N0YXRpYyB2b2xhdGlsZSBpbnQgZXZlbnRfZmQ7CisKK3N0YXRpYyB2b2lkIGhhbmRsZXIoaW50IHNpZywgc2lnaW5mb190ICpzaSwgdm9pZCAqZGF0YSkKK3sKKwlldmVudF9mZCA9IHNpLT5zaV9mZDsKK30KKworaW50IG1haW4odm9pZCkKK3sKKwlzdHJ1Y3Qgc2lnYWN0aW9uIGFjdDsKKwlpbnQgZmQ7CisKKwlhY3Quc2Ffc2lnYWN0aW9uID0gaGFuZGxlcjsKKwlzaWdlbXB0eXNldCgmYWN0LnNhX21hc2spOworCWFjdC5zYV9mbGFncyA9IFNBX1NJR0lORk87CisJc2lnYWN0aW9uKFNJR1JUTUlOICsgMSwgJmFjdCwgTlVMTCk7CisKKwlmZCA9IG9wZW4oIi4iLCBPX1JET05MWSk7CisJZmNudGwoZmQsIEZfU0VUU0lHLCBTSUdSVE1JTiArIDEpOworCWZjbnRsKGZkLCBGX05PVElGWSwgRE5fTU9ESUZZfEROX0NSRUFURXxETl9NVUxUSVNIT1QpOworCS8qIHdlIHdpbGwgbm93IGJlIG5vdGlmaWVkIGlmIGFueSBvZiB0aGUgZmlsZXMKKwkgICBpbiAiLiIgaXMgbW9kaWZpZWQgb3IgbmV3IGZpbGVzIGFyZSBjcmVhdGVkICovCisJd2hpbGUgKDEpIHsKKwkJcGF1c2UoKTsKKwkJcHJpbnRmKCJHb3QgZXZlbnQgb24gZmQ9JWRcbiIsIGV2ZW50X2ZkKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2VjcnlwdGZzLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZWNyeXB0ZnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxZDhhMDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2VjcnlwdGZzLnR4dApAQCAtMCwwICsxLDc3IEBACitlQ3J5cHRmczogQSBzdGFja2VkIGNyeXB0b2dyYXBoaWMgZmlsZXN5c3RlbSBmb3IgTGludXgKKworZUNyeXB0ZnMgaXMgZnJlZSBzb2Z0d2FyZS4gUGxlYXNlIHNlZSB0aGUgZmlsZSBDT1BZSU5HIGZvciBkZXRhaWxzLgorRm9yIGRvY3VtZW50YXRpb24sIHBsZWFzZSBzZWUgdGhlIGZpbGVzIGluIHRoZSBkb2MvIHN1YmRpcmVjdG9yeS4gIEZvcgorYnVpbGRpbmcgYW5kIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgcGxlYXNlIHNlZSB0aGUgSU5TVEFMTCBmaWxlLgorCitNYWludGFpbmVyOiBQaGlsbGlwIEhlbGxld2VsbAorTGVhZCBkZXZlbG9wZXI6IE1pY2hhZWwgQS4gSGFsY3JvdyA8bWhhbGNyb3dAdXMuaWJtLmNvbT4KK0RldmVsb3BlcnM6IE1pY2hhZWwgQy4gVGhvbXBzb24KKyAgICAgICAgICAgIEtlbnQgWW9kZXIKK1dlYiBTaXRlOiBodHRwOi8vZWNyeXB0ZnMuc2YubmV0CisKK1RoaXMgc29mdHdhcmUgaXMgY3VycmVudGx5IHVuZGVyZ29pbmcgZGV2ZWxvcG1lbnQuIE1ha2Ugc3VyZSB0bworbWFpbnRhaW4gYSBiYWNrdXAgY29weSBvZiBhbnkgZGF0YSB5b3Ugd3JpdGUgaW50byBlQ3J5cHRmcy4KKworZUNyeXB0ZnMgcmVxdWlyZXMgdGhlIHVzZXJzcGFjZSB0b29scyBkb3dubG9hZGFibGUgZnJvbSB0aGUKK1NvdXJjZUZvcmdlIHNpdGU6CisKK2h0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZWNyeXB0ZnMvCisKK1VzZXJzcGFjZSByZXF1aXJlbWVudHMgaW5jbHVkZToKKyAtIERhdmlkIEhvd2VsbHMnIHVzZXJzcGFjZSBrZXlyaW5nIGhlYWRlcnMgYW5kIGxpYnJhcmllcyAodmVyc2lvbgorICAgMS4wIG9yIGhpZ2hlciksIG9idGFpbmFibGUgZnJvbQorICAgaHR0cDovL3Blb3BsZS5yZWRoYXQuY29tL35kaG93ZWxscy9rZXl1dGlscy8KKyAtIExpYmdjcnlwdAorCisKK05PVEVTCisKK0luIHRoZSBiZXRhL2V4cGVyaW1lbnRhbCByZWxlYXNlcyBvZiBlQ3J5cHRmcywgd2hlbiB5b3UgdXBncmFkZQorZUNyeXB0ZnMsIHlvdSBzaG91bGQgY29weSB0aGUgZmlsZXMgdG8gYW4gdW5lbmNyeXB0ZWQgbG9jYXRpb24gYW5kCit0aGVuIGNvcHkgdGhlIGZpbGVzIGJhY2sgaW50byB0aGUgbmV3IGVDcnlwdGZzIG1vdW50IHRvIG1pZ3JhdGUgdGhlCitmaWxlcy4KKworCitNT1VOVC1XSURFIFBBU1NQSFJBU0UKKworQ3JlYXRlIGEgbmV3IGRpcmVjdG9yeSBpbnRvIHdoaWNoIGVDcnlwdGZzIHdpbGwgd3JpdGUgaXRzIGVuY3J5cHRlZAorZmlsZXMgKGkuZS4sIC9yb290L2NyeXB0KS4gIFRoZW4sIGNyZWF0ZSB0aGUgbW91bnQgcG9pbnQgZGlyZWN0b3J5CisoaS5lLiwgL21udC9jcnlwdCkuICBOb3cgaXQncyB0aW1lIHRvIG1vdW50IGVDcnlwdGZzOgorCittb3VudCAtdCBlY3J5cHRmcyAvcm9vdC9jcnlwdCAvbW50L2NyeXB0CisKK1lvdSBzaG91bGQgYmUgcHJvbXB0ZWQgZm9yIGEgcGFzc3BocmFzZSBhbmQgYSBzYWx0ICh0aGUgc2FsdCBtYXkgYmUKK2JsYW5rKS4KKworVHJ5IHdyaXRpbmcgYSBuZXcgZmlsZToKKworZWNobyAiSGVsbG8sIFdvcmxkIiA+IC9tbnQvY3J5cHQvaGVsbG8udHh0CisKK1RoZSBvcGVyYXRpb24gd2lsbCBjb21wbGV0ZS4gIE5vdGljZSB0aGF0IHRoZXJlIGlzIGEgbmV3IGZpbGUgaW4KKy9yb290L2NyeXB0IHRoYXQgaXMgYXQgbGVhc3QgMTIyODggYnl0ZXMgaW4gc2l6ZSAoZGVwZW5kaW5nIG9uIHlvdXIKK2hvc3QgcGFnZSBzaXplKS4gIFRoaXMgaXMgdGhlIGVuY3J5cHRlZCB1bmRlcmx5aW5nIGZpbGUgZm9yIHdoYXQgeW91CitqdXN0IHdyb3RlLiAgVG8gdGVzdCByZWFkaW5nLCBmcm9tIHN0YXJ0IHRvIGZpbmlzaCwgeW91IG5lZWQgdG8gY2xlYXIKK3RoZSB1c2VyIHNlc3Npb24ga2V5cmluZzoKKwora2V5Y3RsIGNsZWFyIEB1CisKK1RoZW4gdW1vdW50IC9tbnQvY3J5cHQgYW5kIG1vdW50IGFnYWluIHBlciB0aGUgaW5zdHJ1Y3Rpb25zIGdpdmVuCithYm92ZS4KKworY2F0IC9tbnQvY3J5cHQvaGVsbG8udHh0CisKKworTk9URVMKKworZUNyeXB0ZnMgdmVyc2lvbiAwLjEgc2hvdWxkIG9ubHkgYmUgbW91bnRlZCBvbiAoMSkgZW1wdHkgZGlyZWN0b3JpZXMKK29yICgyKSBkaXJlY3RvcmllcyBjb250YWluaW5nIGZpbGVzIG9ubHkgY3JlYXRlZCBieSBlQ3J5cHRmcy4gSWYgeW91Cittb3VudCBhIGRpcmVjdG9yeSB0aGF0IGhhcyBwcmUtZXhpc3RpbmcgZmlsZXMgbm90IGNyZWF0ZWQgYnkgZUNyeXB0ZnMsCit0aGVuIGJlaGF2aW9yIGlzIHVuZGVmaW5lZC4gRG8gbm90IHJ1biBlQ3J5cHRmcyBpbiBoaWdoZXIgdmVyYm9zaXR5CitsZXZlbHMgdW5sZXNzIHlvdSBhcmUgZG9pbmcgc28gZm9yIHRoZSBzb2xlIHB1cnBvc2Ugb2YgZGVidWdnaW5nIG9yCitkZXZlbG9wbWVudCwgc2luY2Ugc2VjcmV0IHZhbHVlcyB3aWxsIGJlIHdyaXR0ZW4gb3V0IHRvIHRoZSBzeXN0ZW0gbG9nCitpbiB0aGF0IGNhc2UuCisKKworTWlrZSBIYWxjcm93CittaGFsY3Jvd0B1cy5pYm0uY29tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2VmaXZhcmZzLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZWZpdmFyZnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NmE2NGIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2VmaXZhcmZzLnR4dApAQCAtMCwwICsxLDIzIEBACisKK2VmaXZhcmZzIC0gYSAoVSlFRkkgdmFyaWFibGUgZmlsZXN5c3RlbQorCitUaGUgZWZpdmFyZnMgZmlsZXN5c3RlbSB3YXMgY3JlYXRlZCB0byBhZGRyZXNzIHRoZSBzaG9ydGNvbWluZ3Mgb2YKK3VzaW5nIGVudHJpZXMgaW4gc3lzZnMgdG8gbWFpbnRhaW4gRUZJIHZhcmlhYmxlcy4gVGhlIG9sZCBzeXNmcyBFRkkKK3ZhcmlhYmxlcyBjb2RlIG9ubHkgc3VwcG9ydGVkIHZhcmlhYmxlcyBvZiB1cCB0byAxMDI0IGJ5dGVzLiBUaGlzCitsaW1pdGF0aW9uIGV4aXN0ZWQgaW4gdmVyc2lvbiAwLjk5IG9mIHRoZSBFRkkgc3BlY2lmaWNhdGlvbiwgYnV0IHdhcworcmVtb3ZlZCBiZWZvcmUgYW55IGZ1bGwgcmVsZWFzZXMuIFNpbmNlIHZhcmlhYmxlcyBjYW4gbm93IGJlIGxhcmdlcgordGhhbiBhIHNpbmdsZSBwYWdlLCBzeXNmcyBpc24ndCB0aGUgYmVzdCBpbnRlcmZhY2UgZm9yIHRoaXMuCisKK1ZhcmlhYmxlcyBjYW4gYmUgY3JlYXRlZCwgZGVsZXRlZCBhbmQgbW9kaWZpZWQgd2l0aCB0aGUgZWZpdmFyZnMKK2ZpbGVzeXN0ZW0uCisKK2VmaXZhcmZzIGlzIHR5cGljYWxseSBtb3VudGVkIGxpa2UgdGhpcywKKworCW1vdW50IC10IGVmaXZhcmZzIG5vbmUgL3N5cy9maXJtd2FyZS9lZmkvZWZpdmFycworCitEdWUgdG8gdGhlIHByZXNlbmNlIG9mIG51bWVyb3VzIGZpcm13YXJlIGJ1Z3Mgd2hlcmUgcmVtb3Zpbmcgbm9uLXN0YW5kYXJkCitVRUZJIHZhcmlhYmxlcyBjYXVzZXMgdGhlIHN5c3RlbSBmaXJtd2FyZSB0byBmYWlsIHRvIFBPU1QsIGVmaXZhcmZzCitmaWxlcyB0aGF0IGFyZSBub3Qgd2VsbC1rbm93biBzdGFuZGFyZGl6ZWQgdmFyaWFibGVzIGFyZSBjcmVhdGVkCithcyBpbW11dGFibGUgZmlsZXMuICBUaGlzIGRvZXNuJ3QgcHJldmVudCByZW1vdmFsIC0gImNoYXR0ciAtaSIgd2lsbCB3b3JrIC0KK2J1dCBpdCBkb2VzIHByZXZlbnQgdGhpcyBraW5kIG9mIGZhaWx1cmUgZnJvbSBiZWluZyBhY2NvbXBsaXNoZWQKK2FjY2lkZW50YWxseS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXhvZnMudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9leG9mcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM1ODNhMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXhvZnMudHh0CkBAIC0wLDAgKzEsMTg1IEBACis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitXSEFUIElTIEVYT0ZTPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitleG9mcyBpcyBhIGZpbGUgc3lzdGVtIHRoYXQgdXNlcyBhbiBPU0QgYW5kIGV4cG9ydHMgdGhlIEFQSSBvZiBhIG5vcm1hbCBMaW51eAorZmlsZSBzeXN0ZW0uIFVzZXJzIGFjY2VzcyBleG9mcyBsaWtlIGFueSBvdGhlciBsb2NhbCBmaWxlIHN5c3RlbSwgYW5kIGV4b2ZzCit3aWxsIGluIHR1cm4gaXNzdWUgY29tbWFuZHMgdG8gdGhlIGxvY2FsIE9TRCBpbml0aWF0b3IuCisKK09TRCBpcyBhIG5ldyBUMTAgY29tbWFuZCBzZXQgdGhhdCB2aWV3cyBzdG9yYWdlIGRldmljZXMgbm90IGFzIGEgbGFyZ2UvZmxhdAorYXJyYXkgb2Ygc2VjdG9ycyBidXQgYXMgYSBjb250YWluZXIgb2Ygb2JqZWN0cywgZWFjaCBoYXZpbmcgYSBsZW5ndGgsIHF1b3RhLAordGltZSBhdHRyaWJ1dGVzIGFuZCBtb3JlLiBFYWNoIG9iamVjdCBpcyBhZGRyZXNzZWQgYnkgYSA2NGJpdCBJRCwgYW5kIGlzCitjb250YWluZWQgaW4gYSA2NGJpdCBJRCBwYXJ0aXRpb24uIEVhY2ggb2JqZWN0IGhhcyBhc3NvY2lhdGVkIGF0dHJpYnV0ZXMKK2F0dGFjaGVkIHRvIGl0LCB3aGljaCBhcmUgaW50ZWdyYWwgcGFydCBvZiB0aGUgb2JqZWN0IGFuZCBwcm92aWRlIG1ldGFkYXRhIGFib3V0Cit0aGUgb2JqZWN0LiBUaGUgc3RhbmRhcmQgZGVmaW5lcyBzb21lIGNvbW1vbiBvYmxpZ2F0b3J5IGF0dHJpYnV0ZXMsIGJ1dCB1c2VyCithdHRyaWJ1dGVzIGNhbiBiZSBhZGRlZCBhcyBuZWVkZWQuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0VOVklST05NRU5UCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RvIHVzZSB0aGlzIGZpbGUgc3lzdGVtLCB5b3UgbmVlZCB0byBoYXZlIGFuIG9iamVjdCBzdG9yZSB0byBydW4gaXQgb24uICBZb3UKK21heSBkb3dubG9hZCBhIHRhcmdldCBmcm9tOgoraHR0cDovL29wZW4tb3NkLm9yZworCitTZWUgRG9jdW1lbnRhdGlvbi9zY3NpL29zZC50eHQgZm9yIGhvdyB0byBzZXR1cCBhIHdvcmtpbmcgb3NkIGVudmlyb25tZW50LgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitVU0FHRQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisxLiBEb3dubG9hZCBhbmQgY29tcGlsZSBleG9mcyBhbmQgb3Blbi1vc2QgaW5pdGlhdG9yOgorICBZb3UgbmVlZCBhbiBleHRlcm5hbCBLZXJuZWwgc291cmNlIHRyZWUgb3Iga2VybmVsIGhlYWRlcnMgZnJvbSB5b3VyCisgIGRpc3RyaWJ1dGlvbi4gKGFueXRoaW5nIGJhc2VkIG9uIDIuNi4yNiBvciBsYXRlcikuCisKKyAgYS4gZG93bmxvYWQgb3Blbi1vc2QgaW5jbHVkaW5nIGV4b2ZzIHNvdXJjZSB1c2luZzoKKyAgICAgW3BhcmVudC1kaXJlY3RvcnldJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0Lm9wZW4tb3NkLm9yZy9vcGVuLW9zZC5naXQKKworICBiLiBCdWlsZCB0aGUgbGlicmFyeSBtb2R1bGUgbGlrZSB0aGlzOgorICAgICBbcGFyZW50LWRpcmVjdG9yeV0kIG1ha2UgLUMgS1NSQz0kKEtFUl9ESVIpIG9wZW4tb3NkCisKKyAgICAgVGhpcyB3aWxsIGJ1aWxkIGJvdGggdGhlIG9wZW4tb3NkIGluaXRpYXRvciBhcyB3ZWxsIGFzIHRoZSBleG9mcyBrZXJuZWwKKyAgICAgbW9kdWxlLiBVc2Ugd2hhdGV2ZXIgcGFyYW1ldGVycyB5b3UgY29tcGlsZWQgeW91ciBLZXJuZWwgd2l0aCBhbmQKKyAgICAgJChLRVJfRElSKSBhYm92ZSBwb2ludGluZyB0byB0aGUgS2VybmVsIHlvdSBjb21waWxlIGFnYWluc3QuIFNlZSB0aGUgZmlsZQorICAgICBvcGVuLW9zZC90b3AtbGV2ZWwtTWFrZWZpbGUgZm9yIGFuIGV4YW1wbGUuCisKKzIuIEdldCB0aGUgT1NEIGluaXRpYXRvciBhbmQgdGFyZ2V0IHNldCB1cCBwcm9wZXJseSwgYW5kIGxvZ2luIHRvIHRoZSB0YXJnZXQuCisgIFNlZSBEb2N1bWVudGF0aW9uL3Njc2kvb3NkLnR4dCBmb3IgZmFydGhlciBpbnN0cnVjdGlvbnMuIEFsc28gc2VlIC4vZG8tb3NkCisgIGZvciBleGFtcGxlIHNjcmlwdCB0aGF0IGRvZXMgYWxsIHRoZXNlIHN0ZXBzLgorCiszLiBJbnNtb2QgdGhlIGV4b2ZzLmtvIG1vZHVsZToKKyAgIFtleG9mc10kIGluc21vZCBleG9mcy5rbworCis0LiBNYWtlIHN1cmUgdGhlIGRpcmVjdG9yeSB3aGVyZSB5b3Ugd2FudCB0byBtb3VudCBleGlzdHMuIElmIG5vdCwgY3JlYXRlIGl0LgorICAgKEZvciBleGFtcGxlLCBta2RpciAvbW50L2V4b2ZzKQorCis1LiBBdCBmaXJzdCBydW4geW91IHdpbGwgbmVlZCB0byBpbnZva2UgdGhlIG1rZnMuZXhvZnMgYXBwbGljYXRpb24KKworICAgQXMgYW4gZXhhbXBsZSwgdGhpcyB3aWxsIGNyZWF0ZSB0aGUgZmlsZSBzeXN0ZW0gb246CisgICAvZGV2L29zZDAgcGFydGl0aW9uIElEIDY1NTM2CisKKyAgIG1rZnMuZXhvZnMgLS1waWQ9NjU1MzYgLS1mb3JtYXQgL2Rldi9vc2QwCisKKyAgIFRoZSAtLWZvcm1hdCBpcyBvcHRpb25hbC4gSWYgbm90IHNwZWNpZmllZCwgbm8gT1NEX0ZPUk1BVCB3aWxsIGJlCisgICBwZXJmb3JtZWQgYW5kIGEgY2xlYW4gZmlsZSBzeXN0ZW0gd2lsbCBiZSBjcmVhdGVkIGluIHRoZSBzcGVjaWZpZWQgcGlkLAorICAgaW4gdGhlIGF2YWlsYWJsZSBzcGFjZSBvZiB0aGUgdGFyZ2V0LiAoVXNlIC0tZm9ybWF0PXNpemVfaW5fbWVnIHRvIGxpbWl0CisgICB0aGUgdG90YWwgTFVOIHNwYWNlIGF2YWlsYWJsZSkKKworICAgSWYgcGlkIGFscmVhZHkgZXhpc3RzLCBpdCB3aWxsIGJlIGRlbGV0ZWQgYW5kIGEgbmV3IG9uZSB3aWxsIGJlIGNyZWF0ZWQgaW4KKyAgIGl0cyBwbGFjZS4gQmUgY2FyZWZ1bC4KKworICAgQW4gZXhvZnMgbGl2ZXMgaW5zaWRlIGEgc2luZ2xlIE9TRCBwYXJ0aXRpb24uIFlvdSBjYW4gY3JlYXRlIG11bHRpcGxlIGV4b2ZzCisgICBmaWxlc3lzdGVtcyBvbiB0aGUgc2FtZSBkZXZpY2UgdXNpbmcgbXVsdGlwbGUgcGlkcy4KKworICAgKHJ1biBta2ZzLmV4b2ZzIHdpdGhvdXQgYW55IHBhcmFtZXRlcnMgZm9yIHVzYWdlIGhlbHAgbWVzc2FnZSkKKworNi4gTW91bnQgdGhlIGZpbGUgc3lzdGVtLgorCisgICBGb3IgZXhhbXBsZSwgdG8gbW91bnQgL2Rldi9vc2QwLCBwYXJ0aXRpb24gSUQgMHgxMDAwMCBvbiAvbW50L2V4b2ZzOgorCisJbW91bnQgLXQgZXhvZnMgLW8gcGlkPTY1NTM2IC9kZXYvb3NkMCAvbW50L2V4b2ZzLworCis3LiBGb3IgcmVmZXJlbmNlIChTZWUgZG8tZXhvZnMgZXhhbXBsZSBzY3JpcHQpOgorCWRvLWV4b2ZzIHN0YXJ0IC0gYW4gZXhhbXBsZSBvZiBob3cgdG8gcGVyZm9ybSB0aGUgYWJvdmUgc3RlcHMuCisJZG8tZXhvZnMgc3RvcCAtIGFuIGV4YW1wbGUgb2YgaG93IHRvIHVubW91bnQgdGhlIGZpbGUgc3lzdGVtLgorCWRvLWV4b2ZzIGZvcm1hdCAtIGFuIGV4YW1wbGUgb2YgaG93IHRvIGZvcm1hdCBhbmQgbWtmcyBhIG5ldyBleG9mcy4KKworOC4gRXh0cmEgY29tcGlsYXRpb24gZmxhZ3MgKHVuY29tbWVudCBpbiBmcy9leG9mcy9LYnVpbGQpOgorCUNPTkZJR19FWE9GU19ERUJVRyAtIGZvciBkZWJ1ZyBtZXNzYWdlcyBhbmQgZXh0cmEgY2hlY2tzLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitleG9mcyBtb3VudCBvcHRpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitTaW1pbGFyIHRvIGFueSBtb3VudCBjb21tYW5kOgorCW1vdW50IC10IGV4b2ZzIC1vIGV4b2ZzX29wdGlvbnMgL2Rldi9vc2RYIG1vdW50X2V4b2ZzX2RpcmVjdG9yeQorCitXaGVyZToKKyAgICAtdCBleG9mczogc3BlY2lmaWVzIHRoZSBleG9mcyBmaWxlIHN5c3RlbQorCisgICAgL2Rldi9vc2RYOiBYIGlzIGEgZGVjaW1hbCBudW1iZXIuIC9kZXYvb3NkWCB3YXMgY3JlYXRlZCBhZnRlciBhIHN1Y2Nlc3NmdWwKKyAgICAgICAgICAgICAgIGxvZ2luIGludG8gYW4gT1NEIHRhcmdldC4KKworICAgIG1vdW50X2V4b2ZzX2RpcmVjdG9yeTogVGhlIGRpcmVjdG9yeSB0byBtb3VudCB0aGUgZmlsZSBzeXN0ZW0gb24KKworICAgIGV4b2ZzIHNwZWNpZmljIG9wdGlvbnM6IE9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMgKCwpCisJCXBpZD08aW50ZWdlcj4gLSBUaGUgcGFydGl0aW9uIG51bWJlciB0byBtb3VudC9jcmVhdGUgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyIG9mIHRoZSBmaWxlc3lzdGVtLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBpcyBtYW5kYXRvcnkuIGludGVnZXIgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhleCBieSBwcmUtcGVuZGluZyBhbiAweCB0byB0aGUgbnVtYmVyLgorCQlvc2RuYW1lPTxpZD4gIC0gTW91bnQgYnkgYSBkZXZpY2UncyBvc2RuYW1lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvc2RuYW1lIGlzIHVzdWFsbHkgYSAzNiBjaGFyYWN0ZXIgdXVpZCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybSAiZDI2ODM3MzItYzkwNi00ZWUxLTlkYmQtYzEwYzI3YmI0MGRmIi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgaXMgb25lIG9mIHRoZSBkZXZpY2UncyB1dWlkIHNwZWNpZmllZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWtmcy5leG9mcyBmb3JtYXQgY29tbWFuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhpcyBvcHRpb24gaXMgc3BlY2lmaWVkIHRoZW4gdGhlIC9kZXYvb3NkWAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYm92ZSBjYW4gYmUgZW1wdHkgYW5kIGlzIGlnbm9yZWQuCisgICAgICAgICAgICAgICAgdG89PGludGVnZXI+ICAtIFRpbWVvdXQgaW4gdGlja3MgZm9yIGEgc2luZ2xlIGNvbW1hbmQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgaXMgKDYwICogSFopIFtmb3IgZGVidWdnaW5nIG9ubHldCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0RFU0lHTgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqIFRoZSBmaWxlIHN5c3RlbSBjb250cm9sIGJsb2NrIChBS0Egb24tZGlzayBzdXBlcmJsb2NrKSByZXNpZGVzIGluIGFuIG9iamVjdAorICB3aXRoIGEgc3BlY2lhbCBJRCAoZGVmaW5lZCBpbiBjb21tb24uaCkuCisgIEluZm9ybWF0aW9uIGluY2x1ZGVkIGluIHRoZSBmaWxlIHN5c3RlbSBjb250cm9sIGJsb2NrIGlzIHVzZWQgdG8gZmlsbCB0aGUKKyAgaW4tbWVtb3J5IHN1cGVyYmxvY2sgc3RydWN0dXJlIGF0IG1vdW50IHRpbWUuIFRoaXMgb2JqZWN0IGlzIGNyZWF0ZWQgYmVmb3JlCisgIHRoZSBmaWxlIHN5c3RlbSBpcyB1c2VkIGJ5IG1rZXhvZnMuYy4gSXQgY29udGFpbnMgaW5mb3JtYXRpb24gc3VjaCBhczoKKwktIFRoZSBmaWxlIHN5c3RlbSdzIG1hZ2ljIG51bWJlcgorCS0gVGhlIG5leHQgaW5vZGUgbnVtYmVyIHRvIGJlIGFsbG9jYXRlZAorCisqIEVhY2ggZmlsZSByZXNpZGVzIGluIGl0cyBvd24gb2JqZWN0IGFuZCBjb250YWlucyB0aGUgZGF0YSAoYW5kIGl0IHdpbGwgYmUKKyAgcG9zc2libGUgdG8gZXh0ZW5kIHRoZSBmaWxlIG92ZXIgbXVsdGlwbGUgb2JqZWN0cywgdGhvdWdoIHRoaXMgaGFzIG5vdCBiZWVuCisgIGltcGxlbWVudGVkIHlldCkuCisKKyogQSBkaXJlY3RvcnkgaXMgdHJlYXRlZCBhcyBhIGZpbGUsIGFuZCBlc3NlbnRpYWxseSBjb250YWlucyBhIGxpc3Qgb2YgPGZpbGUKKyAgbmFtZSwgaW5vZGUgIz4gcGFpcnMgZm9yIGZpbGVzIHRoYXQgYXJlIGZvdW5kIGluIHRoYXQgZGlyZWN0b3J5LiBUaGUgb2JqZWN0CisgIElEcyBjb3JyZXNwb25kIHRvIHRoZSBmaWxlcycgaW5vZGUgbnVtYmVycyBhbmQgd2lsbCBiZSBhbGxvY2F0ZWQgYWNjb3JkaW5nIHRvCisgIGEgYml0bWFwIChzdG9yZWQgaW4gYSBzZXBhcmF0ZSBvYmplY3QpLiBOb3cgdGhleSBhcmUgYWxsb2NhdGVkIHVzaW5nIGEKKyAgY291bnRlci4KKworKiBFYWNoIGZpbGUncyBjb250cm9sIGJsb2NrIChBS0Egb24tZGlzayBpbm9kZSkgaXMgc3RvcmVkIGluIGl0cyBvYmplY3QncworICBhdHRyaWJ1dGVzLiBUaGlzIGFwcGxpZXMgdG8gYm90aCByZWd1bGFyIGZpbGVzIGFuZCBvdGhlciB0eXBlcyAoZGlyZWN0b3JpZXMsCisgIGRldmljZSBmaWxlcywgc3ltbGlua3MsIGV0Yy4pLgorCisqIENyZWRlbnRpYWxzIGFyZSBnZW5lcmF0ZWQgcGVyIG9iamVjdCAoaW5vZGUgYW5kIHN1cGVyYmxvY2spIHdoZW4gdGhleSBhcmUKKyAgY3JlYXRlZCBpbiBtZW1vcnkgKHJlYWQgZnJvbSBkaXNrIG9yIGNyZWF0ZWQpLiBUaGUgY3JlZGVudGlhbCB3b3JrcyBmb3IgYWxsCisgIG9wZXJhdGlvbnMgYW5kIGlzIHVzZWQgYXMgbG9uZyBhcyB0aGUgb2JqZWN0IHJlbWFpbnMgaW4gbWVtb3J5LgorCisqIEFzeW5jIE9TRCBvcGVyYXRpb25zIGFyZSB1c2VkIHdoZW5ldmVyIHBvc3NpYmxlLCBidXQgdGhlIHRhcmdldCBtYXkgZXhlY3V0ZQorICB0aGVtIG91dCBvZiBvcmRlci4gVGhlIG9wZXJhdGlvbnMgdGhhdCBjb25jZXJuIHVzIGFyZSBjcmVhdGUsIGRlbGV0ZSwKKyAgcmVhZHBhZ2UsIHdyaXRlcGFnZSwgdXBkYXRlX2lub2RlLCBhbmQgdHJ1bmNhdGUuIFRoZSBmb2xsb3dpbmcgcGFpcnMgb2YKKyAgb3BlcmF0aW9ucyBzaG91bGQgZXhlY3V0ZSBpbiB0aGUgb3JkZXIgd3JpdHRlbiwgYW5kIHdlIG5lZWQgdG8gcHJldmVudCB0aGVtCisgIGZyb20gZXhlY3V0aW5nIGluIHJldmVyc2Ugb3JkZXI6CisJLSBUaGUgZm9sbG93aW5nIGFyZSBoYW5kbGVkIHdpdGggdGhlIE9CSl9DUkVBVEVEIGFuZCBPQkpfMkJDUkVBVEVECisJICBmbGFncy4gT0JKX0NSRUFURUQgaXMgc2V0IHdoZW4gd2Uga25vdyB0aGUgb2JqZWN0IGV4aXN0cyBvbiB0aGUgT1NEIC0KKwkgIGluIGNyZWF0ZSdzIGNhbGxiYWNrIGZ1bmN0aW9uLCBhbmQgd2hlbiB3ZSBzdWNjZXNzZnVsbHkgZG8gYQorCSAgcmVhZF9pbm9kZS4KKwkgIE9CSl8yQkNSRUFURUQgaXMgc2V0IGluIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGNyZWF0ZSBmdW5jdGlvbiwgc28gd2UKKwkgIGtub3cgdGhhdCB3ZSBzaG91bGQgd2FpdC4KKwkJLSBjcmVhdGUvZGVsZXRlOiBkZWxldGUgc2hvdWxkIHdhaXQgdW50aWwgdGhlIG9iamVjdCBpcyBjcmVhdGVkCisJCSAgb24gdGhlIE9TRC4KKwkJLSBjcmVhdGUvcmVhZHBhZ2U6IHJlYWRwYWdlIHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHBhZ2UKKwkJICBmdWxsIG9mIHplcm9lcyBpbiB0aGlzIGNhc2UuIElmIHRoZXJlIHdhcyBhIHdyaXRlIGFscmVhZHkKKwkJICBlbi1yb3V0ZSAoaS5lLiBjcmVhdGUsIHdyaXRlcGFnZSwgcmVhZHBhZ2UpIHRoZW4gdGhlIHBhZ2UKKwkJICB3b3VsZCBiZSBsb2NrZWQsIGFuZCBzbyBpdCB3b3VsZCByZWFsbHkgYmUgdGhlIHNhbWUgYXMKKwkJICBjcmVhdGUvd3JpdGVwYWdlLgorCQktIGNyZWF0ZS93cml0ZXBhZ2U6IGlmIHdyaXRlcGFnZSBpcyBjYWxsZWQgZm9yIGEgc3luYyB3cml0ZSwgaXQKKwkJICBzaG91bGQgd2FpdCB1bnRpbCB0aGUgb2JqZWN0IGlzIGNyZWF0ZWQgb24gdGhlIE9TRC4KKwkJICBPdGhlcndpc2UsIGl0IHNob3VsZCBqdXN0IHJldHVybi4KKwkJLSBjcmVhdGUvdHJ1bmNhdGU6IHRydW5jYXRlIHNob3VsZCB3YWl0IHVudGlsIHRoZSBvYmplY3QgaXMKKwkJICBjcmVhdGVkIG9uIHRoZSBPU0QuCisJCS0gY3JlYXRlL3VwZGF0ZV9pbm9kZTogdXBkYXRlX2lub2RlIHNob3VsZCB3YWl0IHVudGlsIHRoZQorCQkgIG9iamVjdCBpcyBjcmVhdGVkIG9uIHRoZSBPU0QuCisJLSBIYW5kbGVkIGJ5IFZGUyBsb2NrczoKKwkJLSByZWFkcGFnZS9kZWxldGU6IHNob3VsZG4ndCBoYXBwZW4gYmVjYXVzZSBvZiBwYWdlIGxvY2suCisJCS0gd3JpdGVwYWdlL2RlbGV0ZTogc2hvdWxkbid0IGhhcHBlbiBiZWNhdXNlIG9mIHBhZ2UgbG9jay4KKwkJLSByZWFkcGFnZS93cml0ZXBhZ2U6IHNob3VsZG4ndCBoYXBwZW4gYmVjYXVzZSBvZiBwYWdlIGxvY2suCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0xJQ0VOU0UvQ09QWVJJR0hUCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitUaGUgZXhvZnMgZmlsZSBzeXN0ZW0gaXMgYmFzZWQgb24gZXh0MiB2MC41YiAoZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTGludXgga2VybmVsCit2ZXJzaW9uIDIuNi4xMCkuICBBbGwgZmlsZXMgaW5jbHVkZSB0aGUgb3JpZ2luYWwgY29weXJpZ2h0cywgYW5kIHRoZSBsaWNlbnNlCitpcyBHUEwgdmVyc2lvbiAyIChvbmx5IHZlcnNpb24gMiwgYXMgaXMgdHJ1ZSBmb3IgdGhlIExpbnV4IGtlcm5lbCkuICBUaGUKK0xpbnV4IGtlcm5lbCBjYW4gYmUgZG93bmxvYWRlZCBmcm9tIHd3dy5rZXJuZWwub3JnLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9leHQyLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXh0Mi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU3NTUzOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXh0Mi50eHQKQEAgLTAsMCArMSwzODQgQEAKKworVGhlIFNlY29uZCBFeHRlbmRlZCBGaWxlc3lzdGVtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworZXh0MiB3YXMgb3JpZ2luYWxseSByZWxlYXNlZCBpbiBKYW51YXJ5IDE5OTMuICBXcml0dGVuIGJ5IFJcJ2VteSBDYXJkLAorVGhlb2RvcmUgVHMnbyBhbmQgU3RlcGhlbiBUd2VlZGllLCBpdCB3YXMgYSBtYWpvciByZXdyaXRlIG9mIHRoZQorRXh0ZW5kZWQgRmlsZXN5c3RlbS4gIEl0IGlzIGN1cnJlbnRseSBzdGlsbCAoQXByaWwgMjAwMSkgdGhlIHByZWRvbWluYW50CitmaWxlc3lzdGVtIGluIHVzZSBieSBMaW51eC4gIFRoZXJlIGFyZSBhbHNvIGltcGxlbWVudGF0aW9ucyBhdmFpbGFibGUKK2ZvciBOZXRCU0QsIEZyZWVCU0QsIHRoZSBHTlUgSFVSRCwgV2luZG93cyA5NS85OC9OVCwgT1MvMiBhbmQgUklTQyBPUy4KKworT3B0aW9ucworPT09PT09PQorCitNb3N0IGRlZmF1bHRzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBmaWxlc3lzdGVtIHN1cGVyYmxvY2ssIGFuZCBjYW4gYmUKK3NldCB1c2luZyB0dW5lMmZzKDgpLiBLZXJuZWwtZGV0ZXJtaW5lZCBkZWZhdWx0cyBhcmUgaW5kaWNhdGVkIGJ5ICgqKS4KKworYnNkZGYJCQkoKikJTWFrZXMgYGRmJyBhY3QgbGlrZSBCU0QuCittaW5peGRmCQkJCU1ha2VzIGBkZicgYWN0IGxpa2UgTWluaXguCisKK2NoZWNrPW5vbmUsIG5vY2hlY2sJKCopCURvbid0IGRvIGV4dHJhIGNoZWNraW5nIG9mIGJpdG1hcHMgb24gbW91bnQKKwkJCQkoY2hlY2s9bm9ybWFsIGFuZCBjaGVjaz1zdHJpY3Qgb3B0aW9ucyByZW1vdmVkKQorCitkYXgJCQkJVXNlIGRpcmVjdCBhY2Nlc3MgKG5vIHBhZ2UgY2FjaGUpLiAgU2VlCisJCQkJRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9kYXgudHh0LgorCitkZWJ1ZwkJCQlFeHRyYSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gaXMgc2VudCB0byB0aGUKKwkJCQlrZXJuZWwgc3lzbG9nLiAgVXNlZnVsIGZvciBkZXZlbG9wZXJzLgorCitlcnJvcnM9Y29udGludWUJCQlLZWVwIGdvaW5nIG9uIGEgZmlsZXN5c3RlbSBlcnJvci4KK2Vycm9ycz1yZW1vdW50LXJvCQlSZW1vdW50IHRoZSBmaWxlc3lzdGVtIHJlYWQtb25seSBvbiBhbiBlcnJvci4KK2Vycm9ycz1wYW5pYwkJCVBhbmljIGFuZCBoYWx0IHRoZSBtYWNoaW5lIGlmIGFuIGVycm9yIG9jY3Vycy4KKworZ3JwaWQsIGJzZGdyb3VwcwkJR2l2ZSBvYmplY3RzIHRoZSBzYW1lIGdyb3VwIElEIGFzIHRoZWlyIHBhcmVudC4KK25vZ3JwaWQsIHN5c3Zncm91cHMJCU5ldyBvYmplY3RzIGhhdmUgdGhlIGdyb3VwIElEIG9mIHRoZWlyIGNyZWF0b3IuCisKK25vdWlkMzIJCQkJVXNlIDE2LWJpdCBVSURzIGFuZCBHSURzLgorCitvbGRhbGxvYwkJCUVuYWJsZSB0aGUgb2xkIGJsb2NrIGFsbG9jYXRvci4gT3Jsb3Ygc2hvdWxkCisJCQkJaGF2ZSBiZXR0ZXIgcGVyZm9ybWFuY2UsIHdlJ2QgbGlrZSB0byBnZXQgc29tZQorCQkJCWZlZWRiYWNrIGlmIGl0J3MgdGhlIGNvbnRyYXJ5IGZvciB5b3UuCitvcmxvdgkJCSgqKQlVc2UgdGhlIE9ybG92IGJsb2NrIGFsbG9jYXRvci4KKwkJCQkoU2VlIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzE0NjMzLyBhbmQKKwkJCQlodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8xNDQ0Ni8uKQorCityZXN1aWQ9bgkJCVRoZSB1c2VyIElEIHdoaWNoIG1heSB1c2UgdGhlIHJlc2VydmVkIGJsb2Nrcy4KK3Jlc2dpZD1uCQkJVGhlIGdyb3VwIElEIHdoaWNoIG1heSB1c2UgdGhlIHJlc2VydmVkIGJsb2Nrcy4KKworc2I9bgkJCQlVc2UgYWx0ZXJuYXRlIHN1cGVyYmxvY2sgYXQgdGhpcyBsb2NhdGlvbi4KKwordXNlcl94YXR0cgkJCUVuYWJsZSAidXNlci4iIFBPU0lYIEV4dGVuZGVkIEF0dHJpYnV0ZXMKKwkJCQkocmVxdWlyZXMgQ09ORklHX0VYVDJfRlNfWEFUVFIpLgorCQkJCVNlZSBhbHNvIGh0dHA6Ly9hY2wuYmVzdGJpdHMuYXQKK25vdXNlcl94YXR0cgkJCURvbid0IHN1cHBvcnQgInVzZXIuIiBleHRlbmRlZCBhdHRyaWJ1dGVzLgorCithY2wJCQkJRW5hYmxlIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIHN1cHBvcnQKKwkJCQkocmVxdWlyZXMgQ09ORklHX0VYVDJfRlNfUE9TSVhfQUNMKS4KKwkJCQlTZWUgYWxzbyBodHRwOi8vYWNsLmJlc3RiaXRzLmF0Citub2FjbAkJCQlEb24ndCBzdXBwb3J0IFBPU0lYIEFDTHMuCisKK25vYmgJCQkJRG8gbm90IGF0dGFjaCBidWZmZXJfaGVhZHMgdG8gZmlsZSBwYWdlY2FjaGUuCisKK2dycHF1b3RhLG5vcXVvdGEscXVvdGEsdXNycXVvdGEJUXVvdGEgb3B0aW9ucyBhcmUgc2lsZW50bHkgaWdub3JlZCBieSBleHQyLgorCisKK1NwZWNpZmljYXRpb24KKz09PT09PT09PT09PT0KKworZXh0MiBzaGFyZXMgbWFueSBwcm9wZXJ0aWVzIHdpdGggdHJhZGl0aW9uYWwgVW5peCBmaWxlc3lzdGVtcy4gIEl0IGhhcwordGhlIGNvbmNlcHRzIG9mIGJsb2NrcywgaW5vZGVzIGFuZCBkaXJlY3Rvcmllcy4gIEl0IGhhcyBzcGFjZSBpbiB0aGUKK3NwZWNpZmljYXRpb24gZm9yIEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSwgZnJhZ21lbnRzLCB1bmRlbGV0aW9uIGFuZAorY29tcHJlc3Npb24gdGhvdWdoIHRoZXNlIGFyZSBub3QgeWV0IGltcGxlbWVudGVkIChzb21lIGFyZSBhdmFpbGFibGUgYXMKK3NlcGFyYXRlIHBhdGNoZXMpLiAgVGhlcmUgaXMgYWxzbyBhIHZlcnNpb25pbmcgbWVjaGFuaXNtIHRvIGFsbG93IG5ldworZmVhdHVyZXMgKHN1Y2ggYXMgam91cm5hbGxpbmcpIHRvIGJlIGFkZGVkIGluIGEgbWF4aW1hbGx5IGNvbXBhdGlibGUKK21hbm5lci4KKworQmxvY2tzCistLS0tLS0KKworVGhlIHNwYWNlIGluIHRoZSBkZXZpY2Ugb3IgZmlsZSBpcyBzcGxpdCB1cCBpbnRvIGJsb2Nrcy4gIFRoZXNlIGFyZQorYSBmaXhlZCBzaXplLCBvZiAxMDI0LCAyMDQ4IG9yIDQwOTYgYnl0ZXMgKDgxOTIgYnl0ZXMgb24gQWxwaGEgc3lzdGVtcyksCit3aGljaCBpcyBkZWNpZGVkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgY3JlYXRlZC4gIFNtYWxsZXIgYmxvY2tzIG1lYW4KK2xlc3Mgd2FzdGVkIHNwYWNlIHBlciBmaWxlLCBidXQgcmVxdWlyZSBzbGlnaHRseSBtb3JlIGFjY291bnRpbmcgb3ZlcmhlYWQsCithbmQgYWxzbyBpbXBvc2Ugb3RoZXIgbGltaXRzIG9uIHRoZSBzaXplIG9mIGZpbGVzIGFuZCB0aGUgZmlsZXN5c3RlbS4KKworQmxvY2sgR3JvdXBzCistLS0tLS0tLS0tLS0KKworQmxvY2tzIGFyZSBjbHVzdGVyZWQgaW50byBibG9jayBncm91cHMgaW4gb3JkZXIgdG8gcmVkdWNlIGZyYWdtZW50YXRpb24KK2FuZCBtaW5pbWlzZSB0aGUgYW1vdW50IG9mIGhlYWQgc2Vla2luZyB3aGVuIHJlYWRpbmcgYSBsYXJnZSBhbW91bnQKK29mIGNvbnNlY3V0aXZlIGRhdGEuICBJbmZvcm1hdGlvbiBhYm91dCBlYWNoIGJsb2NrIGdyb3VwIGlzIGtlcHQgaW4gYQorZGVzY3JpcHRvciB0YWJsZSBzdG9yZWQgaW4gdGhlIGJsb2NrKHMpIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBzdXBlcmJsb2NrLgorVHdvIGJsb2NrcyBuZWFyIHRoZSBzdGFydCBvZiBlYWNoIGdyb3VwIGFyZSByZXNlcnZlZCBmb3IgdGhlIGJsb2NrIHVzYWdlCitiaXRtYXAgYW5kIHRoZSBpbm9kZSB1c2FnZSBiaXRtYXAgd2hpY2ggc2hvdyB3aGljaCBibG9ja3MgYW5kIGlub2RlcworYXJlIGluIHVzZS4gIFNpbmNlIGVhY2ggYml0bWFwIGlzIGxpbWl0ZWQgdG8gYSBzaW5nbGUgYmxvY2ssIHRoaXMgbWVhbnMKK3RoYXQgdGhlIG1heGltdW0gc2l6ZSBvZiBhIGJsb2NrIGdyb3VwIGlzIDggdGltZXMgdGhlIHNpemUgb2YgYSBibG9jay4KKworVGhlIGJsb2NrKHMpIGZvbGxvd2luZyB0aGUgYml0bWFwcyBpbiBlYWNoIGJsb2NrIGdyb3VwIGFyZSBkZXNpZ25hdGVkCithcyB0aGUgaW5vZGUgdGFibGUgZm9yIHRoYXQgYmxvY2sgZ3JvdXAgYW5kIHRoZSByZW1haW5kZXIgYXJlIHRoZSBkYXRhCitibG9ja3MuICBUaGUgYmxvY2sgYWxsb2NhdGlvbiBhbGdvcml0aG0gYXR0ZW1wdHMgdG8gYWxsb2NhdGUgZGF0YSBibG9ja3MKK2luIHRoZSBzYW1lIGJsb2NrIGdyb3VwIGFzIHRoZSBpbm9kZSB3aGljaCBjb250YWlucyB0aGVtLgorCitUaGUgU3VwZXJibG9jaworLS0tLS0tLS0tLS0tLS0KKworVGhlIHN1cGVyYmxvY2sgY29udGFpbnMgYWxsIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29uZmlndXJhdGlvbiBvZgordGhlIGZpbGluZyBzeXN0ZW0uICBUaGUgcHJpbWFyeSBjb3B5IG9mIHRoZSBzdXBlcmJsb2NrIGlzIHN0b3JlZCBhdCBhbgorb2Zmc2V0IG9mIDEwMjQgYnl0ZXMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGRldmljZSwgYW5kIGl0IGlzIGVzc2VudGlhbAordG8gbW91bnRpbmcgdGhlIGZpbGVzeXN0ZW0uICBTaW5jZSBpdCBpcyBzbyBpbXBvcnRhbnQsIGJhY2t1cCBjb3BpZXMgb2YKK3RoZSBzdXBlcmJsb2NrIGFyZSBzdG9yZWQgaW4gYmxvY2sgZ3JvdXBzIHRocm91Z2hvdXQgdGhlIGZpbGVzeXN0ZW0uCitUaGUgZmlyc3QgdmVyc2lvbiBvZiBleHQyIChyZXZpc2lvbiAwKSBzdG9yZXMgYSBjb3B5IGF0IHRoZSBzdGFydCBvZgorZXZlcnkgYmxvY2sgZ3JvdXAsIGFsb25nIHdpdGggYmFja3VwcyBvZiB0aGUgZ3JvdXAgZGVzY3JpcHRvciBibG9jayhzKS4KK0JlY2F1c2UgdGhpcyBjYW4gY29uc3VtZSBhIGNvbnNpZGVyYWJsZSBhbW91bnQgb2Ygc3BhY2UgZm9yIGxhcmdlCitmaWxlc3lzdGVtcywgbGF0ZXIgcmV2aXNpb25zIGNhbiBvcHRpb25hbGx5IHJlZHVjZSB0aGUgbnVtYmVyIG9mIGJhY2t1cAorY29waWVzIGJ5IG9ubHkgcHV0dGluZyBiYWNrdXBzIGluIHNwZWNpZmljIGdyb3VwcyAodGhpcyBpcyB0aGUgc3BhcnNlCitzdXBlcmJsb2NrIGZlYXR1cmUpLiAgVGhlIGdyb3VwcyBjaG9zZW4gYXJlIDAsIDEgYW5kIHBvd2VycyBvZiAzLCA1IGFuZCA3LgorCitUaGUgaW5mb3JtYXRpb24gaW4gdGhlIHN1cGVyYmxvY2sgY29udGFpbnMgZmllbGRzIHN1Y2ggYXMgdGhlIHRvdGFsCitudW1iZXIgb2YgaW5vZGVzIGFuZCBibG9ja3MgaW4gdGhlIGZpbGVzeXN0ZW0gYW5kIGhvdyBtYW55IGFyZSBmcmVlLAoraG93IG1hbnkgaW5vZGVzIGFuZCBibG9ja3MgYXJlIGluIGVhY2ggYmxvY2sgZ3JvdXAsIHdoZW4gdGhlIGZpbGVzeXN0ZW0KK3dhcyBtb3VudGVkIChhbmQgaWYgaXQgd2FzIGNsZWFubHkgdW5tb3VudGVkKSwgd2hlbiBpdCB3YXMgbW9kaWZpZWQsCit3aGF0IHZlcnNpb24gb2YgdGhlIGZpbGVzeXN0ZW0gaXQgaXMgKHNlZSB0aGUgUmV2aXNpb25zIHNlY3Rpb24gYmVsb3cpCithbmQgd2hpY2ggT1MgY3JlYXRlZCBpdC4KKworSWYgdGhlIGZpbGVzeXN0ZW0gaXMgcmV2aXNpb24gMSBvciBoaWdoZXIsIHRoZW4gdGhlcmUgYXJlIGV4dHJhIGZpZWxkcywKK3N1Y2ggYXMgYSB2b2x1bWUgbmFtZSwgYSB1bmlxdWUgaWRlbnRpZmljYXRpb24gbnVtYmVyLCB0aGUgaW5vZGUgc2l6ZSwKK2FuZCBzcGFjZSBmb3Igb3B0aW9uYWwgZmlsZXN5c3RlbSBmZWF0dXJlcyB0byBzdG9yZSBjb25maWd1cmF0aW9uIGluZm8uCisKK0FsbCBmaWVsZHMgaW4gdGhlIHN1cGVyYmxvY2sgKGFzIGluIGFsbCBvdGhlciBleHQyIHN0cnVjdHVyZXMpIGFyZSBzdG9yZWQKK29uIHRoZSBkaXNjIGluIGxpdHRsZSBlbmRpYW4gZm9ybWF0LCBzbyBhIGZpbGVzeXN0ZW0gaXMgcG9ydGFibGUgYmV0d2VlbgorbWFjaGluZXMgd2l0aG91dCBoYXZpbmcgdG8ga25vdyB3aGF0IG1hY2hpbmUgaXQgd2FzIGNyZWF0ZWQgb24uCisKK0lub2RlcworLS0tLS0tCisKK1RoZSBpbm9kZSAoaW5kZXggbm9kZSkgaXMgYSBmdW5kYW1lbnRhbCBjb25jZXB0IGluIHRoZSBleHQyIGZpbGVzeXN0ZW0uCitFYWNoIG9iamVjdCBpbiB0aGUgZmlsZXN5c3RlbSBpcyByZXByZXNlbnRlZCBieSBhbiBpbm9kZS4gIFRoZSBpbm9kZQorc3RydWN0dXJlIGNvbnRhaW5zIHBvaW50ZXJzIHRvIHRoZSBmaWxlc3lzdGVtIGJsb2NrcyB3aGljaCBjb250YWluIHRoZQorZGF0YSBoZWxkIGluIHRoZSBvYmplY3QgYW5kIGFsbCBvZiB0aGUgbWV0YWRhdGEgYWJvdXQgYW4gb2JqZWN0IGV4Y2VwdAoraXRzIG5hbWUuICBUaGUgbWV0YWRhdGEgYWJvdXQgYW4gb2JqZWN0IGluY2x1ZGVzIHRoZSBwZXJtaXNzaW9ucywgb3duZXIsCitncm91cCwgZmxhZ3MsIHNpemUsIG51bWJlciBvZiBibG9ja3MgdXNlZCwgYWNjZXNzIHRpbWUsIGNoYW5nZSB0aW1lLAorbW9kaWZpY2F0aW9uIHRpbWUsIGRlbGV0aW9uIHRpbWUsIG51bWJlciBvZiBsaW5rcywgZnJhZ21lbnRzLCB2ZXJzaW9uCisoZm9yIE5GUykgYW5kIGV4dGVuZGVkIGF0dHJpYnV0ZXMgKEVBcykgYW5kL29yIEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKS4KKworVGhlcmUgYXJlIHNvbWUgcmVzZXJ2ZWQgZmllbGRzIHdoaWNoIGFyZSBjdXJyZW50bHkgdW51c2VkIGluIHRoZSBpbm9kZQorc3RydWN0dXJlIGFuZCBzZXZlcmFsIHdoaWNoIGFyZSBvdmVybG9hZGVkLiAgT25lIGZpZWxkIGlzIHJlc2VydmVkIGZvciB0aGUKK2RpcmVjdG9yeSBBQ0wgaWYgdGhlIGlub2RlIGlzIGEgZGlyZWN0b3J5IGFuZCBhbHRlcm5hdGVseSBmb3IgdGhlIHRvcCAzMgorYml0cyBvZiB0aGUgZmlsZSBzaXplIGlmIHRoZSBpbm9kZSBpcyBhIHJlZ3VsYXIgZmlsZSAoYWxsb3dpbmcgZmlsZSBzaXplcworbGFyZ2VyIHRoYW4gMkdCKS4gIFRoZSB0cmFuc2xhdG9yIGZpZWxkIGlzIHVudXNlZCB1bmRlciBMaW51eCwgYnV0IGlzIHVzZWQKK2J5IHRoZSBIVVJEIHRvIHJlZmVyZW5jZSB0aGUgaW5vZGUgb2YgYSBwcm9ncmFtIHdoaWNoIHdpbGwgYmUgdXNlZCB0bworaW50ZXJwcmV0IHRoaXMgb2JqZWN0LiAgTW9zdCBvZiB0aGUgcmVtYWluaW5nIHJlc2VydmVkIGZpZWxkcyBoYXZlIGJlZW4KK3VzZWQgdXAgZm9yIGJvdGggTGludXggYW5kIHRoZSBIVVJEIGZvciBsYXJnZXIgb3duZXIgYW5kIGdyb3VwIGZpZWxkcywKK1RoZSBIVVJEIGFsc28gaGFzIGEgbGFyZ2VyIG1vZGUgZmllbGQgc28gaXQgdXNlcyBhbm90aGVyIG9mIHRoZSByZW1haW5pbmcKK2ZpZWxkcyB0byBzdG9yZSB0aGUgZXh0cmEgbW9yZSBiaXRzLgorCitUaGVyZSBhcmUgcG9pbnRlcnMgdG8gdGhlIGZpcnN0IDEyIGJsb2NrcyB3aGljaCBjb250YWluIHRoZSBmaWxlJ3MgZGF0YQoraW4gdGhlIGlub2RlLiAgVGhlcmUgaXMgYSBwb2ludGVyIHRvIGFuIGluZGlyZWN0IGJsb2NrICh3aGljaCBjb250YWlucworcG9pbnRlcnMgdG8gdGhlIG5leHQgc2V0IG9mIGJsb2NrcyksIGEgcG9pbnRlciB0byBhIGRvdWJseS1pbmRpcmVjdAorYmxvY2sgKHdoaWNoIGNvbnRhaW5zIHBvaW50ZXJzIHRvIGluZGlyZWN0IGJsb2NrcykgYW5kIGEgcG9pbnRlciB0byBhCit0cmVibHktaW5kaXJlY3QgYmxvY2sgKHdoaWNoIGNvbnRhaW5zIHBvaW50ZXJzIHRvIGRvdWJseS1pbmRpcmVjdCBibG9ja3MpLgorCitUaGUgZmxhZ3MgZmllbGQgY29udGFpbnMgc29tZSBleHQyLXNwZWNpZmljIGZsYWdzIHdoaWNoIGFyZW4ndCBjYXRlcmVkCitmb3IgYnkgdGhlIHN0YW5kYXJkIGNobW9kIGZsYWdzLiAgVGhlc2UgZmxhZ3MgY2FuIGJlIGxpc3RlZCB3aXRoIGxzYXR0cgorYW5kIGNoYW5nZWQgd2l0aCB0aGUgY2hhdHRyIGNvbW1hbmQsIGFuZCBhbGxvdyBzcGVjaWZpYyBmaWxlc3lzdGVtCitiZWhhdmlvdXIgb24gYSBwZXItZmlsZSBiYXNpcy4gIFRoZXJlIGFyZSBmbGFncyBmb3Igc2VjdXJlIGRlbGV0aW9uLAordW5kZWxldGFibGUsIGNvbXByZXNzaW9uLCBzeW5jaHJvbm91cyB1cGRhdGVzLCBpbW11dGFiaWxpdHksIGFwcGVuZC1vbmx5LAorZHVtcGFibGUsIG5vLWF0aW1lLCBpbmRleGVkIGRpcmVjdG9yaWVzLCBhbmQgZGF0YS1qb3VybmFsaW5nLiAgTm90IGFsbAorb2YgdGhlc2UgYXJlIHN1cHBvcnRlZCB5ZXQuCisKK0RpcmVjdG9yaWVzCistLS0tLS0tLS0tLQorCitBIGRpcmVjdG9yeSBpcyBhIGZpbGVzeXN0ZW0gb2JqZWN0IGFuZCBoYXMgYW4gaW5vZGUganVzdCBsaWtlIGEgZmlsZS4KK0l0IGlzIGEgc3BlY2lhbGx5IGZvcm1hdHRlZCBmaWxlIGNvbnRhaW5pbmcgcmVjb3JkcyB3aGljaCBhc3NvY2lhdGUKK2VhY2ggbmFtZSB3aXRoIGFuIGlub2RlIG51bWJlci4gIExhdGVyIHJldmlzaW9ucyBvZiB0aGUgZmlsZXN5c3RlbSBhbHNvCitlbmNvZGUgdGhlIHR5cGUgb2YgdGhlIG9iamVjdCAoZmlsZSwgZGlyZWN0b3J5LCBzeW1saW5rLCBkZXZpY2UsIGZpZm8sCitzb2NrZXQpIHRvIGF2b2lkIHRoZSBuZWVkIHRvIGNoZWNrIHRoZSBpbm9kZSBpdHNlbGYgZm9yIHRoaXMgaW5mb3JtYXRpb24KKyhzdXBwb3J0IGZvciB0YWtpbmcgYWR2YW50YWdlIG9mIHRoaXMgZmVhdHVyZSBkb2VzIG5vdCB5ZXQgZXhpc3QgaW4KK0dsaWJjIDIuMikuCisKK1RoZSBpbm9kZSBhbGxvY2F0aW9uIGNvZGUgdHJpZXMgdG8gYXNzaWduIGlub2RlcyB3aGljaCBhcmUgaW4gdGhlIHNhbWUKK2Jsb2NrIGdyb3VwIGFzIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhleSBhcmUgZmlyc3QgY3JlYXRlZC4KKworVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgZXh0MiB1c2VzIGEgc2luZ2x5LWxpbmtlZCBsaXN0IHRvIHN0b3JlCit0aGUgZmlsZW5hbWVzIGluIHRoZSBkaXJlY3Rvcnk7IGEgcGVuZGluZyBlbmhhbmNlbWVudCB1c2VzIGhhc2hpbmcgb2YgdGhlCitmaWxlbmFtZXMgdG8gYWxsb3cgbG9va3VwIHdpdGhvdXQgdGhlIG5lZWQgdG8gc2NhbiB0aGUgZW50aXJlIGRpcmVjdG9yeS4KKworVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gbmV2ZXIgcmVtb3ZlcyBlbXB0eSBkaXJlY3RvcnkgYmxvY2tzIG9uY2UgdGhleQoraGF2ZSBiZWVuIGFsbG9jYXRlZCB0byBob2xkIG1vcmUgZmlsZXMuCisKK1NwZWNpYWwgZmlsZXMKKy0tLS0tLS0tLS0tLS0KKworU3ltYm9saWMgbGlua3MgYXJlIGFsc28gZmlsZXN5c3RlbSBvYmplY3RzIHdpdGggaW5vZGVzLiAgVGhleSBkZXNlcnZlCitzcGVjaWFsIG1lbnRpb24gYmVjYXVzZSB0aGUgZGF0YSBmb3IgdGhlbSBpcyBzdG9yZWQgd2l0aGluIHRoZSBpbm9kZQoraXRzZWxmIGlmIHRoZSBzeW1saW5rIGlzIGxlc3MgdGhhbiA2MCBieXRlcyBsb25nLiAgSXQgdXNlcyB0aGUgZmllbGRzCit3aGljaCB3b3VsZCBub3JtYWxseSBiZSB1c2VkIHRvIHN0b3JlIHRoZSBwb2ludGVycyB0byBkYXRhIGJsb2Nrcy4KK1RoaXMgaXMgYSB3b3J0aHdoaWxlIG9wdGltaXNhdGlvbiBhcyBpdCB3ZSBhdm9pZCBhbGxvY2F0aW5nIGEgZnVsbAorYmxvY2sgZm9yIHRoZSBzeW1saW5rLCBhbmQgbW9zdCBzeW1saW5rcyBhcmUgbGVzcyB0aGFuIDYwIGNoYXJhY3RlcnMgbG9uZy4KKworQ2hhcmFjdGVyIGFuZCBibG9jayBzcGVjaWFsIGRldmljZXMgbmV2ZXIgaGF2ZSBkYXRhIGJsb2NrcyBhc3NpZ25lZCB0bwordGhlbS4gIEluc3RlYWQsIHRoZWlyIGRldmljZSBudW1iZXIgaXMgc3RvcmVkIGluIHRoZSBpbm9kZSwgYWdhaW4gcmV1c2luZwordGhlIGZpZWxkcyB3aGljaCB3b3VsZCBiZSB1c2VkIHRvIHBvaW50IHRvIHRoZSBkYXRhIGJsb2Nrcy4KKworUmVzZXJ2ZWQgU3BhY2UKKy0tLS0tLS0tLS0tLS0tCisKK0luIGV4dDIsIHRoZXJlIGlzIGEgbWVjaGFuaXNtIGZvciByZXNlcnZpbmcgYSBjZXJ0YWluIG51bWJlciBvZiBibG9ja3MKK2ZvciBhIHBhcnRpY3VsYXIgdXNlciAobm9ybWFsbHkgdGhlIHN1cGVyLXVzZXIpLiAgVGhpcyBpcyBpbnRlbmRlZCB0bworYWxsb3cgZm9yIHRoZSBzeXN0ZW0gdG8gY29udGludWUgZnVuY3Rpb25pbmcgZXZlbiBpZiBub24tcHJpdmlsZWdlZCB1c2VycworZmlsbCB1cCBhbGwgdGhlIHNwYWNlIGF2YWlsYWJsZSB0byB0aGVtICh0aGlzIGlzIGluZGVwZW5kZW50IG9mIGZpbGVzeXN0ZW0KK3F1b3RhcykuICBJdCBhbHNvIGtlZXBzIHRoZSBmaWxlc3lzdGVtIGZyb20gZmlsbGluZyB1cCBlbnRpcmVseSB3aGljaAoraGVscHMgY29tYmF0IGZyYWdtZW50YXRpb24uCisKK0ZpbGVzeXN0ZW0gY2hlY2sKKy0tLS0tLS0tLS0tLS0tLS0KKworQXQgYm9vdCB0aW1lLCBtb3N0IHN5c3RlbXMgcnVuIGEgY29uc2lzdGVuY3kgY2hlY2sgKGUyZnNjaykgb24gdGhlaXIKK2ZpbGVzeXN0ZW1zLiAgVGhlIHN1cGVyYmxvY2sgb2YgdGhlIGV4dDIgZmlsZXN5c3RlbSBjb250YWlucyBzZXZlcmFsCitmaWVsZHMgd2hpY2ggaW5kaWNhdGUgd2hldGhlciBmc2NrIHNob3VsZCBhY3R1YWxseSBydW4gKHNpbmNlIGNoZWNraW5nCit0aGUgZmlsZXN5c3RlbSBhdCBib290IGNhbiB0YWtlIGEgbG9uZyB0aW1lIGlmIGl0IGlzIGxhcmdlKS4gIGZzY2sgd2lsbAorcnVuIGlmIHRoZSBmaWxlc3lzdGVtIHdhcyBub3QgY2xlYW5seSB1bm1vdW50ZWQsIGlmIHRoZSBtYXhpbXVtIG1vdW50Citjb3VudCBoYXMgYmVlbiBleGNlZWRlZCBvciBpZiB0aGUgbWF4aW11bSB0aW1lIGJldHdlZW4gY2hlY2tzIGhhcyBiZWVuCitleGNlZWRlZC4KKworRmVhdHVyZSBDb21wYXRpYmlsaXR5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGNvbXBhdGliaWxpdHkgZmVhdHVyZSBtZWNoYW5pc20gdXNlZCBpbiBleHQyIGlzIHNvcGhpc3RpY2F0ZWQuCitJdCBzYWZlbHkgYWxsb3dzIGZlYXR1cmVzIHRvIGJlIGFkZGVkIHRvIHRoZSBmaWxlc3lzdGVtLCB3aXRob3V0Cit1bm5lY2Vzc2FyaWx5IHNhY3JpZmljaW5nIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiB0aGUKK2ZpbGVzeXN0ZW0gY29kZS4gIFRoZSBmZWF0dXJlIGNvbXBhdGliaWxpdHkgbWVjaGFuaXNtIGlzIG5vdCBzdXBwb3J0ZWQgYnkKK3RoZSBvcmlnaW5hbCByZXZpc2lvbiAwIChFWFQyX0dPT0RfT0xEX1JFVikgb2YgZXh0MiwgYnV0IHdhcyBpbnRyb2R1Y2VkIGluCityZXZpc2lvbiAxLiAgVGhlcmUgYXJlIHRocmVlIDMyLWJpdCBmaWVsZHMsIG9uZSBmb3IgY29tcGF0aWJsZSBmZWF0dXJlcworKENPTVBBVCksIG9uZSBmb3IgcmVhZC1vbmx5IGNvbXBhdGlibGUgKFJPX0NPTVBBVCkgZmVhdHVyZXMgYW5kIG9uZSBmb3IKK2luY29tcGF0aWJsZSAoSU5DT01QQVQpIGZlYXR1cmVzLgorCitUaGVzZSBmZWF0dXJlIGZsYWdzIGhhdmUgc3BlY2lmaWMgbWVhbmluZ3MgZm9yIHRoZSBrZXJuZWwgYXMgZm9sbG93czoKKworQSBDT01QQVQgZmxhZyBpbmRpY2F0ZXMgdGhhdCBhIGZlYXR1cmUgaXMgcHJlc2VudCBpbiB0aGUgZmlsZXN5c3RlbSwKK2J1dCB0aGUgb24tZGlzayBmb3JtYXQgaXMgMTAwJSBjb21wYXRpYmxlIHdpdGggb2xkZXIgb24tZGlzayBmb3JtYXRzLCBzbworYSBrZXJuZWwgd2hpY2ggZGlkbid0IGtub3cgYW55dGhpbmcgYWJvdXQgdGhpcyBmZWF0dXJlIGNvdWxkIHJlYWQvd3JpdGUKK3RoZSBmaWxlc3lzdGVtIHdpdGhvdXQgYW55IGNoYW5jZSBvZiBjb3JydXB0aW5nIHRoZSBmaWxlc3lzdGVtIChvciBldmVuCittYWtpbmcgaXQgaW5jb25zaXN0ZW50KS4gIFRoaXMgaXMgZXNzZW50aWFsbHkganVzdCBhIGZsYWcgd2hpY2ggc2F5cworInRoaXMgZmlsZXN5c3RlbSBoYXMgYSAoaGlkZGVuKSBmZWF0dXJlIiB0aGF0IHRoZSBrZXJuZWwgb3IgZTJmc2NrIG1heQord2FudCB0byBiZSBhd2FyZSBvZiAobW9yZSBvbiBlMmZzY2sgYW5kIGZlYXR1cmUgZmxhZ3MgbGF0ZXIpLiAgVGhlIGV4dDMKK0hBU19KT1VSTkFMIGZlYXR1cmUgaXMgYSBDT01QQVQgZmxhZyBiZWNhdXNlIHRoZSBleHQzIGpvdXJuYWwgaXMgc2ltcGx5CithIHJlZ3VsYXIgZmlsZSB3aXRoIGRhdGEgYmxvY2tzIGluIGl0IHNvIHRoZSBrZXJuZWwgZG9lcyBub3QgbmVlZCB0bwordGFrZSBhbnkgc3BlY2lhbCBub3RpY2Ugb2YgaXQgaWYgaXQgZG9lc24ndCB1bmRlcnN0YW5kIGV4dDMgam91cm5hbGluZy4KKworQW4gUk9fQ09NUEFUIGZsYWcgaW5kaWNhdGVzIHRoYXQgdGhlIG9uLWRpc2sgZm9ybWF0IGlzIDEwMCUgY29tcGF0aWJsZQord2l0aCBvbGRlciBvbi1kaXNrIGZvcm1hdHMgZm9yIHJlYWRpbmcgKGkuZS4gdGhlIGZlYXR1cmUgZG9lcyBub3QgY2hhbmdlCit0aGUgdmlzaWJsZSBvbi1kaXNrIGZvcm1hdCkuICBIb3dldmVyLCBhbiBvbGQga2VybmVsIHdyaXRpbmcgdG8gc3VjaCBhCitmaWxlc3lzdGVtIHdvdWxkL2NvdWxkIGNvcnJ1cHQgdGhlIGZpbGVzeXN0ZW0sIHNvIHRoaXMgaXMgcHJldmVudGVkLiBUaGUKK21vc3QgY29tbW9uIHN1Y2ggZmVhdHVyZSwgU1BBUlNFX1NVUEVSLCBpcyBhbiBST19DT01QQVQgZmVhdHVyZSBiZWNhdXNlCitzcGFyc2UgZ3JvdXBzIGFsbG93IGZpbGUgZGF0YSBibG9ja3Mgd2hlcmUgc3VwZXJibG9jay9ncm91cCBkZXNjcmlwdG9yCitiYWNrdXBzIHVzZWQgdG8gbGl2ZSwgYW5kIGV4dDJfZnJlZV9ibG9ja3MoKSByZWZ1c2VzIHRvIGZyZWUgdGhlc2UgYmxvY2tzLAord2hpY2ggd291bGQgbGVhZGluZyB0byBpbmNvbnNpc3RlbnQgYml0bWFwcy4gIEFuIG9sZCBrZXJuZWwgd291bGQgYWxzbworZ2V0IGFuIGVycm9yIGlmIGl0IHRyaWVkIHRvIGZyZWUgYSBzZXJpZXMgb2YgYmxvY2tzIHdoaWNoIGNyb3NzZWQgYSBncm91cAorYm91bmRhcnksIGJ1dCB0aGlzIGlzIGEgbGVnaXRpbWF0ZSBsYXlvdXQgaW4gYSBTUEFSU0VfU1VQRVIgZmlsZXN5c3RlbS4KKworQW4gSU5DT01QQVQgZmxhZyBpbmRpY2F0ZXMgdGhlIG9uLWRpc2sgZm9ybWF0IGhhcyBjaGFuZ2VkIGluIHNvbWUKK3dheSB0aGF0IG1ha2VzIGl0IHVucmVhZGFibGUgYnkgb2xkZXIga2VybmVscywgb3Igd291bGQgb3RoZXJ3aXNlCitjYXVzZSBhIHByb2JsZW0gaWYgYW4gb2xkIGtlcm5lbCB0cmllZCB0byBtb3VudCBpdC4gIEZJTEVUWVBFIGlzIGFuCitJTkNPTVBBVCBmbGFnIGJlY2F1c2Ugb2xkZXIga2VybmVscyB3b3VsZCB0aGluayBhIGZpbGVuYW1lIHdhcyBsb25nZXIKK3RoYW4gMjU2IGNoYXJhY3RlcnMsIHdoaWNoIHdvdWxkIGxlYWQgdG8gY29ycnVwdCBkaXJlY3RvcnkgbGlzdGluZ3MuCitUaGUgQ09NUFJFU1NJT04gZmxhZyBpcyBhbiBvYnZpb3VzIElOQ09NUEFUIGZsYWcgLSBpZiB0aGUga2VybmVsCitkb2Vzbid0IHVuZGVyc3RhbmQgY29tcHJlc3Npb24sIHlvdSB3b3VsZCBqdXN0IGdldCBnYXJiYWdlIGJhY2sgZnJvbQorcmVhZCgpIGluc3RlYWQgb2YgaXQgYXV0b21hdGljYWxseSBkZWNvbXByZXNzaW5nIHlvdXIgZGF0YS4gIFRoZSBleHQzCitSRUNPVkVSIGZsYWcgaXMgbmVlZGVkIHRvIHByZXZlbnQgYSBrZXJuZWwgd2hpY2ggZG9lcyBub3QgdW5kZXJzdGFuZCB0aGUKK2V4dDMgam91cm5hbCBmcm9tIG1vdW50aW5nIHRoZSBmaWxlc3lzdGVtIHdpdGhvdXQgcmVwbGF5aW5nIHRoZSBqb3VybmFsLgorCitGb3IgZTJmc2NrLCBpdCBuZWVkcyB0byBiZSBtb3JlIHN0cmljdCB3aXRoIHRoZSBoYW5kbGluZyBvZiB0aGVzZQorZmxhZ3MgdGhhbiB0aGUga2VybmVsLiAgSWYgaXQgZG9lc24ndCB1bmRlcnN0YW5kIEFOWSBvZiB0aGUgQ09NUEFULAorUk9fQ09NUEFULCBvciBJTkNPTVBBVCBmbGFncyBpdCB3aWxsIHJlZnVzZSB0byBjaGVjayB0aGUgZmlsZXN5c3RlbSwKK2JlY2F1c2UgaXQgaGFzIG5vIHdheSBvZiB2ZXJpZnlpbmcgd2hldGhlciBhIGdpdmVuIGZlYXR1cmUgaXMgdmFsaWQKK29yIG5vdC4gIEFsbG93aW5nIGUyZnNjayB0byBzdWNjZWVkIG9uIGEgZmlsZXN5c3RlbSB3aXRoIGFuIHVua25vd24KK2ZlYXR1cmUgaXMgYSBmYWxzZSBzZW5zZSBvZiBzZWN1cml0eSBmb3IgdGhlIHVzZXIuICBSZWZ1c2luZyB0byBjaGVjaworYSBmaWxlc3lzdGVtIHdpdGggdW5rbm93biBmZWF0dXJlcyBpcyBhIGdvb2QgaW5jZW50aXZlIGZvciB0aGUgdXNlciB0bwordXBkYXRlIHRvIHRoZSBsYXRlc3QgZTJmc2NrLiAgVGhpcyBhbHNvIG1lYW5zIHRoYXQgYW55b25lIGFkZGluZyBmZWF0dXJlCitmbGFncyB0byBleHQyIGFsc28gbmVlZHMgdG8gdXBkYXRlIGUyZnNjayB0byB2ZXJpZnkgdGhlc2UgZmVhdHVyZXMuCisKK01ldGFkYXRhCistLS0tLS0tLQorCitJdCBpcyBmcmVxdWVudGx5IGNsYWltZWQgdGhhdCB0aGUgZXh0MiBpbXBsZW1lbnRhdGlvbiBvZiB3cml0aW5nCithc3luY2hyb25vdXMgbWV0YWRhdGEgaXMgZmFzdGVyIHRoYW4gdGhlIGZmcyBzeW5jaHJvbm91cyBtZXRhZGF0YQorc2NoZW1lIGJ1dCBsZXNzIHJlbGlhYmxlLiAgQm90aCBtZXRob2RzIGFyZSBlcXVhbGx5IHJlc29sdmFibGUgYnkgdGhlaXIKK3Jlc3BlY3RpdmUgZnNjayBwcm9ncmFtcy4KKworSWYgeW91J3JlIGV4Y2VwdGlvbmFsbHkgcGFyYW5vaWQsIHRoZXJlIGFyZSAzIHdheXMgb2YgbWFraW5nIG1ldGFkYXRhCit3cml0ZXMgc3luY2hyb25vdXMgb24gZXh0MjoKKworcGVyLWZpbGUgaWYgeW91IGhhdmUgdGhlIHByb2dyYW0gc291cmNlOiB1c2UgdGhlIE9fU1lOQyBmbGFnIHRvIG9wZW4oKQorcGVyLWZpbGUgaWYgeW91IGRvbid0IGhhdmUgdGhlIHNvdXJjZTogdXNlICJjaGF0dHIgK1MiIG9uIHRoZSBmaWxlCitwZXItZmlsZXN5c3RlbTogYWRkIHRoZSAic3luYyIgb3B0aW9uIHRvIG1vdW50IChvciBpbiAvZXRjL2ZzdGFiKQorCit0aGUgZmlyc3QgYW5kIGxhc3QgYXJlIG5vdCBleHQyIHNwZWNpZmljIGJ1dCBkbyBmb3JjZSB0aGUgbWV0YWRhdGEgdG8KK2JlIHdyaXR0ZW4gc3luY2hyb25vdXNseS4gIFNlZSBhbHNvIEpvdXJuYWxpbmcgYmVsb3cuCisKK0xpbWl0YXRpb25zCistLS0tLS0tLS0tLQorCitUaGVyZSBhcmUgdmFyaW91cyBsaW1pdHMgaW1wb3NlZCBieSB0aGUgb24tZGlzayBsYXlvdXQgb2YgZXh0Mi4gIE90aGVyCitsaW1pdHMgYXJlIGltcG9zZWQgYnkgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGtlcm5lbCBjb2RlLgorTWFueSBvZiB0aGUgbGltaXRzIGFyZSBkZXRlcm1pbmVkIGF0IHRoZSB0aW1lIHRoZSBmaWxlc3lzdGVtIGlzIGZpcnN0CitjcmVhdGVkLCBhbmQgZGVwZW5kIHVwb24gdGhlIGJsb2NrIHNpemUgY2hvc2VuLiAgVGhlIHJhdGlvIG9mIGlub2RlcyB0bworZGF0YSBibG9ja3MgaXMgZml4ZWQgYXQgZmlsZXN5c3RlbSBjcmVhdGlvbiB0aW1lLCBzbyB0aGUgb25seSB3YXkgdG8KK2luY3JlYXNlIHRoZSBudW1iZXIgb2YgaW5vZGVzIGlzIHRvIGluY3JlYXNlIHRoZSBzaXplIG9mIHRoZSBmaWxlc3lzdGVtLgorTm8gdG9vbHMgY3VycmVudGx5IGV4aXN0IHdoaWNoIGNhbiBjaGFuZ2UgdGhlIHJhdGlvIG9mIGlub2RlcyB0byBibG9ja3MuCisKK01vc3Qgb2YgdGhlc2UgbGltaXRzIGNvdWxkIGJlIG92ZXJjb21lIHdpdGggc2xpZ2h0IGNoYW5nZXMgaW4gdGhlIG9uLWRpc2sKK2Zvcm1hdCBhbmQgdXNpbmcgYSBjb21wYXRpYmlsaXR5IGZsYWcgdG8gc2lnbmFsIHRoZSBmb3JtYXQgY2hhbmdlIChhdAordGhlIGV4cGVuc2Ugb2Ygc29tZSBjb21wYXRpYmlsaXR5KS4KKworRmlsZXN5c3RlbSBibG9jayBzaXplOiAgICAgMWtCICAgICAgICAya0IgICAgICAgIDRrQiAgICAgICAgOGtCCisKK0ZpbGUgc2l6ZSBsaW1pdDogICAgICAgICAgMTZHQiAgICAgIDI1NkdCICAgICAyMDQ4R0IgICAgIDIwNDhHQgorRmlsZXN5c3RlbSBzaXplIGxpbWl0OiAgMjA0N0dCICAgICA4MTkyR0IgICAgMTYzODRHQiAgICAzMjc2OEdCCisKK1RoZXJlIGlzIGEgMi40IGtlcm5lbCBsaW1pdCBvZiAyMDQ4R0IgZm9yIGEgc2luZ2xlIGJsb2NrIGRldmljZSwgc28gbm8KK2ZpbGVzeXN0ZW0gbGFyZ2VyIHRoYW4gdGhhdCBjYW4gYmUgY3JlYXRlZCBhdCB0aGlzIHRpbWUuICBUaGVyZSBpcyBhbHNvCithbiB1cHBlciBsaW1pdCBvbiB0aGUgYmxvY2sgc2l6ZSBpbXBvc2VkIGJ5IHRoZSBwYWdlIHNpemUgb2YgdGhlIGtlcm5lbCwKK3NvIDhrQiBibG9ja3MgYXJlIG9ubHkgYWxsb3dlZCBvbiBBbHBoYSBzeXN0ZW1zIChhbmQgb3RoZXIgYXJjaGl0ZWN0dXJlcword2hpY2ggc3VwcG9ydCBsYXJnZXIgcGFnZXMpLgorCitUaGVyZSBpcyBhbiB1cHBlciBsaW1pdCBvZiAzMjAwMCBzdWJkaXJlY3RvcmllcyBpbiBhIHNpbmdsZSBkaXJlY3RvcnkuCisKK1RoZXJlIGlzIGEgInNvZnQiIHVwcGVyIGxpbWl0IG9mIGFib3V0IDEwLTE1ayBmaWxlcyBpbiBhIHNpbmdsZSBkaXJlY3RvcnkKK3dpdGggdGhlIGN1cnJlbnQgbGluZWFyIGxpbmtlZC1saXN0IGRpcmVjdG9yeSBpbXBsZW1lbnRhdGlvbi4gIFRoaXMgbGltaXQKK3N0ZW1zIGZyb20gcGVyZm9ybWFuY2UgcHJvYmxlbXMgd2hlbiBjcmVhdGluZyBhbmQgZGVsZXRpbmcgKGFuZCBhbHNvCitmaW5kaW5nKSBmaWxlcyBpbiBzdWNoIGxhcmdlIGRpcmVjdG9yaWVzLiAgVXNpbmcgYSBoYXNoZWQgZGlyZWN0b3J5IGluZGV4CisodW5kZXIgZGV2ZWxvcG1lbnQpIGFsbG93cyAxMDBrLTFNKyBmaWxlcyBpbiBhIHNpbmdsZSBkaXJlY3Rvcnkgd2l0aG91dAorcGVyZm9ybWFuY2UgcHJvYmxlbXMgKGFsdGhvdWdoIFJBTSBzaXplIGJlY29tZXMgYW4gaXNzdWUgYXQgdGhpcyBwb2ludCkuCisKK1RoZSAobWVhbmluZ2xlc3MpIGFic29sdXRlIHVwcGVyIGxpbWl0IG9mIGZpbGVzIGluIGEgc2luZ2xlIGRpcmVjdG9yeQorKGltcG9zZWQgYnkgdGhlIGZpbGUgc2l6ZSwgdGhlIHJlYWxpc3RpYyBsaW1pdCBpcyBvYnZpb3VzbHkgbXVjaCBsZXNzKQoraXMgb3ZlciAxMzAgdHJpbGxpb24gZmlsZXMuICBJdCB3b3VsZCBiZSBoaWdoZXIgZXhjZXB0IHRoZXJlIGFyZSBub3QKK2Vub3VnaCA0LWNoYXJhY3RlciBuYW1lcyB0byBtYWtlIHVwIHVuaXF1ZSBkaXJlY3RvcnkgZW50cmllcywgc28gdGhleQoraGF2ZSB0byBiZSA4IGNoYXJhY3RlciBmaWxlbmFtZXMsIGV2ZW4gdGhlbiB3ZSBhcmUgZmFpcmx5IGNsb3NlIHRvCitydW5uaW5nIG91dCBvZiB1bmlxdWUgZmlsZW5hbWVzLgorCitKb3VybmFsaW5nCistLS0tLS0tLS0tCisKK0Egam91cm5hbGluZyBleHRlbnNpb24gdG8gdGhlIGV4dDIgY29kZSBoYXMgYmVlbiBkZXZlbG9wZWQgYnkgU3RlcGhlbgorVHdlZWRpZS4gIEl0IGF2b2lkcyB0aGUgcmlza3Mgb2YgbWV0YWRhdGEgY29ycnVwdGlvbiBhbmQgdGhlIG5lZWQgdG8KK3dhaXQgZm9yIGUyZnNjayB0byBjb21wbGV0ZSBhZnRlciBhIGNyYXNoLCB3aXRob3V0IHJlcXVpcmluZyBhIGNoYW5nZQordG8gdGhlIG9uLWRpc2sgZXh0MiBsYXlvdXQuICBJbiBhIG51dHNoZWxsLCB0aGUgam91cm5hbCBpcyBhIHJlZ3VsYXIKK2ZpbGUgd2hpY2ggc3RvcmVzIHdob2xlIG1ldGFkYXRhIChhbmQgb3B0aW9uYWxseSBkYXRhKSBibG9ja3MgdGhhdCBoYXZlCitiZWVuIG1vZGlmaWVkLCBwcmlvciB0byB3cml0aW5nIHRoZW0gaW50byB0aGUgZmlsZXN5c3RlbS4gIFRoaXMgbWVhbnMKK2l0IGlzIHBvc3NpYmxlIHRvIGFkZCBhIGpvdXJuYWwgdG8gYW4gZXhpc3RpbmcgZXh0MiBmaWxlc3lzdGVtIHdpdGhvdXQKK3RoZSBuZWVkIGZvciBkYXRhIGNvbnZlcnNpb24uCisKK1doZW4gY2hhbmdlcyB0byB0aGUgZmlsZXN5c3RlbSAoZS5nLiBhIGZpbGUgaXMgcmVuYW1lZCkgdGhleSBhcmUgc3RvcmVkIGluCithIHRyYW5zYWN0aW9uIGluIHRoZSBqb3VybmFsIGFuZCBjYW4gZWl0aGVyIGJlIGNvbXBsZXRlIG9yIGluY29tcGxldGUgYXQKK3RoZSB0aW1lIG9mIGEgY3Jhc2guICBJZiBhIHRyYW5zYWN0aW9uIGlzIGNvbXBsZXRlIGF0IHRoZSB0aW1lIG9mIGEgY3Jhc2gKKyhvciBpbiB0aGUgbm9ybWFsIGNhc2Ugd2hlcmUgdGhlIHN5c3RlbSBkb2VzIG5vdCBjcmFzaCksIHRoZW4gYW55IGJsb2NrcworaW4gdGhhdCB0cmFuc2FjdGlvbiBhcmUgZ3VhcmFudGVlZCB0byByZXByZXNlbnQgYSB2YWxpZCBmaWxlc3lzdGVtIHN0YXRlLAorYW5kIGFyZSBjb3BpZWQgaW50byB0aGUgZmlsZXN5c3RlbS4gIElmIGEgdHJhbnNhY3Rpb24gaXMgaW5jb21wbGV0ZSBhdAordGhlIHRpbWUgb2YgdGhlIGNyYXNoLCB0aGVuIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSBvZiBjb25zaXN0ZW5jeSBmb3IKK3RoZSBibG9ja3MgaW4gdGhhdCB0cmFuc2FjdGlvbiBzbyB0aGV5IGFyZSBkaXNjYXJkZWQgKHdoaWNoIG1lYW5zIGFueQorZmlsZXN5c3RlbSBjaGFuZ2VzIHRoZXkgcmVwcmVzZW50IGFyZSBhbHNvIGxvc3QpLgorQ2hlY2sgRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9leHQ0LnR4dCBpZiB5b3Ugd2FudCB0byByZWFkIG1vcmUgYWJvdXQKK2V4dDQgYW5kIGpvdXJuYWxpbmcuCisKK1JlZmVyZW5jZXMKKz09PT09PT09PT0KKworVGhlIGtlcm5lbCBzb3VyY2UJZmlsZTovdXNyL3NyYy9saW51eC9mcy9leHQyLworZTJmc3Byb2dzIChlMmZzY2spCWh0dHA6Ly9lMmZzcHJvZ3Muc291cmNlZm9yZ2UubmV0LworRGVzaWduICYgSW1wbGVtZW50YXRpb24JaHR0cDovL2UyZnNwcm9ncy5zb3VyY2Vmb3JnZS5uZXQvZXh0MmludHJvLmh0bWwKK0pvdXJuYWxpbmcgKGV4dDMpCWZ0cDovL2Z0cC51ay5saW51eC5vcmcvcHViL2xpbnV4L3NjdC9mcy9qZnMvCitGaWxlc3lzdGVtIFJlc2l6aW5nCWh0dHA6Ly9leHQycmVzaXplLnNvdXJjZWZvcmdlLm5ldC8KK0NvbXByZXNzaW9uICgqKQkJaHR0cDovL2UyY29tcHIuc291cmNlZm9yZ2UubmV0LworCitJbXBsZW1lbnRhdGlvbnMgZm9yOgorV2luZG93cyA5NS85OC9OVC8yMDAwCWh0dHA6Ly93d3cuY2hyeXNvY29tZS5uZXQvZXhwbG9yZTJmcworV2luZG93cyA5NSAoKikJCWh0dHA6Ly93d3cueWlwdG9uLm5ldC9jb250ZW50Lmh0bWwjRlNERVhUMgorRE9TIGNsaWVudCAoKikJCWZ0cDovL21ldGFsYWIudW5jLmVkdS9wdWIvTGludXgvc3lzdGVtL2ZpbGVzeXN0ZW1zL2V4dDIvCitPUy8yICgrKQkJZnRwOi8vbWV0YWxhYi51bmMuZWR1L3B1Yi9MaW51eC9zeXN0ZW0vZmlsZXN5c3RlbXMvZXh0Mi8KK1JJU0MgT1MgY2xpZW50CQlodHRwOi8vd3d3LmVzdy1oZWltLnR1LWNsYXVzdGhhbC5kZS9+bWFyY28vc21vcmJyb2QvSXNjYUZTLworCisoKikgbm8gbG9uZ2VyIGFjdGl2ZWx5IGRldmVsb3BlZC9zdXBwb3J0ZWQgKGFzIG9mIEFwciAyMDAxKQorKCspIG5vIGxvbmdlciBhY3RpdmVseSBkZXZlbG9wZWQvc3VwcG9ydGVkIChhcyBvZiBNYXIgMjAwOSkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXh0My50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2V4dDMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4NzU4ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2V4dDMudHh0CkBAIC0wLDAgKzEsMTIgQEAKKworRXh0MyBGaWxlc3lzdGVtCis9PT09PT09PT09PT09PT0KKworRXh0MyB3YXMgb3JpZ2luYWxseSByZWxlYXNlZCBpbiBTZXB0ZW1iZXIgMTk5OS4gV3JpdHRlbiBieSBTdGVwaGVuIFR3ZWVkaWUKK2ZvciB0aGUgMi4yIGJyYW5jaCwgYW5kIHBvcnRlZCB0byAyLjQga2VybmVscyBieSBQZXRlciBCcmFhbSwgQW5kcmVhcyBEaWxnZXIsCitBbmRyZXcgTW9ydG9uLCBBbGV4YW5kZXIgVmlybywgVGVkIFRzJ28gYW5kIFN0ZXBoZW4gVHdlZWRpZS4KKworRXh0MyBpcyB0aGUgZXh0MiBmaWxlc3lzdGVtIGVuaGFuY2VkIHdpdGggam91cm5hbGxpbmcgY2FwYWJpbGl0aWVzLiBUaGUKK2ZpbGVzeXN0ZW0gaXMgYSBzdWJzZXQgb2YgZXh0NCBmaWxlc3lzdGVtIHNvIHVzZSBleHQ0IGRyaXZlciBmb3IgYWNjZXNzaW5nCitleHQzIGZpbGVzeXN0ZW1zLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2V4dDQudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9leHQ0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzAxMDhlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9leHQ0LnR4dApAQCAtMCwwICsxLDYyOSBAQAorCitFeHQ0IEZpbGVzeXN0ZW0KKz09PT09PT09PT09PT09PQorCitFeHQ0IGlzIGFuIGFkdmFuY2VkIGxldmVsIG9mIHRoZSBleHQzIGZpbGVzeXN0ZW0gd2hpY2ggaW5jb3Jwb3JhdGVzCitzY2FsYWJpbGl0eSBhbmQgcmVsaWFiaWxpdHkgZW5oYW5jZW1lbnRzIGZvciBzdXBwb3J0aW5nIGxhcmdlIGZpbGVzeXN0ZW1zCisoNjQgYml0KSBpbiBrZWVwaW5nIHdpdGggaW5jcmVhc2luZyBkaXNrIGNhcGFjaXRpZXMgYW5kIHN0YXRlLW9mLXRoZS1hcnQKK2ZlYXR1cmUgcmVxdWlyZW1lbnRzLgorCitNYWlsaW5nIGxpc3Q6CWxpbnV4LWV4dDRAdmdlci5rZXJuZWwub3JnCitXZWIgc2l0ZToJaHR0cDovL2V4dDQud2lraS5rZXJuZWwub3JnCisKKworMS4gUXVpY2sgdXNhZ2UgaW5zdHJ1Y3Rpb25zOgorPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK05vdGU6IE1vcmUgZXh0ZW5zaXZlIGluZm9ybWF0aW9uIGZvciBnZXR0aW5nIHN0YXJ0ZWQgd2l0aCBleHQ0IGNhbiBiZQorICAgICAgZm91bmQgYXQgdGhlIGV4dDQgd2lraSBzaXRlIGF0IHRoZSBVUkw6CisgICAgICBodHRwOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0V4dDRfSG93dG8KKworICAtIENvbXBpbGUgYW5kIGluc3RhbGwgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGUyZnNwcm9ncyAoYXMgb2YgdGhpcworICAgIHdyaXRpbmcgdmVyc2lvbiAxLjQxLjMpIGZyb206CisKKyAgICBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3Qvc2hvd2ZpbGVzLnBocD9ncm91cF9pZD0yNDA2CisJCisJb3IKKworICAgIGZ0cDovL2Z0cC5rZXJuZWwub3JnL3B1Yi9saW51eC9rZXJuZWwvcGVvcGxlL3R5dHNvL2UyZnNwcm9ncy8KKworCW9yIGdyYWIgdGhlIGxhdGVzdCBnaXQgcmVwb3NpdG9yeSBmcm9tOgorCisgICAgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9mcy9leHQyL2UyZnNwcm9ncy5naXQKKworICAtIE5vdGUgdGhhdCBpdCBpcyBoaWdobHkgaW1wb3J0YW50IHRvIGluc3RhbGwgdGhlIG1rZTJmcy5jb25mIGZpbGUKKyAgICB0aGF0IGNvbWVzIHdpdGggdGhlIGUyZnNwcm9ncyAxLjQxLnggc291cmNlcyBpbiAvZXRjL21rZTJmcy5jb25mLiBJZgorICAgIHlvdSBoYXZlIGVkaXRlZCB0aGUgL2V0Yy9ta2UyZnMuY29uZiBmaWxlIGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbSwKKyAgICB5b3Ugd2lsbCBuZWVkIHRvIG1lcmdlIHlvdXIgY2hhbmdlcyB3aXRoIHRoZSB2ZXJzaW9uIGZyb20gZTJmc3Byb2dzCisgICAgMS40MS54LgorCisgIC0gQ3JlYXRlIGEgbmV3IGZpbGVzeXN0ZW0gdXNpbmcgdGhlIGV4dDQgZmlsZXN5c3RlbSB0eXBlOgorCisgICAgCSMgbWtlMmZzIC10IGV4dDQgL2Rldi9oZGExCisKKyAgICBPciB0byBjb25maWd1cmUgYW4gZXhpc3RpbmcgZXh0MyBmaWxlc3lzdGVtIHRvIHN1cHBvcnQgZXh0ZW50czogCisKKwkjIHR1bmUyZnMgLU8gZXh0ZW50cyAvZGV2L2hkYTEKKworICAgIElmIHRoZSBmaWxlc3lzdGVtIHdhcyBjcmVhdGVkIHdpdGggMTI4IGJ5dGUgaW5vZGVzLCBpdCBjYW4gYmUKKyAgICBjb252ZXJ0ZWQgdG8gdXNlIDI1NiBieXRlIGZvciBncmVhdGVyIGVmZmljaWVuY3kgdmlhOgorCisgICAgICAgICMgdHVuZTJmcyAtSSAyNTYgL2Rldi9oZGExCisKKyAgICAoTm90ZTogd2UgY3VycmVudGx5IGRvIG5vdCBoYXZlIHRvb2xzIHRvIGNvbnZlcnQgYW4gZXh0NAorICAgIGZpbGVzeXN0ZW0gYmFjayB0byBleHQzOyBzbyBwbGVhc2UgZG8gbm90IGRvIHRyeSB0aGlzIG9uIHByb2R1Y3Rpb24KKyAgICBmaWxlc3lzdGVtcy4pCisKKyAgLSBNb3VudGluZzoKKworCSMgbW91bnQgLXQgZXh0NCAvZGV2L2hkYTEgL3doZXJldmVyCisKKyAgLSBXaGVuIGNvbXBhcmluZyBwZXJmb3JtYW5jZSB3aXRoIG90aGVyIGZpbGVzeXN0ZW1zLCBpdCdzIGFsd2F5cworICAgIGltcG9ydGFudCB0byB0cnkgbXVsdGlwbGUgd29ya2xvYWRzOyB2ZXJ5IG9mdGVuIGEgc3VidGxlIGNoYW5nZSBpbiBhCisgICAgd29ya2xvYWQgcGFyYW1ldGVyIGNhbiBjb21wbGV0ZWx5IGNoYW5nZSB0aGUgcmFua2luZyBvZiB3aGljaAorICAgIGZpbGVzeXN0ZW1zIGRvIHdlbGwgY29tcGFyZWQgdG8gb3RoZXJzLiAgV2hlbiBjb21wYXJpbmcgdmVyc3VzIGV4dDMsCisgICAgbm90ZSB0aGF0IGV4dDQgZW5hYmxlcyB3cml0ZSBiYXJyaWVycyBieSBkZWZhdWx0LCB3aGlsZSBleHQzIGRvZXMKKyAgICBub3QgZW5hYmxlIHdyaXRlIGJhcnJpZXJzIGJ5IGRlZmF1bHQuICBTbyBpdCBpcyB1c2VmdWwgdG8gdXNlCisgICAgZXhwbGljaXRseSBzcGVjaWZ5IHdoZXRoZXIgYmFycmllcnMgYXJlIGVuYWJsZWQgb3Igbm90IHdoZW4gdmlhIHRoZQorICAgICctbyBiYXJyaWVycz1bMHwxXScgbW91bnQgb3B0aW9uIGZvciBib3RoIGV4dDMgYW5kIGV4dDQgZmlsZXN5c3RlbXMKKyAgICBmb3IgYSBmYWlyIGNvbXBhcmlzb24uICBXaGVuIHR1bmluZyBleHQzIGZvciBiZXN0IGJlbmNobWFyayBudW1iZXJzLAorICAgIGl0IGlzIG9mdGVuIHdvcnRod2hpbGUgdG8gdHJ5IGNoYW5naW5nIHRoZSBkYXRhIGpvdXJuYWxpbmcgbW9kZTsgJy1vCisgICAgZGF0YT13cml0ZWJhY2snIGNhbiBiZSBmYXN0ZXIgZm9yIHNvbWUgd29ya2xvYWRzLiAgKE5vdGUgaG93ZXZlciB0aGF0CisgICAgcnVubmluZyBtb3VudGVkIHdpdGggZGF0YT13cml0ZWJhY2sgY2FuIHBvdGVudGlhbGx5IGxlYXZlIHN0YWxlIGRhdGEKKyAgICBleHBvc2VkIGluIHJlY2VudGx5IHdyaXR0ZW4gZmlsZXMgaW4gY2FzZSBvZiBhbiB1bmNsZWFuIHNodXRkb3duLAorICAgIHdoaWNoIGNvdWxkIGJlIGEgc2VjdXJpdHkgZXhwb3N1cmUgaW4gc29tZSBzaXR1YXRpb25zLikgIENvbmZpZ3VyaW5nCisgICAgdGhlIGZpbGVzeXN0ZW0gd2l0aCBhIGxhcmdlIGpvdXJuYWwgY2FuIGFsc28gYmUgaGVscGZ1bCBmb3IKKyAgICBtZXRhZGF0YS1pbnRlbnNpdmUgd29ya2xvYWRzLgorCisyLiBGZWF0dXJlcworPT09PT09PT09PT0KKworMi4xIEN1cnJlbnRseSBhdmFpbGFibGUKKworKiBhYmlsaXR5IHRvIHVzZSBmaWxlc3lzdGVtcyA+IDE2VEIgKGUyZnNwcm9ncyBzdXBwb3J0IG5vdCBhdmFpbGFibGUgeWV0KQorKiBleHRlbnQgZm9ybWF0IHJlZHVjZXMgbWV0YWRhdGEgb3ZlcmhlYWQgKFJBTSwgSU8gZm9yIGFjY2VzcywgdHJhbnNhY3Rpb25zKQorKiBleHRlbnQgZm9ybWF0IG1vcmUgcm9idXN0IGluIGZhY2Ugb2Ygb24tZGlzayBjb3JydXB0aW9uIGR1ZSB0byBtYWdpY3MsCisqIGludGVybmFsIHJlZHVuZGFuY3kgaW4gdHJlZQorKiBpbXByb3ZlZCBmaWxlIGFsbG9jYXRpb24gKG11bHRpLWJsb2NrIGFsbG9jKQorKiBsaWZ0IDMyMDAwIHN1YmRpcmVjdG9yeSBsaW1pdCBpbXBvc2VkIGJ5IGlfbGlua3NfY291bnRbMV0KKyogbnNlYyB0aW1lc3RhbXBzIGZvciBtdGltZSwgYXRpbWUsIGN0aW1lLCBjcmVhdGUgdGltZQorKiBpbm9kZSB2ZXJzaW9uIGZpZWxkIG9uIGRpc2sgKE5GU3Y0LCBMdXN0cmUpCisqIHJlZHVjZWQgZTJmc2NrIHRpbWUgdmlhIHVuaW5pdF9iZyBmZWF0dXJlCisqIGpvdXJuYWwgY2hlY2tzdW1taW5nIGZvciByb2J1c3RuZXNzLCBwZXJmb3JtYW5jZQorKiBwZXJzaXN0ZW50IGZpbGUgcHJlYWxsb2NhdGlvbiAoZS5nIGZvciBzdHJlYW1pbmcgbWVkaWEsIGRhdGFiYXNlcykKKyogYWJpbGl0eSB0byBwYWNrIGJpdG1hcHMgYW5kIGlub2RlIHRhYmxlcyBpbnRvIGxhcmdlciB2aXJ0dWFsIGdyb3VwcyB2aWEgdGhlCisgIGZsZXhfYmcgZmVhdHVyZQorKiBsYXJnZSBmaWxlIHN1cHBvcnQKKyogSW5vZGUgYWxsb2NhdGlvbiB1c2luZyBsYXJnZSB2aXJ0dWFsIGJsb2NrIGdyb3VwcyB2aWEgZmxleF9iZworKiBkZWxheWVkIGFsbG9jYXRpb24KKyogbGFyZ2UgYmxvY2sgKHVwIHRvIHBhZ2VzaXplKSBzdXBwb3J0CisqIGVmZmljaWVudCBuZXcgb3JkZXJlZCBtb2RlIGluIEpCRDIgYW5kIGV4dDQoYXZvaWQgdXNpbmcgYnVmZmVyIGhlYWQgdG8gZm9yY2UKKyAgdGhlIG9yZGVyaW5nKQorCitbMV0gRmlsZXN5c3RlbXMgd2l0aCBhIGJsb2NrIHNpemUgb2YgMWsgbWF5IHNlZSBhIGxpbWl0IGltcG9zZWQgYnkgdGhlCitkaXJlY3RvcnkgaGFzaCB0cmVlIGhhdmluZyBhIG1heGltdW0gZGVwdGggb2YgdHdvLgorCisyLjIgQ2FuZGlkYXRlIGZlYXR1cmVzIGZvciBmdXR1cmUgaW5jbHVzaW9uCisKKyogT25saW5lIGRlZnJhZyAocGF0Y2hlcyBhdmFpbGFibGUgYnV0IG5vdCB3ZWxsIHRlc3RlZCkKKyogcmVkdWNlZCBta2UyZnMgdGltZSB2aWEgbGF6eSBpdGFibGUgaW5pdGlhbGl6YXRpb24gaW4gY29uanVuY3Rpb24gd2l0aAorICB0aGUgdW5pbml0X2JnIGZlYXR1cmUgKGNhcGFiaWxpdHkgdG8gZG8gdGhpcyBpcyBhdmFpbGFibGUgaW4gZTJmc3Byb2dzCisgIGJ1dCBhIGtlcm5lbCB0aHJlYWQgdG8gZG8gbGF6eSB6ZXJvaW5nIG9mIHVudXNlZCBpbm9kZSB0YWJsZSBibG9ja3MKKyAgYWZ0ZXIgZmlsZXN5c3RlbSBpcyBmaXJzdCBtb3VudGVkIGlzIHJlcXVpcmVkIGZvciBzYWZldHkpCisKK1RoZXJlIGFyZSBzZXZlcmFsIG90aGVycyB1bmRlciBkaXNjdXNzaW9uLCB3aGV0aGVyIHRoZXkgYWxsIG1ha2UgaXQgaW4gaXMKK3BhcnRseSBhIGZ1bmN0aW9uIG9mIGhvdyBtdWNoIHRpbWUgZXZlcnlvbmUgaGFzIHRvIHdvcmsgb24gdGhlbS4gRmVhdHVyZXMgbGlrZQorbWV0YWRhdGEgY2hlY2tzdW1taW5nIGhhdmUgYmVlbiBkaXNjdXNzZWQgYW5kIHBsYW5uZWQgZm9yIGEgYml0IGJ1dCBubyBwYXRjaGVzCitleGlzdCB5ZXQgc28gSSdtIG5vdCBzdXJlIHRoZXkncmUgaW4gdGhlIG5lYXItdGVybSByb2FkbWFwLgorCitUaGUgYmlnIHBlcmZvcm1hbmNlIHdpbiB3aWxsIGNvbWUgd2l0aCBtYmFsbG9jLCBkZWxhbGxvYyBhbmQgZmxleF9iZworZ3JvdXBpbmcgb2YgYml0bWFwcyBhbmQgaW5vZGUgdGFibGVzLiAgU29tZSB0ZXN0IHJlc3VsdHMgYXZhaWxhYmxlIGhlcmU6CisKKyAtIGh0dHA6Ly93d3cuYnVsbG9wZW5zb3VyY2Uub3JnL2V4dDQvMjAwODA4MTgtZmZzYi9mZnNiLXdyaXRlLTIuNi4yNy1yYzEuaHRtbAorIC0gaHR0cDovL3d3dy5idWxsb3BlbnNvdXJjZS5vcmcvZXh0NC8yMDA4MDgxOC1mZnNiL2Zmc2ItcmVhZHdyaXRlLTIuNi4yNy1yYzEuaHRtbAorCiszLiBPcHRpb25zCis9PT09PT09PT09CisKK1doZW4gbW91bnRpbmcgYW4gZXh0NCBmaWxlc3lzdGVtLCB0aGUgZm9sbG93aW5nIG9wdGlvbiBhcmUgYWNjZXB0ZWQ6CisoKikgPT0gZGVmYXVsdAorCitybyAgICAgICAgICAgICAgICAgICAJTW91bnQgZmlsZXN5c3RlbSByZWFkIG9ubHkuIE5vdGUgdGhhdCBleHQ0IHdpbGwKKyAgICAgICAgICAgICAgICAgICAgIAlyZXBsYXkgdGhlIGpvdXJuYWwgKGFuZCB0aHVzIHdyaXRlIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgCXBhcnRpdGlvbikgZXZlbiB3aGVuIG1vdW50ZWQgInJlYWQgb25seSIuIFRoZQorICAgICAgICAgICAgICAgICAgICAgCW1vdW50IG9wdGlvbnMgInJvLG5vbG9hZCIgY2FuIGJlIHVzZWQgdG8gcHJldmVudAorCQkgICAgIAl3cml0ZXMgdG8gdGhlIGZpbGVzeXN0ZW0uCisKK2pvdXJuYWxfY2hlY2tzdW0JRW5hYmxlIGNoZWNrc3VtbWluZyBvZiB0aGUgam91cm5hbCB0cmFuc2FjdGlvbnMuCisJCQlUaGlzIHdpbGwgYWxsb3cgdGhlIHJlY292ZXJ5IGNvZGUgaW4gZTJmc2NrIGFuZCB0aGUKKwkJCWtlcm5lbCB0byBkZXRlY3QgY29ycnVwdGlvbiBpbiB0aGUga2VybmVsLiAgSXQgaXMgYQorCQkJY29tcGF0aWJsZSBjaGFuZ2UgYW5kIHdpbGwgYmUgaWdub3JlZCBieSBvbGRlciBrZXJuZWxzLgorCitqb3VybmFsX2FzeW5jX2NvbW1pdAlDb21taXQgYmxvY2sgY2FuIGJlIHdyaXR0ZW4gdG8gZGlzayB3aXRob3V0IHdhaXRpbmcKKwkJCWZvciBkZXNjcmlwdG9yIGJsb2Nrcy4gSWYgZW5hYmxlZCBvbGRlciBrZXJuZWxzIGNhbm5vdAorCQkJbW91bnQgdGhlIGRldmljZS4gVGhpcyB3aWxsIGVuYWJsZSAnam91cm5hbF9jaGVja3N1bScKKwkJCWludGVybmFsbHkuCisKK2pvdXJuYWxfcGF0aD1wYXRoCitqb3VybmFsX2Rldj1kZXZudW0JV2hlbiB0aGUgZXh0ZXJuYWwgam91cm5hbCBkZXZpY2UncyBtYWpvci9taW5vciBudW1iZXJzCisJCQloYXZlIGNoYW5nZWQsIHRoZXNlIG9wdGlvbnMgYWxsb3cgdGhlIHVzZXIgdG8gc3BlY2lmeQorCQkJdGhlIG5ldyBqb3VybmFsIGxvY2F0aW9uLiAgVGhlIGpvdXJuYWwgZGV2aWNlIGlzCisJCQlpZGVudGlmaWVkIHRocm91Z2ggZWl0aGVyIGl0cyBuZXcgbWFqb3IvbWlub3IgbnVtYmVycworCQkJZW5jb2RlZCBpbiBkZXZudW0sIG9yIHZpYSBhIHBhdGggdG8gdGhlIGRldmljZS4KKworbm9yZWNvdmVyeQkJRG9uJ3QgbG9hZCB0aGUgam91cm5hbCBvbiBtb3VudGluZy4gIE5vdGUgdGhhdAorbm9sb2FkCQkJaWYgdGhlIGZpbGVzeXN0ZW0gd2FzIG5vdCB1bm1vdW50ZWQgY2xlYW5seSwKKyAgICAgICAgICAgICAgICAgICAgIAlza2lwcGluZyB0aGUgam91cm5hbCByZXBsYXkgd2lsbCBsZWFkIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgCWZpbGVzeXN0ZW0gY29udGFpbmluZyBpbmNvbnNpc3RlbmNpZXMgdGhhdCBjYW4KKyAgICAgICAgICAgICAgICAgICAgIAlsZWFkIHRvIGFueSBudW1iZXIgb2YgcHJvYmxlbXMuCisKK2RhdGE9am91cm5hbAkJQWxsIGRhdGEgYXJlIGNvbW1pdHRlZCBpbnRvIHRoZSBqb3VybmFsIHByaW9yIHRvIGJlaW5nCisJCQl3cml0dGVuIGludG8gdGhlIG1haW4gZmlsZSBzeXN0ZW0uICBFbmFibGluZworCQkJdGhpcyBtb2RlIHdpbGwgZGlzYWJsZSBkZWxheWVkIGFsbG9jYXRpb24gYW5kCisJCQlPX0RJUkVDVCBzdXBwb3J0LgorCitkYXRhPW9yZGVyZWQJKCopCUFsbCBkYXRhIGFyZSBmb3JjZWQgZGlyZWN0bHkgb3V0IHRvIHRoZSBtYWluIGZpbGUKKwkJCXN5c3RlbSBwcmlvciB0byBpdHMgbWV0YWRhdGEgYmVpbmcgY29tbWl0dGVkIHRvIHRoZQorCQkJam91cm5hbC4KKworZGF0YT13cml0ZWJhY2sJCURhdGEgb3JkZXJpbmcgaXMgbm90IHByZXNlcnZlZCwgZGF0YSBtYXkgYmUgd3JpdHRlbgorCQkJaW50byB0aGUgbWFpbiBmaWxlIHN5c3RlbSBhZnRlciBpdHMgbWV0YWRhdGEgaGFzIGJlZW4KKwkJCWNvbW1pdHRlZCB0byB0aGUgam91cm5hbC4KKworY29tbWl0PW5yc2VjCSgqKQlFeHQ0IGNhbiBiZSB0b2xkIHRvIHN5bmMgYWxsIGl0cyBkYXRhIGFuZCBtZXRhZGF0YQorCQkJZXZlcnkgJ25yc2VjJyBzZWNvbmRzLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA1IHNlY29uZHMuCisJCQlUaGlzIG1lYW5zIHRoYXQgaWYgeW91IGxvc2UgeW91ciBwb3dlciwgeW91IHdpbGwgbG9zZQorCQkJYXMgbXVjaCBhcyB0aGUgbGF0ZXN0IDUgc2Vjb25kcyBvZiB3b3JrICh5b3VyCisJCQlmaWxlc3lzdGVtIHdpbGwgbm90IGJlIGRhbWFnZWQgdGhvdWdoLCB0aGFua3MgdG8gdGhlCisJCQlqb3VybmFsaW5nKS4gIFRoaXMgZGVmYXVsdCB2YWx1ZSAob3IgYW55IGxvdyB2YWx1ZSkKKwkJCXdpbGwgaHVydCBwZXJmb3JtYW5jZSwgYnV0IGl0J3MgZ29vZCBmb3IgZGF0YS1zYWZldHkuCisJCQlTZXR0aW5nIGl0IHRvIDAgd2lsbCBoYXZlIHRoZSBzYW1lIGVmZmVjdCBhcyBsZWF2aW5nCisJCQlpdCBhdCB0aGUgZGVmYXVsdCAoNSBzZWNvbmRzKS4KKwkJCVNldHRpbmcgaXQgdG8gdmVyeSBsYXJnZSB2YWx1ZXMgd2lsbCBpbXByb3ZlCisJCQlwZXJmb3JtYW5jZS4KKworYmFycmllcj08MHwxKCopPglUaGlzIGVuYWJsZXMvZGlzYWJsZXMgdGhlIHVzZSBvZiB3cml0ZSBiYXJyaWVycyBpbgorYmFycmllcigqKQkJdGhlIGpiZCBjb2RlLiAgYmFycmllcj0wIGRpc2FibGVzLCBiYXJyaWVyPTEgZW5hYmxlcy4KK25vYmFycmllcgkJVGhpcyBhbHNvIHJlcXVpcmVzIGFuIElPIHN0YWNrIHdoaWNoIGNhbiBzdXBwb3J0CisJCQliYXJyaWVycywgYW5kIGlmIGpiZCBnZXRzIGFuIGVycm9yIG9uIGEgYmFycmllcgorCQkJd3JpdGUsIGl0IHdpbGwgZGlzYWJsZSBhZ2FpbiB3aXRoIGEgd2FybmluZy4KKwkJCVdyaXRlIGJhcnJpZXJzIGVuZm9yY2UgcHJvcGVyIG9uLWRpc2sgb3JkZXJpbmcKKwkJCW9mIGpvdXJuYWwgY29tbWl0cywgbWFraW5nIHZvbGF0aWxlIGRpc2sgd3JpdGUgY2FjaGVzCisJCQlzYWZlIHRvIHVzZSwgYXQgc29tZSBwZXJmb3JtYW5jZSBwZW5hbHR5LiAgSWYKKwkJCXlvdXIgZGlza3MgYXJlIGJhdHRlcnktYmFja2VkIGluIG9uZSB3YXkgb3IgYW5vdGhlciwKKwkJCWRpc2FibGluZyBiYXJyaWVycyBtYXkgc2FmZWx5IGltcHJvdmUgcGVyZm9ybWFuY2UuCisJCQlUaGUgbW91bnQgb3B0aW9ucyAiYmFycmllciIgYW5kICJub2JhcnJpZXIiIGNhbgorCQkJYWxzbyBiZSB1c2VkIHRvIGVuYWJsZSBvciBkaXNhYmxlIGJhcnJpZXJzLCBmb3IKKwkJCWNvbnNpc3RlbmN5IHdpdGggb3RoZXIgZXh0NCBtb3VudCBvcHRpb25zLgorCitpbm9kZV9yZWFkYWhlYWRfYmxrcz1uCVRoaXMgdHVuaW5nIHBhcmFtZXRlciBjb250cm9scyB0aGUgbWF4aW11bQorCQkJbnVtYmVyIG9mIGlub2RlIHRhYmxlIGJsb2NrcyB0aGF0IGV4dDQncyBpbm9kZQorCQkJdGFibGUgcmVhZGFoZWFkIGFsZ29yaXRobSB3aWxsIHByZS1yZWFkIGludG8KKwkJCXRoZSBidWZmZXIgY2FjaGUuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAzMiBibG9ja3MuCisKK25vdXNlcl94YXR0cgkJRGlzYWJsZXMgRXh0ZW5kZWQgVXNlciBBdHRyaWJ1dGVzLiAgU2VlIHRoZQorCQkJYXR0cig1KSBtYW51YWwgcGFnZSBhbmQgaHR0cDovL2FjbC5iZXN0Yml0cy5hdC8KKwkJCWZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGV4dGVuZGVkIGF0dHJpYnV0ZXMuCisKK25vYWNsCQkJVGhpcyBvcHRpb24gZGlzYWJsZXMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdAorCQkJc3VwcG9ydC4gSWYgQUNMIHN1cHBvcnQgaXMgZW5hYmxlZCBpbiB0aGUga2VybmVsCisJCQljb25maWd1cmF0aW9uIChDT05GSUdfRVhUNF9GU19QT1NJWF9BQ0wpLCBBQ0wgaXMKKwkJCWVuYWJsZWQgYnkgZGVmYXVsdCBvbiBtb3VudC4gU2VlIHRoZSBhY2woNSkgbWFudWFsCisJCQlwYWdlIGFuZCBodHRwOi8vYWNsLmJlc3RiaXRzLmF0LyBmb3IgbW9yZSBpbmZvcm1hdGlvbgorCQkJYWJvdXQgYWNsLgorCitic2RkZgkJKCopCU1ha2UgJ2RmJyBhY3QgbGlrZSBCU0QuCittaW5peGRmCQkJTWFrZSAnZGYnIGFjdCBsaWtlIE1pbml4LgorCitkZWJ1ZwkJCUV4dHJhIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBpcyBzZW50IHRvIHN5c2xvZy4KKworYWJvcnQJCQlTaW11bGF0ZSB0aGUgZWZmZWN0cyBvZiBjYWxsaW5nIGV4dDRfYWJvcnQoKSBmb3IKKwkJCWRlYnVnZ2luZyBwdXJwb3Nlcy4gIFRoaXMgaXMgbm9ybWFsbHkgdXNlZCB3aGlsZQorCQkJcmVtb3VudGluZyBhIGZpbGVzeXN0ZW0gd2hpY2ggaXMgYWxyZWFkeSBtb3VudGVkLgorCitlcnJvcnM9cmVtb3VudC1ybwlSZW1vdW50IHRoZSBmaWxlc3lzdGVtIHJlYWQtb25seSBvbiBhbiBlcnJvci4KK2Vycm9ycz1jb250aW51ZQkJS2VlcCBnb2luZyBvbiBhIGZpbGVzeXN0ZW0gZXJyb3IuCitlcnJvcnM9cGFuaWMJCVBhbmljIGFuZCBoYWx0IHRoZSBtYWNoaW5lIGlmIGFuIGVycm9yIG9jY3Vycy4KKyAgICAgICAgICAgICAgICAgICAgICAgIChUaGVzZSBtb3VudCBvcHRpb25zIG92ZXJyaWRlIHRoZSBlcnJvcnMgYmVoYXZpb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBpbiB0aGUgc3VwZXJibG9jaywgd2hpY2ggY2FuIGJlIGNvbmZpZ3VyZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHR1bmUyZnMpCisKK2RhdGFfZXJyPWlnbm9yZSgqKQlKdXN0IHByaW50IGFuIGVycm9yIG1lc3NhZ2UgaWYgYW4gZXJyb3Igb2NjdXJzCisJCQlpbiBhIGZpbGUgZGF0YSBidWZmZXIgaW4gb3JkZXJlZCBtb2RlLgorZGF0YV9lcnI9YWJvcnQJCUFib3J0IHRoZSBqb3VybmFsIGlmIGFuIGVycm9yIG9jY3VycyBpbiBhIGZpbGUKKwkJCWRhdGEgYnVmZmVyIGluIG9yZGVyZWQgbW9kZS4KKworZ3JwaWQJCQlHaXZlIG9iamVjdHMgdGhlIHNhbWUgZ3JvdXAgSUQgYXMgdGhlaXIgY3JlYXRvci4KK2JzZGdyb3VwcworCitub2dycGlkCQkoKikJTmV3IG9iamVjdHMgaGF2ZSB0aGUgZ3JvdXAgSUQgb2YgdGhlaXIgY3JlYXRvci4KK3N5c3Zncm91cHMKKworcmVzZ2lkPW4JCVRoZSBncm91cCBJRCB3aGljaCBtYXkgdXNlIHRoZSByZXNlcnZlZCBibG9ja3MuCisKK3Jlc3VpZD1uCQlUaGUgdXNlciBJRCB3aGljaCBtYXkgdXNlIHRoZSByZXNlcnZlZCBibG9ja3MuCisKK3NiPW4JCQlVc2UgYWx0ZXJuYXRlIHN1cGVyYmxvY2sgYXQgdGhpcyBsb2NhdGlvbi4KKworcXVvdGEJCQlUaGVzZSBvcHRpb25zIGFyZSBpZ25vcmVkIGJ5IHRoZSBmaWxlc3lzdGVtLiBUaGV5Citub3F1b3RhCQkJYXJlIHVzZWQgb25seSBieSBxdW90YSB0b29scyB0byByZWNvZ25pemUgdm9sdW1lcworZ3JwcXVvdGEJCXdoZXJlIHF1b3RhIHNob3VsZCBiZSB0dXJuZWQgb24uIFNlZSBkb2N1bWVudGF0aW9uCit1c3JxdW90YQkJaW4gdGhlIHF1b3RhLXRvb2xzIHBhY2thZ2UgZm9yIG1vcmUgZGV0YWlscworCQkJKGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGludXhxdW90YSkuCisKK2pxZm10PTxxdW90YSB0eXBlPglUaGVzZSBvcHRpb25zIHRlbGwgZmlsZXN5c3RlbSBkZXRhaWxzIGFib3V0IHF1b3RhCit1c3JqcXVvdGE9PGZpbGU+CXNvIHRoYXQgcXVvdGEgaW5mb3JtYXRpb24gY2FuIGJlIHByb3Blcmx5IHVwZGF0ZWQKK2dycGpxdW90YT08ZmlsZT4JZHVyaW5nIGpvdXJuYWwgcmVwbGF5LiBUaGV5IHJlcGxhY2UgdGhlIGFib3ZlCisJCQlxdW90YSBvcHRpb25zLiBTZWUgZG9jdW1lbnRhdGlvbiBpbiB0aGUgcXVvdGEtdG9vbHMKKwkJCXBhY2thZ2UgZm9yIG1vcmUgZGV0YWlscworCQkJKGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGludXhxdW90YSkuCisKK3N0cmlwZT1uCQlOdW1iZXIgb2YgZmlsZXN5c3RlbSBibG9ja3MgdGhhdCBtYmFsbG9jIHdpbGwgdHJ5CisJCQl0byB1c2UgZm9yIGFsbG9jYXRpb24gc2l6ZSBhbmQgYWxpZ25tZW50LiBGb3IgUkFJRDUvNgorCQkJc3lzdGVtcyB0aGlzIHNob3VsZCBiZSB0aGUgbnVtYmVyIG9mIGRhdGEKKwkJCWRpc2tzICogIFJBSUQgY2h1bmsgc2l6ZSBpbiBmaWxlIHN5c3RlbSBibG9ja3MuCisKK2RlbGFsbG9jCSgqKQlEZWZlciBibG9jayBhbGxvY2F0aW9uIHVudGlsIGp1c3QgYmVmb3JlIGV4dDQKKwkJCXdyaXRlcyBvdXQgdGhlIGJsb2NrKHMpIGluIHF1ZXN0aW9uLiAgVGhpcworCQkJYWxsb3dzIGV4dDQgdG8gYmV0dGVyIGFsbG9jYXRpb24gZGVjaXNpb25zCisJCQltb3JlIGVmZmljaWVudGx5Lgorbm9kZWxhbGxvYwkJRGlzYWJsZSBkZWxheWVkIGFsbG9jYXRpb24uICBCbG9ja3MgYXJlIGFsbG9jYXRlZAorCQkJd2hlbiB0aGUgZGF0YSBpcyBjb3BpZWQgZnJvbSB1c2Vyc3BhY2UgdG8gdGhlCisJCQlwYWdlIGNhY2hlLCBlaXRoZXIgdmlhIHRoZSB3cml0ZSgyKSBzeXN0ZW0gY2FsbAorCQkJb3Igd2hlbiBhbiBtbWFwJ2VkIHBhZ2Ugd2hpY2ggd2FzIHByZXZpb3VzbHkKKwkJCXVuYWxsb2NhdGVkIGlzIHdyaXR0ZW4gZm9yIHRoZSBmaXJzdCB0aW1lLgorCittYXhfYmF0Y2hfdGltZT11c2VjCU1heGltdW0gYW1vdW50IG9mIHRpbWUgZXh0NCBzaG91bGQgd2FpdCBmb3IKKwkJCWFkZGl0aW9uYWwgZmlsZXN5c3RlbSBvcGVyYXRpb25zIHRvIGJlIGJhdGNoCisJCQl0b2dldGhlciB3aXRoIGEgc3luY2hyb25vdXMgd3JpdGUgb3BlcmF0aW9uLgorCQkJU2luY2UgYSBzeW5jaHJvbm91cyB3cml0ZSBvcGVyYXRpb24gaXMgZ29pbmcgdG8KKwkJCWZvcmNlIGEgY29tbWl0IGFuZCB0aGVuIGEgd2FpdCBmb3IgdGhlIEkvTworCQkJY29tcGxldGUsIGl0IGRvZXNuJ3QgY29zdCBtdWNoLCBhbmQgY2FuIGJlIGEKKwkJCWh1Z2UgdGhyb3VnaHB1dCB3aW4sIHdlIHdhaXQgZm9yIGEgc21hbGwgYW1vdW50CisJCQlvZiB0aW1lIHRvIHNlZSBpZiBhbnkgb3RoZXIgdHJhbnNhY3Rpb25zIGNhbgorCQkJcGlnZ3liYWNrIG9uIHRoZSBzeW5jaHJvbm91cyB3cml0ZS4gICBUaGUKKwkJCWFsZ29yaXRobSB1c2VkIGlzIGRlc2lnbmVkIHRvIGF1dG9tYXRpY2FsbHkgdHVuZQorCQkJZm9yIHRoZSBzcGVlZCBvZiB0aGUgZGlzaywgYnkgbWVhc3VyaW5nIHRoZQorCQkJYW1vdW50IG9mIHRpbWUgKG9uIGF2ZXJhZ2UpIHRoYXQgaXQgdGFrZXMgdG8KKwkJCWZpbmlzaCBjb21taXR0aW5nIGEgdHJhbnNhY3Rpb24uICBDYWxsIHRoaXMgdGltZQorCQkJdGhlICJjb21taXQgdGltZSIuICBJZiB0aGUgdGltZSB0aGF0IHRoZQorCQkJdHJhbnNhY3Rpb24gaGFzIGJlZW4gcnVubmluZyBpcyBsZXNzIHRoYW4gdGhlCisJCQljb21taXQgdGltZSwgZXh0NCB3aWxsIHRyeSBzbGVlcGluZyBmb3IgdGhlCisJCQljb21taXQgdGltZSB0byBzZWUgaWYgb3RoZXIgb3BlcmF0aW9ucyB3aWxsIGpvaW4KKwkJCXRoZSB0cmFuc2FjdGlvbi4gICBUaGUgY29tbWl0IHRpbWUgaXMgY2FwcGVkIGJ5CisJCQl0aGUgbWF4X2JhdGNoX3RpbWUsIHdoaWNoIGRlZmF1bHRzIHRvIDE1MDAwdXMKKwkJCSgxNW1zKS4gICBUaGlzIG9wdGltaXphdGlvbiBjYW4gYmUgdHVybmVkIG9mZgorCQkJZW50aXJlbHkgYnkgc2V0dGluZyBtYXhfYmF0Y2hfdGltZSB0byAwLgorCittaW5fYmF0Y2hfdGltZT11c2VjCVRoaXMgcGFyYW1ldGVyIHNldHMgdGhlIGNvbW1pdCB0aW1lIChhcworCQkJZGVzY3JpYmVkIGFib3ZlKSB0byBiZSBhdCBsZWFzdCBtaW5fYmF0Y2hfdGltZS4KKwkJCUl0IGRlZmF1bHRzIHRvIHplcm8gbWljcm9zZWNvbmRzLiAgSW5jcmVhc2luZworCQkJdGhpcyBwYXJhbWV0ZXIgbWF5IGltcHJvdmUgdGhlIHRocm91Z2hwdXQgb2YKKwkJCW11bHRpLXRocmVhZGVkLCBzeW5jaHJvbm91cyB3b3JrbG9hZHMgb24gdmVyeQorCQkJZmFzdCBkaXNrcywgYXQgdGhlIGNvc3Qgb2YgaW5jcmVhc2luZyBsYXRlbmN5LgorCitqb3VybmFsX2lvcHJpbz1wcmlvCVRoZSBJL08gcHJpb3JpdHkgKGZyb20gMCB0byA3LCB3aGVyZSAwIGlzIHRoZQorCQkJaGlnaGVzdCBwcmlvcml0eSkgd2hpY2ggc2hvdWxkIGJlIHVzZWQgZm9yIEkvTworCQkJb3BlcmF0aW9ucyBzdWJtaXR0ZWQgYnkga2pvdXJuYWxkMiBkdXJpbmcgYQorCQkJY29tbWl0IG9wZXJhdGlvbi4gIFRoaXMgZGVmYXVsdHMgdG8gMywgd2hpY2ggaXMKKwkJCWEgc2xpZ2h0bHkgaGlnaGVyIHByaW9yaXR5IHRoYW4gdGhlIGRlZmF1bHQgSS9PCisJCQlwcmlvcml0eS4KKworYXV0b19kYV9hbGxvYygqKQlNYW55IGJyb2tlbiBhcHBsaWNhdGlvbnMgZG9uJ3QgdXNlIGZzeW5jKCkgd2hlbiAKK25vYXV0b19kYV9hbGxvYwkJcmVwbGFjaW5nIGV4aXN0aW5nIGZpbGVzIHZpYSBwYXR0ZXJucyBzdWNoIGFzCisJCQlmZCA9IG9wZW4oImZvby5uZXciKS93cml0ZShmZCwuLikvY2xvc2UoZmQpLworCQkJcmVuYW1lKCJmb28ubmV3IiwgImZvbyIpLCBvciB3b3JzZSB5ZXQsCisJCQlmZCA9IG9wZW4oImZvbyIsIE9fVFJVTkMpL3dyaXRlKGZkLC4uKS9jbG9zZShmZCkuCisJCQlJZiBhdXRvX2RhX2FsbG9jIGlzIGVuYWJsZWQsIGV4dDQgd2lsbCBkZXRlY3QKKwkJCXRoZSByZXBsYWNlLXZpYS1yZW5hbWUgYW5kIHJlcGxhY2UtdmlhLXRydW5jYXRlCisJCQlwYXR0ZXJucyBhbmQgZm9yY2UgdGhhdCBhbnkgZGVsYXllZCBhbGxvY2F0aW9uCisJCQlibG9ja3MgYXJlIGFsbG9jYXRlZCBzdWNoIHRoYXQgYXQgdGhlIG5leHQKKwkJCWpvdXJuYWwgY29tbWl0LCBpbiB0aGUgZGVmYXVsdCBkYXRhPW9yZGVyZWQKKwkJCW1vZGUsIHRoZSBkYXRhIGJsb2NrcyBvZiB0aGUgbmV3IGZpbGUgYXJlIGZvcmNlZAorCQkJdG8gZGlzayBiZWZvcmUgdGhlIHJlbmFtZSgpIG9wZXJhdGlvbiBpcworCQkJY29tbWl0dGVkLiAgVGhpcyBwcm92aWRlcyByb3VnaGx5IHRoZSBzYW1lIGxldmVsCisJCQlvZiBndWFyYW50ZWVzIGFzIGV4dDMsIGFuZCBhdm9pZHMgdGhlCisJCQkiemVyby1sZW5ndGgiIHByb2JsZW0gdGhhdCBjYW4gaGFwcGVuIHdoZW4gYQorCQkJc3lzdGVtIGNyYXNoZXMgYmVmb3JlIHRoZSBkZWxheWVkIGFsbG9jYXRpb24KKwkJCWJsb2NrcyBhcmUgZm9yY2VkIHRvIGRpc2suCisKK25vaW5pdF9pdGFibGUJCURvIG5vdCBpbml0aWFsaXplIGFueSB1bmluaXRpYWxpemVkIGlub2RlIHRhYmxlCisJCQlibG9ja3MgaW4gdGhlIGJhY2tncm91bmQuICBUaGlzIGZlYXR1cmUgbWF5IGJlCisJCQl1c2VkIGJ5IGluc3RhbGxhdGlvbiBDRCdzIHNvIHRoYXQgdGhlIGluc3RhbGwKKwkJCXByb2Nlc3MgY2FuIGNvbXBsZXRlIGFzIHF1aWNrbHkgYXMgcG9zc2libGU7IHRoZQorCQkJaW5vZGUgdGFibGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyB3b3VsZCB0aGVuIGJlCisJCQlkZWZlcnJlZCB1bnRpbCB0aGUgbmV4dCB0aW1lIHRoZSAgZmlsZSBzeXN0ZW0KKwkJCWlzIHVubW91bnRlZC4KKworaW5pdF9pdGFibGU9bgkJVGhlIGxhenkgaXRhYmxlIGluaXQgY29kZSB3aWxsIHdhaXQgbiB0aW1lcyB0aGUKKwkJCW51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgdG9vayB0byB6ZXJvIG91dCB0aGUKKwkJCXByZXZpb3VzIGJsb2NrIGdyb3VwJ3MgaW5vZGUgdGFibGUuICBUaGlzCisJCQltaW5pbWl6ZXMgdGhlIGltcGFjdCBvbiB0aGUgc3lzdGVtIHBlcmZvcm1hbmNlCisJCQl3aGlsZSBmaWxlIHN5c3RlbSdzIGlub2RlIHRhYmxlIGlzIGJlaW5nIGluaXRpYWxpemVkLgorCitkaXNjYXJkCQkJQ29udHJvbHMgd2hldGhlciBleHQ0IHNob3VsZCBpc3N1ZSBkaXNjYXJkL1RSSU0KK25vZGlzY2FyZCgqKQkJY29tbWFuZHMgdG8gdGhlIHVuZGVybHlpbmcgYmxvY2sgZGV2aWNlIHdoZW4KKwkJCWJsb2NrcyBhcmUgZnJlZWQuICBUaGlzIGlzIHVzZWZ1bCBmb3IgU1NEIGRldmljZXMKKwkJCWFuZCBzcGFyc2UvdGhpbmx5LXByb3Zpc2lvbmVkIExVTnMsIGJ1dCBpdCBpcyBvZmYKKwkJCWJ5IGRlZmF1bHQgdW50aWwgc3VmZmljaWVudCB0ZXN0aW5nIGhhcyBiZWVuIGRvbmUuCisKK25vdWlkMzIJCQlEaXNhYmxlcyAzMi1iaXQgVUlEcyBhbmQgR0lEcy4gIFRoaXMgaXMgZm9yCisJCQlpbnRlcm9wZXJhYmlsaXR5ICB3aXRoICBvbGRlciBrZXJuZWxzIHdoaWNoIG9ubHkKKwkJCXN0b3JlIGFuZCBleHBlY3QgMTYtYml0IHZhbHVlcy4KKworYmxvY2tfdmFsaWRpdHkJCVRoaXMgb3B0aW9ucyBhbGxvd3MgdG8gZW5hYmxlcy9kaXNhYmxlcyB0aGUgaW4ta2VybmVsCitub2Jsb2NrX3ZhbGlkaXR5CWZhY2lsaXR5IGZvciB0cmFja2luZyBmaWxlc3lzdGVtIG1ldGFkYXRhIGJsb2NrcworCQkJd2l0aGluIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy4gVGhpcyBhbGxvd3MgbXVsdGktCisJCQlibG9jayBhbGxvY2F0b3IgYW5kIG90aGVyIHJvdXRpbmVzIHRvIHF1aWNrbHkgbG9jYXRlCisJCQlleHRlbnRzIHdoaWNoIG1pZ2h0IG92ZXJsYXAgd2l0aCBmaWxlc3lzdGVtIG1ldGFkYXRhCisJCQlibG9ja3MuIFRoaXMgb3B0aW9uIGlzIGludGVuZGVkIGZvciBkZWJ1Z2dpbmcKKwkJCXB1cnBvc2VzIGFuZCBzaW5jZSBpdCBuZWdhdGl2ZWx5IGFmZmVjdHMgdGhlCisJCQlwZXJmb3JtYW5jZSwgaXQgaXMgb2ZmIGJ5IGRlZmF1bHQuCisKK2Rpb3JlYWRfbG9jawkJQ29udHJvbHMgd2hldGhlciBvciBub3QgZXh0NCBzaG91bGQgdXNlIHRoZSBESU8gcmVhZAorZGlvcmVhZF9ub2xvY2sJCWxvY2tpbmcuIElmIHRoZSBkaW9yZWFkX25vbG9jayBvcHRpb24gaXMgc3BlY2lmaWVkCisJCQlleHQ0IHdpbGwgYWxsb2NhdGUgdW5pbml0aWFsaXplZCBleHRlbnQgYmVmb3JlIGJ1ZmZlcgorCQkJd3JpdGUgYW5kIGNvbnZlcnQgdGhlIGV4dGVudCB0byBpbml0aWFsaXplZCBhZnRlciBJTworCQkJY29tcGxldGVzLiBUaGlzIGFwcHJvYWNoIGFsbG93cyBleHQ0IGNvZGUgdG8gYXZvaWQKKwkJCXVzaW5nIGlub2RlIG11dGV4LCB3aGljaCBpbXByb3ZlcyBzY2FsYWJpbGl0eSBvbiBoaWdoCisJCQlzcGVlZCBzdG9yYWdlcy4gSG93ZXZlciB0aGlzIGRvZXMgbm90IHdvcmsgd2l0aAorCQkJZGF0YSBqb3VybmFsaW5nIGFuZCBkaW9yZWFkX25vbG9jayBvcHRpb24gd2lsbCBiZQorCQkJaWdub3JlZCB3aXRoIGtlcm5lbCB3YXJuaW5nLiBOb3RlIHRoYXQgZGlvcmVhZF9ub2xvY2sKKwkJCWNvZGUgcGF0aCBpcyBvbmx5IHVzZWQgZm9yIGV4dGVudC1iYXNlZCBmaWxlcy4KKwkJCUJlY2F1c2Ugb2YgdGhlIHJlc3RyaWN0aW9ucyB0aGlzIG9wdGlvbnMgY29tcHJpc2VzCisJCQlpdCBpcyBvZmYgYnkgZGVmYXVsdCAoZS5nLiBkaW9yZWFkX2xvY2spLgorCittYXhfZGlyX3NpemVfa2I9bglUaGlzIGxpbWl0cyB0aGUgc2l6ZSBvZiBkaXJlY3RvcmllcyBzbyB0aGF0IGFueQorCQkJYXR0ZW1wdCB0byBleHBhbmQgdGhlbSBiZXlvbmQgdGhlIHNwZWNpZmllZAorCQkJbGltaXQgaW4ga2lsb2J5dGVzIHdpbGwgY2F1c2UgYW4gRU5PU1BDIGVycm9yLgorCQkJVGhpcyBpcyB1c2VmdWwgaW4gbWVtb3J5IGNvbnN0cmFpbmVkCisJCQllbnZpcm9ubWVudHMsIHdoZXJlIGEgdmVyeSBsYXJnZSBkaXJlY3RvcnkgY2FuCisJCQljYXVzZSBzZXZlcmUgcGVyZm9ybWFuY2UgcHJvYmxlbXMgb3IgZXZlbgorCQkJcHJvdm9rZSB0aGUgT3V0IE9mIE1lbW9yeSBraWxsZXIuICAoRm9yIGV4YW1wbGUsCisJCQlpZiB0aGVyZSBpcyBvbmx5IDUxMm1iIG1lbW9yeSBhdmFpbGFibGUsIGEgMTc2bWIKKwkJCWRpcmVjdG9yeSBtYXkgc2VyaW91c2x5IGNyYW1wIHRoZSBzeXN0ZW0ncyBzdHlsZS4pCisKK2lfdmVyc2lvbgkJRW5hYmxlIDY0LWJpdCBpbm9kZSB2ZXJzaW9uIHN1cHBvcnQuIFRoaXMgb3B0aW9uIGlzCisJCQlvZmYgYnkgZGVmYXVsdC4KKworZGF4CQkJVXNlIGRpcmVjdCBhY2Nlc3MgKG5vIHBhZ2UgY2FjaGUpLiAgU2VlCisJCQlEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2RheC50eHQuICBOb3RlIHRoYXQKKwkJCXRoaXMgb3B0aW9uIGlzIGluY29tcGF0aWJsZSB3aXRoIGRhdGE9am91cm5hbC4KKworRGF0YSBNb2RlCis9PT09PT09PT0KK1RoZXJlIGFyZSAzIGRpZmZlcmVudCBkYXRhIG1vZGVzOgorCisqIHdyaXRlYmFjayBtb2RlCitJbiBkYXRhPXdyaXRlYmFjayBtb2RlLCBleHQ0IGRvZXMgbm90IGpvdXJuYWwgZGF0YSBhdCBhbGwuICBUaGlzIG1vZGUgcHJvdmlkZXMKK2Egc2ltaWxhciBsZXZlbCBvZiBqb3VybmFsaW5nIGFzIHRoYXQgb2YgWEZTLCBKRlMsIGFuZCBSZWlzZXJGUyBpbiBpdHMgZGVmYXVsdAorbW9kZSAtIG1ldGFkYXRhIGpvdXJuYWxpbmcuICBBIGNyYXNoK3JlY292ZXJ5IGNhbiBjYXVzZSBpbmNvcnJlY3QgZGF0YSB0bworYXBwZWFyIGluIGZpbGVzIHdoaWNoIHdlcmUgd3JpdHRlbiBzaG9ydGx5IGJlZm9yZSB0aGUgY3Jhc2guICBUaGlzIG1vZGUgd2lsbAordHlwaWNhbGx5IHByb3ZpZGUgdGhlIGJlc3QgZXh0NCBwZXJmb3JtYW5jZS4KKworKiBvcmRlcmVkIG1vZGUKK0luIGRhdGE9b3JkZXJlZCBtb2RlLCBleHQ0IG9ubHkgb2ZmaWNpYWxseSBqb3VybmFscyBtZXRhZGF0YSwgYnV0IGl0IGxvZ2ljYWxseQorZ3JvdXBzIG1ldGFkYXRhIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gZGF0YSBjaGFuZ2VzIHdpdGggdGhlIGRhdGEgYmxvY2tzIGludG8gYQorc2luZ2xlIHVuaXQgY2FsbGVkIGEgdHJhbnNhY3Rpb24uICBXaGVuIGl0J3MgdGltZSB0byB3cml0ZSB0aGUgbmV3IG1ldGFkYXRhCitvdXQgdG8gZGlzaywgdGhlIGFzc29jaWF0ZWQgZGF0YSBibG9ja3MgYXJlIHdyaXR0ZW4gZmlyc3QuICBJbiBnZW5lcmFsLAordGhpcyBtb2RlIHBlcmZvcm1zIHNsaWdodGx5IHNsb3dlciB0aGFuIHdyaXRlYmFjayBidXQgc2lnbmlmaWNhbnRseSBmYXN0ZXIgdGhhbiBqb3VybmFsIG1vZGUuCisKKyogam91cm5hbCBtb2RlCitkYXRhPWpvdXJuYWwgbW9kZSBwcm92aWRlcyBmdWxsIGRhdGEgYW5kIG1ldGFkYXRhIGpvdXJuYWxpbmcuICBBbGwgbmV3IGRhdGEgaXMKK3dyaXR0ZW4gdG8gdGhlIGpvdXJuYWwgZmlyc3QsIGFuZCB0aGVuIHRvIGl0cyBmaW5hbCBsb2NhdGlvbi4KK0luIHRoZSBldmVudCBvZiBhIGNyYXNoLCB0aGUgam91cm5hbCBjYW4gYmUgcmVwbGF5ZWQsIGJyaW5naW5nIGJvdGggZGF0YSBhbmQKK21ldGFkYXRhIGludG8gYSBjb25zaXN0ZW50IHN0YXRlLiAgVGhpcyBtb2RlIGlzIHRoZSBzbG93ZXN0IGV4Y2VwdCB3aGVuIGRhdGEKK25lZWRzIHRvIGJlIHJlYWQgZnJvbSBhbmQgd3JpdHRlbiB0byBkaXNrIGF0IHRoZSBzYW1lIHRpbWUgd2hlcmUgaXQKK291dHBlcmZvcm1zIGFsbCBvdGhlcnMgbW9kZXMuICBFbmFibGluZyB0aGlzIG1vZGUgd2lsbCBkaXNhYmxlIGRlbGF5ZWQKK2FsbG9jYXRpb24gYW5kIE9fRElSRUNUIHN1cHBvcnQuCisKKy9wcm9jIGVudHJpZXMKKz09PT09PT09PT09PT0KKworSW5mb3JtYXRpb24gYWJvdXQgbW91bnRlZCBleHQ0IGZpbGUgc3lzdGVtcyBjYW4gYmUgZm91bmQgaW4KKy9wcm9jL2ZzL2V4dDQuICBFYWNoIG1vdW50ZWQgZmlsZXN5c3RlbSB3aWxsIGhhdmUgYSBkaXJlY3RvcnkgaW4KKy9wcm9jL2ZzL2V4dDQgYmFzZWQgb24gaXRzIGRldmljZSBuYW1lIChpLmUuLCAvcHJvYy9mcy9leHQ0L2hkYyBvcgorL3Byb2MvZnMvZXh0NC9kbS0wKS4gICBUaGUgZmlsZXMgaW4gZWFjaCBwZXItZGV2aWNlIGRpcmVjdG9yeSBhcmUgc2hvd24KK2luIHRhYmxlIGJlbG93LgorCitGaWxlcyBpbiAvcHJvYy9mcy9leHQ0LzxkZXZuYW1lPgorLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisgRmlsZSAgICAgICAgICAgIENvbnRlbnQKKyBtYl9ncm91cHMgICAgICAgZGV0YWlscyBvZiBtdWx0aWJsb2NrIGFsbG9jYXRvciBidWRkeSBjYWNoZSBvZiBmcmVlIGJsb2NrcworLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisKKy9zeXMgZW50cmllcworPT09PT09PT09PT09CisKK0luZm9ybWF0aW9uIGFib3V0IG1vdW50ZWQgZXh0NCBmaWxlIHN5c3RlbXMgY2FuIGJlIGZvdW5kIGluCisvc3lzL2ZzL2V4dDQuICBFYWNoIG1vdW50ZWQgZmlsZXN5c3RlbSB3aWxsIGhhdmUgYSBkaXJlY3RvcnkgaW4KKy9zeXMvZnMvZXh0NCBiYXNlZCBvbiBpdHMgZGV2aWNlIG5hbWUgKGkuZS4sIC9zeXMvZnMvZXh0NC9oZGMgb3IKKy9zeXMvZnMvZXh0NC9kbS0wKS4gICBUaGUgZmlsZXMgaW4gZWFjaCBwZXItZGV2aWNlIGRpcmVjdG9yeSBhcmUgc2hvd24KK2luIHRhYmxlIGJlbG93LgorCitGaWxlcyBpbiAvc3lzL2ZzL2V4dDQvPGRldm5hbWU+Cisoc2VlIGFsc28gRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1mcy1leHQ0KQorLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisgRmlsZSAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50CisKKyBkZWxheWVkX2FsbG9jYXRpb25fYmxvY2tzICAgIFRoaXMgZmlsZSBpcyByZWFkLW9ubHkgYW5kIHNob3dzIHRoZSBudW1iZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrcyB0aGF0IGFyZSBkaXJ0eSBpbiB0aGUgcGFnZSBjYWNoZSwgYnV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBkbyBub3QgaGF2ZSB0aGVpciBsb2NhdGlvbiBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gYWxsb2NhdGVkIHlldC4KKworIGlub2RlX2dvYWwgICAgICAgICAgICAgICAgICAgVHVuaW5nIHBhcmFtZXRlciB3aGljaCAoaWYgbm9uLXplcm8pIGNvbnRyb2xzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZ29hbCBpbm9kZSB1c2VkIGJ5IHRoZSBpbm9kZSBhbGxvY2F0b3IgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZlcmVuY2UgdG8gYWxsIG90aGVyIGFsbG9jYXRpb24gaGV1cmlzdGljcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgaW50ZW5kZWQgZm9yIGRlYnVnZ2luZyB1c2Ugb25seSwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGQgYmUgMCBvbiBwcm9kdWN0aW9uIHN5c3RlbXMuCisKKyBpbm9kZV9yZWFkYWhlYWRfYmxrcyAgICAgICAgIFR1bmluZyBwYXJhbWV0ZXIgd2hpY2ggY29udHJvbHMgdGhlIG1heGltdW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBvZiBpbm9kZSB0YWJsZSBibG9ja3MgdGhhdCBleHQ0J3MgaW5vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlIHJlYWRhaGVhZCBhbGdvcml0aG0gd2lsbCBwcmUtcmVhZCBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVmZmVyIGNhY2hlCisKKyBsaWZldGltZV93cml0ZV9rYnl0ZXMgICAgICAgIFRoaXMgZmlsZSBpcyByZWFkLW9ubHkgYW5kIHNob3dzIHRoZSBudW1iZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbG9ieXRlcyBvZiBkYXRhIHRoYXQgaGF2ZSBiZWVuIHdyaXR0ZW4gdG8gdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbSBzaW5jZSBpdCB3YXMgY3JlYXRlZC4KKworIG1heF93cml0ZWJhY2tfbWJfYnVtcCAgICAgICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIG1lZ2FieXRlcyB0aGUgd3JpdGViYWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlIHdpbGwgdHJ5IHRvIHdyaXRlIG91dCBiZWZvcmUgbW92ZSBvbiB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5vdGhlciBpbm9kZS4KKworIG1iX2dyb3VwX3ByZWFsbG9jICAgICAgICAgICAgVGhlIG11bHRpYmxvY2sgYWxsb2NhdG9yIHdpbGwgcm91bmQgdXAgYWxsb2NhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMgdG8gYSBtdWx0aXBsZSBvZiB0aGlzIHR1bmluZyBwYXJhbWV0ZXIgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdHJpcGUgc2l6ZSBpcyBub3Qgc2V0IGluIHRoZSBleHQ0IHN1cGVyYmxvY2sKKworIG1iX21heF90b19zY2FuICAgICAgICAgICAgICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGV4dGVudHMgdGhlIG11bHRpYmxvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRvciB3aWxsIHNlYXJjaCB0byBmaW5kIHRoZSBiZXN0IGV4dGVudAorCisgbWJfbWluX3RvX3NjYW4gICAgICAgICAgICAgICBUaGUgbWluaW11bSBudW1iZXIgb2YgZXh0ZW50cyB0aGUgbXVsdGlibG9jaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yIHdpbGwgc2VhcmNoIHRvIGZpbmQgdGhlIGJlc3QgZXh0ZW50CisKKyBtYl9vcmRlcjJfcmVxICAgICAgICAgICAgICAgIFR1bmluZyBwYXJhbWV0ZXIgd2hpY2ggY29udHJvbHMgdGhlIG1pbmltdW0gc2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHJlcXVlc3RzIChhcyBhIHBvd2VyIG9mIDIpIHdoZXJlIHRoZSBidWRkeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUgaXMgdXNlZAorCisgbWJfc3RhdHMgICAgICAgICAgICAgICAgICAgICBDb250cm9scyB3aGV0aGVyIHRoZSBtdWx0aWJsb2NrIGFsbG9jYXRvciBzaG91bGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3Qgc3RhdGlzdGljcywgd2hpY2ggYXJlIHNob3duIGR1cmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVubW91bnQuIDEgbWVhbnMgdG8gY29sbGVjdCBzdGF0aXN0aWNzLCAwIG1lYW5zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgdG8gY29sbGVjdCBzdGF0aXN0aWNzCisKKyBtYl9zdHJlYW1fcmVxICAgICAgICAgICAgICAgIEZpbGVzIHdoaWNoIGhhdmUgZmV3ZXIgYmxvY2tzIHRoYW4gdGhpcyB0dW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgd2lsbCBoYXZlIHRoZWlyIGJsb2NrcyBhbGxvY2F0ZWQgb3V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBhIGJsb2NrIGdyb3VwIHNwZWNpZmljIHByZWFsbG9jYXRpb24gcG9vbCwgc28KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgc21hbGwgZmlsZXMgYXJlIHBhY2tlZCBjbG9zZWx5IHRvZ2V0aGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWFjaCBsYXJnZSBmaWxlIHdpbGwgaGF2ZSBpdHMgYmxvY2tzIGFsbG9jYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IG9mIGl0cyBvd24gdW5pcXVlIHByZWFsbG9jYXRpb24gcG9vbC4KKworIHNlc3Npb25fd3JpdGVfa2J5dGVzICAgICAgICAgVGhpcyBmaWxlIGlzIHJlYWQtb25seSBhbmQgc2hvd3MgdGhlIG51bWJlciBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2lsb2J5dGVzIG9mIGRhdGEgdGhhdCBoYXZlIGJlZW4gd3JpdHRlbiB0byB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc3lzdGVtIHNpbmNlIGl0IHdhcyBtb3VudGVkLgorCisgcmVzZXJ2ZWRfY2x1c3RlcnMgICAgICAgICAgICBUaGlzIGlzIFJXIGZpbGUgYW5kIGNvbnRhaW5zIG51bWJlciBvZiByZXNlcnZlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3RlcnMgaW4gdGhlIGZpbGUgc3lzdGVtIHdoaWNoIHdpbGwgYmUgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIHNwZWNpZmljIHNpdHVhdGlvbnMgdG8gYXZvaWQgY29zdGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ZXJvb3V0LCB1bmV4cGVjdGVkIEVOT1NQQywgb3IgcG9zc2libGUgZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9zcy4gVGhlIGRlZmF1bHQgaXMgMiUgb3IgNDA5NiBjbHVzdGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoZXZlciBpcyBzbWFsbGVyIGFuZCB0aGlzIGNhbiBiZSBjaGFuZ2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3dldmVyIGl0IGNhbiBuZXZlciBleGNlZWQgbnVtYmVyIG9mIGNsdXN0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgZmlsZSBzeXN0ZW0uIElmIHRoZXJlIGlzIG5vdCBlbm91Z2ggc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgcmVzZXJ2ZWQgc3BhY2Ugd2hlbiBtb3VudGluZyB0aGUgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW91bnQgd2lsbCBfbm90XyBmYWlsLgorLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisKK0lvY3RscworPT09PT09CisKK1RoZXJlIGlzIHNvbWUgRXh0NCBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IHdoaWNoIGNhbiBiZSBhY2Nlc3NlZCBieSBhcHBsaWNhdGlvbnMKK3Rocm91Z2ggdGhlIHN5c3RlbSBjYWxsIGludGVyZmFjZXMuIFRoZSBsaXN0IG9mIGFsbCBFeHQ0IHNwZWNpZmljIGlvY3RscyBhcmUKK3Nob3duIGluIHRoZSB0YWJsZSBiZWxvdy4KKworVGFibGUgb2YgRXh0NCBzcGVjaWZpYyBpb2N0bHMKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorIElvY3RsCQkJICAgICAgRGVzY3JpcHRpb24KKyBFWFQ0X0lPQ19HRVRGTEFHUwkgICAgICBHZXQgYWRkaXRpb25hbCBhdHRyaWJ1dGVzIGFzc29jaWF0ZWQgd2l0aCBpbm9kZS4KKwkJCSAgICAgIFRoZSBpb2N0bCBhcmd1bWVudCBpcyBhbiBpbnRlZ2VyIGJpdGZpZWxkLCB3aXRoCisJCQkgICAgICBiaXQgdmFsdWVzIGRlc2NyaWJlZCBpbiBleHQ0LmguIFRoaXMgaW9jdGwgaXMgYW4KKwkJCSAgICAgIGFsaWFzIGZvciBGU19JT0NfR0VURkxBR1MuCisKKyBFWFQ0X0lPQ19TRVRGTEFHUwkgICAgICBTZXQgYWRkaXRpb25hbCBhdHRyaWJ1dGVzIGFzc29jaWF0ZWQgd2l0aCBpbm9kZS4KKwkJCSAgICAgIFRoZSBpb2N0bCBhcmd1bWVudCBpcyBhbiBpbnRlZ2VyIGJpdGZpZWxkLCB3aXRoCisJCQkgICAgICBiaXQgdmFsdWVzIGRlc2NyaWJlZCBpbiBleHQ0LmguIFRoaXMgaW9jdGwgaXMgYW4KKwkJCSAgICAgIGFsaWFzIGZvciBGU19JT0NfU0VURkxBR1MuCisKKyBFWFQ0X0lPQ19HRVRWRVJTSU9OCisgRVhUNF9JT0NfR0VUVkVSU0lPTl9PTEQKKwkJCSAgICAgIEdldCB0aGUgaW5vZGUgaV9nZW5lcmF0aW9uIG51bWJlciBzdG9yZWQgZm9yCisJCQkgICAgICBlYWNoIGlub2RlLiBUaGUgaV9nZW5lcmF0aW9uIG51bWJlciBpcyBub3JtYWxseQorCQkJICAgICAgY2hhbmdlZCBvbmx5IHdoZW4gbmV3IGlub2RlIGlzIGNyZWF0ZWQgYW5kIGl0IGlzCisJCQkgICAgICBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBuZXR3b3JrIGZpbGVzeXN0ZW1zLiBUaGUKKwkJCSAgICAgICdfT0xEJyB2ZXJzaW9uIG9mIHRoaXMgaW9jdGwgaXMgYW4gYWxpYXMgZm9yCisJCQkgICAgICBGU19JT0NfR0VUVkVSU0lPTi4KKworIEVYVDRfSU9DX1NFVFZFUlNJT04KKyBFWFQ0X0lPQ19TRVRWRVJTSU9OX09MRAorCQkJICAgICAgU2V0IHRoZSBpbm9kZSBpX2dlbmVyYXRpb24gbnVtYmVyIHN0b3JlZCBmb3IKKwkJCSAgICAgIGVhY2ggaW5vZGUuIFRoZSAnX09MRCcgdmVyc2lvbiBvZiB0aGlzIGlvY3RsCisJCQkgICAgICBpcyBhbiBhbGlhcyBmb3IgRlNfSU9DX1NFVFZFUlNJT04uCisKKyBFWFQ0X0lPQ19HUk9VUF9FWFRFTkQJICAgICAgVGhpcyBpb2N0bCBoYXMgdGhlIHNhbWUgcHVycG9zZSBhcyB0aGUgcmVzaXplCisJCQkgICAgICBtb3VudCBvcHRpb24uIEl0IGFsbG93cyB0byByZXNpemUgZmlsZXN5c3RlbQorCQkJICAgICAgdG8gdGhlIGVuZCBvZiB0aGUgbGFzdCBleGlzdGluZyBibG9jayBncm91cCwKKwkJCSAgICAgIGZ1cnRoZXIgcmVzaXplIGhhcyB0byBiZSBkb25lIHdpdGggcmVzaXplMmZzLAorCQkJICAgICAgZWl0aGVyIG9ubGluZSwgb3Igb2ZmbGluZS4gVGhlIGFyZ3VtZW50IHBvaW50cworCQkJICAgICAgdG8gdGhlIHVuc2lnbmVkIGxvZ24gbnVtYmVyIHJlcHJlc2VudGluZyB0aGUKKwkJCSAgICAgIGZpbGVzeXN0ZW0gbmV3IGJsb2NrIGNvdW50LgorCisgRVhUNF9JT0NfTU9WRV9FWFQJICAgICAgTW92ZSB0aGUgYmxvY2sgZXh0ZW50cyBmcm9tIG9yaWdfZmQgKHRoZSBvbmUKKwkJCSAgICAgIHRoaXMgaW9jdGwgaXMgcG9pbnRpbmcgdG8pIHRvIHRoZSBkb25vcl9mZCAodGhlCisJCQkgICAgICBvbmUgc3BlY2lmaWVkIGluIG1vdmVfZXh0ZW50IHN0cnVjdHVyZSBwYXNzZWQKKwkJCSAgICAgIGFzIGFuIGFyZ3VtZW50IHRvIHRoaXMgaW9jdGwpLiBUaGVuLCBleGNoYW5nZQorCQkJICAgICAgaW5vZGUgbWV0YWRhdGEgYmV0d2VlbiBvcmlnX2ZkIGFuZCBkb25vcl9mZC4KKwkJCSAgICAgIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgZm9yIG9ubGluZQorCQkJICAgICAgZGVmcmFnbWVudGF0aW9uLCBiZWNhdXNlIHRoZSBhbGxvY2F0b3IgaGFzIHRoZQorCQkJICAgICAgb3Bwb3J0dW5pdHkgdG8gYWxsb2NhdGUgbW92ZWQgYmxvY2tzIGJldHRlciwKKwkJCSAgICAgIGlkZWFsbHkgaW50byBvbmUgY29udGlndW91cyBleHRlbnQuCisKKyBFWFQ0X0lPQ19HUk9VUF9BREQJICAgICAgQWRkIGEgbmV3IGdyb3VwIGRlc2NyaXB0b3IgdG8gYW4gZXhpc3Rpbmcgb3IKKwkJCSAgICAgIG5ldyBncm91cCBkZXNjcmlwdG9yIGJsb2NrLiBUaGUgbmV3IGdyb3VwCisJCQkgICAgICBkZXNjcmlwdG9yIGlzIGRlc2NyaWJlZCBieSBleHQ0X25ld19ncm91cF9pbnB1dAorCQkJICAgICAgc3RydWN0dXJlLCB3aGljaCBpcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQgdG8KKwkJCSAgICAgIHRoaXMgaW9jdGwuIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgaW4KKwkJCSAgICAgIGNvbmp1bmN0aW9uIHdpdGggRVhUNF9JT0NfR1JPVVBfRVhURU5ELAorCQkJICAgICAgd2hpY2ggYWxsb3dzIG9ubGluZSByZXNpemUgb2YgdGhlIGZpbGVzeXN0ZW0KKwkJCSAgICAgIHRvIHRoZSBlbmQgb2YgdGhlIGxhc3QgZXhpc3RpbmcgYmxvY2sgZ3JvdXAuCisJCQkgICAgICBUaG9zZSB0d28gaW9jdGxzIGNvbWJpbmVkIGlzIHVzZWQgaW4gdXNlcnNwYWNlCisJCQkgICAgICBvbmxpbmUgcmVzaXplIHRvb2wgKGUuZy4gcmVzaXplMmZzKS4KKworIEVYVDRfSU9DX01JR1JBVEUJICAgICAgVGhpcyBpb2N0bCBvcGVyYXRlcyBvbiB0aGUgZmlsZXN5c3RlbSBpdHNlbGYuCisJCQkgICAgICBJdCBjb252ZXJ0cyAobWlncmF0ZXMpIGV4dDMgaW5kaXJlY3QgYmxvY2sgbWFwcGVkCisJCQkgICAgICBpbm9kZSB0byBleHQ0IGV4dGVudCBtYXBwZWQgaW5vZGUgYnkgd2Fsa2luZworCQkJICAgICAgdGhyb3VnaCBpbmRpcmVjdCBibG9jayBtYXBwaW5nIG9mIHRoZSBvcmlnaW5hbAorCQkJICAgICAgaW5vZGUgYW5kIGNvbnZlcnRpbmcgY29udGlndW91cyBibG9jayByYW5nZXMKKwkJCSAgICAgIGludG8gZXh0NCBleHRlbnRzIG9mIHRoZSB0ZW1wb3JhcnkgaW5vZGUuIFRoZW4sCisJCQkgICAgICBpbm9kZXMgYXJlIHN3YXBwZWQuIFRoaXMgaW9jdGwgbWlnaHQgaGVscCwgd2hlbgorCQkJICAgICAgbWlncmF0aW5nIGZyb20gZXh0MyB0byBleHQ0IGZpbGVzeXN0ZW0sIGhvd2V2ZXIKKwkJCSAgICAgIHN1Z2dlc3Rpb24gaXMgdG8gY3JlYXRlIGZyZXNoIGV4dDQgZmlsZXN5c3RlbQorCQkJICAgICAgYW5kIGNvcHkgZGF0YSBmcm9tIHRoZSBiYWNrdXAuIE5vdGUsIHRoYXQKKwkJCSAgICAgIGZpbGVzeXN0ZW0gaGFzIHRvIHN1cHBvcnQgZXh0ZW50cyBmb3IgdGhpcyBpb2N0bAorCQkJICAgICAgdG8gd29yay4KKworIEVYVDRfSU9DX0FMTE9DX0RBX0JMS1MJICAgICAgRm9yY2UgYWxsIG9mIHRoZSBkZWxheSBhbGxvY2F0ZWQgYmxvY2tzIHRvIGJlCisJCQkgICAgICBhbGxvY2F0ZWQgdG8gcHJlc2VydmUgYXBwbGljYXRpb24tZXhwZWN0ZWQgZXh0MworCQkJICAgICAgYmVoYXZpb3VyLiBOb3RlIHRoYXQgdGhpcyB3aWxsIGFsc28gc3RhcnQKKwkJCSAgICAgIHRyaWdnZXJpbmcgYSB3cml0ZSBvZiB0aGUgZGF0YSBibG9ja3MsIGJ1dCB0aGlzCisJCQkgICAgICBiZWhhdmlvdXIgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlIGFzIGl0IGlzCisJCQkgICAgICBub3QgbmVjZXNzYXJ5IGFuZCBoYXMgYmVlbiBkb25lIHRoaXMgd2F5IG9ubHkKKwkJCSAgICAgIGZvciBzYWtlIG9mIHNpbXBsaWNpdHkuCisKKyBFWFQ0X0lPQ19SRVNJWkVfRlMJICAgICAgUmVzaXplIHRoZSBmaWxlc3lzdGVtIHRvIGEgbmV3IHNpemUuICBUaGUgbnVtYmVyCisJCQkgICAgICBvZiBibG9ja3Mgb2YgcmVzaXplZCBmaWxlc3lzdGVtIGlzIHBhc3NlZCBpbiB2aWEKKwkJCSAgICAgIDY0IGJpdCBpbnRlZ2VyIGFyZ3VtZW50LiAgVGhlIGtlcm5lbCBhbGxvY2F0ZXMKKwkJCSAgICAgIGJpdG1hcHMgYW5kIGlub2RlIHRhYmxlLCB0aGUgdXNlcnNwYWNlIHRvb2wgdGh1cworCQkJICAgICAganVzdCBwYXNzZXMgdGhlIG5ldyBudW1iZXIgb2YgYmxvY2tzLgorCitFWFQ0X0lPQ19TV0FQX0JPT1QJICAgICAgU3dhcCBpX2Jsb2NrcyBhbmQgYXNzb2NpYXRlZCBhdHRyaWJ1dGVzCisJCQkgICAgICAobGlrZSBpX2Jsb2NrcywgaV9zaXplLCBpX2ZsYWdzLCAuLi4pIGZyb20KKwkJCSAgICAgIHRoZSBzcGVjaWZpZWQgaW5vZGUgd2l0aCBpbm9kZQorCQkJICAgICAgRVhUNF9CT09UX0xPQURFUl9JTk8gKCM1KS4gVGhpcyBpcyB0eXBpY2FsbHkKKwkJCSAgICAgIHVzZWQgdG8gc3RvcmUgYSBib290IGxvYWRlciBpbiBhIHNlY3VyZSBwYXJ0IG9mCisJCQkgICAgICB0aGUgZmlsZXN5c3RlbSwgd2hlcmUgaXQgY2FuJ3QgYmUgY2hhbmdlZCBieSBhCisJCQkgICAgICBub3JtYWwgdXNlciBieSBhY2NpZGVudC4KKwkJCSAgICAgIFRoZSBkYXRhIGJsb2NrcyBvZiB0aGUgcHJldmlvdXMgYm9vdCBsb2FkZXIKKwkJCSAgICAgIHdpbGwgYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBpbm9kZS4KKworLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisKK1JlZmVyZW5jZXMKKz09PT09PT09PT0KKwora2VybmVsIHNvdXJjZToJPGZpbGU6ZnMvZXh0NC8+CisJCTxmaWxlOmZzL2piZDIvPgorCitwcm9ncmFtczoJaHR0cDovL2UyZnNwcm9ncy5zb3VyY2Vmb3JnZS5uZXQvCisKK3VzZWZ1bCBsaW5rczoJaHR0cDovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvZXh0My1kZXZlbAorCQlodHRwOi8vd3d3LmJ1bGxvcGVuc291cmNlLm9yZy9leHQ0LworCQlodHRwOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL01haW5fUGFnZQorCQlodHRwOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWF0dXJlcy9FeHQ0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mMmZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTAyYjQzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mMmZzLnR4dApAQCAtMCwwICsxLDU3OSBAQAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1dIQVQgSVMgRmxhc2gtRnJpZW5kbHkgRmlsZSBTeXN0ZW0gKEYyRlMpPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworTkFORCBmbGFzaCBtZW1vcnktYmFzZWQgc3RvcmFnZSBkZXZpY2VzLCBzdWNoIGFzIFNTRCwgZU1NQywgYW5kIFNEIGNhcmRzLCBoYXZlCitiZWVuIGVxdWlwcGVkIG9uIGEgdmFyaWV0eSBzeXN0ZW1zIHJhbmdpbmcgZnJvbSBtb2JpbGUgdG8gc2VydmVyIHN5c3RlbXMuIFNpbmNlCit0aGV5IGFyZSBrbm93biB0byBoYXZlIGRpZmZlcmVudCBjaGFyYWN0ZXJpc3RpY3MgZnJvbSB0aGUgY29udmVudGlvbmFsIHJvdGF0aW5nCitkaXNrcywgYSBmaWxlIHN5c3RlbSwgYW4gdXBwZXIgbGF5ZXIgdG8gdGhlIHN0b3JhZ2UgZGV2aWNlLCBzaG91bGQgYWRhcHQgdG8gdGhlCitjaGFuZ2VzIGZyb20gdGhlIHNrZXRjaCBpbiB0aGUgZGVzaWduIGxldmVsLgorCitGMkZTIGlzIGEgZmlsZSBzeXN0ZW0gZXhwbG9pdGluZyBOQU5EIGZsYXNoIG1lbW9yeS1iYXNlZCBzdG9yYWdlIGRldmljZXMsIHdoaWNoCitpcyBiYXNlZCBvbiBMb2ctc3RydWN0dXJlZCBGaWxlIFN5c3RlbSAoTEZTKS4gVGhlIGRlc2lnbiBoYXMgYmVlbiBmb2N1c2VkIG9uCithZGRyZXNzaW5nIHRoZSBmdW5kYW1lbnRhbCBpc3N1ZXMgaW4gTEZTLCB3aGljaCBhcmUgc25vd2JhbGwgZWZmZWN0IG9mIHdhbmRlcmluZwordHJlZSBhbmQgaGlnaCBjbGVhbmluZyBvdmVyaGVhZC4KKworU2luY2UgYSBOQU5EIGZsYXNoIG1lbW9yeS1iYXNlZCBzdG9yYWdlIGRldmljZSBzaG93cyBkaWZmZXJlbnQgY2hhcmFjdGVyaXN0aWMKK2FjY29yZGluZyB0byBpdHMgaW50ZXJuYWwgZ2VvbWV0cnkgb3IgZmxhc2ggbWVtb3J5IG1hbmFnZW1lbnQgc2NoZW1lLCBuYW1lbHkgRlRMLAorRjJGUyBhbmQgaXRzIHRvb2xzIHN1cHBvcnQgdmFyaW91cyBwYXJhbWV0ZXJzIG5vdCBvbmx5IGZvciBjb25maWd1cmluZyBvbi1kaXNrCitsYXlvdXQsIGJ1dCBhbHNvIGZvciBzZWxlY3RpbmcgYWxsb2NhdGlvbiBhbmQgY2xlYW5pbmcgYWxnb3JpdGhtcy4KKworVGhlIGZvbGxvd2luZyBnaXQgdHJlZSBwcm92aWRlcyB0aGUgZmlsZSBzeXN0ZW0gZm9ybWF0dGluZyB0b29sIChta2ZzLmYyZnMpLAorYSBjb25zaXN0ZW5jeSBjaGVja2luZyB0b29sIChmc2NrLmYyZnMpLCBhbmQgYSBkZWJ1Z2dpbmcgdG9vbCAoZHVtcC5mMmZzKS4KKz4+IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9qYWVnZXVrL2YyZnMtdG9vbHMuZ2l0CisKK0ZvciByZXBvcnRpbmcgYnVncyBhbmQgc2VuZGluZyBwYXRjaGVzLCBwbGVhc2UgdXNlIHRoZSBmb2xsb3dpbmcgbWFpbGluZyBsaXN0OgorPj4gbGludXgtZjJmcy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0JBQ0tHUk9VTkQgQU5EIERFU0lHTiBJU1NVRVMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0xvZy1zdHJ1Y3R1cmVkIEZpbGUgU3lzdGVtIChMRlMpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIkEgbG9nLXN0cnVjdHVyZWQgZmlsZSBzeXN0ZW0gd3JpdGVzIGFsbCBtb2RpZmljYXRpb25zIHRvIGRpc2sgc2VxdWVudGlhbGx5IGluCithIGxvZy1saWtlIHN0cnVjdHVyZSwgdGhlcmVieSBzcGVlZGluZyB1cCAgYm90aCBmaWxlIHdyaXRpbmcgYW5kIGNyYXNoIHJlY292ZXJ5LgorVGhlIGxvZyBpcyB0aGUgb25seSBzdHJ1Y3R1cmUgb24gZGlzazsgaXQgY29udGFpbnMgaW5kZXhpbmcgaW5mb3JtYXRpb24gc28gdGhhdAorZmlsZXMgY2FuIGJlIHJlYWQgYmFjayBmcm9tIHRoZSBsb2cgZWZmaWNpZW50bHkuIEluIG9yZGVyIHRvIG1haW50YWluIGxhcmdlIGZyZWUKK2FyZWFzIG9uIGRpc2sgZm9yIGZhc3Qgd3JpdGluZywgd2UgZGl2aWRlICB0aGUgbG9nIGludG8gc2VnbWVudHMgYW5kIHVzZSBhCitzZWdtZW50IGNsZWFuZXIgdG8gY29tcHJlc3MgdGhlIGxpdmUgaW5mb3JtYXRpb24gZnJvbSBoZWF2aWx5IGZyYWdtZW50ZWQKK3NlZ21lbnRzLiIgZnJvbSBSb3NlbmJsdW0sIE0uIGFuZCBPdXN0ZXJob3V0LCBKLiBLLiwgMTk5MiwgIlRoZSBkZXNpZ24gYW5kCitpbXBsZW1lbnRhdGlvbiBvZiBhIGxvZy1zdHJ1Y3R1cmVkIGZpbGUgc3lzdGVtIiwgQUNNIFRyYW5zLiBDb21wdXRlciBTeXN0ZW1zCisxMCwgMSwgMjbigJM1Mi4KKworV2FuZGVyaW5nIFRyZWUgUHJvYmxlbQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSW4gTEZTLCB3aGVuIGEgZmlsZSBkYXRhIGlzIHVwZGF0ZWQgYW5kIHdyaXR0ZW4gdG8gdGhlIGVuZCBvZiBsb2csIGl0cyBkaXJlY3QKK3BvaW50ZXIgYmxvY2sgaXMgdXBkYXRlZCBkdWUgdG8gdGhlIGNoYW5nZWQgbG9jYXRpb24uIFRoZW4gdGhlIGluZGlyZWN0IHBvaW50ZXIKK2Jsb2NrIGlzIGFsc28gdXBkYXRlZCBkdWUgdG8gdGhlIGRpcmVjdCBwb2ludGVyIGJsb2NrIHVwZGF0ZS4gSW4gdGhpcyBtYW5uZXIsCit0aGUgdXBwZXIgaW5kZXggc3RydWN0dXJlcyBzdWNoIGFzIGlub2RlLCBpbm9kZSBtYXAsIGFuZCBjaGVja3BvaW50IGJsb2NrIGFyZQorYWxzbyB1cGRhdGVkIHJlY3Vyc2l2ZWx5LiBUaGlzIHByb2JsZW0gaXMgY2FsbGVkIGFzIHdhbmRlcmluZyB0cmVlIHByb2JsZW0gWzFdLAorYW5kIGluIG9yZGVyIHRvIGVuaGFuY2UgdGhlIHBlcmZvcm1hbmNlLCBpdCBzaG91bGQgZWxpbWluYXRlIG9yIHJlbGF4IHRoZSB1cGRhdGUKK3Byb3BhZ2F0aW9uIGFzIG11Y2ggYXMgcG9zc2libGUuCisKK1sxXSBCaXR5dXRza2l5LCBBLiAyMDA1LiBKRkZTMyBkZXNpZ24gaXNzdWVzLiBodHRwOi8vd3d3LmxpbnV4LW10ZC5pbmZyYWRlYWQub3JnLworCitDbGVhbmluZyBPdmVyaGVhZAorLS0tLS0tLS0tLS0tLS0tLS0KK1NpbmNlIExGUyBpcyBiYXNlZCBvbiBvdXQtb2YtcGxhY2Ugd3JpdGVzLCBpdCBwcm9kdWNlcyBzbyBtYW55IG9ic29sZXRlIGJsb2Nrcworc2NhdHRlcmVkIGFjcm9zcyB0aGUgd2hvbGUgc3RvcmFnZS4gSW4gb3JkZXIgdG8gc2VydmUgbmV3IGVtcHR5IGxvZyBzcGFjZSwgaXQKK25lZWRzIHRvIHJlY2xhaW0gdGhlc2Ugb2Jzb2xldGUgYmxvY2tzIHNlYW1sZXNzbHkgdG8gdXNlcnMuIFRoaXMgam9iIGlzIGNhbGxlZAorYXMgYSBjbGVhbmluZyBwcm9jZXNzLgorCitUaGUgcHJvY2VzcyBjb25zaXN0cyBvZiB0aHJlZSBvcGVyYXRpb25zIGFzIGZvbGxvd3MuCisxLiBBIHZpY3RpbSBzZWdtZW50IGlzIHNlbGVjdGVkIHRocm91Z2ggcmVmZXJlbmNpbmcgc2VnbWVudCB1c2FnZSB0YWJsZS4KKzIuIEl0IGxvYWRzIHBhcmVudCBpbmRleCBzdHJ1Y3R1cmVzIG9mIGFsbCB0aGUgZGF0YSBpbiB0aGUgdmljdGltIGlkZW50aWZpZWQgYnkKKyAgIHNlZ21lbnQgc3VtbWFyeSBibG9ja3MuCiszLiBJdCBjaGVja3MgdGhlIGNyb3NzLXJlZmVyZW5jZSBiZXR3ZWVuIHRoZSBkYXRhIGFuZCBpdHMgcGFyZW50IGluZGV4IHN0cnVjdHVyZS4KKzQuIEl0IG1vdmVzIHZhbGlkIGRhdGEgc2VsZWN0aXZlbHkuCisKK1RoaXMgY2xlYW5pbmcgam9iIG1heSBjYXVzZSB1bmV4cGVjdGVkIGxvbmcgZGVsYXlzLCBzbyB0aGUgbW9zdCBpbXBvcnRhbnQgZ29hbAoraXMgdG8gaGlkZSB0aGUgbGF0ZW5jaWVzIHRvIHVzZXJzLiBBbmQgYWxzbyBkZWZpbml0ZWx5LCBpdCBzaG91bGQgcmVkdWNlIHRoZQorYW1vdW50IG9mIHZhbGlkIGRhdGEgdG8gYmUgbW92ZWQsIGFuZCBtb3ZlIHRoZW0gcXVpY2tseSBhcyB3ZWxsLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorS0VZIEZFQVRVUkVTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGbGFzaCBBd2FyZW5lc3MKKy0tLS0tLS0tLS0tLS0tLQorLSBFbmxhcmdlIHRoZSByYW5kb20gd3JpdGUgYXJlYSBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLCBidXQgcHJvdmlkZSB0aGUgaGlnaAorICBzcGF0aWFsIGxvY2FsaXR5CistIEFsaWduIEZTIGRhdGEgc3RydWN0dXJlcyB0byB0aGUgb3BlcmF0aW9uYWwgdW5pdHMgaW4gRlRMIGFzIGJlc3QgZWZmb3J0cworCitXYW5kZXJpbmcgVHJlZSBQcm9ibGVtCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistIFVzZSBhIHRlcm0sIOKAnG5vZGXigJ0sIHRoYXQgcmVwcmVzZW50cyBpbm9kZXMgYXMgd2VsbCBhcyB2YXJpb3VzIHBvaW50ZXIgYmxvY2tzCistIEludHJvZHVjZSBOb2RlIEFkZHJlc3MgVGFibGUgKE5BVCkgY29udGFpbmluZyB0aGUgbG9jYXRpb25zIG9mIGFsbCB0aGUg4oCcbm9kZeKAnQorICBibG9ja3M7IHRoaXMgd2lsbCBjdXQgb2ZmIHRoZSB1cGRhdGUgcHJvcGFnYXRpb24uCisKK0NsZWFuaW5nIE92ZXJoZWFkCistLS0tLS0tLS0tLS0tLS0tLQorLSBTdXBwb3J0IGEgYmFja2dyb3VuZCBjbGVhbmluZyBwcm9jZXNzCistIFN1cHBvcnQgZ3JlZWR5IGFuZCBjb3N0LWJlbmVmaXQgYWxnb3JpdGhtcyBmb3IgdmljdGltIHNlbGVjdGlvbiBwb2xpY2llcworLSBTdXBwb3J0IG11bHRpLWhlYWQgbG9ncyBmb3Igc3RhdGljL2R5bmFtaWMgaG90IGFuZCBjb2xkIGRhdGEgc2VwYXJhdGlvbgorLSBJbnRyb2R1Y2UgYWRhcHRpdmUgbG9nZ2luZyBmb3IgZWZmaWNpZW50IGJsb2NrIGFsbG9jYXRpb24KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK01PVU5UIE9QVElPTlMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2JhY2tncm91bmRfZ2M9JXMgICAgICAgVHVybiBvbi9vZmYgY2xlYW5pbmcgb3BlcmF0aW9ucywgbmFtZWx5IGdhcmJhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbiwgdHJpZ2dlcmVkIGluIGJhY2tncm91bmQgd2hlbiBJL08gc3Vic3lzdGVtIGlzCisgICAgICAgICAgICAgICAgICAgICAgIGlkbGUuIElmIGJhY2tncm91bmRfZ2M9b24sIGl0IHdpbGwgdHVybiBvbiB0aGUgZ2FyYmFnZQorICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uIGFuZCBpZiBiYWNrZ3JvdW5kX2djPW9mZiwgZ2FyYmFnZSBjb2xsZWN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgYmUgdHJ1bmVkIG9mZi4gSWYgYmFja2dyb3VuZF9nYz1zeW5jLCBpdCB3aWxsIHR1cm4KKyAgICAgICAgICAgICAgICAgICAgICAgb24gc3luY2hyb25vdXMgZ2FyYmFnZSBjb2xsZWN0aW9uIHJ1bm5pbmcgaW4gYmFja2dyb3VuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyBvcHRpb24gaXMgb24uIFNvIGdhcmJhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbiBpcyBvbiBieSBkZWZhdWx0LgorZGlzYWJsZV9yb2xsX2ZvcndhcmQgICBEaXNhYmxlIHRoZSByb2xsLWZvcndhcmQgcmVjb3Zlcnkgcm91dGluZQorbm9yZWNvdmVyeSAgICAgICAgICAgICBEaXNhYmxlIHRoZSByb2xsLWZvcndhcmQgcmVjb3Zlcnkgcm91dGluZSwgbW91bnRlZCByZWFkLQorICAgICAgICAgICAgICAgICAgICAgICBvbmx5IChpLmUuLCAtbyBybyxkaXNhYmxlX3JvbGxfZm9yd2FyZCkKK2Rpc2NhcmQgICAgICAgICAgICAgICAgSXNzdWUgZGlzY2FyZC9UUklNIGNvbW1hbmRzIHdoZW4gYSBzZWdtZW50IGlzIGNsZWFuZWQuCitub19oZWFwICAgICAgICAgICAgICAgIERpc2FibGUgaGVhcC1zdHlsZSBzZWdtZW50IGFsbG9jYXRpb24gd2hpY2ggZmluZHMgZnJlZQorICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50cyBmb3IgZGF0YSBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgbWFpbiBhcmVhLCB3aGlsZQorCQkgICAgICAgZm9yIG5vZGUgZnJvbSB0aGUgZW5kIG9mIG1haW4gYXJlYS4KK25vdXNlcl94YXR0ciAgICAgICAgICAgRGlzYWJsZSBFeHRlbmRlZCBVc2VyIEF0dHJpYnV0ZXMuIE5vdGU6IHhhdHRyIGlzIGVuYWJsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgYnkgZGVmYXVsdCBpZiBDT05GSUdfRjJGU19GU19YQVRUUiBpcyBzZWxlY3RlZC4KK25vYWNsICAgICAgICAgICAgICAgICAgRGlzYWJsZSBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0LiBOb3RlOiBhY2wgaXMgZW5hYmxlZAorICAgICAgICAgICAgICAgICAgICAgICBieSBkZWZhdWx0IGlmIENPTkZJR19GMkZTX0ZTX1BPU0lYX0FDTCBpcyBzZWxlY3RlZC4KK2FjdGl2ZV9sb2dzPSV1ICAgICAgICAgU3VwcG9ydCBjb25maWd1cmluZyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBsb2dzLiBJbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudCBkZXNpZ24sIGYyZnMgc3VwcG9ydHMgb25seSAyLCA0LCBhbmQgNiBsb2dzLgorICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IG51bWJlciBpcyA2LgorZGlzYWJsZV9leHRfaWRlbnRpZnkgICBEaXNhYmxlIHRoZSBleHRlbnNpb24gbGlzdCBjb25maWd1cmVkIGJ5IG1rZnMsIHNvIGYyZnMKKyAgICAgICAgICAgICAgICAgICAgICAgZG9lcyBub3QgYXdhcmUgb2YgY29sZCBmaWxlcyBzdWNoIGFzIG1lZGlhIGZpbGVzLgoraW5saW5lX3hhdHRyICAgICAgICAgICBFbmFibGUgdGhlIGlubGluZSB4YXR0cnMgZmVhdHVyZS4KK2lubGluZV9kYXRhICAgICAgICAgICAgRW5hYmxlIHRoZSBpbmxpbmUgZGF0YSBmZWF0dXJlOiBOZXcgY3JlYXRlZCBzbWFsbCg8fjMuNGspCisgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzIGNhbiBiZSB3cml0dGVuIGludG8gaW5vZGUgYmxvY2suCitpbmxpbmVfZGVudHJ5ICAgICAgICAgIEVuYWJsZSB0aGUgaW5saW5lIGRpciBmZWF0dXJlOiBkYXRhIGluIG5ldyBjcmVhdGVkCisgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBlbnRyaWVzIGNhbiBiZSB3cml0dGVuIGludG8gaW5vZGUgYmxvY2suIFRoZQorICAgICAgICAgICAgICAgICAgICAgICBzcGFjZSBvZiBpbm9kZSBibG9jayB3aGljaCBpcyB1c2VkIHRvIHN0b3JlIGlubGluZQorICAgICAgICAgICAgICAgICAgICAgICBkZW50cmllcyBpcyBsaW1pdGVkIHRvIH4zLjRrLgorZmx1c2hfbWVyZ2UJICAgICAgIE1lcmdlIGNvbmN1cnJlbnQgY2FjaGVfZmx1c2ggY29tbWFuZHMgYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICAgICAgICAgICAgICAgICB0byBlbGltaW5hdGUgcmVkdW5kYW50IGNvbW1hbmQgaXNzdWVzLiBJZiB0aGUgdW5kZXJseWluZworCQkgICAgICAgZGV2aWNlIGhhbmRsZXMgdGhlIGNhY2hlX2ZsdXNoIGNvbW1hbmQgcmVsYXRpdmVseSBzbG93bHksCisJCSAgICAgICByZWNvbW1lbmQgdG8gZW5hYmxlIHRoaXMgb3B0aW9uLgorbm9iYXJyaWVyICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBjYW4gYmUgdXNlZCBpZiB1bmRlcmx5aW5nIHN0b3JhZ2UgZ3VhcmFudGVlcworICAgICAgICAgICAgICAgICAgICAgICBpdHMgY2FjaGVkIGRhdGEgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gdGhlIG5vdm9sYXRpbGUgYXJlYS4KKwkJICAgICAgIElmIHRoaXMgb3B0aW9uIGlzIHNldCwgbm8gY2FjaGVfZmx1c2ggY29tbWFuZHMgYXJlIGlzc3VlZAorCQkgICAgICAgYnV0IGYyZnMgc3RpbGwgZ3VhcmFudGVlcyB0aGUgd3JpdGUgb3JkZXJpbmcgb2YgYWxsIHRoZQorCQkgICAgICAgZGF0YSB3cml0ZXMuCitmYXN0Ym9vdCAgICAgICAgICAgICAgIFRoaXMgb3B0aW9uIGlzIHVzZWQgd2hlbiBhIHN5c3RlbSB3YW50cyB0byByZWR1Y2UgbW91bnQKKyAgICAgICAgICAgICAgICAgICAgICAgdGltZSBhcyBtdWNoIGFzIHBvc3NpYmxlLCBldmVuIHRob3VnaCBub3JtYWwgcGVyZm9ybWFuY2UKKwkJICAgICAgIGNhbiBiZSBzYWNyaWZpY2VkLgorZXh0ZW50X2NhY2hlICAgICAgICAgICBFbmFibGUgYW4gZXh0ZW50IGNhY2hlIGJhc2VkIG9uIHJiLXRyZWUsIGl0IGNhbiBjYWNoZQorICAgICAgICAgICAgICAgICAgICAgICBhcyBtYW55IGFzIGV4dGVudCB3aGljaCBtYXAgYmV0d2VlbiBjb250aWd1b3VzIGxvZ2ljYWwKKyAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyBhbmQgcGh5c2ljYWwgYWRkcmVzcyBwZXIgaW5vZGUsIHJlc3VsdGluZyBpbgorICAgICAgICAgICAgICAgICAgICAgICBpbmNyZWFzaW5nIHRoZSBjYWNoZSBoaXQgcmF0aW8uIFNldCBieSBkZWZhdWx0Lgorbm9leHRlbnRfY2FjaGUgICAgICAgICBEaWFibGUgYW4gZXh0ZW50IGNhY2hlIGJhc2VkIG9uIHJiLXRyZWUgZXhwbGljaXRseSwgc2VlCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhYm92ZSBleHRlbnRfY2FjaGUgbW91bnQgb3B0aW9uLgorbm9pbmxpbmVfZGF0YSAgICAgICAgICBEaXNhYmxlIHRoZSBpbmxpbmUgZGF0YSBmZWF0dXJlLCBpbmxpbmUgZGF0YSBmZWF0dXJlIGlzCisgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQgYnkgZGVmYXVsdC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0RFQlVHRlMgRU5UUklFUworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworL3N5cy9rZXJuZWwvZGVidWcvZjJmcy8gY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgYWxsIHRoZSBwYXJ0aXRpb25zIG1vdW50ZWQgYXMKK2YyZnMuIEVhY2ggZmlsZSBzaG93cyB0aGUgd2hvbGUgZjJmcyBpbmZvcm1hdGlvbi4KKworL3N5cy9rZXJuZWwvZGVidWcvZjJmcy9zdGF0dXMgaW5jbHVkZXM6CisgLSBtYWpvciBmaWxlIHN5c3RlbSBpbmZvcm1hdGlvbiBtYW5hZ2VkIGJ5IGYyZnMgY3VycmVudGx5CisgLSBhdmVyYWdlIFNJVCBpbmZvcm1hdGlvbiBhYm91dCB3aG9sZSBzZWdtZW50cworIC0gY3VycmVudCBtZW1vcnkgZm9vdHByaW50IGNvbnN1bWVkIGJ5IGYyZnMuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitTWVNGUyBFTlRSSUVTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbmZvcm1hdGlvbiBhYm91dCBtb3VudGVkIGYyZjIgZmlsZSBzeXN0ZW1zIGNhbiBiZSBmb3VuZCBpbgorL3N5cy9mcy9mMmZzLiAgRWFjaCBtb3VudGVkIGZpbGVzeXN0ZW0gd2lsbCBoYXZlIGEgZGlyZWN0b3J5IGluCisvc3lzL2ZzL2YyZnMgYmFzZWQgb24gaXRzIGRldmljZSBuYW1lIChpLmUuLCAvc3lzL2ZzL2YyZnMvc2RhKS4KK1RoZSBmaWxlcyBpbiBlYWNoIHBlci1kZXZpY2UgZGlyZWN0b3J5IGFyZSBzaG93biBpbiB0YWJsZSBiZWxvdy4KKworRmlsZXMgaW4gL3N5cy9mcy9mMmZzLzxkZXZuYW1lPgorKHNlZSBhbHNvIERvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZnMtZjJmcykKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorIEZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudAorCisgZ2NfbWF4X3NsZWVwX3RpbWUgICAgICAgICAgICBUaGlzIHR1bmluZyBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIG1heGltdW0gc2xlZXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUgZm9yIHRoZSBnYXJiYWdlIGNvbGxlY3Rpb24gdGhyZWFkLiBUaW1lIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBtaWxsaXNlY29uZHMuCisKKyBnY19taW5fc2xlZXBfdGltZSAgICAgICAgICAgIFRoaXMgdHVuaW5nIHBhcmFtZXRlciBjb250cm9scyB0aGUgbWluaW11bSBzbGVlcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZSBmb3IgdGhlIGdhcmJhZ2UgY29sbGVjdGlvbiB0aHJlYWQuIFRpbWUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIG1pbGxpc2Vjb25kcy4KKworIGdjX25vX2djX3NsZWVwX3RpbWUgICAgICAgICAgVGhpcyB0dW5pbmcgcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBkZWZhdWx0IHNsZWVwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lIGZvciB0aGUgZ2FyYmFnZSBjb2xsZWN0aW9uIHRocmVhZC4gVGltZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gbWlsbGlzZWNvbmRzLgorCisgZ2NfaWRsZSAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjb250cm9scyB0aGUgc2VsZWN0aW9uIG9mIHZpY3RpbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5IGZvciBnYXJiYWdlIGNvbGxlY3Rpb24uIFNldHRpbmcgZ2NfaWRsZSA9IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0KSB3aWxsIGRpc2FibGUgdGhpcyBvcHRpb24uIFNldHRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjX2lkbGUgPSAxIHdpbGwgc2VsZWN0IHRoZSBDb3N0IEJlbmVmaXQgYXBwcm9hY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgc2V0dGluZyBnY19pZGxlID0gMiB3aWxsIHNlbGVjdCB0aGUgZ3JlZWR5IGFwcm9hY2guCisKKyByZWNsYWltX3NlZ21lbnRzICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBudW1iZXIgb2YgcHJlZnJlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudHMgdG8gYmUgcmVjbGFpbWVkLiBJZiB0aGUgbnVtYmVyIG9mIHByZWZyZWUKKwkJCSAgICAgIHNlZ21lbnRzIGlzIGxhcmdlciB0aGFuIHRoZSBudW1iZXIgb2Ygc2VnbWVudHMKKwkJCSAgICAgIGluIHRoZSBwcm9wb3J0aW9uIHRvIHRoZSBwZXJjZW50YWdlIG92ZXIgdG90YWwKKwkJCSAgICAgIHZvbHVtZSBzaXplLCBmMmZzIHRyaWVzIHRvIGNvbmR1Y3QgY2hlY2twb2ludCB0bworCQkJICAgICAgcmVjbGFpbSB0aGUgcHJlZnJlZSBzZWdtZW50cyB0byBmcmVlIHNlZ21lbnRzLgorCQkJICAgICAgQnkgZGVmYXVsdCwgNSUgb3ZlciB0b3RhbCAjIG9mIHNlZ21lbnRzLgorCisgbWF4X3NtYWxsX2Rpc2NhcmRzCSAgICAgIFRoaXMgcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBudW1iZXIgb2YgZGlzY2FyZAorCQkJICAgICAgY29tbWFuZHMgdGhhdCBjb25zaXN0IHNtYWxsIGJsb2NrcyBsZXNzIHRoYW4gMk1CLgorCQkJICAgICAgVGhlIGNhbmRpZGF0ZXMgdG8gYmUgZGlzY2FyZGVkIGFyZSBjYWNoZWQgdW50aWwKKwkJCSAgICAgIGNoZWNrcG9pbnQgaXMgdHJpZ2dlcmVkLCBhbmQgaXNzdWVkIGR1cmluZyB0aGUKKwkJCSAgICAgIGNoZWNrcG9pbnQuIEJ5IGRlZmF1bHQsIGl0IGlzIGRpc2FibGVkIHdpdGggMC4KKworIHRyaW1fc2VjdGlvbnMgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIG51bWJlciBvZiBzZWN0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUgdHJpbW1lZCBvdXQgaW4gYmF0Y2ggbW9kZSB3aGVuIEZJVFJJTQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZHVjdHMuIDMyIHNlY3Rpb25zIGlzIHNldCBieSBkZWZhdWx0LgorCisgaXB1X3BvbGljeSAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjb250cm9scyB0aGUgcG9saWN5IG9mIGluLXBsYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVzIGluIGYyZnMuIFRoZXJlIGFyZSBmaXZlIHBvbGljaWVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDE6IEYyRlNfSVBVX0ZPUkNFLCAweDAyOiBGMkZTX0lQVV9TU1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNDogRjJGU19JUFVfVVRJTCwgIDB4MDg6IEYyRlNfSVBVX1NTUl9VVElMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTA6IEYyRlNfSVBVX0ZTWU5DLgorCisgbWluX2lwdV91dGlsICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjb250cm9scyB0aGUgdGhyZXNob2xkIHRvIHRyaWdnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluLXBsYWNlLXVwZGF0ZXMuIFRoZSBudW1iZXIgaW5kaWNhdGVzIHBlcmNlbnRhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBmaWxlc3lzdGVtIHV0aWxpemF0aW9uLCBhbmQgdXNlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRjJGU19JUFVfVVRJTCBhbmQgRjJGU19JUFVfU1NSX1VUSUwgcG9saWNpZXMuCisKKyBtaW5fZnN5bmNfYmxvY2tzICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSB0aHJlc2hvbGQgdG8gdHJpZ2dlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4tcGxhY2UtdXBkYXRlcyB3aGVuIEYyRlNfSVBVX0ZTWU5DIG1vZGUgaXMgc2V0LgorCQkJICAgICAgVGhlIG51bWJlciBpbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBkaXJ0eSBwYWdlcworCQkJICAgICAgd2hlbiBmc3luYyBuZWVkcyB0byBmbHVzaCBvbiBpdHMgY2FsbCBwYXRoLiBJZgorCQkJICAgICAgdGhlIG51bWJlciBpcyBsZXNzIHRoYW4gdGhpcyB2YWx1ZSwgaXQgdHJpZ2dlcnMKKwkJCSAgICAgIGluLXBsYWNlLXVwZGF0ZXMuCisKKyBtYXhfdmljdGltX3NlYXJjaAkgICAgICBUaGlzIHBhcmFtZXRlciBjb250cm9scyB0aGUgbnVtYmVyIG9mIHRyaWFscyB0bworCQkJICAgICAgZmluZCBhIHZpY3RpbSBzZWdtZW50IHdoZW4gY29uZHVjdGluZyBTU1IgYW5kCisJCQkgICAgICBjbGVhbmluZyBvcGVyYXRpb25zLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA0MDk2CisJCQkgICAgICB3aGljaCBjb3ZlcnMgOEdCIGJsb2NrIGFkZHJlc3MgcmFuZ2UuCisKKyBkaXJfbGV2ZWwgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBkaXJlY3RvcnkgbGV2ZWwgdG8KKwkJCSAgICAgIHN1cHBvcnQgbGFyZ2UgZGlyZWN0b3J5LiBJZiBhIGRpcmVjdG9yeSBoYXMgYQorCQkJICAgICAgbnVtYmVyIG9mIGZpbGVzLCBpdCBjYW4gcmVkdWNlIHRoZSBmaWxlIGxvb2t1cAorCQkJICAgICAgbGF0ZW5jeSBieSBpbmNyZWFzaW5nIHRoaXMgZGlyX2xldmVsIHZhbHVlLgorCQkJICAgICAgT3RoZXJ3aXNlLCBpdCBuZWVkcyB0byBkZWNyZWFzZSB0aGlzIHZhbHVlIHRvCisJCQkgICAgICByZWR1Y2UgdGhlIHNwYWNlIG92ZXJoZWFkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAwLgorCisgcmFtX3RocmVzaCAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjb250cm9scyB0aGUgbWVtb3J5IGZvb3RwcmludCB1c2VkCisJCQkgICAgICBieSBmcmVlIG5pZHMgYW5kIGNhY2hlZCBuYXQgZW50cmllcy4gQnkgZGVmYXVsdCwKKwkJCSAgICAgIDEwIGlzIHNldCwgd2hpY2ggaW5kaWNhdGVzIDEwIE1CIC8gMSBHQiBSQU0uCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitVU0FHRQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworMS4gRG93bmxvYWQgdXNlcmxhbmQgdG9vbHMgYW5kIGNvbXBpbGUgdGhlbS4KKworMi4gU2tpcCwgaWYgZjJmcyB3YXMgY29tcGlsZWQgc3RhdGljYWxseSBpbnNpZGUga2VybmVsLgorICAgT3RoZXJ3aXNlLCBpbnNlcnQgdGhlIGYyZnMua28gbW9kdWxlLgorICMgaW5zbW9kIGYyZnMua28KKworMy4gQ3JlYXRlIGEgZGlyZWN0b3J5IHRyeWluZyB0byBtb3VudAorICMgbWtkaXIgL21udC9mMmZzCisKKzQuIEZvcm1hdCB0aGUgYmxvY2sgZGV2aWNlLCBhbmQgdGhlbiBtb3VudCBhcyBmMmZzCisgIyBta2ZzLmYyZnMgLWwgbGFiZWwgL2Rldi9ibG9ja19kZXZpY2UKKyAjIG1vdW50IC10IGYyZnMgL2Rldi9ibG9ja19kZXZpY2UgL21udC9mMmZzCisKK21rZnMuZjJmcworLS0tLS0tLS0tCitUaGUgbWtmcy5mMmZzIGlzIGZvciB0aGUgdXNlIG9mIGZvcm1hdHRpbmcgYSBwYXJ0aXRpb24gYXMgdGhlIGYyZnMgZmlsZXN5c3RlbSwKK3doaWNoIGJ1aWxkcyBhIGJhc2ljIG9uLWRpc2sgbGF5b3V0LgorCitUaGUgb3B0aW9ucyBjb25zaXN0IG9mOgorLWwgW2xhYmVsXSAgIDogR2l2ZSBhIHZvbHVtZSBsYWJlbCwgdXAgdG8gNTEyIHVuaWNvZGUgbmFtZS4KKy1hIFswIG9yIDFdICA6IFNwbGl0IHN0YXJ0IGxvY2F0aW9uIG9mIGVhY2ggYXJlYSBmb3IgaGVhcC1iYXNlZCBhbGxvY2F0aW9uLgorICAgICAgICAgICAgICAgMSBpcyBzZXQgYnkgZGVmYXVsdCwgd2hpY2ggcGVyZm9ybXMgdGhpcy4KKy1vIFtpbnRdICAgICA6IFNldCBvdmVycHJvdmlzaW9uIHJhdGlvIGluIHBlcmNlbnQgb3ZlciB2b2x1bWUgc2l6ZS4KKyAgICAgICAgICAgICAgIDUgaXMgc2V0IGJ5IGRlZmF1bHQuCistcyBbaW50XSAgICAgOiBTZXQgdGhlIG51bWJlciBvZiBzZWdtZW50cyBwZXIgc2VjdGlvbi4KKyAgICAgICAgICAgICAgIDEgaXMgc2V0IGJ5IGRlZmF1bHQuCisteiBbaW50XSAgICAgOiBTZXQgdGhlIG51bWJlciBvZiBzZWN0aW9ucyBwZXIgem9uZS4KKyAgICAgICAgICAgICAgIDEgaXMgc2V0IGJ5IGRlZmF1bHQuCistZSBbc3RyXSAgICAgOiBTZXQgYmFzaWMgZXh0ZW5zaW9uIGxpc3QuIGUuZy4gIm1wMyxnaWYsbW92IgorLXQgWzAgb3IgMV0gIDogRGlzYWJsZSBkaXNjYXJkIGNvbW1hbmQgb3Igbm90LgorICAgICAgICAgICAgICAgMSBpcyBzZXQgYnkgZGVmYXVsdCwgd2hpY2ggY29uZHVjdHMgZGlzY2FyZC4KKworZnNjay5mMmZzCistLS0tLS0tLS0KK1RoZSBmc2NrLmYyZnMgaXMgYSB0b29sIHRvIGNoZWNrIHRoZSBjb25zaXN0ZW5jeSBvZiBhbiBmMmZzLWZvcm1hdHRlZAorcGFydGl0aW9uLCB3aGljaCBleGFtaW5lcyB3aGV0aGVyIHRoZSBmaWxlc3lzdGVtIG1ldGFkYXRhIGFuZCB1c2VyLW1hZGUgZGF0YQorYXJlIGNyb3NzLXJlZmVyZW5jZWQgY29ycmVjdGx5IG9yIG5vdC4KK05vdGUgdGhhdCwgaW5pdGlhbCB2ZXJzaW9uIG9mIHRoZSB0b29sIGRvZXMgbm90IGZpeCBhbnkgaW5jb25zaXN0ZW5jeS4KKworVGhlIG9wdGlvbnMgY29uc2lzdCBvZjoKKyAgLWQgZGVidWcgbGV2ZWwgW2RlZmF1bHQ6MF0KKworZHVtcC5mMmZzCistLS0tLS0tLS0KK1RoZSBkdW1wLmYyZnMgc2hvd3MgdGhlIGluZm9ybWF0aW9uIG9mIHNwZWNpZmljIGlub2RlIGFuZCBkdW1wcyBTU0EgYW5kIFNJVCB0bworZmlsZS4gRWFjaCBmaWxlIGlzIGR1bXBfc3NhIGFuZCBkdW1wX3NpdC4KKworVGhlIGR1bXAuZjJmcyBpcyB1c2VkIHRvIGRlYnVnIG9uLWRpc2sgZGF0YSBzdHJ1Y3R1cmVzIG9mIHRoZSBmMmZzIGZpbGVzeXN0ZW0uCitJdCBzaG93cyBvbi1kaXNrIGlub2RlIGluZm9ybWF0aW9uIHJlY29uaXplZCBieSBhIGdpdmVuIGlub2RlIG51bWJlciwgYW5kIGlzCithYmxlIHRvIGR1bXAgYWxsIHRoZSBTU0EgYW5kIFNJVCBlbnRyaWVzIGludG8gcHJlZGVmaW5lZCBmaWxlcywgLi9kdW1wX3NzYSBhbmQKKy4vZHVtcF9zaXQgcmVzcGVjdGl2ZWx5LgorCitUaGUgb3B0aW9ucyBjb25zaXN0IG9mOgorICAtZCBkZWJ1ZyBsZXZlbCBbZGVmYXVsdDowXQorICAtaSBpbm9kZSBubyAoaGV4KQorICAtcyBbU0lUIGR1bXAgc2Vnbm8gZnJvbSAjMX4jMiAoZGVjaW1hbCksIGZvciBhbGwgMH4tMV0KKyAgLWEgW1NTQSBkdW1wIHNlZ25vIGZyb20gIzF+IzIgKGRlY2ltYWwpLCBmb3IgYWxsIDB+LTFdCisKK0V4YW1wbGVzOgorIyBkdW1wLmYyZnMgLWkgW2lub10gL2Rldi9zZHgKKyMgZHVtcC5mMmZzIC1zIDB+LTEgL2Rldi9zZHggKFNJVCBkdW1wKQorIyBkdW1wLmYyZnMgLWEgMH4tMSAvZGV2L3NkeCAoU1NBIGR1bXApCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitERVNJR04KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK09uLWRpc2sgTGF5b3V0CistLS0tLS0tLS0tLS0tLQorCitGMkZTIGRpdmlkZXMgdGhlIHdob2xlIHZvbHVtZSBpbnRvIGEgbnVtYmVyIG9mIHNlZ21lbnRzLCBlYWNoIG9mIHdoaWNoIGlzIGZpeGVkCit0byAyTUIgaW4gc2l6ZS4gQSBzZWN0aW9uIGlzIGNvbXBvc2VkIG9mIGNvbnNlY3V0aXZlIHNlZ21lbnRzLCBhbmQgYSB6b25lCitjb25zaXN0cyBvZiBhIHNldCBvZiBzZWN0aW9ucy4gQnkgZGVmYXVsdCwgc2VjdGlvbiBhbmQgem9uZSBzaXplcyBhcmUgc2V0IHRvIG9uZQorc2VnbWVudCBzaXplIGlkZW50aWNhbGx5LCBidXQgdXNlcnMgY2FuIGVhc2lseSBtb2RpZnkgdGhlIHNpemVzIGJ5IG1rZnMuCisKK0YyRlMgc3BsaXRzIHRoZSBlbnRpcmUgdm9sdW1lIGludG8gc2l4IGFyZWFzLCBhbmQgYWxsIHRoZSBhcmVhcyBleGNlcHQgc3VwZXJibG9jaworY29uc2lzdHMgb2YgbXVsdGlwbGUgc2VnbWVudHMgYXMgZGVzY3JpYmVkIGJlbG93LgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduIHdpdGggdGhlIHpvbmUgc2l6ZSA8LXwKKyAgICAgICAgICAgICAgICAgfC0+IGFsaWduIHdpdGggdGhlIHNlZ21lbnQgc2l6ZQorICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisgICAgfCAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgU2VnbWVudCAgIHwgICAgTm9kZSAgICAgfCAgIFNlZ21lbnQgIHwgICAgICB8CisgICAgfCBTdXBlcmJsb2NrIHwgQ2hlY2twb2ludCB8ICAgIEluZm8uICAgIHwgICBBZGRyZXNzICAgfCAgIFN1bW1hcnkgIHwgTWFpbiB8CisgICAgfCAgICAoU0IpICAgIHwgICAoQ1ApICAgICB8IFRhYmxlIChTSVQpIHwgVGFibGUgKE5BVCkgfCBBcmVhIChTU0EpIHwgICAgICB8CisgICAgfF9fX19fX19fX19fX3xfX19fXzJfX19fX198X19fX19fTl9fX19fX3xfX19fX19OX19fX19ffF9fX19fX05fX19fX3xfX05fX198CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gICAgICAuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8X1NlZ21lbnRffF8uLi5ffF9TZWdtZW50X3xfLi4uX3xfU2VnbWVudF98CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICAgICAgICAgICAuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuX19fX19fX19fLl9fX19fX19fXworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfF9zZWN0aW9uX3xfXy4uLl9ffF8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gICAgICAgICAgICAuCisJCSAgICAgICAgICAgICAgICAgICAgLl9fX19fX19fLgorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8X196b25lX198CisKKy0gU3VwZXJibG9jayAoU0IpCisgOiBJdCBpcyBsb2NhdGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhcnRpdGlvbiwgYW5kIHRoZXJlIGV4aXN0IHR3byBjb3BpZXMKKyAgIHRvIGF2b2lkIGZpbGUgc3lzdGVtIGNyYXNoLiBJdCBjb250YWlucyBiYXNpYyBwYXJ0aXRpb24gaW5mb3JtYXRpb24gYW5kIHNvbWUKKyAgIGRlZmF1bHQgcGFyYW1ldGVycyBvZiBmMmZzLgorCistIENoZWNrcG9pbnQgKENQKQorIDogSXQgY29udGFpbnMgZmlsZSBzeXN0ZW0gaW5mb3JtYXRpb24sIGJpdG1hcHMgZm9yIHZhbGlkIE5BVC9TSVQgc2V0cywgb3JwaGFuCisgICBpbm9kZSBsaXN0cywgYW5kIHN1bW1hcnkgZW50cmllcyBvZiBjdXJyZW50IGFjdGl2ZSBzZWdtZW50cy4KKworLSBTZWdtZW50IEluZm9ybWF0aW9uIFRhYmxlIChTSVQpCisgOiBJdCBjb250YWlucyBzZWdtZW50IGluZm9ybWF0aW9uIHN1Y2ggYXMgdmFsaWQgYmxvY2sgY291bnQgYW5kIGJpdG1hcCBmb3IgdGhlCisgICB2YWxpZGl0eSBvZiBhbGwgdGhlIGJsb2Nrcy4KKworLSBOb2RlIEFkZHJlc3MgVGFibGUgKE5BVCkKKyA6IEl0IGlzIGNvbXBvc2VkIG9mIGEgYmxvY2sgYWRkcmVzcyB0YWJsZSBmb3IgYWxsIHRoZSBub2RlIGJsb2NrcyBzdG9yZWQgaW4KKyAgIE1haW4gYXJlYS4KKworLSBTZWdtZW50IFN1bW1hcnkgQXJlYSAoU1NBKQorIDogSXQgY29udGFpbnMgc3VtbWFyeSBlbnRyaWVzIHdoaWNoIGNvbnRhaW5zIHRoZSBvd25lciBpbmZvcm1hdGlvbiBvZiBhbGwgdGhlCisgICBkYXRhIGFuZCBub2RlIGJsb2NrcyBzdG9yZWQgaW4gTWFpbiBhcmVhLgorCistIE1haW4gQXJlYQorIDogSXQgY29udGFpbnMgZmlsZSBhbmQgZGlyZWN0b3J5IGRhdGEgaW5jbHVkaW5nIHRoZWlyIGluZGljZXMuCisKK0luIG9yZGVyIHRvIGF2b2lkIG1pc2FsaWdubWVudCBiZXR3ZWVuIGZpbGUgc3lzdGVtIGFuZCBmbGFzaC1iYXNlZCBzdG9yYWdlLCBGMkZTCithbGlnbnMgdGhlIHN0YXJ0IGJsb2NrIGFkZHJlc3Mgb2YgQ1Agd2l0aCB0aGUgc2VnbWVudCBzaXplLiBBbHNvLCBpdCBhbGlnbnMgdGhlCitzdGFydCBibG9jayBhZGRyZXNzIG9mIE1haW4gYXJlYSB3aXRoIHRoZSB6b25lIHNpemUgYnkgcmVzZXJ2aW5nIHNvbWUgc2VnbWVudHMKK2luIFNTQSBhcmVhLgorCitSZWZlcmVuY2UgdGhlIGZvbGxvd2luZyBzdXJ2ZXkgZm9yIGFkZGl0aW9uYWwgdGVjaG5pY2FsIGRldGFpbHMuCitodHRwczovL3dpa2kubGluYXJvLm9yZy9Xb3JraW5nR3JvdXBzL0tlcm5lbC9Qcm9qZWN0cy9GbGFzaENhcmRTdXJ2ZXkKKworRmlsZSBTeXN0ZW0gTWV0YWRhdGEgU3RydWN0dXJlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRjJGUyBhZG9wdHMgdGhlIGNoZWNrcG9pbnRpbmcgc2NoZW1lIHRvIG1haW50YWluIGZpbGUgc3lzdGVtIGNvbnNpc3RlbmN5LiBBdAorbW91bnQgdGltZSwgRjJGUyBmaXJzdCB0cmllcyB0byBmaW5kIHRoZSBsYXN0IHZhbGlkIGNoZWNrcG9pbnQgZGF0YSBieSBzY2FubmluZworQ1AgYXJlYS4gSW4gb3JkZXIgdG8gcmVkdWNlIHRoZSBzY2FubmluZyB0aW1lLCBGMkZTIHVzZXMgb25seSB0d28gY29waWVzIG9mIENQLgorT25lIG9mIHRoZW0gYWx3YXlzIGluZGljYXRlcyB0aGUgbGFzdCB2YWxpZCBkYXRhLCB3aGljaCBpcyBjYWxsZWQgYXMgc2hhZG93IGNvcHkKK21lY2hhbmlzbS4gSW4gYWRkaXRpb24gdG8gQ1AsIE5BVCBhbmQgU0lUIGFsc28gYWRvcHQgdGhlIHNoYWRvdyBjb3B5IG1lY2hhbmlzbS4KKworRm9yIGZpbGUgc3lzdGVtIGNvbnNpc3RlbmN5LCBlYWNoIENQIHBvaW50cyB0byB3aGljaCBOQVQgYW5kIFNJVCBjb3BpZXMgYXJlCit2YWxpZCwgYXMgc2hvd24gYXMgYmVsb3cuCisKKyAgKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKworICB8ICAgQ1AgICB8ICAgIFNJVCAgIHwgICBOQVQgICB8CisgICstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSsKKyAgLiAgICAgICAgIC4gICAgICAgICAgLiAgICAgICAgICAuCisgIC4gICAgICAgICAgICAuICAgICAgICAgICAgICAuICAgICAgICAgICAgICAuCisgIC4gICAgICAgICAgICAgICAuICAgICAgICAgICAgICAgICAuICAgICAgICAgICAgICAgICAuCisgICstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rCisgIHwgQ1AgIzAgfCBDUCAjMSB8IFNJVCAjMCB8IFNJVCAjMSB8IE5BVCAjMCB8IE5BVCAjMSB8CisgICstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rCisgICAgIHwgICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nCisKK0luZGV4IFN0cnVjdHVyZQorLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBrZXkgZGF0YSBzdHJ1Y3R1cmUgdG8gbWFuYWdlIHRoZSBkYXRhIGxvY2F0aW9ucyBpcyBhICJub2RlIi4gU2ltaWxhciB0bwordHJhZGl0aW9uYWwgZmlsZSBzdHJ1Y3R1cmVzLCBGMkZTIGhhcyB0aHJlZSB0eXBlcyBvZiBub2RlOiBpbm9kZSwgZGlyZWN0IG5vZGUsCitpbmRpcmVjdCBub2RlLiBGMkZTIGFzc2lnbnMgNEtCIHRvIGFuIGlub2RlIGJsb2NrIHdoaWNoIGNvbnRhaW5zIDkyMyBkYXRhIGJsb2NrCitpbmRpY2VzLCB0d28gZGlyZWN0IG5vZGUgcG9pbnRlcnMsIHR3byBpbmRpcmVjdCBub2RlIHBvaW50ZXJzLCBhbmQgb25lIGRvdWJsZQoraW5kaXJlY3Qgbm9kZSBwb2ludGVyIGFzIGRlc2NyaWJlZCBiZWxvdy4gT25lIGRpcmVjdCBub2RlIGJsb2NrIGNvbnRhaW5zIDEwMTgKK2RhdGEgYmxvY2tzLCBhbmQgb25lIGluZGlyZWN0IG5vZGUgYmxvY2sgY29udGFpbnMgYWxzbyAxMDE4IG5vZGUgYmxvY2tzLiBUaHVzLAorb25lIGlub2RlIGJsb2NrIChpLmUuLCBhIGZpbGUpIGNvdmVyczoKKworICA0S0IgKiAoOTIzICsgMiAqIDEwMTggKyAyICogMTAxOCAqIDEwMTggKyAxMDE4ICogMTAxOCAqIDEwMTgpIDo9IDMuOTRUQi4KKworICAgSW5vZGUgYmxvY2sgKDRLQikKKyAgICAgfC0gZGF0YSAoOTIzKQorICAgICB8LSBkaXJlY3Qgbm9kZSAoMikKKyAgICAgfCAgICAgICAgICBgLSBkYXRhICgxMDE4KQorICAgICB8LSBpbmRpcmVjdCBub2RlICgyKQorICAgICB8ICAgICAgICAgICAgYC0gZGlyZWN0IG5vZGUgKDEwMTgpCisgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIGAtIGRhdGEgKDEwMTgpCisgICAgIGAtIGRvdWJsZSBpbmRpcmVjdCBub2RlICgxKQorICAgICAgICAgICAgICAgICAgICAgICAgIGAtIGluZGlyZWN0IG5vZGUgKDEwMTgpCisJCQkgICAgICAgICAgICAgIGAtIGRpcmVjdCBub2RlICgxMDE4KQorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYC0gZGF0YSAoMTAxOCkKKworTm90ZSB0aGF0LCBhbGwgdGhlIG5vZGUgYmxvY2tzIGFyZSBtYXBwZWQgYnkgTkFUIHdoaWNoIG1lYW5zIHRoZSBsb2NhdGlvbiBvZgorZWFjaCBub2RlIGlzIHRyYW5zbGF0ZWQgYnkgdGhlIE5BVCB0YWJsZS4gSW4gdGhlIGNvbnNpZGVyYXRpb24gb2YgdGhlIHdhbmRlcmluZwordHJlZSBwcm9ibGVtLCBGMkZTIGlzIGFibGUgdG8gY3V0IG9mZiB0aGUgcHJvcGFnYXRpb24gb2Ygbm9kZSB1cGRhdGVzIGNhdXNlZCBieQorbGVhZiBkYXRhIHdyaXRlcy4KKworRGlyZWN0b3J5IFN0cnVjdHVyZQorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBIGRpcmVjdG9yeSBlbnRyeSBvY2N1cGllcyAxMSBieXRlcywgd2hpY2ggY29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzLgorCistIGhhc2gJCWhhc2ggdmFsdWUgb2YgdGhlIGZpbGUgbmFtZQorLSBpbm8JCWlub2RlIG51bWJlcgorLSBsZW4JCXRoZSBsZW5ndGggb2YgZmlsZSBuYW1lCistIHR5cGUJCWZpbGUgdHlwZSBzdWNoIGFzIGRpcmVjdG9yeSwgc3ltbGluaywgZXRjCisKK0EgZGVudHJ5IGJsb2NrIGNvbnNpc3RzIG9mIDIxNCBkZW50cnkgc2xvdHMgYW5kIGZpbGUgbmFtZXMuIFRoZXJlaW4gYSBiaXRtYXAgaXMKK3VzZWQgdG8gcmVwcmVzZW50IHdoZXRoZXIgZWFjaCBkZW50cnkgaXMgdmFsaWQgb3Igbm90LiBBIGRlbnRyeSBibG9jayBvY2N1cGllcworNEtCIHdpdGggdGhlIGZvbGxvd2luZyBjb21wb3NpdGlvbi4KKworICBEZW50cnkgQmxvY2soNCBLKSA9IGJpdG1hcCAoMjcgYnl0ZXMpICsgcmVzZXJ2ZWQgKDMgYnl0ZXMpICsKKwkgICAgICAgICAgICAgIGRlbnRyaWVzKDExICogMjE0IGJ5dGVzKSArIGZpbGUgbmFtZSAoOCAqIDIxNCBieXRlcykKKworICAgICAgICAgICAgICAgICAgICAgICAgIFtCdWNrZXRdCisgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgIHxkZW50cnkgYmxvY2sgMSB8IGRlbnRyeSBibG9jayAyIHwKKyAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgLiAgICAgICAgICAgICAgIC4KKyAgICAgICAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuCisgIC4gICAgICAgW0RlbnRyeSBCbG9jayBTdHJ1Y3R1cmU6IDRLQl0gICAgICAgLgorICArLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKKyAgfCBiaXRtYXAgfCByZXNlcnZlZCB8IGRlbnRyaWVzIHwgZmlsZSBuYW1lcyB8CisgICstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKworICBbRGVudHJ5IEJsb2NrOiA0S0JdIC4gICAuCisJCSAuICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgLiAgICAgICAgICAgICAgICAgICAgICAgICAgLgorICAgICAgICAgICAgKy0tLS0tLSstLS0tLS0rLS0tLS0rLS0tLS0tKworICAgICAgICAgICAgfCBoYXNoIHwgaW5vICB8IGxlbiB8IHR5cGUgfAorICAgICAgICAgICAgKy0tLS0tLSstLS0tLS0rLS0tLS0rLS0tLS0tKworICAgICAgICAgICAgW0RlbnRyeSBTdHJ1Y3R1cmU6IDExIGJ5dGVzXQorCitGMkZTIGltcGxlbWVudHMgbXVsdGktbGV2ZWwgaGFzaCB0YWJsZXMgZm9yIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuIEVhY2ggbGV2ZWwgaGFzCithIGhhc2ggdGFibGUgd2l0aCBkZWRpY2F0ZWQgbnVtYmVyIG9mIGhhc2ggYnVja2V0cyBhcyBzaG93biBiZWxvdy4gTm90ZSB0aGF0CisiQSgyQikiIG1lYW5zIGEgYnVja2V0IGluY2x1ZGVzIDIgZGF0YSBibG9ja3MuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0EgOiBidWNrZXQKK0IgOiBibG9jaworTiA6IE1BWF9ESVJfSEFTSF9ERVBUSAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitsZXZlbCAjMCAgIHwgQSgyQikKKyAgICAgICAgICAgfAorbGV2ZWwgIzEgICB8IEEoMkIpIC0gQSgyQikKKyAgICAgICAgICAgfAorbGV2ZWwgIzIgICB8IEEoMkIpIC0gQSgyQikgLSBBKDJCKSAtIEEoMkIpCisgICAgIC4gICAgIHwgICAuICAgICAgIC4gICAgICAgLiAgICAgICAuCitsZXZlbCAjTi8yIHwgQSgyQikgLSBBKDJCKSAtIEEoMkIpIC0gQSgyQikgLSBBKDJCKSAtIC4uLiAtIEEoMkIpCisgICAgIC4gICAgIHwgICAuICAgICAgIC4gICAgICAgLiAgICAgICAuCitsZXZlbCAjTiAgIHwgQSg0QikgLSBBKDRCKSAtIEEoNEIpIC0gQSg0QikgLSBBKDRCKSAtIC4uLiAtIEEoNEIpCisKK1RoZSBudW1iZXIgb2YgYmxvY2tzIGFuZCBidWNrZXRzIGFyZSBkZXRlcm1pbmVkIGJ5LAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLC0gMiwgaWYgbiA8IE1BWF9ESVJfSEFTSF9ERVBUSCAvIDIsCisgICMgb2YgYmxvY2tzIGluIGxldmVsICNuID0gfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAtIDQsIE90aGVyd2lzZQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwtIDJeKG4gKyBkaXJfbGV2ZWwpLAorCQkJICAgICB8ICAgICAgICBpZiBuICsgZGlyX2xldmVsIDwgTUFYX0RJUl9IQVNIX0RFUFRIIC8gMiwKKyAgIyBvZiBidWNrZXRzIGluIGxldmVsICNuID0gfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgLSAyXigoTUFYX0RJUl9IQVNIX0RFUFRIIC8gMikgLSAxKSwKKwkJCSAgICAgICAgICAgICAgT3RoZXJ3aXNlCisKK1doZW4gRjJGUyBmaW5kcyBhIGZpbGUgbmFtZSBpbiBhIGRpcmVjdG9yeSwgYXQgZmlyc3QgYSBoYXNoIHZhbHVlIG9mIHRoZSBmaWxlCituYW1lIGlzIGNhbGN1bGF0ZWQuIFRoZW4sIEYyRlMgc2NhbnMgdGhlIGhhc2ggdGFibGUgaW4gbGV2ZWwgIzAgdG8gZmluZCB0aGUKK2RlbnRyeSBjb25zaXN0aW5nIG9mIHRoZSBmaWxlIG5hbWUgYW5kIGl0cyBpbm9kZSBudW1iZXIuIElmIG5vdCBmb3VuZCwgRjJGUworc2NhbnMgdGhlIG5leHQgaGFzaCB0YWJsZSBpbiBsZXZlbCAjMS4gSW4gdGhpcyB3YXksIEYyRlMgc2NhbnMgaGFzaCB0YWJsZXMgaW4KK2VhY2ggbGV2ZWxzIGluY3JlbWVudGFsbHkgZnJvbSAxIHRvIE4uIEluIGVhY2ggbGV2ZWxzIEYyRlMgbmVlZHMgdG8gc2NhbiBvbmx5CitvbmUgYnVja2V0IGRldGVybWluZWQgYnkgdGhlIGZvbGxvd2luZyBlcXVhdGlvbiwgd2hpY2ggc2hvd3MgTyhsb2coIyBvZiBmaWxlcykpCitjb21wbGV4aXR5LgorCisgIGJ1Y2tldCBudW1iZXIgdG8gc2NhbiBpbiBsZXZlbCAjbiA9IChoYXNoIHZhbHVlKSAlICgjIG9mIGJ1Y2tldHMgaW4gbGV2ZWwgI24pCisKK0luIHRoZSBjYXNlIG9mIGZpbGUgY3JlYXRpb24sIEYyRlMgZmluZHMgZW1wdHkgY29uc2VjdXRpdmUgc2xvdHMgdGhhdCBjb3ZlciB0aGUKK2ZpbGUgbmFtZS4gRjJGUyBzZWFyY2hlcyB0aGUgZW1wdHkgc2xvdHMgaW4gdGhlIGhhc2ggdGFibGVzIG9mIHdob2xlIGxldmVscyBmcm9tCisxIHRvIE4gaW4gdGhlIHNhbWUgd2F5IGFzIHRoZSBsb29rdXAgb3BlcmF0aW9uLgorCitUaGUgZm9sbG93aW5nIGZpZ3VyZSBzaG93cyBhbiBleGFtcGxlIG9mIHR3byBjYXNlcyBob2xkaW5nIGNoaWxkcmVuLgorICAgICAgIC0tLS0tLS0tLS0tLS0tPiBEaXIgPC0tLS0tLS0tLS0tLS0tCisgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICBjaGlsZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQKKworICAgIGNoaWxkIC0gY2hpbGQgICAgICAgICAgICAgICAgICAgICBbaG9sZV0gLSBjaGlsZAorCisgICAgY2hpbGQgLSBjaGlsZCAtIGNoaWxkICAgICAgICAgICAgIFtob2xlXSAtIFtob2xlXSAtIGNoaWxkCisKKyAgIENhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICBDYXNlIDI6CisgICBOdW1iZXIgb2YgY2hpbGRyZW4gPSA2LCAgICAgICAgICAgTnVtYmVyIG9mIGNoaWxkcmVuID0gMywKKyAgIEZpbGUgc2l6ZSA9IDcgICAgICAgICAgICAgICAgICAgICBGaWxlIHNpemUgPSA3CisKK0RlZmF1bHQgQmxvY2sgQWxsb2NhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0F0IHJ1bnRpbWUsIEYyRlMgbWFuYWdlcyBzaXggYWN0aXZlIGxvZ3MgaW5zaWRlICJNYWluIiBhcmVhOiBIb3QvV2FybS9Db2xkIG5vZGUKK2FuZCBIb3QvV2FybS9Db2xkIGRhdGEuCisKKy0gSG90IG5vZGUJY29udGFpbnMgZGlyZWN0IG5vZGUgYmxvY2tzIG9mIGRpcmVjdG9yaWVzLgorLSBXYXJtIG5vZGUJY29udGFpbnMgZGlyZWN0IG5vZGUgYmxvY2tzIGV4Y2VwdCBob3Qgbm9kZSBibG9ja3MuCistIENvbGQgbm9kZQljb250YWlucyBpbmRpcmVjdCBub2RlIGJsb2NrcworLSBIb3QgZGF0YQljb250YWlucyBkZW50cnkgYmxvY2tzCistIFdhcm0gZGF0YQljb250YWlucyBkYXRhIGJsb2NrcyBleGNlcHQgaG90IGFuZCBjb2xkIGRhdGEgYmxvY2tzCistIENvbGQgZGF0YQljb250YWlucyBtdWx0aW1lZGlhIGRhdGEgb3IgbWlncmF0ZWQgZGF0YSBibG9ja3MKKworTEZTIGhhcyB0d28gc2NoZW1lcyBmb3IgZnJlZSBzcGFjZSBtYW5hZ2VtZW50OiB0aHJlYWRlZCBsb2cgYW5kIGNvcHktYW5kLWNvbXBhYy0KK3Rpb24uIFRoZSBjb3B5LWFuZC1jb21wYWN0aW9uIHNjaGVtZSB3aGljaCBpcyBrbm93biBhcyBjbGVhbmluZywgaXMgd2VsbC1zdWl0ZWQKK2ZvciBkZXZpY2VzIHNob3dpbmcgdmVyeSBnb29kIHNlcXVlbnRpYWwgd3JpdGUgcGVyZm9ybWFuY2UsIHNpbmNlIGZyZWUgc2VnbWVudHMKK2FyZSBzZXJ2ZWQgYWxsIHRoZSB0aW1lIGZvciB3cml0aW5nIG5ldyBkYXRhLiBIb3dldmVyLCBpdCBzdWZmZXJzIGZyb20gY2xlYW5pbmcKK292ZXJoZWFkIHVuZGVyIGhpZ2ggdXRpbGl6YXRpb24uIENvbnRyYXJpbHksIHRoZSB0aHJlYWRlZCBsb2cgc2NoZW1lIHN1ZmZlcnMKK2Zyb20gcmFuZG9tIHdyaXRlcywgYnV0IG5vIGNsZWFuaW5nIHByb2Nlc3MgaXMgbmVlZGVkLiBGMkZTIGFkb3B0cyBhIGh5YnJpZAorc2NoZW1lIHdoZXJlIHRoZSBjb3B5LWFuZC1jb21wYWN0aW9uIHNjaGVtZSBpcyBhZG9wdGVkIGJ5IGRlZmF1bHQsIGJ1dCB0aGUKK3BvbGljeSBpcyBkeW5hbWljYWxseSBjaGFuZ2VkIHRvIHRoZSB0aHJlYWRlZCBsb2cgc2NoZW1lIGFjY29yZGluZyB0byB0aGUgZmlsZQorc3lzdGVtIHN0YXR1cy4KKworSW4gb3JkZXIgdG8gYWxpZ24gRjJGUyB3aXRoIHVuZGVybHlpbmcgZmxhc2gtYmFzZWQgc3RvcmFnZSwgRjJGUyBhbGxvY2F0ZXMgYQorc2VnbWVudCBpbiBhIHVuaXQgb2Ygc2VjdGlvbi4gRjJGUyBleHBlY3RzIHRoYXQgdGhlIHNlY3Rpb24gc2l6ZSB3b3VsZCBiZSB0aGUKK3NhbWUgYXMgdGhlIHVuaXQgc2l6ZSBvZiBnYXJiYWdlIGNvbGxlY3Rpb24gaW4gRlRMLiBGdXJ0aGVybW9yZSwgd2l0aCByZXNwZWN0Cit0byB0aGUgbWFwcGluZyBncmFudWxhcml0eSBpbiBGVEwsIEYyRlMgYWxsb2NhdGVzIGVhY2ggc2VjdGlvbiBvZiB0aGUgYWN0aXZlCitsb2dzIGZyb20gZGlmZmVyZW50IHpvbmVzIGFzIG11Y2ggYXMgcG9zc2libGUsIHNpbmNlIEZUTCBjYW4gd3JpdGUgdGhlIGRhdGEgaW4KK3RoZSBhY3RpdmUgbG9ncyBpbnRvIG9uZSBhbGxvY2F0aW9uIHVuaXQgYWNjb3JkaW5nIHRvIGl0cyBtYXBwaW5nIGdyYW51bGFyaXR5LgorCitDbGVhbmluZyBwcm9jZXNzCistLS0tLS0tLS0tLS0tLS0tCisKK0YyRlMgZG9lcyBjbGVhbmluZyBib3RoIG9uIGRlbWFuZCBhbmQgaW4gdGhlIGJhY2tncm91bmQuIE9uLWRlbWFuZCBjbGVhbmluZyBpcwordHJpZ2dlcmVkIHdoZW4gdGhlcmUgYXJlIG5vdCBlbm91Z2ggZnJlZSBzZWdtZW50cyB0byBzZXJ2ZSBWRlMgY2FsbHMuIEJhY2tncm91bmQKK2NsZWFuZXIgaXMgb3BlcmF0ZWQgYnkgYSBrZXJuZWwgdGhyZWFkLCBhbmQgdHJpZ2dlcnMgdGhlIGNsZWFuaW5nIGpvYiB3aGVuIHRoZQorc3lzdGVtIGlzIGlkbGUuCisKK0YyRlMgc3VwcG9ydHMgdHdvIHZpY3RpbSBzZWxlY3Rpb24gcG9saWNpZXM6IGdyZWVkeSBhbmQgY29zdC1iZW5lZml0IGFsZ29yaXRobXMuCitJbiB0aGUgZ3JlZWR5IGFsZ29yaXRobSwgRjJGUyBzZWxlY3RzIGEgdmljdGltIHNlZ21lbnQgaGF2aW5nIHRoZSBzbWFsbGVzdCBudW1iZXIKK29mIHZhbGlkIGJsb2Nrcy4gSW4gdGhlIGNvc3QtYmVuZWZpdCBhbGdvcml0aG0sIEYyRlMgc2VsZWN0cyBhIHZpY3RpbSBzZWdtZW50CithY2NvcmRpbmcgdG8gdGhlIHNlZ21lbnQgYWdlIGFuZCB0aGUgbnVtYmVyIG9mIHZhbGlkIGJsb2NrcyBpbiBvcmRlciB0byBhZGRyZXNzCitsb2cgYmxvY2sgdGhyYXNoaW5nIHByb2JsZW0gaW4gdGhlIGdyZWVkeSBhbGdvcml0aG0uIEYyRlMgYWRvcHRzIHRoZSBncmVlZHkKK2FsZ29yaXRobSBmb3Igb24tZGVtYW5kIGNsZWFuZXIsIHdoaWxlIGJhY2tncm91bmQgY2xlYW5lciBhZG9wdHMgY29zdC1iZW5lZml0CithbGdvcml0aG0uCisKK0luIG9yZGVyIHRvIGlkZW50aWZ5IHdoZXRoZXIgdGhlIGRhdGEgaW4gdGhlIHZpY3RpbSBzZWdtZW50IGFyZSB2YWxpZCBvciBub3QsCitGMkZTIG1hbmFnZXMgYSBiaXRtYXAuIEVhY2ggYml0IHJlcHJlc2VudHMgdGhlIHZhbGlkaXR5IG9mIGEgYmxvY2ssIGFuZCB0aGUKK2JpdG1hcCBpcyBjb21wb3NlZCBvZiBhIGJpdCBzdHJlYW0gY292ZXJpbmcgd2hvbGUgYmxvY2tzIGluIG1haW4gYXJlYS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZmllbWFwLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZmllbWFwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmQ5Yzk5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9maWVtYXAudHh0CkBAIC0wLDAgKzEsMjI5IEBACis9PT09PT09PT09PT0KK0ZpZW1hcCBJb2N0bAorPT09PT09PT09PT09CisKK1RoZSBmaWVtYXAgaW9jdGwgaXMgYW4gZWZmaWNpZW50IG1ldGhvZCBmb3IgdXNlcnNwYWNlIHRvIGdldCBmaWxlCitleHRlbnQgbWFwcGluZ3MuIEluc3RlYWQgb2YgYmxvY2stYnktYmxvY2sgbWFwcGluZyAoc3VjaCBhcyBibWFwKSwgZmllbWFwCityZXR1cm5zIGEgbGlzdCBvZiBleHRlbnRzLgorCisKK1JlcXVlc3QgQmFzaWNzCistLS0tLS0tLS0tLS0tLQorCitBIGZpZW1hcCByZXF1ZXN0IGlzIGVuY29kZWQgd2l0aGluIHN0cnVjdCBmaWVtYXA6CisKK3N0cnVjdCBmaWVtYXAgeworCV9fdTY0CWZtX3N0YXJ0OwkgLyogbG9naWNhbCBvZmZzZXQgKGluY2x1c2l2ZSkgYXQKKwkJCQkgICogd2hpY2ggdG8gc3RhcnQgbWFwcGluZyAoaW4pICovCisJX191NjQJZm1fbGVuZ3RoOwkgLyogbG9naWNhbCBsZW5ndGggb2YgbWFwcGluZyB3aGljaAorCQkJCSAgKiB1c2Vyc3BhY2UgY2FyZXMgYWJvdXQgKGluKSAqLworCV9fdTMyCWZtX2ZsYWdzOwkgLyogRklFTUFQX0ZMQUdfKiBmbGFncyBmb3IgcmVxdWVzdCAoaW4vb3V0KSAqLworCV9fdTMyCWZtX21hcHBlZF9leHRlbnRzOyAvKiBudW1iZXIgb2YgZXh0ZW50cyB0aGF0IHdlcmUKKwkJCQkgICAgKiBtYXBwZWQgKG91dCkgKi8KKwlfX3UzMglmbV9leHRlbnRfY291bnQ7IC8qIHNpemUgb2YgZm1fZXh0ZW50cyBhcnJheSAoaW4pICovCisJX191MzIJZm1fcmVzZXJ2ZWQ7CisJc3RydWN0IGZpZW1hcF9leHRlbnQgZm1fZXh0ZW50c1swXTsgLyogYXJyYXkgb2YgbWFwcGVkIGV4dGVudHMgKG91dCkgKi8KK307CisKKworZm1fc3RhcnQsIGFuZCBmbV9sZW5ndGggc3BlY2lmeSB0aGUgbG9naWNhbCByYW5nZSB3aXRoaW4gdGhlIGZpbGUKK3doaWNoIHRoZSBwcm9jZXNzIHdvdWxkIGxpa2UgbWFwcGluZ3MgZm9yLiBFeHRlbnRzIHJldHVybmVkIG1pcnJvcgordGhvc2Ugb24gZGlzayAtIHRoYXQgaXMsIHRoZSBsb2dpY2FsIG9mZnNldCBvZiB0aGUgMXN0IHJldHVybmVkIGV4dGVudAorbWF5IHN0YXJ0IGJlZm9yZSBmbV9zdGFydCwgYW5kIHRoZSByYW5nZSBjb3ZlcmVkIGJ5IHRoZSBsYXN0IHJldHVybmVkCitleHRlbnQgbWF5IGVuZCBhZnRlciBmbV9sZW5ndGguIEFsbCBvZmZzZXRzIGFuZCBsZW5ndGhzIGFyZSBpbiBieXRlcy4KKworQ2VydGFpbiBmbGFncyB0byBtb2RpZnkgdGhlIHdheSBpbiB3aGljaCBtYXBwaW5ncyBhcmUgbG9va2VkIHVwIGNhbiBiZQorc2V0IGluIGZtX2ZsYWdzLiBJZiB0aGUga2VybmVsIGRvZXNuJ3QgdW5kZXJzdGFuZCBzb21lIHBhcnRpY3VsYXIKK2ZsYWdzLCBpdCB3aWxsIHJldHVybiBFQkFEUiBhbmQgdGhlIGNvbnRlbnRzIG9mIGZtX2ZsYWdzIHdpbGwgY29udGFpbgordGhlIHNldCBvZiBmbGFncyB3aGljaCBjYXVzZWQgdGhlIGVycm9yLiBJZiB0aGUga2VybmVsIGlzIGNvbXBhdGlibGUKK3dpdGggYWxsIGZsYWdzIHBhc3NlZCwgdGhlIGNvbnRlbnRzIG9mIGZtX2ZsYWdzIHdpbGwgYmUgdW5tb2RpZmllZC4KK0l0IGlzIHVwIHRvIHVzZXJzcGFjZSB0byBkZXRlcm1pbmUgd2hldGhlciByZWplY3Rpb24gb2YgYSBwYXJ0aWN1bGFyCitmbGFnIGlzIGZhdGFsIHRvIGl0cyBvcGVyYXRpb24uIFRoaXMgc2NoZW1lIGlzIGludGVuZGVkIHRvIGFsbG93IHRoZQorZmllbWFwIGludGVyZmFjZSB0byBncm93IGluIHRoZSBmdXR1cmUgYnV0IHdpdGhvdXQgbG9zaW5nCitjb21wYXRpYmlsaXR5IHdpdGggb2xkIHNvZnR3YXJlLgorCitmbV9leHRlbnRfY291bnQgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGZtX2V4dGVudHNbXSBhcnJheQordGhhdCBjYW4gYmUgdXNlZCB0byByZXR1cm4gZXh0ZW50cy4gIElmIGZtX2V4dGVudF9jb3VudCBpcyB6ZXJvLCB0aGVuIHRoZQorZm1fZXh0ZW50c1tdIGFycmF5IGlzIGlnbm9yZWQgKG5vIGV4dGVudHMgd2lsbCBiZSByZXR1cm5lZCksIGFuZCB0aGUKK2ZtX21hcHBlZF9leHRlbnRzIGNvdW50IHdpbGwgaG9sZCB0aGUgbnVtYmVyIG9mIGV4dGVudHMgbmVlZGVkIGluCitmbV9leHRlbnRzW10gdG8gaG9sZCB0aGUgZmlsZSdzIGN1cnJlbnQgbWFwcGluZy4gIE5vdGUgdGhhdCB0aGVyZSBpcworbm90aGluZyB0byBwcmV2ZW50IHRoZSBmaWxlIGZyb20gY2hhbmdpbmcgYmV0d2VlbiBjYWxscyB0byBGSUVNQVAuCisKK1RoZSBmb2xsb3dpbmcgZmxhZ3MgY2FuIGJlIHNldCBpbiBmbV9mbGFnczoKKworKiBGSUVNQVBfRkxBR19TWU5DCitJZiB0aGlzIGZsYWcgaXMgc2V0LCB0aGUga2VybmVsIHdpbGwgc3luYyB0aGUgZmlsZSBiZWZvcmUgbWFwcGluZyBleHRlbnRzLgorCisqIEZJRU1BUF9GTEFHX1hBVFRSCitJZiB0aGlzIGZsYWcgaXMgc2V0LCB0aGUgZXh0ZW50cyByZXR1cm5lZCB3aWxsIGRlc2NyaWJlIHRoZSBpbm9kZXMKK2V4dGVuZGVkIGF0dHJpYnV0ZSBsb29rdXAgdHJlZSwgaW5zdGVhZCBvZiBpdHMgZGF0YSB0cmVlLgorCisKK0V4dGVudCBNYXBwaW5nCistLS0tLS0tLS0tLS0tLQorCitFeHRlbnQgaW5mb3JtYXRpb24gaXMgcmV0dXJuZWQgd2l0aGluIHRoZSBlbWJlZGRlZCBmbV9leHRlbnRzIGFycmF5Cit3aGljaCB1c2Vyc3BhY2UgbXVzdCBhbGxvY2F0ZSBhbG9uZyB3aXRoIHRoZSBmaWVtYXAgc3RydWN0dXJlLiBUaGUKK251bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgZmllbWFwX2V4dGVudHNbXSBhcnJheSBzaG91bGQgYmUgcGFzc2VkIHZpYQorZm1fZXh0ZW50X2NvdW50LiBUaGUgbnVtYmVyIG9mIGV4dGVudHMgbWFwcGVkIGJ5IGtlcm5lbCB3aWxsIGJlCityZXR1cm5lZCB2aWEgZm1fbWFwcGVkX2V4dGVudHMuIElmIHRoZSBudW1iZXIgb2YgZmllbWFwX2V4dGVudHMKK2FsbG9jYXRlZCBpcyBsZXNzIHRoYW4gd291bGQgYmUgcmVxdWlyZWQgdG8gbWFwIHRoZSByZXF1ZXN0ZWQgcmFuZ2UsCit0aGUgbWF4aW11bSBudW1iZXIgb2YgZXh0ZW50cyB0aGF0IGNhbiBiZSBtYXBwZWQgaW4gdGhlIGZtX2V4dGVudFtdCithcnJheSB3aWxsIGJlIHJldHVybmVkIGFuZCBmbV9tYXBwZWRfZXh0ZW50cyB3aWxsIGJlIGVxdWFsIHRvCitmbV9leHRlbnRfY291bnQuIEluIHRoYXQgY2FzZSwgdGhlIGxhc3QgZXh0ZW50IGluIHRoZSBhcnJheSB3aWxsIG5vdAorY29tcGxldGUgdGhlIHJlcXVlc3RlZCByYW5nZSBhbmQgd2lsbCBub3QgaGF2ZSB0aGUgRklFTUFQX0VYVEVOVF9MQVNUCitmbGFnIHNldCAoc2VlIHRoZSBuZXh0IHNlY3Rpb24gb24gZXh0ZW50IGZsYWdzKS4KKworRWFjaCBleHRlbnQgaXMgZGVzY3JpYmVkIGJ5IGEgc2luZ2xlIGZpZW1hcF9leHRlbnQgc3RydWN0dXJlIGFzCityZXR1cm5lZCBpbiBmbV9leHRlbnRzLgorCitzdHJ1Y3QgZmllbWFwX2V4dGVudCB7CisJX191NjQJZmVfbG9naWNhbDsgIC8qIGxvZ2ljYWwgb2Zmc2V0IGluIGJ5dGVzIGZvciB0aGUgc3RhcnQgb2YKKwkJCSAgICAgICogdGhlIGV4dGVudCAqLworCV9fdTY0CWZlX3BoeXNpY2FsOyAvKiBwaHlzaWNhbCBvZmZzZXQgaW4gYnl0ZXMgZm9yIHRoZSBzdGFydAorCQkJICAgICAgKiBvZiB0aGUgZXh0ZW50ICovCisJX191NjQJZmVfbGVuZ3RoOyAgIC8qIGxlbmd0aCBpbiBieXRlcyBmb3IgdGhlIGV4dGVudCAqLworCV9fdTY0CWZlX3Jlc2VydmVkNjRbMl07CisJX191MzIJZmVfZmxhZ3M7ICAgIC8qIEZJRU1BUF9FWFRFTlRfKiBmbGFncyBmb3IgdGhpcyBleHRlbnQgKi8KKwlfX3UzMglmZV9yZXNlcnZlZFszXTsKK307CisKK0FsbCBvZmZzZXRzIGFuZCBsZW5ndGhzIGFyZSBpbiBieXRlcyBhbmQgbWlycm9yIHRob3NlIG9uIGRpc2suICBJdCBpcyB2YWxpZAorZm9yIGFuIGV4dGVudHMgbG9naWNhbCBvZmZzZXQgdG8gc3RhcnQgYmVmb3JlIHRoZSByZXF1ZXN0IG9yIGl0cyBsb2dpY2FsCitsZW5ndGggdG8gZXh0ZW5kIHBhc3QgdGhlIHJlcXVlc3QuICBVbmxlc3MgRklFTUFQX0VYVEVOVF9OT1RfQUxJR05FRCBpcworcmV0dXJuZWQsIGZlX2xvZ2ljYWwsIGZlX3BoeXNpY2FsLCBhbmQgZmVfbGVuZ3RoIHdpbGwgYmUgYWxpZ25lZCB0byB0aGUKK2Jsb2NrIHNpemUgb2YgdGhlIGZpbGUgc3lzdGVtLiAgV2l0aCB0aGUgZXhjZXB0aW9uIG9mIGV4dGVudHMgZmxhZ2dlZCBhcworRklFTUFQX0VYVEVOVF9NRVJHRUQsIGFkamFjZW50IGV4dGVudHMgd2lsbCBub3QgYmUgbWVyZ2VkLgorCitUaGUgZmVfZmxhZ3MgZmllbGQgY29udGFpbnMgZmxhZ3Mgd2hpY2ggZGVzY3JpYmUgdGhlIGV4dGVudCByZXR1cm5lZC4KK0Egc3BlY2lhbCBmbGFnLCBGSUVNQVBfRVhURU5UX0xBU1QgaXMgYWx3YXlzIHNldCBvbiB0aGUgbGFzdCBleHRlbnQgaW4KK3RoZSBmaWxlIHNvIHRoYXQgdGhlIHByb2Nlc3MgbWFraW5nIGZpZW1hcCBjYWxscyBjYW4gZGV0ZXJtaW5lIHdoZW4gbm8KK21vcmUgZXh0ZW50cyBhcmUgYXZhaWxhYmxlLCB3aXRob3V0IGhhdmluZyB0byBjYWxsIHRoZSBpb2N0bCBhZ2Fpbi4KKworU29tZSBmbGFncyBhcmUgaW50ZW50aW9uYWxseSB2YWd1ZSBhbmQgd2lsbCBhbHdheXMgYmUgc2V0IGluIHRoZQorcHJlc2VuY2Ugb2Ygb3RoZXIgbW9yZSBzcGVjaWZpYyBmbGFncy4gVGhpcyB3YXkgYSBwcm9ncmFtIGxvb2tpbmcgZm9yCithIGdlbmVyYWwgcHJvcGVydHkgZG9lcyBub3QgaGF2ZSB0byBrbm93IGFsbCBleGlzdGluZyBhbmQgZnV0dXJlIGZsYWdzCit3aGljaCBpbXBseSB0aGF0IHByb3BlcnR5LgorCitGb3IgZXhhbXBsZSwgaWYgRklFTUFQX0VYVEVOVF9EQVRBX0lOTElORSBvciBGSUVNQVBfRVhURU5UX0RBVEFfVEFJTAorYXJlIHNldCwgRklFTUFQX0VYVEVOVF9OT1RfQUxJR05FRCB3aWxsIGFsc28gYmUgc2V0LiBBIHByb2dyYW0gbG9va2luZworZm9yIGlubGluZSBvciB0YWlsLXBhY2tlZCBkYXRhIGNhbiBrZXkgb24gdGhlIHNwZWNpZmljIGZsYWcuIFNvZnR3YXJlCit3aGljaCBzaW1wbHkgY2FyZXMgbm90IHRvIHRyeSBvcGVyYXRpbmcgb24gbm9uLWFsaWduZWQgZXh0ZW50cworaG93ZXZlciwgY2FuIGp1c3Qga2V5IG9uIEZJRU1BUF9FWFRFTlRfTk9UX0FMSUdORUQsIGFuZCBub3QgaGF2ZSB0bword29ycnkgYWJvdXQgYWxsIHByZXNlbnQgYW5kIGZ1dHVyZSBmbGFncyB3aGljaCBtaWdodCBpbXBseSB1bmFsaWduZWQKK2RhdGEuIE5vdGUgdGhhdCB0aGUgb3Bwb3NpdGUgaXMgbm90IHRydWUgLSBpdCB3b3VsZCBiZSB2YWxpZCBmb3IKK0ZJRU1BUF9FWFRFTlRfTk9UX0FMSUdORUQgdG8gYXBwZWFyIGFsb25lLgorCisqIEZJRU1BUF9FWFRFTlRfTEFTVAorVGhpcyBpcyB0aGUgbGFzdCBleHRlbnQgaW4gdGhlIGZpbGUuIEEgbWFwcGluZyBhdHRlbXB0IHBhc3QgdGhpcworZXh0ZW50IHdpbGwgcmV0dXJuIG5vdGhpbmcuCisKKyogRklFTUFQX0VYVEVOVF9VTktOT1dOCitUaGUgbG9jYXRpb24gb2YgdGhpcyBleHRlbnQgaXMgY3VycmVudGx5IHVua25vd24uIFRoaXMgbWF5IGluZGljYXRlCit0aGUgZGF0YSBpcyBzdG9yZWQgb24gYW4gaW5hY2Nlc3NpYmxlIHZvbHVtZSBvciB0aGF0IG5vIHN0b3JhZ2UgaGFzCitiZWVuIGFsbG9jYXRlZCBmb3IgdGhlIGZpbGUgeWV0LgorCisqIEZJRU1BUF9FWFRFTlRfREVMQUxMT0MKKyAgLSBUaGlzIHdpbGwgYWxzbyBzZXQgRklFTUFQX0VYVEVOVF9VTktOT1dOLgorRGVsYXllZCBhbGxvY2F0aW9uIC0gd2hpbGUgdGhlcmUgaXMgZGF0YSBmb3IgdGhpcyBleHRlbnQsIGl0cworcGh5c2ljYWwgbG9jYXRpb24gaGFzIG5vdCBiZWVuIGFsbG9jYXRlZCB5ZXQuCisKKyogRklFTUFQX0VYVEVOVF9FTkNPREVECitUaGlzIGV4dGVudCBkb2VzIG5vdCBjb25zaXN0IG9mIHBsYWluIGZpbGVzeXN0ZW0gYmxvY2tzIGJ1dCBpcworZW5jb2RlZCAoZS5nLiBlbmNyeXB0ZWQgb3IgY29tcHJlc3NlZCkuICBSZWFkaW5nIHRoZSBkYXRhIGluIHRoaXMKK2V4dGVudCB2aWEgSS9PIHRvIHRoZSBibG9jayBkZXZpY2Ugd2lsbCBoYXZlIHVuZGVmaW5lZCByZXN1bHRzLgorCitOb3RlIHRoYXQgaXQgaXMgKmFsd2F5cyogdW5kZWZpbmVkIHRvIHRyeSB0byB1cGRhdGUgdGhlIGRhdGEKK2luLXBsYWNlIGJ5IHdyaXRpbmcgdG8gdGhlIGluZGljYXRlZCBsb2NhdGlvbiB3aXRob3V0IHRoZQorYXNzaXN0YW5jZSBvZiB0aGUgZmlsZXN5c3RlbSwgb3IgdG8gYWNjZXNzIHRoZSBkYXRhIHVzaW5nIHRoZQoraW5mb3JtYXRpb24gcmV0dXJuZWQgYnkgdGhlIEZJRU1BUCBpbnRlcmZhY2Ugd2hpbGUgdGhlIGZpbGVzeXN0ZW0KK2lzIG1vdW50ZWQuICBJbiBvdGhlciB3b3JkcywgdXNlciBhcHBsaWNhdGlvbnMgbWF5IG9ubHkgcmVhZCB0aGUKK2V4dGVudCBkYXRhIHZpYSBJL08gdG8gdGhlIGJsb2NrIGRldmljZSB3aGlsZSB0aGUgZmlsZXN5c3RlbSBpcwordW5tb3VudGVkLCBhbmQgdGhlbiBvbmx5IGlmIHRoZSBGSUVNQVBfRVhURU5UX0VOQ09ERUQgZmxhZyBpcworY2xlYXI7IHVzZXIgYXBwbGljYXRpb25zIG11c3Qgbm90IHRyeSByZWFkaW5nIG9yIHdyaXRpbmcgdG8gdGhlCitmaWxlc3lzdGVtIHZpYSB0aGUgYmxvY2sgZGV2aWNlIHVuZGVyIGFueSBvdGhlciBjaXJjdW1zdGFuY2VzLgorCisqIEZJRU1BUF9FWFRFTlRfREFUQV9FTkNSWVBURUQKKyAgLSBUaGlzIHdpbGwgYWxzbyBzZXQgRklFTUFQX0VYVEVOVF9FTkNPREVECitUaGUgZGF0YSBpbiB0aGlzIGV4dGVudCBoYXMgYmVlbiBlbmNyeXB0ZWQgYnkgdGhlIGZpbGUgc3lzdGVtLgorCisqIEZJRU1BUF9FWFRFTlRfTk9UX0FMSUdORUQKK0V4dGVudCBvZmZzZXRzIGFuZCBsZW5ndGggYXJlIG5vdCBndWFyYW50ZWVkIHRvIGJlIGJsb2NrIGFsaWduZWQuCisKKyogRklFTUFQX0VYVEVOVF9EQVRBX0lOTElORQorICBUaGlzIHdpbGwgYWxzbyBzZXQgRklFTUFQX0VYVEVOVF9OT1RfQUxJR05FRAorRGF0YSBpcyBsb2NhdGVkIHdpdGhpbiBhIG1ldGEgZGF0YSBibG9jay4KKworKiBGSUVNQVBfRVhURU5UX0RBVEFfVEFJTAorICBUaGlzIHdpbGwgYWxzbyBzZXQgRklFTUFQX0VYVEVOVF9OT1RfQUxJR05FRAorRGF0YSBpcyBwYWNrZWQgaW50byBhIGJsb2NrIHdpdGggZGF0YSBmcm9tIG90aGVyIGZpbGVzLgorCisqIEZJRU1BUF9FWFRFTlRfVU5XUklUVEVOCitVbndyaXR0ZW4gZXh0ZW50IC0gdGhlIGV4dGVudCBpcyBhbGxvY2F0ZWQgYnV0IGl0cyBkYXRhIGhhcyBub3QgYmVlbgoraW5pdGlhbGl6ZWQuICBUaGlzIGluZGljYXRlcyB0aGUgZXh0ZW50J3MgZGF0YSB3aWxsIGJlIGFsbCB6ZXJvIGlmIHJlYWQKK3Rocm91Z2ggdGhlIGZpbGVzeXN0ZW0gYnV0IHRoZSBjb250ZW50cyBhcmUgdW5kZWZpbmVkIGlmIHJlYWQgZGlyZWN0bHkgZnJvbQordGhlIGRldmljZS4KKworKiBGSUVNQVBfRVhURU5UX01FUkdFRAorVGhpcyB3aWxsIGJlIHNldCB3aGVuIGEgZmlsZSBkb2VzIG5vdCBzdXBwb3J0IGV4dGVudHMsIGkuZS4sIGl0IHVzZXMgYSBibG9jaworYmFzZWQgYWRkcmVzc2luZyBzY2hlbWUuICBTaW5jZSByZXR1cm5pbmcgYW4gZXh0ZW50IGZvciBlYWNoIGJsb2NrIGJhY2sgdG8KK3VzZXJzcGFjZSB3b3VsZCBiZSBoaWdobHkgaW5lZmZpY2llbnQsIHRoZSBrZXJuZWwgd2lsbCB0cnkgdG8gbWVyZ2UgbW9zdAorYWRqYWNlbnQgYmxvY2tzIGludG8gJ2V4dGVudHMnLgorCisKK1ZGUyAtPiBGaWxlIFN5c3RlbSBJbXBsZW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpbGUgc3lzdGVtcyB3aXNoaW5nIHRvIHN1cHBvcnQgZmllbWFwIG11c3QgaW1wbGVtZW50IGEgLT5maWVtYXAgY2FsbGJhY2sgb24KK3RoZWlyIGlub2RlX29wZXJhdGlvbnMgc3RydWN0dXJlLiBUaGUgZnMgLT5maWVtYXAgY2FsbCBpcyByZXNwb25zaWJsZSBmb3IKK2RlZmluaW5nIGl0cyBzZXQgb2Ygc3VwcG9ydGVkIGZpZW1hcCBmbGFncywgYW5kIGNhbGxpbmcgYSBoZWxwZXIgZnVuY3Rpb24gb24KK2VhY2ggZGlzY292ZXJlZCBleHRlbnQ6CisKK3N0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHsKKyAgICAgICAuLi4KKworICAgICAgIGludCAoKmZpZW1hcCkoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWVtYXBfZXh0ZW50X2luZm8gKiwgdTY0IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgdTY0IGxlbik7CisKKy0+ZmllbWFwIGlzIHBhc3NlZCBzdHJ1Y3QgZmllbWFwX2V4dGVudF9pbmZvIHdoaWNoIGRlc2NyaWJlcyB0aGUKK2ZpZW1hcCByZXF1ZXN0OgorCitzdHJ1Y3QgZmllbWFwX2V4dGVudF9pbmZvIHsKKwl1bnNpZ25lZCBpbnQgZmlfZmxhZ3M7CQkvKiBGbGFncyBhcyBwYXNzZWQgZnJvbSB1c2VyICovCisJdW5zaWduZWQgaW50IGZpX2V4dGVudHNfbWFwcGVkOwkvKiBOdW1iZXIgb2YgbWFwcGVkIGV4dGVudHMgKi8KKwl1bnNpZ25lZCBpbnQgZmlfZXh0ZW50c19tYXg7CS8qIFNpemUgb2YgZmllbWFwX2V4dGVudCBhcnJheSAqLworCXN0cnVjdCBmaWVtYXBfZXh0ZW50ICpmaV9leHRlbnRzX3N0YXJ0OwkvKiBTdGFydCBvZiBmaWVtYXBfZXh0ZW50IGFycmF5ICovCit9OworCitJdCBpcyBpbnRlbmRlZCB0aGF0IHRoZSBmaWxlIHN5c3RlbSBzaG91bGQgbm90IG5lZWQgdG8gYWNjZXNzIGFueSBvZiB0aGlzCitzdHJ1Y3R1cmUgZGlyZWN0bHkuIEZpbGVzeXN0ZW0gaGFuZGxlcnMgc2hvdWxkIGJlIHRvbGVyYW50IHRvIHNpZ25hbHMgYW5kIHJldHVybgorRUlOVFIgb25jZSBmYXRhbCBzaWduYWwgcmVjZWl2ZWQuCisKKworRmxhZyBjaGVja2luZyBzaG91bGQgYmUgZG9uZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSAtPmZpZW1hcCBjYWxsYmFjayB2aWEgdGhlCitmaWVtYXBfY2hlY2tfZmxhZ3MoKSBoZWxwZXI6CisKK2ludCBmaWVtYXBfY2hlY2tfZmxhZ3Moc3RydWN0IGZpZW1hcF9leHRlbnRfaW5mbyAqZmllaW5mbywgdTMyIGZzX2ZsYWdzKTsKKworVGhlIHN0cnVjdCBmaWVpbmZvIHNob3VsZCBiZSBwYXNzZWQgaW4gYXMgcmVjZWl2ZWQgZnJvbSBpb2N0bF9maWVtYXAoKS4gVGhlCitzZXQgb2YgZmllbWFwIGZsYWdzIHdoaWNoIHRoZSBmcyB1bmRlcnN0YW5kcyBzaG91bGQgYmUgcGFzc2VkIHZpYSBmc19mbGFncy4gSWYKK2ZpZW1hcF9jaGVja19mbGFncyBmaW5kcyBpbnZhbGlkIHVzZXIgZmxhZ3MsIGl0IHdpbGwgcGxhY2UgdGhlIGJhZCB2YWx1ZXMgaW4KK2ZpZWluZm8tPmZpX2ZsYWdzIGFuZCByZXR1cm4gLUVCQURSLiBJZiB0aGUgZmlsZSBzeXN0ZW0gZ2V0cyAtRUJBRFIsIGZyb20KK2ZpZW1hcF9jaGVja19mbGFncygpLCBpdCBzaG91bGQgaW1tZWRpYXRlbHkgZXhpdCwgcmV0dXJuaW5nIHRoYXQgZXJyb3IgYmFjayB0bworaW9jdGxfZmllbWFwKCkuCisKKworRm9yIGVhY2ggZXh0ZW50IGluIHRoZSByZXF1ZXN0IHJhbmdlLCB0aGUgZmlsZSBzeXN0ZW0gc2hvdWxkIGNhbGwKK3RoZSBoZWxwZXIgZnVuY3Rpb24sIGZpZW1hcF9maWxsX25leHRfZXh0ZW50KCk6CisKK2ludCBmaWVtYXBfZmlsbF9uZXh0X2V4dGVudChzdHJ1Y3QgZmllbWFwX2V4dGVudF9pbmZvICppbmZvLCB1NjQgbG9naWNhbCwKKwkJCSAgICB1NjQgcGh5cywgdTY0IGxlbiwgdTMyIGZsYWdzLCB1MzIgZGV2KTsKKworZmllbWFwX2ZpbGxfbmV4dF9leHRlbnQoKSB3aWxsIHVzZSB0aGUgcGFzc2VkIHZhbHVlcyB0byBwb3B1bGF0ZSB0aGUKK25leHQgZnJlZSBleHRlbnQgaW4gdGhlIGZtX2V4dGVudHMgYXJyYXkuICdHZW5lcmFsJyBleHRlbnQgZmxhZ3Mgd2lsbAorYXV0b21hdGljYWxseSBiZSBzZXQgZnJvbSBzcGVjaWZpYyBmbGFncyBvbiBiZWhhbGYgb2YgdGhlIGNhbGxpbmcgZmlsZQorc3lzdGVtIHNvIHRoYXQgdGhlIHVzZXJzcGFjZSBBUEkgaXMgbm90IGJyb2tlbi4KKworZmllbWFwX2ZpbGxfbmV4dF9leHRlbnQoKSByZXR1cm5zIDAgb24gc3VjY2VzcywgYW5kIDEgd2hlbiB0aGUKK3VzZXItc3VwcGxpZWQgZm1fZXh0ZW50cyBhcnJheSBpcyBmdWxsLiBJZiBhbiBlcnJvciBpcyBlbmNvdW50ZXJlZAord2hpbGUgY29weWluZyB0aGUgZXh0ZW50IHRvIHVzZXIgbWVtb3J5LCAtRUZBVUxUIHdpbGwgYmUgcmV0dXJuZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2ZpbGVzLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZmlsZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ZGZjNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2ZpbGVzLnR4dApAQCAtMCwwICsxLDEyMyBAQAorRmlsZSBtYW5hZ2VtZW50IGluIHRoZSBMaW51eCBrZXJuZWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIGhvdyBsb2NraW5nIGZvciBmaWxlcyAoc3RydWN0IGZpbGUpCithbmQgZmlsZSBkZXNjcmlwdG9yIHRhYmxlIChzdHJ1Y3QgZmlsZXMpIHdvcmtzLgorCitVcCB1bnRpbCAyLjYuMTIsIHRoZSBmaWxlIGRlc2NyaXB0b3IgdGFibGUgaGFzIGJlZW4gcHJvdGVjdGVkCit3aXRoIGEgbG9jayAoZmlsZXMtPmZpbGVfbG9jaykgYW5kIHJlZmVyZW5jZSBjb3VudCAoZmlsZXMtPmNvdW50KS4KKy0+ZmlsZV9sb2NrIHByb3RlY3RlZCBhY2Nlc3NlcyB0byBhbGwgdGhlIGZpbGUgcmVsYXRlZCBmaWVsZHMKK29mIHRoZSB0YWJsZS4gLT5jb3VudCB3YXMgdXNlZCBmb3Igc2hhcmluZyB0aGUgZmlsZSBkZXNjcmlwdG9yCit0YWJsZSBiZXR3ZWVuIHRhc2tzIGNsb25lZCB3aXRoIENMT05FX0ZJTEVTIGZsYWcuIFR5cGljYWxseQordGhpcyB3b3VsZCBiZSB0aGUgY2FzZSBmb3IgcG9zaXggdGhyZWFkcy4gQXMgd2l0aCB0aGUgY29tbW9uCityZWZjb3VudGluZyBtb2RlbCBpbiB0aGUga2VybmVsLCB0aGUgbGFzdCB0YXNrIGRvaW5nCithIHB1dF9maWxlc19zdHJ1Y3QoKSBmcmVlcyB0aGUgZmlsZSBkZXNjcmlwdG9yIChmZCkgdGFibGUuCitUaGUgZmlsZXMgKHN0cnVjdCBmaWxlKSB0aGVtc2VsdmVzIGFyZSBwcm90ZWN0ZWQgdXNpbmcKK3JlZmVyZW5jZSBjb3VudCAoLT5mX2NvdW50KS4KKworSW4gdGhlIG5ldyBsb2NrLWZyZWUgbW9kZWwgb2YgZmlsZSBkZXNjcmlwdG9yIG1hbmFnZW1lbnQsCit0aGUgcmVmZXJlbmNlIGNvdW50aW5nIGlzIHNpbWlsYXIsIGJ1dCB0aGUgbG9ja2luZyBpcworYmFzZWQgb24gUkNVLiBUaGUgZmlsZSBkZXNjcmlwdG9yIHRhYmxlIGNvbnRhaW5zIG11bHRpcGxlCitlbGVtZW50cyAtIHRoZSBmZCBzZXRzIChvcGVuX2ZkcyBhbmQgY2xvc2Vfb25fZXhlYywgdGhlCithcnJheSBvZiBmaWxlIHBvaW50ZXJzLCB0aGUgc2l6ZXMgb2YgdGhlIHNldHMgYW5kIHRoZSBhcnJheQorZXRjLikuIEluIG9yZGVyIGZvciB0aGUgdXBkYXRlcyB0byBhcHBlYXIgYXRvbWljIHRvCithIGxvY2stZnJlZSByZWFkZXIsIGFsbCB0aGUgZWxlbWVudHMgb2YgdGhlIGZpbGUgZGVzY3JpcHRvcgordGFibGUgYXJlIGluIGEgc2VwYXJhdGUgc3RydWN0dXJlIC0gc3RydWN0IGZkdGFibGUuCitmaWxlc19zdHJ1Y3QgY29udGFpbnMgYSBwb2ludGVyIHRvIHN0cnVjdCBmZHRhYmxlIHRocm91Z2gKK3doaWNoIHRoZSBhY3R1YWwgZmQgdGFibGUgaXMgYWNjZXNzZWQuIEluaXRpYWxseSB0aGUKK2ZkdGFibGUgaXMgZW1iZWRkZWQgaW4gZmlsZXNfc3RydWN0IGl0c2VsZi4gT24gYSBzdWJzZXF1ZW50CitleHBhbnNpb24gb2YgZmR0YWJsZSwgYSBuZXcgZmR0YWJsZSBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkCithbmQgZmlsZXMtPmZkdGFiIHBvaW50cyB0byB0aGUgbmV3IHN0cnVjdHVyZS4gVGhlIGZkdGFibGUKK3N0cnVjdHVyZSBpcyBmcmVlZCB3aXRoIFJDVSBhbmQgbG9jay1mcmVlIHJlYWRlcnMgZWl0aGVyCitzZWUgdGhlIG9sZCBmZHRhYmxlIG9yIHRoZSBuZXcgZmR0YWJsZSBtYWtpbmcgdGhlIHVwZGF0ZQorYXBwZWFyIGF0b21pYy4gSGVyZSBhcmUgdGhlIGxvY2tpbmcgcnVsZXMgZm9yCit0aGUgZmR0YWJsZSBzdHJ1Y3R1cmUgLQorCisxLiBBbGwgcmVmZXJlbmNlcyB0byB0aGUgZmR0YWJsZSBtdXN0IGJlIGRvbmUgdGhyb3VnaAorICAgdGhlIGZpbGVzX2ZkdGFibGUoKSBtYWNybyA6CisKKwlzdHJ1Y3QgZmR0YWJsZSAqZmR0OworCisJcmN1X3JlYWRfbG9jaygpOworCisJZmR0ID0gZmlsZXNfZmR0YWJsZShmaWxlcyk7CisJLi4uLgorCWlmIChuIDw9IGZkdC0+bWF4X2ZkcykKKwkJLi4uLgorCS4uLgorCXJjdV9yZWFkX3VubG9jaygpOworCisgICBmaWxlc19mZHRhYmxlKCkgdXNlcyByY3VfZGVyZWZlcmVuY2UoKSBtYWNybyB3aGljaCB0YWtlcyBjYXJlIG9mCisgICB0aGUgbWVtb3J5IGJhcnJpZXIgcmVxdWlyZW1lbnRzIGZvciBsb2NrLWZyZWUgZGVyZWZlcmVuY2UuCisgICBUaGUgZmR0YWJsZSBwb2ludGVyIG11c3QgYmUgcmVhZCB3aXRoaW4gdGhlIHJlYWQtc2lkZQorICAgY3JpdGljYWwgc2VjdGlvbi4KKworMi4gUmVhZGluZyBvZiB0aGUgZmR0YWJsZSBhcyBkZXNjcmliZWQgYWJvdmUgbXVzdCBiZSBwcm90ZWN0ZWQKKyAgIGJ5IHJjdV9yZWFkX2xvY2soKS9yY3VfcmVhZF91bmxvY2soKS4KKworMy4gRm9yIGFueSB1cGRhdGUgdG8gdGhlIGZkIHRhYmxlLCBmaWxlcy0+ZmlsZV9sb2NrIG11c3QKKyAgIGJlIGhlbGQuCisKKzQuIFRvIGxvb2sgdXAgdGhlIGZpbGUgc3RydWN0dXJlIGdpdmVuIGFuIGZkLCBhIHJlYWRlcgorICAgbXVzdCB1c2UgZWl0aGVyIGZjaGVjaygpIG9yIGZjaGVja19maWxlcygpIEFQSXMuIFRoZXNlCisgICB0YWtlIGNhcmUgb2YgYmFycmllciByZXF1aXJlbWVudHMgZHVlIHRvIGxvY2stZnJlZSBsb29rdXAuCisgICBBbiBleGFtcGxlIDoKKworCXN0cnVjdCBmaWxlICpmaWxlOworCisJcmN1X3JlYWRfbG9jaygpOworCWZpbGUgPSBmY2hlY2soZmQpOworCWlmIChmaWxlKSB7CisJCS4uLgorCX0KKwkuLi4uCisJcmN1X3JlYWRfdW5sb2NrKCk7CisKKzUuIEhhbmRsaW5nIG9mIHRoZSBmaWxlIHN0cnVjdHVyZXMgaXMgc3BlY2lhbC4gU2luY2UgdGhlIGxvb2stdXAKKyAgIG9mIHRoZSBmZCAoZmdldCgpL2ZnZXRfbGlnaHQoKSkgYXJlIGxvY2stZnJlZSwgaXQgaXMgcG9zc2libGUKKyAgIHRoYXQgbG9vay11cCBtYXkgcmFjZSB3aXRoIHRoZSBsYXN0IHB1dCgpIG9wZXJhdGlvbiBvbiB0aGUKKyAgIGZpbGUgc3RydWN0dXJlLiBUaGlzIGlzIGF2b2lkZWQgdXNpbmcgYXRvbWljX2xvbmdfaW5jX25vdF96ZXJvKCkKKyAgIG9uIC0+Zl9jb3VudCA6CisKKwlyY3VfcmVhZF9sb2NrKCk7CisJZmlsZSA9IGZjaGVja19maWxlcyhmaWxlcywgZmQpOworCWlmIChmaWxlKSB7CisJCWlmIChhdG9taWNfbG9uZ19pbmNfbm90X3plcm8oJmZpbGUtPmZfY291bnQpKQorCQkJKmZwdXRfbmVlZGVkID0gMTsKKwkJZWxzZQorCQkvKiBEaWRuJ3QgZ2V0IHRoZSByZWZlcmVuY2UsIHNvbWVvbmUncyBmcmVlZCAqLworCQkJZmlsZSA9IE5VTEw7CisJfQorCXJjdV9yZWFkX3VubG9jaygpOworCS4uLi4KKwlyZXR1cm4gZmlsZTsKKworICAgYXRvbWljX2xvbmdfaW5jX25vdF96ZXJvKCkgZGV0ZWN0cyBpZiByZWZjb3VudHMgaXMgYWxyZWFkeSB6ZXJvIG9yCisgICBnb2VzIHRvIHplcm8gZHVyaW5nIGluY3JlbWVudC4gSWYgaXQgZG9lcywgd2UgZmFpbAorICAgZmdldCgpL2ZnZXRfbGlnaHQoKS4KKworNi4gU2luY2UgYm90aCBmZHRhYmxlIGFuZCBmaWxlIHN0cnVjdHVyZXMgY2FuIGJlIGxvb2tlZCB1cAorICAgbG9jay1mcmVlLCB0aGV5IG11c3QgYmUgaW5zdGFsbGVkIHVzaW5nIHJjdV9hc3NpZ25fcG9pbnRlcigpCisgICBBUEkuIElmIHRoZXkgYXJlIGxvb2tlZCB1cCBsb2NrLWZyZWUsIHJjdV9kZXJlZmVyZW5jZSgpCisgICBtdXN0IGJlIHVzZWQuIEhvd2V2ZXIgaXQgaXMgYWR2aXNhYmxlIHRvIHVzZSBmaWxlc19mZHRhYmxlKCkKKyAgIGFuZCBmY2hlY2soKS9mY2hlY2tfZmlsZXMoKSB3aGljaCB0YWtlIGNhcmUgb2YgdGhlc2UgaXNzdWVzLgorCis3LiBXaGlsZSB1cGRhdGluZywgdGhlIGZkdGFibGUgcG9pbnRlciBtdXN0IGJlIGxvb2tlZCB1cCB3aGlsZQorICAgaG9sZGluZyBmaWxlcy0+ZmlsZV9sb2NrLiBJZiAtPmZpbGVfbG9jayBpcyBkcm9wcGVkLCB0aGVuCisgICBhbm90aGVyIHRocmVhZCBleHBhbmQgdGhlIGZpbGVzIHRoZXJlYnkgY3JlYXRpbmcgYSBuZXcKKyAgIGZkdGFibGUgYW5kIG1ha2luZyB0aGUgZWFybGllciBmZHRhYmxlIHBvaW50ZXIgc3RhbGUuCisgICBGb3IgZXhhbXBsZSA6CisKKwlzcGluX2xvY2soJmZpbGVzLT5maWxlX2xvY2spOworCWZkID0gbG9jYXRlX2ZkKGZpbGVzLCBmaWxlLCBzdGFydCk7CisJaWYgKGZkID49IDApIHsKKwkJLyogbG9jYXRlX2ZkKCkgbWF5IGhhdmUgZXhwYW5kZWQgZmR0YWJsZSwgbG9hZCB0aGUgcHRyICovCisJCWZkdCA9IGZpbGVzX2ZkdGFibGUoZmlsZXMpOworCQlfX3NldF9vcGVuX2ZkKGZkLCBmZHQpOworCQlfX2NsZWFyX2Nsb3NlX29uX2V4ZWMoZmQsIGZkdCk7CisJCXNwaW5fdW5sb2NrKCZmaWxlcy0+ZmlsZV9sb2NrKTsKKwkuLi4uLgorCisgICBTaW5jZSBsb2NhdGVfZmQoKSBjYW4gZHJvcCAtPmZpbGVfbG9jayAoYW5kIHJlYWNxdWlyZSAtPmZpbGVfbG9jayksCisgICB0aGUgZmR0YWJsZSBwb2ludGVyIChmZHQpIG11c3QgYmUgbG9hZGVkIGFmdGVyIGxvY2F0ZV9mZCgpLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2Z1c2UudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mdXNlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2FmNGE0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mdXNlLnR4dApAQCAtMCwwICsxLDQyMyBAQAorRGVmaW5pdGlvbnMKK35+fn5+fn5+fn5+CisKK1VzZXJzcGFjZSBmaWxlc3lzdGVtOgorCisgIEEgZmlsZXN5c3RlbSBpbiB3aGljaCBkYXRhIGFuZCBtZXRhZGF0YSBhcmUgcHJvdmlkZWQgYnkgYW4gb3JkaW5hcnkKKyAgdXNlcnNwYWNlIHByb2Nlc3MuICBUaGUgZmlsZXN5c3RlbSBjYW4gYmUgYWNjZXNzZWQgbm9ybWFsbHkgdGhyb3VnaAorICB0aGUga2VybmVsIGludGVyZmFjZS4KKworRmlsZXN5c3RlbSBkYWVtb246CisKKyAgVGhlIHByb2Nlc3MoZXMpIHByb3ZpZGluZyB0aGUgZGF0YSBhbmQgbWV0YWRhdGEgb2YgdGhlIGZpbGVzeXN0ZW0uCisKK05vbi1wcml2aWxlZ2VkIG1vdW50IChvciB1c2VyIG1vdW50KToKKworICBBIHVzZXJzcGFjZSBmaWxlc3lzdGVtIG1vdW50ZWQgYnkgYSBub24tcHJpdmlsZWdlZCAobm9uLXJvb3QpIHVzZXIuCisgIFRoZSBmaWxlc3lzdGVtIGRhZW1vbiBpcyBydW5uaW5nIHdpdGggdGhlIHByaXZpbGVnZXMgb2YgdGhlIG1vdW50aW5nCisgIHVzZXIuICBOT1RFOiB0aGlzIGlzIG5vdCB0aGUgc2FtZSBhcyBtb3VudHMgYWxsb3dlZCB3aXRoIHRoZSAidXNlciIKKyAgb3B0aW9uIGluIC9ldGMvZnN0YWIsIHdoaWNoIGlzIG5vdCBkaXNjdXNzZWQgaGVyZS4KKworRmlsZXN5c3RlbSBjb25uZWN0aW9uOgorCisgIEEgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSBmaWxlc3lzdGVtIGRhZW1vbiBhbmQgdGhlIGtlcm5lbC4gIFRoZQorICBjb25uZWN0aW9uIGV4aXN0cyB1bnRpbCBlaXRoZXIgdGhlIGRhZW1vbiBkaWVzLCBvciB0aGUgZmlsZXN5c3RlbSBpcworICB1bW91bnRlZC4gIE5vdGUgdGhhdCBkZXRhY2hpbmcgKG9yIGxhenkgdW1vdW50aW5nKSB0aGUgZmlsZXN5c3RlbQorICBkb2VzIF9ub3RfIGJyZWFrIHRoZSBjb25uZWN0aW9uLCBpbiB0aGlzIGNhc2UgaXQgd2lsbCBleGlzdCB1bnRpbAorICB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhlIGZpbGVzeXN0ZW0gaXMgcmVsZWFzZWQuCisKK01vdW50IG93bmVyOgorCisgIFRoZSB1c2VyIHdobyBkb2VzIHRoZSBtb3VudGluZy4KKworVXNlcjoKKworICBUaGUgdXNlciB3aG8gaXMgcGVyZm9ybWluZyBmaWxlc3lzdGVtIG9wZXJhdGlvbnMuCisKK1doYXQgaXMgRlVTRT8KK35+fn5+fn5+fn5+fn4KKworRlVTRSBpcyBhIHVzZXJzcGFjZSBmaWxlc3lzdGVtIGZyYW1ld29yay4gIEl0IGNvbnNpc3RzIG9mIGEga2VybmVsCittb2R1bGUgKGZ1c2Uua28pLCBhIHVzZXJzcGFjZSBsaWJyYXJ5IChsaWJmdXNlLiopIGFuZCBhIG1vdW50IHV0aWxpdHkKKyhmdXNlcm1vdW50KS4KKworT25lIG9mIHRoZSBtb3N0IGltcG9ydGFudCBmZWF0dXJlcyBvZiBGVVNFIGlzIGFsbG93aW5nIHNlY3VyZSwKK25vbi1wcml2aWxlZ2VkIG1vdW50cy4gIFRoaXMgb3BlbnMgdXAgbmV3IHBvc3NpYmlsaXRpZXMgZm9yIHRoZSB1c2Ugb2YKK2ZpbGVzeXN0ZW1zLiAgQSBnb29kIGV4YW1wbGUgaXMgc3NoZnM6IGEgc2VjdXJlIG5ldHdvcmsgZmlsZXN5c3RlbQordXNpbmcgdGhlIHNmdHAgcHJvdG9jb2wuCisKK1RoZSB1c2Vyc3BhY2UgbGlicmFyeSBhbmQgdXRpbGl0aWVzIGFyZSBhdmFpbGFibGUgZnJvbSB0aGUgRlVTRQoraG9tZXBhZ2U6CisKKyAgaHR0cDovL2Z1c2Uuc291cmNlZm9yZ2UubmV0LworCitGaWxlc3lzdGVtIHR5cGUKK35+fn5+fn5+fn5+fn5+fgorCitUaGUgZmlsZXN5c3RlbSB0eXBlIGdpdmVuIHRvIG1vdW50KDIpIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKworJ2Z1c2UnCisKKyAgVGhpcyBpcyB0aGUgdXN1YWwgd2F5IHRvIG1vdW50IGEgRlVTRSBmaWxlc3lzdGVtLiAgVGhlIGZpcnN0CisgIGFyZ3VtZW50IG9mIHRoZSBtb3VudCBzeXN0ZW0gY2FsbCBtYXkgY29udGFpbiBhbiBhcmJpdHJhcnkgc3RyaW5nLAorICB3aGljaCBpcyBub3QgaW50ZXJwcmV0ZWQgYnkgdGhlIGtlcm5lbC4KKworJ2Z1c2VibGsnCisKKyAgVGhlIGZpbGVzeXN0ZW0gaXMgYmxvY2sgZGV2aWNlIGJhc2VkLiAgVGhlIGZpcnN0IGFyZ3VtZW50IG9mIHRoZQorICBtb3VudCBzeXN0ZW0gY2FsbCBpcyBpbnRlcnByZXRlZCBhcyB0aGUgbmFtZSBvZiB0aGUgZGV2aWNlLgorCitNb3VudCBvcHRpb25zCit+fn5+fn5+fn5+fn5+CisKKydmZD1OJworCisgIFRoZSBmaWxlIGRlc2NyaXB0b3IgdG8gdXNlIGZvciBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIHVzZXJzcGFjZQorICBmaWxlc3lzdGVtIGFuZCB0aGUga2VybmVsLiAgVGhlIGZpbGUgZGVzY3JpcHRvciBtdXN0IGhhdmUgYmVlbgorICBvYnRhaW5lZCBieSBvcGVuaW5nIHRoZSBGVVNFIGRldmljZSAoJy9kZXYvZnVzZScpLgorCisncm9vdG1vZGU9TScKKworICBUaGUgZmlsZSBtb2RlIG9mIHRoZSBmaWxlc3lzdGVtJ3Mgcm9vdCBpbiBvY3RhbCByZXByZXNlbnRhdGlvbi4KKworJ3VzZXJfaWQ9TicKKworICBUaGUgbnVtZXJpYyB1c2VyIGlkIG9mIHRoZSBtb3VudCBvd25lci4KKworJ2dyb3VwX2lkPU4nCisKKyAgVGhlIG51bWVyaWMgZ3JvdXAgaWQgb2YgdGhlIG1vdW50IG93bmVyLgorCisnZGVmYXVsdF9wZXJtaXNzaW9ucycKKworICBCeSBkZWZhdWx0IEZVU0UgZG9lc24ndCBjaGVjayBmaWxlIGFjY2VzcyBwZXJtaXNzaW9ucywgdGhlCisgIGZpbGVzeXN0ZW0gaXMgZnJlZSB0byBpbXBsZW1lbnQgaXRzIGFjY2VzcyBwb2xpY3kgb3IgbGVhdmUgaXQgdG8KKyAgdGhlIHVuZGVybHlpbmcgZmlsZSBhY2Nlc3MgbWVjaGFuaXNtIChlLmcuIGluIGNhc2Ugb2YgbmV0d29yaworICBmaWxlc3lzdGVtcykuICBUaGlzIG9wdGlvbiBlbmFibGVzIHBlcm1pc3Npb24gY2hlY2tpbmcsIHJlc3RyaWN0aW5nCisgIGFjY2VzcyBiYXNlZCBvbiBmaWxlIG1vZGUuICBJdCBpcyB1c3VhbGx5IHVzZWZ1bCB0b2dldGhlciB3aXRoIHRoZQorICAnYWxsb3dfb3RoZXInIG1vdW50IG9wdGlvbi4KKworJ2FsbG93X290aGVyJworCisgIFRoaXMgb3B0aW9uIG92ZXJyaWRlcyB0aGUgc2VjdXJpdHkgbWVhc3VyZSByZXN0cmljdGluZyBmaWxlIGFjY2VzcworICB0byB0aGUgdXNlciBtb3VudGluZyB0aGUgZmlsZXN5c3RlbS4gIFRoaXMgb3B0aW9uIGlzIGJ5IGRlZmF1bHQgb25seQorICBhbGxvd2VkIHRvIHJvb3QsIGJ1dCB0aGlzIHJlc3RyaWN0aW9uIGNhbiBiZSByZW1vdmVkIHdpdGggYQorICAodXNlcnNwYWNlKSBjb25maWd1cmF0aW9uIG9wdGlvbi4KKworJ21heF9yZWFkPU4nCisKKyAgV2l0aCB0aGlzIG9wdGlvbiB0aGUgbWF4aW11bSBzaXplIG9mIHJlYWQgb3BlcmF0aW9ucyBjYW4gYmUgc2V0LgorICBUaGUgZGVmYXVsdCBpcyBpbmZpbml0ZS4gIE5vdGUgdGhhdCB0aGUgc2l6ZSBvZiByZWFkIHJlcXVlc3RzIGlzCisgIGxpbWl0ZWQgYW55d2F5IHRvIDMyIHBhZ2VzICh3aGljaCBpcyAxMjhrYnl0ZSBvbiBpMzg2KS4KKworJ2Jsa3NpemU9TicKKworICBTZXQgdGhlIGJsb2NrIHNpemUgZm9yIHRoZSBmaWxlc3lzdGVtLiAgVGhlIGRlZmF1bHQgaXMgNTEyLiAgVGhpcworICBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgJ2Z1c2VibGsnIHR5cGUgbW91bnRzLgorCitDb250cm9sIGZpbGVzeXN0ZW0KK35+fn5+fn5+fn5+fn5+fn5+fgorCitUaGVyZSdzIGEgY29udHJvbCBmaWxlc3lzdGVtIGZvciBGVVNFLCB3aGljaCBjYW4gYmUgbW91bnRlZCBieToKKworICBtb3VudCAtdCBmdXNlY3RsIG5vbmUgL3N5cy9mcy9mdXNlL2Nvbm5lY3Rpb25zCisKK01vdW50aW5nIGl0IHVuZGVyIHRoZSAnL3N5cy9mcy9mdXNlL2Nvbm5lY3Rpb25zJyBkaXJlY3RvcnkgbWFrZXMgaXQKK2JhY2t3YXJkcyBjb21wYXRpYmxlIHdpdGggZWFybGllciB2ZXJzaW9ucy4KKworVW5kZXIgdGhlIGZ1c2UgY29udHJvbCBmaWxlc3lzdGVtIGVhY2ggY29ubmVjdGlvbiBoYXMgYSBkaXJlY3RvcnkKK25hbWVkIGJ5IGEgdW5pcXVlIG51bWJlci4KKworRm9yIGVhY2ggY29ubmVjdGlvbiB0aGUgZm9sbG93aW5nIGZpbGVzIGV4aXN0IHdpdGhpbiB0aGlzIGRpcmVjdG9yeToKKworICd3YWl0aW5nJworCisgIFRoZSBudW1iZXIgb2YgcmVxdWVzdHMgd2hpY2ggYXJlIHdhaXRpbmcgdG8gYmUgdHJhbnNmZXJyZWQgdG8KKyAgdXNlcnNwYWNlIG9yIGJlaW5nIHByb2Nlc3NlZCBieSB0aGUgZmlsZXN5c3RlbSBkYWVtb24uICBJZiB0aGVyZSBpcworICBubyBmaWxlc3lzdGVtIGFjdGl2aXR5IGFuZCAnd2FpdGluZycgaXMgbm9uLXplcm8sIHRoZW4gdGhlCisgIGZpbGVzeXN0ZW0gaXMgaHVuZyBvciBkZWFkbG9ja2VkLgorCisgJ2Fib3J0JworCisgIFdyaXRpbmcgYW55dGhpbmcgaW50byB0aGlzIGZpbGUgd2lsbCBhYm9ydCB0aGUgZmlsZXN5c3RlbQorICBjb25uZWN0aW9uLiAgVGhpcyBtZWFucyB0aGF0IGFsbCB3YWl0aW5nIHJlcXVlc3RzIHdpbGwgYmUgYWJvcnRlZCBhbgorICBlcnJvciByZXR1cm5lZCBmb3IgYWxsIGFib3J0ZWQgYW5kIG5ldyByZXF1ZXN0cy4KKworT25seSB0aGUgb3duZXIgb2YgdGhlIG1vdW50IG1heSByZWFkIG9yIHdyaXRlIHRoZXNlIGZpbGVzLgorCitJbnRlcnJ1cHRpbmcgZmlsZXN5c3RlbSBvcGVyYXRpb25zCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0lmIGEgcHJvY2VzcyBpc3N1aW5nIGEgRlVTRSBmaWxlc3lzdGVtIHJlcXVlc3QgaXMgaW50ZXJydXB0ZWQsIHRoZQorZm9sbG93aW5nIHdpbGwgaGFwcGVuOgorCisgIDEpIElmIHRoZSByZXF1ZXN0IGlzIG5vdCB5ZXQgc2VudCB0byB1c2Vyc3BhY2UgQU5EIHRoZSBzaWduYWwgaXMKKyAgICAgZmF0YWwgKFNJR0tJTEwgb3IgdW5oYW5kbGVkIGZhdGFsIHNpZ25hbCksIHRoZW4gdGhlIHJlcXVlc3QgaXMKKyAgICAgZGVxdWV1ZWQgYW5kIHJldHVybnMgaW1tZWRpYXRlbHkuCisKKyAgMikgSWYgdGhlIHJlcXVlc3QgaXMgbm90IHlldCBzZW50IHRvIHVzZXJzcGFjZSBBTkQgdGhlIHNpZ25hbCBpcyBub3QKKyAgICAgZmF0YWwsIHRoZW4gYW4gJ2ludGVycnVwdGVkJyBmbGFnIGlzIHNldCBmb3IgdGhlIHJlcXVlc3QuICBXaGVuCisgICAgIHRoZSByZXF1ZXN0IGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSB0cmFuc2ZlcnJlZCB0byB1c2Vyc3BhY2UgYW5kCisgICAgIHRoaXMgZmxhZyBpcyBzZXQsIGFuIElOVEVSUlVQVCByZXF1ZXN0IGlzIHF1ZXVlZC4KKworICAzKSBJZiB0aGUgcmVxdWVzdCBpcyBhbHJlYWR5IHNlbnQgdG8gdXNlcnNwYWNlLCB0aGVuIGFuIElOVEVSUlVQVAorICAgICByZXF1ZXN0IGlzIHF1ZXVlZC4KKworSU5URVJSVVBUIHJlcXVlc3RzIHRha2UgcHJlY2VkZW5jZSBvdmVyIG90aGVyIHJlcXVlc3RzLCBzbyB0aGUKK3VzZXJzcGFjZSBmaWxlc3lzdGVtIHdpbGwgcmVjZWl2ZSBxdWV1ZWQgSU5URVJSVVBUcyBiZWZvcmUgYW55IG90aGVycy4KKworVGhlIHVzZXJzcGFjZSBmaWxlc3lzdGVtIG1heSBpZ25vcmUgdGhlIElOVEVSUlVQVCByZXF1ZXN0cyBlbnRpcmVseSwKK29yIG1heSBob25vciB0aGVtIGJ5IHNlbmRpbmcgYSByZXBseSB0byB0aGUgX29yaWdpbmFsXyByZXF1ZXN0LCB3aXRoCit0aGUgZXJyb3Igc2V0IHRvIEVJTlRSLgorCitJdCBpcyBhbHNvIHBvc3NpYmxlIHRoYXQgdGhlcmUncyBhIHJhY2UgYmV0d2VlbiBwcm9jZXNzaW5nIHRoZQorb3JpZ2luYWwgcmVxdWVzdCBhbmQgaXRzIElOVEVSUlVQVCByZXF1ZXN0LiAgVGhlcmUgYXJlIHR3byBwb3NzaWJpbGl0aWVzOgorCisgIDEpIFRoZSBJTlRFUlJVUFQgcmVxdWVzdCBpcyBwcm9jZXNzZWQgYmVmb3JlIHRoZSBvcmlnaW5hbCByZXF1ZXN0IGlzCisgICAgIHByb2Nlc3NlZAorCisgIDIpIFRoZSBJTlRFUlJVUFQgcmVxdWVzdCBpcyBwcm9jZXNzZWQgYWZ0ZXIgdGhlIG9yaWdpbmFsIHJlcXVlc3QgaGFzCisgICAgIGJlZW4gYW5zd2VyZWQKKworSWYgdGhlIGZpbGVzeXN0ZW0gY2Fubm90IGZpbmQgdGhlIG9yaWdpbmFsIHJlcXVlc3QsIGl0IHNob3VsZCB3YWl0IGZvcgorc29tZSB0aW1lb3V0IGFuZC9vciBhIG51bWJlciBvZiBuZXcgcmVxdWVzdHMgdG8gYXJyaXZlLCBhZnRlciB3aGljaCBpdAorc2hvdWxkIHJlcGx5IHRvIHRoZSBJTlRFUlJVUFQgcmVxdWVzdCB3aXRoIGFuIEVBR0FJTiBlcnJvci4gIEluIGNhc2UKKzEpIHRoZSBJTlRFUlJVUFQgcmVxdWVzdCB3aWxsIGJlIHJlcXVldWVkLiAgSW4gY2FzZSAyKSB0aGUgSU5URVJSVVBUCityZXBseSB3aWxsIGJlIGlnbm9yZWQuCisKK0Fib3J0aW5nIGEgZmlsZXN5c3RlbSBjb25uZWN0aW9uCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitJdCBpcyBwb3NzaWJsZSB0byBnZXQgaW50byBjZXJ0YWluIHNpdHVhdGlvbnMgd2hlcmUgdGhlIGZpbGVzeXN0ZW0gaXMKK25vdCByZXNwb25kaW5nLiAgUmVhc29ucyBmb3IgdGhpcyBtYXkgYmU6CisKKyAgYSkgQnJva2VuIHVzZXJzcGFjZSBmaWxlc3lzdGVtIGltcGxlbWVudGF0aW9uCisKKyAgYikgTmV0d29yayBjb25uZWN0aW9uIGRvd24KKworICBjKSBBY2NpZGVudGFsIGRlYWRsb2NrCisKKyAgZCkgTWFsaWNpb3VzIGRlYWRsb2NrCisKKyhGb3IgbW9yZSBvbiBjKSBhbmQgZCkgc2VlIGxhdGVyIHNlY3Rpb25zKQorCitJbiBlaXRoZXIgb2YgdGhlc2UgY2FzZXMgaXQgbWF5IGJlIHVzZWZ1bCB0byBhYm9ydCB0aGUgY29ubmVjdGlvbiB0bwordGhlIGZpbGVzeXN0ZW0uICBUaGVyZSBhcmUgc2V2ZXJhbCB3YXlzIHRvIGRvIHRoaXM6CisKKyAgLSBLaWxsIHRoZSBmaWxlc3lzdGVtIGRhZW1vbi4gIFdvcmtzIGluIGNhc2Ugb2YgYSkgYW5kIGIpCisKKyAgLSBLaWxsIHRoZSBmaWxlc3lzdGVtIGRhZW1vbiBhbmQgYWxsIHVzZXJzIG9mIHRoZSBmaWxlc3lzdGVtLiAgV29ya3MKKyAgICBpbiBhbGwgY2FzZXMgZXhjZXB0IHNvbWUgbWFsaWNpb3VzIGRlYWRsb2NrcworCisgIC0gVXNlIGZvcmNlZCB1bW91bnQgKHVtb3VudCAtZikuICBXb3JrcyBpbiBhbGwgY2FzZXMgYnV0IG9ubHkgaWYKKyAgICBmaWxlc3lzdGVtIGlzIHN0aWxsIGF0dGFjaGVkIChpdCBoYXNuJ3QgYmVlbiBsYXp5IHVubW91bnRlZCkKKworICAtIEFib3J0IGZpbGVzeXN0ZW0gdGhyb3VnaCB0aGUgRlVTRSBjb250cm9sIGZpbGVzeXN0ZW0uICBNb3N0CisgICAgcG93ZXJmdWwgbWV0aG9kLCBhbHdheXMgd29ya3MuCisKK0hvdyBkbyBub24tcHJpdmlsZWdlZCBtb3VudHMgd29yaz8KK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworU2luY2UgdGhlIG1vdW50KCkgc3lzdGVtIGNhbGwgaXMgYSBwcml2aWxlZ2VkIG9wZXJhdGlvbiwgYSBoZWxwZXIKK3Byb2dyYW0gKGZ1c2VybW91bnQpIGlzIG5lZWRlZCwgd2hpY2ggaXMgaW5zdGFsbGVkIHNldHVpZCByb290LgorCitUaGUgaW1wbGljYXRpb24gb2YgcHJvdmlkaW5nIG5vbi1wcml2aWxlZ2VkIG1vdW50cyBpcyB0aGF0IHRoZSBtb3VudAorb3duZXIgbXVzdCBub3QgYmUgYWJsZSB0byB1c2UgdGhpcyBjYXBhYmlsaXR5IHRvIGNvbXByb21pc2UgdGhlCitzeXN0ZW0uICBPYnZpb3VzIHJlcXVpcmVtZW50cyBhcmlzaW5nIGZyb20gdGhpcyBhcmU6CisKKyBBKSBtb3VudCBvd25lciBzaG91bGQgbm90IGJlIGFibGUgdG8gZ2V0IGVsZXZhdGVkIHByaXZpbGVnZXMgd2l0aCB0aGUKKyAgICBoZWxwIG9mIHRoZSBtb3VudGVkIGZpbGVzeXN0ZW0KKworIEIpIG1vdW50IG93bmVyIHNob3VsZCBub3QgZ2V0IGlsbGVnaXRpbWF0ZSBhY2Nlc3MgdG8gaW5mb3JtYXRpb24gZnJvbQorICAgIG90aGVyIHVzZXJzJyBhbmQgdGhlIHN1cGVyIHVzZXIncyBwcm9jZXNzZXMKKworIEMpIG1vdW50IG93bmVyIHNob3VsZCBub3QgYmUgYWJsZSB0byBpbmR1Y2UgdW5kZXNpcmVkIGJlaGF2aW9yIGluCisgICAgb3RoZXIgdXNlcnMnIG9yIHRoZSBzdXBlciB1c2VyJ3MgcHJvY2Vzc2VzCisKK0hvdyBhcmUgcmVxdWlyZW1lbnRzIGZ1bGZpbGxlZD8KK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworIEEpIFRoZSBtb3VudCBvd25lciBjb3VsZCBnYWluIGVsZXZhdGVkIHByaXZpbGVnZXMgYnkgZWl0aGVyOgorCisgICAgIDEpIGNyZWF0aW5nIGEgZmlsZXN5c3RlbSBjb250YWluaW5nIGEgZGV2aWNlIGZpbGUsIHRoZW4gb3BlbmluZworCXRoaXMgZGV2aWNlCisKKyAgICAgMikgY3JlYXRpbmcgYSBmaWxlc3lzdGVtIGNvbnRhaW5pbmcgYSBzdWlkIG9yIHNnaWQgYXBwbGljYXRpb24sCisJdGhlbiBleGVjdXRpbmcgdGhpcyBhcHBsaWNhdGlvbgorCisgICAgVGhlIHNvbHV0aW9uIGlzIG5vdCB0byBhbGxvdyBvcGVuaW5nIGRldmljZSBmaWxlcyBhbmQgaWdub3JlCisgICAgc2V0dWlkIGFuZCBzZXRnaWQgYml0cyB3aGVuIGV4ZWN1dGluZyBwcm9ncmFtcy4gIFRvIGVuc3VyZSB0aGlzCisgICAgZnVzZXJtb3VudCBhbHdheXMgYWRkcyAibm9zdWlkIiBhbmQgIm5vZGV2IiB0byB0aGUgbW91bnQgb3B0aW9ucworICAgIGZvciBub24tcHJpdmlsZWdlZCBtb3VudHMuCisKKyBCKSBJZiBhbm90aGVyIHVzZXIgaXMgYWNjZXNzaW5nIGZpbGVzIG9yIGRpcmVjdG9yaWVzIGluIHRoZQorICAgIGZpbGVzeXN0ZW0sIHRoZSBmaWxlc3lzdGVtIGRhZW1vbiBzZXJ2aW5nIHJlcXVlc3RzIGNhbiByZWNvcmQgdGhlCisgICAgZXhhY3Qgc2VxdWVuY2UgYW5kIHRpbWluZyBvZiBvcGVyYXRpb25zIHBlcmZvcm1lZC4gIFRoaXMKKyAgICBpbmZvcm1hdGlvbiBpcyBvdGhlcndpc2UgaW5hY2Nlc3NpYmxlIHRvIHRoZSBtb3VudCBvd25lciwgc28gdGhpcworICAgIGNvdW50cyBhcyBhbiBpbmZvcm1hdGlvbiBsZWFrLgorCisgICAgVGhlIHNvbHV0aW9uIHRvIHRoaXMgcHJvYmxlbSB3aWxsIGJlIHByZXNlbnRlZCBpbiBwb2ludCAyKSBvZiBDKS4KKworIEMpIFRoZXJlIGFyZSBzZXZlcmFsIHdheXMgaW4gd2hpY2ggdGhlIG1vdW50IG93bmVyIGNhbiBpbmR1Y2UKKyAgICB1bmRlc2lyZWQgYmVoYXZpb3IgaW4gb3RoZXIgdXNlcnMnIHByb2Nlc3Nlcywgc3VjaCBhczoKKworICAgICAxKSBtb3VudGluZyBhIGZpbGVzeXN0ZW0gb3ZlciBhIGZpbGUgb3IgZGlyZWN0b3J5IHdoaWNoIHRoZSBtb3VudAorICAgICAgICBvd25lciBjb3VsZCBvdGhlcndpc2Ugbm90IGJlIGFibGUgdG8gbW9kaWZ5IChvciBjb3VsZCBvbmx5CisgICAgICAgIG1ha2UgbGltaXRlZCBtb2RpZmljYXRpb25zKS4KKworICAgICAgICBUaGlzIGlzIHNvbHZlZCBpbiBmdXNlcm1vdW50LCBieSBjaGVja2luZyB0aGUgYWNjZXNzCisgICAgICAgIHBlcm1pc3Npb25zIG9uIHRoZSBtb3VudHBvaW50IGFuZCBvbmx5IGFsbG93aW5nIHRoZSBtb3VudCBpZgorICAgICAgICB0aGUgbW91bnQgb3duZXIgY2FuIGRvIHVubGltaXRlZCBtb2RpZmljYXRpb24gKGhhcyB3cml0ZQorICAgICAgICBhY2Nlc3MgdG8gdGhlIG1vdW50cG9pbnQsIGFuZCBtb3VudHBvaW50IGlzIG5vdCBhICJzdGlja3kiCisgICAgICAgIGRpcmVjdG9yeSkKKworICAgICAyKSBFdmVuIGlmIDEpIGlzIHNvbHZlZCB0aGUgbW91bnQgb3duZXIgY2FuIGNoYW5nZSB0aGUgYmVoYXZpb3IKKyAgICAgICAgb2Ygb3RoZXIgdXNlcnMnIHByb2Nlc3Nlcy4KKworICAgICAgICAgaSkgSXQgY2FuIHNsb3cgZG93biBvciBpbmRlZmluaXRlbHkgZGVsYXkgdGhlIGV4ZWN1dGlvbiBvZiBhCisgICAgICAgICAgIGZpbGVzeXN0ZW0gb3BlcmF0aW9uIGNyZWF0aW5nIGEgRG9TIGFnYWluc3QgdGhlIHVzZXIgb3IgdGhlCisgICAgICAgICAgIHdob2xlIHN5c3RlbS4gIEZvciBleGFtcGxlIGEgc3VpZCBhcHBsaWNhdGlvbiBsb2NraW5nIGEKKyAgICAgICAgICAgc3lzdGVtIGZpbGUsIGFuZCB0aGVuIGFjY2Vzc2luZyBhIGZpbGUgb24gdGhlIG1vdW50IG93bmVyJ3MKKyAgICAgICAgICAgZmlsZXN5c3RlbSBjb3VsZCBiZSBzdG9wcGVkLCBhbmQgdGh1cyBjYXVzaW5nIHRoZSBzeXN0ZW0KKyAgICAgICAgICAgZmlsZSB0byBiZSBsb2NrZWQgZm9yZXZlci4KKworICAgICAgICAgaWkpIEl0IGNhbiBwcmVzZW50IGZpbGVzIG9yIGRpcmVjdG9yaWVzIG9mIHVubGltaXRlZCBsZW5ndGgsIG9yCisgICAgICAgICAgIGRpcmVjdG9yeSBzdHJ1Y3R1cmVzIG9mIHVubGltaXRlZCBkZXB0aCwgcG9zc2libHkgY2F1c2luZyBhCisgICAgICAgICAgIHN5c3RlbSBwcm9jZXNzIHRvIGVhdCB1cCBkaXNrc3BhY2UsIG1lbW9yeSBvciBvdGhlcgorICAgICAgICAgICByZXNvdXJjZXMsIGFnYWluIGNhdXNpbmcgRG9TLgorCisJVGhlIHNvbHV0aW9uIHRvIHRoaXMgYXMgd2VsbCBhcyBCKSBpcyBub3QgdG8gYWxsb3cgcHJvY2Vzc2VzCisJdG8gYWNjZXNzIHRoZSBmaWxlc3lzdGVtLCB3aGljaCBjb3VsZCBvdGhlcndpc2Ugbm90IGJlCisJbW9uaXRvcmVkIG9yIG1hbmlwdWxhdGVkIGJ5IHRoZSBtb3VudCBvd25lci4gIFNpbmNlIGlmIHRoZQorCW1vdW50IG93bmVyIGNhbiBwdHJhY2UgYSBwcm9jZXNzLCBpdCBjYW4gZG8gYWxsIG9mIHRoZSBhYm92ZQorCXdpdGhvdXQgdXNpbmcgYSBGVVNFIG1vdW50LCB0aGUgc2FtZSBjcml0ZXJpYSBhcyB1c2VkIGluCisJcHRyYWNlIGNhbiBiZSB1c2VkIHRvIGNoZWNrIGlmIGEgcHJvY2VzcyBpcyBhbGxvd2VkIHRvIGFjY2VzcworCXRoZSBmaWxlc3lzdGVtIG9yIG5vdC4KKworCU5vdGUgdGhhdCB0aGUgcHRyYWNlIGNoZWNrIGlzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnkgdG8KKwlwcmV2ZW50IEIvMi9pLCBpdCBpcyBlbm91Z2ggdG8gY2hlY2sgaWYgbW91bnQgb3duZXIgaGFzIGVub3VnaAorCXByaXZpbGVnZSB0byBzZW5kIHNpZ25hbCB0byB0aGUgcHJvY2VzcyBhY2Nlc3NpbmcgdGhlCisJZmlsZXN5c3RlbSwgc2luY2UgU0lHU1RPUCBjYW4gYmUgdXNlZCB0byBnZXQgYSBzaW1pbGFyIGVmZmVjdC4KKworSSB0aGluayB0aGVzZSBsaW1pdGF0aW9ucyBhcmUgdW5hY2NlcHRhYmxlPworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitJZiBhIHN5c2FkbWluIHRydXN0cyB0aGUgdXNlcnMgZW5vdWdoLCBvciBjYW4gZW5zdXJlIHRocm91Z2ggb3RoZXIKK21lYXN1cmVzLCB0aGF0IHN5c3RlbSBwcm9jZXNzZXMgd2lsbCBuZXZlciBlbnRlciBub24tcHJpdmlsZWdlZAorbW91bnRzLCBpdCBjYW4gcmVsYXggdGhlIGxhc3QgbGltaXRhdGlvbiB3aXRoIGEgInVzZXJfYWxsb3dfb3RoZXIiCitjb25maWcgb3B0aW9uLiAgSWYgdGhpcyBjb25maWcgb3B0aW9uIGlzIHNldCwgdGhlIG1vdW50aW5nIHVzZXIgY2FuCithZGQgdGhlICJhbGxvd19vdGhlciIgbW91bnQgb3B0aW9uIHdoaWNoIGRpc2FibGVzIHRoZSBjaGVjayBmb3Igb3RoZXIKK3VzZXJzJyBwcm9jZXNzZXMuCisKK0tlcm5lbCAtIHVzZXJzcGFjZSBpbnRlcmZhY2UKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworVGhlIGZvbGxvd2luZyBkaWFncmFtIHNob3dzIGhvdyBhIGZpbGVzeXN0ZW0gb3BlcmF0aW9uIChpbiB0aGlzCitleGFtcGxlIHVubGluaykgaXMgcGVyZm9ybWVkIGluIEZVU0UuCisKK05PVEU6IGV2ZXJ5dGhpbmcgaW4gdGhpcyBkZXNjcmlwdGlvbiBpcyBncmVhdGx5IHNpbXBsaWZpZWQKKworIHwgICJybSAvbW50L2Z1c2UvZmlsZSIgICAgICAgICAgICAgICB8ICBGVVNFIGZpbGVzeXN0ZW0gZGFlbW9uCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgPnN5c19yZWFkKCkKKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA+ZnVzZV9kZXZfcmVhZCgpCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICA+cmVxdWVzdF93YWl0KCkKKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgW3NsZWVwIG9uIGZjLT53YWl0cV0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorIHwgID5zeXNfdW5saW5rKCkgICAgICAgICAgICAgICAgICAgICB8CisgfCAgICA+ZnVzZV91bmxpbmsoKSAgICAgICAgICAgICAgICAgIHwKKyB8ICAgICAgW2dldCByZXF1ZXN0IGZyb20gICAgICAgICAgICAgfAorIHwgICAgICAgZmMtPnVudXNlZF9saXN0XSAgICAgICAgICAgICB8CisgfCAgICAgID5yZXF1ZXN0X3NlbmQoKSAgICAgICAgICAgICAgIHwKKyB8ICAgICAgICBbcXVldWUgcmVxIG9uIGZjLT5wZW5kaW5nXSAgfAorIHwgICAgICAgIFt3YWtlIHVwIGZjLT53YWl0cV0gICAgICAgICB8ICAgICAgICBbd29rZW4gdXBdCisgfCAgICAgICAgPnJlcXVlc3Rfd2FpdF9hbnN3ZXIoKSAgICAgIHwKKyB8ICAgICAgICAgIFtzbGVlcCBvbiByZXEtPndhaXRxXSAgICAgfAorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgPHJlcXVlc3Rfd2FpdCgpCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICBbcmVtb3ZlIHJlcSBmcm9tIGZjLT5wZW5kaW5nXQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgW2NvcHkgcmVxIHRvIHJlYWQgYnVmZmVyXQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgW2FkZCByZXEgdG8gZmMtPnByb2Nlc3NpbmddCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgPGZ1c2VfZGV2X3JlYWQoKQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA8c3lzX3JlYWQoKQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIFtwZXJmb3JtIHVubGlua10KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA+c3lzX3dyaXRlKCkKKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA+ZnVzZV9kZXZfd3JpdGUoKQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgW2xvb2sgdXAgcmVxIGluIGZjLT5wcm9jZXNzaW5nXQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgW3JlbW92ZSBmcm9tIGZjLT5wcm9jZXNzaW5nXQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgW2NvcHkgd3JpdGUgYnVmZmVyIHRvIHJlcV0KKyB8ICAgICAgICAgIFt3b2tlbiB1cF0gICAgICAgICAgICAgICAgfCAgICAgIFt3YWtlIHVwIHJlcS0+d2FpdHFdCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgPGZ1c2VfZGV2X3dyaXRlKCkKKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgPHN5c193cml0ZSgpCisgfCAgICAgICAgPHJlcXVlc3Rfd2FpdF9hbnN3ZXIoKSAgICAgIHwKKyB8ICAgICAgPHJlcXVlc3Rfc2VuZCgpICAgICAgICAgICAgICAgfAorIHwgICAgICBbYWRkIHJlcXVlc3QgdG8gICAgICAgICAgICAgICB8CisgfCAgICAgICBmYy0+dW51c2VkX2xpc3RdICAgICAgICAgICAgIHwKKyB8ICAgIDxmdXNlX3VubGluaygpICAgICAgICAgICAgICAgICAgfAorIHwgIDxzeXNfdW5saW5rKCkgICAgICAgICAgICAgICAgICAgICB8CisKK1RoZXJlIGFyZSBhIGNvdXBsZSBvZiB3YXlzIGluIHdoaWNoIHRvIGRlYWRsb2NrIGEgRlVTRSBmaWxlc3lzdGVtLgorU2luY2Ugd2UgYXJlIHRhbGtpbmcgYWJvdXQgdW5wcml2aWxlZ2VkIHVzZXJzcGFjZSBwcm9ncmFtcywKK3NvbWV0aGluZyBtdXN0IGJlIGRvbmUgYWJvdXQgdGhlc2UuCisKK1NjZW5hcmlvIDEgLSAgU2ltcGxlIGRlYWRsb2NrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgfCAgInJtIC9tbnQvZnVzZS9maWxlIiAgICAgICAgICAgICAgIHwgIEZVU0UgZmlsZXN5c3RlbSBkYWVtb24KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorIHwgID5zeXNfdW5saW5rKCIvbW50L2Z1c2UvZmlsZSIpICAgICB8CisgfCAgICBbYWNxdWlyZSBpbm9kZSBzZW1hcGhvcmUgICAgICAgIHwKKyB8ICAgICBmb3IgImZpbGUiXSAgICAgICAgICAgICAgICAgICAgfAorIHwgICAgPmZ1c2VfdW5saW5rKCkgICAgICAgICAgICAgICAgICB8CisgfCAgICAgIFtzbGVlcCBvbiByZXEtPndhaXRxXSAgICAgICAgIHwKKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgPHN5c19yZWFkKCkKKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgPnN5c191bmxpbmsoIi9tbnQvZnVzZS9maWxlIikKKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICBbYWNxdWlyZSBpbm9kZSBzZW1hcGhvcmUKKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgZm9yICJmaWxlIl0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAqREVBRExPQ0sqCisKK1RoZSBzb2x1dGlvbiBmb3IgdGhpcyBpcyB0byBhbGxvdyB0aGUgZmlsZXN5c3RlbSB0byBiZSBhYm9ydGVkLgorCitTY2VuYXJpbyAyIC0gVHJpY2t5IGRlYWRsb2NrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgb25lIG5lZWRzIGEgY2FyZWZ1bGx5IGNyYWZ0ZWQgZmlsZXN5c3RlbS4gIEl0J3MgYSB2YXJpYXRpb24gb24KK3RoZSBhYm92ZSwgb25seSB0aGUgY2FsbCBiYWNrIHRvIHRoZSBmaWxlc3lzdGVtIGlzIG5vdCBleHBsaWNpdCwKK2J1dCBpcyBjYXVzZWQgYnkgYSBwYWdlZmF1bHQuCisKKyB8ICBLYW1pa2F6ZSBmaWxlc3lzdGVtIHRocmVhZCAxICAgICAgfCAgS2FtaWthemUgZmlsZXN5c3RlbSB0aHJlYWQgMgorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgfCAgW2ZkID0gb3BlbigiL21udC9mdXNlL2ZpbGUiKV0gICAgIHwgIFtyZXF1ZXN0IHNlcnZlZCBub3JtYWxseV0KKyB8ICBbbW1hcCBmZCB0byAnYWRkciddICAgICAgICAgICAgICAgfAorIHwgIFtjbG9zZSBmZF0gICAgICAgICAgICAgICAgICAgICAgICB8ICBbRkxVU0ggdHJpZ2dlcnMgJ21hZ2ljJyBmbGFnXQorIHwgIFtyZWFkIGEgYnl0ZSBmcm9tIGFkZHJdICAgICAgICAgICB8CisgfCAgICA+ZG9fcGFnZV9mYXVsdCgpICAgICAgICAgICAgICAgIHwKKyB8ICAgICAgW2ZpbmQgb3IgY3JlYXRlIHBhZ2VdICAgICAgICAgfAorIHwgICAgICBbbG9jayBwYWdlXSAgICAgICAgICAgICAgICAgICB8CisgfCAgICAgID5mdXNlX3JlYWRwYWdlKCkgICAgICAgICAgICAgIHwKKyB8ICAgICAgICAgW3F1ZXVlIFJFQUQgcmVxdWVzdF0gICAgICAgfAorIHwgICAgICAgICBbc2xlZXAgb24gcmVxLT53YWl0cV0gICAgICB8CisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIFtyZWFkIHJlcXVlc3QgdG8gYnVmZmVyXQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBbY3JlYXRlIHJlcGx5IGhlYWRlciBiZWZvcmUgYWRkcl0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgPnN5c193cml0ZShhZGRyIC0gaGVhZGVybGVuZ3RoKQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgID5mdXNlX2Rldl93cml0ZSgpCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICBbbG9vayB1cCByZXEgaW4gZmMtPnByb2Nlc3NpbmddCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICBbcmVtb3ZlIGZyb20gZmMtPnByb2Nlc3NpbmddCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICBbY29weSB3cml0ZSBidWZmZXIgdG8gcmVxXQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICA+ZG9fcGFnZV9mYXVsdCgpCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIFtmaW5kIG9yIGNyZWF0ZSBwYWdlXQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICBbbG9jayBwYWdlXQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAqIERFQURMT0NLICoKKworU29sdXRpb24gaXMgYmFzaWNhbGx5IHRoZSBzYW1lIGFzIGFib3ZlLgorCitBbiBhZGRpdGlvbmFsIHByb2JsZW0gaXMgdGhhdCB3aGlsZSB0aGUgd3JpdGUgYnVmZmVyIGlzIGJlaW5nIGNvcGllZAordG8gdGhlIHJlcXVlc3QsIHRoZSByZXF1ZXN0IG11c3Qgbm90IGJlIGludGVycnVwdGVkL2Fib3J0ZWQuICBUaGlzIGlzCitiZWNhdXNlIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIG9mIHRoZSBjb3B5IG1heSBub3QgYmUgdmFsaWQgYWZ0ZXIgdGhlCityZXF1ZXN0IGhhcyByZXR1cm5lZC4KKworVGhpcyBpcyBzb2x2ZWQgd2l0aCBkb2luZyB0aGUgY29weSBhdG9taWNhbGx5LCBhbmQgYWxsb3dpbmcgYWJvcnQKK3doaWxlIHRoZSBwYWdlKHMpIGJlbG9uZ2luZyB0byB0aGUgd3JpdGUgYnVmZmVyIGFyZSBmYXVsdGVkIHdpdGgKK2dldF91c2VyX3BhZ2VzKCkuICBUaGUgJ3JlcS0+bG9ja2VkJyBmbGFnIGluZGljYXRlcyB3aGVuIHRoZSBjb3B5IGlzCit0YWtpbmcgcGxhY2UsIGFuZCBhYm9ydCBpcyBkZWxheWVkIHVudGlsIHRoaXMgZmxhZyBpcyB1bnNldC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZ2ZzMi1nbG9ja3MudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9nZnMyLWdsb2Nrcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZiMTJmOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZ2ZzMi1nbG9ja3MudHh0CkBAIC0wLDAgKzEsMjMxIEBACisgICAgICAgICAgICAgICAgICAgR2xvY2sgaW50ZXJuYWwgbG9ja2luZyBydWxlcworICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZG9jdW1lbnRzIHRoZSBiYXNpYyBwcmluY2lwbGVzIG9mIHRoZSBnbG9jayBzdGF0ZSBtYWNoaW5lCitpbnRlcm5hbHMuIEVhY2ggZ2xvY2sgKHN0cnVjdCBnZnMyX2dsb2NrIGluIGZzL2dmczIvaW5jb3JlLmgpCitoYXMgdHdvIG1haW4gKGludGVybmFsKSBsb2NrczoKKworIDEuIEEgc3BpbmxvY2sgKGdsX2xvY2tyZWYubG9jaykgd2hpY2ggcHJvdGVjdHMgdGhlIGludGVybmFsIHN0YXRlIHN1Y2gKKyAgICBhcyBnbF9zdGF0ZSwgZ2xfdGFyZ2V0IGFuZCB0aGUgbGlzdCBvZiBob2xkZXJzIChnbF9ob2xkZXJzKQorIDIuIEEgbm9uLWJsb2NraW5nIGJpdCBsb2NrLCBHTEZfTE9DSywgd2hpY2ggaXMgdXNlZCB0byBwcmV2ZW50IG90aGVyCisgICAgdGhyZWFkcyBmcm9tIG1ha2luZyBjYWxscyB0byB0aGUgRExNLCBldGMuIGF0IHRoZSBzYW1lIHRpbWUuIElmIGEKKyAgICB0aHJlYWQgdGFrZXMgdGhpcyBsb2NrLCBpdCBtdXN0IHRoZW4gY2FsbCBydW5fcXVldWUgKHVzdWFsbHkgdmlhIHRoZQorICAgIHdvcmtxdWV1ZSkgd2hlbiBpdCByZWxlYXNlcyBpdCBpbiBvcmRlciB0byBlbnN1cmUgYW55IHBlbmRpbmcgdGFza3MKKyAgICBhcmUgY29tcGxldGVkLgorCitUaGUgZ2xfaG9sZGVycyBsaXN0IGNvbnRhaW5zIGFsbCB0aGUgcXVldWVkIGxvY2sgcmVxdWVzdHMgKG5vdAoranVzdCB0aGUgaG9sZGVycykgYXNzb2NpYXRlZCB3aXRoIHRoZSBnbG9jay4gSWYgdGhlcmUgYXJlIGFueQoraGVsZCBsb2NrcywgdGhlbiB0aGV5IHdpbGwgYmUgY29udGlndW91cyBlbnRyaWVzIGF0IHRoZSBoZWFkCitvZiB0aGUgbGlzdC4gTG9ja3MgYXJlIGdyYW50ZWQgaW4gc3RyaWN0bHkgdGhlIG9yZGVyIHRoYXQgdGhleQorYXJlIHF1ZXVlZCwgZXhjZXB0IGZvciB0aG9zZSBtYXJrZWQgTE1fRkxBR19QUklPUklUWSB3aGljaCBhcmUKK3VzZWQgb25seSBkdXJpbmcgcmVjb3ZlcnksIGFuZCBldmVuIHRoZW4gb25seSBmb3Igam91cm5hbCBsb2Nrcy4KKworVGhlcmUgYXJlIHRocmVlIGxvY2sgc3RhdGVzIHRoYXQgdXNlcnMgb2YgdGhlIGdsb2NrIGxheWVyIGNhbiByZXF1ZXN0LAorbmFtZWx5IHNoYXJlZCAoU0gpLCBkZWZlcnJlZCAoREYpIGFuZCBleGNsdXNpdmUgKEVYKS4gVGhvc2UgdHJhbnNsYXRlCit0byB0aGUgZm9sbG93aW5nIERMTSBsb2NrIG1vZGVzOgorCitHbG9jayBtb2RlICAgIHwgRExNIGxvY2sgbW9kZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgVU4gICAgICAgIHwgICAgSVYvTkwgIFVubG9ja2VkIChubyBETE0gbG9jayBhc3NvY2lhdGVkIHdpdGggZ2xvY2spIG9yIE5MCisgICAgU0ggICAgICAgIHwgICAgUFIgICAgIChQcm90ZWN0ZWQgcmVhZCkKKyAgICBERiAgICAgICAgfCAgICBDVyAgICAgKENvbmN1cnJlbnQgd3JpdGUpCisgICAgRVggICAgICAgIHwgICAgRVggICAgIChFeGNsdXNpdmUpCisKK1RodXMgREYgaXMgYmFzaWNhbGx5IGEgc2hhcmVkIG1vZGUgd2hpY2ggaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlICJub3JtYWwiCitzaGFyZWQgbG9jayBtb2RlLCBTSC4gSW4gR0ZTMiB0aGUgREYgbW9kZSBpcyB1c2VkIGV4Y2x1c2l2ZWx5IGZvciBkaXJlY3QgSS9PCitvcGVyYXRpb25zLiBUaGUgZ2xvY2tzIGFyZSBiYXNpY2FsbHkgYSBsb2NrIHBsdXMgc29tZSByb3V0aW5lcyB3aGljaCBkZWFsCit3aXRoIGNhY2hlIG1hbmFnZW1lbnQuIFRoZSBmb2xsb3dpbmcgcnVsZXMgYXBwbHkgZm9yIHRoZSBjYWNoZToKKworR2xvY2sgbW9kZSAgIHwgIENhY2hlIGRhdGEgfCBDYWNoZSBNZXRhZGF0YSB8IERpcnR5IERhdGEgfCBEaXJ0eSBNZXRhZGF0YQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBVTiAgICAgICB8ICAgICBObyAgICAgIHwgICAgICAgTm8gICAgICAgfCAgICAgTm8gICAgIHwgICAgICBObworICAgIFNIICAgICAgIHwgICAgIFllcyAgICAgfCAgICAgICBZZXMgICAgICB8ICAgICBObyAgICAgfCAgICAgIE5vCisgICAgREYgICAgICAgfCAgICAgTm8gICAgICB8ICAgICAgIFllcyAgICAgIHwgICAgIE5vICAgICB8ICAgICAgTm8KKyAgICBFWCAgICAgICB8ICAgICBZZXMgICAgIHwgICAgICAgWWVzICAgICAgfCAgICAgWWVzICAgIHwgICAgICBZZXMKKworVGhlc2UgcnVsZXMgYXJlIGltcGxlbWVudGVkIHVzaW5nIHRoZSB2YXJpb3VzIGdsb2NrIG9wZXJhdGlvbnMgd2hpY2gKK2FyZSBkZWZpbmVkIGZvciBlYWNoIHR5cGUgb2YgZ2xvY2suIE5vdCBhbGwgdHlwZXMgb2YgZ2xvY2tzIHVzZQorYWxsIHRoZSBtb2Rlcy4gT25seSBpbm9kZSBnbG9ja3MgdXNlIHRoZSBERiBtb2RlIGZvciBleGFtcGxlLgorCitUYWJsZSBvZiBnbG9jayBvcGVyYXRpb25zIGFuZCBwZXIgdHlwZSBjb25zdGFudHM6CisKK0ZpZWxkICAgICAgICAgICAgfCBQdXJwb3NlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitnb194bW90ZV90aCAgICAgIHwgQ2FsbGVkIGJlZm9yZSByZW1vdGUgc3RhdGUgY2hhbmdlIChlLmcuIHRvIHN5bmMgZGlydHkgZGF0YSkKK2dvX3htb3RlX2JoICAgICAgfCBDYWxsZWQgYWZ0ZXIgcmVtb3RlIHN0YXRlIGNoYW5nZSAoZS5nLiB0byByZWZpbGwgY2FjaGUpCitnb19pbnZhbCAgICAgICAgIHwgQ2FsbGVkIGlmIHJlbW90ZSBzdGF0ZSBjaGFuZ2UgcmVxdWlyZXMgaW52YWxpZGF0aW5nIHRoZSBjYWNoZQorZ29fZGVtb3RlX29rICAgICB8IFJldHVybnMgYm9vbGVhbiB2YWx1ZSBvZiB3aGV0aGVyIGl0cyBvayB0byBkZW1vdGUgYSBnbG9jaworICAgICAgICAgICAgICAgICB8IChlLmcuIGNoZWNrcyB0aW1lb3V0LCBhbmQgdGhhdCB0aGVyZSBpcyBubyBjYWNoZWQgZGF0YSkKK2dvX2xvY2sgICAgICAgICAgfCBDYWxsZWQgZm9yIHRoZSBmaXJzdCBsb2NhbCBob2xkZXIgb2YgYSBsb2NrCitnb191bmxvY2sgICAgICAgIHwgQ2FsbGVkIG9uIHRoZSBmaW5hbCBsb2NhbCB1bmxvY2sgb2YgYSBsb2NrCitnb19kdW1wICAgICAgICAgIHwgQ2FsbGVkIHRvIHByaW50IGNvbnRlbnQgb2Ygb2JqZWN0IGZvciBkZWJ1Z2ZzIGZpbGUsIG9yIG9uCisgICAgICAgICAgICAgICAgIHwgZXJyb3IgdG8gZHVtcCBnbG9jayB0byB0aGUgbG9nLgorZ29fdHlwZSAgICAgICAgICB8IFRoZSB0eXBlIG9mIHRoZSBnbG9jaywgTE1fVFlQRV8uLi4uLgorZ29fY2FsbGJhY2sJIHwgQ2FsbGVkIGlmIHRoZSBETE0gc2VuZHMgYSBjYWxsYmFjayB0byBkcm9wIHRoaXMgbG9jaworZ29fZmxhZ3MJIHwgR0xPRl9BU1BBQ0UgaXMgc2V0LCBpZiB0aGUgZ2xvY2sgaGFzIGFuIGFkZHJlc3Mgc3BhY2UKKyAgICAgICAgICAgICAgICAgfCBhc3NvY2lhdGVkIHdpdGggaXQKKworVGhlIG1pbmltdW0gaG9sZCB0aW1lIGZvciBlYWNoIGxvY2sgaXMgdGhlIHRpbWUgYWZ0ZXIgYSByZW1vdGUgbG9jaworZ3JhbnQgZm9yIHdoaWNoIHdlIGlnbm9yZSByZW1vdGUgZGVtb3RlIHJlcXVlc3RzLiBUaGlzIGlzIGluIG9yZGVyIHRvCitwcmV2ZW50IGEgc2l0dWF0aW9uIHdoZXJlIGxvY2tzIGFyZSBiZWluZyBib3VuY2VkIGFyb3VuZCB0aGUgY2x1c3RlcgorZnJvbSBub2RlIHRvIG5vZGUgd2l0aCBub25lIG9mIHRoZSBub2RlcyBtYWtpbmcgYW55IHByb2dyZXNzLiBUaGlzCit0ZW5kcyB0byBzaG93IHVwIG1vc3Qgd2l0aCBzaGFyZWQgbW1hcGVkIGZpbGVzIHdoaWNoIGFyZSBiZWluZyB3cml0dGVuCit0byBieSBtdWx0aXBsZSBub2Rlcy4gQnkgZGVsYXlpbmcgdGhlIGRlbW90aW9uIGluIHJlc3BvbnNlIHRvIGEKK3JlbW90ZSBjYWxsYmFjaywgdGhhdCBnaXZlcyB0aGUgdXNlcnNwYWNlIHByb2dyYW0gdGltZSB0byBtYWtlCitzb21lIHByb2dyZXNzIGJlZm9yZSB0aGUgcGFnZXMgYXJlIHVubWFwcGVkLgorCitUaGVyZSBpcyBhIHBsYW4gdG8gdHJ5IGFuZCByZW1vdmUgdGhlIGdvX2xvY2sgYW5kIGdvX3VubG9jayBjYWxsYmFja3MKK2lmIHBvc3NpYmxlLCBpbiBvcmRlciB0byB0cnkgYW5kIHNwZWVkIHVwIHRoZSBmYXN0IHBhdGggdGhvdWdoIHRoZSBsb2NraW5nLgorQWxzbywgZXZlbnR1YWxseSB3ZSBob3BlIHRvIG1ha2UgdGhlIGdsb2NrICJFWCIgbW9kZSBsb2NhbGx5IHNoYXJlZAorc3VjaCB0aGF0IGFueSBsb2NhbCBsb2NraW5nIHdpbGwgYmUgZG9uZSB3aXRoIHRoZSBpX211dGV4IGFzIHJlcXVpcmVkCityYXRoZXIgdGhhbiB2aWEgdGhlIGdsb2NrLgorCitMb2NraW5nIHJ1bGVzIGZvciBnbG9jayBvcGVyYXRpb25zOgorCitPcGVyYXRpb24gICAgIHwgIEdMRl9MT0NLIGJpdCBsb2NrIGhlbGQgfCAgZ2xfbG9ja3JlZi5sb2NrIHNwaW5sb2NrIGhlbGQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2dvX3htb3RlX3RoICAgfCAgICAgICBZZXMgICAgICAgICAgICAgICB8ICAgICAgIE5vCitnb194bW90ZV9iaCAgIHwgICAgICAgWWVzICAgICAgICAgICAgICAgfCAgICAgICBObworZ29faW52YWwgICAgICB8ICAgICAgIFllcyAgICAgICAgICAgICAgIHwgICAgICAgTm8KK2dvX2RlbW90ZV9vayAgfCAgICAgICBTb21ldGltZXMgICAgICAgICB8ICAgICAgIFllcworZ29fbG9jayAgICAgICB8ICAgICAgIFllcyAgICAgICAgICAgICAgIHwgICAgICAgTm8KK2dvX3VubG9jayAgICAgfCAgICAgICBZZXMgICAgICAgICAgICAgICB8ICAgICAgIE5vCitnb19kdW1wICAgICAgIHwgICAgICAgU29tZXRpbWVzICAgICAgICAgfCAgICAgICBZZXMKK2dvX2NhbGxiYWNrICAgfCAgICAgICBTb21ldGltZXMgKE4vQSkgICB8ICAgICAgIFllcworCitOLkIuIE9wZXJhdGlvbnMgbXVzdCBub3QgZHJvcCBlaXRoZXIgdGhlIGJpdCBsb2NrIG9yIHRoZSBzcGlubG9jaworaWYgaXRzIGhlbGQgb24gZW50cnkuIGdvX2R1bXAgYW5kIGRvX2RlbW90ZV9vayBtdXN0IG5ldmVyIGJsb2NrLgorTm90ZSB0aGF0IGdvX2R1bXAgd2lsbCBvbmx5IGJlIGNhbGxlZCBpZiB0aGUgZ2xvY2sncyBzdGF0ZQoraW5kaWNhdGVzIHRoYXQgaXQgaXMgY2FjaGluZyB1cHRvZGF0ZSBkYXRhLgorCitHbG9jayBsb2NraW5nIG9yZGVyIHdpdGhpbiBHRlMyOgorCisgMS4gaV9tdXRleCAoaWYgcmVxdWlyZWQpCisgMi4gUmVuYW1lIGdsb2NrIChmb3IgcmVuYW1lIG9ubHkpCisgMy4gSW5vZGUgZ2xvY2socykKKyAgICAoUGFyZW50cyBiZWZvcmUgY2hpbGRyZW4sIGlub2RlcyBhdCAic2FtZSBsZXZlbCIgd2l0aCBzYW1lIHBhcmVudCBpbgorICAgICBsb2NrIG51bWJlciBvcmRlcikKKyA0LiBSZ3JwIGdsb2NrKHMpIChmb3IgKGRlKWFsbG9jYXRpb24gb3BlcmF0aW9ucykKKyA1LiBUcmFuc2FjdGlvbiBnbG9jayAodmlhIGdmczJfdHJhbnNfYmVnaW4pIGZvciBub24tcmVhZCBvcGVyYXRpb25zCisgNi4gUGFnZSBsb2NrICAoYWx3YXlzIGxhc3QsIHZlcnkgaW1wb3J0YW50ISkKKworVGhlcmUgYXJlIHR3byBnbG9ja3MgcGVyIGlub2RlLiBPbmUgZGVhbHMgd2l0aCBhY2Nlc3MgdG8gdGhlIGlub2RlCitpdHNlbGYgKGxvY2tpbmcgb3JkZXIgYXMgYWJvdmUpLCBhbmQgdGhlIG90aGVyLCBrbm93biBhcyB0aGUgaW9wZW4KK2dsb2NrIGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgaV9ubGluayBmaWVsZCBpbiB0aGUgaW5vZGUgdG8KK2RldGVybWluZSB0aGUgbGlmZXRpbWUgb2YgdGhlIGlub2RlIGluIHF1ZXN0aW9uLiBMb2NraW5nIG9mIGlub2RlcworaXMgb24gYSBwZXItaW5vZGUgYmFzaXMuIExvY2tpbmcgb2YgcmdycHMgaXMgb24gYSBwZXIgcmdycCBiYXNpcy4KK0luIGdlbmVyYWwgd2UgcHJlZmVyIHRvIGxvY2sgbG9jYWwgbG9ja3MgcHJpb3IgdG8gY2x1c3RlciBsb2Nrcy4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdsb2NrIFN0YXRpc3RpY3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgc3RhdHMgYXJlIGRpdmlkZWQgaW50byB0d28gc2V0czogdGhvc2UgcmVsYXRpbmcgdG8gdGhlCitzdXBlciBibG9jayBhbmQgdGhvc2UgcmVsYXRpbmcgdG8gYW4gaW5kaXZpZHVhbCBnbG9jay4gVGhlCitzdXBlciBibG9jayBzdGF0cyBhcmUgZG9uZSBvbiBhIHBlciBjcHUgYmFzaXMgaW4gb3JkZXIgdG8KK3RyeSBhbmQgcmVkdWNlIHRoZSBvdmVyaGVhZCBvZiBnYXRoZXJpbmcgdGhlbS4gVGhleSBhcmUgYWxzbworZnVydGhlciBkaXZpZGVkIGJ5IGdsb2NrIHR5cGUuIEFsbCB0aW1pbmdzIGFyZSBpbiBuYW5vc2Vjb25kcy4KKworSW4gdGhlIGNhc2Ugb2YgYm90aCB0aGUgc3VwZXIgYmxvY2sgYW5kIGdsb2NrIHN0YXRpc3RpY3MsCit0aGUgc2FtZSBpbmZvcm1hdGlvbiBpcyBnYXRoZXJlZCBpbiBlYWNoIGNhc2UuIFRoZSBzdXBlcgorYmxvY2sgdGltaW5nIHN0YXRpc3RpY3MgYXJlIHVzZWQgdG8gcHJvdmlkZSBkZWZhdWx0IHZhbHVlcyBmb3IKK3RoZSBnbG9jayB0aW1pbmcgc3RhdGlzdGljcywgc28gdGhhdCBuZXdseSBjcmVhdGVkIGdsb2Nrcworc2hvdWxkIGhhdmUsIGFzIGZhciBhcyBwb3NzaWJsZSwgYSBzZW5zaWJsZSBzdGFydGluZyBwb2ludC4KK1RoZSBwZXItZ2xvY2sgY291bnRlcnMgYXJlIGluaXRpYWxpc2VkIHRvIHplcm8gd2hlbiB0aGUKK2dsb2NrIGlzIGNyZWF0ZWQuIFRoZSBwZXItZ2xvY2sgc3RhdGlzdGljcyBhcmUgbG9zdCB3aGVuCit0aGUgZ2xvY2sgaXMgZWplY3RlZCBmcm9tIG1lbW9yeS4KKworVGhlIHN0YXRpc3RpY3MgYXJlIGRpdmlkZWQgaW50byB0aHJlZSBwYWlycyBvZiBtZWFuIGFuZAordmFyaWFuY2UsIHBsdXMgdHdvIGNvdW50ZXJzLiBUaGUgbWVhbi92YXJpYW5jZSBwYWlycyBhcmUKK3Ntb290aGVkIGV4cG9uZW50aWFsIGVzdGltYXRlcyBhbmQgdGhlIGFsZ29yaXRobSB1c2VkIGlzCitvbmUgd2hpY2ggd2lsbCBiZSB2ZXJ5IGZhbWlsaWFyIHRvIHRob3NlIHVzZWQgdG8gY2FsY3VsYXRpb24KK29mIHJvdW5kIHRyaXAgdGltZXMgaW4gbmV0d29yayBjb2RlLiBTZWUgIlRDUC9JUCBJbGx1c3RyYXRlZCwKK1ZvbHVtZSAxIiwgVy4gUmljaGFyZCBTdGV2ZW5zLCBzZWN0IDIxLjMsICJSb3VuZC1UcmlwIFRpbWUgTWVhc3VyZW1lbnQiLAorcC4gMjk5IGFuZCBvbndhcmRzLiBBbHNvLCBWb2x1bWUgMiwgU2VjdC4gMjUuMTAsIHAuIDgzOCBhbmQgb253YXJkcy4KK1VubGlrZSB0aGUgVENQL0lQIElsbHVzdHJhdGVkIGNhc2UsIHRoZSBtZWFuIGFuZCB2YXJpYW5jZSBhcmUKK25vdCBzY2FsZWQsIGJ1dCBhcmUgaW4gdW5pdHMgb2YgaW50ZWdlciBuYW5vc2Vjb25kcy4KKworVGhlIHRocmVlIHBhaXJzIG9mIG1lYW4vdmFyaWFuY2UgbWVhc3VyZSB0aGUgZm9sbG93aW5nCit0aGluZ3M6CisKKyAxLiBETE0gbG9jayB0aW1lIChub24tYmxvY2tpbmcgcmVxdWVzdHMpCisgMi4gRExNIGxvY2sgdGltZSAoYmxvY2tpbmcgcmVxdWVzdHMpCisgMy4gSW50ZXItcmVxdWVzdCB0aW1lIChhZ2FpbiB0byB0aGUgRExNKQorCitBIG5vbi1ibG9ja2luZyByZXF1ZXN0IGlzIG9uZSB3aGljaCB3aWxsIGNvbXBsZXRlIHJpZ2h0Cithd2F5LCB3aGF0ZXZlciB0aGUgc3RhdGUgb2YgdGhlIERMTSBsb2NrIGluIHF1ZXN0aW9uLiBUaGF0CitjdXJyZW50bHkgbWVhbnMgYW55IHJlcXVlc3RzIHdoZW4gKGEpIHRoZSBjdXJyZW50IHN0YXRlIG9mCit0aGUgbG9jayBpcyBleGNsdXNpdmUsIGkuZS4gYSBsb2NrIGRlbW90aW9uIChiKSB0aGUgcmVxdWVzdGVkCitzdGF0ZSBpcyBlaXRoZXIgbnVsbCBvciB1bmxvY2tlZCAoYWdhaW4sIGEgZGVtb3Rpb24pIG9yIChjKSB0aGUKKyJ0cnkgbG9jayIgZmxhZyBpcyBzZXQuIEEgYmxvY2tpbmcgcmVxdWVzdCBjb3ZlcnMgYWxsIHRoZSBvdGhlcgorbG9jayByZXF1ZXN0cy4KKworVGhlcmUgYXJlIHR3byBjb3VudGVycy4gVGhlIGZpcnN0IGlzIHRoZXJlIHByaW1hcmlseSB0byBzaG93Citob3cgbWFueSBsb2NrIHJlcXVlc3RzIGhhdmUgYmVlbiBtYWRlLCBhbmQgdGh1cyBob3cgbXVjaCBkYXRhCitoYXMgZ29uZSBpbnRvIHRoZSBtZWFuL3ZhcmlhbmNlIGNhbGN1bGF0aW9ucy4gVGhlIG90aGVyIGNvdW50ZXIKK2lzIGNvdW50aW5nIHF1ZXVpbmcgb2YgaG9sZGVycyBhdCB0aGUgdG9wIGxheWVyIG9mIHRoZSBnbG9jaworY29kZS4gSG9wZWZ1bGx5IHRoYXQgbnVtYmVyIHdpbGwgYmUgYSBsb3QgbGFyZ2VyIHRoYW4gdGhlIG51bWJlcgorb2YgZGxtIGxvY2sgcmVxdWVzdHMgaXNzdWVkLgorCitTbyB3aHkgZ2F0aGVyIHRoZXNlIHN0YXRpc3RpY3M/IFRoZXJlIGFyZSBzZXZlcmFsIHJlYXNvbnMKK3dlJ2QgbGlrZSB0byBnZXQgYSBiZXR0ZXIgaWRlYSBvZiB0aGVzZSB0aW1pbmdzOgorCisxLiBUbyBiZSBhYmxlIHRvIGJldHRlciBzZXQgdGhlIGdsb2NrICJtaW4gaG9sZCB0aW1lIgorMi4gVG8gc3BvdCBwZXJmb3JtYW5jZSBpc3N1ZXMgbW9yZSBlYXNpbHkKKzMuIFRvIGltcHJvdmUgdGhlIGFsZ29yaXRobSBmb3Igc2VsZWN0aW5nIHJlc291cmNlIGdyb3VwcyBmb3IKK2FsbG9jYXRpb24gKHRvIGJhc2UgaXQgb24gbG9jayB3YWl0IHRpbWUsIHJhdGhlciB0aGFuIGJsaW5kbHkKK3VzaW5nIGEgInRyeSBsb2NrIikKKworRHVlIHRvIHRoZSBzbW9vdGhpbmcgYWN0aW9uIG9mIHRoZSB1cGRhdGVzLCBhIHN0ZXAgY2hhbmdlIGluCitzb21lIGlucHV0IHF1YW50aXR5IGJlaW5nIHNhbXBsZWQgd2lsbCBvbmx5IGZ1bGx5IGJlIHRha2VuCitpbnRvIGFjY291bnQgYWZ0ZXIgOCBzYW1wbGVzIChvciA0IGZvciB0aGUgdmFyaWFuY2UpIGFuZCB0aGlzCituZWVkcyB0byBiZSBjYXJlZnVsbHkgY29uc2lkZXJlZCB3aGVuIGludGVycHJldGluZyB0aGUKK3Jlc3VsdHMuCisKK0tub3dpbmcgYm90aCB0aGUgdGltZSBpdCB0YWtlcyBhIGxvY2sgcmVxdWVzdCB0byBjb21wbGV0ZSBhbmQKK3RoZSBhdmVyYWdlIHRpbWUgYmV0d2VlbiBsb2NrIHJlcXVlc3RzIGZvciBhIGdsb2NrIG1lYW5zIHdlCitjYW4gY29tcHV0ZSB0aGUgdG90YWwgcGVyY2VudGFnZSBvZiB0aGUgdGltZSBmb3Igd2hpY2ggdGhlCitub2RlIGlzIGFibGUgdG8gdXNlIGEgZ2xvY2sgdnMuIHRpbWUgdGhhdCB0aGUgcmVzdCBvZiB0aGUKK2NsdXN0ZXIgaGFzIGl0cyBzaGFyZS4gVGhhdCB3aWxsIGJlIHZlcnkgdXNlZnVsIHdoZW4gc2V0dGluZwordGhlIGxvY2sgbWluIGhvbGQgdGltZS4KKworR3JlYXQgY2FyZSBoYXMgYmVlbiB0YWtlbiB0byBlbnN1cmUgdGhhdCB3ZQorbWVhc3VyZSBleGFjdGx5IHRoZSBxdWFudGl0aWVzIHRoYXQgd2Ugd2FudCwgYXMgYWNjdXJhdGVseQorYXMgcG9zc2libGUuIFRoZXJlIGFyZSBhbHdheXMgaW5hY2N1cmFjaWVzIGluIGFueQorbWVhc3VyaW5nIHN5c3RlbSwgYnV0IEkgaG9wZSB0aGlzIGlzIGFzIGFjY3VyYXRlIGFzIHdlCitjYW4gcmVhc29uYWJseSBtYWtlIGl0LgorCitQZXIgc2Igc3RhdHMgY2FuIGJlIGZvdW5kIGhlcmU6Cisvc3lzL2tlcm5lbC9kZWJ1Zy9nZnMyLzxmc25hbWU+L3Nic3RhdHMKK1BlciBnbG9jayBzdGF0cyBjYW4gYmUgZm91bmQgaGVyZToKKy9zeXMva2VybmVsL2RlYnVnL2dmczIvPGZzbmFtZT4vZ2xzdGF0cworCitBc3N1bWluZyB0aGF0IGRlYnVnZnMgaXMgbW91bnRlZCBvbiAvc3lzL2tlcm5lbC9kZWJ1ZyBhbmQgYWxzbwordGhhdCA8ZnNuYW1lPiBpcyByZXBsYWNlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBnZnMyIGZpbGVzeXN0ZW0KK2luIHF1ZXN0aW9uLgorCitUaGUgYWJicmV2aWF0aW9ucyB1c2VkIGluIHRoZSBvdXRwdXQgYXMgYXJlIGZvbGxvd3M6CisKK3NydHQgICAgIC0gU21vb3RoZWQgcm91bmQgdHJpcCB0aW1lIGZvciBub24tYmxvY2tpbmcgZGxtIHJlcXVlc3RzCitzcnR0dmFyICAtIFZhcmlhbmNlIGVzdGltYXRlIGZvciBzcnR0CitzcnR0YiAgICAtIFNtb290aGVkIHJvdW5kIHRyaXAgdGltZSBmb3IgKHBvdGVudGlhbGx5KSBibG9ja2luZyBkbG0gcmVxdWVzdHMKK3NydHR2YXJiIC0gVmFyaWFuY2UgZXN0aW1hdGUgZm9yIHNydHRiCitzaXJ0ICAgICAtIFNtb290aGVkIGludGVyLXJlcXVlc3QgdGltZSAoZm9yIGRsbSByZXF1ZXN0cykKK3NpcnR2YXIgIC0gVmFyaWFuY2UgZXN0aW1hdGUgZm9yIHNpcnQKK2RsbSAgICAgIC0gTnVtYmVyIG9mIGRsbSByZXF1ZXN0cyBtYWRlIChkY250IGluIGdsc3RhdHMgZmlsZSkKK3F1ZXVlICAgIC0gTnVtYmVyIG9mIGdsb2NrIHJlcXVlc3RzIHF1ZXVlZCAocWNudCBpbiBnbHN0YXRzIGZpbGUpCisKK1RoZSBzYnN0YXRzIGZpbGUgY29udGFpbnMgYSBzZXQgb2YgdGhlc2Ugc3RhdHMgZm9yIGVhY2ggZ2xvY2sgdHlwZSAoc28gOCBsaW5lcworZm9yIGVhY2ggdHlwZSkgYW5kIGZvciBlYWNoIGNwdSAob25lIGNvbHVtbiBwZXIgY3B1KS4gVGhlIGdsc3RhdHMgZmlsZSBjb250YWlucworYSBzZXQgb2YgdGhlc2Ugc3RhdHMgZm9yIGVhY2ggZ2xvY2sgaW4gYSBzaW1pbGFyIGZvcm1hdCB0byB0aGUgZ2xvY2tzIGZpbGUsIGJ1dAordXNpbmcgdGhlIGZvcm1hdCBtZWFuL3ZhcmlhbmNlIGZvciBlYWNoIG9mIHRoZSB0aW1pbmcgc3RhdHMuCisKK1RoZSBnZnMyX2dsb2NrX2xvY2tfdGltZSB0cmFjZXBvaW50IHByaW50cyBvdXQgdGhlIGN1cnJlbnQgdmFsdWVzIG9mIHRoZSBzdGF0cworZm9yIHRoZSBnbG9jayBpbiBxdWVzdGlvbiwgYWxvbmcgd2l0aCBzb21lIGFkZGl0aW9uIGluZm9ybWF0aW9uIG9uIGVhY2ggZGxtCityZXBseSB0aGF0IGlzIHJlY2VpdmVkOgorCitzdGF0dXMgLSBUaGUgc3RhdHVzIG9mIHRoZSBkbG0gcmVxdWVzdAorZmxhZ3MgIC0gVGhlIGRsbSByZXF1ZXN0IGZsYWdzCit0ZGlmZiAgLSBUaGUgdGltZSB0YWtlbiBieSB0aGlzIHNwZWNpZmljIHJlcXVlc3QKKyhyZW1haW5pbmcgZmllbGRzIGFzIHBlciBhYm92ZSBsaXN0KQorCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZ2ZzMi11ZXZlbnRzLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZ2ZzMi11ZXZlbnRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWExOWViCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9nZnMyLXVldmVudHMudHh0CkBAIC0wLDAgKzEsMTAwIEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZXZlbnRzIGFuZCBHRlMyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PT09PT09PT09PT09PT09PQorCitEdXJpbmcgdGhlIGxpZmV0aW1lIG9mIGEgR0ZTMiBtb3VudCwgYSBudW1iZXIgb2YgdWV2ZW50cyBhcmUgZ2VuZXJhdGVkLgorVGhpcyBkb2N1bWVudCBleHBsYWlucyB3aGF0IHRoZSBldmVudHMgYXJlIGFuZCB3aGF0IHRoZXkgYXJlIHVzZWQKK2ZvciAoYnkgZ2ZzX2NvbnRyb2xkIGluIGdmczItdXRpbHMpLgorCitBIGxpc3Qgb2YgR0ZTMiB1ZXZlbnRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisxLiBBREQKKworVGhlIEFERCBldmVudCBvY2N1cnMgYXQgbW91bnQgdGltZS4gSXQgd2lsbCBhbHdheXMgYmUgdGhlIGZpcnN0Cit1ZXZlbnQgZ2VuZXJhdGVkIGJ5IHRoZSBuZXdseSBjcmVhdGVkIGZpbGVzeXN0ZW0uIElmIHRoZSBtb3VudAoraXMgc3VjY2Vzc2Z1bCwgYW4gT05MSU5FIHVldmVudCB3aWxsIGZvbGxvdy4gIElmIGl0IGlzIG5vdCBzdWNjZXNzZnVsCit0aGVuIGEgUkVNT1ZFIHVldmVudCB3aWxsIGZvbGxvdy4KKworVGhlIEFERCB1ZXZlbnQgaGFzIHR3byBlbnZpcm9ubWVudCB2YXJpYWJsZXM6IFNQRUNUQVRPUj1bMHwxXQorYW5kIFJET05MWT1bMHwxXSB0aGF0IHNwZWNpZnkgdGhlIHNwZWN0YXRvciBzdGF0dXMgKGEgcmVhZC1vbmx5IG1vdW50Cit3aXRoIG5vIGpvdXJuYWwgYXNzaWduZWQpLCBhbmQgcmVhZC1vbmx5ICh3aXRoIGpvdXJuYWwgYXNzaWduZWQpIHN0YXR1cworb2YgdGhlIGZpbGVzeXN0ZW0gcmVzcGVjdGl2ZWx5LgorCisyLiBPTkxJTkUKKworVGhlIE9OTElORSB1ZXZlbnQgaXMgZ2VuZXJhdGVkIGFmdGVyIGEgc3VjY2Vzc2Z1bCBtb3VudCBvciByZW1vdW50LiBJdAoraGFzIHRoZSBzYW1lIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcyB0aGUgQUREIHVldmVudC4gVGhlIE9OTElORQordWV2ZW50LCBhbG9uZyB3aXRoIHRoZSB0d28gZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciBzcGVjdGF0b3IgYW5kCitSRE9OTFkgYXJlIGEgcmVsYXRpdmVseSByZWNlbnQgYWRkaXRpb24gKDIuNi4zMi1yYyspIGFuZCB3aWxsIG5vdAorYmUgZ2VuZXJhdGVkIGJ5IG9sZGVyIGtlcm5lbHMuCisKKzMuIENIQU5HRQorCitUaGUgQ0hBTkdFIHVldmVudCBpcyB1c2VkIGluIHR3byBwbGFjZXMuIE9uZSBpcyB3aGVuIHJlcG9ydGluZyB0aGUKK3N1Y2Nlc3NmdWwgbW91bnQgb2YgdGhlIGZpbGVzeXN0ZW0gYnkgdGhlIGZpcnN0IG5vZGUgKEZJUlNUTU9VTlQ9RG9uZSkuCitUaGlzIGlzIHVzZWQgYXMgYSBzaWduYWwgYnkgZ2ZzX2NvbnRyb2xkIHRoYXQgaXQgaXMgdGhlbiBvayBmb3Igb3RoZXIKK25vZGVzIGluIHRoZSBjbHVzdGVyIHRvIG1vdW50IHRoZSBmaWxlc3lzdGVtLgorCitUaGUgb3RoZXIgQ0hBTkdFIHVldmVudCBpcyB1c2VkIHRvIGluZm9ybSBvZiB0aGUgY29tcGxldGlvbgorb2Ygam91cm5hbCByZWNvdmVyeSBmb3Igb25lIG9mIHRoZSBmaWxlc3lzdGVtcyBqb3VybmFscy4gSXQgaGFzCit0d28gZW52aXJvbm1lbnQgdmFyaWFibGVzLCBKSUQ9IHdoaWNoIHNwZWNpZmllcyB0aGUgam91cm5hbCBpZCB3aGljaAoraGFzIGp1c3QgYmVlbiByZWNvdmVyZWQsIGFuZCBSRUNPVkVSWT1bRG9uZXxGYWlsZWRdIHRvIGluZGljYXRlIHRoZQorc3VjY2VzcyAob3Igb3RoZXJ3aXNlKSBvZiB0aGUgb3BlcmF0aW9uLiBUaGVzZSB1ZXZlbnRzIGFyZSBnZW5lcmF0ZWQKK2ZvciBldmVyeSBqb3VybmFsIHJlY292ZXJlZCwgd2hldGhlciBpdCBpcyBkdXJpbmcgdGhlIGluaXRpYWwgbW91bnQKK3Byb2Nlc3Mgb3IgYXMgdGhlIHJlc3VsdCBvZiBnZnNfY29udHJvbGQgcmVxdWVzdGluZyBhIHNwZWNpZmljIGpvdXJuYWwKK3JlY292ZXJ5IHZpYSB0aGUgL3N5cy9mcy9nZnMyLzxmc25hbWU+L2xvY2tfbW9kdWxlL3JlY292ZXJ5IGZpbGUuCisKK0JlY2F1c2UgdGhlIENIQU5HRSB1ZXZlbnQgd2FzIHVzZWQgKGluIGVhcmx5IHZlcnNpb25zIG9mIGdmc19jb250cm9sZCkKK3dpdGhvdXQgY2hlY2tpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBkaXNjb3ZlciB0aGUgc3RhdGUsIHdlCitjYW5ub3QgYWRkIGFueSBtb3JlIGZ1bmN0aW9ucyB0byBpdCB3aXRob3V0IHJ1bm5pbmcgdGhlIHJpc2sgb2YKK3NvbWVvbmUgdXNpbmcgYW4gb2xkZXIgdmVyc2lvbiBvZiB0aGUgdXNlciB0b29scyBhbmQgYnJlYWtpbmcgdGhlaXIKK2NsdXN0ZXIuIEZvciB0aGlzIHJlYXNvbiB0aGUgT05MSU5FIHVldmVudCB3YXMgdXNlZCB3aGVuIGFkZGluZyBhIG5ldwordWV2ZW50IGZvciBhIHN1Y2Nlc3NmdWwgbW91bnQgb3IgcmVtb3VudC4KKworNC4gT0ZGTElORQorCitUaGUgT0ZGTElORSB1ZXZlbnQgaXMgb25seSBnZW5lcmF0ZWQgZHVlIHRvIGZpbGVzeXN0ZW0gZXJyb3JzIGFuZCBpcyB1c2VkCithcyBwYXJ0IG9mIHRoZSAid2l0aGRyYXciIG1lY2hhbmlzbS4gQ3VycmVudGx5IHRoaXMgZG9lc24ndCBnaXZlIGFueQoraW5mb3JtYXRpb24gYWJvdXQgd2hhdCB0aGUgZXJyb3IgaXMsIHdoaWNoIGlzIHNvbWV0aGluZyB0aGF0IG5lZWRzIHRvCitiZSBmaXhlZC4KKworNS4gUkVNT1ZFCisKK1RoZSBSRU1PVkUgdWV2ZW50IGlzIGdlbmVyYXRlZCBhdCB0aGUgZW5kIG9mIGFuIHVuc3VjY2Vzc2Z1bCBtb3VudAorb3IgYXQgdGhlIGVuZCBvZiBhIHVtb3VudCBvZiB0aGUgZmlsZXN5c3RlbS4gQWxsIFJFTU9WRSB1ZXZlbnRzIHdpbGwKK2hhdmUgYmVlbiBwcmVjZWRlZCBieSBhdCBsZWFzdCBhbiBBREQgdWV2ZW50IGZvciB0aGUgc2FtZSBmaWxlc3lzdGVtLAorYW5kIHVubGlrZSB0aGUgb3RoZXIgdWV2ZW50cyBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSB0aGUga2VybmVsJ3MKK2tvYmplY3Qgc3Vic3lzdGVtLgorCisKK0luZm9ybWF0aW9uIGNvbW1vbiB0byBhbGwgR0ZTMiB1ZXZlbnRzICh1ZXZlbnQgZW52aXJvbm1lbnQgdmFyaWFibGVzKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisxLiBMT0NLVEFCTEU9CisKK1RoZSBMT0NLVEFCTEUgaXMgYSBzdHJpbmcsIGFzIHN1cHBsaWVkIG9uIHRoZSBtb3VudCBjb21tYW5kCitsaW5lIChsb2NrdGFibGU9KSBvciB2aWEgZnN0YWIuIEl0IGlzIHVzZWQgYXMgYSBmaWxlc3lzdGVtIGxhYmVsCithcyB3ZWxsIGFzIHByb3ZpZGluZyB0aGUgaW5mb3JtYXRpb24gZm9yIGEgbG9ja19kbG0gbW91bnQgdG8gYmUKK2FibGUgdG8gam9pbiB0aGUgY2x1c3Rlci4KKworMi4gTE9DS1BST1RPPQorCitUaGUgTE9DS1BST1RPIGlzIGEgc3RyaW5nLCBhbmQgaXRzIHZhbHVlIGRlcGVuZHMgb24gd2hhdCBpcyBzZXQKK29uIHRoZSBtb3VudCBjb21tYW5kIGxpbmUsIG9yIHZpYSBmc3RhYi4gSXQgd2lsbCBiZSBlaXRoZXIKK2xvY2tfbm9sb2NrIG9yIGxvY2tfZGxtLiBJbiB0aGUgZnV0dXJlIG90aGVyIGxvY2sgbWFuYWdlcnMKK21heSBiZSBzdXBwb3J0ZWQuCisKKzMuIEpPVVJOQUxJRD0KKworSWYgYSBqb3VybmFsIGlzIGluIHVzZSBieSB0aGUgZmlsZXN5c3RlbSAoam91cm5hbHMgYXJlIG5vdAorYXNzaWduZWQgZm9yIHNwZWN0YXRvciBtb3VudHMpIHRoZW4gdGhpcyB3aWxsIGdpdmUgdGhlCitudW1lcmljIGpvdXJuYWwgaWQgaW4gYWxsIEdGUzIgdWV2ZW50cy4KKworNC4gVVVJRD0KKworV2l0aCByZWNlbnQgdmVyc2lvbnMgb2YgZ2ZzMi11dGlscywgbWtmcy5nZnMyIHdyaXRlcyBhIFVVSUQKK2ludG8gdGhlIGZpbGVzeXN0ZW0gc3VwZXJibG9jay4gSWYgaXQgZXhpc3RzLCB0aGlzIHdpbGwKK2JlIGluY2x1ZGVkIGluIGV2ZXJ5IHVldmVudCByZWxhdGluZyB0byB0aGUgZmlsZXN5c3RlbS4KKworCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZ2ZzMi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2dmczIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjNGYyMzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2dmczIudHh0CkBAIC0wLDAgKzEsNDUgQEAKK0dsb2JhbCBGaWxlIFN5c3RlbQorLS0tLS0tLS0tLS0tLS0tLS0tCisKK2h0dHBzOi8vZmVkb3JhaG9zdGVkLm9yZy9jbHVzdGVyL3dpa2kvSG9tZVBhZ2UKKworR0ZTIGlzIGEgY2x1c3RlciBmaWxlIHN5c3RlbS4gSXQgYWxsb3dzIGEgY2x1c3RlciBvZiBjb21wdXRlcnMgdG8KK3NpbXVsdGFuZW91c2x5IHVzZSBhIGJsb2NrIGRldmljZSB0aGF0IGlzIHNoYXJlZCBiZXR3ZWVuIHRoZW0gKHdpdGggRkMsCitpU0NTSSwgTkJELCBldGMpLiAgR0ZTIHJlYWRzIGFuZCB3cml0ZXMgdG8gdGhlIGJsb2NrIGRldmljZSBsaWtlIGEgbG9jYWwKK2ZpbGUgc3lzdGVtLCBidXQgYWxzbyB1c2VzIGEgbG9jayBtb2R1bGUgdG8gYWxsb3cgdGhlIGNvbXB1dGVycyBjb29yZGluYXRlCit0aGVpciBJL08gc28gZmlsZSBzeXN0ZW0gY29uc2lzdGVuY3kgaXMgbWFpbnRhaW5lZC4gIE9uZSBvZiB0aGUgbmlmdHkKK2ZlYXR1cmVzIG9mIEdGUyBpcyBwZXJmZWN0IGNvbnNpc3RlbmN5IC0tIGNoYW5nZXMgbWFkZSB0byB0aGUgZmlsZSBzeXN0ZW0KK29uIG9uZSBtYWNoaW5lIHNob3cgdXAgaW1tZWRpYXRlbHkgb24gYWxsIG90aGVyIG1hY2hpbmVzIGluIHRoZSBjbHVzdGVyLgorCitHRlMgdXNlcyBpbnRlcmNoYW5nZWFibGUgaW50ZXItbm9kZSBsb2NraW5nIG1lY2hhbmlzbXMsIHRoZSBjdXJyZW50bHkKK3N1cHBvcnRlZCBtZWNoYW5pc21zIGFyZToKKworICBsb2NrX25vbG9jayAtLSBhbGxvd3MgZ2ZzIHRvIGJlIHVzZWQgYXMgYSBsb2NhbCBmaWxlIHN5c3RlbQorCisgIGxvY2tfZGxtIC0tIHVzZXMgYSBkaXN0cmlidXRlZCBsb2NrIG1hbmFnZXIgKGRsbSkgZm9yIGludGVyLW5vZGUgbG9ja2luZworICBUaGUgZGxtIGlzIGZvdW5kIGF0IGxpbnV4L2ZzL2RsbS8KKworTG9ja19kbG0gZGVwZW5kcyBvbiB1c2VyIHNwYWNlIGNsdXN0ZXIgbWFuYWdlbWVudCBzeXN0ZW1zIGZvdW5kCithdCB0aGUgVVJMIGFib3ZlLgorCitUbyB1c2UgZ2ZzIGFzIGEgbG9jYWwgZmlsZSBzeXN0ZW0sIG5vIGV4dGVybmFsIGNsdXN0ZXJpbmcgc3lzdGVtcyBhcmUKK25lZWRlZCwgc2ltcGx5OgorCisgICQgbWtmcyAtdCBnZnMyIC1wIGxvY2tfbm9sb2NrIC1qIDEgL2Rldi9ibG9ja19kZXZpY2UKKyAgJCBtb3VudCAtdCBnZnMyIC9kZXYvYmxvY2tfZGV2aWNlIC9kaXIKKworSWYgeW91IGFyZSB1c2luZyBGZWRvcmEsIHlvdSBuZWVkIHRvIGluc3RhbGwgdGhlIGdmczItdXRpbHMgcGFja2FnZQorYW5kLCBmb3IgbG9ja19kbG0sIHlvdSB3aWxsIGFsc28gbmVlZCB0byBpbnN0YWxsIHRoZSBjbWFuIHBhY2thZ2UKK2FuZCB3cml0ZSBhIGNsdXN0ZXIuY29uZiBhcyBwZXIgdGhlIGRvY3VtZW50YXRpb24uIEZvciBGMTcgYW5kIGFib3ZlCitjbWFuIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHRoZSBkbG0gcGFja2FnZS4KKworR0ZTMiBpcyBub3Qgb24tZGlzayBjb21wYXRpYmxlIHdpdGggcHJldmlvdXMgdmVyc2lvbnMgb2YgR0ZTLCBidXQgaXQKK2lzIHByZXR0eSBjbG9zZS4KKworVGhlIGZvbGxvd2luZyBtYW4gcGFnZXMgY2FuIGJlIGZvdW5kIGF0IHRoZSBVUkwgYWJvdmU6CisgIGZzY2suZ2ZzMgkJdG8gcmVwYWlyIGEgZmlsZXN5c3RlbQorICBnZnMyX2dyb3cJCXRvIGV4cGFuZCBhIGZpbGVzeXN0ZW0gb25saW5lCisgIGdmczJfamFkZAkJdG8gYWRkIGpvdXJuYWxzIHRvIGEgZmlsZXN5c3RlbSBvbmxpbmUKKyAgdHVuZWdmczIJCXRvIG1hbmlwdWxhdGUsIGV4YW1pbmUgYW5kIHR1bmUgYSBmaWxlc3lzdGVtCisgIGdmczJfY29udmVydAl0byBjb252ZXJ0IGEgZ2ZzIGZpbGVzeXN0ZW0gdG8gZ2ZzMiBpbi1wbGFjZQorICBta2ZzLmdmczIJCXRvIG1ha2UgYSBmaWxlc3lzdGVtCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2hmcy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2hmcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA5NmRmNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaGZzLnR4dApAQCAtMCwwICsxLDgyIEBACitOb3RlOiBUaGlzIGZpbGVzeXN0ZW0gZG9lc24ndCBoYXZlIGEgbWFpbnRhaW5lci4KKworTWFjaW50b3NoIEhGUyBGaWxlc3lzdGVtIGZvciBMaW51eAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitIRlMgc3RhbmRzIGZvciBgYEhpZXJhcmNoaWNhbCBGaWxlIFN5c3RlbScnIGFuZCBpcyB0aGUgZmlsZXN5c3RlbSB1c2VkCitieSB0aGUgTWFjIFBsdXMgYW5kIGFsbCBsYXRlciBNYWNpbnRvc2ggbW9kZWxzLiAgRWFybGllciBNYWNpbnRvc2gKK21vZGVscyB1c2VkIE1GUyAoYGBNYWNpbnRvc2ggRmlsZSBTeXN0ZW0nJyksIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQsCitNYWNPUyA4LjEgYW5kIG5ld2VyIHN1cHBvcnQgYSBmaWxlc3lzdGVtIGNhbGxlZCBIRlMrIHRoYXQncyBzaW1pbGFyIHRvCitIRlMgYnV0IGlzIGV4dGVuZGVkIGluIHZhcmlvdXMgYXJlYXMuICBVc2UgdGhlIGhmc3BsdXMgZmlsZXN5c3RlbSBkcml2ZXIKK3RvIGFjY2VzcyBzdWNoIGZpbGVzeXN0ZW1zIGZyb20gTGludXguCisKKworTW91bnQgb3B0aW9ucworPT09PT09PT09PT09PQorCitXaGVuIG1vdW50aW5nIGFuIEhGUyBmaWxlc3lzdGVtLCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgYXJlIGFjY2VwdGVkOgorCisgIGNyZWF0b3I9Y2NjYywgdHlwZT1jY2NjCisJU3BlY2lmaWVzIHRoZSBjcmVhdG9yL3R5cGUgdmFsdWVzIGFzIHNob3duIGJ5IHRoZSBNYWNPUyBmaW5kZXIKKwl1c2VkIGZvciBjcmVhdGluZyBuZXcgZmlsZXMuICBEZWZhdWx0IHZhbHVlczogJz8/Pz8nLgorCisgIHVpZD1uLCBnaWQ9bgorICAJU3BlY2lmaWVzIHRoZSB1c2VyL2dyb3VwIHRoYXQgb3ducyBhbGwgZmlsZXMgb24gdGhlIGZpbGVzeXN0ZW1zLgorCURlZmF1bHQ6ICB1c2VyL2dyb3VwIGlkIG9mIHRoZSBtb3VudGluZyBwcm9jZXNzLgorCisgIGRpcl91bWFzaz1uLCBmaWxlX3VtYXNrPW4sIHVtYXNrPW4KKwlTcGVjaWZpZXMgdGhlIHVtYXNrIHVzZWQgZm9yIGFsbCBmaWxlcyAsIGFsbCBkaXJlY3RvcmllcyBvciBhbGwKKwlmaWxlcyBhbmQgZGlyZWN0b3JpZXMuICBEZWZhdWx0cyB0byB0aGUgdW1hc2sgb2YgdGhlIG1vdW50aW5nIHByb2Nlc3MuCisKKyAgc2Vzc2lvbj1uCisgIAlTZWxlY3QgdGhlIENEUk9NIHNlc3Npb24gdG8gbW91bnQgYXMgSEZTIGZpbGVzeXN0ZW0uICBEZWZhdWx0cyB0bworCWxlYXZpbmcgdGhhdCBkZWNpc2lvbiB0byB0aGUgQ0RST00gZHJpdmVyLiAgVGhpcyBvcHRpb24gd2lsbCBmYWlsCisJd2l0aCBhbnl0aGluZyBidXQgYSBDRFJPTSBhcyB1bmRlcmx5aW5nIGRldmljZXMuCisKKyAgcGFydD1uCisgIAlTZWxlY3QgcGFydGl0aW9uIG51bWJlciBuIGZyb20gdGhlIGRldmljZXMuICBEb2VzIG9ubHkgbWFrZXMKKwlzZW5zZSBmb3IgQ0RST01TIGJlY2F1c2UgdGhleSBjYW4ndCBiZSBwYXJ0aXRpb25lZCB1bmRlciBMaW51eC4KKwlGb3IgZGlzayBkZXZpY2VzIHRoZSBnZW5lcmljIHBhcnRpdGlvbiBwYXJzaW5nIGNvZGUgZG9lcyB0aGlzCisJZm9yIHVzLiAgRGVmYXVsdHMgdG8gbm90IHBhcnNpbmcgdGhlIHBhcnRpdGlvbiB0YWJsZSBhdCBhbGwuCisKKyAgcXVpZXQKKyAgCUlnbm9yZSBpbnZhbGlkIG1vdW50IG9wdGlvbnMgaW5zdGVhZCBvZiBjb21wbGFpbmluZy4KKworCitXcml0aW5nIHRvIEhGUyBGaWxlc3lzdGVtcworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSEZTIGlzIG5vdCBhIFVOSVggZmlsZXN5c3RlbSwgdGh1cyBpdCBkb2VzIG5vdCBoYXZlIHRoZSB1c3VhbCBmZWF0dXJlcyB5b3UnZAorZXhwZWN0OgorCisgbyBZb3UgY2FuJ3QgbW9kaWZ5IHRoZSBzZXQtdWlkLCBzZXQtZ2lkLCBzdGlja3kgb3IgZXhlY3V0YWJsZSBiaXRzIG9yIHRoZSB1aWQKKyAgIGFuZCBnaWQgb2YgZmlsZXMuCisgbyBZb3UgY2FuJ3QgY3JlYXRlIGhhcmQtIG9yIHN5bWxpbmtzLCBkZXZpY2UgZmlsZXMsIHNvY2tldHMgb3IgRklGT3MuCisKK0hGUyBkb2VzIG9uIHRoZSBvdGhlciBoYXZlIHRoZSBjb25jZXB0cyBvZiBtdWx0aXBsZSBmb3JrcyBwZXIgZmlsZS4gIFRoZXNlCitub24tc3RhbmRhcmQgZm9ya3MgYXJlIHJlcHJlc2VudGVkIGFzIGhpZGRlbiBhZGRpdGlvbmFsIGZpbGVzIGluIHRoZSBub3JtYWwKK2ZpbGVzeXN0ZW1zIG5hbWVzcGFjZSB3aGljaCBpcyBraW5kIG9mIGEgY2x1ZGdlIGFuZCBtYWtlcyB0aGUgc2VtYW50aWNzIGZvcgordGhlIGEgbGl0dGxlIHN0cmFuZ2U6CisKKyBvIFlvdSBjYW4ndCBjcmVhdGUsIGRlbGV0ZSBvciByZW5hbWUgcmVzb3VyY2UgZm9ya3Mgb2YgZmlsZXMgb3IgdGhlCisgICBGaW5kZXIncyBtZXRhZGF0YS4KKyBvIFRoZXkgYXJlIGhvd2V2ZXIgY3JlYXRlZCAod2l0aCBkZWZhdWx0IHZhbHVlcyksIGRlbGV0ZWQgYW5kIHJlbmFtZWQKKyAgIGFsb25nIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZGF0YSBmb3JrIG9yIGRpcmVjdG9yeS4KKyBvIENvcHlpbmcgZmlsZXMgdG8gYSBkaWZmZXJlbnQgZmlsZXN5c3RlbSB3aWxsIGxvb3NlIHRob3NlIGF0dHJpYnV0ZXMKKyAgIHRoYXQgYXJlIGVzc2VudGlhbCBmb3IgTWFjT1MgdG8gd29yay4KKworCitDcmVhdGluZyBIRlMgZmlsZXN5c3RlbXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBoZnN1dGlscyBwYWNrYWdlIGZyb20gUm9iZXJ0IExlc2xpZSBjb250YWlucyBhIHByb2dyYW0gY2FsbGVkCitoZm9ybWF0IHRoYXQgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIEhGUyBmaWxlc3lzdGVtLiBTZWUKKzxodHRwOi8vd3d3Lm1hcnMub3JnL2hvbWUvcm9iL3Byb2ovaGZzLz4gZm9yIGRldGFpbHMuCisKKworQ3JlZGl0cworPT09PT09PQorCitUaGUgSEZTIGRyaXZlcnMgd2FzIHdyaXR0ZW4gYnkgUGF1bCBILiBIYXJncm92ZWEgKGhhcmdyb3ZlQHNjY20uU3RhbmZvcmQuRURVKS4KK1JvbWFuIFppcHBlbCAocm9tYW5AYXJkaXN0ZWNoLmNvbSkgcmV3cm90ZSBsYXJnZSBwYXJ0cyBvZiB0aGUgY29kZSBhbmQgYnJvdWdodAoraW4gYnRyZWUgcm91dGluZXMgZGVyaXZlZCBmcm9tIEJyYWQgQm95ZXIncyBoZnNwbHVzIGRyaXZlci4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaGZzcGx1cy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2hmc3BsdXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5Zjc1NjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2hmc3BsdXMudHh0CkBAIC0wLDAgKzEsNTkgQEAKKworTWFjaW50b3NoIEhGU1BsdXMgRmlsZXN5c3RlbSBmb3IgTGludXgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0hGU1BsdXMgaXMgYSBmaWxlc3lzdGVtIGZpcnN0IGludHJvZHVjZWQgaW4gTWFjT1MgOC4xLgorSEZTUGx1cyBoYXMgc2V2ZXJhbCBleHRlbnNpb25zIHRvIEhGUywgaW5jbHVkaW5nIDMyLWJpdCBhbGxvY2F0aW9uCitibG9ja3MsIDI1NS1jaGFyYWN0ZXIgdW5pY29kZSBmaWxlbmFtZXMsIGFuZCBmaWxlIHNpemVzIG9mIDJeNjMgYnl0ZXMuCisKKworTW91bnQgb3B0aW9ucworPT09PT09PT09PT09PQorCitXaGVuIG1vdW50aW5nIGFuIEhGU1BsdXMgZmlsZXN5c3RlbSwgdGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBhY2NlcHRlZDoKKworICBjcmVhdG9yPWNjY2MsIHR5cGU9Y2NjYworCVNwZWNpZmllcyB0aGUgY3JlYXRvci90eXBlIHZhbHVlcyBhcyBzaG93biBieSB0aGUgTWFjT1MgZmluZGVyCisJdXNlZCBmb3IgY3JlYXRpbmcgbmV3IGZpbGVzLiAgRGVmYXVsdCB2YWx1ZXM6ICc/Pz8/Jy4KKworICB1aWQ9biwgZ2lkPW4KKwlTcGVjaWZpZXMgdGhlIHVzZXIvZ3JvdXAgdGhhdCBvd25zIGFsbCBmaWxlcyBvbiB0aGUgZmlsZXN5c3RlbQorCXRoYXQgaGF2ZSB1bmluaXRpYWxpemVkIHBlcm1pc3Npb25zIHN0cnVjdHVyZXMuCisJRGVmYXVsdDogIHVzZXIvZ3JvdXAgaWQgb2YgdGhlIG1vdW50aW5nIHByb2Nlc3MuCisKKyAgdW1hc2s9bgorCVNwZWNpZmllcyB0aGUgdW1hc2sgKGluIG9jdGFsKSB1c2VkIGZvciBmaWxlcyBhbmQgZGlyZWN0b3JpZXMKKwl0aGF0IGhhdmUgdW5pbml0aWFsaXplZCBwZXJtaXNzaW9ucyBzdHJ1Y3R1cmVzLgorCURlZmF1bHQ6ICB1bWFzayBvZiB0aGUgbW91bnRpbmcgcHJvY2Vzcy4KKworICBzZXNzaW9uPW4KKwlTZWxlY3QgdGhlIENEUk9NIHNlc3Npb24gdG8gbW91bnQgYXMgSEZTUGx1cyBmaWxlc3lzdGVtLiAgRGVmYXVsdHMgdG8KKwlsZWF2aW5nIHRoYXQgZGVjaXNpb24gdG8gdGhlIENEUk9NIGRyaXZlci4gIFRoaXMgb3B0aW9uIHdpbGwgZmFpbAorCXdpdGggYW55dGhpbmcgYnV0IGEgQ0RST00gYXMgdW5kZXJseWluZyBkZXZpY2VzLgorCisgIHBhcnQ9bgorCVNlbGVjdCBwYXJ0aXRpb24gbnVtYmVyIG4gZnJvbSB0aGUgZGV2aWNlcy4gIFRoaXMgb3B0aW9uIG9ubHkgbWFrZXMKKwlzZW5zZSBmb3IgQ0RST01zIGJlY2F1c2UgdGhleSBjYW4ndCBiZSBwYXJ0aXRpb25lZCB1bmRlciBMaW51eC4KKwlGb3IgZGlzayBkZXZpY2VzIHRoZSBnZW5lcmljIHBhcnRpdGlvbiBwYXJzaW5nIGNvZGUgZG9lcyB0aGlzCisJZm9yIHVzLiAgRGVmYXVsdHMgdG8gbm90IHBhcnNpbmcgdGhlIHBhcnRpdGlvbiB0YWJsZSBhdCBhbGwuCisKKyAgZGVjb21wb3NlCisJRGVjb21wb3NlIGZpbGUgbmFtZSBjaGFyYWN0ZXJzLgorCisgIG5vZGVjb21wb3NlCisJRG8gbm90IGRlY29tcG9zZSBmaWxlIG5hbWUgY2hhcmFjdGVycy4KKworICBmb3JjZQorCVVzZWQgdG8gZm9yY2Ugd3JpdGUgYWNjZXNzIHRvIHZvbHVtZXMgdGhhdCBhcmUgbWFya2VkIGFzIGpvdXJuYWxsZWQKKwlvciBsb2NrZWQuICBVc2UgYXQgeW91ciBvd24gcmlzay4KKworICBubHM9Y2NjYworCUVuY29kaW5nIHRvIHVzZSB3aGVuIHByZXNlbnRpbmcgZmlsZSBuYW1lcy4KKworCitSZWZlcmVuY2VzCis9PT09PT09PT09CisKK2tlcm5lbCBzb3VyY2U6CQk8ZmlsZTpmcy9oZnNwbHVzPgorCitBcHBsZSBUZWNobm90ZSAxMTUwCWh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9sZWdhY3kvbGlicmFyeS90ZWNobm90ZXMvdG4vdG4xMTUwLmh0bWwKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaHBmcy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2hwZnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0NjMwYmQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2hwZnMudHh0CkBAIC0wLDAgKzEsMjk2IEBACitSZWFkL1dyaXRlIEhQRlMgMi4wOQorMTk5OC0yMDA0LCBNaWt1bGFzIFBhdG9ja2EKKworZW1haWw6IG1pa3VsYXNAYXJ0YXgua2FybGluLm1mZi5jdW5pLmN6Citob21lcGFnZTogaHR0cDovL2FydGF4Lmthcmxpbi5tZmYuY3VuaS5jei9+bWlrdWxhcy92eXBsb2R5L2hwZnMvaW5kZXgtZS5jZ2kKKworQ1JFRElUUzoKK0NocmlzIFNtaXRoLCAxOTkzLCBvcmlnaW5hbCByZWFkLW9ubHkgSFBGUywgc29tZSBjb2RlIGFuZCBocGZzIHN0cnVjdHVyZXMgZmlsZQorCWlzIHRha2VuIGZyb20gaXQKK0phY3F1ZXMgR2VsaW5hcywgTVNEb3MgbW1hcCwgSW5zcGlyZWQgYnkgZnMvbmZzL21tYXAuYyAoSm9uIFRvbWJzIDE1IEF1ZyAxOTkzKQorV2VybmVyIEFsbWVzYmVyZ2VyLCAxOTkyLCAxOTkzLCBNU0RvcyBvcHRpb24gcGFyc2VyICYgQ1IvTEYgY29udmVyc2lvbgorCitNb3VudCBvcHRpb25zCisKK3VpZD14eHgsZ2lkPXh4eCx1bWFzaz14eHggKGRlZmF1bHQgdWlkPWdpZD0wIHVtYXNrPWRlZmF1bHRfc3lzdGVtX3VtYXNrKQorCVNldCBvd25lci9ncm91cC9tb2RlIGZvciBmaWxlcyB0aGF0IGRvIG5vdCBoYXZlIGl0IHNwZWNpZmllZCBpbiBleHRlbmRlZAorCWF0dHJpYnV0ZXMuIE1vZGUgaXMgaW52ZXJ0ZWQgdW1hc2sgLSBmb3IgZXhhbXBsZSB1bWFzayAwMjcgZ2l2ZXMgb3duZXIKKwlhbGwgcGVybWlzc2lvbiwgZ3JvdXAgcmVhZCBwZXJtaXNzaW9uIGFuZCBhbnlib2R5IGVsc2Ugbm8gYWNjZXNzLiBOb3RlCisJdGhhdCBmb3IgZmlsZXMgbW9kZSBpcyBhbmRlZCB3aXRoIDA2NjYuIElmIHlvdSB3YW50IGZpbGVzIHRvIGhhdmUgJ3gnCisJcmlnaHRzLCB5b3UgbXVzdCB1c2UgZXh0ZW5kZWQgYXR0cmlidXRlcy4KK2Nhc2U9bG93ZXIsYXNpcyAoZGVmYXVsdCBhc2lzKQorCUZpbGUgbmFtZSBsb3dlcmNhc2luZyBpbiByZWFkZGlyLgorY29udj1iaW5hcnksdGV4dCxhdXRvIChkZWZhdWx0IGJpbmFyeSkKKwlDUi9MRiAtPiBMRiBjb252ZXJzaW9uLCBpZiBhdXRvLCBkZWNpc2lvbiBpcyBtYWRlIGFjY29yZGluZyB0byBleHRlbnNpb24KKwktIHRoZXJlIGlzIGEgbGlzdCBvZiB0ZXh0IGV4dGVuc2lvbnMgKEkgdGhpbmcgaXQncyBiZXR0ZXIgdG8gbm90IGNvbnZlcnQKKwl0ZXh0IGZpbGUgdGhhbiB0byBkYW1hZ2UgYmluYXJ5IGZpbGUpLiBJZiB5b3Ugd2FudCB0byBjaGFuZ2UgdGhhdCBsaXN0LAorCWNoYW5nZSBpdCBpbiB0aGUgc291cmNlLiBPcmlnaW5hbCByZWFkb25seSBIUEZTIGNvbnRhaW5lZCBzb21lIHN0cmFuZ2UKKwloZXVyaXN0aWMgYWxnb3JpdGhtIHRoYXQgSSByZW1vdmVkLiBJIHRoaW5nIGl0J3MgZGFuZ2VyIHRvIGxldCB0aGUKKwljb21wdXRlciBkZWNpZGUgd2hldGhlciBmaWxlIGlzIHRleHQgb3IgYmluYXJ5LiBGb3IgZXhhbXBsZSwgREpHUFAKKwliaW5hcmllcyBjb250YWluIHNtYWxsIHRleHQgbWVzc2FnZSBhdCB0aGUgYmVnaW5uaW5nIGFuZCB0aGV5IGNvdWxkIGJlCisJbWlzaWRlbnRpZmllZCBhbmQgZGFtYWdlZCB1bmRlciBzb21lIGNpcmN1bXN0YW5jZXMuCitjaGVjaz1ub25lLG5vcm1hbCxzdHJpY3QgKGRlZmF1bHQgbm9ybWFsKQorCUNoZWNrIGxldmVsLiBTZWxlY3Rpbmcgbm9uZSB3aWxsIGNhdXNlIG9ubHkgbGl0dGxlIHNwZWVkdXAgYW5kIGJpZworCWRhbmdlci4gSSB0cmllZCB0byB3cml0ZSBpdCBzbyB0aGF0IGl0IHdvbid0IGNyYXNoIGlmIGNoZWNrPW5vcm1hbCBvbgorCWNvcnJ1cHRlZCBmaWxlc3lzdGVtcy4gY2hlY2s9c3RyaWN0IG1lYW5zIG1hbnkgc3VwZXJmbHVvdXMgY2hlY2tzIC0KKwl1c2VkIGZvciBkZWJ1Z2dpbmcgKGZvciBleGFtcGxlIGl0IGNoZWNrcyBpZiBmaWxlIGlzIGFsbG9jYXRlZCBpbgorCWJpdG1hcHMgd2hlbiBhY2Nlc3NpbmcgaXQpLgorZXJyb3JzPWNvbnRpbnVlLHJlbW91bnQtcm8scGFuaWMgKGRlZmF1bHQgcmVtb3VudC1ybykKKwlCZWhhdmlvdXIgd2hlbiBmaWxlc3lzdGVtIGVycm9ycyBmb3VuZC4KK2Noa2Rzaz1ubyxlcnJvcnMsYWx3YXlzIChkZWZhdWx0IGVycm9ycykKKwlXaGVuIHRvIG1hcmsgZmlsZXN5c3RlbSBkaXJ0eSBzbyB0aGF0IE9TLzIgY2hlY2tzIGl0LgorZWFzPW5vLHJvLHJ3IChkZWZhdWx0IHJ3KQorCVdoYXQgdG8gZG8gd2l0aCBleHRlbmRlZCBhdHRyaWJ1dGVzLiAnbm8nIC0gaWdub3JlIHRoZW0gYW5kIHVzZSBhbHdheXMKKwl2YWx1ZXMgc3BlY2lmaWVkIGluIHVpZC9naWQvbW9kZSBvcHRpb25zLiAncm8nIC0gcmVhZCBleHRlbmRlZAorCWF0dHJpYnV0ZXMgYnV0IGRvIG5vdCBjcmVhdGUgdGhlbS4gJ3J3JyAtIGNyZWF0ZSBleHRlbmRlZCBhdHRyaWJ1dGVzCisJd2hlbiB5b3UgdXNlIGNobW9kL2Nob3duL2NoZ3JwL21rbm9kL2xuIC1zIG9uIHRoZSBmaWxlc3lzdGVtLgordGltZXNoaWZ0PSgtKW5ubiAoZGVmYXVsdCAwKQorCVNoaWZ0cyB0aGUgdGltZSBieSBubm4gc2Vjb25kcy4gRm9yIGV4YW1wbGUsIGlmIHlvdSBzZWUgdW5kZXIgbGludXgKKwlvbmUgaG91ciBtb3JlLCB0aGFuIHVuZGVyIG9zLzIsIHVzZSB0aW1lc2hpZnQ9LTM2MDAuCisKKworRmlsZSBuYW1lcworCitBcyBpbiBPUy8yLCBmaWxlbmFtZXMgYXJlIGNhc2UgaW5zZW5zaXRpdmUuIEhvd2V2ZXIsIHNoZWxsIHRoaW5rcyB0aGF0IG5hbWVzCithcmUgY2FzZSBzZW5zaXRpdmUsIHNvIGZvciBleGFtcGxlIHdoZW4geW91IGNyZWF0ZSBhIGZpbGUgRk9PLCB5b3UgY2FuIHVzZQorJ2NhdCBGT08nLCAnY2F0IEZvbycsICdjYXQgZm9vJyBvciAnY2F0IEYqJyBidXQgbm90ICdjYXQgZionLiBOb3RlLCB0aGF0IHlvdQorYWxzbyB3b24ndCBiZSBhYmxlIHRvIGNvbXBpbGUgbGludXgga2VybmVsIChhbmQgbWF5YmUgb3RoZXIgdGhpbmdzKSBvbiBIUEZTCitiZWNhdXNlIGtlcm5lbCBjcmVhdGVzIGRpZmZlcmVudCBmaWxlcyB3aXRoIG5hbWVzIGxpa2UgYm9vdHNlY3QuUyBhbmQKK2Jvb3RzZWN0LnMuIFdoZW4gc2VhcmNoaW5nIGZvciBmaWxlIHRoYXRzIG5hbWUgaGFzIGNoYXJhY3RlcnMgPj0gMTI4LCBjb2RlcGFnZXMKK2FyZSB1c2VkIC0gc2VlIGJlbG93LgorT1MvMiBpZ25vcmVzIGRvdHMgYW5kIHNwYWNlcyBhdCB0aGUgZW5kIG9mIGZpbGUgbmFtZSwgc28gdGhpcyBkcml2ZXIgZG9lcyBhcword2VsbC4gSWYgeW91IGNyZWF0ZSAnYS4gLi4uJywgdGhlIGZpbGUgJ2EnIHdpbGwgYmUgY3JlYXRlZCwgYnV0IHlvdSBjYW4gc3RpbGwKK2FjY2VzcyBpdCB1bmRlciBuYW1lcyAnYS4nLCAnYS4uJywgJ2EgLiAgLiAuICcgZXRjLgorCisKK0V4dGVuZGVkIGF0dHJpYnV0ZXMKKworT24gSFBGUyBwYXJ0aXRpb25zLCBPUy8yIGNhbiBhc3NvY2lhdGUgdG8gZWFjaCBmaWxlIGEgc3BlY2lhbCBpbmZvcm1hdGlvbiBjYWxsZWQKK2V4dGVuZGVkIGF0dHJpYnV0ZXMuIEV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIHBhaXJzIG9mIChrZXksdmFsdWUpIHdoZXJlIGtleSBpcworYW4gYXNjaWkgc3RyaW5nIGlkZW50aWZ5aW5nIHRoYXQgYXR0cmlidXRlIGFuZCB2YWx1ZSBpcyBhbnkgc3RyaW5nIG9mIGJ5dGVzIG9mCit2YXJpYWJsZSBsZW5ndGguIE9TLzIgc3RvcmVzIHdpbmRvdyBhbmQgaWNvbiBwb3NpdGlvbnMgYW5kIGZpbGUgdHlwZXMgdGhlcmUuIFNvCit3aHkgbm90IHVzZSBpdCBmb3IgdW5peC1zcGVjaWZpYyBpbmZvIGxpa2UgZmlsZSBvd25lciBvciBhY2Nlc3MgcmlnaHRzPyBUaGlzCitkcml2ZXIgY2FuIGRvIGl0LiBJZiB5b3UgY2hvd24vY2hncnAvY2htb2Qgb24gYSBocGZzIHBhcnRpdGlvbiwgZXh0ZW5kZWQKK2F0dHJpYnV0ZXMgd2l0aCBrZXlzICJVSUQiLCAiR0lEIiBvciAiTU9ERSIgYW5kIDItYnl0ZSB2YWx1ZXMgYXJlIGNyZWF0ZWQuIE9ubHkKK3RoYXQgZXh0ZW5kZWQgYXR0cmlidXRlcyB0aG9zZSB2YWx1ZSBkaWZmZXJzIGZyb20gZGVmYXVsdHMgc3BlY2lmaWVkIGluIG1vdW50CitvcHRpb25zIGFyZSBjcmVhdGVkLiBPbmNlIGNyZWF0ZWQsIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSBuZXZlciBkZWxldGVkLAordGhleSdyZSBqdXN0IGNoYW5nZWQuIEl0IG1lYW5zIHRoYXQgd2hlbiB5b3VyIGRlZmF1bHQgdWlkPTAgYW5kIHlvdSB0eXBlCitzb21ldGhpbmcgbGlrZSAnY2hvd24gbHVzZXIgZmlsZTsgY2hvd24gcm9vdCBmaWxlJyB0aGUgZmlsZSB3aWxsIGNvbnRhaW4KK2V4dGVuZGVkIGF0dHJpYnV0ZSBVSUQ9MC4gQW5kIHdoZW4geW91IHVtb3VudCB0aGUgZnMgYW5kIG1vdW50IGl0IGFnYWluIHdpdGgKK3VpZD1sdXNlcl91aWQsIHRoZSBmaWxlIHdpbGwgYmUgc3RpbGwgb3duZWQgYnkgcm9vdCEgSWYgeW91IGNobW9kIGZpbGUgdG8gNDQ0LAorZXh0ZW5kZWQgYXR0cmlidXRlICJNT0RFIiB3aWxsIG5vdCBiZSBzZXQsIHRoaXMgc3BlY2lhbCBjYXNlIGlzIGRvbmUgYnkgc2V0dGluZworcmVhZC1vbmx5IGZsYWcuIFdoZW4geW91IG1rbm9kIGEgYmxvY2sgb3IgY2hhciBkZXZpY2UsIGJlc2lkZXMgIk1PREUiLCB0aGUKK3NwZWNpYWwgNC1ieXRlIGV4dGVuZGVkIGF0dHJpYnV0ZSAiREVWIiB3aWxsIGJlIGNyZWF0ZWQgY29udGFpbmluZyB0aGUgZGV2aWNlCitudW1iZXIuIEN1cnJlbnRseSB0aGlzIGRyaXZlciBjYW5ub3QgcmVzaXplIGV4dGVuZGVkIGF0dHJpYnV0ZXMgLSBpdCBtZWFucwordGhhdCBpZiBzb21lYm9keSAoSSBkb24ndCBrbm93IHdobz8pIGhhcyBzZXQgIlVJRCIsICJHSUQiLCAiTU9ERSIgb3IgIkRFViIKK2F0dHJpYnV0ZXMgd2l0aCBkaWZmZXJlbnQgc2l6ZXMsIHRoZXkgd29uJ3QgYmUgcmV3cml0dGVuIGFuZCBjaGFuZ2luZyB0aGVzZQordmFsdWVzIGRvZXNuJ3Qgd29yay4KKworCitTeW1saW5rcworCitZb3UgY2FuIGRvIHN5bWxpbmtzIG9uIEhQRlMgcGFydGl0aW9uLCBzeW1saW5rcyBhcmUgYWNoaWV2ZWQgYnkgc2V0dGluZyBleHRlbmRlZAorYXR0cmlidXRlIG5hbWVkICJTWU1MSU5LIiB3aXRoIHN5bWxpbmsgdmFsdWUuIExpa2Ugb24gZXh0MiwgeW91IGNhbiBjaG93biBhbmQKK2NoZ3JwIHN5bWxpbmtzIGJ1dCBJIGRvbid0IGtub3cgd2hhdCBpcyBpdCBnb29kIGZvci4gY2htb2Rpbmcgc3ltbGluayByZXN1bHRzCitpbiBjaG1vZGluZyBmaWxlIHdoZXJlIHN5bWxpbmsgcG9pbnRzLiBUaGVzZSBzeW1saW5rcyBhcmUganVzdCBmb3IgTGludXggdXNlIGFuZAoraW5jb21wYXRpYmxlIHdpdGggT1MvMi4gT1MvMiBQbVNoZWxsIHN5bWxpbmtzIGFyZSBub3Qgc3VwcG9ydGVkIGJlY2F1c2UgdGhleSBhcmUKK3N0b3JlZCBpbiB2ZXJ5IGNyYXp5IHdheS4gVGhleSB0cmllZCB0byBkbyBpdCBzbyB0aGF0IGxpbmsgY2hhbmdlcyB3aGVuIGZpbGUgaXMKK21vdmVkIC4uLiBzb21ldGltZXMgaXQgd29ya3MuIEJ1dCB0aGUgbGluayBpcyBwYXJ0bHkgc3RvcmVkIGluIGRpcmVjdG9yeQorZXh0ZW5kZWQgYXR0cmlidXRlcyBhbmQgcGFydGx5IGluIE9TMlNZUy5JTkkuIEkgZG9uJ3Qgd2FudCAoYW5kIGRvbid0IGtub3cgaG93KQordG8gYW5hbHl6ZSBvciBjaGFuZ2UgT1MyU1lTLklOSS4KKworCitDb2RlcGFnZXMKKworSFBGUyBjYW4gY29udGFpbiBzZXZlcmFsIHVwcGVyY2FzaW5nIHRhYmxlcyBmb3Igc2V2ZXJhbCBjb2RlcGFnZXMgYW5kIGVhY2gKK2ZpbGUgaGFzIGEgcG9pbnRlciB0byBjb2RlcGFnZSBpdHMgbmFtZSBpcyBpbi4gSG93ZXZlciBPUy8yIHdhcyBjcmVhdGVkIGluCitBbWVyaWNhIHdoZXJlIHBlb3BsZSBkb24ndCBjYXJlIG11Y2ggYWJvdXQgY29kZXBhZ2VzIGFuZCBzbyBtdWx0aXBsZSBjb2RlcGFnZXMKK3N1cHBvcnQgaXMgcXVpdGUgYnVnZ3kuIEkgaGF2ZSBDemVjaCBPUy8yIHdvcmtpbmcgaW4gY29kZXBhZ2UgODUyIG9uIG15IGRpc2suCitPbmNlIEkgYm9vdGVkIEVuZ2xpc2ggT1MvMiB3b3JraW5nIGluIGNwIDg1MCBhbmQgSSBjcmVhdGVkIGEgZmlsZSBvbiBteSA4NTIKK3BhcnRpdGlvbi4gSXQgbWFya2VkIGZpbGUgbmFtZSBjb2RlcGFnZSBhcyA4NTAgLSBnb29kLiBCdXQgd2hlbiBJIGFnYWluIGJvb3RlZAorQ3plY2ggT1MvMiwgdGhlIGZpbGUgd2FzIGNvbXBsZXRlbHkgaW5hY2Nlc3NpYmxlIHVuZGVyIGFueSBuYW1lLiBJdCBzZWVtcyB0aGF0CitPUy8yIHVwcGVyY2FzZXMgdGhlIHNlYXJjaCBwYXR0ZXJuIHdpdGggaXRzIHN5c3RlbSBjb2RlIHBhZ2UgKDg1MikgYW5kIGZpbGUKK25hbWUgaXQncyBjb21wYXJpbmcgdG8gd2l0aCBpdHMgY29kZSBwYWdlICg4NTApLiBUaGVzZSBjb3VsZCBuZXZlciBtYXRjaC4gSXMgaXQKK3JlYWxseSB3aGF0IElCTSBkZXZlbG9wZXJzIHdhbnRlZD8gQnV0IHByb2JsZW1zIGNvbnRpbnVlZC4gV2hlbiBJIGNyZWF0ZWQgaW4KK0N6ZWNoIE9TLzIgYW5vdGhlciBmaWxlIGluIHRoYXQgZGlyZWN0b3J5LCB0aGF0IGZpbGUgd2FzIGluYWNjZXNzaWJsZSB0b28uIE9TLzIKK3Byb2JhYmx5IHVzZXMgZGlmZmVyZW50IHVwcGVyY2FzaW5nIG1ldGhvZCB3aGVuIHNlYXJjaGluZyB3aGVyZSB0byBwbGFjZSBhIGZpbGUKKyhub3RlLCB0aGF0IGZpbGVzIGluIEhQRlMgZGlyZWN0b3J5IG11c3QgYmUgc29ydGVkKSBhbmQgd2hlbiBzZWFyY2hpbmcgZm9yCithIGZpbGUuIEZpbmFsbHkgd2hlbiBJIG9wZW5lZCB0aGlzIGRpcmVjdG9yeSBpbiBQbVNoZWxsLCBQbVNoZWxsIGNyYXNoZWQgKHRoZQorZnVubnkgdGhpbmcgd2FzIHRoYXQsIHdoZW4gcmVib290ZWQsIFBtU2hlbGwgdHJpZWQgdG8gcmVvcGVuIHRoaXMgZGlyZWN0b3J5CithZ2FpbiA6LSkuIGNoa2RzayBoYXBwaWx5IGlnbm9yZXMgdGhlc2UgZXJyb3JzIGFuZCBvbmx5IGxvdy1sZXZlbCBkaXNrCittb2RpZmljYXRpb24gc2F2ZWQgbWUuICBOZXZlciBtaXggZGlmZmVyZW50IGxhbmd1YWdlIHZlcnNpb25zIG9mIE9TLzIgb24gb25lCitzeXN0ZW0gYWx0aG91Z2ggSFBGUyB3YXMgZGVzaWduZWQgdG8gYWxsb3cgdGhhdC4KK09LLCBJIGNvdWxkIGltcGxlbWVudCBjb21wbGV4IGNvZGVwYWdlIHN1cHBvcnQgdG8gdGhpcyBkcml2ZXIgYnV0IEkgdGhpbmsgaXQKK3dvdWxkIGNhdXNlIG1vcmUgcHJvYmxlbXMgdGhhbiBiZW5lZml0IHdpdGggc3VjaCBidWdneSBpbXBsZW1lbnRhdGlvbiBpbiBPUy8yLgorU28gdGhpcyBkcml2ZXIgc2ltcGx5IHVzZXMgZmlyc3QgY29kZXBhZ2UgaXQgZmluZHMgZm9yIHVwcGVyY2FzaW5nIGFuZAorbG93ZXJjYXNpbmcgbm8gbWF0dGVyIHdoYXQncyBmaWxlIGNvZGVwYWdlIGluZGV4LiBVc3VhbGx5IGFsbCBmaWxlIG5hbWVzIGFyZSBpbgordGhpcyBjb2RlcGFnZSAtIGlmIHlvdSBkb24ndCB0cnkgdG8gZG8gd2hhdCBJIGRlc2NyaWJlZCBhYm92ZSA6LSkKKworCitLbm93biBidWdzCisKK0hQRlMzODYgb24gT1MvMiBzZXJ2ZXIgaXMgbm90IHN1cHBvcnRlZC4gSFBGUzM4NiBpbnN0YWxsZWQgb24gbm9ybWFsIE9TLzIgY2xpZW50CitzaG91bGQgd29yay4gSWYgeW91IGhhdmUgT1MvMiBzZXJ2ZXIsIHVzZSBvbmx5IHJlYWQtb25seSBtb2RlLiBJIGRvbid0IGtub3cgaG93Cit0byBoYW5kbGUgc29tZSBIUEZTMzg2IHN0cnVjdHVyZXMgbGlrZSBhY2Nlc3MgY29udHJvbCBsaXN0IG9yIGV4dGVuZGVkIHBlcm0KK2xpc3QsIEkgZG9uJ3Qga25vdyBob3cgdG8gZGVsZXRlIHRoZW0gd2hlbiBmaWxlIGlzIGRlbGV0ZWQgYW5kIGhvdyB0byBub3QKK292ZXJ3cml0ZSB0aGVtIHdpdGggZXh0ZW5kZWQgYXR0cmlidXRlcy4gU2VuZCBtZSBzb21lIGluZm8gb24gdGhlc2Ugc3RydWN0dXJlcworYW5kIEknbGwgbWFrZSBpdC4gSG93ZXZlciwgdGhpcyBkcml2ZXIgc2hvdWxkIGRldGVjdCBwcmVzZW5jZSBvZiBIUEZTMzg2CitzdHJ1Y3R1cmVzLCByZW1vdW50IHJlYWQtb25seSBhbmQgbm90IGRlc3Ryb3kgdGhlbSAoSSBob3BlKS4KKworV2hlbiB0aGVyZSdzIG5vdCBlbm91Z2ggc3BhY2UgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZXMsIHRoZXkgd2lsbCBiZSB0cnVuY2F0ZWQKK2FuZCBubyBlcnJvciBpcyByZXR1cm5lZC4KKworT1MvMiBjYW4ndCBhY2Nlc3MgZmlsZXMgaWYgdGhlIHBhdGggaXMgbG9uZ2VyIHRoYW4gYWJvdXQgMjU2IGNoYXJzIGJ1dCB0aGlzCitkcml2ZXIgYWxsb3dzIHlvdSB0byBkbyBpdC4gY2hrZHNrIGlnbm9yZXMgc3VjaCBlcnJvcnMuCisKK1NvbWV0aW1lcyB5b3Ugd29uJ3QgYmUgYWJsZSB0byBkZWxldGUgc29tZSBmaWxlcyBvbiBhIHZlcnkgZnVsbCBmaWxlc3lzdGVtCisocmV0dXJuaW5nIGVycm9yIEVOT1NQQykuIFRoYXQncyBiZWNhdXNlIGZpbGUgaW4gbm9uLWxlYWYgbm9kZSBpbiBkaXJlY3RvcnkgdHJlZQorKG9uZSBkaXJlY3RvcnksIGlmIGl0J3MgbGFyZ2UsIGhhcyBkaXJlbnRzIGluIHRyZWUgb24gSFBGUykgbXVzdCBiZSByZXBsYWNlZAord2l0aCBhbm90aGVyIG5vZGUgd2hlbiBkZWxldGVkLiBBbmQgdGhhdCBuZXcgZmlsZSBtaWdodCBoYXZlIGxhcmdlciBuYW1lIHRoYW4KK3RoZSBvbGQgb25lIHNvIHRoZSBuZXcgbmFtZSBkb2Vzbid0IGZpdCBpbiBkaXJlY3Rvcnkgbm9kZSAoZG5vZGUpLiBBbmQgdGhhdAord291bGQgcmVzdWx0IGluIGRpcmVjdG9yeSB0cmVlIHNwbGl0dGluZywgdGhhdCB0YWtlcyBkaXNrIHNwYWNlLiBXb3JrYXJvdW5kIGlzCit0byBkZWxldGUgb3RoZXIgZmlsZXMgdGhhdCBhcmUgbGVhZiAocHJvYmFiaWxpdHkgdGhhdCB0aGUgZmlsZSBpcyBub24tbGVhZiBpcworYWJvdXQgMS81MCkgb3IgdG8gdHJ1bmNhdGUgZmlsZSBmaXJzdCB0byBtYWtlIHNvbWUgc3BhY2UuCitZb3UgZW5jb3VudGVyIHRoaXMgcHJvYmxlbSBvbmx5IGlmIHlvdSBoYXZlIG1hbnkgZGlyZWN0b3JpZXMgc28gdGhhdAorcHJlYWxsb2NhdGVkIGRpcmVjdG9yeSBiYW5kIGlzIGZ1bGwgaS5lLgorCW51bWJlcl9vZl9kaXJlY3RvcmllcyAvIHNpemVfb2ZfZmlsZXN5c3RlbV9pbl9tYiA+IDQuCisKK1lvdSBjYW4ndCBkZWxldGUgb3BlbiBkaXJlY3Rvcmllcy4KKworWW91IGNhbid0IHJlbmFtZSBvdmVyIGRpcmVjdG9yaWVzICh3aGF0IGlzIGl0IGdvb2QgZm9yPykuCisKK1JlbmFtaW5nIGZpbGVzIHNvIHRoYXQgb25seSBjYXNlIGNoYW5nZXMgZG9lc24ndCB3b3JrLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBpdAorYnV0IHZmcyBkb2Vzbid0LiBTb21ldGhpbmcgbGlrZSAnbXYgZmlsZSBGSUxFJyB3b24ndCB3b3JrLgorCitBbGwgYXRpbWVzIGFuZCBkaXJlY3RvcnkgbXRpbWVzIGFyZSBub3QgdXBkYXRlZC4gVGhhdCdzIGJlY2F1c2Ugb2YgcGVyZm9ybWFuY2UKK3JlYXNvbnMuIElmIHlvdSBleHRyZW1lbHkgd2lzaCB0byB1cGRhdGUgdGhlbSwgbGV0IG1lIGtub3csIEknbGwgd3JpdGUgaXQgKGJ1dAoraXQgd2lsbCBiZSBzbG93KS4KKworV2hlbiB0aGUgc3lzdGVtIGlzIG91dCBvZiBtZW1vcnkgYW5kIHN3YXAsIGl0IG1heSBzbGlnaHRseSBjb3JydXB0IGZpbGVzeXN0ZW0KKyhsb3N0IGZpbGVzLCB1bmJhbGFuY2VkIGRpcmVjdG9yaWVzKS4gKEkgZ3Vlc3MgYWxsIGZpbGVzeXN0ZW0gbWF5IGRvIGl0KS4KKworV2hlbiBjb21waWxlZCwgeW91IGdldCB3YXJuaW5nOiBmdW5jdGlvbiBkZWNsYXJhdGlvbiBpc24ndCBhIHByb3RvdHlwZS4gRG9lcworYW55Ym9keSBrbm93IHdoYXQgZG9lcyBpdCBtZWFuPworCisKK1doYXQgZG9lcyAidW5iYWxhbmNlZCB0cmVlIiBtZXNzYWdlIG1lYW4/CisKK09sZCB2ZXJzaW9ucyBvZiB0aGlzIGRyaXZlciBjcmVhdGVkIHNvbWV0aW1lcyB1bmJhbGFuY2VkIGRub2RlIHRyZWVzLiBPUy8yCitjaGtkc2sgZG9lc24ndCBzY3JlYW0gaWYgdGhlIHRyZWUgaXMgdW5iYWxhbmNlZCAoYW5kIHNvbWV0aW1lcyBjcmVhdGVzCit1bmJhbGFuY2VkIHRyZWVzIHRvbyA6LSkgYnV0IGJvdGggSFBGUyBhbmQgSFBGUzM4NiBjb250YWluIGJ1ZyB0aGF0IGl0IHJhcmVseQorY3Jhc2hlcyB3aGVuIHRoZSB0cmVlIGlzIG5vdCBiYWxhbmNlZC4gVGhpcyBkcml2ZXIgaGFuZGxlcyB1bmJhbGFuY2VkIHRyZWVzCitjb3JyZWN0bHkgYW5kIHdyaXRlcyB3YXJuaW5nIGlmIGl0IGZpbmRzIHRoZW0uIElmIHlvdSBzZWUgdGhpcyBtZXNzYWdlLCB0aGlzIGlzCitwcm9iYWJseSBiZWNhdXNlIG9mIGRpcmVjdG9yaWVzIGNyZWF0ZWQgd2l0aCBvbGQgdmVyc2lvbiBvZiB0aGlzIGRyaXZlci4KK1dvcmthcm91bmQgaXMgdG8gbW92ZSBhbGwgZmlsZXMgZnJvbSB0aGF0IGRpcmVjdG9yeSB0byBhbm90aGVyIGFuZCB0aGVuIGJhY2sKK2FnYWluLiBEbyBpdCBpbiBMaW51eCwgbm90IE9TLzIhIElmIHlvdSBzZWUgdGhpcyBtZXNzYWdlIGluIGRpcmVjdG9yeSB0aGF0IGlzCit3aG9sZSBjcmVhdGVkIGJ5IHRoaXMgZHJpdmVyLCBpdCBpcyBCVUcgLSBsZXQgbWUga25vdyBhYm91dCBpdC4KKworCitCdWdzIGluIE9TLzIKKworV2hlbiB5b3UgaGF2ZSB0d28gKG9yIG1vcmUpIGxvc3QgZGlyZWN0b3JpZXMgcG9pbnRpbmcgZWFjaCB0byBvdGhlciwgY2hrZHNrCitsb2NrcyB1cCB3aGVuIHJlcGFpcmluZyBmaWxlc3lzdGVtLgorCitTb21ldGltZXMgKEkgdGhpbmsgaXQncyByYW5kb20pIHdoZW4geW91IGNyZWF0ZSBhIGZpbGUgd2l0aCBvbmUtY2hhciBuYW1lIHVuZGVyCitPUy8yLCBPUy8yIG1hcmtzIGl0IGFzICdsb25nJy4gY2hrZHNrIHRoZW4gcmVtb3ZlcyB0aGlzIGZsYWcgc2F5aW5nICJNaW5vciBmcworZXJyb3IgY29ycmVjdGVkIi4KKworRmlsZSBuYW1lcyBsaWtlICJhIC5iIiBhcmUgbWFya2VkIGFzICdsb25nJyBieSBPUy8yIGJ1dCBjaGtkc2sgImNvcnJlY3RzIiBpdCBhbmQKK21hcmtzIHRoZW0gYXMgc2hvcnQgKGFuZCB3cml0ZXMgIm1pbm9yIGZzIGVycm9yIGNvcnJlY3RlZCIpLiBUaGlzIGJ1ZyBpcyBub3QgaW4KK0hQRlMzODYuCisKK0NvZGVwYWdlIGJ1Z3MgZGVzY3JpYmVkIGFib3ZlLgorCitJZiB5b3UgZG9uJ3QgaW5zdGFsbCBmaXhwYWNrcywgdGhlcmUgYXJlIG1hbnksIG1hbnkgbW9yZS4uLgorCisKK0hpc3RvcnkKKworMC45MCBGaXJzdCBwdWJsaWMgcmVsZWFzZQorMC45MSBGaXhlZCBidWcgdGhhdCBjYXVzZWQgc2hvb3RpbmcgdG8gbWVtb3J5IHdoZW4gd3JpdGVfaW5vZGUgd2FzIGNhbGxlZCBvbgorCW9wZW4gaW5vZGUgKHJhcmVseSBoYXBwZW5lZCkKKzAuOTIgRml4ZWQgYSBsaXR0bGUgbWVtb3J5IGxlYWsgaW4gZnJlZWluZyBkaXJlY3RvcnkgaW5vZGVzCiswLjkzIEZpeGVkIGJ1ZyB0aGF0IGxvY2tlZCB1cCB0aGUgbWFjaGluZSB3aGVuIHRoZXJlIHdlcmUgdG9vIG1hbnkgZmlsZW5hbWVzCisJd2l0aCBmaXJzdCAxNSBjaGFyYWN0ZXJzIHNhbWUKKyAgICAgRml4ZWQgd3JpdGVfZmlsZSB0byB6ZXJvIGZpbGUgd2hlbiB3cml0aW5nIGJlaGluZCBmaWxlIGVuZAorMC45NCBGaXhlZCBhIGxpdHRsZSBtZW1vcnkgbGVhayB3aGVuIHRyeWluZyB0byBkZWxldGUgYnVzeSBmaWxlIG9yIGRpcmVjdG9yeQorMC45NSBGaXhlZCBhIGJ1ZyB0aGF0IGlfaHBmc19wYXJlbnRfZGlyIHdhcyBub3QgdXBkYXRlZCB3aGVuIG1vdmluZyBmaWxlcworMS45MCBGaXJzdCB2ZXJzaW9uIGZvciAyLjEuMXh4IGtlcm5lbHMKKzEuOTEgRml4ZWQgYSBidWcgdGhhdCBjaGtfc2VjdG9ycyBmYWlsZWQgd2hlbiBzZWN0b3JzIHdlcmUgYXQgdGhlIGVuZCBvZiBkaXNrCisgICAgIEZpeGVkIGEgcmFjZS1jb25kaXRpb24gd2hlbiB3cml0ZV9pbm9kZSBpcyBjYWxsZWQgd2hpbGUgZGVsZXRpbmcgZmlsZQorICAgICBGaXhlZCBhIGJ1ZyB0aGF0IGNvdWxkIHBvc3NpYmx5IGhhcHBlbiAod2l0aCB2ZXJ5IGxvdyBwcm9iYWJpbGl0eSkgd2hlbgorICAgICAJdXNpbmcgMHhmZiBpbiBmaWxlbmFtZXMKKyAgICAgUmV3cml0dGVuIGxvY2tpbmcgdG8gYXZvaWQgcmFjZS1jb25kaXRpb25zCisgICAgIE1vdW50IG9wdGlvbiAnZWFzJyBub3cgd29ya3MKKyAgICAgRnN5bmMgbm8gbG9uZ2VyIHJldHVybnMgZXJyb3IKKyAgICAgRmlsZXMgYmVnaW5uaW5nIHdpdGggJy4nIGFyZSBtYXJrZWQgaGlkZGVuCisgICAgIFJlbW91bnQgc3VwcG9ydCBhZGRlZAorICAgICBBbGxvYyBpcyBub3Qgc28gc2xvdyB3aGVuIGZpbGVzeXN0ZW0gYmVjb21lcyBmdWxsCisgICAgIEF0aW1lcyBhcmUgbm8gbW9yZSB1cGRhdGVkIGJlY2F1c2UgaXQgc2xvd3MgZG93biBvcGVyYXRpb24KKyAgICAgQ29kZSBjbGVhbnVwIChyZW1vdmVkIGFsbCBjb21tZW50ZWQgZGVidWcgcHJpbnRzKQorMS45MiBDb3JyZWN0ZWQgYSBidWcgd2hlbiBzeW5jIHdhcyBjYWxsZWQganVzdCBiZWZvcmUgY2xvc2luZyBmaWxlCisxLjkzIE1vZGlmaWVkLCBzbyB0aGF0IGl0IHdvcmtzIHdpdGgga2VybmVscyA+PSAyLjEuMTMxLCBJIGRvbid0IGtub3cgaWYgaXQKKwl3b3JrcyB3aXRoIHByZXZpb3VzIHZlcnNpb25zCisgICAgIEZpeGVkIGEgcG9zc2libGUgcHJvYmxlbSB3aXRoIGRpc2tzID4gNjRHIChidXQgSSBkb24ndCBoYXZlIG9uZSwgc28gSSBjYW4ndAorICAgICAJdGVzdCBpdCkKKyAgICAgRml4ZWQgYSBmaWxlIG92ZXJmbG93IGF0IDJHCisgICAgIEFkZGVkIG5ldyBvcHRpb24gJ3RpbWVzaGlmdCcKKyAgICAgQ2hhbmdlZCBiZWhhdmlvdXIgb24gSFBGUzM4NjogSXQgaXMgbm93IHBvc3NpYmxlIHRvIG9wZXJhdGUgb24gSFBGUzM4NiBpbgorICAgICAJcmVhZC1vbmx5IG1vZGUKKyAgICAgRml4ZWQgYSBidWcgdGhhdCBzbG93ZWQgZG93biBhbGxvYyBhbmQgcHJldmVudGVkIGFsbG9jYXRpbmcgMTAwJSBzcGFjZQorICAgICAJKHRoaXMgYnVnIHdhcyBub3QgZGVzdHJ1Y3RpdmUpCisxLjk0IEFkZGVkIHdvcmthcm91bmQgZm9yIG9uZSBidWcgaW4gTGludXgKKyAgICAgRml4ZWQgb25lIGJ1ZmZlciBsZWFrCisgICAgIEZpeGVkIHNvbWUgaW5jb21wYXRpYmlsaXRpZXMgd2l0aCBsYXJnZSBleHRlbmRlZCBhdHRyaWJ1dGVzIChidXQgaXQncyBzdGlsbAorCW5vdCAxMDAlIG9rLCBJIGhhdmUgbm8gaW5mbyBvbiBpdCBhbmQgT1MvMiBkb2Vzbid0IHdhbnQgdG8gY3JlYXRlIHRoZW0pCisgICAgIFJld3JpdHRlbiBhbGxvY2F0aW9uCisgICAgIEZpeGVkIGEgYnVnIHdpdGggaV9ibG9ja3MgKGR1IHNvbWV0aW1lcyBkaWRuJ3QgZGlzcGxheSBjb3JyZWN0IHZhbHVlcykKKyAgICAgRGlyZWN0b3JpZXMgaGF2ZSBubyBsb25nZXIgYXJjaGl2ZSBhdHRyaWJ1dGUgc2V0IChzb21lIHByb2dyYW1zIGRvbid0IGxpa2UKKwlpdCkKKyAgICAgRml4ZWQgYSBidWcgdGhhdCBpdCBzZXQgYmFkbHkgb25lIGZsYWcgaW4gbGFyZ2UgYW5vZGUgdHJlZSAoaXQgd2FzIG5vdAorCWRlc3RydWN0aXZlKQorMS45NSBGaXhlZCBvbmUgYnVmZmVyIGxlYWssIHRoYXQgY291bGQgaGFwcGVuIG9uIGNvcnJ1cHRlZCBmaWxlc3lzdGVtCisgICAgIEZpeGVkIG9uZSBidWcgaW4gYWxsb2NhdGlvbiBpbiAxLjk0CisxLjk2IEFkZGVkIHdvcmthcm91bmQgZm9yIG9uZSBidWcgaW4gT1MvMiAoSFBGUyBsb2NrZWQgdXAsIEhQRlMzODYgcmVwb3J0ZWQKKwllcnJvciBzb21ldGltZXMgd2hlbiBvcGVuaW5nIGRpcmVjdG9yaWVzIGluIFBNU0hFTEwpCisgICAgIEZpeGVkIGEgcG9zc2libGUgYml0bWFwIHJhY2UKKyAgICAgRml4ZWQgcG9zc2libGUgcHJvYmxlbSBvbiBsYXJnZSBkaXNrcworICAgICBZb3UgY2FuIG5vdyBkZWxldGUgb3BlbiBmaWxlcworICAgICBGaXhlZCBhIG5vbmRlc3RydWN0aXZlIHJhY2UgaW4gcmVuYW1lCisxLjk3IFN1cHBvcnQgZm9yIEhQRlMgdjMgKG9uIGxhcmdlIHBhcnRpdGlvbnMpCisgICAgIEZpeGVkIGEgYnVnIHRoYXQgaXQgZGlkbid0IGFsbG93IGNyZWF0aW9uIG9mIGZpbGVzID4gMTI4TSAoaXQgc2hvdWxkIGJlIDJHKQorMS45Ny4xIENoYW5nZWQgbmFtZXMgb2YgZ2xvYmFsIHN5bWJvbHMKKyAgICAgICBGaXhlZCBhIGJ1ZyB3aGVuIGNobW9kaW5nIG9yIGNob3duaW5nIHJvb3QgZGlyZWN0b3J5CisxLjk4IEZpeGVkIGEgZGVhZGxvY2sgd2hlbiB1c2luZyBvbGRfcmVhZGRpcgorICAgICBCZXR0ZXIgZGlyZWN0b3J5IGhhbmRsaW5nOyB3b3JrYXJvdW5kIGZvciAidW5iYWxhbmNlZCB0cmVlIiBidWcgaW4gT1MvMgorMS45OSBDb3JyZWN0ZWQgYSBwb3NzaWJsZSBwcm9ibGVtIHdoZW4gdGhlcmUncyBub3QgZW5vdWdoIHNwYWNlIHdoaWxlIGRlbGV0aW5nCisJZmlsZQorICAgICBOb3cgaXQgdHJpZXMgdG8gdHJ1bmNhdGUgdGhlIGZpbGUgaWYgdGhlcmUncyBub3QgZW5vdWdoIHNwYWNlIHdoZW4gZGVsZXRpbmcKKyAgICAgUmVtb3ZlZCBhIGxvdCBvZiByZWR1bmRhbnQgY29kZQorMi4wMCBGaXhlZCBhIGJ1ZyBpbiByZW5hbWUgKGl0IHdhcyB0aGVyZSBzaW5jZSAxLjk2KQorICAgICBCZXR0ZXIgYW50aS1mcmFnbWVudGF0aW9uIHN0cmF0ZWd5CisyLjAxIEZpeGVkIHByb2JsZW0gd2l0aCBkaXJlY3RvcnkgbGlzdGluZyBvdmVyIE5GUworICAgICBEaXJlY3RvcnkgbHNlZWsgbm93IGNoZWNrcyBmb3IgcHJvcGVyIHBhcmFtZXRlcnMKKyAgICAgRml4ZWQgcmFjZS1jb25kaXRpb24gaW4gYnVmZmVyIGNvZGUgLSBpdCBpcyBpbiBhbGwgZmlsZXN5c3RlbXMgaW4gTGludXg7CisgICAgICAgIHdoZW4gcmVhZGluZyBkZXZpY2UgKGNhdCAvZGV2L2hkYSkgd2hpbGUgY3JlYXRpbmcgZmlsZXMgb24gaXQsIGZpbGVzCisgICAgICAgIGNvdWxkIGJlIGRhbWFnZWQKKzIuMDIgV29ya2Fyb3VuZCBmb3IgYnVnIGluIGJyZWFkYSBpbiBMaW51eC4gYnJlYWRhIGNvdWxkIGNhdXNlIGFjY2Vzc2VzIGJleW9uZAorICAgICAgICBlbmQgb2YgcGFydGl0aW9uCisyLjAzIENoYXIsIGJsb2NrIGRldmljZXMgYW5kIHBpcGVzIGFyZSBjb3JyZWN0bHkgY3JlYXRlZAorICAgICBGaXhlZCBub24tY3Jhc2hpbmcgcmFjZSBpbiB1bmxpbmsgKEFsZXhhbmRlciBWaXJvKQorICAgICBOb3cgaXQgd29ya3Mgd2l0aCBKYXBhbmVzZSB2ZXJzaW9uIG9mIE9TLzIKKzIuMDQgRml4ZWQgZXJyb3Igd2hlbiBmdHJ1bmNhdGUgdXNlZCB0byBleHRlbmQgZmlsZQorMi4wNSBGaXhlZCBjcmFzaCB3aGVuIGdvdCBtb3VudCBwYXJhbWV0ZXJzIHdpdGhvdXQgPQorICAgICBGaXhlZCBjcmFzaCB3aGVuIGFsbG9jYXRpb24gb2YgYW5vZGUgZmFpbGVkIGR1ZSB0byBmdWxsIGRpc2sKKyAgICAgRml4ZWQgc29tZSBjcmFzaGVzIHdoZW4gYmxvY2sgaW8gb3IgaW5vZGUgYWxsb2NhdGlvbiBmYWlsZWQKKzIuMDYgRml4ZWQgc29tZSBjcmFzaCBvbiBjb3JydXB0ZWQgZGlzayBzdHJ1Y3R1cmVzCisgICAgIEJldHRlciBhbGxvY2F0aW9uIHN0cmF0ZWd5CisgICAgIFJlc2NoZWR1bGUgcG9pbnRzIGFkZGVkIHNvIHRoYXQgaXQgZG9lc24ndCBsb2NrIENQVSBsb25nIHRpbWUKKyAgICAgSXQgc2hvdWxkIHdvcmsgaW4gcmVhZC1vbmx5IG1vZGUgb24gV2FycCBTZXJ2ZXIKKzIuMDcgTW9yZSBmaXhlcyBmb3IgV2FycCBTZXJ2ZXIuIE5vdyBpdCByZWFsbHkgd29ya3MKKzIuMDggQ3JlYXRpbmcgbmV3IGZpbGVzIGlzIG5vdCBzbyBzbG93IG9uIGxhcmdlIGRpc2tzCisgICAgIEFuIGF0dGVtcHQgdG8gc3luYyBkZWxldGVkIGZpbGUgZG9lcyBub3QgZ2VuZXJhdGUgZmlsZXN5c3RlbSBlcnJvcgorMi4wOSBGaXhlZCBlcnJvciBvbiBleHRyZW1lbHkgZnJhZ21lbnRlZCBmaWxlcworCisKKyB2aW06IHNldCB0ZXh0d2lkdGg9ODA6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lub3RpZnkudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pbm90aWZ5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWY2MWRiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pbm90aWZ5LnR4dApAQCAtMCwwICsxLDc5IEBACisJCQkJICAgaW5vdGlmeQorCSAgICBhIHBvd2VyZnVsIHlldCBzaW1wbGUgZmlsZSBjaGFuZ2Ugbm90aWZpY2F0aW9uIHN5c3RlbQorCisKKworRG9jdW1lbnQgc3RhcnRlZCAxNSBNYXIgMjAwNSBieSBSb2JlcnQgTG92ZSA8cm1sQG5vdmVsbC5jb20+CitEb2N1bWVudCB1cGRhdGVkIDQgSmFuIDIwMTUgYnkgWmhhbmcgWmhlbiA8emhlbnpoYW5nLnpoYW5nQGh1YXdlaS5jb20+CisJLS1EZWxldGVkIG9ic29sZXRlZCBpbnRlcmZhY2UsIGp1c3QgcmVmZXIgdG8gbWFucGFnZXMgZm9yIHVzZXIgaW50ZXJmYWNlLgorCisoaSkgUmF0aW9uYWxlCisKK1E6IFdoYXQgaXMgdGhlIGRlc2lnbiBkZWNpc2lvbiBiZWhpbmQgbm90IHR5aW5nIHRoZSB3YXRjaCB0byB0aGUgb3BlbiBmZCBvZgorICAgdGhlIHdhdGNoZWQgb2JqZWN0PworCitBOiBXYXRjaGVzIGFyZSBhc3NvY2lhdGVkIHdpdGggYW4gb3BlbiBpbm90aWZ5IGRldmljZSwgbm90IGFuIG9wZW4gZmlsZS4KKyAgIFRoaXMgc29sdmVzIHRoZSBwcmltYXJ5IHByb2JsZW0gd2l0aCBkbm90aWZ5OiBrZWVwaW5nIHRoZSBmaWxlIG9wZW4gcGlucworICAgdGhlIGZpbGUgYW5kIHRodXMsIHdvcnNlLCBwaW5zIHRoZSBtb3VudC4gIERub3RpZnkgaXMgdGhlcmVmb3JlIGluZmVhc2libGUKKyAgIGZvciB1c2Ugb24gYSBkZXNrdG9wIHN5c3RlbSB3aXRoIHJlbW92YWJsZSBtZWRpYSBhcyB0aGUgbWVkaWEgY2Fubm90IGJlCisgICB1bm1vdW50ZWQuICBXYXRjaGluZyBhIGZpbGUgc2hvdWxkIG5vdCByZXF1aXJlIHRoYXQgaXQgYmUgb3Blbi4KKworUTogV2hhdCBpcyB0aGUgZGVzaWduIGRlY2lzaW9uIGJlaGluZCB1c2luZyBhbi1mZC1wZXItaW5zdGFuY2UgYXMgb3Bwb3NlZCB0bworICAgYW4gZmQtcGVyLXdhdGNoPworCitBOiBBbiBmZC1wZXItd2F0Y2ggcXVpY2tseSBjb25zdW1lcyBtb3JlIGZpbGUgZGVzY3JpcHRvcnMgdGhhbiBhcmUgYWxsb3dlZCwKKyAgIG1vcmUgZmQncyB0aGFuIGFyZSBmZWFzaWJsZSB0byBtYW5hZ2UsIGFuZCBtb3JlIGZkJ3MgdGhhbiBhcmUgb3B0aW1hbGx5CisgICBzZWxlY3QoKS1hYmxlLiAgWWVzLCByb290IGNhbiBidW1wIHRoZSBwZXItcHJvY2VzcyBmZCBsaW1pdCBhbmQgeWVzLCB1c2VycworICAgY2FuIHVzZSBlcG9sbCwgYnV0IHJlcXVpcmluZyBib3RoIGlzIGEgc2lsbHkgYW5kIGV4dHJhbmVvdXMgcmVxdWlyZW1lbnQuCisgICBBIHdhdGNoIGNvbnN1bWVzIGxlc3MgbWVtb3J5IHRoYW4gYW4gb3BlbiBmaWxlLCBzZXBhcmF0aW5nIHRoZSBudW1iZXIKKyAgIHNwYWNlcyBpcyB0aHVzIHNlbnNpYmxlLiAgVGhlIGN1cnJlbnQgZGVzaWduIGlzIHdoYXQgdXNlci1zcGFjZSBkZXZlbG9wZXJzCisgICB3YW50OiBVc2VycyBpbml0aWFsaXplIGlub3RpZnksIG9uY2UsIGFuZCBhZGQgbiB3YXRjaGVzLCByZXF1aXJpbmcgYnV0IG9uZQorICAgZmQgYW5kIG5vIHR3aWRkbGluZyB3aXRoIGZkIGxpbWl0cy4gIEluaXRpYWxpemluZyBhbiBpbm90aWZ5IGluc3RhbmNlIHR3bworICAgdGhvdXNhbmQgdGltZXMgaXMgc2lsbHkuICBJZiB3ZSBjYW4gaW1wbGVtZW50IHVzZXItc3BhY2UncyBwcmVmZXJlbmNlcyAKKyAgIGNsZWFubHktLWFuZCB3ZSBjYW4sIHRoZSBpZHIgbGF5ZXIgbWFrZXMgc3R1ZmYgbGlrZSB0aGlzIHRyaXZpYWwtLXRoZW4gd2UgCisgICBzaG91bGQuCisKKyAgIFRoZXJlIGFyZSBvdGhlciBnb29kIGFyZ3VtZW50cy4gIFdpdGggYSBzaW5nbGUgZmQsIHRoZXJlIGlzIGEgc2luZ2xlCisgICBpdGVtIHRvIGJsb2NrIG9uLCB3aGljaCBpcyBtYXBwZWQgdG8gYSBzaW5nbGUgcXVldWUgb2YgZXZlbnRzLiAgVGhlIHNpbmdsZQorICAgZmQgcmV0dXJucyBhbGwgd2F0Y2ggZXZlbnRzIGFuZCBhbHNvIGFueSBwb3RlbnRpYWwgb3V0LW9mLWJhbmQgZGF0YS4gIElmCisgICBldmVyeSBmZCB3YXMgYSBzZXBhcmF0ZSB3YXRjaCwKKworICAgLSBUaGVyZSB3b3VsZCBiZSBubyB3YXkgdG8gZ2V0IGV2ZW50IG9yZGVyaW5nLiAgRXZlbnRzIG9uIGZpbGUgZm9vIGFuZAorICAgICBmaWxlIGJhciB3b3VsZCBwb3AgcG9sbCgpIG9uIGJvdGggZmQncywgYnV0IHRoZXJlIHdvdWxkIGJlIG5vIHdheSB0byB0ZWxsCisgICAgIHdoaWNoIGhhcHBlbmVkIGZpcnN0LiAgQSBzaW5nbGUgcXVldWUgdHJpdmlhbGx5IGdpdmVzIHlvdSBvcmRlcmluZy4gIFN1Y2gKKyAgICAgb3JkZXJpbmcgaXMgY3J1Y2lhbCB0byBleGlzdGluZyBhcHBsaWNhdGlvbnMgc3VjaCBhcyBCZWFnbGUuICBJbWFnaW5lCisgICAgICJtdiBhIGIgOyBtdiBiIGEiIGV2ZW50cyB3aXRob3V0IG9yZGVyaW5nLgorCisgICAtIFdlJ2QgaGF2ZSB0byBtYWludGFpbiBuIGZkJ3MgYW5kIG4gaW50ZXJuYWwgcXVldWVzIHdpdGggc3RhdGUsCisgICAgIHZlcnN1cyBqdXN0IG9uZS4gIEl0IGlzIGEgbG90IG1lc3NpZXIgaW4gdGhlIGtlcm5lbC4gIEEgc2luZ2xlLCBsaW5lYXIKKyAgICAgcXVldWUgaXMgdGhlIGRhdGEgc3RydWN0dXJlIHRoYXQgbWFrZXMgc2Vuc2UuCisKKyAgIC0gVXNlci1zcGFjZSBkZXZlbG9wZXJzIHByZWZlciB0aGUgY3VycmVudCBBUEkuICBUaGUgQmVhZ2xlIGd1eXMsIGZvcgorICAgICBleGFtcGxlLCBsb3ZlIGl0LiAgVHJ1c3QgbWUsIEkgYXNrZWQuICBJdCBpcyBub3QgYSBzdXJwcmlzZTogV2hvJ2Qgd2FudAorICAgICB0byBtYW5hZ2UgYW5kIGJsb2NrIG9uIDEwMDAgZmQncyB2aWEgc2VsZWN0PworCisgICAtIE5vIHdheSB0byBnZXQgb3V0IG9mIGJhbmQgZGF0YS4KKworICAgLSAxMDI0IGlzIHN0aWxsIHRvbyBsb3cuICA7LSkKKworICAgV2hlbiB5b3UgdGFsayBhYm91dCBkZXNpZ25pbmcgYSBmaWxlIGNoYW5nZSBub3RpZmljYXRpb24gc3lzdGVtIHRoYXQKKyAgIHNjYWxlcyB0byAxMDAwcyBvZiBkaXJlY3RvcmllcywganVnZ2xpbmcgMTAwMHMgb2YgZmQncyBqdXN0IGRvZXMgbm90IHNlZW0KKyAgIHRoZSByaWdodCBpbnRlcmZhY2UuICBJdCBpcyB0b28gaGVhdnkuCisKKyAgIEFkZGl0aW9uYWxseSwgaXQgX2lzXyBwb3NzaWJsZSB0byAgbW9yZSB0aGFuIG9uZSBpbnN0YW5jZSAgYW5kCisgICBqdWdnbGUgbW9yZSB0aGFuIG9uZSBxdWV1ZSBhbmQgdGh1cyBtb3JlIHRoYW4gb25lIGFzc29jaWF0ZWQgZmQuICBUaGVyZQorICAgbmVlZCBub3QgYmUgYSBvbmUtZmQtcGVyLXByb2Nlc3MgbWFwcGluZzsgaXQgaXMgb25lLWZkLXBlci1xdWV1ZSBhbmQgYQorICAgcHJvY2VzcyBjYW4gZWFzaWx5IHdhbnQgbW9yZSB0aGFuIG9uZSBxdWV1ZS4KKworUTogV2h5IHRoZSBzeXN0ZW0gY2FsbCBhcHByb2FjaD8KKworQTogVGhlIHBvb3IgdXNlci1zcGFjZSBpbnRlcmZhY2UgaXMgdGhlIHNlY29uZCBiaWdnZXN0IHByb2JsZW0gd2l0aCBkbm90aWZ5LgorICAgU2lnbmFscyBhcmUgYSB0ZXJyaWJsZSwgdGVycmlibGUgaW50ZXJmYWNlIGZvciBmaWxlIG5vdGlmaWNhdGlvbi4gIE9yIGZvcgorICAgYW55dGhpbmcsIGZvciB0aGF0IG1hdHRlci4gIFRoZSBpZGVhbCBzb2x1dGlvbiwgZnJvbSBhbGwgcGVyc3BlY3RpdmVzLCBpcyBhCisgICBmaWxlIGRlc2NyaXB0b3ItYmFzZWQgb25lIHRoYXQgYWxsb3dzIGJhc2ljIGZpbGUgSS9PIGFuZCBwb2xsL3NlbGVjdC4KKyAgIE9idGFpbmluZyB0aGUgZmQgYW5kIG1hbmFnaW5nIHRoZSB3YXRjaGVzIGNvdWxkIGhhdmUgYmVlbiBkb25lIGVpdGhlciB2aWEgYQorICAgZGV2aWNlIGZpbGUgb3IgYSBmYW1pbHkgb2YgbmV3IHN5c3RlbSBjYWxscy4gIFdlIGRlY2lkZWQgdG8gaW1wbGVtZW50IGEKKyAgIGZhbWlseSBvZiBzeXN0ZW0gY2FsbHMgYmVjYXVzZSB0aGF0IGlzIHRoZSBwcmVmZXJyZWQgYXBwcm9hY2ggZm9yIG5ldyBrZXJuZWwKKyAgIGludGVyZmFjZXMuICBUaGUgb25seSByZWFsIGRpZmZlcmVuY2Ugd2FzIHdoZXRoZXIgd2Ugd2FudGVkIHRvIHVzZSBvcGVuKDIpCisgICBhbmQgaW9jdGwoMikgb3IgYSBjb3VwbGUgb2YgbmV3IHN5c3RlbSBjYWxscy4gIFN5c3RlbSBjYWxscyBiZWF0IGlvY3Rscy4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pc29mcy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2lzb2ZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTBhOTMzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pc29mcy50eHQKQEAgLTAsMCArMSw0OCBAQAorTW91bnQgb3B0aW9ucyB0aGF0IGFyZSB0aGUgc2FtZSBhcyBmb3IgbXNkb3MgYW5kIHZmYXQgcGFydGl0aW9ucy4KKworICBnaWQ9bm5uCUFsbCBmaWxlcyBpbiB0aGUgcGFydGl0aW9uIHdpbGwgYmUgaW4gZ3JvdXAgbm5uLgorICB1aWQ9bm5uCUFsbCBmaWxlcyBpbiB0aGUgcGFydGl0aW9uIHdpbGwgYmUgb3duZWQgYnkgdXNlciBpZCBubm4uCisgIHVtYXNrPW5ubglUaGUgcGVybWlzc2lvbiBtYXNrIChzZWUgdW1hc2soMSkpIGZvciB0aGUgcGFydGl0aW9uLgorCitNb3VudCBvcHRpb25zIHRoYXQgYXJlIHRoZSBzYW1lIGFzIHZmYXQgcGFydGl0aW9ucy4gVGhlc2UgYXJlIG9ubHkgdXNlZnVsCit3aGVuIHVzaW5nIGRpc2NzIGVuY29kZWQgdXNpbmcgTWljcm9zb2Z0J3MgSm9saWV0IGV4dGVuc2lvbnMuCisgIGlvY2hhcnNldD1uYW1lIENoYXJhY3RlciBzZXQgdG8gdXNlIGZvciBjb252ZXJ0aW5nIGZyb20gVW5pY29kZSB0bworCQlBU0NJSS4gIEpvbGlldCBmaWxlbmFtZXMgYXJlIHN0b3JlZCBpbiBVbmljb2RlIGZvcm1hdCwgYnV0CisJCVVuaXggZm9yIHRoZSBtb3N0IHBhcnQgZG9lc24ndCBrbm93IGhvdyB0byBkZWFsIHdpdGggVW5pY29kZS4KKwkJVGhlcmUgaXMgYWxzbyBhbiBvcHRpb24gb2YgZG9pbmcgVVRGLTggdHJhbnNsYXRpb25zIHdpdGggdGhlCisJCXV0Zjggb3B0aW9uLgorICB1dGY4ICAgICAgICAgIEVuY29kZSBVbmljb2RlIG5hbWVzIGluIFVURi04IGZvcm1hdC4gRGVmYXVsdCBpcyBuby4KKworTW91bnQgb3B0aW9ucyB1bmlxdWUgdG8gdGhlIGlzb2ZzIGZpbGVzeXN0ZW0uCisgIGJsb2NrPTUxMiAgICAgU2V0IHRoZSBibG9jayBzaXplIGZvciB0aGUgZGlzayB0byA1MTIgYnl0ZXMKKyAgYmxvY2s9MTAyNCAgICBTZXQgdGhlIGJsb2NrIHNpemUgZm9yIHRoZSBkaXNrIHRvIDEwMjQgYnl0ZXMKKyAgYmxvY2s9MjA0OCAgICBTZXQgdGhlIGJsb2NrIHNpemUgZm9yIHRoZSBkaXNrIHRvIDIwNDggYnl0ZXMKKyAgY2hlY2s9cmVsYXhlZCBNYXRjaGVzIGZpbGVuYW1lcyB3aXRoIGRpZmZlcmVudCBjYXNlcworICBjaGVjaz1zdHJpY3QgIE1hdGNoZXMgb25seSBmaWxlbmFtZXMgd2l0aCB0aGUgZXhhY3Qgc2FtZSBjYXNlCisgIGNydWZ0ICAgICAgICAgVHJ5IHRvIGhhbmRsZSBiYWRseSBmb3JtYXR0ZWQgQ0RzLgorICBtYXA9b2ZmICAgICAgIERvIG5vdCBtYXAgbm9uLVJvY2sgUmlkZ2UgZmlsZW5hbWVzIHRvIGxvd2VyIGNhc2UKKyAgbWFwPW5vcm1hbCAgICBNYXAgbm9uLVJvY2sgUmlkZ2UgZmlsZW5hbWVzIHRvIGxvd2VyIGNhc2UKKyAgbWFwPWFjb3JuICAgICBBcyBtYXA9bm9ybWFsIGJ1dCBhbHNvIGFwcGx5IEFjb3JuIGV4dGVuc2lvbnMgaWYgcHJlc2VudAorICBtb2RlPXh4eCAgICAgIFNldHMgdGhlIHBlcm1pc3Npb25zIG9uIGZpbGVzIHRvIHh4eCB1bmxlc3MgUm9jayBSaWRnZQorCQlleHRlbnNpb25zIHNldCB0aGUgcGVybWlzc2lvbnMgb3RoZXJ3aXNlCisgIGRtb2RlPXh4eCAgICAgU2V0cyB0aGUgcGVybWlzc2lvbnMgb24gZGlyZWN0b3JpZXMgdG8geHh4IHVubGVzcyBSb2NrIFJpZGdlCisJCWV4dGVuc2lvbnMgc2V0IHRoZSBwZXJtaXNzaW9ucyBvdGhlcndpc2UKKyAgb3ZlcnJpZGVyb2NrcGVybSBTZXQgcGVybWlzc2lvbnMgb24gZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGFjY29yZGluZyB0bworCQknbW9kZScgYW5kICdkbW9kZScgZXZlbiB0aG91Z2ggUm9jayBSaWRnZSBleHRlbnNpb25zIGFyZQorCQlwcmVzZW50LgorICBub2pvbGlldCAgICAgIElnbm9yZSBKb2xpZXQgZXh0ZW5zaW9ucyBpZiB0aGV5IGFyZSBwcmVzZW50LgorICBub3JvY2sgICAgICAgIElnbm9yZSBSb2NrIFJpZGdlIGV4dGVuc2lvbnMgaWYgdGhleSBhcmUgcHJlc2VudC4KKyAgaGlkZQkJQ29tcGxldGVseSBzdHJpcCBoaWRkZW4gZmlsZXMgZnJvbSB0aGUgZmlsZSBzeXN0ZW0uCisgIHNob3dhc3NvYwlTaG93IGZpbGVzIG1hcmtlZCB3aXRoIHRoZSAnYXNzb2NpYXRlZCcgYml0CisgIHVuaGlkZQlEZXByZWNhdGVkOyBzaG93aW5nIGhpZGRlbiBmaWxlcyBpcyBub3cgZGVmYXVsdDsKKwkJSWYgZ2l2ZW4sIGl0IGlzIGEgc3lub255bSBmb3IgJ3Nob3dhc3NvYycgd2hpY2ggd2lsbAorCQlyZWNyZWF0ZSBwcmV2aW91cyB1bmhpZGUgYmVoYXZpb3IKKyAgc2Vzc2lvbj14ICAgICBTZWxlY3QgbnVtYmVyIG9mIHNlc3Npb24gb24gbXVsdGlzZXNzaW9uIENECisgIHNic2VjdG9yPXh4eCAgU2Vzc2lvbiBiZWdpbnMgZnJvbSBzZWN0b3IgeHh4CisKK1JlY29tbWVuZGVkIGRvY3VtZW50cyBhYm91dCBJU08gOTY2MCBzdGFuZGFyZCBhcmUgbG9jYXRlZCBhdDoKK2h0dHA6Ly93d3cueS1hZGFnaW8uY29tLworZnRwOi8vZnRwLmVjbWEuY2gvZWNtYS1zdC9FY21hLTExOS5wZGYKK1F1b3RpbmcgZnJvbSB0aGUgUERGICJUaGlzIDJuZCBFZGl0aW9uIG9mIFN0YW5kYXJkIEVDTUEtMTE5IGlzIHRlY2huaWNhbGx5IAoraWRlbnRpY2FsIHdpdGggSVNPIDk2NjAuIiwgc28gaXQgaXMgYSB2YWxpZCBhbmQgZ3JhdGlzIHN1YnN0aXR1dGUgb2YgdGhlCitvZmZpY2lhbCBJU08gc3BlY2lmaWNhdGlvbi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvamZzLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvamZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWZkNzU3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9qZnMudHh0CkBAIC0wLDAgKzEsNTIgQEAKK0lCTSdzIEpvdXJuYWxlZCBGaWxlIFN5c3RlbSAoSkZTKSBmb3IgTGludXgKKworSkZTIEhvbWVwYWdlOiAgaHR0cDovL2pmcy5zb3VyY2Vmb3JnZS5uZXQvCisKK1RoZSBmb2xsb3dpbmcgbW91bnQgb3B0aW9ucyBhcmUgc3VwcG9ydGVkOgorKCopID09IGRlZmF1bHQKKworaW9jaGFyc2V0PW5hbWUJQ2hhcmFjdGVyIHNldCB0byB1c2UgZm9yIGNvbnZlcnRpbmcgZnJvbSBVbmljb2RlIHRvCisJCUFTQ0lJLiAgVGhlIGRlZmF1bHQgaXMgdG8gZG8gbm8gY29udmVyc2lvbi4gIFVzZQorCQlpb2NoYXJzZXQ9dXRmOCBmb3IgVVRGLTggdHJhbnNsYXRpb25zLiAgVGhpcyByZXF1aXJlcworCQlDT05GSUdfTkxTX1VURjggdG8gYmUgc2V0IGluIHRoZSBrZXJuZWwgLmNvbmZpZyBmaWxlLgorCQlpb2NoYXJzZXQ9bm9uZSBzcGVjaWZpZXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IgZXhwbGljaXRseS4KKworcmVzaXplPXZhbHVlCVJlc2l6ZSB0aGUgdm9sdW1lIHRvIDx2YWx1ZT4gYmxvY2tzLiAgSkZTIG9ubHkgc3VwcG9ydHMKKwkJZ3Jvd2luZyBhIHZvbHVtZSwgbm90IHNocmlua2luZyBpdC4gIFRoaXMgb3B0aW9uIGlzIG9ubHkKKwkJdmFsaWQgZHVyaW5nIGEgcmVtb3VudCwgd2hlbiB0aGUgdm9sdW1lIGlzIG1vdW50ZWQKKwkJcmVhZC13cml0ZS4gIFRoZSByZXNpemUga2V5d29yZCB3aXRoIG5vIHZhbHVlIHdpbGwgZ3JvdworCQl0aGUgdm9sdW1lIHRvIHRoZSBmdWxsIHNpemUgb2YgdGhlIHBhcnRpdGlvbi4KKworbm9pbnRlZ3JpdHkJRG8gbm90IHdyaXRlIHRvIHRoZSBqb3VybmFsLiAgVGhlIHByaW1hcnkgdXNlIG9mIHRoaXMgb3B0aW9uCisJCWlzIHRvIGFsbG93IGZvciBoaWdoZXIgcGVyZm9ybWFuY2Ugd2hlbiByZXN0b3JpbmcgYSB2b2x1bWUKKwkJZnJvbSBiYWNrdXAgbWVkaWEuICBUaGUgaW50ZWdyaXR5IG9mIHRoZSB2b2x1bWUgaXMgbm90CisJCWd1YXJhbnRlZWQgaWYgdGhlIHN5c3RlbSBhYm5vcm1hbGx5IGFiZW5kcy4KKworaW50ZWdyaXR5KCopCUNvbW1pdCBtZXRhZGF0YSBjaGFuZ2VzIHRvIHRoZSBqb3VybmFsLiAgVXNlIHRoaXMgb3B0aW9uIHRvCisJCXJlbW91bnQgYSB2b2x1bWUgd2hlcmUgdGhlIG5vaW50ZWdyaXR5IG9wdGlvbiB3YXMKKwkJcHJldmlvdXNseSBzcGVjaWZpZWQgaW4gb3JkZXIgdG8gcmVzdG9yZSBub3JtYWwgYmVoYXZpb3IuCisKK2Vycm9ycz1jb250aW51ZQkJS2VlcCBnb2luZyBvbiBhIGZpbGVzeXN0ZW0gZXJyb3IuCitlcnJvcnM9cmVtb3VudC1ybygqKQlSZW1vdW50IHRoZSBmaWxlc3lzdGVtIHJlYWQtb25seSBvbiBhbiBlcnJvci4KK2Vycm9ycz1wYW5pYwkJUGFuaWMgYW5kIGhhbHQgdGhlIG1hY2hpbmUgaWYgYW4gZXJyb3Igb2NjdXJzLgorCit1aWQ9dmFsdWUJT3ZlcnJpZGUgb24tZGlzayB1aWQgd2l0aCBzcGVjaWZpZWQgdmFsdWUKK2dpZD12YWx1ZQlPdmVycmlkZSBvbi1kaXNrIGdpZCB3aXRoIHNwZWNpZmllZCB2YWx1ZQordW1hc2s9dmFsdWUJT3ZlcnJpZGUgb24tZGlzayB1bWFzayB3aXRoIHNwZWNpZmllZCBvY3RhbCB2YWx1ZS4gIEZvcgorCQlkaXJlY3RvcmllcywgdGhlIGV4ZWN1dGUgYml0IHdpbGwgYmUgc2V0IGlmIHRoZSBjb3JyZXNwb25kaW5nCisJCXJlYWQgYml0IGlzIHNldC4KKworZGlzY2FyZD1taW5sZW4JVGhpcyBlbmFibGVzL2Rpc2FibGVzIHRoZSB1c2Ugb2YgZGlzY2FyZC9UUklNIGNvbW1hbmRzLgorZGlzY2FyZAkJVGhlIGRpc2NhcmQvVFJJTSBjb21tYW5kcyBhcmUgc2VudCB0byB0aGUgdW5kZXJseWluZworbm9kaXNjYXJkKCopCWJsb2NrIGRldmljZSB3aGVuIGJsb2NrcyBhcmUgZnJlZWQuIFRoaXMgaXMgdXNlZnVsIGZvciBTU0QKKwkJZGV2aWNlcyBhbmQgc3BhcnNlL3RoaW5seS1wcm92aXNpb25lZCBMVU5zLiAgVGhlIEZJVFJJTSBpb2N0bAorCQljb21tYW5kIGlzIGFsc28gYXZhaWxhYmxlIHRvZ2V0aGVyIHdpdGggdGhlIG5vZGlzY2FyZCBvcHRpb24uCisJCVRoZSB2YWx1ZSBvZiBtaW5sZW4gc3BlY2lmaWVzIHRoZSBtaW5pbXVtIGJsb2NrY291bnQsIHdoZW4KKwkJYSBUUklNIGNvbW1hbmQgdG8gdGhlIGJsb2NrIGRldmljZSBpcyBjb25zaWRlcmVkIHVzZWZ1bC4KKwkJV2hlbiBubyB2YWx1ZSBpcyBnaXZlbiB0byB0aGUgZGlzY2FyZCBvcHRpb24sIGl0IGRlZmF1bHRzIHRvCisJCTY0IGJsb2Nrcywgd2hpY2ggbWVhbnMgMjU2S2lCIGluIEpGUy4KKwkJVGhlIG1pbmxlbiB2YWx1ZSBvZiBkaXNjYXJkIG92ZXJyaWRlcyB0aGUgbWlubGVuIHZhbHVlIGdpdmVuCisJCW9uIGFuIEZJVFJJTSBpb2N0bCgpLgorCitUaGUgSkZTIG1haWxpbmcgbGlzdCBjYW4gYmUgc3Vic2NyaWJlZCB0byBieSB1c2luZyB0aGUgbGluayBsYWJlbGVkCisiTWFpbCBsaXN0IFN1YnNjcmliZSIgYXQgb3VyIHdlYiBwYWdlIGh0dHA6Ly9qZnMuc291cmNlZm9yZ2UubmV0LwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9sb2Nrcy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2xvY2tzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2Y4MTA4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9sb2Nrcy50eHQKQEAgLTAsMCArMSw2OCBAQAorCQkgICAgICBGaWxlIExvY2tpbmcgUmVsZWFzZSBOb3RlcworCisJCUFuZHkgV2Fsa2VyIDxhbmR5QGx5c2FrZXIua3ZhZXJuZXIubm8+CisKKwkJCSAgICAxMiBNYXkgMTk5NworCisKKzEuIFdoYXQncyBOZXc/CistLS0tLS0tLS0tLS0tLQorCisxLjEgQnJva2VuIEZsb2NrIEVtdWxhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG9sZCBmbG9jaygyKSBlbXVsYXRpb24gaW4gdGhlIGtlcm5lbCB3YXMgc3dhcHBlZCBmb3IgcHJvcGVyIEJTRAorY29tcGF0aWJsZSBmbG9jaygyKSBzdXBwb3J0IGluIHRoZSAxLjMueCBzZXJpZXMgb2Yga2VybmVscy4gV2l0aCB0aGUKK3JlbGVhc2Ugb2YgdGhlIDIuMS54IGtlcm5lbCBzZXJpZXMsIHN1cHBvcnQgZm9yIHRoZSBvbGQgZW11bGF0aW9uIGhhcworYmVlbiB0b3RhbGx5IHJlbW92ZWQsIHNvIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byBjYXJyeSB0aGlzIGJhZ2dhZ2UKK2ZvcmV2ZXIuCisKK1RoaXMgc2hvdWxkIG5vdCBjYXVzZSBwcm9ibGVtcyBmb3IgYW55Ym9keSwgc2luY2UgZXZlcnlib2R5IHVzaW5nIGEKKzIuMS54IGtlcm5lbCBzaG91bGQgaGF2ZSB1cGRhdGVkIHRoZWlyIEMgbGlicmFyeSB0byBhIHN1aXRhYmxlIHZlcnNpb24KK2FueXdheSAoc2VlIHRoZSBmaWxlICJEb2N1bWVudGF0aW9uL0NoYW5nZXMiLikKKworMS4yIEFsbG93IE1peGVkIExvY2tzIEFnYWluCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworMS4yLjEgVHlwaWNhbCBQcm9ibGVtcyAtIFNlbmRtYWlsCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0JlY2F1c2Ugc2VuZG1haWwgd2FzIHVuYWJsZSB0byB1c2UgdGhlIG9sZCBmbG9jaygpIGVtdWxhdGlvbiwgbWFueSBzZW5kbWFpbAoraW5zdGFsbGF0aW9ucyB1c2UgZmNudGwoKSBpbnN0ZWFkIG9mIGZsb2NrKCkuIFRoaXMgaXMgdHJ1ZSBvZiBTbGFja3dhcmUgMy4wCitmb3IgZXhhbXBsZS4gVGhpcyBnYXZlIHJpc2UgdG8gc29tZSBvdGhlciBzdWJ0bGUgcHJvYmxlbXMgaWYgc2VuZG1haWwgd2FzCitjb25maWd1cmVkIHRvIHJlYnVpbGQgdGhlIGFsaWFzIGZpbGUuIFNlbmRtYWlsIHRyaWVkIHRvIGxvY2sgdGhlIGFsaWFzZXMuZGlyCitmaWxlIHdpdGggZmNudGwoKSBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSBHREJNIHJvdXRpbmVzIHRyaWVkIHRvIGxvY2sgdGhpcworZmlsZSB3aXRoIGZsb2NrKCkuIFdpdGggcHJlIDEuMy45NiBrZXJuZWxzIHRoaXMgY291bGQgcmVzdWx0IGluIGRlYWRsb2NrcyB0aGF0LAorb3ZlciB0aW1lLCBvciB1bmRlciBhIHZlcnkgaGVhdnkgbWFpbCBsb2FkLCB3b3VsZCBldmVudHVhbGx5IGNhdXNlIHRoZSBrZXJuZWwKK3RvIGxvY2sgc29saWQgd2l0aCBkZWFkbG9ja2VkIHByb2Nlc3Nlcy4KKworCisxLjIuMiBUaGUgU29sdXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIHNvbHV0aW9uIEkgaGF2ZSBjaG9zZW4sIGFmdGVyIG11Y2ggZXhwZXJpbWVudGF0aW9uIGFuZCBkaXNjdXNzaW9uLAoraXMgdG8gbWFrZSBmbG9jaygpIGFuZCBmY250bCgpIGxvY2tzIG9ibGl2aW91cyB0byBlYWNoIG90aGVyLiBCb3RoIGNhbgorZXhpc3RzLCBhbmQgbmVpdGhlciB3aWxsIGhhdmUgYW55IGVmZmVjdCBvbiB0aGUgb3RoZXIuCisKK0kgd2FudGVkIHRoZSB0d28gbG9jayBzdHlsZXMgdG8gYmUgY29vcGVyYXRpdmUsIGJ1dCB0aGVyZSB3ZXJlIHNvIG1hbnkKK3JhY2UgYW5kIGRlYWRsb2NrIGNvbmRpdGlvbnMgdGhhdCB0aGUgY3VycmVudCBzb2x1dGlvbiB3YXMgdGhlIG9ubHkKK3ByYWN0aWNhbCBvbmUuIEl0IHB1dHMgdXMgaW4gdGhlIHNhbWUgcG9zaXRpb24gYXMsIGZvciBleGFtcGxlLCBTdW5PUworNC4xLnggYW5kIHNldmVyYWwgb3RoZXIgY29tbWVyY2lhbCBVbmljZXMuIFRoZSBvbmx5IE9TJ3MgdGhhdCBzdXBwb3J0Citjb29wZXJhdGl2ZSBmbG9jaygpL2ZjbnRsKCkgYXJlIHRob3NlIHRoYXQgZW11bGF0ZSBmbG9jaygpIHVzaW5nCitmY250bCgpLCB3aXRoIGFsbCB0aGUgcHJvYmxlbXMgdGhhdCBpbXBsaWVzLgorCisKKzEuMyBNYW5kYXRvcnkgTG9ja2luZyBBcyBBIE1vdW50IE9wdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01hbmRhdG9yeSBsb2NraW5nLCBhcyBkZXNjcmliZWQgaW4KKydEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL21hbmRhdG9yeS1sb2NraW5nLnR4dCcgd2FzIHByaW9yIHRvIHRoaXMgcmVsZWFzZSBhCitnZW5lcmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgd2FzIHZhbGlkIGZvciBhbGwgbW91bnRlZCBmaWxlc3lzdGVtcy4gIFRoaXMKK2hhZCBhIG51bWJlciBvZiBpbmhlcmVudCBkYW5nZXJzLCBub3QgdGhlIGxlYXN0IG9mIHdoaWNoIHdhcyB0aGUgYWJpbGl0eSB0bworZnJlZXplIGFuIE5GUyBzZXJ2ZXIgYnkgYXNraW5nIGl0IHRvIHJlYWQgYSBmaWxlIGZvciB3aGljaCBhIG1hbmRhdG9yeSBsb2NrCitleGlzdGVkLgorCitGcm9tIHRoaXMgcmVsZWFzZSBvZiB0aGUga2VybmVsLCBtYW5kYXRvcnkgbG9ja2luZyBjYW4gYmUgdHVybmVkIG9uIGFuZCBvZmYKK29uIGEgcGVyLWZpbGVzeXN0ZW0gYmFzaXMsIHVzaW5nIHRoZSBtb3VudCBvcHRpb25zICdtYW5kJyBhbmQgJ25vbWFuZCcuCitUaGUgZGVmYXVsdCBpcyB0byBkaXNhbGxvdyBtYW5kYXRvcnkgbG9ja2luZy4gVGhlIGludGVudGlvbiBpcyB0aGF0CittYW5kYXRvcnkgbG9ja2luZyBvbmx5IGJlIGVuYWJsZWQgb24gYSBsb2NhbCBmaWxlc3lzdGVtIGFzIHRoZSBzcGVjaWZpYyBuZWVkCithcmlzZXMuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbG9nZnMudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9sb2dmcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNhNDJjMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbG9nZnMudHh0CkBAIC0wLDAgKzEsMjQxIEBACisKK1RoZSBMb2dGUyBGbGFzaCBGaWxlc3lzdGVtCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitTcGVjaWZpY2F0aW9uCis9PT09PT09PT09PT09CisKK1N1cGVyYmxvY2tzCistLS0tLS0tLS0tLQorCitUd28gc3VwZXJibG9ja3MgZXhpc3QgYXQgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIHRoZSBmaWxlc3lzdGVtLgorRWFjaCBzdXBlcmJsb2NrIGlzIDI1NiBCeXRlcyBsYXJnZSwgd2l0aCBhbm90aGVyIDM4NDAgQnl0ZXMgcmVzZXJ2ZWQKK2ZvciBmdXR1cmUgcHVycG9zZXMsIG1ha2luZyBhIHRvdGFsIG9mIDQwOTYgQnl0ZXMuCisKK1N1cGVyYmxvY2sgbG9jYXRpb25zIG1heSBkaWZmZXIgZm9yIE1URCBhbmQgYmxvY2sgZGV2aWNlcy4gIE9uIE1URCB0aGUKK2ZpcnN0IG5vbi1iYWQgYmxvY2sgY29udGFpbnMgYSBzdXBlcmJsb2NrIGluIHRoZSBmaXJzdCA0MDk2IEJ5dGVzIGFuZAordGhlIGxhc3Qgbm9uLWJhZCBibG9jayBjb250YWlucyBhIHN1cGVyYmxvY2sgaW4gdGhlIGxhc3QgNDA5NiBCeXRlcy4KK09uIGJsb2NrIGRldmljZXMsIHRoZSBmaXJzdCA0MDk2IEJ5dGVzIG9mIHRoZSBkZXZpY2UgY29udGFpbiB0aGUgZmlyc3QKK3N1cGVyYmxvY2sgYW5kIHRoZSBsYXN0IGFsaWduZWQgNDA5NiBCeXRlLWJsb2NrIGNvbnRhaW5zIHRoZSBzZWNvbmQKK3N1cGVyYmxvY2suCisKK0ZvciB0aGUgbW9zdCBwYXJ0LCB0aGUgc3VwZXJibG9ja3MgY2FuIGJlIGNvbnNpZGVyZWQgcmVhZC1vbmx5LiAgVGhleQorYXJlIHdyaXR0ZW4gb25seSB0byBjb3JyZWN0IGVycm9ycyBkZXRlY3RlZCB3aXRoaW4gdGhlIHN1cGVyYmxvY2tzLAorbW92ZSB0aGUgam91cm5hbCBhbmQgY2hhbmdlIHRoZSBmaWxlc3lzdGVtIHBhcmFtZXRlcnMgdGhyb3VnaCB0dW5lZnMuCitBcyBhIHJlc3VsdCwgdGhlIHN1cGVyYmxvY2sgZG9lcyBub3QgY29udGFpbiBhbnkgZmllbGRzIHRoYXQgcmVxdWlyZQorY29uc3RhbnQgdXBkYXRlcywgbGlrZSB0aGUgYW1vdW50IG9mIGZyZWUgc3BhY2UsIGV0Yy4KKworU2VnbWVudHMKKy0tLS0tLS0tCisKK1RoZSBzcGFjZSBpbiB0aGUgZGV2aWNlIGlzIHNwbGl0IHVwIGludG8gZXF1YWwtc2l6ZWQgc2VnbWVudHMuCitTZWdtZW50cyBhcmUgdGhlIHByaW1hcnkgd3JpdGUgdW5pdCBvZiBMb2dGUy4gIFdpdGhpbiBlYWNoIHNlZ21lbnRzLAord3JpdGVzIGhhcHBlbiBmcm9tIGZyb250IChsb3cgYWRkcmVzc2VzKSB0byBiYWNrIChoaWdoIGFkZHJlc3Nlcy4gIElmCitvbmx5IGEgcGFydGlhbCBzZWdtZW50IGhhcyBiZWVuIHdyaXR0ZW4sIHRoZSBzZWdtZW50IG51bWJlciwgdGhlCitjdXJyZW50IHBvc2l0aW9uIHdpdGhpbiBhbmQgb3B0aW9uYWxseSBhIHdyaXRlIGJ1ZmZlciBhcmUgc3RvcmVkIGluCit0aGUgam91cm5hbC4KKworU2VnbWVudHMgYXJlIGVyYXNlZCBhcyBhIHdob2xlLiAgVGhlcmVmb3JlIEdhcmJhZ2UgQ29sbGVjdGlvbiBtYXkgYmUKK3JlcXVpcmVkIHRvIGNvbXBsZXRlbHkgZnJlZSBhIHNlZ21lbnQgYmVmb3JlIGRvaW5nIHNvLgorCitKb3VybmFsCistLS0tLS0tLQorCitUaGUgam91cm5hbCBjb250YWlucyBhbGwgZ2xvYmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmaWxlc3lzdGVtIHRoYXQKK2lzIHN1YmplY3QgdG8gZnJlcXVlbnQgY2hhbmdlLiAgQXQgbW91bnQgdGltZSwgaXQgaGFzIHRvIGJlIHNjYW5uZWQKK2ZvciB0aGUgbW9zdCByZWNlbnQgY29tbWl0IGVudHJ5LCB3aGljaCBjb250YWlucyBhIGxpc3Qgb2YgcG9pbnRlcnMgdG8KK2FsbCBjdXJyZW50bHkgdmFsaWQgZW50cmllcy4KKworT2JqZWN0IFN0b3JlCistLS0tLS0tLS0tLS0KKworQWxsIHNwYWNlIGV4Y2VwdCBmb3IgdGhlIHN1cGVyYmxvY2tzIGFuZCBqb3VybmFsIGlzIHBhcnQgb2YgdGhlIG9iamVjdAorc3RvcmUuICBFYWNoIHNlZ21lbnQgY29udGFpbnMgYSBzZWdtZW50IGhlYWRlciBhbmQgYSBudW1iZXIgb2YKK29iamVjdHMsIGVhY2ggY29uc2lzdGluZyBvZiB0aGUgb2JqZWN0IGhlYWRlciBhbmQgdGhlIHBheWxvYWQuCitPYmplY3RzIGFyZSBlaXRoZXIgaW5vZGVzLCBkaXJlY3RvcnkgZW50cmllcyAoZGVudHJpZXMpLCBmaWxlIGRhdGEKK2Jsb2NrcyBvciBpbmRpcmVjdCBibG9ja3MuCisKK0xldmVscworLS0tLS0tCisKK0dhcmJhZ2UgY29sbGVjdGlvbiAoR0MpIG1heSBmYWlsIGlmIGFsbCBkYXRhIGlzIHdyaXR0ZW4KK2luZGlzY3JpbWluYXRlbHkuICBPbmUgcmVxdWlyZW1lbnQgb2YgR0MgaXMgdGhhdCBkYXRhIGlzIHNlcGFyYXRlZAorcm91Z2hseSBhY2NvcmRpbmcgdG8gdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHRyZWUgcm9vdCBhbmQgdGhlIGRhdGEuCitFZmZlY3RpdmVseSB0aGF0IG1lYW5zIGFsbCBmaWxlIGRhdGEgaXMgb24gbGV2ZWwgMCwgaW5kaXJlY3QgYmxvY2tzCithcmUgb24gbGV2ZWxzIDEsIDIsIDMgNCBvciA1IGZvciAxeCwgMngsIDN4LCA0eCBvciA1eCBpbmRpcmVjdCBibG9ja3MsCityZXNwZWN0aXZlbHkuICBJbm9kZSBmaWxlIGRhdGEgaXMgb24gbGV2ZWwgNiBmb3IgdGhlIGlub2RlcyBhbmQgNy0xMQorZm9yIGluZGlyZWN0IGJsb2Nrcy4KKworRWFjaCBzZWdtZW50IGNvbnRhaW5zIG9iamVjdHMgb2YgYSBzaW5nbGUgbGV2ZWwgb25seS4gIEFzIGEgcmVzdWx0LAorZWFjaCBsZXZlbCByZXF1aXJlcyBpdHMgb3duIHNlcGFyYXRlIHNlZ21lbnQgdG8gYmUgb3BlbiBmb3Igd3JpdGluZy4KKworSW5vZGUgRmlsZQorLS0tLS0tLS0tLQorCitBbGwgaW5vZGVzIGFyZSBzdG9yZWQgaW4gYSBzcGVjaWFsIGZpbGUsIHRoZSBpbm9kZSBmaWxlLiAgU2luZ2xlCitleGNlcHRpb24gaXMgdGhlIGlub2RlIGZpbGUncyBpbm9kZSAobWFzdGVyIGlub2RlKSB3aGljaCBmb3Igb2J2aW91cworcmVhc29ucyBpcyBzdG9yZWQgaW4gdGhlIGpvdXJuYWwgaW5zdGVhZC4gIEluc3RlYWQgb2YgZGF0YSBibG9ja3MsIHRoZQorbGVhZiBub2RlcyBvZiB0aGUgaW5vZGUgZmlsZXMgYXJlIGlub2Rlcy4KKworQWxpYXNlcworLS0tLS0tLQorCitXcml0ZXMgaW4gTG9nRlMgYXJlIGRvbmUgYnkgbWVhbnMgb2YgYSB3YW5kZXJpbmcgdHJlZS4gIEEgbmHDr3ZlCitpbXBsZW1lbnRhdGlvbiB3b3VsZCByZXF1aXJlIHRoYXQgZm9yIGVhY2ggd3JpdGUgb3IgYSBibG9jaywgYWxsCitwYXJlbnQgYmxvY2tzIGFyZSB3cml0dGVuIGFzIHdlbGwsIHNpbmNlIHRoZSBibG9jayBwb2ludGVycyBoYXZlCitjaGFuZ2VkLiAgU3VjaCBhbiBpbXBsZW1lbnRhdGlvbiB3b3VsZCBub3QgYmUgdmVyeSBlZmZpY2llbnQuCisKK0luIExvZ0ZTLCB0aGUgYmxvY2sgcG9pbnRlciBjaGFuZ2VzIGFyZSBjYWNoZWQgaW4gdGhlIGpvdXJuYWwgYnkgbWVhbnMKK29mIGFsaWFzIGVudHJpZXMuICBFYWNoIGFsaWFzIGNvbnNpc3RzIG9mIGl0cyBsb2dpY2FsIGFkZHJlc3MgLSBpbm9kZQorbnVtYmVyLCBibG9jayBpbmRleCwgbGV2ZWwgYW5kIGNoaWxkIG51bWJlciAoaW5kZXggaW50byBibG9jaykgLSBhbmQKK3RoZSBjaGFuZ2VkIGRhdGEuICBBbnkgOC1ieXRlIHdvcmQgY2FuIGJlIGNoYW5nZXMgaW4gdGhpcyBtYW5uZXIuCisKK0N1cnJlbnRseSBhbGlhc2VzIGFyZSB1c2VkIGZvciBibG9jayBwb2ludGVycywgZmlsZSBzaXplLCBmaWxlIHVzZWQKK2J5dGVzIGFuZCB0aGUgaGVpZ2h0IG9mIGFuIGlub2RlcyBpbmRpcmVjdCB0cmVlLgorCitTZWdtZW50IEFsaWFzZXMKKy0tLS0tLS0tLS0tLS0tLQorCitSZWxhdGVkIHRvIHJlZ3VsYXIgYWxpYXNlcywgdGhlc2UgYXJlIHVzZWQgdG8gaGFuZGxlIGJhZCBibG9ja3MuCitJbml0aWFsbHksIGJhZCBibG9ja3MgYXJlIGhhbmRsZWQgYnkgbW92aW5nIHRoZSBhZmZlY3RlZCBzZWdtZW50Citjb250ZW50IHRvIGEgc3BhcmUgc2VnbWVudCBhbmQgbm90aW5nIHRoaXMgbW92ZSBpbiB0aGUgam91cm5hbCB3aXRoIGEKK3NlZ21lbnQgYWxpYXMsIGEgc2ltcGxlICh0bywgZnJvbSkgdHVwZWwuICBHQyB3aWxsIGxhdGVyIGVtcHR5IHRoaXMKK3NlZ21lbnQgYW5kIHRoZSBhbGlhcyBjYW4gYmUgcmVtb3ZlZCBhZ2Fpbi4gIFRoaXMgaXMgdXNlZCBvbiBNVEQgb25seS4KKworVmltCistLS0KKworQnkgY2xldmVybHkgcHJlZGljdGluZyB0aGUgbGlmZSB0aW1lIG9mIGRhdGEsIGl0IGlzIHBvc3NpYmxlIHRvCitzZXBhcmF0ZSBsb25nLWxpdmluZyBkYXRhIGZyb20gc2hvcnQtbGl2aW5nIGRhdGEgYW5kIHRoZXJlYnkgcmVkdWNlCit0aGUgR0Mgb3ZlcmhlYWQgbGF0ZXIuICBFYWNoIHR5cGUgb2YgZGlzdGluYyBsaWZlIGV4cGVjdGVuY3kgKHZpbSkgY2FuCitoYXZlIGEgc2VwYXJhdGUgc2VnbWVudCBvcGVuIGZvciB3cml0aW5nLiAgRWFjaCAobGV2ZWwsIHZpbSkgdHVwZWwgY2FuCitiZSBvcGVuIGp1c3Qgb25jZS4gIElmIGFuIG9wZW4gc2VnbWVudCB3aXRoIHVua25vd24gdmltIGlzIGVuY291bnRlcmVkCithdCBtb3VudCB0aW1lLCBpdCBpcyBjbG9zZWQgYW5kIGlnbm9yZWQgaGVuY2Vmb3J0aC4KKworSW5kaXJlY3QgVHJlZQorLS0tLS0tLS0tLS0tLQorCitJbm9kZXMgaW4gTG9nRlMgYXJlIHNpbWlsYXIgdG8gRkZTLXN0eWxlIGZpbGVzeXN0ZW1zIHdpdGggZGlyZWN0IGFuZAoraW5kaXJlY3QgYmxvY2sgcG9pbnRlcnMuICBPbmUgZGlmZmVyZW5jZSBpcyB0aGF0IExvZ0ZTIHVzZXMgYSBzaW5nbGUKK2luZGlyZWN0IHBvaW50ZXIgdGhhdCBjYW4gYmUgZWl0aGVyIGEgMXgsIDJ4LCBldGMuIGluZGlyZWN0IHBvaW50ZXIuCitBIGhlaWdodCBmaWVsZCBpbiB0aGUgaW5vZGUgZGVmaW5lcyB0aGUgaGVpZ2h0IG9mIHRoZSBpbmRpcmVjdCB0cmVlCithbmQgdGhlcmVieSB0aGUgaW5kaXJlY3Rpb24gb2YgdGhlIHBvaW50ZXIuCisKK0Fub3RoZXIgZGlmZmVyZW5jZSBpcyB0aGUgYWRkcmVzc2luZyBvZiBpbmRpcmVjdCBibG9ja3MuICBJbiBMb2dGUywKK3RoZSBmaXJzdCAxNiBwb2ludGVycyBpbiB0aGUgZmlyc3QgaW5kaXJlY3QgYmxvY2sgYXJlIGxlZnQgZW1wdHksCitjb3JyZXNwb25kaW5nIHRvIHRoZSAxNiBkaXJlY3QgcG9pbnRlcnMgaW4gdGhlIGlub2RlLiAgSW4gZXh0MiAobWF5YmUKK290aGVycyBhcyB3ZWxsKSB0aGUgZmlyc3QgcG9pbnRlciBpbiB0aGUgZmlyc3QgaW5kaXJlY3QgYmxvY2sKK2NvcnJlc3BvbmRzIHRvIGxvZ2ljYWwgYmxvY2sgMTIsIHNraXBwaW5nIHRoZSAxMiBkaXJlY3QgcG9pbnRlcnMuCitTbyB3aGVyZSBleHQyIGlzIHVzaW5nIGFyaXRobWV0aWMgdG8gYmV0dGVyIHV0aWxpemUgc3BhY2UsIExvZ0ZTIGtlZXBzCithcml0aG1ldGljIHNpbXBsZSBhbmQgdXNlcyBjb21wcmVzc2lvbiB0byBzYXZlIHNwYWNlLgorCitDb21wcmVzc2lvbgorLS0tLS0tLS0tLS0KKworQm90aCBmaWxlIGRhdGEgYW5kIG1ldGFkYXRhIGNhbiBiZSBjb21wcmVzc2VkLiAgQ29tcHJlc3Npb24gZm9yIGZpbGUKK2RhdGEgY2FuIGJlIGVuYWJsZWQgd2l0aCBjaGF0dHIgK2MgYW5kIGRpc2FibGVkIHdpdGggY2hhdHRyIC1jLiAgRG9pbmcKK3NvIGhhcyBubyBlZmZlY3Qgb24gZXhpc3RpbmcgZGF0YSwgYnV0IG5ldyBkYXRhIHdpbGwgYmUgc3RvcmVkCithY2NvcmRpbmdseS4gIE5ldyBpbm9kZXMgd2lsbCBpbmhlcml0IHRoZSBjb21wcmVzc2lvbiBmbGFnIG9mIHRoZQorcGFyZW50IGRpcmVjdG9yeS4KKworTWV0YWRhdGEgaXMgYWx3YXlzIGNvbXByZXNzZWQuICBIb3dldmVyLCB0aGUgc3BhY2UgYWNjb3VudGluZyBpZ25vcmVzCit0aGlzIGFuZCBjaGFyZ2VzIGZvciB0aGUgdW5jb21wcmVzc2VkIHNpemUuICBGYWlsaW5nIHRvIGRvIHNvIGNvdWxkCityZXN1bHQgaW4gR0MgZmFpbHVyZXMgd2hlbiwgYWZ0ZXIgbW92aW5nIHNvbWUgZGF0YSwgaW5kaXJlY3QgYmxvY2tzCitjb21wcmVzcyB3b3JzZSB0aGFuIHByZXZpb3VzbHkuICBFdmVuIG9uIGEgMTAwJSBmdWxsIG1lZGl1bSwgR0MgbWF5Citub3QgY29uc3VtZSBhbnkgZXh0cmEgc3BhY2UsIHNvIHRoZSBjb21wcmVzc2lvbiBnYWlucyBhcmUgbG9zdCBzcGFjZQordG8gdGhlIHVzZXIuCisKK0hvd2V2ZXIsIHRoZXkgYXJlIG5vdCBsb3N0IHNwYWNlIHRvIHRoZSBmaWxlc3lzdGVtIGludGVybmFscy4gIEJ5CitjaGVhdGluZyB0aGUgdXNlciBmb3IgdGhvc2UgYnl0ZXMsIHRoZSBmaWxlc3lzdGVtIGdhaW5lZCBzb21lIHNsYWNrCitzcGFjZSBhbmQgR0Mgd2lsbCBydW4gbGVzcyBvZnRlbiBhbmQgZmFzdGVyLgorCitHYXJiYWdlIENvbGxlY3Rpb24gYW5kIFdlYXIgTGV2ZWxpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitHYXJiYWdlIGNvbGxlY3Rpb24gaXMgaW52b2tlZCB3aGVuZXZlciB0aGUgbnVtYmVyIG9mIGZyZWUgc2VnbWVudHMKK2ZhbGxzIGJlbG93IGEgdGhyZXNob2xkLiAgVGhlIGJlc3QgKGtub3duKSBjYW5kaWRhdGUgaXMgcGlja2VkIGJhc2VkCitvbiB0aGUgbGVhc3QgYW1vdW50IG9mIHZhbGlkIGRhdGEgY29udGFpbmVkIGluIHRoZSBzZWdtZW50LiAgQWxsCityZW1haW5pbmcgdmFsaWQgZGF0YSBpcyBjb3BpZWQgZWxzZXdoZXJlLCB0aGVyZWJ5IGludmFsaWRhdGluZyBpdC4KKworVGhlIEdDIGNvZGUgYWxzbyBjaGVja3MgZm9yIGFsaWFzZXMgYW5kIHdyaXRlcyB0aGVuIGJhY2sgaWYgdGhlaXIKK251bWJlciBnZXRzIHRvbyBsYXJnZS4KKworV2VhciBsZXZlbGluZyBpcyBkb25lIGJ5IG9jY2FzaW9uYWxseSBwaWNraW5nIGEgc3Vib3B0aW1hbCBzZWdtZW50IGZvcgorZ2FyYmFnZSBjb2xsZWN0aW9uLiAgSWYgYSBzdGFsZSBzZWdtZW50cyBlcmFzZSBjb3VudCBpcyBzaWduaWZpY2FudGx5Citsb3dlciB0aGFuIHRoZSBhY3RpdmUgc2VnbWVudHMnIGVyYXNlIGNvdW50cywgaXQgd2lsbCBiZSBwaWNrZWQuICBXZWFyCitsZXZlbGluZyBpcyByYXRlIGxpbWl0ZWQsIHNvIGl0IHdpbGwgbmV2ZXIgbW9ub3BvbGl6ZSB0aGUgZGV2aWNlIGZvcgorbW9yZSB0aGFuIG9uZSBzZWdtZW50IHdvcnRoIGF0IGEgdGltZS4KKworVmFsdWVzIGZvciAib2NjYXNpb25hbGx5IiwgInNpZ25pZmljYW50bHkgbG93ZXIiIGFyZSBjb21waWxlIHRpbWUKK2NvbnN0YW50cy4KKworSGFzaGVkIGRpcmVjdG9yaWVzCistLS0tLS0tLS0tLS0tLS0tLS0KKworVG8gc2F0aXNmeSBlZmZpY2llbnQgbG9va3VwKCksIGRpcmVjdG9yeSBlbnRyaWVzIGFyZSBoYXNoZWQgYW5kCitsb2NhdGVkIGJhc2VkIG9uIHRoZSBoYXNoLiAgSW4gb3JkZXIgdG8gYm90aCBzdXBwb3J0IGxhcmdlIGRpcmVjdG9yaWVzCithbmQgbm90IGJlIG92ZXJseSBpbmVmZmljaWVudCBmb3Igc21hbGwgZGlyZWN0b3JpZXMsIHNldmVyYWwgaGFzaAordGFibGVzIG9mIGluY3JlYXNpbmcgc2l6ZSBhcmUgdXNlZC4gIEZvciBlYWNoIHRhYmxlLCB0aGUgaGFzaCB2YWx1ZQorbW9kdWxvIHRoZSB0YWJsZSBzaXplIGdpdmVzIHRoZSB0YWJsZSBpbmRleC4KKworVGFibGVzIHNpemVzIGFyZSBjaG9zZW4gdG8gbGltaXQgdGhlIG51bWJlciBvZiBpbmRpcmVjdCBibG9ja3Mgd2l0aCBhCitmdWxseSBwb3B1bGF0ZWQgdGFibGUgdG8gMCwgMSwgMiBvciAzIHJlc3BlY3RpdmVseS4gIFNvIHRoZSBmaXJzdAordGFibGUgY29udGFpbnMgMTYgZW50cmllcywgdGhlIHNlY29uZCA1MTItMTYsIGV0Yy4KKworVGhlIGxhc3QgdGFibGUgaXMgc3BlY2lhbCBpbiBzZXZlcmFsIHdheXMuICBGaXJzdCBpdHMgc2l6ZSBkZXBlbmRzIG9uCit0aGUgZWZmZWN0aXZlIDMyYml0IGxpbWl0IG9uIHRlbGxkaXIvc2Vla2RpciBjb29raWVzLiAgU2luY2UgbG9nZnMKK3VzZXMgdGhlIHVwcGVyIGhhbGYgb2YgdGhlIGFkZHJlc3Mgc3BhY2UgZm9yIGluZGlyZWN0IGJsb2NrcywgdGhlIHNpemUKK2lzIGxpbWl0ZWQgdG8gMl4zMS4gIFNlY29uZGx5IHRoZSB0YWJsZSBjb250YWlucyBoYXNoIGJ1Y2tldHMgd2l0aCAxNgorZW50cmllcyBlYWNoLgorCitVc2luZyBzaW5nbGUtZW50cnkgYnVja2V0cyB3b3VsZCByZXN1bHQgaW4gYmlydGhkYXkgImF0dGFja3MiLiAgQXQKK2p1c3QgMl4xNiB1c2VkIGVudHJpZXMsIGhhc2ggY29sbGlzaW9ucyB3b3VsZCBiZSBsaWtlbHkgKFAgPj0gMC41KS4KK015IG1hdGggc2tpbGxzIGFyZSBpbnN1ZmZpY2llbnQgdG8gZG8gdGhlIGNvbWJpbmF0b3JpY3MgZm9yIHRoZSAxN3gKK2NvbGxpc2lvbnMgbmVjZXNzYXJ5IHRvIG92ZXJmbG93IGEgYnVja2V0LCBidXQgdGVzdGluZyBzaG93ZWQgdGhhdCBpbgorMTAsMDAwIHJ1bnMgdGhlIGxvd2VzdCBkaXJlY3RvcnkgZmlsbCBiZWZvcmUgYSBidWNrZXQgb3ZlcmZsb3cgd2FzCisxODgsMDU3LDEzMCBlbnRyaWVzIHdpdGggYW4gYXZlcmFnZSBvZiAzMTUsMTQ5LDkxNSBlbnRyaWVzLiAgU28gZm9yCitkaXJlY3Rvcnkgc2l6ZXMgb2YgdXAgdG8gYSBtaWxsaW9uLCBidWNrZXQgb3ZlcmZsb3dzIHNob3VsZCBiZQordmlydHVhbGx5IGltcG9zc2libGUgdW5kZXIgbm9ybWFsIGNpcmN1bXN0YW5jZXMuCisKK1dpdGggY2FyZWZ1bGx5IGNob3NlbiBmaWxlbmFtZXMsIGl0IGlzIG9idmlvdXNseSBwb3NzaWJsZSB0byBjYXVzZSBhbgorb3ZlcmZsb3cgd2l0aCBqdXN0IDIxIGVudHJpZXMgKDQgaGlnaGVyIHRhYmxlcyArIDE2IGVudHJpZXMgKyAxKS4gIFNvCit0aGVyZSBtYXkgYmUgYSBzZWN1cml0eSBjb25jZXJuIGlmIGEgbWFsaWNpb3VzIHVzZXIgaGFzIHdyaXRlIGFjY2VzcwordG8gYSBkaXJlY3RvcnkuCisKK09wZW4gRm9yIERpc2N1c3Npb24KKz09PT09PT09PT09PT09PT09PT0KKworRGV2aWNlIEFkZHJlc3MgU3BhY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgZGV2aWNlIGFkZHJlc3Mgc3BhY2UgaXMgdXNlZCBmb3IgY2FjaGluZy4gIEJvdGggYmxvY2sgZGV2aWNlcyBhbmQKK01URCBwcm92aWRlIGZ1bmN0aW9ucyB0byBlaXRoZXIgcmVhZCBhIHNpbmdsZSBwYWdlIG9yIHdyaXRlIGEgc2VnbWVudC4KK1BhcnRpYWwgc2VnbWVudHMgbWF5IGJlIHdyaXR0ZW4gZm9yIGRhdGEgaW50ZWdyaXR5LCBidXQgd2hlcmUgcG9zc2libGUKK2NvbXBsZXRlIHNlZ21lbnRzIGFyZSB3cml0dGVuIGZvciBwZXJmb3JtYW5jZSBvbiBzaW1wbGUgYmxvY2sgZGV2aWNlCitmbGFzaCBtZWRpYS4KKworTWV0YSBJbm9kZXMKKy0tLS0tLS0tLS0tCisKK0lub2RlcyBhcmUgc3RvcmVkIGluIHRoZSBpbm9kZSBmaWxlLCB3aGljaCBpcyBqdXN0IGEgcmVndWxhciBmaWxlIGZvcgorbW9zdCBwdXJwb3Nlcy4gIEF0IHVtb3VudCB0aW1lLCBob3dldmVyLCB0aGUgaW5vZGUgZmlsZSBuZWVkcyB0bworcmVtYWluIG9wZW4gdW50aWwgYWxsIGRpcnR5IGlub2RlcyBhcmUgd3JpdHRlbi4gIFNvCitnZW5lcmljX3NodXRkb3duX3N1cGVyKCkgbWF5IG5vdCBjbG9zZSB0aGlzIGlub2RlLCBidXQgc2hvdWxkbid0Citjb21wbGFpbiBhYm91dCByZW1haW5pbmcgaW5vZGVzIGR1ZSB0byB0aGUgaW5vZGUgZmlsZSBlaXRoZXIuICBTYW1lCitnb2VzIGZvciBtYXBwaW5nIGlub2RlIG9mIHRoZSBkZXZpY2UgYWRkcmVzcyBzcGFjZS4KKworQ3VycmVudGx5IGxvZ2ZzIHVzZXMgYSBoYWNrIHRoYXQgZXNzZW50aWFsbHkgY29waWVzIHBhcnQgb2YgZnMvaW5vZGUuYworY29kZSBvdmVyLiAgQSBnZW5lcmFsIHNvbHV0aW9uIHdvdWxkIGJlIHByZWZlcnJlZC4KKworSW5kaXJlY3QgYmxvY2sgbWFwcGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaXRoIGNvbXByZXNzaW9uLCB0aGUgYmxvY2sgZGV2aWNlIChvciBtYXBwaW5nIGlub2RlKSBjYW5ub3QgYmUgdXNlZAordG8gY2FjaGUgaW5kaXJlY3QgYmxvY2tzLiAgU29tZSBvdGhlciBwbGFjZSBpcyByZXF1aXJlZC4gIEN1cnJlbnRseQorbG9nZnMgdXNlcyB0aGUgdG9wIGhhbGYgb2YgZWFjaCBpbm9kZSdzIGFkZHJlc3Mgc3BhY2UuICBUaGUgbG93IDhUQgorKG9uIDMyYml0KSBhcmUgZmlsbGVkIHdpdGggZmlsZSBkYXRhLCB0aGUgaGlnaCA4VEIgYXJlIHVzZWQgZm9yCitpbmRpcmVjdCBibG9ja3MuCisKK09uZSBwcm9ibGVtIGlzIHRoYXQgMTZUQiBmaWxlcyBjcmVhdGVkIG9uIDY0Yml0IHN5c3RlbXMgYWN0dWFsbHkgaGF2ZQorZGF0YSBpbiB0aGUgdG9wIDhUQi4gIEJ1dCBmaWxlcyA+MTZUQiB3b3VsZCBjYXVzZSBwcm9ibGVtcyBhbnl3YXksIHNvCitvbmx5IHRoZSBsaW1pdCBoYXMgY2hhbmdlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbWFuZGF0b3J5LWxvY2tpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9tYW5kYXRvcnktbG9ja2luZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk3OWQxZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbWFuZGF0b3J5LWxvY2tpbmcudHh0CkBAIC0wLDAgKzEsMTcxIEBACisJTWFuZGF0b3J5IEZpbGUgTG9ja2luZyBGb3IgVGhlIExpbnV4IE9wZXJhdGluZyBTeXN0ZW0KKworCQlBbmR5IFdhbGtlciA8YW5keUBseXNha2VyLmt2YWVybmVyLm5vPgorCisJCQkgICAxNSBBcHJpbCAxOTk2CisJCSAgICAgKFVwZGF0ZWQgU2VwdGVtYmVyIDIwMDcpCisKKzAuIFdoeSB5b3Ugc2hvdWxkIGF2b2lkIG1hbmRhdG9yeSBsb2NraW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgTGludXggaW1wbGVtZW50YXRpb24gaXMgcHJleSB0byBhIG51bWJlciBvZiBkaWZmaWN1bHQtdG8tZml4IHJhY2UKK2NvbmRpdGlvbnMgd2hpY2ggaW4gcHJhY3RpY2UgbWFrZSBpdCBub3QgZGVwZW5kYWJsZToKKworCS0gVGhlIHdyaXRlIHN5c3RlbSBjYWxsIGNoZWNrcyBmb3IgYSBtYW5kYXRvcnkgbG9jayBvbmx5IG9uY2UKKwkgIGF0IGl0cyBzdGFydC4gIEl0IGlzIHRoZXJlZm9yZSBwb3NzaWJsZSBmb3IgYSBsb2NrIHJlcXVlc3QgdG8KKwkgIGJlIGdyYW50ZWQgYWZ0ZXIgdGhpcyBjaGVjayBidXQgYmVmb3JlIHRoZSBkYXRhIGlzIG1vZGlmaWVkLgorCSAgQSBwcm9jZXNzIG1heSB0aGVuIHNlZSBmaWxlIGRhdGEgY2hhbmdlIGV2ZW4gd2hpbGUgYSBtYW5kYXRvcnkKKwkgIGxvY2sgd2FzIGhlbGQuCisJLSBTaW1pbGFybHksIGFuIGV4Y2x1c2l2ZSBsb2NrIG1heSBiZSBncmFudGVkIG9uIGEgZmlsZSBhZnRlcgorCSAgdGhlIGtlcm5lbCBoYXMgZGVjaWRlZCB0byBwcm9jZWVkIHdpdGggYSByZWFkLCBidXQgYmVmb3JlIHRoZQorCSAgcmVhZCBoYXMgYWN0dWFsbHkgY29tcGxldGVkLCBhbmQgdGhlIHJlYWRpbmcgcHJvY2VzcyBtYXkgc2VlCisJICB0aGUgZmlsZSBkYXRhIGluIGEgc3RhdGUgd2hpY2ggc2hvdWxkIG5vdCBoYXZlIGJlZW4gdmlzaWJsZQorCSAgdG8gaXQuCisJLSBTaW1pbGFyIHJhY2VzIG1ha2UgdGhlIGNsYWltZWQgbXV0dWFsIGV4Y2x1c2lvbiBiZXR3ZWVuIGxvY2sKKwkgIGFuZCBtbWFwIHNpbWlsYXJseSB1bnJlbGlhYmxlLgorCisxLiBXaGF0IGlzICBtYW5kYXRvcnkgbG9ja2luZz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitNYW5kYXRvcnkgbG9ja2luZyBpcyBrZXJuZWwgZW5mb3JjZWQgZmlsZSBsb2NraW5nLCBhcyBvcHBvc2VkIHRvIHRoZSBtb3JlIHVzdWFsCitjb29wZXJhdGl2ZSBmaWxlIGxvY2tpbmcgdXNlZCB0byBndWFyYW50ZWUgc2VxdWVudGlhbCBhY2Nlc3MgdG8gZmlsZXMgYW1vbmcKK3Byb2Nlc3Nlcy4gRmlsZSBsb2NrcyBhcmUgYXBwbGllZCB1c2luZyB0aGUgZmxvY2soKSBhbmQgZmNudGwoKSBzeXN0ZW0gY2FsbHMKKyhhbmQgdGhlIGxvY2tmKCkgbGlicmFyeSByb3V0aW5lIHdoaWNoIGlzIGEgd3JhcHBlciBhcm91bmQgZmNudGwoKS4pIEl0IGlzCitub3JtYWxseSBhIHByb2Nlc3MnIHJlc3BvbnNpYmlsaXR5IHRvIGNoZWNrIGZvciBsb2NrcyBvbiBhIGZpbGUgaXQgd2lzaGVzIHRvCit1cGRhdGUsIGJlZm9yZSBhcHBseWluZyBpdHMgb3duIGxvY2ssIHVwZGF0aW5nIHRoZSBmaWxlIGFuZCB1bmxvY2tpbmcgaXQgYWdhaW4uCitUaGUgbW9zdCBjb21tb25seSB1c2VkIGV4YW1wbGUgb2YgdGhpcyAoYW5kIGluIHRoZSBjYXNlIG9mIHNlbmRtYWlsLCB0aGUgbW9zdAordHJvdWJsZXNvbWUpIGlzIGFjY2VzcyB0byBhIHVzZXIncyBtYWlsYm94LiBUaGUgbWFpbCB1c2VyIGFnZW50IGFuZCB0aGUgbWFpbAordHJhbnNmZXIgYWdlbnQgbXVzdCBndWFyZCBhZ2FpbnN0IHVwZGF0aW5nIHRoZSBtYWlsYm94IGF0IHRoZSBzYW1lIHRpbWUsIGFuZAorcHJldmVudCByZWFkaW5nIHRoZSBtYWlsYm94IHdoaWxlIGl0IGlzIGJlaW5nIHVwZGF0ZWQuCisKK0luIGEgcGVyZmVjdCB3b3JsZCBhbGwgcHJvY2Vzc2VzIHdvdWxkIHVzZSBhbmQgaG9ub3VyIGEgY29vcGVyYXRpdmUsIG9yCisiYWR2aXNvcnkiIGxvY2tpbmcgc2NoZW1lLiBIb3dldmVyLCB0aGUgd29ybGQgaXNuJ3QgcGVyZmVjdCwgYW5kIHRoZXJlJ3MKK2EgbG90IG9mIHBvb3JseSB3cml0dGVuIGNvZGUgb3V0IHRoZXJlLgorCitJbiB0cnlpbmcgdG8gYWRkcmVzcyB0aGlzIHByb2JsZW0sIHRoZSBkZXNpZ25lcnMgb2YgU3lzdGVtIFYgVU5JWCBjYW1lIHVwCit3aXRoIGEgIm1hbmRhdG9yeSIgbG9ja2luZyBzY2hlbWUsIHdoZXJlYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0ga2VybmVsIHdvdWxkCitibG9jayBhdHRlbXB0cyBieSBhIHByb2Nlc3MgdG8gd3JpdGUgdG8gYSBmaWxlIHRoYXQgYW5vdGhlciBwcm9jZXNzIGhvbGRzIGEKKyJyZWFkIiAtb3ItICJzaGFyZWQiIGxvY2sgb24sIGFuZCBibG9jayBhdHRlbXB0cyB0byBib3RoIHJlYWQgYW5kIHdyaXRlIHRvIGEgCitmaWxlIHRoYXQgYSBwcm9jZXNzIGhvbGRzIGEgIndyaXRlICIgLW9yLSAiZXhjbHVzaXZlIiBsb2NrIG9uLgorCitUaGUgU3lzdGVtIFYgbWFuZGF0b3J5IGxvY2tpbmcgc2NoZW1lIHdhcyBpbnRlbmRlZCB0byBoYXZlIGFzIGxpdHRsZSBpbXBhY3QgYXMKK3Bvc3NpYmxlIG9uIGV4aXN0aW5nIHVzZXIgY29kZS4gVGhlIHNjaGVtZSBpcyBiYXNlZCBvbiBtYXJraW5nIGluZGl2aWR1YWwgZmlsZXMKK2FzIGNhbmRpZGF0ZXMgZm9yIG1hbmRhdG9yeSBsb2NraW5nLCBhbmQgdXNpbmcgdGhlIGV4aXN0aW5nIGZjbnRsKCkvbG9ja2YoKQoraW50ZXJmYWNlIGZvciBhcHBseWluZyBsb2NrcyBqdXN0IGFzIGlmIHRoZXkgd2VyZSBub3JtYWwsIGFkdmlzb3J5IGxvY2tzLgorCitOb3RlIDE6IEluIHNheWluZyAiZmlsZSIgaW4gdGhlIHBhcmFncmFwaHMgYWJvdmUgSSBhbSBhY3R1YWxseSBub3QgdGVsbGluZwordGhlIHdob2xlIHRydXRoLiBTeXN0ZW0gViBsb2NraW5nIGlzIGJhc2VkIG9uIGZjbnRsKCkuIFRoZSBncmFudWxhcml0eSBvZgorZmNudGwoKSBpcyBzdWNoIHRoYXQgaXQgYWxsb3dzIHRoZSBsb2NraW5nIG9mIGJ5dGUgcmFuZ2VzIGluIGZpbGVzLCBpbiBhZGRpdGlvbgordG8gZW50aXJlIGZpbGVzLCBzbyB0aGUgbWFuZGF0b3J5IGxvY2tpbmcgcnVsZXMgYWxzbyBoYXZlIGJ5dGUgbGV2ZWwKK2dyYW51bGFyaXR5LgorCitOb3RlIDI6IFBPU0lYLjEgZG9lcyBub3Qgc3BlY2lmeSBhbnkgc2NoZW1lIGZvciBtYW5kYXRvcnkgbG9ja2luZywgZGVzcGl0ZQorYm9ycm93aW5nIHRoZSBmY250bCgpIGxvY2tpbmcgc2NoZW1lIGZyb20gU3lzdGVtIFYuIFRoZSBtYW5kYXRvcnkgbG9ja2luZworc2NoZW1lIGlzIGRlZmluZWQgYnkgdGhlIFN5c3RlbSBWIEludGVyZmFjZSBEZWZpbml0aW9uIChTVklEKSBWZXJzaW9uIDMuCisKKzIuIE1hcmtpbmcgYSBmaWxlIGZvciBtYW5kYXRvcnkgbG9ja2luZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgZmlsZSBpcyBtYXJrZWQgYXMgYSBjYW5kaWRhdGUgZm9yIG1hbmRhdG9yeSBsb2NraW5nIGJ5IHNldHRpbmcgdGhlIGdyb3VwLWlkCitiaXQgaW4gaXRzIGZpbGUgbW9kZSBidXQgcmVtb3ZpbmcgdGhlIGdyb3VwLWV4ZWN1dGUgYml0LiBUaGlzIGlzIGFuIG90aGVyd2lzZQorbWVhbmluZ2xlc3MgY29tYmluYXRpb24sIGFuZCB3YXMgY2hvc2VuIGJ5IHRoZSBTeXN0ZW0gViBpbXBsZW1lbnRvcnMgc28gYXMgbm90Cit0byBicmVhayBleGlzdGluZyB1c2VyIHByb2dyYW1zLgorCitOb3RlIHRoYXQgdGhlIGdyb3VwLWlkIGJpdCBpcyB1c3VhbGx5IGF1dG9tYXRpY2FsbHkgY2xlYXJlZCBieSB0aGUga2VybmVsIHdoZW4KK2Egc2V0Z2lkIGZpbGUgaXMgd3JpdHRlbiB0by4gVGhpcyBpcyBhIHNlY3VyaXR5IG1lYXN1cmUuIFRoZSBrZXJuZWwgaGFzIGJlZW4KK21vZGlmaWVkIHRvIHJlY29nbml6ZSB0aGUgc3BlY2lhbCBjYXNlIG9mIGEgbWFuZGF0b3J5IGxvY2sgY2FuZGlkYXRlIGFuZCB0bworcmVmcmFpbiBmcm9tIGNsZWFyaW5nIHRoaXMgYml0LiBTaW1pbGFybHkgdGhlIGtlcm5lbCBoYXMgYmVlbiBtb2RpZmllZCBub3QKK3RvIHJ1biBtYW5kYXRvcnkgbG9jayBjYW5kaWRhdGVzIHdpdGggc2V0Z2lkIHByaXZpbGVnZXMuCisKKzMuIEF2YWlsYWJsZSBpbXBsZW1lbnRhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSSBoYXZlIGNvbnNpZGVyZWQgdGhlIGltcGxlbWVudGF0aW9ucyBvZiBtYW5kYXRvcnkgbG9ja2luZyBhdmFpbGFibGUgd2l0aAorU3VuT1MgNC4xLngsIFNvbGFyaXMgMi54IGFuZCBIUC1VWCA5LnguCisKK0dlbmVyYWxseSBJIGhhdmUgdHJpZWQgdG8gbWFrZSB0aGUgbW9zdCBzZW5zZSBvdXQgb2YgdGhlIGJlaGF2aW91ciBleGhpYml0ZWQKK2J5IHRoZXNlIHRocmVlIHJlZmVyZW5jZSBzeXN0ZW1zLiBUaGVyZSBhcmUgbWFueSBhbm9tYWxpZXMuCisKK0FsbCB0aGUgcmVmZXJlbmNlIHN5c3RlbXMgcmVqZWN0IGFsbCBjYWxscyB0byBvcGVuKCkgZm9yIGEgZmlsZSBvbiB3aGljaAorYW5vdGhlciBwcm9jZXNzIGhhcyBvdXRzdGFuZGluZyBtYW5kYXRvcnkgbG9ja3MuIFRoaXMgaXMgaW4gZGlyZWN0Citjb250cmF2ZW50aW9uIG9mIFNWSUQgMywgd2hpY2ggc3RhdGVzIHRoYXQgb25seSBjYWxscyB0byBvcGVuKCkgd2l0aCB0aGUKK09fVFJVTkMgZmxhZyBzZXQgc2hvdWxkIGJlIHJlamVjdGVkLiBUaGUgTGludXggaW1wbGVtZW50YXRpb24gZm9sbG93cyB0aGUgU1ZJRAorZGVmaW5pdGlvbiwgd2hpY2ggaXMgdGhlICJSaWdodCBUaGluZyIsIHNpbmNlIG9ubHkgY2FsbHMgd2l0aCBPX1RSVU5DIGNhbgorbW9kaWZ5IHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZS4KKworSFAtVVggZXZlbiBkaXNhbGxvd3Mgb3BlbigpIHdpdGggT19UUlVOQyBmb3IgYSBmaWxlIHdpdGggYWR2aXNvcnkgbG9ja3MsIG5vdAoranVzdCBtYW5kYXRvcnkgbG9ja3MuIFRoYXQgd291bGQgYXBwZWFyIHRvIGNvbnRyYXZlbmUgUE9TSVguMS4KKworbW1hcCgpIGlzIGFub3RoZXIgaW50ZXJlc3RpbmcgY2FzZS4gQWxsIHRoZSBvcGVyYXRpbmcgc3lzdGVtcyBtZW50aW9uZWQKK3ByZXZlbnQgbWFuZGF0b3J5IGxvY2tzIGZyb20gYmVpbmcgYXBwbGllZCB0byBhbiBtbWFwKCknZWQgZmlsZSwgYnV0ICBIUC1VWAorYWxzbyBkaXNhbGxvd3MgYWR2aXNvcnkgbG9ja3MgZm9yIHN1Y2ggYSBmaWxlLiBTVklEIGFjdHVhbGx5IHNwZWNpZmllcyB0aGUKK3BhcmFub2lkIEhQLVVYIGJlaGF2aW91ci4KKworSW4gbXkgb3BpbmlvbiBvbmx5IE1BUF9TSEFSRUQgbWFwcGluZ3Mgc2hvdWxkIGJlIGltbXVuZSBmcm9tIGxvY2tpbmcsIGFuZCB0aGVuCitvbmx5IGZyb20gbWFuZGF0b3J5IGxvY2tzIC0gdGhhdCBpcyB3aGF0IGlzIGN1cnJlbnRseSBpbXBsZW1lbnRlZC4KKworU3VuT1MgaXMgc28gaG9wZWxlc3MgdGhhdCBpdCBkb2Vzbid0IGV2ZW4gaG9ub3VyIHRoZSBPX05PTkJMT0NLIGZsYWcgZm9yCittYW5kYXRvcnkgbG9ja3MsIHNvIHJlYWRzIGFuZCB3cml0ZXMgdG8gbG9ja2VkIGZpbGVzIGFsd2F5cyBibG9jayB3aGVuIHRoZXkKK3Nob3VsZCByZXR1cm4gRUFHQUlOLgorCitJJ20gYWZyYWlkIHRoYXQgdGhpcyBpcyBzdWNoIGFuIGVzb3RlcmljIGFyZWEgdGhhdCB0aGUgc2VtYW50aWNzIGRlc2NyaWJlZAorYmVsb3cgYXJlIGp1c3QgYXMgdmFsaWQgYXMgYW55IG90aGVycywgc28gbG9uZyBhcyB0aGUgbWFpbiBwb2ludHMgc2VlbSB0bworYWdyZWUuIAorCis0LiBTZW1hbnRpY3MKKy0tLS0tLS0tLS0tLQorCisxLiBNYW5kYXRvcnkgbG9ja3MgY2FuIG9ubHkgYmUgYXBwbGllZCB2aWEgdGhlIGZjbnRsKCkvbG9ja2YoKSBsb2NraW5nCisgICBpbnRlcmZhY2UgLSBpbiBvdGhlciB3b3JkcyB0aGUgU3lzdGVtIFYvUE9TSVggaW50ZXJmYWNlLiBCU0Qgc3R5bGUKKyAgIGxvY2tzIHVzaW5nIGZsb2NrKCkgbmV2ZXIgcmVzdWx0IGluIGEgbWFuZGF0b3J5IGxvY2suCisKKzIuIElmIGEgcHJvY2VzcyBoYXMgbG9ja2VkIGEgcmVnaW9uIG9mIGEgZmlsZSB3aXRoIGEgbWFuZGF0b3J5IHJlYWQgbG9jaywgdGhlbgorICAgb3RoZXIgcHJvY2Vzc2VzIGFyZSBwZXJtaXR0ZWQgdG8gcmVhZCBmcm9tIHRoYXQgcmVnaW9uLiBJZiBhbnkgb2YgdGhlc2UKKyAgIHByb2Nlc3NlcyBhdHRlbXB0cyB0byB3cml0ZSB0byB0aGUgcmVnaW9uIGl0IHdpbGwgYmxvY2sgdW50aWwgdGhlIGxvY2sgaXMKKyAgIHJlbGVhc2VkLCB1bmxlc3MgdGhlIHByb2Nlc3MgaGFzIG9wZW5lZCB0aGUgZmlsZSB3aXRoIHRoZSBPX05PTkJMT0NLCisgICBmbGFnIGluIHdoaWNoIGNhc2UgdGhlIHN5c3RlbSBjYWxsIHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5IHdpdGggdGhlIGVycm9yCisgICBzdGF0dXMgRUFHQUlOLgorCiszLiBJZiBhIHByb2Nlc3MgaGFzIGxvY2tlZCBhIHJlZ2lvbiBvZiBhIGZpbGUgd2l0aCBhIG1hbmRhdG9yeSB3cml0ZSBsb2NrLCBhbGwKKyAgIGF0dGVtcHRzIHRvIHJlYWQgb3Igd3JpdGUgdG8gdGhhdCByZWdpb24gYmxvY2sgdW50aWwgdGhlIGxvY2sgaXMgcmVsZWFzZWQsCisgICB1bmxlc3MgYSBwcm9jZXNzIGhhcyBvcGVuZWQgdGhlIGZpbGUgd2l0aCB0aGUgT19OT05CTE9DSyBmbGFnIGluIHdoaWNoIGNhc2UKKyAgIHRoZSBzeXN0ZW0gY2FsbCB3aWxsIHJldHVybiBpbW1lZGlhdGVseSB3aXRoIHRoZSBlcnJvciBzdGF0dXMgRUFHQUlOLgorCis0LiBDYWxscyB0byBvcGVuKCkgd2l0aCBPX1RSVU5DLCBvciB0byBjcmVhdCgpLCBvbiBhIGV4aXN0aW5nIGZpbGUgdGhhdCBoYXMKKyAgIGFueSBtYW5kYXRvcnkgbG9ja3Mgb3duZWQgYnkgb3RoZXIgcHJvY2Vzc2VzIHdpbGwgYmUgcmVqZWN0ZWQgd2l0aCB0aGUKKyAgIGVycm9yIHN0YXR1cyBFQUdBSU4uCisKKzUuIEF0dGVtcHRzIHRvIGFwcGx5IGEgbWFuZGF0b3J5IGxvY2sgdG8gYSBmaWxlIHRoYXQgaXMgbWVtb3J5IG1hcHBlZCBhbmQKKyAgIHNoYXJlZCAodmlhIG1tYXAoKSB3aXRoIE1BUF9TSEFSRUQpIHdpbGwgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgZXJyb3Igc3RhdHVzCisgICBFQUdBSU4uCisKKzYuIEF0dGVtcHRzIHRvIGNyZWF0ZSBhIHNoYXJlZCBtZW1vcnkgbWFwIG9mIGEgZmlsZSAodmlhIG1tYXAoKSB3aXRoIE1BUF9TSEFSRUQpCisgICB0aGF0IGhhcyBhbnkgbWFuZGF0b3J5IGxvY2tzIGluIGVmZmVjdCB3aWxsIGJlIHJlamVjdGVkIHdpdGggdGhlIGVycm9yIHN0YXR1cworICAgRUFHQUlOLgorCis1LiBXaGljaCBzeXN0ZW0gY2FsbHMgYXJlIGFmZmVjdGVkPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhvc2Ugd2hpY2ggbW9kaWZ5IGEgZmlsZSdzIGNvbnRlbnRzLCBub3QganVzdCB0aGUgaW5vZGUuIFRoYXQgZ2l2ZXMgcmVhZCgpLAord3JpdGUoKSwgcmVhZHYoKSwgd3JpdGV2KCksIG9wZW4oKSwgY3JlYXQoKSwgbW1hcCgpLCB0cnVuY2F0ZSgpIGFuZAorZnRydW5jYXRlKCkuIHRydW5jYXRlKCkgYW5kIGZ0cnVuY2F0ZSgpIGFyZSBjb25zaWRlcmVkIHRvIGJlICJ3cml0ZSIgYWN0aW9ucworZm9yIHRoZSBwdXJwb3NlcyBvZiBtYW5kYXRvcnkgbG9ja2luZy4KKworVGhlIGFmZmVjdGVkIHJlZ2lvbiBpcyB1c3VhbGx5IGRlZmluZWQgYXMgc3RyZXRjaGluZyBmcm9tIHRoZSBjdXJyZW50IHBvc2l0aW9uCitmb3IgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyByZWFkIG9yIHdyaXR0ZW4uIEZvciB0aGUgdHJ1bmNhdGUgY2FsbHMgaXQgaXMKK2RlZmluZWQgYXMgdGhlIGJ5dGVzIG9mIGEgZmlsZSByZW1vdmVkIG9yIGFkZGVkICh3ZSBtdXN0IGFsc28gY29uc2lkZXIgYnl0ZXMKK2FkZGVkLCBhcyBhIGxvY2sgY2FuIHNwZWNpZnkganVzdCAidGhlIHdob2xlIGZpbGUiLCByYXRoZXIgdGhhbiBhIHNwZWNpZmljCityYW5nZSBvZiBieXRlcy4pCisKK05vdGUgMzogSSBtYXkgaGF2ZSBvdmVybG9va2VkIHNvbWUgc3lzdGVtIGNhbGxzIHRoYXQgbmVlZCBtYW5kYXRvcnkgbG9jaworY2hlY2tpbmcgaW4gbXkgZWFnZXJuZXNzIHRvIGdldCB0aGlzIGNvZGUgb3V0IHRoZSBkb29yLiBQbGVhc2UgbGV0IG1lIGtub3csIG9yCitiZXR0ZXIgc3RpbGwgZml4IHRoZSBzeXN0ZW0gY2FsbHMgeW91cnNlbGYgYW5kIHN1Ym1pdCBhIHBhdGNoIHRvIG1lIG9yIExpbnVzLgorCis2LiBXYXJuaW5nIQorLS0tLS0tLS0tLS0KKworTm90IGV2ZW4gcm9vdCBjYW4gb3ZlcnJpZGUgYSBtYW5kYXRvcnkgbG9jaywgc28gcnVuYXdheSBwcm9jZXNzZXMgY2FuIHdyZWFrCitoYXZvYyBpZiB0aGV5IGxvY2sgY3J1Y2lhbCBmaWxlcy4gVGhlIHdheSBhcm91bmQgaXQgaXMgdG8gY2hhbmdlIHRoZSBmaWxlCitwZXJtaXNzaW9ucyAocmVtb3ZlIHRoZSBzZXRnaWQgYml0KSBiZWZvcmUgdHJ5aW5nIHRvIHJlYWQgb3Igd3JpdGUgdG8gaXQuCitPZiBjb3Vyc2UsIHRoYXQgbWlnaHQgYmUgYSBiaXQgdHJpY2t5IGlmIHRoZSBzeXN0ZW0gaXMgaHVuZyA6LSgKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uY3Bmcy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL25jcGZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWYxNjRmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uY3Bmcy50eHQKQEAgLTAsMCArMSwxMiBAQAorVGhlIG5jcGZzIGZpbGVzeXN0ZW0gdW5kZXJzdGFuZHMgdGhlIE5DUCBwcm90b2NvbCwgZGVzaWduZWQgYnkgdGhlCitOb3ZlbGwgQ29ycG9yYXRpb24gZm9yIHRoZWlyIE5ldFdhcmUodG0pIHByb2R1Y3QuICBOQ1AgaXMgZnVuY3Rpb25hbGx5CitzaW1pbGFyIHRvIHRoZSBORlMgdXNlZCBpbiB0aGUgVENQL0lQIGNvbW11bml0eS4KK1RvIG1vdW50IGEgTmV0V2FyZSBmaWxlc3lzdGVtLCB5b3UgbmVlZCBhIHNwZWNpYWwgbW91bnQgcHJvZ3JhbSwgd2hpY2gKK2NhbiBiZSBmb3VuZCBpbiB0aGUgbmNwZnMgcGFja2FnZS4gIFRoZSBob21lIHNpdGUgZm9yIG5jcGZzIGlzCitmdHAuZ3dkZy5kZS9wdWIvbGludXgvbWlzYy9uY3BmcywgYnV0IHN1bnNpdGUgYW5kIGl0cyBtYW55IG1pcnJvcnMKK3dpbGwgaGF2ZSBpdCBhcyB3ZWxsLgorCitSZWxhdGVkIHByb2R1Y3RzIGFyZSBsaW53YXJlIGFuZCBtYXJzX253ZSwgd2hpY2ggd2lsbCBnaXZlIExpbnV4IHBhcnRpYWwKK05ldFdhcmUgc2VydmVyIGZ1bmN0aW9uYWxpdHkuCisKK21hcnNfbndlIGNhbiBiZSBmb3VuZCBvbiBmdHAuZ3dkZy5kZS9wdWIvbGludXgvbWlzYy9uY3Bmcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzLzAwLUlOREVYIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uZnMvMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNmM2I1OQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzLzAwLUlOREVYCkBAIC0wLDAgKzEsMjYgQEAKKzAwLUlOREVYCisJLSB0aGlzIGZpbGUgKG5mcy1yZWxhdGVkIGRvY3VtZW50YXRpb24pLgorRXhwb3J0aW5nCisJLSBleHBsYW5hdGlvbiBvZiBob3cgdG8gbWFrZSBmaWxlc3lzdGVtcyBleHBvcnRhYmxlLgorZmF1bHRfaW5qZWN0aW9uLnR4dAorCS0gaW5mb3JtYXRpb24gZm9yIHVzaW5nIGZhdWx0IGluamVjdGlvbiBvbiB0aGUgc2VydmVyCitrbmZzZC1zdGF0cy50eHQKKwktIHN0YXRpc3RpY3Mgd2hpY2ggdGhlIE5GUyBzZXJ2ZXIgbWFrZXMgYXZhaWxhYmxlIHRvIHVzZXIgc3BhY2UuCituZnMudHh0CisJLSBuZnMgY2xpZW50LCBhbmQgRE5TIHJlc29sdXRpb24gZm9yIGZzX2xvY2F0aW9ucy4KK25mczQxLXNlcnZlci50eHQKKwktIGluZm8gb24gdGhlIExpbnV4IHNlcnZlciBpbXBsZW1lbnRhdGlvbiBvZiBORlN2NCBtaW5vciB2ZXJzaW9uIDEuCituZnMtcmRtYS50eHQKKwktIGhvdyB0byBpbnN0YWxsIGFuZCBzZXR1cCB0aGUgTGludXggTkZTL1JETUEgY2xpZW50IGFuZCBzZXJ2ZXIgc29mdHdhcmUKK25mc2QtYWRtaW4taW50ZXJmYWNlcy50eHQKKwktIEFkbWluaXN0cmF0aXZlIGludGVyZmFjZXMgZm9yIG5mc2QuCituZnNyb290LnR4dAorCS0gc2hvcnQgZ3VpZGUgb24gc2V0dGluZyB1cCBhIGRpc2tsZXNzIGJveCB3aXRoIE5GUyByb290IGZpbGVzeXN0ZW0uCitwbmZzLnR4dAorCS0gc2hvcnQgZXhwbGFuYXRpb24gb2Ygc29tZSBvZiB0aGUgaW50ZXJuYWxzIG9mIHRoZSBwbmZzIGNsaWVudCBjb2RlCitycGMtY2FjaGUudHh0CisJLSBpbnRyb2R1Y3Rpb24gdG8gdGhlIGNhY2hpbmcgbWVjaGFuaXNtcyBpbiB0aGUgc3VucnBjIGxheWVyLgoraWRtYXBwZXIudHh0CisJLSBpbmZvcm1hdGlvbiBmb3IgY29uZmlndXJpbmcgcmVxdWVzdC1rZXlzIHRvIGJlIHVzZWQgYnkgaWRtYXBwZXIKK3JwYy1zZXJ2ZXItZ3NzLnR4dAorCS0gSW5mb3JtYXRpb24gb24gR1NTIGF1dGhlbnRpY2F0aW9uIHN1cHBvcnQgaW4gdGhlIE5GUyBTZXJ2ZXIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzL0V4cG9ydGluZyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzL0V4cG9ydGluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjBhNGJlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uZnMvRXhwb3J0aW5nCkBAIC0wLDAgKzEsMTQ5IEBACisKK01ha2luZyBGaWxlc3lzdGVtcyBFeHBvcnRhYmxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitPdmVydmlldworLS0tLS0tLS0KKworQWxsIGZpbGVzeXN0ZW0gb3BlcmF0aW9ucyByZXF1aXJlIGEgZGVudHJ5IChvciB0d28pIGFzIGEgc3RhcnRpbmcKK3BvaW50LiAgTG9jYWwgYXBwbGljYXRpb25zIGhhdmUgYSByZWZlcmVuY2UtY291bnRlZCBob2xkIG9uIHN1aXRhYmxlCitkZW50cmllcyB2aWEgb3BlbiBmaWxlIGRlc2NyaXB0b3JzIG9yIGN3ZC9yb290LiAgSG93ZXZlciByZW1vdGUKK2FwcGxpY2F0aW9ucyB0aGF0IGFjY2VzcyBhIGZpbGVzeXN0ZW0gdmlhIGEgcmVtb3RlIGZpbGVzeXN0ZW0gcHJvdG9jb2wKK3N1Y2ggYXMgTkZTIG1heSBub3QgYmUgYWJsZSB0byBob2xkIHN1Y2ggYSByZWZlcmVuY2UsIGFuZCBzbyBuZWVkIGEKK2RpZmZlcmVudCB3YXkgdG8gcmVmZXIgdG8gYSBwYXJ0aWN1bGFyIGRlbnRyeS4gIEFzIHRoZSBhbHRlcm5hdGl2ZQorZm9ybSBvZiByZWZlcmVuY2UgbmVlZHMgdG8gYmUgc3RhYmxlIGFjcm9zcyByZW5hbWVzLCB0cnVuY2F0ZXMsIGFuZAorc2VydmVyLXJlYm9vdCAoYW1vbmcgb3RoZXIgdGhpbmdzLCB0aG91Z2ggdGhlc2UgdGVuZCB0byBiZSB0aGUgbW9zdAorcHJvYmxlbWF0aWMpLCB0aGVyZSBpcyBubyBzaW1wbGUgYW5zd2VyIGxpa2UgJ2ZpbGVuYW1lJy4KKworVGhlIG1lY2hhbmlzbSBkaXNjdXNzZWQgaGVyZSBhbGxvd3MgZWFjaCBmaWxlc3lzdGVtIGltcGxlbWVudGF0aW9uIHRvCitzcGVjaWZ5IGhvdyB0byBnZW5lcmF0ZSBhbiBvcGFxdWUgKG91dHNpZGUgb2YgdGhlIGZpbGVzeXN0ZW0pIGJ5dGUKK3N0cmluZyBmb3IgYW55IGRlbnRyeSwgYW5kIGhvdyB0byBmaW5kIGFuIGFwcHJvcHJpYXRlIGRlbnRyeSBmb3IgYW55CitnaXZlbiBvcGFxdWUgYnl0ZSBzdHJpbmcuCitUaGlzIGJ5dGUgc3RyaW5nIHdpbGwgYmUgY2FsbGVkIGEgImZpbGVoYW5kbGUgZnJhZ21lbnQiIGFzIGl0Citjb3JyZXNwb25kcyB0byBwYXJ0IG9mIGFuIE5GUyBmaWxlaGFuZGxlLgorCitBIGZpbGVzeXN0ZW0gd2hpY2ggc3VwcG9ydHMgdGhlIG1hcHBpbmcgYmV0d2VlbiBmaWxlaGFuZGxlIGZyYWdtZW50cworYW5kIGRlbnRyaWVzIHdpbGwgYmUgdGVybWVkICJleHBvcnRhYmxlIi4KKworCisKK0RjYWNoZSBJc3N1ZXMKKy0tLS0tLS0tLS0tLS0KKworVGhlIGRjYWNoZSBub3JtYWxseSBjb250YWlucyBhIHByb3BlciBwcmVmaXggb2YgYW55IGdpdmVuIGZpbGVzeXN0ZW0KK3RyZWUuICBUaGlzIG1lYW5zIHRoYXQgaWYgYW55IGZpbGVzeXN0ZW0gb2JqZWN0IGlzIGluIHRoZSBkY2FjaGUsIHRoZW4KK2FsbCBvZiB0aGUgYW5jZXN0b3JzIG9mIHRoYXQgZmlsZXN5c3RlbSBvYmplY3QgYXJlIGFsc28gaW4gdGhlIGRjYWNoZS4KK0FzIG5vcm1hbCBhY2Nlc3MgaXMgYnkgZmlsZW5hbWUgdGhpcyBwcmVmaXggaXMgY3JlYXRlZCBuYXR1cmFsbHkgYW5kCittYWludGFpbmVkIGVhc2lseSAoYnkgZWFjaCBvYmplY3QgbWFpbnRhaW5pbmcgYSByZWZlcmVuY2UgY291bnQgb24KK2l0cyBwYXJlbnQpLgorCitIb3dldmVyIHdoZW4gb2JqZWN0cyBhcmUgaW5jbHVkZWQgaW50byB0aGUgZGNhY2hlIGJ5IGludGVycHJldGluZyBhCitmaWxlaGFuZGxlIGZyYWdtZW50LCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgY3JlYXRpb24gb2YgYSBwYXRoIHByZWZpeAorZm9yIHRoZSBvYmplY3QuICBUaGlzIGxlYWRzIHRvIHR3byByZWxhdGVkIGJ1dCBkaXN0aW5jdCBmZWF0dXJlcyBvZgordGhlIGRjYWNoZSB0aGF0IGFyZSBub3QgbmVlZGVkIGZvciBub3JtYWwgZmlsZXN5c3RlbSBhY2Nlc3MuCisKKzEvIFRoZSBkY2FjaGUgbXVzdCBzb21ldGltZXMgY29udGFpbiBvYmplY3RzIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZQorICAgcHJvcGVyIHByZWZpeC4gaS5lIHRoYXQgYXJlIG5vdCBjb25uZWN0ZWQgdG8gdGhlIHJvb3QuCisyLyBUaGUgZGNhY2hlIG11c3QgYmUgcHJlcGFyZWQgZm9yIGEgbmV3bHkgZm91bmQgKHZpYSAtPmxvb2t1cCkgZGlyZWN0b3J5CisgICB0byBhbHJlYWR5IGhhdmUgYSAobm9uLWNvbm5lY3RlZCkgZGVudHJ5LCBhbmQgbXVzdCBiZSBhYmxlIHRvIG1vdmUKKyAgIHRoYXQgZGVudHJ5IGludG8gcGxhY2UgKGJhc2VkIG9uIHRoZSBwYXJlbnQgYW5kIG5hbWUgaW4gdGhlCisgICAtPmxvb2t1cCkuICAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgbmVlZGVkIGZvciBkaXJlY3RvcmllcyBhcworICAgaXQgaXMgYSBkY2FjaGUgaW52YXJpYW50IHRoYXQgZGlyZWN0b3JpZXMgb25seSBoYXZlIG9uZSBkZW50cnkuCisKK1RvIGltcGxlbWVudCB0aGVzZSBmZWF0dXJlcywgdGhlIGRjYWNoZSBoYXM6CisKK2EvIEEgZGVudHJ5IGZsYWcgRENBQ0hFX0RJU0NPTk5FQ1RFRCB3aGljaCBpcyBzZXQgb24KKyAgIGFueSBkZW50cnkgdGhhdCBtaWdodCBub3QgYmUgcGFydCBvZiB0aGUgcHJvcGVyIHByZWZpeC4KKyAgIFRoaXMgaXMgc2V0IHdoZW4gYW5vbnltb3VzIGRlbnRyaWVzIGFyZSBjcmVhdGVkLCBhbmQgY2xlYXJlZCB3aGVuIGEKKyAgIGRlbnRyeSBpcyBub3RpY2VkIHRvIGJlIGEgY2hpbGQgb2YgYSBkZW50cnkgd2hpY2ggaXMgaW4gdGhlIHByb3BlcgorICAgcHJlZml4LiAKKworYi8gQSBwZXItc3VwZXJibG9jayBsaXN0ICJzX2Fub24iIG9mIGRlbnRyaWVzIHdoaWNoIGFyZSB0aGUgcm9vdHMgb2YKKyAgIHN1YnRyZWVzIHRoYXQgYXJlIG5vdCBpbiB0aGUgcHJvcGVyIHByZWZpeC4gIFRoZXNlIGRlbnRyaWVzLCBhcworICAgd2VsbCBhcyB0aGUgcHJvcGVyIHByZWZpeCwgbmVlZCB0byBiZSByZWxlYXNlZCBhdCB1bm1vdW50IHRpbWUuICBBcworICAgdGhlc2UgZGVudHJpZXMgd2lsbCBub3QgYmUgaGFzaGVkLCB0aGV5IGFyZSBsaW5rZWQgdG9nZXRoZXIgb24gdGhlCisgICBkX2hhc2ggbGlzdF9oZWFkLgorCitjLyBIZWxwZXIgcm91dGluZXMgdG8gYWxsb2NhdGUgYW5vbnltb3VzIGRlbnRyaWVzLCBhbmQgdG8gaGVscCBhdHRhY2gKKyAgIGxvb3NlIGRpcmVjdG9yeSBkZW50cmllcyBhdCBsb29rdXAgdGltZS4gVGhleSBhcmU6CisgICAgZF9vYnRhaW5fYWxpYXMoaW5vZGUpIHdpbGwgcmV0dXJuIGEgZGVudHJ5IGZvciB0aGUgZ2l2ZW4gaW5vZGUuCisgICAgICBJZiB0aGUgaW5vZGUgYWxyZWFkeSBoYXMgYSBkZW50cnksIG9uZSBvZiB0aG9zZSBpcyByZXR1cm5lZC4KKyAgICAgIElmIGl0IGRvZXNuJ3QsIGEgbmV3IGFub255bW91cyAoSVNfUk9PVCBhbmQKKyAgICAgICAgRENBQ0hFX0RJU0NPTk5FQ1RFRCkgZGVudHJ5IGlzIGFsbG9jYXRlZCBhbmQgYXR0YWNoZWQuCisgICAgICBJbiB0aGUgY2FzZSBvZiBhIGRpcmVjdG9yeSwgY2FyZSBpcyB0YWtlbiB0aGF0IG9ubHkgb25lIGRlbnRyeQorICAgICAgY2FuIGV2ZXIgYmUgYXR0YWNoZWQuCisgICAgZF9zcGxpY2VfYWxpYXMoaW5vZGUsIGRlbnRyeSkgd2lsbCBpbnRyb2R1Y2UgYSBuZXcgZGVudHJ5IGludG8gdGhlIHRyZWU7CisgICAgICBlaXRoZXIgdGhlIHBhc3NlZC1pbiBkZW50cnkgb3IgYSBwcmVleGlzdGluZyBhbGlhcyBmb3IgdGhlIGdpdmVuIGlub2RlCisgICAgICAoc3VjaCBhcyBhbiBhbm9ueW1vdXMgb25lIGNyZWF0ZWQgYnkgZF9vYnRhaW5fYWxpYXMpLCBpZiBhcHByb3ByaWF0ZS4KKyAgICAgIEl0IHJldHVybnMgTlVMTCB3aGVuIHRoZSBwYXNzZWQtaW4gZGVudHJ5IGlzIHVzZWQsIGZvbGxvd2luZyB0aGUgY2FsbGluZworICAgICAgY29udmVudGlvbiBvZiAtPmxvb2t1cC4KKworIAorRmlsZXN5c3RlbSBJc3N1ZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK0ZvciBhIGZpbGVzeXN0ZW0gdG8gYmUgZXhwb3J0YWJsZSBpdCBtdXN0OgorIAorICAgMS8gcHJvdmlkZSB0aGUgZmlsZWhhbmRsZSBmcmFnbWVudCByb3V0aW5lcyBkZXNjcmliZWQgYmVsb3cuCisgICAyLyBtYWtlIHN1cmUgdGhhdCBkX3NwbGljZV9hbGlhcyBpcyB1c2VkIHJhdGhlciB0aGFuIGRfYWRkCisgICAgICB3aGVuIC0+bG9va3VwIGZpbmRzIGFuIGlub2RlIGZvciBhIGdpdmVuIHBhcmVudCBhbmQgbmFtZS4KKworICAgICAgSWYgaW5vZGUgaXMgTlVMTCwgZF9zcGxpY2VfYWxpYXMoaW5vZGUsIGRlbnRyeSkgaXMgZXF1aXZhbGVudCB0bworCisJCWRfYWRkKGRlbnRyeSwgaW5vZGUpLCBOVUxMCisKKyAgICAgIFNpbWlsYXJseSwgZF9zcGxpY2VfYWxpYXMoRVJSX1BUUihlcnIpLCBkZW50cnkpID0gRVJSX1BUUihlcnIpCisKKyAgICAgIFR5cGljYWxseSB0aGUgLT5sb29rdXAgcm91dGluZSB3aWxsIHNpbXBseSBlbmQgd2l0aCBhOgorCisJCXJldHVybiBkX3NwbGljZV9hbGlhcyhpbm9kZSwgZGVudHJ5KTsKKwl9CisKKworCisgIEEgZmlsZSBzeXN0ZW0gaW1wbGVtZW50YXRpb24gZGVjbGFyZXMgdGhhdCBpbnN0YW5jZXMgb2YgdGhlIGZpbGVzeXN0ZW0KK2FyZSBleHBvcnRhYmxlIGJ5IHNldHRpbmcgdGhlIHNfZXhwb3J0X29wIGZpZWxkIGluIHRoZSBzdHJ1Y3QKK3N1cGVyX2Jsb2NrLiAgVGhpcyBmaWVsZCBtdXN0IHBvaW50IHRvIGEgInN0cnVjdCBleHBvcnRfb3BlcmF0aW9ucyIKK3N0cnVjdCB3aGljaCBoYXMgdGhlIGZvbGxvd2luZyBtZW1iZXJzOgorCisgZW5jb2RlX2ZoICAob3B0aW9uYWwpCisgICAgVGFrZXMgYSBkZW50cnkgYW5kIGNyZWF0ZXMgYSBmaWxlaGFuZGxlIGZyYWdtZW50IHdoaWNoIGNhbiBsYXRlciBiZSB1c2VkCisgICAgdG8gZmluZCBvciBjcmVhdGUgYSBkZW50cnkgZm9yIHRoZSBzYW1lIG9iamVjdC4gIFRoZSBkZWZhdWx0CisgICAgaW1wbGVtZW50YXRpb24gY3JlYXRlcyBhIGZpbGVoYW5kbGUgZnJhZ21lbnQgdGhhdCBlbmNvZGVzIGEgMzJiaXQgaW5vZGUKKyAgICBhbmQgZ2VuZXJhdGlvbiBudW1iZXIgZm9yIHRoZSBpbm9kZSBlbmNvZGVkLCBhbmQgaWYgbmVjZXNzYXJ5IHRoZQorICAgIHNhbWUgaW5mb3JtYXRpb24gZm9yIHRoZSBwYXJlbnQuCisKKyAgZmhfdG9fZGVudHJ5IChtYW5kYXRvcnkpCisgICAgR2l2ZW4gYSBmaWxlaGFuZGxlIGZyYWdtZW50LCB0aGlzIHNob3VsZCBmaW5kIHRoZSBpbXBsaWVkIG9iamVjdCBhbmQKKyAgICBjcmVhdGUgYSBkZW50cnkgZm9yIGl0IChwb3NzaWJseSB3aXRoIGRfb2J0YWluX2FsaWFzKS4KKworICBmaF90b19wYXJlbnQgKG9wdGlvbmFsIGJ1dCBzdHJvbmdseSByZWNvbW1lbmRlZCkKKyAgICBHaXZlbiBhIGZpbGVoYW5kbGUgZnJhZ21lbnQsIHRoaXMgc2hvdWxkIGZpbmQgdGhlIHBhcmVudCBvZiB0aGUKKyAgICBpbXBsaWVkIG9iamVjdCBhbmQgY3JlYXRlIGEgZGVudHJ5IGZvciBpdCAocG9zc2libHkgd2l0aAorICAgIGRfb2J0YWluX2FsaWFzKS4gIE1heSBmYWlsIGlmIHRoZSBmaWxlaGFuZGxlIGZyYWdtZW50IGlzIHRvbyBzbWFsbC4KKworICBnZXRfcGFyZW50IChvcHRpb25hbCBidXQgc3Ryb25nbHkgcmVjb21tZW5kZWQpCisgICAgV2hlbiBnaXZlbiBhIGRlbnRyeSBmb3IgYSBkaXJlY3RvcnksIHRoaXMgc2hvdWxkIHJldHVybiAgYSBkZW50cnkgZm9yCisgICAgdGhlIHBhcmVudC4gIFF1aXRlIHBvc3NpYmx5IHRoZSBwYXJlbnQgZGVudHJ5IHdpbGwgaGF2ZSBiZWVuIGFsbG9jYXRlZAorICAgIGJ5IGRfYWxsb2NfYW5vbi4gIFRoZSBkZWZhdWx0IGdldF9wYXJlbnQgZnVuY3Rpb24ganVzdCByZXR1cm5zIGFuIGVycm9yCisgICAgc28gYW55IGZpbGVoYW5kbGUgbG9va3VwIHRoYXQgcmVxdWlyZXMgZmluZGluZyBhIHBhcmVudCB3aWxsIGZhaWwuCisgICAgLT5sb29rdXAoIi4uIikgaXMgKm5vdCogdXNlZCBhcyBhIGRlZmF1bHQgYXMgaXQgY2FuIGxlYXZlICIuLiIgZW50cmllcworICAgIGluIHRoZSBkY2FjaGUgd2hpY2ggYXJlIHRvbyBtZXNzeSB0byB3b3JrIHdpdGguCisKKyAgZ2V0X25hbWUgKG9wdGlvbmFsKQorICAgIFdoZW4gZ2l2ZW4gYSBwYXJlbnQgZGVudHJ5IGFuZCBhIGNoaWxkIGRlbnRyeSwgdGhpcyBzaG91bGQgZmluZCBhIG5hbWUKKyAgICBpbiB0aGUgZGlyZWN0b3J5IGlkZW50aWZpZWQgYnkgdGhlIHBhcmVudCBkZW50cnksIHdoaWNoIGxlYWRzIHRvIHRoZQorICAgIG9iamVjdCBpZGVudGlmaWVkIGJ5IHRoZSBjaGlsZCBkZW50cnkuICBJZiBubyBnZXRfbmFtZSBmdW5jdGlvbiBpcworICAgIHN1cHBsaWVkLCBhIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMgcHJvdmlkZWQgd2hpY2ggdXNlcyB2ZnNfcmVhZGRpcgorICAgIHRvIGZpbmQgcG90ZW50aWFsIG5hbWVzLCBhbmQgbWF0Y2hlcyBpbm9kZSBudW1iZXJzIHRvIGZpbmQgdGhlIGNvcnJlY3QKKyAgICBtYXRjaC4KKworCitBIGZpbGVoYW5kbGUgZnJhZ21lbnQgY29uc2lzdHMgb2YgYW4gYXJyYXkgb2YgMSBvciBtb3JlIDRieXRlIHdvcmRzLAordG9nZXRoZXIgd2l0aCBhIG9uZSBieXRlICJ0eXBlIi4KK1RoZSBkZWNvZGVfZmggcm91dGluZSBzaG91bGQgbm90IGRlcGVuZCBvbiB0aGUgc3RhdGVkIHNpemUgdGhhdCBpcworcGFzc2VkIHRvIGl0LiAgVGhpcyBzaXplIG1heSBiZSBsYXJnZXIgdGhhbiB0aGUgb3JpZ2luYWwgZmlsZWhhbmRsZQorZ2VuZXJhdGVkIGJ5IGVuY29kZV9maCwgaW4gd2hpY2ggY2FzZSBpdCB3aWxsIGhhdmUgYmVlbiBwYWRkZWQgd2l0aAorbnVscy4gIFJhdGhlciwgdGhlIGVuY29kZV9maCByb3V0aW5lIHNob3VsZCBjaG9vc2UgYSAidHlwZSIgd2hpY2gKK2luZGljYXRlcyB0aGUgZGVjb2RlX2ZoIGhvdyBtdWNoIG9mIHRoZSBmaWxlaGFuZGxlIGlzIHZhbGlkLCBhbmQgaG93CitpdCBzaG91bGQgYmUgaW50ZXJwcmV0ZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL25mcy9mYXVsdF9pbmplY3Rpb24udHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uZnMvZmF1bHRfaW5qZWN0aW9uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjZkMTY2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uZnMvZmF1bHRfaW5qZWN0aW9uLnR4dApAQCAtMCwwICsxLDY5IEBACisKK0ZhdWx0IEluamVjdGlvbgorPT09PT09PT09PT09PT09CitGYXVsdCBpbmplY3Rpb24gaXMgYSBtZXRob2QgZm9yIGZvcmNpbmcgZXJyb3JzIHRoYXQgbWF5IG5vdCBub3JtYWxseSBvY2N1ciwgb3IKK21heSBiZSBkaWZmaWN1bHQgdG8gcmVwcm9kdWNlLiAgRm9yY2luZyB0aGVzZSBlcnJvcnMgaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50CitjYW4gaGVscCB0aGUgZGV2ZWxvcGVyIGZpbmQgYW5kIGZpeCBidWdzIGJlZm9yZSB0aGVpciBjb2RlIGlzIHNoaXBwZWQgaW4gYQorcHJvZHVjdGlvbiBzeXN0ZW0uICBJbmplY3RpbmcgYW4gZXJyb3Igb24gdGhlIExpbnV4IE5GUyBzZXJ2ZXIgd2lsbCBhbGxvdyB1cyB0bworb2JzZXJ2ZSBob3cgdGhlIGNsaWVudCByZWFjdHMgYW5kIGlmIGl0IG1hbmFnZXMgdG8gcmVjb3ZlciBpdHMgc3RhdGUgY29ycmVjdGx5LgorCitORlNEX0ZBVUxUX0lOSkVDVElPTiBtdXN0IGJlIHNlbGVjdGVkIHdoZW4gY29uZmlndXJpbmcgdGhlIGtlcm5lbCB0byB1c2UgdGhpcworZmVhdHVyZS4KKworCitVc2luZyBGYXVsdCBJbmplY3Rpb24KKz09PT09PT09PT09PT09PT09PT09PQorT24gdGhlIGNsaWVudCwgbW91bnQgdGhlIGZhdWx0IGluamVjdGlvbiBzZXJ2ZXIgdGhyb3VnaCBORlMgdjQuMCsgYW5kIGRvIHNvbWUKK3dvcmsgb3ZlciBORlMgKG9wZW4gZmlsZXMsIHRha2UgbG9ja3MsIC4uLikuCisKK09uIHRoZSBzZXJ2ZXIsIG1vdW50IHRoZSBkZWJ1Z2ZzIGZpbGVzeXN0ZW0gdG8gPGRlYnVnX2Rpcj4gYW5kIGxzCis8ZGVidWdfZGlyPi9uZnNkLiAgVGhpcyB3aWxsIHNob3cgYSBsaXN0IG9mIGZpbGVzIHRoYXQgd2lsbCBiZSB1c2VkIGZvcgoraW5qZWN0aW5nIGZhdWx0cyBvbiB0aGUgTkZTIHNlcnZlci4gIEFzIHJvb3QsIHdyaXRlIGEgbnVtYmVyIG4gdG8gdGhlIGZpbGUKK2NvcnJlc3BvbmRpbmcgdG8gdGhlIGFjdGlvbiB5b3Ugd2FudCB0aGUgc2VydmVyIHRvIHRha2UuICBUaGUgc2VydmVyIHdpbGwgdGhlbgorcHJvY2VzcyB0aGUgZmlyc3QgbiBpdGVtcyBpdCBmaW5kcy4gIFNvIGlmIHlvdSB3YW50IHRvIGZvcmdldCA1IGxvY2tzLCBlY2hvICc1JwordG8gPGRlYnVnX2Rpcj4vbmZzZC9mb3JnZXRfbG9ja3MuICBBIHZhbHVlIG9mIDAgd2lsbCB0ZWxsIHRoZSBzZXJ2ZXIgdG8gZm9yZ2V0CithbGwgY29ycmVzcG9uZGluZyBpdGVtcy4gIEEgbG9nIG1lc3NhZ2Ugd2lsbCBiZSBjcmVhdGVkIGNvbnRhaW5pbmcgdGhlIG51bWJlcgorb2YgaXRlbXMgZm9yZ290dGVuIChjaGVjayBkbWVzZykuCisKK0dvIGJhY2sgdG8gd29yayBvbiB0aGUgY2xpZW50IGFuZCBjaGVjayBpZiB0aGUgY2xpZW50IHJlY292ZXJlZCBmcm9tIHRoZSBlcnJvcgorY29ycmVjdGx5LgorCisKK0F2YWlsYWJsZSBGYXVsdHMKKz09PT09PT09PT09PT09PT0KK2ZvcmdldF9jbGllbnRzOgorICAgICBUaGUgTkZTIHNlcnZlciBrZWVwcyBhIGxpc3Qgb2YgY2xpZW50cyB0aGF0IGhhdmUgcGxhY2VkIGEgbW91bnQgY2FsbC4gIElmCisgICAgIHRoaXMgbGlzdCBpcyBjbGVhcmVkLCB0aGUgc2VydmVyIHdpbGwgaGF2ZSBubyBrbm93bGVkZ2Ugb2Ygd2hvIHRoZSBjbGllbnQKKyAgICAgaXMsIGZvcmNpbmcgdGhlIGNsaWVudCB0byByZWF1dGhlbnRpY2F0ZSB3aXRoIHRoZSBzZXJ2ZXIuCisKK2ZvcmdldF9vcGVub3duZXJzOgorICAgICBUaGUgTkZTIHNlcnZlciBrZWVwcyBhIGxpc3Qgb2Ygd2hhdCBmaWxlcyBhcmUgY3VycmVudGx5IG9wZW5lZCBhbmQgd2hvCisgICAgIHRoZXkgd2VyZSBvcGVuZWQgYnkuICBDbGVhcmluZyB0aGlzIGxpc3Qgd2lsbCBmb3JjZSB0aGUgY2xpZW50IHRvIHJlb3BlbgorICAgICBpdHMgZmlsZXMuCisKK2ZvcmdldF9sb2NrczoKKyAgICAgVGhlIE5GUyBzZXJ2ZXIga2VlcHMgYSBsaXN0IG9mIHdoYXQgZmlsZXMgYXJlIGN1cnJlbnRseSBsb2NrZWQgaW4gdGhlIFZGUy4KKyAgICAgQ2xlYXJpbmcgdGhpcyBsaXN0IHdpbGwgZm9yY2UgdGhlIGNsaWVudCB0byByZWNsYWltIGl0cyBsb2NrcyAoZmlsZXMgYXJlCisgICAgIHVubG9ja2VkIHRocm91Z2ggdGhlIFZGUyBhcyB0aGV5IGFyZSBjbGVhcmVkIGZyb20gdGhpcyBsaXN0KS4KKworZm9yZ2V0X2RlbGVnYXRpb25zOgorICAgICBBIGRlbGVnYXRpb24gaXMgdXNlZCB0byBhc3N1cmUgdGhlIGNsaWVudCB0aGF0IGEgZmlsZSwgb3IgcGFydCBvZiBhIGZpbGUsCisgICAgIGhhcyBub3QgY2hhbmdlZCBzaW5jZSB0aGUgZGVsZWdhdGlvbiB3YXMgYXdhcmRlZC4gIENsZWFyaW5nIHRoaXMgbGlzdCB3aWxsCisgICAgIGZvcmNlIHRoZSBjbGllbnQgdG8gcmVhcXVpcmUgaXRzIGRlbGVnYXRpb24gYmVmb3JlIGFjY2Vzc2luZyB0aGUgZmlsZQorICAgICBhZ2Fpbi4KKworcmVjYWxsX2RlbGVnYXRpb25zOgorICAgICBEZWxlZ2F0aW9ucyBjYW4gYmUgcmVjYWxsZWQgYnkgdGhlIHNlcnZlciB3aGVuIGFub3RoZXIgY2xpZW50IGF0dGVtcHRzIHRvCisgICAgIGFjY2VzcyBhIGZpbGUuICBUaGlzIHRlc3Qgd2lsbCBub3RpZnkgdGhlIGNsaWVudCB0aGF0IGl0cyBkZWxlZ2F0aW9uIGhhcworICAgICBiZWVuIHJldm9rZWQsIGZvcmNpbmcgdGhlIGNsaWVudCB0byByZWFxdWlyZSB0aGUgZGVsZWdhdGlvbiBiZWZvcmUgdXNpbmcKKyAgICAgdGhlIGZpbGUgYWdhaW4uCisKKwordG9vbHMvbmZzL2luamVjdF9mYXVsdHMuc2ggc2NyaXB0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1RoaXMgc2NyaXB0IGhhcyBiZWVuIGNyZWF0ZWQgdG8gZWFzZSB0aGUgZmF1bHQgaW5qZWN0aW9uIHByb2Nlc3MuICBUaGlzIHNjcmlwdAord2lsbCBkZXRlY3QgdGhlIG1vdW50ZWQgZGVidWdmcyBkaXJlY3RvcnkgYW5kIHdyaXRlIHRvIHRoZSBmaWxlcyBsb2NhdGVkIHRoZXJlCitiYXNlZCBvbiB0aGUgYXJndW1lbnRzIHBhc3NlZCBieSB0aGUgdXNlci4gIEZvciBleGFtcGxlLCBydW5uaW5nCitgaW5qZWN0X2ZhdWx0cy5zaCBmb3JnZXRfbG9ja3MgMWAgYXMgcm9vdCB3aWxsIGluc3RydWN0IHRoZSBzZXJ2ZXIgdG8gZm9yZ2V0CitvbmUgbG9jay4gIFJ1bm5pbmcgYGluamVjdF9mYXVsdHMgZm9yZ2V0X2xvY2tzYCB3aWxsIGluc3RydWN0IHRoZSBzZXJ2ZXIgdG8KK2ZvcmdldGFsbCBsb2Nrcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzL2lkbWFwcGVyLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzL2lkbWFwcGVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTAzZDEwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uZnMvaWRtYXBwZXIudHh0CkBAIC0wLDAgKzEsNzUgQEAKKworPT09PT09PT09CitJRCBNYXBwZXIKKz09PT09PT09PQorSWQgbWFwcGVyIGlzIHVzZWQgYnkgTkZTIHRvIHRyYW5zbGF0ZSB1c2VyIGFuZCBncm91cCBpZHMgaW50byBuYW1lcywgYW5kIHRvCit0cmFuc2xhdGUgdXNlciBhbmQgZ3JvdXAgbmFtZXMgaW50byBpZHMuICBQYXJ0IG9mIHRoaXMgdHJhbnNsYXRpb24gaW52b2x2ZXMKK3BlcmZvcm1pbmcgYW4gdXBjYWxsIHRvIHVzZXJzcGFjZSB0byByZXF1ZXN0IHRoZSBpbmZvcm1hdGlvbi4gIFRoZXJlIGFyZSB0d28KK3dheXMgTkZTIGNvdWxkIG9idGFpbiB0aGlzIGluZm9ybWF0aW9uOiBwbGFjaW5nIGEgY2FsbCB0byAvc2Jpbi9yZXF1ZXN0LWtleQorb3IgYnkgcGxhY2luZyBhIGNhbGwgdG8gdGhlIHJwYy5pZG1hcCBkYWVtb24uCisKK05GUyB3aWxsIGF0dGVtcHQgdG8gY2FsbCAvc2Jpbi9yZXF1ZXN0LWtleSBmaXJzdC4gIElmIHRoaXMgc3VjY2VlZHMsIHRoZQorcmVzdWx0IHdpbGwgYmUgY2FjaGVkIHVzaW5nIHRoZSBnZW5lcmljIHJlcXVlc3Qta2V5IGNhY2hlLiAgVGhpcyBjYWxsIHNob3VsZAorb25seSBmYWlsIGlmIC9ldGMvcmVxdWVzdC1rZXkuY29uZiBpcyBub3QgY29uZmlndXJlZCBmb3IgdGhlIGlkX3Jlc29sdmVyIGtleQordHlwZSwgc2VlIHRoZSAiQ29uZmlndXJpbmciIHNlY3Rpb24gYmVsb3cgaWYgeW91IHdpc2ggdG8gdXNlIHRoZSByZXF1ZXN0LWtleQorbWV0aG9kLgorCitJZiB0aGUgY2FsbCB0byAvc2Jpbi9yZXF1ZXN0LWtleSBmYWlscyAoaWYgL2V0Yy9yZXF1ZXN0LWtleS5jb25mIGlzIG5vdAorY29uZmlndXJlZCB3aXRoIHRoZSBpZF9yZXNvbHZlciBrZXkgdHlwZSksIHRoZW4gdGhlIGlkbWFwcGVyIHdpbGwgYXNrIHRoZQorbGVnYWN5IHJwYy5pZG1hcCBkYWVtb24gZm9yIHRoZSBpZCBtYXBwaW5nLiAgVGhpcyByZXN1bHQgd2lsbCBiZSBzdG9yZWQKK2luIGEgY3VzdG9tIE5GUyBpZG1hcCBjYWNoZS4KKworCis9PT09PT09PT09PQorQ29uZmlndXJpbmcKKz09PT09PT09PT09CitUaGUgZmlsZSAvZXRjL3JlcXVlc3Qta2V5LmNvbmYgd2lsbCBuZWVkIHRvIGJlIG1vZGlmaWVkIHNvIC9zYmluL3JlcXVlc3Qta2V5IGNhbgorZGlyZWN0IHRoZSB1cGNhbGwuICBUaGUgZm9sbG93aW5nIGxpbmUgc2hvdWxkIGJlIGFkZGVkOgorCisjT1AJVFlQRQlERVNDUklQVElPTglDQUxMT1VUIElORk8JUFJPR1JBTSBBUkcxIEFSRzIgQVJHMyAuLi4KKyM9PT09PT0JPT09PT09PQk9PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2NyZWF0ZQlpZF9yZXNvbHZlcgkqCSoJCS91c3Ivc2Jpbi9uZnMuaWRtYXAgJWsgJWQgNjAwCisKK1RoaXMgd2lsbCBkaXJlY3QgYWxsIGlkX3Jlc29sdmVyIHJlcXVlc3RzIHRvIHRoZSBwcm9ncmFtIC91c3Ivc2Jpbi9uZnMuaWRtYXAuCitUaGUgbGFzdCBwYXJhbWV0ZXIsIDYwMCwgZGVmaW5lcyBob3cgbWFueSBzZWNvbmRzIGludG8gdGhlIGZ1dHVyZSB0aGUga2V5IHdpbGwKK2V4cGlyZS4gIFRoaXMgcGFyYW1ldGVyIGlzIG9wdGlvbmFsIGZvciAvdXNyL3NiaW4vbmZzLmlkbWFwLiAgV2hlbiB0aGUgdGltZW91dAoraXMgbm90IHNwZWNpZmllZCwgbmZzLmlkbWFwIHdpbGwgZGVmYXVsdCB0byA2MDAgc2Vjb25kcy4KKworaWQgbWFwcGVyIHVzZXMgZm9yIGtleSBkZXNjcmlwdGlvbnM6CisJICB1aWQ6ICBGaW5kIHRoZSBVSUQgZm9yIHRoZSBnaXZlbiB1c2VyCisJICBnaWQ6ICBGaW5kIHRoZSBHSUQgZm9yIHRoZSBnaXZlbiBncm91cAorCSB1c2VyOiAgRmluZCB0aGUgdXNlciAgbmFtZSBmb3IgdGhlIGdpdmVuIFVJRAorCWdyb3VwOiAgRmluZCB0aGUgZ3JvdXAgbmFtZSBmb3IgdGhlIGdpdmVuIEdJRAorCitZb3UgY2FuIGhhbmRsZSBhbnkgb2YgdGhlc2UgaW5kaXZpZHVhbGx5LCByYXRoZXIgdGhhbiB1c2luZyB0aGUgZ2VuZXJpYyB1cGNhbGwKK3Byb2dyYW0uICBJZiB5b3Ugd291bGQgbGlrZSB0byB1c2UgeW91ciBvd24gcHJvZ3JhbSBmb3IgYSB1aWQgbG9va3VwIHRoZW4geW91Cit3b3VsZCBlZGl0IHlvdXIgcmVxdWVzdC1rZXkuY29uZiBzbyBpdCBsb29rIHNpbWlsYXIgdG8gdGhpczoKKworI09QCVRZUEUJREVTQ1JJUFRJT04JQ0FMTE9VVCBJTkZPCVBST0dSQU0gQVJHMSBBUkcyIEFSRzMgLi4uCisjPT09PT09CT09PT09PT0JPT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PQk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitjcmVhdGUJaWRfcmVzb2x2ZXIJdWlkOioJKgkJL3NvbWUvb3RoZXIvcHJvZ3JhbSAlayAlZCA2MDAKK2NyZWF0ZQlpZF9yZXNvbHZlcgkqCSoJCS91c3Ivc2Jpbi9uZnMuaWRtYXAgJWsgJWQgNjAwCisKK05vdGljZSB0aGF0IHRoZSBuZXcgbGluZSB3YXMgYWRkZWQgYWJvdmUgdGhlIGxpbmUgZm9yIHRoZSBnZW5lcmljIHByb2dyYW0uCityZXF1ZXN0LWtleSB3aWxsIGZpbmQgdGhlIGZpcnN0IG1hdGNoaW5nIGxpbmUgYW5kIGNvcnJlc3BvbmRpbmcgcHJvZ3JhbS4gIEluCit0aGlzIGNhc2UsIC9zb21lL290aGVyL3Byb2dyYW0gd2lsbCBoYW5kbGUgYWxsIHVpZCBsb29rdXBzIGFuZAorL3Vzci9zYmluL25mcy5pZG1hcCB3aWxsIGhhbmRsZSBnaWQsIHVzZXIsIGFuZCBncm91cCBsb29rdXBzLgorCitTZWUgPGZpbGU6RG9jdW1lbnRhdGlvbi9zZWN1cml0eS9rZXlzLXJlcXVlc3Qta2V5LnR4dD4gZm9yIG1vcmUgaW5mb3JtYXRpb24KK2Fib3V0IHRoZSByZXF1ZXN0LWtleSBmdW5jdGlvbi4KKworCis9PT09PT09PT0KK25mcy5pZG1hcAorPT09PT09PT09CituZnMuaWRtYXAgaXMgZGVzaWduZWQgdG8gYmUgY2FsbGVkIGJ5IHJlcXVlc3Qta2V5LCBhbmQgc2hvdWxkIG5vdCBiZSBydW4gImJ5CitoYW5kIi4gIFRoaXMgcHJvZ3JhbSB0YWtlcyB0d28gYXJndW1lbnRzLCBhIHNlcmlhbGl6ZWQga2V5IGFuZCBhIGtleQorZGVzY3JpcHRpb24uICBUaGUgc2VyaWFsaXplZCBrZXkgaXMgZmlyc3QgY29udmVydGVkIGludG8gYSBrZXlfc2VyaWFsX3QsIGFuZAordGhlbiBwYXNzZWQgYXMgYW4gYXJndW1lbnQgdG8ga2V5Y3RsX2luc3RhbnRpYXRlIChib3RoIGFyZSBwYXJ0IG9mIGtleXV0aWxzLmgpLgorCitUaGUgYWN0dWFsIGxvb2t1cHMgYXJlIHBlcmZvcm1lZCBieSBmdW5jdGlvbnMgZm91bmQgaW4gbmZzaWRtYXAuaC4gIG5mcy5pZG1hcAorZGV0ZXJtaW5lcyB0aGUgY29ycmVjdCBmdW5jdGlvbiB0byBjYWxsIGJ5IGxvb2tpbmcgYXQgdGhlIGZpcnN0IHBhcnQgb2YgdGhlCitkZXNjcmlwdGlvbiBzdHJpbmcuICBGb3IgZXhhbXBsZSwgYSB1aWQgbG9va3VwIGRlc2NyaXB0aW9uIHdpbGwgYXBwZWFyIGFzCisidWlkOnVzZXJAZG9tYWluIi4KKworbmZzLmlkbWFwIHdpbGwgcmV0dXJuIDAgaWYgdGhlIGtleSB3YXMgaW5zdGFudGlhdGVkLCBhbmQgbm9uLXplcm8gb3RoZXJ3aXNlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uZnMva25mc2Qtc3RhdHMudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uZnMva25mc2Qtc3RhdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNWQ4MjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL25mcy9rbmZzZC1zdGF0cy50eHQKQEAgLTAsMCArMSwxMjMgQEAKKworS2VybmVsIE5GUyBTZXJ2ZXIgU3RhdGlzdGljcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgZm9ybWF0IGFuZCBzZW1hbnRpY3Mgb2YgdGhlIHN0YXRpc3RpY3MKK3doaWNoIHRoZSBrZXJuZWwgTkZTIHNlcnZlciBtYWtlcyBhdmFpbGFibGUgdG8gdXNlcnNwYWNlLiAgVGhlc2UKK3N0YXRpc3RpY3MgYXJlIGF2YWlsYWJsZSBpbiBzZXZlcmFsIHRleHQgZm9ybSBwc2V1ZG8gZmlsZXMsIGVhY2ggb2YKK3doaWNoIGlzIGRlc2NyaWJlZCBzZXBhcmF0ZWx5IGJlbG93LgorCitJbiBtb3N0IGNhc2VzIHlvdSBkb24ndCBuZWVkIHRvIGtub3cgdGhlc2UgZm9ybWF0cywgYXMgdGhlIG5mc3N0YXQoOCkKK3Byb2dyYW0gZnJvbSB0aGUgbmZzLXV0aWxzIGRpc3RyaWJ1dGlvbiBwcm92aWRlcyBhIGhlbHBmdWwgY29tbWFuZC1saW5lCitpbnRlcmZhY2UgZm9yIGV4dHJhY3RpbmcgYW5kIHByaW50aW5nIHRoZW0uCisKK0FsbCB0aGUgZmlsZXMgZGVzY3JpYmVkIGhlcmUgYXJlIGZvcm1hdHRlZCBhcyBhIHNlcXVlbmNlIG9mIHRleHQgbGluZXMsCitzZXBhcmF0ZWQgYnkgbmV3bGluZSAnXG4nIGNoYXJhY3RlcnMuICBMaW5lcyBiZWdpbm5pbmcgd2l0aCBhIGhhc2gKKycjJyBjaGFyYWN0ZXIgYXJlIGNvbW1lbnRzIGludGVuZGVkIGZvciBodW1hbnMgYW5kIHNob3VsZCBiZSBpZ25vcmVkCitieSBwYXJzaW5nIHJvdXRpbmVzLiAgQWxsIG90aGVyIGxpbmVzIGNvbnRhaW4gYSBzZXF1ZW5jZSBvZiBmaWVsZHMKK3NlcGFyYXRlZCBieSB3aGl0ZXNwYWNlLgorCisvcHJvYy9mcy9uZnNkL3Bvb2xfc3RhdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGZpbGUgaXMgYXZhaWxhYmxlIGluIGtlcm5lbHMgZnJvbSAyLjYuMzAgb253YXJkcywgaWYgdGhlCisvcHJvYy9mcy9uZnNkIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCAoaXQgYWxtb3N0IGFsd2F5cyBzaG91bGQgYmUpLgorCitUaGUgZmlyc3QgbGluZSBpcyBhIGNvbW1lbnQgd2hpY2ggZGVzY3JpYmVzIHRoZSBmaWVsZHMgcHJlc2VudCBpbgorYWxsIHRoZSBvdGhlciBsaW5lcy4gIFRoZSBvdGhlciBsaW5lcyBwcmVzZW50IHRoZSBmb2xsb3dpbmcgZGF0YSBhcworYSBzZXF1ZW5jZSBvZiB1bnNpZ25lZCBkZWNpbWFsIG51bWVyaWMgZmllbGRzLiAgT25lIGxpbmUgaXMgc2hvd24KK2ZvciBlYWNoIE5GUyB0aHJlYWQgcG9vbC4KKworQWxsIGNvdW50ZXJzIGFyZSA2NCBiaXRzIHdpZGUgYW5kIHdyYXAgbmF0dXJhbGx5LiAgVGhlcmUgaXMgbm8gd2F5Cit0byB6ZXJvIHRoZXNlIGNvdW50ZXJzLCBpbnN0ZWFkIGFwcGxpY2F0aW9ucyBzaG91bGQgZG8gdGhlaXIgb3duCityYXRlIGNvbnZlcnNpb24uCisKK3Bvb2wKKwlUaGUgaWQgbnVtYmVyIG9mIHRoZSBORlMgdGhyZWFkIHBvb2wgdG8gd2hpY2ggdGhpcyBsaW5lIGFwcGxpZXMuCisJVGhpcyBudW1iZXIgZG9lcyBub3QgY2hhbmdlLgorCisJVGhyZWFkIHBvb2wgaWRzIGFyZSBhIGNvbnRpZ3VvdXMgc2V0IG9mIHNtYWxsIGludGVnZXJzIHN0YXJ0aW5nCisJYXQgemVyby4gIFRoZSBtYXhpbXVtIHZhbHVlIGRlcGVuZHMgb24gdGhlIHRocmVhZCBwb29sIG1vZGUsIGJ1dAorCWN1cnJlbnRseSBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gdGhlIG51bWJlciBvZiBDUFVzIGluIHRoZSBzeXN0ZW0uCisJTm90ZSB0aGF0IGluIHRoZSBkZWZhdWx0IGNhc2UgdGhlcmUgd2lsbCBiZSBhIHNpbmdsZSB0aHJlYWQgcG9vbAorCXdoaWNoIGNvbnRhaW5zIGFsbCB0aGUgbmZzZCB0aHJlYWRzIGFuZCBhbGwgdGhlIENQVXMgaW4gdGhlIHN5c3RlbSwKKwlhbmQgdGh1cyB0aGlzIGZpbGUgd2lsbCBoYXZlIGEgc2luZ2xlIGxpbmUgd2l0aCBhIHBvb2wgaWQgb2YgIjAiLgorCitwYWNrZXRzLWFycml2ZWQKKwlDb3VudHMgaG93IG1hbnkgTkZTIHBhY2tldHMgaGF2ZSBhcnJpdmVkLiAgTW9yZSBwcmVjaXNlbHksIHRoaXMKKwlpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgdGhlIG5ldHdvcmsgc3RhY2sgaGFzIG5vdGlmaWVkIHRoZQorCXN1bnJwYyBzZXJ2ZXIgbGF5ZXIgdGhhdCBuZXcgZGF0YSBtYXkgYmUgYXZhaWxhYmxlIG9uIGEgdHJhbnNwb3J0CisJKGUuZy4gYW4gTkZTIG9yIFVEUCBzb2NrZXQgb3IgYW4gTkZTL1JETUEgZW5kcG9pbnQpLgorCisJRGVwZW5kaW5nIG9uIHRoZSBORlMgd29ya2xvYWQgcGF0dGVybnMgYW5kIHZhcmlvdXMgbmV0d29yayBzdGFjaworCWVmZmVjdHMgKHN1Y2ggYXMgTGFyZ2UgUmVjZWl2ZSBPZmZsb2FkKSB3aGljaCBjYW4gY29tYmluZSBwYWNrZXRzCisJb24gdGhlIHdpcmUsIHRoaXMgbWF5IGJlIGVpdGhlciBtb3JlIG9yIGxlc3MgdGhhbiB0aGUgbnVtYmVyCisJb2YgTkZTIGNhbGxzIHJlY2VpdmVkICh3aGljaCBzdGF0aXN0aWMgaXMgYXZhaWxhYmxlIGVsc2V3aGVyZSkuCisJSG93ZXZlciB0aGlzIGlzIGEgbW9yZSBhY2N1cmF0ZSBhbmQgbGVzcyB3b3JrbG9hZC1kZXBlbmRlbnQgbWVhc3VyZQorCW9mIGhvdyBtdWNoIENQVSBsb2FkIGlzIGJlaW5nIHBsYWNlZCBvbiB0aGUgc3VucnBjIHNlcnZlciBsYXllcgorCWR1ZSB0byBORlMgbmV0d29yayB0cmFmZmljLgorCitzb2NrZXRzLWVucXVldWVkCisJQ291bnRzIGhvdyBtYW55IHRpbWVzIGFuIE5GUyB0cmFuc3BvcnQgaXMgZW5xdWV1ZWQgdG8gd2FpdCBmb3IKKwlhbiBuZnNkIHRocmVhZCB0byBzZXJ2aWNlIGl0LCBpLmUuIG5vIG5mc2QgdGhyZWFkIHdhcyBjb25zaWRlcmVkCisJYXZhaWxhYmxlLgorCisJVGhlIGNpcmN1bXN0YW5jZSB0aGlzIHN0YXRpc3RpYyB0cmFja3MgaW5kaWNhdGVzIHRoYXQgdGhlcmUgd2FzIE5GUworCW5ldHdvcmstZmFjaW5nIHdvcmsgdG8gYmUgZG9uZSBidXQgaXQgY291bGRuJ3QgYmUgZG9uZSBpbW1lZGlhdGVseSwKKwl0aHVzIGludHJvZHVjaW5nIGEgc21hbGwgZGVsYXkgaW4gc2VydmljaW5nIE5GUyBjYWxscy4gIFRoZSBpZGVhbAorCXJhdGUgb2YgY2hhbmdlIGZvciB0aGlzIGNvdW50ZXIgaXMgemVybzsgc2lnbmlmaWNhbnRseSBub24temVybworCXZhbHVlcyBtYXkgaW5kaWNhdGUgYSBwZXJmb3JtYW5jZSBsaW1pdGF0aW9uLgorCisJVGhpcyBjYW4gaGFwcGVuIGJlY2F1c2UgdGhlcmUgYXJlIHRvbyBmZXcgbmZzZCB0aHJlYWRzIGluIHRoZSB0aHJlYWQKKwlwb29sIGZvciB0aGUgTkZTIHdvcmtsb2FkICh0aGUgd29ya2xvYWQgaXMgdGhyZWFkLWxpbWl0ZWQpLCBpbiB3aGljaAorCWNhc2UgY29uZmlndXJpbmcgbW9yZSBuZnNkIHRocmVhZHMgd2lsbCBwcm9iYWJseSBpbXByb3ZlIHRoZQorCXBlcmZvcm1hbmNlIG9mIHRoZSBORlMgd29ya2xvYWQuCisKK3RocmVhZHMtd29rZW4KKwlDb3VudHMgaG93IG1hbnkgdGltZXMgYW4gaWRsZSBuZnNkIHRocmVhZCBpcyB3b2tlbiB0byB0cnkgdG8KKwlyZWNlaXZlIHNvbWUgZGF0YSBmcm9tIGFuIE5GUyB0cmFuc3BvcnQuCisKKwlUaGlzIHN0YXRpc3RpYyB0cmFja3MgdGhlIGNpcmN1bXN0YW5jZSB3aGVyZSBpbmNvbWluZworCW5ldHdvcmstZmFjaW5nIE5GUyB3b3JrIGlzIGJlaW5nIGhhbmRsZWQgcXVpY2tseSwgd2hpY2ggaXMgYSBnb29kCisJdGhpbmcuICBUaGUgaWRlYWwgcmF0ZSBvZiBjaGFuZ2UgZm9yIHRoaXMgY291bnRlciB3aWxsIGJlIGNsb3NlCisJdG8gYnV0IGxlc3MgdGhhbiB0aGUgcmF0ZSBvZiBjaGFuZ2Ugb2YgdGhlIHBhY2tldHMtYXJyaXZlZCBjb3VudGVyLgorCit0aHJlYWRzLXRpbWVkb3V0CisJQ291bnRzIGhvdyBtYW55IHRpbWVzIGFuIG5mc2QgdGhyZWFkIHRyaWdnZXJlZCBhbiBpZGxlIHRpbWVvdXQsCisJaS5lLiB3YXMgbm90IHdva2VuIHRvIGhhbmRsZSBhbnkgaW5jb21pbmcgbmV0d29yayBwYWNrZXRzIGZvcgorCXNvbWUgdGltZS4KKworCVRoaXMgc3RhdGlzdGljIGNvdW50cyBhIGNpcmN1bXN0YW5jZSB3aGVyZSB0aGVyZSBhcmUgbW9yZSBuZnNkCisJdGhyZWFkcyBjb25maWd1cmVkIHRoYW4gY2FuIGJlIHVzZWQgYnkgdGhlIE5GUyB3b3JrbG9hZC4gIFRoaXMgaXMKKwlhIGNsdWUgdGhhdCB0aGUgbnVtYmVyIG9mIG5mc2QgdGhyZWFkcyBjYW4gYmUgcmVkdWNlZCB3aXRob3V0CisJYWZmZWN0aW5nIHBlcmZvcm1hbmNlLiAgVW5mb3J0dW5hdGVseSwgaXQncyBvbmx5IGEgY2x1ZSBhbmQgbm90CisJYSBzdHJvbmcgaW5kaWNhdGlvbiwgZm9yIGEgY291cGxlIG9mIHJlYXNvbnM6CisKKwkgLSBDdXJyZW50bHkgdGhlIHJhdGUgYXQgd2hpY2ggdGhlIGNvdW50ZXIgaXMgaW5jcmVtZW50ZWQgaXMgcXVpdGUKKwkgICBzbG93OyB0aGUgaWRsZSB0aW1lb3V0IGlzIDYwIG1pbnV0ZXMuICBVbmxlc3MgdGhlIE5GUyB3b3JrbG9hZAorCSAgIHJlbWFpbnMgY29uc3RhbnQgZm9yIGhvdXJzIGF0IGEgdGltZSwgdGhpcyBjb3VudGVyIGlzIHVubGlrZWx5CisJICAgdG8gYmUgcHJvdmlkaW5nIGluZm9ybWF0aW9uIHRoYXQgaXMgc3RpbGwgdXNlZnVsLgorCisJIC0gSXQgaXMgdXN1YWxseSBhIHdpc2UgcG9saWN5IHRvIHByb3ZpZGUgc29tZSBzbGFjaywKKwkgICBpLmUuIGNvbmZpZ3VyZSBhIGZldyBtb3JlIG5mc2RzIHRoYW4gYXJlIGN1cnJlbnRseSBuZWVkZWQsCisJICAgdG8gYWxsb3cgZm9yIGZ1dHVyZSBzcGlrZXMgaW4gbG9hZC4KKworCitOb3RlIHRoYXQgaW5jb21pbmcgcGFja2V0cyBvbiBORlMgdHJhbnNwb3J0cyB3aWxsIGJlIGRlYWx0IHdpdGggaW4KK29uZSBvZiB0aHJlZSB3YXlzLiAgQW4gbmZzZCB0aHJlYWQgY2FuIGJlIHdva2VuICh0aHJlYWRzLXdva2VuIGNvdW50cwordGhpcyBjYXNlKSwgb3IgdGhlIHRyYW5zcG9ydCBjYW4gYmUgZW5xdWV1ZWQgZm9yIGxhdGVyIGF0dGVudGlvbgorKHNvY2tldHMtZW5xdWV1ZWQgY291bnRzIHRoaXMgY2FzZSksIG9yIHRoZSBwYWNrZXQgY2FuIGJlIHRlbXBvcmFyaWx5CitkZWZlcnJlZCBiZWNhdXNlIHRoZSB0cmFuc3BvcnQgaXMgY3VycmVudGx5IGJlaW5nIHVzZWQgYnkgYW4gbmZzZAordGhyZWFkLiAgVGhpcyBsYXN0IGNhc2UgaXMgbm90IHZlcnkgaW50ZXJlc3RpbmcgYW5kIGlzIG5vdCBleHBsaWNpdGx5Citjb3VudGVkLCBidXQgY2FuIGJlIGluZmVycmVkIGZyb20gdGhlIG90aGVyIGNvdW50ZXJzIHRodXM6CisKK3BhY2tldHMtZGVmZXJyZWQgPSBwYWNrZXRzLWFycml2ZWQgLSAoIHNvY2tldHMtZW5xdWV1ZWQgKyB0aHJlYWRzLXdva2VuICkKKworCitNb3JlCistLS0tCitEZXNjcmlwdGlvbnMgb2YgdGhlIG90aGVyIHN0YXRpc3RpY3MgZmlsZSBzaG91bGQgZ28gaGVyZS4KKworCitHcmVnIEJhbmtzIDxnbmJAc2dpLmNvbT4KKzI2IE1hciAyMDA5CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL25mcy9uZnMtcmRtYS50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL25mcy9uZnMtcmRtYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA2YjZjMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzL25mcy1yZG1hLnR4dApAQCAtMCwwICsxLDI3NCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMJCQkJCQkJCQkgICAgICAgIworIwkJCQlORlMvUkRNQSBSRUFETUUJCQkJICAgICAgICMKKyMJCQkJCQkJCQkgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIEF1dGhvcjogTmV0QXBwIGFuZCBPcGVuIEdyaWQgQ29tcHV0aW5nCisgRGF0ZTogTWF5IDI5LCAyMDA4CisKK1RhYmxlIG9mIENvbnRlbnRzCit+fn5+fn5+fn5+fn5+fn5+fgorIC0gT3ZlcnZpZXcKKyAtIEdldHRpbmcgSGVscAorIC0gSW5zdGFsbGF0aW9uCisgLSBDaGVjayBSRE1BIGFuZCBORlMgU2V0dXAKKyAtIE5GUy9SRE1BIFNldHVwCisKK092ZXJ2aWV3Cit+fn5+fn5+fgorCisgIFRoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIGhvdyB0byBpbnN0YWxsIGFuZCBzZXR1cCB0aGUgTGludXggTkZTL1JETUEgY2xpZW50CisgIGFuZCBzZXJ2ZXIgc29mdHdhcmUuCisKKyAgVGhlIE5GUy9SRE1BIGNsaWVudCB3YXMgZmlyc3QgaW5jbHVkZWQgaW4gTGludXggMi42LjI0LiBUaGUgTkZTL1JETUEgc2VydmVyCisgIHdhcyBmaXJzdCBpbmNsdWRlZCBpbiB0aGUgZm9sbG93aW5nIHJlbGVhc2UsIExpbnV4IDIuNi4yNS4KKworICBJbiBvdXIgdGVzdGluZywgd2UgaGF2ZSBvYnRhaW5lZCBleGNlbGxlbnQgcGVyZm9ybWFuY2UgcmVzdWx0cyAoZnVsbCAxMEdiaXQKKyAgd2lyZSBiYW5kd2lkdGggYXQgbWluaW1hbCBjbGllbnQgQ1BVKSB1bmRlciBtYW55IHdvcmtsb2Fkcy4gVGhlIGNvZGUgcGFzc2VzCisgIHRoZSBmdWxsIENvbm5lY3RhdGhvbiB0ZXN0IHN1aXRlIGFuZCBvcGVyYXRlcyBvdmVyIGJvdGggSW5maW5pYmFuZCBhbmQgaVdBUlAKKyAgUkRNQSBhZGFwdGVycy4KKworR2V0dGluZyBIZWxwCit+fn5+fn5+fn5+fn4KKworICBJZiB5b3UgZ2V0IHN0dWNrLCB5b3UgY2FuIGFzayBxdWVzdGlvbnMgb24gdGhlCisKKyAgICAgICAgICAgICAgICBuZnMtcmRtYS1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKKworICBtYWlsaW5nIGxpc3QuCisKK0luc3RhbGxhdGlvbgorfn5+fn5+fn5+fn5+CisKKyAgVGhlc2UgaW5zdHJ1Y3Rpb25zIGFyZSBhIHN0ZXAgYnkgc3RlcCBndWlkZSB0byBidWlsZGluZyBhIG1hY2hpbmUgZm9yCisgIHVzZSB3aXRoIE5GUy9SRE1BLgorCisgIC0gSW5zdGFsbCBhbiBSRE1BIGRldmljZQorCisgICAgQW55IGRldmljZSBzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlcnMgaW4gZHJpdmVycy9pbmZpbmliYW5kL2h3IGlzIGFjY2VwdGFibGUuCisKKyAgICBUZXN0aW5nIGhhcyBiZWVuIHBlcmZvcm1lZCB1c2luZyBzZXZlcmFsIE1lbGxhbm94LWJhc2VkIElCIGNhcmRzLCB0aGUKKyAgICBBbW1hc3NvIEFNUzExMDAgaVdBUlAgYWRhcHRlciwgYW5kIHRoZSBDaGVsc2lvIGN4Z2IzIGlXQVJQIGFkYXB0ZXIuCisKKyAgLSBJbnN0YWxsIGEgTGludXggZGlzdHJpYnV0aW9uIGFuZCB0b29scworCisgICAgVGhlIGZpcnN0IGtlcm5lbCByZWxlYXNlIHRvIGNvbnRhaW4gYm90aCB0aGUgTkZTL1JETUEgY2xpZW50IGFuZCBzZXJ2ZXIgd2FzCisgICAgTGludXggMi42LjI1ICBUaGVyZWZvcmUsIGEgZGlzdHJpYnV0aW9uIGNvbXBhdGlibGUgd2l0aCB0aGlzIGFuZCBzdWJzZXF1ZW50CisgICAgTGludXgga2VybmVsIHJlbGVhc2Ugc2hvdWxkIGJlIGluc3RhbGxlZC4KKworICAgIFRoZSBwcm9jZWR1cmVzIGRlc2NyaWJlZCBpbiB0aGlzIGRvY3VtZW50IGhhdmUgYmVlbiB0ZXN0ZWQgd2l0aAorICAgIGRpc3RyaWJ1dGlvbnMgZnJvbSBSZWQgSGF0J3MgRmVkb3JhIFByb2plY3QgKGh0dHA6Ly9mZWRvcmEucmVkaGF0LmNvbS8pLgorCisgIC0gSW5zdGFsbCBuZnMtdXRpbHMtMS4xLjIgb3IgZ3JlYXRlciBvbiB0aGUgY2xpZW50CisKKyAgICBBbiBORlMvUkRNQSBtb3VudCBwb2ludCBjYW4gYmUgb2J0YWluZWQgYnkgdXNpbmcgdGhlIG1vdW50Lm5mcyBjb21tYW5kIGluCisgICAgbmZzLXV0aWxzLTEuMS4yIG9yIGdyZWF0ZXIgKG5mcy11dGlscy0xLjEuMSB3YXMgdGhlIGZpcnN0IG5mcy11dGlscworICAgIHZlcnNpb24gd2l0aCBzdXBwb3J0IGZvciBORlMvUkRNQSBtb3VudHMsIGJ1dCBmb3IgdmFyaW91cyByZWFzb25zIHdlCisgICAgcmVjb21tZW5kIHVzaW5nIG5mcy11dGlscy0xLjEuMiBvciBncmVhdGVyKS4gVG8gc2VlIHdoaWNoIHZlcnNpb24gb2YKKyAgICBtb3VudC5uZnMgeW91IGFyZSB1c2luZywgdHlwZToKKworICAgICQgL3NiaW4vbW91bnQubmZzIC1WCisKKyAgICBJZiB0aGUgdmVyc2lvbiBpcyBsZXNzIHRoYW4gMS4xLjIgb3IgdGhlIGNvbW1hbmQgZG9lcyBub3QgZXhpc3QsCisgICAgeW91IHNob3VsZCBpbnN0YWxsIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBuZnMtdXRpbHMuCisKKyAgICBEb3dubG9hZCB0aGUgbGF0ZXN0IHBhY2thZ2UgZnJvbToKKworICAgIGh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMvbmZzCisKKyAgICBVbmNvbXByZXNzIHRoZSBwYWNrYWdlIGFuZCBmb2xsb3cgdGhlIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMuCisKKyAgICBJZiB5b3Ugd2lsbCBub3QgbmVlZCB0aGUgaWRtYXBwZXIgYW5kIGdzc2QgZXhlY3V0YWJsZXMgKHlvdSBkbyBub3QgbmVlZAorICAgIHRoZXNlIHRvIGNyZWF0ZSBhbiBORlMvUkRNQSBlbmFibGVkIG1vdW50IGNvbW1hbmQpLCB0aGUgaW5zdGFsbGF0aW9uCisgICAgcHJvY2VzcyBjYW4gYmUgc2ltcGxpZmllZCBieSBkaXNhYmxpbmcgdGhlc2UgZmVhdHVyZXMgd2hlbiBydW5uaW5nCisgICAgY29uZmlndXJlOgorCisgICAgJCAuL2NvbmZpZ3VyZSAtLWRpc2FibGUtZ3NzIC0tZGlzYWJsZS1uZnN2NAorCisgICAgVG8gYnVpbGQgbmZzLXV0aWxzIHlvdSB3aWxsIG5lZWQgdGhlIHRjcF93cmFwcGVycyBwYWNrYWdlIGluc3RhbGxlZC4gRm9yCisgICAgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIHNlZSB0aGUgcGFja2FnZSdzIFJFQURNRSBhbmQgSU5TVEFMTCBmaWxlcy4KKworICAgIEFmdGVyIGJ1aWxkaW5nIHRoZSBuZnMtdXRpbHMgcGFja2FnZSwgdGhlcmUgd2lsbCBiZSBhIG1vdW50Lm5mcyBiaW5hcnkgaW4KKyAgICB0aGUgdXRpbHMvbW91bnQgZGlyZWN0b3J5LiBUaGlzIGJpbmFyeSBjYW4gYmUgdXNlZCB0byBpbml0aWF0ZSBORlMgdjIsIHYzLAorICAgIG9yIHY0IG1vdW50cy4gVG8gaW5pdGlhdGUgYSB2NCBtb3VudCwgdGhlIGJpbmFyeSBtdXN0IGJlIGNhbGxlZAorICAgIG1vdW50Lm5mczQuICBUaGUgc3RhbmRhcmQgdGVjaG5pcXVlIGlzIHRvIGNyZWF0ZSBhIHN5bWxpbmsgY2FsbGVkCisgICAgbW91bnQubmZzNCB0byBtb3VudC5uZnMuCisKKyAgICBUaGlzIG1vdW50Lm5mcyBiaW5hcnkgc2hvdWxkIGJlIGluc3RhbGxlZCBhdCAvc2Jpbi9tb3VudC5uZnMgYXMgZm9sbG93czoKKworICAgICQgc3VkbyBjcCB1dGlscy9tb3VudC9tb3VudC5uZnMgL3NiaW4vbW91bnQubmZzCisKKyAgICBJbiB0aGlzIGxvY2F0aW9uLCBtb3VudC5uZnMgd2lsbCBiZSBpbnZva2VkIGF1dG9tYXRpY2FsbHkgZm9yIE5GUyBtb3VudHMKKyAgICBieSB0aGUgc3lzdGVtIG1vdW50IGNvbW1hbmQuCisKKyAgICBOT1RFOiBtb3VudC5uZnMgYW5kIHRoZXJlZm9yZSBuZnMtdXRpbHMtMS4xLjIgb3IgZ3JlYXRlciBpcyBvbmx5IG5lZWRlZAorICAgIG9uIHRoZSBORlMgY2xpZW50IG1hY2hpbmUuIFlvdSBkbyBub3QgbmVlZCB0aGlzIHNwZWNpZmljIHZlcnNpb24gb2YKKyAgICBuZnMtdXRpbHMgb24gdGhlIHNlcnZlci4gRnVydGhlcm1vcmUsIG9ubHkgdGhlIG1vdW50Lm5mcyBjb21tYW5kIGZyb20KKyAgICBuZnMtdXRpbHMtMS4xLjIgaXMgbmVlZGVkIG9uIHRoZSBjbGllbnQuCisKKyAgLSBJbnN0YWxsIGEgTGludXgga2VybmVsIHdpdGggTkZTL1JETUEKKworICAgIFRoZSBORlMvUkRNQSBjbGllbnQgYW5kIHNlcnZlciBhcmUgYm90aCBpbmNsdWRlZCBpbiB0aGUgbWFpbmxpbmUgTGludXgKKyAgICBrZXJuZWwgdmVyc2lvbiAyLjYuMjUgYW5kIGxhdGVyLiBUaGlzIGFuZCBvdGhlciB2ZXJzaW9ucyBvZiB0aGUgMi42IExpbnV4CisgICAga2VybmVsIGNhbiBiZSBmb3VuZCBhdDoKKworICAgIGZ0cDovL2Z0cC5rZXJuZWwub3JnL3B1Yi9saW51eC9rZXJuZWwvdjIuNi8KKworICAgIERvd25sb2FkIHRoZSBzb3VyY2VzIGFuZCBwbGFjZSB0aGVtIGluIGFuIGFwcHJvcHJpYXRlIGxvY2F0aW9uLgorCisgIC0gQ29uZmlndXJlIHRoZSBSRE1BIHN0YWNrCisKKyAgICBNYWtlIHN1cmUgeW91ciBrZXJuZWwgY29uZmlndXJhdGlvbiBoYXMgUkRNQSBzdXBwb3J0IGVuYWJsZWQuIFVuZGVyCisgICAgRGV2aWNlIERyaXZlcnMgLT4gSW5maW5pQmFuZCBzdXBwb3J0LCB1cGRhdGUgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uCisgICAgdG8gZW5hYmxlIEluZmluaUJhbmQgc3VwcG9ydCBbTk9URTogdGhlIG9wdGlvbiBuYW1lIGlzIG1pc2xlYWRpbmcuIEVuYWJsaW5nCisgICAgSW5maW5pQmFuZCBzdXBwb3J0IGlzIHJlcXVpcmVkIGZvciBhbGwgUkRNQSBkZXZpY2VzIChJQiwgaVdBUlAsIGV0Yy4pXS4KKworICAgIEVuYWJsZSB0aGUgYXBwcm9wcmlhdGUgSUIgSENBIHN1cHBvcnQgKG1seDQsIG10aGNhLCBlaGNhLCBpcGF0aCwgZXRjLikgb3IKKyAgICBpV0FSUCBhZGFwdGVyIHN1cHBvcnQgKGFtc28sIGN4Z2IzLCBldGMuKS4KKworICAgIElmIHlvdSBhcmUgdXNpbmcgSW5maW5pQmFuZCwgYmUgc3VyZSB0byBlbmFibGUgSVAtb3Zlci1JbmZpbmlCYW5kIHN1cHBvcnQuCisKKyAgLSBDb25maWd1cmUgdGhlIE5GUyBjbGllbnQgYW5kIHNlcnZlcgorCisgICAgWW91ciBrZXJuZWwgY29uZmlndXJhdGlvbiBtdXN0IGFsc28gaGF2ZSBORlMgZmlsZSBzeXN0ZW0gc3VwcG9ydCBhbmQvb3IKKyAgICBORlMgc2VydmVyIHN1cHBvcnQgZW5hYmxlZC4gVGhlc2UgYW5kIG90aGVyIE5GUyByZWxhdGVkIGNvbmZpZ3VyYXRpb24KKyAgICBvcHRpb25zIGNhbiBiZSBmb3VuZCB1bmRlciBGaWxlIFN5c3RlbXMgLT4gTmV0d29yayBGaWxlIFN5c3RlbXMuCisKKyAgLSBCdWlsZCwgaW5zdGFsbCwgcmVib290CisKKyAgICBUaGUgTkZTL1JETUEgY29kZSB3aWxsIGJlIGVuYWJsZWQgYXV0b21hdGljYWxseSBpZiBORlMgYW5kIFJETUEKKyAgICBhcmUgdHVybmVkIG9uLiBUaGUgTkZTL1JETUEgY2xpZW50IGFuZCBzZXJ2ZXIgYXJlIGNvbmZpZ3VyZWQgdmlhIHRoZSBoaWRkZW4KKyAgICBTVU5SUENfWFBSVF9SRE1BIGNvbmZpZyBvcHRpb24gdGhhdCBkZXBlbmRzIG9uIFNVTlJQQyBhbmQgSU5GSU5JQkFORC4gVGhlCisgICAgdmFsdWUgb2YgU1VOUlBDX1hQUlRfUkRNQSB3aWxsIGJlOgorCisgICAgIC0gTiBpZiBlaXRoZXIgU1VOUlBDIG9yIElORklOSUJBTkQgYXJlIE4sIGluIHRoaXMgY2FzZSB0aGUgTkZTL1JETUEgY2xpZW50CisgICAgICAgYW5kIHNlcnZlciB3aWxsIG5vdCBiZSBidWlsdAorICAgICAtIE0gaWYgYm90aCBTVU5SUEMgYW5kIElORklOSUJBTkQgYXJlIG9uIChNIG9yIFkpIGFuZCBhdCBsZWFzdCBvbmUgaXMgTSwKKyAgICAgICBpbiB0aGlzIGNhc2UgdGhlIE5GUy9SRE1BIGNsaWVudCBhbmQgc2VydmVyIHdpbGwgYmUgYnVpbHQgYXMgbW9kdWxlcworICAgICAtIFkgaWYgYm90aCBTVU5SUEMgYW5kIElORklOSUJBTkQgYXJlIFksIGluIHRoaXMgY2FzZSB0aGUgTkZTL1JETUEgY2xpZW50CisgICAgICAgYW5kIHNlcnZlciB3aWxsIGJlIGJ1aWx0IGludG8gdGhlIGtlcm5lbAorCisgICAgVGhlcmVmb3JlLCBpZiB5b3UgaGF2ZSBmb2xsb3dlZCB0aGUgc3RlcHMgYWJvdmUgYW5kIHR1cm5lZCBubyBORlMgYW5kIFJETUEsCisgICAgdGhlIE5GUy9SRE1BIGNsaWVudCBhbmQgc2VydmVyIHdpbGwgYmUgYnVpbHQuCisKKyAgICBCdWlsZCBhIG5ldyBrZXJuZWwsIGluc3RhbGwgaXQsIGJvb3QgaXQuCisKK0NoZWNrIFJETUEgYW5kIE5GUyBTZXR1cAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKyAgICBCZWZvcmUgY29uZmlndXJpbmcgdGhlIE5GUy9SRE1BIHNvZnR3YXJlLCBpdCBpcyBhIGdvb2QgaWRlYSB0byB0ZXN0CisgICAgeW91ciBuZXcga2VybmVsIHRvIGVuc3VyZSB0aGF0IHRoZSBrZXJuZWwgaXMgd29ya2luZyBjb3JyZWN0bHkuCisgICAgSW4gcGFydGljdWxhciwgaXQgaXMgYSBnb29kIGlkZWEgdG8gdmVyaWZ5IHRoYXQgdGhlIFJETUEgc3RhY2sKKyAgICBpcyBmdW5jdGlvbmluZyBhcyBleHBlY3RlZCBhbmQgc3RhbmRhcmQgTkZTIG92ZXIgVENQL0lQIGFuZC9vciBVRFAvSVAKKyAgICBpcyB3b3JraW5nIHByb3Blcmx5LgorCisgIC0gQ2hlY2sgUkRNQSBTZXR1cAorCisgICAgSWYgeW91IGJ1aWx0IHRoZSBSRE1BIGNvbXBvbmVudHMgYXMgbW9kdWxlcywgbG9hZCB0aGVtIGF0CisgICAgdGhpcyB0aW1lLiBGb3IgZXhhbXBsZSwgaWYgeW91IGFyZSB1c2luZyBhIE1lbGxhbm94IFRhdm9yL1NpbmFpL0FyYmVsCisgICAgY2FyZDoKKworICAgICQgbW9kcHJvYmUgaWJfbXRoY2EKKyAgICAkIG1vZHByb2JlIGliX2lwb2liCisKKyAgICBJZiB5b3UgYXJlIHVzaW5nIEluZmluaUJhbmQsIG1ha2Ugc3VyZSB0aGVyZSBpcyBhIFN1Ym5ldCBNYW5hZ2VyIChTTSkKKyAgICBydW5uaW5nIG9uIHRoZSBuZXR3b3JrLiBJZiB5b3VyIElCIHN3aXRjaCBoYXMgYW4gZW1iZWRkZWQgU00sIHlvdSBjYW4KKyAgICB1c2UgaXQuIE90aGVyd2lzZSwgeW91IHdpbGwgbmVlZCB0byBydW4gYW4gU00sIHN1Y2ggYXMgT3BlblNNLCBvbiBvbmUKKyAgICBvZiB5b3VyIGVuZCBub2Rlcy4KKworICAgIElmIGFuIFNNIGlzIHJ1bm5pbmcgb24geW91ciBuZXR3b3JrLCB5b3Ugc2hvdWxkIHNlZSB0aGUgZm9sbG93aW5nOgorCisgICAgJCBjYXQgL3N5cy9jbGFzcy9pbmZpbmliYW5kL2RyaXZlclgvcG9ydHMvMS9zdGF0ZQorICAgIDQ6IEFDVElWRQorCisgICAgd2hlcmUgZHJpdmVyWCBpcyBtdGhjYTAsIGlwYXRoNSwgZWhjYTMsIGV0Yy4KKworICAgIFRvIGZ1cnRoZXIgdGVzdCB0aGUgSW5maW5pQmFuZCBzb2Z0d2FyZSBzdGFjaywgdXNlIElQb0lCICh0aGlzCisgICAgYXNzdW1lcyB5b3UgaGF2ZSB0d28gSUIgaG9zdHMgbmFtZWQgaG9zdDEgYW5kIGhvc3QyKToKKworICAgIGhvc3QxJCBpcCBsaW5rIHNldCBkZXYgaWIwIHVwCisgICAgaG9zdDEkIGlwIGFkZHJlc3MgYWRkIGRldiBpYjAgYS5iLmMueAorICAgIGhvc3QyJCBpcCBsaW5rIHNldCBkZXYgaWIwIHVwCisgICAgaG9zdDIkIGlwIGFkZHJlc3MgYWRkIGRldiBpYjAgYS5iLmMueQorICAgIGhvc3QxJCBwaW5nIGEuYi5jLnkKKyAgICBob3N0MiQgcGluZyBhLmIuYy54CisKKyAgICBGb3Igb3RoZXIgZGV2aWNlIHR5cGVzLCBmb2xsb3cgdGhlIGFwcHJvcHJpYXRlIHByb2NlZHVyZXMuCisKKyAgLSBDaGVjayBORlMgU2V0dXAKKworICAgIEZvciB0aGUgTkZTIGNvbXBvbmVudHMgZW5hYmxlZCBhYm92ZSAoY2xpZW50IGFuZC9vciBzZXJ2ZXIpLAorICAgIHRlc3QgdGhlaXIgZnVuY3Rpb25hbGl0eSBvdmVyIHN0YW5kYXJkIEV0aGVybmV0IHVzaW5nIFRDUC9JUCBvciBVRFAvSVAuCisKK05GUy9SRE1BIFNldHVwCit+fn5+fn5+fn5+fn5+fgorCisgIFdlIHJlY29tbWVuZCB0aGF0IHlvdSB1c2UgdHdvIG1hY2hpbmVzLCBvbmUgdG8gYWN0IGFzIHRoZSBjbGllbnQgYW5kCisgIG9uZSB0byBhY3QgYXMgdGhlIHNlcnZlci4KKworICBPbmUgdGltZSBjb25maWd1cmF0aW9uOgorCisgIC0gT24gdGhlIHNlcnZlciBzeXN0ZW0sIGNvbmZpZ3VyZSB0aGUgL2V0Yy9leHBvcnRzIGZpbGUgYW5kCisgICAgc3RhcnQgdGhlIE5GUy9SRE1BIHNlcnZlci4KKworICAgIEV4cG9ydHMgZW50cmllcyB3aXRoIHRoZSBmb2xsb3dpbmcgZm9ybWF0cyBoYXZlIGJlZW4gdGVzdGVkOgorCisgICAgL3ZvbDAgICAxOTIuMTY4LjAuNDcoZnNpZD0wLHJ3LGFzeW5jLGluc2VjdXJlLG5vX3Jvb3Rfc3F1YXNoKQorICAgIC92b2wwICAgMTkyLjE2OC4wLjAvMjU1LjI1NS4yNTUuMChmc2lkPTAscncsYXN5bmMsaW5zZWN1cmUsbm9fcm9vdF9zcXVhc2gpCisKKyAgICBUaGUgSVAgYWRkcmVzcyhlcykgaXMoYXJlKSB0aGUgY2xpZW50J3MgSVBvSUIgYWRkcmVzcyBmb3IgYW4gSW5maW5pQmFuZAorICAgIEhDQSBvciB0aGUgY2xlaW50J3MgaVdBUlAgYWRkcmVzcyhlcykgZm9yIGFuIFJOSUMuCisKKyAgICBOT1RFOiBUaGUgImluc2VjdXJlIiBvcHRpb24gbXVzdCBiZSB1c2VkIGJlY2F1c2UgdGhlIE5GUy9SRE1BIGNsaWVudCBkb2VzCisgICAgbm90IHVzZSBhIHJlc2VydmVkIHBvcnQuCisKKyBFYWNoIHRpbWUgYSBtYWNoaW5lIGJvb3RzOgorCisgIC0gTG9hZCBhbmQgY29uZmlndXJlIHRoZSBSRE1BIGRyaXZlcnMKKworICAgIEZvciBJbmZpbmlCYW5kIHVzaW5nIGEgTWVsbGFub3ggYWRhcHRlcjoKKworICAgICQgbW9kcHJvYmUgaWJfbXRoY2EKKyAgICAkIG1vZHByb2JlIGliX2lwb2liCisgICAgJCBpcCBsaSBzZXQgZGV2IGliMCB1cAorICAgICQgaXAgYWRkciBhZGQgZGV2IGliMCBhLmIuYy5kCisKKyAgICBOT1RFOiB1c2UgdW5pcXVlIGFkZHJlc3NlcyBmb3IgdGhlIGNsaWVudCBhbmQgc2VydmVyCisKKyAgLSBTdGFydCB0aGUgTkZTIHNlcnZlcgorCisgICAgSWYgdGhlIE5GUy9SRE1BIHNlcnZlciB3YXMgYnVpbHQgYXMgYSBtb2R1bGUgKENPTkZJR19TVU5SUENfWFBSVF9SRE1BPW0gaW4KKyAgICBrZXJuZWwgY29uZmlnKSwgbG9hZCB0aGUgUkRNQSB0cmFuc3BvcnQgbW9kdWxlOgorCisgICAgJCBtb2Rwcm9iZSBzdmNyZG1hCisKKyAgICBSZWdhcmRsZXNzIG9mIGhvdyB0aGUgc2VydmVyIHdhcyBidWlsdCAobW9kdWxlIG9yIGJ1aWx0LWluKSwgc3RhcnQgdGhlCisgICAgc2VydmVyOgorCisgICAgJCAvZXRjL2luaXQuZC9uZnMgc3RhcnQKKworICAgIG9yCisKKyAgICAkIHNlcnZpY2UgbmZzIHN0YXJ0CisKKyAgICBJbnN0cnVjdCB0aGUgc2VydmVyIHRvIGxpc3RlbiBvbiB0aGUgUkRNQSB0cmFuc3BvcnQ6CisKKyAgICAkIGVjaG8gcmRtYSAyMDA0OSA+IC9wcm9jL2ZzL25mc2QvcG9ydGxpc3QKKworICAtIE9uIHRoZSBjbGllbnQgc3lzdGVtCisKKyAgICBJZiB0aGUgTkZTL1JETUEgY2xpZW50IHdhcyBidWlsdCBhcyBhIG1vZHVsZSAoQ09ORklHX1NVTlJQQ19YUFJUX1JETUE9bSBpbgorICAgIGtlcm5lbCBjb25maWcpLCBsb2FkIHRoZSBSRE1BIGNsaWVudCBtb2R1bGU6CisKKyAgICAkIG1vZHByb2JlIHhwcnRyZG1hLmtvCisKKyAgICBSZWdhcmRsZXNzIG9mIGhvdyB0aGUgY2xpZW50IHdhcyBidWlsdCAobW9kdWxlIG9yIGJ1aWx0LWluKSwgdXNlIHRoaXMKKyAgICBjb21tYW5kIHRvIG1vdW50IHRoZSBORlMvUkRNQSBzZXJ2ZXI6CisKKyAgICAkIG1vdW50IC1vIHJkbWEscG9ydD0yMDA0OSA8SVBvSUItc2VydmVyLW5hbWUtb3ItYWRkcmVzcz46LzxleHBvcnQ+IC9tbnQKKworICAgIFRvIHZlcmlmeSB0aGF0IHRoZSBtb3VudCBpcyB1c2luZyBSRE1BLCBydW4gImNhdCAvcHJvYy9tb3VudHMiIGFuZCBjaGVjaworICAgIHRoZSAicHJvdG8iIGZpZWxkIGZvciB0aGUgZ2l2ZW4gbW91bnQuCisKKyAgQ29uZ3JhdHVsYXRpb25zISBZb3UncmUgdXNpbmcgTkZTL1JETUEhCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL25mcy9uZnMudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uZnMvbmZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjU3MWM4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uZnMvbmZzLnR4dApAQCAtMCwwICsxLDEzNiBAQAorCitUaGUgTkZTIGNsaWVudAorPT09PT09PT09PT09PT0KKworVGhlIE5GUyB2ZXJzaW9uIDIgcHJvdG9jb2wgd2FzIGZpcnN0IGRvY3VtZW50ZWQgaW4gUkZDMTA5NCAoTWFyY2ggMTk4OSkuCitTaW5jZSB0aGVuIHR3byBtb3JlIG1ham9yIHJlbGVhc2VzIG9mIE5GUyBoYXZlIGJlZW4gcHVibGlzaGVkLCB3aXRoIE5GU3YzCitiZWluZyBkb2N1bWVudGVkIGluIFJGQzE4MTMgKEp1bmUgMTk5NSksIGFuZCBORlN2NCBpbiBSRkMzNTMwIChBcHJpbAorMjAwMykuCisKK1RoZSBMaW51eCBORlMgY2xpZW50IGN1cnJlbnRseSBzdXBwb3J0cyBhbGwgdGhlIGFib3ZlIHB1Ymxpc2hlZCB2ZXJzaW9ucywKK2FuZCB3b3JrIGlzIGluIHByb2dyZXNzIG9uIGFkZGluZyBzdXBwb3J0IGZvciBtaW5vciB2ZXJzaW9uIDEgb2YgdGhlIE5GU3Y0Citwcm90b2NvbC4KKworVGhlIHB1cnBvc2Ugb2YgdGhpcyBkb2N1bWVudCBpcyB0byBwcm92aWRlIGluZm9ybWF0aW9uIG9uIHNvbWUgb2YgdGhlCitzcGVjaWFsIGZlYXR1cmVzIG9mIHRoZSBORlMgY2xpZW50IHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgYnkgc3lzdGVtCithZG1pbmlzdHJhdG9ycy4KKworCitUaGUgbmZzNF91bmlxdWVfaWQgcGFyYW1ldGVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK05GU3Y0IHJlcXVpcmVzIGNsaWVudHMgdG8gaWRlbnRpZnkgdGhlbXNlbHZlcyB0byBzZXJ2ZXJzIHdpdGggYSB1bmlxdWUKK3N0cmluZy4gIEZpbGUgb3BlbiBhbmQgbG9jayBzdGF0ZSBzaGFyZWQgYmV0d2VlbiBvbmUgY2xpZW50IGFuZCBvbmUgc2VydmVyCitpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBpZGVudGl0eS4gIFRvIHN1cHBvcnQgcm9idXN0IE5GU3Y0IHN0YXRlIHJlY292ZXJ5CithbmQgdHJhbnNwYXJlbnQgc3RhdGUgbWlncmF0aW9uLCB0aGlzIGlkZW50aXR5IHN0cmluZyBtdXN0IG5vdCBjaGFuZ2UKK2Fjcm9zcyBjbGllbnQgcmVib290cy4KKworV2l0aG91dCBhbnkgb3RoZXIgaW50ZXJ2ZW50aW9uLCB0aGUgTGludXggY2xpZW50IHVzZXMgYSBzdHJpbmcgdGhhdCBjb250YWlucwordGhlIGxvY2FsIHN5c3RlbSdzIG5vZGUgbmFtZS4gIFN5c3RlbSBhZG1pbmlzdHJhdG9ycywgaG93ZXZlciwgb2Z0ZW4gZG8gbm90Cit0YWtlIGNhcmUgdG8gZW5zdXJlIHRoYXQgbm9kZSBuYW1lcyBhcmUgZnVsbHkgcXVhbGlmaWVkIGFuZCBkbyBub3QgY2hhbmdlCitvdmVyIHRoZSBsaWZldGltZSBvZiBhIGNsaWVudCBzeXN0ZW0uICBOb2RlIG5hbWVzIGNhbiBoYXZlIG90aGVyCithZG1pbmlzdHJhdGl2ZSByZXF1aXJlbWVudHMgdGhhdCByZXF1aXJlIHBhcnRpY3VsYXIgYmVoYXZpb3IgdGhhdCBkb2VzIG5vdAord29yayB3ZWxsIGFzIHBhcnQgb2YgYW4gbmZzX2NsaWVudF9pZDQgc3RyaW5nLgorCitUaGUgbmZzLm5mczRfdW5pcXVlX2lkIGJvb3QgcGFyYW1ldGVyIHNwZWNpZmllcyBhIHVuaXF1ZSBzdHJpbmcgdGhhdCBjYW4gYmUKK3VzZWQgaW5zdGVhZCBvZiBhIHN5c3RlbSdzIG5vZGUgbmFtZSB3aGVuIGFuIE5GUyBjbGllbnQgaWRlbnRpZmllcyBpdHNlbGYgdG8KK2Egc2VydmVyLiAgVGh1cywgaWYgdGhlIHN5c3RlbSdzIG5vZGUgbmFtZSBpcyBub3QgdW5pcXVlLCBvciBpdCBjaGFuZ2VzLCBpdHMKK25mcy5uZnM0X3VuaXF1ZV9pZCBzdGF5cyB0aGUgc2FtZSwgcHJldmVudGluZyBjb2xsaXNpb24gd2l0aCBvdGhlciBjbGllbnRzCitvciBsb3NzIG9mIHN0YXRlIGR1cmluZyBORlMgcmVib290IHJlY292ZXJ5IG9yIHRyYW5zcGFyZW50IHN0YXRlIG1pZ3JhdGlvbi4KKworVGhlIG5mcy5uZnM0X3VuaXF1ZV9pZCBzdHJpbmcgaXMgdHlwaWNhbGx5IGEgVVVJRCwgdGhvdWdoIGl0IGNhbiBjb250YWluCithbnl0aGluZyB0aGF0IGlzIGJlbGlldmVkIHRvIGJlIHVuaXF1ZSBhY3Jvc3MgYWxsIE5GUyBjbGllbnRzLiAgQW4KK25mczRfdW5pcXVlX2lkIHN0cmluZyBzaG91bGQgYmUgY2hvc2VuIHdoZW4gYSBjbGllbnQgc3lzdGVtIGlzIGluc3RhbGxlZCwKK2p1c3QgYXMgYSBzeXN0ZW0ncyByb290IGZpbGUgc3lzdGVtIGdldHMgYSBmcmVzaCBVVUlEIGluIGl0cyBsYWJlbCBhdAoraW5zdGFsbCB0aW1lLgorCitUaGUgc3RyaW5nIHNob3VsZCByZW1haW4gZml4ZWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgY2xpZW50LiAgSXQgY2FuIGJlCitjaGFuZ2VkIHNhZmVseSBpZiBjYXJlIGlzIHRha2VuIHRoYXQgdGhlIGNsaWVudCBzaHV0cyBkb3duIGNsZWFubHkgYW5kIGFsbAorb3V0c3RhbmRpbmcgTkZTdjQgc3RhdGUgaGFzIGV4cGlyZWQsIHRvIHByZXZlbnQgbG9zcyBvZiBORlN2NCBzdGF0ZS4KKworVGhpcyBzdHJpbmcgY2FuIGJlIHN0b3JlZCBpbiBhbiBORlMgY2xpZW50J3MgZ3J1Yi5jb25mLCBvciBpdCBjYW4gYmUgcHJvdmlkZWQKK3ZpYSBhIG5ldCBib290IGZhY2lsaXR5IHN1Y2ggYXMgUFhFLiAgSXQgbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG5mcy5rbworbW9kdWxlIHBhcmFtZXRlci4gIFNwZWNpZnlpbmcgYSB1bmlxdWlmaWVyIHN0cmluZyBpcyBub3Qgc3VwcG9ydCBmb3IgTkZTCitjbGllbnRzIHJ1bm5pbmcgaW4gY29udGFpbmVycy4KKworCitUaGUgRE5TIHJlc29sdmVyCis9PT09PT09PT09PT09PT09CisKK05GU3Y0IGFsbG93cyBmb3Igb25lIHNlcnZlciB0byByZWZlciB0aGUgTkZTIGNsaWVudCB0byBkYXRhIHRoYXQgaGFzIGJlZW4KK21pZ3JhdGVkIG9udG8gYW5vdGhlciBzZXJ2ZXIgYnkgbWVhbnMgb2YgdGhlIHNwZWNpYWwgImZzX2xvY2F0aW9ucyIKK2F0dHJpYnV0ZS4gU2VlCisJaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzUzMCNzZWN0aW9uLTYKK2FuZAorCWh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtbmZzdjQtcmVmZXJyYWxzLTAwCisKK1RoZSBmc19sb2NhdGlvbnMgaW5mb3JtYXRpb24gY2FuIHRha2UgdGhlIGZvcm0gb2YgZWl0aGVyIGFuIGlwIGFkZHJlc3MgYW5kCithIHBhdGgsIG9yIGEgRE5TIGhvc3RuYW1lIGFuZCBhIHBhdGguIFRoZSBsYXR0ZXIgcmVxdWlyZXMgdGhlIE5GUyBjbGllbnQgdG8KK2RvIGEgRE5TIGxvb2t1cCBpbiBvcmRlciB0byBtb3VudCB0aGUgbmV3IHZvbHVtZSwgYW5kIGhlbmNlIHRoZSBuZWVkIGZvciBhbgordXBjYWxsIHRvIGFsbG93IHVzZXJsYW5kIHRvIHByb3ZpZGUgdGhpcyBzZXJ2aWNlLgorCitBc3N1bWluZyB0aGF0IHRoZSB1c2VyIGhhcyB0aGUgJ3JwY19waXBlZnMnIGZpbGVzeXN0ZW0gbW91bnRlZCBpbiB0aGUgdXN1YWwKKy92YXIvbGliL25mcy9ycGNfcGlwZWZzLCB0aGUgdXBjYWxsIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcgc3RlcHM6CisKKyAgICgxKSBUaGUgcHJvY2VzcyBjaGVja3MgdGhlIGRuc19yZXNvbHZlIGNhY2hlIHRvIHNlZSBpZiBpdCBjb250YWlucyBhCisgICAgICAgdmFsaWQgZW50cnkuIElmIHNvLCBpdCByZXR1cm5zIHRoYXQgZW50cnkgYW5kIGV4aXRzLgorCisgICAoMikgSWYgbm8gdmFsaWQgZW50cnkgZXhpc3RzLCB0aGUgaGVscGVyIHNjcmlwdCAnL3NiaW4vbmZzX2NhY2hlX2dldGVudCcKKyAgICAgICAobWF5IGJlIGNoYW5nZWQgdXNpbmcgdGhlICduZnMuY2FjaGVfZ2V0ZW50JyBrZXJuZWwgYm9vdCBwYXJhbWV0ZXIpCisgICAgICAgaXMgcnVuLCB3aXRoIHR3byBhcmd1bWVudHM6CisJCS0gdGhlIGNhY2hlIG5hbWUsICJkbnNfcmVzb2x2ZSIKKwkJLSB0aGUgaG9zdG5hbWUgdG8gcmVzb2x2ZQorCisgICAoMykgQWZ0ZXIgbG9va2luZyB1cCB0aGUgY29ycmVzcG9uZGluZyBpcCBhZGRyZXNzLCB0aGUgaGVscGVyIHNjcmlwdAorICAgICAgIHdyaXRlcyB0aGUgcmVzdWx0IGludG8gdGhlIHJwY19waXBlZnMgcHNldWRvLWZpbGUKKyAgICAgICAnL3Zhci9saWIvbmZzL3JwY19waXBlZnMvY2FjaGUvZG5zX3Jlc29sdmUvY2hhbm5lbCcKKyAgICAgICBpbiB0aGUgZm9sbG93aW5nICh0ZXh0KSBmb3JtYXQ6CisKKwkJIjxpcCBhZGRyZXNzPiA8aG9zdG5hbWU+IDx0dGw+XG4iCisKKyAgICAgICBXaGVyZSA8aXAgYWRkcmVzcz4gaXMgaW4gdGhlIHVzdWFsIElQdjQgKDEyMy40NTYuNzguOTApIG9yIElQdjYKKyAgICAgICAoZmZlZTpkZGNjOmJiYWE6OTk4ODo3NzY2OjU1NDQ6MzMyMjoxMTAwLCBmZmVlOjoxMTAwLCAuLi4pIGZvcm1hdC4KKyAgICAgICA8aG9zdG5hbWU+IGlzIGlkZW50aWNhbCB0byB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBoZWxwZXIKKyAgICAgICBzY3JpcHQsIGFuZCA8dHRsPiBpcyB0aGUgJ3RpbWUgdG8gbGl2ZScgb2YgdGhpcyBjYWNoZSBlbnRyeSAoaW4KKyAgICAgICB1bml0cyBvZiBzZWNvbmRzKS4KKworICAgICAgIE5vdGU6IElmIDxpcCBhZGRyZXNzPiBpcyBpbnZhbGlkLCBzYXkgdGhlIHN0cmluZyAiMCIsIHRoZW4gYSBuZWdhdGl2ZQorICAgICAgIGVudHJ5IGlzIGNyZWF0ZWQsIHdoaWNoIHdpbGwgY2F1c2UgdGhlIGtlcm5lbCB0byB0cmVhdCB0aGUgaG9zdG5hbWUKKyAgICAgICBhcyBoYXZpbmcgbm8gdmFsaWQgRE5TIHRyYW5zbGF0aW9uLgorCisKKworCitBIGJhc2ljIHNhbXBsZSAvc2Jpbi9uZnNfY2FjaGVfZ2V0ZW50Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMhL2Jpbi9iYXNoCisjCit0dGw9NjAwCisjCitjdXQ9L3Vzci9iaW4vY3V0CitnZXRlbnQ9L3Vzci9iaW4vZ2V0ZW50CitycGNfcGlwZWZzPS92YXIvbGliL25mcy9ycGNfcGlwZWZzCisjCitkaWUoKQoreworCWVjaG8gIlVzYWdlOiAkMCBjYWNoZV9uYW1lIGVudHJ5X25hbWUiCisJZXhpdCAxCit9CisKK1sgJCMgLWx0IDIgXSAmJiBkaWUKK2NhY2hlbmFtZT0iJDEiCitjYWNoZV9wYXRoPSR7cnBjX3BpcGVmc30vY2FjaGUvJHtjYWNoZW5hbWV9L2NoYW5uZWwKKworY2FzZSAiJHtjYWNoZW5hbWV9IiBpbgorCWRuc19yZXNvbHZlKQorCQluYW1lPSIkMiIKKwkJcmVzdWx0PSIkKCR7Z2V0ZW50fSBob3N0cyAke25hbWV9IHwgJHtjdXR9IC1mMSAtZFwgKSIKKwkJWyAteiAiJHtyZXN1bHR9IiBdICYmIHJlc3VsdD0iMCIKKwkJOzsKKwkqKQorCQlkaWUKKwkJOzsKK2VzYWMKK2VjaG8gIiR7cmVzdWx0fSAke25hbWV9ICR7dHRsfSIgPiR7Y2FjaGVfcGF0aH0KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uZnMvbmZzNDEtc2VydmVyLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzL25mczQxLXNlcnZlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgyYTU5ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzL25mczQxLXNlcnZlci50eHQKQEAgLTAsMCArMSwxNzMgQEAKK05GU3Y0LjEgU2VydmVyIEltcGxlbWVudGF0aW9uCisKK1NlcnZlciBzdXBwb3J0IGZvciBtaW5vcnZlcnNpb24gMSBjYW4gYmUgY29udHJvbGxlZCB1c2luZyB0aGUKKy9wcm9jL2ZzL25mc2QvdmVyc2lvbnMgY29udHJvbCBmaWxlLiAgVGhlIHN0cmluZyBvdXRwdXQgcmV0dXJuZWQKK2J5IHJlYWRpbmcgdGhpcyBmaWxlIHdpbGwgY29udGFpbiBlaXRoZXIgIis0LjEiIG9yICItNC4xIgorY29ycmVzcG9uZGluZ2x5LgorCitDdXJyZW50bHksIHNlcnZlciBzdXBwb3J0IGZvciBtaW5vcnZlcnNpb24gMSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCitJdCBjYW4gYmUgZGlzYWJsZWQgYXQgcnVuIHRpbWUgYnkgd3JpdGluZyB0aGUgc3RyaW5nICItNC4xIiB0bwordGhlIC9wcm9jL2ZzL25mc2QvdmVyc2lvbnMgY29udHJvbCBmaWxlLiAgTm90ZSB0aGF0IHRvIHdyaXRlIHRoaXMKK2NvbnRyb2wgZmlsZSwgdGhlIG5mc2Qgc2VydmljZSBtdXN0IGJlIHRha2VuIGRvd24uICBZb3UgY2FuIHVzZSBycGMubmZzZAorZm9yIHRoaXM7IHNlZSBycGMubmZzZCg4KS4KKworKFdhcm5pbmc6IG9sZGVyIHNlcnZlcnMgd2lsbCBpbnRlcnByZXQgIis0LjEiIGFuZCAiLTQuMSIgYXMgIis0IiBhbmQKKyItNCIsIHJlc3BlY3RpdmVseS4gIFRoZXJlZm9yZSwgY29kZSBtZWFudCB0byB3b3JrIG9uIGJvdGggbmV3IGFuZCBvbGQKK2tlcm5lbHMgbXVzdCB0dXJuIDQuMSBvbiBvciBvZmYgKmJlZm9yZSogdHVybmluZyBzdXBwb3J0IGZvciB2ZXJzaW9uIDQKK29uIG9yIG9mZjsgcnBjLm5mc2QgZG9lcyB0aGlzIGNvcnJlY3RseS4pCisKK1RoZSBORlN2NCBtaW5vcnZlcnNpb24gMSAoTkZTdjQuMSkgaW1wbGVtZW50YXRpb24gaW4gbmZzZCBpcyBiYXNlZAorb24gUkZDIDU2NjEuCisKK0Zyb20gdGhlIG1hbnkgbmV3IGZlYXR1cmVzIGluIE5GU3Y0LjEgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24KK2ZvY3VzZXMgb24gdGhlIG1hbmRhdG9yeS10by1pbXBsZW1lbnQgTkZTdjQuMSBTZXNzaW9ucywgcHJvdmlkaW5nCisiZXhhY3RseSBvbmNlIiBzZW1hbnRpY3MgYW5kIGJldHRlciBjb250cm9sIGFuZCB0aHJvdHRsaW5nIG9mIHRoZQorcmVzb3VyY2VzIGFsbG9jYXRlZCBmb3IgZWFjaCBjbGllbnQuCisKK1RoZSB0YWJsZSBiZWxvdywgdGFrZW4gZnJvbSB0aGUgTkZTdjQuMSBkb2N1bWVudCwgbGlzdHMKK3RoZSBvcGVyYXRpb25zIHRoYXQgYXJlIG1hbmRhdG9yeSB0byBpbXBsZW1lbnQgKFJFUSksIG9wdGlvbmFsCisoT1BUKSwgYW5kIE5GU3Y0LjAgb3BlcmF0aW9ucyB0aGF0IGFyZSByZXF1aXJlZCBub3QgdG8gaW1wbGVtZW50IChNTkkpCitpbiBtaW5vciB2ZXJzaW9uIDEuICBUaGUgZmlyc3QgY29sdW1uIGluZGljYXRlcyB0aGUgb3BlcmF0aW9ucyB0aGF0CithcmUgbm90IHN1cHBvcnRlZCB5ZXQgYnkgdGhlIGxpbnV4IHNlcnZlciBpbXBsZW1lbnRhdGlvbi4KKworVGhlIE9QVElPTkFMIGZlYXR1cmVzIGlkZW50aWZpZWQgYW5kIHRoZWlyIGFiYnJldmlhdGlvbnMgYXJlIGFzIGZvbGxvd3M6CisJcE5GUwlQYXJhbGxlbCBORlMKKwlGREVMRwlGaWxlIERlbGVnYXRpb25zCisJRERFTEcJRGlyZWN0b3J5IERlbGVnYXRpb25zCisKK1RoZSBmb2xsb3dpbmcgYWJicmV2aWF0aW9ucyBpbmRpY2F0ZSB0aGUgbGludXggc2VydmVyIGltcGxlbWVudGF0aW9uIHN0YXR1cy4KKwlJCUltcGxlbWVudGVkIE5GU3Y0LjEgb3BlcmF0aW9ucy4KKwlOUwlOb3QgU3VwcG9ydGVkLgorCU5TKglVbmltcGxlbWVudGVkIG9wdGlvbmFsIGZlYXR1cmUuCisKK09wZXJhdGlvbnMKKworICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgICB8IE9wZXJhdGlvbiAgICAgICAgICAgIHwgUkVRLCBSRUMsICB8IEZlYXR1cmUgICAgICB8IERlZmluaXRpb24gICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgfCBPUFQsIG9yICAgIHwgKFJFUSwgUkVDLCAgIHwgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICB8IE1OSSAgICAgICAgfCBvciBPUFQpICAgICAgfCAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgQUNDRVNTICAgICAgICAgICAgICAgfCBSRVEgICAgICAgIHwgICAgICAgICAgICAgIHwgU2VjdGlvbiAxOC4xICAgfAorSSAgfCBCQUNLQ0hBTk5FTF9DVEwgICAgICB8IFJFUSAgICAgICAgfCAgICAgICAgICAgICAgfCBTZWN0aW9uIDE4LjMzICB8CitJICB8IEJJTkRfQ09OTl9UT19TRVNTSU9OIHwgUkVRICAgICAgICB8ICAgICAgICAgICAgICB8IFNlY3Rpb24gMTguMzQgIHwKKyAgIHwgQ0xPU0UgICAgICAgICAgICAgICAgfCBSRVEgICAgICAgIHwgICAgICAgICAgICAgIHwgU2VjdGlvbiAxOC4yICAgfAorICAgfCBDT01NSVQgICAgICAgICAgICAgICB8IFJFUSAgICAgICAgfCAgICAgICAgICAgICAgfCBTZWN0aW9uIDE4LjMgICB8CisgICB8IENSRUFURSAgICAgICAgICAgICAgIHwgUkVRICAgICAgICB8ICAgICAgICAgICAgICB8IFNlY3Rpb24gMTguNCAgIHwKK0kgIHwgQ1JFQVRFX1NFU1NJT04gICAgICAgfCBSRVEgICAgICAgIHwgICAgICAgICAgICAgIHwgU2VjdGlvbiAxOC4zNiAgfAorTlMqfCBERUxFR1BVUkdFICAgICAgICAgICB8IE9QVCAgICAgICAgfCBGREVMRyAoUkVRKSAgfCBTZWN0aW9uIDE4LjUgICB8CisgICB8IERFTEVHUkVUVVJOICAgICAgICAgIHwgT1BUICAgICAgICB8IEZERUxHLCAgICAgICB8IFNlY3Rpb24gMTguNiAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgRERFTEcsIHBORlMgIHwgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAoUkVRKSAgICAgICAgfCAgICAgICAgICAgICAgICB8CitJICB8IERFU1RST1lfQ0xJRU5USUQgICAgIHwgUkVRICAgICAgICB8ICAgICAgICAgICAgICB8IFNlY3Rpb24gMTguNTAgIHwKK0kgIHwgREVTVFJPWV9TRVNTSU9OICAgICAgfCBSRVEgICAgICAgIHwgICAgICAgICAgICAgIHwgU2VjdGlvbiAxOC4zNyAgfAorSSAgfCBFWENIQU5HRV9JRCAgICAgICAgICB8IFJFUSAgICAgICAgfCAgICAgICAgICAgICAgfCBTZWN0aW9uIDE4LjM1ICB8CitJICB8IEZSRUVfU1RBVEVJRCAgICAgICAgIHwgUkVRICAgICAgICB8ICAgICAgICAgICAgICB8IFNlY3Rpb24gMTguMzggIHwKKyAgIHwgR0VUQVRUUiAgICAgICAgICAgICAgfCBSRVEgICAgICAgIHwgICAgICAgICAgICAgIHwgU2VjdGlvbiAxOC43ICAgfAorSSAgfCBHRVRERVZJQ0VJTkZPICAgICAgICB8IE9QVCAgICAgICAgfCBwTkZTIChSRVEpICAgfCBTZWN0aW9uIDE4LjQwICB8CitOUyp8IEdFVERFVklDRUxJU1QgICAgICAgIHwgT1BUICAgICAgICB8IHBORlMgKE9QVCkgICB8IFNlY3Rpb24gMTguNDEgIHwKKyAgIHwgR0VURkggICAgICAgICAgICAgICAgfCBSRVEgICAgICAgIHwgICAgICAgICAgICAgIHwgU2VjdGlvbiAxOC44ICAgfAorTlMqfCBHRVRfRElSX0RFTEVHQVRJT04gICB8IE9QVCAgICAgICAgfCBEREVMRyAoUkVRKSAgfCBTZWN0aW9uIDE4LjM5ICB8CitJICB8IExBWU9VVENPTU1JVCAgICAgICAgIHwgT1BUICAgICAgICB8IHBORlMgKFJFUSkgICB8IFNlY3Rpb24gMTguNDIgIHwKK0kgIHwgTEFZT1VUR0VUICAgICAgICAgICAgfCBPUFQgICAgICAgIHwgcE5GUyAoUkVRKSAgIHwgU2VjdGlvbiAxOC40MyAgfAorSSAgfCBMQVlPVVRSRVRVUk4gICAgICAgICB8IE9QVCAgICAgICAgfCBwTkZTIChSRVEpICAgfCBTZWN0aW9uIDE4LjQ0ICB8CisgICB8IExJTksgICAgICAgICAgICAgICAgIHwgT1BUICAgICAgICB8ICAgICAgICAgICAgICB8IFNlY3Rpb24gMTguOSAgIHwKKyAgIHwgTE9DSyAgICAgICAgICAgICAgICAgfCBSRVEgICAgICAgIHwgICAgICAgICAgICAgIHwgU2VjdGlvbiAxOC4xMCAgfAorICAgfCBMT0NLVCAgICAgICAgICAgICAgICB8IFJFUSAgICAgICAgfCAgICAgICAgICAgICAgfCBTZWN0aW9uIDE4LjExICB8CisgICB8IExPQ0tVICAgICAgICAgICAgICAgIHwgUkVRICAgICAgICB8ICAgICAgICAgICAgICB8IFNlY3Rpb24gMTguMTIgIHwKKyAgIHwgTE9PS1VQICAgICAgICAgICAgICAgfCBSRVEgICAgICAgIHwgICAgICAgICAgICAgIHwgU2VjdGlvbiAxOC4xMyAgfAorICAgfCBMT09LVVBQICAgICAgICAgICAgICB8IFJFUSAgICAgICAgfCAgICAgICAgICAgICAgfCBTZWN0aW9uIDE4LjE0ICB8CisgICB8IE5WRVJJRlkgICAgICAgICAgICAgIHwgUkVRICAgICAgICB8ICAgICAgICAgICAgICB8IFNlY3Rpb24gMTguMTUgIHwKKyAgIHwgT1BFTiAgICAgICAgICAgICAgICAgfCBSRVEgICAgICAgIHwgICAgICAgICAgICAgIHwgU2VjdGlvbiAxOC4xNiAgfAorTlMqfCBPUEVOQVRUUiAgICAgICAgICAgICB8IE9QVCAgICAgICAgfCAgICAgICAgICAgICAgfCBTZWN0aW9uIDE4LjE3ICB8CisgICB8IE9QRU5fQ09ORklSTSAgICAgICAgIHwgTU5JICAgICAgICB8ICAgICAgICAgICAgICB8IE4vQSAgICAgICAgICAgIHwKKyAgIHwgT1BFTl9ET1dOR1JBREUgICAgICAgfCBSRVEgICAgICAgIHwgICAgICAgICAgICAgIHwgU2VjdGlvbiAxOC4xOCAgfAorICAgfCBQVVRGSCAgICAgICAgICAgICAgICB8IFJFUSAgICAgICAgfCAgICAgICAgICAgICAgfCBTZWN0aW9uIDE4LjE5ICB8CisgICB8IFBVVFBVQkZIICAgICAgICAgICAgIHwgUkVRICAgICAgICB8ICAgICAgICAgICAgICB8IFNlY3Rpb24gMTguMjAgIHwKKyAgIHwgUFVUUk9PVEZIICAgICAgICAgICAgfCBSRVEgICAgICAgIHwgICAgICAgICAgICAgIHwgU2VjdGlvbiAxOC4yMSAgfAorICAgfCBSRUFEICAgICAgICAgICAgICAgICB8IFJFUSAgICAgICAgfCAgICAgICAgICAgICAgfCBTZWN0aW9uIDE4LjIyICB8CisgICB8IFJFQURESVIgICAgICAgICAgICAgIHwgUkVRICAgICAgICB8ICAgICAgICAgICAgICB8IFNlY3Rpb24gMTguMjMgIHwKKyAgIHwgUkVBRExJTksgICAgICAgICAgICAgfCBPUFQgICAgICAgIHwgICAgICAgICAgICAgIHwgU2VjdGlvbiAxOC4yNCAgfAorICAgfCBSRUNMQUlNX0NPTVBMRVRFICAgICB8IFJFUSAgICAgICAgfCAgICAgICAgICAgICAgfCBTZWN0aW9uIDE4LjUxICB8CisgICB8IFJFTEVBU0VfTE9DS09XTkVSICAgIHwgTU5JICAgICAgICB8ICAgICAgICAgICAgICB8IE4vQSAgICAgICAgICAgIHwKKyAgIHwgUkVNT1ZFICAgICAgICAgICAgICAgfCBSRVEgICAgICAgIHwgICAgICAgICAgICAgIHwgU2VjdGlvbiAxOC4yNSAgfAorICAgfCBSRU5BTUUgICAgICAgICAgICAgICB8IFJFUSAgICAgICAgfCAgICAgICAgICAgICAgfCBTZWN0aW9uIDE4LjI2ICB8CisgICB8IFJFTkVXICAgICAgICAgICAgICAgIHwgTU5JICAgICAgICB8ICAgICAgICAgICAgICB8IE4vQSAgICAgICAgICAgIHwKKyAgIHwgUkVTVE9SRUZIICAgICAgICAgICAgfCBSRVEgICAgICAgIHwgICAgICAgICAgICAgIHwgU2VjdGlvbiAxOC4yNyAgfAorICAgfCBTQVZFRkggICAgICAgICAgICAgICB8IFJFUSAgICAgICAgfCAgICAgICAgICAgICAgfCBTZWN0aW9uIDE4LjI4ICB8CisgICB8IFNFQ0lORk8gICAgICAgICAgICAgIHwgUkVRICAgICAgICB8ICAgICAgICAgICAgICB8IFNlY3Rpb24gMTguMjkgIHwKK0kgIHwgU0VDSU5GT19OT19OQU1FICAgICAgfCBSRUMgICAgICAgIHwgcE5GUyBmaWxlcyAgIHwgU2VjdGlvbiAxOC40NSwgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCBsYXlvdXQgKFJFUSkgfCBTZWN0aW9uIDEzLjEyICB8CitJICB8IFNFUVVFTkNFICAgICAgICAgICAgIHwgUkVRICAgICAgICB8ICAgICAgICAgICAgICB8IFNlY3Rpb24gMTguNDYgIHwKKyAgIHwgU0VUQVRUUiAgICAgICAgICAgICAgfCBSRVEgICAgICAgIHwgICAgICAgICAgICAgIHwgU2VjdGlvbiAxOC4zMCAgfAorICAgfCBTRVRDTElFTlRJRCAgICAgICAgICB8IE1OSSAgICAgICAgfCAgICAgICAgICAgICAgfCBOL0EgICAgICAgICAgICB8CisgICB8IFNFVENMSUVOVElEX0NPTkZJUk0gIHwgTU5JICAgICAgICB8ICAgICAgICAgICAgICB8IE4vQSAgICAgICAgICAgIHwKK05TIHwgU0VUX1NTViAgICAgICAgICAgICAgfCBSRVEgICAgICAgIHwgICAgICAgICAgICAgIHwgU2VjdGlvbiAxOC40NyAgfAorSSAgfCBURVNUX1NUQVRFSUQgICAgICAgICB8IFJFUSAgICAgICAgfCAgICAgICAgICAgICAgfCBTZWN0aW9uIDE4LjQ4ICB8CisgICB8IFZFUklGWSAgICAgICAgICAgICAgIHwgUkVRICAgICAgICB8ICAgICAgICAgICAgICB8IFNlY3Rpb24gMTguMzEgIHwKK05TKnwgV0FOVF9ERUxFR0FUSU9OICAgICAgfCBPUFQgICAgICAgIHwgRkRFTEcgKE9QVCkgIHwgU2VjdGlvbiAxOC40OSAgfAorICAgfCBXUklURSAgICAgICAgICAgICAgICB8IFJFUSAgICAgICAgfCAgICAgICAgICAgICAgfCBTZWN0aW9uIDE4LjMyICB8CisKK0NhbGxiYWNrIE9wZXJhdGlvbnMKKworICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rCisgICB8IE9wZXJhdGlvbiAgICAgICAgICAgICAgIHwgUkVRLCBSRUMsIHwgRmVhdHVyZSAgICAgfCBEZWZpbml0aW9uICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBPUFQsIG9yICAgfCAoUkVRLCBSRUMsICB8ICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IE1OSSAgICAgICB8IG9yIE9QVCkgICAgIHwgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgQ0JfR0VUQVRUUiAgICAgICAgICAgICAgfCBPUFQgICAgICAgfCBGREVMRyAoUkVRKSB8IFNlY3Rpb24gMjAuMSAgfAorSSAgfCBDQl9MQVlPVVRSRUNBTEwgICAgICAgICB8IE9QVCAgICAgICB8IHBORlMgKFJFUSkgIHwgU2VjdGlvbiAyMC4zICB8CitOUyp8IENCX05PVElGWSAgICAgICAgICAgICAgIHwgT1BUICAgICAgIHwgRERFTEcgKFJFUSkgfCBTZWN0aW9uIDIwLjQgIHwKK05TKnwgQ0JfTk9USUZZX0RFVklDRUlEICAgICAgfCBPUFQgICAgICAgfCBwTkZTIChPUFQpICB8IFNlY3Rpb24gMjAuMTIgfAorTlMqfCBDQl9OT1RJRllfTE9DSyAgICAgICAgICB8IE9QVCAgICAgICB8ICAgICAgICAgICAgIHwgU2VjdGlvbiAyMC4xMSB8CitOUyp8IENCX1BVU0hfREVMRUcgICAgICAgICAgIHwgT1BUICAgICAgIHwgRkRFTEcgKE9QVCkgfCBTZWN0aW9uIDIwLjUgIHwKKyAgIHwgQ0JfUkVDQUxMICAgICAgICAgICAgICAgfCBPUFQgICAgICAgfCBGREVMRywgICAgICB8IFNlY3Rpb24gMjAuMiAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IERERUxHLCBwTkZTIHwgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgKFJFUSkgICAgICAgfCAgICAgICAgICAgICAgIHwKK05TKnwgQ0JfUkVDQUxMX0FOWSAgICAgICAgICAgfCBPUFQgICAgICAgfCBGREVMRywgICAgICB8IFNlY3Rpb24gMjAuNiAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IERERUxHLCBwTkZTIHwgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgKFJFUSkgICAgICAgfCAgICAgICAgICAgICAgIHwKK05TIHwgQ0JfUkVDQUxMX1NMT1QgICAgICAgICAgfCBSRVEgICAgICAgfCAgICAgICAgICAgICB8IFNlY3Rpb24gMjAuOCAgfAorTlMqfCBDQl9SRUNBTExBQkxFX09CSl9BVkFJTCB8IE9QVCAgICAgICB8IERERUxHLCBwTkZTIHwgU2VjdGlvbiAyMC43ICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgKFJFUSkgICAgICAgfCAgICAgICAgICAgICAgIHwKK0kgIHwgQ0JfU0VRVUVOQ0UgICAgICAgICAgICAgfCBPUFQgICAgICAgfCBGREVMRywgICAgICB8IFNlY3Rpb24gMjAuOSAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IERERUxHLCBwTkZTIHwgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgKFJFUSkgICAgICAgfCAgICAgICAgICAgICAgIHwKK05TKnwgQ0JfV0FOVFNfQ0FOQ0VMTEVEICAgICAgfCBPUFQgICAgICAgfCBGREVMRywgICAgICB8IFNlY3Rpb24gMjAuMTAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IERERUxHLCBwTkZTIHwgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgKFJFUSkgICAgICAgfCAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKworCitJbXBsZW1lbnRhdGlvbiBub3RlczoKKworU1NWOgorKiBUaGUgc3BlYyBjbGFpbXMgdGhpcyBpcyBtYW5kYXRvcnksIGJ1dCB3ZSBkb24ndCBhY3R1YWxseSBrbm93IG9mIGFueQorICBpbXBsZW1lbnRhdGlvbnMsIHNvIHdlJ3JlIGlnbm9yaW5nIGl0IGZvciBub3cuICBUaGUgc2VydmVyIHJldHVybnMKKyAgTkZTNEVSUl9FTkNSX0FMR19VTlNVUFAgb24gRVhDSEFOR0VfSUQsIHdoaWNoIHNob3VsZCBiZSBmdXR1cmUtcHJvb2YuCisKK0dTUyBvbiB0aGUgYmFja2NoYW5uZWw6CisqIEFnYWluLCB0aGVvcmV0aWNhbGx5IHJlcXVpcmVkIGJ1dCBub3Qgd2lkZWx5IGltcGxlbWVudGVkIChpbgorICBwYXJ0aWN1bGFyLCB0aGUgY3VycmVudCBMaW51eCBjbGllbnQgZG9lc24ndCByZXF1ZXN0IGl0KS4gIFdlIHJldHVybgorICBORlM0RVJSX0VOQ1JfQUxHX1VOU1VQUCBvbiBDUkVBVEVfU0VTU0lPTi4KKworREVMRUdQVVJHRToKKyogbWFuZGF0b3J5IG9ubHkgZm9yIHNlcnZlcnMgdGhhdCBzdXBwb3J0IENMQUlNX0RFTEVHQVRFX1BSRVYgYW5kL29yCisgIENMQUlNX0RFTEVHX1BSRVZfRkggKHdoaWNoIGFsbG93cyBjbGllbnRzIHRvIGtlZXAgZGVsZWdhdGlvbnMgdGhhdAorICBwZXJzaXN0IGFjcm9zcyBjbGllbnQgcmVib290cykuICBUaHVzIHdlIG5lZWQgbm90IGltcGxlbWVudCB0aGlzIGZvcgorICBub3cuCisKK0VYQ0hBTkdFX0lEOgorKiBpbXBsZW1lbnRhdGlvbiBpZHMgYXJlIGlnbm9yZWQKKworQ1JFQVRFX1NFU1NJT046CisqIGJhY2tjaGFubmVsIGF0dHJpYnV0ZXMgYXJlIGlnbm9yZWQKKworU0VRVUVOQ0U6CisqIG5vIHN1cHBvcnQgZm9yIGR5bmFtaWMgc2xvdCB0YWJsZSByZW5lZ290aWF0aW9uIChvcHRpb25hbCkKKworTm9uc3RhbmRhcmQgY29tcG91bmQgbGltaXRhdGlvbnM6CisqIE5vIHN1cHBvcnQgZm9yIGEgc2Vzc2lvbnMgZm9yZSBjaGFubmVsIFJQQyBjb21wb3VuZCB0aGF0IHJlcXVpcmVzIGJvdGggYQorICBjYV9tYXhyZXF1ZXN0c2l6ZSByZXF1ZXN0IGFuZCBhIGNhX21heHJlc3BvbnNlc2l6ZSByZXBseSwgc28gd2UgbWF5CisgIGZhaWwgdG8gbGl2ZSB1cCB0byB0aGUgcHJvbWlzZSB3ZSBtYWRlIGluIENSRUFURV9TRVNTSU9OIGZvcmUgY2hhbm5lbAorICBuZWdvdGlhdGlvbi4KKworU2VlIGFsc28gaHR0cDovL3dpa2kubGludXgtbmZzLm9yZy93aWtpL2luZGV4LnBocC9TZXJ2ZXJfNC4wX2FuZF80LjFfaXNzdWVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uZnMvbmZzZC1hZG1pbi1pbnRlcmZhY2VzLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzL25mc2QtYWRtaW4taW50ZXJmYWNlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZhOTZmYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzL25mc2QtYWRtaW4taW50ZXJmYWNlcy50eHQKQEAgLTAsMCArMSw0MSBAQAorQWRtaW5pc3RyYXRpdmUgaW50ZXJmYWNlcyBmb3IgbmZzZAorXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitOb3RlIHRoYXQgbm9ybWFsbHkgdGhlc2UgaW50ZXJmYWNlcyBhcmUgdXNlZCBvbmx5IGJ5IHRoZSB1dGlsaXRpZXMgaW4KK25mcy11dGlscy4KKworbmZzZCBpcyBjb250cm9sbGVkIG1haW5seSBieSBwc2V1ZG9maWxlcyB1bmRlciB0aGUgIm5mc2QiIGZpbGVzeXN0ZW0sCit3aGljaCBpcyBub3JtYWxseSBtb3VudGVkIGF0IC9wcm9jL2ZzL25mc2QvLgorCitUaGUgc2VydmVyIGlzIGFsd2F5cyBzdGFydGVkIGJ5IHRoZSBmaXJzdCB3cml0ZSBvZiBhIG5vbnplcm8gdmFsdWUgdG8KK25mc2QvdGhyZWFkcy4KKworQmVmb3JlIGRvaW5nIHRoYXQsIE5GU0QgY2FuIGJlIHRvbGQgd2hpY2ggc29ja2V0cyB0byBsaXN0ZW4gb24gYnkKK3dyaXRpbmcgdG8gbmZzZC9wb3J0bGlzdDsgdGhhdCB3cml0ZSBtYXkgYmU6CisKKwktIGFuIGFzY2lpLWVuY29kZWQgZmlsZSBkZXNjcmlwdG9yLCB3aGljaCBzaG91bGQgcmVmZXIgdG8gYQorCSAgYm91bmQgKGFuZCBsaXN0ZW5pbmcsIGZvciB0Y3ApIHNvY2tldCwgb3IKKwktICJ0cmFuc3BvcnRuYW1lIHBvcnQiLCB3aGVyZSB0cmFuc3BvcnRuYW1lIGlzIGN1cnJlbnRseSBlaXRoZXIKKwkgICJ1ZHAiLCAidGNwIiwgb3IgInJkbWEiLgorCitJZiBuZnNkIGlzIHN0YXJ0ZWQgd2l0aG91dCBkb2luZyBhbnkgb2YgdGhlc2UsIHRoZW4gaXQgd2lsbCBjcmVhdGUgb25lCit1ZHAgYW5kIG9uZSB0Y3AgbGlzdGVuZXIgYXQgcG9ydCAyMDQ5IChzZWUgbmZzZF9pbml0X3NvY2tzKS4KKworT24gc3RhcnR1cCwgbmZzZCBhbmQgbG9ja2QgZ3JhY2UgcGVyaW9kcyBzdGFydC4KKworbmZzZCBpcyBzaHV0IGRvd24gYnkgYSB3cml0ZSBvZiAwIHRvIG5mc2QvdGhyZWFkcy4gIEFsbCBsb2NrcyBhbmQgc3RhdGUKK2FyZSB0aHJvd24gYXdheSBhdCB0aGF0IHBvaW50LgorCitCZXR3ZWVuIHN0YXJ0dXAgYW5kIHNodXRkb3duLCB0aGUgbnVtYmVyIG9mIHRocmVhZHMgbWF5IGJlIGFkanVzdGVkIHVwCitvciBkb3duIGJ5IGFkZGl0aW9uYWwgd3JpdGVzIHRvIG5mc2QvdGhyZWFkcyBvciBieSB3cml0ZXMgdG8KK25mc2QvcG9vbF90aHJlYWRzLgorCitGb3IgbW9yZSBkZXRhaWwgYWJvdXQgZmlsZXMgdW5kZXIgbmZzZC8gYW5kIHdoYXQgdGhleSBjb250cm9sLCBzZWUKK2ZzL25mc2QvbmZzY3RsLmM7IG1vc3Qgb2YgdGhlbSBoYXZlIGRldGFpbGVkIGNvbW1lbnRzLgorCitJbXBsZW1lbnRhdGlvbiBub3RlcworXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworTm90ZSB0aGF0IHRoZSBycGMgc2VydmVyIHJlcXVpcmVzIHRoZSBjYWxsZXIgdG8gc2VyaWFsaXplIGFkZGl0aW9uIGFuZAorcmVtb3ZhbCBvZiBsaXN0ZW5pbmcgc29ja2V0cywgYW5kIHN0YXJ0dXAgYW5kIHNodXRkb3duIG9mIHRoZSBzZXJ2ZXIuCitGb3IgbmZzZCB0aGlzIGlzIGRvbmUgdXNpbmcgbmZzZF9tdXRleC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzL25mc3Jvb3QudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uZnMvbmZzcm9vdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI1YWI2ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzL25mc3Jvb3QudHh0CkBAIC0wLDAgKzEsMzA1IEBACitNb3VudGluZyB0aGUgcm9vdCBmaWxlc3lzdGVtIHZpYSBORlMgKG5mc3Jvb3QpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitXcml0dGVuIDE5OTYgYnkgR2VybyBLdWhsbWFubiA8Z2Vyb0Bna21pbml4Lmhhbi5kZT4KK1VwZGF0ZWQgMTk5NyBieSBNYXJ0aW4gTWFyZXMgPG1qQGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jej4KK1VwZGF0ZWQgMjAwNiBieSBOaWNvIFNjaG90dGVsaXVzIDxuaWNvLWtlcm5lbC1uZnNyb290QHNjaG90dGVsaXVzLm9yZz4KK1VwZGF0ZWQgMjAwNiBieSBIb3JtcyA8aG9ybXNAdmVyZ2UubmV0LmF1PgorCisKKworSW4gb3JkZXIgdG8gdXNlIGEgZGlza2xlc3Mgc3lzdGVtLCBzdWNoIGFzIGFuIFgtdGVybWluYWwgb3IgcHJpbnRlciBzZXJ2ZXIKK2ZvciBleGFtcGxlLCBpdCBpcyBuZWNlc3NhcnkgZm9yIHRoZSByb290IGZpbGVzeXN0ZW0gdG8gYmUgcHJlc2VudCBvbiBhCitub24tZGlzayBkZXZpY2UuIFRoaXMgbWF5IGJlIGFuIGluaXRyYW1mcyAoc2VlIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvCityYW1mcy1yb290ZnMtaW5pdHJhbWZzLnR4dCksIGEgcmFtZGlzayAoc2VlIERvY3VtZW50YXRpb24vaW5pdHJkLnR4dCkgb3IgYQorZmlsZXN5c3RlbSBtb3VudGVkIHZpYSBORlMuIFRoZSBmb2xsb3dpbmcgdGV4dCBkZXNjcmliZXMgb24gaG93IHRvIHVzZSBORlMKK2ZvciB0aGUgcm9vdCBmaWxlc3lzdGVtLiBGb3IgdGhlIHJlc3Qgb2YgdGhpcyB0ZXh0ICdjbGllbnQnIG1lYW5zIHRoZQorZGlza2xlc3Mgc3lzdGVtLCBhbmQgJ3NlcnZlcicgbWVhbnMgdGhlIE5GUyBzZXJ2ZXIuCisKKworCisKKzEuKSBFbmFibGluZyBuZnNyb290IGNhcGFiaWxpdGllcworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0luIG9yZGVyIHRvIHVzZSBuZnNyb290LCBORlMgY2xpZW50IHN1cHBvcnQgbmVlZHMgdG8gYmUgc2VsZWN0ZWQgYXMKK2J1aWx0LWluIGR1cmluZyBjb25maWd1cmF0aW9uLiBPbmNlIHRoaXMgaGFzIGJlZW4gc2VsZWN0ZWQsIHRoZSBuZnNyb290CitvcHRpb24gd2lsbCBiZWNvbWUgYXZhaWxhYmxlLCB3aGljaCBzaG91bGQgYWxzbyBiZSBzZWxlY3RlZC4KKworSW4gdGhlIG5ldHdvcmtpbmcgb3B0aW9ucywga2VybmVsIGxldmVsIGF1dG9jb25maWd1cmF0aW9uIGNhbiBiZSBzZWxlY3RlZCwKK2Fsb25nIHdpdGggdGhlIHR5cGVzIG9mIGF1dG9jb25maWd1cmF0aW9uIHRvIHN1cHBvcnQuIFNlbGVjdGluZyBhbGwgb2YKK0RIQ1AsIEJPT1RQIGFuZCBSQVJQIGlzIHNhZmUuCisKKworCisKKzIuKSBLZXJuZWwgY29tbWFuZCBsaW5lCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaGVuIHRoZSBrZXJuZWwgaGFzIGJlZW4gbG9hZGVkIGJ5IGEgYm9vdCBsb2FkZXIgKHNlZSBiZWxvdykgaXQgbmVlZHMgdG8gYmUKK3RvbGQgd2hhdCByb290IGZzIGRldmljZSB0byB1c2UuIEFuZCBpbiB0aGUgY2FzZSBvZiBuZnNyb290LCB3aGVyZSB0byBmaW5kCitib3RoIHRoZSBzZXJ2ZXIgYW5kIHRoZSBuYW1lIG9mIHRoZSBkaXJlY3Rvcnkgb24gdGhlIHNlcnZlciB0byBtb3VudCBhcyByb290LgorVGhpcyBjYW4gYmUgZXN0YWJsaXNoZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBrZXJuZWwgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnM6CisKKworcm9vdD0vZGV2L25mcworCisgIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGVuYWJsZSB0aGUgcHNldWRvLU5GUy1kZXZpY2UuIE5vdGUgdGhhdCBpdCdzIG5vdCBhCisgIHJlYWwgZGV2aWNlIGJ1dCBqdXN0IGEgc3lub255bSB0byB0ZWxsIHRoZSBrZXJuZWwgdG8gdXNlIE5GUyBpbnN0ZWFkIG9mCisgIGEgcmVhbCBkZXZpY2UuCisKKworbmZzcm9vdD1bPHNlcnZlci1pcD46XTxyb290LWRpcj5bLDxuZnMtb3B0aW9ucz5dCisKKyAgSWYgdGhlIGBuZnNyb290JyBwYXJhbWV0ZXIgaXMgTk9UIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUsCisgIHRoZSBkZWZhdWx0ICIvdGZ0cGJvb3QvJXMiIHdpbGwgYmUgdXNlZC4KKworICA8c2VydmVyLWlwPglTcGVjaWZpZXMgdGhlIElQIGFkZHJlc3Mgb2YgdGhlIE5GUyBzZXJ2ZXIuCisJCVRoZSBkZWZhdWx0IGFkZHJlc3MgaXMgZGV0ZXJtaW5lZCBieSB0aGUgYGlwJyBwYXJhbWV0ZXIKKwkJKHNlZSBiZWxvdykuIFRoaXMgcGFyYW1ldGVyIGFsbG93cyB0aGUgdXNlIG9mIGRpZmZlcmVudAorCQlzZXJ2ZXJzIGZvciBJUCBhdXRvY29uZmlndXJhdGlvbiBhbmQgTkZTLgorCisgIDxyb290LWRpcj4JTmFtZSBvZiB0aGUgZGlyZWN0b3J5IG9uIHRoZSBzZXJ2ZXIgdG8gbW91bnQgYXMgcm9vdC4KKwkJSWYgdGhlcmUgaXMgYSAiJXMiIHRva2VuIGluIHRoZSBzdHJpbmcsIGl0IHdpbGwgYmUKKwkJcmVwbGFjZWQgYnkgdGhlIEFTQ0lJLXJlcHJlc2VudGF0aW9uIG9mIHRoZSBjbGllbnQncworCQlJUCBhZGRyZXNzLgorCisgIDxuZnMtb3B0aW9ucz4JU3RhbmRhcmQgTkZTIG9wdGlvbnMuIEFsbCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLgorCQlUaGUgZm9sbG93aW5nIGRlZmF1bHRzIGFyZSB1c2VkOgorCQkJcG9ydAkJPSBhcyBnaXZlbiBieSBzZXJ2ZXIgcG9ydG1hcCBkYWVtb24KKwkJCXJzaXplCQk9IDQwOTYKKwkJCXdzaXplCQk9IDQwOTYKKwkJCXRpbWVvCQk9IDcKKwkJCXJldHJhbnMJCT0gMworCQkJYWNyZWdtaW4JPSAzCisJCQlhY3JlZ21heAk9IDYwCisJCQlhY2Rpcm1pbgk9IDMwCisJCQlhY2Rpcm1heAk9IDYwCisJCQlmbGFncwkJPSBoYXJkLCBub2ludHIsIG5vcG9zaXgsIGN0bywgYWMKKworCitpcD08Y2xpZW50LWlwPjo8c2VydmVyLWlwPjo8Z3ctaXA+OjxuZXRtYXNrPjo8aG9zdG5hbWU+OjxkZXZpY2U+OjxhdXRvY29uZj46CisgICA8ZG5zMC1pcD46PGRuczEtaXA+CisKKyAgVGhpcyBwYXJhbWV0ZXIgdGVsbHMgdGhlIGtlcm5lbCBob3cgdG8gY29uZmlndXJlIElQIGFkZHJlc3NlcyBvZiBkZXZpY2VzCisgIGFuZCBhbHNvIGhvdyB0byBzZXQgdXAgdGhlIElQIHJvdXRpbmcgdGFibGUuIEl0IHdhcyBvcmlnaW5hbGx5IGNhbGxlZAorICBgbmZzYWRkcnMnLCBidXQgbm93IHRoZSBib290LXRpbWUgSVAgY29uZmlndXJhdGlvbiB3b3JrcyBpbmRlcGVuZGVudGx5IG9mCisgIE5GUywgc28gaXQgd2FzIHJlbmFtZWQgdG8gYGlwJyBhbmQgdGhlIG9sZCBuYW1lIHJlbWFpbmVkIGFzIGFuIGFsaWFzIGZvcgorICBjb21wYXRpYmlsaXR5IHJlYXNvbnMuCisKKyAgSWYgdGhpcyBwYXJhbWV0ZXIgaXMgbWlzc2luZyBmcm9tIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lLCBhbGwgZmllbGRzIGFyZQorICBhc3N1bWVkIHRvIGJlIGVtcHR5LCBhbmQgdGhlIGRlZmF1bHRzIG1lbnRpb25lZCBiZWxvdyBhcHBseS4gSW4gZ2VuZXJhbAorICB0aGlzIG1lYW5zIHRoYXQgdGhlIGtlcm5lbCB0cmllcyB0byBjb25maWd1cmUgZXZlcnl0aGluZyB1c2luZworICBhdXRvY29uZmlndXJhdGlvbi4KKworICBUaGUgPGF1dG9jb25mPiBwYXJhbWV0ZXIgY2FuIGFwcGVhciBhbG9uZSBhcyB0aGUgdmFsdWUgdG8gdGhlIGBpcCcKKyAgcGFyYW1ldGVyICh3aXRob3V0IGFsbCB0aGUgJzonIGNoYXJhY3RlcnMgYmVmb3JlKS4gIElmIHRoZSB2YWx1ZSBpcworICAiaXA9b2ZmIiBvciAiaXA9bm9uZSIsIG5vIGF1dG9jb25maWd1cmF0aW9uIHdpbGwgdGFrZSBwbGFjZSwgb3RoZXJ3aXNlCisgIGF1dG9jb25maWd1cmF0aW9uIHdpbGwgdGFrZSBwbGFjZS4gIFRoZSBtb3N0IGNvbW1vbiB3YXkgdG8gdXNlIHRoaXMKKyAgaXMgImlwPWRoY3AiLgorCisgIDxjbGllbnQtaXA+CUlQIGFkZHJlc3Mgb2YgdGhlIGNsaWVudC4KKworICAJCURlZmF1bHQ6ICBEZXRlcm1pbmVkIHVzaW5nIGF1dG9jb25maWd1cmF0aW9uLgorCisgIDxzZXJ2ZXItaXA+CUlQIGFkZHJlc3Mgb2YgdGhlIE5GUyBzZXJ2ZXIuIElmIFJBUlAgaXMgdXNlZCB0byBkZXRlcm1pbmUKKwkJdGhlIGNsaWVudCBhZGRyZXNzIGFuZCB0aGlzIHBhcmFtZXRlciBpcyBOT1QgZW1wdHkgb25seQorCQlyZXBsaWVzIGZyb20gdGhlIHNwZWNpZmllZCBzZXJ2ZXIgYXJlIGFjY2VwdGVkLgorCisJCU9ubHkgcmVxdWlyZWQgZm9yIE5GUyByb290LiBUaGF0IGlzIGF1dG9jb25maWd1cmF0aW9uCisJCXdpbGwgbm90IGJlIHRyaWdnZXJlZCBpZiBpdCBpcyBtaXNzaW5nIGFuZCBORlMgcm9vdCBpcyBub3QKKwkJaW4gb3BlcmF0aW9uLgorCisJCURlZmF1bHQ6IERldGVybWluZWQgdXNpbmcgYXV0b2NvbmZpZ3VyYXRpb24uCisJCSAgICAgICAgIFRoZSBhZGRyZXNzIG9mIHRoZSBhdXRvY29uZmlndXJhdGlvbiBzZXJ2ZXIgaXMgdXNlZC4KKworICA8Z3ctaXA+CUlQIGFkZHJlc3Mgb2YgYSBnYXRld2F5IGlmIHRoZSBzZXJ2ZXIgaXMgb24gYSBkaWZmZXJlbnQgc3VibmV0LgorCisJCURlZmF1bHQ6IERldGVybWluZWQgdXNpbmcgYXV0b2NvbmZpZ3VyYXRpb24uCisKKyAgPG5ldG1hc2s+CU5ldG1hc2sgZm9yIGxvY2FsIG5ldHdvcmsgaW50ZXJmYWNlLiBJZiB1bnNwZWNpZmllZAorCQl0aGUgbmV0bWFzayBpcyBkZXJpdmVkIGZyb20gdGhlIGNsaWVudCBJUCBhZGRyZXNzIGFzc3VtaW5nCisJCWNsYXNzZnVsIGFkZHJlc3NpbmcuCisKKwkJRGVmYXVsdDogIERldGVybWluZWQgdXNpbmcgYXV0b2NvbmZpZ3VyYXRpb24uCisKKyAgPGhvc3RuYW1lPglOYW1lIG9mIHRoZSBjbGllbnQuIE1heSBiZSBzdXBwbGllZCBieSBhdXRvY29uZmlndXJhdGlvbiwKKyAgCQlidXQgaXRzIGFic2VuY2Ugd2lsbCBub3QgdHJpZ2dlciBhdXRvY29uZmlndXJhdGlvbi4KKwkJSWYgc3BlY2lmaWVkIGFuZCBESENQIGlzIHVzZWQsIHRoZSB1c2VyIHByb3ZpZGVkIGhvc3RuYW1lIHdpbGwKKwkJYmUgY2FycmllZCBpbiB0aGUgREhDUCByZXF1ZXN0IHRvIGhvcGVmdWxseSB1cGRhdGUgRE5TIHJlY29yZC4KKworICAJCURlZmF1bHQ6IENsaWVudCBJUCBhZGRyZXNzIGlzIHVzZWQgaW4gQVNDSUkgbm90YXRpb24uCisKKyAgPGRldmljZT4JTmFtZSBvZiBuZXR3b3JrIGRldmljZSB0byB1c2UuCisKKwkJRGVmYXVsdDogSWYgdGhlIGhvc3Qgb25seSBoYXMgb25lIGRldmljZSwgaXQgaXMgdXNlZC4KKwkJCSBPdGhlcndpc2UgdGhlIGRldmljZSBpcyBkZXRlcm1pbmVkIHVzaW5nCisJCQkgYXV0b2NvbmZpZ3VyYXRpb24uIFRoaXMgaXMgZG9uZSBieSBzZW5kaW5nCisJCQkgYXV0b2NvbmZpZ3VyYXRpb24gcmVxdWVzdHMgb3V0IG9mIGFsbCBkZXZpY2VzLAorCQkJIGFuZCB1c2luZyB0aGUgZGV2aWNlIHRoYXQgcmVjZWl2ZWQgdGhlIGZpcnN0IHJlcGx5LgorCisgIDxhdXRvY29uZj4JTWV0aG9kIHRvIHVzZSBmb3IgYXV0b2NvbmZpZ3VyYXRpb24uIEluIHRoZSBjYXNlIG9mIG9wdGlvbnMKKyAgICAgICAgICAgICAgICB3aGljaCBzcGVjaWZ5IG11bHRpcGxlIGF1dG9jb25maWd1cmF0aW9uIHByb3RvY29scywKKwkJcmVxdWVzdHMgYXJlIHNlbnQgdXNpbmcgYWxsIHByb3RvY29scywgYW5kIHRoZSBmaXJzdCBvbmUKKwkJdG8gcmVwbHkgaXMgdXNlZC4KKworCQlPbmx5IGF1dG9jb25maWd1cmF0aW9uIHByb3RvY29scyB0aGF0IGhhdmUgYmVlbiBjb21waWxlZAorCQlpbnRvIHRoZSBrZXJuZWwgd2lsbCBiZSB1c2VkLCByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZgorCQl0aGlzIG9wdGlvbi4KKworICAgICAgICAgICAgICAgICAgb2ZmIG9yIG5vbmU6IGRvbid0IHVzZSBhdXRvY29uZmlndXJhdGlvbgorCQkJCShkbyBzdGF0aWMgSVAgYXNzaWdubWVudCBpbnN0ZWFkKQorCQkgIG9uIG9yIGFueTogICB1c2UgYW55IHByb3RvY29sIGF2YWlsYWJsZSBpbiB0aGUga2VybmVsCisJCQkgICAgICAgKGRlZmF1bHQpCisJCSAgZGhjcDogICAgICAgIHVzZSBESENQCisJCSAgYm9vdHA6ICAgICAgIHVzZSBCT09UUAorCQkgIHJhcnA6ICAgICAgICB1c2UgUkFSUAorCQkgIGJvdGg6ICAgICAgICB1c2UgYm90aCBCT09UUCBhbmQgUkFSUCBidXQgbm90IERIQ1AKKwkJICAgICAgICAgICAgICAgKG9sZCBvcHRpb24ga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkpCisKKwkJaWYgZGhjcCBpcyB1c2VkLCB0aGUgY2xpZW50IGlkZW50aWZpZXIgY2FuIGJlIHVzZWQgYnkgZm9sbG93aW5nCisJCWZvcm1hdCAiaXA9ZGhjcCxjbGllbnQtaWQtdHlwZSxjbGllbnQtaWQtdmFsdWUiCisKKyAgICAgICAgICAgICAgICBEZWZhdWx0OiBhbnkKKworICA8ZG5zMC1pcD4JSVAgYWRkcmVzcyBvZiBmaXJzdCBuYW1lc2VydmVyLgorCQlWYWx1ZSBnZXRzIGV4cG9ydGVkIGJ5IC9wcm9jL25ldC9wbnAgd2hpY2ggaXMgb2Z0ZW4gbGlua2VkCisJCW9uIGVtYmVkZGVkIHN5c3RlbXMgYnkgL2V0Yy9yZXNvbHYuY29uZi4KKworICA8ZG5zMS1pcD4JSVAgYWRkcmVzcyBvZiBzZWNvdW5kIG5hbWVzZXJ2ZXIuCisJCVNhbWUgYXMgYWJvdmUuCisKKworbmZzcm9vdGRlYnVnCisKKyAgVGhpcyBwYXJhbWV0ZXIgZW5hYmxlcyBkZWJ1Z2dpbmcgbWVzc2FnZXMgdG8gYXBwZWFyIGluIHRoZSBrZXJuZWwKKyAgbG9nIGF0IGJvb3QgdGltZSBzbyB0aGF0IGFkbWluaXN0cmF0b3JzIGNhbiB2ZXJpZnkgdGhhdCB0aGUgY29ycmVjdAorICBORlMgbW91bnQgb3B0aW9ucywgc2VydmVyIGFkZHJlc3MsIGFuZCByb290IHBhdGggYXJlIHBhc3NlZCB0byB0aGUKKyAgTkZTIGNsaWVudC4KKworCityZGluaXQ9PGV4ZWN1dGFibGUgZmlsZT4KKworICBUbyBzcGVjaWZ5IHdoaWNoIGZpbGUgY29udGFpbnMgdGhlIHByb2dyYW0gdGhhdCBzdGFydHMgc3lzdGVtCisgIGluaXRpYWxpemF0aW9uLCBhZG1pbmlzdHJhdG9ycyBjYW4gdXNlIHRoaXMgY29tbWFuZCBsaW5lIHBhcmFtZXRlci4KKyAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhpcyBwYXJhbWV0ZXIgaXMgIi9pbml0Ii4gIElmIHRoZSBzcGVjaWZpZWQKKyAgZmlsZSBleGlzdHMgYW5kIHRoZSBrZXJuZWwgY2FuIGV4ZWN1dGUgaXQsIHJvb3QgZmlsZXN5c3RlbSByZWxhdGVkCisgIGtlcm5lbCBjb21tYW5kIGxpbmUgcGFyYW1ldGVycywgaW5jbHVkaW5nIGBuZnNyb290PScsIGFyZSBpZ25vcmVkLgorCisgIEEgZGVzY3JpcHRpb24gb2YgdGhlIHByb2Nlc3Mgb2YgbW91bnRpbmcgdGhlIHJvb3QgZmlsZSBzeXN0ZW0gY2FuIGJlCisgIGZvdW5kIGluOgorCisgICAgRG9jdW1lbnRhdGlvbi9lYXJseS11c2Vyc3BhY2UvUkVBRE1FCisKKworCisKKzMuKSBCb290IExvYWRlcgorICAgIC0tLS0tLS0tLS0KKworVG8gZ2V0IHRoZSBrZXJuZWwgaW50byBtZW1vcnkgZGlmZmVyZW50IGFwcHJvYWNoZXMgY2FuIGJlIHVzZWQuCitUaGV5IGRlcGVuZCBvbiB2YXJpb3VzIGZhY2lsaXRpZXMgYmVpbmcgYXZhaWxhYmxlOgorCisKKzMuMSkgIEJvb3RpbmcgZnJvbSBhIGZsb3BweSB1c2luZyBzeXNsaW51eAorCisJV2hlbiBidWlsZGluZyBrZXJuZWxzLCBhbiBlYXN5IHdheSB0byBjcmVhdGUgYSBib290IGZsb3BweSB0aGF0IHVzZXMKKwlzeXNsaW51eCBpcyB0byB1c2UgdGhlIHpkaXNrIG9yIGJ6ZGlzayBtYWtlIHRhcmdldHMgd2hpY2ggdXNlIHppbWFnZQorICAgICAgCWFuZCBiemltYWdlIGltYWdlcyByZXNwZWN0aXZlbHkuIEJvdGggdGFyZ2V0cyBhY2NlcHQgdGhlCisgICAgIAlGREFSR1MgcGFyYW1ldGVyIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUga2VybmVsIGNvbW1hbmQgbGluZS4KKworCWUuZy4KKwkgICBtYWtlIGJ6ZGlzayBGREFSR1M9InJvb3Q9L2Rldi9uZnMiCisKKyAgIAlOb3RlIHRoYXQgdGhlIHVzZXIgcnVubmluZyB0aGlzIGNvbW1hbmQgd2lsbCBuZWVkIHRvIGhhdmUKKyAgICAgCWFjY2VzcyB0byB0aGUgZmxvcHB5IGRyaXZlIGRldmljZSwgL2Rldi9mZDAKKworICAgICAJRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gc3lzbGludXgsIGluY2x1ZGluZyBob3cgdG8gY3JlYXRlIGJvb3RkaXNrcworICAgICAJZm9yIHByZWJ1aWx0IGtlcm5lbHMsIHNlZSBodHRwOi8vc3lzbGludXguenl0b3IuY29tLworCisJTi5COiBQcmV2aW91c2x5IGl0IHdhcyBwb3NzaWJsZSB0byB3cml0ZSBhIGtlcm5lbCBkaXJlY3RseSB0bworCSAgICAgYSBmbG9wcHkgdXNpbmcgZGQsIGNvbmZpZ3VyZSB0aGUgYm9vdCBkZXZpY2UgdXNpbmcgcmRldiwgYW5kCisJICAgICBib290IHVzaW5nIHRoZSByZXN1bHRpbmcgZmxvcHB5LiBMaW51eCBubyBsb25nZXIgc3VwcG9ydHMgdGhpcworCSAgICAgbWV0aG9kIG9mIGJvb3RpbmcuCisKKzMuMikgQm9vdGluZyBmcm9tIGEgY2Ryb20gdXNpbmcgaXNvbGludXgKKworICAgICAJV2hlbiBidWlsZGluZyBrZXJuZWxzLCBhbiBlYXN5IHdheSB0byBjcmVhdGUgYSBib290YWJsZSBjZHJvbSB0aGF0CisgICAgIAl1c2VzIGlzb2xpbnV4IGlzIHRvIHVzZSB0aGUgaXNvaW1hZ2UgdGFyZ2V0IHdoaWNoIHVzZXMgYSBiemltYWdlCisgICAgIAlpbWFnZS4gTGlrZSB6ZGlzayBhbmQgYnpkaXNrLCB0aGlzIHRhcmdldCBhY2NlcHRzIHRoZSBGREFSR1MKKyAgICAgCXBhcmFtZXRlciB3aGljaCBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUuCisKKwllLmcuCisJICBtYWtlIGlzb2ltYWdlIEZEQVJHUz0icm9vdD0vZGV2L25mcyIKKworICAgICAJVGhlIHJlc3VsdGluZyBpc28gaW1hZ2Ugd2lsbCBiZSBhcmNoLzxBUkNIPi9ib290L2ltYWdlLmlzbworICAgICAJVGhpcyBjYW4gYmUgd3JpdHRlbiB0byBhIGNkcm9tIHVzaW5nIGEgdmFyaWV0eSBvZiB0b29scyBpbmNsdWRpbmcKKyAgICAgCWNkcmVjb3JkLgorCisJZS5nLgorCSAgY2RyZWNvcmQgZGV2PUFUQVBJOjEsMCwwIGFyY2gveDg2L2Jvb3QvaW1hZ2UuaXNvCisKKyAgICAgCUZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGlzb2xpbnV4LCBpbmNsdWRpbmcgaG93IHRvIGNyZWF0ZSBib290ZGlza3MKKyAgICAgCWZvciBwcmVidWlsdCBrZXJuZWxzLCBzZWUgaHR0cDovL3N5c2xpbnV4Lnp5dG9yLmNvbS8KKworMy4yKSBVc2luZyBMSUxPCisJV2hlbiB1c2luZyBMSUxPIGFsbCB0aGUgbmVjZXNzYXJ5IGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzIG1heSBiZQorCXNwZWNpZmllZCB1c2luZyB0aGUgJ2FwcGVuZD0nIGRpcmVjdGl2ZSBpbiB0aGUgTElMTyBjb25maWd1cmF0aW9uCisJZmlsZS4KKworCUhvd2V2ZXIsIHRvIHVzZSB0aGUgJ3Jvb3Q9JyBkaXJlY3RpdmUgeW91IGFsc28gbmVlZCB0byBjcmVhdGUKKwlhIGR1bW15IHJvb3QgZGV2aWNlLCB3aGljaCBtYXkgYmUgcmVtb3ZlZCBhZnRlciBMSUxPIGlzIHJ1bi4KKworCW1rbm9kIC9kZXYvYm9vdDI1NSBjIDAgMjU1CisKKwlGb3IgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgTElMTywgcGxlYXNlIHJlZmVyIHRvIGl0cyBkb2N1bWVudGF0aW9uLgorCiszLjMpIFVzaW5nIEdSVUIKKwlXaGVuIHVzaW5nIEdSVUIsIGtlcm5lbCBwYXJhbWV0ZXIgYXJlIHNpbXBseSBhcHBlbmRlZCBhZnRlciB0aGUga2VybmVsCisJc3BlY2lmaWNhdGlvbjoga2VybmVsIDxrZXJuZWw+IDxwYXJhbWV0ZXJzPgorCiszLjQpIFVzaW5nIGxvYWRsaW4KKwlsb2FkbGluIG1heSBiZSB1c2VkIHRvIGJvb3QgTGludXggZnJvbSBhIERPUyBjb21tYW5kIHByb21wdCB3aXRob3V0CisJcmVxdWlyaW5nIGEgbG9jYWwgaGFyZCBkaXNrIHRvIG1vdW50IGFzIHJvb3QuIFRoaXMgaGFzIG5vdCBiZWVuCisJdGhvcm91Z2hseSB0ZXN0ZWQgYnkgdGhlIGF1dGhvcnMgb2YgdGhpcyBkb2N1bWVudCwgYnV0IGluIGdlbmVyYWwKKwlpdCBzaG91bGQgYmUgcG9zc2libGUgY29uZmlndXJlIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIHNpbWlsYXJseQorCXRvIHRoZSBjb25maWd1cmF0aW9uIG9mIExJTE8uCisKKwlQbGVhc2UgcmVmZXIgdG8gdGhlIGxvYWRsaW4gZG9jdW1lbnRhdGlvbiBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4KKworMy41KSBVc2luZyBhIGJvb3QgUk9NCisJVGhpcyBpcyBwcm9iYWJseSB0aGUgbW9zdCBlbGVnYW50IHdheSBvZiBib290aW5nIGEgZGlza2xlc3MgY2xpZW50LgorCVdpdGggYSBib290IFJPTSB0aGUga2VybmVsIGlzIGxvYWRlZCB1c2luZyB0aGUgVEZUUCBwcm90b2NvbC4gVGhlCisJYXV0aG9ycyBvZiB0aGlzIGRvY3VtZW50IGFyZSBub3QgYXdhcmUgb2YgYW55IG5vIGNvbW1lcmNpYWwgYm9vdAorCVJPTXMgdGhhdCBzdXBwb3J0IGJvb3RpbmcgTGludXggb3ZlciB0aGUgbmV0d29yay4gSG93ZXZlciwgdGhlcmUKKwlhcmUgdHdvIGZyZWUgaW1wbGVtZW50YXRpb25zIG9mIGEgYm9vdCBST00sIG5ldGJvb3QtbmZzIGFuZAorCWV0aGVyYm9vdCwgYm90aCBvZiB3aGljaCBhcmUgYXZhaWxhYmxlIG9uIHN1bnNpdGUudW5jLmVkdSwgYW5kIGJvdGgKKwlvZiB3aGljaCBjb250YWluIGV2ZXJ5dGhpbmcgeW91IG5lZWQgdG8gYm9vdCBhIGRpc2tsZXNzIExpbnV4IGNsaWVudC4KKworMy42KSBVc2luZyBweGVsaW51eAorCVB4ZWxpbnV4IG1heSBiZSB1c2VkIHRvIGJvb3QgbGludXggdXNpbmcgdGhlIFBYRSBib290IGxvYWRlcgorCXdoaWNoIGlzIHByZXNlbnQgb24gbWFueSBtb2Rlcm4gbmV0d29yayBjYXJkcy4KKworCVdoZW4gdXNpbmcgcHhlbGludXgsIHRoZSBrZXJuZWwgaW1hZ2UgaXMgc3BlY2lmaWVkIHVzaW5nCisJImtlcm5lbCA8cmVsYXRpdmUtcGF0aC1iZWxvdyAvdGZ0cGJvb3Q+Ii4gVGhlIG5mc3Jvb3QgcGFyYW1ldGVycworCWFyZSBwYXNzZWQgdG8gdGhlIGtlcm5lbCBieSBhZGRpbmcgdGhlbSB0byB0aGUgImFwcGVuZCIgbGluZS4KKwlJdCBpcyBjb21tb24gdG8gdXNlIHNlcmlhbCBjb25zb2xlIGluIGNvbmp1bmN0aW9uIHdpdGggcHhlbGl1bngsCisJc2VlIERvY3VtZW50YXRpb24vc2VyaWFsLWNvbnNvbGUudHh0IGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisJRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaXNvbGludXgsIGluY2x1ZGluZyBob3cgdG8gY3JlYXRlIGJvb3RkaXNrcworCWZvciBwcmVidWlsdCBrZXJuZWxzLCBzZWUgaHR0cDovL3N5c2xpbnV4Lnp5dG9yLmNvbS8KKworCisKKworNC4pIENyZWRpdHMKKyAgICAtLS0tLS0tCisKKyAgVGhlIG5mc3Jvb3QgY29kZSBpbiB0aGUga2VybmVsIGFuZCB0aGUgUkFSUCBzdXBwb3J0IGhhdmUgYmVlbiB3cml0dGVuCisgIGJ5IEdlcm8gS3VobG1hbm4gPGdlcm9AZ2ttaW5peC5oYW4uZGU+LgorCisgIFRoZSByZXN0IG9mIHRoZSBJUCBsYXllciBhdXRvY29uZmlndXJhdGlvbiBjb2RlIGhhcyBiZWVuIHdyaXR0ZW4KKyAgYnkgTWFydGluIE1hcmVzIDxtakBhdHJleS5rYXJsaW4ubWZmLmN1bmkuY3o+LgorCisgIEluIG9yZGVyIHRvIHdyaXRlIHRoZSBpbml0aWFsIHZlcnNpb24gb2YgbmZzcm9vdCBJIHdvdWxkIGxpa2UgdG8gdGhhbmsKKyAgSmVucy1Vd2UgTWFnZXIgPGp1bUBhbnViaXMuaGFuLmRlPiBmb3IgaGlzIGhlbHAuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL25mcy9wbmZzLWJsb2NrLXNlcnZlci50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL25mcy9wbmZzLWJsb2NrLXNlcnZlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE0MzY3MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzL3BuZnMtYmxvY2stc2VydmVyLnR4dApAQCAtMCwwICsxLDM3IEBACitwTkZTIGJsb2NrIGxheW91dCBzZXJ2ZXIgdXNlciBndWlkZQorCitUaGUgTGludXggTkZTIHNlcnZlciBub3cgc3VwcG9ydHMgdGhlIHBORlMgYmxvY2sgbGF5b3V0IGV4dGVuc2lvbi4gIEluIHRoaXMKK2Nhc2UgdGhlIE5GUyBzZXJ2ZXIgYWN0cyBhcyBNZXRhZGF0YSBTZXJ2ZXIgKE1EUykgZm9yIHBORlMsIHdoaWNoIGluIGFkZGl0aW9uCit0byBoYW5kbGluZyBhbGwgdGhlIG1ldGFkYXRhIGFjY2VzcyB0byB0aGUgTkZTIGV4cG9ydCBhbHNvIGhhbmRzIG91dCBsYXlvdXRzCit0byB0aGUgY2xpZW50cyB0byBkaXJlY3RseSBhY2Nlc3MgdGhlIHVuZGVybHlpbmcgYmxvY2sgZGV2aWNlcyB0aGF0IGFyZQorc2hhcmVkIHdpdGggdGhlIGNsaWVudC4KKworVG8gdXNlIHBORlMgYmxvY2sgbGF5b3V0cyB3aXRoIHdpdGggdGhlIExpbnV4IE5GUyBzZXJ2ZXIgdGhlIGV4cG9ydGVkIGZpbGUKK3N5c3RlbSBuZWVkcyB0byBzdXBwb3J0IHRoZSBwTkZTIGJsb2NrIGxheW91dHMgKGN1cnJlbnRseSBqdXN0IFhGUyksIGFuZCB0aGUKK2ZpbGUgc3lzdGVtIG11c3Qgc2l0IG9uIHNoYXJlZCBzdG9yYWdlICh0eXBpY2FsbHkgaVNDU0kpIHRoYXQgaXMgYWNjZXNzaWJsZQordG8gdGhlIGNsaWVudHMgaW4gYWRkaXRpb24gdG8gdGhlIE1EUy4gIEFzIG9mIG5vdyB0aGUgZmlsZSBzeXN0ZW0gbmVlZHMgdG8KK3NpdCBkaXJlY3RseSBvbiB0aGUgZXhwb3J0ZWQgdm9sdW1lLCBzdHJpcGluZyBvciBjb25jYXRlbmF0aW9uIG9mCit2b2x1bWVzIG9uIHRoZSBNRFMgYW5kIGNsaWVudHMgaXMgbm90IHN1cHBvcnRlZCB5ZXQuCisKK09uIHRoZSBzZXJ2ZXIsIHBORlMgYmxvY2sgdm9sdW1lIHN1cHBvcnQgaXMgYXV0b21hdGljYWxseSBpZiB0aGUgZmlsZSBzeXN0ZW0KK3N1cHBvcnQgaXQuICBPbiB0aGUgY2xpZW50IG1ha2Ugc3VyZSB0aGUga2VybmVsIGhhcyB0aGUgQ09ORklHX1BORlNfQkxPQ0sKK29wdGlvbiBlbmFibGVkLCB0aGUgYmxrbWFwZCBkYWVtb24gZnJvbSBuZnMtdXRpbHMgaXMgcnVubmluZywgYW5kIHRoZQorZmlsZSBzeXN0ZW0gaXMgbW91bnRlZCB1c2luZyB0aGUgTkZTdjQuMSBwcm90b2NvbCB2ZXJzaW9uIChtb3VudCAtbyB2ZXJzPTQuMSkuCisKK0lmIHRoZSBuZnNkIHNlcnZlciBuZWVkcyB0byBmZW5jZSBhIG5vbi1yZXNwb25kaW5nIGNsaWVudCBpdCBjYWxscworL3NiaW4vbmZzZC1yZWNhbGwtZmFpbGVkIHdpdGggdGhlIGZpcnN0IGFyZ3VtZW50IHNldCB0byB0aGUgSVAgYWRkcmVzcyBvZgordGhlIGNsaWVudCwgYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgc2V0IHRvIHRoZSBkZXZpY2Ugbm9kZSB3aXRob3V0IHRoZSAvZGV2CitwcmVmaXggZm9yIHRoZSBmaWxlIHN5c3RlbSB0byBiZSBmZW5jZWQuIEJlbG93IGlzIGFuIGV4YW1wbGUgZmlsZSB0aGF0IHNob3dzCitob3cgdG8gdHJhbnNsYXRlIHRoZSBkZXZpY2UgaW50byBhIHNlcmlhbCBudW1iZXIgZnJvbSBTQ1NJIEVWUEQgMHg4MDoKKworY2F0ID4gL3NiaW4vbmZzZC1yZWNhbGwtZmFpbGVkIDw8IEVPRgorIyEvYmluL3NoCisKK0NMSUVOVD0iJDEiCitERVY9Ii9kZXYvJDIiCitFVlBEPWBzZ19pbnEgLS1wYWdlPTB4ODAgJHtERVZ9IHwgXAorCWdyZXAgIlVuaXQgc2VyaWFsIG51bWJlcjoiIHwgXAorCWF3ayAtRiAnOiAnICd7cHJpbnQgJDJ9J2AKKworZWNobyAiZmVuY2luZyBjbGllbnQgJHtDTElFTlR9IHNlcmlhbCAke0VWUER9IiA+PiAvdmFyL2xvZy9wbmZzZC1mZW5jZS5sb2cKK0VPRgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uZnMvcG5mcy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL25mcy9wbmZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGE5ZjI0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uZnMvcG5mcy50eHQKQEAgLTAsMCArMSwxMTAgQEAKK1JlZmVyZW5jZSBjb3VudGluZyBpbiBwbmZzOgorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGFyZSBzZXZlcmFsIGludGVyLXJlbGF0ZWQgY2FjaGVzLiAgV2UgaGF2ZSBsYXlvdXRzIHdoaWNoIGNhbgorcmVmZXJlbmNlIG11bHRpcGxlIGRldmljZXMsIGVhY2ggb2Ygd2hpY2ggY2FuIHJlZmVyZW5jZSBtdWx0aXBsZSBkYXRhIHNlcnZlcnMuCitFYWNoIGRhdGEgc2VydmVyIGNhbiBiZSByZWZlcmVuY2VkIGJ5IG11bHRpcGxlIGRldmljZXMuICBFYWNoIGRldmljZQorY2FuIGJlIHJlZmVyZW5jZWQgYnkgbXVsdGlwbGUgbGF5b3V0cy4gIFRvIGtlZXAgYWxsIG9mIHRoaXMgc3RyYWlnaHQsCit3ZSBuZWVkIHRvIHJlZmVyZW5jZSBjb3VudC4KKworCitzdHJ1Y3QgcG5mc19sYXlvdXRfaGRyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgb24tdGhlLXdpcmUgY29tbWFuZCBMQVlPVVRHRVQgY29ycmVzcG9uZHMgdG8gc3RydWN0CitwbmZzX2xheW91dF9zZWdtZW50LCB1c3VhbGx5IHJlZmVycmVkIHRvIGJ5IHRoZSB2YXJpYWJsZSBuYW1lIGxzZWcuCitFYWNoIG5mc19pbm9kZSBtYXkgaG9sZCBhIHBvaW50ZXIgdG8gYSBjYWNoZSBvZiB0aGVzZSBsYXlvdXQKK3NlZ21lbnRzIGluIG5mc2ktPmxheW91dCwgb2YgdHlwZSBzdHJ1Y3QgcG5mc19sYXlvdXRfaGRyLgorCitXZSByZWZlcmVuY2UgdGhlIGhlYWRlciBmb3IgdGhlIGlub2RlIHBvaW50aW5nIHRvIGl0LCBhY3Jvc3MgZWFjaAorb3V0c3RhbmRpbmcgUlBDIGNhbGwgdGhhdCByZWZlcmVuY2VzIGl0IChMQVlPVVRHRVQsIExBWU9VVFJFVFVSTiwKK0xBWU9VVENPTU1JVCksIGFuZCBmb3IgZWFjaCBsc2VnIGhlbGQgd2l0aGluLgorCitFYWNoIGhlYWRlciBpcyBhbHNvICh3aGVuIG5vbi1lbXB0eSkgcHV0IG9uIGEgbGlzdCBhc3NvY2lhdGVkIHdpdGgKK3N0cnVjdCBuZnNfY2xpZW50IChjbF9sYXlvdXRzKS4gIEJlaW5nIHB1dCBvbiB0aGlzIGxpc3QgZG9lcyBub3QgYnVtcAordGhlIHJlZmVyZW5jZSBjb3VudCwgYXMgdGhlIGxheW91dCBpcyBrZXB0IGFyb3VuZCBieSB0aGUgbHNlZyB0aGF0CitrZWVwcyBpdCBpbiB0aGUgbGlzdC4KKworZGV2aWNlaWRfY2FjaGUKKy0tLS0tLS0tLS0tLS0tCitsc2VncyByZWZlcmVuY2UgZGV2aWNlIGlkcywgd2hpY2ggYXJlIHJlc29sdmVkIHBlciBuZnNfY2xpZW50IGFuZAorbGF5b3V0IGRyaXZlciB0eXBlLiAgVGhlIGRldmljZSBpZHMgYXJlIGhlbGQgaW4gYSBSQ1UgY2FjaGUgKHN0cnVjdAorbmZzNF9kZXZpY2VpZF9jYWNoZSkuICBUaGUgY2FjaGUgaXRzZWxmIGlzIHJlZmVyZW5jZWQgYWNyb3NzIGVhY2gKK21vdW50LiAgVGhlIGVudHJpZXMgKHN0cnVjdCBuZnM0X2RldmljZWlkKSB0aGVtc2VsdmVzIGFyZSBoZWxkIGFjcm9zcwordGhlIGxpZmV0aW1lIG9mIGVhY2ggbHNlZyByZWZlcmVuY2luZyB0aGVtLgorCitSQ1UgaXMgdXNlZCBiZWNhdXNlIHRoZSBkZXZpY2VpZCBpcyBiYXNpY2FsbHkgYSB3cml0ZSBvbmNlLCByZWFkIG1hbnkKK2RhdGEgc3RydWN0dXJlLiAgVGhlIGhsaXN0IHNpemUgb2YgMzIgYnVja2V0cyBuZWVkcyBiZXR0ZXIKK2p1c3RpZmljYXRpb24sIGJ1dCBzZWVtcyByZWFzb25hYmxlIGdpdmVuIHRoYXQgd2UgY2FuIGhhdmUgbXVsdGlwbGUKK2RldmljZWlkJ3MgcGVyIGZpbGVzeXN0ZW0sIGFuZCBtdWx0aXBsZSBmaWxlc3lzdGVtcyBwZXIgbmZzX2NsaWVudC4KKworVGhlIGhhc2ggY29kZSBpcyBjb3BpZWQgZnJvbSB0aGUgbmZzZCBjb2RlIGJhc2UuICBBIGRpc2N1c3Npb24gb2YKK2hhc2hpbmcgYW5kIHZhcmlhdGlvbnMgb2YgdGhpcyBhbGdvcml0aG0gY2FuIGJlIGZvdW5kIGF0OgoraHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL2NvbXAubGFuZy5jL2Jyb3dzZV90aHJlYWQvdGhyZWFkLzk1MjI5NjVlMmI4ZDM4MDkKKworZGF0YSBzZXJ2ZXIgY2FjaGUKKy0tLS0tLS0tLS0tLS0tLS0tCitmaWxlIGRyaXZlciBkZXZpY2VzIHJlZmVyIHRvIGRhdGEgc2VydmVycywgd2hpY2ggYXJlIGtlcHQgaW4gYSBtb2R1bGUKK2xldmVsIGNhY2hlLiAgSXRzIHJlZmVyZW5jZSBpcyBoZWxkIG92ZXIgdGhlIGxpZmV0aW1lIG9mIHRoZSBkZXZpY2VpZAorcG9pbnRpbmcgdG8gaXQuCisKK2xzZWcKKy0tLS0KK2xzZWcgbWFpbnRhaW5zIGFuIGV4dHJhIHJlZmVyZW5jZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBORlNfTFNFR19WQUxJRAorYml0IHdoaWNoIGhvbGRzIGl0IGluIHRoZSBwbmZzX2xheW91dF9oZHIncyBsaXN0LiAgV2hlbiB0aGUgZmluYWwgbHNlZworaXMgcmVtb3ZlZCBmcm9tIHRoZSBwbmZzX2xheW91dF9oZHIncyBsaXN0LCB0aGUgTkZTX0xBWU9VVF9ERVNUUk9ZRUQKK2JpdCBpcyBzZXQsIHByZXZlbnRpbmcgYW55IG5ldyBsc2VncyBmcm9tIGJlaW5nIGFkZGVkLgorCitsYXlvdXQgZHJpdmVycworLS0tLS0tLS0tLS0tLS0KKworUE5GUyB1dGlsaXplcyB3aGF0IGlzIGNhbGxlZCBsYXlvdXQgZHJpdmVycy4gVGhlIFNURCBkZWZpbmVzIDQgYmFzaWMKK2xheW91dCB0eXBlczogImZpbGVzIiwgIm9iamVjdHMiLCAiYmxvY2tzIiwgYW5kICJmbGV4ZmlsZXMiLiBGb3IgZWFjaAorb2YgdGhlc2UgdHlwZXMgdGhlcmUgaXMgYSBsYXlvdXQtZHJpdmVyIHdpdGggYSBjb21tb24gZnVuY3Rpb24tdmVjdG9ycwordGFibGUgd2hpY2ggYXJlIGNhbGxlZCBieSB0aGUgbmZzLWNsaWVudCBwbmZzLWNvcmUgdG8gaW1wbGVtZW50IHRoZQorZGlmZmVyZW50IGxheW91dCB0eXBlcy4KKworRmlsZXMtbGF5b3V0LWRyaXZlciBjb2RlIGlzIGluOiBmcy9uZnMvZmlsZWxheW91dC8uLiBkaXJlY3RvcnkKK09iamVjdHMtbGF5b3V0LWRlcml2ZXIgY29kZSBpcyBpbjogZnMvbmZzL29iamxheW91dC8uLiBkaXJlY3RvcnkKK0Jsb2Nrcy1sYXlvdXQtZGVyaXZlciBjb2RlIGlzIGluOiBmcy9uZnMvYmxvY2tsYXlvdXQvLi4gZGlyZWN0b3J5CitGbGV4ZmlsZXMtbGF5b3V0LWRyaXZlciBjb2RlIGlzIGluOiBmcy9uZnMvZmxleGZpbGVsYXlvdXQvLi4gZGlyZWN0b3J5CisKK29iamVjdHMtbGF5b3V0IHNldHVwCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBcyBwYXJ0IG9mIHRoZSBmdWxsIFNURCBpbXBsZW1lbnRhdGlvbiB0aGUgb2JqbGF5b3V0ZHJpdmVyLmtvIG5lZWRzLCBhdCB0aW1lcywKK3RvIGF1dG9tYXRpY2FsbHkgbG9naW4gdG8geWV0IHVuZGlzY292ZXJlZCBpc2NzaS9vc2QgZGV2aWNlcy4gRm9yIHRoaXMgdGhlCitkcml2ZXIgbWFrZXMgdXAtY2FsbGVzIHRvIGEgdXNlci1tb2RlIHNjcmlwdCBjYWxsZWQgKm9zZF9sb2dpbioKKworVGhlIHBhdGhfbmFtZSBvZiB0aGUgc2NyaXB0IHRvIHVzZSBpcyBieSBkZWZhdWx0OgorCS9zYmluL29zZF9sb2dpbi4KK1RoaXMgbmFtZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgS2VybmVsIG1vZHVsZSBwYXJhbWV0ZXI6CisJb2JqbGF5b3V0ZHJpdmVyLm9zZF9sb2dpbl9wcm9nCisKK0lmIEtlcm5lbCBkb2VzIG5vdCBmaW5kIHRoZSBvc2RfbG9naW5fcHJvZyBwYXRoIGl0IHdpbGwgemVybyBpdCBvdXQKK2FuZCB3aWxsIG5vdCBhdHRlbXB0IGZhcnRoZXIgbG9naW5zLiBBbiBhZG1pbiBjYW4gdGhlbiB3cml0ZSBuZXcgdmFsdWUKK3RvIHRoZSBvYmpsYXlvdXRkcml2ZXIub3NkX2xvZ2luX3Byb2cgS2VybmVsIHBhcmFtZXRlciB0byByZS1lbmFibGUgaXQuCisKK1RoZSAvc2Jpbi9vc2RfbG9naW4gaXMgcGFydCBvZiB0aGUgbmZzLXV0aWxzIHBhY2thZ2UsIGFuZCBzaG91bGQgdXN1YWxseQorYmUgaW5zdGFsbGVkIG9uIGRpc3RyaWJ1dGlvbnMgdGhhdCBzdXBwb3J0IHRoaXMgS2VybmVsIHZlcnNpb24uCisKK1RoZSBBUEkgdG8gdGhlIGxvZ2luIHNjcmlwdCBpcyBhcyBmb2xsb3dzOgorCVVzYWdlOiAkMCAtdSA8VVJJPiAtbyA8T1NETkFNRT4gLXMgPFNZU1RFTUlEPgorCU9wdGlvbnM6CisJCS11CQl0YXJnZXQgdXJpIGUuZy4gaXNjc2k6Ly88aXA+Ojxwb3J0PgorCQkJCShhbGx3YXlzIGV4aXN0cykKKwkJCQkoTW9yZSBwcm90b2NvbHMgY2FuIGJlIGRlZmluZWQgaW4gdGhlIGZ1dHVyZS4KKwkJCQkgVGhlIGNsaWVudCBkb2VzIG5vdCBpbnRlcnByZXQgdGhpcyBzdHJpbmcgaXQgaXMKKwkJCQkgcGFzc2VkIHVuY2hhbmdlZCBhcyByZWNlaXZlZCBmcm9tIHRoZSBTZXJ2ZXIpCisJCS1vCQlvc2RuYW1lIG9mIHRoZSByZXF1ZXN0ZWQgdGFyZ2V0IE9TRAorCQkJCShNaWdodCBiZSBlbXB0eSkKKwkJCQkoQSBzdHJpbmcgd2hpY2ggZGVub3RlcyB0aGUgT1NEIG5hbWUsIHRoZXJlIGlzIGEKKwkJCQkgbGltaXQgb2YgNjQgY2hhcnMgb24gdGhpcyBzdHJpbmcpCisJCS1zIAkJc3lzdGVtaWQgb2YgdGhlIHJlcXVlc3RlZCB0YXJnZXQgT1NECisJCQkJKE1pZ2h0IGJlIGVtcHR5KQorCQkJCShUaGlzIHN0cmluZywgaWYgbm90IGVtcHR5IGlzIGFsd2F5cyBhbiBoZXgKKwkJCQkgcmVwcmVzZW50YXRpb24gb2YgdGhlIDIwIGJ5dGVzIG9zZF9zeXN0ZW1faWQpCisKK2Jsb2Nrcy1sYXlvdXQgc2V0dXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVE9ETzogRG9jdW1lbnQgdGhlIHNldHVwIG5lZWRzIG9mIHRoZSBibG9ja3MgbGF5b3V0IGRyaXZlcgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uZnMvcnBjLWNhY2hlLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzL3JwYy1jYWNoZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJjYWFlZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzL3JwYy1jYWNoZS50eHQKQEAgLTAsMCArMSwyMDIgQEAKKwlUaGlzIGRvY3VtZW50IGdpdmVzIGEgYnJpZWYgaW50cm9kdWN0aW9uIHRvIHRoZSBjYWNoaW5nCittZWNoYW5pc21zIGluIHRoZSBzdW5ycGMgbGF5ZXIgdGhhdCBpcyB1c2VkLCBpbiBwYXJ0aWN1bGFyLAorZm9yIE5GUyBhdXRoZW50aWNhdGlvbi4KKworQ0FDSEVTCis9PT09PT0KK1RoZSBjYWNoaW5nIHJlcGxhY2VzIHRoZSBvbGQgZXhwb3J0cyB0YWJsZSBhbmQgYWxsb3dzIGZvcgorYSB3aWRlIHZhcmlldHkgb2YgdmFsdWVzIHRvIGJlIGNhY2hlcy4KKworVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGNhY2hlcyB0aGF0IGFyZSBzaW1pbGFyIGluIHN0cnVjdHVyZSB0aG91Z2gKK3F1aXRlIHBvc3NpYmx5IHZlcnkgZGlmZmVyZW50IGluIGNvbnRlbnQgYW5kIHVzZS4gIFRoZXJlIGlzIGEgY29ycHVzCitvZiBjb21tb24gY29kZSBmb3IgbWFuYWdpbmcgdGhlc2UgY2FjaGVzLgorCitFeGFtcGxlcyBvZiBjYWNoZXMgdGhhdCBhcmUgbGlrZWx5IHRvIGJlIG5lZWRlZCBhcmU6CisgIC0gbWFwcGluZyBmcm9tIElQIGFkZHJlc3MgdG8gY2xpZW50IG5hbWUKKyAgLSBtYXBwaW5nIGZyb20gY2xpZW50IG5hbWUgYW5kIGZpbGVzeXN0ZW0gdG8gZXhwb3J0IG9wdGlvbnMKKyAgLSBtYXBwaW5nIGZyb20gVUlEIHRvIGxpc3Qgb2YgR0lEcywgdG8gd29yayBhcm91bmQgTkZTJ3MgbGltaXRhdGlvbgorICAgIG9mIDE2IGdpZHMuCisgIC0gbWFwcGluZ3MgYmV0d2VlbiBsb2NhbCBVSUQvR0lEIGFuZCByZW1vdGUgVUlEL0dJRCBmb3Igc2l0ZXMgdGhhdAorICAgIGRvIG5vdCBoYXZlIHVuaWZvcm0gdWlkIGFzc2lnbm1lbnQKKyAgLSBtYXBwaW5nIGZyb20gbmV0d29yayBpZGVudGlmeSB0byBwdWJsaWMga2V5IGZvciBjcnlwdG8gYXV0aGVudGljYXRpb24uCisKK1RoZSBjb21tb24gY29kZSBoYW5kbGVzIHN1Y2ggdGhpbmdzIGFzOgorICAgLSBnZW5lcmFsIGNhY2hlIGxvb2t1cCB3aXRoIGNvcnJlY3QgbG9ja2luZworICAgLSBzdXBwb3J0aW5nICdORUdBVElWRScgYXMgd2VsbCBhcyBwb3NpdGl2ZSBlbnRyaWVzCisgICAtIGFsbG93aW5nIGFuIEVYUElSRUQgdGltZSBvbiBjYWNoZSBpdGVtcywgYW5kIHJlbW92aW5nCisgICAgIGl0ZW1zIGFmdGVyIHRoZXkgZXhwaXJlLCBhbmQgYXJlIG5vIGxvbmdlciBpbi11c2UuCisgICAtIG1ha2luZyByZXF1ZXN0cyB0byB1c2VyLXNwYWNlIHRvIGZpbGwgaW4gY2FjaGUgZW50cmllcworICAgLSBhbGxvd2luZyB1c2VyLXNwYWNlIHRvIGRpcmVjdGx5IHNldCBlbnRyaWVzIGluIHRoZSBjYWNoZQorICAgLSBkZWxheWluZyBSUEMgcmVxdWVzdHMgdGhhdCBkZXBlbmQgb24gYXMteWV0IGluY29tcGxldGUKKyAgICAgY2FjaGUgZW50cmllcywgYW5kIHJlcGxheWluZyB0aG9zZSByZXF1ZXN0cyB3aGVuIHRoZSBjYWNoZSBlbnRyeQorICAgICBpcyBjb21wbGV0ZS4KKyAgIC0gY2xlYW4gb3V0IG9sZCBlbnRyaWVzIGFzIHRoZXkgZXhwaXJlLgorCitDcmVhdGluZyBhIENhY2hlCistLS0tLS0tLS0tLS0tLS0tCisKKzEvIEEgY2FjaGUgbmVlZHMgYSBkYXR1bSB0byBzdG9yZS4gIFRoaXMgaXMgaW4gdGhlIGZvcm0gb2YgYQorICAgc3RydWN0dXJlIGRlZmluaXRpb24gdGhhdCBtdXN0IGNvbnRhaW4gYQorICAgICBzdHJ1Y3QgY2FjaGVfaGVhZAorICAgYXMgYW4gZWxlbWVudCwgdXN1YWxseSB0aGUgZmlyc3QuCisgICBJdCB3aWxsIGFsc28gY29udGFpbiBhIGtleSBhbmQgc29tZSBjb250ZW50LgorICAgRWFjaCBjYWNoZSBlbGVtZW50IGlzIHJlZmVyZW5jZSBjb3VudGVkIGFuZCBjb250YWlucworICAgZXhwaXJ5IGFuZCB1cGRhdGUgdGltZXMgZm9yIHVzZSBpbiBjYWNoZSBtYW5hZ2VtZW50LgorMi8gQSBjYWNoZSBuZWVkcyBhICJjYWNoZV9kZXRhaWwiIHN0cnVjdHVyZSB0aGF0CisgICBkZXNjcmliZXMgdGhlIGNhY2hlLiAgVGhpcyBzdG9yZXMgdGhlIGhhc2ggdGFibGUsIHNvbWUKKyAgIHBhcmFtZXRlcnMgZm9yIGNhY2hlIG1hbmFnZW1lbnQsIGFuZCBzb21lIG9wZXJhdGlvbnMgZGV0YWlsaW5nIGhvdworICAgdG8gd29yayB3aXRoIHBhcnRpY3VsYXIgY2FjaGUgaXRlbXMuCisgICBUaGUgb3BlcmF0aW9ucyByZXF1aXJlcyBhcmU6CisgICAJc3RydWN0IGNhY2hlX2hlYWQgKmFsbG9jKHZvaWQpCisJCVRoaXMgc2ltcGx5IGFsbG9jYXRlcyBhcHByb3ByaWF0ZSBtZW1vcnkgYW5kIHJldHVybnMKKyAgIAkJYSBwb2ludGVyIHRvIHRoZSBjYWNoZV9kZXRhaWwgZW1iZWRkZWQgd2l0aGluIHRoZQorCQlzdHJ1Y3R1cmUKKwl2b2lkIGNhY2hlX3B1dChzdHJ1Y3Qga3JlZiAqKQorCQlUaGlzIGlzIGNhbGxlZCB3aGVuIHRoZSBsYXN0IHJlZmVyZW5jZSB0byBhbiBpdGVtIGlzCisJCWRyb3BwZWQuICBUaGUgcG9pbnRlciBwYXNzZWQgaXMgdG8gdGhlICdyZWYnIGZpZWxkCisJCWluIHRoZSBjYWNoZV9oZWFkLiAgY2FjaGVfcHV0IHNob3VsZCByZWxlYXNlIGFueQorCQlyZWZlcmVuY2VzIGNyZWF0ZSBieSAnY2FjaGVfaW5pdCcgYW5kLCBpZiBDQUNIRV9WQUxJRAorCQlpcyBzZXQsIGFueSByZWZlcmVuY2VzIGNyZWF0ZWQgYnkgY2FjaGVfdXBkYXRlLgorCQlJdCBzaG91bGQgdGhlbiByZWxlYXNlIHRoZSBtZW1vcnkgYWxsb2NhdGVkIGJ5CisgICAJCSdhbGxvYycuCisgICAgICAgIGludCBtYXRjaChzdHJ1Y3QgY2FjaGVfaGVhZCAqb3JpZywgc3RydWN0IGNhY2hlX2hlYWQgKm5ldykKKwkJdGVzdCBpZiB0aGUga2V5cyBpbiB0aGUgdHdvIHN0cnVjdHVyZXMgbWF0Y2guICBSZXR1cm4KKwkJMSBpZiB0aGV5IGRvLCAwIGlmIHRoZXkgZG9uJ3QuCisJdm9pZCBpbml0KHN0cnVjdCBjYWNoZV9oZWFkICpvcmlnLCBzdHJ1Y3QgY2FjaGVfaGVhZCAqbmV3KQorCQlTZXQgdGhlICdrZXknIGZpZWxkcyBpbiAnbmV3JyBmcm9tICdvcmlnJy4gIFRoaXMgbWF5CisJCWluY2x1ZGUgdGFraW5nIHJlZmVyZW5jZXMgdG8gc2hhcmVkIG9iamVjdHMuCisJdm9pZCB1cGRhdGUoc3RydWN0IGNhY2hlX2hlYWQgKm9yaWcsIHN0cnVjdCBjYWNoZV9oZWFkICpuZXcpCisJCVNldCB0aGUgJ2NvbnRlbnQnIGZpbGVkcyBpbiAnbmV3JyBmcm9tICdvcmlnJy4KKwlpbnQgY2FjaGVfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBjYWNoZV9kZXRhaWwgKmNkLAorCQkJc3RydWN0IGNhY2hlX2hlYWQgKmgpCisJCU9wdGlvbmFsLiAgVXNlZCB0byBwcm92aWRlIGEgL3Byb2MgZmlsZSB0aGF0IGxpc3RzIHRoZQorCQljb250ZW50cyBvZiBhIGNhY2hlLiAgVGhpcyBzaG91bGQgc2hvdyBvbmUgaXRlbSwKKyAgIAkJdXN1YWxseSBvbiBqdXN0IG9uZSBsaW5lLgorCWludCBjYWNoZV9yZXF1ZXN0KHN0cnVjdCBjYWNoZV9kZXRhaWwgKmNkLCBzdHJ1Y3QgY2FjaGVfaGVhZCAqaCwKKyAgIAkJY2hhciAqKmJwcCwgaW50ICpibGVuKQorCQlGb3JtYXQgYSByZXF1ZXN0IHRvIGJlIHNlbmQgdG8gdXNlci1zcGFjZSBmb3IgYW4gaXRlbQorICAgCQl0byBiZSBpbnN0YW50aWF0ZWQuICAqYnBwIGlzIGEgYnVmZmVyIG9mIHNpemUgKmJsZW4uCisJCWJwcCBzaG91bGQgYmUgbW92ZWQgZm9yd2FyZCBvdmVyIHRoZSBlbmNvZGVkIG1lc3NhZ2UsCisJCWFuZCAgKmJsZW4gc2hvdWxkIGJlIHJlZHVjZWQgdG8gc2hvdyBob3cgbXVjaCBmcmVlCisJCXNwYWNlIHJlbWFpbnMuICBSZXR1cm4gMCBvbiBzdWNjZXNzIG9yIDwwIGlmIG5vdAorCQllbm91Z2ggcm9vbSBvciBvdGhlciBwcm9ibGVtLgorCWludCBjYWNoZV9wYXJzZShzdHJ1Y3QgY2FjaGVfZGV0YWlsICpjZCwgY2hhciAqYnVmLCBpbnQgbGVuKQorCQlBIG1lc3NhZ2UgZnJvbSB1c2VyIHNwYWNlIGhhcyBhcnJpdmVkIHRvIGZpbGwgb3V0IGEKKwkJY2FjaGUgZW50cnkuICBJdCBpcyBpbiAnYnVmJyBvZiBsZW5ndGggJ2xlbicuCisJCWNhY2hlX3BhcnNlIHNob3VsZCBwYXJzZSB0aGlzLCBmaW5kIHRoZSBpdGVtIGluIHRoZQorCQljYWNoZSB3aXRoIHN1bnJwY19jYWNoZV9sb29rdXAsIGFuZCB1cGRhdGUgdGhlIGl0ZW0KKwkJd2l0aCBzdW5ycGNfY2FjaGVfdXBkYXRlLgorCisKKzMvIEEgY2FjaGUgbmVlZHMgdG8gYmUgcmVnaXN0ZXJlZCB1c2luZyBjYWNoZV9yZWdpc3RlcigpLiAgVGhpcworICAgaW5jbHVkZXMgaXQgb24gYSBsaXN0IG9mIGNhY2hlcyB0aGF0IHdpbGwgYmUgcmVndWxhcmx5CisgICBjbGVhbmVkIHRvIGRpc2NhcmQgb2xkIGRhdGEuCisKK1VzaW5nIGEgY2FjaGUKKy0tLS0tLS0tLS0tLS0KKworVG8gZmluZCBhIHZhbHVlIGluIGEgY2FjaGUsIGNhbGwgc3VucnBjX2NhY2hlX2xvb2t1cCBwYXNzaW5nIGEgcG9pbnRlcgordG8gdGhlIGNhY2hlX2hlYWQgaW4gYSBzYW1wbGUgaXRlbSB3aXRoIHRoZSAna2V5JyBmaWVsZHMgZmlsbGVkIGluLgorVGhpcyB3aWxsIGJlIHBhc3NlZCB0byAtPm1hdGNoIHRvIGlkZW50aWZ5IHRoZSB0YXJnZXQgZW50cnkuICBJZiBubworZW50cnkgaXMgZm91bmQsIGEgbmV3IGVudHJ5IHdpbGwgYmUgY3JlYXRlLCBhZGRlZCB0byB0aGUgY2FjaGUsIGFuZAorbWFya2VkIGFzIG5vdCBjb250YWluaW5nIHZhbGlkIGRhdGEuCisKK1RoZSBpdGVtIHJldHVybmVkIGlzIHR5cGljYWxseSBwYXNzZWQgdG8gY2FjaGVfY2hlY2sgd2hpY2ggd2lsbCBjaGVjaworaWYgdGhlIGRhdGEgaXMgdmFsaWQsIGFuZCBtYXkgaW5pdGlhdGUgYW4gdXAtY2FsbCB0byBnZXQgZnJlc2ggZGF0YS4KK2NhY2hlX2NoZWNrIHdpbGwgcmV0dXJuIC1FTk9FTlQgaW4gdGhlIGVudHJ5IGlzIG5lZ2F0aXZlIG9yIGlmIGFuIHVwCitjYWxsIGlzIG5lZWRlZCBidXQgbm90IHBvc3NpYmxlLCAtRUFHQUlOIGlmIGFuIHVwY2FsbCBpcyBwZW5kaW5nLAorb3IgMCBpZiB0aGUgZGF0YSBpcyB2YWxpZDsKKworY2FjaGVfY2hlY2sgY2FuIGJlIHBhc3NlZCBhICJzdHJ1Y3QgY2FjaGVfcmVxICoiLiAgVGhpcyBzdHJ1Y3R1cmUgaXMKK3R5cGljYWxseSBlbWJlZGRlZCBpbiB0aGUgYWN0dWFsIHJlcXVlc3QgYW5kIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhCitkZWZlcnJlZCBjb3B5IG9mIHRoZSByZXF1ZXN0IChzdHJ1Y3QgY2FjaGVfZGVmZXJyZWRfcmVxKS4gIFRoaXMgaXMKK2RvbmUgd2hlbiB0aGUgZm91bmQgY2FjaGUgaXRlbSBpcyBub3QgdXB0b2RhdGUsIGJ1dCB0aGUgaXMgcmVhc29uIHRvCitiZWxpZXZlIHRoYXQgdXNlcnNwYWNlIG1pZ2h0IHByb3ZpZGUgaW5mb3JtYXRpb24gc29vbi4gIFdoZW4gdGhlIGNhY2hlCitpdGVtIGRvZXMgYmVjb21lIHZhbGlkLCB0aGUgZGVmZXJyZWQgY29weSBvZiB0aGUgcmVxdWVzdCB3aWxsIGJlCityZXZpc2l0ZWQgKC0+cmV2aXNpdCkuICBJdCBpcyBleHBlY3RlZCB0aGF0IHRoaXMgbWV0aG9kIHdpbGwKK3Jlc2NoZWR1bGUgdGhlIHJlcXVlc3QgZm9yIHByb2Nlc3NpbmcuCisKK1RoZSB2YWx1ZSByZXR1cm5lZCBieSBzdW5ycGNfY2FjaGVfbG9va3VwIGNhbiBhbHNvIGJlIHBhc3NlZCB0bworc3VucnBjX2NhY2hlX3VwZGF0ZSB0byBzZXQgdGhlIGNvbnRlbnQgZm9yIHRoZSBpdGVtLiAgQSBzZWNvbmQgaXRlbSBpcworcGFzc2VkIHdoaWNoIHNob3VsZCBob2xkIHRoZSBjb250ZW50LiAgSWYgdGhlIGl0ZW0gZm91bmQgYnkgX2xvb2t1cAoraGFzIHZhbGlkIGRhdGEsIHRoZW4gaXQgaXMgZGlzY2FyZGVkIGFuZCBhIG5ldyBpdGVtIGlzIGNyZWF0ZWQuICBUaGlzCitzYXZlcyBhbnkgdXNlciBvZiBhbiBpdGVtIGZyb20gd29ycnlpbmcgYWJvdXQgY29udGVudCBjaGFuZ2luZyB3aGlsZQoraXQgaXMgYmVpbmcgaW5zcGVjdGVkLiAgSWYgdGhlIGl0ZW0gZm91bmQgYnkgX2xvb2t1cCBkb2VzIG5vdCBjb250YWluCit2YWxpZCBkYXRhLCB0aGVuIHRoZSBjb250ZW50IGlzIGNvcGllZCBhY3Jvc3MgYW5kIENBQ0hFX1ZBTElEIGlzIHNldC4KKworUG9wdWxhdGluZyBhIGNhY2hlCistLS0tLS0tLS0tLS0tLS0tLS0KKworRWFjaCBjYWNoZSBoYXMgYSBuYW1lLCBhbmQgd2hlbiB0aGUgY2FjaGUgaXMgcmVnaXN0ZXJlZCwgYSBkaXJlY3RvcnkKK3dpdGggdGhhdCBuYW1lIGlzIGNyZWF0ZWQgaW4gL3Byb2MvbmV0L3JwYworCitUaGlzIGRpcmVjdG9yeSBjb250YWlucyBhIGZpbGUgY2FsbGVkICdjaGFubmVsJyB3aGljaCBpcyBhIGNoYW5uZWwKK2ZvciBjb21tdW5pY2F0aW5nIGJldHdlZW4ga2VybmVsIGFuZCB1c2VyIGZvciBwb3B1bGF0aW5nIHRoZSBjYWNoZS4KK1RoaXMgZGlyZWN0b3J5IG1heSBsYXRlciBjb250YWluIG90aGVyIGZpbGVzIG9mIGludGVyYWN0aW5nCit3aXRoIHRoZSBjYWNoZS4KKworVGhlICdjaGFubmVsJyB3b3JrcyBhIGJpdCBsaWtlIGEgZGF0YWdyYW0gc29ja2V0LiBFYWNoICd3cml0ZScgaXMKK3Bhc3NlZCBhcyBhIHdob2xlIHRvIHRoZSBjYWNoZSBmb3IgcGFyc2luZyBhbmQgaW50ZXJwcmV0YXRpb24uCitFYWNoIGNhY2hlIGNhbiB0cmVhdCB0aGUgd3JpdGUgcmVxdWVzdHMgZGlmZmVyZW50bHksIGJ1dCBpdCBpcworZXhwZWN0ZWQgdGhhdCBhIG1lc3NhZ2Ugd3JpdHRlbiB3aWxsIGNvbnRhaW46CisgIC0gYSBrZXkKKyAgLSBhbiBleHBpcnkgdGltZQorICAtIGEgY29udGVudC4KK3dpdGggdGhlIGludGVudGlvbiB0aGF0IGFuIGl0ZW0gaW4gdGhlIGNhY2hlIHdpdGggdGhlIGdpdmUga2V5CitzaG91bGQgYmUgY3JlYXRlIG9yIHVwZGF0ZWQgdG8gaGF2ZSB0aGUgZ2l2ZW4gY29udGVudCwgYW5kIHRoZQorZXhwaXJ5IHRpbWUgc2hvdWxkIGJlIHNldCBvbiB0aGF0IGl0ZW0uCisKK1JlYWRpbmcgZnJvbSBhIGNoYW5uZWwgaXMgYSBiaXQgbW9yZSBpbnRlcmVzdGluZy4gIFdoZW4gYSBjYWNoZQorbG9va3VwIGZhaWxzLCBvciB3aGVuIGl0IHN1Y2NlZWRzIGJ1dCBmaW5kcyBhbiBlbnRyeSB0aGF0IG1heSBzb29uCitleHBpcmUsIGEgcmVxdWVzdCBpcyBsb2RnZWQgZm9yIHRoYXQgY2FjaGUgaXRlbSB0byBiZSB1cGRhdGVkIGJ5Cit1c2VyLXNwYWNlLiAgVGhlc2UgcmVxdWVzdHMgYXBwZWFyIGluIHRoZSBjaGFubmVsIGZpbGUuCisKK1N1Y2Nlc3NpdmUgcmVhZHMgd2lsbCByZXR1cm4gc3VjY2Vzc2l2ZSByZXF1ZXN0cy4KK0lmIHRoZXJlIGFyZSBubyBtb3JlIHJlcXVlc3RzIHRvIHJldHVybiwgcmVhZCB3aWxsIHJldHVybiBFT0YsIGJ1dCBhCitzZWxlY3Qgb3IgcG9sbCBmb3IgcmVhZCB3aWxsIGJsb2NrIHdhaXRpbmcgZm9yIGFub3RoZXIgcmVxdWVzdCB0byBiZQorYWRkZWQuCisKK1RodXMgYSB1c2VyLXNwYWNlIGhlbHBlciBpcyBsaWtlbHkgdG86CisgIG9wZW4gdGhlIGNoYW5uZWwuCisgICAgc2VsZWN0IGZvciByZWFkYWJsZQorICAgIHJlYWQgYSByZXF1ZXN0CisgICAgd3JpdGUgYSByZXNwb25zZQorICBsb29wLgorCitJZiBpdCBkaWVzIGFuZCBuZWVkcyB0byBiZSByZXN0YXJ0ZWQsIGFueSByZXF1ZXN0cyB0aGF0IGhhdmUgbm90IGJlZW4KK2Fuc3dlcmVkIHdpbGwgc3RpbGwgYXBwZWFyIGluIHRoZSBmaWxlIGFuZCB3aWxsIGJlIHJlYWQgYnkgdGhlIG5ldworaW5zdGFuY2Ugb2YgdGhlIGhlbHBlci4KKworRWFjaCBjYWNoZSBzaG91bGQgZGVmaW5lIGEgImNhY2hlX3BhcnNlIiBtZXRob2Qgd2hpY2ggdGFrZXMgYSBtZXNzYWdlCit3cml0dGVuIGZyb20gdXNlci1zcGFjZSBhbmQgcHJvY2Vzc2VzIGl0LiAgSXQgc2hvdWxkIHJldHVybiBhbiBlcnJvcgorKHdoaWNoIHByb3BhZ2F0ZXMgYmFjayB0byB0aGUgd3JpdGUgc3lzY2FsbCkgb3IgMC4KKworRWFjaCBjYWNoZSBzaG91bGQgYWxzbyBkZWZpbmUgYSAiY2FjaGVfcmVxdWVzdCIgbWV0aG9kIHdoaWNoCit0YWtlcyBhIGNhY2hlIGl0ZW0gYW5kIGVuY29kZXMgYSByZXF1ZXN0IGludG8gdGhlIGJ1ZmZlcgorcHJvdmlkZWQuCisKK05vdGU6IElmIGEgY2FjaGUgaGFzIG5vIGFjdGl2ZSByZWFkZXJzIG9uIHRoZSBjaGFubmVsLCBhbmQgaGFzIGhhZCBub3QKK2FjdGl2ZSByZWFkZXJzIGZvciBtb3JlIHRoYW4gNjAgc2Vjb25kcywgZnVydGhlciByZXF1ZXN0cyB3aWxsIG5vdCBiZQorYWRkZWQgdG8gdGhlIGNoYW5uZWwgYnV0IGluc3RlYWQgYWxsIGxvb2t1cHMgdGhhdCBkbyBub3QgZmluZCBhIHZhbGlkCitlbnRyeSB3aWxsIGZhaWwuICBUaGlzIGlzIHBhcnRseSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eTogVGhlCitwcmV2aW91cyBuZnMgZXhwb3J0cyB0YWJsZSB3YXMgZGVlbWVkIHRvIGJlIGF1dGhvcml0YXRpdmUgYW5kIGEKK2ZhaWxlZCBsb29rdXAgbWVhbnQgYSBkZWZpbml0ZSAnbm8nLgorCityZXF1ZXN0L3Jlc3BvbnNlIGZvcm1hdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hpbGUgZWFjaCBjYWNoZSBpcyBmcmVlIHRvIHVzZSBpdHMgb3duIGZvcm1hdCBmb3IgcmVxdWVzdHMKK2FuZCByZXNwb25zZXMgb3ZlciBjaGFubmVsLCB0aGUgZm9sbG93aW5nIGlzIHJlY29tbWVuZGVkIGFzCithcHByb3ByaWF0ZSBhbmQgc3VwcG9ydCByb3V0aW5lcyBhcmUgYXZhaWxhYmxlIHRvIGhlbHA6CitFYWNoIHJlcXVlc3Qgb3IgcmVzcG9uc2UgcmVjb3JkIHNob3VsZCBiZSBwcmludGFibGUgQVNDSUkKK3dpdGggcHJlY2lzZWx5IG9uZSBuZXdsaW5lIGNoYXJhY3RlciB3aGljaCBzaG91bGQgYmUgYXQgdGhlIGVuZC4KK0ZpZWxkcyB3aXRoaW4gdGhlIHJlY29yZCBzaG91bGQgYmUgc2VwYXJhdGVkIGJ5IHNwYWNlcywgbm9ybWFsbHkgb25lLgorSWYgc3BhY2VzLCBuZXdsaW5lcywgb3IgbnVsIGNoYXJhY3RlcnMgYXJlIG5lZWRlZCBpbiBhIGZpZWxkIHRoZXkKK211Y2ggYmUgcXVvdGVkLiAgdHdvIG1lY2hhbmlzbXMgYXJlIGF2YWlsYWJsZToKKzEvIElmIGEgZmllbGQgYmVnaW5zICdceCcgdGhlbiBpdCBtdXN0IGNvbnRhaW4gYW4gZXZlbiBudW1iZXIgb2YKKyAgIGhleCBkaWdpdHMsIGFuZCBwYWlycyBvZiB0aGVzZSBkaWdpdHMgcHJvdmlkZSB0aGUgYnl0ZXMgaW4gdGhlCisgICBmaWVsZC4KKzIvIG90aGVyd2lzZSBhIFwgaW4gdGhlIGZpZWxkIG11c3QgYmUgZm9sbG93ZWQgYnkgMyBvY3RhbCBkaWdpdHMKKyAgIHdoaWNoIGdpdmUgdGhlIGNvZGUgZm9yIGEgYnl0ZS4gIE90aGVyIGNoYXJhY3RlcnMgYXJlIHRyZWF0ZWQKKyAgIGFzIHRoZW0gc2VsdmVzLiAgQXQgdGhlIHZlcnkgbGVhc3QsIHNwYWNlLCBuZXdsaW5lLCBudWwsIGFuZAorICAgJ1wnIG11c3QgYmUgcXVvdGVkIGluIHRoaXMgd2F5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uZnMvcnBjLXNlcnZlci1nc3MudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uZnMvcnBjLXNlcnZlci1nc3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNmY0YmUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL25mcy9ycGMtc2VydmVyLWdzcy50eHQKQEAgLTAsMCArMSw5MSBAQAorCitycGNzZWNfZ3NzIHN1cHBvcnQgZm9yIGtlcm5lbCBSUEMgc2VydmVycworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBkb2N1bWVudCBnaXZlcyByZWZlcmVuY2VzIHRvIHRoZSBzdGFuZGFyZHMgYW5kIHByb3RvY29scyB1c2VkIHRvCitpbXBsZW1lbnQgUlBDR1NTIGF1dGhlbnRpY2F0aW9uIGluIGtlcm5lbCBSUEMgc2VydmVycyBzdWNoIGFzIHRoZSBORlMKK3NlcnZlciBhbmQgdGhlIE5GUyBjbGllbnQncyBORlN2NC4wIGNhbGxiYWNrIHNlcnZlci4gIChCdXQgbm90ZSB0aGF0CitORlN2NC4xIGFuZCBoaWdoZXIgZG9uJ3QgcmVxdWlyZSB0aGUgY2xpZW50IHRvIGFjdCBhcyBhIHNlcnZlciBmb3IgdGhlCitwdXJwb3NlcyBvZiBhdXRoZW50aWNhdGlvbi4pCisKK1JQQ0dTUyBpcyBzcGVjaWZpZWQgaW4gYSBmZXcgSUVURiBkb2N1bWVudHM6CisgLSBSRkMyMjAzIHYxOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvcmZjL3JmYzIyMDMudHh0CisgLSBSRkM1NDAzIHYyOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvcmZjL3JmYzU0MDMudHh0CithbmQgdGhlcmUgaXMgYSAzcmQgdmVyc2lvbiAgYmVpbmcgcHJvcG9zZWQ6CisgLSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaWQvZHJhZnQtd2lsbGlhbXMtcnBjc2VjZ3NzdjMudHh0CisgICAoQXQgZHJhZnQgbi4gMDIgYXQgdGhlIHRpbWUgb2Ygd3JpdGluZykKKworQmFja2dyb3VuZAorLS0tLS0tLS0tLQorCitUaGUgUlBDR1NTIEF1dGhlbnRpY2F0aW9uIG1ldGhvZCBkZXNjcmliZXMgYSB3YXkgdG8gcGVyZm9ybSBHU1NBUEkKK0F1dGhlbnRpY2F0aW9uIGZvciBORlMuICBBbHRob3VnaCBHU1NBUEkgaXMgaXRzZWxmIGNvbXBsZXRlbHkgbWVjaGFuaXNtCithZ25vc3RpYywgaW4gbWFueSBjYXNlcyBvbmx5IHRoZSBLUkI1IG1lY2hhbmlzbSBpcyBzdXBwb3J0ZWQgYnkgTkZTCitpbXBsZW1lbnRhdGlvbnMuCisKK1RoZSBMaW51eCBrZXJuZWwsIGF0IHRoZSBtb21lbnQsIHN1cHBvcnRzIG9ubHkgdGhlIEtSQjUgbWVjaGFuaXNtLCBhbmQKK2RlcGVuZHMgb24gR1NTQVBJIGV4dGVuc2lvbnMgdGhhdCBhcmUgS1JCNSBzcGVjaWZpYy4KKworR1NTQVBJIGlzIGEgY29tcGxleCBsaWJyYXJ5LCBhbmQgaW1wbGVtZW50aW5nIGl0IGNvbXBsZXRlbHkgaW4ga2VybmVsIGlzCit1bndhcnJhbnRlZC4gSG93ZXZlciBHU1NBUEkgb3BlcmF0aW9ucyBhcmUgZnVuZGVtZW50YWxseSBzZXBhcmFibGUgaW4gMgorcGFydHM6CistIGluaXRpYWwgY29udGV4dCBlc3RhYmxpc2htZW50CistIGludGVncml0eS9wcml2YWN5IHByb3RlY3Rpb24gKHNpZ25pbmcgYW5kIGVuY3J5cHRpbmcgb2YgaW5kaXZpZHVhbAorICBwYWNrZXRzKQorCitUaGUgZm9ybWVyIGlzIG1vcmUgY29tcGxleCBhbmQgcG9saWN5LWluZGVwZW5kZW50LCBidXQgbGVzcworcGVyZm9ybWFuY2Utc2Vuc2l0aXZlLiAgVGhlIGxhdHRlciBpcyBzaW1wbGVyIGFuZCBuZWVkcyB0byBiZSB2ZXJ5IGZhc3QuCisKK1RoZXJlZm9yZSwgd2UgcGVyZm9ybSBwZXItcGFja2V0IGludGVncml0eSBhbmQgcHJpdmFjeSBwcm90ZWN0aW9uIGluIHRoZQora2VybmVsLCBidXQgbGVhdmUgdGhlIGluaXRpYWwgY29udGV4dCBlc3RhYmxpc2htZW50IHRvIHVzZXJzcGFjZS4gIFdlCituZWVkIHVwY2FsbHMgdG8gcmVxdWVzdCB1c2Vyc3BhY2UgdG8gcGVyZm9ybSBjb250ZXh0IGVzdGFibGlzaG1lbnQuCisKK05GUyBTZXJ2ZXIgTGVnYWN5IFVwY2FsbCBNZWNoYW5pc20KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGNsYXNzaWMgdXBjYWxsIG1lY2hhbmlzbSB1c2VzIGEgY3VzdG9tIHRleHQgYmFzZWQgdXBjYWxsIG1lY2hhbmlzbQordG8gdGFsayB0byBhIGN1c3RvbSBkYWVtb24gY2FsbGVkIHJwYy5zdmNnc3NkIHRoYXQgaXMgcHJvdmlkZSBieSB0aGUKK25mcy11dGlscyBwYWNrYWdlLgorCitUaGlzIHVwY2FsbCBtZWNoYW5pc20gaGFzIDIgbGltaXRhdGlvbnM6CisKK0EpIEl0IGNhbiBoYW5kbGUgdG9rZW5zIHRoYXQgYXJlIG5vIGJpZ2dlciB0aGFuIDJLaUIKKworSW4gc29tZSBLZXJiZXJvcyBkZXBsb3ltZW50IEdTU0FQSSB0b2tlbnMgY2FuIGJlIHF1aXRlIGJpZywgdXAgYW5kCitiZXlvbmQgNjRLaUIgaW4gc2l6ZSBkdWUgdG8gdmFyaW91cyBhdXRob3JpemF0aW9uIGV4dGVuc2lvbnMgYXR0YWNrZWQgdG8KK3RoZSBLZXJiZXJvcyB0aWNrZXRzLCB0aGF0IG5lZWRzIHRvIGJlIHNlbnQgdGhyb3VnaCB0aGUgR1NTIGxheWVyIGluCitvcmRlciB0byBwZXJmb3JtIGNvbnRleHQgZXN0YWJsaXNobWVudC4KKworQikgSXQgZG9lcyBub3QgcHJvcGVybHkgaGFuZGxlIGNyZWRzIHdoZXJlIHRoZSB1c2VyIGlzIG1lbWJlciBvZiBtb3JlCit0aGFuIGEgZmV3IGhvdXNhbmQgZ3JvdXBzICh0aGUgY3VycmVudCBoYXJkIGxpbWl0IGluIHRoZSBrZXJuZWwgaXMgNjVLCitncm91cHMpIGR1ZSB0byBsaW1pdGF0aW9uIG9uIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgdGhhdCBjYW4gYmUgc2VuZAorYmFjayB0byB0aGUga2VybmVsICg0S2lCKS4KKworTkZTIFNlcnZlciBOZXcgUlBDIFVwY2FsbCBNZWNoYW5pc20KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBuZXdlciB1cGNhbGwgbWVjaGFuaXNtIHVzZXMgUlBDIG92ZXIgYSB1bml4IHNvY2tldCB0byBhIGRhZW1vbgorY2FsbGVkIGdzcy1wcm94eSwgaW1wbGVtZW50ZWQgYnkgYSB1c2Vyc3BhY2UgcHJvZ3JhbSBjYWxsZWQgR3NzcHJveHkuCisKK1RoZSBnc3NfcHJveHkgUlBDIHByb3RvY29sIGlzIGN1cnJlbnRseSBkb2N1bWVudGVkIGhlcmU6CisKKwlodHRwczovL2ZlZG9yYWhvc3RlZC5vcmcvZ3NzLXByb3h5L3dpa2kvUHJvdG9jb2xEb2N1bWVudGF0aW9uCisKK1RoaXMgdXBjYWxsIG1lY2hhbmlzbSB1c2VzIHRoZSBrZXJuZWwgcnBjIGNsaWVudCBhbmQgY29ubmVjdHMgdG8gdGhlIGdzc3Byb3h5Cit1c2Vyc3BhY2UgcHJvZ3JhbSBvdmVyIGEgcmVndWxhciB1bml4IHNvY2tldC4gVGhlIGdzc3Byb3h5IHByb3RvY29sIGRvZXMgbm90CitzdWZmZXIgZnJvbSB0aGUgc2l6ZSBsaW1pdGF0aW9ucyBvZiB0aGUgbGVnYWN5IHByb3RvY29sLgorCitOZWdvdGlhdGluZyBVcGNhbGwgTWVjaGFuaXNtcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVG8gcHJvdmlkZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUga2VybmVsIGRlZmF1bHRzIHRvIHVzaW5nIHRoZQorbGVnYWN5IG1lY2hhbmlzbS4gIFRvIHN3aXRjaCB0byB0aGUgbmV3IG1lY2hhbmlzbSwgZ3NzLXByb3h5IG11c3QgYmluZAordG8gL3Zhci9ydW4vZ3NzcHJveHkuc29jayBhbmQgdGhlbiB3cml0ZSAiMSIgdG8KKy9wcm9jL25ldC9ycGMvdXNlLWdzcy1wcm94eS4gIElmIGdzcy1wcm94eSBkaWVzLCBpdCBtdXN0IHJlcGVhdCBib3RoCitzdGVwcy4KKworT25jZSB0aGUgdXBjYWxsIG1lY2hhbmlzbSBpcyBjaG9zZW4sIGl0IGNhbm5vdCBiZSBjaGFuZ2VkLiAgVG8gcHJldmVudAorbG9ja2luZyBpbnRvIHRoZSBsZWdhY3kgbWVjaGFuaXNtcywgdGhlIGFib3ZlIHN0ZXBzIG11c3QgYmUgcGVyZm9ybWVkCitiZWZvcmUgc3RhcnRpbmcgbmZzZC4gIFdob2V2ZXIgc3RhcnRzIG5mc2QgY2FuIGd1YXJhbnRlZSB0aGlzIGJ5IHJlYWRpbmcKK2Zyb20gL3Byb2MvbmV0L3JwYy91c2UtZ3NzLXByb3h5IGFuZCBjaGVja2luZyB0aGF0IGl0IGNvbnRhaW5zIGEKKyIxIi0tdGhlIHJlYWQgd2lsbCBibG9jayB1bnRpbCBnc3MtcHJveHkgaGFzIGRvbmUgaXRzIHdyaXRlIHRvIHRoZSBmaWxlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uaWxmczIudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uaWxmczIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxYzNkMzMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL25pbGZzMi50eHQKQEAgLTAsMCArMSwyNzAgQEAKK05JTEZTMgorLS0tLS0tCisKK05JTEZTMiBpcyBhIGxvZy1zdHJ1Y3R1cmVkIGZpbGUgc3lzdGVtIChMRlMpIHN1cHBvcnRpbmcgY29udGludW91cworc25hcHNob3R0aW5nLiAgSW4gYWRkaXRpb24gdG8gdmVyc2lvbmluZyBjYXBhYmlsaXR5IG9mIHRoZSBlbnRpcmUgZmlsZQorc3lzdGVtLCB1c2VycyBjYW4gZXZlbiByZXN0b3JlIGZpbGVzIG1pc3Rha2VubHkgb3ZlcndyaXR0ZW4gb3IKK2Rlc3Ryb3llZCBqdXN0IGEgZmV3IHNlY29uZHMgYWdvLiAgU2luY2UgTklMRlMyIGNhbiBrZWVwIGNvbnNpc3RlbmN5CitsaWtlIGNvbnZlbnRpb25hbCBMRlMsIGl0IGFjaGlldmVzIHF1aWNrIHJlY292ZXJ5IGFmdGVyIHN5c3RlbQorY3Jhc2hlcy4KKworTklMRlMyIGNyZWF0ZXMgYSBudW1iZXIgb2YgY2hlY2twb2ludHMgZXZlcnkgZmV3IHNlY29uZHMgb3IgcGVyCitzeW5jaHJvbm91cyB3cml0ZSBiYXNpcyAodW5sZXNzIHRoZXJlIGlzIG5vIGNoYW5nZSkuICBVc2VycyBjYW4gc2VsZWN0CitzaWduaWZpY2FudCB2ZXJzaW9ucyBhbW9uZyBjb250aW51b3VzbHkgY3JlYXRlZCBjaGVja3BvaW50cywgYW5kIGNhbgorY2hhbmdlIHRoZW0gaW50byBzbmFwc2hvdHMgd2hpY2ggd2lsbCBiZSBwcmVzZXJ2ZWQgdW50aWwgdGhleSBhcmUKK2NoYW5nZWQgYmFjayB0byBjaGVja3BvaW50cy4KKworVGhlcmUgaXMgbm8gbGltaXQgb24gdGhlIG51bWJlciBvZiBzbmFwc2hvdHMgdW50aWwgdGhlIHZvbHVtZSBnZXRzCitmdWxsLiAgRWFjaCBzbmFwc2hvdCBpcyBtb3VudGFibGUgYXMgYSByZWFkLW9ubHkgZmlsZSBzeXN0ZW0KK2NvbmN1cnJlbnRseSB3aXRoIGl0cyB3cml0YWJsZSBtb3VudCwgYW5kIHRoaXMgZmVhdHVyZSBpcyBjb252ZW5pZW50Citmb3Igb25saW5lIGJhY2t1cC4KKworVGhlIHVzZXJsYW5kIHRvb2xzIGFyZSBpbmNsdWRlZCBpbiBuaWxmcy11dGlscyBwYWNrYWdlLCB3aGljaCBpcworYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZyBkb3dubG9hZCBwYWdlLiAgQXQgbGVhc3QgIm1rZnMubmlsZnMyIiwKKyJtb3VudC5uaWxmczIiLCAidW1vdW50Lm5pbGZzMiIsIGFuZCAibmlsZnNfY2xlYW5lcmQiIChzbyBjYWxsZWQKK2NsZWFuZXIgb3IgZ2FyYmFnZSBjb2xsZWN0b3IpIGFyZSByZXF1aXJlZC4gIERldGFpbHMgb24gdGhlIHRvb2xzIGFyZQorZGVzY3JpYmVkIGluIHRoZSBtYW4gcGFnZXMgaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2UuCisKK1Byb2plY3Qgd2ViIHBhZ2U6ICAgIGh0dHA6Ly9uaWxmcy5zb3VyY2Vmb3JnZS5uZXQvCitEb3dubG9hZCBwYWdlOiAgICAgICBodHRwOi8vbmlsZnMuc291cmNlZm9yZ2UubmV0L2VuL2Rvd25sb2FkLmh0bWwKK0xpc3QgaW5mbzogICAgICAgICAgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvdmdlci1saXN0cy5odG1sI2xpbnV4LW5pbGZzCisKK0NhdmVhdHMKKz09PT09PT0KKworRmVhdHVyZXMgd2hpY2ggTklMRlMyIGRvZXMgbm90IHN1cHBvcnQgeWV0OgorCisJLSBhdGltZQorCS0gZXh0ZW5kZWQgYXR0cmlidXRlcworCS0gUE9TSVggQUNMcworCS0gcXVvdGFzCisJLSBmc2NrCisJLSBkZWZyYWdtZW50YXRpb24KKworTW91bnQgb3B0aW9ucworPT09PT09PT09PT09PQorCitOSUxGUzIgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBtb3VudCBvcHRpb25zOgorKCopID09IGRlZmF1bHQKKworYmFycmllcigqKQkJVGhpcyBlbmFibGVzL2Rpc2FibGVzIHRoZSB1c2Ugb2Ygd3JpdGUgYmFycmllcnMuICBUaGlzCitub2JhcnJpZXIJCXJlcXVpcmVzIGFuIElPIHN0YWNrIHdoaWNoIGNhbiBzdXBwb3J0IGJhcnJpZXJzLCBhbmQKKwkJCWlmIG5pbGZzIGdldHMgYW4gZXJyb3Igb24gYSBiYXJyaWVyIHdyaXRlLCBpdCB3aWxsCisJCQlkaXNhYmxlIGFnYWluIHdpdGggYSB3YXJuaW5nLgorZXJyb3JzPWNvbnRpbnVlCQlLZWVwIGdvaW5nIG9uIGEgZmlsZXN5c3RlbSBlcnJvci4KK2Vycm9ycz1yZW1vdW50LXJvKCopCVJlbW91bnQgdGhlIGZpbGVzeXN0ZW0gcmVhZC1vbmx5IG9uIGFuIGVycm9yLgorZXJyb3JzPXBhbmljCQlQYW5pYyBhbmQgaGFsdCB0aGUgbWFjaGluZSBpZiBhbiBlcnJvciBvY2N1cnMuCitjcD1uCQkJU3BlY2lmeSB0aGUgY2hlY2twb2ludC1udW1iZXIgb2YgdGhlIHNuYXBzaG90IHRvIGJlCisJCQltb3VudGVkLiAgQ2hlY2twb2ludHMgYW5kIHNuYXBzaG90cyBhcmUgbGlzdGVkIGJ5IGxzY3AKKwkJCXVzZXIgY29tbWFuZC4gIE9ubHkgdGhlIGNoZWNrcG9pbnRzIG1hcmtlZCBhcyBzbmFwc2hvdAorCQkJYXJlIG1vdW50YWJsZSB3aXRoIHRoaXMgb3B0aW9uLiAgU25hcHNob3QgaXMgcmVhZC1vbmx5LAorCQkJc28gYSByZWFkLW9ubHkgbW91bnQgb3B0aW9uIG11c3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyLgorb3JkZXI9cmVsYXhlZCgqKQlBcHBseSByZWxheGVkIG9yZGVyIHNlbWFudGljcyB0aGF0IGFsbG93cyBtb2RpZmllZCBkYXRhCisJCQlibG9ja3MgdG8gYmUgd3JpdHRlbiB0byBkaXNrIHdpdGhvdXQgbWFraW5nIGEKKwkJCWNoZWNrcG9pbnQgaWYgbm8gbWV0YWRhdGEgdXBkYXRlIGlzIGdvaW5nLiAgVGhpcyBtb2RlCisJCQlpcyBlcXVpdmFsZW50IHRvIHRoZSBvcmRlcmVkIGRhdGEgbW9kZSBvZiB0aGUgZXh0MworCQkJZmlsZXN5c3RlbSBleGNlcHQgZm9yIHRoZSB1cGRhdGVzIG9uIGRhdGEgYmxvY2tzIHN0aWxsCisJCQljb25zZXJ2ZSBhdG9taWNpdHkuICBUaGlzIHdpbGwgaW1wcm92ZSBzeW5jaHJvbm91cworCQkJd3JpdGUgcGVyZm9ybWFuY2UgZm9yIG92ZXJ3cml0aW5nLgorb3JkZXI9c3RyaWN0CQlBcHBseSBzdHJpY3QgaW4tb3JkZXIgc2VtYW50aWNzIHRoYXQgcHJlc2VydmVzIHNlcXVlbmNlCisJCQlvZiBhbGwgZmlsZSBvcGVyYXRpb25zIGluY2x1ZGluZyBvdmVyd3JpdGluZyBvZiBkYXRhCisJCQlibG9ja3MuICBUaGF0IG1lYW5zLCBpdCBpcyBndWFyYW50ZWVkIHRoYXQgbm8KKwkJCW92ZXJ0YWtpbmcgb2YgZXZlbnRzIG9jY3VycyBpbiB0aGUgcmVjb3ZlcmVkIGZpbGUKKwkJCXN5c3RlbSBhZnRlciBhIGNyYXNoLgorbm9yZWNvdmVyeQkJRGlzYWJsZSByZWNvdmVyeSBvZiB0aGUgZmlsZXN5c3RlbSBvbiBtb3VudC4KKwkJCVRoaXMgZGlzYWJsZXMgZXZlcnkgd3JpdGUgYWNjZXNzIG9uIHRoZSBkZXZpY2UgZm9yCisJCQlyZWFkLW9ubHkgbW91bnRzIG9yIHNuYXBzaG90cy4gIFRoaXMgb3B0aW9uIHdpbGwgZmFpbAorCQkJZm9yIHIvdyBtb3VudHMgb24gYW4gdW5jbGVhbiB2b2x1bWUuCitkaXNjYXJkCQkJVGhpcyBlbmFibGVzL2Rpc2FibGVzIHRoZSB1c2Ugb2YgZGlzY2FyZC9UUklNIGNvbW1hbmRzLgorbm9kaXNjYXJkKCopCQlUaGUgZGlzY2FyZC9UUklNIGNvbW1hbmRzIGFyZSBzZW50IHRvIHRoZSB1bmRlcmx5aW5nCisJCQlibG9jayBkZXZpY2Ugd2hlbiBibG9ja3MgYXJlIGZyZWVkLiAgVGhpcyBpcyB1c2VmdWwKKwkJCWZvciBTU0QgZGV2aWNlcyBhbmQgc3BhcnNlL3RoaW5seS1wcm92aXNpb25lZCBMVU5zLgorCitJb2N0bHMKKz09PT09PQorCitUaGVyZSBpcyBzb21lIE5JTEZTMiBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IHdoaWNoIGNhbiBiZSBhY2Nlc3NlZCBieSBhcHBsaWNhdGlvbnMKK3Rocm91Z2ggdGhlIHN5c3RlbSBjYWxsIGludGVyZmFjZXMuIFRoZSBsaXN0IG9mIGFsbCBOSUxGUzIgc3BlY2lmaWMgaW9jdGxzIGFyZQorc2hvd24gaW4gdGhlIHRhYmxlIGJlbG93LgorCitUYWJsZSBvZiBOSUxGUzIgc3BlY2lmaWMgaW9jdGxzCisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKyBJb2N0bAkJCSAgICAgICAgRGVzY3JpcHRpb24KKyBOSUxGU19JT0NUTF9DSEFOR0VfQ1BNT0RFICAgICAgQ2hhbmdlIG1vZGUgb2YgZ2l2ZW4gY2hlY2twb2ludCBiZXR3ZWVuCisJCQkgICAgICAgIGNoZWNrcG9pbnQgYW5kIHNuYXBzaG90IHN0YXRlLiBUaGlzIGlvY3RsIGlzCisJCQkgICAgICAgIHVzZWQgaW4gY2hjcCBhbmQgbWtjcCB1dGlsaXRpZXMuCisKKyBOSUxGU19JT0NUTF9ERUxFVEVfQ0hFQ0tQT0lOVCAgUmVtb3ZlIGNoZWNrcG9pbnQgZnJvbSBOSUxGUzIgZmlsZSBzeXN0ZW0uCisJCQkgICAgICAgIFRoaXMgaW9jdGwgaXMgdXNlZCBpbiBybWNwIHV0aWxpdHkuCisKKyBOSUxGU19JT0NUTF9HRVRfQ1BJTkZPICAgICAgICAgUmV0dXJuIGluZm8gYWJvdXQgcmVxdWVzdGVkIGNoZWNrcG9pbnRzLiBUaGlzCisJCQkgICAgICAgIGlvY3RsIGlzIHVzZWQgaW4gbHNjcCB1dGlsaXR5IGFuZCBieQorCQkJICAgICAgICBuaWxmc19jbGVhbmVyZCBkYWVtb24uCisKKyBOSUxGU19JT0NUTF9HRVRfQ1BTVEFUICAgICAgICAgUmV0dXJuIGNoZWNrcG9pbnRzIHN0YXRpc3RpY3MuIFRoaXMgaW9jdGwgaXMKKwkJCSAgICAgICAgdXNlZCBieSBsc2NwLCBybWNwIHV0aWxpdGllcyBhbmQgYnkKKwkJCSAgICAgICAgbmlsZnNfY2xlYW5lcmQgZGFlbW9uLgorCisgTklMRlNfSU9DVExfR0VUX1NVSU5GTyAgICAgICAgIFJldHVybiBzZWdtZW50IHVzYWdlIGluZm8gYWJvdXQgcmVxdWVzdGVkCisJCQkgICAgICAgIHNlZ21lbnRzLiBUaGlzIGlvY3RsIGlzIHVzZWQgaW4gbHNzdSwKKwkJCSAgICAgICAgbmlsZnNfcmVzaXplIHV0aWxpdGllcyBhbmQgYnkgbmlsZnNfY2xlYW5lcmQKKwkJCSAgICAgICAgZGFlbW9uLgorCisgTklMRlNfSU9DVExfU0VUX1NVSU5GTyAgICAgICAgIE1vZGlmeSBzZWdtZW50IHVzYWdlIGluZm8gb2YgcmVxdWVzdGVkCisJCQkJc2VnbWVudHMuIFRoaXMgaW9jdGwgaXMgdXNlZCBieQorCQkJCW5pbGZzX2NsZWFuZXJkIGRhZW1vbiB0byBza2lwIHVubmVjZXNzYXJ5CisJCQkJY2xlYW5pbmcgb3BlcmF0aW9uIG9mIHNlZ21lbnRzIGFuZCByZWR1Y2UKKwkJCQlwZXJmb3JtYW5jZSBwZW5hbHR5IG9yIHdlYXIgb2YgZmxhc2ggZGV2aWNlCisJCQkJZHVlIHRvIHJlZHVuZGFudCBtb3ZlIG9mIGluLXVzZSBibG9ja3MuCisKKyBOSUxGU19JT0NUTF9HRVRfU1VTVEFUICAgICAgICAgUmV0dXJuIHNlZ21lbnQgdXNhZ2Ugc3RhdGlzdGljcy4gVGhpcyBpb2N0bAorCQkJICAgICAgICBpcyB1c2VkIGluIGxzc3UsIG5pbGZzX3Jlc2l6ZSB1dGlsaXRpZXMgYW5kCisJCQkgICAgICAgIGJ5IG5pbGZzX2NsZWFuZXJkIGRhZW1vbi4KKworIE5JTEZTX0lPQ1RMX0dFVF9WSU5GTyAgICAgICAgICBSZXR1cm4gaW5mb3JtYXRpb24gb24gdmlydHVhbCBibG9jayBhZGRyZXNzZXMuCisJCQkgICAgICAgIFRoaXMgaW9jdGwgaXMgdXNlZCBieSBuaWxmc19jbGVhbmVyZCBkYWVtb24uCisKKyBOSUxGU19JT0NUTF9HRVRfQkRFU0NTICAgICAgICAgUmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IGRlc2NyaXB0b3JzIG9mIGRpc2sKKwkJCSAgICAgICAgYmxvY2sgbnVtYmVycy4gVGhpcyBpb2N0bCBpcyB1c2VkIGJ5CisJCQkgICAgICAgIG5pbGZzX2NsZWFuZXJkIGRhZW1vbi4KKworIE5JTEZTX0lPQ1RMX0NMRUFOX1NFR01FTlRTICAgICBEbyBnYXJiYWdlIGNvbGxlY3Rpb24gb3BlcmF0aW9uIGluIHRoZQorCQkJICAgICAgICBlbnZpcm9ubWVudCBvZiByZXF1ZXN0ZWQgcGFyYW1ldGVycyBmcm9tCisJCQkgICAgICAgIHVzZXJzcGFjZS4gVGhpcyBpb2N0bCBpcyB1c2VkIGJ5CisJCQkgICAgICAgIG5pbGZzX2NsZWFuZXJkIGRhZW1vbi4KKworIE5JTEZTX0lPQ1RMX1NZTkMgICAgICAgICAgICAgICBNYWtlIGEgY2hlY2twb2ludC4gVGhpcyBpb2N0bCBpcyB1c2VkIGluCisJCQkgICAgICAgIG1rY3AgdXRpbGl0eS4KKworIE5JTEZTX0lPQ1RMX1JFU0laRSAgICAgICAgICAgICBSZXNpemUgTklMRlMyIHZvbHVtZS4gVGhpcyBpb2N0bCBpcyB1c2VkCisJCQkgICAgICAgIGJ5IG5pbGZzX3Jlc2l6ZSB1dGlsaXR5LgorCisgTklMRlNfSU9DVExfU0VUX0FMTE9DX1JBTkdFICAgIERlZmluZSBsb3dlciBsaW1pdCBvZiBzZWdtZW50cyBpbiBieXRlcyBhbmQKKwkJCSAgICAgICAgdXBwZXIgbGltaXQgb2Ygc2VnbWVudHMgaW4gYnl0ZXMuIFRoaXMgaW9jdGwKKwkJCSAgICAgICAgaXMgdXNlZCBieSBuaWxmc19yZXNpemUgdXRpbGl0eS4KKworTklMRlMyIHVzYWdlCis9PT09PT09PT09PT0KKworVG8gdXNlIG5pbGZzMiBhcyBhIGxvY2FsIGZpbGUgc3lzdGVtLCBzaW1wbHk6CisKKyAjIG1rZnMgLXQgbmlsZnMyIC9kZXYvYmxvY2tfZGV2aWNlCisgIyBtb3VudCAtdCBuaWxmczIgL2Rldi9ibG9ja19kZXZpY2UgL2RpcgorCitUaGlzIHdpbGwgYWxzbyBpbnZva2UgdGhlIGNsZWFuZXIgdGhyb3VnaCB0aGUgbW91bnQgaGVscGVyIHByb2dyYW0KKyhtb3VudC5uaWxmczIpLgorCitDaGVja3BvaW50cyBhbmQgc25hcHNob3RzIGFyZSBtYW5hZ2VkIGJ5IHRoZSBmb2xsb3dpbmcgY29tbWFuZHMuCitUaGVpciBtYW5wYWdlcyBhcmUgaW5jbHVkZWQgaW4gdGhlIG5pbGZzLXV0aWxzIHBhY2thZ2UgYWJvdmUuCisKKyAgbHNjcCAgICAgbGlzdCBjaGVja3BvaW50cyBvciBzbmFwc2hvdHMuCisgIG1rY3AgICAgIG1ha2UgYSBjaGVja3BvaW50IG9yIGEgc25hcHNob3QuCisgIGNoY3AgICAgIGNoYW5nZSBhbiBleGlzdGluZyBjaGVja3BvaW50IHRvIGEgc25hcHNob3Qgb3IgdmljZSB2ZXJzYS4KKyAgcm1jcCAgICAgaW52YWxpZGF0ZSBzcGVjaWZpZWQgY2hlY2twb2ludChzKS4KKworVG8gbW91bnQgYSBzbmFwc2hvdCwKKworICMgbW91bnQgLXQgbmlsZnMyIC1yIC1vIGNwPTxjbm8+IC9kZXYvYmxvY2tfZGV2aWNlIC9zbmFwX2RpcgorCit3aGVyZSA8Y25vPiBpcyB0aGUgY2hlY2twb2ludCBudW1iZXIgb2YgdGhlIHNuYXBzaG90LgorCitUbyB1bm1vdW50IHRoZSBOSUxGUzIgbW91bnQgcG9pbnQgb3Igc25hcHNob3QsIHNpbXBseToKKworICMgdW1vdW50IC9kaXIKKworVGhlbiwgdGhlIGNsZWFuZXIgZGFlbW9uIGlzIGF1dG9tYXRpY2FsbHkgc2h1dCBkb3duIGJ5IHRoZSB1bW91bnQKK2hlbHBlciBwcm9ncmFtICh1bW91bnQubmlsZnMyKS4KKworRGlzayBmb3JtYXQKKz09PT09PT09PT09CisKK0EgbmlsZnMyIHZvbHVtZSBpcyBlcXVhbGx5IGRpdmlkZWQgaW50byBhIG51bWJlciBvZiBzZWdtZW50cyBleGNlcHQKK2ZvciB0aGUgc3VwZXIgYmxvY2sgKFNCKSBhbmQgc2VnbWVudCAjMC4gIEEgc2VnbWVudCBpcyB0aGUgY29udGFpbmVyCitvZiBsb2dzLiAgRWFjaCBsb2cgaXMgY29tcG9zZWQgb2Ygc3VtbWFyeSBpbmZvcm1hdGlvbiBibG9ja3MsIHBheWxvYWQKK2Jsb2NrcywgYW5kIGFuIG9wdGlvbmFsIHN1cGVyIHJvb3QgYmxvY2sgKFNSKToKKworICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisgIHwgfFNCfCB8IFNlZ21lbnQgfCBTZWdtZW50IHwgU2VnbWVudCB8IC4uLiB8IFNlZ21lbnQgfCB8CisgIHxffF9ffF98X19fXzBfX19ffF9fX18xX19fX3xfX19fMl9fX198X19fX198X19fX05fX19ffF98CisgIDAgKzFLICs0SyAgICAgICArOE0gICAgICAgKzE2TSAgICAgICsyNE0gICsoOE1CIHggTikKKyAgICAgICAuICAgICAgICAgICAgIC4gICAgICAgICAgICAoVHlwaWNhbCBvZmZzZXRzIGZvciA0S0ItYmxvY2spCisgICAgLiAgICAgICAgICAgICAgICAgIC4KKyAgLl9fX19fX19fX19fX19fX19fX19fX18uCisgIHwgbG9nIHwgbG9nIHwuLi4gfCBsb2cgfAorICB8X18xX198X18yX198X19fX3xfX21fX3wKKyAgICAgICAgLiAgICAgICAuCisgICAgICAuICAgICAgICAgICAgICAgLgorICAgIC4gICAgICAgICAgICAgICAgICAgICAgIC4KKyAgLl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy4KKyAgfCBTdW1tYXJ5IHwgUGF5bG9hZCBibG9ja3MgIHxTUnwKKyAgfF9ibG9ja3NfX3xfX19fX19fX19fX19fX19fX3xfX3wKKworVGhlIHBheWxvYWQgYmxvY2tzIGFyZSBvcmdhbml6ZWQgcGVyIGZpbGUsIGFuZCBlYWNoIGZpbGUgY29uc2lzdHMgb2YKK2RhdGEgYmxvY2tzIGFuZCBCLXRyZWUgbm9kZSBibG9ja3M6CisKKyAgICB8PC0tLSAgICAgICBGaWxlLUEgICAgICAgIC0tLT58PC0tLSAgICAgICBGaWxlLUIgICAgICAgIC0tLT58CisgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKyAgICB8IERhdGEgYmxvY2tzIHwgQi10cmVlIGJsb2NrcyB8IERhdGEgYmxvY2tzIHwgQi10cmVlIGJsb2NrcyB8IC4uLgorICAgX3xfX19fX19fX19fX19ffF9fX19fX19fX19fX19fX3xfX19fX19fX19fX19ffF9fX19fX19fX19fX19fX3xfCisKKworU2luY2Ugb25seSB0aGUgbW9kaWZpZWQgYmxvY2tzIGFyZSB3cml0dGVuIGluIHRoZSBsb2csIGl0IG1heSBoYXZlCitmaWxlcyB3aXRob3V0IGRhdGEgYmxvY2tzIG9yIEItdHJlZSBub2RlIGJsb2Nrcy4KKworVGhlIG9yZ2FuaXphdGlvbiBvZiB0aGUgYmxvY2tzIGlzIHJlY29yZGVkIGluIHRoZSBzdW1tYXJ5IGluZm9ybWF0aW9uCitibG9ja3MsIHdoaWNoIGNvbnRhaW5zIGEgaGVhZGVyIHN0cnVjdHVyZSAobmlsZnNfc2VnbWVudF9zdW1tYXJ5KSwgcGVyCitmaWxlIHN0cnVjdHVyZXMgKG5pbGZzX2ZpbmZvKSwgYW5kIHBlciBibG9jayBzdHJ1Y3R1cmVzIChuaWxmc19iaW5mbyk6CisKKyAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworIHwgU3VtbWFyeSB8IGZpbmZvIHwgYmluZm8gfCAuLi4gfCBiaW5mbyB8IGZpbmZvIHwgYmluZm8gfCAuLi4gfCBiaW5mbyB8Li4uCisgfF9ibG9ja3NfX3xfX19BX19ffF8oQSwxKV98X19fX198KEEsTmEpX3xfX19CX19ffF8oQiwxKV98X19fX198KEIsTmIpX3xfX18KKworCitUaGUgbG9ncyBpbmNsdWRlIHJlZ3VsYXIgZmlsZXMsIGRpcmVjdG9yeSBmaWxlcywgc3ltYm9saWMgbGluayBmaWxlcworYW5kIHNldmVyYWwgbWV0YSBkYXRhIGZpbGVzLiAgVGhlIG1hdGEgZGF0YSBmaWxlcyBhcmUgdGhlIGZpbGVzIHVzZWQKK3RvIG1haW50YWluIGZpbGUgc3lzdGVtIG1ldGEgZGF0YS4gIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgTklMRlMyIHVzZXMKK3RoZSBmb2xsb3dpbmcgbWV0YSBkYXRhIGZpbGVzOgorCisgMSkgSW5vZGUgZmlsZSAoaWZpbGUpICAgICAgICAgICAgIC0tIFN0b3JlcyBvbi1kaXNrIGlub2RlcworIDIpIENoZWNrcG9pbnQgZmlsZSAoY3BmaWxlKSAgICAgICAtLSBTdG9yZXMgY2hlY2twb2ludHMKKyAzKSBTZWdtZW50IHVzYWdlIGZpbGUgKHN1ZmlsZSkgICAgLS0gU3RvcmVzIGFsbG9jYXRpb24gc3RhdGUgb2Ygc2VnbWVudHMKKyA0KSBEYXRhIGFkZHJlc3MgdHJhbnNsYXRpb24gZmlsZSAgLS0gTWFwcyB2aXJ0dWFsIGJsb2NrIG51bWJlcnMgdG8gdXN1YWwKKyAgICAoREFUKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sgbnVtYmVycy4gIFRoaXMgZmlsZSBzZXJ2ZXMgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZSBvbi1kaXNrIGJsb2NrcyByZWxvY2F0YWJsZS4KKworVGhlIGZvbGxvd2luZyBmaWd1cmUgc2hvd3MgYSB0eXBpY2FsIG9yZ2FuaXphdGlvbiBvZiB0aGUgbG9nczoKKworICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisgfCBTdW1tYXJ5IHwgcmVndWxhciBmaWxlIHwgZmlsZSAgfCAuLi4gfCBpZmlsZSB8IGNwZmlsZSB8IHN1ZmlsZSB8IERBVCB8U1J8CisgfF9ibG9ja3NfX3xfb3JfZGlyZWN0b3J5X3xfX19fX19ffF9fX19ffF9fX19fX198X19fX19fX198X19fX19fX198X19fX198X198CisKKworVG8gc3RyaWRlIG92ZXIgc2VnbWVudCBib3VuZGFyaWVzLCB0aGlzIHNlcXVlbmNlIG9mIGZpbGVzIG1heSBiZSBzcGxpdAoraW50byBtdWx0aXBsZSBsb2dzLiAgVGhlIHNlcXVlbmNlIG9mIGxvZ3MgdGhhdCBzaG91bGQgYmUgdHJlYXRlZCBhcworbG9naWNhbGx5IG9uZSBsb2csIGlzIGRlbGltaXRlZCB3aXRoIGZsYWdzIG1hcmtlZCBpbiB0aGUgc2VnbWVudAorc3VtbWFyeS4gIFRoZSByZWNvdmVyeSBjb2RlIG9mIG5pbGZzMiBsb29rcyB0aGlzIGJvdW5kYXJ5IGluZm9ybWF0aW9uCit0byBlbnN1cmUgYXRvbWljaXR5IG9mIHVwZGF0ZXMuCisKK1RoZSBzdXBlciByb290IGJsb2NrIGlzIGluc2VydGVkIGZvciBldmVyeSBjaGVja3BvaW50cy4gIEl0IGluY2x1ZGVzCit0aHJlZSBzcGVjaWFsIGlub2RlcywgaW5vZGVzIGZvciB0aGUgREFULCBjcGZpbGUsIGFuZCBzdWZpbGUuICBJbm9kZXMKK29mIHJlZ3VsYXIgZmlsZXMsIGRpcmVjdG9yaWVzLCBzeW1saW5rcyBhbmQgb3RoZXIgc3BlY2lhbCBmaWxlcywgYXJlCitpbmNsdWRlZCBpbiB0aGUgaWZpbGUuICBUaGUgaW5vZGUgb2YgaWZpbGUgaXRzZWxmIGlzIGluY2x1ZGVkIGluIHRoZQorY29ycmVzcG9uZGluZyBjaGVja3BvaW50IGVudHJ5IGluIHRoZSBjcGZpbGUuICBUaHVzLCB0aGUgaGllcmFyY2h5CithbW9uZyBOSUxGUzIgZmlsZXMgY2FuIGJlIGRlcGljdGVkIGFzIGZvbGxvd3M6CisKKyAgU3VwZXIgYmxvY2sgKFNCKQorICAgICAgIHwKKyAgICAgICB2CisgIFN1cGVyIHJvb3QgYmxvY2sgKHRoZSBsYXRlc3QgY25vPXh4KQorICAgICAgIHwtLSBEQVQKKyAgICAgICB8LS0gc3VmaWxlCisgICAgICAgYC0tIGNwZmlsZQorICAgICAgICAgICAgICB8LS0gaWZpbGUgKGNubz1jMSkKKyAgICAgICAgICAgICAgfC0tIGlmaWxlIChjbm89YzIpIC0tLS0gZmlsZSAoaW5vPWkxKQorICAgICAgICAgICAgICA6ICAgICAgICA6ICAgICAgICAgIHwtLSBmaWxlIChpbm89aTIpCisgICAgICAgICAgICAgIGAtLSBpZmlsZSAoY25vPXh4KSAgfC0tIGZpbGUgKGlubz1pMykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICAgICAgICA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYC0tIGZpbGUgKGlubz15eSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggcmVndWxhciBmaWxlLCBkaXJlY3RvcnksIG9yIHN5bWxpbmsgKQorCitGb3IgZGV0YWlsIG9uIHRoZSBmb3JtYXQgb2YgZWFjaCBmaWxlLCBwbGVhc2Ugc2VlIGluY2x1ZGUvbGludXgvbmlsZnMyX2ZzLmguCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL250ZnMudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9udGZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTNmMTBkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9udGZzLnR4dApAQCAtMCwwICsxLDQ1MSBAQAorVGhlIExpbnV4IE5URlMgZmlsZXN5c3RlbSBkcml2ZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworVGFibGUgb2YgY29udGVudHMKKz09PT09PT09PT09PT09PT09CisKKy0gT3ZlcnZpZXcKKy0gV2ViIHNpdGUKKy0gRmVhdHVyZXMKKy0gU3VwcG9ydGVkIG1vdW50IG9wdGlvbnMKKy0gS25vd24gYnVncyBhbmQgKG1pcy0pZmVhdHVyZXMKKy0gVXNpbmcgTlRGUyB2b2x1bWUgYW5kIHN0cmlwZSBzZXRzCisgIC0gVGhlIERldmljZS1NYXBwZXIgZHJpdmVyCisgIC0gVGhlIFNvZnR3YXJlIFJBSUQgLyBNRCBkcml2ZXIKKyAgLSBMaW1pdGF0aW9ucyB3aGVuIHVzaW5nIHRoZSBNRCBkcml2ZXIKKworCitPdmVydmlldworPT09PT09PT0KKworTGludXgtTlRGUyBjb21lcyB3aXRoIGEgbnVtYmVyIG9mIHVzZXItc3BhY2UgcHJvZ3JhbXMga25vd24gYXMgbnRmc3Byb2dzLgorVGhlc2UgaW5jbHVkZSBta250ZnMsIGEgZnVsbC1mZWF0dXJlZCBudGZzIGZpbGVzeXN0ZW0gZm9ybWF0IHV0aWxpdHksCitudGZzdW5kZWxldGUgdXNlZCBmb3IgcmVjb3ZlcmluZyBmaWxlcyB0aGF0IHdlcmUgdW5pbnRlbnRpb25hbGx5IGRlbGV0ZWQKK2Zyb20gYW4gTlRGUyB2b2x1bWUgYW5kIG50ZnNyZXNpemUgd2hpY2ggaXMgdXNlZCB0byByZXNpemUgYW4gTlRGUyBwYXJ0aXRpb24uCitTZWUgdGhlIHdlYiBzaXRlIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCitUbyBtb3VudCBhbiBOVEZTIDEuMi8zLnggKFdpbmRvd3MgTlQ0LzIwMDAvWFAvMjAwMykgdm9sdW1lLCB1c2UgdGhlIGZpbGUKK3N5c3RlbSB0eXBlICdudGZzJy4gIFRoZSBkcml2ZXIgY3VycmVudGx5IHN1cHBvcnRzIHJlYWQtb25seSBtb2RlICh3aXRoIG5vCitmYXVsdC10b2xlcmFuY2UsIGVuY3J5cHRpb24gb3Igam91cm5hbGxpbmcpIGFuZCB2ZXJ5IGxpbWl0ZWQsIGJ1dCBzYWZlLCB3cml0ZQorc3VwcG9ydC4KKworRm9yIGZhdWx0IHRvbGVyYW5jZSBhbmQgcmFpZCBzdXBwb3J0IChpLmUuIHZvbHVtZSBhbmQgc3RyaXBlIHNldHMpLCB5b3UgY2FuCit1c2UgdGhlIGtlcm5lbCdzIFNvZnR3YXJlIFJBSUQgLyBNRCBkcml2ZXIuICBTZWUgc2VjdGlvbiAiVXNpbmcgU29mdHdhcmUgUkFJRAord2l0aCBOVEZTIiBmb3IgZGV0YWlscy4KKworCitXZWIgc2l0ZQorPT09PT09PT0KKworVGhlcmUgaXMgcGxlbnR5IG9mIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gdGhlIGxpbnV4LW50ZnMgd2ViIHNpdGUKK2F0IGh0dHA6Ly93d3cubGludXgtbnRmcy5vcmcvCisKK1RoZSB3ZWIgc2l0ZSBoYXMgYSBsb3Qgb2YgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgc3VjaCBhcyBhIGNvbXByZWhlbnNpdmUKK0ZBUSwgZG9jdW1lbnRhdGlvbiBvbiB0aGUgTlRGUyBvbi1kaXNrIGZvcm1hdCwgaW5mb3JtYXRpb24gb24gdGhlIExpbnV4LU5URlMKK3VzZXJzcGFjZSB1dGlsaXRpZXMsIGV0Yy4KKworCitGZWF0dXJlcworPT09PT09PT0KKworLSBUaGlzIGlzIGEgY29tcGxldGUgcmV3cml0ZSBvZiB0aGUgTlRGUyBkcml2ZXIgdGhhdCB1c2VkIHRvIGJlIGluIHRoZSAyLjQgYW5kCisgIGVhcmxpZXIga2VybmVscy4gIFRoaXMgbmV3IGRyaXZlciBpbXBsZW1lbnRzIE5URlMgcmVhZCBzdXBwb3J0IGFuZCBpcworICBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byB0aGUgb2xkIG50ZnMgZHJpdmVyIGFuZCBpdCBhbHNvIGltcGxlbWVudHMgbGltaXRlZAorICB3cml0ZSBzdXBwb3J0LiAgVGhlIGJpZ2dlc3QgbGltaXRhdGlvbiBhdCBwcmVzZW50IGlzIHRoYXQgZmlsZXMvZGlyZWN0b3JpZXMKKyAgY2Fubm90IGJlIGNyZWF0ZWQgb3IgZGVsZXRlZC4gIFNlZSBiZWxvdyBmb3IgdGhlIGxpc3Qgb2Ygd3JpdGUgZmVhdHVyZXMgdGhhdAorICBhcmUgc28gZmFyIHN1cHBvcnRlZC4gIEFub3RoZXIgbGltaXRhdGlvbiBpcyB0aGF0IHdyaXRpbmcgdG8gY29tcHJlc3NlZCBmaWxlcworICBpcyBub3QgaW1wbGVtZW50ZWQgYXQgYWxsLiAgQWxzbywgbmVpdGhlciByZWFkIG5vciB3cml0ZSBhY2Nlc3MgdG8gZW5jcnlwdGVkCisgIGZpbGVzIGlzIHNvIGZhciBpbXBsZW1lbnRlZC4KKy0gVGhlIG5ldyBkcml2ZXIgaGFzIGZ1bGwgc3VwcG9ydCBmb3Igc3BhcnNlIGZpbGVzIG9uIE5URlMgMy54IHZvbHVtZXMgd2hpY2gKKyAgdGhlIG9sZCBkcml2ZXIgaXNuJ3QgaGFwcHkgd2l0aC4KKy0gVGhlIG5ldyBkcml2ZXIgc3VwcG9ydHMgZXhlY3V0aW9uIG9mIGJpbmFyaWVzIGR1ZSB0byBtbWFwKCkgbm93IGJlaW5nCisgIHN1cHBvcnRlZC4KKy0gVGhlIG5ldyBkcml2ZXIgc3VwcG9ydHMgbG9vcGJhY2sgbW91bnRpbmcgb2YgZmlsZXMgb24gTlRGUyB3aGljaCBpcyB1c2VkIGJ5CisgIHNvbWUgTGludXggZGlzdHJpYnV0aW9ucyB0byBlbmFibGUgdGhlIHVzZXIgdG8gcnVuIExpbnV4IGZyb20gYW4gTlRGUworICBwYXJ0aXRpb24gYnkgY3JlYXRpbmcgYSBsYXJnZSBmaWxlIHdoaWxlIGluIFdpbmRvd3MgYW5kIHRoZW4gbG9vcGJhY2sKKyAgbW91bnRpbmcgdGhlIGZpbGUgd2hpbGUgaW4gTGludXggYW5kIGNyZWF0aW5nIGEgTGludXggZmlsZXN5c3RlbSBvbiBpdCB0aGF0CisgIGlzIHVzZWQgdG8gaW5zdGFsbCBMaW51eCBvbiBpdC4KKy0gQSBjb21wYXJpc29uIG9mIHRoZSB0d28gZHJpdmVycyB1c2luZzoKKwl0aW1lIGZpbmQgLiAtdHlwZSBmIC1leGVjIG1kNXN1bSAie30iIFw7CisgIHJ1biB0aHJlZSB0aW1lcyBpbiBzZXF1ZW5jZSB3aXRoIGVhY2ggZHJpdmVyIChhZnRlciBhIHJlYm9vdCkgb24gYSAxLjRHaUIKKyAgTlRGUyBwYXJ0aXRpb24sIHNob3dlZCB0aGUgbmV3IGRyaXZlciB0byBiZSAyMCUgZmFzdGVyIGluIHRvdGFsIHRpbWUgZWxhcHNlZAorICAoZnJvbSA5OjQzIG1pbnV0ZXMgb24gYXZlcmFnZSBkb3duIHRvIDc6NTMpLiAgVGhlIHRpbWUgc3BlbnQgaW4gdXNlciBzcGFjZQorICB3YXMgdW5jaGFuZ2VkIGJ1dCB0aGUgdGltZSBzcGVudCBpbiB0aGUga2VybmVsIHdhcyBkZWNyZWFzZWQgYnkgYSBmYWN0b3Igb2YKKyAgMi41IChmcm9tIDg1IENQVSBzZWNvbmRzIGRvd24gdG8gMzMpLgorLSBUaGUgZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQgc2hvcnQgZmlsZSBuYW1lcyBpbiBnZW5lcmFsLiAgRm9yIGJhY2t3YXJkcworICBjb21wYXRpYmlsaXR5LCB3ZSBpbXBsZW1lbnQgYWNjZXNzIHRvIGZpbGVzIHVzaW5nIHRoZWlyIHNob3J0IGZpbGUgbmFtZXMgaWYKKyAgdGhleSBleGlzdC4gIFRoZSBkcml2ZXIgd2lsbCBub3QgY3JlYXRlIHNob3J0IGZpbGUgbmFtZXMgaG93ZXZlciwgYW5kIGEKKyAgcmVuYW1lIHdpbGwgZGlzY2FyZCBhbnkgZXhpc3Rpbmcgc2hvcnQgZmlsZSBuYW1lLgorLSBUaGUgbmV3IGRyaXZlciBzdXBwb3J0cyBleHBvcnRpbmcgb2YgbW91bnRlZCBOVEZTIHZvbHVtZXMgdmlhIE5GUy4KKy0gVGhlIG5ldyBkcml2ZXIgc3VwcG9ydHMgYXN5bmMgaW8gKGFpbykuCistIFRoZSBuZXcgZHJpdmVyIHN1cHBvcnRzIGZzeW5jKDIpLCBmZGF0YXN5bmMoMiksIGFuZCBtc3luYygyKS4KKy0gVGhlIG5ldyBkcml2ZXIgc3VwcG9ydHMgcmVhZHYoMikgYW5kIHdyaXRldigyKS4KKy0gVGhlIG5ldyBkcml2ZXIgc3VwcG9ydHMgYWNjZXNzIHRpbWUgdXBkYXRlcyAoaW5jbHVkaW5nIG10aW1lIGFuZCBjdGltZSkuCistIFRoZSBuZXcgZHJpdmVyIHN1cHBvcnRzIHRydW5jYXRlKDIpIGFuZCBvcGVuKDIpIHdpdGggT19UUlVOQy4gIEJ1dCBhdCBwcmVzZW50CisgIG9ubHkgdmVyeSBsaW1pdGVkIHN1cHBvcnQgZm9yIGhpZ2hseSBmcmFnbWVudGVkIGZpbGVzLCBpLmUuIG9uZXMgd2hpY2ggaGF2ZQorICB0aGVpciBkYXRhIGF0dHJpYnV0ZSBzcGxpdCBhY3Jvc3MgbXVsdGlwbGUgZXh0ZW50cywgaXMgaW5jbHVkZWQuICBBbm90aGVyCisgIGxpbWl0YXRpb24gaXMgdGhhdCBhdCBwcmVzZW50IHRydW5jYXRlKDIpIHdpbGwgbmV2ZXIgY3JlYXRlIHNwYXJzZSBmaWxlcywKKyAgc2luY2UgdG8gbWFyayBhIGZpbGUgc3BhcnNlIHdlIG5lZWQgdG8gbW9kaWZ5IHRoZSBkaXJlY3RvcnkgZW50cnkgZm9yIHRoZQorICBmaWxlIGFuZCB3ZSBkbyBub3QgaW1wbGVtZW50IGRpcmVjdG9yeSBtb2RpZmljYXRpb25zIHlldC4KKy0gVGhlIG5ldyBkcml2ZXIgc3VwcG9ydHMgd3JpdGUoMikgd2hpY2ggY2FuIGJvdGggb3ZlcndyaXRlIGV4aXN0aW5nIGRhdGEgYW5kCisgIGV4dGVuZCB0aGUgZmlsZSBzaXplIHNvIHRoYXQgeW91IGNhbiB3cml0ZSBiZXlvbmQgdGhlIGV4aXN0aW5nIGRhdGEuICBBbHNvLAorICB3cml0aW5nIGludG8gc3BhcnNlIHJlZ2lvbnMgaXMgc3VwcG9ydGVkIGFuZCB0aGUgaG9sZXMgYXJlIGZpbGxlZCBpbiB3aXRoCisgIGNsdXN0ZXJzLiAgQnV0IGF0IHByZXNlbnQgb25seSBsaW1pdGVkIHN1cHBvcnQgZm9yIGhpZ2hseSBmcmFnbWVudGVkIGZpbGVzLAorICBpLmUuIG9uZXMgd2hpY2ggaGF2ZSB0aGVpciBkYXRhIGF0dHJpYnV0ZSBzcGxpdCBhY3Jvc3MgbXVsdGlwbGUgZXh0ZW50cywgaXMKKyAgaW5jbHVkZWQuICBBbm90aGVyIGxpbWl0YXRpb24gaXMgdGhhdCB3cml0ZSgyKSB3aWxsIG5ldmVyIGNyZWF0ZSBzcGFyc2UKKyAgZmlsZXMsIHNpbmNlIHRvIG1hcmsgYSBmaWxlIHNwYXJzZSB3ZSBuZWVkIHRvIG1vZGlmeSB0aGUgZGlyZWN0b3J5IGVudHJ5IGZvcgorICB0aGUgZmlsZSBhbmQgd2UgZG8gbm90IGltcGxlbWVudCBkaXJlY3RvcnkgbW9kaWZpY2F0aW9ucyB5ZXQuCisKK1N1cHBvcnRlZCBtb3VudCBvcHRpb25zCis9PT09PT09PT09PT09PT09PT09PT09PQorCitJbiBhZGRpdGlvbiB0byB0aGUgZ2VuZXJpYyBtb3VudCBvcHRpb25zIGRlc2NyaWJlZCBieSB0aGUgbWFudWFsIHBhZ2UgZm9yIHRoZQorbW91bnQgY29tbWFuZCAobWFuIDggbW91bnQsIGFsc28gc2VlIG1hbiA1IGZzdGFiKSwgdGhlIE5URlMgZHJpdmVyIHN1cHBvcnRzIHRoZQorZm9sbG93aW5nIG1vdW50IG9wdGlvbnM6CisKK2lvY2hhcnNldD1uYW1lCQlEZXByZWNhdGVkIG9wdGlvbi4gIFN0aWxsIHN1cHBvcnRlZCBidXQgcGxlYXNlIHVzZQorCQkJbmxzPW5hbWUgaW4gdGhlIGZ1dHVyZS4gIFNlZSBkZXNjcmlwdGlvbiBmb3IgbmxzPW5hbWUuCisKK25scz1uYW1lCQlDaGFyYWN0ZXIgc2V0IHRvIHVzZSB3aGVuIHJldHVybmluZyBmaWxlIG5hbWVzLgorCQkJVW5saWtlIFZGQVQsIE5URlMgc3VwcHJlc3NlcyBuYW1lcyB0aGF0IGNvbnRhaW4KKwkJCXVuY29udmVydGlibGUgY2hhcmFjdGVycy4gIE5vdGUgdGhhdCBtb3N0IGNoYXJhY3RlcgorCQkJc2V0cyBjb250YWluIGluc3VmZmljaWVudCBjaGFyYWN0ZXJzIHRvIHJlcHJlc2VudCBhbGwKKwkJCXBvc3NpYmxlIFVuaWNvZGUgY2hhcmFjdGVycyB0aGF0IGNhbiBleGlzdCBvbiBOVEZTLgorCQkJVG8gYmUgc3VyZSB5b3UgYXJlIG5vdCBtaXNzaW5nIGFueSBmaWxlcywgeW91IGFyZQorCQkJYWR2aXNlZCB0byB1c2UgbmxzPXV0Zjggd2hpY2ggaXMgY2FwYWJsZSBvZgorCQkJcmVwcmVzZW50aW5nIGFsbCBVbmljb2RlIGNoYXJhY3RlcnMuCisKK3V0Zjg9PGJvb2w+CQlPcHRpb24gbm8gbG9uZ2VyIHN1cHBvcnRlZC4gIEN1cnJlbnRseSBtYXBwZWQgdG8KKwkJCW5scz11dGY4IGJ1dCBwbGVhc2UgdXNlIG5scz11dGY4IGluIHRoZSBmdXR1cmUgYW5kCisJCQltYWtlIHN1cmUgdXRmOCBpcyBjb21waWxlZCBlaXRoZXIgYXMgbW9kdWxlIG9yIGludG8KKwkJCXRoZSBrZXJuZWwuICBTZWUgZGVzY3JpcHRpb24gZm9yIG5scz1uYW1lLgorCit1aWQ9CitnaWQ9Cit1bWFzaz0JCQlQcm92aWRlIGRlZmF1bHQgb3duZXIsIGdyb3VwLCBhbmQgYWNjZXNzIG1vZGUgbWFzay4KKwkJCVRoZXNlIG9wdGlvbnMgd29yayBhcyBkb2N1bWVudGVkIGluIG1vdW50KDgpLiAgQnkKKwkJCWRlZmF1bHQsIHRoZSBmaWxlcy9kaXJlY3RvcmllcyBhcmUgb3duZWQgYnkgcm9vdCBhbmQKKwkJCWhlL3NoZSBoYXMgcmVhZCBhbmQgd3JpdGUgcGVybWlzc2lvbnMsIGFzIHdlbGwgYXMKKwkJCWJyb3dzZSBwZXJtaXNzaW9uIGZvciBkaXJlY3Rvcmllcy4gIE5vIG9uZSBlbHNlIGhhcyBhbnkKKwkJCWFjY2VzcyBwZXJtaXNzaW9ucy4gIEkuZS4gdGhlIG1vZGUgb24gYWxsIGZpbGVzIGlzIGJ5CisJCQlkZWZhdWx0IHJ3LS0tLS0tLSBhbmQgZm9yIGRpcmVjdG9yaWVzIHJ3eC0tLS0tLSwgYQorCQkJY29uc2VxdWVuY2Ugb2YgdGhlIGRlZmF1bHQgZm1hc2s9MDE3NyBhbmQgZG1hc2s9MDA3Ny4KKwkJCVVzaW5nIGEgdW1hc2sgb2YgemVybyB3aWxsIGdyYW50IGFsbCBwZXJtaXNzaW9ucyB0bworCQkJZXZlcnlvbmUsIGkuZS4gYWxsIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB3aWxsIGhhdmUgbW9kZQorCQkJcnd4cnd4cnd4LgorCitmbWFzaz0KK2RtYXNrPQkJCUluc3RlYWQgb2Ygc3BlY2lmeWluZyB1bWFzayB3aGljaCBhcHBsaWVzIGJvdGggdG8KKwkJCWZpbGVzIGFuZCBkaXJlY3RvcmllcywgZm1hc2sgYXBwbGllcyBvbmx5IHRvIGZpbGVzIGFuZAorCQkJZG1hc2sgb25seSB0byBkaXJlY3Rvcmllcy4KKworc2xvcHB5PTxCT09MPgkJSWYgc2xvcHB5IGlzIHNwZWNpZmllZCwgaWdub3JlIHVua25vd24gbW91bnQgb3B0aW9ucy4KKwkJCU90aGVyd2lzZSB0aGUgZGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gYWJvcnQgbW91bnQgaWYKKwkJCWFueSB1bmtub3duIG9wdGlvbnMgYXJlIGZvdW5kLgorCitzaG93X3N5c19maWxlcz08Qk9PTD4JSWYgc2hvd19zeXNfZmlsZXMgaXMgc3BlY2lmaWVkLCBzaG93IHRoZSBzeXN0ZW0gZmlsZXMKKwkJCWluIGRpcmVjdG9yeSBsaXN0aW5ncy4gIE90aGVyd2lzZSB0aGUgZGVmYXVsdCBiZWhhdmlvdXIKKwkJCWlzIHRvIGhpZGUgdGhlIHN5c3RlbSBmaWxlcy4KKwkJCU5vdGUgdGhhdCBldmVuIHdoZW4gc2hvd19zeXNfZmlsZXMgaXMgc3BlY2lmaWVkLCAiJE1GVCIKKwkJCXdpbGwgbm90IGJlIHZpc2libGUgZHVlIHRvIGJ1Z3MvbWlzLWZlYXR1cmVzIGluIGdsaWJjLgorCQkJRnVydGhlciwgbm90ZSB0aGF0IGlycmVzcGVjdGl2ZSBvZiBzaG93X3N5c19maWxlcywgYWxsCisJCQlmaWxlcyBhcmUgYWNjZXNzaWJsZSBieSBuYW1lLCBpLmUuIHlvdSBjYW4gYWx3YXlzIGRvCisJCQkibHMgLWwgXCRVcENhc2UiIGZvciBleGFtcGxlIHRvIHNwZWNpZmljYWxseSBzaG93IHRoZQorCQkJc3lzdGVtIGZpbGUgY29udGFpbmluZyB0aGUgVW5pY29kZSB1cGNhc2UgdGFibGUuCisKK2Nhc2Vfc2Vuc2l0aXZlPTxCT09MPglJZiBjYXNlX3NlbnNpdGl2ZSBpcyBzcGVjaWZpZWQsIHRyZWF0IGFsbCBmaWxlIG5hbWVzIGFzCisJCQljYXNlIHNlbnNpdGl2ZSBhbmQgY3JlYXRlIGZpbGUgbmFtZXMgaW4gdGhlIFBPU0lYCisJCQluYW1lc3BhY2UuICBPdGhlcndpc2UgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIGlzIHRvIHRyZWF0CisJCQlmaWxlIG5hbWVzIGFzIGNhc2UgaW5zZW5zaXRpdmUgYW5kIHRvIGNyZWF0ZSBmaWxlIG5hbWVzCisJCQlpbiB0aGUgV0lOMzIvTE9ORyBuYW1lIHNwYWNlLiAgTm90ZSwgdGhlIExpbnV4IE5URlMKKwkJCWRyaXZlciB3aWxsIG5ldmVyIGNyZWF0ZSBzaG9ydCBmaWxlIG5hbWVzIGFuZCB3aWxsCisJCQlyZW1vdmUgdGhlbSBvbiByZW5hbWUvZGVsZXRlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGxvbmcKKwkJCWZpbGUgbmFtZS4KKwkJCU5vdGUgdGhhdCBmaWxlcyByZW1haW4gYWNjZXNzaWJsZSB2aWEgdGhlaXIgc2hvcnQgZmlsZQorCQkJbmFtZSwgaWYgaXQgZXhpc3RzLiAgSWYgY2FzZV9zZW5zaXRpdmUsIHlvdSB3aWxsIG5lZWQKKwkJCXRvIHByb3ZpZGUgdGhlIGNvcnJlY3QgY2FzZSBvZiB0aGUgc2hvcnQgZmlsZSBuYW1lLgorCitkaXNhYmxlX3NwYXJzZT08Qk9PTD4JSWYgZGlzYWJsZV9zcGFyc2UgaXMgc3BlY2lmaWVkLCBjcmVhdGlvbiBvZiBzcGFyc2UKKwkJCXJlZ2lvbnMsIGkuZS4gaG9sZXMsIGluc2lkZSBmaWxlcyBpcyBkaXNhYmxlZCBmb3IgdGhlCisJCQl2b2x1bWUgKGZvciB0aGUgZHVyYXRpb24gb2YgdGhpcyBtb3VudCBvbmx5KS4gIEJ5CisJCQlkZWZhdWx0LCBjcmVhdGlvbiBvZiBzcGFyc2UgcmVnaW9ucyBpcyBlbmFibGVkLCB3aGljaAorCQkJaXMgY29uc2lzdGVudCB3aXRoIHRoZSBiZWhhdmlvdXIgb2YgdHJhZGl0aW9uYWwgVW5peAorCQkJZmlsZXN5c3RlbXMuCisKK2Vycm9ycz1vcHQJCVdoYXQgdG8gZG8gd2hlbiBjcml0aWNhbCBmaWxlc3lzdGVtIGVycm9ycyBhcmUgZm91bmQuCisJCQlGb2xsb3dpbmcgdmFsdWVzIGNhbiBiZSB1c2VkIGZvciAib3B0IjoKKwkJCSAgY29udGludWU6IERFRkFVTFQsIHRyeSB0byBjbGVhbi11cCBhcyBtdWNoIGFzCisJCQkJICAgIHBvc3NpYmxlLCBlLmcuIG1hcmtpbmcgYSBjb3JydXB0IGlub2RlIGFzCisJCQkJICAgIGJhZCBzbyBpdCBpcyBubyBsb25nZXIgYWNjZXNzZWQsIGFuZCB0aGVuCisJCQkJICAgIGNvbnRpbnVlLgorCQkJICByZWNvdmVyOiAgQXQgcHJlc2VudCBvbmx5IHN1cHBvcnRlZCBpcyByZWNvdmVyeSBvZgorCQkJCSAgICB0aGUgYm9vdCBzZWN0b3IgZnJvbSB0aGUgYmFja3VwIGNvcHkuCisJCQkJICAgIElmIHJlYWQtb25seSBtb3VudCwgdGhlIHJlY292ZXJ5IGlzIGRvbmUKKwkJCQkgICAgaW4gbWVtb3J5IG9ubHkgYW5kIG5vdCB3cml0dGVuIHRvIGRpc2suCisJCQlOb3RlIHRoYXQgdGhlIG9wdGlvbnMgYXJlIGFkZGl0aXZlLCBpLmUuIHNwZWNpZnlpbmc6CisJCQkgICBlcnJvcnM9Y29udGludWUsZXJyb3JzPXJlY292ZXIKKwkJCW1lYW5zIHRoZSBkcml2ZXIgd2lsbCBhdHRlbXB0IHRvIHJlY292ZXIgYW5kIGlmIHRoYXQKKwkJCWZhaWxzIGl0IHdpbGwgY2xlYW4tdXAgYXMgbXVjaCBhcyBwb3NzaWJsZSBhbmQKKwkJCWNvbnRpbnVlLgorCittZnRfem9uZV9tdWx0aXBsaWVyPQlTZXQgdGhlIE1GVCB6b25lIG11bHRpcGxpZXIgZm9yIHRoZSB2b2x1bWUgKHRoaXMKKwkJCXNldHRpbmcgaXMgbm90IHBlcnNpc3RlbnQgYWNyb3NzIG1vdW50cyBhbmQgY2FuIGJlCisJCQljaGFuZ2VkIGZyb20gbW91bnQgdG8gbW91bnQgYnV0IGNhbm5vdCBiZSBjaGFuZ2VkIG9uCisJCQlyZW1vdW50KS4gIFZhbHVlcyBvZiAxIHRvIDQgYXJlIGFsbG93ZWQsIDEgYmVpbmcgdGhlCisJCQlkZWZhdWx0LiAgVGhlIE1GVCB6b25lIG11bHRpcGxpZXIgZGV0ZXJtaW5lcyBob3cgbXVjaAorCQkJc3BhY2UgaXMgcmVzZXJ2ZWQgZm9yIHRoZSBNRlQgb24gdGhlIHZvbHVtZS4gIElmIGFsbAorCQkJb3RoZXIgc3BhY2UgaXMgdXNlZCB1cCwgdGhlbiB0aGUgTUZUIHpvbmUgd2lsbCBiZQorCQkJc2hydW5rIGR5bmFtaWNhbGx5LCBzbyB0aGlzIGhhcyBubyBpbXBhY3Qgb24gdGhlCisJCQlhbW91bnQgb2YgZnJlZSBzcGFjZS4gIEhvd2V2ZXIsIGl0IGNhbiBoYXZlIGFuIGltcGFjdAorCQkJb24gcGVyZm9ybWFuY2UgYnkgYWZmZWN0aW5nIGZyYWdtZW50YXRpb24gb2YgdGhlIE1GVC4KKwkJCUluIGdlbmVyYWwgdXNlIHRoZSBkZWZhdWx0LiAgSWYgeW91IGhhdmUgYSBsb3Qgb2Ygc21hbGwKKwkJCWZpbGVzIHRoZW4gdXNlIGEgaGlnaGVyIHZhbHVlLiAgVGhlIHZhbHVlcyBoYXZlIHRoZQorCQkJZm9sbG93aW5nIG1lYW5pbmc6CisJCQkgICAgICBWYWx1ZQkgICAgIE1GVCB6b25lIHNpemUgKCUgb2Ygdm9sdW1lIHNpemUpCisJCQkJMQkJMTIuNSUKKwkJCQkyCQkyNSUKKwkJCQkzCQkzNy41JQorCQkJCTQJCTUwJQorCQkJTm90ZSB0aGlzIG9wdGlvbiBpcyBpcnJlbGV2YW50IGZvciByZWFkLW9ubHkgbW91bnRzLgorCisKK0tub3duIGJ1Z3MgYW5kIChtaXMtKWZlYXR1cmVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCistIFRoZSBsaW5rIGNvdW50IG9uIGVhY2ggZGlyZWN0b3J5IGlub2RlIGVudHJ5IGlzIHNldCB0byAxLCBkdWUgdG8gTGludXggbm90CisgIHN1cHBvcnRpbmcgZGlyZWN0b3J5IGhhcmQgbGlua3MuICBUaGlzIG1heSB3ZWxsIGNvbmZ1c2Ugc29tZSB1c2VyIHNwYWNlCisgIGFwcGxpY2F0aW9ucywgc2luY2UgdGhlIGRpcmVjdG9yeSBuYW1lcyB3aWxsIGhhdmUgdGhlIHNhbWUgaW5vZGUgbnVtYmVycy4KKyAgVGhpcyBhbHNvIHNwZWVkcyB1cCBudGZzX3JlYWRfaW5vZGUoKSBpbW1lbnNlbHkuICBBbmQgd2UgaGF2ZW4ndCBmb3VuZCBhbnkKKyAgcHJvYmxlbXMgd2l0aCB0aGlzIGFwcHJvYWNoIHNvIGZhci4gIElmIHlvdSBmaW5kIGEgcHJvYmxlbSB3aXRoIHRoaXMsIHBsZWFzZQorICBsZXQgdXMga25vdy4KKworCitQbGVhc2Ugc2VuZCBidWcgcmVwb3J0cy9jb21tZW50cy9mZWVkYmFjay9hYnVzZSB0byB0aGUgTGludXgtTlRGUyBkZXZlbG9wbWVudAorbGlzdCBhdCBzb3VyY2Vmb3JnZTogbGludXgtbnRmcy1kZXZAbGlzdHMuc291cmNlZm9yZ2UubmV0CisKKworVXNpbmcgTlRGUyB2b2x1bWUgYW5kIHN0cmlwZSBzZXRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRm9yIHN1cHBvcnQgb2Ygdm9sdW1lIGFuZCBzdHJpcGUgc2V0cywgeW91IGNhbiBlaXRoZXIgdXNlIHRoZSBrZXJuZWwncworRGV2aWNlLU1hcHBlciBkcml2ZXIgb3IgdGhlIGtlcm5lbCdzIFNvZnR3YXJlIFJBSUQgLyBNRCBkcml2ZXIuICBUaGUgZm9ybWVyIGlzCit0aGUgcmVjb21tZW5kZWQgb25lIHRvIHVzZSBmb3IgbGluZWFyIHJhaWQuICBCdXQgdGhlIGxhdHRlciBpcyByZXF1aXJlZCBmb3IKK3JhaWQgbGV2ZWwgNS4gIEZvciBzdHJpcGluZyBhbmQgbWlycm9yaW5nLCBlaXRoZXIgZHJpdmVyIHNob3VsZCB3b3JrIGZpbmUuCisKKworVGhlIERldmljZS1NYXBwZXIgZHJpdmVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWW91IHdpbGwgbmVlZCB0byBjcmVhdGUgYSB0YWJsZSBvZiB0aGUgY29tcG9uZW50cyBvZiB0aGUgdm9sdW1lL3N0cmlwZSBzZXQgYW5kCitob3cgdGhleSBmaXQgdG9nZXRoZXIgYW5kIGxvYWQgdGhpcyBpbnRvIHRoZSBrZXJuZWwgdXNpbmcgdGhlIGRtc2V0dXAgdXRpbGl0eQorKHNlZSBtYW4gOCBkbXNldHVwKS4KKworTGluZWFyIHZvbHVtZSBzZXRzLCBpLmUuIGxpbmVhciByYWlkLCBoYXMgYmVlbiB0ZXN0ZWQgYW5kIHdvcmtzIGZpbmUuICBFdmVuCit0aG91Z2ggdW50ZXN0ZWQsIHRoZXJlIGlzIG5vIHJlYXNvbiB3aHkgc3RyaXBlIHNldHMsIGkuZS4gcmFpZCBsZXZlbCAwLCBhbmQKK21pcnJvcnMsIGkuZS4gcmFpZCBsZXZlbCAxIHNob3VsZCBub3Qgd29yaywgdG9vLiAgU3RyaXBlcyB3aXRoIHBhcml0eSwgaS5lLgorcmFpZCBsZXZlbCA1LCB1bmZvcnR1bmF0ZWx5IGNhbm5vdCB3b3JrIHlldCBiZWNhdXNlIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlCitEZXZpY2UtTWFwcGVyIGRyaXZlciBkb2VzIG5vdCBzdXBwb3J0IHJhaWQgbGV2ZWwgNS4gIFlvdSBtYXkgYmUgYWJsZSB0byB1c2UgdGhlCitTb2Z0d2FyZSBSQUlEIC8gTUQgZHJpdmVyIGZvciByYWlkIGxldmVsIDUsIHNlZSB0aGUgbmV4dCBzZWN0aW9uIGZvciBkZXRhaWxzLgorCitUbyBjcmVhdGUgdGhlIHRhYmxlIGRlc2NyaWJpbmcgeW91ciB2b2x1bWUgeW91IHdpbGwgbmVlZCB0byBrbm93IGVhY2ggb2YgaXRzCitjb21wb25lbnRzIGFuZCB0aGVpciBzaXplcyBpbiBzZWN0b3JzLCBpLmUuIG11bHRpcGxlcyBvZiA1MTItYnl0ZSBibG9ja3MuCisKK0ZvciBOVDQgZmF1bHQgdG9sZXJhbnQgdm9sdW1lcyB5b3UgY2FuIG9idGFpbiB0aGUgc2l6ZXMgdXNpbmcgZmRpc2suICBTbyBmb3IKK2V4YW1wbGUgaWYgb25lIG9mIHlvdXIgcGFydGl0aW9ucyBpcyAvZGV2L2hkYTIgeW91IHdvdWxkIGRvOgorCiskIGZkaXNrIC11bCAvZGV2L2hkYQorCitEaXNrIC9kZXYvaGRhOiA4MS45IEdCLCA4MTk2NDMwMjMzNiBieXRlcworMjU1IGhlYWRzLCA2MyBzZWN0b3JzL3RyYWNrLCA5OTY0IGN5bGluZGVycywgdG90YWwgMTYwMDg2NTI4IHNlY3RvcnMKK1VuaXRzID0gc2VjdG9ycyBvZiAxICogNTEyID0gNTEyIGJ5dGVzCisKKyAgIERldmljZSBCb290ICAgICAgU3RhcnQgICAgICAgICBFbmQgICAgICBCbG9ja3MgICBJZCAgU3lzdGVtCisgICAvZGV2L2hkYTEgICAqICAgICAgICAgIDYzICAgICA0MjA5MDI5ICAgICAyMTA0NDgzKyAgODMgIExpbnV4CisgICAvZGV2L2hkYTIgICAgICAgICA0MjA5MDMwICAgIDM3NzY4ODE0ICAgIDE2Nzc5ODkyKyAgODYgIE5URlMKKyAgIC9kZXYvaGRhMyAgICAgICAgMzc3Njg4MTUgICAgNDYxNzA4MDkgICAgIDQyMDA5OTcrICA4MyAgTGludXgKKworQW5kIHlvdSB3b3VsZCBrbm93IHRoYXQgL2Rldi9oZGEyIGhhcyBhIHNpemUgb2YgMzc3Njg4MTQgLSA0MjA5MDMwICsgMSA9CiszMzU1OTc4NSBzZWN0b3JzLgorCitGb3IgV2luMmsgYW5kIGxhdGVyIGR5bmFtaWMgZGlza3MsIHlvdSBjYW4gZm9yIGV4YW1wbGUgdXNlIHRoZSBsZG1pbmZvIHV0aWxpdHkKK3doaWNoIGlzIHBhcnQgb2YgdGhlIExpbnV4IExETSB0b29scyAodGhlIGxhdGVzdCB2ZXJzaW9uIGF0IHRoZSB0aW1lIG9mCit3cml0aW5nIGlzIGxpbnV4LWxkbS0wLjAuOC50YXIuYnoyKS4gIFlvdSBjYW4gZG93bmxvYWQgaXQgZnJvbToKKwlodHRwOi8vd3d3LmxpbnV4LW50ZnMub3JnLworU2ltcGx5IGV4dHJhY3QgdGhlIGRvd25sb2FkZWQgYXJjaGl2ZSAodGFyIHh2amYgbGludXgtbGRtLTAuMC44LnRhci5iejIpLCBnbworaW50byBpdCAoY2QgbGludXgtbGRtLTAuMC44KSBhbmQgY2hhbmdlIHRvIHRoZSB0ZXN0IGRpcmVjdG9yeSAoY2QgdGVzdCkuICBZb3UKK3dpbGwgZmluZCB0aGUgcHJlY29tcGlsZWQgKGkzODYpIGxkbWluZm8gdXRpbGl0eSB0aGVyZS4gIE5PVEU6IFlvdSB3aWxsIG5vdCBiZQorYWJsZSB0byBjb21waWxlIHRoaXMgeW91cnNlbGYgZWFzaWx5IHNvIHVzZSB0aGUgYmluYXJ5IHZlcnNpb24hCisKK1RoZW4geW91IHdvdWxkIHVzZSBsZG1pbmZvIGluIGR1bXAgbW9kZSB0byBvYnRhaW4gdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbjoKKworJCAuL2xkbWluZm8gLS1kdW1wIC9kZXYvaGRhCisKK1RoaXMgd291bGQgZHVtcCB0aGUgTERNIGRhdGFiYXNlIGZvdW5kIG9uIC9kZXYvaGRhIHdoaWNoIGRlc2NyaWJlcyBhbGwgb2YgeW91cgorZHluYW1pYyBkaXNrcyBhbmQgYWxsIHRoZSB2b2x1bWVzIG9uIHRoZW0uICBBdCB0aGUgYm90dG9tIHlvdSB3aWxsIHNlZSB0aGUKK1ZPTFVNRSBERUZJTklUSU9OUyBzZWN0aW9uIHdoaWNoIGlzIGFsbCB5b3UgcmVhbGx5IG5lZWQuICBZb3UgbWF5IG5lZWQgdG8gbG9vaworZnVydGhlciBhYm92ZSB0byBkZXRlcm1pbmUgd2hpY2ggb2YgdGhlIGRpc2tzIGluIHRoZSB2b2x1bWUgZGVmaW5pdGlvbnMgaXMKK3doaWNoIGRldmljZSBpbiBMaW51eC4gIEhpbnQ6IFJ1biBsZG1pbmZvIG9uIGVhY2ggb2YgeW91ciBkeW5hbWljIGRpc2tzIGFuZAorbG9vayBhdCB0aGUgRGlzayBJZCBjbG9zZSB0byB0aGUgdG9wIG9mIHRoZSBvdXRwdXQgZm9yIGVhY2ggKHRoZSBQUklWQVRFIEhFQURFUgorc2VjdGlvbikuICBZb3UgY2FuIHRoZW4gZmluZCB0aGVzZSBEaXNrIElkcyBpbiB0aGUgVkJMSyBEQVRBQkFTRSBzZWN0aW9uIGluIHRoZQorPERpc2s+IGNvbXBvbmVudHMgd2hlcmUgeW91IHdpbGwgZ2V0IHRoZSBMRE0gTmFtZSBmb3IgdGhlIGRpc2sgdGhhdCBpcyBmb3VuZCBpbgordGhlIFZPTFVNRSBERUZJTklUSU9OUyBzZWN0aW9uLgorCitOb3RlIHlvdSB3aWxsIGFsc28gbmVlZCB0byBlbmFibGUgdGhlIExETSBkcml2ZXIgaW4gdGhlIExpbnV4IGtlcm5lbC4gIElmIHlvdXIKK2Rpc3RyaWJ1dGlvbiBkaWQgbm90IGVuYWJsZSBpdCwgeW91IHdpbGwgbmVlZCB0byByZWNvbXBpbGUgdGhlIGtlcm5lbCB3aXRoIGl0CitlbmFibGVkLiAgVGhpcyB3aWxsIGNyZWF0ZSB0aGUgTERNIHBhcnRpdGlvbnMgb24gZWFjaCBkZXZpY2UgYXQgYm9vdCB0aW1lLiAgWW91Cit3b3VsZCB0aGVuIHVzZSB0aG9zZSBkZXZpY2VzIChmb3IgL2Rldi9oZGEgdGhleSB3b3VsZCBiZSAvZGV2L2hkYTEsIDIsIDMsIGV0YykKK2luIHRoZSBEZXZpY2UtTWFwcGVyIHRhYmxlLgorCitZb3UgY2FuIGFsc28gYnlwYXNzIHVzaW5nIHRoZSBMRE0gZHJpdmVyIGJ5IHVzaW5nIHRoZSBtYWluIGRldmljZSAoZS5nLgorL2Rldi9oZGEpIGFuZCB0aGVuIHVzaW5nIHRoZSBvZmZzZXRzIG9mIHRoZSBMRE0gcGFydGl0aW9ucyBpbnRvIHRoaXMgZGV2aWNlIGFzCit0aGUgIlN0YXJ0IHNlY3RvciBvZiBkZXZpY2UiIHdoZW4gY3JlYXRpbmcgdGhlIHRhYmxlLiAgT25jZSBhZ2FpbiBsZG1pbmZvIHdvdWxkCitnaXZlIHlvdSB0aGUgY29ycmVjdCBpbmZvcm1hdGlvbiB0byBkbyB0aGlzLgorCitBc3N1bWluZyB5b3Uga25vdyBhbGwgeW91ciBkZXZpY2VzIGFuZCB0aGVpciBzaXplcyB0aGluZ3MgYXJlIGVhc3kuCisKK0ZvciBhIGxpbmVhciByYWlkIHRoZSB0YWJsZSB3b3VsZCBsb29rIGxpa2UgdGhpcyAobm90ZSBhbGwgdmFsdWVzIGFyZSBpbgorNTEyLWJ5dGUgc2VjdG9ycyk6CisKKy0tLSBjdXQgaGVyZSAtLS0KKyMgT2Zmc2V0IGludG8JU2l6ZSBvZiB0aGlzCVJhaWQgdHlwZQlEZXZpY2UJCVN0YXJ0IHNlY3RvcgorIyB2b2x1bWUJZGV2aWNlCQkJCQkJb2YgZGV2aWNlCiswCQkxMDI4MTYxCQlsaW5lYXIJCS9kZXYvaGRhMQkwCisxMDI4MTYxCQkzOTAzNzYyCQlsaW5lYXIJCS9kZXYvaGRiMgkwCis0OTMxOTIzCQkyMTAzMjExCQlsaW5lYXIJCS9kZXYvaGRjMQkwCistLS0gY3V0IGhlcmUgLS0tCisKK0ZvciBhIHN0cmlwZWQgdm9sdW1lLCBpLmUuIHJhaWQgbGV2ZWwgMCwgeW91IHdpbGwgbmVlZCB0byBrbm93IHRoZSBjaHVuayBzaXplCit5b3UgdXNlZCB3aGVuIGNyZWF0aW5nIHRoZSB2b2x1bWUuICBXaW5kb3dzIHVzZXMgNjRraUIgYXMgdGhlIGRlZmF1bHQsIHNvIGl0Cit3aWxsIHByb2JhYmx5IGJlIHRoaXMgdW5sZXNzIHlvdSBjaGFuZ2VzIHRoZSBkZWZhdWx0cyB3aGVuIGNyZWF0aW5nIHRoZSBhcnJheS4KKworRm9yIGEgcmFpZCBsZXZlbCAwIHRoZSB0YWJsZSB3b3VsZCBsb29rIGxpa2UgdGhpcyAobm90ZSBhbGwgdmFsdWVzIGFyZSBpbgorNTEyLWJ5dGUgc2VjdG9ycyk6CisKKy0tLSBjdXQgaGVyZSAtLS0KKyMgT2Zmc2V0ICAgU2l6ZQkgICAgUmFpZCAgICAgTnVtYmVyICAgQ2h1bmsgIDFzdCAgICAgICAgU3RhcnQJMm5kCSAgU3RhcnQKKyMgaW50byAgICAgb2YgdGhlICAgdHlwZSAgICAgb2YJICAgICAgc2l6ZSAgIERldmljZQlpbglEZXZpY2UJICBpbgorIyB2b2x1bWUgICB2b2x1bWUJICAgICBzdHJpcGVzCQkJZGV2aWNlCQkgIGRldmljZQorMAkgICAyMDU2MzIwICBzdHJpcGVkICAyCSAgICAgIDEyOCAgICAvZGV2L2hkYTEJMAkvZGV2L2hkYjEgMAorLS0tIGN1dCBoZXJlIC0tLQorCitJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIHR3byBkZXZpY2VzLCBqdXN0IGFkZCBlYWNoIG9mIHRoZW0gdG8gdGhlIGVuZCBvZiB0aGUKK2xpbmUuCisKK0ZpbmFsbHksIGZvciBhIG1pcnJvcmVkIHZvbHVtZSwgaS5lLiByYWlkIGxldmVsIDEsIHRoZSB0YWJsZSB3b3VsZCBsb29rIGxpa2UKK3RoaXMgKG5vdGUgYWxsIHZhbHVlcyBhcmUgaW4gNTEyLWJ5dGUgc2VjdG9ycyk6CisKKy0tLSBjdXQgaGVyZSAtLS0KKyMgT2ZzIFNpemUgICBSYWlkICAgTG9nICBOdW1iZXIgUmVnaW9uIFNob3VsZCBOdW1iZXIgU291cmNlICBTdGFydCBUYXJnZXQgU3RhcnQKKyMgaW4gIG9mIHRoZSB0eXBlICAgdHlwZSBvZiBsb2cgc2l6ZSAgIHN5bmM/ICBvZiAgICAgRGV2aWNlICBpbiAgICBEZXZpY2UgaW4KKyMgdm9sIHZvbHVtZQkJIHBhcmFtcwkJICAgICBtaXJyb3JzCSAgICAgRGV2aWNlCSAgRGV2aWNlCiswICAgIDIwNTYzMjAgbWlycm9yIGNvcmUgMgkxNiAgICAgbm9zeW5jIDIJICAgL2Rldi9oZGExIDAgICAvZGV2L2hkYjEgMAorLS0tIGN1dCBoZXJlIC0tLQorCitJZiB5b3UgYXJlIG1pcnJvcmluZyB0byBtdWx0aXBsZSBkZXZpY2VzIHlvdSBjYW4gc3BlY2lmeSBmdXJ0aGVyIHRhcmdldHMgYXQgdGhlCitlbmQgb2YgdGhlIGxpbmUuCisKK05vdGUgdGhlICJTaG91bGQgc3luYz8iIHBhcmFtZXRlciAibm9zeW5jIiBtZWFucyB0aGF0IHRoZSB0d28gbWlycm9ycyBhcmUKK2FscmVhZHkgaW4gc3luYyB3aGljaCB3aWxsIGJlIHRoZSBjYXNlIG9uIGEgY2xlYW4gc2h1dGRvd24gb2YgV2luZG93cy4gIElmIHRoZQorbWlycm9ycyBhcmUgbm90IGNsZWFuLCB5b3UgY2FuIHNwZWNpZnkgdGhlICJzeW5jIiBvcHRpb24gaW5zdGVhZCBvZiAibm9zeW5jIgorYW5kIHRoZSBEZXZpY2UtTWFwcGVyIGRyaXZlciB3aWxsIHRoZW4gY29weSB0aGUgZW50aXJldHkgb2YgdGhlICJTb3VyY2UgRGV2aWNlIgordG8gdGhlICJUYXJnZXQgRGV2aWNlIiBvciBpZiB5b3Ugc3BlY2lmaWVkIG11bHRpcGxlIHRhcmdldCBkZXZpY2VzIHRvIGFsbCBvZgordGhlbS4KKworT25jZSB5b3UgaGF2ZSB5b3VyIHRhYmxlLCBzYXZlIGl0IGluIGEgZmlsZSBzb21ld2hlcmUgKGUuZy4gL2V0Yy9udGZzdm9sdW1lMSksCithbmQgaGFuZCBpdCBvdmVyIHRvIGRtc2V0dXAgdG8gd29yayB3aXRoLCBsaWtlIHNvOgorCiskIGRtc2V0dXAgY3JlYXRlIG15dm9sdW1lMSAvZXRjL250ZnN2b2x1bWUxCisKK1lvdSBjYW4gb2J2aW91c2x5IHJlcGxhY2UgIm15dm9sdW1lMSIgd2l0aCB3aGF0ZXZlciBuYW1lIHlvdSBsaWtlLgorCitJZiBpdCBhbGwgd29ya2VkLCB5b3Ugd2lsbCBub3cgaGF2ZSB0aGUgZGV2aWNlIC9kZXYvZGV2aWNlLW1hcHBlci9teXZvbHVtZTEKK3doaWNoIHlvdSBjYW4gdGhlbiBqdXN0IHVzZSBhcyBhbiBhcmd1bWVudCB0byB0aGUgbW91bnQgY29tbWFuZCBhcyB1c3VhbCB0bworbW91bnQgdGhlIG50ZnMgdm9sdW1lLiAgRm9yIGV4YW1wbGU6CisKKyQgbW91bnQgLXQgbnRmcyAtbyBybyAvZGV2L2RldmljZS1tYXBwZXIvbXl2b2x1bWUxIC9tbnQvbXl2b2wxCisKKyhZb3UgbmVlZCB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeSAvbW50L215dm9sMSBmaXJzdCBhbmQgb2YgY291cnNlIHlvdSBjYW4gdXNlCithbnl0aGluZyB5b3UgbGlrZSBpbnN0ZWFkIG9mIC9tbnQvbXl2b2wxIGFzIGxvbmcgYXMgaXQgaXMgYW4gZXhpc3RpbmcKK2RpcmVjdG9yeS4pCisKK0l0IGlzIGFkdmlzYWJsZSB0byBkbyB0aGUgbW91bnQgcmVhZC1vbmx5IHRvIHNlZSBpZiB0aGUgdm9sdW1lIGhhcyBiZWVuIHNldHVwCitjb3JyZWN0bHkgdG8gYXZvaWQgdGhlIHBvc3NpYmlsaXR5IG9mIGNhdXNpbmcgZGFtYWdlIHRvIHRoZSBkYXRhIG9uIHRoZSBudGZzCit2b2x1bWUuCisKKworVGhlIFNvZnR3YXJlIFJBSUQgLyBNRCBkcml2ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FuIGFsdGVybmF0aXZlIHRvIHVzaW5nIHRoZSBEZXZpY2UtTWFwcGVyIGRyaXZlciBpcyB0byB1c2UgdGhlIGtlcm5lbCdzCitTb2Z0d2FyZSBSQUlEIC8gTUQgZHJpdmVyLiAgRm9yIHdoaWNoIHlvdSBuZWVkIHRvIHNldCB1cCB5b3VyIC9ldGMvcmFpZHRhYgorYXBwcm9wcmlhdGVseSAoc2VlIG1hbiA1IHJhaWR0YWIpLgorCitMaW5lYXIgdm9sdW1lIHNldHMsIGkuZS4gbGluZWFyIHJhaWQsIGFzIHdlbGwgYXMgc3RyaXBlIHNldHMsIGkuZS4gcmFpZCBsZXZlbAorMCwgaGF2ZSBiZWVuIHRlc3RlZCBhbmQgd29yayBmaW5lICh0aG91Z2ggc2VlIHNlY3Rpb24gIkxpbWl0YXRpb25zIHdoZW4gdXNpbmcKK3RoZSBNRCBkcml2ZXIgd2l0aCBOVEZTIHZvbHVtZXMiIGVzcGVjaWFsbHkgaWYgeW91IHdhbnQgdG8gdXNlIGxpbmVhciByYWlkKS4KK0V2ZW4gdGhvdWdoIHVudGVzdGVkLCB0aGVyZSBpcyBubyByZWFzb24gd2h5IG1pcnJvcnMsIGkuZS4gcmFpZCBsZXZlbCAxLCBhbmQKK3N0cmlwZXMgd2l0aCBwYXJpdHksIGkuZS4gcmFpZCBsZXZlbCA1LCBzaG91bGQgbm90IHdvcmssIHRvby4KKworWW91IGhhdmUgdG8gdXNlIHRoZSAicGVyc2lzdGVudC1zdXBlcmJsb2NrIDAiIG9wdGlvbiBmb3IgZWFjaCByYWlkLWRpc2sgaW4gdGhlCitOVEZTIHZvbHVtZS9zdHJpcGUgeW91IGFyZSBjb25maWd1cmluZyBpbiAvZXRjL3JhaWR0YWIgYXMgdGhlIHBlcnNpc3RlbnQKK3N1cGVyYmxvY2sgdXNlZCBieSB0aGUgTUQgZHJpdmVyIHdvdWxkIGRhbWFnZSB0aGUgTlRGUyB2b2x1bWUuCisKK1dpbmRvd3MgYnkgZGVmYXVsdCB1c2VzIGEgc3RyaXBlIGNodW5rIHNpemUgb2YgNjRrLCBzbyB5b3UgcHJvYmFibHkgd2FudCB0aGUKKyJjaHVuay1zaXplIDY0ayIgb3B0aW9uIGZvciBlYWNoIHJhaWQtZGlzaywgdG9vLgorCitGb3IgZXhhbXBsZSwgaWYgeW91IGhhdmUgYSBzdHJpcGUgc2V0IGNvbnNpc3Rpbmcgb2YgdHdvIHBhcnRpdGlvbnMgL2Rldi9oZGE1CithbmQgL2Rldi9oZGIxIHlvdXIgL2V0Yy9yYWlkdGFiIHdvdWxkIGxvb2sgbGlrZSB0aGlzOgorCityYWlkZGV2IC9kZXYvbWQwCisJcmFpZC1sZXZlbAkwCisJbnItcmFpZC1kaXNrcwkyCisJbnItc3BhcmUtZGlza3MJMAorCXBlcnNpc3RlbnQtc3VwZXJibG9jawkwCisJY2h1bmstc2l6ZQk2NGsKKwlkZXZpY2UJCS9kZXYvaGRhNQorCXJhaWQtZGlzawkwCisJZGV2aWNlCQkvZGV2L2hkYjEKKwlyYWlkLWRpc2sJMQorCitGb3IgbGluZWFyIHJhaWQsIGp1c3QgY2hhbmdlIHRoZSByYWlkLWxldmVsIGFib3ZlIHRvICJyYWlkLWxldmVsIGxpbmVhciIsIGZvcgorbWlycm9ycywgY2hhbmdlIGl0IHRvICJyYWlkLWxldmVsIDEiLCBhbmQgZm9yIHN0cmlwZSBzZXRzIHdpdGggcGFyaXR5LCBjaGFuZ2UKK2l0IHRvICJyYWlkLWxldmVsIDUiLgorCitOb3RlIGZvciBzdHJpcGUgc2V0cyB3aXRoIHBhcml0eSB5b3Ugd2lsbCBhbHNvIG5lZWQgdG8gdGVsbCB0aGUgTUQgZHJpdmVyCit3aGljaCBwYXJpdHkgYWxnb3JpdGhtIHRvIHVzZSBieSBzcGVjaWZ5aW5nIHRoZSBvcHRpb24gInBhcml0eS1hbGdvcml0aG0KK3doaWNoIiwgd2hlcmUgeW91IG5lZWQgdG8gcmVwbGFjZSAid2hpY2giIHdpdGggdGhlIG5hbWUgb2YgdGhlIGFsZ29yaXRobSB0bwordXNlIChzZWUgbWFuIDUgcmFpZHRhYiBmb3IgYXZhaWxhYmxlIGFsZ29yaXRobXMpIGFuZCB5b3Ugd2lsbCBoYXZlIHRvIHRyeSB0aGUKK2RpZmZlcmVudCBhdmFpbGFibGUgYWxnb3JpdGhtcyB1bnRpbCB5b3UgZmluZCBvbmUgdGhhdCB3b3Jrcy4gIE1ha2Ugc3VyZSB5b3UKK2FyZSB3b3JraW5nIHJlYWQtb25seSB3aGVuIHBsYXlpbmcgd2l0aCB0aGlzIGFzIHlvdSBtYXkgZGFtYWdlIHlvdXIgZGF0YQorb3RoZXJ3aXNlLiAgSWYgeW91IGZpbmQgd2hpY2ggYWxnb3JpdGhtIHdvcmtzIHBsZWFzZSBsZXQgdXMga25vdyAoZW1haWwgdGhlCitsaW51eC1udGZzIGRldmVsb3BlcnMgbGlzdCBsaW51eC1udGZzLWRldkBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQgb3IgZHJvcCBpbiBvbgorSVJDIGluIGNoYW5uZWwgI250ZnMgb24gdGhlIGlyYy5mcmVlbm9kZS5uZXQgbmV0d29yaykgc28gd2UgY2FuIHVwZGF0ZSB0aGlzCitkb2N1bWVudGF0aW9uLgorCitPbmNlIHRoZSByYWlkdGFiIGlzIHNldHVwLCBydW4gZm9yIGV4YW1wbGUgcmFpZDBydW4gLWEgdG8gc3RhcnQgYWxsIGRldmljZXMgb3IKK3JhaWQwcnVuIC9kZXYvbWQwIHRvIHN0YXJ0IGEgcGFydGljdWxhciBtZCBkZXZpY2UsIGluIHRoaXMgY2FzZSAvZGV2L21kMC4KKworVGhlbiBqdXN0IHVzZSB0aGUgbW91bnQgY29tbWFuZCBhcyB1c3VhbCB0byBtb3VudCB0aGUgbnRmcyB2b2x1bWUgdXNpbmcgZm9yCitleGFtcGxlOgltb3VudCAtdCBudGZzIC1vIHJvIC9kZXYvbWQwIC9tbnQvbXludGZzdm9sdW1lCisKK0l0IGlzIGFkdmlzYWJsZSB0byBkbyB0aGUgbW91bnQgcmVhZC1vbmx5IHRvIHNlZSBpZiB0aGUgbWQgdm9sdW1lIGhhcyBiZWVuCitzZXR1cCBjb3JyZWN0bHkgdG8gYXZvaWQgdGhlIHBvc3NpYmlsaXR5IG9mIGNhdXNpbmcgZGFtYWdlIHRvIHRoZSBkYXRhIG9uIHRoZQorbnRmcyB2b2x1bWUuCisKKworTGltaXRhdGlvbnMgd2hlbiB1c2luZyB0aGUgU29mdHdhcmUgUkFJRCAvIE1EIGRyaXZlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVXNpbmcgdGhlIG1kIGRyaXZlciB3aWxsIG5vdCB3b3JrIHByb3Blcmx5IGlmIGFueSBvZiB5b3VyIE5URlMgcGFydGl0aW9ucyBoYXZlCithbiBvZGQgbnVtYmVyIG9mIHNlY3RvcnMuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGZvciBsaW5lYXIgcmFpZCBhcyBhbGwKK2RhdGEgYWZ0ZXIgdGhlIGZpcnN0IHBhcnRpdGlvbiB3aXRoIGFuIG9kZCBudW1iZXIgb2Ygc2VjdG9ycyB3aWxsIGJlIG9mZnNldCBieQorb25lIG9yIG1vcmUgc2VjdG9ycyBzbyBpZiB5b3UgbW91bnQgc3VjaCBhIHBhcnRpdGlvbiB3aXRoIHdyaXRlIHN1cHBvcnQgeW91Cit3aWxsIGNhdXNlIG1hc3NpdmUgZGFtYWdlIHRvIHRoZSBkYXRhIG9uIHRoZSB2b2x1bWUgd2hpY2ggd2lsbCBvbmx5IGJlY29tZQorYXBwYXJlbnQgd2hlbiB5b3UgdHJ5IHRvIHVzZSB0aGUgdm9sdW1lIGFnYWluIHVuZGVyIFdpbmRvd3MuCisKK1NvIHdoZW4gdXNpbmcgbGluZWFyIHJhaWQsIG1ha2Ugc3VyZSB0aGF0IGFsbCB5b3VyIHBhcnRpdGlvbnMgaGF2ZSBhbiBldmVuCitudW1iZXIgb2Ygc2VjdG9ycyBCRUZPUkUgYXR0ZW1wdGluZyB0byB1c2UgaXQuICBZb3UgaGF2ZSBiZWVuIHdhcm5lZCEKKworRXZlbiBiZXR0ZXIgaXMgdG8gc2ltcGx5IHVzZSB0aGUgRGV2aWNlLU1hcHBlciBmb3IgbGluZWFyIHJhaWQgYW5kIHRoZW4geW91IGRvCitub3QgaGF2ZSB0aGlzIHByb2JsZW0gd2l0aCBvZGQgbnVtYmVycyBvZiBzZWN0b3JzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9vY2ZzMi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL29jZnMyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzQ5ZTU0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9vY2ZzMi50eHQKQEAgLTAsMCArMSwxMDYgQEAKK09DRlMyIGZpbGVzeXN0ZW0KKz09PT09PT09PT09PT09PT09PQorT0NGUzIgaXMgYSBnZW5lcmFsIHB1cnBvc2UgZXh0ZW50IGJhc2VkIHNoYXJlZCBkaXNrIGNsdXN0ZXIgZmlsZQorc3lzdGVtIHdpdGggbWFueSBzaW1pbGFyaXRpZXMgdG8gZXh0My4gSXQgc3VwcG9ydHMgNjQgYml0IGlub2RlCitudW1iZXJzLCBhbmQgaGFzIGF1dG9tYXRpY2FsbHkgZXh0ZW5kaW5nIG1ldGFkYXRhIGdyb3VwcyB3aGljaCBtYXkKK2Fsc28gbWFrZSBpdCBhdHRyYWN0aXZlIGZvciBub24tY2x1c3RlcmVkIHVzZS4KKworWW91J2xsIHdhbnQgdG8gaW5zdGFsbCB0aGUgb2NmczItdG9vbHMgcGFja2FnZSBpbiBvcmRlciB0byBhdCBsZWFzdAorZ2V0ICJtb3VudC5vY2ZzMiIgYW5kICJvY2ZzMl9oYl9jdGwiLgorCitQcm9qZWN0IHdlYiBwYWdlOiAgICBodHRwOi8vb2NmczIud2lraS5rZXJuZWwub3JnCitUb29scyBnaXQgdHJlZTogICAgICBodHRwczovL2dpdGh1Yi5jb20vbWFya2Zhc2hlaC9vY2ZzMi10b29scworT0NGUzIgbWFpbGluZyBsaXN0czogaHR0cDovL29zcy5vcmFjbGUuY29tL3Byb2plY3RzL29jZnMyL21haWxtYW4vCisKK0FsbCBjb2RlIGNvcHlyaWdodCAyMDA1IE9yYWNsZSBleGNlcHQgd2hlbiBvdGhlcndpc2Ugbm90ZWQuCisKK0NSRURJVFM6CitMb3RzIG9mIGNvZGUgdGFrZW4gZnJvbSBleHQzIGFuZCBvdGhlciBwcm9qZWN0cy4KKworQXV0aG9ycyBpbiBhbHBoYWJldGljYWwgb3JkZXI6CitKb2VsIEJlY2tlciAgIDxqb2VsLmJlY2tlckBvcmFjbGUuY29tPgorWmFjaCBCcm93biAgICA8emFjaC5icm93bkBvcmFjbGUuY29tPgorTWFyayBGYXNoZWggICA8bWZhc2hlaEBzdXNlLmNvbT4KK0t1cnQgSGFja2VsICAgPGt1cnQuaGFja2VsQG9yYWNsZS5jb20+CitUYW8gTWEgICAgICAgIDx0YW8ubWFAb3JhY2xlLmNvbT4KK1N1bmlsIE11c2hyYW4gPHN1bmlsLm11c2hyYW5Ab3JhY2xlLmNvbT4KK01hbmlzaCBTaW5naCAgPG1hbmlzaC5zaW5naEBvcmFjbGUuY29tPgorVGlnZXIgWWFuZyAgICA8dGlnZXIueWFuZ0BvcmFjbGUuY29tPgorCitDYXZlYXRzCis9PT09PT09CitGZWF0dXJlcyB3aGljaCBPQ0ZTMiBkb2VzIG5vdCBzdXBwb3J0IHlldDoKKwktIERpcmVjdG9yeSBjaGFuZ2Ugbm90aWZpY2F0aW9uIChGX05PVElGWSkKKwktIERpc3RyaWJ1dGVkIENhY2hpbmcgKEZfU0VUTEVBU0UvRl9HRVRMRUFTRS9icmVha19sZWFzZSkKKworTW91bnQgb3B0aW9ucworPT09PT09PT09PT09PQorCitPQ0ZTMiBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIG1vdW50IG9wdGlvbnM6CisoKikgPT0gZGVmYXVsdAorCitiYXJyaWVyPTEJCVRoaXMgZW5hYmxlcy9kaXNhYmxlcyBiYXJyaWVycy4gYmFycmllcj0wIGRpc2FibGVzIGl0LAorCQkJYmFycmllcj0xIGVuYWJsZXMgaXQuCitlcnJvcnM9cmVtb3VudC1ybygqKQlSZW1vdW50IHRoZSBmaWxlc3lzdGVtIHJlYWQtb25seSBvbiBhbiBlcnJvci4KK2Vycm9ycz1wYW5pYwkJUGFuaWMgYW5kIGhhbHQgdGhlIG1hY2hpbmUgaWYgYW4gZXJyb3Igb2NjdXJzLgoraW50cgkJKCopCUFsbG93IHNpZ25hbHMgdG8gaW50ZXJydXB0IGNsdXN0ZXIgb3BlcmF0aW9ucy4KK25vaW50cgkJCURvIG5vdCBhbGxvdyBzaWduYWxzIHRvIGludGVycnVwdCBjbHVzdGVyCisJCQlvcGVyYXRpb25zLgorbm9hdGltZQkJCURvIG5vdCB1cGRhdGUgYWNjZXNzIHRpbWUuCityZWxhdGltZSgqKQkJVXBkYXRlIGF0aW1lIGlmIHRoZSBwcmV2aW91cyBhdGltZSBpcyBvbGRlciB0aGFuCisJCQltdGltZSBvciBjdGltZQorc3RyaWN0YXRpbWUJCUFsd2F5cyB1cGRhdGUgYXRpbWUsIGJ1dCB0aGUgbWluaW11bSB1cGRhdGUgaW50ZXJ2YWwKKwkJCWlzIHNwZWNpZmllZCBieSBhdGltZV9xdWFudHVtLgorYXRpbWVfcXVhbnR1bT02MCgqKQlPQ0ZTMiB3aWxsIG5vdCB1cGRhdGUgYXRpbWUgdW5sZXNzIHRoaXMgbnVtYmVyCisJCQlvZiBzZWNvbmRzIGhhcyBwYXNzZWQgc2luY2UgdGhlIGxhc3QgdXBkYXRlLgorCQkJU2V0IHRvIHplcm8gdG8gYWx3YXlzIHVwZGF0ZSBhdGltZS4gVGhpcyBvcHRpb24gbmVlZAorCQkJd29yayB3aXRoIHN0cmljdGF0aW1lLgorZGF0YT1vcmRlcmVkCSgqKQlBbGwgZGF0YSBhcmUgZm9yY2VkIGRpcmVjdGx5IG91dCB0byB0aGUgbWFpbiBmaWxlCisJCQlzeXN0ZW0gcHJpb3IgdG8gaXRzIG1ldGFkYXRhIGJlaW5nIGNvbW1pdHRlZCB0byB0aGUKKwkJCWpvdXJuYWwuCitkYXRhPXdyaXRlYmFjawkJRGF0YSBvcmRlcmluZyBpcyBub3QgcHJlc2VydmVkLCBkYXRhIG1heSBiZSB3cml0dGVuCisJCQlpbnRvIHRoZSBtYWluIGZpbGUgc3lzdGVtIGFmdGVyIGl0cyBtZXRhZGF0YSBoYXMgYmVlbgorCQkJY29tbWl0dGVkIHRvIHRoZSBqb3VybmFsLgorcHJlZmVycmVkX3Nsb3Q9MCgqKQlEdXJpbmcgbW91bnQsIHRyeSB0byB1c2UgdGhpcyBmaWxlc3lzdGVtIHNsb3QgZmlyc3QuIElmCisJCQlpdCBpcyBpbiB1c2UgYnkgYW5vdGhlciBub2RlLCB0aGUgZmlyc3QgZW1wdHkgb25lIGZvdW5kCisJCQl3aWxsIGJlIGNob3Nlbi4gSW52YWxpZCB2YWx1ZXMgd2lsbCBiZSBpZ25vcmVkLgorY29tbWl0PW5yc2VjCSgqKQlPY2ZzMiBjYW4gYmUgdG9sZCB0byBzeW5jIGFsbCBpdHMgZGF0YSBhbmQgbWV0YWRhdGEKKwkJCWV2ZXJ5ICducnNlYycgc2Vjb25kcy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgNSBzZWNvbmRzLgorCQkJVGhpcyBtZWFucyB0aGF0IGlmIHlvdSBsb3NlIHlvdXIgcG93ZXIsIHlvdSB3aWxsIGxvc2UKKwkJCWFzIG11Y2ggYXMgdGhlIGxhdGVzdCA1IHNlY29uZHMgb2Ygd29yayAoeW91cgorCQkJZmlsZXN5c3RlbSB3aWxsIG5vdCBiZSBkYW1hZ2VkIHRob3VnaCwgdGhhbmtzIHRvIHRoZQorCQkJam91cm5hbGluZykuICBUaGlzIGRlZmF1bHQgdmFsdWUgKG9yIGFueSBsb3cgdmFsdWUpCisJCQl3aWxsIGh1cnQgcGVyZm9ybWFuY2UsIGJ1dCBpdCdzIGdvb2QgZm9yIGRhdGEtc2FmZXR5LgorCQkJU2V0dGluZyBpdCB0byAwIHdpbGwgaGF2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgbGVhdmluZworCQkJaXQgYXQgdGhlIGRlZmF1bHQgKDUgc2Vjb25kcykuCisJCQlTZXR0aW5nIGl0IHRvIHZlcnkgbGFyZ2UgdmFsdWVzIHdpbGwgaW1wcm92ZQorCQkJcGVyZm9ybWFuY2UuCitsb2NhbGFsbG9jPTgoKikJCUFsbG93cyBjdXN0b20gbG9jYWxhbGxvYyBzaXplIGluIE1CLiBJZiB0aGUgdmFsdWUgaXMgdG9vCisJCQlsYXJnZSwgdGhlIGZzIHdpbGwgc2lsZW50bHkgcmV2ZXJ0IGl0IHRvIHRoZSBkZWZhdWx0LgorbG9jYWxmbG9ja3MJCVRoaXMgZGlzYWJsZXMgY2x1c3RlciBhd2FyZSBmbG9jay4KK2lub2RlNjQJCQlJbmRpY2F0ZXMgdGhhdCBPY2ZzMiBpcyBhbGxvd2VkIHRvIGNyZWF0ZSBpbm9kZXMgYXQKKwkJCWFueSBsb2NhdGlvbiBpbiB0aGUgZmlsZXN5c3RlbSwgaW5jbHVkaW5nIHRob3NlIHdoaWNoCisJCQl3aWxsIHJlc3VsdCBpbiBpbm9kZSBudW1iZXJzIG9jY3VweWluZyBtb3JlIHRoYW4gMzIKKwkJCWJpdHMgb2Ygc2lnbmlmaWNhbmNlLgordXNlcl94YXR0cgkoKikJRW5hYmxlcyBFeHRlbmRlZCBVc2VyIEF0dHJpYnV0ZXMuCitub3VzZXJfeGF0dHIJCURpc2FibGVzIEV4dGVuZGVkIFVzZXIgQXR0cmlidXRlcy4KK2FjbAkJCUVuYWJsZXMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHMgc3VwcG9ydC4KK25vYWNsCQkoKikJRGlzYWJsZXMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHMgc3VwcG9ydC4KK3Jlc3ZfbGV2ZWw9MgkoKikJU2V0IGhvdyBhZ2dyZXNzaXZlIGFsbG9jYXRpb24gcmVzZXJ2YXRpb25zIHdpbGwgYmUuCisJCQlWYWxpZCB2YWx1ZXMgYXJlIGJldHdlZW4gMCAocmVzZXJ2YXRpb25zIG9mZikgdG8gOAorCQkJKG1heGltdW0gc3BhY2UgZm9yIHJlc2VydmF0aW9ucykuCitkaXJfcmVzdl9sZXZlbD0JKCopCUJ5IGRlZmF1bHQsIGRpcmVjdG9yeSByZXNlcnZhdGlvbnMgd2lsbCBzY2FsZSB3aXRoIGZpbGUKKwkJCXJlc2VydmF0aW9ucyAtIHVzZXJzIHNob3VsZCByYXJlbHkgbmVlZCB0byBjaGFuZ2UgdGhpcworCQkJdmFsdWUuIElmIGFsbG9jYXRpb24gcmVzZXJ2YXRpb25zIGFyZSB0dXJuZWQgb2ZmLCB0aGlzCisJCQlvcHRpb24gd2lsbCBoYXZlIG5vIGVmZmVjdC4KK2NvaGVyZW5jeT1mdWxsICAoKikJRGlzYWxsb3cgY29uY3VycmVudCBPX0RJUkVDVCB3cml0ZXMsIGNsdXN0ZXIgaW5vZGUKKwkJCWxvY2sgd2lsbCBiZSB0YWtlbiB0byBmb3JjZSBvdGhlciBub2RlcyBkcm9wIGNhY2hlLAorCQkJdGhlcmVmb3JlIGZ1bGwgY2x1c3RlciBjb2hlcmVuY3kgaXMgZ3VhcmFudGVlZCBldmVuCisJCQlmb3IgT19ESVJFQ1Qgd3JpdGVzLgorY29oZXJlbmN5PWJ1ZmZlcmVkCUFsbG93IGNvbmN1cnJlbnQgT19ESVJFQ1Qgd3JpdGVzIHdpdGhvdXQgRVggbG9jayBhbW9uZworCQkJbm9kZXMsIHdoaWNoIGdhaW5zIGhpZ2ggcGVyZm9ybWFuY2UgYXQgcmlzayBvZiBnZXR0aW5nCisJCQlzdGFsZSBkYXRhIG9uIG90aGVyIG5vZGVzLgoram91cm5hbF9hc3luY19jb21taXQJQ29tbWl0IGJsb2NrIGNhbiBiZSB3cml0dGVuIHRvIGRpc2sgd2l0aG91dCB3YWl0aW5nCisJCQlmb3IgZGVzY3JpcHRvciBibG9ja3MuIElmIGVuYWJsZWQgb2xkZXIga2VybmVscyBjYW5ub3QKKwkJCW1vdW50IHRoZSBkZXZpY2UuIFRoaXMgd2lsbCBlbmFibGUgJ2pvdXJuYWxfY2hlY2tzdW0nCisJCQlpbnRlcm5hbGx5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9vbWZzLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvb21mcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQwZDQxZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvb21mcy50eHQKQEAgLTAsMCArMSwxMDYgQEAKK09wdGltaXplZCBNUEVHIEZpbGVzeXN0ZW0gKE9NRlMpCisKK092ZXJ2aWV3Cis9PT09PT09PQorCitPTUZTIGlzIGEgZmlsZXN5c3RlbSBjcmVhdGVkIGJ5IFNvbmljQmx1ZSBmb3IgdXNlIGluIHRoZSBSZXBsYXlUViBEVlIKK2FuZCBSaW8gS2FybWEgTVAzIHBsYXllci4gIFRoZSBmaWxlc3lzdGVtIGlzIGV4dGVudC1iYXNlZCwgdXRpbGl6aW5nCitibG9jayBzaXplcyBmcm9tIDJrIHRvIDhrLCB3aXRoIGhhc2gtYmFzZWQgZGlyZWN0b3JpZXMuICBUaGlzCitmaWxlc3lzdGVtIGRyaXZlciBtYXkgYmUgdXNlZCB0byByZWFkIGFuZCB3cml0ZSBkaXNrcyBmcm9tIHRoZXNlCitkZXZpY2VzLgorCitOb3RlLCBpdCBpcyBub3QgcmVjb21tZW5kZWQgdGhhdCB0aGlzIEZTIGJlIHVzZWQgaW4gcGxhY2Ugb2YgYSBnZW5lcmFsCitmaWxlc3lzdGVtIGZvciB5b3VyIG93biBzdHJlYW1pbmcgbWVkaWEgZGV2aWNlLiAgTmF0aXZlIExpbnV4IGZpbGVzeXN0ZW1zCit3aWxsIGxpa2VseSBwZXJmb3JtIGJldHRlci4KKworTW9yZSBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgYXQ6CisKKyAgICBodHRwOi8vbGludXgta2FybWEuc2YubmV0LworCitWYXJpb3VzIHV0aWxpdGllcywgaW5jbHVkaW5nIG1rb21mcyBhbmQgb21mc2NrLCBhcmUgaW5jbHVkZWQgd2l0aAorb21mc3Byb2dzLCBhdmFpbGFibGUgYXQ6CisKKyAgICBodHRwOi8vYm9iY29wZWxhbmQuY29tL2thcm1hLworCitJbnN0cnVjdGlvbnMgYXJlIGluY2x1ZGVkIGluIGl0cyBSRUFETUUuCisKK09wdGlvbnMKKz09PT09PT0KKworT01GUyBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIG1vdW50LXRpbWUgb3B0aW9uczoKKworICAgIHVpZD1uICAgICAgICAtIG1ha2UgYWxsIGZpbGVzIG93bmVkIGJ5IHNwZWNpZmllZCB1c2VyCisgICAgZ2lkPW4gICAgICAgIC0gbWFrZSBhbGwgZmlsZXMgb3duZWQgYnkgc3BlY2lmaWVkIGdyb3VwCisgICAgdW1hc2s9eHh4ICAgIC0gc2V0IHBlcm1pc3Npb24gdW1hc2sgdG8geHh4CisgICAgZm1hc2s9eHh4ICAgIC0gc2V0IHVtYXNrIHRvIHh4eCBmb3IgZmlsZXMKKyAgICBkbWFzaz14eHggICAgLSBzZXQgdW1hc2sgdG8geHh4IGZvciBkaXJlY3RvcmllcworCitEaXNrIGZvcm1hdAorPT09PT09PT09PT0KKworT01GUyBkaXNjcmltaW5hdGVzIGJldHdlZW4gInN5c2Jsb2NrcyIgYW5kIG5vcm1hbCBkYXRhIGJsb2Nrcy4gIFRoZSBzeXNibG9jaworZ3JvdXAgY29uc2lzdHMgb2Ygc3VwZXIgYmxvY2sgaW5mb3JtYXRpb24sIGZpbGUgbWV0YWRhdGEsIGRpcmVjdG9yeSBzdHJ1Y3R1cmVzLAorYW5kIGV4dGVudHMuICBFYWNoIHN5c2Jsb2NrIGhhcyBhIGhlYWRlciBjb250YWluaW5nIENSQ3Mgb2YgdGhlIGVudGlyZQorc3lzYmxvY2ssIGFuZCBtYXkgYmUgbWlycm9yZWQgaW4gc3VjY2Vzc2l2ZSBibG9ja3Mgb24gdGhlIGRpc2suICBBIHN5c2Jsb2NrIG1heQoraGF2ZSBhIHNtYWxsZXIgc2l6ZSB0aGFuIGEgZGF0YSBibG9jaywgYnV0IHNpbmNlIHRoZXkgYXJlIGJvdGggYWRkcmVzc2VkIGJ5IHRoZQorc2FtZSA2NC1iaXQgYmxvY2sgbnVtYmVyLCBhbnkgcmVtYWluaW5nIHNwYWNlIGluIHRoZSBzbWFsbGVyIHN5c2Jsb2NrIGlzCit1bnVzZWQuCisKK1N5c2Jsb2NrIGhlYWRlciBpbmZvcm1hdGlvbjoKKworc3RydWN0IG9tZnNfaGVhZGVyIHsKKyAgICAgICAgX19iZTY0IGhfc2VsZjsgICAgICAgICAgICAgICAgICAvKiBGUyBibG9jayB3aGVyZSB0aGlzIGlzIGxvY2F0ZWQgKi8KKyAgICAgICAgX19iZTMyIGhfYm9keV9zaXplOyAgICAgICAgICAgICAvKiBzaXplIG9mIHVzZWZ1bCBkYXRhIGFmdGVyIGhlYWRlciAqLworICAgICAgICBfX2JlMTYgaF9jcmM7ICAgICAgICAgICAgICAgICAgIC8qIGNyYy1jY2l0dCBvZiBib2R5X3NpemUgYnl0ZXMgKi8KKyAgICAgICAgY2hhciBoX2ZpbGwxWzJdOworICAgICAgICB1OCBoX3ZlcnNpb247ICAgICAgICAgICAgICAgICAgIC8qIHZlcnNpb24sIGFsd2F5cyAxICovCisgICAgICAgIGNoYXIgaF90eXBlOyAgICAgICAgICAgICAgICAgICAgLyogT01GU19JTk9ERV9YICovCisgICAgICAgIHU4IGhfbWFnaWM7ICAgICAgICAgICAgICAgICAgICAgLyogT01GU19JTUFHSUMgKi8KKyAgICAgICAgdTggaF9jaGVja194b3I7ICAgICAgICAgICAgICAgICAvKiBYT1Igb2YgaGVhZGVyIGJ5dGVzIGJlZm9yZSB0aGlzICovCisgICAgICAgIF9fYmUzMiBoX2ZpbGwyOworfTsKKworRmlsZXMgYW5kIGRpcmVjdG9yaWVzIGFyZSBib3RoIHJlcHJlc2VudGVkIGJ5IG9tZnNfaW5vZGU6CisKK3N0cnVjdCBvbWZzX2lub2RlIHsKKyAgICAgICAgc3RydWN0IG9tZnNfaGVhZGVyIGlfaGVhZDsgICAgICAvKiBoZWFkZXIgKi8KKyAgICAgICAgX19iZTY0IGlfcGFyZW50OyAgICAgICAgICAgICAgICAvKiBwYXJlbnQgY29udGFpbmluZyB0aGlzIGlub2RlICovCisgICAgICAgIF9fYmU2NCBpX3NpYmxpbmc7ICAgICAgICAgICAgICAgLyogbmV4dCBpbm9kZSBpbiBoYXNoIGJ1Y2tldCAqLworICAgICAgICBfX2JlNjQgaV9jdGltZTsgICAgICAgICAgICAgICAgIC8qIGN0aW1lLCBpbiBtaWxsaXNlY29uZHMgKi8KKyAgICAgICAgY2hhciBpX2ZpbGwxWzM1XTsKKyAgICAgICAgY2hhciBpX3R5cGU7ICAgICAgICAgICAgICAgICAgICAvKiBPTUZTX1tESVIsRklMRV0gKi8KKyAgICAgICAgX19iZTMyIGlfZmlsbDI7CisgICAgICAgIGNoYXIgaV9maWxsM1s2NF07CisgICAgICAgIGNoYXIgaV9uYW1lW09NRlNfTkFNRUxFTl07ICAgICAgLyogZmlsZW5hbWUgKi8KKyAgICAgICAgX19iZTY0IGlfc2l6ZTsgICAgICAgICAgICAgICAgICAvKiBzaXplIG9mIGZpbGUsIGluIGJ5dGVzICovCit9OworCitEaXJlY3RvcmllcyBpbiBPTUZTIGFyZSBpbXBsZW1lbnRlZCBhcyBhIGxhcmdlIGhhc2ggdGFibGUuICBGaWxlbmFtZXMgYXJlCitoYXNoZWQgdGhlbiBwcmVwZW5kZWQgaW50byB0aGUgYnVja2V0IGxpc3QgYmVnaW5uaW5nIGF0IE9NRlNfRElSX1NUQVJULgorTG9va3VwIHJlcXVpcmVzIGhhc2hpbmcgdGhlIGZpbGVuYW1lLCB0aGVuIHNlZWtpbmcgYWNyb3NzIGlfc2libGluZyBwb2ludGVycwordW50aWwgYSBtYXRjaCBpcyBmb3VuZCBvbiBpX25hbWUuICBFbXB0eSBidWNrZXRzIGFyZSByZXByZXNlbnRlZCBieSBibG9jaworcG9pbnRlcnMgd2l0aCBhbGwtMXMgKH4wKS4KKworQSBmaWxlIGlzIGFuIG9tZnNfaW5vZGUgc3RydWN0dXJlIGZvbGxvd2VkIGJ5IGFuIGV4dGVudCB0YWJsZSBiZWdpbm5pbmcgYXQKK09NRlNfRVhURU5UX1NUQVJUOgorCitzdHJ1Y3Qgb21mc19leHRlbnRfZW50cnkgeworICAgICAgICBfX2JlNjQgZV9jbHVzdGVyOyAgICAgICAgICAgICAgIC8qIHN0YXJ0IGxvY2F0aW9uIG9mIGEgc2V0IG9mIGJsb2NrcyAqLworICAgICAgICBfX2JlNjQgZV9ibG9ja3M7ICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBibG9ja3MgYWZ0ZXIgZV9jbHVzdGVyICovCit9OworCitzdHJ1Y3Qgb21mc19leHRlbnQgeworICAgICAgICBfX2JlNjQgZV9uZXh0OyAgICAgICAgICAgICAgICAgIC8qIG5leHQgZXh0ZW50IHRhYmxlIGxvY2F0aW9uICovCisgICAgICAgIF9fYmUzMiBlX2V4dGVudF9jb3VudDsgICAgICAgICAgLyogdG90YWwgIyBleHRlbnRzIGluIHRoaXMgdGFibGUgKi8KKyAgICAgICAgX19iZTMyIGVfZmlsbDsKKyAgICAgICAgc3RydWN0IG9tZnNfZXh0ZW50X2VudHJ5IGVfZW50cnk7ICAgICAgIC8qIHN0YXJ0IG9mIGV4dGVudCBlbnRyaWVzICovCit9OworCitFYWNoIGV4dGVudCBob2xkcyB0aGUgYmxvY2sgb2Zmc2V0IGZvbGxvd2VkIGJ5IG51bWJlciBvZiBibG9ja3MgYWxsb2NhdGVkIHRvCit0aGUgZXh0ZW50LiAgVGhlIGZpbmFsIGV4dGVudCBpbiBlYWNoIHRhYmxlIGlzIGEgdGVybWluYXRvciB3aXRoIGVfY2x1c3RlcgorYmVpbmcgfjAgYW5kIGVfYmxvY2tzIGJlaW5nIG9uZXMnLWNvbXBsZW1lbnQgb2YgdGhlIHRvdGFsIG51bWJlciBvZiBibG9ja3MKK2luIHRoZSB0YWJsZS4KKworSWYgdGhpcyB0YWJsZSBvdmVyZmxvd3MsIGEgY29udGludWF0aW9uIGlub2RlIGlzIHdyaXR0ZW4gYW5kIHBvaW50ZWQgdG8gYnkKK2VfbmV4dC4gIFRoZXNlIGhhdmUgYSBoZWFkZXIgYnV0IGxhY2sgdGhlIHJlc3Qgb2YgdGhlIGlub2RlIHN0cnVjdHVyZS4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9vdmVybGF5ZnMudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9vdmVybGF5ZnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MDkxNDUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL292ZXJsYXlmcy50eHQKQEAgLTAsMCArMSwyMjcgQEAKK1dyaXR0ZW4gYnk6IE5laWwgQnJvd24KK1BsZWFzZSBzZWUgTUFJTlRBSU5FUlMgZmlsZSBmb3Igd2hlcmUgdG8gc2VuZCBxdWVzdGlvbnMuCisKK092ZXJsYXkgRmlsZXN5c3RlbQorPT09PT09PT09PT09PT09PT09CisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIGEgcHJvdG90eXBlIGZvciBhIG5ldyBhcHByb2FjaCB0byBwcm92aWRpbmcKK292ZXJsYXktZmlsZXN5c3RlbSBmdW5jdGlvbmFsaXR5IGluIExpbnV4IChzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMKK3VuaW9uLWZpbGVzeXN0ZW1zKS4gIEFuIG92ZXJsYXktZmlsZXN5c3RlbSB0cmllcyB0byBwcmVzZW50IGEKK2ZpbGVzeXN0ZW0gd2hpY2ggaXMgdGhlIHJlc3VsdCBvdmVyIG92ZXJsYXlpbmcgb25lIGZpbGVzeXN0ZW0gb24gdG9wCitvZiB0aGUgb3RoZXIuCisKK1RoZSByZXN1bHQgd2lsbCBpbmV2aXRhYmx5IGZhaWwgdG8gbG9vayBleGFjdGx5IGxpa2UgYSBub3JtYWwKK2ZpbGVzeXN0ZW0gZm9yIHZhcmlvdXMgdGVjaG5pY2FsIHJlYXNvbnMuICBUaGUgZXhwZWN0YXRpb24gaXMgdGhhdAorbWFueSB1c2UgY2FzZXMgd2lsbCBiZSBhYmxlIHRvIGlnbm9yZSB0aGVzZSBkaWZmZXJlbmNlcy4KKworVGhpcyBhcHByb2FjaCBpcyAnaHlicmlkJyBiZWNhdXNlIHRoZSBvYmplY3RzIHRoYXQgYXBwZWFyIGluIHRoZQorZmlsZXN5c3RlbSBkbyBub3QgYWxsIGFwcGVhciB0byBiZWxvbmcgdG8gdGhhdCBmaWxlc3lzdGVtLiAgSW4gbWFueQorY2FzZXMgYW4gb2JqZWN0IGFjY2Vzc2VkIGluIHRoZSB1bmlvbiB3aWxsIGJlIGluZGlzdGluZ3Vpc2hhYmxlCitmcm9tIGFjY2Vzc2luZyB0aGUgY29ycmVzcG9uZGluZyBvYmplY3QgZnJvbSB0aGUgb3JpZ2luYWwgZmlsZXN5c3RlbS4KK1RoaXMgaXMgbW9zdCBvYnZpb3VzIGZyb20gdGhlICdzdF9kZXYnIGZpZWxkIHJldHVybmVkIGJ5IHN0YXQoMikuCisKK1doaWxlIGRpcmVjdG9yaWVzIHdpbGwgcmVwb3J0IGFuIHN0X2RldiBmcm9tIHRoZSBvdmVybGF5LWZpbGVzeXN0ZW0sCithbGwgbm9uLWRpcmVjdG9yeSBvYmplY3RzIHdpbGwgcmVwb3J0IGFuIHN0X2RldiBmcm9tIHRoZSBsb3dlciBvcgordXBwZXIgZmlsZXN5c3RlbSB0aGF0IGlzIHByb3ZpZGluZyB0aGUgb2JqZWN0LiAgU2ltaWxhcmx5IHN0X2lubyB3aWxsCitvbmx5IGJlIHVuaXF1ZSB3aGVuIGNvbWJpbmVkIHdpdGggc3RfZGV2LCBhbmQgYm90aCBvZiB0aGVzZSBjYW4gY2hhbmdlCitvdmVyIHRoZSBsaWZldGltZSBvZiBhIG5vbi1kaXJlY3Rvcnkgb2JqZWN0LiAgTWFueSBhcHBsaWNhdGlvbnMgYW5kCit0b29scyBpZ25vcmUgdGhlc2UgdmFsdWVzIGFuZCB3aWxsIG5vdCBiZSBhZmZlY3RlZC4KKworVXBwZXIgYW5kIExvd2VyCistLS0tLS0tLS0tLS0tLS0KKworQW4gb3ZlcmxheSBmaWxlc3lzdGVtIGNvbWJpbmVzIHR3byBmaWxlc3lzdGVtcyAtIGFuICd1cHBlcicgZmlsZXN5c3RlbQorYW5kIGEgJ2xvd2VyJyBmaWxlc3lzdGVtLiAgV2hlbiBhIG5hbWUgZXhpc3RzIGluIGJvdGggZmlsZXN5c3RlbXMsIHRoZQorb2JqZWN0IGluIHRoZSAndXBwZXInIGZpbGVzeXN0ZW0gaXMgdmlzaWJsZSB3aGlsZSB0aGUgb2JqZWN0IGluIHRoZQorJ2xvd2VyJyBmaWxlc3lzdGVtIGlzIGVpdGhlciBoaWRkZW4gb3IsIGluIHRoZSBjYXNlIG9mIGRpcmVjdG9yaWVzLAorbWVyZ2VkIHdpdGggdGhlICd1cHBlcicgb2JqZWN0LgorCitJdCB3b3VsZCBiZSBtb3JlIGNvcnJlY3QgdG8gcmVmZXIgdG8gYW4gdXBwZXIgYW5kIGxvd2VyICdkaXJlY3RvcnkKK3RyZWUnIHJhdGhlciB0aGFuICdmaWxlc3lzdGVtJyBhcyBpdCBpcyBxdWl0ZSBwb3NzaWJsZSBmb3IgYm90aAorZGlyZWN0b3J5IHRyZWVzIHRvIGJlIGluIHRoZSBzYW1lIGZpbGVzeXN0ZW0gYW5kIHRoZXJlIGlzIG5vCityZXF1aXJlbWVudCB0aGF0IHRoZSByb290IG9mIGEgZmlsZXN5c3RlbSBiZSBnaXZlbiBmb3IgZWl0aGVyIHVwcGVyIG9yCitsb3dlci4KKworVGhlIGxvd2VyIGZpbGVzeXN0ZW0gY2FuIGJlIGFueSBmaWxlc3lzdGVtIHN1cHBvcnRlZCBieSBMaW51eCBhbmQgZG9lcworbm90IG5lZWQgdG8gYmUgd3JpdGFibGUuICBUaGUgbG93ZXIgZmlsZXN5c3RlbSBjYW4gZXZlbiBiZSBhbm90aGVyCitvdmVybGF5ZnMuICBUaGUgdXBwZXIgZmlsZXN5c3RlbSB3aWxsIG5vcm1hbGx5IGJlIHdyaXRhYmxlIGFuZCBpZiBpdAoraXMgaXQgbXVzdCBzdXBwb3J0IHRoZSBjcmVhdGlvbiBvZiB0cnVzdGVkLiogZXh0ZW5kZWQgYXR0cmlidXRlcywgYW5kCittdXN0IHByb3ZpZGUgdmFsaWQgZF90eXBlIGluIHJlYWRkaXIgcmVzcG9uc2VzLCBzbyBORlMgaXMgbm90IHN1aXRhYmxlLgorCitBIHJlYWQtb25seSBvdmVybGF5IG9mIHR3byByZWFkLW9ubHkgZmlsZXN5c3RlbXMgbWF5IHVzZSBhbnkKK2ZpbGVzeXN0ZW0gdHlwZS4KKworRGlyZWN0b3JpZXMKKy0tLS0tLS0tLS0tCisKK092ZXJsYXlpbmcgbWFpbmx5IGludm9sdmVzIGRpcmVjdG9yaWVzLiAgSWYgYSBnaXZlbiBuYW1lIGFwcGVhcnMgaW4gYm90aAordXBwZXIgYW5kIGxvd2VyIGZpbGVzeXN0ZW1zIGFuZCByZWZlcnMgdG8gYSBub24tZGlyZWN0b3J5IGluIGVpdGhlciwKK3RoZW4gdGhlIGxvd2VyIG9iamVjdCBpcyBoaWRkZW4gLSB0aGUgbmFtZSByZWZlcnMgb25seSB0byB0aGUgdXBwZXIKK29iamVjdC4KKworV2hlcmUgYm90aCB1cHBlciBhbmQgbG93ZXIgb2JqZWN0cyBhcmUgZGlyZWN0b3JpZXMsIGEgbWVyZ2VkIGRpcmVjdG9yeQoraXMgZm9ybWVkLgorCitBdCBtb3VudCB0aW1lLCB0aGUgdHdvIGRpcmVjdG9yaWVzIGdpdmVuIGFzIG1vdW50IG9wdGlvbnMgImxvd2VyZGlyIiBhbmQKKyJ1cHBlcmRpciIgYXJlIGNvbWJpbmVkIGludG8gYSBtZXJnZWQgZGlyZWN0b3J5OgorCisgIG1vdW50IC10IG92ZXJsYXkgb3ZlcmxheSAtb2xvd2VyZGlyPS9sb3dlcix1cHBlcmRpcj0vdXBwZXIsXAord29ya2Rpcj0vd29yayAvbWVyZ2VkCisKK1RoZSAid29ya2RpciIgbmVlZHMgdG8gYmUgYW4gZW1wdHkgZGlyZWN0b3J5IG9uIHRoZSBzYW1lIGZpbGVzeXN0ZW0KK2FzIHVwcGVyZGlyLgorCitUaGVuIHdoZW5ldmVyIGEgbG9va3VwIGlzIHJlcXVlc3RlZCBpbiBzdWNoIGEgbWVyZ2VkIGRpcmVjdG9yeSwgdGhlCitsb29rdXAgaXMgcGVyZm9ybWVkIGluIGVhY2ggYWN0dWFsIGRpcmVjdG9yeSBhbmQgdGhlIGNvbWJpbmVkIHJlc3VsdAoraXMgY2FjaGVkIGluIHRoZSBkZW50cnkgYmVsb25naW5nIHRvIHRoZSBvdmVybGF5IGZpbGVzeXN0ZW0uICBJZiBib3RoCithY3R1YWwgbG9va3VwcyBmaW5kIGRpcmVjdG9yaWVzLCBib3RoIGFyZSBzdG9yZWQgYW5kIGEgbWVyZ2VkCitkaXJlY3RvcnkgaXMgY3JlYXRlZCwgb3RoZXJ3aXNlIG9ubHkgb25lIGlzIHN0b3JlZDogdGhlIHVwcGVyIGlmIGl0CitleGlzdHMsIGVsc2UgdGhlIGxvd2VyLgorCitPbmx5IHRoZSBsaXN0cyBvZiBuYW1lcyBmcm9tIGRpcmVjdG9yaWVzIGFyZSBtZXJnZWQuICBPdGhlciBjb250ZW50CitzdWNoIGFzIG1ldGFkYXRhIGFuZCBleHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSByZXBvcnRlZCBmb3IgdGhlIHVwcGVyCitkaXJlY3Rvcnkgb25seS4gIFRoZXNlIGF0dHJpYnV0ZXMgb2YgdGhlIGxvd2VyIGRpcmVjdG9yeSBhcmUgaGlkZGVuLgorCit3aGl0ZW91dHMgYW5kIG9wYXF1ZSBkaXJlY3RvcmllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW4gb3JkZXIgdG8gc3VwcG9ydCBybSBhbmQgcm1kaXIgd2l0aG91dCBjaGFuZ2luZyB0aGUgbG93ZXIKK2ZpbGVzeXN0ZW0sIGFuIG92ZXJsYXkgZmlsZXN5c3RlbSBuZWVkcyB0byByZWNvcmQgaW4gdGhlIHVwcGVyIGZpbGVzeXN0ZW0KK3RoYXQgZmlsZXMgaGF2ZSBiZWVuIHJlbW92ZWQuICBUaGlzIGlzIGRvbmUgdXNpbmcgd2hpdGVvdXRzIGFuZCBvcGFxdWUKK2RpcmVjdG9yaWVzIChub24tZGlyZWN0b3JpZXMgYXJlIGFsd2F5cyBvcGFxdWUpLgorCitBIHdoaXRlb3V0IGlzIGNyZWF0ZWQgYXMgYSBjaGFyYWN0ZXIgZGV2aWNlIHdpdGggMC8wIGRldmljZSBudW1iZXIuCitXaGVuIGEgd2hpdGVvdXQgaXMgZm91bmQgaW4gdGhlIHVwcGVyIGxldmVsIG9mIGEgbWVyZ2VkIGRpcmVjdG9yeSwgYW55CittYXRjaGluZyBuYW1lIGluIHRoZSBsb3dlciBsZXZlbCBpcyBpZ25vcmVkLCBhbmQgdGhlIHdoaXRlb3V0IGl0c2VsZgoraXMgYWxzbyBoaWRkZW4uCisKK0EgZGlyZWN0b3J5IGlzIG1hZGUgb3BhcXVlIGJ5IHNldHRpbmcgdGhlIHhhdHRyICJ0cnVzdGVkLm92ZXJsYXkub3BhcXVlIgordG8gInkiLiAgV2hlcmUgdGhlIHVwcGVyIGZpbGVzeXN0ZW0gY29udGFpbnMgYW4gb3BhcXVlIGRpcmVjdG9yeSwgYW55CitkaXJlY3RvcnkgaW4gdGhlIGxvd2VyIGZpbGVzeXN0ZW0gd2l0aCB0aGUgc2FtZSBuYW1lIGlzIGlnbm9yZWQuCisKK3JlYWRkaXIKKy0tLS0tLS0KKworV2hlbiBhICdyZWFkZGlyJyByZXF1ZXN0IGlzIG1hZGUgb24gYSBtZXJnZWQgZGlyZWN0b3J5LCB0aGUgdXBwZXIgYW5kCitsb3dlciBkaXJlY3RvcmllcyBhcmUgZWFjaCByZWFkIGFuZCB0aGUgbmFtZSBsaXN0cyBtZXJnZWQgaW4gdGhlCitvYnZpb3VzIHdheSAodXBwZXIgaXMgcmVhZCBmaXJzdCwgdGhlbiBsb3dlciAtIGVudHJpZXMgdGhhdCBhbHJlYWR5CitleGlzdCBhcmUgbm90IHJlLWFkZGVkKS4gIFRoaXMgbWVyZ2VkIG5hbWUgbGlzdCBpcyBjYWNoZWQgaW4gdGhlCisnc3RydWN0IGZpbGUnIGFuZCBzbyByZW1haW5zIGFzIGxvbmcgYXMgdGhlIGZpbGUgaXMga2VwdCBvcGVuLiAgSWYgdGhlCitkaXJlY3RvcnkgaXMgb3BlbmVkIGFuZCByZWFkIGJ5IHR3byBwcm9jZXNzZXMgYXQgdGhlIHNhbWUgdGltZSwgdGhleQord2lsbCBlYWNoIGhhdmUgc2VwYXJhdGUgY2FjaGVzLiAgQSBzZWVrZGlyIHRvIHRoZSBzdGFydCBvZiB0aGUKK2RpcmVjdG9yeSAob2Zmc2V0IDApIGZvbGxvd2VkIGJ5IGEgcmVhZGRpciB3aWxsIGNhdXNlIHRoZSBjYWNoZSB0byBiZQorZGlzY2FyZGVkIGFuZCByZWJ1aWx0LgorCitUaGlzIG1lYW5zIHRoYXQgY2hhbmdlcyB0byB0aGUgbWVyZ2VkIGRpcmVjdG9yeSBkbyBub3QgYXBwZWFyIHdoaWxlIGEKK2RpcmVjdG9yeSBpcyBiZWluZyByZWFkLiAgVGhpcyBpcyB1bmxpa2VseSB0byBiZSBub3RpY2VkIGJ5IG1hbnkKK3Byb2dyYW1zLgorCitzZWVrIG9mZnNldHMgYXJlIGFzc2lnbmVkIHNlcXVlbnRpYWxseSB3aGVuIHRoZSBkaXJlY3RvcmllcyBhcmUgcmVhZC4KK1RodXMgaWYKKyAgLSByZWFkIHBhcnQgb2YgYSBkaXJlY3RvcnkKKyAgLSByZW1lbWJlciBhbiBvZmZzZXQsIGFuZCBjbG9zZSB0aGUgZGlyZWN0b3J5CisgIC0gcmUtb3BlbiB0aGUgZGlyZWN0b3J5IHNvbWUgdGltZSBsYXRlcgorICAtIHNlZWsgdG8gdGhlIHJlbWVtYmVyZWQgb2Zmc2V0CisKK3RoZXJlIG1heSBiZSBsaXR0bGUgY29ycmVsYXRpb24gYmV0d2VlbiB0aGUgb2xkIGFuZCBuZXcgbG9jYXRpb25zIGluCit0aGUgbGlzdCBvZiBmaWxlbmFtZXMsIHBhcnRpY3VsYXJseSBpZiBhbnl0aGluZyBoYXMgY2hhbmdlZCBpbiB0aGUKK2RpcmVjdG9yeS4KKworUmVhZGRpciBvbiBkaXJlY3RvcmllcyB0aGF0IGFyZSBub3QgbWVyZ2VkIGlzIHNpbXBseSBoYW5kbGVkIGJ5IHRoZQordW5kZXJseWluZyBkaXJlY3RvcnkgKHVwcGVyIG9yIGxvd2VyKS4KKworCitOb24tZGlyZWN0b3JpZXMKKy0tLS0tLS0tLS0tLS0tLQorCitPYmplY3RzIHRoYXQgYXJlIG5vdCBkaXJlY3RvcmllcyAoZmlsZXMsIHN5bWxpbmtzLCBkZXZpY2Utc3BlY2lhbAorZmlsZXMgZXRjLikgYXJlIHByZXNlbnRlZCBlaXRoZXIgZnJvbSB0aGUgdXBwZXIgb3IgbG93ZXIgZmlsZXN5c3RlbSBhcworYXBwcm9wcmlhdGUuICBXaGVuIGEgZmlsZSBpbiB0aGUgbG93ZXIgZmlsZXN5c3RlbSBpcyBhY2Nlc3NlZCBpbiBhIHdheQordGhlIHJlcXVpcmVzIHdyaXRlLWFjY2Vzcywgc3VjaCBhcyBvcGVuaW5nIGZvciB3cml0ZSBhY2Nlc3MsIGNoYW5naW5nCitzb21lIG1ldGFkYXRhIGV0Yy4sIHRoZSBmaWxlIGlzIGZpcnN0IGNvcGllZCBmcm9tIHRoZSBsb3dlciBmaWxlc3lzdGVtCit0byB0aGUgdXBwZXIgZmlsZXN5c3RlbSAoY29weV91cCkuICBOb3RlIHRoYXQgY3JlYXRpbmcgYSBoYXJkLWxpbmsKK2Fsc28gcmVxdWlyZXMgY29weV91cCwgdGhvdWdoIG9mIGNvdXJzZSBjcmVhdGlvbiBvZiBhIHN5bWxpbmsgZG9lcworbm90LgorCitUaGUgY29weV91cCBtYXkgdHVybiBvdXQgdG8gYmUgdW5uZWNlc3NhcnksIGZvciBleGFtcGxlIGlmIHRoZSBmaWxlIGlzCitvcGVuZWQgZm9yIHJlYWQtd3JpdGUgYnV0IHRoZSBkYXRhIGlzIG5vdCBtb2RpZmllZC4KKworVGhlIGNvcHlfdXAgcHJvY2VzcyBmaXJzdCBtYWtlcyBzdXJlIHRoYXQgdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5CitleGlzdHMgaW4gdGhlIHVwcGVyIGZpbGVzeXN0ZW0gLSBjcmVhdGluZyBpdCBhbmQgYW55IHBhcmVudHMgYXMKK25lY2Vzc2FyeS4gIEl0IHRoZW4gY3JlYXRlcyB0aGUgb2JqZWN0IHdpdGggdGhlIHNhbWUgbWV0YWRhdGEgKG93bmVyLAorbW9kZSwgbXRpbWUsIHN5bWxpbmstdGFyZ2V0IGV0Yy4pIGFuZCB0aGVuIGlmIHRoZSBvYmplY3QgaXMgYSBmaWxlLCB0aGUKK2RhdGEgaXMgY29waWVkIGZyb20gdGhlIGxvd2VyIHRvIHRoZSB1cHBlciBmaWxlc3lzdGVtLiAgRmluYWxseSBhbnkKK2V4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIGNvcGllZCB1cC4KKworT25jZSB0aGUgY29weV91cCBpcyBjb21wbGV0ZSwgdGhlIG92ZXJsYXkgZmlsZXN5c3RlbSBzaW1wbHkKK3Byb3ZpZGVzIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgZmlsZSBpbiB0aGUgdXBwZXIKK2ZpbGVzeXN0ZW0gLSBmdXR1cmUgb3BlcmF0aW9ucyBvbiB0aGUgZmlsZSBhcmUgYmFyZWx5IG5vdGljZWQgYnkgdGhlCitvdmVybGF5IGZpbGVzeXN0ZW0gKHRob3VnaCBhbiBvcGVyYXRpb24gb24gdGhlIG5hbWUgb2YgdGhlIGZpbGUgc3VjaCBhcworcmVuYW1lIG9yIHVubGluayB3aWxsIG9mIGNvdXJzZSBiZSBub3RpY2VkIGFuZCBoYW5kbGVkKS4KKworCitNdWx0aXBsZSBsb3dlciBsYXllcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitNdWx0aXBsZSBsb3dlciBsYXllcnMgY2FuIG5vdyBiZSBnaXZlbiB1c2luZyB0aGUgdGhlIGNvbG9uICgiOiIpIGFzIGEKK3NlcGFyYXRvciBjaGFyYWN0ZXIgYmV0d2VlbiB0aGUgZGlyZWN0b3J5IG5hbWVzLiAgRm9yIGV4YW1wbGU6CisKKyAgbW91bnQgLXQgb3ZlcmxheSBvdmVybGF5IC1vbG93ZXJkaXI9L2xvd2VyMTovbG93ZXIyOi9sb3dlcjMgL21lcmdlZAorCitBcyB0aGUgZXhhbXBsZSBzaG93cywgInVwcGVyZGlyPSIgYW5kICJ3b3JrZGlyPSIgbWF5IGJlIG9taXR0ZWQuICBJbgordGhhdCBjYXNlIHRoZSBvdmVybGF5IHdpbGwgYmUgcmVhZC1vbmx5LgorCitUaGUgc3BlY2lmaWVkIGxvd2VyIGRpcmVjdG9yaWVzIHdpbGwgYmUgc3RhY2tlZCBiZWdpbm5pbmcgZnJvbSB0aGUKK3JpZ2h0bW9zdCBvbmUgYW5kIGdvaW5nIGxlZnQuICBJbiB0aGUgYWJvdmUgZXhhbXBsZSBsb3dlcjEgd2lsbCBiZSB0aGUKK3RvcCwgbG93ZXIyIHRoZSBtaWRkbGUgYW5kIGxvd2VyMyB0aGUgYm90dG9tIGxheWVyLgorCisKK05vbi1zdGFuZGFyZCBiZWhhdmlvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBjb3B5X3VwIG9wZXJhdGlvbiBlc3NlbnRpYWxseSBjcmVhdGVzIGEgbmV3LCBpZGVudGljYWwgZmlsZSBhbmQKK21vdmVzIGl0IG92ZXIgdG8gdGhlIG9sZCBuYW1lLiAgVGhlIG5ldyBmaWxlIG1heSBiZSBvbiBhIGRpZmZlcmVudAorZmlsZXN5c3RlbSwgc28gYm90aCBzdF9kZXYgYW5kIHN0X2lubyBvZiB0aGUgZmlsZSBtYXkgY2hhbmdlLgorCitBbnkgb3BlbiBmaWxlcyByZWZlcnJpbmcgdG8gdGhpcyBpbm9kZSB3aWxsIGFjY2VzcyB0aGUgb2xkIGRhdGEgYW5kCittZXRhZGF0YS4gIFNpbWlsYXJseSBhbnkgZmlsZSBsb2NrcyBvYnRhaW5lZCBiZWZvcmUgY29weV91cCB3aWxsIG5vdAorYXBwbHkgdG8gdGhlIGNvcGllZCB1cCBmaWxlLgorCitPbiBhIGZpbGUgb3BlbmVkIHdpdGggT19SRE9OTFkgZmNobW9kKDIpLCBmY2hvd24oMiksIGZ1dGltZXNhdCgyKSBhbmQKK2ZzZXR4YXR0cigyKSB3aWxsIGZhaWwgd2l0aCBFUk9GUy4KKworSWYgYSBmaWxlIHdpdGggbXVsdGlwbGUgaGFyZCBsaW5rcyBpcyBjb3BpZWQgdXAsIHRoZW4gdGhpcyB3aWxsCisiYnJlYWsiIHRoZSBsaW5rLiAgQ2hhbmdlcyB3aWxsIG5vdCBiZSBwcm9wYWdhdGVkIHRvIG90aGVyIG5hbWVzCityZWZlcnJpbmcgdG8gdGhlIHNhbWUgaW5vZGUuCisKK1N5bWxpbmtzIGluIC9wcm9jL1BJRC8gYW5kIC9wcm9jL1BJRC9mZCB3aGljaCBwb2ludCB0byBhIG5vbi1kaXJlY3RvcnkKK29iamVjdCBpbiBvdmVybGF5ZnMgd2lsbCBub3QgY29udGFpbiB2YWxpZCBhYnNvbHV0ZSBwYXRocywgb25seQorcmVsYXRpdmUgcGF0aHMgbGVhZGluZyB1cCB0byB0aGUgZmlsZXN5c3RlbSdzIHJvb3QuICBUaGlzIHdpbGwgYmUKK2ZpeGVkIGluIHRoZSBmdXR1cmUuCisKK1NvbWUgb3BlcmF0aW9ucyBhcmUgbm90IGF0b21pYywgZm9yIGV4YW1wbGUgYSBjcmFzaCBkdXJpbmcgY29weV91cCBvcgorcmVuYW1lIHdpbGwgbGVhdmUgdGhlIGZpbGVzeXN0ZW0gaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLiAgVGhpcyB3aWxsCitiZSBhZGRyZXNzZWQgaW4gdGhlIGZ1dHVyZS4KKworQ2hhbmdlcyB0byB1bmRlcmx5aW5nIGZpbGVzeXN0ZW1zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT2ZmbGluZSBjaGFuZ2VzLCB3aGVuIHRoZSBvdmVybGF5IGlzIG5vdCBtb3VudGVkLCBhcmUgYWxsb3dlZCB0byBlaXRoZXIKK3RoZSB1cHBlciBvciB0aGUgbG93ZXIgdHJlZXMuCisKK0NoYW5nZXMgdG8gdGhlIHVuZGVybHlpbmcgZmlsZXN5c3RlbXMgd2hpbGUgcGFydCBvZiBhIG1vdW50ZWQgb3ZlcmxheQorZmlsZXN5c3RlbSBhcmUgbm90IGFsbG93ZWQuICBJZiB0aGUgdW5kZXJseWluZyBmaWxlc3lzdGVtIGlzIGNoYW5nZWQsCit0aGUgYmVoYXZpb3Igb2YgdGhlIG92ZXJsYXkgaXMgdW5kZWZpbmVkLCB0aG91Z2ggaXQgd2lsbCBub3QgcmVzdWx0IGluCithIGNyYXNoIG9yIGRlYWRsb2NrLgorCitUZXN0c3VpdGUKKy0tLS0tLS0tLQorCitUaGVyZSdzIHRlc3RzdWl0ZSBkZXZlbG9wZWQgYnkgRGF2aWQgSG93ZWxscyBhdDoKKworICBnaXQ6Ly9naXQuaW5mcmFkZWFkLm9yZy91c2Vycy9kaG93ZWxscy91bmlvbm1vdW50LXRlc3RzdWl0ZS5naXQKKworUnVuIGFzIHJvb3Q6CisKKyAgIyBjZCB1bmlvbm1vdW50LXRlc3RzdWl0ZQorICAjIC4vcnVuIC0tb3YKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcGF0aC1sb29rdXAubWQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3BhdGgtbG9va3VwLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiMzllMDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3BhdGgtbG9va3VwLm1kCkBAIC0wLDAgKzEsMTI5NyBAQAorPGhlYWQ+Cis8c3R5bGU+IHAgeyBtYXgtd2lkdGg6NTBlbX0gb2wsIHVsIHttYXgtd2lkdGg6IDQwZW19PC9zdHlsZT4KKzwvaGVhZD4KKworUGF0aG5hbWUgbG9va3VwIGluIExpbnV4LgorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIHdyaXRlLXVwIGlzIGJhc2VkIG9uIHRocmVlIGFydGljbGVzIHB1Ymxpc2hlZCBhdCBsd24ubmV0OgorCistIDxodHRwczovL2x3bi5uZXQvQXJ0aWNsZXMvNjQ5MTE1Lz4gUGF0aG5hbWUgbG9va3VwIGluIExpbnV4CistIDxodHRwczovL2x3bi5uZXQvQXJ0aWNsZXMvNjQ5NzI5Lz4gUkNVLXdhbGs6IGZhc3RlciBwYXRobmFtZSBsb29rdXAgaW4gTGludXgKKy0gPGh0dHBzOi8vbHduLm5ldC9BcnRpY2xlcy82NTA3ODYvPiBBIHdhbGsgYW1vbmcgdGhlIHN5bWxpbmtzCisKK1dyaXR0ZW4gYnkgTmVpbCBCcm93biB3aXRoIGhlbHAgZnJvbSBBbCBWaXJvIGFuZCBKb24gQ29yYmV0LgorCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLQorCitUaGUgbW9zdCBvYnZpb3VzIGFzcGVjdCBvZiBwYXRobmFtZSBsb29rdXAsIHdoaWNoIHZlcnkgbGl0dGxlCitleHBsb3JhdGlvbiBpcyBuZWVkZWQgdG8gZGlzY292ZXIsIGlzIHRoYXQgaXQgaXMgY29tcGxleC4gIFRoZXJlIGFyZQorbWFueSBydWxlcywgc3BlY2lhbCBjYXNlcywgYW5kIGltcGxlbWVudGF0aW9uIGFsdGVybmF0aXZlcyB0aGF0IGFsbAorY29tYmluZSB0byBjb25mdXNlIHRoZSB1bndhcnkgcmVhZGVyLiAgQ29tcHV0ZXIgc2NpZW5jZSBoYXMgbG9uZyBiZWVuCithY3F1YWludGVkIHdpdGggc3VjaCBjb21wbGV4aXR5IGFuZCBoYXMgdG9vbHMgdG8gaGVscCBtYW5hZ2UgaXQuICBPbmUKK3Rvb2wgdGhhdCB3ZSB3aWxsIG1ha2UgZXh0ZW5zaXZlIHVzZSBvZiBpcyAiZGl2aWRlIGFuZCBjb25xdWVyIi4gIEZvcgordGhlIGVhcmx5IHBhcnRzIG9mIHRoZSBhbmFseXNpcyB3ZSB3aWxsIGRpdmlkZSBvZmYgc3ltbGlua3MgLSBsZWF2aW5nCit0aGVtIHVudGlsIHRoZSBmaW5hbCBwYXJ0LiAgV2VsbCBiZWZvcmUgd2UgZ2V0IHRvIHN5bWxpbmtzIHdlIGhhdmUKK2Fub3RoZXIgbWFqb3IgZGl2aXNpb24gYmFzZWQgb24gdGhlIFZGUydzIGFwcHJvYWNoIHRvIGxvY2tpbmcgd2hpY2gKK3dpbGwgYWxsb3cgdXMgdG8gcmV2aWV3ICJSRUYtd2FsayIgYW5kICJSQ1Utd2FsayIgc2VwYXJhdGVseS4gIEJ1dCB3ZQorYXJlIGdldHRpbmcgYWhlYWQgb2Ygb3Vyc2VsdmVzLiAgVGhlcmUgYXJlIHNvbWUgaW1wb3J0YW50IGxvdyBsZXZlbAorZGlzdGluY3Rpb25zIHdlIG5lZWQgdG8gY2xhcmlmeSBmaXJzdC4KKworVGhlcmUgYXJlIHR3byBzb3J0cyBvZiAuLi4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1tgb3BlbmF0KClgXTogaHR0cDovL21hbjcub3JnL2xpbnV4L21hbi1wYWdlcy9tYW4yL29wZW5hdC4yLmh0bWwKKworUGF0aG5hbWVzIChzb21ldGltZXMgImZpbGUgbmFtZXMiKSwgdXNlZCB0byBpZGVudGlmeSBvYmplY3RzIGluIHRoZQorZmlsZXN5c3RlbSwgd2lsbCBiZSBmYW1pbGlhciB0byBtb3N0IHJlYWRlcnMuICBUaGV5IGNvbnRhaW4gdHdvIHNvcnRzCitvZiBlbGVtZW50czogInNsYXNoZXMiIHRoYXQgYXJlIHNlcXVlbmNlcyBvZiBvbmUgb3IgbW9yZSAiYC9gIgorY2hhcmFjdGVycywgYW5kICJjb21wb25lbnRzIiB0aGF0IGFyZSBzZXF1ZW5jZXMgb2Ygb25lIG9yIG1vcmUKK25vbi0iYC9gIiBjaGFyYWN0ZXJzLiAgVGhlc2UgZm9ybSB0d28ga2luZHMgb2YgcGF0aHMuICBUaG9zZSB0aGF0CitzdGFydCB3aXRoIHNsYXNoZXMgYXJlICJhYnNvbHV0ZSIgYW5kIHN0YXJ0IGZyb20gdGhlIGZpbGVzeXN0ZW0gcm9vdC4KK1RoZSBvdGhlcnMgYXJlICJyZWxhdGl2ZSIgYW5kIHN0YXJ0IGZyb20gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCBvcgorZnJvbSBzb21lIG90aGVyIGxvY2F0aW9uIHNwZWNpZmllZCBieSBhIGZpbGUgZGVzY3JpcHRvciBnaXZlbiB0byBhCisieHh4YGF0YCIgc3lzdGVtIGNhbGwgc3VjaCBhcyAiW2BvcGVuYXQoKWBdIi4KKworW2BleGVjdmVhdCgpYF06IGh0dHA6Ly9tYW43Lm9yZy9saW51eC9tYW4tcGFnZXMvbWFuMi9leGVjdmVhdC4yLmh0bWwKKworSXQgaXMgdGVtcHRpbmcgdG8gZGVzY3JpYmUgdGhlIHNlY29uZCBraW5kIGFzIHN0YXJ0aW5nIHdpdGggYQorY29tcG9uZW50LCBidXQgdGhhdCBpc24ndCBhbHdheXMgYWNjdXJhdGU6IGEgcGF0aG5hbWUgY2FuIGxhY2sgYm90aAorc2xhc2hlcyBhbmQgY29tcG9uZW50cywgaXQgY2FuIGJlIGVtcHR5LCBpbiBvdGhlciB3b3Jkcy4gIFRoaXMgaXMKK2dlbmVyYWxseSBmb3JiaWRkZW4gaW4gUE9TSVgsIGJ1dCBzb21lIG9mIHRob3NlICJ4eHhgYXRgIiBzeXN0ZW0gY2FsbHMKK2luIExpbnV4IHBlcm1pdCBpdCB3aGVuIHRoZSBgQVRfRU1QVFlfUEFUSGAgZmxhZyBpcyBnaXZlbi4gIEZvcgorZXhhbXBsZSwgaWYgeW91IGhhdmUgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3Igb24gYW4gZXhlY3V0YWJsZSBmaWxlIHlvdQorY2FuIGV4ZWN1dGUgaXQgYnkgY2FsbGluZyBbYGV4ZWN2ZWF0KClgXSBwYXNzaW5nIHRoZSBmaWxlIGRlc2NyaXB0b3IsCithbiBlbXB0eSBwYXRoLCBhbmQgdGhlIGBBVF9FTVBUWV9QQVRIYCBmbGFnLgorCitUaGVzZSBwYXRocyBjYW4gYmUgZGl2aWRlZCBpbnRvIHR3byBzZWN0aW9uczogdGhlIGZpbmFsIGNvbXBvbmVudCBhbmQKK2V2ZXJ5dGhpbmcgZWxzZS4gIFRoZSAiZXZlcnl0aGluZyBlbHNlIiBpcyB0aGUgZWFzeSBiaXQuICBJbiBhbGwgY2FzZXMKK2l0IG11c3QgaWRlbnRpZnkgYSBkaXJlY3RvcnkgdGhhdCBhbHJlYWR5IGV4aXN0cywgb3RoZXJ3aXNlIGFuIGVycm9yCitzdWNoIGFzIGBFTk9FTlRgIG9yIGBFTk9URElSYCB3aWxsIGJlIHJlcG9ydGVkLgorCitUaGUgZmluYWwgY29tcG9uZW50IGlzIG5vdCBzbyBzaW1wbGUuICBOb3Qgb25seSBkbyBkaWZmZXJlbnQgc3lzdGVtCitjYWxscyBpbnRlcnByZXQgaXQgcXVpdGUgZGlmZmVyZW50bHkgKGUuZy4gc29tZSBjcmVhdGUgaXQsIHNvbWUgZG8KK25vdCksIGJ1dCBpdCBtaWdodCBub3QgZXZlbiBleGlzdDogbmVpdGhlciB0aGUgZW1wdHkgcGF0aG5hbWUgbm9yIHRoZQorcGF0aG5hbWUgdGhhdCBpcyBqdXN0IHNsYXNoZXMgaGF2ZSBhIGZpbmFsIGNvbXBvbmVudC4gIElmIGl0IGRvZXMKK2V4aXN0LCBpdCBjb3VsZCBiZSAiYC5gIiBvciAiYC4uYCIgd2hpY2ggYXJlIGhhbmRsZWQgcXVpdGUgZGlmZmVyZW50bHkKK2Zyb20gb3RoZXIgY29tcG9uZW50cy4KKworW1BPU0lYXTogaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvYmFzZWRlZnMvVjFfY2hhcDA0Lmh0bWwjdGFnXzA0XzEyCisKK0lmIGEgcGF0aG5hbWUgZW5kcyB3aXRoIGEgc2xhc2gsIHN1Y2ggYXMgImAvdG1wL2Zvby9gIiBpdCBtaWdodCBiZQordGVtcHRpbmcgdG8gY29uc2lkZXIgdGhhdCB0byBoYXZlIGFuIGVtcHR5IGZpbmFsIGNvbXBvbmVudC4gIEluIG1hbnkKK3dheXMgdGhhdCB3b3VsZCBsZWFkIHRvIGNvcnJlY3QgcmVzdWx0cywgYnV0IG5vdCBhbHdheXMuICBJbgorcGFydGljdWxhciwgYG1rZGlyKClgIGFuZCBgcm1kaXIoKWAgZWFjaCBjcmVhdGUgb3IgcmVtb3ZlIGEgZGlyZWN0b3J5IG5hbWVkCitieSB0aGUgZmluYWwgY29tcG9uZW50LCBhbmQgdGhleSBhcmUgcmVxdWlyZWQgdG8gd29yayB3aXRoIHBhdGhuYW1lcworZW5kaW5nIGluICJgL2AiLiAgQWNjb3JkaW5nIHRvIFtQT1NJWF0KKworPiBBIHBhdGhuYW1lIHRoYXQgY29udGFpbnMgYXQgbGVhc3Qgb25lIG5vbi0gJmx0O3NsYXNoPiBjaGFyYWN0ZXIgYW5kCis+IHRoYXQgZW5kcyB3aXRoIG9uZSBvciBtb3JlIHRyYWlsaW5nICZsdDtzbGFzaD4gY2hhcmFjdGVycyBzaGFsbCBub3QKKz4gYmUgcmVzb2x2ZWQgc3VjY2Vzc2Z1bGx5IHVubGVzcyB0aGUgbGFzdCBwYXRobmFtZSBjb21wb25lbnQgYmVmb3JlCis+IHRoZSB0cmFpbGluZyA8c2xhc2g+IGNoYXJhY3RlcnMgbmFtZXMgYW4gZXhpc3RpbmcgZGlyZWN0b3J5IG9yIGEKKz4gZGlyZWN0b3J5IGVudHJ5IHRoYXQgaXMgdG8gYmUgY3JlYXRlZCBmb3IgYSBkaXJlY3RvcnkgaW1tZWRpYXRlbHkKKz4gYWZ0ZXIgdGhlIHBhdGhuYW1lIGlzIHJlc29sdmVkLgorCitUaGUgTGludXggcGF0aG5hbWUgd2Fsa2luZyBjb2RlIChtb3N0bHkgaW4gYGZzL25hbWVpLmNgKSBkZWFscyB3aXRoCithbGwgb2YgdGhlc2UgaXNzdWVzOiBicmVha2luZyB0aGUgcGF0aCBpbnRvIGNvbXBvbmVudHMsIGhhbmRsaW5nIHRoZQorImV2ZXJ5dGhpbmcgZWxzZSIgcXVpdGUgc2VwYXJhdGVseSBmcm9tIHRoZSBmaW5hbCBjb21wb25lbnQsIGFuZAorY2hlY2tpbmcgdGhhdCB0aGUgdHJhaWxpbmcgc2xhc2ggaXMgbm90IHVzZWQgd2hlcmUgaXQgaXNuJ3QKK3Blcm1pdHRlZC4gIEl0IGFsc28gYWRkcmVzc2VzIHRoZSBpbXBvcnRhbnQgaXNzdWUgb2YgY29uY3VycmVudAorYWNjZXNzLgorCitXaGlsZSBvbmUgcHJvY2VzcyBpcyBsb29raW5nIHVwIGEgcGF0aG5hbWUsIGFub3RoZXIgbWlnaHQgYmUgbWFraW5nCitjaGFuZ2VzIHRoYXQgYWZmZWN0IHRoYXQgbG9va3VwLiAgT25lIGZhaXJseSBleHRyZW1lIGNhc2UgaXMgdGhhdCBpZgorImEvYiIgd2VyZSByZW5hbWVkIHRvICJhL2MvYiIgd2hpbGUgYW5vdGhlciBwcm9jZXNzIHdlcmUgbG9va2luZyB1cAorImEvYi8uLiIsIHRoYXQgcHJvY2VzcyBtaWdodCBzdWNjZXNzZnVsbHkgcmVzb2x2ZSBvbiAiYS9jIi4KK01vc3QgcmFjZXMgYXJlIG11Y2ggbW9yZSBzdWJ0bGUsIGFuZCBhIGJpZyBwYXJ0IG9mIHRoZSB0YXNrIG9mCitwYXRobmFtZSBsb29rdXAgaXMgdG8gcHJldmVudCB0aGVtIGZyb20gaGF2aW5nIGRhbWFnaW5nIGVmZmVjdHMuICBNYW55CitvZiB0aGUgcG9zc2libGUgcmFjZXMgYXJlIHNlZW4gbW9zdCBjbGVhcmx5IGluIHRoZSBjb250ZXh0IG9mIHRoZQorImRjYWNoZSIgYW5kIGFuIHVuZGVyc3RhbmRpbmcgb2YgdGhhdCBpcyBjZW50cmFsIHRvIHVuZGVyc3RhbmRpbmcKK3BhdGhuYW1lIGxvb2t1cC4KKworTW9yZSB0aGFuIGp1c3QgYSBjYWNoZS4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSAiZGNhY2hlIiBjYWNoZXMgaW5mb3JtYXRpb24gYWJvdXQgbmFtZXMgaW4gZWFjaCBmaWxlc3lzdGVtIHRvCittYWtlIHRoZW0gcXVpY2tseSBhdmFpbGFibGUgZm9yIGxvb2t1cC4gIEVhY2ggZW50cnkgKGtub3duIGFzIGEKKyJkZW50cnkiKSBjb250YWlucyB0aHJlZSBzaWduaWZpY2FudCBmaWVsZHM6IGEgY29tcG9uZW50IG5hbWUsIGEKK3BvaW50ZXIgdG8gYSBwYXJlbnQgZGVudHJ5LCBhbmQgYSBwb2ludGVyIHRvIHRoZSAiaW5vZGUiIHdoaWNoCitjb250YWlucyBmdXJ0aGVyIGluZm9ybWF0aW9uIGFib3V0IHRoZSBvYmplY3QgaW4gdGhhdCBwYXJlbnQgd2l0aAordGhlIGdpdmVuIG5hbWUuICBUaGUgaW5vZGUgcG9pbnRlciBjYW4gYmUgYE5VTExgIGluZGljYXRpbmcgdGhhdCB0aGUKK25hbWUgZG9lc24ndCBleGlzdCBpbiB0aGUgcGFyZW50LiAgV2hpbGUgdGhlcmUgY2FuIGJlIGxpbmthZ2UgaW4gdGhlCitkZW50cnkgb2YgYSBkaXJlY3RvcnkgdG8gdGhlIGRlbnRyaWVzIG9mIHRoZSBjaGlsZHJlbiwgdGhhdCBsaW5rYWdlIGlzCitub3QgdXNlZCBmb3IgcGF0aG5hbWUgbG9va3VwLCBhbmQgc28gd2lsbCBub3QgYmUgY29uc2lkZXJlZCBoZXJlLgorCitUaGUgZGNhY2hlIGhhcyBhIG51bWJlciBvZiB1c2VzIGFwYXJ0IGZyb20gYWNjZWxlcmF0aW5nIGxvb2t1cC4gIE9uZQordGhhdCB3aWxsIGJlIHBhcnRpY3VsYXJseSByZWxldmFudCBpcyB0aGF0IGl0IGlzIGNsb3NlbHkgaW50ZWdyYXRlZAord2l0aCB0aGUgbW91bnQgdGFibGUgdGhhdCByZWNvcmRzIHdoaWNoIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCB3aGVyZS4KK1doYXQgdGhlIG1vdW50IHRhYmxlIGFjdHVhbGx5IHN0b3JlcyBpcyB3aGljaCBkZW50cnkgaXMgbW91bnRlZCBvbiB0b3AKK29mIHdoaWNoIG90aGVyIGRlbnRyeS4KKworV2hlbiBjb25zaWRlcmluZyB0aGUgZGNhY2hlLCB3ZSBoYXZlIGFub3RoZXIgb2Ygb3VyICJ0d28gdHlwZXMiCitkaXN0aW5jdGlvbnM6IHRoZXJlIGFyZSB0d28gdHlwZXMgb2YgZmlsZXN5c3RlbXMuCisKK1NvbWUgZmlsZXN5c3RlbXMgZW5zdXJlIHRoYXQgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBkY2FjaGUgaXMgYWx3YXlzCitjb21wbGV0ZWx5IGFjY3VyYXRlICh0aG91Z2ggbm90IG5lY2Vzc2FyaWx5IGNvbXBsZXRlKS4gIFRoaXMgY2FuIGFsbG93Cit0aGUgVkZTIHRvIGRldGVybWluZSBpZiBhIHBhcnRpY3VsYXIgZmlsZSBkb2VzIG9yIGRvZXNuJ3QgZXhpc3QKK3dpdGhvdXQgY2hlY2tpbmcgd2l0aCB0aGUgZmlsZXN5c3RlbSwgYW5kIG1lYW5zIHRoYXQgdGhlIFZGUyBjYW4KK3Byb3RlY3QgdGhlIGZpbGVzeXN0ZW0gYWdhaW5zdCBjZXJ0YWluIHJhY2VzIGFuZCBvdGhlciBwcm9ibGVtcy4KK1RoZXNlIGFyZSB0eXBpY2FsbHkgImxvY2FsIiBmaWxlc3lzdGVtcyBzdWNoIGFzIGV4dDMsIFhGUywgYW5kIEJ0cmZzLgorCitPdGhlciBmaWxlc3lzdGVtcyBkb24ndCBwcm92aWRlIHRoYXQgZ3VhcmFudGVlIGJlY2F1c2UgdGhleSBjYW5ub3QuCitUaGVzZSBhcmUgdHlwaWNhbGx5IGZpbGVzeXN0ZW1zIHRoYXQgYXJlIHNoYXJlZCBhY3Jvc3MgYSBuZXR3b3JrLAord2hldGhlciByZW1vdGUgZmlsZXN5c3RlbXMgbGlrZSBORlMgYW5kIDlQLCBvciBjbHVzdGVyIGZpbGVzeXN0ZW1zCitsaWtlIG9jZnMyIG9yIGNlcGhmcy4gIFRoZXNlIGZpbGVzeXN0ZW1zIGFsbG93IHRoZSBWRlMgdG8gcmV2YWxpZGF0ZQorY2FjaGVkIGluZm9ybWF0aW9uLCBhbmQgbXVzdCBwcm92aWRlIHRoZWlyIG93biBwcm90ZWN0aW9uIGFnYWluc3QKK2F3a3dhcmQgcmFjZXMuICBUaGUgVkZTIGNhbiBkZXRlY3QgdGhlc2UgZmlsZXN5c3RlbXMgYnkgdGhlCitgRENBQ0hFX09QX1JFVkFMSURBVEVgIGZsYWcgYmVpbmcgc2V0IGluIHRoZSBkZW50cnkuCisKK1JFRi13YWxrOiBzaW1wbGUgY29uY3VycmVuY3kgbWFuYWdlbWVudCB3aXRoIHJlZmNvdW50cyBhbmQgc3BpbmxvY2tzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaXRoIGFsbCBvZiB0aG9zZSBkaXZpc2lvbnMgY2FyZWZ1bGx5IGNsYXNzaWZpZWQsIHdlIGNhbiBub3cgc3RhcnQKK2xvb2tpbmcgYXQgdGhlIGFjdHVhbCBwcm9jZXNzIG9mIHdhbGtpbmcgYWxvbmcgYSBwYXRoLiAgSW4gcGFydGljdWxhcgord2Ugd2lsbCBzdGFydCB3aXRoIHRoZSBoYW5kbGluZyBvZiB0aGUgImV2ZXJ5dGhpbmcgZWxzZSIgcGFydCBvZiBhCitwYXRobmFtZSwgYW5kIGZvY3VzIG9uIHRoZSAiUkVGLXdhbGsiIGFwcHJvYWNoIHRvIGNvbmN1cnJlbmN5CittYW5hZ2VtZW50LiAgVGhpcyBjb2RlIGlzIGZvdW5kIGluIHRoZSBgbGlua19wYXRoX3dhbGsoKWAgZnVuY3Rpb24sIGlmCit5b3UgaWdub3JlIGFsbCB0aGUgcGxhY2VzIHRoYXQgb25seSBydW4gd2hlbiAiYExPT0tVUF9SQ1VgIgorKGluZGljYXRpbmcgdGhlIHVzZSBvZiBSQ1Utd2FsaykgaXMgc2V0LgorCitbTWVldCB0aGUgTG9ja2Vyc106IGh0dHBzOi8vbHduLm5ldC9BcnRpY2xlcy80NTM2ODUvCisKK1JFRi13YWxrIGlzIGZhaXJseSBoZWF2eS1oYW5kZWQgd2l0aCBsb2NrcyBhbmQgcmVmZXJlbmNlIGNvdW50cy4gIE5vdAorYXMgaGVhdnktaGFuZGVkIGFzIGluIHRoZSBvbGQgImJpZyBrZXJuZWwgbG9jayIgZGF5cywgYnV0IGNlcnRhaW5seSBub3QKK2FmcmFpZCBvZiB0YWtpbmcgYSBsb2NrIHdoZW4gb25lIGlzIG5lZWRlZC4gIEl0IHVzZXMgYSB2YXJpZXR5IG9mCitkaWZmZXJlbnQgY29uY3VycmVuY3kgY29udHJvbHMuICBBIGJhY2tncm91bmQgdW5kZXJzdGFuZGluZyBvZiB0aGUKK3ZhcmlvdXMgcHJpbWl0aXZlcyBpcyBhc3N1bWVkLCBvciBjYW4gYmUgZ2xlYW5lZCBmcm9tIGVsc2V3aGVyZSBzdWNoCithcyBpbiBbTWVldCB0aGUgTG9ja2Vyc10uCisKK1RoZSBsb2NraW5nIG1lY2hhbmlzbXMgdXNlZCBieSBSRUYtd2FsayBpbmNsdWRlOgorCisjIyMgZGVudHJ5LT5kX2xvY2tyZWYgIyMjCisKK1RoaXMgdXNlcyB0aGUgbG9ja3JlZiBwcmltaXRpdmUgdG8gcHJvdmlkZSBib3RoIGEgc3BpbmxvY2sgYW5kIGEKK3JlZmVyZW5jZSBjb3VudC4gIFRoZSBzcGVjaWFsLXNhdWNlIG9mIHRoaXMgcHJpbWl0aXZlIGlzIHRoYXQgdGhlCitjb25jZXB0dWFsIHNlcXVlbmNlICJsb2NrOyBpbmNfcmVmOyB1bmxvY2s7IiBjYW4gb2Z0ZW4gYmUgcGVyZm9ybWVkCit3aXRoIGEgc2luZ2xlIGF0b21pYyBtZW1vcnkgb3BlcmF0aW9uLgorCitIb2xkaW5nIGEgcmVmZXJlbmNlIG9uIGEgZGVudHJ5IGVuc3VyZXMgdGhhdCB0aGUgZGVudHJ5IHdvbid0IHN1ZGRlbmx5CitiZSBmcmVlZCBhbmQgdXNlZCBmb3Igc29tZXRoaW5nIGVsc2UsIHNvIHRoZSB2YWx1ZXMgaW4gdmFyaW91cyBmaWVsZHMKK3dpbGwgYmVoYXZlIGFzIGV4cGVjdGVkLiAgSXQgYWxzbyBwcm90ZWN0cyB0aGUgYC0+ZF9pbm9kZWAgcmVmZXJlbmNlCit0byB0aGUgaW5vZGUgdG8gc29tZSBleHRlbnQuCisKK1RoZSBhc3NvY2lhdGlvbiBiZXR3ZWVuIGEgZGVudHJ5IGFuZCBpdHMgaW5vZGUgaXMgZmFpcmx5IHBlcm1hbmVudC4KK0ZvciBleGFtcGxlLCB3aGVuIGEgZmlsZSBpcyByZW5hbWVkLCB0aGUgZGVudHJ5IGFuZCBpbm9kZSBtb3ZlCit0b2dldGhlciB0byB0aGUgbmV3IGxvY2F0aW9uLiAgV2hlbiBhIGZpbGUgaXMgY3JlYXRlZCB0aGUgZGVudHJ5IHdpbGwKK2luaXRpYWxseSBiZSBuZWdhdGl2ZSAoaS5lLiBgZF9pbm9kZWAgaXMgYE5VTExgKSwgYW5kIHdpbGwgYmUgYXNzaWduZWQKK3RvIHRoZSBuZXcgaW5vZGUgYXMgcGFydCBvZiB0aGUgYWN0IG9mIGNyZWF0aW9uLgorCitXaGVuIGEgZmlsZSBpcyBkZWxldGVkLCB0aGlzIGNhbiBiZSByZWZsZWN0ZWQgaW4gdGhlIGNhY2hlIGVpdGhlciBieQorc2V0dGluZyBgZF9pbm9kZWAgdG8gYE5VTExgLCBvciBieSByZW1vdmluZyBpdCBmcm9tIHRoZSBoYXNoIHRhYmxlCisoZGVzY3JpYmVkIHNob3J0bHkpIHVzZWQgdG8gbG9vayB1cCB0aGUgbmFtZSBpbiB0aGUgcGFyZW50IGRpcmVjdG9yeS4KK0lmIHRoZSBkZW50cnkgaXMgc3RpbGwgaW4gdXNlIHRoZSBzZWNvbmQgb3B0aW9uIGlzIHVzZWQgYXMgaXQgaXMKK3BlcmZlY3RseSBsZWdhbCB0byBrZWVwIHVzaW5nIGFuIG9wZW4gZmlsZSBhZnRlciBpdCBoYXMgYmVlbiBkZWxldGVkCithbmQgaGF2aW5nIHRoZSBkZW50cnkgYXJvdW5kIGhlbHBzLiAgSWYgdGhlIGRlbnRyeSBpcyBub3Qgb3RoZXJ3aXNlIGluCit1c2UgKGkuZS4gaWYgdGhlIHJlZmNvdW50IGluIGBkX2xvY2tyZWZgIGlzIG9uZSksIG9ubHkgdGhlbiB3aWxsCitgZF9pbm9kZWAgYmUgc2V0IHRvIGBOVUxMYC4gIERvaW5nIGl0IHRoaXMgd2F5IGlzIG1vcmUgZWZmaWNpZW50IGZvciBhCit2ZXJ5IGNvbW1vbiBjYXNlLgorCitTbyBhcyBsb25nIGFzIGEgY291bnRlZCByZWZlcmVuY2UgaXMgaGVsZCB0byBhIGRlbnRyeSwgYSBub24tYE5VTExgIGAtPmRfaW5vZGVgCit2YWx1ZSB3aWxsIG5ldmVyIGJlIGNoYW5nZWQuCisKKyMjIyBkZW50cnktPmRfbG9jayAjIyMKKworYGRfbG9ja2AgaXMgYSBzeW5vbnltIGZvciB0aGUgc3BpbmxvY2sgdGhhdCBpcyBwYXJ0IG9mIGBkX2xvY2tyZWZgIGFib3ZlLgorRm9yIG91ciBwdXJwb3NlcywgaG9sZGluZyB0aGlzIGxvY2sgcHJvdGVjdHMgYWdhaW5zdCB0aGUgZGVudHJ5IGJlaW5nCityZW5hbWVkIG9yIHVubGlua2VkLiAgSW4gcGFydGljdWxhciwgaXRzIHBhcmVudCAoYGRfcGFyZW50YCksIGFuZCBpdHMKK25hbWUgKGBkX25hbWVgKSBjYW5ub3QgYmUgY2hhbmdlZCwgYW5kIGl0IGNhbm5vdCBiZSByZW1vdmVkIGZyb20gdGhlCitkZW50cnkgaGFzaCB0YWJsZS4KKworV2hlbiBsb29raW5nIGZvciBhIG5hbWUgaW4gYSBkaXJlY3RvcnksIFJFRi13YWxrIHRha2VzIGBkX2xvY2tgIG9uCitlYWNoIGNhbmRpZGF0ZSBkZW50cnkgdGhhdCBpdCBmaW5kcyBpbiB0aGUgaGFzaCB0YWJsZSBhbmQgdGhlbiBjaGVja3MKK3RoYXQgdGhlIHBhcmVudCBhbmQgbmFtZSBhcmUgY29ycmVjdC4gIFNvIGl0IGRvZXNuJ3QgbG9jayB0aGUgcGFyZW50Cit3aGlsZSBzZWFyY2hpbmcgaW4gdGhlIGNhY2hlOyBpdCBvbmx5IGxvY2tzIGNoaWxkcmVuLgorCitXaGVuIGxvb2tpbmcgZm9yIHRoZSBwYXJlbnQgZm9yIGEgZ2l2ZW4gbmFtZSAodG8gaGFuZGxlICJgLi5gIiksCitSRUYtd2FsayBjYW4gdGFrZSBgZF9sb2NrYCB0byBnZXQgYSBzdGFibGUgcmVmZXJlbmNlIHRvIGBkX3BhcmVudGAsCitidXQgaXQgZmlyc3QgdHJpZXMgYSBtb3JlIGxpZ2h0d2VpZ2h0IGFwcHJvYWNoLiAgQXMgc2VlbiBpbgorYGRnZXRfcGFyZW50KClgLCBpZiBhIHJlZmVyZW5jZSBjYW4gYmUgY2xhaW1lZCBvbiB0aGUgcGFyZW50LCBhbmQgaWYKK3N1YnNlcXVlbnRseSBgZF9wYXJlbnRgIGNhbiBiZSBzZWVuIHRvIGhhdmUgbm90IGNoYW5nZWQsIHRoZW4gdGhlcmUgaXMKK25vIG5lZWQgdG8gYWN0dWFsbHkgdGFrZSB0aGUgbG9jayBvbiB0aGUgY2hpbGQuCisKKyMjIyByZW5hbWVfbG9jayAjIyMKKworTG9va2luZyB1cCBhIGdpdmVuIG5hbWUgaW4gYSBnaXZlbiBkaXJlY3RvcnkgaW52b2x2ZXMgY29tcHV0aW5nIGEgaGFzaAorZnJvbSB0aGUgdHdvIHZhbHVlcyAodGhlIG5hbWUgYW5kIHRoZSBkZW50cnkgb2YgdGhlIGRpcmVjdG9yeSksCithY2Nlc3NpbmcgdGhhdCBzbG90IGluIGEgaGFzaCB0YWJsZSwgYW5kIHNlYXJjaGluZyB0aGUgbGlua2VkIGxpc3QKK3RoYXQgaXMgZm91bmQgdGhlcmUuCisKK1doZW4gYSBkZW50cnkgaXMgcmVuYW1lZCwgdGhlIG5hbWUgYW5kIHRoZSBwYXJlbnQgZGVudHJ5IGNhbiBib3RoCitjaGFuZ2Ugc28gdGhlIGhhc2ggd2lsbCBhbG1vc3QgY2VydGFpbmx5IGNoYW5nZSB0b28uICBUaGlzIHdvdWxkIG1vdmUgdGhlCitkZW50cnkgdG8gYSBkaWZmZXJlbnQgY2hhaW4gaW4gdGhlIGhhc2ggdGFibGUuICBJZiBhIGZpbGVuYW1lIHNlYXJjaAoraGFwcGVuZWQgdG8gYmUgbG9va2luZyBhdCBhIGRlbnRyeSB0aGF0IHdhcyBtb3ZlZCBpbiB0aGlzIHdheSwKK2l0IG1pZ2h0IGVuZCB1cCBjb250aW51aW5nIHRoZSBzZWFyY2ggZG93biB0aGUgd3JvbmcgY2hhaW4sCithbmQgc28gbWlzcyBvdXQgb24gcGFydCBvZiB0aGUgY29ycmVjdCBjaGFpbi4KKworVGhlIG5hbWUtbG9va3VwIHByb2Nlc3MgKGBkX2xvb2t1cCgpYCkgZG9lcyBfbm90XyB0cnkgdG8gcHJldmVudCB0aGlzCitmcm9tIGhhcHBlbmluZywgYnV0IG9ubHkgdG8gZGV0ZWN0IHdoZW4gaXQgaGFwcGVucy4KK2ByZW5hbWVfbG9ja2AgaXMgYSBzZXFsb2NrIHRoYXQgaXMgdXBkYXRlZCB3aGVuZXZlciBhbnkgZGVudHJ5IGlzCityZW5hbWVkLiAgSWYgYGRfbG9va3VwYCBmaW5kcyB0aGF0IGEgcmVuYW1lIGhhcHBlbmVkIHdoaWxlIGl0Cit1bnN1Y2Nlc3NmdWxseSBzY2FubmVkIGEgY2hhaW4gaW4gdGhlIGhhc2ggdGFibGUsIGl0IHNpbXBseSB0cmllcworYWdhaW4uCisKKyMjIyBpbm9kZS0+aV9tdXRleCAjIyMKKworYGlfbXV0ZXhgIGlzIGEgbXV0ZXggdGhhdCBzZXJpYWxpemVzIGFsbCBjaGFuZ2VzIHRvIGEgcGFydGljdWxhcgorZGlyZWN0b3J5LiAgVGhpcyBlbnN1cmVzIHRoYXQsIGZvciBleGFtcGxlLCBhbiBgdW5saW5rKClgIGFuZCBhIGByZW5hbWUoKWAKK2Nhbm5vdCBib3RoIGhhcHBlbiBhdCB0aGUgc2FtZSB0aW1lLiAgSXQgYWxzbyBrZWVwcyB0aGUgZGlyZWN0b3J5CitzdGFibGUgd2hpbGUgdGhlIGZpbGVzeXN0ZW0gaXMgYXNrZWQgdG8gbG9vayB1cCBhIG5hbWUgdGhhdCBpcyBub3QKK2N1cnJlbnRseSBpbiB0aGUgZGNhY2hlLgorCitUaGlzIGhhcyBhIGNvbXBsZW1lbnRhcnkgcm9sZSB0byB0aGF0IG9mIGBkX2xvY2tgOiBgaV9tdXRleGAgb24gYQorZGlyZWN0b3J5IHByb3RlY3RzIGFsbCBvZiB0aGUgbmFtZXMgaW4gdGhhdCBkaXJlY3RvcnksIHdoaWxlIGBkX2xvY2tgCitvbiBhIG5hbWUgcHJvdGVjdHMganVzdCBvbmUgbmFtZSBpbiBhIGRpcmVjdG9yeS4gIE1vc3QgY2hhbmdlcyB0byB0aGUKK2RjYWNoZSBob2xkIGBpX211dGV4YCBvbiB0aGUgcmVsZXZhbnQgZGlyZWN0b3J5IGlub2RlIGFuZCBicmllZmx5IHRha2UKK2BkX2xvY2tgIG9uIG9uZSBvciBtb3JlIHRoZSBkZW50cmllcyB3aGlsZSB0aGUgY2hhbmdlIGhhcHBlbnMuICBPbmUKK2V4Y2VwdGlvbiBpcyB3aGVuIGlkbGUgZGVudHJpZXMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgZGNhY2hlIGR1ZSB0bworbWVtb3J5IHByZXNzdXJlLiAgVGhpcyB1c2VzIGBkX2xvY2tgLCBidXQgYGlfbXV0ZXhgIHBsYXlzIG5vIHJvbGUuCisKK1RoZSBtdXRleCBhZmZlY3RzIHBhdGhuYW1lIGxvb2t1cCBpbiB0d28gZGlzdGluY3Qgd2F5cy4gIEZpcnN0bHkgaXQKK3NlcmlhbGl6ZXMgbG9va3VwIG9mIGEgbmFtZSBpbiBhIGRpcmVjdG9yeS4gIGB3YWxrX2NvbXBvbmVudCgpYCB1c2VzCitgbG9va3VwX2Zhc3QoKWAgZmlyc3Qgd2hpY2gsIGluIHR1cm4sIGNoZWNrcyB0byBzZWUgaWYgdGhlIG5hbWUgaXMgaW4gdGhlIGNhY2hlLAordXNpbmcgb25seSBgZF9sb2NrYCBsb2NraW5nLiAgSWYgdGhlIG5hbWUgaXNuJ3QgZm91bmQsIHRoZW4gYHdhbGtfY29tcG9uZW50KClgCitmYWxscyBiYWNrIHRvIGBsb29rdXBfc2xvdygpYCB3aGljaCB0YWtlcyBgaV9tdXRleGAsIGNoZWNrcyBhZ2FpbiB0aGF0Cit0aGUgbmFtZSBpc24ndCBpbiB0aGUgY2FjaGUsIGFuZCB0aGVuIGNhbGxzIGluIHRvIHRoZSBmaWxlc3lzdGVtIHRvIGdldCBhCitkZWZpbml0aXZlIGFuc3dlci4gIEEgbmV3IGRlbnRyeSB3aWxsIGJlIGFkZGVkIHRvIHRoZSBjYWNoZSByZWdhcmRsZXNzIG9mCit0aGUgcmVzdWx0LgorCitTZWNvbmRseSwgd2hlbiBwYXRobmFtZSBsb29rdXAgcmVhY2hlcyB0aGUgZmluYWwgY29tcG9uZW50LCBpdCB3aWxsCitzb21ldGltZXMgbmVlZCB0byB0YWtlIGBpX211dGV4YCBiZWZvcmUgcGVyZm9ybWluZyB0aGUgbGFzdCBsb29rdXAgc28KK3RoYXQgdGhlIHJlcXVpcmVkIGV4Y2x1c2lvbiBjYW4gYmUgYWNoaWV2ZWQuICBIb3cgcGF0aCBsb29rdXAgY2hvb3NlcwordG8gdGFrZSwgb3Igbm90IHRha2UsIGBpX211dGV4YCBpcyBvbmUgb2YgdGhlCitpc3N1ZXMgYWRkcmVzc2VkIGluIGEgc3Vic2VxdWVudCBzZWN0aW9uLgorCisjIyMgbW50LT5tbnRfY291bnQgIyMjCisKK2BtbnRfY291bnRgIGlzIGEgcGVyLUNQVSByZWZlcmVuY2UgY291bnRlciBvbiAiYG1vdW50YCIgc3RydWN0dXJlcy4KK1Blci1DUFUgaGVyZSBtZWFucyB0aGF0IGluY3JlbWVudGluZyB0aGUgY291bnQgaXMgY2hlYXAgYXMgaXQgb25seQordXNlcyBDUFUtbG9jYWwgbWVtb3J5LCBidXQgY2hlY2tpbmcgaWYgdGhlIGNvdW50IGlzIHplcm8gaXMgZXhwZW5zaXZlIGFzCitpdCBuZWVkcyB0byBjaGVjayB3aXRoIGV2ZXJ5IENQVS4gIFRha2luZyBhIGBtbnRfY291bnRgIHJlZmVyZW5jZQorcHJldmVudHMgdGhlIG1vdW50IHN0cnVjdHVyZSBmcm9tIGRpc2FwcGVhcmluZyBhcyB0aGUgcmVzdWx0IG9mIHJlZ3VsYXIKK3VubW91bnQgb3BlcmF0aW9ucywgYnV0IGRvZXMgbm90IHByZXZlbnQgYSAibGF6eSIgdW5tb3VudC4gIFNvIGhvbGRpbmcKK2BtbnRfY291bnRgIGRvZXNuJ3QgZW5zdXJlIHRoYXQgdGhlIG1vdW50IHJlbWFpbnMgaW4gdGhlIG5hbWVzcGFjZSBhbmQsCitpbiBwYXJ0aWN1bGFyLCBkb2Vzbid0IHN0YWJpbGl6ZSB0aGUgbGluayB0byB0aGUgbW91bnRlZC1vbiBkZW50cnkuICBJdAorZG9lcywgaG93ZXZlciwgZW5zdXJlIHRoYXQgdGhlIGBtb3VudGAgZGF0YSBzdHJ1Y3R1cmUgcmVtYWlucyBjb2hlcmVudCwKK2FuZCBpdCBwcm92aWRlcyBhIHJlZmVyZW5jZSB0byB0aGUgcm9vdCBkZW50cnkgb2YgdGhlIG1vdW50ZWQKK2ZpbGVzeXN0ZW0uICBTbyBhIHJlZmVyZW5jZSB0aHJvdWdoIGAtPm1udF9jb3VudGAgcHJvdmlkZXMgYSBzdGFibGUKK3JlZmVyZW5jZSB0byB0aGUgbW91bnRlZCBkZW50cnksIGJ1dCBub3QgdGhlIG1vdW50ZWQtb24gZGVudHJ5LgorCisjIyMgbW91bnRfbG9jayAjIyMKKworYG1vdW50X2xvY2tgIGlzIGEgZ2xvYmFsIHNlcWxvY2ssIGEgYml0IGxpa2UgYHJlbmFtZV9sb2NrYC4gIEl0IGNhbiBiZSB1c2VkIHRvCitjaGVjayBpZiBhbnkgY2hhbmdlIGhhcyBiZWVuIG1hZGUgdG8gYW55IG1vdW50IHBvaW50cy4KKworV2hpbGUgd2Fsa2luZyBkb3duIHRoZSB0cmVlIChhd2F5IGZyb20gdGhlIHJvb3QpIHRoaXMgbG9jayBpcyB1c2VkIHdoZW4KK2Nyb3NzaW5nIGEgbW91bnQgcG9pbnQgdG8gY2hlY2sgdGhhdCB0aGUgY3Jvc3Npbmcgd2FzIHNhZmUuICBUaGF0IGlzLAordGhlIHZhbHVlIGluIHRoZSBzZXFsb2NrIGlzIHJlYWQsIHRoZW4gdGhlIGNvZGUgZmluZHMgdGhlIG1vdW50IHRoYXQKK2lzIG1vdW50ZWQgb24gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LCBpZiB0aGVyZSBpcyBvbmUsIGFuZCBpbmNyZW1lbnRzCit0aGUgYG1udF9jb3VudGAuICBGaW5hbGx5IHRoZSB2YWx1ZSBpbiBgbW91bnRfbG9ja2AgaXMgY2hlY2tlZCBhZ2FpbnN0Cit0aGUgb2xkIHZhbHVlLiAgSWYgdGhlcmUgaXMgbm8gY2hhbmdlLCB0aGVuIHRoZSBjcm9zc2luZyB3YXMgc2FmZS4gIElmIHRoZXJlCit3YXMgYSBjaGFuZ2UsIHRoZSBgbW50X2NvdW50YCBpcyBkZWNyZW1lbnRlZCBhbmQgdGhlIHdob2xlIHByb2Nlc3MgaXMKK3JldHJpZWQuCisKK1doZW4gd2Fsa2luZyB1cCB0aGUgdHJlZSAodG93YXJkcyB0aGUgcm9vdCkgYnkgZm9sbG93aW5nIGEgIi4uIiBsaW5rLAorYSBsaXR0bGUgbW9yZSBjYXJlIGlzIG5lZWRlZC4gIEluIHRoaXMgY2FzZSB0aGUgc2VxbG9jayAod2hpY2gKK2NvbnRhaW5zIGJvdGggYSBjb3VudGVyIGFuZCBhIHNwaW5sb2NrKSBpcyBmdWxseSBsb2NrZWQgdG8gcHJldmVudAorYW55IGNoYW5nZXMgdG8gYW55IG1vdW50IHBvaW50cyB3aGlsZSBzdGVwcGluZyB1cC4gIFRoaXMgbG9ja2luZyBpcworbmVlZGVkIHRvIHN0YWJpbGl6ZSB0aGUgbGluayB0byB0aGUgbW91bnRlZC1vbiBkZW50cnksIHdoaWNoIHRoZQorcmVmY291bnQgb24gdGhlIG1vdW50IGl0c2VsZiBkb2Vzbid0IGVuc3VyZS4KKworIyMjIFJDVSAjIyMKKworRmluYWxseSB0aGUgZ2xvYmFsIChidXQgZXh0cmVtZWx5IGxpZ2h0d2VpZ2h0KSBSQ1UgcmVhZCBsb2NrIGlzIGhlbGQKK2Zyb20gdGltZSB0byB0aW1lIHRvIGVuc3VyZSBjZXJ0YWluIGRhdGEgc3RydWN0dXJlcyBkb24ndCBnZXQgZnJlZWQKK3VuZXhwZWN0ZWRseS4KKworSW4gcGFydGljdWxhciBpdCBpcyBoZWxkIHdoaWxlIHNjYW5uaW5nIGNoYWlucyBpbiB0aGUgZGNhY2hlIGhhc2gKK3RhYmxlLCBhbmQgdGhlIG1vdW50IHBvaW50IGhhc2ggdGFibGUuCisKK0JyaW5naW5nIGl0IHRvZ2V0aGVyIHdpdGggYHN0cnVjdCBuYW1laWRhdGFgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitbRmlyc3QgZWRpdGlvbiBVbml4XTogaHR0cDovL21pbm5pZS50dWhzLm9yZy9jZ2ktYmluL3V0cmVlLnBsP2ZpbGU9VjEvdTIucworCitUaHJvdWdob3V0IHRoZSBwcm9jZXNzIG9mIHdhbGtpbmcgYSBwYXRoLCB0aGUgY3VycmVudCBzdGF0dXMgaXMgc3RvcmVkCitpbiBhIGBzdHJ1Y3QgbmFtZWlkYXRhYCwgIm5hbWVpIiBiZWluZyB0aGUgdHJhZGl0aW9uYWwgbmFtZSAtIGRhdGluZworYWxsIHRoZSB3YXkgYmFjayB0byBbRmlyc3QgRWRpdGlvbiBVbml4XSAtIG9mIHRoZSBmdW5jdGlvbiB0aGF0Citjb252ZXJ0cyBhICJuYW1lIiB0byBhbiAiaW5vZGUiLiAgYHN0cnVjdCBuYW1laWRhdGFgIGNvbnRhaW5zIChhbW9uZworb3RoZXIgZmllbGRzKToKKworIyMjIGBzdHJ1Y3QgcGF0aCBwYXRoYCAjIyMKKworQSBgcGF0aGAgY29udGFpbnMgYSBgc3RydWN0IHZmc21vdW50YCAod2hpY2ggaXMKK2VtYmVkZGVkIGluIGEgYHN0cnVjdCBtb3VudGApIGFuZCBhIGBzdHJ1Y3QgZGVudHJ5YC4gIFRvZ2V0aGVyIHRoZXNlCityZWNvcmQgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSB3YWxrLiAgVGhleSBzdGFydCBvdXQgcmVmZXJyaW5nIHRvIHRoZQorc3RhcnRpbmcgcG9pbnQgKHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LCB0aGUgcm9vdCBkaXJlY3RvcnksIG9yIHNvbWUgb3RoZXIKK2RpcmVjdG9yeSBpZGVudGlmaWVkIGJ5IGEgZmlsZSBkZXNjcmlwdG9yKSwgYW5kIGFyZSB1cGRhdGVkIG9uIGVhY2gKK3N0ZXAuICBBIHJlZmVyZW5jZSB0aHJvdWdoIGBkX2xvY2tyZWZgIGFuZCBgbW50X2NvdW50YCBpcyBhbHdheXMKK2hlbGQuCisKKyMjIyBgc3RydWN0IHFzdHIgbGFzdGAgIyMjCisKK1RoaXMgaXMgYSBzdHJpbmcgdG9nZXRoZXIgd2l0aCBhIGxlbmd0aCAoaS5lLiBfbm90XyBgbnVsYCB0ZXJtaW5hdGVkKQordGhhdCBpcyB0aGUgIm5leHQiIGNvbXBvbmVudCBpbiB0aGUgcGF0aG5hbWUuCisKKyMjIyBgaW50IGxhc3RfdHlwZWAgIyMjCisKK1RoaXMgaXMgb25lIG9mIGBMQVNUX05PUk1gLCBgTEFTVF9ST09UYCwgYExBU1RfRE9UYCwgYExBU1RfRE9URE9UYCwgb3IKK2BMQVNUX0JJTkRgLiAgVGhlIGBsYXN0YCBmaWVsZCBpcyBvbmx5IHZhbGlkIGlmIHRoZSB0eXBlIGlzCitgTEFTVF9OT1JNYC4gIGBMQVNUX0JJTkRgIGlzIHVzZWQgd2hlbiBmb2xsb3dpbmcgYSBzeW1saW5rIGFuZCBubworY29tcG9uZW50cyBvZiB0aGUgc3ltbGluayBoYXZlIGJlZW4gcHJvY2Vzc2VkIHlldC4gIE90aGVycyBzaG91bGQgYmUKK2ZhaXJseSBzZWxmLWV4cGxhbmF0b3J5LgorCisjIyMgYHN0cnVjdCBwYXRoIHJvb3RgICMjIworCitUaGlzIGlzIHVzZWQgdG8gaG9sZCBhIHJlZmVyZW5jZSB0byB0aGUgZWZmZWN0aXZlIHJvb3Qgb2YgdGhlCitmaWxlc3lzdGVtLiAgT2Z0ZW4gdGhhdCByZWZlcmVuY2Ugd29uJ3QgYmUgbmVlZGVkLCBzbyB0aGlzIGZpZWxkIGlzCitvbmx5IGFzc2lnbmVkIHRoZSBmaXJzdCB0aW1lIGl0IGlzIHVzZWQsIG9yIHdoZW4gYSBub24tc3RhbmRhcmQgcm9vdAoraXMgcmVxdWVzdGVkLiAgS2VlcGluZyBhIHJlZmVyZW5jZSBpbiB0aGUgYG5hbWVpZGF0YWAgZW5zdXJlcyB0aGF0Citvbmx5IG9uZSByb290IGlzIGluIGVmZmVjdCBmb3IgdGhlIGVudGlyZSBwYXRoIHdhbGssIGV2ZW4gaWYgaXQgcmFjZXMKK3dpdGggYSBgY2hyb290KClgIHN5c3RlbSBjYWxsLgorCitUaGUgcm9vdCBpcyBuZWVkZWQgd2hlbiBlaXRoZXIgb2YgdHdvIGNvbmRpdGlvbnMgaG9sZHM6ICgxKSBlaXRoZXIgdGhlCitwYXRobmFtZSBvciBhIHN5bWJvbGljIGxpbmsgc3RhcnRzIHdpdGggYSAiJy8nIiwgb3IgKDIpIGEgImAuLmAiCitjb21wb25lbnQgaXMgYmVpbmcgaGFuZGxlZCwgc2luY2UgImAuLmAiIGZyb20gdGhlIHJvb3QgbXVzdCBhbHdheXMgc3RheQorYXQgdGhlIHJvb3QuICBUaGUgdmFsdWUgdXNlZCBpcyB1c3VhbGx5IHRoZSBjdXJyZW50IHJvb3QgZGlyZWN0b3J5IG9mCit0aGUgY2FsbGluZyBwcm9jZXNzLiAgQW4gYWx0ZXJuYXRlIHJvb3QgY2FuIGJlIHByb3ZpZGVkIGFzIHdoZW4KK2BzeXNjdGwoKWAgY2FsbHMgYGZpbGVfb3Blbl9yb290KClgLCBhbmQgd2hlbiBORlN2NCBvciBCdHJmcyBjYWxsCitgbW91bnRfc3VidHJlZSgpYC4gIEluIGVhY2ggY2FzZSBhIHBhdGhuYW1lIGlzIGJlaW5nIGxvb2tlZCB1cCBpbiBhIHZlcnkKK3NwZWNpZmljIHBhcnQgb2YgdGhlIGZpbGVzeXN0ZW0sIGFuZCB0aGUgbG9va3VwIG11c3Qgbm90IGJlIGFsbG93ZWQgdG8KK2VzY2FwZSB0aGF0IHN1YnRyZWUuICBJdCB3b3JrcyBhIGJpdCBsaWtlIGEgbG9jYWwgYGNocm9vdCgpYC4KKworSWdub3JpbmcgdGhlIGhhbmRsaW5nIG9mIHN5bWJvbGljIGxpbmtzLCB3ZSBjYW4gbm93IGRlc2NyaWJlIHRoZQorImBsaW5rX3BhdGhfd2FsaygpYCIgZnVuY3Rpb24sIHdoaWNoIGhhbmRsZXMgdGhlIGxvb2t1cCBvZiBldmVyeXRoaW5nCitleGNlcHQgdGhlIGZpbmFsIGNvbXBvbmVudCBhczoKKworPiAgR2l2ZW4gYSBwYXRoIChgbmFtZWApIGFuZCBhIG5hbWVpZGF0YSBzdHJ1Y3R1cmUgKGBuZGApLCBjaGVjayB0aGF0IHRoZQorPiAgY3VycmVudCBkaXJlY3RvcnkgaGFzIGV4ZWN1dGUgcGVybWlzc2lvbiBhbmQgdGhlbiBhZHZhbmNlIGBuYW1lYAorPiAgb3ZlciBvbmUgY29tcG9uZW50IHdoaWxlIHVwZGF0aW5nIGBsYXN0X3R5cGVgIGFuZCBgbGFzdGAuICBJZiB0aGF0Cis+ICB3YXMgdGhlIGZpbmFsIGNvbXBvbmVudCwgdGhlbiByZXR1cm4sIG90aGVyd2lzZSBjYWxsCis+ICBgd2Fsa19jb21wb25lbnQoKWAgYW5kIHJlcGVhdCBmcm9tIHRoZSB0b3AuCisKK2B3YWxrX2NvbXBvbmVudCgpYCBpcyBldmVuIGVhc2llci4gIElmIHRoZSBjb21wb25lbnQgaXMgYExBU1RfRE9UU2AsCitpdCBjYWxscyBgaGFuZGxlX2RvdHMoKWAgd2hpY2ggZG9lcyB0aGUgbmVjZXNzYXJ5IGxvY2tpbmcgYXMgYWxyZWFkeQorZGVzY3JpYmVkLiAgSWYgaXQgZmluZHMgYSBgTEFTVF9OT1JNYCBjb21wb25lbnQgaXQgZmlyc3QgY2FsbHMKKyJgbG9va3VwX2Zhc3QoKWAiIHdoaWNoIG9ubHkgbG9va3MgaW4gdGhlIGRjYWNoZSwgYnV0IHdpbGwgYXNrIHRoZQorZmlsZXN5c3RlbSB0byByZXZhbGlkYXRlIHRoZSByZXN1bHQgaWYgaXQgaXMgdGhhdCBzb3J0IG9mIGZpbGVzeXN0ZW0uCitJZiB0aGF0IGRvZXNuJ3QgZ2V0IGEgZ29vZCByZXN1bHQsIGl0IGNhbGxzICJgbG9va3VwX3Nsb3coKWAiIHdoaWNoCit0YWtlcyB0aGUgYGlfbXV0ZXhgLCByZWNoZWNrcyB0aGUgY2FjaGUsIGFuZCB0aGVuIGFza3MgdGhlIGZpbGVzeXN0ZW0KK3RvIGZpbmQgYSBkZWZpbml0aXZlIGFuc3dlci4gIEVhY2ggb2YgdGhlc2Ugd2lsbCBjYWxsCitgZm9sbG93X21hbmFnZWQoKWAgKGFzIGRlc2NyaWJlZCBiZWxvdykgdG8gaGFuZGxlIGFueSBtb3VudCBwb2ludHMuCisKK0luIHRoZSBhYnNlbmNlIG9mIHN5bWJvbGljIGxpbmtzLCBgd2Fsa19jb21wb25lbnQoKWAgY3JlYXRlcyBhIG5ldworYHN0cnVjdCBwYXRoYCBjb250YWluaW5nIGEgY291bnRlZCByZWZlcmVuY2UgdG8gdGhlIG5ldyBkZW50cnkgYW5kIGEKK3JlZmVyZW5jZSB0byB0aGUgbmV3IGB2ZnNtb3VudGAgd2hpY2ggaXMgb25seSBjb3VudGVkIGlmIGl0IGlzCitkaWZmZXJlbnQgZnJvbSB0aGUgcHJldmlvdXMgYHZmc21vdW50YC4gIEl0IHRoZW4gY2FsbHMKK2BwYXRoX3RvX25hbWVpZGF0YSgpYCB0byBpbnN0YWxsIHRoZSBuZXcgYHN0cnVjdCBwYXRoYCBpbiB0aGUKK2BzdHJ1Y3QgbmFtZWlkYXRhYCBhbmQgZHJvcCB0aGUgdW5uZWVkZWQgcmVmZXJlbmNlcy4KKworVGhpcyAiaGFuZC1vdmVyLWhhbmQiIHNlcXVlbmNpbmcgb2YgZ2V0dGluZyBhIHJlZmVyZW5jZSB0byB0aGUgbmV3CitkZW50cnkgYmVmb3JlIGRyb3BwaW5nIHRoZSByZWZlcmVuY2UgdG8gdGhlIHByZXZpb3VzIGRlbnRyeSBtYXkKK3NlZW0gb2J2aW91cywgYnV0IGlzIHdvcnRoIHBvaW50aW5nIG91dCBzbyB0aGF0IHdlIHdpbGwgcmVjb2duaXplIGl0cworYW5hbG9ndWUgaW4gdGhlICJSQ1Utd2FsayIgdmVyc2lvbi4KKworSGFuZGxpbmcgdGhlIGZpbmFsIGNvbXBvbmVudC4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2BsaW5rX3BhdGhfd2FsaygpYCBvbmx5IHdhbGtzIGFzIGZhciBhcyBzZXR0aW5nIGBuZC0+bGFzdGAgYW5kCitgbmQtPmxhc3RfdHlwZWAgdG8gcmVmZXIgdG8gdGhlIGZpbmFsIGNvbXBvbmVudCBvZiB0aGUgcGF0aC4gIEl0IGRvZXMKK25vdCBjYWxsIGB3YWxrX2NvbXBvbmVudCgpYCB0aGF0IGxhc3QgdGltZS4gIEhhbmRsaW5nIHRoYXQgZmluYWwKK2NvbXBvbmVudCByZW1haW5zIGZvciB0aGUgY2FsbGVyIHRvIHNvcnQgb3V0LiBUaG9zZSBjYWxsZXJzIGFyZQorYHBhdGhfbG9va3VwYXQoKWAsIGBwYXRoX3BhcmVudGF0KClgLCBgcGF0aF9tb3VudHBvaW50KClgIGFuZAorYHBhdGhfb3BlbmF0KClgIGVhY2ggb2Ygd2hpY2ggaGFuZGxlcyB0aGUgZGlmZmVyaW5nIHJlcXVpcmVtZW50cyBvZgorZGlmZmVyZW50IHN5c3RlbSBjYWxscy4KKworYHBhdGhfcGFyZW50YXQoKWAgaXMgY2xlYXJseSB0aGUgc2ltcGxlc3QgLSBpdCBqdXN0IHdyYXBzIGEgbGl0dGxlIGJpdAorb2YgaG91c2VrZWVwaW5nIGFyb3VuZCBgbGlua19wYXRoX3dhbGsoKWAgYW5kIHJldHVybnMgdGhlIHBhcmVudAorZGlyZWN0b3J5IGFuZCBmaW5hbCBjb21wb25lbnQgdG8gdGhlIGNhbGxlci4gIFRoZSBjYWxsZXIgd2lsbCBiZSBlaXRoZXIKK2FpbWluZyB0byBjcmVhdGUgYSBuYW1lICh2aWEgYGZpbGVuYW1lX2NyZWF0ZSgpYCkgb3IgcmVtb3ZlIG9yIHJlbmFtZQorYSBuYW1lIChpbiB3aGljaCBjYXNlIGB1c2VyX3BhdGhfcGFyZW50KClgIGlzIHVzZWQpLiAgVGhleSB3aWxsIHVzZQorYGlfbXV0ZXhgIHRvIGV4Y2x1ZGUgb3RoZXIgY2hhbmdlcyB3aGlsZSB0aGV5IHZhbGlkYXRlIGFuZCB0aGVuCitwZXJmb3JtIHRoZWlyIG9wZXJhdGlvbi4KKworYHBhdGhfbG9va3VwYXQoKWAgaXMgbmVhcmx5IGFzIHNpbXBsZSAtIGl0IGlzIHVzZWQgd2hlbiBhbiBleGlzdGluZworb2JqZWN0IGlzIHdhbnRlZCBzdWNoIGFzIGJ5IGBzdGF0KClgIG9yIGBjaG1vZCgpYC4gIEl0IGVzc2VudGlhbGx5IGp1c3QKK2NhbGxzIGB3YWxrX2NvbXBvbmVudCgpYCBvbiB0aGUgZmluYWwgY29tcG9uZW50IHRocm91Z2ggYSBjYWxsIHRvCitgbG9va3VwX2xhc3QoKWAuICBgcGF0aF9sb29rdXBhdCgpYCByZXR1cm5zIGp1c3QgdGhlIGZpbmFsIGRlbnRyeS4KKworYHBhdGhfbW91bnRwb2ludCgpYCBoYW5kbGVzIHRoZSBzcGVjaWFsIGNhc2Ugb2YgdW5tb3VudGluZyB3aGljaCBtdXN0Citub3QgdHJ5IHRvIHJldmFsaWRhdGUgdGhlIG1vdW50ZWQgZmlsZXN5c3RlbS4gIEl0IGVmZmVjdGl2ZWx5Citjb250YWlucywgdGhyb3VnaCBhIGNhbGwgdG8gYG1vdW50cG9pbnRfbGFzdCgpYCwgYW4gYWx0ZXJuYXRlCitpbXBsZW1lbnRhdGlvbiBvZiBgbG9va3VwX3Nsb3coKWAgd2hpY2ggc2tpcHMgdGhhdCBzdGVwLiAgVGhpcyBpcworaW1wb3J0YW50IHdoZW4gdW5tb3VudGluZyBhIGZpbGVzeXN0ZW0gdGhhdCBpcyBpbmFjY2Vzc2libGUsIHN1Y2ggYXMKK29uZSBwcm92aWRlZCBieSBhIGRlYWQgTkZTIHNlcnZlci4KKworRmluYWxseSBgcGF0aF9vcGVuYXQoKWAgaXMgdXNlZCBmb3IgdGhlIGBvcGVuKClgIHN5c3RlbSBjYWxsOyBpdAorY29udGFpbnMsIGluIHN1cHBvcnQgZnVuY3Rpb25zIHN0YXJ0aW5nIHdpdGggImBkb19sYXN0KClgIiwgYWxsIHRoZQorY29tcGxleGl0eSBuZWVkZWQgdG8gaGFuZGxlIHRoZSBkaWZmZXJlbnQgc3VidGxldGllcyBvZiBPX0NSRUFUICh3aXRoCitvciB3aXRob3V0IE9fRVhDTCksIGZpbmFsICJgL2AiIGNoYXJhY3RlcnMsIGFuZCB0cmFpbGluZyBzeW1ib2xpYworbGlua3MuICBXZSB3aWxsIHJldmlzaXQgdGhpcyBpbiB0aGUgZmluYWwgcGFydCBvZiB0aGlzIHNlcmllcywgd2hpY2gKK2ZvY3VzZXMgb24gdGhvc2Ugc3ltYm9saWMgbGlua3MuICAiYGRvX2xhc3QoKWAiIHdpbGwgc29tZXRpbWVzLCBidXQKK25vdCBhbHdheXMsIHRha2UgYGlfbXV0ZXhgLCBkZXBlbmRpbmcgb24gd2hhdCBpdCBmaW5kcy4KKworRWFjaCBvZiB0aGVzZSwgb3IgdGhlIGZ1bmN0aW9ucyB3aGljaCBjYWxsIHRoZW0sIG5lZWQgdG8gYmUgYWxlcnQgdG8KK3RoZSBwb3NzaWJpbGl0eSB0aGF0IHRoZSBmaW5hbCBjb21wb25lbnQgaXMgbm90IGBMQVNUX05PUk1gLiAgSWYgdGhlCitnb2FsIG9mIHRoZSBsb29rdXAgaXMgdG8gY3JlYXRlIHNvbWV0aGluZywgdGhlbiBhbnkgdmFsdWUgZm9yCitgbGFzdF90eXBlYCBvdGhlciB0aGFuIGBMQVNUX05PUk1gIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yLiAgRm9yCitleGFtcGxlIGlmIGBwYXRoX3BhcmVudGF0KClgIHJlcG9ydHMgYExBU1RfRE9URE9UYCwgdGhlbiB0aGUgY2FsbGVyCit3b24ndCB0cnkgdG8gY3JlYXRlIHRoYXQgbmFtZS4gIFRoZXkgYWxzbyBjaGVjayBmb3IgdHJhaWxpbmcgc2xhc2hlcworYnkgdGVzdGluZyBgbGFzdC5uYW1lW2xhc3QubGVuXWAuICBJZiB0aGVyZSBpcyBhbnkgY2hhcmFjdGVyIGJleW9uZAordGhlIGZpbmFsIGNvbXBvbmVudCwgaXQgbXVzdCBiZSBhIHRyYWlsaW5nIHNsYXNoLgorCitSZXZhbGlkYXRpb24gYW5kIGF1dG9tb3VudHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBcGFydCBmcm9tIHN5bWJvbGljIGxpbmtzLCB0aGVyZSBhcmUgb25seSB0d28gcGFydHMgb2YgdGhlICJSRUYtd2FsayIKK3Byb2Nlc3Mgbm90IHlldCBjb3ZlcmVkLiAgT25lIGlzIHRoZSBoYW5kbGluZyBvZiBzdGFsZSBjYWNoZSBlbnRyaWVzCithbmQgdGhlIG90aGVyIGlzIGF1dG9tb3VudHMuCisKK09uIGZpbGVzeXN0ZW1zIHRoYXQgcmVxdWlyZSBpdCwgdGhlIGxvb2t1cCByb3V0aW5lcyB3aWxsIGNhbGwgdGhlCitgLT5kX3JldmFsaWRhdGUoKWAgZGVudHJ5IG1ldGhvZCB0byBlbnN1cmUgdGhhdCB0aGUgY2FjaGVkIGluZm9ybWF0aW9uCitpcyBjdXJyZW50LiAgVGhpcyB3aWxsIG9mdGVuIGNvbmZpcm0gdmFsaWRpdHkgb3IgdXBkYXRlIGEgZmV3IGRldGFpbHMKK2Zyb20gYSBzZXJ2ZXIuICBJbiBzb21lIGNhc2VzIGl0IG1heSBmaW5kIHRoYXQgdGhlcmUgaGFzIGJlZW4gY2hhbmdlCitmdXJ0aGVyIHVwIHRoZSBwYXRoIGFuZCB0aGF0IHNvbWV0aGluZyB0aGF0IHdhcyB0aG91Z2h0IHRvIGJlIHZhbGlkCitwcmV2aW91c2x5IGlzbid0IHJlYWxseS4gIFdoZW4gdGhpcyBoYXBwZW5zIHRoZSBsb29rdXAgb2YgdGhlIHdob2xlCitwYXRoIGlzIGFib3J0ZWQgYW5kIHJldHJpZWQgd2l0aCB0aGUgImBMT09LVVBfUkVWQUxgIiBmbGFnIHNldC4gIFRoaXMKK2ZvcmNlcyByZXZhbGlkYXRpb24gdG8gYmUgbW9yZSB0aG9yb3VnaC4gIFdlIHdpbGwgc2VlIG1vcmUgZGV0YWlscyBvZgordGhpcyByZXRyeSBwcm9jZXNzIGluIHRoZSBuZXh0IGFydGljbGUuCisKK0F1dG9tb3VudCBwb2ludHMgYXJlIGxvY2F0aW9ucyBpbiB0aGUgZmlsZXN5c3RlbSB3aGVyZSBhbiBhdHRlbXB0IHRvCitsb29rdXAgYSBuYW1lIGNhbiB0cmlnZ2VyIGNoYW5nZXMgdG8gaG93IHRoYXQgbG9va3VwIHNob3VsZCBiZQoraGFuZGxlZCwgaW4gcGFydGljdWxhciBieSBtb3VudGluZyBhIGZpbGVzeXN0ZW0gdGhlcmUuICBUaGVzZSBhcmUKK2NvdmVyZWQgaW4gZ3JlYXRlciBkZXRhaWwgaW4gYXV0b2ZzNC50eHQgaW4gdGhlIExpbnV4IGRvY3VtZW50YXRpb24KK3RyZWUsIGJ1dCBhIGZldyBub3RlcyBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBwYXRoIGxvb2t1cCBhcmUgaW4gb3JkZXIKK2hlcmUuCisKK1RoZSBMaW51eCBWRlMgaGFzIGEgY29uY2VwdCBvZiAibWFuYWdlZCIgZGVudHJpZXMgd2hpY2ggaXMgcmVmbGVjdGVkCitpbiBmdW5jdGlvbiBuYW1lcyBzdWNoIGFzICJgZm9sbG93X21hbmFnZWQoKWAiLiAgVGhlcmUgYXJlIHRocmVlCitwb3RlbnRpYWxseSBpbnRlcmVzdGluZyB0aGluZ3MgYWJvdXQgdGhlc2UgZGVudHJpZXMgY29ycmVzcG9uZGluZwordG8gdGhyZWUgZGlmZmVyZW50IGZsYWdzIHRoYXQgbWlnaHQgYmUgc2V0IGluIGBkZW50cnktPmRfZmxhZ3NgOgorCisjIyMgYERDQUNIRV9NQU5BR0VfVFJBTlNJVGAgIyMjCisKK0lmIHRoaXMgZmxhZyBoYXMgYmVlbiBzZXQsIHRoZW4gdGhlIGZpbGVzeXN0ZW0gaGFzIHJlcXVlc3RlZCB0aGF0IHRoZQorYGRfbWFuYWdlKClgIGRlbnRyeSBvcGVyYXRpb24gYmUgY2FsbGVkIGJlZm9yZSBoYW5kbGluZyBhbnkgcG9zc2libGUKK21vdW50IHBvaW50LiAgVGhpcyBjYW4gcGVyZm9ybSB0d28gcGFydGljdWxhciBzZXJ2aWNlczoKKworSXQgY2FuIGJsb2NrIHRvIGF2b2lkIHJhY2VzLiAgSWYgYW4gYXV0b21vdW50IHBvaW50IGlzIGJlaW5nCit1bm1vdW50ZWQsIHRoZSBgZF9tYW5hZ2UoKWAgZnVuY3Rpb24gd2lsbCB1c3VhbGx5IHdhaXQgZm9yIHRoYXQKK3Byb2Nlc3MgdG8gY29tcGxldGUgYmVmb3JlIGxldHRpbmcgdGhlIG5ldyBsb29rdXAgcHJvY2VlZCBhbmQgcG9zc2libHkKK3RyaWdnZXIgYSBuZXcgYXV0b21vdW50LgorCitJdCBjYW4gc2VsZWN0aXZlbHkgYWxsb3cgb25seSBzb21lIHByb2Nlc3NlcyB0byB0cmFuc2l0IHRocm91Z2ggYQorbW91bnQgcG9pbnQuICBXaGVuIGEgc2VydmVyIHByb2Nlc3MgaXMgbWFuYWdpbmcgYXV0b21vdW50cywgaXQgbWF5CituZWVkIHRvIGFjY2VzcyBhIGRpcmVjdG9yeSB3aXRob3V0IHRyaWdnZXJpbmcgbm9ybWFsIGF1dG9tb3VudAorcHJvY2Vzc2luZy4gIFRoYXQgc2VydmVyIHByb2Nlc3MgY2FuIGlkZW50aWZ5IGl0c2VsZiB0byB0aGUgYGF1dG9mc2AKK2ZpbGVzeXN0ZW0sIHdoaWNoIHdpbGwgdGhlbiBnaXZlIGl0IGEgc3BlY2lhbCBwYXNzIHRocm91Z2gKK2BkX21hbmFnZSgpYCBieSByZXR1cm5pbmcgYC1FSVNESVJgLgorCisjIyMgYERDQUNIRV9NT1VOVEVEYCAjIyMKKworVGhpcyBmbGFnIGlzIHNldCBvbiBldmVyeSBkZW50cnkgdGhhdCBpcyBtb3VudGVkIG9uLiAgQXMgTGludXgKK3N1cHBvcnRzIG11bHRpcGxlIGZpbGVzeXN0ZW0gbmFtZXNwYWNlcywgaXQgaXMgcG9zc2libGUgdGhhdCB0aGUKK2RlbnRyeSBtYXkgbm90IGJlIG1vdW50ZWQgb24gaW4gKnRoaXMqIG5hbWVzcGFjZSwganVzdCBpbiBzb21lCitvdGhlci4gIFNvIHRoaXMgZmxhZyBpcyBzZWVuIGFzIGEgaGludCwgbm90IGEgcHJvbWlzZS4KKworSWYgdGhpcyBmbGFnIGlzIHNldCwgYW5kIGBkX21hbmFnZSgpYCBkaWRuJ3QgcmV0dXJuIGAtRUlTRElSYCwKK2Bsb29rdXBfbW50KClgIGlzIGNhbGxlZCB0byBleGFtaW5lIHRoZSBtb3VudCBoYXNoIHRhYmxlIChob25vcmluZyB0aGUKK2Btb3VudF9sb2NrYCBkZXNjcmliZWQgZWFybGllcikgYW5kIHBvc3NpYmx5IHJldHVybiBhIG5ldyBgdmZzbW91bnRgCithbmQgYSBuZXcgYGRlbnRyeWAgKGJvdGggd2l0aCBjb3VudGVkIHJlZmVyZW5jZXMpLgorCisjIyMgYERDQUNIRV9ORUVEX0FVVE9NT1VOVGAgIyMjCisKK0lmIGBkX21hbmFnZSgpYCBhbGxvd2VkIHVzIHRvIGdldCB0aGlzIGZhciwgYW5kIGBsb29rdXBfbW50KClgIGRpZG4ndAorZmluZCBhIG1vdW50IHBvaW50LCB0aGVuIHRoaXMgZmxhZyBjYXVzZXMgdGhlIGBkX2F1dG9tb3VudCgpYCBkZW50cnkKK29wZXJhdGlvbiB0byBiZSBjYWxsZWQuCisKK1RoZSBgZF9hdXRvbW91bnQoKWAgb3BlcmF0aW9uIGNhbiBiZSBhcmJpdHJhcmlseSBjb21wbGV4IGFuZCBtYXkKK2NvbW11bmljYXRlIHdpdGggc2VydmVyIHByb2Nlc3NlcyBldGMuIGJ1dCBpdCBzaG91bGQgdWx0aW1hdGVseSBlaXRoZXIKK3JlcG9ydCB0aGF0IHRoZXJlIHdhcyBhbiBlcnJvciwgdGhhdCB0aGVyZSB3YXMgbm90aGluZyB0byBtb3VudCwgb3IKK3Nob3VsZCBwcm92aWRlIGFuIHVwZGF0ZWQgYHN0cnVjdCBwYXRoYCB3aXRoIG5ldyBgZGVudHJ5YCBhbmQgYHZmc21vdW50YC4KKworSW4gdGhlIGxhdHRlciBjYXNlLCBgZmluaXNoX2F1dG9tb3VudCgpYCB3aWxsIGJlIGNhbGxlZCB0byBzYWZlbHkKK2luc3RhbGwgdGhlIG5ldyBtb3VudCBwb2ludCBpbnRvIHRoZSBtb3VudCB0YWJsZS4KKworVGhlcmUgaXMgbm8gbmV3IGxvY2tpbmcgb2YgaW1wb3J0IGhlcmUgYW5kIGl0IGlzIGltcG9ydGFudCB0aGF0IG5vCitsb2NrcyAob25seSBjb3VudGVkIHJlZmVyZW5jZXMpIGFyZSBoZWxkIG92ZXIgdGhpcyBwcm9jZXNzaW5nIGR1ZSB0bwordGhlIHZlcnkgcmVhbCBwb3NzaWJpbGl0eSBvZiBleHRlbmRlZCBkZWxheXMuCitUaGlzIHdpbGwgYmVjb21lIG1vcmUgaW1wb3J0YW50IG5leHQgdGltZSB3aGVuIHdlIGV4YW1pbmUgUkNVLXdhbGsKK3doaWNoIGlzIHBhcnRpY3VsYXJseSBzZW5zaXRpdmUgdG8gZGVsYXlzLgorCitSQ1Utd2FsayAtIGZhc3RlciBwYXRobmFtZSBsb29rdXAgaW4gTGludXgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSQ1Utd2FsayBpcyBhbm90aGVyIGFsZ29yaXRobSBmb3IgcGVyZm9ybWluZyBwYXRobmFtZSBsb29rdXAgaW4gTGludXguCitJdCBpcyBpbiBtYW55IHdheXMgc2ltaWxhciB0byBSRUYtd2FsayBhbmQgdGhlIHR3byBzaGFyZSBxdWl0ZSBhIGJpdAorb2YgY29kZS4gIFRoZSBzaWduaWZpY2FudCBkaWZmZXJlbmNlIGluIFJDVS13YWxrIGlzIGhvdyBpdCBhbGxvd3MgZm9yCit0aGUgcG9zc2liaWxpdHkgb2YgY29uY3VycmVudCBhY2Nlc3MuCisKK1dlIG5vdGVkIHRoYXQgUkVGLXdhbGsgaXMgY29tcGxleCBiZWNhdXNlIHRoZXJlIGFyZSBudW1lcm91cyBkZXRhaWxzCithbmQgc3BlY2lhbCBjYXNlcy4gIFJDVS13YWxrIHJlZHVjZXMgdGhpcyBjb21wbGV4aXR5IGJ5IHNpbXBseQorcmVmdXNpbmcgdG8gaGFuZGxlIGEgbnVtYmVyIG9mIGNhc2VzIC0tIGl0IGluc3RlYWQgZmFsbHMgYmFjayB0bworUkVGLXdhbGsuICBUaGUgZGlmZmljdWx0eSB3aXRoIFJDVS13YWxrIGNvbWVzIGZyb20gYSBkaWZmZXJlbnQKK2RpcmVjdGlvbjogdW5mYW1pbGlhcml0eS4gIFRoZSBsb2NraW5nIHJ1bGVzIHdoZW4gZGVwZW5kaW5nIG9uIFJDVSBhcmUKK3F1aXRlIGRpZmZlcmVudCBmcm9tIHRyYWRpdGlvbmFsIGxvY2tpbmcsIHNvIHdlIHdpbGwgc3BlbmQgYSBsaXR0bGUgZXh0cmEKK3RpbWUgd2hlbiB3ZSBjb21lIHRvIHRob3NlLgorCitDbGVhciBkZW1hcmNhdGlvbiBvZiByb2xlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGVhc2llc3Qgd2F5IHRvIG1hbmFnZSBjb25jdXJyZW5jeSBpcyB0byBmb3JjaWJseSBzdG9wIGFueSBvdGhlcgordGhyZWFkIGZyb20gY2hhbmdpbmcgdGhlIGRhdGEgc3RydWN0dXJlcyB0aGF0IGEgZ2l2ZW4gdGhyZWFkIGlzCitsb29raW5nIGF0LiAgSW4gY2FzZXMgd2hlcmUgbm8gb3RoZXIgdGhyZWFkIHdvdWxkIGV2ZW4gdGhpbmsgb2YKK2NoYW5naW5nIHRoZSBkYXRhIGFuZCBsb3RzIG9mIGRpZmZlcmVudCB0aHJlYWRzIHdhbnQgdG8gcmVhZCBhdCB0aGUKK3NhbWUgdGltZSwgdGhpcyBjYW4gYmUgdmVyeSBjb3N0bHkuICBFdmVuIHdoZW4gdXNpbmcgbG9ja3MgdGhhdCBwZXJtaXQKK211bHRpcGxlIGNvbmN1cnJlbnQgcmVhZGVycywgdGhlIHNpbXBsZSBhY3Qgb2YgdXBkYXRpbmcgdGhlIGNvdW50IG9mCit0aGUgbnVtYmVyIG9mIGN1cnJlbnQgcmVhZGVycyBjYW4gaW1wb3NlIGFuIHVud2FudGVkIGNvc3QuICBTbyB0aGUKK2dvYWwgd2hlbiByZWFkaW5nIGEgc2hhcmVkIGRhdGEgc3RydWN0dXJlIHRoYXQgbm8gb3RoZXIgcHJvY2VzcyBpcworY2hhbmdpbmcgaXMgdG8gYXZvaWQgd3JpdGluZyBhbnl0aGluZyB0byBtZW1vcnkgYXQgYWxsLiAgVGFrZSBubworbG9ja3MsIGluY3JlbWVudCBubyBjb3VudHMsIGxlYXZlIG5vIGZvb3RwcmludHMuCisKK1RoZSBSRUYtd2FsayBtZWNoYW5pc20gYWxyZWFkeSBkZXNjcmliZWQgY2VydGFpbmx5IGRvZXNuJ3QgZm9sbG93IHRoaXMKK3ByaW5jaXBsZSwgYnV0IHRoZW4gaXQgaXMgcmVhbGx5IGRlc2lnbmVkIHRvIHdvcmsgd2hlbiB0aGVyZSBtYXkgd2VsbAorYmUgb3RoZXIgdGhyZWFkcyBtb2RpZnlpbmcgdGhlIGRhdGEuICBSQ1Utd2FsaywgaW4gY29udHJhc3QsIGlzCitkZXNpZ25lZCBmb3IgdGhlIGNvbW1vbiBzaXR1YXRpb24gd2hlcmUgdGhlcmUgYXJlIGxvdHMgb2YgZnJlcXVlbnQKK3JlYWRlcnMgYW5kIG9ubHkgb2NjYXNpb25hbCB3cml0ZXJzLiAgVGhpcyBtYXkgbm90IGJlIGNvbW1vbiBpbiBhbGwKK3BhcnRzIG9mIHRoZSBmaWxlc3lzdGVtIHRyZWUsIGJ1dCBpbiBtYW55IHBhcnRzIGl0IHdpbGwgYmUuICBGb3IgdGhlCitvdGhlciBwYXJ0cyBpdCBpcyBpbXBvcnRhbnQgdGhhdCBSQ1Utd2FsayBjYW4gcXVpY2tseSBmYWxsIGJhY2sgdG8KK3VzaW5nIFJFRi13YWxrLgorCitQYXRobmFtZSBsb29rdXAgYWx3YXlzIHN0YXJ0cyBpbiBSQ1Utd2FsayBtb2RlIGJ1dCBvbmx5IHJlbWFpbnMgdGhlcmUKK2FzIGxvbmcgYXMgd2hhdCBpdCBpcyBsb29raW5nIGZvciBpcyBpbiB0aGUgY2FjaGUgYW5kIGlzIHN0YWJsZS4gIEl0CitkYW5jZXMgbGlnaHRseSBkb3duIHRoZSBjYWNoZWQgZmlsZXN5c3RlbSBpbWFnZSwgbGVhdmluZyBubyBmb290cHJpbnRzCithbmQgY2FyZWZ1bGx5IHdhdGNoaW5nIHdoZXJlIGl0IGlzLCB0byBiZSBzdXJlIGl0IGRvZXNuJ3QgdHJpcC4gIElmIGl0Citub3RpY2VzIHRoYXQgc29tZXRoaW5nIGhhcyBjaGFuZ2VkIG9yIGlzIGNoYW5naW5nLCBvciBpZiBzb21ldGhpbmcKK2lzbid0IGluIHRoZSBjYWNoZSwgdGhlbiBpdCB0cmllcyB0byBzdG9wIGdyYWNlZnVsbHkgYW5kIHN3aXRjaCB0bworUkVGLXdhbGsuCisKK1RoaXMgc3RvcHBpbmcgcmVxdWlyZXMgZ2V0dGluZyBhIGNvdW50ZWQgcmVmZXJlbmNlIG9uIHRoZSBjdXJyZW50CitgdmZzbW91bnRgIGFuZCBgZGVudHJ5YCwgYW5kIGVuc3VyaW5nIHRoYXQgdGhlc2UgYXJlIHN0aWxsIHZhbGlkIC0KK3RoYXQgYSBwYXRoIHdhbGsgd2l0aCBSRUYtd2FsayB3b3VsZCBoYXZlIGZvdW5kIHRoZSBzYW1lIGVudHJpZXMuCitUaGlzIGlzIGFuIGludmFyaWFudCB0aGF0IFJDVS13YWxrIG11c3QgZ3VhcmFudGVlLiAgSXQgY2FuIG9ubHkgbWFrZQorZGVjaXNpb25zLCBzdWNoIGFzIHNlbGVjdGluZyB0aGUgbmV4dCBzdGVwLCB0aGF0IGFyZSBkZWNpc2lvbnMgd2hpY2gKK1JFRi13YWxrIGNvdWxkIGFsc28gaGF2ZSBtYWRlIGlmIGl0IHdlcmUgd2Fsa2luZyBkb3duIHRoZSB0cmVlIGF0IHRoZQorc2FtZSB0aW1lLiAgSWYgdGhlIGdyYWNlZnVsIHN0b3Agc3VjY2VlZHMsIHRoZSByZXN0IG9mIHRoZSBwYXRoIGlzCitwcm9jZXNzZWQgd2l0aCB0aGUgcmVsaWFibGUsIGlmIHNsaWdodGx5IHNsdWdnaXNoLCBSRUYtd2Fsay4gIElmCitSQ1Utd2FsayBmaW5kcyBpdCBjYW5ub3Qgc3RvcCBncmFjZWZ1bGx5LCBpdCBzaW1wbHkgZ2l2ZXMgdXAgYW5kCityZXN0YXJ0cyBmcm9tIHRoZSB0b3Agd2l0aCBSRUYtd2Fsay4KKworVGhpcyBwYXR0ZXJuIG9mICJ0cnkgUkNVLXdhbGssIGlmIHRoYXQgZmFpbHMgdHJ5IFJFRi13YWxrIiBjYW4gYmUKK2NsZWFybHkgc2VlbiBpbiBmdW5jdGlvbnMgbGlrZSBgZmlsZW5hbWVfbG9va3VwKClgLAorYGZpbGVuYW1lX3BhcmVudGF0KClgLCBgZmlsZW5hbWVfbW91bnRwb2ludCgpYCwKK2Bkb19maWxwX29wZW4oKWAsIGFuZCBgZG9fZmlsZV9vcGVuX3Jvb3QoKWAuICBUaGVzZSBmaXZlCitjb3JyZXNwb25kIHJvdWdobHkgdG8gdGhlIGZvdXIgYHBhdGhfYCogZnVuY3Rpb25zIHdlIG1ldCBlYXJsaWVyLAorZWFjaCBvZiB3aGljaCBjYWxscyBgbGlua19wYXRoX3dhbGsoKWAuICBUaGUgYHBhdGhfKmAgZnVuY3Rpb25zIGFyZQorY2FsbGVkIHVzaW5nIGRpZmZlcmVudCBtb2RlIGZsYWdzIHVudGlsIGEgbW9kZSBpcyBmb3VuZCB3aGljaCB3b3Jrcy4KK1RoZXkgYXJlIGZpcnN0IGNhbGxlZCB3aXRoIGBMT09LVVBfUkNVYCBzZXQgdG8gcmVxdWVzdCAiUkNVLXdhbGsiLiAgSWYKK3RoYXQgZmFpbHMgd2l0aCB0aGUgZXJyb3IgYEVDSElMRGAgdGhleSBhcmUgY2FsbGVkIGFnYWluIHdpdGggbm8KK3NwZWNpYWwgZmxhZyB0byByZXF1ZXN0ICJSRUYtd2FsayIuICBJZiBlaXRoZXIgb2YgdGhvc2UgcmVwb3J0IHRoZQorZXJyb3IgYEVTVEFMRWAgYSBmaW5hbCBhdHRlbXB0IGlzIG1hZGUgd2l0aCBgTE9PS1VQX1JFVkFMYCBzZXQgKGFuZCBubworYExPT0tVUF9SQ1VgKSB0byBlbnN1cmUgdGhhdCBlbnRyaWVzIGZvdW5kIGluIHRoZSBjYWNoZSBhcmUgZm9yY2libHkKK3JldmFsaWRhdGVkIC0gbm9ybWFsbHkgZW50cmllcyBhcmUgb25seSByZXZhbGlkYXRlZCBpZiB0aGUgZmlsZXN5c3RlbQorZGV0ZXJtaW5lcyB0aGF0IHRoZXkgYXJlIHRvbyBvbGQgdG8gdHJ1c3QuCisKK1RoZSBgTE9PS1VQX1JDVWAgYXR0ZW1wdCBtYXkgZHJvcCB0aGF0IGZsYWcgaW50ZXJuYWxseSBhbmQgc3dpdGNoIHRvCitSRUYtd2FsaywgYnV0IHdpbGwgbmV2ZXIgdGhlbiB0cnkgdG8gc3dpdGNoIGJhY2sgdG8gUkNVLXdhbGsuICBQbGFjZXMKK3RoYXQgdHJpcCB1cCBSQ1Utd2FsayBhcmUgbXVjaCBtb3JlIGxpa2VseSB0byBiZSBuZWFyIHRoZSBsZWF2ZXMgYW5kCitzbyBpdCBpcyB2ZXJ5IHVubGlrZWx5IHRoYXQgdGhlcmUgd2lsbCBiZSBtdWNoLCBpZiBhbnksIGJlbmVmaXQgZnJvbQorc3dpdGNoaW5nIGJhY2suCisKK1JDVSBhbmQgc2VxbG9ja3M6IGZhc3QgYW5kIGxpZ2h0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSQ1UgaXMsIHVuc3VycHJpc2luZ2x5LCBjcml0aWNhbCB0byBSQ1Utd2FsayBtb2RlLiAgVGhlCitgcmN1X3JlYWRfbG9jaygpYCBpcyBoZWxkIGZvciB0aGUgZW50aXJlIHRpbWUgdGhhdCBSQ1Utd2FsayBpcyB3YWxraW5nCitkb3duIGEgcGF0aC4gIFRoZSBwYXJ0aWN1bGFyIGd1YXJhbnRlZSBpdCBwcm92aWRlcyBpcyB0aGF0IHRoZSBrZXkKK2RhdGEgc3RydWN0dXJlcyAtIGRlbnRyaWVzLCBpbm9kZXMsIHN1cGVyX2Jsb2NrcywgYW5kIG1vdW50cyAtIHdpbGwKK25vdCBiZSBmcmVlZCB3aGlsZSB0aGUgbG9jayBpcyBoZWxkLiAgVGhleSBtaWdodCBiZSB1bmxpbmtlZCBvcgoraW52YWxpZGF0ZWQgaW4gb25lIHdheSBvciBhbm90aGVyLCBidXQgdGhlIG1lbW9yeSB3aWxsIG5vdCBiZQorcmVwdXJwb3NlZCBzbyB2YWx1ZXMgaW4gdmFyaW91cyBmaWVsZHMgd2lsbCBzdGlsbCBiZSBtZWFuaW5nZnVsLiAgVGhpcworaXMgdGhlIG9ubHkgZ3VhcmFudGVlIHRoYXQgUkNVIHByb3ZpZGVzOyBldmVyeXRoaW5nIGVsc2UgaXMgZG9uZSB1c2luZworc2VxbG9ja3MuCisKK0FzIHdlIHNhdyBhYm92ZSwgUkVGLXdhbGsgaG9sZHMgYSBjb3VudGVkIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudAorZGVudHJ5IGFuZCB0aGUgY3VycmVudCB2ZnNtb3VudCwgYW5kIGRvZXMgbm90IHJlbGVhc2UgdGhvc2UgcmVmZXJlbmNlcworYmVmb3JlIHRha2luZyByZWZlcmVuY2VzIHRvIHRoZSAibmV4dCIgZGVudHJ5IG9yIHZmc21vdW50LiAgSXQgYWxzbworc29tZXRpbWVzIHRha2VzIHRoZSBgZF9sb2NrYCBzcGlubG9jay4gIFRoZXNlIHJlZmVyZW5jZXMgYW5kIGxvY2tzIGFyZQordGFrZW4gdG8gcHJldmVudCBjZXJ0YWluIGNoYW5nZXMgZnJvbSBoYXBwZW5pbmcuICBSQ1Utd2FsayBtdXN0IG5vdAordGFrZSB0aG9zZSByZWZlcmVuY2VzIG9yIGxvY2tzIGFuZCBzbyBjYW5ub3QgcHJldmVudCBzdWNoIGNoYW5nZXMuCitJbnN0ZWFkLCBpdCBjaGVja3MgdG8gc2VlIGlmIGEgY2hhbmdlIGhhcyBiZWVuIG1hZGUsIGFuZCBhYm9ydHMgb3IKK3JldHJpZXMgaWYgaXQgaGFzLgorCitUbyBwcmVzZXJ2ZSB0aGUgaW52YXJpYW50IG1lbnRpb25lZCBhYm92ZSAodGhhdCBSQ1Utd2FsayBtYXkgb25seSBtYWtlCitkZWNpc2lvbnMgdGhhdCBSRUYtd2FsayBjb3VsZCBoYXZlIG1hZGUpLCBpdCBtdXN0IG1ha2UgdGhlIGNoZWNrcyBhdAorb3IgbmVhciB0aGUgc2FtZSBwbGFjZXMgdGhhdCBSRUYtd2FsayBob2xkcyB0aGUgcmVmZXJlbmNlcy4gIFNvLCB3aGVuCitSRUYtd2FsayBpbmNyZW1lbnRzIGEgcmVmZXJlbmNlIGNvdW50IG9yIHRha2VzIGEgc3BpbmxvY2ssIFJDVS13YWxrCitzYW1wbGVzIHRoZSBzdGF0dXMgb2YgYSBzZXFsb2NrIHVzaW5nIGByZWFkX3NlcWNvdW50X2JlZ2luKClgIG9yIGEKK3NpbWlsYXIgZnVuY3Rpb24uICBXaGVuIFJFRi13YWxrIGRlY3JlbWVudHMgdGhlIGNvdW50IG9yIGRyb3BzIHRoZQorbG9jaywgUkNVLXdhbGsgY2hlY2tzIGlmIHRoZSBzYW1wbGVkIHN0YXR1cyBpcyBzdGlsbCB2YWxpZCB1c2luZworYHJlYWRfc2VxY291bnRfcmV0cnkoKWAgb3Igc2ltaWxhci4KKworSG93ZXZlciwgdGhlcmUgaXMgYSBsaXR0bGUgYml0IG1vcmUgdG8gc2VxbG9ja3MgdGhhbiB0aGF0LiAgSWYKK1JDVS13YWxrIGFjY2Vzc2VzIHR3byBkaWZmZXJlbnQgZmllbGRzIGluIGEgc2VxbG9jay1wcm90ZWN0ZWQKK3N0cnVjdHVyZSwgb3IgYWNjZXNzZXMgdGhlIHNhbWUgZmllbGQgdHdpY2UsIHRoZXJlIGlzIG5vIGEgcHJpb3JpCitndWFyYW50ZWUgb2YgYW55IGNvbnNpc3RlbmN5IGJldHdlZW4gdGhvc2UgYWNjZXNzZXMuICBXaGVuIGNvbnNpc3RlbmN5CitpcyBuZWVkZWQgLSB3aGljaCBpdCB1c3VhbGx5IGlzIC0gUkNVLXdhbGsgbXVzdCB0YWtlIGEgY29weSBhbmQgdGhlbgordXNlIGByZWFkX3NlcWNvdW50X3JldHJ5KClgIHRvIHZhbGlkYXRlIHRoYXQgY29weS4KKworYHJlYWRfc2VxY291bnRfcmV0cnkoKWAgbm90IG9ubHkgY2hlY2tzIHRoZSBzZXF1ZW5jZSBudW1iZXIsIGJ1dCBhbHNvCitpbXBvc2VzIGEgbWVtb3J5IGJhcnJpZXIgc28gdGhhdCBubyBtZW1vcnktcmVhZCBpbnN0cnVjdGlvbiBmcm9tCisqYmVmb3JlKiB0aGUgY2FsbCBjYW4gYmUgZGVsYXllZCB1bnRpbCAqYWZ0ZXIqIHRoZSBjYWxsLCBlaXRoZXIgYnkgdGhlCitDUFUgb3IgYnkgdGhlIGNvbXBpbGVyLiAgQSBzaW1wbGUgZXhhbXBsZSBvZiB0aGlzIGNhbiBiZSBzZWVuIGluCitgc2xvd19kZW50cnlfY21wKClgIHdoaWNoLCBmb3IgZmlsZXN5c3RlbXMgd2hpY2ggZG8gbm90IHVzZSBzaW1wbGUKK2J5dGUtd2lzZSBuYW1lIGVxdWFsaXR5LCBjYWxscyBpbnRvIHRoZSBmaWxlc3lzdGVtIHRvIGNvbXBhcmUgYSBuYW1lCithZ2FpbnN0IGEgZGVudHJ5LiAgVGhlIGxlbmd0aCBhbmQgbmFtZSBwb2ludGVyIGFyZSBjb3BpZWQgaW50byBsb2NhbAordmFyaWFibGVzLCB0aGVuIGByZWFkX3NlcWNvdW50X3JldHJ5KClgIGlzIGNhbGxlZCB0byBjb25maXJtIHRoZSB0d28KK2FyZSBjb25zaXN0ZW50LCBhbmQgb25seSB0aGVuIGlzIGAtPmRfY29tcGFyZSgpYCBjYWxsZWQuICBXaGVuCitzdGFuZGFyZCBmaWxlbmFtZSBjb21wYXJpc29uIGlzIHVzZWQsIGBkZW50cnlfY21wKClgIGlzIGNhbGxlZAoraW5zdGVhZC4gIE5vdGFibHkgaXQgZG9lcyBfbm90XyB1c2UgYHJlYWRfc2VxY291bnRfcmV0cnkoKWAsIGJ1dAoraW5zdGVhZCBoYXMgYSBsYXJnZSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHRoZSBjb25zaXN0ZW5jeSBndWFyYW50ZWUKK2lzbid0IG5lY2Vzc2FyeS4gIEEgc3Vic2VxdWVudCBgcmVhZF9zZXFjb3VudF9yZXRyeSgpYCB3aWxsIGJlCitzdWZmaWNpZW50IHRvIGNhdGNoIGFueSBwcm9ibGVtIHRoYXQgY291bGQgb2NjdXIgYXQgdGhpcyBwb2ludC4KKworV2l0aCB0aGF0IGxpdHRsZSByZWZyZXNoZXIgb24gc2VxbG9ja3Mgb3V0IG9mIHRoZSB3YXkgd2UgY2FuIGxvb2sgYXQKK3RoZSBiaWdnZXIgcGljdHVyZSBvZiBob3cgUkNVLXdhbGsgdXNlcyBzZXFsb2Nrcy4KKworIyMjIGBtb3VudF9sb2NrYCBhbmQgYG5kLT5tX3NlcWAgIyMjCisKK1dlIGFscmVhZHkgbWV0IHRoZSBgbW91bnRfbG9ja2Agc2VxbG9jayB3aGVuIFJFRi13YWxrIHVzZWQgaXQgdG8KK2Vuc3VyZSB0aGF0IGNyb3NzaW5nIGEgbW91bnQgcG9pbnQgaXMgcGVyZm9ybWVkIHNhZmVseS4gIFJDVS13YWxrIHVzZXMKK2l0IGZvciB0aGF0IHRvbywgYnV0IGZvciBxdWl0ZSBhIGJpdCBtb3JlLgorCitJbnN0ZWFkIG9mIHRha2luZyBhIGNvdW50ZWQgcmVmZXJlbmNlIHRvIGVhY2ggYHZmc21vdW50YCBhcyBpdAorZGVzY2VuZHMgdGhlIHRyZWUsIFJDVS13YWxrIHNhbXBsZXMgdGhlIHN0YXRlIG9mIGBtb3VudF9sb2NrYCBhdCB0aGUKK3N0YXJ0IG9mIHRoZSB3YWxrIGFuZCBzdG9yZXMgdGhpcyBpbml0aWFsIHNlcXVlbmNlIG51bWJlciBpbiB0aGUKK2BzdHJ1Y3QgbmFtZWlkYXRhYCBpbiB0aGUgYG1fc2VxYCBmaWVsZC4gIFRoaXMgb25lIGxvY2sgYW5kIG9uZQorc2VxdWVuY2UgbnVtYmVyIGFyZSB1c2VkIHRvIHZhbGlkYXRlIGFsbCBhY2Nlc3NlcyB0byBhbGwgYHZmc21vdW50c2AsCithbmQgYWxsIG1vdW50IHBvaW50IGNyb3NzaW5ncy4gIEFzIGNoYW5nZXMgdG8gdGhlIG1vdW50IHRhYmxlIGFyZQorcmVsYXRpdmVseSByYXJlLCBpdCBpcyByZWFzb25hYmxlIHRvIGZhbGwgYmFjayBvbiBSRUYtd2FsayBhbnkgdGltZQordGhhdCBhbnkgIm1vdW50IiBvciAidW5tb3VudCIgaGFwcGVucy4KKworYG1fc2VxYCBpcyBjaGVja2VkICh1c2luZyBgcmVhZF9zZXFyZXRyeSgpYCkgYXQgdGhlIGVuZCBvZiBhbiBSQ1Utd2Fsaworc2VxdWVuY2UsIHdoZXRoZXIgc3dpdGNoaW5nIHRvIFJFRi13YWxrIGZvciB0aGUgcmVzdCBvZiB0aGUgcGF0aCBvcgord2hlbiB0aGUgZW5kIG9mIHRoZSBwYXRoIGlzIHJlYWNoZWQuICBJdCBpcyBhbHNvIGNoZWNrZWQgd2hlbiBzdGVwcGluZworZG93biBvdmVyIGEgbW91bnQgcG9pbnQgKGluIGBfX2ZvbGxvd19tb3VudF9yY3UoKWApIG9yIHVwIChpbgorYGZvbGxvd19kb3Rkb3RfcmN1KClgKS4gIElmIGl0IGlzIGV2ZXIgZm91bmQgdG8gaGF2ZSBjaGFuZ2VkLCB0aGUKK3dob2xlIFJDVS13YWxrIHNlcXVlbmNlIGlzIGFib3J0ZWQgYW5kIHRoZSBwYXRoIGlzIHByb2Nlc3NlZCBhZ2FpbiBieQorUkVGLXdhbGsuCisKK0lmIFJDVS13YWxrIGZpbmRzIHRoYXQgYG1vdW50X2xvY2tgIGhhc24ndCBjaGFuZ2VkIHRoZW4gaXQgY2FuIGJlIHN1cmUKK3RoYXQsIGhhZCBSRUYtd2FsayB0YWtlbiBjb3VudGVkIHJlZmVyZW5jZXMgb24gZWFjaCB2ZnNtb3VudCwgdGhlCityZXN1bHRzIHdvdWxkIGhhdmUgYmVlbiB0aGUgc2FtZS4gIFRoaXMgZW5zdXJlcyB0aGUgaW52YXJpYW50IGhvbGRzLAorYXQgbGVhc3QgZm9yIHZmc21vdW50IHN0cnVjdHVyZXMuCisKKyMjIyBgZGVudHJ5LT5kX3NlcWAgYW5kIGBuZC0+c2VxYC4gIyMjCisKK0luIHBsYWNlIG9mIHRha2luZyBhIGNvdW50IG9yIGxvY2sgb24gYGRfcmVmbG9ja2AsIFJDVS13YWxrIHNhbXBsZXMKK3RoZSBwZXItZGVudHJ5IGBkX3NlcWAgc2VxbG9jaywgYW5kIHN0b3JlcyB0aGUgc2VxdWVuY2UgbnVtYmVyIGluIHRoZQorYHNlcWAgZmllbGQgb2YgdGhlIG5hbWVpZGF0YSBzdHJ1Y3R1cmUsIHNvIGBuZC0+c2VxYCBzaG91bGQgYWx3YXlzIGJlCit0aGUgY3VycmVudCBzZXF1ZW5jZSBudW1iZXIgb2YgYG5kLT5kZW50cnlgLiAgVGhpcyBudW1iZXIgbmVlZHMgdG8gYmUKK3JldmFsaWRhdGVkIGFmdGVyIGNvcHlpbmcsIGFuZCBiZWZvcmUgdXNpbmcsIHRoZSBuYW1lLCBwYXJlbnQsIG9yCitpbm9kZSBvZiB0aGUgZGVudHJ5LgorCitUaGUgaGFuZGxpbmcgb2YgdGhlIG5hbWUgd2UgaGF2ZSBhbHJlYWR5IGxvb2tlZCBhdCwgYW5kIHRoZSBwYXJlbnQgaXMKK29ubHkgYWNjZXNzZWQgaW4gYGZvbGxvd19kb3Rkb3RfcmN1KClgIHdoaWNoIGZhaXJseSB0cml2aWFsbHkgZm9sbG93cwordGhlIHJlcXVpcmVkIHBhdHRlcm4sIHRob3VnaCBpdCBkb2VzIHNvIGZvciB0aHJlZSBkaWZmZXJlbnQgY2FzZXMuCisKK1doZW4gbm90IGF0IGEgbW91bnQgcG9pbnQsIGBkX3BhcmVudGAgaXMgZm9sbG93ZWQgYW5kIGl0cyBgZF9zZXFgIGlzCitjb2xsZWN0ZWQuICBXaGVuIHdlIGFyZSBhdCBhIG1vdW50IHBvaW50LCB3ZSBpbnN0ZWFkIGZvbGxvdyB0aGUKK2BtbnQtPm1udF9tb3VudHBvaW50YCBsaW5rIHRvIGdldCBhIG5ldyBkZW50cnkgYW5kIGNvbGxlY3QgaXRzCitgZF9zZXFgLiAgVGhlbiwgYWZ0ZXIgZmluYWxseSBmaW5kaW5nIGEgYGRfcGFyZW50YCB0byBmb2xsb3csIHdlIG11c3QKK2NoZWNrIGlmIHdlIGhhdmUgbGFuZGVkIG9uIGEgbW91bnQgcG9pbnQgYW5kLCBpZiBzbywgbXVzdCBmaW5kIHRoYXQKK21vdW50IHBvaW50IGFuZCBmb2xsb3cgdGhlIGBtbnQtPm1udF9yb290YCBsaW5rLiAgVGhpcyB3b3VsZCBpbXBseSBhCitzb21ld2hhdCB1bnVzdWFsLCBidXQgY2VydGFpbmx5IHBvc3NpYmxlLCBjaXJjdW1zdGFuY2Ugd2hlcmUgdGhlCitzdGFydGluZyBwb2ludCBvZiB0aGUgcGF0aCBsb29rdXAgd2FzIGluIHBhcnQgb2YgdGhlIGZpbGVzeXN0ZW0gdGhhdAord2FzIG1vdW50ZWQgb24sIGFuZCBzbyBub3QgdmlzaWJsZSBmcm9tIHRoZSByb290LgorCitUaGUgaW5vZGUgcG9pbnRlciwgc3RvcmVkIGluIGAtPmRfaW5vZGVgLCBpcyBhIGxpdHRsZSBtb3JlCitpbnRlcmVzdGluZy4gIFRoZSBpbm9kZSB3aWxsIGFsd2F5cyBuZWVkIHRvIGJlIGFjY2Vzc2VkIGF0IGxlYXN0Cit0d2ljZSwgb25jZSB0byBkZXRlcm1pbmUgaWYgaXQgaXMgTlVMTCBhbmQgb25jZSB0byB2ZXJpZnkgYWNjZXNzCitwZXJtaXNzaW9ucy4gIFN5bWxpbmsgaGFuZGxpbmcgcmVxdWlyZXMgYSB2YWxpZGF0ZWQgaW5vZGUgcG9pbnRlciB0b28uCitSYXRoZXIgdGhhbiByZXZhbGlkYXRpbmcgb24gZWFjaCBhY2Nlc3MsIGEgY29weSBpcyBtYWRlIG9uIHRoZSBmaXJzdAorYWNjZXNzIGFuZCBpdCBpcyBzdG9yZWQgaW4gdGhlIGBpbm9kZWAgZmllbGQgb2YgYG5hbWVpZGF0YWAgZnJvbSB3aGVyZQoraXQgY2FuIGJlIHNhZmVseSBhY2Nlc3NlZCB3aXRob3V0IGZ1cnRoZXIgdmFsaWRhdGlvbi4KKworYGxvb2t1cF9mYXN0KClgIGlzIHRoZSBvbmx5IGxvb2t1cCByb3V0aW5lIHRoYXQgaXMgdXNlZCBpbiBSQ1UtbW9kZSwKK2Bsb29rdXBfc2xvdygpYCBiZWluZyB0b28gc2xvdyBhbmQgcmVxdWlyaW5nIGxvY2tzLiAgSXQgaXMgaW4KK2Bsb29rdXBfZmFzdCgpYCB0aGF0IHdlIGZpbmQgdGhlIGltcG9ydGFudCAiaGFuZCBvdmVyIGhhbmQiIHRyYWNraW5nCitvZiB0aGUgY3VycmVudCBkZW50cnkuCisKK1RoZSBjdXJyZW50IGBkZW50cnlgIGFuZCBjdXJyZW50IGBzZXFgIG51bWJlciBhcmUgcGFzc2VkIHRvCitgX19kX2xvb2t1cF9yY3UoKWAgd2hpY2gsIG9uIHN1Y2Nlc3MsIHJldHVybnMgYSBuZXcgYGRlbnRyeWAgYW5kIGEKK25ldyBgc2VxYCBudW1iZXIuICBgbG9va3VwX2Zhc3QoKWAgdGhlbiBjb3BpZXMgdGhlIGlub2RlIHBvaW50ZXIgYW5kCityZXZhbGlkYXRlcyB0aGUgbmV3IGBzZXFgIG51bWJlci4gIEl0IHRoZW4gdmFsaWRhdGVzIHRoZSBvbGQgYGRlbnRyeWAKK3dpdGggdGhlIG9sZCBgc2VxYCBudW1iZXIgb25lIGxhc3QgdGltZSBhbmQgb25seSB0aGVuIGNvbnRpbnVlcy4gIFRoaXMKK3Byb2Nlc3Mgb2YgZ2V0dGluZyB0aGUgYHNlcWAgbnVtYmVyIG9mIHRoZSBuZXcgZGVudHJ5IGFuZCB0aGVuCitjaGVja2luZyB0aGUgYHNlcWAgbnVtYmVyIG9mIHRoZSBvbGQgZXhhY3RseSBtaXJyb3JzIHRoZSBwcm9jZXNzIG9mCitnZXR0aW5nIGEgY291bnRlZCByZWZlcmVuY2UgdG8gdGhlIG5ldyBkZW50cnkgYmVmb3JlIGRyb3BwaW5nIHRoYXQgZm9yCit0aGUgb2xkIGRlbnRyeSB3aGljaCB3ZSBzYXcgaW4gUkVGLXdhbGsuCisKKyMjIyBObyBgaW5vZGUtPmlfbXV0ZXhgIG9yIGV2ZW4gYHJlbmFtZV9sb2NrYCAjIyMKKworQSBtdXRleCBpcyBhIGZhaXJseSBoZWF2eXdlaWdodCBsb2NrIHRoYXQgY2FuIG9ubHkgYmUgdGFrZW4gd2hlbiBpdCBpcworcGVybWlzc2libGUgdG8gc2xlZXAuICBBcyBgcmN1X3JlYWRfbG9jaygpYCBmb3JiaWRzIHNsZWVwaW5nLAorYGlub2RlLT5pX211dGV4YCBwbGF5cyBubyByb2xlIGluIFJDVS13YWxrLiAgSWYgc29tZSBvdGhlciB0aHJlYWQgZG9lcwordGFrZSBgaV9tdXRleGAgYW5kIG1vZGlmaWVzIHRoZSBkaXJlY3RvcnkgaW4gYSB3YXkgdGhhdCBSQ1Utd2FsayBuZWVkcwordG8gbm90aWNlLCB0aGUgcmVzdWx0IHdpbGwgYmUgZWl0aGVyIHRoYXQgUkNVLXdhbGsgZmFpbHMgdG8gZmluZCB0aGUKK2RlbnRyeSB0aGF0IGl0IGlzIGxvb2tpbmcgZm9yLCBvciBpdCB3aWxsIGZpbmQgYSBkZW50cnkgd2hpY2gKK2ByZWFkX3NlcXJldHJ5KClgIHdvbid0IHZhbGlkYXRlLiAgSW4gZWl0aGVyIGNhc2UgaXQgd2lsbCBkcm9wIGRvd24gdG8KK1JFRi13YWxrIG1vZGUgd2hpY2ggY2FuIHRha2Ugd2hhdGV2ZXIgbG9ja3MgYXJlIG5lZWRlZC4KKworVGhvdWdoIGByZW5hbWVfbG9ja2AgY291bGQgYmUgdXNlZCBieSBSQ1Utd2FsayBhcyBpdCBkb2Vzbid0IHJlcXVpcmUKK2FueSBzbGVlcGluZywgUkNVLXdhbGsgZG9lc24ndCBib3RoZXIuICBSRUYtd2FsayB1c2VzIGByZW5hbWVfbG9ja2AgdG8KK3Byb3RlY3QgYWdhaW5zdCB0aGUgcG9zc2liaWxpdHkgb2YgaGFzaCBjaGFpbnMgaW4gdGhlIGRjYWNoZSBjaGFuZ2luZword2hpbGUgdGhleSBhcmUgYmVpbmcgc2VhcmNoZWQuICBUaGlzIGNhbiByZXN1bHQgaW4gZmFpbGluZyB0byBmaW5kCitzb21ldGhpbmcgdGhhdCBhY3R1YWxseSBpcyB0aGVyZS4gIFdoZW4gUkNVLXdhbGsgZmFpbHMgdG8gZmluZAorc29tZXRoaW5nIGluIHRoZSBkZW50cnkgY2FjaGUsIHdoZXRoZXIgaXQgaXMgcmVhbGx5IHRoZXJlIG9yIG5vdCwgaXQKK2FscmVhZHkgZHJvcHMgZG93biB0byBSRUYtd2FsayBhbmQgdHJpZXMgYWdhaW4gd2l0aCBhcHByb3ByaWF0ZQorbG9ja2luZy4gIFRoaXMgbmVhdGx5IGhhbmRsZXMgYWxsIGNhc2VzLCBzbyBhZGRpbmcgZXh0cmEgY2hlY2tzIG9uCityZW5hbWVfbG9jayB3b3VsZCBicmluZyBubyBzaWduaWZpY2FudCB2YWx1ZS4KKworYHVubGF6eSB3YWxrKClgIGFuZCBgY29tcGxldGVfd2FsaygpYAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGF0ICJkcm9wcGluZyBkb3duIHRvIFJFRi13YWxrIiB0eXBpY2FsbHkgaW52b2x2ZXMgYSBjYWxsIHRvCitgdW5sYXp5X3dhbGsoKWAsIHNvIG5hbWVkIGJlY2F1c2UgIlJDVS13YWxrIiBpcyBhbHNvIHNvbWV0aW1lcworcmVmZXJyZWQgdG8gYXMgImxhenkgd2FsayIuICBgdW5sYXp5X3dhbGsoKWAgaXMgY2FsbGVkIHdoZW4KK2ZvbGxvd2luZyB0aGUgcGF0aCBkb3duIHRvIHRoZSBjdXJyZW50IHZmc21vdW50L2RlbnRyeSBwYWlyIHNlZW1zIHRvCitoYXZlIHByb2NlZWRlZCBzdWNjZXNzZnVsbHksIGJ1dCB0aGUgbmV4dCBzdGVwIGlzIHByb2JsZW1hdGljLiAgVGhpcworY2FuIGhhcHBlbiBpZiB0aGUgbmV4dCBuYW1lIGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgZGNhY2hlLCBpZgorcGVybWlzc2lvbiBjaGVja2luZyBvciBuYW1lIHJldmFsaWRhdGlvbiBjb3VsZG4ndCBiZSBhY2hpZXZlZCB3aGlsZQordGhlIGByY3VfcmVhZF9sb2NrKClgIGlzIGhlbGQgKHdoaWNoIGZvcmJpZHMgc2xlZXBpbmcpLCBpZiBhbgorYXV0b21vdW50IHBvaW50IGlzIGZvdW5kLCBvciBpbiBhIGNvdXBsZSBvZiBjYXNlcyBpbnZvbHZpbmcgc3ltbGlua3MuCitJdCBpcyBhbHNvIGNhbGxlZCBmcm9tIGBjb21wbGV0ZV93YWxrKClgIHdoZW4gdGhlIGxvb2t1cCBoYXMgcmVhY2hlZAordGhlIGZpbmFsIGNvbXBvbmVudCwgb3IgdGhlIHZlcnkgZW5kIG9mIHRoZSBwYXRoLCBkZXBlbmRpbmcgb24gd2hpY2gKK3BhcnRpY3VsYXIgZmxhdm9yIG9mIGxvb2t1cCBpcyB1c2VkLgorCitPdGhlciByZWFzb25zIGZvciBkcm9wcGluZyBvdXQgb2YgUkNVLXdhbGsgdGhhdCBkbyBub3QgdHJpZ2dlciBhIGNhbGwKK3RvIGB1bmxhenlfd2FsaygpYCBhcmUgd2hlbiBzb21lIGluY29uc2lzdGVuY3kgaXMgZm91bmQgdGhhdCBjYW5ub3QgYmUKK2hhbmRsZWQgaW1tZWRpYXRlbHksIHN1Y2ggYXMgYG1vdW50X2xvY2tgIG9yIG9uZSBvZiB0aGUgYGRfc2VxYAorc2VxbG9ja3MgcmVwb3J0aW5nIGEgY2hhbmdlLiAgSW4gdGhlc2UgY2FzZXMgdGhlIHJlbGV2YW50IGZ1bmN0aW9uCit3aWxsIHJldHVybiBgLUVDSElMRGAgd2hpY2ggd2lsbCBwZXJjb2xhdGUgdXAgdW50aWwgaXQgdHJpZ2dlcnMgYSBuZXcKK2F0dGVtcHQgZnJvbSB0aGUgdG9wIHVzaW5nIFJFRi13YWxrLgorCitGb3IgdGhvc2UgY2FzZXMgd2hlcmUgYHVubGF6eV93YWxrKClgIGlzIGFuIG9wdGlvbiwgaXQgZXNzZW50aWFsbHkKK3Rha2VzIGEgcmVmZXJlbmNlIG9uIGVhY2ggb2YgdGhlIHBvaW50ZXJzIHRoYXQgaXQgaG9sZHMgKHZmc21vdW50LAorZGVudHJ5LCBhbmQgcG9zc2libHkgc29tZSBzeW1ib2xpYyBsaW5rcykgYW5kIHRoZW4gdmVyaWZpZXMgdGhhdCB0aGUKK3JlbGV2YW50IHNlcWxvY2tzIGhhdmUgbm90IGJlZW4gY2hhbmdlZC4gIElmIHRoZXJlIGhhdmUgYmVlbiBjaGFuZ2VzLAoraXQsIHRvbywgYWJvcnRzIHdpdGggYC1FQ0hJTERgLCBvdGhlcndpc2UgdGhlIHRyYW5zaXRpb24gdG8gUkVGLXdhbGsKK2hhcyBiZWVuIGEgc3VjY2VzcyBhbmQgdGhlIGxvb2t1cCBwcm9jZXNzIGNvbnRpbnVlcy4KKworVGFraW5nIGEgcmVmZXJlbmNlIG9uIHRob3NlIHBvaW50ZXJzIGlzIG5vdCBxdWl0ZSBhcyBzaW1wbGUgYXMganVzdAoraW5jcmVtZW50aW5nIGEgY291bnRlci4gIFRoYXQgd29ya3MgdG8gdGFrZSBhIHNlY29uZCByZWZlcmVuY2UgaWYgeW91CithbHJlYWR5IGhhdmUgb25lIChvZnRlbiBpbmRpcmVjdGx5IHRocm91Z2ggYW5vdGhlciBvYmplY3QpLCBidXQgaXQKK2lzbid0IHN1ZmZpY2llbnQgaWYgeW91IGRvbid0IGFjdHVhbGx5IGhhdmUgYSBjb3VudGVkIHJlZmVyZW5jZSBhdAorYWxsLiAgRm9yIGBkZW50cnktPmRfbG9ja3JlZmAsIGl0IGlzIHNhZmUgdG8gaW5jcmVtZW50IHRoZSByZWZlcmVuY2UKK2NvdW50ZXIgdG8gZ2V0IGEgcmVmZXJlbmNlIHVubGVzcyBpdCBoYXMgYmVlbiBleHBsaWNpdGx5IG1hcmtlZCBhcworImRlYWQiIHdoaWNoIGludm9sdmVzIHNldHRpbmcgdGhlIGNvdW50ZXIgdG8gYC0xMjhgLgorYGxvY2tyZWZfZ2V0X25vdF9kZWFkKClgIGFjaGlldmVzIHRoaXMuCisKK0ZvciBgbW50LT5tbnRfY291bnRgIGl0IGlzIHNhZmUgdG8gdGFrZSBhIHJlZmVyZW5jZSBhcyBsb25nIGFzCitgbW91bnRfbG9ja2AgaXMgdGhlbiB1c2VkIHRvIHZhbGlkYXRlIHRoZSByZWZlcmVuY2UuICBJZiB0aGF0Cit2YWxpZGF0aW9uIGZhaWxzLCBpdCBtYXkgKm5vdCogYmUgc2FmZSB0byBqdXN0IGRyb3AgdGhhdCByZWZlcmVuY2UgaW4KK3RoZSBzdGFuZGFyZCB3YXkgb2YgY2FsbGluZyBgbW50X3B1dCgpYCAtIGFuIHVubW91bnQgbWF5IGhhdmUKK3Byb2dyZXNzZWQgdG9vIGZhci4gIFNvIHRoZSBjb2RlIGluIGBsZWdpdGltaXplX21udCgpYCwgd2hlbiBpdAorZmluZHMgdGhhdCB0aGUgcmVmZXJlbmNlIGl0IGdvdCBtaWdodCBub3QgYmUgc2FmZSwgY2hlY2tzIHRoZQorYE1OVF9TWU5DX1VNT1VOVGAgZmxhZyB0byBkZXRlcm1pbmUgaWYgYSBzaW1wbGUgYG1udF9wdXQoKWAgaXMKK2NvcnJlY3QsIG9yIGlmIGl0IHNob3VsZCBqdXN0IGRlY3JlbWVudCB0aGUgY291bnQgYW5kIHByZXRlbmQgbm9uZSBvZgordGhpcyBldmVyIGhhcHBlbmVkLgorCitUYWtpbmcgY2FyZSBpbiBmaWxlc3lzdGVtcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JDVS13YWxrIGRlcGVuZHMgYWxtb3N0IGVudGlyZWx5IG9uIGNhY2hlZCBpbmZvcm1hdGlvbiBhbmQgb2Z0ZW4gd2lsbAorbm90IGNhbGwgaW50byB0aGUgZmlsZXN5c3RlbSBhdCBhbGwuICBIb3dldmVyIHRoZXJlIGFyZSB0d28gcGxhY2VzLAorYmVzaWRlcyB0aGUgYWxyZWFkeS1tZW50aW9uZWQgY29tcG9uZW50LW5hbWUgY29tcGFyaXNvbiwgd2hlcmUgdGhlCitmaWxlIHN5c3RlbSBtaWdodCBiZSBpbmNsdWRlZCBpbiBSQ1Utd2FsaywgYW5kIGl0IG11c3Qga25vdyB0byBiZQorY2FyZWZ1bC4KKworSWYgdGhlIGZpbGVzeXN0ZW0gaGFzIG5vbi1zdGFuZGFyZCBwZXJtaXNzaW9uLWNoZWNraW5nIHJlcXVpcmVtZW50cyAtCitzdWNoIGFzIGEgbmV0d29ya2VkIGZpbGVzeXN0ZW0gd2hpY2ggbWF5IG5lZWQgdG8gY2hlY2sgd2l0aCB0aGUgc2VydmVyCistIHRoZSBgaV9vcC0+cGVybWlzc2lvbmAgaW50ZXJmYWNlIG1pZ2h0IGJlIGNhbGxlZCBkdXJpbmcgUkNVLXdhbGsuCitJbiB0aGlzIGNhc2UgYW4gZXh0cmEgImBNQVlfTk9UX0JMT0NLYCIgZmxhZyBpcyBwYXNzZWQgc28gdGhhdCBpdAora25vd3Mgbm90IHRvIHNsZWVwLCBidXQgdG8gcmV0dXJuIGAtRUNISUxEYCBpZiBpdCBjYW5ub3QgY29tcGxldGUKK3Byb21wdGx5LiAgYGlfb3AtPnBlcm1pc3Npb25gIGlzIGdpdmVuIHRoZSBpbm9kZSBwb2ludGVyLCBub3QgdGhlCitkZW50cnksIHNvIGl0IGRvZXNuJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBmdXJ0aGVyIGNvbnNpc3RlbmN5IGNoZWNrcy4KK0hvd2V2ZXIgaWYgaXQgYWNjZXNzZXMgYW55IG90aGVyIGZpbGVzeXN0ZW0gZGF0YSBzdHJ1Y3R1cmVzLCBpdCBtdXN0CitlbnN1cmUgdGhleSBhcmUgc2FmZSB0byBiZSBhY2Nlc3NlZCB3aXRoIG9ubHkgdGhlIGByY3VfcmVhZF9sb2NrKClgCitoZWxkLiAgVGhpcyB0eXBpY2FsbHkgbWVhbnMgdGhleSBtdXN0IGJlIGZyZWVkIHVzaW5nIGBrZnJlZV9yY3UoKWAgb3IKK3NpbWlsYXIuCisKK1tgUkVBRF9PTkNFKClgXTogaHR0cHM6Ly9sd24ubmV0L0FydGljbGVzLzYyNDEyNi8KKworSWYgdGhlIGZpbGVzeXN0ZW0gbWF5IG5lZWQgdG8gcmV2YWxpZGF0ZSBkY2FjaGUgZW50cmllcywgdGhlbgorYGRfb3AtPmRfcmV2YWxpZGF0ZWAgbWF5IGJlIGNhbGxlZCBpbiBSQ1Utd2FsayB0b28uICBUaGlzIGludGVyZmFjZQorKmlzKiBwYXNzZWQgdGhlIGRlbnRyeSBidXQgZG9lcyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGBpbm9kZWAgb3IgdGhlCitgc2VxYCBudW1iZXIgZnJvbSB0aGUgYG5hbWVpZGF0YWAsIHNvIGl0IG5lZWRzIHRvIGJlIGV4dHJhIGNhcmVmdWwKK3doZW4gYWNjZXNzaW5nIGZpZWxkcyBpbiB0aGUgZGVudHJ5LiAgVGhpcyAiZXh0cmEgY2FyZSIgdHlwaWNhbGx5CitpbnZvbHZlcyB1c2luZyBgQUNDRVNTX09OQ0UoKWAgb3IgdGhlIG5ld2VyIFtgUkVBRF9PTkNFKClgXSB0byBhY2Nlc3MKK2ZpZWxkcywgYW5kIHZlcmlmeWluZyB0aGUgcmVzdWx0IGlzIG5vdCBOVUxMIGJlZm9yZSB1c2luZyBpdC4gIFRoaXMKK3BhdHRlcm4gY2FuIGJlIHNlZSBpbiBgbmZzX2xvb2t1cF9yZXZhbGlkYXRlKClgLgorCitBIHBhaXIgb2YgcGF0dGVybnMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitJbiB2YXJpb3VzIHBsYWNlcyBpbiB0aGUgZGV0YWlscyBvZiBSRUYtd2FsayBhbmQgUkNVLXdhbGssIGFuZCBhbHNvIGluCit0aGUgYmlnIHBpY3R1cmUsIHRoZXJlIGFyZSBhIGNvdXBsZSBvZiByZWxhdGVkIHBhdHRlcm5zIHRoYXQgYXJlIHdvcnRoCitiZWluZyBhd2FyZSBvZi4KKworVGhlIGZpcnN0IGlzICJ0cnkgcXVpY2tseSBhbmQgY2hlY2ssIGlmIHRoYXQgZmFpbHMgdHJ5IHNsb3dseSIuICBXZQorY2FuIHNlZSB0aGF0IGluIHRoZSBoaWdoLWxldmVsIGFwcHJvYWNoIG9mIGZpcnN0IHRyeWluZyBSQ1Utd2FsayBhbmQKK3RoZW4gdHJ5aW5nIFJFRi13YWxrLCBhbmQgaW4gcGxhY2VzIHdoZXJlIGB1bmxhenlfd2FsaygpYCBpcyB1c2VkIHRvCitzd2l0Y2ggdG8gUkVGLXdhbGsgZm9yIHRoZSByZXN0IG9mIHRoZSBwYXRoLiAgV2UgYWxzbyBzYXcgaXQgZWFybGllcgoraW4gYGRnZXRfcGFyZW50KClgIHdoZW4gZm9sbG93aW5nIGEgImAuLmAiIGxpbmsuICBJdCB0cmllcyBhIHF1aWNrIHdheQordG8gZ2V0IGEgcmVmZXJlbmNlLCB0aGVuIGZhbGxzIGJhY2sgdG8gdGFraW5nIGxvY2tzIGlmIG5lZWRlZC4KKworVGhlIHNlY29uZCBwYXR0ZXJuIGlzICJ0cnkgcXVpY2tseSBhbmQgY2hlY2ssIGlmIHRoYXQgZmFpbHMgdHJ5CithZ2FpbiAtIHJlcGVhdGVkbHkiLiAgVGhpcyBpcyBzZWVuIHdpdGggdGhlIHVzZSBvZiBgcmVuYW1lX2xvY2tgIGFuZAorYG1vdW50X2xvY2tgIGluIFJFRi13YWxrLiAgUkNVLXdhbGsgZG9lc24ndCBtYWtlIHVzZSBvZiB0aGlzIHBhdHRlcm4gLQoraWYgYW55dGhpbmcgZ29lcyB3cm9uZyBpdCBpcyBtdWNoIHNhZmVyIHRvIGp1c3QgYWJvcnQgYW5kIHRyeSBhIG1vcmUKK3NlZGF0ZSBhcHByb2FjaC4KKworVGhlIGVtcGhhc2lzIGhlcmUgaXMgInRyeSBxdWlja2x5IGFuZCBjaGVjayIuICBJdCBzaG91bGQgcHJvYmFibHkgYmUKKyJ0cnkgcXVpY2tseSBfYW5kIGNhcmVmdWxseSxfIHRoZW4gY2hlY2siLiAgVGhlIGZhY3QgdGhhdCBjaGVja2luZyBpcworbmVlZGVkIGlzIGEgcmVtaW5kZXIgdGhhdCB0aGUgc3lzdGVtIGlzIGR5bmFtaWMgYW5kIG9ubHkgYSBsaW1pdGVkCitudW1iZXIgb2YgdGhpbmdzIGFyZSBzYWZlIGF0IGFsbC4gIFRoZSBtb3N0IGxpa2VseSBjYXVzZSBvZiBlcnJvcnMgaW4KK3RoaXMgd2hvbGUgcHJvY2VzcyBpcyBhc3N1bWluZyBzb21ldGhpbmcgaXMgc2FmZSB3aGVuIGluIHJlYWxpdHkgaXQKK2lzbid0LiAgQ2FyZWZ1bCBjb25zaWRlcmF0aW9uIG9mIHdoYXQgZXhhY3RseSBndWFyYW50ZWVzIHRoZSBzYWZldHkgb2YKK2VhY2ggYWNjZXNzIGlzIHNvbWV0aW1lcyBuZWNlc3NhcnkuCisKK0Egd2FsayBhbW9uZyB0aGUgc3ltbGlua3MKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlcmUgYXJlIHNldmVyYWwgYmFzaWMgaXNzdWVzIHRoYXQgd2Ugd2lsbCBleGFtaW5lIHRvIHVuZGVyc3RhbmQgdGhlCitoYW5kbGluZyBvZiBzeW1ib2xpYyBsaW5rczogIHRoZSBzeW1saW5rIHN0YWNrLCB0b2dldGhlciB3aXRoIGNhY2hlCitsaWZldGltZXMsIHdpbGwgaGVscCB1cyB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIHJlY3Vyc2l2ZSBoYW5kbGluZyBvZgorc3ltbGlua3MgYW5kIGxlYWQgdG8gdGhlIHNwZWNpYWwgY2FyZSBuZWVkZWQgZm9yIHRoZSBmaW5hbCBjb21wb25lbnQuCitUaGVuIGEgY29uc2lkZXJhdGlvbiBvZiBhY2Nlc3MtdGltZSB1cGRhdGVzIGFuZCBzdW1tYXJ5IG9mIHRoZSB2YXJpb3VzCitmbGFncyBjb250cm9sbGluZyBsb29rdXAgd2lsbCBmaW5pc2ggdGhlIHN0b3J5LgorCitUaGUgc3ltbGluayBzdGFjaworLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgYXJlIG9ubHkgdHdvIHNvcnRzIG9mIGZpbGVzeXN0ZW0gb2JqZWN0cyB0aGF0IGNhbiB1c2VmdWxseQorYXBwZWFyIGluIGEgcGF0aCBwcmlvciB0byB0aGUgZmluYWwgY29tcG9uZW50OiBkaXJlY3RvcmllcyBhbmQgc3ltbGlua3MuCitIYW5kbGluZyBkaXJlY3RvcmllcyBpcyBxdWl0ZSBzdHJhaWdodGZvcndhcmQ6IHRoZSBuZXcgZGlyZWN0b3J5CitzaW1wbHkgYmVjb21lcyB0aGUgc3RhcnRpbmcgcG9pbnQgYXQgd2hpY2ggdG8gaW50ZXJwcmV0IHRoZSBuZXh0Citjb21wb25lbnQgb24gdGhlIHBhdGguICBIYW5kbGluZyBzeW1ib2xpYyBsaW5rcyByZXF1aXJlcyBhIGJpdCBtb3JlCit3b3JrLgorCitDb25jZXB0dWFsbHksIHN5bWJvbGljIGxpbmtzIGNvdWxkIGJlIGhhbmRsZWQgYnkgZWRpdGluZyB0aGUgcGF0aC4gIElmCithIGNvbXBvbmVudCBuYW1lIHJlZmVycyB0byBhIHN5bWJvbGljIGxpbmssIHRoZW4gdGhhdCBjb21wb25lbnQgaXMKK3JlcGxhY2VkIGJ5IHRoZSBib2R5IG9mIHRoZSBsaW5rIGFuZCwgaWYgdGhhdCBib2R5IHN0YXJ0cyB3aXRoIGEgJy8nLAordGhlbiBhbGwgcHJlY2VkaW5nIHBhcnRzIG9mIHRoZSBwYXRoIGFyZSBkaXNjYXJkZWQuICBUaGlzIGlzIHdoYXQgdGhlCisiYHJlYWRsaW5rIC1mYCIgY29tbWFuZCBkb2VzLCB0aG91Z2ggaXQgYWxzbyBlZGl0cyBvdXQgImAuYCIgYW5kCisiYC4uYCIgY29tcG9uZW50cy4KKworRGlyZWN0bHkgZWRpdGluZyB0aGUgcGF0aCBzdHJpbmcgaXMgbm90IHJlYWxseSBuZWNlc3Nhcnkgd2hlbiBsb29raW5nCit1cCBhIHBhdGgsIGFuZCBkaXNjYXJkaW5nIGVhcmx5IGNvbXBvbmVudHMgaXMgcG9pbnRsZXNzIGFzIHRoZXkgYXJlbid0Citsb29rZWQgYXQgYW55d2F5LiAgS2VlcGluZyB0cmFjayBvZiBhbGwgcmVtYWluaW5nIGNvbXBvbmVudHMgaXMKK2ltcG9ydGFudCwgYnV0IHRoZXkgY2FuIG9mIGNvdXJzZSBiZSBrZXB0IHNlcGFyYXRlbHk7IHRoZXJlIGlzIG5vIG5lZWQKK3RvIGNvbmNhdGVuYXRlIHRoZW0uICBBcyBvbmUgc3ltbGluayBtYXkgZWFzaWx5IHJlZmVyIHRvIGFub3RoZXIsCit3aGljaCBpbiB0dXJuIGNhbiByZWZlciB0byBhIHRoaXJkLCB3ZSBtYXkgbmVlZCB0byBrZWVwIHRoZSByZW1haW5pbmcKK2NvbXBvbmVudHMgb2Ygc2V2ZXJhbCBwYXRocywgZWFjaCB0byBiZSBwcm9jZXNzZWQgd2hlbiB0aGUgcHJlY2VkaW5nCitvbmVzIGFyZSBjb21wbGV0ZWQuICBUaGVzZSBwYXRoIHJlbW5hbnRzIGFyZSBrZXB0IG9uIGEgc3RhY2sgb2YKK2xpbWl0ZWQgc2l6ZS4KKworVGhlcmUgYXJlIHR3byByZWFzb25zIGZvciBwbGFjaW5nIGxpbWl0cyBvbiBob3cgbWFueSBzeW1saW5rcyBjYW4KK29jY3VyIGluIGEgc2luZ2xlIHBhdGggbG9va3VwLiAgVGhlIG1vc3Qgb2J2aW91cyBpcyB0byBhdm9pZCBsb29wcy4KK0lmIGEgc3ltbGluayByZWZlcnJlZCB0byBpdHNlbGYgZWl0aGVyIGRpcmVjdGx5IG9yIHRocm91Z2gKK2ludGVybWVkaWFyaWVzLCB0aGVuIGZvbGxvd2luZyB0aGUgc3ltbGluayBjYW4gbmV2ZXIgY29tcGxldGUKK3N1Y2Nlc3NmdWxseSAtIHRoZSBlcnJvciBgRUxPT1BgIG11c3QgYmUgcmV0dXJuZWQuICBMb29wcyBjYW4gYmUKK2RldGVjdGVkIHdpdGhvdXQgaW1wb3NpbmcgbGltaXRzLCBidXQgbGltaXRzIGFyZSB0aGUgc2ltcGxlc3Qgc29sdXRpb24KK2FuZCwgZ2l2ZW4gdGhlIHNlY29uZCByZWFzb24gZm9yIHJlc3RyaWN0aW9uLCBxdWl0ZSBzdWZmaWNpZW50LgorCitbb3V0bGluZWQgcmVjZW50bHldOiBodHRwOi8vdGhyZWFkLmdtYW5lLm9yZy9nbWFuZS5saW51eC5rZXJuZWwvMTkzNDM5MC9mb2N1cz0xOTM0NTUwCisKK1RoZSBzZWNvbmQgcmVhc29uIHdhcyBbb3V0bGluZWQgcmVjZW50bHldIGJ5IExpbnVzOgorCis+ICBCZWNhdXNlIGl0J3MgYSBsYXRlbmN5IGFuZCBEb1MgaXNzdWUgdG9vLiBXZSBuZWVkIHRvIHJlYWN0IHdlbGwgdG8KKz4gIHRydWUgbG9vcHMsIGJ1dCBhbHNvIHRvICJ2ZXJ5IGRlZXAiIG5vbi1sb29wcy4gSXQncyBub3QgYWJvdXQgbWVtb3J5Cis+ICB1c2UsIGl0J3MgYWJvdXQgdXNlcnMgdHJpZ2dlcmluZyB1bnJlYXNvbmFibGUgQ1BVIHJlc291cmNlcy4KKworTGludXggaW1wb3NlcyBhIGxpbWl0IG9uIHRoZSBsZW5ndGggb2YgYW55IHBhdGhuYW1lOiBgUEFUSF9NQVhgLCB3aGljaAoraXMgNDA5Ni4gIFRoZXJlIGFyZSBhIG51bWJlciBvZiByZWFzb25zIGZvciB0aGlzIGxpbWl0OyBub3QgbGV0dGluZyB0aGUKK2tlcm5lbCBzcGVuZCB0b28gbXVjaCB0aW1lIG9uIGp1c3Qgb25lIHBhdGggaXMgb25lIG9mIHRoZW0uICBXaXRoCitzeW1ib2xpYyBsaW5rcyB5b3UgY2FuIGVmZmVjdGl2ZWx5IGdlbmVyYXRlIG11Y2ggbG9uZ2VyIHBhdGhzIHNvIHNvbWUKK3NvcnQgb2YgbGltaXQgaXMgbmVlZGVkIGZvciB0aGUgc2FtZSByZWFzb24uICBMaW51eCBpbXBvc2VzIGEgbGltaXQgb2YKK2F0IG1vc3QgNDAgc3ltbGlua3MgaW4gYW55IG9uZSBwYXRoIGxvb2t1cC4gIEl0IHByZXZpb3VzbHkgaW1wb3NlZCBhCitmdXJ0aGVyIGxpbWl0IG9mIGVpZ2h0IG9uIHRoZSBtYXhpbXVtIGRlcHRoIG9mIHJlY3Vyc2lvbiwgYnV0IHRoYXQgd2FzCityYWlzZWQgdG8gNDAgd2hlbiBhIHNlcGFyYXRlIHN0YWNrIHdhcyBpbXBsZW1lbnRlZCwgc28gdGhlcmUgaXMgbm93CitqdXN0IHRoZSBvbmUgbGltaXQuCisKK1RoZSBgbmFtZWlkYXRhYCBzdHJ1Y3R1cmUgdGhhdCB3ZSBtZXQgaW4gYW4gZWFybGllciBhcnRpY2xlIGNvbnRhaW5zIGEKK3NtYWxsIHN0YWNrIHRoYXQgY2FuIGJlIHVzZWQgdG8gc3RvcmUgdGhlIHJlbWFpbmluZyBwYXJ0IG9mIHVwIHRvIHR3bworc3ltbGlua3MuICBJbiBtYW55IGNhc2VzIHRoaXMgd2lsbCBiZSBzdWZmaWNpZW50LiAgSWYgaXQgaXNuJ3QsIGEKK3NlcGFyYXRlIHN0YWNrIGlzIGFsbG9jYXRlZCB3aXRoIHJvb20gZm9yIDQwIHN5bWxpbmtzLiAgUGF0aG5hbWUKK2xvb2t1cCB3aWxsIG5ldmVyIGV4Y2VlZCB0aGF0IHN0YWNrIGFzLCBvbmNlIHRoZSA0MHRoIHN5bWxpbmsgaXMKK2RldGVjdGVkLCBhbiBlcnJvciBpcyByZXR1cm5lZC4KKworSXQgbWlnaHQgc2VlbSB0aGF0IHRoZSBuYW1lIHJlbW5hbnRzIGFyZSBhbGwgdGhhdCBuZWVkcyB0byBiZSBzdG9yZWQgb24KK3RoaXMgc3RhY2ssIGJ1dCB3ZSBuZWVkIGEgYml0IG1vcmUuICBUbyBzZWUgdGhhdCwgd2UgbmVlZCB0byBtb3ZlIG9uIHRvCitjYWNoZSBsaWZldGltZXMuCisKK1N0b3JhZ2UgYW5kIGxpZmV0aW1lIG9mIGNhY2hlZCBzeW1saW5rcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0xpa2Ugb3RoZXIgZmlsZXN5c3RlbSByZXNvdXJjZXMsIHN1Y2ggYXMgaW5vZGVzIGFuZCBkaXJlY3RvcnkKK2VudHJpZXMsIHN5bWxpbmtzIGFyZSBjYWNoZWQgYnkgTGludXggdG8gYXZvaWQgcmVwZWF0ZWQgY29zdGx5IGFjY2VzcwordG8gZXh0ZXJuYWwgc3RvcmFnZS4gIEl0IGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgZm9yIFJDVS13YWxrIHRvIGJlCithYmxlIHRvIGZpbmQgYW5kIHRlbXBvcmFyaWx5IGhvbGQgb250byB0aGVzZSBjYWNoZWQgZW50cmllcywgc28gdGhhdAoraXQgZG9lc24ndCBuZWVkIHRvIGRyb3AgZG93biBpbnRvIFJFRi13YWxrLgorCitbb2JqZWN0LW9yaWVudGVkIGRlc2lnbiBwYXR0ZXJuXTogaHR0cHM6Ly9sd24ubmV0L0FydGljbGVzLzQ0NjMxNy8KKworV2hpbGUgZWFjaCBmaWxlc3lzdGVtIGlzIGZyZWUgdG8gbWFrZSBpdHMgb3duIGNob2ljZSwgc3ltbGlua3MgYXJlCit0eXBpY2FsbHkgc3RvcmVkIGluIG9uZSBvZiB0d28gcGxhY2VzLiAgU2hvcnQgc3ltbGlua3MgYXJlIG9mdGVuCitzdG9yZWQgZGlyZWN0bHkgaW4gdGhlIGlub2RlLiAgV2hlbiBhIGZpbGVzeXN0ZW0gYWxsb2NhdGVzIGEgYHN0cnVjdAoraW5vZGVgIGl0IHR5cGljYWxseSBhbGxvY2F0ZXMgZXh0cmEgc3BhY2UgdG8gc3RvcmUgcHJpdmF0ZSBkYXRhIChhCitjb21tb24gW29iamVjdC1vcmllbnRlZCBkZXNpZ24gcGF0dGVybl0gaW4gdGhlIGtlcm5lbCkuICBUaGlzIHdpbGwKK3NvbWV0aW1lcyBpbmNsdWRlIHNwYWNlIGZvciBhIHN5bWxpbmsuICBUaGUgb3RoZXIgY29tbW9uIGxvY2F0aW9uIGlzCitpbiB0aGUgcGFnZSBjYWNoZSwgd2hpY2ggbm9ybWFsbHkgc3RvcmVzIHRoZSBjb250ZW50IG9mIGZpbGVzLiAgVGhlCitwYXRobmFtZSBpbiBhIHN5bWxpbmsgY2FuIGJlIHNlZW4gYXMgdGhlIGNvbnRlbnQgb2YgdGhhdCBzeW1saW5rIGFuZAorY2FuIGVhc2lseSBiZSBzdG9yZWQgaW4gdGhlIHBhZ2UgY2FjaGUganVzdCBsaWtlIGZpbGUgY29udGVudC4KKworV2hlbiBuZWl0aGVyIG9mIHRoZXNlIGlzIHN1aXRhYmxlLCB0aGUgbmV4dCBtb3N0IGxpa2VseSBzY2VuYXJpbyBpcwordGhhdCB0aGUgZmlsZXN5c3RlbSB3aWxsIGFsbG9jYXRlIHNvbWUgdGVtcG9yYXJ5IG1lbW9yeSBhbmQgY29weSBvcgorY29uc3RydWN0IHRoZSBzeW1saW5rIGNvbnRlbnQgaW50byB0aGF0IG1lbW9yeSB3aGVuZXZlciBpdCBpcyBuZWVkZWQuCisKK1doZW4gdGhlIHN5bWxpbmsgaXMgc3RvcmVkIGluIHRoZSBpbm9kZSwgaXQgaGFzIHRoZSBzYW1lIGxpZmV0aW1lIGFzCit0aGUgaW5vZGUgd2hpY2gsIGl0c2VsZiwgaXMgcHJvdGVjdGVkIGJ5IFJDVSBvciBieSBhIGNvdW50ZWQgcmVmZXJlbmNlCitvbiB0aGUgZGVudHJ5LiAgVGhpcyBtZWFucyB0aGF0IHRoZSBtZWNoYW5pc21zIHRoYXQgcGF0aG5hbWUgbG9va3VwCit1c2VzIHRvIGFjY2VzcyB0aGUgZGNhY2hlIGFuZCBpY2FjaGUgKGlub2RlIGNhY2hlKSBzYWZlbHkgYXJlIHF1aXRlCitzdWZmaWNpZW50IGZvciBhY2Nlc3Npbmcgc29tZSBjYWNoZWQgc3ltbGlua3Mgc2FmZWx5LiAgSW4gdGhlc2UgY2FzZXMsCit0aGUgYGlfbGlua2AgcG9pbnRlciBpbiB0aGUgaW5vZGUgaXMgc2V0IHRvIHBvaW50IHRvIHdoZXJldmVyIHRoZQorc3ltbGluayBpcyBzdG9yZWQgYW5kIGl0IGNhbiBiZSBhY2Nlc3NlZCBkaXJlY3RseSB3aGVuZXZlciBuZWVkZWQuCisKK1doZW4gdGhlIHN5bWxpbmsgaXMgc3RvcmVkIGluIHRoZSBwYWdlIGNhY2hlIG9yIGVsc2V3aGVyZSwgdGhlCitzaXR1YXRpb24gaXMgbm90IHNvIHN0cmFpZ2h0Zm9yd2FyZC4gIEEgcmVmZXJlbmNlIG9uIGEgZGVudHJ5IG9yIGV2ZW4KK29uIGFuIGlub2RlIGRvZXMgbm90IGltcGx5IGFueSByZWZlcmVuY2Ugb24gY2FjaGVkIHBhZ2VzIG9mIHRoYXQKK2lub2RlLCBhbmQgZXZlbiBhbiBgcmN1X3JlYWRfbG9jaygpYCBpcyBub3Qgc3VmZmljaWVudCB0byBlbnN1cmUgdGhhdAorYSBwYWdlIHdpbGwgbm90IGRpc2FwcGVhci4gIFNvIGZvciB0aGVzZSBzeW1saW5rcyB0aGUgcGF0aG5hbWUgbG9va3VwCitjb2RlIG5lZWRzIHRvIGFzayB0aGUgZmlsZXN5c3RlbSB0byBwcm92aWRlIGEgc3RhYmxlIHJlZmVyZW5jZSBhbmQsCitzaWduaWZpY2FudGx5LCBuZWVkcyB0byByZWxlYXNlIHRoYXQgcmVmZXJlbmNlIHdoZW4gaXQgaXMgZmluaXNoZWQKK3dpdGggaXQuCisKK1Rha2luZyBhIHJlZmVyZW5jZSB0byBhIGNhY2hlIHBhZ2UgaXMgb2Z0ZW4gcG9zc2libGUgZXZlbiBpbiBSQ1Utd2FsaworbW9kZS4gIEl0IGRvZXMgcmVxdWlyZSBtYWtpbmcgY2hhbmdlcyB0byBtZW1vcnksIHdoaWNoIGlzIGJlc3QgYXZvaWRlZCwKK2J1dCB0aGF0IGlzbid0IG5lY2Vzc2FyaWx5IGEgYmlnIGNvc3QgYW5kIGl0IGlzIGJldHRlciB0aGFuIGRyb3BwaW5nCitvdXQgb2YgUkNVLXdhbGsgbW9kZSBjb21wbGV0ZWx5LiAgRXZlbiBmaWxlc3lzdGVtcyB0aGF0IGFsbG9jYXRlCitzcGFjZSB0byBjb3B5IHRoZSBzeW1saW5rIGludG8gY2FuIHVzZSBgR0ZQX0FUT01JQ2AgdG8gb2Z0ZW4gc3VjY2Vzc2Z1bGx5CithbGxvY2F0ZSBtZW1vcnkgd2l0aG91dCB0aGUgbmVlZCB0byBkcm9wIG91dCBvZiBSQ1Utd2Fsay4gIElmIGEKK2ZpbGVzeXN0ZW0gY2Fubm90IHN1Y2Nlc3NmdWxseSBnZXQgYSByZWZlcmVuY2UgaW4gUkNVLXdhbGsgbW9kZSwgaXQKK211c3QgcmV0dXJuIGAtRUNISUxEYCBhbmQgYHVubGF6eV93YWxrKClgIHdpbGwgYmUgY2FsbGVkIHRvIHJldHVybiB0bworUkVGLXdhbGsgbW9kZSBpbiB3aGljaCB0aGUgZmlsZXN5c3RlbSBpcyBhbGxvd2VkIHRvIHNsZWVwLgorCitUaGUgcGxhY2UgZm9yIGFsbCB0aGlzIHRvIGhhcHBlbiBpcyB0aGUgYGlfb3AtPmZvbGxvd19saW5rKClgIGlub2RlCittZXRob2QuICBJbiB0aGUgcHJlc2VudCBtYWlubGluZSBjb2RlIHRoaXMgaXMgbmV2ZXIgYWN0dWFsbHkgY2FsbGVkIGluCitSQ1Utd2FsayBtb2RlIGFzIHRoZSByZXdyaXRlIGlzIG5vdCBxdWl0ZSBjb21wbGV0ZS4gIEl0IGlzIGxpa2VseSB0aGF0CitpbiBhIGZ1dHVyZSByZWxlYXNlIHRoaXMgbWV0aG9kIHdpbGwgYmUgcGFzc2VkIGFuIGBpbm9kZWAgcG9pbnRlciB3aGVuCitjYWxsZWQgaW4gUkNVLXdhbGsgbW9kZSBzbyBpdCBib3RoICgxKSBrbm93cyB0byBiZSBjYXJlZnVsLCBhbmQgKDIpIGhhcyB0aGUKK3ZhbGlkYXRlZCBwb2ludGVyLiAgTXVjaCBsaWtlIHRoZSBgaV9vcC0+cGVybWlzc2lvbigpYCBtZXRob2Qgd2UKK2xvb2tlZCBhdCBwcmV2aW91c2x5LCBgLT5mb2xsb3dfbGluaygpYCB3b3VsZCBuZWVkIHRvIGJlIGNhcmVmdWwgdGhhdAorYWxsIHRoZSBkYXRhIHN0cnVjdHVyZXMgaXQgcmVmZXJlbmNlcyBhcmUgc2FmZSB0byBiZSBhY2Nlc3NlZCB3aGlsZQoraG9sZGluZyBubyBjb3VudGVkIHJlZmVyZW5jZSwgb25seSB0aGUgUkNVIGxvY2suICBUaG91Z2ggZ2V0dGluZyBhCityZWZlcmVuY2Ugd2l0aCBgLT5mb2xsb3dfbGluaygpYCBpcyBub3QgeWV0IGRvbmUgaW4gUkNVLXdhbGsgbW9kZSwgdGhlCitjb2RlIGlzIHJlYWR5IHRvIHJlbGVhc2UgdGhlIHJlZmVyZW5jZSB3aGVuIHRoYXQgZG9lcyBoYXBwZW4uCisKK1RoaXMgbmVlZCB0byBkcm9wIHRoZSByZWZlcmVuY2UgdG8gYSBzeW1saW5rIGFkZHMgc2lnbmlmaWNhbnQKK2NvbXBsZXhpdHkuICBJdCByZXF1aXJlcyBhIHJlZmVyZW5jZSB0byB0aGUgaW5vZGUgc28gdGhhdCB0aGUKK2BpX29wLT5wdXRfbGluaygpYCBpbm9kZSBvcGVyYXRpb24gY2FuIGJlIGNhbGxlZC4gIEluIFJFRi13YWxrLCB0aGF0CityZWZlcmVuY2UgaXMga2VwdCBpbXBsaWNpdGx5IHRocm91Z2ggYSByZWZlcmVuY2UgdG8gdGhlIGRlbnRyeSwgc28KK2tlZXBpbmcgdGhlIGBzdHJ1Y3QgcGF0aGAgb2YgdGhlIHN5bWxpbmsgaXMgZWFzaWVzdC4gIEZvciBSQ1Utd2FsaywKK3RoZSBwb2ludGVyIHRvIHRoZSBpbm9kZSBpcyBrZXB0IHNlcGFyYXRlbHkuICBUbyBhbGxvdyBzd2l0Y2hpbmcgZnJvbQorUkNVLXdhbGsgYmFjayB0byBSRUYtd2FsayBpbiB0aGUgbWlkZGxlIG9mIHByb2Nlc3NpbmcgbmVzdGVkIHN5bWxpbmtzCit3ZSBhbHNvIG5lZWQgdGhlIHNlcSBudW1iZXIgZm9yIHRoZSBkZW50cnkgc28gd2UgY2FuIGNvbmZpcm0gdGhhdAorc3dpdGNoaW5nIGJhY2sgd2FzIHNhZmUuCisKK0ZpbmFsbHksIHdoZW4gcHJvdmlkaW5nIGEgcmVmZXJlbmNlIHRvIGEgc3ltbGluaywgdGhlIGZpbGVzeXN0ZW0gYWxzbworcHJvdmlkZXMgYW4gb3BhcXVlICJjb29raWUiIHRoYXQgbXVzdCBiZSBwYXNzZWQgdG8gYC0+cHV0X2xpbmsoKWAgc28gdGhhdCBpdAora25vd3Mgd2hhdCB0byBmcmVlLiAgVGhpcyBtaWdodCBiZSB0aGUgYWxsb2NhdGVkIG1lbW9yeSBhcmVhLCBvciBhCitwb2ludGVyIHRvIHRoZSBgc3RydWN0IHBhZ2VgIGluIHRoZSBwYWdlIGNhY2hlLCBvciBzb21ldGhpbmcgZWxzZQorY29tcGxldGVseS4gIE9ubHkgdGhlIGZpbGVzeXN0ZW0ga25vd3Mgd2hhdCBpdCBpcy4KKworSW4gb3JkZXIgZm9yIHRoZSByZWZlcmVuY2UgdG8gZWFjaCBzeW1saW5rIHRvIGJlIGRyb3BwZWQgd2hlbiB0aGUgd2FsayBjb21wbGV0ZXMsCit3aGV0aGVyIGluIFJDVS13YWxrIG9yIFJFRi13YWxrLCB0aGUgc3ltbGluayBzdGFjayBuZWVkcyB0byBjb250YWluLAorYWxvbmcgd2l0aCB0aGUgcGF0aCByZW1uYW50czoKKworLSB0aGUgYHN0cnVjdCBwYXRoYCB0byBwcm92aWRlIGEgcmVmZXJlbmNlIHRvIHRoZSBpbm9kZSBpbiBSRUYtd2FsaworLSB0aGUgYHN0cnVjdCBpbm9kZSAqYCB0byBwcm92aWRlIGEgcmVmZXJlbmNlIHRvIHRoZSBpbm9kZSBpbiBSQ1Utd2FsaworLSB0aGUgYHNlcWAgdG8gYWxsb3cgdGhlIHBhdGggdG8gYmUgc2FmZWx5IHN3aXRjaGVkIGZyb20gUkNVLXdhbGsgdG8gUkVGLXdhbGsKKy0gdGhlIGBjb29raWVgIHRoYXQgdGVsbHMgYC0+cHV0X3BhdGgoKWAgd2hhdCB0byBwdXQuCisKK1RoaXMgbWVhbnMgdGhhdCBlYWNoIGVudHJ5IGluIHRoZSBzeW1saW5rIHN0YWNrIG5lZWRzIHRvIGhvbGQgZml2ZQorcG9pbnRlcnMgYW5kIGFuIGludGVnZXIgaW5zdGVhZCBvZiBqdXN0IG9uZSBwb2ludGVyICh0aGUgcGF0aAorcmVtbmFudCkuICBPbiBhIDY0LWJpdCBzeXN0ZW0sIHRoaXMgaXMgYWJvdXQgNDAgYnl0ZXMgcGVyIGVudHJ5Oword2l0aCA0MCBlbnRyaWVzIGl0IGFkZHMgdXAgdG8gMTYwMCBieXRlcyB0b3RhbCwgd2hpY2ggaXMgbGVzcyB0aGFuCitoYWxmIGEgcGFnZS4gIFNvIGl0IG1pZ2h0IHNlZW0gbGlrZSBhIGxvdCwgYnV0IGlzIGJ5IG5vIG1lYW5zCitleGNlc3NpdmUuCisKK05vdGUgdGhhdCwgaW4gYSBnaXZlbiBzdGFjayBmcmFtZSwgdGhlIHBhdGggcmVtbmFudCAoYG5hbWVgKSBpcyBub3QKK3BhcnQgb2YgdGhlIHN5bWxpbmsgdGhhdCB0aGUgb3RoZXIgZmllbGRzIHJlZmVyIHRvLiAgSXQgaXMgdGhlIHJlbW5hbnQKK3RvIGJlIGZvbGxvd2VkIG9uY2UgdGhhdCBzeW1saW5rIGhhcyBiZWVuIGZ1bGx5IHBhcnNlZC4KKworRm9sbG93aW5nIHRoZSBzeW1saW5rCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG1haW4gbG9vcCBpbiBgbGlua19wYXRoX3dhbGsoKWAgaXRlcmF0ZXMgc2VhbWxlc3NseSBvdmVyIGFsbAorY29tcG9uZW50cyBpbiB0aGUgcGF0aCBhbmQgYWxsIG9mIHRoZSBub24tZmluYWwgc3ltbGlua3MuICBBcyBzeW1saW5rcworYXJlIHByb2Nlc3NlZCwgdGhlIGBuYW1lYCBwb2ludGVyIGlzIGFkanVzdGVkIHRvIHBvaW50IHRvIGEgbmV3CitzeW1saW5rLCBvciBpcyByZXN0b3JlZCBmcm9tIHRoZSBzdGFjaywgc28gdGhhdCBtdWNoIG9mIHRoZSBsb29wCitkb2Vzbid0IG5lZWQgdG8gbm90aWNlLiAgR2V0dGluZyB0aGlzIGBuYW1lYCB2YXJpYWJsZSBvbiBhbmQgb2ZmIHRoZQorc3RhY2sgaXMgdmVyeSBzdHJhaWdodGZvcndhcmQ7IHB1c2hpbmcgYW5kIHBvcHBpbmcgdGhlIHJlZmVyZW5jZXMgaXMKK2EgbGl0dGxlIG1vcmUgY29tcGxleC4KKworV2hlbiBhIHN5bWxpbmsgaXMgZm91bmQsIGB3YWxrX2NvbXBvbmVudCgpYCByZXR1cm5zIHRoZSB2YWx1ZSBgMWAKKyhgMGAgaXMgcmV0dXJuZWQgZm9yIGFueSBvdGhlciBzb3J0IG9mIHN1Y2Nlc3MsIGFuZCBhIG5lZ2F0aXZlIG51bWJlcgoraXMsIGFzIHVzdWFsLCBhbiBlcnJvciBpbmRpY2F0b3IpLiAgVGhpcyBjYXVzZXMgYGdldF9saW5rKClgIHRvIGJlCitjYWxsZWQ7IGl0IHRoZW4gZ2V0cyB0aGUgbGluayBmcm9tIHRoZSBmaWxlc3lzdGVtLiAgUHJvdmlkaW5nIHRoYXQKK29wZXJhdGlvbiBpcyBzdWNjZXNzZnVsLCB0aGUgb2xkIHBhdGggYG5hbWVgIGlzIHBsYWNlZCBvbiB0aGUgc3RhY2ssCithbmQgdGhlIG5ldyB2YWx1ZSBpcyB1c2VkIGFzIHRoZSBgbmFtZWAgZm9yIGEgd2hpbGUuICBXaGVuIHRoZSBlbmQgb2YKK3RoZSBwYXRoIGlzIGZvdW5kIChpLmUuIGAqbmFtZWAgaXMgYCdcMCdgKSB0aGUgb2xkIGBuYW1lYCBpcyByZXN0b3JlZAorb2ZmIHRoZSBzdGFjayBhbmQgcGF0aCB3YWxraW5nIGNvbnRpbnVlcy4KKworUHVzaGluZyBhbmQgcG9wcGluZyB0aGUgcmVmZXJlbmNlIHBvaW50ZXJzIChpbm9kZSwgY29va2llLCBldGMuKSBpcyBtb3JlCitjb21wbGV4IGluIHBhcnQgYmVjYXVzZSBvZiB0aGUgZGVzaXJlIHRvIGhhbmRsZSB0YWlsIHJlY3Vyc2lvbi4gIFdoZW4KK3RoZSBsYXN0IGNvbXBvbmVudCBvZiBhIHN5bWxpbmsgaXRzZWxmIHBvaW50cyB0byBhIHN5bWxpbmssIHdlCit3YW50IHRvIHBvcCB0aGUgc3ltbGluay1qdXN0LWNvbXBsZXRlZCBvZmYgdGhlIHN0YWNrIGJlZm9yZSBwdXNoaW5nCit0aGUgc3ltbGluay1qdXN0LWZvdW5kIHRvIGF2b2lkIGxlYXZpbmcgZW1wdHkgcGF0aCByZW1uYW50cyB0aGF0IHdvdWxkCitqdXN0IGdldCBpbiB0aGUgd2F5LgorCitJdCBpcyBtb3N0IGNvbnZlbmllbnQgdG8gcHVzaCB0aGUgbmV3IHN5bWxpbmsgcmVmZXJlbmNlcyBvbnRvIHRoZQorc3RhY2sgaW4gYHdhbGtfY29tcG9uZW50KClgIGltbWVkaWF0ZWx5IHdoZW4gdGhlIHN5bWxpbmsgaXMgZm91bmQ7Citgd2Fsa19jb21wb25lbnQoKWAgaXMgYWxzbyB0aGUgbGFzdCBwaWVjZSBvZiBjb2RlIHRoYXQgbmVlZHMgdG8gbG9vayBhdCB0aGUKK29sZCBzeW1saW5rIGFzIGl0IHdhbGtzIHRoYXQgbGFzdCBjb21wb25lbnQuICBTbyBpdCBpcyBxdWl0ZQorY29udmVuaWVudCBmb3IgYHdhbGtfY29tcG9uZW50KClgIHRvIHJlbGVhc2UgdGhlIG9sZCBzeW1saW5rIGFuZCBwb3AKK3RoZSByZWZlcmVuY2VzIGp1c3QgYmVmb3JlIHB1c2hpbmcgdGhlIHJlZmVyZW5jZSBpbmZvcm1hdGlvbiBmb3IgdGhlCituZXcgc3ltbGluay4gIEl0IGlzIGd1aWRlZCBpbiB0aGlzIGJ5IHR3byBmbGFnczsgYFdBTEtfR0VUYCwgd2hpY2gKK2dpdmVzIGl0IHBlcm1pc3Npb24gdG8gZm9sbG93IGEgc3ltbGluayBpZiBpdCBmaW5kcyBvbmUsIGFuZAorYFdBTEtfUFVUYCwgd2hpY2ggdGVsbHMgaXQgdG8gcmVsZWFzZSB0aGUgY3VycmVudCBzeW1saW5rIGFmdGVyIGl0IGhhcyBiZWVuCitmb2xsb3dlZC4gIGBXQUxLX1BVVGAgaXMgdGVzdGVkIGZpcnN0LCBsZWFkaW5nIHRvIGEgY2FsbCB0bworYHB1dF9saW5rKClgLiAgYFdBTEtfR0VUYCBpcyB0ZXN0ZWQgc3Vic2VxdWVudGx5IChieQorYHNob3VsZF9mb2xsb3dfbGluaygpYCkgbGVhZGluZyB0byBhIGNhbGwgdG8gYHBpY2tfbGluaygpYCB3aGljaCBzZXRzCit1cCB0aGUgc3RhY2sgZnJhbWUuCisKKyMjIyBTeW1saW5rcyB3aXRoIG5vIGZpbmFsIGNvbXBvbmVudCAjIyMKKworQSBwYWlyIG9mIHNwZWNpYWwtY2FzZSBzeW1saW5rcyBkZXNlcnZlIGEgbGl0dGxlIGZ1cnRoZXIgZXhwbGFuYXRpb24uCitCb3RoIHJlc3VsdCBpbiBhIG5ldyBgc3RydWN0IHBhdGhgICh3aXRoIG1vdW50IGFuZCBkZW50cnkpIGJlaW5nIHNldAordXAgaW4gdGhlIGBuYW1laWRhdGFgLCBhbmQgcmVzdWx0IGluIGBnZXRfbGluaygpYCByZXR1cm5pbmcgYE5VTExgLgorCitUaGUgbW9yZSBvYnZpb3VzIGNhc2UgaXMgYSBzeW1saW5rIHRvICJgL2AiLiAgQWxsIHN5bWxpbmtzIHN0YXJ0aW5nCit3aXRoICJgL2AiIGFyZSBkZXRlY3RlZCBpbiBgZ2V0X2xpbmsoKWAgd2hpY2ggcmVzZXRzIHRoZSBgbmFtZWlkYXRhYAordG8gcG9pbnQgdG8gdGhlIGVmZmVjdGl2ZSBmaWxlc3lzdGVtIHJvb3QuICBJZiB0aGUgc3ltbGluayBvbmx5Citjb250YWlucyAiYC9gIiB0aGVuIHRoZXJlIGlzIG5vdGhpbmcgbW9yZSB0byBkbywgbm8gY29tcG9uZW50cyBhdCBhbGwsCitzbyBgTlVMTGAgaXMgcmV0dXJuZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgc3ltbGluayBjYW4gYmUgcmVsZWFzZWQgYW5kCit0aGUgc3RhY2sgZnJhbWUgZGlzY2FyZGVkLgorCitUaGUgb3RoZXIgY2FzZSBpbnZvbHZlcyB0aGluZ3MgaW4gYC9wcm9jYCB0aGF0IGxvb2sgbGlrZSBzeW1saW5rcyBidXQKK2FyZW4ndCByZWFsbHkuCisKKz4gICAgICQgbHMgLWwgL3Byb2Mvc2VsZi9mZC8xCis+ICAgICBscnd4LS0tLS0tIDEgbmVpbGIgbmVpbGIgNjQgSnVuIDEzIDEwOjE5IC9wcm9jL3NlbGYvZmQvMSAtPiAvZGV2L3B0cy80CisKK0V2ZXJ5IG9wZW4gZmlsZSBkZXNjcmlwdG9yIGluIGFueSBwcm9jZXNzIGlzIHJlcHJlc2VudGVkIGluIGAvcHJvY2AgYnkKK3NvbWV0aGluZyB0aGF0IGxvb2tzIGxpa2UgYSBzeW1saW5rLiAgSXQgaXMgcmVhbGx5IGEgcmVmZXJlbmNlIHRvIHRoZQordGFyZ2V0IGZpbGUsIG5vdCBqdXN0IHRoZSBuYW1lIG9mIGl0LiAgV2hlbiB5b3UgYHJlYWRsaW5rYCB0aGVzZQorb2JqZWN0cyB5b3UgZ2V0IGEgbmFtZSB0aGF0IG1pZ2h0IHJlZmVyIHRvIHRoZSBzYW1lIGZpbGUgLSB1bmxlc3MgaXQKK2hhcyBiZWVuIHVubGlua2VkIG9yIG1vdW50ZWQgb3Zlci4gIFdoZW4gYHdhbGtfY29tcG9uZW50KClgIGZvbGxvd3MKK29uZSBvZiB0aGVzZSwgdGhlIGAtPmZvbGxvd19saW5rKClgIG1ldGhvZCBpbiAicHJvY2ZzIiBkb2Vzbid0IHJldHVybgorYSBzdHJpbmcgbmFtZSwgYnV0IGluc3RlYWQgY2FsbHMgYG5kX2p1bXBfbGluaygpYCB3aGljaCB1cGRhdGVzIHRoZQorYG5hbWVpZGF0YWAgaW4gcGxhY2UgdG8gcG9pbnQgdG8gdGhhdCB0YXJnZXQuICBgLT5mb2xsb3dfbGluaygpYCB0aGVuCityZXR1cm5zIGBOVUxMYC4gIEFnYWluIHRoZXJlIGlzIG5vIGZpbmFsIGNvbXBvbmVudCBhbmQgYGdldF9saW5rKClgCityZXBvcnRzIHRoaXMgYnkgbGVhdmluZyB0aGUgYGxhc3RfdHlwZWAgZmllbGQgb2YgYG5hbWVpZGF0YWAgYXMKK2BMQVNUX0JJTkRgLgorCitGb2xsb3dpbmcgdGhlIHN5bWxpbmsgaW4gdGhlIGZpbmFsIGNvbXBvbmVudAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWxsIHRoaXMgbGVhZHMgdG8gYGxpbmtfcGF0aF93YWxrKClgIHdhbGtpbmcgZG93biBldmVyeSBjb21wb25lbnQsIGFuZAorZm9sbG93aW5nIGFsbCBzeW1ib2xpYyBsaW5rcyBpdCBmaW5kcywgdW50aWwgaXQgcmVhY2hlcyB0aGUgZmluYWwKK2NvbXBvbmVudC4gIFRoaXMgaXMganVzdCByZXR1cm5lZCBpbiB0aGUgYGxhc3RgIGZpZWxkIG9mIGBuYW1laWRhdGFgLgorRm9yIHNvbWUgY2FsbGVycywgdGhpcyBpcyBhbGwgdGhleSBuZWVkOyB0aGV5IHdhbnQgdG8gY3JlYXRlIHRoYXQKK2BsYXN0YCBuYW1lIGlmIGl0IGRvZXNuJ3QgZXhpc3Qgb3IgZ2l2ZSBhbiBlcnJvciBpZiBpdCBkb2VzLiAgT3RoZXIKK2NhbGxlcnMgd2lsbCB3YW50IHRvIGZvbGxvdyBhIHN5bWxpbmsgaWYgb25lIGlzIGZvdW5kLCBhbmQgcG9zc2libHkKK2FwcGx5IHNwZWNpYWwgaGFuZGxpbmcgdG8gdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoYXQgc3ltbGluaywgcmF0aGVyCit0aGFuIGp1c3QgdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBvcmlnaW5hbCBmaWxlIG5hbWUuICBUaGVzZSBjYWxsZXJzCitwb3RlbnRpYWxseSBuZWVkIHRvIGNhbGwgYGxpbmtfcGF0aF93YWxrKClgIGFnYWluIGFuZCBhZ2FpbiBvbgorc3VjY2Vzc2l2ZSBzeW1saW5rcyB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBkb2Vzbid0IHBvaW50IHRvIGFub3RoZXIKK3N5bWxpbmsuCisKK1RoaXMgY2FzZSBpcyBoYW5kbGVkIGJ5IHRoZSByZWxldmFudCBjYWxsZXIgb2YgYGxpbmtfcGF0aF93YWxrKClgLCBzdWNoIGFzCitgcGF0aF9sb29rdXBhdCgpYCB1c2luZyBhIGxvb3AgdGhhdCBjYWxscyBgbGlua19wYXRoX3dhbGsoKWAsIGFuZCB0aGVuCitoYW5kbGVzIHRoZSBmaW5hbCBjb21wb25lbnQuICBJZiB0aGUgZmluYWwgY29tcG9uZW50IGlzIGEgc3ltbGluawordGhhdCBuZWVkcyB0byBiZSBmb2xsb3dlZCwgdGhlbiBgdHJhaWxpbmdfc3ltbGluaygpYCBpcyBjYWxsZWQgdG8gc2V0Cit0aGluZ3MgdXAgcHJvcGVybHkgYW5kIHRoZSBsb29wIHJlcGVhdHMsIGNhbGxpbmcgYGxpbmtfcGF0aF93YWxrKClgCithZ2Fpbi4gIFRoaXMgY291bGQgbG9vcCBhcyBtYW55IGFzIDQwIHRpbWVzIGlmIHRoZSBsYXN0IGNvbXBvbmVudCBvZgorZWFjaCBzeW1saW5rIGlzIGFub3RoZXIgc3ltbGluay4KKworVGhlIHZhcmlvdXMgZnVuY3Rpb25zIHRoYXQgZXhhbWluZSB0aGUgZmluYWwgY29tcG9uZW50IGFuZCBwb3NzaWJseQorcmVwb3J0IHRoYXQgaXQgaXMgYSBzeW1saW5rIGFyZSBgbG9va3VwX2xhc3QoKWAsIGBtb3VudHBvaW50X2xhc3QoKWAKK2FuZCBgZG9fbGFzdCgpYCwgZWFjaCBvZiB3aGljaCB1c2UgdGhlIHNhbWUgY29udmVudGlvbiBhcworYHdhbGtfY29tcG9uZW50KClgIG9mIHJldHVybmluZyBgMWAgaWYgYSBzeW1saW5rIHdhcyBmb3VuZCB0aGF0IG5lZWRzCit0byBiZSBmb2xsb3dlZC4KKworT2YgdGhlc2UsIGBkb19sYXN0KClgIGlzIHRoZSBtb3N0IGludGVyZXN0aW5nIGFzIGl0IGlzIHVzZWQgZm9yCitvcGVuaW5nIGEgZmlsZS4gIFBhcnQgb2YgYGRvX2xhc3QoKWAgcnVucyB3aXRoIGBpX211dGV4YCBoZWxkIGFuZCB0aGlzCitwYXJ0IGlzIGluIGEgc2VwYXJhdGUgZnVuY3Rpb246IGBsb29rdXBfb3BlbigpYC4KKworRXhwbGFpbmluZyBgZG9fbGFzdCgpYCBjb21wbGV0ZWx5IGlzIGJleW9uZCB0aGUgc2NvcGUgb2YgdGhpcyBhcnRpY2xlLAorYnV0IGEgZmV3IGhpZ2hsaWdodHMgc2hvdWxkIGhlbHAgdGhvc2UgaW50ZXJlc3RlZCBpbiBleHBsb3JpbmcgdGhlCitjb2RlLgorCisxLiBSYXRoZXIgdGhhbiBqdXN0IGZpbmRpbmcgdGhlIHRhcmdldCBmaWxlLCBgZG9fbGFzdCgpYCBuZWVkcyB0byBvcGVuCisgaXQuICBJZiB0aGUgZmlsZSB3YXMgZm91bmQgaW4gdGhlIGRjYWNoZSwgdGhlbiBgdmZzX29wZW4oKWAgaXMgdXNlZCBmb3IKKyB0aGlzLiAgSWYgbm90LCB0aGVuIGBsb29rdXBfb3BlbigpYCB3aWxsIGVpdGhlciBjYWxsIGBhdG9taWNfb3BlbigpYCAoaWYKKyB0aGUgZmlsZXN5c3RlbSBwcm92aWRlcyBpdCkgdG8gY29tYmluZSB0aGUgZmluYWwgbG9va3VwIHdpdGggdGhlIG9wZW4sIG9yCisgd2lsbCBwZXJmb3JtIHRoZSBzZXBhcmF0ZSBgbG9va3VwX3JlYWwoKWAgYW5kIGB2ZnNfY3JlYXRlKClgIHN0ZXBzCisgZGlyZWN0bHkuICBJbiB0aGUgbGF0ZXIgY2FzZSB0aGUgYWN0dWFsICJvcGVuIiBvZiB0aGlzIG5ld2x5IGZvdW5kIG9yCisgY3JlYXRlZCBmaWxlIHdpbGwgYmUgcGVyZm9ybWVkIGJ5IGB2ZnNfb3BlbigpYCwganVzdCBhcyBpZiB0aGUgbmFtZQorIHdlcmUgZm91bmQgaW4gdGhlIGRjYWNoZS4KKworMi4gYHZmc19vcGVuKClgIGNhbiBmYWlsIHdpdGggYC1FT1BFTlNUQUxFYCBpZiB0aGUgY2FjaGVkIGluZm9ybWF0aW9uCisgd2Fzbid0IHF1aXRlIGN1cnJlbnQgZW5vdWdoLiAgUmF0aGVyIHRoYW4gcmVzdGFydGluZyB0aGUgbG9va3VwIGZyb20KKyB0aGUgdG9wIHdpdGggYExPT0tVUF9SRVZBTGAgc2V0LCBgbG9va3VwX29wZW4oKWAgaXMgY2FsbGVkIGluc3RlYWQsCisgZ2l2aW5nIHRoZSBmaWxlc3lzdGVtIGEgY2hhbmNlIHRvIHJlc29sdmUgc21hbGwgaW5jb25zaXN0ZW5jaWVzLgorIElmIHRoYXQgZG9lc24ndCB3b3JrLCBvbmx5IHRoZW4gaXMgdGhlIGxvb2t1cCByZXN0YXJ0ZWQgZnJvbSB0aGUgdG9wLgorCiszLiBBbiBvcGVuIHdpdGggT19DUkVBVCAqKmRvZXMqKiBmb2xsb3cgYSBzeW1saW5rIGluIHRoZSBmaW5hbCBjb21wb25lbnQsCisgICAgIHVubGlrZSBvdGhlciBjcmVhdGlvbiBzeXN0ZW0gY2FsbHMgKGxpa2UgYG1rZGlyYCkuICBTbyB0aGUgc2VxdWVuY2U6CisKKyAgICAgPiAgICAgbG4gLXMgYmFyIC90bXAvZm9vCisgICAgID4gICAgIGVjaG8gaGVsbG8gPiAvdG1wL2ZvbworCisgICAgIHdpbGwgY3JlYXRlIGEgZmlsZSBjYWxsZWQgYC90bXAvYmFyYC4gIFRoaXMgaXMgbm90IHBlcm1pdHRlZCBpZgorICAgICBgT19FWENMYCBpcyBzZXQgYnV0IG90aGVyd2lzZSBpcyBoYW5kbGVkIGZvciBhbiBPX0NSRUFUIG9wZW4gbXVjaAorICAgICBsaWtlIGZvciBhIG5vbi1jcmVhdGluZyBvcGVuOiBgc2hvdWxkX2ZvbGxvd19saW5rKClgIHJldHVybnMgYDFgLCBhbmQKKyAgICAgc28gZG9lcyBgZG9fbGFzdCgpYCBzbyB0aGF0IGB0cmFpbGluZ19zeW1saW5rKClgIGdldHMgY2FsbGVkIGFuZCB0aGUKKyAgICAgb3BlbiBwcm9jZXNzIGNvbnRpbnVlcyBvbiB0aGUgc3ltbGluayB0aGF0IHdhcyBmb3VuZC4KKworVXBkYXRpbmcgdGhlIGFjY2VzcyB0aW1lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2UgcHJldmlvdXNseSBzYWlkIG9mIFJDVS13YWxrIHRoYXQgaXQgd291bGQgInRha2Ugbm8gbG9ja3MsIGluY3JlbWVudAorbm8gY291bnRzLCBsZWF2ZSBubyBmb290cHJpbnRzLiIgIFdlIGhhdmUgc2luY2Ugc2VlbiB0aGF0IHNvbWUKKyJmb290cHJpbnRzIiBjYW4gYmUgbmVlZGVkIHdoZW4gaGFuZGxpbmcgc3ltbGlua3MgYXMgYSBjb3VudGVkCityZWZlcmVuY2UgKG9yIGV2ZW4gYSBtZW1vcnkgYWxsb2NhdGlvbikgbWF5IGJlIG5lZWRlZC4gIEJ1dCB0aGVzZQorZm9vdHByaW50cyBhcmUgYmVzdCBrZXB0IHRvIGEgbWluaW11bS4KKworT25lIG90aGVyIHBsYWNlIHdoZXJlIHdhbGtpbmcgZG93biBhIHN5bWxpbmsgY2FuIGludm9sdmUgbGVhdmluZworZm9vdHByaW50cyBpbiBhIHdheSB0aGF0IGRvZXNuJ3QgYWZmZWN0IGRpcmVjdG9yaWVzIGlzIGluIHVwZGF0aW5nIGFjY2VzcyB0aW1lcy4KK0luIFVuaXggKGFuZCBMaW51eCkgZXZlcnkgZmlsZXN5c3RlbSBvYmplY3QgaGFzIGEgImxhc3QgYWNjZXNzZWQKK3RpbWUiLCBvciAiYGF0aW1lYCIuICBQYXNzaW5nIHRocm91Z2ggYSBkaXJlY3RvcnkgdG8gYWNjZXNzIGEgZmlsZQord2l0aGluIGlzIG5vdCBjb25zaWRlcmVkIHRvIGJlIGFuIGFjY2VzcyBmb3IgdGhlIHB1cnBvc2VzIG9mCitgYXRpbWVgOyBvbmx5IGxpc3RpbmcgdGhlIGNvbnRlbnRzIG9mIGEgZGlyZWN0b3J5IGNhbiB1cGRhdGUgaXRzIGBhdGltZWAuCitTeW1saW5rcyBhcmUgZGlmZmVyZW50IGl0IHNlZW1zLiAgQm90aCByZWFkaW5nIGEgc3ltbGluayAod2l0aCBgcmVhZGxpbmsoKWApCithbmQgbG9va2luZyB1cCBhIHN5bWxpbmsgb24gdGhlIHdheSB0byBzb21lIG90aGVyIGRlc3RpbmF0aW9uIGNhbgordXBkYXRlIHRoZSBhdGltZSBvbiB0aGF0IHN5bWxpbmsuCisKK1tjbGVhcmVzdCBzdGF0ZW1lbnRdOiBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS9iYXNlZGVmcy9WMV9jaGFwMDQuaHRtbCN0YWdfMDRfMDgKKworSXQgaXMgbm90IGNsZWFyIHdoeSB0aGlzIGlzIHRoZSBjYXNlOyBQT1NJWCBoYXMgbGl0dGxlIHRvIHNheSBvbiB0aGUKK3N1YmplY3QuICBUaGUgW2NsZWFyZXN0IHN0YXRlbWVudF0gaXMgdGhhdCwgaWYgYSBwYXJ0aWN1bGFyIGltcGxlbWVudGF0aW9uCit1cGRhdGVzIGEgdGltZXN0YW1wIGluIGEgcGxhY2Ugbm90IHNwZWNpZmllZCBieSBQT1NJWCwgdGhpcyBtdXN0IGJlCitkb2N1bWVudGVkICJleGNlcHQgdGhhdCBhbnkgY2hhbmdlcyBjYXVzZWQgYnkgcGF0aG5hbWUgcmVzb2x1dGlvbiBuZWVkCitub3QgYmUgZG9jdW1lbnRlZCIuICBUaGlzIHNlZW1zIHRvIGltcGx5IHRoYXQgUE9TSVggZG9lc24ndCByZWFsbHkKK2NhcmUgYWJvdXQgYWNjZXNzLXRpbWUgdXBkYXRlcyBkdXJpbmcgcGF0aG5hbWUgbG9va3VwLgorCitbTGludXggMS4zLjg3XTogaHR0cHM6Ly9naXQua2VybmVsLm9yZy9jZ2l0L2xpbnV4L2tlcm5lbC9naXQvaGlzdG9yeS9oaXN0b3J5LmdpdC9kaWZmL2ZzL2V4dDIvc3ltbGluay5jP2lkPWY4MDZjNmRiNzdiOGVhYTZlMDBkY2ZiNmI1Njc3MDZmZWFlOGRiYjgKKworQW4gZXhhbWluYXRpb24gb2YgaGlzdG9yeSBzaG93cyB0aGF0IHByaW9yIHRvIFtMaW51eCAxLjMuODddLCB0aGUgZXh0MgorZmlsZXN5c3RlbSwgYXQgbGVhc3QsIGRpZG4ndCB1cGRhdGUgYXRpbWUgd2hlbiBmb2xsb3dpbmcgYSBsaW5rLgorVW5mb3J0dW5hdGVseSB3ZSBoYXZlIG5vIHJlY29yZCBvZiB3aHkgdGhhdCBiZWhhdmlvciB3YXMgY2hhbmdlZC4KKworSW4gYW55IGNhc2UsIGFjY2VzcyB0aW1lIG11c3Qgbm93IGJlIHVwZGF0ZWQgYW5kIHRoYXQgb3BlcmF0aW9uIGNhbiBiZQorcXVpdGUgY29tcGxleC4gIFRyeWluZyB0byBzdGF5IGluIFJDVS13YWxrIHdoaWxlIGRvaW5nIGl0IGlzIGJlc3QKK2F2b2lkZWQuICBGb3J0dW5hdGVseSBpdCBpcyBvZnRlbiBwZXJtaXR0ZWQgdG8gc2tpcCB0aGUgYGF0aW1lYAordXBkYXRlLiAgQmVjYXVzZSBgYXRpbWVgIHVwZGF0ZXMgY2F1c2UgcGVyZm9ybWFuY2UgcHJvYmxlbXMgaW4gdmFyaW91cworYXJlYXMsIExpbnV4IHN1cHBvcnRzIHRoZSBgcmVsYXRpbWVgIG1vdW50IG9wdGlvbiwgd2hpY2ggZ2VuZXJhbGx5CitsaW1pdHMgdGhlIHVwZGF0ZXMgb2YgYGF0aW1lYCB0byBvbmNlIHBlciBkYXkgb24gZmlsZXMgdGhhdCBhcmVuJ3QKK2JlaW5nIGNoYW5nZWQgKGFuZCBzeW1saW5rcyBuZXZlciBjaGFuZ2Ugb25jZSBjcmVhdGVkKS4gIEV2ZW4gd2l0aG91dAorYHJlbGF0aW1lYCwgbWFueSBmaWxlc3lzdGVtcyByZWNvcmQgYGF0aW1lYCB3aXRoIGEgb25lLXNlY29uZAorZ3JhbnVsYXJpdHksIHNvIG9ubHkgb25lIHVwZGF0ZSBwZXIgc2Vjb25kIGlzIHJlcXVpcmVkLgorCitJdCBpcyBlYXN5IHRvIHRlc3QgaWYgYW4gYGF0aW1lYCB1cGRhdGUgaXMgbmVlZGVkIHdoaWxlIGluIFJDVS13YWxrCittb2RlIGFuZCwgaWYgaXQgaXNuJ3QsIHRoZSB1cGRhdGUgY2FuIGJlIHNraXBwZWQgYW5kIFJDVS13YWxrIG1vZGUKK2NvbnRpbnVlcy4gIE9ubHkgd2hlbiBhbiBgYXRpbWVgIHVwZGF0ZSBpcyBhY3R1YWxseSByZXF1aXJlZCBkb2VzIHRoZQorcGF0aCB3YWxrIGRyb3AgZG93biB0byBSRUYtd2Fsay4gIEFsbCBvZiB0aGlzIGlzIGhhbmRsZWQgaW4gdGhlCitgZ2V0X2xpbmsoKWAgZnVuY3Rpb24uCisKK0EgZmV3IGZsYWdzCistLS0tLS0tLS0tLQorCitBIHN1aXRhYmxlIHdheSB0byB3cmFwIHVwIHRoaXMgdG91ciBvZiBwYXRobmFtZSB3YWxraW5nIGlzIHRvIGxpc3QKK3RoZSB2YXJpb3VzIGZsYWdzIHRoYXQgY2FuIGJlIHN0b3JlZCBpbiB0aGUgYG5hbWVpZGF0YWAgdG8gZ3VpZGUgdGhlCitsb29rdXAgcHJvY2Vzcy4gIE1hbnkgb2YgdGhlc2UgYXJlIG9ubHkgbWVhbmluZ2Z1bCBvbiB0aGUgZmluYWwKK2NvbXBvbmVudCwgb3RoZXJzIHJlZmxlY3QgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHBhdGhuYW1lIGxvb2t1cC4KK0FuZCB0aGVuIHRoZXJlIGlzIGBMT09LVVBfRU1QVFlgLCB3aGljaCBkb2Vzbid0IGZpdCBjb25jZXB0dWFsbHkgd2l0aAordGhlIG90aGVycy4gIElmIHRoaXMgaXMgbm90IHNldCwgYW4gZW1wdHkgcGF0aG5hbWUgY2F1c2VzIGFuIGVycm9yCit2ZXJ5IGVhcmx5IG9uLiAgSWYgaXQgaXMgc2V0LCBlbXB0eSBwYXRobmFtZXMgYXJlIG5vdCBjb25zaWRlcmVkIHRvIGJlCithbiBlcnJvci4KKworIyMjIEdsb2JhbCBzdGF0ZSBmbGFncyAjIyMKKworV2UgaGF2ZSBhbHJlYWR5IG1ldCB0d28gZ2xvYmFsIHN0YXRlIGZsYWdzOiBgTE9PS1VQX1JDVWAgYW5kCitgTE9PS1VQX1JFVkFMYC4gIFRoZXNlIHNlbGVjdCBiZXR3ZWVuIG9uZSBvZiB0aHJlZSBvdmVyYWxsIGFwcHJvYWNoZXMKK3RvIGxvb2t1cDogUkNVLXdhbGssIFJFRi13YWxrLCBhbmQgUkVGLXdhbGsgd2l0aCBmb3JjZWQgcmV2YWxpZGF0aW9uLgorCitgTE9PS1VQX1BBUkVOVGAgaW5kaWNhdGVzIHRoYXQgdGhlIGZpbmFsIGNvbXBvbmVudCBoYXNuJ3QgYmVlbiByZWFjaGVkCit5ZXQuICBUaGlzIGlzIHByaW1hcmlseSB1c2VkIHRvIHRlbGwgdGhlIGF1ZGl0IHN1YnN5c3RlbSB0aGUgZnVsbAorY29udGV4dCBvZiBhIHBhcnRpY3VsYXIgYWNjZXNzIGJlaW5nIGF1ZGl0ZWQuCisKK2BMT09LVVBfUk9PVGAgaW5kaWNhdGVzIHRoYXQgdGhlIGByb290YCBmaWVsZCBpbiB0aGUgYG5hbWVpZGF0YWAgd2FzCitwcm92aWRlZCBieSB0aGUgY2FsbGVyLCBzbyBpdCBzaG91bGRuJ3QgYmUgcmVsZWFzZWQgd2hlbiBpdCBpcyBubworbG9uZ2VyIG5lZWRlZC4KKworYExPT0tVUF9KVU1QRURgIG1lYW5zIHRoYXQgdGhlIGN1cnJlbnQgZGVudHJ5IHdhcyBjaG9zZW4gbm90IGJlY2F1c2UKK2l0IGhhZCB0aGUgcmlnaHQgbmFtZSBidXQgZm9yIHNvbWUgb3RoZXIgcmVhc29uLiAgVGhpcyBoYXBwZW5zIHdoZW4KK2ZvbGxvd2luZyAiYC4uYCIsIGZvbGxvd2luZyBhIHN5bWxpbmsgdG8gYC9gLCBjcm9zc2luZyBhIG1vdW50IHBvaW50CitvciBhY2Nlc3NpbmcgYSAiYC9wcm9jLyRQSUQvZmQvJEZEYCIgc3ltbGluay4gIEluIHRoaXMgY2FzZSB0aGUKK2ZpbGVzeXN0ZW0gaGFzIG5vdCBiZWVuIGFza2VkIHRvIHJldmFsaWRhdGUgdGhlIG5hbWUgKHdpdGgKK2BkX3JldmFsaWRhdGUoKWApLiAgSW4gc3VjaCBjYXNlcyB0aGUgaW5vZGUgbWF5IHN0aWxsIG5lZWQgdG8gYmUKK3JldmFsaWRhdGVkLCBzbyBgZF9vcC0+ZF93ZWFrX3JldmFsaWRhdGUoKWAgaXMgY2FsbGVkIGlmCitgTE9PS1VQX0pVTVBFRGAgaXMgc2V0IHdoZW4gdGhlIGxvb2sgY29tcGxldGVzIC0gd2hpY2ggbWF5IGJlIGF0IHRoZQorZmluYWwgY29tcG9uZW50IG9yLCB3aGVuIGNyZWF0aW5nLCB1bmxpbmtpbmcsIG9yIHJlbmFtaW5nLCBhdCB0aGUgcGVudWx0aW1hdGUgY29tcG9uZW50LgorCisjIyMgRmluYWwtY29tcG9uZW50IGZsYWdzICMjIworCitTb21lIG9mIHRoZXNlIGZsYWdzIGFyZSBvbmx5IHNldCB3aGVuIHRoZSBmaW5hbCBjb21wb25lbnQgaXMgYmVpbmcKK2NvbnNpZGVyZWQuICBPdGhlcnMgYXJlIG9ubHkgY2hlY2tlZCBmb3Igd2hlbiBjb25zaWRlcmluZyB0aGF0IGZpbmFsCitjb21wb25lbnQuCisKK2BMT09LVVBfQVVUT01PVU5UYCBlbnN1cmVzIHRoYXQsIGlmIHRoZSBmaW5hbCBjb21wb25lbnQgaXMgYW4gYXV0b21vdW50Citwb2ludCwgdGhlbiB0aGUgbW91bnQgaXMgdHJpZ2dlcmVkLiAgU29tZSBvcGVyYXRpb25zIHdvdWxkIHRyaWdnZXIgaXQKK2FueXdheSwgYnV0IG9wZXJhdGlvbnMgbGlrZSBgc3RhdCgpYCBkZWxpYmVyYXRlbHkgZG9uJ3QuICBgc3RhdGZzKClgCituZWVkcyB0byB0cmlnZ2VyIHRoZSBtb3VudCBidXQgb3RoZXJ3aXNlIGJlaGF2ZXMgYSBsb3QgbGlrZSBgc3RhdCgpYCwgc28KK2l0IHNldHMgYExPT0tVUF9BVVRPTU9VTlRgLCBhcyBkb2VzICJgcXVvdGFjdGwoKWAiIGFuZCB0aGUgaGFuZGxpbmcgb2YKKyJgbW91bnQgLS1iaW5kYCIuCisKK2BMT09LVVBfRk9MTE9XYCBoYXMgYSBzaW1pbGFyIGZ1bmN0aW9uIHRvIGBMT09LVVBfQVVUT01PVU5UYCBidXQgZm9yCitzeW1saW5rcy4gIFNvbWUgc3lzdGVtIGNhbGxzIHNldCBvciBjbGVhciBpdCBpbXBsaWNpdGx5LCB3aGlsZQorb3RoZXJzIGhhdmUgQVBJIGZsYWdzIHN1Y2ggYXMgYEFUX1NZTUxJTktfRk9MTE9XYCBhbmQKK2BVTU9VTlRfTk9GT0xMT1dgIHRvIGNvbnRyb2wgaXQuICBJdHMgZWZmZWN0IGlzIHNpbWlsYXIgdG8KK2BXQUxLX0dFVGAgdGhhdCB3ZSBhbHJlYWR5IG1ldCwgYnV0IGl0IGlzIHVzZWQgaW4gYSBkaWZmZXJlbnQgd2F5LgorCitgTE9PS1VQX0RJUkVDVE9SWWAgaW5zaXN0cyB0aGF0IHRoZSBmaW5hbCBjb21wb25lbnQgaXMgYSBkaXJlY3RvcnkuCitWYXJpb3VzIGNhbGxlcnMgc2V0IHRoaXMgYW5kIGl0IGlzIGFsc28gc2V0IHdoZW4gdGhlIGZpbmFsIGNvbXBvbmVudAoraXMgZm91bmQgdG8gYmUgZm9sbG93ZWQgYnkgYSBzbGFzaC4KKworRmluYWxseSBgTE9PS1VQX09QRU5gLCBgTE9PS1VQX0NSRUFURWAsIGBMT09LVVBfRVhDTGAsIGFuZAorYExPT0tVUF9SRU5BTUVfVEFSR0VUYCBhcmUgbm90IHVzZWQgZGlyZWN0bHkgYnkgdGhlIFZGUyBidXQgYXJlIG1hZGUKK2F2YWlsYWJsZSB0byB0aGUgZmlsZXN5c3RlbSBhbmQgcGFydGljdWxhcmx5IHRoZSBgLT5kX3JldmFsaWRhdGUoKWAKK21ldGhvZC4gIEEgZmlsZXN5c3RlbSBjYW4gY2hvb3NlIG5vdCB0byBib3RoZXIgcmV2YWxpZGF0aW5nIHRvbyBoYXJkCitpZiBpdCBrbm93cyB0aGF0IGl0IHdpbGwgYmUgYXNrZWQgdG8gb3BlbiBvciBjcmVhdGUgdGhlIGZpbGUgc29vbi4KK1RoZXNlIGZsYWdzIHdlcmUgcHJldmlvdXNseSB1c2VmdWwgZm9yIGAtPmxvb2t1cCgpYCB0b28gYnV0IHdpdGggdGhlCitpbnRyb2R1Y3Rpb24gb2YgYC0+YXRvbWljX29wZW4oKWAgdGhleSBhcmUgbGVzcyByZWxldmFudCB0aGVyZS4KKworRW5kIG9mIHRoZSByb2FkCistLS0tLS0tLS0tLS0tLS0KKworRGVzcGl0ZSBpdHMgY29tcGxleGl0eSwgYWxsIHRoaXMgcGF0aG5hbWUgbG9va3VwIGNvZGUgYXBwZWFycyB0byBiZQoraW4gZ29vZCBzaGFwZSAtIHZhcmlvdXMgcGFydHMgYXJlIGNlcnRhaW5seSBlYXNpZXIgdG8gdW5kZXJzdGFuZCBub3cKK3RoYW4gZXZlbiBhIGNvdXBsZSBvZiByZWxlYXNlcyBhZ28uICBCdXQgdGhhdCBkb2Vzbid0IG1lYW4gaXQgaXMKKyJmaW5pc2hlZCIuICAgQXMgYWxyZWFkeSBtZW50aW9uZWQsIFJDVS13YWxrIGN1cnJlbnRseSBvbmx5IGZvbGxvd3MKK3N5bWxpbmtzIHRoYXQgYXJlIHN0b3JlZCBpbiB0aGUgaW5vZGUgc28sIHdoaWxlIGl0IGhhbmRsZXMgbWFueSBleHQ0CitzeW1saW5rcywgaXQgZG9lc24ndCBoZWxwIHdpdGggTkZTLCBYRlMsIG9yIEJ0cmZzLiAgVGhhdCBzdXBwb3J0CitpcyBub3QgbGlrZWx5IHRvIGJlIGxvbmcgZGVsYXllZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcGF0aC1sb29rdXAudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wYXRoLWxvb2t1cC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI4OTMwZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcGF0aC1sb29rdXAudHh0CkBAIC0wLDAgKzEsMzgyIEBACitQYXRoIHdhbGtpbmcgYW5kIG5hbWUgbG9va3VwIGxvY2tpbmcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQYXRoIHJlc29sdXRpb24gaXMgdGhlIGZpbmRpbmcgYSBkZW50cnkgY29ycmVzcG9uZGluZyB0byBhIHBhdGggbmFtZSBzdHJpbmcsIGJ5CitwZXJmb3JtaW5nIGEgcGF0aCB3YWxrLiBUeXBpY2FsbHksIGZvciBldmVyeSBvcGVuKCksIHN0YXQoKSBldGMuLCB0aGUgcGF0aCBuYW1lCit3aWxsIGJlIHJlc29sdmVkLiBQYXRocyBhcmUgcmVzb2x2ZWQgYnkgd2Fsa2luZyB0aGUgbmFtZXNwYWNlIHRyZWUsIHN0YXJ0aW5nCit3aXRoIHRoZSBmaXJzdCBjb21wb25lbnQgb2YgdGhlIHBhdGhuYW1lIChlZy4gcm9vdCBvciBjd2QpIHdpdGggYSBrbm93biBkZW50cnksCit0aGVuIGZpbmRpbmcgdGhlIGNoaWxkIG9mIHRoYXQgZGVudHJ5LCB3aGljaCBpcyBuYW1lZCB0aGUgbmV4dCBjb21wb25lbnQgaW4gdGhlCitwYXRoIHN0cmluZy4gVGhlbiByZXBlYXRpbmcgdGhlIGxvb2t1cCBmcm9tIHRoZSBjaGlsZCBkZW50cnkgYW5kIGZpbmRpbmcgaXRzCitjaGlsZCB3aXRoIHRoZSBuZXh0IGVsZW1lbnQsIGFuZCBzbyBvbi4KKworU2luY2UgaXQgaXMgYSBmcmVxdWVudCBvcGVyYXRpb24gZm9yIHdvcmtsb2FkcyBsaWtlIG11bHRpdXNlciBlbnZpcm9ubWVudHMgYW5kCit3ZWIgc2VydmVycywgaXQgaXMgaW1wb3J0YW50IHRvIG9wdGltaXplIHRoaXMgY29kZS4KKworUGF0aCB3YWxraW5nIHN5bmNocm9uaXNhdGlvbiBoaXN0b3J5OgorUHJpb3IgdG8gMi41LjEwLCBkY2FjaGVfbG9jayB3YXMgYWNxdWlyZWQgaW4gZF9sb29rdXAgKGRjYWNoZSBoYXNoIGxvb2t1cCkgYW5kCit0aHVzIGluIGV2ZXJ5IGNvbXBvbmVudCBkdXJpbmcgcGF0aCBsb29rLXVwLiBTaW5jZSAyLjUuMTAgb253YXJkcywgZmFzdC13YWxrCithbGdvcml0aG0gY2hhbmdlZCB0aGlzIGJ5IGhvbGRpbmcgdGhlIGRjYWNoZV9sb2NrIGF0IHRoZSBiZWdpbm5pbmcgYW5kIHdhbGtpbmcKK2FzIG1hbnkgY2FjaGVkIHBhdGggY29tcG9uZW50IGRlbnRyaWVzIGFzIHBvc3NpYmxlLiBUaGlzIHNpZ25pZmljYW50bHkKK2RlY3JlYXNlcyB0aGUgbnVtYmVyIG9mIGFjcXVpc2l0aW9uIG9mIGRjYWNoZV9sb2NrLiBIb3dldmVyIGl0IGFsc28gaW5jcmVhc2VzCit0aGUgbG9jayBob2xkIHRpbWUgc2lnbmlmaWNhbnRseSBhbmQgYWZmZWN0cyBwZXJmb3JtYW5jZSBpbiBsYXJnZSBTTVAgbWFjaGluZXMuCitTaW5jZSAyLjUuNjIga2VybmVsLCBkY2FjaGUgaGFzIGJlZW4gdXNpbmcgYSBuZXcgbG9ja2luZyBtb2RlbCB0aGF0IHVzZXMgUkNVIHRvCittYWtlIGRjYWNoZSBsb29rLXVwIGxvY2stZnJlZS4KKworQWxsIHRoZSBhYm92ZSBhbGdvcml0aG1zIHJlcXVpcmVkIHRha2luZyBhIGxvY2sgYW5kIHJlZmVyZW5jZSBjb3VudCBvbiB0aGUKK2RlbnRyeSB0aGF0IHdhcyBsb29rZWQgdXAsIHNvIHRoYXQgbWF5IGJlIHVzZWQgYXMgdGhlIGJhc2lzIGZvciB3YWxraW5nIHRoZQorbmV4dCBwYXRoIGVsZW1lbnQuIFRoaXMgaXMgaW5lZmZpY2llbnQgYW5kIHVuc2NhbGFibGUuIEl0IGlzIGluZWZmaWNpZW50CitiZWNhdXNlIG9mIHRoZSBsb2NrcyBhbmQgYXRvbWljIG9wZXJhdGlvbnMgcmVxdWlyZWQgZm9yIGV2ZXJ5IGRlbnRyeSBlbGVtZW50CitzbG93cyB0aGluZ3MgZG93bi4gSXQgaXMgbm90IHNjYWxhYmxlIGJlY2F1c2UgbWFueSBwYXJhbGxlbCBhcHBsaWNhdGlvbnMgdGhhdAorYXJlIHBhdGgtd2FsayBpbnRlbnNpdmUgdGVuZCB0byBkbyBwYXRoIGxvb2t1cHMgc3RhcnRpbmcgZnJvbSBhIGNvbW1vbiBkZW50cnkKKyh1c3VhbGx5LCB0aGUgcm9vdCAiLyIgb3IgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkuIFNvIGNvbnRlbnRpb24gb24gdGhlc2UKK2NvbW1vbiBwYXRoIGVsZW1lbnRzIGNhdXNlcyBsb2NrIGFuZCBjYWNoZWxpbmUgcXVldWVpbmcuCisKK1NpbmNlIDIuNi4zOCwgUkNVIGlzIHVzZWQgdG8gbWFrZSBhIHNpZ25pZmljYW50IHBhcnQgb2YgdGhlIGVudGlyZSBwYXRoIHdhbGsKKyhpbmNsdWRpbmcgZGNhY2hlIGxvb2stdXApIGNvbXBsZXRlbHkgInN0b3JlLWZyZWUiIChzbywgbm8gbG9ja3MsIGF0b21pY3MsIG9yCitldmVuIHN0b3JlcyBpbnRvIGNhY2hlbGluZXMgb2YgY29tbW9uIGRlbnRyaWVzKS4gVGhpcyBpcyBrbm93biBhcyAicmN1LXdhbGsiCitwYXRoIHdhbGtpbmcuCisKK1BhdGggd2Fsa2luZyBvdmVydmlldworPT09PT09PT09PT09PT09PT09PT09CisKK0EgbmFtZSBzdHJpbmcgc3BlY2lmaWVzIGEgc3RhcnQgKHJvb3QgZGlyZWN0b3J5LCBjd2QsIGZkLXJlbGF0aXZlKSBhbmQgYQorc2VxdWVuY2Ugb2YgZWxlbWVudHMgKGRpcmVjdG9yeSBlbnRyeSBuYW1lcyksIHdoaWNoIHRvZ2V0aGVyIHJlZmVyIHRvIGEgcGF0aCBpbgordGhlIG5hbWVzcGFjZS4gQSBwYXRoIGlzIHJlcHJlc2VudGVkIGFzIGEgKGRlbnRyeSwgdmZzbW91bnQpIHR1cGxlLiBUaGUgbmFtZQorZWxlbWVudHMgYXJlIHN1Yi1zdHJpbmdzLCBzZXBhcmF0ZWQgYnkgJy8nLgorCitOYW1lIGxvb2t1cHMgd2lsbCB3YW50IHRvIGZpbmQgYSBwYXJ0aWN1bGFyIHBhdGggdGhhdCBhIG5hbWUgc3RyaW5nIHJlZmVycyB0bworKHVzdWFsbHkgdGhlIGZpbmFsIGVsZW1lbnQsIG9yIHBhcmVudCBvZiBmaW5hbCBlbGVtZW50KS4gVGhpcyBpcyBkb25lIGJ5IHRha2luZwordGhlIHBhdGggZ2l2ZW4gYnkgdGhlIG5hbWUncyBzdGFydGluZyBwb2ludCAod2hpY2ggd2Uga25vdyBpbiBhZHZhbmNlIC0tIGVnLgorY3VycmVudC0+ZnMtPmN3ZCBvciBjdXJyZW50LT5mcy0+cm9vdCkgYXMgdGhlIGZpcnN0IHBhcmVudCBvZiB0aGUgbG9va3VwLiBUaGVuCitpdGVyYXRpdmVseSBmb3IgZWFjaCBzdWJzZXF1ZW50IG5hbWUgZWxlbWVudCwgbG9vayB1cCB0aGUgY2hpbGQgb2YgdGhlIGN1cnJlbnQKK3BhcmVudCB3aXRoIHRoZSBnaXZlbiBuYW1lIGFuZCBpZiBpdCBpcyBub3QgdGhlIGRlc2lyZWQgZW50cnksIG1ha2UgaXQgdGhlCitwYXJlbnQgZm9yIHRoZSBuZXh0IGxvb2t1cC4KKworQSBwYXJlbnQsIG9mIGNvdXJzZSwgbXVzdCBiZSBhIGRpcmVjdG9yeSwgYW5kIHdlIG11c3QgaGF2ZSBhcHByb3ByaWF0ZQorcGVybWlzc2lvbnMgb24gdGhlIHBhcmVudCBpbm9kZSB0byBiZSBhYmxlIHRvIHdhbGsgaW50byBpdC4KKworVHVybmluZyB0aGUgY2hpbGQgaW50byBhIHBhcmVudCBmb3IgdGhlIG5leHQgbG9va3VwIHJlcXVpcmVzIG1vcmUgY2hlY2tzIGFuZAorcHJvY2VkdXJlcy4gU3ltbGlua3MgZXNzZW50aWFsbHkgc3Vic3RpdHV0ZSB0aGUgc3ltbGluayBuYW1lIGZvciB0aGUgdGFyZ2V0CituYW1lIGluIHRoZSBuYW1lIHN0cmluZywgYW5kIHJlcXVpcmUgc29tZSByZWN1cnNpdmUgcGF0aCB3YWxraW5nLiAgTW91bnQgcG9pbnRzCittdXN0IGJlIGZvbGxvd2VkIGludG8gKHRodXMgY2hhbmdpbmcgdGhlIHZmc21vdW50IHRoYXQgc3Vic2VxdWVudCBwYXRoIGVsZW1lbnRzCityZWZlciB0byksIHN3aXRjaGluZyBmcm9tIHRoZSBtb3VudCBwb2ludCBwYXRoIHRvIHRoZSByb290IG9mIHRoZSBwYXJ0aWN1bGFyCittb3VudGVkIHZmc21vdW50LiBUaGVzZSBiZWhhdmlvdXJzIGFyZSB2YXJpb3VzbHkgbW9kaWZpZWQgZGVwZW5kaW5nIG9uIHRoZQorZXhhY3QgcGF0aCB3YWxraW5nIGZsYWdzLgorCitQYXRoIHdhbGtpbmcgdGhlbiBtdXN0LCBicm9hZGx5LCBkbyBzZXZlcmFsIHBhcnRpY3VsYXIgdGhpbmdzOgorLSBmaW5kIHRoZSBzdGFydCBwb2ludCBvZiB0aGUgd2FsazsKKy0gcGVyZm9ybSBwZXJtaXNzaW9ucyBhbmQgdmFsaWRpdHkgY2hlY2tzIG9uIGlub2RlczsKKy0gcGVyZm9ybSBkY2FjaGUgaGFzaCBuYW1lIGxvb2t1cHMgb24gKHBhcmVudCwgbmFtZSBlbGVtZW50KSB0dXBsZXM7CistIHRyYXZlcnNlIG1vdW50IHBvaW50czsKKy0gdHJhdmVyc2Ugc3ltbGlua3M7CistIGxvb2t1cCBhbmQgY3JlYXRlIG1pc3NpbmcgcGFydHMgb2YgdGhlIHBhdGggb24gZGVtYW5kLgorCitTYWZlIHN0b3JlLWZyZWUgbG9vay11cCBvZiBkY2FjaGUgaGFzaCB0YWJsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRGNhY2hlIG5hbWUgbG9va3VwCistLS0tLS0tLS0tLS0tLS0tLS0KK0luIG9yZGVyIHRvIGxvb2t1cCBhIGRjYWNoZSAocGFyZW50LCBuYW1lKSB0dXBsZSwgd2UgdGFrZSBhIGhhc2ggb24gdGhlIHR1cGxlCithbmQgdXNlIHRoYXQgdG8gc2VsZWN0IGEgYnVja2V0IGluIHRoZSBkY2FjaGUtaGFzaCB0YWJsZS4gVGhlIGxpc3Qgb2YgZW50cmllcworaW4gdGhhdCBidWNrZXQgaXMgdGhlbiB3YWxrZWQsIGFuZCB3ZSBkbyBhIGZ1bGwgY29tcGFyaXNvbiBvZiBlYWNoIGVudHJ5CithZ2FpbnN0IG91ciAocGFyZW50LCBuYW1lKSB0dXBsZS4KKworVGhlIGhhc2ggbGlzdHMgYXJlIFJDVSBwcm90ZWN0ZWQsIHNvIGxpc3Qgd2Fsa2luZyBpcyBub3Qgc2VyaWFsaXNlZCB3aXRoCitjb25jdXJyZW50IHVwZGF0ZXMgKGluc2VydGlvbiwgZGVsZXRpb24gZnJvbSB0aGUgaGFzaCkuIFRoaXMgaXMgYSBzdGFuZGFyZCBSQ1UKK2xpc3QgYXBwbGljYXRpb24gd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHJlbmFtZXMsIHdoaWNoIHdpbGwgYmUgY292ZXJlZCBiZWxvdy4KKworUGFyZW50IGFuZCBuYW1lIG1lbWJlcnMgb2YgYSBkZW50cnksIGFzIHdlbGwgYXMgaXRzIG1lbWJlcnNoaXAgaW4gdGhlIGRjYWNoZQoraGFzaCwgYW5kIGl0cyBpbm9kZSBhcmUgcHJvdGVjdGVkIGJ5IHRoZSBwZXItZGVudHJ5IGRfbG9jayBzcGlubG9jay4gQQorcmVmZXJlbmNlIGlzIHRha2VuIG9uIHRoZSBkZW50cnkgKHdoaWxlIHRoZSBmaWVsZHMgYXJlIHZlcmlmaWVkIHVuZGVyIGRfbG9jayksCithbmQgdGhpcyBzdGFiaWxpc2VzIGl0cyBkX2lub2RlIHBvaW50ZXIgYW5kIGFjdHVhbCBpbm9kZS4gVGhpcyBnaXZlcyBhIHN0YWJsZQorcG9pbnQgdG8gcGVyZm9ybSB0aGUgbmV4dCBzdGVwIG9mIG91ciBwYXRoIHdhbGsgYWdhaW5zdC4KKworVGhlc2UgbWVtYmVycyBhcmUgYWxzbyBwcm90ZWN0ZWQgYnkgZF9zZXEgc2VxbG9jaywgYWx0aG91Z2ggdGhpcyBvZmZlcnMKK3JlYWQtb25seSBwcm90ZWN0aW9uIGFuZCBubyBkdXJhYmlsaXR5IG9mIHJlc3VsdHMsIHNvIGNhcmUgbXVzdCBiZSB0YWtlbiB3aGVuCit1c2luZyBkX3NlcSBmb3Igc3luY2hyb25pc2F0aW9uIChzZWUgc2VxY291bnQgYmFzZWQgbG9va3VwcywgYmVsb3cpLgorCitSZW5hbWVzCistLS0tLS0tCitCYWNrIHRvIHRoZSByZW5hbWUgY2FzZS4gSW4gdXN1YWwgUkNVIHByb3RlY3RlZCBsaXN0cywgdGhlIG9ubHkgb3BlcmF0aW9ucyB0aGF0Cit3aWxsIGhhcHBlbiB0byBhbiBvYmplY3QgaXMgaW5zZXJ0aW9uLCBhbmQgdGhlbiBldmVudHVhbGx5IHJlbW92YWwgZnJvbSB0aGUKK2xpc3QuIFRoZSBvYmplY3Qgd2lsbCBub3QgYmUgcmV1c2VkIHVudGlsIGFuIFJDVSBncmFjZSBwZXJpb2QgaXMgY29tcGxldGUuCitUaGlzIGVuc3VyZXMgdGhlIFJDVSBsaXN0IHRyYXZlcnNhbCBwcmltaXRpdmVzIGNhbiBydW4gb3ZlciB0aGUgb2JqZWN0IHdpdGhvdXQKK3Byb2JsZW1zIChzZWUgUkNVIGRvY3VtZW50YXRpb24gZm9yIGhvdyB0aGlzIHdvcmtzKS4KKworSG93ZXZlciB3aGVuIGEgZGVudHJ5IGlzIHJlbmFtZWQsIGl0cyBoYXNoIHZhbHVlIGNhbiBjaGFuZ2UsIHJlcXVpcmluZyBpdCB0byBiZQorbW92ZWQgdG8gYSBuZXcgaGFzaCBsaXN0LiBBbGxvY2F0aW5nIGFuZCBpbnNlcnRpbmcgYSBuZXcgYWxpYXMgd291bGQgYmUKK2V4cGVuc2l2ZSBhbmQgYWxzbyBwcm9ibGVtYXRpYyBmb3IgZGlyZWN0b3J5IGRlbnRyaWVzLiBMYXRlbmN5IHdvdWxkIGJlIGZhciB0bworaGlnaCB0byB3YWl0IGZvciBhIGdyYWNlIHBlcmlvZCBhZnRlciByZW1vdmluZyB0aGUgZGVudHJ5IGFuZCBiZWZvcmUgaW5zZXJ0aW5nCitpdCBpbiB0aGUgbmV3IGhhc2ggYnVja2V0LiBTbyB3aGF0IGlzIGRvbmUgaXMgdG8gaW5zZXJ0IHRoZSBkZW50cnkgaW50byB0aGUKK25ldyBsaXN0IGltbWVkaWF0ZWx5LgorCitIb3dldmVyLCB3aGVuIHRoZSBkZW50cnkncyBsaXN0IHBvaW50ZXJzIGFyZSB1cGRhdGVkIHRvIHBvaW50IHRvIG9iamVjdHMgaW4gdGhlCituZXcgbGlzdCBiZWZvcmUgd2FpdGluZyBmb3IgYSBncmFjZSBwZXJpb2QsIHRoaXMgY2FuIHJlc3VsdCBpbiBhIGNvbmN1cnJlbnQgUkNVCitsb29rdXAgb2YgdGhlIG9sZCBsaXN0IHZlZXJpbmcgb2ZmIGludG8gdGhlIG5ldyAoaW5jb3JyZWN0KSBsaXN0IGFuZCBtaXNzaW5nCit0aGUgcmVtYWluaW5nIGRlbnRyaWVzIG9uIHRoZSBsaXN0LgorCitUaGVyZSBpcyBubyBmdW5kYW1lbnRhbCBwcm9ibGVtIHdpdGggd2Fsa2luZyBkb3duIHRoZSB3cm9uZyBsaXN0LCBiZWNhdXNlIHRoZQorZGVudHJ5IGNvbXBhcmlzb25zIHdpbGwgbmV2ZXIgbWF0Y2guIEhvd2V2ZXIgaXQgaXMgZmF0YWwgdG8gbWlzcyBhIG1hdGNoaW5nCitkZW50cnkuIFNvIGEgc2VxbG9jayBpcyB1c2VkIHRvIGRldGVjdCB3aGVuIGEgcmVuYW1lIGhhcyBvY2N1cnJlZCwgYW5kIHNvIHRoZQorbG9va3VwIGNhbiBiZSByZXRyaWVkLgorCisgICAgICAgICAxICAgICAgMiAgICAgIDMKKyAgICAgICAgKy0tLSsgICstLS0rICArLS0tKworaGxpc3QtLT58IE4tKy0+fCBOLSstPnwgTi0rLT4KK2hlYWQgPC0tKy1QIHw8LSstUCB8PC0rLVAgfAorICAgICAgICArLS0tKyAgKy0tLSsgICstLS0rCisKK1JlbmFtZSBvZiBkZW50cnkgMiBtYXkgcmVxdWlyZSBpdCBkZWxldGVkIGZyb20gdGhlIGFib3ZlIGxpc3QsIGFuZCBpbnNlcnRlZAoraW50byBhIG5ldyBsaXN0LiBEZWxldGluZyAyIGdpdmVzIHRoZSBmb2xsb3dpbmcgbGlzdC4KKworICAgICAgICAgMSAgICAgICAgICAgICAzCisgICAgICAgICstLS0rICAgICAgICAgKy0tLSsgICAgIChkb24ndCB3b3JyeSwgdGhlIGxvbmdlciBwb2ludGVycyBkbyBub3QKK2hsaXN0LS0+fCBOLSstLS0tLS0tLT58IE4tKy0+ICAgIGltcG9zZSBhIG1lYXN1cmFibGUgcGVyZm9ybWFuY2Ugb3ZlcmhlYWQKK2hlYWQgPC0tKy1QIHw8LS0tLS0tLS0rLVAgfCAgICAgIG9uIG1vZGVybiBDUFVzKQorICAgICAgICArLS0tKyAgICAgICAgICstLS0rCisgICAgICAgICAgXiAgICAgIDIgICAgICBeCisgICAgICAgICAgfCAgICArLS0tKyAgICB8CisgICAgICAgICAgfCAgICB8IE4tKy0tLS0rCisgICAgICAgICAgKy0tLS0rLVAgfAorICAgICAgICAgICAgICAgKy0tLSsKKworVGhpcyBpcyBhIHN0YW5kYXJkIFJDVS1saXN0IGRlbGV0aW9uLCB3aGljaCBsZWF2ZXMgdGhlIGRlbGV0ZWQgb2JqZWN0J3MKK3BvaW50ZXJzIGludGFjdCwgc28gYSBjb25jdXJyZW50IGxpc3Qgd2Fsa2VyIHRoYXQgaXMgY3VycmVudGx5IGxvb2tpbmcgYXQKK29iamVjdCAyIHdpbGwgY29ycmVjdGx5IGNvbnRpbnVlIHRvIG9iamVjdCAzIHdoZW4gaXQgaXMgdGltZSB0byB0cmF2ZXJzZSB0aGUKK25leHQgb2JqZWN0LgorCitIb3dldmVyLCB3aGVuIGluc2VydGluZyBvYmplY3QgMiBvbnRvIGEgbmV3IGxpc3QsIHdlIGVuZCB1cCB3aXRoIHRoaXM6CisKKyAgICAgICAgIDEgICAgICAgICAgICAgMworICAgICAgICArLS0tKyAgICAgICAgICstLS0rCitobGlzdC0tPnwgTi0rLS0tLS0tLS0+fCBOLSstPgoraGVhZCA8LS0rLVAgfDwtLS0tLS0tLSstUCB8CisgICAgICAgICstLS0rICAgICAgICAgKy0tLSsKKyAgICAgICAgICAgICAgICAgMgorICAgICAgICAgICAgICAgKy0tLSsKKyAgICAgICAgICAgICAgIHwgTi0rLS0tLT4KKyAgICAgICAgICA8LS0tLSstUCB8CisgICAgICAgICAgICAgICArLS0tKworCitCZWNhdXNlIHdlIGRpZG4ndCB3YWl0IGZvciBhIGdyYWNlIHBlcmlvZCwgdGhlcmUgbWF5IGJlIGEgY29uY3VycmVudCBsb29rdXAKK3N0aWxsIGF0IDIuIE5vdyB3aGVuIGl0IGZvbGxvd3MgMidzICduZXh0JyBwb2ludGVyLCBpdCB3aWxsIHdhbGsgb2ZmIGludG8KK2Fub3RoZXIgbGlzdCB3aXRob3V0IGV2ZXIgaGF2aW5nIGNoZWNrZWQgb2JqZWN0IDMuCisKK0EgcmVsYXRlZCwgYnV0IGRpc3RpbmN0bHkgZGlmZmVyZW50LCBpc3N1ZSBpcyB0aGF0IG9mIHJlbmFtZSBhdG9taWNpdHkgdmVyc3VzCitsb29rdXAgb3BlcmF0aW9ucy4gSWYgYSBmaWxlIGlzIHJlbmFtZWQgZnJvbSAnQScgdG8gJ0InLCBhIGxvb2t1cCBtdXN0IG9ubHkKK2ZpbmQgZWl0aGVyICdBJyBvciAnQicuIFNvIGlmIGEgbG9va3VwIG9mICdBJyByZXR1cm5zIE5VTEwsIGEgc3Vic2VxdWVudCBsb29rdXAKK29mICdCJyBtdXN0IHN1Y2NlZWQgKG5vdGUgdGhlIHJldmVyc2UgaXMgbm90IHRydWUpLgorCitCZXR3ZWVuIGRlbGV0aW5nIHRoZSBkZW50cnkgZnJvbSB0aGUgb2xkIGhhc2ggbGlzdCwgYW5kIGluc2VydGluZyBpdCBvbiB0aGUgbmV3CitoYXNoIGxpc3QsIGEgbG9va3VwIG1heSBmaW5kIG5laXRoZXIgJ0EnIG5vciAnQicgbWF0Y2hpbmcgdGhlIGRlbnRyeS4gVGhlIHNhbWUKK3JlbmFtZSBzZXFsb2NrIGlzIGFsc28gdXNlZCB0byBjb3ZlciB0aGlzIHJhY2UgaW4gbXVjaCB0aGUgc2FtZSB3YXksIGJ5CityZXRyeWluZyBhIG5lZ2F0aXZlIGxvb2t1cCByZXN1bHQgaWYgYSByZW5hbWUgd2FzIGluIHByb2dyZXNzLgorCitTZXFjb3VudCBiYXNlZCBsb29rdXBzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJbiByZWZjb3VudCBiYXNlZCBkY2FjaGUgbG9va3VwcywgZF9sb2NrIGlzIHVzZWQgdG8gc2VyaWFsaXNlIGFjY2VzcyB0bwordGhlIGRlbnRyeSwgc3RhYmlsaXNpbmcgaXQgd2hpbGUgY29tcGFyaW5nIGl0cyBuYW1lIGFuZCBwYXJlbnQgYW5kIHRoZW4KK3Rha2luZyBhIHJlZmVyZW5jZSBjb3VudCAodGhlIHJlZmVyZW5jZSBjb3VudCB0aGVuIGdpdmVzIGEgc3RhYmxlIHBsYWNlIHRvCitzdGFydCB0aGUgbmV4dCBwYXJ0IG9mIHRoZSBwYXRoIHdhbGsgZnJvbSkuCisKK0FzIGV4cGxhaW5lZCBhYm92ZSwgd2Ugd291bGQgbGlrZSB0byBkbyBwYXRoIHdhbGtpbmcgd2l0aG91dCB0YWtpbmcgbG9ja3Mgb3IKK3JlZmVyZW5jZSBjb3VudHMgb24gaW50ZXJtZWRpYXRlIGRlbnRyaWVzIGFsb25nIHRoZSBwYXRoLiBUbyBkbyB0aGlzLCBhIHBlcgorZGVudHJ5IHNlcWxvY2sgKGRfc2VxKSBpcyB1c2VkIHRvIHRha2UgYSAiY29oZXJlbnQgc25hcHNob3QiIG9mIHdoYXQgdGhlIGRlbnRyeQorbG9va3MgbGlrZSAoaXRzIG5hbWUsIHBhcmVudCwgYW5kIGlub2RlKS4gVGhhdCBzbmFwc2hvdCBpcyB0aGVuIHVzZWQgdG8gc3RhcnQKK3RoZSBuZXh0IHBhcnQgb2YgdGhlIHBhdGggd2Fsay4gV2hlbiBsb2FkaW5nIHRoZSBjb2hlcmVudCBzbmFwc2hvdCB1bmRlciBkX3NlcSwKK2NhcmUgbXVzdCBiZSB0YWtlbiB0byBsb2FkIHRoZSBtZW1iZXJzIHVwLWZyb250LCBhbmQgdXNlIHRob3NlIHBvaW50ZXJzIHJhdGhlcgordGhhbiByZWxvYWRpbmcgZnJvbSB0aGUgZGVudHJ5IGxhdGVyIG9uIChvdGhlcndpc2Ugd2UnZCBoYXZlIGludGVyZXN0aW5nIHRoaW5ncworbGlrZSBkX2lub2RlIGdvaW5nIE5VTEwgdW5kZXJuZWF0aCB1cywgaWYgdGhlIG5hbWUgd2FzIHVubGlua2VkKS4KKworQWxzbyBpbXBvcnRhbnQgaXMgdG8gYXZvaWQgcGVyZm9ybWluZyBhbnkgZGVzdHJ1Y3RpdmUgb3BlcmF0aW9ucyAocHJldHR5IG11Y2g6CitubyBub24tYXRvbWljIHN0b3JlcyB0byBzaGFyZWQgZGF0YSksIGFuZCB0byByZWNoZWNrIHRoZSBzZXFjb3VudCB3aGVuIHdlIGFyZQorImRvbmUiIHdpdGggdGhlIG9wZXJhdGlvbi4gUmV0cnkgb3IgYWJvcnQgaWYgdGhlIHNlcWNvdW50IGRvZXMgbm90IG1hdGNoLgorQXZvaWRpbmcgZGVzdHJ1Y3RpdmUgb3IgY2hhbmdpbmcgb3BlcmF0aW9ucyBtZWFucyB3ZSBjYW4gZWFzaWx5IHVud2luZCBmcm9tCitmYWlsdXJlLgorCitXaGF0IHRoaXMgbWVhbnMgaXMgdGhhdCBhIGNhbGxlciwgcHJvdmlkZWQgdGhleSBhcmUgaG9sZGluZyBSQ1UgbG9jayB0bworcHJvdGVjdCB0aGUgZGVudHJ5IG9iamVjdCBmcm9tIGRpc2FwcGVhcmluZywgY2FuIHBlcmZvcm0gYSBzZXFjb3VudCBiYXNlZAorbG9va3VwIHdoaWNoIGRvZXMgbm90IGluY3JlbWVudCB0aGUgcmVmY291bnQgb24gdGhlIGRlbnRyeSBvciB3cml0ZSB0bworaXQgaW4gYW55IHdheS4gVGhpcyByZXR1cm5lZCBkZW50cnkgY2FuIGJlIHVzZWQgZm9yIHN1YnNlcXVlbnQgb3BlcmF0aW9ucywKK3Byb3ZpZGVkIHRoYXQgZF9zZXEgaXMgcmVjaGVja2VkIGFmdGVyIHRoYXQgb3BlcmF0aW9uIGlzIGNvbXBsZXRlLgorCitJbm9kZXMgYXJlIGFsc28gcmN1IGZyZWVkLCBzbyB0aGUgc2VxY291bnQgbG9va3VwIGRlbnRyeSdzIGlub2RlIG1heSBhbHNvIGJlCitxdWVyaWVkIGZvciBwZXJtaXNzaW9ucy4KKworV2l0aCB0aGlzIHR3byBwYXJ0cyBvZiB0aGUgcHV6emxlLCB3ZSBjYW4gZG8gcGF0aCBsb29rdXBzIHdpdGhvdXQgdGFraW5nCitsb2NrcyBvciByZWZjb3VudHMgb24gZGVudHJ5IGVsZW1lbnRzLgorCitSQ1Utd2FsayBwYXRoIHdhbGtpbmcgZGVzaWduCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1BhdGggd2Fsa2luZyBjb2RlIG5vdyBoYXMgdHdvIGRpc3RpbmN0IG1vZGVzLCByZWYtd2FsayBhbmQgcmN1LXdhbGsuIHJlZi13YWxrCitpcyB0aGUgdHJhZGl0aW9uYWxbKl0gd2F5IG9mIHBlcmZvcm1pbmcgZGNhY2hlIGxvb2t1cHMgdXNpbmcgZF9sb2NrIHRvCitzZXJpYWxpc2UgY29uY3VycmVudCBtb2RpZmljYXRpb25zIHRvIHRoZSBkZW50cnkgYW5kIHRha2UgYSByZWZlcmVuY2UgY291bnQgb24KK2l0LiByZWYtd2FsayBpcyBzaW1wbGUgYW5kIG9idmlvdXMsIGFuZCBtYXkgc2xlZXAsIHRha2UgbG9ja3MsIGV0YyB3aGlsZSBwYXRoCit3YWxraW5nIGlzIG9wZXJhdGluZyBvbiBlYWNoIGRlbnRyeS4gcmN1LXdhbGsgdXNlcyBzZXFjb3VudCBiYXNlZCBkZW50cnkKK2xvb2t1cHMsIGFuZCBjYW4gcGVyZm9ybSBsb29rdXAgb2YgaW50ZXJtZWRpYXRlIGVsZW1lbnRzIHdpdGhvdXQgYW55IHN0b3JlcyB0bworc2hhcmVkIGRhdGEgaW4gdGhlIGRlbnRyeSBvciBpbm9kZS4gcmN1LXdhbGsgY2FuIG5vdCBiZSBhcHBsaWVkIHRvIGFsbCBjYXNlcywKK2VnLiBpZiB0aGUgZmlsZXN5c3RlbSBtdXN0IHNsZWVwIG9yIHBlcmZvcm0gbm9uIHRyaXZpYWwgb3BlcmF0aW9ucywgcmN1LXdhbGsKK211c3QgYmUgc3dpdGNoZWQgdG8gcmVmLXdhbGsgbW9kZS4KKworWypdIFJDVSBpcyBzdGlsbCB1c2VkIGZvciB0aGUgZGVudHJ5IGhhc2ggbG9va3VwIGluIHJlZi13YWxrLCBidXQgbm90IHRoZSBmdWxsCisgICAgcGF0aCB3YWxrLgorCitXaGVyZSByZWYtd2FsayB1c2VzIGEgc3RhYmxlLCByZWZjb3VudGVkIGBgcGFyZW50JycgdG8gd2FsayB0aGUgcmVtYWluaW5nCitwYXRoIHN0cmluZywgcmN1LXdhbGsgdXNlcyBhIGRfc2VxIHByb3RlY3RlZCBzbmFwc2hvdC4gV2hlbiBsb29raW5nIHVwIGEKK2NoaWxkIG9mIHRoaXMgcGFyZW50IHNuYXBzaG90LCB3ZSBvcGVuIGRfc2VxIGNyaXRpY2FsIHNlY3Rpb24gb24gdGhlIGNoaWxkCitiZWZvcmUgY2xvc2luZyBkX3NlcSBjcml0aWNhbCBzZWN0aW9uIG9uIHRoZSBwYXJlbnQuIFRoaXMgZ2l2ZXMgYW4gaW50ZXJsb2NraW5nCitsYWRkZXIgb2Ygc25hcHNob3RzIHRvIHdhbGsgZG93bi4KKworCisgICAgIHByb2MgMTAxCisgICAgICAvLS0tLS0tLS0tLS0tLS0tLVwKKyAgICAgLyBjb21tOiAgICAidmkiICAgIFwKKyAgICAvICBmcy5yb290OiBkZW50cnkwICBcCisgICAgXCAgZnMuY3dkOiAgZGVudHJ5MiAgLworICAgICBcICAgICAgICAgICAgICAgICAgLworICAgICAgXC0tLS0tLS0tLS0tLS0tLS0vCisKK1NvIHdoZW4gdmkgd2FudHMgdG8gb3BlbigiL2hvbWUvbnBpZ2dpbi90ZXN0LmMiLCBPX1JEV1IpLCB0aGVuIGl0IHdpbGwKK3N0YXJ0IGZyb20gY3VycmVudC0+ZnMtPnJvb3QsIHdoaWNoIGlzIGEgcGlubmVkIGRlbnRyeS4gQWx0ZXJuYXRpdmVseSwKKyIuL3Rlc3QuYyIgd291bGQgc3RhcnQgZnJvbSBjd2Q7IGJvdGggbmFtZXMgcmVmZXIgdG8gdGhlIHNhbWUgcGF0aCBpbgordGhlIGNvbnRleHQgb2YgcHJvYzEwMS4KKworICAgICBkZW50cnkgMAorICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgcmN1LXdhbGsgYmVnaW5zIGhlcmUsIHdlIG5vdGUgZF9zZXEsIGNoZWNrIHRoZQorICAgIHwgbmFtZTogICAgIi8iICAgICAgICB8ICAgaW5vZGUncyBwZXJtaXNzaW9uLCBhbmQgdGhlbiBsb29rIHVwIHRoZSBuZXh0CisgICAgfCBpbm9kZTogICAxMCAgICAgICAgIHwgICBwYXRoIGVsZW1lbnQgd2hpY2ggaXMgImhvbWUiLi4uCisgICAgfCBjaGlsZHJlbjoiaG9tZSIsIC4uLnwKKyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICB8CisgICAgIGRlbnRyeSAxIFYKKyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgIC4uLiB3aGljaCBicmluZ3MgdXMgaGVyZS4gV2UgZmluZCBkZW50cnkxIHZpYQorICAgIHwgbmFtZTogICAgImhvbWUiICAgICB8ICAgaGFzaCBsb29rdXAsIHRoZW4gbm90ZSBkX3NlcSBhbmQgY29tcGFyZSBuYW1lCisgICAgfCBpbm9kZTogICA2NzggICAgICAgIHwgICBzdHJpbmcgYW5kIHBhcmVudCBwb2ludGVyLiBXaGVuIHdlIGhhdmUgYSBtYXRjaCwKKyAgICB8IGNoaWxkcmVuOiJucGlnZ2luIiAgfCAgIHdlIG5vdyByZWNoZWNrIHRoZSBkX3NlcSBvZiBkZW50cnkwLiBUaGVuIHdlCisgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICBjaGVjayBpbm9kZSBhbmQgbG9vayB1cCB0aGUgbmV4dCBlbGVtZW50LgorICAgICAgICAgICAgICB8CisgICAgIGRlbnRyeTIgIFYKKyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgIE5vdGU6IGlmIGRlbnRyeTAgaXMgbm93IG1vZGlmaWVkLCBsb29rdXAgaXMKKyAgICB8IG5hbWU6ICAgICJucGlnZ2luIiAgfCAgIG5vdCBuZWNlc3NhcmlseSBpbnZhbGlkLCBzbyB3ZSBuZWVkIG9ubHkga2VlcCBhCisgICAgfCBpbm9kZTogICA1NDMgICAgICAgIHwgICBwYXJlbnQgZm9yIGRfc2VxIHZlcmlmaWNhdGlvbiwgYW5kIGdyYW5kcGFyZW50cworICAgIHwgY2hpbGRyZW46ImEuYyIsIC4uLiB8ICAgY2FuIGJlIGZvcmdvdHRlbi4KKyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICB8CisgICAgIGRlbnRyeTMgIFYKKyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBvdXIgZGVzdGluYXRpb24gZGVudHJ5LgorICAgIHwgbmFtZTogICAgImEuYyIgICAgICB8ICAgV2Ugbm93IHRha2UgaXRzIGRfbG9jaywgdmVyaWZ5IGRfc2VxIG9mIHRoaXMKKyAgICB8IGlub2RlOiAgIDE0MjIxICAgICAgfCAgIGRlbnRyeS4gSWYgdGhhdCBjaGVja3Mgb3V0LCB3ZSBjYW4gaW5jcmVtZW50CisgICAgfCBjaGlsZHJlbjpOVUxMICAgICAgIHwgICBpdHMgcmVmY291bnQgYmVjYXVzZSB3ZSdyZSBob2xkaW5nIGRfbG9jay4KKyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCitUYWtpbmcgYSByZWZjb3VudCBvbiBhIGRlbnRyeSBmcm9tIHJjdS13YWxrIG1vZGUsIGJ5IHRha2luZyBpdHMgZF9sb2NrLAorcmUtY2hlY2tpbmcgaXRzIGRfc2VxLCBhbmQgdGhlbiBpbmNyZW1lbnRpbmcgaXRzIHJlZmNvdW50IGlzIGNhbGxlZAorImRyb3BwaW5nIHJjdSIgb3IgZHJvcHBpbmcgZnJvbSByY3Utd2FsayBpbnRvIHJlZi13YWxrIG1vZGUuCisKK0l0IGlzLCBpbiBzb21lIHNlbnNlLCBhIGJpdCBvZiBhIGhvdXNlIG9mIGNhcmRzLiBJZiB0aGUgc2VxY291bnQgY2hlY2sgb2YgdGhlCitwYXJlbnQgc25hcHNob3QgZmFpbHMsIHRoZSBob3VzZSBjb21lcyBkb3duLCBiZWNhdXNlIHdlIGhhZCBjbG9zZWQgdGhlIGRfc2VxCitzZWN0aW9uIG9uIHRoZSBncmFuZHBhcmVudCwgc28gd2UgaGF2ZSBub3RoaW5nIGxlZnQgdG8gc3RhbmQgb24uIEluIHRoYXQgY2FzZSwKK3RoZSBwYXRoIHdhbGsgbXVzdCBiZSBmdWxseSByZXN0YXJ0ZWQgKHdoaWNoIHdlIGRvIGluIHJlZi13YWxrIG1vZGUsIHRvIGF2b2lkCitsaXZlIGxvY2tzKS4gSXQgaXMgY29zdGx5IHRvIGhhdmUgYSBmdWxsIHJlc3RhcnQsIGJ1dCBmb3J0dW5hdGVseSB0aGV5IGFyZQorcXVpdGUgcmFyZS4KKworV2hlbiB3ZSByZWFjaCBhIHBvaW50IHdoZXJlIHNsZWVwaW5nIGlzIHJlcXVpcmVkLCBvciBhIGZpbGVzeXN0ZW0gY2FsbG91dAorcmVxdWlyZXMgcmVmLXdhbGssIHRoZW4gaW5zdGVhZCBvZiByZXN0YXJ0aW5nIHRoZSB3YWxrLCB3ZSBhdHRlbXB0IHRvIGRyb3AgcmN1CithdCB0aGUgbGFzdCBrbm93biBnb29kIGRlbnRyeSB3ZSBoYXZlLiBBdm9pZGluZyBhIGZ1bGwgcmVzdGFydCBpbiByZWYtd2FsayBpbgordGhlc2UgY2FzZXMgaXMgZnVuZGFtZW50YWwgZm9yIHBlcmZvcm1hbmNlIGFuZCBzY2FsYWJpbGl0eSBiZWNhdXNlIGJsb2NraW5nCitvcGVyYXRpb25zIHN1Y2ggYXMgY3JlYXRlcyBhbmQgdW5saW5rcyBhcmUgbm90IHVuY29tbW9uLgorCitUaGUgZGV0YWlsZWQgZGVzaWduIGZvciByY3Utd2FsayBpcyBsaWtlIHRoaXM6CisqIExPT0tVUF9SQ1UgaXMgc2V0IGluIG5kLT5mbGFncywgd2hpY2ggZGlzdGluZ3Vpc2hlcyByY3Utd2FsayBmcm9tIHJlZi13YWxrLgorKiBUYWtlIHRoZSBSQ1UgbG9jayBmb3IgdGhlIGVudGlyZSBwYXRoIHdhbGssIHN0YXJ0aW5nIHdpdGggdGhlIGFjcXVpcmluZworICBvZiB0aGUgc3RhcnRpbmcgcGF0aCAoZWcuIHJvb3QvY3dkL2ZkLXBhdGgpLiBTbyBub3cgZGVudHJ5IHJlZmNvdW50cyBhcmUKKyAgbm90IHJlcXVpcmVkIGZvciBkZW50cnkgcGVyc2lzdGVuY2UuCisqIHN5bmNocm9uaXplX3JjdSBpcyBjYWxsZWQgd2hlbiB1bnJlZ2lzdGVyaW5nIGEgZmlsZXN5c3RlbSwgc28gd2UgY2FuCisgIGFjY2VzcyBkX29wcyBhbmQgaV9vcHMgZHVyaW5nIHJjdS13YWxrLgorKiBTaW1pbGFybHkgdGFrZSB0aGUgdmZzbW91bnQgbG9jayBmb3IgdGhlIGVudGlyZSBwYXRoIHdhbGsuIFNvIG5vdyBtbnQKKyAgcmVmY291bnRzIGFyZSBub3QgcmVxdWlyZWQgZm9yIHBlcnNpc3RlbmNlLiBBbHNvIHdlIGFyZSBmcmVlIHRvIHBlcmZvcm0gbW91bnQKKyAgbG9va3VwcywgYW5kIHRvIGFzc3VtZSBkZW50cnkgbW91bnQgcG9pbnRzIGFuZCBtb3VudCByb290cyBhcmUgc3RhYmxlIHVwIGFuZAorICBkb3duIHRoZSBwYXRoLgorKiBIYXZlIGEgcGVyLWRlbnRyeSBzZXFsb2NrIHRvIHByb3RlY3QgdGhlIGRlbnRyeSBuYW1lLCBwYXJlbnQsIGFuZCBpbm9kZSwKKyAgc28gd2UgY2FuIGxvYWQgdGhpcyB0dXBsZSBhdG9taWNhbGx5LCBhbmQgYWxzbyBjaGVjayB3aGV0aGVyIGFueSBvZiBpdHMKKyAgbWVtYmVycyBoYXZlIGNoYW5nZWQuCisqIERlbnRyeSBsb29rdXBzIChiYXNlZCBvbiBwYXJlbnQsIGNhbmRpZGF0ZSBzdHJpbmcgdHVwbGUpIHJlY2hlY2sgdGhlIHBhcmVudAorICBzZXF1ZW5jZSBhZnRlciB0aGUgY2hpbGQgaXMgZm91bmQgaW4gY2FzZSBhbnl0aGluZyBjaGFuZ2VkIGluIHRoZSBwYXJlbnQKKyAgZHVyaW5nIHRoZSBwYXRoIHdhbGsuCisqIGlub2RlIGlzIGFsc28gUkNVIHByb3RlY3RlZCBzbyB3ZSBjYW4gbG9hZCBkX2lub2RlIGFuZCB1c2UgdGhlIGlub2RlIGZvcgorICBsaW1pdGVkIHRoaW5ncy4KKyogaV9tb2RlLCBpX3VpZCwgaV9naWQgY2FuIGJlIHRlc3RlZCBmb3IgZXhlYyBwZXJtaXNzaW9ucyBkdXJpbmcgcGF0aCB3YWxrLgorKiBpX29wIGNhbiBiZSBsb2FkZWQuCisqIFdoZW4gdGhlIGRlc3RpbmF0aW9uIGRlbnRyeSBpcyByZWFjaGVkLCBkcm9wIHJjdSB0aGVyZSAoaWUuIHRha2UgZF9sb2NrLAorICB2ZXJpZnkgZF9zZXEsIGluY3JlbWVudCByZWZjb3VudCkuCisqIElmIHNlcWxvY2sgdmVyaWZpY2F0aW9uIGZhaWxzIGFueXdoZXJlIGFsb25nIHRoZSBwYXRoLCBkbyBhIGZ1bGwgcmVzdGFydAorICBvZiB0aGUgcGF0aCBsb29rdXAgaW4gcmVmLXdhbGsgbW9kZS4gLUVDSElMRCB0ZW5kcyB0byBiZSB1c2VkIChmb3Igd2FudCBvZgorICBhIGJldHRlciBlcnJubykgdG8gc2lnbmFsIGFuIHJjdS13YWxrIGZhaWx1cmUuCisKK1RoZSBjYXNlcyB3aGVyZSByY3Utd2FsayBjYW5ub3QgY29udGludWUgYXJlOgorKiBOVUxMIGRlbnRyeSAoaWUuIGFueSB1bmNhY2hlZCBwYXRoIGVsZW1lbnQpCisqIEZvbGxvd2luZyBsaW5rcworCitJdCBtYXkgYmUgcG9zc2libGUgZXZlbnR1YWxseSB0byBtYWtlIGZvbGxvd2luZyBsaW5rcyByY3Utd2FsayBhd2FyZS4KKworVW5jYWNoZWQgcGF0aCBlbGVtZW50cyB3aWxsIGFsd2F5cyByZXF1aXJlIGRyb3BwaW5nIHRvIHJlZi13YWxrIG1vZGUsIGF0IHRoZQordmVyeSBsZWFzdCBiZWNhdXNlIGlfbXV0ZXggbmVlZHMgdG8gYmUgZ3JhYmJlZCwgYW5kIG9iamVjdHMgYWxsb2NhdGVkLgorCitGaW5hbCBub3RlOgorInN0b3JlLWZyZWUiIHBhdGggd2Fsa2luZyBpcyBub3Qgc3RyaWN0bHkgc3RvcmUgZnJlZS4gV2UgdGFrZSB2ZnNtb3VudCBsb2NrCithbmQgcmVmY291bnRzIChib3RoIG9mIHdoaWNoIGNhbiBiZSBtYWRlIHBlci1jcHUpLCBhbmQgd2UgYWxzbyBzdG9yZSB0byB0aGUKK3N0YWNrICh3aGljaCBpcyBlc3NlbnRpYWxseSBDUFUtbG9jYWwpLCBhbmQgd2UgYWxzbyBoYXZlIHRvIHRha2UgbG9ja3MgYW5kCityZWZjb3VudCBvbiBmaW5hbCBkZW50cnkuCisKK1RoZSBwb2ludCBpcyB0aGF0IHNoYXJlZCBkYXRhLCB3aGVyZSBwcmFjdGljYWxseSBwb3NzaWJsZSwgaXMgbm90IGxvY2tlZAorb3Igc3RvcmVkIGludG8uIFRoZSByZXN1bHQgaXMgbWFzc2l2ZSBpbXByb3ZlbWVudHMgaW4gcGVyZm9ybWFuY2UgYW5kCitzY2FsYWJpbGl0eSBvZiBwYXRoIHJlc29sdXRpb24uCisKKworSW50ZXJlc3Rpbmcgc3RhdGlzdGljcworPT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZm9sbG93aW5nIHRhYmxlIGdpdmVzIHJjdSBsb29rdXAgc3RhdGlzdGljcyBmb3IgYSBmZXcgc2ltcGxlIHdvcmtsb2FkcworKDJzMTJjMjR0IFdlc3RtZXJlLCBkZWJpYW4gbm9uLWdyYXBoaWNhbCBzeXN0ZW0pLiBVbmdyYWNlZnVsIGFyZSBhdHRlbXB0cyB0bworZHJvcCByY3UgdGhhdCBmYWlsIGR1ZSB0byBkX3NlcSBmYWlsdXJlIGFuZCByZXF1aXJpbmcgdGhlIGVudGlyZSBwYXRoIGxvb2t1cAorYWdhaW4uIE90aGVyIGNhc2VzIGFyZSBzdWNjZXNzZnVsIHJjdS1kcm9wcyB0aGF0IGFyZSByZXF1aXJlZCBiZWZvcmUgdGhlIGZpbmFsCitlbGVtZW50LCBub2RlbnRyeSBmb3IgbWlzc2luZyBkZW50cnksIHJldmFsaWRhdGUgZm9yIGZpbGVzeXN0ZW0gcmV2YWxpZGF0ZQorcm91dGluZSByZXF1aXJpbmcgcmN1IGRyb3AsIHBlcm1pc3Npb24gZm9yIHBlcm1pc3Npb24gY2hlY2sgcmVxdWlyaW5nIGRyb3AsCithbmQgbGluayBmb3Igc3ltbGluayB0cmF2ZXJzYWwgcmVxdWlyaW5nIGRyb3AuCisKKyAgICAgcmN1LWxvb2t1cHMgICAgIHJlc3RhcnQgIG5vZGVudHJ5ICAgICAgICAgIGxpbmsgIHJldmFsaWRhdGUgIHBlcm1pc3Npb24KK2Jvb3R1cCAgICAgNDcxMjEgICAgICAgICAgIDAgICAgICA0NjI0ICAgICAgICAgIDEwMTAgICAgICAgMTAyODMgICAgICAgIDc4NTIKK2RiZW5jaCAgMjUzODY3OTMgICAgICAgICAgIDAgICA2Nzc4NjU5KDI2LjclKSAgICAgNTUgICAgICAgICA1NDkgICAgICAgIDExNTYKK2tidWlsZCAgIDI2OTY2NzIgICAgICAgICAgMTAgICAgIDY0NDQyKDIuMyUpICAxMDg3NjQoNC4wJSkgICAgIDEgICAgICAgIDE1OTAKK2dpdCBkaWZmICAgMzk2MDUgICAgICAgICAgIDAgICAgICAgIDI4ICAgICAgICAgICAgIDIgICAgICAgICAgIDAgICAgICAgICAxMDYKK3Zmc3Rlc3QgMjQxODU0OTIgICAgICAgIDQ5NDUgICAgNzA4NzI1KDIuOSUpIDEwNzYxMzYoNC40JSkgICAgIDAgICAgICAgIDI2NTEKKworV2hhdCB0aGlzIHNob3dzIGlzIHRoYXQgZmFpbGVkIHJjdS13YWxrIGxvb2t1cHMsIGllLiBvbmVzIHRoYXQgYXJlIHJlc3RhcnRlZAorZW50aXJlbHkgd2l0aCByZWYtd2FsaywgYXJlIHF1aXRlIHJhcmUuIEV2ZW4gdGhlICJ2ZnN0ZXN0IiBjYXNlIHdoaWNoCitzcGVjaWZpY2FsbHkgaGFzIGNvbmN1cnJlbnQgcmVuYW1lcy9ta2Rpci9ybWRpci8gY3JlYXQvdW5saW5rL2V0YyB0byBleGVyY2lzZQorc3VjaCByYWNlcyBpcyBub3Qgc2hvd2luZyBhIGh1Z2UgYW1vdW50IG9mIHJlc3RhcnRzLgorCitEcm9wcGluZyBmcm9tIHJjdS13YWxrIHRvIHJlZi13YWxrIG1lYW4gdGhhdCB3ZSBoYXZlIGVuY291bnRlcmVkIGEgZGVudHJ5IHdoZXJlCit0aGUgcmVmZXJlbmNlIGNvdW50IG5lZWRzIHRvIGJlIHRha2VuIGZvciBzb21lIHJlYXNvbi4gVGhpcyBpcyBlaXRoZXIgYmVjYXVzZQord2UgaGF2ZSByZWFjaGVkIHRoZSB0YXJnZXQgb2YgdGhlIHBhdGggd2Fsaywgb3IgYmVjYXVzZSB3ZSBoYXZlIGVuY291bnRlcmVkIGEKK2NvbmRpdGlvbiB0aGF0IGNhbid0IGJlIHJlc29sdmVkIGluIHJjdS13YWxrIG1vZGUuICBJZGVhbGx5LCB3ZSBkcm9wIHJjdS13YWxrCitvbmx5IHdoZW4gd2UgaGF2ZSByZWFjaGVkIHRoZSB0YXJnZXQgZGVudHJ5LCBzbyB0aGUgb3RoZXIgc3RhdGlzdGljcyBzaG93IHdoZXJlCit0aGlzIGRvZXMgbm90IGhhcHBlbi4KKworTm90ZSB0aGF0IGEgZ3JhY2VmdWwgZHJvcCBmcm9tIHJjdS13YWxrIG1vZGUgZHVlIHRvIHNvbWV0aGluZyBzdWNoIGFzIHRoZQorZGVudHJ5IG5vdCBleGlzdGluZyAod2hpY2ggY2FuIGJlIGNvbW1vbikgaXMgbm90IG5lY2Vzc2FyaWx5IGEgZmFpbHVyZSBvZgorcmN1LXdhbGsgc2NoZW1lLCBiZWNhdXNlIHNvbWUgZWxlbWVudHMgb2YgdGhlIHBhdGggbWF5IGhhdmUgYmVlbiB3YWxrZWQgaW4KK3JjdS13YWxrIG1vZGUuIFRoZSBmdXJ0aGVyIHdlIGdldCBmcm9tIGNvbW1vbiBwYXRoIGVsZW1lbnRzIChzdWNoIGFzIGN3ZCBvcgorcm9vdCksIHRoZSBsZXNzIGNvbnRlbmRlZCB0aGUgZGVudHJ5IGlzIGxpa2VseSB0byBiZS4gVGhlIGNsb3NlciB3ZSBhcmUgdG8KK2NvbW1vbiBwYXRoIGVsZW1lbnRzLCB0aGUgbW9yZSBsaWtlbHkgdGhleSB3aWxsIGV4aXN0IGluIGRlbnRyeSBjYWNoZS4KKworCitQYXBlcnMgYW5kIG90aGVyIGRvY3VtZW50YXRpb24gb24gZGNhY2hlIGxvY2tpbmcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisxLiBTY2FsaW5nIGRjYWNoZSB3aXRoIFJDVSAoaHR0cDovL2xpbnV4am91cm5hbC5jb20vYXJ0aWNsZS5waHA/c2lkPTcxMjQpLgorCisyLiBodHRwOi8vbHNlLnNvdXJjZWZvcmdlLm5ldC9sb2NraW5nL2RjYWNoZS9kY2FjaGUuaHRtbAorCiszLiBwYXRoLWxvb2t1cC5tZCBpbiB0aGlzIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcG9obWVsZnMvZGVzaWduX25vdGVzLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcG9obWVsZnMvZGVzaWduX25vdGVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWVmOTEzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wb2htZWxmcy9kZXNpZ25fbm90ZXMudHh0CkBAIC0wLDAgKzEsNzIgQEAKK1BPSE1FTEZTOiBQYXJhbGxlbCBPcHRpbWl6ZWQgSG9zdCBNZXNzYWdlIEV4Y2hhbmdlIExheWVyZWQgRmlsZSBTeXN0ZW0uCisKKwkJRXZnZW5peSBQb2x5YWtvdiA8emJyQGlvcmVtYXAubmV0PgorCitIb21lcGFnZTogaHR0cDovL3d3dy5pb3JlbWFwLm5ldC9wcm9qZWN0cy9wb2htZWxmcworCitQT0hNRUxGUyBmaXJzdCBiZWdhbiBhcyBhIG5ldHdvcmsgZmlsZXN5c3RlbSB3aXRoIGNvaGVyZW50IGxvY2FsIGRhdGEgYW5kCittZXRhZGF0YSBjYWNoZXMgYnV0IGlzIG5vdyBldm9sdmluZyBpbnRvIGEgcGFyYWxsZWwgZGlzdHJpYnV0ZWQgZmlsZXN5c3RlbS4KKworTWFpbiBmZWF0dXJlcyBvZiB0aGlzIEZTIGluY2x1ZGU6CisgKiBMb2NhbGx5IGNvaGVyZW50IGNhY2hlIGZvciBkYXRhIGFuZCBtZXRhZGF0YSB3aXRoIChwb3RlbnRpYWxseSkgYnl0ZS1yYW5nZSBsb2Nrcy4KKwlTaW5jZSBhbGwgTGludXggZmlsZXN5c3RlbXMgbG9jayB0aGUgd2hvbGUgaW5vZGUgZHVyaW5nIHdyaXRpbmcsIGFsZ29yaXRobQorCWlzIHZlcnkgc2ltcGxlIGFuZCBkb2VzIG5vdCB1c2UgYnl0ZS1yYW5nZXMsIGFsdGhvdWdoIHRoZXkgYXJlIHNlbnQgaW4KKwlsb2NraW5nIG1lc3NhZ2VzLgorICogQ29tcGxldGVseSBhc3luYyBwcm9jZXNzaW5nIG9mIGFsbCBldmVudHMgZXhjZXB0IGNyZWF0aW9uIG9mIGhhcmQgYW5kIHN5bWJvbGljCisJbGlua3MsIGFuZCByZW5hbWUgZXZlbnRzLgorCU9iamVjdCBjcmVhdGlvbiBhbmQgZGF0YSByZWFkaW5nIGFuZCB3cml0aW5nIGFyZSBwcm9jZXNzZWQgYXN5bmNocm9ub3VzbHkuCisgKiBGbGV4aWJsZSBvYmplY3QgYXJjaGl0ZWN0dXJlIG9wdGltaXplZCBmb3IgbmV0d29yayBwcm9jZXNzaW5nLgorCUFiaWxpdHkgdG8gY3JlYXRlIGxvbmcgcGF0aHMgdG8gb2JqZWN0cyBhbmQgcmVtb3ZlIGFyYml0cmFyaWx5IGh1Z2UKKwlkaXJlY3RvcmllcyB3aXRoIGEgc2luZ2xlIG5ldHdvcmsgY29tbWFuZC4KKwkobGlrZSByZW1vdmluZyB0aGUgd2hvbGUga2VybmVsIHRyZWUgdmlhIGEgc2luZ2xlIG5ldHdvcmsgY29tbWFuZCkuCisgKiBWZXJ5IGhpZ2ggcGVyZm9ybWFuY2UuCisgKiBGYXN0IGFuZCBzY2FsYWJsZSBtdWx0aXRocmVhZGVkIHVzZXJzcGFjZSBzZXJ2ZXIuIEJlaW5nIGluIHVzZXJzcGFjZSBpdCB3b3JrcworCXdpdGggYW55IHVuZGVybHlpbmcgZmlsZXN5c3RlbSBhbmQgc3RpbGwgaXMgbXVjaCBmYXN0ZXIgdGhhbiBhc3luYyBpbi1rZXJuZWwgTkZTIG9uZS4KKyAqIENsaWVudCBpcyBhYmxlIHRvIHN3aXRjaCBiZXR3ZWVuIGRpZmZlcmVudCBzZXJ2ZXJzIChpZiBvbmUgZ29lcyBkb3duLCBjbGllbnQKKwlhdXRvbWF0aWNhbGx5IHJlY29ubmVjdHMgdG8gc2Vjb25kIGFuZCBzbyBvbikuCisgKiBUcmFuc2FjdGlvbnMgc3VwcG9ydC4gRnVsbCBmYWlsb3ZlciBmb3IgYWxsIG9wZXJhdGlvbnMuCisJUmVzZW5kaW5nIHRyYW5zYWN0aW9ucyB0byBkaWZmZXJlbnQgc2VydmVycyBvbiB0aW1lb3V0IG9yIGVycm9yLgorICogUmVhZCByZXF1ZXN0IChkYXRhIHJlYWQsIGRpcmVjdG9yeSBsaXN0aW5nLCBsb29rdXAgcmVxdWVzdHMpIGJhbGFuY2luZyBiZXR3ZWVuIG11bHRpcGxlIHNlcnZlcnMuCisgKiBXcml0ZSByZXF1ZXN0cyBhcmUgcmVwbGljYXRlZCB0byBtdWx0aXBsZSBzZXJ2ZXJzIGFuZCBjb21wbGV0ZWQgb25seSB3aGVuIGFsbCBvZiB0aGVtIGFyZSBhY2tlZC4KKyAqIEFiaWxpdHkgdG8gYWRkIGFuZC9vciByZW1vdmUgc2VydmVycyBmcm9tIHRoZSB3b3JraW5nIHNldCBhdCBydW4tdGltZS4KKyAqIFN0cm9uZyBhdXRoZW50aWZpY2F0aW9uIGFuZCBwb3NzaWJsZSBkYXRhIGVuY3J5cHRpb24gaW4gbmV0d29yayBjaGFubmVsLgorICogRXh0ZW5kZWQgYXR0cmlidXRlcyBzdXBwb3J0LgorCitQT0hNRUxGUyBpcyBiYXNlZCBvbiB0cmFuc2FjdGlvbnMsIHdoaWNoIGFyZSBwb3RlbnRpYWxseSBsb25nLXN0YW5kaW5nIG9iamVjdHMgdGhhdCBsaXZlCitpbiB0aGUgY2xpZW50J3MgbWVtb3J5LiBFYWNoIHRyYW5zYWN0aW9uIGNvbnRhaW5zIGFsbCB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIHByb2Nlc3MgYSBnaXZlbgorY29tbWFuZCAob3Igc2V0IG9mIGNvbW1hbmRzLCB3aGljaCBpcyBmcmVxdWVudGx5IHVzZWQgZHVyaW5nIGRhdGEgd3JpdGluZzogc2luZ2xlIHRyYW5zYWN0aW9ucworY2FuIGNvbnRhaW4gY3JlYXRpb24gYW5kIGRhdGEgd3JpdGluZyBjb21tYW5kcykuIFRyYW5zYWN0aW9ucyBhcmUgY29tbWl0dGVkIGJ5IGFsbCB0aGUgc2VydmVycwordG8gd2hpY2ggdGhleSBhcmUgc2VudCBhbmQsIGluIGNhc2Ugb2YgZmFpbHVyZXMsIGFyZSBldmVudHVhbGx5IHJlc2VudCBvciBkcm9wcGVkIHdpdGggYW4gZXJyb3IuCitGb3IgZXhhbXBsZSwgcmVhZGluZyB3aWxsIHJldHVybiBhbiBlcnJvciBpZiBubyBzZXJ2ZXJzIGFyZSBhdmFpbGFibGUuCisKK1BPSE1FTEZTIHVzZXMgYSBhc3luY2hyb25vdXMgYXBwcm9hY2ggdG8gZGF0YSBwcm9jZXNzaW5nLiBDb3VydGVzeSBvZiB0cmFuc2FjdGlvbnMsIGl0IGlzCitwb3NzaWJsZSB0byBkZXRhY2ggcmVwbGllcyBmcm9tIHJlcXVlc3RzIGFuZCwgaWYgdGhlIGNvbW1hbmQgcmVxdWlyZXMgZGF0YSB0byBiZSByZWNlaXZlZCwgdGhlCitjYWxsZXIgc2xlZXBzIHdhaXRpbmcgZm9yIGl0LiBUaHVzLCBpdCBpcyBwb3NzaWJsZSB0byBpc3N1ZSBtdWx0aXBsZSByZWFkIGNvbW1hbmRzIHRvIGRpZmZlcmVudAorc2VydmVycyBhbmQgYXN5bmMgdGhyZWFkcyB3aWxsIHBpY2sgdXAgcmVwbGllcyBpbiBwYXJhbGxlbCwgZmluZCBhcHByb3ByaWF0ZSB0cmFuc2FjdGlvbnMgaW4gdGhlCitzeXN0ZW0gYW5kIHB1dCB0aGUgZGF0YSB3aGVyZSBpdCBiZWxvbmdzIChsaWtlIHRoZSBwYWdlIG9yIGlub2RlIGNhY2hlKS4KKworVGhlIG1haW4gZmVhdHVyZSBvZiBQT0hNRUxGUyBpcyB3cml0ZWJhY2sgZGF0YSBhbmQgdGhlIG1ldGFkYXRhIGNhY2hlLgorT25seSBhIGZldyBub24tcGVyZm9ybWFuY2UgY3JpdGljYWwgb3BlcmF0aW9ucyB1c2UgdGhlIHdyaXRlLXRocm91Z2ggY2FjaGUgYW5kCithcmUgc3luY2hyb25vdXM6IGhhcmQgYW5kIHN5bWJvbGljIGxpbmsgY3JlYXRpb24sIGFuZCBvYmplY3QgcmVuYW1lLiBDcmVhdGlvbiwKK3JlbW92YWwgb2Ygb2JqZWN0cyBhbmQgZGF0YSB3cml0aW5nIGFyZSBhc3luY2hyb25vdXMgYW5kIGFyZSBzZW50IHRvCit0aGUgc2VydmVyIGR1cmluZyBzeXN0ZW0gd3JpdGViYWNrLiBPbmx5IG9uZSB3cml0ZXIgYXQgYSB0aW1lIGlzIGFsbG93ZWQgZm9yIGFueQorZ2l2ZW4gaW5vZGUsIHdoaWNoIGlzIGd1YXJkZWQgYnkgYW4gYXBwcm9wcmlhdGUgbG9ja2luZyBwcm90b2NvbC4KK0JlY2F1c2Ugb2YgdGhpcyBmZWF0dXJlLCBQT0hNRUxGUyBpcyBleHRyZW1lbHkgZmFzdCBhdCBtZXRhZGF0YSBpbnRlbnNpdmUKK3dvcmtsb2FkcyBhbmQgY2FuIGZ1bGx5IHV0aWxpemUgdGhlIGJhbmR3aWR0aCB0byB0aGUgc2VydmVycyB3aGVuIGRvaW5nIGJ1bGsKK2RhdGEgdHJhbnNmZXJzLgorCitQT0hNRUxGUyBjbGllbnRzIG9wZXJhdGUgd2l0aCBhIHdvcmtpbmcgc2V0IG9mIHNlcnZlcnMgYW5kIGFyZSBjYXBhYmxlIG9mIGJhbGFuY2luZyByZWFkLW9ubHkKK29wZXJhdGlvbnMgKGxpa2UgbG9va3VwcyBvciBkaXJlY3RvcnkgbGlzdGluZ3MpIGJldHdlZW4gdGhlbSBhY2NvcmRpbmcgdG8gSU8gcHJpb3JpdGllcy4KK0FkbWluaXN0cmF0b3JzIGNhbiBhZGQgb3IgcmVtb3ZlIHNlcnZlcnMgZnJvbSB0aGUgc2V0IGF0IHJ1bi10aW1lIHZpYSBzcGVjaWFsIGNvbW1hbmRzIChkZXNjcmliZWQKK2luIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcG9obWVsZnMvaW5mby50eHQgZmlsZSkuIFdyaXRlcyBhcmUgcmVwbGljYXRlZCB0byBhbGwgc2VydmVycywgd2hpY2gKK2FyZSBjb25uZWN0ZWQgd2l0aCB3cml0ZSBwZXJtaXNzaW9uIHR1cm5lZCBvbi4gSU8gcHJpb3JpdHkgYW5kIHBlcm1pc3Npb25zIGNhbiBiZSBjaGFuZ2VkIGluCitydW4tdGltZS4KKworUE9ITUVMRlMgaXMgY2FwYWJsZSBvZiBmdWxsIGRhdGEgY2hhbm5lbCBlbmNyeXB0aW9uIGFuZC9vciBzdHJvbmcgY3J5cHRvIGhhc2hpbmcuCitPbmUgY2FuIHNlbGVjdCBhbnkga2VybmVsIHN1cHBvcnRlZCBjaXBoZXIsIGVuY3J5cHRpb24gbW9kZSwgaGFzaCB0eXBlIGFuZCBvcGVyYXRpb24gbW9kZQorKGhtYWMgb3IgZGlnZXN0KS4gSXQgaXMgYWxzbyBwb3NzaWJsZSB0byB1c2UgYm90aCBvciBuZWl0aGVyIChkZWZhdWx0KS4gQ3J5cHRvIGNvbmZpZ3VyYXRpb24KK2lzIGNoZWNrZWQgZHVyaW5nIG1vdW50IHRpbWUgYW5kLCBpZiB0aGUgc2VydmVyIGRvZXMgbm90IHN1cHBvcnQgaXQsIGFwcHJvcHJpYXRlIGNhcGFiaWxpdGllcword2lsbCBiZSBkaXNhYmxlZCBvciBtb3VudCB3aWxsIGZhaWwgKGlmICdjcnlwdG9fZmFpbF91bnN1cHBvcnRlZCcgbW91bnQgb3B0aW9uIGlzIHNwZWNpZmllZCkuCitDcnlwdG8gcGVyZm9ybWFuY2UgaGVhdmlseSBkZXBlbmRzIG9uIHRoZSBudW1iZXIgb2YgY3J5cHRvIHRocmVhZHMsIHdoaWNoIGFzeW5jaHJvbm91c2x5IHBlcmZvcm0KK2NyeXB0byBvcGVyYXRpb25zIGFuZCBzZW5kIHRoZSByZXN1bHRpbmcgZGF0YSB0byBzZXJ2ZXIgb3Igc3VibWl0IGl0IHVwIHRoZSBzdGFjay4gVGhpcyBudW1iZXIKK2NhbiBiZSBjb250cm9sbGVkIHZpYSBhIG1vdW50IG9wdGlvbi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcG9obWVsZnMvaW5mby50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3BvaG1lbGZzL2luZm8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiMmU0MTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3BvaG1lbGZzL2luZm8udHh0CkBAIC0wLDAgKzEsOTkgQEAKK1BPSE1FTEZTIHVzYWdlIGluZm9ybWF0aW9uLgorCitNb3VudCBvcHRpb25zLgorQWxsIGJ1dCBpbmRleCwgbnVtYmVyIG9mIGNyeXB0byB0aHJlYWRzIGFuZCBtYXhpbXVtIElPIHNpemUgY2FuIGNoYW5nZWQgdmlhIHJlbW91bnQuCisKK2lkeD0ldQorIEVhY2ggbW91bnRwb2ludCBpcyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWFsIGluZGV4IHZpYSB0aGlzIG9wdGlvbi4KKyBBZG1pbmlzdHJhdG9yIGNhbiBhZGQgb3IgcmVtb3ZlIHNlcnZlcnMgZnJvbSB0aGUgZ2l2ZW4gaW5kZXgsIHNvIGFsbCBtb3VudHMsCisgd2hpY2ggd2VyZSBhdHRhY2hlZCB0byBpdCwgYXJlIHVwZGF0ZWQuCisgRGVmYXVsdCBpdCBpcyAwLgorCit0cmFuc19zY2FuX3RpbWVvdXQ9JXUKKyBUaGlzIHRpbWVvdXQsIGV4cHJlc3NlZCBpbiBtaWxsaXNlY29uZHMsIHNwZWNpZmllcyB0aW1lIHRvIHNjYW4gdHJhbnNhY3Rpb24KKyB0cmVlcyBsb29raW5nIGZvciBzdGFsZSByZXF1ZXN0cywgd2hpY2ggaGF2ZSB0byBiZSByZXNlbnQsIG9yIGlmIG51bWJlciBvZgorIHJldHJpZXMgZXhjZWVkIHNwZWNpZmllZCBsaW1pdCwgZHJvcHBlZCB3aXRoIGVycm9yLgorIERlZmF1bHQgaXMgNSBzZWNvbmRzLgorCitkcm9wX3NjYW5fdGltZW91dD0ldQorIEludGVybmFsIHRpbWVvdXQsIGV4cHJlc3NlZCBpbiBtaWxsaXNlY29uZHMsIHdoaWNoIHNwZWNpZmllcyBob3cgZnJlcXVlbnRseQorIGlub2RlcyBtYXJrZWQgdG8gYmUgZHJvcHBlZCBhcmUgZnJlZWQuIEl0IGFsc28gc3BlY2lmaWVzIGhvdyBmcmVxdWVudGx5CisgdGhlIHN5c3RlbSBjaGVja3MgdGhhdCBzZXJ2ZXJzIGhhdmUgdG8gYmUgYWRkZWQgb3IgcmVtb3ZlZCBmcm9tIGN1cnJlbnQgd29ya2luZyBzZXQuCisgRGVmYXVsdCBpcyAxIHNlY29uZC4KKword2FpdF9vbl9wYWdlX3RpbWVvdXQ9JXUKKyBOdW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIHJlcGx5IGZyb20gcmVtb3RlIHNlcnZlciBmb3IgZGF0YSByZWFkaW5nIGNvbW1hbmQuCisgSWYgdGhpcyB0aW1lb3V0IGlzIGV4Y2VlZGVkLCByZWFkaW5nIHJldHVybnMgYW4gZXJyb3IuCisgRGVmYXVsdCBpcyA1IHNlY29uZHMuCisKK3RyYW5zX3JldHJpZXM9JXUKKyBUaGlzIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBhIHRyYW5zYWN0aW9uIHdpbGwgYmUgcmVzZW50IHRvIGEgc2VydmVyIHRoYXQgZGlkCisgbm90IGFuc3dlciBmb3IgdGhlIGxhc3QgQHRyYW5zX3NjYW5fdGltZW91dCBtaWxsaXNlY29uZHMuCisgV2hlbiB0aGUgbnVtYmVyIG9mIHJlc2VuZHMgZXhjZWVkcyB0aGlzIGxpbWl0LCB0aGUgdHJhbnNhY3Rpb24gaXMgY29tcGxldGVkIHdpdGggZXJyb3IuCisgRGVmYXVsdCBpcyA1IHJlc2VuZHMuCisKK2NyeXB0b190aHJlYWRfbnVtPSV1CisgTnVtYmVyIG9mIGNyeXB0byBwcm9jZXNzaW5nIHRocmVhZHMuIFRocmVhZHMgYXJlIHVzZWQgYm90aCBmb3IgUlggYW5kIFRYIHRyYWZmaWMuCisgRGVmYXVsdCBpcyAyLCBvciBubyB0aHJlYWRzIGlmIGNyeXB0byBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLgorCit0cmFuc19tYXhfcGFnZXM9JXUKKyBNYXhpbXVtIG51bWJlciBvZiBwYWdlcyBpbiBhIHNpbmdsZSB0cmFuc2FjdGlvbi4gVGhpcyBwYXJhbWV0ZXIgYWxzbyBjb250cm9scworIHRoZSBudW1iZXIgb2YgcGFnZXMsICBhbGxvY2F0ZWQgZm9yIGNyeXB0byBwcm9jZXNzaW5nIChlYWNoIGNyeXB0byB0aHJlYWQgaGFzCisgcG9vbCBvZiBwYWdlcywgdGhlIG51bWJlciBvZiB3aGljaCBpcyBlcXVhbCB0byAndHJhbnNfbWF4X3BhZ2VzJy4KKyBEZWZhdWx0IGlzIDEwMCBwYWdlcy4KKworY3J5cHRvX2ZhaWxfdW5zdXBwb3J0ZWQKKyBJZiBzcGVjaWZpZWQsIG1vdW50IHdpbGwgZmFpbCBpZiB0aGUgc2VydmVyIGRvZXMgbm90IHN1cHBvcnQgcmVxdWVzdGVkIGNyeXB0byBvcGVyYXRpb25zLgorIEJ5IGRlZmF1bHQgbW91bnQgd2lsbCBkaXNhYmxlIG5vbi1tYXRjaGluZyBjcnlwdG8gb3BlcmF0aW9ucy4KKworbWNhY2hlX3RpbWVvdXQ9JXUKKyBNYXhpbXVtIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3IgdGhlIG1jYWNoZSBvYmplY3RzIHRvIGJlIHByb2Nlc3NlZC4KKyBNY2FjaGUgaW5jbHVkZXMgbG9ja3MgKGdpdmVuIGxvY2sgc2hvdWxkIGJlIGdyYW50ZWQgYnkgc2VydmVyKSwgYXR0cmlidXRlcyAodGhleSBzaG91bGQgYmUKKyBmdWxseSByZWNlaXZlZCBpbiB0aGUgZ2l2ZW4gdGltZWZyYW1lKS4KKyBEZWZhdWx0IGlzIDUgc2Vjb25kcy4KKworVXNhZ2UgZXhhbXBsZXMuCisKK0FkZCBzZXJ2ZXIgc2VydmVyMS5uZXQ6MTAyNSBpbnRvIHRoZSB3b3JraW5nIHNldCB3aXRoIGluZGV4ICRpZHgKK3dpdGggYXBwcm9wcmlhdGUgaGFzaCBhbGdvcml0aG0gYW5kIGtleSBmaWxlIGFuZCBjaXBoZXIgYWxnb3JpdGhtLCBtb2RlIGFuZCBrZXkgZmlsZToKKyRjZmcgQSBhZGQgLWEgc2VydmVyMS5uZXQgLXAgMTAyNSAtaSAkaWR4IC1LICRoYXNoX2tleSAtayAkY2lwaGVyX2tleQorCitNb3VudCBmaWxlc3lzdGVtIHdpdGggZ2l2ZW4gaW5kZXggJGlkeCB0byAvbW50IG1vdW50cG9pbnQuCitDbGllbnQgd2lsbCBjb25uZWN0IHRvIGFsbCBzZXJ2ZXJzIHNwZWNpZmllZCBpbiB0aGUgd29ya2luZyBzZXQgdmlhIHByZXZpb3VzIGNvbW1hbmQ6Cittb3VudCAtdCBwb2htZWwgLW8gaWR4PSRpZHggcSAvbW50CisKK0NoYW5nZSBwZXJtaXNzaW9ucyB0byByZWFkLW9ubHkgKC1JIDEgb3B0aW9uLCAnLUkgMicgLSB3cml0ZS1vbmx5LCAzIC0gcncpOgorJGNmZyBBIG1vZGlmeSAtYSBzZXJ2ZXIxLm5ldCAtcCAxMDI1IC1pICRpZHggLUkgMQorCitDaGFuZ2UgSU8gcHJpb3JpdHkgdG8gMTIzIChub2RlIHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkgZ2V0cyByZWFkIHJlcXVlc3RzKS4KKyRjZmcgQSBtb2RpZnkgLWEgc2VydmVyMS5uZXQgLXAgMTAyNSAtaSAkaWR4IC1QIDEyMworCitPbmUgY2FuIGNoZWNrIGN1cnJlY3Qgc3RhdHVzIG9mIGFsbCBjb25uZWN0aW9ucyBpbiB0aGUgbW91bnRzdGF0cyBmaWxlOgorIyBjYXQgL3Byb2MvJFBJRC9tb3VudHN0YXRzCisuLi4KK2RldmljZSBub25lIG1vdW50ZWQgb24gL21udCB3aXRoIGZzdHlwZSBwb2htZWwKK2lkeCBhZGRyKDpwb3J0KSBzb2NrZXRfdHlwZSBwcm90b2NvbCBhY3RpdmUgcHJpb3JpdHkgcGVybWlzc2lvbnMKKzAgc2VydmVyMS5uZXQ6MTAyNiAxIDYgMSAyNTAgMQorMCBzZXJ2ZXIyLm5ldDoxMDI1IDEgNiAxIDEyMyAzCisKK1NlcnZlciBpbnN0YWxsYXRpb24uCisKK0NyZWF0aW5nIGEgc2VydmVyLCB3aGljaCBsaXN0ZW5zIGF0IHBvcnQgMTAyNSBhbmQgMC4wLjAuMCBhZGRyZXNzLgorV29ya2luZyByb290IGRpcmVjdG9yeSAobm90ZSwgdGhhdCBzZXJ2ZXIgY2hyb290cyB0aGVyZSwgc28geW91IGhhdmUgdG8gaGF2ZSBhcHByb3ByaWF0ZSBwZXJtaXNzaW9ucykKK2lzIHNldCB0byAvbW50LCBzZXJ2ZXIgd2lsbCBuZWdvdGlhdGUgaGFzaC9jaXBoZXIgd2l0aCBjbGllbnQsIGluIGNhc2UgY2xpZW50IHJlcXVlc3RlZCBpdCwgdGhlcmUKK2FyZSBhcHByb3ByaWF0ZSBrZXkgZmlsZXMuCitOdW1iZXIgb2Ygd29ya2luZyB0aHJlYWRzIGlzIHNldCB0byAxMC4KKworIyAuL2ZzZXJ2ZXIgLWEgMC4wLjAuMCAtcCAxMDI1IC1yIC9tbnQgLXcgMTAgLUsgaGFzaF9rZXkgLWsgY2lwaGVyX2tleQorCisgLUEgNgkJCSAtIGxpc3RlbiBvbiBpcHY2IGFkZHJlc3MuIERlZmF1bHQ6IERpc2FibGVkLgorIC1yIHJvb3QgICAgICAgICAgICAgICAgIC0gcGF0aCB0byByb290IGRpcmVjdG9yeS4gRGVmYXVsdDogL3RtcC4KKyAtYSBhZGRyICAgICAgICAgICAgICAgICAtIGxpc3RlbiBhZGRyZXNzLiBEZWZhdWx0OiAwLjAuMC4wLgorIC1wIHBvcnQgICAgICAgICAgICAgICAgIC0gbGlzdGVuIHBvcnQuIERlZmF1bHQ6IDEwMjUuCisgLXcgd29ya2VycyAgICAgICAgICAgICAgLSBudW1iZXIgb2Ygd29ya2VycyBwZXIgY29ubmVjdGVkIGNsaWVudC4gRGVmYXVsdDogMS4KKyAtSyBmaWxlCQkgLSBoYXNoIGtleSBzaXplLiBEZWZhdWx0OiBub25lLgorIC1rIGZpbGUJCSAtIGNpcGhlciBrZXkgc2l6ZS4gRGVmYXVsdDogbm9uZS4KKyAtaCAgICAgICAgICAgICAgICAgICAgICAtIHRoaXMgaGVscC4KKworTnVtYmVyIG9mIHdvcmtlciB0aHJlYWRzIHNwZWNpZmllcyBob3cgbWFueSB3b3JrZXJzIHdpbGwgYmUgY3JlYXRlZCBmb3IgZWFjaCBjbGllbnQuCitCdWxrIHNpbmdsZS1jbGllbnQgdHJhbnNhZmVycyB1c3VhbGx5IGFyZSBiZXR0ZXIgaGFuZGxlZCB3aXRoIHNtYWxsZXIgbnVtYmVyIChsaWtlIDEtMykuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3BvaG1lbGZzL25ldHdvcmtfcHJvdG9jb2wudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wb2htZWxmcy9uZXR3b3JrX3Byb3RvY29sLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjgwYjRiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wb2htZWxmcy9uZXR3b3JrX3Byb3RvY29sLnR4dApAQCAtMCwwICsxLDIyNyBAQAorUE9ITUVMRlMgbmV0d29yayBwcm90b2NvbC4KKworQmFzaWMgc3RydWN0dXJlIHVzZWQgaW4gbmV0d29yayBjb21tdW5pY2F0aW9uIGlzIGZvbGxvd2luZyBjb21tYW5kOgorCitzdHJ1Y3QgbmV0ZnNfY21kCit7CisJX191MTYJCQljbWQ7CS8qIENvbW1hbmQgbnVtYmVyICovCisJX191MTYJCQljc2l6ZTsJLyogQXR0YWNoZWQgY3J5cHRvIGluZm9ybWF0aW9uIHNpemUgKi8KKwlfX3UxNgkJCWNwYWQ7CS8qIEF0dGFjaGVkIHBhZGRpbmcgc2l6ZSAqLworCV9fdTE2CQkJZXh0OwkvKiBFeHRlcm5hbCBmbGFncyAqLworCV9fdTMyCQkJc2l6ZTsJLyogU2l6ZSBvZiB0aGUgYXR0YWNoZWQgZGF0YSAqLworCV9fdTMyCQkJdHJhbnM7CS8qIFRyYW5zYWN0aW9uIGlkICovCisJX191NjQJCQlpZDsJLyogT2JqZWN0IElEIHRvIG9wZXJhdGUgb24uIFVzZWQgZm9yIGZlZWRiYWNrLiovCisJX191NjQJCQlzdGFydDsJLyogU3RhcnQgb2YgdGhlIG9iamVjdC4gKi8KKwlfX3U2NAkJCWl2OwkvKiBJViBzZXF1ZW5jZSAqLworCV9fdTgJCQlkYXRhWzBdOworfTsKKworQ29tbWFuZHMgY2FuIGJlIGVtYmVkZGVkIGludG8gdHJhbnNhY3Rpb24gY29tbWFuZCAod2hpY2ggaW4gdHVybiBoYXMgb3duIGNvbW1hbmQpLAorc28gb25lIGNhbiBleHRlbmQgcHJvdG9jb2wgYXMgbmVlZGVkIHdpdGhvdXQgYnJlYWtpbmcgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBhcyBsb25nCithcyBvbGQgY29tbWFuZHMgYXJlIHN1cHBvcnRlZC4gQWxsIHN0cmluZyBsZW5ndGhzIGluY2x1ZGUgdGFpbCAwIGJ5dGUuCisKK0FsbCBjb21tYW5kcyBhcmUgdHJhbnNmZXJyZWQgb3ZlciB0aGUgbmV0d29yayBpbiBiaWctZW5kaWFuLiBDUFUgZW5kaWFubmVzcyBpcyB1c2VkIGF0IHRoZSBlbmQgcGVlcnMuCisKK0BjbWQgLSBjb21tYW5kIG51bWJlciwgd2hpY2ggc3BlY2lmaWVzIGNvbW1hbmQgdG8gYmUgcHJvY2Vzc2VkLiBGb2xsb3dpbmcKKwljb21tYW5kcyBhcmUgdXNlZCBjdXJyZW50bHk6CisKKwlORVRGU19SRUFERElSCT0gMSwJLyogUmVhZCBkaXJlY3RvcnkgZm9yIGdpdmVuIGlub2RlIG51bWJlciAqLworCU5FVEZTX1JFQURfUEFHRSwJLyogUmVhZCBkYXRhIHBhZ2UgZnJvbSB0aGUgc2VydmVyICovCisJTkVURlNfV1JJVEVfUEFHRSwJLyogV3JpdGUgZGF0YSBwYWdlIHRvIHRoZSBzZXJ2ZXIgKi8KKwlORVRGU19DUkVBVEUsCQkvKiBDcmVhdGUgZGlyZWN0b3J5IGVudHJ5ICovCisJTkVURlNfUkVNT1ZFLAkJLyogUmVtb3ZlIGRpcmVjdG9yeSBlbnRyeSAqLworCU5FVEZTX0xPT0tVUCwJCS8qIExvb2t1cCBzaW5nbGUgb2JqZWN0ICovCisJTkVURlNfTElOSywJCS8qIENyZWF0ZSBhIGxpbmsgKi8KKwlORVRGU19UUkFOUywJCS8qIFRyYW5zYWN0aW9uICovCisJTkVURlNfT1BFTiwJCS8qIE9wZW4gaW50ZW50ICovCisJTkVURlNfSU5PREVfSU5GTywJLyogTWV0YWRhdGEgY2FjaGUgY29oZXJlbmN5IHN5bmNocm9uaXphdGlvbiBtZXNzYWdlICovCisJTkVURlNfUEFHRV9DQUNIRSwJLyogUGFnZSBjYWNoZSBpbnZhbGlkYXRpb24gbWVzc2FnZSAqLworCU5FVEZTX1JFQURfUEFHRVMsCS8qIFJlYWQgbXVsdGlwbGUgY29udGlndW91cyBwYWdlcyBpbiBvbmUgZ28gKi8KKwlORVRGU19SRU5BTUUsCQkvKiBSZW5hbWUgb2JqZWN0ICovCisJTkVURlNfQ0FQQUJJTElUSUVTLAkvKiBDYXBhYmlsaXRpZXMgb2YgdGhlIGNsaWVudCwgZm9yIGV4YW1wbGUgc3VwcG9ydGVkIGNyeXB0byAqLworCU5FVEZTX0xPQ0ssCQkvKiBEaXN0cmlidXRlZCBsb2NrIG1lc3NhZ2UgKi8KKwlORVRGU19YQVRUUl9TRVQsCS8qIFNldCBleHRlbmRlZCBhdHRyaWJ1dGUgKi8KKwlORVRGU19YQVRUUl9HRVQsCS8qIEdldCBleHRlbmRlZCBhdHRyaWJ1dGUgKi8KKworQGV4dCAtIGV4dGVybmFsIGZsYWdzLiBVc2VkIGJ5IGRpZmZlcmVudCBjb21tYW5kcyB0byBzcGVjaWZ5IHNvbWUgZXh0cmEgYXJndW1lbnRzCisJbGlrZSBwYXJ0aWFsIHNpemUgb2YgdGhlIGVtYmVkZGVkIG9iamVjdHMgb3IgY3JlYXRpb24gZmxhZ3MuCisKK0BzaXplIC0gc2l6ZSBvZiB0aGUgYXR0YWNoZWQgZGF0YS4gRm9yIE5FVEZTX1JFQURfUEFHRSBhbmQgTkVURlNfUkVBRF9QQUdFUyBubyBkYXRhIGlzIGF0dGFjaGVkLAorCWJ1dCBzaXplIG9mIHRoZSByZXF1ZXN0ZWQgZGF0YSBpcyBpbmNvcnBvcmF0ZWQgaGVyZS4gSXQgZG9lcyBub3QgaW5jbHVkZSBzaXplIG9mIHRoZSBjb21tYW5kCisJaGVhZGVyIChzdHJ1Y3QgbmV0ZnNfY21kKSBpdHNlbGYuCisKK0BpZCAtIGlkIG9mIHRoZSBvYmplY3QgdGhpcyBjb21tYW5kIG9wZXJhdGVzIG9uLiBFYWNoIGNvbW1hbmQgY2FuIHVzZSBpdCBmb3Igb3duIHB1cnBvc2UuCisKK0BzdGFydCAtIHN0YXJ0IG9mIHRoZSBvYmplY3QgdGhpcyBjb21tYW5kIG9wZXJhdGVzIG9uLiBFYWNoIGNvbW1hbmQgY2FuIHVzZSBpdCBmb3Igb3duIHB1cnBvc2UuCisKK0Bjc2l6ZSwgQGNwYWQgLSBzaXplIGFuZCBwYWRkaW5nIHNpemUgb2YgdGhlIChhdHRhY2hlZCBpZiBuZWVkZWQpIGNyeXB0byBpbmZvcm1hdGlvbi4KKworQ29tbWFuZCBzcGVjaWZpY2F0aW9ucy4KKworQE5FVEZTX1JFQURESVIKK1RoaXMgY29tbWFuZCBpcyB1c2VkIHRvIHN5bmMgY29udGVudCBvZiB0aGUgcmVtb3RlIGRpciB0byB0aGUgY2xpZW50LgorCitAZXh0IC0gbGVuZ3RoIG9mIHRoZSBwYXRoIHRvIG9iamVjdC4KK0BzaXplIC0gdGhlIHNhbWUuCitAaWQgLSBsb2NhbCBpbm9kZSBudW1iZXIgb2YgdGhlIGRpcmVjdG9yeSB0byByZWFkLgorQHN0YXJ0IC0gemVyby4KKworCitATkVURlNfUkVBRF9QQUdFCitUaGlzIGNvbW1hbmQgaXMgdXNlZCB0byByZWFkIGRhdGEgZnJvbSByZW1vdGUgc2VydmVyLgorRGF0YSBzaXplIGRvZXMgbm90IGV4Y2VlZCBsb2NhbCBwYWdlIGNhY2hlIHNpemUuCisKK0BpZCAtIGlub2RlIG51bWJlci4KK0BzdGFydCAtIGZpcnN0IGJ5dGUgb2Zmc2V0LgorQHNpemUgLSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCBwbHVzIGxlbmd0aCBvZiB0aGUgcGF0aCB0byBvYmplY3QuCitAZXh0IC0gb2JqZWN0IHBhdGggbGVuZ3RoLgorCisKK0BORVRGU19DUkVBVEUKK1VzZWQgdG8gY3JlYXRlIG9iamVjdC4KK0l0IGRvZXMgbm90IHJlcXVpcmUgdGhhdCBhbGwgZGlyZWN0b3JpZXMgb24gdG9wIG9mIHRoZSBvYmplY3Qgd2VyZQorYWxyZWFkeSBjcmVhdGVkLCBpdCB3aWxsIGNyZWF0ZSB0aGVtIGF1dG9tYXRpY2FsbHkuIEVhY2ggb2JqZWN0IGhhcworYXNzb2NpYXRlZCBAbmV0ZnNfcGF0aF9lbnRyeSBkYXRhIHN0cnVjdHVyZSwgd2hpY2ggY29udGFpbnMgY3JlYXRpb24KK21vZGUgKHBlcm1pc3Npb25zIGFuZCB0eXBlKSBhbmQgbGVuZ3RoIG9mIHRoZSBuYW1lIGFzIGxvbmcgYXMgbmFtZSBpdHNlbGYuCisKK0BzdGFydCAtIDAKK0BzaXplIC0gc2l6ZSBvZiB0aGUgYWxsIGRhdGEgc3RydWN0dXJlcyBuZWVkZWQgdG8gY3JlYXRlIGEgcGF0aAorQGlkIC0gbG9jYWwgaW5vZGUgbnVtYmVyCitAZXh0IC0gMAorCisKK0BORVRGU19SRU1PVkUKK1VzZWQgdG8gcmVtb3ZlIG9iamVjdC4KKworQGV4dCAtIGxlbmd0aCBvZiB0aGUgcGF0aCB0byBvYmplY3QuCitAc2l6ZSAtIHRoZSBzYW1lLgorQGlkIC0gbG9jYWwgaW5vZGUgbnVtYmVyLgorQHN0YXJ0IC0gemVyby4KKworCitATkVURlNfTE9PS1VQCitMb29rdXAgaW5mb3JtYXRpb24gYWJvdXQgb2JqZWN0IG9uIHNlcnZlci4KKworQGV4dCAtIGxlbmd0aCBvZiB0aGUgcGF0aCB0byBvYmplY3QuCitAc2l6ZSAtIHRoZSBzYW1lLgorQGlkIC0gbG9jYWwgaW5vZGUgbnVtYmVyIG9mIHRoZSBkaXJlY3RvcnkgdG8gbG9vayBvYmplY3QgaW4uCitAc3RhcnQgLSBsb2NhbCBpbm9kZSBudW1iZXIgb2YgdGhlIG9iamVjdCB0byBsb29rIGF0LgorCisKK0BORVRGU19MSU5LCitDcmVhdGUgaGFyZCBvZiBzeW1saW5rLgorQ29tbWFuZCBpcyBzZW50IGFzICJvYmplY3RfcGF0aHx0YXJnZXRfcGF0aCIuCisKK0BzaXplIC0gc2l6ZSBvZiB0aGUgYWJvdmUgc3RyaW5nLgorQGlkIC0gcGFyZW50IGxvY2FsIGlub2RlIG51bWJlci4KK0BzdGFydCAtIDEgZm9yIHN5bWxpbmssIDAgZm9yIGhhcmRsaW5rLgorQGV4dCAtIHNpemUgb2YgdGhlICJvYmplY3RfcGF0aCIgYWJvdmUuCisKKworQE5FVEZTX1RSQU5TCitUcmFuc2FjdGlvbiBoZWFkZXIuCisKK0BzaXplIC0gaW5jb3Jwb3JhdGVzIGFsbCBlbWJlZGRlZCBjb21tYW5kIHNpemVzIGluY2x1ZGluZyB0aGVpcnMgaGVhZGVyIHNpemVzLgorQHN0YXJ0IC0gdHJhbnNhY3Rpb24gZ2VuZXJhdGlvbiBudW1iZXIgLSB1bmlxdWUgaWQgdXNlZCB0byBmaW5kIHRyYW5zYWN0aW9uLgorQGV4dCAtIHRyYW5zYWN0aW9uIGZsYWdzLiBVbnVzZWQgYXQgdGhlIG1vbWVudC4KK0BpZCAtIDAuCisKKworQE5FVEZTX09QRU4KK09wZW4gaW50ZW50IGZvciBnaXZlbiB0cmFuc2FjdGlvbi4KKworQGlkIC0gbG9jYWwgaW5vZGUgbnVtYmVyLgorQHN0YXJ0IC0gMC4KK0BzaXplIC0gcGF0aCBsZW5ndGggdG8gdGhlIG9iamVjdC4KK0BleHQgLSBvcGVuIGZsYWdzIChPX1JEV1IgYW5kIHNvIG9uKS4KKworCitATkVURlNfSU5PREVfSU5GTworTWV0YWRhdGEgdXBkYXRlIGNvbW1hbmQuCitJdCBpcyBzZW50IHRvIHNlcnZlcnMgd2hlbiBhdHRyaWJ1dGVzIG9mIHRoZSBvYmplY3QgYXJlIGNoYW5nZWQgYW5kIHJlY2VpdmVkCit3aGVuIGRhdGEgb3IgbWV0YWRhdGEgd2VyZSB1cGRhdGVkLiBJdCBvcGVyYXRlcyB3aXRoIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOgorCitzdHJ1Y3QgbmV0ZnNfaW5vZGVfaW5mbworeworCXVuc2lnbmVkIGludAkJbW9kZTsKKwl1bnNpZ25lZCBpbnQJCW5saW5rOworCXVuc2lnbmVkIGludAkJdWlkOworCXVuc2lnbmVkIGludAkJZ2lkOworCXVuc2lnbmVkIGludAkJYmxvY2tzaXplOworCXVuc2lnbmVkIGludAkJcGFkZGluZzsKKwlfX3U2NAkJCWlubzsKKwlfX3U2NAkJCWJsb2NrczsKKwlfX3U2NAkJCXJkZXY7CisJX191NjQJCQlzaXplOworCV9fdTY0CQkJdmVyc2lvbjsKK307CisKK0l0IGVmZmVjdGl2ZWx5IG1pcnJvcnMgc3RhdCgyKSByZXR1cm5lZCBkYXRhLgorCisKK0BleHQgLSBwYXRoIGxlbmd0aCB0byB0aGUgb2JqZWN0LgorQHNpemUgLSB0aGUgc2FtZSBwbHVzIHNpemUgb2YgdGhlIG5ldGZzX2lub2RlX2luZm8gc3RydWN0dXJlLgorQGlkIC0gbG9jYWwgaW5vZGUgbnVtYmVyLgorQHN0YXJ0IC0gMC4KKworCitATkVURlNfUEFHRV9DQUNIRQorQ29tbWFuZCBpcyBvbmx5IHJlY2VpdmVkIGJ5IGNsaWVudHMuIEl0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0CitwYWdlIHRvIGJlIG1hcmtlZCBhcyBub3QgdXAtdG8tZGF0ZS4KKworQGlkIC0gY2xpZW50J3MgaW5vZGUgbnVtYmVyLgorQHN0YXJ0IC0gbGFzdCBieXRlIG9mIHRoZSBwYWdlIHRvIGJlIGludmFsaWRhdGVkLiBJZiBpdCBpcyBub3QgZXF1YWwgdG8KKwljdXJyZW50IGlub2RlIHNpemUsIGl0IHdpbGwgYmUgdm10cnVuY2F0ZWQoKS4KK0BzaXplIC0gMAorQGV4dCAtIDAKKworCitATkVURlNfUkVBRF9QQUdFUworVXNlZCB0byByZWFkIG11bHRpcGxlIGNvbnRpZ3VvdXMgcGFnZXMgaW4gb25lIGdvLgorCitAc3RhcnQgLSBmaXJzdCBieXRlIG9mIHRoZSBjb250aWd1b3VzIHJlZ2lvbiB0byByZWFkLgorQHNpemUgLSBjb250YWlucyBvZiB0d28gZmllbGRzOiBsb3dlciA4IGJpdHMgYXJlIHVzZWQgdG8gcmVwcmVzZW50IHBhZ2UgY2FjaGUgc2hpZnQKKwl1c2VkIGJ5IGNsaWVudCwgYW5vdGhlciAzIGJ5dGVzIGFyZSB1c2VkIHRvIGdldCBudW1iZXIgb2YgcGFnZXMuCitAaWQgLSBsb2NhbCBpbm9kZSBudW1iZXIuCitAZXh0IC0gcGF0aCBsZW5ndGggdG8gdGhlIG9iamVjdC4KKworCitATkVURlNfUkVOQU1FCitVc2VkIHRvIHJlbmFtZSBvYmplY3QuCitBdHRhY2hlZCBkYXRhIGlzIGZvcm1lZCBpbnRvIGZvbGxvd2luZyBzdHJpbmc6ICJvbGRfcGF0aHxuZXdfcGF0aCIuCisKK0BpZCAtIGxvY2FsIGlub2RlIG51bWJlci4KK0BzdGFydCAtIHBhcmVudCBpbm9kZSBudW1iZXIuCitAc2l6ZSAtIGxlbmd0aCBvZiB0aGUgYWJvdmUgc3RyaW5nLgorQGV4dCAtIGxlbmd0aCBvZiB0aGUgb2xkIHBhdGggcGFydC4KKworCitATkVURlNfQ0FQQUJJTElUSUVTCitVc2VkIHRvIGV4Y2hhbmdlIGNyeXB0byBjYXBhYmlsaXRpZXMgd2l0aCBzZXJ2ZXIuCitJZiBjcnlwdG8gY2FwYWJpbGl0aWVzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHNlcnZlciwgdGhlbiBjbGllbnQgd2lsbCBkaXNhYmxlIGl0CitvciBmYWlsIChpZiAnY3J5cHRvX2ZhaWxfdW5zdXBwb3J0ZWQnIG1vdW50IG9wdGlvbnMgd2FzIHNwZWNpZmllZCkuCisKK0BpZCAtIHN1cGVyYmxvY2sgaW5kZXguIFVzZWQgdG8gc3BlY2lmeSBjcnlwdG8gaW5mb3JtYXRpb24gZm9yIGdyb3VwIG9mIHNlcnZlcnMuCitAc2l6ZSAtIHNpemUgb2YgdGhlIGF0dGFjaGVkIGNhcGFiaWxpdGllcyBzdHJ1Y3R1cmUuCitAc3RhcnQgLSAwLgorQHNpemUgLSAwLgorQHNjc2l6ZSAtIDAuCisKK0BORVRGU19MT0NLCitVc2VkIHRvIHNlbmQgbG9jayByZXF1ZXN0L3JlbGVhc2UgbWVzc2FnZXMuIEFsdGhvdWdoIGl0IHNlbmRzIGJ5dGUgcmFuZ2UgcmVxdWVzdAorYW5kIGlzIGNhcGFibGUgb2YgZmx1c2hpbmcgcGFnZXMgYmFzZWQgb24gdGhhdCwgaXQgaXMgbm90IHVzZWQsIHNpbmNlIGFsbCBMaW51eAorZmlsZXN5c3RlbXMgbG9jayB0aGUgd2hvbGUgaW5vZGUuCisKK0BpZCAtIGxvY2sgZ2VuZXJhdGlvbiBudW1iZXIuCitAc3RhcnQgLSBzdGFydCBvZiB0aGUgbG9ja2VkIHJhbmdlLgorQHNpemUgLSBzaXplIG9mIHRoZSBsb2NrZWQgcmFuZ2UuCitAZXh0IC0gbG9jayB0eXBlOiByZWFkL3dyaXRlLiBOb3QgdXNlZCBhY3R1YWxseS4gMTUndGggYml0IGlzIHVzZWQgdG8gZGV0ZXJtaW5lLAorCWlmIGl0IGlzIGxvY2sgcmVxdWVzdCAoMSkgb3IgcmVsZWFzZSAoMCkuCisKK0BORVRGU19YQVRUUl9TRVQKK0BORVRGU19YQVRUUl9HRVQKK1VzZWQgdG8gc2V0L2dldCBleHRlbmRlZCBhdHRyaWJ1dGVzIGZvciBnaXZlbiBpbm9kZS4KK0BpZCAtIGF0dHJpYnV0ZSBnZW5lcmF0aW9uIG51bWJlciBvciB4YXR0ciBzZXR0aW5nIHR5cGUKK0BzdGFydCAtIHNpemUgb2YgdGhlIGF0dHJpYnV0ZSAocmVxdWVzdCBvciBhdHRhY2hlZCkKK0BzaXplIC0gbmFtZSBsZW5ndGgsIHBhdGggbGVuIGFuZCBkYXRhIHNpemUgZm9yIGdpdmVuIGF0dHJpYnV0ZQorQGV4dCAtIHBhdGggbGVuZ3RoIGZvciBnaXZlbiBvYmplY3QKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcG9ydGluZyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcG9ydGluZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjRkMWI4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wb3J0aW5nCkBAIC0wLDAgKzEsNTA2IEBACitDaGFuZ2VzIHNpbmNlIDIuNS4wOgorCistLS0KK1tyZWNvbW1lbmRlZF0KKworTmV3IGhlbHBlcnM6IHNiX2JyZWFkKCksIHNiX2dldGJsaygpLCBzYl9maW5kX2dldF9ibG9jaygpLCBzZXRfYmgoKSwKKwlzYl9zZXRfYmxvY2tzaXplKCkgYW5kIHNiX21pbl9ibG9ja3NpemUoKS4KKworVXNlIHRoZW0uCisKKyhzYl9maW5kX2dldF9ibG9jaygpIHJlcGxhY2VzIDIuNCdzIGdldF9oYXNoX3RhYmxlKCkpCisKKy0tLQorW3JlY29tbWVuZGVkXQorCitOZXcgbWV0aG9kczogLT5hbGxvY19pbm9kZSgpIGFuZCAtPmRlc3Ryb3lfaW5vZGUoKS4KKworUmVtb3ZlIGlub2RlLT51LmZvb19pbm9kZV9pCitEZWNsYXJlCisJc3RydWN0IGZvb19pbm9kZV9pbmZvIHsKKwkJLyogZnMtcHJpdmF0ZSBzdHVmZiAqLworCQlzdHJ1Y3QgaW5vZGUgdmZzX2lub2RlOworCX07CisJc3RhdGljIGlubGluZSBzdHJ1Y3QgZm9vX2lub2RlX2luZm8gKkZPT19JKHN0cnVjdCBpbm9kZSAqaW5vZGUpCisJeworCQlyZXR1cm4gbGlzdF9lbnRyeShpbm9kZSwgc3RydWN0IGZvb19pbm9kZV9pbmZvLCB2ZnNfaW5vZGUpOworCX0KKworVXNlIEZPT19JKGlub2RlKSBpbnN0ZWFkIG9mICZpbm9kZS0+dS5mb29faW5vZGVfaTsKKworQWRkIGZvb19hbGxvY19pbm9kZSgpIGFuZCBmb29fZGVzdHJveV9pbm9kZSgpIC0gdGhlIGZvcm1lciBzaG91bGQgYWxsb2NhdGUKK2Zvb19pbm9kZV9pbmZvIGFuZCByZXR1cm4gdGhlIGFkZHJlc3Mgb2YgLT52ZnNfaW5vZGUsIHRoZSBsYXR0ZXIgc2hvdWxkIGZyZWUKK0ZPT19JKGlub2RlKSAoc2VlIGluLXRyZWUgZmlsZXN5c3RlbXMgZm9yIGV4YW1wbGVzKS4KKworTWFrZSB0aGVtIC0+YWxsb2NfaW5vZGUgYW5kIC0+ZGVzdHJveV9pbm9kZSBpbiB5b3VyIHN1cGVyX29wZXJhdGlvbnMuCisKK0tlZXAgaW4gbWluZCB0aGF0IG5vdyB5b3UgbmVlZCBleHBsaWNpdCBpbml0aWFsaXphdGlvbiBvZiBwcml2YXRlIGRhdGEKK3R5cGljYWxseSBiZXR3ZWVuIGNhbGxpbmcgaWdldF9sb2NrZWQoKSBhbmQgdW5sb2NraW5nIHRoZSBpbm9kZS4KKworQXQgc29tZSBwb2ludCB0aGF0IHdpbGwgYmVjb21lIG1hbmRhdG9yeS4KKworLS0tCitbbWFuZGF0b3J5XQorCitDaGFuZ2Ugb2YgZmlsZV9zeXN0ZW1fdHlwZSBtZXRob2QgKC0+cmVhZF9zdXBlciB0byAtPmdldF9zYikKKworLT5yZWFkX3N1cGVyKCkgaXMgbm8gbW9yZS4gIERpdHRvIGZvciBERUNMQVJFX0ZTVFlQRSBhbmQgREVDTEFSRV9GU1RZUEVfREVWLgorCitUdXJuIHlvdXIgZm9vX3JlYWRfc3VwZXIoKSBpbnRvIGEgZnVuY3Rpb24gdGhhdCB3b3VsZCByZXR1cm4gMCBpbiBjYXNlIG9mCitzdWNjZXNzIGFuZCBuZWdhdGl2ZSBudW1iZXIgaW4gY2FzZSBvZiBlcnJvciAoLUVJTlZBTCB1bmxlc3MgeW91IGhhdmUgbW9yZQoraW5mb3JtYXRpdmUgZXJyb3IgdmFsdWUgdG8gcmVwb3J0KS4gIENhbGwgaXQgZm9vX2ZpbGxfc3VwZXIoKS4gIE5vdyBkZWNsYXJlCisKK2ludCBmb29fZ2V0X3NiKHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlICpmc190eXBlLAorCWludCBmbGFncywgY29uc3QgY2hhciAqZGV2X25hbWUsIHZvaWQgKmRhdGEsIHN0cnVjdCB2ZnNtb3VudCAqbW50KQoreworCXJldHVybiBnZXRfc2JfYmRldihmc190eXBlLCBmbGFncywgZGV2X25hbWUsIGRhdGEsIGZvb19maWxsX3N1cGVyLAorCQkJICAgbW50KTsKK30KKworKG9yIHNpbWlsYXIgd2l0aCBzL2JkZXYvbm9kZXYvIG9yIHMvYmRldi9zaW5nbGUvLCBkZXBlbmRpbmcgb24gdGhlIGtpbmQgb2YKK2ZpbGVzeXN0ZW0pLgorCitSZXBsYWNlIERFQ0xBUkVfRlNUWVBFLi4uIHdpdGggZXhwbGljaXQgaW5pdGlhbGl6ZXIgYW5kIGhhdmUgLT5nZXRfc2Igc2V0IGFzCitmb29fZ2V0X3NiLgorCistLS0KK1ttYW5kYXRvcnldCisKK0xvY2tpbmcgY2hhbmdlOiAtPnNfdmZzX3JlbmFtZV9zZW0gaXMgdGFrZW4gb25seSBieSBjcm9zcy1kaXJlY3RvcnkgcmVuYW1lcy4KK01vc3QgbGlrZWx5IHRoZXJlIGlzIG5vIG5lZWQgdG8gY2hhbmdlIGFueXRoaW5nLCBidXQgaWYgeW91IHJlbGllZCBvbgorZ2xvYmFsIGV4Y2x1c2lvbiBiZXR3ZWVuIHJlbmFtZXMgZm9yIHNvbWUgaW50ZXJuYWwgcHVycG9zZSAtIHlvdSBuZWVkIHRvCitjaGFuZ2UgeW91ciBpbnRlcm5hbCBsb2NraW5nLiAgT3RoZXJ3aXNlIGV4Y2x1c2lvbiB3YXJyYW50aWVzIHJlbWFpbiB0aGUKK3NhbWUgKGkuZS4gcGFyZW50cyBhbmQgdmljdGltIGFyZSBsb2NrZWQsIGV0Yy4pLgorCistLS0KK1tpbmZvcm1hdGlvbmFsXQorCitOb3cgd2UgaGF2ZSB0aGUgZXhjbHVzaW9uIGJldHdlZW4gLT5sb29rdXAoKSBhbmQgZGlyZWN0b3J5IHJlbW92YWwgKGJ5CistPnJtZGlyKCkgYW5kIC0+cmVuYW1lKCkpLiAgSWYgeW91IHVzZWQgdG8gbmVlZCB0aGF0IGV4Y2x1c2lvbiBhbmQgZG8KK2l0IGJ5IGludGVybmFsIGxvY2tpbmcgKG1vc3Qgb2YgZmlsZXN5c3RlbXMgY291bGRuJ3QgY2FyZSBsZXNzKSAtIHlvdQorY2FuIHJlbGF4IHlvdXIgbG9ja2luZy4KKworLS0tCitbbWFuZGF0b3J5XQorCistPmxvb2t1cCgpLCAtPnRydW5jYXRlKCksIC0+Y3JlYXRlKCksIC0+dW5saW5rKCksIC0+bWtub2QoKSwgLT5ta2RpcigpLAorLT5ybWRpcigpLCAtPmxpbmsoKSwgLT5sc2VlaygpLCAtPnN5bWxpbmsoKSwgLT5yZW5hbWUoKQorYW5kIC0+cmVhZGRpcigpIGFyZSBjYWxsZWQgd2l0aG91dCBCS0wgbm93LiAgR3JhYiBpdCBvbiBlbnRyeSwgZHJvcCB1cG9uIHJldHVybgorLSB0aGF0IHdpbGwgZ3VhcmFudGVlIHRoZSBzYW1lIGxvY2tpbmcgeW91IHVzZWQgdG8gaGF2ZS4gIElmIHlvdXIgbWV0aG9kIG9yIGl0cworcGFydHMgZG8gbm90IG5lZWQgQktMIC0gYmV0dGVyIHlldCwgbm93IHlvdSBjYW4gc2hpZnQgbG9ja19rZXJuZWwoKSBhbmQKK3VubG9ja19rZXJuZWwoKSBzbyB0aGF0IHRoZXkgd291bGQgcHJvdGVjdCBleGFjdGx5IHdoYXQgbmVlZHMgdG8gYmUKK3Byb3RlY3RlZC4KKworLS0tCitbbWFuZGF0b3J5XQorCitCS0wgaXMgYWxzbyBtb3ZlZCBmcm9tIGFyb3VuZCBzYiBvcGVyYXRpb25zLiBCS0wgc2hvdWxkIGhhdmUgYmVlbiBzaGlmdGVkIGludG8KK2luZGl2aWR1YWwgZnMgc2Jfb3AgZnVuY3Rpb25zLiAgSWYgeW91IGRvbid0IG5lZWQgaXQsIHJlbW92ZSBpdC4KKworLS0tCitbaW5mb3JtYXRpb25hbF0KKworY2hlY2sgZm9yIC0+bGluaygpIHRhcmdldCBub3QgYmVpbmcgYSBkaXJlY3RvcnkgaXMgZG9uZSBieSBjYWxsZXJzLiAgRmVlbAorZnJlZSB0byBkcm9wIGl0Li4uCisKKy0tLQorW2luZm9ybWF0aW9uYWxdCisKKy0+bGluaygpIGNhbGxlcnMgaG9sZCAtPmlfbXV0ZXggb24gdGhlIG9iamVjdCB3ZSBhcmUgbGlua2luZyB0by4gIFNvbWUgb2YgeW91cgorcHJvYmxlbXMgbWlnaHQgYmUgb3Zlci4uLgorCistLS0KK1ttYW5kYXRvcnldCisKK25ldyBmaWxlX3N5c3RlbV90eXBlIG1ldGhvZCAtIGtpbGxfc2Ioc3VwZXJibG9jaykuICBJZiB5b3UgYXJlIGNvbnZlcnRpbmcKK2FuIGV4aXN0aW5nIGZpbGVzeXN0ZW0sIHNldCBpdCBhY2NvcmRpbmcgdG8gLT5mc19mbGFnczoKKwlGU19SRVFVSVJFU19ERVYJCS0Ja2lsbF9ibG9ja19zdXBlcgorCUZTX0xJVFRFUgkJLQlraWxsX2xpdHRlcl9zdXBlcgorCW5laXRoZXIJCQktCWtpbGxfYW5vbl9zdXBlcgorRlNfTElUVEVSIGlzIGdvbmUgLSBqdXN0IHJlbW92ZSBpdCBmcm9tIGZzX2ZsYWdzLgorCistLS0KK1ttYW5kYXRvcnldCisKKwlGU19TSU5HTEUgaXMgZ29uZSAoYWN0dWFsbHksIHRoYXQgaGFkIGhhcHBlbmVkIGJhY2sgd2hlbiAtPmdldF9zYigpCit3ZW50IGluIC0gYW5kIGhhZG4ndCBiZWVuIGRvY3VtZW50ZWQgOy0vKS4gIEp1c3QgcmVtb3ZlIGl0IGZyb20gZnNfZmxhZ3MKKyhhbmQgc2VlIC0+Z2V0X3NiKCkgZW50cnkgZm9yIG90aGVyIGFjdGlvbnMpLgorCistLS0KK1ttYW5kYXRvcnldCisKKy0+c2V0YXR0cigpIGlzIGNhbGxlZCB3aXRob3V0IEJLTCBub3cuICBDYWxsZXIgX2Fsd2F5c18gaG9sZHMgLT5pX211dGV4LCBzbword2F0Y2ggZm9yIC0+aV9tdXRleC1ncmFiYmluZyBjb2RlIHRoYXQgbWlnaHQgYmUgdXNlZCBieSB5b3VyIC0+c2V0YXR0cigpLgorQ2FsbGVycyBvZiBub3RpZnlfY2hhbmdlKCkgbmVlZCAtPmlfbXV0ZXggbm93LgorCistLS0KK1tyZWNvbW1lbmRlZF0KKworTmV3IHN1cGVyX2Jsb2NrIGZpZWxkICJzdHJ1Y3QgZXhwb3J0X29wZXJhdGlvbnMgKnNfZXhwb3J0X29wIiBmb3IKK2V4cGxpY2l0IHN1cHBvcnQgZm9yIGV4cG9ydGluZywgZS5nLiB2aWEgTkZTLiAgVGhlIHN0cnVjdHVyZSBpcyBmdWxseQorZG9jdW1lbnRlZCBhdCBpdHMgZGVjbGFyYXRpb24gaW4gaW5jbHVkZS9saW51eC9mcy5oLCBhbmQgaW4KK0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzL0V4cG9ydGluZy4KKworQnJpZWZseSBpdCBhbGxvd3MgZm9yIHRoZSBkZWZpbml0aW9uIG9mIGRlY29kZV9maCBhbmQgZW5jb2RlX2ZoIG9wZXJhdGlvbnMKK3RvIGVuY29kZSBhbmQgZGVjb2RlIGZpbGVoYW5kbGVzLCBhbmQgYWxsb3dzIHRoZSBmaWxlc3lzdGVtIHRvIHVzZQorYSBzdGFuZGFyZCBoZWxwZXIgZnVuY3Rpb24gZm9yIGRlY29kZV9maCwgYW5kIHByb3ZpZGUgZmlsZS1zeXN0ZW0gc3BlY2lmaWMKK3N1cHBvcnQgZm9yIHRoaXMgaGVscGVyLCBwYXJ0aWN1bGFybHkgZ2V0X3BhcmVudC4KKworSXQgaXMgcGxhbm5lZCB0aGF0IHRoaXMgd2lsbCBiZSByZXF1aXJlZCBmb3IgZXhwb3J0aW5nIG9uY2UgdGhlIGNvZGUKK3NldHRsZXMgZG93biBhIGJpdC4KKworW21hbmRhdG9yeV0KKworc19leHBvcnRfb3AgaXMgbm93IHJlcXVpcmVkIGZvciBleHBvcnRpbmcgYSBmaWxlc3lzdGVtLgoraXNvZnMsIGV4dDIsIGV4dDMsIHJlc2llcmZzLCBmYXQKK2NhbiBiZSB1c2VkIGFzIGV4YW1wbGVzIG9mIHZlcnkgZGlmZmVyZW50IGZpbGVzeXN0ZW1zLgorCistLS0KK1ttYW5kYXRvcnldCisKK2lnZXQ0KCkgYW5kIHRoZSByZWFkX2lub2RlMiBjYWxsYmFjayBoYXZlIGJlZW4gc3VwZXJzZWRlZCBieSBpZ2V0NV9sb2NrZWQoKQord2hpY2ggaGFzIHRoZSBmb2xsb3dpbmcgcHJvdG90eXBlLAorCisgICAgc3RydWN0IGlub2RlICppZ2V0NV9sb2NrZWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBpbm8sCisJCQkJaW50ICgqdGVzdCkoc3RydWN0IGlub2RlICosIHZvaWQgKiksCisJCQkJaW50ICgqc2V0KShzdHJ1Y3QgaW5vZGUgKiwgdm9pZCAqKSwKKwkJCQl2b2lkICpkYXRhKTsKKworJ3Rlc3QnIGlzIGFuIGFkZGl0aW9uYWwgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB3aGVuIHRoZSBpbm9kZQorbnVtYmVyIGlzIG5vdCBzdWZmaWNpZW50IHRvIGlkZW50aWZ5IHRoZSBhY3R1YWwgZmlsZSBvYmplY3QuICdzZXQnCitzaG91bGQgYmUgYSBub24tYmxvY2tpbmcgZnVuY3Rpb24gdGhhdCBpbml0aWFsaXplcyB0aG9zZSBwYXJ0cyBvZiBhCituZXdseSBjcmVhdGVkIGlub2RlIHRvIGFsbG93IHRoZSB0ZXN0IGZ1bmN0aW9uIHRvIHN1Y2NlZWQuICdkYXRhJyBpcworcGFzc2VkIGFzIGFuIG9wYXF1ZSB2YWx1ZSB0byBib3RoIHRlc3QgYW5kIHNldCBmdW5jdGlvbnMuCisKK1doZW4gdGhlIGlub2RlIGhhcyBiZWVuIGNyZWF0ZWQgYnkgaWdldDVfbG9ja2VkKCksIGl0IHdpbGwgYmUgcmV0dXJuZWQgd2l0aCB0aGUKK0lfTkVXIGZsYWcgc2V0IGFuZCB3aWxsIHN0aWxsIGJlIGxvY2tlZC4gIFRoZSBmaWxlc3lzdGVtIHRoZW4gbmVlZHMgdG8gZmluYWxpemUKK3RoZSBpbml0aWFsaXphdGlvbi4gT25jZSB0aGUgaW5vZGUgaXMgaW5pdGlhbGl6ZWQgaXQgbXVzdCBiZSB1bmxvY2tlZCBieQorY2FsbGluZyB1bmxvY2tfbmV3X2lub2RlKCkuCisKK1RoZSBmaWxlc3lzdGVtIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIChhbmQgcG9zc2libHkgdGVzdGluZykgaV9pbm8KK3doZW4gYXBwcm9wcmlhdGUuIFRoZXJlIGlzIGFsc28gYSBzaW1wbGVyIGlnZXRfbG9ja2VkIGZ1bmN0aW9uIHRoYXQKK2p1c3QgdGFrZXMgdGhlIHN1cGVyYmxvY2sgYW5kIGlub2RlIG51bWJlciBhcyBhcmd1bWVudHMgYW5kIGRvZXMgdGhlCit0ZXN0IGFuZCBzZXQgZm9yIHlvdS4KKworZS5nLgorCWlub2RlID0gaWdldF9sb2NrZWQoc2IsIGlubyk7CisJaWYgKGlub2RlLT5pX3N0YXRlICYgSV9ORVcpIHsKKwkJZXJyID0gcmVhZF9pbm9kZV9mcm9tX2Rpc2soaW5vZGUpOworCQlpZiAoZXJyIDwgMCkgeworCQkJaWdldF9mYWlsZWQoaW5vZGUpOworCQkJcmV0dXJuIGVycjsKKwkJfQorCQl1bmxvY2tfbmV3X2lub2RlKGlub2RlKTsKKwl9CisKK05vdGUgdGhhdCBpZiB0aGUgcHJvY2VzcyBvZiBzZXR0aW5nIHVwIGEgbmV3IGlub2RlIGZhaWxzLCB0aGVuIGlnZXRfZmFpbGVkKCkKK3Nob3VsZCBiZSBjYWxsZWQgb24gdGhlIGlub2RlIHRvIHJlbmRlciBpdCBkZWFkLCBhbmQgYW4gYXBwcm9wcmlhdGUgZXJyb3IKK3Nob3VsZCBiZSBwYXNzZWQgYmFjayB0byB0aGUgY2FsbGVyLgorCistLS0KK1tyZWNvbW1lbmRlZF0KKworLT5nZXRhdHRyKCkgZmluYWxseSBnZXR0aW5nIHVzZWQuICBTZWUgaW5zdGFuY2VzIGluIG5mcywgbWluaXgsIGV0Yy4KKworLS0tCitbbWFuZGF0b3J5XQorCistPnJldmFsaWRhdGUoKSBpcyBnb25lLiAgSWYgeW91ciBmaWxlc3lzdGVtIGhhZCBpdCAtIHByb3ZpZGUgLT5nZXRhdHRyKCkKK2FuZCBsZXQgaXQgY2FsbCB3aGF0ZXZlciB5b3UgaGFkIGFzIC0+cmV2bGlkYXRlKCkgKyAoZm9yIHN5bWxpbmtzIHRoYXQKK2hhZCAtPnJldmFsaWRhdGUoKSkgYWRkIGNhbGxzIGluIC0+Zm9sbG93X2xpbmsoKS8tPnJlYWRsaW5rKCkuCisKKy0tLQorW21hbmRhdG9yeV0KKworLT5kX3BhcmVudCBjaGFuZ2VzIGFyZSBub3QgcHJvdGVjdGVkIGJ5IEJLTCBhbnltb3JlLiAgUmVhZCBhY2Nlc3MgaXMgc2FmZQoraWYgYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZToKKwkqIGZpbGVzeXN0ZW0gaGFzIG5vIGNyb3NzLWRpcmVjdG9yeSByZW5hbWUoKQorCSogd2Uga25vdyB0aGF0IHBhcmVudCBoYWQgYmVlbiBsb2NrZWQgKGUuZy4gd2UgYXJlIGxvb2tpbmcgYXQKKy0+ZF9wYXJlbnQgb2YgLT5sb29rdXAoKSBhcmd1bWVudCkuCisJKiB3ZSBhcmUgY2FsbGVkIGZyb20gLT5yZW5hbWUoKS4KKwkqIHRoZSBjaGlsZCdzIC0+ZF9sb2NrIGlzIGhlbGQKK0F1ZGl0IHlvdXIgY29kZSBhbmQgYWRkIGxvY2tpbmcgaWYgbmVlZGVkLiAgTm90aWNlIHRoYXQgYW55IHBsYWNlIHRoYXQgaXMKK25vdCBwcm90ZWN0ZWQgYnkgdGhlIGNvbmRpdGlvbnMgYWJvdmUgaXMgcmlza3kgZXZlbiBpbiB0aGUgb2xkIHRyZWUgLSB5b3UKK2hhZCBiZWVuIHJlbHlpbmcgb24gQktMIGFuZCB0aGF0J3MgcHJvbmUgdG8gc2NyZXd1cHMuICBPbGQgdHJlZSBoYWQgcXVpdGUKK2EgZmV3IGhvbGVzIG9mIHRoYXQga2luZCAtIHVucHJvdGVjdGVkIGFjY2VzcyB0byAtPmRfcGFyZW50IGxlYWRpbmcgdG8KK2FueXRoaW5nIGZyb20gb29wcyB0byBzaWxlbnQgbWVtb3J5IGNvcnJ1cHRpb24uCisKKy0tLQorW21hbmRhdG9yeV0KKworCUZTX05PTU9VTlQgaXMgZ29uZS4gIElmIHlvdSB1c2UgaXQgLSBqdXN0IHNldCBNU19OT1VTRVIgaW4gZmxhZ3MKKyhzZWUgcm9vdGZzIGZvciBvbmUga2luZCBvZiBzb2x1dGlvbiBhbmQgYmRldi9zb2NrZXQvcGlwZSBmb3IgYW5vdGhlcikuCisKKy0tLQorW3JlY29tbWVuZGVkXQorCisJVXNlIGJkZXZfcmVhZF9vbmx5KGJkZXYpIGluc3RlYWQgb2YgaXNfcmVhZF9vbmx5KGtkZXYpLiAgVGhlIGxhdHRlcgoraXMgc3RpbGwgYWxpdmUsIGJ1dCBvbmx5IGJlY2F1c2Ugb2YgdGhlIG1lc3MgaW4gZHJpdmVycy9zMzkwL2Jsb2NrL2Rhc2QuYy4KK0FzIHNvb24gYXMgaXQgZ2V0cyBmaXhlZCBpc19yZWFkX29ubHkoKSB3aWxsIGRpZS4KKworLS0tCitbbWFuZGF0b3J5XQorCistPnBlcm1pc3Npb24oKSBpcyBjYWxsZWQgd2l0aG91dCBCS0wgbm93LiBHcmFiIGl0IG9uIGVudHJ5LCBkcm9wIHVwb24KK3JldHVybiAtIHRoYXQgd2lsbCBndWFyYW50ZWUgdGhlIHNhbWUgbG9ja2luZyB5b3UgdXNlZCB0byBoYXZlLiAgSWYKK3lvdXIgbWV0aG9kIG9yIGl0cyBwYXJ0cyBkbyBub3QgbmVlZCBCS0wgLSBiZXR0ZXIgeWV0LCBub3cgeW91IGNhbgorc2hpZnQgbG9ja19rZXJuZWwoKSBhbmQgdW5sb2NrX2tlcm5lbCgpIHNvIHRoYXQgdGhleSB3b3VsZCBwcm90ZWN0CitleGFjdGx5IHdoYXQgbmVlZHMgdG8gYmUgcHJvdGVjdGVkLgorCistLS0KK1ttYW5kYXRvcnldCisKKy0+c3RhdGZzKCkgaXMgbm93IGNhbGxlZCB3aXRob3V0IEJLTCBoZWxkLiAgQktMIHNob3VsZCBoYXZlIGJlZW4KK3NoaWZ0ZWQgaW50byBpbmRpdmlkdWFsIGZzIHNiX29wIGZ1bmN0aW9ucyB3aGVyZSBpdCdzIG5vdCBjbGVhciB0aGF0CitpdCdzIHNhZmUgdG8gcmVtb3ZlIGl0LiAgSWYgeW91IGRvbid0IG5lZWQgaXQsIHJlbW92ZSBpdC4KKworLS0tCitbbWFuZGF0b3J5XQorCisJaXNfcmVhZF9vbmx5KCkgaXMgZ29uZTsgdXNlIGJkZXZfcmVhZF9vbmx5KCkgaW5zdGVhZC4KKworLS0tCitbbWFuZGF0b3J5XQorCisJZGVzdHJveV9idWZmZXJzKCkgaXMgZ29uZTsgdXNlIGludmFsaWRhdGVfYmRldigpLgorCistLS0KK1ttYW5kYXRvcnldCisKKwlmc3luY19kZXYoKSBpcyBnb25lOyB1c2UgZnN5bmNfYmRldigpLiAgTk9URTogbHZtIGJyZWFrYWdlIGlzCitkZWxpYmVyYXRlOyBhcyBzb29uIGFzIHN0cnVjdCBibG9ja19kZXZpY2UgKiBpcyBwcm9wYWdhdGVkIGluIGEgcmVhc29uYWJsZQord2F5IGJ5IHRoYXQgY29kZSBmaXhpbmcgd2lsbCBiZWNvbWUgdHJpdmlhbDsgdW50aWwgdGhlbiBub3RoaW5nIGNhbiBiZQorZG9uZS4KKworW21hbmRhdG9yeV0KKworCWJsb2NrIHRydW5jYXRhdGlvbiBvbiBlcnJvciBleGl0IGZyb20gLT53cml0ZV9iZWdpbiwgYW5kIC0+ZGlyZWN0X0lPCittb3ZlZCBmcm9tIGdlbmVyaWMgbWV0aG9kcyAoYmxvY2tfd3JpdGVfYmVnaW4sIGNvbnRfd3JpdGVfYmVnaW4sCitub2JoX3dyaXRlX2JlZ2luLCBibG9ja2Rldl9kaXJlY3RfSU8qKSB0byBjYWxsZXJzLiAgVGFrZSBhIGxvb2sgYXQKK2V4dDJfd3JpdGVfZmFpbGVkIGFuZCBjYWxsZXJzIGZvciBhbiBleGFtcGxlLgorCitbbWFuZGF0b3J5XQorCisJLT50cnVuY2F0ZSBpcyBnb25lLiAgVGhlIHdob2xlIHRydW5jYXRlIHNlcXVlbmNlIG5lZWRzIHRvIGJlCitpbXBsZW1lbnRlZCBpbiAtPnNldGF0dHIsIHdoaWNoIGlzIG5vdyBtYW5kYXRvcnkgZm9yIGZpbGVzeXN0ZW1zCitpbXBsZW1lbnRpbmcgb24tZGlzayBzaXplIGNoYW5nZXMuICBTdGFydCB3aXRoIGEgY29weSBvZiB0aGUgb2xkIGlub2RlX3NldGF0dHIKK2FuZCB2bXRydW5jYXRlLCBhbmQgdGhlIHJlb3JkZXIgdGhlIHZtdHJ1bmNhdGUgKyBmb29mc192bXRydW5jYXRlIHNlcXVlbmNlIHRvCitiZSBpbiBvcmRlciBvZiB6ZXJvaW5nIGJsb2NrcyB1c2luZyBibG9ja190cnVuY2F0ZV9wYWdlIG9yIHNpbWlsYXIgaGVscGVycywKK3NpemUgdXBkYXRlIGFuZCBvbiBmaW5hbGx5IG9uLWRpc2sgdHJ1bmNhdGlvbiB3aGljaCBzaG91bGQgbm90IGZhaWwuCitpbm9kZV9jaGFuZ2Vfb2sgbm93IGluY2x1ZGVzIHRoZSBzaXplIGNoZWNrcyBmb3IgQVRUUl9TSVpFIGFuZCBtdXN0IGJlIGNhbGxlZAoraW4gdGhlIGJlZ2lubmluZyBvZiAtPnNldGF0dHIgdW5jb25kaXRpb25hbGx5LgorCitbbWFuZGF0b3J5XQorCisJLT5jbGVhcl9pbm9kZSgpIGFuZCAtPmRlbGV0ZV9pbm9kZSgpIGFyZSBnb25lOyAtPmV2aWN0X2lub2RlKCkgc2hvdWxkCitiZSB1c2VkIGluc3RlYWQuICBJdCBnZXRzIGNhbGxlZCB3aGVuZXZlciB0aGUgaW5vZGUgaXMgZXZpY3RlZCwgd2hldGhlciBpdCBoYXMKK3JlbWFpbmluZyBsaW5rcyBvciBub3QuICBDYWxsZXIgZG9lcyAqbm90KiBldmljdCB0aGUgcGFnZWNhY2hlIG9yIGlub2RlLWFzc29jaWF0ZWQKK21ldGFkYXRhIGJ1ZmZlcnM7IHRoZSBtZXRob2QgaGFzIHRvIHVzZSB0cnVuY2F0ZV9pbm9kZV9wYWdlc19maW5hbCgpIHRvIGdldCByaWQKK29mIHRob3NlLiBDYWxsZXIgbWFrZXMgc3VyZSBhc3luYyB3cml0ZWJhY2sgY2Fubm90IGJlIHJ1bm5pbmcgZm9yIHRoZSBpbm9kZSB3aGlsZQorKG9yIGFmdGVyKSAtPmV2aWN0X2lub2RlKCkgaXMgY2FsbGVkLgorCisJLT5kcm9wX2lub2RlKCkgcmV0dXJucyBpbnQgbm93OyBpdCdzIGNhbGxlZCBvbiBmaW5hbCBpcHV0KCkgd2l0aAoraW5vZGUtPmlfbG9jayBoZWxkIGFuZCBpdCByZXR1cm5zIHRydWUgaWYgZmlsZXN5c3RlbXMgd2FudHMgdGhlIGlub2RlIHRvIGJlCitkcm9wcGVkLiAgQXMgYmVmb3JlLCBnZW5lcmljX2Ryb3BfaW5vZGUoKSBpcyBzdGlsbCB0aGUgZGVmYXVsdCBhbmQgaXQncyBiZWVuCit1cGRhdGVkIGFwcHJvcHJpYXRlbHkuICBnZW5lcmljX2RlbGV0ZV9pbm9kZSgpIGlzIGFsc28gYWxpdmUgYW5kIGl0IGNvbnNpc3RzCitzaW1wbHkgb2YgcmV0dXJuIDEuICBOb3RlIHRoYXQgYWxsIGFjdHVhbCBldmljdGlvbiB3b3JrIGlzIGRvbmUgYnkgY2FsbGVyIGFmdGVyCistPmRyb3BfaW5vZGUoKSByZXR1cm5zLgorCisJQXMgYmVmb3JlLCBjbGVhcl9pbm9kZSgpIG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBvbiBlYWNoIGNhbGwgb2YKKy0+ZXZpY3RfaW5vZGUoKSAoYXMgaXQgdXNlZCB0byBiZSBmb3IgZWFjaCBjYWxsIG9mIC0+ZGVsZXRlX2lub2RlKCkpLiAgVW5saWtlCitiZWZvcmUsIGlmIHlvdSBhcmUgdXNpbmcgaW5vZGUtYXNzb2NpYXRlZCBtZXRhZGF0YSBidWZmZXJzIChpLmUuCittYXJrX2J1ZmZlcl9kaXJ0eV9pbm9kZSgpKSwgaXQncyB5b3VyIHJlc3BvbnNpYmlsaXR5IHRvIGNhbGwKK2ludmFsaWRhdGVfaW5vZGVfYnVmZmVycygpIGJlZm9yZSBjbGVhcl9pbm9kZSgpLgorCisJTk9URTogY2hlY2tpbmcgaV9ubGluayBpbiB0aGUgYmVnaW5uaW5nIG9mIC0+d3JpdGVfaW5vZGUoKSBhbmQgYmFpbGluZyBvdXQKK2lmIGl0J3MgemVybyBpcyBub3QgKmFuZCogKm5ldmVyKiAqaGFkKiAqYmVlbiogZW5vdWdoLiAgRmluYWwgdW5saW5rKCkgYW5kIGlwdXQoKQorbWF5IGhhcHBlbiB3aGlsZSB0aGUgaW5vZGUgaXMgaW4gdGhlIG1pZGRsZSBvZiAtPndyaXRlX2lub2RlKCk7IGUuZy4gaWYgeW91IGJsaW5kbHkKK2ZyZWUgdGhlIG9uLWRpc2sgaW5vZGUsIHlvdSBtYXkgZW5kIHVwIGRvaW5nIHRoYXQgd2hpbGUgLT53cml0ZV9pbm9kZSgpIGlzIHdyaXRpbmcKK3RvIGl0LgorCistLS0KK1ttYW5kYXRvcnldCisKKwkuZF9kZWxldGUoKSBub3cgb25seSBhZHZpc2VzIHRoZSBkY2FjaGUgYXMgdG8gd2hldGhlciBvciBub3QgdG8gY2FjaGUKK3VucmVmZXJlbmNlZCBkZW50cmllcywgYW5kIGlzIG5vdyBvbmx5IGNhbGxlZCB3aGVuIHRoZSBkZW50cnkgcmVmY291bnQgZ29lcyB0bworMC4gRXZlbiBvbiAwIHJlZmNvdW50IHRyYW5zaXRpb24sIGl0IG11c3QgYmUgYWJsZSB0byB0b2xlcmF0ZSBiZWluZyBjYWxsZWQgMCwKKzEsIG9yIG1vcmUgdGltZXMgKGVnLiBjb25zdGFudCwgaWRlbXBvdGVudCkuCisKKy0tLQorW21hbmRhdG9yeV0KKworCS5kX2NvbXBhcmUoKSBjYWxsaW5nIGNvbnZlbnRpb24gYW5kIGxvY2tpbmcgcnVsZXMgYXJlIHNpZ25pZmljYW50bHkKK2NoYW5nZWQuIFJlYWQgdXBkYXRlZCBkb2N1bWVudGF0aW9uIGluIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvdmZzLnR4dCAoYW5kCitsb29rIGF0IGV4YW1wbGVzIG9mIG90aGVyIGZpbGVzeXN0ZW1zKSBmb3IgZ3VpZGFuY2UuCisKKy0tLQorW21hbmRhdG9yeV0KKworCS5kX2hhc2goKSBjYWxsaW5nIGNvbnZlbnRpb24gYW5kIGxvY2tpbmcgcnVsZXMgYXJlIHNpZ25pZmljYW50bHkKK2NoYW5nZWQuIFJlYWQgdXBkYXRlZCBkb2N1bWVudGF0aW9uIGluIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvdmZzLnR4dCAoYW5kCitsb29rIGF0IGV4YW1wbGVzIG9mIG90aGVyIGZpbGVzeXN0ZW1zKSBmb3IgZ3VpZGFuY2UuCisKKy0tLQorW21hbmRhdG9yeV0KKwlkY2FjaGVfbG9jayBpcyBnb25lLCByZXBsYWNlZCBieSBmaW5lIGdyYWluZWQgbG9ja3MuIFNlZSBmcy9kY2FjaGUuYworZm9yIGRldGFpbHMgb2Ygd2hhdCBsb2NrcyB0byByZXBsYWNlIGRjYWNoZV9sb2NrIHdpdGggaW4gb3JkZXIgdG8gcHJvdGVjdAorcGFydGljdWxhciB0aGluZ3MuIE1vc3Qgb2YgdGhlIHRpbWUsIGEgZmlsZXN5c3RlbSBvbmx5IG5lZWRzIC0+ZF9sb2NrLCB3aGljaAorcHJvdGVjdHMgKmFsbCogdGhlIGRjYWNoZSBzdGF0ZSBvZiBhIGdpdmVuIGRlbnRyeS4KKworLS0KK1ttYW5kYXRvcnldCisKKwlGaWxlc3lzdGVtcyBtdXN0IFJDVS1mcmVlIHRoZWlyIGlub2RlcywgaWYgdGhleSBjYW4gaGF2ZSBiZWVuIGFjY2Vzc2VkCit2aWEgcmN1LXdhbGsgcGF0aCB3YWxrIChiYXNpY2FsbHksIGlmIHRoZSBmaWxlIGNhbiBoYXZlIGhhZCBhIHBhdGggbmFtZSBpbiB0aGUKK3ZmcyBuYW1lc3BhY2UpLgorCisJRXZlbiB0aG91Z2ggaV9kZW50cnkgYW5kIGlfcmN1IHNoYXJlIHN0b3JhZ2UgaW4gYSB1bmlvbiwgd2Ugd2lsbAoraW5pdGlhbGl6ZSB0aGUgZm9ybWVyIGluIGlub2RlX2luaXRfYWx3YXlzKCksIHNvIGp1c3QgbGVhdmUgaXQgYWxvbmUgaW4KK3RoZSBjYWxsYmFjay4gIEl0IHVzZWQgdG8gYmUgbmVjZXNzYXJ5IHRvIGNsZWFuIGl0IHRoZXJlLCBidXQgbm90IGFueW1vcmUKKyhzdGFydGluZyBhdCAzLjIpLgorCistLQorW3JlY29tbWVuZGVkXQorCXZmcyBub3cgdHJpZXMgdG8gZG8gcGF0aCB3YWxraW5nIGluICJyY3Utd2FsayBtb2RlIiwgd2hpY2ggYXZvaWRzCithdG9taWMgb3BlcmF0aW9ucyBhbmQgc2NhbGFiaWxpdHkgaGF6YXJkcyBvbiBkZW50cmllcyBhbmQgaW5vZGVzIChzZWUKK0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcGF0aC1sb29rdXAudHh0KS4gZF9oYXNoIGFuZCBkX2NvbXBhcmUgY2hhbmdlcworKGFib3ZlKSBhcmUgZXhhbXBsZXMgb2YgdGhlIGNoYW5nZXMgcmVxdWlyZWQgdG8gc3VwcG9ydCB0aGlzLiBGb3IgbW9yZSBjb21wbGV4CitmaWxlc3lzdGVtIGNhbGxiYWNrcywgdGhlIHZmcyBkcm9wcyBvdXQgb2YgcmN1LXdhbGsgbW9kZSBiZWZvcmUgdGhlIGZzIGNhbGwsIHNvCitubyBjaGFuZ2VzIGFyZSByZXF1aXJlZCB0byB0aGUgZmlsZXN5c3RlbS4gSG93ZXZlciwgdGhpcyBpcyBjb3N0bHkgYW5kIGxvc2VzCit0aGUgYmVuZWZpdHMgb2YgcmN1LXdhbGsgbW9kZS4gV2Ugd2lsbCBiZWdpbiB0byBhZGQgZmlsZXN5c3RlbSBjYWxsYmFja3MgdGhhdAorYXJlIHJjdS13YWxrIGF3YXJlLCBzaG93biBiZWxvdy4gRmlsZXN5c3RlbXMgc2hvdWxkIHRha2UgYWR2YW50YWdlIG9mIHRoaXMKK3doZXJlIHBvc3NpYmxlLgorCistLQorW21hbmRhdG9yeV0KKwlkX3JldmFsaWRhdGUgaXMgYSBjYWxsYmFjayB0aGF0IGlzIG1hZGUgb24gZXZlcnkgcGF0aCBlbGVtZW50IChpZgordGhlIGZpbGVzeXN0ZW0gcHJvdmlkZXMgaXQpLCB3aGljaCByZXF1aXJlcyBkcm9wcGluZyBvdXQgb2YgcmN1LXdhbGsgbW9kZS4gVGhpcworbWF5IG5vdyBiZSBjYWxsZWQgaW4gcmN1LXdhbGsgbW9kZSAobmQtPmZsYWdzICYgTE9PS1VQX1JDVSkuIC1FQ0hJTEQgc2hvdWxkIGJlCityZXR1cm5lZCBpZiB0aGUgZmlsZXN5c3RlbSBjYW5ub3QgaGFuZGxlIHJjdS13YWxrLiBTZWUKK0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvdmZzLnR4dCBmb3IgbW9yZSBkZXRhaWxzLgorCisJcGVybWlzc2lvbiBpcyBhbiBpbm9kZSBwZXJtaXNzaW9uIGNoZWNrIHRoYXQgaXMgY2FsbGVkIG9uIG1hbnkgb3IgYWxsCitkaXJlY3RvcnkgaW5vZGVzIG9uIHRoZSB3YXkgZG93biBhIHBhdGggd2FsayAodG8gY2hlY2sgZm9yIGV4ZWMgcGVybWlzc2lvbikuIEl0CittdXN0IG5vdyBiZSByY3Utd2FsayBhd2FyZSAobWFzayAmIE1BWV9OT1RfQkxPQ0spLiAgU2VlCitEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Zmcy50eHQgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0tCitbbWFuZGF0b3J5XQorCUluIC0+ZmFsbG9jYXRlKCkgeW91IG11c3QgY2hlY2sgdGhlIG1vZGUgb3B0aW9uIHBhc3NlZCBpbi4gIElmIHlvdXIKK2ZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBob2xlIHB1bmNoaW5nIChkZWFsbG9jYXRpbmcgc3BhY2UgaW4gdGhlIG1pZGRsZSBvZiBhCitmaWxlKSB5b3UgbXVzdCByZXR1cm4gLUVPUE5PVFNVUFAgaWYgRkFMTE9DX0ZMX1BVTkNIX0hPTEUgaXMgc2V0IGluIG1vZGUuCitDdXJyZW50bHkgeW91IGNhbiBvbmx5IGhhdmUgRkFMTE9DX0ZMX1BVTkNIX0hPTEUgd2l0aCBGQUxMT0NfRkxfS0VFUF9TSVpFIHNldCwKK3NvIHRoZSBpX3NpemUgc2hvdWxkIG5vdCBjaGFuZ2Ugd2hlbiBob2xlIHB1bmNoaW5nLCBldmVuIHdoZW4gcHVjaGluZyB0aGUgZW5kIG9mCithIGZpbGUgb2ZmLgorCistLQorW21hbmRhdG9yeV0KKwktPmdldF9zYigpIGlzIGdvbmUuICBTd2l0Y2ggdG8gdXNlIG9mIC0+bW91bnQoKS4gIFR5cGljYWxseSBpdCdzIGp1c3QKK2EgbWF0dGVyIG9mIHN3aXRjaGluZyBmcm9tIGNhbGxpbmcgZ2V0X3NiXy4uLiB0byBtb3VudF8uLi4gYW5kIGNoYW5naW5nIHRoZQorZnVuY3Rpb24gdHlwZS4gIElmIHlvdSB3ZXJlIGRvaW5nIGl0IG1hbnVhbGx5LCBqdXN0IHN3aXRjaCBmcm9tIHNldHRpbmcgLT5tbnRfcm9vdAordG8gc29tZSBwb2ludGVyIHRvIHJldHVybmluZyB0aGF0IHBvaW50ZXIuICBPbiBlcnJvcnMgcmV0dXJuIEVSUl9QVFIoLi4uKS4KKworLS0KK1ttYW5kYXRvcnldCisJLT5wZXJtaXNzaW9uKCkgYW5kIGdlbmVyaWNfcGVybWlzc2lvbigpaGF2ZSBsb3N0IGZsYWdzCithcmd1bWVudDsgaW5zdGVhZCBvZiBwYXNzaW5nIElQRVJNX0ZMQUdfUkNVIHdlIGFkZCBNQVlfTk9UX0JMT0NLIGludG8gbWFzay4KKwlnZW5lcmljX3Blcm1pc3Npb24oKSBoYXMgYWxzbyBsb3N0IHRoZSBjaGVja19hY2wgYXJndW1lbnQ7IEFDTCBjaGVja2luZworaGFzIGJlZW4gdGFrZW4gdG8gVkZTIGFuZCBmaWxlc3lzdGVtcyBuZWVkIHRvIHByb3ZpZGUgYSBub24tTlVMTCAtPmlfb3AtPmdldF9hY2wKK3RvIHJlYWQgYW4gQUNMIGZyb20gZGlzay4KKworLS0KK1ttYW5kYXRvcnldCisJSWYgeW91IGltcGxlbWVudCB5b3VyIG93biAtPmxsc2VlaygpIHlvdSBtdXN0IGhhbmRsZSBTRUVLX0hPTEUgYW5kCitTRUVLX0RBVEEuICBZb3UgY2FuIGhhbmxlIHRoaXMgYnkgcmV0dXJuaW5nIC1FSU5WQUwsIGJ1dCBpdCB3b3VsZCBiZSBuaWNlciB0bworc3VwcG9ydCBpdCBpbiBzb21lIHdheS4gIFRoZSBnZW5lcmljIGhhbmRsZXIgYXNzdW1lcyB0aGF0IHRoZSBlbnRpcmUgZmlsZSBpcworZGF0YSBhbmQgdGhlcmUgaXMgYSB2aXJ0dWFsIGhvbGUgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZS4gIFNvIGlmIHRoZSBwcm92aWRlZAorb2Zmc2V0IGlzIGxlc3MgdGhhbiBpX3NpemUgYW5kIFNFRUtfREFUQSBpcyBzcGVjaWZpZWQsIHJldHVybiB0aGUgc2FtZSBvZmZzZXQuCitJZiB0aGUgYWJvdmUgaXMgdHJ1ZSBmb3IgdGhlIG9mZnNldCBhbmQgeW91IGFyZSBnaXZlbiBTRUVLX0hPTEUsIHJldHVybiB0aGUgZW5kCitvZiB0aGUgZmlsZS4gIElmIHRoZSBvZmZzZXQgaXMgaV9zaXplIG9yIGdyZWF0ZXIgcmV0dXJuIC1FTlhJTyBpbiBlaXRoZXIgY2FzZS4KKworW21hbmRhdG9yeV0KKwlJZiB5b3UgaGF2ZSB5b3VyIG93biAtPmZzeW5jKCkgeW91IG11c3QgbWFrZSBzdXJlIHRvIGNhbGwKK2ZpbGVtYXBfd3JpdGVfYW5kX3dhaXRfcmFuZ2UoKSBzbyB0aGF0IGFsbCBkaXJ0eSBwYWdlcyBhcmUgc3luY2VkIG91dCBwcm9wZXJseS4KK1lvdSBtdXN0IGFsc28ga2VlcCBpbiBtaW5kIHRoYXQgLT5mc3luYygpIGlzIG5vdCBjYWxsZWQgd2l0aCBpX211dGV4IGhlbGQKK2FueW1vcmUsIHNvIGlmIHlvdSByZXF1aXJlIGlfbXV0ZXggbG9ja2luZyB5b3UgbXVzdCBtYWtlIHN1cmUgdG8gdGFrZSBpdCBhbmQKK3JlbGVhc2UgaXQgeW91cnNlbGYuCisKKy0tCitbbWFuZGF0b3J5XQorCWRfYWxsb2Nfcm9vdCgpIGlzIGdvbmUsIGFsb25nIHdpdGggYSBsb3Qgb2YgYnVncyBjYXVzZWQgYnkgY29kZQorbWlzdXNpbmcgaXQuICBSZXBsYWNlbWVudDogZF9tYWtlX3Jvb3QoaW5vZGUpLiAgVGhlIGRpZmZlcmVuY2UgaXMsCitkX21ha2Vfcm9vdCgpIGRyb3BzIHRoZSByZWZlcmVuY2UgdG8gaW5vZGUgaWYgZGVudHJ5IGFsbG9jYXRpb24gZmFpbHMuICAKKworLS0KK1ttYW5kYXRvcnldCisJVGhlIHdpdGNoIGlzIGRlYWQhICBXZWxsLCAyLzMgb2YgaXQsIGFueXdheS4gIC0+ZF9yZXZhbGlkYXRlKCkgYW5kCistPmxvb2t1cCgpIGRvICpub3QqIHRha2Ugc3RydWN0IG5hbWVpZGF0YSBhbnltb3JlOyBqdXN0IHRoZSBmbGFncy4KKy0tCitbbWFuZGF0b3J5XQorCS0+Y3JlYXRlKCkgZG9lc24ndCB0YWtlIHN0cnVjdCBuYW1laWRhdGEgKjsgdW5saWtlIHRoZSBwcmV2aW91cwordHdvLCBpdCBnZXRzICJpcyBpdCBhbiBPX0VYQ0wgb3IgZXF1aXZhbGVudD8iIGJvb2xlYW4gYXJndW1lbnQuICBOb3RlIHRoYXQKK2xvY2FsIGZpbGVzeXN0ZW1zIGNhbiBpZ25vcmUgdGhhIGFyZ3VtZW50IC0gdGhleSBhcmUgZ3VhcmFudGVlZCB0aGF0IHRoZQorb2JqZWN0IGRvZXNuJ3QgZXhpc3QuICBJdCdzIHJlbW90ZS9kaXN0cmlidXRlZCBvbmVzIHRoYXQgbWlnaHQgY2FyZS4uLgorLS0KK1ttYW5kYXRvcnldCisJRlNfUkVWQUxfRE9UIGlzIGdvbmU7IGlmIHlvdSB1c2VkIHRvIGhhdmUgaXQsIGFkZCAtPmRfd2Vha19yZXZhbGlkYXRlKCkKK2luIHlvdXIgZGVudHJ5IG9wZXJhdGlvbnMgaW5zdGVhZC4KKy0tCitbbWFuZGF0b3J5XQorCXZmc19yZWFkZGlyKCkgaXMgZ29uZTsgc3dpdGNoIHRvIGl0ZXJhdGVfZGlyKCkgaW5zdGVhZAorLS0KK1ttYW5kYXRvcnldCisJLT5yZWFkZGlyKCkgaXMgZ29uZSBub3c7IHN3aXRjaCB0byAtPml0ZXJhdGUoKQorW21hbmRhdG9yeV0KKwl2ZnNfZm9sbG93X2xpbmsgaGFzIGJlZW4gcmVtb3ZlZC4gIEZpbGVzeXN0ZW1zIG11c3QgdXNlIG5kX3NldF9saW5rCisJZnJvbSAtPmZvbGxvd19saW5rIGZvciBub3JtYWwgc3ltbGlua3MsIG9yIG5kX2p1bXBfbGluayBmb3IgbWFnaWMKKwkvcHJvYy88cGlkPiBzdHlsZSBsaW5rcy4KKy0tCitbbWFuZGF0b3J5XQorCWlnZXQ1X2xvY2tlZCgpL2lsb29rdXA1KCkvaWxvb2t1cDVfbm93YWl0KCkgdGVzdCgpIGNhbGxiYWNrIHVzZWQgdG8gYmUKKwljYWxsZWQgd2l0aCBib3RoIC0+aV9sb2NrIGFuZCBpbm9kZV9oYXNoX2xvY2sgaGVsZDsgdGhlIGZvcm1lciBpcyAqbm90KgorCXRha2VuIGFueW1vcmUsIHNvIHZlcmlmeSB0aGF0IHlvdXIgY2FsbGJhY2tzIGRvIG5vdCByZWx5IG9uIGl0IChub25lCisJb2YgdGhlIGluLXRyZWUgaW5zdGFuY2VzIGRpZCkuICBpbm9kZV9oYXNoX2xvY2sgaXMgc3RpbGwgaGVsZCwKKwlvZiBjb3Vyc2UsIHNvIHRoZXkgYXJlIHN0aWxsIHNlcmlhbGl6ZWQgd3J0IHJlbW92YWwgZnJvbSBpbm9kZSBoYXNoLAorCWFzIHdlbGwgYXMgd3J0IHNldCgpIGNhbGxiYWNrIG9mIGlnZXQ1X2xvY2tlZCgpLgorLS0KK1ttYW5kYXRvcnldCisJZF9tYXRlcmlhbGlzZV91bmlxdWUoKSBpcyBnb25lOyBkX3NwbGljZV9hbGlhcygpIGRvZXMgZXZlcnl0aGluZyB5b3UKKwluZWVkIG5vdy4gIFJlbWVtYmVyIHRoYXQgdGhleSBoYXZlIG9wcG9zaXRlIG9yZGVycyBvZiBhcmd1bWVudHMgOy0vCistLQorW21hbmRhdG9yeV0KKwlmX2RlbnRyeSBpcyBnb25lOyB1c2UgZl9wYXRoLmRlbnRyeSwgb3IsIGJldHRlciB5ZXQsIHNlZSBpZiB5b3UgY2FuIGF2b2lkCisJaXQgZW50aXJlbHkuCistLQorW21hbmRhdG9yeV0KKwluZXZlciBjYWxsIC0+cmVhZCgpIGFuZCAtPndyaXRlKCkgZGlyZWN0bHk7IHVzZSBfX3Zmc197cmVhZCx3cml0ZX0gb3IKKwl3cmFwcGVyczsgaW5zdGVhZCBvZiBjaGVja2luZyBmb3IgLT53cml0ZSBvciAtPnJlYWQgYmVpbmcgTlVMTCwgbG9vayBmb3IKKwlGTU9ERV9DQU5fe1dSSVRFLFJFQUR9IGluIGZpbGUtPmZfbW9kZS4KKy0tCitbbWFuZGF0b3J5XQorCWRvIF9ub3RfIHVzZSBuZXdfc3luY197cmVhZCx3cml0ZX0gZm9yIC0+cmVhZC8tPndyaXRlOyBsZWF2ZSBpdCBOVUxMCisJaW5zdGVhZC4KKy0tCitbbWFuZGF0b3J5XQorCS0+YWlvX3JlYWQvLT5haW9fd3JpdGUgYXJlIGdvbmUuICBVc2UgLT5yZWFkX2l0ZXIvLT53cml0ZV9pdGVyLgorLS0tCitbcmVjb21tZW5kZWRdCisJZm9yIGVtYmVkZGVkICgiZmFzdCIpIHN5bWxpbmtzIGp1c3Qgc2V0IGlub2RlLT5pX2xpbmsgdG8gd2hlcmV2ZXIgdGhlCisJc3ltbGluayBib2R5IGlzIGFuZCB1c2Ugc2ltcGxlX2ZvbGxvd19saW5rKCkgYXMgLT5mb2xsb3dfbGluaygpLgorLS0KK1ttYW5kYXRvcnldCisJY2FsbGluZyBjb252ZW50aW9ucyBmb3IgLT5mb2xsb3dfbGluaygpIGhhdmUgY2hhbmdlZC4gIEluc3RlYWQgb2YgcmV0dXJuaW5nCisJY29va2llIGFuZCB1c2luZyBuZF9zZXRfbGluaygpIHRvIHN0b3JlIHRoZSBib2R5IHRvIHRyYXZlcnNlLCB3ZSByZXR1cm4KKwl0aGUgYm9keSB0byB0cmF2ZXJzZSBhbmQgc3RvcmUgdGhlIGNvb2tpZSB1c2luZyBleHBsaWNpdCB2b2lkICoqIGFyZ3VtZW50LgorCW5hbWVpZGF0YSBpc24ndCBwYXNzZWQgYXQgYWxsIC0gbmRfanVtcF9saW5rKCkgZG9lc24ndCBuZWVkIGl0IGFuZAorCW5kX1tnc11ldF9saW5rKCkgaXMgZ29uZS4KKy0tCitbbWFuZGF0b3J5XQorCWNhbGxpbmcgY29udmVudGlvbnMgZm9yIC0+cHV0X2xpbmsoKSBoYXZlIGNoYW5nZWQuICBJdCBnZXRzIGlub2RlIGluc3RlYWQgb2YKKwlkZW50cnksICBpdCBkb2VzIG5vdCBnZXQgbmFtZWlkYXRhIGF0IGFsbCBhbmQgaXQgZ2V0cyBjYWxsZWQgb25seSB3aGVuIGNvb2tpZQorCWlzIG5vbi1OVUxMLiAgTm90ZSB0aGF0IGxpbmsgYm9keSBpc24ndCBhdmFpbGFibGUgYW55bW9yZSwgc28gaWYgeW91IG5lZWQgaXQsCisJc3RvcmUgaXQgYXMgY29va2llLgorLS0KK1ttYW5kYXRvcnldCisJX19mZF9pbnN0YWxsKCkgJiBmZF9pbnN0YWxsKCkgY2FuIG5vdyBzbGVlcC4gQ2FsbGVycyBzaG91bGQgbm90CisJaG9sZCBhIHNwaW5sb2NrCW9yIG90aGVyIHJlc291cmNlcyB0aGF0IGRvIG5vdCBhbGxvdyBhIHNjaGVkdWxlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjcxNjQxMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy50eHQKQEAgLTAsMCArMSwxODg0IEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgVCBIIEUgIC9wcm9jICAgRiBJIEwgRSBTIFkgUyBUIEUgTQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvcHJvYy9zeXMgICAgICAgICBUZXJyZWhvbiBCb3dkZW4gPHRlcnJlaG9uQHBhY2JlbGwubmV0PiAgICAgICAgT2N0b2JlciA3IDE5OTkKKyAgICAgICAgICAgICAgICAgIEJvZG8gQmF1ZXIgPGJiQHJpY29jaGV0Lm5ldD4KKworMi40LnggdXBkYXRlCSAgSm9yZ2UgTmVyaW4gPGNvbWFuZGFudGVAemFyYWxpbnV4LmNvbT4gICAgICBOb3ZlbWJlciAxNCAyMDAwCittb3ZlIC9wcm9jL3N5cwkgIFNoZW4gRmVuZyA8c2hlbkBjbi5mdWppdHN1LmNvbT4JCSAgQXByaWwgMSAyMDA5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1ZlcnNpb24gMS4zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbCB2ZXJzaW9uIDIuMi4xMgorCQkJCQkgICAgICBLZXJuZWwgdmVyc2lvbiAyLjQuMC10ZXN0MTEtcHJlNAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitmaXhlcy91cGRhdGUgcGFydCAxLjEgIFN0ZWZhbmkgU2VpYm9sZCA8c3RlZmFuaUBzZWlib2xkLm5ldD4gICAgICAgSnVuZSA5IDIwMDkKKworVGFibGUgb2YgQ29udGVudHMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKyAgMCAgICAgUHJlZmFjZQorICAwLjEJSW50cm9kdWN0aW9uL0NyZWRpdHMKKyAgMC4yCUxlZ2FsIFN0dWZmCisKKyAgMQlDb2xsZWN0aW5nIFN5c3RlbSBJbmZvcm1hdGlvbgorICAxLjEJUHJvY2Vzcy1TcGVjaWZpYyBTdWJkaXJlY3RvcmllcworICAxLjIJS2VybmVsIGRhdGEKKyAgMS4zCUlERSBkZXZpY2VzIGluIC9wcm9jL2lkZQorICAxLjQJTmV0d29ya2luZyBpbmZvIGluIC9wcm9jL25ldAorICAxLjUJU0NTSSBpbmZvCisgIDEuNglQYXJhbGxlbCBwb3J0IGluZm8gaW4gL3Byb2MvcGFycG9ydAorICAxLjcJVFRZIGluZm8gaW4gL3Byb2MvdHR5CisgIDEuOAlNaXNjZWxsYW5lb3VzIGtlcm5lbCBzdGF0aXN0aWNzIGluIC9wcm9jL3N0YXQKKyAgMS45CUV4dDQgZmlsZSBzeXN0ZW0gcGFyYW1ldGVycworCisgIDIJTW9kaWZ5aW5nIFN5c3RlbSBQYXJhbWV0ZXJzCisKKyAgMwlQZXItUHJvY2VzcyBQYXJhbWV0ZXJzCisgIDMuMQkvcHJvYy88cGlkPi9vb21fYWRqICYgL3Byb2MvPHBpZD4vb29tX3Njb3JlX2FkaiAtIEFkanVzdCB0aGUgb29tLWtpbGxlcgorCQkJCQkJCQlzY29yZQorICAzLjIJL3Byb2MvPHBpZD4vb29tX3Njb3JlIC0gRGlzcGxheSBjdXJyZW50IG9vbS1raWxsZXIgc2NvcmUKKyAgMy4zCS9wcm9jLzxwaWQ+L2lvIC0gRGlzcGxheSB0aGUgSU8gYWNjb3VudGluZyBmaWVsZHMKKyAgMy40CS9wcm9jLzxwaWQ+L2NvcmVkdW1wX2ZpbHRlciAtIENvcmUgZHVtcCBmaWx0ZXJpbmcgc2V0dGluZ3MKKyAgMy41CS9wcm9jLzxwaWQ+L21vdW50aW5mbyAtIEluZm9ybWF0aW9uIGFib3V0IG1vdW50cworICAzLjYJL3Byb2MvPHBpZD4vY29tbSAgJiAvcHJvYy88cGlkPi90YXNrLzx0aWQ+L2NvbW0KKyAgMy43ICAgL3Byb2MvPHBpZD4vdGFzay88dGlkPi9jaGlsZHJlbiAtIEluZm9ybWF0aW9uIGFib3V0IHRhc2sgY2hpbGRyZW4KKyAgMy44ICAgL3Byb2MvPHBpZD4vZmRpbmZvLzxmZD4gLSBJbmZvcm1hdGlvbiBhYm91dCBvcGVuZWQgZmlsZQorICAzLjkgICAvcHJvYy88cGlkPi9tYXBfZmlsZXMgLSBJbmZvcm1hdGlvbiBhYm91dCBtZW1vcnkgbWFwcGVkIGZpbGVzCisKKyAgNAlDb25maWd1cmluZyBwcm9jZnMKKyAgNC4xCU1vdW50IG9wdGlvbnMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQcmVmYWNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworMC4xIEludHJvZHVjdGlvbi9DcmVkaXRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBkb2N1bWVudGF0aW9uIGlzICBwYXJ0IG9mIGEgc29vbiAob3IgIHNvIHdlIGhvcGUpIHRvIGJlICByZWxlYXNlZCBib29rIG9uCit0aGUgU3VTRSAgTGludXggZGlzdHJpYnV0aW9uLiBBcyAgdGhlcmUgaXMgIG5vIGNvbXBsZXRlIGRvY3VtZW50YXRpb24gIGZvciB0aGUKKy9wcm9jIGZpbGUgc3lzdGVtIGFuZCB3ZSd2ZSB1c2VkICBtYW55IGZyZWVseSBhdmFpbGFibGUgc291cmNlcyB0byB3cml0ZSB0aGVzZQorY2hhcHRlcnMsIGl0ICBzZWVtcyBvbmx5IGZhaXIgIHRvIGdpdmUgdGhlIHdvcmsgIGJhY2sgdG8gdGhlICBMaW51eCBjb21tdW5pdHkuCitUaGlzIHdvcmsgaXMgIGJhc2VkIG9uIHRoZSAyLjIuKiAga2VybmVsIHZlcnNpb24gYW5kIHRoZSAgdXBjb21pbmcgMi40LiouIEknbQorYWZyYWlkIGl0J3Mgc3RpbGwgZmFyIGZyb20gY29tcGxldGUsIGJ1dCB3ZSAgaG9wZSBpdCB3aWxsIGJlIHVzZWZ1bC4gQXMgZmFyIGFzCit3ZSBrbm93LCBpdCBpcyB0aGUgZmlyc3QgJ2FsbC1pbi1vbmUnIGRvY3VtZW50IGFib3V0IHRoZSAvcHJvYyBmaWxlIHN5c3RlbS4gSXQKK2lzIGZvY3VzZWQgIG9uIHRoZSBJbnRlbCAgeDg2IGhhcmR3YXJlLCAgc28gaWYgeW91ICBhcmUgbG9va2luZyBmb3IgIFBQQywgQVJNLAorU1BBUkMsIEFYUCwgZXRjLiwgZmVhdHVyZXMsIHlvdSBwcm9iYWJseSAgd29uJ3QgZmluZCB3aGF0IHlvdSBhcmUgbG9va2luZyBmb3IuCitJdCBhbHNvIG9ubHkgY292ZXJzIElQdjQgbmV0d29ya2luZywgbm90IElQdjYgbm9yIG90aGVyIHByb3RvY29scyAtIHNvcnJ5LiBCdXQKK2FkZGl0aW9ucyBhbmQgcGF0Y2hlcyAgYXJlIHdlbGNvbWUgYW5kIHdpbGwgIGJlIGFkZGVkIHRvIHRoaXMgIGRvY3VtZW50IGlmIHlvdQorbWFpbCB0aGVtIHRvIEJvZG8uCisKK1dlJ2QgbGlrZSAgdG8gIHRoYW5rIEFsYW4gQ294LCBSaWsgdmFuIFJpZWwsIGFuZCBBbGV4ZXkgS3V6bmV0c292IGFuZCBhIGxvdCBvZgorb3RoZXIgcGVvcGxlIGZvciBoZWxwIGNvbXBpbGluZyB0aGlzIGRvY3VtZW50YXRpb24uIFdlJ2QgYWxzbyBsaWtlIHRvIGV4dGVuZCBhCitzcGVjaWFsIHRoYW5rICB5b3UgdG8gQW5kaSBLbGVlbiBmb3IgZG9jdW1lbnRhdGlvbiwgd2hpY2ggd2UgcmVsaWVkIG9uIGhlYXZpbHkKK3RvIGNyZWF0ZSAgdGhpcyAgZG9jdW1lbnQsICBhcyB3ZWxsIGFzIHRoZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGhlIHByb3ZpZGVkLgorVGhhbmtzIHRvICBldmVyeWJvZHkgIGVsc2UgIHdobyBjb250cmlidXRlZCBzb3VyY2Ugb3IgZG9jcyB0byB0aGUgTGludXgga2VybmVsCithbmQgaGVscGVkIGNyZWF0ZSBhIGdyZWF0IHBpZWNlIG9mIHNvZnR3YXJlLi4uIDopCisKK0lmIHlvdSAgaGF2ZSAgYW55IGNvbW1lbnRzLCBjb3JyZWN0aW9ucyBvciBhZGRpdGlvbnMsIHBsZWFzZSBkb24ndCBoZXNpdGF0ZSB0bworY29udGFjdCBCb2RvICBCYXVlciAgYXQgIGJiQHJpY29jaGV0Lm5ldC4gIFdlJ2xsICBiZSBoYXBweSB0byBhZGQgdGhlbSB0byB0aGlzCitkb2N1bWVudC4KKworVGhlICAgbGF0ZXN0ICAgdmVyc2lvbiAgICBvZiAgIHRoaXMgICBkb2N1bWVudCAgIGlzICAgIGF2YWlsYWJsZSAgIG9ubGluZSAgIGF0CitodHRwOi8vdGxkcC5vcmcvTERQL0xpbnV4LUZpbGVzeXN0ZW0tSGllcmFyY2h5L2h0bWwvcHJvYy5odG1sCisKK0lmICB0aGUgYWJvdmUgIGRpcmVjdGlvbiBkb2VzICBub3Qgd29ya3MgIGZvciB5b3UsICB5b3UgY291bGQgIHRyeSB0aGUgIGtlcm5lbAorbWFpbGluZyAgbGlzdCAgYXQgIGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcgIGFuZC9vciB0cnkgIHRvICByZWFjaCAgbWUgIGF0Citjb21hbmRhbnRlQHphcmFsaW51eC5jb20uCisKKzAuMiBMZWdhbCBTdHVmZgorLS0tLS0tLS0tLS0tLS0tCisKK1dlIGRvbid0ICBndWFyYW50ZWUgIHRoZSAgY29ycmVjdG5lc3MgIG9mIHRoaXMgZG9jdW1lbnQsIGFuZCBpZiB5b3UgY29tZSB0byB1cworY29tcGxhaW5pbmcgYWJvdXQgIGhvdyAgeW91ICBzY3Jld2VkICB1cCAgeW91ciAgc3lzdGVtICBiZWNhdXNlICBvZiAgaW5jb3JyZWN0Citkb2N1bWVudGF0aW9uLCB3ZSB3b24ndCBmZWVsIHJlc3BvbnNpYmxlLi4uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ0hBUFRFUiAxOiBDT0xMRUNUSU5HIFNZU1RFTSBJTkZPUk1BVElPTgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSW4gVGhpcyBDaGFwdGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogSW52ZXN0aWdhdGluZyAgdGhlICBwcm9wZXJ0aWVzICBvZiAgdGhlICBwc2V1ZG8gIGZpbGUgIHN5c3RlbSAgL3Byb2MgYW5kIGl0cworICBhYmlsaXR5IHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gb24gdGhlIHJ1bm5pbmcgTGludXggc3lzdGVtCisqIEV4YW1pbmluZyAvcHJvYydzIHN0cnVjdHVyZQorKiBVbmNvdmVyaW5nICB2YXJpb3VzICBpbmZvcm1hdGlvbiAgYWJvdXQgdGhlIGtlcm5lbCBhbmQgdGhlIHByb2Nlc3NlcyBydW5uaW5nCisgIG9uIHRoZSBzeXN0ZW0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK1RoZSBwcm9jICBmaWxlICBzeXN0ZW0gYWN0cyBhcyBhbiBpbnRlcmZhY2UgdG8gaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIGluIHRoZQora2VybmVsLiBJdCAgY2FuICBiZSAgdXNlZCB0byBvYnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN5c3RlbSBhbmQgdG8gY2hhbmdlCitjZXJ0YWluIGtlcm5lbCBwYXJhbWV0ZXJzIGF0IHJ1bnRpbWUgKHN5c2N0bCkuCisKK0ZpcnN0LCB3ZSdsbCAgdGFrZSAgYSAgbG9vayAgYXQgdGhlIHJlYWQtb25seSBwYXJ0cyBvZiAvcHJvYy4gSW4gQ2hhcHRlciAyLCB3ZQorc2hvdyB5b3UgaG93IHlvdSBjYW4gdXNlIC9wcm9jL3N5cyB0byBjaGFuZ2Ugc2V0dGluZ3MuCisKKzEuMSBQcm9jZXNzLVNwZWNpZmljIFN1YmRpcmVjdG9yaWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZGlyZWN0b3J5ICAvcHJvYyAgY29udGFpbnMgIChhbW9uZyBvdGhlciB0aGluZ3MpIG9uZSBzdWJkaXJlY3RvcnkgZm9yIGVhY2gKK3Byb2Nlc3MgcnVubmluZyBvbiB0aGUgc3lzdGVtLCB3aGljaCBpcyBuYW1lZCBhZnRlciB0aGUgcHJvY2VzcyBJRCAoUElEKS4KKworVGhlIGxpbmsgIHNlbGYgIHBvaW50cyAgdG8gIHRoZSAgcHJvY2VzcyByZWFkaW5nIHRoZSBmaWxlIHN5c3RlbS4gRWFjaCBwcm9jZXNzCitzdWJkaXJlY3RvcnkgaGFzIHRoZSBlbnRyaWVzIGxpc3RlZCBpbiBUYWJsZSAxLTEuCisKKworVGFibGUgMS0xOiBQcm9jZXNzIHNwZWNpZmljIGVudHJpZXMgaW4gL3Byb2MKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorIEZpbGUJCUNvbnRlbnQKKyBjbGVhcl9yZWZzCUNsZWFycyBwYWdlIHJlZmVyZW5jZWQgYml0cyBzaG93biBpbiBzbWFwcyBvdXRwdXQKKyBjbWRsaW5lCUNvbW1hbmQgbGluZSBhcmd1bWVudHMKKyBjcHUJCUN1cnJlbnQgYW5kIGxhc3QgY3B1IGluIHdoaWNoIGl0IHdhcyBleGVjdXRlZAkoMi40KShzbXApCisgY3dkCQlMaW5rIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5CisgZW52aXJvbglWYWx1ZXMgb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzCisgZXhlCQlMaW5rIHRvIHRoZSBleGVjdXRhYmxlIG9mIHRoaXMgcHJvY2VzcworIGZkCQlEaXJlY3RvcnksIHdoaWNoIGNvbnRhaW5zIGFsbCBmaWxlIGRlc2NyaXB0b3JzCisgbWFwcwkJTWVtb3J5IG1hcHMgdG8gZXhlY3V0YWJsZXMgYW5kIGxpYnJhcnkgZmlsZXMJKDIuNCkKKyBtZW0JCU1lbW9yeSBoZWxkIGJ5IHRoaXMgcHJvY2VzcworIHJvb3QJCUxpbmsgdG8gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvY2VzcworIHN0YXQJCVByb2Nlc3Mgc3RhdHVzCisgc3RhdG0JCVByb2Nlc3MgbWVtb3J5IHN0YXR1cyBpbmZvcm1hdGlvbgorIHN0YXR1cwkJUHJvY2VzcyBzdGF0dXMgaW4gaHVtYW4gcmVhZGFibGUgZm9ybQorIHdjaGFuCQlQcmVzZW50IHdpdGggQ09ORklHX0tBTExTWU1TPXk6IGl0IHNob3dzIHRoZSBrZXJuZWwgZnVuY3Rpb24KKwkJc3ltYm9sIHRoZSB0YXNrIGlzIGJsb2NrZWQgaW4gLSBvciAiMCIgaWYgbm90IGJsb2NrZWQuCisgcGFnZW1hcAlQYWdlIHRhYmxlCisgc3RhY2sJCVJlcG9ydCBmdWxsIHN0YWNrIHRyYWNlLCBlbmFibGUgdmlhIENPTkZJR19TVEFDS1RSQUNFCisgc21hcHMJCWEgZXh0ZW5zaW9uIGJhc2VkIG9uIG1hcHMsIHNob3dpbmcgdGhlIG1lbW9yeSBjb25zdW1wdGlvbiBvZgorCQllYWNoIG1hcHBpbmcgYW5kIGZsYWdzIGFzc29jaWF0ZWQgd2l0aCBpdAorIG51bWFfbWFwcwlhbiBleHRlbnNpb24gYmFzZWQgb24gbWFwcywgc2hvd2luZyB0aGUgbWVtb3J5IGxvY2FsaXR5IGFuZAorCQliaW5kaW5nIHBvbGljeSBhcyB3ZWxsIGFzIG1lbSB1c2FnZSAoaW4gcGFnZXMpIG9mIGVhY2ggbWFwcGluZy4KKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorCitGb3IgZXhhbXBsZSwgdG8gZ2V0IHRoZSBzdGF0dXMgaW5mb3JtYXRpb24gb2YgYSBwcm9jZXNzLCBhbGwgeW91IGhhdmUgdG8gZG8gaXMKK3JlYWQgdGhlIGZpbGUgL3Byb2MvUElEL3N0YXR1czoKKworICA+Y2F0IC9wcm9jL3NlbGYvc3RhdHVzCisgIE5hbWU6ICAgY2F0CisgIFN0YXRlOiAgUiAocnVubmluZykKKyAgVGdpZDogICA1NDUyCisgIFBpZDogICAgNTQ1MgorICBQUGlkOiAgIDc0MworICBUcmFjZXJQaWQ6ICAgICAgMAkJCQkJCSgyLjQpCisgIFVpZDogICAgNTAxICAgICA1MDEgICAgIDUwMSAgICAgNTAxCisgIEdpZDogICAgMTAwICAgICAxMDAgICAgIDEwMCAgICAgMTAwCisgIEZEU2l6ZTogMjU2CisgIEdyb3VwczogMTAwIDE0IDE2CisgIFZtUGVhazogICAgIDUwMDQga0IKKyAgVm1TaXplOiAgICAgNTAwNCBrQgorICBWbUxjazogICAgICAgICAwIGtCCisgIFZtSFdNOiAgICAgICA0NzYga0IKKyAgVm1SU1M6ICAgICAgIDQ3NiBrQgorICBWbURhdGE6ICAgICAgMTU2IGtCCisgIFZtU3RrOiAgICAgICAgODgga0IKKyAgVm1FeGU6ICAgICAgICA2OCBrQgorICBWbUxpYjogICAgICAxNDEyIGtCCisgIFZtUFRFOiAgICAgICAgMjAga2IKKyAgVm1Td2FwOiAgICAgICAgMCBrQgorICBIdWdldGxiUGFnZXM6ICAgICAgICAgIDAga0IKKyAgVGhyZWFkczogICAgICAgIDEKKyAgU2lnUTogICAwLzI4NTc4CisgIFNpZ1BuZDogMDAwMDAwMDAwMDAwMDAwMAorICBTaGRQbmQ6IDAwMDAwMDAwMDAwMDAwMDAKKyAgU2lnQmxrOiAwMDAwMDAwMDAwMDAwMDAwCisgIFNpZ0lnbjogMDAwMDAwMDAwMDAwMDAwMAorICBTaWdDZ3Q6IDAwMDAwMDAwMDAwMDAwMDAKKyAgQ2FwSW5oOiAwMDAwMDAwMGZmZmZmZWZmCisgIENhcFBybTogMDAwMDAwMDAwMDAwMDAwMAorICBDYXBFZmY6IDAwMDAwMDAwMDAwMDAwMDAKKyAgQ2FwQm5kOiBmZmZmZmZmZmZmZmZmZmZmCisgIFNlY2NvbXA6ICAgICAgICAwCisgIHZvbHVudGFyeV9jdHh0X3N3aXRjaGVzOiAgICAgICAgMAorICBub252b2x1bnRhcnlfY3R4dF9zd2l0Y2hlczogICAgIDEKKworVGhpcyBzaG93cyB5b3UgbmVhcmx5IHRoZSBzYW1lIGluZm9ybWF0aW9uIHlvdSB3b3VsZCBnZXQgaWYgeW91IHZpZXdlZCBpdCB3aXRoCit0aGUgcHMgIGNvbW1hbmQuICBJbiAgZmFjdCwgIHBzICB1c2VzICB0aGUgIHByb2MgIGZpbGUgIHN5c3RlbSAgdG8gIG9idGFpbiBpdHMKK2luZm9ybWF0aW9uLiAgQnV0IHlvdSBnZXQgYSBtb3JlIGRldGFpbGVkICB2aWV3IG9mIHRoZSAgcHJvY2VzcyBieSByZWFkaW5nIHRoZQorZmlsZSAvcHJvYy9QSUQvc3RhdHVzLiBJdCBmaWVsZHMgYXJlIGRlc2NyaWJlZCBpbiB0YWJsZSAxLTIuCisKK1RoZSAgc3RhdG0gIGZpbGUgIGNvbnRhaW5zICBtb3JlICBkZXRhaWxlZCAgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2Nlc3MKK21lbW9yeSB1c2FnZS4gSXRzIHNldmVuIGZpZWxkcyBhcmUgZXhwbGFpbmVkIGluIFRhYmxlIDEtMy4gIFRoZSBzdGF0IGZpbGUKK2NvbnRhaW5zIGRldGFpbHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2Nlc3MgaXRzZWxmLiAgSXRzIGZpZWxkcyBhcmUKK2V4cGxhaW5lZCBpbiBUYWJsZSAxLTQuCisKKyhmb3IgU01QIENPTkZJRyB1c2VycykKK0ZvciBtYWtpbmcgYWNjb3VudGluZyBzY2FsYWJsZSwgUlNTIHJlbGF0ZWQgaW5mb3JtYXRpb24gYXJlIGhhbmRsZWQgaW4gYW4KK2FzeW5jaHJvbm91cyBtYW5uZXIgYW5kIHRoZSB2YWx1ZSBtYXkgbm90IGJlIHZlcnkgcHJlY2lzZS4gVG8gc2VlIGEgcHJlY2lzZQorc25hcHNob3Qgb2YgYSBtb21lbnQsIHlvdSBjYW4gc2VlIC9wcm9jLzxwaWQ+L3NtYXBzIGZpbGUgYW5kIHNjYW4gcGFnZSB0YWJsZS4KK0l0J3Mgc2xvdyBidXQgdmVyeSBwcmVjaXNlLgorCitUYWJsZSAxLTI6IENvbnRlbnRzIG9mIHRoZSBzdGF0dXMgZmlsZXMgKGFzIG9mIDQuMSkKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorIEZpZWxkICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50CisgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lIG9mIHRoZSBleGVjdXRhYmxlCisgU3RhdGUgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlIChSIGlzIHJ1bm5pbmcsIFMgaXMgc2xlZXBpbmcsIEQgaXMgc2xlZXBpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYW4gdW5pbnRlcnJ1cHRpYmxlIHdhaXQsIFogaXMgem9tYmllLAorCQkJICAgICBUIGlzIHRyYWNlZCBvciBzdG9wcGVkKQorIFRnaWQgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQgZ3JvdXAgSUQKKyBOZ2lkICAgICAgICAgICAgICAgICAgICAgICAgTlVNQSBncm91cCBJRCAoMCBpZiBub25lKQorIFBpZCAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzIGlkCisgUFBpZCAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MgaWQgb2YgdGhlIHBhcmVudCBwcm9jZXNzCisgVHJhY2VyUGlkICAgICAgICAgICAgICAgICAgIFBJRCBvZiBwcm9jZXNzIHRyYWNpbmcgdGhpcyBwcm9jZXNzICgwIGlmIG5vdCkKKyBVaWQgICAgICAgICAgICAgICAgICAgICAgICAgUmVhbCwgZWZmZWN0aXZlLCBzYXZlZCBzZXQsIGFuZCAgZmlsZSBzeXN0ZW0gVUlEcworIEdpZCAgICAgICAgICAgICAgICAgICAgICAgICBSZWFsLCBlZmZlY3RpdmUsIHNhdmVkIHNldCwgYW5kICBmaWxlIHN5c3RlbSBHSURzCisgRkRTaXplICAgICAgICAgICAgICAgICAgICAgIG51bWJlciBvZiBmaWxlIGRlc2NyaXB0b3Igc2xvdHMgY3VycmVudGx5IGFsbG9jYXRlZAorIEdyb3VwcyAgICAgICAgICAgICAgICAgICAgICBzdXBwbGVtZW50YXJ5IGdyb3VwIGxpc3QKKyBOU3RnaWQgICAgICAgICAgICAgICAgICAgICAgZGVzY2VuZGFudCBuYW1lc3BhY2UgdGhyZWFkIGdyb3VwIElEIGhpZXJhcmNoeQorIE5TcGlkICAgICAgICAgICAgICAgICAgICAgICBkZXNjZW5kYW50IG5hbWVzcGFjZSBwcm9jZXNzIElEIGhpZXJhcmNoeQorIE5TcGdpZCAgICAgICAgICAgICAgICAgICAgICBkZXNjZW5kYW50IG5hbWVzcGFjZSBwcm9jZXNzIGdyb3VwIElEIGhpZXJhcmNoeQorIE5Tc2lkICAgICAgICAgICAgICAgICAgICAgICBkZXNjZW5kYW50IG5hbWVzcGFjZSBzZXNzaW9uIElEIGhpZXJhcmNoeQorIFZtUGVhayAgICAgICAgICAgICAgICAgICAgICBwZWFrIHZpcnR1YWwgbWVtb3J5IHNpemUKKyBWbVNpemUgICAgICAgICAgICAgICAgICAgICAgdG90YWwgcHJvZ3JhbSBzaXplCisgVm1MY2sgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlZCBtZW1vcnkgc2l6ZQorIFZtSFdNICAgICAgICAgICAgICAgICAgICAgICBwZWFrIHJlc2lkZW50IHNldCBzaXplICgiaGlnaCB3YXRlciBtYXJrIikKKyBWbVJTUyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSBvZiBtZW1vcnkgcG9ydGlvbnMKKyBWbURhdGEgICAgICAgICAgICAgICAgICAgICAgc2l6ZSBvZiBkYXRhLCBzdGFjaywgYW5kIHRleHQgc2VnbWVudHMKKyBWbVN0ayAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSBvZiBkYXRhLCBzdGFjaywgYW5kIHRleHQgc2VnbWVudHMKKyBWbUV4ZSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSBvZiB0ZXh0IHNlZ21lbnQKKyBWbUxpYiAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSBvZiBzaGFyZWQgbGlicmFyeSBjb2RlCisgVm1QVEUgICAgICAgICAgICAgICAgICAgICAgIHNpemUgb2YgcGFnZSB0YWJsZSBlbnRyaWVzCisgVm1QTUQgICAgICAgICAgICAgICAgICAgICAgIHNpemUgb2Ygc2Vjb25kIGxldmVsIHBhZ2UgdGFibGVzCisgVm1Td2FwICAgICAgICAgICAgICAgICAgICAgIHNpemUgb2Ygc3dhcCB1c2FnZSAodGhlIG51bWJlciBvZiByZWZlcnJlZCBzd2FwZW50cykKKyBIdWdldGxiUGFnZXMgICAgICAgICAgICAgICAgc2l6ZSBvZiBodWdldGxiIG1lbW9yeSBwb3J0aW9ucworIFRocmVhZHMgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2YgdGhyZWFkcworIFNpZ1EgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgb2Ygc2lnbmFscyBxdWV1ZWQvbWF4LiBudW1iZXIgZm9yIHF1ZXVlCisgU2lnUG5kICAgICAgICAgICAgICAgICAgICAgIGJpdG1hcCBvZiBwZW5kaW5nIHNpZ25hbHMgZm9yIHRoZSB0aHJlYWQKKyBTaGRQbmQgICAgICAgICAgICAgICAgICAgICAgYml0bWFwIG9mIHNoYXJlZCBwZW5kaW5nIHNpZ25hbHMgZm9yIHRoZSBwcm9jZXNzCisgU2lnQmxrICAgICAgICAgICAgICAgICAgICAgIGJpdG1hcCBvZiBibG9ja2VkIHNpZ25hbHMKKyBTaWdJZ24gICAgICAgICAgICAgICAgICAgICAgYml0bWFwIG9mIGlnbm9yZWQgc2lnbmFscworIFNpZ0NndCAgICAgICAgICAgICAgICAgICAgICBiaXRtYXAgb2YgY2F1Z2h0IHNpZ25hbHMKKyBDYXBJbmggICAgICAgICAgICAgICAgICAgICAgYml0bWFwIG9mIGluaGVyaXRhYmxlIGNhcGFiaWxpdGllcworIENhcFBybSAgICAgICAgICAgICAgICAgICAgICBiaXRtYXAgb2YgcGVybWl0dGVkIGNhcGFiaWxpdGllcworIENhcEVmZiAgICAgICAgICAgICAgICAgICAgICBiaXRtYXAgb2YgZWZmZWN0aXZlIGNhcGFiaWxpdGllcworIENhcEJuZCAgICAgICAgICAgICAgICAgICAgICBiaXRtYXAgb2YgY2FwYWJpbGl0aWVzIGJvdW5kaW5nIHNldAorIFNlY2NvbXAgICAgICAgICAgICAgICAgICAgICBzZWNjb21wIG1vZGUsIGxpa2UgcHJjdGwoUFJfR0VUX1NFQ0NPTVAsIC4uLikKKyBDcHVzX2FsbG93ZWQgICAgICAgICAgICAgICAgbWFzayBvZiBDUFVzIG9uIHdoaWNoIHRoaXMgcHJvY2VzcyBtYXkgcnVuCisgQ3B1c19hbGxvd2VkX2xpc3QgICAgICAgICAgIFNhbWUgYXMgcHJldmlvdXMsIGJ1dCBpbiAibGlzdCBmb3JtYXQiCisgTWVtc19hbGxvd2VkICAgICAgICAgICAgICAgIG1hc2sgb2YgbWVtb3J5IG5vZGVzIGFsbG93ZWQgdG8gdGhpcyBwcm9jZXNzCisgTWVtc19hbGxvd2VkX2xpc3QgICAgICAgICAgIFNhbWUgYXMgcHJldmlvdXMsIGJ1dCBpbiAibGlzdCBmb3JtYXQiCisgdm9sdW50YXJ5X2N0eHRfc3dpdGNoZXMgICAgIG51bWJlciBvZiB2b2x1bnRhcnkgY29udGV4dCBzd2l0Y2hlcworIG5vbnZvbHVudGFyeV9jdHh0X3N3aXRjaGVzICBudW1iZXIgb2Ygbm9uIHZvbHVudGFyeSBjb250ZXh0IHN3aXRjaGVzCisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKworVGFibGUgMS0zOiBDb250ZW50cyBvZiB0aGUgc3RhdG0gZmlsZXMgKGFzIG9mIDIuNi44LXJjMykKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorIEZpZWxkICAgIENvbnRlbnQKKyBzaXplICAgICB0b3RhbCBwcm9ncmFtIHNpemUgKHBhZ2VzKQkJKHNhbWUgYXMgVm1TaXplIGluIHN0YXR1cykKKyByZXNpZGVudCBzaXplIG9mIG1lbW9yeSBwb3J0aW9ucyAocGFnZXMpCShzYW1lIGFzIFZtUlNTIGluIHN0YXR1cykKKyBzaGFyZWQgICBudW1iZXIgb2YgcGFnZXMgdGhhdCBhcmUgc2hhcmVkCShpLmUuIGJhY2tlZCBieSBhIGZpbGUpCisgdHJzICAgICAgbnVtYmVyIG9mIHBhZ2VzIHRoYXQgYXJlICdjb2RlJwkobm90IGluY2x1ZGluZyBsaWJzOyBicm9rZW4sCisJCQkJCQkJaW5jbHVkZXMgZGF0YSBzZWdtZW50KQorIGxycyAgICAgIG51bWJlciBvZiBwYWdlcyBvZiBsaWJyYXJ5CQkoYWx3YXlzIDAgb24gMi42KQorIGRycyAgICAgIG51bWJlciBvZiBwYWdlcyBvZiBkYXRhL3N0YWNrCQkoaW5jbHVkaW5nIGxpYnM7IGJyb2tlbiwKKwkJCQkJCQlpbmNsdWRlcyBsaWJyYXJ5IHRleHQpCisgZHQgICAgICAgbnVtYmVyIG9mIGRpcnR5IHBhZ2VzCQkJKGFsd2F5cyAwIG9uIDIuNikKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorCisKK1RhYmxlIDEtNDogQ29udGVudHMgb2YgdGhlIHN0YXQgZmlsZXMgKGFzIG9mIDIuNi4zMC1yYzcpCisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKyBGaWVsZCAgICAgICAgICBDb250ZW50CisgIHBpZCAgICAgICAgICAgcHJvY2VzcyBpZAorICB0Y29tbSAgICAgICAgIGZpbGVuYW1lIG9mIHRoZSBleGVjdXRhYmxlCisgIHN0YXRlICAgICAgICAgc3RhdGUgKFIgaXMgcnVubmluZywgUyBpcyBzbGVlcGluZywgRCBpcyBzbGVlcGluZyBpbiBhbgorICAgICAgICAgICAgICAgIHVuaW50ZXJydXB0aWJsZSB3YWl0LCBaIGlzIHpvbWJpZSwgVCBpcyB0cmFjZWQgb3Igc3RvcHBlZCkKKyAgcHBpZCAgICAgICAgICBwcm9jZXNzIGlkIG9mIHRoZSBwYXJlbnQgcHJvY2VzcworICBwZ3JwICAgICAgICAgIHBncnAgb2YgdGhlIHByb2Nlc3MKKyAgc2lkICAgICAgICAgICBzZXNzaW9uIGlkCisgIHR0eV9uciAgICAgICAgdHR5IHRoZSBwcm9jZXNzIHVzZXMKKyAgdHR5X3BncnAgICAgICBwZ3JwIG9mIHRoZSB0dHkKKyAgZmxhZ3MgICAgICAgICB0YXNrIGZsYWdzCisgIG1pbl9mbHQgICAgICAgbnVtYmVyIG9mIG1pbm9yIGZhdWx0cworICBjbWluX2ZsdCAgICAgIG51bWJlciBvZiBtaW5vciBmYXVsdHMgd2l0aCBjaGlsZCdzCisgIG1hal9mbHQgICAgICAgbnVtYmVyIG9mIG1ham9yIGZhdWx0cworICBjbWFqX2ZsdCAgICAgIG51bWJlciBvZiBtYWpvciBmYXVsdHMgd2l0aCBjaGlsZCdzCisgIHV0aW1lICAgICAgICAgdXNlciBtb2RlIGppZmZpZXMKKyAgc3RpbWUgICAgICAgICBrZXJuZWwgbW9kZSBqaWZmaWVzCisgIGN1dGltZSAgICAgICAgdXNlciBtb2RlIGppZmZpZXMgd2l0aCBjaGlsZCdzCisgIGNzdGltZSAgICAgICAga2VybmVsIG1vZGUgamlmZmllcyB3aXRoIGNoaWxkJ3MKKyAgcHJpb3JpdHkgICAgICBwcmlvcml0eSBsZXZlbAorICBuaWNlICAgICAgICAgIG5pY2UgbGV2ZWwKKyAgbnVtX3RocmVhZHMgICBudW1iZXIgb2YgdGhyZWFkcworICBpdF9yZWFsX3ZhbHVlCShvYnNvbGV0ZSwgYWx3YXlzIDApCisgIHN0YXJ0X3RpbWUgICAgdGltZSB0aGUgcHJvY2VzcyBzdGFydGVkIGFmdGVyIHN5c3RlbSBib290CisgIHZzaXplICAgICAgICAgdmlydHVhbCBtZW1vcnkgc2l6ZQorICByc3MgICAgICAgICAgIHJlc2lkZW50IHNldCBtZW1vcnkgc2l6ZQorICByc3NsaW0gICAgICAgIGN1cnJlbnQgbGltaXQgaW4gYnl0ZXMgb24gdGhlIHJzcworICBzdGFydF9jb2RlICAgIGFkZHJlc3MgYWJvdmUgd2hpY2ggcHJvZ3JhbSB0ZXh0IGNhbiBydW4KKyAgZW5kX2NvZGUgICAgICBhZGRyZXNzIGJlbG93IHdoaWNoIHByb2dyYW0gdGV4dCBjYW4gcnVuCisgIHN0YXJ0X3N0YWNrICAgYWRkcmVzcyBvZiB0aGUgc3RhcnQgb2YgdGhlIG1haW4gcHJvY2VzcyBzdGFjaworICBlc3AgICAgICAgICAgIGN1cnJlbnQgdmFsdWUgb2YgRVNQCisgIGVpcCAgICAgICAgICAgY3VycmVudCB2YWx1ZSBvZiBFSVAKKyAgcGVuZGluZyAgICAgICBiaXRtYXAgb2YgcGVuZGluZyBzaWduYWxzCisgIGJsb2NrZWQgICAgICAgYml0bWFwIG9mIGJsb2NrZWQgc2lnbmFscworICBzaWdpZ24gICAgICAgIGJpdG1hcCBvZiBpZ25vcmVkIHNpZ25hbHMKKyAgc2lnY2F0Y2ggICAgICBiaXRtYXAgb2YgY2F1Z2h0IHNpZ25hbHMKKyAgMAkJKHBsYWNlIGhvbGRlciwgdXNlZCB0byBiZSB0aGUgd2NoYW4gYWRkcmVzcywgdXNlIC9wcm9jL1BJRC93Y2hhbiBpbnN0ZWFkKQorICAwICAgICAgICAgICAgIChwbGFjZSBob2xkZXIpCisgIDAgICAgICAgICAgICAgKHBsYWNlIGhvbGRlcikKKyAgZXhpdF9zaWduYWwgICBzaWduYWwgdG8gc2VuZCB0byBwYXJlbnQgdGhyZWFkIG9uIGV4aXQKKyAgdGFza19jcHUgICAgICB3aGljaCBDUFUgdGhlIHRhc2sgaXMgc2NoZWR1bGVkIG9uCisgIHJ0X3ByaW9yaXR5ICAgcmVhbHRpbWUgcHJpb3JpdHkKKyAgcG9saWN5ICAgICAgICBzY2hlZHVsaW5nIHBvbGljeSAobWFuIHNjaGVkX3NldHNjaGVkdWxlcikKKyAgYmxraW9fdGlja3MgICB0aW1lIHNwZW50IHdhaXRpbmcgZm9yIGJsb2NrIElPCisgIGd0aW1lICAgICAgICAgZ3Vlc3QgdGltZSBvZiB0aGUgdGFzayBpbiBqaWZmaWVzCisgIGNndGltZSAgICAgICAgZ3Vlc3QgdGltZSBvZiB0aGUgdGFzayBjaGlsZHJlbiBpbiBqaWZmaWVzCisgIHN0YXJ0X2RhdGEgICAgYWRkcmVzcyBhYm92ZSB3aGljaCBwcm9ncmFtIGRhdGErYnNzIGlzIHBsYWNlZAorICBlbmRfZGF0YSAgICAgIGFkZHJlc3MgYmVsb3cgd2hpY2ggcHJvZ3JhbSBkYXRhK2JzcyBpcyBwbGFjZWQKKyAgc3RhcnRfYnJrICAgICBhZGRyZXNzIGFib3ZlIHdoaWNoIHByb2dyYW0gaGVhcCBjYW4gYmUgZXhwYW5kZWQgd2l0aCBicmsoKQorICBhcmdfc3RhcnQgICAgIGFkZHJlc3MgYWJvdmUgd2hpY2ggcHJvZ3JhbSBjb21tYW5kIGxpbmUgaXMgcGxhY2VkCisgIGFyZ19lbmQgICAgICAgYWRkcmVzcyBiZWxvdyB3aGljaCBwcm9ncmFtIGNvbW1hbmQgbGluZSBpcyBwbGFjZWQKKyAgZW52X3N0YXJ0ICAgICBhZGRyZXNzIGFib3ZlIHdoaWNoIHByb2dyYW0gZW52aXJvbm1lbnQgaXMgcGxhY2VkCisgIGVudl9lbmQgICAgICAgYWRkcmVzcyBiZWxvdyB3aGljaCBwcm9ncmFtIGVudmlyb25tZW50IGlzIHBsYWNlZAorICBleGl0X2NvZGUgICAgIHRoZSB0aHJlYWQncyBleGl0X2NvZGUgaW4gdGhlIGZvcm0gcmVwb3J0ZWQgYnkgdGhlIHdhaXRwaWQgc3lzdGVtIGNhbGwKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorCitUaGUgL3Byb2MvUElEL21hcHMgZmlsZSBjb250YWluaW5nIHRoZSBjdXJyZW50bHkgbWFwcGVkIG1lbW9yeSByZWdpb25zIGFuZAordGhlaXIgYWNjZXNzIHBlcm1pc3Npb25zLgorCitUaGUgZm9ybWF0IGlzOgorCithZGRyZXNzICAgICAgICAgICBwZXJtcyBvZmZzZXQgIGRldiAgIGlub2RlICAgICAgcGF0aG5hbWUKKworMDgwNDgwMDAtMDgwNDkwMDAgci14cCAwMDAwMDAwMCAwMzowMCA4MzEyICAgICAgIC9vcHQvdGVzdAorMDgwNDkwMDAtMDgwNGEwMDAgcnctcCAwMDAwMTAwMCAwMzowMCA4MzEyICAgICAgIC9vcHQvdGVzdAorMDgwNGEwMDAtMDgwNmIwMDAgcnctcCAwMDAwMDAwMCAwMDowMCAwICAgICAgICAgIFtoZWFwXQorYTdjYjEwMDAtYTdjYjIwMDAgLS0tcCAwMDAwMDAwMCAwMDowMCAwCithN2NiMjAwMC1hN2ViMjAwMCBydy1wIDAwMDAwMDAwIDAwOjAwIDAKK2E3ZWIyMDAwLWE3ZWIzMDAwIC0tLXAgMDAwMDAwMDAgMDA6MDAgMAorYTdlYjMwMDAtYTdlZDUwMDAgcnctcCAwMDAwMDAwMCAwMDowMCAwCithN2VkNTAwMC1hODAwODAwMCByLXhwIDAwMDAwMDAwIDAzOjAwIDQyMjIgICAgICAgL2xpYi9saWJjLnNvLjYKK2E4MDA4MDAwLWE4MDBhMDAwIHItLXAgMDAxMzMwMDAgMDM6MDAgNDIyMiAgICAgICAvbGliL2xpYmMuc28uNgorYTgwMGEwMDAtYTgwMGIwMDAgcnctcCAwMDEzNTAwMCAwMzowMCA0MjIyICAgICAgIC9saWIvbGliYy5zby42CithODAwYjAwMC1hODAwZTAwMCBydy1wIDAwMDAwMDAwIDAwOjAwIDAKK2E4MDBlMDAwLWE4MDIyMDAwIHIteHAgMDAwMDAwMDAgMDM6MDAgMTQ0NjIgICAgICAvbGliL2xpYnB0aHJlYWQuc28uMAorYTgwMjIwMDAtYTgwMjMwMDAgci0tcCAwMDAxMzAwMCAwMzowMCAxNDQ2MiAgICAgIC9saWIvbGlicHRocmVhZC5zby4wCithODAyMzAwMC1hODAyNDAwMCBydy1wIDAwMDE0MDAwIDAzOjAwIDE0NDYyICAgICAgL2xpYi9saWJwdGhyZWFkLnNvLjAKK2E4MDI0MDAwLWE4MDI3MDAwIHJ3LXAgMDAwMDAwMDAgMDA6MDAgMAorYTgwMjcwMDAtYTgwNDMwMDAgci14cCAwMDAwMDAwMCAwMzowMCA4MzE3ICAgICAgIC9saWIvbGQtbGludXguc28uMgorYTgwNDMwMDAtYTgwNDQwMDAgci0tcCAwMDAxYjAwMCAwMzowMCA4MzE3ICAgICAgIC9saWIvbGQtbGludXguc28uMgorYTgwNDQwMDAtYTgwNDUwMDAgcnctcCAwMDAxYzAwMCAwMzowMCA4MzE3ICAgICAgIC9saWIvbGQtbGludXguc28uMgorYWZmMzUwMDAtYWZmNGEwMDAgcnctcCAwMDAwMDAwMCAwMDowMCAwICAgICAgICAgIFtzdGFja10KK2ZmZmZlMDAwLWZmZmZmMDAwIHIteHAgMDAwMDAwMDAgMDA6MDAgMCAgICAgICAgICBbdmRzb10KKword2hlcmUgImFkZHJlc3MiIGlzIHRoZSBhZGRyZXNzIHNwYWNlIGluIHRoZSBwcm9jZXNzIHRoYXQgaXQgb2NjdXBpZXMsICJwZXJtcyIKK2lzIGEgc2V0IG9mIHBlcm1pc3Npb25zOgorCisgciA9IHJlYWQKKyB3ID0gd3JpdGUKKyB4ID0gZXhlY3V0ZQorIHMgPSBzaGFyZWQKKyBwID0gcHJpdmF0ZSAoY29weSBvbiB3cml0ZSkKKworIm9mZnNldCIgaXMgdGhlIG9mZnNldCBpbnRvIHRoZSBtYXBwaW5nLCAiZGV2IiBpcyB0aGUgZGV2aWNlIChtYWpvcjptaW5vciksIGFuZAorImlub2RlIiBpcyB0aGUgaW5vZGUgIG9uIHRoYXQgZGV2aWNlLiAgMCBpbmRpY2F0ZXMgdGhhdCAgbm8gaW5vZGUgaXMgYXNzb2NpYXRlZAord2l0aCB0aGUgbWVtb3J5IHJlZ2lvbiwgYXMgdGhlIGNhc2Ugd291bGQgYmUgd2l0aCBCU1MgKHVuaW5pdGlhbGl6ZWQgZGF0YSkuCitUaGUgInBhdGhuYW1lIiBzaG93cyB0aGUgbmFtZSBhc3NvY2lhdGVkIGZpbGUgZm9yIHRoaXMgbWFwcGluZy4gIElmIHRoZSBtYXBwaW5nCitpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGEgZmlsZToKKworIFtoZWFwXSAgICAgICAgICAgICAgICAgICA9IHRoZSBoZWFwIG9mIHRoZSBwcm9ncmFtCisgW3N0YWNrXSAgICAgICAgICAgICAgICAgID0gdGhlIHN0YWNrIG9mIHRoZSBtYWluIHByb2Nlc3MKKyBbdmRzb10gICAgICAgICAgICAgICAgICAgPSB0aGUgInZpcnR1YWwgZHluYW1pYyBzaGFyZWQgb2JqZWN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUga2VybmVsIHN5c3RlbSBjYWxsIGhhbmRsZXIKKworIG9yIGlmIGVtcHR5LCB0aGUgbWFwcGluZyBpcyBhbm9ueW1vdXMuCisKK1RoZSAvcHJvYy9QSUQvdGFzay9USUQvbWFwcyBpcyBhIHZpZXcgb2YgdGhlIHZpcnR1YWwgbWVtb3J5IGZyb20gdGhlIHZpZXdwb2ludAorb2YgdGhlIGluZGl2aWR1YWwgdGFza3Mgb2YgYSBwcm9jZXNzLiBJbiB0aGlzIGZpbGUgeW91IHdpbGwgc2VlIGEgbWFwcGluZyBtYXJrZWQKK2FzIFtzdGFja10gaWYgdGhhdCB0YXNrIHNlZXMgaXQgYXMgYSBzdGFjay4gSGVuY2UsIGZvciB0aGUgZXhhbXBsZSBhYm92ZSwgdGhlCit0YXNrLWxldmVsIG1hcCwgaS5lLiAvcHJvYy9QSUQvdGFzay9USUQvbWFwcyBmb3IgdGhyZWFkIDEwMDEgd2lsbCBsb29rIGxpa2UgdGhpczoKKworMDgwNDgwMDAtMDgwNDkwMDAgci14cCAwMDAwMDAwMCAwMzowMCA4MzEyICAgICAgIC9vcHQvdGVzdAorMDgwNDkwMDAtMDgwNGEwMDAgcnctcCAwMDAwMTAwMCAwMzowMCA4MzEyICAgICAgIC9vcHQvdGVzdAorMDgwNGEwMDAtMDgwNmIwMDAgcnctcCAwMDAwMDAwMCAwMDowMCAwICAgICAgICAgIFtoZWFwXQorYTdjYjEwMDAtYTdjYjIwMDAgLS0tcCAwMDAwMDAwMCAwMDowMCAwCithN2NiMjAwMC1hN2ViMjAwMCBydy1wIDAwMDAwMDAwIDAwOjAwIDAKK2E3ZWIyMDAwLWE3ZWIzMDAwIC0tLXAgMDAwMDAwMDAgMDA6MDAgMAorYTdlYjMwMDAtYTdlZDUwMDAgcnctcCAwMDAwMDAwMCAwMDowMCAwICAgICAgICAgIFtzdGFja10KK2E3ZWQ1MDAwLWE4MDA4MDAwIHIteHAgMDAwMDAwMDAgMDM6MDAgNDIyMiAgICAgICAvbGliL2xpYmMuc28uNgorYTgwMDgwMDAtYTgwMGEwMDAgci0tcCAwMDEzMzAwMCAwMzowMCA0MjIyICAgICAgIC9saWIvbGliYy5zby42CithODAwYTAwMC1hODAwYjAwMCBydy1wIDAwMTM1MDAwIDAzOjAwIDQyMjIgICAgICAgL2xpYi9saWJjLnNvLjYKK2E4MDBiMDAwLWE4MDBlMDAwIHJ3LXAgMDAwMDAwMDAgMDA6MDAgMAorYTgwMGUwMDAtYTgwMjIwMDAgci14cCAwMDAwMDAwMCAwMzowMCAxNDQ2MiAgICAgIC9saWIvbGlicHRocmVhZC5zby4wCithODAyMjAwMC1hODAyMzAwMCByLS1wIDAwMDEzMDAwIDAzOjAwIDE0NDYyICAgICAgL2xpYi9saWJwdGhyZWFkLnNvLjAKK2E4MDIzMDAwLWE4MDI0MDAwIHJ3LXAgMDAwMTQwMDAgMDM6MDAgMTQ0NjIgICAgICAvbGliL2xpYnB0aHJlYWQuc28uMAorYTgwMjQwMDAtYTgwMjcwMDAgcnctcCAwMDAwMDAwMCAwMDowMCAwCithODAyNzAwMC1hODA0MzAwMCByLXhwIDAwMDAwMDAwIDAzOjAwIDgzMTcgICAgICAgL2xpYi9sZC1saW51eC5zby4yCithODA0MzAwMC1hODA0NDAwMCByLS1wIDAwMDFiMDAwIDAzOjAwIDgzMTcgICAgICAgL2xpYi9sZC1saW51eC5zby4yCithODA0NDAwMC1hODA0NTAwMCBydy1wIDAwMDFjMDAwIDAzOjAwIDgzMTcgICAgICAgL2xpYi9sZC1saW51eC5zby4yCithZmYzNTAwMC1hZmY0YTAwMCBydy1wIDAwMDAwMDAwIDAwOjAwIDAKK2ZmZmZlMDAwLWZmZmZmMDAwIHIteHAgMDAwMDAwMDAgMDA6MDAgMCAgICAgICAgICBbdmRzb10KKworVGhlIC9wcm9jL1BJRC9zbWFwcyBpcyBhbiBleHRlbnNpb24gYmFzZWQgb24gbWFwcywgc2hvd2luZyB0aGUgbWVtb3J5Citjb25zdW1wdGlvbiBmb3IgZWFjaCBvZiB0aGUgcHJvY2VzcydzIG1hcHBpbmdzLiBGb3IgZWFjaCBvZiBtYXBwaW5ncyB0aGVyZQoraXMgYSBzZXJpZXMgb2YgbGluZXMgc3VjaCBhcyB0aGUgZm9sbG93aW5nOgorCiswODA0ODAwMC0wODBiYzAwMCByLXhwIDAwMDAwMDAwIDAzOjAyIDEzMTMwICAgICAgL2Jpbi9iYXNoCitTaXplOiAgICAgICAgICAgICAgIDEwODQga0IKK1JzczogICAgICAgICAgICAgICAgIDg5MiBrQgorUHNzOiAgICAgICAgICAgICAgICAgMzc0IGtCCitTaGFyZWRfQ2xlYW46ICAgICAgICA4OTIga0IKK1NoYXJlZF9EaXJ0eTogICAgICAgICAgMCBrQgorUHJpdmF0ZV9DbGVhbjogICAgICAgICAwIGtCCitQcml2YXRlX0RpcnR5OiAgICAgICAgIDAga0IKK1JlZmVyZW5jZWQ6ICAgICAgICAgIDg5MiBrQgorQW5vbnltb3VzOiAgICAgICAgICAgICAwIGtCCitBbm9uSHVnZVBhZ2VzOiAgICAgICAgIDAga0IKK1NoYXJlZF9IdWdldGxiOiAgICAgICAgMCBrQgorUHJpdmF0ZV9IdWdldGxiOiAgICAgICAwIGtCCitTd2FwOiAgICAgICAgICAgICAgICAgIDAga0IKK1N3YXBQc3M6ICAgICAgICAgICAgICAgMCBrQgorS2VybmVsUGFnZVNpemU6ICAgICAgICA0IGtCCitNTVVQYWdlU2l6ZTogICAgICAgICAgIDQga0IKK0xvY2tlZDogICAgICAgICAgICAgICAgMCBrQgorVm1GbGFnczogcmQgZXggbXIgbXcgbWUgZHcKKwordGhlIGZpcnN0IG9mIHRoZXNlIGxpbmVzIHNob3dzIHRoZSBzYW1lIGluZm9ybWF0aW9uIGFzIGlzIGRpc3BsYXllZCBmb3IgdGhlCittYXBwaW5nIGluIC9wcm9jL1BJRC9tYXBzLiAgVGhlIHJlbWFpbmluZyBsaW5lcyBzaG93IHRoZSBzaXplIG9mIHRoZSBtYXBwaW5nCisoc2l6ZSksIHRoZSBhbW91bnQgb2YgdGhlIG1hcHBpbmcgdGhhdCBpcyBjdXJyZW50bHkgcmVzaWRlbnQgaW4gUkFNIChSU1MpLCB0aGUKK3Byb2Nlc3MnIHByb3BvcnRpb25hbCBzaGFyZSBvZiB0aGlzIG1hcHBpbmcgKFBTUyksIHRoZSBudW1iZXIgb2YgY2xlYW4gYW5kCitkaXJ0eSBwcml2YXRlIHBhZ2VzIGluIHRoZSBtYXBwaW5nLgorCitUaGUgInByb3BvcnRpb25hbCBzZXQgc2l6ZSIgKFBTUykgb2YgYSBwcm9jZXNzIGlzIHRoZSBjb3VudCBvZiBwYWdlcyBpdCBoYXMKK2luIG1lbW9yeSwgd2hlcmUgZWFjaCBwYWdlIGlzIGRpdmlkZWQgYnkgdGhlIG51bWJlciBvZiBwcm9jZXNzZXMgc2hhcmluZyBpdC4KK1NvIGlmIGEgcHJvY2VzcyBoYXMgMTAwMCBwYWdlcyBhbGwgdG8gaXRzZWxmLCBhbmQgMTAwMCBzaGFyZWQgd2l0aCBvbmUgb3RoZXIKK3Byb2Nlc3MsIGl0cyBQU1Mgd2lsbCBiZSAxNTAwLgorTm90ZSB0aGF0IGV2ZW4gYSBwYWdlIHdoaWNoIGlzIHBhcnQgb2YgYSBNQVBfU0hBUkVEIG1hcHBpbmcsIGJ1dCBoYXMgb25seQorYSBzaW5nbGUgcHRlIG1hcHBlZCwgaS5lLiAgaXMgY3VycmVudGx5IHVzZWQgYnkgb25seSBvbmUgcHJvY2VzcywgaXMgYWNjb3VudGVkCithcyBwcml2YXRlIGFuZCBub3QgYXMgc2hhcmVkLgorIlJlZmVyZW5jZWQiIGluZGljYXRlcyB0aGUgYW1vdW50IG9mIG1lbW9yeSBjdXJyZW50bHkgbWFya2VkIGFzIHJlZmVyZW5jZWQgb3IKK2FjY2Vzc2VkLgorIkFub255bW91cyIgc2hvd3MgdGhlIGFtb3VudCBvZiBtZW1vcnkgdGhhdCBkb2VzIG5vdCBiZWxvbmcgdG8gYW55IGZpbGUuICBFdmVuCithIG1hcHBpbmcgYXNzb2NpYXRlZCB3aXRoIGEgZmlsZSBtYXkgY29udGFpbiBhbm9ueW1vdXMgcGFnZXM6IHdoZW4gTUFQX1BSSVZBVEUKK2FuZCBhIHBhZ2UgaXMgbW9kaWZpZWQsIHRoZSBmaWxlIHBhZ2UgaXMgcmVwbGFjZWQgYnkgYSBwcml2YXRlIGFub255bW91cyBjb3B5LgorIkFub25IdWdlUGFnZXMiIHNob3dzIHRoZSBhbW1vdW50IG9mIG1lbW9yeSBiYWNrZWQgYnkgdHJhbnNwYXJlbnQgaHVnZXBhZ2UuCisiU2hhcmVkX0h1Z2V0bGIiIGFuZCAiUHJpdmF0ZV9IdWdldGxiIiBzaG93IHRoZSBhbW1vdW50cyBvZiBtZW1vcnkgYmFja2VkIGJ5CitodWdldGxiZnMgcGFnZSB3aGljaCBpcyAqbm90KiBjb3VudGVkIGluICJSU1MiIG9yICJQU1MiIGZpZWxkIGZvciBoaXN0b3JpY2FsCityZWFzb25zLiBBbmQgdGhlc2UgYXJlIG5vdCBpbmNsdWRlZCBpbiB7U2hhcmVkLFByaXZhdGV9X3tDbGVhbixEaXJ0eX0gZmllbGQuCisiU3dhcCIgc2hvd3MgaG93IG11Y2ggd291bGQtYmUtYW5vbnltb3VzIG1lbW9yeSBpcyBhbHNvIHVzZWQsIGJ1dCBvdXQgb24gc3dhcC4KKyJTd2FwUHNzIiBzaG93cyBwcm9wb3J0aW9uYWwgc3dhcCBzaGFyZSBvZiB0aGlzIG1hcHBpbmcuCisiTG9ja2VkIiBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbWFwcGluZyBpcyBsb2NrZWQgaW4gbWVtb3J5IG9yIG5vdC4KKworIlZtRmxhZ3MiIGZpZWxkIGRlc2VydmVzIGEgc2VwYXJhdGUgZGVzY3JpcHRpb24uIFRoaXMgbWVtYmVyIHJlcHJlc2VudHMgdGhlIGtlcm5lbAorZmxhZ3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXJ0aWN1bGFyIHZpcnR1YWwgbWVtb3J5IGFyZWEgaW4gdHdvIGxldHRlciBlbmNvZGVkCittYW5uZXIuIFRoZSBjb2RlcyBhcmUgdGhlIGZvbGxvd2luZzoKKyAgICByZCAgLSByZWFkYWJsZQorICAgIHdyICAtIHdyaXRlYWJsZQorICAgIGV4ICAtIGV4ZWN1dGFibGUKKyAgICBzaCAgLSBzaGFyZWQKKyAgICBtciAgLSBtYXkgcmVhZAorICAgIG13ICAtIG1heSB3cml0ZQorICAgIG1lICAtIG1heSBleGVjdXRlCisgICAgbXMgIC0gbWF5IHNoYXJlCisgICAgZ2QgIC0gc3RhY2sgc2VnbWVudCBncm93bnMgZG93bgorICAgIHBmICAtIHB1cmUgUEZOIHJhbmdlCisgICAgZHcgIC0gZGlzYWJsZWQgd3JpdGUgdG8gdGhlIG1hcHBlZCBmaWxlCisgICAgbG8gIC0gcGFnZXMgYXJlIGxvY2tlZCBpbiBtZW1vcnkKKyAgICBpbyAgLSBtZW1vcnkgbWFwcGVkIEkvTyBhcmVhCisgICAgc3IgIC0gc2VxdWVudGlhbCByZWFkIGFkdmlzZSBwcm92aWRlZAorICAgIHJyICAtIHJhbmRvbSByZWFkIGFkdmlzZSBwcm92aWRlZAorICAgIGRjICAtIGRvIG5vdCBjb3B5IGFyZWEgb24gZm9yaworICAgIGRlICAtIGRvIG5vdCBleHBhbmQgYXJlYSBvbiByZW1hcHBpbmcKKyAgICBhYyAgLSBhcmVhIGlzIGFjY291bnRhYmxlCisgICAgbnIgIC0gc3dhcCBzcGFjZSBpcyBub3QgcmVzZXJ2ZWQgZm9yIHRoZSBhcmVhCisgICAgaHQgIC0gYXJlYSB1c2VzIGh1Z2UgdGxiIHBhZ2VzCisgICAgYXIgIC0gYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGZsYWcKKyAgICBkZCAgLSBkbyBub3QgaW5jbHVkZSBhcmVhIGludG8gY29yZSBkdW1wCisgICAgc2QgIC0gc29mdC1kaXJ0eSBmbGFnCisgICAgbW0gIC0gbWl4ZWQgbWFwIGFyZWEKKyAgICBoZyAgLSBodWdlIHBhZ2UgYWR2aXNlIGZsYWcKKyAgICBuaCAgLSBuby1odWdlIHBhZ2UgYWR2aXNlIGZsYWcKKyAgICBtZyAgLSBtZXJnYWJsZSBhZHZpc2UgZmxhZworCitOb3RlIHRoYXQgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgZXZlcnkgZmxhZyBhbmQgYXNzb2NpYXRlZCBtbmVtb25pYyB3aWxsCitiZSBwcmVzZW50IGluIGFsbCBmdXJ0aGVyIGtlcm5lbCByZWxlYXNlcy4gVGhpbmdzIGdldCBjaGFuZ2VkLCB0aGUgZmxhZ3MgbWF5CitiZSB2YW5pc2hlZCBvciB0aGUgcmV2ZXJzZSAtLSBuZXcgYWRkZWQuCisKK1RoaXMgZmlsZSBpcyBvbmx5IHByZXNlbnQgaWYgdGhlIENPTkZJR19NTVUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzCitlbmFibGVkLgorCitUaGUgL3Byb2MvUElEL2NsZWFyX3JlZnMgaXMgdXNlZCB0byByZXNldCB0aGUgUEdfUmVmZXJlbmNlZCBhbmQgQUNDRVNTRUQvWU9VTkcKK2JpdHMgb24gYm90aCBwaHlzaWNhbCBhbmQgdmlydHVhbCBwYWdlcyBhc3NvY2lhdGVkIHdpdGggYSBwcm9jZXNzLCBhbmQgdGhlCitzb2Z0LWRpcnR5IGJpdCBvbiBwdGUgKHNlZSBEb2N1bWVudGF0aW9uL3ZtL3NvZnQtZGlydHkudHh0IGZvciBkZXRhaWxzKS4KK1RvIGNsZWFyIHRoZSBiaXRzIGZvciBhbGwgdGhlIHBhZ2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvY2VzcworICAgID4gZWNobyAxID4gL3Byb2MvUElEL2NsZWFyX3JlZnMKKworVG8gY2xlYXIgdGhlIGJpdHMgZm9yIHRoZSBhbm9ueW1vdXMgcGFnZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm9jZXNzCisgICAgPiBlY2hvIDIgPiAvcHJvYy9QSUQvY2xlYXJfcmVmcworCitUbyBjbGVhciB0aGUgYml0cyBmb3IgdGhlIGZpbGUgbWFwcGVkIHBhZ2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJvY2VzcworICAgID4gZWNobyAzID4gL3Byb2MvUElEL2NsZWFyX3JlZnMKKworVG8gY2xlYXIgdGhlIHNvZnQtZGlydHkgYml0CisgICAgPiBlY2hvIDQgPiAvcHJvYy9QSUQvY2xlYXJfcmVmcworCitUbyByZXNldCB0aGUgcGVhayByZXNpZGVudCBzZXQgc2l6ZSAoImhpZ2ggd2F0ZXIgbWFyayIpIHRvIHRoZSBwcm9jZXNzJ3MKK2N1cnJlbnQgdmFsdWU6CisgICAgPiBlY2hvIDUgPiAvcHJvYy9QSUQvY2xlYXJfcmVmcworCitBbnkgb3RoZXIgdmFsdWUgd3JpdHRlbiB0byAvcHJvYy9QSUQvY2xlYXJfcmVmcyB3aWxsIGhhdmUgbm8gZWZmZWN0LgorCitUaGUgL3Byb2MvcGlkL3BhZ2VtYXAgZ2l2ZXMgdGhlIFBGTiwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZmluZCB0aGUgcGFnZWZsYWdzCit1c2luZyAvcHJvYy9rcGFnZWZsYWdzIGFuZCBudW1iZXIgb2YgdGltZXMgYSBwYWdlIGlzIG1hcHBlZCB1c2luZworL3Byb2Mva3BhZ2Vjb3VudC4gRm9yIGRldGFpbGVkIGV4cGxhbmF0aW9uLCBzZWUgRG9jdW1lbnRhdGlvbi92bS9wYWdlbWFwLnR4dC4KKworVGhlIC9wcm9jL3BpZC9udW1hX21hcHMgaXMgYW4gZXh0ZW5zaW9uIGJhc2VkIG9uIG1hcHMsIHNob3dpbmcgdGhlIG1lbW9yeQorbG9jYWxpdHkgYW5kIGJpbmRpbmcgcG9saWN5LCBhcyB3ZWxsIGFzIHRoZSBtZW1vcnkgdXNhZ2UgKGluIHBhZ2VzKSBvZgorZWFjaCBtYXBwaW5nLiBUaGUgb3V0cHV0IGZvbGxvd3MgYSBnZW5lcmFsIGZvcm1hdCB3aGVyZSBtYXBwaW5nIGRldGFpbHMgZ2V0CitzdW1tYXJpemVkIHNlcGFyYXRlZCBieSBibGFuayBzcGFjZXMsIG9uZSBtYXBwaW5nIHBlciBlYWNoIGZpbGUgbGluZToKKworYWRkcmVzcyAgIHBvbGljeSAgICBtYXBwaW5nIGRldGFpbHMKKworMDA0MDAwMDAgZGVmYXVsdCBmaWxlPS91c3IvbG9jYWwvYmluL2FwcCBtYXBwZWQ9MSBhY3RpdmU9MCBOMz0xIGtlcm5lbHBhZ2VzaXplX2tCPTQKKzAwNjAwMDAwIGRlZmF1bHQgZmlsZT0vdXNyL2xvY2FsL2Jpbi9hcHAgYW5vbj0xIGRpcnR5PTEgTjM9MSBrZXJuZWxwYWdlc2l6ZV9rQj00CiszMjA2MDAwMDAwIGRlZmF1bHQgZmlsZT0vbGliNjQvbGQtMi4xMi5zbyBtYXBwZWQ9MjYgbWFwbWF4PTYgTjA9MjQgTjM9MiBrZXJuZWxwYWdlc2l6ZV9rQj00CiszMjA2MjFmMDAwIGRlZmF1bHQgZmlsZT0vbGliNjQvbGQtMi4xMi5zbyBhbm9uPTEgZGlydHk9MSBOMz0xIGtlcm5lbHBhZ2VzaXplX2tCPTQKKzMyMDYyMjAwMDAgZGVmYXVsdCBmaWxlPS9saWI2NC9sZC0yLjEyLnNvIGFub249MSBkaXJ0eT0xIE4zPTEga2VybmVscGFnZXNpemVfa0I9NAorMzIwNjIyMTAwMCBkZWZhdWx0IGFub249MSBkaXJ0eT0xIE4zPTEga2VybmVscGFnZXNpemVfa0I9NAorMzIwNjgwMDAwMCBkZWZhdWx0IGZpbGU9L2xpYjY0L2xpYmMtMi4xMi5zbyBtYXBwZWQ9NTkgbWFwbWF4PTIxIGFjdGl2ZT01NSBOMD00MSBOMz0xOCBrZXJuZWxwYWdlc2l6ZV9rQj00CiszMjA2OThiMDAwIGRlZmF1bHQgZmlsZT0vbGliNjQvbGliYy0yLjEyLnNvCiszMjA2YjhhMDAwIGRlZmF1bHQgZmlsZT0vbGliNjQvbGliYy0yLjEyLnNvIGFub249MiBkaXJ0eT0yIE4zPTIga2VybmVscGFnZXNpemVfa0I9NAorMzIwNmI4ZTAwMCBkZWZhdWx0IGZpbGU9L2xpYjY0L2xpYmMtMi4xMi5zbyBhbm9uPTEgZGlydHk9MSBOMz0xIGtlcm5lbHBhZ2VzaXplX2tCPTQKKzMyMDZiOGYwMDAgZGVmYXVsdCBhbm9uPTMgZGlydHk9MyBhY3RpdmU9MSBOMz0zIGtlcm5lbHBhZ2VzaXplX2tCPTQKKzdmNGRjMTBhMjAwMCBkZWZhdWx0IGFub249MyBkaXJ0eT0zIE4zPTMga2VybmVscGFnZXNpemVfa0I9NAorN2Y0ZGMxMGI0MDAwIGRlZmF1bHQgYW5vbj0yIGRpcnR5PTIgYWN0aXZlPTEgTjM9MiBrZXJuZWxwYWdlc2l6ZV9rQj00Cis3ZjRkYzEyMDAwMDAgZGVmYXVsdCBmaWxlPS9hbm9uX2h1Z2VwYWdlXDA0MChkZWxldGVkKSBodWdlIGFub249MSBkaXJ0eT0xIE4zPTEga2VybmVscGFnZXNpemVfa0I9MjA0OAorN2ZmZjMzNWYwMDAwIGRlZmF1bHQgc3RhY2sgYW5vbj0zIGRpcnR5PTMgTjM9MyBrZXJuZWxwYWdlc2l6ZV9rQj00Cis3ZmZmMzM2OWQwMDAgZGVmYXVsdCBtYXBwZWQ9MSBtYXBtYXg9MzUgYWN0aXZlPTAgTjM9MSBrZXJuZWxwYWdlc2l6ZV9rQj00CisKK1doZXJlOgorImFkZHJlc3MiIGlzIHRoZSBzdGFydGluZyBhZGRyZXNzIGZvciB0aGUgbWFwcGluZzsKKyJwb2xpY3kiIHJlcG9ydHMgdGhlIE5VTUEgbWVtb3J5IHBvbGljeSBzZXQgZm9yIHRoZSBtYXBwaW5nIChzZWUgdm0vbnVtYV9tZW1vcnlfcG9saWN5LnR4dCk7CisibWFwcGluZyBkZXRhaWxzIiBzdW1tYXJpemVzIG1hcHBpbmcgZGF0YSBzdWNoIGFzIG1hcHBpbmcgdHlwZSwgcGFnZSB1c2FnZSBjb3VudGVycywKK25vZGUgbG9jYWxpdHkgcGFnZSBjb3VudGVycyAoTjAgPT0gbm9kZTAsIE4xID09IG5vZGUxLCAuLi4pIGFuZCB0aGUga2VybmVsIHBhZ2UKK3NpemUsIGluIEtCLCB0aGF0IGlzIGJhY2tpbmcgdGhlIG1hcHBpbmcgdXAuCisKKzEuMiBLZXJuZWwgZGF0YQorLS0tLS0tLS0tLS0tLS0tCisKK1NpbWlsYXIgdG8gIHRoZSAgcHJvY2VzcyBlbnRyaWVzLCB0aGUga2VybmVsIGRhdGEgZmlsZXMgZ2l2ZSBpbmZvcm1hdGlvbiBhYm91dAordGhlIHJ1bm5pbmcga2VybmVsLiBUaGUgZmlsZXMgdXNlZCB0byBvYnRhaW4gdGhpcyBpbmZvcm1hdGlvbiBhcmUgY29udGFpbmVkIGluCisvcHJvYyBhbmQgIGFyZSAgbGlzdGVkICBpbiBUYWJsZSAxLTUuIE5vdCBhbGwgb2YgdGhlc2Ugd2lsbCBiZSBwcmVzZW50IGluIHlvdXIKK3N5c3RlbS4gSXQgIGRlcGVuZHMgIG9uIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQgdGhlIGxvYWRlZCBtb2R1bGVzLCB3aGljaAorZmlsZXMgYXJlIHRoZXJlLCBhbmQgd2hpY2ggYXJlIG1pc3NpbmcuCisKK1RhYmxlIDEtNTogS2VybmVsIGluZm8gaW4gL3Byb2MKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorIEZpbGUgICAgICAgIENvbnRlbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgYXBtICAgICAgICAgQWR2YW5jZWQgcG93ZXIgbWFuYWdlbWVudCBpbmZvICAgICAgICAgICAgICAgICAgICAKKyBidWRkeWluZm8gICBLZXJuZWwgbWVtb3J5IGFsbG9jYXRvciBpbmZvcm1hdGlvbiAoc2VlIHRleHQpCSgyLjUpCisgYnVzICAgICAgICAgRGlyZWN0b3J5IGNvbnRhaW5pbmcgYnVzIHNwZWNpZmljIGluZm9ybWF0aW9uICAgICAKKyBjbWRsaW5lICAgICBLZXJuZWwgY29tbWFuZCBsaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIGNwdWluZm8gICAgIEluZm8gYWJvdXQgdGhlIENQVSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgZGV2aWNlcyAgICAgQXZhaWxhYmxlIGRldmljZXMgKGJsb2NrIGFuZCBjaGFyYWN0ZXIpICAgICAgICAgICAKKyBkbWEgICAgICAgICBVc2VkIERNUyBjaGFubmVscyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIGZpbGVzeXN0ZW1zIFN1cHBvcnRlZCBmaWxlc3lzdGVtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgZHJpdmVyCSAgICAgVmFyaW91cyBkcml2ZXJzIGdyb3VwZWQgaGVyZSwgY3VycmVudGx5IHJ0YyAoMi40KQorIGV4ZWNkb21haW5zIEV4ZWNkb21haW5zLCByZWxhdGVkIHRvIHNlY3VyaXR5CQkJKDIuNCkKKyBmYgkgICAgIEZyYW1lIEJ1ZmZlciBkZXZpY2VzCQkJCSgyLjQpCisgZnMJICAgICBGaWxlIHN5c3RlbSBwYXJhbWV0ZXJzLCBjdXJyZW50bHkgbmZzL2V4cG9ydHMJKDIuNCkKKyBpZGUgICAgICAgICBEaXJlY3RvcnkgY29udGFpbmluZyBpbmZvIGFib3V0IHRoZSBJREUgc3Vic3lzdGVtIAorIGludGVycnVwdHMgIEludGVycnVwdCB1c2FnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgaW9tZW0JICAgICBNZW1vcnkgbWFwCQkJCQkJKDIuNCkKKyBpb3BvcnRzICAgICBJL08gcG9ydCB1c2FnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIGlycQkgICAgIE1hc2tzIGZvciBpcnEgdG8gY3B1IGFmZmluaXR5CQkJKDIuNCkoc21wPykKKyBpc2FwbnAJICAgICBJU0EgUG5QIChQbHVnJlBsYXkpIEluZm8JCQkJKDIuNCkKKyBrY29yZSAgICAgICBLZXJuZWwgY29yZSBpbWFnZSAoY2FuIGJlIEVMRiBvciBBLk9VVChkZXByZWNhdGVkIGluIDIuNCkpICAgCisga21zZyAgICAgICAgS2VybmVsIG1lc3NhZ2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBrc3ltcyAgICAgICBLZXJuZWwgc3ltYm9sIHRhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIGxvYWRhdmcgICAgIExvYWQgYXZlcmFnZSBvZiBsYXN0IDEsIDUgJiAxNSBtaW51dGVzICAgICAgICAgICAgICAgIAorIGxvY2tzICAgICAgIEtlcm5lbCBsb2NrcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgbWVtaW5mbyAgICAgTWVtb3J5IGluZm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBtaXNjICAgICAgICBNaXNjZWxsYW5lb3VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIG1vZHVsZXMgICAgIExpc3Qgb2YgbG9hZGVkIG1vZHVsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgbW91bnRzICAgICAgTW91bnRlZCBmaWxlc3lzdGVtcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBuZXQgICAgICAgICBOZXR3b3JraW5nIGluZm8gKHNlZSB0ZXh0KSAgICAgICAgICAgICAgICAgICAgICAgIAorIHBhZ2V0eXBlaW5mbyBBZGRpdGlvbmFsIHBhZ2UgYWxsb2NhdG9yIGluZm9ybWF0aW9uIChzZWUgdGV4dCkgICgyLjUpCisgcGFydGl0aW9ucyAgVGFibGUgb2YgcGFydGl0aW9ucyBrbm93biB0byB0aGUgc3lzdGVtICAgICAgICAgICAKKyBwY2kJICAgICBEZXByZWNhdGVkIGluZm8gb2YgUENJIGJ1cyAobmV3IHdheSAtPiAvcHJvYy9idXMvcGNpLywKKyAgICAgICAgICAgICBkZWNvdXBsZWQgYnkgbHNwY2kJCQkJCSgyLjQpCisgcnRjICAgICAgICAgUmVhbCB0aW1lIGNsb2NrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBzY3NpICAgICAgICBTQ1NJIGluZm8gKHNlZSB0ZXh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIHNsYWJpbmZvICAgIFNsYWIgcG9vbCBpbmZvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgc29mdGlycXMgICAgc29mdGlycSB1c2FnZQorIHN0YXQgICAgICAgIE92ZXJhbGwgc3RhdGlzdGljcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgc3dhcHMgICAgICAgU3dhcCBzcGFjZSB1dGlsaXphdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBzeXMgICAgICAgICBTZWUgY2hhcHRlciAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIHN5c3ZpcGMgICAgIEluZm8gb2YgU3lzVklQQyBSZXNvdXJjZXMgKG1zZywgc2VtLCBzaG0pCQkoMi40KQorIHR0eQkgICAgIEluZm8gb2YgdHR5IGRyaXZlcnMKKyB1cHRpbWUgICAgICBXYWxsIGNsb2NrIHNpbmNlIGJvb3QsIGNvbWJpbmVkIGlkbGUgdGltZSBvZiBhbGwgY3B1cworIHZlcnNpb24gICAgIEtlcm5lbCB2ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgdmlkZW8JICAgICBidHR2IGluZm8gb2YgdmlkZW8gcmVzb3VyY2VzCQkJKDIuNCkKKyB2bWFsbG9jaW5mbyBTaG93IHZtYWxsb2NlZCBhcmVhcworLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisKK1lvdSBjYW4sICBmb3IgIGV4YW1wbGUsICBjaGVjayAgd2hpY2ggaW50ZXJydXB0cyBhcmUgY3VycmVudGx5IGluIHVzZSBhbmQgd2hhdAordGhleSBhcmUgdXNlZCBmb3IgYnkgbG9va2luZyBpbiB0aGUgZmlsZSAvcHJvYy9pbnRlcnJ1cHRzOgorCisgID4gY2F0IC9wcm9jL2ludGVycnVwdHMgCisgICAgICAgICAgICAgQ1BVMCAgICAgICAgCisgICAgMDogICAgODcyODgxMCAgICAgICAgICBYVC1QSUMgIHRpbWVyIAorICAgIDE6ICAgICAgICA4OTUgICAgICAgICAgWFQtUElDICBrZXlib2FyZCAKKyAgICAyOiAgICAgICAgICAwICAgICAgICAgIFhULVBJQyAgY2FzY2FkZSAKKyAgICAzOiAgICAgNTMxNjk1ICAgICAgICAgIFhULVBJQyAgYWhhMTUyeCAKKyAgICA0OiAgICAyMDE0MTMzICAgICAgICAgIFhULVBJQyAgc2VyaWFsIAorICAgIDU6ICAgICAgNDQ0MDEgICAgICAgICAgWFQtUElDICBwY25ldF9jcyAKKyAgICA4OiAgICAgICAgICAyICAgICAgICAgIFhULVBJQyAgcnRjIAorICAgMTE6ICAgICAgICAgIDggICAgICAgICAgWFQtUElDICBpODIzNjUgCisgICAxMjogICAgIDE4MjkxOCAgICAgICAgICBYVC1QSUMgIFBTLzIgTW91c2UgCisgICAxMzogICAgICAgICAgMSAgICAgICAgICBYVC1QSUMgIGZwdSAKKyAgIDE0OiAgICAxMjMyMjY1ICAgICAgICAgIFhULVBJQyAgaWRlMCAKKyAgIDE1OiAgICAgICAgICA3ICAgICAgICAgIFhULVBJQyAgaWRlMSAKKyAgTk1JOiAgICAgICAgICAwIAorCitJbiAyLjQuKiBhIGNvdXBsZSBvZiBsaW5lcyB3aGVyZSBhZGRlZCB0byB0aGlzIGZpbGUgTE9DICYgRVJSICh0aGlzIHRpbWUgaXMgdGhlCitvdXRwdXQgb2YgYSBTTVAgbWFjaGluZSk6CisKKyAgPiBjYXQgL3Byb2MvaW50ZXJydXB0cyAKKworICAgICAgICAgICAgIENQVTAgICAgICAgQ1BVMSAgICAgICAKKyAgICAwOiAgICAxMjQzNDk4ICAgIDEyMTQ1NDggICAgSU8tQVBJQy1lZGdlICB0aW1lcgorICAgIDE6ICAgICAgIDg5NDkgICAgICAgODk1OCAgICBJTy1BUElDLWVkZ2UgIGtleWJvYXJkCisgICAgMjogICAgICAgICAgMCAgICAgICAgICAwICAgICAgICAgIFhULVBJQyAgY2FzY2FkZQorICAgIDU6ICAgICAgMTEyODYgICAgICAxMDE2MSAgICBJTy1BUElDLWVkZ2UgIHNvdW5kYmxhc3RlcgorICAgIDg6ICAgICAgICAgIDEgICAgICAgICAgMCAgICBJTy1BUElDLWVkZ2UgIHJ0YworICAgIDk6ICAgICAgMjc0MjIgICAgICAyNzQwNyAgICBJTy1BUElDLWVkZ2UgIDNjNTAzCisgICAxMjogICAgIDExMzY0NSAgICAgMTEzODczICAgIElPLUFQSUMtZWRnZSAgUFMvMiBNb3VzZQorICAgMTM6ICAgICAgICAgIDAgICAgICAgICAgMCAgICAgICAgICBYVC1QSUMgIGZwdQorICAgMTQ6ICAgICAgMjI0OTEgICAgICAyNDAxMiAgICBJTy1BUElDLWVkZ2UgIGlkZTAKKyAgIDE1OiAgICAgICAyMTgzICAgICAgIDI0MTUgICAgSU8tQVBJQy1lZGdlICBpZGUxCisgICAxNzogICAgICAzMDU2NCAgICAgIDMwNDE0ICAgSU8tQVBJQy1sZXZlbCAgZXRoMAorICAgMTg6ICAgICAgICAxNzcgICAgICAgIDE2NCAgIElPLUFQSUMtbGV2ZWwgIGJ0dHYKKyAgTk1JOiAgICAyNDU3OTYxICAgIDI0NTc5NTkgCisgIExPQzogICAgMjQ1Nzg4MiAgICAyNDU3ODgxIAorICBFUlI6ICAgICAgIDIxNTUKKworTk1JIGlzIGluY3JlbWVudGVkIGluIHRoaXMgY2FzZSBiZWNhdXNlIGV2ZXJ5IHRpbWVyIGludGVycnVwdCBnZW5lcmF0ZXMgYSBOTUkKKyhOb24gTWFza2FibGUgSW50ZXJydXB0KSB3aGljaCBpcyB1c2VkIGJ5IHRoZSBOTUkgV2F0Y2hkb2cgdG8gZGV0ZWN0IGxvY2t1cHMuCisKK0xPQyBpcyB0aGUgbG9jYWwgaW50ZXJydXB0IGNvdW50ZXIgb2YgdGhlIGludGVybmFsIEFQSUMgb2YgZXZlcnkgQ1BVLgorCitFUlIgaXMgaW5jcmVtZW50ZWQgaW4gdGhlIGNhc2Ugb2YgZXJyb3JzIGluIHRoZSBJTy1BUElDIGJ1cyAodGhlIGJ1cyB0aGF0Citjb25uZWN0cyB0aGUgQ1BVcyBpbiBhIFNNUCBzeXN0ZW0uIFRoaXMgbWVhbnMgdGhhdCBhbiBlcnJvciBoYXMgYmVlbiBkZXRlY3RlZCwKK3RoZSBJTy1BUElDIGF1dG9tYXRpY2FsbHkgcmV0cnkgdGhlIHRyYW5zbWlzc2lvbiwgc28gaXQgc2hvdWxkIG5vdCBiZSBhIGJpZworcHJvYmxlbSwgYnV0IHlvdSBzaG91bGQgcmVhZCB0aGUgU01QLUZBUS4KKworSW4gMi42LjIqIC9wcm9jL2ludGVycnVwdHMgd2FzIGV4cGFuZGVkIGFnYWluLiAgVGhpcyB0aW1lIHRoZSBnb2FsIHdhcyBmb3IKKy9wcm9jL2ludGVycnVwdHMgdG8gZGlzcGxheSBldmVyeSBJUlEgdmVjdG9yIGluIHVzZSBieSB0aGUgc3lzdGVtLCBub3QKK2p1c3QgdGhvc2UgY29uc2lkZXJlZCAnbW9zdCBpbXBvcnRhbnQnLiAgVGhlIG5ldyB2ZWN0b3JzIGFyZToKKworICBUSFIgLS0gaW50ZXJydXB0IHJhaXNlZCB3aGVuIGEgbWFjaGluZSBjaGVjayB0aHJlc2hvbGQgY291bnRlcgorICAodHlwaWNhbGx5IGNvdW50aW5nIEVDQyBjb3JyZWN0ZWQgZXJyb3JzIG9mIG1lbW9yeSBvciBjYWNoZSkgZXhjZWVkcworICBhIGNvbmZpZ3VyYWJsZSB0aHJlc2hvbGQuICBPbmx5IGF2YWlsYWJsZSBvbiBzb21lIHN5c3RlbXMuCisKKyAgVFJNIC0tIGEgdGhlcm1hbCBldmVudCBpbnRlcnJ1cHQgb2NjdXJzIHdoZW4gYSB0ZW1wZXJhdHVyZSB0aHJlc2hvbGQKKyAgaGFzIGJlZW4gZXhjZWVkZWQgZm9yIHRoZSBDUFUuICBUaGlzIGludGVycnVwdCBtYXkgYWxzbyBiZSBnZW5lcmF0ZWQKKyAgd2hlbiB0aGUgdGVtcGVyYXR1cmUgZHJvcHMgYmFjayB0byBub3JtYWwuCisKKyAgU1BVIC0tIGEgc3B1cmlvdXMgaW50ZXJydXB0IGlzIHNvbWUgaW50ZXJydXB0IHRoYXQgd2FzIHJhaXNlZCB0aGVuIGxvd2VyZWQKKyAgYnkgc29tZSBJTyBkZXZpY2UgYmVmb3JlIGl0IGNvdWxkIGJlIGZ1bGx5IHByb2Nlc3NlZCBieSB0aGUgQVBJQy4gIEhlbmNlCisgIHRoZSBBUElDIHNlZXMgdGhlIGludGVycnVwdCBidXQgZG9lcyBub3Qga25vdyB3aGF0IGRldmljZSBpdCBjYW1lIGZyb20uCisgIEZvciB0aGlzIGNhc2UgdGhlIEFQSUMgd2lsbCBnZW5lcmF0ZSB0aGUgaW50ZXJydXB0IHdpdGggYSBJUlEgdmVjdG9yCisgIG9mIDB4ZmYuIFRoaXMgbWlnaHQgYWxzbyBiZSBnZW5lcmF0ZWQgYnkgY2hpcHNldCBidWdzLgorCisgIFJFUywgQ0FMLCBUTEIgLS0gcmVzY2hlZHVsaW5nLCBjYWxsIGFuZCBUTEIgZmx1c2ggaW50ZXJydXB0cyBhcmUKKyAgc2VudCBmcm9tIG9uZSBDUFUgdG8gYW5vdGhlciBwZXIgdGhlIG5lZWRzIG9mIHRoZSBPUy4gIFR5cGljYWxseSwKKyAgdGhlaXIgc3RhdGlzdGljcyBhcmUgdXNlZCBieSBrZXJuZWwgZGV2ZWxvcGVycyBhbmQgaW50ZXJlc3RlZCB1c2VycyB0bworICBkZXRlcm1pbmUgdGhlIG9jY3VycmVuY2Ugb2YgaW50ZXJydXB0cyBvZiB0aGUgZ2l2ZW4gdHlwZS4KKworVGhlIGFib3ZlIElSUSB2ZWN0b3JzIGFyZSBkaXNwbGF5ZWQgb25seSB3aGVuIHJlbGV2YW50LiAgRm9yIGV4YW1wbGUsCit0aGUgdGhyZXNob2xkIHZlY3RvciBkb2VzIG5vdCBleGlzdCBvbiB4ODZfNjQgcGxhdGZvcm1zLiAgT3RoZXJzIGFyZQorc3VwcHJlc3NlZCB3aGVuIHRoZSBzeXN0ZW0gaXMgYSB1bmlwcm9jZXNzb3IuICBBcyBvZiB0aGlzIHdyaXRpbmcsIG9ubHkKK2kzODYgYW5kIHg4Nl82NCBwbGF0Zm9ybXMgc3VwcG9ydCB0aGUgbmV3IElSUSB2ZWN0b3IgZGlzcGxheXMuCisKK09mIHNvbWUgaW50ZXJlc3QgaXMgdGhlIGludHJvZHVjdGlvbiBvZiB0aGUgL3Byb2MvaXJxIGRpcmVjdG9yeSB0byAyLjQuCitJdCBjb3VsZCBiZSB1c2VkIHRvIHNldCBJUlEgdG8gQ1BVIGFmZmluaXR5LCB0aGlzIG1lYW5zIHRoYXQgeW91IGNhbiAiaG9vayIgYW4KK0lSUSB0byBvbmx5IG9uZSBDUFUsIG9yIHRvIGV4Y2x1ZGUgYSBDUFUgb2YgaGFuZGxpbmcgSVJRcy4gVGhlIGNvbnRlbnRzIG9mIHRoZQoraXJxIHN1YmRpciBpcyBvbmUgc3ViZGlyIGZvciBlYWNoIElSUSwgYW5kIHR3byBmaWxlczsgZGVmYXVsdF9zbXBfYWZmaW5pdHkgYW5kCitwcm9mX2NwdV9tYXNrLgorCitGb3IgZXhhbXBsZSAKKyAgPiBscyAvcHJvYy9pcnEvCisgIDAgIDEwICAxMiAgMTQgIDE2ICAxOCAgMiAgNCAgNiAgOCAgcHJvZl9jcHVfbWFzaworICAxICAxMSAgMTMgIDE1ICAxNyAgMTkgIDMgIDUgIDcgIDkgIGRlZmF1bHRfc21wX2FmZmluaXR5CisgID4gbHMgL3Byb2MvaXJxLzAvCisgIHNtcF9hZmZpbml0eQorCitzbXBfYWZmaW5pdHkgaXMgYSBiaXRtYXNrLCBpbiB3aGljaCB5b3UgY2FuIHNwZWNpZnkgd2hpY2ggQ1BVcyBjYW4gaGFuZGxlIHRoZQorSVJRLCB5b3UgY2FuIHNldCBpdCBieSBkb2luZzoKKworICA+IGVjaG8gMSA+IC9wcm9jL2lycS8xMC9zbXBfYWZmaW5pdHkKKworVGhpcyBtZWFucyB0aGF0IG9ubHkgdGhlIGZpcnN0IENQVSB3aWxsIGhhbmRsZSB0aGUgSVJRLCBidXQgeW91IGNhbiBhbHNvIGVjaG8KKzUgd2hpY2ggbWVhbnMgdGhhdCBvbmx5IHRoZSBmaXJzdCBhbmQgZm91cnRoIENQVSBjYW4gaGFuZGxlIHRoZSBJUlEuCisKK1RoZSBjb250ZW50cyBvZiBlYWNoIHNtcF9hZmZpbml0eSBmaWxlIGlzIHRoZSBzYW1lIGJ5IGRlZmF1bHQ6CisKKyAgPiBjYXQgL3Byb2MvaXJxLzAvc21wX2FmZmluaXR5CisgIGZmZmZmZmZmCisKK1RoZXJlIGlzIGFuIGFsdGVybmF0ZSBpbnRlcmZhY2UsIHNtcF9hZmZpbml0eV9saXN0IHdoaWNoIGFsbG93cyBzcGVjaWZ5aW5nCithIGNwdSByYW5nZSBpbnN0ZWFkIG9mIGEgYml0bWFzazoKKworICA+IGNhdCAvcHJvYy9pcnEvMC9zbXBfYWZmaW5pdHlfbGlzdAorICAxMDI0LTEwMzEKKworVGhlIGRlZmF1bHRfc21wX2FmZmluaXR5IG1hc2sgYXBwbGllcyB0byBhbGwgbm9uLWFjdGl2ZSBJUlFzLCB3aGljaCBhcmUgdGhlCitJUlFzIHdoaWNoIGhhdmUgbm90IHlldCBiZWVuIGFsbG9jYXRlZC9hY3RpdmF0ZWQsIGFuZCBoZW5jZSB3aGljaCBsYWNrIGEKKy9wcm9jL2lycS9bMC05XSogZGlyZWN0b3J5LgorCitUaGUgbm9kZSBmaWxlIG9uIGFuIFNNUCBzeXN0ZW0gc2hvd3MgdGhlIG5vZGUgdG8gd2hpY2ggdGhlIGRldmljZSB1c2luZyB0aGUgSVJRCityZXBvcnRzIGl0c2VsZiBhcyBiZWluZyBhdHRhY2hlZC4gVGhpcyBoYXJkd2FyZSBsb2NhbGl0eSBpbmZvcm1hdGlvbiBkb2VzIG5vdAoraW5jbHVkZSBpbmZvcm1hdGlvbiBhYm91dCBhbnkgcG9zc2libGUgZHJpdmVyIGxvY2FsaXR5IHByZWZlcmVuY2UuCisKK3Byb2ZfY3B1X21hc2sgc3BlY2lmaWVzIHdoaWNoIENQVXMgYXJlIHRvIGJlIHByb2ZpbGVkIGJ5IHRoZSBzeXN0ZW0gd2lkZQorcHJvZmlsZXIuIERlZmF1bHQgdmFsdWUgaXMgZmZmZmZmZmYgKGFsbCBjcHVzIGlmIHRoZXJlIGFyZSBvbmx5IDMyIG9mIHRoZW0pLgorCitUaGUgd2F5IElSUXMgYXJlIHJvdXRlZCBpcyBoYW5kbGVkIGJ5IHRoZSBJTy1BUElDLCBhbmQgaXQncyBSb3VuZCBSb2JpbgorYmV0d2VlbiBhbGwgdGhlIENQVXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gaGFuZGxlIGl0LiBBcyB1c3VhbCB0aGUga2VybmVsIGhhcworbW9yZSBpbmZvIHRoYW4geW91IGFuZCBkb2VzIGEgYmV0dGVyIGpvYiB0aGFuIHlvdSwgc28gdGhlIGRlZmF1bHRzIGFyZSB0aGUKK2Jlc3QgY2hvaWNlIGZvciBhbG1vc3QgZXZlcnlvbmUuICBbTm90ZSB0aGlzIGFwcGxpZXMgb25seSB0byB0aG9zZSBJTy1BUElDJ3MKK3RoYXQgc3VwcG9ydCAiUm91bmQgUm9iaW4iIGludGVycnVwdCBkaXN0cmlidXRpb24uXQorCitUaGVyZSBhcmUgIHRocmVlICBtb3JlICBpbXBvcnRhbnQgc3ViZGlyZWN0b3JpZXMgaW4gL3Byb2M6IG5ldCwgc2NzaSwgYW5kIHN5cy4KK1RoZSBnZW5lcmFsICBydWxlICBpcyAgdGhhdCAgdGhlICBjb250ZW50cywgIG9yICBldmVuICB0aGUgIGV4aXN0ZW5jZSBvZiB0aGVzZQorZGlyZWN0b3JpZXMsIGRlcGVuZCAgb24geW91ciBrZXJuZWwgY29uZmlndXJhdGlvbi4gSWYgU0NTSSBpcyBub3QgZW5hYmxlZCwgdGhlCitkaXJlY3Rvcnkgc2NzaSAgbWF5ICBub3QgIGV4aXN0LiBUaGUgc2FtZSBpcyB0cnVlIHdpdGggdGhlIG5ldCwgd2hpY2ggaXMgdGhlcmUKK29ubHkgd2hlbiBuZXR3b3JraW5nIHN1cHBvcnQgaXMgcHJlc2VudCBpbiB0aGUgcnVubmluZyBrZXJuZWwuCisKK1RoZSBzbGFiaW5mbyAgZmlsZSAgZ2l2ZXMgIGluZm9ybWF0aW9uICBhYm91dCAgbWVtb3J5IHVzYWdlIGF0IHRoZSBzbGFiIGxldmVsLgorTGludXggdXNlcyAgc2xhYiAgcG9vbHMgZm9yIG1lbW9yeSBtYW5hZ2VtZW50IGFib3ZlIHBhZ2UgbGV2ZWwgaW4gdmVyc2lvbiAyLjIuCitDb21tb25seSB1c2VkICBvYmplY3RzICBoYXZlICB0aGVpciAgb3duICBzbGFiICBwb29sIChzdWNoIGFzIG5ldHdvcmsgYnVmZmVycywKK2RpcmVjdG9yeSBjYWNoZSwgYW5kIHNvIG9uKS4KKworLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisKKz4gY2F0IC9wcm9jL2J1ZGR5aW5mbworCitOb2RlIDAsIHpvbmUgICAgICBETUEgICAgICAwICAgICAgNCAgICAgIDUgICAgICA0ICAgICAgNCAgICAgIDMgLi4uCitOb2RlIDAsIHpvbmUgICBOb3JtYWwgICAgICAxICAgICAgMCAgICAgIDAgICAgICAxICAgIDEwMSAgICAgIDggLi4uCitOb2RlIDAsIHpvbmUgIEhpZ2hNZW0gICAgICAyICAgICAgMCAgICAgIDAgICAgICAxICAgICAgMSAgICAgIDAgLi4uCisKK0V4dGVybmFsIGZyYWdtZW50YXRpb24gaXMgYSBwcm9ibGVtIHVuZGVyIHNvbWUgd29ya2xvYWRzLCBhbmQgYnVkZHlpbmZvIGlzIGEKK3VzZWZ1bCB0b29sIGZvciBoZWxwaW5nIGRpYWdub3NlIHRoZXNlIHByb2JsZW1zLiAgQnVkZHlpbmZvIHdpbGwgZ2l2ZSB5b3UgYSAKK2NsdWUgYXMgdG8gaG93IGJpZyBhbiBhcmVhIHlvdSBjYW4gc2FmZWx5IGFsbG9jYXRlLCBvciB3aHkgYSBwcmV2aW91cworYWxsb2NhdGlvbiBmYWlsZWQuCisKK0VhY2ggY29sdW1uIHJlcHJlc2VudHMgdGhlIG51bWJlciBvZiBwYWdlcyBvZiBhIGNlcnRhaW4gb3JkZXIgd2hpY2ggYXJlIAorYXZhaWxhYmxlLiAgSW4gdGhpcyBjYXNlLCB0aGVyZSBhcmUgMCBjaHVua3Mgb2YgMl4wKlBBR0VfU0laRSBhdmFpbGFibGUgaW4gCitaT05FX0RNQSwgNCBjaHVua3Mgb2YgMl4xKlBBR0VfU0laRSBpbiBaT05FX0RNQSwgMTAxIGNodW5rcyBvZiAyXjQqUEFHRV9TSVpFIAorYXZhaWxhYmxlIGluIFpPTkVfTk9STUFMLCBldGMuLi4gCisKK01vcmUgaW5mb3JtYXRpb24gcmVsZXZhbnQgdG8gZXh0ZXJuYWwgZnJhZ21lbnRhdGlvbiBjYW4gYmUgZm91bmQgaW4KK3BhZ2V0eXBlaW5mby4KKworPiBjYXQgL3Byb2MvcGFnZXR5cGVpbmZvCitQYWdlIGJsb2NrIG9yZGVyOiA5CitQYWdlcyBwZXIgYmxvY2s6ICA1MTIKKworRnJlZSBwYWdlcyBjb3VudCBwZXIgbWlncmF0ZSB0eXBlIGF0IG9yZGVyICAgICAgIDAgICAgICAxICAgICAgMiAgICAgIDMgICAgICA0ICAgICAgNSAgICAgIDYgICAgICA3ICAgICAgOCAgICAgIDkgICAgIDEwCitOb2RlICAgIDAsIHpvbmUgICAgICBETUEsIHR5cGUgICAgVW5tb3ZhYmxlICAgICAgMCAgICAgIDAgICAgICAwICAgICAgMSAgICAgIDEgICAgICAxICAgICAgMSAgICAgIDEgICAgICAxICAgICAgMSAgICAgIDAKK05vZGUgICAgMCwgem9uZSAgICAgIERNQSwgdHlwZSAgUmVjbGFpbWFibGUgICAgICAwICAgICAgMCAgICAgIDAgICAgICAwICAgICAgMCAgICAgIDAgICAgICAwICAgICAgMCAgICAgIDAgICAgICAwICAgICAgMAorTm9kZSAgICAwLCB6b25lICAgICAgRE1BLCB0eXBlICAgICAgTW92YWJsZSAgICAgIDEgICAgICAxICAgICAgMiAgICAgIDEgICAgICAyICAgICAgMSAgICAgIDEgICAgICAwICAgICAgMSAgICAgIDAgICAgICAyCitOb2RlICAgIDAsIHpvbmUgICAgICBETUEsIHR5cGUgICAgICBSZXNlcnZlICAgICAgMCAgICAgIDAgICAgICAwICAgICAgMCAgICAgIDAgICAgICAwICAgICAgMCAgICAgIDAgICAgICAwICAgICAgMSAgICAgIDAKK05vZGUgICAgMCwgem9uZSAgICAgIERNQSwgdHlwZSAgICAgIElzb2xhdGUgICAgICAwICAgICAgMCAgICAgIDAgICAgICAwICAgICAgMCAgICAgIDAgICAgICAwICAgICAgMCAgICAgIDAgICAgICAwICAgICAgMAorTm9kZSAgICAwLCB6b25lICAgIERNQTMyLCB0eXBlICAgIFVubW92YWJsZSAgICAxMDMgICAgIDU0ICAgICA3NyAgICAgIDEgICAgICAxICAgICAgMSAgICAgMTEgICAgICA4ICAgICAgNyAgICAgIDEgICAgICA5CitOb2RlICAgIDAsIHpvbmUgICAgRE1BMzIsIHR5cGUgIFJlY2xhaW1hYmxlICAgICAgMCAgICAgIDAgICAgICAyICAgICAgMSAgICAgIDAgICAgICAwICAgICAgMCAgICAgIDAgICAgICAxICAgICAgMCAgICAgIDAKK05vZGUgICAgMCwgem9uZSAgICBETUEzMiwgdHlwZSAgICAgIE1vdmFibGUgICAgMTY5ICAgIDE1MiAgICAxMTMgICAgIDkxICAgICA3NyAgICAgNTQgICAgIDM5ICAgICAxMyAgICAgIDYgICAgICAxICAgIDQ1MgorTm9kZSAgICAwLCB6b25lICAgIERNQTMyLCB0eXBlICAgICAgUmVzZXJ2ZSAgICAgIDEgICAgICAyICAgICAgMiAgICAgIDIgICAgICAyICAgICAgMCAgICAgIDEgICAgICAxICAgICAgMSAgICAgIDEgICAgICAwCitOb2RlICAgIDAsIHpvbmUgICAgRE1BMzIsIHR5cGUgICAgICBJc29sYXRlICAgICAgMCAgICAgIDAgICAgICAwICAgICAgMCAgICAgIDAgICAgICAwICAgICAgMCAgICAgIDAgICAgICAwICAgICAgMCAgICAgIDAKKworTnVtYmVyIG9mIGJsb2NrcyB0eXBlICAgICBVbm1vdmFibGUgIFJlY2xhaW1hYmxlICAgICAgTW92YWJsZSAgICAgIFJlc2VydmUgICAgICBJc29sYXRlCitOb2RlIDAsIHpvbmUgICAgICBETUEgICAgICAgICAgICAyICAgICAgICAgICAgMCAgICAgICAgICAgIDUgICAgICAgICAgICAxICAgICAgICAgICAgMAorTm9kZSAwLCB6b25lICAgIERNQTMyICAgICAgICAgICA0MSAgICAgICAgICAgIDYgICAgICAgICAgOTY3ICAgICAgICAgICAgMiAgICAgICAgICAgIDAKKworRnJhZ21lbnRhdGlvbiBhdm9pZGFuY2UgaW4gdGhlIGtlcm5lbCB3b3JrcyBieSBncm91cGluZyBwYWdlcyBvZiBkaWZmZXJlbnQKK21pZ3JhdGUgdHlwZXMgaW50byB0aGUgc2FtZSBjb250aWd1b3VzIHJlZ2lvbnMgb2YgbWVtb3J5IGNhbGxlZCBwYWdlIGJsb2Nrcy4KK0EgcGFnZSBibG9jayBpcyB0eXBpY2FsbHkgdGhlIHNpemUgb2YgdGhlIGRlZmF1bHQgaHVnZXBhZ2Ugc2l6ZSBlLmcuIDJNQiBvbgorWDg2LTY0LiBCeSBrZWVwaW5nIHBhZ2VzIGdyb3VwZWQgYmFzZWQgb24gdGhlaXIgYWJpbGl0eSB0byBtb3ZlLCB0aGUga2VybmVsCitjYW4gcmVjbGFpbSBwYWdlcyB3aXRoaW4gYSBwYWdlIGJsb2NrIHRvIHNhdGlzZnkgYSBoaWdoLW9yZGVyIGFsbG9jYXRpb24uCisKK1RoZSBwYWdldHlwaW5mbyBiZWdpbnMgd2l0aCBpbmZvcm1hdGlvbiBvbiB0aGUgc2l6ZSBvZiBhIHBhZ2UgYmxvY2suIEl0Cit0aGVuIGdpdmVzIHRoZSBzYW1lIHR5cGUgb2YgaW5mb3JtYXRpb24gYXMgYnVkZHlpbmZvIGV4Y2VwdCBicm9rZW4gZG93bgorYnkgbWlncmF0ZS10eXBlIGFuZCBmaW5pc2hlcyB3aXRoIGRldGFpbHMgb24gaG93IG1hbnkgcGFnZSBibG9ja3Mgb2YgZWFjaAordHlwZSBleGlzdC4KKworSWYgbWluX2ZyZWVfa2J5dGVzIGhhcyBiZWVuIHR1bmVkIGNvcnJlY3RseSAocmVjb21tZW5kYXRpb25zIG1hZGUgYnkgaHVnZWFkbQorZnJvbSBsaWJodWdldGxiZnMgaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJodWdldGxiZnMvKSwgb25lIGNhbgorbWFrZSBhbiBlc3RpbWF0ZSBvZiB0aGUgbGlrZWx5IG51bWJlciBvZiBodWdlIHBhZ2VzIHRoYXQgY2FuIGJlIGFsbG9jYXRlZAorYXQgYSBnaXZlbiBwb2ludCBpbiB0aW1lLiBBbGwgdGhlICJNb3ZhYmxlIiBibG9ja3Mgc2hvdWxkIGJlIGFsbG9jYXRhYmxlCit1bmxlc3MgbWVtb3J5IGhhcyBiZWVuIG1sb2NrKCknZC4gU29tZSBvZiB0aGUgUmVjbGFpbWFibGUgYmxvY2tzIHNob3VsZAorYWxzbyBiZSBhbGxvY2F0YWJsZSBhbHRob3VnaCBhIGxvdCBvZiBmaWxlc3lzdGVtIG1ldGFkYXRhIG1heSBoYXZlIHRvIGJlCityZWNsYWltZWQgdG8gYWNoaWV2ZSB0aGlzLgorCisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKworbWVtaW5mbzoKKworUHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQgZGlzdHJpYnV0aW9uIGFuZCB1dGlsaXphdGlvbiBvZiBtZW1vcnkuICBUaGlzCit2YXJpZXMgYnkgYXJjaGl0ZWN0dXJlIGFuZCBjb21waWxlIG9wdGlvbnMuICBUaGUgZm9sbG93aW5nIGlzIGZyb20gYQorMTZHQiBQSUlJLCB3aGljaCBoYXMgaGlnaG1lbSBlbmFibGVkLiAgWW91IG1heSBub3QgaGF2ZSBhbGwgb2YgdGhlc2UgZmllbGRzLgorCis+IGNhdCAvcHJvYy9tZW1pbmZvCisKK01lbVRvdGFsOiAgICAgMTYzNDQ5NzIga0IKK01lbUZyZWU6ICAgICAgMTM2MzQwNjQga0IKK01lbUF2YWlsYWJsZTogMTQ4MzYxNzIga0IKK0J1ZmZlcnM6ICAgICAgICAgIDM2NTYga0IKK0NhY2hlZDogICAgICAgIDExOTU3MDgga0IKK1N3YXBDYWNoZWQ6ICAgICAgICAgIDAga0IKK0FjdGl2ZTogICAgICAgICA4OTE2MzYga0IKK0luYWN0aXZlOiAgICAgIDEwNzcyMjQga0IKK0hpZ2hUb3RhbDogICAgMTU1OTc1Mjgga0IKK0hpZ2hGcmVlOiAgICAgMTM2Mjk2MzIga0IKK0xvd1RvdGFsOiAgICAgICA3NDc0NDQga0IKK0xvd0ZyZWU6ICAgICAgICAgIDQ0MzIga0IKK1N3YXBUb3RhbDogICAgICAgICAgIDAga0IKK1N3YXBGcmVlOiAgICAgICAgICAgIDAga0IKK0RpcnR5OiAgICAgICAgICAgICA5Njgga0IKK1dyaXRlYmFjazogICAgICAgICAgIDAga0IKK0Fub25QYWdlczogICAgICA4NjE4MDAga0IKK01hcHBlZDogICAgICAgICAyODAzNzIga0IKK1NsYWI6ICAgICAgICAgICAyODQzNjQga0IKK1NSZWNsYWltYWJsZTogICAxNTk4NTYga0IKK1NVbnJlY2xhaW06ICAgICAxMjQ1MDgga0IKK1BhZ2VUYWJsZXM6ICAgICAgMjQ0NDgga0IKK05GU19VbnN0YWJsZTogICAgICAgIDAga0IKK0JvdW5jZTogICAgICAgICAgICAgIDAga0IKK1dyaXRlYmFja1RtcDogICAgICAgIDAga0IKK0NvbW1pdExpbWl0OiAgIDc2Njk3OTYga0IKK0NvbW1pdHRlZF9BUzogICAxMDAwNTYga0IKK1ZtYWxsb2NUb3RhbDogICAxMTIyMTYga0IKK1ZtYWxsb2NVc2VkOiAgICAgICA0Mjgga0IKK1ZtYWxsb2NDaHVuazogICAxMTEwODgga0IKK0Fub25IdWdlUGFnZXM6ICAgNDkxNTIga0IKKworICAgIE1lbVRvdGFsOiBUb3RhbCB1c2FibGUgcmFtIChpLmUuIHBoeXNpY2FsIHJhbSBtaW51cyBhIGZldyByZXNlcnZlZAorICAgICAgICAgICAgICBiaXRzIGFuZCB0aGUga2VybmVsIGJpbmFyeSBjb2RlKQorICAgICBNZW1GcmVlOiBUaGUgc3VtIG9mIExvd0ZyZWUrSGlnaEZyZWUKK01lbUF2YWlsYWJsZTogQW4gZXN0aW1hdGUgb2YgaG93IG11Y2ggbWVtb3J5IGlzIGF2YWlsYWJsZSBmb3Igc3RhcnRpbmcgbmV3CisgICAgICAgICAgICAgIGFwcGxpY2F0aW9ucywgd2l0aG91dCBzd2FwcGluZy4gQ2FsY3VsYXRlZCBmcm9tIE1lbUZyZWUsCisgICAgICAgICAgICAgIFNSZWNsYWltYWJsZSwgdGhlIHNpemUgb2YgdGhlIGZpbGUgTFJVIGxpc3RzLCBhbmQgdGhlIGxvdworICAgICAgICAgICAgICB3YXRlcm1hcmtzIGluIGVhY2ggem9uZS4KKyAgICAgICAgICAgICAgVGhlIGVzdGltYXRlIHRha2VzIGludG8gYWNjb3VudCB0aGF0IHRoZSBzeXN0ZW0gbmVlZHMgc29tZQorICAgICAgICAgICAgICBwYWdlIGNhY2hlIHRvIGZ1bmN0aW9uIHdlbGwsIGFuZCB0aGF0IG5vdCBhbGwgcmVjbGFpbWFibGUKKyAgICAgICAgICAgICAgc2xhYiB3aWxsIGJlIHJlY2xhaW1hYmxlLCBkdWUgdG8gaXRlbXMgYmVpbmcgaW4gdXNlLiBUaGUKKyAgICAgICAgICAgICAgaW1wYWN0IG9mIHRob3NlIGZhY3RvcnMgd2lsbCB2YXJ5IGZyb20gc3lzdGVtIHRvIHN5c3RlbS4KKyAgICAgQnVmZmVyczogUmVsYXRpdmVseSB0ZW1wb3Jhcnkgc3RvcmFnZSBmb3IgcmF3IGRpc2sgYmxvY2tzCisgICAgICAgICAgICAgIHNob3VsZG4ndCBnZXQgdHJlbWVuZG91c2x5IGxhcmdlICgyME1CIG9yIHNvKQorICAgICAgQ2FjaGVkOiBpbi1tZW1vcnkgY2FjaGUgZm9yIGZpbGVzIHJlYWQgZnJvbSB0aGUgZGlzayAodGhlCisgICAgICAgICAgICAgIHBhZ2VjYWNoZSkuICBEb2Vzbid0IGluY2x1ZGUgU3dhcENhY2hlZAorICBTd2FwQ2FjaGVkOiBNZW1vcnkgdGhhdCBvbmNlIHdhcyBzd2FwcGVkIG91dCwgaXMgc3dhcHBlZCBiYWNrIGluIGJ1dAorICAgICAgICAgICAgICBzdGlsbCBhbHNvIGlzIGluIHRoZSBzd2FwZmlsZSAoaWYgbWVtb3J5IGlzIG5lZWRlZCBpdAorICAgICAgICAgICAgICBkb2Vzbid0IG5lZWQgdG8gYmUgc3dhcHBlZCBvdXQgQUdBSU4gYmVjYXVzZSBpdCBpcyBhbHJlYWR5CisgICAgICAgICAgICAgIGluIHRoZSBzd2FwZmlsZS4gVGhpcyBzYXZlcyBJL08pCisgICAgICBBY3RpdmU6IE1lbW9yeSB0aGF0IGhhcyBiZWVuIHVzZWQgbW9yZSByZWNlbnRseSBhbmQgdXN1YWxseSBub3QKKyAgICAgICAgICAgICAgcmVjbGFpbWVkIHVubGVzcyBhYnNvbHV0ZWx5IG5lY2Vzc2FyeS4KKyAgICBJbmFjdGl2ZTogTWVtb3J5IHdoaWNoIGhhcyBiZWVuIGxlc3MgcmVjZW50bHkgdXNlZC4gIEl0IGlzIG1vcmUKKyAgICAgICAgICAgICAgZWxpZ2libGUgdG8gYmUgcmVjbGFpbWVkIGZvciBvdGhlciBwdXJwb3NlcworICAgSGlnaFRvdGFsOgorICAgIEhpZ2hGcmVlOiBIaWdobWVtIGlzIGFsbCBtZW1vcnkgYWJvdmUgfjg2ME1CIG9mIHBoeXNpY2FsIG1lbW9yeQorICAgICAgICAgICAgICBIaWdobWVtIGFyZWFzIGFyZSBmb3IgdXNlIGJ5IHVzZXJzcGFjZSBwcm9ncmFtcywgb3IKKyAgICAgICAgICAgICAgZm9yIHRoZSBwYWdlY2FjaGUuICBUaGUga2VybmVsIG11c3QgdXNlIHRyaWNrcyB0byBhY2Nlc3MKKyAgICAgICAgICAgICAgdGhpcyBtZW1vcnksIG1ha2luZyBpdCBzbG93ZXIgdG8gYWNjZXNzIHRoYW4gbG93bWVtLgorICAgIExvd1RvdGFsOgorICAgICBMb3dGcmVlOiBMb3dtZW0gaXMgbWVtb3J5IHdoaWNoIGNhbiBiZSB1c2VkIGZvciBldmVyeXRoaW5nIHRoYXQKKyAgICAgICAgICAgICAgaGlnaG1lbSBjYW4gYmUgdXNlZCBmb3IsIGJ1dCBpdCBpcyBhbHNvIGF2YWlsYWJsZSBmb3IgdGhlCisgICAgICAgICAgICAgIGtlcm5lbCdzIHVzZSBmb3IgaXRzIG93biBkYXRhIHN0cnVjdHVyZXMuICBBbW9uZyBtYW55CisgICAgICAgICAgICAgIG90aGVyIHRoaW5ncywgaXQgaXMgd2hlcmUgZXZlcnl0aGluZyBmcm9tIHRoZSBTbGFiIGlzCisgICAgICAgICAgICAgIGFsbG9jYXRlZC4gIEJhZCB0aGluZ3MgaGFwcGVuIHdoZW4geW91J3JlIG91dCBvZiBsb3dtZW0uCisgICBTd2FwVG90YWw6IHRvdGFsIGFtb3VudCBvZiBzd2FwIHNwYWNlIGF2YWlsYWJsZQorICAgIFN3YXBGcmVlOiBNZW1vcnkgd2hpY2ggaGFzIGJlZW4gZXZpY3RlZCBmcm9tIFJBTSwgYW5kIGlzIHRlbXBvcmFyaWx5CisgICAgICAgICAgICAgIG9uIHRoZSBkaXNrCisgICAgICAgRGlydHk6IE1lbW9yeSB3aGljaCBpcyB3YWl0aW5nIHRvIGdldCB3cml0dGVuIGJhY2sgdG8gdGhlIGRpc2sKKyAgIFdyaXRlYmFjazogTWVtb3J5IHdoaWNoIGlzIGFjdGl2ZWx5IGJlaW5nIHdyaXR0ZW4gYmFjayB0byB0aGUgZGlzaworICAgQW5vblBhZ2VzOiBOb24tZmlsZSBiYWNrZWQgcGFnZXMgbWFwcGVkIGludG8gdXNlcnNwYWNlIHBhZ2UgdGFibGVzCitBbm9uSHVnZVBhZ2VzOiBOb24tZmlsZSBiYWNrZWQgaHVnZSBwYWdlcyBtYXBwZWQgaW50byB1c2Vyc3BhY2UgcGFnZSB0YWJsZXMKKyAgICAgIE1hcHBlZDogZmlsZXMgd2hpY2ggaGF2ZSBiZWVuIG1tYXBlZCwgc3VjaCBhcyBsaWJyYXJpZXMKKyAgICAgICAgU2xhYjogaW4ta2VybmVsIGRhdGEgc3RydWN0dXJlcyBjYWNoZQorU1JlY2xhaW1hYmxlOiBQYXJ0IG9mIFNsYWIsIHRoYXQgbWlnaHQgYmUgcmVjbGFpbWVkLCBzdWNoIGFzIGNhY2hlcworICBTVW5yZWNsYWltOiBQYXJ0IG9mIFNsYWIsIHRoYXQgY2Fubm90IGJlIHJlY2xhaW1lZCBvbiBtZW1vcnkgcHJlc3N1cmUKKyAgUGFnZVRhYmxlczogYW1vdW50IG9mIG1lbW9yeSBkZWRpY2F0ZWQgdG8gdGhlIGxvd2VzdCBsZXZlbCBvZiBwYWdlCisgICAgICAgICAgICAgIHRhYmxlcy4KK05GU19VbnN0YWJsZTogTkZTIHBhZ2VzIHNlbnQgdG8gdGhlIHNlcnZlciwgYnV0IG5vdCB5ZXQgY29tbWl0dGVkIHRvIHN0YWJsZQorCSAgICAgIHN0b3JhZ2UKKyAgICAgIEJvdW5jZTogTWVtb3J5IHVzZWQgZm9yIGJsb2NrIGRldmljZSAiYm91bmNlIGJ1ZmZlcnMiCitXcml0ZWJhY2tUbXA6IE1lbW9yeSB1c2VkIGJ5IEZVU0UgZm9yIHRlbXBvcmFyeSB3cml0ZWJhY2sgYnVmZmVycworIENvbW1pdExpbWl0OiBCYXNlZCBvbiB0aGUgb3ZlcmNvbW1pdCByYXRpbyAoJ3ZtLm92ZXJjb21taXRfcmF0aW8nKSwKKyAgICAgICAgICAgICAgdGhpcyBpcyB0aGUgdG90YWwgYW1vdW50IG9mICBtZW1vcnkgY3VycmVudGx5IGF2YWlsYWJsZSB0bworICAgICAgICAgICAgICBiZSBhbGxvY2F0ZWQgb24gdGhlIHN5c3RlbS4gVGhpcyBsaW1pdCBpcyBvbmx5IGFkaGVyZWQgdG8KKyAgICAgICAgICAgICAgaWYgc3RyaWN0IG92ZXJjb21taXQgYWNjb3VudGluZyBpcyBlbmFibGVkIChtb2RlIDIgaW4KKyAgICAgICAgICAgICAgJ3ZtLm92ZXJjb21taXRfbWVtb3J5JykuCisgICAgICAgICAgICAgIFRoZSBDb21taXRMaW1pdCBpcyBjYWxjdWxhdGVkIHdpdGggdGhlIGZvbGxvd2luZyBmb3JtdWxhOgorICAgICAgICAgICAgICBDb21taXRMaW1pdCA9IChbdG90YWwgUkFNIHBhZ2VzXSAtIFt0b3RhbCBodWdlIFRMQiBwYWdlc10pICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmNvbW1pdF9yYXRpbyAvIDEwMCArIFt0b3RhbCBzd2FwIHBhZ2VzXQorICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgb24gYSBzeXN0ZW0gd2l0aCAxRyBvZiBwaHlzaWNhbCBSQU0gYW5kIDdHCisgICAgICAgICAgICAgIG9mIHN3YXAgd2l0aCBhIGB2bS5vdmVyY29tbWl0X3JhdGlvYCBvZiAzMCBpdCB3b3VsZAorICAgICAgICAgICAgICB5aWVsZCBhIENvbW1pdExpbWl0IG9mIDcuM0cuCisgICAgICAgICAgICAgIEZvciBtb3JlIGRldGFpbHMsIHNlZSB0aGUgbWVtb3J5IG92ZXJjb21taXQgZG9jdW1lbnRhdGlvbgorICAgICAgICAgICAgICBpbiB2bS9vdmVyY29tbWl0LWFjY291bnRpbmcuCitDb21taXR0ZWRfQVM6IFRoZSBhbW91bnQgb2YgbWVtb3J5IHByZXNlbnRseSBhbGxvY2F0ZWQgb24gdGhlIHN5c3RlbS4KKyAgICAgICAgICAgICAgVGhlIGNvbW1pdHRlZCBtZW1vcnkgaXMgYSBzdW0gb2YgYWxsIG9mIHRoZSBtZW1vcnkgd2hpY2gKKyAgICAgICAgICAgICAgaGFzIGJlZW4gYWxsb2NhdGVkIGJ5IHByb2Nlc3NlcywgZXZlbiBpZiBpdCBoYXMgbm90IGJlZW4KKyAgICAgICAgICAgICAgInVzZWQiIGJ5IHRoZW0gYXMgb2YgeWV0LiBBIHByb2Nlc3Mgd2hpY2ggbWFsbG9jKCkncyAxRworICAgICAgICAgICAgICBvZiBtZW1vcnksIGJ1dCBvbmx5IHRvdWNoZXMgMzAwTSBvZiBpdCB3aWxsIHNob3cgdXAgYXMKKwkgICAgICB1c2luZyAxRy4gVGhpcyAxRyBpcyBtZW1vcnkgd2hpY2ggaGFzIGJlZW4gImNvbW1pdHRlZCIgdG8KKyAgICAgICAgICAgICAgYnkgdGhlIFZNIGFuZCBjYW4gYmUgdXNlZCBhdCBhbnkgdGltZSBieSB0aGUgYWxsb2NhdGluZworICAgICAgICAgICAgICBhcHBsaWNhdGlvbi4gV2l0aCBzdHJpY3Qgb3ZlcmNvbW1pdCBlbmFibGVkIG9uIHRoZSBzeXN0ZW0KKyAgICAgICAgICAgICAgKG1vZGUgMiBpbiAndm0ub3ZlcmNvbW1pdF9tZW1vcnknKSxhbGxvY2F0aW9ucyB3aGljaCB3b3VsZAorICAgICAgICAgICAgICBleGNlZWQgdGhlIENvbW1pdExpbWl0IChkZXRhaWxlZCBhYm92ZSkgd2lsbCBub3QgYmUgcGVybWl0dGVkLgorICAgICAgICAgICAgICBUaGlzIGlzIHVzZWZ1bCBpZiBvbmUgbmVlZHMgdG8gZ3VhcmFudGVlIHRoYXQgcHJvY2Vzc2VzIHdpbGwKKyAgICAgICAgICAgICAgbm90IGZhaWwgZHVlIHRvIGxhY2sgb2YgbWVtb3J5IG9uY2UgdGhhdCBtZW1vcnkgaGFzIGJlZW4KKyAgICAgICAgICAgICAgc3VjY2Vzc2Z1bGx5IGFsbG9jYXRlZC4KK1ZtYWxsb2NUb3RhbDogdG90YWwgc2l6ZSBvZiB2bWFsbG9jIG1lbW9yeSBhcmVhCisgVm1hbGxvY1VzZWQ6IGFtb3VudCBvZiB2bWFsbG9jIGFyZWEgd2hpY2ggaXMgdXNlZAorVm1hbGxvY0NodW5rOiBsYXJnZXN0IGNvbnRpZ3VvdXMgYmxvY2sgb2Ygdm1hbGxvYyBhcmVhIHdoaWNoIGlzIGZyZWUKKworLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisKK3ZtYWxsb2NpbmZvOgorCitQcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCB2bWFsbG9jZWQvdm1hcGVkIGFyZWFzLiBPbmUgbGluZSBwZXIgYXJlYSwKK2NvbnRhaW5pbmcgdGhlIHZpcnR1YWwgYWRkcmVzcyByYW5nZSBvZiB0aGUgYXJlYSwgc2l6ZSBpbiBieXRlcywKK2NhbGxlciBpbmZvcm1hdGlvbiBvZiB0aGUgY3JlYXRvciwgYW5kIG9wdGlvbmFsIGluZm9ybWF0aW9uIGRlcGVuZGluZworb24gdGhlIGtpbmQgb2YgYXJlYSA6CisKKyBwYWdlcz1uciAgICBudW1iZXIgb2YgcGFnZXMKKyBwaHlzPWFkZHIgICBpZiBhIHBoeXNpY2FsIGFkZHJlc3Mgd2FzIHNwZWNpZmllZAorIGlvcmVtYXAgICAgIEkvTyBtYXBwaW5nIChpb3JlbWFwKCkgYW5kIGZyaWVuZHMpCisgdm1hbGxvYyAgICAgdm1hbGxvYygpIGFyZWEKKyB2bWFwICAgICAgICB2bWFwKCllZCBwYWdlcworIHVzZXIgICAgICAgIFZNX1VTRVJNQVAgYXJlYQorIHZwYWdlcyAgICAgIGJ1ZmZlciBmb3IgcGFnZXMgcG9pbnRlcnMgd2FzIHZtYWxsb2NlZCAoaHVnZSBhcmVhKQorIE48bm9kZT49bnIgIChPbmx5IG9uIE5VTUEga2VybmVscykKKyAgICAgICAgICAgICBOdW1iZXIgb2YgcGFnZXMgYWxsb2NhdGVkIG9uIG1lbW9yeSBub2RlIDxub2RlPgorCis+IGNhdCAvcHJvYy92bWFsbG9jaW5mbworMHhmZmZmYzIwMDAwMDAwMDAwLTB4ZmZmZmMyMDAwMDIwMTAwMCAyMTAxMjQ4IGFsbG9jX2xhcmdlX3N5c3RlbV9oYXNoKzB4MjA0IC4uLgorICAvMHgyYzAgcGFnZXM9NTEyIHZtYWxsb2MgTjA9MTI4IE4xPTEyOCBOMj0xMjggTjM9MTI4CisweGZmZmZjMjAwMDAyMDEwMDAtMHhmZmZmYzIwMDAwMzAyMDAwIDEwNTI2NzIgYWxsb2NfbGFyZ2Vfc3lzdGVtX2hhc2grMHgyMDQgLi4uCisgIC8weDJjMCBwYWdlcz0yNTYgdm1hbGxvYyBOMD02NCBOMT02NCBOMj02NCBOMz02NAorMHhmZmZmYzIwMDAwMzAyMDAwLTB4ZmZmZmMyMDAwMDMwNDAwMCAgICA4MTkyIGFjcGlfdGJfdmVyaWZ5X3RhYmxlKzB4MjEvMHg0Zi4uLgorICBwaHlzPTdmZWU4MDAwIGlvcmVtYXAKKzB4ZmZmZmMyMDAwMDMwNDAwMC0weGZmZmZjMjAwMDAzMDcwMDAgICAxMjI4OCBhY3BpX3RiX3ZlcmlmeV90YWJsZSsweDIxLzB4NGYuLi4KKyAgcGh5cz03ZmVlNzAwMCBpb3JlbWFwCisweGZmZmZjMjAwMDAzMWQwMDAtMHhmZmZmYzIwMDAwMzFmMDAwICAgIDgxOTIgaW5pdF92ZHNvX3ZhcnMrMHgxMTIvMHgyMTAKKzB4ZmZmZmMyMDAwMDMxZjAwMC0weGZmZmZjMjAwMDAzMmIwMDAgICA0OTE1MiBjcmFtZnNfdW5jb21wcmVzc19pbml0KzB4MmUgLi4uCisgIC8weDgwIHBhZ2VzPTExIHZtYWxsb2MgTjA9MyBOMT0zIE4yPTIgTjM9MworMHhmZmZmYzIwMDAwMzNhMDAwLTB4ZmZmZmMyMDAwMDMzZDAwMCAgIDEyMjg4IHN5c19zd2Fwb24rMHg2NDAvMHhhYzAgICAgICAuLi4KKyAgcGFnZXM9MiB2bWFsbG9jIE4xPTIKKzB4ZmZmZmMyMDAwMDM0NzAwMC0weGZmZmZjMjAwMDAzNGMwMDAgICAyMDQ4MCB4dF9hbGxvY190YWJsZV9pbmZvKzB4ZmUgLi4uCisgIC8weDEzMCBbeF90YWJsZXNdIHBhZ2VzPTQgdm1hbGxvYyBOMD00CisweGZmZmZmZmZmYTAwMDAwMDAtMHhmZmZmZmZmZmEwMDBmMDAwICAgNjE0NDAgc3lzX2luaXRfbW9kdWxlKzB4YzI3LzB4MWQwMCAuLi4KKyAgIHBhZ2VzPTE0IHZtYWxsb2MgTjI9MTQKKzB4ZmZmZmZmZmZhMDAwZjAwMC0weGZmZmZmZmZmYTAwMTQwMDAgICAyMDQ4MCBzeXNfaW5pdF9tb2R1bGUrMHhjMjcvMHgxZDAwIC4uLgorICAgcGFnZXM9NCB2bWFsbG9jIE4xPTQKKzB4ZmZmZmZmZmZhMDAxNDAwMC0weGZmZmZmZmZmYTAwMTcwMDAgICAxMjI4OCBzeXNfaW5pdF9tb2R1bGUrMHhjMjcvMHgxZDAwIC4uLgorICAgcGFnZXM9MiB2bWFsbG9jIE4xPTIKKzB4ZmZmZmZmZmZhMDAxNzAwMC0weGZmZmZmZmZmYTAwMjIwMDAgICA0NTA1NiBzeXNfaW5pdF9tb2R1bGUrMHhjMjcvMHgxZDAwIC4uLgorICAgcGFnZXM9MTAgdm1hbGxvYyBOMD0xMAorCisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKworc29mdGlycXM6CisKK1Byb3ZpZGVzIGNvdW50cyBvZiBzb2Z0aXJxIGhhbmRsZXJzIHNlcnZpY2VkIHNpbmNlIGJvb3QgdGltZSwgZm9yIGVhY2ggY3B1LgorCis+IGNhdCAvcHJvYy9zb2Z0aXJxcworICAgICAgICAgICAgICAgIENQVTAgICAgICAgQ1BVMSAgICAgICBDUFUyICAgICAgIENQVTMKKyAgICAgIEhJOiAgICAgICAgICAwICAgICAgICAgIDAgICAgICAgICAgMCAgICAgICAgICAwCisgICBUSU1FUjogICAgICAyNzE2NiAgICAgIDI3MTIwICAgICAgMjcwOTcgICAgICAyNzAzNAorICBORVRfVFg6ICAgICAgICAgIDAgICAgICAgICAgMCAgICAgICAgICAwICAgICAgICAgMTcKKyAgTkVUX1JYOiAgICAgICAgIDQyICAgICAgICAgIDAgICAgICAgICAgMCAgICAgICAgIDM5CisgICBCTE9DSzogICAgICAgICAgMCAgICAgICAgICAwICAgICAgICAxMDcgICAgICAgMTEyMQorIFRBU0tMRVQ6ICAgICAgICAgIDAgICAgICAgICAgMCAgICAgICAgICAwICAgICAgICAyOTAKKyAgIFNDSEVEOiAgICAgIDI3MDM1ICAgICAgMjY5ODMgICAgICAyNjk3MSAgICAgIDI2NzQ2CisgSFJUSU1FUjogICAgICAgICAgMCAgICAgICAgICAwICAgICAgICAgIDAgICAgICAgICAgMAorICAgICBSQ1U6ICAgICAgIDE2NzggICAgICAgMTc2OSAgICAgICAyMTc4ICAgICAgIDIyNTAKKworCisxLjMgSURFIGRldmljZXMgaW4gL3Byb2MvaWRlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBzdWJkaXJlY3RvcnkgL3Byb2MvaWRlIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGFsbCBJREUgZGV2aWNlcyBvZiB3aGljaAordGhlIGtlcm5lbCAgaXMgIGF3YXJlLiAgVGhlcmUgaXMgb25lIHN1YmRpcmVjdG9yeSBmb3IgZWFjaCBJREUgY29udHJvbGxlciwgdGhlCitmaWxlIGRyaXZlcnMgIGFuZCBhIGxpbmsgZm9yIGVhY2ggSURFIGRldmljZSwgcG9pbnRpbmcgdG8gdGhlIGRldmljZSBkaXJlY3RvcnkKK2luIHRoZSBjb250cm9sbGVyIHNwZWNpZmljIHN1YnRyZWUuCisKK1RoZSBmaWxlICBkcml2ZXJzICBjb250YWlucyBnZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkcml2ZXJzIHVzZWQgZm9yIHRoZQorSURFIGRldmljZXM6CisKKyAgPiBjYXQgL3Byb2MvaWRlL2RyaXZlcnMKKyAgaWRlLWNkcm9tIHZlcnNpb24gNC41MworICBpZGUtZGlzayB2ZXJzaW9uIDEuMDgKKworTW9yZSBkZXRhaWxlZCAgaW5mb3JtYXRpb24gIGNhbiAgYmUgIGZvdW5kICBpbiAgdGhlICBjb250cm9sbGVyICBzcGVjaWZpYworc3ViZGlyZWN0b3JpZXMuIFRoZXNlICBhcmUgIG5hbWVkICBpZGUwLCAgaWRlMSAgYW5kICBzbyAgb24uICBFYWNoICBvZiAgdGhlc2UKK2RpcmVjdG9yaWVzIGNvbnRhaW5zIHRoZSBmaWxlcyBzaG93biBpbiB0YWJsZSAxLTYuCisKKworVGFibGUgMS02OiBJREUgY29udHJvbGxlciBpbmZvIGluICAvcHJvYy9pZGUvaWRlPworLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisgRmlsZSAgICBDb250ZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgY2hhbm5lbCBJREUgY2hhbm5lbCAoMCBvciAxKSAgICAgICAgICAgICAgICAgICAgCisgY29uZmlnICBDb25maWd1cmF0aW9uIChvbmx5IGZvciBQQ0kvSURFIGJyaWRnZSkgCisgbWF0ZSAgICBNYXRlIG5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgbW9kZWwgICBUeXBlL0NoaXBzZXQgb2YgSURFIGNvbnRyb2xsZXIgICAgICAgICAgCisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKworRWFjaCBkZXZpY2UgIGNvbm5lY3RlZCAgdG8gIGEgIGNvbnRyb2xsZXIgIGhhcyAgYSBzZXBhcmF0ZSBzdWJkaXJlY3RvcnkgaW4gdGhlCitjb250cm9sbGVycyBkaXJlY3RvcnkuICBUaGUgIGZpbGVzICBsaXN0ZWQgaW4gdGFibGUgMS03IGFyZSBjb250YWluZWQgaW4gdGhlc2UKK2RpcmVjdG9yaWVzLgorCisKK1RhYmxlIDEtNzogSURFIGRldmljZSBpbmZvcm1hdGlvbgorLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisgRmlsZSAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgY2FjaGUgICAgICAgICAgICBUaGUgY2FjaGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgY2FwYWNpdHkgICAgICAgICBDYXBhY2l0eSBvZiB0aGUgbWVkaXVtIChpbiA1MTJCeXRlIGJsb2NrcykgCisgZHJpdmVyICAgICAgICAgICBkcml2ZXIgYW5kIHZlcnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgCisgZ2VvbWV0cnkgICAgICAgICBwaHlzaWNhbCBhbmQgbG9naWNhbCBnZW9tZXRyeSAgICAgICAgICAgICAgCisgaWRlbnRpZnkgICAgICAgICBkZXZpY2UgaWRlbnRpZnkgYmxvY2sgICAgICAgICAgICAgICAgICAgICAgCisgbWVkaWEgICAgICAgICAgICBtZWRpYSB0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgbW9kZWwgICAgICAgICAgICBkZXZpY2UgaWRlbnRpZmllciAgICAgICAgICAgICAgICAgICAgICAgICAgCisgc2V0dGluZ3MgICAgICAgICBkZXZpY2Ugc2V0dXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgc21hcnRfdGhyZXNob2xkcyBJREUgZGlzayBtYW5hZ2VtZW50IHRocmVzaG9sZHMgICAgICAgICAgICAgCisgc21hcnRfdmFsdWVzICAgICBJREUgZGlzayBtYW5hZ2VtZW50IHZhbHVlcyAgICAgICAgICAgICAgICAgCisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKworVGhlIG1vc3QgIGludGVyZXN0aW5nICBmaWxlIGlzIHNldHRpbmdzLiBUaGlzIGZpbGUgY29udGFpbnMgYSBuaWNlIG92ZXJ2aWV3IG9mCit0aGUgZHJpdmUgcGFyYW1ldGVyczoKKworICAjIGNhdCAvcHJvYy9pZGUvaWRlMC9oZGEvc2V0dGluZ3MgCisgIG5hbWUgICAgICAgICAgICAgICAgICAgIHZhbHVlICAgICAgICAgICBtaW4gICAgICAgICAgICAgbWF4ICAgICAgICAgICAgIG1vZGUgCisgIC0tLS0gICAgICAgICAgICAgICAgICAgIC0tLS0tICAgICAgICAgICAtLS0gICAgICAgICAgICAgLS0tICAgICAgICAgICAgIC0tLS0gCisgIGJpb3NfY3lsICAgICAgICAgICAgICAgIDUyNiAgICAgICAgICAgICAwICAgICAgICAgICAgICAgNjU1MzUgICAgICAgICAgIHJ3IAorICBiaW9zX2hlYWQgICAgICAgICAgICAgICAyNTUgICAgICAgICAgICAgMCAgICAgICAgICAgICAgIDI1NSAgICAgICAgICAgICBydyAKKyAgYmlvc19zZWN0ICAgICAgICAgICAgICAgNjMgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICA2MyAgICAgICAgICAgICAgcncgCisgIGJyZWFkYV9yZWFkYWhlYWQgICAgICAgIDQgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgMTI3ICAgICAgICAgICAgIHJ3IAorICBic3dhcCAgICAgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICByIAorICBmaWxlX3JlYWRhaGVhZCAgICAgICAgICA3MiAgICAgICAgICAgICAgMCAgICAgICAgICAgICAgIDIwOTcxNTEgICAgICAgICBydyAKKyAgaW9fMzJiaXQgICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAzICAgICAgICAgICAgICAgcncgCisgIGtlZXBzZXR0aW5ncyAgICAgICAgICAgIDAgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgIHJ3IAorICBtYXhfa2JfcGVyX3JlcXVlc3QgICAgICAxMjIgICAgICAgICAgICAgMSAgICAgICAgICAgICAgIDEyNyAgICAgICAgICAgICBydyAKKyAgbXVsdGNvdW50ICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICA4ICAgICAgICAgICAgICAgcncgCisgIG5pY2UxICAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgIHJ3IAorICBub3dlcnIgICAgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICBydyAKKyAgcGlvX21vZGUgICAgICAgICAgICAgICAgd3JpdGUtb25seSAgICAgIDAgICAgICAgICAgICAgICAyNTUgICAgICAgICAgICAgdyAKKyAgc2xvdyAgICAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgcncgCisgIHVubWFza2lycSAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgIHJ3IAorICB1c2luZ19kbWEgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICBydyAKKworCisxLjQgTmV0d29ya2luZyBpbmZvIGluIC9wcm9jL25ldAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHN1YmRpcmVjdG9yeSAgL3Byb2MvbmV0ICBmb2xsb3dzICB0aGUgIHVzdWFsICBwYXR0ZXJuLiBUYWJsZSAxLTggc2hvd3MgdGhlCithZGRpdGlvbmFsIHZhbHVlcyAgeW91ICBnZXQgIGZvciAgSVAgIHZlcnNpb24gNiBpZiB5b3UgY29uZmlndXJlIHRoZSBrZXJuZWwgdG8KK3N1cHBvcnQgdGhpcy4gVGFibGUgMS05IGxpc3RzIHRoZSBmaWxlcyBhbmQgdGhlaXIgbWVhbmluZy4KKworCitUYWJsZSAxLTg6IElQdjYgaW5mbyBpbiAvcHJvYy9uZXQKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorIEZpbGUgICAgICAgQ29udGVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgdWRwNiAgICAgICBVRFAgc29ja2V0cyAoSVB2NikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyB0Y3A2ICAgICAgIFRDUCBzb2NrZXRzIChJUHY2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIHJhdzYgICAgICAgUmF3IGRldmljZSBzdGF0aXN0aWNzIChJUHY2KSAgICAgICAgICAgICAgICAgICAgICAgICAgCisgaWdtcDYgICAgICBJUCBtdWx0aWNhc3QgYWRkcmVzc2VzLCB3aGljaCB0aGlzIGhvc3Qgam9pbmVkIChJUHY2KSAKKyBpZl9pbmV0NiAgIExpc3Qgb2YgSVB2NiBpbnRlcmZhY2UgYWRkcmVzc2VzICAgICAgICAgICAgICAgICAgICAgIAorIGlwdjZfcm91dGUgS2VybmVsIHJvdXRpbmcgdGFibGUgZm9yIElQdjYgICAgICAgICAgICAgICAgICAgICAgICAgCisgcnQ2X3N0YXRzICBHbG9iYWwgSVB2NiByb3V0aW5nIHRhYmxlcyBzdGF0aXN0aWNzICAgICAgICAgICAgICAgICAKKyBzb2Nrc3RhdDYgIFNvY2tldCBzdGF0aXN0aWNzIChJUHY2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIHNubXA2ICAgICAgU25tcCBkYXRhIChJUHY2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKworCitUYWJsZSAxLTk6IE5ldHdvcmsgaW5mbyBpbiAvcHJvYy9uZXQKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorIEZpbGUgICAgICAgICAgQ29udGVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIGFycCAgICAgICAgICAgS2VybmVsICBBUlAgdGFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIGRldiAgICAgICAgICAgbmV0d29yayBkZXZpY2VzIHdpdGggc3RhdGlzdGljcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIGRldl9tY2FzdCAgICAgdGhlIExheWVyMiBtdWx0aWNhc3QgZ3JvdXBzIGEgZGV2aWNlIGlzIGxpc3RlbmluZyB0b28KKyAgICAgICAgICAgICAgIChpbnRlcmZhY2UgaW5kZXgsIGxhYmVsLCBudW1iZXIgb2YgcmVmZXJlbmNlcywgbnVtYmVyIG9mIGJvdW5kCisgICAgICAgICAgICAgICBhZGRyZXNzZXMpLiAKKyBkZXZfc3RhdCAgICAgIG5ldHdvcmsgZGV2aWNlIHN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBpcF9md2NoYWlucyAgIEZpcmV3YWxsIGNoYWluIGxpbmthZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBpcF9md25hbWVzICAgIEZpcmV3YWxsIGNoYWluIG5hbWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBpcF9tYXNxICAgICAgIERpcmVjdG9yeSBjb250YWluaW5nIHRoZSBtYXNxdWVyYWRpbmcgdGFibGVzICAgICAgICAgICAgICAgICAgICAKKyBpcF9tYXNxdWVyYWRlIE1ham9yIG1hc3F1ZXJhZGluZyB0YWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBuZXRzdGF0ICAgICAgIE5ldHdvcmsgc3RhdGlzdGljcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyByYXcgICAgICAgICAgIHJhdyBkZXZpY2Ugc3RhdGlzdGljcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyByb3V0ZSAgICAgICAgIEtlcm5lbCByb3V0aW5nIHRhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBycGMgICAgICAgICAgIERpcmVjdG9yeSBjb250YWluaW5nIHJwYyBpbmZvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBydF9jYWNoZSAgICAgIFJvdXRpbmcgY2FjaGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBzbm1wICAgICAgICAgIFNOTVAgZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBzb2Nrc3RhdCAgICAgIFNvY2tldCBzdGF0aXN0aWNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyB0Y3AgICAgICAgICAgIFRDUCAgc29ja2V0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyB1ZHAgICAgICAgICAgIFVEUCBzb2NrZXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyB1bml4ICAgICAgICAgIFVOSVggZG9tYWluIHNvY2tldHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyB3aXJlbGVzcyAgICAgIFdpcmVsZXNzIGludGVyZmFjZSBkYXRhIChXYXZlbGFuIGV0YykgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBpZ21wICAgICAgICAgIElQIG11bHRpY2FzdCBhZGRyZXNzZXMsIHdoaWNoIHRoaXMgaG9zdCBqb2luZWQgICAgICAgICAgICAgICAgICAKKyBwc2NoZWQgICAgICAgIEdsb2JhbCBwYWNrZXQgc2NoZWR1bGVyIHBhcmFtZXRlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBuZXRsaW5rICAgICAgIExpc3Qgb2YgUEZfTkVUTElOSyBzb2NrZXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBpcF9tcl92aWZzICAgIExpc3Qgb2YgbXVsdGljYXN0IHZpcnR1YWwgaW50ZXJmYWNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyBpcF9tcl9jYWNoZSAgIExpc3Qgb2YgbXVsdGljYXN0IHJvdXRpbmcgY2FjaGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorCitZb3UgY2FuICB1c2UgIHRoaXMgIGluZm9ybWF0aW9uICB0byBzZWUgd2hpY2ggbmV0d29yayBkZXZpY2VzIGFyZSBhdmFpbGFibGUgaW4KK3lvdXIgc3lzdGVtIGFuZCBob3cgbXVjaCB0cmFmZmljIHdhcyByb3V0ZWQgb3ZlciB0aG9zZSBkZXZpY2VzOgorCisgID4gY2F0IC9wcm9jL25ldC9kZXYgCisgIEludGVyLXxSZWNlaXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFsuLi4gCisgICBmYWNlIHxieXRlcyAgICBwYWNrZXRzIGVycnMgZHJvcCBmaWZvIGZyYW1lIGNvbXByZXNzZWQgbXVsdGljYXN0fFsuLi4gCisgICAgICBsbzogIDkwODE4OCAgIDU1OTYgICAgIDAgICAgMCAgICAwICAgICAwICAgICAgICAgIDAgICAgICAgICAwIFsuLi4gICAgICAgICAKKyAgICBwcHAwOjE1NDc1MTQwICAyMDcyMSAgIDQxMCAgICAwICAgIDAgICA0MTAgICAgICAgICAgMCAgICAgICAgIDAgWy4uLiAgCisgICAgZXRoMDogIDYxNDUzMCAgIDcwODUgICAgIDAgICAgMCAgICAwICAgICAwICAgICAgICAgIDAgICAgICAgICAxIFsuLi4gCisgICAKKyAgLi4uXSBUcmFuc21pdCAKKyAgLi4uXSBieXRlcyAgICBwYWNrZXRzIGVycnMgZHJvcCBmaWZvIGNvbGxzIGNhcnJpZXIgY29tcHJlc3NlZCAKKyAgLi4uXSAgOTA4MTg4ICAgICA1NTk2ICAgIDAgICAgMCAgICAwICAgICAwICAgICAgIDAgICAgICAgICAgMCAKKyAgLi4uXSAxMzc1MTAzICAgIDE3NDA1ICAgIDAgICAgMCAgICAwICAgICAwICAgICAgIDAgICAgICAgICAgMCAKKyAgLi4uXSAxNzAzOTgxICAgICA1NTM1ICAgIDAgICAgMCAgICAwICAgICAzICAgICAgIDAgICAgICAgICAgMCAKKworSW4gYWRkaXRpb24sIGVhY2ggQ2hhbm5lbCBCb25kIGludGVyZmFjZSBoYXMgaXRzIG93biBkaXJlY3RvcnkuICBGb3IKK2V4YW1wbGUsIHRoZSBib25kMCBkZXZpY2Ugd2lsbCBoYXZlIGEgZGlyZWN0b3J5IGNhbGxlZCAvcHJvYy9uZXQvYm9uZDAvLgorSXQgd2lsbCBjb250YWluIGluZm9ybWF0aW9uIHRoYXQgaXMgc3BlY2lmaWMgdG8gdGhhdCBib25kLCBzdWNoIGFzIHRoZQorY3VycmVudCBzbGF2ZXMgb2YgdGhlIGJvbmQsIHRoZSBsaW5rIHN0YXR1cyBvZiB0aGUgc2xhdmVzLCBhbmQgaG93CittYW55IHRpbWVzIHRoZSBzbGF2ZXMgbGluayBoYXMgZmFpbGVkLgorCisxLjUgU0NTSSBpbmZvCistLS0tLS0tLS0tLS0tCisKK0lmIHlvdSAgaGF2ZSAgYSAgU0NTSSAgaG9zdCBhZGFwdGVyIGluIHlvdXIgc3lzdGVtLCB5b3UnbGwgZmluZCBhIHN1YmRpcmVjdG9yeQorbmFtZWQgYWZ0ZXIgIHRoZSBkcml2ZXIgZm9yIHRoaXMgYWRhcHRlciBpbiAvcHJvYy9zY3NpLiBZb3UnbGwgYWxzbyBzZWUgYSBsaXN0CitvZiBhbGwgcmVjb2duaXplZCBTQ1NJIGRldmljZXMgaW4gL3Byb2Mvc2NzaToKKworICA+Y2F0IC9wcm9jL3Njc2kvc2NzaSAKKyAgQXR0YWNoZWQgZGV2aWNlczogCisgIEhvc3Q6IHNjc2kwIENoYW5uZWw6IDAwIElkOiAwMCBMdW46IDAwIAorICAgIFZlbmRvcjogSUJNICAgICAgTW9kZWw6IERHSFMwOVUgICAgICAgICAgUmV2OiAwM0UwIAorICAgIFR5cGU6ICAgRGlyZWN0LUFjY2VzcyAgICAgICAgICAgICAgICAgICAgQU5TSSBTQ1NJIHJldmlzaW9uOiAwMyAKKyAgSG9zdDogc2NzaTAgQ2hhbm5lbDogMDAgSWQ6IDA2IEx1bjogMDAgCisgICAgVmVuZG9yOiBQSU9ORUVSICBNb2RlbDogQ0QtUk9NIERSLVUwNlMgICBSZXY6IDEuMDQgCisgICAgVHlwZTogICBDRC1ST00gICAgICAgICAgICAgICAgICAgICAgICAgICBBTlNJIFNDU0kgcmV2aXNpb246IDAyIAorCisKK1RoZSBkaXJlY3RvcnkgIG5hbWVkICBhZnRlciAgdGhlIGRyaXZlciBoYXMgb25lIGZpbGUgZm9yIGVhY2ggYWRhcHRlciBmb3VuZCBpbgordGhlIHN5c3RlbS4gIFRoZXNlICBmaWxlcyAgY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udHJvbGxlciwgaW5jbHVkaW5nCit0aGUgdXNlZCAgSVJRICBhbmQgIHRoZSAgSU8gIGFkZHJlc3MgcmFuZ2UuIFRoZSBhbW91bnQgb2YgaW5mb3JtYXRpb24gc2hvd24gaXMKK2RlcGVuZGVudCBvbiAgdGhlIGFkYXB0ZXIgeW91IHVzZS4gVGhlIGV4YW1wbGUgc2hvd3MgdGhlIG91dHB1dCBmb3IgYW4gQWRhcHRlYworQUhBLTI5NDAgU0NTSSBhZGFwdGVyOgorCisgID4gY2F0IC9wcm9jL3Njc2kvYWljN3h4eC8wIAorICAgCisgIEFkYXB0ZWMgQUlDN3h4eCBkcml2ZXIgdmVyc2lvbjogNS4xLjE5LzMuMi40IAorICBDb21waWxlIE9wdGlvbnM6IAorICAgIFRDUSBFbmFibGVkIEJ5IERlZmF1bHQgOiBEaXNhYmxlZCAKKyAgICBBSUM3WFhYX1BST0NfU1RBVFMgICAgIDogRGlzYWJsZWQgCisgICAgQUlDN1hYWF9SRVNFVF9ERUxBWSAgICA6IDUgCisgIEFkYXB0ZXIgQ29uZmlndXJhdGlvbjogCisgICAgICAgICAgICAgU0NTSSBBZGFwdGVyOiBBZGFwdGVjIEFIQS0yOTRYIFVsdHJhIFNDU0kgaG9zdCBhZGFwdGVyIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbHRyYSBXaWRlIENvbnRyb2xsZXIgCisgICAgICBQQ0kgTU1BUGVkIEkvTyBCYXNlOiAweGViMDAxMDAwIAorICAgQWRhcHRlciBTRUVQUk9NIENvbmZpZzogU0VFUFJPTSBmb3VuZCBhbmQgdXNlZC4gCisgICAgICAgIEFkYXB0ZWMgU0NTSSBCSU9TOiBFbmFibGVkIAorICAgICAgICAgICAgICAgICAgICAgIElSUTogMTAgCisgICAgICAgICAgICAgICAgICAgICBTQ0JzOiBBY3RpdmUgMCwgTWF4IEFjdGl2ZSAyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG9jYXRlZCAxNSwgSFcgMTYsIFBhZ2UgMjU1IAorICAgICAgICAgICAgICAgSW50ZXJydXB0czogMTYwMzI4IAorICAgICAgICBCSU9TIENvbnRyb2wgV29yZDogMHgxOGI2IAorICAgICBBZGFwdGVyIENvbnRyb2wgV29yZDogMHgwMDViIAorICAgICBFeHRlbmRlZCBUcmFuc2xhdGlvbjogRW5hYmxlZCAKKyAgRGlzY29ubmVjdCBFbmFibGUgRmxhZ3M6IDB4ZmZmZiAKKyAgICAgICBVbHRyYSBFbmFibGUgRmxhZ3M6IDB4MDAwMSAKKyAgIFRhZyBRdWV1ZSBFbmFibGUgRmxhZ3M6IDB4MDAwMCAKKyAgT3JkZXJlZCBRdWV1ZSBUYWcgRmxhZ3M6IDB4MDAwMCAKKyAgRGVmYXVsdCBUYWcgUXVldWUgRGVwdGg6IDggCisgICAgICBUYWdnZWQgUXVldWUgQnkgRGV2aWNlIGFycmF5IGZvciBhaWM3eHh4IGhvc3QgaW5zdGFuY2UgMDogCisgICAgICAgIHsyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTUsMjU1LDI1NSwyNTV9IAorICAgICAgQWN0dWFsIHF1ZXVlIGRlcHRoIHBlciBkZXZpY2UgZm9yIGFpYzd4eHggaG9zdCBpbnN0YW5jZSAwOiAKKyAgICAgICAgezEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDF9IAorICBTdGF0aXN0aWNzOiAKKyAgKHNjc2kwOjA6MDowKSAKKyAgICBEZXZpY2UgdXNpbmcgV2lkZS9TeW5jIHRyYW5zZmVycyBhdCA0MC4wIE1CeXRlL3NlYywgb2Zmc2V0IDggCisgICAgVHJhbnNpbmZvIHNldHRpbmdzOiBjdXJyZW50KDEyLzgvMS8wKSwgZ29hbCgxMi84LzEvMCksIHVzZXIoMTIvMTUvMS8wKSAKKyAgICBUb3RhbCB0cmFuc2ZlcnMgMTYwMTUxICg3NDU3NyByZWFkcyBhbmQgODU1NzQgd3JpdGVzKSAKKyAgKHNjc2kwOjA6NjowKSAKKyAgICBEZXZpY2UgdXNpbmcgTmFycm93L1N5bmMgdHJhbnNmZXJzIGF0IDUuMCBNQnl0ZS9zZWMsIG9mZnNldCAxNSAKKyAgICBUcmFuc2luZm8gc2V0dGluZ3M6IGN1cnJlbnQoNTAvMTUvMC8wKSwgZ29hbCg1MC8xNS8wLzApLCB1c2VyKDUwLzE1LzAvMCkgCisgICAgVG90YWwgdHJhbnNmZXJzIDAgKDAgcmVhZHMgYW5kIDAgd3JpdGVzKSAKKworCisxLjYgUGFyYWxsZWwgcG9ydCBpbmZvIGluIC9wcm9jL3BhcnBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZGlyZWN0b3J5ICAvcHJvYy9wYXJwb3J0ICBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFyYWxsZWwgcG9ydHMgb2YKK3lvdXIgc3lzdGVtLiAgSXQgIGhhcyAgb25lICBzdWJkaXJlY3RvcnkgIGZvciAgZWFjaCBwb3J0LCBuYW1lZCBhZnRlciB0aGUgcG9ydAorbnVtYmVyICgwLDEsMiwuLi4pLgorCitUaGVzZSBkaXJlY3RvcmllcyBjb250YWluIHRoZSBmb3VyIGZpbGVzIHNob3duIGluIFRhYmxlIDEtMTAuCisKKworVGFibGUgMS0xMDogRmlsZXMgaW4gL3Byb2MvcGFycG9ydAorLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisgRmlsZSAgICAgIENvbnRlbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgYXV0b3Byb2JlIEFueSBJRUVFLTEyODQgZGV2aWNlIElEIGluZm9ybWF0aW9uIHRoYXQgaGFzIGJlZW4gYWNxdWlyZWQuICAgICAgICAgCisgZGV2aWNlcyAgIGxpc3Qgb2YgdGhlIGRldmljZSBkcml2ZXJzIHVzaW5nIHRoYXQgcG9ydC4gQSArIHdpbGwgYXBwZWFyIGJ5IHRoZQorICAgICAgICAgICBuYW1lIG9mIHRoZSBkZXZpY2UgY3VycmVudGx5IHVzaW5nIHRoZSBwb3J0IChpdCBtaWdodCBub3QgYXBwZWFyCisgICAgICAgICAgIGFnYWluc3QgYW55KS4gCisgaGFyZHdhcmUgIFBhcmFsbGVsIHBvcnQncyBiYXNlIGFkZHJlc3MsIElSUSBsaW5lIGFuZCBETUEgY2hhbm5lbC4gICAgICAgICAgICAgCisgaXJxICAgICAgIElSUSB0aGF0IHBhcnBvcnQgaXMgdXNpbmcgZm9yIHRoYXQgcG9ydC4gVGhpcyBpcyBpbiBhIHNlcGFyYXRlCisgICAgICAgICAgIGZpbGUgdG8gYWxsb3cgeW91IHRvIGFsdGVyIGl0IGJ5IHdyaXRpbmcgYSBuZXcgdmFsdWUgaW4gKElSUQorICAgICAgICAgICBudW1iZXIgb3Igbm9uZSkuIAorLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisKKzEuNyBUVFkgaW5mbyBpbiAvcHJvYy90dHkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW5mb3JtYXRpb24gYWJvdXQgIHRoZSAgYXZhaWxhYmxlICBhbmQgYWN0dWFsbHkgdXNlZCB0dHkncyBjYW4gYmUgZm91bmQgaW4gdGhlCitkaXJlY3RvcnkgL3Byb2MvdHR5LllvdSdsbCAgZmluZCAgZW50cmllcyAgZm9yIGRyaXZlcnMgYW5kIGxpbmUgZGlzY2lwbGluZXMgaW4KK3RoaXMgZGlyZWN0b3J5LCBhcyBzaG93biBpbiBUYWJsZSAxLTExLgorCisKK1RhYmxlIDEtMTE6IEZpbGVzIGluIC9wcm9jL3R0eQorLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisgRmlsZSAgICAgICAgICBDb250ZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIGRyaXZlcnMgICAgICAgbGlzdCBvZiBkcml2ZXJzIGFuZCB0aGVpciB1c2FnZSAgICAgICAgICAgICAgICAKKyBsZGlzY3MgICAgICAgIHJlZ2lzdGVyZWQgbGluZSBkaXNjaXBsaW5lcyAgICAgICAgICAgICAgICAgICAgCisgZHJpdmVyL3NlcmlhbCB1c2FnZSBzdGF0aXN0aWMgYW5kIHN0YXR1cyBvZiBzaW5nbGUgdHR5IGxpbmVzIAorLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisKK1RvIHNlZSAgd2hpY2ggIHR0eSdzICBhcmUgIGN1cnJlbnRseSBpbiB1c2UsIHlvdSBjYW4gc2ltcGx5IGxvb2sgaW50byB0aGUgZmlsZQorL3Byb2MvdHR5L2RyaXZlcnM6CisKKyAgPiBjYXQgL3Byb2MvdHR5L2RyaXZlcnMgCisgIHB0eV9zbGF2ZSAgICAgICAgICAgIC9kZXYvcHRzICAgICAgMTM2ICAgMC0yNTUgcHR5OnNsYXZlIAorICBwdHlfbWFzdGVyICAgICAgICAgICAvZGV2L3B0bSAgICAgIDEyOCAgIDAtMjU1IHB0eTptYXN0ZXIgCisgIHB0eV9zbGF2ZSAgICAgICAgICAgIC9kZXYvdHR5cCAgICAgICAzICAgMC0yNTUgcHR5OnNsYXZlIAorICBwdHlfbWFzdGVyICAgICAgICAgICAvZGV2L3B0eSAgICAgICAgMiAgIDAtMjU1IHB0eTptYXN0ZXIgCisgIHNlcmlhbCAgICAgICAgICAgICAgIC9kZXYvY3VhICAgICAgICA1ICAgNjQtNjcgc2VyaWFsOmNhbGxvdXQgCisgIHNlcmlhbCAgICAgICAgICAgICAgIC9kZXYvdHR5UyAgICAgICA0ICAgNjQtNjcgc2VyaWFsIAorICAvZGV2L3R0eTAgICAgICAgICAgICAvZGV2L3R0eTAgICAgICAgNCAgICAgICAwIHN5c3RlbTp2dG1hc3RlciAKKyAgL2Rldi9wdG14ICAgICAgICAgICAgL2Rldi9wdG14ICAgICAgIDUgICAgICAgMiBzeXN0ZW0gCisgIC9kZXYvY29uc29sZSAgICAgICAgIC9kZXYvY29uc29sZSAgICA1ICAgICAgIDEgc3lzdGVtOmNvbnNvbGUgCisgIC9kZXYvdHR5ICAgICAgICAgICAgIC9kZXYvdHR5ICAgICAgICA1ICAgICAgIDAgc3lzdGVtOi9kZXYvdHR5IAorICB1bmtub3duICAgICAgICAgICAgICAvZGV2L3R0eSAgICAgICAgNCAgICAxLTYzIGNvbnNvbGUgCisKKworMS44IE1pc2NlbGxhbmVvdXMga2VybmVsIHN0YXRpc3RpY3MgaW4gL3Byb2Mvc3RhdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitWYXJpb3VzIHBpZWNlcyAgIG9mICBpbmZvcm1hdGlvbiBhYm91dCAga2VybmVsIGFjdGl2aXR5ICBhcmUgIGF2YWlsYWJsZSBpbiB0aGUKKy9wcm9jL3N0YXQgZmlsZS4gIEFsbCAgb2YgIHRoZSBudW1iZXJzIHJlcG9ydGVkICBpbiAgdGhpcyBmaWxlIGFyZSAgYWdncmVnYXRlcworc2luY2UgdGhlIHN5c3RlbSBmaXJzdCBib290ZWQuICBGb3IgYSBxdWljayBsb29rLCBzaW1wbHkgY2F0IHRoZSBmaWxlOgorCisgID4gY2F0IC9wcm9jL3N0YXQKKyAgY3B1ICAyMjU1IDM0IDIyOTAgMjI2MjU1NjMgNjI5MCAxMjcgNDU2IDAgMCAwCisgIGNwdTAgMTEzMiAzNCAxNDQxIDExMzExNzE4IDM2NzUgMTI3IDQzOCAwIDAgMAorICBjcHUxIDExMjMgMCA4NDkgMTEzMTM4NDUgMjYxNCAwIDE4IDAgMCAwCisgIGludHIgMTE0OTMwNTQ4IDExMzE5OTc4OCAzIDAgNSAyNjMgMCA0IFsuLi4gbG90cyBtb3JlIG51bWJlcnMgLi4uXQorICBjdHh0IDE5OTA0NzMKKyAgYnRpbWUgMTA2MjE5MTM3NgorICBwcm9jZXNzZXMgMjkxNQorICBwcm9jc19ydW5uaW5nIDEKKyAgcHJvY3NfYmxvY2tlZCAwCisgIHNvZnRpcnEgMTgzNDMzIDAgMjE3NTUgMTIgMzkgMTEzNyAyMzEgMjE0NTkgMjI2MworCitUaGUgdmVyeSBmaXJzdCAgImNwdSIgbGluZSBhZ2dyZWdhdGVzIHRoZSAgbnVtYmVycyBpbiBhbGwgIG9mIHRoZSBvdGhlciAiY3B1TiIKK2xpbmVzLiAgVGhlc2UgbnVtYmVycyBpZGVudGlmeSB0aGUgYW1vdW50IG9mIHRpbWUgdGhlIENQVSBoYXMgc3BlbnQgcGVyZm9ybWluZworZGlmZmVyZW50IGtpbmRzIG9mIHdvcmsuICBUaW1lIHVuaXRzIGFyZSBpbiBVU0VSX0haICh0eXBpY2FsbHkgaHVuZHJlZHRocyBvZiBhCitzZWNvbmQpLiAgVGhlIG1lYW5pbmdzIG9mIHRoZSBjb2x1bW5zIGFyZSBhcyBmb2xsb3dzLCBmcm9tIGxlZnQgdG8gcmlnaHQ6CisKKy0gdXNlcjogbm9ybWFsIHByb2Nlc3NlcyBleGVjdXRpbmcgaW4gdXNlciBtb2RlCistIG5pY2U6IG5pY2VkIHByb2Nlc3NlcyBleGVjdXRpbmcgaW4gdXNlciBtb2RlCistIHN5c3RlbTogcHJvY2Vzc2VzIGV4ZWN1dGluZyBpbiBrZXJuZWwgbW9kZQorLSBpZGxlOiB0d2lkZGxpbmcgdGh1bWJzCistIGlvd2FpdDogd2FpdGluZyBmb3IgSS9PIHRvIGNvbXBsZXRlCistIGlycTogc2VydmljaW5nIGludGVycnVwdHMKKy0gc29mdGlycTogc2VydmljaW5nIHNvZnRpcnFzCistIHN0ZWFsOiBpbnZvbHVudGFyeSB3YWl0CistIGd1ZXN0OiBydW5uaW5nIGEgbm9ybWFsIGd1ZXN0CistIGd1ZXN0X25pY2U6IHJ1bm5pbmcgYSBuaWNlZCBndWVzdAorCitUaGUgImludHIiIGxpbmUgZ2l2ZXMgY291bnRzIG9mIGludGVycnVwdHMgIHNlcnZpY2VkIHNpbmNlIGJvb3QgdGltZSwgZm9yIGVhY2gKK29mIHRoZSAgcG9zc2libGUgc3lzdGVtIGludGVycnVwdHMuICAgVGhlIGZpcnN0ICBjb2x1bW4gIGlzIHRoZSAgdG90YWwgb2YgIGFsbAoraW50ZXJydXB0cyBzZXJ2aWNlZCAgaW5jbHVkaW5nICB1bm51bWJlcmVkICBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgIGludGVycnVwdHM7CitlYWNoICBzdWJzZXF1ZW50IGNvbHVtbiBpcyB0aGUgIHRvdGFsIGZvciB0aGF0IHBhcnRpY3VsYXIgbnVtYmVyZWQgaW50ZXJydXB0LgorVW5udW1iZXJlZCBpbnRlcnJ1cHRzIGFyZSBub3Qgc2hvd24sIG9ubHkgc3VtbWVkIGludG8gdGhlIHRvdGFsLgorCitUaGUgImN0eHQiIGxpbmUgZ2l2ZXMgdGhlIHRvdGFsIG51bWJlciBvZiBjb250ZXh0IHN3aXRjaGVzIGFjcm9zcyBhbGwgQ1BVcy4KKworVGhlICJidGltZSIgbGluZSBnaXZlcyAgdGhlIHRpbWUgYXQgd2hpY2ggdGhlICBzeXN0ZW0gYm9vdGVkLCBpbiBzZWNvbmRzIHNpbmNlCit0aGUgVW5peCBlcG9jaC4KKworVGhlICJwcm9jZXNzZXMiIGxpbmUgZ2l2ZXMgdGhlIG51bWJlciAgb2YgcHJvY2Vzc2VzIGFuZCB0aHJlYWRzIGNyZWF0ZWQsIHdoaWNoCitpbmNsdWRlcyAoYnV0ICBpcyBub3QgbGltaXRlZCAgdG8pIHRob3NlICBjcmVhdGVkIGJ5ICBjYWxscyB0byB0aGUgIGZvcmsoKSBhbmQKK2Nsb25lKCkgc3lzdGVtIGNhbGxzLgorCitUaGUgInByb2NzX3J1bm5pbmciIGxpbmUgZ2l2ZXMgdGhlIHRvdGFsIG51bWJlciBvZiB0aHJlYWRzIHRoYXQgYXJlCitydW5uaW5nIG9yIHJlYWR5IHRvIHJ1biAoaS5lLiwgdGhlIHRvdGFsIG51bWJlciBvZiBydW5uYWJsZSB0aHJlYWRzKS4KKworVGhlICAgInByb2NzX2Jsb2NrZWQiIGxpbmUgZ2l2ZXMgIHRoZSAgbnVtYmVyIG9mICBwcm9jZXNzZXMgY3VycmVudGx5IGJsb2NrZWQsCit3YWl0aW5nIGZvciBJL08gdG8gY29tcGxldGUuCisKK1RoZSAic29mdGlycSIgbGluZSBnaXZlcyBjb3VudHMgb2Ygc29mdGlycXMgc2VydmljZWQgc2luY2UgYm9vdCB0aW1lLCBmb3IgZWFjaAorb2YgdGhlIHBvc3NpYmxlIHN5c3RlbSBzb2Z0aXJxcy4gVGhlIGZpcnN0IGNvbHVtbiBpcyB0aGUgdG90YWwgb2YgYWxsCitzb2Z0aXJxcyBzZXJ2aWNlZDsgZWFjaCBzdWJzZXF1ZW50IGNvbHVtbiBpcyB0aGUgdG90YWwgZm9yIHRoYXQgcGFydGljdWxhcgorc29mdGlycS4KKworCisxLjkgRXh0NCBmaWxlIHN5c3RlbSBwYXJhbWV0ZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0luZm9ybWF0aW9uIGFib3V0IG1vdW50ZWQgZXh0NCBmaWxlIHN5c3RlbXMgY2FuIGJlIGZvdW5kIGluCisvcHJvYy9mcy9leHQ0LiAgRWFjaCBtb3VudGVkIGZpbGVzeXN0ZW0gd2lsbCBoYXZlIGEgZGlyZWN0b3J5IGluCisvcHJvYy9mcy9leHQ0IGJhc2VkIG9uIGl0cyBkZXZpY2UgbmFtZSAoaS5lLiwgL3Byb2MvZnMvZXh0NC9oZGMgb3IKKy9wcm9jL2ZzL2V4dDQvZG0tMCkuICAgVGhlIGZpbGVzIGluIGVhY2ggcGVyLWRldmljZSBkaXJlY3RvcnkgYXJlIHNob3duCitpbiBUYWJsZSAxLTEyLCBiZWxvdy4KKworVGFibGUgMS0xMjogRmlsZXMgaW4gL3Byb2MvZnMvZXh0NC88ZGV2bmFtZT4KKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorIEZpbGUgICAgICAgICAgICBDb250ZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorIG1iX2dyb3VwcyAgICAgICBkZXRhaWxzIG9mIG11bHRpYmxvY2sgYWxsb2NhdG9yIGJ1ZGR5IGNhY2hlIG9mIGZyZWUgYmxvY2tzCisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKworMi4wIC9wcm9jL2NvbnNvbGVzCistLS0tLS0tLS0tLS0tLS0tLS0KK1Nob3dzIHJlZ2lzdGVyZWQgc3lzdGVtIGNvbnNvbGUgbGluZXMuCisKK1RvIHNlZSB3aGljaCBjaGFyYWN0ZXIgZGV2aWNlIGxpbmVzIGFyZSBjdXJyZW50bHkgdXNlZCBmb3IgdGhlIHN5c3RlbSBjb25zb2xlCisvZGV2L2NvbnNvbGUsIHlvdSBtYXkgc2ltcGx5IGxvb2sgaW50byB0aGUgZmlsZSAvcHJvYy9jb25zb2xlczoKKworICA+IGNhdCAvcHJvYy9jb25zb2xlcworICB0dHkwICAgICAgICAgICAgICAgICAtV1UgKEVDcCkgICAgICAgNDo3CisgIHR0eVMwICAgICAgICAgICAgICAgIC1XLSAoRXApICAgICAgICA0OjY0CisKK1RoZSBjb2x1bW5zIGFyZToKKworICBkZXZpY2UgICAgICAgICAgICAgICBuYW1lIG9mIHRoZSBkZXZpY2UKKyAgb3BlcmF0aW9ucyAgICAgICAgICAgUiA9IGNhbiBkbyByZWFkIG9wZXJhdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgVyA9IGNhbiBkbyB3cml0ZSBvcGVyYXRpb25zCisgICAgICAgICAgICAgICAgICAgICAgIFUgPSBjYW4gZG8gdW5ibGFuaworICBmbGFncyAgICAgICAgICAgICAgICBFID0gaXQgaXMgZW5hYmxlZAorICAgICAgICAgICAgICAgICAgICAgICBDID0gaXQgaXMgcHJlZmVycmVkIGNvbnNvbGUKKyAgICAgICAgICAgICAgICAgICAgICAgQiA9IGl0IGlzIHByaW1hcnkgYm9vdCBjb25zb2xlCisgICAgICAgICAgICAgICAgICAgICAgIHAgPSBpdCBpcyB1c2VkIGZvciBwcmludGsgYnVmZmVyCisgICAgICAgICAgICAgICAgICAgICAgIGIgPSBpdCBpcyBub3QgYSBUVFkgYnV0IGEgQnJhaWxsZSBkZXZpY2UKKyAgICAgICAgICAgICAgICAgICAgICAgYSA9IGl0IGlzIHNhZmUgdG8gdXNlIHdoZW4gY3B1IGlzIG9mZmxpbmUKKyAgbWFqb3I6bWlub3IgICAgICAgICAgbWFqb3IgYW5kIG1pbm9yIG51bWJlciBvZiB0aGUgZGV2aWNlIHNlcGFyYXRlZCBieSBhIGNvbG9uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU3VtbWFyeQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgL3Byb2MgZmlsZSBzeXN0ZW0gc2VydmVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBydW5uaW5nIHN5c3RlbS4gSXQgbm90IG9ubHkKK2FsbG93cyBhY2Nlc3MgdG8gcHJvY2VzcyBkYXRhIGJ1dCBhbHNvIGFsbG93cyB5b3UgdG8gcmVxdWVzdCB0aGUga2VybmVsIHN0YXR1cworYnkgcmVhZGluZyBmaWxlcyBpbiB0aGUgaGllcmFyY2h5LgorCitUaGUgZGlyZWN0b3J5ICBzdHJ1Y3R1cmUgIG9mIC9wcm9jIHJlZmxlY3RzIHRoZSB0eXBlcyBvZiBpbmZvcm1hdGlvbiBhbmQgbWFrZXMKK2l0IGVhc3ksIGlmIG5vdCBvYnZpb3VzLCB3aGVyZSB0byBsb29rIGZvciBzcGVjaWZpYyBkYXRhLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ0hBUFRFUiAyOiBNT0RJRllJTkcgU1lTVEVNIFBBUkFNRVRFUlMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0luIFRoaXMgQ2hhcHRlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIE1vZGlmeWluZyBrZXJuZWwgcGFyYW1ldGVycyBieSB3cml0aW5nIGludG8gZmlsZXMgZm91bmQgaW4gL3Byb2Mvc3lzCisqIEV4cGxvcmluZyB0aGUgZmlsZXMgd2hpY2ggbW9kaWZ5IGNlcnRhaW4gcGFyYW1ldGVycworKiBSZXZpZXcgb2YgdGhlIC9wcm9jL3N5cyBmaWxlIHRyZWUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK0EgdmVyeSAgaW50ZXJlc3RpbmcgcGFydCBvZiAvcHJvYyBpcyB0aGUgZGlyZWN0b3J5IC9wcm9jL3N5cy4gVGhpcyBpcyBub3Qgb25seQorYSBzb3VyY2UgIG9mICBpbmZvcm1hdGlvbiwgIGl0IGFsc28gYWxsb3dzIHlvdSB0byBjaGFuZ2UgcGFyYW1ldGVycyB3aXRoaW4gdGhlCitrZXJuZWwuIEJlICB2ZXJ5ICBjYXJlZnVsICB3aGVuIGF0dGVtcHRpbmcgdGhpcy4gWW91IGNhbiBvcHRpbWl6ZSB5b3VyIHN5c3RlbSwKK2J1dCB5b3UgIGNhbiAgYWxzbyAgY2F1c2UgIGl0ICB0byAgY3Jhc2guICBOZXZlciAgYWx0ZXIga2VybmVsIHBhcmFtZXRlcnMgb24gYQorcHJvZHVjdGlvbiBzeXN0ZW0uICBTZXQgIHVwICBhICBkZXZlbG9wbWVudCBtYWNoaW5lIGFuZCB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGF0CitldmVyeXRoaW5nIHdvcmtzICB0aGUgIHdheSAgeW91IHdhbnQgaXQgdG8uIFlvdSBtYXkgaGF2ZSBubyBhbHRlcm5hdGl2ZSBidXQgdG8KK3JlYm9vdCB0aGUgbWFjaGluZSBvbmNlIGFuIGVycm9yIGhhcyBiZWVuIG1hZGUuCisKK1RvIGNoYW5nZSAgYSAgdmFsdWUsICBzaW1wbHkgIGVjaG8gIHRoZSBuZXcgdmFsdWUgaW50byB0aGUgZmlsZS4gQW4gZXhhbXBsZSBpcworZ2l2ZW4gYmVsb3cgIGluIHRoZSBzZWN0aW9uIG9uIHRoZSBmaWxlIHN5c3RlbSBkYXRhLiBZb3UgbmVlZCB0byBiZSByb290IHRvIGRvCit0aGlzLiBZb3UgIGNhbiAgY3JlYXRlICB5b3VyICBvd24gIGJvb3Qgc2NyaXB0IHRvIHBlcmZvcm0gdGhpcyBldmVyeSB0aW1lIHlvdXIKK3N5c3RlbSBib290cy4KKworVGhlIGZpbGVzICBpbiAvcHJvYy9zeXMgY2FuIGJlIHVzZWQgdG8gZmluZSB0dW5lIGFuZCBtb25pdG9yIG1pc2NlbGxhbmVvdXMgYW5kCitnZW5lcmFsIHRoaW5ncyAgaW4gIHRoZSBvcGVyYXRpb24gb2YgdGhlIExpbnV4IGtlcm5lbC4gU2luY2Ugc29tZSBvZiB0aGUgZmlsZXMKK2NhbiBpbmFkdmVydGVudGx5ICBkaXNydXB0ICB5b3VyICBzeXN0ZW0sICBpdCAgaXMgIGFkdmlzYWJsZSAgdG8gIHJlYWQgIGJvdGgKK2RvY3VtZW50YXRpb24gYW5kICBzb3VyY2UgIGJlZm9yZSBhY3R1YWxseSBtYWtpbmcgYWRqdXN0bWVudHMuIEluIGFueSBjYXNlLCBiZQordmVyeSBjYXJlZnVsICB3aGVuICB3cml0aW5nICB0byAgYW55ICBvZiB0aGVzZSBmaWxlcy4gVGhlIGVudHJpZXMgaW4gL3Byb2MgbWF5CitjaGFuZ2Ugc2xpZ2h0bHkgYmV0d2VlbiB0aGUgMi4xLiogYW5kIHRoZSAyLjIga2VybmVsLCBzbyBpZiB0aGVyZSBpcyBhbnkgZG91YnQKK3JldmlldyB0aGUga2VybmVsIGRvY3VtZW50YXRpb24gaW4gdGhlIGRpcmVjdG9yeSAvdXNyL3NyYy9saW51eC9Eb2N1bWVudGF0aW9uLgorVGhpcyBjaGFwdGVyICBpcyAgaGVhdmlseSAgYmFzZWQgIG9uIHRoZSBkb2N1bWVudGF0aW9uIGluY2x1ZGVkIGluIHRoZSBwcmUgMi4yCitrZXJuZWxzLCBhbmQgYmVjYW1lIHBhcnQgb2YgaXQgaW4gdmVyc2lvbiAyLjIuMSBvZiB0aGUgTGludXgga2VybmVsLgorCitQbGVhc2Ugc2VlOiBEb2N1bWVudGF0aW9uL3N5c2N0bC8gZGlyZWN0b3J5IGZvciBkZXNjcmlwdGlvbnMgb2YgdGhlc2UKK2VudHJpZXMuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU3VtbWFyeQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDZXJ0YWluIGFzcGVjdHMgIG9mICBrZXJuZWwgIGJlaGF2aW9yICBjYW4gYmUgbW9kaWZpZWQgYXQgcnVudGltZSwgd2l0aG91dCB0aGUKK25lZWQgdG8gIHJlY29tcGlsZSAgdGhlIGtlcm5lbCwgb3IgZXZlbiB0byByZWJvb3QgdGhlIHN5c3RlbS4gVGhlIGZpbGVzIGluIHRoZQorL3Byb2Mvc3lzIHRyZWUgIGNhbiAgbm90IG9ubHkgYmUgcmVhZCwgYnV0IGFsc28gbW9kaWZpZWQuIFlvdSBjYW4gdXNlIHRoZSBlY2hvCitjb21tYW5kIHRvIHdyaXRlIHZhbHVlIGludG8gdGhlc2UgZmlsZXMsIHRoZXJlYnkgY2hhbmdpbmcgdGhlIGRlZmF1bHQgc2V0dGluZ3MKK29mIHRoZSBrZXJuZWwuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDSEFQVEVSIDM6IFBFUi1QUk9DRVNTIFBBUkFNRVRFUlMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiszLjEgL3Byb2MvPHBpZD4vb29tX2FkaiAmIC9wcm9jLzxwaWQ+L29vbV9zY29yZV9hZGotIEFkanVzdCB0aGUgb29tLWtpbGxlciBzY29yZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlc2UgZmlsZSBjYW4gYmUgdXNlZCB0byBhZGp1c3QgdGhlIGJhZG5lc3MgaGV1cmlzdGljIHVzZWQgdG8gc2VsZWN0IHdoaWNoCitwcm9jZXNzIGdldHMga2lsbGVkIGluIG91dCBvZiBtZW1vcnkgY29uZGl0aW9ucy4KKworVGhlIGJhZG5lc3MgaGV1cmlzdGljIGFzc2lnbnMgYSB2YWx1ZSB0byBlYWNoIGNhbmRpZGF0ZSB0YXNrIHJhbmdpbmcgZnJvbSAwCisobmV2ZXIga2lsbCkgdG8gMTAwMCAoYWx3YXlzIGtpbGwpIHRvIGRldGVybWluZSB3aGljaCBwcm9jZXNzIGlzIHRhcmdldGVkLiAgVGhlCit1bml0cyBhcmUgcm91Z2hseSBhIHByb3BvcnRpb24gYWxvbmcgdGhhdCByYW5nZSBvZiBhbGxvd2VkIG1lbW9yeSB0aGUgcHJvY2VzcworbWF5IGFsbG9jYXRlIGZyb20gYmFzZWQgb24gYW4gZXN0aW1hdGlvbiBvZiBpdHMgY3VycmVudCBtZW1vcnkgYW5kIHN3YXAgdXNlLgorRm9yIGV4YW1wbGUsIGlmIGEgdGFzayBpcyB1c2luZyBhbGwgYWxsb3dlZCBtZW1vcnksIGl0cyBiYWRuZXNzIHNjb3JlIHdpbGwgYmUKKzEwMDAuICBJZiBpdCBpcyB1c2luZyBoYWxmIG9mIGl0cyBhbGxvd2VkIG1lbW9yeSwgaXRzIHNjb3JlIHdpbGwgYmUgNTAwLgorCitUaGVyZSBpcyBhbiBhZGRpdGlvbmFsIGZhY3RvciBpbmNsdWRlZCBpbiB0aGUgYmFkbmVzcyBzY29yZTogdGhlIGN1cnJlbnQgbWVtb3J5CithbmQgc3dhcCB1c2FnZSBpcyBkaXNjb3VudGVkIGJ5IDMlIGZvciByb290IHByb2Nlc3Nlcy4KKworVGhlIGFtb3VudCBvZiAiYWxsb3dlZCIgbWVtb3J5IGRlcGVuZHMgb24gdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIG9vbSBraWxsZXIKK3dhcyBjYWxsZWQuICBJZiBpdCBpcyBkdWUgdG8gdGhlIG1lbW9yeSBhc3NpZ25lZCB0byB0aGUgYWxsb2NhdGluZyB0YXNrJ3MgY3B1c2V0CitiZWluZyBleGhhdXN0ZWQsIHRoZSBhbGxvd2VkIG1lbW9yeSByZXByZXNlbnRzIHRoZSBzZXQgb2YgbWVtcyBhc3NpZ25lZCB0byB0aGF0CitjcHVzZXQuICBJZiBpdCBpcyBkdWUgdG8gYSBtZW1wb2xpY3kncyBub2RlKHMpIGJlaW5nIGV4aGF1c3RlZCwgdGhlIGFsbG93ZWQKK21lbW9yeSByZXByZXNlbnRzIHRoZSBzZXQgb2YgbWVtcG9saWN5IG5vZGVzLiAgSWYgaXQgaXMgZHVlIHRvIGEgbWVtb3J5CitsaW1pdCAob3Igc3dhcCBsaW1pdCkgYmVpbmcgcmVhY2hlZCwgdGhlIGFsbG93ZWQgbWVtb3J5IGlzIHRoYXQgY29uZmlndXJlZAorbGltaXQuICBGaW5hbGx5LCBpZiBpdCBpcyBkdWUgdG8gdGhlIGVudGlyZSBzeXN0ZW0gYmVpbmcgb3V0IG9mIG1lbW9yeSwgdGhlCithbGxvd2VkIG1lbW9yeSByZXByZXNlbnRzIGFsbCBhbGxvY2F0YWJsZSByZXNvdXJjZXMuCisKK1RoZSB2YWx1ZSBvZiAvcHJvYy88cGlkPi9vb21fc2NvcmVfYWRqIGlzIGFkZGVkIHRvIHRoZSBiYWRuZXNzIHNjb3JlIGJlZm9yZSBpdAoraXMgdXNlZCB0byBkZXRlcm1pbmUgd2hpY2ggdGFzayB0byBraWxsLiAgQWNjZXB0YWJsZSB2YWx1ZXMgcmFuZ2UgZnJvbSAtMTAwMAorKE9PTV9TQ09SRV9BREpfTUlOKSB0byArMTAwMCAoT09NX1NDT1JFX0FESl9NQVgpLiAgVGhpcyBhbGxvd3MgdXNlcnNwYWNlIHRvCitwb2xhcml6ZSB0aGUgcHJlZmVyZW5jZSBmb3Igb29tIGtpbGxpbmcgZWl0aGVyIGJ5IGFsd2F5cyBwcmVmZXJyaW5nIGEgY2VydGFpbgordGFzayBvciBjb21wbGV0ZWx5IGRpc2FibGluZyBpdC4gIFRoZSBsb3dlc3QgcG9zc2libGUgdmFsdWUsIC0xMDAwLCBpcworZXF1aXZhbGVudCB0byBkaXNhYmxpbmcgb29tIGtpbGxpbmcgZW50aXJlbHkgZm9yIHRoYXQgdGFzayBzaW5jZSBpdCB3aWxsIGFsd2F5cworcmVwb3J0IGEgYmFkbmVzcyBzY29yZSBvZiAwLgorCitDb25zZXF1ZW50bHksIGl0IGlzIHZlcnkgc2ltcGxlIGZvciB1c2Vyc3BhY2UgdG8gZGVmaW5lIHRoZSBhbW91bnQgb2YgbWVtb3J5IHRvCitjb25zaWRlciBmb3IgZWFjaCB0YXNrLiAgU2V0dGluZyBhIC9wcm9jLzxwaWQ+L29vbV9zY29yZV9hZGogdmFsdWUgb2YgKzUwMCwgZm9yCitleGFtcGxlLCBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gYWxsb3dpbmcgdGhlIHJlbWFpbmRlciBvZiB0YXNrcyBzaGFyaW5nIHRoZQorc2FtZSBzeXN0ZW0sIGNwdXNldCwgbWVtcG9saWN5LCBvciBtZW1vcnkgY29udHJvbGxlciByZXNvdXJjZXMgdG8gdXNlIGF0IGxlYXN0Cis1MCUgbW9yZSBtZW1vcnkuICBBIHZhbHVlIG9mIC01MDAsIG9uIHRoZSBvdGhlciBoYW5kLCB3b3VsZCBiZSByb3VnaGx5CitlcXVpdmFsZW50IHRvIGRpc2NvdW50aW5nIDUwJSBvZiB0aGUgdGFzaydzIGFsbG93ZWQgbWVtb3J5IGZyb20gYmVpbmcgY29uc2lkZXJlZAorYXMgc2NvcmluZyBhZ2FpbnN0IHRoZSB0YXNrLgorCitGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBrZXJuZWxzLCAvcHJvYy88cGlkPi9vb21fYWRqIG1heSBhbHNvCitiZSB1c2VkIHRvIHR1bmUgdGhlIGJhZG5lc3Mgc2NvcmUuICBJdHMgYWNjZXB0YWJsZSB2YWx1ZXMgcmFuZ2UgZnJvbSAtMTYKKyhPT01fQURKVVNUX01JTikgdG8gKzE1IChPT01fQURKVVNUX01BWCkgYW5kIGEgc3BlY2lhbCB2YWx1ZSBvZiAtMTcKKyhPT01fRElTQUJMRSkgdG8gZGlzYWJsZSBvb20ga2lsbGluZyBlbnRpcmVseSBmb3IgdGhhdCB0YXNrLiAgSXRzIHZhbHVlIGlzCitzY2FsZWQgbGluZWFybHkgd2l0aCAvcHJvYy88cGlkPi9vb21fc2NvcmVfYWRqLgorCitUaGUgdmFsdWUgb2YgL3Byb2MvPHBpZD4vb29tX3Njb3JlX2FkaiBtYXkgYmUgcmVkdWNlZCBubyBsb3dlciB0aGFuIHRoZSBsYXN0Cit2YWx1ZSBzZXQgYnkgYSBDQVBfU1lTX1JFU09VUkNFIHByb2Nlc3MuIFRvIHJlZHVjZSB0aGUgdmFsdWUgYW55IGxvd2VyCityZXF1aXJlcyBDQVBfU1lTX1JFU09VUkNFLgorCitDYXZlYXQ6IHdoZW4gYSBwYXJlbnQgdGFzayBpcyBzZWxlY3RlZCwgdGhlIG9vbSBraWxsZXIgd2lsbCBzYWNyaWZpY2UgYW55IGZpcnN0CitnZW5lcmF0aW9uIGNoaWxkcmVuIHdpdGggc2VwYXJhdGUgYWRkcmVzcyBzcGFjZXMgaW5zdGVhZCwgaWYgcG9zc2libGUuICBUaGlzCithdm9pZHMgc2VydmVycyBhbmQgaW1wb3J0YW50IHN5c3RlbSBkYWVtb25zIGZyb20gYmVpbmcga2lsbGVkIGFuZCBsb3NlcyB0aGUKK21pbmltYWwgYW1vdW50IG9mIHdvcmsuCisKKworMy4yIC9wcm9jLzxwaWQ+L29vbV9zY29yZSAtIERpc3BsYXkgY3VycmVudCBvb20ta2lsbGVyIHNjb3JlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZmlsZSBjYW4gYmUgdXNlZCB0byBjaGVjayB0aGUgY3VycmVudCBzY29yZSB1c2VkIGJ5IHRoZSBvb20ta2lsbGVyIGlzIGZvcgorYW55IGdpdmVuIDxwaWQ+LiBVc2UgaXQgdG9nZXRoZXIgd2l0aCAvcHJvYy88cGlkPi9vb21fc2NvcmVfYWRqIHRvIHR1bmUgd2hpY2gKK3Byb2Nlc3Mgc2hvdWxkIGJlIGtpbGxlZCBpbiBhbiBvdXQtb2YtbWVtb3J5IHNpdHVhdGlvbi4KKworCiszLjMgIC9wcm9jLzxwaWQ+L2lvIC0gRGlzcGxheSB0aGUgSU8gYWNjb3VudGluZyBmaWVsZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBmaWxlIGNvbnRhaW5zIElPIHN0YXRpc3RpY3MgZm9yIGVhY2ggcnVubmluZyBwcm9jZXNzCisKK0V4YW1wbGUKKy0tLS0tLS0KKwordGVzdDovdG1wICMgZGQgaWY9L2Rldi96ZXJvIG9mPS90bXAvdGVzdC5kYXQgJgorWzFdIDM4MjgKKwordGVzdDovdG1wICMgY2F0IC9wcm9jLzM4MjgvaW8KK3JjaGFyOiAzMjM5MzQ5MzEKK3djaGFyOiAzMjM5Mjk2MDAKK3N5c2NyOiA2MzI2ODcKK3N5c2N3OiA2MzI2NzUKK3JlYWRfYnl0ZXM6IDAKK3dyaXRlX2J5dGVzOiAzMjM5MzIxNjAKK2NhbmNlbGxlZF93cml0ZV9ieXRlczogMAorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCityY2hhcgorLS0tLS0KKworSS9PIGNvdW50ZXI6IGNoYXJzIHJlYWQKK1RoZSBudW1iZXIgb2YgYnl0ZXMgd2hpY2ggdGhpcyB0YXNrIGhhcyBjYXVzZWQgdG8gYmUgcmVhZCBmcm9tIHN0b3JhZ2UuIFRoaXMKK2lzIHNpbXBseSB0aGUgc3VtIG9mIGJ5dGVzIHdoaWNoIHRoaXMgcHJvY2VzcyBwYXNzZWQgdG8gcmVhZCgpIGFuZCBwcmVhZCgpLgorSXQgaW5jbHVkZXMgdGhpbmdzIGxpa2UgdHR5IElPIGFuZCBpdCBpcyB1bmFmZmVjdGVkIGJ5IHdoZXRoZXIgb3Igbm90IGFjdHVhbAorcGh5c2ljYWwgZGlzayBJTyB3YXMgcmVxdWlyZWQgKHRoZSByZWFkIG1pZ2h0IGhhdmUgYmVlbiBzYXRpc2ZpZWQgZnJvbQorcGFnZWNhY2hlKQorCisKK3djaGFyCistLS0tLQorCitJL08gY291bnRlcjogY2hhcnMgd3JpdHRlbgorVGhlIG51bWJlciBvZiBieXRlcyB3aGljaCB0aGlzIHRhc2sgaGFzIGNhdXNlZCwgb3Igc2hhbGwgY2F1c2UgdG8gYmUgd3JpdHRlbgordG8gZGlzay4gU2ltaWxhciBjYXZlYXRzIGFwcGx5IGhlcmUgYXMgd2l0aCByY2hhci4KKworCitzeXNjcgorLS0tLS0KKworSS9PIGNvdW50ZXI6IHJlYWQgc3lzY2FsbHMKK0F0dGVtcHQgdG8gY291bnQgdGhlIG51bWJlciBvZiByZWFkIEkvTyBvcGVyYXRpb25zLCBpLmUuIHN5c2NhbGxzIGxpa2UgcmVhZCgpCithbmQgcHJlYWQoKS4KKworCitzeXNjdworLS0tLS0KKworSS9PIGNvdW50ZXI6IHdyaXRlIHN5c2NhbGxzCitBdHRlbXB0IHRvIGNvdW50IHRoZSBudW1iZXIgb2Ygd3JpdGUgSS9PIG9wZXJhdGlvbnMsIGkuZS4gc3lzY2FsbHMgbGlrZQord3JpdGUoKSBhbmQgcHdyaXRlKCkuCisKKworcmVhZF9ieXRlcworLS0tLS0tLS0tLQorCitJL08gY291bnRlcjogYnl0ZXMgcmVhZAorQXR0ZW1wdCB0byBjb3VudCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdoaWNoIHRoaXMgcHJvY2VzcyByZWFsbHkgZGlkIGNhdXNlIHRvCitiZSBmZXRjaGVkIGZyb20gdGhlIHN0b3JhZ2UgbGF5ZXIuIERvbmUgYXQgdGhlIHN1Ym1pdF9iaW8oKSBsZXZlbCwgc28gaXQgaXMKK2FjY3VyYXRlIGZvciBibG9jay1iYWNrZWQgZmlsZXN5c3RlbXMuIDxwbGVhc2UgYWRkIHN0YXR1cyByZWdhcmRpbmcgTkZTIGFuZAorQ0lGUyBhdCBhIGxhdGVyIHRpbWU+CisKKword3JpdGVfYnl0ZXMKKy0tLS0tLS0tLS0tCisKK0kvTyBjb3VudGVyOiBieXRlcyB3cml0dGVuCitBdHRlbXB0IHRvIGNvdW50IHRoZSBudW1iZXIgb2YgYnl0ZXMgd2hpY2ggdGhpcyBwcm9jZXNzIGNhdXNlZCB0byBiZSBzZW50IHRvCit0aGUgc3RvcmFnZSBsYXllci4gVGhpcyBpcyBkb25lIGF0IHBhZ2UtZGlydHlpbmcgdGltZS4KKworCitjYW5jZWxsZWRfd3JpdGVfYnl0ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgYmlnIGluYWNjdXJhY3kgaGVyZSBpcyB0cnVuY2F0ZS4gSWYgYSBwcm9jZXNzIHdyaXRlcyAxTUIgdG8gYSBmaWxlIGFuZAordGhlbiBkZWxldGVzIHRoZSBmaWxlLCBpdCB3aWxsIGluIGZhY3QgcGVyZm9ybSBubyB3cml0ZW91dC4gQnV0IGl0IHdpbGwgaGF2ZQorYmVlbiBhY2NvdW50ZWQgYXMgaGF2aW5nIGNhdXNlZCAxTUIgb2Ygd3JpdGUuCitJbiBvdGhlciB3b3JkczogVGhlIG51bWJlciBvZiBieXRlcyB3aGljaCB0aGlzIHByb2Nlc3MgY2F1c2VkIHRvIG5vdCBoYXBwZW4sCitieSB0cnVuY2F0aW5nIHBhZ2VjYWNoZS4gQSB0YXNrIGNhbiBjYXVzZSAibmVnYXRpdmUiIElPIHRvby4gSWYgdGhpcyB0YXNrCit0cnVuY2F0ZXMgc29tZSBkaXJ0eSBwYWdlY2FjaGUsIHNvbWUgSU8gd2hpY2ggYW5vdGhlciB0YXNrIGhhcyBiZWVuIGFjY291bnRlZAorZm9yIChpbiBpdHMgd3JpdGVfYnl0ZXMpIHdpbGwgbm90IGJlIGhhcHBlbmluZy4gV2UgX2NvdWxkXyBqdXN0IHN1YnRyYWN0IHRoYXQKK2Zyb20gdGhlIHRydW5jYXRpbmcgdGFzaydzIHdyaXRlX2J5dGVzLCBidXQgdGhlcmUgaXMgaW5mb3JtYXRpb24gbG9zcyBpbiBkb2luZwordGhhdC4KKworCitOb3RlCistLS0tCisKK0F0IGl0cyBjdXJyZW50IGltcGxlbWVudGF0aW9uIHN0YXRlLCB0aGlzIGlzIGEgYml0IHJhY3kgb24gMzItYml0IG1hY2hpbmVzOiBpZgorcHJvY2VzcyBBIHJlYWRzIHByb2Nlc3MgQidzIC9wcm9jL3BpZC9pbyB3aGlsZSBwcm9jZXNzIEIgaXMgdXBkYXRpbmcgb25lIG9mCit0aG9zZSA2NC1iaXQgY291bnRlcnMsIHByb2Nlc3MgQSBjb3VsZCBzZWUgYW4gaW50ZXJtZWRpYXRlIHJlc3VsdC4KKworCitNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgY2FuIGJlIGZvdW5kIHdpdGhpbiB0aGUgdGFza3N0YXRzIGRvY3VtZW50YXRpb24gaW4KK0RvY3VtZW50YXRpb24vYWNjb3VudGluZy4KKworMy40IC9wcm9jLzxwaWQ+L2NvcmVkdW1wX2ZpbHRlciAtIENvcmUgZHVtcCBmaWx0ZXJpbmcgc2V0dGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorV2hlbiBhIHByb2Nlc3MgaXMgZHVtcGVkLCBhbGwgYW5vbnltb3VzIG1lbW9yeSBpcyB3cml0dGVuIHRvIGEgY29yZSBmaWxlIGFzCitsb25nIGFzIHRoZSBzaXplIG9mIHRoZSBjb3JlIGZpbGUgaXNuJ3QgbGltaXRlZC4gQnV0IHNvbWV0aW1lcyB3ZSBkb24ndCB3YW50Cit0byBkdW1wIHNvbWUgbWVtb3J5IHNlZ21lbnRzLCBmb3IgZXhhbXBsZSwgaHVnZSBzaGFyZWQgbWVtb3J5IG9yIERBWC4KK0NvbnZlcnNlbHksIHNvbWV0aW1lcyB3ZSB3YW50IHRvIHNhdmUgZmlsZS1iYWNrZWQgbWVtb3J5IHNlZ21lbnRzIGludG8gYSBjb3JlCitmaWxlLCBub3Qgb25seSB0aGUgaW5kaXZpZHVhbCBmaWxlcy4KKworL3Byb2MvPHBpZD4vY29yZWR1bXBfZmlsdGVyIGFsbG93cyB5b3UgdG8gY3VzdG9taXplIHdoaWNoIG1lbW9yeSBzZWdtZW50cword2lsbCBiZSBkdW1wZWQgd2hlbiB0aGUgPHBpZD4gcHJvY2VzcyBpcyBkdW1wZWQuIGNvcmVkdW1wX2ZpbHRlciBpcyBhIGJpdG1hc2sKK29mIG1lbW9yeSB0eXBlcy4gSWYgYSBiaXQgb2YgdGhlIGJpdG1hc2sgaXMgc2V0LCBtZW1vcnkgc2VnbWVudHMgb2YgdGhlCitjb3JyZXNwb25kaW5nIG1lbW9yeSB0eXBlIGFyZSBkdW1wZWQsIG90aGVyd2lzZSB0aGV5IGFyZSBub3QgZHVtcGVkLgorCitUaGUgZm9sbG93aW5nIDkgbWVtb3J5IHR5cGVzIGFyZSBzdXBwb3J0ZWQ6CisgIC0gKGJpdCAwKSBhbm9ueW1vdXMgcHJpdmF0ZSBtZW1vcnkKKyAgLSAoYml0IDEpIGFub255bW91cyBzaGFyZWQgbWVtb3J5CisgIC0gKGJpdCAyKSBmaWxlLWJhY2tlZCBwcml2YXRlIG1lbW9yeQorICAtIChiaXQgMykgZmlsZS1iYWNrZWQgc2hhcmVkIG1lbW9yeQorICAtIChiaXQgNCkgRUxGIGhlYWRlciBwYWdlcyBpbiBmaWxlLWJhY2tlZCBwcml2YXRlIG1lbW9yeSBhcmVhcyAoaXQgaXMKKyAgICAgICAgICAgIGVmZmVjdGl2ZSBvbmx5IGlmIHRoZSBiaXQgMiBpcyBjbGVhcmVkKQorICAtIChiaXQgNSkgaHVnZXRsYiBwcml2YXRlIG1lbW9yeQorICAtIChiaXQgNikgaHVnZXRsYiBzaGFyZWQgbWVtb3J5CisgIC0gKGJpdCA3KSBEQVggcHJpdmF0ZSBtZW1vcnkKKyAgLSAoYml0IDgpIERBWCBzaGFyZWQgbWVtb3J5CisKKyAgTm90ZSB0aGF0IE1NSU8gcGFnZXMgc3VjaCBhcyBmcmFtZSBidWZmZXIgYXJlIG5ldmVyIGR1bXBlZCBhbmQgdkRTTyBwYWdlcworICBhcmUgYWx3YXlzIGR1bXBlZCByZWdhcmRsZXNzIG9mIHRoZSBiaXRtYXNrIHN0YXR1cy4KKworICBOb3RlIHRoYXQgYml0cyAwLTQgZG9uJ3QgYWZmZWN0IGh1Z2V0bGIgb3IgREFYIG1lbW9yeS4gaHVnZXRsYiBtZW1vcnkgaXMKKyAgb25seSBhZmZlY3RlZCBieSBiaXQgNS02LCBhbmQgREFYIGlzIG9ubHkgYWZmZWN0ZWQgYnkgYml0cyA3LTguCisKK1RoZSBkZWZhdWx0IHZhbHVlIG9mIGNvcmVkdW1wX2ZpbHRlciBpcyAweDMzOyB0aGlzIG1lYW5zIGFsbCBhbm9ueW1vdXMgbWVtb3J5CitzZWdtZW50cywgRUxGIGhlYWRlciBwYWdlcyBhbmQgaHVnZXRsYiBwcml2YXRlIG1lbW9yeSBhcmUgZHVtcGVkLgorCitJZiB5b3UgZG9uJ3Qgd2FudCB0byBkdW1wIGFsbCBzaGFyZWQgbWVtb3J5IHNlZ21lbnRzIGF0dGFjaGVkIHRvIHBpZCAxMjM0LAord3JpdGUgMHgzMSB0byB0aGUgcHJvY2VzcydzIHByb2MgZmlsZS4KKworICAkIGVjaG8gMHgzMSA+IC9wcm9jLzEyMzQvY29yZWR1bXBfZmlsdGVyCisKK1doZW4gYSBuZXcgcHJvY2VzcyBpcyBjcmVhdGVkLCB0aGUgcHJvY2VzcyBpbmhlcml0cyB0aGUgYml0bWFzayBzdGF0dXMgZnJvbSBpdHMKK3BhcmVudC4gSXQgaXMgdXNlZnVsIHRvIHNldCB1cCBjb3JlZHVtcF9maWx0ZXIgYmVmb3JlIHRoZSBwcm9ncmFtIHJ1bnMuCitGb3IgZXhhbXBsZToKKworICAkIGVjaG8gMHg3ID4gL3Byb2Mvc2VsZi9jb3JlZHVtcF9maWx0ZXIKKyAgJCAuL3NvbWVfcHJvZ3JhbQorCiszLjUJL3Byb2MvPHBpZD4vbW91bnRpbmZvIC0gSW5mb3JtYXRpb24gYWJvdXQgbW91bnRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGZpbGUgY29udGFpbnMgbGluZXMgb2YgdGhlIGZvcm06CisKKzM2IDM1IDk4OjAgL21udDEgL21udDIgcncsbm9hdGltZSBtYXN0ZXI6MSAtIGV4dDMgL2Rldi9yb290IHJ3LGVycm9ycz1jb250aW51ZQorKDEpKDIpKDMpICAgKDQpICAgKDUpICAgICAgKDYpICAgICAgKDcpICAgKDgpICg5KSAgICgxMCkgICAgICAgICAoMTEpCisKKygxKSBtb3VudCBJRDogIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBtb3VudCAobWF5IGJlIHJldXNlZCBhZnRlciB1bW91bnQpCisoMikgcGFyZW50IElEOiAgSUQgb2YgcGFyZW50IChvciBvZiBzZWxmIGZvciB0aGUgdG9wIG9mIHRoZSBtb3VudCB0cmVlKQorKDMpIG1ham9yOm1pbm9yOiAgdmFsdWUgb2Ygc3RfZGV2IGZvciBmaWxlcyBvbiBmaWxlc3lzdGVtCisoNCkgcm9vdDogIHJvb3Qgb2YgdGhlIG1vdW50IHdpdGhpbiB0aGUgZmlsZXN5c3RlbQorKDUpIG1vdW50IHBvaW50OiAgbW91bnQgcG9pbnQgcmVsYXRpdmUgdG8gdGhlIHByb2Nlc3MncyByb290CisoNikgbW91bnQgb3B0aW9uczogIHBlciBtb3VudCBvcHRpb25zCisoNykgb3B0aW9uYWwgZmllbGRzOiAgemVybyBvciBtb3JlIGZpZWxkcyBvZiB0aGUgZm9ybSAidGFnWzp2YWx1ZV0iCisoOCkgc2VwYXJhdG9yOiAgbWFya3MgdGhlIGVuZCBvZiB0aGUgb3B0aW9uYWwgZmllbGRzCisoOSkgZmlsZXN5c3RlbSB0eXBlOiAgbmFtZSBvZiBmaWxlc3lzdGVtIG9mIHRoZSBmb3JtICJ0eXBlWy5zdWJ0eXBlXSIKKygxMCkgbW91bnQgc291cmNlOiAgZmlsZXN5c3RlbSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvciAibm9uZSIKKygxMSkgc3VwZXIgb3B0aW9uczogIHBlciBzdXBlciBibG9jayBvcHRpb25zCisKK1BhcnNlcnMgc2hvdWxkIGlnbm9yZSBhbGwgdW5yZWNvZ25pc2VkIG9wdGlvbmFsIGZpZWxkcy4gIEN1cnJlbnRseSB0aGUKK3Bvc3NpYmxlIG9wdGlvbmFsIGZpZWxkcyBhcmU6CisKK3NoYXJlZDpYICBtb3VudCBpcyBzaGFyZWQgaW4gcGVlciBncm91cCBYCittYXN0ZXI6WCAgbW91bnQgaXMgc2xhdmUgdG8gcGVlciBncm91cCBYCitwcm9wYWdhdGVfZnJvbTpYICBtb3VudCBpcyBzbGF2ZSBhbmQgcmVjZWl2ZXMgcHJvcGFnYXRpb24gZnJvbSBwZWVyIGdyb3VwIFggKCopCit1bmJpbmRhYmxlICBtb3VudCBpcyB1bmJpbmRhYmxlCisKKygqKSBYIGlzIHRoZSBjbG9zZXN0IGRvbWluYW50IHBlZXIgZ3JvdXAgdW5kZXIgdGhlIHByb2Nlc3MncyByb290LiAgSWYKK1ggaXMgdGhlIGltbWVkaWF0ZSBtYXN0ZXIgb2YgdGhlIG1vdW50LCBvciBpZiB0aGVyZSdzIG5vIGRvbWluYW50IHBlZXIKK2dyb3VwIHVuZGVyIHRoZSBzYW1lIHJvb3QsIHRoZW4gb25seSB0aGUgIm1hc3RlcjpYIiBmaWVsZCBpcyBwcmVzZW50CithbmQgbm90IHRoZSAicHJvcGFnYXRlX2Zyb206WCIgZmllbGQuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIG1vdW50IHByb3BhZ2F0aW9uIHNlZToKKworICBEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3NoYXJlZHN1YnRyZWUudHh0CisKKworMy42CS9wcm9jLzxwaWQ+L2NvbW0gICYgL3Byb2MvPHBpZD4vdGFzay88dGlkPi9jb21tCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlc2UgZmlsZXMgcHJvdmlkZSBhIG1ldGhvZCB0byBhY2Nlc3MgYSB0YXNrcyBjb21tIHZhbHVlLiBJdCBhbHNvIGFsbG93cyBmb3IKK2EgdGFzayB0byBzZXQgaXRzIG93biBvciBvbmUgb2YgaXRzIHRocmVhZCBzaWJsaW5ncyBjb21tIHZhbHVlLiBUaGUgY29tbSB2YWx1ZQoraXMgbGltaXRlZCBpbiBzaXplIGNvbXBhcmVkIHRvIHRoZSBjbWRsaW5lIHZhbHVlLCBzbyB3cml0aW5nIGFueXRoaW5nIGxvbmdlcgordGhlbiB0aGUga2VybmVsJ3MgVEFTS19DT01NX0xFTiAoY3VycmVudGx5IDE2IGNoYXJzKSB3aWxsIHJlc3VsdCBpbiBhIHRydW5jYXRlZAorY29tbSB2YWx1ZS4KKworCiszLjcJL3Byb2MvPHBpZD4vdGFzay88dGlkPi9jaGlsZHJlbiAtIEluZm9ybWF0aW9uIGFib3V0IHRhc2sgY2hpbGRyZW4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgZmlsZSBwcm92aWRlcyBhIGZhc3Qgd2F5IHRvIHJldHJpZXZlIGZpcnN0IGxldmVsIGNoaWxkcmVuIHBpZHMKK29mIGEgdGFzayBwb2ludGVkIGJ5IDxwaWQ+Lzx0aWQ+IHBhaXIuIFRoZSBmb3JtYXQgaXMgYSBzcGFjZSBzZXBhcmF0ZWQKK3N0cmVhbSBvZiBwaWRzLgorCitOb3RlIHRoZSAiZmlyc3QgbGV2ZWwiIGhlcmUgLS0gaWYgYSBjaGlsZCBoYXMgb3duIGNoaWxkcmVuIHRoZXkgd2lsbAorbm90IGJlIGxpc3RlZCBoZXJlLCBvbmUgbmVlZHMgdG8gcmVhZCAvcHJvYy88Y2hpbGRyZW4tcGlkPi90YXNrLzx0aWQ+L2NoaWxkcmVuCit0byBvYnRhaW4gdGhlIGRlc2NlbmRhbnRzLgorCitTaW5jZSB0aGlzIGludGVyZmFjZSBpcyBpbnRlbmRlZCB0byBiZSBmYXN0IGFuZCBjaGVhcCBpdCBkb2Vzbid0CitndWFyYW50ZWUgdG8gcHJvdmlkZSBwcmVjaXNlIHJlc3VsdHMgYW5kIHNvbWUgY2hpbGRyZW4gbWlnaHQgYmUKK3NraXBwZWQsIGVzcGVjaWFsbHkgaWYgdGhleSd2ZSBleGl0ZWQgcmlnaHQgYWZ0ZXIgd2UgcHJpbnRlZCB0aGVpcgorcGlkcywgc28gb25lIG5lZWQgdG8gZWl0aGVyIHN0b3Agb3IgZnJlZXplIHByb2Nlc3NlcyBiZWluZyBpbnNwZWN0ZWQKK2lmIHByZWNpc2UgcmVzdWx0cyBhcmUgbmVlZGVkLgorCisKKzMuOAkvcHJvYy88cGlkPi9mZGluZm8vPGZkPiAtIEluZm9ybWF0aW9uIGFib3V0IG9wZW5lZCBmaWxlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgZmlsZSBwcm92aWRlcyBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggYW4gb3BlbmVkIGZpbGUuIFRoZSByZWd1bGFyCitmaWxlcyBoYXZlIGF0IGxlYXN0IHRocmVlIGZpZWxkcyAtLSAncG9zJywgJ2ZsYWdzJyBhbmQgbW50X2lkLiBUaGUgJ3BvcycKK3JlcHJlc2VudHMgdGhlIGN1cnJlbnQgb2Zmc2V0IG9mIHRoZSBvcGVuZWQgZmlsZSBpbiBkZWNpbWFsIGZvcm0gW3NlZSBsc2VlaygyKQorZm9yIGRldGFpbHNdLCAnZmxhZ3MnIGRlbm90ZXMgdGhlIG9jdGFsIE9feHh4IG1hc2sgdGhlIGZpbGUgaGFzIGJlZW4KK2NyZWF0ZWQgd2l0aCBbc2VlIG9wZW4oMikgZm9yIGRldGFpbHNdIGFuZCAnbW50X2lkJyByZXByZXNlbnRzIG1vdW50IElEIG9mCit0aGUgZmlsZSBzeXN0ZW0gY29udGFpbmluZyB0aGUgb3BlbmVkIGZpbGUgW3NlZSAzLjUgL3Byb2MvPHBpZD4vbW91bnRpbmZvCitmb3IgZGV0YWlsc10uCisKK0EgdHlwaWNhbCBvdXRwdXQgaXMKKworCXBvczoJMAorCWZsYWdzOgkwMTAwMDAyCisJbW50X2lkOgkxOQorCitBbGwgbG9ja3MgYXNzb2NpYXRlZCB3aXRoIGEgZmlsZSBkZXNjcmlwdG9yIGFyZSBzaG93biBpbiBpdHMgZmRpbmZvIHRvby4KKworbG9jazogICAgICAgMTogRkxPQ0sgIEFEVklTT1JZICBXUklURSAzNTkgMDA6MTM6MTE2OTEgMCBFT0YKKworVGhlIGZpbGVzIHN1Y2ggYXMgZXZlbnRmZCwgZnNub3RpZnksIHNpZ25hbGZkLCBlcG9sbCBhbW9uZyB0aGUgcmVndWxhciBwb3MvZmxhZ3MKK3BhaXIgcHJvdmlkZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHBhcnRpY3VsYXIgdG8gdGhlIG9iamVjdHMgdGhleSByZXByZXNlbnQuCisKKwlFdmVudGZkIGZpbGVzCisJfn5+fn5+fn5+fn5+fgorCXBvczoJMAorCWZsYWdzOgkwNDAwMgorCW1udF9pZDoJOQorCWV2ZW50ZmQtY291bnQ6CTVhCisKKwl3aGVyZSAnZXZlbnRmZC1jb3VudCcgaXMgaGV4IHZhbHVlIG9mIGEgY291bnRlci4KKworCVNpZ25hbGZkIGZpbGVzCisJfn5+fn5+fn5+fn5+fn4KKwlwb3M6CTAKKwlmbGFnczoJMDQwMDIKKwltbnRfaWQ6CTkKKwlzaWdtYXNrOgkwMDAwMDAwMDAwMDAwMjAwCisKKwl3aGVyZSAnc2lnbWFzaycgaXMgaGV4IHZhbHVlIG9mIHRoZSBzaWduYWwgbWFzayBhc3NvY2lhdGVkCisJd2l0aCBhIGZpbGUuCisKKwlFcG9sbCBmaWxlcworCX5+fn5+fn5+fn5+CisJcG9zOgkwCisJZmxhZ3M6CTAyCisJbW50X2lkOgk5CisJdGZkOiAgICAgICAgNSBldmVudHM6ICAgICAgIDFkIGRhdGE6IGZmZmZmZmZmZmZmZmZmZmYKKworCXdoZXJlICd0ZmQnIGlzIGEgdGFyZ2V0IGZpbGUgZGVzY3JpcHRvciBudW1iZXIgaW4gZGVjaW1hbCBmb3JtLAorCSdldmVudHMnIGlzIGV2ZW50cyBtYXNrIGJlaW5nIHdhdGNoZWQgYW5kIHRoZSAnZGF0YScgaXMgZGF0YQorCWFzc29jaWF0ZWQgd2l0aCBhIHRhcmdldCBbc2VlIGVwb2xsKDcpIGZvciBtb3JlIGRldGFpbHNdLgorCisJRnNub3RpZnkgZmlsZXMKKwl+fn5+fn5+fn5+fn5+fgorCUZvciBpbm90aWZ5IGZpbGVzIHRoZSBmb3JtYXQgaXMgdGhlIGZvbGxvd2luZworCisJcG9zOgkwCisJZmxhZ3M6CTAyMDAwMDAwCisJaW5vdGlmeSB3ZDozIGlubzo5ZTdlIHNkZXY6ODAwMDEzIG1hc2s6ODAwYWZjZSBpZ25vcmVkX21hc2s6MCBmaGFuZGxlLWJ5dGVzOjggZmhhbmRsZS10eXBlOjEgZl9oYW5kbGU6N2U5ZTAwMDA2NDBkMWI2ZAorCisJd2hlcmUgJ3dkJyBpcyBhIHdhdGNoIGRlc2NyaXB0b3IgaW4gZGVjaW1hbCBmb3JtLCBpZSBhIHRhcmdldCBmaWxlCisJZGVzY3JpcHRvciBudW1iZXIsICdpbm8nIGFuZCAnc2RldicgYXJlIGlub2RlIGFuZCBkZXZpY2Ugd2hlcmUgdGhlCisJdGFyZ2V0IGZpbGUgcmVzaWRlcyBhbmQgdGhlICdtYXNrJyBpcyB0aGUgbWFzayBvZiBldmVudHMsIGFsbCBpbiBoZXgKKwlmb3JtIFtzZWUgaW5vdGlmeSg3KSBmb3IgbW9yZSBkZXRhaWxzXS4KKworCUlmIHRoZSBrZXJuZWwgd2FzIGJ1aWx0IHdpdGggZXhwb3J0ZnMgc3VwcG9ydCwgdGhlIHBhdGggdG8gdGhlIHRhcmdldAorCWZpbGUgaXMgZW5jb2RlZCBhcyBhIGZpbGUgaGFuZGxlLiAgVGhlIGZpbGUgaGFuZGxlIGlzIHByb3ZpZGVkIGJ5IHRocmVlCisJZmllbGRzICdmaGFuZGxlLWJ5dGVzJywgJ2ZoYW5kbGUtdHlwZScgYW5kICdmX2hhbmRsZScsIGFsbCBpbiBoZXgKKwlmb3JtYXQuCisKKwlJZiB0aGUga2VybmVsIGlzIGJ1aWx0IHdpdGhvdXQgZXhwb3J0ZnMgc3VwcG9ydCB0aGUgZmlsZSBoYW5kbGUgd29uJ3QgYmUKKwlwcmludGVkIG91dC4KKworCUlmIHRoZXJlIGlzIG5vIGlub3RpZnkgbWFyayBhdHRhY2hlZCB5ZXQgdGhlICdpbm90aWZ5JyBsaW5lIHdpbGwgYmUgb21pdHRlZC4KKworCUZvciBmYW5vdGlmeSBmaWxlcyB0aGUgZm9ybWF0IGlzCisKKwlwb3M6CTAKKwlmbGFnczoJMDIKKwltbnRfaWQ6CTkKKwlmYW5vdGlmeSBmbGFnczoxMCBldmVudC1mbGFnczowCisJZmFub3RpZnkgbW50X2lkOjEyIG1mbGFnczo0MCBtYXNrOjM4IGlnbm9yZWRfbWFzazo0MDAwMDAwMworCWZhbm90aWZ5IGlubzo0Zjk2OSBzZGV2OjgwMDAxMyBtZmxhZ3M6MCBtYXNrOjNiIGlnbm9yZWRfbWFzazo0MDAwMDAwMCBmaGFuZGxlLWJ5dGVzOjggZmhhbmRsZS10eXBlOjEgZl9oYW5kbGU6NjlmOTA0MDBjMjc1YjViNAorCisJd2hlcmUgZmFub3RpZnkgJ2ZsYWdzJyBhbmQgJ2V2ZW50LWZsYWdzJyBhcmUgdmFsdWVzIHVzZWQgaW4gZmFub3RpZnlfaW5pdAorCWNhbGwsICdtbnRfaWQnIGlzIHRoZSBtb3VudCBwb2ludCBpZGVudGlmaWVyLCAnbWZsYWdzJyBpcyB0aGUgdmFsdWUgb2YKKwlmbGFncyBhc3NvY2lhdGVkIHdpdGggbWFyayB3aGljaCBhcmUgdHJhY2tlZCBzZXBhcmF0ZWx5IGZyb20gZXZlbnRzCisJbWFzay4gJ2lubycsICdzZGV2JyBhcmUgdGFyZ2V0IGlub2RlIGFuZCBkZXZpY2UsICdtYXNrJyBpcyB0aGUgZXZlbnRzCisJbWFzayBhbmQgJ2lnbm9yZWRfbWFzaycgaXMgdGhlIG1hc2sgb2YgZXZlbnRzIHdoaWNoIGFyZSB0byBiZSBpZ25vcmVkLgorCUFsbCBpbiBoZXggZm9ybWF0LiBJbmNvcnBvcmF0aW9uIG9mICdtZmxhZ3MnLCAnbWFzaycgYW5kICdpZ25vcmVkX21hc2snCisJZG9lcyBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IGZsYWdzIGFuZCBtYXNrIHVzZWQgaW4gZmFub3RpZnlfbWFyaworCWNhbGwgW3NlZSBmc25vdGlmeSBtYW5wYWdlIGZvciBkZXRhaWxzXS4KKworCVdoaWxlIHRoZSBmaXJzdCB0aHJlZSBsaW5lcyBhcmUgbWFuZGF0b3J5IGFuZCBhbHdheXMgcHJpbnRlZCwgdGhlIHJlc3QgaXMKKwlvcHRpb25hbCBhbmQgbWF5IGJlIG9taXR0ZWQgaWYgbm8gbWFya3MgY3JlYXRlZCB5ZXQuCisKKwlUaW1lcmZkIGZpbGVzCisJfn5+fn5+fn5+fn5+fgorCisJcG9zOgkwCisJZmxhZ3M6CTAyCisJbW50X2lkOgk5CisJY2xvY2tpZDogMAorCXRpY2tzOiAwCisJc2V0dGltZSBmbGFnczogMDEKKwlpdF92YWx1ZTogKDAsIDQ5NDA2ODI5KQorCWl0X2ludGVydmFsOiAoMSwgMCkKKworCXdoZXJlICdjbG9ja2lkJyBpcyB0aGUgY2xvY2sgdHlwZSBhbmQgJ3RpY2tzJyBpcyB0aGUgbnVtYmVyIG9mIHRoZSB0aW1lciBleHBpcmF0aW9ucworCXRoYXQgaGF2ZSBvY2N1cnJlZCBbc2VlIHRpbWVyZmRfY3JlYXRlKDIpIGZvciBkZXRhaWxzXS4gJ3NldHRpbWUgZmxhZ3MnIGFyZQorCWZsYWdzIGluIG9jdGFsIGZvcm0gYmVlbiB1c2VkIHRvIHNldHVwIHRoZSB0aW1lciBbc2VlIHRpbWVyZmRfc2V0dGltZSgyKSBmb3IKKwlkZXRhaWxzXS4gJ2l0X3ZhbHVlJyBpcyByZW1haW5pbmcgdGltZSB1bnRpbCB0aGUgdGltZXIgZXhpcmF0aW9uLgorCSdpdF9pbnRlcnZhbCcgaXMgdGhlIGludGVydmFsIGZvciB0aGUgdGltZXIuIE5vdGUgdGhlIHRpbWVyIG1pZ2h0IGJlIHNldCB1cAorCXdpdGggVElNRVJfQUJTVElNRSBvcHRpb24gd2hpY2ggd2lsbCBiZSBzaG93biBpbiAnc2V0dGltZSBmbGFncycsIGJ1dCAnaXRfdmFsdWUnCisJc3RpbGwgZXhoaWJpdHMgdGltZXIncyByZW1haW5pbmcgdGltZS4KKworMy45CS9wcm9jLzxwaWQ+L21hcF9maWxlcyAtIEluZm9ybWF0aW9uIGFib3V0IG1lbW9yeSBtYXBwZWQgZmlsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgc3ltYm9saWMgbGlua3Mgd2hpY2ggcmVwcmVzZW50IG1lbW9yeSBtYXBwZWQgZmlsZXMKK3RoZSBwcm9jZXNzIGlzIG1haW50YWluaW5nLiAgRXhhbXBsZSBvdXRwdXQ6CisKKyAgICAgfCBsci0tLS0tLS0tIDEgcm9vdCByb290IDY0IEphbiAyNyAxMToyNCAzMzNjNjAwMDAwLTMzM2M2MjAwMDAgLT4gL3Vzci9saWI2NC9sZC0yLjE4LnNvCisgICAgIHwgbHItLS0tLS0tLSAxIHJvb3Qgcm9vdCA2NCBKYW4gMjcgMTE6MjQgMzMzYzgxZjAwMC0zMzNjODIwMDAwIC0+IC91c3IvbGliNjQvbGQtMi4xOC5zbworICAgICB8IGxyLS0tLS0tLS0gMSByb290IHJvb3QgNjQgSmFuIDI3IDExOjI0IDMzM2M4MjAwMDAtMzMzYzgyMTAwMCAtPiAvdXNyL2xpYjY0L2xkLTIuMTguc28KKyAgICAgfCAuLi4KKyAgICAgfCBsci0tLS0tLS0tIDEgcm9vdCByb290IDY0IEphbiAyNyAxMToyNCAzNWQwNDIxMDAwLTM1ZDA0MjIwMDAgLT4gL3Vzci9saWI2NC9saWJzZWxpbnV4LnNvLjEKKyAgICAgfCBsci0tLS0tLS0tIDEgcm9vdCByb290IDY0IEphbiAyNyAxMToyNCA0MDAwMDAtNDFhMDAwIC0+IC91c3IvYmluL2xzCisKK1RoZSBuYW1lIG9mIGEgbGluayByZXByZXNlbnRzIHRoZSB2aXJ0dWFsIG1lbW9yeSBib3VuZHMgb2YgYSBtYXBwaW5nLCBpLmUuCit2bV9hcmVhX3N0cnVjdDo6dm1fc3RhcnQtdm1fYXJlYV9zdHJ1Y3Q6OnZtX2VuZC4KKworVGhlIG1haW4gcHVycG9zZSBvZiB0aGUgbWFwX2ZpbGVzIGlzIHRvIHJldHJpZXZlIGEgc2V0IG9mIG1lbW9yeSBtYXBwZWQKK2ZpbGVzIGluIGEgZmFzdCB3YXkgaW5zdGVhZCBvZiBwYXJzaW5nIC9wcm9jLzxwaWQ+L21hcHMgb3IKKy9wcm9jLzxwaWQ+L3NtYXBzLCBib3RoIG9mIHdoaWNoIGNvbnRhaW4gbWFueSBtb3JlIHJlY29yZHMuICBBdCB0aGUgc2FtZQordGltZSBvbmUgY2FuIG9wZW4oMikgbWFwcGluZ3MgZnJvbSB0aGUgbGlzdGluZ3Mgb2YgdHdvIHByb2Nlc3NlcyBhbmQKK2NvbXBhcmluZyB0aGVpciBpbm9kZSBudW1iZXJzIHRvIGZpZ3VyZSBvdXQgd2hpY2ggYW5vbnltb3VzIG1lbW9yeSBhcmVhcworYXJlIGFjdHVhbGx5IHNoYXJlZC4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDb25maWd1cmluZyBwcm9jZnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis0LjEJTW91bnQgb3B0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBmb2xsb3dpbmcgbW91bnQgb3B0aW9ucyBhcmUgc3VwcG9ydGVkOgorCisJaGlkZXBpZD0JU2V0IC9wcm9jLzxwaWQ+LyBhY2Nlc3MgbW9kZS4KKwlnaWQ9CQlTZXQgdGhlIGdyb3VwIGF1dGhvcml6ZWQgdG8gbGVhcm4gcHJvY2Vzc2VzIGluZm9ybWF0aW9uLgorCitoaWRlcGlkPTAgbWVhbnMgY2xhc3NpYyBtb2RlIC0gZXZlcnlib2R5IG1heSBhY2Nlc3MgYWxsIC9wcm9jLzxwaWQ+LyBkaXJlY3RvcmllcworKGRlZmF1bHQpLgorCitoaWRlcGlkPTEgbWVhbnMgdXNlcnMgbWF5IG5vdCBhY2Nlc3MgYW55IC9wcm9jLzxwaWQ+LyBkaXJlY3RvcmllcyBidXQgdGhlaXIKK293bi4gIFNlbnNpdGl2ZSBmaWxlcyBsaWtlIGNtZGxpbmUsIHNjaGVkKiwgc3RhdHVzIGFyZSBub3cgcHJvdGVjdGVkIGFnYWluc3QKK290aGVyIHVzZXJzLiAgVGhpcyBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIGxlYXJuIHdoZXRoZXIgYW55IHVzZXIgcnVucworc3BlY2lmaWMgcHJvZ3JhbSAoZ2l2ZW4gdGhlIHByb2dyYW0gZG9lc24ndCByZXZlYWwgaXRzZWxmIGJ5IGl0cyBiZWhhdmlvdXIpLgorQXMgYW4gYWRkaXRpb25hbCBib251cywgYXMgL3Byb2MvPHBpZD4vY21kbGluZSBpcyB1bmFjY2Vzc2libGUgZm9yIG90aGVyIHVzZXJzLAorcG9vcmx5IHdyaXR0ZW4gcHJvZ3JhbXMgcGFzc2luZyBzZW5zaXRpdmUgaW5mb3JtYXRpb24gdmlhIHByb2dyYW0gYXJndW1lbnRzIGFyZQorbm93IHByb3RlY3RlZCBhZ2FpbnN0IGxvY2FsIGVhdmVzZHJvcHBlcnMuCisKK2hpZGVwaWQ9MiBtZWFucyBoaWRlcGlkPTEgcGx1cyBhbGwgL3Byb2MvPHBpZD4vIHdpbGwgYmUgZnVsbHkgaW52aXNpYmxlIHRvIG90aGVyCit1c2Vycy4gIEl0IGRvZXNuJ3QgbWVhbiB0aGF0IGl0IGhpZGVzIGEgZmFjdCB3aGV0aGVyIGEgcHJvY2VzcyB3aXRoIGEgc3BlY2lmaWMKK3BpZCB2YWx1ZSBleGlzdHMgKGl0IGNhbiBiZSBsZWFybmVkIGJ5IG90aGVyIG1lYW5zLCBlLmcuIGJ5ICJraWxsIC0wICRQSUQiKSwKK2J1dCBpdCBoaWRlcyBwcm9jZXNzJyB1aWQgYW5kIGdpZCwgd2hpY2ggbWF5IGJlIGxlYXJuZWQgYnkgc3RhdCgpJ2luZworL3Byb2MvPHBpZD4vIG90aGVyd2lzZS4gIEl0IGdyZWF0bHkgY29tcGxpY2F0ZXMgYW4gaW50cnVkZXIncyB0YXNrIG9mIGdhdGhlcmluZworaW5mb3JtYXRpb24gYWJvdXQgcnVubmluZyBwcm9jZXNzZXMsIHdoZXRoZXIgc29tZSBkYWVtb24gcnVucyB3aXRoIGVsZXZhdGVkCitwcml2aWxlZ2VzLCB3aGV0aGVyIG90aGVyIHVzZXIgcnVucyBzb21lIHNlbnNpdGl2ZSBwcm9ncmFtLCB3aGV0aGVyIG90aGVyIHVzZXJzCitydW4gYW55IHByb2dyYW0gYXQgYWxsLCBldGMuCisKK2dpZD0gZGVmaW5lcyBhIGdyb3VwIGF1dGhvcml6ZWQgdG8gbGVhcm4gcHJvY2Vzc2VzIGluZm9ybWF0aW9uIG90aGVyd2lzZQorcHJvaGliaXRlZCBieSBoaWRlcGlkPS4gIElmIHlvdSB1c2Ugc29tZSBkYWVtb24gbGlrZSBpZGVudGQgd2hpY2ggbmVlZHMgdG8gbGVhcm4KK2luZm9ybWF0aW9uIGFib3V0IHByb2Nlc3NlcyBpbmZvcm1hdGlvbiwganVzdCBhZGQgaWRlbnRkIHRvIHRoaXMgZ3JvdXAuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3FueDYudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9xbng2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDg2Nzk3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9xbng2LnR4dApAQCAtMCwwICsxLDE3NCBAQAorVGhlIFFOWDYgRmlsZXN5c3RlbQorPT09PT09PT09PT09PT09PT09PQorCitUaGUgcW54NmZzIGlzIHVzZWQgYnkgbmV3ZXIgUU5YIG9wZXJhdGluZyBzeXN0ZW0gdmVyc2lvbnMuIChlLmcuIE5ldXRyaW5vKQorSXQgZ290IGludHJvZHVjZWQgaW4gUU5YIDYuNC4wIGFuZCBpcyB1c2VkIGRlZmF1bHQgc2luY2UgNi40LjEuCisKK09wdGlvbgorPT09PT09CisKK21taV9mcwkJTW91bnQgZmlsZXN5c3RlbSBhcyB1c2VkIGZvciBleGFtcGxlIGJ5IEF1ZGkgTU1JIDNHIHN5c3RlbQorCitTcGVjaWZpY2F0aW9uCis9PT09PT09PT09PT09CisKK3FueDZmcyBzaGFyZXMgbWFueSBwcm9wZXJ0aWVzIHdpdGggdHJhZGl0aW9uYWwgVW5peCBmaWxlc3lzdGVtcy4gSXQgaGFzIHRoZQorY29uY2VwdHMgb2YgYmxvY2tzLCBpbm9kZXMgYW5kIGRpcmVjdG9yaWVzLgorT24gUU5YIGl0IGlzIHBvc3NpYmxlIHRvIGNyZWF0ZSBsaXR0bGUgZW5kaWFuIGFuZCBiaWcgZW5kaWFuIHFueDYgZmlsZXN5c3RlbXMuCitUaGlzIGZlYXR1cmUgbWFrZXMgaXQgcG9zc2libGUgdG8gY3JlYXRlIGFuZCB1c2UgYSBkaWZmZXJlbnQgZW5kaWFubmVzcyBmcworZm9yIHRoZSB0YXJnZXQgKFFOWCBpcyB1c2VkIG9uIHF1aXRlIGEgcmFuZ2Ugb2YgZW1iZWRkZWQgc3lzdGVtcykgcGxhdHRmb3JtCitydW5uaW5nIG9uIGEgZGlmZmVyZW50IGVuZGlhbm5lc3MuCitUaGUgTGludXggZHJpdmVyIGhhbmRsZXMgZW5kaWFubmVzcyB0cmFuc3BhcmVudGx5LiAoTEUgYW5kIEJFKQorCitCbG9ja3MKKy0tLS0tLQorCitUaGUgc3BhY2UgaW4gdGhlIGRldmljZSBvciBmaWxlIGlzIHNwbGl0IHVwIGludG8gYmxvY2tzLiBUaGVzZSBhcmUgYSBmaXhlZAorc2l6ZSBvZiA1MTIsIDEwMjQsIDIwNDggb3IgNDA5Niwgd2hpY2ggaXMgZGVjaWRlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzCitjcmVhdGVkLgorQmxvY2twb2ludGVycyBhcmUgMzJiaXQsIHNvIHRoZSBtYXhpbXVtIHNwYWNlIHRoYXQgY2FuIGJlIGFkZHJlc3NlZCBpcworMl4zMiAqIDQwOTYgYnl0ZXMgb3IgMTZUQgorCitUaGUgc3VwZXJibG9ja3MKKy0tLS0tLS0tLS0tLS0tLQorCitUaGUgc3VwZXJibG9jayBjb250YWlucyBhbGwgZ2xvYmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmaWxlc3lzdGVtLgorRWFjaCBxbng2ZnMgZ290IHR3byBzdXBlcmJsb2NrcywgZWFjaCBvbmUgaGF2aW5nIGEgNjRiaXQgc2VyaWFsIG51bWJlci4KK1RoYXQgc2VyaWFsIG51bWJlciBpcyB1c2VkIHRvIGlkZW50aWZ5IHRoZSAiYWN0aXZlIiBzdXBlcmJsb2NrLgorSW4gd3JpdGUgbW9kZSB3aXRoIHJlYWNoIG5ldyBzbmFwc2hvdCAoYWZ0ZXIgZWFjaCBzeW5jaHJvbm91cyB3cml0ZSksIHRoZQorc2VyaWFsIG9mIHRoZSBuZXcgbWFzdGVyIHN1cGVyYmxvY2sgaXMgaW5jcmVhc2VkIChvbGQgc3VwZXJibG9jayBzZXJpYWwgKyAxKQorCitTbyBiYXNpY2FsbHkgdGhlIHNuYXBzaG90IGZ1bmN0aW9uYWxpdHkgaXMgcmVhbGl6ZWQgYnkgYW4gYXRvbWljIGZpbmFsCit1cGRhdGUgb2YgdGhlIHNlcmlhbCBudW1iZXIuIEJlZm9yZSB1cGRhdGluZyB0aGF0IHNlcmlhbCwgYWxsIG1vZGlmaWNhdGlvbnMKK2FyZSBkb25lIGJ5IGNvcHlpbmcgYWxsIG1vZGlmaWVkIGJsb2NrcyBkdXJpbmcgdGhhdCBzcGVjaWZpYyB3cml0ZSByZXF1ZXN0Cisob3IgcGVyaW9kKSBhbmQgYnVpbGRpbmcgdXAgYSBuZXcgKHN0YWJsZSkgZmlsZXN5c3RlbSBzdHJ1Y3R1cmUgdW5kZXIgdGhlCitpbmFjdGl2ZSBzdXBlcmJsb2NrLgorCitFYWNoIHN1cGVyYmxvY2sgaG9sZHMgYSBzZXQgb2Ygcm9vdCBpbm9kZXMgZm9yIHRoZSBkaWZmZXJlbnQgZmlsZXN5c3RlbQorcGFydHMuIChJbm9kZSwgQml0bWFwIGFuZCBMb25nZmlsZW5hbWVzKQorRWFjaCBvZiB0aGVzZSByb290IG5vZGVzIGhvbGRzIGluZm9ybWF0aW9uIGxpa2UgdG90YWwgc2l6ZSBvZiB0aGUgc3RvcmVkCitkYXRhIGFuZCB0aGUgYWRkcmVzc2luZyBsZXZlbHMgaW4gdGhhdCBzcGVjaWZpYyB0cmVlLgorSWYgdGhlIGxldmVsIHZhbHVlIGlzIDAsIHVwIHRvIDE2IGRpcmVjdCBibG9ja3MgY2FuIGJlIGFkZHJlc3NlZCBieSBlYWNoCitub2RlLgorTGV2ZWwgMSBhZGRzIGFuIGFkZGl0aW9uYWwgaW5kaXJlY3QgYWRkcmVzc2luZyBsZXZlbCB3aGVyZSBlYWNoIGluZGlyZWN0CithZGRyZXNzaW5nIGJsb2NrIGhvbGRzIHVwIHRvIGJsb2Nrc2l6ZSAvIDQgYnl0ZXMgcG9pbnRlcnMgdG8gZGF0YSBibG9ja3MuCitMZXZlbCAyIGFkZHMgYW4gYWRkaXRpb25hbCBpbmRpcmVjdCBhZGRyZXNzaW5nIGJsb2NrIGxldmVsIChzbywgYWxyZWFkeSB1cAordG8gMTYgKiAyNTYgKiAyNTYgPSAxMDQ4NTc2IGJsb2NrcyB0aGF0IGNhbiBiZSBhZGRyZXNzZWQgYnkgc3VjaCBhIHRyZWUpLgorCitVbnVzZWQgYmxvY2sgcG9pbnRlcnMgYXJlIGFsd2F5cyBzZXQgdG8gfjAgLSByZWdhcmRsZXNzIG9mIHJvb3Qgbm9kZSwKK2luZGlyZWN0IGFkZHJlc3NpbmcgYmxvY2tzIG9yIGlub2Rlcy4KK0RhdGEgbGVhdmVzIGFyZSBhbHdheXMgb24gdGhlIGxvd2VzdCBsZXZlbC4gU28gbm8gZGF0YSBpcyBzdG9yZWQgb24gdXBwZXIKK3RyZWUgbGV2ZWxzLgorCitUaGUgZmlyc3QgU3VwZXJibG9jayBpcyBsb2NhdGVkIGF0IDB4MjAwMC4gKDB4MjAwMCBpcyB0aGUgYm9vdGJsb2NrIHNpemUpCitUaGUgQXVkaSBNTUkgM0cgZmlyc3Qgc3VwZXJibG9jayBkaXJlY3RseSBzdGFydHMgYXQgYnl0ZSAwLgorU2Vjb25kIHN1cGVyYmxvY2sgcG9zaXRpb24gY2FuIGVpdGhlciBiZSBjYWxjdWxhdGVkIGZyb20gdGhlIHN1cGVyYmxvY2sKK2luZm9ybWF0aW9uICh0b3RhbCBudW1iZXIgb2YgZmlsZXN5c3RlbSBibG9ja3MpIG9yIGJ5IHRha2luZyB0aGUgaGlnaGVzdAorZGV2aWNlIGFkZHJlc3MsIHplcm9pbmcgdGhlIGxhc3QgMyBieXRlcyBhbmQgdGhlbiBzdWJ0cmFjdGluZyAweDEwMDAgZnJvbQordGhhdCBhZGRyZXNzLgorCisweDEwMDAgaXMgdGhlIHNpemUgcmVzZXJ2ZWQgZm9yIGVhY2ggc3VwZXJibG9jayAtIHJlZ2FyZGxlc3Mgb2YgdGhlCitibG9ja3NpemUgb2YgdGhlIGZpbGVzeXN0ZW0uCisKK0lub2RlcworLS0tLS0tCisKK0VhY2ggb2JqZWN0IGluIHRoZSBmaWxlc3lzdGVtIGlzIHJlcHJlc2VudGVkIGJ5IGFuIGlub2RlLiAoaW5kZXggbm9kZSkKK1RoZSBpbm9kZSBzdHJ1Y3R1cmUgY29udGFpbnMgcG9pbnRlcnMgdG8gdGhlIGZpbGVzeXN0ZW0gYmxvY2tzIHdoaWNoIGNvbnRhaW4KK3RoZSBkYXRhIGhlbGQgaW4gdGhlIG9iamVjdCBhbmQgYWxsIG9mIHRoZSBtZXRhZGF0YSBhYm91dCBhbiBvYmplY3QgZXhjZXB0CitpdHMgbG9uZ25hbWUuIChmaWxlbmFtZXMgbG9uZ2VyIHRoYW4gMjcgY2hhcmFjdGVycykKK1RoZSBtZXRhZGF0YSBhYm91dCBhbiBvYmplY3QgaW5jbHVkZXMgdGhlIHBlcm1pc3Npb25zLCBvd25lciwgZ3JvdXAsIGZsYWdzLAorc2l6ZSwgbnVtYmVyIG9mIGJsb2NrcyB1c2VkLCBhY2Nlc3MgdGltZSwgY2hhbmdlIHRpbWUgYW5kIG1vZGlmaWNhdGlvbiB0aW1lLgorCitPYmplY3QgbW9kZSBmaWVsZCBpcyBQT1NJWCBmb3JtYXQuICh3aGljaCBtYWtlcyB0aGluZ3MgZWFzaWVyKQorCitUaGVyZSBhcmUgYWxzbyBwb2ludGVycyB0byB0aGUgZmlyc3QgMTYgYmxvY2tzLCBpZiB0aGUgb2JqZWN0IGRhdGEgY2FuIGJlCithZGRyZXNzZWQgd2l0aCAxNiBkaXJlY3QgYmxvY2tzLgorRm9yIG1vcmUgdGhhbiAxNiBibG9ja3MgYW4gaW5kaXJlY3QgYWRkcmVzc2luZyBpbiBmb3JtIG9mIGFub3RoZXIgdHJlZSBpcwordXNlZC4gKHNjaGVtZSBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHVzZWQgZm9yIHRoZSBzdXBlcmJsb2NrIHJvb3Qgbm9kZXMpCisKK1RoZSBmaWxlc2l6ZSBpcyBzdG9yZWQgNjRiaXQuIElub2RlIGNvdW50aW5nIHN0YXJ0cyB3aXRoIDEuICh3aGlsc3QgbG9uZworZmlsZW5hbWUgaW5vZGVzIHN0YXJ0IHdpdGggMCkKKworRGlyZWN0b3JpZXMKKy0tLS0tLS0tLS0tCisKK0EgZGlyZWN0b3J5IGlzIGEgZmlsZXN5c3RlbSBvYmplY3QgYW5kIGhhcyBhbiBpbm9kZSBqdXN0IGxpa2UgYSBmaWxlLgorSXQgaXMgYSBzcGVjaWFsbHkgZm9ybWF0dGVkIGZpbGUgY29udGFpbmluZyByZWNvcmRzIHdoaWNoIGFzc29jaWF0ZSBlYWNoCituYW1lIHdpdGggYW4gaW5vZGUgbnVtYmVyLgorJy4nIGlub2RlIG51bWJlciBwb2ludHMgdG8gdGhlIGRpcmVjdG9yeSBpbm9kZQorJy4uJyBpbm9kZSBudW1iZXIgcG9pbnRzIHRvIHRoZSBwYXJlbnQgZGlyZWN0b3J5IGlub2RlCitFZWFjaCBmaWxlbmFtZSByZWNvcmQgYWRkaXRpb25hbGx5IGdvdCBhIGZpbGVuYW1lIGxlbmd0aCBmaWVsZC4KKworT25lIHNwZWNpYWwgY2FzZSBhcmUgbG9uZyBmaWxlbmFtZXMgb3Igc3ViZGlyZWN0b3J5IG5hbWVzLgorVGhlc2UgZ290IHNldCBhIGZpbGVuYW1lIGxlbmd0aCBmaWVsZCBvZiAweGZmIGluIHRoZSBjb3JyZXNwb25kaW5nIGRpcmVjdG9yeQorcmVjb3JkIHBsdXMgdGhlIGxvbmdmaWxlIGlub2RlIG51bWJlciBhbHNvIHN0b3JlZCBpbiB0aGF0IHJlY29yZC4KK1dpdGggdGhhdCBsb25nZmlsZW5hbWUgaW5vZGUgbnVtYmVyLCB0aGUgbG9uZ2ZpbGVuYW1lIHRyZWUgY2FuIGJlIHdhbGtlZAorc3RhcnRpbmcgd2l0aCB0aGUgc3VwZXJibG9jayBsb25nZmlsZW5hbWUgcm9vdCBub2RlIHBvaW50ZXJzLgorCitTcGVjaWFsIGZpbGVzCistLS0tLS0tLS0tLS0tCisKK1N5bWJvbGljIGxpbmtzIGFyZSBhbHNvIGZpbGVzeXN0ZW0gb2JqZWN0cyB3aXRoIGlub2Rlcy4gVGhleSBnb3QgYSBzcGVjaWZpYworYml0IGluIHRoZSBpbm9kZSBtb2RlIGZpZWxkIGlkZW50aWZ5aW5nIHRoZW0gYXMgc3ltYm9saWMgbGluay4KK1RoZSBkaXJlY3RvcnkgZW50cnkgZmlsZSBpbm9kZSBwb2ludGVyIHBvaW50cyB0byB0aGUgdGFyZ2V0IGZpbGUgaW5vZGUuCisKK0hhcmQgbGlua3MgZ290IGFuIGlub2RlLCBhIGRpcmVjdG9yeSBlbnRyeSwgYnV0IGEgc3BlY2lmaWMgbW9kZSBiaXQgc2V0LAorbm8gYmxvY2sgcG9pbnRlcnMgYW5kIHRoZSBkaXJlY3RvcnkgZmlsZSByZWNvcmQgcG9pbnRpbmcgdG8gdGhlIHRhcmdldCBmaWxlCitpbm9kZS4KKworQ2hhcmFjdGVyIGFuZCBibG9jayBzcGVjaWFsIGRldmljZXMgZG8gbm90IGV4aXN0IGluIFFOWCBhcyB0aG9zZSBmaWxlcworYXJlIGhhbmRsZWQgYnkgdGhlIFFOWCBrZXJuZWwvZHJpdmVycyBhbmQgY3JlYXRlZCBpbiAvZGV2IGluZGVwZW5kZW50IG9mIHRoZQordW5kZXJsYXlpbmcgZmlsZXN5c3RlbS4KKworTG9uZyBmaWxlbmFtZXMKKy0tLS0tLS0tLS0tLS0tCisKK0xvbmcgZmlsZW5hbWVzIGFyZSBzdG9yZWQgaW4gYSBzZXBhcmF0ZSBhZGRyZXNzaW5nIHRyZWUuIFRoZSBzdGFyaW5nIHBvaW50CitpcyB0aGUgbG9uZ2ZpbGVuYW1lIHJvb3Qgbm9kZSBpbiB0aGUgYWN0aXZlIHN1cGVyYmxvY2suCitFYWNoIGRhdGEgYmxvY2sgKHRyZWUgbGVhdmVzKSBob2xkcyBvbmUgbG9uZyBmaWxlbmFtZS4gVGhhdCBmaWxlbmFtZSBpcworbGltaXRlZCB0byA1MTAgYnl0ZXMuIFRoZSBmaXJzdCB0d28gc3RhcnRpbmcgYnl0ZXMgYXJlIHVzZWQgYXMgbGVuZ3RoIGZpZWxkCitmb3IgdGhlIGFjdHVhbCBmaWxlbmFtZS4KK0lmIHRoYXQgc3RydWN0dXJlIHNoYWxsIGZpdCBmb3IgYWxsIGFsbG93ZWQgYmxvY2tzaXplcywgaXQgaXMgY2xlYXIgd2h5IHRoZXJlCitpcyBhIGxpbWl0IG9mIDUxMCBieXRlcyBmb3IgdGhlIGFjdHVhbCBmaWxlbmFtZSBzdG9yZWQuCisKK0JpdG1hcAorLS0tLS0tCisKK1RoZSBxbng2ZnMgZmlsZXN5c3RlbSBhbGxvY2F0aW9uIGJpdG1hcCBpcyBzdG9yZWQgaW4gYSB0cmVlIHVuZGVyIGJpdG1hcAorcm9vdCBub2RlIGluIHRoZSBzdXBlcmJsb2NrIGFuZCBlYWNoIGJpdCBpbiB0aGUgYml0bWFwIHJlcHJlc2VudHMgb25lCitmaWxlc3lzdGVtIGJsb2NrLgorVGhlIGZpcnN0IGJsb2NrIGlzIGJsb2NrIDAsIHdoaWNoIHN0YXJ0cyAweDEwMDAgYWZ0ZXIgc3VwZXJibG9jayBzdGFydC4KK1NvIGZvciBhIG5vcm1hbCBxbng2ZnMgMHgzMDAwIChib290YmxvY2sgKyBzdXBlcmJsb2NrKSBpcyB0aGUgcGh5c2ljYWwKK2FkZHJlc3MgYXQgd2hpY2ggYmxvY2sgMCBpcyBsb2NhdGVkLgorCitCaXRzIGF0IHRoZSBlbmQgb2YgdGhlIGxhc3QgYml0bWFwIGJsb2NrIGFyZSBzZXQgdG8gMSwgaWYgdGhlIGRldmljZSBpcworc21hbGxlciB0aGFuIGFkZHJlc3Npbmcgc3BhY2UgaW4gdGhlIGJpdG1hcC4KKworQml0bWFwIHN5c3RlbSBhcmVhCistLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGJpdG1hcCBpdHNlbGYgaXMgZGl2aWRlZCBpbnRvIHRocmVlIHBhcnRzLgorRmlyc3QgdGhlIHN5c3RlbSBhcmVhLCB0aGF0IGlzIHNwbGl0IGludG8gdHdvIGhhbHZlcy4KK1RoZW4gdXNlcnNwYWNlLgorCitUaGUgcmVxdWlyZW1lbnQgZm9yIGEgc3RhdGljLCBmaXhlZCBwcmVhbGxvY2F0ZWQgc3lzdGVtIGFyZWEgY29tZXMgZnJvbSBob3cKK3FueDZmcyBkZWFscyB3aXRoIHdyaXRlcy4KK0VhY2ggc3VwZXJibG9jayBnb3QgaXQncyBvd24gaGFsZiBvZiB0aGUgc3lzdGVtIGFyZWEuIFNvIHN1cGVyYmxvY2sgIzEKK2Fsd2F5cyB1c2VzIGJsb2NrcyBmcm9tIHRoZSBsb3dlciBoYWxmIHdoaWxzdCBzdXBlcmJsb2NrICMyIGp1c3Qgd3JpdGVzIHRvCitibG9ja3MgcmVwcmVzZW50ZWQgYnkgdGhlIHVwcGVyIGhhbGYgYml0bWFwIHN5c3RlbSBhcmVhIGJpdHMuCisKK0JpdG1hcCBibG9ja3MsIElub2RlIGJsb2NrcyBhbmQgaW5kaXJlY3QgYWRkcmVzc2luZyBibG9ja3MgZm9yIHRob3NlIHR3bwordHJlZSBzdHJ1Y3R1cmVzIGFyZSB0cmVhdGVkIGFzIHN5c3RlbSBibG9ja3MuCisKK1RoZSByYXRpb25hbCBiZWhpbmQgdGhhdCBpcyB0aGF0IGEgd3JpdGUgcmVxdWVzdCBjYW4gd29yayBvbiBhIG5ldyBzbmFwc2hvdAorKHN5c3RlbSBhcmVhIG9mIHRoZSBpbmFjdGl2ZSAtIHJlc3AuIGxvd2VyIHNlcmlhbCBudW1iZXJlZCBzdXBlcmJsb2NrKSB3aGlsZQorYXQgdGhlIHNhbWUgdGltZSB0aGVyZSBpcyBzdGlsbCBhIGNvbXBsZXRlIHN0YWJsZSBmaWxlc3lzdGVtIHN0cnVjdGVyIGluIHRoZQorb3RoZXIgaGFsZiBvZiB0aGUgc3lzdGVtIGFyZWEuCisKK1doZW4gZmluaXNoZWQgd2l0aCB3cml0aW5nIChhIHN5bmMgd3JpdGUgaXMgY29tcGxldGVkLCB0aGUgbWF4aW11bSBzeW5jIGxlYXAKK3RpbWUgb3IgYSBmaWxlc3lzdGVtIHN5bmMgaXMgcmVxdWVzdGVkKSwgc2VyaWFsIG9mIHRoZSBwcmV2aW91c2x5IGluYWN0aXZlCitzdXBlcmJsb2NrIGF0b21pY2FsbHkgaXMgaW5jcmVhc2VkIGFuZCB0aGUgZnMgc3dpdGNoZXMgb3ZlciB0byB0aGF0IC0gdGhlbgorc3RhYmxlIGRlY2xhcmVkIC0gc3VwZXJibG9jay4KKworRm9yIGFsbCBkYXRhIG91dHNpZGUgdGhlIHN5c3RlbSBhcmVhLCBibG9ja3MgYXJlIGp1c3QgY29waWVkIHdoaWxlIHdyaXRpbmcuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3F1b3RhLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcXVvdGEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5ZmMwMTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3F1b3RhLnR4dApAQCAtMCwwICsxLDY4IEBACisKK1F1b3RhIHN1YnN5c3RlbQorPT09PT09PT09PT09PT09CisKK1F1b3RhIHN1YnN5c3RlbSBhbGxvd3Mgc3lzdGVtIGFkbWluaXN0cmF0b3IgdG8gc2V0IGxpbWl0cyBvbiB1c2VkIHNwYWNlIGFuZAorbnVtYmVyIG9mIHVzZWQgaW5vZGVzIChpbm9kZSBpcyBhIGZpbGVzeXN0ZW0gc3RydWN0dXJlIHdoaWNoIGlzIGFzc29jaWF0ZWQgd2l0aAorZWFjaCBmaWxlIG9yIGRpcmVjdG9yeSkgZm9yIHVzZXJzIGFuZC9vciBncm91cHMuIEZvciBib3RoIHVzZWQgc3BhY2UgYW5kIG51bWJlcgorb2YgdXNlZCBpbm9kZXMgdGhlcmUgYXJlIGFjdHVhbGx5IHR3byBsaW1pdHMuIFRoZSBmaXJzdCBvbmUgaXMgY2FsbGVkIHNvZnRsaW1pdAorYW5kIHRoZSBzZWNvbmQgb25lIGhhcmRsaW1pdC4gIEFuIHVzZXIgY2FuIG5ldmVyIGV4Y2VlZCBhIGhhcmRsaW1pdCBmb3IgYW55CityZXNvdXJjZSAodW5sZXNzIGhlIGhhcyBDQVBfU1lTX1JFU09VUkNFIGNhcGFiaWxpdHkpLiBVc2VyIGlzIGFsbG93ZWQgdG8gZXhjZWVkCitzb2Z0bGltaXQgYnV0IG9ubHkgZm9yIGxpbWl0ZWQgcGVyaW9kIG9mIHRpbWUuIFRoaXMgcGVyaW9kIGlzIGNhbGxlZCAiZ3JhY2UKK3BlcmlvZCIgb3IgImdyYWNlIHRpbWUiLiBXaGVuIGdyYWNlIHRpbWUgaXMgb3ZlciwgdXNlciBpcyBub3QgYWJsZSB0byBhbGxvY2F0ZQorbW9yZSBzcGFjZS9pbm9kZXMgdW50aWwgaGUgZnJlZXMgZW5vdWdoIG9mIHRoZW0gdG8gZ2V0IGJlbG93IHNvZnRsaW1pdC4KKworUXVvdGEgbGltaXRzIChhbmQgYW1vdW50IG9mIGdyYWNlIHRpbWUpIGFyZSBzZXQgaW5kZXBlbmRlbnRseSBmb3IgZWFjaAorZmlsZXN5c3RlbS4KKworRm9yIG1vcmUgZGV0YWlscyBhYm91dCBxdW90YSBkZXNpZ24sIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBpbiBxdW90YS10b29scyBwYWNrYWdlCisoaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saW51eHF1b3RhKS4KKworUXVvdGEgbmV0bGluayBpbnRlcmZhY2UKKz09PT09PT09PT09PT09PT09PT09PT09CitXaGVuIHVzZXIgZXhjZWVkcyBhIHNvZnRsaW1pdCwgcnVucyBvdXQgb2YgZ3JhY2UgdGltZSBvciByZWFjaGVzIGhhcmRsaW1pdCwKK3F1b3RhIHN1YnN5c3RlbSB0cmFkaXRpb25hbGx5IHByaW50ZWQgYSBtZXNzYWdlIHRvIHRoZSBjb250cm9sbGluZyB0ZXJtaW5hbCBvZgordGhlIHByb2Nlc3Mgd2hpY2ggY2F1c2VkIHRoZSBleGNlc3MuIFRoaXMgbWV0aG9kIGhhcyB0aGUgZGlzYWR2YW50YWdlIHRoYXQKK3doZW4gdXNlciBpcyB1c2luZyBhIGdyYXBoaWNhbCBkZXNrdG9wIGhlIHVzdWFsbHkgY2Fubm90IHNlZSB0aGUgbWVzc2FnZS4KK1RodXMgcXVvdGEgbmV0bGluayBpbnRlcmZhY2UgaGFzIGJlZW4gZGVzaWduZWQgdG8gcGFzcyBpbmZvcm1hdGlvbiBhYm91dAordGhlIGFib3ZlIGV2ZW50cyB0byB1c2Vyc3BhY2UuIFRoZXJlIHRoZXkgY2FuIGJlIGNhcHR1cmVkIGJ5IGFuIGFwcGxpY2F0aW9uCithbmQgcHJvY2Vzc2VkIGFjY29yZGluZ2x5LgorCitUaGUgaW50ZXJmYWNlIHVzZXMgZ2VuZXJpYyBuZXRsaW5rIGZyYW1ld29yayAoc2VlCitodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8yMDg3NTUvIGFuZCBodHRwOi8vcGVvcGxlLnN1dWcuY2gvfnRnci9saWJubC8gZm9yIG1vcmUKK2RldGFpbHMgYWJvdXQgdGhpcyBsYXllcikuIFRoZSBuYW1lIG9mIHRoZSBxdW90YSBnZW5lcmljIG5ldGxpbmsgaW50ZXJmYWNlCitpcyAiVkZTX0RRVU9UIi4gRGVmaW5pdGlvbnMgb2YgY29uc3RhbnRzIGJlbG93IGFyZSBpbiA8bGludXgvcXVvdGEuaD4uCitTaW5jZSB0aGUgcXVvdGEgbmV0bGluayBwcm90b2NvbCBpcyBub3QgbmFtZXNwYWNlIGF3YXJlLCBxdW90YSBuZXRsaW5rIG1lc3NhZ2VzCithcmUgc2VudCBvbmx5IGluIGluaXRpYWwgbmV0d29yayBuYW1lc3BhY2UuCisKK0N1cnJlbnRseSwgdGhlIGludGVyZmFjZSBzdXBwb3J0cyBvbmx5IG9uZSBtZXNzYWdlIHR5cGUgUVVPVEFfTkxfQ19XQVJOSU5HLgorVGhpcyBjb21tYW5kIGlzIHVzZWQgdG8gc2VuZCBhIG5vdGlmaWNhdGlvbiBhYm91dCBhbnkgb2YgdGhlIGFib3ZlIG1lbnRpb25lZAorZXZlbnRzLiBFYWNoIG1lc3NhZ2UgaGFzIHNpeCBhdHRyaWJ1dGVzLiBUaGVzZSBhcmUgKHR5cGUgb2YgdGhlIGFyZ3VtZW50IGlzCitpbiBwYXJlbnRoZXNlcyk6CisgICAgICAgIFFVT1RBX05MX0FfUVRZUEUgKHUzMikKKwkgIC0gdHlwZSBvZiBxdW90YSBiZWluZyBleGNlZWRlZCAob25lIG9mIFVTUlFVT1RBLCBHUlBRVU9UQSkKKyAgICAgICAgUVVPVEFfTkxfQV9FWENFU1NfSUQgKHU2NCkKKwkgIC0gVUlEL0dJRCAoZGVwZW5kcyBvbiBxdW90YSB0eXBlKSBvZiB1c2VyIC8gZ3JvdXAgd2hvc2UgbGltaXQKKwkgICAgaXMgYmVpbmcgZXhjZWVkZWQuCisgICAgICAgIFFVT1RBX05MX0FfQ0FVU0VEX0lEICh1NjQpCisJICAtIFVJRCBvZiBhIHVzZXIgd2hvIGNhdXNlZCB0aGUgZXZlbnQKKyAgICAgICAgUVVPVEFfTkxfQV9XQVJOSU5HICh1MzIpCisJICAtIHdoYXQga2luZCBvZiBsaW1pdCBpcyBleGNlZWRlZDoKKwkJUVVPVEFfTkxfSUhBUkRXQVJOIC0gaW5vZGUgaGFyZGxpbWl0CisJCVFVT1RBX05MX0lTT0ZUTE9OR1dBUk4gLSBpbm9kZSBzb2Z0bGltaXQgaXMgZXhjZWVkZWQgbG9uZ2VyCisJCSAgdGhhbiBnaXZlbiBncmFjZSBwZXJpb2QKKwkJUVVPVEFfTkxfSVNPRlRXQVJOIC0gaW5vZGUgc29mdGxpbWl0CisJCVFVT1RBX05MX0JIQVJEV0FSTiAtIHNwYWNlIChibG9jaykgaGFyZGxpbWl0CisJCVFVT1RBX05MX0JTT0ZUTE9OR1dBUk4gLSBzcGFjZSAoYmxvY2spIHNvZnRsaW1pdCBpcyBleGNlZWRlZAorCQkgIGxvbmdlciB0aGFuIGdpdmVuIGdyYWNlIHBlcmlvZC4KKwkJUVVPVEFfTkxfQlNPRlRXQVJOIC0gc3BhY2UgKGJsb2NrKSBzb2Z0bGltaXQKKwkgIC0gZm91ciB3YXJuaW5ncyBhcmUgYWxzbyBkZWZpbmVkIGZvciB0aGUgZXZlbnQgd2hlbiB1c2VyIHN0b3BzCisJICAgIGV4Y2VlZGluZyBzb21lIGxpbWl0OgorCQlRVU9UQV9OTF9JSEFSREJFTE9XIC0gaW5vZGUgaGFyZGxpbWl0CisJCVFVT1RBX05MX0lTT0ZUQkVMT1cgLSBpbm9kZSBzb2Z0bGltaXQKKwkJUVVPVEFfTkxfQkhBUkRCRUxPVyAtIHNwYWNlIChibG9jaykgaGFyZGxpbWl0CisJCVFVT1RBX05MX0JTT0ZUQkVMT1cgLSBzcGFjZSAoYmxvY2spIHNvZnRsaW1pdAorICAgICAgICBRVU9UQV9OTF9BX0RFVl9NQUpPUiAodTMyKQorCSAgLSBtYWpvciBudW1iZXIgb2YgYSBkZXZpY2Ugd2l0aCB0aGUgYWZmZWN0ZWQgZmlsZXN5c3RlbQorICAgICAgICBRVU9UQV9OTF9BX0RFVl9NSU5PUiAodTMyKQorCSAgLSBtaW5vciBudW1iZXIgb2YgYSBkZXZpY2Ugd2l0aCB0aGUgYWZmZWN0ZWQgZmlsZXN5c3RlbQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9yYW1mcy1yb290ZnMtaW5pdHJhbWZzLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcmFtZnMtcm9vdGZzLWluaXRyYW1mcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjE3NjkyOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcmFtZnMtcm9vdGZzLWluaXRyYW1mcy50eHQKQEAgLTAsMCArMSwzNTkgQEAKK3JhbWZzLCByb290ZnMgYW5kIGluaXRyYW1mcworT2N0b2JlciAxNywgMjAwNQorUm9iIExhbmRsZXkgPHJvYkBsYW5kbGV5Lm5ldD4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1doYXQgaXMgcmFtZnM/CistLS0tLS0tLS0tLS0tLQorCitSYW1mcyBpcyBhIHZlcnkgc2ltcGxlIGZpbGVzeXN0ZW0gdGhhdCBleHBvcnRzIExpbnV4J3MgZGlzayBjYWNoaW5nCittZWNoYW5pc21zICh0aGUgcGFnZSBjYWNoZSBhbmQgZGVudHJ5IGNhY2hlKSBhcyBhIGR5bmFtaWNhbGx5IHJlc2l6YWJsZQorUkFNLWJhc2VkIGZpbGVzeXN0ZW0uCisKK05vcm1hbGx5IGFsbCBmaWxlcyBhcmUgY2FjaGVkIGluIG1lbW9yeSBieSBMaW51eC4gIFBhZ2VzIG9mIGRhdGEgcmVhZCBmcm9tCitiYWNraW5nIHN0b3JlICh1c3VhbGx5IHRoZSBibG9jayBkZXZpY2UgdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCBvbikgYXJlIGtlcHQKK2Fyb3VuZCBpbiBjYXNlIGl0J3MgbmVlZGVkIGFnYWluLCBidXQgbWFya2VkIGFzIGNsZWFuIChmcmVlYWJsZSkgaW4gY2FzZSB0aGUKK1ZpcnR1YWwgTWVtb3J5IHN5c3RlbSBuZWVkcyB0aGUgbWVtb3J5IGZvciBzb21ldGhpbmcgZWxzZS4gIFNpbWlsYXJseSwgZGF0YQord3JpdHRlbiB0byBmaWxlcyBpcyBtYXJrZWQgY2xlYW4gYXMgc29vbiBhcyBpdCBoYXMgYmVlbiB3cml0dGVuIHRvIGJhY2tpbmcKK3N0b3JlLCBidXQga2VwdCBhcm91bmQgZm9yIGNhY2hpbmcgcHVycG9zZXMgdW50aWwgdGhlIFZNIHJlYWxsb2NhdGVzIHRoZQorbWVtb3J5LiAgQSBzaW1pbGFyIG1lY2hhbmlzbSAodGhlIGRlbnRyeSBjYWNoZSkgZ3JlYXRseSBzcGVlZHMgdXAgYWNjZXNzIHRvCitkaXJlY3Rvcmllcy4KKworV2l0aCByYW1mcywgdGhlcmUgaXMgbm8gYmFja2luZyBzdG9yZS4gIEZpbGVzIHdyaXR0ZW4gaW50byByYW1mcyBhbGxvY2F0ZQorZGVudHJpZXMgYW5kIHBhZ2UgY2FjaGUgYXMgdXN1YWwsIGJ1dCB0aGVyZSdzIG5vd2hlcmUgdG8gd3JpdGUgdGhlbSB0by4KK1RoaXMgbWVhbnMgdGhlIHBhZ2VzIGFyZSBuZXZlciBtYXJrZWQgY2xlYW4sIHNvIHRoZXkgY2FuJ3QgYmUgZnJlZWQgYnkgdGhlCitWTSB3aGVuIGl0J3MgbG9va2luZyB0byByZWN5Y2xlIG1lbW9yeS4KKworVGhlIGFtb3VudCBvZiBjb2RlIHJlcXVpcmVkIHRvIGltcGxlbWVudCByYW1mcyBpcyB0aW55LCBiZWNhdXNlIGFsbCB0aGUKK3dvcmsgaXMgZG9uZSBieSB0aGUgZXhpc3RpbmcgTGludXggY2FjaGluZyBpbmZyYXN0cnVjdHVyZS4gIEJhc2ljYWxseSwKK3lvdSdyZSBtb3VudGluZyB0aGUgZGlzayBjYWNoZSBhcyBhIGZpbGVzeXN0ZW0uICBCZWNhdXNlIG9mIHRoaXMsIHJhbWZzIGlzIG5vdAorYW4gb3B0aW9uYWwgY29tcG9uZW50IHJlbW92YWJsZSB2aWEgbWVudWNvbmZpZywgc2luY2UgdGhlcmUgd291bGQgYmUgbmVnbGlnaWJsZQorc3BhY2Ugc2F2aW5ncy4KKworcmFtZnMgYW5kIHJhbWRpc2s6CistLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG9sZGVyICJyYW0gZGlzayIgbWVjaGFuaXNtIGNyZWF0ZWQgYSBzeW50aGV0aWMgYmxvY2sgZGV2aWNlIG91dCBvZgorYW4gYXJlYSBvZiBSQU0gYW5kIHVzZWQgaXQgYXMgYmFja2luZyBzdG9yZSBmb3IgYSBmaWxlc3lzdGVtLiAgVGhpcyBibG9jaworZGV2aWNlIHdhcyBvZiBmaXhlZCBzaXplLCBzbyB0aGUgZmlsZXN5c3RlbSBtb3VudGVkIG9uIGl0IHdhcyBvZiBmaXhlZAorc2l6ZS4gIFVzaW5nIGEgcmFtIGRpc2sgYWxzbyByZXF1aXJlZCB1bm5lY2Vzc2FyaWx5IGNvcHlpbmcgbWVtb3J5IGZyb20gdGhlCitmYWtlIGJsb2NrIGRldmljZSBpbnRvIHRoZSBwYWdlIGNhY2hlIChhbmQgY29weWluZyBjaGFuZ2VzIGJhY2sgb3V0KSwgYXMgd2VsbAorYXMgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgZGVudHJpZXMuICBQbHVzIGl0IG5lZWRlZCBhIGZpbGVzeXN0ZW0gZHJpdmVyCisoc3VjaCBhcyBleHQyKSB0byBmb3JtYXQgYW5kIGludGVycHJldCB0aGlzIGRhdGEuCisKK0NvbXBhcmVkIHRvIHJhbWZzLCB0aGlzIHdhc3RlcyBtZW1vcnkgKGFuZCBtZW1vcnkgYnVzIGJhbmR3aWR0aCksIGNyZWF0ZXMKK3VubmVjZXNzYXJ5IHdvcmsgZm9yIHRoZSBDUFUsIGFuZCBwb2xsdXRlcyB0aGUgQ1BVIGNhY2hlcy4gIChUaGVyZSBhcmUgdHJpY2tzCit0byBhdm9pZCB0aGlzIGNvcHlpbmcgYnkgcGxheWluZyB3aXRoIHRoZSBwYWdlIHRhYmxlcywgYnV0IHRoZXkncmUgdW5wbGVhc2FudGx5Citjb21wbGljYXRlZCBhbmQgdHVybiBvdXQgdG8gYmUgYWJvdXQgYXMgZXhwZW5zaXZlIGFzIHRoZSBjb3B5aW5nIGFueXdheS4pCitNb3JlIHRvIHRoZSBwb2ludCwgYWxsIHRoZSB3b3JrIHJhbWZzIGlzIGRvaW5nIGhhcyB0byBoYXBwZW4gX2FueXdheV8sCitzaW5jZSBhbGwgZmlsZSBhY2Nlc3MgZ29lcyB0aHJvdWdoIHRoZSBwYWdlIGFuZCBkZW50cnkgY2FjaGVzLiAgVGhlIFJBTQorZGlzayBpcyBzaW1wbHkgdW5uZWNlc3Nhcnk7IHJhbWZzIGlzIGludGVybmFsbHkgbXVjaCBzaW1wbGVyLgorCitBbm90aGVyIHJlYXNvbiByYW1kaXNrcyBhcmUgc2VtaS1vYnNvbGV0ZSBpcyB0aGF0IHRoZSBpbnRyb2R1Y3Rpb24gb2YKK2xvb3BiYWNrIGRldmljZXMgb2ZmZXJlZCBhIG1vcmUgZmxleGlibGUgYW5kIGNvbnZlbmllbnQgd2F5IHRvIGNyZWF0ZQorc3ludGhldGljIGJsb2NrIGRldmljZXMsIG5vdyBmcm9tIGZpbGVzIGluc3RlYWQgb2YgZnJvbSBjaHVua3Mgb2YgbWVtb3J5LgorU2VlIGxvc2V0dXAgKDgpIGZvciBkZXRhaWxzLgorCityYW1mcyBhbmQgdG1wZnM6CistLS0tLS0tLS0tLS0tLS0tCisKK09uZSBkb3duc2lkZSBvZiByYW1mcyBpcyB5b3UgY2FuIGtlZXAgd3JpdGluZyBkYXRhIGludG8gaXQgdW50aWwgeW91IGZpbGwKK3VwIGFsbCBtZW1vcnksIGFuZCB0aGUgVk0gY2FuJ3QgZnJlZSBpdCBiZWNhdXNlIHRoZSBWTSB0aGlua3MgdGhhdCBmaWxlcworc2hvdWxkIGdldCB3cml0dGVuIHRvIGJhY2tpbmcgc3RvcmUgKHJhdGhlciB0aGFuIHN3YXAgc3BhY2UpLCBidXQgcmFtZnMgaGFzbid0Citnb3QgYW55IGJhY2tpbmcgc3RvcmUuICBCZWNhdXNlIG9mIHRoaXMsIG9ubHkgcm9vdCAob3IgYSB0cnVzdGVkIHVzZXIpIHNob3VsZAorYmUgYWxsb3dlZCB3cml0ZSBhY2Nlc3MgdG8gYSByYW1mcyBtb3VudC4KKworQSByYW1mcyBkZXJpdmF0aXZlIGNhbGxlZCB0bXBmcyB3YXMgY3JlYXRlZCB0byBhZGQgc2l6ZSBsaW1pdHMsIGFuZCB0aGUgYWJpbGl0eQordG8gd3JpdGUgdGhlIGRhdGEgdG8gc3dhcCBzcGFjZS4gIE5vcm1hbCB1c2VycyBjYW4gYmUgYWxsb3dlZCB3cml0ZSBhY2Nlc3MgdG8KK3RtcGZzIG1vdW50cy4gIFNlZSBEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3RtcGZzLnR4dCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworV2hhdCBpcyByb290ZnM/CistLS0tLS0tLS0tLS0tLS0KKworUm9vdGZzIGlzIGEgc3BlY2lhbCBpbnN0YW5jZSBvZiByYW1mcyAob3IgdG1wZnMsIGlmIHRoYXQncyBlbmFibGVkKSwgd2hpY2ggaXMKK2Fsd2F5cyBwcmVzZW50IGluIDIuNiBzeXN0ZW1zLiAgWW91IGNhbid0IHVubW91bnQgcm9vdGZzIGZvciBhcHByb3hpbWF0ZWx5IHRoZQorc2FtZSByZWFzb24geW91IGNhbid0IGtpbGwgdGhlIGluaXQgcHJvY2VzczsgcmF0aGVyIHRoYW4gaGF2aW5nIHNwZWNpYWwgY29kZQordG8gY2hlY2sgZm9yIGFuZCBoYW5kbGUgYW4gZW1wdHkgbGlzdCwgaXQncyBzbWFsbGVyIGFuZCBzaW1wbGVyIGZvciB0aGUga2VybmVsCit0byBqdXN0IG1ha2Ugc3VyZSBjZXJ0YWluIGxpc3RzIGNhbid0IGJlY29tZSBlbXB0eS4KKworTW9zdCBzeXN0ZW1zIGp1c3QgbW91bnQgYW5vdGhlciBmaWxlc3lzdGVtIG92ZXIgcm9vdGZzIGFuZCBpZ25vcmUgaXQuICBUaGUKK2Ftb3VudCBvZiBzcGFjZSBhbiBlbXB0eSBpbnN0YW5jZSBvZiByYW1mcyB0YWtlcyB1cCBpcyB0aW55LgorCitJZiBDT05GSUdfVE1QRlMgaXMgZW5hYmxlZCwgcm9vdGZzIHdpbGwgdXNlIHRtcGZzIGluc3RlYWQgb2YgcmFtZnMgYnkKK2RlZmF1bHQuICBUbyBmb3JjZSByYW1mcywgYWRkICJyb290ZnN0eXBlPXJhbWZzIiB0byB0aGUga2VybmVsIGNvbW1hbmQKK2xpbmUuCisKK1doYXQgaXMgaW5pdHJhbWZzPworLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FsbCAyLjYgTGludXgga2VybmVscyBjb250YWluIGEgZ3ppcHBlZCAiY3BpbyIgZm9ybWF0IGFyY2hpdmUsIHdoaWNoIGlzCitleHRyYWN0ZWQgaW50byByb290ZnMgd2hlbiB0aGUga2VybmVsIGJvb3RzIHVwLiAgQWZ0ZXIgZXh0cmFjdGluZywgdGhlIGtlcm5lbAorY2hlY2tzIHRvIHNlZSBpZiByb290ZnMgY29udGFpbnMgYSBmaWxlICJpbml0IiwgYW5kIGlmIHNvIGl0IGV4ZWN1dGVzIGl0IGFzIFBJRAorMS4gIElmIGZvdW5kLCB0aGlzIGluaXQgcHJvY2VzcyBpcyByZXNwb25zaWJsZSBmb3IgYnJpbmdpbmcgdGhlIHN5c3RlbSB0aGUKK3Jlc3Qgb2YgdGhlIHdheSB1cCwgaW5jbHVkaW5nIGxvY2F0aW5nIGFuZCBtb3VudGluZyB0aGUgcmVhbCByb290IGRldmljZSAoaWYKK2FueSkuICBJZiByb290ZnMgZG9lcyBub3QgY29udGFpbiBhbiBpbml0IHByb2dyYW0gYWZ0ZXIgdGhlIGVtYmVkZGVkIGNwaW8KK2FyY2hpdmUgaXMgZXh0cmFjdGVkIGludG8gaXQsIHRoZSBrZXJuZWwgd2lsbCBmYWxsIHRocm91Z2ggdG8gdGhlIG9sZGVyIGNvZGUKK3RvIGxvY2F0ZSBhbmQgbW91bnQgYSByb290IHBhcnRpdGlvbiwgdGhlbiBleGVjIHNvbWUgdmFyaWFudCBvZiAvc2Jpbi9pbml0CitvdXQgb2YgdGhhdC4KKworQWxsIHRoaXMgZGlmZmVycyBmcm9tIHRoZSBvbGQgaW5pdHJkIGluIHNldmVyYWwgd2F5czoKKworICAtIFRoZSBvbGQgaW5pdHJkIHdhcyBhbHdheXMgYSBzZXBhcmF0ZSBmaWxlLCB3aGlsZSB0aGUgaW5pdHJhbWZzIGFyY2hpdmUgaXMKKyAgICBsaW5rZWQgaW50byB0aGUgbGludXgga2VybmVsIGltYWdlLiAgKFRoZSBkaXJlY3RvcnkgbGludXgtKi91c3IgaXMgZGV2b3RlZAorICAgIHRvIGdlbmVyYXRpbmcgdGhpcyBhcmNoaXZlIGR1cmluZyB0aGUgYnVpbGQuKQorCisgIC0gVGhlIG9sZCBpbml0cmQgZmlsZSB3YXMgYSBnemlwcGVkIGZpbGVzeXN0ZW0gaW1hZ2UgKGluIHNvbWUgZmlsZSBmb3JtYXQsCisgICAgc3VjaCBhcyBleHQyLCB0aGF0IG5lZWRlZCBhIGRyaXZlciBidWlsdCBpbnRvIHRoZSBrZXJuZWwpLCB3aGlsZSB0aGUgbmV3CisgICAgaW5pdHJhbWZzIGFyY2hpdmUgaXMgYSBnemlwcGVkIGNwaW8gYXJjaGl2ZSAobGlrZSB0YXIgb25seSBzaW1wbGVyLAorICAgIHNlZSBjcGlvKDEpIGFuZCBEb2N1bWVudGF0aW9uL2Vhcmx5LXVzZXJzcGFjZS9idWZmZXItZm9ybWF0LnR4dCkuICBUaGUKKyAgICBrZXJuZWwncyBjcGlvIGV4dHJhY3Rpb24gY29kZSBpcyBub3Qgb25seSBleHRyZW1lbHkgc21hbGwsIGl0J3MgYWxzbworICAgIF9faW5pdCB0ZXh0IGFuZCBkYXRhIHRoYXQgY2FuIGJlIGRpc2NhcmRlZCBkdXJpbmcgdGhlIGJvb3QgcHJvY2Vzcy4KKworICAtIFRoZSBwcm9ncmFtIHJ1biBieSB0aGUgb2xkIGluaXRyZCAod2hpY2ggd2FzIGNhbGxlZCAvaW5pdHJkLCBub3QgL2luaXQpIGRpZAorICAgIHNvbWUgc2V0dXAgYW5kIHRoZW4gcmV0dXJuZWQgdG8gdGhlIGtlcm5lbCwgd2hpbGUgdGhlIGluaXQgcHJvZ3JhbSBmcm9tCisgICAgaW5pdHJhbWZzIGlzIG5vdCBleHBlY3RlZCB0byByZXR1cm4gdG8gdGhlIGtlcm5lbC4gIChJZiAvaW5pdCBuZWVkcyB0byBoYW5kCisgICAgb2ZmIGNvbnRyb2wgaXQgY2FuIG92ZXJtb3VudCAvIHdpdGggYSBuZXcgcm9vdCBkZXZpY2UgYW5kIGV4ZWMgYW5vdGhlciBpbml0CisgICAgcHJvZ3JhbS4gIFNlZSB0aGUgc3dpdGNoX3Jvb3QgdXRpbGl0eSwgYmVsb3cuKQorCisgIC0gV2hlbiBzd2l0Y2hpbmcgYW5vdGhlciByb290IGRldmljZSwgaW5pdHJkIHdvdWxkIHBpdm90X3Jvb3QgYW5kIHRoZW4KKyAgICB1bW91bnQgdGhlIHJhbWRpc2suICBCdXQgaW5pdHJhbWZzIGlzIHJvb3RmczogeW91IGNhbiBuZWl0aGVyIHBpdm90X3Jvb3QKKyAgICByb290ZnMsIG5vciB1bm1vdW50IGl0LiAgSW5zdGVhZCBkZWxldGUgZXZlcnl0aGluZyBvdXQgb2Ygcm9vdGZzIHRvCisgICAgZnJlZSB1cCB0aGUgc3BhY2UgKGZpbmQgLXhkZXYgLyAtZXhlYyBybSAne30nICc7JyksIG92ZXJtb3VudCByb290ZnMKKyAgICB3aXRoIHRoZSBuZXcgcm9vdCAoY2QgL25ld21vdW50OyBtb3VudCAtLW1vdmUgLiAvOyBjaHJvb3QgLiksIGF0dGFjaAorICAgIHN0ZGluL3N0ZG91dC9zdGRlcnIgdG8gdGhlIG5ldyAvZGV2L2NvbnNvbGUsIGFuZCBleGVjIHRoZSBuZXcgaW5pdC4KKworICAgIFNpbmNlIHRoaXMgaXMgYSByZW1hcmthYmx5IHBlcnNuaWNrZXR5IHByb2Nlc3MgKGFuZCBpbnZvbHZlcyBkZWxldGluZworICAgIGNvbW1hbmRzIGJlZm9yZSB5b3UgY2FuIHJ1biB0aGVtKSwgdGhlIGtsaWJjIHBhY2thZ2UgaW50cm9kdWNlZCBhIGhlbHBlcgorICAgIHByb2dyYW0gKHV0aWxzL3J1bl9pbml0LmMpIHRvIGRvIGFsbCB0aGlzIGZvciB5b3UuICBNb3N0IG90aGVyIHBhY2thZ2VzCisgICAgKHN1Y2ggYXMgYnVzeWJveCkgaGF2ZSBuYW1lZCB0aGlzIGNvbW1hbmQgInN3aXRjaF9yb290Ii4KKworUG9wdWxhdGluZyBpbml0cmFtZnM6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIDIuNiBrZXJuZWwgYnVpbGQgcHJvY2VzcyBhbHdheXMgY3JlYXRlcyBhIGd6aXBwZWQgY3BpbyBmb3JtYXQgaW5pdHJhbWZzCithcmNoaXZlIGFuZCBsaW5rcyBpdCBpbnRvIHRoZSByZXN1bHRpbmcga2VybmVsIGJpbmFyeS4gIEJ5IGRlZmF1bHQsIHRoaXMKK2FyY2hpdmUgaXMgZW1wdHkgKGNvbnN1bWluZyAxMzQgYnl0ZXMgb24geDg2KS4KKworVGhlIGNvbmZpZyBvcHRpb24gQ09ORklHX0lOSVRSQU1GU19TT1VSQ0UgKGluIEdlbmVyYWwgU2V0dXAgaW4gbWVudWNvbmZpZywKK2FuZCBsaXZpbmcgaW4gdXNyL0tjb25maWcpIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBzb3VyY2UgZm9yIHRoZQoraW5pdHJhbWZzIGFyY2hpdmUsIHdoaWNoIHdpbGwgYXV0b21hdGljYWxseSBiZSBpbmNvcnBvcmF0ZWQgaW50byB0aGUKK3Jlc3VsdGluZyBiaW5hcnkuICBUaGlzIG9wdGlvbiBjYW4gcG9pbnQgdG8gYW4gZXhpc3RpbmcgZ3ppcHBlZCBjcGlvCithcmNoaXZlLCBhIGRpcmVjdG9yeSBjb250YWluaW5nIGZpbGVzIHRvIGJlIGFyY2hpdmVkLCBvciBhIHRleHQgZmlsZQorc3BlY2lmaWNhdGlvbiBzdWNoIGFzIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKKworICBkaXIgL2RldiA3NTUgMCAwCisgIG5vZCAvZGV2L2NvbnNvbGUgNjQ0IDAgMCBjIDUgMQorICBub2QgL2Rldi9sb29wMCA2NDQgMCAwIGIgNyAwCisgIGRpciAvYmluIDc1NSAxMDAwIDEwMDAKKyAgc2xpbmsgL2Jpbi9zaCBidXN5Ym94IDc3NyAwIDAKKyAgZmlsZSAvYmluL2J1c3lib3ggaW5pdHJhbWZzL2J1c3lib3ggNzU1IDAgMAorICBkaXIgL3Byb2MgNzU1IDAgMAorICBkaXIgL3N5cyA3NTUgMCAwCisgIGRpciAvbW50IDc1NSAwIDAKKyAgZmlsZSAvaW5pdCBpbml0cmFtZnMvaW5pdC5zaCA3NTUgMCAwCisKK1J1biAidXNyL2dlbl9pbml0X2NwaW8iIChhZnRlciB0aGUga2VybmVsIGJ1aWxkKSB0byBnZXQgYSB1c2FnZSBtZXNzYWdlCitkb2N1bWVudGluZyB0aGUgYWJvdmUgZmlsZSBmb3JtYXQuCisKK09uZSBhZHZhbnRhZ2Ugb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyB0aGF0IHJvb3QgYWNjZXNzIGlzIG5vdCByZXF1aXJlZCB0bworc2V0IHBlcm1pc3Npb25zIG9yIGNyZWF0ZSBkZXZpY2Ugbm9kZXMgaW4gdGhlIG5ldyBhcmNoaXZlLiAgKE5vdGUgdGhhdCB0aG9zZQordHdvIGV4YW1wbGUgImZpbGUiIGVudHJpZXMgZXhwZWN0IHRvIGZpbmQgZmlsZXMgbmFtZWQgImluaXQuc2giIGFuZCAiYnVzeWJveCIgaW4KK2EgZGlyZWN0b3J5IGNhbGxlZCAiaW5pdHJhbWZzIiwgdW5kZXIgdGhlIGxpbnV4LTIuNi4qIGRpcmVjdG9yeS4gIFNlZQorRG9jdW1lbnRhdGlvbi9lYXJseS11c2Vyc3BhY2UvUkVBRE1FIGZvciBtb3JlIGRldGFpbHMuKQorCitUaGUga2VybmVsIGRvZXMgbm90IGRlcGVuZCBvbiBleHRlcm5hbCBjcGlvIHRvb2xzLiAgSWYgeW91IHNwZWNpZnkgYQorZGlyZWN0b3J5IGluc3RlYWQgb2YgYSBjb25maWd1cmF0aW9uIGZpbGUsIHRoZSBrZXJuZWwncyBidWlsZCBpbmZyYXN0cnVjdHVyZQorY3JlYXRlcyBhIGNvbmZpZ3VyYXRpb24gZmlsZSBmcm9tIHRoYXQgZGlyZWN0b3J5ICh1c3IvTWFrZWZpbGUgY2FsbHMKK3NjcmlwdHMvZ2VuX2luaXRyYW1mc19saXN0LnNoKSwgYW5kIHByb2NlZWRzIHRvIHBhY2thZ2UgdXAgdGhhdCBkaXJlY3RvcnkKK3VzaW5nIHRoZSBjb25maWcgZmlsZSAoYnkgZmVlZGluZyBpdCB0byB1c3IvZ2VuX2luaXRfY3Bpbywgd2hpY2ggaXMgY3JlYXRlZAorZnJvbSB1c3IvZ2VuX2luaXRfY3Bpby5jKS4gIFRoZSBrZXJuZWwncyBidWlsZC10aW1lIGNwaW8gY3JlYXRpb24gY29kZSBpcworZW50aXJlbHkgc2VsZi1jb250YWluZWQsIGFuZCB0aGUga2VybmVsJ3MgYm9vdC10aW1lIGV4dHJhY3RvciBpcyBhbHNvCisob2J2aW91c2x5KSBzZWxmLWNvbnRhaW5lZC4KKworVGhlIG9uZSB0aGluZyB5b3UgbWlnaHQgbmVlZCBleHRlcm5hbCBjcGlvIHV0aWxpdGllcyBpbnN0YWxsZWQgZm9yIGlzIGNyZWF0aW5nCitvciBleHRyYWN0aW5nIHlvdXIgb3duIHByZXByZXBhcmVkIGNwaW8gZmlsZXMgdG8gZmVlZCB0byB0aGUga2VybmVsIGJ1aWxkCisoaW5zdGVhZCBvZiBhIGNvbmZpZyBmaWxlIG9yIGRpcmVjdG9yeSkuCisKK1RoZSBmb2xsb3dpbmcgY29tbWFuZCBsaW5lIGNhbiBleHRyYWN0IGEgY3BpbyBpbWFnZSAoZWl0aGVyIGJ5IHRoZSBhYm92ZSBzY3JpcHQKK29yIGJ5IHRoZSBrZXJuZWwgYnVpbGQpIGJhY2sgaW50byBpdHMgY29tcG9uZW50IGZpbGVzOgorCisgIGNwaW8gLWkgLWQgLUggbmV3YyAtRiBpbml0cmFtZnNfZGF0YS5jcGlvIC0tbm8tYWJzb2x1dGUtZmlsZW5hbWVzCisKK1RoZSBmb2xsb3dpbmcgc2hlbGwgc2NyaXB0IGNhbiBjcmVhdGUgYSBwcmVidWlsdCBjcGlvIGFyY2hpdmUgeW91IGNhbgordXNlIGluIHBsYWNlIG9mIHRoZSBhYm92ZSBjb25maWcgZmlsZToKKworICAjIS9iaW4vc2gKKworICAjIENvcHlyaWdodCAyMDA2IFJvYiBMYW5kbGV5IDxyb2JAbGFuZGxleS5uZXQ+IGFuZCBUaW1lU3lzIENvcnBvcmF0aW9uLgorICAjIExpY2Vuc2VkIHVuZGVyIEdQTCB2ZXJzaW9uIDIKKworICBpZiBbICQjIC1uZSAyIF0KKyAgdGhlbgorICAgIGVjaG8gInVzYWdlOiBta2luaXRyYW1mcyBkaXJlY3RvcnkgaW1hZ2VuYW1lLmNwaW8uZ3oiCisgICAgZXhpdCAxCisgIGZpCisKKyAgaWYgWyAtZCAiJDEiIF0KKyAgdGhlbgorICAgIGVjaG8gImNyZWF0aW5nICQyIGZyb20gJDEiCisgICAgKGNkICIkMSI7IGZpbmQgLiB8IGNwaW8gLW8gLUggbmV3YyB8IGd6aXApID4gIiQyIgorICBlbHNlCisgICAgZWNobyAiRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIGRpcmVjdG9yeSIKKyAgICBleGl0IDEKKyAgZmkKKworTm90ZTogVGhlIGNwaW8gbWFuIHBhZ2UgY29udGFpbnMgc29tZSBiYWQgYWR2aWNlIHRoYXQgd2lsbCBicmVhayB5b3VyIGluaXRyYW1mcworYXJjaGl2ZSBpZiB5b3UgZm9sbG93IGl0LiAgSXQgc2F5cyAiQSB0eXBpY2FsIHdheSB0byBnZW5lcmF0ZSB0aGUgbGlzdAorb2YgZmlsZW5hbWVzIGlzIHdpdGggdGhlIGZpbmQgY29tbWFuZDsgeW91IHNob3VsZCBnaXZlIGZpbmQgdGhlIC1kZXB0aCBvcHRpb24KK3RvIG1pbmltaXplIHByb2JsZW1zIHdpdGggcGVybWlzc2lvbnMgb24gZGlyZWN0b3JpZXMgdGhhdCBhcmUgdW53cml0YWJsZSBvciBub3QKK3NlYXJjaGFibGUuIiAgRG9uJ3QgZG8gdGhpcyB3aGVuIGNyZWF0aW5nIGluaXRyYW1mcy5jcGlvLmd6IGltYWdlcywgaXQgd29uJ3QKK3dvcmsuICBUaGUgTGludXgga2VybmVsIGNwaW8gZXh0cmFjdG9yIHdvbid0IGNyZWF0ZSBmaWxlcyBpbiBhIGRpcmVjdG9yeSB0aGF0Citkb2Vzbid0IGV4aXN0LCBzbyB0aGUgZGlyZWN0b3J5IGVudHJpZXMgbXVzdCBnbyBiZWZvcmUgdGhlIGZpbGVzIHRoYXQgZ28gaW4KK3Rob3NlIGRpcmVjdG9yaWVzLiAgVGhlIGFib3ZlIHNjcmlwdCBnZXRzIHRoZW0gaW4gdGhlIHJpZ2h0IG9yZGVyLgorCitFeHRlcm5hbCBpbml0cmFtZnMgaW1hZ2VzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgdGhlIGtlcm5lbCBoYXMgaW5pdHJkIHN1cHBvcnQgZW5hYmxlZCwgYW4gZXh0ZXJuYWwgY3Bpby5neiBhcmNoaXZlIGNhbiBhbHNvCitiZSBwYXNzZWQgaW50byBhIDIuNiBrZXJuZWwgaW4gcGxhY2Ugb2YgYW4gaW5pdHJkLiAgSW4gdGhpcyBjYXNlLCB0aGUga2VybmVsCit3aWxsIGF1dG9kZXRlY3QgdGhlIHR5cGUgKGluaXRyYW1mcywgbm90IGluaXRyZCkgYW5kIGV4dHJhY3QgdGhlIGV4dGVybmFsIGNwaW8KK2FyY2hpdmUgaW50byByb290ZnMgYmVmb3JlIHRyeWluZyB0byBydW4gL2luaXQuCisKK1RoaXMgaGFzIHRoZSBtZW1vcnkgZWZmaWNpZW5jeSBhZHZhbnRhZ2VzIG9mIGluaXRyYW1mcyAobm8gcmFtZGlzayBibG9jaworZGV2aWNlKSBidXQgdGhlIHNlcGFyYXRlIHBhY2thZ2luZyBvZiBpbml0cmQgKHdoaWNoIGlzIG5pY2UgaWYgeW91IGhhdmUKK25vbi1HUEwgY29kZSB5b3UnZCBsaWtlIHRvIHJ1biBmcm9tIGluaXRyYW1mcywgd2l0aG91dCBjb25mbGF0aW5nIGl0IHdpdGgKK3RoZSBHUEwgbGljZW5zZWQgTGludXgga2VybmVsIGJpbmFyeSkuCisKK0l0IGNhbiBhbHNvIGJlIHVzZWQgdG8gc3VwcGxlbWVudCB0aGUga2VybmVsJ3MgYnVpbHQtaW4gaW5pdHJhbWZzIGltYWdlLiAgVGhlCitmaWxlcyBpbiB0aGUgZXh0ZXJuYWwgYXJjaGl2ZSB3aWxsIG92ZXJ3cml0ZSBhbnkgY29uZmxpY3RpbmcgZmlsZXMgaW4KK3RoZSBidWlsdC1pbiBpbml0cmFtZnMgYXJjaGl2ZS4gIFNvbWUgZGlzdHJpYnV0b3JzIGFsc28gcHJlZmVyIHRvIGN1c3RvbWl6ZQorYSBzaW5nbGUga2VybmVsIGltYWdlIHdpdGggdGFzay1zcGVjaWZpYyBpbml0cmFtZnMgaW1hZ2VzLCB3aXRob3V0IHJlY29tcGlsaW5nLgorCitDb250ZW50cyBvZiBpbml0cmFtZnM6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FuIGluaXRyYW1mcyBhcmNoaXZlIGlzIGEgY29tcGxldGUgc2VsZi1jb250YWluZWQgcm9vdCBmaWxlc3lzdGVtIGZvciBMaW51eC4KK0lmIHlvdSBkb24ndCBhbHJlYWR5IHVuZGVyc3RhbmQgd2hhdCBzaGFyZWQgbGlicmFyaWVzLCBkZXZpY2VzLCBhbmQgcGF0aHMKK3lvdSBuZWVkIHRvIGdldCBhIG1pbmltYWwgcm9vdCBmaWxlc3lzdGVtIHVwIGFuZCBydW5uaW5nLCBoZXJlIGFyZSBzb21lCityZWZlcmVuY2VzOgoraHR0cDovL3d3dy50bGRwLm9yZy9IT1dUTy9Cb290ZGlzay1IT1dUTy8KK2h0dHA6Ly93d3cudGxkcC5vcmcvSE9XVE8vRnJvbS1Qb3dlclVwLVRvLUJhc2gtUHJvbXB0LUhPV1RPLmh0bWwKK2h0dHA6Ly93d3cubGludXhmcm9tc2NyYXRjaC5vcmcvbGZzL3ZpZXcvc3RhYmxlLworCitUaGUgImtsaWJjIiBwYWNrYWdlIChodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L2xpYnMva2xpYmMpIGlzCitkZXNpZ25lZCB0byBiZSBhIHRpbnkgQyBsaWJyYXJ5IHRvIHN0YXRpY2FsbHkgbGluayBlYXJseSB1c2Vyc3BhY2UKK2NvZGUgYWdhaW5zdCwgYWxvbmcgd2l0aCBzb21lIHJlbGF0ZWQgdXRpbGl0aWVzLiAgSXQgaXMgQlNEIGxpY2Vuc2VkLgorCitJIHVzZSB1Q2xpYmMgKGh0dHA6Ly93d3cudWNsaWJjLm9yZykgYW5kIGJ1c3lib3ggKGh0dHA6Ly93d3cuYnVzeWJveC5uZXQpCitteXNlbGYuICBUaGVzZSBhcmUgTEdQTCBhbmQgR1BMLCByZXNwZWN0aXZlbHkuICAoQSBzZWxmLWNvbnRhaW5lZCBpbml0cmFtZnMKK3BhY2thZ2UgaXMgcGxhbm5lZCBmb3IgdGhlIGJ1c3lib3ggMS4zIHJlbGVhc2UuKQorCitJbiB0aGVvcnkgeW91IGNvdWxkIHVzZSBnbGliYywgYnV0IHRoYXQncyBub3Qgd2VsbCBzdWl0ZWQgZm9yIHNtYWxsIGVtYmVkZGVkCit1c2VzIGxpa2UgdGhpcy4gIChBICJoZWxsbyB3b3JsZCIgcHJvZ3JhbSBzdGF0aWNhbGx5IGxpbmtlZCBhZ2FpbnN0IGdsaWJjIGlzCitvdmVyIDQwMGsuICBXaXRoIHVDbGliYyBpdCdzIDdrLiAgQWxzbyBub3RlIHRoYXQgZ2xpYmMgZGxvcGVucyBsaWJuc3MgdG8gZG8KK25hbWUgbG9va3VwcywgZXZlbiB3aGVuIG90aGVyd2lzZSBzdGF0aWNhbGx5IGxpbmtlZC4pCisKK0EgZ29vZCBmaXJzdCBzdGVwIGlzIHRvIGdldCBpbml0cmFtZnMgdG8gcnVuIGEgc3RhdGljYWxseSBsaW5rZWQgImhlbGxvIHdvcmxkIgorcHJvZ3JhbSBhcyBpbml0LCBhbmQgdGVzdCBpdCB1bmRlciBhbiBlbXVsYXRvciBsaWtlIHFlbXUgKHd3dy5xZW11Lm9yZykgb3IKK1VzZXIgTW9kZSBMaW51eCwgbGlrZSBzbzoKKworICBjYXQgPiBoZWxsby5jIDw8IEVPRgorICAjaW5jbHVkZSA8c3RkaW8uaD4KKyAgI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisgIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgIHsKKyAgICBwcmludGYoIkhlbGxvIHdvcmxkIVxuIik7CisgICAgc2xlZXAoOTk5OTk5OTk5KTsKKyAgfQorICBFT0YKKyAgZ2NjIC1zdGF0aWMgaGVsbG8uYyAtbyBpbml0CisgIGVjaG8gaW5pdCB8IGNwaW8gLW8gLUggbmV3YyB8IGd6aXAgPiB0ZXN0LmNwaW8uZ3oKKyAgIyBUZXN0aW5nIGV4dGVybmFsIGluaXRyYW1mcyB1c2luZyB0aGUgaW5pdHJkIGxvYWRpbmcgbWVjaGFuaXNtLgorICBxZW11IC1rZXJuZWwgL2Jvb3Qvdm1saW51eiAtaW5pdHJkIHRlc3QuY3Bpby5neiAvZGV2L3plcm8KKworV2hlbiBkZWJ1Z2dpbmcgYSBub3JtYWwgcm9vdCBmaWxlc3lzdGVtLCBpdCdzIG5pY2UgdG8gYmUgYWJsZSB0byBib290IHdpdGgKKyJpbml0PS9iaW4vc2giLiAgVGhlIGluaXRyYW1mcyBlcXVpdmFsZW50IGlzICJyZGluaXQ9L2Jpbi9zaCIsIGFuZCBpdCdzCitqdXN0IGFzIHVzZWZ1bC4KKworV2h5IGNwaW8gcmF0aGVyIHRoYW4gdGFyPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGRlY2lzaW9uIHdhcyBtYWRlIGJhY2sgaW4gRGVjZW1iZXIsIDIwMDEuICBUaGUgZGlzY3Vzc2lvbiBzdGFydGVkIGhlcmU6CisKKyAgaHR0cDovL3d3dy51d3NnLml1LmVkdS9oeXBlcm1haWwvbGludXgva2VybmVsLzAxMTIuMi8xNTM4Lmh0bWwKKworQW5kIHNwYXduZWQgYSBzZWNvbmQgdGhyZWFkIChzcGVjaWZpY2FsbHkgb24gdGFyIHZzIGNwaW8pLCBzdGFydGluZyBoZXJlOgorCisgIGh0dHA6Ly93d3cudXdzZy5pdS5lZHUvaHlwZXJtYWlsL2xpbnV4L2tlcm5lbC8wMTEyLjIvMTU4Ny5odG1sCisKK1RoZSBxdWljayBhbmQgZGlydHkgc3VtbWFyeSB2ZXJzaW9uICh3aGljaCBpcyBubyBzdWJzdGl0dXRlIGZvciByZWFkaW5nCit0aGUgYWJvdmUgdGhyZWFkcykgaXM6CisKKzEpIGNwaW8gaXMgYSBzdGFuZGFyZC4gIEl0J3MgZGVjYWRlcyBvbGQgKGZyb20gdGhlIEFUJlQgZGF5cyksIGFuZCBhbHJlYWR5CisgICB3aWRlbHkgdXNlZCBvbiBMaW51eCAoaW5zaWRlIFJQTSwgUmVkIEhhdCdzIGRldmljZSBkcml2ZXIgZGlza3MpLiAgSGVyZSdzCisgICBhIExpbnV4IEpvdXJuYWwgYXJ0aWNsZSBhYm91dCBpdCBmcm9tIDE5OTY6CisKKyAgICAgIGh0dHA6Ly93d3cubGludXhqb3VybmFsLmNvbS9hcnRpY2xlLzEyMTMKKworICAgSXQncyBub3QgYXMgcG9wdWxhciBhcyB0YXIgYmVjYXVzZSB0aGUgdHJhZGl0aW9uYWwgY3BpbyBjb21tYW5kIGxpbmUgdG9vbHMKKyAgIHJlcXVpcmUgX3RydWx5X2hpZGVvdXNfIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuICBCdXQgdGhhdCBzYXlzIG5vdGhpbmcKKyAgIGVpdGhlciB3YXkgYWJvdXQgdGhlIGFyY2hpdmUgZm9ybWF0LCBhbmQgdGhlcmUgYXJlIGFsdGVybmF0aXZlIHRvb2xzLAorICAgc3VjaCBhczoKKworICAgICBodHRwOi8vZnJlZWNvZGUuY29tL3Byb2plY3RzL2FmaW8KKworMikgVGhlIGNwaW8gYXJjaGl2ZSBmb3JtYXQgY2hvc2VuIGJ5IHRoZSBrZXJuZWwgaXMgc2ltcGxlciBhbmQgY2xlYW5lciAoYW5kCisgICB0aHVzIGVhc2llciB0byBjcmVhdGUgYW5kIHBhcnNlKSB0aGFuIGFueSBvZiB0aGUgKGxpdGVyYWxseSBkb3plbnMgb2YpCisgICB2YXJpb3VzIHRhciBhcmNoaXZlIGZvcm1hdHMuICBUaGUgY29tcGxldGUgaW5pdHJhbWZzIGFyY2hpdmUgZm9ybWF0IGlzCisgICBleHBsYWluZWQgaW4gYnVmZmVyLWZvcm1hdC50eHQsIGNyZWF0ZWQgaW4gdXNyL2dlbl9pbml0X2NwaW8uYywgYW5kCisgICBleHRyYWN0ZWQgaW4gaW5pdC9pbml0cmFtZnMuYy4gIEFsbCB0aHJlZSB0b2dldGhlciBjb21lIHRvIGxlc3MgdGhhbiAyNmsKKyAgIHRvdGFsIG9mIGh1bWFuLXJlYWRhYmxlIHRleHQuCisKKzMpIFRoZSBHTlUgcHJvamVjdCBzdGFuZGFyZGl6aW5nIG9uIHRhciBpcyBhcHByb3hpbWF0ZWx5IGFzIHJlbGV2YW50IGFzCisgICBXaW5kb3dzIHN0YW5kYXJkaXppbmcgb24gemlwLiAgTGludXggaXMgbm90IHBhcnQgb2YgZWl0aGVyLCBhbmQgaXMgZnJlZQorICAgdG8gbWFrZSBpdHMgb3duIHRlY2huaWNhbCBkZWNpc2lvbnMuCisKKzQpIFNpbmNlIHRoaXMgaXMgYSBrZXJuZWwgaW50ZXJuYWwgZm9ybWF0LCBpdCBjb3VsZCBlYXNpbHkgaGF2ZSBiZWVuCisgICBzb21ldGhpbmcgYnJhbmQgbmV3LiAgVGhlIGtlcm5lbCBwcm92aWRlcyBpdHMgb3duIHRvb2xzIHRvIGNyZWF0ZSBhbmQKKyAgIGV4dHJhY3QgdGhpcyBmb3JtYXQgYW55d2F5LiAgVXNpbmcgYW4gZXhpc3Rpbmcgc3RhbmRhcmQgd2FzIHByZWZlcmFibGUsCisgICBidXQgbm90IGVzc2VudGlhbC4KKworNSkgQWwgVmlybyBtYWRlIHRoZSBkZWNpc2lvbiAocXVvdGU6ICJ0YXIgaXMgdWdseSBhcyBoZWxsIGFuZCBub3QgZ29pbmcgdG8gYmUKKyAgIHN1cHBvcnRlZCBvbiB0aGUga2VybmVsIHNpZGUiKToKKworICAgICAgaHR0cDovL3d3dy51d3NnLml1LmVkdS9oeXBlcm1haWwvbGludXgva2VybmVsLzAxMTIuMi8xNTQwLmh0bWwKKworICAgZXhwbGFpbmVkIGhpcyByZWFzb25pbmc6CisKKyAgICAgIGh0dHA6Ly93d3cudXdzZy5pdS5lZHUvaHlwZXJtYWlsL2xpbnV4L2tlcm5lbC8wMTEyLjIvMTU1MC5odG1sCisgICAgICBodHRwOi8vd3d3LnV3c2cuaXUuZWR1L2h5cGVybWFpbC9saW51eC9rZXJuZWwvMDExMi4yLzE2MzguaHRtbAorCisgICBhbmQsIG1vc3QgaW1wb3J0YW50bHksIGRlc2lnbmVkIGFuZCBpbXBsZW1lbnRlZCB0aGUgaW5pdHJhbWZzIGNvZGUuCisKK0Z1dHVyZSBkaXJlY3Rpb25zOgorLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RvZGF5ICgyLjYuMTYpLCBpbml0cmFtZnMgaXMgYWx3YXlzIGNvbXBpbGVkIGluLCBidXQgbm90IGFsd2F5cyB1c2VkLiAgVGhlCitrZXJuZWwgZmFsbHMgYmFjayB0byBsZWdhY3kgYm9vdCBjb2RlIHRoYXQgaXMgcmVhY2hlZCBvbmx5IGlmIGluaXRyYW1mcyBkb2VzCitub3QgY29udGFpbiBhbiAvaW5pdCBwcm9ncmFtLiAgVGhlIGZhbGxiYWNrIGlzIGxlZ2FjeSBjb2RlLCB0aGVyZSB0byBlbnN1cmUgYQorc21vb3RoIHRyYW5zaXRpb24gYW5kIGFsbG93aW5nIGVhcmx5IGJvb3QgZnVuY3Rpb25hbGl0eSB0byBncmFkdWFsbHkgbW92ZSB0bworImVhcmx5IHVzZXJzcGFjZSIgKEkuRS4gaW5pdHJhbWZzKS4KKworVGhlIG1vdmUgdG8gZWFybHkgdXNlcnNwYWNlIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGZpbmRpbmcgYW5kIG1vdW50aW5nIHRoZSByZWFsCityb290IGRldmljZSBpcyBjb21wbGV4LiAgUm9vdCBwYXJ0aXRpb25zIGNhbiBzcGFuIG11bHRpcGxlIGRldmljZXMgKHJhaWQgb3IKK3NlcGFyYXRlIGpvdXJuYWwpLiAgVGhleSBjYW4gYmUgb3V0IG9uIHRoZSBuZXR3b3JrIChyZXF1aXJpbmcgZGhjcCwgc2V0dGluZyBhCitzcGVjaWZpYyBNQUMgYWRkcmVzcywgbG9nZ2luZyBpbnRvIGEgc2VydmVyLCBldGMpLiAgVGhleSBjYW4gbGl2ZSBvbiByZW1vdmFibGUKK21lZGlhLCB3aXRoIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBtYWpvci9taW5vciBudW1iZXJzIGFuZCBwZXJzaXN0ZW50IG5hbWluZworaXNzdWVzIHJlcXVpcmluZyBhIGZ1bGwgdWRldiBpbXBsZW1lbnRhdGlvbiB0byBzb3J0IG91dC4gIFRoZXkgY2FuIGJlCitjb21wcmVzc2VkLCBlbmNyeXB0ZWQsIGNvcHktb24td3JpdGUsIGxvb3BiYWNrIG1vdW50ZWQsIHN0cmFuZ2VseSBwYXJ0aXRpb25lZCwKK2FuZCBzbyBvbi4KKworVGhpcyBraW5kIG9mIGNvbXBsZXhpdHkgKHdoaWNoIGluZXZpdGFibHkgaW5jbHVkZXMgcG9saWN5KSBpcyByaWdodGx5IGhhbmRsZWQKK2luIHVzZXJzcGFjZS4gIEJvdGgga2xpYmMgYW5kIGJ1c3lib3gvdUNsaWJjIGFyZSB3b3JraW5nIG9uIHNpbXBsZSBpbml0cmFtZnMKK3BhY2thZ2VzIHRvIGRyb3AgaW50byBhIGtlcm5lbCBidWlsZC4KKworVGhlIGtsaWJjIHBhY2thZ2UgaGFzIG5vdyBiZWVuIGFjY2VwdGVkIGludG8gQW5kcmV3IE1vcnRvbidzIDIuNi4xNy1tbSB0cmVlLgorVGhlIGtlcm5lbCdzIGN1cnJlbnQgZWFybHkgYm9vdCBjb2RlIChwYXJ0aXRpb24gZGV0ZWN0aW9uLCBldGMpIHdpbGwgcHJvYmFibHkKK2JlIG1pZ3JhdGVkIGludG8gYSBkZWZhdWx0IGluaXRyYW1mcywgYXV0b21hdGljYWxseSBjcmVhdGVkIGFuZCB1c2VkIGJ5IHRoZQora2VybmVsIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9yZWxheS50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3JlbGF5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2UyZjM2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9yZWxheS50eHQKQEAgLTAsMCArMSw0OTQgQEAKK3JlbGF5IGludGVyZmFjZSAoZm9ybWVybHkgcmVsYXlmcykKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHJlbGF5IGludGVyZmFjZSBwcm92aWRlcyBhIG1lYW5zIGZvciBrZXJuZWwgYXBwbGljYXRpb25zIHRvCitlZmZpY2llbnRseSBsb2cgYW5kIHRyYW5zZmVyIGxhcmdlIHF1YW50aXRpZXMgb2YgZGF0YSBmcm9tIHRoZSBrZXJuZWwKK3RvIHVzZXJzcGFjZSB2aWEgdXNlci1kZWZpbmVkICdyZWxheSBjaGFubmVscycuCisKK0EgJ3JlbGF5IGNoYW5uZWwnIGlzIGEga2VybmVsLT51c2VyIGRhdGEgcmVsYXkgbWVjaGFuaXNtIGltcGxlbWVudGVkCithcyBhIHNldCBvZiBwZXItY3B1IGtlcm5lbCBidWZmZXJzICgnY2hhbm5lbCBidWZmZXJzJyksIGVhY2gKK3JlcHJlc2VudGVkIGFzIGEgcmVndWxhciBmaWxlICgncmVsYXkgZmlsZScpIGluIHVzZXIgc3BhY2UuICBLZXJuZWwKK2NsaWVudHMgd3JpdGUgaW50byB0aGUgY2hhbm5lbCBidWZmZXJzIHVzaW5nIGVmZmljaWVudCB3cml0ZQorZnVuY3Rpb25zOyB0aGVzZSBhdXRvbWF0aWNhbGx5IGxvZyBpbnRvIHRoZSBjdXJyZW50IGNwdSdzIGNoYW5uZWwKK2J1ZmZlci4gIFVzZXIgc3BhY2UgYXBwbGljYXRpb25zIG1tYXAoKSBvciByZWFkKCkgZnJvbSB0aGUgcmVsYXkgZmlsZXMKK2FuZCByZXRyaWV2ZSB0aGUgZGF0YSBhcyBpdCBiZWNvbWVzIGF2YWlsYWJsZS4gIFRoZSByZWxheSBmaWxlcwordGhlbXNlbHZlcyBhcmUgZmlsZXMgY3JlYXRlZCBpbiBhIGhvc3QgZmlsZXN5c3RlbSwgZS5nLiBkZWJ1Z2ZzLCBhbmQKK2FyZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNoYW5uZWwgYnVmZmVycyB1c2luZyB0aGUgQVBJIGRlc2NyaWJlZCBiZWxvdy4KKworVGhlIGZvcm1hdCBvZiB0aGUgZGF0YSBsb2dnZWQgaW50byB0aGUgY2hhbm5lbCBidWZmZXJzIGlzIGNvbXBsZXRlbHkKK3VwIHRvIHRoZSBrZXJuZWwgY2xpZW50OyB0aGUgcmVsYXkgaW50ZXJmYWNlIGRvZXMgaG93ZXZlciBwcm92aWRlCitob29rcyB3aGljaCBhbGxvdyBrZXJuZWwgY2xpZW50cyB0byBpbXBvc2Ugc29tZSBzdHJ1Y3R1cmUgb24gdGhlCitidWZmZXIgZGF0YS4gIFRoZSByZWxheSBpbnRlcmZhY2UgZG9lc24ndCBpbXBsZW1lbnQgYW55IGZvcm0gb2YgZGF0YQorZmlsdGVyaW5nIC0gdGhpcyBhbHNvIGlzIGxlZnQgdG8gdGhlIGtlcm5lbCBjbGllbnQuICBUaGUgcHVycG9zZSBpcyB0bwora2VlcCB0aGluZ3MgYXMgc2ltcGxlIGFzIHBvc3NpYmxlLgorCitUaGlzIGRvY3VtZW50IHByb3ZpZGVzIGFuIG92ZXJ2aWV3IG9mIHRoZSByZWxheSBpbnRlcmZhY2UgQVBJLiAgVGhlCitkZXRhaWxzIG9mIHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXJzIGFyZSBkb2N1bWVudGVkIGFsb25nIHdpdGggdGhlCitmdW5jdGlvbnMgaW4gdGhlIHJlbGF5IGludGVyZmFjZSBjb2RlIC0gcGxlYXNlIHNlZSB0aGF0IGZvciBkZXRhaWxzLgorCitTZW1hbnRpY3MKKz09PT09PT09PQorCitFYWNoIHJlbGF5IGNoYW5uZWwgaGFzIG9uZSBidWZmZXIgcGVyIENQVSwgZWFjaCBidWZmZXIgaGFzIG9uZSBvciBtb3JlCitzdWItYnVmZmVycy4gIE1lc3NhZ2VzIGFyZSB3cml0dGVuIHRvIHRoZSBmaXJzdCBzdWItYnVmZmVyIHVudGlsIGl0IGlzCit0b28gZnVsbCB0byBjb250YWluIGEgbmV3IG1lc3NhZ2UsIGluIHdoaWNoIGNhc2UgaXQgaXMgd3JpdHRlbiB0bwordGhlIG5leHQgKGlmIGF2YWlsYWJsZSkuICBNZXNzYWdlcyBhcmUgbmV2ZXIgc3BsaXQgYWNyb3NzIHN1Yi1idWZmZXJzLgorQXQgdGhpcyBwb2ludCwgdXNlcnNwYWNlIGNhbiBiZSBub3RpZmllZCBzbyBpdCBlbXB0aWVzIHRoZSBmaXJzdAorc3ViLWJ1ZmZlciwgd2hpbGUgdGhlIGtlcm5lbCBjb250aW51ZXMgd3JpdGluZyB0byB0aGUgbmV4dC4KKworV2hlbiBub3RpZmllZCB0aGF0IGEgc3ViLWJ1ZmZlciBpcyBmdWxsLCB0aGUga2VybmVsIGtub3dzIGhvdyBtYW55CitieXRlcyBvZiBpdCBhcmUgcGFkZGluZyBpLmUuIHVudXNlZCBzcGFjZSBvY2N1cnJpbmcgYmVjYXVzZSBhIGNvbXBsZXRlCittZXNzYWdlIGNvdWxkbid0IGZpdCBpbnRvIGEgc3ViLWJ1ZmZlci4gIFVzZXJzcGFjZSBjYW4gdXNlIHRoaXMKK2tub3dsZWRnZSB0byBjb3B5IG9ubHkgdmFsaWQgZGF0YS4KKworQWZ0ZXIgY29weWluZyBpdCwgdXNlcnNwYWNlIGNhbiBub3RpZnkgdGhlIGtlcm5lbCB0aGF0IGEgc3ViLWJ1ZmZlcgoraGFzIGJlZW4gY29uc3VtZWQuCisKK0EgcmVsYXkgY2hhbm5lbCBjYW4gb3BlcmF0ZSBpbiBhIG1vZGUgd2hlcmUgaXQgd2lsbCBvdmVyd3JpdGUgZGF0YSBub3QKK3lldCBjb2xsZWN0ZWQgYnkgdXNlcnNwYWNlLCBhbmQgbm90IHdhaXQgZm9yIGl0IHRvIGJlIGNvbnN1bWVkLgorCitUaGUgcmVsYXkgY2hhbm5lbCBpdHNlbGYgZG9lcyBub3QgcHJvdmlkZSBmb3IgY29tbXVuaWNhdGlvbiBvZiBzdWNoCitkYXRhIGJldHdlZW4gdXNlcnNwYWNlIGFuZCBrZXJuZWwsIGFsbG93aW5nIHRoZSBrZXJuZWwgc2lkZSB0byByZW1haW4KK3NpbXBsZSBhbmQgbm90IGltcG9zZSBhIHNpbmdsZSBpbnRlcmZhY2Ugb24gdXNlcnNwYWNlLiAgSXQgZG9lcworcHJvdmlkZSBhIHNldCBvZiBleGFtcGxlcyBhbmQgYSBzZXBhcmF0ZSBoZWxwZXIgdGhvdWdoLCBkZXNjcmliZWQKK2JlbG93LgorCitUaGUgcmVhZCgpIGludGVyZmFjZSBib3RoIHJlbW92ZXMgcGFkZGluZyBhbmQgaW50ZXJuYWxseSBjb25zdW1lcyB0aGUKK3JlYWQgc3ViLWJ1ZmZlcnM7IHRodXMgaW4gY2FzZXMgd2hlcmUgcmVhZCgyKSBpcyBiZWluZyB1c2VkIHRvIGRyYWluCit0aGUgY2hhbm5lbCBidWZmZXJzLCBzcGVjaWFsLXB1cnBvc2UgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIGtlcm5lbCBhbmQKK3VzZXIgaXNuJ3QgbmVjZXNzYXJ5IGZvciBiYXNpYyBvcGVyYXRpb24uCisKK09uZSBvZiB0aGUgbWFqb3IgZ29hbHMgb2YgdGhlIHJlbGF5IGludGVyZmFjZSBpcyB0byBwcm92aWRlIGEgbG93CitvdmVyaGVhZCBtZWNoYW5pc20gZm9yIGNvbnZleWluZyBrZXJuZWwgZGF0YSB0byB1c2Vyc3BhY2UuICBXaGlsZSB0aGUKK3JlYWQoKSBpbnRlcmZhY2UgaXMgZWFzeSB0byB1c2UsIGl0J3Mgbm90IGFzIGVmZmljaWVudCBhcyB0aGUgbW1hcCgpCithcHByb2FjaDsgdGhlIGV4YW1wbGUgY29kZSBhdHRlbXB0cyB0byBtYWtlIHRoZSB0cmFkZW9mZiBiZXR3ZWVuIHRoZQordHdvIGFwcHJvYWNoZXMgYXMgc21hbGwgYXMgcG9zc2libGUuCisKK2tsb2cgYW5kIHJlbGF5LWFwcHMgZXhhbXBsZSBjb2RlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgcmVsYXkgaW50ZXJmYWNlIGl0c2VsZiBpcyByZWFkeSB0byB1c2UsIGJ1dCB0byBtYWtlIHRoaW5ncyBlYXNpZXIsCithIGNvdXBsZSBzaW1wbGUgdXRpbGl0eSBmdW5jdGlvbnMgYW5kIGEgc2V0IG9mIGV4YW1wbGVzIGFyZSBwcm92aWRlZC4KKworVGhlIHJlbGF5LWFwcHMgZXhhbXBsZSB0YXJiYWxsLCBhdmFpbGFibGUgb24gdGhlIHJlbGF5IHNvdXJjZWZvcmdlCitzaXRlLCBjb250YWlucyBhIHNldCBvZiBzZWxmLWNvbnRhaW5lZCBleGFtcGxlcywgZWFjaCBjb25zaXN0aW5nIG9mIGEKK3BhaXIgb2YgLmMgZmlsZXMgY29udGFpbmluZyBib2lsZXJwbGF0ZSBjb2RlIGZvciBlYWNoIG9mIHRoZSB1c2VyIGFuZAora2VybmVsIHNpZGVzIG9mIGEgcmVsYXkgYXBwbGljYXRpb24uICBXaGVuIGNvbWJpbmVkIHRoZXNlIHR3byBzZXRzIG9mCitib2lsZXJwbGF0ZSBjb2RlIHByb3ZpZGUgZ2x1ZSB0byBlYXNpbHkgc3RyZWFtIGRhdGEgdG8gZGlzaywgd2l0aG91dAoraGF2aW5nIHRvIGJvdGhlciB3aXRoIG11bmRhbmUgaG91c2VrZWVwaW5nIGNob3Jlcy4KKworVGhlICdrbG9nIGRlYnVnZ2luZyBmdW5jdGlvbnMnIHBhdGNoIChrbG9nLnBhdGNoIGluIHRoZSByZWxheS1hcHBzCit0YXJiYWxsKSBwcm92aWRlcyBhIGNvdXBsZSBvZiBoaWdoLWxldmVsIGxvZ2dpbmcgZnVuY3Rpb25zIHRvIHRoZQora2VybmVsIHdoaWNoIGFsbG93IHdyaXRpbmcgZm9ybWF0dGVkIHRleHQgb3IgcmF3IGRhdGEgdG8gYSBjaGFubmVsLAorcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGEgY2hhbm5lbCB0byB3cml0ZSBpbnRvIGV4aXN0cyBvciBub3QsIG9yIGV2ZW4KK3doZXRoZXIgdGhlIHJlbGF5IGludGVyZmFjZSBpcyBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgb3Igbm90LiAgVGhlc2UKK2Z1bmN0aW9ucyBhbGxvdyB5b3UgdG8gcHV0IHVuY29uZGl0aW9uYWwgJ3RyYWNlJyBzdGF0ZW1lbnRzIGFueXdoZXJlCitpbiB0aGUga2VybmVsIG9yIGtlcm5lbCBtb2R1bGVzOyBvbmx5IHdoZW4gdGhlcmUgaXMgYSAna2xvZyBoYW5kbGVyJworcmVnaXN0ZXJlZCB3aWxsIGRhdGEgYWN0dWFsbHkgYmUgbG9nZ2VkIChzZWUgdGhlIGtsb2cgYW5kIGtsZWFrCitleGFtcGxlcyBmb3IgZGV0YWlscykuCisKK0l0IGlzIG9mIGNvdXJzZSBwb3NzaWJsZSB0byB1c2UgdGhlIHJlbGF5IGludGVyZmFjZSBmcm9tIHNjcmF0Y2gsCitpLmUuIHdpdGhvdXQgdXNpbmcgYW55IG9mIHRoZSByZWxheS1hcHBzIGV4YW1wbGUgY29kZSBvciBrbG9nLCBidXQKK3lvdSdsbCBoYXZlIHRvIGltcGxlbWVudCBjb21tdW5pY2F0aW9uIGJldHdlZW4gdXNlcnNwYWNlIGFuZCBrZXJuZWwsCithbGxvd2luZyBib3RoIHRvIGNvbnZleSB0aGUgc3RhdGUgb2YgYnVmZmVycyAoZnVsbCwgZW1wdHksIGFtb3VudCBvZgorcGFkZGluZykuICBUaGUgcmVhZCgpIGludGVyZmFjZSBib3RoIHJlbW92ZXMgcGFkZGluZyBhbmQgaW50ZXJuYWxseQorY29uc3VtZXMgdGhlIHJlYWQgc3ViLWJ1ZmZlcnM7IHRodXMgaW4gY2FzZXMgd2hlcmUgcmVhZCgyKSBpcyBiZWluZwordXNlZCB0byBkcmFpbiB0aGUgY2hhbm5lbCBidWZmZXJzLCBzcGVjaWFsLXB1cnBvc2UgY29tbXVuaWNhdGlvbgorYmV0d2VlbiBrZXJuZWwgYW5kIHVzZXIgaXNuJ3QgbmVjZXNzYXJ5IGZvciBiYXNpYyBvcGVyYXRpb24uICBUaGluZ3MKK3N1Y2ggYXMgYnVmZmVyLWZ1bGwgY29uZGl0aW9ucyB3b3VsZCBzdGlsbCBuZWVkIHRvIGJlIGNvbW11bmljYXRlZCB2aWEKK3NvbWUgY2hhbm5lbCB0aG91Z2guCisKK2tsb2cgYW5kIHRoZSByZWxheS1hcHBzIGV4YW1wbGVzIGNhbiBiZSBmb3VuZCBpbiB0aGUgcmVsYXktYXBwcwordGFyYmFsbCBvbiBodHRwOi8vcmVsYXlmcy5zb3VyY2Vmb3JnZS5uZXQKKworVGhlIHJlbGF5IGludGVyZmFjZSB1c2VyIHNwYWNlIEFQSQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgcmVsYXkgaW50ZXJmYWNlIGltcGxlbWVudHMgYmFzaWMgZmlsZSBvcGVyYXRpb25zIGZvciB1c2VyIHNwYWNlCithY2Nlc3MgdG8gcmVsYXkgY2hhbm5lbCBidWZmZXIgZGF0YS4gIEhlcmUgYXJlIHRoZSBmaWxlIG9wZXJhdGlvbnMKK3RoYXQgYXJlIGF2YWlsYWJsZSBhbmQgc29tZSBjb21tZW50cyByZWdhcmRpbmcgdGhlaXIgYmVoYXZpb3I6CisKK29wZW4oKQkgICAgZW5hYmxlcyB1c2VyIHRvIG9wZW4gYW4gX2V4aXN0aW5nXyBjaGFubmVsIGJ1ZmZlci4KKworbW1hcCgpICAgICAgcmVzdWx0cyBpbiBjaGFubmVsIGJ1ZmZlciBiZWluZyBtYXBwZWQgaW50byB0aGUgY2FsbGVyJ3MKKwkgICAgbWVtb3J5IHNwYWNlLiBOb3RlIHRoYXQgeW91IGNhbid0IGRvIGEgcGFydGlhbCBtbWFwIC0geW91CisJICAgIG11c3QgbWFwIHRoZSBlbnRpcmUgZmlsZSwgd2hpY2ggaXMgTlJCVUYgKiBTVUJCVUZTSVpFLgorCityZWFkKCkgICAgICByZWFkIHRoZSBjb250ZW50cyBvZiBhIGNoYW5uZWwgYnVmZmVyLiAgVGhlIGJ5dGVzIHJlYWQgYXJlCisJICAgICdjb25zdW1lZCcgYnkgdGhlIHJlYWRlciwgaS5lLiB0aGV5IHdvbid0IGJlIGF2YWlsYWJsZQorCSAgICBhZ2FpbiB0byBzdWJzZXF1ZW50IHJlYWRzLiAgSWYgdGhlIGNoYW5uZWwgaXMgYmVpbmcgdXNlZAorCSAgICBpbiBuby1vdmVyd3JpdGUgbW9kZSAodGhlIGRlZmF1bHQpLCBpdCBjYW4gYmUgcmVhZCBhdCBhbnkKKwkgICAgdGltZSBldmVuIGlmIHRoZXJlJ3MgYW4gYWN0aXZlIGtlcm5lbCB3cml0ZXIuICBJZiB0aGUKKwkgICAgY2hhbm5lbCBpcyBiZWluZyB1c2VkIGluIG92ZXJ3cml0ZSBtb2RlIGFuZCB0aGVyZSBhcmUKKwkgICAgYWN0aXZlIGNoYW5uZWwgd3JpdGVycywgcmVzdWx0cyBtYXkgYmUgdW5wcmVkaWN0YWJsZSAtCisJICAgIHVzZXJzIHNob3VsZCBtYWtlIHN1cmUgdGhhdCBhbGwgbG9nZ2luZyB0byB0aGUgY2hhbm5lbCBoYXMKKwkgICAgZW5kZWQgYmVmb3JlIHVzaW5nIHJlYWQoKSB3aXRoIG92ZXJ3cml0ZSBtb2RlLiAgU3ViLWJ1ZmZlcgorCSAgICBwYWRkaW5nIGlzIGF1dG9tYXRpY2FsbHkgcmVtb3ZlZCBhbmQgd2lsbCBub3QgYmUgc2VlbiBieQorCSAgICB0aGUgcmVhZGVyLgorCitzZW5kZmlsZSgpICB0cmFuc2ZlciBkYXRhIGZyb20gYSBjaGFubmVsIGJ1ZmZlciB0byBhbiBvdXRwdXQgZmlsZQorCSAgICBkZXNjcmlwdG9yLiBTdWItYnVmZmVyIHBhZGRpbmcgaXMgYXV0b21hdGljYWxseSByZW1vdmVkCisJICAgIGFuZCB3aWxsIG5vdCBiZSBzZWVuIGJ5IHRoZSByZWFkZXIuCisKK3BvbGwoKSAgICAgIFBPTExJTi9QT0xMUkROT1JNL1BPTExFUlIgc3VwcG9ydGVkLiAgVXNlciBhcHBsaWNhdGlvbnMgYXJlCisJICAgIG5vdGlmaWVkIHdoZW4gc3ViLWJ1ZmZlciBib3VuZGFyaWVzIGFyZSBjcm9zc2VkLgorCitjbG9zZSgpICAgICBkZWNyZW1lbnRzIHRoZSBjaGFubmVsIGJ1ZmZlcidzIHJlZmNvdW50LiAgV2hlbiB0aGUgcmVmY291bnQKKwkgICAgcmVhY2hlcyAwLCBpLmUuIHdoZW4gbm8gcHJvY2VzcyBvciBrZXJuZWwgY2xpZW50IGhhcyB0aGUKKwkgICAgYnVmZmVyIG9wZW4sIHRoZSBjaGFubmVsIGJ1ZmZlciBpcyBmcmVlZC4KKworSW4gb3JkZXIgZm9yIGEgdXNlciBhcHBsaWNhdGlvbiB0byBtYWtlIHVzZSBvZiByZWxheSBmaWxlcywgdGhlCitob3N0IGZpbGVzeXN0ZW0gbXVzdCBiZSBtb3VudGVkLiAgRm9yIGV4YW1wbGUsCisKKwltb3VudCAtdCBkZWJ1Z2ZzIGRlYnVnZnMgL3N5cy9rZXJuZWwvZGVidWcKKworTk9URTogICB0aGUgaG9zdCBmaWxlc3lzdGVtIGRvZXNuJ3QgbmVlZCB0byBiZSBtb3VudGVkIGZvciBrZXJuZWwKKwljbGllbnRzIHRvIGNyZWF0ZSBvciB1c2UgY2hhbm5lbHMgLSBpdCBvbmx5IG5lZWRzIHRvIGJlCisJbW91bnRlZCB3aGVuIHVzZXIgc3BhY2UgYXBwbGljYXRpb25zIG5lZWQgYWNjZXNzIHRvIHRoZSBidWZmZXIKKwlkYXRhLgorCisKK1RoZSByZWxheSBpbnRlcmZhY2Uga2VybmVsIEFQSQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0hlcmUncyBhIHN1bW1hcnkgb2YgdGhlIEFQSSB0aGUgcmVsYXkgaW50ZXJmYWNlIHByb3ZpZGVzIHRvIGluLWtlcm5lbCBjbGllbnRzOgorCitUQkQoY3Vyci4gbGluZSBNVDovQVBJLykKKyAgY2hhbm5lbCBtYW5hZ2VtZW50IGZ1bmN0aW9uczoKKworICAgIHJlbGF5X29wZW4oYmFzZV9maWxlbmFtZSwgcGFyZW50LCBzdWJidWZfc2l6ZSwgbl9zdWJidWZzLAorICAgICAgICAgICAgICAgY2FsbGJhY2tzLCBwcml2YXRlX2RhdGEpCisgICAgcmVsYXlfY2xvc2UoY2hhbikKKyAgICByZWxheV9mbHVzaChjaGFuKQorICAgIHJlbGF5X3Jlc2V0KGNoYW4pCisKKyAgY2hhbm5lbCBtYW5hZ2VtZW50IHR5cGljYWxseSBjYWxsZWQgb24gaW5zdGlnYXRpb24gb2YgdXNlcnNwYWNlOgorCisgICAgcmVsYXlfc3ViYnVmc19jb25zdW1lZChjaGFuLCBjcHUsIHN1YmJ1ZnNfY29uc3VtZWQpCisKKyAgd3JpdGUgZnVuY3Rpb25zOgorCisgICAgcmVsYXlfd3JpdGUoY2hhbiwgZGF0YSwgbGVuZ3RoKQorICAgIF9fcmVsYXlfd3JpdGUoY2hhbiwgZGF0YSwgbGVuZ3RoKQorICAgIHJlbGF5X3Jlc2VydmUoY2hhbiwgbGVuZ3RoKQorCisgIGNhbGxiYWNrczoKKworICAgIHN1YmJ1Zl9zdGFydChidWYsIHN1YmJ1ZiwgcHJldl9zdWJidWYsIHByZXZfcGFkZGluZykKKyAgICBidWZfbWFwcGVkKGJ1ZiwgZmlscCkKKyAgICBidWZfdW5tYXBwZWQoYnVmLCBmaWxwKQorICAgIGNyZWF0ZV9idWZfZmlsZShmaWxlbmFtZSwgcGFyZW50LCBtb2RlLCBidWYsIGlzX2dsb2JhbCkKKyAgICByZW1vdmVfYnVmX2ZpbGUoZGVudHJ5KQorCisgIGhlbHBlciBmdW5jdGlvbnM6CisKKyAgICByZWxheV9idWZfZnVsbChidWYpCisgICAgc3ViYnVmX3N0YXJ0X3Jlc2VydmUoYnVmLCBsZW5ndGgpCisKKworQ3JlYXRpbmcgYSBjaGFubmVsCistLS0tLS0tLS0tLS0tLS0tLS0KKworcmVsYXlfb3BlbigpIGlzIHVzZWQgdG8gY3JlYXRlIGEgY2hhbm5lbCwgYWxvbmcgd2l0aCBpdHMgcGVyLWNwdQorY2hhbm5lbCBidWZmZXJzLiAgRWFjaCBjaGFubmVsIGJ1ZmZlciB3aWxsIGhhdmUgYW4gYXNzb2NpYXRlZCBmaWxlCitjcmVhdGVkIGZvciBpdCBpbiB0aGUgaG9zdCBmaWxlc3lzdGVtLCB3aGljaCBjYW4gYmUgYW5kIG1tYXBwZWQgb3IKK3JlYWQgZnJvbSBpbiB1c2VyIHNwYWNlLiAgVGhlIGZpbGVzIGFyZSBuYW1lZCBiYXNlbmFtZTAuLi5iYXNlbmFtZU4tMQord2hlcmUgTiBpcyB0aGUgbnVtYmVyIG9mIG9ubGluZSBjcHVzLCBhbmQgYnkgZGVmYXVsdCB3aWxsIGJlIGNyZWF0ZWQKK2luIHRoZSByb290IG9mIHRoZSBmaWxlc3lzdGVtIChpZiB0aGUgcGFyZW50IHBhcmFtIGlzIE5VTEwpLiAgSWYgeW91Cit3YW50IGEgZGlyZWN0b3J5IHN0cnVjdHVyZSB0byBjb250YWluIHlvdXIgcmVsYXkgZmlsZXMsIHlvdSBzaG91bGQKK2NyZWF0ZSBpdCB1c2luZyB0aGUgaG9zdCBmaWxlc3lzdGVtJ3MgZGlyZWN0b3J5IGNyZWF0aW9uIGZ1bmN0aW9uLAorZS5nLiBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoKSwgYW5kIHBhc3MgdGhlIHBhcmVudCBkaXJlY3RvcnkgdG8KK3JlbGF5X29wZW4oKS4gIFVzZXJzIGFyZSByZXNwb25zaWJsZSBmb3IgY2xlYW5pbmcgdXAgYW55IGRpcmVjdG9yeQorc3RydWN0dXJlIHRoZXkgY3JlYXRlLCB3aGVuIHRoZSBjaGFubmVsIGlzIGNsb3NlZCAtIGFnYWluIHRoZSBob3N0CitmaWxlc3lzdGVtJ3MgZGlyZWN0b3J5IHJlbW92YWwgZnVuY3Rpb25zIHNob3VsZCBiZSB1c2VkIGZvciB0aGF0LAorZS5nLiBkZWJ1Z2ZzX3JlbW92ZSgpLgorCitJbiBvcmRlciBmb3IgYSBjaGFubmVsIHRvIGJlIGNyZWF0ZWQgYW5kIHRoZSBob3N0IGZpbGVzeXN0ZW0ncyBmaWxlcworYXNzb2NpYXRlZCB3aXRoIGl0cyBjaGFubmVsIGJ1ZmZlcnMsIHRoZSB1c2VyIG11c3QgcHJvdmlkZSBkZWZpbml0aW9ucworZm9yIHR3byBjYWxsYmFjayBmdW5jdGlvbnMsIGNyZWF0ZV9idWZfZmlsZSgpIGFuZCByZW1vdmVfYnVmX2ZpbGUoKS4KK2NyZWF0ZV9idWZfZmlsZSgpIGlzIGNhbGxlZCBvbmNlIGZvciBlYWNoIHBlci1jcHUgYnVmZmVyIGZyb20KK3JlbGF5X29wZW4oKSBhbmQgYWxsb3dzIHRoZSB1c2VyIHRvIGNyZWF0ZSB0aGUgZmlsZSB3aGljaCB3aWxsIGJlIHVzZWQKK3RvIHJlcHJlc2VudCB0aGUgY29ycmVzcG9uZGluZyBjaGFubmVsIGJ1ZmZlci4gIFRoZSBjYWxsYmFjayBzaG91bGQKK3JldHVybiB0aGUgZGVudHJ5IG9mIHRoZSBmaWxlIGNyZWF0ZWQgdG8gcmVwcmVzZW50IHRoZSBjaGFubmVsIGJ1ZmZlci4KK3JlbW92ZV9idWZfZmlsZSgpIG11c3QgYWxzbyBiZSBkZWZpbmVkOyBpdCdzIHJlc3BvbnNpYmxlIGZvciBkZWxldGluZwordGhlIGZpbGUocykgY3JlYXRlZCBpbiBjcmVhdGVfYnVmX2ZpbGUoKSBhbmQgaXMgY2FsbGVkIGR1cmluZworcmVsYXlfY2xvc2UoKS4KKworSGVyZSBhcmUgc29tZSB0eXBpY2FsIGRlZmluaXRpb25zIGZvciB0aGVzZSBjYWxsYmFja3MsIGluIHRoaXMgY2FzZQordXNpbmcgZGVidWdmczoKKworLyoKKyAqIGNyZWF0ZV9idWZfZmlsZSgpIGNhbGxiYWNrLiAgQ3JlYXRlcyByZWxheSBmaWxlIGluIGRlYnVnZnMuCisgKi8KK3N0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpjcmVhdGVfYnVmX2ZpbGVfaGFuZGxlcihjb25zdCBjaGFyICpmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJjaGFuX2J1ZiAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqaXNfZ2xvYmFsKQoreworICAgICAgICByZXR1cm4gZGVidWdmc19jcmVhdGVfZmlsZShmaWxlbmFtZSwgbW9kZSwgcGFyZW50LCBidWYsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlbGF5X2ZpbGVfb3BlcmF0aW9ucyk7Cit9CisKKy8qCisgKiByZW1vdmVfYnVmX2ZpbGUoKSBjYWxsYmFjay4gIFJlbW92ZXMgcmVsYXkgZmlsZSBmcm9tIGRlYnVnZnMuCisgKi8KK3N0YXRpYyBpbnQgcmVtb3ZlX2J1Zl9maWxlX2hhbmRsZXIoc3RydWN0IGRlbnRyeSAqZGVudHJ5KQoreworICAgICAgICBkZWJ1Z2ZzX3JlbW92ZShkZW50cnkpOworCisgICAgICAgIHJldHVybiAwOworfQorCisvKgorICogcmVsYXkgaW50ZXJmYWNlIGNhbGxiYWNrcworICovCitzdGF0aWMgc3RydWN0IHJjaGFuX2NhbGxiYWNrcyByZWxheV9jYWxsYmFja3MgPQoreworICAgICAgICAuY3JlYXRlX2J1Zl9maWxlID0gY3JlYXRlX2J1Zl9maWxlX2hhbmRsZXIsCisgICAgICAgIC5yZW1vdmVfYnVmX2ZpbGUgPSByZW1vdmVfYnVmX2ZpbGVfaGFuZGxlciwKK307CisKK0FuZCBhbiBleGFtcGxlIHJlbGF5X29wZW4oKSBpbnZvY2F0aW9uIHVzaW5nIHRoZW06CisKKyAgY2hhbiA9IHJlbGF5X29wZW4oImNwdSIsIE5VTEwsIFNVQkJVRl9TSVpFLCBOX1NVQkJVRlMsICZyZWxheV9jYWxsYmFja3MsIE5VTEwpOworCitJZiB0aGUgY3JlYXRlX2J1Zl9maWxlKCkgY2FsbGJhY2sgZmFpbHMsIG9yIGlzbid0IGRlZmluZWQsIGNoYW5uZWwKK2NyZWF0aW9uIGFuZCB0aHVzIHJlbGF5X29wZW4oKSB3aWxsIGZhaWwuCisKK1RoZSB0b3RhbCBzaXplIG9mIGVhY2ggcGVyLWNwdSBidWZmZXIgaXMgY2FsY3VsYXRlZCBieSBtdWx0aXBseWluZyB0aGUKK251bWJlciBvZiBzdWItYnVmZmVycyBieSB0aGUgc3ViLWJ1ZmZlciBzaXplIHBhc3NlZCBpbnRvIHJlbGF5X29wZW4oKS4KK1RoZSBpZGVhIGJlaGluZCBzdWItYnVmZmVycyBpcyB0aGF0IHRoZXkncmUgYmFzaWNhbGx5IGFuIGV4dGVuc2lvbiBvZgorZG91YmxlLWJ1ZmZlcmluZyB0byBOIGJ1ZmZlcnMsIGFuZCB0aGV5IGFsc28gYWxsb3cgYXBwbGljYXRpb25zIHRvCitlYXNpbHkgaW1wbGVtZW50IHJhbmRvbS1hY2Nlc3Mtb24tYnVmZmVyLWJvdW5kYXJ5IHNjaGVtZXMsIHdoaWNoIGNhbgorYmUgaW1wb3J0YW50IGZvciBzb21lIGhpZ2gtdm9sdW1lIGFwcGxpY2F0aW9ucy4gIFRoZSBudW1iZXIgYW5kIHNpemUKK29mIHN1Yi1idWZmZXJzIGlzIGNvbXBsZXRlbHkgZGVwZW5kZW50IG9uIHRoZSBhcHBsaWNhdGlvbiBhbmQgZXZlbiBmb3IKK3RoZSBzYW1lIGFwcGxpY2F0aW9uLCBkaWZmZXJlbnQgY29uZGl0aW9ucyB3aWxsIHdhcnJhbnQgZGlmZmVyZW50Cit2YWx1ZXMgZm9yIHRoZXNlIHBhcmFtZXRlcnMgYXQgZGlmZmVyZW50IHRpbWVzLiAgVHlwaWNhbGx5LCB0aGUgcmlnaHQKK3ZhbHVlcyB0byB1c2UgYXJlIGJlc3QgZGVjaWRlZCBhZnRlciBzb21lIGV4cGVyaW1lbnRhdGlvbjsgaW4gZ2VuZXJhbCwKK3Rob3VnaCwgaXQncyBzYWZlIHRvIGFzc3VtZSB0aGF0IGhhdmluZyBvbmx5IDEgc3ViLWJ1ZmZlciBpcyBhIGJhZAoraWRlYSAtIHlvdSdyZSBndWFyYW50ZWVkIHRvIGVpdGhlciBvdmVyd3JpdGUgZGF0YSBvciBsb3NlIGV2ZW50cworZGVwZW5kaW5nIG9uIHRoZSBjaGFubmVsIG1vZGUgYmVpbmcgdXNlZC4KKworVGhlIGNyZWF0ZV9idWZfZmlsZSgpIGltcGxlbWVudGF0aW9uIGNhbiBhbHNvIGJlIGRlZmluZWQgaW4gc3VjaCBhIHdheQorYXMgdG8gYWxsb3cgdGhlIGNyZWF0aW9uIG9mIGEgc2luZ2xlICdnbG9iYWwnIGJ1ZmZlciBpbnN0ZWFkIG9mIHRoZQorZGVmYXVsdCBwZXItY3B1IHNldC4gIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgYXBwbGljYXRpb25zIGludGVyZXN0ZWQKK21haW5seSBpbiBzZWVpbmcgdGhlIHJlbGF0aXZlIG9yZGVyaW5nIG9mIHN5c3RlbS13aWRlIGV2ZW50cyB3aXRob3V0Cit0aGUgbmVlZCB0byBib3RoZXIgd2l0aCBzYXZpbmcgZXhwbGljaXQgdGltZXN0YW1wcyBmb3IgdGhlIHB1cnBvc2Ugb2YKK21lcmdpbmcvc29ydGluZyBwZXItY3B1IGZpbGVzIGluIGEgcG9zdHByb2Nlc3Npbmcgc3RlcC4KKworVG8gaGF2ZSByZWxheV9vcGVuKCkgY3JlYXRlIGEgZ2xvYmFsIGJ1ZmZlciwgdGhlIGNyZWF0ZV9idWZfZmlsZSgpCitpbXBsZW1lbnRhdGlvbiBzaG91bGQgc2V0IHRoZSB2YWx1ZSBvZiB0aGUgaXNfZ2xvYmFsIG91dHBhcmFtIHRvIGEKK25vbi16ZXJvIHZhbHVlIGluIGFkZGl0aW9uIHRvIGNyZWF0aW5nIHRoZSBmaWxlIHRoYXQgd2lsbCBiZSB1c2VkIHRvCityZXByZXNlbnQgdGhlIHNpbmdsZSBidWZmZXIuICBJbiB0aGUgY2FzZSBvZiBhIGdsb2JhbCBidWZmZXIsCitjcmVhdGVfYnVmX2ZpbGUoKSBhbmQgcmVtb3ZlX2J1Zl9maWxlKCkgd2lsbCBiZSBjYWxsZWQgb25seSBvbmNlLiAgVGhlCitub3JtYWwgY2hhbm5lbC13cml0aW5nIGZ1bmN0aW9ucywgZS5nLiByZWxheV93cml0ZSgpLCBjYW4gc3RpbGwgYmUKK3VzZWQgLSB3cml0ZXMgZnJvbSBhbnkgY3B1IHdpbGwgdHJhbnNwYXJlbnRseSBlbmQgdXAgaW4gdGhlIGdsb2JhbAorYnVmZmVyIC0gYnV0IHNpbmNlIGl0IGlzIGEgZ2xvYmFsIGJ1ZmZlciwgY2FsbGVycyBzaG91bGQgbWFrZSBzdXJlCit0aGV5IHVzZSB0aGUgcHJvcGVyIGxvY2tpbmcgZm9yIHN1Y2ggYSBidWZmZXIsIGVpdGhlciBieSB3cmFwcGluZword3JpdGVzIGluIGEgc3BpbmxvY2ssIG9yIGJ5IGNvcHlpbmcgYSB3cml0ZSBmdW5jdGlvbiBmcm9tIHJlbGF5LmggYW5kCitjcmVhdGluZyBhIGxvY2FsIHZlcnNpb24gdGhhdCBpbnRlcm5hbGx5IGRvZXMgdGhlIHByb3BlciBsb2NraW5nLgorCitUaGUgcHJpdmF0ZV9kYXRhIHBhc3NlZCBpbnRvIHJlbGF5X29wZW4oKSBhbGxvd3MgY2xpZW50cyB0byBhc3NvY2lhdGUKK3VzZXItZGVmaW5lZCBkYXRhIHdpdGggYSBjaGFubmVsLCBhbmQgaXMgaW1tZWRpYXRlbHkgYXZhaWxhYmxlCisoaW5jbHVkaW5nIGluIGNyZWF0ZV9idWZfZmlsZSgpKSB2aWEgY2hhbi0+cHJpdmF0ZV9kYXRhIG9yCitidWYtPmNoYW4tPnByaXZhdGVfZGF0YS4KKworQnVmZmVyLW9ubHkgY2hhbm5lbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXNlIGNoYW5uZWxzIGhhdmUgbm8gZmlsZXMgYXNzb2NpYXRlZCBhbmQgY2FuIGJlIGNyZWF0ZWQgd2l0aAorcmVsYXlfb3BlbihOVUxMLCBOVUxMLCAuLi4pLiBTdWNoIGNoYW5uZWxzIGFyZSB1c2VmdWwgaW4gc2NlbmFyaW9zIHN1Y2gKK2FzIHdoZW4gZG9pbmcgZWFybHkgdHJhY2luZyBpbiB0aGUga2VybmVsLCBiZWZvcmUgdGhlIFZGUyBpcyB1cC4gSW4gdGhlc2UKK2Nhc2VzLCBvbmUgbWF5IG9wZW4gYSBidWZmZXItb25seSBjaGFubmVsIGFuZCB0aGVuIGNhbGwKK3JlbGF5X2xhdGVfc2V0dXBfZmlsZXMoKSB3aGVuIHRoZSBrZXJuZWwgaXMgcmVhZHkgdG8gaGFuZGxlIGZpbGVzLAordG8gZXhwb3NlIHRoZSBidWZmZXJlZCBkYXRhIHRvIHRoZSB1c2Vyc3BhY2UuCisKK0NoYW5uZWwgJ21vZGVzJworLS0tLS0tLS0tLS0tLS0tCisKK3JlbGF5IGNoYW5uZWxzIGNhbiBiZSB1c2VkIGluIGVpdGhlciBvZiB0d28gbW9kZXMgLSAnb3ZlcndyaXRlJyBvcgorJ25vLW92ZXJ3cml0ZScuICBUaGUgbW9kZSBpcyBlbnRpcmVseSBkZXRlcm1pbmVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbgorb2YgdGhlIHN1YmJ1Zl9zdGFydCgpIGNhbGxiYWNrLCBhcyBkZXNjcmliZWQgYmVsb3cuICBUaGUgZGVmYXVsdCBpZiBubworc3ViYnVmX3N0YXJ0KCkgY2FsbGJhY2sgaXMgZGVmaW5lZCBpcyAnbm8tb3ZlcndyaXRlJyBtb2RlLiAgSWYgdGhlCitkZWZhdWx0IG1vZGUgc3VpdHMgeW91ciBuZWVkcywgYW5kIHlvdSBwbGFuIHRvIHVzZSB0aGUgcmVhZCgpCitpbnRlcmZhY2UgdG8gcmV0cmlldmUgY2hhbm5lbCBkYXRhLCB5b3UgY2FuIGlnbm9yZSB0aGUgZGV0YWlscyBvZiB0aGlzCitzZWN0aW9uLCBhcyBpdCBwZXJ0YWlucyBtYWlubHkgdG8gbW1hcCgpIGltcGxlbWVudGF0aW9ucy4KKworSW4gJ292ZXJ3cml0ZScgbW9kZSwgYWxzbyBrbm93biBhcyAnZmxpZ2h0IHJlY29yZGVyJyBtb2RlLCB3cml0ZXMKK2NvbnRpbnVvdXNseSBjeWNsZSBhcm91bmQgdGhlIGJ1ZmZlciBhbmQgd2lsbCBuZXZlciBmYWlsLCBidXQgd2lsbAordW5jb25kaXRpb25hbGx5IG92ZXJ3cml0ZSBvbGQgZGF0YSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQncyBhY3R1YWxseQorYmVlbiBjb25zdW1lZC4gIEluIG5vLW92ZXJ3cml0ZSBtb2RlLCB3cml0ZXMgd2lsbCBmYWlsLCBpLmUuIGRhdGEgd2lsbAorYmUgbG9zdCwgaWYgdGhlIG51bWJlciBvZiB1bmNvbnN1bWVkIHN1Yi1idWZmZXJzIGVxdWFscyB0aGUgdG90YWwKK251bWJlciBvZiBzdWItYnVmZmVycyBpbiB0aGUgY2hhbm5lbC4gIEl0IHNob3VsZCBiZSBjbGVhciB0aGF0IGlmCit0aGVyZSBpcyBubyBjb25zdW1lciBvciBpZiB0aGUgY29uc3VtZXIgY2FuJ3QgY29uc3VtZSBzdWItYnVmZmVycyBmYXN0Citlbm91Z2gsIGRhdGEgd2lsbCBiZSBsb3N0IGluIGVpdGhlciBjYXNlOyB0aGUgb25seSBkaWZmZXJlbmNlIGlzCit3aGV0aGVyIGRhdGEgaXMgbG9zdCBmcm9tIHRoZSBiZWdpbm5pbmcgb3IgdGhlIGVuZCBvZiBhIGJ1ZmZlci4KKworQXMgZXhwbGFpbmVkIGFib3ZlLCBhIHJlbGF5IGNoYW5uZWwgaXMgbWFkZSBvZiB1cCBvbmUgb3IgbW9yZQorcGVyLWNwdSBjaGFubmVsIGJ1ZmZlcnMsIGVhY2ggaW1wbGVtZW50ZWQgYXMgYSBjaXJjdWxhciBidWZmZXIKK3N1YmRpdmlkZWQgaW50byBvbmUgb3IgbW9yZSBzdWItYnVmZmVycy4gIE1lc3NhZ2VzIGFyZSB3cml0dGVuIGludG8KK3RoZSBjdXJyZW50IHN1Yi1idWZmZXIgb2YgdGhlIGNoYW5uZWwncyBjdXJyZW50IHBlci1jcHUgYnVmZmVyIHZpYSB0aGUKK3dyaXRlIGZ1bmN0aW9ucyBkZXNjcmliZWQgYmVsb3cuICBXaGVuZXZlciBhIG1lc3NhZ2UgY2FuJ3QgZml0IGludG8KK3RoZSBjdXJyZW50IHN1Yi1idWZmZXIsIGJlY2F1c2UgdGhlcmUncyBubyByb29tIGxlZnQgZm9yIGl0LCB0aGUKK2NsaWVudCBpcyBub3RpZmllZCB2aWEgdGhlIHN1YmJ1Zl9zdGFydCgpIGNhbGxiYWNrIHRoYXQgYSBzd2l0Y2ggdG8gYQorbmV3IHN1Yi1idWZmZXIgaXMgYWJvdXQgdG8gb2NjdXIuICBUaGUgY2xpZW50IHVzZXMgdGhpcyBjYWxsYmFjayB0byAxKQoraW5pdGlhbGl6ZSB0aGUgbmV4dCBzdWItYnVmZmVyIGlmIGFwcHJvcHJpYXRlIDIpIGZpbmFsaXplIHRoZSBwcmV2aW91cworc3ViLWJ1ZmZlciBpZiBhcHByb3ByaWF0ZSBhbmQgMykgcmV0dXJuIGEgYm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nCit3aGV0aGVyIG9yIG5vdCB0byBhY3R1YWxseSBtb3ZlIG9uIHRvIHRoZSBuZXh0IHN1Yi1idWZmZXIuCisKK1RvIGltcGxlbWVudCAnbm8tb3ZlcndyaXRlJyBtb2RlLCB0aGUgdXNlcnNwYWNlIGNsaWVudCB3b3VsZCBwcm92aWRlCithbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3ViYnVmX3N0YXJ0KCkgY2FsbGJhY2sgc29tZXRoaW5nIGxpa2UgdGhlCitmb2xsb3dpbmc6CisKK3N0YXRpYyBpbnQgc3ViYnVmX3N0YXJ0KHN0cnVjdCByY2hhbl9idWYgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnN1YmJ1ZiwKKwkJCXZvaWQgKnByZXZfc3ViYnVmLAorCQkJdW5zaWduZWQgaW50IHByZXZfcGFkZGluZykKK3sKKwlpZiAocHJldl9zdWJidWYpCisJCSooKHVuc2lnbmVkICopcHJldl9zdWJidWYpID0gcHJldl9wYWRkaW5nOworCisJaWYgKHJlbGF5X2J1Zl9mdWxsKGJ1ZikpCisJCXJldHVybiAwOworCisJc3ViYnVmX3N0YXJ0X3Jlc2VydmUoYnVmLCBzaXplb2YodW5zaWduZWQgaW50KSk7CisKKwlyZXR1cm4gMTsKK30KKworSWYgdGhlIGN1cnJlbnQgYnVmZmVyIGlzIGZ1bGwsIGkuZS4gYWxsIHN1Yi1idWZmZXJzIHJlbWFpbiB1bmNvbnN1bWVkLAordGhlIGNhbGxiYWNrIHJldHVybnMgMCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBidWZmZXIgc3dpdGNoIHNob3VsZCBub3QKK29jY3VyIHlldCwgaS5lLiB1bnRpbCB0aGUgY29uc3VtZXIgaGFzIGhhZCBhIGNoYW5jZSB0byByZWFkIHRoZQorY3VycmVudCBzZXQgb2YgcmVhZHkgc3ViLWJ1ZmZlcnMuICBGb3IgdGhlIHJlbGF5X2J1Zl9mdWxsKCkgZnVuY3Rpb24KK3RvIG1ha2Ugc2Vuc2UsIHRoZSBjb25zdW1lciBpcyByZXNwb25zaWJsZSBmb3Igbm90aWZ5aW5nIHRoZSByZWxheQoraW50ZXJmYWNlIHdoZW4gc3ViLWJ1ZmZlcnMgaGF2ZSBiZWVuIGNvbnN1bWVkIHZpYQorcmVsYXlfc3ViYnVmc19jb25zdW1lZCgpLiAgQW55IHN1YnNlcXVlbnQgYXR0ZW1wdHMgdG8gd3JpdGUgaW50byB0aGUKK2J1ZmZlciB3aWxsIGFnYWluIGludm9rZSB0aGUgc3ViYnVmX3N0YXJ0KCkgY2FsbGJhY2sgd2l0aCB0aGUgc2FtZQorcGFyYW1ldGVyczsgb25seSB3aGVuIHRoZSBjb25zdW1lciBoYXMgY29uc3VtZWQgb25lIG9yIG1vcmUgb2YgdGhlCityZWFkeSBzdWItYnVmZmVycyB3aWxsIHJlbGF5X2J1Zl9mdWxsKCkgcmV0dXJuIDAsIGluIHdoaWNoIGNhc2UgdGhlCitidWZmZXIgc3dpdGNoIGNhbiBjb250aW51ZS4KKworVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzdWJidWZfc3RhcnQoKSBjYWxsYmFjayBmb3IgJ292ZXJ3cml0ZScgbW9kZQord291bGQgYmUgdmVyeSBzaW1pbGFyOgorCitzdGF0aWMgaW50IHN1YmJ1Zl9zdGFydChzdHJ1Y3QgcmNoYW5fYnVmICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzdWJidWYsCisJCQl2b2lkICpwcmV2X3N1YmJ1ZiwKKwkJCXVuc2lnbmVkIGludCBwcmV2X3BhZGRpbmcpCit7CisJaWYgKHByZXZfc3ViYnVmKQorCQkqKCh1bnNpZ25lZCAqKXByZXZfc3ViYnVmKSA9IHByZXZfcGFkZGluZzsKKworCXN1YmJ1Zl9zdGFydF9yZXNlcnZlKGJ1Ziwgc2l6ZW9mKHVuc2lnbmVkIGludCkpOworCisJcmV0dXJuIDE7Cit9CisKK0luIHRoaXMgY2FzZSwgdGhlIHJlbGF5X2J1Zl9mdWxsKCkgY2hlY2sgaXMgbWVhbmluZ2xlc3MgYW5kIHRoZQorY2FsbGJhY2sgYWx3YXlzIHJldHVybnMgMSwgY2F1c2luZyB0aGUgYnVmZmVyIHN3aXRjaCB0byBvY2N1cgordW5jb25kaXRpb25hbGx5LiAgSXQncyBhbHNvIG1lYW5pbmdsZXNzIGZvciB0aGUgY2xpZW50IHRvIHVzZSB0aGUKK3JlbGF5X3N1YmJ1ZnNfY29uc3VtZWQoKSBmdW5jdGlvbiBpbiB0aGlzIG1vZGUsIGFzIGl0J3MgbmV2ZXIKK2NvbnN1bHRlZC4KKworVGhlIGRlZmF1bHQgc3ViYnVmX3N0YXJ0KCkgaW1wbGVtZW50YXRpb24sIHVzZWQgaWYgdGhlIGNsaWVudCBkb2Vzbid0CitkZWZpbmUgYW55IGNhbGxiYWNrcywgb3IgZG9lc24ndCBkZWZpbmUgdGhlIHN1YmJ1Zl9zdGFydCgpIGNhbGxiYWNrLAoraW1wbGVtZW50cyB0aGUgc2ltcGxlc3QgcG9zc2libGUgJ25vLW92ZXJ3cml0ZScgbW9kZSwgaS5lLiBpdCBkb2VzCitub3RoaW5nIGJ1dCByZXR1cm4gMC4KKworSGVhZGVyIGluZm9ybWF0aW9uIGNhbiBiZSByZXNlcnZlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggc3ViLWJ1ZmZlcgorYnkgY2FsbGluZyB0aGUgc3ViYnVmX3N0YXJ0X3Jlc2VydmUoKSBoZWxwZXIgZnVuY3Rpb24gZnJvbSB3aXRoaW4gdGhlCitzdWJidWZfc3RhcnQoKSBjYWxsYmFjay4gIFRoaXMgcmVzZXJ2ZWQgYXJlYSBjYW4gYmUgdXNlZCB0byBzdG9yZQord2hhdGV2ZXIgaW5mb3JtYXRpb24gdGhlIGNsaWVudCB3YW50cy4gIEluIHRoZSBleGFtcGxlIGFib3ZlLCByb29tIGlzCityZXNlcnZlZCBpbiBlYWNoIHN1Yi1idWZmZXIgdG8gc3RvcmUgdGhlIHBhZGRpbmcgY291bnQgZm9yIHRoYXQKK3N1Yi1idWZmZXIuICBUaGlzIGlzIGZpbGxlZCBpbiBmb3IgdGhlIHByZXZpb3VzIHN1Yi1idWZmZXIgaW4gdGhlCitzdWJidWZfc3RhcnQoKSBpbXBsZW1lbnRhdGlvbjsgdGhlIHBhZGRpbmcgdmFsdWUgZm9yIHRoZSBwcmV2aW91cworc3ViLWJ1ZmZlciBpcyBwYXNzZWQgaW50byB0aGUgc3ViYnVmX3N0YXJ0KCkgY2FsbGJhY2sgYWxvbmcgd2l0aCBhCitwb2ludGVyIHRvIHRoZSBwcmV2aW91cyBzdWItYnVmZmVyLCBzaW5jZSB0aGUgcGFkZGluZyB2YWx1ZSBpc24ndAora25vd24gdW50aWwgYSBzdWItYnVmZmVyIGlzIGZpbGxlZC4gIFRoZSBzdWJidWZfc3RhcnQoKSBjYWxsYmFjayBpcworYWxzbyBjYWxsZWQgZm9yIHRoZSBmaXJzdCBzdWItYnVmZmVyIHdoZW4gdGhlIGNoYW5uZWwgaXMgb3BlbmVkLCB0bworZ2l2ZSB0aGUgY2xpZW50IGEgY2hhbmNlIHRvIHJlc2VydmUgc3BhY2UgaW4gaXQuICBJbiB0aGlzIGNhc2UgdGhlCitwcmV2aW91cyBzdWItYnVmZmVyIHBvaW50ZXIgcGFzc2VkIGludG8gdGhlIGNhbGxiYWNrIHdpbGwgYmUgTlVMTCwgc28KK3RoZSBjbGllbnQgc2hvdWxkIGNoZWNrIHRoZSB2YWx1ZSBvZiB0aGUgcHJldl9zdWJidWYgcG9pbnRlciBiZWZvcmUKK3dyaXRpbmcgaW50byB0aGUgcHJldmlvdXMgc3ViLWJ1ZmZlci4KKworV3JpdGluZyB0byBhIGNoYW5uZWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0tlcm5lbCBjbGllbnRzIHdyaXRlIGRhdGEgaW50byB0aGUgY3VycmVudCBjcHUncyBjaGFubmVsIGJ1ZmZlciB1c2luZworcmVsYXlfd3JpdGUoKSBvciBfX3JlbGF5X3dyaXRlKCkuICByZWxheV93cml0ZSgpIGlzIHRoZSBtYWluIGxvZ2dpbmcKK2Z1bmN0aW9uIC0gaXQgdXNlcyBsb2NhbF9pcnFzYXZlKCkgdG8gcHJvdGVjdCB0aGUgYnVmZmVyIGFuZCBzaG91bGQgYmUKK3VzZWQgaWYgeW91IG1pZ2h0IGJlIGxvZ2dpbmcgZnJvbSBpbnRlcnJ1cHQgY29udGV4dC4gIElmIHlvdSBrbm93Cit5b3UnbGwgbmV2ZXIgYmUgbG9nZ2luZyBmcm9tIGludGVycnVwdCBjb250ZXh0LCB5b3UgY2FuIHVzZQorX19yZWxheV93cml0ZSgpLCB3aGljaCBvbmx5IGRpc2FibGVzIHByZWVtcHRpb24uICBUaGVzZSBmdW5jdGlvbnMKK2Rvbid0IHJldHVybiBhIHZhbHVlLCBzbyB5b3UgY2FuJ3QgZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRoZXkKK2ZhaWxlZCAtIHRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgeW91IHdvdWxkbid0IHdhbnQgdG8gY2hlY2sgYSByZXR1cm4KK3ZhbHVlIGluIHRoZSBmYXN0IGxvZ2dpbmcgcGF0aCBhbnl3YXksIGFuZCB0aGF0IHRoZXknbGwgYWx3YXlzIHN1Y2NlZWQKK3VubGVzcyB0aGUgYnVmZmVyIGlzIGZ1bGwgYW5kIG5vLW92ZXJ3cml0ZSBtb2RlIGlzIGJlaW5nIHVzZWQsIGluCit3aGljaCBjYXNlIHlvdSBjYW4gZGV0ZWN0IGEgZmFpbGVkIHdyaXRlIGluIHRoZSBzdWJidWZfc3RhcnQoKQorY2FsbGJhY2sgYnkgY2FsbGluZyB0aGUgcmVsYXlfYnVmX2Z1bGwoKSBoZWxwZXIgZnVuY3Rpb24uCisKK3JlbGF5X3Jlc2VydmUoKSBpcyB1c2VkIHRvIHJlc2VydmUgYSBzbG90IGluIGEgY2hhbm5lbCBidWZmZXIgd2hpY2gKK2NhbiBiZSB3cml0dGVuIHRvIGxhdGVyLiAgVGhpcyB3b3VsZCB0eXBpY2FsbHkgYmUgdXNlZCBpbiBhcHBsaWNhdGlvbnMKK3RoYXQgbmVlZCB0byB3cml0ZSBkaXJlY3RseSBpbnRvIGEgY2hhbm5lbCBidWZmZXIgd2l0aG91dCBoYXZpbmcgdG8KK3N0YWdlIGRhdGEgaW4gYSB0ZW1wb3JhcnkgYnVmZmVyIGJlZm9yZWhhbmQuICBCZWNhdXNlIHRoZSBhY3R1YWwgd3JpdGUKK21heSBub3QgaGFwcGVuIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBzbG90IGlzIHJlc2VydmVkLCBhcHBsaWNhdGlvbnMKK3VzaW5nIHJlbGF5X3Jlc2VydmUoKSBjYW4ga2VlcCBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkKK3dyaXR0ZW4sIGVpdGhlciBpbiBzcGFjZSByZXNlcnZlZCBpbiB0aGUgc3ViLWJ1ZmZlcnMgdGhlbXNlbHZlcyBvciBhcworYSBzZXBhcmF0ZSBhcnJheS4gIFNlZSB0aGUgJ3Jlc2VydmUnIGV4YW1wbGUgaW4gdGhlIHJlbGF5LWFwcHMgdGFyYmFsbAorYXQgaHR0cDovL3JlbGF5ZnMuc291cmNlZm9yZ2UubmV0IGZvciBhbiBleGFtcGxlIG9mIGhvdyB0aGlzIGNhbiBiZQorZG9uZS4gIEJlY2F1c2UgdGhlIHdyaXRlIGlzIHVuZGVyIGNvbnRyb2wgb2YgdGhlIGNsaWVudCBhbmQgaXMKK3NlcGFyYXRlZCBmcm9tIHRoZSByZXNlcnZlLCByZWxheV9yZXNlcnZlKCkgZG9lc24ndCBwcm90ZWN0IHRoZSBidWZmZXIKK2F0IGFsbCAtIGl0J3MgdXAgdG8gdGhlIGNsaWVudCB0byBwcm92aWRlIHRoZSBhcHByb3ByaWF0ZQorc3luY2hyb25pemF0aW9uIHdoZW4gdXNpbmcgcmVsYXlfcmVzZXJ2ZSgpLgorCitDbG9zaW5nIGEgY2hhbm5lbAorLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGNsaWVudCBjYWxscyByZWxheV9jbG9zZSgpIHdoZW4gaXQncyBmaW5pc2hlZCB1c2luZyB0aGUgY2hhbm5lbC4KK1RoZSBjaGFubmVsIGFuZCBpdHMgYXNzb2NpYXRlZCBidWZmZXJzIGFyZSBkZXN0cm95ZWQgd2hlbiB0aGVyZSBhcmUgbm8KK2xvbmdlciBhbnkgcmVmZXJlbmNlcyB0byBhbnkgb2YgdGhlIGNoYW5uZWwgYnVmZmVycy4gIHJlbGF5X2ZsdXNoKCkKK2ZvcmNlcyBhIHN1Yi1idWZmZXIgc3dpdGNoIG9uIGFsbCB0aGUgY2hhbm5lbCBidWZmZXJzLCBhbmQgY2FuIGJlIHVzZWQKK3RvIGZpbmFsaXplIGFuZCBwcm9jZXNzIHRoZSBsYXN0IHN1Yi1idWZmZXJzIGJlZm9yZSB0aGUgY2hhbm5lbCBpcworY2xvc2VkLgorCitNaXNjCistLS0tCisKK1NvbWUgYXBwbGljYXRpb25zIG1heSB3YW50IHRvIGtlZXAgYSBjaGFubmVsIGFyb3VuZCBhbmQgcmUtdXNlIGl0CityYXRoZXIgdGhhbiBvcGVuIGFuZCBjbG9zZSBhIG5ldyBjaGFubmVsIGZvciBlYWNoIHVzZS4gIHJlbGF5X3Jlc2V0KCkKK2NhbiBiZSB1c2VkIGZvciB0aGlzIHB1cnBvc2UgLSBpdCByZXNldHMgYSBjaGFubmVsIHRvIGl0cyBpbml0aWFsCitzdGF0ZSB3aXRob3V0IHJlYWxsb2NhdGluZyBjaGFubmVsIGJ1ZmZlciBtZW1vcnkgb3IgZGVzdHJveWluZworZXhpc3RpbmcgbWFwcGluZ3MuICBJdCBzaG91bGQgaG93ZXZlciBvbmx5IGJlIGNhbGxlZCB3aGVuIGl0J3Mgc2FmZSB0bworZG8gc28sIGkuZS4gd2hlbiB0aGUgY2hhbm5lbCBpc24ndCBjdXJyZW50bHkgYmVpbmcgd3JpdHRlbiB0by4KKworRmluYWxseSwgdGhlcmUgYXJlIGEgY291cGxlIG9mIHV0aWxpdHkgY2FsbGJhY2tzIHRoYXQgY2FuIGJlIHVzZWQgZm9yCitkaWZmZXJlbnQgcHVycG9zZXMuICBidWZfbWFwcGVkKCkgaXMgY2FsbGVkIHdoZW5ldmVyIGEgY2hhbm5lbCBidWZmZXIKK2lzIG1tYXBwZWQgZnJvbSB1c2VyIHNwYWNlIGFuZCBidWZfdW5tYXBwZWQoKSBpcyBjYWxsZWQgd2hlbiBpdCdzCit1bm1hcHBlZC4gIFRoZSBjbGllbnQgY2FuIHVzZSB0aGlzIG5vdGlmaWNhdGlvbiB0byB0cmlnZ2VyIGFjdGlvbnMKK3dpdGhpbiB0aGUga2VybmVsIGFwcGxpY2F0aW9uLCBzdWNoIGFzIGVuYWJsaW5nL2Rpc2FibGluZyBsb2dnaW5nIHRvCit0aGUgY2hhbm5lbC4KKworCitSZXNvdXJjZXMKKz09PT09PT09PQorCitGb3IgbmV3cywgZXhhbXBsZSBjb2RlLCBtYWlsaW5nIGxpc3QsIGV0Yy4gc2VlIHRoZSByZWxheSBpbnRlcmZhY2UgaG9tZXBhZ2U6CisKKyAgICBodHRwOi8vcmVsYXlmcy5zb3VyY2Vmb3JnZS5uZXQKKworCitDcmVkaXRzCis9PT09PT09CisKK1RoZSBpZGVhcyBhbmQgc3BlY3MgZm9yIHRoZSByZWxheSBpbnRlcmZhY2UgY2FtZSBhYm91dCBhcyBhIHJlc3VsdCBvZgorZGlzY3Vzc2lvbnMgb24gdHJhY2luZyBpbnZvbHZpbmcgdGhlIGZvbGxvd2luZzoKKworTWljaGVsIERhZ2VuYWlzCQk8bWljaGVsLmRhZ2VuYWlzQHBvbHltdGwuY2E+CitSaWNoYXJkIE1vb3JlCQk8cmljaGFyZGpfbW9vcmVAdWsuaWJtLmNvbT4KK0JvYiBXaXNuaWV3c2tpCQk8Ym9iQHdhdHNvbi5pYm0uY29tPgorS2FyaW0gWWFnaG1vdXIJCTxrYXJpbUBvcGVyc3lzLmNvbT4KK1RvbSBaYW51c3NpCQk8emFudXNzaUB1cy5pYm0uY29tPgorCitBbHNvIHRoYW5rcyB0byBIdWJlcnR1cyBGcmFua2UgZm9yIGEgbG90IG9mIHVzZWZ1bCBzdWdnZXN0aW9ucyBhbmQgYnVnCityZXBvcnRzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9yb21mcy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3JvbWZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmIwN2NjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9yb21mcy50eHQKQEAgLTAsMCArMSwxODYgQEAKK1JPTUZTIC0gUk9NIEZJTEUgU1lTVEVNCisKK1RoaXMgaXMgYSBxdWl0ZSBkdW1iLCByZWFkIG9ubHkgZmlsZXN5c3RlbSwgbWFpbmx5IGZvciBpbml0aWFsIFJBTQorZGlza3Mgb2YgaW5zdGFsbGF0aW9uIGRpc2tzLiAgSXQgaGFzIGdyb3duIHVwIGJ5IHRoZSBuZWVkIG9mIGhhdmluZworbW9kdWxlcyBsaW5rZWQgYXQgYm9vdCB0aW1lLiAgVXNpbmcgdGhpcyBmaWxlc3lzdGVtLCB5b3UgZ2V0IGEgdmVyeQorc2ltaWxhciBmZWF0dXJlLCBhbmQgZXZlbiB0aGUgcG9zc2liaWxpdHkgb2YgYSBzbWFsbCBrZXJuZWwsIHdpdGggYQorZmlsZSBzeXN0ZW0gd2hpY2ggZG9lc24ndCB0YWtlIHVwIHVzZWZ1bCBtZW1vcnkgZnJvbSB0aGUgcm91dGVyCitmdW5jdGlvbnMgaW4gdGhlIGJhc2VtZW50IG9mIHlvdXIgb2ZmaWNlLgorCitGb3IgY29tcGFyaXNvbiwgYm90aCB0aGUgb2xkZXIgbWluaXggYW5kIHhpYWZzICh0aGUgbGF0dGVyIGlzIG5vdworZGVmdW5jdCkgZmlsZXN5c3RlbXMsIGNvbXBpbGVkIGFzIG1vZHVsZSBuZWVkIG1vcmUgdGhhbiAyMDAwMCBieXRlcywKK3doaWxlIHJvbWZzIGlzIGxlc3MgdGhhbiBhIHBhZ2UsIGFib3V0IDQwMDAgYnl0ZXMgKGFzc3VtaW5nIGk1ODYKK2NvZGUpLiAgVW5kZXIgdGhlIHNhbWUgY29uZGl0aW9ucywgdGhlIG1zZG9zIGZpbGVzeXN0ZW0gd291bGQgbmVlZAorYWJvdXQgMzBLIChhbmQgZG9lcyBub3Qgc3VwcG9ydCBkZXZpY2Ugbm9kZXMgb3Igc3ltbGlua3MpLCB3aGlsZSB0aGUKK25mcyBtb2R1bGUgd2l0aCBuZnNyb290IGlzIGFib3V0IDU3Sy4gIEZ1cnRoZXJtb3JlLCBhcyBhIGJpdCB1bmZhaXIKK2NvbXBhcmlzb24sIGFuIGFjdHVhbCByZXNjdWUgZGlzayB1c2VkIHVwIDMyMDIgYmxvY2tzIHdpdGggZXh0Miwgd2hpbGUKK3dpdGggcm9tZnMsIGl0IG5lZWRlZCAzMDc5IGJsb2Nrcy4KKworVG8gY3JlYXRlIHN1Y2ggYSBmaWxlIHN5c3RlbSwgeW91J2xsIG5lZWQgYSB1c2VyIHByb2dyYW0gbmFtZWQKK2dlbnJvbWZzLiBJdCBpcyBhdmFpbGFibGUgb24gaHR0cDovL3JvbWZzLnNvdXJjZWZvcmdlLm5ldC8KKworQXMgdGhlIG5hbWUgc3VnZ2VzdHMsIHJvbWZzIGNvdWxkIGJlIGFsc28gdXNlZCAoc3BhY2UtZWZmaWNpZW50bHkpIG9uCit2YXJpb3VzIHJlYWQtb25seSBtZWRpYSwgbGlrZSAoRSlFUFJPTSBkaXNrcyBpZiBzb21lb25lIHdpbGwgaGF2ZSB0aGUKK21vdGl2YXRpb24uLiA6KQorCitIb3dldmVyLCB0aGUgbWFpbiBwdXJwb3NlIG9mIHJvbWZzIGlzIHRvIGhhdmUgYSB2ZXJ5IHNtYWxsIGtlcm5lbCwKK3doaWNoIGhhcyBvbmx5IHRoaXMgZmlsZXN5c3RlbSBsaW5rZWQgaW4sIGFuZCB0aGVuIGNhbiBsb2FkIGFueSBtb2R1bGUKK2xhdGVyLCB3aXRoIHRoZSBjdXJyZW50IG1vZHVsZSB1dGlsaXRpZXMuICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIHJ1bgorc29tZSBwcm9ncmFtIHRvIGRlY2lkZSBpZiB5b3UgbmVlZCBTQ1NJIGRldmljZXMsIGFuZCBldmVuIElERSBvcgorZmxvcHB5IGRyaXZlcyBjYW4gYmUgbG9hZGVkIGxhdGVyIGlmIHlvdSB1c2UgdGhlICJpbml0cmQiLS1pbml0aWFsCitSQU0gZGlzay0tZmVhdHVyZSBvZiB0aGUga2VybmVsLiAgVGhpcyB3b3VsZCBub3QgYmUgcmVhbGx5IG5ld3MKK2ZsYXNoLCBidXQgd2l0aCByb21mcywgeW91IGNhbiBldmVuIHNwYXJlIG9mZiB5b3VyIGV4dDIgb3IgbWluaXggb3IKK21heWJlIGV2ZW4gYWZmcyBmaWxlc3lzdGVtIHVudGlsIHlvdSByZWFsbHkga25vdyB0aGF0IHlvdSBuZWVkIGl0LgorCitGb3IgZXhhbXBsZSwgYSBkaXN0cmlidXRpb24gYm9vdCBkaXNrIGNhbiBjb250YWluIG9ubHkgdGhlIGNkIGRpc2sKK2RyaXZlcnMgKGFuZCBwb3NzaWJseSB0aGUgU0NTSSBkcml2ZXJzKSwgYW5kIHRoZSBJU08gOTY2MCBmaWxlc3lzdGVtCittb2R1bGUuICBUaGUga2VybmVsIGNhbiBiZSBzbWFsbCBlbm91Z2gsIHNpbmNlIGl0IGRvZXNuJ3QgaGF2ZSBvdGhlcgorZmlsZXN5c3RlbXMsIGxpa2UgdGhlIHF1aXRlIGxhcmdlIGV4dDJmcyBtb2R1bGUsIHdoaWNoIGNhbiB0aGVuIGJlCitsb2FkZWQgb2ZmIHRoZSBDRCBhdCBhIGxhdGVyIHN0YWdlIG9mIHRoZSBpbnN0YWxsYXRpb24uICBBbm90aGVyIHVzZQord291bGQgYmUgZm9yIGEgcmVjb3ZlcnkgZGlzaywgd2hlbiB5b3UgYXJlIHJlaW5zdGFsbGluZyBhIHdvcmtzdGF0aW9uCitmcm9tIHRoZSBuZXR3b3JrLCBhbmQgeW91IHdpbGwgaGF2ZSBhbGwgdGhlIHRvb2xzL21vZHVsZXMgYXZhaWxhYmxlCitmcm9tIGEgbmVhcmJ5IHNlcnZlciwgc28geW91IGRvbid0IHdhbnQgdG8gY2FycnkgdHdvIGRpc2tzIGZvciB0aGlzCitwdXJwb3NlLCBqdXN0IGJlY2F1c2UgaXQgd29uJ3QgZml0IGludG8gZXh0Mi4KKworcm9tZnMgb3BlcmF0ZXMgb24gYmxvY2sgZGV2aWNlcyBhcyB5b3UgY2FuIGV4cGVjdCwgYW5kIHRoZSB1bmRlcmx5aW5nCitzdHJ1Y3R1cmUgaXMgdmVyeSBzaW1wbGUuICBFdmVyeSBhY2Nlc3NpYmxlIHN0cnVjdHVyZSBiZWdpbnMgb24gMTYKK2J5dGUgYm91bmRhcmllcyBmb3IgZmFzdCBhY2Nlc3MuICBUaGUgbWluaW11bSBzcGFjZSBhIGZpbGUgd2lsbCB0YWtlCitpcyAzMiBieXRlcyAodGhpcyBpcyBhbiBlbXB0eSBmaWxlLCB3aXRoIGEgbGVzcyB0aGFuIDE2IGNoYXJhY3RlcgorbmFtZSkuICBUaGUgbWF4aW11bSBvdmVyaGVhZCBmb3IgYW55IG5vbi1lbXB0eSBmaWxlIGlzIHRoZSBoZWFkZXIsIGFuZAordGhlIDE2IGJ5dGUgcGFkZGluZyBmb3IgdGhlIG5hbWUgYW5kIHRoZSBjb250ZW50cywgYWxzbyAxNisxNCsxNSA9IDQ1CitieXRlcy4gIFRoaXMgaXMgcXVpdGUgcmFyZSBob3dldmVyLCBzaW5jZSBtb3N0IGZpbGUgbmFtZXMgYXJlIGxvbmdlcgordGhhbiAzIGJ5dGVzLCBhbmQgc2hvcnRlciB0aGFuIDE1IGJ5dGVzLgorCitUaGUgbGF5b3V0IG9mIHRoZSBmaWxlc3lzdGVtIGlzIHRoZSBmb2xsb3dpbmc6CisKK29mZnNldAkgICAgY29udGVudAorCisJKy0tLSstLS0rLS0tKy0tLSsKKyAgMAl8IC0gfCByIHwgbyB8IG0gfCAgXAorCSstLS0rLS0tKy0tLSstLS0rCVRoZSBBU0NJSSByZXByZXNlbnRhdGlvbiBvZiB0aG9zZSBieXRlcworICA0CXwgMSB8IGYgfCBzIHwgLSB8ICAvCShpLmUuICItcm9tMWZzLSIpCisJKy0tLSstLS0rLS0tKy0tLSsKKyAgOAl8ICAgZnVsbCBzaXplCXwJVGhlIG51bWJlciBvZiBhY2Nlc3NpYmxlIGJ5dGVzIGluIHRoaXMgZnMuCisJKy0tLSstLS0rLS0tKy0tLSsKKyAxMgl8ICAgIGNoZWNrc3VtCXwJVGhlIGNoZWNrc3VtIG9mIHRoZSBGSVJTVCA1MTIgQllURVMuCisJKy0tLSstLS0rLS0tKy0tLSsKKyAxNgl8IHZvbHVtZSBuYW1lCXwJVGhlIHplcm8gdGVybWluYXRlZCBuYW1lIG9mIHRoZSB2b2x1bWUsCisJOiAgICAgICAgICAgICAgIDoJcGFkZGVkIHRvIDE2IGJ5dGUgYm91bmRhcnkuCisJKy0tLSstLS0rLS0tKy0tLSsKKyB4eAl8ICAgICBmaWxlCXwKKwk6ICAgIGhlYWRlcnMJOgorCitFdmVyeSBtdWx0aSBieXRlIHZhbHVlICgzMiBiaXQgd29yZHMsIEknbGwgdXNlIHRoZSBsb25nd29yZHMgdGVybSBmcm9tCitub3cgb24pIG11c3QgYmUgaW4gYmlnIGVuZGlhbiBvcmRlci4KKworVGhlIGZpcnN0IGVpZ2h0IGJ5dGVzIGlkZW50aWZ5IHRoZSBmaWxlc3lzdGVtLCBldmVuIGZvciB0aGUgY2FzdWFsCitpbnNwZWN0b3IuICBBZnRlciB0aGF0LCBpbiB0aGUgM3JkIGxvbmd3b3JkLCBpdCBjb250YWlucyB0aGUgbnVtYmVyIG9mCitieXRlcyBhY2Nlc3NpYmxlIGZyb20gdGhlIHN0YXJ0IG9mIHRoaXMgZmlsZXN5c3RlbS4gIFRoZSA0dGggbG9uZ3dvcmQKK2lzIHRoZSBjaGVja3N1bSBvZiB0aGUgZmlyc3QgNTEyIGJ5dGVzIChvciB0aGUgbnVtYmVyIG9mIGJ5dGVzCithY2Nlc3NpYmxlLCB3aGljaGV2ZXIgaXMgc21hbGxlcikuICBUaGUgYXBwbGllZCBhbGdvcml0aG0gaXMgdGhlIHNhbWUKK2FzIGluIHRoZSBBRkZTIGZpbGVzeXN0ZW0sIG5hbWVseSBhIHNpbXBsZSBzdW0gb2YgdGhlIGxvbmd3b3JkcworKGFzc3VtaW5nIGJpZ2VuZGlhbiBxdWFudGl0aWVzIGFnYWluKS4gIEZvciBkZXRhaWxzLCBwbGVhc2UgY29uc3VsdAordGhlIHNvdXJjZS4gIFRoaXMgYWxnb3JpdGhtIHdhcyBjaG9zZW4gYmVjYXVzZSBhbHRob3VnaCBpdCdzIG5vdCBxdWl0ZQorcmVsaWFibGUsIGl0IGRvZXMgbm90IHJlcXVpcmUgYW55IHRhYmxlcywgYW5kIGl0IGlzIHZlcnkgc2ltcGxlLgorCitUaGUgZm9sbG93aW5nIGJ5dGVzIGFyZSBub3cgcGFydCBvZiB0aGUgZmlsZSBzeXN0ZW07IGVhY2ggZmlsZSBoZWFkZXIKK211c3QgYmVnaW4gb24gYSAxNiBieXRlIGJvdW5kYXJ5LgorCitvZmZzZXQJICAgIGNvbnRlbnQKKworICAgICAJKy0tLSstLS0rLS0tKy0tLSsKKyAgMAl8IG5leHQgZmlsZWhkcnxYfAlUaGUgb2Zmc2V0IG9mIHRoZSBuZXh0IGZpbGUgaGVhZGVyCisJKy0tLSstLS0rLS0tKy0tLSsJICAoemVybyBpZiBubyBtb3JlIGZpbGVzKQorICA0CXwgICBzcGVjLmluZm8JfAlJbmZvIGZvciBkaXJlY3Rvcmllcy9oYXJkIGxpbmtzL2RldmljZXMKKwkrLS0tKy0tLSstLS0rLS0tKworICA4CXwgICAgIHNpemUgICAgICB8CVRoZSBzaXplIG9mIHRoaXMgZmlsZSBpbiBieXRlcworCSstLS0rLS0tKy0tLSstLS0rCisgMTIJfCAgIGNoZWNrc3VtCXwJQ292ZXJpbmcgdGhlIG1ldGEgZGF0YSwgaW5jbHVkaW5nIHRoZSBmaWxlCisJKy0tLSstLS0rLS0tKy0tLSsJICBuYW1lLCBhbmQgcGFkZGluZworIDE2CXwgZmlsZSBuYW1lICAgICB8CVRoZSB6ZXJvIHRlcm1pbmF0ZWQgbmFtZSBvZiB0aGUgZmlsZSwKKwk6ICAgICAgICAgICAgICAgOglwYWRkZWQgdG8gMTYgYnl0ZSBib3VuZGFyeQorCSstLS0rLS0tKy0tLSstLS0rCisgeHgJfCBmaWxlIGRhdGEJfAorCToJCToKKworU2luY2UgdGhlIGZpbGUgaGVhZGVycyBiZWdpbiBhbHdheXMgYXQgYSAxNiBieXRlIGJvdW5kYXJ5LCB0aGUgbG93ZXN0Cis0IGJpdHMgd291bGQgYmUgYWx3YXlzIHplcm8gaW4gdGhlIG5leHQgZmlsZWhkciBwb2ludGVyLiAgVGhlc2UgZm91cgorYml0cyBhcmUgdXNlZCBmb3IgdGhlIG1vZGUgaW5mb3JtYXRpb24uICBCaXRzIDAuLjIgc3BlY2lmeSB0aGUgdHlwZSBvZgordGhlIGZpbGU7IHdoaWxlIGJpdCA0IHNob3dzIGlmIHRoZSBmaWxlIGlzIGV4ZWN1dGFibGUgb3Igbm90LiAgVGhlCitwZXJtaXNzaW9ucyBhcmUgYXNzdW1lZCB0byBiZSB3b3JsZCByZWFkYWJsZSwgaWYgdGhpcyBiaXQgaXMgbm90IHNldCwKK2FuZCB3b3JsZCBleGVjdXRhYmxlIGlmIGl0IGlzOyBleGNlcHQgdGhlIGNoYXJhY3RlciBhbmQgYmxvY2sgZGV2aWNlcywKK3RoZXkgYXJlIG5ldmVyIGFjY2Vzc2libGUgZm9yIG90aGVyIHRoYW4gb3duZXIuICBUaGUgb3duZXIgb2YgZXZlcnkKK2ZpbGUgaXMgdXNlciBhbmQgZ3JvdXAgMCwgdGhpcyBzaG91bGQgbmV2ZXIgYmUgYSBwcm9ibGVtIGZvciB0aGUKK2ludGVuZGVkIHVzZS4gIFRoZSBtYXBwaW5nIG9mIHRoZSA4IHBvc3NpYmxlIHZhbHVlcyB0byBmaWxlIHR5cGVzIGlzCit0aGUgZm9sbG93aW5nOgorCisJICBtYXBwaW5nCQlzcGVjLmluZm8gbWVhbnMKKyAwCWhhcmQgbGluawlsaW5rIGRlc3RpbmF0aW9uIFtmaWxlIGhlYWRlcl0KKyAxCWRpcmVjdG9yeQlmaXJzdCBmaWxlJ3MgaGVhZGVyCisgMglyZWd1bGFyIGZpbGUJdW51c2VkLCBtdXN0IGJlIHplcm8gW01CWl0KKyAzCXN5bWJvbGljIGxpbmsJdW51c2VkLCBNQlogKGZpbGUgZGF0YSBpcyB0aGUgbGluayBjb250ZW50KQorIDQJYmxvY2sgZGV2aWNlCTE2LzE2IGJpdHMgbWFqb3IvbWlub3IgbnVtYmVyCisgNQljaGFyIGRldmljZQkJICAgIC0gIiAtCisgNglzb2NrZXQJCXVudXNlZCwgTUJaCisgNwlmaWZvCQl1bnVzZWQsIE1CWgorCitOb3RlIHRoYXQgaGFyZCBsaW5rcyBhcmUgc3BlY2lmaWNhbGx5IG1hcmtlZCBpbiB0aGlzIGZpbGVzeXN0ZW0sIGJ1dAordGhleSB3aWxsIGJlaGF2ZSBhcyB5b3UgY2FuIGV4cGVjdCAoaS5lLiBzaGFyZSB0aGUgaW5vZGUgbnVtYmVyKS4KK05vdGUgYWxzbyB0aGF0IGl0IGlzIHlvdXIgcmVzcG9uc2liaWxpdHkgdG8gbm90IGNyZWF0ZSBoYXJkIGxpbmsKK2xvb3BzLCBhbmQgY3JlYXRpbmcgYWxsIHRoZSAuIGFuZCAuLiBsaW5rcyBmb3IgZGlyZWN0b3JpZXMuICBUaGlzIGlzCitub3JtYWxseSBkb25lIGNvcnJlY3RseSBieSB0aGUgZ2Vucm9tZnMgcHJvZ3JhbS4gIFBsZWFzZSByZWZyYWluIGZyb20KK3VzaW5nIHRoZSBleGVjdXRhYmxlIGJpdHMgZm9yIHNwZWNpYWwgcHVycG9zZXMgb24gdGhlIHNvY2tldCBhbmQgZmlmbworc3BlY2lhbCBmaWxlcywgdGhleSBtYXkgaGF2ZSBvdGhlciB1c2VzIGluIHRoZSBmdXR1cmUuICBBZGRpdGlvbmFsbHksCitwbGVhc2UgcmVtZW1iZXIgdGhhdCBvbmx5IHJlZ3VsYXIgZmlsZXMsIGFuZCBzeW1saW5rcyBhcmUgc3VwcG9zZWQgdG8KK2hhdmUgYSBub256ZXJvIHNpemUgZmllbGQ7IHRoZXkgY29udGFpbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZQorZGlyZWN0bHkgYWZ0ZXIgdGhlIChwYWRkZWQpIGZpbGUgbmFtZS4KKworQW5vdGhlciB0aGluZyB0byBub3RlIGlzIHRoYXQgcm9tZnMgd29ya3Mgb24gZmlsZSBoZWFkZXJzIGFuZCBkYXRhCithbGlnbmVkIHRvIDE2IGJ5dGUgYm91bmRhcmllcywgYnV0IG1vc3QgaGFyZHdhcmUgZGV2aWNlcyBhbmQgdGhlIGJsb2NrCitkZXZpY2UgZHJpdmVycyBhcmUgdW5hYmxlIHRvIGNvcGUgd2l0aCBzbWFsbGVyIHRoYW4gYmxvY2stc2l6ZWQgZGF0YS4KK1RvIG92ZXJjb21lIHRoaXMgbGltaXRhdGlvbiwgdGhlIHdob2xlIHNpemUgb2YgdGhlIGZpbGUgc3lzdGVtIG11c3QgYmUKK3BhZGRlZCB0byBhbiAxMDI0IGJ5dGUgYm91bmRhcnkuCisKK0lmIHlvdSBoYXZlIGFueSBwcm9ibGVtcyBvciBzdWdnZXN0aW9ucyBjb25jZXJuaW5nIHRoaXMgZmlsZSBzeXN0ZW0sCitwbGVhc2UgY29udGFjdCBtZS4gIEhvd2V2ZXIsIHRoaW5rIHR3aWNlIGJlZm9yZSB3YW50aW5nIG1lIHRvIGFkZAorZmVhdHVyZXMgYW5kIGNvZGUsIGJlY2F1c2UgdGhlIHByaW1hcnkgYW5kIG1vc3QgaW1wb3J0YW50IGFkdmFudGFnZSBvZgordGhpcyBmaWxlIHN5c3RlbSBpcyB0aGUgc21hbGwgY29kZS4gIE9uIHRoZSBvdGhlciBoYW5kLCBkb24ndCBiZQorYWxhcm1lZCwgSSdtIG5vdCBnZXR0aW5nIHRoYXQgbXVjaCByb21mcyByZWxhdGVkIG1haWwuICBOb3cgSSBjYW4KK3VuZGVyc3RhbmQgd2h5IEF2ZXJ5IHdyb3RlIHBvZW1zIGluIHRoZSBBUkNuZXQgZG9jcyB0byBnZXQgc29tZSBtb3JlCitmZWVkYmFjay4gOikKKworcm9tZnMgaGFzIGFsc28gYSBtYWlsaW5nIGxpc3QsIGFuZCB0byBkYXRlLCBpdCBoYXNuJ3QgcmVjZWl2ZWQgYW55Cit0cmFmZmljLCBzbyB5b3UgYXJlIHdlbGNvbWUgdG8gam9pbiBpdCB0byBkaXNjdXNzIHlvdXIgaWRlYXMuIDopCisKK0l0J3MgcnVuIGJ5IGV6bWxtLCBzbyB5b3UgY2FuIHN1YnNjcmliZSB0byBpdCBieSBzZW5kaW5nIGEgbWVzc2FnZQordG8gcm9tZnMtc3Vic2NyaWJlQHNoYWRvdy5iYW5raS5odSwgdGhlIGNvbnRlbnQgaXMgaXJyZWxldmFudC4KKworUGVuZGluZyBpc3N1ZXM6CisKKy0gUGVybWlzc2lvbnMgYW5kIG93bmVyIGluZm9ybWF0aW9uIGFyZSBwcmV0dHkgZXNzZW50aWFsIGZlYXR1cmVzIG9mIGEKK1VuKnggbGlrZSBzeXN0ZW0sIGJ1dCByb21mcyBkb2VzIG5vdCBwcm92aWRlIHRoZSBmdWxsIHBvc3NpYmlsaXRpZXMuCitJIGhhdmUgbmV2ZXIgZm91bmQgdGhpcyBsaW1pdGluZywgYnV0IG90aGVycyBtaWdodC4KKworLSBUaGUgZmlsZSBzeXN0ZW0gaXMgcmVhZCBvbmx5LCBzbyBpdCBjYW4gYmUgdmVyeSBzbWFsbCwgYnV0IGluIGNhc2UKK29uZSB3b3VsZCB3YW50IHRvIHdyaXRlIF9hbnl0aGluZ18gdG8gYSBmaWxlIHN5c3RlbSwgaGUgc3RpbGwgbmVlZHMKK2Egd3JpdGFibGUgZmlsZSBzeXN0ZW0sIHRodXMgbmVnYXRpbmcgdGhlIHNpemUgYWR2YW50YWdlcy4gIFBvc3NpYmxlCitzb2x1dGlvbnM6IGltcGxlbWVudCB3cml0ZSBhY2Nlc3MgYXMgYSBjb21waWxlLXRpbWUgb3B0aW9uLCBvciBhIG5ldywKK3NpbWlsYXJseSBzbWFsbCB3cml0YWJsZSBmaWxlc3lzdGVtIGZvciBSQU0gZGlza3MuCisKKy0gU2luY2UgdGhlIGZpbGVzIGFyZSBvbmx5IHJlcXVpcmVkIHRvIGhhdmUgYWxpZ25tZW50IG9uIGEgMTYgYnl0ZQorYm91bmRhcnksIGl0IGlzIGN1cnJlbnRseSBwb3NzaWJseSBzdWJvcHRpbWFsIHRvIHJlYWQgb3IgZXhlY3V0ZSBmaWxlcworZnJvbSB0aGUgZmlsZXN5c3RlbS4gIEl0IG1pZ2h0IGJlIHJlc29sdmVkIGJ5IHJlb3JkZXJpbmcgZmlsZSBkYXRhIHRvCitoYXZlIG1vc3Qgb2YgaXQgKGkuZS4gZXhjZXB0IHRoZSBzdGFydCBhbmQgdGhlIGVuZCkgbGF5aW5nIGF0ICJuYXR1cmFsIgorYm91bmRhcmllcywgdGh1cyBpdCB3b3VsZCBiZSBwb3NzaWJsZSB0byBkaXJlY3RseSBtYXAgYSBiaWcgcG9ydGlvbiBvZgordGhlIGZpbGUgY29udGVudHMgdG8gdGhlIG1tIHN1YnN5c3RlbS4KKworLSBDb21wcmVzc2lvbiBtaWdodCBiZSBhbiB1c2VmdWwgZmVhdHVyZSwgYnV0IG1lbW9yeSBpcyBxdWl0ZSBhCitsaW1pdGluZyBmYWN0b3IgaW4gbXkgZXllcy4KKworLSBXaGVyZSBpdCBpcyB1c2VkPworCistIERvZXMgaXQgd29yayBvbiBvdGhlciBhcmNoaXRlY3R1cmVzIHRoYW4gaW50ZWwgYW5kIG1vdG9yb2xhPworCisKK0hhdmUgZnVuLAorSmFub3MgRmFya2FzIDxjaGV4dW1Ac2hhZG93LmJhbmtpLmh1PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zZXFfZmlsZS50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3NlcV9maWxlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGU0MzAzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zZXFfZmlsZS50eHQKQEAgLTAsMCArMSwzMzggQEAKK1RoZSBzZXFfZmlsZSBpbnRlcmZhY2UKKworCUNvcHlyaWdodCAyMDAzIEpvbmF0aGFuIENvcmJldCA8Y29yYmV0QGx3bi5uZXQ+CisJVGhpcyBmaWxlIGlzIG9yaWdpbmFsbHkgZnJvbSB0aGUgTFdOLm5ldCBEcml2ZXIgUG9ydGluZyBzZXJpZXMgYXQKKwlodHRwOi8vbHduLm5ldC9BcnRpY2xlcy9kcml2ZXItcG9ydGluZy8KKworCitUaGVyZSBhcmUgbnVtZXJvdXMgd2F5cyBmb3IgYSBkZXZpY2UgZHJpdmVyIChvciBvdGhlciBrZXJuZWwgY29tcG9uZW50KSB0bworcHJvdmlkZSBpbmZvcm1hdGlvbiB0byB0aGUgdXNlciBvciBzeXN0ZW0gYWRtaW5pc3RyYXRvci4gIE9uZSB1c2VmdWwKK3RlY2huaXF1ZSBpcyB0aGUgY3JlYXRpb24gb2YgdmlydHVhbCBmaWxlcywgaW4gZGVidWdmcywgL3Byb2Mgb3IgZWxzZXdoZXJlLgorVmlydHVhbCBmaWxlcyBjYW4gcHJvdmlkZSBodW1hbi1yZWFkYWJsZSBvdXRwdXQgdGhhdCBpcyBlYXN5IHRvIGdldCBhdAord2l0aG91dCBhbnkgc3BlY2lhbCB1dGlsaXR5IHByb2dyYW1zOyB0aGV5IGNhbiBhbHNvIG1ha2UgbGlmZSBlYXNpZXIgZm9yCitzY3JpcHQgd3JpdGVycy4gSXQgaXMgbm90IHN1cnByaXNpbmcgdGhhdCB0aGUgdXNlIG9mIHZpcnR1YWwgZmlsZXMgaGFzCitncm93biBvdmVyIHRoZSB5ZWFycy4KKworQ3JlYXRpbmcgdGhvc2UgZmlsZXMgY29ycmVjdGx5IGhhcyBhbHdheXMgYmVlbiBhIGJpdCBvZiBhIGNoYWxsZW5nZSwKK2hvd2V2ZXIuIEl0IGlzIG5vdCB0aGF0IGhhcmQgdG8gbWFrZSBhIHZpcnR1YWwgZmlsZSB3aGljaCByZXR1cm5zIGEKK3N0cmluZy4gQnV0IGxpZmUgZ2V0cyB0cmlja2llciBpZiB0aGUgb3V0cHV0IGlzIGxvbmcgLSBhbnl0aGluZyBncmVhdGVyCit0aGFuIGFuIGFwcGxpY2F0aW9uIGlzIGxpa2VseSB0byByZWFkIGluIGEgc2luZ2xlIG9wZXJhdGlvbi4gIEhhbmRsaW5nCittdWx0aXBsZSByZWFkcyAoYW5kIHNlZWtzKSByZXF1aXJlcyBjYXJlZnVsIGF0dGVudGlvbiB0byB0aGUgcmVhZGVyJ3MKK3Bvc2l0aW9uIHdpdGhpbiB0aGUgdmlydHVhbCBmaWxlIC0gdGhhdCBwb3NpdGlvbiBpcywgbGlrZWx5IGFzIG5vdCwgaW4gdGhlCittaWRkbGUgb2YgYSBsaW5lIG9mIG91dHB1dC4gVGhlIGtlcm5lbCBoYXMgdHJhZGl0aW9uYWxseSBoYWQgYSBudW1iZXIgb2YKK2ltcGxlbWVudGF0aW9ucyB0aGF0IGdvdCB0aGlzIHdyb25nLgorCitUaGUgMi42IGtlcm5lbCBjb250YWlucyBhIHNldCBvZiBmdW5jdGlvbnMgKGltcGxlbWVudGVkIGJ5IEFsZXhhbmRlciBWaXJvKQord2hpY2ggYXJlIGRlc2lnbmVkIHRvIG1ha2UgaXQgZWFzeSBmb3IgdmlydHVhbCBmaWxlIGNyZWF0b3JzIHRvIGdldCBpdAorcmlnaHQuCisKK1RoZSBzZXFfZmlsZSBpbnRlcmZhY2UgaXMgYXZhaWxhYmxlIHZpYSA8bGludXgvc2VxX2ZpbGUuaD4uIFRoZXJlIGFyZQordGhyZWUgYXNwZWN0cyB0byBzZXFfZmlsZToKKworICAgICAqIEFuIGl0ZXJhdG9yIGludGVyZmFjZSB3aGljaCBsZXRzIGEgdmlydHVhbCBmaWxlIGltcGxlbWVudGF0aW9uCisgICAgICAgc3RlcCB0aHJvdWdoIHRoZSBvYmplY3RzIGl0IGlzIHByZXNlbnRpbmcuCisKKyAgICAgKiBTb21lIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBmb3JtYXR0aW5nIG9iamVjdHMgZm9yIG91dHB1dCB3aXRob3V0CisgICAgICAgbmVlZGluZyB0byB3b3JyeSBhYm91dCB0aGluZ3MgbGlrZSBvdXRwdXQgYnVmZmVycy4KKworICAgICAqIEEgc2V0IG9mIGNhbm5lZCBmaWxlX29wZXJhdGlvbnMgd2hpY2ggaW1wbGVtZW50IG1vc3Qgb3BlcmF0aW9ucyBvbgorICAgICAgIHRoZSB2aXJ0dWFsIGZpbGUuCisKK1dlJ2xsIGxvb2sgYXQgdGhlIHNlcV9maWxlIGludGVyZmFjZSB2aWEgYW4gZXh0cmVtZWx5IHNpbXBsZSBleGFtcGxlOiBhCitsb2FkYWJsZSBtb2R1bGUgd2hpY2ggY3JlYXRlcyBhIGZpbGUgY2FsbGVkIC9wcm9jL3NlcXVlbmNlLiBUaGUgZmlsZSwgd2hlbgorcmVhZCwgc2ltcGx5IHByb2R1Y2VzIGEgc2V0IG9mIGluY3JlYXNpbmcgaW50ZWdlciB2YWx1ZXMsIG9uZSBwZXIgbGluZS4gVGhlCitzZXF1ZW5jZSB3aWxsIGNvbnRpbnVlIHVudGlsIHRoZSB1c2VyIGxvc2VzIHBhdGllbmNlIGFuZCBmaW5kcyBzb21ldGhpbmcKK2JldHRlciB0byBkby4gVGhlIGZpbGUgaXMgc2Vla2FibGUsIGluIHRoYXQgb25lIGNhbiBkbyBzb21ldGhpbmcgbGlrZSB0aGUKK2ZvbGxvd2luZzoKKworICAgIGRkIGlmPS9wcm9jL3NlcXVlbmNlIG9mPW91dDEgY291bnQ9MQorICAgIGRkIGlmPS9wcm9jL3NlcXVlbmNlIHNraXA9MSBvZj1vdXQyIGNvdW50PTEKKworVGhlbiBjb25jYXRlbmF0ZSB0aGUgb3V0cHV0IGZpbGVzIG91dDEgYW5kIG91dDIgYW5kIGdldCB0aGUgcmlnaHQKK3Jlc3VsdC4gWWVzLCBpdCBpcyBhIHRob3JvdWdobHkgdXNlbGVzcyBtb2R1bGUsIGJ1dCB0aGUgcG9pbnQgaXMgdG8gc2hvdworaG93IHRoZSBtZWNoYW5pc20gd29ya3Mgd2l0aG91dCBnZXR0aW5nIGxvc3QgaW4gb3RoZXIgZGV0YWlscy4gIChUaG9zZQord2FudGluZyB0byBzZWUgdGhlIGZ1bGwgc291cmNlIGZvciB0aGlzIG1vZHVsZSBjYW4gZmluZCBpdCBhdAoraHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvMjIzNTkvKS4KKworRGVwcmVjYXRlZCBjcmVhdGVfcHJvY19lbnRyeQorCitOb3RlIHRoYXQgdGhlIGFib3ZlIGFydGljbGUgdXNlcyBjcmVhdGVfcHJvY19lbnRyeSB3aGljaCB3YXMgcmVtb3ZlZCBpbgora2VybmVsIDMuMTAuIEN1cnJlbnQgdmVyc2lvbnMgcmVxdWlyZSB0aGUgZm9sbG93aW5nIHVwZGF0ZQorCistCWVudHJ5ID0gY3JlYXRlX3Byb2NfZW50cnkoInNlcXVlbmNlIiwgMCwgTlVMTCk7CistCWlmIChlbnRyeSkKKy0JCWVudHJ5LT5wcm9jX2ZvcHMgPSAmY3RfZmlsZV9vcHM7CisrCWVudHJ5ID0gcHJvY19jcmVhdGUoInNlcXVlbmNlIiwgMCwgTlVMTCwgJmN0X2ZpbGVfb3BzKTsKKworVGhlIGl0ZXJhdG9yIGludGVyZmFjZQorCitNb2R1bGVzIGltcGxlbWVudGluZyBhIHZpcnR1YWwgZmlsZSB3aXRoIHNlcV9maWxlIG11c3QgaW1wbGVtZW50IGEgc2ltcGxlCitpdGVyYXRvciBvYmplY3QgdGhhdCBhbGxvd3Mgc3RlcHBpbmcgdGhyb3VnaCB0aGUgZGF0YSBvZiBpbnRlcmVzdC4KK0l0ZXJhdG9ycyBtdXN0IGJlIGFibGUgdG8gbW92ZSB0byBhIHNwZWNpZmljIHBvc2l0aW9uIC0gbGlrZSB0aGUgZmlsZSB0aGV5CitpbXBsZW1lbnQgLSBidXQgdGhlIGludGVycHJldGF0aW9uIG9mIHRoYXQgcG9zaXRpb24gaXMgdXAgdG8gdGhlIGl0ZXJhdG9yCitpdHNlbGYuIEEgc2VxX2ZpbGUgaW1wbGVtZW50YXRpb24gdGhhdCBpcyBmb3JtYXR0aW5nIGZpcmV3YWxsIHJ1bGVzLCBmb3IKK2V4YW1wbGUsIGNvdWxkIGludGVycHJldCBwb3NpdGlvbiBOIGFzIHRoZSBOdGggcnVsZSBpbiB0aGUgY2hhaW4uCitQb3NpdGlvbmluZyBjYW4gdGh1cyBiZSBkb25lIGluIHdoYXRldmVyIHdheSBtYWtlcyB0aGUgbW9zdCBzZW5zZSBmb3IgdGhlCitnZW5lcmF0b3Igb2YgdGhlIGRhdGEsIHdoaWNoIG5lZWQgbm90IGJlIGF3YXJlIG9mIGhvdyBhIHBvc2l0aW9uIHRyYW5zbGF0ZXMKK3RvIGFuIG9mZnNldCBpbiB0aGUgdmlydHVhbCBmaWxlLiBUaGUgb25lIG9idmlvdXMgZXhjZXB0aW9uIGlzIHRoYXQgYQorcG9zaXRpb24gb2YgemVybyBzaG91bGQgaW5kaWNhdGUgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4KKworVGhlIC9wcm9jL3NlcXVlbmNlIGl0ZXJhdG9yIGp1c3QgdXNlcyB0aGUgY291bnQgb2YgdGhlIG5leHQgbnVtYmVyIGl0Cit3aWxsIG91dHB1dCBhcyBpdHMgcG9zaXRpb24uCisKK0ZvdXIgZnVuY3Rpb25zIG11c3QgYmUgaW1wbGVtZW50ZWQgdG8gbWFrZSB0aGUgaXRlcmF0b3Igd29yay4gVGhlIGZpcnN0LAorY2FsbGVkIHN0YXJ0KCkgdGFrZXMgYSBwb3NpdGlvbiBhcyBhbiBhcmd1bWVudCBhbmQgcmV0dXJucyBhbiBpdGVyYXRvcgord2hpY2ggd2lsbCBzdGFydCByZWFkaW5nIGF0IHRoYXQgcG9zaXRpb24uIEZvciBvdXIgc2ltcGxlIHNlcXVlbmNlIGV4YW1wbGUsCit0aGUgc3RhcnQoKSBmdW5jdGlvbiBsb29rcyBsaWtlOgorCisJc3RhdGljIHZvaWQgKmN0X3NlcV9zdGFydChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIGxvZmZfdCAqcG9zKQorCXsKKwkgICAgICAgIGxvZmZfdCAqc3BvcyA9IGttYWxsb2Moc2l6ZW9mKGxvZmZfdCksIEdGUF9LRVJORUwpOworCSAgICAgICAgaWYgKCEgc3BvcykKKwkgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisJICAgICAgICAqc3BvcyA9ICpwb3M7CisJICAgICAgICByZXR1cm4gc3BvczsKKwl9CisKK1RoZSBlbnRpcmUgZGF0YSBzdHJ1Y3R1cmUgZm9yIHRoaXMgaXRlcmF0b3IgaXMgYSBzaW5nbGUgbG9mZl90IHZhbHVlCitob2xkaW5nIHRoZSBjdXJyZW50IHBvc2l0aW9uLiBUaGVyZSBpcyBubyB1cHBlciBib3VuZCBmb3IgdGhlIHNlcXVlbmNlCitpdGVyYXRvciwgYnV0IHRoYXQgd2lsbCBub3QgYmUgdGhlIGNhc2UgZm9yIG1vc3Qgb3RoZXIgc2VxX2ZpbGUKK2ltcGxlbWVudGF0aW9uczsgaW4gbW9zdCBjYXNlcyB0aGUgc3RhcnQoKSBmdW5jdGlvbiBzaG91bGQgY2hlY2sgZm9yIGEKKyJwYXN0IGVuZCBvZiBmaWxlIiBjb25kaXRpb24gYW5kIHJldHVybiBOVUxMIGlmIG5lZWQgYmUuCisKK0ZvciBtb3JlIGNvbXBsaWNhdGVkIGFwcGxpY2F0aW9ucywgdGhlIHByaXZhdGUgZmllbGQgb2YgdGhlIHNlcV9maWxlCitzdHJ1Y3R1cmUgY2FuIGJlIHVzZWQuIFRoZXJlIGlzIGFsc28gYSBzcGVjaWFsIHZhbHVlIHdoaWNoIGNhbiBiZSByZXR1cm5lZAorYnkgdGhlIHN0YXJ0KCkgZnVuY3Rpb24gY2FsbGVkIFNFUV9TVEFSVF9UT0tFTjsgaXQgY2FuIGJlIHVzZWQgaWYgeW91IHdpc2gKK3RvIGluc3RydWN0IHlvdXIgc2hvdygpIGZ1bmN0aW9uIChkZXNjcmliZWQgYmVsb3cpIHRvIHByaW50IGEgaGVhZGVyIGF0IHRoZQordG9wIG9mIHRoZSBvdXRwdXQuIFNFUV9TVEFSVF9UT0tFTiBzaG91bGQgb25seSBiZSB1c2VkIGlmIHRoZSBvZmZzZXQgaXMKK3plcm8sIGhvd2V2ZXIuCisKK1RoZSBuZXh0IGZ1bmN0aW9uIHRvIGltcGxlbWVudCBpcyBjYWxsZWQsIGFtYXppbmdseSwgbmV4dCgpOyBpdHMgam9iIGlzIHRvCittb3ZlIHRoZSBpdGVyYXRvciBmb3J3YXJkIHRvIHRoZSBuZXh0IHBvc2l0aW9uIGluIHRoZSBzZXF1ZW5jZS4gIFRoZQorZXhhbXBsZSBtb2R1bGUgY2FuIHNpbXBseSBpbmNyZW1lbnQgdGhlIHBvc2l0aW9uIGJ5IG9uZTsgbW9yZSB1c2VmdWwKK21vZHVsZXMgd2lsbCBkbyB3aGF0IGlzIG5lZWRlZCB0byBzdGVwIHRocm91Z2ggc29tZSBkYXRhIHN0cnVjdHVyZS4gVGhlCituZXh0KCkgZnVuY3Rpb24gcmV0dXJucyBhIG5ldyBpdGVyYXRvciwgb3IgTlVMTCBpZiB0aGUgc2VxdWVuY2UgaXMKK2NvbXBsZXRlLiBIZXJlJ3MgdGhlIGV4YW1wbGUgdmVyc2lvbjoKKworCXN0YXRpYyB2b2lkICpjdF9zZXFfbmV4dChzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnYsIGxvZmZfdCAqcG9zKQorCXsKKwkgICAgICAgIGxvZmZfdCAqc3BvcyA9IHY7CisJICAgICAgICAqcG9zID0gKysqc3BvczsKKwkgICAgICAgIHJldHVybiBzcG9zOworCX0KKworVGhlIHN0b3AoKSBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBpdGVyYXRpb24gaXMgY29tcGxldGU7IGl0cyBqb2IsIG9mCitjb3Vyc2UsIGlzIHRvIGNsZWFuIHVwLiBJZiBkeW5hbWljIG1lbW9yeSBpcyBhbGxvY2F0ZWQgZm9yIHRoZSBpdGVyYXRvciwKK3N0b3AoKSBpcyB0aGUgcGxhY2UgdG8gZnJlZSBpdC4KKworCXN0YXRpYyB2b2lkIGN0X3NlcV9zdG9wKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdikKKwl7CisJICAgICAgICBrZnJlZSh2KTsKKwl9CisKK0ZpbmFsbHksIHRoZSBzaG93KCkgZnVuY3Rpb24gc2hvdWxkIGZvcm1hdCB0aGUgb2JqZWN0IGN1cnJlbnRseSBwb2ludGVkIHRvCitieSB0aGUgaXRlcmF0b3IgZm9yIG91dHB1dC4gIFRoZSBleGFtcGxlIG1vZHVsZSdzIHNob3coKSBmdW5jdGlvbiBpczoKKworCXN0YXRpYyBpbnQgY3Rfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KQorCXsKKwkgICAgICAgIGxvZmZfdCAqc3BvcyA9IHY7CisJICAgICAgICBzZXFfcHJpbnRmKHMsICIlbGxkXG4iLCAobG9uZyBsb25nKSpzcG9zKTsKKwkgICAgICAgIHJldHVybiAwOworCX0KKworSWYgYWxsIGlzIHdlbGwsIHRoZSBzaG93KCkgZnVuY3Rpb24gc2hvdWxkIHJldHVybiB6ZXJvLiAgQSBuZWdhdGl2ZSBlcnJvcgorY29kZSBpbiB0aGUgdXN1YWwgbWFubmVyIGluZGljYXRlcyB0aGF0IHNvbWV0aGluZyB3ZW50IHdyb25nOyBpdCB3aWxsIGJlCitwYXNzZWQgYmFjayB0byB1c2VyIHNwYWNlLiAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyByZXR1cm4gU0VRX1NLSVAsIHdoaWNoCitjYXVzZXMgdGhlIGN1cnJlbnQgaXRlbSB0byBiZSBza2lwcGVkOyBpZiB0aGUgc2hvdygpIGZ1bmN0aW9uIGhhcyBhbHJlYWR5CitnZW5lcmF0ZWQgb3V0cHV0IGJlZm9yZSByZXR1cm5pbmcgU0VRX1NLSVAsIHRoYXQgb3V0cHV0IHdpbGwgYmUgZHJvcHBlZC4KKworV2Ugd2lsbCBsb29rIGF0IHNlcV9wcmludGYoKSBpbiBhIG1vbWVudC4gQnV0IGZpcnN0LCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKK3NlcV9maWxlIGl0ZXJhdG9yIGlzIGZpbmlzaGVkIGJ5IGNyZWF0aW5nIGEgc2VxX29wZXJhdGlvbnMgc3RydWN0dXJlIHdpdGgKK3RoZSBmb3VyIGZ1bmN0aW9ucyB3ZSBoYXZlIGp1c3QgZGVmaW5lZDoKKworCXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2VxX29wZXJhdGlvbnMgY3Rfc2VxX29wcyA9IHsKKwkgICAgICAgIC5zdGFydCA9IGN0X3NlcV9zdGFydCwKKwkgICAgICAgIC5uZXh0ICA9IGN0X3NlcV9uZXh0LAorCSAgICAgICAgLnN0b3AgID0gY3Rfc2VxX3N0b3AsCisJICAgICAgICAuc2hvdyAgPSBjdF9zZXFfc2hvdworCX07CisKK1RoaXMgc3RydWN0dXJlIHdpbGwgYmUgbmVlZGVkIHRvIHRpZSBvdXIgaXRlcmF0b3IgdG8gdGhlIC9wcm9jIGZpbGUgaW4KK2EgbGl0dGxlIGJpdC4KKworSXQncyB3b3J0aCBub3RpbmcgdGhhdCB0aGUgaXRlcmF0b3IgdmFsdWUgcmV0dXJuZWQgYnkgc3RhcnQoKSBhbmQKK21hbmlwdWxhdGVkIGJ5IHRoZSBvdGhlciBmdW5jdGlvbnMgaXMgY29uc2lkZXJlZCB0byBiZSBjb21wbGV0ZWx5IG9wYXF1ZSBieQordGhlIHNlcV9maWxlIGNvZGUuIEl0IGNhbiB0aHVzIGJlIGFueXRoaW5nIHRoYXQgaXMgdXNlZnVsIGluIHN0ZXBwaW5nCit0aHJvdWdoIHRoZSBkYXRhIHRvIGJlIG91dHB1dC4gQ291bnRlcnMgY2FuIGJlIHVzZWZ1bCwgYnV0IGl0IGNvdWxkIGFsc28gYmUKK2EgZGlyZWN0IHBvaW50ZXIgaW50byBhbiBhcnJheSBvciBsaW5rZWQgbGlzdC4gQW55dGhpbmcgZ29lcywgYXMgbG9uZyBhcwordGhlIHByb2dyYW1tZXIgaXMgYXdhcmUgdGhhdCB0aGluZ3MgY2FuIGhhcHBlbiBiZXR3ZWVuIGNhbGxzIHRvIHRoZQoraXRlcmF0b3IgZnVuY3Rpb24uIEhvd2V2ZXIsIHRoZSBzZXFfZmlsZSBjb2RlIChieSBkZXNpZ24pIHdpbGwgbm90IHNsZWVwCitiZXR3ZWVuIHRoZSBjYWxscyB0byBzdGFydCgpIGFuZCBzdG9wKCksIHNvIGhvbGRpbmcgYSBsb2NrIGR1cmluZyB0aGF0IHRpbWUKK2lzIGEgcmVhc29uYWJsZSB0aGluZyB0byBkby4gVGhlIHNlcV9maWxlIGNvZGUgd2lsbCBhbHNvIGF2b2lkIHRha2luZyBhbnkKK290aGVyIGxvY2tzIHdoaWxlIHRoZSBpdGVyYXRvciBpcyBhY3RpdmUuCisKKworRm9ybWF0dGVkIG91dHB1dAorCitUaGUgc2VxX2ZpbGUgY29kZSBtYW5hZ2VzIHBvc2l0aW9uaW5nIHdpdGhpbiB0aGUgb3V0cHV0IGNyZWF0ZWQgYnkgdGhlCitpdGVyYXRvciBhbmQgZ2V0dGluZyBpdCBpbnRvIHRoZSB1c2VyJ3MgYnVmZmVyLiBCdXQsIGZvciB0aGF0IHRvIHdvcmssIHRoYXQKK291dHB1dCBtdXN0IGJlIHBhc3NlZCB0byB0aGUgc2VxX2ZpbGUgY29kZS4gU29tZSB1dGlsaXR5IGZ1bmN0aW9ucyBoYXZlCitiZWVuIGRlZmluZWQgd2hpY2ggbWFrZSB0aGlzIHRhc2sgZWFzeS4KKworTW9zdCBjb2RlIHdpbGwgc2ltcGx5IHVzZSBzZXFfcHJpbnRmKCksIHdoaWNoIHdvcmtzIHByZXR0eSBtdWNoIGxpa2UKK3ByaW50aygpLCBidXQgd2hpY2ggcmVxdWlyZXMgdGhlIHNlcV9maWxlIHBvaW50ZXIgYXMgYW4gYXJndW1lbnQuCisKK0ZvciBzdHJhaWdodCBjaGFyYWN0ZXIgb3V0cHV0LCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBtYXkgYmUgdXNlZDoKKworCXNlcV9wdXRjKHN0cnVjdCBzZXFfZmlsZSAqbSwgY2hhciBjKTsKKwlzZXFfcHV0cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGNvbnN0IGNoYXIgKnMpOworCXNlcV9lc2NhcGUoc3RydWN0IHNlcV9maWxlICptLCBjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICplc2MpOworCitUaGUgZmlyc3QgdHdvIG91dHB1dCBhIHNpbmdsZSBjaGFyYWN0ZXIgYW5kIGEgc3RyaW5nLCBqdXN0IGxpa2Ugb25lIHdvdWxkCitleHBlY3QuIHNlcV9lc2NhcGUoKSBpcyBsaWtlIHNlcV9wdXRzKCksIGV4Y2VwdCB0aGF0IGFueSBjaGFyYWN0ZXIgaW4gcword2hpY2ggaXMgaW4gdGhlIHN0cmluZyBlc2Mgd2lsbCBiZSByZXByZXNlbnRlZCBpbiBvY3RhbCBmb3JtIGluIHRoZSBvdXRwdXQuCisKK1RoZXJlIGFyZSBhbHNvIGEgcGFpciBvZiBmdW5jdGlvbnMgZm9yIHByaW50aW5nIGZpbGVuYW1lczoKKworCWludCBzZXFfcGF0aChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGNvbnN0IHN0cnVjdCBwYXRoICpwYXRoLAorCQkgICAgIGNvbnN0IGNoYXIgKmVzYyk7CisJaW50IHNlcV9wYXRoX3Jvb3Qoc3RydWN0IHNlcV9maWxlICptLCBjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCwKKwkJCSAgY29uc3Qgc3RydWN0IHBhdGggKnJvb3QsIGNvbnN0IGNoYXIgKmVzYykKKworSGVyZSwgcGF0aCBpbmRpY2F0ZXMgdGhlIGZpbGUgb2YgaW50ZXJlc3QsIGFuZCBlc2MgaXMgYSBzZXQgb2YgY2hhcmFjdGVycword2hpY2ggc2hvdWxkIGJlIGVzY2FwZWQgaW4gdGhlIG91dHB1dC4gIEEgY2FsbCB0byBzZXFfcGF0aCgpIHdpbGwgb3V0cHV0Cit0aGUgcGF0aCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZmlsZXN5c3RlbSByb290LiAgSWYgYSBkaWZmZXJlbnQKK3Jvb3QgaXMgZGVzaXJlZCwgaXQgY2FuIGJlIHVzZWQgd2l0aCBzZXFfcGF0aF9yb290KCkuICBJZiBpdCB0dXJucyBvdXQgdGhhdAorcGF0aCBjYW5ub3QgYmUgcmVhY2hlZCBmcm9tIHJvb3QsIHNlcV9wYXRoX3Jvb3QoKSByZXR1cm5zIFNFUV9TS0lQLgorCitBIGZ1bmN0aW9uIHByb2R1Y2luZyBjb21wbGljYXRlZCBvdXRwdXQgbWF5IHdhbnQgdG8gY2hlY2sKKwlib29sIHNlcV9oYXNfb3ZlcmZsb3dlZChzdHJ1Y3Qgc2VxX2ZpbGUgKm0pOworYW5kIGF2b2lkIGZ1cnRoZXIgc2VxXzxvdXRwdXQ+IGNhbGxzIGlmIHRydWUgaXMgcmV0dXJuZWQuCisKK0EgdHJ1ZSByZXR1cm4gZnJvbSBzZXFfaGFzX292ZXJmbG93ZWQgbWVhbnMgdGhhdCB0aGUgc2VxX2ZpbGUgYnVmZmVyIHdpbGwKK2JlIGRpc2NhcmRlZCBhbmQgdGhlIHNlcV9zaG93IGZ1bmN0aW9uIHdpbGwgYXR0ZW1wdCB0byBhbGxvY2F0ZSBhIGxhcmdlcgorYnVmZmVyIGFuZCByZXRyeSBwcmludGluZy4KKworCitNYWtpbmcgaXQgYWxsIHdvcmsKKworU28gZmFyLCB3ZSBoYXZlIGEgbmljZSBzZXQgb2YgZnVuY3Rpb25zIHdoaWNoIGNhbiBwcm9kdWNlIG91dHB1dCB3aXRoaW4gdGhlCitzZXFfZmlsZSBzeXN0ZW0sIGJ1dCB3ZSBoYXZlIG5vdCB5ZXQgdHVybmVkIHRoZW0gaW50byBhIGZpbGUgdGhhdCBhIHVzZXIKK2NhbiBzZWUuIENyZWF0aW5nIGEgZmlsZSB3aXRoaW4gdGhlIGtlcm5lbCByZXF1aXJlcywgb2YgY291cnNlLCB0aGUKK2NyZWF0aW9uIG9mIGEgc2V0IG9mIGZpbGVfb3BlcmF0aW9ucyB3aGljaCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbnMgb24gdGhhdAorZmlsZS4gVGhlIHNlcV9maWxlIGludGVyZmFjZSBwcm92aWRlcyBhIHNldCBvZiBjYW5uZWQgb3BlcmF0aW9ucyB3aGljaCBkbworbW9zdCBvZiB0aGUgd29yay4gVGhlIHZpcnR1YWwgZmlsZSBhdXRob3Igc3RpbGwgbXVzdCBpbXBsZW1lbnQgdGhlIG9wZW4oKQorbWV0aG9kLCBob3dldmVyLCB0byBob29rIGV2ZXJ5dGhpbmcgdXAuIFRoZSBvcGVuIGZ1bmN0aW9uIGlzIG9mdGVuIGEgc2luZ2xlCitsaW5lLCBhcyBpbiB0aGUgZXhhbXBsZSBtb2R1bGU6CisKKwlzdGF0aWMgaW50IGN0X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCisJeworCQlyZXR1cm4gc2VxX29wZW4oZmlsZSwgJmN0X3NlcV9vcHMpOworCX0KKworSGVyZSwgdGhlIGNhbGwgdG8gc2VxX29wZW4oKSB0YWtlcyB0aGUgc2VxX29wZXJhdGlvbnMgc3RydWN0dXJlIHdlIGNyZWF0ZWQKK2JlZm9yZSwgYW5kIGdldHMgc2V0IHVwIHRvIGl0ZXJhdGUgdGhyb3VnaCB0aGUgdmlydHVhbCBmaWxlLgorCitPbiBhIHN1Y2Nlc3NmdWwgb3Blbiwgc2VxX29wZW4oKSBzdG9yZXMgdGhlIHN0cnVjdCBzZXFfZmlsZSBwb2ludGVyIGluCitmaWxlLT5wcml2YXRlX2RhdGEuIElmIHlvdSBoYXZlIGFuIGFwcGxpY2F0aW9uIHdoZXJlIHRoZSBzYW1lIGl0ZXJhdG9yIGNhbgorYmUgdXNlZCBmb3IgbW9yZSB0aGFuIG9uZSBmaWxlLCB5b3UgY2FuIHN0b3JlIGFuIGFyYml0cmFyeSBwb2ludGVyIGluIHRoZQorcHJpdmF0ZSBmaWVsZCBvZiB0aGUgc2VxX2ZpbGUgc3RydWN0dXJlOyB0aGF0IHZhbHVlIGNhbiB0aGVuIGJlIHJldHJpZXZlZAorYnkgdGhlIGl0ZXJhdG9yIGZ1bmN0aW9ucy4KKworVGhlcmUgaXMgYWxzbyBhIHdyYXBwZXIgZnVuY3Rpb24gdG8gc2VxX29wZW4oKSBjYWxsZWQgc2VxX29wZW5fcHJpdmF0ZSgpLiBJdAora21hbGxvY3MgYSB6ZXJvIGZpbGxlZCBibG9jayBvZiBtZW1vcnkgYW5kIHN0b3JlcyBhIHBvaW50ZXIgdG8gaXQgaW4gdGhlCitwcml2YXRlIGZpZWxkIG9mIHRoZSBzZXFfZmlsZSBzdHJ1Y3R1cmUsIHJldHVybmluZyAwIG9uIHN1Y2Nlc3MuIFRoZQorYmxvY2sgc2l6ZSBpcyBzcGVjaWZpZWQgaW4gYSB0aGlyZCBwYXJhbWV0ZXIgdG8gdGhlIGZ1bmN0aW9uLCBlLmcuOgorCisJc3RhdGljIGludCBjdF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQorCXsKKwkJcmV0dXJuIHNlcV9vcGVuX3ByaXZhdGUoZmlsZSwgJmN0X3NlcV9vcHMsCisJCQkJCXNpemVvZihzdHJ1Y3QgbXlzdHJ1Y3QpKTsKKwl9CisKK1RoZXJlIGlzIGFsc28gYSB2YXJpYW50IGZ1bmN0aW9uLCBfX3NlcV9vcGVuX3ByaXZhdGUoKSwgd2hpY2ggaXMgZnVuY3Rpb25hbGx5CitpZGVudGljYWwgZXhjZXB0IHRoYXQsIGlmIHN1Y2Nlc3NmdWwsIGl0IHJldHVybnMgdGhlIHBvaW50ZXIgdG8gdGhlIGFsbG9jYXRlZAorbWVtb3J5IGJsb2NrLCBhbGxvd2luZyBmdXJ0aGVyIGluaXRpYWxpc2F0aW9uIGUuZy46CisKKwlzdGF0aWMgaW50IGN0X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCisJeworCQlzdHJ1Y3QgbXlzdHJ1Y3QgKnAgPQorCQkJX19zZXFfb3Blbl9wcml2YXRlKGZpbGUsICZjdF9zZXFfb3BzLCBzaXplb2YoKnApKTsKKworCQlpZiAoIXApCisJCQlyZXR1cm4gLUVOT01FTTsKKworCQlwLT5mb28gPSBiYXI7IC8qIGluaXRpYWxpemUgbXkgc3R1ZmYgKi8KKwkJCS4uLgorCQlwLT5iYXogPSB0cnVlOworCisJCXJldHVybiAwOworCX0KKworQSBjb3JyZXNwb25kaW5nIGNsb3NlIGZ1bmN0aW9uLCBzZXFfcmVsZWFzZV9wcml2YXRlKCkgaXMgYXZhaWxhYmxlIHdoaWNoCitmcmVlcyB0aGUgbWVtb3J5IGFsbG9jYXRlZCBpbiB0aGUgY29ycmVzcG9uZGluZyBvcGVuLgorCitUaGUgb3RoZXIgb3BlcmF0aW9ucyBvZiBpbnRlcmVzdCAtIHJlYWQoKSwgbGxzZWVrKCksIGFuZCByZWxlYXNlKCkgLSBhcmUKK2FsbCBpbXBsZW1lbnRlZCBieSB0aGUgc2VxX2ZpbGUgY29kZSBpdHNlbGYuIFNvIGEgdmlydHVhbCBmaWxlJ3MKK2ZpbGVfb3BlcmF0aW9ucyBzdHJ1Y3R1cmUgd2lsbCBsb29rIGxpa2U6CisKKwlzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBjdF9maWxlX29wcyA9IHsKKwkgICAgICAgIC5vd25lciAgID0gVEhJU19NT0RVTEUsCisJICAgICAgICAub3BlbiAgICA9IGN0X29wZW4sCisJICAgICAgICAucmVhZCAgICA9IHNlcV9yZWFkLAorCSAgICAgICAgLmxsc2VlayAgPSBzZXFfbHNlZWssCisJICAgICAgICAucmVsZWFzZSA9IHNlcV9yZWxlYXNlCisJfTsKKworVGhlcmUgaXMgYWxzbyBhIHNlcV9yZWxlYXNlX3ByaXZhdGUoKSB3aGljaCBwYXNzZXMgdGhlIGNvbnRlbnRzIG9mIHRoZQorc2VxX2ZpbGUgcHJpdmF0ZSBmaWVsZCB0byBrZnJlZSgpIGJlZm9yZSByZWxlYXNpbmcgdGhlIHN0cnVjdHVyZS4KKworVGhlIGZpbmFsIHN0ZXAgaXMgdGhlIGNyZWF0aW9uIG9mIHRoZSAvcHJvYyBmaWxlIGl0c2VsZi4gSW4gdGhlIGV4YW1wbGUKK2NvZGUsIHRoYXQgaXMgZG9uZSBpbiB0aGUgaW5pdGlhbGl6YXRpb24gY29kZSBpbiB0aGUgdXN1YWwgd2F5OgorCisJc3RhdGljIGludCBjdF9pbml0KHZvaWQpCisJeworCSAgICAgICAgc3RydWN0IHByb2NfZGlyX2VudHJ5ICplbnRyeTsKKworCSAgICAgICAgcHJvY19jcmVhdGUoInNlcXVlbmNlIiwgMCwgTlVMTCwgJmN0X2ZpbGVfb3BzKTsKKwkgICAgICAgIHJldHVybiAwOworCX0KKworCW1vZHVsZV9pbml0KGN0X2luaXQpOworCitBbmQgdGhhdCBpcyBwcmV0dHkgbXVjaCBpdC4KKworCitzZXFfbGlzdAorCitJZiB5b3VyIGZpbGUgd2lsbCBiZSBpdGVyYXRpbmcgdGhyb3VnaCBhIGxpbmtlZCBsaXN0LCB5b3UgbWF5IGZpbmQgdGhlc2UKK3JvdXRpbmVzIHVzZWZ1bDoKKworCXN0cnVjdCBsaXN0X2hlYWQgKnNlcV9saXN0X3N0YXJ0KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsCisJICAgICAgIAkJIAkJIGxvZmZfdCBwb3MpOworCXN0cnVjdCBsaXN0X2hlYWQgKnNlcV9saXN0X3N0YXJ0X2hlYWQoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCwKKwkJCSAJCSAgICAgIGxvZmZfdCBwb3MpOworCXN0cnVjdCBsaXN0X2hlYWQgKnNlcV9saXN0X25leHQodm9pZCAqdiwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCwKKwkJCQkJbG9mZl90ICpwcG9zKTsKKworVGhlc2UgaGVscGVycyB3aWxsIGludGVycHJldCBwb3MgYXMgYSBwb3NpdGlvbiB3aXRoaW4gdGhlIGxpc3QgYW5kIGl0ZXJhdGUKK2FjY29yZGluZ2x5LiAgWW91ciBzdGFydCgpIGFuZCBuZXh0KCkgZnVuY3Rpb25zIG5lZWQgb25seSBpbnZva2UgdGhlCitzZXFfbGlzdF8qIGhlbHBlcnMgd2l0aCBhIHBvaW50ZXIgdG8gdGhlIGFwcHJvcHJpYXRlIGxpc3RfaGVhZCBzdHJ1Y3R1cmUuCisKKworVGhlIGV4dHJhLXNpbXBsZSB2ZXJzaW9uCisKK0ZvciBleHRyZW1lbHkgc2ltcGxlIHZpcnR1YWwgZmlsZXMsIHRoZXJlIGlzIGFuIGV2ZW4gZWFzaWVyIGludGVyZmFjZS4gIEEKK21vZHVsZSBjYW4gZGVmaW5lIG9ubHkgdGhlIHNob3coKSBmdW5jdGlvbiwgd2hpY2ggc2hvdWxkIGNyZWF0ZSBhbGwgdGhlCitvdXRwdXQgdGhhdCB0aGUgdmlydHVhbCBmaWxlIHdpbGwgY29udGFpbi4gVGhlIGZpbGUncyBvcGVuKCkgbWV0aG9kIHRoZW4KK2NhbGxzOgorCisJaW50IHNpbmdsZV9vcGVuKHN0cnVjdCBmaWxlICpmaWxlLAorCSAgICAgICAgICAgICAgICBpbnQgKCpzaG93KShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnApLAorCSAgICAgICAgICAgICAgICB2b2lkICpkYXRhKTsKKworV2hlbiBvdXRwdXQgdGltZSBjb21lcywgdGhlIHNob3coKSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBvbmNlLiBUaGUgZGF0YQordmFsdWUgZ2l2ZW4gdG8gc2luZ2xlX29wZW4oKSBjYW4gYmUgZm91bmQgaW4gdGhlIHByaXZhdGUgZmllbGQgb2YgdGhlCitzZXFfZmlsZSBzdHJ1Y3R1cmUuIFdoZW4gdXNpbmcgc2luZ2xlX29wZW4oKSwgdGhlIHByb2dyYW1tZXIgc2hvdWxkIHVzZQorc2luZ2xlX3JlbGVhc2UoKSBpbnN0ZWFkIG9mIHNlcV9yZWxlYXNlKCkgaW4gdGhlIGZpbGVfb3BlcmF0aW9ucyBzdHJ1Y3R1cmUKK3RvIGF2b2lkIGEgbWVtb3J5IGxlYWsuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3NoYXJlZHN1YnRyZWUudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zaGFyZWRzdWJ0cmVlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmExNzNkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zaGFyZWRzdWJ0cmVlLnR4dApAQCAtMCwwICsxLDkzOSBAQAorU2hhcmVkIFN1YnRyZWVzCistLS0tLS0tLS0tLS0tLS0KKworQ29udGVudHM6CisJMSkgT3ZlcnZpZXcKKwkyKSBGZWF0dXJlcworCTMpIFNldHRpbmcgbW91bnQgc3RhdGVzCisJNCkgVXNlLWNhc2UKKwk1KSBEZXRhaWxlZCBzZW1hbnRpY3MKKwk2KSBRdWl6CisJNykgRkFRCisJOCkgSW1wbGVtZW50YXRpb24KKworCisxKSBPdmVydmlldworLS0tLS0tLS0tLS0KKworQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBzaXR1YXRpb246CisKK0EgcHJvY2VzcyB3YW50cyB0byBjbG9uZSBpdHMgb3duIG5hbWVzcGFjZSwgYnV0IHN0aWxsIHdhbnRzIHRvIGFjY2VzcyB0aGUgQ0QKK3RoYXQgZ290IG1vdW50ZWQgcmVjZW50bHkuICBTaGFyZWQgc3VidHJlZSBzZW1hbnRpY3MgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5CittZWNoYW5pc20gdG8gYWNjb21wbGlzaCB0aGUgYWJvdmUuCisKK0l0IHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkgYnVpbGRpbmcgYmxvY2tzIGZvciBmZWF0dXJlcyBsaWtlIHBlci11c2VyLW5hbWVzcGFjZQorYW5kIHZlcnNpb25lZCBmaWxlc3lzdGVtLgorCisyKSBGZWF0dXJlcworLS0tLS0tLS0tLS0KKworU2hhcmVkIHN1YnRyZWUgcHJvdmlkZXMgZm91ciBkaWZmZXJlbnQgZmxhdm9ycyBvZiBtb3VudHM7IHN0cnVjdCB2ZnNtb3VudCB0byBiZQorcHJlY2lzZQorCisJYS4gc2hhcmVkIG1vdW50CisJYi4gc2xhdmUgbW91bnQKKwljLiBwcml2YXRlIG1vdW50CisJZC4gdW5iaW5kYWJsZSBtb3VudAorCisKKzJhKSBBIHNoYXJlZCBtb3VudCBjYW4gYmUgcmVwbGljYXRlZCB0byBhcyBtYW55IG1vdW50cG9pbnRzIGFuZCBhbGwgdGhlCityZXBsaWNhcyBjb250aW51ZSB0byBiZSBleGFjdGx5IHNhbWUuCisKKwlIZXJlIGlzIGFuIGV4YW1wbGU6CisKKwlMZXQncyBzYXkgL21udCBoYXMgYSBtb3VudCB0aGF0IGlzIHNoYXJlZC4KKwltb3VudCAtLW1ha2Utc2hhcmVkIC9tbnQKKworCU5vdGU6IG1vdW50KDgpIGNvbW1hbmQgbm93IHN1cHBvcnRzIHRoZSAtLW1ha2Utc2hhcmVkIGZsYWcsCisJc28gdGhlIHNhbXBsZSAnc21vdW50JyBwcm9ncmFtIGlzIG5vIGxvbmdlciBuZWVkZWQgYW5kIGhhcyBiZWVuCisJcmVtb3ZlZC4KKworCSMgbW91bnQgLS1iaW5kIC9tbnQgL3RtcAorCVRoZSBhYm92ZSBjb21tYW5kIHJlcGxpY2F0ZXMgdGhlIG1vdW50IGF0IC9tbnQgdG8gdGhlIG1vdW50cG9pbnQgL3RtcAorCWFuZCB0aGUgY29udGVudHMgb2YgYm90aCB0aGUgbW91bnRzIHJlbWFpbiBpZGVudGljYWwuCisKKwkjbHMgL21udAorCWEgYiBjCisKKwkjbHMgL3RtcAorCWEgYiBjCisKKwlOb3cgbGV0J3Mgc2F5IHdlIG1vdW50IGEgZGV2aWNlIGF0IC90bXAvYQorCSMgbW91bnQgL2Rldi9zZDAgIC90bXAvYQorCisJI2xzIC90bXAvYQorCXQxIHQyIHQzCisKKwkjbHMgL21udC9hCisJdDEgdDIgdDMKKworCU5vdGUgdGhhdCB0aGUgbW91bnQgaGFzIHByb3BhZ2F0ZWQgdG8gdGhlIG1vdW50IGF0IC9tbnQgYXMgd2VsbC4KKworCUFuZCB0aGUgc2FtZSBpcyB0cnVlIGV2ZW4gd2hlbiAvZGV2L3NkMCBpcyBtb3VudGVkIG9uIC9tbnQvYS4gVGhlCisJY29udGVudHMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIC90bXAvYSB0b28uCisKKworMmIpIEEgc2xhdmUgbW91bnQgaXMgbGlrZSBhIHNoYXJlZCBtb3VudCBleGNlcHQgdGhhdCBtb3VudCBhbmQgdW1vdW50IGV2ZW50cworCW9ubHkgcHJvcGFnYXRlIHRvd2FyZHMgaXQuCisKKwlBbGwgc2xhdmUgbW91bnRzIGhhdmUgYSBtYXN0ZXIgbW91bnQgd2hpY2ggaXMgYSBzaGFyZWQuCisKKwlIZXJlIGlzIGFuIGV4YW1wbGU6CisKKwlMZXQncyBzYXkgL21udCBoYXMgYSBtb3VudCB3aGljaCBpcyBzaGFyZWQuCisJIyBtb3VudCAtLW1ha2Utc2hhcmVkIC9tbnQKKworCUxldCdzIGJpbmQgbW91bnQgL21udCB0byAvdG1wCisJIyBtb3VudCAtLWJpbmQgL21udCAvdG1wCisKKwl0aGUgbmV3IG1vdW50IGF0IC90bXAgYmVjb21lcyBhIHNoYXJlZCBtb3VudCBhbmQgaXQgaXMgYSByZXBsaWNhIG9mCisJdGhlIG1vdW50IGF0IC9tbnQuCisKKwlOb3cgbGV0J3MgbWFrZSB0aGUgbW91bnQgYXQgL3RtcDsgYSBzbGF2ZSBvZiAvbW50CisJIyBtb3VudCAtLW1ha2Utc2xhdmUgL3RtcAorCisJbGV0J3MgbW91bnQgL2Rldi9zZDAgb24gL21udC9hCisJIyBtb3VudCAvZGV2L3NkMCAvbW50L2EKKworCSNscyAvbW50L2EKKwl0MSB0MiB0MworCisJI2xzIC90bXAvYQorCXQxIHQyIHQzCisKKwlOb3RlIHRoZSBtb3VudCBldmVudCBoYXMgcHJvcGFnYXRlZCB0byB0aGUgbW91bnQgYXQgL3RtcAorCisJSG93ZXZlciBsZXQncyBzZWUgd2hhdCBoYXBwZW5zIGlmIHdlIG1vdW50IHNvbWV0aGluZyBvbiB0aGUgbW91bnQgYXQgL3RtcAorCisJIyBtb3VudCAvZGV2L3NkMSAvdG1wL2IKKworCSNscyAvdG1wL2IKKwlzMSBzMiBzMworCisJI2xzIC9tbnQvYgorCisJTm90ZSBob3cgdGhlIG1vdW50IGV2ZW50IGhhcyBub3QgcHJvcGFnYXRlZCB0byB0aGUgbW91bnQgYXQKKwkvbW50CisKKworMmMpIEEgcHJpdmF0ZSBtb3VudCBkb2VzIG5vdCBmb3J3YXJkIG9yIHJlY2VpdmUgcHJvcGFnYXRpb24uCisKKwlUaGlzIGlzIHRoZSBtb3VudCB3ZSBhcmUgZmFtaWxpYXIgd2l0aC4gSXRzIHRoZSBkZWZhdWx0IHR5cGUuCisKKworMmQpIEEgdW5iaW5kYWJsZSBtb3VudCBpcyBhIHVuYmluZGFibGUgcHJpdmF0ZSBtb3VudAorCisJbGV0J3Mgc2F5IHdlIGhhdmUgYSBtb3VudCBhdCAvbW50IGFuZCB3ZSBtYWtlIGlzIHVuYmluZGFibGUKKworCSMgbW91bnQgLS1tYWtlLXVuYmluZGFibGUgL21udAorCisJIExldCdzIHRyeSB0byBiaW5kIG1vdW50IHRoaXMgbW91bnQgc29tZXdoZXJlIGVsc2UuCisJICMgbW91bnQgLS1iaW5kIC9tbnQgL3RtcAorCSBtb3VudDogd3JvbmcgZnMgdHlwZSwgYmFkIG9wdGlvbiwgYmFkIHN1cGVyYmxvY2sgb24gL21udCwKKwkgICAgICAgIG9yIHRvbyBtYW55IG1vdW50ZWQgZmlsZSBzeXN0ZW1zCisKKwlCaW5kaW5nIGEgdW5iaW5kYWJsZSBtb3VudCBpcyBhIGludmFsaWQgb3BlcmF0aW9uLgorCisKKzMpIFNldHRpbmcgbW91bnQgc3RhdGVzCisKKwlUaGUgbW91bnQgY29tbWFuZCAodXRpbC1saW51eCBwYWNrYWdlKSBjYW4gYmUgdXNlZCB0byBzZXQgbW91bnQKKwlzdGF0ZXM6CisKKwltb3VudCAtLW1ha2Utc2hhcmVkIG1vdW50cG9pbnQKKwltb3VudCAtLW1ha2Utc2xhdmUgbW91bnRwb2ludAorCW1vdW50IC0tbWFrZS1wcml2YXRlIG1vdW50cG9pbnQKKwltb3VudCAtLW1ha2UtdW5iaW5kYWJsZSBtb3VudHBvaW50CisKKworNCkgVXNlIGNhc2VzCistLS0tLS0tLS0tLS0KKworCUEpIEEgcHJvY2VzcyB3YW50cyB0byBjbG9uZSBpdHMgb3duIG5hbWVzcGFjZSwgYnV0IHN0aWxsIHdhbnRzIHRvCisJICAgYWNjZXNzIHRoZSBDRCB0aGF0IGdvdCBtb3VudGVkIHJlY2VudGx5LgorCisJICAgU29sdXRpb246CisKKwkJVGhlIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGNhbiBtYWtlIHRoZSBtb3VudCBhdCAvY2Ryb20gc2hhcmVkCisJCW1vdW50IC0tYmluZCAvY2Ryb20gL2Nkcm9tCisJCW1vdW50IC0tbWFrZS1zaGFyZWQgL2Nkcm9tCisKKwkJTm93IGFueSBwcm9jZXNzIHRoYXQgY2xvbmVzIG9mZiBhIG5ldyBuYW1lc3BhY2Ugd2lsbCBoYXZlIGEKKwkJbW91bnQgYXQgL2Nkcm9tIHdoaWNoIGlzIGEgcmVwbGljYSBvZiB0aGUgc2FtZSBtb3VudCBpbiB0aGUKKwkJcGFyZW50IG5hbWVzcGFjZS4KKworCQlTbyB3aGVuIGEgQ0QgaXMgaW5zZXJ0ZWQgYW5kIG1vdW50ZWQgYXQgL2Nkcm9tIHRoYXQgbW91bnQgZ2V0cworCQlwcm9wYWdhdGVkIHRvIHRoZSBvdGhlciBtb3VudCBhdCAvY2Ryb20gaW4gYWxsIHRoZSBvdGhlciBjbG9uZQorCQluYW1lc3BhY2VzLgorCisJQikgQSBwcm9jZXNzIHdhbnRzIGl0cyBtb3VudHMgaW52aXNpYmxlIHRvIGFueSBvdGhlciBwcm9jZXNzLCBidXQKKwlzdGlsbCBiZSBhYmxlIHRvIHNlZSB0aGUgb3RoZXIgc3lzdGVtIG1vdW50cy4KKworCSAgIFNvbHV0aW9uOgorCisJCVRvIGJlZ2luIHdpdGgsIHRoZSBhZG1pbmlzdHJhdG9yIGNhbiBtYXJrIHRoZSBlbnRpcmUgbW91bnQgdHJlZQorCQlhcyBzaGFyZWFibGUuCisKKwkJbW91bnQgLS1tYWtlLXJzaGFyZWQgLworCisJCUEgbmV3IHByb2Nlc3MgY2FuIGNsb25lIG9mZiBhIG5ldyBuYW1lc3BhY2UuIEFuZCBtYXJrIHNvbWUgcGFydAorCQlvZiBpdHMgbmFtZXNwYWNlIGFzIHNsYXZlCisKKwkJbW91bnQgLS1tYWtlLXJzbGF2ZSAvbXlwcml2YXRldHJlZQorCisJCUhlbmNlIGZvcnRoIGFueSBtb3VudHMgd2l0aGluIHRoZSAvbXlwcml2YXRldHJlZSBkb25lIGJ5IHRoZQorCQlwcm9jZXNzIHdpbGwgbm90IHNob3cgdXAgaW4gYW55IG90aGVyIG5hbWVzcGFjZS4gSG93ZXZlciBtb3VudHMKKwkJZG9uZSBpbiB0aGUgcGFyZW50IG5hbWVzcGFjZSB1bmRlciAvbXlwcml2YXRldHJlZSBzdGlsbCBzaG93cworCQl1cCBpbiB0aGUgcHJvY2VzcydzIG5hbWVzcGFjZS4KKworCisJQXBhcnQgZnJvbSB0aGUgYWJvdmUgc2VtYW50aWNzIHRoaXMgZmVhdHVyZSBwcm92aWRlcyB0aGUKKwlidWlsZGluZyBibG9ja3MgdG8gc29sdmUgdGhlIGZvbGxvd2luZyBwcm9ibGVtczoKKworCUMpICBQZXItdXNlciBuYW1lc3BhY2UKKworCQlUaGUgYWJvdmUgc2VtYW50aWNzIGFsbG93cyBhIHdheSB0byBzaGFyZSBtb3VudHMgYWNyb3NzCisJCW5hbWVzcGFjZXMuICBCdXQgbmFtZXNwYWNlcyBhcmUgYXNzb2NpYXRlZCB3aXRoIHByb2Nlc3Nlcy4gSWYKKwkJbmFtZXNwYWNlcyBhcmUgbWFkZSBmaXJzdCBjbGFzcyBvYmplY3RzIHdpdGggdXNlciBBUEkgdG8KKwkJYXNzb2NpYXRlL2Rpc2Fzc29jaWF0ZSBhIG5hbWVzcGFjZSB3aXRoIHVzZXJpZCwgdGhlbiBlYWNoIHVzZXIKKwkJY291bGQgaGF2ZSBoaXMvaGVyIG93biBuYW1lc3BhY2UgYW5kIHRhaWxvciBpdCB0byBoaXMvaGVyCisJCXJlcXVpcmVtZW50cy4gT2ZmY291cnNlIGl0cyBuZWVkcyBzdXBwb3J0IGZyb20gUEFNLgorCisJRCkgIFZlcnNpb25lZCBmaWxlcworCisJCUlmIHRoZSBlbnRpcmUgbW91bnQgdHJlZSBpcyB2aXNpYmxlIGF0IG11bHRpcGxlIGxvY2F0aW9ucywgdGhlbgorCQlhIHVuZGVybHlpbmcgdmVyc2lvbmluZyBmaWxlIHN5c3RlbSBjYW4gcmV0dXJuIGRpZmZlcmVudAorCQl2ZXJzaW9uIG9mIHRoZSBmaWxlIGRlcGVuZGluZyBvbiB0aGUgcGF0aCB1c2VkIHRvIGFjY2VzcyB0aGF0CisJCWZpbGUuCisKKwkJQW4gZXhhbXBsZSBpczoKKworCQltb3VudCAtLW1ha2Utc2hhcmVkIC8KKwkJbW91bnQgLS1yYmluZCAvIC92aWV3L3YxCisJCW1vdW50IC0tcmJpbmQgLyAvdmlldy92MgorCQltb3VudCAtLXJiaW5kIC8gL3ZpZXcvdjMKKwkJbW91bnQgLS1yYmluZCAvIC92aWV3L3Y0CisKKwkJYW5kIGlmIC91c3IgaGFzIGEgdmVyc2lvbmluZyBmaWxlc3lzdGVtIG1vdW50ZWQsIHRoZW4gdGhhdAorCQltb3VudCBhcHBlYXJzIGF0IC92aWV3L3YxL3VzciwgL3ZpZXcvdjIvdXNyLCAvdmlldy92My91c3IgYW5kCisJCS92aWV3L3Y0L3VzciB0b28KKworCQlBIHVzZXIgY2FuIHJlcXVlc3QgdjMgdmVyc2lvbiBvZiB0aGUgZmlsZSAvdXNyL2ZzL25hbWVzcGFjZS5jCisJCWJ5IGFjY2Vzc2luZyAvdmlldy92My91c3IvZnMvbmFtZXNwYWNlLmMgLiBUaGUgdW5kZXJseWluZworCQl2ZXJzaW9uaW5nIGZpbGVzeXN0ZW0gY2FuIHRoZW4gZGVjaXBoZXIgdGhhdCB2MyB2ZXJzaW9uIG9mIHRoZQorCQlmaWxlc3lzdGVtIGlzIGJlaW5nIHJlcXVlc3RlZCBhbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nCisJCWlub2RlLgorCis1KSBEZXRhaWxlZCBzZW1hbnRpY3M6CistLS0tLS0tLS0tLS0tLS0tLS0tCisJVGhlIHNlY3Rpb24gYmVsb3cgZXhwbGFpbnMgdGhlIGRldGFpbGVkIHNlbWFudGljcyBvZgorCWJpbmQsIHJiaW5kLCBtb3ZlLCBtb3VudCwgdW1vdW50IGFuZCBjbG9uZS1uYW1lc3BhY2Ugb3BlcmF0aW9ucy4KKworCU5vdGU6IHRoZSB3b3JkICd2ZnNtb3VudCcgYW5kIHRoZSBub3VuICdtb3VudCcgaGF2ZSBiZWVuIHVzZWQKKwl0byBtZWFuIHRoZSBzYW1lIHRoaW5nLCB0aHJvdWdob3V0IHRoaXMgZG9jdW1lbnQuCisKKzVhKSBNb3VudCBzdGF0ZXMKKworCUEgZ2l2ZW4gbW91bnQgY2FuIGJlIGluIG9uZSBvZiB0aGUgZm9sbG93aW5nIHN0YXRlcworCTEpIHNoYXJlZAorCTIpIHNsYXZlCisJMykgc2hhcmVkIGFuZCBzbGF2ZQorCTQpIHByaXZhdGUKKwk1KSB1bmJpbmRhYmxlCisKKwlBICdwcm9wYWdhdGlvbiBldmVudCcgaXMgZGVmaW5lZCBhcyBldmVudCBnZW5lcmF0ZWQgb24gYSB2ZnNtb3VudAorCXRoYXQgbGVhZHMgdG8gbW91bnQgb3IgdW5tb3VudCBhY3Rpb25zIGluIG90aGVyIHZmc21vdW50cy4KKworCUEgJ3BlZXIgZ3JvdXAnIGlzIGRlZmluZWQgYXMgYSBncm91cCBvZiB2ZnNtb3VudHMgdGhhdCBwcm9wYWdhdGUKKwlldmVudHMgdG8gZWFjaCBvdGhlci4KKworCSgxKSBTaGFyZWQgbW91bnRzCisKKwkJQSAnc2hhcmVkIG1vdW50JyBpcyBkZWZpbmVkIGFzIGEgdmZzbW91bnQgdGhhdCBiZWxvbmdzIHRvIGEKKwkJJ3BlZXIgZ3JvdXAnLgorCisJCUZvciBleGFtcGxlOgorCQkJbW91bnQgLS1tYWtlLXNoYXJlZCAvbW50CisJCQltb3VudCAtLWJpbmQgL21udCAvdG1wCisKKwkJVGhlIG1vdW50IGF0IC9tbnQgYW5kIHRoYXQgYXQgL3RtcCBhcmUgYm90aCBzaGFyZWQgYW5kIGJlbG9uZworCQl0byB0aGUgc2FtZSBwZWVyIGdyb3VwLiBBbnl0aGluZyBtb3VudGVkIG9yIHVubW91bnRlZCB1bmRlcgorCQkvbW50IG9yIC90bXAgcmVmbGVjdCBpbiBhbGwgdGhlIG90aGVyIG1vdW50cyBvZiBpdHMgcGVlcgorCQlncm91cC4KKworCisJKDIpIFNsYXZlIG1vdW50cworCisJCUEgJ3NsYXZlIG1vdW50JyBpcyBkZWZpbmVkIGFzIGEgdmZzbW91bnQgdGhhdCByZWNlaXZlcworCQlwcm9wYWdhdGlvbiBldmVudHMgYW5kIGRvZXMgbm90IGZvcndhcmQgcHJvcGFnYXRpb24gZXZlbnRzLgorCisJCUEgc2xhdmUgbW91bnQgYXMgdGhlIG5hbWUgaW1wbGllcyBoYXMgYSBtYXN0ZXIgbW91bnQgZnJvbSB3aGljaAorCQltb3VudC91bm1vdW50IGV2ZW50cyBhcmUgcmVjZWl2ZWQuIEV2ZW50cyBkbyBub3QgcHJvcGFnYXRlIGZyb20KKwkJdGhlIHNsYXZlIG1vdW50IHRvIHRoZSBtYXN0ZXIuICBPbmx5IGEgc2hhcmVkIG1vdW50IGNhbiBiZSBtYWRlCisJCWEgc2xhdmUgYnkgZXhlY3V0aW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZAorCisJCQltb3VudCAtLW1ha2Utc2xhdmUgbW91bnQKKworCQlBIHNoYXJlZCBtb3VudCB0aGF0IGlzIG1hZGUgYXMgYSBzbGF2ZSBpcyBubyBtb3JlIHNoYXJlZCB1bmxlc3MKKwkJbW9kaWZpZWQgdG8gYmVjb21lIHNoYXJlZC4KKworCSgzKSBTaGFyZWQgYW5kIFNsYXZlCisKKwkJQSB2ZnNtb3VudCBjYW4gYmUgYm90aCBzaGFyZWQgYXMgd2VsbCBhcyBzbGF2ZS4gIFRoaXMgc3RhdGUKKwkJaW5kaWNhdGVzIHRoYXQgdGhlIG1vdW50IGlzIGEgc2xhdmUgb2Ygc29tZSB2ZnNtb3VudCwgYW5kCisJCWhhcyBpdHMgb3duIHBlZXIgZ3JvdXAgdG9vLiAgVGhpcyB2ZnNtb3VudCByZWNlaXZlcyBwcm9wYWdhdGlvbgorCQlldmVudHMgZnJvbSBpdHMgbWFzdGVyIHZmc21vdW50LCBhbmQgYWxzbyBmb3J3YXJkcyBwcm9wYWdhdGlvbgorCQlldmVudHMgdG8gaXRzICdwZWVyIGdyb3VwJyBhbmQgdG8gaXRzIHNsYXZlIHZmc21vdW50cy4KKworCQlTdHJpY3RseSBzcGVha2luZywgdGhlIHZmc21vdW50IGlzIHNoYXJlZCBoYXZpbmcgaXRzIG93bgorCQlwZWVyIGdyb3VwLCBhbmQgdGhpcyBwZWVyLWdyb3VwIGlzIGEgc2xhdmUgb2Ygc29tZSBvdGhlcgorCQlwZWVyIGdyb3VwLgorCisJCU9ubHkgYSBzbGF2ZSB2ZnNtb3VudCBjYW4gYmUgbWFkZSBhcyAnc2hhcmVkIGFuZCBzbGF2ZScgYnkKKwkJZWl0aGVyIGV4ZWN1dGluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQKKwkJCW1vdW50IC0tbWFrZS1zaGFyZWQgbW91bnQKKwkJb3IgYnkgbW92aW5nIHRoZSBzbGF2ZSB2ZnNtb3VudCB1bmRlciBhIHNoYXJlZCB2ZnNtb3VudC4KKworCSg0KSBQcml2YXRlIG1vdW50CisKKwkJQSAncHJpdmF0ZSBtb3VudCcgaXMgZGVmaW5lZCBhcyB2ZnNtb3VudCB0aGF0IGRvZXMgbm90CisJCXJlY2VpdmUgb3IgZm9yd2FyZCBhbnkgcHJvcGFnYXRpb24gZXZlbnRzLgorCisJKDUpIFVuYmluZGFibGUgbW91bnQKKworCQlBICd1bmJpbmRhYmxlIG1vdW50JyBpcyBkZWZpbmVkIGFzIHZmc21vdW50IHRoYXQgZG9lcyBub3QKKwkJcmVjZWl2ZSBvciBmb3J3YXJkIGFueSBwcm9wYWdhdGlvbiBldmVudHMgYW5kIGNhbm5vdAorCQliZSBiaW5kIG1vdW50ZWQuCisKKworICAgCVN0YXRlIGRpYWdyYW06CisgICAJVGhlIHN0YXRlIGRpYWdyYW0gYmVsb3cgZXhwbGFpbnMgdGhlIHN0YXRlIHRyYW5zaXRpb24gb2YgYSBtb3VudCwKKwlpbiByZXNwb25zZSB0byB2YXJpb3VzIGNvbW1hbmRzLgorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCXwgICAgICAgICAgICAgfG1ha2Utc2hhcmVkIHwgIG1ha2Utc2xhdmUgIHwgbWFrZS1wcml2YXRlIHxtYWtlLXVuYmluZGFifAorCS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfAorCXxzaGFyZWQJICAgICAgfHNoYXJlZAkgICB8KnNsYXZlL3ByaXZhdGV8ICAgcHJpdmF0ZQkgfCB1bmJpbmRhYmxlICB8CisJfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8CisJfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18CisJfHNsYXZlCSAgICAgIHxzaGFyZWQgICAgICB8CSoqc2xhdmUJICB8ICAgIHByaXZhdGUgICB8IHVuYmluZGFibGUgIHwKKwl8ICAgICAgICAgICAgIHxhbmQgc2xhdmUgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwKKwl8LS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLXwKKwl8c2hhcmVkCSAgICAgIHxzaGFyZWQgICAgICB8ICAgIHNsYXZlCSAgfCAgICBwcml2YXRlICAgfCB1bmJpbmRhYmxlICB8CisJfGFuZCBzbGF2ZSAgICB8YW5kIHNsYXZlICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8CisJfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18CisJfHByaXZhdGUgICAgICB8c2hhcmVkCSAgIHwgICoqcHJpdmF0ZQkgIHwgICAgcHJpdmF0ZSAgIHwgdW5iaW5kYWJsZSAgfAorCXwtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfAorCXx1bmJpbmRhYmxlICAgfHNoYXJlZAkgICB8Kip1bmJpbmRhYmxlICB8ICAgIHByaXZhdGUgICB8IHVuYmluZGFibGUgIHwKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCSogaWYgdGhlIHNoYXJlZCBtb3VudCBpcyB0aGUgb25seSBtb3VudCBpbiBpdHMgcGVlciBncm91cCwgbWFraW5nIGl0CisJc2xhdmUsIG1ha2VzIGl0IHByaXZhdGUgYXV0b21hdGljYWxseS4gTm90ZSB0aGF0IHRoZXJlIGlzIG5vIG1hc3RlciB0bworCXdoaWNoIGl0IGNhbiBiZSBzbGF2ZWQgdG8uCisKKwkqKiBzbGF2aW5nIGEgbm9uLXNoYXJlZCBtb3VudCBoYXMgbm8gZWZmZWN0IG9uIHRoZSBtb3VudC4KKworCUFwYXJ0IGZyb20gdGhlIGNvbW1hbmRzIGxpc3RlZCBiZWxvdywgdGhlICdtb3ZlJyBvcGVyYXRpb24gYWxzbyBjaGFuZ2VzCisJdGhlIHN0YXRlIG9mIGEgbW91bnQgZGVwZW5kaW5nIG9uIHR5cGUgb2YgdGhlIGRlc3RpbmF0aW9uIG1vdW50LiBJdHMKKwlleHBsYWluZWQgaW4gc2VjdGlvbiA1ZC4KKworNWIpIEJpbmQgc2VtYW50aWNzCisKKwlDb25zaWRlciB0aGUgZm9sbG93aW5nIGNvbW1hbmQKKworCW1vdW50IC0tYmluZCBBL2EgIEIvYgorCisJd2hlcmUgJ0EnIGlzIHRoZSBzb3VyY2UgbW91bnQsICdhJyBpcyB0aGUgZGVudHJ5IGluIHRoZSBtb3VudCAnQScsICdCJworCWlzIHRoZSBkZXN0aW5hdGlvbiBtb3VudCBhbmQgJ2InIGlzIHRoZSBkZW50cnkgaW4gdGhlIGRlc3RpbmF0aW9uIG1vdW50LgorCisJVGhlIG91dGNvbWUgZGVwZW5kcyBvbiB0aGUgdHlwZSBvZiBtb3VudCBvZiAnQScgYW5kICdCJy4gVGhlIHRhYmxlCisJYmVsb3cgY29udGFpbnMgcXVpY2sgcmVmZXJlbmNlLgorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICB8ICAgICAgICAgQklORCBNT1VOVCBPUEVSQVRJT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgfHNvdXJjZShBKS0+fCBzaGFyZWQgICAgICAgfCAgICAgICBwcml2YXRlICB8ICAgICAgIHNsYXZlICAgIHwgdW5iaW5kYWJsZSB8CisgICB8IGRlc3QoQikgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKKyAgIHwgICB8ICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAorICAgfCAgIHYgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8CisgICB8KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgIHwgIHNoYXJlZCAgfCBzaGFyZWQgICAgICAgIHwgICAgIHNoYXJlZCAgICAgfCBzaGFyZWQgJiBzbGF2ZSB8ICBpbnZhbGlkICAgfAorICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8CisgICB8bm9uLXNoYXJlZHwgc2hhcmVkICAgICAgICB8ICAgICAgcHJpdmF0ZSAgIHwgICAgICBzbGF2ZSAgICAgfCAgaW52YWxpZCAgIHwKKyAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisgICAgIAlEZXRhaWxzOgorCisJMS4gJ0EnIGlzIGEgc2hhcmVkIG1vdW50IGFuZCAnQicgaXMgYSBzaGFyZWQgbW91bnQuIEEgbmV3IG1vdW50ICdDJworCXdoaWNoIGlzIGNsb25lIG9mICdBJywgaXMgY3JlYXRlZC4gSXRzIHJvb3QgZGVudHJ5IGlzICdhJyAuICdDJyBpcworCW1vdW50ZWQgb24gbW91bnQgJ0InIGF0IGRlbnRyeSAnYicuIEFsc28gbmV3IG1vdW50ICdDMScsICdDMicsICdDMycgLi4uCisJYXJlIGNyZWF0ZWQgYW5kIG1vdW50ZWQgYXQgdGhlIGRlbnRyeSAnYicgb24gYWxsIG1vdW50cyB3aGVyZSAnQicKKwlwcm9wYWdhdGVzIHRvLiBBIG5ldyBwcm9wYWdhdGlvbiB0cmVlIGNvbnRhaW5pbmcgJ0MxJywuLiwnQ24nIGlzCisJY3JlYXRlZC4gVGhpcyBwcm9wYWdhdGlvbiB0cmVlIGlzIGlkZW50aWNhbCB0byB0aGUgcHJvcGFnYXRpb24gdHJlZSBvZgorCSdCJy4gIEFuZCBmaW5hbGx5IHRoZSBwZWVyLWdyb3VwIG9mICdDJyBpcyBtZXJnZWQgd2l0aCB0aGUgcGVlciBncm91cAorCW9mICdBJy4KKworCTIuICdBJyBpcyBhIHByaXZhdGUgbW91bnQgYW5kICdCJyBpcyBhIHNoYXJlZCBtb3VudC4gQSBuZXcgbW91bnQgJ0MnCisJd2hpY2ggaXMgY2xvbmUgb2YgJ0EnLCBpcyBjcmVhdGVkLiBJdHMgcm9vdCBkZW50cnkgaXMgJ2EnLiAnQycgaXMKKwltb3VudGVkIG9uIG1vdW50ICdCJyBhdCBkZW50cnkgJ2InLiBBbHNvIG5ldyBtb3VudCAnQzEnLCAnQzInLCAnQzMnIC4uLgorCWFyZSBjcmVhdGVkIGFuZCBtb3VudGVkIGF0IHRoZSBkZW50cnkgJ2InIG9uIGFsbCBtb3VudHMgd2hlcmUgJ0InCisJcHJvcGFnYXRlcyB0by4gQSBuZXcgcHJvcGFnYXRpb24gdHJlZSBpcyBzZXQgY29udGFpbmluZyBhbGwgbmV3IG1vdW50cworCSdDJywgJ0MxJywgLi4sICdDbicgd2l0aCBleGFjdGx5IHRoZSBzYW1lIGNvbmZpZ3VyYXRpb24gYXMgdGhlCisJcHJvcGFnYXRpb24gdHJlZSBmb3IgJ0InLgorCisJMy4gJ0EnIGlzIGEgc2xhdmUgbW91bnQgb2YgbW91bnQgJ1onIGFuZCAnQicgaXMgYSBzaGFyZWQgbW91bnQuIEEgbmV3CisJbW91bnQgJ0MnIHdoaWNoIGlzIGNsb25lIG9mICdBJywgaXMgY3JlYXRlZC4gSXRzIHJvb3QgZGVudHJ5IGlzICdhJyAuCisJJ0MnIGlzIG1vdW50ZWQgb24gbW91bnQgJ0InIGF0IGRlbnRyeSAnYicuIEFsc28gbmV3IG1vdW50cyAnQzEnLCAnQzInLAorCSdDMycgLi4uIGFyZSBjcmVhdGVkIGFuZCBtb3VudGVkIGF0IHRoZSBkZW50cnkgJ2InIG9uIGFsbCBtb3VudHMgd2hlcmUKKwknQicgcHJvcGFnYXRlcyB0by4gQSBuZXcgcHJvcGFnYXRpb24gdHJlZSBjb250YWluaW5nIHRoZSBuZXcgbW91bnRzCisJJ0MnLCdDMScsLi4gICdDbicgaXMgY3JlYXRlZC4gVGhpcyBwcm9wYWdhdGlvbiB0cmVlIGlzIGlkZW50aWNhbCB0byB0aGUKKwlwcm9wYWdhdGlvbiB0cmVlIGZvciAnQicuIEFuZCBmaW5hbGx5IHRoZSBtb3VudCAnQycgYW5kIGl0cyBwZWVyIGdyb3VwCisJaXMgbWFkZSB0aGUgc2xhdmUgb2YgbW91bnQgJ1onLiAgSW4gb3RoZXIgd29yZHMsIG1vdW50ICdDJyBpcyBpbiB0aGUKKwlzdGF0ZSAnc2xhdmUgYW5kIHNoYXJlZCcuCisKKwk0LiAnQScgaXMgYSB1bmJpbmRhYmxlIG1vdW50IGFuZCAnQicgaXMgYSBzaGFyZWQgbW91bnQuIFRoaXMgaXMgYQorCWludmFsaWQgb3BlcmF0aW9uLgorCisJNS4gJ0EnIGlzIGEgcHJpdmF0ZSBtb3VudCBhbmQgJ0InIGlzIGEgbm9uLXNoYXJlZChwcml2YXRlIG9yIHNsYXZlIG9yCisJdW5iaW5kYWJsZSkgbW91bnQuIEEgbmV3IG1vdW50ICdDJyB3aGljaCBpcyBjbG9uZSBvZiAnQScsIGlzIGNyZWF0ZWQuCisJSXRzIHJvb3QgZGVudHJ5IGlzICdhJy4gJ0MnIGlzIG1vdW50ZWQgb24gbW91bnQgJ0InIGF0IGRlbnRyeSAnYicuCisKKwk2LiAnQScgaXMgYSBzaGFyZWQgbW91bnQgYW5kICdCJyBpcyBhIG5vbi1zaGFyZWQgbW91bnQuIEEgbmV3IG1vdW50ICdDJworCXdoaWNoIGlzIGEgY2xvbmUgb2YgJ0EnIGlzIGNyZWF0ZWQuIEl0cyByb290IGRlbnRyeSBpcyAnYScuICdDJyBpcworCW1vdW50ZWQgb24gbW91bnQgJ0InIGF0IGRlbnRyeSAnYicuICAnQycgaXMgbWFkZSBhIG1lbWJlciBvZiB0aGUKKwlwZWVyLWdyb3VwIG9mICdBJy4KKworCTcuICdBJyBpcyBhIHNsYXZlIG1vdW50IG9mIG1vdW50ICdaJyBhbmQgJ0InIGlzIGEgbm9uLXNoYXJlZCBtb3VudC4gQQorCW5ldyBtb3VudCAnQycgd2hpY2ggaXMgYSBjbG9uZSBvZiAnQScgaXMgY3JlYXRlZC4gSXRzIHJvb3QgZGVudHJ5IGlzCisJJ2EnLiAgJ0MnIGlzIG1vdW50ZWQgb24gbW91bnQgJ0InIGF0IGRlbnRyeSAnYicuIEFsc28gJ0MnIGlzIHNldCBhcyBhCisJc2xhdmUgbW91bnQgb2YgJ1onLiBJbiBvdGhlciB3b3JkcyAnQScgYW5kICdDJyBhcmUgYm90aCBzbGF2ZSBtb3VudHMgb2YKKwknWicuICBBbGwgbW91bnQvdW5tb3VudCBldmVudHMgb24gJ1onIHByb3BhZ2F0ZXMgdG8gJ0EnIGFuZCAnQycuIEJ1dAorCW1vdW50L3VubW91bnQgb24gJ0EnIGRvIG5vdCBwcm9wYWdhdGUgYW55d2hlcmUgZWxzZS4gU2ltaWxhcmx5CisJbW91bnQvdW5tb3VudCBvbiAnQycgZG8gbm90IHByb3BhZ2F0ZSBhbnl3aGVyZSBlbHNlLgorCisJOC4gJ0EnIGlzIGEgdW5iaW5kYWJsZSBtb3VudCBhbmQgJ0InIGlzIGEgbm9uLXNoYXJlZCBtb3VudC4gVGhpcyBpcyBhCisJaW52YWxpZCBvcGVyYXRpb24uIEEgdW5iaW5kYWJsZSBtb3VudCBjYW5ub3QgYmUgYmluZCBtb3VudGVkLgorCis1YykgUmJpbmQgc2VtYW50aWNzCisKKwlyYmluZCBpcyBzYW1lIGFzIGJpbmQuIEJpbmQgcmVwbGljYXRlcyB0aGUgc3BlY2lmaWVkIG1vdW50LiAgUmJpbmQKKwlyZXBsaWNhdGVzIGFsbCB0aGUgbW91bnRzIGluIHRoZSB0cmVlIGJlbG9uZ2luZyB0byB0aGUgc3BlY2lmaWVkIG1vdW50LgorCVJiaW5kIG1vdW50IGlzIGJpbmQgbW91bnQgYXBwbGllZCB0byBhbGwgdGhlIG1vdW50cyBpbiB0aGUgdHJlZS4KKworCUlmIHRoZSBzb3VyY2UgdHJlZSB0aGF0IGlzIHJiaW5kIGhhcyBzb21lIHVuYmluZGFibGUgbW91bnRzLAorCXRoZW4gdGhlIHN1YnRyZWUgdW5kZXIgdGhlIHVuYmluZGFibGUgbW91bnQgaXMgcHJ1bmVkIGluIHRoZSBuZXcKKwlsb2NhdGlvbi4KKworCWVnOiBsZXQncyBzYXkgd2UgaGF2ZSB0aGUgZm9sbG93aW5nIG1vdW50IHRyZWUuCisKKwkJQQorCSAgICAgIC8gICBcCisJICAgICAgQiAgIEMKKwkgICAgIC8gXCAvIFwKKwkgICAgIEQgRSBGIEcKKworCSAgICAgTGV0J3Mgc2F5IGFsbCB0aGUgbW91bnQgZXhjZXB0IHRoZSBtb3VudCBDIGluIHRoZSB0cmVlIGFyZQorCSAgICAgb2YgYSB0eXBlIG90aGVyIHRoYW4gdW5iaW5kYWJsZS4KKworCSAgICAgSWYgdGhpcyB0cmVlIGlzIHJib3VuZCB0byBzYXkgWgorCisJICAgICBXZSB3aWxsIGhhdmUgdGhlIGZvbGxvd2luZyB0cmVlIGF0IHRoZSBuZXcgbG9jYXRpb24uCisKKwkJWgorCQl8CisJCUEnCisJICAgICAgIC8KKwkgICAgICBCJwkJTm90ZSBob3cgdGhlIHRyZWUgdW5kZXIgQyBpcyBwcnVuZWQKKwkgICAgIC8gXCAJCWluIHRoZSBuZXcgbG9jYXRpb24uCisJICAgIEQnIEUnCisKKworCis1ZCkgTW92ZSBzZW1hbnRpY3MKKworCUNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgY29tbWFuZAorCisJbW91bnQgLS1tb3ZlIEEgIEIvYgorCisJd2hlcmUgJ0EnIGlzIHRoZSBzb3VyY2UgbW91bnQsICdCJyBpcyB0aGUgZGVzdGluYXRpb24gbW91bnQgYW5kICdiJyBpcworCXRoZSBkZW50cnkgaW4gdGhlIGRlc3RpbmF0aW9uIG1vdW50LgorCisJVGhlIG91dGNvbWUgZGVwZW5kcyBvbiB0aGUgdHlwZSBvZiB0aGUgbW91bnQgb2YgJ0EnIGFuZCAnQicuIFRoZSB0YWJsZQorCWJlbG93IGlzIGEgcXVpY2sgcmVmZXJlbmNlLgorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICB8ICAgICAgICAgCQlNT1ZFIE1PVU5UIE9QRVJBVElPTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgfCBzb3VyY2UoQSktPnwgc2hhcmVkICAgICAgfCAgICAgICBwcml2YXRlICB8ICAgICAgIHNsYXZlICAgIHwgdW5iaW5kYWJsZSB8CisgICB8IGRlc3QoQikgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKKyAgIHwgICB8ICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAorICAgfCAgIHYgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8CisgICB8KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgIHwgIHNoYXJlZCAgfCBzaGFyZWQgICAgICAgIHwgICAgIHNoYXJlZCAgICAgfHNoYXJlZCBhbmQgc2xhdmV8ICBpbnZhbGlkICAgfAorICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8CisgICB8bm9uLXNoYXJlZHwgc2hhcmVkICAgICAgICB8ICAgICAgcHJpdmF0ZSAgIHwgICAgc2xhdmUgICAgICAgfCB1bmJpbmRhYmxlIHwKKyAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCU5PVEU6IG1vdmluZyBhIG1vdW50IHJlc2lkaW5nIHVuZGVyIGEgc2hhcmVkIG1vdW50IGlzIGludmFsaWQuCisKKyAgICAgIERldGFpbHMgZm9sbG93OgorCisJMS4gJ0EnIGlzIGEgc2hhcmVkIG1vdW50IGFuZCAnQicgaXMgYSBzaGFyZWQgbW91bnQuICBUaGUgbW91bnQgJ0EnIGlzCisJbW91bnRlZCBvbiBtb3VudCAnQicgYXQgZGVudHJ5ICdiJy4gIEFsc28gbmV3IG1vdW50cyAnQTEnLCAnQTInLi4uJ0FuJworCWFyZSBjcmVhdGVkIGFuZCBtb3VudGVkIGF0IGRlbnRyeSAnYicgb24gYWxsIG1vdW50cyB0aGF0IHJlY2VpdmUKKwlwcm9wYWdhdGlvbiBmcm9tIG1vdW50ICdCJy4gQSBuZXcgcHJvcGFnYXRpb24gdHJlZSBpcyBjcmVhdGVkIGluIHRoZQorCWV4YWN0IHNhbWUgY29uZmlndXJhdGlvbiBhcyB0aGF0IG9mICdCJy4gVGhpcyBuZXcgcHJvcGFnYXRpb24gdHJlZQorCWNvbnRhaW5zIGFsbCB0aGUgbmV3IG1vdW50cyAnQTEnLCAnQTInLi4uICAnQW4nLiAgQW5kIHRoaXMgbmV3CisJcHJvcGFnYXRpb24gdHJlZSBpcyBhcHBlbmRlZCB0byB0aGUgYWxyZWFkeSBleGlzdGluZyBwcm9wYWdhdGlvbiB0cmVlCisJb2YgJ0EnLgorCisJMi4gJ0EnIGlzIGEgcHJpdmF0ZSBtb3VudCBhbmQgJ0InIGlzIGEgc2hhcmVkIG1vdW50LiBUaGUgbW91bnQgJ0EnIGlzCisJbW91bnRlZCBvbiBtb3VudCAnQicgYXQgZGVudHJ5ICdiJy4gQWxzbyBuZXcgbW91bnQgJ0ExJywgJ0EyJy4uLiAnQW4nCisJYXJlIGNyZWF0ZWQgYW5kIG1vdW50ZWQgYXQgZGVudHJ5ICdiJyBvbiBhbGwgbW91bnRzIHRoYXQgcmVjZWl2ZQorCXByb3BhZ2F0aW9uIGZyb20gbW91bnQgJ0InLiBUaGUgbW91bnQgJ0EnIGJlY29tZXMgYSBzaGFyZWQgbW91bnQgYW5kIGEKKwlwcm9wYWdhdGlvbiB0cmVlIGlzIGNyZWF0ZWQgd2hpY2ggaXMgaWRlbnRpY2FsIHRvIHRoYXQgb2YKKwknQicuIFRoaXMgbmV3IHByb3BhZ2F0aW9uIHRyZWUgY29udGFpbnMgYWxsIHRoZSBuZXcgbW91bnRzICdBMScsCisJJ0EyJy4uLiAgJ0FuJy4KKworCTMuICdBJyBpcyBhIHNsYXZlIG1vdW50IG9mIG1vdW50ICdaJyBhbmQgJ0InIGlzIGEgc2hhcmVkIG1vdW50LiAgVGhlCisJbW91bnQgJ0EnIGlzIG1vdW50ZWQgb24gbW91bnQgJ0InIGF0IGRlbnRyeSAnYicuICBBbHNvIG5ldyBtb3VudHMgJ0ExJywKKwknQTInLi4uICdBbicgYXJlIGNyZWF0ZWQgYW5kIG1vdW50ZWQgYXQgZGVudHJ5ICdiJyBvbiBhbGwgbW91bnRzIHRoYXQKKwlyZWNlaXZlIHByb3BhZ2F0aW9uIGZyb20gbW91bnQgJ0InLiBBIG5ldyBwcm9wYWdhdGlvbiB0cmVlIGlzIGNyZWF0ZWQKKwlpbiB0aGUgZXhhY3Qgc2FtZSBjb25maWd1cmF0aW9uIGFzIHRoYXQgb2YgJ0InLiBUaGlzIG5ldyBwcm9wYWdhdGlvbgorCXRyZWUgY29udGFpbnMgYWxsIHRoZSBuZXcgbW91bnRzICdBMScsICdBMicuLi4gICdBbicuICBBbmQgdGhpcyBuZXcKKwlwcm9wYWdhdGlvbiB0cmVlIGlzIGFwcGVuZGVkIHRvIHRoZSBhbHJlYWR5IGV4aXN0aW5nIHByb3BhZ2F0aW9uIHRyZWUgb2YKKwknQScuICBNb3VudCAnQScgY29udGludWVzIHRvIGJlIHRoZSBzbGF2ZSBtb3VudCBvZiAnWicgYnV0IGl0IGFsc28KKwliZWNvbWVzICdzaGFyZWQnLgorCisJNC4gJ0EnIGlzIGEgdW5iaW5kYWJsZSBtb3VudCBhbmQgJ0InIGlzIGEgc2hhcmVkIG1vdW50LiBUaGUgb3BlcmF0aW9uCisJaXMgaW52YWxpZC4gQmVjYXVzZSBtb3VudGluZyBhbnl0aGluZyBvbiB0aGUgc2hhcmVkIG1vdW50ICdCJyBjYW4KKwljcmVhdGUgbmV3IG1vdW50cyB0aGF0IGdldCBtb3VudGVkIG9uIHRoZSBtb3VudHMgdGhhdCByZWNlaXZlCisJcHJvcGFnYXRpb24gZnJvbSAnQicuICBBbmQgc2luY2UgdGhlIG1vdW50ICdBJyBpcyB1bmJpbmRhYmxlLCBjbG9uaW5nCisJaXQgdG8gbW91bnQgYXQgb3RoZXIgbW91bnRwb2ludHMgaXMgbm90IHBvc3NpYmxlLgorCisJNS4gJ0EnIGlzIGEgcHJpdmF0ZSBtb3VudCBhbmQgJ0InIGlzIGEgbm9uLXNoYXJlZChwcml2YXRlIG9yIHNsYXZlIG9yCisJdW5iaW5kYWJsZSkgbW91bnQuIFRoZSBtb3VudCAnQScgaXMgbW91bnRlZCBvbiBtb3VudCAnQicgYXQgZGVudHJ5ICdiJy4KKworCTYuICdBJyBpcyBhIHNoYXJlZCBtb3VudCBhbmQgJ0InIGlzIGEgbm9uLXNoYXJlZCBtb3VudC4gIFRoZSBtb3VudCAnQScKKwlpcyBtb3VudGVkIG9uIG1vdW50ICdCJyBhdCBkZW50cnkgJ2InLiAgTW91bnQgJ0EnIGNvbnRpbnVlcyB0byBiZSBhCisJc2hhcmVkIG1vdW50LgorCisJNy4gJ0EnIGlzIGEgc2xhdmUgbW91bnQgb2YgbW91bnQgJ1onIGFuZCAnQicgaXMgYSBub24tc2hhcmVkIG1vdW50LgorCVRoZSBtb3VudCAnQScgaXMgbW91bnRlZCBvbiBtb3VudCAnQicgYXQgZGVudHJ5ICdiJy4gIE1vdW50ICdBJworCWNvbnRpbnVlcyB0byBiZSBhIHNsYXZlIG1vdW50IG9mIG1vdW50ICdaJy4KKworCTguICdBJyBpcyBhIHVuYmluZGFibGUgbW91bnQgYW5kICdCJyBpcyBhIG5vbi1zaGFyZWQgbW91bnQuIFRoZSBtb3VudAorCSdBJyBpcyBtb3VudGVkIG9uIG1vdW50ICdCJyBhdCBkZW50cnkgJ2InLiBNb3VudCAnQScgY29udGludWVzIHRvIGJlIGEKKwl1bmJpbmRhYmxlIG1vdW50LgorCis1ZSkgTW91bnQgc2VtYW50aWNzCisKKwlDb25zaWRlciB0aGUgZm9sbG93aW5nIGNvbW1hbmQKKworCW1vdW50IGRldmljZSAgQi9iCisKKwknQicgaXMgdGhlIGRlc3RpbmF0aW9uIG1vdW50IGFuZCAnYicgaXMgdGhlIGRlbnRyeSBpbiB0aGUgZGVzdGluYXRpb24KKwltb3VudC4KKworCVRoZSBhYm92ZSBvcGVyYXRpb24gaXMgdGhlIHNhbWUgYXMgYmluZCBvcGVyYXRpb24gd2l0aCB0aGUgZXhjZXB0aW9uCisJdGhhdCB0aGUgc291cmNlIG1vdW50IGlzIGFsd2F5cyBhIHByaXZhdGUgbW91bnQuCisKKworNWYpIFVubW91bnQgc2VtYW50aWNzCisKKwlDb25zaWRlciB0aGUgZm9sbG93aW5nIGNvbW1hbmQKKworCXVtb3VudCBBCisKKwl3aGVyZSAnQScgaXMgYSBtb3VudCBtb3VudGVkIG9uIG1vdW50ICdCJyBhdCBkZW50cnkgJ2InLgorCisJSWYgbW91bnQgJ0InIGlzIHNoYXJlZCwgdGhlbiBhbGwgbW9zdC1yZWNlbnRseS1tb3VudGVkIG1vdW50cyBhdCBkZW50cnkKKwknYicgb24gbW91bnRzIHRoYXQgcmVjZWl2ZSBwcm9wYWdhdGlvbiBmcm9tIG1vdW50ICdCJyBhbmQgZG9lcyBub3QgaGF2ZQorCXN1Yi1tb3VudHMgd2l0aGluIHRoZW0gYXJlIHVubW91bnRlZC4KKworCUV4YW1wbGU6IExldCdzIHNheSAnQjEnLCAnQjInLCAnQjMnIGFyZSBzaGFyZWQgbW91bnRzIHRoYXQgcHJvcGFnYXRlIHRvCisJZWFjaCBvdGhlci4KKworCWxldCdzIHNheSAnQTEnLCAnQTInLCAnQTMnIGFyZSBmaXJzdCBtb3VudGVkIGF0IGRlbnRyeSAnYicgb24gbW91bnQKKwknQjEnLCAnQjInIGFuZCAnQjMnIHJlc3BlY3RpdmVseS4KKworCWxldCdzIHNheSAnQzEnLCAnQzInLCAnQzMnIGFyZSBuZXh0IG1vdW50ZWQgYXQgdGhlIHNhbWUgZGVudHJ5ICdiJyBvbgorCW1vdW50ICdCMScsICdCMicgYW5kICdCMycgcmVzcGVjdGl2ZWx5LgorCisJaWYgJ0MxJyBpcyB1bm1vdW50ZWQsIGFsbCB0aGUgbW91bnRzIHRoYXQgYXJlIG1vc3QtcmVjZW50bHktbW91bnRlZCBvbgorCSdCMScgYW5kIG9uIHRoZSBtb3VudHMgdGhhdCAnQjEnIHByb3BhZ2F0ZXMtdG8gYXJlIHVubW91bnRlZC4KKworCSdCMScgcHJvcGFnYXRlcyB0byAnQjInIGFuZCAnQjMnLiBBbmQgdGhlIG1vc3QgcmVjZW50bHkgbW91bnRlZCBtb3VudAorCW9uICdCMicgYXQgZGVudHJ5ICdiJyBpcyAnQzInLCBhbmQgdGhhdCBvZiBtb3VudCAnQjMnIGlzICdDMycuCisKKwlTbyBhbGwgJ0MxJywgJ0MyJyBhbmQgJ0MzJyBzaG91bGQgYmUgdW5tb3VudGVkLgorCisJSWYgYW55IG9mICdDMicgb3IgJ0MzJyBoYXMgc29tZSBjaGlsZCBtb3VudHMsIHRoZW4gdGhhdCBtb3VudCBpcyBub3QKKwl1bm1vdW50ZWQsIGJ1dCBhbGwgb3RoZXIgbW91bnRzIGFyZSB1bm1vdW50ZWQuIEhvd2V2ZXIgaWYgJ0MxJyBpcyB0b2xkCisJdG8gYmUgdW5tb3VudGVkIGFuZCAnQzEnIGhhcyBzb21lIHN1Yi1tb3VudHMsIHRoZSB1bW91bnQgb3BlcmF0aW9uIGlzCisJZmFpbGVkIGVudGlyZWx5LgorCis1ZykgQ2xvbmUgTmFtZXNwYWNlCisKKwlBIGNsb25lZCBuYW1lc3BhY2UgY29udGFpbnMgYWxsIHRoZSBtb3VudHMgYXMgdGhhdCBvZiB0aGUgcGFyZW50CisJbmFtZXNwYWNlLgorCisJTGV0J3Mgc2F5ICdBJyBhbmQgJ0InIGFyZSB0aGUgY29ycmVzcG9uZGluZyBtb3VudHMgaW4gdGhlIHBhcmVudCBhbmQgdGhlCisJY2hpbGQgbmFtZXNwYWNlLgorCisJSWYgJ0EnIGlzIHNoYXJlZCwgdGhlbiAnQicgaXMgYWxzbyBzaGFyZWQgYW5kICdBJyBhbmQgJ0InIHByb3BhZ2F0ZSB0bworCWVhY2ggb3RoZXIuCisKKwlJZiAnQScgaXMgYSBzbGF2ZSBtb3VudCBvZiAnWicsIHRoZW4gJ0InIGlzIGFsc28gdGhlIHNsYXZlIG1vdW50IG9mCisJJ1onLgorCisJSWYgJ0EnIGlzIGEgcHJpdmF0ZSBtb3VudCwgdGhlbiAnQicgaXMgYSBwcml2YXRlIG1vdW50IHRvby4KKworCUlmICdBJyBpcyB1bmJpbmRhYmxlIG1vdW50LCB0aGVuICdCJyBpcyBhIHVuYmluZGFibGUgbW91bnQgdG9vLgorCisKKzYpIFF1aXoKKworCUEuIFdoYXQgaXMgdGhlIHJlc3VsdCBvZiB0aGUgZm9sbG93aW5nIGNvbW1hbmQgc2VxdWVuY2U/CisKKwkJbW91bnQgLS1iaW5kIC9tbnQgL21udAorCQltb3VudCAtLW1ha2Utc2hhcmVkIC9tbnQKKwkJbW91bnQgLS1iaW5kIC9tbnQgL3RtcAorCQltb3VudCAtLW1vdmUgL3RtcCAvbW50LzEKKworCQl3aGF0IHNob3VsZCBiZSB0aGUgY29udGVudHMgb2YgL21udCAvbW50LzEgL21udC8xLzEgc2hvdWxkIGJlPworCQlTaG91bGQgdGhleSBhbGwgYmUgaWRlbnRpY2FsPyBvciBzaG91bGQgL21udCBhbmQgL21udC8xIGJlCisJCWlkZW50aWNhbCBvbmx5PworCisKKwlCLiBXaGF0IGlzIHRoZSByZXN1bHQgb2YgdGhlIGZvbGxvd2luZyBjb21tYW5kIHNlcXVlbmNlPworCisJCW1vdW50IC0tbWFrZS1yc2hhcmVkIC8KKwkJbWtkaXIgLXAgL3YvMQorCQltb3VudCAtLXJiaW5kIC8gL3YvMQorCisJCXdoYXQgc2hvdWxkIGJlIHRoZSBjb250ZW50IG9mIC92LzEvdi8xIGJlPworCisKKwlDLiBXaGF0IGlzIHRoZSByZXN1bHQgb2YgdGhlIGZvbGxvd2luZyBjb21tYW5kIHNlcXVlbmNlPworCisJCW1vdW50IC0tYmluZCAvbW50IC9tbnQKKwkJbW91bnQgLS1tYWtlLXNoYXJlZCAvbW50CisJCW1rZGlyIC1wIC9tbnQvMS8yLzMgL21udC8xL3Rlc3QKKwkJbW91bnQgLS1iaW5kIC9tbnQvMSAvdG1wCisJCW1vdW50IC0tbWFrZS1zbGF2ZSAvbW50CisJCW1vdW50IC0tbWFrZS1zaGFyZWQgL21udAorCQltb3VudCAtLWJpbmQgL21udC8xLzIgL3RtcDEKKwkJbW91bnQgLS1tYWtlLXNsYXZlIC9tbnQKKworCQlBdCB0aGlzIHBvaW50IHdlIGhhdmUgdGhlIGZpcnN0IG1vdW50IGF0IC90bXAgYW5kCisJCWl0cyByb290IGRlbnRyeSBpcyAxLiBMZXQncyBjYWxsIHRoaXMgbW91bnQgJ0EnCisJCUFuZCB0aGVuIHdlIGhhdmUgYSBzZWNvbmQgbW91bnQgYXQgL3RtcDEgd2l0aCByb290CisJCWRlbnRyeSAyLiBMZXQncyBjYWxsIHRoaXMgbW91bnQgJ0InCisJCU5leHQgd2UgaGF2ZSBhIHRoaXJkIG1vdW50IGF0IC9tbnQgd2l0aCByb290IGRlbnRyeQorCQltbnQuIExldCdzIGNhbGwgdGhpcyBtb3VudCAnQycKKworCQknQicgaXMgdGhlIHNsYXZlIG9mICdBJyBhbmQgJ0MnIGlzIGEgc2xhdmUgb2YgJ0InCisJCUEgLT4gQiAtPiBDCisKKwkJYXQgdGhpcyBwb2ludCBpZiB3ZSBleGVjdXRlIHRoZSBmb2xsb3dpbmcgY29tbWFuZAorCisJCW1vdW50IC0tYmluZCAvYmluIC90bXAvdGVzdAorCisJCVRoZSBtb3VudCBpcyBhdHRlbXB0ZWQgb24gJ0EnCisKKwkJd2lsbCB0aGUgbW91bnQgcHJvcGFnYXRlIHRvICdCJyBhbmQgJ0MnID8KKworCQl3aGF0IHdvdWxkIGJlIHRoZSBjb250ZW50cyBvZgorCQkvbW50LzEvdGVzdCBiZT8KKworNykgRkFRCisKKwlRMS4gV2h5IGlzIGJpbmQgbW91bnQgbmVlZGVkPyBIb3cgaXMgaXQgZGlmZmVyZW50IGZyb20gc3ltYm9saWMgbGlua3M/CisJCXN5bWJvbGljIGxpbmtzIGNhbiBnZXQgc3RhbGUgaWYgdGhlIGRlc3RpbmF0aW9uIG1vdW50IGdldHMKKwkJdW5tb3VudGVkIG9yIG1vdmVkLiBCaW5kIG1vdW50cyBjb250aW51ZSB0byBleGlzdCBldmVuIGlmIHRoZQorCQlvdGhlciBtb3VudCBpcyB1bm1vdW50ZWQgb3IgbW92ZWQuCisKKwlRMi4gV2h5IGNhbid0IHRoZSBzaGFyZWQgc3VidHJlZSBiZSBpbXBsZW1lbnRlZCB1c2luZyBleHBvcnRmcz8KKworCQlleHBvcnRmcyBpcyBhIGhlYXZ5d2VpZ2h0IHdheSBvZiBhY2NvbXBsaXNoaW5nIHBhcnQgb2Ygd2hhdAorCQlzaGFyZWQgc3VidHJlZSBjYW4gZG8uIEkgY2Fubm90IGltYWdpbmUgYSB3YXkgdG8gaW1wbGVtZW50IHRoZQorCQlzZW1hbnRpY3Mgb2Ygc2xhdmUgbW91bnQgdXNpbmcgZXhwb3J0ZnM/CisKKwlRMyBXaHkgaXMgdW5iaW5kYWJsZSBtb3VudCBuZWVkZWQ/CisKKwkJTGV0J3Mgc2F5IHdlIHdhbnQgdG8gcmVwbGljYXRlIHRoZSBtb3VudCB0cmVlIGF0IG11bHRpcGxlCisJCWxvY2F0aW9ucyB3aXRoaW4gdGhlIHNhbWUgc3VidHJlZS4KKworCQlpZiBvbmUgcmJpbmQgbW91bnRzIGEgdHJlZSB3aXRoaW4gdGhlIHNhbWUgc3VidHJlZSAnbicgdGltZXMKKwkJdGhlIG51bWJlciBvZiBtb3VudHMgY3JlYXRlZCBpcyBhbiBleHBvbmVudGlhbCBmdW5jdGlvbiBvZiAnbicuCisJCUhhdmluZyB1bmJpbmRhYmxlIG1vdW50IGNhbiBoZWxwIHBydW5lIHRoZSB1bm5lZWRlZCBiaW5kCisJCW1vdW50cy4gSGVyZSBpcyBhIGV4YW1wbGUuCisKKwkJc3RlcCAxOgorCQkgICBsZXQncyBzYXkgdGhlIHJvb3QgdHJlZSBoYXMganVzdCB0d28gZGlyZWN0b3JpZXMgd2l0aAorCQkgICBvbmUgdmZzbW91bnQuCisJCQkJICAgIHJvb3QKKwkJCQkgICAvICAgIFwKKwkJCQkgIHRtcCAgICB1c3IKKworCQkgICAgQW5kIHdlIHdhbnQgdG8gcmVwbGljYXRlIHRoZSB0cmVlIGF0IG11bHRpcGxlCisJCSAgICBtb3VudHBvaW50cyB1bmRlciAvcm9vdC90bXAKKworCQlzdGVwMjoKKwkJICAgICAgbW91bnQgLS1tYWtlLXNoYXJlZCAvcm9vdAorCisJCSAgICAgIG1rZGlyIC1wIC90bXAvbTEKKworCQkgICAgICBtb3VudCAtLXJiaW5kIC9yb290IC90bXAvbTEKKworCQkgICAgICB0aGUgbmV3IHRyZWUgbm93IGxvb2tzIGxpa2UgdGhpczoKKworCQkJCSAgICByb290CisJCQkJICAgLyAgICBcCisJCQkJIHRtcCAgICB1c3IKKwkJCQkvCisJCQkgICAgICAgbTEKKwkJCSAgICAgIC8gIFwKKwkJCSAgICAgdG1wICB1c3IKKwkJCSAgICAgLworCQkJICAgIG0xCisKKwkJCSAgaXQgaGFzIHR3byB2ZnNtb3VudHMKKworCQlzdGVwMzoKKwkJCSAgICBta2RpciAtcCAvdG1wL20yCisJCQkgICAgbW91bnQgLS1yYmluZCAvcm9vdCAvdG1wL20yCisKKwkJCXRoZSBuZXcgdHJlZSBub3cgbG9va3MgbGlrZSB0aGlzOgorCisJCQkJICAgICAgcm9vdAorCQkJCSAgICAgLyAgICBcCisJCQkJICAgdG1wICAgICB1c3IKKwkJCQkgIC8gICAgXAorCQkJCW0xICAgICAgIG0yCisJCQkgICAgICAgLyBcICAgICAgIC8gIFwKKwkJCSAgICAgdG1wICB1c3IgICB0bXAgIHVzcgorCQkJICAgICAvIFwgICAgICAgICAgLworCQkJICAgIG0xICBtMiAgICAgIG0xCisJCQkJLyBcICAgICAvICBcCisJCQkgICAgICB0bXAgdXNyICB0bXAgICB1c3IKKwkJCSAgICAgIC8gICAgICAgIC8gXAorCQkJICAgICBtMSAgICAgICBtMSAgbTIKKwkJCSAgICAvICBcCisJCQkgIHRtcCAgIHVzcgorCQkJICAvICBcCisJCQkgbTEgICBtMgorCisJCSAgICAgICBpdCBoYXMgNiB2ZnNtb3VudHMKKworCQlzdGVwIDQ6CisJCQkgIG1rZGlyIC1wIC90bXAvbTMKKwkJCSAgbW91bnQgLS1yYmluZCAvcm9vdCAvdG1wL20zCisKKwkJCSAgSSB3b24ndCBkcmF3IHRoZSB0cmVlLi5idXQgaXQgaGFzIDI0IHZmc21vdW50cworCisKKwkJYXQgc3RlcCBpIHRoZSBudW1iZXIgb2YgdmZzbW91bnRzIGlzIFZbaV0gPSBpKlZbaS0xXS4KKwkJVGhpcyBpcyBhbiBleHBvbmVudGlhbCBmdW5jdGlvbi4gQW5kIHRoaXMgdHJlZSBoYXMgd2F5IG1vcmUKKwkJbW91bnRzIHRoYW4gd2hhdCB3ZSByZWFsbHkgbmVlZGVkIGluIHRoZSBmaXJzdCBwbGFjZS4KKworCQlPbmUgY291bGQgdXNlIGEgc2VyaWVzIG9mIHVtb3VudCBhdCBlYWNoIHN0ZXAgdG8gcHJ1bmUKKwkJb3V0IHRoZSB1bm5lZWRlZCBtb3VudHMuIEJ1dCB0aGVyZSBpcyBhIGJldHRlciBzb2x1dGlvbi4KKwkJVW5jbG9uYWJsZSBtb3VudHMgY29tZSBpbiBoYW5keSBoZXJlLgorCisJCXN0ZXAgMToKKwkJICAgbGV0J3Mgc2F5IHRoZSByb290IHRyZWUgaGFzIGp1c3QgdHdvIGRpcmVjdG9yaWVzIHdpdGgKKwkJICAgb25lIHZmc21vdW50LgorCQkJCSAgICByb290CisJCQkJICAgLyAgICBcCisJCQkJICB0bXAgICAgdXNyCisKKwkJICAgIEhvdyBkbyB3ZSBzZXQgdXAgdGhlIHNhbWUgdHJlZSBhdCBtdWx0aXBsZSBsb2NhdGlvbnMgdW5kZXIKKwkJICAgIC9yb290L3RtcAorCisJCXN0ZXAyOgorCQkgICAgICBtb3VudCAtLWJpbmQgL3Jvb3QvdG1wIC9yb290L3RtcAorCisJCSAgICAgIG1vdW50IC0tbWFrZS1yc2hhcmVkIC9yb290CisJCSAgICAgIG1vdW50IC0tbWFrZS11bmJpbmRhYmxlIC9yb290L3RtcAorCisJCSAgICAgIG1rZGlyIC1wIC90bXAvbTEKKworCQkgICAgICBtb3VudCAtLXJiaW5kIC9yb290IC90bXAvbTEKKworCQkgICAgICB0aGUgbmV3IHRyZWUgbm93IGxvb2tzIGxpa2UgdGhpczoKKworCQkJCSAgICByb290CisJCQkJICAgLyAgICBcCisJCQkJIHRtcCAgICB1c3IKKwkJCQkvCisJCQkgICAgICAgbTEKKwkJCSAgICAgIC8gIFwKKwkJCSAgICAgdG1wICB1c3IKKworCQlzdGVwMzoKKwkJCSAgICBta2RpciAtcCAvdG1wL20yCisJCQkgICAgbW91bnQgLS1yYmluZCAvcm9vdCAvdG1wL20yCisKKwkJICAgICAgdGhlIG5ldyB0cmVlIG5vdyBsb29rcyBsaWtlIHRoaXM6CisKKwkJCQkgICAgcm9vdAorCQkJCSAgIC8gICAgXAorCQkJCSB0bXAgICAgdXNyCisJCQkJLyAgIFwKKwkJCSAgICAgICBtMSAgICAgbTIKKwkJCSAgICAgIC8gIFwgICAgIC8gXAorCQkJICAgICB0bXAgIHVzciB0bXAgdXNyCisKKwkJc3RlcDQ6CisKKwkJCSAgICBta2RpciAtcCAvdG1wL20zCisJCQkgICAgbW91bnQgLS1yYmluZCAvcm9vdCAvdG1wL20zCisKKwkJICAgICAgdGhlIG5ldyB0cmVlIG5vdyBsb29rcyBsaWtlIHRoaXM6CisKKwkJCQkgICAgCSAgcm9vdAorCQkJCSAgICAgIC8gICAgCSAgXAorCQkJCSAgICAgdG1wICAgIAkgICB1c3IKKwkJCSAgICAgICAgIC8gICAgXCAgICBcCisJCQkgICAgICAgbTEgICAgIG0yICAgICBtMworCQkJICAgICAgLyAgXCAgICAgLyBcICAgIC8gIFwKKwkJCSAgICAgdG1wICB1c3IgdG1wIHVzciB0bXAgdXNyCisKKzgpIEltcGxlbWVudGF0aW9uCisKKzhBKSBEYXRhc3RydWN0dXJlCisKKwk0IG5ldyBmaWVsZHMgYXJlIGludHJvZHVjZWQgdG8gc3RydWN0IHZmc21vdW50CisJLT5tbnRfc2hhcmUKKwktPm1udF9zbGF2ZV9saXN0CisJLT5tbnRfc2xhdmUKKwktPm1udF9tYXN0ZXIKKworCS0+bW50X3NoYXJlIGxpbmtzIHRvZ2V0aGVyIGFsbCB0aGUgbW91bnQgdG8vZnJvbSB3aGljaCB0aGlzIHZmc21vdW50CisJCXNlbmQvcmVjZWl2ZXMgcHJvcGFnYXRpb24gZXZlbnRzLgorCisJLT5tbnRfc2xhdmVfbGlzdCBsaW5rcyBhbGwgdGhlIG1vdW50cyB0byB3aGljaCB0aGlzIHZmc21vdW50IHByb3BhZ2F0ZXMKKwkJdG8uCisKKwktPm1udF9zbGF2ZSBsaW5rcyB0b2dldGhlciBhbGwgdGhlIHNsYXZlcyB0aGF0IGl0cyBtYXN0ZXIgdmZzbW91bnQKKwkJcHJvcGFnYXRlcyB0by4KKworCS0+bW50X21hc3RlciBwb2ludHMgdG8gdGhlIG1hc3RlciB2ZnNtb3VudCBmcm9tIHdoaWNoIHRoaXMgdmZzbW91bnQKKwkJcmVjZWl2ZXMgcHJvcGFnYXRpb24uCisKKwktPm1udF9mbGFncyB0YWtlcyB0d28gbW9yZSBmbGFncyB0byBpbmRpY2F0ZSB0aGUgcHJvcGFnYXRpb24gc3RhdHVzIG9mCisJCXRoZSB2ZnNtb3VudC4gIE1OVF9TSEFSRSBpbmRpY2F0ZXMgdGhhdCB0aGUgdmZzbW91bnQgaXMgYSBzaGFyZWQKKwkJdmZzbW91bnQuICBNTlRfVU5DTE9OQUJMRSBpbmRpY2F0ZXMgdGhhdCB0aGUgdmZzbW91bnQgY2Fubm90IGJlCisJCXJlcGxpY2F0ZWQuCisKKwlBbGwgdGhlIHNoYXJlZCB2ZnNtb3VudHMgaW4gYSBwZWVyIGdyb3VwIGZvcm0gYSBjeWNsaWMgbGlzdCB0aHJvdWdoCisJLT5tbnRfc2hhcmUuCisKKwlBbGwgdmZzbW91bnRzIHdpdGggdGhlIHNhbWUgLT5tbnRfbWFzdGVyIGZvcm0gb24gYSBjeWNsaWMgbGlzdCBhbmNob3JlZAorCWluIC0+bW50X21hc3Rlci0+bW50X3NsYXZlX2xpc3QgYW5kIGdvaW5nIHRocm91Z2ggLT5tbnRfc2xhdmUuCisKKwkgLT5tbnRfbWFzdGVyIGNhbiBwb2ludCB0byBhcmJpdHJhcnkgKGFuZCBwb3NzaWJseSBkaWZmZXJlbnQpIG1lbWJlcnMKKwkgb2YgbWFzdGVyIHBlZXIgZ3JvdXAuICBUbyBmaW5kIGFsbCBpbW1lZGlhdGUgc2xhdmVzIG9mIGEgcGVlciBncm91cAorCSB5b3UgbmVlZCB0byBnbyB0aHJvdWdoIF9hbGxfIC0+bW50X3NsYXZlX2xpc3Qgb2YgaXRzIG1lbWJlcnMuCisJIENvbmNlcHR1YWxseSBpdCdzIGp1c3QgYSBzaW5nbGUgc2V0IC0gZGlzdHJpYnV0aW9uIGFtb25nIHRoZQorCSBpbmRpdmlkdWFsIGxpc3RzIGRvZXMgbm90IGFmZmVjdCBwcm9wYWdhdGlvbiBvciB0aGUgd2F5IHByb3BhZ2F0aW9uCisJIHRyZWUgaXMgbW9kaWZpZWQgYnkgb3BlcmF0aW9ucy4KKworCUFsbCB2ZnNtb3VudHMgaW4gYSBwZWVyIGdyb3VwIGhhdmUgdGhlIHNhbWUgLT5tbnRfbWFzdGVyLiAgSWYgaXQgaXMKKwlub24tTlVMTCwgdGhleSBmb3JtIGEgY29udGlndW91cyAob3JkZXJlZCkgc2VnbWVudCBvZiBzbGF2ZSBsaXN0LgorCisJQSBleGFtcGxlIHByb3BhZ2F0aW9uIHRyZWUgbG9va3MgYXMgc2hvd24gaW4gdGhlIGZpZ3VyZSBiZWxvdy4KKwlbIE5PVEU6IFRob3VnaCBpdCBsb29rcyBsaWtlIGEgZm9yZXN0LCBpZiB3ZSBjb25zaWRlciBhbGwgdGhlIHNoYXJlZAorCW1vdW50cyBhcyBhIGNvbmNlcHR1YWwgZW50aXR5IGNhbGxlZCAncG5vZGUnLCBpdCBiZWNvbWVzIGEgdHJlZV0KKworCisJCSAgICAgICAgQSA8LS0+IEIgPC0tPiBDIDwtLS0+IEQKKwkJICAgICAgIC98XAkgICAgICAvfCAgICAgIHxcCisJCSAgICAgIC8gRiBHCSAgICAgSiBLICAgICAgSCBJCisJCSAgICAgLworCQkgICAgRTwtLT5LCisJCQkvfFwKKwkJICAgICAgIE0gTCBOCisKKwlJbiB0aGUgYWJvdmUgZmlndXJlICBBLEIsQyBhbmQgRCBhbGwgYXJlIHNoYXJlZCBhbmQgcHJvcGFnYXRlIHRvIGVhY2gKKwlvdGhlci4gICAnQScgaGFzIGdvdCAzIHNsYXZlIG1vdW50cyAnRScgJ0YnIGFuZCAnRycgJ0MnIGhhcyBnb3QgMiBzbGF2ZQorCW1vdW50cyAnSicgYW5kICdLJyAgYW5kICAnRCcgaGFzIGdvdCB0d28gc2xhdmUgbW91bnRzICdIJyBhbmQgJ0knLgorCSdFJyBpcyBhbHNvIHNoYXJlZCB3aXRoICdLJyBhbmQgdGhleSBwcm9wYWdhdGUgdG8gZWFjaCBvdGhlci4gIEFuZAorCSdLJyBoYXMgMyBzbGF2ZXMgJ00nLCAnTCcgYW5kICdOJworCisJQSdzIC0+bW50X3NoYXJlIGxpbmtzIHdpdGggdGhlIC0+bW50X3NoYXJlIG9mICdCJyAnQycgYW5kICdEJworCisJQSdzIC0+bW50X3NsYXZlX2xpc3QgbGlua3Mgd2l0aCAtPm1udF9zbGF2ZSBvZiAnRScsICdLJywgJ0YnIGFuZCAnRycKKworCUUncyAtPm1udF9zaGFyZSBsaW5rcyB3aXRoIC0+bW50X3NoYXJlIG9mIEsKKwknRScsICdLJywgJ0YnLCAnRycgaGF2ZSB0aGVpciAtPm1udF9tYXN0ZXIgcG9pbnQgdG8gc3RydWN0CisJCQkJdmZzbW91bnQgb2YgJ0EnCisJJ00nLCAnTCcsICdOJyBoYXZlIHRoZWlyIC0+bW50X21hc3RlciBwb2ludCB0byBzdHJ1Y3QgdmZzbW91bnQgb2YgJ0snCisJSydzIC0+bW50X3NsYXZlX2xpc3QgbGlua3Mgd2l0aCAtPm1udF9zbGF2ZSBvZiAnTScsICdMJyBhbmQgJ04nCisKKwlDJ3MgLT5tbnRfc2xhdmVfbGlzdCBsaW5rcyB3aXRoIC0+bW50X3NsYXZlIG9mICdKJyBhbmQgJ0snCisJSiBhbmQgSydzIC0+bW50X21hc3RlciBwb2ludHMgdG8gc3RydWN0IHZmc21vdW50IG9mIEMKKwlhbmQgZmluYWxseSBEJ3MgLT5tbnRfc2xhdmVfbGlzdCBsaW5rcyB3aXRoIC0+bW50X3NsYXZlIG9mICdIJyBhbmQgJ0knCisJJ0gnIGFuZCAnSScgaGF2ZSB0aGVpciAtPm1udF9tYXN0ZXIgcG9pbnRpbmcgdG8gc3RydWN0IHZmc21vdW50IG9mICdEJy4KKworCisJTk9URTogVGhlIHByb3BhZ2F0aW9uIHRyZWUgaXMgb3J0aG9nb25hbCB0byB0aGUgbW91bnQgdHJlZS4KKworOEIgTG9ja2luZzoKKworCS0+bW50X3NoYXJlLCAtPm1udF9zbGF2ZSwgLT5tbnRfc2xhdmVfbGlzdCwgLT5tbnRfbWFzdGVyIGFyZSBwcm90ZWN0ZWQKKwlieSBuYW1lc3BhY2Vfc2VtIChleGNsdXNpdmUgZm9yIG1vZGlmaWNhdGlvbnMsIHNoYXJlZCBmb3IgcmVhZGluZykuCisKKwlOb3JtYWxseSB3ZSBoYXZlIC0+bW50X2ZsYWdzIG1vZGlmaWNhdGlvbnMgc2VyaWFsaXplZCBieSB2ZnNtb3VudF9sb2NrLgorCVRoZXJlIGFyZSB0d28gZXhjZXB0aW9uczogZG9fYWRkX21vdW50KCkgYW5kIGNsb25lX21udCgpLgorCVRoZSBmb3JtZXIgbW9kaWZpZXMgYSB2ZnNtb3VudCB0aGF0IGhhcyBub3QgYmVlbiB2aXNpYmxlIGluIGFueSBzaGFyZWQKKwlkYXRhIHN0cnVjdHVyZXMgeWV0LgorCVRoZSBsYXR0ZXIgaG9sZHMgbmFtZXNwYWNlX3NlbSBhbmQgdGhlIG9ubHkgcmVmZXJlbmNlcyB0byB2ZnNtb3VudAorCWFyZSBpbiBsaXN0cyB0aGF0IGNhbid0IGJlIHRyYXZlcnNlZCB3aXRob3V0IG5hbWVzcGFjZV9zZW0uCisKKzhDIEFsZ29yaXRobToKKworCVRoZSBjcnV4IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiByZXNpZGVzIGluIHJiaW5kL21vdmUgb3BlcmF0aW9uLgorCisJVGhlIG92ZXJhbGwgYWxnb3JpdGhtIGJyZWFrcyB0aGUgb3BlcmF0aW9uIGludG8gMyBwaGFzZXM6IChsb29rIGF0CisJYXR0YWNoX3JlY3Vyc2l2ZV9tbnQoKSBhbmQgcHJvcGFnYXRlX21udCgpKQorCisJMS4gcHJlcGFyZSBwaGFzZS4KKwkyLiBjb21taXQgcGhhc2VzLgorCTMuIGFib3J0IHBoYXNlcy4KKworCVByZXBhcmUgcGhhc2U6CisKKwlmb3IgZWFjaCBtb3VudCBpbiB0aGUgc291cmNlIHRyZWU6CisJCSAgIGEpIENyZWF0ZSB0aGUgbmVjZXNzYXJ5IG51bWJlciBvZiBtb3VudCB0cmVlcyB0bworCQkgICAJYmUgYXR0YWNoZWQgdG8gZWFjaCBvZiB0aGUgbW91bnRzIHRoYXQgcmVjZWl2ZQorCQkJcHJvcGFnYXRpb24gZnJvbSB0aGUgZGVzdGluYXRpb24gbW91bnQuCisJCSAgIGIpIERvIG5vdCBhdHRhY2ggYW55IG9mIHRoZSB0cmVlcyB0byBpdHMgZGVzdGluYXRpb24uCisJCSAgICAgIEhvd2V2ZXIgbm90ZSBkb3duIGl0cyAtPm1udF9wYXJlbnQgYW5kIC0+bW50X21vdW50cG9pbnQKKwkJICAgYykgTGluayBhbGwgdGhlIG5ldyBtb3VudHMgdG8gZm9ybSBhIHByb3BhZ2F0aW9uIHRyZWUgdGhhdAorCQkgICAgICBpcyBpZGVudGljYWwgdG8gdGhlIHByb3BhZ2F0aW9uIHRyZWUgb2YgdGhlIGRlc3RpbmF0aW9uCisJCSAgICAgIG1vdW50LgorCisJCSAgIElmIHRoaXMgcGhhc2UgaXMgc3VjY2Vzc2Z1bCwgdGhlcmUgc2hvdWxkIGJlICduJyBuZXcKKwkJICAgcHJvcGFnYXRpb24gdHJlZXM7IHdoZXJlICduJyBpcyB0aGUgbnVtYmVyIG9mIG1vdW50cyBpbiB0aGUKKwkJICAgc291cmNlIHRyZWUuICBHbyB0byB0aGUgY29tbWl0IHBoYXNlCisKKwkJICAgQWxzbyB0aGVyZSBzaG91bGQgYmUgJ20nIG5ldyBtb3VudCB0cmVlcywgd2hlcmUgJ20nIGlzCisJCSAgIHRoZSBudW1iZXIgb2YgbW91bnRzIHRvIHdoaWNoIHRoZSBkZXN0aW5hdGlvbiBtb3VudAorCQkgICBwcm9wYWdhdGVzIHRvLgorCisJCSAgIGlmIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMgZmFpbCwgZ28gdG8gdGhlIGFib3J0IHBoYXNlLgorCisJQ29tbWl0IHBoYXNlCisJCWF0dGFjaCBlYWNoIG9mIHRoZSBtb3VudCB0cmVlcyB0byB0aGVpciBjb3JyZXNwb25kaW5nCisJCWRlc3RpbmF0aW9uIG1vdW50cy4KKworCUFib3J0IHBoYXNlCisJCWRlbGV0ZSBhbGwgdGhlIG5ld2x5IGNyZWF0ZWQgdHJlZXMuCisKKwlOT1RFOiBhbGwgdGhlIHByb3BhZ2F0aW9uIHJlbGF0ZWQgZnVuY3Rpb25hbGl0eSByZXNpZGVzIGluIHRoZSBmaWxlCisJcG5vZGUuYworCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit2ZXJzaW9uIDAuMSAgKGNyZWF0ZWQgdGhlIGluaXRpYWwgZG9jdW1lbnQsIFJhbSBQYWkgbGludXhyYW1AdXMuaWJtLmNvbSkKK3ZlcnNpb24gMC4yICAoSW5jb3Jwb3JhdGVkIGNvbW1lbnRzIGZyb20gQWwgVmlybykKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvc3B1ZnMudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zcHVmcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM0M2QxMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvc3B1ZnMudHh0CkBAIC0wLDAgKzEsNTIxIEBACitTUFVGUygyKSAgICAgICAgICAgICAgICAgICBMaW51eCBQcm9ncmFtbWVyJ3MgTWFudWFsICAgICAgICAgICAgICAgICAgU1BVRlMoMikKKworCisKK05BTUUKKyAgICAgICBzcHVmcyAtIHRoZSBTUFUgZmlsZSBzeXN0ZW0KKworCitERVNDUklQVElPTgorICAgICAgIFRoZSBTUFUgZmlsZSBzeXN0ZW0gaXMgdXNlZCBvbiBQb3dlclBDIG1hY2hpbmVzIHRoYXQgaW1wbGVtZW50IHRoZSBDZWxsCisgICAgICAgQnJvYWRiYW5kIEVuZ2luZSBBcmNoaXRlY3R1cmUgaW4gb3JkZXIgdG8gYWNjZXNzIFN5bmVyZ2lzdGljICBQcm9jZXNzb3IKKyAgICAgICBVbml0cyAoU1BVcykuCisKKyAgICAgICBUaGUgZmlsZSBzeXN0ZW0gcHJvdmlkZXMgYSBuYW1lIHNwYWNlIHNpbWlsYXIgdG8gcG9zaXggc2hhcmVkIG1lbW9yeSBvcgorICAgICAgIG1lc3NhZ2UgcXVldWVzLiBVc2VycyB0aGF0IGhhdmUgd3JpdGUgcGVybWlzc2lvbnMgb24gIHRoZSAgZmlsZSAgc3lzdGVtCisgICAgICAgY2FuIHVzZSBzcHVfY3JlYXRlKDIpIHRvIGVzdGFibGlzaCBTUFUgY29udGV4dHMgaW4gdGhlIHNwdWZzIHJvb3QuCisKKyAgICAgICBFdmVyeSBTUFUgY29udGV4dCBpcyByZXByZXNlbnRlZCBieSBhIGRpcmVjdG9yeSBjb250YWluaW5nIGEgcHJlZGVmaW5lZAorICAgICAgIHNldCBvZiBmaWxlcy4gVGhlc2UgZmlsZXMgY2FuIGJlIHVzZWQgZm9yIG1hbmlwdWxhdGluZyB0aGUgc3RhdGUgb2YgdGhlCisgICAgICAgbG9naWNhbCBTUFUuIFVzZXJzIGNhbiBjaGFuZ2UgcGVybWlzc2lvbnMgb24gdGhvc2UgZmlsZXMsIGJ1dCBub3QgYWN0dS0KKyAgICAgICBhbGx5IGFkZCBvciByZW1vdmUgZmlsZXMuCisKKworTU9VTlQgT1BUSU9OUworICAgICAgIHVpZD08dWlkPgorICAgICAgICAgICAgICBzZXQgdGhlIHVzZXIgb3duaW5nIHRoZSBtb3VudCBwb2ludCwgdGhlIGRlZmF1bHQgaXMgMCAocm9vdCkuCisKKyAgICAgICBnaWQ9PGdpZD4KKyAgICAgICAgICAgICAgc2V0IHRoZSBncm91cCBvd25pbmcgdGhlIG1vdW50IHBvaW50LCB0aGUgZGVmYXVsdCBpcyAwIChyb290KS4KKworCitGSUxFUworICAgICAgIFRoZSBmaWxlcyBpbiBzcHVmcyBtb3N0bHkgZm9sbG93IHRoZSBzdGFuZGFyZCBiZWhhdmlvciBmb3IgcmVndWxhciBzeXMtCisgICAgICAgdGVtICBjYWxscyBsaWtlIHJlYWQoMikgb3Igd3JpdGUoMiksIGJ1dCBvZnRlbiBzdXBwb3J0IG9ubHkgYSBzdWJzZXQgb2YKKyAgICAgICB0aGUgb3BlcmF0aW9ucyBzdXBwb3J0ZWQgb24gcmVndWxhciBmaWxlIHN5c3RlbXMuIFRoaXMgbGlzdCBkZXRhaWxzIHRoZQorICAgICAgIHN1cHBvcnRlZCAgb3BlcmF0aW9ucyAgYW5kICB0aGUgIGRldmlhdGlvbnMgIGZyb20gIHRoZSBiZWhhdmlvdXIgaW4gdGhlCisgICAgICAgcmVzcGVjdGl2ZSBtYW4gcGFnZXMuCisKKyAgICAgICBBbGwgZmlsZXMgdGhhdCBzdXBwb3J0IHRoZSByZWFkKDIpIG9wZXJhdGlvbiBhbHNvIHN1cHBvcnQgcmVhZHYoMikgIGFuZAorICAgICAgIGFsbCAgZmlsZXMgIHRoYXQgc3VwcG9ydCB0aGUgd3JpdGUoMikgb3BlcmF0aW9uIGFsc28gc3VwcG9ydCB3cml0ZXYoMikuCisgICAgICAgQWxsIGZpbGVzIHN1cHBvcnQgdGhlIGFjY2VzcygyKSBhbmQgc3RhdCgyKSBmYW1pbHkgb2YgIG9wZXJhdGlvbnMsICBidXQKKyAgICAgICBvbmx5ICB0aGUgIHN0X21vZGUsICBzdF9ubGluaywgIHN0X3VpZCBhbmQgc3RfZ2lkIGZpZWxkcyBvZiBzdHJ1Y3Qgc3RhdAorICAgICAgIGNvbnRhaW4gcmVsaWFibGUgaW5mb3JtYXRpb24uCisKKyAgICAgICBBbGwgZmlsZXMgc3VwcG9ydCB0aGUgY2htb2QoMikvZmNobW9kKDIpIGFuZCBjaG93bigyKS9mY2hvd24oMikgIG9wZXJhLQorICAgICAgIHRpb25zLCAgYnV0ICB3aWxsICBub3QgYmUgYWJsZSB0byBncmFudCBwZXJtaXNzaW9ucyB0aGF0IGNvbnRyYWRpY3QgdGhlCisgICAgICAgcG9zc2libGUgb3BlcmF0aW9ucywgZS5nLiByZWFkIGFjY2VzcyBvbiB0aGUgd2JveCBmaWxlLgorCisgICAgICAgVGhlIGN1cnJlbnQgc2V0IG9mIGZpbGVzIGlzOgorCisKKyAgIC9tZW0KKyAgICAgICB0aGUgY29udGVudHMgb2YgdGhlIGxvY2FsIHN0b3JhZ2UgbWVtb3J5ICBvZiAgdGhlICBTUFUuICAgVGhpcyAgY2FuICBiZQorICAgICAgIGFjY2Vzc2VkICBsaWtlICBhIHJlZ3VsYXIgc2hhcmVkIG1lbW9yeSBmaWxlIGFuZCBjb250YWlucyBib3RoIGNvZGUgYW5kCisgICAgICAgZGF0YSBpbiB0aGUgYWRkcmVzcyBzcGFjZSBvZiB0aGUgU1BVLiAgVGhlIHBvc3NpYmxlICBvcGVyYXRpb25zICBvbiAgYW4KKyAgICAgICBvcGVuIG1lbSBmaWxlIGFyZToKKworICAgICAgIHJlYWQoMiksIHByZWFkKDIpLCB3cml0ZSgyKSwgcHdyaXRlKDIpLCBsc2VlaygyKQorICAgICAgICAgICAgICBUaGVzZSAgb3BlcmF0ZSAgYXMgIGRvY3VtZW50ZWQsIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IHNlZWsoMiksCisgICAgICAgICAgICAgIHdyaXRlKDIpIGFuZCBwd3JpdGUoMikgYXJlIG5vdCBzdXBwb3J0ZWQgYmV5b25kIHRoZSBlbmQgIG9mICB0aGUKKyAgICAgICAgICAgICAgZmlsZS4gVGhlIGZpbGUgc2l6ZSBpcyB0aGUgc2l6ZSBvZiB0aGUgbG9jYWwgc3RvcmFnZSBvZiB0aGUgU1BVLAorICAgICAgICAgICAgICB3aGljaCBub3JtYWxseSBpcyAyNTYga2lsb2J5dGVzLgorCisgICAgICAgbW1hcCgyKQorICAgICAgICAgICAgICBNYXBwaW5nIG1lbSBpbnRvIHRoZSBwcm9jZXNzIGFkZHJlc3Mgc3BhY2UgZ2l2ZXMgYWNjZXNzICB0byAgdGhlCisgICAgICAgICAgICAgIFNQVSAgbG9jYWwgIHN0b3JhZ2UgIHdpdGhpbiAgdGhlICBwcm9jZXNzICBhZGRyZXNzICBzcGFjZS4gIE9ubHkKKyAgICAgICAgICAgICAgTUFQX1NIQVJFRCBtYXBwaW5ncyBhcmUgYWxsb3dlZC4KKworCisgICAvbWJveAorICAgICAgIFRoZSBmaXJzdCBTUFUgdG8gQ1BVIGNvbW11bmljYXRpb24gbWFpbGJveC4gVGhpcyBmaWxlIGlzIHJlYWQtb25seSAgYW5kCisgICAgICAgY2FuICBiZSAgcmVhZCAgaW4gIHVuaXRzIG9mIDMyIGJpdHMuICBUaGUgZmlsZSBjYW4gb25seSBiZSB1c2VkIGluIG5vbi0KKyAgICAgICBibG9ja2luZyBtb2RlIGFuZCBpdCBldmVuIHBvbGwoKSB3aWxsIG5vdCBibG9jayBvbiAgaXQuICAgVGhlICBwb3NzaWJsZQorICAgICAgIG9wZXJhdGlvbnMgb24gYW4gb3BlbiBtYm94IGZpbGUgYXJlOgorCisgICAgICAgcmVhZCgyKQorICAgICAgICAgICAgICBJZiAgYSAgY291bnQgc21hbGxlciB0aGFuIGZvdXIgaXMgcmVxdWVzdGVkLCByZWFkIHJldHVybnMgLTEgYW5kCisgICAgICAgICAgICAgIHNldHMgZXJybm8gdG8gRUlOVkFMLiAgSWYgdGhlcmUgaXMgbm8gZGF0YSBhdmFpbGFibGUgaW4gdGhlIG1haWwKKyAgICAgICAgICAgICAgYm94LCAgdGhlICByZXR1cm4gIHZhbHVlICBpcyBzZXQgdG8gLTEgYW5kIGVycm5vIGJlY29tZXMgRUFHQUlOLgorICAgICAgICAgICAgICBXaGVuIGRhdGEgaGFzIGJlZW4gcmVhZCBzdWNjZXNzZnVsbHksIGZvdXIgYnl0ZXMgYXJlICBwbGFjZWQgIGluCisgICAgICAgICAgICAgIHRoZSBkYXRhIGJ1ZmZlciBhbmQgdGhlIHZhbHVlIGZvdXIgaXMgcmV0dXJuZWQuCisKKworICAgL2lib3gKKyAgICAgICBUaGUgIHNlY29uZCAgU1BVICB0byBDUFUgY29tbXVuaWNhdGlvbiBtYWlsYm94LiBUaGlzIGZpbGUgaXMgc2ltaWxhciB0bworICAgICAgIHRoZSBmaXJzdCBtYWlsYm94IGZpbGUsIGJ1dCBjYW4gYmUgcmVhZCBpbiBibG9ja2luZyBJL08gbW9kZSwgIGFuZCAgdGhlCisgICAgICAgcG9sbCAgZmFtaWx5IG9mIHN5c3RlbSBjYWxscyBjYW4gYmUgdXNlZCB0byB3YWl0IGZvciBpdC4gIFRoZSAgcG9zc2libGUKKyAgICAgICBvcGVyYXRpb25zIG9uIGFuIG9wZW4gaWJveCBmaWxlIGFyZToKKworICAgICAgIHJlYWQoMikKKyAgICAgICAgICAgICAgSWYgYSBjb3VudCBzbWFsbGVyIHRoYW4gZm91ciBpcyByZXF1ZXN0ZWQsIHJlYWQgcmV0dXJucyAgLTEgIGFuZAorICAgICAgICAgICAgICBzZXRzIGVycm5vIHRvIEVJTlZBTC4gIElmIHRoZXJlIGlzIG5vIGRhdGEgYXZhaWxhYmxlIGluIHRoZSBtYWlsCisgICAgICAgICAgICAgIGJveCBhbmQgdGhlIGZpbGUgZGVzY3JpcHRvciBoYXMgYmVlbiBvcGVuZWQgd2l0aCBPX05PTkJMT0NLLCB0aGUKKyAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlIGlzIHNldCB0byAtMSBhbmQgZXJybm8gYmVjb21lcyBFQUdBSU4uCisKKyAgICAgICAgICAgICAgSWYgIHRoZXJlICBpcyAgbm8gIGRhdGEgIGF2YWlsYWJsZSAgaW4gdGhlIG1haWwgYm94IGFuZCB0aGUgZmlsZQorICAgICAgICAgICAgICBkZXNjcmlwdG9yIGhhcyBiZWVuIG9wZW5lZCB3aXRob3V0ICBPX05PTkJMT0NLLCAgdGhlICBjYWxsICB3aWxsCisgICAgICAgICAgICAgIGJsb2NrICB1bnRpbCAgdGhlICBTUFUgIHdyaXRlcyB0byBpdHMgaW50ZXJydXB0IG1haWxib3ggY2hhbm5lbC4KKyAgICAgICAgICAgICAgV2hlbiBkYXRhIGhhcyBiZWVuIHJlYWQgc3VjY2Vzc2Z1bGx5LCBmb3VyIGJ5dGVzIGFyZSAgcGxhY2VkICBpbgorICAgICAgICAgICAgICB0aGUgZGF0YSBidWZmZXIgYW5kIHRoZSB2YWx1ZSBmb3VyIGlzIHJldHVybmVkLgorCisgICAgICAgcG9sbCgyKQorICAgICAgICAgICAgICBQb2xsICBvbiAgdGhlICBpYm94ICBmaWxlIHJldHVybnMgKFBPTExJTiB8IFBPTExSRE5PUk0pIHdoZW5ldmVyCisgICAgICAgICAgICAgIGRhdGEgaXMgYXZhaWxhYmxlIGZvciByZWFkaW5nLgorCisKKyAgIC93Ym94CisgICAgICAgVGhlIENQVSB0byBTUFUgY29tbXVuYXRpb24gbWFpbGJveC4gSXQgaXMgd3JpdGUtb25seSBhbmQgY2FuIGJlIHdyaXR0ZW4KKyAgICAgICBpbiAgdW5pdHMgIG9mICAzMiAgYml0cy4gSWYgdGhlIG1haWxib3ggaXMgZnVsbCwgd3JpdGUoKSB3aWxsIGJsb2NrIGFuZAorICAgICAgIHBvbGwgY2FuIGJlIHVzZWQgdG8gd2FpdCBmb3IgaXQgYmVjb21pbmcgIGVtcHR5ICBhZ2Fpbi4gICBUaGUgIHBvc3NpYmxlCisgICAgICAgb3BlcmF0aW9ucyAgb24gIGFuIG9wZW4gd2JveCBmaWxlIGFyZTogd3JpdGUoMikgSWYgYSBjb3VudCBzbWFsbGVyIHRoYW4KKyAgICAgICBmb3VyIGlzIHJlcXVlc3RlZCwgd3JpdGUgcmV0dXJucyAtMSBhbmQgc2V0cyBlcnJubyB0byBFSU5WQUwuICBJZiB0aGVyZQorICAgICAgIGlzICBubyBzcGFjZSBhdmFpbGFibGUgaW4gdGhlIG1haWwgYm94IGFuZCB0aGUgZmlsZSBkZXNjcmlwdG9yIGhhcyBiZWVuCisgICAgICAgb3BlbmVkIHdpdGggT19OT05CTE9DSywgdGhlIHJldHVybiB2YWx1ZSBpcyBzZXQgdG8gLTEgYW5kIGVycm5vIGJlY29tZXMKKyAgICAgICBFQUdBSU4uCisKKyAgICAgICBJZiAgdGhlcmUgaXMgbm8gc3BhY2UgYXZhaWxhYmxlIGluIHRoZSBtYWlsIGJveCBhbmQgdGhlIGZpbGUgZGVzY3JpcHRvcgorICAgICAgIGhhcyBiZWVuIG9wZW5lZCB3aXRob3V0IE9fTk9OQkxPQ0ssIHRoZSBjYWxsIHdpbGwgYmxvY2sgdW50aWwgIHRoZSAgU1BVCisgICAgICAgcmVhZHMgIGZyb20gIGl0cyBQUEUgbWFpbGJveCBjaGFubmVsLiAgV2hlbiBkYXRhIGhhcyBiZWVuIHJlYWQgc3VjY2Vzcy0KKyAgICAgICBmdWxseSwgZm91ciBieXRlcyBhcmUgcGxhY2VkIGluIHRoZSBkYXRhIGJ1ZmZlciBhbmQgdGhlIHZhbHVlICBmb3VyICBpcworICAgICAgIHJldHVybmVkLgorCisgICAgICAgcG9sbCgyKQorICAgICAgICAgICAgICBQb2xsICBvbiAgdGhlICBpYm94IGZpbGUgcmV0dXJucyAoUE9MTE9VVCB8IFBPTExXUk5PUk0pIHdoZW5ldmVyCisgICAgICAgICAgICAgIHNwYWNlIGlzIGF2YWlsYWJsZSBmb3Igd3JpdGluZy4KKworCisgICAvbWJveF9zdGF0CisgICAvaWJveF9zdGF0CisgICAvd2JveF9zdGF0CisgICAgICAgUmVhZC1vbmx5IGZpbGVzIHRoYXQgY29udGFpbiB0aGUgbGVuZ3RoIG9mIHRoZSBjdXJyZW50IHF1ZXVlLCBpLmUuICBob3cKKyAgICAgICBtYW55ICB3b3JkcyAgY2FuICBiZSAgcmVhZCAgZnJvbSAgbWJveCBvciBpYm94IG9yIGhvdyBtYW55IHdvcmRzIGNhbiBiZQorICAgICAgIHdyaXR0ZW4gdG8gd2JveCB3aXRob3V0IGJsb2NraW5nLiAgVGhlIGZpbGVzIGNhbiBiZSByZWFkIG9ubHkgaW4gNC1ieXRlCisgICAgICAgdW5pdHMgIGFuZCAgcmV0dXJuICBhICBiaWctZW5kaWFuICBiaW5hcnkgaW50ZWdlciBudW1iZXIuICBUaGUgcG9zc2libGUKKyAgICAgICBvcGVyYXRpb25zIG9uIGFuIG9wZW4gKmJveF9zdGF0IGZpbGUgYXJlOgorCisgICAgICAgcmVhZCgyKQorICAgICAgICAgICAgICBJZiBhIGNvdW50IHNtYWxsZXIgdGhhbiBmb3VyIGlzIHJlcXVlc3RlZCwgcmVhZCByZXR1cm5zICAtMSAgYW5kCisgICAgICAgICAgICAgIHNldHMgZXJybm8gdG8gRUlOVkFMLiAgT3RoZXJ3aXNlLCBhIGZvdXIgYnl0ZSB2YWx1ZSBpcyBwbGFjZWQgaW4KKyAgICAgICAgICAgICAgdGhlIGRhdGEgYnVmZmVyLCBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgdGhhdCAgY2FuICBiZQorICAgICAgICAgICAgICByZWFkICBmcm9tICAoZm9yICBtYm94X3N0YXQgIGFuZCAgaWJveF9zdGF0KSAgb3Igd3JpdHRlbiB0byAoZm9yCisgICAgICAgICAgICAgIHdib3hfc3RhdCkgdGhlIHJlc3BlY3RpdmUgbWFpbCBib3ggd2l0aG91dCBibG9ja2luZyBvciByZXN1bHRpbmcKKyAgICAgICAgICAgICAgaW4gRUFHQUlOLgorCisKKyAgIC9ucGMKKyAgIC9kZWNyCisgICAvZGVjcl9zdGF0dXMKKyAgIC9zcHVfdGFnX21hc2sKKyAgIC9ldmVudF9tYXNrCisgICAvc3JyMAorICAgICAgIEludGVybmFsICByZWdpc3RlcnMgIG9mICB0aGUgU1BVLiBUaGUgcmVwcmVzZW50YXRpb24gaXMgYW4gQVNDSUkgc3RyaW5nCisgICAgICAgd2l0aCB0aGUgbnVtZXJpYyB2YWx1ZSBvZiB0aGUgbmV4dCBpbnN0cnVjdGlvbiB0byAgYmUgIGV4ZWN1dGVkLiAgVGhlc2UKKyAgICAgICBjYW4gIGJlICB1c2VkIGluIHJlYWQvd3JpdGUgbW9kZSBmb3IgZGVidWdnaW5nLCBidXQgbm9ybWFsIG9wZXJhdGlvbiBvZgorICAgICAgIHByb2dyYW1zIHNob3VsZCBub3QgcmVseSBvbiB0aGVtIGJlY2F1c2UgYWNjZXNzIHRvIGFueSBvZiAgdGhlbSAgZXhjZXB0CisgICAgICAgbnBjIHJlcXVpcmVzIGFuIFNQVSBjb250ZXh0IHNhdmUgYW5kIGlzIHRoZXJlZm9yZSB2ZXJ5IGluZWZmaWNpZW50LgorCisgICAgICAgVGhlIGNvbnRlbnRzIG9mIHRoZXNlIGZpbGVzIGFyZToKKworICAgICAgIG5wYyAgICAgICAgICAgICAgICAgTmV4dCBQcm9ncmFtIENvdW50ZXIKKworICAgICAgIGRlY3IgICAgICAgICAgICAgICAgU1BVIERlY3JlbWVudGVyCisKKyAgICAgICBkZWNyX3N0YXR1cyAgICAgICAgIERlY3JlbWVudGVyIFN0YXR1cworCisgICAgICAgc3B1X3RhZ19tYXNrICAgICAgICBNRkMgdGFnIG1hc2sgZm9yIFNQVSBETUEKKworICAgICAgIGV2ZW50X21hc2sgICAgICAgICAgRXZlbnQgbWFzayBmb3IgU1BVIGludGVycnVwdHMKKworICAgICAgIHNycjAgICAgICAgICAgICAgICAgSW50ZXJydXB0IFJldHVybiBhZGRyZXNzIHJlZ2lzdGVyCisKKworICAgICAgIFRoZSAgIHBvc3NpYmxlICAgb3BlcmF0aW9ucyAgIG9uICAgYW4gICBvcGVuICBucGMsICBkZWNyLCAgZGVjcl9zdGF0dXMsCisgICAgICAgc3B1X3RhZ19tYXNrLCBldmVudF9tYXNrIG9yIHNycjAgZmlsZSBhcmU6CisKKyAgICAgICByZWFkKDIpCisgICAgICAgICAgICAgIFdoZW4gdGhlIGNvdW50IHN1cHBsaWVkIHRvIHRoZSByZWFkIGNhbGwgIGlzICBzaG9ydGVyICB0aGFuICB0aGUKKyAgICAgICAgICAgICAgcmVxdWlyZWQgIGxlbmd0aCBmb3IgdGhlIHBvaW50ZXIgdmFsdWUgcGx1cyBhIG5ld2xpbmUgY2hhcmFjdGVyLAorICAgICAgICAgICAgICBzdWJzZXF1ZW50IHJlYWRzIGZyb20gdGhlIHNhbWUgZmlsZSBkZXNjcmlwdG9yICB3aWxsICByZXN1bHQgIGluCisgICAgICAgICAgICAgIGNvbXBsZXRpbmcgIHRoZSBzdHJpbmcsIHJlZ2FyZGxlc3Mgb2YgY2hhbmdlcyB0byB0aGUgcmVnaXN0ZXIgYnkKKyAgICAgICAgICAgICAgYSBydW5uaW5nIFNQVSB0YXNrLiAgV2hlbiBhIGNvbXBsZXRlIHN0cmluZyBoYXMgYmVlbiAgcmVhZCwgIGFsbAorICAgICAgICAgICAgICBzdWJzZXF1ZW50IHJlYWQgb3BlcmF0aW9ucyB3aWxsIHJldHVybiB6ZXJvIGJ5dGVzIGFuZCBhIG5ldyBmaWxlCisgICAgICAgICAgICAgIGRlc2NyaXB0b3IgbmVlZHMgdG8gYmUgb3BlbmVkIHRvIHJlYWQgdGhlIHZhbHVlIGFnYWluLgorCisgICAgICAgd3JpdGUoMikKKyAgICAgICAgICAgICAgQSB3cml0ZSBvcGVyYXRpb24gb24gdGhlIGZpbGUgcmVzdWx0cyBpbiBzZXR0aW5nIHRoZSByZWdpc3RlciB0bworICAgICAgICAgICAgICB0aGUgIHZhbHVlICBnaXZlbiAgaW4gIHRoZSBzdHJpbmcuIFRoZSBzdHJpbmcgaXMgcGFyc2VkIGZyb20gdGhlCisgICAgICAgICAgICAgIGJlZ2lubmluZyB0byB0aGUgZmlyc3Qgbm9uLW51bWVyaWMgY2hhcmFjdGVyIG9yIHRoZSBlbmQgIG9mICB0aGUKKyAgICAgICAgICAgICAgYnVmZmVyLiAgU3Vic2VxdWVudCB3cml0ZXMgdG8gdGhlIHNhbWUgZmlsZSBkZXNjcmlwdG9yIG92ZXJ3cml0ZQorICAgICAgICAgICAgICB0aGUgcHJldmlvdXMgc2V0dGluZy4KKworCisgICAvZnBjcgorICAgICAgIFRoaXMgZmlsZSBnaXZlcyBhY2Nlc3MgdG8gdGhlIEZsb2F0aW5nIFBvaW50IFN0YXR1cyBhbmQgQ29udHJvbCAgUmVnaXMtCisgICAgICAgdGVyIGFzIGEgZm91ciBieXRlIGxvbmcgZmlsZS4gVGhlIG9wZXJhdGlvbnMgb24gdGhlIGZwY3IgZmlsZSBhcmU6CisKKyAgICAgICByZWFkKDIpCisgICAgICAgICAgICAgIElmICBhICBjb3VudCBzbWFsbGVyIHRoYW4gZm91ciBpcyByZXF1ZXN0ZWQsIHJlYWQgcmV0dXJucyAtMSBhbmQKKyAgICAgICAgICAgICAgc2V0cyBlcnJubyB0byBFSU5WQUwuICBPdGhlcndpc2UsIGEgZm91ciBieXRlIHZhbHVlIGlzIHBsYWNlZCBpbgorICAgICAgICAgICAgICB0aGUgZGF0YSBidWZmZXIsIGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGZwY3IgcmVnaXMtCisgICAgICAgICAgICAgIHRlci4KKworICAgICAgIHdyaXRlKDIpCisgICAgICAgICAgICAgIElmIGEgY291bnQgc21hbGxlciB0aGFuIGZvdXIgaXMgcmVxdWVzdGVkLCB3cml0ZSByZXR1cm5zIC0xICBhbmQKKyAgICAgICAgICAgICAgc2V0cyAgZXJybm8gIHRvICBFSU5WQUwuICBPdGhlcndpc2UsIGEgZm91ciBieXRlIHZhbHVlIGlzIGNvcGllZAorICAgICAgICAgICAgICBmcm9tIHRoZSBkYXRhIGJ1ZmZlciwgdXBkYXRpbmcgdGhlIHZhbHVlIG9mIHRoZSBmcGNyIHJlZ2lzdGVyLgorCisKKyAgIC9zaWduYWwxCisgICAvc2lnbmFsMgorICAgICAgIFRoZSB0d28gc2lnbmFsIG5vdGlmaWNhdGlvbiBjaGFubmVscyBvZiBhbiBTUFUuICBUaGVzZSAgYXJlICByZWFkLXdyaXRlCisgICAgICAgZmlsZXMgIHRoYXQgIG9wZXJhdGUgIG9uICBhIDMyIGJpdCB3b3JkLiAgV3JpdGluZyB0byBvbmUgb2YgdGhlc2UgZmlsZXMKKyAgICAgICB0cmlnZ2VycyBhbiBpbnRlcnJ1cHQgb24gdGhlIFNQVS4gIFRoZSAgdmFsdWUgIHdyaXR0ZW4gIHRvICB0aGUgIHNpZ25hbAorICAgICAgIGZpbGVzIGNhbiBiZSByZWFkIGZyb20gdGhlIFNQVSB0aHJvdWdoIGEgY2hhbm5lbCByZWFkIG9yIGZyb20gaG9zdCB1c2VyCisgICAgICAgc3BhY2UgdGhyb3VnaCB0aGUgZmlsZS4gIEFmdGVyIHRoZSB2YWx1ZSBoYXMgYmVlbiByZWFkIGJ5IHRoZSAgU1BVLCAgaXQKKyAgICAgICBpcyAgcmVzZXQgIHRvIHplcm8uICBUaGUgcG9zc2libGUgb3BlcmF0aW9ucyBvbiBhbiBvcGVuIHNpZ25hbDEgb3Igc2lnLQorICAgICAgIG5hbDIgZmlsZSBhcmU6CisKKyAgICAgICByZWFkKDIpCisgICAgICAgICAgICAgIElmIGEgY291bnQgc21hbGxlciB0aGFuIGZvdXIgaXMgcmVxdWVzdGVkLCByZWFkIHJldHVybnMgIC0xICBhbmQKKyAgICAgICAgICAgICAgc2V0cyBlcnJubyB0byBFSU5WQUwuICBPdGhlcndpc2UsIGEgZm91ciBieXRlIHZhbHVlIGlzIHBsYWNlZCBpbgorICAgICAgICAgICAgICB0aGUgZGF0YSBidWZmZXIsIGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgdmFsdWUgb2YgIHRoZSAgc3BlY2lmaWVkCisgICAgICAgICAgICAgIHNpZ25hbCBub3RpZmljYXRpb24gcmVnaXN0ZXIuCisKKyAgICAgICB3cml0ZSgyKQorICAgICAgICAgICAgICBJZiAgYSBjb3VudCBzbWFsbGVyIHRoYW4gZm91ciBpcyByZXF1ZXN0ZWQsIHdyaXRlIHJldHVybnMgLTEgYW5kCisgICAgICAgICAgICAgIHNldHMgZXJybm8gdG8gRUlOVkFMLiAgT3RoZXJ3aXNlLCBhIGZvdXIgYnl0ZSAgdmFsdWUgIGlzICBjb3BpZWQKKyAgICAgICAgICAgICAgZnJvbSB0aGUgZGF0YSBidWZmZXIsIHVwZGF0aW5nIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIHNpZ25hbAorICAgICAgICAgICAgICBub3RpZmljYXRpb24gcmVnaXN0ZXIuICBUaGUgc2lnbmFsICBub3RpZmljYXRpb24gIHJlZ2lzdGVyICB3aWxsCisgICAgICAgICAgICAgIGVpdGhlciBiZSByZXBsYWNlZCB3aXRoIHRoZSBpbnB1dCBkYXRhIG9yIHdpbGwgYmUgdXBkYXRlZCB0byB0aGUKKyAgICAgICAgICAgICAgYml0d2lzZSBPUiBvciB0aGUgb2xkIHZhbHVlIGFuZCB0aGUgaW5wdXQgZGF0YSwgZGVwZW5kaW5nIG9uIHRoZQorICAgICAgICAgICAgICBjb250ZW50cyAgb2YgIHRoZSAgc2lnbmFsMV90eXBlLCAgb3IgIHNpZ25hbDJfdHlwZSByZXNwZWN0aXZlbHksCisgICAgICAgICAgICAgIGZpbGUuCisKKworICAgL3NpZ25hbDFfdHlwZQorICAgL3NpZ25hbDJfdHlwZQorICAgICAgIFRoZXNlIHR3byBmaWxlcyBjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIHRoZSBzaWduYWwxIGFuZCBzaWduYWwyICBub3RpZmktCisgICAgICAgY2F0aW9uICBmaWxlcy4gIFRoZSAgY29udGFpbiAgYSBudW1lcmljYWwgQVNDSUkgc3RyaW5nIHdoaWNoIGlzIHJlYWQgYXMKKyAgICAgICBlaXRoZXIgIjEiIG9yICIwIi4gIEluIG1vZGUgMCAob3ZlcndyaXRlKSwgdGhlICBoYXJkd2FyZSAgcmVwbGFjZXMgIHRoZQorICAgICAgIGNvbnRlbnRzIG9mIHRoZSBzaWduYWwgY2hhbm5lbCB3aXRoIHRoZSBkYXRhIHRoYXQgaXMgd3JpdHRlbiB0byBpdC4gIGluCisgICAgICAgbW9kZSAxIChsb2dpY2FsIE9SKSwgdGhlIGhhcmR3YXJlIGFjY3VtdWxhdGVzIHRoZSBiaXRzIHRoYXQgYXJlICBzdWJzZS0KKyAgICAgICBxdWVudGx5IHdyaXR0ZW4gdG8gaXQuICBUaGUgcG9zc2libGUgb3BlcmF0aW9ucyBvbiBhbiBvcGVuIHNpZ25hbDFfdHlwZQorICAgICAgIG9yIHNpZ25hbDJfdHlwZSBmaWxlIGFyZToKKworICAgICAgIHJlYWQoMikKKyAgICAgICAgICAgICAgV2hlbiB0aGUgY291bnQgc3VwcGxpZWQgdG8gdGhlIHJlYWQgY2FsbCAgaXMgIHNob3J0ZXIgIHRoYW4gIHRoZQorICAgICAgICAgICAgICByZXF1aXJlZCAgbGVuZ3RoICBmb3IgdGhlIGRpZ2l0IHBsdXMgYSBuZXdsaW5lIGNoYXJhY3Rlciwgc3Vic2UtCisgICAgICAgICAgICAgIHF1ZW50IHJlYWRzIGZyb20gdGhlIHNhbWUgZmlsZSBkZXNjcmlwdG9yIHdpbGwgIHJlc3VsdCAgaW4gIGNvbS0KKyAgICAgICAgICAgICAgcGxldGluZyAgdGhlICBzdHJpbmcuICBXaGVuIGEgY29tcGxldGUgc3RyaW5nIGhhcyBiZWVuIHJlYWQsIGFsbAorICAgICAgICAgICAgICBzdWJzZXF1ZW50IHJlYWQgb3BlcmF0aW9ucyB3aWxsIHJldHVybiB6ZXJvIGJ5dGVzIGFuZCBhIG5ldyBmaWxlCisgICAgICAgICAgICAgIGRlc2NyaXB0b3IgbmVlZHMgdG8gYmUgb3BlbmVkIHRvIHJlYWQgdGhlIHZhbHVlIGFnYWluLgorCisgICAgICAgd3JpdGUoMikKKyAgICAgICAgICAgICAgQSB3cml0ZSBvcGVyYXRpb24gb24gdGhlIGZpbGUgcmVzdWx0cyBpbiBzZXR0aW5nIHRoZSByZWdpc3RlciB0bworICAgICAgICAgICAgICB0aGUgdmFsdWUgZ2l2ZW4gaW4gdGhlIHN0cmluZy4gVGhlIHN0cmluZyAgaXMgIHBhcnNlZCAgZnJvbSAgdGhlCisgICAgICAgICAgICAgIGJlZ2lubmluZyAgdG8gIHRoZSBmaXJzdCBub24tbnVtZXJpYyBjaGFyYWN0ZXIgb3IgdGhlIGVuZCBvZiB0aGUKKyAgICAgICAgICAgICAgYnVmZmVyLiAgU3Vic2VxdWVudCB3cml0ZXMgdG8gdGhlIHNhbWUgZmlsZSBkZXNjcmlwdG9yIG92ZXJ3cml0ZQorICAgICAgICAgICAgICB0aGUgcHJldmlvdXMgc2V0dGluZy4KKworCitFWEFNUExFUworICAgICAgIC9ldGMvZnN0YWIgZW50cnkKKyAgICAgICAgICAgICAgbm9uZSAgICAgIC9zcHUgICAgICBzcHVmcyAgICAgZ2lkPXNwdSAgIDAgICAgMAorCisKK0FVVEhPUlMKKyAgICAgICBBcm5kICBCZXJnbWFubiAgPGFybmRiQGRlLmlibS5jb20+LCAgTWFyayAgTnV0dGVyIDxtbnV0dGVyQHVzLmlibS5jb20+LAorICAgICAgIFVscmljaCBXZWlnYW5kIDxVbHJpY2guV2VpZ2FuZEBkZS5pYm0uY29tPgorCitTRUUgQUxTTworICAgICAgIGNhcGFiaWxpdGllcyg3KSwgY2xvc2UoMiksIHNwdV9jcmVhdGUoMiksIHNwdV9ydW4oMiksIHNwdWZzKDcpCisKKworCitMaW51eCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwNS0wOS0yOCAgICAgICAgICAgICAgICAgICAgICAgICAgU1BVRlMoMikKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NQVV9SVU4oMikgICAgICAgICAgICAgICAgIExpbnV4IFByb2dyYW1tZXIncyBNYW51YWwgICAgICAgICAgICAgICAgU1BVX1JVTigyKQorCisKKworTkFNRQorICAgICAgIHNwdV9ydW4gLSBleGVjdXRlIGFuIHNwdSBjb250ZXh0CisKKworU1lOT1BTSVMKKyAgICAgICAjaW5jbHVkZSA8c3lzL3NwdS5oPgorCisgICAgICAgaW50IHNwdV9ydW4oaW50IGZkLCB1bnNpZ25lZCBpbnQgKm5wYywgdW5zaWduZWQgaW50ICpldmVudCk7CisKK0RFU0NSSVBUSU9OCisgICAgICAgVGhlICBzcHVfcnVuIHN5c3RlbSBjYWxsIGlzIHVzZWQgb24gUG93ZXJQQyBtYWNoaW5lcyB0aGF0IGltcGxlbWVudCB0aGUKKyAgICAgICBDZWxsIEJyb2FkYmFuZCBFbmdpbmUgQXJjaGl0ZWN0dXJlIGluIG9yZGVyIHRvIGFjY2VzcyBTeW5lcmdpc3RpYyAgUHJvLQorICAgICAgIGNlc3NvciAgVW5pdHMgIChTUFVzKS4gIEl0ICB1c2VzIHRoZSBmZCB0aGF0IHdhcyByZXR1cm5lZCBmcm9tIHNwdV9jcmUtCisgICAgICAgYXRlKDIpIHRvIGFkZHJlc3MgYSBzcGVjaWZpYyBTUFUgY29udGV4dC4gV2hlbiB0aGUgY29udGV4dCBnZXRzICBzY2hlZC0KKyAgICAgICB1bGVkICB0byBhIHBoeXNpY2FsIFNQVSwgaXQgc3RhcnRzIGV4ZWN1dGlvbiBhdCB0aGUgaW5zdHJ1Y3Rpb24gcG9pbnRlcgorICAgICAgIHBhc3NlZCBpbiBucGMuCisKKyAgICAgICBFeGVjdXRpb24gb2YgU1BVIGNvZGUgaGFwcGVucyBzeW5jaHJvbm91c2x5LCBtZWFuaW5nIHRoYXQgc3B1X3J1biAgZG9lcworICAgICAgIG5vdCAgcmV0dXJuICB3aGlsZSB0aGUgU1BVIGlzIHN0aWxsIHJ1bm5pbmcuIElmIHRoZXJlIGlzIGEgbmVlZCB0byBleGUtCisgICAgICAgY3V0ZSBTUFUgY29kZSBpbiBwYXJhbGxlbCB3aXRoIG90aGVyIGNvZGUgb24gZWl0aGVyICB0aGUgIG1haW4gIENQVSAgb3IKKyAgICAgICBvdGhlciAgU1BVcywgIHlvdSAgbmVlZCB0byBjcmVhdGUgYSBuZXcgdGhyZWFkIG9mIGV4ZWN1dGlvbiBmaXJzdCwgZS5nLgorICAgICAgIHVzaW5nIHRoZSBwdGhyZWFkX2NyZWF0ZSgzKSBjYWxsLgorCisgICAgICAgV2hlbiBzcHVfcnVuIHJldHVybnMsIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBTUFUgaW5zdHJ1Y3Rpb24gIHBvaW50ZXIKKyAgICAgICBpcyAgd3JpdHRlbiBiYWNrIHRvIG5wYywgc28geW91IGNhbiBjYWxsIHNwdV9ydW4gYWdhaW4gd2l0aG91dCB1cGRhdGluZworICAgICAgIHRoZSBwb2ludGVycy4KKworICAgICAgIGV2ZW50IGNhbiBiZSBhIE5VTEwgcG9pbnRlciBvciBwb2ludCB0byBhbiBleHRlbmRlZCAgc3RhdHVzICBjb2RlICB0aGF0CisgICAgICAgZ2V0cyAgZmlsbGVkICB3aGVuIHNwdV9ydW4gcmV0dXJucy4gSXQgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGNvbi0KKyAgICAgICBzdGFudHM6CisKKyAgICAgICBTUEVfRVZFTlRfRE1BX0FMSUdOTUVOVAorICAgICAgICAgICAgICBBIERNQSBhbGlnbm1lbnQgZXJyb3IKKworICAgICAgIFNQRV9FVkVOVF9TUEVfREFUQV9TRUdNRU5UCisgICAgICAgICAgICAgIEEgRE1BIHNlZ21lbnRhdGlvbiBlcnJvcgorCisgICAgICAgU1BFX0VWRU5UX1NQRV9EQVRBX1NUT1JBR0UKKyAgICAgICAgICAgICAgQSBETUEgc3RvcmFnZSBlcnJvcgorCisgICAgICAgSWYgTlVMTCBpcyBwYXNzZWQgYXMgdGhlIGV2ZW50IGFyZ3VtZW50LCB0aGVzZSBlcnJvcnMgd2lsbCByZXN1bHQgaW4gIGEKKyAgICAgICBzaWduYWwgZGVsaXZlcmVkIHRvIHRoZSBjYWxsaW5nIHByb2Nlc3MuCisKK1JFVFVSTiBWQUxVRQorICAgICAgIHNwdV9ydW4gIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBzcHVfc3RhdHVzIHJlZ2lzdGVyIG9yIC0xIHRvIGluZGljYXRlCisgICAgICAgYW4gZXJyb3IgYW5kIHNldCBlcnJubyB0byBvbmUgb2YgdGhlIGVycm9yICBjb2RlcyAgbGlzdGVkICBiZWxvdy4gICBUaGUKKyAgICAgICBzcHVfc3RhdHVzICByZWdpc3RlciAgdmFsdWUgIGNvbnRhaW5zICBhICBiaXQgIG1hc2sgb2Ygc3RhdHVzIGNvZGVzIGFuZAorICAgICAgIG9wdGlvbmFsbHkgYSAxNCBiaXQgY29kZSByZXR1cm5lZCBmcm9tIHRoZSBzdG9wLWFuZC1zaWduYWwgIGluc3RydWN0aW9uCisgICAgICAgb24gdGhlIFNQVS4gVGhlIGJpdCBtYXNrcyBmb3IgdGhlIHN0YXR1cyBjb2RlcyBhcmU6CisKKyAgICAgICAweDAyICAgU1BVIHdhcyBzdG9wcGVkIGJ5IHN0b3AtYW5kLXNpZ25hbC4KKworICAgICAgIDB4MDQgICBTUFUgd2FzIHN0b3BwZWQgYnkgaGFsdC4KKworICAgICAgIDB4MDggICBTUFUgaXMgd2FpdGluZyBmb3IgYSBjaGFubmVsLgorCisgICAgICAgMHgxMCAgIFNQVSBpcyBpbiBzaW5nbGUtc3RlcCBtb2RlLgorCisgICAgICAgMHgyMCAgIFNQVSBoYXMgdHJpZWQgdG8gZXhlY3V0ZSBhbiBpbnZhbGlkIGluc3RydWN0aW9uLgorCisgICAgICAgMHg0MCAgIFNQVSBoYXMgdHJpZWQgdG8gYWNjZXNzIGFuIGludmFsaWQgY2hhbm5lbC4KKworICAgICAgIDB4M2ZmZjAwMDAKKyAgICAgICAgICAgICAgVGhlICBiaXRzICBtYXNrZWQgd2l0aCB0aGlzIHZhbHVlIGNvbnRhaW4gdGhlIGNvZGUgcmV0dXJuZWQgZnJvbQorICAgICAgICAgICAgICBzdG9wLWFuZC1zaWduYWwuCisKKyAgICAgICBUaGVyZSBhcmUgYWx3YXlzIG9uZSBvciBtb3JlIG9mIHRoZSBsb3dlciBlaWdodCBiaXRzIHNldCAgb3IgIGFuICBlcnJvcgorICAgICAgIGNvZGUgaXMgcmV0dXJuZWQgZnJvbSBzcHVfcnVuLgorCitFUlJPUlMKKyAgICAgICBFQUdBSU4gb3IgRVdPVUxEQkxPQ0sKKyAgICAgICAgICAgICAgZmQgaXMgaW4gbm9uLWJsb2NraW5nIG1vZGUgYW5kIHNwdV9ydW4gd291bGQgYmxvY2suCisKKyAgICAgICBFQkFERiAgZmQgaXMgbm90IGEgdmFsaWQgZmlsZSBkZXNjcmlwdG9yLgorCisgICAgICAgRUZBVUxUIG5wYyBpcyBub3QgYSB2YWxpZCBwb2ludGVyIG9yIHN0YXR1cyBpcyBuZWl0aGVyIE5VTEwgbm9yIGEgdmFsaWQKKyAgICAgICAgICAgICAgcG9pbnRlci4KKworICAgICAgIEVJTlRSICBBIHNpZ25hbCBvY2N1cnJlZCB3aGlsZSBzcHVfcnVuIHdhcyBpbiBwcm9ncmVzcy4gIFRoZSBucGMgIHZhbHVlCisgICAgICAgICAgICAgIGhhcyAgYmVlbiB1cGRhdGVkIHRvIHRoZSBuZXcgcHJvZ3JhbSBjb3VudGVyIHZhbHVlIGlmIG5lY2Vzc2FyeS4KKworICAgICAgIEVJTlZBTCBmZCBpcyBub3QgYSBmaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQgZnJvbSBzcHVfY3JlYXRlKDIpLgorCisgICAgICAgRU5PTUVNIEluc3VmZmljaWVudCBtZW1vcnkgd2FzIGF2YWlsYWJsZSB0byBoYW5kbGUgYSBwYWdlIGZhdWx0IHJlc3VsdC0KKyAgICAgICAgICAgICAgaW5nIGZyb20gYW4gTUZDIGRpcmVjdCBtZW1vcnkgYWNjZXNzLgorCisgICAgICAgRU5PU1lTIHRoZSBmdW5jdGlvbmFsaXR5IGlzIG5vdCBwcm92aWRlZCBieSB0aGUgY3VycmVudCBzeXN0ZW0sIGJlY2F1c2UKKyAgICAgICAgICAgICAgZWl0aGVyIHRoZSBoYXJkd2FyZSBkb2VzIG5vdCBwcm92aWRlIFNQVXMgb3IgdGhlIHNwdWZzIG1vZHVsZSBpcworICAgICAgICAgICAgICBub3QgbG9hZGVkLgorCisKK05PVEVTCisgICAgICAgc3B1X3J1biAgaXMgIG1lYW50ICB0byAgYmUgIHVzZWQgIGZyb20gIGxpYnJhcmllcyB0aGF0IGltcGxlbWVudCBhIG1vcmUKKyAgICAgICBhYnN0cmFjdCBpbnRlcmZhY2UgdG8gU1BVcywgbm90IHRvIGJlIHVzZWQgZnJvbSAgcmVndWxhciAgYXBwbGljYXRpb25zLgorICAgICAgIFNlZSAgaHR0cDovL3d3dy5ic2MuZXMvcHJvamVjdHMvZGVlcGNvbXB1dGluZy9saW51eG9uY2VsbC8gZm9yIHRoZSByZWMtCisgICAgICAgb21tZW5kZWQgbGlicmFyaWVzLgorCisKK0NPTkZPUk1JTkcgVE8KKyAgICAgICBUaGlzIGNhbGwgaXMgTGludXggc3BlY2lmaWMgYW5kIG9ubHkgaW1wbGVtZW50ZWQgYnkgdGhlIHBwYzY0IGFyY2hpdGVjLQorICAgICAgIHR1cmUuIFByb2dyYW1zIHVzaW5nIHRoaXMgc3lzdGVtIGNhbGwgYXJlIG5vdCBwb3J0YWJsZS4KKworCitCVUdTCisgICAgICAgVGhlIGNvZGUgZG9lcyBub3QgeWV0IGZ1bGx5IGltcGxlbWVudCBhbGwgZmVhdHVyZXMgbGluZWQgb3V0IGhlcmUuCisKKworQVVUSE9SCisgICAgICAgQXJuZCBCZXJnbWFubiA8YXJuZGJAZGUuaWJtLmNvbT4KKworU0VFIEFMU08KKyAgICAgICBjYXBhYmlsaXRpZXMoNyksIGNsb3NlKDIpLCBzcHVfY3JlYXRlKDIpLCBzcHVmcyg3KQorCisKKworTGludXggICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDUtMDktMjggICAgICAgICAgICAgICAgICAgICAgICBTUFVfUlVOKDIpCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTUFVfQ1JFQVRFKDIpICAgICAgICAgICAgICBMaW51eCBQcm9ncmFtbWVyJ3MgTWFudWFsICAgICAgICAgICAgIFNQVV9DUkVBVEUoMikKKworCisKK05BTUUKKyAgICAgICBzcHVfY3JlYXRlIC0gY3JlYXRlIGEgbmV3IHNwdSBjb250ZXh0CisKKworU1lOT1BTSVMKKyAgICAgICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICAgICAgI2luY2x1ZGUgPHN5cy9zcHUuaD4KKworICAgICAgIGludCBzcHVfY3JlYXRlKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlKTsKKworREVTQ1JJUFRJT04KKyAgICAgICBUaGUgIHNwdV9jcmVhdGUgIHN5c3RlbSBjYWxsIGlzIHVzZWQgb24gUG93ZXJQQyBtYWNoaW5lcyB0aGF0IGltcGxlbWVudAorICAgICAgIHRoZSBDZWxsIEJyb2FkYmFuZCBFbmdpbmUgQXJjaGl0ZWN0dXJlIGluIG9yZGVyIHRvICBhY2Nlc3MgIFN5bmVyZ2lzdGljCisgICAgICAgUHJvY2Vzc29yICBVbml0cyAoU1BVcykuIEl0IGNyZWF0ZXMgYSBuZXcgbG9naWNhbCBjb250ZXh0IGZvciBhbiBTUFUgaW4KKyAgICAgICBwYXRobmFtZSBhbmQgcmV0dXJucyBhIGhhbmRsZSB0byBhc3NvY2lhdGVkICB3aXRoICBpdC4gICBwYXRobmFtZSAgbXVzdAorICAgICAgIHBvaW50ICB0byAgYSAgbm9uLWV4aXN0aW5nIGRpcmVjdG9yeSBpbiB0aGUgbW91bnQgcG9pbnQgb2YgdGhlIFNQVSBmaWxlCisgICAgICAgc3lzdGVtIChzcHVmcykuICBXaGVuIHNwdV9jcmVhdGUgaXMgc3VjY2Vzc2Z1bCwgYSBkaXJlY3RvcnkgIGdldHMgIGNyZS0KKyAgICAgICBhdGVkIG9uIHBhdGhuYW1lIGFuZCBpdCBpcyBwb3B1bGF0ZWQgd2l0aCBmaWxlcy4KKworICAgICAgIFRoZSAgcmV0dXJuZWQgIGZpbGUgIGhhbmRsZSBjYW4gb25seSBiZSBwYXNzZWQgdG8gc3B1X3J1bigyKSBvciBjbG9zZWQsCisgICAgICAgb3RoZXIgb3BlcmF0aW9ucyBhcmUgbm90IGRlZmluZWQgb24gaXQuIFdoZW4gaXQgaXMgY2xvc2VkLCBhbGwgIGFzc29jaS0KKyAgICAgICBhdGVkICBkaXJlY3RvcnkgZW50cmllcyBpbiBzcHVmcyBhcmUgcmVtb3ZlZC4gV2hlbiB0aGUgbGFzdCBmaWxlIGhhbmRsZQorICAgICAgIHBvaW50aW5nIGVpdGhlciBpbnNpZGUgIG9mICB0aGUgIGNvbnRleHQgIGRpcmVjdG9yeSAgb3IgIHRvICB0aGlzICBmaWxlCisgICAgICAgZGVzY3JpcHRvciBpcyBjbG9zZWQsIHRoZSBsb2dpY2FsIFNQVSBjb250ZXh0IGlzIGRlc3Ryb3llZC4KKworICAgICAgIFRoZSAgcGFyYW1ldGVyIGZsYWdzIGNhbiBiZSB6ZXJvIG9yIGFueSBiaXR3aXNlIG9yJ2QgY29tYmluYXRpb24gb2YgdGhlCisgICAgICAgZm9sbG93aW5nIGNvbnN0YW50czoKKworICAgICAgIFNQVV9SQVdJTworICAgICAgICAgICAgICBBbGxvdyBtYXBwaW5nIG9mIHNvbWUgb2YgdGhlIGhhcmR3YXJlIHJlZ2lzdGVycyBvZiB0aGUgU1BVICBpbnRvCisgICAgICAgICAgICAgIHVzZXIgc3BhY2UuIFRoaXMgZmxhZyByZXF1aXJlcyB0aGUgQ0FQX1NZU19SQVdJTyBjYXBhYmlsaXR5LCBzZWUKKyAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzKDcpLgorCisgICAgICAgVGhlIG1vZGUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgcGVybWlzc2lvbnMgdXNlZCBmb3IgY3JlYXRpbmcgdGhlICBuZXcKKyAgICAgICBkaXJlY3RvcnkgIGluICBzcHVmcy4gICBtb2RlIGlzIG1vZGlmaWVkIHdpdGggdGhlIHVzZXIncyB1bWFzaygyKSB2YWx1ZQorICAgICAgIGFuZCB0aGVuIHVzZWQgZm9yIGJvdGggdGhlIGRpcmVjdG9yeSBhbmQgdGhlIGZpbGVzIGNvbnRhaW5lZCBpbiBpdC4gVGhlCisgICAgICAgZmlsZSBwZXJtaXNzaW9ucyBtYXNrIG91dCBzb21lIG1vcmUgYml0cyBvZiBtb2RlIGJlY2F1c2UgdGhleSB0eXBpY2FsbHkKKyAgICAgICBzdXBwb3J0IG9ubHkgcmVhZCBvciB3cml0ZSBhY2Nlc3MuIFNlZSBzdGF0KDIpIGZvciBhIGZ1bGwgbGlzdCAgb2YgIHRoZQorICAgICAgIHBvc3NpYmxlIG1vZGUgdmFsdWVzLgorCisKK1JFVFVSTiBWQUxVRQorICAgICAgIHNwdV9jcmVhdGUgIHJldHVybnMgYSBuZXcgZmlsZSBkZXNjcmlwdG9yLiBJdCBtYXkgcmV0dXJuIC0xIHRvIGluZGljYXRlCisgICAgICAgYW4gZXJyb3IgY29uZGl0aW9uIGFuZCBzZXQgZXJybm8gdG8gIG9uZSAgb2YgIHRoZSAgZXJyb3IgIGNvZGVzICBsaXN0ZWQKKyAgICAgICBiZWxvdy4KKworCitFUlJPUlMKKyAgICAgICBFQUNDRVNTCisgICAgICAgICAgICAgIFRoZSAgY3VycmVudCAgdXNlciBkb2VzIG5vdCBoYXZlIHdyaXRlIGFjY2VzcyBvbiB0aGUgc3B1ZnMgbW91bnQKKyAgICAgICAgICAgICAgcG9pbnQuCisKKyAgICAgICBFRVhJU1QgQW4gU1BVIGNvbnRleHQgYWxyZWFkeSBleGlzdHMgYXQgdGhlIGdpdmVuIHBhdGggbmFtZS4KKworICAgICAgIEVGQVVMVCBwYXRobmFtZSBpcyBub3QgYSB2YWxpZCBzdHJpbmcgcG9pbnRlciBpbiAgdGhlICBjdXJyZW50ICBhZGRyZXNzCisgICAgICAgICAgICAgIHNwYWNlLgorCisgICAgICAgRUlOVkFMIHBhdGhuYW1lIGlzIG5vdCBhIGRpcmVjdG9yeSBpbiB0aGUgc3B1ZnMgbW91bnQgcG9pbnQuCisKKyAgICAgICBFTE9PUCAgVG9vIG1hbnkgc3ltbGlua3Mgd2VyZSBmb3VuZCB3aGlsZSByZXNvbHZpbmcgcGF0aG5hbWUuCisKKyAgICAgICBFTUZJTEUgVGhlIHByb2Nlc3MgaGFzIHJlYWNoZWQgaXRzIG1heGltdW0gb3BlbiBmaWxlIGxpbWl0LgorCisgICAgICAgRU5BTUVUT09MT05HCisgICAgICAgICAgICAgIHBhdGhuYW1lIHdhcyB0b28gbG9uZy4KKworICAgICAgIEVORklMRSBUaGUgc3lzdGVtIGhhcyByZWFjaGVkIHRoZSBnbG9iYWwgb3BlbiBmaWxlIGxpbWl0LgorCisgICAgICAgRU5PRU5UIFBhcnQgb2YgcGF0aG5hbWUgY291bGQgbm90IGJlIHJlc29sdmVkLgorCisgICAgICAgRU5PTUVNIFRoZSBrZXJuZWwgY291bGQgbm90IGFsbG9jYXRlIGFsbCByZXNvdXJjZXMgcmVxdWlyZWQuCisKKyAgICAgICBFTk9TUEMgVGhlcmUgIGFyZSAgbm90ICBlbm91Z2ggIFNQVSByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGNyZWF0ZSBhIG5ldworICAgICAgICAgICAgICBjb250ZXh0IG9yIHRoZSB1c2VyIHNwZWNpZmljIGxpbWl0IGZvciB0aGUgbnVtYmVyICBvZiAgU1BVICBjb24tCisgICAgICAgICAgICAgIHRleHRzIGhhcyBiZWVuIHJlYWNoZWQuCisKKyAgICAgICBFTk9TWVMgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgbm90IHByb3ZpZGVkIGJ5IHRoZSBjdXJyZW50IHN5c3RlbSwgYmVjYXVzZQorICAgICAgICAgICAgICBlaXRoZXIgdGhlIGhhcmR3YXJlIGRvZXMgbm90IHByb3ZpZGUgU1BVcyBvciB0aGUgc3B1ZnMgbW9kdWxlIGlzCisgICAgICAgICAgICAgIG5vdCBsb2FkZWQuCisKKyAgICAgICBFTk9URElSCisgICAgICAgICAgICAgIEEgcGFydCBvZiBwYXRobmFtZSBpcyBub3QgYSBkaXJlY3RvcnkuCisKKworCitOT1RFUworICAgICAgIHNwdV9jcmVhdGUgIGlzICBtZWFudCAgdG8gIGJlIHVzZWQgZnJvbSBsaWJyYXJpZXMgdGhhdCBpbXBsZW1lbnQgYSBtb3JlCisgICAgICAgYWJzdHJhY3QgaW50ZXJmYWNlIHRvIFNQVXMsIG5vdCB0byBiZSB1c2VkIGZyb20gIHJlZ3VsYXIgIGFwcGxpY2F0aW9ucy4KKyAgICAgICBTZWUgIGh0dHA6Ly93d3cuYnNjLmVzL3Byb2plY3RzL2RlZXBjb21wdXRpbmcvbGludXhvbmNlbGwvIGZvciB0aGUgcmVjLQorICAgICAgIG9tbWVuZGVkIGxpYnJhcmllcy4KKworCitGSUxFUworICAgICAgIHBhdGhuYW1lIG11c3QgcG9pbnQgdG8gYSBsb2NhdGlvbiBiZW5lYXRoIHRoZSBtb3VudCBwb2ludCBvZiBzcHVmcy4gIEJ5CisgICAgICAgY29udmVudGlvbiwgaXQgZ2V0cyBtb3VudGVkIGluIC9zcHUuCisKKworQ09ORk9STUlORyBUTworICAgICAgIFRoaXMgY2FsbCBpcyBMaW51eCBzcGVjaWZpYyBhbmQgb25seSBpbXBsZW1lbnRlZCBieSB0aGUgcHBjNjQgYXJjaGl0ZWMtCisgICAgICAgdHVyZS4gUHJvZ3JhbXMgdXNpbmcgdGhpcyBzeXN0ZW0gY2FsbCBhcmUgbm90IHBvcnRhYmxlLgorCisKK0JVR1MKKyAgICAgICBUaGUgY29kZSBkb2VzIG5vdCB5ZXQgZnVsbHkgaW1wbGVtZW50IGFsbCBmZWF0dXJlcyBsaW5lZCBvdXQgaGVyZS4KKworCitBVVRIT1IKKyAgICAgICBBcm5kIEJlcmdtYW5uIDxhcm5kYkBkZS5pYm0uY29tPgorCitTRUUgQUxTTworICAgICAgIGNhcGFiaWxpdGllcyg3KSwgY2xvc2UoMiksIHNwdV9ydW4oMiksIHNwdWZzKDcpCisKKworCitMaW51eCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwNS0wOS0yOCAgICAgICAgICAgICAgICAgICAgIFNQVV9DUkVBVEUoMikKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvc3F1YXNoZnMudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zcXVhc2hmcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUyNzRmOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvc3F1YXNoZnMudHh0CkBAIC0wLDAgKzEsMjU5IEBACitTUVVBU0hGUyA0LjAgRklMRVNZU1RFTQorPT09PT09PT09PT09PT09PT09PT09PT0KKworU3F1YXNoZnMgaXMgYSBjb21wcmVzc2VkIHJlYWQtb25seSBmaWxlc3lzdGVtIGZvciBMaW51eC4KK0l0IHVzZXMgemxpYiwgbHo0LCBsem8sIG9yIHh6IGNvbXByZXNzaW9uIHRvIGNvbXByZXNzIGZpbGVzLCBpbm9kZXMgYW5kCitkaXJlY3Rvcmllcy4gIElub2RlcyBpbiB0aGUgc3lzdGVtIGFyZSB2ZXJ5IHNtYWxsIGFuZCBhbGwgYmxvY2tzIGFyZSBwYWNrZWQgdG8KK21pbmltaXNlIGRhdGEgb3ZlcmhlYWQuIEJsb2NrIHNpemVzIGdyZWF0ZXIgdGhhbiA0SyBhcmUgc3VwcG9ydGVkIHVwIHRvIGEKK21heGltdW0gb2YgMU1ieXRlcyAoZGVmYXVsdCBibG9jayBzaXplIDEyOEspLgorCitTcXVhc2hmcyBpcyBpbnRlbmRlZCBmb3IgZ2VuZXJhbCByZWFkLW9ubHkgZmlsZXN5c3RlbSB1c2UsIGZvciBhcmNoaXZhbAordXNlIChpLmUuIGluIGNhc2VzIHdoZXJlIGEgLnRhci5neiBmaWxlIG1heSBiZSB1c2VkKSwgYW5kIGluIGNvbnN0cmFpbmVkCitibG9jayBkZXZpY2UvbWVtb3J5IHN5c3RlbXMgKGUuZy4gZW1iZWRkZWQgc3lzdGVtcykgd2hlcmUgbG93IG92ZXJoZWFkIGlzCituZWVkZWQuCisKK01haWxpbmcgbGlzdDogc3F1YXNoZnMtZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0CitXZWIgc2l0ZTogd3d3LnNxdWFzaGZzLm9yZworCisxLiBGSUxFU1lTVEVNIEZFQVRVUkVTCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NxdWFzaGZzIGZpbGVzeXN0ZW0gZmVhdHVyZXMgdmVyc3VzIENyYW1mczoKKworCQkJCVNxdWFzaGZzCQlDcmFtZnMKKworTWF4IGZpbGVzeXN0ZW0gc2l6ZToJCTJeNjQJCQkyNTYgTWlCCitNYXggZmlsZSBzaXplOgkJCX4gMiBUaUIJCQkxNiBNaUIKK01heCBmaWxlczoJCQl1bmxpbWl0ZWQJCXVubGltaXRlZAorTWF4IGRpcmVjdG9yaWVzOgkJdW5saW1pdGVkCQl1bmxpbWl0ZWQKK01heCBlbnRyaWVzIHBlciBkaXJlY3Rvcnk6CXVubGltaXRlZAkJdW5saW1pdGVkCitNYXggYmxvY2sgc2l6ZToJCQkxIE1pQgkJCTQgS2lCCitNZXRhZGF0YSBjb21wcmVzc2lvbjoJCXllcwkJCW5vCitEaXJlY3RvcnkgaW5kZXhlczoJCXllcwkJCW5vCitTcGFyc2UgZmlsZSBzdXBwb3J0OgkJeWVzCQkJbm8KK1RhaWwtZW5kIHBhY2tpbmcgKGZyYWdtZW50cyk6CXllcwkJCW5vCitFeHBvcnRhYmxlIChORlMgZXRjLik6CQl5ZXMJCQlubworSGFyZCBsaW5rIHN1cHBvcnQ6CQl5ZXMJCQlubworIi4iIGFuZCAiLi4iIGluIHJlYWRkaXI6CXllcwkJCW5vCitSZWFsIGlub2RlIG51bWJlcnM6CQl5ZXMJCQlubworMzItYml0IHVpZHMvZ2lkczoJCXllcwkJCW5vCitGaWxlIGNyZWF0aW9uIHRpbWU6CQl5ZXMJCQlubworWGF0dHIgc3VwcG9ydDoJCQl5ZXMJCQlubworQUNMIHN1cHBvcnQ6CQkJbm8JCQlubworCitTcXVhc2hmcyBjb21wcmVzc2VzIGRhdGEsIGlub2RlcyBhbmQgZGlyZWN0b3JpZXMuICBJbiBhZGRpdGlvbiwgaW5vZGUgYW5kCitkaXJlY3RvcnkgZGF0YSBhcmUgaGlnaGx5IGNvbXBhY3RlZCwgYW5kIHBhY2tlZCBvbiBieXRlIGJvdW5kYXJpZXMuICBFYWNoCitjb21wcmVzc2VkIGlub2RlIGlzIG9uIGF2ZXJhZ2UgOCBieXRlcyBpbiBsZW5ndGggKHRoZSBleGFjdCBsZW5ndGggdmFyaWVzIG9uCitmaWxlIHR5cGUsIGkuZS4gcmVndWxhciBmaWxlLCBkaXJlY3RvcnksIHN5bWJvbGljIGxpbmssIGFuZCBibG9jay9jaGFyIGRldmljZQoraW5vZGVzIGhhdmUgZGlmZmVyZW50IHNpemVzKS4KKworMi4gVVNJTkcgU1FVQVNIRlMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK0FzIHNxdWFzaGZzIGlzIGEgcmVhZC1vbmx5IGZpbGVzeXN0ZW0sIHRoZSBta3NxdWFzaGZzIHByb2dyYW0gbXVzdCBiZSB1c2VkIHRvCitjcmVhdGUgcG9wdWxhdGVkIHNxdWFzaGZzIGZpbGVzeXN0ZW1zLiAgVGhpcyBhbmQgb3RoZXIgc3F1YXNoZnMgdXRpbGl0aWVzCitjYW4gYmUgb2J0YWluZWQgZnJvbSBodHRwOi8vd3d3LnNxdWFzaGZzLm9yZy4gIFVzYWdlIGluc3RydWN0aW9ucyBjYW4gYmUKK29idGFpbmVkIGZyb20gdGhpcyBzaXRlIGFsc28uCisKK1RoZSBzcXVhc2hmcy10b29scyBkZXZlbG9wbWVudCB0cmVlIGlzIG5vdyBsb2NhdGVkIG9uIGtlcm5lbC5vcmcKKwlnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2ZzL3NxdWFzaGZzL3NxdWFzaGZzLXRvb2xzLmdpdAorCiszLiBTUVVBU0hGUyBGSUxFU1lTVEVNIERFU0lHTgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSBzcXVhc2hmcyBmaWxlc3lzdGVtIGNvbnNpc3RzIG9mIGEgbWF4aW11bSBvZiBuaW5lIHBhcnRzLCBwYWNrZWQgdG9nZXRoZXIgb24gYQorYnl0ZSBhbGlnbm1lbnQ6CisKKwkgLS0tLS0tLS0tLS0tLS0tCisJfCAgc3VwZXJibG9jayAJfAorCXwtLS0tLS0tLS0tLS0tLS18CisJfCAgY29tcHJlc3Npb24gIHwKKwl8ICAgIG9wdGlvbnMgICAgfAorCXwtLS0tLS0tLS0tLS0tLS18CisJfCAgZGF0YWJsb2NrcyAgIHwKKwl8ICAmIGZyYWdtZW50cyAgfAorCXwtLS0tLS0tLS0tLS0tLS18CisJfCAgaW5vZGUgdGFibGUJfAorCXwtLS0tLS0tLS0tLS0tLS18CisJfCAgIGRpcmVjdG9yeQl8CisJfCAgICAgdGFibGUgICAgIHwKKwl8LS0tLS0tLS0tLS0tLS0tfAorCXwgICBmcmFnbWVudAl8CisJfCAgICB0YWJsZSAgICAgIHwKKwl8LS0tLS0tLS0tLS0tLS0tfAorCXwgICAgZXhwb3J0ICAgICB8CisJfCAgICB0YWJsZSAgICAgIHwKKwl8LS0tLS0tLS0tLS0tLS0tfAorCXwgICAgdWlkL2dpZAl8CisJfCAgbG9va3VwIHRhYmxlCXwKKwl8LS0tLS0tLS0tLS0tLS0tfAorCXwgICAgIHhhdHRyICAgICB8CisJfCAgICAgdGFibGUJfAorCSAtLS0tLS0tLS0tLS0tLS0KKworQ29tcHJlc3NlZCBkYXRhIGJsb2NrcyBhcmUgd3JpdHRlbiB0byB0aGUgZmlsZXN5c3RlbSBhcyBmaWxlcyBhcmUgcmVhZCBmcm9tCit0aGUgc291cmNlIGRpcmVjdG9yeSwgYW5kIGNoZWNrZWQgZm9yIGR1cGxpY2F0ZXMuICBPbmNlIGFsbCBmaWxlIGRhdGEgaGFzIGJlZW4KK3dyaXR0ZW4gdGhlIGNvbXBsZXRlZCBpbm9kZSwgZGlyZWN0b3J5LCBmcmFnbWVudCwgZXhwb3J0LCB1aWQvZ2lkIGxvb2t1cCBhbmQKK3hhdHRyIHRhYmxlcyBhcmUgd3JpdHRlbi4KKworMy4xIENvbXByZXNzaW9uIG9wdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvbXByZXNzb3JzIGNhbiBvcHRpb25hbGx5IHN1cHBvcnQgY29tcHJlc3Npb24gc3BlY2lmaWMgb3B0aW9ucyAoZS5nLgorZGljdGlvbmFyeSBzaXplKS4gIElmIG5vbi1kZWZhdWx0IGNvbXByZXNzaW9uIG9wdGlvbnMgaGF2ZSBiZWVuIHVzZWQsIHRoZW4KK3RoZXNlIGFyZSBzdG9yZWQgaGVyZS4KKworMy4yIElub2RlcworLS0tLS0tLS0tLQorCitNZXRhZGF0YSAoaW5vZGVzIGFuZCBkaXJlY3RvcmllcykgYXJlIGNvbXByZXNzZWQgaW4gOEtieXRlIGJsb2Nrcy4gIEVhY2gKK2NvbXByZXNzZWQgYmxvY2sgaXMgcHJlZml4ZWQgYnkgYSB0d28gYnl0ZSBsZW5ndGgsIHRoZSB0b3AgYml0IGlzIHNldCBpZiB0aGUKK2Jsb2NrIGlzIHVuY29tcHJlc3NlZC4gIEEgYmxvY2sgd2lsbCBiZSB1bmNvbXByZXNzZWQgaWYgdGhlIC1ub0kgb3B0aW9uIGlzIHNldCwKK29yIGlmIHRoZSBjb21wcmVzc2VkIGJsb2NrIHdhcyBsYXJnZXIgdGhhbiB0aGUgdW5jb21wcmVzc2VkIGJsb2NrLgorCitJbm9kZXMgYXJlIHBhY2tlZCBpbnRvIHRoZSBtZXRhZGF0YSBibG9ja3MsIGFuZCBhcmUgbm90IGFsaWduZWQgdG8gYmxvY2sKK2JvdW5kYXJpZXMsIHRoZXJlZm9yZSBpbm9kZXMgb3ZlcmxhcCBjb21wcmVzc2VkIGJsb2Nrcy4gIElub2RlcyBhcmUgaWRlbnRpZmllZAorYnkgYSA0OC1iaXQgbnVtYmVyIHdoaWNoIGVuY29kZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBjb21wcmVzc2VkIG1ldGFkYXRhIGJsb2NrCitjb250YWluaW5nIHRoZSBpbm9kZSwgYW5kIHRoZSBieXRlIG9mZnNldCBpbnRvIHRoYXQgYmxvY2sgd2hlcmUgdGhlIGlub2RlIGlzCitwbGFjZWQgKDxibG9jaywgb2Zmc2V0PikuCisKK1RvIG1heGltaXNlIGNvbXByZXNzaW9uIHRoZXJlIGFyZSBkaWZmZXJlbnQgaW5vZGVzIGZvciBlYWNoIGZpbGUgdHlwZQorKHJlZ3VsYXIgZmlsZSwgZGlyZWN0b3J5LCBkZXZpY2UsIGV0Yy4pLCB0aGUgaW5vZGUgY29udGVudHMgYW5kIGxlbmd0aAordmFyeWluZyB3aXRoIHRoZSB0eXBlLgorCitUbyBmdXJ0aGVyIG1heGltaXNlIGNvbXByZXNzaW9uLCB0d28gdHlwZXMgb2YgcmVndWxhciBmaWxlIGlub2RlIGFuZAorZGlyZWN0b3J5IGlub2RlIGFyZSBkZWZpbmVkOiBpbm9kZXMgb3B0aW1pc2VkIGZvciBmcmVxdWVudGx5IG9jY3VycmluZworcmVndWxhciBmaWxlcyBhbmQgZGlyZWN0b3JpZXMsIGFuZCBleHRlbmRlZCB0eXBlcyB3aGVyZSBleHRyYQoraW5mb3JtYXRpb24gaGFzIHRvIGJlIHN0b3JlZC4KKworMy4zIERpcmVjdG9yaWVzCistLS0tLS0tLS0tLS0tLS0KKworTGlrZSBpbm9kZXMsIGRpcmVjdG9yaWVzIGFyZSBwYWNrZWQgaW50byBjb21wcmVzc2VkIG1ldGFkYXRhIGJsb2Nrcywgc3RvcmVkCitpbiBhIGRpcmVjdG9yeSB0YWJsZS4gIERpcmVjdG9yaWVzIGFyZSBhY2Nlc3NlZCB1c2luZyB0aGUgc3RhcnQgYWRkcmVzcyBvZgordGhlIG1ldGFibG9jayBjb250YWluaW5nIHRoZSBkaXJlY3RvcnkgYW5kIHRoZSBvZmZzZXQgaW50byB0aGUKK2RlY29tcHJlc3NlZCBibG9jayAoPGJsb2NrLCBvZmZzZXQ+KS4KKworRGlyZWN0b3JpZXMgYXJlIG9yZ2FuaXNlZCBpbiBhIHNsaWdodGx5IGNvbXBsZXggd2F5LCBhbmQgYXJlIG5vdCBzaW1wbHkKK2EgbGlzdCBvZiBmaWxlIG5hbWVzLiAgVGhlIG9yZ2FuaXNhdGlvbiB0YWtlcyBhZHZhbnRhZ2Ugb2YgdGhlCitmYWN0IHRoYXQgKGluIG1vc3QgY2FzZXMpIHRoZSBpbm9kZXMgb2YgdGhlIGZpbGVzIHdpbGwgYmUgaW4gdGhlIHNhbWUKK2NvbXByZXNzZWQgbWV0YWRhdGEgYmxvY2ssIGFuZCB0aGVyZWZvcmUsIGNhbiBzaGFyZSB0aGUgc3RhcnQgYmxvY2suCitEaXJlY3RvcmllcyBhcmUgdGhlcmVmb3JlIG9yZ2FuaXNlZCBpbiBhIHR3byBsZXZlbCBsaXN0LCBhIGRpcmVjdG9yeQoraGVhZGVyIGNvbnRhaW5pbmcgdGhlIHNoYXJlZCBzdGFydCBibG9jayB2YWx1ZSwgYW5kIGEgc2VxdWVuY2Ugb2YgZGlyZWN0b3J5CitlbnRyaWVzLCBlYWNoIG9mIHdoaWNoIHNoYXJlIHRoZSBzaGFyZWQgc3RhcnQgYmxvY2suICBBIG5ldyBkaXJlY3RvcnkgaGVhZGVyCitpcyB3cml0dGVuIG9uY2UvaWYgdGhlIGlub2RlIHN0YXJ0IGJsb2NrIGNoYW5nZXMuICBUaGUgZGlyZWN0b3J5CitoZWFkZXIvZGlyZWN0b3J5IGVudHJ5IGxpc3QgaXMgcmVwZWF0ZWQgYXMgbWFueSB0aW1lcyBhcyBuZWNlc3NhcnkuCisKK0RpcmVjdG9yaWVzIGFyZSBzb3J0ZWQsIGFuZCBjYW4gY29udGFpbiBhIGRpcmVjdG9yeSBpbmRleCB0byBzcGVlZCB1cAorZmlsZSBsb29rdXAuICBEaXJlY3RvcnkgaW5kZXhlcyBzdG9yZSBvbmUgZW50cnkgcGVyIG1ldGFibG9jaywgZWFjaCBlbnRyeQorc3RvcmluZyB0aGUgaW5kZXgvZmlsZW5hbWUgbWFwcGluZyB0byB0aGUgZmlyc3QgZGlyZWN0b3J5IGhlYWRlcgoraW4gZWFjaCBtZXRhZGF0YSBibG9jay4gIERpcmVjdG9yaWVzIGFyZSBzb3J0ZWQgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLAorYW5kIGF0IGxvb2t1cCB0aGUgaW5kZXggaXMgc2Nhbm5lZCBsaW5lYXJseSBsb29raW5nIGZvciB0aGUgZmlyc3QgZmlsZW5hbWUKK2FscGhhYmV0aWNhbGx5IGxhcmdlciB0aGFuIHRoZSBmaWxlbmFtZSBiZWluZyBsb29rZWQgdXAuICBBdCB0aGlzIHBvaW50IHRoZQorbG9jYXRpb24gb2YgdGhlIG1ldGFkYXRhIGJsb2NrIHRoZSBmaWxlbmFtZSBpcyBpbiBoYXMgYmVlbiBmb3VuZC4KK1RoZSBnZW5lcmFsIGlkZWEgb2YgdGhlIGluZGV4IGlzIHRvIGVuc3VyZSBvbmx5IG9uZSBtZXRhZGF0YSBibG9jayBuZWVkcyB0byBiZQorZGVjb21wcmVzc2VkIHRvIGRvIGEgbG9va3VwIGlycmVzcGVjdGl2ZSBvZiB0aGUgbGVuZ3RoIG9mIHRoZSBkaXJlY3RvcnkuCitUaGlzIHNjaGVtZSBoYXMgdGhlIGFkdmFudGFnZSB0aGF0IGl0IGRvZXNuJ3QgcmVxdWlyZSBleHRyYSBtZW1vcnkgb3ZlcmhlYWQKK2FuZCBkb2Vzbid0IHJlcXVpcmUgbXVjaCBleHRyYSBzdG9yYWdlIG9uIGRpc2suCisKKzMuNCBGaWxlIGRhdGEKKy0tLS0tLS0tLS0tLS0KKworUmVndWxhciBmaWxlcyBjb25zaXN0IG9mIGEgc2VxdWVuY2Ugb2YgY29udGlndW91cyBjb21wcmVzc2VkIGJsb2NrcywgYW5kL29yIGEKK2NvbXByZXNzZWQgZnJhZ21lbnQgYmxvY2sgKHRhaWwtZW5kIHBhY2tlZCBibG9jaykuICAgVGhlIGNvbXByZXNzZWQgc2l6ZQorb2YgZWFjaCBkYXRhYmxvY2sgaXMgc3RvcmVkIGluIGEgYmxvY2sgbGlzdCBjb250YWluZWQgd2l0aGluIHRoZQorZmlsZSBpbm9kZS4KKworVG8gc3BlZWQgdXAgYWNjZXNzIHRvIGRhdGFibG9ja3Mgd2hlbiByZWFkaW5nICdsYXJnZScgZmlsZXMgKDI1NiBNYnl0ZXMgb3IKK2xhcmdlciksIHRoZSBjb2RlIGltcGxlbWVudHMgYW4gaW5kZXggY2FjaGUgdGhhdCBjYWNoZXMgdGhlIG1hcHBpbmcgZnJvbQorYmxvY2sgaW5kZXggdG8gZGF0YWJsb2NrIGxvY2F0aW9uIG9uIGRpc2suCisKK1RoZSBpbmRleCBjYWNoZSBhbGxvd3MgU3F1YXNoZnMgdG8gaGFuZGxlIGxhcmdlIGZpbGVzICh1cCB0byAxLjc1IFRpQikgd2hpbGUKK3JldGFpbmluZyBhIHNpbXBsZSBhbmQgc3BhY2UtZWZmaWNpZW50IGJsb2NrIGxpc3Qgb24gZGlzay4gIFRoZSBjYWNoZQoraXMgc3BsaXQgaW50byBzbG90cywgY2FjaGluZyB1cCB0byBlaWdodCAyMjQgR2lCIGZpbGVzICgxMjggS2lCIGJsb2NrcykuCitMYXJnZXIgZmlsZXMgdXNlIG11bHRpcGxlIHNsb3RzLCB3aXRoIDEuNzUgVGlCIGZpbGVzIHVzaW5nIGFsbCA4IHNsb3RzLgorVGhlIGluZGV4IGNhY2hlIGlzIGRlc2lnbmVkIHRvIGJlIG1lbW9yeSBlZmZpY2llbnQsIGFuZCBieSBkZWZhdWx0IHVzZXMKKzE2IEtpQi4KKworMy41IEZyYWdtZW50IGxvb2t1cCB0YWJsZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZWd1bGFyIGZpbGVzIGNhbiBjb250YWluIGEgZnJhZ21lbnQgaW5kZXggd2hpY2ggaXMgbWFwcGVkIHRvIGEgZnJhZ21lbnQKK2xvY2F0aW9uIG9uIGRpc2sgYW5kIGNvbXByZXNzZWQgc2l6ZSB1c2luZyBhIGZyYWdtZW50IGxvb2t1cCB0YWJsZS4gIFRoaXMKK2ZyYWdtZW50IGxvb2t1cCB0YWJsZSBpcyBpdHNlbGYgc3RvcmVkIGNvbXByZXNzZWQgaW50byBtZXRhZGF0YSBibG9ja3MuCitBIHNlY29uZCBpbmRleCB0YWJsZSBpcyB1c2VkIHRvIGxvY2F0ZSB0aGVzZS4gIFRoaXMgc2Vjb25kIGluZGV4IHRhYmxlIGZvcgorc3BlZWQgb2YgYWNjZXNzIChhbmQgYmVjYXVzZSBpdCBpcyBzbWFsbCkgaXMgcmVhZCBhdCBtb3VudCB0aW1lIGFuZCBjYWNoZWQKK2luIG1lbW9yeS4KKworMy42IFVpZC9naWQgbG9va3VwIHRhYmxlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRm9yIHNwYWNlIGVmZmljaWVuY3kgcmVndWxhciBmaWxlcyBzdG9yZSB1aWQgYW5kIGdpZCBpbmRleGVzLCB3aGljaCBhcmUKK2NvbnZlcnRlZCB0byAzMi1iaXQgdWlkcy9naWRzIHVzaW5nIGFuIGlkIGxvb2sgdXAgdGFibGUuICBUaGlzIHRhYmxlIGlzCitzdG9yZWQgY29tcHJlc3NlZCBpbnRvIG1ldGFkYXRhIGJsb2Nrcy4gIEEgc2Vjb25kIGluZGV4IHRhYmxlIGlzIHVzZWQgdG8KK2xvY2F0ZSB0aGVzZS4gIFRoaXMgc2Vjb25kIGluZGV4IHRhYmxlIGZvciBzcGVlZCBvZiBhY2Nlc3MgKGFuZCBiZWNhdXNlIGl0CitpcyBzbWFsbCkgaXMgcmVhZCBhdCBtb3VudCB0aW1lIGFuZCBjYWNoZWQgaW4gbWVtb3J5LgorCiszLjcgRXhwb3J0IHRhYmxlCistLS0tLS0tLS0tLS0tLS0tCisKK1RvIGVuYWJsZSBTcXVhc2hmcyBmaWxlc3lzdGVtcyB0byBiZSBleHBvcnRhYmxlICh2aWEgTkZTIGV0Yy4pIGZpbGVzeXN0ZW1zCitjYW4gb3B0aW9uYWxseSAoZGlzYWJsZWQgd2l0aCB0aGUgLW5vLWV4cG9ydHMgTWtzcXVhc2hmcyBvcHRpb24pIGNvbnRhaW4KK2FuIGlub2RlIG51bWJlciB0byBpbm9kZSBkaXNrIGxvY2F0aW9uIGxvb2t1cCB0YWJsZS4gIFRoaXMgaXMgcmVxdWlyZWQgdG8KK2VuYWJsZSBTcXVhc2hmcyB0byBtYXAgaW5vZGUgbnVtYmVycyBwYXNzZWQgaW4gZmlsZWhhbmRsZXMgdG8gdGhlIGlub2RlCitsb2NhdGlvbiBvbiBkaXNrLCB3aGljaCBpcyBuZWNlc3Nhcnkgd2hlbiB0aGUgZXhwb3J0IGNvZGUgcmVpbnN0YW50aWF0ZXMKK2V4cGlyZWQvZmx1c2hlZCBpbm9kZXMuCisKK1RoaXMgdGFibGUgaXMgc3RvcmVkIGNvbXByZXNzZWQgaW50byBtZXRhZGF0YSBibG9ja3MuICBBIHNlY29uZCBpbmRleCB0YWJsZSBpcwordXNlZCB0byBsb2NhdGUgdGhlc2UuICBUaGlzIHNlY29uZCBpbmRleCB0YWJsZSBmb3Igc3BlZWQgb2YgYWNjZXNzIChhbmQgYmVjYXVzZQoraXQgaXMgc21hbGwpIGlzIHJlYWQgYXQgbW91bnQgdGltZSBhbmQgY2FjaGVkIGluIG1lbW9yeS4KKworMy44IFhhdHRyIHRhYmxlCistLS0tLS0tLS0tLS0tLS0KKworVGhlIHhhdHRyIHRhYmxlIGNvbnRhaW5zIGV4dGVuZGVkIGF0dHJpYnV0ZXMgZm9yIGVhY2ggaW5vZGUuICBUaGUgeGF0dHJzCitmb3IgZWFjaCBpbm9kZSBhcmUgc3RvcmVkIGluIGEgbGlzdCwgZWFjaCBsaXN0IGVudHJ5IGNvbnRhaW5pbmcgYSB0eXBlLAorbmFtZSBhbmQgdmFsdWUgZmllbGQuICBUaGUgdHlwZSBmaWVsZCBlbmNvZGVzIHRoZSB4YXR0ciBwcmVmaXgKKygidXNlci4iLCAidHJ1c3RlZC4iIGV0YykgYW5kIGl0IGFsc28gZW5jb2RlcyBob3cgdGhlIG5hbWUvdmFsdWUgZmllbGRzCitzaG91bGQgYmUgaW50ZXJwcmV0ZWQuICBDdXJyZW50bHkgdGhlIHR5cGUgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHZhbHVlCitpcyBzdG9yZWQgaW5saW5lIChpbiB3aGljaCBjYXNlIHRoZSB2YWx1ZSBmaWVsZCBjb250YWlucyB0aGUgeGF0dHIgdmFsdWUpLAorb3IgaWYgaXQgaXMgc3RvcmVkIG91dCBvZiBsaW5lIChpbiB3aGljaCBjYXNlIHRoZSB2YWx1ZSBmaWVsZCBzdG9yZXMgYQorcmVmZXJlbmNlIHRvIHdoZXJlIHRoZSBhY3R1YWwgdmFsdWUgaXMgc3RvcmVkKS4gIFRoaXMgYWxsb3dzIGxhcmdlIHZhbHVlcwordG8gYmUgc3RvcmVkIG91dCBvZiBsaW5lIGltcHJvdmluZyBzY2FubmluZyBhbmQgbG9va3VwIHBlcmZvcm1hbmNlIGFuZCBpdAorYWxzbyBhbGxvd3MgdmFsdWVzIHRvIGJlIGRlLWR1cGxpY2F0ZWQsIHRoZSB2YWx1ZSBiZWluZyBzdG9yZWQgb25jZSwgYW5kCithbGwgb3RoZXIgb2NjdXJyZW5jZXMgaG9sZGluZyBhbiBvdXQgb2YgbGluZSByZWZlcmVuY2UgdG8gdGhhdCB2YWx1ZS4KKworVGhlIHhhdHRyIGxpc3RzIGFyZSBwYWNrZWQgaW50byBjb21wcmVzc2VkIDhLIG1ldGFkYXRhIGJsb2Nrcy4KK1RvIHJlZHVjZSBvdmVyaGVhZCBpbiBpbm9kZXMsIHJhdGhlciB0aGFuIHN0b3JpbmcgdGhlIG9uLWRpc2sKK2xvY2F0aW9uIG9mIHRoZSB4YXR0ciBsaXN0IGluc2lkZSBlYWNoIGlub2RlLCBhIDMyLWJpdCB4YXR0ciBpZAoraXMgc3RvcmVkLiAgVGhpcyB4YXR0ciBpZCBpcyBtYXBwZWQgaW50byB0aGUgbG9jYXRpb24gb2YgdGhlIHhhdHRyCitsaXN0IHVzaW5nIGEgc2Vjb25kIHhhdHRyIGlkIGxvb2t1cCB0YWJsZS4KKworNC4gVE9ET1MgQU5EIE9VVFNUQU5ESU5HIElTU1VFUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis0LjEgVG9kbyBsaXN0CistLS0tLS0tLS0tLS0tCisKK0ltcGxlbWVudCBBQ0wgc3VwcG9ydC4KKworNC4yIFNxdWFzaGZzIGludGVybmFsIGNhY2hlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQmxvY2tzIGluIFNxdWFzaGZzIGFyZSBjb21wcmVzc2VkLiAgVG8gYXZvaWQgcmVwZWF0ZWRseSBkZWNvbXByZXNzaW5nCityZWNlbnRseSBhY2Nlc3NlZCBkYXRhIFNxdWFzaGZzIHVzZXMgdHdvIHNtYWxsIG1ldGFkYXRhIGFuZCBmcmFnbWVudCBjYWNoZXMuCisKK1RoZSBjYWNoZSBpcyBub3QgdXNlZCBmb3IgZmlsZSBkYXRhYmxvY2tzLCB0aGVzZSBhcmUgZGVjb21wcmVzc2VkIGFuZCBjYWNoZWQgaW4KK3RoZSBwYWdlLWNhY2hlIGluIHRoZSBub3JtYWwgd2F5LiAgVGhlIGNhY2hlIGlzIHVzZWQgdG8gdGVtcG9yYXJpbHkgY2FjaGUKK2ZyYWdtZW50IGFuZCBtZXRhZGF0YSBibG9ja3Mgd2hpY2ggaGF2ZSBiZWVuIHJlYWQgYXMgYSByZXN1bHQgb2YgYSBtZXRhZGF0YQorKGkuZS4gaW5vZGUgb3IgZGlyZWN0b3J5KSBvciBmcmFnbWVudCBhY2Nlc3MuICBCZWNhdXNlIG1ldGFkYXRhIGFuZCBmcmFnbWVudHMKK2FyZSBwYWNrZWQgdG9nZXRoZXIgaW50byBibG9ja3MgKHRvIGdhaW4gZ3JlYXRlciBjb21wcmVzc2lvbikgdGhlIHJlYWQgb2YgYQorcGFydGljdWxhciBwaWVjZSBvZiBtZXRhZGF0YSBvciBmcmFnbWVudCB3aWxsIHJldHJpZXZlIG90aGVyIG1ldGFkYXRhL2ZyYWdtZW50cword2hpY2ggaGF2ZSBiZWVuIHBhY2tlZCB3aXRoIGl0LCB0aGVzZSBiZWNhdXNlIG9mIGxvY2FsaXR5LW9mLXJlZmVyZW5jZSBtYXkgYmUKK3JlYWQgaW4gdGhlIG5lYXIgZnV0dXJlLiBUZW1wb3JhcmlseSBjYWNoaW5nIHRoZW0gZW5zdXJlcyB0aGV5IGFyZSBhdmFpbGFibGUKK2ZvciBuZWFyIGZ1dHVyZSBhY2Nlc3Mgd2l0aG91dCByZXF1aXJpbmcgYW4gYWRkaXRpb25hbCByZWFkIGFuZCBkZWNvbXByZXNzLgorCitJbiB0aGUgZnV0dXJlIHRoaXMgaW50ZXJuYWwgY2FjaGUgbWF5IGJlIHJlcGxhY2VkIHdpdGggYW4gaW1wbGVtZW50YXRpb24gd2hpY2gKK3VzZXMgdGhlIGtlcm5lbCBwYWdlIGNhY2hlLiAgQmVjYXVzZSB0aGUgcGFnZSBjYWNoZSBvcGVyYXRlcyBvbiBwYWdlIHNpemVkCit1bml0cyB0aGlzIG1heSBpbnRyb2R1Y2UgYWRkaXRpb25hbCBjb21wbGV4aXR5IGluIHRlcm1zIG9mIGxvY2tpbmcgYW5kCithc3NvY2lhdGVkIHJhY2UgY29uZGl0aW9ucy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvc3lzZnMtcGNpLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvc3lzZnMtcGNpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGVhYWMyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zeXNmcy1wY2kudHh0CkBAIC0wLDAgKzEsMTIwIEBACitBY2Nlc3NpbmcgUENJIGRldmljZSByZXNvdXJjZXMgdGhyb3VnaCBzeXNmcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3lzZnMsIHVzdWFsbHkgbW91bnRlZCBhdCAvc3lzLCBwcm92aWRlcyBhY2Nlc3MgdG8gUENJIHJlc291cmNlcyBvbiBwbGF0Zm9ybXMKK3RoYXQgc3VwcG9ydCBpdC4gIEZvciBleGFtcGxlLCBhIGdpdmVuIGJ1cyBtaWdodCBsb29rIGxpa2UgdGhpczoKKworICAgICAvc3lzL2RldmljZXMvcGNpMDAwMDoxNworICAgICB8LS0gMDAwMDoxNzowMC4wCisgICAgIHwgICB8LS0gY2xhc3MKKyAgICAgfCAgIHwtLSBjb25maWcKKyAgICAgfCAgIHwtLSBkZXZpY2UKKyAgICAgfCAgIHwtLSBlbmFibGUKKyAgICAgfCAgIHwtLSBpcnEKKyAgICAgfCAgIHwtLSBsb2NhbF9jcHVzCisgICAgIHwgICB8LS0gcmVtb3ZlCisgICAgIHwgICB8LS0gcmVzb3VyY2UKKyAgICAgfCAgIHwtLSByZXNvdXJjZTAKKyAgICAgfCAgIHwtLSByZXNvdXJjZTEKKyAgICAgfCAgIHwtLSByZXNvdXJjZTIKKyAgICAgfCAgIHwtLSByb20KKyAgICAgfCAgIHwtLSBzdWJzeXN0ZW1fZGV2aWNlCisgICAgIHwgICB8LS0gc3Vic3lzdGVtX3ZlbmRvcgorICAgICB8ICAgYC0tIHZlbmRvcgorICAgICBgLS0gLi4uCisKK1RoZSB0b3Btb3N0IGVsZW1lbnQgZGVzY3JpYmVzIHRoZSBQQ0kgZG9tYWluIGFuZCBidXMgbnVtYmVyLiAgSW4gdGhpcyBjYXNlLAordGhlIGRvbWFpbiBudW1iZXIgaXMgMDAwMCBhbmQgdGhlIGJ1cyBudW1iZXIgaXMgMTcgKGJvdGggdmFsdWVzIGFyZSBpbiBoZXgpLgorVGhpcyBidXMgY29udGFpbnMgYSBzaW5nbGUgZnVuY3Rpb24gZGV2aWNlIGluIHNsb3QgMC4gIFRoZSBkb21haW4gYW5kIGJ1cworbnVtYmVycyBhcmUgcmVwcm9kdWNlZCBmb3IgY29udmVuaWVuY2UuICBVbmRlciB0aGUgZGV2aWNlIGRpcmVjdG9yeSBhcmUgc2V2ZXJhbAorZmlsZXMsIGVhY2ggd2l0aCB0aGVpciBvd24gZnVuY3Rpb24uCisKKyAgICAgICBmaWxlCQkgICBmdW5jdGlvbgorICAgICAgIC0tLS0JCSAgIC0tLS0tLS0tCisgICAgICAgY2xhc3MJCSAgIFBDSSBjbGFzcyAoYXNjaWksIHJvKQorICAgICAgIGNvbmZpZwkJICAgUENJIGNvbmZpZyBzcGFjZSAoYmluYXJ5LCBydykKKyAgICAgICBkZXZpY2UJCSAgIFBDSSBkZXZpY2UgKGFzY2lpLCBybykKKyAgICAgICBlbmFibGUJICAgICAgICAgICBXaGV0aGVyIHRoZSBkZXZpY2UgaXMgZW5hYmxlZCAoYXNjaWksIHJ3KQorICAgICAgIGlycQkJICAgSVJRIG51bWJlciAoYXNjaWksIHJvKQorICAgICAgIGxvY2FsX2NwdXMJICAgbmVhcmJ5IENQVSBtYXNrIChjcHVtYXNrLCBybykKKyAgICAgICByZW1vdmUJCSAgIHJlbW92ZSBkZXZpY2UgZnJvbSBrZXJuZWwncyBsaXN0IChhc2NpaSwgd28pCisgICAgICAgcmVzb3VyY2UJCSAgIFBDSSByZXNvdXJjZSBob3N0IGFkZHJlc3NlcyAoYXNjaWksIHJvKQorICAgICAgIHJlc291cmNlMC4uTgkgICBQQ0kgcmVzb3VyY2UgTiwgaWYgcHJlc2VudCAoYmluYXJ5LCBtbWFwLCByd1sxXSkKKyAgICAgICByZXNvdXJjZTBfd2MuLk5fd2MgIFBDSSBXQyBtYXAgcmVzb3VyY2UgTiwgaWYgcHJlZmV0Y2hhYmxlIChiaW5hcnksIG1tYXApCisgICAgICAgcm9tCQkgICBQQ0kgUk9NIHJlc291cmNlLCBpZiBwcmVzZW50IChiaW5hcnksIHJvKQorICAgICAgIHN1YnN5c3RlbV9kZXZpY2UJICAgUENJIHN1YnN5c3RlbSBkZXZpY2UgKGFzY2lpLCBybykKKyAgICAgICBzdWJzeXN0ZW1fdmVuZG9yCSAgIFBDSSBzdWJzeXN0ZW0gdmVuZG9yIChhc2NpaSwgcm8pCisgICAgICAgdmVuZG9yCQkgICBQQ0kgdmVuZG9yIChhc2NpaSwgcm8pCisKKyAgcm8gLSByZWFkIG9ubHkgZmlsZQorICBydyAtIGZpbGUgaXMgcmVhZGFibGUgYW5kIHdyaXRhYmxlCisgIHdvIC0gd3JpdGUgb25seSBmaWxlCisgIG1tYXAgLSBmaWxlIGlzIG1tYXBhYmxlCisgIGFzY2lpIC0gZmlsZSBjb250YWlucyBhc2NpaSB0ZXh0CisgIGJpbmFyeSAtIGZpbGUgY29udGFpbnMgYmluYXJ5IGRhdGEKKyAgY3B1bWFzayAtIGZpbGUgY29udGFpbnMgYSBjcHVtYXNrIHR5cGUKKworWzFdIHJ3IGZvciBSRVNPVVJDRV9JTyAoSS9PIHBvcnQpIHJlZ2lvbnMgb25seQorCitUaGUgcmVhZCBvbmx5IGZpbGVzIGFyZSBpbmZvcm1hdGlvbmFsLCB3cml0ZXMgdG8gdGhlbSB3aWxsIGJlIGlnbm9yZWQsIHdpdGgKK3RoZSBleGNlcHRpb24gb2YgdGhlICdyb20nIGZpbGUuICBXcml0YWJsZSBmaWxlcyBjYW4gYmUgdXNlZCB0byBwZXJmb3JtCithY3Rpb25zIG9uIHRoZSBkZXZpY2UgKGUuZy4gY2hhbmdpbmcgY29uZmlnIHNwYWNlLCBkZXRhY2hpbmcgYSBkZXZpY2UpLgorbW1hcGFibGUgZmlsZXMgYXJlIGF2YWlsYWJsZSB2aWEgYW4gbW1hcCBvZiB0aGUgZmlsZSBhdCBvZmZzZXQgMCBhbmQgY2FuIGJlCit1c2VkIHRvIGRvIGFjdHVhbCBkZXZpY2UgcHJvZ3JhbW1pbmcgZnJvbSB1c2Vyc3BhY2UuICBOb3RlIHRoYXQgc29tZSBwbGF0Zm9ybXMKK2Rvbid0IHN1cHBvcnQgbW1hcHBpbmcgb2YgY2VydGFpbiByZXNvdXJjZXMsIHNvIGJlIHN1cmUgdG8gY2hlY2sgdGhlIHJldHVybgordmFsdWUgZnJvbSBhbnkgYXR0ZW1wdGVkIG1tYXAuICBUaGUgbW9zdCBub3RhYmxlIG9mIHRoZXNlIGFyZSBJL08gcG9ydAorcmVzb3VyY2VzLCB3aGljaCBhbHNvIHByb3ZpZGUgcmVhZC93cml0ZSBhY2Nlc3MuCisKK1RoZSAnZW5hYmxlJyBmaWxlIHByb3ZpZGVzIGEgY291bnRlciB0aGF0IGluZGljYXRlcyBob3cgbWFueSB0aW1lcyB0aGUgZGV2aWNlIAoraGFzIGJlZW4gZW5hYmxlZC4gIElmIHRoZSAnZW5hYmxlJyBmaWxlIGN1cnJlbnRseSByZXR1cm5zICc0JywgYW5kIGEgJzEnIGlzCitlY2hvZWQgaW50byBpdCwgaXQgd2lsbCB0aGVuIHJldHVybiAnNScuICBFY2hvaW5nIGEgJzAnIGludG8gaXQgd2lsbCBkZWNyZWFzZQordGhlIGNvdW50LiAgRXZlbiB3aGVuIGl0IHJldHVybnMgdG8gMCwgdGhvdWdoLCBzb21lIG9mIHRoZSBpbml0aWFsaXNhdGlvbgorbWF5IG5vdCBiZSByZXZlcnNlZC4gIAorCitUaGUgJ3JvbScgZmlsZSBpcyBzcGVjaWFsIGluIHRoYXQgaXQgcHJvdmlkZXMgcmVhZC1vbmx5IGFjY2VzcyB0byB0aGUgZGV2aWNlJ3MKK1JPTSBmaWxlLCBpZiBhdmFpbGFibGUuICBJdCdzIGRpc2FibGVkIGJ5IGRlZmF1bHQsIGhvd2V2ZXIsIHNvIGFwcGxpY2F0aW9ucworc2hvdWxkIHdyaXRlIHRoZSBzdHJpbmcgIjEiIHRvIHRoZSBmaWxlIHRvIGVuYWJsZSBpdCBiZWZvcmUgYXR0ZW1wdGluZyBhIHJlYWQKK2NhbGwsIGFuZCBkaXNhYmxlIGl0IGZvbGxvd2luZyB0aGUgYWNjZXNzIGJ5IHdyaXRpbmcgIjAiIHRvIHRoZSBmaWxlLiAgTm90ZQordGhhdCB0aGUgZGV2aWNlIG11c3QgYmUgZW5hYmxlZCBmb3IgYSByb20gcmVhZCB0byByZXR1cm4gZGF0YSBzdWNjZXNzZnVsbHkuCitJbiB0aGUgZXZlbnQgYSBkcml2ZXIgaXMgbm90IGJvdW5kIHRvIHRoZSBkZXZpY2UsIGl0IGNhbiBiZSBlbmFibGVkIHVzaW5nIHRoZQorJ2VuYWJsZScgZmlsZSwgZG9jdW1lbnRlZCBhYm92ZS4KKworVGhlICdyZW1vdmUnIGZpbGUgaXMgdXNlZCB0byByZW1vdmUgdGhlIFBDSSBkZXZpY2UsIGJ5IHdyaXRpbmcgYSBub24temVybworaW50ZWdlciB0byB0aGUgZmlsZS4gIFRoaXMgZG9lcyBub3QgaW52b2x2ZSBhbnkga2luZCBvZiBob3QtcGx1ZyBmdW5jdGlvbmFsaXR5LAorZS5nLiBwb3dlcmluZyBvZmYgdGhlIGRldmljZS4gIFRoZSBkZXZpY2UgaXMgcmVtb3ZlZCBmcm9tIHRoZSBrZXJuZWwncyBsaXN0IG9mCitQQ0kgZGV2aWNlcywgdGhlIHN5c2ZzIGRpcmVjdG9yeSBmb3IgaXQgaXMgcmVtb3ZlZCwgYW5kIHRoZSBkZXZpY2Ugd2lsbCBiZQorcmVtb3ZlZCBmcm9tIGFueSBkcml2ZXJzIGF0dGFjaGVkIHRvIGl0LiBSZW1vdmFsIG9mIFBDSSByb290IGJ1c2VzIGlzCitkaXNhbGxvd2VkLgorCitBY2Nlc3NpbmcgbGVnYWN5IHJlc291cmNlcyB0aHJvdWdoIHN5c2ZzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0xlZ2FjeSBJL08gcG9ydCBhbmQgSVNBIG1lbW9yeSByZXNvdXJjZXMgYXJlIGFsc28gcHJvdmlkZWQgaW4gc3lzZnMgaWYgdGhlCit1bmRlcmx5aW5nIHBsYXRmb3JtIHN1cHBvcnRzIHRoZW0uICBUaGV5J3JlIGxvY2F0ZWQgaW4gdGhlIFBDSSBjbGFzcyBoaWVyYXJjaHksCitlLmcuCisKKwkvc3lzL2NsYXNzL3BjaV9idXMvMDAwMDoxNy8KKwl8LS0gYnJpZGdlIC0+IC4uLy4uLy4uL2RldmljZXMvcGNpMDAwMDoxNworCXwtLSBjcHVhZmZpbml0eQorCXwtLSBsZWdhY3lfaW8KKwlgLS0gbGVnYWN5X21lbQorCitUaGUgbGVnYWN5X2lvIGZpbGUgaXMgYSByZWFkL3dyaXRlIGZpbGUgdGhhdCBjYW4gYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMgdG8KK2RvIGxlZ2FjeSBwb3J0IEkvTy4gIFRoZSBhcHBsaWNhdGlvbiBzaG91bGQgb3BlbiB0aGUgZmlsZSwgc2VlayB0byB0aGUgZGVzaXJlZAorcG9ydCAoZS5nLiAweDNlOCkgYW5kIGRvIGEgcmVhZCBvciBhIHdyaXRlIG9mIDEsIDIgb3IgNCBieXRlcy4gIFRoZSBsZWdhY3lfbWVtCitmaWxlIHNob3VsZCBiZSBtbWFwcGVkIHdpdGggYW4gb2Zmc2V0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1lbW9yeSBvZmZzZXQKK2Rlc2lyZWQsIGUuZy4gMHhhMDAwMCBmb3IgdGhlIFZHQSBmcmFtZSBidWZmZXIuICBUaGUgYXBwbGljYXRpb24gY2FuIHRoZW4KK3NpbXBseSBkZXJlZmVyZW5jZSB0aGUgcmV0dXJuZWQgcG9pbnRlciAoYWZ0ZXIgY2hlY2tpbmcgZm9yIGVycm9ycyBvZiBjb3Vyc2UpCit0byBhY2Nlc3MgbGVnYWN5IG1lbW9yeSBzcGFjZS4KKworU3VwcG9ydGluZyBQQ0kgYWNjZXNzIG9uIG5ldyBwbGF0Zm9ybXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0luIG9yZGVyIHRvIHN1cHBvcnQgUENJIHJlc291cmNlIG1hcHBpbmcgYXMgZGVzY3JpYmVkIGFib3ZlLCBMaW51eCBwbGF0Zm9ybQorY29kZSBtdXN0IGRlZmluZSBIQVZFX1BDSV9NTUFQIGFuZCBwcm92aWRlIGEgcGNpX21tYXBfcGFnZV9yYW5nZSBmdW5jdGlvbi4KK1BsYXRmb3JtcyBhcmUgZnJlZSB0byBvbmx5IHN1cHBvcnQgc3Vic2V0cyBvZiB0aGUgbW1hcCBmdW5jdGlvbmFsaXR5LCBidXQKK3VzZWZ1bCByZXR1cm4gY29kZXMgc2hvdWxkIGJlIHByb3ZpZGVkLgorCitMZWdhY3kgcmVzb3VyY2VzIGFyZSBwcm90ZWN0ZWQgYnkgdGhlIEhBVkVfUENJX0xFR0FDWSBkZWZpbmUuICBQbGF0Zm9ybXMKK3dpc2hpbmcgdG8gc3VwcG9ydCBsZWdhY3kgZnVuY3Rpb25hbGl0eSBzaG91bGQgZGVmaW5lIGl0IGFuZCBwcm92aWRlCitwY2lfbGVnYWN5X3JlYWQsIHBjaV9sZWdhY3lfd3JpdGUgYW5kIHBjaV9tbWFwX2xlZ2FjeV9wYWdlX3JhbmdlIGZ1bmN0aW9ucy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvc3lzZnMtdGFnZ2luZy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3N5c2ZzLXRhZ2dpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3YzhlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3N5c2ZzLXRhZ2dpbmcudHh0CkBAIC0wLDAgKzEsNDIgQEAKK1N5c2ZzIHRhZ2dpbmcKKy0tLS0tLS0tLS0tLS0KKworKFRha2VuIGFsbW9zdCB2ZXJiYXRpbSBmcm9tIEVyaWMgQmllZGVybWFuJ3MgbmV0bnMgdGFnZ2luZyBwYXRjaAorY29tbWl0IG1zZykKKworVGhlIHByb2JsZW0uICBOZXR3b3JrIGRldmljZXMgc2hvdyB1cCBpbiBzeXNmcyBhbmQgd2l0aCB0aGUgbmV0d29yaworbmFtZXNwYWNlIGFjdGl2ZSBtdWx0aXBsZSBkZXZpY2VzIHdpdGggdGhlIHNhbWUgbmFtZSBjYW4gc2hvdyB1cCBpbgordGhlIHNhbWUgZGlyZWN0b3J5LCBvdWNoIQorCitUbyBhdm9pZCB0aGF0IHByb2JsZW0gYW5kIGFsbG93IGV4aXN0aW5nIGFwcGxpY2F0aW9ucyBpbiBuZXR3b3JrCituYW1lc3BhY2VzIHRvIHNlZSB0aGUgc2FtZSBpbnRlcmZhY2UgdGhhdCBpcyBjdXJyZW50bHkgcHJlc2VudGVkIGluCitzeXNmcywgc3lzZnMgbm93IGhhcyB0YWdnaW5nIGRpcmVjdG9yeSBzdXBwb3J0LgorCitCeSB1c2luZyB0aGUgbmV0d29yayBuYW1lc3BhY2UgcG9pbnRlcnMgYXMgdGFncyB0byBzZXBhcmF0ZSBvdXQgdGhlCit0aGUgc3lzZnMgZGlyZWN0b3J5IGVudHJpZXMgd2UgZW5zdXJlIHRoYXQgd2UgZG9uJ3QgaGF2ZSBjb25mbGljdHMKK2luIHRoZSBkaXJlY3RvcmllcyBhbmQgYXBwbGljYXRpb25zIG9ubHkgc2VlIGEgbGltaXRlZCBzZXQgb2YKK3RoZSBuZXR3b3JrIGRldmljZXMuCisKK0VhY2ggc3lzZnMgZGlyZWN0b3J5IGVudHJ5IG1heSBiZSB0YWdnZWQgd2l0aCBhIG5hbWVzcGFjZSB2aWEgdGhlCit2b2lkICpucyBtZW1iZXIgb2YgaXRzIGtlcm5mc19ub2RlLiAgSWYgYSBkaXJlY3RvcnkgZW50cnkgaXMgdGFnZ2VkLAordGhlbiBrZXJuZnNfbm9kZS0+ZmxhZ3Mgd2lsbCBoYXZlIGEgZmxhZyBiZXR3ZWVuIEtPQkpfTlNfVFlQRV9OT05FCithbmQgS09CSl9OU19UWVBFUywgYW5kIG5zIHdpbGwgcG9pbnQgdG8gdGhlIG5hbWVzcGFjZSB0byB3aGljaCBpdAorYmVsb25ncy4KKworRWFjaCBzeXNmcyBzdXBlcmJsb2NrJ3Mga2VybmZzX3N1cGVyX2luZm8gY29udGFpbnMgYW4gYXJyYXkgdm9pZAorKm5zW0tPQkpfTlNfVFlQRVNdLiAgV2hlbiBhIHRhc2sgaW4gYSB0YWdnaW5nIG5hbWVzcGFjZQora29ial9uc3R5cGUgZmlyc3QgbW91bnRzIHN5c2ZzLCBhIG5ldyBzdXBlcmJsb2NrIGlzIGNyZWF0ZWQuICBJdAord2lsbCBiZSBkaWZmZXJlbnRpYXRlZCBmcm9tIG90aGVyIHN5c2ZzIG1vdW50cyBieSBoYXZpbmcgaXRzCitzX2ZzX2luZm8tPm5zW2tvYmpfbnN0eXBlXSBzZXQgdG8gdGhlIG5ldyBuYW1lc3BhY2UuICBOb3RlIHRoYXQKK3Rocm91Z2ggYmluZCBtb3VudGluZyBhbmQgbW91bnRzIHByb3BhZ2F0aW9uLCBhIHRhc2sgY2FuIGVhc2lseSB2aWV3Cit0aGUgY29udGVudHMgb2Ygb3RoZXIgbmFtZXNwYWNlcycgc3lzZnMgbW91bnRzLiAgVGhlcmVmb3JlLCB3aGVuIGEKK25hbWVzcGFjZSBleGl0cywgaXQgd2lsbCBjYWxsIGtvYmpfbnNfZXhpdCgpIHRvIGludmFsaWRhdGUgYW55CitrZXJuZnNfbm9kZS0+bnMgcG9pbnRlcnMgcG9pbnRpbmcgdG8gaXQuCisKK1VzZXJzIG9mIHRoaXMgaW50ZXJmYWNlOgorLSBkZWZpbmUgYSB0eXBlIGluIHRoZSBrb2JqX25zX3R5cGUgZW51bWVyYXRpb24uCistIGNhbGwga29ial9uc190eXBlX3JlZ2lzdGVyKCkgd2l0aCBpdHMga29ial9uc190eXBlX29wZXJhdGlvbnMgd2hpY2ggaGFzCisgIC0gY3VycmVudF9ucygpIHdoaWNoIHJldHVybnMgY3VycmVudCdzIG5hbWVzcGFjZQorICAtIG5ldGxpbmtfbnMoKSB3aGljaCByZXR1cm5zIGEgc29ja2V0J3MgbmFtZXNwYWNlCisgIC0gaW5pdGlhbF9ucygpIHdoaWNoIHJldHVybnMgdGhlIGluaXRpYWwgbmFtZXNhcGNlCistIGNhbGwga29ial9uc19leGl0KCkgd2hlbiBhbiBpbmRpdmlkdWFsIHRhZyBpcyBubyBsb25nZXIgdmFsaWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvc3lzZnMudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zeXNmcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRkYTdiMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvc3lzZnMudHh0CkBAIC0wLDAgKzEsMzg0IEBACisKK3N5c2ZzIC0gX1RoZV8gZmlsZXN5c3RlbSBmb3IgZXhwb3J0aW5nIGtlcm5lbCBvYmplY3RzLiAKKworUGF0cmljayBNb2NoZWwJPG1vY2hlbEBvc2RsLm9yZz4KK01pa2UgTXVycGh5IDxtYW11cnBoQGNzLmNsZW1zb24uZWR1PgorCitSZXZpc2VkOiAgICAxNiBBdWd1c3QgMjAxMQorT3JpZ2luYWw6ICAgMTAgSmFudWFyeSAyMDAzCisKKworV2hhdCBpdCBpczoKK35+fn5+fn5+fn5+CisKK3N5c2ZzIGlzIGEgcmFtLWJhc2VkIGZpbGVzeXN0ZW0gaW5pdGlhbGx5IGJhc2VkIG9uIHJhbWZzLiBJdCBwcm92aWRlcworYSBtZWFucyB0byBleHBvcnQga2VybmVsIGRhdGEgc3RydWN0dXJlcywgdGhlaXIgYXR0cmlidXRlcywgYW5kIHRoZSAKK2xpbmthZ2VzIGJldHdlZW4gdGhlbSB0byB1c2Vyc3BhY2UuIAorCitzeXNmcyBpcyB0aWVkIGluaGVyZW50bHkgdG8gdGhlIGtvYmplY3QgaW5mcmFzdHJ1Y3R1cmUuIFBsZWFzZSByZWFkCitEb2N1bWVudGF0aW9uL2tvYmplY3QudHh0IGZvciBtb3JlIGluZm9ybWF0aW9uIGNvbmNlcm5pbmcgdGhlIGtvYmplY3QKK2ludGVyZmFjZS4gCisKKworVXNpbmcgc3lzZnMKK35+fn5+fn5+fn5+CisKK3N5c2ZzIGlzIGFsd2F5cyBjb21waWxlZCBpbiBpZiBDT05GSUdfU1lTRlMgaXMgZGVmaW5lZC4gWW91IGNhbiBhY2Nlc3MKK2l0IGJ5IGRvaW5nOgorCisgICAgbW91bnQgLXQgc3lzZnMgc3lzZnMgL3N5cyAKKworCitEaXJlY3RvcnkgQ3JlYXRpb24KK35+fn5+fn5+fn5+fn5+fn5+fgorCitGb3IgZXZlcnkga29iamVjdCB0aGF0IGlzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgc3lzdGVtLCBhIGRpcmVjdG9yeSBpcworY3JlYXRlZCBmb3IgaXQgaW4gc3lzZnMuIFRoYXQgZGlyZWN0b3J5IGlzIGNyZWF0ZWQgYXMgYSBzdWJkaXJlY3RvcnkKK29mIHRoZSBrb2JqZWN0J3MgcGFyZW50LCBleHByZXNzaW5nIGludGVybmFsIG9iamVjdCBoaWVyYXJjaGllcyB0bwordXNlcnNwYWNlLiBUb3AtbGV2ZWwgZGlyZWN0b3JpZXMgaW4gc3lzZnMgcmVwcmVzZW50IHRoZSBjb21tb24KK2FuY2VzdG9ycyBvZiBvYmplY3QgaGllcmFyY2hpZXM7IGkuZS4gdGhlIHN1YnN5c3RlbXMgdGhlIG9iamVjdHMKK2JlbG9uZyB0by4gCisKK1N5c2ZzIGludGVybmFsbHkgc3RvcmVzIGEgcG9pbnRlciB0byB0aGUga29iamVjdCB0aGF0IGltcGxlbWVudHMgYQorZGlyZWN0b3J5IGluIHRoZSBrZXJuZnNfbm9kZSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBkaXJlY3RvcnkuIEluCit0aGUgcGFzdCB0aGlzIGtvYmplY3QgcG9pbnRlciBoYXMgYmVlbiB1c2VkIGJ5IHN5c2ZzIHRvIGRvIHJlZmVyZW5jZQorY291bnRpbmcgZGlyZWN0bHkgb24gdGhlIGtvYmplY3Qgd2hlbmV2ZXIgdGhlIGZpbGUgaXMgb3BlbmVkIG9yIGNsb3NlZC4KK1dpdGggdGhlIGN1cnJlbnQgc3lzZnMgaW1wbGVtZW50YXRpb24gdGhlIGtvYmplY3QgcmVmZXJlbmNlIGNvdW50IGlzCitvbmx5IG1vZGlmaWVkIGRpcmVjdGx5IGJ5IHRoZSBmdW5jdGlvbiBzeXNmc19zY2hlZHVsZV9jYWxsYmFjaygpLgorCisKK0F0dHJpYnV0ZXMKK35+fn5+fn5+fn4KKworQXR0cmlidXRlcyBjYW4gYmUgZXhwb3J0ZWQgZm9yIGtvYmplY3RzIGluIHRoZSBmb3JtIG9mIHJlZ3VsYXIgZmlsZXMgaW4KK3RoZSBmaWxlc3lzdGVtLiBTeXNmcyBmb3J3YXJkcyBmaWxlIEkvTyBvcGVyYXRpb25zIHRvIG1ldGhvZHMgZGVmaW5lZAorZm9yIHRoZSBhdHRyaWJ1dGVzLCBwcm92aWRpbmcgYSBtZWFucyB0byByZWFkIGFuZCB3cml0ZSBrZXJuZWwKK2F0dHJpYnV0ZXMuCisKK0F0dHJpYnV0ZXMgc2hvdWxkIGJlIEFTQ0lJIHRleHQgZmlsZXMsIHByZWZlcmFibHkgd2l0aCBvbmx5IG9uZSB2YWx1ZQorcGVyIGZpbGUuIEl0IGlzIG5vdGVkIHRoYXQgaXQgbWF5IG5vdCBiZSBlZmZpY2llbnQgdG8gY29udGFpbiBvbmx5IG9uZQordmFsdWUgcGVyIGZpbGUsIHNvIGl0IGlzIHNvY2lhbGx5IGFjY2VwdGFibGUgdG8gZXhwcmVzcyBhbiBhcnJheSBvZgordmFsdWVzIG9mIHRoZSBzYW1lIHR5cGUuIAorCitNaXhpbmcgdHlwZXMsIGV4cHJlc3NpbmcgbXVsdGlwbGUgbGluZXMgb2YgZGF0YSwgYW5kIGRvaW5nIGZhbmN5Citmb3JtYXR0aW5nIG9mIGRhdGEgaXMgaGVhdmlseSBmcm93bmVkIHVwb24uIERvaW5nIHRoZXNlIHRoaW5ncyBtYXkgZ2V0Cit5b3UgcHVibGljbHkgaHVtaWxpYXRlZCBhbmQgeW91ciBjb2RlIHJld3JpdHRlbiB3aXRob3V0IG5vdGljZS4gCisKKworQW4gYXR0cmlidXRlIGRlZmluaXRpb24gaXMgc2ltcGx5OgorCitzdHJ1Y3QgYXR0cmlidXRlIHsKKyAgICAgICAgY2hhciAgICAgICAgICAgICAgICAgICAgKiBuYW1lOworICAgICAgICBzdHJ1Y3QgbW9kdWxlCQkqb3duZXI7CisgICAgICAgIHVtb2RlX3QgICAgICAgICAgICAgICAgIG1vZGU7Cit9OworCisKK2ludCBzeXNmc19jcmVhdGVfZmlsZShzdHJ1Y3Qga29iamVjdCAqIGtvYmosIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKiBhdHRyKTsKK3ZvaWQgc3lzZnNfcmVtb3ZlX2ZpbGUoc3RydWN0IGtvYmplY3QgKiBrb2JqLCBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICogYXR0cik7CisKKworQSBiYXJlIGF0dHJpYnV0ZSBjb250YWlucyBubyBtZWFucyB0byByZWFkIG9yIHdyaXRlIHRoZSB2YWx1ZSBvZiB0aGUKK2F0dHJpYnV0ZS4gU3Vic3lzdGVtcyBhcmUgZW5jb3VyYWdlZCB0byBkZWZpbmUgdGhlaXIgb3duIGF0dHJpYnV0ZQorc3RydWN0dXJlIGFuZCB3cmFwcGVyIGZ1bmN0aW9ucyBmb3IgYWRkaW5nIGFuZCByZW1vdmluZyBhdHRyaWJ1dGVzIGZvcgorYSBzcGVjaWZpYyBvYmplY3QgdHlwZS4gCisKK0ZvciBleGFtcGxlLCB0aGUgZHJpdmVyIG1vZGVsIGRlZmluZXMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgbGlrZToKKworc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgeworCXN0cnVjdCBhdHRyaWJ1dGUJYXR0cjsKKwlzc2l6ZV90ICgqc2hvdykoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCWNoYXIgKmJ1Zik7CisJc3NpemVfdCAoKnN0b3JlKShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KTsKK307CisKK2ludCBkZXZpY2VfY3JlYXRlX2ZpbGUoc3RydWN0IGRldmljZSAqLCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqKTsKK3ZvaWQgZGV2aWNlX3JlbW92ZV9maWxlKHN0cnVjdCBkZXZpY2UgKiwgY29uc3Qgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKik7CisKK0l0IGFsc28gZGVmaW5lcyB0aGlzIGhlbHBlciBmb3IgZGVmaW5pbmcgZGV2aWNlIGF0dHJpYnV0ZXM6IAorCisjZGVmaW5lIERFVklDRV9BVFRSKF9uYW1lLCBfbW9kZSwgX3Nob3csIF9zdG9yZSkgXAorc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfIyNfbmFtZSA9IF9fQVRUUihfbmFtZSwgX21vZGUsIF9zaG93LCBfc3RvcmUpCisKK0ZvciBleGFtcGxlLCBkZWNsYXJpbmcKKworc3RhdGljIERFVklDRV9BVFRSKGZvbywgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfZm9vLCBzdG9yZV9mb28pOworCitpcyBlcXVpdmFsZW50IHRvIGRvaW5nOgorCitzdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfZm9vID0geworCS5hdHRyID0geworCQkubmFtZSA9ICJmb28iLAorCQkubW9kZSA9IFNfSVdVU1IgfCBTX0lSVUdPLAorCX0sCisJLnNob3cgPSBzaG93X2ZvbywKKwkuc3RvcmUgPSBzdG9yZV9mb28sCit9OworCisKK1N1YnN5c3RlbS1TcGVjaWZpYyBDYWxsYmFja3MKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworV2hlbiBhIHN1YnN5c3RlbSBkZWZpbmVzIGEgbmV3IGF0dHJpYnV0ZSB0eXBlLCBpdCBtdXN0IGltcGxlbWVudCBhCitzZXQgb2Ygc3lzZnMgb3BlcmF0aW9ucyBmb3IgZm9yd2FyZGluZyByZWFkIGFuZCB3cml0ZSBjYWxscyB0byB0aGUKK3Nob3cgYW5kIHN0b3JlIG1ldGhvZHMgb2YgdGhlIGF0dHJpYnV0ZSBvd25lcnMuIAorCitzdHJ1Y3Qgc3lzZnNfb3BzIHsKKyAgICAgICAgc3NpemVfdCAoKnNob3cpKHN0cnVjdCBrb2JqZWN0ICosIHN0cnVjdCBhdHRyaWJ1dGUgKiwgY2hhciAqKTsKKyAgICAgICAgc3NpemVfdCAoKnN0b3JlKShzdHJ1Y3Qga29iamVjdCAqLCBzdHJ1Y3QgYXR0cmlidXRlICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKK307CisKK1sgU3Vic3lzdGVtcyBzaG91bGQgaGF2ZSBhbHJlYWR5IGRlZmluZWQgYSBzdHJ1Y3Qga29ial90eXBlIGFzIGEKK2Rlc2NyaXB0b3IgZm9yIHRoaXMgdHlwZSwgd2hpY2ggaXMgd2hlcmUgdGhlIHN5c2ZzX29wcyBwb2ludGVyIGlzCitzdG9yZWQuIFNlZSB0aGUga29iamVjdCBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLiBdCisKK1doZW4gYSBmaWxlIGlzIHJlYWQgb3Igd3JpdHRlbiwgc3lzZnMgY2FsbHMgdGhlIGFwcHJvcHJpYXRlIG1ldGhvZAorZm9yIHRoZSB0eXBlLiBUaGUgbWV0aG9kIHRoZW4gdHJhbnNsYXRlcyB0aGUgZ2VuZXJpYyBzdHJ1Y3Qga29iamVjdAorYW5kIHN0cnVjdCBhdHRyaWJ1dGUgcG9pbnRlcnMgdG8gdGhlIGFwcHJvcHJpYXRlIHBvaW50ZXIgdHlwZXMsIGFuZAorY2FsbHMgdGhlIGFzc29jaWF0ZWQgbWV0aG9kcy4gCisKKworVG8gaWxsdXN0cmF0ZToKKworI2RlZmluZSB0b19kZXYob2JqKSBjb250YWluZXJfb2Yob2JqLCBzdHJ1Y3QgZGV2aWNlLCBrb2JqKQorI2RlZmluZSB0b19kZXZfYXR0cihfYXR0cikgY29udGFpbmVyX29mKF9hdHRyLCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSwgYXR0cikKKworc3RhdGljIHNzaXplX3QgZGV2X2F0dHJfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmKQoreworICAgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZGV2X2F0dHIgPSB0b19kZXZfYXR0cihhdHRyKTsKKyAgICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2KGtvYmopOworICAgICAgICBzc2l6ZV90IHJldCA9IC1FSU87CisKKyAgICAgICAgaWYgKGRldl9hdHRyLT5zaG93KQorICAgICAgICAgICAgICAgIHJldCA9IGRldl9hdHRyLT5zaG93KGRldiwgZGV2X2F0dHIsIGJ1Zik7CisgICAgICAgIGlmIChyZXQgPj0gKHNzaXplX3QpUEFHRV9TSVpFKSB7CisgICAgICAgICAgICAgICAgcHJpbnRfc3ltYm9sKCJkZXZfYXR0cl9zaG93OiAlcyByZXR1cm5lZCBiYWQgY291bnRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKWRldl9hdHRyLT5zaG93KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0OworfQorCisKKworUmVhZGluZy9Xcml0aW5nIEF0dHJpYnV0ZSBEYXRhCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworVG8gcmVhZCBvciB3cml0ZSBhdHRyaWJ1dGVzLCBzaG93KCkgb3Igc3RvcmUoKSBtZXRob2RzIG11c3QgYmUKK3NwZWNpZmllZCB3aGVuIGRlY2xhcmluZyB0aGUgYXR0cmlidXRlLiBUaGUgbWV0aG9kIHR5cGVzIHNob3VsZCBiZSBhcworc2ltcGxlIGFzIHRob3NlIGRlZmluZWQgZm9yIGRldmljZSBhdHRyaWJ1dGVzOgorCitzc2l6ZV90ICgqc2hvdykoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKTsKK3NzaXplX3QgKCpzdG9yZSkoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpOworCitJT1csIHRoZXkgc2hvdWxkIHRha2Ugb25seSBhbiBvYmplY3QsIGFuIGF0dHJpYnV0ZSwgYW5kIGEgYnVmZmVyIGFzIHBhcmFtZXRlcnMuCisKKworc3lzZnMgYWxsb2NhdGVzIGEgYnVmZmVyIG9mIHNpemUgKFBBR0VfU0laRSkgYW5kIHBhc3NlcyBpdCB0byB0aGUKK21ldGhvZC4gU3lzZnMgd2lsbCBjYWxsIHRoZSBtZXRob2QgZXhhY3RseSBvbmNlIGZvciBlYWNoIHJlYWQgb3IKK3dyaXRlLiBUaGlzIGZvcmNlcyB0aGUgZm9sbG93aW5nIGJlaGF2aW9yIG9uIHRoZSBtZXRob2QKK2ltcGxlbWVudGF0aW9uczogCisKKy0gT24gcmVhZCgyKSwgdGhlIHNob3coKSBtZXRob2Qgc2hvdWxkIGZpbGwgdGhlIGVudGlyZSBidWZmZXIuIAorICBSZWNhbGwgdGhhdCBhbiBhdHRyaWJ1dGUgc2hvdWxkIG9ubHkgYmUgZXhwb3J0aW5nIG9uZSB2YWx1ZSwgb3IgYW4KKyAgYXJyYXkgb2Ygc2ltaWxhciB2YWx1ZXMsIHNvIHRoaXMgc2hvdWxkbid0IGJlIHRoYXQgZXhwZW5zaXZlLiAKKworICBUaGlzIGFsbG93cyB1c2Vyc3BhY2UgdG8gZG8gcGFydGlhbCByZWFkcyBhbmQgZm9yd2FyZCBzZWVrcworICBhcmJpdHJhcmlseSBvdmVyIHRoZSBlbnRpcmUgZmlsZSBhdCB3aWxsLiBJZiB1c2Vyc3BhY2Ugc2Vla3MgYmFjayB0bworICB6ZXJvIG9yIGRvZXMgYSBwcmVhZCgyKSB3aXRoIGFuIG9mZnNldCBvZiAnMCcgdGhlIHNob3coKSBtZXRob2Qgd2lsbAorICBiZSBjYWxsZWQgYWdhaW4sIHJlYXJtZWQsIHRvIGZpbGwgdGhlIGJ1ZmZlci4KKworLSBPbiB3cml0ZSgyKSwgc3lzZnMgZXhwZWN0cyB0aGUgZW50aXJlIGJ1ZmZlciB0byBiZSBwYXNzZWQgZHVyaW5nIHRoZQorICBmaXJzdCB3cml0ZS4gU3lzZnMgdGhlbiBwYXNzZXMgdGhlIGVudGlyZSBidWZmZXIgdG8gdGhlIHN0b3JlKCkgbWV0aG9kLgorICBBIHRlcm1pbmF0aW5nIG51bGwgaXMgYWRkZWQgYWZ0ZXIgdGhlIGRhdGEgb24gc3RvcmVzLiBUaGlzIG1ha2VzCisgIGZ1bmN0aW9ucyBsaWtlIHN5c2ZzX3N0cmVxKCkgc2FmZSB0byB1c2UuCisKKyAgV2hlbiB3cml0aW5nIHN5c2ZzIGZpbGVzLCB1c2Vyc3BhY2UgcHJvY2Vzc2VzIHNob3VsZCBmaXJzdCByZWFkIHRoZQorICBlbnRpcmUgZmlsZSwgbW9kaWZ5IHRoZSB2YWx1ZXMgaXQgd2lzaGVzIHRvIGNoYW5nZSwgdGhlbiB3cml0ZSB0aGUKKyAgZW50aXJlIGJ1ZmZlciBiYWNrLiAKKworICBBdHRyaWJ1dGUgbWV0aG9kIGltcGxlbWVudGF0aW9ucyBzaG91bGQgb3BlcmF0ZSBvbiBhbiBpZGVudGljYWwKKyAgYnVmZmVyIHdoZW4gcmVhZGluZyBhbmQgd3JpdGluZyB2YWx1ZXMuIAorCitPdGhlciBub3RlczoKKworLSBXcml0aW5nIGNhdXNlcyB0aGUgc2hvdygpIG1ldGhvZCB0byBiZSByZWFybWVkIHJlZ2FyZGxlc3Mgb2YgY3VycmVudAorICBmaWxlIHBvc2l0aW9uLgorCistIFRoZSBidWZmZXIgd2lsbCBhbHdheXMgYmUgUEFHRV9TSVpFIGJ5dGVzIGluIGxlbmd0aC4gT24gaTM4NiwgdGhpcworICBpcyA0MDk2LiAKKworLSBzaG93KCkgbWV0aG9kcyBzaG91bGQgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgcHJpbnRlZCBpbnRvIHRoZQorICBidWZmZXIuIFRoaXMgaXMgdGhlIHJldHVybiB2YWx1ZSBvZiBzY25wcmludGYoKS4KKworLSBzaG93KCkgbXVzdCBub3QgdXNlIHNucHJpbnRmKCkgd2hlbiBmb3JtYXR0aW5nIHRoZSB2YWx1ZSB0byBiZQorICByZXR1cm5lZCB0byB1c2VyIHNwYWNlLiBJZiB5b3UgY2FuIGd1YXJhbnRlZSB0aGF0IGFuIG92ZXJmbG93CisgIHdpbGwgbmV2ZXIgaGFwcGVuIHlvdSBjYW4gdXNlIHNwcmludGYoKSBvdGhlcndpc2UgeW91IG11c3QgdXNlCisgIHNjbnByaW50ZigpLgorCistIHN0b3JlKCkgc2hvdWxkIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHVzZWQgZnJvbSB0aGUgYnVmZmVyLiBJZiB0aGUKKyAgZW50aXJlIGJ1ZmZlciBoYXMgYmVlbiB1c2VkLCBqdXN0IHJldHVybiB0aGUgY291bnQgYXJndW1lbnQuCisKKy0gc2hvdygpIG9yIHN0b3JlKCkgY2FuIGFsd2F5cyByZXR1cm4gZXJyb3JzLiBJZiBhIGJhZCB2YWx1ZSBjb21lcworICB0aHJvdWdoLCBiZSBzdXJlIHRvIHJldHVybiBhbiBlcnJvci4KKworLSBUaGUgb2JqZWN0IHBhc3NlZCB0byB0aGUgbWV0aG9kcyB3aWxsIGJlIHBpbm5lZCBpbiBtZW1vcnkgdmlhIHN5c2ZzCisgIHJlZmVyZW5jaW5nIGNvdW50aW5nIGl0cyBlbWJlZGRlZCBvYmplY3QuIEhvd2V2ZXIsIHRoZSBwaHlzaWNhbCAKKyAgZW50aXR5IChlLmcuIGRldmljZSkgdGhlIG9iamVjdCByZXByZXNlbnRzIG1heSBub3QgYmUgcHJlc2VudC4gQmUgCisgIHN1cmUgdG8gaGF2ZSBhIHdheSB0byBjaGVjayB0aGlzLCBpZiBuZWNlc3NhcnkuIAorCisKK0EgdmVyeSBzaW1wbGUgKGFuZCBuYWl2ZSkgaW1wbGVtZW50YXRpb24gb2YgYSBkZXZpY2UgYXR0cmlidXRlIGlzOgorCitzdGF0aWMgc3NpemVfdCBzaG93X25hbWUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpidWYpCit7CisJcmV0dXJuIHNjbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVzXG4iLCBkZXYtPm5hbWUpOworfQorCitzdGF0aWMgc3NpemVfdCBzdG9yZV9uYW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworICAgICAgICBzbnByaW50ZihkZXYtPm5hbWUsIHNpemVvZihkZXYtPm5hbWUpLCAiJS4qcyIsCisgICAgICAgICAgICAgICAgIChpbnQpbWluKGNvdW50LCBzaXplb2YoZGV2LT5uYW1lKSAtIDEpLCBidWYpOworCXJldHVybiBjb3VudDsKK30KKworc3RhdGljIERFVklDRV9BVFRSKG5hbWUsIFNfSVJVR08sIHNob3dfbmFtZSwgc3RvcmVfbmFtZSk7CisKKworKE5vdGUgdGhhdCB0aGUgcmVhbCBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IGFsbG93IHVzZXJzcGFjZSB0byBzZXQgdGhlIAorbmFtZSBmb3IgYSBkZXZpY2UuKQorCisKK1RvcCBMZXZlbCBEaXJlY3RvcnkgTGF5b3V0Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitUaGUgc3lzZnMgZGlyZWN0b3J5IGFycmFuZ2VtZW50IGV4cG9zZXMgdGhlIHJlbGF0aW9uc2hpcCBvZiBrZXJuZWwKK2RhdGEgc3RydWN0dXJlcy4gCisKK1RoZSB0b3AgbGV2ZWwgc3lzZnMgZGlyZWN0b3J5IGxvb2tzIGxpa2U6CisKK2Jsb2NrLworYnVzLworY2xhc3MvCitkZXYvCitkZXZpY2VzLworZmlybXdhcmUvCituZXQvCitmcy8KKworZGV2aWNlcy8gY29udGFpbnMgYSBmaWxlc3lzdGVtIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkZXZpY2UgdHJlZS4gSXQgbWFwcworZGlyZWN0bHkgdG8gdGhlIGludGVybmFsIGtlcm5lbCBkZXZpY2UgdHJlZSwgd2hpY2ggaXMgYSBoaWVyYXJjaHkgb2YKK3N0cnVjdCBkZXZpY2UuIAorCitidXMvIGNvbnRhaW5zIGZsYXQgZGlyZWN0b3J5IGxheW91dCBvZiB0aGUgdmFyaW91cyBidXMgdHlwZXMgaW4gdGhlCitrZXJuZWwuIEVhY2ggYnVzJ3MgZGlyZWN0b3J5IGNvbnRhaW5zIHR3byBzdWJkaXJlY3RvcmllczoKKworCWRldmljZXMvCisJZHJpdmVycy8KKworZGV2aWNlcy8gY29udGFpbnMgc3ltbGlua3MgZm9yIGVhY2ggZGV2aWNlIGRpc2NvdmVyZWQgaW4gdGhlIHN5c3RlbQordGhhdCBwb2ludCB0byB0aGUgZGV2aWNlJ3MgZGlyZWN0b3J5IHVuZGVyIHJvb3QvLgorCitkcml2ZXJzLyBjb250YWlucyBhIGRpcmVjdG9yeSBmb3IgZWFjaCBkZXZpY2UgZHJpdmVyIHRoYXQgaXMgbG9hZGVkCitmb3IgZGV2aWNlcyBvbiB0aGF0IHBhcnRpY3VsYXIgYnVzICh0aGlzIGFzc3VtZXMgdGhhdCBkcml2ZXJzIGRvIG5vdAorc3BhbiBtdWx0aXBsZSBidXMgdHlwZXMpLgorCitmcy8gY29udGFpbnMgYSBkaXJlY3RvcnkgZm9yIHNvbWUgZmlsZXN5c3RlbXMuICBDdXJyZW50bHkgZWFjaAorZmlsZXN5c3RlbSB3YW50aW5nIHRvIGV4cG9ydCBhdHRyaWJ1dGVzIG11c3QgY3JlYXRlIGl0cyBvd24gaGllcmFyY2h5CitiZWxvdyBmcy8gKHNlZSAuL2Z1c2UudHh0IGZvciBhbiBleGFtcGxlKS4KKworZGV2LyBjb250YWlucyB0d28gZGlyZWN0b3JpZXMgY2hhci8gYW5kIGJsb2NrLy4gSW5zaWRlIHRoZXNlIHR3bworZGlyZWN0b3JpZXMgdGhlcmUgYXJlIHN5bWxpbmtzIG5hbWVkIDxtYWpvcj46PG1pbm9yPi4gIFRoZXNlIHN5bWxpbmtzCitwb2ludCB0byB0aGUgc3lzZnMgZGlyZWN0b3J5IGZvciB0aGUgZ2l2ZW4gZGV2aWNlLiAgL3N5cy9kZXYgcHJvdmlkZXMgYQorcXVpY2sgd2F5IHRvIGxvb2t1cCB0aGUgc3lzZnMgaW50ZXJmYWNlIGZvciBhIGRldmljZSBmcm9tIHRoZSByZXN1bHQgb2YKK2Egc3RhdCgyKSBvcGVyYXRpb24uCisKK01vcmUgaW5mb3JtYXRpb24gY2FuIGRyaXZlci1tb2RlbCBzcGVjaWZpYyBmZWF0dXJlcyBjYW4gYmUgZm91bmQgaW4KK0RvY3VtZW50YXRpb24vZHJpdmVyLW1vZGVsLy4gCisKKworVE9ETzogRmluaXNoIHRoaXMgc2VjdGlvbi4KKworCitDdXJyZW50IEludGVyZmFjZXMKK35+fn5+fn5+fn5+fn5+fn5+fgorCitUaGUgZm9sbG93aW5nIGludGVyZmFjZSBsYXllcnMgY3VycmVudGx5IGV4aXN0IGluIHN5c2ZzOgorCisKKy0gZGV2aWNlcyAoaW5jbHVkZS9saW51eC9kZXZpY2UuaCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1N0cnVjdHVyZToKKworc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgeworCXN0cnVjdCBhdHRyaWJ1dGUJYXR0cjsKKwlzc2l6ZV90ICgqc2hvdykoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCWNoYXIgKmJ1Zik7CisJc3NpemVfdCAoKnN0b3JlKShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KTsKK307CisKK0RlY2xhcmluZzoKKworREVWSUNFX0FUVFIoX25hbWUsIF9tb2RlLCBfc2hvdywgX3N0b3JlKTsKKworQ3JlYXRpb24vUmVtb3ZhbDoKKworaW50IGRldmljZV9jcmVhdGVfZmlsZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICogYXR0cik7Cit2b2lkIGRldmljZV9yZW1vdmVfZmlsZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICogYXR0cik7CisKKworLSBidXMgZHJpdmVycyAoaW5jbHVkZS9saW51eC9kZXZpY2UuaCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTdHJ1Y3R1cmU6CisKK3N0cnVjdCBidXNfYXR0cmlidXRlIHsKKyAgICAgICAgc3RydWN0IGF0dHJpYnV0ZSAgICAgICAgYXR0cjsKKyAgICAgICAgc3NpemVfdCAoKnNob3cpKHN0cnVjdCBidXNfdHlwZSAqLCBjaGFyICogYnVmKTsKKyAgICAgICAgc3NpemVfdCAoKnN0b3JlKShzdHJ1Y3QgYnVzX3R5cGUgKiwgY29uc3QgY2hhciAqIGJ1Ziwgc2l6ZV90IGNvdW50KTsKK307CisKK0RlY2xhcmluZzoKKworQlVTX0FUVFIoX25hbWUsIF9tb2RlLCBfc2hvdywgX3N0b3JlKQorCitDcmVhdGlvbi9SZW1vdmFsOgorCitpbnQgYnVzX2NyZWF0ZV9maWxlKHN0cnVjdCBidXNfdHlwZSAqLCBzdHJ1Y3QgYnVzX2F0dHJpYnV0ZSAqKTsKK3ZvaWQgYnVzX3JlbW92ZV9maWxlKHN0cnVjdCBidXNfdHlwZSAqLCBzdHJ1Y3QgYnVzX2F0dHJpYnV0ZSAqKTsKKworCistIGRldmljZSBkcml2ZXJzIChpbmNsdWRlL2xpbnV4L2RldmljZS5oKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU3RydWN0dXJlOgorCitzdHJ1Y3QgZHJpdmVyX2F0dHJpYnV0ZSB7CisgICAgICAgIHN0cnVjdCBhdHRyaWJ1dGUgICAgICAgIGF0dHI7CisgICAgICAgIHNzaXplX3QgKCpzaG93KShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqLCBjaGFyICogYnVmKTsKKyAgICAgICAgc3NpemVfdCAoKnN0b3JlKShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqLCBjb25zdCBjaGFyICogYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCk7Cit9OworCitEZWNsYXJpbmc6CisKK0RSSVZFUl9BVFRSKF9uYW1lLCBfbW9kZSwgX3Nob3csIF9zdG9yZSkKKworQ3JlYXRpb24vUmVtb3ZhbDoKKworaW50IGRyaXZlcl9jcmVhdGVfZmlsZShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqLCBjb25zdCBzdHJ1Y3QgZHJpdmVyX2F0dHJpYnV0ZSAqKTsKK3ZvaWQgZHJpdmVyX3JlbW92ZV9maWxlKHN0cnVjdCBkZXZpY2VfZHJpdmVyICosIGNvbnN0IHN0cnVjdCBkcml2ZXJfYXR0cmlidXRlICopOworCisKK0RvY3VtZW50YXRpb24KK35+fn5+fn5+fn5+fn4KKworVGhlIHN5c2ZzIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgYW5kIHRoZSBhdHRyaWJ1dGVzIGluIGVhY2ggZGlyZWN0b3J5IGRlZmluZSBhbgorQUJJIGJldHdlZW4gdGhlIGtlcm5lbCBhbmQgdXNlciBzcGFjZS4gQXMgZm9yIGFueSBBQkksIGl0IGlzIGltcG9ydGFudCB0aGF0Cit0aGlzIEFCSSBpcyBzdGFibGUgYW5kIHByb3Blcmx5IGRvY3VtZW50ZWQuIEFsbCBuZXcgc3lzZnMgYXR0cmlidXRlcyBtdXN0IGJlCitkb2N1bWVudGVkIGluIERvY3VtZW50YXRpb24vQUJJLiBTZWUgYWxzbyBEb2N1bWVudGF0aW9uL0FCSS9SRUFETUUgZm9yIG1vcmUKK2luZm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zeXN2LWZzLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvc3lzdi1mcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUzYjUwZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvc3lzdi1mcy50eHQKQEAgLTAsMCArMSwxOTcgQEAKK0l0IGltcGxlbWVudHMgYWxsIG9mCisgIC0gWGVuaXggRlMsCisgIC0gU3lzdGVtVi8zODYgRlMsCisgIC0gQ29oZXJlbnQgRlMuCisKK1RvIGluc3RhbGw6CisqIEFuc3dlciB0aGUgJ1N5c3RlbSBWIGFuZCBDb2hlcmVudCBmaWxlc3lzdGVtIHN1cHBvcnQnIHF1ZXN0aW9uIHdpdGggJ3knCisgIHdoZW4gY29uZmlndXJpbmcgdGhlIGtlcm5lbC4KKyogVG8gbW91bnQgYSBkaXNrIG9yIGEgcGFydGl0aW9uLCB1c2UKKyAgICBtb3VudCBbLXJdIC10IHN5c3YgZGV2aWNlIG1vdW50cG9pbnQKKyAgVGhlIGZpbGUgc3lzdGVtIHR5cGUgbmFtZXMKKyAgICAgICAgICAgICAgIC10IHN5c3YKKyAgICAgICAgICAgICAgIC10IHhlbml4CisgICAgICAgICAgICAgICAtdCBjb2hlcmVudAorICBtYXkgYmUgdXNlZCBpbnRlcmNoYW5nZWFibHksIGJ1dCB0aGUgbGFzdCB0d28gd2lsbCBldmVudHVhbGx5IGRpc2FwcGVhci4KKworQnVncyBpbiB0aGUgcHJlc2VudCBpbXBsZW1lbnRhdGlvbjoKKy0gQ29oZXJlbnQgRlM6CisgIC0gVGhlICJmcmVlIGxpc3QgaW50ZXJsZWF2ZSIgbjptIGlzIGN1cnJlbnRseSBpZ25vcmVkLgorICAtIE9ubHkgZmlsZSBzeXN0ZW1zIHdpdGggbm8gZmlsZXN5c3RlbSBuYW1lIGFuZCBubyBwYWNrIG5hbWUgYXJlIHJlY29nbml6ZWQuCisgIChTZWUgQ29oZXJlbnQgIm1hbiBta2ZzIiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVzZSBmZWF0dXJlcy4pCistIFN5c3RlbVYgUmVsZWFzZSAyIEZTOgorICBUaGUgc3VwZXJibG9jayBpcyBvbmx5IHNlYXJjaGVkIGluIHRoZSBibG9ja3MgOSwgMTUsIDE4LCB3aGljaAorICBjb3JyZXNwb25kcyB0byB0aGUgYmVnaW5uaW5nIG9mIHRyYWNrIDEgb24gZmxvcHB5IGRpc2tzLiBObyBzdXBwb3J0CisgIGZvciB0aGlzIEZTIG9uIGhhcmQgZGlzayB5ZXQuCisKKworVGhlc2UgZmlsZXN5c3RlbXMgYXJlIHJhdGhlciBzaW1pbGFyLiBIZXJlIGlzIGEgY29tcGFyaXNvbiB3aXRoIE1pbml4IEZTOgorCisqIExpbnV4IGZkaXNrIHJlcG9ydHMgb24gcGFydGl0aW9ucworICAtIE1pbml4IEZTICAgICAweDgxIExpbnV4L01pbml4CisgIC0gWGVuaXggRlMgICAgID8/CisgIC0gU3lzdGVtViBGUyAgID8/CisgIC0gQ29oZXJlbnQgRlMgIDB4MDggQUlYIGJvb3RhYmxlCisKKyogU2l6ZSBvZiBhIGJsb2NrIG9yIHpvbmUgKGRhdGEgYWxsb2NhdGlvbiB1bml0IG9uIGRpc2spCisgIC0gTWluaXggRlMgICAgIDEwMjQKKyAgLSBYZW5peCBGUyAgICAgMTAyNCAoYWxzbyA1MTIgPz8pCisgIC0gU3lzdGVtViBGUyAgIDEwMjQgKGFsc28gNTEyIGFuZCAyMDQ4KQorICAtIENvaGVyZW50IEZTICAgNTEyCisKKyogR2VuZXJhbCBsYXlvdXQ6IGFsbCBoYXZlIG9uZSBib290IGJsb2NrLCBvbmUgc3VwZXIgYmxvY2sgYW5kCisgIHNlcGFyYXRlIGFyZWFzIGZvciBpbm9kZXMgYW5kIGZvciBkaXJlY3Rvcmllcy9kYXRhLgorICBPbiBTeXN0ZW1WIFJlbGVhc2UgMiBGUyAoZS5nLiBNaWNyb3BvcnQpIHRoZSBmaXJzdCB0cmFjayBpcyByZXNlcnZlZCBhbmQKKyAgYWxsIHRoZSBibG9jayBudW1iZXJzIChpbmNsdWRpbmcgdGhlIHN1cGVyIGJsb2NrKSBhcmUgb2Zmc2V0IGJ5IG9uZSB0cmFjay4KKworKiBCeXRlIG9yZGVyaW5nIG9mICJzaG9ydCIgKDE2IGJpdCBlbnRpdGllcykgb24gZGlzazoKKyAgLSBNaW5peCBGUyAgICAgbGl0dGxlIGVuZGlhbiAgMCAxCisgIC0gWGVuaXggRlMgICAgIGxpdHRsZSBlbmRpYW4gIDAgMQorICAtIFN5c3RlbVYgRlMgICBsaXR0bGUgZW5kaWFuICAwIDEKKyAgLSBDb2hlcmVudCBGUyAgbGl0dGxlIGVuZGlhbiAgMCAxCisgIE9mIGNvdXJzZSwgdGhpcyBhZmZlY3RzIG9ubHkgdGhlIGZpbGUgc3lzdGVtLCBub3QgdGhlIGRhdGEgb2YgZmlsZXMgb24gaXQhCisKKyogQnl0ZSBvcmRlcmluZyBvZiAibG9uZyIgKDMyIGJpdCBlbnRpdGllcykgb24gZGlzazoKKyAgLSBNaW5peCBGUyAgICAgbGl0dGxlIGVuZGlhbiAgMCAxIDIgMworICAtIFhlbml4IEZTICAgICBsaXR0bGUgZW5kaWFuICAwIDEgMiAzCisgIC0gU3lzdGVtViBGUyAgIGxpdHRsZSBlbmRpYW4gIDAgMSAyIDMKKyAgLSBDb2hlcmVudCBGUyAgUERQLTExICAgICAgICAgMiAzIDAgMQorICBPZiBjb3Vyc2UsIHRoaXMgYWZmZWN0cyBvbmx5IHRoZSBmaWxlIHN5c3RlbSwgbm90IHRoZSBkYXRhIG9mIGZpbGVzIG9uIGl0IQorCisqIElub2RlIG9uIGRpc2s6ICJzaG9ydCIsIDAgbWVhbnMgbm9uLWV4aXN0ZW50LCB0aGUgcm9vdCBkaXIgaW5vIGlzOgorICAtIE1pbml4IEZTICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKKyAgLSBYZW5peCBGUywgU3lzdGVtViBGUywgQ29oZXJlbnQgRlMgICAyCisKKyogTWF4aW11bSBudW1iZXIgb2YgaGFyZCBsaW5rcyB0byBhIGZpbGU6CisgIC0gTWluaXggRlMgICAgIDI1MAorICAtIFhlbml4IEZTICAgICA/PworICAtIFN5c3RlbVYgRlMgICA/PworICAtIENvaGVyZW50IEZTICA+PTEwMDAwCisKKyogRnJlZSBpbm9kZSBtYW5hZ2VtZW50OgorICAtIE1pbml4IEZTICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIGJpdG1hcAorICAtIFhlbml4IEZTLCBTeXN0ZW1WIEZTLCBDb2hlcmVudCBGUworICAgICAgVGhlcmUgaXMgYSBjYWNoZSBvZiBhIGNlcnRhaW4gbnVtYmVyIG9mIGZyZWUgaW5vZGVzIGluIHRoZSBzdXBlci1ibG9jay4KKyAgICAgIFdoZW4gaXQgaXMgZXhoYXVzdGVkLCBuZXcgZnJlZSBpbm9kZXMgYXJlIGZvdW5kIHVzaW5nIGEgbGluZWFyIHNlYXJjaC4KKworKiBGcmVlIGJsb2NrIG1hbmFnZW1lbnQ6CisgIC0gTWluaXggRlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgYml0bWFwCisgIC0gWGVuaXggRlMsIFN5c3RlbVYgRlMsIENvaGVyZW50IEZTCisgICAgICBGcmVlIGJsb2NrcyBhcmUgb3JnYW5pemVkIGluIGEgImZyZWUgbGlzdCIuIE1heWJlIGEgbWlzbGVhZGluZyB0ZXJtLAorICAgICAgc2luY2UgaXQgaXMgbm90IHRydWUgdGhhdCBldmVyeSBmcmVlIGJsb2NrIGNvbnRhaW5zIGEgcG9pbnRlciB0bworICAgICAgdGhlIG5leHQgZnJlZSBibG9jay4gUmF0aGVyLCB0aGUgZnJlZSBibG9ja3MgYXJlIG9yZ2FuaXplZCBpbiBjaHVua3MKKyAgICAgIG9mIGxpbWl0ZWQgc2l6ZSwgYW5kIGV2ZXJ5IG5vdyBhbmQgdGhlbiBhIGZyZWUgYmxvY2sgY29udGFpbnMgcG9pbnRlcnMKKyAgICAgIHRvIHRoZSBmcmVlIGJsb2NrcyBwZXJ0YWluaW5nIHRvIHRoZSBuZXh0IGNodW5rOyB0aGUgZmlyc3Qgb2YgdGhlc2UKKyAgICAgIGNvbnRhaW5zIHBvaW50ZXJzIGFuZCBzbyBvbi4gVGhlIGxpc3QgdGVybWluYXRlcyB3aXRoIGEgImJsb2NrIG51bWJlciIKKyAgICAgIDAgb24gWGVuaXggRlMgYW5kIFN5c3RlbVYgRlMsIHdpdGggYSBibG9jayB6ZXJvZWQgb3V0IG9uIENvaGVyZW50IEZTLgorCisqIFN1cGVyLWJsb2NrIGxvY2F0aW9uOgorICAtIE1pbml4IEZTICAgICBibG9jayAxID0gYnl0ZXMgMTAyNC4uMjA0NworICAtIFhlbml4IEZTICAgICBibG9jayAxID0gYnl0ZXMgMTAyNC4uMjA0NworICAtIFN5c3RlbVYgRlMgICBieXRlcyA1MTIuLjEwMjMKKyAgLSBDb2hlcmVudCBGUyAgYmxvY2sgMSA9IGJ5dGVzIDUxMi4uMTAyMworCisqIFN1cGVyLWJsb2NrIGxheW91dDoKKyAgLSBNaW5peCBGUworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX25pbm9kZXM7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbnpvbmVzOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX2ltYXBfYmxvY2tzOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX3ptYXBfYmxvY2tzOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX2ZpcnN0ZGF0YXpvbmU7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHNfbG9nX3pvbmVfc2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzX21heF9zaXplOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX21hZ2ljOworICAtIFhlbml4IEZTLCBTeXN0ZW1WIEZTLCBDb2hlcmVudCBGUworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX2ZpcnN0ZGF0YXpvbmU7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgIHNfbnpvbmVzOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX2Z6b25lX2NvdW50OworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICBzX2Z6b25lc1tOSUNGUkVFXTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgc19maW5vZGVfY291bnQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHNfZmlub2Rlc1tOSUNJTk9EXTsKKyAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgICAgc19mbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgICAgc19pbG9jazsKKyAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgICAgc19tb2RpZmllZDsKKyAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgICAgc19yZG9ubHk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgIHNfdGltZTsKKyAgICAgICAgICAgICAgICAgICAgc2hvcnQgICAgICAgICAgc19kaW5mb1s0XTsgLS0gU3lzdGVtViBGUyBvbmx5CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgIHNfZnJlZV96b25lczsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgc19mcmVlX2lub2RlczsKKyAgICAgICAgICAgICAgICAgICAgc2hvcnQgICAgICAgICAgc19kaW5mb1s0XTsgLS0gWGVuaXggRlMgb25seQorICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBzX2ludGVybGVhdmVfbSxzX2ludGVybGVhdmVfbjsgLS0gQ29oZXJlbnQgRlMgb25seQorICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICBzX2ZuYW1lWzZdOworICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICBzX2ZwYWNrWzZdOworICAgIHRoZW4gdGhleSBkaWZmZXIgY29uc2lkZXJhYmx5OgorICAgICAgICBYZW5peCBGUworICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICBzX2NsZWFuOworICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICBzX2ZpbGxbMzcxXTsKKyAgICAgICAgICAgICAgICAgICAgbG9uZyAgICAgICAgICAgc19tYWdpYzsKKyAgICAgICAgICAgICAgICAgICAgbG9uZyAgICAgICAgICAgc190eXBlOworICAgICAgICBTeXN0ZW1WIEZTCisgICAgICAgICAgICAgICAgICAgIGxvbmcgICAgICAgICAgIHNfZmlsbFsxMiBvciAxNF07CisgICAgICAgICAgICAgICAgICAgIGxvbmcgICAgICAgICAgIHNfc3RhdGU7CisgICAgICAgICAgICAgICAgICAgIGxvbmcgICAgICAgICAgIHNfbWFnaWM7CisgICAgICAgICAgICAgICAgICAgIGxvbmcgICAgICAgICAgIHNfdHlwZTsKKyAgICAgICAgQ29oZXJlbnQgRlMKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAgc191bmlxdWU7CisgICAgTm90ZSB0aGF0IENvaGVyZW50IEZTIGhhcyBubyBtYWdpYy4KKworKiBJbm9kZSBsYXlvdXQ6CisgIC0gTWluaXggRlMKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgaV9tb2RlOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBpX3VpZDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAgaV9zaXplOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICBpX3RpbWU7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgIGlfZ2lkOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICBpX25saW5rczsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgaV96b25lWzcrMSsxXTsKKyAgLSBYZW5peCBGUywgU3lzdGVtViBGUywgQ29oZXJlbnQgRlMKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgaV9tb2RlOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBpX25saW5rOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBpX3VpZDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgaV9naWQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgIGlfc2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAgaV96b25lWzMqKDEwKzErMSsxKV07CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgIGlfYXRpbWU7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgIGlfbXRpbWU7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgIGlfY3RpbWU7CisKKyogUmVndWxhciBmaWxlIGRhdGEgYmxvY2tzIGFyZSBvcmdhbml6ZWQgYXMKKyAgLSBNaW5peCBGUworICAgICAgICAgICAgICAgNyBkaXJlY3QgYmxvY2tzCisgICAgICAgICAgICAgICAxIGluZGlyZWN0IGJsb2NrIChwb2ludGVycyB0byBibG9ja3MpCisgICAgICAgICAgICAgICAxIGRvdWJsZS1pbmRpcmVjdCBibG9jayAocG9pbnRlciB0byBwb2ludGVycyB0byBibG9ja3MpCisgIC0gWGVuaXggRlMsIFN5c3RlbVYgRlMsIENvaGVyZW50IEZTCisgICAgICAgICAgICAgIDEwIGRpcmVjdCBibG9ja3MKKyAgICAgICAgICAgICAgIDEgaW5kaXJlY3QgYmxvY2sgKHBvaW50ZXJzIHRvIGJsb2NrcykKKyAgICAgICAgICAgICAgIDEgZG91YmxlLWluZGlyZWN0IGJsb2NrIChwb2ludGVyIHRvIHBvaW50ZXJzIHRvIGJsb2NrcykKKyAgICAgICAgICAgICAgIDEgdHJpcGxlLWluZGlyZWN0IGJsb2NrIChwb2ludGVyIHRvIHBvaW50ZXJzIHRvIHBvaW50ZXJzIHRvIGJsb2NrcykKKworKiBJbm9kZSBzaXplLCBpbm9kZXMgcGVyIGJsb2NrCisgIC0gTWluaXggRlMgICAgICAgIDMyICAgMzIKKyAgLSBYZW5peCBGUyAgICAgICAgNjQgICAxNgorICAtIFN5c3RlbVYgRlMgICAgICA2NCAgIDE2CisgIC0gQ29oZXJlbnQgRlMgICAgIDY0ICAgIDgKKworKiBEaXJlY3RvcnkgZW50cnkgb24gZGlzaworICAtIE1pbml4IEZTCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IGlub2RlOworICAgICAgICAgICAgICAgICAgICBjaGFyIG5hbWVbMTQvMzBdOworICAtIFhlbml4IEZTLCBTeXN0ZW1WIEZTLCBDb2hlcmVudCBGUworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBpbm9kZTsKKyAgICAgICAgICAgICAgICAgICAgY2hhciBuYW1lWzE0XTsKKworKiBEaXIgZW50cnkgc2l6ZSwgZGlyIGVudHJpZXMgcGVyIGJsb2NrCisgIC0gTWluaXggRlMgICAgIDE2LzMyICAgIDY0LzMyCisgIC0gWGVuaXggRlMgICAgIDE2ICAgICAgIDY0CisgIC0gU3lzdGVtViBGUyAgIDE2ICAgICAgIDY0CisgIC0gQ29oZXJlbnQgRlMgIDE2ICAgICAgIDMyCisKKyogSG93IHRvIGltcGxlbWVudCBzeW1ib2xpYyBsaW5rcyBzdWNoIHRoYXQgdGhlIGhvc3QgZnNjayBkb2Vzbid0IHNjcmVhbToKKyAgLSBNaW5peCBGUyAgICAgbm9ybWFsCisgIC0gWGVuaXggRlMgICAgIGtsdWRnZTogYXMgcmVndWxhciBmaWxlcyB3aXRoICBjaG1vZCAxMDAwCisgIC0gU3lzdGVtViBGUyAgID8/CisgIC0gQ29oZXJlbnQgRlMgIGtsdWRnZTogYXMgcmVndWxhciBmaWxlcyB3aXRoICBjaG1vZCAxMDAwCisKKworTm90YXRpb246IFdlIG9mdGVuIHNwZWFrIG9mIGEgImJsb2NrIiBidXQgbWVhbiBhIHpvbmUgKHRoZSBhbGxvY2F0aW9uIHVuaXQpCithbmQgbm90IHRoZSBkaXNrIGRyaXZlcidzIG5vdGlvbiBvZiAiYmxvY2siLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy90bXBmcy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3RtcGZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGVmNTUxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy90bXBmcy50eHQKQEAgLTAsMCArMSwxNDggQEAKK1RtcGZzIGlzIGEgZmlsZSBzeXN0ZW0gd2hpY2gga2VlcHMgYWxsIGZpbGVzIGluIHZpcnR1YWwgbWVtb3J5LgorCisKK0V2ZXJ5dGhpbmcgaW4gdG1wZnMgaXMgdGVtcG9yYXJ5IGluIHRoZSBzZW5zZSB0aGF0IG5vIGZpbGVzIHdpbGwgYmUKK2NyZWF0ZWQgb24geW91ciBoYXJkIGRyaXZlLiBJZiB5b3UgdW5tb3VudCBhIHRtcGZzIGluc3RhbmNlLAorZXZlcnl0aGluZyBzdG9yZWQgdGhlcmVpbiBpcyBsb3N0LgorCit0bXBmcyBwdXRzIGV2ZXJ5dGhpbmcgaW50byB0aGUga2VybmVsIGludGVybmFsIGNhY2hlcyBhbmQgZ3Jvd3MgYW5kCitzaHJpbmtzIHRvIGFjY29tbW9kYXRlIHRoZSBmaWxlcyBpdCBjb250YWlucyBhbmQgaXMgYWJsZSB0byBzd2FwCit1bm5lZWRlZCBwYWdlcyBvdXQgdG8gc3dhcCBzcGFjZS4gSXQgaGFzIG1heGltdW0gc2l6ZSBsaW1pdHMgd2hpY2ggY2FuCitiZSBhZGp1c3RlZCBvbiB0aGUgZmx5IHZpYSAnbW91bnQgLW8gcmVtb3VudCAuLi4nCisKK0lmIHlvdSBjb21wYXJlIGl0IHRvIHJhbWZzICh3aGljaCB3YXMgdGhlIHRlbXBsYXRlIHRvIGNyZWF0ZSB0bXBmcykKK3lvdSBnYWluIHN3YXBwaW5nIGFuZCBsaW1pdCBjaGVja2luZy4gQW5vdGhlciBzaW1pbGFyIHRoaW5nIGlzIHRoZSBSQU0KK2Rpc2sgKC9kZXYvcmFtKiksIHdoaWNoIHNpbXVsYXRlcyBhIGZpeGVkIHNpemUgaGFyZCBkaXNrIGluIHBoeXNpY2FsCitSQU0sIHdoZXJlIHlvdSBoYXZlIHRvIGNyZWF0ZSBhbiBvcmRpbmFyeSBmaWxlc3lzdGVtIG9uIHRvcC4gUmFtZGlza3MKK2Nhbm5vdCBzd2FwIGFuZCB5b3UgZG8gbm90IGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIHJlc2l6ZSB0aGVtLiAKKworU2luY2UgdG1wZnMgbGl2ZXMgY29tcGxldGVseSBpbiB0aGUgcGFnZSBjYWNoZSBhbmQgb24gc3dhcCwgYWxsIHRtcGZzCitwYWdlcyBjdXJyZW50bHkgaW4gbWVtb3J5IHdpbGwgc2hvdyB1cCBhcyBjYWNoZWQuIEl0IHdpbGwgbm90IHNob3cgdXAKK2FzIHNoYXJlZCBvciBzb21ldGhpbmcgbGlrZSB0aGF0LiBGdXJ0aGVyIG9uIHlvdSBjYW4gY2hlY2sgdGhlIGFjdHVhbAorUkFNK3N3YXAgdXNlIG9mIGEgdG1wZnMgaW5zdGFuY2Ugd2l0aCBkZigxKSBhbmQgZHUoMSkuCisKKwordG1wZnMgaGFzIHRoZSBmb2xsb3dpbmcgdXNlczoKKworMSkgVGhlcmUgaXMgYWx3YXlzIGEga2VybmVsIGludGVybmFsIG1vdW50IHdoaWNoIHlvdSB3aWxsIG5vdCBzZWUgYXQKKyAgIGFsbC4gVGhpcyBpcyB1c2VkIGZvciBzaGFyZWQgYW5vbnltb3VzIG1hcHBpbmdzIGFuZCBTWVNWIHNoYXJlZAorICAgbWVtb3J5LiAKKworICAgVGhpcyBtb3VudCBkb2VzIG5vdCBkZXBlbmQgb24gQ09ORklHX1RNUEZTLiBJZiBDT05GSUdfVE1QRlMgaXMgbm90CisgICBzZXQsIHRoZSB1c2VyIHZpc2libGUgcGFydCBvZiB0bXBmcyBpcyBub3QgYnVpbGQuIEJ1dCB0aGUgaW50ZXJuYWwKKyAgIG1lY2hhbmlzbXMgYXJlIGFsd2F5cyBwcmVzZW50LgorCisyKSBnbGliYyAyLjIgYW5kIGFib3ZlIGV4cGVjdHMgdG1wZnMgdG8gYmUgbW91bnRlZCBhdCAvZGV2L3NobSBmb3IKKyAgIFBPU0lYIHNoYXJlZCBtZW1vcnkgKHNobV9vcGVuLCBzaG1fdW5saW5rKS4gQWRkaW5nIHRoZSBmb2xsb3dpbmcKKyAgIGxpbmUgdG8gL2V0Yy9mc3RhYiBzaG91bGQgdGFrZSBjYXJlIG9mIHRoaXM6CisKKwl0bXBmcwkvZGV2L3NobQl0bXBmcwlkZWZhdWx0cwkwIDAKKworICAgUmVtZW1iZXIgdG8gY3JlYXRlIHRoZSBkaXJlY3RvcnkgdGhhdCB5b3UgaW50ZW5kIHRvIG1vdW50IHRtcGZzIG9uCisgICBpZiBuZWNlc3NhcnkuCisKKyAgIFRoaXMgbW91bnQgaXMgX25vdF8gbmVlZGVkIGZvciBTWVNWIHNoYXJlZCBtZW1vcnkuIFRoZSBpbnRlcm5hbAorICAgbW91bnQgaXMgdXNlZCBmb3IgdGhhdC4gKEluIHRoZSAyLjMga2VybmVsIHZlcnNpb25zIGl0IHdhcworICAgbmVjZXNzYXJ5IHRvIG1vdW50IHRoZSBwcmVkZWNlc3NvciBvZiB0bXBmcyAoc2htIGZzKSB0byB1c2UgU1lTVgorICAgc2hhcmVkIG1lbW9yeSkKKworMykgU29tZSBwZW9wbGUgKGluY2x1ZGluZyBtZSkgZmluZCBpdCB2ZXJ5IGNvbnZlbmllbnQgdG8gbW91bnQgaXQKKyAgIGUuZy4gb24gL3RtcCBhbmQgL3Zhci90bXAgYW5kIGhhdmUgYSBiaWcgc3dhcCBwYXJ0aXRpb24uIEFuZCBub3cKKyAgIGxvb3AgbW91bnRzIG9mIHRtcGZzIGZpbGVzIGRvIHdvcmssIHNvIG1raW5pdHJkIHNoaXBwZWQgYnkgbW9zdAorICAgZGlzdHJpYnV0aW9ucyBzaG91bGQgc3VjY2VlZCB3aXRoIGEgdG1wZnMgL3RtcC4KKworNCkgQW5kIHByb2JhYmx5IGEgbG90IG1vcmUgSSBkbyBub3Qga25vdyBhYm91dCA6LSkKKworCit0bXBmcyBoYXMgdGhyZWUgbW91bnQgb3B0aW9ucyBmb3Igc2l6aW5nOgorCitzaXplOiAgICAgIFRoZSBsaW1pdCBvZiBhbGxvY2F0ZWQgYnl0ZXMgZm9yIHRoaXMgdG1wZnMgaW5zdGFuY2UuIFRoZSAKKyAgICAgICAgICAgZGVmYXVsdCBpcyBoYWxmIG9mIHlvdXIgcGh5c2ljYWwgUkFNIHdpdGhvdXQgc3dhcC4gSWYgeW91CisgICAgICAgICAgIG92ZXJzaXplIHlvdXIgdG1wZnMgaW5zdGFuY2VzIHRoZSBtYWNoaW5lIHdpbGwgZGVhZGxvY2sKKyAgICAgICAgICAgc2luY2UgdGhlIE9PTSBoYW5kbGVyIHdpbGwgbm90IGJlIGFibGUgdG8gZnJlZSB0aGF0IG1lbW9yeS4KK25yX2Jsb2NrczogVGhlIHNhbWUgYXMgc2l6ZSwgYnV0IGluIGJsb2NrcyBvZiBQQUdFX0NBQ0hFX1NJWkUuCitucl9pbm9kZXM6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbm9kZXMgZm9yIHRoaXMgaW5zdGFuY2UuIFRoZSBkZWZhdWx0CisgICAgICAgICAgIGlzIGhhbGYgb2YgdGhlIG51bWJlciBvZiB5b3VyIHBoeXNpY2FsIFJBTSBwYWdlcywgb3IgKG9uIGEKKyAgICAgICAgICAgbWFjaGluZSB3aXRoIGhpZ2htZW0pIHRoZSBudW1iZXIgb2YgbG93bWVtIFJBTSBwYWdlcywKKyAgICAgICAgICAgd2hpY2hldmVyIGlzIHRoZSBsb3dlci4KKworVGhlc2UgcGFyYW1ldGVycyBhY2NlcHQgYSBzdWZmaXggaywgbSBvciBnIGZvciBraWxvLCBtZWdhIGFuZCBnaWdhIGFuZAorY2FuIGJlIGNoYW5nZWQgb24gcmVtb3VudC4gIFRoZSBzaXplIHBhcmFtZXRlciBhbHNvIGFjY2VwdHMgYSBzdWZmaXggJQordG8gbGltaXQgdGhpcyB0bXBmcyBpbnN0YW5jZSB0byB0aGF0IHBlcmNlbnRhZ2Ugb2YgeW91ciBwaHlzaWNhbCBSQU06Cit0aGUgZGVmYXVsdCwgd2hlbiBuZWl0aGVyIHNpemUgbm9yIG5yX2Jsb2NrcyBpcyBzcGVjaWZpZWQsIGlzIHNpemU9NTAlCisKK0lmIG5yX2Jsb2Nrcz0wIChvciBzaXplPTApLCBibG9ja3Mgd2lsbCBub3QgYmUgbGltaXRlZCBpbiB0aGF0IGluc3RhbmNlOworaWYgbnJfaW5vZGVzPTAsIGlub2RlcyB3aWxsIG5vdCBiZSBsaW1pdGVkLiAgSXQgaXMgZ2VuZXJhbGx5IHVud2lzZSB0bworbW91bnQgd2l0aCBzdWNoIG9wdGlvbnMsIHNpbmNlIGl0IGFsbG93cyBhbnkgdXNlciB3aXRoIHdyaXRlIGFjY2VzcyB0bwordXNlIHVwIGFsbCB0aGUgbWVtb3J5IG9uIHRoZSBtYWNoaW5lOyBidXQgZW5oYW5jZXMgdGhlIHNjYWxhYmlsaXR5IG9mCit0aGF0IGluc3RhbmNlIGluIGEgc3lzdGVtIHdpdGggbWFueSBjcHVzIG1ha2luZyBpbnRlbnNpdmUgdXNlIG9mIGl0LgorCisKK3RtcGZzIGhhcyBhIG1vdW50IG9wdGlvbiB0byBzZXQgdGhlIE5VTUEgbWVtb3J5IGFsbG9jYXRpb24gcG9saWN5IGZvcgorYWxsIGZpbGVzIGluIHRoYXQgaW5zdGFuY2UgKGlmIENPTkZJR19OVU1BIGlzIGVuYWJsZWQpIC0gd2hpY2ggY2FuIGJlCithZGp1c3RlZCBvbiB0aGUgZmx5IHZpYSAnbW91bnQgLW8gcmVtb3VudCAuLi4nCisKK21wb2w9ZGVmYXVsdCAgICAgICAgICAgICB1c2UgdGhlIHByb2Nlc3MgYWxsb2NhdGlvbiBwb2xpY3kKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc2VlIHNldF9tZW1wb2xpY3koMikpCittcG9sPXByZWZlcjpOb2RlICAgICAgICAgcHJlZmVycyB0byBhbGxvY2F0ZSBtZW1vcnkgZnJvbSB0aGUgZ2l2ZW4gTm9kZQorbXBvbD1iaW5kOk5vZGVMaXN0ICAgICAgIGFsbG9jYXRlcyBtZW1vcnkgb25seSBmcm9tIG5vZGVzIGluIE5vZGVMaXN0CittcG9sPWludGVybGVhdmUgICAgICAgICAgcHJlZmVycyB0byBhbGxvY2F0ZSBmcm9tIGVhY2ggbm9kZSBpbiB0dXJuCittcG9sPWludGVybGVhdmU6Tm9kZUxpc3QgYWxsb2NhdGVzIGZyb20gZWFjaCBub2RlIG9mIE5vZGVMaXN0IGluIHR1cm4KK21wb2w9bG9jYWwJCSBwcmVmZXJzIHRvIGFsbG9jYXRlIG1lbW9yeSBmcm9tIHRoZSBsb2NhbCBub2RlCisKK05vZGVMaXN0IGZvcm1hdCBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGRlY2ltYWwgbnVtYmVycyBhbmQgcmFuZ2VzLAorYSByYW5nZSBiZWluZyB0d28gaHlwaGVuLXNlcGFyYXRlZCBkZWNpbWFsIG51bWJlcnMsIHRoZSBzbWFsbGVzdCBhbmQKK2xhcmdlc3Qgbm9kZSBudW1iZXJzIGluIHRoZSByYW5nZS4gIEZvciBleGFtcGxlLCBtcG9sPWJpbmQ6MC0zLDUsNyw5LTE1CisKK0EgbWVtb3J5IHBvbGljeSB3aXRoIGEgdmFsaWQgTm9kZUxpc3Qgd2lsbCBiZSBzYXZlZCwgYXMgc3BlY2lmaWVkLCBmb3IKK3VzZSBhdCBmaWxlIGNyZWF0aW9uIHRpbWUuICBXaGVuIGEgdGFzayBhbGxvY2F0ZXMgYSBmaWxlIGluIHRoZSBmaWxlCitzeXN0ZW0sIHRoZSBtb3VudCBvcHRpb24gbWVtb3J5IHBvbGljeSB3aWxsIGJlIGFwcGxpZWQgd2l0aCBhIE5vZGVMaXN0LAoraWYgYW55LCBtb2RpZmllZCBieSB0aGUgY2FsbGluZyB0YXNrJ3MgY3B1c2V0IGNvbnN0cmFpbnRzCitbU2VlIERvY3VtZW50YXRpb24vY2dyb3Vwcy9jcHVzZXRzLnR4dF0gYW5kIGFueSBvcHRpb25hbCBmbGFncywgbGlzdGVkCitiZWxvdy4gIElmIHRoZSByZXN1bHRpbmcgTm9kZUxpc3RzIGlzIHRoZSBlbXB0eSBzZXQsIHRoZSBlZmZlY3RpdmUgbWVtb3J5Citwb2xpY3kgZm9yIHRoZSBmaWxlIHdpbGwgcmV2ZXJ0IHRvICJkZWZhdWx0IiBwb2xpY3kuCisKK05VTUEgbWVtb3J5IGFsbG9jYXRpb24gcG9saWNpZXMgaGF2ZSBvcHRpb25hbCBmbGFncyB0aGF0IGNhbiBiZSB1c2VkIGluCitjb25qdW5jdGlvbiB3aXRoIHRoZWlyIG1vZGVzLiAgVGhlc2Ugb3B0aW9uYWwgZmxhZ3MgY2FuIGJlIHNwZWNpZmllZAord2hlbiB0bXBmcyBpcyBtb3VudGVkIGJ5IGFwcGVuZGluZyB0aGVtIHRvIHRoZSBtb2RlIGJlZm9yZSB0aGUgTm9kZUxpc3QuCitTZWUgRG9jdW1lbnRhdGlvbi92bS9udW1hX21lbW9yeV9wb2xpY3kudHh0IGZvciBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZQorbWVtb3J5IGFsbG9jYXRpb24gcG9saWN5IG1vZGUgZmxhZ3MgYW5kIHRoZWlyIGVmZmVjdCBvbiBtZW1vcnkgcG9saWN5LgorCisJPXN0YXRpYwkJaXMgZXF1aXZhbGVudCB0bwlNUE9MX0ZfU1RBVElDX05PREVTCisJPXJlbGF0aXZlCWlzIGVxdWl2YWxlbnQgdG8JTVBPTF9GX1JFTEFUSVZFX05PREVTCisKK0ZvciBleGFtcGxlLCBtcG9sPWJpbmQ9c3RhdGljOk5vZGVMaXN0LCBpcyB0aGUgZXF1aXZhbGVudCBvZiBhbgorYWxsb2NhdGlvbiBwb2xpY3kgb2YgTVBPTF9CSU5EIHwgTVBPTF9GX1NUQVRJQ19OT0RFUy4KKworTm90ZSB0aGF0IHRyeWluZyB0byBtb3VudCBhIHRtcGZzIHdpdGggYW4gbXBvbCBvcHRpb24gd2lsbCBmYWlsIGlmIHRoZQorcnVubmluZyBrZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBOVU1BOyBhbmQgd2lsbCBmYWlsIGlmIGl0cyBub2RlbGlzdAorc3BlY2lmaWVzIGEgbm9kZSB3aGljaCBpcyBub3Qgb25saW5lLiAgSWYgeW91ciBzeXN0ZW0gcmVsaWVzIG9uIHRoYXQKK3RtcGZzIGJlaW5nIG1vdW50ZWQsIGJ1dCBmcm9tIHRpbWUgdG8gdGltZSBydW5zIGEga2VybmVsIGJ1aWx0IHdpdGhvdXQKK05VTUEgY2FwYWJpbGl0eSAocGVyaGFwcyBhIHNhZmUgcmVjb3Zlcnkga2VybmVsKSwgb3Igd2l0aCBmZXdlciBub2Rlcworb25saW5lLCB0aGVuIGl0IGlzIGFkdmlzYWJsZSB0byBvbWl0IHRoZSBtcG9sIG9wdGlvbiBmcm9tIGF1dG9tYXRpYworbW91bnQgb3B0aW9ucy4gIEl0IGNhbiBiZSBhZGRlZCBsYXRlciwgd2hlbiB0aGUgdG1wZnMgaXMgYWxyZWFkeSBtb3VudGVkCitvbiBNb3VudFBvaW50LCBieSAnbW91bnQgLW8gcmVtb3VudCxtcG9sPVBvbGljeTpOb2RlTGlzdCBNb3VudFBvaW50Jy4KKworCitUbyBzcGVjaWZ5IHRoZSBpbml0aWFsIHJvb3QgZGlyZWN0b3J5IHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgbW91bnQKK29wdGlvbnM6CisKK21vZGU6CVRoZSBwZXJtaXNzaW9ucyBhcyBhbiBvY3RhbCBudW1iZXIKK3VpZDoJVGhlIHVzZXIgaWQgCitnaWQ6CVRoZSBncm91cCBpZAorCitUaGVzZSBvcHRpb25zIGRvIG5vdCBoYXZlIGFueSBlZmZlY3Qgb24gcmVtb3VudC4gWW91IGNhbiBjaGFuZ2UgdGhlc2UKK3BhcmFtZXRlcnMgd2l0aCBjaG1vZCgxKSwgY2hvd24oMSkgYW5kIGNoZ3JwKDEpIG9uIGEgbW91bnRlZCBmaWxlc3lzdGVtLgorCisKK1NvICdtb3VudCAtdCB0bXBmcyAtbyBzaXplPTEwRyxucl9pbm9kZXM9MTBrLG1vZGU9NzAwIHRtcGZzIC9teXRtcGZzJword2lsbCBnaXZlIHlvdSB0bXBmcyBpbnN0YW5jZSBvbiAvbXl0bXBmcyB3aGljaCBjYW4gYWxsb2NhdGUgMTBHQgorUkFNL1NXQVAgaW4gMTAyNDAgaW5vZGVzIGFuZCBpdCBpcyBvbmx5IGFjY2Vzc2libGUgYnkgcm9vdC4KKworCitBdXRob3I6CisgICBDaHJpc3RvcGggUm9obGFuZCA8Y3JAc2FwLmNvbT4sIDEuMTIuMDEKK1VwZGF0ZWQ6CisgICBIdWdoIERpY2tpbnMsIDQgSnVuZSAyMDA3CitVcGRhdGVkOgorICAgS09TQUtJIE1vdG9oaXJvLCAxNiBNYXIgMjAxMApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy91Ymlmcy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3ViaWZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGE2MWQyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy91Ymlmcy50eHQKQEAgLTAsMCArMSwxMTkgQEAKK0ludHJvZHVjdGlvbgorPT09PT09PT09PT09PQorCitVQklGUyBmaWxlLXN5c3RlbSBzdGFuZHMgZm9yIFVCSSBGaWxlIFN5c3RlbS4gVUJJIHN0YW5kcyBmb3IgIlVuc29ydGVkCitCbG9jayBJbWFnZXMiLiBVQklGUyBpcyBhIGZsYXNoIGZpbGUgc3lzdGVtLCB3aGljaCBtZWFucyBpdCBpcyBkZXNpZ25lZAordG8gd29yayB3aXRoIGZsYXNoIGRldmljZXMuIEl0IGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kLCB0aGF0IFVCSUZTCitpcyBjb21wbGV0ZWx5IGRpZmZlcmVudCB0byBhbnkgdHJhZGl0aW9uYWwgZmlsZS1zeXN0ZW0gaW4gTGludXgsIGxpa2UKK0V4dDIsIFhGUywgSkZTLCBldGMuIFVCSUZTIHJlcHJlc2VudHMgYSBzZXBhcmF0ZSBjbGFzcyBvZiBmaWxlLXN5c3RlbXMKK3doaWNoIHdvcmsgd2l0aCBNVEQgZGV2aWNlcywgbm90IGJsb2NrIGRldmljZXMuIFRoZSBvdGhlciBMaW51eAorZmlsZS1zeXN0ZW0gb2YgdGhpcyBjbGFzcyBpcyBKRkZTMi4KKworVG8gbWFrZSBpdCBtb3JlIGNsZWFyLCBoZXJlIGlzIGEgc21hbGwgY29tcGFyaXNvbiBvZiBNVEQgZGV2aWNlcyBhbmQKK2Jsb2NrIGRldmljZXMuCisKKzEgTVREIGRldmljZXMgcmVwcmVzZW50IGZsYXNoIGRldmljZXMgYW5kIHRoZXkgY29uc2lzdCBvZiBlcmFzZWJsb2NrcyBvZgorICByYXRoZXIgbGFyZ2Ugc2l6ZSwgdHlwaWNhbGx5IGFib3V0IDEyOEtpQi4gQmxvY2sgZGV2aWNlcyBjb25zaXN0IG9mCisgIHNtYWxsIGJsb2NrcywgdHlwaWNhbGx5IDUxMiBieXRlcy4KKzIgTVREIGRldmljZXMgc3VwcG9ydCAzIG1haW4gb3BlcmF0aW9ucyAtIHJlYWQgZnJvbSBzb21lIG9mZnNldCB3aXRoaW4gYW4KKyAgZXJhc2VibG9jaywgd3JpdGUgdG8gc29tZSBvZmZzZXQgd2l0aGluIGFuIGVyYXNlYmxvY2ssIGFuZCBlcmFzZSBhIHdob2xlCisgIGVyYXNlYmxvY2suIEJsb2NrICBkZXZpY2VzIHN1cHBvcnQgMiBtYWluIG9wZXJhdGlvbnMgLSByZWFkIGEgd2hvbGUKKyAgYmxvY2sgYW5kIHdyaXRlIGEgd2hvbGUgYmxvY2suCiszIFRoZSB3aG9sZSBlcmFzZWJsb2NrIGhhcyB0byBiZSBlcmFzZWQgYmVmb3JlIGl0IGJlY29tZXMgcG9zc2libGUgdG8KKyAgcmUtd3JpdGUgaXRzIGNvbnRlbnRzLiBCbG9ja3MgbWF5IGJlIGp1c3QgcmUtd3JpdHRlbi4KKzQgRXJhc2VibG9ja3MgYmVjb21lIHdvcm4gb3V0IGFmdGVyIHNvbWUgbnVtYmVyIG9mIGVyYXNlIGN5Y2xlcyAtCisgIHR5cGljYWxseSAxMDBLLTFHIGZvciBTTEMgTkFORCBhbmQgTk9SIGZsYXNoZXMsIGFuZCAxSy0xMEsgZm9yIE1MQworICBOQU5EIGZsYXNoZXMuIEJsb2NrcyBkbyBub3QgaGF2ZSB0aGUgd2Vhci1vdXQgcHJvcGVydHkuCis1IEVyYXNlYmxvY2tzIG1heSBiZWNvbWUgYmFkIChvbmx5IG9uIE5BTkQgZmxhc2hlcykgYW5kIHNvZnR3YXJlIHNob3VsZAorICBkZWFsIHdpdGggdGhpcy4gQmxvY2tzIG9uIGhhcmQgZHJpdmVzIHR5cGljYWxseSBkbyBub3QgYmVjb21lIGJhZCwKKyAgYmVjYXVzZSBoYXJkd2FyZSBoYXMgbWVjaGFuaXNtcyB0byBzdWJzdGl0dXRlIGJhZCBibG9ja3MsIGF0IGxlYXN0IGluCisgIG1vZGVybiBMQkEgZGlza3MuCisKK0l0IHNob3VsZCBiZSBxdWl0ZSBvYnZpb3VzIHdoeSBVQklGUyBpcyB2ZXJ5IGRpZmZlcmVudCB0byB0cmFkaXRpb25hbAorZmlsZS1zeXN0ZW1zLgorCitVQklGUyB3b3JrcyBvbiB0b3Agb2YgVUJJLiBVQkkgaXMgYSBzZXBhcmF0ZSBzb2Z0d2FyZSBsYXllciB3aGljaCBtYXkgYmUKK2ZvdW5kIGluIGRyaXZlcnMvbXRkL3ViaS4gVUJJIGlzIGJhc2ljYWxseSBhIHZvbHVtZSBtYW5hZ2VtZW50IGFuZAord2Vhci1sZXZlbGluZyBsYXllci4gSXQgcHJvdmlkZXMgc28gY2FsbGVkIFVCSSB2b2x1bWVzIHdoaWNoIGlzIGEgaGlnaGVyCitsZXZlbCBhYnN0cmFjdGlvbiB0aGFuIGEgTVREIGRldmljZS4gVGhlIHByb2dyYW1taW5nIG1vZGVsIG9mIFVCSSBkZXZpY2VzCitpcyB2ZXJ5IHNpbWlsYXIgdG8gTVREIGRldmljZXMgLSB0aGV5IHN0aWxsIGNvbnNpc3Qgb2YgbGFyZ2UgZXJhc2VibG9ja3MsCit0aGV5IGhhdmUgcmVhZC93cml0ZS9lcmFzZSBvcGVyYXRpb25zLCBidXQgVUJJIGRldmljZXMgYXJlIGRldm9pZCBvZgorbGltaXRhdGlvbnMgbGlrZSB3ZWFyIGFuZCBiYWQgYmxvY2tzIChpdGVtcyA0IGFuZCA1IGluIHRoZSBhYm92ZSBsaXN0KS4KKworSW4gYSBzZW5zZSwgVUJJRlMgaXMgYSBuZXh0IGdlbmVyYXRpb24gb2YgSkZGUzIgZmlsZS1zeXN0ZW0sIGJ1dCBpdCBpcwordmVyeSBkaWZmZXJlbnQgYW5kIGluY29tcGF0aWJsZSB0byBKRkZTMi4gVGhlIGZvbGxvd2luZyBhcmUgdGhlIG1haW4KK2RpZmZlcmVuY2VzLgorCisqIEpGRlMyIHdvcmtzIG9uIHRvcCBvZiBNVEQgZGV2aWNlcywgVUJJRlMgZGVwZW5kcyBvbiBVQkkgYW5kIHdvcmtzIG9uCisgIHRvcCBvZiBVQkkgdm9sdW1lcy4KKyogSkZGUzIgZG9lcyBub3QgaGF2ZSBvbi1tZWRpYSBpbmRleCBhbmQgaGFzIHRvIGJ1aWxkIGl0IHdoaWxlIG1vdW50aW5nLAorICB3aGljaCByZXF1aXJlcyBmdWxsIG1lZGlhIHNjYW4uIFVCSUZTIG1haW50YWlucyB0aGUgRlMgaW5kZXhpbmcKKyAgaW5mb3JtYXRpb24gb24gdGhlIGZsYXNoIG1lZGlhIGFuZCBkb2VzIG5vdCByZXF1aXJlIGZ1bGwgbWVkaWEgc2NhbiwKKyAgc28gaXQgbW91bnRzIG1hbnkgdGltZXMgZmFzdGVyIHRoYW4gSkZGUzIuCisqIEpGRlMyIGlzIGEgd3JpdGUtdGhyb3VnaCBmaWxlLXN5c3RlbSwgd2hpbGUgVUJJRlMgc3VwcG9ydHMgd3JpdGUtYmFjaywKKyAgd2hpY2ggbWFrZXMgVUJJRlMgbXVjaCBmYXN0ZXIgb24gd3JpdGVzLgorCitTaW1pbGFybHkgdG8gSkZGUzIsIFVCSUZTIHN1cHBvcnRzIG9uLXRoZS1mbGlnaHQgY29tcHJlc3Npb24gd2hpY2ggbWFrZXMKK2l0IHBvc3NpYmxlIHRvIGZpdCBxdWl0ZSBhIGxvdCBvZiBkYXRhIHRvIHRoZSBmbGFzaC4KKworU2ltaWxhcmx5IHRvIEpGRlMyLCBVQklGUyBpcyB0b2xlcmFudCBvZiB1bmNsZWFuIHJlYm9vdHMgYW5kIHBvd2VyLWN1dHMuCitJdCBkb2VzIG5vdCBuZWVkIHN0dWZmIGxpa2UgZnNjay5leHQyLiBVQklGUyBhdXRvbWF0aWNhbGx5IHJlcGxheXMgaXRzCitqb3VybmFsIGFuZCByZWNvdmVycyBmcm9tIGNyYXNoZXMsIGVuc3VyaW5nIHRoYXQgdGhlIG9uLWZsYXNoIGRhdGEKK3N0cnVjdHVyZXMgYXJlIGNvbnNpc3RlbnQuCisKK1VCSUZTIHNjYWxlcyBsb2dhcml0aG1pY2FsbHkgKG1vc3Qgb2YgdGhlIGRhdGEgc3RydWN0dXJlcyBpdCB1c2VzIGFyZQordHJlZXMpLCBzbyB0aGUgbW91bnQgdGltZSBhbmQgbWVtb3J5IGNvbnN1bXB0aW9uIGRvIG5vdCBsaW5lYXJseSBkZXBlbmQKK29uIHRoZSBmbGFzaCBzaXplLCBsaWtlIGluIGNhc2Ugb2YgSkZGUzIuIFRoaXMgaXMgYmVjYXVzZSBVQklGUworbWFpbnRhaW5zIHRoZSBGUyBpbmRleCBvbiB0aGUgZmxhc2ggbWVkaWEuIEhvd2V2ZXIsIFVCSUZTIGRlcGVuZHMgb24KK1VCSSwgd2hpY2ggc2NhbGVzIGxpbmVhcmx5LiBTbyBvdmVyYWxsIFVCSS9VQklGUyBzdGFjayBzY2FsZXMgbGluZWFybHkuCitOZXZlcnRoZWxlc3MsIFVCSS9VQklGUyBzY2FsZXMgY29uc2lkZXJhYmx5IGJldHRlciB0aGFuIEpGRlMyLgorCitUaGUgYXV0aG9ycyBvZiBVQklGUyBiZWxpZXZlLCB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIGRldmVsb3AgVUJJMiB3aGljaAord291bGQgc2NhbGUgbG9nYXJpdGhtaWNhbGx5IGFzIHdlbGwuIFVCSTIgd291bGQgc3VwcG9ydCB0aGUgc2FtZSBBUEkgYXMgVUJJLAorYnV0IGl0IHdvdWxkIGJlIGJpbmFyeSBpbmNvbXBhdGlibGUgdG8gVUJJLiBTbyBVQklGUyB3b3VsZCBub3QgbmVlZCB0byBiZQorY2hhbmdlZCB0byB1c2UgVUJJMgorCisKK01vdW50IG9wdGlvbnMKKz09PT09PT09PT09PT0KKworKCopID09IGRlZmF1bHQuCisKK2J1bGtfcmVhZAkJcmVhZCBtb3JlIGluIG9uZSBnbyB0byB0YWtlIGFkdmFudGFnZSBvZiBmbGFzaAorCQkJbWVkaWEgdGhhdCByZWFkIGZhc3RlciBzZXF1ZW50aWFsbHkKK25vX2J1bGtfcmVhZCAoKikJZG8gbm90IGJ1bGstcmVhZAorbm9fY2hrX2RhdGFfY3JjICgqKQlza2lwIGNoZWNraW5nIG9mIENSQ3Mgb24gZGF0YSBub2RlcyBpbiBvcmRlciB0bworCQkJaW1wcm92ZSByZWFkIHBlcmZvcm1hbmNlLiBVc2UgdGhpcyBvcHRpb24gb25seQorCQkJaWYgdGhlIGZsYXNoIG1lZGlhIGlzIGhpZ2hseSByZWxpYWJsZS4gVGhlIGVmZmVjdAorCQkJb2YgdGhpcyBvcHRpb24gaXMgdGhhdCBjb3JydXB0aW9uIG9mIHRoZSBjb250ZW50cworCQkJb2YgYSBmaWxlIGNhbiBnbyB1bm5vdGljZWQuCitjaGtfZGF0YV9jcmMJCWRvIG5vdCBza2lwIGNoZWNraW5nIENSQ3Mgb24gZGF0YSBub2RlcworY29tcHI9bm9uZSAgICAgICAgICAgICAgb3ZlcnJpZGUgZGVmYXVsdCBjb21wcmVzc29yIGFuZCBzZXQgaXQgdG8gIm5vbmUiCitjb21wcj1sem8gICAgICAgICAgICAgICBvdmVycmlkZSBkZWZhdWx0IGNvbXByZXNzb3IgYW5kIHNldCBpdCB0byAibHpvIgorY29tcHI9emxpYiAgICAgICAgICAgICAgb3ZlcnJpZGUgZGVmYXVsdCBjb21wcmVzc29yIGFuZCBzZXQgaXQgdG8gInpsaWIiCisKKworUXVpY2sgdXNhZ2UgaW5zdHJ1Y3Rpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIFVCSSB2b2x1bWUgdG8gbW91bnQgaXMgc3BlY2lmaWVkIHVzaW5nICJ1YmlYX1kiIG9yICJ1YmlYOk5BTUUiIHN5bnRheCwKK3doZXJlICJYIiBpcyBVQkkgZGV2aWNlIG51bWJlciwgIlkiIGlzIFVCSSB2b2x1bWUgbnVtYmVyLCBhbmQgIk5BTUUiIGlzCitVQkkgdm9sdW1lIG5hbWUuCisKK01vdW50IHZvbHVtZSAwIG9uIFVCSSBkZXZpY2UgMCB0byAvbW50L3ViaWZzOgorJCBtb3VudCAtdCB1YmlmcyB1YmkwXzAgL21udC91YmlmcworCitNb3VudCAicm9vdGZzIiB2b2x1bWUgb2YgVUJJIGRldmljZSAwIHRvIC9tbnQvdWJpZnMgKCJyb290ZnMiIGlzIHZvbHVtZQorbmFtZSk6CiskIG1vdW50IC10IHViaWZzIHViaTA6cm9vdGZzIC9tbnQvdWJpZnMKKworVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIHRoZSBrZXJuZWwgYm9vdCBhcmd1bWVudHMgdG8gYXR0YWNoIG10ZDAKK3RvIFVCSSBhbmQgbW91bnQgdm9sdW1lICJyb290ZnMiOgordWJpLm10ZD0wIHJvb3Q9dWJpMDpyb290ZnMgcm9vdGZzdHlwZT11YmlmcworCitSZWZlcmVuY2VzCis9PT09PT09PT09CisKK1VCSUZTIGRvY3VtZW50YXRpb24gYW5kIEZBUS9IT1dUTyBhdCB0aGUgTVREIHdlYiBzaXRlOgoraHR0cDovL3d3dy5saW51eC1tdGQuaW5mcmFkZWFkLm9yZy9kb2MvdWJpZnMuaHRtbAoraHR0cDovL3d3dy5saW51eC1tdGQuaW5mcmFkZWFkLm9yZy9mYXEvdWJpZnMuaHRtbApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy91ZGYudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy91ZGYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwMmI5NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3VkZi50eHQKQEAgLTAsMCArMSw4MiBAQAorKgorKiBEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3VkZi50eHQKKyoKK1VERiBGaWxlc3lzdGVtIHZlcnNpb24gMC45LjguMQorCitJZiB5b3UgZW5jb3VudGVyIHByb2JsZW1zIHdpdGggcmVhZGluZyBVREYgZGlzY3MgdXNpbmcgdGhpcyBkcml2ZXIsCitwbGVhc2UgcmVwb3J0IHRoZW0gdG8gbGludXhfdWRmQGhwZXNqcm8uZmMuaHAuY29tLCB3aGljaCBpcyB0aGUKK2RldmVsb3BlcidzIGxpc3QuCisKK1dyaXRlIHN1cHBvcnQgcmVxdWlyZXMgYSBibG9jayBkcml2ZXIgd2hpY2ggc3VwcG9ydHMgd3JpdGluZy4gIEN1cnJlbnRseQorZHZkK3J3IGRyaXZlcyBhbmQgbWVkaWEgc3VwcG9ydCB0cnVlIHJhbmRvbSBzZWN0b3Igd3JpdGVzLCBhbmQgc28gYSB1ZGYKK2ZpbGVzeXN0ZW0gb24gc3VjaCBkZXZpY2VzIGNhbiBiZSBkaXJlY3RseSBtb3VudGVkIHJlYWQvd3JpdGUuICBDRC1SVworbWVkaWEgaG93ZXZlciwgZG9lcyBub3Qgc3VwcG9ydCB0aGlzLiAgSW5zdGVhZCB0aGUgbWVkaWEgY2FuIGJlIGZvcm1hdHRlZAorZm9yIHBhY2tldCBtb2RlIHVzaW5nIHRoZSB1dGlsaXR5IGNkcnd0b29sLCB0aGVuIHRoZSBwa3RjZHZkIGRyaXZlciBjYW4KK2JlIGJvdW5kIHRvIHRoZSB1bmRlcmx5aW5nIGNkIGRldmljZSB0byBwcm92aWRlIHRoZSByZXF1aXJlZCBidWZmZXJpbmcKK2FuZCByZWFkLW1vZGlmeS13cml0ZSBjeWNsZXMgdG8gYWxsb3cgdGhlIGZpbGVzeXN0ZW0gcmFuZG9tIHNlY3RvciB3cml0ZXMKK3doaWxlIHByb3ZpZGluZyB0aGUgaGFyZHdhcmUgd2l0aCBvbmx5IGZ1bGwgcGFja2V0IHdyaXRlcy4gIFdoaWxlIG5vdAorcmVxdWlyZWQgZm9yIGR2ZCtydyBtZWRpYSwgdXNlIG9mIHRoZSBwa3RjZHZkIGRyaXZlciBvZnRlbiBlbmhhbmNlcworcGVyZm9ybWFuY2UgZHVlIHRvIHZlcnkgcG9vciByZWFkLW1vZGlmeS13cml0ZSBzdXBwb3J0IHN1cHBsaWVkIGludGVybmFsbHkKK2J5IGRyaXZlIGZpcm13YXJlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgZm9sbG93aW5nIG1vdW50IG9wdGlvbnMgYXJlIHN1cHBvcnRlZDoKKworCWdpZD0JCVNldCB0aGUgZGVmYXVsdCBncm91cC4KKwl1bWFzaz0JCVNldCB0aGUgZGVmYXVsdCB1bWFzay4KKwltb2RlPQkJU2V0IHRoZSBkZWZhdWx0IGZpbGUgcGVybWlzc2lvbnMuCisJZG1vZGU9CQlTZXQgdGhlIGRlZmF1bHQgZGlyZWN0b3J5IHBlcm1pc3Npb25zLgorCXVpZD0JCVNldCB0aGUgZGVmYXVsdCB1c2VyLgorCWJzPQkJU2V0IHRoZSBibG9jayBzaXplLgorCXVuaGlkZQkJU2hvdyBvdGhlcndpc2UgaGlkZGVuIGZpbGVzLgorCXVuZGVsZXRlCVNob3cgZGVsZXRlZCBmaWxlcyBpbiBsaXN0cy4KKwlhZGluaWNiCQlFbWJlZCBkYXRhIGluIHRoZSBpbm9kZSAoZGVmYXVsdCkKKwlub2FkaW5pY2IJRG9uJ3QgZW1iZWQgZGF0YSBpbiB0aGUgaW5vZGUKKwlzaG9ydGFkCQlVc2Ugc2hvcnQgYWQncworCWxvbmdhZAkJVXNlIGxvbmcgYWQncyAoZGVmYXVsdCkKKwlub3N0cmljdAlVbnNldCBzdHJpY3QgY29uZm9ybWFuY2UKKwlpb2NoYXJzZXQ9CVNldCB0aGUgTkxTIGNoYXJhY3RlciBzZXQKKworVGhlIHVpZD0gYW5kIGdpZD0gb3B0aW9ucyBuZWVkIGEgYml0IG1vcmUgZXhwbGFpbmluZy4gIFRoZXkgd2lsbCBhY2NlcHQgYQorZGVjaW1hbCBudW1lcmljIHZhbHVlIHdoaWNoIHdpbGwgYmUgdXNlZCBhcyB0aGUgZGVmYXVsdCBJRCBmb3IgdGhhdCBtb3VudC4KK1RoZXkgd2lsbCBhbHNvIGFjY2VwdCB0aGUgc3RyaW5nICJpZ25vcmUiIGFuZCAiZm9yZ2V0Ii4gIEZvciBmaWxlcyBvbiB0aGUgZGlzawordGhhdCBhcmUgb3duZWQgYnkgbm9ib2R5ICggLTEgKSwgdGhleSB3aWxsIGluc3RlYWQgbG9vayBhcyBpZiB0aGV5IGFyZSBvd25lZAorYnkgdGhlIGRlZmF1bHQgSUQuICBUaGUgaWdub3JlIG9wdGlvbiBjYXVzZXMgdGhlIGRlZmF1bHQgSUQgdG8gb3ZlcnJpZGUgYWxsCitJRHMgb24gdGhlIGRpc2ssIG5vdCBqdXN0IC0xLiAgVGhlIGZvcmdldCBvcHRpb24gY2F1c2VzIGFsbCBJRHMgdG8gYmUgd3JpdHRlbgordG8gZGlzayBhcyAtMSwgc28gd2hlbiB0aGUgbWVkaWEgaXMgbGF0ZXIgcmVtb3VudGVkLCB0aGV5IHdpbGwgYXBwZWFyIHRvIGJlCitvd25lZCBieSB3aGF0ZXZlciBkZWZhdWx0IElEIGl0IGlzIG1vdW50ZWQgd2l0aCBhdCB0aGF0IHRpbWUuCisKK0ZvciB0eXBpY2FsIGRlc2t0b3AgdXNlIG9mIHJlbW92YWJsZSBtZWRpYSwgeW91IHNob3VsZCBzZXQgdGhlIElEIHRvIHRoYXQKK29mIHRoZSBpbnRlcmFjdGl2ZWx5IGxvZ2dlZCBvbiB1c2VyLCBhbmQgYWxzbyBzcGVjaWZ5IGJvdGggdGhlIGZvcmdldCBhbmQKK2lnbm9yZSBvcHRpb25zLiAgVGhpcyB3YXkgdGhlIGludGVyYWN0aXZlIHVzZXIgd2lsbCBhbHdheXMgc2VlIHRoZSBmaWxlcworb24gdGhlIGRpc2sgYXMgYmVsb25naW5nIHRvIGhpbS4KKworVGhlIHJlbWFpbmluZyBhcmUgZm9yIGRlYnVnZ2luZyBhbmQgZGlzYXN0ZXIgcmVjb3Zlcnk6CisKKwlub3ZycwkJU2tpcCB2b2x1bWUgc2VxdWVuY2UgcmVjb2duaXRpb24gCisKK1RoZSBmb2xsb3dpbmcgZXhwZWN0IGEgb2Zmc2V0IGZyb20gMC4KKworCXNlc3Npb249CVNldCB0aGUgQ0RST00gc2Vzc2lvbiAoZGVmYXVsdD0gbGFzdCBzZXNzaW9uKQorCWFuY2hvcj0JCU92ZXJyaWRlIHN0YW5kYXJkIGFuY2hvciBsb2NhdGlvbi4gKGRlZmF1bHQ9IDI1NikKKwl2b2x1bWU9CQlPdmVycmlkZSB0aGUgVm9sdW1lRGVzYyBsb2NhdGlvbi4gKHVudXNlZCkKKwlwYXJ0aXRpb249CU92ZXJyaWRlIHRoZSBQYXJ0aXRpb25EZXNjIGxvY2F0aW9uLiAodW51c2VkKQorCWxhc3RibG9jaz0JU2V0IHRoZSBsYXN0IGJsb2NrIG9mIHRoZSBmaWxlc3lzdGVtLworCitUaGUgZm9sbG93aW5nIGV4cGVjdCBhIG9mZnNldCBmcm9tIHRoZSBwYXJ0aXRpb24gcm9vdC4KKworCWZpbGVzZXQ9CU92ZXJyaWRlIHRoZSBmaWxlc2V0IGJsb2NrIGxvY2F0aW9uLiAodW51c2VkKQorCXJvb3RkaXI9CU92ZXJyaWRlIHRoZSByb290IGRpcmVjdG9yeSBsb2NhdGlvbi4gKHVudXNlZCkKKwkJCVdBUk5JTkc6IG92ZXJyaWRpbmcgdGhlIHJvb3RkaXIgdG8gYSBub24tZGlyZWN0b3J5IG1heQorCQkJCXlpZWxkIGhpZ2hseSB1bnByZWRpY3RhYmxlIHJlc3VsdHMuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworRm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBhbmQgdG9vbHNldCBzZWU6CisJaHR0cDovL2xpbnV4LXVkZi5zb3VyY2Vmb3JnZS5uZXQvCisKK0RvY3VtZW50YXRpb24gb24gVURGIGFuZCBFQ01BIDE2NyBpcyBhdmFpbGFibGUgRlJFRSBmcm9tOgorCWh0dHA6Ly93d3cub3N0YS5vcmcvCisJaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnLworCitCZW4gRmVubmVtYSA8YmZlbm5lbWFAZmFsY29uLmNzYy5jYWxwb2x5LmVkdT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvdWZzLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvdWZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTYwMmFkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy91ZnMudHh0CkBAIC0wLDAgKzEsNjAgQEAKK1VTSU5HIFVGUworPT09PT09PT09CisKK21vdW50IC10IHVmcyAtbyB1ZnN0eXBlPXR5cGVfb2ZfdWZzIGRldmljZSBkaXIKKworCitVRlMgT1BUSU9OUworPT09PT09PT09PT0KKwordWZzdHlwZT10eXBlX29mX3VmcworCVVGUyBpcyBhIGZpbGUgc3lzdGVtIHdpZGVseSB1c2VkIGluIGRpZmZlcmVudCBvcGVyYXRpbmcgc3lzdGVtcy4KKwlUaGUgcHJvYmxlbSBhcmUgZGlmZmVyZW5jZXMgYW1vbmcgaW1wbGVtZW50YXRpb25zLiBGZWF0dXJlcyBvZgorCXNvbWUgaW1wbGVtZW50YXRpb25zIGFyZSB1bmRvY3VtZW50ZWQsIHNvIGl0cyBoYXJkIHRvIHJlY29nbml6ZQorCXR5cGUgb2YgdWZzIGF1dG9tYXRpY2FsbHkuIFRoYXQncyB3aHkgdXNlciBtdXN0IHNwZWNpZnkgdHlwZSBvZiAKKwl1ZnMgbWFudWFsbHkgYnkgbW91bnQgb3B0aW9uIHVmc3R5cGUuIFBvc3NpYmxlIHZhbHVlcyBhcmU6CisKKwlvbGQJb2xkIGZvcm1hdCBvZiB1ZnMKKwkJZGVmYXVsdCB2YWx1ZSwgc3VwcG9ydGVkIGFzIHJlYWQtb25seQorCisJNDRic2QJdXNlZCBpbiBGcmVlQlNELCBOZXRCU0QsIE9wZW5CU0QKKwkJc3VwcG9ydGVkIGFzIHJlYWQtd3JpdGUKKworCXVmczIgICAgdXNlZCBpbiBGcmVlQlNEIDUueAorCQlzdXBwb3J0ZWQgYXMgcmVhZC13cml0ZQorCisJNXhic2QJc3lub255bSBmb3IgdWZzMgorCisJc3VuCXVzZWQgaW4gU3VuT1MgKFNvbGFyaXMpCisJCXN1cHBvcnRlZCBhcyByZWFkLXdyaXRlCisKKwlzdW54ODYJdXNlZCBpbiBTdW5PUyBmb3IgSW50ZWwgKFNvbGFyaXN4ODYpCisJCXN1cHBvcnRlZCBhcyByZWFkLXdyaXRlCisKKwlocAl1c2VkIGluIEhQLVVYCisJCXN1cHBvcnRlZCBhcyByZWFkLW9ubHkKKworCW5leHRzdGVwCisJCXVzZWQgaW4gTmV4dFN0ZXAKKwkJc3VwcG9ydGVkIGFzIHJlYWQtb25seQorCisJbmV4dHN0ZXAtY2QKKwkJdXNlZCBmb3IgTmV4dFN0ZXAgQ0RST01zIChibG9ja19zaXplID09IDIwNDgpCisJCXN1cHBvcnRlZCBhcyByZWFkLW9ubHkKKworCW9wZW5zdGVwCisJCXVzZWQgaW4gT3BlblN0ZXAKKwkJc3VwcG9ydGVkIGFzIHJlYWQtb25seQorCisKK1BPU1NJQkxFIFBST0JMRU1TCis9PT09PT09PT09PT09PT09PQorCitTZWUgbmV4dCBzZWN0aW9uLCBpZiB5b3UgaGF2ZSBhbnkuCisKKworQlVHIFJFUE9SVFMKKz09PT09PT09PT09CisKK0FueSB1ZnMgYnVnIHJlcG9ydCB5b3UgY2FuIHNlbmQgdG8gZGFuaWVsLnBpcmtsQGVtYWlsLmN6IG9yCit0byBkdXNoaXN0b3ZAbWFpbC5ydSAoZG8gbm90IHNlbmQgcGFydGl0aW9uIHRhYmxlcyBidWcgcmVwb3J0cykuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3ZmYXQudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy92ZmF0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTExMjZhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy92ZmF0LnR4dApAQCAtMCwwICsxLDMzNiBAQAorVVNJTkcgVkZBVAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVG8gdXNlIHRoZSB2ZmF0IGZpbGVzeXN0ZW0sIHVzZSB0aGUgZmlsZXN5c3RlbSB0eXBlICd2ZmF0Jy4gIGkuZS4KKyAgbW91bnQgLXQgdmZhdCAvZGV2L2ZkMCAvbW50CisKK05vIHNwZWNpYWwgcGFydGl0aW9uIGZvcm1hdHRlciBpcyByZXF1aXJlZC4gIG1rZG9zZnMgd2lsbCB3b3JrIGZpbmUKK2lmIHlvdSB3YW50IHRvIGZvcm1hdCBmcm9tIHdpdGhpbiBMaW51eC4KKworVkZBVCBNT1VOVCBPUFRJT05TCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit1aWQ9IyMjICAgICAgIC0tIFNldCB0aGUgb3duZXIgb2YgYWxsIGZpbGVzIG9uIHRoaXMgZmlsZXN5c3RlbS4KKwkJIFRoZSBkZWZhdWx0IGlzIHRoZSB1aWQgb2YgY3VycmVudCBwcm9jZXNzLgorCitnaWQ9IyMjICAgICAgIC0tIFNldCB0aGUgZ3JvdXAgb2YgYWxsIGZpbGVzIG9uIHRoaXMgZmlsZXN5c3RlbS4KKwkJIFRoZSBkZWZhdWx0IGlzIHRoZSBnaWQgb2YgY3VycmVudCBwcm9jZXNzLgorCit1bWFzaz0jIyMgICAgIC0tIFRoZSBwZXJtaXNzaW9uIG1hc2sgKGZvciBmaWxlcyBhbmQgZGlyZWN0b3JpZXMsIHNlZSB1bWFzaygxKSkuCisgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGlzIHRoZSB1bWFzayBvZiBjdXJyZW50IHByb2Nlc3MuCisKK2RtYXNrPSMjIyAgICAgLS0gVGhlIHBlcm1pc3Npb24gbWFzayBmb3IgdGhlIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgdGhlIHVtYXNrIG9mIGN1cnJlbnQgcHJvY2Vzcy4KKworZm1hc2s9IyMjICAgICAtLSBUaGUgcGVybWlzc2lvbiBtYXNrIGZvciBmaWxlcy4KKyAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgdGhlIHVtYXNrIG9mIGN1cnJlbnQgcHJvY2Vzcy4KKworYWxsb3dfdXRpbWU9IyMjIC0tIFRoaXMgb3B0aW9uIGNvbnRyb2xzIHRoZSBwZXJtaXNzaW9uIGNoZWNrIG9mIG10aW1lL2F0aW1lLgorCisgICAgICAgICAgICAgICAgICAyMCAtIElmIGN1cnJlbnQgcHJvY2VzcyBpcyBpbiBncm91cCBvZiBmaWxlJ3MgZ3JvdXAgSUQsCisgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gY2hhbmdlIHRpbWVzdGFtcC4KKyAgICAgICAgICAgICAgICAgICAyIC0gT3RoZXIgdXNlcnMgY2FuIGNoYW5nZSB0aW1lc3RhbXAuCisKKyAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgc2V0IGZyb20gYGRtYXNrJyBvcHRpb24uIChJZiB0aGUgZGlyZWN0b3J5IGlzCisgICAgICAgICAgICAgICAgIHdyaXRhYmxlLCB1dGltZSgyKSBpcyBhbHNvIGFsbG93ZWQuIEkuZS4gfmRtYXNrICYgMDIyKQorCisgICAgICAgICAgICAgICAgIE5vcm1hbGx5IHV0aW1lKDIpIGNoZWNrcyBjdXJyZW50IHByb2Nlc3MgaXMgb3duZXIgb2YKKyAgICAgICAgICAgICAgICAgdGhlIGZpbGUsIG9yIGl0IGhhcyBDQVBfRk9XTkVSIGNhcGFiaWxpdHkuICBCdXQgRkFUCisgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gZG9lc24ndCBoYXZlIHVpZC9naWQgb24gZGlzaywgc28gbm9ybWFsCisgICAgICAgICAgICAgICAgIGNoZWNrIGlzIHRvbyB1bmZsZXhpYmxlLiBXaXRoIHRoaXMgb3B0aW9uIHlvdSBjYW4KKyAgICAgICAgICAgICAgICAgcmVsYXggaXQuCisKK2NvZGVwYWdlPSMjIyAgLS0gU2V0cyB0aGUgY29kZXBhZ2UgbnVtYmVyIGZvciBjb252ZXJ0aW5nIHRvIHNob3J0bmFtZQorCQkgY2hhcmFjdGVycyBvbiBGQVQgZmlsZXN5c3RlbS4KKwkJIEJ5IGRlZmF1bHQsIEZBVF9ERUZBVUxUX0NPREVQQUdFIHNldHRpbmcgaXMgdXNlZC4KKworaW9jaGFyc2V0PTxuYW1lPiAtLSBDaGFyYWN0ZXIgc2V0IHRvIHVzZSBmb3IgY29udmVydGluZyBiZXR3ZWVuIHRoZQorCQkgZW5jb2RpbmcgaXMgdXNlZCBmb3IgdXNlciB2aXNpYmxlIGZpbGVuYW1lIGFuZCAxNiBiaXQKKwkJIFVuaWNvZGUgY2hhcmFjdGVycy4gTG9uZyBmaWxlbmFtZXMgYXJlIHN0b3JlZCBvbiBkaXNrCisJCSBpbiBVbmljb2RlIGZvcm1hdCwgYnV0IFVuaXggZm9yIHRoZSBtb3N0IHBhcnQgZG9lc24ndAorCQkga25vdyBob3cgdG8gZGVhbCB3aXRoIFVuaWNvZGUuCisJCSBCeSBkZWZhdWx0LCBGQVRfREVGQVVMVF9JT0NIQVJTRVQgc2V0dGluZyBpcyB1c2VkLgorCisJCSBUaGVyZSBpcyBhbHNvIGFuIG9wdGlvbiBvZiBkb2luZyBVVEYtOCB0cmFuc2xhdGlvbnMKKwkJIHdpdGggdGhlIHV0Zjggb3B0aW9uLgorCisJCSBOT1RFOiAiaW9jaGFyc2V0PXV0ZjgiIGlzIG5vdCByZWNvbW1lbmRlZC4gSWYgdW5zdXJlLAorCQkgeW91IHNob3VsZCBjb25zaWRlciB0aGUgZm9sbG93aW5nIG9wdGlvbiBpbnN0ZWFkLgorCit1dGY4PTxib29sPiAgIC0tIFVURi04IGlzIHRoZSBmaWxlc3lzdGVtIHNhZmUgdmVyc2lvbiBvZiBVbmljb2RlIHRoYXQKKwkJIGlzIHVzZWQgYnkgdGhlIGNvbnNvbGUuICBJdCBjYW4gYmUgZW5hYmxlZCBmb3IgdGhlCisJCSBmaWxlc3lzdGVtIHdpdGggdGhpcyBvcHRpb24uIElmICd1bmlfeGxhdGUnIGdldHMgc2V0LAorCQkgVVRGLTggZ2V0cyBkaXNhYmxlZC4KKwordW5pX3hsYXRlPTxib29sPiAtLSBUcmFuc2xhdGUgdW5oYW5kbGVkIFVuaWNvZGUgY2hhcmFjdGVycyB0byBzcGVjaWFsCisJCSBlc2NhcGVkIHNlcXVlbmNlcy4gIFRoaXMgd291bGQgbGV0IHlvdSBiYWNrdXAgYW5kCisJCSByZXN0b3JlIGZpbGVuYW1lcyB0aGF0IGFyZSBjcmVhdGVkIHdpdGggYW55IFVuaWNvZGUKKwkJIGNoYXJhY3RlcnMuICBVbnRpbCBMaW51eCBzdXBwb3J0cyBVbmljb2RlIGZvciByZWFsLAorCQkgdGhpcyBnaXZlcyB5b3UgYW4gYWx0ZXJuYXRpdmUuICBXaXRob3V0IHRoaXMgb3B0aW9uLAorCQkgYSAnPycgaXMgdXNlZCB3aGVuIG5vIHRyYW5zbGF0aW9uIGlzIHBvc3NpYmxlLiAgVGhlCisJCSBlc2NhcGUgY2hhcmFjdGVyIGlzICc6JyBiZWNhdXNlIGl0IGlzIG90aGVyd2lzZQorCQkgaWxsZWdhbCBvbiB0aGUgdmZhdCBmaWxlc3lzdGVtLiAgVGhlIGVzY2FwZSBzZXF1ZW5jZQorCQkgdGhhdCBnZXRzIHVzZWQgaXMgJzonIGFuZCB0aGUgZm91ciBkaWdpdHMgb2YgaGV4YWRlY2ltYWwKKwkJIHVuaWNvZGUuCisKK25vbnVtdGFpbD08Ym9vbD4gLS0gV2hlbiBjcmVhdGluZyA4LjMgYWxpYXNlcywgbm9ybWFsbHkgdGhlIGFsaWFzIHdpbGwKKyAgICAgICAgICAgICAgICAgZW5kIGluICd+MScgb3IgdGlsZGUgZm9sbG93ZWQgYnkgc29tZSBudW1iZXIuICBJZiB0aGlzCisgICAgICAgICAgICAgICAgIG9wdGlvbiBpcyBzZXQsIHRoZW4gaWYgdGhlIGZpbGVuYW1lIGlzIAorICAgICAgICAgICAgICAgICAibG9uZ2ZpbGVuYW1lLnR4dCIgYW5kICJsb25nZmlsZS50eHQiIGRvZXMgbm90CisgICAgICAgICAgICAgICAgIGN1cnJlbnRseSBleGlzdCBpbiB0aGUgZGlyZWN0b3J5LCAnbG9uZ2ZpbGUudHh0JyB3aWxsCisgICAgICAgICAgICAgICAgIGJlIHRoZSBzaG9ydCBhbGlhcyBpbnN0ZWFkIG9mICdsb25nZml+MS50eHQnLiAKKyAgICAgICAgICAgICAgICAgIAordXNlZnJlZSAgICAgICAtLSBVc2UgdGhlICJmcmVlIGNsdXN0ZXJzIiB2YWx1ZSBzdG9yZWQgb24gRlNJTkZPLiBJdCdsbAorICAgICAgICAgICAgICAgICBiZSB1c2VkIHRvIGRldGVybWluZSBudW1iZXIgb2YgZnJlZSBjbHVzdGVycyB3aXRob3V0CisgICAgICAgICAgICAgICAgIHNjYW5uaW5nIGRpc2suIEJ1dCBpdCdzIG5vdCB1c2VkIGJ5IGRlZmF1bHQsIGJlY2F1c2UKKyAgICAgICAgICAgICAgICAgcmVjZW50IFdpbmRvd3MgZG9uJ3QgdXBkYXRlIGl0IGNvcnJlY3RseSBpbiBzb21lCisgICAgICAgICAgICAgICAgIGNhc2UuIElmIHlvdSBhcmUgc3VyZSB0aGUgImZyZWUgY2x1c3RlcnMiIG9uIEZTSU5GTyBpcworICAgICAgICAgICAgICAgICBjb3JyZWN0LCBieSB0aGlzIG9wdGlvbiB5b3UgY2FuIGF2b2lkIHNjYW5uaW5nIGRpc2suCisKK3F1aWV0ICAgICAgICAgLS0gU3RvcHMgcHJpbnRpbmcgY2VydGFpbiB3YXJuaW5nIG1lc3NhZ2VzLgorCitjaGVjaz1zfHJ8biAgIC0tIENhc2Ugc2Vuc2l0aXZpdHkgY2hlY2tpbmcgc2V0dGluZy4KKyAgICAgICAgICAgICAgICAgczogc3RyaWN0LCBjYXNlIHNlbnNpdGl2ZQorICAgICAgICAgICAgICAgICByOiByZWxheGVkLCBjYXNlIGluc2Vuc2l0aXZlCisgICAgICAgICAgICAgICAgIG46IG5vcm1hbCwgZGVmYXVsdCBzZXR0aW5nLCBjdXJyZW50bHkgY2FzZSBpbnNlbnNpdGl2ZQorCitub2Nhc2UgICAgICAgIC0tIFRoaXMgd2FzIGRlcHJlY2F0ZWQgZm9yIHZmYXQuIFVzZSBzaG9ydG5hbWU9d2luOTUgaW5zdGVhZC4KKworc2hvcnRuYW1lPWxvd2VyfHdpbjk1fHdpbm50fG1peGVkCisJICAgICAgLS0gU2hvcnRuYW1lIGRpc3BsYXkvY3JlYXRlIHNldHRpbmcuCisJCSBsb3dlcjogY29udmVydCB0byBsb3dlcmNhc2UgZm9yIGRpc3BsYXksCisJCQllbXVsYXRlIHRoZSBXaW5kb3dzIDk1IHJ1bGUgZm9yIGNyZWF0ZS4KKwkJIHdpbjk1OiBlbXVsYXRlIHRoZSBXaW5kb3dzIDk1IHJ1bGUgZm9yIGRpc3BsYXkvY3JlYXRlLgorCQkgd2lubnQ6IGVtdWxhdGUgdGhlIFdpbmRvd3MgTlQgcnVsZSBmb3IgZGlzcGxheS9jcmVhdGUuCisJCSBtaXhlZDogZW11bGF0ZSB0aGUgV2luZG93cyBOVCBydWxlIGZvciBkaXNwbGF5LAorCQkJZW11bGF0ZSB0aGUgV2luZG93cyA5NSBydWxlIGZvciBjcmVhdGUuCisJCSBEZWZhdWx0IHNldHRpbmcgaXMgYG1peGVkJy4KKwordHo9VVRDICAgICAgICAtLSBJbnRlcnByZXQgdGltZXN0YW1wcyBhcyBVVEMgcmF0aGVyIHRoYW4gbG9jYWwgdGltZS4KKyAgICAgICAgICAgICAgICAgVGhpcyBvcHRpb24gZGlzYWJsZXMgdGhlIGNvbnZlcnNpb24gb2YgdGltZXN0YW1wcworICAgICAgICAgICAgICAgICBiZXR3ZWVuIGxvY2FsIHRpbWUgKGFzIHVzZWQgYnkgV2luZG93cyBvbiBGQVQpIGFuZCBVVEMKKyAgICAgICAgICAgICAgICAgKHdoaWNoIExpbnV4IHVzZXMgaW50ZXJuYWxseSkuICBUaGlzIGlzIHBhcnRpY3VsYXJseQorICAgICAgICAgICAgICAgICB1c2VmdWwgd2hlbiBtb3VudGluZyBkZXZpY2VzIChsaWtlIGRpZ2l0YWwgY2FtZXJhcykKKyAgICAgICAgICAgICAgICAgdGhhdCBhcmUgc2V0IHRvIFVUQyBpbiBvcmRlciB0byBhdm9pZCB0aGUgcGl0ZmFsbHMgb2YKKyAgICAgICAgICAgICAgICAgbG9jYWwgdGltZS4KK3RpbWVfb2Zmc2V0PW1pbnV0ZXMKKwkgICAgICAtLSBTZXQgb2Zmc2V0IGZvciBjb252ZXJzaW9uIG9mIHRpbWVzdGFtcHMgZnJvbSBsb2NhbCB0aW1lCisJCSB1c2VkIGJ5IEZBVCB0byBVVEMuIEkuZS4gPG1pbnV0ZXM+IG1pbnV0ZXMgd2lsbCBiZSBzdWJ0cmFjdGVkCisJCSBmcm9tIGVhY2ggdGltZXN0YW1wIHRvIGNvbnZlcnQgaXQgdG8gVVRDIHVzZWQgaW50ZXJuYWxseSBieQorCQkgTGludXguIFRoaXMgaXMgdXNlZnVsIHdoZW4gdGltZSB6b25lIHNldCBpbiBzeXNfdHogaXMKKwkJIG5vdCB0aGUgdGltZSB6b25lIHVzZWQgYnkgdGhlIGZpbGVzeXN0ZW0uIE5vdGUgdGhhdCB0aGlzCisJCSBvcHRpb24gc3RpbGwgZG9lcyBub3QgcHJvdmlkZSBjb3JyZWN0IHRpbWUgc3RhbXBzIGluIGFsbAorCQkgY2FzZXMgaW4gcHJlc2VuY2Ugb2YgRFNUIC0gdGltZSBzdGFtcHMgaW4gYSBkaWZmZXJlbnQgRFNUCisJCSBzZXR0aW5nIHdpbGwgYmUgb2ZmIGJ5IG9uZSBob3VyLgorCitzaG93ZXhlYyAgICAgIC0tIElmIHNldCwgdGhlIGV4ZWN1dGUgcGVybWlzc2lvbiBiaXRzIG9mIHRoZSBmaWxlIHdpbGwgYmUKKwkJIGFsbG93ZWQgb25seSBpZiB0aGUgZXh0ZW5zaW9uIHBhcnQgb2YgdGhlIG5hbWUgaXMgLkVYRSwKKwkJIC5DT00sIG9yIC5CQVQuIE5vdCBzZXQgYnkgZGVmYXVsdC4KKworZGVidWcgICAgICAgICAtLSBDYW4gYmUgc2V0LCBidXQgdW51c2VkIGJ5IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLgorCitzeXNfaW1tdXRhYmxlIC0tIElmIHNldCwgQVRUUl9TWVMgYXR0cmlidXRlIG9uIEZBVCBpcyBoYW5kbGVkIGFzCisJCSBJTU1VVEFCTEUgZmxhZyBvbiBMaW51eC4gTm90IHNldCBieSBkZWZhdWx0LgorCitmbHVzaCAgICAgICAgIC0tIElmIHNldCwgdGhlIGZpbGVzeXN0ZW0gd2lsbCB0cnkgdG8gZmx1c2ggdG8gZGlzayBtb3JlCisJCSBlYXJseSB0aGFuIG5vcm1hbC4gTm90IHNldCBieSBkZWZhdWx0LgorCityb2RpcgkgICAgICAtLSBGQVQgaGFzIHRoZSBBVFRSX1JPIChyZWFkLW9ubHkpIGF0dHJpYnV0ZS4gT24gV2luZG93cywKKwkJIHRoZSBBVFRSX1JPIG9mIHRoZSBkaXJlY3Rvcnkgd2lsbCBqdXN0IGJlIGlnbm9yZWQsCisJCSBhbmQgaXMgdXNlZCBvbmx5IGJ5IGFwcGxpY2F0aW9ucyBhcyBhIGZsYWcgKGUuZy4gaXQncyBzZXQKKwkJIGZvciB0aGUgY3VzdG9taXplZCBmb2xkZXIpLgorCisJCSBJZiB5b3Ugd2FudCB0byB1c2UgQVRUUl9STyBhcyByZWFkLW9ubHkgZmxhZyBldmVuIGZvcgorCQkgdGhlIGRpcmVjdG9yeSwgc2V0IHRoaXMgb3B0aW9uLgorCitlcnJvcnM9cGFuaWN8Y29udGludWV8cmVtb3VudC1ybworCSAgICAgIC0tIHNwZWNpZnkgRkFUIGJlaGF2aW9yIG9uIGNyaXRpY2FsIGVycm9yczogcGFuaWMsIGNvbnRpbnVlCisJCSB3aXRob3V0IGRvaW5nIGFueXRoaW5nIG9yIHJlbW91bnQgdGhlIHBhcnRpdGlvbiBpbgorCQkgcmVhZC1vbmx5IG1vZGUgKGRlZmF1bHQgYmVoYXZpb3IpLgorCitkaXNjYXJkICAgICAgIC0tIElmIHNldCwgaXNzdWVzIGRpc2NhcmQvVFJJTSBjb21tYW5kcyB0byB0aGUgYmxvY2sKKwkJIGRldmljZSB3aGVuIGJsb2NrcyBhcmUgZnJlZWQuIFRoaXMgaXMgdXNlZnVsIGZvciBTU0QgZGV2aWNlcworCQkgYW5kIHNwYXJzZS90aGlubHktcHJvdmlzb25lZCBMVU5zLgorCituZnM9c3RhbGVfcnd8bm9zdGFsZV9ybworCQlFbmFibGUgdGhpcyBvbmx5IGlmIHlvdSB3YW50IHRvIGV4cG9ydCB0aGUgRkFUIGZpbGVzeXN0ZW0KKwkJb3ZlciBORlMuCisKKwkJc3RhbGVfcnc6IFRoaXMgb3B0aW9uIG1haW50YWlucyBhbiBpbmRleCAoY2FjaGUpIG9mIGRpcmVjdG9yeQorCQlpbm9kZXMgYnkgaV9sb2dzdGFydCB3aGljaCBpcyB1c2VkIGJ5IHRoZSBuZnMtcmVsYXRlZCBjb2RlIHRvCisJCWltcHJvdmUgbG9vay11cHMuIEZ1bGwgZmlsZSBvcGVyYXRpb25zIChyZWFkL3dyaXRlKSBvdmVyIE5GUyBpcworCQlzdXBwb3J0ZWQgYnV0IHdpdGggY2FjaGUgZXZpY3Rpb24gYXQgTkZTIHNlcnZlciwgdGhpcyBjb3VsZAorCQlyZXN1bHQgaW4gRVNUQUxFIGlzc3Vlcy4KKworCQlub3N0YWxlX3JvOiBUaGlzIG9wdGlvbiBiYXNlcyB0aGUgaW5vZGUgbnVtYmVyIGFuZCBmaWxlaGFuZGxlCisJCW9uIHRoZSBvbi1kaXNrIGxvY2F0aW9uIG9mIGEgZmlsZSBpbiB0aGUgTVMtRE9TIGRpcmVjdG9yeSBlbnRyeS4KKwkJVGhpcyBlbnN1cmVzIHRoYXQgRVNUQUxFIHdpbGwgbm90IGJlIHJldHVybmVkIGFmdGVyIGEgZmlsZSBpcworCQlldmljdGVkIGZyb20gdGhlIGlub2RlIGNhY2hlLiBIb3dldmVyLCBpdCBtZWFucyB0aGF0IG9wZXJhdGlvbnMKKwkJc3VjaCBhcyByZW5hbWUsIGNyZWF0ZSBhbmQgdW5saW5rIGNvdWxkIGNhdXNlIGZpbGVoYW5kbGVzIHRoYXQKKwkJcHJldmlvdXNseSBwb2ludGVkIGF0IG9uZSBmaWxlIHRvIHBvaW50IGF0IGEgZGlmZmVyZW50IGZpbGUsCisJCXBvdGVudGlhbGx5IGNhdXNpbmcgZGF0YSBjb3JydXB0aW9uLiBGb3IgdGhpcyByZWFzb24sIHRoaXMKKwkJb3B0aW9uIGFsc28gbW91bnRzIHRoZSBmaWxlc3lzdGVtIHJlYWRvbmx5LgorCisJCVRvIG1haW50YWluIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksICctbyBuZnMnIGlzIGFsc28gYWNjZXB0ZWQsCisJCWRlZmF1bHRpbmcgdG8gc3RhbGVfcncKKworZG9zMXhmbG9wcHkgIC0tIElmIHNldCwgdXNlIGEgZmFsbGJhY2sgZGVmYXVsdCBCSU9TIFBhcmFtZXRlciBCbG9jaworCQljb25maWd1cmF0aW9uLCBkZXRlcm1pbmVkIGJ5IGJhY2tpbmcgZGV2aWNlIHNpemUuIFRoZXNlIHN0YXRpYworCQlwYXJhbWV0ZXJzIG1hdGNoIGRlZmF1bHRzIGFzc3VtZWQgYnkgRE9TIDEueCBmb3IgMTYwIGtpQiwKKwkJMTgwIGtpQiwgMzIwIGtpQiwgYW5kIDM2MCBraUIgZmxvcHBpZXMgYW5kIGZsb3BweSBpbWFnZXMuCisKKworPGJvb2w+OiAwLDEseWVzLG5vLHRydWUsZmFsc2UKKworVE9ETworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiBOZWVkIHRvIGdldCByaWQgb2YgdGhlIHJhdyBzY2FubmluZyBzdHVmZi4gIEluc3RlYWQsIGFsd2F5cyB1c2UKKyAgYSBnZXQgbmV4dCBkaXJlY3RvcnkgZW50cnkgYXBwcm9hY2guICBUaGUgb25seSB0aGluZyBsZWZ0IHRoYXQgdXNlcworICByYXcgc2Nhbm5pbmcgaXMgdGhlIGRpcmVjdG9yeSByZW5hbWluZyBjb2RlLgorCisKK1BPU1NJQkxFIFBST0JMRU1TCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqIHZmYXRfdmFsaWRfbG9uZ25hbWUgZG9lcyBub3QgcHJvcGVybHkgY2hlY2tlZCByZXNlcnZlZCBuYW1lcy4KKyogV2hlbiBhIHZvbHVtZSBuYW1lIGlzIHRoZSBzYW1lIGFzIGEgZGlyZWN0b3J5IG5hbWUgaW4gdGhlIHJvb3QKKyAgZGlyZWN0b3J5IG9mIHRoZSBmaWxlc3lzdGVtLCB0aGUgZGlyZWN0b3J5IG5hbWUgc29tZXRpbWVzIHNob3dzCisgIHVwIGFzIGFuIGVtcHR5IGZpbGUuCisqIGF1dG9jb252IG9wdGlvbiBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseS4KKworQlVHIFJFUE9SVFMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0lmIHlvdSBoYXZlIHRyb3VibGUgd2l0aCB0aGUgVkZBVCBmaWxlc3lzdGVtLCBtYWlsIGJ1ZyByZXBvcnRzIHRvCitjaGFmZmVlQGJtcmMuY3MuYmVya2VsZXkuZWR1LiAgUGxlYXNlIHNwZWNpZnkgdGhlIGZpbGVuYW1lCithbmQgdGhlIG9wZXJhdGlvbiB0aGF0IGdhdmUgeW91IHRyb3VibGUuCisKK1RFU1QgU1VJVEUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0lmIHlvdSBwbGFuIHRvIG1ha2UgYW55IG1vZGlmaWNhdGlvbnMgdG8gdGhlIHZmYXQgZmlsZXN5c3RlbSwgcGxlYXNlCitnZXQgdGhlIHRlc3Qgc3VpdGUgdGhhdCBjb21lcyB3aXRoIHRoZSB2ZmF0IGRpc3RyaWJ1dGlvbiBhdAorCisgIGh0dHA6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLyovaHR0cDovL2JtcmMuYmVya2VsZXkuZWR1LworICBwZW9wbGUvY2hhZmZlZS92ZmF0Lmh0bWwKKworVGhpcyB0ZXN0cyBxdWl0ZSBhIGZldyBwYXJ0cyBvZiB0aGUgdmZhdCBmaWxlc3lzdGVtIGFuZCBhZGRpdGlvbmFsCit0ZXN0cyBmb3IgbmV3IGZlYXR1cmVzIG9yIHVudGVzdGVkIGZlYXR1cmVzIHdvdWxkIGJlIGFwcHJlY2lhdGVkLgorCitOT1RFUyBPTiBUSEUgU1RSVUNUVVJFIE9GIFRIRSBWRkFUIEZJTEVTWVNURU0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyhUaGlzIGRvY3VtZW50YXRpb24gd2FzIHByb3ZpZGVkIGJ5IEdhbGVuIEMuIEh1bnQgPGdjaHVudEBjcy5yb2NoZXN0ZXIuZWR1PgorIGFuZCBsaWdodGx5IGFubm90YXRlZCBieSBHb3Jkb24gQ2hhZmZlZSkuCisKK1RoaXMgZG9jdW1lbnQgcHJlc2VudHMgYSB2ZXJ5IHJvdWdoLCB0ZWNobmljYWwgb3ZlcnZpZXcgb2YgbXkKK2tub3dsZWRnZSBvZiB0aGUgZXh0ZW5kZWQgRkFUIGZpbGUgc3lzdGVtIHVzZWQgaW4gV2luZG93cyBOVCAzLjUgYW5kCitXaW5kb3dzIDk1LiAgSSBkb24ndCBndWFyYW50ZWUgdGhhdCBhbnkgb2YgdGhlIGZvbGxvd2luZyBpcyBjb3JyZWN0LAorYnV0IGl0IGFwcGVhcnMgdG8gYmUgc28uCisKK1RoZSBleHRlbmRlZCBGQVQgZmlsZSBzeXN0ZW0gaXMgYWxtb3N0IGlkZW50aWNhbCB0byB0aGUgRkFUCitmaWxlIHN5c3RlbSB1c2VkIGluIERPUyB2ZXJzaW9ucyB1cCB0byBhbmQgaW5jbHVkaW5nIDYuMjIzNDEwMjM5ODQ3Cis6LSkuICBUaGUgc2lnbmlmaWNhbnQgY2hhbmdlIGhhcyBiZWVuIHRoZSBhZGRpdGlvbiBvZiBsb25nIGZpbGUgbmFtZXMuCitUaGVzZSBuYW1lcyBzdXBwb3J0IHVwIHRvIDI1NSBjaGFyYWN0ZXJzIGluY2x1ZGluZyBzcGFjZXMgYW5kIGxvd2VyCitjYXNlIGNoYXJhY3RlcnMgYXMgb3Bwb3NlZCB0byB0aGUgdHJhZGl0aW9uYWwgOC4zIHNob3J0IG5hbWVzLgorCitIZXJlIGlzIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgdHJhZGl0aW9uYWwgRkFUIGVudHJ5IGluIHRoZSBjdXJyZW50CitXaW5kb3dzIDk1IGZpbGVzeXN0ZW06CisKKyAgICAgICAgc3RydWN0IGRpcmVjdG9yeSB7IC8vIFNob3J0IDguMyBuYW1lcyAKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG5hbWVbOF07ICAgICAgICAgIC8vIGZpbGUgbmFtZSAKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGV4dFszXTsgICAgICAgICAgIC8vIGZpbGUgZXh0ZW5zaW9uIAorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYXR0cjsgICAgICAgICAgICAgLy8gYXR0cmlidXRlIGJ5dGUgCisJCXVuc2lnbmVkIGNoYXIgbGNhc2U7CQkvLyBDYXNlIGZvciBiYXNlIGFuZCBleHRlbnNpb24KKwkJdW5zaWduZWQgY2hhciBjdGltZV9tczsJCS8vIENyZWF0aW9uIHRpbWUsIG1pbGxpc2Vjb25kcworCQl1bnNpZ25lZCBjaGFyIGN0aW1lWzJdOwkJLy8gQ3JlYXRpb24gdGltZQorCQl1bnNpZ25lZCBjaGFyIGNkYXRlWzJdOwkJLy8gQ3JlYXRpb24gZGF0ZQorCQl1bnNpZ25lZCBjaGFyIGFkYXRlWzJdOwkJLy8gTGFzdCBhY2Nlc3MgZGF0ZQorCQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzJdOwkvLyByZXNlcnZlZCB2YWx1ZXMgKGlnbm9yZWQpIAorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgdGltZVsyXTsgICAgICAgICAgLy8gdGltZSBzdGFtcCAKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGRhdGVbMl07ICAgICAgICAgIC8vIGRhdGUgc3RhbXAgCisgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBzdGFydFsyXTsgICAgICAgICAvLyBzdGFydGluZyBjbHVzdGVyIG51bWJlciAKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHNpemVbNF07ICAgICAgICAgIC8vIHNpemUgb2YgdGhlIGZpbGUgCisgICAgICAgIH07CisKK1RoZSBsY2FzZSBmaWVsZCBzcGVjaWZpZXMgaWYgdGhlIGJhc2UgYW5kL29yIHRoZSBleHRlbnNpb24gb2YgYW4gOC4zCituYW1lIHNob3VsZCBiZSBjYXBpdGFsaXplZC4gIFRoaXMgZmllbGQgZG9lcyBub3Qgc2VlbSB0byBiZSB1c2VkIGJ5CitXaW5kb3dzIDk1IGJ1dCBpdCBpcyB1c2VkIGJ5IFdpbmRvd3MgTlQuICBUaGUgY2FzZSBvZiBmaWxlbmFtZXMgaXMgbm90Citjb21wbGV0ZWx5IGNvbXBhdGlibGUgZnJvbSBXaW5kb3dzIE5UIHRvIFdpbmRvd3MgOTUuICBJdCBpcyBub3QgY29tcGxldGVseQorY29tcGF0aWJsZSBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24sIGhvd2V2ZXIuICBGaWxlbmFtZXMgdGhhdCBmaXQgaW4KK3RoZSA4LjMgbmFtZXNwYWNlIGFuZCBhcmUgd3JpdHRlbiBvbiBXaW5kb3dzIE5UIHRvIGJlIGxvd2VyY2FzZSB3aWxsCitzaG93IHVwIGFzIHVwcGVyY2FzZSBvbiBXaW5kb3dzIDk1LgorCitOb3RlIHRoYXQgdGhlICJzdGFydCIgYW5kICJzaXplIiB2YWx1ZXMgYXJlIGFjdHVhbGx5IGxpdHRsZQorZW5kaWFuIGludGVnZXIgdmFsdWVzLiAgVGhlIGRlc2NyaXB0aW9ucyBvZiB0aGUgZmllbGRzIGluIHRoaXMKK3N0cnVjdHVyZSBhcmUgcHVibGljIGtub3dsZWRnZSBhbmQgY2FuIGJlIGZvdW5kIGVsc2V3aGVyZS4KKworV2l0aCB0aGUgZXh0ZW5kZWQgRkFUIHN5c3RlbSwgTWljcm9zb2Z0IGhhcyBpbnNlcnRlZCBleHRyYQorZGlyZWN0b3J5IGVudHJpZXMgZm9yIGFueSBmaWxlcyB3aXRoIGV4dGVuZGVkIG5hbWVzLiAgKEFueSBuYW1lIHdoaWNoCitsZWdhbGx5IGZpdHMgd2l0aGluIHRoZSBvbGQgOC4zIGVuY29kaW5nIHNjaGVtZSBkb2VzIG5vdCBoYXZlIGV4dHJhCitlbnRyaWVzLikgIEkgY2FsbCB0aGVzZSBleHRyYSBlbnRyaWVzIHNsb3RzLiAgQmFzaWNhbGx5LCBhIHNsb3QgaXMgYQorc3BlY2lhbGx5IGZvcm1hdHRlZCBkaXJlY3RvcnkgZW50cnkgd2hpY2ggaG9sZHMgdXAgdG8gMTMgY2hhcmFjdGVycyBvZgorYSBmaWxlJ3MgZXh0ZW5kZWQgbmFtZS4gIFRoaW5rIG9mIHNsb3RzIGFzIGFkZGl0aW9uYWwgbGFiZWxpbmcgZm9yIHRoZQorZGlyZWN0b3J5IGVudHJ5IG9mIHRoZSBmaWxlIHRvIHdoaWNoIHRoZXkgY29ycmVzcG9uZC4gIE1pY3Jvc29mdAorcHJlZmVycyB0byByZWZlciB0byB0aGUgOC4zIGVudHJ5IGZvciBhIGZpbGUgYXMgaXRzIGFsaWFzIGFuZCB0aGUKK2V4dGVuZGVkIHNsb3QgZGlyZWN0b3J5IGVudHJpZXMgYXMgdGhlIGZpbGUgbmFtZS4gCisKK1RoZSBDIHN0cnVjdHVyZSBmb3IgYSBzbG90IGRpcmVjdG9yeSBlbnRyeSBmb2xsb3dzOgorCisgICAgICAgIHN0cnVjdCBzbG90IHsgLy8gVXAgdG8gMTMgY2hhcmFjdGVycyBvZiBhIGxvbmcgbmFtZSAKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGlkOyAgICAgICAgICAgICAgIC8vIHNlcXVlbmNlIG51bWJlciBmb3Igc2xvdCAKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG5hbWUwXzRbMTBdOyAgICAgIC8vIGZpcnN0IDUgY2hhcmFjdGVycyBpbiBuYW1lIAorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYXR0cjsgICAgICAgICAgICAgLy8gYXR0cmlidXRlIGJ5dGUKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHJlc2VydmVkOyAgICAgICAgIC8vIGFsd2F5cyAwIAorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYWxpYXNfY2hlY2tzdW07ICAgLy8gY2hlY2tzdW0gZm9yIDguMyBhbGlhcyAKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG5hbWU1XzEwWzEyXTsgICAgIC8vIDYgbW9yZSBjaGFyYWN0ZXJzIGluIG5hbWUKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHN0YXJ0WzJdOyAgICAgICAgIC8vIHN0YXJ0aW5nIGNsdXN0ZXIgbnVtYmVyCisgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBuYW1lMTFfMTJbNF07ICAgICAvLyBsYXN0IDIgY2hhcmFjdGVycyBpbiBuYW1lCisgICAgICAgIH07CisKK0lmIHRoZSBsYXlvdXQgb2YgdGhlIHNsb3RzIGxvb2tzIGEgbGl0dGxlIG9kZCwgaXQncyBvbmx5CitiZWNhdXNlIG9mIE1pY3Jvc29mdCdzIGVmZm9ydHMgdG8gbWFpbnRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIG9sZAorc29mdHdhcmUuICBUaGUgc2xvdHMgbXVzdCBiZSBkaXNndWlzZWQgdG8gcHJldmVudCBvbGQgc29mdHdhcmUgZnJvbQorcGFuaWNraW5nLiAgVG8gdGhpcyBlbmQsIGEgbnVtYmVyIG9mIG1lYXN1cmVzIGFyZSB0YWtlbjoKKworICAgICAgICAxKSBUaGUgYXR0cmlidXRlIGJ5dGUgZm9yIGEgc2xvdCBkaXJlY3RvcnkgZW50cnkgaXMgYWx3YXlzIHNldAorICAgICAgICAgICB0byAweDBmLiAgVGhpcyBjb3JyZXNwb25kcyB0byBhbiBvbGQgZGlyZWN0b3J5IGVudHJ5IHdpdGgKKyAgICAgICAgICAgYXR0cmlidXRlcyBvZiAiaGlkZGVuIiwgInN5c3RlbSIsICJyZWFkLW9ubHkiLCBhbmQgInZvbHVtZQorICAgICAgICAgICBsYWJlbCIuICBNb3N0IG9sZCBzb2Z0d2FyZSB3aWxsIGlnbm9yZSBhbnkgZGlyZWN0b3J5CisgICAgICAgICAgIGVudHJpZXMgd2l0aCB0aGUgInZvbHVtZSBsYWJlbCIgYml0IHNldC4gIFJlYWwgdm9sdW1lIGxhYmVsCisgICAgICAgICAgIGVudHJpZXMgZG9uJ3QgaGF2ZSB0aGUgb3RoZXIgdGhyZWUgYml0cyBzZXQuCisKKyAgICAgICAgMikgVGhlIHN0YXJ0aW5nIGNsdXN0ZXIgaXMgYWx3YXlzIHNldCB0byAwLCBhbiBpbXBvc3NpYmxlCisgICAgICAgICAgIHZhbHVlIGZvciBhIERPUyBmaWxlLgorCitCZWNhdXNlIHRoZSBleHRlbmRlZCBGQVQgc3lzdGVtIGlzIGJhY2t3YXJkIGNvbXBhdGlibGUsIGl0IGlzCitwb3NzaWJsZSBmb3Igb2xkIHNvZnR3YXJlIHRvIG1vZGlmeSBkaXJlY3RvcnkgZW50cmllcy4gIE1lYXN1cmVzIG11c3QKK2JlIHRha2VuIHRvIGVuc3VyZSB0aGUgdmFsaWRpdHkgb2Ygc2xvdHMuICBBbiBleHRlbmRlZCBGQVQgc3lzdGVtIGNhbgordmVyaWZ5IHRoYXQgYSBzbG90IGRvZXMgaW4gZmFjdCBiZWxvbmcgdG8gYW4gOC4zIGRpcmVjdG9yeSBlbnRyeSBieQordGhlIGZvbGxvd2luZzoKKworICAgICAgICAxKSBQb3NpdGlvbmluZy4gIFNsb3RzIGZvciBhIGZpbGUgYWx3YXlzIGltbWVkaWF0ZWx5IHByb2NlZWQKKyAgICAgICAgICAgdGhlaXIgY29ycmVzcG9uZGluZyA4LjMgZGlyZWN0b3J5IGVudHJ5LiAgSW4gYWRkaXRpb24sIGVhY2gKKyAgICAgICAgICAgc2xvdCBoYXMgYW4gaWQgd2hpY2ggbWFya3MgaXRzIG9yZGVyIGluIHRoZSBleHRlbmRlZCBmaWxlCisgICAgICAgICAgIG5hbWUuICBIZXJlIGlzIGEgdmVyeSBhYmJyZXZpYXRlZCB2aWV3IG9mIGFuIDguMyBkaXJlY3RvcnkKKyAgICAgICAgICAgZW50cnkgYW5kIGl0cyBjb3JyZXNwb25kaW5nIGxvbmcgbmFtZSBzbG90cyBmb3IgdGhlIGZpbGUKKyAgICAgICAgICAgIk15IEJpZyBGaWxlLkV4dGVuc2lvbiB3aGljaCBpcyBsb25nIjoKKworICAgICAgICAgICAgICAgIDxwcm9jZWVkaW5nIGZpbGVzLi4uPgorICAgICAgICAgICAgICAgIDxzbG90ICMzLCBpZCA9IDB4NDMsIGNoYXJhY3RlcnMgPSAiaCBpcyBsb25nIj4KKyAgICAgICAgICAgICAgICA8c2xvdCAjMiwgaWQgPSAweDAyLCBjaGFyYWN0ZXJzID0gInh0ZW5zaW9uIHdoaWMiPgorICAgICAgICAgICAgICAgIDxzbG90ICMxLCBpZCA9IDB4MDEsIGNoYXJhY3RlcnMgPSAiTXkgQmlnIEZpbGUuRSI+CisgICAgICAgICAgICAgICAgPGRpcmVjdG9yeSBlbnRyeSwgbmFtZSA9ICJNWUJJR0ZJTC5FWFQiPgorCisgICAgICAgICAgIE5vdGUgdGhhdCB0aGUgc2xvdHMgYXJlIHN0b3JlZCBmcm9tIGxhc3QgdG8gZmlyc3QuICBTbG90cworICAgICAgICAgICBhcmUgbnVtYmVyZWQgZnJvbSAxIHRvIE4uICBUaGUgTnRoIHNsb3QgaXMgb3InZWQgd2l0aCAweDQwCisgICAgICAgICAgIHRvIG1hcmsgaXQgYXMgdGhlIGxhc3Qgb25lLgorCisgICAgICAgIDIpIENoZWNrc3VtLiAgRWFjaCBzbG90IGhhcyBhbiAiYWxpYXNfY2hlY2tzdW0iIHZhbHVlLiAgVGhlCisgICAgICAgICAgIGNoZWNrc3VtIGlzIGNhbGN1bGF0ZWQgZnJvbSB0aGUgOC4zIG5hbWUgdXNpbmcgdGhlCisgICAgICAgICAgIGZvbGxvd2luZyBhbGdvcml0aG06CisKKyAgICAgICAgICAgICAgICBmb3IgKHN1bSA9IGkgPSAwOyBpIDwgMTE7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgc3VtID0gKCgoc3VtJjEpPDw3KXwoKHN1bSYweGZlKT4+MSkpICsgbmFtZVtpXQorICAgICAgICAgICAgICAgIH0KKworCTMpIElmIHRoZXJlIGlzIGZyZWUgc3BhY2UgaW4gdGhlIGZpbmFsIHNsb3QsIGEgVW5pY29kZSBOVUxMICgweDAwMDApIAorCSAgIGlzIHN0b3JlZCBhZnRlciB0aGUgZmluYWwgY2hhcmFjdGVyLiAgQWZ0ZXIgdGhhdCwgYWxsIHVudXNlZCAKKwkgICBjaGFyYWN0ZXJzIGluIHRoZSBmaW5hbCBzbG90IGFyZSBzZXQgdG8gVW5pY29kZSAweEZGRkYuCisKK0ZpbmFsbHksIG5vdGUgdGhhdCB0aGUgZXh0ZW5kZWQgbmFtZSBpcyBzdG9yZWQgaW4gVW5pY29kZS4gIEVhY2ggVW5pY29kZQorY2hhcmFjdGVyIHRha2VzIHR3byBieXRlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvdmZzLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvdmZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzZmMDdhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy92ZnMudHh0CkBAIC0wLDAgKzEsMTE3OCBAQAorCisJICAgICAgT3ZlcnZpZXcgb2YgdGhlIExpbnV4IFZpcnR1YWwgRmlsZSBTeXN0ZW0KKworCU9yaWdpbmFsIGF1dGhvcjogUmljaGFyZCBHb29jaCA8cmdvb2NoQGF0bmYuY3Npcm8uYXU+CisKKwkJICBMYXN0IHVwZGF0ZWQgb24gSnVuZSAyNCwgMjAwNy4KKworICBDb3B5cmlnaHQgKEMpIDE5OTkgUmljaGFyZCBHb29jaAorICBDb3B5cmlnaHQgKEMpIDIwMDUgUGVra2EgRW5iZXJnCisKKyAgVGhpcyBmaWxlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBHUEx2Mi4KKworCitJbnRyb2R1Y3Rpb24KKz09PT09PT09PT09PQorCitUaGUgVmlydHVhbCBGaWxlIFN5c3RlbSAoYWxzbyBrbm93biBhcyB0aGUgVmlydHVhbCBGaWxlc3lzdGVtIFN3aXRjaCkKK2lzIHRoZSBzb2Z0d2FyZSBsYXllciBpbiB0aGUga2VybmVsIHRoYXQgcHJvdmlkZXMgdGhlIGZpbGVzeXN0ZW0KK2ludGVyZmFjZSB0byB1c2Vyc3BhY2UgcHJvZ3JhbXMuIEl0IGFsc28gcHJvdmlkZXMgYW4gYWJzdHJhY3Rpb24KK3dpdGhpbiB0aGUga2VybmVsIHdoaWNoIGFsbG93cyBkaWZmZXJlbnQgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbnMgdG8KK2NvZXhpc3QuCisKK1ZGUyBzeXN0ZW0gY2FsbHMgb3BlbigyKSwgc3RhdCgyKSwgcmVhZCgyKSwgd3JpdGUoMiksIGNobW9kKDIpIGFuZCBzbworb24gYXJlIGNhbGxlZCBmcm9tIGEgcHJvY2VzcyBjb250ZXh0LiBGaWxlc3lzdGVtIGxvY2tpbmcgaXMgZGVzY3JpYmVkCitpbiB0aGUgZG9jdW1lbnQgRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9Mb2NraW5nLgorCisKK0RpcmVjdG9yeSBFbnRyeSBDYWNoZSAoZGNhY2hlKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBWRlMgaW1wbGVtZW50cyB0aGUgb3BlbigyKSwgc3RhdCgyKSwgY2htb2QoMiksIGFuZCBzaW1pbGFyIHN5c3RlbQorY2FsbHMuIFRoZSBwYXRobmFtZSBhcmd1bWVudCB0aGF0IGlzIHBhc3NlZCB0byB0aGVtIGlzIHVzZWQgYnkgdGhlIFZGUwordG8gc2VhcmNoIHRocm91Z2ggdGhlIGRpcmVjdG9yeSBlbnRyeSBjYWNoZSAoYWxzbyBrbm93biBhcyB0aGUgZGVudHJ5CitjYWNoZSBvciBkY2FjaGUpLiBUaGlzIHByb3ZpZGVzIGEgdmVyeSBmYXN0IGxvb2stdXAgbWVjaGFuaXNtIHRvCit0cmFuc2xhdGUgYSBwYXRobmFtZSAoZmlsZW5hbWUpIGludG8gYSBzcGVjaWZpYyBkZW50cnkuIERlbnRyaWVzIGxpdmUKK2luIFJBTSBhbmQgYXJlIG5ldmVyIHNhdmVkIHRvIGRpc2M6IHRoZXkgZXhpc3Qgb25seSBmb3IgcGVyZm9ybWFuY2UuCisKK1RoZSBkZW50cnkgY2FjaGUgaXMgbWVhbnQgdG8gYmUgYSB2aWV3IGludG8geW91ciBlbnRpcmUgZmlsZXNwYWNlLiBBcworbW9zdCBjb21wdXRlcnMgY2Fubm90IGZpdCBhbGwgZGVudHJpZXMgaW4gdGhlIFJBTSBhdCB0aGUgc2FtZSB0aW1lLAorc29tZSBiaXRzIG9mIHRoZSBjYWNoZSBhcmUgbWlzc2luZy4gSW4gb3JkZXIgdG8gcmVzb2x2ZSB5b3VyIHBhdGhuYW1lCitpbnRvIGEgZGVudHJ5LCB0aGUgVkZTIG1heSBoYXZlIHRvIHJlc29ydCB0byBjcmVhdGluZyBkZW50cmllcyBhbG9uZwordGhlIHdheSwgYW5kIHRoZW4gbG9hZGluZyB0aGUgaW5vZGUuIFRoaXMgaXMgZG9uZSBieSBsb29raW5nIHVwIHRoZQoraW5vZGUuCisKKworVGhlIElub2RlIE9iamVjdAorLS0tLS0tLS0tLS0tLS0tLQorCitBbiBpbmRpdmlkdWFsIGRlbnRyeSB1c3VhbGx5IGhhcyBhIHBvaW50ZXIgdG8gYW4gaW5vZGUuIElub2RlcyBhcmUKK2ZpbGVzeXN0ZW0gb2JqZWN0cyBzdWNoIGFzIHJlZ3VsYXIgZmlsZXMsIGRpcmVjdG9yaWVzLCBGSUZPcyBhbmQgb3RoZXIKK2JlYXN0cy4gIFRoZXkgbGl2ZSBlaXRoZXIgb24gdGhlIGRpc2MgKGZvciBibG9jayBkZXZpY2UgZmlsZXN5c3RlbXMpCitvciBpbiB0aGUgbWVtb3J5IChmb3IgcHNldWRvIGZpbGVzeXN0ZW1zKS4gSW5vZGVzIHRoYXQgbGl2ZSBvbiB0aGUKK2Rpc2MgYXJlIGNvcGllZCBpbnRvIHRoZSBtZW1vcnkgd2hlbiByZXF1aXJlZCBhbmQgY2hhbmdlcyB0byB0aGUgaW5vZGUKK2FyZSB3cml0dGVuIGJhY2sgdG8gZGlzYy4gQSBzaW5nbGUgaW5vZGUgY2FuIGJlIHBvaW50ZWQgdG8gYnkgbXVsdGlwbGUKK2RlbnRyaWVzIChoYXJkIGxpbmtzLCBmb3IgZXhhbXBsZSwgZG8gdGhpcykuCisKK1RvIGxvb2sgdXAgYW4gaW5vZGUgcmVxdWlyZXMgdGhhdCB0aGUgVkZTIGNhbGxzIHRoZSBsb29rdXAoKSBtZXRob2Qgb2YKK3RoZSBwYXJlbnQgZGlyZWN0b3J5IGlub2RlLiBUaGlzIG1ldGhvZCBpcyBpbnN0YWxsZWQgYnkgdGhlIHNwZWNpZmljCitmaWxlc3lzdGVtIGltcGxlbWVudGF0aW9uIHRoYXQgdGhlIGlub2RlIGxpdmVzIGluLiBPbmNlIHRoZSBWRlMgaGFzCit0aGUgcmVxdWlyZWQgZGVudHJ5IChhbmQgaGVuY2UgdGhlIGlub2RlKSwgd2UgY2FuIGRvIGFsbCB0aG9zZSBib3JpbmcKK3RoaW5ncyBsaWtlIG9wZW4oMikgdGhlIGZpbGUsIG9yIHN0YXQoMikgaXQgdG8gcGVlayBhdCB0aGUgaW5vZGUKK2RhdGEuIFRoZSBzdGF0KDIpIG9wZXJhdGlvbiBpcyBmYWlybHkgc2ltcGxlOiBvbmNlIHRoZSBWRlMgaGFzIHRoZQorZGVudHJ5LCBpdCBwZWVrcyBhdCB0aGUgaW5vZGUgZGF0YSBhbmQgcGFzc2VzIHNvbWUgb2YgaXQgYmFjayB0bwordXNlcnNwYWNlLgorCisKK1RoZSBGaWxlIE9iamVjdAorLS0tLS0tLS0tLS0tLS0tCisKK09wZW5pbmcgYSBmaWxlIHJlcXVpcmVzIGFub3RoZXIgb3BlcmF0aW9uOiBhbGxvY2F0aW9uIG9mIGEgZmlsZQorc3RydWN0dXJlICh0aGlzIGlzIHRoZSBrZXJuZWwtc2lkZSBpbXBsZW1lbnRhdGlvbiBvZiBmaWxlCitkZXNjcmlwdG9ycykuIFRoZSBmcmVzaGx5IGFsbG9jYXRlZCBmaWxlIHN0cnVjdHVyZSBpcyBpbml0aWFsaXplZCB3aXRoCithIHBvaW50ZXIgdG8gdGhlIGRlbnRyeSBhbmQgYSBzZXQgb2YgZmlsZSBvcGVyYXRpb24gbWVtYmVyIGZ1bmN0aW9ucy4KK1RoZXNlIGFyZSB0YWtlbiBmcm9tIHRoZSBpbm9kZSBkYXRhLiBUaGUgb3BlbigpIGZpbGUgbWV0aG9kIGlzIHRoZW4KK2NhbGxlZCBzbyB0aGUgc3BlY2lmaWMgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbiBjYW4gZG8gaXRzIHdvcmsuIFlvdQorY2FuIHNlZSB0aGF0IHRoaXMgaXMgYW5vdGhlciBzd2l0Y2ggcGVyZm9ybWVkIGJ5IHRoZSBWRlMuIFRoZSBmaWxlCitzdHJ1Y3R1cmUgaXMgcGxhY2VkIGludG8gdGhlIGZpbGUgZGVzY3JpcHRvciB0YWJsZSBmb3IgdGhlIHByb2Nlc3MuCisKK1JlYWRpbmcsIHdyaXRpbmcgYW5kIGNsb3NpbmcgZmlsZXMgKGFuZCBvdGhlciBhc3NvcnRlZCBWRlMgb3BlcmF0aW9ucykKK2lzIGRvbmUgYnkgdXNpbmcgdGhlIHVzZXJzcGFjZSBmaWxlIGRlc2NyaXB0b3IgdG8gZ3JhYiB0aGUgYXBwcm9wcmlhdGUKK2ZpbGUgc3RydWN0dXJlLCBhbmQgdGhlbiBjYWxsaW5nIHRoZSByZXF1aXJlZCBmaWxlIHN0cnVjdHVyZSBtZXRob2QgdG8KK2RvIHdoYXRldmVyIGlzIHJlcXVpcmVkLiBGb3IgYXMgbG9uZyBhcyB0aGUgZmlsZSBpcyBvcGVuLCBpdCBrZWVwcyB0aGUKK2RlbnRyeSBpbiB1c2UsIHdoaWNoIGluIHR1cm4gbWVhbnMgdGhhdCB0aGUgVkZTIGlub2RlIGlzIHN0aWxsIGluIHVzZS4KKworCitSZWdpc3RlcmluZyBhbmQgTW91bnRpbmcgYSBGaWxlc3lzdGVtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RvIHJlZ2lzdGVyIGFuZCB1bnJlZ2lzdGVyIGEgZmlsZXN5c3RlbSwgdXNlIHRoZSBmb2xsb3dpbmcgQVBJCitmdW5jdGlvbnM6CisKKyAgICNpbmNsdWRlIDxsaW51eC9mcy5oPgorCisgICBleHRlcm4gaW50IHJlZ2lzdGVyX2ZpbGVzeXN0ZW0oc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKik7CisgICBleHRlcm4gaW50IHVucmVnaXN0ZXJfZmlsZXN5c3RlbShzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqKTsKKworVGhlIHBhc3NlZCBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBkZXNjcmliZXMgeW91ciBmaWxlc3lzdGVtLiBXaGVuIGEKK3JlcXVlc3QgaXMgbWFkZSB0byBtb3VudCBhIGZpbGVzeXN0ZW0gb250byBhIGRpcmVjdG9yeSBpbiB5b3VyIG5hbWVzcGFjZSwKK3RoZSBWRlMgd2lsbCBjYWxsIHRoZSBhcHByb3ByaWF0ZSBtb3VudCgpIG1ldGhvZCBmb3IgdGhlIHNwZWNpZmljCitmaWxlc3lzdGVtLiAgTmV3IHZmc21vdW50IHJlZmVycmluZyB0byB0aGUgdHJlZSByZXR1cm5lZCBieSAtPm1vdW50KCkKK3dpbGwgYmUgYXR0YWNoZWQgdG8gdGhlIG1vdW50cG9pbnQsIHNvIHRoYXQgd2hlbiBwYXRobmFtZSByZXNvbHV0aW9uCityZWFjaGVzIHRoZSBtb3VudHBvaW50IGl0IHdpbGwganVtcCBpbnRvIHRoZSByb290IG9mIHRoYXQgdmZzbW91bnQuCisKK1lvdSBjYW4gc2VlIGFsbCBmaWxlc3lzdGVtcyB0aGF0IGFyZSByZWdpc3RlcmVkIHRvIHRoZSBrZXJuZWwgaW4gdGhlCitmaWxlIC9wcm9jL2ZpbGVzeXN0ZW1zLgorCisKK3N0cnVjdCBmaWxlX3N5c3RlbV90eXBlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGRlc2NyaWJlcyB0aGUgZmlsZXN5c3RlbS4gQXMgb2Yga2VybmVsIDIuNi4zOSwgdGhlIGZvbGxvd2luZworbWVtYmVycyBhcmUgZGVmaW5lZDoKKworc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgeworCWNvbnN0IGNoYXIgKm5hbWU7CisJaW50IGZzX2ZsYWdzOworICAgICAgICBzdHJ1Y3QgZGVudHJ5ICooKm1vdW50KSAoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKiwgaW50LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosIHZvaWQgKik7CisgICAgICAgIHZvaWQgKCpraWxsX3NiKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOworICAgICAgICBzdHJ1Y3QgbW9kdWxlICpvd25lcjsKKyAgICAgICAgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKiBuZXh0OworICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZzX3N1cGVyczsKKwlzdHJ1Y3QgbG9ja19jbGFzc19rZXkgc19sb2NrX2tleTsKKwlzdHJ1Y3QgbG9ja19jbGFzc19rZXkgc191bW91bnRfa2V5OworfTsKKworICBuYW1lOiB0aGUgbmFtZSBvZiB0aGUgZmlsZXN5c3RlbSB0eXBlLCBzdWNoIGFzICJleHQyIiwgImlzbzk2NjAiLAorCSJtc2RvcyIgYW5kIHNvIG9uCisKKyAgZnNfZmxhZ3M6IHZhcmlvdXMgZmxhZ3MgKGkuZS4gRlNfUkVRVUlSRVNfREVWLCBGU19OT19EQ0FDSEUsIGV0Yy4pCisKKyAgbW91bnQ6IHRoZSBtZXRob2QgdG8gY2FsbCB3aGVuIGEgbmV3IGluc3RhbmNlIG9mIHRoaXMKKwlmaWxlc3lzdGVtIHNob3VsZCBiZSBtb3VudGVkCisKKyAga2lsbF9zYjogdGhlIG1ldGhvZCB0byBjYWxsIHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhpcyBmaWxlc3lzdGVtCisJc2hvdWxkIGJlIHNodXQgZG93bgorCisgIG93bmVyOiBmb3IgaW50ZXJuYWwgVkZTIHVzZTogeW91IHNob3VsZCBpbml0aWFsaXplIHRoaXMgdG8gVEhJU19NT0RVTEUgaW4KKyAgCW1vc3QgY2FzZXMuCisKKyAgbmV4dDogZm9yIGludGVybmFsIFZGUyB1c2U6IHlvdSBzaG91bGQgaW5pdGlhbGl6ZSB0aGlzIHRvIE5VTEwKKworICBzX2xvY2tfa2V5LCBzX3Vtb3VudF9rZXk6IGxvY2tkZXAtc3BlY2lmaWMKKworVGhlIG1vdW50KCkgbWV0aG9kIGhhcyB0aGUgZm9sbG93aW5nIGFyZ3VtZW50czoKKworICBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqZnNfdHlwZTogZGVzY3JpYmVzIHRoZSBmaWxlc3lzdGVtLCBwYXJ0bHkgaW5pdGlhbGl6ZWQKKyAgCWJ5IHRoZSBzcGVjaWZpYyBmaWxlc3lzdGVtIGNvZGUKKworICBpbnQgZmxhZ3M6IG1vdW50IGZsYWdzCisKKyAgY29uc3QgY2hhciAqZGV2X25hbWU6IHRoZSBkZXZpY2UgbmFtZSB3ZSBhcmUgbW91bnRpbmcuCisKKyAgdm9pZCAqZGF0YTogYXJiaXRyYXJ5IG1vdW50IG9wdGlvbnMsIHVzdWFsbHkgY29tZXMgYXMgYW4gQVNDSUkKKwlzdHJpbmcgKHNlZSAiTW91bnQgT3B0aW9ucyIgc2VjdGlvbikKKworVGhlIG1vdW50KCkgbWV0aG9kIG11c3QgcmV0dXJuIHRoZSByb290IGRlbnRyeSBvZiB0aGUgdHJlZSByZXF1ZXN0ZWQgYnkKK2NhbGxlci4gIEFuIGFjdGl2ZSByZWZlcmVuY2UgdG8gaXRzIHN1cGVyYmxvY2sgbXVzdCBiZSBncmFiYmVkIGFuZCB0aGUKK3N1cGVyYmxvY2sgbXVzdCBiZSBsb2NrZWQuICBPbiBmYWlsdXJlIGl0IHNob3VsZCByZXR1cm4gRVJSX1BUUihlcnJvcikuCisKK1RoZSBhcmd1bWVudHMgbWF0Y2ggdGhvc2Ugb2YgbW91bnQoMikgYW5kIHRoZWlyIGludGVycHJldGF0aW9uCitkZXBlbmRzIG9uIGZpbGVzeXN0ZW0gdHlwZS4gIEUuZy4gZm9yIGJsb2NrIGZpbGVzeXN0ZW1zLCBkZXZfbmFtZSBpcworaW50ZXJwcmV0ZWQgYXMgYmxvY2sgZGV2aWNlIG5hbWUsIHRoYXQgZGV2aWNlIGlzIG9wZW5lZCBhbmQgaWYgaXQKK2NvbnRhaW5zIGEgc3VpdGFibGUgZmlsZXN5c3RlbSBpbWFnZSB0aGUgbWV0aG9kIGNyZWF0ZXMgYW5kIGluaXRpYWxpemVzCitzdHJ1Y3Qgc3VwZXJfYmxvY2sgYWNjb3JkaW5nbHksIHJldHVybmluZyBpdHMgcm9vdCBkZW50cnkgdG8gY2FsbGVyLgorCistPm1vdW50KCkgbWF5IGNob29zZSB0byByZXR1cm4gYSBzdWJ0cmVlIG9mIGV4aXN0aW5nIGZpbGVzeXN0ZW0gLSBpdAorZG9lc24ndCBoYXZlIHRvIGNyZWF0ZSBhIG5ldyBvbmUuICBUaGUgbWFpbiByZXN1bHQgZnJvbSB0aGUgY2FsbGVyJ3MKK3BvaW50IG9mIHZpZXcgaXMgYSByZWZlcmVuY2UgdG8gZGVudHJ5IGF0IHRoZSByb290IG9mIChzdWIpdHJlZSB0bworYmUgYXR0YWNoZWQ7IGNyZWF0aW9uIG9mIG5ldyBzdXBlcmJsb2NrIGlzIGEgY29tbW9uIHNpZGUgZWZmZWN0LgorCitUaGUgbW9zdCBpbnRlcmVzdGluZyBtZW1iZXIgb2YgdGhlIHN1cGVyYmxvY2sgc3RydWN0dXJlIHRoYXQgdGhlCittb3VudCgpIG1ldGhvZCBmaWxscyBpbiBpcyB0aGUgInNfb3AiIGZpZWxkLiBUaGlzIGlzIGEgcG9pbnRlciB0bworYSAic3RydWN0IHN1cGVyX29wZXJhdGlvbnMiIHdoaWNoIGRlc2NyaWJlcyB0aGUgbmV4dCBsZXZlbCBvZiB0aGUKK2ZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb24uCisKK1VzdWFsbHksIGEgZmlsZXN5c3RlbSB1c2VzIG9uZSBvZiB0aGUgZ2VuZXJpYyBtb3VudCgpIGltcGxlbWVudGF0aW9ucworYW5kIHByb3ZpZGVzIGEgZmlsbF9zdXBlcigpIGNhbGxiYWNrIGluc3RlYWQuIFRoZSBnZW5lcmljIHZhcmlhbnRzIGFyZToKKworICBtb3VudF9iZGV2OiBtb3VudCBhIGZpbGVzeXN0ZW0gcmVzaWRpbmcgb24gYSBibG9jayBkZXZpY2UKKworICBtb3VudF9ub2RldjogbW91bnQgYSBmaWxlc3lzdGVtIHRoYXQgaXMgbm90IGJhY2tlZCBieSBhIGRldmljZQorCisgIG1vdW50X3NpbmdsZTogbW91bnQgYSBmaWxlc3lzdGVtIHdoaWNoIHNoYXJlcyB0aGUgaW5zdGFuY2UgYmV0d2VlbgorICAJYWxsIG1vdW50cworCitBIGZpbGxfc3VwZXIoKSBjYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBoYXMgdGhlIGZvbGxvd2luZyBhcmd1bWVudHM6CisKKyAgc3RydWN0IHN1cGVyX2Jsb2NrICpzYjogdGhlIHN1cGVyYmxvY2sgc3RydWN0dXJlLiBUaGUgY2FsbGJhY2sKKyAgCW11c3QgaW5pdGlhbGl6ZSB0aGlzIHByb3Blcmx5LgorCisgIHZvaWQgKmRhdGE6IGFyYml0cmFyeSBtb3VudCBvcHRpb25zLCB1c3VhbGx5IGNvbWVzIGFzIGFuIEFTQ0lJCisJc3RyaW5nIChzZWUgIk1vdW50IE9wdGlvbnMiIHNlY3Rpb24pCisKKyAgaW50IHNpbGVudDogd2hldGhlciBvciBub3QgdG8gYmUgc2lsZW50IG9uIGVycm9yCisKKworVGhlIFN1cGVyYmxvY2sgT2JqZWN0Cis9PT09PT09PT09PT09PT09PT09PT0KKworQSBzdXBlcmJsb2NrIG9iamVjdCByZXByZXNlbnRzIGEgbW91bnRlZCBmaWxlc3lzdGVtLgorCisKK3N0cnVjdCBzdXBlcl9vcGVyYXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGRlc2NyaWJlcyBob3cgdGhlIFZGUyBjYW4gbWFuaXB1bGF0ZSB0aGUgc3VwZXJibG9jayBvZiB5b3VyCitmaWxlc3lzdGVtLiBBcyBvZiBrZXJuZWwgMi42LjIyLCB0aGUgZm9sbG93aW5nIG1lbWJlcnMgYXJlIGRlZmluZWQ6CisKK3N0cnVjdCBzdXBlcl9vcGVyYXRpb25zIHsKKyAgICAgICAgc3RydWN0IGlub2RlICooKmFsbG9jX2lub2RlKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKKyAgICAgICAgdm9pZCAoKmRlc3Ryb3lfaW5vZGUpKHN0cnVjdCBpbm9kZSAqKTsKKworICAgICAgICB2b2lkICgqZGlydHlfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKiwgaW50IGZsYWdzKTsKKyAgICAgICAgaW50ICgqd3JpdGVfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKKyAgICAgICAgdm9pZCAoKmRyb3BfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKik7CisgICAgICAgIHZvaWQgKCpkZWxldGVfaW5vZGUpIChzdHJ1Y3QgaW5vZGUgKik7CisgICAgICAgIHZvaWQgKCpwdXRfc3VwZXIpIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CisgICAgICAgIGludCAoKnN5bmNfZnMpKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCB3YWl0KTsKKyAgICAgICAgaW50ICgqZnJlZXplX2ZzKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOworICAgICAgICBpbnQgKCp1bmZyZWV6ZV9mcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqKTsKKyAgICAgICAgaW50ICgqc3RhdGZzKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qga3N0YXRmcyAqKTsKKyAgICAgICAgaW50ICgqcmVtb3VudF9mcykgKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQgKiwgY2hhciAqKTsKKyAgICAgICAgdm9pZCAoKmNsZWFyX2lub2RlKSAoc3RydWN0IGlub2RlICopOworICAgICAgICB2b2lkICgqdW1vdW50X2JlZ2luKSAoc3RydWN0IHN1cGVyX2Jsb2NrICopOworCisgICAgICAgIGludCAoKnNob3dfb3B0aW9ucykoc3RydWN0IHNlcV9maWxlICosIHN0cnVjdCBkZW50cnkgKik7CisKKyAgICAgICAgc3NpemVfdCAoKnF1b3RhX3JlYWQpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQsIGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QpOworICAgICAgICBzc2l6ZV90ICgqcXVvdGFfd3JpdGUpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBsb2ZmX3QpOworCWludCAoKm5yX2NhY2hlZF9vYmplY3RzKShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKik7CisJdm9pZCAoKmZyZWVfY2FjaGVkX29iamVjdHMpKHN0cnVjdCBzdXBlcl9ibG9jayAqLCBpbnQpOworfTsKKworQWxsIG1ldGhvZHMgYXJlIGNhbGxlZCB3aXRob3V0IGFueSBsb2NrcyBiZWluZyBoZWxkLCB1bmxlc3Mgb3RoZXJ3aXNlCitub3RlZC4gVGhpcyBtZWFucyB0aGF0IG1vc3QgbWV0aG9kcyBjYW4gYmxvY2sgc2FmZWx5LiBBbGwgbWV0aG9kcyBhcmUKK29ubHkgY2FsbGVkIGZyb20gYSBwcm9jZXNzIGNvbnRleHQgKGkuZS4gbm90IGZyb20gYW4gaW50ZXJydXB0IGhhbmRsZXIKK29yIGJvdHRvbSBoYWxmKS4KKworICBhbGxvY19pbm9kZTogdGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IGFsbG9jX2lub2RlKCkgdG8gYWxsb2NhdGUgbWVtb3J5CisgCWZvciBzdHJ1Y3QgaW5vZGUgYW5kIGluaXRpYWxpemUgaXQuICBJZiB0aGlzIGZ1bmN0aW9uIGlzIG5vdAorIAlkZWZpbmVkLCBhIHNpbXBsZSAnc3RydWN0IGlub2RlJyBpcyBhbGxvY2F0ZWQuICBOb3JtYWxseQorIAlhbGxvY19pbm9kZSB3aWxsIGJlIHVzZWQgdG8gYWxsb2NhdGUgYSBsYXJnZXIgc3RydWN0dXJlIHdoaWNoCisgCWNvbnRhaW5zIGEgJ3N0cnVjdCBpbm9kZScgZW1iZWRkZWQgd2l0aGluIGl0LgorCisgIGRlc3Ryb3lfaW5vZGU6IHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSBkZXN0cm95X2lub2RlKCkgdG8gcmVsZWFzZQorICAJcmVzb3VyY2VzIGFsbG9jYXRlZCBmb3Igc3RydWN0IGlub2RlLiAgSXQgaXMgb25seSByZXF1aXJlZCBpZgorICAJLT5hbGxvY19pbm9kZSB3YXMgZGVmaW5lZCBhbmQgc2ltcGx5IHVuZG9lcyBhbnl0aGluZyBkb25lIGJ5CisJLT5hbGxvY19pbm9kZS4KKworICBkaXJ0eV9pbm9kZTogdGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSBWRlMgdG8gbWFyayBhbiBpbm9kZSBkaXJ0eS4KKworICB3cml0ZV9pbm9kZTogdGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gdGhlIFZGUyBuZWVkcyB0byB3cml0ZSBhbgorCWlub2RlIHRvIGRpc2MuICBUaGUgc2Vjb25kIHBhcmFtZXRlciBpbmRpY2F0ZXMgd2hldGhlciB0aGUgd3JpdGUKKwlzaG91bGQgYmUgc3luY2hyb25vdXMgb3Igbm90LCBub3QgYWxsIGZpbGVzeXN0ZW1zIGNoZWNrIHRoaXMgZmxhZy4KKworICBkcm9wX2lub2RlOiBjYWxsZWQgd2hlbiB0aGUgbGFzdCBhY2Nlc3MgdG8gdGhlIGlub2RlIGlzIGRyb3BwZWQsCisJd2l0aCB0aGUgaW5vZGUtPmlfbG9jayBzcGlubG9jayBoZWxkLgorCisJVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGVpdGhlciBOVUxMIChub3JtYWwgVU5JWCBmaWxlc3lzdGVtCisJc2VtYW50aWNzKSBvciAiZ2VuZXJpY19kZWxldGVfaW5vZGUiIChmb3IgZmlsZXN5c3RlbXMgdGhhdCBkbyBub3QKKwl3YW50IHRvIGNhY2hlIGlub2RlcyAtIGNhdXNpbmcgImRlbGV0ZV9pbm9kZSIgdG8gYWx3YXlzIGJlCisJY2FsbGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mIGlfbmxpbmspCisKKwlUaGUgImdlbmVyaWNfZGVsZXRlX2lub2RlKCkiIGJlaGF2aW9yIGlzIGVxdWl2YWxlbnQgdG8gdGhlCisJb2xkIHByYWN0aWNlIG9mIHVzaW5nICJmb3JjZV9kZWxldGUiIGluIHRoZSBwdXRfaW5vZGUoKSBjYXNlLAorCWJ1dCBkb2VzIG5vdCBoYXZlIHRoZSByYWNlcyB0aGF0IHRoZSAiZm9yY2VfZGVsZXRlKCkiIGFwcHJvYWNoCisJaGFkLiAKKworICBkZWxldGVfaW5vZGU6IGNhbGxlZCB3aGVuIHRoZSBWRlMgd2FudHMgdG8gZGVsZXRlIGFuIGlub2RlCisKKyAgcHV0X3N1cGVyOiBjYWxsZWQgd2hlbiB0aGUgVkZTIHdpc2hlcyB0byBmcmVlIHRoZSBzdXBlcmJsb2NrCisJKGkuZS4gdW5tb3VudCkuIFRoaXMgaXMgY2FsbGVkIHdpdGggdGhlIHN1cGVyYmxvY2sgbG9jayBoZWxkCisKKyAgc3luY19mczogY2FsbGVkIHdoZW4gVkZTIGlzIHdyaXRpbmcgb3V0IGFsbCBkaXJ0eSBkYXRhIGFzc29jaWF0ZWQgd2l0aAorICAJYSBzdXBlcmJsb2NrLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbWV0aG9kCisJc2hvdWxkIHdhaXQgdW50aWwgdGhlIHdyaXRlIG91dCBoYXMgYmVlbiBjb21wbGV0ZWQuIE9wdGlvbmFsLgorCisgIGZyZWV6ZV9mczogY2FsbGVkIHdoZW4gVkZTIGlzIGxvY2tpbmcgYSBmaWxlc3lzdGVtIGFuZAorICAJZm9yY2luZyBpdCBpbnRvIGEgY29uc2lzdGVudCBzdGF0ZS4gIFRoaXMgbWV0aG9kIGlzIGN1cnJlbnRseQorICAJdXNlZCBieSB0aGUgTG9naWNhbCBWb2x1bWUgTWFuYWdlciAoTFZNKS4KKworICB1bmZyZWV6ZV9mczogY2FsbGVkIHdoZW4gVkZTIGlzIHVubG9ja2luZyBhIGZpbGVzeXN0ZW0gYW5kIG1ha2luZyBpdCB3cml0YWJsZQorICAJYWdhaW4uCisKKyAgc3RhdGZzOiBjYWxsZWQgd2hlbiB0aGUgVkZTIG5lZWRzIHRvIGdldCBmaWxlc3lzdGVtIHN0YXRpc3RpY3MuCisKKyAgcmVtb3VudF9mczogY2FsbGVkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgcmVtb3VudGVkLiBUaGlzIGlzIGNhbGxlZAorCXdpdGggdGhlIGtlcm5lbCBsb2NrIGhlbGQKKworICBjbGVhcl9pbm9kZTogY2FsbGVkIHRoZW4gdGhlIFZGUyBjbGVhcnMgdGhlIGlub2RlLiBPcHRpb25hbAorCisgIHVtb3VudF9iZWdpbjogY2FsbGVkIHdoZW4gdGhlIFZGUyBpcyB1bm1vdW50aW5nIGEgZmlsZXN5c3RlbS4KKworICBzaG93X29wdGlvbnM6IGNhbGxlZCBieSB0aGUgVkZTIHRvIHNob3cgbW91bnQgb3B0aW9ucyBmb3IKKwkvcHJvYy88cGlkPi9tb3VudHMuICAoc2VlICJNb3VudCBPcHRpb25zIiBzZWN0aW9uKQorCisgIHF1b3RhX3JlYWQ6IGNhbGxlZCBieSB0aGUgVkZTIHRvIHJlYWQgZnJvbSBmaWxlc3lzdGVtIHF1b3RhIGZpbGUuCisKKyAgcXVvdGFfd3JpdGU6IGNhbGxlZCBieSB0aGUgVkZTIHRvIHdyaXRlIHRvIGZpbGVzeXN0ZW0gcXVvdGEgZmlsZS4KKworICBucl9jYWNoZWRfb2JqZWN0czogY2FsbGVkIGJ5IHRoZSBzYiBjYWNoZSBzaHJpbmtpbmcgZnVuY3Rpb24gZm9yIHRoZQorCWZpbGVzeXN0ZW0gdG8gcmV0dXJuIHRoZSBudW1iZXIgb2YgZnJlZWFibGUgY2FjaGVkIG9iamVjdHMgaXQgY29udGFpbnMuCisJT3B0aW9uYWwuCisKKyAgZnJlZV9jYWNoZV9vYmplY3RzOiBjYWxsZWQgYnkgdGhlIHNiIGNhY2hlIHNocmlua2luZyBmdW5jdGlvbiBmb3IgdGhlCisJZmlsZXN5c3RlbSB0byBzY2FuIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyBpbmRpY2F0ZWQgdG8gdHJ5IHRvIGZyZWUgdGhlbS4KKwlPcHRpb25hbCwgYnV0IGFueSBmaWxlc3lzdGVtIGltcGxlbWVudGluZyB0aGlzIG1ldGhvZCBuZWVkcyB0byBhbHNvCisJaW1wbGVtZW50IC0+bnJfY2FjaGVkX29iamVjdHMgZm9yIGl0IHRvIGJlIGNhbGxlZCBjb3JyZWN0bHkuCisKKwlXZSBjYW4ndCBkbyBhbnl0aGluZyB3aXRoIGFueSBlcnJvcnMgdGhhdCB0aGUgZmlsZXN5c3RlbSBtaWdodAorCWVuY291bnRlcmVkLCBoZW5jZSB0aGUgdm9pZCByZXR1cm4gdHlwZS4gVGhpcyB3aWxsIG5ldmVyIGJlIGNhbGxlZCBpZgorCXRoZSBWTSBpcyB0cnlpbmcgdG8gcmVjbGFpbSB1bmRlciBHRlBfTk9GUyBjb25kaXRpb25zLCBoZW5jZSB0aGlzCisJbWV0aG9kIGRvZXMgbm90IG5lZWQgdG8gaGFuZGxlIHRoYXQgc2l0dWF0aW9uIGl0c2VsZi4KKworCUltcGxlbWVudGF0aW9ucyBtdXN0IGluY2x1ZGUgY29uZGl0aW9uYWwgcmVzY2hlZHVsZSBjYWxscyBpbnNpZGUgYW55CisJc2Nhbm5pbmcgbG9vcCB0aGF0IGlzIGRvbmUuIFRoaXMgYWxsb3dzIHRoZSBWRlMgdG8gZGV0ZXJtaW5lCisJYXBwcm9wcmlhdGUgc2NhbiBiYXRjaCBzaXplcyB3aXRob3V0IGhhdmluZyB0byB3b3JyeSBhYm91dCB3aGV0aGVyCisJaW1wbGVtZW50YXRpb25zIHdpbGwgY2F1c2UgaG9sZG9mZiBwcm9ibGVtcyBkdWUgdG8gbGFyZ2Ugc2NhbiBiYXRjaAorCXNpemVzLgorCitXaG9ldmVyIHNldHMgdXAgdGhlIGlub2RlIGlzIHJlc3BvbnNpYmxlIGZvciBmaWxsaW5nIGluIHRoZSAiaV9vcCIgZmllbGQuIFRoaXMKK2lzIGEgcG9pbnRlciB0byBhICJzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyIgd2hpY2ggZGVzY3JpYmVzIHRoZSBtZXRob2RzIHRoYXQKK2NhbiBiZSBwZXJmb3JtZWQgb24gaW5kaXZpZHVhbCBpbm9kZXMuCisKKworVGhlIElub2RlIE9iamVjdAorPT09PT09PT09PT09PT09PQorCitBbiBpbm9kZSBvYmplY3QgcmVwcmVzZW50cyBhbiBvYmplY3Qgd2l0aGluIHRoZSBmaWxlc3lzdGVtLgorCisKK3N0cnVjdCBpbm9kZV9vcGVyYXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGRlc2NyaWJlcyBob3cgdGhlIFZGUyBjYW4gbWFuaXB1bGF0ZSBhbiBpbm9kZSBpbiB5b3VyCitmaWxlc3lzdGVtLiBBcyBvZiBrZXJuZWwgMi42LjIyLCB0aGUgZm9sbG93aW5nIG1lbWJlcnMgYXJlIGRlZmluZWQ6CisKK3N0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHsKKwlpbnQgKCpjcmVhdGUpIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICosIHVtb2RlX3QsIGJvb2wpOworCXN0cnVjdCBkZW50cnkgKiAoKmxvb2t1cCkgKHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKiwgdW5zaWduZWQgaW50KTsKKwlpbnQgKCpsaW5rKSAoc3RydWN0IGRlbnRyeSAqLHN0cnVjdCBpbm9kZSAqLHN0cnVjdCBkZW50cnkgKik7CisJaW50ICgqdW5saW5rKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqKTsKKwlpbnQgKCpzeW1saW5rKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqLGNvbnN0IGNoYXIgKik7CisJaW50ICgqbWtkaXIpIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICosdW1vZGVfdCk7CisJaW50ICgqcm1kaXIpIChzdHJ1Y3QgaW5vZGUgKixzdHJ1Y3QgZGVudHJ5ICopOworCWludCAoKm1rbm9kKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRyeSAqLHVtb2RlX3QsZGV2X3QpOworCWludCAoKnJlbmFtZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosCisJCQlzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqKTsKKwlpbnQgKCpyZW5hbWUyKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwKKwkJCXN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHVuc2lnbmVkIGludCk7CisJaW50ICgqcmVhZGxpbmspIChzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgX191c2VyICosaW50KTsKKwljb25zdCBjaGFyICooKmZvbGxvd19saW5rKSAoc3RydWN0IGRlbnRyeSAqLCB2b2lkICoqKTsKKwl2b2lkICgqcHV0X2xpbmspIChzdHJ1Y3QgaW5vZGUgKiwgdm9pZCAqKTsKKwlpbnQgKCpwZXJtaXNzaW9uKSAoc3RydWN0IGlub2RlICosIGludCk7CisJaW50ICgqZ2V0X2FjbCkoc3RydWN0IGlub2RlICosIGludCk7CisJaW50ICgqc2V0YXR0cikgKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlhdHRyICopOworCWludCAoKmdldGF0dHIpIChzdHJ1Y3QgdmZzbW91bnQgKm1udCwgc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qga3N0YXQgKik7CisJaW50ICgqc2V0eGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGNoYXIgKixjb25zdCB2b2lkICosc2l6ZV90LGludCk7CisJc3NpemVfdCAoKmdldHhhdHRyKSAoc3RydWN0IGRlbnRyeSAqLCBjb25zdCBjaGFyICosIHZvaWQgKiwgc2l6ZV90KTsKKwlzc2l6ZV90ICgqbGlzdHhhdHRyKSAoc3RydWN0IGRlbnRyeSAqLCBjaGFyICosIHNpemVfdCk7CisJaW50ICgqcmVtb3ZleGF0dHIpIChzdHJ1Y3QgZGVudHJ5ICosIGNvbnN0IGNoYXIgKik7CisJdm9pZCAoKnVwZGF0ZV90aW1lKShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IHRpbWVzcGVjICosIGludCk7CisJaW50ICgqYXRvbWljX29wZW4pKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBmaWxlICosCisJCQl1bnNpZ25lZCBvcGVuX2ZsYWcsIHVtb2RlX3QgY3JlYXRlX21vZGUsIGludCAqb3BlbmVkKTsKKwlpbnQgKCp0bXBmaWxlKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwgdW1vZGVfdCk7CisJaW50ICgqZGVudHJ5X29wZW4pKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGZpbGUgKiwgY29uc3Qgc3RydWN0IGNyZWQgKik7Cit9OworCitBZ2FpbiwgYWxsIG1ldGhvZHMgYXJlIGNhbGxlZCB3aXRob3V0IGFueSBsb2NrcyBiZWluZyBoZWxkLCB1bmxlc3MKK290aGVyd2lzZSBub3RlZC4KKworICBjcmVhdGU6IGNhbGxlZCBieSB0aGUgb3BlbigyKSBhbmQgY3JlYXQoMikgc3lzdGVtIGNhbGxzLiBPbmx5CisJcmVxdWlyZWQgaWYgeW91IHdhbnQgdG8gc3VwcG9ydCByZWd1bGFyIGZpbGVzLiBUaGUgZGVudHJ5IHlvdQorCWdldCBzaG91bGQgbm90IGhhdmUgYW4gaW5vZGUgKGkuZS4gaXQgc2hvdWxkIGJlIGEgbmVnYXRpdmUKKwlkZW50cnkpLiBIZXJlIHlvdSB3aWxsIHByb2JhYmx5IGNhbGwgZF9pbnN0YW50aWF0ZSgpIHdpdGggdGhlCisJZGVudHJ5IGFuZCB0aGUgbmV3bHkgY3JlYXRlZCBpbm9kZQorCisgIGxvb2t1cDogY2FsbGVkIHdoZW4gdGhlIFZGUyBuZWVkcyB0byBsb29rIHVwIGFuIGlub2RlIGluIGEgcGFyZW50CisJZGlyZWN0b3J5LiBUaGUgbmFtZSB0byBsb29rIGZvciBpcyBmb3VuZCBpbiB0aGUgZGVudHJ5LiBUaGlzCisJbWV0aG9kIG11c3QgY2FsbCBkX2FkZCgpIHRvIGluc2VydCB0aGUgZm91bmQgaW5vZGUgaW50byB0aGUKKwlkZW50cnkuIFRoZSAiaV9jb3VudCIgZmllbGQgaW4gdGhlIGlub2RlIHN0cnVjdHVyZSBzaG91bGQgYmUKKwlpbmNyZW1lbnRlZC4gSWYgdGhlIG5hbWVkIGlub2RlIGRvZXMgbm90IGV4aXN0IGEgTlVMTCBpbm9kZQorCXNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIHRoZSBkZW50cnkgKHRoaXMgaXMgY2FsbGVkIGEgbmVnYXRpdmUKKwlkZW50cnkpLiBSZXR1cm5pbmcgYW4gZXJyb3IgY29kZSBmcm9tIHRoaXMgcm91dGluZSBtdXN0IG9ubHkKKwliZSBkb25lIG9uIGEgcmVhbCBlcnJvciwgb3RoZXJ3aXNlIGNyZWF0aW5nIGlub2RlcyB3aXRoIHN5c3RlbQorCWNhbGxzIGxpa2UgY3JlYXRlKDIpLCBta25vZCgyKSwgbWtkaXIoMikgYW5kIHNvIG9uIHdpbGwgZmFpbC4KKwlJZiB5b3Ugd2lzaCB0byBvdmVybG9hZCB0aGUgZGVudHJ5IG1ldGhvZHMgdGhlbiB5b3Ugc2hvdWxkCisJaW5pdGlhbGlzZSB0aGUgImRfZG9wIiBmaWVsZCBpbiB0aGUgZGVudHJ5OyB0aGlzIGlzIGEgcG9pbnRlcgorCXRvIGEgc3RydWN0ICJkZW50cnlfb3BlcmF0aW9ucyIuCisJVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdpdGggdGhlIGRpcmVjdG9yeSBpbm9kZSBzZW1hcGhvcmUgaGVsZAorCisgIGxpbms6IGNhbGxlZCBieSB0aGUgbGluaygyKSBzeXN0ZW0gY2FsbC4gT25seSByZXF1aXJlZCBpZiB5b3Ugd2FudAorCXRvIHN1cHBvcnQgaGFyZCBsaW5rcy4gWW91IHdpbGwgcHJvYmFibHkgbmVlZCB0byBjYWxsCisJZF9pbnN0YW50aWF0ZSgpIGp1c3QgYXMgeW91IHdvdWxkIGluIHRoZSBjcmVhdGUoKSBtZXRob2QKKworICB1bmxpbms6IGNhbGxlZCBieSB0aGUgdW5saW5rKDIpIHN5c3RlbSBjYWxsLiBPbmx5IHJlcXVpcmVkIGlmIHlvdQorCXdhbnQgdG8gc3VwcG9ydCBkZWxldGluZyBpbm9kZXMKKworICBzeW1saW5rOiBjYWxsZWQgYnkgdGhlIHN5bWxpbmsoMikgc3lzdGVtIGNhbGwuIE9ubHkgcmVxdWlyZWQgaWYgeW91CisJd2FudCB0byBzdXBwb3J0IHN5bWxpbmtzLiBZb3Ugd2lsbCBwcm9iYWJseSBuZWVkIHRvIGNhbGwKKwlkX2luc3RhbnRpYXRlKCkganVzdCBhcyB5b3Ugd291bGQgaW4gdGhlIGNyZWF0ZSgpIG1ldGhvZAorCisgIG1rZGlyOiBjYWxsZWQgYnkgdGhlIG1rZGlyKDIpIHN5c3RlbSBjYWxsLiBPbmx5IHJlcXVpcmVkIGlmIHlvdSB3YW50CisJdG8gc3VwcG9ydCBjcmVhdGluZyBzdWJkaXJlY3Rvcmllcy4gWW91IHdpbGwgcHJvYmFibHkgbmVlZCB0bworCWNhbGwgZF9pbnN0YW50aWF0ZSgpIGp1c3QgYXMgeW91IHdvdWxkIGluIHRoZSBjcmVhdGUoKSBtZXRob2QKKworICBybWRpcjogY2FsbGVkIGJ5IHRoZSBybWRpcigyKSBzeXN0ZW0gY2FsbC4gT25seSByZXF1aXJlZCBpZiB5b3Ugd2FudAorCXRvIHN1cHBvcnQgZGVsZXRpbmcgc3ViZGlyZWN0b3JpZXMKKworICBta25vZDogY2FsbGVkIGJ5IHRoZSBta25vZCgyKSBzeXN0ZW0gY2FsbCB0byBjcmVhdGUgYSBkZXZpY2UgKGNoYXIsCisJYmxvY2spIGlub2RlIG9yIGEgbmFtZWQgcGlwZSAoRklGTykgb3Igc29ja2V0LiBPbmx5IHJlcXVpcmVkCisJaWYgeW91IHdhbnQgdG8gc3VwcG9ydCBjcmVhdGluZyB0aGVzZSB0eXBlcyBvZiBpbm9kZXMuIFlvdQorCXdpbGwgcHJvYmFibHkgbmVlZCB0byBjYWxsIGRfaW5zdGFudGlhdGUoKSBqdXN0IGFzIHlvdSB3b3VsZAorCWluIHRoZSBjcmVhdGUoKSBtZXRob2QKKworICByZW5hbWU6IGNhbGxlZCBieSB0aGUgcmVuYW1lKDIpIHN5c3RlbSBjYWxsIHRvIHJlbmFtZSB0aGUgb2JqZWN0IHRvCisJaGF2ZSB0aGUgcGFyZW50IGFuZCBuYW1lIGdpdmVuIGJ5IHRoZSBzZWNvbmQgaW5vZGUgYW5kIGRlbnRyeS4KKworICByZW5hbWUyOiB0aGlzIGhhcyBhbiBhZGRpdGlvbmFsIGZsYWdzIGFyZ3VtZW50IGNvbXBhcmVkIHRvIHJlbmFtZS4KKwlJZiBubyBmbGFncyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBmaWxlc3lzdGVtIHRoZW4gdGhpcyBtZXRob2QKKwluZWVkIG5vdCBiZSBpbXBsZW1lbnRlZC4gIElmIHNvbWUgZmxhZ3MgYXJlIHN1cHBvcnRlZCB0aGVuIHRoZQorCWZpbGVzeXN0ZW0gbXVzdCByZXR1cm4gLUVJTlZBTCBmb3IgYW55IHVuc3VwcG9ydGVkIG9yIHVua25vd24KKwlmbGFncy4gIEN1cnJlbnRseSB0aGUgZm9sbG93aW5nIGZsYWdzIGFyZSBpbXBsZW1lbnRlZDoKKwkoMSkgUkVOQU1FX05PUkVQTEFDRTogdGhpcyBmbGFnIGluZGljYXRlcyB0aGF0IGlmIHRoZSB0YXJnZXQKKwlvZiB0aGUgcmVuYW1lIGV4aXN0cyB0aGUgcmVuYW1lIHNob3VsZCBmYWlsIHdpdGggLUVFWElTVAorCWluc3RlYWQgb2YgcmVwbGFjaW5nIHRoZSB0YXJnZXQuICBUaGUgVkZTIGFscmVhZHkgY2hlY2tzIGZvcgorCWV4aXN0ZW5jZSwgc28gZm9yIGxvY2FsIGZpbGVzeXN0ZW1zIHRoZSBSRU5BTUVfTk9SRVBMQUNFCisJaW1wbGVtZW50YXRpb24gaXMgZXF1aXZhbGVudCB0byBwbGFpbiByZW5hbWUuCisJKDIpIFJFTkFNRV9FWENIQU5HRTogZXhjaGFuZ2Ugc291cmNlIGFuZCB0YXJnZXQuICBCb3RoIG11c3QKKwlleGlzdDsgdGhpcyBpcyBjaGVja2VkIGJ5IHRoZSBWRlMuICBVbmxpa2UgcGxhaW4gcmVuYW1lLAorCXNvdXJjZSBhbmQgdGFyZ2V0IG1heSBiZSBvZiBkaWZmZXJlbnQgdHlwZS4KKworICByZWFkbGluazogY2FsbGVkIGJ5IHRoZSByZWFkbGluaygyKSBzeXN0ZW0gY2FsbC4gT25seSByZXF1aXJlZCBpZgorCXlvdSB3YW50IHRvIHN1cHBvcnQgcmVhZGluZyBzeW1ib2xpYyBsaW5rcworCisgIGZvbGxvd19saW5rOiBjYWxsZWQgYnkgdGhlIFZGUyB0byBmb2xsb3cgYSBzeW1ib2xpYyBsaW5rIHRvIHRoZQorCWlub2RlIGl0IHBvaW50cyB0by4gIE9ubHkgcmVxdWlyZWQgaWYgeW91IHdhbnQgdG8gc3VwcG9ydAorCXN5bWJvbGljIGxpbmtzLiAgVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgc3ltbGluayBib2R5CisJdG8gdHJhdmVyc2UgKGFuZCBwb3NzaWJseSByZXNldHMgdGhlIGN1cnJlbnQgcG9zaXRpb24gd2l0aAorCW5kX2p1bXBfbGluaygpKS4gIElmIHRoZSBib2R5IHdvbid0IGdvIGF3YXkgdW50aWwgdGhlIGlub2RlCisJaXMgZ29uZSwgbm90aGluZyBlbHNlIGlzIG5lZWRlZDsgaWYgaXQgbmVlZHMgdG8gYmUgb3RoZXJ3aXNlCisJcGlubmVkLCB0aGUgZGF0YSBuZWVkZWQgdG8gcmVsZWFzZSB3aGF0ZXZlciB3ZSdkIGdyYWJiZWQKKwlpcyB0byBiZSBzdG9yZWQgaW4gdm9pZCAqIHZhcmlhYmxlIHBhc3NlZCBieSBhZGRyZXNzIHRvCisJZm9sbG93X2xpbmsoKSBpbnN0YW5jZS4KKworICBwdXRfbGluazogY2FsbGVkIGJ5IHRoZSBWRlMgdG8gcmVsZWFzZSByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5CisJZm9sbG93X2xpbmsoKS4gIFRoZSBjb29raWUgc3RvcmVkIGJ5IGZvbGxvd19saW5rKCkgaXMgcGFzc2VkCisJdG8gdGhpcyBtZXRob2QgYXMgdGhlIGxhc3QgcGFyYW1ldGVyOyBvbmx5IGNhbGxlZCB3aGVuCisJY29va2llIGlzbid0IE5VTEwuCisKKyAgcGVybWlzc2lvbjogY2FsbGVkIGJ5IHRoZSBWRlMgdG8gY2hlY2sgZm9yIGFjY2VzcyByaWdodHMgb24gYSBQT1NJWC1saWtlCisgIAlmaWxlc3lzdGVtLgorCisJTWF5IGJlIGNhbGxlZCBpbiByY3Utd2FsayBtb2RlIChtYXNrICYgTUFZX05PVF9CTE9DSykuIElmIGluIHJjdS13YWxrCisgICAgICAgIG1vZGUsIHRoZSBmaWxlc3lzdGVtIG11c3QgY2hlY2sgdGhlIHBlcm1pc3Npb24gd2l0aG91dCBibG9ja2luZyBvcgorCXN0b3JpbmcgdG8gdGhlIGlub2RlLgorCisJSWYgYSBzaXR1YXRpb24gaXMgZW5jb3VudGVyZWQgdGhhdCByY3Utd2FsayBjYW5ub3QgaGFuZGxlLCByZXR1cm4KKwktRUNISUxEIGFuZCBpdCB3aWxsIGJlIGNhbGxlZCBhZ2FpbiBpbiByZWYtd2FsayBtb2RlLgorCisgIHNldGF0dHI6IGNhbGxlZCBieSB0aGUgVkZTIHRvIHNldCBhdHRyaWJ1dGVzIGZvciBhIGZpbGUuIFRoaXMgbWV0aG9kCisgIAlpcyBjYWxsZWQgYnkgY2htb2QoMikgYW5kIHJlbGF0ZWQgc3lzdGVtIGNhbGxzLgorCisgIGdldGF0dHI6IGNhbGxlZCBieSB0aGUgVkZTIHRvIGdldCBhdHRyaWJ1dGVzIG9mIGEgZmlsZS4gVGhpcyBtZXRob2QKKyAgCWlzIGNhbGxlZCBieSBzdGF0KDIpIGFuZCByZWxhdGVkIHN5c3RlbSBjYWxscy4KKworICBzZXR4YXR0cjogY2FsbGVkIGJ5IHRoZSBWRlMgdG8gc2V0IGFuIGV4dGVuZGVkIGF0dHJpYnV0ZSBmb3IgYSBmaWxlLgorICAJRXh0ZW5kZWQgYXR0cmlidXRlIGlzIGEgbmFtZTp2YWx1ZSBwYWlyIGFzc29jaWF0ZWQgd2l0aCBhbgorICAJaW5vZGUuIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSBzZXR4YXR0cigyKSBzeXN0ZW0gY2FsbC4KKworICBnZXR4YXR0cjogY2FsbGVkIGJ5IHRoZSBWRlMgdG8gcmV0cmlldmUgdGhlIHZhbHVlIG9mIGFuIGV4dGVuZGVkCisgIAlhdHRyaWJ1dGUgbmFtZS4gVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IGdldHhhdHRyKDIpIGZ1bmN0aW9uCisgIAljYWxsLgorCisgIGxpc3R4YXR0cjogY2FsbGVkIGJ5IHRoZSBWRlMgdG8gbGlzdCBhbGwgZXh0ZW5kZWQgYXR0cmlidXRlcyBmb3IgYQorICAJZ2l2ZW4gZmlsZS4gVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IGxpc3R4YXR0cigyKSBzeXN0ZW0gY2FsbC4KKworICByZW1vdmV4YXR0cjogY2FsbGVkIGJ5IHRoZSBWRlMgdG8gcmVtb3ZlIGFuIGV4dGVuZGVkIGF0dHJpYnV0ZSBmcm9tCisgIAlhIGZpbGUuIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSByZW1vdmV4YXR0cigyKSBzeXN0ZW0gY2FsbC4KKworICB1cGRhdGVfdGltZTogY2FsbGVkIGJ5IHRoZSBWRlMgdG8gdXBkYXRlIGEgc3BlY2lmaWMgdGltZSBvciB0aGUgaV92ZXJzaW9uIG9mCisgIAlhbiBpbm9kZS4gIElmIHRoaXMgaXMgbm90IGRlZmluZWQgdGhlIFZGUyB3aWxsIHVwZGF0ZSB0aGUgaW5vZGUgaXRzZWxmCisgIAlhbmQgY2FsbCBtYXJrX2lub2RlX2RpcnR5X3N5bmMuCisKKyAgYXRvbWljX29wZW46IGNhbGxlZCBvbiB0aGUgbGFzdCBjb21wb25lbnQgb2YgYW4gb3Blbi4gIFVzaW5nIHRoaXMgb3B0aW9uYWwKKyAgCW1ldGhvZCB0aGUgZmlsZXN5c3RlbSBjYW4gbG9vayB1cCwgcG9zc2libHkgY3JlYXRlIGFuZCBvcGVuIHRoZSBmaWxlIGluCisgIAlvbmUgYXRvbWljIG9wZXJhdGlvbi4gIElmIGl0IGNhbm5vdCBwZXJmb3JtIHRoaXMgKGUuZy4gdGhlIGZpbGUgdHlwZQorICAJdHVybmVkIG91dCB0byBiZSB3cm9uZykgaXQgbWF5IHNpZ25hbCB0aGlzIGJ5IHJldHVybmluZyAxIGluc3RlYWQgb2YKKwl1c3VhbCAwIG9yIC12ZSAuICBUaGlzIG1ldGhvZCBpcyBvbmx5IGNhbGxlZCBpZiB0aGUgbGFzdCBjb21wb25lbnQgaXMKKwluZWdhdGl2ZSBvciBuZWVkcyBsb29rdXAuICBDYWNoZWQgcG9zaXRpdmUgZGVudHJpZXMgYXJlIHN0aWxsIGhhbmRsZWQgYnkKKwlmX29wLT5vcGVuKCkuICBJZiB0aGUgZmlsZSB3YXMgY3JlYXRlZCwgdGhlIEZJTEVfQ1JFQVRFRCBmbGFnIHNob3VsZCBiZQorCXNldCBpbiAib3BlbmVkIi4gIEluIGNhc2Ugb2YgT19FWENMIHRoZSBtZXRob2QgbXVzdCBvbmx5IHN1Y2NlZWQgaWYgdGhlCisJZmlsZSBkaWRuJ3QgZXhpc3QgYW5kIGhlbmNlIEZJTEVfQ1JFQVRFRCBzaGFsbCBhbHdheXMgYmUgc2V0IG9uIHN1Y2Nlc3MuCisKKyAgdG1wZmlsZTogY2FsbGVkIGluIHRoZSBlbmQgb2YgT19UTVBGSUxFIG9wZW4oKS4gIE9wdGlvbmFsLCBlcXVpdmFsZW50IHRvCisJYXRvbWljYWxseSBjcmVhdGluZywgb3BlbmluZyBhbmQgdW5saW5raW5nIGEgZmlsZSBpbiBnaXZlbiBkaXJlY3RvcnkuCisKK1RoZSBBZGRyZXNzIFNwYWNlIE9iamVjdAorPT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBhZGRyZXNzIHNwYWNlIG9iamVjdCBpcyB1c2VkIHRvIGdyb3VwIGFuZCBtYW5hZ2UgcGFnZXMgaW4gdGhlIHBhZ2UKK2NhY2hlLiAgSXQgY2FuIGJlIHVzZWQgdG8ga2VlcCB0cmFjayBvZiB0aGUgcGFnZXMgaW4gYSBmaWxlIChvcgorYW55dGhpbmcgZWxzZSkgYW5kIGFsc28gdHJhY2sgdGhlIG1hcHBpbmcgb2Ygc2VjdGlvbnMgb2YgdGhlIGZpbGUgaW50bworcHJvY2VzcyBhZGRyZXNzIHNwYWNlcy4KKworVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGRpc3RpbmN0IHlldCByZWxhdGVkIHNlcnZpY2VzIHRoYXQgYW4KK2FkZHJlc3Mtc3BhY2UgY2FuIHByb3ZpZGUuICBUaGVzZSBpbmNsdWRlIGNvbW11bmljYXRpbmcgbWVtb3J5CitwcmVzc3VyZSwgcGFnZSBsb29rdXAgYnkgYWRkcmVzcywgYW5kIGtlZXBpbmcgdHJhY2sgb2YgcGFnZXMgdGFnZ2VkIGFzCitEaXJ0eSBvciBXcml0ZWJhY2suCisKK1RoZSBmaXJzdCBjYW4gYmUgdXNlZCBpbmRlcGVuZGVudGx5IHRvIHRoZSBvdGhlcnMuICBUaGUgVk0gY2FuIHRyeSB0bworZWl0aGVyIHdyaXRlIGRpcnR5IHBhZ2VzIGluIG9yZGVyIHRvIGNsZWFuIHRoZW0sIG9yIHJlbGVhc2UgY2xlYW4KK3BhZ2VzIGluIG9yZGVyIHRvIHJldXNlIHRoZW0uICBUbyBkbyB0aGlzIGl0IGNhbiBjYWxsIHRoZSAtPndyaXRlcGFnZQorbWV0aG9kIG9uIGRpcnR5IHBhZ2VzLCBhbmQgLT5yZWxlYXNlcGFnZSBvbiBjbGVhbiBwYWdlcyB3aXRoCitQYWdlUHJpdmF0ZSBzZXQuIENsZWFuIHBhZ2VzIHdpdGhvdXQgUGFnZVByaXZhdGUgYW5kIHdpdGggbm8gZXh0ZXJuYWwKK3JlZmVyZW5jZXMgd2lsbCBiZSByZWxlYXNlZCB3aXRob3V0IG5vdGljZSBiZWluZyBnaXZlbiB0byB0aGUKK2FkZHJlc3Nfc3BhY2UuCisKK1RvIGFjaGlldmUgdGhpcyBmdW5jdGlvbmFsaXR5LCBwYWdlcyBuZWVkIHRvIGJlIHBsYWNlZCBvbiBhbiBMUlUgd2l0aAorbHJ1X2NhY2hlX2FkZCBhbmQgbWFya19wYWdlX2FjdGl2ZSBuZWVkcyB0byBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlCitwYWdlIGlzIHVzZWQuCisKK1BhZ2VzIGFyZSBub3JtYWxseSBrZXB0IGluIGEgcmFkaXggdHJlZSBpbmRleCBieSAtPmluZGV4LiBUaGlzIHRyZWUKK21haW50YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgUEdfRGlydHkgYW5kIFBHX1dyaXRlYmFjayBzdGF0dXMgb2YKK2VhY2ggcGFnZSwgc28gdGhhdCBwYWdlcyB3aXRoIGVpdGhlciBvZiB0aGVzZSBmbGFncyBjYW4gYmUgZm91bmQKK3F1aWNrbHkuCisKK1RoZSBEaXJ0eSB0YWcgaXMgcHJpbWFyaWx5IHVzZWQgYnkgbXBhZ2Vfd3JpdGVwYWdlcyAtIHRoZSBkZWZhdWx0CistPndyaXRlcGFnZXMgbWV0aG9kLiAgSXQgdXNlcyB0aGUgdGFnIHRvIGZpbmQgZGlydHkgcGFnZXMgdG8gY2FsbAorLT53cml0ZXBhZ2Ugb24uICBJZiBtcGFnZV93cml0ZXBhZ2VzIGlzIG5vdCB1c2VkIChpLmUuIHRoZSBhZGRyZXNzCitwcm92aWRlcyBpdHMgb3duIC0+d3JpdGVwYWdlcykgLCB0aGUgUEFHRUNBQ0hFX1RBR19ESVJUWSB0YWcgaXMKK2FsbW9zdCB1bnVzZWQuICB3cml0ZV9pbm9kZV9ub3cgYW5kIHN5bmNfaW5vZGUgZG8gdXNlIGl0ICh0aHJvdWdoCitfX3N5bmNfc2luZ2xlX2lub2RlKSB0byBjaGVjayBpZiAtPndyaXRlcGFnZXMgaGFzIGJlZW4gc3VjY2Vzc2Z1bCBpbgord3JpdGluZyBvdXQgdGhlIHdob2xlIGFkZHJlc3Nfc3BhY2UuCisKK1RoZSBXcml0ZWJhY2sgdGFnIGlzIHVzZWQgYnkgZmlsZW1hcCp3YWl0KiBhbmQgc3luY19wYWdlKiBmdW5jdGlvbnMsCit2aWEgZmlsZW1hcF9mZGF0YXdhaXRfcmFuZ2UsIHRvIHdhaXQgZm9yIGFsbCB3cml0ZWJhY2sgdG8KK2NvbXBsZXRlLiAgV2hpbGUgd2FpdGluZyAtPnN5bmNfcGFnZSAoaWYgZGVmaW5lZCkgd2lsbCBiZSBjYWxsZWQgb24KK2VhY2ggcGFnZSB0aGF0IGlzIGZvdW5kIHRvIHJlcXVpcmUgd3JpdGViYWNrLgorCitBbiBhZGRyZXNzX3NwYWNlIGhhbmRsZXIgbWF5IGF0dGFjaCBleHRyYSBpbmZvcm1hdGlvbiB0byBhIHBhZ2UsCit0eXBpY2FsbHkgdXNpbmcgdGhlICdwcml2YXRlJyBmaWVsZCBpbiB0aGUgJ3N0cnVjdCBwYWdlJy4gIElmIHN1Y2gKK2luZm9ybWF0aW9uIGlzIGF0dGFjaGVkLCB0aGUgUEdfUHJpdmF0ZSBmbGFnIHNob3VsZCBiZSBzZXQuICBUaGlzIHdpbGwKK2NhdXNlIHZhcmlvdXMgVk0gcm91dGluZXMgdG8gbWFrZSBleHRyYSBjYWxscyBpbnRvIHRoZSBhZGRyZXNzX3NwYWNlCitoYW5kbGVyIHRvIGRlYWwgd2l0aCB0aGF0IGRhdGEuCisKK0FuIGFkZHJlc3Mgc3BhY2UgYWN0cyBhcyBhbiBpbnRlcm1lZGlhdGUgYmV0d2VlbiBzdG9yYWdlIGFuZAorYXBwbGljYXRpb24uICBEYXRhIGlzIHJlYWQgaW50byB0aGUgYWRkcmVzcyBzcGFjZSBhIHdob2xlIHBhZ2UgYXQgYQordGltZSwgYW5kIHByb3ZpZGVkIHRvIHRoZSBhcHBsaWNhdGlvbiBlaXRoZXIgYnkgY29weWluZyBvZiB0aGUgcGFnZSwKK29yIGJ5IG1lbW9yeS1tYXBwaW5nIHRoZSBwYWdlLgorRGF0YSBpcyB3cml0dGVuIGludG8gdGhlIGFkZHJlc3Mgc3BhY2UgYnkgdGhlIGFwcGxpY2F0aW9uLCBhbmQgdGhlbgord3JpdHRlbi1iYWNrIHRvIHN0b3JhZ2UgdHlwaWNhbGx5IGluIHdob2xlIHBhZ2VzLCBob3dldmVyIHRoZQorYWRkcmVzc19zcGFjZSBoYXMgZmluZXIgY29udHJvbCBvZiB3cml0ZSBzaXplcy4KKworVGhlIHJlYWQgcHJvY2VzcyBlc3NlbnRpYWxseSBvbmx5IHJlcXVpcmVzICdyZWFkcGFnZScuICBUaGUgd3JpdGUKK3Byb2Nlc3MgaXMgbW9yZSBjb21wbGljYXRlZCBhbmQgdXNlcyB3cml0ZV9iZWdpbi93cml0ZV9lbmQgb3IKK3NldF9wYWdlX2RpcnR5IHRvIHdyaXRlIGRhdGEgaW50byB0aGUgYWRkcmVzc19zcGFjZSwgYW5kIHdyaXRlcGFnZSwKK3N5bmNfcGFnZSwgYW5kIHdyaXRlcGFnZXMgdG8gd3JpdGViYWNrIGRhdGEgdG8gc3RvcmFnZS4KKworQWRkaW5nIGFuZCByZW1vdmluZyBwYWdlcyB0by9mcm9tIGFuIGFkZHJlc3Nfc3BhY2UgaXMgcHJvdGVjdGVkIGJ5IHRoZQoraW5vZGUncyBpX211dGV4LgorCitXaGVuIGRhdGEgaXMgd3JpdHRlbiB0byBhIHBhZ2UsIHRoZSBQR19EaXJ0eSBmbGFnIHNob3VsZCBiZSBzZXQuICBJdAordHlwaWNhbGx5IHJlbWFpbnMgc2V0IHVudGlsIHdyaXRlcGFnZSBhc2tzIGZvciBpdCB0byBiZSB3cml0dGVuLiAgVGhpcworc2hvdWxkIGNsZWFyIFBHX0RpcnR5IGFuZCBzZXQgUEdfV3JpdGViYWNrLiAgSXQgY2FuIGJlIGFjdHVhbGx5Cit3cml0dGVuIGF0IGFueSBwb2ludCBhZnRlciBQR19EaXJ0eSBpcyBjbGVhci4gIE9uY2UgaXQgaXMga25vd24gdG8gYmUKK3NhZmUsIFBHX1dyaXRlYmFjayBpcyBjbGVhcmVkLgorCitXcml0ZWJhY2sgbWFrZXMgdXNlIG9mIGEgd3JpdGViYWNrX2NvbnRyb2wgc3RydWN0dXJlLi4uCisKK3N0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBkZXNjcmliZXMgaG93IHRoZSBWRlMgY2FuIG1hbmlwdWxhdGUgbWFwcGluZyBvZiBhIGZpbGUgdG8gcGFnZSBjYWNoZSBpbgoreW91ciBmaWxlc3lzdGVtLiBUaGUgZm9sbG93aW5nIG1lbWJlcnMgYXJlIGRlZmluZWQ6CisKK3N0cnVjdCBhZGRyZXNzX3NwYWNlX29wZXJhdGlvbnMgeworCWludCAoKndyaXRlcGFnZSkoc3RydWN0IHBhZ2UgKnBhZ2UsIHN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCAqd2JjKTsKKwlpbnQgKCpyZWFkcGFnZSkoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBhZ2UgKik7CisJaW50ICgqd3JpdGVwYWdlcykoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKiwgc3RydWN0IHdyaXRlYmFja19jb250cm9sICopOworCWludCAoKnNldF9wYWdlX2RpcnR5KShzdHJ1Y3QgcGFnZSAqcGFnZSk7CisJaW50ICgqcmVhZHBhZ2VzKShzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCisJCQlzdHJ1Y3QgbGlzdF9oZWFkICpwYWdlcywgdW5zaWduZWQgbnJfcGFnZXMpOworCWludCAoKndyaXRlX2JlZ2luKShzdHJ1Y3QgZmlsZSAqLCBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywKKwkJCQlsb2ZmX3QgcG9zLCB1bnNpZ25lZCBsZW4sIHVuc2lnbmVkIGZsYWdzLAorCQkJCXN0cnVjdCBwYWdlICoqcGFnZXAsIHZvaWQgKipmc2RhdGEpOworCWludCAoKndyaXRlX2VuZCkoc3RydWN0IGZpbGUgKiwgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsCisJCQkJbG9mZl90IHBvcywgdW5zaWduZWQgbGVuLCB1bnNpZ25lZCBjb3BpZWQsCisJCQkJc3RydWN0IHBhZ2UgKnBhZ2UsIHZvaWQgKmZzZGF0YSk7CisJc2VjdG9yX3QgKCpibWFwKShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBzZWN0b3JfdCk7CisJdm9pZCAoKmludmFsaWRhdGVwYWdlKSAoc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBpbnQpOworCWludCAoKnJlbGVhc2VwYWdlKSAoc3RydWN0IHBhZ2UgKiwgaW50KTsKKwl2b2lkICgqZnJlZXBhZ2UpKHN0cnVjdCBwYWdlICopOworCXNzaXplX3QgKCpkaXJlY3RfSU8pKHN0cnVjdCBraW9jYiAqLCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIsIGxvZmZfdCBvZmZzZXQpOworCS8qIG1pZ3JhdGUgdGhlIGNvbnRlbnRzIG9mIGEgcGFnZSB0byB0aGUgc3BlY2lmaWVkIHRhcmdldCAqLworCWludCAoKm1pZ3JhdGVwYWdlKSAoc3RydWN0IHBhZ2UgKiwgc3RydWN0IHBhZ2UgKik7CisJaW50ICgqbGF1bmRlcl9wYWdlKSAoc3RydWN0IHBhZ2UgKik7CisJaW50ICgqaXNfcGFydGlhbGx5X3VwdG9kYXRlKSAoc3RydWN0IHBhZ2UgKiwgdW5zaWduZWQgbG9uZywKKwkJCQkJdW5zaWduZWQgbG9uZyk7CisJdm9pZCAoKmlzX2RpcnR5X3dyaXRlYmFjaykgKHN0cnVjdCBwYWdlICosIGJvb2wgKiwgYm9vbCAqKTsKKwlpbnQgKCplcnJvcl9yZW1vdmVfcGFnZSkgKHN0cnVjdCBtYXBwaW5nICptYXBwaW5nLCBzdHJ1Y3QgcGFnZSAqcGFnZSk7CisJaW50ICgqc3dhcF9hY3RpdmF0ZSkoc3RydWN0IGZpbGUgKik7CisJaW50ICgqc3dhcF9kZWFjdGl2YXRlKShzdHJ1Y3QgZmlsZSAqKTsKK307CisKKyAgd3JpdGVwYWdlOiBjYWxsZWQgYnkgdGhlIFZNIHRvIHdyaXRlIGEgZGlydHkgcGFnZSB0byBiYWNraW5nIHN0b3JlLgorICAgICAgVGhpcyBtYXkgaGFwcGVuIGZvciBkYXRhIGludGVncml0eSByZWFzb25zIChpLmUuICdzeW5jJyksIG9yCisgICAgICB0byBmcmVlIHVwIG1lbW9yeSAoZmx1c2gpLiAgVGhlIGRpZmZlcmVuY2UgY2FuIGJlIHNlZW4gaW4KKyAgICAgIHdiYy0+c3luY19tb2RlLgorICAgICAgVGhlIFBHX0RpcnR5IGZsYWcgaGFzIGJlZW4gY2xlYXJlZCBhbmQgUGFnZUxvY2tlZCBpcyB0cnVlLgorICAgICAgd3JpdGVwYWdlIHNob3VsZCBzdGFydCB3cml0ZW91dCwgc2hvdWxkIHNldCBQR19Xcml0ZWJhY2ssCisgICAgICBhbmQgc2hvdWxkIG1ha2Ugc3VyZSB0aGUgcGFnZSBpcyB1bmxvY2tlZCwgZWl0aGVyIHN5bmNocm9ub3VzbHkKKyAgICAgIG9yIGFzeW5jaHJvbm91c2x5IHdoZW4gdGhlIHdyaXRlIG9wZXJhdGlvbiBjb21wbGV0ZXMuCisKKyAgICAgIElmIHdiYy0+c3luY19tb2RlIGlzIFdCX1NZTkNfTk9ORSwgLT53cml0ZXBhZ2UgZG9lc24ndCBoYXZlIHRvCisgICAgICB0cnkgdG9vIGhhcmQgaWYgdGhlcmUgYXJlIHByb2JsZW1zLCBhbmQgbWF5IGNob29zZSB0byB3cml0ZSBvdXQKKyAgICAgIG90aGVyIHBhZ2VzIGZyb20gdGhlIG1hcHBpbmcgaWYgdGhhdCBpcyBlYXNpZXIgKGUuZy4gZHVlIHRvCisgICAgICBpbnRlcm5hbCBkZXBlbmRlbmNpZXMpLiAgSWYgaXQgY2hvb3NlcyBub3QgdG8gc3RhcnQgd3JpdGVvdXQsIGl0CisgICAgICBzaG91bGQgcmV0dXJuIEFPUF9XUklURVBBR0VfQUNUSVZBVEUgc28gdGhhdCB0aGUgVk0gd2lsbCBub3Qga2VlcAorICAgICAgY2FsbGluZyAtPndyaXRlcGFnZSBvbiB0aGF0IHBhZ2UuCisKKyAgICAgIFNlZSB0aGUgZmlsZSAiTG9ja2luZyIgZm9yIG1vcmUgZGV0YWlscy4KKworICByZWFkcGFnZTogY2FsbGVkIGJ5IHRoZSBWTSB0byByZWFkIGEgcGFnZSBmcm9tIGJhY2tpbmcgc3RvcmUuCisgICAgICAgVGhlIHBhZ2Ugd2lsbCBiZSBMb2NrZWQgd2hlbiByZWFkcGFnZSBpcyBjYWxsZWQsIGFuZCBzaG91bGQgYmUKKyAgICAgICB1bmxvY2tlZCBhbmQgbWFya2VkIHVwdG9kYXRlIG9uY2UgdGhlIHJlYWQgY29tcGxldGVzLgorICAgICAgIElmIC0+cmVhZHBhZ2UgZGlzY292ZXJzIHRoYXQgaXQgbmVlZHMgdG8gdW5sb2NrIHRoZSBwYWdlIGZvcgorICAgICAgIHNvbWUgcmVhc29uLCBpdCBjYW4gZG8gc28sIGFuZCB0aGVuIHJldHVybiBBT1BfVFJVTkNBVEVEX1BBR0UuCisgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgcGFnZSB3aWxsIGJlIHJlbG9jYXRlZCwgcmVsb2NrZWQgYW5kIGlmCisgICAgICAgdGhhdCBhbGwgc3VjY2VlZHMsIC0+cmVhZHBhZ2Ugd2lsbCBiZSBjYWxsZWQgYWdhaW4uCisKKyAgd3JpdGVwYWdlczogY2FsbGVkIGJ5IHRoZSBWTSB0byB3cml0ZSBvdXQgcGFnZXMgYXNzb2NpYXRlZCB3aXRoIHRoZQorICAJYWRkcmVzc19zcGFjZSBvYmplY3QuICBJZiB3YmMtPnN5bmNfbW9kZSBpcyBXQkNfU1lOQ19BTEwsIHRoZW4KKyAgCXRoZSB3cml0ZWJhY2tfY29udHJvbCB3aWxsIHNwZWNpZnkgYSByYW5nZSBvZiBwYWdlcyB0aGF0IG11c3QgYmUKKyAgCXdyaXR0ZW4gb3V0LiAgSWYgaXQgaXMgV0JDX1NZTkNfTk9ORSwgdGhlbiBhIG5yX3RvX3dyaXRlIGlzIGdpdmVuCisJYW5kIHRoYXQgbWFueSBwYWdlcyBzaG91bGQgYmUgd3JpdHRlbiBpZiBwb3NzaWJsZS4KKwlJZiBubyAtPndyaXRlcGFnZXMgaXMgZ2l2ZW4sIHRoZW4gbXBhZ2Vfd3JpdGVwYWdlcyBpcyB1c2VkCisgIAlpbnN0ZWFkLiAgVGhpcyB3aWxsIGNob29zZSBwYWdlcyBmcm9tIHRoZSBhZGRyZXNzIHNwYWNlIHRoYXQgYXJlCisgIAl0YWdnZWQgYXMgRElSVFkgYW5kIHdpbGwgcGFzcyB0aGVtIHRvIC0+d3JpdGVwYWdlLgorCisgIHNldF9wYWdlX2RpcnR5OiBjYWxsZWQgYnkgdGhlIFZNIHRvIHNldCBhIHBhZ2UgZGlydHkuCisgICAgICAgIFRoaXMgaXMgcGFydGljdWxhcmx5IG5lZWRlZCBpZiBhbiBhZGRyZXNzIHNwYWNlIGF0dGFjaGVzCisgICAgICAgIHByaXZhdGUgZGF0YSB0byBhIHBhZ2UsIGFuZCB0aGF0IGRhdGEgbmVlZHMgdG8gYmUgdXBkYXRlZCB3aGVuCisgICAgICAgIGEgcGFnZSBpcyBkaXJ0aWVkLiAgVGhpcyBpcyBjYWxsZWQsIGZvciBleGFtcGxlLCB3aGVuIGEgbWVtb3J5CisJbWFwcGVkIHBhZ2UgZ2V0cyBtb2RpZmllZC4KKwlJZiBkZWZpbmVkLCBpdCBzaG91bGQgc2V0IHRoZSBQYWdlRGlydHkgZmxhZywgYW5kIHRoZQorICAgICAgICBQQUdFQ0FDSEVfVEFHX0RJUlRZIHRhZyBpbiB0aGUgcmFkaXggdHJlZS4KKworICByZWFkcGFnZXM6IGNhbGxlZCBieSB0aGUgVk0gdG8gcmVhZCBwYWdlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGFkZHJlc3Nfc3BhY2UKKyAgCW9iamVjdC4gVGhpcyBpcyBlc3NlbnRpYWxseSBqdXN0IGEgdmVjdG9yIHZlcnNpb24gb2YKKyAgCXJlYWRwYWdlLiAgSW5zdGVhZCBvZiBqdXN0IG9uZSBwYWdlLCBzZXZlcmFsIHBhZ2VzIGFyZQorICAJcmVxdWVzdGVkLgorCXJlYWRwYWdlcyBpcyBvbmx5IHVzZWQgZm9yIHJlYWQtYWhlYWQsIHNvIHJlYWQgZXJyb3JzIGFyZQorICAJaWdub3JlZC4gIElmIGFueXRoaW5nIGdvZXMgd3JvbmcsIGZlZWwgZnJlZSB0byBnaXZlIHVwLgorCisgIHdyaXRlX2JlZ2luOgorCUNhbGxlZCBieSB0aGUgZ2VuZXJpYyBidWZmZXJlZCB3cml0ZSBjb2RlIHRvIGFzayB0aGUgZmlsZXN5c3RlbSB0bworCXByZXBhcmUgdG8gd3JpdGUgbGVuIGJ5dGVzIGF0IHRoZSBnaXZlbiBvZmZzZXQgaW4gdGhlIGZpbGUuIFRoZQorCWFkZHJlc3Nfc3BhY2Ugc2hvdWxkIGNoZWNrIHRoYXQgdGhlIHdyaXRlIHdpbGwgYmUgYWJsZSB0byBjb21wbGV0ZSwKKwlieSBhbGxvY2F0aW5nIHNwYWNlIGlmIG5lY2Vzc2FyeSBhbmQgZG9pbmcgYW55IG90aGVyIGludGVybmFsCisJaG91c2VrZWVwaW5nLiAgSWYgdGhlIHdyaXRlIHdpbGwgdXBkYXRlIHBhcnRzIG9mIGFueSBiYXNpYy1ibG9ja3Mgb24KKwlzdG9yYWdlLCB0aGVuIHRob3NlIGJsb2NrcyBzaG91bGQgYmUgcHJlLXJlYWQgKGlmIHRoZXkgaGF2ZW4ndCBiZWVuCisJcmVhZCBhbHJlYWR5KSBzbyB0aGF0IHRoZSB1cGRhdGVkIGJsb2NrcyBjYW4gYmUgd3JpdHRlbiBvdXQgcHJvcGVybHkuCisKKyAgICAgICAgVGhlIGZpbGVzeXN0ZW0gbXVzdCByZXR1cm4gdGhlIGxvY2tlZCBwYWdlY2FjaGUgcGFnZSBmb3IgdGhlIHNwZWNpZmllZAorCW9mZnNldCwgaW4gKnBhZ2VwLCBmb3IgdGhlIGNhbGxlciB0byB3cml0ZSBpbnRvLgorCisJSXQgbXVzdCBiZSBhYmxlIHRvIGNvcGUgd2l0aCBzaG9ydCB3cml0ZXMgKHdoZXJlIHRoZSBsZW5ndGggcGFzc2VkIHRvCisJd3JpdGVfYmVnaW4gaXMgZ3JlYXRlciB0aGFuIHRoZSBudW1iZXIgb2YgYnl0ZXMgY29waWVkIGludG8gdGhlIHBhZ2UpLgorCisJZmxhZ3MgaXMgYSBmaWVsZCBmb3IgQU9QX0ZMQUdfeHh4IGZsYWdzLCBkZXNjcmliZWQgaW4KKwlpbmNsdWRlL2xpbnV4L2ZzLmguCisKKyAgICAgICAgQSB2b2lkICogbWF5IGJlIHJldHVybmVkIGluIGZzZGF0YSwgd2hpY2ggdGhlbiBnZXRzIHBhc3NlZCBpbnRvCisgICAgICAgIHdyaXRlX2VuZC4KKworICAgICAgICBSZXR1cm5zIDAgb24gc3VjY2VzczsgPCAwIG9uIGZhaWx1cmUgKHdoaWNoIGlzIHRoZSBlcnJvciBjb2RlKSwgaW4KKwl3aGljaCBjYXNlIHdyaXRlX2VuZCBpcyBub3QgY2FsbGVkLgorCisgIHdyaXRlX2VuZDogQWZ0ZXIgYSBzdWNjZXNzZnVsIHdyaXRlX2JlZ2luLCBhbmQgZGF0YSBjb3B5LCB3cml0ZV9lbmQgbXVzdAorICAgICAgICBiZSBjYWxsZWQuIGxlbiBpcyB0aGUgb3JpZ2luYWwgbGVuIHBhc3NlZCB0byB3cml0ZV9iZWdpbiwgYW5kIGNvcGllZAorICAgICAgICBpcyB0aGUgYW1vdW50IHRoYXQgd2FzIGFibGUgdG8gYmUgY29waWVkIChjb3BpZWQgPT0gbGVuIGlzIGFsd2F5cyB0cnVlCisJaWYgd3JpdGVfYmVnaW4gd2FzIGNhbGxlZCB3aXRoIHRoZSBBT1BfRkxBR19VTklOVEVSUlVQVElCTEUgZmxhZykuCisKKyAgICAgICAgVGhlIGZpbGVzeXN0ZW0gbXVzdCB0YWtlIGNhcmUgb2YgdW5sb2NraW5nIHRoZSBwYWdlIGFuZCByZWxlYXNpbmcgaXQKKyAgICAgICAgcmVmY291bnQsIGFuZCB1cGRhdGluZyBpX3NpemUuCisKKyAgICAgICAgUmV0dXJucyA8IDAgb24gZmFpbHVyZSwgb3RoZXJ3aXNlIHRoZSBudW1iZXIgb2YgYnl0ZXMgKDw9ICdjb3BpZWQnKQorICAgICAgICB0aGF0IHdlcmUgYWJsZSB0byBiZSBjb3BpZWQgaW50byBwYWdlY2FjaGUuCisKKyAgYm1hcDogY2FsbGVkIGJ5IHRoZSBWRlMgdG8gbWFwIGEgbG9naWNhbCBibG9jayBvZmZzZXQgd2l0aGluIG9iamVjdCB0bworICAJcGh5c2ljYWwgYmxvY2sgbnVtYmVyLiBUaGlzIG1ldGhvZCBpcyB1c2VkIGJ5IHRoZSBGSUJNQVAKKyAgCWlvY3RsIGFuZCBmb3Igd29ya2luZyB3aXRoIHN3YXAtZmlsZXMuICBUbyBiZSBhYmxlIHRvIHN3YXAgdG8KKyAgCWEgZmlsZSwgdGhlIGZpbGUgbXVzdCBoYXZlIGEgc3RhYmxlIG1hcHBpbmcgdG8gYSBibG9jaworICAJZGV2aWNlLiAgVGhlIHN3YXAgc3lzdGVtIGRvZXMgbm90IGdvIHRocm91Z2ggdGhlIGZpbGVzeXN0ZW0KKyAgCWJ1dCBpbnN0ZWFkIHVzZXMgYm1hcCB0byBmaW5kIG91dCB3aGVyZSB0aGUgYmxvY2tzIGluIHRoZSBmaWxlCisgIAlhcmUgYW5kIHVzZXMgdGhvc2UgYWRkcmVzc2VzIGRpcmVjdGx5LgorCisgIGRlbnRyeV9vcGVuOiAqV0FSTklORzogcHJvYmFibHkgZ29pbmcgYXdheSBzb29uLCBkbyBub3QgdXNlISogVGhpcyBpcyBhbgorCWFsdGVybmF0aXZlIHRvIGZfb3AtPm9wZW4oKSwgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCB0aGlzIG1ldGhvZCBtYXkgb3BlbgorCWEgZmlsZSBub3QgbmVjZXNzYXJpbHkgb3JpZ2luYXRpbmcgZnJvbSB0aGUgc2FtZSBmaWxlc3lzdGVtIGFzIHRoZSBvbmUKKwlpX29wLT5vcGVuKCkgd2FzIGNhbGxlZCBvbi4gIEl0IG1heSBiZSB1c2VmdWwgZm9yIHN0YWNraW5nIGZpbGVzeXN0ZW1zCisJd2hpY2ggd2FudCB0byBhbGxvdyBuYXRpdmUgSS9PIGRpcmVjdGx5IG9uIHVuZGVybHlpbmcgZmlsZXMuCisKKworICBpbnZhbGlkYXRlcGFnZTogSWYgYSBwYWdlIGhhcyBQYWdlUHJpdmF0ZSBzZXQsIHRoZW4gaW52YWxpZGF0ZXBhZ2UKKyAgICAgICAgd2lsbCBiZSBjYWxsZWQgd2hlbiBwYXJ0IG9yIGFsbCBvZiB0aGUgcGFnZSBpcyB0byBiZSByZW1vdmVkCisJZnJvbSB0aGUgYWRkcmVzcyBzcGFjZS4gIFRoaXMgZ2VuZXJhbGx5IGNvcnJlc3BvbmRzIHRvIGVpdGhlciBhCisJdHJ1bmNhdGlvbiwgcHVuY2ggaG9sZSAgb3IgYSBjb21wbGV0ZSBpbnZhbGlkYXRpb24gb2YgdGhlIGFkZHJlc3MKKwlzcGFjZSAoaW4gdGhlIGxhdHRlciBjYXNlICdvZmZzZXQnIHdpbGwgYWx3YXlzIGJlIDAgYW5kICdsZW5ndGgnCisJd2lsbCBiZSBQQUdFX0NBQ0hFX1NJWkUpLiBBbnkgcHJpdmF0ZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGFnZQorCXNob3VsZCBiZSB1cGRhdGVkIHRvIHJlZmxlY3QgdGhpcyB0cnVuY2F0aW9uLiAgSWYgb2Zmc2V0IGlzIDAgYW5kCisJbGVuZ3RoIGlzIFBBR0VfQ0FDSEVfU0laRSwgdGhlbiB0aGUgcHJpdmF0ZSBkYXRhIHNob3VsZCBiZSByZWxlYXNlZCwKKwliZWNhdXNlIHRoZSBwYWdlIG11c3QgYmUgYWJsZSB0byBiZSBjb21wbGV0ZWx5IGRpc2NhcmRlZC4gIFRoaXMgbWF5CisJYmUgZG9uZSBieSBjYWxsaW5nIHRoZSAtPnJlbGVhc2VwYWdlIGZ1bmN0aW9uLCBidXQgaW4gdGhpcyBjYXNlIHRoZQorCXJlbGVhc2UgTVVTVCBzdWNjZWVkLgorCisgIHJlbGVhc2VwYWdlOiByZWxlYXNlcGFnZSBpcyBjYWxsZWQgb24gUGFnZVByaXZhdGUgcGFnZXMgdG8gaW5kaWNhdGUKKyAgICAgICAgdGhhdCB0aGUgcGFnZSBzaG91bGQgYmUgZnJlZWQgaWYgcG9zc2libGUuICAtPnJlbGVhc2VwYWdlCisgICAgICAgIHNob3VsZCByZW1vdmUgYW55IHByaXZhdGUgZGF0YSBmcm9tIHRoZSBwYWdlIGFuZCBjbGVhciB0aGUKKyAgICAgICAgUGFnZVByaXZhdGUgZmxhZy4gSWYgcmVsZWFzZXBhZ2UoKSBmYWlscyBmb3Igc29tZSByZWFzb24sIGl0IG11c3QKKwlpbmRpY2F0ZSBmYWlsdXJlIHdpdGggYSAwIHJldHVybiB2YWx1ZS4KKwlyZWxlYXNlcGFnZSgpIGlzIHVzZWQgaW4gdHdvIGRpc3RpbmN0IHRob3VnaCByZWxhdGVkIGNhc2VzLiAgVGhlCisJZmlyc3QgaXMgd2hlbiB0aGUgVk0gZmluZHMgYSBjbGVhbiBwYWdlIHdpdGggbm8gYWN0aXZlIHVzZXJzIGFuZAorICAgICAgICB3YW50cyB0byBtYWtlIGl0IGEgZnJlZSBwYWdlLiAgSWYgLT5yZWxlYXNlcGFnZSBzdWNjZWVkcywgdGhlCisgICAgICAgIHBhZ2Ugd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIGFkZHJlc3Nfc3BhY2UgYW5kIGJlY29tZSBmcmVlLgorCisJVGhlIHNlY29uZCBjYXNlIGlzIHdoZW4gYSByZXF1ZXN0IGhhcyBiZWVuIG1hZGUgdG8gaW52YWxpZGF0ZQorICAgICAgICBzb21lIG9yIGFsbCBwYWdlcyBpbiBhbiBhZGRyZXNzX3NwYWNlLiAgVGhpcyBjYW4gaGFwcGVuCisgICAgICAgIHRocm91Z2ggdGhlIGZhZHZpY2UoUE9TSVhfRkFEVl9ET05UTkVFRCkgc3lzdGVtIGNhbGwgb3IgYnkgdGhlCisgICAgICAgIGZpbGVzeXN0ZW0gZXhwbGljaXRseSByZXF1ZXN0aW5nIGl0IGFzIG5mcyBhbmQgOWZzIGRvICh3aGVuCisgICAgICAgIHRoZXkgYmVsaWV2ZSB0aGUgY2FjaGUgbWF5IGJlIG91dCBvZiBkYXRlIHdpdGggc3RvcmFnZSkgYnkKKyAgICAgICAgY2FsbGluZyBpbnZhbGlkYXRlX2lub2RlX3BhZ2VzMigpLgorCUlmIHRoZSBmaWxlc3lzdGVtIG1ha2VzIHN1Y2ggYSBjYWxsLCBhbmQgbmVlZHMgdG8gYmUgY2VydGFpbgorICAgICAgICB0aGF0IGFsbCBwYWdlcyBhcmUgaW52YWxpZGF0ZWQsIHRoZW4gaXRzIHJlbGVhc2VwYWdlIHdpbGwKKyAgICAgICAgbmVlZCB0byBlbnN1cmUgdGhpcy4gIFBvc3NpYmx5IGl0IGNhbiBjbGVhciB0aGUgUGFnZVVwdG9kYXRlCisgICAgICAgIGJpdCBpZiBpdCBjYW5ub3QgZnJlZSBwcml2YXRlIGRhdGEgeWV0LgorCisgIGZyZWVwYWdlOiBmcmVlcGFnZSBpcyBjYWxsZWQgb25jZSB0aGUgcGFnZSBpcyBubyBsb25nZXIgdmlzaWJsZSBpbgorICAgICAgICB0aGUgcGFnZSBjYWNoZSBpbiBvcmRlciB0byBhbGxvdyB0aGUgY2xlYW51cCBvZiBhbnkgcHJpdmF0ZQorCWRhdGEuIFNpbmNlIGl0IG1heSBiZSBjYWxsZWQgYnkgdGhlIG1lbW9yeSByZWNsYWltZXIsIGl0CisJc2hvdWxkIG5vdCBhc3N1bWUgdGhhdCB0aGUgb3JpZ2luYWwgYWRkcmVzc19zcGFjZSBtYXBwaW5nIHN0aWxsCisJZXhpc3RzLCBhbmQgaXQgc2hvdWxkIG5vdCBibG9jay4KKworICBkaXJlY3RfSU86IGNhbGxlZCBieSB0aGUgZ2VuZXJpYyByZWFkL3dyaXRlIHJvdXRpbmVzIHRvIHBlcmZvcm0KKyAgICAgICAgZGlyZWN0X0lPIC0gdGhhdCBpcyBJTyByZXF1ZXN0cyB3aGljaCBieXBhc3MgdGhlIHBhZ2UgY2FjaGUKKyAgICAgICAgYW5kIHRyYW5zZmVyIGRhdGEgZGlyZWN0bHkgYmV0d2VlbiB0aGUgc3RvcmFnZSBhbmQgdGhlCisgICAgICAgIGFwcGxpY2F0aW9uJ3MgYWRkcmVzcyBzcGFjZS4KKworICBtaWdyYXRlX3BhZ2U6ICBUaGlzIGlzIHVzZWQgdG8gY29tcGFjdCB0aGUgcGh5c2ljYWwgbWVtb3J5IHVzYWdlLgorICAgICAgICBJZiB0aGUgVk0gd2FudHMgdG8gcmVsb2NhdGUgYSBwYWdlIChtYXliZSBvZmYgYSBtZW1vcnkgY2FyZAorICAgICAgICB0aGF0IGlzIHNpZ25hbGxpbmcgaW1taW5lbnQgZmFpbHVyZSkgaXQgd2lsbCBwYXNzIGEgbmV3IHBhZ2UKKwlhbmQgYW4gb2xkIHBhZ2UgdG8gdGhpcyBmdW5jdGlvbi4gIG1pZ3JhdGVfcGFnZSBzaG91bGQKKwl0cmFuc2ZlciBhbnkgcHJpdmF0ZSBkYXRhIGFjcm9zcyBhbmQgdXBkYXRlIGFueSByZWZlcmVuY2VzCisgICAgICAgIHRoYXQgaXQgaGFzIHRvIHRoZSBwYWdlLgorCisgIGxhdW5kZXJfcGFnZTogQ2FsbGVkIGJlZm9yZSBmcmVlaW5nIGEgcGFnZSAtIGl0IHdyaXRlcyBiYWNrIHRoZSBkaXJ0eSBwYWdlLiBUbworICAJcHJldmVudCByZWRpcnR5aW5nIHRoZSBwYWdlLCBpdCBpcyBrZXB0IGxvY2tlZCBkdXJpbmcgdGhlIHdob2xlCisJb3BlcmF0aW9uLgorCisgIGlzX3BhcnRpYWxseV91cHRvZGF0ZTogQ2FsbGVkIGJ5IHRoZSBWTSB3aGVuIHJlYWRpbmcgYSBmaWxlIHRocm91Z2ggdGhlCisJcGFnZWNhY2hlIHdoZW4gdGhlIHVuZGVybHlpbmcgYmxvY2tzaXplICE9IHBhZ2VzaXplLiBJZiB0aGUgcmVxdWlyZWQKKwlibG9jayBpcyB1cCB0byBkYXRlIHRoZW4gdGhlIHJlYWQgY2FuIGNvbXBsZXRlIHdpdGhvdXQgbmVlZGluZyB0aGUgSU8KKwl0byBicmluZyB0aGUgd2hvbGUgcGFnZSB1cCB0byBkYXRlLgorCisgIGlzX2RpcnR5X3dyaXRlYmFjazogQ2FsbGVkIGJ5IHRoZSBWTSB3aGVuIGF0dGVtcHRpbmcgdG8gcmVjbGFpbSBhIHBhZ2UuCisJVGhlIFZNIHVzZXMgZGlydHkgYW5kIHdyaXRlYmFjayBpbmZvcm1hdGlvbiB0byBkZXRlcm1pbmUgaWYgaXQgbmVlZHMKKwl0byBzdGFsbCB0byBhbGxvdyBmbHVzaGVycyBhIGNoYW5jZSB0byBjb21wbGV0ZSBzb21lIElPLiBPcmRpbmFyaWx5CisJaXQgY2FuIHVzZSBQYWdlRGlydHkgYW5kIFBhZ2VXcml0ZWJhY2sgYnV0IHNvbWUgZmlsZXN5c3RlbXMgaGF2ZQorCW1vcmUgY29tcGxleCBzdGF0ZSAodW5zdGFibGUgcGFnZXMgaW4gTkZTIHByZXZlbnQgcmVjbGFpbSkgb3IKKwlkbyBub3Qgc2V0IHRob3NlIGZsYWdzIGR1ZSB0byBsb2NraW5nIHByb2JsZW1zLiBUaGlzIGNhbGxiYWNrCisJYWxsb3dzIGEgZmlsZXN5c3RlbSB0byBpbmRpY2F0ZSB0byB0aGUgVk0gaWYgYSBwYWdlIHNob3VsZCBiZQorCXRyZWF0ZWQgYXMgZGlydHkgb3Igd3JpdGViYWNrIGZvciB0aGUgcHVycG9zZXMgb2Ygc3RhbGxpbmcuCisKKyAgZXJyb3JfcmVtb3ZlX3BhZ2U6IG5vcm1hbGx5IHNldCB0byBnZW5lcmljX2Vycm9yX3JlbW92ZV9wYWdlIGlmIHRydW5jYXRpb24KKwlpcyBvayBmb3IgdGhpcyBhZGRyZXNzIHNwYWNlLiBVc2VkIGZvciBtZW1vcnkgZmFpbHVyZSBoYW5kbGluZy4KKwlTZXR0aW5nIHRoaXMgaW1wbGllcyB5b3UgZGVhbCB3aXRoIHBhZ2VzIGdvaW5nIGF3YXkgdW5kZXIgeW91LAorCXVubGVzcyB5b3UgaGF2ZSB0aGVtIGxvY2tlZCBvciByZWZlcmVuY2UgY291bnRzIGluY3JlYXNlZC4KKworICBzd2FwX2FjdGl2YXRlOiBDYWxsZWQgd2hlbiBzd2Fwb24gaXMgdXNlZCBvbiBhIGZpbGUgdG8gYWxsb2NhdGUKKwlzcGFjZSBpZiBuZWNlc3NhcnkgYW5kIHBpbiB0aGUgYmxvY2sgbG9va3VwIGluZm9ybWF0aW9uIGluCisJbWVtb3J5LiBBIHJldHVybiB2YWx1ZSBvZiB6ZXJvIGluZGljYXRlcyBzdWNjZXNzLAorCWluIHdoaWNoIGNhc2UgdGhpcyBmaWxlIGNhbiBiZSB1c2VkIHRvIGJhY2sgc3dhcHNwYWNlLiBUaGUKKwlzd2Fwc3BhY2Ugb3BlcmF0aW9ucyB3aWxsIGJlIHByb3hpZWQgdG8gdGhpcyBhZGRyZXNzIHNwYWNlJ3MKKwktPnN3YXBfe291dCxpbn0gbWV0aG9kcy4KKworICBzd2FwX2RlYWN0aXZhdGU6IENhbGxlZCBkdXJpbmcgc3dhcG9mZiBvbiBmaWxlcyB3aGVyZSBzd2FwX2FjdGl2YXRlCisJd2FzIHN1Y2Nlc3NmdWwuCisKKworVGhlIEZpbGUgT2JqZWN0Cis9PT09PT09PT09PT09PT0KKworQSBmaWxlIG9iamVjdCByZXByZXNlbnRzIGEgZmlsZSBvcGVuZWQgYnkgYSBwcm9jZXNzLgorCisKK3N0cnVjdCBmaWxlX29wZXJhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBkZXNjcmliZXMgaG93IHRoZSBWRlMgY2FuIG1hbmlwdWxhdGUgYW4gb3BlbiBmaWxlLiBBcyBvZiBrZXJuZWwKKzQuMSwgdGhlIGZvbGxvd2luZyBtZW1iZXJzIGFyZSBkZWZpbmVkOgorCitzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHsKKwlzdHJ1Y3QgbW9kdWxlICpvd25lcjsKKwlsb2ZmX3QgKCpsbHNlZWspIChzdHJ1Y3QgZmlsZSAqLCBsb2ZmX3QsIGludCk7CisJc3NpemVfdCAoKnJlYWQpIChzdHJ1Y3QgZmlsZSAqLCBjaGFyIF9fdXNlciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKKwlzc2l6ZV90ICgqd3JpdGUpIChzdHJ1Y3QgZmlsZSAqLCBjb25zdCBjaGFyIF9fdXNlciAqLCBzaXplX3QsIGxvZmZfdCAqKTsKKwlzc2l6ZV90ICgqcmVhZF9pdGVyKSAoc3RydWN0IGtpb2NiICosIHN0cnVjdCBpb3ZfaXRlciAqKTsKKwlzc2l6ZV90ICgqd3JpdGVfaXRlcikgKHN0cnVjdCBraW9jYiAqLCBzdHJ1Y3QgaW92X2l0ZXIgKik7CisJaW50ICgqaXRlcmF0ZSkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCBkaXJfY29udGV4dCAqKTsKKwl1bnNpZ25lZCBpbnQgKCpwb2xsKSAoc3RydWN0IGZpbGUgKiwgc3RydWN0IHBvbGxfdGFibGVfc3RydWN0ICopOworCWxvbmcgKCp1bmxvY2tlZF9pb2N0bCkgKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGludCwgdW5zaWduZWQgbG9uZyk7CisJbG9uZyAoKmNvbXBhdF9pb2N0bCkgKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGludCwgdW5zaWduZWQgbG9uZyk7CisJaW50ICgqbW1hcCkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKKwlpbnQgKCptcmVtYXApKHN0cnVjdCBmaWxlICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKKwlpbnQgKCpvcGVuKSAoc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopOworCWludCAoKmZsdXNoKSAoc3RydWN0IGZpbGUgKiwgZmxfb3duZXJfdCBpZCk7CisJaW50ICgqcmVsZWFzZSkgKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKKwlpbnQgKCpmc3luYykgKHN0cnVjdCBmaWxlICosIGxvZmZfdCwgbG9mZl90LCBpbnQgZGF0YXN5bmMpOworCWludCAoKmFpb19mc3luYykgKHN0cnVjdCBraW9jYiAqLCBpbnQgZGF0YXN5bmMpOworCWludCAoKmZhc3luYykgKGludCwgc3RydWN0IGZpbGUgKiwgaW50KTsKKwlpbnQgKCpsb2NrKSAoc3RydWN0IGZpbGUgKiwgaW50LCBzdHJ1Y3QgZmlsZV9sb2NrICopOworCXNzaXplX3QgKCpzZW5kcGFnZSkgKHN0cnVjdCBmaWxlICosIHN0cnVjdCBwYWdlICosIGludCwgc2l6ZV90LCBsb2ZmX3QgKiwgaW50KTsKKwl1bnNpZ25lZCBsb25nICgqZ2V0X3VubWFwcGVkX2FyZWEpKHN0cnVjdCBmaWxlICosIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOworCWludCAoKmNoZWNrX2ZsYWdzKShpbnQpOworCWludCAoKmZsb2NrKSAoc3RydWN0IGZpbGUgKiwgaW50LCBzdHJ1Y3QgZmlsZV9sb2NrICopOworCXNzaXplX3QgKCpzcGxpY2Vfd3JpdGUpKHN0cnVjdCBwaXBlX2lub2RlX2luZm8gKiwgc3RydWN0IGZpbGUgKiwgbG9mZl90ICosIHNpemVfdCwgdW5zaWduZWQgaW50KTsKKwlzc2l6ZV90ICgqc3BsaWNlX3JlYWQpKHN0cnVjdCBmaWxlICosIGxvZmZfdCAqLCBzdHJ1Y3QgcGlwZV9pbm9kZV9pbmZvICosIHNpemVfdCwgdW5zaWduZWQgaW50KTsKKwlpbnQgKCpzZXRsZWFzZSkoc3RydWN0IGZpbGUgKiwgbG9uZywgc3RydWN0IGZpbGVfbG9jayAqKiwgdm9pZCAqKik7CisJbG9uZyAoKmZhbGxvY2F0ZSkoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLCBsb2ZmX3Qgb2Zmc2V0LAorCQkJICBsb2ZmX3QgbGVuKTsKKwl2b2lkICgqc2hvd19mZGluZm8pKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGZpbGUgKmYpOworI2lmbmRlZiBDT05GSUdfTU1VCisJdW5zaWduZWQgKCptbWFwX2NhcGFiaWxpdGllcykoc3RydWN0IGZpbGUgKik7CisjZW5kaWYKK307CisKK0FnYWluLCBhbGwgbWV0aG9kcyBhcmUgY2FsbGVkIHdpdGhvdXQgYW55IGxvY2tzIGJlaW5nIGhlbGQsIHVubGVzcworb3RoZXJ3aXNlIG5vdGVkLgorCisgIGxsc2VlazogY2FsbGVkIHdoZW4gdGhlIFZGUyBuZWVkcyB0byBtb3ZlIHRoZSBmaWxlIHBvc2l0aW9uIGluZGV4CisKKyAgcmVhZDogY2FsbGVkIGJ5IHJlYWQoMikgYW5kIHJlbGF0ZWQgc3lzdGVtIGNhbGxzCisKKyAgcmVhZF9pdGVyOiBwb3NzaWJseSBhc3luY2hyb25vdXMgcmVhZCB3aXRoIGlvdl9pdGVyIGFzIGRlc3RpbmF0aW9uCisKKyAgd3JpdGU6IGNhbGxlZCBieSB3cml0ZSgyKSBhbmQgcmVsYXRlZCBzeXN0ZW0gY2FsbHMKKworICB3cml0ZV9pdGVyOiBwb3NzaWJseSBhc3luY2hyb25vdXMgd3JpdGUgd2l0aCBpb3ZfaXRlciBhcyBzb3VyY2UKKworICBpdGVyYXRlOiBjYWxsZWQgd2hlbiB0aGUgVkZTIG5lZWRzIHRvIHJlYWQgdGhlIGRpcmVjdG9yeSBjb250ZW50cworCisgIHBvbGw6IGNhbGxlZCBieSB0aGUgVkZTIHdoZW4gYSBwcm9jZXNzIHdhbnRzIHRvIGNoZWNrIGlmIHRoZXJlIGlzCisJYWN0aXZpdHkgb24gdGhpcyBmaWxlIGFuZCAob3B0aW9uYWxseSkgZ28gdG8gc2xlZXAgdW50aWwgdGhlcmUKKwlpcyBhY3Rpdml0eS4gQ2FsbGVkIGJ5IHRoZSBzZWxlY3QoMikgYW5kIHBvbGwoMikgc3lzdGVtIGNhbGxzCisKKyAgdW5sb2NrZWRfaW9jdGw6IGNhbGxlZCBieSB0aGUgaW9jdGwoMikgc3lzdGVtIGNhbGwuCisKKyAgY29tcGF0X2lvY3RsOiBjYWxsZWQgYnkgdGhlIGlvY3RsKDIpIHN5c3RlbSBjYWxsIHdoZW4gMzIgYml0IHN5c3RlbSBjYWxscworIAkgYXJlIHVzZWQgb24gNjQgYml0IGtlcm5lbHMuCisKKyAgbW1hcDogY2FsbGVkIGJ5IHRoZSBtbWFwKDIpIHN5c3RlbSBjYWxsCisKKyAgb3BlbjogY2FsbGVkIGJ5IHRoZSBWRlMgd2hlbiBhbiBpbm9kZSBzaG91bGQgYmUgb3BlbmVkLiBXaGVuIHRoZSBWRlMKKwlvcGVucyBhIGZpbGUsIGl0IGNyZWF0ZXMgYSBuZXcgInN0cnVjdCBmaWxlIi4gSXQgdGhlbiBjYWxscyB0aGUKKwlvcGVuIG1ldGhvZCBmb3IgdGhlIG5ld2x5IGFsbG9jYXRlZCBmaWxlIHN0cnVjdHVyZS4gWW91IG1pZ2h0CisJdGhpbmsgdGhhdCB0aGUgb3BlbiBtZXRob2QgcmVhbGx5IGJlbG9uZ3MgaW4KKwkic3RydWN0IGlub2RlX29wZXJhdGlvbnMiLCBhbmQgeW91IG1heSBiZSByaWdodC4gSSB0aGluayBpdCdzCisJZG9uZSB0aGUgd2F5IGl0IGlzIGJlY2F1c2UgaXQgbWFrZXMgZmlsZXN5c3RlbXMgc2ltcGxlciB0bworCWltcGxlbWVudC4gVGhlIG9wZW4oKSBtZXRob2QgaXMgYSBnb29kIHBsYWNlIHRvIGluaXRpYWxpemUgdGhlCisJInByaXZhdGVfZGF0YSIgbWVtYmVyIGluIHRoZSBmaWxlIHN0cnVjdHVyZSBpZiB5b3Ugd2FudCB0byBwb2ludAorCXRvIGEgZGV2aWNlIHN0cnVjdHVyZQorCisgIGZsdXNoOiBjYWxsZWQgYnkgdGhlIGNsb3NlKDIpIHN5c3RlbSBjYWxsIHRvIGZsdXNoIGEgZmlsZQorCisgIHJlbGVhc2U6IGNhbGxlZCB3aGVuIHRoZSBsYXN0IHJlZmVyZW5jZSB0byBhbiBvcGVuIGZpbGUgaXMgY2xvc2VkCisKKyAgZnN5bmM6IGNhbGxlZCBieSB0aGUgZnN5bmMoMikgc3lzdGVtIGNhbGwKKworICBmYXN5bmM6IGNhbGxlZCBieSB0aGUgZmNudGwoMikgc3lzdGVtIGNhbGwgd2hlbiBhc3luY2hyb25vdXMKKwkobm9uLWJsb2NraW5nKSBtb2RlIGlzIGVuYWJsZWQgZm9yIGEgZmlsZQorCisgIGxvY2s6IGNhbGxlZCBieSB0aGUgZmNudGwoMikgc3lzdGVtIGNhbGwgZm9yIEZfR0VUTEssIEZfU0VUTEssIGFuZCBGX1NFVExLVworICAJY29tbWFuZHMKKworICBnZXRfdW5tYXBwZWRfYXJlYTogY2FsbGVkIGJ5IHRoZSBtbWFwKDIpIHN5c3RlbSBjYWxsCisKKyAgY2hlY2tfZmxhZ3M6IGNhbGxlZCBieSB0aGUgZmNudGwoMikgc3lzdGVtIGNhbGwgZm9yIEZfU0VURkwgY29tbWFuZAorCisgIGZsb2NrOiBjYWxsZWQgYnkgdGhlIGZsb2NrKDIpIHN5c3RlbSBjYWxsCisKKyAgc3BsaWNlX3dyaXRlOiBjYWxsZWQgYnkgdGhlIFZGUyB0byBzcGxpY2UgZGF0YSBmcm9tIGEgcGlwZSB0byBhIGZpbGUuIFRoaXMKKwkJbWV0aG9kIGlzIHVzZWQgYnkgdGhlIHNwbGljZSgyKSBzeXN0ZW0gY2FsbAorCisgIHNwbGljZV9yZWFkOiBjYWxsZWQgYnkgdGhlIFZGUyB0byBzcGxpY2UgZGF0YSBmcm9tIGZpbGUgdG8gYSBwaXBlLiBUaGlzCisJICAgICAgIG1ldGhvZCBpcyB1c2VkIGJ5IHRoZSBzcGxpY2UoMikgc3lzdGVtIGNhbGwKKworICBzZXRsZWFzZTogY2FsbGVkIGJ5IHRoZSBWRlMgdG8gc2V0IG9yIHJlbGVhc2UgYSBmaWxlIGxvY2sgbGVhc2UuIHNldGxlYXNlCisJICAgIGltcGxlbWVudGF0aW9ucyBzaG91bGQgY2FsbCBnZW5lcmljX3NldGxlYXNlIHRvIHJlY29yZCBvciByZW1vdmUKKwkgICAgdGhlIGxlYXNlIGluIHRoZSBpbm9kZSBhZnRlciBzZXR0aW5nIGl0LgorCisgIGZhbGxvY2F0ZTogY2FsbGVkIGJ5IHRoZSBWRlMgdG8gcHJlYWxsb2NhdGUgYmxvY2tzIG9yIHB1bmNoIGEgaG9sZS4KKworTm90ZSB0aGF0IHRoZSBmaWxlIG9wZXJhdGlvbnMgYXJlIGltcGxlbWVudGVkIGJ5IHRoZSBzcGVjaWZpYworZmlsZXN5c3RlbSBpbiB3aGljaCB0aGUgaW5vZGUgcmVzaWRlcy4gV2hlbiBvcGVuaW5nIGEgZGV2aWNlIG5vZGUKKyhjaGFyYWN0ZXIgb3IgYmxvY2sgc3BlY2lhbCkgbW9zdCBmaWxlc3lzdGVtcyB3aWxsIGNhbGwgc3BlY2lhbAorc3VwcG9ydCByb3V0aW5lcyBpbiB0aGUgVkZTIHdoaWNoIHdpbGwgbG9jYXRlIHRoZSByZXF1aXJlZCBkZXZpY2UKK2RyaXZlciBpbmZvcm1hdGlvbi4gVGhlc2Ugc3VwcG9ydCByb3V0aW5lcyByZXBsYWNlIHRoZSBmaWxlc3lzdGVtIGZpbGUKK29wZXJhdGlvbnMgd2l0aCB0aG9zZSBmb3IgdGhlIGRldmljZSBkcml2ZXIsIGFuZCB0aGVuIHByb2NlZWQgdG8gY2FsbAordGhlIG5ldyBvcGVuKCkgbWV0aG9kIGZvciB0aGUgZmlsZS4gVGhpcyBpcyBob3cgb3BlbmluZyBhIGRldmljZSBmaWxlCitpbiB0aGUgZmlsZXN5c3RlbSBldmVudHVhbGx5IGVuZHMgdXAgY2FsbGluZyB0aGUgZGV2aWNlIGRyaXZlciBvcGVuKCkKK21ldGhvZC4KKworCitEaXJlY3RvcnkgRW50cnkgQ2FjaGUgKGRjYWNoZSkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKK3N0cnVjdCBkZW50cnlfb3BlcmF0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZGVzY3JpYmVzIGhvdyBhIGZpbGVzeXN0ZW0gY2FuIG92ZXJsb2FkIHRoZSBzdGFuZGFyZCBkZW50cnkKK29wZXJhdGlvbnMuIERlbnRyaWVzIGFuZCB0aGUgZGNhY2hlIGFyZSB0aGUgZG9tYWluIG9mIHRoZSBWRlMgYW5kIHRoZQoraW5kaXZpZHVhbCBmaWxlc3lzdGVtIGltcGxlbWVudGF0aW9ucy4gRGV2aWNlIGRyaXZlcnMgaGF2ZSBubyBidXNpbmVzcworaGVyZS4gVGhlc2UgbWV0aG9kcyBtYXkgYmUgc2V0IHRvIE5VTEwsIGFzIHRoZXkgYXJlIGVpdGhlciBvcHRpb25hbCBvcgordGhlIFZGUyB1c2VzIGEgZGVmYXVsdC4gQXMgb2Yga2VybmVsIDIuNi4yMiwgdGhlIGZvbGxvd2luZyBtZW1iZXJzIGFyZQorZGVmaW5lZDoKKworc3RydWN0IGRlbnRyeV9vcGVyYXRpb25zIHsKKwlpbnQgKCpkX3JldmFsaWRhdGUpKHN0cnVjdCBkZW50cnkgKiwgdW5zaWduZWQgaW50KTsKKwlpbnQgKCpkX3dlYWtfcmV2YWxpZGF0ZSkoc3RydWN0IGRlbnRyeSAqLCB1bnNpZ25lZCBpbnQpOworCWludCAoKmRfaGFzaCkoY29uc3Qgc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgcXN0ciAqKTsKKwlpbnQgKCpkX2NvbXBhcmUpKGNvbnN0IHN0cnVjdCBkZW50cnkgKiwgY29uc3Qgc3RydWN0IGRlbnRyeSAqLAorCQkJdW5zaWduZWQgaW50LCBjb25zdCBjaGFyICosIGNvbnN0IHN0cnVjdCBxc3RyICopOworCWludCAoKmRfZGVsZXRlKShjb25zdCBzdHJ1Y3QgZGVudHJ5ICopOworCXZvaWQgKCpkX3JlbGVhc2UpKHN0cnVjdCBkZW50cnkgKik7CisJdm9pZCAoKmRfaXB1dCkoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKik7CisJY2hhciAqKCpkX2RuYW1lKShzdHJ1Y3QgZGVudHJ5ICosIGNoYXIgKiwgaW50KTsKKwlzdHJ1Y3QgdmZzbW91bnQgKigqZF9hdXRvbW91bnQpKHN0cnVjdCBwYXRoICopOworCWludCAoKmRfbWFuYWdlKShzdHJ1Y3QgZGVudHJ5ICosIGJvb2wpOworfTsKKworICBkX3JldmFsaWRhdGU6IGNhbGxlZCB3aGVuIHRoZSBWRlMgbmVlZHMgdG8gcmV2YWxpZGF0ZSBhIGRlbnRyeS4gVGhpcworCWlzIGNhbGxlZCB3aGVuZXZlciBhIG5hbWUgbG9vay11cCBmaW5kcyBhIGRlbnRyeSBpbiB0aGUKKwlkY2FjaGUuIE1vc3QgbG9jYWwgZmlsZXN5c3RlbXMgbGVhdmUgdGhpcyBhcyBOVUxMLCBiZWNhdXNlIGFsbCB0aGVpcgorCWRlbnRyaWVzIGluIHRoZSBkY2FjaGUgYXJlIHZhbGlkLiBOZXR3b3JrIGZpbGVzeXN0ZW1zIGFyZSBkaWZmZXJlbnQKKwlzaW5jZSB0aGluZ3MgY2FuIGNoYW5nZSBvbiB0aGUgc2VydmVyIHdpdGhvdXQgdGhlIGNsaWVudCBuZWNlc3NhcmlseQorCWJlaW5nIGF3YXJlIG9mIGl0LgorCisJVGhpcyBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGEgcG9zaXRpdmUgdmFsdWUgaWYgdGhlIGRlbnRyeSBpcyBzdGlsbAorCXZhbGlkLCBhbmQgemVybyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgaWYgaXQgaXNuJ3QuCisKKwlkX3JldmFsaWRhdGUgbWF5IGJlIGNhbGxlZCBpbiByY3Utd2FsayBtb2RlIChmbGFncyAmIExPT0tVUF9SQ1UpLgorCUlmIGluIHJjdS13YWxrIG1vZGUsIHRoZSBmaWxlc3lzdGVtIG11c3QgcmV2YWxpZGF0ZSB0aGUgZGVudHJ5IHdpdGhvdXQKKwlibG9ja2luZyBvciBzdG9yaW5nIHRvIHRoZSBkZW50cnksIGRfcGFyZW50IGFuZCBkX2lub2RlIHNob3VsZCBub3QgYmUKKwl1c2VkIHdpdGhvdXQgY2FyZSAoYmVjYXVzZSB0aGV5IGNhbiBjaGFuZ2UgYW5kLCBpbiBkX2lub2RlIGNhc2UsIGV2ZW4KKwliZWNvbWUgTlVMTCB1bmRlciB1cykuCisKKwlJZiBhIHNpdHVhdGlvbiBpcyBlbmNvdW50ZXJlZCB0aGF0IHJjdS13YWxrIGNhbm5vdCBoYW5kbGUsIHJldHVybgorCS1FQ0hJTEQgYW5kIGl0IHdpbGwgYmUgY2FsbGVkIGFnYWluIGluIHJlZi13YWxrIG1vZGUuCisKKyBkX3dlYWtfcmV2YWxpZGF0ZTogY2FsbGVkIHdoZW4gdGhlIFZGUyBuZWVkcyB0byByZXZhbGlkYXRlIGEgImp1bXBlZCIgZGVudHJ5LgorCVRoaXMgaXMgY2FsbGVkIHdoZW4gYSBwYXRoLXdhbGsgZW5kcyBhdCBkZW50cnkgdGhhdCB3YXMgbm90IGFjcXVpcmVkIGJ5CisJZG9pbmcgYSBsb29rdXAgaW4gdGhlIHBhcmVudCBkaXJlY3RvcnkuIFRoaXMgaW5jbHVkZXMgIi8iLCAiLiIgYW5kICIuLiIsCisJYXMgd2VsbCBhcyBwcm9jZnMtc3R5bGUgc3ltbGlua3MgYW5kIG1vdW50cG9pbnQgdHJhdmVyc2FsLgorCisJSW4gdGhpcyBjYXNlLCB3ZSBhcmUgbGVzcyBjb25jZXJuZWQgd2l0aCB3aGV0aGVyIHRoZSBkZW50cnkgaXMgc3RpbGwKKwlmdWxseSBjb3JyZWN0LCBidXQgcmF0aGVyIHRoYXQgdGhlIGlub2RlIGlzIHN0aWxsIHZhbGlkLiBBcyB3aXRoCisJZF9yZXZhbGlkYXRlLCBtb3N0IGxvY2FsIGZpbGVzeXN0ZW1zIHdpbGwgc2V0IHRoaXMgdG8gTlVMTCBzaW5jZSB0aGVpcgorCWRjYWNoZSBlbnRyaWVzIGFyZSBhbHdheXMgdmFsaWQuCisKKwlUaGlzIGZ1bmN0aW9uIGhhcyB0aGUgc2FtZSByZXR1cm4gY29kZSBzZW1hbnRpY3MgYXMgZF9yZXZhbGlkYXRlLgorCisJZF93ZWFrX3JldmFsaWRhdGUgaXMgb25seSBjYWxsZWQgYWZ0ZXIgbGVhdmluZyByY3Utd2FsayBtb2RlLgorCisgIGRfaGFzaDogY2FsbGVkIHdoZW4gdGhlIFZGUyBhZGRzIGEgZGVudHJ5IHRvIHRoZSBoYXNoIHRhYmxlLiBUaGUgZmlyc3QKKwlkZW50cnkgcGFzc2VkIHRvIGRfaGFzaCBpcyB0aGUgcGFyZW50IGRpcmVjdG9yeSB0aGF0IHRoZSBuYW1lIGlzCisJdG8gYmUgaGFzaGVkIGludG8uCisKKwlTYW1lIGxvY2tpbmcgYW5kIHN5bmNocm9uaXNhdGlvbiBydWxlcyBhcyBkX2NvbXBhcmUgcmVnYXJkaW5nCisJd2hhdCBpcyBzYWZlIHRvIGRlcmVmZXJlbmNlIGV0Yy4KKworICBkX2NvbXBhcmU6IGNhbGxlZCB0byBjb21wYXJlIGEgZGVudHJ5IG5hbWUgd2l0aCBhIGdpdmVuIG5hbWUuIFRoZSBmaXJzdAorCWRlbnRyeSBpcyB0aGUgcGFyZW50IG9mIHRoZSBkZW50cnkgdG8gYmUgY29tcGFyZWQsIHRoZSBzZWNvbmQgaXMKKwl0aGUgY2hpbGQgZGVudHJ5LiBsZW4gYW5kIG5hbWUgc3RyaW5nIGFyZSBwcm9wZXJ0aWVzIG9mIHRoZSBkZW50cnkKKwl0byBiZSBjb21wYXJlZC4gcXN0ciBpcyB0aGUgbmFtZSB0byBjb21wYXJlIGl0IHdpdGguCisKKwlNdXN0IGJlIGNvbnN0YW50IGFuZCBpZGVtcG90ZW50LCBhbmQgc2hvdWxkIG5vdCB0YWtlIGxvY2tzIGlmCisJcG9zc2libGUsIGFuZCBzaG91bGQgbm90IG9yIHN0b3JlIGludG8gdGhlIGRlbnRyeS4KKwlTaG91bGQgbm90IGRlcmVmZXJlbmNlIHBvaW50ZXJzIG91dHNpZGUgdGhlIGRlbnRyeSB3aXRob3V0CisJbG90cyBvZiBjYXJlIChlZy4gIGRfcGFyZW50LCBkX2lub2RlLCBkX25hbWUgc2hvdWxkIG5vdCBiZSB1c2VkKS4KKworCUhvd2V2ZXIsIG91ciB2ZnNtb3VudCBpcyBwaW5uZWQsIGFuZCBSQ1UgaGVsZCwgc28gdGhlIGRlbnRyaWVzIGFuZAorCWlub2RlcyB3b24ndCBkaXNhcHBlYXIsIG5laXRoZXIgd2lsbCBvdXIgc2Igb3IgZmlsZXN5c3RlbSBtb2R1bGUuCisJLT5kX3NiIG1heSBiZSB1c2VkLgorCisJSXQgaXMgYSB0cmlja3kgY2FsbGluZyBjb252ZW50aW9uIGJlY2F1c2UgaXQgbmVlZHMgdG8gYmUgY2FsbGVkIHVuZGVyCisJInJjdS13YWxrIiwgaWUuIHdpdGhvdXQgYW55IGxvY2tzIG9yIHJlZmVyZW5jZXMgb24gdGhpbmdzLgorCisgIGRfZGVsZXRlOiBjYWxsZWQgd2hlbiB0aGUgbGFzdCByZWZlcmVuY2UgdG8gYSBkZW50cnkgaXMgZHJvcHBlZCBhbmQgdGhlCisJZGNhY2hlIGlzIGRlY2lkaW5nIHdoZXRoZXIgb3Igbm90IHRvIGNhY2hlIGl0LiBSZXR1cm4gMSB0byBkZWxldGUKKwlpbW1lZGlhdGVseSwgb3IgMCB0byBjYWNoZSB0aGUgZGVudHJ5LiBEZWZhdWx0IGlzIE5VTEwgd2hpY2ggbWVhbnMgdG8KKwlhbHdheXMgY2FjaGUgYSByZWFjaGFibGUgZGVudHJ5LiBkX2RlbGV0ZSBtdXN0IGJlIGNvbnN0YW50IGFuZAorCWlkZW1wb3RlbnQuCisKKyAgZF9yZWxlYXNlOiBjYWxsZWQgd2hlbiBhIGRlbnRyeSBpcyByZWFsbHkgZGVhbGxvY2F0ZWQKKworICBkX2lwdXQ6IGNhbGxlZCB3aGVuIGEgZGVudHJ5IGxvc2VzIGl0cyBpbm9kZSAoanVzdCBwcmlvciB0byBpdHMKKwliZWluZyBkZWFsbG9jYXRlZCkuIFRoZSBkZWZhdWx0IHdoZW4gdGhpcyBpcyBOVUxMIGlzIHRoYXQgdGhlCisJVkZTIGNhbGxzIGlwdXQoKS4gSWYgeW91IGRlZmluZSB0aGlzIG1ldGhvZCwgeW91IG11c3QgY2FsbAorCWlwdXQoKSB5b3Vyc2VsZgorCisgIGRfZG5hbWU6IGNhbGxlZCB3aGVuIHRoZSBwYXRobmFtZSBvZiBhIGRlbnRyeSBzaG91bGQgYmUgZ2VuZXJhdGVkLgorCVVzZWZ1bCBmb3Igc29tZSBwc2V1ZG8gZmlsZXN5c3RlbXMgKHNvY2tmcywgcGlwZWZzLCAuLi4pIHRvIGRlbGF5CisJcGF0aG5hbWUgZ2VuZXJhdGlvbi4gKEluc3RlYWQgb2YgZG9pbmcgaXQgd2hlbiBkZW50cnkgaXMgY3JlYXRlZCwKKwlpdCdzIGRvbmUgb25seSB3aGVuIHRoZSBwYXRoIGlzIG5lZWRlZC4pLiBSZWFsIGZpbGVzeXN0ZW1zIHByb2JhYmx5CisJZG9udCB3YW50IHRvIHVzZSBpdCwgYmVjYXVzZSB0aGVpciBkZW50cmllcyBhcmUgcHJlc2VudCBpbiBnbG9iYWwKKwlkY2FjaGUgaGFzaCwgc28gdGhlaXIgaGFzaCBzaG91bGQgYmUgYW4gaW52YXJpYW50LiBBcyBubyBsb2NrIGlzCisJaGVsZCwgZF9kbmFtZSgpIHNob3VsZCBub3QgdHJ5IHRvIG1vZGlmeSB0aGUgZGVudHJ5IGl0c2VsZiwgdW5sZXNzCisJYXBwcm9wcmlhdGUgU01QIHNhZmV0eSBpcyB1c2VkLiBDQVVUSU9OIDogZF9wYXRoKCkgbG9naWMgaXMgcXVpdGUKKwl0cmlja3kuIFRoZSBjb3JyZWN0IHdheSB0byByZXR1cm4gZm9yIGV4YW1wbGUgIkhlbGxvIiBpcyB0byBwdXQgaXQKKwlhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIsIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZmlyc3QgY2hhci4KKwlkeW5hbWljX2RuYW1lKCkgaGVscGVyIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIHRvIHRha2UgY2FyZSBvZiB0aGlzLgorCisgIGRfYXV0b21vdW50OiBjYWxsZWQgd2hlbiBhbiBhdXRvbW91bnQgZGVudHJ5IGlzIHRvIGJlIHRyYXZlcnNlZCAob3B0aW9uYWwpLgorCVRoaXMgc2hvdWxkIGNyZWF0ZSBhIG5ldyBWRlMgbW91bnQgcmVjb3JkIGFuZCByZXR1cm4gdGhlIHJlY29yZCB0byB0aGUKKwljYWxsZXIuICBUaGUgY2FsbGVyIGlzIHN1cHBsaWVkIHdpdGggYSBwYXRoIHBhcmFtZXRlciBnaXZpbmcgdGhlCisJYXV0b21vdW50IGRpcmVjdG9yeSB0byBkZXNjcmliZSB0aGUgYXV0b21vdW50IHRhcmdldCBhbmQgdGhlIHBhcmVudAorCVZGUyBtb3VudCByZWNvcmQgdG8gcHJvdmlkZSBpbmhlcml0YWJsZSBtb3VudCBwYXJhbWV0ZXJzLiAgTlVMTCBzaG91bGQKKwliZSByZXR1cm5lZCBpZiBzb21lb25lIGVsc2UgbWFuYWdlZCB0byBtYWtlIHRoZSBhdXRvbW91bnQgZmlyc3QuICBJZgorCXRoZSB2ZnNtb3VudCBjcmVhdGlvbiBmYWlsZWQsIHRoZW4gYW4gZXJyb3IgY29kZSBzaG91bGQgYmUgcmV0dXJuZWQuCisJSWYgLUVJU0RJUiBpcyByZXR1cm5lZCwgdGhlbiB0aGUgZGlyZWN0b3J5IHdpbGwgYmUgdHJlYXRlZCBhcyBhbgorCW9yZGluYXJ5IGRpcmVjdG9yeSBhbmQgcmV0dXJuZWQgdG8gcGF0aHdhbGsgdG8gY29udGludWUgd2Fsa2luZy4KKworCUlmIGEgdmZzbW91bnQgaXMgcmV0dXJuZWQsIHRoZSBjYWxsZXIgd2lsbCBhdHRlbXB0IHRvIG1vdW50IGl0IG9uIHRoZQorCW1vdW50cG9pbnQgYW5kIHdpbGwgcmVtb3ZlIHRoZSB2ZnNtb3VudCBmcm9tIGl0cyBleHBpcmF0aW9uIGxpc3QgaW4KKwl0aGUgY2FzZSBvZiBmYWlsdXJlLiAgVGhlIHZmc21vdW50IHNob3VsZCBiZSByZXR1cm5lZCB3aXRoIDIgcmVmcyBvbgorCWl0IHRvIHByZXZlbnQgYXV0b21hdGljIGV4cGlyYXRpb24gLSB0aGUgY2FsbGVyIHdpbGwgY2xlYW4gdXAgdGhlCisJYWRkaXRpb25hbCByZWYuCisKKwlUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCBpZiBEQ0FDSEVfTkVFRF9BVVRPTU9VTlQgaXMgc2V0IG9uIHRoZQorCWRlbnRyeS4gIFRoaXMgaXMgc2V0IGJ5IF9fZF9pbnN0YW50aWF0ZSgpIGlmIFNfQVVUT01PVU5UIGlzIHNldCBvbiB0aGUKKwlpbm9kZSBiZWluZyBhZGRlZC4KKworICBkX21hbmFnZTogY2FsbGVkIHRvIGFsbG93IHRoZSBmaWxlc3lzdGVtIHRvIG1hbmFnZSB0aGUgdHJhbnNpdGlvbiBmcm9tIGEKKwlkZW50cnkgKG9wdGlvbmFsKS4gIFRoaXMgYWxsb3dzIGF1dG9mcywgZm9yIGV4YW1wbGUsIHRvIGhvbGQgdXAgY2xpZW50cworCXdhaXRpbmcgdG8gZXhwbG9yZSBiZWhpbmQgYSAnbW91bnRwb2ludCcgd2hpbHN0IGxldHRpbmcgdGhlIGRhZW1vbiBnbworCXBhc3QgYW5kIGNvbnN0cnVjdCB0aGUgc3VidHJlZSB0aGVyZS4gIDAgc2hvdWxkIGJlIHJldHVybmVkIHRvIGxldCB0aGUKKwljYWxsaW5nIHByb2Nlc3MgY29udGludWUuICAtRUlTRElSIGNhbiBiZSByZXR1cm5lZCB0byB0ZWxsIHBhdGh3YWxrIHRvCisJdXNlIHRoaXMgZGlyZWN0b3J5IGFzIGFuIG9yZGluYXJ5IGRpcmVjdG9yeSBhbmQgdG8gaWdub3JlIGFueXRoaW5nCisJbW91bnRlZCBvbiBpdCBhbmQgbm90IHRvIGNoZWNrIHRoZSBhdXRvbW91bnQgZmxhZy4gIEFueSBvdGhlciBlcnJvcgorCWNvZGUgd2lsbCBhYm9ydCBwYXRod2FsayBjb21wbGV0ZWx5LgorCisJSWYgdGhlICdyY3Vfd2FsaycgcGFyYW1ldGVyIGlzIHRydWUsIHRoZW4gdGhlIGNhbGxlciBpcyBkb2luZyBhCisJcGF0aHdhbGsgaW4gUkNVLXdhbGsgbW9kZS4gIFNsZWVwaW5nIGlzIG5vdCBwZXJtaXR0ZWQgaW4gdGhpcyBtb2RlLAorCWFuZCB0aGUgY2FsbGVyIGNhbiBiZSBhc2tlZCB0byBsZWF2ZSBpdCBhbmQgY2FsbCBhZ2FpbiBieSByZXR1cm5pbmcKKwktRUNISUxELiAgLUVJU0RJUiBtYXkgYWxzbyBiZSByZXR1cm5lZCB0byB0ZWxsIHBhdGh3YWxrIHRvCisJaWdub3JlIGRfYXV0b21vdW50IG9yIGFueSBtb3VudHMuCisKKwlUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZCBpZiBEQ0FDSEVfTUFOQUdFX1RSQU5TSVQgaXMgc2V0IG9uIHRoZQorCWRlbnRyeSBiZWluZyB0cmFuc2l0ZWQgZnJvbS4KKworRXhhbXBsZSA6CisKK3N0YXRpYyBjaGFyICpwaXBlZnNfZG5hbWUoc3RydWN0IGRlbnRyeSAqZGVudCwgY2hhciAqYnVmZmVyLCBpbnQgYnVmbGVuKQoreworCXJldHVybiBkeW5hbWljX2RuYW1lKGRlbnRyeSwgYnVmZmVyLCBidWZsZW4sICJwaXBlOlslbHVdIiwKKwkJCQlkZW50cnktPmRfaW5vZGUtPmlfaW5vKTsKK30KKworRWFjaCBkZW50cnkgaGFzIGEgcG9pbnRlciB0byBpdHMgcGFyZW50IGRlbnRyeSwgYXMgd2VsbCBhcyBhIGhhc2ggbGlzdAorb2YgY2hpbGQgZGVudHJpZXMuIENoaWxkIGRlbnRyaWVzIGFyZSBiYXNpY2FsbHkgbGlrZSBmaWxlcyBpbiBhCitkaXJlY3RvcnkuCisKKworRGlyZWN0b3J5IEVudHJ5IENhY2hlIEFQSQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIHdoaWNoIHBlcm1pdCBhIGZpbGVzeXN0ZW0gdG8KK21hbmlwdWxhdGUgZGVudHJpZXM6CisKKyAgZGdldDogb3BlbiBhIG5ldyBoYW5kbGUgZm9yIGFuIGV4aXN0aW5nIGRlbnRyeSAodGhpcyBqdXN0IGluY3JlbWVudHMKKwl0aGUgdXNhZ2UgY291bnQpCisKKyAgZHB1dDogY2xvc2UgYSBoYW5kbGUgZm9yIGEgZGVudHJ5IChkZWNyZW1lbnRzIHRoZSB1c2FnZSBjb3VudCkuIElmCisJdGhlIHVzYWdlIGNvdW50IGRyb3BzIHRvIDAsIGFuZCB0aGUgZGVudHJ5IGlzIHN0aWxsIGluIGl0cworCXBhcmVudCdzIGhhc2gsIHRoZSAiZF9kZWxldGUiIG1ldGhvZCBpcyBjYWxsZWQgdG8gY2hlY2sgd2hldGhlcgorCWl0IHNob3VsZCBiZSBjYWNoZWQuIElmIGl0IHNob3VsZCBub3QgYmUgY2FjaGVkLCBvciBpZiB0aGUgZGVudHJ5CisJaXMgbm90IGhhc2hlZCwgaXQgaXMgZGVsZXRlZC4gT3RoZXJ3aXNlIGNhY2hlZCBkZW50cmllcyBhcmUgcHV0CisJaW50byBhbiBMUlUgbGlzdCB0byBiZSByZWNsYWltZWQgb24gbWVtb3J5IHNob3J0YWdlLgorCisgIGRfZHJvcDogdGhpcyB1bmhhc2hlcyBhIGRlbnRyeSBmcm9tIGl0cyBwYXJlbnRzIGhhc2ggbGlzdC4gQQorCXN1YnNlcXVlbnQgY2FsbCB0byBkcHV0KCkgd2lsbCBkZWFsbG9jYXRlIHRoZSBkZW50cnkgaWYgaXRzCisJdXNhZ2UgY291bnQgZHJvcHMgdG8gMAorCisgIGRfZGVsZXRlOiBkZWxldGUgYSBkZW50cnkuIElmIHRoZXJlIGFyZSBubyBvdGhlciBvcGVuIHJlZmVyZW5jZXMgdG8KKwl0aGUgZGVudHJ5IHRoZW4gdGhlIGRlbnRyeSBpcyB0dXJuZWQgaW50byBhIG5lZ2F0aXZlIGRlbnRyeQorCSh0aGUgZF9pcHV0KCkgbWV0aG9kIGlzIGNhbGxlZCkuIElmIHRoZXJlIGFyZSBvdGhlcgorCXJlZmVyZW5jZXMsIHRoZW4gZF9kcm9wKCkgaXMgY2FsbGVkIGluc3RlYWQKKworICBkX2FkZDogYWRkIGEgZGVudHJ5IHRvIGl0cyBwYXJlbnRzIGhhc2ggbGlzdCBhbmQgdGhlbiBjYWxscworCWRfaW5zdGFudGlhdGUoKQorCisgIGRfaW5zdGFudGlhdGU6IGFkZCBhIGRlbnRyeSB0byB0aGUgYWxpYXMgaGFzaCBsaXN0IGZvciB0aGUgaW5vZGUgYW5kCisJdXBkYXRlcyB0aGUgImRfaW5vZGUiIG1lbWJlci4gVGhlICJpX2NvdW50IiBtZW1iZXIgaW4gdGhlCisJaW5vZGUgc3RydWN0dXJlIHNob3VsZCBiZSBzZXQvaW5jcmVtZW50ZWQuIElmIHRoZSBpbm9kZQorCXBvaW50ZXIgaXMgTlVMTCwgdGhlIGRlbnRyeSBpcyBjYWxsZWQgYSAibmVnYXRpdmUKKwlkZW50cnkiLiBUaGlzIGZ1bmN0aW9uIGlzIGNvbW1vbmx5IGNhbGxlZCB3aGVuIGFuIGlub2RlIGlzCisJY3JlYXRlZCBmb3IgYW4gZXhpc3RpbmcgbmVnYXRpdmUgZGVudHJ5CisKKyAgZF9sb29rdXA6IGxvb2sgdXAgYSBkZW50cnkgZ2l2ZW4gaXRzIHBhcmVudCBhbmQgcGF0aCBuYW1lIGNvbXBvbmVudAorCUl0IGxvb2tzIHVwIHRoZSBjaGlsZCBvZiB0aGF0IGdpdmVuIG5hbWUgZnJvbSB0aGUgZGNhY2hlCisJaGFzaCB0YWJsZS4gSWYgaXQgaXMgZm91bmQsIHRoZSByZWZlcmVuY2UgY291bnQgaXMgaW5jcmVtZW50ZWQKKwlhbmQgdGhlIGRlbnRyeSBpcyByZXR1cm5lZC4gVGhlIGNhbGxlciBtdXN0IHVzZSBkcHV0KCkKKwl0byBmcmVlIHRoZSBkZW50cnkgd2hlbiBpdCBmaW5pc2hlcyB1c2luZyBpdC4KKworTW91bnQgT3B0aW9ucworPT09PT09PT09PT09PQorCitQYXJzaW5nIG9wdGlvbnMKKy0tLS0tLS0tLS0tLS0tLQorCitPbiBtb3VudCBhbmQgcmVtb3VudCB0aGUgZmlsZXN5c3RlbSBpcyBwYXNzZWQgYSBzdHJpbmcgY29udGFpbmluZyBhCitjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBtb3VudCBvcHRpb25zLiAgVGhlIG9wdGlvbnMgY2FuIGhhdmUgZWl0aGVyIG9mCit0aGVzZSBmb3JtczoKKworICBvcHRpb24KKyAgb3B0aW9uPXZhbHVlCisKK1RoZSA8bGludXgvcGFyc2VyLmg+IGhlYWRlciBkZWZpbmVzIGFuIEFQSSB0aGF0IGhlbHBzIHBhcnNlIHRoZXNlCitvcHRpb25zLiAgVGhlcmUgYXJlIHBsZW50eSBvZiBleGFtcGxlcyBvbiBob3cgdG8gdXNlIGl0IGluIGV4aXN0aW5nCitmaWxlc3lzdGVtcy4KKworU2hvd2luZyBvcHRpb25zCistLS0tLS0tLS0tLS0tLS0KKworSWYgYSBmaWxlc3lzdGVtIGFjY2VwdHMgbW91bnQgb3B0aW9ucywgaXQgbXVzdCBkZWZpbmUgc2hvd19vcHRpb25zKCkKK3RvIHNob3cgYWxsIHRoZSBjdXJyZW50bHkgYWN0aXZlIG9wdGlvbnMuICBUaGUgcnVsZXMgYXJlOgorCisgIC0gb3B0aW9ucyBNVVNUIGJlIHNob3duIHdoaWNoIGFyZSBub3QgZGVmYXVsdCBvciB0aGVpciB2YWx1ZXMgZGlmZmVyCisgICAgZnJvbSB0aGUgZGVmYXVsdAorCisgIC0gb3B0aW9ucyBNQVkgYmUgc2hvd24gd2hpY2ggYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBoYXZlIHRoZWlyCisgICAgZGVmYXVsdCB2YWx1ZQorCitPcHRpb25zIHVzZWQgb25seSBpbnRlcm5hbGx5IGJldHdlZW4gYSBtb3VudCBoZWxwZXIgYW5kIHRoZSBrZXJuZWwKKyhzdWNoIGFzIGZpbGUgZGVzY3JpcHRvcnMpLCBvciB3aGljaCBvbmx5IGhhdmUgYW4gZWZmZWN0IGR1cmluZyB0aGUKK21vdW50aW5nIChzdWNoIGFzIG9uZXMgY29udHJvbGxpbmcgdGhlIGNyZWF0aW9uIG9mIGEgam91cm5hbCkgYXJlIGV4ZW1wdAorZnJvbSB0aGUgYWJvdmUgcnVsZXMuCisKK1RoZSB1bmRlcmx5aW5nIHJlYXNvbiBmb3IgdGhlIGFib3ZlIHJ1bGVzIGlzIHRvIG1ha2Ugc3VyZSwgdGhhdCBhCittb3VudCBjYW4gYmUgYWNjdXJhdGVseSByZXBsaWNhdGVkIChlLmcuIHVtb3VudGluZyBhbmQgbW91bnRpbmcgYWdhaW4pCitiYXNlZCBvbiB0aGUgaW5mb3JtYXRpb24gZm91bmQgaW4gL3Byb2MvbW91bnRzLgorCitBIHNpbXBsZSBtZXRob2Qgb2Ygc2F2aW5nIG9wdGlvbnMgYXQgbW91bnQvcmVtb3VudCB0aW1lIGFuZCBzaG93aW5nCit0aGVtIGlzIHByb3ZpZGVkIHdpdGggdGhlIHNhdmVfbW91bnRfb3B0aW9ucygpIGFuZAorZ2VuZXJpY19zaG93X29wdGlvbnMoKSBoZWxwZXIgZnVuY3Rpb25zLiAgUGxlYXNlIG5vdGUsIHRoYXQgdXNpbmcKK3RoZXNlIG1heSBoYXZlIGRyYXdiYWNrcy4gIEZvciBtb3JlIGluZm8gc2VlIGhlYWRlciBjb21tZW50cyBmb3IgdGhlc2UKK2Z1bmN0aW9ucyBpbiBmcy9uYW1lc3BhY2UuYy4KKworUmVzb3VyY2VzCis9PT09PT09PT0KKworKE5vdGUgc29tZSBvZiB0aGVzZSByZXNvdXJjZXMgYXJlIG5vdCB1cC10by1kYXRlIHdpdGggdGhlIGxhdGVzdCBrZXJuZWwKKyB2ZXJzaW9uLikKKworQ3JlYXRpbmcgTGludXggdmlydHVhbCBmaWxlc3lzdGVtcy4gMjAwMgorICAgIDxodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8xMzMyNS8+CisKK1RoZSBMaW51eCBWaXJ0dWFsIEZpbGUtc3lzdGVtIExheWVyIGJ5IE5laWwgQnJvd24uIDE5OTkKKyAgICA8aHR0cDovL3d3dy5jc2UudW5zdy5lZHUuYXUvfm5laWxiL29zcy9saW51eC1jb21tZW50YXJ5L3Zmcy5odG1sPgorCitBIHRvdXIgb2YgdGhlIExpbnV4IFZGUyBieSBNaWNoYWVsIEsuIEpvaG5zb24uIDE5OTYKKyAgICA8aHR0cDovL3d3dy50bGRwLm9yZy9MRFAva2hnL0h5cGVyTmV3cy9nZXQvZnMvdmZzdG91ci5odG1sPgorCitBIHNtYWxsIHRyYWlsIHRocm91Z2ggdGhlIExpbnV4IGtlcm5lbCBieSBBbmRyaWVzIEJyb3V3ZXIuIDIwMDEKKyAgICA8aHR0cDovL3d3dy53aW4udHVlLm5sL35hZWIvbGludXgvdmZzL3RyYWlsLmh0bWw+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3hmcy1kZWxheWVkLWxvZ2dpbmctZGVzaWduLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMveGZzLWRlbGF5ZWQtbG9nZ2luZy1kZXNpZ24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjZTM2NDMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3hmcy1kZWxheWVkLWxvZ2dpbmctZGVzaWduLnR4dApAQCAtMCwwICsxLDc5MyBAQAorWEZTIERlbGF5ZWQgTG9nZ2luZyBEZXNpZ24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ludHJvZHVjdGlvbiB0byBSZS1sb2dnaW5nIGluIFhGUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1hGUyBsb2dnaW5nIGlzIGEgY29tYmluYXRpb24gb2YgbG9naWNhbCBhbmQgcGh5c2ljYWwgbG9nZ2luZy4gU29tZSBvYmplY3RzLAorc3VjaCBhcyBpbm9kZXMgYW5kIGRxdW90cywgYXJlIGxvZ2dlZCBpbiBsb2dpY2FsIGZvcm1hdCB3aGVyZSB0aGUgZGV0YWlscworbG9nZ2VkIGFyZSBtYWRlIHVwIG9mIHRoZSBjaGFuZ2VzIHRvIGluLWNvcmUgc3RydWN0dXJlcyByYXRoZXIgdGhhbiBvbi1kaXNrCitzdHJ1Y3R1cmVzLiBPdGhlciBvYmplY3RzIC0gdHlwaWNhbGx5IGJ1ZmZlcnMgLSBoYXZlIHRoZWlyIHBoeXNpY2FsIGNoYW5nZXMKK2xvZ2dlZC4gVGhlIHJlYXNvbiBmb3IgdGhlc2UgZGlmZmVyZW5jZXMgaXMgdG8gcmVkdWNlIHRoZSBhbW91bnQgb2YgbG9nIHNwYWNlCityZXF1aXJlZCBmb3Igb2JqZWN0cyB0aGF0IGFyZSBmcmVxdWVudGx5IGxvZ2dlZC4gU29tZSBwYXJ0cyBvZiBpbm9kZXMgYXJlIG1vcmUKK2ZyZXF1ZW50bHkgbG9nZ2VkIHRoYW4gb3RoZXJzLCBhbmQgaW5vZGVzIGFyZSB0eXBpY2FsbHkgbW9yZSBmcmVxdWVudGx5IGxvZ2dlZAordGhhbiBhbnkgb3RoZXIgb2JqZWN0IChleGNlcHQgbWF5YmUgdGhlIHN1cGVyYmxvY2sgYnVmZmVyKSBzbyBrZWVwaW5nIHRoZQorYW1vdW50IG9mIG1ldGFkYXRhIGxvZ2dlZCBsb3cgaXMgb2YgcHJpbWUgaW1wb3J0YW5jZS4KKworVGhlIHJlYXNvbiB0aGF0IHRoaXMgaXMgc3VjaCBhIGNvbmNlcm4gaXMgdGhhdCBYRlMgYWxsb3dzIG11bHRpcGxlIHNlcGFyYXRlCittb2RpZmljYXRpb25zIHRvIGEgc2luZ2xlIG9iamVjdCB0byBiZSBjYXJyaWVkIGluIHRoZSBsb2cgYXQgYW55IGdpdmVuIHRpbWUuCitUaGlzIGFsbG93cyB0aGUgbG9nIHRvIGF2b2lkIG5lZWRpbmcgdG8gZmx1c2ggZWFjaCBjaGFuZ2UgdG8gZGlzayBiZWZvcmUKK3JlY29yZGluZyBhIG5ldyBjaGFuZ2UgdG8gdGhlIG9iamVjdC4gWEZTIGRvZXMgdGhpcyB2aWEgYSBtZXRob2QgY2FsbGVkCisicmUtbG9nZ2luZyIuIENvbmNlcHR1YWxseSwgdGhpcyBpcyBxdWl0ZSBzaW1wbGUgLSBhbGwgaXQgcmVxdWlyZXMgaXMgdGhhdCBhbnkKK25ldyBjaGFuZ2UgdG8gdGhlIG9iamVjdCBpcyByZWNvcmRlZCB3aXRoIGEgKm5ldyBjb3B5KiBvZiBhbGwgdGhlIGV4aXN0aW5nCitjaGFuZ2VzIGluIHRoZSBuZXcgdHJhbnNhY3Rpb24gdGhhdCBpcyB3cml0dGVuIHRvIHRoZSBsb2cuCisKK1RoYXQgaXMsIGlmIHdlIGhhdmUgYSBzZXF1ZW5jZSBvZiBjaGFuZ2VzIEEgdGhyb3VnaCB0byBGLCBhbmQgdGhlIG9iamVjdCB3YXMKK3dyaXR0ZW4gdG8gZGlzayBhZnRlciBjaGFuZ2UgRCwgd2Ugd291bGQgc2VlIGluIHRoZSBsb2cgdGhlIGZvbGxvd2luZyBzZXJpZXMKK29mIHRyYW5zYWN0aW9ucywgdGhlaXIgY29udGVudHMgYW5kIHRoZSBsb2cgc2VxdWVuY2UgbnVtYmVyIChMU04pIG9mIHRoZQordHJhbnNhY3Rpb246CisKKwlUcmFuc2FjdGlvbgkJQ29udGVudHMJTFNOCisJICAgQQkJCSAgIEEJCSAgIFgKKwkgICBCCQkJICBBK0IJCSAgWCtuCisJICAgQwkJCSBBK0IrQwkJIFgrbittCisJICAgRAkJCUErQitDK0QJCVgrbittK28KKwkgICAgPG9iamVjdCB3cml0dGVuIHRvIGRpc2s+CisJICAgRQkJCSAgIEUJCSAgIFkgKD4gWCtuK20rbykKKwkgICBGCQkJICBFK0YJCSAgWdmNK3AKKworSW4gb3RoZXIgd29yZHMsIGVhY2ggdGltZSBhbiBvYmplY3QgaXMgcmVsb2dnZWQsIHRoZSBuZXcgdHJhbnNhY3Rpb24gY29udGFpbnMKK3RoZSBhZ2dyZWdhdGlvbiBvZiBhbGwgdGhlIHByZXZpb3VzIGNoYW5nZXMgY3VycmVudGx5IGhlbGQgb25seSBpbiB0aGUgbG9nLgorCitUaGlzIHJlbG9nZ2luZyB0ZWNobmlxdWUgYWxzbyBhbGxvd3Mgb2JqZWN0cyB0byBiZSBtb3ZlZCBmb3J3YXJkIGluIHRoZSBsb2cgc28KK3RoYXQgYW4gb2JqZWN0IGJlaW5nIHJlbG9nZ2VkIGRvZXMgbm90IHByZXZlbnQgdGhlIHRhaWwgb2YgdGhlIGxvZyBmcm9tIGV2ZXIKK21vdmluZyBmb3J3YXJkLiAgVGhpcyBjYW4gYmUgc2VlbiBpbiB0aGUgdGFibGUgYWJvdmUgYnkgdGhlIGNoYW5naW5nCisoaW5jcmVhc2luZykgTFNOIG9mIGVhY2ggc3Vic2VxdWVudCB0cmFuc2FjdGlvbiAtIHRoZSBMU04gaXMgZWZmZWN0aXZlbHkgYQorZGlyZWN0IGVuY29kaW5nIG9mIHRoZSBsb2NhdGlvbiBpbiB0aGUgbG9nIG9mIHRoZSB0cmFuc2FjdGlvbi4KKworVGhpcyByZWxvZ2dpbmcgaXMgYWxzbyB1c2VkIHRvIGltcGxlbWVudCBsb25nLXJ1bm5pbmcsIG11bHRpcGxlLWNvbW1pdAordHJhbnNhY3Rpb25zLiAgVGhlc2UgdHJhbnNhY3Rpb24gYXJlIGtub3duIGFzIHJvbGxpbmcgdHJhbnNhY3Rpb25zLCBhbmQgcmVxdWlyZQorYSBzcGVjaWFsIGxvZyByZXNlcnZhdGlvbiBrbm93biBhcyBhIHBlcm1hbmVudCB0cmFuc2FjdGlvbiByZXNlcnZhdGlvbi4gQQordHlwaWNhbCBleGFtcGxlIG9mIGEgcm9sbGluZyB0cmFuc2FjdGlvbiBpcyB0aGUgcmVtb3ZhbCBvZiBleHRlbnRzIGZyb20gYW4KK2lub2RlIHdoaWNoIGNhbiBvbmx5IGJlIGRvbmUgYXQgYSByYXRlIG9mIHR3byBleHRlbnRzIHBlciB0cmFuc2FjdGlvbiBiZWNhdXNlCitvZiByZXNlcnZhdGlvbiBzaXplIGxpbWl0YXRpb25zLiBIZW5jZSBhIHJvbGxpbmcgZXh0ZW50IHJlbW92YWwgdHJhbnNhY3Rpb24KK2tlZXBzIHJlbG9nZ2luZyB0aGUgaW5vZGUgYW5kIGJ0cmVlIGJ1ZmZlcnMgYXMgdGhleSBnZXQgbW9kaWZpZWQgaW4gZWFjaAorcmVtb3ZhbCBvcGVyYXRpb24uIFRoaXMga2VlcHMgdGhlbSBtb3ZpbmcgZm9yd2FyZCBpbiB0aGUgbG9nIGFzIHRoZSBvcGVyYXRpb24KK3Byb2dyZXNzZXMsIGVuc3VyaW5nIHRoYXQgY3VycmVudCBvcGVyYXRpb24gbmV2ZXIgZ2V0cyBibG9ja2VkIGJ5IGl0c2VsZiBpZiB0aGUKK2xvZyB3cmFwcyBhcm91bmQuCisKK0hlbmNlIGl0IGNhbiBiZSBzZWVuIHRoYXQgdGhlIHJlbG9nZ2luZyBvcGVyYXRpb24gaXMgZnVuZGFtZW50YWwgdG8gdGhlIGNvcnJlY3QKK3dvcmtpbmcgb2YgdGhlIFhGUyBqb3VybmFsbGluZyBzdWJzeXN0ZW0uIEZyb20gdGhlIGFib3ZlIGRlc2NyaXB0aW9uLCBtb3N0CitwZW9wbGUgc2hvdWxkIGJlIGFibGUgdG8gc2VlIHdoeSB0aGUgWEZTIG1ldGFkYXRhIG9wZXJhdGlvbnMgd3JpdGVzIHNvIG11Y2ggdG8KK3RoZSBsb2cgLSByZXBlYXRlZCBvcGVyYXRpb25zIHRvIHRoZSBzYW1lIG9iamVjdHMgd3JpdGUgdGhlIHNhbWUgY2hhbmdlcyB0bwordGhlIGxvZyBvdmVyIGFuZCBvdmVyIGFnYWluLiBXb3JzZSBpcyB0aGUgZmFjdCB0aGF0IG9iamVjdHMgdGVuZCB0byBnZXQKK2RpcnRpZXIgYXMgdGhleSBnZXQgcmVsb2dnZWQsIHNvIGVhY2ggc3Vic2VxdWVudCB0cmFuc2FjdGlvbiBpcyB3cml0aW5nIG1vcmUKK21ldGFkYXRhIGludG8gdGhlIGxvZy4KKworQW5vdGhlciBmZWF0dXJlIG9mIHRoZSBYRlMgdHJhbnNhY3Rpb24gc3Vic3lzdGVtIGlzIHRoYXQgbW9zdCB0cmFuc2FjdGlvbnMgYXJlCithc3luY2hyb25vdXMuIFRoYXQgaXMsIHRoZXkgZG9uJ3QgY29tbWl0IHRvIGRpc2sgdW50aWwgZWl0aGVyIGEgbG9nIGJ1ZmZlciBpcworZmlsbGVkIChhIGxvZyBidWZmZXIgY2FuIGhvbGQgbXVsdGlwbGUgdHJhbnNhY3Rpb25zKSBvciBhIHN5bmNocm9ub3VzIG9wZXJhdGlvbgorZm9yY2VzIHRoZSBsb2cgYnVmZmVycyBob2xkaW5nIHRoZSB0cmFuc2FjdGlvbnMgdG8gZGlzay4gVGhpcyBtZWFucyB0aGF0IFhGUyBpcworZG9pbmcgYWdncmVnYXRpb24gb2YgdHJhbnNhY3Rpb25zIGluIG1lbW9yeSAtIGJhdGNoaW5nIHRoZW0sIGlmIHlvdSBsaWtlIC0gdG8KK21pbmltaXNlIHRoZSBpbXBhY3Qgb2YgdGhlIGxvZyBJTyBvbiB0cmFuc2FjdGlvbiB0aHJvdWdocHV0LgorCitUaGUgbGltaXRhdGlvbiBvbiBhc3luY2hyb25vdXMgdHJhbnNhY3Rpb24gdGhyb3VnaHB1dCBpcyB0aGUgbnVtYmVyIGFuZCBzaXplIG9mCitsb2cgYnVmZmVycyBtYWRlIGF2YWlsYWJsZSBieSB0aGUgbG9nIG1hbmFnZXIuIEJ5IGRlZmF1bHQgdGhlcmUgYXJlIDggbG9nCitidWZmZXJzIGF2YWlsYWJsZSBhbmQgdGhlIHNpemUgb2YgZWFjaCBpcyAzMmtCIC0gdGhlIHNpemUgY2FuIGJlIGluY3JlYXNlZCB1cAordG8gMjU2a0IgYnkgdXNlIG9mIGEgbW91bnQgb3B0aW9uLgorCitFZmZlY3RpdmVseSwgdGhpcyBnaXZlcyB1cyB0aGUgbWF4aW11bSBib3VuZCBvZiBvdXRzdGFuZGluZyBtZXRhZGF0YSBjaGFuZ2VzCit0aGF0IGNhbiBiZSBtYWRlIHRvIHRoZSBmaWxlc3lzdGVtIGF0IGFueSBwb2ludCBpbiB0aW1lIC0gaWYgYWxsIHRoZSBsb2cKK2J1ZmZlcnMgYXJlIGZ1bGwgYW5kIHVuZGVyIElPLCB0aGVuIG5vIG1vcmUgdHJhbnNhY3Rpb25zIGNhbiBiZSBjb21taXR0ZWQgdW50aWwKK3RoZSBjdXJyZW50IGJhdGNoIGNvbXBsZXRlcy4gSXQgaXMgbm93IGNvbW1vbiBmb3IgYSBzaW5nbGUgY3VycmVudCBDUFUgY29yZSB0bworYmUgdG8gYWJsZSB0byBpc3N1ZSBlbm91Z2ggdHJhbnNhY3Rpb25zIHRvIGtlZXAgdGhlIGxvZyBidWZmZXJzIGZ1bGwgYW5kIHVuZGVyCitJTyBwZXJtYW5lbnRseS4gSGVuY2UgdGhlIFhGUyBqb3VybmFsbGluZyBzdWJzeXN0ZW0gY2FuIGJlIGNvbnNpZGVyZWQgdG8gYmUgSU8KK2JvdW5kLgorCitEZWxheWVkIExvZ2dpbmc6IENvbmNlcHRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBrZXkgdGhpbmcgdG8gbm90ZSBhYm91dCB0aGUgYXN5bmNocm9ub3VzIGxvZ2dpbmcgY29tYmluZWQgd2l0aCB0aGUKK3JlbG9nZ2luZyB0ZWNobmlxdWUgWEZTIHVzZXMgaXMgdGhhdCB3ZSBjYW4gYmUgcmVsb2dnaW5nIGNoYW5nZWQgb2JqZWN0cworbXVsdGlwbGUgdGltZXMgYmVmb3JlIHRoZXkgYXJlIGNvbW1pdHRlZCB0byBkaXNrIGluIHRoZSBsb2cgYnVmZmVycy4gSWYgd2UKK3JldHVybiB0byB0aGUgcHJldmlvdXMgcmVsb2dnaW5nIGV4YW1wbGUsIGl0IGlzIGVudGlyZWx5IHBvc3NpYmxlIHRoYXQKK3RyYW5zYWN0aW9ucyBBIHRocm91Z2ggRCBhcmUgY29tbWl0dGVkIHRvIGRpc2sgaW4gdGhlIHNhbWUgbG9nIGJ1ZmZlci4KKworVGhhdCBpcywgYSBzaW5nbGUgbG9nIGJ1ZmZlciBtYXkgY29udGFpbiBtdWx0aXBsZSBjb3BpZXMgb2YgdGhlIHNhbWUgb2JqZWN0LAorYnV0IG9ubHkgb25lIG9mIHRob3NlIGNvcGllcyBuZWVkcyB0byBiZSB0aGVyZSAtIHRoZSBsYXN0IG9uZSAiRCIsIGFzIGl0Citjb250YWlucyBhbGwgdGhlIGNoYW5nZXMgZnJvbSB0aGUgcHJldmlvdXMgY2hhbmdlcy4gSW4gb3RoZXIgd29yZHMsIHdlIGhhdmUgb25lCituZWNlc3NhcnkgY29weSBpbiB0aGUgbG9nIGJ1ZmZlciwgYW5kIHRocmVlIHN0YWxlIGNvcGllcyB0aGF0IGFyZSBzaW1wbHkKK3dhc3Rpbmcgc3BhY2UuIFdoZW4gd2UgYXJlIGRvaW5nIHJlcGVhdGVkIG9wZXJhdGlvbnMgb24gdGhlIHNhbWUgc2V0IG9mCitvYmplY3RzLCB0aGVzZSAic3RhbGUgb2JqZWN0cyIgY2FuIGJlIG92ZXIgOTAlIG9mIHRoZSBzcGFjZSB1c2VkIGluIHRoZSBsb2cKK2J1ZmZlcnMuIEl0IGlzIGNsZWFyIHRoYXQgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBzdGFsZSBvYmplY3RzIHdyaXR0ZW4gdG8gdGhlCitsb2cgd291bGQgZ3JlYXRseSByZWR1Y2UgdGhlIGFtb3VudCBvZiBtZXRhZGF0YSB3ZSB3cml0ZSB0byB0aGUgbG9nLCBhbmQgdGhpcworaXMgdGhlIGZ1bmRhbWVudGFsIGdvYWwgb2YgZGVsYXllZCBsb2dnaW5nLgorCitGcm9tIGEgY29uY2VwdHVhbCBwb2ludCBvZiB2aWV3LCBYRlMgaXMgYWxyZWFkeSBkb2luZyByZWxvZ2dpbmcgaW4gbWVtb3J5ICh3aGVyZQorbWVtb3J5ID09IGxvZyBidWZmZXIpLCBvbmx5IGl0IGlzIGRvaW5nIGl0IGV4dHJlbWVseSBpbmVmZmljaWVudGx5LiBJdCBpcyB1c2luZworbG9naWNhbCB0byBwaHlzaWNhbCBmb3JtYXR0aW5nIHRvIGRvIHRoZSByZWxvZ2dpbmcgYmVjYXVzZSB0aGVyZSBpcyBubworaW5mcmFzdHJ1Y3R1cmUgdG8ga2VlcCB0cmFjayBvZiBsb2dpY2FsIGNoYW5nZXMgaW4gbWVtb3J5IHByaW9yIHRvIHBoeXNpY2FsbHkKK2Zvcm1hdHRpbmcgdGhlIGNoYW5nZXMgaW4gYSB0cmFuc2FjdGlvbiB0byB0aGUgbG9nIGJ1ZmZlci4gSGVuY2Ugd2UgY2Fubm90IGF2b2lkCithY2N1bXVsYXRpbmcgc3RhbGUgb2JqZWN0cyBpbiB0aGUgbG9nIGJ1ZmZlcnMuCisKK0RlbGF5ZWQgbG9nZ2luZyBpcyB0aGUgbmFtZSB3ZSd2ZSBnaXZlbiB0byBrZWVwaW5nIGFuZCB0cmFja2luZyB0cmFuc2FjdGlvbmFsCitjaGFuZ2VzIHRvIG9iamVjdHMgaW4gbWVtb3J5IG91dHNpZGUgdGhlIGxvZyBidWZmZXIgaW5mcmFzdHJ1Y3R1cmUuIEJlY2F1c2Ugb2YKK3RoZSByZWxvZ2dpbmcgY29uY2VwdCBmdW5kYW1lbnRhbCB0byB0aGUgWEZTIGpvdXJuYWxsaW5nIHN1YnN5c3RlbSwgdGhpcyBpcworYWN0dWFsbHkgcmVsYXRpdmVseSBlYXN5IHRvIGRvIC0gYWxsIHRoZSBjaGFuZ2VzIHRvIGxvZ2dlZCBpdGVtcyBhcmUgYWxyZWFkeQordHJhY2tlZCBpbiB0aGUgY3VycmVudCBpbmZyYXN0cnVjdHVyZS4gVGhlIGJpZyBwcm9ibGVtIGlzIGhvdyB0byBhY2N1bXVsYXRlCit0aGVtIGFuZCBnZXQgdGhlbSB0byB0aGUgbG9nIGluIGEgY29uc2lzdGVudCwgcmVjb3ZlcmFibGUgbWFubmVyLgorRGVzY3JpYmluZyB0aGUgcHJvYmxlbXMgYW5kIGhvdyB0aGV5IGhhdmUgYmVlbiBzb2x2ZWQgaXMgdGhlIGZvY3VzIG9mIHRoaXMKK2RvY3VtZW50LgorCitPbmUgb2YgdGhlIGtleSBjaGFuZ2VzIHRoYXQgZGVsYXllZCBsb2dnaW5nIG1ha2VzIHRvIHRoZSBvcGVyYXRpb24gb2YgdGhlCitqb3VybmFsbGluZyBzdWJzeXN0ZW0gaXMgdGhhdCBpdCBkaXNhc3NvY2lhdGVzIHRoZSBhbW91bnQgb2Ygb3V0c3RhbmRpbmcKK21ldGFkYXRhIGNoYW5nZXMgZnJvbSB0aGUgc2l6ZSBhbmQgbnVtYmVyIG9mIGxvZyBidWZmZXJzIGF2YWlsYWJsZS4gSW4gb3RoZXIKK3dvcmRzLCBpbnN0ZWFkIG9mIHRoZXJlIG9ubHkgYmVpbmcgYSBtYXhpbXVtIG9mIDJNQiBvZiB0cmFuc2FjdGlvbiBjaGFuZ2VzIG5vdAord3JpdHRlbiB0byB0aGUgbG9nIGF0IGFueSBwb2ludCBpbiB0aW1lLCB0aGVyZSBtYXkgYmUgYSBtdWNoIGdyZWF0ZXIgYW1vdW50CitiZWluZyBhY2N1bXVsYXRlZCBpbiBtZW1vcnkuIEhlbmNlIHRoZSBwb3RlbnRpYWwgZm9yIGxvc3Mgb2YgbWV0YWRhdGEgb24gYQorY3Jhc2ggaXMgbXVjaCBncmVhdGVyIHRoYW4gZm9yIHRoZSBleGlzdGluZyBsb2dnaW5nIG1lY2hhbmlzbS4KKworSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgdGhpcyBkb2VzIG5vdCBjaGFuZ2UgdGhlIGd1YXJhbnRlZSB0aGF0IGxvZyByZWNvdmVyeQord2lsbCByZXN1bHQgaW4gYSBjb25zaXN0ZW50IGZpbGVzeXN0ZW0uIFdoYXQgaXQgZG9lcyBtZWFuIGlzIHRoYXQgYXMgZmFyIGFzIHRoZQorcmVjb3ZlcmVkIGZpbGVzeXN0ZW0gaXMgY29uY2VybmVkLCB0aGVyZSBtYXkgYmUgbWFueSB0aG91c2FuZHMgb2YgdHJhbnNhY3Rpb25zCit0aGF0IHNpbXBseSBkaWQgbm90IG9jY3VyIGFzIGEgcmVzdWx0IG9mIHRoZSBjcmFzaC4gVGhpcyBtYWtlcyBpdCBldmVuIG1vcmUKK2ltcG9ydGFudCB0aGF0IGFwcGxpY2F0aW9ucyB0aGF0IGNhcmUgYWJvdXQgdGhlaXIgZGF0YSB1c2UgZnN5bmMoKSB3aGVyZSB0aGV5CituZWVkIHRvIGVuc3VyZSBhcHBsaWNhdGlvbiBsZXZlbCBkYXRhIGludGVncml0eSBpcyBtYWludGFpbmVkLgorCitJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBkZWxheWVkIGxvZ2dpbmcgaXMgbm90IGFuIGlubm92YXRpdmUgbmV3IGNvbmNlcHQgdGhhdAord2FycmFudHMgcmlnb3JvdXMgcHJvb2ZzIHRvIGRldGVybWluZSB3aGV0aGVyIGl0IGlzIGNvcnJlY3Qgb3Igbm90LiBUaGUgbWV0aG9kCitvZiBhY2N1bXVsYXRpbmcgY2hhbmdlcyBpbiBtZW1vcnkgZm9yIHNvbWUgcGVyaW9kIGJlZm9yZSB3cml0aW5nIHRoZW0gdG8gdGhlCitsb2cgaXMgdXNlZCBlZmZlY3RpdmVseSBpbiBtYW55IGZpbGVzeXN0ZW1zIGluY2x1ZGluZyBleHQzIGFuZCBleHQ0LiBIZW5jZQorbm8gdGltZSBpcyBzcGVudCBpbiB0aGlzIGRvY3VtZW50IHRyeWluZyB0byBjb252aW5jZSB0aGUgcmVhZGVyIHRoYXQgdGhlCitjb25jZXB0IGlzIHNvdW5kLiBJbnN0ZWFkIGl0IGlzIHNpbXBseSBjb25zaWRlcmVkIGEgInNvbHZlZCBwcm9ibGVtIiBhbmQgYXMKK3N1Y2ggaW1wbGVtZW50aW5nIGl0IGluIFhGUyBpcyBwdXJlbHkgYW4gZXhlcmNpc2UgaW4gc29mdHdhcmUgZW5naW5lZXJpbmcuCisKK1RoZSBmdW5kYW1lbnRhbCByZXF1aXJlbWVudHMgZm9yIGRlbGF5ZWQgbG9nZ2luZyBpbiBYRlMgYXJlIHNpbXBsZToKKworCTEuIFJlZHVjZSB0aGUgYW1vdW50IG9mIG1ldGFkYXRhIHdyaXR0ZW4gdG8gdGhlIGxvZyBieSBhdCBsZWFzdAorCSAgIGFuIG9yZGVyIG9mIG1hZ25pdHVkZS4KKwkyLiBTdXBwbHkgc3VmZmljaWVudCBzdGF0aXN0aWNzIHRvIHZhbGlkYXRlIFJlcXVpcmVtZW50ICMxLgorCTMuIFN1cHBseSBzdWZmaWNpZW50IG5ldyB0cmFjaW5nIGluZnJhc3RydWN0dXJlIHRvIGJlIGFibGUgdG8gZGVidWcKKwkgICBwcm9ibGVtcyB3aXRoIHRoZSBuZXcgY29kZS4KKwk0LiBObyBvbi1kaXNrIGZvcm1hdCBjaGFuZ2UgKG1ldGFkYXRhIG9yIGxvZyBmb3JtYXQpLgorCTUuIEVuYWJsZSBhbmQgZGlzYWJsZSB3aXRoIGEgbW91bnQgb3B0aW9uLgorCTYuIE5vIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zIGZvciBzeW5jaHJvbm91cyB0cmFuc2FjdGlvbiB3b3JrbG9hZHMuCisKK0RlbGF5ZWQgTG9nZ2luZzogRGVzaWduCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTdG9yaW5nIENoYW5nZXMKKworVGhlIHByb2JsZW0gd2l0aCBhY2N1bXVsYXRpbmcgY2hhbmdlcyBhdCBhIGxvZ2ljYWwgbGV2ZWwgKGkuZS4ganVzdCB1c2luZyB0aGUKK2V4aXN0aW5nIGxvZyBpdGVtIGRpcnR5IHJlZ2lvbiB0cmFja2luZykgaXMgdGhhdCB3aGVuIGl0IGNvbWVzIHRvIHdyaXRpbmcgdGhlCitjaGFuZ2VzIHRvIHRoZSBsb2cgYnVmZmVycywgd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgb2JqZWN0IHdlIGFyZSBmb3JtYXR0aW5nCitpcyBub3QgY2hhbmdpbmcgd2hpbGUgd2UgZG8gdGhpcy4gVGhpcyByZXF1aXJlcyBsb2NraW5nIHRoZSBvYmplY3QgdG8gcHJldmVudAorY29uY3VycmVudCBtb2RpZmljYXRpb24uIEhlbmNlIGZsdXNoaW5nIHRoZSBsb2dpY2FsIGNoYW5nZXMgdG8gdGhlIGxvZyB3b3VsZAorcmVxdWlyZSB1cyB0byBsb2NrIGV2ZXJ5IG9iamVjdCwgZm9ybWF0IHRoZW0sIGFuZCB0aGVuIHVubG9jayB0aGVtIGFnYWluLgorCitUaGlzIGludHJvZHVjZXMgbG90cyBvZiBzY29wZSBmb3IgZGVhZGxvY2tzIHdpdGggdHJhbnNhY3Rpb25zIHRoYXQgYXJlIGFscmVhZHkKK3J1bm5pbmcuIEZvciBleGFtcGxlLCBhIHRyYW5zYWN0aW9uIGhhcyBvYmplY3QgQSBsb2NrZWQgYW5kIG1vZGlmaWVkLCBidXQgbmVlZHMKK3RoZSBkZWxheWVkIGxvZ2dpbmcgdHJhY2tpbmcgbG9jayB0byBjb21taXQgdGhlIHRyYW5zYWN0aW9uLiBIb3dldmVyLCB0aGUKK2ZsdXNoaW5nIHRocmVhZCBoYXMgdGhlIGRlbGF5ZWQgbG9nZ2luZyB0cmFja2luZyBsb2NrIGFscmVhZHkgaGVsZCwgYW5kIGlzCit0cnlpbmcgdG8gZ2V0IHRoZSBsb2NrIG9uIG9iamVjdCBBIHRvIGZsdXNoIGl0IHRvIHRoZSBsb2cgYnVmZmVyLiBUaGlzIGFwcGVhcnMKK3RvIGJlIGFuIHVuc29sdmFibGUgZGVhZGxvY2sgY29uZGl0aW9uLCBhbmQgaXQgd2FzIHNvbHZpbmcgdGhpcyBwcm9ibGVtIHRoYXQKK3dhcyB0aGUgYmFycmllciB0byBpbXBsZW1lbnRpbmcgZGVsYXllZCBsb2dnaW5nIGZvciBzbyBsb25nLgorCitUaGUgc29sdXRpb24gaXMgcmVsYXRpdmVseSBzaW1wbGUgLSBpdCBqdXN0IHRvb2sgYSBsb25nIHRpbWUgdG8gcmVjb2duaXNlIGl0LgorUHV0IHNpbXBseSwgdGhlIGN1cnJlbnQgbG9nZ2luZyBjb2RlIGZvcm1hdHMgdGhlIGNoYW5nZXMgdG8gZWFjaCBpdGVtIGludG8gYW4KK3ZlY3RvciBhcnJheSB0aGF0IHBvaW50cyB0byB0aGUgY2hhbmdlZCByZWdpb25zIGluIHRoZSBpdGVtLiBUaGUgbG9nIHdyaXRlIGNvZGUKK3NpbXBseSBjb3BpZXMgdGhlIG1lbW9yeSB0aGVzZSB2ZWN0b3JzIHBvaW50IHRvIGludG8gdGhlIGxvZyBidWZmZXIgZHVyaW5nCit0cmFuc2FjdGlvbiBjb21taXQgd2hpbGUgdGhlIGl0ZW0gaXMgbG9ja2VkIGluIHRoZSB0cmFuc2FjdGlvbi4gSW5zdGVhZCBvZgordXNpbmcgdGhlIGxvZyBidWZmZXIgYXMgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBmb3JtYXR0aW5nIGNvZGUsIHdlIGNhbiB1c2UgYW4KK2FsbG9jYXRlZCBtZW1vcnkgYnVmZmVyIGJpZyBlbm91Z2ggdG8gZml0IHRoZSBmb3JtYXR0ZWQgdmVjdG9yLgorCitJZiB3ZSB0aGVuIGNvcHkgdGhlIHZlY3RvciBpbnRvIHRoZSBtZW1vcnkgYnVmZmVyIGFuZCByZXdyaXRlIHRoZSB2ZWN0b3IgdG8KK3BvaW50IHRvIHRoZSBtZW1vcnkgYnVmZmVyIHJhdGhlciB0aGFuIHRoZSBvYmplY3QgaXRzZWxmLCB3ZSBub3cgaGF2ZSBhIGNvcHkgb2YKK3RoZSBjaGFuZ2VzIGluIGEgZm9ybWF0IHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBsb2cgYnVmZmVyIHdyaXRpbmcgY29kZS4KK3RoYXQgZG9lcyBub3QgcmVxdWlyZSB1cyB0byBsb2NrIHRoZSBpdGVtIHRvIGFjY2Vzcy4gVGhpcyBmb3JtYXR0aW5nIGFuZAorcmV3cml0aW5nIGNhbiBhbGwgYmUgZG9uZSB3aGlsZSB0aGUgb2JqZWN0IGlzIGxvY2tlZCBkdXJpbmcgdHJhbnNhY3Rpb24gY29tbWl0LAorcmVzdWx0aW5nIGluIGEgdmVjdG9yIHRoYXQgaXMgdHJhbnNhY3Rpb25hbGx5IGNvbnNpc3RlbnQgYW5kIGNhbiBiZSBhY2Nlc3NlZAord2l0aG91dCBuZWVkaW5nIHRvIGxvY2sgdGhlIG93bmluZyBpdGVtLgorCitIZW5jZSB3ZSBhdm9pZCB0aGUgbmVlZCB0byBsb2NrIGl0ZW1zIHdoZW4gd2UgbmVlZCB0byBmbHVzaCBvdXRzdGFuZGluZworYXN5bmNocm9ub3VzIHRyYW5zYWN0aW9ucyB0byB0aGUgbG9nLiBUaGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgZXhpc3RpbmcKK2Zvcm1hdHRpbmcgbWV0aG9kIGFuZCB0aGUgZGVsYXllZCBsb2dnaW5nIGZvcm1hdHRpbmcgY2FuIGJlIHNlZW4gaW4gdGhlCitkaWFncmFtIGJlbG93LgorCitDdXJyZW50IGZvcm1hdCBsb2cgdmVjdG9yOgorCitPYmplY3QgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK1ZlY3RvciAxICAgICAgKy0tLS0rCitWZWN0b3IgMiAgICAgICAgICAgICAgICAgICAgKy0tLS0rCitWZWN0b3IgMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0rCisKK0FmdGVyIGZvcm1hdHRpbmc6CisKK0xvZyBCdWZmZXIgICAgKy1WMS0rLVYyLSstLS0tVjMtLS0tKworCitEZWxheWVkIGxvZ2dpbmcgdmVjdG9yOgorCitPYmplY3QgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK1ZlY3RvciAxICAgICAgKy0tLS0rCitWZWN0b3IgMiAgICAgICAgICAgICAgICAgICAgKy0tLS0rCitWZWN0b3IgMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0rCisKK0FmdGVyIGZvcm1hdHRpbmc6CisKK01lbW9yeSBCdWZmZXIgKy1WMS0rLVYyLSstLS0tVjMtLS0tKworVmVjdG9yIDEgICAgICArLS0tLSsKK1ZlY3RvciAyICAgICAgICAgICArLS0tLSsKK1ZlY3RvciAzICAgICAgICAgICAgICAgICstLS0tLS0tLS0tKworCitUaGUgbWVtb3J5IGJ1ZmZlciBhbmQgYXNzb2NpYXRlZCB2ZWN0b3IgbmVlZCB0byBiZSBwYXNzZWQgYXMgYSBzaW5nbGUgb2JqZWN0LAorYnV0IHN0aWxsIG5lZWQgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXJlbnQgb2JqZWN0IHNvIGlmIHRoZSBvYmplY3QgaXMKK3JlbG9nZ2VkIHdlIGNhbiByZXBsYWNlIHRoZSBjdXJyZW50IG1lbW9yeSBidWZmZXIgd2l0aCBhIG5ldyBtZW1vcnkgYnVmZmVyIHRoYXQKK2NvbnRhaW5zIHRoZSBsYXRlc3QgY2hhbmdlcy4KKworVGhlIHJlYXNvbiBmb3Iga2VlcGluZyB0aGUgdmVjdG9yIGFyb3VuZCBhZnRlciB3ZSd2ZSBmb3JtYXR0ZWQgdGhlIG1lbW9yeQorYnVmZmVyIGlzIHRvIHN1cHBvcnQgc3BsaXR0aW5nIHZlY3RvcnMgYWNyb3NzIGxvZyBidWZmZXIgYm91bmRhcmllcyBjb3JyZWN0bHkuCitJZiB3ZSBkb24ndCBrZWVwIHRoZSB2ZWN0b3IgYXJvdW5kLCB3ZSBkbyBub3Qga25vdyB3aGVyZSB0aGUgcmVnaW9uIGJvdW5kYXJpZXMKK2FyZSBpbiB0aGUgaXRlbSwgc28gd2UnZCBuZWVkIGEgbmV3IGVuY2Fwc3VsYXRpb24gbWV0aG9kIGZvciByZWdpb25zIGluIHRoZSBsb2cKK2J1ZmZlciB3cml0aW5nIChpLmUuIGRvdWJsZSBlbmNhcHN1bGF0aW9uKS4gVGhpcyB3b3VsZCBiZSBhbiBvbi1kaXNrIGZvcm1hdAorY2hhbmdlIGFuZCBhcyBzdWNoIGlzIG5vdCBkZXNpcmFibGUuICBJdCBhbHNvIG1lYW5zIHdlJ2QgaGF2ZSB0byB3cml0ZSB0aGUgbG9nCityZWdpb24gaGVhZGVycyBpbiB0aGUgZm9ybWF0dGluZyBzdGFnZSwgd2hpY2ggaXMgcHJvYmxlbWF0aWMgYXMgdGhlcmUgaXMgcGVyCityZWdpb24gc3RhdGUgdGhhdCBuZWVkcyB0byBiZSBwbGFjZWQgaW50byB0aGUgaGVhZGVycyBkdXJpbmcgdGhlIGxvZyB3cml0ZS4KKworSGVuY2Ugd2UgbmVlZCB0byBrZWVwIHRoZSB2ZWN0b3IsIGJ1dCBieSBhdHRhY2hpbmcgdGhlIG1lbW9yeSBidWZmZXIgdG8gaXQgYW5kCityZXdyaXRpbmcgdGhlIHZlY3RvciBhZGRyZXNzZXMgdG8gcG9pbnQgYXQgdGhlIG1lbW9yeSBidWZmZXIgd2UgZW5kIHVwIHdpdGggYQorc2VsZi1kZXNjcmliaW5nIG9iamVjdCB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlIGxvZyBidWZmZXIgd3JpdGUgY29kZSB0byBiZQoraGFuZGxlZCBpbiBleGFjdGx5IHRoZSBzYW1lIG1hbm5lciBhcyB0aGUgZXhpc3RpbmcgbG9nIHZlY3RvcnMgYXJlIGhhbmRsZWQuCitIZW5jZSB3ZSBhdm9pZCBuZWVkaW5nIGEgbmV3IG9uLWRpc2sgZm9ybWF0IHRvIGhhbmRsZSBpdGVtcyB0aGF0IGhhdmUgYmVlbgorcmVsb2dnZWQgaW4gbWVtb3J5LgorCisKK1RyYWNraW5nIENoYW5nZXMKKworTm93IHRoYXQgd2UgY2FuIHJlY29yZCB0cmFuc2FjdGlvbmFsIGNoYW5nZXMgaW4gbWVtb3J5IGluIGEgZm9ybSB0aGF0IGFsbG93cwordGhlbSB0byBiZSB1c2VkIHdpdGhvdXQgbGltaXRhdGlvbnMsIHdlIG5lZWQgdG8gYmUgYWJsZSB0byB0cmFjayBhbmQgYWNjdW11bGF0ZQordGhlbSBzbyB0aGF0IHRoZXkgY2FuIGJlIHdyaXR0ZW4gdG8gdGhlIGxvZyBhdCBzb21lIGxhdGVyIHBvaW50IGluIHRpbWUuICBUaGUKK2xvZyBpdGVtIGlzIHRoZSBuYXR1cmFsIHBsYWNlIHRvIHN0b3JlIHRoaXMgdmVjdG9yIGFuZCBidWZmZXIsIGFuZCBhbHNvIG1ha2VzIHNlbnNlCit0byBiZSB0aGUgb2JqZWN0IHRoYXQgaXMgdXNlZCB0byB0cmFjayBjb21taXR0ZWQgb2JqZWN0cyBhcyBpdCB3aWxsIGFsd2F5cworZXhpc3Qgb25jZSB0aGUgb2JqZWN0IGhhcyBiZWVuIGluY2x1ZGVkIGluIGEgdHJhbnNhY3Rpb24uCisKK1RoZSBsb2cgaXRlbSBpcyBhbHJlYWR5IHVzZWQgdG8gdHJhY2sgdGhlIGxvZyBpdGVtcyB0aGF0IGhhdmUgYmVlbiB3cml0dGVuIHRvCit0aGUgbG9nIGJ1dCBub3QgeWV0IHdyaXR0ZW4gdG8gZGlzay4gU3VjaCBsb2cgaXRlbXMgYXJlIGNvbnNpZGVyZWQgImFjdGl2ZSIKK2FuZCBhcyBzdWNoIGFyZSBzdG9yZWQgaW4gdGhlIEFjdGl2ZSBJdGVtIExpc3QgKEFJTCkgd2hpY2ggaXMgYSBMU04tb3JkZXJlZAorZG91YmxlIGxpbmtlZCBsaXN0LiBJdGVtcyBhcmUgaW5zZXJ0ZWQgaW50byB0aGlzIGxpc3QgZHVyaW5nIGxvZyBidWZmZXIgSU8KK2NvbXBsZXRpb24sIGFmdGVyIHdoaWNoIHRoZXkgYXJlIHVucGlubmVkIGFuZCBjYW4gYmUgd3JpdHRlbiB0byBkaXNrLiBBbiBvYmplY3QKK3RoYXQgaXMgaW4gdGhlIEFJTCBjYW4gYmUgcmVsb2dnZWQsIHdoaWNoIGNhdXNlcyB0aGUgb2JqZWN0IHRvIGJlIHBpbm5lZCBhZ2FpbgorYW5kIHRoZW4gbW92ZWQgZm9yd2FyZCBpbiB0aGUgQUlMIHdoZW4gdGhlIGxvZyBidWZmZXIgSU8gY29tcGxldGVzIGZvciB0aGF0Cit0cmFuc2FjdGlvbi4KKworRXNzZW50aWFsbHksIHRoaXMgc2hvd3MgdGhhdCBhbiBpdGVtIHRoYXQgaXMgaW4gdGhlIEFJTCBjYW4gc3RpbGwgYmUgbW9kaWZpZWQKK2FuZCByZWxvZ2dlZCwgc28gYW55IHRyYWNraW5nIG11c3QgYmUgc2VwYXJhdGUgdG8gdGhlIEFJTCBpbmZyYXN0cnVjdHVyZS4gQXMKK3N1Y2gsIHdlIGNhbm5vdCByZXVzZSB0aGUgQUlMIGxpc3QgcG9pbnRlcnMgZm9yIHRyYWNraW5nIGNvbW1pdHRlZCBpdGVtcywgbm9yCitjYW4gd2Ugc3RvcmUgc3RhdGUgaW4gYW55IGZpZWxkIHRoYXQgaXMgcHJvdGVjdGVkIGJ5IHRoZSBBSUwgbG9jay4gSGVuY2UgdGhlCitjb21taXR0ZWQgaXRlbSB0cmFja2luZyBuZWVkcyBpdCdzIG93biBsb2NrcywgbGlzdHMgYW5kIHN0YXRlIGZpZWxkcyBpbiB0aGUgbG9nCitpdGVtLgorCitTaW1pbGFyIHRvIHRoZSBBSUwsIHRyYWNraW5nIG9mIGNvbW1pdHRlZCBpdGVtcyBpcyBkb25lIHRocm91Z2ggYSBuZXcgbGlzdAorY2FsbGVkIHRoZSBDb21taXR0ZWQgSXRlbSBMaXN0IChDSUwpLiAgVGhlIGxpc3QgdHJhY2tzIGxvZyBpdGVtcyB0aGF0IGhhdmUgYmVlbgorY29tbWl0dGVkIGFuZCBoYXZlIGZvcm1hdHRlZCBtZW1vcnkgYnVmZmVycyBhdHRhY2hlZCB0byB0aGVtLiBJdCB0cmFja3Mgb2JqZWN0cworaW4gdHJhbnNhY3Rpb24gY29tbWl0IG9yZGVyLCBzbyB3aGVuIGFuIG9iamVjdCBpcyByZWxvZ2dlZCBpdCBpcyByZW1vdmVkIGZyb20KK2l0J3MgcGxhY2UgaW4gdGhlIGxpc3QgYW5kIHJlLWluc2VydGVkIGF0IHRoZSB0YWlsLiBUaGlzIGlzIGVudGlyZWx5IGFyYml0cmFyeQorYW5kIGRvbmUgdG8gbWFrZSBpdCBlYXN5IGZvciBkZWJ1Z2dpbmcgLSB0aGUgbGFzdCBpdGVtcyBpbiB0aGUgbGlzdCBhcmUgdGhlCitvbmVzIHRoYXQgYXJlIG1vc3QgcmVjZW50bHkgbW9kaWZpZWQuIE9yZGVyaW5nIG9mIHRoZSBDSUwgaXMgbm90IG5lY2Vzc2FyeSBmb3IKK3RyYW5zYWN0aW9uYWwgaW50ZWdyaXR5IChhcyBkaXNjdXNzZWQgaW4gdGhlIG5leHQgc2VjdGlvbikgc28gdGhlIG9yZGVyaW5nIGlzCitkb25lIGZvciBjb252ZW5pZW5jZS9zYW5pdHkgb2YgdGhlIGRldmVsb3BlcnMuCisKKworRGVsYXllZCBMb2dnaW5nOiBDaGVja3BvaW50cworCitXaGVuIHdlIGhhdmUgYSBsb2cgc3luY2hyb25pc2F0aW9uIGV2ZW50LCBjb21tb25seSBrbm93biBhcyBhICJsb2cgZm9yY2UiLAorYWxsIHRoZSBpdGVtcyBpbiB0aGUgQ0lMIG11c3QgYmUgd3JpdHRlbiBpbnRvIHRoZSBsb2cgdmlhIHRoZSBsb2cgYnVmZmVycy4KK1dlIG5lZWQgdG8gd3JpdGUgdGhlc2UgaXRlbXMgaW4gdGhlIG9yZGVyIHRoYXQgdGhleSBleGlzdCBpbiB0aGUgQ0lMLCBhbmQgdGhleQorbmVlZCB0byBiZSB3cml0dGVuIGFzIGFuIGF0b21pYyB0cmFuc2FjdGlvbi4gVGhlIG5lZWQgZm9yIGFsbCB0aGUgb2JqZWN0cyB0byBiZQord3JpdHRlbiBhcyBhbiBhdG9taWMgdHJhbnNhY3Rpb24gY29tZXMgZnJvbSB0aGUgcmVxdWlyZW1lbnRzIG9mIHJlbG9nZ2luZyBhbmQKK2xvZyByZXBsYXkgLSBhbGwgdGhlIGNoYW5nZXMgaW4gYWxsIHRoZSBvYmplY3RzIGluIGEgZ2l2ZW4gdHJhbnNhY3Rpb24gbXVzdAorZWl0aGVyIGJlIGNvbXBsZXRlbHkgcmVwbGF5ZWQgZHVyaW5nIGxvZyByZWNvdmVyeSwgb3Igbm90IHJlcGxheWVkIGF0IGFsbC4gSWYKK2EgdHJhbnNhY3Rpb24gaXMgbm90IHJlcGxheWVkIGJlY2F1c2UgaXQgaXMgbm90IGNvbXBsZXRlIGluIHRoZSBsb2csIHRoZW4KK25vIGxhdGVyIHRyYW5zYWN0aW9ucyBzaG91bGQgYmUgcmVwbGF5ZWQsIGVpdGhlci4KKworVG8gZnVsZmlsbCB0aGlzIHJlcXVpcmVtZW50LCB3ZSBuZWVkIHRvIHdyaXRlIHRoZSBlbnRpcmUgQ0lMIGluIGEgc2luZ2xlIGxvZwordHJhbnNhY3Rpb24uIEZvcnR1bmF0ZWx5LCB0aGUgWEZTIGxvZyBjb2RlIGhhcyBubyBmaXhlZCBsaW1pdCBvbiB0aGUgc2l6ZSBvZiBhCit0cmFuc2FjdGlvbiwgbm9yIGRvZXMgdGhlIGxvZyByZXBsYXkgY29kZS4gVGhlIG9ubHkgZnVuZGFtZW50YWwgbGltaXQgaXMgdGhhdAordGhlIHRyYW5zYWN0aW9uIGNhbm5vdCBiZSBsYXJnZXIgdGhhbiBqdXN0IHVuZGVyIGhhbGYgdGhlIHNpemUgb2YgdGhlIGxvZy4gIFRoZQorcmVhc29uIGZvciB0aGlzIGxpbWl0IGlzIHRoYXQgdG8gZmluZCB0aGUgaGVhZCBhbmQgdGFpbCBvZiB0aGUgbG9nLCB0aGVyZSBtdXN0CitiZSBhdCBsZWFzdCBvbmUgY29tcGxldGUgdHJhbnNhY3Rpb24gaW4gdGhlIGxvZyBhdCBhbnkgZ2l2ZW4gdGltZS4gSWYgYQordHJhbnNhY3Rpb24gaXMgbGFyZ2VyIHRoYW4gaGFsZiB0aGUgbG9nLCB0aGVuIHRoZXJlIGlzIHRoZSBwb3NzaWJpbGl0eSB0aGF0IGEKK2NyYXNoIGR1cmluZyB0aGUgd3JpdGUgb2YgYSBzdWNoIGEgdHJhbnNhY3Rpb24gY291bGQgcGFydGlhbGx5IG92ZXJ3cml0ZSB0aGUKK29ubHkgY29tcGxldGUgcHJldmlvdXMgdHJhbnNhY3Rpb24gaW4gdGhlIGxvZy4gVGhpcyB3aWxsIHJlc3VsdCBpbiBhIHJlY292ZXJ5CitmYWlsdXJlIGFuZCBhbiBpbmNvbnNpc3RlbnQgZmlsZXN5c3RlbSBhbmQgaGVuY2Ugd2UgbXVzdCBlbmZvcmNlIHRoZSBtYXhpbXVtCitzaXplIG9mIGEgY2hlY2twb2ludCB0byBiZSBzbGlnaHRseSBsZXNzIHRoYW4gYSBoYWxmIHRoZSBsb2cuCisKK0FwYXJ0IGZyb20gdGhpcyBzaXplIHJlcXVpcmVtZW50LCBhIGNoZWNrcG9pbnQgdHJhbnNhY3Rpb24gbG9va3Mgbm8gZGlmZmVyZW50Cit0byBhbnkgb3RoZXIgdHJhbnNhY3Rpb24gLSBpdCBjb250YWlucyBhIHRyYW5zYWN0aW9uIGhlYWRlciwgYSBzZXJpZXMgb2YKK2Zvcm1hdHRlZCBsb2cgaXRlbXMgYW5kIGEgY29tbWl0IHJlY29yZCBhdCB0aGUgdGFpbC4gRnJvbSBhIHJlY292ZXJ5CitwZXJzcGVjdGl2ZSwgdGhlIGNoZWNrcG9pbnQgdHJhbnNhY3Rpb24gaXMgYWxzbyBubyBkaWZmZXJlbnQgLSBqdXN0IGEgbG90CitiaWdnZXIgd2l0aCBhIGxvdCBtb3JlIGl0ZW1zIGluIGl0LiBUaGUgd29yc3QgY2FzZSBlZmZlY3Qgb2YgdGhpcyBpcyB0aGF0IHdlCittaWdodCBuZWVkIHRvIHR1bmUgdGhlIHJlY292ZXJ5IHRyYW5zYWN0aW9uIG9iamVjdCBoYXNoIHNpemUuCisKK0JlY2F1c2UgdGhlIGNoZWNrcG9pbnQgaXMganVzdCBhbm90aGVyIHRyYW5zYWN0aW9uIGFuZCBhbGwgdGhlIGNoYW5nZXMgdG8gbG9nCitpdGVtcyBhcmUgc3RvcmVkIGFzIGxvZyB2ZWN0b3JzLCB3ZSBjYW4gdXNlIHRoZSBleGlzdGluZyBsb2cgYnVmZmVyIHdyaXRpbmcKK2NvZGUgdG8gd3JpdGUgdGhlIGNoYW5nZXMgaW50byB0aGUgbG9nLiBUbyBkbyB0aGlzIGVmZmljaWVudGx5LCB3ZSBuZWVkIHRvCittaW5pbWlzZSB0aGUgdGltZSB3ZSBob2xkIHRoZSBDSUwgbG9ja2VkIHdoaWxlIHdyaXRpbmcgdGhlIGNoZWNrcG9pbnQKK3RyYW5zYWN0aW9uLiBUaGUgY3VycmVudCBsb2cgd3JpdGUgY29kZSBlbmFibGVzIHVzIHRvIGRvIHRoaXMgZWFzaWx5IHdpdGggdGhlCit3YXkgaXQgc2VwYXJhdGVzIHRoZSB3cml0aW5nIG9mIHRoZSB0cmFuc2FjdGlvbiBjb250ZW50cyAodGhlIGxvZyB2ZWN0b3JzKSBmcm9tCit0aGUgdHJhbnNhY3Rpb24gY29tbWl0IHJlY29yZCwgYnV0IHRyYWNraW5nIHRoaXMgcmVxdWlyZXMgdXMgdG8gaGF2ZSBhCitwZXItY2hlY2twb2ludCBjb250ZXh0IHRoYXQgdHJhdmVscyB0aHJvdWdoIHRoZSBsb2cgd3JpdGUgcHJvY2VzcyB0aHJvdWdoIHRvCitjaGVja3BvaW50IGNvbXBsZXRpb24uCisKK0hlbmNlIGEgY2hlY2twb2ludCBoYXMgYSBjb250ZXh0IHRoYXQgdHJhY2tzIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudAorY2hlY2twb2ludCBmcm9tIGluaXRpYXRpb24gdG8gY2hlY2twb2ludCBjb21wbGV0aW9uLiBBIG5ldyBjb250ZXh0IGlzIGluaXRpYXRlZAorYXQgdGhlIHNhbWUgdGltZSBhIGNoZWNrcG9pbnQgdHJhbnNhY3Rpb24gaXMgc3RhcnRlZC4gVGhhdCBpcywgd2hlbiB3ZSByZW1vdmUKK2FsbCB0aGUgY3VycmVudCBpdGVtcyBmcm9tIHRoZSBDSUwgZHVyaW5nIGEgY2hlY2twb2ludCBvcGVyYXRpb24sIHdlIG1vdmUgYWxsCit0aG9zZSBjaGFuZ2VzIGludG8gdGhlIGN1cnJlbnQgY2hlY2twb2ludCBjb250ZXh0LiBXZSB0aGVuIGluaXRpYWxpc2UgYSBuZXcKK2NvbnRleHQgYW5kIGF0dGFjaCB0aGF0IHRvIHRoZSBDSUwgZm9yIGFnZ3JlZ2F0aW9uIG9mIG5ldyB0cmFuc2FjdGlvbnMuCisKK1RoaXMgYWxsb3dzIHVzIHRvIHVubG9jayB0aGUgQ0lMIGltbWVkaWF0ZWx5IGFmdGVyIHRyYW5zZmVyIG9mIGFsbCB0aGUKK2NvbW1pdHRlZCBpdGVtcyBhbmQgZWZmZWN0aXZlbHkgYWxsb3cgbmV3IHRyYW5zYWN0aW9ucyB0byBiZSBpc3N1ZWQgd2hpbGUgd2UKK2FyZSBmb3JtYXR0aW5nIHRoZSBjaGVja3BvaW50IGludG8gdGhlIGxvZy4gSXQgYWxzbyBhbGxvd3MgY29uY3VycmVudAorY2hlY2twb2ludHMgdG8gYmUgd3JpdHRlbiBpbnRvIHRoZSBsb2cgYnVmZmVycyBpbiB0aGUgY2FzZSBvZiBsb2cgZm9yY2UgaGVhdnkKK3dvcmtsb2FkcywganVzdCBsaWtlIHRoZSBleGlzdGluZyB0cmFuc2FjdGlvbiBjb21taXQgY29kZSBkb2VzLiBUaGlzLCBob3dldmVyLAorcmVxdWlyZXMgdGhhdCB3ZSBzdHJpY3RseSBvcmRlciB0aGUgY29tbWl0IHJlY29yZHMgaW4gdGhlIGxvZyBzbyB0aGF0CitjaGVja3BvaW50IHNlcXVlbmNlIG9yZGVyIGlzIG1haW50YWluZWQgZHVyaW5nIGxvZyByZXBsYXkuCisKK1RvIGVuc3VyZSB0aGF0IHdlIGNhbiBiZSB3cml0aW5nIGFuIGl0ZW0gaW50byBhIGNoZWNrcG9pbnQgdHJhbnNhY3Rpb24gYXQKK3RoZSBzYW1lIHRpbWUgYW5vdGhlciB0cmFuc2FjdGlvbiBtb2RpZmllcyB0aGUgaXRlbSBhbmQgaW5zZXJ0cyB0aGUgbG9nIGl0ZW0KK2ludG8gdGhlIG5ldyBDSUwsIHRoZW4gY2hlY2twb2ludCB0cmFuc2FjdGlvbiBjb21taXQgY29kZSBjYW5ub3QgdXNlIGxvZyBpdGVtcwordG8gc3RvcmUgdGhlIGxpc3Qgb2YgbG9nIHZlY3RvcnMgdGhhdCBuZWVkIHRvIGJlIHdyaXR0ZW4gaW50byB0aGUgdHJhbnNhY3Rpb24uCitIZW5jZSBsb2cgdmVjdG9ycyBuZWVkIHRvIGJlIGFibGUgdG8gYmUgY2hhaW5lZCB0b2dldGhlciB0byBhbGxvdyB0aGVtIHRvIGJlCitkZXRhY2hlZCBmcm9tIHRoZSBsb2cgaXRlbXMuIFRoYXQgaXMsIHdoZW4gdGhlIENJTCBpcyBmbHVzaGVkIHRoZSBtZW1vcnkKK2J1ZmZlciBhbmQgbG9nIHZlY3RvciBhdHRhY2hlZCB0byBlYWNoIGxvZyBpdGVtIG5lZWRzIHRvIGJlIGF0dGFjaGVkIHRvIHRoZQorY2hlY2twb2ludCBjb250ZXh0IHNvIHRoYXQgdGhlIGxvZyBpdGVtIGNhbiBiZSByZWxlYXNlZC4gSW4gZGlhZ3JhbW1hdGljIGZvcm0sCit0aGUgQ0lMIHdvdWxkIGxvb2sgbGlrZSB0aGlzIGJlZm9yZSB0aGUgZmx1c2g6CisKKwlDSUwgSGVhZAorCSAgIHwKKwkgICBWCisJTG9nIEl0ZW0gPC0+IGxvZyB2ZWN0b3IgMQktPiBtZW1vcnkgYnVmZmVyCisJICAgfAkJCQktPiB2ZWN0b3IgYXJyYXkKKwkgICBWCisJTG9nIEl0ZW0gPC0+IGxvZyB2ZWN0b3IgMgktPiBtZW1vcnkgYnVmZmVyCisJICAgfAkJCQktPiB2ZWN0b3IgYXJyYXkKKwkgICBWCisJLi4uLi4uCisJICAgfAorCSAgIFYKKwlMb2cgSXRlbSA8LT4gbG9nIHZlY3RvciBOLTEJLT4gbWVtb3J5IGJ1ZmZlcgorCSAgIHwJCQkJLT4gdmVjdG9yIGFycmF5CisJICAgVgorCUxvZyBJdGVtIDwtPiBsb2cgdmVjdG9yIE4JLT4gbWVtb3J5IGJ1ZmZlcgorCQkJCQktPiB2ZWN0b3IgYXJyYXkKKworQW5kIGFmdGVyIHRoZSBmbHVzaCB0aGUgQ0lMIGhlYWQgaXMgZW1wdHksIGFuZCB0aGUgY2hlY2twb2ludCBjb250ZXh0IGxvZwordmVjdG9yIGxpc3Qgd291bGQgbG9vayBsaWtlOgorCisJQ2hlY2twb2ludCBDb250ZXh0CisJICAgfAorCSAgIFYKKwlsb2cgdmVjdG9yIDEJLT4gbWVtb3J5IGJ1ZmZlcgorCSAgIHwJCS0+IHZlY3RvciBhcnJheQorCSAgIHwJCS0+IExvZyBJdGVtCisJICAgVgorCWxvZyB2ZWN0b3IgMgktPiBtZW1vcnkgYnVmZmVyCisJICAgfAkJLT4gdmVjdG9yIGFycmF5CisJICAgfAkJLT4gTG9nIEl0ZW0KKwkgICBWCisJLi4uLi4uCisJICAgfAorCSAgIFYKKwlsb2cgdmVjdG9yIE4tMQktPiBtZW1vcnkgYnVmZmVyCisJICAgfAkJLT4gdmVjdG9yIGFycmF5CisJICAgfAkJLT4gTG9nIEl0ZW0KKwkgICBWCisJbG9nIHZlY3RvciBOCS0+IG1lbW9yeSBidWZmZXIKKwkJCS0+IHZlY3RvciBhcnJheQorCQkJLT4gTG9nIEl0ZW0KKworT25jZSB0aGlzIHRyYW5zZmVyIGlzIGRvbmUsIHRoZSBDSUwgY2FuIGJlIHVubG9ja2VkIGFuZCBuZXcgdHJhbnNhY3Rpb25zIGNhbgorc3RhcnQsIHdoaWxlIHRoZSBjaGVja3BvaW50IGZsdXNoIGNvZGUgd29ya3Mgb3ZlciB0aGUgbG9nIHZlY3RvciBjaGFpbiB0bworY29tbWl0IHRoZSBjaGVja3BvaW50LgorCitPbmNlIHRoZSBjaGVja3BvaW50IGlzIHdyaXR0ZW4gaW50byB0aGUgbG9nIGJ1ZmZlcnMsIHRoZSBjaGVja3BvaW50IGNvbnRleHQgaXMKK2F0dGFjaGVkIHRvIHRoZSBsb2cgYnVmZmVyIHRoYXQgdGhlIGNvbW1pdCByZWNvcmQgd2FzIHdyaXR0ZW4gdG8gYWxvbmcgd2l0aCBhCitjb21wbGV0aW9uIGNhbGxiYWNrLiBMb2cgSU8gY29tcGxldGlvbiB3aWxsIGNhbGwgdGhhdCBjYWxsYmFjaywgd2hpY2ggY2FuIHRoZW4KK3J1biB0cmFuc2FjdGlvbiBjb21taXR0ZWQgcHJvY2Vzc2luZyBmb3IgdGhlIGxvZyBpdGVtcyAoaS5lLiBpbnNlcnQgaW50byBBSUwKK2FuZCB1bnBpbikgaW4gdGhlIGxvZyB2ZWN0b3IgY2hhaW4gYW5kIHRoZW4gZnJlZSB0aGUgbG9nIHZlY3RvciBjaGFpbiBhbmQKK2NoZWNrcG9pbnQgY29udGV4dC4KKworRGlzY3Vzc2lvbiBQb2ludDogSSBhbSB1bmNlcnRhaW4gYXMgdG8gd2hldGhlciB0aGUgbG9nIGl0ZW0gaXMgdGhlIG1vc3QKK2VmZmljaWVudCB3YXkgdG8gdHJhY2sgdmVjdG9ycywgZXZlbiB0aG91Z2ggaXQgc2VlbXMgbGlrZSB0aGUgbmF0dXJhbCB3YXkgdG8gZG8KK2l0LiBUaGUgZmFjdCB0aGF0IHdlIHdhbGsgdGhlIGxvZyBpdGVtcyAoaW4gdGhlIENJTCkganVzdCB0byBjaGFpbiB0aGUgbG9nCit2ZWN0b3JzIGFuZCBicmVhayB0aGUgbGluayBiZXR3ZWVuIHRoZSBsb2cgaXRlbSBhbmQgdGhlIGxvZyB2ZWN0b3IgbWVhbnMgdGhhdAord2UgdGFrZSBhIGNhY2hlIGxpbmUgaGl0IGZvciB0aGUgbG9nIGl0ZW0gbGlzdCBtb2RpZmljYXRpb24sIHRoZW4gYW5vdGhlciBmb3IKK3RoZSBsb2cgdmVjdG9yIGNoYWluaW5nLiBJZiB3ZSB0cmFjayBieSB0aGUgbG9nIHZlY3RvcnMsIHRoZW4gd2Ugb25seSBuZWVkIHRvCiticmVhayB0aGUgbGluayBiZXR3ZWVuIHRoZSBsb2cgaXRlbSBhbmQgdGhlIGxvZyB2ZWN0b3IsIHdoaWNoIG1lYW5zIHdlIHNob3VsZAorZGlydHkgb25seSB0aGUgbG9nIGl0ZW0gY2FjaGVsaW5lcy4gTm9ybWFsbHkgSSB3b3VsZG4ndCBiZSBjb25jZXJuZWQgYWJvdXQgb25lCit2cyB0d28gZGlydHkgY2FjaGVsaW5lcyBleGNlcHQgZm9yIHRoZSBmYWN0IEkndmUgc2VlbiB1cHdhcmRzIG9mIDgwLDAwMCBsb2cKK3ZlY3RvcnMgaW4gb25lIGNoZWNrcG9pbnQgdHJhbnNhY3Rpb24uIEknZCBndWVzcyB0aGlzIGlzIGEgIm1lYXN1cmUgYW5kCitjb21wYXJlIiBzaXR1YXRpb24gdGhhdCBjYW4gYmUgZG9uZSBhZnRlciBhIHdvcmtpbmcgYW5kIHJldmlld2VkIGltcGxlbWVudGF0aW9uCitpcyBpbiB0aGUgZGV2IHRyZWUuLi4uCisKK0RlbGF5ZWQgTG9nZ2luZzogQ2hlY2twb2ludCBTZXF1ZW5jaW5nCisKK09uZSBvZiB0aGUga2V5IGFzcGVjdHMgb2YgdGhlIFhGUyB0cmFuc2FjdGlvbiBzdWJzeXN0ZW0gaXMgdGhhdCBpdCB0YWdzCitjb21taXR0ZWQgdHJhbnNhY3Rpb25zIHdpdGggdGhlIGxvZyBzZXF1ZW5jZSBudW1iZXIgb2YgdGhlIHRyYW5zYWN0aW9uIGNvbW1pdC4KK1RoaXMgYWxsb3dzIHRyYW5zYWN0aW9ucyB0byBiZSBpc3N1ZWQgYXN5bmNocm9ub3VzbHkgZXZlbiB0aG91Z2ggdGhlcmUgbWF5IGJlCitmdXR1cmUgb3BlcmF0aW9ucyB0aGF0IGNhbm5vdCBiZSBjb21wbGV0ZWQgdW50aWwgdGhhdCB0cmFuc2FjdGlvbiBpcyBmdWxseQorY29tbWl0dGVkIHRvIHRoZSBsb2cuIEluIHRoZSByYXJlIGNhc2UgdGhhdCBhIGRlcGVuZGVudCBvcGVyYXRpb24gb2NjdXJzIChlLmcuCityZS11c2luZyBhIGZyZWVkIG1ldGFkYXRhIGV4dGVudCBmb3IgYSBkYXRhIGV4dGVudCksIGEgc3BlY2lhbCwgb3B0aW1pc2VkIGxvZworZm9yY2UgY2FuIGJlIGlzc3VlZCB0byBmb3JjZSB0aGUgZGVwZW5kZW50IHRyYW5zYWN0aW9uIHRvIGRpc2sgaW1tZWRpYXRlbHkuCisKK1RvIGRvIHRoaXMsIHRyYW5zYWN0aW9ucyBuZWVkIHRvIHJlY29yZCB0aGUgTFNOIG9mIHRoZSBjb21taXQgcmVjb3JkIG9mIHRoZQordHJhbnNhY3Rpb24uIFRoaXMgTFNOIGNvbWVzIGRpcmVjdGx5IGZyb20gdGhlIGxvZyBidWZmZXIgdGhlIHRyYW5zYWN0aW9uIGlzCit3cml0dGVuIGludG8uIFdoaWxlIHRoaXMgd29ya3MganVzdCBmaW5lIGZvciB0aGUgZXhpc3RpbmcgdHJhbnNhY3Rpb24KK21lY2hhbmlzbSwgaXQgZG9lcyBub3Qgd29yayBmb3IgZGVsYXllZCBsb2dnaW5nIGJlY2F1c2UgdHJhbnNhY3Rpb25zIGFyZSBub3QKK3dyaXR0ZW4gZGlyZWN0bHkgaW50byB0aGUgbG9nIGJ1ZmZlcnMuIEhlbmNlIHNvbWUgb3RoZXIgbWV0aG9kIG9mIHNlcXVlbmNpbmcKK3RyYW5zYWN0aW9ucyBpcyByZXF1aXJlZC4KKworQXMgZGlzY3Vzc2VkIGluIHRoZSBjaGVja3BvaW50IHNlY3Rpb24sIGRlbGF5ZWQgbG9nZ2luZyB1c2VzIHBlci1jaGVja3BvaW50Citjb250ZXh0cywgYW5kIGFzIHN1Y2ggaXQgaXMgc2ltcGxlIHRvIGFzc2lnbiBhIHNlcXVlbmNlIG51bWJlciB0byBlYWNoCitjaGVja3BvaW50LiBCZWNhdXNlIHRoZSBzd2l0Y2hpbmcgb2YgY2hlY2twb2ludCBjb250ZXh0cyBtdXN0IGJlIGRvbmUKK2F0b21pY2FsbHksIGl0IGlzIHNpbXBsZSB0byBlbnN1cmUgdGhhdCBlYWNoIG5ldyBjb250ZXh0IGhhcyBhIG1vbm90b25pY2FsbHkKK2luY3JlYXNpbmcgc2VxdWVuY2UgbnVtYmVyIGFzc2lnbmVkIHRvIGl0IHdpdGhvdXQgdGhlIG5lZWQgZm9yIGFuIGV4dGVybmFsCithdG9taWMgY291bnRlciAtIHdlIGNhbiBqdXN0IHRha2UgdGhlIGN1cnJlbnQgY29udGV4dCBzZXF1ZW5jZSBudW1iZXIgYW5kIGFkZAorb25lIHRvIGl0IGZvciB0aGUgbmV3IGNvbnRleHQuCisKK1RoZW4sIGluc3RlYWQgb2YgYXNzaWduaW5nIGEgbG9nIGJ1ZmZlciBMU04gdG8gdGhlIHRyYW5zYWN0aW9uIGNvbW1pdCBMU04KK2R1cmluZyB0aGUgY29tbWl0LCB3ZSBjYW4gYXNzaWduIHRoZSBjdXJyZW50IGNoZWNrcG9pbnQgc2VxdWVuY2UuIFRoaXMgYWxsb3dzCitvcGVyYXRpb25zIHRoYXQgdHJhY2sgdHJhbnNhY3Rpb25zIHRoYXQgaGF2ZSBub3QgeWV0IGNvbXBsZXRlZCBrbm93IHdoYXQKK2NoZWNrcG9pbnQgc2VxdWVuY2UgbmVlZHMgdG8gYmUgY29tbWl0dGVkIGJlZm9yZSB0aGV5IGNhbiBjb250aW51ZS4gQXMgYQorcmVzdWx0LCB0aGUgY29kZSB0aGF0IGZvcmNlcyB0aGUgbG9nIHRvIGEgc3BlY2lmaWMgTFNOIG5vdyBuZWVkcyB0byBlbnN1cmUgdGhhdAordGhlIGxvZyBmb3JjZXMgdG8gYSBzcGVjaWZpYyBjaGVja3BvaW50LgorCitUbyBlbnN1cmUgdGhhdCB3ZSBjYW4gZG8gdGhpcywgd2UgbmVlZCB0byB0cmFjayBhbGwgdGhlIGNoZWNrcG9pbnQgY29udGV4dHMKK3RoYXQgYXJlIGN1cnJlbnRseSBjb21taXR0aW5nIHRvIHRoZSBsb2cuIFdoZW4gd2UgZmx1c2ggYSBjaGVja3BvaW50LCB0aGUKK2NvbnRleHQgZ2V0cyBhZGRlZCB0byBhICJjb21taXR0aW5nIiBsaXN0IHdoaWNoIGNhbiBiZSBzZWFyY2hlZC4gV2hlbiBhCitjaGVja3BvaW50IGNvbW1pdCBjb21wbGV0ZXMsIGl0IGlzIHJlbW92ZWQgZnJvbSB0aGUgY29tbWl0dGluZyBsaXN0LiBCZWNhdXNlCit0aGUgY2hlY2twb2ludCBjb250ZXh0IHJlY29yZHMgdGhlIExTTiBvZiB0aGUgY29tbWl0IHJlY29yZCBmb3IgdGhlIGNoZWNrcG9pbnQsCit3ZSBjYW4gYWxzbyB3YWl0IG9uIHRoZSBsb2cgYnVmZmVyIHRoYXQgY29udGFpbnMgdGhlIGNvbW1pdCByZWNvcmQsIHRoZXJlYnkKK3VzaW5nIHRoZSBleGlzdGluZyBsb2cgZm9yY2UgbWVjaGFuaXNtcyB0byBleGVjdXRlIHN5bmNocm9ub3VzIGZvcmNlcy4KKworSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgdGhlIHN5bmNocm9ub3VzIGZvcmNlcyBtYXkgbmVlZCB0byBiZSBleHRlbmRlZCB3aXRoCittaXRpZ2F0aW9uIGFsZ29yaXRobXMgc2ltaWxhciB0byB0aGUgY3VycmVudCBsb2cgYnVmZmVyIGNvZGUgdG8gYWxsb3cKK2FnZ3JlZ2F0aW9uIG9mIG11bHRpcGxlIHN5bmNocm9ub3VzIHRyYW5zYWN0aW9ucyBpZiB0aGVyZSBhcmUgYWxyZWFkeQorc3luY2hyb25vdXMgdHJhbnNhY3Rpb25zIGJlaW5nIGZsdXNoZWQuIEludmVzdGlnYXRpb24gb2YgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZQorY3VycmVudCBkZXNpZ24gaXMgbmVlZGVkIGJlZm9yZSBtYWtpbmcgYW55IGRlY2lzaW9ucyBoZXJlLgorCitUaGUgbWFpbiBjb25jZXJuIHdpdGggbG9nIGZvcmNlcyBpcyB0byBlbnN1cmUgdGhhdCBhbGwgdGhlIHByZXZpb3VzIGNoZWNrcG9pbnRzCithcmUgYWxzbyBjb21taXR0ZWQgdG8gZGlzayBiZWZvcmUgdGhlIG9uZSB3ZSBuZWVkIHRvIHdhaXQgZm9yLiBUaGVyZWZvcmUgd2UKK25lZWQgdG8gY2hlY2sgdGhhdCBhbGwgdGhlIHByaW9yIGNvbnRleHRzIGluIHRoZSBjb21taXR0aW5nIGxpc3QgYXJlIGFsc28KK2NvbXBsZXRlIGJlZm9yZSB3YWl0aW5nIG9uIHRoZSBvbmUgd2UgbmVlZCB0byBjb21wbGV0ZS4gV2UgZG8gdGhpcworc3luY2hyb25pc2F0aW9uIGluIHRoZSBsb2cgZm9yY2UgY29kZSBzbyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gd2FpdCBhbnl3aGVyZQorZWxzZSBmb3Igc3VjaCBzZXJpYWxpc2F0aW9uIC0gaXQgb25seSBtYXR0ZXJzIHdoZW4gd2UgZG8gYSBsb2cgZm9yY2UuCisKK1RoZSBvbmx5IHJlbWFpbmluZyBjb21wbGV4aXR5IGlzIHRoYXQgYSBsb2cgZm9yY2Ugbm93IGFsc28gaGFzIHRvIGhhbmRsZSB0aGUKK2Nhc2Ugd2hlcmUgdGhlIGZvcmNpbmcgc2VxdWVuY2UgbnVtYmVyIGlzIHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IGNvbnRleHQuIFRoYXQKK2lzLCB3ZSBuZWVkIHRvIGZsdXNoIHRoZSBDSUwgYW5kIHBvdGVudGlhbGx5IHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlLiBUaGlzIGlzIGEKK3NpbXBsZSBhZGRpdGlvbiB0byB0aGUgZXhpc3RpbmcgbG9nIGZvcmNpbmcgY29kZSB0byBjaGVjayB0aGUgc2VxdWVuY2UgbnVtYmVycworYW5kIHB1c2ggaWYgcmVxdWlyZWQuIEluZGVlZCwgcGxhY2luZyB0aGUgY3VycmVudCBzZXF1ZW5jZSBjaGVja3BvaW50IGZsdXNoIGluCit0aGUgbG9nIGZvcmNlIGNvZGUgZW5hYmxlcyB0aGUgY3VycmVudCBtZWNoYW5pc20gZm9yIGlzc3Vpbmcgc3luY2hyb25vdXMKK3RyYW5zYWN0aW9ucyB0byByZW1haW4gdW50b3VjaGVkIChpLmUuIGNvbW1pdCBhbiBhc3luY2hyb25vdXMgdHJhbnNhY3Rpb24sIHRoZW4KK2ZvcmNlIHRoZSBsb2cgYXQgdGhlIExTTiBvZiB0aGF0IHRyYW5zYWN0aW9uKSBhbmQgc28gdGhlIGhpZ2hlciBsZXZlbCBjb2RlCitiZWhhdmVzIHRoZSBzYW1lIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBkZWxheWVkIGxvZ2dpbmcgaXMgYmVpbmcgdXNlZCBvciBub3QuCisKK0RlbGF5ZWQgTG9nZ2luZzogQ2hlY2twb2ludCBMb2cgU3BhY2UgQWNjb3VudGluZworCitUaGUgYmlnIGlzc3VlIGZvciBhIGNoZWNrcG9pbnQgdHJhbnNhY3Rpb24gaXMgdGhlIGxvZyBzcGFjZSByZXNlcnZhdGlvbiBmb3IgdGhlCit0cmFuc2FjdGlvbi4gV2UgZG9uJ3Qga25vdyBob3cgYmlnIGEgY2hlY2twb2ludCB0cmFuc2FjdGlvbiBpcyBnb2luZyB0byBiZQorYWhlYWQgb2YgdGltZSwgbm9yIGhvdyBtYW55IGxvZyBidWZmZXJzIGl0IHdpbGwgdGFrZSB0byB3cml0ZSBvdXQsIG5vciB0aGUKK251bWJlciBvZiBzcGxpdCBsb2cgdmVjdG9yIHJlZ2lvbnMgYXJlIGdvaW5nIHRvIGJlIHVzZWQuIFdlIGNhbiB0cmFjayB0aGUKK2Ftb3VudCBvZiBsb2cgc3BhY2UgcmVxdWlyZWQgYXMgd2UgYWRkIGl0ZW1zIHRvIHRoZSBjb21taXQgaXRlbSBsaXN0LCBidXQgd2UKK3N0aWxsIG5lZWQgdG8gcmVzZXJ2ZSB0aGUgc3BhY2UgaW4gdGhlIGxvZyBmb3IgdGhlIGNoZWNrcG9pbnQuCisKK0EgdHlwaWNhbCB0cmFuc2FjdGlvbiByZXNlcnZlcyBlbm91Z2ggc3BhY2UgaW4gdGhlIGxvZyBmb3IgdGhlIHdvcnN0IGNhc2Ugc3BhY2UKK3VzYWdlIG9mIHRoZSB0cmFuc2FjdGlvbi4gVGhlIHJlc2VydmF0aW9uIGFjY291bnRzIGZvciBsb2cgcmVjb3JkIGhlYWRlcnMsCit0cmFuc2FjdGlvbiBhbmQgcmVnaW9uIGhlYWRlcnMsIGhlYWRlcnMgZm9yIHNwbGl0IHJlZ2lvbnMsIGJ1ZmZlciB0YWlsIHBhZGRpbmcsCitldGMuIGFzIHdlbGwgYXMgdGhlIGFjdHVhbCBzcGFjZSBmb3IgYWxsIHRoZSBjaGFuZ2VkIG1ldGFkYXRhIGluIHRoZQordHJhbnNhY3Rpb24uIFdoaWxlIHNvbWUgb2YgdGhpcyBpcyBmaXhlZCBvdmVyaGVhZCwgbXVjaCBvZiBpdCBpcyBkZXBlbmRlbnQgb24KK3RoZSBzaXplIG9mIHRoZSB0cmFuc2FjdGlvbiBhbmQgdGhlIG51bWJlciBvZiByZWdpb25zIGJlaW5nIGxvZ2dlZCAodGhlIG51bWJlcgorb2YgbG9nIHZlY3RvcnMgaW4gdGhlIHRyYW5zYWN0aW9uKS4KKworQW4gZXhhbXBsZSBvZiB0aGUgZGlmZmVyZW5jZXMgd291bGQgYmUgbG9nZ2luZyBkaXJlY3RvcnkgY2hhbmdlcyB2ZXJzdXMgbG9nZ2luZworaW5vZGUgY2hhbmdlcy4gSWYgeW91IG1vZGlmeSBsb3RzIG9mIGlub2RlIGNvcmVzIChlLmcuIGNobW9kIC1SIGcrdyAqKSwgdGhlbgordGhlcmUgYXJlIGxvdHMgb2YgdHJhbnNhY3Rpb25zIHRoYXQgb25seSBjb250YWluIGFuIGlub2RlIGNvcmUgYW5kIGFuIGlub2RlIGxvZworZm9ybWF0IHN0cnVjdHVyZS4gVGhhdCBpcywgdHdvIHZlY3RvcnMgdG90YWxpbmcgcm91Z2hseSAxNTAgYnl0ZXMuIElmIHdlIG1vZGlmeQorMTAsMDAwIGlub2Rlcywgd2UgaGF2ZSBhYm91dCAxLjVNQiBvZiBtZXRhZGF0YSB0byB3cml0ZSBpbiAyMCwwMDAgdmVjdG9ycy4gRWFjaAordmVjdG9yIGlzIDEyIGJ5dGVzLCBzbyB0aGUgdG90YWwgdG8gYmUgbG9nZ2VkIGlzIGFwcHJveGltYXRlbHkgMS43NU1CLiBJbgorY29tcGFyaXNvbiwgaWYgd2UgYXJlIGxvZ2dpbmcgZnVsbCBkaXJlY3RvcnkgYnVmZmVycywgdGhleSBhcmUgdHlwaWNhbGx5IDRLQgorZWFjaCwgc28gd2UgaW4gMS41TUIgb2YgZGlyZWN0b3J5IGJ1ZmZlcnMgd2UnZCBoYXZlIHJvdWdobHkgNDAwIGJ1ZmZlcnMgYW5kIGEKK2J1ZmZlciBmb3JtYXQgc3RydWN0dXJlIGZvciBlYWNoIGJ1ZmZlciAtIHJvdWdobHkgODAwIHZlY3RvcnMgb3IgMS41MU1CIHRvdGFsCitzcGFjZS4gIEZyb20gdGhpcywgaXQgc2hvdWxkIGJlIG9idmlvdXMgdGhhdCBhIHN0YXRpYyBsb2cgc3BhY2UgcmVzZXJ2YXRpb24gaXMKK25vdCBwYXJ0aWN1bGFybHkgZmxleGlibGUgYW5kIGlzIGRpZmZpY3VsdCB0byBzZWxlY3QgdGhlICJvcHRpbWFsIHZhbHVlIiBmb3IKK2FsbCB3b3JrbG9hZHMuCisKK0Z1cnRoZXIsIGlmIHdlIGFyZSBnb2luZyB0byB1c2UgYSBzdGF0aWMgcmVzZXJ2YXRpb24sIHdoaWNoIGJpdCBvZiB0aGUgZW50aXJlCityZXNlcnZhdGlvbiBkb2VzIGl0IGNvdmVyPyBXZSBhY2NvdW50IGZvciBzcGFjZSB1c2VkIGJ5IHRoZSB0cmFuc2FjdGlvbgorcmVzZXJ2YXRpb24gYnkgdHJhY2tpbmcgdGhlIHNwYWNlIGN1cnJlbnRseSB1c2VkIGJ5IHRoZSBvYmplY3QgaW4gdGhlIENJTCBhbmQKK3RoZW4gY2FsY3VsYXRpbmcgdGhlIGluY3JlYXNlIG9yIGRlY3JlYXNlIGluIHNwYWNlIHVzZWQgYXMgdGhlIG9iamVjdCBpcworcmVsb2dnZWQuIFRoaXMgYWxsb3dzIGZvciBhIGNoZWNrcG9pbnQgcmVzZXJ2YXRpb24gdG8gb25seSBoYXZlIHRvIGFjY291bnQgZm9yCitsb2cgYnVmZmVyIG1ldGFkYXRhIHVzZWQgc3VjaCBhcyBsb2cgaGVhZGVyIHJlY29yZHMuCisKK0hvd2V2ZXIsIGV2ZW4gdXNpbmcgYSBzdGF0aWMgcmVzZXJ2YXRpb24gZm9yIGp1c3QgdGhlIGxvZyBtZXRhZGF0YSBpcworcHJvYmxlbWF0aWMuIFR5cGljYWxseSBsb2cgcmVjb3JkIGhlYWRlcnMgdXNlIGF0IGxlYXN0IDE2S0Igb2YgbG9nIHNwYWNlIHBlcgorMU1CIG9mIGxvZyBzcGFjZSBjb25zdW1lZCAoNTEyIGJ5dGVzIHBlciAzMmspIGFuZCB0aGUgcmVzZXJ2YXRpb24gbmVlZHMgdG8gYmUKK2xhcmdlIGVub3VnaCB0byBoYW5kbGUgYXJiaXRyYXJ5IHNpemVkIGNoZWNrcG9pbnQgdHJhbnNhY3Rpb25zLiBUaGlzCityZXNlcnZhdGlvbiBuZWVkcyB0byBiZSBtYWRlIGJlZm9yZSB0aGUgY2hlY2twb2ludCBpcyBzdGFydGVkLCBhbmQgd2UgbmVlZCB0bworYmUgYWJsZSB0byByZXNlcnZlIHRoZSBzcGFjZSB3aXRob3V0IHNsZWVwaW5nLiAgRm9yIGEgOE1CIGNoZWNrcG9pbnQsIHdlIG5lZWQgYQorcmVzZXJ2YXRpb24gb2YgYXJvdW5kIDE1MEtCLCB3aGljaCBpcyBhIG5vbi10cml2aWFsIGFtb3VudCBvZiBzcGFjZS4KKworQSBzdGF0aWMgcmVzZXJ2YXRpb24gbmVlZHMgdG8gbWFuaXB1bGF0ZSB0aGUgbG9nIGdyYW50IGNvdW50ZXJzIC0gd2UgY2FuIHRha2UgYQorcGVybWFuZW50IHJlc2VydmF0aW9uIG9uIHRoZSBzcGFjZSwgYnV0IHdlIHN0aWxsIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHJlZnJlc2gKK3RoZSB3cml0ZSByZXNlcnZhdGlvbiAodGhlIGFjdHVhbCBzcGFjZSBhdmFpbGFibGUgdG8gdGhlIHRyYW5zYWN0aW9uKSBhZnRlcgorZXZlcnkgY2hlY2twb2ludCB0cmFuc2FjdGlvbiBjb21wbGV0aW9uLiBVbmZvcnR1bmF0ZWx5LCBpZiB0aGlzIHNwYWNlIGlzIG5vdAorYXZhaWxhYmxlIHdoZW4gcmVxdWlyZWQsIHRoZW4gdGhlIHJlZ3JhbnQgY29kZSB3aWxsIHNsZWVwIHdhaXRpbmcgZm9yIGl0LgorCitUaGUgcHJvYmxlbSB3aXRoIHRoaXMgaXMgdGhhdCBpdCBjYW4gbGVhZCB0byBkZWFkbG9ja3MgYXMgd2UgbWF5IG5lZWQgdG8gY29tbWl0CitjaGVja3BvaW50cyB0byBiZSBhYmxlIHRvIGZyZWUgdXAgbG9nIHNwYWNlIChyZWZlciBiYWNrIHRvIHRoZSBkZXNjcmlwdGlvbiBvZgorcm9sbGluZyB0cmFuc2FjdGlvbnMgZm9yIGFuIGV4YW1wbGUgb2YgdGhpcykuICBIZW5jZSB3ZSAqbXVzdCogYWx3YXlzIGhhdmUKK3NwYWNlIGF2YWlsYWJsZSBpbiB0aGUgbG9nIGlmIHdlIGFyZSB0byB1c2Ugc3RhdGljIHJlc2VydmF0aW9ucywgYW5kIHRoYXQgaXMKK3ZlcnkgZGlmZmljdWx0IGFuZCBjb21wbGV4IHRvIGFycmFuZ2UuIEl0IGlzIHBvc3NpYmxlIHRvIGRvLCBidXQgdGhlcmUgaXMgYQorc2ltcGxlciB3YXkuCisKK1RoZSBzaW1wbGVyIHdheSBvZiBkb2luZyB0aGlzIGlzIHRyYWNraW5nIHRoZSBlbnRpcmUgbG9nIHNwYWNlIHVzZWQgYnkgdGhlCitpdGVtcyBpbiB0aGUgQ0lMIGFuZCB1c2luZyB0aGlzIHRvIGR5bmFtaWNhbGx5IGNhbGN1bGF0ZSB0aGUgYW1vdW50IG9mIGxvZworc3BhY2UgcmVxdWlyZWQgYnkgdGhlIGxvZyBtZXRhZGF0YS4gSWYgdGhpcyBsb2cgbWV0YWRhdGEgc3BhY2UgY2hhbmdlcyBhcyBhCityZXN1bHQgb2YgYSB0cmFuc2FjdGlvbiBjb21taXQgaW5zZXJ0aW5nIGEgbmV3IG1lbW9yeSBidWZmZXIgaW50byB0aGUgQ0lMLCB0aGVuCit0aGUgZGlmZmVyZW5jZSBpbiBzcGFjZSByZXF1aXJlZCBpcyByZW1vdmVkIGZyb20gdGhlIHRyYW5zYWN0aW9uIHRoYXQgY2F1c2VzCit0aGUgY2hhbmdlLiBUcmFuc2FjdGlvbnMgYXQgdGhpcyBsZXZlbCB3aWxsICphbHdheXMqIGhhdmUgZW5vdWdoIHNwYWNlCithdmFpbGFibGUgaW4gdGhlaXIgcmVzZXJ2YXRpb24gZm9yIHRoaXMgYXMgdGhleSBoYXZlIGFscmVhZHkgcmVzZXJ2ZWQgdGhlCittYXhpbWFsIGFtb3VudCBvZiBsb2cgbWV0YWRhdGEgc3BhY2UgdGhleSByZXF1aXJlLCBhbmQgc3VjaCBhIGRlbHRhIHJlc2VydmF0aW9uCit3aWxsIGFsd2F5cyBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1heGltYWwgYW1vdW50IGluIHRoZSByZXNlcnZhdGlvbi4KKworSGVuY2Ugd2UgY2FuIGdyb3cgdGhlIGNoZWNrcG9pbnQgdHJhbnNhY3Rpb24gcmVzZXJ2YXRpb24gZHluYW1pY2FsbHkgYXMgaXRlbXMKK2FyZSBhZGRlZCB0byB0aGUgQ0lMIGFuZCBhdm9pZCB0aGUgbmVlZCBmb3IgcmVzZXJ2aW5nIGFuZCByZWdyYW50aW5nIGxvZyBzcGFjZQordXAgZnJvbnQuIFRoaXMgYXZvaWRzIGRlYWRsb2NrcyBhbmQgcmVtb3ZlcyBhIGJsb2NraW5nIHBvaW50IGZyb20gdGhlCitjaGVja3BvaW50IGZsdXNoIGNvZGUuCisKK0FzIG1lbnRpb25lZCBlYXJseSwgdHJhbnNhY3Rpb25zIGNhbid0IGdyb3cgdG8gbW9yZSB0aGFuIGhhbGYgdGhlIHNpemUgb2YgdGhlCitsb2cuIEhlbmNlIGFzIHBhcnQgb2YgdGhlIHJlc2VydmF0aW9uIGdyb3dpbmcsIHdlIG5lZWQgdG8gYWxzbyBjaGVjayB0aGUgc2l6ZQorb2YgdGhlIHJlc2VydmF0aW9uIGFnYWluc3QgdGhlIG1heGltdW0gYWxsb3dlZCB0cmFuc2FjdGlvbiBzaXplLiBJZiB3ZSByZWFjaAordGhlIG1heGltdW0gdGhyZXNob2xkLCB3ZSBuZWVkIHRvIHB1c2ggdGhlIENJTCB0byB0aGUgbG9nLiBUaGlzIGlzIGVmZmVjdGl2ZWx5CithICJiYWNrZ3JvdW5kIGZsdXNoIiBhbmQgaXMgZG9uZSBvbiBkZW1hbmQuIFRoaXMgaXMgaWRlbnRpY2FsIHRvCithIENJTCBwdXNoIHRyaWdnZXJlZCBieSBhIGxvZyBmb3JjZSwgb25seSB0aGF0IHRoZXJlIGlzIG5vIHdhaXRpbmcgZm9yIHRoZQorY2hlY2twb2ludCBjb21taXQgdG8gY29tcGxldGUuIFRoaXMgYmFja2dyb3VuZCBwdXNoIGlzIGNoZWNrZWQgYW5kIGV4ZWN1dGVkIGJ5Cit0cmFuc2FjdGlvbiBjb21taXQgY29kZS4KKworSWYgdGhlIHRyYW5zYWN0aW9uIHN1YnN5c3RlbSBnb2VzIGlkbGUgd2hpbGUgd2Ugc3RpbGwgaGF2ZSBpdGVtcyBpbiB0aGUgQ0lMLAordGhleSB3aWxsIGJlIGZsdXNoZWQgYnkgdGhlIHBlcmlvZGljIGxvZyBmb3JjZSBpc3N1ZWQgYnkgdGhlIHhmc3N5bmNkLiBUaGlzIGxvZworZm9yY2Ugd2lsbCBwdXNoIHRoZSBDSUwgdG8gZGlzaywgYW5kIGlmIHRoZSB0cmFuc2FjdGlvbiBzdWJzeXN0ZW0gc3RheXMgaWRsZSwKK2FsbG93IHRoZSBpZGxlIGxvZyB0byBiZSBjb3ZlcmVkIChlZmZlY3RpdmVseSBtYXJrZWQgY2xlYW4pIGluIGV4YWN0bHkgdGhlIHNhbWUKK21hbm5lciB0aGF0IGlzIGRvbmUgZm9yIHRoZSBleGlzdGluZyBsb2dnaW5nIG1ldGhvZC4gQSBkaXNjdXNzaW9uIHBvaW50IGlzCit3aGV0aGVyIHRoaXMgbG9nIGZvcmNlIG5lZWRzIHRvIGJlIGRvbmUgbW9yZSBmcmVxdWVudGx5IHRoYW4gdGhlIGN1cnJlbnQgcmF0ZQord2hpY2ggaXMgb25jZSBldmVyeSAzMHMuCisKKworRGVsYXllZCBMb2dnaW5nOiBMb2cgSXRlbSBQaW5uaW5nCisKK0N1cnJlbnRseSBsb2cgaXRlbXMgYXJlIHBpbm5lZCBkdXJpbmcgdHJhbnNhY3Rpb24gY29tbWl0IHdoaWxlIHRoZSBpdGVtcyBhcmUKK3N0aWxsIGxvY2tlZC4gVGhpcyBoYXBwZW5zIGp1c3QgYWZ0ZXIgdGhlIGl0ZW1zIGFyZSBmb3JtYXR0ZWQsIHRob3VnaCBpdCBjb3VsZAorYmUgZG9uZSBhbnkgdGltZSBiZWZvcmUgdGhlIGl0ZW1zIGFyZSB1bmxvY2tlZC4gVGhlIHJlc3VsdCBvZiB0aGlzIG1lY2hhbmlzbSBpcwordGhhdCBpdGVtcyBnZXQgcGlubmVkIG9uY2UgZm9yIGV2ZXJ5IHRyYW5zYWN0aW9uIHRoYXQgaXMgY29tbWl0dGVkIHRvIHRoZSBsb2cKK2J1ZmZlcnMuIEhlbmNlIGl0ZW1zIHRoYXQgYXJlIHJlbG9nZ2VkIGluIHRoZSBsb2cgYnVmZmVycyB3aWxsIGhhdmUgYSBwaW4gY291bnQKK2ZvciBldmVyeSBvdXRzdGFuZGluZyB0cmFuc2FjdGlvbiB0aGV5IHdlcmUgZGlydGllZCBpbi4gV2hlbiBlYWNoIG9mIHRoZXNlCit0cmFuc2FjdGlvbnMgaXMgY29tcGxldGVkLCB0aGV5IHdpbGwgdW5waW4gdGhlIGl0ZW0gb25jZS4gQXMgYSByZXN1bHQsIHRoZSBpdGVtCitvbmx5IGJlY29tZXMgdW5waW5uZWQgd2hlbiBhbGwgdGhlIHRyYW5zYWN0aW9ucyBjb21wbGV0ZSBhbmQgdGhlcmUgYXJlIG5vCitwZW5kaW5nIHRyYW5zYWN0aW9ucy4gVGh1cyB0aGUgcGlubmluZyBhbmQgdW5waW5uaW5nIG9mIGEgbG9nIGl0ZW0gaXMgc3ltbWV0cmljCithcyB0aGVyZSBpcyBhIDE6MSByZWxhdGlvbnNoaXAgd2l0aCB0cmFuc2FjdGlvbiBjb21taXQgYW5kIGxvZyBpdGVtIGNvbXBsZXRpb24uCisKK0ZvciBkZWxheWVkIGxvZ2dpbmcsIGhvd2V2ZXIsIHdlIGhhdmUgYW4gYXN5bW1ldHJpYyB0cmFuc2FjdGlvbiBjb21taXQgdG8KK2NvbXBsZXRpb24gcmVsYXRpb25zaGlwLiBFdmVyeSB0aW1lIGFuIG9iamVjdCBpcyByZWxvZ2dlZCBpbiB0aGUgQ0lMIGl0IGdvZXMKK3Rocm91Z2ggdGhlIGNvbW1pdCBwcm9jZXNzIHdpdGhvdXQgYSBjb3JyZXNwb25kaW5nIGNvbXBsZXRpb24gYmVpbmcgcmVnaXN0ZXJlZC4KK1RoYXQgaXMsIHdlIG5vdyBoYXZlIGEgbWFueS10by1vbmUgcmVsYXRpb25zaGlwIGJldHdlZW4gdHJhbnNhY3Rpb24gY29tbWl0IGFuZAorbG9nIGl0ZW0gY29tcGxldGlvbi4gVGhlIHJlc3VsdCBvZiB0aGlzIGlzIHRoYXQgcGlubmluZyBhbmQgdW5waW5uaW5nIG9mIHRoZQorbG9nIGl0ZW1zIGJlY29tZXMgdW5iYWxhbmNlZCBpZiB3ZSByZXRhaW4gdGhlICJwaW4gb24gdHJhbnNhY3Rpb24gY29tbWl0LCB1bnBpbgorb24gdHJhbnNhY3Rpb24gY29tcGxldGlvbiIgbW9kZWwuCisKK1RvIGtlZXAgcGluL3VucGluIHN5bW1ldHJ5LCB0aGUgYWxnb3JpdGhtIG5lZWRzIHRvIGNoYW5nZSB0byBhICJwaW4gb24KK2luc2VydGlvbiBpbnRvIHRoZSBDSUwsIHVucGluIG9uIGNoZWNrcG9pbnQgY29tcGxldGlvbiIuIEluIG90aGVyIHdvcmRzLCB0aGUKK3Bpbm5pbmcgYW5kIHVucGlubmluZyBiZWNvbWVzIHN5bW1ldHJpYyBhcm91bmQgYSBjaGVja3BvaW50IGNvbnRleHQuIFdlIGhhdmUgdG8KK3BpbiB0aGUgb2JqZWN0IHRoZSBmaXJzdCB0aW1lIGl0IGlzIGluc2VydGVkIGludG8gdGhlIENJTCAtIGlmIGl0IGlzIGFscmVhZHkgaW4KK3RoZSBDSUwgZHVyaW5nIGEgdHJhbnNhY3Rpb24gY29tbWl0LCB0aGVuIHdlIGRvIG5vdCBwaW4gaXQgYWdhaW4uIEJlY2F1c2UgdGhlcmUKK2NhbiBiZSBtdWx0aXBsZSBvdXRzdGFuZGluZyBjaGVja3BvaW50IGNvbnRleHRzLCB3ZSBjYW4gc3RpbGwgc2VlIGVsZXZhdGVkIHBpbgorY291bnRzLCBidXQgYXMgZWFjaCBjaGVja3BvaW50IGNvbXBsZXRlcyB0aGUgcGluIGNvdW50IHdpbGwgcmV0YWluIHRoZSBjb3JyZWN0Cit2YWx1ZSBhY2NvcmRpbmcgdG8gaXQncyBjb250ZXh0LgorCitKdXN0IHRvIG1ha2UgbWF0dGVycyBtb3JlIHNsaWdodGx5IG1vcmUgY29tcGxleCwgdGhpcyBjaGVja3BvaW50IGxldmVsIGNvbnRleHQKK2ZvciB0aGUgcGluIGNvdW50IG1lYW5zIHRoYXQgdGhlIHBpbm5pbmcgb2YgYW4gaXRlbSBtdXN0IHRha2UgcGxhY2UgdW5kZXIgdGhlCitDSUwgY29tbWl0L2ZsdXNoIGxvY2suIElmIHdlIHBpbiB0aGUgb2JqZWN0IG91dHNpZGUgdGhpcyBsb2NrLCB3ZSBjYW5ub3QKK2d1YXJhbnRlZSB3aGljaCBjb250ZXh0IHRoZSBwaW4gY291bnQgaXMgYXNzb2NpYXRlZCB3aXRoLiBUaGlzIGlzIGJlY2F1c2Ugb2YKK3RoZSBmYWN0IHBpbm5pbmcgdGhlIGl0ZW0gaXMgZGVwZW5kZW50IG9uIHdoZXRoZXIgdGhlIGl0ZW0gaXMgcHJlc2VudCBpbiB0aGUKK2N1cnJlbnQgQ0lMIG9yIG5vdC4gSWYgd2UgZG9uJ3QgcGluIHRoZSBDSUwgZmlyc3QgYmVmb3JlIHdlIGNoZWNrIGFuZCBwaW4gdGhlCitvYmplY3QsIHdlIGhhdmUgYSByYWNlIHdpdGggQ0lMIGJlaW5nIGZsdXNoZWQgYmV0d2VlbiB0aGUgY2hlY2sgYW5kIHRoZSBwaW4KKyhvciBub3QgcGlubmluZywgYXMgdGhlIGNhc2UgbWF5IGJlKS4gSGVuY2Ugd2UgbXVzdCBob2xkIHRoZSBDSUwgZmx1c2gvY29tbWl0Citsb2NrIHRvIGd1YXJhbnRlZSB0aGF0IHdlIHBpbiB0aGUgaXRlbXMgY29ycmVjdGx5LgorCitEZWxheWVkIExvZ2dpbmc6IENvbmN1cnJlbnQgU2NhbGFiaWxpdHkKKworQSBmdW5kYW1lbnRhbCByZXF1aXJlbWVudCBmb3IgdGhlIENJTCBpcyB0aGF0IGFjY2Vzc2VzIHRocm91Z2ggdHJhbnNhY3Rpb24KK2NvbW1pdHMgbXVzdCBzY2FsZSB0byBtYW55IGNvbmN1cnJlbnQgY29tbWl0cy4gVGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gY29tbWl0Citjb2RlIGRvZXMgbm90IGJyZWFrIGRvd24gZXZlbiB3aGVuIHRoZXJlIGFyZSB0cmFuc2FjdGlvbnMgY29taW5nIGZyb20gMjA0OAorcHJvY2Vzc29ycyBhdCBvbmNlLiBUaGUgY3VycmVudCB0cmFuc2FjdGlvbiBjb2RlIGRvZXMgbm90IGdvIGFueSBmYXN0ZXIgdGhhbiBpZgordGhlcmUgd2FzIG9ubHkgb25lIENQVSB1c2luZyBpdCwgYnV0IGl0IGRvZXMgbm90IHNsb3cgZG93biBlaXRoZXIuCisKK0FzIGEgcmVzdWx0LCB0aGUgZGVsYXllZCBsb2dnaW5nIHRyYW5zYWN0aW9uIGNvbW1pdCBjb2RlIG5lZWRzIHRvIGJlIGRlc2lnbmVkCitmb3IgY29uY3VycmVuY3kgZnJvbSB0aGUgZ3JvdW5kIHVwLiBJdCBpcyBvYnZpb3VzIHRoYXQgdGhlcmUgYXJlIHNlcmlhbGlzYXRpb24KK3BvaW50cyBpbiB0aGUgZGVzaWduIC0gdGhlIHRocmVlIGltcG9ydGFudCBvbmVzIGFyZToKKworCTEuIExvY2tpbmcgb3V0IG5ldyB0cmFuc2FjdGlvbiBjb21taXRzIHdoaWxlIGZsdXNoaW5nIHRoZSBDSUwKKwkyLiBBZGRpbmcgaXRlbXMgdG8gdGhlIENJTCBhbmQgdXBkYXRpbmcgaXRlbSBzcGFjZSBhY2NvdW50aW5nCisJMy4gQ2hlY2twb2ludCBjb21taXQgb3JkZXJpbmcKKworTG9va2luZyBhdCB0aGUgdHJhbnNhY3Rpb24gY29tbWl0IGFuZCBDSUwgZmx1c2hpbmcgaW50ZXJhY3Rpb25zLCBpdCBpcyBjbGVhcgordGhhdCB3ZSBoYXZlIGEgbWFueS10by1vbmUgaW50ZXJhY3Rpb24gaGVyZS4gVGhhdCBpcywgdGhlIG9ubHkgcmVzdHJpY3Rpb24gb24KK3RoZSBudW1iZXIgb2YgY29uY3VycmVudCB0cmFuc2FjdGlvbnMgdGhhdCBjYW4gYmUgdHJ5aW5nIHRvIGNvbW1pdCBhdCBvbmNlIGlzCit0aGUgYW1vdW50IG9mIHNwYWNlIGF2YWlsYWJsZSBpbiB0aGUgbG9nIGZvciB0aGVpciByZXNlcnZhdGlvbnMuIFRoZSBwcmFjdGljYWwKK2xpbWl0IGhlcmUgaXMgaW4gdGhlIG9yZGVyIG9mIHNldmVyYWwgaHVuZHJlZCBjb25jdXJyZW50IHRyYW5zYWN0aW9ucyBmb3IgYQorMTI4TUIgbG9nLCB3aGljaCBtZWFucyB0aGF0IGl0IGlzIGdlbmVyYWxseSBvbmUgcGVyIENQVSBpbiBhIG1hY2hpbmUuCisKK1RoZSBhbW91bnQgb2YgdGltZSBhIHRyYW5zYWN0aW9uIGNvbW1pdCBuZWVkcyB0byBob2xkIG91dCBhIGZsdXNoIGlzIGEKK3JlbGF0aXZlbHkgbG9uZyBwZXJpb2Qgb2YgdGltZSAtIHRoZSBwaW5uaW5nIG9mIGxvZyBpdGVtcyBuZWVkcyB0byBiZSBkb25lCit3aGlsZSB3ZSBhcmUgaG9sZGluZyBvdXQgYSBDSUwgZmx1c2gsIHNvIGF0IHRoZSBtb21lbnQgdGhhdCBtZWFucyBpdCBpcyBoZWxkCithY3Jvc3MgdGhlIGZvcm1hdHRpbmcgb2YgdGhlIG9iamVjdHMgaW50byBtZW1vcnkgYnVmZmVycyAoaS5lLiB3aGlsZSBtZW1jcHkoKXMKK2FyZSBpbiBwcm9ncmVzcykuIFVsdGltYXRlbHkgYSB0d28gcGFzcyBhbGdvcml0aG0gd2hlcmUgdGhlIGZvcm1hdHRpbmcgaXMgZG9uZQorc2VwYXJhdGVseSB0byB0aGUgcGlubmluZyBvZiBvYmplY3RzIGNvdWxkIGJlIHVzZWQgdG8gcmVkdWNlIHRoZSBob2xkIHRpbWUgb2YKK3RoZSB0cmFuc2FjdGlvbiBjb21taXQgc2lkZS4KKworQmVjYXVzZSBvZiB0aGUgbnVtYmVyIG9mIHBvdGVudGlhbCB0cmFuc2FjdGlvbiBjb21taXQgc2lkZSBob2xkZXJzLCB0aGUgbG9jaworcmVhbGx5IG5lZWRzIHRvIGJlIGEgc2xlZXBpbmcgbG9jayAtIGlmIHRoZSBDSUwgZmx1c2ggdGFrZXMgdGhlIGxvY2ssIHdlIGRvIG5vdAord2FudCBldmVyeSBvdGhlciBDUFUgaW4gdGhlIG1hY2hpbmUgc3Bpbm5pbmcgb24gdGhlIENJTCBsb2NrLiBHaXZlbiB0aGF0CitmbHVzaGluZyB0aGUgQ0lMIGNvdWxkIGludm9sdmUgd2Fsa2luZyBhIGxpc3Qgb2YgdGVucyBvZiB0aG91c2FuZHMgb2YgbG9nCitpdGVtcywgaXQgd2lsbCBnZXQgaGVsZCBmb3IgYSBzaWduaWZpY2FudCB0aW1lIGFuZCBzbyBzcGluIGNvbnRlbnRpb24gaXMgYQorc2lnbmlmaWNhbnQgY29uY2Vybi4gUHJldmVudGluZyBsb3RzIG9mIENQVXMgc3Bpbm5pbmcgZG9pbmcgbm90aGluZyBpcyB0aGUKK21haW4gcmVhc29uIGZvciBjaG9vc2luZyBhIHNsZWVwaW5nIGxvY2sgZXZlbiB0aG91Z2ggbm90aGluZyBpbiBlaXRoZXIgdGhlCit0cmFuc2FjdGlvbiBjb21taXQgb3IgQ0lMIGZsdXNoIHNpZGUgc2xlZXBzIHdpdGggdGhlIGxvY2sgaGVsZC4KKworSXQgc2hvdWxkIGFsc28gYmUgbm90ZWQgdGhhdCBDSUwgZmx1c2hpbmcgaXMgYWxzbyBhIHJlbGF0aXZlbHkgcmFyZSBvcGVyYXRpb24KK2NvbXBhcmVkIHRvIHRyYW5zYWN0aW9uIGNvbW1pdCBmb3IgYXN5bmNocm9ub3VzIHRyYW5zYWN0aW9uIHdvcmtsb2FkcyAtIG9ubHkKK3RpbWUgd2lsbCB0ZWxsIGlmIHVzaW5nIGEgcmVhZC13cml0ZSBzZW1hcGhvcmUgZm9yIGV4Y2x1c2lvbiB3aWxsIGxpbWl0Cit0cmFuc2FjdGlvbiBjb21taXQgY29uY3VycmVuY3kgZHVlIHRvIGNhY2hlIGxpbmUgYm91bmNpbmcgb2YgdGhlIGxvY2sgb24gdGhlCityZWFkIHNpZGUuCisKK1RoZSBzZWNvbmQgc2VyaWFsaXNhdGlvbiBwb2ludCBpcyBvbiB0aGUgdHJhbnNhY3Rpb24gY29tbWl0IHNpZGUgd2hlcmUgaXRlbXMKK2FyZSBpbnNlcnRlZCBpbnRvIHRoZSBDSUwuIEJlY2F1c2UgdHJhbnNhY3Rpb25zIGNhbiBlbnRlciB0aGlzIGNvZGUKK2NvbmN1cnJlbnRseSwgdGhlIENJTCBuZWVkcyB0byBiZSBwcm90ZWN0ZWQgc2VwYXJhdGVseSBmcm9tIHRoZSBhYm92ZQorY29tbWl0L2ZsdXNoIGV4Y2x1c2lvbi4gSXQgYWxzbyBuZWVkcyB0byBiZSBhbiBleGNsdXNpdmUgbG9jayBidXQgaXQgaXMgb25seQoraGVsZCBmb3IgYSB2ZXJ5IHNob3J0IHRpbWUgYW5kIHNvIGEgc3BpbiBsb2NrIGlzIGFwcHJvcHJpYXRlIGhlcmUuIEl0IGlzCitwb3NzaWJsZSB0aGF0IHRoaXMgbG9jayB3aWxsIGJlY29tZSBhIGNvbnRlbnRpb24gcG9pbnQsIGJ1dCBnaXZlbiB0aGUgc2hvcnQKK2hvbGQgdGltZSBvbmNlIHBlciB0cmFuc2FjdGlvbiBJIHRoaW5rIHRoYXQgY29udGVudGlvbiBpcyB1bmxpa2VseS4KKworVGhlIGZpbmFsIHNlcmlhbGlzYXRpb24gcG9pbnQgaXMgdGhlIGNoZWNrcG9pbnQgY29tbWl0IHJlY29yZCBvcmRlcmluZyBjb2RlCit0aGF0IGlzIHJ1biBhcyBwYXJ0IG9mIHRoZSBjaGVja3BvaW50IGNvbW1pdCBhbmQgbG9nIGZvcmNlIHNlcXVlbmNpbmcuIFRoZSBjb2RlCitwYXRoIHRoYXQgdHJpZ2dlcnMgYSBDSUwgZmx1c2ggKGkuZS4gd2hhdGV2ZXIgdHJpZ2dlcnMgdGhlIGxvZyBmb3JjZSkgd2lsbCBlbnRlcgorYW4gb3JkZXJpbmcgbG9vcCBhZnRlciB3cml0aW5nIGFsbCB0aGUgbG9nIHZlY3RvcnMgaW50byB0aGUgbG9nIGJ1ZmZlcnMgYnV0CitiZWZvcmUgd3JpdGluZyB0aGUgY29tbWl0IHJlY29yZC4gVGhpcyBsb29wIHdhbGtzIHRoZSBsaXN0IG9mIGNvbW1pdHRpbmcKK2NoZWNrcG9pbnRzIGFuZCBuZWVkcyB0byBibG9jayB3YWl0aW5nIGZvciBjaGVja3BvaW50cyB0byBjb21wbGV0ZSB0aGVpciBjb21taXQKK3JlY29yZCB3cml0ZS4gQXMgYSByZXN1bHQgaXQgbmVlZHMgYSBsb2NrIGFuZCBhIHdhaXQgdmFyaWFibGUuIExvZyBmb3JjZQorc2VxdWVuY2luZyBhbHNvIHJlcXVpcmVzIHRoZSBzYW1lIGxvY2ssIGxpc3Qgd2FsaywgYW5kIGJsb2NraW5nIG1lY2hhbmlzbSB0bworZW5zdXJlIGNvbXBsZXRpb24gb2YgY2hlY2twb2ludHMuCisKK1RoZXNlIHR3byBzZXF1ZW5jaW5nIG9wZXJhdGlvbnMgY2FuIHVzZSB0aGUgbWVjaGFuaXNtIGV2ZW4gdGhvdWdoIHRoZQorZXZlbnRzIHRoZXkgYXJlIHdhaXRpbmcgZm9yIGFyZSBkaWZmZXJlbnQuIFRoZSBjaGVja3BvaW50IGNvbW1pdCByZWNvcmQKK3NlcXVlbmNpbmcgbmVlZHMgdG8gd2FpdCB1bnRpbCBjaGVja3BvaW50IGNvbnRleHRzIGNvbnRhaW4gYSBjb21taXQgTFNOCisob2J0YWluZWQgdGhyb3VnaCBjb21wbGV0aW9uIG9mIGEgY29tbWl0IHJlY29yZCB3cml0ZSkgd2hpbGUgbG9nIGZvcmNlCitzZXF1ZW5jaW5nIG5lZWRzIHRvIHdhaXQgdW50aWwgcHJldmlvdXMgY2hlY2twb2ludCBjb250ZXh0cyBhcmUgcmVtb3ZlZCBmcm9tCit0aGUgY29tbWl0dGluZyBsaXN0IChpLmUuIHRoZXkndmUgY29tcGxldGVkKS4gQSBzaW1wbGUgd2FpdCB2YXJpYWJsZSBhbmQKK2Jyb2FkY2FzdCB3YWtldXBzICh0aHVuZGVyaW5nIGhlcmRzKSBoYXMgYmVlbiB1c2VkIHRvIGltcGxlbWVudCB0aGVzZSB0d28KK3NlcmlhbGlzYXRpb24gcXVldWVzLiBUaGV5IHVzZSB0aGUgc2FtZSBsb2NrIGFzIHRoZSBDSUwsIHRvby4gSWYgd2Ugc2VlIHRvbworbXVjaCBjb250ZW50aW9uIG9uIHRoZSBDSUwgbG9jaywgb3IgdG9vIG1hbnkgY29udGV4dCBzd2l0Y2hlcyBhcyBhIHJlc3VsdCBvZgordGhlIGJyb2FkY2FzdCB3YWtldXBzIHRoZXNlIG9wZXJhdGlvbnMgY2FuIGJlIHB1dCB1bmRlciBhIG5ldyBzcGlubG9jayBhbmQKK2dpdmVuIHNlcGFyYXRlIHdhaXQgbGlzdHMgdG8gcmVkdWNlIGxvY2sgY29udGVudGlvbiBhbmQgdGhlIG51bWJlciBvZiBwcm9jZXNzZXMKK3dva2VuIGJ5IHRoZSB3cm9uZyBldmVudC4KKworCitMaWZlY3ljbGUgQ2hhbmdlcworCitUaGUgZXhpc3RpbmcgbG9nIGl0ZW0gbGlmZSBjeWNsZSBpcyBhcyBmb2xsb3dzOgorCisJMS4gVHJhbnNhY3Rpb24gYWxsb2NhdGUKKwkyLiBUcmFuc2FjdGlvbiByZXNlcnZlCisJMy4gTG9jayBpdGVtCisJNC4gSm9pbiBpdGVtIHRvIHRyYW5zYWN0aW9uCisJCUlmIG5vdCBhbHJlYWR5IGF0dGFjaGVkLAorCQkJQWxsb2NhdGUgbG9nIGl0ZW0KKwkJCUF0dGFjaCBsb2cgaXRlbSB0byBvd25lciBpdGVtCisJCUF0dGFjaCBsb2cgaXRlbSB0byB0cmFuc2FjdGlvbgorCTUuIE1vZGlmeSBpdGVtCisJCVJlY29yZCBtb2RpZmljYXRpb25zIGluIGxvZyBpdGVtCisJNi4gVHJhbnNhY3Rpb24gY29tbWl0CisJCVBpbiBpdGVtIGluIG1lbW9yeQorCQlGb3JtYXQgaXRlbSBpbnRvIGxvZyBidWZmZXIKKwkJV3JpdGUgY29tbWl0IExTTiBpbnRvIHRyYW5zYWN0aW9uCisJCVVubG9jayBpdGVtCisJCUF0dGFjaCB0cmFuc2FjdGlvbiB0byBsb2cgYnVmZmVyCisKKwk8bG9nIGJ1ZmZlciBJTyBkaXNwYXRjaGVkPgorCTxsb2cgYnVmZmVyIElPIGNvbXBsZXRlcz4KKworCTcuIFRyYW5zYWN0aW9uIGNvbXBsZXRpb24KKwkJTWFyayBsb2cgaXRlbSBjb21taXR0ZWQKKwkJSW5zZXJ0IGxvZyBpdGVtIGludG8gQUlMCisJCQlXcml0ZSBjb21taXQgTFNOIGludG8gbG9nIGl0ZW0KKwkJVW5waW4gbG9nIGl0ZW0KKwk4LiBBSUwgdHJhdmVyc2FsCisJCUxvY2sgaXRlbQorCQlNYXJrIGxvZyBpdGVtIGNsZWFuCisJCUZsdXNoIGl0ZW0gdG8gZGlzaworCisJPGl0ZW0gSU8gY29tcGxldGlvbj4KKworCTkuIExvZyBpdGVtIHJlbW92ZWQgZnJvbSBBSUwKKwkJTW92ZXMgbG9nIHRhaWwKKwkJSXRlbSB1bmxvY2tlZAorCitFc3NlbnRpYWxseSwgc3RlcHMgMS02IG9wZXJhdGUgaW5kZXBlbmRlbnRseSBmcm9tIHN0ZXAgNywgd2hpY2ggaXMgYWxzbworaW5kZXBlbmRlbnQgb2Ygc3RlcHMgOC05LiBBbiBpdGVtIGNhbiBiZSBsb2NrZWQgaW4gc3RlcHMgMS02IG9yIHN0ZXBzIDgtOQorYXQgdGhlIHNhbWUgdGltZSBzdGVwIDcgaXMgb2NjdXJyaW5nLCBidXQgb25seSBzdGVwcyAxLTYgb3IgOC05IGNhbiBvY2N1cgorYXQgdGhlIHNhbWUgdGltZS4gSWYgdGhlIGxvZyBpdGVtIGlzIGluIHRoZSBBSUwgb3IgYmV0d2VlbiBzdGVwcyA2IGFuZCA3CithbmQgc3RlcHMgMS02IGFyZSByZS1lbnRlcmVkLCB0aGVuIHRoZSBpdGVtIGlzIHJlbG9nZ2VkLiBPbmx5IHdoZW4gc3RlcHMgOC05CithcmUgZW50ZXJlZCBhbmQgY29tcGxldGVkIGlzIHRoZSBvYmplY3QgY29uc2lkZXJlZCBjbGVhbi4KKworV2l0aCBkZWxheWVkIGxvZ2dpbmcsIHRoZXJlIGFyZSBuZXcgc3RlcHMgaW5zZXJ0ZWQgaW50byB0aGUgbGlmZSBjeWNsZToKKworCTEuIFRyYW5zYWN0aW9uIGFsbG9jYXRlCisJMi4gVHJhbnNhY3Rpb24gcmVzZXJ2ZQorCTMuIExvY2sgaXRlbQorCTQuIEpvaW4gaXRlbSB0byB0cmFuc2FjdGlvbgorCQlJZiBub3QgYWxyZWFkeSBhdHRhY2hlZCwKKwkJCUFsbG9jYXRlIGxvZyBpdGVtCisJCQlBdHRhY2ggbG9nIGl0ZW0gdG8gb3duZXIgaXRlbQorCQlBdHRhY2ggbG9nIGl0ZW0gdG8gdHJhbnNhY3Rpb24KKwk1LiBNb2RpZnkgaXRlbQorCQlSZWNvcmQgbW9kaWZpY2F0aW9ucyBpbiBsb2cgaXRlbQorCTYuIFRyYW5zYWN0aW9uIGNvbW1pdAorCQlQaW4gaXRlbSBpbiBtZW1vcnkgaWYgbm90IHBpbm5lZCBpbiBDSUwKKwkJRm9ybWF0IGl0ZW0gaW50byBsb2cgdmVjdG9yICsgYnVmZmVyCisJCUF0dGFjaCBsb2cgdmVjdG9yIGFuZCBidWZmZXIgdG8gbG9nIGl0ZW0KKwkJSW5zZXJ0IGxvZyBpdGVtIGludG8gQ0lMCisJCVdyaXRlIENJTCBjb250ZXh0IHNlcXVlbmNlIGludG8gdHJhbnNhY3Rpb24KKwkJVW5sb2NrIGl0ZW0KKworCTxuZXh0IGxvZyBmb3JjZT4KKworCTcuIENJTCBwdXNoCisJCWxvY2sgQ0lMIGZsdXNoCisJCUNoYWluIGxvZyB2ZWN0b3JzIGFuZCBidWZmZXJzIHRvZ2V0aGVyCisJCVJlbW92ZSBpdGVtcyBmcm9tIENJTAorCQl1bmxvY2sgQ0lMIGZsdXNoCisJCXdyaXRlIGxvZyB2ZWN0b3JzIGludG8gbG9nCisJCXNlcXVlbmNlIGNvbW1pdCByZWNvcmRzCisJCWF0dGFjaCBjaGVja3BvaW50IGNvbnRleHQgdG8gbG9nIGJ1ZmZlcgorCisJPGxvZyBidWZmZXIgSU8gZGlzcGF0Y2hlZD4KKwk8bG9nIGJ1ZmZlciBJTyBjb21wbGV0ZXM+CisKKwk4LiBDaGVja3BvaW50IGNvbXBsZXRpb24KKwkJTWFyayBsb2cgaXRlbSBjb21taXR0ZWQKKwkJSW5zZXJ0IGl0ZW0gaW50byBBSUwKKwkJCVdyaXRlIGNvbW1pdCBMU04gaW50byBsb2cgaXRlbQorCQlVbnBpbiBsb2cgaXRlbQorCTkuIEFJTCB0cmF2ZXJzYWwKKwkJTG9jayBpdGVtCisJCU1hcmsgbG9nIGl0ZW0gY2xlYW4KKwkJRmx1c2ggaXRlbSB0byBkaXNrCisJPGl0ZW0gSU8gY29tcGxldGlvbj4KKwkxMC4gTG9nIGl0ZW0gcmVtb3ZlZCBmcm9tIEFJTAorCQlNb3ZlcyBsb2cgdGFpbAorCQlJdGVtIHVubG9ja2VkCisKK0Zyb20gdGhpcywgaXQgY2FuIGJlIHNlZW4gdGhhdCB0aGUgb25seSBsaWZlIGN5Y2xlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHR3bworbG9nZ2luZyBtZXRob2RzIGFyZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBsaWZlIGN5Y2xlIC0gdGhleSBzdGlsbCBoYXZlIHRoZSBzYW1lCitiZWdpbm5pbmcgYW5kIGVuZCBhbmQgZXhlY3V0aW9uIGNvbnN0cmFpbnRzLiBUaGUgb25seSBkaWZmZXJlbmNlcyBhcmUgaW4gdGhlCitjb21taXR0aW5nIG9mIHRoZSBsb2cgaXRlbXMgdG8gdGhlIGxvZyBpdHNlbGYgYW5kIHRoZSBjb21wbGV0aW9uIHByb2Nlc3NpbmcuCitIZW5jZSBkZWxheWVkIGxvZ2dpbmcgc2hvdWxkIG5vdCBpbnRyb2R1Y2UgYW55IGNvbnN0cmFpbnRzIG9uIGxvZyBpdGVtCitiZWhhdmlvdXIsIGFsbG9jYXRpb24gb3IgZnJlZWluZyB0aGF0IGRvbid0IGFscmVhZHkgZXhpc3QuCisKK0FzIGEgcmVzdWx0IG9mIHRoaXMgemVyby1pbXBhY3QgImluc2VydGlvbiIgb2YgZGVsYXllZCBsb2dnaW5nIGluZnJhc3RydWN0dXJlCithbmQgdGhlIGRlc2lnbiBvZiB0aGUgaW50ZXJuYWwgc3RydWN0dXJlcyB0byBhdm9pZCBvbiBkaXNrIGZvcm1hdCBjaGFuZ2VzLCB3ZQorY2FuIGJhc2ljYWxseSBzd2l0Y2ggYmV0d2VlbiBkZWxheWVkIGxvZ2dpbmcgYW5kIHRoZSBleGlzdGluZyBtZWNoYW5pc20gd2l0aCBhCittb3VudCBvcHRpb24uIEZ1bmRhbWVudGFsbHksIHRoZXJlIGlzIG5vIHJlYXNvbiB3aHkgdGhlIGxvZyBtYW5hZ2VyIHdvdWxkIG5vdAorYmUgYWJsZSB0byBzd2FwIG1ldGhvZHMgYXV0b21hdGljYWxseSBhbmQgdHJhbnNwYXJlbnRseSBkZXBlbmRpbmcgb24gbG9hZAorY2hhcmFjdGVyaXN0aWNzLCBidXQgdGhpcyBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSBpZiBkZWxheWVkIGxvZ2dpbmcgd29ya3MgYXMKK2Rlc2lnbmVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy94ZnMtc2VsZi1kZXNjcmliaW5nLW1ldGFkYXRhLnR4dCBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMveGZzLXNlbGYtZGVzY3JpYmluZy1tZXRhZGF0YS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVhYTQ1NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMveGZzLXNlbGYtZGVzY3JpYmluZy1tZXRhZGF0YS50eHQKQEAgLTAsMCArMSwzNTAgQEAKK1hGUyBTZWxmIERlc2NyaWJpbmcgTWV0YWRhdGEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0KKworVGhlIGxhcmdlc3Qgc2NhbGFiaWxpdHkgcHJvYmxlbSBmYWNpbmcgWEZTIGlzIG5vdCBvbmUgb2YgYWxnb3JpdGhtaWMKK3NjYWxhYmlsaXR5LCBidXQgb2YgdmVyaWZpY2F0aW9uIG9mIHRoZSBmaWxlc3lzdGVtIHN0cnVjdHVyZS4gU2NhbGFiaWx0eSBvZiB0aGUKK3N0cnVjdHVyZXMgYW5kIGluZGV4ZXMgb24gZGlzayBhbmQgdGhlIGFsZ29yaXRobXMgZm9yIGl0ZXJhdGluZyB0aGVtIGFyZQorYWRlcXVhdGUgZm9yIHN1cHBvcnRpbmcgUEIgc2NhbGUgZmlsZXN5c3RlbXMgd2l0aCBiaWxsaW9ucyBvZiBpbm9kZXMsIGhvd2V2ZXIgaXQKK2lzIHRoaXMgdmVyeSBzY2FsYWJpbGl0eSB0aGF0IGNhdXNlcyB0aGUgdmVyaWZpY2F0aW9uIHByb2JsZW0uCisKK0FsbW9zdCBhbGwgbWV0YWRhdGEgb24gWEZTIGlzIGR5bmFtaWNhbGx5IGFsbG9jYXRlZC4gVGhlIG9ubHkgZml4ZWQgbG9jYXRpb24KK21ldGFkYXRhIGlzIHRoZSBhbGxvY2F0aW9uIGdyb3VwIGhlYWRlcnMgKFNCLCBBR0YsIEFHRkwgYW5kIEFHSSksIHdoaWxlIGFsbAorb3RoZXIgbWV0YWRhdGEgc3RydWN0dXJlcyBuZWVkIHRvIGJlIGRpc2NvdmVyZWQgYnkgd2Fsa2luZyB0aGUgZmlsZXN5c3RlbQorc3RydWN0dXJlIGluIGRpZmZlcmVudCB3YXlzLiBXaGlsZSB0aGlzIGlzIGFscmVhZHkgZG9uZSBieSB1c2Vyc3BhY2UgdG9vbHMgZm9yCit2YWxpZGF0aW5nIGFuZCByZXBhaXJpbmcgdGhlIHN0cnVjdHVyZSwgdGhlcmUgYXJlIGxpbWl0cyB0byB3aGF0IHRoZXkgY2FuCit2ZXJpZnksIGFuZCB0aGlzIGluIHR1cm4gbGltaXRzIHRoZSBzdXBwb3J0YWJsZSBzaXplIG9mIGFuIFhGUyBmaWxlc3lzdGVtLgorCitGb3IgZXhhbXBsZSwgaXQgaXMgZW50aXJlbHkgcG9zc2libGUgdG8gbWFudWFsbHkgdXNlIHhmc19kYiBhbmQgYSBiaXQgb2YKK3NjcmlwdGluZyB0byBhbmFseXNlIHRoZSBzdHJ1Y3R1cmUgb2YgYSAxMDBUQiBmaWxlc3lzdGVtIHdoZW4gdHJ5aW5nIHRvCitkZXRlcm1pbmUgdGhlIHJvb3QgY2F1c2Ugb2YgYSBjb3JydXB0aW9uIHByb2JsZW0sIGJ1dCBpdCBpcyBzdGlsbCBtYWlubHkgYQorbWFudWFsIHRhc2sgb2YgdmVyaWZ5aW5nIHRoYXQgdGhpbmdzIGxpa2Ugc2luZ2xlIGJpdCBlcnJvcnMgb3IgbWlzcGxhY2VkIHdyaXRlcword2VyZW4ndCB0aGUgdWx0aW1hdGUgY2F1c2Ugb2YgYSBjb3JydXB0aW9uIGV2ZW50LiBJdCBtYXkgdGFrZSBhIGZldyBob3VycyB0byBhCitmZXcgZGF5cyB0byBwZXJmb3JtIHN1Y2ggZm9yZW5zaWMgYW5hbHlzaXMsIHNvIGZvciBhdCB0aGlzIHNjYWxlIHJvb3QgY2F1c2UKK2FuYWx5c2lzIGlzIGVudGlyZWx5IHBvc3NpYmxlLgorCitIb3dldmVyLCBpZiB3ZSBzY2FsZSB0aGUgZmlsZXN5c3RlbSB1cCB0byAxUEIsIHdlIG5vdyBoYXZlIDEweCBhcyBtdWNoIG1ldGFkYXRhCit0byBhbmFseXNlIGFuZCBzbyB0aGF0IGFuYWx5c2lzIGJsb3dzIG91dCB0b3dhcmRzIHdlZWtzL21vbnRocyBvZiBmb3JlbnNpYyB3b3JrLgorTW9zdCBvZiB0aGUgYW5hbHlzaXMgd29yayBpcyBzbG93IGFuZCB0ZWRpb3VzLCBzbyBhcyB0aGUgYW1vdW50IG9mIGFuYWx5c2lzIGdvZXMKK3VwLCB0aGUgbW9yZSBsaWtlbHkgdGhhdCB0aGUgY2F1c2Ugd2lsbCBiZSBsb3N0IGluIHRoZSBub2lzZS4gIEhlbmNlIHRoZSBwcmltYXJ5Citjb25jZXJuIGZvciBzdXBwb3J0aW5nIFBCIHNjYWxlIGZpbGVzeXN0ZW1zIGlzIG1pbmltaXNpbmcgdGhlIHRpbWUgYW5kIGVmZm9ydAorcmVxdWlyZWQgZm9yIGJhc2ljIGZvcmVuc2ljIGFuYWx5c2lzIG9mIHRoZSBmaWxlc3lzdGVtIHN0cnVjdHVyZS4KKworCitTZWxmIERlc2NyaWJpbmcgTWV0YWRhdGEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPbmUgb2YgdGhlIHByb2JsZW1zIHdpdGggdGhlIGN1cnJlbnQgbWV0YWRhdGEgZm9ybWF0IGlzIHRoYXQgYXBhcnQgZnJvbSB0aGUKK21hZ2ljIG51bWJlciBpbiB0aGUgbWV0YWRhdGEgYmxvY2ssIHdlIGhhdmUgbm8gb3RoZXIgd2F5IG9mIGlkZW50aWZ5aW5nIHdoYXQgaXQKK2lzIHN1cHBvc2VkIHRvIGJlLiBXZSBjYW4ndCBldmVuIGlkZW50aWZ5IGlmIGl0IGlzIHRoZSByaWdodCBwbGFjZS4gUHV0IHNpbXBseSwKK3lvdSBjYW4ndCBsb29rIGF0IGEgc2luZ2xlIG1ldGFkYXRhIGJsb2NrIGluIGlzb2xhdGlvbiBhbmQgc2F5ICJ5ZXMsIGl0IGlzCitzdXBwb3NlZCB0byBiZSB0aGVyZSBhbmQgdGhlIGNvbnRlbnRzIGFyZSB2YWxpZCIuCisKK0hlbmNlIG1vc3Qgb2YgdGhlIHRpbWUgc3BlbnQgb24gZm9yZW5zaWMgYW5hbHlzaXMgaXMgc3BlbnQgZG9pbmcgYmFzaWMKK3ZlcmlmaWNhdGlvbiBvZiBtZXRhZGF0YSB2YWx1ZXMsIGxvb2tpbmcgZm9yIHZhbHVlcyB0aGF0IGFyZSBpbiByYW5nZSAoYW5kIGhlbmNlCitub3QgZGV0ZWN0ZWQgYnkgYXV0b21hdGVkIHZlcmlmaWNhdGlvbiBjaGVja3MpIGJ1dCBhcmUgbm90IGNvcnJlY3QuIEZpbmRpbmcgYW5kCit1bmRlcnN0YW5kaW5nIGhvdyB0aGluZ3MgbGlrZSBjcm9zcyBsaW5rZWQgYmxvY2sgbGlzdHMgKGUuZy4gc2libGluZworcG9pbnRlcnMgaW4gYSBidHJlZSBlbmQgdXAgd2l0aCBsb29wcyBpbiB0aGVtKSBhcmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHdoYXQKK3dlbnQgd3JvbmcsIGJ1dCBpdCBpcyBpbXBvc3NpYmxlIHRvIHRlbGwgd2hhdCBvcmRlciB0aGUgYmxvY2tzIHdlcmUgbGlua2VkIGludG8KK2VhY2ggb3RoZXIgb3Igd3JpdHRlbiB0byBkaXNrIGFmdGVyIHRoZSBmYWN0LgorCitIZW5jZSB3ZSBuZWVkIHRvIHJlY29yZCBtb3JlIGluZm9ybWF0aW9uIGludG8gdGhlIG1ldGFkYXRhIHRvIGFsbG93IHVzIHRvCitxdWlja2x5IGRldGVybWluZSBpZiB0aGUgbWV0YWRhdGEgaXMgaW50YWN0IGFuZCBjYW4gYmUgaWdub3JlZCBmb3IgdGhlIHB1cnBvc2UKK29mIGFuYWx5c2lzLiBXZSBjYW4ndCBwcm90ZWN0IGFnYWluc3QgZXZlcnkgcG9zc2libGUgdHlwZSBvZiBlcnJvciwgYnV0IHdlIGNhbgorZW5zdXJlIHRoYXQgY29tbW9uIHR5cGVzIG9mIGVycm9ycyBhcmUgZWFzaWx5IGRldGVjdGFibGUuICBIZW5jZSB0aGUgY29uY2VwdCBvZgorc2VsZiBkZXNjcmliaW5nIG1ldGFkYXRhLgorCitUaGUgZmlyc3QsIGZ1bmRhbWVudGFsIHJlcXVpcmVtZW50IG9mIHNlbGYgZGVzY3JpYmluZyBtZXRhZGF0YSBpcyB0aGF0IHRoZQorbWV0YWRhdGEgb2JqZWN0IGNvbnRhaW5zIHNvbWUgZm9ybSBvZiB1bmlxdWUgaWRlbnRpZmllciBpbiBhIHdlbGwga25vd24KK2xvY2F0aW9uLiBUaGlzIGFsbG93cyB1cyB0byBpZGVudGlmeSB0aGUgZXhwZWN0ZWQgY29udGVudHMgb2YgdGhlIGJsb2NrIGFuZAoraGVuY2UgcGFyc2UgYW5kIHZlcmlmeSB0aGUgbWV0YWRhdGEgb2JqZWN0LiBJRiB3ZSBjYW4ndCBpbmRlcGVuZGVudGx5IGlkZW50aWZ5Cit0aGUgdHlwZSBvZiBtZXRhZGF0YSBpbiB0aGUgb2JqZWN0LCB0aGVuIHRoZSBtZXRhZGF0YSBkb2Vzbid0IGRlc2NyaWJlIGl0c2VsZgordmVyeSB3ZWxsIGF0IGFsbCEKKworTHVja2lseSwgYWxtb3N0IGFsbCBYRlMgbWV0YWRhdGEgaGFzIG1hZ2ljIG51bWJlcnMgZW1iZWRkZWQgYWxyZWFkeSAtIG9ubHkgdGhlCitBR0ZMLCByZW1vdGUgc3ltbGlua3MgYW5kIHJlbW90ZSBhdHRyaWJ1dGUgYmxvY2tzIGRvIG5vdCBjb250YWluIGlkZW50aWZ5aW5nCittYWdpYyBudW1iZXJzLiBIZW5jZSB3ZSBjYW4gY2hhbmdlIHRoZSBvbi1kaXNrIGZvcm1hdCBvZiBhbGwgdGhlc2Ugb2JqZWN0cyB0bworYWRkIG1vcmUgaWRlbnRpZnlpbmcgaW5mb3JtYXRpb24gYW5kIGRldGVjdCB0aGlzIHNpbXBseSBieSBjaGFuZ2luZyB0aGUgbWFnaWMKK251bWJlcnMgaW4gdGhlIG1ldGFkYXRhIG9iamVjdHMuIFRoYXQgaXMsIGlmIGl0IGhhcyB0aGUgY3VycmVudCBtYWdpYyBudW1iZXIsCit0aGUgbWV0YWRhdGEgaXNuJ3Qgc2VsZiBpZGVudGlmeWluZy4gSWYgaXQgY29udGFpbnMgYSBuZXcgbWFnaWMgbnVtYmVyLCBpdCBpcworc2VsZiBpZGVudGlmeWluZyBhbmQgd2UgY2FuIGRvIG11Y2ggbW9yZSBleHBhbnNpdmUgYXV0b21hdGVkIHZlcmlmaWNhdGlvbiBvZiB0aGUKK21ldGFkYXRhIG9iamVjdCBhdCBydW50aW1lLCBkdXJpbmcgZm9yZW5zaWMgYW5hbHlzaXMgb3IgcmVwYWlyLgorCitBcyBhIHByaW1hcnkgY29uY2Vybiwgc2VsZiBkZXNjcmliaW5nIG1ldGFkYXRhIG5lZWRzIHNvbWUgZm9ybSBvZiBvdmVyYWxsCitpbnRlZ3JpdHkgY2hlY2tpbmcuIFdlIGNhbm5vdCB0cnVzdCB0aGUgbWV0YWRhdGEgaWYgd2UgY2Fubm90IHZlcmlmeSB0aGF0IGl0IGhhcworbm90IGJlZW4gY2hhbmdlZCBhcyBhIHJlc3VsdCBvZiBleHRlcm5hbCBpbmZsdWVuY2VzLiBIZW5jZSB3ZSBuZWVkIHNvbWUgZm9ybSBvZgoraW50ZWdyaXR5IGNoZWNrLCBhbmQgdGhpcyBpcyBkb25lIGJ5IGFkZGluZyBDUkMzMmMgdmFsaWRhdGlvbiB0byB0aGUgbWV0YWRhdGEKK2Jsb2NrLiBJZiB3ZSBjYW4gdmVyaWZ5IHRoZSBibG9jayBjb250YWlucyB0aGUgbWV0YWRhdGEgaXQgd2FzIGludGVuZGVkIHRvCitjb250YWluLCBhIGxhcmdlIGFtb3VudCBvZiB0aGUgbWFudWFsIHZlcmlmaWNhdGlvbiB3b3JrIGNhbiBiZSBza2lwcGVkLgorCitDUkMzMmMgd2FzIHNlbGVjdGVkIGFzIG1ldGFkYXRhIGNhbm5vdCBiZSBtb3JlIHRoYW4gNjRrIGluIGxlbmd0aCBpbiBYRlMgYW5kCitoZW5jZSBhIDMyIGJpdCBDUkMgaXMgbW9yZSB0aGFuIHN1ZmZpY2llbnQgdG8gZGV0ZWN0IG11bHRpLWJpdCBlcnJvcnMgaW4KK21ldGFkYXRhIGJsb2Nrcy4gQ1JDMzJjIGlzIGFsc28gbm93IGhhcmR3YXJlIGFjY2VsZXJhdGVkIG9uIGNvbW1vbiBDUFVzIHNvIGl0IGlzCitmYXN0LiBTbyB3aGlsZSBDUkMzMmMgaXMgbm90IHRoZSBzdHJvbmdlc3Qgb2YgcG9zc2libGUgaW50ZWdyaXR5IGNoZWNrcyB0aGF0Citjb3VsZCBiZSB1c2VkLCBpdCBpcyBtb3JlIHRoYW4gc3VmZmljaWVudCBmb3Igb3VyIG5lZWRzIGFuZCBoYXMgcmVsYXRpdmVseQorbGl0dGxlIG92ZXJoZWFkLiBBZGRpbmcgc3VwcG9ydCBmb3IgbGFyZ2VyIGludGVncml0eSBmaWVsZHMgYW5kL29yIGFsZ29yaXRobXMKK2RvZXMgcmVhbGx5IHByb3ZpZGUgYW55IGV4dHJhIHZhbHVlIG92ZXIgQ1JDMzJjLCBidXQgaXQgZG9lcyBhZGQgYSBsb3Qgb2YKK2NvbXBsZXhpdHkgYW5kIHNvIHRoZXJlIGlzIG5vIHByb3Zpc2lvbiBmb3IgY2hhbmdpbmcgdGhlIGludGVncml0eSBjaGVja2luZworbWVjaGFuaXNtLgorCitTZWxmIGRlc2NyaWJpbmcgbWV0YWRhdGEgbmVlZHMgdG8gY29udGFpbiBlbm91Z2ggaW5mb3JtYXRpb24gc28gdGhhdCB0aGUKK21ldGFkYXRhIGJsb2NrIGNhbiBiZSB2ZXJpZmllZCBhcyBiZWluZyBpbiB0aGUgY29ycmVjdCBwbGFjZSB3aXRob3V0IG5lZWRpbmcgdG8KK2xvb2sgYXQgYW55IG90aGVyIG1ldGFkYXRhLiBUaGlzIG1lYW5zIGl0IG5lZWRzIHRvIGNvbnRhaW4gbG9jYXRpb24gaW5mb3JtYXRpb24uCitKdXN0IGFkZGluZyBhIGJsb2NrIG51bWJlciB0byB0aGUgbWV0YWRhdGEgaXMgbm90IHN1ZmZpY2llbnQgdG8gcHJvdGVjdCBhZ2FpbnN0CittaXMtZGlyZWN0ZWQgd3JpdGVzIC0gYSB3cml0ZSBtaWdodCBiZSBtaXNkaXJlY3RlZCB0byB0aGUgd3JvbmcgTFVOIGFuZCBzbyBiZQord3JpdHRlbiB0byB0aGUgImNvcnJlY3QgYmxvY2siIG9mIHRoZSB3cm9uZyBmaWxlc3lzdGVtLiBIZW5jZSBsb2NhdGlvbgoraW5mb3JtYXRpb24gbXVzdCBjb250YWluIGEgZmlsZXN5c3RlbSBpZGVudGlmaWVyIGFzIHdlbGwgYXMgYSBibG9jayBudW1iZXIuCisKK0Fub3RoZXIga2V5IGluZm9ybWF0aW9uIHBvaW50IGluIGZvcmVuc2ljIGFuYWx5c2lzIGlzIGtub3dpbmcgd2hvIHRoZSBtZXRhZGF0YQorYmxvY2sgYmVsb25ncyB0by4gV2UgYWxyZWFkeSBrbm93IHRoZSB0eXBlLCB0aGUgbG9jYXRpb24sIHRoYXQgaXQgaXMgdmFsaWQKK2FuZC9vciBjb3JydXB0ZWQsIGFuZCBob3cgbG9uZyBhZ28gdGhhdCBpdCB3YXMgbGFzdCBtb2RpZmllZC4gS25vd2luZyB0aGUgb3duZXIKK29mIHRoZSBibG9jayBpcyBpbXBvcnRhbnQgYXMgaXQgYWxsb3dzIHVzIHRvIGZpbmQgb3RoZXIgcmVsYXRlZCBtZXRhZGF0YSB0bworZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiB0aGUgY29ycnVwdGlvbi4gRm9yIGV4YW1wbGUsIGlmIHdlIGhhdmUgYSBleHRlbnQgYnRyZWUKK29iamVjdCwgd2UgZG9uJ3Qga25vdyB3aGF0IGlub2RlIGl0IGJlbG9uZ3MgdG8gYW5kIGhlbmNlIGhhdmUgdG8gd2FsayB0aGUgZW50aXJlCitmaWxlc3lzdGVtIHRvIGZpbmQgdGhlIG93bmVyIG9mIHRoZSBibG9jay4gV29yc2UsIHRoZSBjb3JydXB0aW9uIGNvdWxkIG1lYW4gdGhhdAorbm8gb3duZXIgY2FuIGJlIGZvdW5kIChpLmUuIGl0J3MgYW4gb3JwaGFuIGJsb2NrKSwgYW5kIHNvIHdpdGhvdXQgYW4gb3duZXIgZmllbGQKK2luIHRoZSBtZXRhZGF0YSB3ZSBoYXZlIG5vIGlkZWEgb2YgdGhlIHNjb3BlIG9mIHRoZSBjb3JydXB0aW9uLiBJZiB3ZSBoYXZlIGFuCitvd25lciBmaWVsZCBpbiB0aGUgbWV0YWRhdGEgb2JqZWN0LCB3ZSBjYW4gaW1tZWRpYXRlbHkgZG8gdG9wIGRvd24gdmFsaWRhdGlvbiB0bworZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiB0aGUgcHJvYmxlbS4KKworRGlmZmVyZW50IHR5cGVzIG9mIG1ldGFkYXRhIGhhdmUgZGlmZmVyZW50IG93bmVyIGlkZW50aWZpZXJzLiBGb3IgZXhhbXBsZSwKK2RpcmVjdG9yeSwgYXR0cmlidXRlIGFuZCBleHRlbnQgdHJlZSBibG9ja3MgYXJlIGFsbCBvd25lZCBieSBhbiBpbm9kZSwgd2hpbHN0CitmcmVlc3BhY2UgYnRyZWUgYmxvY2tzIGFyZSBvd25lZCBieSBhbiBhbGxvY2F0aW9uIGdyb3VwLiBIZW5jZSB0aGUgc2l6ZSBhbmQKK2NvbnRlbnRzIG9mIHRoZSBvd25lciBmaWVsZCBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgdHlwZSBvZiBtZXRhZGF0YSBvYmplY3Qgd2UgYXJlCitsb29raW5nIGF0LiAgVGhlIG93bmVyIGluZm9ybWF0aW9uIGNhbiBhbHNvIGlkZW50aWZ5IG1pc3BsYWNlZCB3cml0ZXMgKGUuZy4KK2ZyZWVzcGFjZSBidHJlZSBibG9jayB3cml0dGVuIHRvIHRoZSB3cm9uZyBBRykuCisKK1NlbGYgZGVzY3JpYmluZyBtZXRhZGF0YSBhbHNvIG5lZWRzIHRvIGNvbnRhaW4gc29tZSBpbmRpY2F0aW9uIG9mIHdoZW4gaXQgd2FzCit3cml0dGVuIHRvIHRoZSBmaWxlc3lzdGVtLiBPbmUgb2YgdGhlIGtleSBpbmZvcm1hdGlvbiBwb2ludHMgd2hlbiBkb2luZyBmb3JlbnNpYworYW5hbHlzaXMgaXMgaG93IHJlY2VudGx5IHRoZSBibG9jayB3YXMgbW9kaWZpZWQuIENvcnJlbGF0aW9uIG9mIHNldCBvZiBjb3JydXB0ZWQKK21ldGFkYXRhIGJsb2NrcyBiYXNlZCBvbiBtb2RpZmljYXRpb24gdGltZXMgaXMgaW1wb3J0YW50IGFzIGl0IGNhbiBpbmRpY2F0ZQord2hldGhlciB0aGUgY29ycnVwdGlvbnMgYXJlIHJlbGF0ZWQsIHdoZXRoZXIgdGhlcmUncyBiZWVuIG11bHRpcGxlIGNvcnJ1cHRpb24KK2V2ZW50cyB0aGF0IGxlYWQgdG8gdGhlIGV2ZW50dWFsIGZhaWx1cmUsIGFuZCBldmVuIHdoZXRoZXIgdGhlcmUgYXJlIGNvcnJ1cHRpb25zCitwcmVzZW50IHRoYXQgdGhlIHJ1bi10aW1lIHZlcmlmaWNhdGlvbiBpcyBub3QgZGV0ZWN0aW5nLgorCitGb3IgZXhhbXBsZSwgd2UgY2FuIGRldGVybWluZSB3aGV0aGVyIGEgbWV0YWRhdGEgb2JqZWN0IGlzIHN1cHBvc2VkIHRvIGJlIGZyZWUKK3NwYWNlIG9yIHN0aWxsIGFsbG9jYXRlZCBpZiBpdCBpcyBzdGlsbCByZWZlcmVuY2VkIGJ5IGl0cyBvd25lciBieSBsb29raW5nIGF0Cit3aGVuIHRoZSBmcmVlIHNwYWNlIGJ0cmVlIGJsb2NrIHRoYXQgY29udGFpbnMgdGhlIGJsb2NrIHdhcyBsYXN0IHdyaXR0ZW4KK2NvbXBhcmVkIHRvIHdoZW4gdGhlIG1ldGFkYXRhIG9iamVjdCBpdHNlbGYgd2FzIGxhc3Qgd3JpdHRlbi4gIElmIHRoZSBmcmVlIHNwYWNlCitibG9jayBpcyBtb3JlIHJlY2VudCB0aGFuIHRoZSBvYmplY3QgYW5kIHRoZSBvYmplY3QncyBvd25lciwgdGhlbiB0aGVyZSBpcyBhCit2ZXJ5IGdvb2QgY2hhbmNlIHRoYXQgdGhlIGJsb2NrIHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBvd25lci4KKworVG8gcHJvdmlkZSB0aGlzICJ3cml0dGVuIHRpbWVzdGFtcCIsIGVhY2ggbWV0YWRhdGEgYmxvY2sgZ2V0cyB0aGUgTG9nIFNlcXVlbmNlCitOdW1iZXIgKExTTikgb2YgdGhlIG1vc3QgcmVjZW50IHRyYW5zYWN0aW9uIGl0IHdhcyBtb2RpZmllZCBvbiB3cml0dGVuIGludG8gaXQuCitUaGlzIG51bWJlciB3aWxsIGFsd2F5cyBpbmNyZWFzZSBvdmVyIHRoZSBsaWZlIG9mIHRoZSBmaWxlc3lzdGVtLCBhbmQgdGhlIG9ubHkKK3RoaW5nIHRoYXQgcmVzZXRzIGl0IGlzIHJ1bm5pbmcgeGZzX3JlcGFpciBvbiB0aGUgZmlsZXN5c3RlbS4gRnVydGhlciwgYnkgdXNlIG9mCit0aGUgTFNOIHdlIGNhbiB0ZWxsIGlmIHRoZSBjb3JydXB0ZWQgbWV0YWRhdGEgYWxsIGJlbG9uZ2VkIHRvIHRoZSBzYW1lIGxvZworY2hlY2twb2ludCBhbmQgaGVuY2UgaGF2ZSBzb21lIGlkZWEgb2YgaG93IG11Y2ggbW9kaWZpY2F0aW9uIG9jY3VycmVkIGJldHdlZW4KK3RoZSBmaXJzdCBhbmQgbGFzdCBpbnN0YW5jZSBvZiBjb3JydXB0IG1ldGFkYXRhIG9uIGRpc2sgYW5kLCBmdXJ0aGVyLCBob3cgbXVjaAorbW9kaWZpY2F0aW9uIG9jY3VycmVkIGJldHdlZW4gdGhlIGNvcnJ1cHRpb24gYmVpbmcgd3JpdHRlbiBhbmQgd2hlbiBpdCB3YXMKK2RldGVjdGVkLgorCitSdW50aW1lIFZhbGlkYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLQorCitWYWxpZGF0aW9uIG9mIHNlbGYtZGVzY3JpYmluZyBtZXRhZGF0YSB0YWtlcyBwbGFjZSBhdCBydW50aW1lIGluIHR3byBwbGFjZXM6CisKKwktIGltbWVkaWF0ZWx5IGFmdGVyIGEgc3VjY2Vzc2Z1bCByZWFkIGZyb20gZGlzaworCS0gaW1tZWRpYXRlbHkgcHJpb3IgdG8gd3JpdGUgSU8gc3VibWlzc2lvbgorCitUaGUgdmVyaWZpY2F0aW9uIGlzIGNvbXBsZXRlbHkgc3RhdGVsZXNzIC0gaXQgaXMgZG9uZSBpbmRlcGVuZGVudGx5IG9mIHRoZQorbW9kaWZpY2F0aW9uIHByb2Nlc3MsIGFuZCBzZWVrcyBvbmx5IHRvIGNoZWNrIHRoYXQgdGhlIG1ldGFkYXRhIGlzIHdoYXQgaXQgc2F5cworaXQgaXMgYW5kIHRoYXQgdGhlIG1ldGFkYXRhIGZpZWxkcyBhcmUgd2l0aGluIGJvdW5kcyBhbmQgaW50ZXJuYWxseSBjb25zaXN0ZW50LgorQXMgc3VjaCwgd2UgY2Fubm90IGNhdGNoIGFsbCB0eXBlcyBvZiBjb3JydXB0aW9uIHRoYXQgY2FuIG9jY3VyIHdpdGhpbiBhIGJsb2NrCithcyB0aGVyZSBtYXkgYmUgY2VydGFpbiBsaW1pdGF0aW9ucyB0aGF0IG9wZXJhdGlvbmFsIHN0YXRlIGVuZm9yY2VzIG9mIHRoZQorbWV0YWRhdGEsIG9yIHRoZXJlIG1heSBiZSBjb3JydXB0aW9uIG9mIGludGVyYmxvY2sgcmVsYXRpb25zaGlwcyAoZS5nLiBjb3JydXB0ZWQKK3NpYmxpbmcgcG9pbnRlciBsaXN0cykuIEhlbmNlIHdlIHN0aWxsIG5lZWQgc3RhdGVmdWwgY2hlY2tpbmcgaW4gdGhlIG1haW4gY29kZQorYm9keSwgYnV0IGluIGdlbmVyYWwgbW9zdCBvZiB0aGUgcGVyLWZpZWxkIHZhbGlkYXRpb24gaXMgaGFuZGxlZCBieSB0aGUKK3ZlcmlmaWVycy4KKworRm9yIHJlYWQgdmVyaWZpY2F0aW9uLCB0aGUgY2FsbGVyIG5lZWRzIHRvIHNwZWNpZnkgdGhlIGV4cGVjdGVkIHR5cGUgb2YgbWV0YWRhdGEKK3RoYXQgaXQgc2hvdWxkIHNlZSwgYW5kIHRoZSBJTyBjb21wbGV0aW9uIHByb2Nlc3MgdmVyaWZpZXMgdGhhdCB0aGUgbWV0YWRhdGEKK29iamVjdCBtYXRjaGVzIHdoYXQgd2FzIGV4cGVjdGVkLiBJZiB0aGUgdmVyaWZpY2F0aW9uIHByb2Nlc3MgZmFpbHMsIHRoZW4gaXQKK21hcmtzIHRoZSBvYmplY3QgYmVpbmcgcmVhZCBhcyBFRlNDT1JSVVBURUQuIFRoZSBjYWxsZXIgbmVlZHMgdG8gY2F0Y2ggdGhpcworZXJyb3IgKHNhbWUgYXMgZm9yIElPIGVycm9ycyksIGFuZCBpZiBpdCBuZWVkcyB0byB0YWtlIHNwZWNpYWwgYWN0aW9uIGR1ZSB0byBhCit2ZXJpZmljYXRpb24gZXJyb3IgaXQgY2FuIGRvIHNvIGJ5IGNhdGNoaW5nIHRoZSBFRlNDT1JSVVBURUQgZXJyb3IgdmFsdWUuIElmIHdlCituZWVkIG1vcmUgZGlzY3JpbWluYXRpb24gb2YgZXJyb3IgdHlwZSBhdCBoaWdoZXIgbGV2ZWxzLCB3ZSBjYW4gZGVmaW5lIG5ldworZXJyb3IgbnVtYmVycyBmb3IgZGlmZmVyZW50IGVycm9ycyBhcyBuZWNlc3NhcnkuCisKK1RoZSBmaXJzdCBzdGVwIGluIHJlYWQgdmVyaWZpY2F0aW9uIGlzIGNoZWNraW5nIHRoZSBtYWdpYyBudW1iZXIgYW5kIGRldGVybWluaW5nCit3aGV0aGVyIENSQyB2YWxpZGF0aW5nIGlzIG5lY2Vzc2FyeS4gSWYgaXQgaXMsIHRoZSBDUkMzMmMgaXMgY2FsY3VsYXRlZCBhbmQKK2NvbXBhcmVkIGFnYWluc3QgdGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgb2JqZWN0IGl0c2VsZi4gT25jZSB0aGlzIGlzIHZhbGlkYXRlZCwKK2Z1cnRoZXIgY2hlY2tzIGFyZSBtYWRlIGFnYWluc3QgdGhlIGxvY2F0aW9uIGluZm9ybWF0aW9uLCBmb2xsb3dlZCBieSBleHRlbnNpdmUKK29iamVjdCBzcGVjaWZpYyBtZXRhZGF0YSB2YWxpZGF0aW9uLiBJZiBhbnkgb2YgdGhlc2UgY2hlY2tzIGZhaWwsIHRoZW4gdGhlCitidWZmZXIgaXMgY29uc2lkZXJlZCBjb3JydXB0IGFuZCB0aGUgRUZTQ09SUlVQVEVEIGVycm9yIGlzIHNldCBhcHByb3ByaWF0ZWx5LgorCitXcml0ZSB2ZXJpZmljYXRpb24gaXMgdGhlIG9wcG9zaXRlIG9mIHRoZSByZWFkIHZlcmlmaWNhdGlvbiAtIGZpcnN0IHRoZSBvYmplY3QKK2lzIGV4dGVuc2l2ZWx5IHZlcmlmaWVkIGFuZCBpZiBpdCBpcyBPSyB3ZSB0aGVuIHVwZGF0ZSB0aGUgTFNOIGZyb20gdGhlIGxhc3QKK21vZGlmaWNhdGlvbiBtYWRlIHRvIHRoZSBvYmplY3QsIEFmdGVyIHRoaXMsIHdlIGNhbGN1bGF0ZSB0aGUgQ1JDIGFuZCBpbnNlcnQgaXQKK2ludG8gdGhlIG9iamVjdC4gT25jZSB0aGlzIGlzIGRvbmUgdGhlIHdyaXRlIElPIGlzIGFsbG93ZWQgdG8gY29udGludWUuIElmIGFueQorZXJyb3Igb2NjdXJzIGR1cmluZyB0aGlzIHByb2Nlc3MsIHRoZSBidWZmZXIgaXMgYWdhaW4gbWFya2VkIHdpdGggYSBFRlNDT1JSVVBURUQKK2Vycm9yIGZvciB0aGUgaGlnaGVyIGxheWVycyB0byBjYXRjaC4KKworU3RydWN0dXJlcworLS0tLS0tLS0tLQorCitBIHR5cGljYWwgb24tZGlzayBzdHJ1Y3R1cmUgbmVlZHMgdG8gY29udGFpbiB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOgorCitzdHJ1Y3QgeGZzX29uZGlza19oZHIgeworICAgICAgICBfX2JlMzIgIG1hZ2ljOwkJLyogbWFnaWMgbnVtYmVyICovCisgICAgICAgIF9fYmUzMiAgY3JjOwkJLyogQ1JDLCBub3QgbG9nZ2VkICovCisgICAgICAgIHV1aWRfdCAgdXVpZDsJCS8qIGZpbGVzeXN0ZW0gaWRlbnRpZmllciAqLworICAgICAgICBfX2JlNjQgIG93bmVyOwkJLyogcGFyZW50IG9iamVjdCAqLworICAgICAgICBfX2JlNjQgIGJsa25vOwkJLyogbG9jYXRpb24gb24gZGlzayAqLworICAgICAgICBfX2JlNjQgIGxzbjsJCS8qIGxhc3QgbW9kaWZpY2F0aW9uIGluIGxvZywgbm90IGxvZ2dlZCAqLworfTsKKworRGVwZW5kaW5nIG9uIHRoZSBtZXRhZGF0YSwgdGhpcyBpbmZvcm1hdGlvbiBtYXkgYmUgcGFydCBvZiBhIGhlYWRlciBzdHJ1Y3R1cmUKK3NlcGFyYXRlIHRvIHRoZSBtZXRhZGF0YSBjb250ZW50cywgb3IgbWF5IGJlIGRpc3RyaWJ1dGVkIHRocm91Z2ggYW4gZXhpc3RpbmcKK3N0cnVjdHVyZS4gVGhlIGxhdHRlciBvY2N1cnMgd2l0aCBtZXRhZGF0YSB0aGF0IGFscmVhZHkgY29udGFpbnMgc29tZSBvZiB0aGlzCitpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgc3VwZXJibG9jayBhbmQgQUcgaGVhZGVycy4KKworT3RoZXIgbWV0YWRhdGEgbWF5IGhhdmUgZGlmZmVyZW50IGZvcm1hdHMgZm9yIHRoZSBpbmZvcm1hdGlvbiwgYnV0IHRoZSBzYW1lCitsZXZlbCBvZiBpbmZvcm1hdGlvbiBpcyBnZW5lcmFsbHkgcHJvdmlkZWQuIEZvciBleGFtcGxlOgorCisJLSBzaG9ydCBidHJlZSBibG9ja3MgaGF2ZSBhIDMyIGJpdCBvd25lciAoYWcgbnVtYmVyKSBhbmQgYSAzMiBiaXQgYmxvY2sKKwkgIG51bWJlciBmb3IgbG9jYXRpb24uIFRoZSB0d28gb2YgdGhlc2UgY29tYmluZWQgcHJvdmlkZSB0aGUgc2FtZQorCSAgaW5mb3JtYXRpb24gYXMgQG93bmVyIGFuZCBAYmxrbm8gaW4gZWggYWJvdmUgc3RydWN0dXJlLCBidXQgdXNpbmcgOAorCSAgYnl0ZXMgbGVzcyBzcGFjZSBvbiBkaXNrLgorCisJLSBkaXJlY3RvcnkvYXR0cmlidXRlIG5vZGUgYmxvY2tzIGhhdmUgYSAxNiBiaXQgbWFnaWMgbnVtYmVyLCBhbmQgdGhlCisJICBoZWFkZXIgdGhhdCBjb250YWlucyB0aGUgbWFnaWMgbnVtYmVyIGhhcyBvdGhlciBpbmZvcm1hdGlvbiBpbiBpdCBhcworCSAgd2VsbC4gaGVuY2UgdGhlIGFkZGl0aW9uYWwgbWV0YWRhdGEgaGVhZGVycyBjaGFuZ2UgdGhlIG92ZXJhbGwgZm9ybWF0CisJICBvZiB0aGUgbWV0YWRhdGEuCisKK0EgdHlwaWNhbCBidWZmZXIgcmVhZCB2ZXJpZmllciBpcyBzdHJ1Y3R1cmVkIGFzIGZvbGxvd3M6CisKKyNkZWZpbmUgWEZTX0ZPT19DUkNfT0ZGCQlvZmZzZXRvZihzdHJ1Y3QgeGZzX29uZGlza19oZHIsIGNyYykKKworc3RhdGljIHZvaWQKK3hmc19mb29fcmVhZF92ZXJpZnkoCisJc3RydWN0IHhmc19idWYJKmJwKQoreworICAgICAgIHN0cnVjdCB4ZnNfbW91bnQgKm1wID0gYnAtPmJfdGFyZ2V0LT5idF9tb3VudDsKKworICAgICAgICBpZiAoKHhmc19zYl92ZXJzaW9uX2hhc2NyYygmbXAtPm1fc2IpICYmCisgICAgICAgICAgICAgIXhmc192ZXJpZnlfY2tzdW0oYnAtPmJfYWRkciwgQkJUT0IoYnAtPmJfbGVuZ3RoKSwKKwkJCQkJWEZTX0ZPT19DUkNfT0ZGKSkgfHwKKyAgICAgICAgICAgICF4ZnNfZm9vX3ZlcmlmeShicCkpIHsKKyAgICAgICAgICAgICAgICBYRlNfQ09SUlVQVElPTl9FUlJPUihfX2Z1bmNfXywgWEZTX0VSUkxFVkVMX0xPVywgbXAsIGJwLT5iX2FkZHIpOworICAgICAgICAgICAgICAgIHhmc19idWZfaW9lcnJvcihicCwgRUZTQ09SUlVQVEVEKTsKKyAgICAgICAgfQorfQorCitUaGUgY29kZSBlbnN1cmVzIHRoYXQgdGhlIENSQyBpcyBvbmx5IGNoZWNrZWQgaWYgdGhlIGZpbGVzeXN0ZW0gaGFzIENSQ3MgZW5hYmxlZAorYnkgY2hlY2tpbmcgdGhlIHN1cGVyYmxvY2sgb2YgdGhlIGZlYXR1cmUgYml0LCBhbmQgdGhlbiBpZiB0aGUgQ1JDIHZlcmlmaWVzIE9LCisob3IgaXMgbm90IG5lZWRlZCkgaXQgdmVyaWZpZXMgdGhlIGFjdHVhbCBjb250ZW50cyBvZiB0aGUgYmxvY2suCisKK1RoZSB2ZXJpZmllciBmdW5jdGlvbiB3aWxsIHRha2UgYSBjb3VwbGUgb2YgZGlmZmVyZW50IGZvcm1zLCBkZXBlbmRpbmcgb24KK3doZXRoZXIgdGhlIG1hZ2ljIG51bWJlciBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGZvcm1hdCBvZiB0aGUgYmxvY2suIEluCit0aGUgY2FzZSBpdCBjYW4ndCwgdGhlIGNvZGUgaXMgc3RydWN0dXJlZCBhcyBmb2xsb3dzOgorCitzdGF0aWMgYm9vbAoreGZzX2Zvb192ZXJpZnkoCisJc3RydWN0IHhmc19idWYJCSpicCkKK3sKKyAgICAgICAgc3RydWN0IHhmc19tb3VudAkqbXAgPSBicC0+Yl90YXJnZXQtPmJ0X21vdW50OworICAgICAgICBzdHJ1Y3QgeGZzX29uZGlza19oZHIJKmhkciA9IGJwLT5iX2FkZHI7CisKKyAgICAgICAgaWYgKGhkci0+bWFnaWMgIT0gY3B1X3RvX2JlMzIoWEZTX0ZPT19NQUdJQykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmICgheGZzX3NiX3ZlcnNpb25faGFzY3JjKCZtcC0+bV9zYikpIHsKKwkJaWYgKCF1dWlkX2VxdWFsKCZoZHItPnV1aWQsICZtcC0+bV9zYi5zYl91dWlkKSkKKwkJCXJldHVybiBmYWxzZTsKKwkJaWYgKGJwLT5iX2JuICE9IGJlNjRfdG9fY3B1KGhkci0+Ymxrbm8pKQorCQkJcmV0dXJuIGZhbHNlOworCQlpZiAoaGRyLT5vd25lciA9PSAwKQorCQkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qIG9iamVjdCBzcGVjaWZpYyB2ZXJpZmljYXRpb24gY2hlY2tzIGhlcmUgKi8KKworICAgICAgICByZXR1cm4gdHJ1ZTsKK30KKworSWYgdGhlcmUgYXJlIGRpZmZlcmVudCBtYWdpYyBudW1iZXJzIGZvciB0aGUgZGlmZmVyZW50IGZvcm1hdHMsIHRoZSB2ZXJpZmllcgord2lsbCBsb29rIGxpa2U6CisKK3N0YXRpYyBib29sCit4ZnNfZm9vX3ZlcmlmeSgKKwlzdHJ1Y3QgeGZzX2J1ZgkJKmJwKQoreworICAgICAgICBzdHJ1Y3QgeGZzX21vdW50CSptcCA9IGJwLT5iX3RhcmdldC0+YnRfbW91bnQ7CisgICAgICAgIHN0cnVjdCB4ZnNfb25kaXNrX2hkcgkqaGRyID0gYnAtPmJfYWRkcjsKKworICAgICAgICBpZiAoaGRyLT5tYWdpYyA9PSBjcHVfdG9fYmUzMihYRlNfRk9PX0NSQ19NQUdJQykpIHsKKwkJaWYgKCF1dWlkX2VxdWFsKCZoZHItPnV1aWQsICZtcC0+bV9zYi5zYl91dWlkKSkKKwkJCXJldHVybiBmYWxzZTsKKwkJaWYgKGJwLT5iX2JuICE9IGJlNjRfdG9fY3B1KGhkci0+Ymxrbm8pKQorCQkJcmV0dXJuIGZhbHNlOworCQlpZiAoaGRyLT5vd25lciA9PSAwKQorCQkJcmV0dXJuIGZhbHNlOworCX0gZWxzZSBpZiAoaGRyLT5tYWdpYyAhPSBjcHVfdG9fYmUzMihYRlNfRk9PX01BR0lDKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogb2JqZWN0IHNwZWNpZmljIHZlcmlmaWNhdGlvbiBjaGVja3MgaGVyZSAqLworCisgICAgICAgIHJldHVybiB0cnVlOworfQorCitXcml0ZSB2ZXJpZmllcnMgYXJlIHZlcnkgc2ltaWxhciB0byB0aGUgcmVhZCB2ZXJpZmllcnMsIHRoZXkganVzdCBkbyB0aGluZ3MgaW4KK3RoZSBvcHBvc2l0ZSBvcmRlciB0byB0aGUgcmVhZCB2ZXJpZmllcnMuIEEgdHlwaWNhbCB3cml0ZSB2ZXJpZmllcjoKKworc3RhdGljIHZvaWQKK3hmc19mb29fd3JpdGVfdmVyaWZ5KAorCXN0cnVjdCB4ZnNfYnVmCSpicCkKK3sKKwlzdHJ1Y3QgeGZzX21vdW50CSptcCA9IGJwLT5iX3RhcmdldC0+YnRfbW91bnQ7CisJc3RydWN0IHhmc19idWZfbG9nX2l0ZW0JKmJpcCA9IGJwLT5iX2ZzcHJpdjsKKworCWlmICgheGZzX2Zvb192ZXJpZnkoYnApKSB7CisJCVhGU19DT1JSVVBUSU9OX0VSUk9SKF9fZnVuY19fLCBYRlNfRVJSTEVWRUxfTE9XLCBtcCwgYnAtPmJfYWRkcik7CisJCXhmc19idWZfaW9lcnJvcihicCwgRUZTQ09SUlVQVEVEKTsKKwkJcmV0dXJuOworCX0KKworCWlmICgheGZzX3NiX3ZlcnNpb25faGFzY3JjKCZtcC0+bV9zYikpCisJCXJldHVybjsKKworCisJaWYgKGJpcCkgeworCQlzdHJ1Y3QgeGZzX29uZGlza19oZHIJKmhkciA9IGJwLT5iX2FkZHI7CisJCWhkci0+bHNuID0gY3B1X3RvX2JlNjQoYmlwLT5ibGlfaXRlbS5saV9sc24pOworCX0KKwl4ZnNfdXBkYXRlX2Nrc3VtKGJwLT5iX2FkZHIsIEJCVE9CKGJwLT5iX2xlbmd0aCksIFhGU19GT09fQ1JDX09GRik7Cit9CisKK1RoaXMgd2lsbCB2ZXJpZnkgdGhlIGludGVybmFsIHN0cnVjdHVyZSBvZiB0aGUgbWV0YWRhdGEgYmVmb3JlIHdlIGdvIGFueQorZnVydGhlciwgZGV0ZWN0aW5nIGNvcnJ1cHRpb25zIHRoYXQgaGF2ZSBvY2N1cnJlZCBhcyB0aGUgbWV0YWRhdGEgaGFzIGJlZW4KK21vZGlmaWVkIGluIG1lbW9yeS4gSWYgdGhlIG1ldGFkYXRhIHZlcmlmaWVzIE9LLCBhbmQgQ1JDcyBhcmUgZW5hYmxlZCwgd2UgdGhlbgordXBkYXRlIHRoZSBMU04gZmllbGQgKHdoZW4gaXQgd2FzIGxhc3QgbW9kaWZpZWQpIGFuZCBjYWxjdWxhdGUgdGhlIENSQyBvbiB0aGUKK21ldGFkYXRhLiBPbmNlIHRoaXMgaXMgZG9uZSwgd2UgY2FuIGlzc3VlIHRoZSBJTy4KKworSW5vZGVzIGFuZCBEcXVvdHMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK0lub2RlcyBhbmQgZHF1b3RzIGFyZSBzcGVjaWFsIHNub3dmbGFrZXMuIFRoZXkgaGF2ZSBwZXItb2JqZWN0IENSQyBhbmQKK3NlbGYtaWRlbnRpZmllcnMsIGJ1dCB0aGV5IGFyZSBwYWNrZWQgc28gdGhhdCB0aGVyZSBhcmUgbXVsdGlwbGUgb2JqZWN0cyBwZXIKK2J1ZmZlci4gSGVuY2Ugd2UgZG8gbm90IHVzZSBwZXItYnVmZmVyIHZlcmlmaWVycyB0byBkbyB0aGUgd29yayBvZiBwZXItb2JqZWN0Cit2ZXJpZmljYXRpb24gYW5kIENSQyBjYWxjdWxhdGlvbnMuIFRoZSBwZXItYnVmZmVyIHZlcmlmaWVycyBzaW1wbHkgcGVyZm9ybSBiYXNpYworaWRlbnRpZmljYXRpb24gb2YgdGhlIGJ1ZmZlciAtIHRoYXQgdGhleSBjb250YWluIGlub2RlcyBvciBkcXVvdHMsIGFuZCB0aGF0Cit0aGVyZSBhcmUgbWFnaWMgbnVtYmVycyBpbiBhbGwgdGhlIGV4cGVjdGVkIHNwb3RzLiBBbGwgZnVydGhlciBDUkMgYW5kCit2ZXJpZmljYXRpb24gY2hlY2tzIGFyZSBkb25lIHdoZW4gZWFjaCBpbm9kZSBpcyByZWFkIGZyb20gb3Igd3JpdHRlbiBiYWNrIHRvIHRoZQorYnVmZmVyLgorCitUaGUgc3RydWN0dXJlIG9mIHRoZSB2ZXJpZmllcnMgYW5kIHRoZSBpZGVudGlmaWVycyBjaGVja3MgaXMgdmVyeSBzaW1pbGFyIHRvIHRoZQorYnVmZmVyIGNvZGUgZGVzY3JpYmVkIGFib3ZlLiBUaGUgb25seSBkaWZmZXJlbmNlIGlzIHdoZXJlIHRoZXkgYXJlIGNhbGxlZC4gRm9yCitleGFtcGxlLCBpbm9kZSByZWFkIHZlcmlmaWNhdGlvbiBpcyBkb25lIGluIHhmc19pcmVhZCgpIHdoZW4gdGhlIGlub2RlIGlzIGZpcnN0CityZWFkIG91dCBvZiB0aGUgYnVmZmVyIGFuZCB0aGUgc3RydWN0IHhmc19pbm9kZSBpcyBpbnN0YW50aWF0ZWQuIFRoZSBpbm9kZSBpcworYWxyZWFkeSBleHRlbnNpdmVseSB2ZXJpZmllZCBkdXJpbmcgd3JpdGViYWNrIGluIHhmc19pZmx1c2hfaW50LCBzbyB0aGUgb25seQorYWRkaXRpb24gaGVyZSBpcyB0byBhZGQgdGhlIExTTiBhbmQgQ1JDIHRvIHRoZSBpbm9kZSBhcyBpdCBpcyBjb3BpZWQgYmFjayBpbnRvCit0aGUgYnVmZmVyLgorCitYWFg6IGlub2RlIHVubGlua2VkIGxpc3QgbW9kaWZpY2F0aW9uIGRvZXNuJ3QgcmVjYWxjdWxhdGUgdGhlIGlub2RlIENSQyEgTm9uZSBvZgordGhlIHVubGlua2VkIGxpc3QgbW9kaWZpY2F0aW9ucyBjaGVjayBvciB1cGRhdGUgQ1JDcywgbmVpdGhlciBkdXJpbmcgdW5saW5rIG5vcgorbG9nIHJlY292ZXJ5LiBTbywgaXQncyBnb25lIHVubm90aWNlZCB1bnRpbCBub3cuIFRoaXMgd29uJ3QgbWF0dGVyIGltbWVkaWF0ZWx5IC0KK3JlcGFpciB3aWxsIHByb2JhYmx5IGNvbXBsYWluIGFib3V0IGl0IC0gYnV0IGl0IG5lZWRzIHRvIGJlIGZpeGVkLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3hmcy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3hmcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODE0NmU5ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMveGZzLnR4dApAQCAtMCwwICsxLDM1MCBAQAorCitUaGUgU0dJIFhGUyBGaWxlc3lzdGVtCis9PT09PT09PT09PT09PT09PT09PT09CisKK1hGUyBpcyBhIGhpZ2ggcGVyZm9ybWFuY2Ugam91cm5hbGluZyBmaWxlc3lzdGVtIHdoaWNoIG9yaWdpbmF0ZWQKK29uIHRoZSBTR0kgSVJJWCBwbGF0Zm9ybS4gIEl0IGlzIGNvbXBsZXRlbHkgbXVsdGktdGhyZWFkZWQsIGNhbgorc3VwcG9ydCBsYXJnZSBmaWxlcyBhbmQgbGFyZ2UgZmlsZXN5c3RlbXMsIGV4dGVuZGVkIGF0dHJpYnV0ZXMsCit2YXJpYWJsZSBibG9jayBzaXplcywgaXMgZXh0ZW50IGJhc2VkLCBhbmQgbWFrZXMgZXh0ZW5zaXZlIHVzZSBvZgorQnRyZWVzIChkaXJlY3RvcmllcywgZXh0ZW50cywgZnJlZSBzcGFjZSkgdG8gYWlkIGJvdGggcGVyZm9ybWFuY2UKK2FuZCBzY2FsYWJpbGl0eS4KKworUmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gYXQgaHR0cDovL29zcy5zZ2kuY29tL3Byb2plY3RzL3hmcy8KK2ZvciBmdXJ0aGVyIGRldGFpbHMuICBUaGlzIGltcGxlbWVudGF0aW9uIGlzIG9uLWRpc2sgY29tcGF0aWJsZQord2l0aCB0aGUgSVJJWCB2ZXJzaW9uIG9mIFhGUy4KKworCitNb3VudCBPcHRpb25zCis9PT09PT09PT09PT09CisKK1doZW4gbW91bnRpbmcgYW4gWEZTIGZpbGVzeXN0ZW0sIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgYWNjZXB0ZWQuCitGb3IgYm9vbGVhbiBtb3VudCBvcHRpb25zLCB0aGUgbmFtZXMgd2l0aCB0aGUgKCopIHN1ZmZpeCBpcyB0aGUKK2RlZmF1bHQgYmVoYXZpb3VyLgorCisgIGFsbG9jc2l6ZT1zaXplCisJU2V0cyB0aGUgYnVmZmVyZWQgSS9PIGVuZC1vZi1maWxlIHByZWFsbG9jYXRpb24gc2l6ZSB3aGVuCisJZG9pbmcgZGVsYXllZCBhbGxvY2F0aW9uIHdyaXRlb3V0IChkZWZhdWx0IHNpemUgaXMgNjRLaUIpLgorCVZhbGlkIHZhbHVlcyBmb3IgdGhpcyBvcHRpb24gYXJlIHBhZ2Ugc2l6ZSAodHlwaWNhbGx5IDRLaUIpCisJdGhyb3VnaCB0byAxR2lCLCBpbmNsdXNpdmUsIGluIHBvd2VyLW9mLTIgaW5jcmVtZW50cy4KKworCVRoZSBkZWZhdWx0IGJlaGF2aW91ciBpcyBmb3IgZHluYW1pYyBlbmQtb2YtZmlsZQorCXByZWFsbG9jYXRpb24gc2l6ZSwgd2hpY2ggdXNlcyBhIHNldCBvZiBoZXVyaXN0aWNzIHRvCisJb3B0aW1pc2UgdGhlIHByZWFsbG9jYXRpb24gc2l6ZSBiYXNlZCBvbiB0aGUgY3VycmVudAorCWFsbG9jYXRpb24gcGF0dGVybnMgd2l0aGluIHRoZSBmaWxlIGFuZCB0aGUgYWNjZXNzIHBhdHRlcm5zCisJdG8gdGhlIGZpbGUuIFNwZWNpZnlpbmcgYSBmaXhlZCBhbGxvY3NpemUgdmFsdWUgdHVybnMgb2ZmCisJdGhlIGR5bmFtaWMgYmVoYXZpb3VyLgorCisgIGF0dHIyCisgIG5vYXR0cjIKKwlUaGUgb3B0aW9ucyBlbmFibGUvZGlzYWJsZSBhbiAib3Bwb3J0dW5pc3RpYyIgaW1wcm92ZW1lbnQgdG8KKwliZSBtYWRlIGluIHRoZSB3YXkgaW5saW5lIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIHN0b3JlZAorCW9uLWRpc2suICBXaGVuIHRoZSBuZXcgZm9ybSBpcyB1c2VkIGZvciB0aGUgZmlyc3QgdGltZSB3aGVuCisJYXR0cjIgaXMgc2VsZWN0ZWQgKGVpdGhlciB3aGVuIHNldHRpbmcgb3IgcmVtb3ZpbmcgZXh0ZW5kZWQKKwlhdHRyaWJ1dGVzKSB0aGUgb24tZGlzayBzdXBlcmJsb2NrIGZlYXR1cmUgYml0IGZpZWxkIHdpbGwgYmUKKwl1cGRhdGVkIHRvIHJlZmxlY3QgdGhpcyBmb3JtYXQgYmVpbmcgaW4gdXNlLgorCisJVGhlIGRlZmF1bHQgYmVoYXZpb3VyIGlzIGRldGVybWluZWQgYnkgdGhlIG9uLWRpc2sgZmVhdHVyZQorCWJpdCBpbmRpY2F0aW5nIHRoYXQgYXR0cjIgYmVoYXZpb3VyIGlzIGFjdGl2ZS4gSWYgZWl0aGVyCisJbW91bnQgb3B0aW9uIGl0IHNldCwgdGhlbiB0aGF0IGJlY29tZXMgdGhlIG5ldyBkZWZhdWx0IHVzZWQKKwlieSB0aGUgZmlsZXN5c3RlbS4KKworCUNSQyBlbmFibGVkIGZpbGVzeXN0ZW1zIGFsd2F5cyB1c2UgdGhlIGF0dHIyIGZvcm1hdCwgYW5kIHNvCisJd2lsbCByZWplY3QgdGhlIG5vYXR0cjIgbW91bnQgb3B0aW9uIGlmIGl0IGlzIHNldC4KKworICBiYXJyaWVyICgqKQorICBub2JhcnJpZXIKKwlFbmFibGVzL2Rpc2FibGVzIHRoZSB1c2Ugb2YgYmxvY2sgbGF5ZXIgd3JpdGUgYmFycmllcnMgZm9yCisJd3JpdGVzIGludG8gdGhlIGpvdXJuYWwgYW5kIGZvciBkYXRhIGludGVncml0eSBvcGVyYXRpb25zLgorCVRoaXMgYWxsb3dzIGZvciBkcml2ZSBsZXZlbCB3cml0ZSBjYWNoaW5nIHRvIGJlIGVuYWJsZWQsIGZvcgorCWRldmljZXMgdGhhdCBzdXBwb3J0IHdyaXRlIGJhcnJpZXJzLgorCisgIGRpc2NhcmQKKyAgbm9kaXNjYXJkICgqKQorCUVuYWJsZS9kaXNhYmxlIHRoZSBpc3N1aW5nIG9mIGNvbW1hbmRzIHRvIGxldCB0aGUgYmxvY2sKKwlkZXZpY2UgcmVjbGFpbSBzcGFjZSBmcmVlZCBieSB0aGUgZmlsZXN5c3RlbS4gIFRoaXMgaXMKKwl1c2VmdWwgZm9yIFNTRCBkZXZpY2VzLCB0aGlubHkgcHJvdmlzaW9uZWQgTFVOcyBhbmQgdmlydHVhbAorCW1hY2hpbmUgaW1hZ2VzLCBidXQgbWF5IGhhdmUgYSBwZXJmb3JtYW5jZSBpbXBhY3QuCisKKwlOb3RlOiBJdCBpcyBjdXJyZW50bHkgcmVjb21tZW5kZWQgdGhhdCB5b3UgdXNlIHRoZSBmc3RyaW0KKwlhcHBsaWNhdGlvbiB0byBkaXNjYXJkIHVudXNlZCBibG9ja3MgcmF0aGVyIHRoYW4gdGhlIGRpc2NhcmQKKwltb3VudCBvcHRpb24gYmVjYXVzZSB0aGUgcGVyZm9ybWFuY2UgaW1wYWN0IG9mIHRoaXMgb3B0aW9uCisJaXMgcXVpdGUgc2V2ZXJlLgorCisgIGdycGlkL2JzZGdyb3VwcworICBub2dycGlkL3N5c3Zncm91cHMgKCopCisJVGhlc2Ugb3B0aW9ucyBkZWZpbmUgd2hhdCBncm91cCBJRCBhIG5ld2x5IGNyZWF0ZWQgZmlsZQorCWdldHMuICBXaGVuIGdycGlkIGlzIHNldCwgaXQgdGFrZXMgdGhlIGdyb3VwIElEIG9mIHRoZQorCWRpcmVjdG9yeSBpbiB3aGljaCBpdCBpcyBjcmVhdGVkOyBvdGhlcndpc2UgaXQgdGFrZXMgdGhlCisJZnNnaWQgb2YgdGhlIGN1cnJlbnQgcHJvY2VzcywgdW5sZXNzIHRoZSBkaXJlY3RvcnkgaGFzIHRoZQorCXNldGdpZCBiaXQgc2V0LCBpbiB3aGljaCBjYXNlIGl0IHRha2VzIHRoZSBnaWQgZnJvbSB0aGUKKwlwYXJlbnQgZGlyZWN0b3J5LCBhbmQgYWxzbyBnZXRzIHRoZSBzZXRnaWQgYml0IHNldCBpZiBpdCBpcworCWEgZGlyZWN0b3J5IGl0c2VsZi4KKworICBmaWxlc3RyZWFtcworCU1ha2UgdGhlIGRhdGEgYWxsb2NhdG9yIHVzZSB0aGUgZmlsZXN0cmVhbXMgYWxsb2NhdGlvbiBtb2RlCisJYWNyb3NzIHRoZSBlbnRpcmUgZmlsZXN5c3RlbSByYXRoZXIgdGhhbiBqdXN0IG9uIGRpcmVjdG9yaWVzCisJY29uZmlndXJlZCB0byB1c2UgaXQuCisKKyAgaWtlZXAKKyAgbm9pa2VlcCAoKikKKwlXaGVuIGlrZWVwIGlzIHNwZWNpZmllZCwgWEZTIGRvZXMgbm90IGRlbGV0ZSBlbXB0eSBpbm9kZQorCWNsdXN0ZXJzIGFuZCBrZWVwcyB0aGVtIGFyb3VuZCBvbiBkaXNrLiAgV2hlbiBub2lrZWVwIGlzCisJc3BlY2lmaWVkLCBlbXB0eSBpbm9kZSBjbHVzdGVycyBhcmUgcmV0dXJuZWQgdG8gdGhlIGZyZWUKKwlzcGFjZSBwb29sLgorCisgIGlub2RlMzIKKyAgaW5vZGU2NCAoKikKKwlXaGVuIGlub2RlMzIgaXMgc3BlY2lmaWVkLCBpdCBpbmRpY2F0ZXMgdGhhdCBYRlMgbGltaXRzCisJaW5vZGUgY3JlYXRpb24gdG8gbG9jYXRpb25zIHdoaWNoIHdpbGwgbm90IHJlc3VsdCBpbiBpbm9kZQorCW51bWJlcnMgd2l0aCBtb3JlIHRoYW4gMzIgYml0cyBvZiBzaWduaWZpY2FuY2UuCisKKwlXaGVuIGlub2RlNjQgaXMgc3BlY2lmaWVkLCBpdCBpbmRpY2F0ZXMgdGhhdCBYRlMgaXMgYWxsb3dlZAorCXRvIGNyZWF0ZSBpbm9kZXMgYXQgYW55IGxvY2F0aW9uIGluIHRoZSBmaWxlc3lzdGVtLAorCWluY2x1ZGluZyB0aG9zZSB3aGljaCB3aWxsIHJlc3VsdCBpbiBpbm9kZSBudW1iZXJzIG9jY3VweWluZworCW1vcmUgdGhhbiAzMiBiaXRzIG9mIHNpZ25pZmljYW5jZS4gCisKKwlpbm9kZTMyIGlzIHByb3ZpZGVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyCisJc3lzdGVtcyBhbmQgYXBwbGljYXRpb25zLCBzaW5jZSA2NCBiaXRzIGlub2RlIG51bWJlcnMgbWlnaHQKKwljYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBhcHBsaWNhdGlvbnMgdGhhdCBjYW5ub3QgaGFuZGxlCisJbGFyZ2UgaW5vZGUgbnVtYmVycy4gIElmIGFwcGxpY2F0aW9ucyBhcmUgaW4gdXNlIHdoaWNoIGRvCisJbm90IGhhbmRsZSBpbm9kZSBudW1iZXJzIGJpZ2dlciB0aGFuIDMyIGJpdHMsIHRoZSBpbm9kZTMyCisJb3B0aW9uIHNob3VsZCBiZSBzcGVjaWZpZWQuCisKKworICBsYXJnZWlvCisgIG5vbGFyZ2VpbyAoKikKKwlJZiAibm9sYXJnZWlvIiBpcyBzcGVjaWZpZWQsIHRoZSBvcHRpbWFsIEkvTyByZXBvcnRlZCBpbgorCXN0X2Jsa3NpemUgYnkgc3RhdCgyKSB3aWxsIGJlIGFzIHNtYWxsIGFzIHBvc3NpYmxlIHRvIGFsbG93CisJdXNlciBhcHBsaWNhdGlvbnMgdG8gYXZvaWQgaW5lZmZpY2llbnQgcmVhZC9tb2RpZnkvd3JpdGUKKwlJL08uICBUaGlzIGlzIHR5cGljYWxseSB0aGUgcGFnZSBzaXplIG9mIHRoZSBtYWNoaW5lLCBhcworCXRoaXMgaXMgdGhlIGdyYW51bGFyaXR5IG9mIHRoZSBwYWdlIGNhY2hlLgorCisJSWYgImxhcmdlaW8iIHNwZWNpZmllZCwgYSBmaWxlc3lzdGVtIHRoYXQgd2FzIGNyZWF0ZWQgd2l0aCBhCisJInN3aWR0aCIgc3BlY2lmaWVkIHdpbGwgcmV0dXJuIHRoZSAic3dpZHRoIiB2YWx1ZSAoaW4gYnl0ZXMpCisJaW4gc3RfYmxrc2l6ZS4gSWYgdGhlIGZpbGVzeXN0ZW0gZG9lcyBub3QgaGF2ZSBhICJzd2lkdGgiCisJc3BlY2lmaWVkIGJ1dCBkb2VzIHNwZWNpZnkgYW4gImFsbG9jc2l6ZSIgdGhlbiAiYWxsb2NzaXplIgorCShpbiBieXRlcykgd2lsbCBiZSByZXR1cm5lZCBpbnN0ZWFkLiBPdGhlcndpc2UgdGhlIGJlaGF2aW91cgorCWlzIHRoZSBzYW1lIGFzIGlmICJub2xhcmdlaW8iIHdhcyBzcGVjaWZpZWQuCisKKyAgbG9nYnVmcz12YWx1ZQorCVNldCB0aGUgbnVtYmVyIG9mIGluLW1lbW9yeSBsb2cgYnVmZmVycy4gIFZhbGlkIG51bWJlcnMKKwlyYW5nZSBmcm9tIDItOCBpbmNsdXNpdmUuCisKKwlUaGUgZGVmYXVsdCB2YWx1ZSBpcyA4IGJ1ZmZlcnMuCisKKwlJZiB0aGUgbWVtb3J5IGNvc3Qgb2YgOCBsb2cgYnVmZmVycyBpcyB0b28gaGlnaCBvbiBzbWFsbAorCXN5c3RlbXMsIHRoZW4gaXQgbWF5IGJlIHJlZHVjZWQgYXQgc29tZSBjb3N0IHRvIHBlcmZvcm1hbmNlCisJb24gbWV0YWRhdGEgaW50ZW5zaXZlIHdvcmtsb2Fkcy4gVGhlIGxvZ2JzaXplIG9wdGlvbiBiZWxvdworCWNvbnRyb2xzIHRoZSBzaXplIG9mIGVhY2ggYnVmZmVyIGFuZCBzbyBpcyBhbHNvIHJlbGV2YW50IHRvCisJdGhpcyBjYXNlLgorCisgIGxvZ2JzaXplPXZhbHVlCisJU2V0IHRoZSBzaXplIG9mIGVhY2ggaW4tbWVtb3J5IGxvZyBidWZmZXIuICBUaGUgc2l6ZSBtYXkgYmUKKwlzcGVjaWZpZWQgaW4gYnl0ZXMsIG9yIGluIGtpbG9ieXRlcyB3aXRoIGEgImsiIHN1ZmZpeC4KKwlWYWxpZCBzaXplcyBmb3IgdmVyc2lvbiAxIGFuZCB2ZXJzaW9uIDIgbG9ncyBhcmUgMTYzODQgKDE2aykKKwlhbmQgMzI3NjggKDMyaykuICBWYWxpZCBzaXplcyBmb3IgdmVyc2lvbiAyIGxvZ3MgYWxzbworCWluY2x1ZGUgNjU1MzYgKDY0ayksIDEzMTA3MiAoMTI4aykgYW5kIDI2MjE0NCAoMjU2aykuIFRoZQorCWxvZ2JzaXplIG11c3QgYmUgYW4gaW50ZWdlciBtdWx0aXBsZSBvZiB0aGUgbG9nCisJc3RyaXBlIHVuaXQgY29uZmlndXJlZCBhdCBta2ZzIHRpbWUuCisKKwlUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgZm9yIHZlcnNpb24gMSBsb2dzIGlzIDMyNzY4LCB3aGlsZSB0aGUKKwlkZWZhdWx0IHZhbHVlIGZvciB2ZXJzaW9uIDIgbG9ncyBpcyBNQVgoMzI3NjgsIGxvZ19zdW5pdCkuCisKKyAgbG9nZGV2PWRldmljZSBhbmQgcnRkZXY9ZGV2aWNlCisJVXNlIGFuIGV4dGVybmFsIGxvZyAobWV0YWRhdGEgam91cm5hbCkgYW5kL29yIHJlYWwtdGltZSBkZXZpY2UuCisJQW4gWEZTIGZpbGVzeXN0ZW0gaGFzIHVwIHRvIHRocmVlIHBhcnRzOiBhIGRhdGEgc2VjdGlvbiwgYSBsb2cKKwlzZWN0aW9uLCBhbmQgYSByZWFsLXRpbWUgc2VjdGlvbi4gIFRoZSByZWFsLXRpbWUgc2VjdGlvbiBpcworCW9wdGlvbmFsLCBhbmQgdGhlIGxvZyBzZWN0aW9uIGNhbiBiZSBzZXBhcmF0ZSBmcm9tIHRoZSBkYXRhCisJc2VjdGlvbiBvciBjb250YWluZWQgd2l0aGluIGl0LgorCisgIG5vYWxpZ24KKwlEYXRhIGFsbG9jYXRpb25zIHdpbGwgbm90IGJlIGFsaWduZWQgYXQgc3RyaXBlIHVuaXQKKwlib3VuZGFyaWVzLiBUaGlzIGlzIG9ubHkgcmVsZXZhbnQgdG8gZmlsZXN5c3RlbXMgY3JlYXRlZAorCXdpdGggbm9uLXplcm8gZGF0YSBhbGlnbm1lbnQgcGFyYW1ldGVycyAoc3VuaXQsIHN3aWR0aCkgYnkKKwlta2ZzLgorCisgIG5vcmVjb3ZlcnkKKwlUaGUgZmlsZXN5c3RlbSB3aWxsIGJlIG1vdW50ZWQgd2l0aG91dCBydW5uaW5nIGxvZyByZWNvdmVyeS4KKwlJZiB0aGUgZmlsZXN5c3RlbSB3YXMgbm90IGNsZWFubHkgdW5tb3VudGVkLCBpdCBpcyBsaWtlbHkgdG8KKwliZSBpbmNvbnNpc3RlbnQgd2hlbiBtb3VudGVkIGluICJub3JlY292ZXJ5IiBtb2RlLgorCVNvbWUgZmlsZXMgb3IgZGlyZWN0b3JpZXMgbWF5IG5vdCBiZSBhY2Nlc3NpYmxlIGJlY2F1c2Ugb2YgdGhpcy4KKwlGaWxlc3lzdGVtcyBtb3VudGVkICJub3JlY292ZXJ5IiBtdXN0IGJlIG1vdW50ZWQgcmVhZC1vbmx5IG9yCisJdGhlIG1vdW50IHdpbGwgZmFpbC4KKworICBub3V1aWQKKwlEb24ndCBjaGVjayBmb3IgZG91YmxlIG1vdW50ZWQgZmlsZSBzeXN0ZW1zIHVzaW5nIHRoZSBmaWxlCisJc3lzdGVtIHV1aWQuICBUaGlzIGlzIHVzZWZ1bCB0byBtb3VudCBMVk0gc25hcHNob3Qgdm9sdW1lcywKKwlhbmQgb2Z0ZW4gdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoICJub3JlY292ZXJ5IiBmb3IgbW91bnRpbmcKKwlyZWFkLW9ubHkgc25hcHNob3RzLgorCisgIG5vcXVvdGEKKwlGb3JjaWJseSB0dXJucyBvZmYgYWxsIHF1b3RhIGFjY291bnRpbmcgYW5kIGVuZm9yY2VtZW50CisJd2l0aGluIHRoZSBmaWxlc3lzdGVtLgorCisgIHVxdW90YS91c3JxdW90YS91cW5vZW5mb3JjZS9xdW90YQorCVVzZXIgZGlzayBxdW90YSBhY2NvdW50aW5nIGVuYWJsZWQsIGFuZCBsaW1pdHMgKG9wdGlvbmFsbHkpCisJZW5mb3JjZWQuICBSZWZlciB0byB4ZnNfcXVvdGEoOCkgZm9yIGZ1cnRoZXIgZGV0YWlscy4KKworICBncXVvdGEvZ3JwcXVvdGEvZ3Fub2VuZm9yY2UKKwlHcm91cCBkaXNrIHF1b3RhIGFjY291bnRpbmcgZW5hYmxlZCBhbmQgbGltaXRzIChvcHRpb25hbGx5KQorCWVuZm9yY2VkLiAgUmVmZXIgdG8geGZzX3F1b3RhKDgpIGZvciBmdXJ0aGVyIGRldGFpbHMuCisKKyAgcHF1b3RhL3ByanF1b3RhL3Bxbm9lbmZvcmNlCisJUHJvamVjdCBkaXNrIHF1b3RhIGFjY291bnRpbmcgZW5hYmxlZCBhbmQgbGltaXRzIChvcHRpb25hbGx5KQorCWVuZm9yY2VkLiAgUmVmZXIgdG8geGZzX3F1b3RhKDgpIGZvciBmdXJ0aGVyIGRldGFpbHMuCisKKyAgc3VuaXQ9dmFsdWUgYW5kIHN3aWR0aD12YWx1ZQorCVVzZWQgdG8gc3BlY2lmeSB0aGUgc3RyaXBlIHVuaXQgYW5kIHdpZHRoIGZvciBhIFJBSUQgZGV2aWNlCisJb3IgYSBzdHJpcGUgdm9sdW1lLiAgInZhbHVlIiBtdXN0IGJlIHNwZWNpZmllZCBpbiA1MTItYnl0ZQorCWJsb2NrIHVuaXRzLiBUaGVzZSBvcHRpb25zIGFyZSBvbmx5IHJlbGV2YW50IHRvIGZpbGVzeXN0ZW1zCisJdGhhdCB3ZXJlIGNyZWF0ZWQgd2l0aCBub24temVybyBkYXRhIGFsaWdubWVudCBwYXJhbWV0ZXJzLgorCisJVGhlIHN1bml0IGFuZCBzd2lkdGggcGFyYW1ldGVycyBzcGVjaWZpZWQgbXVzdCBiZSBjb21wYXRpYmxlCisJd2l0aCB0aGUgZXhpc3RpbmcgZmlsZXN5c3RlbSBhbGlnbm1lbnQgY2hhcmFjdGVyaXN0aWNzLiAgSW4KKwlnZW5lcmFsLCB0aGF0IG1lYW5zIHRoZSBvbmx5IHZhbGlkIGNoYW5nZXMgdG8gc3VuaXQgYXJlCisJaW5jcmVhc2luZyBpdCBieSBhIHBvd2VyLW9mLTIgbXVsdGlwbGUuIFZhbGlkIHN3aWR0aCB2YWx1ZXMKKwlhcmUgYW55IGludGVnZXIgbXVsdGlwbGUgb2YgYSB2YWxpZCBzdW5pdCB2YWx1ZS4KKworCVR5cGljYWxseSB0aGUgb25seSB0aW1lIHRoZXNlIG1vdW50IG9wdGlvbnMgYXJlIG5lY2Vzc2FyeSBpZgorCWFmdGVyIGFuIHVuZGVybHlpbmcgUkFJRCBkZXZpY2UgaGFzIGhhZCBpdCdzIGdlb21ldHJ5CisJbW9kaWZpZWQsIHN1Y2ggYXMgYWRkaW5nIGEgbmV3IGRpc2sgdG8gYSBSQUlENSBsdW4gYW5kCisJcmVzaGFwaW5nIGl0LgorCisgIHN3YWxsb2MKKwlEYXRhIGFsbG9jYXRpb25zIHdpbGwgYmUgcm91bmRlZCB1cCB0byBzdHJpcGUgd2lkdGggYm91bmRhcmllcworCXdoZW4gdGhlIGN1cnJlbnQgZW5kIG9mIGZpbGUgaXMgYmVpbmcgZXh0ZW5kZWQgYW5kIHRoZSBmaWxlCisJc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGUgc3RyaXBlIHdpZHRoIHNpemUuCisKKyAgd3N5bmMKKwlXaGVuIHNwZWNpZmllZCwgYWxsIGZpbGVzeXN0ZW0gbmFtZXNwYWNlIG9wZXJhdGlvbnMgYXJlCisJZXhlY3V0ZWQgc3luY2hyb25vdXNseS4gVGhpcyBlbnN1cmVzIHRoYXQgd2hlbiB0aGUgbmFtZXNwYWNlCisJb3BlcmF0aW9uIChjcmVhdGUsIHVubGluaywgZXRjKSBjb21wbGV0ZXMsIHRoZSBjaGFuZ2UgdG8gdGhlCisJbmFtZXNwYWNlIGlzIG9uIHN0YWJsZSBzdG9yYWdlLiBUaGlzIGlzIHVzZWZ1bCBpbiBIQSBzZXR1cHMKKwl3aGVyZSBmYWlsb3ZlciBtdXN0IG5vdCByZXN1bHQgaW4gY2xpZW50cyBzZWVpbmcKKwlpbmNvbnNpc3RlbnQgbmFtZXNwYWNlIHByZXNlbnRhdGlvbiBkdXJpbmcgb3IgYWZ0ZXIgYQorCWZhaWxvdmVyIGV2ZW50LgorCisKK0RlcHJlY2F0ZWQgTW91bnQgT3B0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09CisKK05vbmUgYXQgcHJlc2VudC4KKworCitSZW1vdmVkIE1vdW50IE9wdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PQorCisgIE5hbWUJCQkJUmVtb3ZlZAorICAtLS0tCQkJCS0tLS0tLS0KKyAgZGVsYXlsb2cvbm9kZWxheWxvZwkJdjQuMAorICBpaGFzaHNpemUJCQl2NC4wCisgIGlyaXhzZ2lkCQkJdjQuMAorICBvc3luY2lzZHN5bmMvb3N5bmNpc29zeW5jCXY0LjAKKworCitzeXNjdGxzCis9PT09PT09CisKK1RoZSBmb2xsb3dpbmcgc3lzY3RscyBhcmUgYXZhaWxhYmxlIGZvciB0aGUgWEZTIGZpbGVzeXN0ZW06CisKKyAgZnMueGZzLnN0YXRzX2NsZWFyCQkoTWluOiAwICBEZWZhdWx0OiAwICBNYXg6IDEpCisJU2V0dGluZyB0aGlzIHRvICIxIiBjbGVhcnMgYWNjdW11bGF0ZWQgWEZTIHN0YXRpc3RpY3MKKwlpbiAvcHJvYy9mcy94ZnMvc3RhdC4gIEl0IHRoZW4gaW1tZWRpYXRlbHkgcmVzZXRzIHRvICIwIi4KKworICBmcy54ZnMueGZzc3luY2RfY2VudGlzZWNzCShNaW46IDEwMCAgRGVmYXVsdDogMzAwMCAgTWF4OiA3MjAwMDApCisJVGhlIGludGVydmFsIGF0IHdoaWNoIHRoZSBmaWxlc3lzdGVtIGZsdXNoZXMgbWV0YWRhdGEKKwlvdXQgdG8gZGlzayBhbmQgcnVucyBpbnRlcm5hbCBjYWNoZSBjbGVhbnVwIHJvdXRpbmVzLgorCisgIGZzLnhmcy5maWxlc3RyZWFtX2NlbnRpc2VjcwkoTWluOiAxICBEZWZhdWx0OiAzMDAwICBNYXg6IDM2MDAwMCkKKwlUaGUgaW50ZXJ2YWwgYXQgd2hpY2ggdGhlIGZpbGVzeXN0ZW0gYWdlcyBmaWxlc3RyZWFtcyBjYWNoZQorCXJlZmVyZW5jZXMgYW5kIHJldHVybnMgdGltZWQtb3V0IEFHcyBiYWNrIHRvIHRoZSBmcmVlIHN0cmVhbQorCXBvb2wuCisKKyAgZnMueGZzLnNwZWN1bGF0aXZlX3ByZWFsbG9jX2xpZmV0aW1lCisJCShVbml0czogc2Vjb25kcyAgIE1pbjogMSAgRGVmYXVsdDogMzAwICBNYXg6IDg2NDAwKQorCVRoZSBpbnRlcnZhbCBhdCB3aGljaCB0aGUgYmFja2dyb3VuZCBzY2FubmluZyBmb3IgaW5vZGVzCisJd2l0aCB1bnVzZWQgc3BlY3VsYXRpdmUgcHJlYWxsb2NhdGlvbiBydW5zLiBUaGUgc2NhbgorCXJlbW92ZXMgdW51c2VkIHByZWFsbG9jYXRpb24gZnJvbSBjbGVhbiBpbm9kZXMgYW5kIHJlbGVhc2VzCisJdGhlIHVudXNlZCBzcGFjZSBiYWNrIHRvIHRoZSBmcmVlIHBvb2wuCisKKyAgZnMueGZzLmVycm9yX2xldmVsCQkoTWluOiAwICBEZWZhdWx0OiAzICBNYXg6IDExKQorCUEgdm9sdW1lIGtub2IgZm9yIGVycm9yIHJlcG9ydGluZyB3aGVuIGludGVybmFsIGVycm9ycyBvY2N1ci4KKwlUaGlzIHdpbGwgZ2VuZXJhdGUgZGV0YWlsZWQgbWVzc2FnZXMgJiBiYWNrdHJhY2VzIGZvciBmaWxlc3lzdGVtCisJc2h1dGRvd25zLCBmb3IgZXhhbXBsZS4gIEN1cnJlbnQgdGhyZXNob2xkIHZhbHVlcyBhcmU6CisKKwkJWEZTX0VSUkxFVkVMX09GRjogICAgICAgMAorCQlYRlNfRVJSTEVWRUxfTE9XOiAgICAgICAxCisJCVhGU19FUlJMRVZFTF9ISUdIOiAgICAgIDUKKworICBmcy54ZnMucGFuaWNfbWFzawkJKE1pbjogMCAgRGVmYXVsdDogMCAgTWF4OiAyNTUpCisJQ2F1c2VzIGNlcnRhaW4gZXJyb3IgY29uZGl0aW9ucyB0byBjYWxsIEJVRygpLiBWYWx1ZSBpcyBhIGJpdG1hc2s7CisJT1IgdG9nZXRoZXIgdGhlIHRhZ3Mgd2hpY2ggcmVwcmVzZW50IGVycm9ycyB3aGljaCBzaG91bGQgY2F1c2UgcGFuaWNzOgorCisJCVhGU19OT19QVEFHICAgICAgICAgICAgICAgICAgICAgMAorCQlYRlNfUFRBR19JRkxVU0ggICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKwkJWEZTX1BUQUdfTE9HUkVTICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisJCVhGU19QVEFHX0FJTERFTEVURSAgICAgICAgICAgICAgMHgwMDAwMDAwNAorCQlYRlNfUFRBR19FUlJPUl9SRVBPUlQgICAgICAgICAgIDB4MDAwMDAwMDgKKwkJWEZTX1BUQUdfU0hVVERPV05fQ09SUlVQVCAgICAgICAweDAwMDAwMDEwCisJCVhGU19QVEFHX1NIVVRET1dOX0lPRVJST1IgICAgICAgMHgwMDAwMDAyMAorCQlYRlNfUFRBR19TSFVURE9XTl9MT0dFUlJPUiAgICAgIDB4MDAwMDAwNDAKKwkJWEZTX1BUQUdfRlNCTE9DS19aRVJPICAgICAgICAgICAweDAwMDAwMDgwCisKKwlUaGlzIG9wdGlvbiBpcyBpbnRlbmRlZCBmb3IgZGVidWdnaW5nIG9ubHkuCisKKyAgZnMueGZzLmlyaXhfc3ltbGlua19tb2RlCShNaW46IDAgIERlZmF1bHQ6IDAgIE1heDogMSkKKwlDb250cm9scyB3aGV0aGVyIHN5bWxpbmtzIGFyZSBjcmVhdGVkIHdpdGggbW9kZSAwNzc3IChkZWZhdWx0KQorCW9yIHdoZXRoZXIgdGhlaXIgbW9kZSBpcyBhZmZlY3RlZCBieSB0aGUgdW1hc2sgKGlyaXggbW9kZSkuCisKKyAgZnMueGZzLmlyaXhfc2dpZF9pbmhlcml0CShNaW46IDAgIERlZmF1bHQ6IDAgIE1heDogMSkKKwlDb250cm9scyBmaWxlcyBjcmVhdGVkIGluIFNHSUQgZGlyZWN0b3JpZXMuCisJSWYgdGhlIGdyb3VwIElEIG9mIHRoZSBuZXcgZmlsZSBkb2VzIG5vdCBtYXRjaCB0aGUgZWZmZWN0aXZlIGdyb3VwCisJSUQgb3Igb25lIG9mIHRoZSBzdXBwbGVtZW50YXJ5IGdyb3VwIElEcyBvZiB0aGUgcGFyZW50IGRpciwgdGhlCisJSVNHSUQgYml0IGlzIGNsZWFyZWQgaWYgdGhlIGlyaXhfc2dpZF9pbmhlcml0IGNvbXBhdGliaWxpdHkgc3lzY3RsCisJaXMgc2V0LgorCisgIGZzLnhmcy5pbmhlcml0X3N5bmMJCShNaW46IDAgIERlZmF1bHQ6IDEgIE1heDogMSkKKwlTZXR0aW5nIHRoaXMgdG8gIjEiIHdpbGwgY2F1c2UgdGhlICJzeW5jIiBmbGFnIHNldAorCWJ5IHRoZSB4ZnNfaW8oOCkgY2hhdHRyIGNvbW1hbmQgb24gYSBkaXJlY3RvcnkgdG8gYmUKKwlpbmhlcml0ZWQgYnkgZmlsZXMgaW4gdGhhdCBkaXJlY3RvcnkuCisKKyAgZnMueGZzLmluaGVyaXRfbm9kdW1wCQkoTWluOiAwICBEZWZhdWx0OiAxICBNYXg6IDEpCisJU2V0dGluZyB0aGlzIHRvICIxIiB3aWxsIGNhdXNlIHRoZSAibm9kdW1wIiBmbGFnIHNldAorCWJ5IHRoZSB4ZnNfaW8oOCkgY2hhdHRyIGNvbW1hbmQgb24gYSBkaXJlY3RvcnkgdG8gYmUKKwlpbmhlcml0ZWQgYnkgZmlsZXMgaW4gdGhhdCBkaXJlY3RvcnkuCisKKyAgZnMueGZzLmluaGVyaXRfbm9hdGltZQkoTWluOiAwICBEZWZhdWx0OiAxICBNYXg6IDEpCisJU2V0dGluZyB0aGlzIHRvICIxIiB3aWxsIGNhdXNlIHRoZSAibm9hdGltZSIgZmxhZyBzZXQKKwlieSB0aGUgeGZzX2lvKDgpIGNoYXR0ciBjb21tYW5kIG9uIGEgZGlyZWN0b3J5IHRvIGJlCisJaW5oZXJpdGVkIGJ5IGZpbGVzIGluIHRoYXQgZGlyZWN0b3J5LgorCisgIGZzLnhmcy5pbmhlcml0X25vc3ltbGlua3MJKE1pbjogMCAgRGVmYXVsdDogMSAgTWF4OiAxKQorCVNldHRpbmcgdGhpcyB0byAiMSIgd2lsbCBjYXVzZSB0aGUgIm5vc3ltbGlua3MiIGZsYWcgc2V0CisJYnkgdGhlIHhmc19pbyg4KSBjaGF0dHIgY29tbWFuZCBvbiBhIGRpcmVjdG9yeSB0byBiZQorCWluaGVyaXRlZCBieSBmaWxlcyBpbiB0aGF0IGRpcmVjdG9yeS4KKworICBmcy54ZnMuaW5oZXJpdF9ub2RlZnJhZwkoTWluOiAwICBEZWZhdWx0OiAxICBNYXg6IDEpCisJU2V0dGluZyB0aGlzIHRvICIxIiB3aWxsIGNhdXNlIHRoZSAibm9kZWZyYWciIGZsYWcgc2V0CisJYnkgdGhlIHhmc19pbyg4KSBjaGF0dHIgY29tbWFuZCBvbiBhIGRpcmVjdG9yeSB0byBiZQorCWluaGVyaXRlZCBieSBmaWxlcyBpbiB0aGF0IGRpcmVjdG9yeS4KKworICBmcy54ZnMucm90b3JzdGVwCQkoTWluOiAxICBEZWZhdWx0OiAxICBNYXg6IDI1NikKKwlJbiAiaW5vZGUzMiIgYWxsb2NhdGlvbiBtb2RlLCB0aGlzIG9wdGlvbiBkZXRlcm1pbmVzIGhvdyBtYW55CisJZmlsZXMgdGhlIGFsbG9jYXRvciBhdHRlbXB0cyB0byBhbGxvY2F0ZSBpbiB0aGUgc2FtZSBhbGxvY2F0aW9uCisJZ3JvdXAgYmVmb3JlIG1vdmluZyB0byB0aGUgbmV4dCBhbGxvY2F0aW9uIGdyb3VwLiAgVGhlIGludGVudAorCWlzIHRvIGNvbnRyb2wgdGhlIHJhdGUgYXQgd2hpY2ggdGhlIGFsbG9jYXRvciBtb3ZlcyBiZXR3ZWVuCisJYWxsb2NhdGlvbiBncm91cHMgd2hlbiBhbGxvY2F0aW5nIGV4dGVudHMgZm9yIG5ldyBmaWxlcy4KKworRGVwcmVjYXRlZCBTeXNjdGxzCis9PT09PT09PT09PT09PT09PT0KKworTm9uZSBhdCBwcmVzZW50LgorCisKK1JlbW92ZWQgU3lzY3RscworPT09PT09PT09PT09PT09CisKKyAgTmFtZQkJCQlSZW1vdmVkCisgIC0tLS0JCQkJLS0tLS0tLQorICBmcy54ZnMueGZzYnVmZF9jZW50aXNlYwl2NC4wCisgIGZzLnhmcy5hZ2VfYnVmZmVyX2NlbnRpc2Vjcwl2NC4wCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Zpcm13YXJlX2NsYXNzL1JFQURNRSBiL0RvY3VtZW50YXRpb24vZmlybXdhcmVfY2xhc3MvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxZjg2ODUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Zpcm13YXJlX2NsYXNzL1JFQURNRQpAQCAtMCwwICsxLDEyOCBAQAorCisgcmVxdWVzdF9maXJtd2FyZSgpIGhvdHBsdWcgaW50ZXJmYWNlOgorIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCUNvcHlyaWdodCAoQykgMjAwMyBNYW51ZWwgRXN0cmFkYSBTYWluegorCisgV2h5OgorIC0tLQorCisgVG9kYXksIHRoZSBtb3N0IGV4dGVuZGVkIHdheSB0byB1c2UgZmlybXdhcmUgaW4gdGhlIExpbnV4IGtlcm5lbCBpcyBsaW5raW5nCisgaXQgc3RhdGljYWxseSBpbiBhIGhlYWRlciBmaWxlLiBXaGljaCBoYXMgcG9saXRpY2FsIGFuZCB0ZWNobmljYWwgaXNzdWVzOgorCisgIDEpIFNvbWUgZmlybXdhcmUgaXMgbm90IGxlZ2FsIHRvIHJlZGlzdHJpYnV0ZS4KKyAgMikgVGhlIGZpcm13YXJlIG9jY3VwaWVzIG1lbW9yeSBwZXJtYW5lbnRseSwgZXZlbiB0aG91Z2ggaXQgb2Z0ZW4gaXMganVzdAorICAgICB1c2VkIG9uY2UuCisgIDMpIFNvbWUgcGVvcGxlLCBsaWtlIHRoZSBEZWJpYW4gY3Jvd2QsIGRvbid0IGNvbnNpZGVyIHNvbWUgZmlybXdhcmUgZnJlZQorICAgICBlbm91Z2ggYW5kIHJlbW92ZSBlbnRpcmUgZHJpdmVycyAoZS5nLjoga2V5c3BhbikuCisKKyBIaWdoIGxldmVsIGJlaGF2aW9yIChtaXhlZCk6CisgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgMSksIGtlcm5lbChkcml2ZXIpOgorCS0gY2FsbHMgcmVxdWVzdF9maXJtd2FyZSgmZndfZW50cnksICRGSVJNV0FSRSwgZGV2aWNlKQorCS0ga2VybmVsIHNlYXJjaHMgdGhlIGZpbXdhcmUgaW1hZ2Ugd2l0aCBuYW1lICRGSVJNV0FSRSBkaXJlY3RseQorCWluIHRoZSBiZWxvdyBzZWFyY2ggcGF0aCBvZiByb290IGZpbGVzeXN0ZW06CisJCVVzZXIgY3VzdG9taXplZCBzZWFyY2ggcGF0aCBieSBtb2R1bGUgcGFyYW1ldGVyICdwYXRoJ1sxXQorCQkiL2xpYi9maXJtd2FyZS91cGRhdGVzLyIgVVRTX1JFTEVBU0UsCisJCSIvbGliL2Zpcm13YXJlL3VwZGF0ZXMiLAorCQkiL2xpYi9maXJtd2FyZS8iIFVUU19SRUxFQVNFLAorCQkiL2xpYi9maXJtd2FyZSIKKwktIElmIGZvdW5kLCBnb3RvIDcpLCBlbHNlIGdvdG8gMikKKworCVsxXSwgdGhlICdwYXRoJyBpcyBhIHN0cmluZyBwYXJhbWV0ZXIgd2hpY2ggbGVuZ3RoIHNob3VsZCBiZSBsZXNzCisJdGhhbiAyNTYsIHVzZXIgc2hvdWxkIHBhc3MgJ2Zpcm13YXJlX2NsYXNzLnBhdGg9JENVU1RPTUlaRURfUEFUSCcKKwlpZiBmaXJtd2FyZV9jbGFzcyBpcyBidWlsdCBpbiBrZXJuZWwodGhlIGdlbmVyYWwgc2l0dWF0aW9uKQorCisgMiksIHVzZXJzcGFjZToKKyAJLSAvc3lzL2NsYXNzL2Zpcm13YXJlL3h4eC97bG9hZGluZyxkYXRhfSBhcHBlYXIuCisJLSBob3RwbHVnIGdldHMgY2FsbGVkIHdpdGggYSBmaXJtd2FyZSBpZGVudGlmaWVyIGluICRGSVJNV0FSRQorCSAgYW5kIHRoZSB1c3VhbCBob3RwbHVnIGVudmlyb25tZW50LgorCQktIGhvdHBsdWc6IGVjaG8gMSA+IC9zeXMvY2xhc3MvZmlybXdhcmUveHh4L2xvYWRpbmcKKworIDMpLCBrZXJuZWw6IERpc2NhcmQgYW55IHByZXZpb3VzIHBhcnRpYWwgbG9hZC4KKworIDQpLCB1c2Vyc3BhY2U6CisJCS0gaG90cGx1ZzogY2F0IGFwcHJvcHJpYXRlX2Zpcm13YXJlX2ltYWdlID4gXAorCQkJCQkvc3lzL2NsYXNzL2Zpcm13YXJlL3h4eC9kYXRhCisKKyA1KSwga2VybmVsOiBncm93cyBhIGJ1ZmZlciBpbiBQQUdFX1NJWkUgaW5jcmVtZW50cyB0byBob2xkIHRoZSBpbWFnZSBhcyBpdAorCSBjb21lcyBpbi4KKworIDYpLCB1c2Vyc3BhY2U6CisJCS0gaG90cGx1ZzogZWNobyAwID4gL3N5cy9jbGFzcy9maXJtd2FyZS94eHgvbG9hZGluZworCisgNyksIGtlcm5lbDogcmVxdWVzdF9maXJtd2FyZSgpIHJldHVybnMgYW5kIHRoZSBkcml2ZXIgaGFzIHRoZSBmaXJtd2FyZQorCSBpbWFnZSBpbiBmd19lbnRyeS0+e2RhdGEsc2l6ZX0uIElmIHNvbWV0aGluZyB3ZW50IHdyb25nCisJIHJlcXVlc3RfZmlybXdhcmUoKSByZXR1cm5zIG5vbi16ZXJvIGFuZCBmd19lbnRyeSBpcyBzZXQgdG8KKwkgTlVMTC4KKworIDgpLCBrZXJuZWwoZHJpdmVyKTogRHJpdmVyIGNvZGUgY2FsbHMgcmVsZWFzZV9maXJtd2FyZShmd19lbnRyeSkgcmVsZWFzaW5nCisJCSB0aGUgZmlybXdhcmUgaW1hZ2UgYW5kIGFueSByZWxhdGVkIHJlc291cmNlLgorCisgSGlnaCBsZXZlbCBiZWhhdmlvciAoZHJpdmVyIGNvZGUpOgorID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCSBpZihyZXF1ZXN0X2Zpcm13YXJlKCZmd19lbnRyeSwgJEZJUk1XQVJFLCBkZXZpY2UpID09IDApCisJIAljb3B5X2Z3X3RvX2RldmljZShmd19lbnRyeS0+ZGF0YSwgZndfZW50cnktPnNpemUpOworCSByZWxlYXNlX2Zpcm13YXJlKGZ3X2VudHJ5KTsKKworIFNhbXBsZS9zaW1wbGUgaG90cGx1ZyBzY3JpcHQ6CisgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisJIyBCb3RoICRERVZQQVRIIGFuZCAkRklSTVdBUkUgYXJlIGFscmVhZHkgcHJvdmlkZWQgaW4gdGhlIGVudmlyb25tZW50LgorCisJSE9UUExVR19GV19ESVI9L3Vzci9saWIvaG90cGx1Zy9maXJtd2FyZS8KKworCWVjaG8gMSA+IC9zeXMvJERFVlBBVEgvbG9hZGluZworCWNhdCAkSE9UUExVR19GV19ESVIvJEZJUk1XQVJFID4gL3N5cy8kREVWUEFUSC9kYXRhCisJZWNobyAwID4gL3N5cy8kREVWUEFUSC9sb2FkaW5nCisKKyBSYW5kb20gbm90ZXM6CisgPT09PT09PT09PT09CisKKyAtICJlY2hvIC0xID4gL3N5cy9jbGFzcy9maXJtd2FyZS94eHgvbG9hZGluZyIgd2lsbCBjYW5jZWwgdGhlIGxvYWQgYXQKKyAgIG9uY2UgYW5kIG1ha2UgcmVxdWVzdF9maXJtd2FyZSgpIHJldHVybiB3aXRoIGVycm9yLgorCisgLSBmaXJtd2FyZV9kYXRhX3JlYWQoKSBhbmQgZmlybXdhcmVfbG9hZGluZ19zaG93KCkgYXJlIGp1c3QgcHJvdmlkZWQKKyAgIGZvciB0ZXN0aW5nIGFuZCBjb21wbGV0ZW5lc3MsIHRoZXkgYXJlIG5vdCBjYWxsZWQgaW4gbm9ybWFsIHVzZS4KKworIC0gVGhlcmUgaXMgYWxzbyAvc3lzL2NsYXNzL2Zpcm13YXJlL3RpbWVvdXQgd2hpY2ggaG9sZHMgYSB0aW1lb3V0IGluCisgICBzZWNvbmRzIGZvciB0aGUgd2hvbGUgbG9hZCBvcGVyYXRpb24uCisKKyAtIHJlcXVlc3RfZmlybXdhcmVfbm93YWl0KCkgaXMgYWxzbyBwcm92aWRlZCBmb3IgY29udmVuaWVuY2UgaW4KKyAgIHVzZXIgY29udGV4dHMgdG8gcmVxdWVzdCBmaXJtd2FyZSBhc3luY2hyb25vdXNseSwgYnV0IGNhbid0IGJlIGNhbGxlZAorICAgaW4gYXRvbWljIGNvbnRleHRzLgorCisKKyBhYm91dCBpbi1rZXJuZWwgcGVyc2lzdGVuY2U6CisgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzLCBhcyBleHBsYWluZWQgYmVsb3csIGl0IHdvdWxkIGJlIGludGVyZXN0aW5nIHRvIGtlZXAKKyBmaXJtd2FyZSBpbWFnZXMgaW4gbm9uLXN3YXBwYWJsZSBrZXJuZWwgbWVtb3J5IG9yIGV2ZW4gaW4gdGhlIGtlcm5lbCBpbWFnZQorIChwcm9iYWJseSB3aXRoaW4gaW5pdHJhbWZzKS4KKworIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkLgorCisgLSBXaHkgT1BUSU9OQUwgaW4ta2VybmVsIHBlcnNpc3RlbmNlIG1heSBiZSBhIGdvb2QgaWRlYSBzb21ldGltZXM6CisgCisJLSBJZiB0aGUgZGV2aWNlIHRoYXQgbmVlZHMgdGhlIGZpcm13YXJlIGlzIG5lZWRlZCB0byBhY2Nlc3MgdGhlCisJICBmaWxlc3lzdGVtLiBXaGVuIHVwb24gc29tZSBlcnJvciB0aGUgZGV2aWNlIGhhcyB0byBiZSByZXNldCBhbmQgdGhlCisJICBmaXJtd2FyZSByZWxvYWRlZCwgaXQgd29uJ3QgYmUgcG9zc2libGUgdG8gZ2V0IGl0IGZyb20gdXNlcnNwYWNlLgorCSAgZS5nLjoKKwkJLSBBIGRpc2tsZXNzIGNsaWVudCB3aXRoIGEgbmV0d29yayBjYXJkIHRoYXQgbmVlZHMgZmlybXdhcmUuCisJCS0gVGhlIGZpbGVzeXN0ZW0gaXMgc3RvcmVkIGluIGEgZGlzayBiZWhpbmQgYW4gc2NzaSBkZXZpY2UKKwkJICB0aGF0IG5lZWRzIGZpcm13YXJlLgorCS0gUmVwbGFjaW5nIGJ1Z2d5IERTRFQvU1NEVCBBQ1BJIHRhYmxlcyBvbiBib290LgorCSAgTm90ZTogdGhpcyB3b3VsZCByZXF1aXJlIHRoZSBwZXJzaXN0ZW50IG9iamVjdHMgdG8gYmUgaW5jbHVkZWQKKwkgIHdpdGhpbiB0aGUga2VybmVsIGltYWdlLCBwcm9iYWJseSB3aXRoaW4gaW5pdHJhbWZzLgorCSAgCisgICBBbmQgdGhlIHNhbWUgZGV2aWNlIGNhbiBiZSBuZWVkZWQgdG8gYWNjZXNzIHRoZSBmaWxlc3lzdGVtIG9yIG5vdCBkZXBlbmRpbmcKKyAgIG9uIHRoZSBzZXR1cCwgc28gSSB0aGluayB0aGF0IHRoZSBjaG9pY2Ugb24gd2hhdCBmaXJtd2FyZSB0byBtYWtlCisgICBwZXJzaXN0ZW50IHNob3VsZCBiZSBsZWZ0IHRvIHVzZXJzcGFjZS4KKworIGFib3V0IGZpcm13YXJlIGNhY2hlOgorIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWZ0ZXIgZmlybXdhcmUgY2FjaGUgbWVjaGFuaXNtIGlzIGludHJvZHVjZWQgZHVyaW5nIHN5c3RlbSBzbGVlcCwKKyByZXF1ZXN0X2Zpcm13YXJlIGNhbiBiZSBjYWxsZWQgc2FmZWx5IGluc2lkZSBkZXZpY2UncyBzdXNwZW5kIGFuZAorIHJlc3VtZSBjYWxsYmFjaywgYW5kIGNhbGxlcnMgbmVlZG4ndCBjYWNoZSB0aGUgZmlybXdhcmUgYnkKKyB0aGVtc2VsdmVzIGFueSBtb3JlIGZvciBkZWFsaW5nIHdpdGggZmlybXdhcmUgbG9zcyBkdXJpbmcgc3lzdGVtCisgcmVzdW1lLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maXJtd2FyZV9jbGFzcy9ob3RwbHVnLXNjcmlwdCBiL0RvY3VtZW50YXRpb24vZmlybXdhcmVfY2xhc3MvaG90cGx1Zy1zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODE0M2E5NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZmlybXdhcmVfY2xhc3MvaG90cGx1Zy1zY3JpcHQKQEAgLTAsMCArMSwxNyBAQAorIyEvYmluL3NoCisKKyMgU2ltcGxlIGhvdHBsdWcgc2NyaXB0IHNhbXBsZToKKyMgCisjIEJvdGggJERFVlBBVEggYW5kICRGSVJNV0FSRSBhcmUgYWxyZWFkeSBwcm92aWRlZCBpbiB0aGUgZW52aXJvbm1lbnQuCisKK0hPVFBMVUdfRldfRElSPS91c3IvbGliL2hvdHBsdWcvZmlybXdhcmUvCisKK2lmIFsgIiRTVUJTWVNURU0iID09ICJmaXJtd2FyZSIgLWEgIiRBQ1RJT04iID09ICJhZGQiIF07IHRoZW4KKyAgaWYgWyAtZiAkSE9UUExVR19GV19ESVIvJEZJUk1XQVJFIF07IHRoZW4KKyAgICBlY2hvIDEgPiAvc3lzLyRERVZQQVRIL2xvYWRpbmcKKyAgICBjYXQgJEhPVFBMVUdfRldfRElSLyRGSVJNV0FSRSA+IC9zeXMvJERFVlBBVEgvZGF0YQorICAgIGVjaG8gMCA+IC9zeXMvJERFVlBBVEgvbG9hZGluZworICBlbHNlCisgICAgZWNobyAtMSA+IC9zeXMvJERFVlBBVEgvbG9hZGluZworICBmaQorZmkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmxleGlibGUtYXJyYXlzLnR4dCBiL0RvY3VtZW50YXRpb24vZmxleGlibGUtYXJyYXlzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjkwNGFlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mbGV4aWJsZS1hcnJheXMudHh0CkBAIC0wLDAgKzEsMTIwIEBACitVc2luZyBmbGV4aWJsZSBhcnJheXMgaW4gdGhlIGtlcm5lbAorTGFzdCB1cGRhdGVkIGZvciAyLjYuMzIKK0pvbmF0aGFuIENvcmJldCA8Y29yYmV0QGx3bi5uZXQ+CisKK0xhcmdlIGNvbnRpZ3VvdXMgbWVtb3J5IGFsbG9jYXRpb25zIGNhbiBiZSB1bnJlbGlhYmxlIGluIHRoZSBMaW51eCBrZXJuZWwuCitLZXJuZWwgcHJvZ3JhbW1lcnMgd2lsbCBzb21ldGltZXMgcmVzcG9uZCB0byB0aGlzIHByb2JsZW0gYnkgYWxsb2NhdGluZworcGFnZXMgd2l0aCB2bWFsbG9jKCkuICBUaGlzIHNvbHV0aW9uIG5vdCBpZGVhbCwgdGhvdWdoLiAgT24gMzItYml0IHN5c3RlbXMsCittZW1vcnkgZnJvbSB2bWFsbG9jKCkgbXVzdCBiZSBtYXBwZWQgaW50byBhIHJlbGF0aXZlbHkgc21hbGwgYWRkcmVzcyBzcGFjZTsKK2l0J3MgZWFzeSB0byBydW4gb3V0LiAgT24gU01QIHN5c3RlbXMsIHRoZSBwYWdlIHRhYmxlIGNoYW5nZXMgcmVxdWlyZWQgYnkKK3ZtYWxsb2MoKSBhbGxvY2F0aW9ucyBjYW4gcmVxdWlyZSBleHBlbnNpdmUgY3Jvc3MtcHJvY2Vzc29yIGludGVycnVwdHMgb24KK2FsbCBDUFVzLiAgQW5kLCBvbiBhbGwgc3lzdGVtcywgdXNlIG9mIHNwYWNlIGluIHRoZSB2bWFsbG9jKCkgcmFuZ2UKK2luY3JlYXNlcyBwcmVzc3VyZSBvbiB0aGUgdHJhbnNsYXRpb24gbG9va2FzaWRlIGJ1ZmZlciAoVExCKSwgcmVkdWNpbmcgdGhlCitwZXJmb3JtYW5jZSBvZiB0aGUgc3lzdGVtLgorCitJbiBtYW55IGNhc2VzLCB0aGUgbmVlZCBmb3IgbWVtb3J5IGZyb20gdm1hbGxvYygpIGNhbiBiZSBlbGltaW5hdGVkIGJ5CitwaWVjaW5nIHRvZ2V0aGVyIGFuIGFycmF5IGZyb20gc21hbGxlciBwYXJ0czsgdGhlIGZsZXhpYmxlIGFycmF5IGxpYnJhcnkKK2V4aXN0cyB0byBtYWtlIHRoaXMgdGFzayBlYXNpZXIuCisKK0EgZmxleGlibGUgYXJyYXkgaG9sZHMgYW4gYXJiaXRyYXJ5ICh3aXRoaW4gbGltaXRzKSBudW1iZXIgb2YgZml4ZWQtc2l6ZWQKK29iamVjdHMsIGFjY2Vzc2VkIHZpYSBhbiBpbnRlZ2VyIGluZGV4LiAgU3BhcnNlIGFycmF5cyBhcmUgaGFuZGxlZAorcmVhc29uYWJseSB3ZWxsLiAgT25seSBzaW5nbGUtcGFnZSBhbGxvY2F0aW9ucyBhcmUgbWFkZSwgc28gbWVtb3J5CithbGxvY2F0aW9uIGZhaWx1cmVzIHNob3VsZCBiZSByZWxhdGl2ZWx5IHJhcmUuICBUaGUgZG93biBzaWRlcyBhcmUgdGhhdCB0aGUKK2FycmF5cyBjYW5ub3QgYmUgaW5kZXhlZCBkaXJlY3RseSwgaW5kaXZpZHVhbCBvYmplY3Qgc2l6ZSBjYW5ub3QgZXhjZWVkIHRoZQorc3lzdGVtIHBhZ2Ugc2l6ZSwgYW5kIHB1dHRpbmcgZGF0YSBpbnRvIGEgZmxleGlibGUgYXJyYXkgcmVxdWlyZXMgYSBjb3B5CitvcGVyYXRpb24uICBJdCdzIGFsc28gd29ydGggbm90aW5nIHRoYXQgZmxleGlibGUgYXJyYXlzIGRvIG5vIGludGVybmFsCitsb2NraW5nIGF0IGFsbDsgaWYgY29uY3VycmVudCBhY2Nlc3MgdG8gYW4gYXJyYXkgaXMgcG9zc2libGUsIHRoZW4gdGhlCitjYWxsZXIgbXVzdCBhcnJhbmdlIGZvciBhcHByb3ByaWF0ZSBtdXR1YWwgZXhjbHVzaW9uLgorCitUaGUgY3JlYXRpb24gb2YgYSBmbGV4aWJsZSBhcnJheSBpcyBkb25lIHdpdGg6CisKKyAgICAjaW5jbHVkZSA8bGludXgvZmxleF9hcnJheS5oPgorCisgICAgc3RydWN0IGZsZXhfYXJyYXkgKmZsZXhfYXJyYXlfYWxsb2MoaW50IGVsZW1lbnRfc2l6ZSwKKwkJCQkJdW5zaWduZWQgaW50IHRvdGFsLAorCQkJCQlnZnBfdCBmbGFncyk7CisKK1RoZSBpbmRpdmlkdWFsIG9iamVjdCBzaXplIGlzIHByb3ZpZGVkIGJ5IGVsZW1lbnRfc2l6ZSwgd2hpbGUgdG90YWwgaXMgdGhlCittYXhpbXVtIG51bWJlciBvZiBvYmplY3RzIHdoaWNoIGNhbiBiZSBzdG9yZWQgaW4gdGhlIGFycmF5LiAgVGhlIGZsYWdzCithcmd1bWVudCBpcyBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIGludGVybmFsIG1lbW9yeSBhbGxvY2F0aW9uIGNhbGxzLiAgV2l0aAordGhlIGN1cnJlbnQgY29kZSwgdXNpbmcgZmxhZ3MgdG8gYXNrIGZvciBoaWdoIG1lbW9yeSBpcyBsaWtlbHkgdG8gbGVhZCB0bworbm90YWJseSB1bnBsZWFzYW50IHNpZGUgZWZmZWN0cy4KKworSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBkZWZpbmUgZmxleGlibGUgYXJyYXlzIGF0IGNvbXBpbGUgdGltZSB3aXRoOgorCisgICAgREVGSU5FX0ZMRVhfQVJSQVkobmFtZSwgZWxlbWVudF9zaXplLCB0b3RhbCk7CisKK1RoaXMgbWFjcm8gd2lsbCByZXN1bHQgaW4gYSBkZWZpbml0aW9uIG9mIGFuIGFycmF5IHdpdGggdGhlIGdpdmVuIG5hbWU7IHRoZQorZWxlbWVudCBzaXplIGFuZCB0b3RhbCB3aWxsIGJlIGNoZWNrZWQgZm9yIHZhbGlkaXR5IGF0IGNvbXBpbGUgdGltZS4KKworU3RvcmluZyBkYXRhIGludG8gYSBmbGV4aWJsZSBhcnJheSBpcyBhY2NvbXBsaXNoZWQgd2l0aCBhIGNhbGwgdG86CisKKyAgICBpbnQgZmxleF9hcnJheV9wdXQoc3RydWN0IGZsZXhfYXJyYXkgKmFycmF5LCB1bnNpZ25lZCBpbnQgZWxlbWVudF9uciwKKyAgICAJCSAgICAgICB2b2lkICpzcmMsIGdmcF90IGZsYWdzKTsKKworVGhpcyBjYWxsIHdpbGwgY29weSB0aGUgZGF0YSBmcm9tIHNyYyBpbnRvIHRoZSBhcnJheSwgaW4gdGhlIHBvc2l0aW9uCitpbmRpY2F0ZWQgYnkgZWxlbWVudF9uciAod2hpY2ggbXVzdCBiZSBsZXNzIHRoYW4gdGhlIG1heGltdW0gc3BlY2lmaWVkIHdoZW4KK3RoZSBhcnJheSB3YXMgY3JlYXRlZCkuICBJZiBhbnkgbWVtb3J5IGFsbG9jYXRpb25zIG11c3QgYmUgcGVyZm9ybWVkLCBmbGFncword2lsbCBiZSB1c2VkLiAgVGhlIHJldHVybiB2YWx1ZSBpcyB6ZXJvIG9uIHN1Y2Nlc3MsIGEgbmVnYXRpdmUgZXJyb3IgY29kZQorb3RoZXJ3aXNlLgorCitUaGVyZSBtaWdodCBwb3NzaWJseSBiZSBhIG5lZWQgdG8gc3RvcmUgZGF0YSBpbnRvIGEgZmxleGlibGUgYXJyYXkgd2hpbGUKK3J1bm5pbmcgaW4gc29tZSBzb3J0IG9mIGF0b21pYyBjb250ZXh0OyBpbiB0aGlzIHNpdHVhdGlvbiwgc2xlZXBpbmcgaW4gdGhlCittZW1vcnkgYWxsb2NhdG9yIHdvdWxkIGJlIGEgYmFkIHRoaW5nLiAgVGhhdCBjYW4gYmUgYXZvaWRlZCBieSB1c2luZworR0ZQX0FUT01JQyBmb3IgdGhlIGZsYWdzIHZhbHVlLCBidXQsIG9mdGVuLCB0aGVyZSBpcyBhIGJldHRlciB3YXkuICBUaGUKK3RyaWNrIGlzIHRvIGVuc3VyZSB0aGF0IGFueSBuZWVkZWQgbWVtb3J5IGFsbG9jYXRpb25zIGFyZSBkb25lIGJlZm9yZQorZW50ZXJpbmcgYXRvbWljIGNvbnRleHQsIHVzaW5nOgorCisgICAgaW50IGZsZXhfYXJyYXlfcHJlYWxsb2Moc3RydWN0IGZsZXhfYXJyYXkgKmFycmF5LCB1bnNpZ25lZCBpbnQgc3RhcnQsCisJCQkgICAgdW5zaWduZWQgaW50IG5yX2VsZW1lbnRzLCBnZnBfdCBmbGFncyk7CisKK1RoaXMgZnVuY3Rpb24gd2lsbCBlbnN1cmUgdGhhdCBtZW1vcnkgZm9yIHRoZSBlbGVtZW50cyBpbmRleGVkIGluIHRoZSByYW5nZQorZGVmaW5lZCBieSBzdGFydCBhbmQgbnJfZWxlbWVudHMgaGFzIGJlZW4gYWxsb2NhdGVkLiAgVGhlcmVhZnRlciwgYQorZmxleF9hcnJheV9wdXQoKSBjYWxsIG9uIGFuIGVsZW1lbnQgaW4gdGhhdCByYW5nZSBpcyBndWFyYW50ZWVkIG5vdCB0bworYmxvY2suCisKK0dldHRpbmcgZGF0YSBiYWNrIG91dCBvZiB0aGUgYXJyYXkgaXMgZG9uZSB3aXRoOgorCisgICAgdm9pZCAqZmxleF9hcnJheV9nZXQoc3RydWN0IGZsZXhfYXJyYXkgKmZhLCB1bnNpZ25lZCBpbnQgZWxlbWVudF9ucik7CisKK1RoZSByZXR1cm4gdmFsdWUgaXMgYSBwb2ludGVyIHRvIHRoZSBkYXRhIGVsZW1lbnQsIG9yIE5VTEwgaWYgdGhhdAorcGFydGljdWxhciBlbGVtZW50IGhhcyBuZXZlciBiZWVuIGFsbG9jYXRlZC4KKworTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIGdldCBiYWNrIGEgdmFsaWQgcG9pbnRlciBmb3IgYW4gZWxlbWVudCB3aGljaAoraGFzIG5ldmVyIGJlZW4gc3RvcmVkIGluIHRoZSBhcnJheS4gIE1lbW9yeSBmb3IgYXJyYXkgZWxlbWVudHMgaXMgYWxsb2NhdGVkCitvbmUgcGFnZSBhdCBhIHRpbWU7IGEgc2luZ2xlIGFsbG9jYXRpb24gY291bGQgcHJvdmlkZSBtZW1vcnkgZm9yIHNldmVyYWwKK2FkamFjZW50IGVsZW1lbnRzLiAgRmxleGlibGUgYXJyYXkgZWxlbWVudHMgYXJlIG5vcm1hbGx5IGluaXRpYWxpemVkIHRvIHRoZQordmFsdWUgRkxFWF9BUlJBWV9GUkVFIChkZWZpbmVkIGFzIDB4NmMgaW4gPGxpbnV4L3BvaXNvbi5oPiksIHNvIGVycm9ycworaW52b2x2aW5nIHRoYXQgbnVtYmVyIHByb2JhYmx5IHJlc3VsdCBmcm9tIHVzZSBvZiB1bnN0b3JlZCBhcnJheSBlbnRyaWVzLgorTm90ZSB0aGF0LCBpZiBhcnJheSBlbGVtZW50cyBhcmUgYWxsb2NhdGVkIHdpdGggX19HRlBfWkVSTywgdGhleSB3aWxsIGJlCitpbml0aWFsaXplZCB0byB6ZXJvIGFuZCB0aGlzIHBvaXNvbmluZyB3aWxsIG5vdCBoYXBwZW4uCisKK0luZGl2aWR1YWwgZWxlbWVudHMgaW4gdGhlIGFycmF5IGNhbiBiZSBjbGVhcmVkIHdpdGg6CisKKyAgICBpbnQgZmxleF9hcnJheV9jbGVhcihzdHJ1Y3QgZmxleF9hcnJheSAqYXJyYXksIHVuc2lnbmVkIGludCBlbGVtZW50X25yKTsKKworVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgZ2l2ZW4gZWxlbWVudCB0byBGTEVYX0FSUkFZX0ZSRUUgYW5kIHJldHVybgoremVyby4gIElmIHN0b3JhZ2UgZm9yIHRoZSBpbmRpY2F0ZWQgZWxlbWVudCBpcyBub3QgYWxsb2NhdGVkIGZvciB0aGUgYXJyYXksCitmbGV4X2FycmF5X2NsZWFyKCkgd2lsbCByZXR1cm4gLUVJTlZBTCBpbnN0ZWFkLiAgTm90ZSB0aGF0IGNsZWFyaW5nIGFuCitlbGVtZW50IGRvZXMgbm90IHJlbGVhc2UgdGhlIHN0b3JhZ2UgYXNzb2NpYXRlZCB3aXRoIGl0OyB0byByZWR1Y2UgdGhlCithbGxvY2F0ZWQgc2l6ZSBvZiBhbiBhcnJheSwgY2FsbDoKKworICAgIGludCBmbGV4X2FycmF5X3NocmluayhzdHJ1Y3QgZmxleF9hcnJheSAqYXJyYXkpOworCitUaGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgdGhlIG51bWJlciBvZiBwYWdlcyBvZiBtZW1vcnkgYWN0dWFsbHkgZnJlZWQuCitUaGlzIGZ1bmN0aW9uIHdvcmtzIGJ5IHNjYW5uaW5nIHRoZSBhcnJheSBmb3IgcGFnZXMgY29udGFpbmluZyBub3RoaW5nIGJ1dAorRkxFWF9BUlJBWV9GUkVFIGJ5dGVzLCBzbyAoMSkgaXQgY2FuIGJlIGV4cGVuc2l2ZSwgYW5kICgyKSBpdCB3aWxsIG5vdCB3b3JrCitpZiB0aGUgYXJyYXkncyBwYWdlcyBhcmUgYWxsb2NhdGVkIHdpdGggX19HRlBfWkVSTy4KKworSXQgaXMgcG9zc2libGUgdG8gcmVtb3ZlIGFsbCBlbGVtZW50cyBvZiBhbiBhcnJheSB3aXRoIGEgY2FsbCB0bzoKKworICAgIHZvaWQgZmxleF9hcnJheV9mcmVlX3BhcnRzKHN0cnVjdCBmbGV4X2FycmF5ICphcnJheSk7CisKK1RoaXMgY2FsbCBmcmVlcyBhbGwgZWxlbWVudHMsIGJ1dCBsZWF2ZXMgdGhlIGFycmF5IGl0c2VsZiBpbiBwbGFjZS4KK0ZyZWVpbmcgdGhlIGVudGlyZSBhcnJheSBpcyBkb25lIHdpdGg6CisKKyAgICB2b2lkIGZsZXhfYXJyYXlfZnJlZShzdHJ1Y3QgZmxleF9hcnJheSAqYXJyYXkpOworCitBcyBvZiB0aGlzIHdyaXRpbmcsIHRoZXJlIGFyZSBubyB1c2VycyBvZiBmbGV4aWJsZSBhcnJheXMgaW4gdGhlIG1haW5saW5lCitrZXJuZWwuICBUaGUgZnVuY3Rpb25zIGRlc2NyaWJlZCBoZXJlIGFyZSBhbHNvIG5vdCBleHBvcnRlZCB0byBtb2R1bGVzOwordGhhdCB3aWxsIHByb2JhYmx5IGJlIGZpeGVkIHdoZW4gc29tZWJvZHkgY29tZXMgdXAgd2l0aCBhIG5lZWQgZm9yIGl0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mbWMvMDAtSU5ERVggYi9Eb2N1bWVudGF0aW9uL2ZtYy8wMC1JTkRFWApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzFjNjk1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mbWMvMDAtSU5ERVgKQEAgLTAsMCArMSwzOCBAQAorCitEb2N1bWVudGF0aW9uIGluIHRoaXMgZGlyZWN0b3J5IGNvbWVzIGZyb20gc2VjdGlvbnMgb2YgdGhlIG1hbnVhbCB3ZQord3JvdGUgZm9yIHRoZSBleHRlcm5hbGx5LWRldmVsb3BlZCBmbWMtYnVzIHBhY2thZ2UuIFRoZSBjb21wbGV0ZQorbWFudWFsIGFzIG9mIHRvZGF5ICgyMDEzLTAyKSBpcyBhdmFpbGFibGUgaW4gUERGIGZvcm1hdCBhdAoraHR0cDovL3d3dy5vaHdyLm9yZy9wcm9qZWN0cy9mbWMtYnVzL2ZpbGVzCisKKzAwLUlOREVYCisJLSB0aGlzIGZpbGUuCisKK0ZNQy1hbmQtU0RCLnR4dAorCS0gV2hhdCBhcmUgRk1DIGFuZCBTREIsIGJhc2ljIGNvbmNlcHRzIGZvciB0aGlzIGZyYW1ld29yaworCitBUEkudHh0CisJLSBUaGUgZnVuY3Rpb25zIHRoYXQgYXJlIGV4cG9ydGVkIGJ5IHRoZSBidXMgZHJpdmVyCisKK3BhcmFtZXRlcnMudHh0CisJLSBUaGUgbW9kdWxlIHBhcmFtZXRlcnMKKworY2Fycmllci50eHQKKwktIHdyaXRpbmcgYSBjYXJyaWVyIChhIGRldmljZSkKKworbWV6emFuaW5lLnR4dAorCS0gd3JpdGluZyBjb2RlIGZvciB5b3VyIG1lenphbmluZSAoYSBkcml2ZXIpCisKK2lkZW50aWZpZXJzLnR4dAorCS0gaG93IGlkZW50aWZpY2F0aW9uIGFuZCBtYXRjaGluZyB3b3JrcworCitmbWMtZmFrZWRldi50eHQKKwktIGFib3V0IGRyaXZlcnMvZm1jL2ZtYy1mYWtlZGV2LmtvCisKK2ZtYy10cml2aWFsLnR4dAorCS0gYWJvdXQgZHJpdmVycy9mbWMvZm1jLXRyaXZpYWwua28KKworZm1jLXdyaXRlLWVlcHJvbS50eHQKKwktIGFib3V0IGRyaXZlcnMvZm1jL2ZtYy13cml0ZS1lZXByb20ua28KKworZm1jLWNoYXJkZXYudHh0CisJLSBhYm91dCBkcml2ZXJzL2ZtYy9mbWMtY2hhcmRldi5rbwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mbWMvQVBJLnR4dCBiL0RvY3VtZW50YXRpb24vZm1jL0FQSS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZiMDZiOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZm1jL0FQSS50eHQKQEAgLTAsMCArMSw0NyBAQAorRnVuY3Rpb25zIEV4cG9ydGVkIGJ5IGZtYy5rbworKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitUaGUgRk1DIGNvcmUgZXhwb3J0cyB0aGUgdXN1YWwgNCBmdW5jdGlvbnMgdGhhdCBhcmUgbmVlZGVkIGZvciBhIGJ1cyB0bword29yaywgYW5kIGEgZmV3IG1vcmU6CisKKyAgICAgICAgaW50IGZtY19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGZtY19kcml2ZXIgKmRydik7CisgICAgICAgIHZvaWQgZm1jX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBmbWNfZHJpdmVyICpkcnYpOworICAgICAgICBpbnQgZm1jX2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgZm1jX2RldmljZSAqZm1jKTsKKyAgICAgICAgdm9pZCBmbWNfZGV2aWNlX3VucmVnaXN0ZXIoc3RydWN0IGZtY19kZXZpY2UgKmZtYyk7CisKKyAgICAgICAgaW50IGZtY19kZXZpY2VfcmVnaXN0ZXJfbihzdHJ1Y3QgZm1jX2RldmljZSAqKmZtYywgaW50IG4pOworICAgICAgICB2b2lkIGZtY19kZXZpY2VfdW5yZWdpc3Rlcl9uKHN0cnVjdCBmbWNfZGV2aWNlICoqZm1jLCBpbnQgbik7CisKKyAgICAgICAgdWludDMyX3QgZm1jX3JlYWRsKHN0cnVjdCBmbWNfZGV2aWNlICpmbWMsIGludCBvZmZzZXQpOworICAgICAgICB2b2lkIGZtY193cml0ZWwoc3RydWN0IGZtY19kZXZpY2UgKmZtYywgdWludDMyX3QgdmFsLCBpbnQgb2ZmKTsKKyAgICAgICAgdm9pZCAqZm1jX2dldF9kcnZkYXRhKHN0cnVjdCBmbWNfZGV2aWNlICpmbWMpOworICAgICAgICB2b2lkIGZtY19zZXRfZHJ2ZGF0YShzdHJ1Y3QgZm1jX2RldmljZSAqZm1jLCB2b2lkICpkYXRhKTsKKworICAgICAgICBpbnQgZm1jX3JlcHJvZ3JhbShzdHJ1Y3QgZm1jX2RldmljZSAqZiwgc3RydWN0IGZtY19kcml2ZXIgKmQsIGNoYXIgKmd3LAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2RiX2VudHJ5KTsKKworVGhlIGRhdGEgc3RydWN0dXJlIHRoYXQgZGVzY3JpYmUgYSBkZXZpY2UgaXMgZGV0YWlsZWQgaW4gKm5vdGUgRk1DCitEZXZpY2U6OiwgdGhlIG9uZSB0aGF0IGRlc2NyaWJlcyBhIGRyaXZlciBpcyBkZXRhaWxlZCBpbiAqbm90ZSBGTUMKK0RyaXZlcjo6LiAgUGxlYXNlIG5vdGUgdGhhdCBzdHJ1Y3R1cmVzIG9mIHR5cGUgZm1jX2RldmljZSBtdXN0IGJlCithbGxvY2F0ZWQgYnkgdGhlIGNhbGxlciwgYnV0IG11c3Qgbm90IGJlIHJlbGVhc2VkIGFmdGVyIHVucmVnaXN0ZXJpbmcuCitUaGUgZm1jLWJ1cyBpdHNlbGYgdGFrZXMgY2FyZSBvZiByZWxlYXNpbmcgdGhlIHN0cnVjdHVyZSB3aGVuIHRoZWlyIHVzZQorY291bnQgcmVhY2hlcyB6ZXJvIC0gYWN0dWFsbHksIHRoZSBkZXZpY2UgbW9kZWwgZG9lcyB0aGF0IGluIGxpZXUgb2YgdXMuCisKK1RoZSBmdW5jdGlvbnMgdG8gcmVnaXN0ZXIgYW5kIHVucmVnaXN0ZXIgbiBkZXZpY2VzIGFyZSBtZWFudCB0byBiZSB1c2VkCitieSBjYXJyaWVycyB0aGF0IGhvc3QgbW9yZSB0aGFuIG9uZSBtZXp6YW5pbmUuIFRoZSBkZXZpY2VzIG11c3QgYWxsIGJlCityZWdpc3RlcmVkIGF0IHRoZSBzYW1lIHRpbWUgYmVjYXVzZSBpZiB0aGUgRlBHQSBpcyByZXByb2dyYW1tZWQsIGFsbAorZGV2aWNlcyBpbiB0aGUgYXJyYXkgYXJlIGFmZmVjdGVkLiBVc3VhbGx5LCB0aGUgZHJpdmVyIG1hdGNoaW5nIHRoZQorZmlyc3QgZGV2aWNlIHdpbGwgcmVwcm9ncmFtIHRoZSBGUEdBLCBzbyBvdGhlciBkZXZpY2VzIG11c3Qga25vdyB0aGV5CithcmUgYWxyZWFkeSBkcml2ZW4gYnkgYSByZXByb2dyYW1tZWQgRlBHQS4KKworSWYgYSBjYXJyaWVyIGhvc3RzIHNsb3RzIHRoYXQgYXJlIGRyaXZlbiBieSBkaWZmZXJlbnQgRlBHQSBkZXZpY2VzLCBpdAorc2hvdWxkIHJlZ2lzdGVyIGFzIGEgZ3JvdXAgb25seSBtZXp6YW5pbmVzIHRoYXQgYXJlIGRyaXZlbiBieSB0aGUgc2FtZQorRlBHQSwgZm9yIHRoZSByZWFzb24gb3V0bGluZWQgYWJvdmUuCisKK0ZpbmFsbHksIHRoZSBmbWNfcmVwcm9ncmFtIGZ1bmN0aW9uIGNhbGxzIHRoZSByZXByb2dyYW0gbWV0aG9kIChzZWUKKypub3RlIFRoZSBBUEkgT2ZmZXJlZCBieSBDYXJyaWVyczo6IGFuZCBhbHNvIHNjYW5zIHRoZSBtZW1vcnkgYXJlYSBmb3IKK2FuIFNEQiB0cmVlLiBZb3UgY2FuIHBhc3MgLTEgYXMgc2RiX2VudHJ5IHRvIGRpc2FibGUgc3VjaCBzY2FuLgorT3RoZXJ3aXNlLCB0aGUgZnVuY3Rpb24gZmFpbHMgaWYgbm8gdHJlZSBpcyBmb3VuZCBhdCB0aGUgc3BlY2lmaWVkCitlbnRyeSBwb2ludC4gIFRoZSBmdW5jdGlvbiBpcyBtZWFudCB0byBmYWN0b3JpemUgY29tbW9uIGNvZGUsIGFuZCBieQordGhlIHRpbWUgeW91IHJlYWQgdGhpcyBpdCBpcyBhbHJlYWR5IHVzZWQgYnkgdGhlIHNwZWMtc3cgYW5kIGZpbmUtZGVsYXkKK21vZHVsZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZtYy9GTUMtYW5kLVNEQi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZtYy9GTUMtYW5kLVNEQi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmExNGUwYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZm1jL0ZNQy1hbmQtU0RCLnR4dApAQCAtMCwwICsxLDg4IEBACisKK0ZNQyAoRlBHQSBNZXp6YW5pbmUgQ2FyZCkgaXMgdGhlIHN0YW5kYXJkIHdlIHVzZSBmb3Igb3VyIEkvTyBkZXZpY2VzLAoraW4gdGhlIGNvbnRleHQgb2YgV2hpdGUgUmFiYml0IGFuZCByZWxhdGVkIGhhcmR3YXJlLgorCitJbiBvdXIgSS9PIGVudmlyb25tZW50cyB3ZSBuZWVkIHRvIHdyaXRlIGRyaXZlcnMgZm9yIGVhY2ggbWV6emFuaW5lCitjYXJkLCBhbmQgc3VjaCBkcml2ZXJzIG11c3Qgd29yayByZWdhcmRsZXNzIG9mIHRoZSBjYXJyaWVyIGJlaW5nIHVzZWQuCitUbyBhY2hpZXZlIHRoaXMsIHdlIGFic3RyYWN0IHRoZSBGTUMgaW50ZXJmYWNlLgorCitXZSBoYXZlIGEgY2FycmllciBmb3IgUENJLUUgY2FsbGVkIFNQRUMgYW5kIG9uZSBmb3IgVk1FIGNhbGxlZCBTVkVDLAorYnV0IG1vcmUgYXJlIHBsYW5uZWQuICBBbHNvLCB3ZSBzdXBwb3J0IHN0YW5kLWFsb25lIGRldmljZXMgKHVzdWFsbHkKK3BsdWdnZWQgb24gYSBTUEVDIGNhcmQpLCBjb250cm9sbGVkIHRocm91Z2ggRXRoZXJib25lLCBkZXZlbG9wZWQgYnkgR1NJLgorCitDb2RlIGFuZCBkb2N1bWVudGF0aW9uIGZvciB0aGUgRk1DIGJ1cyB3YXMgYm9ybiBhcyBwYXJ0IG9mIHRoZSBzcGVjLXN3Citwcm9qZWN0LCBidXQgbm93IGl0IGxpdmVzIGluIGl0cyBvd24gcHJvamVjdC4gT3RoZXIgcHJvamVjdHMsIGkuZS4KK3NvZnR3YXJlIHN1cHBvcnQgZm9yIHRoZSB2YXJpb3VzIGNhcnJpZXJzLCBzaG91bGQgaW5jbHVkZSB0aGlzIGFzIGEKK3N1Ym1vZHVsZS4KKworVGhlIG1vc3QgdXAgdG8gZGF0ZSB2ZXJzaW9uIG9mIGNvZGUgYW5kIGRvY3VtZW50YXRpb24gaXMgYWx3YXlzCithdmFpbGFibGUgZnJvbSB0aGUgcmVwb3NpdG9yeSB5b3UgY2FuIGNsb25lIGZyb206CisKKyAgICAgICAgZ2l0Oi8vb2h3ci5vcmcvZm1jLXByb2plY3RzL2ZtYy1idXMuZ2l0IChyZWFkLW9ubHkpCisgICAgICAgIGdpdEBvaHdyLm9yZzpmbWMtcHJvamVjdHMvZm1jLWJ1cy5naXQgKHJlYWQtd3JpdGUgZm9yIGRldmVsb3BlcnMpCisKK1NlbGVjdGVkIHZlcnNpb25zIG9mIHRoZSBkb2N1bWVudGF0aW9uLCBhcyB3ZWxsIGFzIGNvbXBsZXRlIHRhcgorYXJjaGl2ZXMgZm9yIHNlbGVjdGVkIHJldmlzaW9ucyBhcmUgcGxhY2VkIHRvIHRoZSBGaWxlcyBzZWN0aW9uIG9mIHRoZQorcHJvamVjdDogYGh0dHA6Ly93d3cub2h3ci5vcmcvcHJvamVjdHMvZm1jLWJ1cy9maWxlcycKKworCitXaGF0IGlzIEZNQworKioqKioqKioqKioKKworRk1DLCBhcyBzYWlkLCBzdGFuZHMgZm9yICJGUEdBIE1lenphbmluZSBDYXJkIi4gSXQgaXMgYSBzdGFuZGFyZAorZGV2ZWxvcGVkIGJ5IHRoZSBWTUUgY29uc29ydGl1bSBjYWxsZWQgVklUQSAoVk1FYnVzIEludGVybmF0aW9uYWwgVHJhZGUKK0Fzc29jaWF0aW9uIGFuZCByYXRpZmllZCBieSBBTlNJLCB0aGUgQW1lcmljYW4gTmF0aW9uYWwgU3RhbmRhcmQKK0luc3RpdHV0ZS4gIFRoZSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIGlzIGNhbGxlZCAiQU5TSS1WSVRBIDU3LjEiLgorCitUaGUgRk1DIGNhcmQgaXMgYW4gYWxtb3N0IHNxdWFyZSBQQ0IsIGFyb3VuZCA3MHg3NSBtaWxsaW1ldGVycywgdGhhdCBpcworY2FsbGVkIG1lenphbmluZSBpbiB0aGlzIGRvY3VtZW50LiAgSXQgdXN1YWxseSBsaXZlcyBwbHVnZ2VkIGludG8KK2Fub3RoZXIgUENCIGZvciBwb3dlciBzdXBwbHkgYW5kIGNvbnRyb2w7IHN1Y2ggYmlnZ2VyIGNpcmN1aXQgYm9hcmQgaXMKK2NhbGxlZCBjYXJyaWVyIGZyb20gbm93IG9uLCBhbmQgYSBzaW5nbGUgY2FycmllciBtYXkgaG9zdCBtb3JlIHRoYW4gb25lCittZXp6YW5pbmUuCisKK0luIHRoZSB0eXBpY2FsIGFwcGxpY2F0aW9uIHRoZSBtZXp6YW5pbmUgaXMgbW9zdGx5IGFuYWxvZyB3aGlsZSB0aGUKK2NhcnJpZXIgaXMgbW9zdGx5IGRpZ2l0YWwsIGFuZCBob3N0cyBhbiBGUEdBIHRoYXQgbXVzdCBiZSBjb25maWd1cmVkIHRvCittYXRjaCB0aGUgc3BlY2lmaWMgbWV6emFuaW5lIGFuZCB0aGUgZGVzaXJlZCBhcHBsaWNhdGlvbi4gVGh1cywgeW91IG1heQorbmVlZCB0byBsb2FkIGRpZmZlcmVudCBGUEdBIGltYWdlcyB0byBkcml2ZSBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIHRoZQorc2FtZSBtZXp6YW5pbmUuCisKK0ZNQywgYXMgc3VjaCwgaXMgbm90IGEgYnVzIGluIHRoZSB1c3VhbCBtZWFuaW5nIG9mIHRoZSB0ZXJtLCBiZWNhdXNlCittb3N0IGNhcnJpZXJzIGhhdmUgb25seSBvbmUgY29ubmVjdG9yLCBhbmQgY2FycmllcnMgd2l0aCBzZXZlcmFsCitjb25uZWN0b3JzIGhhdmUgY29tcGxldGVseSBzZXBhcmF0ZSBlbGVjdHJpY2FsIGNvbm5lY3Rpb25zIHRvIHRoZW0uCitUaGlzIHBhY2thZ2UsIGhvd2V2ZXIsIGltcGxlbWVudHMgYSBidXMgYXMgYSBzb2Z0d2FyZSBhYnN0cmFjdGlvbi4KKworCitXaGF0IGlzIFNEQgorKioqKioqKioqKioKKworU0RCIChTZWxmIERlc2NyaWJpbmcgQnVzKSBpcyBhIHNldCBvZiBkYXRhIHN0cnVjdHVyZXMgdGhhdCB3ZSB1c2UgZm9yCitlbnVtZXJhdGluZyB0aGUgaW50ZXJuYWwgc3RydWN0dXJlIG9mIGFuIEZQR0EgaW1hZ2UuIFdlIGFsc28gdXNlIGl0IGFzCithIGZpbGVzeXN0ZW0gaW5zaWRlIHRoZSBGTUMgRUVQUk9NLgorCitTREIgaXMgbm90IG1hbmRhdG9yeSBmb3IgdXNlIG9mIHRoaXMgRk1DIGtlcm5lbCBidXMsIGJ1dCBpZiB5b3UgaGF2ZSBTREIKK3RoaXMgcGFja2FnZSBjYW4gbWFrZSBnb29kIHVzZSBvZiBpdC4gIFNEQiBpdHNlbGYgaXMgZGV2ZWxvcGVkIGluIHRoZQorZnBnYS1jb25maWctc3BhY2UgT0hXUiBwcm9qZWN0LiBUaGUgbGluayB0byB0aGUgcmVwb3NpdG9yeSBpcworYGdpdDovL29od3Iub3JnL2hkbC1jb3JlLWxpYi9mcGdhLWNvbmZpZy1zcGFjZS5naXQnIGFuZCB3aGF0IGlzIHVzZWQgaW4KK3RoaXMgcHJvamVjdCBsaXZlcyBpbiB0aGUgc2RiZnMgc3ViZGlyZWN0b3J5IGluIHRoZXJlLgorCitTREIgc3VwcG9ydCBmb3IgRk1DIGlzIGRlc2NyaWJlZCBpbiAqbm90ZSBGTUMgSWRlbnRpZmljYXRpb246OiBhbmQKKypub3RlIFNEQiBTdXBwb3J0OjoKKworCitTREIgU3VwcG9ydAorKioqKioqKioqKioKKworVGhlIGZtYy5rbyBidXMgZHJpdmVyIGV4cG9ydHMgYSBmZXcgZnVuY3Rpb25zIHRvIGhlbHAgZHJpdmVycyB0YWtpbmcKK2FkdmFudGFnZSBvZiB0aGUgU0RCIGluZm9ybWF0aW9uIHRoYXQgbWF5IGJlIHByZXNlbnQgaW4geW91ciBvd24gRlBHQQorbWVtb3J5IGltYWdlLgorCitUaGUgbW9kdWxlIGV4cG9ydHMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMsIGluIHRoZSBzcGVjaWFsIGhlYWRlcgorPGxpbnV4L2ZtYy1zZGIuaD4uIFRoZSBsaW51eC8gcHJlZml4IGluIHRoZSBuYW1lIGlzIHRoZXJlIGJlY2F1c2Ugd2UKK3BsYW4gdG8gc3VibWl0IGl0IHVwc3RyZWFtIGluIHRoZSBmdXR1cmUsIGFuZCBkb24ndCB3YW50IHRvIGZvcmNlCitjaGFuZ2VzIG9uIG91ciBkcml2ZXJzIGlmIHRoYXQgaGFwcGVucy4KKworICAgICAgICAgaW50IGZtY19zY2FuX3NkYl90cmVlKHN0cnVjdCBmbWNfZGV2aWNlICpmbWMsIHVuc2lnbmVkIGxvbmcgYWRkcmVzcyk7CisgICAgICAgICB2b2lkIGZtY19zaG93X3NkYl90cmVlKHN0cnVjdCBmbWNfZGV2aWNlICpmbWMpOworICAgICAgICAgc2lnbmVkIGxvbmcgZm1jX2ZpbmRfc2RiX2RldmljZShzdHJ1Y3Qgc2RiX2FycmF5ICp0cmVlLCB1aW50NjRfdCB2ZW5kb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRldmljZSwgdW5zaWduZWQgbG9uZyAqc3opOworICAgICAgICAgaW50IGZtY19mcmVlX3NkYl90cmVlKHN0cnVjdCBmbWNfZGV2aWNlICpmbWMpOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mbWMvY2Fycmllci50eHQgYi9Eb2N1bWVudGF0aW9uL2ZtYy9jYXJyaWVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTRmMWRkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mbWMvY2Fycmllci50eHQKQEAgLTAsMCArMSwzMTEgQEAKK0ZNQyBEZXZpY2UKKyoqKioqKioqKioKKworV2l0aGluIHRoZSBMaW51eCBidXMgZnJhbWV3b3JrLCB0aGUgRk1DIGRldmljZSBpcyBjcmVhdGVkIGFuZAorcmVnaXN0ZXJlZCBieSB0aGUgY2FycmllciBkcml2ZXIuIEZvciBleGFtcGxlLCB0aGUgUENJIGRyaXZlciBmb3IgdGhlCitTUEVDIGNhcmQgZmlsbHMgYSBkYXRhIHN0cnVjdHVyZSBmb3IgZWFjaCBTUEVDIHRoYXQgaXQgZHJpdmVzLCBhbmQKK3JlZ2lzdGVycyBhbiBhc3NvY2lhdGVkIEZNQyBkZXZpY2UgZm9yIGVhY2ggY2FyZC4gIFRoZSBTVkVDIGRyaXZlciBjYW4KK2RvIGV4YWN0bHkgdGhlIHNhbWUgZm9yIHRoZSBWTUUgY2FycmllciAoYWN0dWFsbHksIGl0IHNob3VsZCBkbyBpdAordHdpY2UsIGJlY2F1c2UgdGhlIFNWRUMgY2FycmllcyB0d28gRk1DIG1lenphbmluZXMpLiAgU2ltaWxhcmx5LCBhbgorRXRoZXJib25lIGRyaXZlciB3aWxsIGJlIGFibGUgdG8gcmVnaXN0ZXIgaXRzIG93biBGTUMgZGV2aWNlcywgb2ZmZXJpbmcKK2NvbW11bmljYXRpb24gcHJpbWl0aXZlcyB0aHJvdWdoIGZyYW1lIGV4Y2hhbmdlLgorCitUaGUgY29udGVudHMgb2YgdGhlIEVFUFJPTSB3aXRoaW4gdGhlIEZNQyBhcmUgdXNlZCBmb3IgaWRlbnRpZmljYXRpb24KK3B1cnBvc2VzLCBpLmUuIGZvciBtYXRjaGluZyB0aGUgZGV2aWNlIHdpdGggaXRzIG93biBkcml2ZXIuIEZvciB0aGlzCityZWFzb24gdGhlIGRldmljZSBzdHJ1Y3R1cmUgaW5jbHVkZXMgYSBjb21wbGV0ZSBjb3B5IG9mIHRoZSBFRVBST00KKyhhY3R1YWxseSwgdGhlIGNhcnJpZXIgZHJpdmVyIG1heSBjaG9vc2Ugd2hldGhlciBvciBub3QgdG8gcmV0dXJuIGl0IC0KK2ZvciBleGFtcGxlIHdlIG1vc3QgbGlrZWx5IHdvbid0IGhhdmUgdGhlIHdob2xlIEVFUFJPTSBhdmFpbGFibGUgZm9yCitFdGhlcmJvbmUgZGV2aWNlcy4KKworVGhlIGZvbGxvd2luZyBsaXN0aW5nIHNob3dzIHRoZSBjdXJyZW50IHN0cnVjdHVyZSBkZWZpbmluZyBhIGRldmljZS4KK1BsZWFzZSBub3RlIHRoYXQgYWxsIHRoZSBtYWNoaW5lcnkgaXMgaW4gcGxhY2UgYnV0IHNvbWUgZGV0YWlscyBtYXkKK3N0aWxsIGNoYW5nZSBpbiB0aGUgZnV0dXJlLiAgRm9yIHRoaXMgcmVhc29uLCB0aGVyZSBpcyBhIHZlcnNpb24gZmllbGQKK2F0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cnVjdHVyZS4gIEFzIHVzdWFsLCB0aGUgbWlub3IgbnVtYmVyIHdpbGwKK2NoYW5nZSBmb3IgY29tcGF0aWJsZSBjaGFuZ2VzIChsaWtlIGEgbmV3IGZsYWcpIGFuZCB0aGUgbWFqb3IgbnVtYmVyCit3aWxsIGluY3JlYXNlIHdoZW4gYW4gaW5jb21wYXRpYmxlIGNoYW5nZSBoYXBwZW5zIChmb3IgZXhhbXBsZSwgYQorY2hhbmdlIGluIGxheW91dCBvZiBzb21lIGZtYyBkYXRhIHN0cnVjdHVyZXMpLiAgRGV2aWNlIHdyaXRlcnMgc2hvdWxkCitqdXN0IHNldCBpdCB0byB0aGUgdmFsdWUgRk1DX1ZFUlNJT04sIGFuZCBiZSByZWFkeSB0byBnZXQgYmFjayAtRUlOVkFMCithdCByZWdpc3RyYXRpb24gdGltZS4KKworICAgICBzdHJ1Y3QgZm1jX2RldmljZSB7CisgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2ZXJzaW9uOworICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CisgICAgICAgICAgICAgc3RydWN0IG1vZHVsZSAqb3duZXI7ICAgICAgICAgICAvKiBjaGFyIGRldmljZSBtdXN0IHBpbiBpdCAqLworICAgICAgICAgICAgIHN0cnVjdCBmbWNfZnJ1X2lkIGlkOyAgICAgICAgICAgLyogZm9yIEVFUFJPTS1iYXNlZCBtYXRjaCAqLworICAgICAgICAgICAgIHN0cnVjdCBmbWNfb3BlcmF0aW9ucyAqb3A7ICAgICAgLyogY2Fycmllci1wcm92aWRlZCAqLworICAgICAgICAgICAgIGludCBpcnE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogYWNjb3JkaW5nIHRvIGhvc3QgYnVzLiAwID09IG5vbmUgKi8KKyAgICAgICAgICAgICBpbnQgZWVwcm9tX2xlbjsgICAgICAgICAgICAgICAgIC8qIFVzdWFsbHkgOGtCLCBtYXkgYmUgbGVzcyAqLworICAgICAgICAgICAgIGludCBlZXByb21fYWRkcjsgICAgICAgICAgICAgICAgLyogMHg1MCwgMHg1MiBldGMgKi8KKyAgICAgICAgICAgICB1aW50OF90ICplZXByb207ICAgICAgICAgICAgICAgIC8qIEZ1bGwgY29udGVudHMgb3IgbGVhZGluZyBwYXJ0ICovCisgICAgICAgICAgICAgY2hhciAqY2Fycmllcl9uYW1lOyAgICAgICAgICAgICAvKiAiU1BFQyIgb3Igc2ltaWxhciwgZm9yIHNwZWNpYWwgdXNlICovCisgICAgICAgICAgICAgdm9pZCAqY2Fycmllcl9kYXRhOyAgICAgICAgICAgICAvKiAic3RydWN0IHNwZWMgKiIgb3IgZXF1aXZhbGVudCAqLworICAgICAgICAgICAgIF9faW9tZW0gdm9pZCAqZnBnYV9iYXNlOyAgICAgICAgLyogTWF5IGJlIE5VTEwgKEV0aGVyYm9uZSkgKi8KKyAgICAgICAgICAgICBfX2lvbWVtIHZvaWQgKnNsb3RfYmFzZTsgICAgICAgIC8qIFNldCBieSB0aGUgZHJpdmVyICovCisgICAgICAgICAgICAgc3RydWN0IGZtY19kZXZpY2UgKipkZXZhcnJheTsgICAvKiBBbGxvY2F0ZWQgYnkgdGhlIGJ1cyAqLworICAgICAgICAgICAgIGludCBzbG90X2lkOyAgICAgICAgICAgICAgICAgICAgLyogSW5kZXggaW4gdGhlIHNsb3QgYXJyYXkgKi8KKyAgICAgICAgICAgICBpbnQgbnJfc2xvdHM7ICAgICAgICAgICAgICAgICAgIC8qIE51bWJlciBvZiBzbG90cyBpbiB0aGlzIGNhcnJpZXIgKi8KKyAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1lbWxlbjsgICAgICAgICAgIC8qIFVzZWQgZm9yIHRoZSBjaGFyIGRldmljZSAqLworICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2UgZGV2OyAgICAgICAgICAgICAgLyogRm9yIExpbnV4IHVzZSAqLworICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2UgKmh3ZGV2OyAgICAgICAgICAgLyogVGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgZGV2aWNlICovCisgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzZGJmc19lbnRyeTsKKyAgICAgICAgICAgICBzdHJ1Y3Qgc2RiX2FycmF5ICpzZGI7CisgICAgICAgICAgICAgdWludDMyX3QgZGV2aWNlX2lkOyAgICAgICAgICAgICAvKiBGaWxsZWQgYnkgdGhlIGRldmljZSAqLworICAgICAgICAgICAgIGNoYXIgKm1lenphbmluZV9uYW1lOyAgICAgICAgICAgLyogRGVmYXVsdHMgdG8gYGBmbWMnJyAqLworICAgICAgICAgICAgIHZvaWQgKm1lenphbmluZV9kYXRhOworICAgICB9OworCitUaGUgbWVhbmluZyBvZiBtb3N0IGZpZWxkcyBpcyBzdW1tYXJpemVkIGluIHRoZSBjb2RlIGNvbW1lbnQgYWJvdmUuCisKK1RoZSBmb2xsb3dpbmcgZmllbGRzIG11c3QgYmUgZmlsbGVkIGJ5IHRoZSBjYXJyaWVyIGRyaXZlciBiZWZvcmUKK3JlZ2lzdHJhdGlvbjoKKworICAgKiB2ZXJzaW9uOiBtdXN0IGJlIHNldCB0byBGTUNfVkVSU0lPTi4KKworICAgKiBvd25lcjogc2V0IHRvIE1PRFVMRV9PV05FUi4KKworICAgKiBvcDogdGhlIG9wZXJhdGlvbnMgdG8gYWN0IG9uIHRoZSBkZXZpY2UuCisKKyAgICogaXJxOiBudW1iZXIgZm9yIHRoZSBtZXp6YW5pbmU7IG1heSBiZSB6ZXJvLgorCisgICAqIGVlcHJvbV9sZW46IGxlbmd0aCBvZiB0aGUgZm9sbG93aW5nIGFycmF5LgorCisgICAqIGVlcHJvbV9hZGRyOiAweDUwIGZvciBmaXJzdCBtZXp6YW5pbmUgYW5kIHNvIG9uLgorCisgICAqIGVlcHJvbTogdGhlIGZ1bGwgY29udGVudCBvZiB0aGUgSTJDIEVFUFJPTS4KKworICAgKiBjYXJyaWVyX25hbWUuCisKKyAgICogY2Fycmllcl9kYXRhOiBhIHVuaXF1ZSBwb2ludGVyIGZvciB0aGUgY2Fycmllci4KKworICAgKiBmcGdhX2Jhc2U6IHRoZSBJL08gbWVtb3J5IGFkZHJlc3MgKG1heSBiZSBOVUxMKS4KKworICAgKiBzbG90X2lkOiB0aGUgaW5kZXggb2YgdGhpcyBzbG90IChzdGFydGluZyBmcm9tIHplcm8pLgorCisgICAqIG1lbWxlbjogaWYgZnBnYV9iYXNlIGlzIHZhbGlkLCB0aGUgbGVuZ3RoIG9mIEkvTyBtZW1vcnkuCisKKyAgICogaHdkZXY6IHRvIGJlIHVzZWQgaW4gc29tZSBkZXZfZXJyKCkgY2FsbHMuCisKKyAgICogZGV2aWNlX2lkOiBhIHNsb3Qtc3BlY2lmaWMgdW5pcXVlIGludGVnZXIgbnVtYmVyLgorCisKK1BsZWFzZSBub3RlIHRoYXQgdGhlIGNhcnJpZXIgc2hvdWxkIHJlYWQgaXRzIG93biBFRVBST00gbWVtb3J5IGJlZm9yZQorcmVnaXN0ZXJpbmcgdGhlIGRldmljZSwgYXMgd2VsbCBhcyBmaWxsIGFsbCBvdGhlciBmaWVsZHMgbGlzdGVkIGFib3ZlLgorCitUaGUgZm9sbG93aW5nIGZpZWxkcyBzaG91bGQgbm90IGJlIGFzc2lnbmVkLCBiZWNhdXNlIHRoZXkgYXJlIGZpbGxlZAorbGF0ZXIgYnkgZWl0aGVyIHRoZSBidXMgb3IgdGhlIGRldmljZSBkcml2ZXI6CisKKyAgICogZmxhZ3MuCisKKyAgICogZnJ1X2lkOiBmaWxsZWQgYnkgdGhlIGJ1cywgcGFyc2luZyB0aGUgZWVwcm9tLgorCisgICAqIHNsb3RfYmFzZTogZmlsbGVkIGFuZCB1c2VkIGJ5IHRoZSBkcml2ZXIsIGlmIHVzZWZ1bCB0byBpdC4KKworICAgKiBkZXZhcnJheTogYW4gYXJyYXkgb2cgYWxsIG1lenphbmluZXMgZHJpdmVuIGJ5IGEgc2luZ2UgRlBHQS4KKworICAgKiBucl9zbG90czogc2V0IGJ5IHRoZSBjb3JlIGF0IHJlZ2lzdHJhdGlvbiB0aW1lLgorCisgICAqIGRldjogdXNlZCBieSBMaW51eC4KKworICAgKiBzZGI6IEZQR0EgY29udGVudHMsIHNjYW5uZWQgYWNjb3JkaW5nIHRvIGRyaXZlcidzIGRpcmVjdGlvbnMuCisKKyAgICogc2RiZnNfZW50cnk6IFNEQiBlbnRyeSBwb2ludCBpbiBFRVBST006IGF1dG9kZXRlY3RlZC4KKworICAgKiBtZXp6YW5pbmVfZGF0YTogYXZhaWxhYmxlIGZvciB0aGUgZHJpdmVyLgorCisgICAqIG1lenphbmluZV9uYW1lOiBmaWxsZWQgYnkgZm1jLWJ1cyBkdXJpbmcgaWRlbnRpZmljYXRpb24uCisKKworTm90ZTogbWV6emFuaW5lX2RhdGEgbWF5IGJlIHJlZHVuZGFudCwgYmVjYXVzZSBMaW51eCBvZmZlcnMgdGhlIGRydmRhdGEKK2FwcHJvYWNoLCBzbyB0aGUgZmllbGQgbWF5IGJlIHJlbW92ZWQgaW4gbGF0ZXIgdmVyc2lvbnMgb2YgdGhpcyBidXMKK2ltcGxlbWVudGF0aW9uLgorCitBcyBJIHdyaXRlIHRoaXMsIHNoZSBTUEVDIGNhcnJpZXIgaXMgYWxyZWFkeSBjb21wbGV0ZWx5IGZ1bmN0aW9uYWwgaW4KK3RoZSBmbWMtYnVzIGVudmlyb25tZW50LCBhbmQgaXMgYSBnb29kIHJlZmVyZW5jZSB0byBsb29rIGF0LgorCisKK1RoZSBBUEkgT2ZmZXJlZCBieSBDYXJyaWVycworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBjYXJyaWVyIHByb3ZpZGVzIGEgbnVtYmVyIG9mIG1ldGhvZHMgYnkgbWVhbnMgb2YgdGhlCitgZm1jX29wZXJhdGlvbnMnIHN0cnVjdHVyZSwgd2hpY2ggY3VycmVudGx5IGlzIGRlZmluZWQgbGlrZSB0aGlzCisoYWdhaW4sIGl0IGlzIGEgbW92aW5nIHRhcmdldCwgcGxlYXNlIHJlZmVyIHRvIHRoZSBoZWFkZXIgcmF0aGVyIHRoYW4KK3RoaXMgZG9jdW1lbnQpOgorCisgICAgIHN0cnVjdCBmbWNfb3BlcmF0aW9ucyB7CisgICAgICAgICAgICAgdWludDMyX3QgKCpyZWFkbCkoc3RydWN0IGZtY19kZXZpY2UgKmZtYywgaW50IG9mZnNldCk7CisgICAgICAgICAgICAgdm9pZCAoKndyaXRlbCkoc3RydWN0IGZtY19kZXZpY2UgKmZtYywgdWludDMyX3QgdmFsdWUsIGludCBvZmZzZXQpOworICAgICAgICAgICAgIGludCAoKnJlcHJvZ3JhbSkoc3RydWN0IGZtY19kZXZpY2UgKmYsIHN0cnVjdCBmbWNfZHJpdmVyICpkLCBjaGFyICpndyk7CisgICAgICAgICAgICAgaW50ICgqdmFsaWRhdGUpKHN0cnVjdCBmbWNfZGV2aWNlICpmbWMsIHN0cnVjdCBmbWNfZHJpdmVyICpkcnYpOworICAgICAgICAgICAgIGludCAoKmlycV9yZXF1ZXN0KShzdHJ1Y3QgZm1jX2RldmljZSAqZm1jLCBpcnFfaGFuZGxlcl90IGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm5hbWUsIGludCBmbGFncyk7CisgICAgICAgICAgICAgdm9pZCAoKmlycV9hY2spKHN0cnVjdCBmbWNfZGV2aWNlICpmbWMpOworICAgICAgICAgICAgIGludCAoKmlycV9mcmVlKShzdHJ1Y3QgZm1jX2RldmljZSAqZm1jKTsKKyAgICAgICAgICAgICBpbnQgKCpncGlvX2NvbmZpZykoc3RydWN0IGZtY19kZXZpY2UgKmZtYywgc3RydWN0IGZtY19ncGlvICpncGlvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmdwaW8pOworICAgICAgICAgICAgIGludCAoKnJlYWRfZWUpKHN0cnVjdCBmbWNfZGV2aWNlICpmbWMsIGludCBwb3MsIHZvaWQgKmQsIGludCBsKTsKKyAgICAgICAgICAgICBpbnQgKCp3cml0ZV9lZSkoc3RydWN0IGZtY19kZXZpY2UgKmZtYywgaW50IHBvcywgY29uc3Qgdm9pZCAqZCwgaW50IGwpOworICAgICB9OworCitUaGUgaW5kaXZpZHVhbCBtZXRob2RzIHBlcmZvcm0gdGhlIGZvbGxvd2luZyB0YXNrczoKKworYHJlYWRsJworYHdyaXRlbCcKKyAgICAgVGhlc2UgZnVuY3Rpb25zIGFjY2VzcyBGUEdBIHJlZ2lzdGVycyBieSB3aGF0ZXZlciBtZWFucyB0aGUKKyAgICAgY2FycmllciBvZmZlcnMuIFRoZXkgYXJlIG5vdCBleHBlY3RlZCB0byBmYWlsLCBhbmQgbW9zdCBvZiB0aGUgdGltZQorICAgICB0aGV5IHdpbGwganVzdCBtYWtlIGEgbWVtb3J5IGFjY2VzcyB0byB0aGUgaG9zdCBidXMuIElmIHRoZQorICAgICBjYXJyaWVyIHByb3ZpZGVzIGEgZnBnYV9iYXNlIHBvaW50ZXIsIHRoZSBkcml2ZXIgbWF5IHVzZSBkaXJlY3QKKyAgICAgYWNjZXNzIHRocm91Z2ggdGhhdCBwb2ludGVyLiBGb3IgdGhpcyByZWFzb24gdGhlIGhlYWRlciBvZmZlcnMgdGhlCisgICAgIGlubGluZSBmdW5jdGlvbnMgZm1jX3JlYWRsIGFuZCBmbWNfd3JpdGVsIHRoYXQgYWNjZXNzIGZwZ2FfYmFzZSBpZgorICAgICB0aGUgcmVzcGVjdGl2ZSBtZXRob2QgaXMgTlVMTC4gQSBkcml2ZXIgdGhhdCB3YW50cyB0byBiZSBwb3J0YWJsZQorICAgICBhbmQgZWZmaWNpZW50IHNob3VsZCB1c2UgZm1jX3JlYWRsIGFuZCBmbWNfd3JpdGVsLiAgRm9yIEV0aGVyYm9uZSwKKyAgICAgb3Igb3RoZXIgbm9uLWxvY2FsIGNhcnJpZXJzLCBlcnJvci1tYW5hZ2VtZW50IGlzIHN0aWxsIHRvIGJlCisgICAgIGRlZmluZWQuCisKK2B2YWxpZGF0ZScKKyAgICAgTW9kdWxlIHBhcmFtZXRlcnMgYXJlIHVzZWQgdG8gbWFuYWdlIGRpZmZlcmVudCBhcHBsaWNhdGlvbnMgZm9yCisgICAgIHR3byBvciBtb3JlIGJvYXJkcyBvZiB0aGUgc2FtZSBraW5kLiBWYWxpZGF0aW9uIGlzIGJhc2VkIG9uIHRoZQorICAgICBidXNpZCBtb2R1bGUgcGFyYW1ldGVyLCBpZiBwcm92aWRlZCwgYW5kIHJldHVybnMgdGhlIG1hdGNoaW5nCisgICAgIGluZGV4IGluIHRoZSBhc3NvY2lhdGVkIGFycmF5LiBTZWUgKm5vdGUgTW9kdWxlIFBhcmFtZXRlcnM6OiBpbiBpbgorICAgICBkb3VidC4gSWYgbm8gbWF0Y2ggaXMgZm91bmQsIGAtRU5PRU5UJyBpcyByZXR1cm5lZDsgaWYgdGhlIHVzZXIKKyAgICAgZGlkbid0IHBhc3MgYGJ1c2lkPScsIGFsbCBkZXZpY2VzIHdpbGwgcGFzcyB2YWxpZGF0aW9uLiAgVGhlIHZhbHVlCisgICAgIHJldHVybmVkIGJ5IHRoZSB2YWxpZGF0ZSBtZXRob2QgY2FuIGJlIHVzZWQgYXMgaW5kZXggaW50byBvdGhlcgorICAgICBwYXJhbWV0ZXJzIChmb3IgZXhhbXBsZSwgc29tZSBkcml2ZXJzIHVzZSB0aGUgYGxtMzI9JyBwYXJhbWV0ZXIgaW4KKyAgICAgdGhpcyB3YXkpLiBTdWNoICJnZW5lcmljIHBhcmFtZXRlcnMiIGFyZSBkb2N1bWVudGVkIGluICpub3RlCisgICAgIE1vZHVsZSBQYXJhbWV0ZXJzOjosIGJlbG93LiBUaGUgdmFsaWRhdGUgbWV0aG9kIGlzIHVzZWQgYnkKKyAgICAgYGZtYy10cml2aWFsLmtvJywgZGVzY3JpYmVkIGluICpub3RlIGZtYy10cml2aWFsOjouCisKK2ByZXByb2dyYW0nCisgICAgIFRoZSBjYXJyaWVyIGVudW1lcmF0ZXMgRk1DIGRldmljZXMgYnkgbG9hZGluZyBhIHN0YW5kYXJkIChvcgorICAgICBnb2xkZW4pIEZQR0EgYmluYXJ5IHRoYXQgYWxsb3dzIEVFUFJPTSBhY2Nlc3MuIEVhY2ggZHJpdmVyLCB0aGVuLAorICAgICB3aWxsIG5lZWQgdG8gcmVwcm9ncmFtIHRoZSBGUEdBIGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4gIElmIHRoZQorICAgICBuYW1lIGFyZ3VtZW50IGlzIE5VTEwsIHRoZSBjYXJyaWVyIHNob3VsZCByZXByb2dyYW0gdGhlIGdvbGRlbgorICAgICBiaW5hcnkuIElmIHRoZSBnYXRld2FyZSBuYW1lIGhhcyBiZWVuIG92ZXJyaWRkZW4gdGhyb3VnaCBtb2R1bGUKKyAgICAgcGFyYW1ldGVycyAoaW4gYSBjYXJyaWVyLXNwZWNpZmljIHdheSkgdGhlIGZpbGUgbG9hZGVkIHdpbGwgbWF0Y2gKKyAgICAgdGhlIHBhcmFtZXRlcnMuIFBlci1kZXZpY2UgZ2F0ZXdhcmUgbmFtZXMgY2FuIGJlIHNwZWNpZmllZCB1c2luZworICAgICB0aGUgYGdhdGV3YXJlPScgcGFyYW1ldGVyLCBzZWUgKm5vdGUgTW9kdWxlIFBhcmFtZXRlcnM6Oi4gIE5vdGU6CisgICAgIENsaWVudHMgc2hvdWxkIGNhbGwgcmhlIG5ldyBoZWxwZXIsIGZtY19yZXByb2dyYW0sIHdoaWNoIGJvdGgKKyAgICAgY2FsbHMgdGhpcyBtZXRob2QgYW5kIHBhcnNlIHRoZSBTREIgdHJlZSBvZiB0aGUgRlBHQS4KKworYGlycV9yZXF1ZXN0JworYGlycV9hY2snCitgaXJxX2ZyZWUnCisgICAgIEludGVycnVwdCBtYW5hZ2VtZW50IGlzIGNhcnJpZXItc3BlY2lmaWMsIHNvIGl0IGlzIGFic3RyYWN0ZWQgYXMKKyAgICAgb3BlcmF0aW9ucy4gVGhlIGludGVycnVwdCBudW1iZXIgaXMgbGlzdGVkIGluIHRoZSBkZXZpY2UKKyAgICAgc3RydWN0dXJlLCBhbmQgZm9yIHRoZSBtZXp6YW5pbmUgZHJpdmVyIHRoZSBudW1iZXIgaXMgb25seQorICAgICBpbmZvcm1hdGl2ZS4gIFRoZSBoYW5kbGVyIHdpbGwgcmVjZWl2ZSB0aGUgZm1jIHBvaW50ZXIgYXMgZGV2X2lkOworICAgICB0aGUgZmxhZ3MgYXJndW1lbnQgaXMgcGFzc2VkIHRvIHRoZSBMaW51eCByZXF1ZXN0X2lycSBmdW5jdGlvbiwKKyAgICAgYnV0IGZtYy1zcGVjaWZpYyBmbGFncyBtYXkgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4gWW91J2xsIG1vc3QKKyAgICAgbGlrZWx5IHdhbnQgdG8gcGFzcyB0aGUgYElSUUZfU0hBUkVEJyBmbGFnLgorCitgZ3Bpb19jb25maWcnCisgICAgIFRoZSBtZXRob2QgYWxsb3dzIHRvIGNvbmZpZ3VyZSBhIEdQSU8gcGluIGluIHRoZSBjYXJyaWVyLCBhbmQgcmVhZAorICAgICBpdHMgY3VycmVudCB2YWx1ZSBpZiBpdCBpcyBjb25maWd1cmVkIGFzIGlucHV0LiBTZWUgKm5vdGUgVGhlIEdQSU8KKyAgICAgQWJzdHJhY3Rpb246OiBmb3IgZGV0YWlscy4KKworYHJlYWRfZWUnCitgd3JpdGVfZWUnCisgICAgIFJlYWQgb3Igd3JpdGUgdGhlIEVFUFJPTS4gVGhlIGZ1bmN0aW9ucyBhcmUgZXhwZWN0ZWQgdG8gYmUgb25seQorICAgICBjYWxsZWQgYmVmb3JlIHJlcHJvZ3JhbW1pbmcgYW5kIHRoZSBjYXJyaWVyIHNob3VsZCByZWZ1c2UgdGhlbQorICAgICB3aXRoIGBFTk9ERVYnIGFmdGVyIHJlcHJvZ3JhbW1pbmcuICBUaGUgb2Zmc2V0IGlzIGV4cGVjdGVkIHRvIGJlCisgICAgIHdpdGhpbiA4a0IgKHRoZSBjdXJyZW50IHNpemUpLCBidXQgYWRkcmVzc2VzIHVwIHRvIDFNQiBhcmUKKyAgICAgcmVzZXJ2ZWQgdG8gZml0IGJpZ2dlciBJMkMgZGV2aWNlcyBpbiB0aGUgZnV0dXJlLiBDYXJyaWVycyBtYXkKKyAgICAgb2ZmZXIgYWNjZXNzIHRvIG90aGVyIGludGVybmFsIGZsYXNoIG1lbW9yaWVzIHVzaW5nIHRoZXNlIHNhbWUKKyAgICAgbWV0aG9kczogZm9yIGV4YW1wbGUgdGhlIFNQRUMgZHJpdmVyIG1heSBkZWZpbmUgdGhhdCBpdHMgY2FycmllcgorICAgICBJMkMgbWVtb3J5IGlzIHNlZW4gYXQgb2Zmc2V0IDFNIGFuZCB0aGUgaW50ZXJuYWwgU1BJIGZsYXNoIGlzIHNlZW4KKyAgICAgYXQgb2Zmc2V0IDE2TS4gIFRoaXMgbXVsdGlwbGV4aW5nIG9mIHNldmVyYWwgZmxhc2ggbWVtb3JpZXMgaW4gdGhlCisgICAgIHNhbWUgYWRkcmVzcyBzcGFjZSBpcyBjYXJyaWVyLXNwZWNpZmljIGFuZCBzaG91bGQgb25seSBiZSB1c2VkCisgICAgIGJ5IGEgZHJpdmVyIHRoYXQgaGFzIHZlcmlmaWVkIHRoZSBgY2Fycmllcl9uYW1lJyBmaWVsZC4KKworCisKK1RoZSBHUElPIEFic3RyYWN0aW9uCis9PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0IGZvciBHUElPIHBpbnMgaW4gdGhlIGZtYy1idXMgZW52aXJvbm1lbnQgaXMgbm90IHZlcnkKK3N0cmFpZ2h0Zm9yd2FyZCBhbmQgZGVzZXJ2ZXMgc3BlY2lhbCBkaXNjdXNzaW9uLgorCitXaGlsZSB0aGUgZ2VuZXJhbCBpZGVhIG9mIGEgY2Fycmllci1pbmRlcGVuZGVudCBkcml2ZXIgc2VlbXMgdG8gZmx5LAorY29uZmlndXJhdGlvbiBvZiBzcGVjaWZpYyBzaWduYWxzIHdpdGhpbiB0aGUgY2FycmllciBuZWVkcyBhdCBsZWFzdAorc29tZSBrbm93bGVkZ2Ugb2YgdGhlIGNhcnJpZXIgaXRzZWxmLiAgRm9yIHRoaXMgcmVhc29uLCB0aGUgc3BlY2lmaWMKK2RyaXZlciBjYW4gcmVxdWVzdCB0byBjb25maWd1cmUgY2Fycmllci1zcGVjaWZpYyBHUElPIHBpbnMsIG51bWJlcmVkCitmcm9tIDAgdG8gYXQgbW9zdCA0MDk1LiAgQ29uZmlndXJhdGlvbiBpcyBwZXJmb3JtZWQgYnkgcGFzc2luZyBhCitwb2ludGVyIHRvIGFuIGFycmF5IG9mIHN0cnVjdCBmbWNfZ3BpbyBpdGVtcywgYXMgd2VsbCBhcyB0aGUgbGVuZ3RoIG9mCit0aGUgYXJyYXkuIFRoaXMgaXMgdGhlIGRhdGEgc3RydWN0dXJlOgorCisgICAgICAgIHN0cnVjdCBmbWNfZ3BpbyB7CisgICAgICAgICAgICAgICAgY2hhciAqY2Fycmllcl9uYW1lOworICAgICAgICAgICAgICAgIGludCBncGlvOworICAgICAgICAgICAgICAgIGludCBfZ3BpbzsgICAgICAvKiBpbnRlcm5hbCB1c2UgYnkgdGhlIGNhcnJpZXIgKi8KKyAgICAgICAgICAgICAgICBpbnQgbW9kZTsgICAgICAgLyogR1BJT0ZfRElSX09VVCBldGMsIGZyb20gPGxpbnV4L2dwaW8uaD4gKi8KKyAgICAgICAgICAgICAgICBpbnQgaXJxbW9kZTsgICAgLyogSVJRRl9UUklHR0VSX0xPVyBhbmQgc28gb24gKi8KKyAgICAgICAgfTsKKworQnkgc3BlY2lmeWluZyBhIGNhcnJpZXJfbmFtZSBmb3IgZWFjaCBwaW4sIHRoZSBkcml2ZXIgbWF5IGFjY2VzcworZGlmZmVyZW50IHBpbnMgaW4gZGlmZmVyZW50IGNhcnJpZXJzLiAgVGhlIGdwaW9fY29uZmlnIG1ldGhvZCBpcworZXhwZWN0ZWQgdG8gcmV0dXJuIHRoZSBudW1iZXIgb2YgcGlucyBzdWNjZXNzZnVsbHkgY29uZmlndXJlZCwgaWdub3JpbmcKK3JlcXVlc3RzIGZvciBvdGhlciBjYXJyaWVycy4gSG93ZXZlciwgaWYgbm8gcGluIGlzIGNvbmZpZ3VyZWQgKGJlY2F1c2UKK25vIHN0cnVjdHVyZSBhdCBhbGwgcmVmZXJzIHRvIHRoZSBjdXJyZW50IGNhcnJpZXJfbmFtZSksIHRoZSBvcGVyYXRpb24KK3JldHVybnMgYW4gZXJyb3Igc28gdGhlIGNhbGxlciB3aWxsIGtub3cgdGhhdCBpdCBpcyBydW5uaW5nIHVuZGVyIGEKK3lldC11bnN1cHBvcnRlZCBjYXJyaWVyLgorCitTbywgZm9yIGV4YW1wbGUsIGEgZHJpdmVyIHRoYXQgaGFzIGJlZW4gZGV2ZWxvcGVkIGFuZCB0ZXN0ZWQgb24gYm90aAordGhlIFNQRUMgYW5kIHRoZSBTVkVDIG1heSByZXF1ZXN0IGNvbmZpZ3VyYXRpb24gb2YgdHdvIGRpZmZlcmVudCBHUElPCitwaW5zLCBhbmQgZXhwZWN0IG9uZSBzdWNoIGNvbmZpZ3VyYXRpb24gdG8gc3VjY2VlZCAtIGlmIG5vbmUgc3VjY2VlZHMKK2l0IG1vc3QgbGlrZWx5IG1lYW5zIHRoYXQgdGhlIGN1cnJlbnQgY2FycmllciBpcyBhIHN0aWxsLXVua25vd24gb25lLgorCitJZiwgaG93ZXZlciwgeW91ciBHUElPIHBpbiBoYXMgYSBzcGVjaWZpYyBrbm93biByb2xlLCB5b3UgY2FuIHBhc3MgYQorc3BlY2lhbCBudW1iZXIgaW4gdGhlIGdwaW8gZmllbGQsIHVzaW5nIG9uZSBvZiB0aGUgZm9sbG93aW5nIG1hY3JvczoKKworICAgICAgICAjZGVmaW5lIEZNQ19HUElPX1JBVyh4KSAgICAgICAgICh4KSAgICAgICAgICAgICAvKiA0MDk2IG9mIHRoZW0gKi8KKyAgICAgICAgI2RlZmluZSBGTUNfR1BJT19JUlEoeCkgICAgICAgICAoKHgpICsgMHgxMDAwKSAgLyogIDI1NiBvZiB0aGVtICovCisgICAgICAgICNkZWZpbmUgRk1DX0dQSU9fTEVEKHgpICAgICAgICAgKCh4KSArIDB4MTEwMCkgIC8qICAyNTYgb2YgdGhlbSAqLworICAgICAgICAjZGVmaW5lIEZNQ19HUElPX0tFWSh4KSAgICAgICAgICgoeCkgKyAweDEyMDApICAvKiAgMjU2IG9mIHRoZW0gKi8KKyAgICAgICAgI2RlZmluZSBGTUNfR1BJT19UUCh4KSAgICAgICAgICAoKHgpICsgMHgxMzAwKSAgLyogIDI1NiBvZiB0aGVtICovCisgICAgICAgICNkZWZpbmUgRk1DX0dQSU9fVVNFUih4KSAgICAgICAgKCh4KSArIDB4MTQwMCkgIC8qICAyNTYgb2YgdGhlbSAqLworCitVc2Ugb2YgdmlydHVhbCBHUElPIG51bWJlcnMgKGFueXRoaW5nIGJ1dCBGTUNfR1BJT19SQVcpIGlzIGFsbG93ZWQKK3Byb3ZpZGVkIHRoZSBjYXJyaWVyX25hbWUgZmllbGQgaW4gdGhlIGRhdGEgc3RydWN0dXJlIGlzIGxlZnQKK3Vuc3BlY2lmaWVkIChOVUxMKS4gRWFjaCBjYXJyaWVyIGlzIHJlc3BvbnNpYmxlIGZvciBwcm92aWRpbmcgYSBtYXBwaW5nCitiZXR3ZWVuIHZpcnR1YWwgYW5kIHBoeXNpY2FsIEdQSU8gbnVtYmVycy4gVGhlIGNhcnJpZXIgbWF5IHRoZW4gdXNlIHRoZQorX2dwaW8gZmllbGQgdG8gY2FjaGUgdGhlIHJlc3VsdCBvZiB0aGlzIG1hcHBpbmcuCisKK0FsbCBjYXJyaWVycyBtdXN0IG1hcCB0aGVpciBJL08gbGluZXMgdG8gdGhlIHNldHMgYWJvdmUgc3RhcnRpbmcgZnJvbQoremVyby4gIFRoZSBTUEVDLCBmb3IgZXhhbXBsZSwgbWFwcyBpbnRlcnJ1cHQgcGlucyAwIGFuZCAxLCBhbmQgdGVzdAorcG9pbnRzIDAgdGhyb3VnaCAzIChldmVuIGlmIHRoZSB0ZXN0IHBvaW50cyBvbiB0aGUgUENCIGFyZSBjYWxsZWQKKzUsNiw3LDgpLgorCitJZiwgZm9yIGV4YW1wbGUsIGEgZHJpdmVyIHJlcXVpcmVzIGEgZnJlZSBMRUQgYW5kIGEgdGVzdCBwb2ludCAoZm9yIGEKK3Njb3BlIHByb2JlIHRvIGJlIHBsdWdnZWQgYXQgc29tZSBwb2ludCBkdXJpbmcgZGV2ZWxvcG1lbnQpIGl0IG1heSBhc2sKK2ZvciBGTUNfR1BJT19MRUQoMCkgYW5kIEZNQ19HUElPX1RQKDApLiBFYWNoIGNhcnJpZXIgd2lsbCBwcm92aWRlCitzdWl0YWJsZSBHUElPIHBpbnMuICBDbGVhcmx5LCB0aGUgcGVyc29uIHJ1bm5pbmcgdGhlIGRyaXZlcnMgd2lsbCBrbm93Cit0aGUgb3JkZXIgdXNlZCBieSB0aGUgc3BlY2lmaWMgY2FycmllciBkcml2ZXIgaW4gYXNzaWduaW5nIGxlZHMgYW5kCit0ZXN0cG9pbnRzLCBzbyB0byBtYWtlIGEgY2Fycmllci1kZXBlbmRlbnQgdXNlIG9mIHRoZSBkaWFnbm9zdGljIHRvb2xzLgorCitJbiB0aGVvcnksIHNvbWUgZm9ybSBvZiBhdXRvZGV0ZWN0aW9uIHNob3VsZCBiZSBwb3NzaWJsZTogYSBkcml2ZXIgbGlrZQordGhlIHdyLW5pYyAod2hpY2ggdXNlcyBJUlEoMSkgb24gdGhlIFNQRUMgY2FyZCkgc2hvdWxkIGNvbmZpZ3VyZQorSVJRKDApLCBtYWtlIGEgdGVzdCB3aXRoIHNvZnR3YXJlLWdlbmVyYXRlZCBpbnRlcnJ1cHRzIGFuZCBjb25maWd1cmUKK0lSUSgxKSBpZiB0aGUgdGVzdCBmYWlscy4gVGhpcyBwcm9iaW5nIHN0ZXAgc2hvdWxkIGJlIHVzZWQgYmVjYXVzZSBldmVuCitpZiB0aGUgd3ItbmljIGdhdGV3YXJlIGlzIGtub3duIHRvIHVzZSBJUlExIG9uIHRoZSBTUEVDLCB0aGUgZHJpdmVyCitzaG91bGQgYmUgY2Fycmllci1pbmRlcGVuZGVudCBhbmQgdGh1cyB1c2UgSVJRKDApIGFzIGEgZmlyc3QgYmV0IC0KK2FjdHVhbGx5LCB0aGUga25vd2xlZGdlIHRoYXQgSVJRMCBtYXkgZmFpbCBpcyBjYXJyaWVyLWRlcGVuZGVudAoraW5mb3JtYXRpb24sIGJ1dCB1c2luZyBpdCBkb2Vzbid0IG1ha2UgdGhlIGRyaXZlciB1bnN1aXRhYmxlIGZvciBvdGhlcgorY2FycmllcnMuCisKK1RoZSByZXR1cm4gdmFsdWUgb2YgZ3Bpb19jb25maWcgaXMgZGVmaW5lZCBhcyBmb2xsb3dzOgorCisgICAqIElmIG5vIHBpbiBpbiB0aGUgYXJyYXkgY2FuIGJlIHVzZWQgYnkgdGhlIGNhcnJpZXIsIGAtRU5PREVWJy4KKworICAgKiBJZiBhdCBsZWFzdCBvbmUgdmlydHVhbCBHUElPIG51bWJlciBjYW5ub3QgYmUgbWFwcGVkLCBgLUVOT0VOVCcuCisKKyAgICogT24gc3VjY2VzcywgMCBvciBwb3NpdGl2ZS4gVGhlIHZhbHVlIHJldHVybmVkIGlzIHRoZSBudW1iZXIgb2YKKyAgICAgaGlnaCBpbnB1dCBiaXRzIChpZiBubyBpbnB1dCBpcyBjb25maWd1cmVkLCB0aGUgdmFsdWUgZm9yIHN1Y2Nlc3MKKyAgICAgaXMgMCkuCisKK1doaWxlIEkgYWRtaXQgdGhlIHByb2NlZHVyZSBpcyBub3QgY29tcGxldGVseSBzdHJhaWdodGZvcndhcmQsIGl0CithbGxvd3MgY29uZmlndXJhdGlvbiwgaW5wdXQgYW5kIG91dHB1dCB3aXRoIGEgc2luZ2xlIGNhcnJpZXIgb3BlcmF0aW9uLgorR2l2ZW4gdGhlIHR5cGljYWwgdXNlIGNhc2Ugb2YgRk1DIGRldmljZXMsIEdQSU8gb3BlcmF0aW9ucyBhcmUgbm90CitleHBlY3RlZCB0byBldmVyIGJ5IGluIGhvdCBwYXRocywgYW5kIEdQSU8gYWNjZXNzIHNvIGZhcmUgaGFzIG9ubHkgYmVlbgordXNlZCB0byBjb25maWd1cmUgdGhlIGludGVycnVwdCBwaW4sIG1vZGUgYW5kIHBvbGFyaXR5LiBFc3BlY2lhbGx5CityZWFkaW5nIGlucHV0cyBpcyBub3QgZXhwZWN0ZWQgdG8gYmUgY29tbW9uLiBJZiB5b3VyIGRldmljZSBoYXMgR1BJTworY2FwYWJpbGl0aWVzIGluIHRoZSBob3QgcGF0aCwgeW91IHNob3VsZCBjb25zaWRlciB1c2luZyB0aGUga2VybmVsJ3MKK0dQSU8gbWVjaGFuaXNtcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZm1jL2ZtYy1jaGFyZGV2LnR4dCBiL0RvY3VtZW50YXRpb24vZm1jL2ZtYy1jaGFyZGV2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWNjYjI3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mbWMvZm1jLWNoYXJkZXYudHh0CkBAIC0wLDAgKzEsNjQgQEAKK2ZtYy1jaGFyZGV2Cis9PT09PT09PT09PQorCitUaGlzIGlzIGEgc2ltcGxlIGdlbmVyaWMgZHJpdmVyLCB0aGF0IGFsbG93cyB1c2VyIGFjY2VzcyBieSBtZWFucyBvZiBhCitjaGFyYWN0ZXIgZGV2aWNlIChhY3R1YWxseSwgb25lIGZvciBlYWNoIG1lenphbmluZSBpdCB0YWtlcyBob2xkIG9mKS4KKworVGhlIGNoYXIgZGV2aWNlIGlzIGNyZWF0ZWQgYXMgYSBtaXNjIGRldmljZS4gSXRzIG5hbWUgaW4gL2RldiAoYXMKK2NyZWF0ZWQgYnkgdWRldikgaXMgdGhlIHNhbWUgbmFtZSBhcyB0aGUgdW5kZXJseWluZyBGTUMgZGV2aWNlLiBUaHVzLAordGhlIG5hbWUgY2FuIGJlIGEgc2lsbHkgZm1jLTAwMDAgbG9vay1hbGlrZSBpZiB0aGUgZGV2aWNlIGhhcyBubworaWRlbnRpZmllcnMgbm9yIGJ1c19pZCwgYSBtb3JlIHNwZWNpZmljIGZtYy0wNDAwIGlmIHRoZSBkZXZpY2UgaGFzIGEKK2J1cy1zcGVjaWZpYyBhZGRyZXNzIGJ1dCBubyBhc3NvY2lhdGVkIG5hbWUsIG9yIHNvbWV0aGluZyBsaWtlCitmZGVsYXktMDQwMCBpZiB0aGUgRk1DIGNvcmUgY2FuIHJlbHkgb24gYm90aCBhIG1lenphbmluZSBuYW1lIGFuZCBhIGJ1cworYWRkcmVzcy4KKworQ3VycmVudGx5IHRoZSBkcml2ZXIgb25seSBzdXBwb3J0cyByZWFkIGFuZCB3cml0ZTogeW91IGNhbiBsc2VlayB0byB0aGUKK2Rlc2lyZWQgYWRkcmVzcyBhbmQgcmVhZCBvciB3cml0ZSBhIHJlZ2lzdGVyLgorCitUaGUgZHJpdmVyIGFzc3VtZXMgYWxsIHJlZ2lzdGVycyBhcmUgMzItYml0IGluIHNpemUsIGFuZCBvbmx5IGFjY2VwdHMgYQorc2luZ2xlIHJlYWQgb3Igd3JpdGUgcGVyIHN5c3RlbSBjYWxsLiBIb3dldmVyLCBhcyBhIHJlc3VsdCBvZiBVbml4IHJlYWQKK2FuZCB3cml0ZSBzZW1hbnRpY3MsIHVzZXJzIGNhbiBzaW1wbHkgZnJlYWQgb3IgZndyaXRlIGJpZ2dlciBhcmVhcyBpbgorb3JkZXIgdG8gZHVtcCBvciBzdG9yZSBiaWdnZXIgbWVtb3J5IGFyZWFzLgorCitUaGVyZSBpcyBjdXJyZW50bHkgbm8gc3VwcG9ydCBmb3IgbW1hcCwgdXNlci1zcGFjZSBpbnRlcnJ1cHQgbWFuYWdlbWVudAorYW5kIERNQSBidWZmZXJzLiBUaGV5IG1heSBiZSBhZGRlZCBpbiBsYXRlciB2ZXJzaW9ucywgaWYgdGhlIG5lZWQKK2FyaXNlcy4KKworVGhlIGV4YW1wbGUgYmVsb3cgc2hvd3MgcmF3IGFjY2VzcyB0byBhIFNQRUMgY2FyZCBwcm9ncmFtbWVkIHdpdGggaXRzCitnb2xkZW4gRlBHQSBmaWxlLCB0aGF0IGZlYXR1cmVzIGFuIFNEQiBzdHJ1Y3R1cmUgYXQgb2Zmc2V0IDI1NiAtIGkuZS4KKzY0IHdvcmRzLiAgVGhlIG1lenphbmluZSdzIEVFUFJPTSBpbiB0aGlzIGNhc2UgaXMgbm90IHByb2dyYW1tZWQsIHNvIHRoZQorZGVmYXVsdCBuYW1lIGlzIGZtYy08YnVzPjxkZXZmbj4sIGFuZCB0aGVyZSBhcmUgdHdvIGNhcmRzIGluIHRoZSBzeXN0ZW06CisKKyAgc3B1c2Eucm9vdCMgaW5zbW9kIGZtYy1jaGFyZGV2LmtvCisgIFsgMTA3My4zMzkzMzJdIHNwZWMgMDAwMDowMjowMC4wOiBEcml2ZXIgaGFzIG5vIElEOiBtYXRjaGVzIGFsbAorICBbIDEwNzMuMzQ1MDUxXSBzcGVjIDAwMDA6MDI6MDAuMDogQ3JlYXRlZCBtaXNjIGRldmljZSAiZm1jLTAyMDAiCisgIFsgMTA3My4zNTA4MjFdIHNwZWMgMDAwMDowNDowMC4wOiBEcml2ZXIgaGFzIG5vIElEOiBtYXRjaGVzIGFsbAorICBbIDEwNzMuMzU2NTI1XSBzcGVjIDAwMDA6MDQ6MDAuMDogQ3JlYXRlZCBtaXNjIGRldmljZSAiZm1jLTA0MDAiCisgIHNwdXNhLnJvb3QjIGxzIC1sIC9kZXYvZm1jKgorICBjcnctLS0tLS0tIDEgcm9vdCByb290IDEwLCA1OCBOb3YgMjAgMTk6MjMgL2Rldi9mbWMtMDIwMAorICBjcnctLS0tLS0tIDEgcm9vdCByb290IDEwLCA1NyBOb3YgMjAgMTk6MjMgL2Rldi9mbWMtMDQwMAorICBzcHVzYS5yb290IyBkZCBicz00IHNraXA9NjQgY291bnQ9MSBpZj0vZGV2L2ZtYy0wMjAwIDI+IC9kZXYvbnVsbCB8IG9kIC10IHgxegorICAwMDAwMDAwIDJkIDQyIDQ0IDUzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+LUJEUzwKKyAgMDAwMDAwNAorCitUaGUgc2ltcGxlIHByb2dyYW0gdG9vbHMvZm1jLW1lbSBpbiB0aGlzIHBhY2thZ2UgY2FuIGFjY2VzcyBhbiBGTUMgY2hhcgorZGV2aWNlIGFuZCByZWFkIG9yIHdyaXRlIGEgd29yZCBvciBhIHdob2xlIGFyZWEuICBBY3R1YWxseSwgdGhlIHByb2dyYW0KK2lzIG5vdCBzcGVjaWZpYyB0byBGTUMgYXQgYWxsLCBpdCBqdXN0IHVzZXMgbHNlZWssIHJlYWQgYW5kIHdyaXRlLgorCitJdHMgZmlyc3QgYXJndW1lbnQgaXMgdGhlIGRldmljZSBuYW1lLCB0aGUgc2Vjb25kIHRoZSBvZmZzZXQsIHRoZSB0aGlyZAorKGlmIGFueSkgdGhlIHZhbHVlIHRvIHdyaXRlIGFuZCB0aGUgb3B0aW9uYWwgbGFzdCBhcmd1bWVudCB0aGF0IG11c3QKK2JlZ2luIHdpdGggIisiIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCBvciB3cml0ZS4gIEluIGNhc2Ugb2YKK3JlcGVhdGVkIHJlYWRpbmcgZGF0YSBpcyB3cml0dGVuIHRvIHN0ZG91dDsgcmVwZWF0ZWQgd3JpdGVzIHJlYWQgZnJvbQorc3RkaW4gYW5kIHRoZSB2YWx1ZSBhcmd1bWVudCBpcyBpZ25vcmVkLgorCitUaGUgZm9sbG93aW5nIGV4YW1wbGVzIHNob3cgcmVhZGluZyB0aGUgU0RCIG1hZ2ljIG51bWJlciBhbmQgdGhlIGZpcnN0CitTREIgcmVjb3JkIGZyb20gYSBTUEVDIGRldmljZSBwcm9ncmFtbWVkIHdpdGggaXRzIGdvbGRlbiBpbWFnZToKKworICAgICBzcHVzYS5yb290IyAuL2ZtYy1tZW0gL2Rldi9mbWMtMDIwMCAxMDAKKyAgICAgNTM0NDQyMmQKKyAgICAgc3B1c2Eucm9vdCMgLi9mbWMtbWVtIC9kZXYvZm1jLTAyMDAgMTAwICs0MCB8IG9kIC1BeCAtdCB4MXoKKyAgICAgMDAwMDAwIDJkIDQyIDQ0IDUzIDAwIDAxIDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICA+LUJEUy4uLi4uLi4uLi4uLjwKKyAgICAgMDAwMDEwIDAwIDAwIDAwIDAwIGZmIDAxIDAwIDAwIDAwIDAwIDAwIDAwIDUxIDA2IDAwIDAwICA+Li4uLi4uLi4uLi4uUS4uLjwKKyAgICAgMDAwMDIwIGM5IDQyIGE1IGU2IDAyIDAwIDAwIDAwIDExIDA1IDEyIDIwIDJkIDM0IDQyIDU3ICA+LkIuLi4uLi4uLi4gLTRCVzwKKyAgICAgMDAwMDMwIDczIDZmIDcyIDQzIDcyIDYxIDYyIDczIDQ5IDUzIDQ3IDJkIDAwIDIwIDIwIDIwICA+c29yQ3JhYnNJU0ctLiAgIDwKKyAgICAgMDAwMDQwCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZtYy9mbWMtZmFrZWRldi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZtYy9mbWMtZmFrZWRldi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg1Yjc0YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZm1jL2ZtYy1mYWtlZGV2LnR4dApAQCAtMCwwICsxLDM2IEBACitmbWMtZmFrZWRldgorPT09PT09PT09PT0KKworVGhpcyBwYWNrYWdlIGluY2x1ZGVzIGEgc29mdHdhcmUtb25seSBkZXZpY2UsIGNhbGxlZCBmbWMtZmFrZWRldiwgd2hpY2gKK2lzIGFibGUgdG8gcmVnaXN0ZXIgdXAgdG8gNCBtZXp6YW5pbmVzIChieSBkZWZhdWx0IGl0IHJlZ2lzdGVycyBvbmUpLgorVW5saWtlIHRoZSBTUEVDIGRyaXZlciwgd2hpY2ggY3JlYXRlcyBhbiBGTUMgZGV2aWNlIGZvciBlYWNoIFBDSSBjYXJkcworaXQgbWFuYWdlcywgdGhpcyBtb2R1bGUgY3JlYXRlcyBhIHNpbmdsZSBpbnN0YW5jZSBvZiBpdHMgc2V0IG9mCittZXp6YW5pbmVzLgorCitJdCBpcyBtZWFudCBhcyB0aGUgc2ltcGxlc3QgcG9zc2libGUgZXhhbXBsZSBvZiBob3cgYSBkcml2ZXIgc2hvdWxkIGJlCit3cml0dGVuLCBhbmQgaXQgaW5jbHVkZXMgYSBmYWtlIEVFUFJPTSBpbWFnZSAoYnVpbHQgdXNpbmcgdGhlIHRvb2xzCitkZXNjcmliZWQgaW4gKm5vdGUgRk1DIElkZW50aWZpY2F0aW9uOjopLCwgd2hpY2ggYnkgZGVmYXVsdCBpcworcmVwbGljYXRlZCBmb3IgZWFjaCBmYWtlIG1lenphbmluZS4KKworWW91IGNhbiBhbHNvIHVzZSB0aGlzIGRldmljZSB0byB2ZXJpZnkgdGhlIG1hdGNoIGFsZ29yaXRobXMsIGJ5IGFza2luZworaXQgdG8gdGVzdCB5b3VyIG93biBFRVBST00gaW1hZ2UuIFlvdSBjYW4gcHJvdmlkZSB0aGUgaW1hZ2UgYnkgbWVhbnMgb2YKK3RoZSBlZXByb209IG1vZHVsZSBwYXJhbWV0ZXI6IHRoZSBuZXcgRUVQUk9NIGltYWdlIGlzIGxvYWRlZCwgYXMgdXN1YWwsCitieSBtZWFucyBvZiB0aGUgZmlybXdhcmUgbG9hZGVyLiAgVGhpcyBleGFtcGxlIHNob3dzIHRoZSBkZWZhdWx0cyBhbmQgYQorY3VzdG9tIEVFUFJPTSBpbWFnZToKKworICAgICBzcHVzYS5yb290IyBpbnNtb2QgZm1jLWZha2VkZXYua28KKyAgICAgWyAgIDk5Ljk3MTI0N10gIGZha2UtZm1jLWNhcnJpZXI6IG1lenphbmluZSAwCisgICAgIFsgICA5OS45NzUzOTNdICAgICAgIE1hbnVmYWN0dXJlcjogZmFrZS12ZW5kb3IKKyAgICAgWyAgIDk5Ljk3OTYyNF0gICAgICAgUHJvZHVjdCBuYW1lOiBmYWtlLWRlc2lnbi1mb3ItdGVzdGluZworICAgICBzcHVzYS5yb290IyBybW1vZCBmbWMtZmFrZWRldgorICAgICBzcHVzYS5yb290IyBpbnNtb2QgZm1jLWZha2VkZXYua28gZWVwcm9tPWZkZWxheS1lZXByb20uYmluCisgICAgIFsgIDEyMS40NDc0NjRdICBmYWtlLWZtYy1jYXJyaWVyOiBNZXp6YW5pbmUgMDogZWVwcm9tICJmZGVsYXktZWVwcm9tLmJpbiIKKyAgICAgWyAgMTIxLjQ2MjcyNV0gIGZha2UtZm1jLWNhcnJpZXI6IG1lenphbmluZSAwCisgICAgIFsgIDEyMS40NjY4NThdICAgICAgIE1hbnVmYWN0dXJlcjogQ0VSTgorICAgICBbICAxMjEuNDcwNDc3XSAgICAgICBQcm9kdWN0IG5hbWU6IEZtY0RlbGF5MW5zNGNoYQorICAgICBzcHVzYS5yb290IyBybW1vZCBmbWMtZmFrZWRldgorCitBZnRlciBsb2FkaW5nIHRoZSBkZXZpY2UsIHlvdSBjYW4gdXNlIHRoZSB3cml0ZV9lZSBtZXRob2QgZG8gbW9kaWZ5IGl0cworb3duIGludGVybmFsIGZha2UgRUVQUk9NOiB3aGVuZXZlciB0aGUgaW1hZ2UgaXMgb3ZlcndyaXR0ZW4gc3RhcnRpbmcgYXQKK29mZnNldCAwLCB0aGUgbW9kdWxlIHdpbGwgdW5yZWdpc3RlciBhbmQgcmVnaXN0ZXIgYWdhaW4gdGhlIEZNQyBkZXZpY2UuCitUaGlzIGlzIHNob3duIGluIGZtYy13cml0ZS1lZXByb20udHh0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZtYy9mbWMtdHJpdmlhbC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZtYy9mbWMtdHJpdmlhbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE5MTBiYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZm1jL2ZtYy10cml2aWFsLnR4dApAQCAtMCwwICsxLDE3IEBACitmbWMtdHJpdmlhbAorPT09PT09PT09PT0KKworVGhlIHNpbXBsZSBtb2R1bGUgZm1jLXRyaXZpYWwgaXMganVzdCBhIHNpbXBsZSBjbGllbnQgdGhhdCByZWdpc3RlcnMgYW4KK2ludGVycnVwdCBoYW5kbGVyLiBJIHVzZWQgaXQgdG8gdmVyaWZ5IHRoZSBiYXNpYyBtZWNoYW5pc20gb2YgdGhlIEZNQworYnVzIGFuZCBob3cgaW50ZXJydXB0cyB3b3JrZWQuCisKK1RoZSBtb2R1bGUgaW1wbGVtZW50cyB0aGUgZ2VuZXJpYyBGTUMgcGFyYW1ldGVycywgc28gaXQgY2FuIHByb2dyYW0gYQorZGlmZmVyZW50IGdhdGV3YXJlIGZpbGUgaW4gZWFjaCBjYXJkLiBUaGUgd2hvbGUgbGlzdCBvZiBwYXJhbWV0ZXJzIGl0CithY2NlcHRzIGFyZToKKworYGJ1c2lkPScKK2BnYXRld2FyZT0nCisgICAgIEdlbmVyaWMgcGFyYW1ldGVycy4gU2VlIG1lenphbmluZS50eHQKKworCitUaGlzIGRyaXZlciBpcyB3b3J0aCByZWFkaW5nLCBpbiBteSBvcGluaW9uLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mbWMvZm1jLXdyaXRlLWVlcHJvbS50eHQgYi9Eb2N1bWVudGF0aW9uL2ZtYy9mbWMtd3JpdGUtZWVwcm9tLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMGE5NzEyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mbWMvZm1jLXdyaXRlLWVlcHJvbS50eHQKQEAgLTAsMCArMSw5OCBAQAorZm1jLXdyaXRlLWVlcHJvbQorPT09PT09PT09PT09PT09PQorCitUaGlzIG1vZHVsZSBpcyBkZXNpZ25lZCB0byBsb2FkIGEgYmluYXJ5IGZpbGUgZnJvbSAvbGliL2Zpcm13YXJlIGFuZCB0bword3JpdGUgaXQgdG8gdGhlIGludGVybmFsIEVFUFJPTSBvZiB0aGUgbWV6emFuaW5lIGNhcmQuIFRoaXMgZHJpdmVyIHVzZXMKK3RoZSBgYnVzaWQnIGdlbmVyaWMgcGFyYW1ldGVyLgorCitPdmVyd3JpdGluZyB0aGUgRUVQUk9NIGlzIG5vdCBzb21ldGhpbmcgeW91IHNob3VsZCBkbyBkYWlseSwgYW5kIGl0IGlzCitleHBlY3RlZCB0byBvbmx5IGhhcHBlbiBkdXJpbmcgbWFudWZhY3R1cmluZy4gRm9yIHRoaXMgcmVhc29uLCB0aGUKK21vZHVsZSBtYWtlcyBpdCB1bmxpa2VseSBmb3IgdGhlIHJhbmRvbSB1c2VyIHRvIGNoYW5nZSBhIHdvcmtpbmcgRUVQUk9NLgorCitIb3dldmVyLCBzaW5jZSB0aGUgRUVQUk9NIG1heSBpbmNsdWRlIGFwcGxpY2F0aW9uLXNwZWNpZmljIGluZm9ybWF0aW9uCitvdGhlciB0aGFuIHRoZSBpZGVudGlmaWNhdGlvbiwgbGF0ZXIgdmVyc2lvbnMgb2YgdGhpcyBwYWNrYWdlcyBhZGRlZAord3JpdGUtc3VwcG9ydCB0aHJvdWdoIHN5c2ZzLiBTZWUgKm5vdGUgQWNjZXNzaW5nIHRoZSBFRVBST006Oi4KKworVG8gYXZvaWQgZGFtYWdpbmcgdGhlIEVFUFJPTSBjb250ZW50LCB0aGUgbW9kdWxlIHRha2VzIHRoZSBmb2xsb3dpbmcKK21lYXN1cmVzOgorCisgICAqIEl0IGFjY2VwdHMgYSBgZmlsZT0nIGFyZ3VtZW50ICh3aXRoaW4gL2xpYi9maXJtd2FyZSkgYW5kIGlmIG5vCisgICAgIHN1Y2ggYXJndW1lbnQgaXMgcmVjZWl2ZWQsIGl0IGRvZXNuJ3Qgd3JpdGUgYW55dGhpbmcgdG8gRUVQUk9NCisgICAgIChpLmUuIHRoZXJlIGlzIG5vIGRlZmF1bHQgZmlsZSBuYW1lKS4KKworICAgKiBJZiB0aGUgZmlsZSBuYW1lIGVuZHMgd2l0aCBgLmJpbicgaXQgaXMgd3JpdHRlbiB2ZXJiYXRpbSBzdGFydGluZworICAgICBhdCBvZmZzZXQgMC4KKworICAgKiBJZiB0aGUgZmlsZSBuYW1lIGVuZHMgd2l0aCBgLnRsdicgaXQgaXMgaW50ZXJwcmV0ZWQgYXMKKyAgICAgdHlwZS1sZW5ndGgtdmFsdWUgKGkuZS4sIGl0IGFsbG93cyB3cml0ZXYoMiktbGlrZSBvcGVyYXRpb24pLgorCisgICAqIElmIHRoZSBmaWxlIG5hbWUgZG9lc24ndCBtYXRjaCBhbnkgb2YgdGhlIHBhdHRlcm5zIGFib3ZlLCBpdCBpcworICAgICBpZ25vcmVkIGFuZCBubyB3cml0ZSBpcyBwZXJmb3JtZWQuCisKKyAgICogT25seSBjYXJkcyBsaXN0ZWQgd2l0aCBgYnVzaWQ9JyBhcmUgd3JpdHRlbiB0by4gSWYgbm8gYnVzaWQgaXMKKyAgICAgc3BlY2lmaWVkLCBubyBwcm9ncmFtbWluZyBpcyBkb25lIChhbmQgdGhlIHByb2JlIGZ1bmN0aW9uIG9mIHRoZQorICAgICBkcml2ZXIgd2lsbCBmYWlsKS4KKworCitFYWNoIFRMViB0dXBsZSBpcyBmb3JtYXR0ZWQgaW4gdGhpcyB3YXk6IHRoZSBoZWFkZXIgaXMgNSBieXRlcywKK2ZvbGxvd2VkIGJ5IGRhdGEuIFRoZSBmaXJzdCBieXRlIGlzIGB3JyBmb3Igd3JpdGUsIHRoZSBuZXh0IHR3byBieXRlcworcmVwcmVzZW50IHRoZSBhZGRyZXNzLCBpbiBsaXR0bGUtZW5kaWFuIGJ5dGUgb3JkZXIsIGFuZCB0aGUgbmV4dCB0d28KK3JlcHJlc2VudCB0aGUgZGF0YSBsZW5ndGgsIGluIGxpdHRsZS1lbmRpYW4gb3JkZXIuIFRoZSBsZW5ndGggZG9lcyBub3QKK2luY2x1ZGUgdGhlIGhlYWRlciAoaXQgaXMgdGhlIGFjdHVhbCBudW1iZXIgb2YgYnl0ZXMgdG8gYmUgd3JpdHRlbikuCisKK1RoaXMgaXMgYSByZWFsIGV4YW1wbGU6IHRoYXQgd3JpdGVzIDUgYnl0ZXMgYXQgcG9zaXRpb24gMHgxMTA6CisKKyAgICAgICAgc3B1c2Eucm9vdCMgb2QgLXQgeDEgLUF4IC9saWIvZmlybXdhcmUvdHJ5LnRsdgorICAgICAgICAwMDAwMDAgNzcgMTAgMDEgMDUgMDAgMzAgMzEgMzIgMzMgMzQKKyAgICAgICAgMDAwMDBhCisgICAgICAgIHNwdXNhLnJvb3QjIGluc21vZCAvdG1wL2ZtYy13cml0ZS1lZXByb20ua28gYnVzaWQ9MHgwMjAwIGZpbGU9dHJ5LnRsdgorICAgICAgICBbMTk5ODMuMzkxNDk4XSBzcGVjIDAwMDA6MDM6MDAuMDogd3JpdGUgNSBieXRlcyBhdCAweDAxMTAKKyAgICAgICAgWzE5OTgzLjQxNDYxNV0gc3BlYyAwMDAwOjAzOjAwLjA6IHdyaXRlX2VlcHJvbTogc3VjY2VzcworCitQbGVhc2Ugbm90ZSB0aGF0IHlvdSdsbCBtb3N0IGxpa2VseSB3YW50IHRvIHVzZSBTREJGUyB0byBidWlsZCB5b3VyCitFRVBST00gaW1hZ2UsIGF0IGxlYXN0IGlmIHlvdXIgbWV6emFuaW5lcyBhcmUgYmVpbmcgdXNlZCBpbiB0aGUgV2hpdGUKK1JhYmJpdCBlbnZpcm9ubWVudC4gRm9yIHRoaXMgcmVhc29uIHRoZSBUTFYgZm9ybWF0IGlzIG5vdCBleHBlY3RlZCB0bworYmUgdXNlZCBtdWNoIGFuZCBpcyBub3QgZXhwZWN0ZWQgdG8gYmUgZGV2ZWxvcGVkIGZ1cnRoZXIuCisKK0lmIHlvdSB3YW50IHRvIHRyeSByZWZsYXNoaW5nIGZha2UgRUVQUk9NIGRldmljZXMsIHlvdSBjYW4gdXNlIHRoZQorZm1jLWZha2VkZXYua28gbW9kdWxlIChzZWUgKm5vdGUgZm1jLWZha2VkZXY6OikuICBXaGVuZXZlciB5b3UgY2hhbmdlCit0aGUgaW1hZ2Ugc3RhcnRpbmcgYXQgb2Zmc2V0IDAsIGl0IHdpbGwgZGVyZWdpc3RlciBhbmQgcmVnaXN0ZXIgYWdhaW4KK2FmdGVyIHR3byBzZWNvbmRzLiAgUGxlYXNlIG5vdGUsIGhvd2V2ZXIsIHRoYXQgaWYgZm1jLXdyaXRlLWVlcHJvbSBpcworc3RpbGwgbG9hZGVkLCB0aGUgc3lzdGVtIHdpbGwgYXNzb2NpYXRlIGl0IHRvIHRoZSBuZXcgZGV2aWNlLCB3aGljaAord2lsbCBiZSByZXByb2dyYW1tZWQgYW5kIHRodXMgd2lsbCBiZSB1bmxvYWRlZCBhZnRlciB0d28gc2Vjb25kcy4gIFRoZQorZm9sbG93aW5nIGV4YW1wbGUgcmVtb3ZlcyB0aGUgbW9kdWxlIGFmdGVyIGl0IHJlZmxhc2hlZCBmYWtlZGV2IHRoZQorZmlyc3QgdGltZS4KKworICAgICBzcHVzYS5yb290IyBpbnNtb2QgZm1jLWZha2VkZXYua28KKyAgICAgICAgWyAgIDcyLjk4NDczM10gIGZha2UtZm1jOiBNYW51ZmFjdHVyZXI6IGZha2UtdmVuZG9yCisgICAgICAgIFsgICA3Mi45ODk0MzRdICBmYWtlLWZtYzogUHJvZHVjdCBuYW1lOiBmYWtlLWRlc2lnbi1mb3ItdGVzdGluZworICAgICAgICBzcHVzYS5yb290IyBpbnNtb2QgZm1jLXdyaXRlLWVlcHJvbS5rbyBidXNpZD0wIGZpbGU9ZmRlbGF5LWVlcHJvbS5iaW47IFwKKyAgICAgICAgICAgIHJtbW9kIGZtYy13cml0ZS1lZXByb20KKyAgICAgICAgWyAgMTMwLjg3NDA5OF0gIGZha2UtZm1jOiBNYXRjaGluZyBhIGdlbmVyaWMgZHJpdmVyIChubyBJRCkKKyAgICAgICAgWyAgMTMwLjg4Nzg0NV0gIGZha2UtZm1jOiBwcm9ncmFtbWluZyA2MTU1IGJ5dGVzCisgICAgICAgIFsgIDEzMC44OTQ1NjddICBmYWtlLWZtYzogd3JpdGVfZWVwcm9tOiBzdWNjZXNzCisgICAgICAgIFsgIDEzMi44OTU3OTRdICBmYWtlLWZtYzogTWFudWZhY3R1cmVyOiBDRVJOCisgICAgICAgIFsgIDEzMi44OTk4NzJdICBmYWtlLWZtYzogUHJvZHVjdCBuYW1lOiBGbWNEZWxheTFuczRjaGEKKworCitBY2Nlc3NpbmcgdGhlIEVFUFJPTQorPT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBidXMgY3JlYXRlcyBhIHN5c2ZzIGJpbmFyeSBmaWxlIGNhbGxlZCBlZXByb20gZm9yIGVhY2ggbWV6emFuaW5lIGl0Citrbm93cyBhYm91dDoKKworICAgICAgICBzcHVzYS5yb290IyBjZCAvc3lzL2J1cy9mbWMvZGV2aWNlczsgbHMgLWwgKi9lZXByb20KKyAgICAgICAgLXItLXItLXItLSAxIHJvb3Qgcm9vdCA4MTkyIEZlYiAyMSAxMjozMCBGbWNBZGMxMDBtMTRiNGNoYS0wODAwL2VlcHJvbQorICAgICAgICAtci0tci0tci0tIDEgcm9vdCByb290IDgxOTIgRmViIDIxIDEyOjMwIEZtY0RlbGF5MW5zNGNoYS0wMjAwL2VlcHJvbQorICAgICAgICAtci0tci0tci0tIDEgcm9vdCByb290IDgxOTIgRmViIDIxIDEyOjMwIEZtY0RpbzVjaGEtMDQwMC9lZXByb20KKworRXZlcnlib2R5IGNhbiByZWFkIHRoZSBmaWxlcyBhbmQgdGhlIHN1cGVydXNlciBjYW4gYWxzbyBtb2RpZnkgaXQsIGJ1dAordGhlIG9wZXJhdGlvbiBtYXkgb24gdGhlIGNhcnJpZXIgZHJpdmVyLCBpZiB0aGUgY2FycmllciBpcyB1bmFibGUgdG8KK2FjY2VzcyB0aGUgSTJDIGJ1cy4gIEZvciBleGFtcGxlLCB0aGUgc3BlYyBkcml2ZXIgY2FuIGFjY2VzcyB0aGUgYnVzCitvbmx5IHdpdGggaXRzIGdvbGRlbiBnYXRld2FyZTogYWZ0ZXIgYSBtZXp6YW5pbmUgZHJpdmVyIHJlcHJvZ3JhbW1lZAordGhlIEZQR0Egd2l0aCBhIGN1c3RvbSBjaXJjdWl0LCB0aGUgY2FycmllciBpcyB1bmFibGUgdG8gYWNjZXNzIHRoZQorRUVQUk9NIGFuZCByZXR1cm5zIEVOT1RTVVBQLgorCitBbiBhbHRlcm5hdGl2ZSB3YXkgdG8gd3JpdGUgdGhlIEVFUFJPTSBpcyB0aGUgbWV6emFuaW5lIGRyaXZlcgorZm1jLXdyaXRlLWVlcHJvbSAoU2VlICpub3RlIGZtYy13cml0ZS1lZXByb206OiksIGJ1dCB0aGUgcHJvY2VkdXJlIGlzCittb3JlIGNvbXBsZXguCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZtYy9pZGVudGlmaWVycy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZtYy9pZGVudGlmaWVycy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JiNTc3ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZm1jL2lkZW50aWZpZXJzLnR4dApAQCAtMCwwICsxLDE2OCBAQAorRk1DIElkZW50aWZpY2F0aW9uCisqKioqKioqKioqKioqKioqKioKKworVGhlIEZNQyBzdGFuZGFyZCByZXF1aXJlcyBldmVyeSBjb21wbGlhbnQgbWV6emFuaW5lIHRvIGNhcnJ5CitpZGVudGlmaWNhdGlvbiBpbmZvcm1hdGlvbiBpbiBhbiBJMkMgRUVQUk9NLiAgVGhlIGluZm9ybWF0aW9uIG11c3QgYmUKK2xhaWQgb3V0IGFjY29yZGluZyB0byB0aGUgIklQTUkgUGxhdGZvcm0gTWFuYWdlbWVudCBGUlUgSW5mb3JtYXRpb24iLAord2hlcmUgSVBNSSBpcyBhIGxpZSBJJ2QgYmV0dGVyIG5vdCBleHBhbmQsIGFuZCBGUlUgbWVhbnMgIkZpZWxkCitSZXBsYWNlYWJsZSBVbml0Ii4KKworVGhlIEZSVSBpbmZvcm1hdGlvbiBpcyBhbiBpbnRyaWNhdGUgdW5yZWFkYWJsZSBiaW5hcnkgYmxvYiB0aGF0IG11c3QKK2xpdmUgYXQgb2Zmc2V0IDAgb2YgdGhlIEVFUFJPTSwgYW5kIHR5cGljYWxseSBleHRlbmRzIGZvciBhIGZldyBodW5kcmVkCitieXRlcy4gVGhlIHN0YW5kYXJkIGFsbG93cyB0aGUgYXBwbGljYXRpb24gdG8gdXNlIGFsbCB0aGUgcmVtYWluaW5nCitzdG9yYWdlIGFyZWEgb2YgdGhlIEVFUFJPTSBhcyBpdCB3YW50cy4KKworVGhpcyBjaGFwdGVyIGV4cGxhaW5zIGhvdyB0byBjcmVhdGUgeW91ciBvd24gRUVQUk9NIGltYWdlIGFuZCBob3cgdG8KK3dyaXRlIGl0IGluIHlvdXIgbWV6emFuaW5lLCBhcyB3ZWxsIGFzIGhvdyBkZXZpY2VzIGFuZCBkcml2ZXJzIGFyZQorcGFpcmVkIGF0IHJ1biB0aW1lLiAgRUVQUk9NIHByb2dyYW1taW5nIHVzZXMgdG9vbHMgdGhhdCBhcmUgcGFydCBvZiB0aGlzCitwYWNrYWdlIGFuZCBTREIgKHBhcnQgb2YgdGhlIGZwZ2EtY29uZmlnLXNwYWNlIHBhY2thZ2UpLgorCitUaGUgZmlyc3Qgc2VjdGlvbnMgYXJlIG9ubHkgaW50ZXJlc3RpbmcgZm9yIG1hbnVmYWN0dXJlcnMgd2hvIG5lZWQgdG8KK3dyaXRlIHRoZSBFRVBST00uIElmIHlvdSBhcmUganVzdCBhIHNvZnR3YXJlIGRldmVsb3BlciB3cml0aW5nIGFuIEZNQworZGV2aWNlIG9yIGRyaXZlciwgeW91IG1heSBqdW1wIHN0cmFpZ2h0IHRvICpub3RlIFNEQiBTdXBwb3J0OjouCisKKworQnVpbGRpbmcgdGhlIEZSVSBTdHJ1Y3R1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0lmIHlvdSB3YW50IHRvIGtub3cgdGhlIGludGVybmFscyBvZiB0aGUgRlJVIHN0cnVjdHVyZSBhbmQgZGVzcGFpciwgeW91CitjYW4gcmV0cmlldmUgdGhlIGRvY3VtZW50IGZyb20KK2BodHRwOi8vZG93bmxvYWQuaW50ZWwuY29tL2Rlc2lnbi9zZXJ2ZXJzL2lwbWkvRlJVMTAxMS5wZGYnIC4gIFRoZQorc3RhbmRhcmQgaXMgYXdmdWwgYW5kIGRpZmZpY3VsdCB3aXRob3V0IHJlYXNvbiwgc28gd2Ugb25seSBzdXBwb3J0IHRoZQorbWluaW11bSBtYW5kYXRvcnkgc3Vic2V0IC0gd2UgY3JlYXRlIGEgc2ltcGxlIHN0cnVjdHVyZSBhbmQgcGFyc2UgaXQKK2JhY2sgYXQgcnVuIHRpbWUsIGJ1dCB3ZSBhcmUgbm90IGFibGUgdG8gZWl0aGVyIGdlbmVyYXRlIG9yIHBhcnNlIG1vcmUKK2FyY2FuZSBmZWF0dXJlcyBsaWtlIG5vbi1lbmdsaXNoIGxhbmd1YWdlcyBhbmQgNi1iaXQgdGV4dC4gIElmIHlvdSBuZWVkCittb3JlIGl0ZW1zIG9mIHRoZSBGUlUgc3RhbmRhcmQgZm9yIHlvdXIgYm9hcmRzLCBwbGVhc2Ugc3VibWl0IHBhdGNoZXMuCisKK1RoaXMgcGFja2FnZSBpbmNsdWRlcyB0aGUgUHl0aG9uIHNjcmlwdCB0aGF0IE1hdHRoaWV1IENhdHRpbiB3cm90ZSB0bworZ2VuZXJhdGUgdGhlIEZSVSBiaW5hcnkgYmxvYiwgYmFzZWQgb24gYW4gaGVscGVyIGxpYmlwbWkgYnkgTWFub2hhcgorVmFuZ2EgYW5kIE1hdHRoaWV1IGhpbXNlbGYuICBJIGNoYW5nZWQgdGhlIHRlc3Qgc2NyaXB0IHRvIHJlY2VpdmUKK3BhcmFtZXRlcnMgZnJvbSB0aGUgY29tbWFuZCBsaW5lIG9yIGZyb20gdGhlIGVudmlyb25tZW50ICh0aGUgY29tbWFuZAorbGluZSB0YWtlcyBwcmVjZWRlbmNlKQorCitUbyBtYWtlIGEgbG9uZyBzdG9yeSBzaG9ydCwgaW4gb3JkZXIgdG8gYnVpbGQgYSBzdGFuZGFyZC1jb21wbGlhbnQKK2JpbmFyeSBmaWxlIHRvIGJlIGJ1cm5lZCBpbiB5b3VyIEVFUFJPTSwgeW91IG5lZWQgdGhlIGZvbGxvd2luZyBpdGVtczoKKworICAgICAgICBFbnZpcm9ubWVudCAgICBPcHQgICAgIE9mZmljaWFsIE5hbWUgICAgICAgICAgRGVmYXVsdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIEZSVV9WRU5ET1IgICAgIC12ICAgICAgIkJvYXJkIE1hbnVmYWN0dXJlciIgICBmbWMtZXhhbXBsZQorICAgICAgICBGUlVfTkFNRSAgICAgICAtbiAgICAgICJCb2FyZCBQcm9kdWN0IE5hbWUiICAgbWV6emFuaW5lCisgICAgICAgIEZSVV9TRVJJQUwgICAgIC1zICAgICAgYEJvYXJkIFNlcmlhbCBOdW1iZXIiICAwMDAxCisgICAgICAgIEZSVV9QQVJUICAgICAgIC1wICAgICAgIkJvYXJkIFBhcnQgTnVtYmVyIiAgICBzYW1wbGUtcGFydAorICAgICAgICBGUlVfT1VUUFVUICAgICAtbyAgICAgIG5vdCBhcHBsaWNhYmxlICAgICAgICAgL2Rldi9zdGRvdXQKKworVGhlICJPZmZpY2lhbCBOYW1lIiBhYm92ZSBpcyB3aGF0IHlvdSBmaW5kIGluIHRoZSBGUlUgb2ZmaWNpYWwKK2RvY3VtZW50YXRpb24sIGNoYXB0ZXIgMTEsIHBhZ2UgNyAoIkJvYXJkIEluZm8gQXJlYSBGb3JtYXQiKS4gIFRoZQorb3V0cHV0IG9wdGlvbiBpcyB1c2VkIHRvIHNhdmUgdGhlIGdlbmVyYXRlZCBiaW5hcnkgdG8gYSBzcGVjaWZpYyBmaWxlCituYW1lIGluc3RlYWQgb2Ygc3Rkb3V0LgorCitZb3UgY2FuIHBhc3MgdGhlIGl0ZW1zIHRvIHRoZSBGUlUgZ2VuZXJhdG9yIGVpdGhlciBpbiB0aGUgZW52aXJvbm1lbnQKK29yIG9uIHRoZSBjb21tYW5kIGxpbmUuICBUaGlzIHBhY2thZ2UgaGFzIGN1cnJlbnRseSBubyBzdXBwb3J0IGZvcgorc3BlY2lmeWluZyBwb3dlciBjb25zdW1wdGlvbiBvciBzdWNoIHN0dWZmLCBidXQgSSBwbGFuIHRvIGFkZCBpdCBhcworc29vbiBhcyBJIGZpbmQgc29tZSB0aW1lIGZvciB0aGF0LgorCitGSVhNRTogY29uc3VtcHRpb24gZXRjIGZvciBGUlUgYXJlIGhlcmUgb3IgaW4gUFRTPworCitUaGUgZm9sbG93aW5nIGV4YW1wbGUgY3JlYXRlcyBhIGJpbmFyeSBpbWFnZSBmb3IgYSBzcGVjaWZpYyBib2FyZDoKKworICAgICAgICAuL3Rvb2xzL2ZydS1nZW5lcmF0b3IgLXYgQ0VSTiAtbiBGbWNBZGMxMDBtMTRiNGNoYSBcCisgICAgICAgICAgICAgICAtcyBIQ0NGRklBX19fLUNSMDAwMDAzIC1wIEVEQS0wMjA2My1WNS0wID4gZWVwcm9tLmJpbgorCitUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgYSBzY3JpcHQgdGhhdCBidWlsZHMgc2V2ZXJhbCBiaW5hcnkgRUVQUk9NCitpbWFnZXMgZm9yIGEgc2VyaWVzIG9mIGJvYXJkcywgY2hhbmdpbmcgdGhlIHNlcmlhbCBudW1iZXIgZm9yIGVhY2ggb2YKK3RoZW0uIFRoZSBzY3JpcHQgdXNlcyBhIG1peCBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kIGNvbW1hbmQgbGluZQorb3B0aW9ucywgYW5kIHVzZXMgdGhlIHNhbWUgc3RyaW5nIHBhdHRlcm5zIHNob3duIGFib3ZlLgorCisgICAgICAgICMhL2Jpbi9zaAorCisgICAgICAgIGV4cG9ydCBGUlVfVkVORE9SPSJDRVJOIgorICAgICAgICBleHBvcnQgRlJVX05BTUU9IkZtY0FkYzEwMG0xNGI0Y2hhIgorICAgICAgICBleHBvcnQgRlJVX1BBUlQ9IkVEQS0wMjA2My1WNS0wIgorCisgICAgICAgIHNlcmlhbD0iSENDRkZJQV9fXy1DUiIKKworICAgICAgICBmb3IgbnVtYmVyIGluICQoc2VxIDEgNTApOyBkbworICAgICAgICAgICAjIGJ1aWxkIG51bWJlci1zdHJpbmcgIm5zIgorICAgICAgICAgICBucz0iJChwcmludGYgJTA2ZCAkbnVtYmVyKSIKKyAgICAgICAgICAgLi9mcnUtZ2VuZXJhdG9yIC1zICIke3NlcmlhbH0ke25zfSIgPiBlZXByb20tJHtuc30uYmluCisgICAgICAgIGRvbmUKKworCitVc2luZyBTREItRlMgaW4gdGhlIEVFUFJPTQorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSWYgeW91IHdhbnQgdG8gdXNlIFNEQiBhcyBhIGZpbGVzeXN0ZW0gaW4gdGhlIEVFUFJPTSBkZXZpY2Ugd2l0aGluIHRoZQorbWV6emFuaW5lLCB5b3Ugc2hvdWxkIGNyZWF0ZSBvbmUgc3VjaCBmaWxlc3lzdGVtIHVzaW5nIGdlbnNkYmZzLCBmcm9tCit0aGUgZnBnYS1jb25maWctc3BhY2UgcGFja2FnZSBvbiBPSFdSLgorCitCeSB1c2luZyBhbiBTQkQgZmlsZXN5c3RlbSB5b3UgY2FuIGNsdXN0ZXIgc2V2ZXJhbCBmaWxlcyBpbiBhIHNpbmdsZQorRUVQUk9NLCBzbyBib3RoIHRoZSBob3N0IHN5c3RlbSBhbmQgYSBzb2Z0LWNvcmUgcnVubmluZyBpbiB0aGUgRlBHQSAoaWYKK2FueSkgY2FuIGFjY2VzcyBleHRyYSBwcm9kdWN0aW9uLXRpbWUgaW5mb3JtYXRpb24uCisKK1dlIGNob3NlIHRvIHVzZSBTREIgYXMgYSBzdG9yYWdlIGZpbGVzeXN0ZW0gYmVjYXVzZSB0aGUgZm9ybWF0IGlzIHZlcnkKK3NpbXBsZSwgYW5kIGJvdGggdGhlIGhvc3Qgc3lzdGVtIGFuZCB0aGUgc29mdC1jb3JlIHdpbGwgbGlrZWx5IGFscmVhZHkKK2luY2x1ZGUgc3VwcG9ydCBjb2RlIGZvciBzdWNoIGZvcm1hdC4gVGhlIFNEQiBsaWJyYXJ5IG9mZmVyZWQgYnkgdGhlCitmcGdhLWNvbmZpZy1zcGFjZSBpcyBsZXNzIHRoYW4gMWtCIHVuZGVyIExNMzIsIHNvIGl0IHByb3ZlcyBxdWl0ZSB1cCB0bwordGhlIHRhc2suCisKK1RoZSBTREIgZW50cnkgcG9pbnQgKHdoaWNoIGFjdHMgYXMgYSBkaXJlY3RvcnkgbGlzdGluZykgY2Fubm90IGxpdmUgYXQKK29mZnNldCB6ZXJvIGluIHRoZSBmbGFzaCBkZXZpY2UsIGJlY2F1c2UgdGhlIEZSVSBpbmZvcm1hdGlvbiBtdXN0IGxpdmUKK3RoZXJlLiAgVG8gYXZvaWQgd2FzdGluZyBwcmVjaW91cyBzdG9yYWdlIHNwYWNlIHdoaWxlIHN0aWxsIGFsbG93aW5nCitmb3IgbW9yZS10aGFuLW1pbmltYWwgRlJVIHN0cnVjdHVyZXMsIHRoZSBmbWMua28gd2lsbCBsb29rIGZvciB0aGUgU0RCCityZWNvcmQgYXQgYWRkcmVzcyAyNTYsIDUxMiBhbmQgMTAyNC4KKworSW4gb3JkZXIgdG8gZ2VuZXJhdGUgdGhlIGNvbXBsZXRlIEVFUFJPTSBpbWFnZSB5b3UnbGwgbmVlZCBhCitjb25maWd1cmF0aW9uIGZpbGUgZm9yIGdlbnNkYmZzOiB5b3UgdGVsbCB0aGUgcHJvZ3JhbSB3aGVyZSB0byBwbGFjZQordGhlIHNkYiBlbnRyeSBwb2ludCwgYW5kIHlvdSBtdXN0IGZvcmNlIHRoZSBGUlUgZGF0YSBmaWxlIHRvIGJlIHBsYWNlZAorYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RvcmFnZSBkZXZpY2UuIElmIG5lZWRlZCwgeW91IGNhbiBhbHNvIHBsYWNlCitvdGhlciBmaWxlcyBhdCBhIHNwZWNpYWwgb2Zmc2V0ICh3ZSBzb21ldGltZXMgZG8gaXQgZm9yIGJhY2t3YXJkCitjb21wYXRpYmlsaXR5IHdpdGggZHJpdmVycyB3ZSB3cm90ZSBiZWZvcmUgaW1wbGVtZW50aW5nIFNEQiBmb3IgZmxhc2gKK21lbW9yeSkuCisKK1RoZSBkaXJlY3RvcnkgdG9vbHMvc2RiZnMgb2YgdGhpcyBwYWNrYWdlIGluY2x1ZGVzIGEgd2VsbC1jb21tZW50ZWQKK2V4YW1wbGUgdGhhdCB5b3UgbWF5IHdhbnQgdG8gdXNlIGFzIGEgc3RhcnRpbmcgcG9pbnQgKHRoZSBjb21tZW50cyBhcmUKK2luIHRoZSBmaWxlIGNhbGxlZCAtU0RCLUNPTkZJRy0pLiAgUmVhZGluZyBkb2N1bWVudGF0aW9uIGZvciBnZW5zZGJmcworaXMgYSBzdWdnZXN0ZWQgZmlyc3Qgc3RlcCBhbnl3YXlzLgorCitUaGlzIHBhY2thZ2UgKGdlbmVyaWMgRk1DIGJ1cyBzdXBwb3J0KSBvbmx5IGFjY2Vzc2VzIHR3byBmaWxlcyBpbiB0aGUKK0VFUFJPTTogdGhlIEZSVSBpbmZvcm1hdGlvbiwgYXQgb2Zmc2V0IHplcm8sIHdpdGggYSBzdWdnZXN0ZWQgZmlsZW5hbWUKK29mIElQTUktRlJVIGFuZCB0aGUgc2hvcnQgbmFtZSBmb3IgdGhlIG1lenphbmluZSwgaW4gYSBmaWxlIGNhbGxlZAorbmFtZS4gVGhlIElQTUktRlJVIG5hbWUgaXMgbm90IG1hbmRhdG9yeSwgYnV0IGEgc3Ryb25nbHkgc3VnZ2VzdGVkCitjaG9pY2U7IHRoZSBuYW1lIGZpbGVuYW1lIGlzIG1hbmRhdG9yeSwgYmVjYXVzZSB0aGlzIGlzIHRoZSBwcmVmZXJyZWQKK3Nob3J0IG5hbWUgdXNlZCBieSB0aGUgRk1DIGNvcmUuICBGb3IgZXhhbXBsZSwgYSBuYW1lIG9mICJmZGVsYXkiIG1heQorc3VwcGxlbWVudCBhIFByb2R1Y3QgTmFtZSBsaWtlICJGbWNEZWxheTFuczRjaGEiIC0gZXhhY3RseSBhcworZGVtb25zdHJhdGVkIGluIGB0b29scy9zZGJmcycuCisKK05vdGU6IFNEQiBhY2Nlc3MgdG8gZmxhc2ggbWVtb3J5IGlzIG5vdCB5ZXQgc3VwcG9ydGVkLCBzbyB0aGUgc2hvcnQKK25hbWUgY3VycmVudGx5IGluIHVzZSBpcyBqdXN0IHRoZSAiUHJvZHVjdCBOYW1lIiBGUlUgc3RyaW5nLgorCitUaGUgZXhhbXBsZSBpbiB0b29scy9zZGJmcyBpbmNsdWRlcyBhbiBleHRyYSBmaWxlLCB0aGF0IGlzIG5lZWRlZCBieQordGhlIGZpbmUtZGVsYXkgZHJpdmVyLCBhbmQgbXVzdCBsaXZlIGF0IGEga25vd24gYWRkcmVzcyBvZiAweDE4MDAuICBCeQorcnVubmluZyBnZW5zZGJmcyBvbiB0aGF0IGRpcmVjdG9yeSB5b3UgY2FuIG91dHB1dCB5b3VyIGJpbmFyeSBFRVBST00KK2ltYWdlIChoZXJlIGJlbG93IHNwdXNhJCBpcyB0aGUgc2hlbGwgcHJvbXB0KToKKworICAgICAgICBzcHVzYSQgLi4vZnJ1LWdlbmVyYXRvciAtdiBDRVJOIC1uIEZtY0RlbGF5MW5zNGNoYSAtcyBwcm90by0wIFwKKyAgICAgICAgICAgICAgICAgICAgICAtcCBFREEtMDIyNjctVjMgPiBJUE1JLUZSVQorICAgICAgICBzcHVzYSQgbHMgLWwKKyAgICAgICAgdG90YWwgMTYKKyAgICAgICAgLXJ3LXJ3LXItLSAxIHJ1YmluaSBzdGFmZiA5NzUgTm92IDE5IDE4OjA4IC0tU0RCLUNPTkZJRy0tCisgICAgICAgIC1ydy1ydy1yLS0gMSBydWJpbmkgc3RhZmYgMjE2IE5vdiAxOSAxODoxMyBJUE1JLUZSVQorICAgICAgICAtcnctcnctci0tIDEgcnViaW5pIHN0YWZmICAxMSBOb3YgMTkgMTg6MDQgZmQtY2FsaWIKKyAgICAgICAgLXJ3LXJ3LXItLSAxIHJ1YmluaSBzdGFmZiAgIDcgTm92IDE5IDE4OjA0IG5hbWUKKyAgICAgICAgc3B1c2EkIHN1ZG8gZ2Vuc2RiZnMgLiAvbGliL2Zpcm13YXJlL2ZkZWxheS1lZXByb20uYmluCisgICAgICAgIHNwdXNhJCBzZGItcmVhZCAtbCAtZSAweDEwMCAvbGliL2Zpcm13YXJlL2ZkZWxheS1lZXByb20uYmluCisgICAgICAgIC9ob21lL3J1YmluaS93aXAvc2RiZnMvdXNlcnNwYWNlL3NkYi1yZWFkOiBsaXN0aW5nIGZvcm1hdCBpcyB0byBiZSBkZWZpbmVkCisgICAgICAgIDQ2Njk2YzY1NDQ2MTc0NjE6MmUyMDIwMjAgIDAwMDAwMTAwLTAwMDAxOGZmIC4KKyAgICAgICAgNDY2OTZjNjU0NDYxNzQ2MTo2ZTYxNmQ2NSAgMDAwMDAyMDAtMDAwMDAyMDYgbmFtZQorICAgICAgICA0NjY5NmM2NTQ0NjE3NDYxOjY2NjQyZDYzICAwMDAwMTgwMC0wMDAwMThmZiBmZC1jYWxpYgorICAgICAgICA0NjY5NmM2NTQ0NjE3NDYxOjQ5NTA0ZDQ5ICAwMDAwMDAwMC0wMDAwMDBkNyBJUE1JLUZSVQorICAgICAgICBzcHVzYSQgLi4vZnJ1LWR1bXAgL2xpYi9maXJtd2FyZS9mZGVsYXktZWVwcm9tLmJpbgorICAgICAgICAvbGliL2Zpcm13YXJlL2ZkZWxheS1lZXByb20uYmluOiBtYW51ZmFjdHVyZXI6IENFUk4KKyAgICAgICAgL2xpYi9maXJtd2FyZS9mZGVsYXktZWVwcm9tLmJpbjogcHJvZHVjdC1uYW1lOiBGbWNEZWxheTFuczRjaGEKKyAgICAgICAgL2xpYi9maXJtd2FyZS9mZGVsYXktZWVwcm9tLmJpbjogc2VyaWFsLW51bWJlcjogcHJvdG8tMAorICAgICAgICAvbGliL2Zpcm13YXJlL2ZkZWxheS1lZXByb20uYmluOiBwYXJ0LW51bWJlcjogRURBLTAyMjY3LVYzCisKK0FzIGV4cGVjdGVkLCB0aGUgb3V0cHV0IGZpbGUgaXMgYm90aCBhIHByb3BlciBzZGJmcyBvYmplY3QgYW5kIGFuIElQTUkKK0ZSVSBpbmZvcm1hdGlvbiBibG9iLiBUaGUgZmQtY2FsaWIgZmlsZSBsaXZlcyBhdCBvZmZzZXQgMHgxODAwIGFuZCBpcworb3Zlci1hbGxvY2F0ZWQgdG8gMjU2IGJ5dGVzLCBhY2NvcmRpbmcgdG8gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IKK2dlbnNkYmZzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mbWMvbWV6emFuaW5lLnR4dCBiL0RvY3VtZW50YXRpb24vZm1jL21lenphbmluZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc5MTBkYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZm1jL21lenphbmluZS50eHQKQEAgLTAsMCArMSwxMjMgQEAKK0ZNQyBEcml2ZXIKKyoqKioqKioqKioKKworQW4gRk1DIGRyaXZlciBpcyBjb25jZXJuZWQgd2l0aCB0aGUgc3BlY2lmaWMgbWV6emFuaW5lIGFuZCBhc3NvY2lhdGVkCitnYXRld2FyZS4gQXMgc3VjaCwgaXQgaXMgZXhwZWN0ZWQgdG8gYmUgaW5kZXBlbmRlbnQgb2YgdGhlIGNhcnJpZXIKK2JlaW5nIHVzZWQ6IGl0IHdpbGwgcGVyZm9ybSBJL08gYWNjZXNzZXMgb25seSBieSBtZWFucyBvZgorY2Fycmllci1wcm92aWRlZCBmdW5jdGlvbnMuCisKK1RoZSBtYXRjaGluZyBiZXR3ZWVuIGRldmljZSBhbmQgZHJpdmVyIGlzIGJhc2VkIG9uIHRoZSBjb250ZW50IG9mIHRoZQorRUVQUk9NIChhcyBtYW5kYXRlZCBieSB0aGUgRk1DIHN0YW5kYXJkKSBvciBieSB0aGUgYWN0dWFsIGNvcmVzCitjb25maWd1cmVkIGluIHRoZSBGUEdBOyB0aGUgbGF0dGVyIHRlY2huaXF1ZSBpcyB1c2VkIHdoZW4gdGhlIEZQR0EgaXMKK2FscmVhZHkgcHJvZ3JhbW1lZCB3aGVuIHRoZSBkZXZpY2UgaXMgcmVnaXN0ZXJlZCB0byB0aGUgYnVzIGNvcmUuCisKK0luIHNvbWUgc3BlY2lhbCBjYXNlcyBpdCBpcyBwb3NzaWJsZSBmb3IgYSBkcml2ZXIgdG8gZGlyZWN0bHkgYWNjZXNzCitGUEdBIHJlZ2lzdGVycywgYnkgbWVhbnMgb2YgdGhlIGBmcGdhX2Jhc2UnIGZpZWxkIG9mIHRoZSBkZXZpY2UKK3N0cnVjdHVyZS4gVGhpcyBtYXkgYmUgbmVlZGVkIGZvciBoaWdoLWJhbmR3aWR0aCBwZXJpcGhlcmFscyBsaWtlIGZhc3QKK0FEQyBjYXJkcy4gSWYgdGhlIGRldmljZSBtb2R1bGUgcmVnaXN0ZXJlZCBhIHJlbW90ZSBkZXZpY2UgKGZvciBleGFtcGxlCitieSBtZWFucyBvZiBFdGhlcmJvbmUpLCB0aGUgYGZwZ2FfYmFzZScgcG9pbnRlciB3aWxsIGJlIE5VTEwuCitUaGVyZWZvcmUsIGRyaXZlcnMgbXVzdCBiZSByZWFkeSB0byBkZWFsIHdpdGggTlVMTCBiYXNlIHBvaW50ZXJzLCBhbmQKK2ZhaWwgZ3JhY2VmdWxseS4gIE1vc3QgZHJpdmVyLCBob3dldmVyLCBhcmUgbm90IGV4cGVjdGVkIHRvIGFjY2VzcyB0aGUKK3BvaW50ZXIgZGlyZWN0bHkgYnV0IHJ1biBmbWNfcmVhZGwgYW5kIGZtY193cml0ZWwgaW5zdGVhZCwgd2hpY2ggd2lsbAord29yayBpbiBhbnkgY2FzZS4KKworSW4gZXZlbiBtb3JlIHNwZWNpYWwgY2FzZXMsIHRoZSBkcml2ZXIgbWF5IGFjY2VzcyBjYXJyaWVyLXNwZWNpZmljCitmdW5jdGlvbmFsaXR5OiB0aGUgYGNhcnJpZXJfbmFtZScgc3RyaW5nIGFsbG93cyB0aGUgZHJpdmVyIHRvIGNoZWNrCit3aGljaCBpcyB0aGUgY3VycmVudCBjYXJyaWVyIGFuZCBtYWtlIHVzZSBvZiB0aGUgYGNhcnJpZXJfZGF0YScKK3BvaW50ZXIuICBXZSBjaG9zZSB0byB1c2UgY2FycmllciBuYW1lcyByYXRoZXIgdGhhbiBudW1lcmljIGlkZW50aWZpZXJzCitmb3IgZ3JlYXRlciBmbGV4aWJpbGl0eSwgYnV0IGFsc28gdG8gYXZvaWQgYSBjZW50cmFsIHJlZ2lzdHJ5IHdpdGhpbgordGhlIGBmbWMuaCcgZmlsZSAtIHdlIGhvcGUgb3RoZXIgdXNlcnMgd2lsbCBleHBsb2l0IG91ciBmcmFtZXdvcmsgd2l0aAordGhlaXIgb3duIGNhcnJpZXJzLiAgQW4gZXhhbXBsZSB1c2Ugb2YgY2FycmllciBuYW1lcyBpcyBpbiBHUElPIHNldHVwCisoc2VlICpub3RlIFRoZSBHUElPIEFic3RyYWN0aW9uOjopLCBhbHRob3VnaCB0aGUgbmFtZSBtYXRjaCBpcyBub3QKK2V4cGVjdGVkIHRvIGJlIHBlcmZvcm1lZCBieSB0aGUgZHJpdmVyLiAgSWYgeW91IGRlcGVuZCBvbiBzcGVjaWZpYworY2FycmllcnMsIHBsZWFzZSBjaGVjayB0aGUgY2FycmllciBuYW1lIGFuZCBmYWlsIGdyYWNlZnVsbHkgaWYgeW91cgorZHJpdmVyIGZpbmRzIGl0IGlzIHJ1bm5pbmcgaW4gYSB5ZXQtdW5rbm93bi10by1pdCBlbnZpcm9ubWVudC4KKworCitJRCBUYWJsZQorPT09PT09PT0KKworTGlrZSBtb3N0IG90aGVyIExpbnV4IGRyaXZlcnMsIGFuZCBGTUMgZHJpdmVyIG11c3QgbGlzdCBhbGwgdGhlIGRldmljZXMKK3doaWNoIGl0IGlzIGFibGUgdG8gZHJpdmUuICBUaGlzIGlzIHVzdWFsbHkgZG9uZSBieSBtZWFucyBvZiBhIGRldmljZQordGFibGUsIGJ1dCBpbiBGTUMgd2UgY2FuIG1hdGNoIGhhcmR3YXJlIGJhc2VkIGVpdGhlciBvbiB0aGUgY29udGVudHMgb2YKK3RoZWlyIEVFUFJPTSBvciBvbiB0aGUgYWN0dWFsIEZQR0EgY29yZXMgdGhhdCBjYW4gYmUgZW51bWVyYXRlZC4KK1RoZXJlZm9yZSwgd2UgaGF2ZSB0d28gdGFibGVzIG9mIGlkZW50aWZpZXJzLgorCitNYXRjaGluZyBvZiBGUlUgaW5mb3JtYXRpb24gZGVwZW5kcyBvbiB0d28gbmFtZXMsIHRoZSBtYW51ZmFjdHVyZXIgKG9yCit2ZW5kb3IpIGFuZCB0aGUgZGV2aWNlIChzZWUgKm5vdGUgRk1DIElkZW50aWZpY2F0aW9uOjopOyBmb3IKK2ZsZXhpYmlsaXR5IGR1cmluZyBwcm9kdWN0aW9uIChpLmUuIGJlZm9yZSB3cml0aW5nIHRvIHRoZSBFRVBST00pIHRoZQorYnVzIHN1cHBvcnRzIGEgY2F0Y2gtYWxsIGRyaXZlciB0aGF0IHNwZWNpZmllcyBOVUxMIHN0cmluZ3MuIEZvciB0aGlzCityZWFzb24sIHRoZSB0YWJsZSBpcyBzcGVjaWZpZWQgYXMgcG9pbnRlci1hbmQtbGVuZ3RoLCBub3QgYSBhCitudWxsLXRlcm1pbmF0ZWQgYXJyYXkgLSB0aGUgZW50cnkgd2l0aCBOVUxMIG5hbWVzIGNhbiBiZSBhIHZhbGlkIGVudHJ5LgorCitNYXRjaGluZyBvbiBGUEdBIGNvcmVzIGRlcGVuZHMgb24gdHdvIG51bWVyaWMgZmllbGRzOiB0aGUgNjQtYml0IHZlbmRvcgorbnVtYmVyIGFuZCB0aGUgMzItYml0IGRldmljZSBudW1iZXIuIFN1cHBvcnQgZm9yIG1hdGNoaW5nIGJhc2VkIG9uCitjbGFzcyBpcyBub3QgeWV0IGltcGxlbWVudGVkLiAgRWFjaCBkZXZpY2UgaXMgZXhwZWN0ZWQgdG8gYmUgdW5pcXVlbHkKK2lkZW50aWZpZWQgYnkgYW4gYXJyYXkgb2YgY29yZXMgKGl0IG1hdGNoZXMgaWYgYWxsIG9mIHRoZSBjb3JlcyBhcmUKK2luc3RhbnRpYXRlZCksIGFuZCBmb3IgY29uc2lzdGVuY3kgdGhlIGxpc3QgaXMgcGFzc2VkIGFzCitwb2ludGVyLWFuZC1sZW5ndGguICBTZXZlcmFsIHNpbWlsYXIgZGV2aWNlcyBjYW4gYmUgZHJpdmVuIGJ5IHRoZSBzYW1lCitkcml2ZXIsIGFuZCB0aHVzIHRoZSBkcml2ZXIgc3BlY2lmaWVzIGFuZCBhcnJheSBvZiBzdWNoIGFycmF5cy4KKworVGhlIGNvbXBsZXRlIHNldCBvZiBpbnZvbHZlZCBkYXRhIHN0cnVjdHVyZXMgaXMgdGh1cyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIHN0cnVjdCBmbWNfZnJ1X2lkIHsgY2hhciAqbWFudWZhY3R1cmVyOyBjaGFyICpwcm9kdWN0X25hbWU7IH07CisgICAgICAgIHN0cnVjdCBmbWNfc2RiX29uZV9pZCB7IHVpbnQ2NF90IHZlbmRvcjsgdWludDMyX3QgZGV2aWNlOyB9OworICAgICAgICBzdHJ1Y3QgZm1jX3NkYl9pZCB7IHN0cnVjdCBmbWNfc2RiX29uZV9pZCAqY29yZXM7IGludCBjb3Jlc19ucjsgfTsKKworICAgICAgICBzdHJ1Y3QgZm1jX2RldmljZV9pZCB7CisgICAgICAgICAgICAgICAgc3RydWN0IGZtY19mcnVfaWQgKmZydV9pZDsgaW50IGZydV9pZF9ucjsKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgZm1jX3NkYl9pZCAqc2RiX2lkOyBpbnQgc2RiX2lkX25yOworICAgICAgICB9OworCitBIGJldHRlciByZWZlcmVuY2UsIHdpdGggZnVsbCBleHBsYW5hdGlvbiwgaXMgdGhlIDxsaW51eC9mbWMuaD4gaGVhZGVyLgorCisKK01vZHVsZSBQYXJhbWV0ZXJzCis9PT09PT09PT09PT09PT09PQorCitNb3N0IG9mIHRoZSBGTUMgZHJpdmVycyBuZWVkIHRoZSBzYW1lIHNldCBvZiBrZXJuZWwgcGFyYW1ldGVycy4gVGhpcworcGFja2FnZSBpbmNsdWRlcyBzdXBwb3J0IHRvIGltcGxlbWVudCBjb21tb24gcGFyYW1ldGVycyBieSBtZWFucyBvZgorZmllbGRzIGluIHRoZSBgZm1jX2RyaXZlcicgc3RydWN0dXJlIGFuZCBzaW1wbGUgbWFjcm8gZGVmaW5pdGlvbnMuCisKK1RoZSBwYXJhbWV0ZXJzIGFyZSBjYXJyaWVyLXNwZWNpZmljLCBpbiB0aGF0IHRoZXkgcmVseSBvbiB0aGUgYnVzaWQKK2NvbmNlcHQsIHRoYXQgdmFyaWVzIGFtb25nIGNhcnJpZXJzLiBGb3IgdGhlIFNQRUMsIHRoZSBpZGVudGlmaWVyIGlzIGEKK1BDSSBidXMgYW5kIGRldmZuIG51bWJlciwgMTYgYml0cyB3aWRlIGluIHRvdGFsOyBkcml2ZXJzIGZvciBvdGhlcgorY2FycmllcnMgd2lsbCBtb3N0IGxpa2VseSBvZmZlciBzb21ldGhpbmcgc2ltaWxhciBidXQgbm90IGlkZW50aWNhbCwKK2FuZCBzb21lIGNvZGUgZHVwbGljYXRpb24gaXMgdW5hdm9pZGFibGUuCisKK1RoaXMgaXMgdGhlIGxpc3Qgb2YgcGFyYW1ldGVycyB0aGF0IGFyZSBjb21tb24gdG8gc2V2ZXJhbCBtb2R1bGVzIHRvCitzZWUgaG93IHRoZXkgYXJlIGFjdHVhbGx5IHVzZWQsIHBsZWFzZSBsb29rIGF0IHNwZWMtdHJpdmlhbC5jLgorCitgYnVzaWQ9JworICAgICBUaGlzIGlzIGFuIGFycmF5IG9mIGludGVnZXJzLCBsaXN0aW5nIGNhcnJpZXItc3BlY2lmaWMKKyAgICAgaWRlbnRpZmljYXRpb24gbnVtYmVycy4gRm9yIFBJQywgZm9yIGV4YW1wbGUsIGAweDA0MDAnIHJlcHJlc2VudHMKKyAgICAgYnVzIDQsIHNsb3QgMC4gIElmIGFueSBzdWNoIElEIGlzIHNwZWNpZmllZCwgdGhlIGRyaXZlciB3aWxsIG9ubHkKKyAgICAgYWNjZXB0IHRvIGRyaXZlIGNhcmRzIHRoYXQgYXBwZWFyIGluIHRoZSBsaXN0IChldmVuIGlmIHRoZSBGTUMgSUQKKyAgICAgbWF0Y2hlcykuIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IHRoZSB2YWxpZGF0ZSBjYXJyaWVyIG1ldGhvZC4KKworYGdhdGV3YXJlPScKKyAgICAgVGhlIGFyZ3VtZW50IGlzIGFuIGFycmF5IG9mIHN0cmluZ3MuIElmIG5vIGJ1c2lkPSBpcyBzcGVjaWZpZWQsCisgICAgIHRoZSBmaXJzdCBzdHJpbmcgb2YgZ2F0ZXdhcmU9IGlzIHVzZWQgZm9yIGFsbCBjYXJkczsgb3RoZXJ3aXNlIHRoZQorICAgICBpZGVudGlmaWVycyBhbmQgZ2F0ZXdhcmUgbmFtZXMgYXJlIHBhaXJlZCBvbmUgYnkgb25lLCBpbiB0aGUgb3JkZXIKKyAgICAgc3BlY2lmaWVkLgorCitgc2hvd19zZGI9JworICAgICBGb3IgbW9kdWxlcyBzdXBwb3J0aW5nIGl0LCB0aGlzIHBhcmFtZXRlciBhc2tzIHRvIHNob3cgdGhlIFNEQgorICAgICBpbnRlcm5hbCBzdHJ1Y3R1cmUgYnkgbWVhbnMgb2Yga2VybmVsIG1lc3NhZ2VzLiBJdCBpcyBkaXNhYmxlZCBieQorICAgICBkZWZhdWx0IGJlY2F1c2UgdGhvc2UgbGluZXMgdGVuZCB0byBoaWRlIG1vcmUgaW1wb3J0YW50IG1lc3NhZ2VzLAorICAgICBpZiB5b3UgbG9vayBhdCB0aGUgc3lzdGVtIGNvbnNvbGUgd2hpbGUgbG9hZGluZyB0aGUgZHJpdmVycy4KKyAgICAgTm90ZTogdGhlIHBhcmFtZXRlciBpcyBiZWluZyBvYnNvbGV0ZWQsIGJlY2F1c2UgZm1jLmtvIGl0c2VsZiBub3cKKyAgICAgc3VwcG9ydHMgZHVtcF9zZGI9IHRoYXQgYXBwbGllcyB0byBldmVyeSBjbGllbnQgZHJpdmVyLgorCisKK0ZvciBleGFtcGxlLCBpZiB5b3UgYXJlIHVzaW5nIHRoZSB0cml2aWFsIGRyaXZlciB0byBsb2FkIHR3byBkaWZmZXJlbnQKK2dhdGV3YXJlIGZpbGVzIHRvIHR3byBkaWZmZXJlbnQgY2FyZHMsIHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcKK3BhcmFtZXRlcnMgdG8gbG9hZCBkaWZmZXJlbnQgYmluYXJpZXMgdG8gdGhlIGNhcmRzLCBhZnRlciBsb29raW5nIHVwCit0aGUgUENJIGlkZW50aWZpZXJzLiBUaGlzIGhhcyBiZWVuIHRlc3RlZCB3aXRoIGEgU1BFQyBjYXJyaWVyLgorCisgICAgICAgIGluc21vZCBmbWMtdHJpdmlhbC5rbyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXNpZD0weDAyMDAsMHgwNDAwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhdGV3YXJlPWZtYy9maW5lLWRlbGF5LmJpbixmbWMvc2ltcGxlLWRpby5iaW4KKworUGxlYXNlIG5vdGUgdGhhdCBub3QgYWxsIHN1Yi1tb2R1bGVzIHN1cHBvcnQgYWxsIG9mIHRob3NlIHBhcmFtZXRlcnMuCitZb3UgY2FuIHVzZSBtb2RpbmZvIHRvIGNoZWNrIHdoYXQgaXMgc3VwcG9ydGVkIGJ5IGVhY2ggbW9kdWxlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mbWMvcGFyYW1ldGVycy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZtYy9wYXJhbWV0ZXJzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWVkZjA4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mbWMvcGFyYW1ldGVycy50eHQKQEAgLTAsMCArMSw1NiBAQAorTW9kdWxlIFBhcmFtZXRlcnMgaW4gZm1jLmtvCisqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworVGhlIGNvcmUgZHJpdmVyIHJlY2VpdmVzIHR3byBtb2R1bGUgcGFyYW1ldGVycywgbWVhbnQgdG8gaGVscCBkZWJ1Z2dpbmcKK2NsaWVudCBtb2R1bGVzLiBCb3RoIHBhcmFtZXRlcnMgY2FuIGJlIG1vZGlmaWVkIGJ5IHdyaXRpbmcgdG8KKy9zeXMvbW9kdWxlL2ZtYy9wYXJhbWV0ZXJzLywgYmVjYXVzZSB0aGV5IGFyZSB1c2VkIHdoZW4gY2xpZW50IGRyaXZlcnMKK2FyZSBkZXZpY2VzIGFyZSByZWdpc3RlcmVkLCBub3Qgd2hlbiBmbWMua28gaXMgbG9hZGVkLgorCitgZHVtcF9lZXByb209JworICAgICBJZiBub3QgemVybywgdGhlIHBhcmFtZXRlciBhc2tzIHRoZSBidXMgY29udHJvbGxlciB0byBkdW1wIHRoZQorICAgICBFRVBST00gb2YgYW55IGRldmljZSB0aGF0IGlzIHJlZ2lzdGVyZWQsIHVzaW5nIHByaW50ay4KKworYGR1bXBfc2RiPScKKyAgICAgSWYgbm90IHplcm8sIHRoZSBwYXJhbWV0ZXIgcHJpbnRzIHRoZSBTREIgdHJlZSBvZiBldmVyeSBGUEdBIGl0IGlzCisgICAgIGxvYWRlZCBieSBmbWNfcmVwcm9ncmFtKCkuIElmIGdyZWF0ZXIgdGhhbiBvbmUsIGl0IGFza3MgdG8gZHVtcAorICAgICB0aGUgYmluYXJ5IGNvbnRlbnQgb2YgU0RCIHJlY29yZHMuICBUaGlzIGN1cnJlbnRseSBvbmx5IGR1bXBzIHRoZQorICAgICB0b3AtbGV2ZWwgU0RCIGFycmF5LCB0aG91Z2guCisKKworRUVQUk9NIGR1bXBpbmcgYXZvaWRzIHJlcGVhdGluZyBsaW5lcywgc2luY2UgbW9zdCBvZiB0aGUgY29udGVudHMgaXMKK3VzdWFsbHkgZW1wdHkgYW5kIGFsbCBiaXRzIGFyZSBvbmUgb3IgemVyby4gVGhpcyBpcyBhbiBleGFtcGxlIG9mIHRoZQorb3V0cHV0OgorCisgICAgICAgIFsgNjYyNS44NTA0ODBdIHNwZWMgMDAwMDowMjowMC4wOiBGUEdBIHByb2dyYW1taW5nIHN1Y2Nlc3NmdWwKKyAgICAgICAgWyA2NjI2LjEzOTk0OV0gc3BlYyAwMDAwOjAyOjAwLjA6IE1hbnVmYWN0dXJlcjogQ0VSTgorICAgICAgICBbIDY2MjYuMTQ0NjY2XSBzcGVjIDAwMDA6MDI6MDAuMDogUHJvZHVjdCBuYW1lOiBGbWNEZWxheTFuczRjaGEKKyAgICAgICAgWyA2NjI2LjE1MDM3MF0gRk1DOiBtZXp6YW5pbmUgMDogMDAwMDowMjowMC4wIG9uIFNQRUMKKyAgICAgICAgWyA2NjI2LjE1NTE3OV0gRk1DOiBkdW1waW5nIGVlcHJvbSAweDIwMDAgKDgxOTIpIGJ5dGVzCisgICAgICAgIFsgNjYyNi4xNjAwODddIDAwMDA6IDAxIDAwIDAwIDAxICAwMCAwYiAwMCBmMyAgMDEgMGEgMDAgYTUgIDg1IDg3IGM0IDQzCisgICAgICAgIFsgNjYyNi4xNjcwNjldIDAwMTA6IDQ1IDUyIDRlIGNmICA0NiA2ZCA2MyA0NCAgNjUgNmMgNjEgNzkgIDMxIDZlIDczIDM0CisgICAgICAgIFsgNjYyNi4xNzQwMTldIDAwMjA6IDYzIDY4IDYxIGM3ICA3MCA3MiA2ZiA3NCAgNmYgMmQgMzAgY2MgIDQ1IDQ0IDQxIDJkCisgICAgICAgIFsgNjYyNi4xODA5NzVdIDAwMzA6IDMwIDMyIDMyIDM2ICAzNyAyZCA1NiAzMyAgZGEgMzIgMzAgMzEgIDMyIDJkIDMxIDMxCisgICAgICAgIFsuLi5dCisgICAgICAgIFsgNjYyNi4zNzEzNjZdIDAyMDA6IDY2IDY0IDY1IDZjICA2MSA3OSAwYSAwMCAgMDAgMDAgMDAgMDAgIDAwIDAwIDAwIDAwCisgICAgICAgIFsgNjYyNi4zNzgzNTldIDAyMTA6IDAwIDAwIDAwIDAwICAwMCAwMCAwMCAwMCAgMDAgMDAgMDAgMDAgIDAwIDAwIDAwIDAwCisgICAgICAgIFsgNjYyNi4zODUzNjFdIFsuLi5dCisgICAgICAgIFsgNjYyNi4zODczMDhdIDE4MDA6IDcwIDZjIDYxIDYzICA2NSA2OCA2ZiA2YyAgNjQgNjUgNzIgZmYgIGZmIGZmIGZmIGZmCisgICAgICAgIFsgNjYyNi4zOTQyNTldIDE4MTA6IGZmIGZmIGZmIGZmICBmZiBmZiBmZiBmZiAgZmYgZmYgZmYgZmYgIGZmIGZmIGZmIGZmCisgICAgICAgIFsgNjYyNi40MDEyNTBdIFsuLi5dCisKK1RoZSBkdW1wIG9mIFNEQiBsb29rcyBsaWtlIHRoZSBmb2xsb3dpbmc7IHRoZSBleGFtcGxlIHNob3dzIHRoZSBzaW1wbGUKK2dvbGRlbiBnYXRld2FyZSBmb3IgdGhlIFNQRUMgY2FyZCwgcmVtb3ZpbmcgdGhlIGxlYWRpbmcgdGltZXN0YW1wcyB0bworZml0IHRoZSBwYWdlOgorCisgICAgICAgIHNwZWMgMDAwMDowMjowMC4wOiBTREI6IDAwMDAwNjUxOmU2YTU0MmM5IFdCNC1Dcm9zc2Jhci1HU0kKKyAgICAgICAgc3BlYyAwMDAwOjAyOjAwLjA6IFNEQjogMDAwMGNlNDI6ZmYwN2ZjNDcgV1ItUGVyaXBoLVN5c2NvbiAoMDAwMDAwMDAtMDAwMDAwZmYpCisgICAgICAgIEZNQzogbWV6emFuaW5lIDA6IDAwMDA6MDI6MDAuMCBvbiBTUEVDCisgICAgICAgIEZNQzogcG9vciBkdW1wIG9mIHNkYiBmaXJzdCBsZXZlbDoKKyAgICAgICAgMDAwMDogNTMgNDQgNDIgMmQgIDAwIDAyIDAxIDAwICAwMCAwMCAwMCAwMCAgMDAgMDAgMDAgMDAKKyAgICAgICAgMDAxMDogMDAgMDAgMDAgMDAgIDAwIDAwIDAxIGZmICAwMCAwMCAwMCAwMCAgMDAgMDAgMDYgNTEKKyAgICAgICAgMDAyMDogZTYgYTUgNDIgYzkgIDAwIDAwIDAwIDAyICAyMCAxMiAwNSAxMSAgNTcgNDIgMzQgMmQKKyAgICAgICAgMDAzMDogNDMgNzIgNmYgNzMgIDczIDYyIDYxIDcyICAyZCA0NyA1MyA0OSAgMjAgMjAgMjAgMDAKKyAgICAgICAgMDA0MDogMDAgMDAgMDEgMDEgIDAwIDAwIDAwIDA3ICAwMCAwMCAwMCAwMCAgMDAgMDAgMDAgMDAKKyAgICAgICAgMDA1MDogMDAgMDAgMDAgMDAgIDAwIDAwIDAwIGZmICAwMCAwMCAwMCAwMCAgMDAgMDAgY2UgNDIKKyAgICAgICAgMDA2MDogZmYgMDcgZmMgNDcgIDAwIDAwIDAwIDAxICAyMCAxMiAwMyAwNSAgNTcgNTIgMmQgNTAKKyAgICAgICAgMDA3MDogNjUgNzIgNjkgNzAgIDY4IDJkIDUzIDc5ICA3MyA2MyA2ZiA2ZSAgMjAgMjAgMjAgMDEKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZnBnYS9mcGdhLW1nci50eHQgYi9Eb2N1bWVudGF0aW9uL2ZwZ2EvZnBnYS1tZ3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlM2U4NGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2ZwZ2EvZnBnYS1tZ3IudHh0CkBAIC0wLDAgKzEsMTcxIEBACitGUEdBIE1hbmFnZXIgQ29yZQorCitBbGFuIFR1bGwgMjAxNQorCitPdmVydmlldworPT09PT09PT0KKworVGhlIEZQR0EgbWFuYWdlciBjb3JlIGV4cG9ydHMgYSBzZXQgb2YgZnVuY3Rpb25zIGZvciBwcm9ncmFtbWluZyBhbiBGUEdBIHdpdGgKK2FuIGltYWdlLiAgVGhlIEFQSSBpcyBtYW51ZmFjdHVyZXIgYWdub3N0aWMuICBBbGwgbWFudWZhY3R1cmVyIHNwZWNpZmljcyBhcmUKK2hpZGRlbiBhd2F5IGluIGEgbG93IGxldmVsIGRyaXZlciB3aGljaCByZWdpc3RlcnMgYSBzZXQgb2Ygb3BzIHdpdGggdGhlIGNvcmUuCitUaGUgRlBHQSBpbWFnZSBkYXRhIGl0c2VsZiBpcyB2ZXJ5IG1hbnVmYWN0dXJlciBzcGVjaWZpYywgYnV0IGZvciBvdXIgcHVycG9zZXMKK2l0J3MganVzdCBiaW5hcnkgZGF0YS4gIFRoZSBGUEdBIG1hbmFnZXIgY29yZSB3b24ndCBwYXJzZSBpdC4KKworCitBUEkgRnVuY3Rpb25zOgorPT09PT09PT09PT09PT0KKworVG8gcHJvZ3JhbSB0aGUgRlBHQSBmcm9tIGEgZmlsZSBvciBmcm9tIGEgYnVmZmVyOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJaW50IGZwZ2FfbWdyX2J1Zl9sb2FkKHN0cnVjdCBmcGdhX21hbmFnZXIgKm1nciwgdTMyIGZsYWdzLAorCQkgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KTsKKworTG9hZCB0aGUgRlBHQSBmcm9tIGFuIGltYWdlIHdoaWNoIGV4aXN0cyBhcyBhIGJ1ZmZlciBpbiBtZW1vcnkuCisKKwlpbnQgZnBnYV9tZ3JfZmlybXdhcmVfbG9hZChzdHJ1Y3QgZnBnYV9tYW5hZ2VyICptZ3IsIHUzMiBmbGFncywKKwkJICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmltYWdlX25hbWUpOworCitMb2FkIHRoZSBGUEdBIGZyb20gYW4gaW1hZ2Ugd2hpY2ggZXhpc3RzIGFzIGEgZmlsZS4gIFRoZSBpbWFnZSBmaWxlIG11c3QgYmUgb24KK3RoZSBmaXJtd2FyZSBzZWFyY2ggcGF0aCAoc2VlIHRoZSBmaXJtd2FyZSBjbGFzcyBkb2N1bWVudGF0aW9uKS4KKworRm9yIGJvdGggdGhlc2UgZnVuY3Rpb25zLCBmbGFncyA9PSAwIGZvciBub3JtYWwgZnVsbCByZWNvbmZpZ3VyYXRpb24gb3IKK0ZQR0FfTUdSX1BBUlRJQUxfUkVDT05GSUcgZm9yIHBhcnRpYWwgcmVjb25maWd1cmF0aW9uLiAgSWYgc3VjY2Vzc2Z1bCwgdGhlIEZQR0EKK2VuZHMgdXAgaW4gb3BlcmF0aW5nIG1vZGUuICBSZXR1cm4gMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZS4KKworCitUbyBnZXQvcHV0IGEgcmVmZXJlbmNlIHRvIGEgRlBHQSBtYW5hZ2VyOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCXN0cnVjdCBmcGdhX21hbmFnZXIgKm9mX2ZwZ2FfbWdyX2dldChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUpOworCisJdm9pZCBmcGdhX21ncl9wdXQoc3RydWN0IGZwZ2FfbWFuYWdlciAqbWdyKTsKKworR2l2ZW4gYSBEVCBub2RlLCBnZXQgYW4gZXhjbHVzaXZlIHJlZmVyZW5jZSB0byBhIEZQR0EgbWFuYWdlciBvciByZWxlYXNlCit0aGUgcmVmZXJlbmNlLgorCisKK1RvIHJlZ2lzdGVyIG9yIHVucmVnaXN0ZXIgdGhlIGxvdyBsZXZlbCBGUEdBLXNwZWNpZmljIGRyaXZlcjoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCWludCBmcGdhX21ncl9yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKm5hbWUsCisJCSAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZwZ2FfbWFuYWdlcl9vcHMgKm1vcHMsCisJCSAgICAgICAgICAgICAgdm9pZCAqcHJpdik7CisKKwl2b2lkIGZwZ2FfbWdyX3VucmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2KTsKKworVXNlIG9mIHRoZXNlIHR3byBmdW5jdGlvbnMgaXMgZGVzY3JpYmVkIGJlbG93IGluICJIb3cgVG8gU3VwcG9ydCBhIG5ldyBGUEdBCitkZXZpY2UuIgorCisKK0hvdyB0byB3cml0ZSBhbiBpbWFnZSBidWZmZXIgdG8gYSBzdXBwb3J0ZWQgRlBHQQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvKiBJbmNsdWRlIHRvIGdldCB0aGUgQVBJICovCisjaW5jbHVkZSA8bGludXgvZnBnYS9mcGdhLW1nci5oPgorCisvKiBkZXZpY2Ugbm9kZSB0aGF0IHNwZWNpZmllcyB0aGUgRlBHQSBtYW5hZ2VyIHRvIHVzZSAqLworc3RydWN0IGRldmljZV9ub2RlICptZ3Jfbm9kZSA9IC4uLgorCisvKiBGUEdBIGltYWdlIGlzIGluIHRoaXMgYnVmZmVyLiAgY291bnQgaXMgc2l6ZSBvZiB0aGUgYnVmZmVyLiAqLworY2hhciAqYnVmID0gLi4uCitpbnQgY291bnQgPSAuLi4KKworLyogZmxhZ3MgaW5kaWNhdGVzIHdoZXRoZXIgdG8gZG8gZnVsbCBvciBwYXJ0aWFsIHJlY29uZmlndXJhdGlvbiAqLworaW50IGZsYWdzID0gMDsKKworaW50IHJldDsKKworLyogR2V0IGV4Y2x1c2l2ZSBjb250cm9sIG9mIEZQR0EgbWFuYWdlciAqLworc3RydWN0IGZwZ2FfbWFuYWdlciAqbWdyID0gb2ZfZnBnYV9tZ3JfZ2V0KG1ncl9ub2RlKTsKKworLyogTG9hZCB0aGUgYnVmZmVyIHRvIHRoZSBGUEdBICovCityZXQgPSBmcGdhX21ncl9idWZfbG9hZChtZ3IsIGZsYWdzLCBidWYsIGNvdW50KTsKKworLyogUmVsZWFzZSB0aGUgRlBHQSBtYW5hZ2VyICovCitmcGdhX21ncl9wdXQobWdyKTsKKworCitIb3cgdG8gd3JpdGUgYW4gaW1hZ2UgZmlsZSB0byBhIHN1cHBvcnRlZCBGUEdBCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvKiBJbmNsdWRlIHRvIGdldCB0aGUgQVBJICovCisjaW5jbHVkZSA8bGludXgvZnBnYS9mcGdhLW1nci5oPgorCisvKiBkZXZpY2Ugbm9kZSB0aGF0IHNwZWNpZmllcyB0aGUgRlBHQSBtYW5hZ2VyIHRvIHVzZSAqLworc3RydWN0IGRldmljZV9ub2RlICptZ3Jfbm9kZSA9IC4uLgorCisvKiBGUEdBIGltYWdlIGlzIGluIHRoaXMgZmlsZSB3aGljaCBpcyBpbiB0aGUgZmlybXdhcmUgc2VhcmNoIHBhdGggKi8KK2NvbnN0IGNoYXIgKnBhdGggPSAiZnBnYS1pbWFnZS05LnJiZiIKKworLyogZmxhZ3MgaW5kaWNhdGVzIHdoZXRoZXIgdG8gZG8gZnVsbCBvciBwYXJ0aWFsIHJlY29uZmlndXJhdGlvbiAqLworaW50IGZsYWdzID0gMDsKKworaW50IHJldDsKKworLyogR2V0IGV4Y2x1c2l2ZSBjb250cm9sIG9mIEZQR0EgbWFuYWdlciAqLworc3RydWN0IGZwZ2FfbWFuYWdlciAqbWdyID0gb2ZfZnBnYV9tZ3JfZ2V0KG1ncl9ub2RlKTsKKworLyogR2V0IHRoZSBmaXJtd2FyZSBpbWFnZSAocGF0aCkgYW5kIGxvYWQgaXQgdG8gdGhlIEZQR0EgKi8KK3JldCA9IGZwZ2FfbWdyX2Zpcm13YXJlX2xvYWQobWdyLCBmbGFncywgcGF0aCk7CisKKy8qIFJlbGVhc2UgdGhlIEZQR0EgbWFuYWdlciAqLworZnBnYV9tZ3JfcHV0KG1ncik7CisKKworSG93IHRvIHN1cHBvcnQgYSBuZXcgRlBHQSBkZXZpY2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitUbyBhZGQgYW5vdGhlciBGUEdBIG1hbmFnZXIsIHdyaXRlIGEgZHJpdmVyIHRoYXQgaW1wbGVtZW50cyBhIHNldCBvZiBvcHMuICBUaGUKK3Byb2JlIGZ1bmN0aW9uIGNhbGxzIGZwZ2FfbWdyX3JlZ2lzdGVyKCksIHN1Y2ggYXM6CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZnBnYV9tYW5hZ2VyX29wcyBzb2NmcGdhX2ZwZ2Ffb3BzID0geworICAgICAgIC53cml0ZV9pbml0ID0gc29jZnBnYV9mcGdhX29wc19jb25maWd1cmVfaW5pdCwKKyAgICAgICAud3JpdGUgPSBzb2NmcGdhX2ZwZ2Ffb3BzX2NvbmZpZ3VyZV93cml0ZSwKKyAgICAgICAud3JpdGVfY29tcGxldGUgPSBzb2NmcGdhX2ZwZ2Ffb3BzX2NvbmZpZ3VyZV9jb21wbGV0ZSwKKyAgICAgICAuc3RhdGUgPSBzb2NmcGdhX2ZwZ2Ffb3BzX3N0YXRlLAorfTsKKworc3RhdGljIGludCBzb2NmcGdhX2ZwZ2FfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2OworCXN0cnVjdCBzb2NmcGdhX2ZwZ2FfcHJpdiAqcHJpdjsKKwlpbnQgcmV0OworCisJcHJpdiA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpOworCWlmICghcHJpdikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwkvKiAuLi4gZG8gaW9yZW1hcHMsIGdldCBpbnRlcnJ1cHRzLCBldGMuIGFuZCBzYXZlCisJICAgdGhlbSBpbiBwcml2Li4uICovCisKKwlyZXR1cm4gZnBnYV9tZ3JfcmVnaXN0ZXIoZGV2LCAiQWx0ZXJhIFNPQ0ZQR0EgRlBHQSBNYW5hZ2VyIiwKKwkJCQkgJnNvY2ZwZ2FfZnBnYV9vcHMsIHByaXYpOworfQorCitzdGF0aWMgaW50IHNvY2ZwZ2FfZnBnYV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlmcGdhX21ncl91bnJlZ2lzdGVyKCZwZGV2LT5kZXYpOworCisJcmV0dXJuIDA7Cit9CisKKworVGhlIG9wcyB3aWxsIGltcGxlbWVudCB3aGF0ZXZlciBkZXZpY2Ugc3BlY2lmaWMgcmVnaXN0ZXIgd3JpdGVzIGFyZSBuZWVkZWQgdG8KK2RvIHRoZSBwcm9ncmFtbWluZyBzZXF1ZW5jZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIEZQR0EuICBUaGVzZSBvcHMgcmV0dXJuIDAgZm9yCitzdWNjZXNzIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGVzIG90aGVyd2lzZS4KKworVGhlIHByb2dyYW1taW5nIHNlcXVlbmNlIGlzOgorIDEuIC53cml0ZV9pbml0CisgMi4gLndyaXRlIChtYXkgYmUgY2FsbGVkIG9uY2Ugb3IgbXVsdGlwbGUgdGltZXMpCisgMy4gLndyaXRlX2NvbXBsZXRlCisKK1RoZSAud3JpdGVfaW5pdCBmdW5jdGlvbiB3aWxsIHByZXBhcmUgdGhlIEZQR0EgdG8gcmVjZWl2ZSB0aGUgaW1hZ2UgZGF0YS4KKworVGhlIC53cml0ZSBmdW5jdGlvbiB3cml0ZXMgYSBidWZmZXIgdG8gdGhlIEZQR0EuIFRoZSBidWZmZXIgbWF5IGJlIGNvbnRhaW4gdGhlCit3aG9sZSBGUEdBIGltYWdlIG9yIG1heSBiZSBhIHNtYWxsZXIgY2h1bmsgb2YgYW4gRlBHQSBpbWFnZS4gIEluIHRoZSBsYXR0ZXIKK2Nhc2UsIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGZvciBzdWNjZXNzaXZlIGNodW5rcy4KKworVGhlIC53cml0ZV9jb21wbGV0ZSBmdW5jdGlvbiBpcyBjYWxsZWQgYWZ0ZXIgYWxsIHRoZSBpbWFnZSBoYXMgYmVlbiB3cml0dGVuCit0byBwdXQgdGhlIEZQR0EgaW50byBvcGVyYXRpbmcgbW9kZS4KKworVGhlIG9wcyBpbmNsdWRlIGEgLnN0YXRlIGZ1bmN0aW9uIHdoaWNoIHdpbGwgcmVhZCB0aGUgaGFyZHdhcmUgRlBHQSBtYW5hZ2VyIGFuZAorcmV0dXJuIGEgY29kZSBvZiB0eXBlIGVudW0gZnBnYV9tZ3Jfc3RhdGVzLiAgSXQgZG9lc24ndCByZXN1bHQgaW4gYSBjaGFuZ2UgaW4KK2hhcmR3YXJlIHN0YXRlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mcnYvUkVBRE1FLnR4dCBiL0RvY3VtZW50YXRpb24vZnJ2L1JFQURNRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk4NGZhYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZnJ2L1JFQURNRS50eHQKQEAgLTAsMCArMSw1MSBAQAorCQkgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwkJICAgICAgIEZ1aml0c3UgRlItViBMSU5VWCBET0NVTUVOVEFUSU9OCisJCSAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGRpcmVjdG9yeSBjb250YWlucyBkb2N1bWVudGF0aW9uIGZvciB0aGUgRnVqaXRzdSBGUi1WIENQVSBhcmNoaXRlY3R1cmUKK3BvcnQgb2YgTGludXguCisKK1RoZSBmb2xsb3dpbmcgZG9jdW1lbnRzIGFyZSBhdmFpbGFibGU6CisKKyAoKikgZmVhdHVyZXMudHh0CisKKyAgICAgQSBkZXNjcmlwdGlvbiBvZiB0aGUgYmFzaWMgZmVhdHVyZXMgaW5oZXJlbnQgaW4gdGhpcyBhcmNoaXRlY3R1cmUgcG9ydC4KKworCisgKCopIGNvbmZpZ3VyaW5nLnR4dAorCisgICAgIEEgc3VtbWFyeSBvZiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHBhcnRpY3VsYXIgdG8gdGhpcyBhcmNoaXRlY3R1cmUuCisKKworICgqKSBib290aW5nLnR4dAorCisgICAgIEEgZGVzY3JpcHRpb24gb2YgaG93IHRvIGJvb3QgdGhlIGtlcm5lbCBpbWFnZSBhbmQgYSBzdW1tYXJ5IG9mIHRoZSBrZXJuZWwKKyAgICAgY29tbWFuZCBsaW5lIG9wdGlvbnMuCisKKworICgqKSBnZGJzdHViLnR4dAorCisgICAgIEEgZGVzY3JpcHRpb24gb2YgaG93IHRvIGRlYnVnIHRoZSBrZXJuZWwgdXNpbmcgR0RCIGF0dGFjaGVkIGJ5IHNlcmlhbAorICAgICBwb3J0LCBhbmQgYSBzdW1tYXJ5IG9mIHRoZSBzZXJ2aWNlcyBhdmFpbGFibGUuCisKKworICgqKSBtbXUtbGF5b3V0LnR4dAorCisgICAgIEEgZGVzY3JpcHRpb24gb2YgdGhlIHZpcnR1YWwgYW5kIHBoeXNpY2FsIG1lbW9yeSBsYXlvdXQgdXNlZCBpbiB0aGUKKyAgICAgTU1VIGxpbnV4IGtlcm5lbCwgYW5kIHRoZSByZWdpc3RlcnMgdXNlZCB0byBzdXBwb3J0IGl0LgorCisKKyAoKikgZ2RiaW5pdAorCisgICAgIEFuIGV4YW1wbGUgLmdkYmluaXQgZmlsZSBmb3IgdXNlIHdpdGggR0RCLiBJdCBpbmNsdWRlcyBtYWNyb3MgZm9yIHZpZXdpbmcKKyAgICAgTU1VIHN0YXRlIG9uIHRoZSBGUjQ1MS4gU2VlIG1tdS1sYXlvdXQudHh0IGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisKKyAoKikgY2xvY2sudHh0CisKKyAgICAgQSBkZXNjcmlwdGlvbiBvZiB0aGUgQ1BVIGNsb2NrIHNjYWxpbmcgaW50ZXJmYWNlLgorCisKKyAoKikgYXRvbWljLW9wcy50eHQKKworICAgICBBIGRlc2NyaXB0aW9uIG9mIGhvdyB0aGUgRlItViBrZXJuZWwncyBhdG9taWMgb3BlcmF0aW9ucyB3b3JrLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mcnYvYXRvbWljLW9wcy50eHQgYi9Eb2N1bWVudGF0aW9uL2Zydi9hdG9taWMtb3BzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjYzOGU5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mcnYvYXRvbWljLW9wcy50eHQKQEAgLTAsMCArMSwxMzQgQEAKKwkJCSAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJCQkgICAgICAgRlVKSVRTVSBGUi1WIEtFUk5FTCBBVE9NSUMgT1BFUkFUSU9OUworCQkJICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworT24gdGhlIEZSLVYgQ1BVcywgdGhlcmUgaXMgb25seSBvbmUgYXRvbWljIFJlYWQtTW9kaWZ5LVdyaXRlIG9wZXJhdGlvbjogdGhlIFNXQVAvU1dBUEkKK2luc3RydWN0aW9uLiBVbmZvcnR1bmF0ZWx5LCB0aGlzIGFsb25lIGNhbid0IGJlIHVzZWQgdG8gaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9uczoKKworICgqKSBBdG9taWMgYWRkIHRvIG1lbW9yeQorCisgKCopIEF0b21pYyBzdWJ0cmFjdCBmcm9tIG1lbW9yeQorCisgKCopIEF0b21pYyBiaXQgbW9kaWZpY2F0aW9uIChzZXQsIGNsZWFyIG9yIGludmVydCkKKworICgqKSBBdG9taWMgY29tcGFyZSBhbmQgZXhjaGFuZ2UKKworT24gc3VjaCBDUFVzLCB0aGUgc3RhbmRhcmQgd2F5IG9mIGVtdWxhdGluZyBzdWNoIG9wZXJhdGlvbnMgaW4gdW5pcHJvY2Vzc29yIG1vZGUgaXMgdG8gZGlzYWJsZQoraW50ZXJydXB0cywgYnV0IG9uIHRoZSBGUi1WIENQVXMsIG1vZGlmeWluZyB0aGUgUFNSIHRha2VzIGEgbG90IG9mIGNsb2NrIGN5Y2xlcywgYW5kIGl0IGhhcyB0byBiZQorZG9uZSB0d2ljZS4gVGhpcyBtZWFucyB0aGUgQ1BVIHJ1bnMgZm9yIGEgcmVsYXRpdmVseSBsb25nIHRpbWUgd2l0aCBpbnRlcnJ1cHRzIGRpc2FibGVkLAorcG90ZW50aWFsbHkgaGF2aW5nIGEgZ3JlYXQgZWZmZWN0IG9uIGludGVycnVwdCBsYXRlbmN5LgorCisKKz09PT09PT09PT09PT0KK05FVyBBTEdPUklUSE0KKz09PT09PT09PT09PT0KKworVG8gZ2V0IGFyb3VuZCB0aGlzLCB0aGUgZm9sbG93aW5nIGFsZ29yaXRobSBoYXMgYmVlbiBpbXBsZW1lbnRlZC4gSXQgb3BlcmF0ZXMgaW4gYSB3YXkgc2ltaWxhciB0bwordGhlIExML1NDIGluc3RydWN0aW9uIHBhaXJzIHN1cHBvcnRlZCBvbiBhIG51bWJlciBvZiBwbGF0Zm9ybXMuCisKKyAoKikgVGhlIENDQ1IuQ0MzIHJlZ2lzdGVyIGlzIHJlc2VydmVkIHdpdGhpbiB0aGUga2VybmVsIHRvIGFjdCBhcyBhbiBhdG9taWMgbW9kaWZ5IGFib3J0IGZsYWcuCisKKyAoKikgSW4gdGhlIGV4Y2VwdGlvbiBwcm9sb2d1ZXMgcnVuIG9uIGtlcm5lbC0+a2VybmVsIGVudHJ5LCBDQ0NSLkNDMyBpcyBzZXQgdG8gMCAoVW5kZWZpbmVkCisgICAgIHN0YXRlKS4KKworICgqKSBBbGwgYXRvbWljIG9wZXJhdGlvbnMgY2FuIHRoZW4gYmUgYnJva2VuIGRvd24gaW50byB0aGUgZm9sbG93aW5nIGFsZ29yaXRobToKKworICAgICAoMSkgU2V0IElDQzMuWiB0byB0cnVlIGFuZCBzZXQgQ0MzIHRvIFRydWUgKE9SQ0MvQ0tFUS9PUkNSKS4KKworICAgICAoMikgTG9hZCB0aGUgdmFsdWUgY3VycmVudGx5IGluIHRoZSBtZW1vcnkgdG8gYmUgbW9kaWZpZWQgaW50byBhIHJlZ2lzdGVyLgorCisgICAgICgzKSBNYWtlIGNoYW5nZXMgdG8gdGhlIHZhbHVlLgorCisgICAgICg0KSBJZiBDQzMgaXMgc3RpbGwgVHJ1ZSwgc2ltdWx0YW5lb3VzbHkgYW5kIGF0b21pY2FsbHkgKGJ5IFZMSVcgcGFja2luZyk6CisKKwkgKGEpIFN0b3JlIHRoZSBtb2RpZmllZCB2YWx1ZSBiYWNrIHRvIG1lbW9yeS4KKworCSAoYikgU2V0IElDQzMuWiB0byBmYWxzZSAoQ09SQ0Mgb24gR1IyOSBpcyBzdWZmaWNpZW50IGZvciB0aGlzIC0gR1IyOSBob2xkcyB0aGUgY3VycmVudAorCSAgICAgdGFzayBwb2ludGVyIGluIHRoZSBrZXJuZWwsIGFuZCBzbyBpcyBndWFyYW50ZWVkIHRvIGJlIG5vbi16ZXJvKS4KKworICAgICAoNSkgSWYgSUNDMy5aIGlzIHN0aWxsIHRydWUsIGdvIGJhY2sgdG8gc3RlcCAoMSkuCisKK1RoaXMgd29ya3MgaW4gYSBub24tU01QIGVudmlyb25tZW50IGJlY2F1c2UgYW55IGludGVycnVwdCBvciBvdGhlciBleGNlcHRpb24gdGhhdCBoYXBwZW5zIGJldHdlZW4KK3N0ZXBzICgxKSBhbmQgKDQpIHdpbGwgc2V0IENDMyB0byB0aGUgVW5kZWZpbmVkLCB0aHVzIGFib3J0aW5nIHRoZSBzdG9yZSBpbiAoNGEpLCBhbmQgY2F1c2luZyB0aGUKK2NvbmRpdGlvbiBpbiBJQ0MzIHRvIHJlbWFpbiB3aXRoIHRoZSBaIGZsYWcgc2V0LCB0aHVzIGNhdXNpbmcgc3RlcCAoNSkgdG8gbG9vcCBiYWNrIHRvIHN0ZXAgKDEpLgorCisKK1RoaXMgYWxnb3JpdGhtIHN1ZmZlcnMgZnJvbSB0d28gcHJvYmxlbXM6CisKKyAoMSkgVGhlIGNvbmRpdGlvbiBDQ0NSLkNDMyBpcyBjbGVhcmVkIHVuY29uZGl0aW9uYWxseSBieSBhbiBleGNlcHRpb24sIGlycmVzcGVjdGl2ZSBvZiB3aGV0aGVyIG9yCisgICAgIG5vdCBhbnkgY2hhbmdlcyB3ZXJlIG1hZGUgdG8gdGhlIHRhcmdldCBtZW1vcnkgbG9jYXRpb24gZHVyaW5nIHRoYXQgZXhjZXB0aW9uLgorCisgKDIpIFRoZSBicmFuY2ggZnJvbSBzdGVwICg1KSBiYWNrIHRvIHN0ZXAgKDEpIG1heSBoYXZlIHRvIGhhcHBlbiBtb3JlIHRoYW4gb25jZSB1bnRpbCB0aGUgc3RvcmUKKyAgICAgbWFuYWdlcyB0byB0YWtlIHBsYWNlLiBJbiB0aGVvcnksIHRoaXMgbG9vcCBjb3VsZCBjeWNsZSBmb3JldmVyIGJlY2F1c2UgdGhlcmUgYXJlIHRvbyBtYW55CisgICAgIGludGVycnVwdHMgY29taW5nIGluLCBidXQgaXQncyB1bmxpa2VseS4KKworCis9PT09PT09CitFWEFNUExFCis9PT09PT09CisKK1Rha2luZyBhbiBleGFtcGxlIGZyb20gaW5jbHVkZS9hc20tZnJ2L2F0b21pYy5oOgorCisJc3RhdGljIGlubGluZSBpbnQgYXRvbWljX2FkZF9yZXR1cm4oaW50IGksIGF0b21pY190ICp2KQorCXsKKwkJdW5zaWduZWQgbG9uZyB2YWw7CisKKwkJYXNtKCIwOgkJCQkJCVxuIgorCitJdCBzdGFydHMgYnkgc2V0dGluZyBJQ0MzLlogdG8gdHJ1ZSBmb3IgbGF0ZXIgdXNlLCBhbmQgYWxzbyB0cmFuc2Zvcm1pbmcgdGhhdCBpbnRvIENDMyBiZWluZyBpbiB0aGUKK1RydWUgc3RhdGUuCisKKwkJICAgICIJb3JjYwkJZ3IwLGdyMCxncjAsaWNjMwlcbiIJPC0tICgxKQorCQkgICAgIglja2VxCQlpY2MzLGNjNwkJXG4iCTwtLSAoMSkKKworVGhlbiBpdCBkb2VzIHRoZSBsb2FkLiBOb3RlIHRoYXQgdGhlIGZpbmFsIHBoYXNlIG9mIHN0ZXAgKDEpIGlzIGRvbmUgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUKK2xvYWQuIFRoZSBWTElXIHBhY2tpbmcgZW5zdXJlcyB0aGV5IGFyZSBkb25lIHNpbXVsdGFuZW91c2x5LiBUaGUgIi5wIiBvbiB0aGUgbG9hZCBtdXN0IG5vdCBiZQorcmVtb3ZlZCB3aXRob3V0IHN3YXBwaW5nIHRoZSBvcmRlciBvZiB0aGVzZSB0d28gaW5zdHJ1Y3Rpb25zLgorCisJCSAgICAiCWxkLnAJCSVNMCwlMQkJCVxuIgk8LS0gKDIpCisJCSAgICAiCW9yY3IJCWNjNyxjYzcsY2MzCQlcbiIJPC0tICgxKQorCitUaGVuIHRoZSBwcm9wb3NlZCBtb2RpZmljYXRpb24gaXMgZ2VuZXJhdGVkLiBOb3RlIHRoYXQgdGhlIG9sZCB2YWx1ZSBjYW4gYmUgcmV0YWluZWQgaWYgcmVxdWlyZWQKKyhzdWNoIGFzIGluIHRlc3RfYW5kX3NldF9iaXQoKSkuCisKKwkJICAgICIJYWRkJUkyCQklMSwlMiwlMQkJXG4iCTwtLSAoMykKKworVGhlbiBpdCBhdHRlbXB0cyB0byBzdG9yZSB0aGUgdmFsdWUgYmFjaywgY29udGluZ2VudCBvbiBubyBleGNlcHRpb24gaGF2aW5nIGNsZWFyZWQgQ0MzIHNpbmNlIGl0Cit3YXMgc2V0IHRvIFRydWUuCisKKwkJICAgICIJY3N0LnAJCSUxLCVNMAkJLGNjMywjMQlcbiIJPC0tICg0YSkKKworSXQgc2ltdWx0YW5lb3VzbHkgcmVjb3JkcyB0aGUgc3VjY2VzcyBvciBmYWlsdXJlIG9mIHRoZSBzdG9yZSBpbiBJQ0MzLlouCisKKwkJICAgICIJY29yY2MJCWdyMjksZ3IyOSxncjAJLGNjMywjMQlcbiIJPC0tICg0YikKKworU3VjaCB0aGF0IHRoZSBicmFuY2ggY2FuIHRoZW4gYmUgdGFrZW4gaWYgdGhlIG9wZXJhdGlvbiB3YXMgYWJvcnRlZC4KKworCQkgICAgIgliZXEJCWljYzMsIzAsMGIJCVxuIgk8LS0gKDUpCisJCSAgICA6ICIrVSIodi0+Y291bnRlciksICI9JnIiKHZhbCkKKwkJICAgIDogIk5QciIoaSkKKwkJICAgIDogIm1lbW9yeSIsICJjYzciLCAiY2MzIiwgImljYzMiCisJCSAgICApOworCisJCXJldHVybiB2YWw7CisJfQorCisKKz09PT09PT09PT09PT0KK0NPTkZJR1VSQVRJT04KKz09PT09PT09PT09PT0KKworVGhlIGF0b21pYyBvcHMgaW1wbGVtZW50YXRpb24gY2FuIGJlIG1hZGUgaW5saW5lIG9yIG91dC1vZi1saW5lIGJ5IGNoYW5naW5nIHRoZQorQ09ORklHX0ZSVl9PVVRPRkxJTkVfQVRPTUlDX09QUyBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiBNYWtpbmcgaXQgb3V0LW9mLWxpbmUgaGFzIGEgbnVtYmVyIG9mCithZHZhbnRhZ2VzOgorCisgLSBUaGUgcmVzdWx0aW5nIGtlcm5lbCBpbWFnZSBtYXkgYmUgc21hbGxlcgorIC0gRGVidWdnaW5nIGlzIGVhc2llciBhcyBhdG9taWMgb3BzIGNhbiBqdXN0IGJlIHN0ZXBwZWQgb3ZlciBhbmQgdGhleSBjYW4gYmUgYnJlYWtwb2ludGVkCisKK0tlZXBpbmcgaXQgaW5saW5lIGFsc28gaGFzIGEgbnVtYmVyIG9mIGFkdmFudGFnZXM6CisKKyAtIFRoZSByZXN1bHRpbmcga2VybmVsIG1heSBiZSBGYXN0ZXIKKyAgIC0gbm8gb3V0LW9mLWxpbmUgZnVuY3Rpb24gY2FsbHMgbmVlZCB0byBiZSBtYWRlCisgICAtIHRoZSBjb21waWxlciBkb2Vzbid0IGhhdmUgaGFsZiBpdHMgcmVnaXN0ZXJzIGNsb2JiZXJlZCBieSBtYWtpbmcgYSBjYWxsCisKK1RoZSBvdXQtb2YtbGluZSBpbXBsZW1lbnRhdGlvbnMgbGl2ZSBpbiBhcmNoL2Zydi9saWIvYXRvbWljLW9wcy5TLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mcnYvYm9vdGluZy50eHQgYi9Eb2N1bWVudGF0aW9uL2Zydi9ib290aW5nLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmRmNGI0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9mcnYvYm9vdGluZy50eHQKQEAgLTAsMCArMSwxODIgQEAKKwkJCSAgPT09PT09PT09PT09PT09PT09PT09PT09PQorCQkJICBCT09USU5HIEZSLVYgTElOVVggS0VSTkVMCisJCQkgID09PT09PT09PT09PT09PT09PT09PT09PT0KKworPT09PT09PT09PT09PT09PT09PT09PQorUFJPVklESU5HIEEgRklMRVNZU1RFTQorPT09PT09PT09PT09PT09PT09PT09PQorCitGaXJzdCBvZiBhbGwsIGEgcm9vdCBmaWxlc3lzdGVtIG11c3QgYmUgbWFkZSBhdmFpbGFibGUuIFRoaXMgY2FuIGJlIGRvbmUgaW4KK29uZSBvZiB0d28gd2F5czoKKworICAoMSkgTkZTIEV4cG9ydAorCisgICAgICBBIGZpbGVzeXN0ZW0gc2hvdWxkIGJlIGNvbnN0cnVjdGVkIGluIGEgZGlyZWN0b3J5IG9uIGFuIE5GUyBzZXJ2ZXIgdGhhdAorICAgICAgdGhlIHRhcmdldCBib2FyZCBjYW4gcmVhY2guIFRoaXMgZGlyZWN0b3J5IHNob3VsZCB0aGVuIGJlIE5GUyBleHBvcnRlZAorICAgICAgc3VjaCB0aGF0IHRoZSB0YXJnZXQgYm9hcmQgY2FuIHJlYWQgYW5kIHdyaXRlIGludG8gaXQgYXMgcm9vdC4KKworICAoMikgRmxhc2ggRmlsZXN5c3RlbSAoSkZGUzIgUmVjb21tZW5kZWQpCisKKyAgICAgIEluIHRoaXMgY2FzZSwgdGhlIGltYWdlIG11c3QgYmUgc3RvcmVkIG9yIGJ1aWx0IHVwIG9uIGZsYXNoIGJlZm9yZSBpdAorICAgICAgY2FuIGJlIHVzZWQuIEEgY29tcGxldGUgaW1hZ2UgY2FuIGJlIGJ1aWx0IHVzaW5nIHRoZSBta2ZzLmpmZnMyIG9yCisgICAgICBzaW1pbGFyIHByb2dyYW0gYW5kIHRoZW4gZG93bmxvYWRlZCBhbmQgc3RvcmVkIGludG8gZmxhc2ggYnkgUmVkQm9vdC4KKworCis9PT09PT09PT09PT09PT09PT09PT09PT0KK0xPQURJTkcgVEhFIEtFUk5FTCBJTUFHRQorPT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBrZXJuZWwgd2lsbCBuZWVkIHRvIGJlIGxvYWRlZCBpbnRvIFJBTSBieSBSZWRCb290IChvciBieSBzb21lIGFsdGVybmF0aXZlCitib290IGxvYWRlcikgYmVmb3JlIGl0IGNhbiBiZSBydW4uIFRoZSBrZXJuZWwgaW1hZ2UgKGFyY2gvZnJ2L2Jvb3QvSW1hZ2UpIG1heQorYmUgbG9hZGVkIGluIG9uZSBvZiB0aHJlZSB3YXlzOgorCisgICgxKSBMb2FkIGZyb20gRmxhc2gKKworICAgICAgVGhpcyBpcyB0aGUgc2ltcGxlc3QuIFJlZEJvb3QgY2FuIHN0b3JlIGFuIGltYWdlIGluIHRoZSBmbGFzaCAoc2VlIHRoZQorICAgICAgUmVkQm9vdCBkb2N1bWVudGF0aW9uKSBhbmQgdGhlbiBsb2FkIGl0IGJhY2sgaW50byBSQU0uIFJlZEJvb3Qga2VlcHMKKyAgICAgIHRyYWNrIG9mIHRoZSBsb2FkIGFkZHJlc3MsIGVudHJ5IHBvaW50IGFuZCBzaXplLCBzbyB0aGUgY29tbWFuZCB0byBkbworICAgICAgdGhpcyBpcyBzaW1wbHk6CisKKwlmaXMgbG9hZCBsaW51eAorCisgICAgICBUaGUgaW1hZ2UgaXMgdGhlbiByZWFkeSB0byBiZSBleGVjdXRlZC4KKworICAoMikgTG9hZCBieSBURlRQCisKKyAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCB3aWxsIGRvd25sb2FkIGEgcmF3IGJpbmFyeSBrZXJuZWwgaW1hZ2UgZnJvbSB0aGUKKyAgICAgIGRlZmF1bHQgc2VydmVyIChhcyBuZWdvdGlhdGVkIGJ5IEJPT1RQKSBhbmQgc3RvcmUgaXQgaW50byBSQU06CisKKwlsb2FkIC1iIDB4MDAxMDAwMDAgLXIgL3RmdHBib290L2ltYWdlLmJpbgorCisgICAgICBUaGUgaW1hZ2UgaXMgdGhlbiByZWFkeSB0byBiZSBleGVjdXRlZC4KKworICAoMykgTG9hZCBieSBZLU1vZGVtCisKKyAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCB3aWxsIGRvd25sb2FkIGEgcmF3IGJpbmFyeSBrZXJuZWwgaW1hZ2UgYWNyb3NzIHRoZQorICAgICAgc2VyaWFsIHBvcnQgdGhhdCBSZWRCb290IGlzIGN1cnJlbnRseSB1c2luZzoKKworCWxvYWQgLW0geW1vZGVtIC1iIDB4MDAxMDAwMDAgLXIgekltYWdlCisKKyAgICAgIFRoZSBzZXJpYWwgY2xpZW50IChzdWNoIGFzIG1pbmljb20pIG11c3QgdGhlbiBiZSB0b2xkIHRvIHRyYW5zbWl0IHRoZQorICAgICAgcHJvZ3JhbSBieSBZLU1vZGVtLgorCisgICAgICBXaGVuIGZpbmlzaGVkLCB0aGUgaW1hZ2Ugd2lsbCB0aGVuIGJlIHJlYWR5IHRvIGJlIGV4ZWN1dGVkLgorCisKKz09PT09PT09PT09PT09PT09PQorQk9PVElORyBUSEUgS0VSTkVMCis9PT09PT09PT09PT09PT09PT0KKworQm9vdCB0aGUgaW1hZ2Ugd2l0aCB0aGUgZm9sbG93aW5nIFJlZEJvb3QgY29tbWFuZDoKKworCWV4ZWMgLWMgIjxDTURMSU5FPiIgMHgwMDEwMDAwMAorCitGb3IgZXhhbXBsZToKKworCWV4ZWMgLWMgImNvbnNvbGU9dHR5U00wLDExNTIwMCBpcD06Ojo6OmRoY3Agcm9vdD0vZGV2L210ZGJsb2NrMiBydyIKKworVGhpcyB3aWxsIHN0YXJ0IHRoZSBrZXJuZWwgcnVubmluZy4gTm90ZSB0aGF0IGlmIHRoZSBHREItc3R1YiBpcyBjb21waWxlZCBpbiwKK3RoZW4gdGhlIGtlcm5lbCB3aWxsIGltbWVkaWF0ZWx5IHdhaXQgZm9yIEdEQiB0byBjb25uZWN0IG92ZXIgc2VyaWFsIGJlZm9yZQorZG9pbmcgYW55dGhpbmcgZWxzZS4gU2VlIHRoZSBzZWN0aW9uIG9uIGtlcm5lbCBkZWJ1Z2dpbmcgd2l0aCBHREIuCisKK1RoZSBrZXJuZWwgY29tbWFuZCBsaW5lIDxDTURMSU5FPiB0ZWxscyB0aGUga2VybmVsIHdoZXJlIGl0cyBjb25zb2xlIGlzIGFuZAoraG93IHRvIGZpbmQgaXRzIHJvb3QgZmlsZXN5c3RlbS4gVGhpcyBpcyBtYWRlIHVwIG9mIHRoZSBmb2xsb3dpbmcgY29tcG9uZW50cywKK3NlcGFyYXRlZCBieSBzcGFjZXM6CisKKyAgKCopIGNvbnNvbGU9dHR5Uzx4PlssPGJhdWQ+WzxwYXJpdHk+WzxiaXRzPls8Zmxvdz5dXV1dCisKKyAgICAgIFRoaXMgc3BlY2lmaWVzIHRoYXQgdGhlIHN5c3RlbSBjb25zb2xlIHNob3VsZCBvdXRwdXQgdGhyb3VnaCBvbi1jaGlwCisgICAgICBzZXJpYWwgcG9ydCA8eD4gKHdoaWNoIGNhbiBiZSAiMCIgb3IgIjEiKS4KKworICAgICAgPGJhdWQ+IGlzIGEgc3RhbmRhcmQgYmF1ZCByYXRlIGJldHdlZW4gMTIwMCBhbmQgMTE1MjAwIChkZWZhdWx0IDk2MDApLgorCisgICAgICA8cGFyaXR5PiBpcyBhIHBhcml0eSBzZXR0aW5nIG9mICJOIiwgIk8iLCAiRSIsICJNIiBvciAiUyIgZm9yIE5vbmUsIE9kZCwKKyAgICAgIEV2ZW4sIE1hcmsgb3IgU3BhY2UuICJOb25lIiBpcyB0aGUgZGVmYXVsdC4KKworICAgICAgPHN0b3A+IGlzICI3IiBvciAiOCIgZm9yIHRoZSBudW1iZXIgb2YgYml0cyBwZXIgY2hhcmFjdGVyLiAiOCIgaXMgdGhlCisgICAgICBkZWZhdWx0LgorCisgICAgICA8Zmxvdz4gaXMgInIiIHRvIHVzZSBmbG93IGNvbnRyb2wgKFhDVFMgb24gc2VyaWFsIHBvcnQgMiBvbmx5KS4gVGhlCisgICAgICBkZWZhdWx0IGlzIHRvIG5vdCB1c2UgZmxvdyBjb250cm9sLgorCisgICAgICBGb3IgZXhhbXBsZToKKworCWNvbnNvbGU9dHR5UzAsMTE1MjAwCisKKyAgICAgIFRvIHVzZSB0aGUgZmlyc3Qgb24tY2hpcCBzZXJpYWwgcG9ydCBhdCBiYXVkIHJhdGUgMTE1MjAwLCBubyBwYXJpdHksIDgKKyAgICAgIGJpdHMsIGFuZCBubyBmbG93IGNvbnRyb2wuCisKKyAgKCopIHJvb3Q9PHh4eHg+CisKKyAgICAgIFRoaXMgc3BlY2lmaWVzIHRoZSBkZXZpY2UgdXBvbiB3aGljaCB0aGUgcm9vdCBmaWxlc3lzdGVtIHJlc2lkZXMuIEl0CisgICAgICBtYXkgYmUgc3BlY2lmaWVkIGJ5IG1ham9yIGFuZCBtaW5vciBudW1iZXIsIGRldmljZSBwYXRoLCBvciBldmVuCisgICAgICBwYXJ0aXRpb24gdXVpZCwgaWYgc3VwcG9ydGVkLiAgRm9yIGV4YW1wbGU6CisKKwkvZGV2L25mcwlORlMgcm9vdCBmaWxlc3lzdGVtCisJL2Rldi9tdGRibG9jazMJRm91cnRoIFJlZEJvb3QgcGFydGl0aW9uIG9uIHRoZSBTeXN0ZW0gRmxhc2gKKwlQQVJUVVVJRD0wMDExMjIzMy00NDU1LTY2NzctODg5OS1BQUJCQ0NEREVFRkYvUEFSVE5ST0ZGPTEKKwkJZmlyc3QgcGFydGl0aW9uIGFmdGVyIHRoZSBwYXJ0aXRpb24gd2l0aCB0aGUgZ2l2ZW4gVVVJRAorCTI1MzowCQlEZXZpY2Ugd2l0aCBtYWpvciAyNTMgYW5kIG1pbm9yIDAKKworICAgICAgQXV0aG9yaXRhdGl2ZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4KKyAgICAgICJEb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCIuCisKKyAgKCopIHJ3CisKKyAgICAgIFN0YXJ0IHdpdGggdGhlIHJvb3QgZmlsZXN5c3RlbSBtb3VudGVkIFJlYWQvV3JpdGUuCisKKyAgVGhlIHJlbWFpbmluZyBjb21wb25lbnRzIGFyZSBhbGwgb3B0aW9uYWw6CisKKyAgKCopIGlwPTxpcD46Ojo6PGhvc3Q+OjxpZmFjZT46PGNmZz4KKworICAgICAgQ29uZmlndXJlIHRoZSBuZXR3b3JrIGludGVyZmFjZS4gSWYgPGNmZz4gaXMgIm9mZiIgdGhlbiA8aXA+IHNob3VsZAorICAgICAgc3BlY2lmeSB0aGUgSVAgYWRkcmVzcyBmb3IgdGhlIG5ldHdvcmsgZGV2aWNlIDxpZmFjZT4uIDxob3N0PiBwcm92aWRlCisgICAgICB0aGUgaG9zdG5hbWUgZm9yIHRoZSBkZXZpY2UuCisKKyAgICAgIElmIDxjZmc+IGlzICJib290cCIgb3IgImRoY3AiLCB0aGVuIGFsbCBvZiB0aGVzZSBwYXJhbWV0ZXJzIHdpbGwgYmUKKyAgICAgIGRpc2NvdmVyZWQgYnkgY29uc3VsdGluZyBhIEJPT1RQIG9yIERIQ1Agc2VydmVyLgorCisgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBtaWdodCBiZSB1c2VkOgorCisJaXA9MTkyLjE2OC43My4xMjo6OjpmcnY6ZXRoMDpvZmYKKworICAgICAgVGhpcyBzZXRzIHRoZSBJUCBhZGRyZXNzIG9uIHRoZSBWREsgbW90aGVyYm9hcmQgUlRMODAyOSBldGhlcm5ldCBjaGlwc2V0CisgICAgICAoZXRoMCkgdG8gYmUgMTkyLjE2OC43My4xMiwgYW5kIHNldHMgdGhlIGJvYXJkJ3MgaG9zdG5hbWUgdG8gYmUgImZydiIuCisKKyAgKCopIG5mc3Jvb3Q9PHNlcnZlcj46PGRpcj5bLHY8dmVycz5dCisKKyAgICAgIFRoaXMgaXMgbWFuZGF0b3J5IGlmICJyb290PS9kZXYvbmZzIiBpcyBnaXZlbiBhcyBhbiBvcHRpb24uIEl0IHRlbGxzIHRoZQorICAgICAga2VybmVsIHRoZSBJUCBhZGRyZXNzIG9mIHRoZSBORlMgc2VydmVyIHByb3ZpZGluZyBpdHMgcm9vdCBmaWxlc3lzdGVtLAorICAgICAgYW5kIHRoZSBwYXRobmFtZSBvbiB0aGF0IHNlcnZlciBvZiB0aGUgZmlsZXN5c3RlbS4KKworICAgICAgVGhlIE5GUyB2ZXJzaW9uIHRvIHVzZSBjYW4gYWxzbyBiZSBzcGVjaWZpZWQuIHYyIGFuZCB2MyBhcmUgc3VwcG9ydGVkIGJ5CisgICAgICBMaW51eC4KKworICAgICAgRm9yIGV4YW1wbGU6CisKKwluZnNyb290PTE5Mi4xNjguNzMuMTovbmZzcm9vdC1mcnYKKworICAoKikgcHJvZmlsZT0xCisKKyAgICAgIFR1cm5zIG9uIHRoZSBrZXJuZWwgcHJvZmlsZXIgKGFjY2Vzc2libGUgdGhyb3VnaCAvcHJvYy9wcm9maWxlKS4KKworICAoKikgY29uc29sZT1nZGIwCisKKyAgICAgIFRoaXMgY2FuIGJlIHVzZWQgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlICJjb25zb2xlPXR0eVMuLi4iIGxpc3RlZAorICAgICAgYWJvdmUuIEkgdGVsbHMgdGhlIGtlcm5lbCB0byBwYXNzIHRoZSBjb25zb2xlIG91dHB1dCB0byBHREIgaWYgdGhlCisgICAgICBnZGJzdHViIGlzIGNvbXBpbGVkIGluIHRvIHRoZSBrZXJuZWwuCisKKyAgICAgIElmIHRoaXMgaXMgdXNlZCwgdGhlbiB0aGUgZ2Ric3R1YiBwYXNzZXMgdGhlIHRleHQgdG8gR0RCLCB3aGljaCB0aGVuCisgICAgICBzaW1wbHkgZHVtcHMgaXQgdG8gaXRzIHN0YW5kYXJkIG91dHB1dC4KKworICAoKikgbWVtPTx4eHg+TQorCisgICAgICBOb3JtYWxseSB0aGUga2VybmVsIHdpbGwgd29yayBvdXQgaG93IG11Y2ggU0RSQU0gaXQgaGFzIGJ5IHJlYWRpbmcgdGhlCisgICAgICBTRFJBTSBjb250cm9sbGVyIHJlZ2lzdGVycy4gVGhhdCBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIHRoaXMKKyAgICAgIG9wdGlvbi4gVGhpcyBhbGxvd3MgdGhlIGtlcm5lbCB0byBiZSB0b2xkIHRoYXQgaXQgaGFzIDx4eHg+IG1lZ2FieXRlcyBvZgorICAgICAgbWVtb3J5IGF2YWlsYWJsZS4KKworICAoKikgaW5pdD08cHJvZz4gWzxhcmc+IFs8YXJnPiBbPGFyZz4gLi4uXV1dCisKKyAgICAgIFRoaXMgdGVsbHMgdGhlIGtlcm5lbCB3aGF0IHByb2dyYW0gdG8gcnVuIGluaXRpYWxseS4gQnkgZGVmYXVsdCB0aGlzIGlzCisgICAgICAvc2Jpbi9pbml0LCBidXQgL3NiaW4vc2FzaCBvciAvYmluL3NoIGFyZSBjb21tb24gYWx0ZXJuYXRpdmVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mcnYvY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9mcnYvY2xvY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MmQzNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Zydi9jbG9jay50eHQKQEAgLTAsMCArMSw2NSBAQAorQ2xvY2sgc2NhbGluZworLS0tLS0tLS0tLS0tLQorCitUaGUga2VybmVsIHN1cHBvcnRzIHNjYWxpbmcgb2YgQ0xDSy5DTU9ERSwgQ0xDSy5DTSBhbmQgQ0xLQy5QMCBjbG9jaworcmVnaXN0ZXJzLiBJZiBidWlsdCB3aXRoIENPTkZJR19QTSBhbmQgQ09ORklHX1NZU0NUTCBvcHRpb25zIGVuYWJsZWQsIGZvdXIKK2V4dHJhIGZpbGVzIHdpbGwgYXBwZWFyIGluIHRoZSBkaXJlY3RvcnkgL3Byb2Mvc3lzL3BtLy4gUmVhZGluZyB0aGVzZSBmaWxlcword2lsbCBzaG93OgorCisgICAgICBwMAkJLS0gY3VycmVudCB2YWx1ZSBvZiB0aGUgUDAgYml0IGluIENMS0MgcmVnaXN0ZXIuCisgICAgICBjbQkJLS0gY3VycmVudCB2YWx1ZSBvZiB0aGUgQ00gYml0cyBpbiBDTEtDIHJlZ2lzdGVyLgorICAgICAgY21vZGUJCS0tIGN1cnJlbnQgdmFsdWUgb2YgdGhlIENNT0RFIGJpdHMgaW4gQ0xLQyByZWdpc3Rlci4KKworT24gYWxsIGJvYXJkcywgdGhlICdwMCcgZmlsZSBzaG91bGQgYWxzbyBiZSB3cml0YWJsZSwgYW5kIGVpdGhlciAnMScgb3IgJzAnCitjYW4gYmUgcmV3cml0dGVuLCB0byBzZXQgb3IgY2xlYXIgdGhlIENMS0NfUDAgYml0IHJlc3BlY3RpdmVseSwgaGVuY2UKK2NvbnRyb2xsaW5nIHdoZXRoZXIgdGhlIHJlc291cmNlIGJ1cyByYXRlIGNsb2NrIGlzIGhhbHZlZC4KKworVGhlICdjbScgZmlsZSBzaG91bGQgYWxzbyBiZSBhdmFpbGFibGUgb24gYWxsIGJvYXJkcy4gJzAnIGNhbiBiZSB3cml0dGVuIHRvIGl0Cit0byBzaGlmdCB0aGUgYm9hcmQgaW50byBIaWdoLVNwZWVkIG1vZGUgKG5vcm1hbCksIGFuZCAnMScgY2FuIGJlIHdyaXR0ZW4gdG8KK3NoaWZ0IHRoZSBib2FyZCBpbnRvIE1lZGl1bS1TcGVlZCBtb2RlLiBTZWxlY3RpbmcgTG93LVNwZWVkIG1vZGUgaXMgbm90CitzdXBwb3J0ZWQgYnkgdGhpcyBpbnRlcmZhY2UsIGV2ZW4gdGhvdWdoIHNvbWUgQ1BVcyBkbyBzdXBwb3J0IGl0LgorCitPbiB0aGUgYm9hcmRzIHdpdGggRlI0MDUgQ1BVIChpLmUuIENCNjAgYW5kIENCNzApLCB0aGUgJ2Ntb2RlJyBmaWxlIGlzIGFsc28KK3dyaXRhYmxlLCBhbGxvd2luZyB0aGUgQ1BVIGNvcmUgc3BlZWQgKGFuZCBvdGhlciBjbG9jayBzcGVlZHMpIHRvIGJlCitjb250cm9sbGVkIGZyb20gdXNlcnNwYWNlLgorCisKK0RldGVybWluaW5nIGN1cnJlbnQgYW5kIHBvc3NpYmxlIHNldHRpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgY3VycmVudCBzdGF0ZSBhbmQgdGhlIGF2YWlsYWJsZSBtYXNrcyBjYW4gYmUgZm91bmQgaW4gL3Byb2MvY3B1aW5mby4gRm9yCitleGFtcGxlLCBvbiB0aGUgQ0I3MDoKKworCSMgY2F0IC9wcm9jL2NwdWluZm8KKwlDUFUtU2VyaWVzOiAgICAgZnI0MDAKKwlDUFUtQ29yZTogICAgICAgZnI0MDUsIGdyMC0zMSwgQkUsIENDQ1IKKwlDUFU6ICAgICAgICAgICAgbWI5MzQwNQorCU1NVTogICAgICAgICAgICBQcm90CisJRlAtTWVkaWE6ICAgICAgIGZyMC0zMSwgTWVkaWEKKwlTeXN0ZW06ICAgICAgICAgbWI5MzA5MS1jYjcwLCBtYjkzMDkwLW1iMDAKKwlQTS1Db250cm9sczogICAgY21vZGU9MHhkMzFmLCBjbT0weDMsIHAwPTB4Mywgc3VzcGVuZD0weDkKKwlQTS1TdGF0dXM6ICAgICAgY21vZGU9MywgY209MCwgcDA9MAorCUNsb2NrLUluOiAgICAgICA1MC4wMCBNSHoKKwlDbG9jay1Db3JlOiAgICAgMzAwLjAwIE1IegorCUNsb2NrLVNEUkFNOiAgICAxMDAuMDAgTUh6CisJQ2xvY2stQ0J1czogICAgIDEwMC4wMCBNSHoKKwlDbG9jay1SZXM6ICAgICAgNTAuMDAgTUh6CisJQ2xvY2stRXh0OiAgICAgIDUwLjAwIE1IegorCUNsb2NrLURTVTogICAgICAyNS4wMCBNSHoKKwlCb2dvTWlwczogICAgICAgMzAwLjAwCisKK0FuZCBvbiB0aGUgUERLLCB0aGUgUE0gbGluZXMgbG9vayBsaWtlIHRoZSBmb2xsb3dpbmc6CisKKwlQTS1Db250cm9sczogICAgY209MHgzLCBwMD0weDMsIHN1c3BlbmQ9MHg5CisJUE0tU3RhdHVzOiAgICAgIGNtb2RlPTksIGNtPTAsIHAwPTAKKworVGhlIFBNLUNvbnRyb2xzIGxpbmUsIGlmIHByZXNlbnQsIHdpbGwgaW5kaWNhdGUgd2hpY2ggL3Byb2Mvc3lzL3BtIGZpbGVzIGNhbgorYmUgc2V0IHRvIHdoYXQgdmFsdWVzLiBUaGUgc3BlY2lmaWNhdGlvbiB2YWx1ZXMgYXJlIGJpdG1hc2tzOyBzbywgZm9yIGV4YW1wbGUsCisic3VzcGVuZD0weDkiIGluZGljYXRlcyB0aGF0IDAgYW5kIDMgY2FuIGJlIHdyaXR0ZW4gdmFsaWRseSB0bworL3Byb2Mvc3lzL3BtL3N1c3BlbmQuCisKK1RoZSBQTS1Db250cm9scyBsaW5lIHdpbGwgb25seSBiZSBwcmVzZW50IGlmIENPTkZJR19QTSBpcyBjb25maWd1cmVkIHRvIFkuCisKK1RoZSBQTS1TdGF0dXMgbGluZSBpbmRpY2F0ZXMgd2hpY2ggY2xvY2sgY29udHJvbHMgYXJlIHNldCB0byB3aGljaCB2YWx1ZS4gSWYKK3RoZSBmaWxlIGNhbiBiZSByZWFkLCB0aGVuIHRoZSBzdXNwZW5kIHZhbHVlIG11c3QgYmUgMCwgYW5kIHNvIHRoYXQncyBub3QKK2luY2x1ZGVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mcnYvY29uZmlndXJpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9mcnYvY29uZmlndXJpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZTc2YTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2Zydi9jb25maWd1cmluZy50eHQKQEAgLTAsMCArMSwxMjUgQEAKKwkJICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJCSAgIEZVSklUU1UgRlItViBMSU5VWCBLRVJORUwgQ09ORklHVVJBVElPTgorCQkgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworPT09PT09PT09PT09PT09PT09PT09CitDT05GSUdVUkFUSU9OIE9QVElPTlMKKz09PT09PT09PT09PT09PT09PT09PQorCitUaGUgbW9zdCBpbXBvcnRhbnQgc2V0dGluZyBpcyBpbiB0aGUgIk1NVSBzdXBwb3J0IG9wdGlvbnMiIHRhYiAodGhlIGZpcnN0CitwcmVzZW50ZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gdG9vbHMgYXZhaWxhYmxlKToKKworICgqKSAiS2VybmVsIFR5cGUiCisKKyAgICAgVGhpcyBvcHRpb25zIGFsbG93cyBzZWxlY3Rpb24gb2Ygbm9ybWFsLCBNTVUtcmVxdWlyaW5nIGxpbnV4LCBhbmQgdUNsaW51eAorICAgICAod2hpY2ggZG9lc24ndCByZXF1aXJlIGFuIE1NVSBhbmQgZG9lc24ndCBoYXZlIGludGVyLXByb2Nlc3MgcHJvdGVjdGlvbikuCisKK1RoZXJlIGFyZSBhIG51bWJlciBvZiBzZXR0aW5ncyBpbiB0aGUgIlByb2Nlc3NvciB0eXBlIGFuZCBmZWF0dXJlcyIgc2VjdGlvbiBvZgordGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkLgorCisgKCopICJDUFUiCisKKyAgICAgVGhlIHJlZ2lzdGVyIGFuZCBpbnN0cnVjdGlvbiBzZXRzIGF0IHRoZSBjb3JlIG9mIHRoZSBwcm9jZXNzb3IuIFRoaXMgY2FuCisgICAgIG9ubHkgYmUgc2V0IHRvICJGUjQweC80NXgvNTV4IiBhdCB0aGUgbW9tZW50IC0gYnV0IHRoaXMgcGVybWl0cyB1c2FnZSBvZgorICAgICB0aGUga2VybmVsIHdpdGggTUI5MzA5MSBDQjEwLCBDQjExLCBDQjMwLCBDQjQxLCBDQjYwLCBDQjcwIGFuZCBDQjQ1MQorICAgICBDUFUgYm9hcmRzLCBhbmQgd2l0aCB0aGUgTUI5MzA5MyBQREsgYm9hcmQuCisKKyAoKikgIlN5c3RlbSIKKworICAgICBUaGlzIG9wdGlvbiBhbGxvd3MgYSBjaG9pY2Ugb2YgYmFzaWMgc3lzdGVtLiBUaGlzIGdvdmVybnMgdGhlIHBlcmlwaGVyYWxzCisgICAgIHRoYXQgYXJlIGV4cGVjdGVkIHRvIGJlIGF2YWlsYWJsZS4KKworICgqKSAiTW90aGVyYm9hcmQiCisKKyAgICAgVGhpcyBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgbW90aGVyYm9hcmQgYmVpbmcgdXNlZCwgYW5kIHRoZSBwZXJpcGhlcmFscworICAgICB1cG9uIGl0LiBDdXJyZW50bHkgb25seSAiTUI5MzA5MC1NQjAwIiBjYW4gYmUgc2V0IGhlcmUuCisKKyAoKikgIkRlZmF1bHQgY2FjaGUtd3JpdGUgbW9kZSIKKworICAgICBUaGlzIGNvbnRyb2xzIHRoZSBpbml0aWFsIGRhdGEgY2FjaGUgd3JpdGUgbWFuYWdlbWVudCBtb2RlLiBCeSBkZWZhdWx0CisgICAgIFdyaXRlLVRocm91Z2ggaXMgc2VsZWN0ZWQsIGJ1dCBXcml0ZS1CYWNrIChDb3B5LUJhY2spIGNhbiBhbHNvIGJlCisgICAgIHNlbGVjdGVkLiBUaGlzIGNhbiBiZSBjaGFuZ2VkIGR5bmFtaWNhbGx5IG9uY2UgdGhlIGtlcm5lbCBpcyBydW5uaW5nIChzZWUKKyAgICAgZmVhdHVyZXMudHh0KS4KKworVGhlcmUgYXJlIHNvbWUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiB0aGUgIkdlbmVyYWwKK1NldHVwIiBzZWN0aW9uIG9mIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiB0b286CisKKyAoKikgIlJlc2VydmUgbWVtb3J5IHVuY2FjaGVkIGZvciAoUENJKSBETUEiCisKKyAgICAgVGhpcyByZXF1ZXN0cyB0aGF0IGEgdUNsaW51eCBrZXJuZWwgc2V0IGFzaWRlIHNvbWUgbWVtb3J5IGluIGFuIHVuY2FjaGVkCisgICAgIHdpbmRvdyBmb3IgdGhlIHVzZSBhcyBjb25zaXN0ZW50IERNQSBtZW1vcnkgKG1haW5seSBmb3IgUENJKS4gQXQgbGVhc3QgYQorICAgICBtZWdhYnl0ZSB3aWxsIGJlIGFsbG9jYXRlZCBpbiB0aGlzIHdheSwgcG9zc2libHkgbW9yZS4gQW55IG1lbW9yeSBzbworICAgICByZXNlcnZlZCB3aWxsIG5vdCBiZSBhdmFpbGFibGUgZm9yIG5vcm1hbCBhbGxvY2F0aW9ucy4KKworICgqKSAiS2VybmVsIHN1cHBvcnQgZm9yIEVMRi1GRFBJQyBiaW5hcmllcyIKKworICAgICBUaGlzIGVuYWJsZXMgdGhlIGJpbmFyeS1mb3JtYXQgZHJpdmVyIGZvciB0aGUgbmV3IEZEUElDIEVMRiBiaW5hcmllcyB0aGF0CisgICAgIHRoaXMgcGxhdGZvcm0gbm9ybWFsbHkgdXNlcy4gVGhlc2UgYmluYXJpZXMgYXJlIHRvdGFsbHkgcmVsb2NhdGFibGUgLQorICAgICB0aGVpciBzZXBhcmF0ZSBzZWN0aW9ucyBjYW4gcmVsb2NhdGVkIGluZGVwZW5kZW50bHksIGFsbG93aW5nIHRoZW0gdG8gYmUKKyAgICAgc2hhcmVkIG9uIHVDbGludXggd2hlcmUgcG9zc2libGUuIFRoaXMgc2hvdWxkIG5vcm1hbGx5IGJlIGVuYWJsZWQuCisKKyAoKikgIktlcm5lbCBpbWFnZSBwcm90ZWN0aW9uIgorCisgICAgIFRoaXMgbWFrZXMgdGhlIHByb3RlY3Rpb24gcmVnaXN0ZXIgZ292ZXJuaW5nIGFjY2VzcyB0byB0aGUgY29yZSBrZXJuZWwKKyAgICAgaW1hZ2UgcHJvaGliaXQgYWNjZXNzIGJ5IHVzZXJzcGFjZSBwcm9ncmFtcy4gVGhpcyBvcHRpb24gaXMgYXZhaWxhYmxlIG9uCisgICAgIHVDbGludXggb25seS4KKworVGhlcmUgYXJlIGFsc28gYSBudW1iZXIgb2Ygc2V0dGluZ3MgaW4gdGhlICJLZXJuZWwgSGFja2luZyIgc2VjdGlvbiBvZiB0aGUKK2tlcm5lbCBjb25maWd1cmF0aW9uIGVzcGVjaWFsbHkgZm9yIGRlYnVnZ2luZyBhIGtlcm5lbCBvbiB0aGlzCithcmNoaXRlY3R1cmUuIFNlZSB0aGUgImdkYnN0dWIudHh0IiBmaWxlIGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aG9zZS4KKworCis9PT09PT09PT09PT09PT09PT09PT09CitERUZBVUxUIENPTkZJR1VSQVRJT05TCis9PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBrZXJuZWwgc291cmNlcyBpbmNsdWRlIGEgbnVtYmVyIG9mIGV4YW1wbGUgZGVmYXVsdCBjb25maWd1cmF0aW9uczoKKworICgqKSBkZWZjb25maWctbWI5MzA5MQorCisgICAgIERlZmF1bHQgY29uZmlndXJhdGlvbiBmb3IgdGhlIE1COTMwOTEtVkRLIHdpdGggYm90aCBDUFUgYm9hcmQgYW5kCisgICAgIE1COTMwOTAtTUIwMCBtb3RoZXJib2FyZCBydW5uaW5nIHVDbGludXguCisKKworICgqKSBkZWZjb25maWctbWI5MzA5MS1mYgorCisgICAgIERlZmF1bHQgY29uZmlndXJhdGlvbiBmb3IgdGhlIE1COTMwOTEtVkRLIHdpdGggQ1BVIGJvYXJkLAorICAgICBNQjkzMDkwLU1CMDAgbW90aGVyYm9hcmQsIGFuZCBEQVYgYm9hcmQgcnVubmluZyB1Q2xpbnV4LgorICAgICBJbmNsdWRlcyBmcmFtZWJ1ZmZlciBkcml2ZXIuCisKKworICgqKSBkZWZjb25maWctbWI5MzA5MworCisgICAgIERlZmF1bHQgY29uZmlndXJhdGlvbiBmb3IgdGhlIE1COTMwOTMtUERLIGJvYXJkIHJ1bm5pbmcgdUNsaW51eC4KKworCisgKCopIGRlZmNvbmZpZy1jYjcwLXN0YW5kYWxvbmUKKworICAgICBEZWZhdWx0IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBNQjkzMDkxLVZESyB3aXRoIG9ubHkgQ0I3MCBDUFUgYm9hcmQKKyAgICAgcnVubmluZyB1Q2xpbnV4LiBUaGlzIHdpbGwgdXNlIHRoZSBDQjcwJ3MgRE05MDAwIGZvciBuZXR3b3JrIGFjY2Vzcy4KKworCisgKCopIGRlZmNvbmZpZy1tbXUKKworICAgICBEZWZhdWx0IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBNQjkzMDkxLVZESyB3aXRoIGJvdGggQ0I0NTEgQ1BVIGJvYXJkIGFuZAorICAgICBNQjkzMDkwLU1CMDAgbW90aGVyYm9hcmQgcnVubmluZyBNTVUgbGludXguCisKKyAoKikgZGVmY29uZmlnLW1tdS1hdWRpbworCisgICAgIERlZmF1bHQgY29uZmlndXJhdGlvbiBmb3IgdGhlIE1COTMwOTEtVkRLIHdpdGggQ0I0NTEgQ1BVIGJvYXJkLCBEQVYKKyAgICAgYm9hcmQsIGFuZCBNQjkzMDkwLU1CMDAgbW90aGVyYm9hcmQgcnVubmluZyBNTVUgbGludXguIEluY2x1ZGVzCisgICAgIGF1ZGlvIGRyaXZlci4KKworICgqKSBkZWZjb25maWctbW11LWZiCisKKyAgICAgRGVmYXVsdCBjb25maWd1cmF0aW9uIGZvciB0aGUgTUI5MzA5MS1WREsgd2l0aCBDQjQ1MSBDUFUgYm9hcmQsIERBVgorICAgICBib2FyZCwgYW5kIE1COTMwOTAtTUIwMCBtb3RoZXJib2FyZCBydW5uaW5nIE1NVSBsaW51eC4gSW5jbHVkZXMKKyAgICAgZnJhbWVidWZmZXIgZHJpdmVyLgorCisgKCopIGRlZmNvbmZpZy1tbXUtc3RhbmRhbG9uZQorCisgICAgIERlZmF1bHQgY29uZmlndXJhdGlvbiBmb3IgdGhlIE1COTMwOTEtVkRLIHdpdGggb25seSBDQjQ1MSBDUFUgYm9hcmQKKyAgICAgcnVubmluZyBNTVUgbGludXguCisKKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Zydi9mZWF0dXJlcy50eHQgYi9Eb2N1bWVudGF0aW9uL2Zydi9mZWF0dXJlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmEyMGMwZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZnJ2L2ZlYXR1cmVzLnR4dApAQCAtMCwwICsxLDMxMCBAQAorCQkJID09PT09PT09PT09PT09PT09PT09PT09PT09PQorCQkJIEZVSklUU1UgRlItViBMSU5VWCBGRUFUVVJFUworCQkJID09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGtlcm5lbCBwb3J0IGhhcyBhIG51bWJlciBvZiBmZWF0dXJlcyBvZiB3aGljaCB0aGUgdXNlciBzaG91bGQgYmUgYXdhcmU6CisKKyAoKikgTGludXggYW5kIHVDbGludXgKKworICAgICBUaGUgRlItViBhcmNoaXRlY3R1cmUgcG9ydCBzdXBwb3J0cyBib3RoIG5vcm1hbCBNTVUgbGludXggYW5kIHVDbGludXggb3V0CisgICAgIG9mIHRoZSBzYW1lIHNvdXJjZXMuCisKKworICgqKSBDUFUgc3VwcG9ydAorCisgICAgIFN1cHBvcnQgZm9yIHRoZSBGUjQwMSwgRlI0MDMsIEZSNDA1LCBGUjQ1MSBhbmQgRlI1NTUgQ1BVcyBzaG91bGQgd29yayB3aXRoCisgICAgIHRoZSBzYW1lIHVDbGludXgga2VybmVsIGNvbmZpZ3VyYXRpb24uCisKKyAgICAgSW4gbm9ybWFsIChNTVUpIExpbnV4IG1vZGUsIG9ubHkgdGhlIEZSNDUxIENQVSB3aWxsIHdvcmsgYXMgdGhhdCBpcyB0aGUKKyAgICAgb25seSBvbmUgd2l0aCBhIHN1aXRhYmx5IGZlYXR1cmVkIENQVS4KKworICAgICBUaGUga2VybmVsIGlzIHdyaXR0ZW4gYW5kIGNvbXBpbGVkIHdpdGggdGhlIGFzc3VtcHRpb24gdGhhdCBvbmx5IHRoZQorICAgICBib3R0b20gMzIgR1IgcmVnaXN0ZXJzIGFuZCBubyBGUiByZWdpc3RlcnMgd2lsbCBiZSB1c2VkIGJ5IHRoZSBrZXJuZWwKKyAgICAgaXRzZWxmLCBob3dldmVyIGFsbCBleHRyYSB1c2Vyc3BhY2UgcmVnaXN0ZXJzIHdpbGwgYmUgc2F2ZWQgb24gY29udGV4dAorICAgICBzd2l0Y2guIE5vdGUgdGhhdCBzaW5jZSBtb3N0IENQVXMgY2FuJ3Qgc3VwcG9ydCBsYXp5IHN3aXRjaGluZywgbm8gYXR0ZW1wdAorICAgICBpcyBtYWRlIHRvIGRvIGxhenkgcmVnaXN0ZXIgc2F2aW5nIHdoZXJlIHRoYXQgd291bGQgYmUgcG9zc2libGUgKEZSNTU1CisgICAgIG9ubHkgY3VycmVudGx5KS4KKworCisgKCopIEJvYXJkIHN1cHBvcnQKKworICAgICBUaGUgYm9hcmQgb24gd2hpY2ggdGhlIGtlcm5lbCB3aWxsIHJ1biBjYW4gYmUgY29uZmlndXJlZCBvbiB0aGUgIlByb2Nlc3NvcgorICAgICB0eXBlIGFuZCBmZWF0dXJlcyIgY29uZmlndXJhdGlvbiB0YWIuCisKKyAgICAgU2V0IHRoZSBTeXN0ZW0gdG8gIk1COTMwOTMtUERLIiB0byBib290IGZyb20gdGhlIE1COTMwOTMgKEZSNDAzKSBQREsuCisKKyAgICAgU2V0IHRoZSBTeXN0ZW0gdG8gIk1COTMwOTEtVkRLIiB0byBib290IGZyb20gdGhlIENCMTEsIENCMzAsIENCNDEsIENCNjAsCisgICAgIENCNzAgb3IgQ0I0NTEgVkRLIGJvYXJkcy4gU2V0IHRoZSBNb3RoZXJib2FyZCBzZXR0aW5nIHRvICJNQjkzMDkwLU1CMDAiIHRvCisgICAgIGJvb3Qgd2l0aCB0aGUgc3RhbmRhcmQgQVRBOTA1OTBCIFZESyBtb3RoZXJib2FyZCwgYW5kIHNldCBpdCB0byAiTm9uZSIgdG8KKyAgICAgYm9vdCB3aXRob3V0IGFueSBtb3RoZXJib2FyZC4KKworCisgKCopIEJpbmFyeSBGb3JtYXRzCisKKyAgICAgVGhlIG9ubHkgdXNlcnNwYWNlIGJpbmFyeSBmb3JtYXQgc3VwcG9ydGVkIGlzIEZEUElDIEVMRi4gTm9ybWFsIEVMRiwgRkxBVAorICAgICBhbmQgQU9VVCBiaW5hcmllcyBhcmUgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBhcmNoaXRlY3R1cmUuCisKKyAgICAgRkRQSUMgRUxGIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJ5IGFuZCBwcm9ncmFtIGludGVycHJldGVyIGZhY2lsaXRpZXMuCisKKworICgqKSBTY2hlZHVsZXIgU3BlZWQKKworICAgICBUaGUga2VybmVsIHNjaGVkdWxlciBydW5zIGF0IDEwMEh6IGlycmVzcGVjdGl2ZSBvZiB0aGUgY2xvY2sgc3BlZWQgb24gdGhpcworICAgICBhcmNoaXRlY3R1cmUuIFRoaXMgdmFsdWUgaXMgc2V0IGluIGFzbS9wYXJhbS5oIChzZWUgdGhlIEhaIG1hY3JvIGRlZmluZWQKKyAgICAgdGhlcmUpLgorCisKKyAoKikgTm9ybWFsIChNTVUpIExpbnV4IE1lbW9yeSBMYXlvdXQuCisKKyAgICAgU2VlIG1tdS1sYXlvdXQudHh0IGluIHRoaXMgZGlyZWN0b3J5IGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBub3JtYWwgbGludXgKKyAgICAgbWVtb3J5IGxheW91dAorCisgICAgIFNlZSBpbmNsdWRlL2FzbS1mcnYvbWVtLWxheW91dC5oIGZvciBjb25zdGFudHMgcGVydGFpbmluZyB0byB0aGUgbWVtb3J5CisgICAgIGxheW91dC4KKworICAgICBTZWUgaW5jbHVkZS9hc20tZnJ2L21iLXJlZ3MuaCBmb3IgdGhlIGNvbnN0YW50cyBwZXJ0YWluaW5nIHRvIHRoZSBJL08gYnVzCisgICAgIGNvbnRyb2xsZXIgY29uZmlndXJhdGlvbi4KKworCisgKCopIHVDbGludXggTWVtb3J5IExheW91dAorCisgICAgIFRoZSBtZW1vcnkgbGF5b3V0IHVzZWQgYnkgdGhlIHVDbGludXgga2VybmVsIGlzIGFzIGZvbGxvd3M6CisKKwkweDAwMDAwMDAwIC0gMHgwMDAwMEZGRgkJTnVsbCBwb2ludGVyIGNhdGNoIHBhZ2UKKwkweDIwMDAwMDAwIC0gMHgyMDBGRkZGRiBDUzIjICAgIFtQREtdIEZQR0EKKwkweEMwMDAwMDAwIC0gMHhDRkZGRkZGRgkJU0RSQU0KKwkweEMwMDAwMDAwCQkJQmFzZSBvZiBMaW51eCBrZXJuZWwgaW1hZ2UKKwkweEUwMDAwMDAwIC0gMHhFRkZGRkZGRglDUzIjCVtWREtdIFNMQlVTL1BDSSB3aW5kb3cKKwkweEYwMDAwMDAwIC0gMHhGMEZGRkZGRglDUzUjCU1COTM0OTMgQ1NDIGFyZWEgKERBViBkYXVnaHRlciBib2FyZCkKKwkweEYxMDAwMDAwIC0gMHhGMUZGRkZGRglDUzcjCVtDQjcwL0NCNDUxXSBDUFUtY2FyZCBQQ01DSUEgcG9ydCBzcGFjZQorCTB4RkMwMDAwMDAgLSAweEZDMEZGRkZGCUNTMSMJW1ZES10gTUI4Njk0MyBjb25maWcgc3BhY2UKKwkweEZDMTAwMDAwIC0gMHhGQzFGRkZGRglDUzYjCVtDQjcwL0NCNDUxXSBDUFUtY2FyZCBETTkwMDAgTklDIHNwYWNlCisJMHhGQzEwMDAwMCAtIDB4RkMxRkZGRkYJQ1M2IwlbUERLXSBBWDg4Nzk2IE5JQyBzcGFjZQorCTB4RkMyMDAwMDAgLSAweEZDMkZGRkZGCUNTMyMJTUI5MzQ5MyBDU1IgYXJlYSAoREFWIGRhdWdodGVyIGJvYXJkKQorCTB4RkQwMDAwMDAgLSAweEZERkZGRkZGCUNTNCMJW0NCNzAvQ0I0NTFdIENQVS1jYXJkIGV4dHJhIGZsYXNoIHNwYWNlCisJMHhGRTAwMDAwMCAtIDB4RkVGRkZGRkYJCUludGVybmFsIENQVSBwZXJpcGhlcmFscworCTB4RkYwMDAwMDAgLSAweEZGMUZGRkZGCUNTMCMJRmxhc2ggMQorCTB4RkYyMDAwMDAgLSAweEZGM0ZGRkZGCUNTMCMJRmxhc2ggMgorCTB4RkZDMDAwMDAgLSAweEZGQzAwMDFGCUNTMCMJW1ZES10gRlBHQQorCisgICAgIFRoZSBrZXJuZWwgcmVhZHMgdGhlIHNpemUgb2YgdGhlIFNEUkFNIGZyb20gdGhlIG1lbW9yeSBidXMgY29udHJvbGxlcgorICAgICByZWdpc3RlcnMgYnkgZGVmYXVsdC4KKworICAgICBUaGUga2VybmVsIGluaXRpYWxpc2F0aW9uIGNvZGUgKDEpIGFkanVzdHMgdGhlIFNEUkFNIGJhc2UgYWRkcmVzc2VzIHRvCisgICAgIG1vdmUgdGhlIFNEUkFNIHRvIGRlc2lyZWQgYWRkcmVzcywgKDIpIG1vdmVzIHRoZSBrZXJuZWwgaW1hZ2UgZG93biB0byB0aGUKKyAgICAgYm90dG9tIG9mIFNEUkFNLCAoMykgYWRqdXN0cyB0aGUgYnVzIGNvbnRyb2xsZXIgcmVnaXN0ZXJzIHRvIG1vdmUgSS9PCisgICAgIHdpbmRvd3MsIGFuZCAoNCkgcmVhcnJhbmdlcyB0aGUgcHJvdGVjdGlvbiByZWdpc3RlcnMgdG8gcHJvdGVjdCBhbGwgb2YKKyAgICAgdGhpcy4KKworICAgICBUaGUgcmVhc29ucyBmb3IgZG9pbmcgdGhpcyBhcmU6ICgxKSB0aGUgcGFnZSBhdCBhZGRyZXNzIDAgc2hvdWxkIGJlCisgICAgIGluYWNjZXNzaWJsZSBzbyB0aGF0IE5VTEwgcG9pbnRlciBlcnJvcnMgY2FuIGJlIGNhdWdodDsgYW5kICgyKSB0aGUgYm90dG9tCisgICAgIHRocmVlIHF1YXJ0ZXJzIGFyZSBsZWZ0IHVub2NjdXBpZWQgc28gdGhhdCBhbiBGUi1WIENQVSB3aXRoIGFuIE1NVSBjYW4gdXNlCisgICAgIGl0IGZvciB2aXJ0dWFsIHVzZXJzcGFjZSBtYXBwaW5ncy4KKworICAgICBTZWUgaW5jbHVkZS9hc20tZnJ2L21lbS1sYXlvdXQuaCBmb3IgY29uc3RhbnRzIHBlcnRhaW5pbmcgdG8gdGhlIG1lbW9yeQorICAgICBsYXlvdXQuCisKKyAgICAgU2VlIGluY2x1ZGUvYXNtLWZydi9tYi1yZWdzLmggZm9yIHRoZSBjb25zdGFudHMgcGVydGFpbmluZyB0byB0aGUgSS9PIGJ1cworICAgICBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb24uCisKKworICgqKSB1Q2xpbnV4IE1lbW9yeSBQcm90ZWN0aW9uCisKKyAgICAgQSBEQU1QUiByZWdpc3RlciBpcyB1c2VkIHRvIGNvdmVyIHRoZSBlbnRpcmUgcmVnaW9uIHVzZWQgZm9yIEkvTworICAgICAoMHhFMDAwMDAwMCAtIDB4RkZGRkZGRkYpLiBUaGlzIHBlcm1pdHMgdGhlIGtlcm5lbCB0byBtYWtlIHVuY2FjaGVkCisgICAgIGFjY2Vzc2VzIHRvIHRoaXMgcmVnaW9uLiBVc2Vyc3BhY2UgaXMgbm90IHBlcm1pdHRlZCB0byBhY2Nlc3MgaXQuCisKKyAgICAgVGhlIERBTVBSL0lBTVBSIHByb3RlY3Rpb24gcmVnaXN0ZXJzIG5vdCBpbiB1c2UgZm9yIGFueSBvdGhlciBwdXJwb3NlIGFyZQorICAgICB0aWxlZCBvdmVyIHRoZSB0b3Agb2YgdGhlIFNEUkFNIHN1Y2ggdGhhdDoKKworCSgxKSBUaGUgY29yZSBrZXJuZWwgaW1hZ2UgaXMgY292ZXJlZCBieSBhcyBzbWFsbCBhIHRpbGUgYXMgcG9zc2libGUKKyAgICAgICAgICAgIGdyYW50aW5nIG9ubHkgdGhlIGtlcm5lbCBhY2Nlc3MgdG8gdGhlIHVuZGVybHlpbmcgZGF0YSwgd2hpbHN0CisgICAgICAgICAgICBtYWtpbmcgc3VyZSBubyBTRFJBTSBpcyBhY3R1YWxseSBtYWRlIHVuYXZhaWxhYmxlIGJ5IHRoaXMgYXBwcm9hY2guCisKKwkoMikgQWxsIG90aGVyIHRpbGVzIGFyZSBhcnJhbmdlZCB0byBwZXJtaXQgdXNlcnNwYWNlIGFjY2VzcyB0byB0aGUgcmVzdAorICAgICAgICAgICAgb2YgdGhlIFNEUkFNLgorCisgICAgIEJhcnJpbmcgcG9pbnQgKDEpLCB0aGVyZSBpcyBub3RoaW5nIHRvIHByb3RlY3Qga2VybmVsIGRhdGEgYWdhaW5zdAorICAgICB1c2Vyc3BhY2UgZGFtYWdlIC0gYnV0IHRoaXMgaXMgdUNsaW51eC4KKworCisgKCopIEV4Y2VwdGlvbnMgYW5kIEZpeHVwcworCisgICAgIFNpbmNlIHRoZSBGUjQweCBhbmQgRlI1NXggQ1BVcyB0aGF0IGRvIG5vdCBoYXZlIGZ1bGwgTU1VcyBnZW5lcmF0ZQorICAgICBpbXByZWNpc2UgZGF0YSBlcnJvciBleGNlcHRpb25zLCB0aGVyZSBhcmUgY3VycmVudGx5IG5vIGF1dG9tYXRpYyBmaXh1cAorICAgICBzZXJ2aWNlcyBhdmFpbGFibGUgaW4gdUNsaW51eC4gVGhpcyBpbmNsdWRlcyBtaXNhbGlnbmVkIG1lbW9yeSBhY2Nlc3MKKyAgICAgZml4dXBzLgorCisgICAgIFVzZXJzcGFjZSBFRkFVTFQgZXJyb3JzIGNhbiBiZSB0cmFwcGVkIGJ5IGlzc3VpbmcgYSBNRU1CQVIgaW5zdHJ1Y3Rpb24gYW5kCisgICAgIGZvcmNpbmcgdGhlIGZhdWx0IHRvIGhhcHBlbiB0aGVyZS4KKworICAgICBPbiB0aGUgRlI0NTEsIGhvd2V2ZXIsIGRhdGEgZXhjZXB0aW9ucyBhcmUgbW9zdGx5IHByZWNpc2UsIGFuZCBzbworICAgICBleGNlcHRpb24gZml4dXAgaGFuZGxpbmcgaXMgaW1wbGVtZW50ZWQgYXMgbm9ybWFsLgorCisKKyAoKikgVXNlcnNwYWNlIEJyZWFrcG9pbnRzCisKKyAgICAgVGhlIHB0cmFjZSgpIHN5c3RlbSBjYWxsIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgdXNlcnNwYWNlIGRlYnVnZ2luZworICAgICBmZWF0dXJlczoKKworCSgxKSBIYXJkd2FyZSBhc3Npc3RlZCBzaW5nbGUgc3RlcC4KKworCSgyKSBCcmVha3BvaW50IHZpYSB0aGUgRlItViAiQlJFQUsiIGluc3RydWN0aW9uLgorCisJKDMpIEJyZWFrcG9pbnQgdmlhIHRoZSBGUi1WICJUSVJBIEdSMCwgIzEiIGluc3RydWN0aW9uLgorCisJKDQpIFN5c2NhbGwgZW50cnkvZXhpdCB0cmFwLgorCisgICAgIEVhY2ggb2YgdGhlIGFib3ZlIGdlbmVyYXRlcyBhIFNJR1RSQVAuCisKKworICgqKSBPbi1DaGlwIFNlcmlhbCBQb3J0cworCisgICAgIFRoZSBGUi1WIG9uLWNoaXAgc2VyaWFsIHBvcnRzIGFyZSBtYWRlIGF2YWlsYWJsZSBhcyB0dHlTMCBhbmQgdHR5UzEuIE5vdGUKKyAgICAgdGhhdCBpZiB0aGUgR0RCIHN0dWIgaXMgY29tcGlsZWQgaW4sIHR0eVMxIHdpbGwgbm90IGFjdHVhbGx5IGJlIGF2YWlsYWJsZQorICAgICBhcyBpdCB3aWxsIGJlIGJlaW5nIHVzZWQgZm9yIHRoZSBHREIgc3R1Yi4KKworICAgICBUaGVzZSBwb3J0cyBjYW4gYmUgbWFkZSBieToKKworCW1rbm9kIC9kZXYvdHR5UzAgYyA0IDY0CisJbWtub2QgL2Rldi90dHlTMSBjIDQgNjUKKworCisgKCopIE1hc2thYmxlIEludGVycnVwdHMKKworICAgICBMZXZlbCAxNSAoTm9uLW1hc2thYmxlKSBpbnRlcnJ1cHRzIGFyZSBkZWFsdCB3aXRoIGJ5IHRoZSBHREIgc3R1YiBpZgorICAgICBwcmVzZW50LCBhbmQgY2F1c2UgYSBwYW5pYyBpZiBub3QuIElmIHRoZSBHREIgc3R1YiBpcyBwcmVzZW50LCB0dHlTMSdzCisgICAgIGludGVycnVwdHMgYXJlIHJhdGVkIGF0IGxldmVsIDE1LgorCisgICAgIEFsbCBvdGhlciBpbnRlcnJ1cHRzIGFyZSBkaXN0cmlidXRlZCBvdmVyIHRoZSBzZXQgb2YgYXZhaWxhYmxlIHByaW9yaXRpZXMKKyAgICAgc28gdGhhdCBubyBJUlFzIGFyZSBzaGFyZWQgd2hlcmUgcG9zc2libGUuIFRoZSBhcmNoIGludGVycnVwdCBoYW5kbGluZworICAgICByb3V0aW5lcyBhdHRlbXB0IHRvIGRpc2VudGFuZ2xlIHRoZSB2YXJpb3VzIHNvdXJjZXMgYXZhaWxhYmxlIHRocm91Z2ggdGhlCisgICAgIENQVSdzIG93biBtdWx0aXBsZXhvciwgYW5kIHRob3NlIG9uIG9mZi1DUFUgcGVyaXBoZXJhbHMuCisKKworICgqKSBBY2Nlc3NpbmcgUENJIERldmljZXMKKworICAgICBXaGVyZSBQQ0kgaXMgYXZhaWxhYmxlLCBjYXJlIG11c3QgYmUgdGFrZW4gd2hlbiBkZWFsaW5nIHdpdGggZHJpdmVycyB0aGF0CisgICAgIGFjY2VzcyBQQ0kgZGV2aWNlcy4gUENJIGRldmljZXMgcHJlc2VudCB0aGVpciBkYXRhIGluIGxpdHRsZS1lbmRpYW4gZm9ybSwKKyAgICAgYnV0IHRoZSBDUFUgc2VlcyBpdCBpbiBiaWctZW5kaWFuIGZvcm0uIFRoZSBtYWNyb3MgaW4gYXNtL2lvLmggdHJ5IHRvIGdldAorICAgICB0aGlzIHJpZ2h0LCBidXQgbWF5IG5vdCB1bmRlciBhbGwgY2lyY3Vtc3RhbmNlcy4uLgorCisKKyAoKikgQXg4ODc5NiBFdGhlcm5ldCBEcml2ZXIKKworICAgICBUaGUgTUI5MzA5MyBQREsgYm9hcmQgaGFzIGFuIEF4ODg3OTYgZXRoZXJuZXQgY2hpcHNldCAoYW4gTkUyMDAwIGNsb25lKS4gQQorICAgICBkcml2ZXIgaGFzIGJlZW4gd3JpdHRlbiB0byBkZWFsIHNwZWNpZmljYWxseSB3aXRoIHRoaXMuIFRoZSBkcml2ZXIKKyAgICAgcHJvdmlkZXMgTUlJIHNlcnZpY2VzIGZvciB0aGUgY2FyZC4KKworICAgICBUaGUgZHJpdmVyIGNhbiBiZSBjb25maWd1cmVkIGJ5IHJ1bm5pbmcgbWFrZSB4Y29uZmlnLCBhbmQgZ29pbmcgdG86CisKKwkoKikgTmV0d29yayBkZXZpY2Ugc3VwcG9ydAorCSAgICAtIHR1cm4gb24gIk5ldHdvcmsgZGV2aWNlIHN1cHBvcnQiCisJICAgICgqKSBFdGhlcm5ldCAoMTAgb3IgMTAwTWJpdCkKKwkJLSB0dXJuIG9uICJFdGhlcm5ldCAoMTAgb3IgMTAwTWJpdCkiCisJCS0gdHVybiBvbiAiQVg4ODc5NiBORTIwMDAgY29tcGF0aWJsZSBjaGlwc2V0IgorCisgICAgIFRoZSBkcml2ZXIgY2FuIGJlIGZvdW5kIGluOgorCisJZHJpdmVycy9uZXQvYXg4ODc5Ni5jCisJaW5jbHVkZS9hc20vYXg4ODc5Ni5oCisKKworICgqKSBXb3JrUkFNIERyaXZlcgorCisgICAgIFRoaXMgZHJpdmVyIHByb3ZpZGVzIGEgY2hhcmFjdGVyIGRldmljZSB0aGF0IHBlcm1pdHMgYWNjZXNzIHRvIHRoZSBXb3JrUkFNCisgICAgIHRoYXQgY2FuIGJlIGZvdW5kIG9uIHRoZSBGUjQ1MSBDUFUuIEVhY2ggcGFnZSBpcyBhY2Nlc3NpYmxlIHRocm91Z2ggYQorICAgICBzZXBhcmF0ZSBtaW5vciBudW1iZXIsIHRoZXJlYnkgcGVybWl0dGluZyBlYWNoIHBhZ2UgdG8gaGF2ZSBpdHMgb3duCisgICAgIGZpbGVzeXN0ZW0gcGVybWlzc2lvbnMgc2V0IG9uIHRoZSBkZXZpY2UgZmlsZS4KKworICAgICBUaGUgZGV2aWNlIGZpbGVzIHNob3VsZCBiZToKKworCW1rbm9kIC9kZXYvZnJ2L3dvcmtyYW0wIGMgMjQwIDAKKwlta25vZCAvZGV2L2Zydi93b3JrcmFtMSBjIDI0MCAxCisJbWtub2QgL2Rldi9mcnYvd29ya3JhbTIgYyAyNDAgMgorCS4uLgorCisgICAgIFRoZSBkcml2ZXIgd2lsbCBub3QgcGVybWl0IHRoZSBvcGVuaW5nIG9mIGFueSBkZXZpY2UgZmlsZSB0aGF0IGRvZXMgbm90CisgICAgIGNvcnJlc3BvbmQgdG8gYXQgbGVhc3QgYSBwYXJ0aWFsIHBhZ2Ugb2YgV29ya1JBTS4gU28gdGhlIGZpcnN0IGRldmljZSBmaWxlCisgICAgIGlzIHRoZSBvbmx5IG9uZSBhdmFpbGFibGUgb24gdGhlIEZSNDUxLiBJZiBhbnkgb3RoZXIgQ1BVIGlzIGRldGVjdGVkLCBub25lCisgICAgIG9mIHRoZSBkZXZpY2VzIHdpbGwgYmUgb3BlbmFibGUuCisKKyAgICAgVGhlIGRldmljZXMgY2FuIGJlIGFjY2Vzc2VkIHdpdGggcmVhZCwgd3JpdGUgYW5kIGxsc2VlaywgYW5kIGNhbiBhbHNvIGJlCisgICAgIG1tYXBwZWQuIElmIHRoZXkncmUgbW1hcHBlZCwgdGhleSB3aWxsIG9ubHkgbWFwIGF0IHRoZSBhcHByb3ByaWF0ZQorICAgICAweDdlOG5ubm5uIGFkZHJlc3Mgb24gbGludXggYW5kIGF0IHRoZSAweGZlOG5ubm5uIGFkZHJlc3Mgb24gdUNsaW51eC4gSWYKKyAgICAgTUFQX0ZJWEVEIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBhcHByb3ByaWF0ZSBhZGRyZXNzIHdpbGwgYmUgY2hvc2VuIGFueXdheS4KKworICAgICBUaGUgbWFwcGluZ3MgbXVzdCBiZSBNQVBfU0hBUkVEIG5vdCBNQVBfUFJJVkFURSwgYW5kIG11c3Qgbm90IGJlCisgICAgIFBST1RfRVhFQy4gVGhleSBtdXN0IGFsc28gc3RhcnQgYXQgZmlsZSBvZmZzZXQgMCwgYW5kIG11c3Qgbm90IGJlIGxvbmdlcgorICAgICB0aGFuIG9uZSBwYWdlIGluIHNpemUuCisKKyAgICAgVGhpcyBkcml2ZXIgY2FuIGJlIGNvbmZpZ3VyZWQgYnkgcnVubmluZyBtYWtlIHhjb25maWcsIGFuZCBnb2luZyB0bzoKKworCSgqKSBDaGFyYWN0ZXIgZGV2aWNlcworCSAgICAtIHR1cm4gb24gIkZ1aml0c3UgRlItViBDUFUgV29ya1JBTSBzdXBwb3J0IgorCisKKyAoKikgRHluYW1pYyBkYXRhIGNhY2hlIHdyaXRlIG1vZGUgY2hhbmdpbmcKKworICAgICBJdCBpcyBwb3NzaWJsZSB0byB2aWV3IGFuZCB0byBjaGFuZ2UgdGhlIGRhdGEgY2FjaGUncyB3cml0ZSBtb2RlIHRocm91Z2gKKyAgICAgdGhlIC9wcm9jL3N5cy9mcnYvY2FjaGUtbW9kZSBmaWxlIHdoaWxlIHRoZSBrZXJuZWwgaXMgcnVubmluZy4gVGhlcmUgYXJlCisgICAgIHR3byBtb2RlcyBhdmFpbGFibGU6CisKKwlOQU1FCU1FQU5JTkcKKwk9PT09PQk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwl3dGhydQlEYXRhIGNhY2hlIGlzIGluIFdyaXRlLVRocm91Z2ggbW9kZQorCXdiYWNrCURhdGEgY2FjaGUgaXMgaW4gV3JpdGUtQmFjay9Db3B5LUJhY2sgbW9kZQorCisgICAgIFRvIHJlYWQgdGhlIGNhY2hlIG1vZGU6CisKKwkjIGNhdCAvcHJvYy9zeXMvZnJ2L2NhY2hlLW1vZGUKKwl3dGhydQorCisgICAgIFRvIGNoYW5nZSB0aGUgY2FjaGUgbW9kZToKKworCSMgZWNobyB3YmFjayA+L3Byb2Mvc3lzL2Zydi9jYWNoZS1tb2RlCisJIyBjYXQgL3Byb2Mvc3lzL2Zydi9jYWNoZS1tb2RlCisJd2JhY2sKKworCisgKCopIE1NVSBDb250ZXh0IElEcyBhbmQgUGlubmluZworCisgICAgIE9uIE1NVSBMaW51eCB0aGUgQ1BVIHN1cHBvcnRzIHRoZSBjb25jZXB0IG9mIGEgY29udGV4dCBJRCBpbiBpdHMgTU1VIHRvCisgICAgIG1ha2UgaXQgbW9yZSBlZmZpY2llbnQgKFRMQiBlbnRyaWVzIGFyZSBsYWJlbGxlZCB3aXRoIGEgY29udGV4dCBJRCB0byBsaW5rCisgICAgIHRoZW0gdG8gc3BlY2lmaWMgdGFza3MpLgorCisgICAgIE5vcm1hbGx5IG9uY2UgYSBjb250ZXh0IElEIGlzIGFsbG9jYXRlZCwgaXQgd2lsbCByZW1haW4gYWZmaXhlZCB0byBhIHRhc2sKKyAgICAgb3IgQ0xPTkVfVk0nZCBncm91cCBvZiB0YXNrcyBmb3IgYXMgbG9uZyBhcyBpdCBleGlzdHMuIEhvd2V2ZXIsIHNpbmNlIHRoZQorICAgICBrZXJuZWwgaXMgY2FwYWJsZSBvZiBzdXBwb3J0aW5nIG1vcmUgdGFza3MgdGhhbiB0aGVyZSBhcmUgcG9zc2libGUgSUQKKyAgICAgbnVtYmVycywgdGhlIGtlcm5lbCB3aWxsIHBhc3MgY29udGV4dCBJRHMgZnJvbSBvbmUgdGFzayB0byBhbm90aGVyIGlmCisgICAgIHRoZXJlIGFyZSBpbnN1ZmZpY2llbnQgYXZhaWxhYmxlLgorCisgICAgIFRoZSBjb250ZXh0IElEIGN1cnJlbnRseSBpbiB1c2UgYnkgYSB0YXNrIGNhbiBiZSB2aWV3ZWQgaW4gL3Byb2M6CisKKwkjIGdyZXAgQ1hOUiAvcHJvYy8xL3N0YXR1cworCUNYTlI6IDEKKworICAgICBOb3RlIHRoYXQga2VybmVsIHRocmVhZHMgZG8gbm90IGhhdmUgYSB1c2Vyc3BhY2UgY29udGV4dCwgYW5kIHNvIHdpbGwgbm90CisgICAgIHNob3cgYSBDWE5SIGVudHJ5IGluIHRoYXQgZmlsZS4KKworICAgICBVbmRlciBzb21lIGNpcmN1bXN0YW5jZXMsIGhvd2V2ZXIsIGl0IGlzIGRlc2lyYWJsZSB0byBwaW4gYSBjb250ZXh0IElEIG9uCisgICAgIGEgcHJvY2VzcyBzdWNoIHRoYXQgdGhlIGtlcm5lbCB3b24ndCBwYXNzIGl0IG9uLiBUaGlzIGNhbiBiZSBkb25lIGJ5CisgICAgIHdyaXRpbmcgdGhlIHByb2Nlc3MgSUQgb2YgdGhlIHRhcmdldCBwcm9jZXNzIHRvIGEgc3BlY2lhbCBmaWxlOgorCisJIyBlY2hvIDE3ID4vcHJvYy9zeXMvZnJ2L3Bpbi1jeG5yCisKKyAgICAgUmVhZGluZyBmcm9tIHRoZSBmaWxlIHdpbGwgdGhlbiBzaG93IHRoZSBjb250ZXh0IElEIHBpbm5lZC4KKworCSMgY2F0IC9wcm9jL3N5cy9mcnYvcGluLWN4bnIKKwk0CisKKyAgICAgVGhlIGNvbnRleHQgSUQgd2lsbCByZW1haW4gcGlubmVkIGFzIGxvbmcgYXMgYW55IHByb2Nlc3MgaXMgdXNpbmcgdGhhdAorICAgICBjb250ZXh0LCBpLmUuOiB3aGVuIHRoZSBhbGwgdGhlIHN1YnNjcmliaW5nIHByb2Nlc3NlcyBoYXZlIGV4aXRlZCBvcgorICAgICBleGVjJ2Q7IG9yIHdoZW4gYW4gdW5waW5uaW5nIHJlcXVlc3QgaGFwcGVuczoKKworCSMgZWNobyAwID4vcHJvYy9zeXMvZnJ2L3Bpbi1jeG5yCisKKyAgICAgV2hlbiB0aGVyZSBpc24ndCBhIHBpbm5lZCBjb250ZXh0LCB0aGUgZmlsZSBzaG93cyAtMToKKworCSMgY2F0IC9wcm9jL3N5cy9mcnYvcGluLWN4bnIKKwktMQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mcnYvZ2RiaW5pdCBiL0RvY3VtZW50YXRpb24vZnJ2L2dkYmluaXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE1MTdiNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZnJ2L2dkYmluaXQKQEAgLTAsMCArMSwxMDIgQEAKK3NldCByZW1vdGVicmVhayAxCisKK2RlZmluZSBfYW1yCisKK3ByaW50ZiAiQU1SeCAgICAgICAgICAgREFNUiAgICAgICAgICAgICAgICAgICAgSUFNUiAgICAgICAgIFxuIgorcHJpbnRmICI9PT09ICAgPT09PT09PT09PT09PT09PT09PT09ICAgPT09PT09PT09PT09PT09PT09PT09XG4iCitwcmludGYgImFtcjAgOiBMOiUwOGx4IFA6JTA4bHggOiBMOiUwOGx4IFA6JTA4bHhcbiIsX19kZWJ1Z19tbXUuZGFtclsweDBdLkwsX19kZWJ1Z19tbXUuZGFtclsweDBdLlAsX19kZWJ1Z19tbXUuaWFtclsweDBdLkwsX19kZWJ1Z19tbXUuaWFtclsweDBdLlAKK3ByaW50ZiAiYW1yMSA6IEw6JTA4bHggUDolMDhseCA6IEw6JTA4bHggUDolMDhseFxuIixfX2RlYnVnX21tdS5kYW1yWzB4MV0uTCxfX2RlYnVnX21tdS5kYW1yWzB4MV0uUCxfX2RlYnVnX21tdS5pYW1yWzB4MV0uTCxfX2RlYnVnX21tdS5pYW1yWzB4MV0uUAorcHJpbnRmICJhbXIyIDogTDolMDhseCBQOiUwOGx4IDogTDolMDhseCBQOiUwOGx4XG4iLF9fZGVidWdfbW11LmRhbXJbMHgyXS5MLF9fZGVidWdfbW11LmRhbXJbMHgyXS5QLF9fZGVidWdfbW11LmlhbXJbMHgyXS5MLF9fZGVidWdfbW11LmlhbXJbMHgyXS5QCitwcmludGYgImFtcjMgOiBMOiUwOGx4IFA6JTA4bHggOiBMOiUwOGx4IFA6JTA4bHhcbiIsX19kZWJ1Z19tbXUuZGFtclsweDNdLkwsX19kZWJ1Z19tbXUuZGFtclsweDNdLlAsX19kZWJ1Z19tbXUuaWFtclsweDNdLkwsX19kZWJ1Z19tbXUuaWFtclsweDNdLlAKK3ByaW50ZiAiYW1yNCA6IEw6JTA4bHggUDolMDhseCA6IEw6JTA4bHggUDolMDhseFxuIixfX2RlYnVnX21tdS5kYW1yWzB4NF0uTCxfX2RlYnVnX21tdS5kYW1yWzB4NF0uUCxfX2RlYnVnX21tdS5pYW1yWzB4NF0uTCxfX2RlYnVnX21tdS5pYW1yWzB4NF0uUAorcHJpbnRmICJhbXI1IDogTDolMDhseCBQOiUwOGx4IDogTDolMDhseCBQOiUwOGx4XG4iLF9fZGVidWdfbW11LmRhbXJbMHg1XS5MLF9fZGVidWdfbW11LmRhbXJbMHg1XS5QLF9fZGVidWdfbW11LmlhbXJbMHg1XS5MLF9fZGVidWdfbW11LmlhbXJbMHg1XS5QCitwcmludGYgImFtcjYgOiBMOiUwOGx4IFA6JTA4bHggOiBMOiUwOGx4IFA6JTA4bHhcbiIsX19kZWJ1Z19tbXUuZGFtclsweDZdLkwsX19kZWJ1Z19tbXUuZGFtclsweDZdLlAsX19kZWJ1Z19tbXUuaWFtclsweDZdLkwsX19kZWJ1Z19tbXUuaWFtclsweDZdLlAKK3ByaW50ZiAiYW1yNyA6IEw6JTA4bHggUDolMDhseCA6IEw6JTA4bHggUDolMDhseFxuIixfX2RlYnVnX21tdS5kYW1yWzB4N10uTCxfX2RlYnVnX21tdS5kYW1yWzB4N10uUCxfX2RlYnVnX21tdS5pYW1yWzB4N10uTCxfX2RlYnVnX21tdS5pYW1yWzB4N10uUAorCitwcmludGYgImFtcjggOiBMOiUwOGx4IFA6JTA4bHhcbiIsX19kZWJ1Z19tbXUuZGFtclsweDhdLkwsX19kZWJ1Z19tbXUuZGFtclsweDhdLlAKK3ByaW50ZiAiYW1yOSA6IEw6JTA4bHggUDolMDhseFxuIixfX2RlYnVnX21tdS5kYW1yWzB4OV0uTCxfX2RlYnVnX21tdS5kYW1yWzB4OV0uUAorcHJpbnRmICJhbXIxMDogTDolMDhseCBQOiUwOGx4XG4iLF9fZGVidWdfbW11LmRhbXJbMHhhXS5MLF9fZGVidWdfbW11LmRhbXJbMHhhXS5QCitwcmludGYgImFtcjExOiBMOiUwOGx4IFA6JTA4bHhcbiIsX19kZWJ1Z19tbXUuZGFtclsweGJdLkwsX19kZWJ1Z19tbXUuZGFtclsweGJdLlAKKworZW5kCisKKworZGVmaW5lIF90bGIKK3ByaW50ZiAidGxiWzB4MDBdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4MF0uTCxfX2RlYnVnX21tdS50bGJbMHgwXS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MF0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDBdLlAKK3ByaW50ZiAidGxiWzB4MDFdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4MV0uTCxfX2RlYnVnX21tdS50bGJbMHgxXS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MV0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDFdLlAKK3ByaW50ZiAidGxiWzB4MDJdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4Ml0uTCxfX2RlYnVnX21tdS50bGJbMHgyXS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4Ml0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDJdLlAKK3ByaW50ZiAidGxiWzB4MDNdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4M10uTCxfX2RlYnVnX21tdS50bGJbMHgzXS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4M10uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDNdLlAKK3ByaW50ZiAidGxiWzB4MDRdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4NF0uTCxfX2RlYnVnX21tdS50bGJbMHg0XS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4NF0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDRdLlAKK3ByaW50ZiAidGxiWzB4MDVdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4NV0uTCxfX2RlYnVnX21tdS50bGJbMHg1XS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4NV0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDVdLlAKK3ByaW50ZiAidGxiWzB4MDZdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4Nl0uTCxfX2RlYnVnX21tdS50bGJbMHg2XS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4Nl0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDZdLlAKK3ByaW50ZiAidGxiWzB4MDddOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4N10uTCxfX2RlYnVnX21tdS50bGJbMHg3XS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4N10uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDddLlAKK3ByaW50ZiAidGxiWzB4MDhdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4OF0uTCxfX2RlYnVnX21tdS50bGJbMHg4XS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4OF0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDhdLlAKK3ByaW50ZiAidGxiWzB4MDldOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4OV0uTCxfX2RlYnVnX21tdS50bGJbMHg5XS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4OV0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDldLlAKK3ByaW50ZiAidGxiWzB4MGFdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4YV0uTCxfX2RlYnVnX21tdS50bGJbMHhhXS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4YV0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweGFdLlAKK3ByaW50ZiAidGxiWzB4MGJdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4Yl0uTCxfX2RlYnVnX21tdS50bGJbMHhiXS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4Yl0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweGJdLlAKK3ByaW50ZiAidGxiWzB4MGNdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4Y10uTCxfX2RlYnVnX21tdS50bGJbMHhjXS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4Y10uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweGNdLlAKK3ByaW50ZiAidGxiWzB4MGRdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4ZF0uTCxfX2RlYnVnX21tdS50bGJbMHhkXS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4ZF0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweGRdLlAKK3ByaW50ZiAidGxiWzB4MGVdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4ZV0uTCxfX2RlYnVnX21tdS50bGJbMHhlXS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4ZV0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweGVdLlAKK3ByaW50ZiAidGxiWzB4MGZdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4Zl0uTCxfX2RlYnVnX21tdS50bGJbMHhmXS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4Zl0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweGZdLlAKK3ByaW50ZiAidGxiWzB4MTBdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4MTBdLkwsX19kZWJ1Z19tbXUudGxiWzB4MTBdLlAsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgxMF0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDEwXS5QCitwcmludGYgInRsYlsweDExXTogJTA4bHggJTA4bHggICUwOGx4ICUwOGx4XG4iLF9fZGVidWdfbW11LnRsYlsweDExXS5MLF9fZGVidWdfbW11LnRsYlsweDExXS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MTFdLkwsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgxMV0uUAorcHJpbnRmICJ0bGJbMHgxMl06ICUwOGx4ICUwOGx4ICAlMDhseCAlMDhseFxuIixfX2RlYnVnX21tdS50bGJbMHgxMl0uTCxfX2RlYnVnX21tdS50bGJbMHgxMl0uUCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDEyXS5MLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MTJdLlAKK3ByaW50ZiAidGxiWzB4MTNdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4MTNdLkwsX19kZWJ1Z19tbXUudGxiWzB4MTNdLlAsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgxM10uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDEzXS5QCitwcmludGYgInRsYlsweDE0XTogJTA4bHggJTA4bHggICUwOGx4ICUwOGx4XG4iLF9fZGVidWdfbW11LnRsYlsweDE0XS5MLF9fZGVidWdfbW11LnRsYlsweDE0XS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MTRdLkwsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgxNF0uUAorcHJpbnRmICJ0bGJbMHgxNV06ICUwOGx4ICUwOGx4ICAlMDhseCAlMDhseFxuIixfX2RlYnVnX21tdS50bGJbMHgxNV0uTCxfX2RlYnVnX21tdS50bGJbMHgxNV0uUCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDE1XS5MLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MTVdLlAKK3ByaW50ZiAidGxiWzB4MTZdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4MTZdLkwsX19kZWJ1Z19tbXUudGxiWzB4MTZdLlAsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgxNl0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDE2XS5QCitwcmludGYgInRsYlsweDE3XTogJTA4bHggJTA4bHggICUwOGx4ICUwOGx4XG4iLF9fZGVidWdfbW11LnRsYlsweDE3XS5MLF9fZGVidWdfbW11LnRsYlsweDE3XS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MTddLkwsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgxN10uUAorcHJpbnRmICJ0bGJbMHgxOF06ICUwOGx4ICUwOGx4ICAlMDhseCAlMDhseFxuIixfX2RlYnVnX21tdS50bGJbMHgxOF0uTCxfX2RlYnVnX21tdS50bGJbMHgxOF0uUCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDE4XS5MLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MThdLlAKK3ByaW50ZiAidGxiWzB4MTldOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4MTldLkwsX19kZWJ1Z19tbXUudGxiWzB4MTldLlAsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgxOV0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDE5XS5QCitwcmludGYgInRsYlsweDFhXTogJTA4bHggJTA4bHggICUwOGx4ICUwOGx4XG4iLF9fZGVidWdfbW11LnRsYlsweDFhXS5MLF9fZGVidWdfbW11LnRsYlsweDFhXS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MWFdLkwsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgxYV0uUAorcHJpbnRmICJ0bGJbMHgxYl06ICUwOGx4ICUwOGx4ICAlMDhseCAlMDhseFxuIixfX2RlYnVnX21tdS50bGJbMHgxYl0uTCxfX2RlYnVnX21tdS50bGJbMHgxYl0uUCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDFiXS5MLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MWJdLlAKK3ByaW50ZiAidGxiWzB4MWNdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4MWNdLkwsX19kZWJ1Z19tbXUudGxiWzB4MWNdLlAsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgxY10uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDFjXS5QCitwcmludGYgInRsYlsweDFkXTogJTA4bHggJTA4bHggICUwOGx4ICUwOGx4XG4iLF9fZGVidWdfbW11LnRsYlsweDFkXS5MLF9fZGVidWdfbW11LnRsYlsweDFkXS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MWRdLkwsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgxZF0uUAorcHJpbnRmICJ0bGJbMHgxZV06ICUwOGx4ICUwOGx4ICAlMDhseCAlMDhseFxuIixfX2RlYnVnX21tdS50bGJbMHgxZV0uTCxfX2RlYnVnX21tdS50bGJbMHgxZV0uUCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDFlXS5MLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MWVdLlAKK3ByaW50ZiAidGxiWzB4MWZdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4MWZdLkwsX19kZWJ1Z19tbXUudGxiWzB4MWZdLlAsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgxZl0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDFmXS5QCitwcmludGYgInRsYlsweDIwXTogJTA4bHggJTA4bHggICUwOGx4ICUwOGx4XG4iLF9fZGVidWdfbW11LnRsYlsweDIwXS5MLF9fZGVidWdfbW11LnRsYlsweDIwXS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MjBdLkwsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgyMF0uUAorcHJpbnRmICJ0bGJbMHgyMV06ICUwOGx4ICUwOGx4ICAlMDhseCAlMDhseFxuIixfX2RlYnVnX21tdS50bGJbMHgyMV0uTCxfX2RlYnVnX21tdS50bGJbMHgyMV0uUCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDIxXS5MLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MjFdLlAKK3ByaW50ZiAidGxiWzB4MjJdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4MjJdLkwsX19kZWJ1Z19tbXUudGxiWzB4MjJdLlAsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgyMl0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDIyXS5QCitwcmludGYgInRsYlsweDIzXTogJTA4bHggJTA4bHggICUwOGx4ICUwOGx4XG4iLF9fZGVidWdfbW11LnRsYlsweDIzXS5MLF9fZGVidWdfbW11LnRsYlsweDIzXS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MjNdLkwsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgyM10uUAorcHJpbnRmICJ0bGJbMHgyNF06ICUwOGx4ICUwOGx4ICAlMDhseCAlMDhseFxuIixfX2RlYnVnX21tdS50bGJbMHgyNF0uTCxfX2RlYnVnX21tdS50bGJbMHgyNF0uUCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDI0XS5MLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MjRdLlAKK3ByaW50ZiAidGxiWzB4MjVdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4MjVdLkwsX19kZWJ1Z19tbXUudGxiWzB4MjVdLlAsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgyNV0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDI1XS5QCitwcmludGYgInRsYlsweDI2XTogJTA4bHggJTA4bHggICUwOGx4ICUwOGx4XG4iLF9fZGVidWdfbW11LnRsYlsweDI2XS5MLF9fZGVidWdfbW11LnRsYlsweDI2XS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MjZdLkwsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgyNl0uUAorcHJpbnRmICJ0bGJbMHgyN106ICUwOGx4ICUwOGx4ICAlMDhseCAlMDhseFxuIixfX2RlYnVnX21tdS50bGJbMHgyN10uTCxfX2RlYnVnX21tdS50bGJbMHgyN10uUCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDI3XS5MLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MjddLlAKK3ByaW50ZiAidGxiWzB4MjhdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4MjhdLkwsX19kZWJ1Z19tbXUudGxiWzB4MjhdLlAsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgyOF0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDI4XS5QCitwcmludGYgInRsYlsweDI5XTogJTA4bHggJTA4bHggICUwOGx4ICUwOGx4XG4iLF9fZGVidWdfbW11LnRsYlsweDI5XS5MLF9fZGVidWdfbW11LnRsYlsweDI5XS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MjldLkwsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgyOV0uUAorcHJpbnRmICJ0bGJbMHgyYV06ICUwOGx4ICUwOGx4ICAlMDhseCAlMDhseFxuIixfX2RlYnVnX21tdS50bGJbMHgyYV0uTCxfX2RlYnVnX21tdS50bGJbMHgyYV0uUCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDJhXS5MLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MmFdLlAKK3ByaW50ZiAidGxiWzB4MmJdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4MmJdLkwsX19kZWJ1Z19tbXUudGxiWzB4MmJdLlAsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgyYl0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDJiXS5QCitwcmludGYgInRsYlsweDJjXTogJTA4bHggJTA4bHggICUwOGx4ICUwOGx4XG4iLF9fZGVidWdfbW11LnRsYlsweDJjXS5MLF9fZGVidWdfbW11LnRsYlsweDJjXS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MmNdLkwsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgyY10uUAorcHJpbnRmICJ0bGJbMHgyZF06ICUwOGx4ICUwOGx4ICAlMDhseCAlMDhseFxuIixfX2RlYnVnX21tdS50bGJbMHgyZF0uTCxfX2RlYnVnX21tdS50bGJbMHgyZF0uUCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDJkXS5MLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MmRdLlAKK3ByaW50ZiAidGxiWzB4MmVdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4MmVdLkwsX19kZWJ1Z19tbXUudGxiWzB4MmVdLlAsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgyZV0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDJlXS5QCitwcmludGYgInRsYlsweDJmXTogJTA4bHggJTA4bHggICUwOGx4ICUwOGx4XG4iLF9fZGVidWdfbW11LnRsYlsweDJmXS5MLF9fZGVidWdfbW11LnRsYlsweDJmXS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MmZdLkwsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgyZl0uUAorcHJpbnRmICJ0bGJbMHgzMF06ICUwOGx4ICUwOGx4ICAlMDhseCAlMDhseFxuIixfX2RlYnVnX21tdS50bGJbMHgzMF0uTCxfX2RlYnVnX21tdS50bGJbMHgzMF0uUCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDMwXS5MLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MzBdLlAKK3ByaW50ZiAidGxiWzB4MzFdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4MzFdLkwsX19kZWJ1Z19tbXUudGxiWzB4MzFdLlAsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgzMV0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDMxXS5QCitwcmludGYgInRsYlsweDMyXTogJTA4bHggJTA4bHggICUwOGx4ICUwOGx4XG4iLF9fZGVidWdfbW11LnRsYlsweDMyXS5MLF9fZGVidWdfbW11LnRsYlsweDMyXS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MzJdLkwsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgzMl0uUAorcHJpbnRmICJ0bGJbMHgzM106ICUwOGx4ICUwOGx4ICAlMDhseCAlMDhseFxuIixfX2RlYnVnX21tdS50bGJbMHgzM10uTCxfX2RlYnVnX21tdS50bGJbMHgzM10uUCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDMzXS5MLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MzNdLlAKK3ByaW50ZiAidGxiWzB4MzRdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4MzRdLkwsX19kZWJ1Z19tbXUudGxiWzB4MzRdLlAsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgzNF0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDM0XS5QCitwcmludGYgInRsYlsweDM1XTogJTA4bHggJTA4bHggICUwOGx4ICUwOGx4XG4iLF9fZGVidWdfbW11LnRsYlsweDM1XS5MLF9fZGVidWdfbW11LnRsYlsweDM1XS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MzVdLkwsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgzNV0uUAorcHJpbnRmICJ0bGJbMHgzNl06ICUwOGx4ICUwOGx4ICAlMDhseCAlMDhseFxuIixfX2RlYnVnX21tdS50bGJbMHgzNl0uTCxfX2RlYnVnX21tdS50bGJbMHgzNl0uUCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDM2XS5MLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MzZdLlAKK3ByaW50ZiAidGxiWzB4MzddOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4MzddLkwsX19kZWJ1Z19tbXUudGxiWzB4MzddLlAsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgzN10uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDM3XS5QCitwcmludGYgInRsYlsweDM4XTogJTA4bHggJTA4bHggICUwOGx4ICUwOGx4XG4iLF9fZGVidWdfbW11LnRsYlsweDM4XS5MLF9fZGVidWdfbW11LnRsYlsweDM4XS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MzhdLkwsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgzOF0uUAorcHJpbnRmICJ0bGJbMHgzOV06ICUwOGx4ICUwOGx4ICAlMDhseCAlMDhseFxuIixfX2RlYnVnX21tdS50bGJbMHgzOV0uTCxfX2RlYnVnX21tdS50bGJbMHgzOV0uUCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDM5XS5MLF9fZGVidWdfbW11LnRsYlsweDQwKzB4MzldLlAKK3ByaW50ZiAidGxiWzB4M2FdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4M2FdLkwsX19kZWJ1Z19tbXUudGxiWzB4M2FdLlAsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgzYV0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDNhXS5QCitwcmludGYgInRsYlsweDNiXTogJTA4bHggJTA4bHggICUwOGx4ICUwOGx4XG4iLF9fZGVidWdfbW11LnRsYlsweDNiXS5MLF9fZGVidWdfbW11LnRsYlsweDNiXS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4M2JdLkwsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgzYl0uUAorcHJpbnRmICJ0bGJbMHgzY106ICUwOGx4ICUwOGx4ICAlMDhseCAlMDhseFxuIixfX2RlYnVnX21tdS50bGJbMHgzY10uTCxfX2RlYnVnX21tdS50bGJbMHgzY10uUCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDNjXS5MLF9fZGVidWdfbW11LnRsYlsweDQwKzB4M2NdLlAKK3ByaW50ZiAidGxiWzB4M2RdOiAlMDhseCAlMDhseCAgJTA4bHggJTA4bHhcbiIsX19kZWJ1Z19tbXUudGxiWzB4M2RdLkwsX19kZWJ1Z19tbXUudGxiWzB4M2RdLlAsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgzZF0uTCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDNkXS5QCitwcmludGYgInRsYlsweDNlXTogJTA4bHggJTA4bHggICUwOGx4ICUwOGx4XG4iLF9fZGVidWdfbW11LnRsYlsweDNlXS5MLF9fZGVidWdfbW11LnRsYlsweDNlXS5QLF9fZGVidWdfbW11LnRsYlsweDQwKzB4M2VdLkwsX19kZWJ1Z19tbXUudGxiWzB4NDArMHgzZV0uUAorcHJpbnRmICJ0bGJbMHgzZl06ICUwOGx4ICUwOGx4ICAlMDhseCAlMDhseFxuIixfX2RlYnVnX21tdS50bGJbMHgzZl0uTCxfX2RlYnVnX21tdS50bGJbMHgzZl0uUCxfX2RlYnVnX21tdS50bGJbMHg0MCsweDNmXS5MLF9fZGVidWdfbW11LnRsYlsweDQwKzB4M2ZdLlAKK2VuZAorCisKK2RlZmluZSBfcGdkCitwIChwZ2RfdFsweDQwXSkqKHBnZF90KikoX19kZWJ1Z19tbXUuZGFtclsweDNdLkwpCitlbmQKKworZGVmaW5lIF9wdGRfaQorcCAocHRlX3RbMHgxMDAwXSkqKHB0ZV90KikoX19kZWJ1Z19tbXUuZGFtclsweDRdLkwpCitlbmQKKworZGVmaW5lIF9wdGRfZAorcCAocHRlX3RbMHgxMDAwXSkqKHB0ZV90KikoX19kZWJ1Z19tbXUuZGFtclsweDVdLkwpCitlbmQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZnJ2L2dkYnN0dWIudHh0IGIvRG9jdW1lbnRhdGlvbi9mcnYvZ2Ric3R1Yi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkyYmZkOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZnJ2L2dkYnN0dWIudHh0CkBAIC0wLDAgKzEsMTMwIEBACisJCQkgICAgID09PT09PT09PT09PT09PT09PT09CisJCQkgICAgIERFQlVHR0lORyBGUi1WIExJTlVYCisJCQkgICAgID09PT09PT09PT09PT09PT09PT09CisKKworVGhlIGtlcm5lbCBjb250YWlucyBhIEdEQiBzdHViIHRoYXQgdGFsa3MgR0RCIHJlbW90ZSBwcm90b2NvbCBhY3Jvc3MgYSBzZXJpYWwKK3BvcnQuIFRoaXMgcGVybWl0cyBHREIgdG8gc2luZ2xlIHN0ZXAgdGhyb3VnaCB0aGUga2VybmVsLCBzZXQgYnJlYWtwb2ludHMgYW5kCit0cmFwIGV4Y2VwdGlvbnMgdGhhdCBoYXBwZW4gaW4ga2VybmVsIHNwYWNlIGFuZCBpbnRlcnJ1cHQgZXhlY3V0aW9uLiBJdCBhbHNvCitwZXJtaXRzIHRoZSBOTUkgaW50ZXJydXB0IGJ1dHRvbiBvciBzZXJpYWwgcG9ydCBldmVudHMgdG8ganVtcCB0aGUga2VybmVsIGludG8KK3RoZSBkZWJ1Z2dlci4KKworT24gdGhlIENQVXMgdGhhdCBoYXZlIG9uLWNoaXAgVUFSVHMgKEZSNDAwLCBGUjQwMywgRlI0MDUsIEZSNTU1KSwgdGhlCitHREIgc3R1YiBoaWphY2tzIGEgc2VyaWFsIHBvcnQgZm9yIGl0cyBvd24gcHVycG9zZXMsIGFuZCBtYWtlcyBpdAorZ2VuZXJhdGUgbGV2ZWwgMTUgaW50ZXJydXB0cyAoTk1JKS4gVGhlIGtlcm5lbCBwcm9wZXIgY2Fubm90IHNlZSB0aGUgc2VyaWFsCitwb3J0IGluIHF1ZXN0aW9uIHVuZGVyIHRoZXNlIGNvbmRpdGlvbnMuCisKK09uIHRoZSBNQjkzMDkxLVZESyBDUFUgYm9hcmRzLCB0aGUgR0RCIHN0dWIgdXNlcyBVQVJUMSwgd2hpY2ggd291bGQgb3RoZXJ3aXNlCitiZSAvZGV2L3R0eVMxLiBPbiB0aGUgTUI5MzA5My1QREssIHRoZSBHREIgc3R1YiB1c2VzIFVBUlQwLiBUaGVyZWZvcmUsIG9uIHRoZQorUERLIHRoZXJlIGlzIG5vIGV4dGVybmFsbHkgYWNjZXNzaWJsZSBzZXJpYWwgcG9ydCBhbmQgdGhlIHNlcmlhbCBwb3J0IHRvCit3aGljaCB0aGUgdG91Y2ggc2NyZWVuIGlzIGF0dGFjaGVkIGJlY29tZXMgL2Rldi90dHlTMC4KKworTm90ZSB0aGF0IHRoZSBHREIgc3R1YiBydW5zIGVudGlyZWx5IHdpdGhpbiBDUFUgZGVidWcgbW9kZSwgYW5kIHNvIHNob3VsZCBub3QKK2luY3VyIGFueSBleGNlcHRpb25zIG9yIGludGVycnVwdHMgd2hpbHN0IGl0IGlzIGFjdGl2ZS4gSW4gcGFydGljdWxhciwgbm90ZQordGhhdCB0aGUgY2xvY2sgd2lsbCBsb3NlIHRpbWUgc2luY2UgaXQgaXMgaW1wbGVtZW50ZWQgaW4gc29mdHdhcmUuCisKKworPT09PT09PT09PT09PT09PT09CitLRVJORUwgUFJFUEFSQVRJT04KKz09PT09PT09PT09PT09PT09PQorCitGaXJzdGx5LCBhIGRlYnVnZ2FibGUga2VybmVsIG11c3QgYmUgYnVpbHQuIFRvIGRvIHRoaXMsIHVucGFjayB0aGUga2VybmVsIHRyZWUKK2FuZCBjb3B5IHRoZSBjb25maWd1cmF0aW9uIHRoYXQgeW91IHdpc2ggdG8gdXNlIHRvIC5jb25maWcuIFRoZW4gcmVjb25maWd1cmUKK3RoZSBmb2xsb3dpbmcgdGhpbmdzIG9uIHRoZSAiS2VybmVsIEhhY2tpbmciIHRhYjoKKworICAoKikgIkluY2x1ZGUgZGVidWdnaW5nIGluZm9ybWF0aW9uIgorCisgICAgICBTZXQgdGhpcyB0byAiWSIuIFRoaXMgY2F1c2VzIGFsbCBDIGFuZCBBc3NlbWJseSBmaWxlcyB0byBiZSBjb21waWxlZAorICAgICAgdG8gaW5jbHVkZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uCisKKyAgKCopICJJbi1rZXJuZWwgR0RCIHN0dWIiCisKKyAgICAgIFNldCB0aGlzIHRvICJZIi4gVGhpcyBjYXVzZXMgdGhlIEdEQiBzdHViIHRvIGJlIGNvbXBpbGVkIGludG8gdGhlCisgICAgICBrZXJuZWwuCisKKyAgKCopICJJbW1lZGlhdGUgYWN0aXZhdGlvbiIKKworICAgICAgU2V0IHRoaXMgdG8gIlkiIGlmIHlvdSB3YW50IHRoZSBHREIgc3R1YiB0byBhY3RpdmF0ZSBhcyBzb29uIGFzIHBvc3NpYmxlCisgICAgICBhbmQgd2FpdCBmb3IgR0RCIHRvIGNvbm5lY3QuIFRoaXMgYWxsb3dzIHlvdSB0byBzdGFydCB0cmFjaW5nIHJpZ2h0IGZyb20KKyAgICAgIHRoZSBiZWdpbm5pbmcgb2Ygc3RhcnRfa2VybmVsKCkgaW4gaW5pdC9tYWluLmMuCisKKyAgKCopICJDb25zb2xlIHRocm91Z2ggR0RCIHN0dWIiCisKKyAgICAgIFNldCB0aGlzIHRvICJZIiBpZiB5b3Ugd2lzaCB0byBiZSBhYmxlIHRvIHVzZSAiY29uc29sZT1nZGIwIiBvbiB0aGUKKyAgICAgIGNvbW1hbmQgbGluZS4gVGhhdCB0ZWxscyB0aGUga2VybmVsIHRvIHBhc3Mgc3lzdGVtIGNvbnNvbGUgbWVzc2FnZXMgdG8KKyAgICAgIEdEQiAod2hpY2ggdGhlbiBwcmludHMgdGhlbSBvbiBpdHMgc3RhbmRhcmQgb3V0cHV0KS4gVGhpcyBpcyB1c2VmdWwgd2hlbgorICAgICAgZGVidWdnaW5nIHRoZSBzZXJpYWwgZHJpdmVycyB0aGF0J2Qgb3RoZXJ3aXNlIGJlIHVzZWQgdG8gcGFzcyBjb25zb2xlCisgICAgICBtZXNzYWdlcyB0byB0aGUgb3V0c2lkZSB3b3JsZC4KKworVGhlbiBidWlsZCBhcyB1c3VhbCwgZG93bmxvYWQgdG8gdGhlIGJvYXJkIGFuZCBleGVjdXRlLiBOb3RlIHRoYXQgaWYKKyJJbW1lZGlhdGUgYWN0aXZhdGlvbiIgd2FzIHNlbGVjdGVkLCB0aGVuIHRoZSBrZXJuZWwgd2lsbCB3YWl0IGZvciBHREIgdG8KK2F0dGFjaC4gSWYgbm90LCB0aGVuIHRoZSBrZXJuZWwgd2lsbCBib290IGltbWVkaWF0ZWx5IGFuZCBHREIgd2lsbCBoYXZlIHRvCitpbnRlcnJ1cHQgaXQgb3Igd2FpdCBmb3IgYW4gZXhjZXB0aW9uIHRvIG9jY3VyIGJlZm9yZSBkb2luZyBhbnl0aGluZyB3aXRoCit0aGUga2VybmVsLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT0KK0tFUk5FTCBERUJVR0dJTkcgV0lUSCBHREIKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworU2V0IHRoZSBzZXJpYWwgcG9ydCBvbiB0aGUgY29tcHV0ZXIgdGhhdCdzIGdvaW5nIHRvIHJ1biBHREIgdG8gdGhlIGFwcHJvcHJpYXRlCitiYXVkIHJhdGUuIEFzc3VtaW5nIHRoZSBib2FyZCdzIGRlYnVnIHBvcnQgaXMgY29ubmVjdGVkIHRvIHR0eVMwL0NPTTEgb24gdGhlCitjb21wdXRlciBkb2luZyB0aGUgZGVidWdnaW5nOgorCisJc3R0eSAtRiAvZGV2L3R0eVMwIDExNTIwMAorCitUaGVuIHN0YXJ0IEdEQiBpbiB0aGUgYmFzZSBvZiB0aGUga2VybmVsIHRyZWU6CisKKwlmcnYtdWNsaW51eC1nZGIgbGludXgJCVt1Q2xpbnV4XQorCitPcjoKKworCWZydi11Y2xpbnV4LWdkYiB2bWxpbnV4CQlbTU1VIGxpbnV4XQorCitXaGVuIHRoZSBwcm9tcHQgYXBwZWFyczoKKworCUdOVSBnZGIgZnJ2LTAzMTAyNAorCUNvcHlyaWdodCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCUdEQiBpcyBmcmVlIHNvZnR3YXJlLCBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYW5kIHlvdSBhcmUKKwl3ZWxjb21lIHRvIGNoYW5nZSBpdCBhbmQvb3IgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgaXQgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zLgorCVR5cGUgInNob3cgY29weWluZyIgdG8gc2VlIHRoZSBjb25kaXRpb25zLgorCVRoZXJlIGlzIGFic29sdXRlbHkgbm8gd2FycmFudHkgZm9yIEdEQi4gIFR5cGUgInNob3cgd2FycmFudHkiIGZvciBkZXRhaWxzLgorCVRoaXMgR0RCIHdhcyBjb25maWd1cmVkIGFzICItLWhvc3Q9aTY4Ni1wYy1saW51eC1nbnUgLS10YXJnZXQ9ZnJ2LXVjbGludXgiLi4uCisJKGdkYikKKworQXR0YWNoIHRvIHRoZSBib2FyZCBsaWtlIHRoaXM6CisKKyAgICAgICAgKGdkYikgdGFyZ2V0IHJlbW90ZSAvZGV2L3R0eVMwCisJUmVtb3RlIGRlYnVnZ2luZyB1c2luZyAvZGV2L3R0eVMwCisJc3RhcnRfa2VybmVsICgpIGF0IGluaXQvbWFpbi5jOjM5NQorCShnZGIpCisKK1RoaXMgc2hvdWxkIHNob3cgdGhlIGFwcHJvcHJpYXRlIGxpbmVzIGZyb20gdGhlIHNvdXJjZSB0b28uIFRoZSBrZXJuZWwgY2FuCit0aGVuIGJlIGRlYnVnZ2VkIGFsbW9zdCBhcyBpZiBpdCdzIGFueSBvdGhlciBwcm9ncmFtLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0lOVEVSUlVQVElORyBUSEUgUlVOTklORyBLRVJORUwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGtlcm5lbCBjYW4gYmUgaW50ZXJydXB0ZWQgd2hpbHN0IGl0IGlzIHJ1bm5pbmcsIGNhdXNpbmcgYSBqdW1wIGJhY2sgdG8gdGhlCitHREIgc3R1YiBhbmQgdGhlIGRlYnVnZ2VyOgorCisgICgqKSBQcmVzc2luZyBDdHJsLUMgaW4gR0RCLiBUaGlzIHdpbGwgY2F1c2UgR0RCIHRvIHRyeSBhbmQgaW50ZXJydXB0IHRoZQorICAgICAga2VybmVsIGJ5IHNlbmRpbmcgYW4gUlMyMzIgQlJFQUsgb3ZlciB0aGUgc2VyaWFsIGxpbmUgdG8gdGhlIEdEQgorICAgICAgc3R1Yi4gVGhpcyB3aWxsIChtb3N0bHkpIGltbWVkaWF0ZWx5IGludGVycnVwdCB0aGUga2VybmVsIGFuZCByZXR1cm4gaXQKKyAgICAgIHRvIHRoZSBkZWJ1Z2dlci4KKworICAoKikgUHJlc3NpbmcgdGhlIE5NSSBidXR0b24gb24gdGhlIGJvYXJkIHdpbGwgYWxzbyBjYXVzZSBhIGp1bXAgaW50byB0aGUKKyAgICAgIGRlYnVnZ2VyLgorCisgICgqKSBTZXR0aW5nIGEgc29mdHdhcmUgYnJlYWtwb2ludC4gVGhpcyBzZXRzIGEgYnJlYWsgaW5zdHJ1Y3Rpb24gYXQgdGhlCisgICAgICBkZXNpcmVkIGxvY2F0aW9uIHdoaWNoIHRoZSBHREIgc3R1YiB0aGVuIHRyYXBzIHRoZSBleGNlcHRpb24gZm9yLgorCisgICgqKSBTZXR0aW5nIGEgaGFyZHdhcmUgYnJlYWtwb2ludC4gVGhlIEdEQiBzdHViIGlzIGNhcGFibGUgb2YgdXNpbmcgdGhlIElCQVIKKyAgICAgIGFuZCBEQkFSIHJlZ2lzdGVycyB0byBhc3Npc3QgZGVidWdnaW5nLgorCitGdXJ0aGVybW9yZSwgdGhlIEdEQiBzdHViIHdpbGwgaW50ZXJjZXB0IGEgbnVtYmVyIG9mIGV4Y2VwdGlvbnMgYXV0b21hdGljYWxseQoraWYgdGhleSBhcmUgY2F1c2VkIGJ5IGtlcm5lbCBleGVjdXRpb24uIEl0IHdpbGwgYWxzbyBpbnRlcmNlcHQgQlVHKCkgbWFjcm8KK2ludm9jYXRpb24uCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZnJ2L2tlcm5lbC1BQkkudHh0IGIvRG9jdW1lbnRhdGlvbi9mcnYva2VybmVsLUFCSS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFhMWNlYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZnJ2L2tlcm5lbC1BQkkudHh0CkBAIC0wLDAgKzEsMjYyIEBACisJCQk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwkJCUlOVEVSTkFMIEtFUk5FTCBBQkkgRk9SIEZSLVYgQVJDSAorCQkJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBpbnRlcm5hbCBGUlYga2VybmVsIEFCSSBpcyBub3QgcXVpdGUgdGhlIHNhbWUgYXMgdGhlIHVzZXJzcGFjZSBBQkkuIEEKK251bWJlciBvZiB0aGUgcmVnaXN0ZXJzIGFyZSB1c2VkIGZvciBzcGVjaWFsIHB1cnBvc2VkLCBhbmQgdGhlIEFCSSBpcyBub3QKK2NvbnNpc3RlbnQgYmV0d2VlbiBtb2R1bGVzIHZzIGNvcmUsIGFuZCBNTVUgdnMgbm8tTU1VLgorCitUaGlzIHBhcnRseSBzdGVtcyBmcm9tIHRoZSBmYWN0IHRoYXQgRlJWIENQVXMgZG8gbm90IGhhdmUgYSBzZXBhcmF0ZQorc3VwZXJ2aXNvciBzdGFjayBwb2ludGVyLCBhbmQgbW9zdCBvZiB0aGVtIGRvIG5vdCBoYXZlIGFueSBzY3JhdGNoCityZWdpc3RlcnMsIHRodXMgcmVxdWlyaW5nIGF0IGxlYXN0IG9uZSBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXIgdG8gYmUKK2Nsb2JiZXJlZCBpbiBzdWNoIGFuIGV2ZW50LiBBbHNvLCB3aXRoaW4gdGhlIGtlcm5lbCBjb3JlLCBpdCBpcyBwb3NzaWJsZSB0bworc2ltcGx5IGp1bXAgb3IgY2FsbCBkaXJlY3RseSBiZXR3ZWVuIGZ1bmN0aW9ucyB1c2luZyBhIHJlbGF0aXZlIG9mZnNldC4KK1RoaXMgY2Fubm90IGJlIGV4dGVuZGVkIHRvIG1vZHVsZXMgZm9yIHRoZSBkaXNwbGFjZW1lbnQgaXMgbGlrZWx5IHRvIGJlIHRvbworZmFyLiBUaHVzIGluIG1vZHVsZXMgdGhlIGFkZHJlc3Mgb2YgYSBmdW5jdGlvbiB0byBjYWxsIG11c3QgYmUgY2FsY3VsYXRlZAoraW4gYSByZWdpc3RlciBhbmQgdGhlbiB1c2VkLCByZXF1aXJpbmcgdHdvIGV4dHJhIGluc3RydWN0aW9ucy4KKworVGhpcyBkb2N1bWVudCBoYXMgdGhlIGZvbGxvd2luZyBzZWN0aW9uczoKKworICgqKSBTeXN0ZW0gY2FsbCByZWdpc3RlciBBQkkKKyAoKikgQ1BVIG9wZXJhdGluZyBtb2RlcworICgqKSBJbnRlcm5hbCBrZXJuZWwtbW9kZSByZWdpc3RlciBBQkkKKyAoKikgSW50ZXJuYWwgZGVidWctbW9kZSByZWdpc3RlciBBQkkKKyAoKikgVmlydHVhbCBpbnRlcnJ1cHQgaGFuZGxpbmcKKworCis9PT09PT09PT09PT09PT09PT09PT09PT0KK1NZU1RFTSBDQUxMIFJFR0lTVEVSIEFCSQorPT09PT09PT09PT09PT09PT09PT09PT09CisKK1doZW4gYSBzeXN0ZW0gY2FsbCBpcyBtYWRlLCB0aGUgZm9sbG93aW5nIHJlZ2lzdGVycyBhcmUgZWZmZWN0aXZlOgorCisJUkVHSVNURVJTCUNBTEwJCQlSRVRVUk4KKwk9PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT0KKwlHUjcJCVN5c3RlbSBjYWxsIG51bWJlcglQcmVzZXJ2ZWQKKwlHUjgJCVN5c2NhbGwgYXJnICMxCQlSZXR1cm4gdmFsdWUKKwlHUjktR1IxMwlTeXNjYWxsIGFyZyAjMi02CVByZXNlcnZlZAorCisKKz09PT09PT09PT09PT09PT09PT0KK0NQVSBPUEVSQVRJTkcgTU9ERVMKKz09PT09PT09PT09PT09PT09PT0KKworVGhlIEZSLVYgQ1BVIGhhcyB0aHJlZSBiYXNpYyBvcGVyYXRpbmcgbW9kZXMuIEluIG9yZGVyIG9mIGluY3JlYXNpbmcKK2NhcGFiaWxpdHk6CisKKyAgKDEpIFVzZXIgbW9kZS4KKworICAgICAgQmFzaWMgdXNlcnNwYWNlIHJ1bm5pbmcgbW9kZS4KKworICAoMikgS2VybmVsIG1vZGUuCisKKyAgICAgIE5vcm1hbCBrZXJuZWwgbW9kZS4gVGhlcmUgYXJlIG1hbnkgYWRkaXRpb25hbCBjb250cm9sIHJlZ2lzdGVycworICAgICAgYXZhaWxhYmxlIHRoYXQgbWF5IGJlIGFjY2Vzc2VkIGluIHRoaXMgbW9kZSwgaW4gYWRkaXRpb24gdG8gYWxsIHRoZQorICAgICAgc3R1ZmYgYXZhaWxhYmxlIHRvIHVzZXIgbW9kZS4gVGhpcyBoYXMgdHdvIHN1Ym1vZGVzOgorCisgICAgICAoYSkgRXhjZXB0aW9ucyBlbmFibGVkIChQU1IuVCA9PSAxKS4KKworCSAgRXhjZXB0aW9ucyB3aWxsIGludm9rZSB0aGUgYXBwcm9wcmlhdGUgbm9ybWFsIGtlcm5lbCBtb2RlCisJICBoYW5kbGVyLiBPbiBlbnRyeSB0byB0aGUgaGFuZGxlciwgdGhlIFBTUi5UIGJpdCB3aWxsIGJlIGNsZWFyZWQuCisKKyAgICAgIChiKSBFeGNlcHRpb25zIGRpc2FibGVkIChQU1IuVCA9PSAwKS4KKworCSAgTm8gZXhjZXB0aW9ucyBvciBpbnRlcnJ1cHRzIG1heSBoYXBwZW4uIEFueSBtYW5kYXRvcnkgZXhjZXB0aW9ucworCSAgd2lsbCBjYXVzZSB0aGUgQ1BVIHRvIGhhbHQgdW5sZXNzIHRoZSBDUFUgaXMgdG9sZCB0byBqdW1wIGludG8KKwkgIGRlYnVnIG1vZGUgaW5zdGVhZC4KKworICAoMykgRGVidWcgbW9kZS4KKworICAgICAgTm8gZXhjZXB0aW9ucyBtYXkgaGFwcGVuIGluIHRoaXMgbW9kZS4gTWVtb3J5IHByb3RlY3Rpb24gYW5kCisgICAgICBtYW5hZ2VtZW50IGV4Y2VwdGlvbnMgd2lsbCBiZSBmbGFnZ2VkIGZvciBsYXRlciBjb25zaWRlcmF0aW9uLCBidXQKKyAgICAgIHRoZSBleGNlcHRpb24gaGFuZGxlciB3b24ndCBiZSBpbnZva2VkLiBEZWJ1Z2dpbmcgdHJhcHMgc3VjaCBhcworICAgICAgaGFyZHdhcmUgYnJlYWtwb2ludHMgYW5kIHdhdGNocG9pbnRzIHdpbGwgYmUgaWdub3JlZC4gVGhpcyBtb2RlIGlzCisgICAgICBlbnRlcmVkIG9ubHkgYnkgZGVidWdnaW5nIGV2ZW50cyBvYnRhaW5lZCBmcm9tIHRoZSBvdGhlciB0d28gbW9kZXMuCisKKyAgICAgIEFsbCBrZXJuZWwgbW9kZSByZWdpc3RlcnMgbWF5IGJlIGFjY2Vzc2VkLCBwbHVzIGEgZmV3IGV4dHJhIGRlYnVnZ2luZworICAgICAgc3BlY2lmaWMgcmVnaXN0ZXJzLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorSU5URVJOQUwgS0VSTkVMLU1PREUgUkVHSVNURVIgQUJJCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlcmUgYXJlIGEgbnVtYmVyIG9mIHBlcm1hbmVudCByZWdpc3RlciBhc3NpZ25tZW50cyB0aGF0IGFyZSBzZXQgdXAgYnkKK2VudHJ5LlMgaW4gdGhlIGV4Y2VwdGlvbiBwcm9sb2d1ZS4gTm90ZSB0aGF0IHRoZXJlIGlzIGEgY29tcGxldGUgc2V0IG9mCitleGNlcHRpb24gcHJvbG9ndWVzIGZvciBlYWNoIG9mIHVzZXItPmtlcm5lbCB0cmFuc2l0aW9uIGFuZCBrZXJuZWwtPmtlcm5lbAordHJhbnNpdGlvbi4gVGhlcmUgYXJlIGFsc28gdXNlci0+ZGVidWcgYW5kIGtlcm5lbC0+ZGVidWcgbW9kZSB0cmFuc2l0aW9uCitwcm9sb2d1ZXMuCisKKworCVJFR0lTVEVSCUZMQVZPVVIJVVNFCisJPT09PT09PT09PT09PT09CT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCUdSMQkJCVN1cGVydmlzb3Igc3RhY2sgcG9pbnRlcgorCUdSMTUJCQlDdXJyZW50IHRocmVhZCBpbmZvIHBvaW50ZXIKKwlHUjE2CQkJR1AtUmVsIGJhc2UgcmVnaXN0ZXIgZm9yIHNtYWxsIGRhdGEKKwlHUjI4CQkJQ3VycmVudCBleGNlcHRpb24gZnJhbWUgcG9pbnRlciAoX19mcmFtZSkKKwlHUjI5CQkJQ3VycmVudCB0YXNrIHBvaW50ZXIgKGN1cnJlbnQpCisJR1IzMAkJCURlc3Ryb3llZCBieSBrZXJuZWwgbW9kZSBlbnRyeQorCUdSMzEJCU5PTU1VCURlc3Ryb3llZCBieSBkZWJ1ZyBtb2RlIGVudHJ5CisJR1IzMQkJTU1VCURlc3Ryb3llZCBieSBUTEIgbWlzcyBrZXJuZWwgbW9kZSBlbnRyeQorCUNDUi5JQ0MyCQlWaXJ0dWFsIGludGVycnVwdCBkaXNhYmxlbWVudCB0cmFja2luZworCUNDQ1IuQ0MzCQlDbGVhcmVkIGJ5IGV4Y2VwdGlvbiBwcm9sb2d1ZSAKKwkJCQkoYXRvbWljIG9wIGVtdWxhdGlvbikKKwlTQ1IwCQlNTVUJU2VlIG1tdS1sYXlvdXQudHh0LgorCVNDUjEJCU1NVQlTZWUgbW11LWxheW91dC50eHQuCisJU0NSMgkJTU1VCVNhdmUgZm9yIEVBUjAgKGRlc3Ryb3llZCBieSBpY2FjaGUgaW5zbnMgCisJCQkJCSAgICAgICBpbiBkZWJ1ZyBtb2RlKQorCVNDUjMJCU1NVQlTYXZlIGZvciBHUjMxIGR1cmluZyBkZWJ1ZyBleGNlcHRpb25zCisJREFNUi9JQU1SCU5PTU1VCUZpeGVkIG1lbW9yeSBwcm90ZWN0aW9uIGxheW91dC4KKwlEQU1SL0lBTVIJTU1VCVNlZSBtbXUtbGF5b3V0LnR4dC4KKworCitDZXJ0YWluIHJlZ2lzdGVycyBhcmUgYWxzbyB1c2VkIG9yIG1vZGlmaWVkIGFjcm9zcyBmdW5jdGlvbiBjYWxsczoKKworCVJFR0lTVEVSCUNBTEwJCQkJUkVUVVJOCisJPT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PQorCUdSMAkJRml4ZWQgWmVybwkJCS0KKwlHUjIJCUZ1bmN0aW9uIGNhbGwgZnJhbWUgcG9pbnRlcgorCUdSMwkJU3BlY2lhbAkJCQlQcmVzZXJ2ZWQKKwlHUjMtR1I3CQktCQkJCUNsb2JiZXJlZAorCUdSOAkJRnVuY3Rpb24gY2FsbCBhcmcgIzEJCVJldHVybiB2YWx1ZSAKKwkJCQkJCQkob3IgY2xvYmJlcmVkKQorCUdSOQkJRnVuY3Rpb24gY2FsbCBhcmcgIzIJCVJldHVybiB2YWx1ZSBNU1cgCisJCQkJCQkJKG9yIGNsb2JiZXJlZCkKKwlHUjEwLUdSMTMJRnVuY3Rpb24gY2FsbCBhcmcgIzMtIzYJCUNsb2JiZXJlZAorCUdSMTQJCS0JCQkJQ2xvYmJlcmVkCisJR1IxNS1HUjE2CVNwZWNpYWwJCQkJUHJlc2VydmVkCisJR1IxNy1HUjI3CS0JCQkJUHJlc2VydmVkCisJR1IyOC1HUjMxCVNwZWNpYWwJCQkJT25seSBhY2Nlc3NlZCAKKwkJCQkJCQlleHBsaWNpdGx5CisJTFIJCVJldHVybiBhZGRyZXNzIGFmdGVyIENBTEwJQ2xvYmJlcmVkCisJQ0NSL0NDQ1IJLQkJCQlNb3N0bHkgQ2xvYmJlcmVkCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0lOVEVSTkFMIERFQlVHLU1PREUgUkVHSVNURVIgQUJJCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBrZXJuZWwtbW9kZSByZWdpc3RlciBBQkkgZm9yIGZ1bmN0aW9ucyBjYWxscy4gVGhlCitkaWZmZXJlbmNlIGlzIHRoYXQgaW4gZGVidWctbW9kZSB0aGVyZSdzIGEgZGlmZmVyZW50IHN0YWNrIGFuZCBhIGRpZmZlcmVudAorZXhjZXB0aW9uIGZyYW1lLiBBbG1vc3QgYWxsIHRoZSBnbG9iYWwgcmVnaXN0ZXJzIGZyb20ga2VybmVsLW1vZGUKKyhpbmNsdWRpbmcgdGhlIHN0YWNrIHBvaW50ZXIpIG1heSBiZSBjaGFuZ2VkLgorCisJUkVHSVNURVIJRkxBVk9VUglVU0UKKwk9PT09PT09PT09PT09PT0JPT09PT09PQk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJR1IxCQkJRGVidWcgc3RhY2sgcG9pbnRlcgorCUdSMTYJCQlHUC1SZWwgYmFzZSByZWdpc3RlciBmb3Igc21hbGwgZGF0YQorCUdSMzEJCQlDdXJyZW50IGRlYnVnIGV4Y2VwdGlvbiBmcmFtZSBwb2ludGVyIAorCQkJCShfX2RlYnVnX2ZyYW1lKQorCVNDUjMJCU1NVQlTYXZlZCB2YWx1ZSBvZiBHUjMxCisKKworTm90ZSB0aGF0IGRlYnVnIG1vZGUgaXMgYWJsZSB0byBpbnRlcmZlcmUgd2l0aCB0aGUga2VybmVsJ3MgZW11bGF0ZWQgYXRvbWljCitvcHMsIHNvIGl0IG11c3QgYmUgZXhjZWVkaW5nbHkgY2FyZWZ1bCBub3QgdG8gZG8gYW55IHRoYXQgd291bGQgaW50ZXJhY3QKK3dpdGggdGhlIG1haW4ga2VybmVsIGluIHRoaXMgcmVnYXJkLiBIZW5jZSB0aGUgZGVidWcgbW9kZSBjb2RlIChnZGJzdHViKSBpcworYWxtb3N0IGNvbXBsZXRlbHkgc2VsZi1jb250YWluZWQuIFRoZSBvbmx5IGV4dGVybmFsIGNvZGUgdXNlZCBpcyB0aGUKK3NwcmludGYgZmFtaWx5IG9mIGZ1bmN0aW9ucy4KKworRnVydGhlcm1vcmUsIGJyZWFrLlMgaXMgc28gY29tcGxpY2F0ZWQgYmVjYXVzZSBzaW5nbGUtc3RlcCBtb2RlIGRvZXMgbm90Citzd2l0Y2ggb2ZmIG9uIGVudHJ5IHRvIGFuIGV4Y2VwdGlvbi4gVGhhdCBtZWFucyB1bmxlc3MgbWFudWFsbHkgZGlzYWJsZWQsCitzaW5nbGUtc3RlcHBpbmcgd2lsbCBibGl0aGVseSBnbyBvbiBzdGVwcGluZyBpbnRvIHRoaW5ncyBsaWtlIGludGVycnVwdHMuCitTZWUgZ2Ric3R1Yi50eHQgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT0KK1ZJUlRVQUwgSU5URVJSVVBUIEhBTkRMSU5HCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitCZWNhdXNlIGFjY2Vzc2VzIHRvIHRoZSBQU1IgaXMgc28gc2xvdywgYW5kIHRvIGRpc2FibGUgaW50ZXJydXB0cyB3ZSBoYXZlCit0byBhY2Nlc3MgaXQgdHdpY2UgKG9uY2UgdG8gcmVhZCBhbmQgb25jZSB0byB3cml0ZSksIHdlIGRvbid0IGFjdHVhbGx5CitkaXNhYmxlIGludGVycnVwdHMgYXQgYWxsIGlmIHdlIGRvbid0IGhhdmUgdG8uIFdoYXQgd2UgZG8gaW5zdGVhZCBpcyB1c2UKK3RoZSBJQ0MyIGNvbmRpdGlvbiBjb2RlIGZsYWdzIHRvIG5vdGUgdmlydHVhbCBkaXNhYmxlbWVudCwgc3VjaCB0aGF0IGlmIHdlCit0aGVuIGRvIHRha2UgYW4gaW50ZXJydXB0LCB3ZSBub3RlIHRoZSBmbGFnLCByZWFsbHkgZGlzYWJsZSBpbnRlcnJ1cHRzLCBzZXQKK2Fub3RoZXIgZmxhZyBhbmQgcmVzdW1lIGV4ZWN1dGlvbiBhdCB0aGUgcG9pbnQgdGhlIGludGVycnVwdCBoYXBwZW5lZC4KK1NldHRpbmcgY29uZGl0aW9uIGZsYWdzIGFzIGEgc2lkZSBlZmZlY3Qgb2YgYW4gYXJpdGhtZXRpYyBvciBsb2dpY2FsCitpbnN0cnVjdGlvbiBpcyByZWFsbHkgZmFzdC4gVGhpcyB1c2Ugb2YgdGhlIElDQzIgb25seSBvY2N1cnMgd2l0aGluIHRoZQora2VybmVsIC0gaXQgZG9lcyBub3QgYWZmZWN0IHVzZXJzcGFjZS4KKworVGhlIGZsYWdzIHdlIHVzZSBhcmU6CisKKyAoKikgQ0NSLklDQzIuWiBbWmVybyBmbGFnXQorCisgICAgIFNldCB0byB2aXJ0dWFsbHkgZGlzYWJsZSBpbnRlcnJ1cHRzLCBjbGVhciB3aGVuIGludGVycnVwdHMgYXJlCisgICAgIHZpcnR1YWxseSBlbmFibGVkLiBDYW4gYmUgbW9kaWZpZWQgYnkgbG9naWNhbCBpbnN0cnVjdGlvbnMgd2l0aG91dAorICAgICBhZmZlY3RpbmcgdGhlIENhcnJ5IGZsYWcuCisKKyAoKikgQ0NSLklDQzIuQyBbQ2FycnkgZmxhZ10KKworICAgICBDbGVhciB0byBpbmRpY2F0ZSBoYXJkd2FyZSBpbnRlcnJ1cHRzIGFyZSByZWFsbHkgZGlzYWJsZWQsIHNldCBvdGhlcndpc2UuCisKKworV2hhdCBoYXBwZW5zIGlzIHRoaXM6CisKKyAoMSkgTm9ybWFsIGtlcm5lbC1tb2RlIG9wZXJhdGlvbi4KKworCUlDQzIuWiBpcyAwLCBJQ0MyLkMgaXMgMS4KKworICgyKSBBbiBpbnRlcnJ1cHQgb2NjdXJzLiBUaGUgZXhjZXB0aW9uIHByb2xvZ3VlIGV4YW1pbmVzIElDQzIuWiBhbmQKKyAgICAgZGV0ZXJtaW5lcyB0aGF0IG5vdGhpbmcgbmVlZHMgZG9pbmcuIFRoaXMgaXMgZG9uZSBzaW1wbHkgd2l0aCBhbgorICAgICB1bmxpa2VseSBCRVEgaW5zdHJ1Y3Rpb24uCisKKyAoMykgVGhlIGludGVycnVwdHMgYXJlIGRpc2FibGVkIChsb2NhbF9pcnFfZGlzYWJsZSkKKworCUlDQzIuWiBpcyBzZXQgdG8gMS4KKworICg0KSBJZiBpbnRlcnJ1cHRzIHdlcmUgdGhlbiByZS1lbmFibGVkIChsb2NhbF9pcnFfZW5hYmxlKToKKworCUlDQzIuWiB3b3VsZCBiZSBzZXQgdG8gMC4KKworICAgICBBIFRJSEkgIzIgaW5zdHJ1Y3Rpb24gKHRyYXAgIzIgaWYgY29uZGl0aW9uIEhJIC0gWj09MCAmJiBDPT0wKSB3b3VsZAorICAgICBiZSB1c2VkIHRvIHRyYXAgaWYgaW50ZXJydXB0cyB3ZXJlIG5vdyB2aXJ0dWFsbHkgZW5hYmxlZCwgYnV0CisgICAgIHBoeXNpY2FsbHkgZGlzYWJsZWQgLSB3aGljaCB0aGV5J3JlIG5vdCwgc28gdGhlIHRyYXAgaXNuJ3QgdGFrZW4uIFRoZQorICAgICBrZXJuZWwgd291bGQgdGhlbiBiZSBiYWNrIHRvIHN0YXRlICgxKS4KKworICg1KSBBbiBpbnRlcnJ1cHQgb2NjdXJzLiBUaGUgZXhjZXB0aW9uIHByb2xvZ3VlIGV4YW1pbmVzIElDQzIuWiBhbmQKKyAgICAgZGV0ZXJtaW5lcyB0aGF0IHRoZSBpbnRlcnJ1cHQgc2hvdWxkbid0IGFjdHVhbGx5IGhhdmUgaGFwcGVuZWQuIEl0CisgICAgIGp1bXBzIGFzaWRlLCBhbmQgdGhlcmUgZGlzYWJsZWQgaW50ZXJydXB0cyBieSBzZXR0aW5nIFBTUi5QSUwgdG8gMTQKKyAgICAgYW5kIHRoZW4gaXQgY2xlYXJzIElDQzIuQy4KKworICg2KSBJZiBpbnRlcnJ1cHRzIHdlcmUgdGhlbiBzYXZlZCBhbmQgZGlzYWJsZWQgYWdhaW4gKGxvY2FsX2lycV9zYXZlKToKKworCUlDQzIuWiB3b3VsZCBiZSBzaGlmdGVkIGludG8gdGhlIHNhdmUgdmFyaWFibGUgYW5kIG1hc2tlZCBvZmYgCisJKGdpdmluZyBhIDEpLgorCisJSUNDMi5aIHdvdWxkIHRoZW4gYmUgc2V0IHRvIDEgKHRodXMgdW5jaGFuZ2VkKSwgYW5kIElDQzIuQyB3b3VsZCBiZQorCXVuYWZmZWN0ZWQgKGllOiAwKS4KKworICg3KSBJZiBpbnRlcnJ1cHRzIHdlcmUgdGhlbiByZXN0b3JlZCBmcm9tIHN0YXRlICg2KSAobG9jYWxfaXJxX3Jlc3RvcmUpOgorCisJSUNDMi5aIHdvdWxkIGJlIHNldCB0byBpbmRpY2F0ZSB0aGUgcmVzdWx0IG9mIFhPUidpbmcgdGhlIHNhdmVkCisJdmFsdWUgKGllOiAxKSB3aXRoIDEsIHdoaWNoIGdpdmVzIGEgcmVzdWx0IG9mIDAgLSB0aHVzIGxlYXZpbmcKKwlJQ0MyLlogc2V0LgorCisJSUNDMi5DIHdvdWxkIHJlbWFpbiB1bmFmZmVjdGVkIChpZTogMCkuCisKKyAgICAgQSBUSUhJICMyIGluc3RydWN0aW9uIHdvdWxkIGJlIHVzZWQgdG8gYWdhaW4gYXNzYXkgdGhlIGN1cnJlbnQgc3RhdGUsCisgICAgIGJ1dCB0aGlzIHdvdWxkIGRvIG5vdGhpbmcgYXMgWj09MS4KKworICg4KSBJZiBpbnRlcnJ1cHRzIHdlcmUgdGhlbiBlbmFibGVkIChsb2NhbF9pcnFfZW5hYmxlKToKKworCUlDQzIuWiB3b3VsZCBiZSBjbGVhcmVkLiBJQ0MyLkMgd291bGQgYmUgbGVmdCB1bmFmZmVjdGVkLiBCb3RoCisJZmxhZ3Mgd291bGQgbm93IGJlIDAuCisKKyAgICAgQSBUSUhJICMyIGluc3RydWN0aW9uIGFnYWluIGlzc3VlZCB0byBhc3NheSB0aGUgY3VycmVudCBzdGF0ZSB3b3VsZAorICAgICB0aGVuIHRyYXAgYXMgYm90aCBaPT0wIFtpbnRlcnJ1cHRzIHZpcnR1YWxseSBlbmFibGVkXSBhbmQgQz09MAorICAgICBbaW50ZXJydXB0cyByZWFsbHkgZGlzYWJsZWRdIHdvdWxkIHRoZW4gYmUgdHJ1ZS4KKworICg5KSBUaGUgdHJhcCAjMiBoYW5kbGVyIHdvdWxkIHNpbXBseSBlbmFibGUgaGFyZHdhcmUgaW50ZXJydXB0cyAKKyAgICAgKHNldCBQU1IuUElMIHRvIDApLCBzZXQgSUNDMi5DIHRvIDEgYW5kIHJldHVybi4KKworKDEwKSBJbW1lZGlhdGVseSB1cG9uIHJldHVybmluZywgdGhlIHBlbmRpbmcgaW50ZXJydXB0IHdvdWxkIGJlIHRha2VuLgorCisoMTEpIFRoZSBpbnRlcnJ1cHQgaGFuZGxlciB3b3VsZCB0YWtlIHRoZSBwYXRoIG9mIGFjdHVhbGx5IHByb2Nlc3NpbmcgdGhlCisgICAgIGludGVycnVwdCAoSUNDMi5aIGlzIGNsZWFyLCBCRVEgZmFpbHMgYXMgcGVyIHN0ZXAgKDIpKS4KKworKDEyKSBUaGUgaW50ZXJydXB0IGhhbmRsZXIgd291bGQgdGhlbiBzZXQgSUNDMi5DIHRvIDEgc2luY2UgaGFyZHdhcmUKKyAgICAgaW50ZXJydXB0cyBhcmUgZGVmaW5pdGVseSBlbmFibGVkIC0gb3IgZWxzZSB0aGUga2VybmVsIHdvdWxkbid0IGJlIGhlcmUuCisKKygxMykgT24gcmV0dXJuIGZyb20gdGhlIGludGVycnVwdCBoYW5kbGVyLCB0aGluZ3Mgd291bGQgYmUgYmFjayB0byBzdGF0ZSAoMSkuCisKK1RoaXMgdHJhcCAoIzIpIGlzIG9ubHkgYXZhaWxhYmxlIGluIGtlcm5lbCBtb2RlLiBJbiB1c2VyIG1vZGUgaXQgd2lsbAorcmVzdWx0IGluIFNJR0lMTC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZnJ2L21tdS1sYXlvdXQudHh0IGIvRG9jdW1lbnRhdGlvbi9mcnYvbW11LWxheW91dC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGIxMDI1MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZnJ2L21tdS1sYXlvdXQudHh0CkBAIC0wLDAgKzEsMzA2IEBACisJCQkJID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCQkJCSBGUjQ1MSBNTVUgTElOVVggTUVNT1JZIE1BTkFHRU1FTlQKKwkJCQkgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKz09PT09PT09PT09PQorTU1VIEhBUkRXQVJFCis9PT09PT09PT09PT0KKworRlI0NTEgTU1VIExpbnV4IHB1dHMgdGhlIE1NVSBpbnRvIEVEQVQgbW9kZSB3aGlsc3QgcnVubmluZy4gVGhpcyBtZWFucyB0aGF0IGl0IHVzZXMgYm90aCB0aGUgU0FUCityZWdpc3RlcnMgYW5kIHRoZSBEQVQgVExCIHRvIHBlcmZvcm0gYWRkcmVzcyB0cmFuc2xhdGlvbi4KKworVGhlcmUgYXJlIDggSUFNTFIvSUFNUFIgcmVnaXN0ZXIgcGFpcnMgYW5kIDE2IERBTUxSL0RBTVBSIHJlZ2lzdGVyIHBhaXJzIGZvciBTQVQgbW9kZS4KKworSW4gREFUIG1vZGUsIHRoZXJlIGlzIGFsc28gYSBUTEIgb3JnYW5pc2VkIGluIGNhY2hlIGZvcm1hdCBhcyA2NCBsaW5lcyB4IDIgd2F5cy4gRWFjaCBsaW5lIHNwYW5zIGEKKzE2S0IgcmFuZ2Ugb2YgYWRkcmVzc2VzLCBidXQgY2FuIG1hdGNoIGEgbGFyZ2VyIHJlZ2lvbi4KKworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KK01FTU9SWSBNQU5BR0VNRU5UIFJFR0lTVEVSUworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0NlcnRhaW4gY29udHJvbCByZWdpc3RlcnMgYXJlIHVzZWQgYnkgdGhlIGtlcm5lbCBtZW1vcnkgbWFuYWdlbWVudCByb3V0aW5lczoKKworCVJFR0lTVEVSUwkJVVNBR0UKKwk9PT09PT09PT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJSUFNUjAsIERBTVIwCQlLZXJuZWwgaW1hZ2UgYW5kIGRhdGEgbWFwcGluZ3MKKwlJQU1SMSwgREFNUjEJCUZpcnN0LWNoYW5jZSBUTEIgbG9va3VwIG1hcHBpbmcKKwlEQU1SMgkJCVBhZ2UgYXR0YWNobWVudCBmb3IgY2FjaGUgZmx1c2ggYnkgcGFnZQorCURBTVIzCQkJQ3VycmVudCBQR0QgbWFwcGluZworCVNDUjAsIERBTVI0CQlJbnN0cnVjdGlvbiBUTEIgUEdFL1BURCBjYWNoZQorCVNDUjEsIERBTVI1CQlEYXRhIFRMQiBQR0UvUFREIGNhY2hlCisJREFNUjYtMTAJCWttYXBfYXRvbWljKCkgbWFwcGluZ3MKKwlEQU1SMTEJCQlJL08gbWFwcGluZworCUNYTlIJCQltbV9zdHJ1Y3QgY29udGV4dCBJRAorCVRUQlIJCQlQYWdlIGRpcmVjdG9yeSAoUEdEKSBwb2ludGVyIChwaHlzaWNhbCBhZGRyZXNzKQorCisKKz09PT09PT09PT09PT09PT09PT09PQorR0VORVJBTCBNRU1PUlkgTEFZT1VUCis9PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHBoeXNpY2FsIG1lbW9yeSBsYXlvdXQgaXMgYXMgZm9sbG93czoKKworICBQSFlTSUNBTCBBRERSRVNTCUNPTlRST0xMRVIJREVWSUNFCisgID09PT09PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIDAwMDAwMDAwIC0gQkZGRkZGRkYJU0RSQU0JCVNEUkFNIGFyZWEKKyAgRTAwMDAwMDAgLSBFRkZGRkZGRglMLUJVUyBDUzIjCVZESyBTTEJVUy9QQ0kgd2luZG93CisgIEYwMDAwMDAwIC0gRjBGRkZGRkYJTC1CVVMgQ1M1IwlNQjkzNDkzIENTQyBhcmVhIChEQVYgZGF1Z2h0ZXIgYm9hcmQpCisgIEYxMDAwMDAwIC0gRjFGRkZGRkYJTC1CVVMgQ1M3IwkoQ0I3MCBDUFUtY2FyZCBQQ01DSUEgcG9ydCBJL08gc3BhY2UpCisgIEZDMDAwMDAwIC0gRkMwRkZGRkYJTC1CVVMgQ1MxIwlWREsgTUI4Njk0MyBjb25maWcgc3BhY2UKKyAgRkMxMDAwMDAgLSBGQzFGRkZGRglMLUJVUyBDUzYjCURNOTAwMCBOSUMgSS9PIHNwYWNlCisgIEZDMjAwMDAwIC0gRkMyRkZGRkYJTC1CVVMgQ1MzIwlNQjkzNDkzIENTUiBhcmVhIChEQVYgZGF1Z2h0ZXIgYm9hcmQpCisgIEZEMDAwMDAwIC0gRkRGRkZGRkYJTC1CVVMgQ1M0IwkoQ0I3MCBDUFUtY2FyZCBleHRyYSBmbGFzaCBzcGFjZSkKKyAgRkUwMDAwMDAgLSBGRUZGRkZGRgkJCUludGVybmFsIENQVSBwZXJpcGhlcmFscworICBGRjAwMDAwMCAtIEZGMUZGRkZGCUwtQlVTIENTMCMJRmxhc2ggMQorICBGRjIwMDAwMCAtIEZGM0ZGRkZGCUwtQlVTIENTMCMJRmxhc2ggMgorICBGRkMwMDAwMCAtIEZGQzAwMDFGCUwtQlVTIENTMCMJRlBHQQorCitUaGUgdmlydHVhbCBtZW1vcnkgbGF5b3V0IGlzOgorCisgIFZJUlRVQUwgQUREUkVTUyAgICBQSFlTSUNBTAlUUkFOU0xBVE9SCUZMQUdTCVNJWkUJT0NDVVBBVElPTgorICA9PT09PT09PT09PT09PT09PSAgPT09PT09PT0JPT09PT09PT09PT09PT0JPT09PT09PQk9PT09PT09CT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIDAwMDA0MDAwLUJGRkZGRkZGICB2YXJpb3VzCVRMQix4QU1SMQlELU4tPz9WCTNHQglVc2Vyc3BhY2UKKyAgQzAwMDAwMDAtQ0ZGRkZGRkYgIDAwMDAwMDAwCXhBTVBSMAkJLUwtUy0tVgkyNTZNQglLZXJuZWwgaW1hZ2UgYW5kIGRhdGEKKyAgRDAwMDAwMDAtRDdGRkZGRkYgIHZhcmlvdXMJVExCLHhBTVIxCUQtTlM/P1YJMTI4TUIJdm1hbGxvYyBhcmVhCisgIEQ4MDAwMDAwLURCRkZGRkZGICB2YXJpb3VzCVRMQix4QU1SMQlELU5TPz9WCTY0TUIJa21hcCgpIGFyZWEKKyAgREMwMDAwMDAtRENGRkZGRkYgIHZhcmlvdXMJVExCCQkJMU1CCVNlY29uZGFyeSBrbWFwX2F0b21pYygpIGZyYW1lCisgIEREMDAwMDAwLUREMjdGRkZGICB2YXJpb3VzCURBTVIJCQkxNjBLQglQcmltYXJ5IGttYXBfYXRvbWljKCkgZnJhbWUKKyAgREQwNDAwMDAJCQlEQU1SMi9JQU1SMgktTC1TLS1WCXBhZ2UJUGFnZSBjYWNoZSBmbHVzaCBhdHRhY2htZW50IHBvaW50CisgIEREMDgwMDAwCQkJREFNUjMJCS1MLVNDLVYJcGFnZQlQYWdlIERpcmVjdG9yeSAoUEdEKQorICBERDBDMDAwMAkJCURBTVI0CQktTC1TQy1WCXBhZ2UJQ2FjaGVkIGluc24gVExCIFBhZ2UgVGFibGUgbG9va3VwCisgIEREMTAwMDAwCQkJREFNUjUJCS1MLVNDLVYJcGFnZQlDYWNoZWQgZGF0YSBUTEIgUGFnZSBUYWJsZSBsb29rdXAKKyAgREQxNDAwMDAJCQlEQU1SNgkJLUwtUy0tVglwYWdlCWttYXBfYXRvbWljKEtNX0JPVU5DRV9SRUFEKQorICBERDE4MDAwMAkJCURBTVI3CQktTC1TLS1WCXBhZ2UJa21hcF9hdG9taWMoS01fU0tCX1NVTlJQQ19EQVRBKQorICBERDFDMDAwMAkJCURBTVI4CQktTC1TLS1WCXBhZ2UJa21hcF9hdG9taWMoS01fU0tCX0RBVEFfU09GVElSUSkKKyAgREQyMDAwMDAJCQlEQU1SOQkJLUwtUy0tVglwYWdlCWttYXBfYXRvbWljKEtNX1VTRVIwKQorICBERDI0MDAwMAkJCURBTVIxMAkJLUwtUy0tVglwYWdlCWttYXBfYXRvbWljKEtNX1VTRVIxKQorICBFMDAwMDAwMC1GRkZGRkZGRiAgRTAwMDAwMDAJREFNUjExCQktTC1TQy1WCTUxMk1CCUkvTyByZWdpb24KKworSUFNUFIxIGFuZCBEQU1QUjEgYXJlIHVzZWQgYXMgYW4gZXh0ZW5zaW9uIHRvIHRoZSBUTEIuCisKKworPT09PT09PT09PT09PT09PT09PT0KK0tNQVAgQU5EIEtNQVBfQVRPTUlDCis9PT09PT09PT09PT09PT09PT09PQorCitUbyBhY2Nlc3MgcGFnZXMgaW4gdGhlIHBhZ2UgY2FjaGUgKHdoaWNoIG1heSBub3QgYmUgZGlyZWN0bHkgYWNjZXNzaWJsZSBpZiBoaWdobWVtIGlzIGF2YWlsYWJsZSksCit0aGUga2VybmVsIGNhbGxzIGttYXAoKSwgZG9lcyB0aGUgYWNjZXNzIGFuZCB0aGVuIGNhbGxzIGt1bm1hcCgpOyBvciBpdCBjYWxscyBrbWFwX2F0b21pYygpLCBkb2VzCit0aGUgYWNjZXNzIGFuZCB0aGVuIGNhbGxzIGt1bm1hcF9hdG9taWMoKS4KKwora21hcCgpIGNyZWF0ZXMgYW4gYXR0YWNobWVudCBiZXR3ZWVuIGFuIGFyYml0cmFyeSBpbmFjY2Vzc2libGUgcGFnZSBhbmQgYSByYW5nZSBvZiB2aXJ0dWFsCithZGRyZXNzZXMgYnkgaW5zdGFsbGluZyBhIFBURSBpbiBhIHNwZWNpYWwgcGFnZSB0YWJsZS4gVGhlIGtlcm5lbCBjYW4gdGhlbiBhY2Nlc3MgdGhpcyBwYWdlIGFzIGl0Cit3aWxscy4gV2hlbiBpdCdzIGZpbmlzaGVkLCB0aGUga2VybmVsIGNhbGxzIGt1bm1hcCgpIHRvIGNsZWFyIHRoZSBQVEUuCisKK2ttYXBfYXRvbWljKCkgZG9lcyBzb21ldGhpbmcgc2xpZ2h0bHkgZGlmZmVyZW50LiBJbiB0aGUgaW50ZXJlc3RzIG9mIHNwZWVkLCBpdCBjaG9vc2VzIG9uZSBvZiB0d28KK3N0cmF0ZWdpZXM6CisKKyAoMSkgSWYgcG9zc2libGUsIGttYXBfYXRvbWljKCkgYXR0YWNoZXMgdGhlIHJlcXVlc3RlZCBwYWdlIHRvIG9uZSBvZiBEQU1QUjUgdGhyb3VnaCBEQU1QUjEwCisgICAgIHJlZ2lzdGVyIHBhaXJzOyBhbmQgdGhlIG1hdGNoaW5nIGt1bm1hcF9hdG9taWMoKSBjbGVhcnMgdGhlIERBTVBSLiBUaGlzIG1ha2VzIGhpZ2ggbWVtb3J5CisgICAgIHN1cHBvcnQgcmVhbGx5IGZhc3QgYXMgdGhlcmUncyBubyBuZWVkIHRvIGZsdXNoIHRoZSBUTEIgb3IgbW9kaWZ5IHRoZSBwYWdlIHRhYmxlcy4gVGhlIERBTUxSCisgICAgIHJlZ2lzdGVycyBiZWluZyB1c2VkIGZvciB0aGlzIGFyZSBwcmVzZXQgZHVyaW5nIGJvb3QgYW5kIGRvbid0IGNoYW5nZSBvdmVyIHRoZSBsaWZldGltZSBvZiB0aGUKKyAgICAgcHJvY2Vzcy4gVGhlcmUncyBhIGRpcmVjdCBtYXBwaW5nIGJldHdlZW4gdGhlIGZpcnN0IGZldyBrbWFwX2F0b21pYygpIHR5cGVzLCBEQU1SIG51bWJlciBhbmQKKyAgICAgdmlydHVhbCBhZGRyZXNzIHNsb3QuCisKKyAgICAgSG93ZXZlciwgdGhlcmUgYXJlIG1vcmUga21hcF9hdG9taWMoKSB0eXBlcyBkZWZpbmVkIHRoYW4gdGhlcmUgYXJlIERBTVIgcmVnaXN0ZXJzIGF2YWlsYWJsZSwKKyAgICAgc28gd2UgZmFsbCBiYWNrIHRvOgorCisgKDIpIGttYXBfYXRvbWljKCkgdXNlcyBhIHNsb3QgaW4gdGhlIHNlY29uZGFyeSBmcmFtZSAoZGV0ZXJtaW5lZCBieSB0aGUgdHlwZSBwYXJhbWV0ZXIpLCBhbmQgdGhlbgorICAgICBsb2NrcyBhbiBlbnRyeSBpbiB0aGUgVExCIHRvIHRyYW5zbGF0ZSB0aGF0IHNsb3QgdG8gdGhlIHNwZWNpZmllZCBwYWdlLiBUaGUgbnVtYmVyIG9mIHNsb3RzIGlzCisgICAgIG9idmlvdXNseSBsaW1pdGVkLCBhbmQgdGhlaXIgcG9zaXRpb25zIGFyZSBjb250cm9sbGVkIHN1Y2ggdGhhdCBlYWNoIHNsb3QgaXMgbWF0Y2hlZCBieSBhCisgICAgIGRpZmZlcmVudCBsaW5lIGluIHRoZSBUTEIuIGt1bm1hcCgpIGVqZWN0cyB0aGUgZW50cnkgZnJvbSB0aGUgVExCLgorCitOb3RlIHRoYXQgdGhlIGZpcnN0IHRocmVlIGttYXAgYXRvbWljIHR5cGVzIGFyZSByZWFsbHkganVzdCBkZWNsYXJlZCBhcyBwbGFjZWhvbGRlcnMuIFRoZSBEQU1QUgorcmVnaXN0ZXJzIGludm9sdmVkIGFyZSBhY3R1YWxseSBtb2RpZmllZCBkaXJlY3RseS4KKworQWxzbyBub3RlIHRoYXQga21hcCgpIGl0c2VsZiBtYXkgc2xlZXAsIGttYXBfYXRvbWljKCkgbWF5IG5ldmVyIHNsZWVwIGFuZCBib3RoIGFsd2F5cyBzdWNjZWVkOworZnVydGhlcm1vcmUsIGEgZHJpdmVyIHVzaW5nIGttYXAoKSBtYXkgc2xlZXAgYmVmb3JlIGNhbGxpbmcga3VubWFwKCksIGJ1dCBtYXkgbm90IHNsZWVwIGJlZm9yZQorY2FsbGluZyBrdW5tYXBfYXRvbWljKCkgaWYgaXQgaGFkIHByZXZpb3VzbHkgY2FsbGVkIGttYXBfYXRvbWljKCkuCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorVVNJTkcgTU9SRSBUSEFOIDI1Nk1CIE9GIE1FTU9SWQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUga2VybmVsIGNhbm5vdCBhY2Nlc3MgbW9yZSB0aGFuIDI1Nk1CIG9mIG1lbW9yeSBkaXJlY3RseS4gVGhlIHBoeXNpY2FsIGxheW91dCwgaG93ZXZlciwgcGVybWl0cwordXAgdG8gM0dCIG9mIFNEUkFNIChwb3NzaWJseSAzLjI1R0IpIHRvIGJlIG1hZGUgYXZhaWxhYmxlLiBCeSB1c2luZyBDT05GSUdfSElHSE1FTSwgdGhlIGtlcm5lbCBjYW4KK2FsbG93IHVzZXJzcGFjZSAoYnkgd2F5IG9mIHBhZ2UgdGFibGVzKSBhbmQgaXRzZWxmIChieSB3YXkgb2Yga21hcCkgdG8gZGVhbCB3aXRoIHRoZSBtZW1vcnkKK2FsbG9jYXRpb24uCisKK0V4dGVybmFsIGRldmljZXMgY2FuLCBvZiBjb3Vyc2UsIHN0aWxsIERNQSB0byBhbmQgZnJvbSBhbGwgb2YgdGhlIFNEUkFNLCBldmVuIGlmIHRoZSBrZXJuZWwgY2FuJ3QKK3NlZSBpdCBkaXJlY3RseS4gVGhlIGtlcm5lbCB0cmFuc2xhdGVzIHBhZ2UgcmVmZXJlbmNlcyBpbnRvIHJlYWwgYWRkcmVzc2VzIGZvciBjb21tdW5pY2F0aW5nIHRvIHRoZQorZGV2aWNlcy4KKworCis9PT09PT09PT09PT09PT09PT09CitQQUdFIFRBQkxFIFRPUE9MT0dZCis9PT09PT09PT09PT09PT09PT09CisKK1RoZSBwYWdlIHRhYmxlcyBhcmUgYXJyYW5nZWQgaW4gMi1sYXllciBmb3JtYXQuIFRoZXJlIGlzIGEgbWlkZGxlIGxheWVyIChQTUQpIHRoYXQgd291bGQgYmUgdXNlZCBpbgorMy1sYXllciBmb3JtYXQgdGFibGVzIGJ1dCB0aGF0IGlzIGZvbGRlZCBpbnRvIHRoZSB0b3AgbGF5ZXIgKFBHRCkgYW5kIHNvIGNvbnN1bWVzIG5vIGV4dHJhIG1lbW9yeQorb3IgcHJvY2Vzc2luZyBwb3dlci4KKworICArLS0tLS0tKyAgICAgUEdEICAgIFBNRAorICB8IFRUQlIgfC0tLT4rLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgKy0tLS0tLSsgICAgfCAgICAgIHwgICAgICA6IFNURSB8CisgICAgICAgICAgICAgIHwgUEdFMCB8IFBNRTAgOiBTVEUgfAorICAgICAgICAgICAgICB8ICAgICAgfCAgICAgIDogU1RFIHwKKyAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICBQYWdlIFRhYmxlCisgICAgICAgICAgICAgIHwgICAgICB8ICAgICAgOiBTVEUgLS0tLS0tLS0tLS0tLS0+Ky0tLS0tLS0tKyArMHgwMDAwCisgICAgICAgICAgICAgIHwgUEdFMSB8IFBNRTAgOiBTVEUgLS0tLS0tLS0tLS0rICAgfCBQVEUwICAgfAorICAgICAgICAgICAgICB8ICAgICAgfCAgICAgIDogU1RFIC0tLS0tLS0rICAgfCAgICstLS0tLS0tLSsKKyAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgfCAgIHwgICB8IFBURTYzICB8CisgICAgICAgICAgICAgIHwgICAgICB8ICAgICAgOiBTVEUgfCAgICAgIHwgICArLS0+Ky0tLS0tLS0tKyArMHgwMTAwCisgICAgICAgICAgICAgIHwgUEdFMiB8IFBNRTAgOiBTVEUgfCAgICAgIHwgICAgICAgfCBQVEU2NCAgfAorICAgICAgICAgICAgICB8ICAgICAgfCAgICAgIDogU1RFIHwgICAgICB8ICAgICAgICstLS0tLS0tLSsKKyAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgfCAgICAgICB8IFBURTEyNyB8CisgICAgICAgICAgICAgIHwgICAgICB8ICAgICAgOiBTVEUgfCAgICAgICstLS0tLS0+Ky0tLS0tLS0tKyArMHgwMjAwCisgICAgICAgICAgICAgIHwgUEdFMyB8IFBNRTAgOiBTVEUgfCAgICAgICAgICAgICAgfCBQVEUxMjggfAorICAgICAgICAgICAgICB8ICAgICAgfCAgICAgIDogU1RFIHwgICAgICAgICAgICAgICstLS0tLS0tLSsKKyAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICB8IFBURTE5MSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tKyArMHgwMzAwCisKK0VhY2ggUGFnZSBEaXJlY3RvcnkgKFBHRCkgaXMgMTZLQiAocGFnZSBzaXplKSBpbiBzaXplIGFuZCBpcyBkaXZpZGVkIGludG8gNjQgZW50cmllcyAoUEdFcykuIEVhY2gKK1BHRSBjb250YWlucyBvbmUgUGFnZSBNaWQgRGlyZWN0b3J5IChQTUQpLgorCitFYWNoIFBNRCBpcyAyNTYgYnl0ZXMgaW4gc2l6ZSBhbmQgY29udGFpbnMgYSBzaW5nbGUgZW50cnkgKFBNRSkuIEVhY2ggUE1FIGhvbGRzIDY0IEZSNDUxIE1NVQorc2VnbWVudCB0YWJsZSBlbnRyaWVzIG9mIDQgYnl0ZXMgYXBpZWNlLiBFYWNoIFBNRSAicG9pbnRzIHRvIiBhIHBhZ2UgdGFibGUuIEluIHByYWN0aWNlLCBlYWNoIFNURQorcG9pbnRzIHRvIGEgc3Vic2V0IG9mIHRoZSBwYWdlIHRhYmxlLCB0aGUgZmlyc3QgdG8gUFQrMHgwMDAwLCB0aGUgc2Vjb25kIHRvIFBUKzB4MDEwMCwgdGhlIHRoaXJkIHRvCitQVCsweDIwMCwgYW5kIHNvIG9uLgorCitFYWNoIFBHRSBhbmQgUE1FIGNvdmVycyA2NE1CIG9mIHRoZSB0b3RhbCB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UuCisKK0VhY2ggUGFnZSBUYWJsZSAoUFREKSBpcyAxNktCIChwYWdlIHNpemUpIGluIHNpemUsIGFuZCBpcyBkaXZpZGVkIGludG8gNDA5NiBlbnRyaWVzIChQVEVzKS4gRWFjaAorZW50cnkgY2FuIHBvaW50IHRvIG9uZSAxNktCIHBhZ2UuIEluIHByYWN0aWNlLCBlYWNoIExpbnV4IHBhZ2UgdGFibGUgaXMgc3ViZGl2aWRlZCBpbnRvIDY0IEZSNDUxCitNTVUgcGFnZSB0YWJsZXMuIEJ1dCB0aGV5IGFyZSBhbGwgZ3JvdXBlZCB0b2dldGhlciB0byBtYWtlIG1hbmFnZW1lbnQgZWFzaWVyLCBpbiBwYXJ0aWN1bGFyIHJtYXAKK3N1cHBvcnQgaXMgdGhlbiB0cml2aWFsLgorCitHcm91cGluZyBwYWdlIHRhYmxlcyBpbiB0aGlzIGZhc2hpb24gbWFrZXMgUEdFIGNhY2hpbmcgaW4gU0NSMC9TQ1IxIG1vcmUgZWZmaWNpZW50IGJlY2F1c2UgdGhlCitjb3ZlcmFnZSBvZiB0aGUgY2FjaGVkIGl0ZW0gaXMgZ3JlYXRlci4KKworUGFnZSB0YWJsZXMgZm9yIHRoZSB2bWFsbG9jIGFyZWEgYXJlIGFsbG9jYXRlZCBhdCBib290IHRpbWUgYW5kIHNoYXJlZCBiZXR3ZWVuIGFsbCBtbV9zdHJ1Y3RzLgorCisKKz09PT09PT09PT09PT09PT09CitVU0VSIFNQQUNFIExBWU9VVAorPT09PT09PT09PT09PT09PT0KKworRm9yIE1NVSBjYXBhYmxlIExpbnV4LCB0aGUgcmVnaW9ucyB1c2Vyc3BhY2UgY29kZSBhcmUgYWxsb3dlZCB0byBhY2Nlc3MgYXJlIGtlcHQgZW50aXJlbHkgc2VwYXJhdGUKK2Zyb20gdGhvc2UgZGVkaWNhdGVkIHRvIHRoZSBrZXJuZWw6CisKKwlWSVJUVUFMIEFERFJFU1MgICAgU0laRSAgIFBVUlBPU0UKKwk9PT09PT09PT09PT09PT09PSAgPT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJMDAwMDAwMDAtMDAwMDNmZmYgIDRLQiAgICBOVUxMIHBvaW50ZXIgYWNjZXNzIHRyYXAKKwkwMDAwNDAwMC0wMWZmZmZmZiAgfjMyTUIgIGxvd2VyIG1tYXAgc3BhY2UgKGdyb3dzIHVwKQorCTAyMDAwMDAwLTAyMWZmZmZmICAyTUIgICAgU3RhY2sgc3BhY2UgKGdyb3dzIGRvd24gZnJvbSB0b3ApCisJMDIyMDAwMDAtbm5ubm5ubm4gICAgICAgICBFeGVjdXRhYmxlIG1hcHBpbmcKKyAgICAgICAgbm5ubm5ubm4tICAgICAgICAgICAgICAgICBicmsgc3BhY2UgKGdyb3dzIHVwKQorCSAgICAgICAgLWJmZmZmZmZmICAgICAgICAgdXBwZXIgbW1hcCBzcGFjZSAoZ3Jvd3MgZG93bikKKworVGhpcyBpcyBzbyBhcnJhbmdlZCBzbyBhcyB0byBtYWtlIGJlc3QgdXNlIG9mIHRoZSAxNktCIHBhZ2UgdGFibGVzIGFuZCB0aGUgd2F5IGluIHdoaWNoIFBHRXMvUE1FcworYXJlIGNhY2hlZCBieSB0aGUgVExCIGhhbmRsZXIuIFRoZSBsb3dlciBtbWFwIHNwYWNlIGlzIGZpbGxlZCBmaXJzdCwgYW5kIHRoZW4gdGhlIHVwcGVyIG1tYXAgc3BhY2UKK2lzIGZpbGxlZC4KKworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitHREItU1RVQiBNTVUgREVCVUdHSU5HIFNFUlZJQ0VTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBnZGItc3R1YiBpbmNsdWRlZCBpbiB0aGlzIGtlcm5lbCBwcm92aWRlcyBhIG51bWJlciBvZiBzZXJ2aWNlcyB0byBhaWQgaW4gdGhlIGRlYnVnZ2luZyBvZiBNTVUKK3JlbGF0ZWQga2VybmVsIHNlcnZpY2VzOgorCisgKCopIEV2ZXJ5IHRpbWUgdGhlIGtlcm5lbCBzdG9wcywgY2VydGFpbiBzdGF0ZSBpbmZvcm1hdGlvbiBpcyBkdW1wZWQgaW50byBfX2RlYnVnX21tdS4gVGhpcworICAgICB2YXJpYWJsZSBpcyBkZWZpbmVkIGluIGFyY2gvZnJ2L2tlcm5lbC9nZGItc3R1Yi5jLiBOb3RlIHRoYXQgdGhlIGdkYmluaXQgZmlsZSBpbiB0aGlzCisgICAgIGRpcmVjdG9yeSBoYXMgc29tZSB1c2VmdWwgbWFjcm9zIGZvciBkZWFsaW5nIHdpdGggdGhpcy4KKworICAgICAoKikgX19kZWJ1Z19tbXUudGxiW10KKworCSBUaGlzIHJlY2VpdmVzIHRoZSBjdXJyZW50IFRMQiBjb250ZW50cy4gVGhpcyBjYW4gYmUgdmlld2VkIHdpdGggdGhlIF90bGIgR0RCIG1hY3JvOgorCisJCShnZGIpIF90bGIKKwkJdGxiWzB4MDBdOiAwMTAwMDAwNSAwMDcxODIwMyAgMDEwMDAwMDIgMDA3MTgyMDMKKwkJdGxiWzB4MDFdOiAwMTAwNDAwMiAwMDZkNDIwMSAgMDEwMDQwMDUgMDA2ZDQyMDMKKwkJdGxiWzB4MDJdOiAwMTAwODAwMiAwMDZkMDIwMSAgMDEwMDgwMDYgMDAwMDQyMDAKKwkJdGxiWzB4MDNdOiAwMTAwYzAwNiAwMDdmNDIwMiAgMDEwMGMwMDIgMDA2NGMyMDIKKwkJdGxiWzB4MDRdOiAwMTExMDAwNSAwMDc3NDIwMSAgMDExMTAwMDIgMDA3NzQyMDEKKwkJdGxiWzB4MDVdOiAwMTExNDAwNSAwMDc3MDIwMSAgMDExMTQwMDIgMDA3NzAyMDEKKwkJdGxiWzB4MDZdOiAwMTExODAwMiAwMDc2YzIwMSAgMDExMTgwMDUgMDA3NmMyMDEKKwkJLi4uCisJCXRsYlsweDNkXTogMDEwZjQwMDIgMDA3OTAyMDAgIDAwMWY0MDAyIDAwNTRjYTAyCisJCXRsYlsweDNlXTogMDEwZjgwMDUgMDA3OGMyMDEgIDAxMGY4MDAyIDAwNzhjMjAxCisJCXRsYlsweDNmXTogMDAxZmMwMDIgMDA1NmNhMDEgIDAwMWZjMDA1IDAwNTM4YTAxCisKKyAgICAgKCopIF9fZGVidWdfbW11LmlhbXJbXQorICAgICAoKikgX19kZWJ1Z19tbXUuZGFtcltdCisKKwkgVGhlc2UgcmVjZWl2ZSB0aGUgY3VycmVudCBJQU1SIGFuZCBEQU1SIGNvbnRlbnRzLiBUaGVzZSBjYW4gYmUgdmlld2VkIHdpdGggdGhlIF9hbXIKKwkgR0RCIG1hY3JvOgorCisJCShnZGIpIF9hbXIKKwkJQU1SeCAgICAgICAgICAgREFNUiAgICAgICAgICAgICAgICAgICAgSUFNUgorCQk9PT09ICAgPT09PT09PT09PT09PT09PT09PT09ICAgPT09PT09PT09PT09PT09PT09PT09CisJCWFtcjAgOiBMOmMwMDAwMDAwIFA6MDAwMDBjYjkgOiBMOmMwMDAwMDAwIFA6MDAwMDA0YjkKKwkJYW1yMSA6IEw6MDEwNzAwMDUgUDowMDZmOTIwMyA6IEw6MDEwMmMwMDUgUDowMDZhMTIwMQorCQlhbXIyIDogTDpkOGQwMDAwMCBQOjAwMDAwMDAwIDogTDpkOGQwMDAwMCBQOjAwMDAwMDAwCisJCWFtcjMgOiBMOmQ4ZDA0MDAwIFA6MDA1MzRjMGQgOiBMOjAwMDAwMDAwIFA6MDAwMDAwMDAKKwkJYW1yNCA6IEw6ZDhkMDgwMDAgUDowMDU1NGMwZCA6IEw6MDAwMDAwMDAgUDowMDAwMDAwMAorCQlhbXI1IDogTDpkOGQwYzAwMCBQOjAwNTU0YzBkIDogTDowMDAwMDAwMCBQOjAwMDAwMDAwCisJCWFtcjYgOiBMOmQ4ZDEwMDAwIFA6MDAwMDAwMDAgOiBMOjAwMDAwMDAwIFA6MDAwMDAwMDAKKwkJYW1yNyA6IEw6ZDhkMTQwMDAgUDowMDAwMDAwMCA6IEw6MDAwMDAwMDAgUDowMDAwMDAwMAorCQlhbXI4IDogTDpkOGQxODAwMCBQOjAwMDAwMDAwCisJCWFtcjkgOiBMOmQ4ZDFjMDAwIFA6MDAwMDAwMDAKKwkJYW1yMTA6IEw6ZDhkMjAwMDAgUDowMDAwMDAwMAorCQlhbXIxMTogTDplMDAwMDAwMCBQOmUwMDAwY2NkCisKKyAoKikgVGhlIGN1cnJlbnQgdGFzaydzIHBhZ2UgZGlyZWN0b3J5IGlzIGJvdW5kIHRvIERBTVIzLgorCisgICAgIFRoaXMgY2FuIGJlIHZpZXdlZCB3aXRoIHRoZSBfcGdkIEdEQiBtYWNybzoKKworCShnZGIpIF9wZ2QKKwkkMyA9IHt7cGdlID0ge3tzdGUgPSB7MHg1NTQwMDEsIDB4NTU0MTAxLCAweDU1NDIwMSwgMHg1NTQzMDEsIDB4NTU0NDAxLAorCQkgIDB4NTU0NTAxLCAweDU1NDYwMSwgMHg1NTQ3MDEsIDB4NTU0ODAxLCAweDU1NDkwMSwgMHg1NTRhMDEsCisJCSAgMHg1NTRiMDEsIDB4NTU0YzAxLCAweDU1NGQwMSwgMHg1NTRlMDEsIDB4NTU0ZjAxLCAweDU1NTAwMSwKKwkJICAweDU1NTEwMSwgMHg1NTUyMDEsIDB4NTU1MzAxLCAweDU1NTQwMSwgMHg1NTU1MDEsIDB4NTU1NjAxLAorCQkgIDB4NTU1NzAxLCAweDU1NTgwMSwgMHg1NTU5MDEsIDB4NTU1YTAxLCAweDU1NWIwMSwgMHg1NTVjMDEsCisJCSAgMHg1NTVkMDEsIDB4NTU1ZTAxLCAweDU1NWYwMSwgMHg1NTYwMDEsIDB4NTU2MTAxLCAweDU1NjIwMSwKKwkJICAweDU1NjMwMSwgMHg1NTY0MDEsIDB4NTU2NTAxLCAweDU1NjYwMSwgMHg1NTY3MDEsIDB4NTU2ODAxLAorCQkgIDB4NTU2OTAxLCAweDU1NmEwMSwgMHg1NTZiMDEsIDB4NTU2YzAxLCAweDU1NmQwMSwgMHg1NTZlMDEsCisJCSAgMHg1NTZmMDEsIDB4NTU3MDAxLCAweDU1NzEwMSwgMHg1NTcyMDEsIDB4NTU3MzAxLCAweDU1NzQwMSwKKwkJICAweDU1NzUwMSwgMHg1NTc2MDEsIDB4NTU3NzAxLCAweDU1NzgwMSwgMHg1NTc5MDEsIDB4NTU3YTAxLAorCQkgIDB4NTU3YjAxLCAweDU1N2MwMSwgMHg1NTdkMDEsIDB4NTU3ZTAxLCAweDU1N2YwMX19fX0sIHtwZ2UgPSB7eworCQlzdGUgPSB7MHgwIDxyZXBlYXRzIDY0IHRpbWVzPn19fX0gPHJlcGVhdHMgNTEgdGltZXM+LCB7cGdlID0ge3tzdGUgPSB7CisJCSAgMHgyNDgwMDEsIDB4MjQ4MTAxLCAweDI0ODIwMSwgMHgyNDgzMDEsIDB4MjQ4NDAxLCAweDI0ODUwMSwKKwkJICAweDI0ODYwMSwgMHgyNDg3MDEsIDB4MjQ4ODAxLCAweDI0ODkwMSwgMHgyNDhhMDEsIDB4MjQ4YjAxLAorCQkgIDB4MjQ4YzAxLCAweDI0OGQwMSwgMHgyNDhlMDEsIDB4MjQ4ZjAxLCAweDI0OTAwMSwgMHgyNDkxMDEsCisJCSAgMHgyNDkyMDEsIDB4MjQ5MzAxLCAweDI0OTQwMSwgMHgyNDk1MDEsIDB4MjQ5NjAxLCAweDI0OTcwMSwKKwkJICAweDI0OTgwMSwgMHgyNDk5MDEsIDB4MjQ5YTAxLCAweDI0OWIwMSwgMHgyNDljMDEsIDB4MjQ5ZDAxLAorCQkgIDB4MjQ5ZTAxLCAweDI0OWYwMSwgMHgyNGEwMDEsIDB4MjRhMTAxLCAweDI0YTIwMSwgMHgyNGEzMDEsCisJCSAgMHgyNGE0MDEsIDB4MjRhNTAxLCAweDI0YTYwMSwgMHgyNGE3MDEsIDB4MjRhODAxLCAweDI0YTkwMSwKKwkJICAweDI0YWEwMSwgMHgyNGFiMDEsIDB4MjRhYzAxLCAweDI0YWQwMSwgMHgyNGFlMDEsIDB4MjRhZjAxLAorCQkgIDB4MjRiMDAxLCAweDI0YjEwMSwgMHgyNGIyMDEsIDB4MjRiMzAxLCAweDI0YjQwMSwgMHgyNGI1MDEsCisJCSAgMHgyNGI2MDEsIDB4MjRiNzAxLCAweDI0YjgwMSwgMHgyNGI5MDEsIDB4MjRiYTAxLCAweDI0YmIwMSwKKwkJICAweDI0YmMwMSwgMHgyNGJkMDEsIDB4MjRiZTAxLCAweDI0YmYwMX19fX0sIHtwZ2UgPSB7e3N0ZSA9IHsKKwkJICAweDAgPHJlcGVhdHMgNjQgdGltZXM+fX19fSA8cmVwZWF0cyAxMSB0aW1lcz59CisKKyAoKikgVGhlIFBURCBsYXN0IHVzZWQgYnkgdGhlIGluc3RydWN0aW9uIFRMQiBtaXNzIGhhbmRsZXIgaXMgYXR0YWNoZWQgdG8gREFNUjQuCisgKCopIFRoZSBQVEQgbGFzdCB1c2VkIGJ5IHRoZSBkYXRhIFRMQiBtaXNzIGhhbmRsZXIgaXMgYXR0YWNoZWQgdG8gREFNUjUuCisKKyAgICAgVGhlc2UgY2FuIGJlIHZpZXdlZCB3aXRoIHRoZSBfcHRkX2kgYW5kIF9wdGRfZCBHREIgbWFjcm9zOgorCisJKGdkYikgX3B0ZF9kCisJJDUgPSB7e3B0ZSA9IDB4MH0gPHJlcGVhdHMgMTI3IHRpbWVzPiwge3B0ZSA9IDB4NTM5YjAxfSwgeworCSAgICBwdGUgPSAweDB9IDxyZXBlYXRzIDg5NiB0aW1lcz4sIHtwdGUgPSAweDcxOTMwM30sIHtwdGUgPSAweDZkNTMwM30sIHsKKwkgICAgcHRlID0gMHgwfSwge3B0ZSA9IDB4MH0sIHtwdGUgPSAweDB9LCB7cHRlID0gMHgwfSwge3B0ZSA9IDB4MH0sIHsKKwkgICAgcHRlID0gMHgwfSwge3B0ZSA9IDB4MH0sIHtwdGUgPSAweDB9LCB7cHRlID0gMHgwfSwge3B0ZSA9IDB4NmExMzAzfSwgeworCSAgICBwdGUgPSAweDB9IDxyZXBlYXRzIDEyIHRpbWVzPiwge3B0ZSA9IDB4NzA5MzAzfSwge3B0ZSA9IDB4MH0sIHtwdGUgPSAweDB9LAorCSAge3B0ZSA9IDB4NmZkMzAzfSwge3B0ZSA9IDB4NmY5MzAzfSwge3B0ZSA9IDB4NmY1MzAzfSwge3B0ZSA9IDB4MH0sIHsKKwkgICAgcHRlID0gMHg2ZWQzMDN9LCB7cHRlID0gMHg1MzFiMDF9LCB7cHRlID0gMHg1MGRiMDF9LCB7CisJICAgIHB0ZSA9IDB4MH0gPHJlcGVhdHMgMTMgdGltZXM+LCB7cHRlID0gMHg1MzAzfSwge3B0ZSA9IDB4N2Y1MzAzfSwgeworCSAgICBwdGUgPSAweDUwOWIwMX0sIHtwdGUgPSAweDUwNWIwMX0sIHtwdGUgPSAweDdjOTMwM30sIHtwdGUgPSAweDdiOTMwM30sIHsKKwkgICAgcHRlID0gMHg3YjUzMDN9LCB7cHRlID0gMHg3YjEzMDN9LCB7cHRlID0gMHg3YWQzMDN9LCB7cHRlID0gMHgwfSwgeworCSAgICBwdGUgPSAweDB9LCB7cHRlID0gMHg3YTEzMDN9LCB7cHRlID0gMHgwfSwge3B0ZSA9IDB4Nzk1MzAzfSwge3B0ZSA9IDB4MH0sIHsKKwkgICAgcHRlID0gMHg3OGQzMDN9LCB7cHRlID0gMHgwfSwge3B0ZSA9IDB4MH0sIHtwdGUgPSAweDB9LCB7cHRlID0gMHgwfSwgeworCSAgICBwdGUgPSAweDB9LCB7cHRlID0gMHg3NzUzMDN9LCB7cHRlID0gMHg3NzEzMDN9LCB7cHRlID0gMHg3NmQzMDN9LCB7CisJICAgIHB0ZSA9IDB4MH0sIHtwdGUgPSAweDc2NTMwM30sIHtwdGUgPSAweDdjNTMwM30sIHtwdGUgPSAweDUwMWIwMX0sIHsKKwkgICAgcHRlID0gMHg0ZjFiMDF9LCB7cHRlID0gMHg0ZWRiMDF9LCB7cHRlID0gMHgwfSwge3B0ZSA9IDB4NGY5YjAxfSwgeworCSAgICBwdGUgPSAweDRmZGIwMX0sIHtwdGUgPSAweDB9IDxyZXBlYXRzIDI5OTIgdGltZXM+fQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mdXRleC1yZXF1ZXVlLXBpLnR4dCBiL0RvY3VtZW50YXRpb24vZnV0ZXgtcmVxdWV1ZS1waS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdiMzZmNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZnV0ZXgtcmVxdWV1ZS1waS50eHQKQEAgLTAsMCArMSwxMzEgQEAKK0Z1dGV4IFJlcXVldWUgUEkKKy0tLS0tLS0tLS0tLS0tLS0KKworUmVxdWV1ZWluZyBvZiB0YXNrcyBmcm9tIGEgbm9uLVBJIGZ1dGV4IHRvIGEgUEkgZnV0ZXggcmVxdWlyZXMKK3NwZWNpYWwgaGFuZGxpbmcgaW4gb3JkZXIgdG8gZW5zdXJlIHRoZSB1bmRlcmx5aW5nIHJ0X211dGV4IGlzIG5ldmVyCitsZWZ0IHdpdGhvdXQgYW4gb3duZXIgaWYgaXQgaGFzIHdhaXRlcnM7IGRvaW5nIHNvIHdvdWxkIGJyZWFrIHRoZSBQSQorYm9vc3RpbmcgbG9naWMgW3NlZSBydC1tdXRleC1kZXNnaW4udHh0XSBGb3IgdGhlIHB1cnBvc2VzIG9mCiticmV2aXR5LCB0aGlzIGFjdGlvbiB3aWxsIGJlIHJlZmVycmVkIHRvIGFzICJyZXF1ZXVlX3BpIiB0aHJvdWdob3V0Cit0aGlzIGRvY3VtZW50LiAgUHJpb3JpdHkgaW5oZXJpdGFuY2UgaXMgYWJicmV2aWF0ZWQgdGhyb3VnaG91dCBhcworIlBJIi4KKworTW90aXZhdGlvbgorLS0tLS0tLS0tLQorCitXaXRob3V0IHJlcXVldWVfcGksIHRoZSBnbGliYyBpbXBsZW1lbnRhdGlvbiBvZgorcHRocmVhZF9jb25kX2Jyb2FkY2FzdCgpIG11c3QgcmVzb3J0IHRvIHdha2luZyBhbGwgdGhlIHRhc2tzIHdhaXRpbmcKK29uIGEgcHRocmVhZF9jb25kdmFyIGFuZCBsZXR0aW5nIHRoZW0gdHJ5IHRvIHNvcnQgb3V0IHdoaWNoIHRhc2sKK2dldHMgdG8gcnVuIGZpcnN0IGluIGNsYXNzaWMgdGh1bmRlcmluZy1oZXJkIGZvcm1hdGlvbi4gIEFuIGlkZWFsCitpbXBsZW1lbnRhdGlvbiB3b3VsZCB3YWtlIHRoZSBoaWdoZXN0LXByaW9yaXR5IHdhaXRlciwgYW5kIGxlYXZlIHRoZQorcmVzdCB0byB0aGUgbmF0dXJhbCB3YWtldXAgaW5oZXJlbnQgaW4gdW5sb2NraW5nIHRoZSBtdXRleAorYXNzb2NpYXRlZCB3aXRoIHRoZSBjb25kdmFyLgorCitDb25zaWRlciB0aGUgc2ltcGxpZmllZCBnbGliYyBjYWxsczoKKworLyogY2FsbGVyIG11c3QgbG9jayBtdXRleCAqLworcHRocmVhZF9jb25kX3dhaXQoY29uZCwgbXV0ZXgpCit7CisJbG9jayhjb25kLT5fX2RhdGEuX19sb2NrKTsKKwl1bmxvY2sobXV0ZXgpOworCWRvIHsKKwkgICB1bmxvY2soY29uZC0+X19kYXRhLl9fbG9jayk7CisJICAgZnV0ZXhfd2FpdChjb25kLT5fX2RhdGEuX19mdXRleCk7CisJICAgbG9jayhjb25kLT5fX2RhdGEuX19sb2NrKTsKKwl9IHdoaWxlKC4uLikKKwl1bmxvY2soY29uZC0+X19kYXRhLl9fbG9jayk7CisJbG9jayhtdXRleCk7Cit9CisKK3B0aHJlYWRfY29uZF9icm9hZGNhc3QoY29uZCkKK3sKKwlsb2NrKGNvbmQtPl9fZGF0YS5fX2xvY2spOworCXVubG9jayhjb25kLT5fX2RhdGEuX19sb2NrKTsKKwlmdXRleF9yZXF1ZXVlKGNvbmQtPmRhdGEuX19mdXRleCwgY29uZC0+bXV0ZXgpOworfQorCitPbmNlIHB0aHJlYWRfY29uZF9icm9hZGNhc3QoKSByZXF1ZXVlcyB0aGUgdGFza3MsIHRoZSBjb25kLT5tdXRleAoraGFzIHdhaXRlcnMuIE5vdGUgdGhhdCBwdGhyZWFkX2NvbmRfd2FpdCgpIGF0dGVtcHRzIHRvIGxvY2sgdGhlCittdXRleCBvbmx5IGFmdGVyIGl0IGhhcyByZXR1cm5lZCB0byB1c2VyIHNwYWNlLiAgVGhpcyB3aWxsIGxlYXZlIHRoZQordW5kZXJseWluZyBydF9tdXRleCB3aXRoIHdhaXRlcnMsIGFuZCBubyBvd25lciwgYnJlYWtpbmcgdGhlCitwcmV2aW91c2x5IG1lbnRpb25lZCBQSS1ib29zdGluZyBhbGdvcml0aG1zLgorCitJbiBvcmRlciB0byBzdXBwb3J0IFBJLWF3YXJlIHB0aHJlYWRfY29uZHZhcidzLCB0aGUga2VybmVsIG5lZWRzIHRvCitiZSBhYmxlIHRvIHJlcXVldWUgdGFza3MgdG8gUEkgZnV0ZXhlcy4gIFRoaXMgc3VwcG9ydCBpbXBsaWVzIHRoYXQKK3Vwb24gYSBzdWNjZXNzZnVsIGZ1dGV4X3dhaXQgc3lzdGVtIGNhbGwsIHRoZSBjYWxsZXIgd291bGQgcmV0dXJuIHRvCit1c2VyIHNwYWNlIGFscmVhZHkgaG9sZGluZyB0aGUgUEkgZnV0ZXguICBUaGUgZ2xpYmMgaW1wbGVtZW50YXRpb24KK3dvdWxkIGJlIG1vZGlmaWVkIGFzIGZvbGxvd3M6CisKKworLyogY2FsbGVyIG11c3QgbG9jayBtdXRleCAqLworcHRocmVhZF9jb25kX3dhaXRfcGkoY29uZCwgbXV0ZXgpCit7CisJbG9jayhjb25kLT5fX2RhdGEuX19sb2NrKTsKKwl1bmxvY2sobXV0ZXgpOworCWRvIHsKKwkgICB1bmxvY2soY29uZC0+X19kYXRhLl9fbG9jayk7CisJICAgZnV0ZXhfd2FpdF9yZXF1ZXVlX3BpKGNvbmQtPl9fZGF0YS5fX2Z1dGV4KTsKKwkgICBsb2NrKGNvbmQtPl9fZGF0YS5fX2xvY2spOworCX0gd2hpbGUoLi4uKQorCXVubG9jayhjb25kLT5fX2RhdGEuX19sb2NrKTsKKyAgICAgICAgLyogdGhlIGtlcm5lbCBhY3F1aXJlZCB0aGUgbXV0ZXggZm9yIHVzICovCit9CisKK3B0aHJlYWRfY29uZF9icm9hZGNhc3RfcGkoY29uZCkKK3sKKwlsb2NrKGNvbmQtPl9fZGF0YS5fX2xvY2spOworCXVubG9jayhjb25kLT5fX2RhdGEuX19sb2NrKTsKKwlmdXRleF9yZXF1ZXVlX3BpKGNvbmQtPmRhdGEuX19mdXRleCwgY29uZC0+bXV0ZXgpOworfQorCitUaGUgYWN0dWFsIGdsaWJjIGltcGxlbWVudGF0aW9uIHdpbGwgbGlrZWx5IHRlc3QgZm9yIFBJIGFuZCBtYWtlIHRoZQorbmVjZXNzYXJ5IGNoYW5nZXMgaW5zaWRlIHRoZSBleGlzdGluZyBjYWxscyByYXRoZXIgdGhhbiBjcmVhdGluZyBuZXcKK2NhbGxzIGZvciB0aGUgUEkgY2FzZXMuICBTaW1pbGFyIGNoYW5nZXMgYXJlIG5lZWRlZCBmb3IKK3B0aHJlYWRfY29uZF90aW1lZHdhaXQoKSBhbmQgcHRocmVhZF9jb25kX3NpZ25hbCgpLgorCitJbXBsZW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0KKworSW4gb3JkZXIgdG8gZW5zdXJlIHRoZSBydF9tdXRleCBoYXMgYW4gb3duZXIgaWYgaXQgaGFzIHdhaXRlcnMsIGl0CitpcyBuZWNlc3NhcnkgZm9yIGJvdGggdGhlIHJlcXVldWUgY29kZSwgYXMgd2VsbCBhcyB0aGUgd2FpdGluZyBjb2RlLAordG8gYmUgYWJsZSB0byBhY3F1aXJlIHRoZSBydF9tdXRleCBiZWZvcmUgcmV0dXJuaW5nIHRvIHVzZXIgc3BhY2UuCitUaGUgcmVxdWV1ZSBjb2RlIGNhbm5vdCBzaW1wbHkgd2FrZSB0aGUgd2FpdGVyIGFuZCBsZWF2ZSBpdCB0bworYWNxdWlyZSB0aGUgcnRfbXV0ZXggYXMgaXQgd291bGQgb3BlbiBhIHJhY2Ugd2luZG93IGJldHdlZW4gdGhlCityZXF1ZXVlIGNhbGwgcmV0dXJuaW5nIHRvIHVzZXIgc3BhY2UgYW5kIHRoZSB3YWl0ZXIgd2FraW5nIGFuZAorc3RhcnRpbmcgdG8gcnVuLiAgVGhpcyBpcyBlc3BlY2lhbGx5IHRydWUgaW4gdGhlIHVuY29udGVuZGVkIGNhc2UuCisKK1RoZSBzb2x1dGlvbiBpbnZvbHZlcyB0d28gbmV3IHJ0X211dGV4IGhlbHBlciByb3V0aW5lcywKK3J0X211dGV4X3N0YXJ0X3Byb3h5X2xvY2soKSBhbmQgcnRfbXV0ZXhfZmluaXNoX3Byb3h5X2xvY2soKSwgd2hpY2gKK2FsbG93IHRoZSByZXF1ZXVlIGNvZGUgdG8gYWNxdWlyZSBhbiB1bmNvbnRlbmRlZCBydF9tdXRleCBvbiBiZWhhbGYKK29mIHRoZSB3YWl0ZXIgYW5kIHRvIGVucXVldWUgdGhlIHdhaXRlciBvbiBhIGNvbnRlbmRlZCBydF9tdXRleC4KK1R3byBuZXcgc3lzdGVtIGNhbGxzIHByb3ZpZGUgdGhlIGtlcm5lbDwtPnVzZXIgaW50ZXJmYWNlIHRvCityZXF1ZXVlX3BpOiBGVVRFWF9XQUlUX1JFUVVFVUVfUEkgYW5kIEZVVEVYX0NNUF9SRVFVRVVFX1BJLgorCitGVVRFWF9XQUlUX1JFUVVFVUVfUEkgaXMgY2FsbGVkIGJ5IHRoZSB3YWl0ZXIgKHB0aHJlYWRfY29uZF93YWl0KCkKK2FuZCBwdGhyZWFkX2NvbmRfdGltZWR3YWl0KCkpIHRvIGJsb2NrIG9uIHRoZSBpbml0aWFsIGZ1dGV4IGFuZCB3YWl0Cit0byBiZSByZXF1ZXVlZCB0byBhIFBJLWF3YXJlIGZ1dGV4LiAgVGhlIGltcGxlbWVudGF0aW9uIGlzIHRoZQorcmVzdWx0IG9mIGEgaGlnaC1zcGVlZCBjb2xsaXNpb24gYmV0d2VlbiBmdXRleF93YWl0KCkgYW5kCitmdXRleF9sb2NrX3BpKCksIHdpdGggc29tZSBleHRyYSBsb2dpYyB0byBjaGVjayBmb3IgdGhlIGFkZGl0aW9uYWwKK3dha2UtdXAgc2NlbmFyaW9zLgorCitGVVRFWF9DTVBfUkVRVUVVRV9QSSBpcyBjYWxsZWQgYnkgdGhlIHdha2VyCisocHRocmVhZF9jb25kX2Jyb2FkY2FzdCgpIGFuZCBwdGhyZWFkX2NvbmRfc2lnbmFsKCkpIHRvIHJlcXVldWUgYW5kCitwb3NzaWJseSB3YWtlIHRoZSB3YWl0aW5nIHRhc2tzLiBJbnRlcm5hbGx5LCB0aGlzIHN5c3RlbSBjYWxsIGlzCitzdGlsbCBoYW5kbGVkIGJ5IGZ1dGV4X3JlcXVldWUgKGJ5IHBhc3NpbmcgcmVxdWV1ZV9waT0xKS4gIEJlZm9yZQorcmVxdWV1ZWluZywgZnV0ZXhfcmVxdWV1ZSgpIGF0dGVtcHRzIHRvIGFjcXVpcmUgdGhlIHJlcXVldWUgdGFyZ2V0CitQSSBmdXRleCBvbiBiZWhhbGYgb2YgdGhlIHRvcCB3YWl0ZXIuICBJZiBpdCBjYW4sIHRoaXMgd2FpdGVyIGlzCit3b2tlbi4gIGZ1dGV4X3JlcXVldWUoKSB0aGVuIHByb2NlZWRzIHRvIHJlcXVldWUgdGhlIHJlbWFpbmluZworbnJfd2FrZStucl9yZXF1ZXVlIHRhc2tzIHRvIHRoZSBQSSBmdXRleCwgY2FsbGluZworcnRfbXV0ZXhfc3RhcnRfcHJveHlfbG9jaygpIHByaW9yIHRvIGVhY2ggcmVxdWV1ZSB0byBwcmVwYXJlIHRoZQordGFzayBhcyBhIHdhaXRlciBvbiB0aGUgdW5kZXJseWluZyBydF9tdXRleC4gIEl0IGlzIHBvc3NpYmxlIHRoYXQKK3RoZSBsb2NrIGNhbiBiZSBhY3F1aXJlZCBhdCB0aGlzIHN0YWdlIGFzIHdlbGwsIGlmIHNvLCB0aGUgbmV4dAord2FpdGVyIGlzIHdva2VuIHRvIGZpbmlzaCB0aGUgYWNxdWlzaXRpb24gb2YgdGhlIGxvY2suCisKK0ZVVEVYX0NNUF9SRVFVRVVFX1BJIGFjY2VwdHMgbnJfd2FrZSBhbmQgbnJfcmVxdWV1ZSBhcyBhcmd1bWVudHMsIGJ1dAordGhlaXIgc3VtIGlzIGFsbCB0aGF0IHJlYWxseSBtYXR0ZXJzLiAgZnV0ZXhfcmVxdWV1ZSgpIHdpbGwgd2FrZSBvcgorcmVxdWV1ZSB1cCB0byBucl93YWtlICsgbnJfcmVxdWV1ZSB0YXNrcy4gIEl0IHdpbGwgd2FrZSBvbmx5IGFzIG1hbnkKK3Rhc2tzIGFzIGl0IGNhbiBhY3F1aXJlIHRoZSBsb2NrIGZvciwgd2hpY2ggaW4gdGhlIG1ham9yaXR5IG9mIGNhc2VzCitzaG91bGQgYmUgMCBhcyBnb29kIHByb2dyYW1taW5nIHByYWN0aWNlIGRpY3RhdGVzIHRoYXQgdGhlIGNhbGxlciBvZgorZWl0aGVyIHB0aHJlYWRfY29uZF9icm9hZGNhc3QoKSBvciBwdGhyZWFkX2NvbmRfc2lnbmFsKCkgYWNxdWlyZSB0aGUKK211dGV4IHByaW9yIHRvIG1ha2luZyB0aGUgY2FsbC4gRlVURVhfQ01QX1JFUVVFVUVfUEkgcmVxdWlyZXMgdGhhdAorbnJfd2FrZT0xLiAgbnJfcmVxdWV1ZSBzaG91bGQgYmUgSU5UX01BWCBmb3IgYnJvYWRjYXN0IGFuZCAwIGZvcgorc2lnbmFsLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9nY292LnR4dCBiL0RvY3VtZW50YXRpb24vZ2Nvdi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I3Mjc3OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZ2Nvdi50eHQKQEAgLTAsMCArMSwyNTcgQEAKK1VzaW5nIGdjb3Ygd2l0aCB0aGUgTGludXgga2VybmVsCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisxLiBJbnRyb2R1Y3Rpb24KKzIuIFByZXBhcmF0aW9uCiszLiBDdXN0b21pemF0aW9uCis0LiBGaWxlcworNS4gTW9kdWxlcworNi4gU2VwYXJhdGVkIGJ1aWxkIGFuZCB0ZXN0IG1hY2hpbmVzCis3LiBUcm91Ymxlc2hvb3RpbmcKK0FwcGVuZGl4IEE6IHNhbXBsZSBzY3JpcHQ6IGdhdGhlcl9vbl9idWlsZC5zaAorQXBwZW5kaXggQjogc2FtcGxlIHNjcmlwdDogZ2F0aGVyX29uX3Rlc3Quc2gKKworCisxLiBJbnRyb2R1Y3Rpb24KKz09PT09PT09PT09PT09PQorCitnY292IHByb2ZpbGluZyBrZXJuZWwgc3VwcG9ydCBlbmFibGVzIHRoZSB1c2Ugb2YgR0NDJ3MgY292ZXJhZ2UgdGVzdGluZwordG9vbCBnY292IFsxXSB3aXRoIHRoZSBMaW51eCBrZXJuZWwuIENvdmVyYWdlIGRhdGEgb2YgYSBydW5uaW5nIGtlcm5lbAoraXMgZXhwb3J0ZWQgaW4gZ2Nvdi1jb21wYXRpYmxlIGZvcm1hdCB2aWEgdGhlICJnY292IiBkZWJ1Z2ZzIGRpcmVjdG9yeS4KK1RvIGdldCBjb3ZlcmFnZSBkYXRhIGZvciBhIHNwZWNpZmljIGZpbGUsIGNoYW5nZSB0byB0aGUga2VybmVsIGJ1aWxkCitkaXJlY3RvcnkgYW5kIHVzZSBnY292IHdpdGggdGhlIC1vIG9wdGlvbiBhcyBmb2xsb3dzIChyZXF1aXJlcyByb290KToKKworIyBjZCAvdG1wL2xpbnV4LW91dAorIyBnY292IC1vIC9zeXMva2VybmVsL2RlYnVnL2djb3YvdG1wL2xpbnV4LW91dC9rZXJuZWwgc3BpbmxvY2suYworCitUaGlzIHdpbGwgY3JlYXRlIHNvdXJjZSBjb2RlIGZpbGVzIGFubm90YXRlZCB3aXRoIGV4ZWN1dGlvbiBjb3VudHMKK2luIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gSW4gYWRkaXRpb24sIGdyYXBoaWNhbCBnY292IGZyb250LWVuZHMgc3VjaAorYXMgbGNvdiBbMl0gY2FuIGJlIHVzZWQgdG8gYXV0b21hdGUgdGhlIHByb2Nlc3Mgb2YgY29sbGVjdGluZyBkYXRhCitmb3IgdGhlIGVudGlyZSBrZXJuZWwgYW5kIHByb3ZpZGUgY292ZXJhZ2Ugb3ZlcnZpZXdzIGluIEhUTUwgZm9ybWF0LgorCitQb3NzaWJsZSB1c2VzOgorCisqIGRlYnVnZ2luZyAoaGFzIHRoaXMgbGluZSBiZWVuIHJlYWNoZWQgYXQgYWxsPykKKyogdGVzdCBpbXByb3ZlbWVudCAoaG93IGRvIEkgY2hhbmdlIG15IHRlc3QgdG8gY292ZXIgdGhlc2UgbGluZXM/KQorKiBtaW5pbWl6aW5nIGtlcm5lbCBjb25maWd1cmF0aW9ucyAoZG8gSSBuZWVkIHRoaXMgb3B0aW9uIGlmIHRoZQorICBhc3NvY2lhdGVkIGNvZGUgaXMgbmV2ZXIgcnVuPykKKworLS0KKworWzFdIGh0dHA6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2djYy9HY292Lmh0bWwKK1syXSBodHRwOi8vbHRwLnNvdXJjZWZvcmdlLm5ldC9jb3ZlcmFnZS9sY292LnBocAorCisKKzIuIFByZXBhcmF0aW9uCis9PT09PT09PT09PT09PQorCitDb25maWd1cmUgdGhlIGtlcm5lbCB3aXRoOgorCisgICAgICAgIENPTkZJR19ERUJVR19GUz15CisgICAgICAgIENPTkZJR19HQ09WX0tFUk5FTD15CisKK3NlbGVjdCB0aGUgZ2NjJ3MgZ2NvdiBmb3JtYXQsIGRlZmF1bHQgaXMgYXV0b2RldGVjdCBiYXNlZCBvbiBnY2MgdmVyc2lvbjoKKworICAgICAgICBDT05GSUdfR0NPVl9GT1JNQVRfQVVUT0RFVEVDVD15CisKK2FuZCB0byBnZXQgY292ZXJhZ2UgZGF0YSBmb3IgdGhlIGVudGlyZSBrZXJuZWw6CisKKyAgICAgICAgQ09ORklHX0dDT1ZfUFJPRklMRV9BTEw9eQorCitOb3RlIHRoYXQga2VybmVscyBjb21waWxlZCB3aXRoIHByb2ZpbGluZyBmbGFncyB3aWxsIGJlIHNpZ25pZmljYW50bHkKK2xhcmdlciBhbmQgcnVuIHNsb3dlci4gQWxzbyBDT05GSUdfR0NPVl9QUk9GSUxFX0FMTCBtYXkgbm90IGJlIHN1cHBvcnRlZAorb24gYWxsIGFyY2hpdGVjdHVyZXMuCisKK1Byb2ZpbGluZyBkYXRhIHdpbGwgb25seSBiZWNvbWUgYWNjZXNzaWJsZSBvbmNlIGRlYnVnZnMgaGFzIGJlZW4KK21vdW50ZWQ6CisKKyAgICAgICAgbW91bnQgLXQgZGVidWdmcyBub25lIC9zeXMva2VybmVsL2RlYnVnCisKKworMy4gQ3VzdG9taXphdGlvbgorPT09PT09PT09PT09PT09PQorCitUbyBlbmFibGUgcHJvZmlsaW5nIGZvciBzcGVjaWZpYyBmaWxlcyBvciBkaXJlY3RvcmllcywgYWRkIGEgbGluZQorc2ltaWxhciB0byB0aGUgZm9sbG93aW5nIHRvIHRoZSByZXNwZWN0aXZlIGtlcm5lbCBNYWtlZmlsZToKKworICAgICAgICBGb3IgYSBzaW5nbGUgZmlsZSAoZS5nLiBtYWluLm8pOgorICAgICAgICAgICAgICAgIEdDT1ZfUFJPRklMRV9tYWluLm8gOj0geQorCisgICAgICAgIEZvciBhbGwgZmlsZXMgaW4gb25lIGRpcmVjdG9yeToKKyAgICAgICAgICAgICAgICBHQ09WX1BST0ZJTEUgOj0geQorCitUbyBleGNsdWRlIGZpbGVzIGZyb20gYmVpbmcgcHJvZmlsZWQgZXZlbiB3aGVuIENPTkZJR19HQ09WX1BST0ZJTEVfQUxMCitpcyBzcGVjaWZpZWQsIHVzZToKKworICAgICAgICAgICAgICAgIEdDT1ZfUFJPRklMRV9tYWluLm8gOj0gbgorICAgICAgICBhbmQ6CisgICAgICAgICAgICAgICAgR0NPVl9QUk9GSUxFIDo9IG4KKworT25seSBmaWxlcyB3aGljaCBhcmUgbGlua2VkIHRvIHRoZSBtYWluIGtlcm5lbCBpbWFnZSBvciBhcmUgY29tcGlsZWQgYXMKK2tlcm5lbCBtb2R1bGVzIGFyZSBzdXBwb3J0ZWQgYnkgdGhpcyBtZWNoYW5pc20uCisKKworNC4gRmlsZXMKKz09PT09PT09CisKK1RoZSBnY292IGtlcm5lbCBzdXBwb3J0IGNyZWF0ZXMgdGhlIGZvbGxvd2luZyBmaWxlcyBpbiBkZWJ1Z2ZzOgorCisgICAgICAgIC9zeXMva2VybmVsL2RlYnVnL2djb3YKKyAgICAgICAgICAgICAgICBQYXJlbnQgZGlyZWN0b3J5IGZvciBhbGwgZ2Nvdi1yZWxhdGVkIGZpbGVzLgorCisgICAgICAgIC9zeXMva2VybmVsL2RlYnVnL2djb3YvcmVzZXQKKyAgICAgICAgICAgICAgICBHbG9iYWwgcmVzZXQgZmlsZTogcmVzZXRzIGFsbCBjb3ZlcmFnZSBkYXRhIHRvIHplcm8gd2hlbgorICAgICAgICAgICAgICAgIHdyaXR0ZW4gdG8uCisKKyAgICAgICAgL3N5cy9rZXJuZWwvZGVidWcvZ2Nvdi9wYXRoL3RvL2NvbXBpbGUvZGlyL2ZpbGUuZ2NkYQorICAgICAgICAgICAgICAgIFRoZSBhY3R1YWwgZ2NvdiBkYXRhIGZpbGUgYXMgdW5kZXJzdG9vZCBieSB0aGUgZ2NvdgorICAgICAgICAgICAgICAgIHRvb2wuIFJlc2V0cyBmaWxlIGNvdmVyYWdlIGRhdGEgdG8gemVybyB3aGVuIHdyaXR0ZW4gdG8uCisKKyAgICAgICAgL3N5cy9rZXJuZWwvZGVidWcvZ2Nvdi9wYXRoL3RvL2NvbXBpbGUvZGlyL2ZpbGUuZ2NubworICAgICAgICAgICAgICAgIFN5bWJvbGljIGxpbmsgdG8gYSBzdGF0aWMgZGF0YSBmaWxlIHJlcXVpcmVkIGJ5IHRoZSBnY292CisgICAgICAgICAgICAgICAgdG9vbC4gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBnY2Mgd2hlbiBjb21waWxpbmcgd2l0aAorICAgICAgICAgICAgICAgIG9wdGlvbiAtZnRlc3QtY292ZXJhZ2UuCisKKworNS4gTW9kdWxlcworPT09PT09PT09PQorCitLZXJuZWwgbW9kdWxlcyBtYXkgY29udGFpbiBjbGVhbnVwIGNvZGUgd2hpY2ggaXMgb25seSBydW4gZHVyaW5nCittb2R1bGUgdW5sb2FkIHRpbWUuIFRoZSBnY292IG1lY2hhbmlzbSBwcm92aWRlcyBhIG1lYW5zIHRvIGNvbGxlY3QKK2NvdmVyYWdlIGRhdGEgZm9yIHN1Y2ggY29kZSBieSBrZWVwaW5nIGEgY29weSBvZiB0aGUgZGF0YSBhc3NvY2lhdGVkCit3aXRoIHRoZSB1bmxvYWRlZCBtb2R1bGUuIFRoaXMgZGF0YSByZW1haW5zIGF2YWlsYWJsZSB0aHJvdWdoIGRlYnVnZnMuCitPbmNlIHRoZSBtb2R1bGUgaXMgbG9hZGVkIGFnYWluLCB0aGUgYXNzb2NpYXRlZCBjb3ZlcmFnZSBjb3VudGVycyBhcmUKK2luaXRpYWxpemVkIHdpdGggdGhlIGRhdGEgZnJvbSBpdHMgcHJldmlvdXMgaW5zdGFudGlhdGlvbi4KKworVGhpcyBiZWhhdmlvciBjYW4gYmUgZGVhY3RpdmF0ZWQgYnkgc3BlY2lmeWluZyB0aGUgZ2Nvdl9wZXJzaXN0IGtlcm5lbAorcGFyYW1ldGVyOgorCisgICAgICAgIGdjb3ZfcGVyc2lzdD0wCisKK0F0IHJ1bi10aW1lLCBhIHVzZXIgY2FuIGFsc28gY2hvb3NlIHRvIGRpc2NhcmQgZGF0YSBmb3IgYW4gdW5sb2FkZWQKK21vZHVsZSBieSB3cml0aW5nIHRvIGl0cyBkYXRhIGZpbGUgb3IgdGhlIGdsb2JhbCByZXNldCBmaWxlLgorCisKKzYuIFNlcGFyYXRlZCBidWlsZCBhbmQgdGVzdCBtYWNoaW5lcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBnY292IGtlcm5lbCBwcm9maWxpbmcgaW5mcmFzdHJ1Y3R1cmUgaXMgZGVzaWduZWQgdG8gd29yayBvdXQtb2YtdGhlCitib3ggZm9yIHNldHVwcyB3aGVyZSBrZXJuZWxzIGFyZSBidWlsdCBhbmQgcnVuIG9uIHRoZSBzYW1lIG1hY2hpbmUuIEluCitjYXNlcyB3aGVyZSB0aGUga2VybmVsIHJ1bnMgb24gYSBzZXBhcmF0ZSBtYWNoaW5lLCBzcGVjaWFsIHByZXBhcmF0aW9ucworbXVzdCBiZSBtYWRlLCBkZXBlbmRpbmcgb24gd2hlcmUgdGhlIGdjb3YgdG9vbCBpcyB1c2VkOgorCithKSBnY292IGlzIHJ1biBvbiB0aGUgVEVTVCBtYWNoaW5lCisKK1RoZSBnY292IHRvb2wgdmVyc2lvbiBvbiB0aGUgdGVzdCBtYWNoaW5lIG11c3QgYmUgY29tcGF0aWJsZSB3aXRoIHRoZQorZ2NjIHZlcnNpb24gdXNlZCBmb3Iga2VybmVsIGJ1aWxkLiBBbHNvIHRoZSBmb2xsb3dpbmcgZmlsZXMgbmVlZCB0byBiZQorY29waWVkIGZyb20gYnVpbGQgdG8gdGVzdCBtYWNoaW5lOgorCitmcm9tIHRoZSBzb3VyY2UgdHJlZToKKyAgLSBhbGwgQyBzb3VyY2UgZmlsZXMgKyBoZWFkZXJzCisKK2Zyb20gdGhlIGJ1aWxkIHRyZWU6CisgIC0gYWxsIEMgc291cmNlIGZpbGVzICsgaGVhZGVycworICAtIGFsbCAuZ2NkYSBhbmQgLmdjbm8gZmlsZXMKKyAgLSBhbGwgbGlua3MgdG8gZGlyZWN0b3JpZXMKKworSXQgaXMgaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGVzZSBmaWxlcyBuZWVkIHRvIGJlIHBsYWNlZCBpbnRvIHRoZQorZXhhY3Qgc2FtZSBmaWxlIHN5c3RlbSBsb2NhdGlvbiBvbiB0aGUgdGVzdCBtYWNoaW5lIGFzIG9uIHRoZSBidWlsZAorbWFjaGluZS4gSWYgYW55IG9mIHRoZSBwYXRoIGNvbXBvbmVudHMgaXMgc3ltYm9saWMgbGluaywgdGhlIGFjdHVhbAorZGlyZWN0b3J5IG5lZWRzIHRvIGJlIHVzZWQgaW5zdGVhZCAoZHVlIHRvIG1ha2UncyBDVVJESVIgaGFuZGxpbmcpLgorCitiKSBnY292IGlzIHJ1biBvbiB0aGUgQlVJTEQgbWFjaGluZQorCitUaGUgZm9sbG93aW5nIGZpbGVzIG5lZWQgdG8gYmUgY29waWVkIGFmdGVyIGVhY2ggdGVzdCBjYXNlIGZyb20gdGVzdAordG8gYnVpbGQgbWFjaGluZToKKworZnJvbSB0aGUgZ2NvdiBkaXJlY3RvcnkgaW4gc3lzZnM6CisgIC0gYWxsIC5nY2RhIGZpbGVzCisgIC0gYWxsIGxpbmtzIHRvIC5nY25vIGZpbGVzCisKK1RoZXNlIGZpbGVzIGNhbiBiZSBjb3BpZWQgdG8gYW55IGxvY2F0aW9uIG9uIHRoZSBidWlsZCBtYWNoaW5lLiBnY292CittdXN0IHRoZW4gYmUgY2FsbGVkIHdpdGggdGhlIC1vIG9wdGlvbiBwb2ludGluZyB0byB0aGF0IGRpcmVjdG9yeS4KKworRXhhbXBsZSBkaXJlY3Rvcnkgc2V0dXAgb24gdGhlIGJ1aWxkIG1hY2hpbmU6CisKKyAgL3RtcC9saW51eDogICAga2VybmVsIHNvdXJjZSB0cmVlCisgIC90bXAvb3V0OiAgICAgIGtlcm5lbCBidWlsZCBkaXJlY3RvcnkgYXMgc3BlY2lmaWVkIGJ5IG1ha2UgTz0KKyAgL3RtcC9jb3ZlcmFnZTogbG9jYXRpb24gb2YgdGhlIGZpbGVzIGNvcGllZCBmcm9tIHRoZSB0ZXN0IG1hY2hpbmUKKworICBbdXNlckBidWlsZF0gY2QgL3RtcC9vdXQKKyAgW3VzZXJAYnVpbGRdIGdjb3YgLW8gL3RtcC9jb3ZlcmFnZS90bXAvb3V0L2luaXQgbWFpbi5jCisKKworNy4gVHJvdWJsZXNob290aW5nCis9PT09PT09PT09PT09PT09PT0KKworUHJvYmxlbTogIENvbXBpbGF0aW9uIGFib3J0cyBkdXJpbmcgbGlua2VyIHN0ZXAuCitDYXVzZTogICAgUHJvZmlsaW5nIGZsYWdzIGFyZSBzcGVjaWZpZWQgZm9yIHNvdXJjZSBmaWxlcyB3aGljaCBhcmUgbm90CisgICAgICAgICAgbGlua2VkIHRvIHRoZSBtYWluIGtlcm5lbCBvciB3aGljaCBhcmUgbGlua2VkIGJ5IGEgY3VzdG9tCisgICAgICAgICAgbGlua2VyIHByb2NlZHVyZS4KK1NvbHV0aW9uOiBFeGNsdWRlIGFmZmVjdGVkIHNvdXJjZSBmaWxlcyBmcm9tIHByb2ZpbGluZyBieSBzcGVjaWZ5aW5nCisgICAgICAgICAgR0NPVl9QUk9GSUxFIDo9IG4gb3IgR0NPVl9QUk9GSUxFX2Jhc2VuYW1lLm8gOj0gbiBpbiB0aGUKKyAgICAgICAgICBjb3JyZXNwb25kaW5nIE1ha2VmaWxlLgorCitQcm9ibGVtOiAgRmlsZXMgY29waWVkIGZyb20gc3lzZnMgYXBwZWFyIGVtcHR5IG9yIGluY29tcGxldGUuCitDYXVzZTogICAgRHVlIHRvIHRoZSB3YXkgc2VxX2ZpbGUgd29ya3MsIHNvbWUgdG9vbHMgc3VjaCBhcyBjcCBvciB0YXIKKyAgICAgICAgICBtYXkgbm90IGNvcnJlY3RseSBjb3B5IGZpbGVzIGZyb20gc3lzZnMuCitTb2x1dGlvbjogVXNlICdjYXQnIHRvIHJlYWQgLmdjZGEgZmlsZXMgYW5kICdjcCAtZCcgdG8gY29weSBsaW5rcy4KKyAgICAgICAgICBBbHRlcm5hdGl2ZWx5IHVzZSB0aGUgbWVjaGFuaXNtIHNob3duIGluIEFwcGVuZGl4IEIuCisKKworQXBwZW5kaXggQTogZ2F0aGVyX29uX2J1aWxkLnNoCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU2FtcGxlIHNjcmlwdCB0byBnYXRoZXIgY292ZXJhZ2UgbWV0YSBmaWxlcyBvbiB0aGUgYnVpbGQgbWFjaGluZQorKHNlZSA2YSk6CisjIS9iaW4vYmFzaAorCitLU1JDPSQxCitLT0JKPSQyCitERVNUPSQzCisKK2lmIFsgLXogIiRLU1JDIiBdIHx8IFsgLXogIiRLT0JKIiBdIHx8IFsgLXogIiRERVNUIiBdOyB0aGVuCisgIGVjaG8gIlVzYWdlOiAkMCA8a3NyYyBkaXJlY3Rvcnk+IDxrb2JqIGRpcmVjdG9yeT4gPG91dHB1dC50YXIuZ3o+IiA+JjIKKyAgZXhpdCAxCitmaQorCitLU1JDPSQoY2QgJEtTUkM7IHByaW50ZiAiYWxsOlxuXHRAZWNobyBcJHtDVVJESVJ9XG4iIHwgbWFrZSAtZiAtKQorS09CSj0kKGNkICRLT0JKOyBwcmludGYgImFsbDpcblx0QGVjaG8gXCR7Q1VSRElSfVxuIiB8IG1ha2UgLWYgLSkKKworZmluZCAkS1NSQyAkS09CSiBcKCAtbmFtZSAnKi5nY25vJyAtbyAtbmFtZSAnKi5bY2hdJyAtbyAtdHlwZSBsIFwpIC1hIFwKKyAgICAgICAgICAgICAgICAgLXBlcm0gL3UrcixnK3IgfCB0YXIgY2Z6ICRERVNUIC1QIC1UIC0KKworaWYgWyAkPyAtZXEgMCBdIDsgdGhlbgorICBlY2hvICIkREVTVCBzdWNjZXNzZnVsbHkgY3JlYXRlZCwgY29weSB0byB0ZXN0IHN5c3RlbSBhbmQgdW5wYWNrIHdpdGg6IgorICBlY2hvICIgIHRhciB4ZnogJERFU1QgLVAiCitlbHNlCisgIGVjaG8gIkNvdWxkIG5vdCBjcmVhdGUgZmlsZSAkREVTVCIKK2ZpCisKKworQXBwZW5kaXggQjogZ2F0aGVyX29uX3Rlc3Quc2gKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1NhbXBsZSBzY3JpcHQgdG8gZ2F0aGVyIGNvdmVyYWdlIGRhdGEgZmlsZXMgb24gdGhlIHRlc3QgbWFjaGluZQorKHNlZSA2Yik6CisKKyMhL2Jpbi9iYXNoIC1lCisKK0RFU1Q9JDEKK0dDREE9L3N5cy9rZXJuZWwvZGVidWcvZ2NvdgorCitpZiBbIC16ICIkREVTVCIgXSA7IHRoZW4KKyAgZWNobyAiVXNhZ2U6ICQwIDxvdXRwdXQudGFyLmd6PiIgPiYyCisgIGV4aXQgMQorZmkKKworVEVNUERJUj0kKG1rdGVtcCAtZCkKK2VjaG8gQ29sbGVjdGluZyBkYXRhLi4KK2ZpbmQgJEdDREEgLXR5cGUgZCAtZXhlYyBta2RpciAtcCAkVEVNUERJUi9ce1x9IFw7CitmaW5kICRHQ0RBIC1uYW1lICcqLmdjZGEnIC1leGVjIHNoIC1jICdjYXQgPCAkMCA+ICckVEVNUERJUicvJDAnIHt9IFw7CitmaW5kICRHQ0RBIC1uYW1lICcqLmdjbm8nIC1leGVjIHNoIC1jICdjcCAtZCAkMCAnJFRFTVBESVInLyQwJyB7fSBcOwordGFyIGN6ZiAkREVTVCAtQyAkVEVNUERJUiBzeXMKK3JtIC1yZiAkVEVNUERJUgorCitlY2hvICIkREVTVCBzdWNjZXNzZnVsbHkgY3JlYXRlZCwgY29weSB0byBidWlsZCBzeXN0ZW0gYW5kIHVucGFjayB3aXRoOiIKK2VjaG8gIiAgdGFyIHhmeiAkREVTVCIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2RiLWtlcm5lbC1kZWJ1Z2dpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9nZGIta2VybmVsLWRlYnVnZ2luZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA1MGNlOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZ2RiLWtlcm5lbC1kZWJ1Z2dpbmcudHh0CkBAIC0wLDAgKzEsMTYwIEBACitEZWJ1Z2dpbmcga2VybmVsIGFuZCBtb2R1bGVzIHZpYSBnZGIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUga2VybmVsIGRlYnVnZ2VyIGtnZGIsIGh5cGVydmlzb3JzIGxpa2UgUUVNVSBvciBKVEFHLWJhc2VkIGhhcmR3YXJlCitpbnRlcmZhY2VzIGFsbG93IHRvIGRlYnVnIHRoZSBMaW51eCBrZXJuZWwgYW5kIGl0cyBtb2R1bGVzIGR1cmluZyBydW50aW1lCit1c2luZyBnZGIuIEdkYiBjb21lcyB3aXRoIGEgcG93ZXJmdWwgc2NyaXB0aW5nIGludGVyZmFjZSBmb3IgcHl0aG9uLiBUaGUKK2tlcm5lbCBwcm92aWRlcyBhIGNvbGxlY3Rpb24gb2YgaGVscGVyIHNjcmlwdHMgdGhhdCBjYW4gc2ltcGxpZnkgdHlwaWNhbAora2VybmVsIGRlYnVnZ2luZyBzdGVwcy4gVGhpcyBpcyBhIHNob3J0IHR1dG9yaWFsIGFib3V0IGhvdyB0byBlbmFibGUgYW5kIHVzZQordGhlbS4gSXQgZm9jdXNlcyBvbiBRRU1VL0tWTSB2aXJ0dWFsIG1hY2hpbmVzIGFzIHRhcmdldCwgYnV0IHRoZSBleGFtcGxlcyBjYW4KK2JlIHRyYW5zZmVycmVkIHRvIHRoZSBvdGhlciBnZGIgc3R1YnMgYXMgd2VsbC4KKworCitSZXF1aXJlbWVudHMKKy0tLS0tLS0tLS0tLQorCisgbyBnZGIgNy4yKyAocmVjb21tZW5kZWQ6IDcuNCspIHdpdGggcHl0aG9uIHN1cHBvcnQgZW5hYmxlZCAodHlwaWNhbGx5IHRydWUKKyAgIGZvciBkaXN0cmlidXRpb25zKQorCisKK1NldHVwCistLS0tLQorCisgbyBDcmVhdGUgYSB2aXJ0dWFsIExpbnV4IG1hY2hpbmUgZm9yIFFFTVUvS1ZNIChzZWUgd3d3LmxpbnV4LWt2bS5vcmcgYW5kCisgICB3d3cucWVtdS5vcmcgZm9yIG1vcmUgZGV0YWlscykuIEZvciBjcm9zcy1kZXZlbG9wbWVudCwKKyAgIGh0dHA6Ly9sYW5kbGV5Lm5ldC9hYm9yaWdpbmFsL2JpbiBrZWVwcyBhIHBvb2wgb2YgbWFjaGluZSBpbWFnZXMgYW5kCisgICB0b29sY2hhaW5zIHRoYXQgY2FuIGJlIGhlbHBmdWwgdG8gc3RhcnQgZnJvbS4KKworIG8gQnVpbGQgdGhlIGtlcm5lbCB3aXRoIENPTkZJR19HREJfU0NSSVBUUyBlbmFibGVkLCBidXQgbGVhdmUKKyAgIENPTkZJR19ERUJVR19JTkZPX1JFRFVDRUQgb2ZmLiBJZiB5b3VyIGFyY2hpdGVjdHVyZSBzdXBwb3J0cworICAgQ09ORklHX0ZSQU1FX1BPSU5URVIsIGtlZXAgaXQgZW5hYmxlZC4KKworIG8gSW5zdGFsbCB0aGF0IGtlcm5lbCBvbiB0aGUgZ3Vlc3QuCisKKyAgIEFsdGVybmF0aXZlbHksIFFFTVUgYWxsb3dzIHRvIGJvb3QgdGhlIGtlcm5lbCBkaXJlY3RseSB1c2luZyAta2VybmVsLAorICAgLWFwcGVuZCwgLWluaXRyZCBjb21tYW5kIGxpbmUgc3dpdGNoZXMuIFRoaXMgaXMgZ2VuZXJhbGx5IG9ubHkgdXNlZnVsIGlmCisgICB5b3UgZG8gbm90IGRlcGVuZCBvbiBtb2R1bGVzLiBTZWUgUUVNVSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMgb24KKyAgIHRoaXMgbW9kZS4KKworIG8gRW5hYmxlIHRoZSBnZGIgc3R1YiBvZiBRRU1VL0tWTSwgZWl0aGVyCisgICAgLSBhdCBWTSBzdGFydHVwIHRpbWUgYnkgYXBwZW5kaW5nICItcyIgdG8gdGhlIFFFTVUgY29tbWFuZCBsaW5lCisgICBvcgorICAgIC0gZHVyaW5nIHJ1bnRpbWUgYnkgaXNzdWluZyAiZ2Ric2VydmVyIiBmcm9tIHRoZSBRRU1VIG1vbml0b3IKKyAgICAgIGNvbnNvbGUKKworIG8gY2QgL3BhdGgvdG8vbGludXgtYnVpbGQKKworIG8gU3RhcnQgZ2RiOiBnZGIgdm1saW51eAorCisgICBOb3RlOiBTb21lIGRpc3Ryb3MgbWF5IHJlc3RyaWN0IGF1dG8tbG9hZGluZyBvZiBnZGIgc2NyaXB0cyB0byBrbm93biBzYWZlCisgICBkaXJlY3Rvcmllcy4gSW4gY2FzZSBnZGIgcmVwb3J0cyB0byByZWZ1c2UgbG9hZGluZyB2bWxpbnV4LWdkYi5weSwgYWRkCisKKyAgICBhZGQtYXV0by1sb2FkLXNhZmUtcGF0aCAvcGF0aC90by9saW51eC1idWlsZAorCisgICB0byB+Ly5nZGJpbml0LiBTZWUgZ2RiIGhlbHAgZm9yIG1vcmUgZGV0YWlscy4KKworIG8gQXR0YWNoIHRvIHRoZSBib290ZWQgZ3Vlc3Q6CisgICAgKGdkYikgdGFyZ2V0IHJlbW90ZSA6MTIzNAorCisKK0V4YW1wbGVzIG9mIHVzaW5nIHRoZSBMaW51eC1wcm92aWRlZCBnZGIgaGVscGVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyBvIExvYWQgbW9kdWxlIChhbmQgbWFpbiBrZXJuZWwpIHN5bWJvbHM6CisgICAgKGdkYikgbHgtc3ltYm9scworICAgIGxvYWRpbmcgdm1saW51eAorICAgIHNjYW5uaW5nIGZvciBtb2R1bGVzIGluIC9ob21lL3VzZXIvbGludXgvYnVpbGQKKyAgICBsb2FkaW5nIEAweGZmZmZmZmZmYTAwMjAwMDA6IC9ob21lL3VzZXIvbGludXgvYnVpbGQvbmV0L25ldGZpbHRlci94dF90Y3B1ZHAua28KKyAgICBsb2FkaW5nIEAweGZmZmZmZmZmYTAwMTYwMDA6IC9ob21lL3VzZXIvbGludXgvYnVpbGQvbmV0L25ldGZpbHRlci94dF9wa3R0eXBlLmtvCisgICAgbG9hZGluZyBAMHhmZmZmZmZmZmEwMDAyMDAwOiAvaG9tZS91c2VyL2xpbnV4L2J1aWxkL25ldC9uZXRmaWx0ZXIveHRfbGltaXQua28KKyAgICBsb2FkaW5nIEAweGZmZmZmZmZmYTAwY2EwMDA6IC9ob21lL3VzZXIvbGludXgvYnVpbGQvbmV0L3BhY2tldC9hZl9wYWNrZXQua28KKyAgICBsb2FkaW5nIEAweGZmZmZmZmZmYTAwM2MwMDA6IC9ob21lL3VzZXIvbGludXgvYnVpbGQvZnMvZnVzZS9mdXNlLmtvCisgICAgLi4uCisgICAgbG9hZGluZyBAMHhmZmZmZmZmZmEwMDAwMDAwOiAvaG9tZS91c2VyL2xpbnV4L2J1aWxkL2RyaXZlcnMvYXRhL2F0YV9nZW5lcmljLmtvCisKKyBvIFNldCBhIGJyZWFrcG9pbnQgb24gc29tZSBub3QgeWV0IGxvYWRlZCBtb2R1bGUgZnVuY3Rpb24sIGUuZy46CisgICAgKGdkYikgYiBidHJmc19pbml0X3N5c2ZzCisgICAgRnVuY3Rpb24gImJ0cmZzX2luaXRfc3lzZnMiIG5vdCBkZWZpbmVkLgorICAgIE1ha2UgYnJlYWtwb2ludCBwZW5kaW5nIG9uIGZ1dHVyZSBzaGFyZWQgbGlicmFyeSBsb2FkPyAoeSBvciBbbl0pIHkKKyAgICBCcmVha3BvaW50IDEgKGJ0cmZzX2luaXRfc3lzZnMpIHBlbmRpbmcuCisKKyBvIENvbnRpbnVlIHRoZSB0YXJnZXQKKyAgICAoZ2RiKSBjCisKKyBvIExvYWQgdGhlIG1vZHVsZSBvbiB0aGUgdGFyZ2V0IGFuZCB3YXRjaCB0aGUgc3ltYm9scyBiZWluZyBsb2FkZWQgYXMgd2VsbCBhcworICAgdGhlIGJyZWFrcG9pbnQgaGl0OgorICAgIGxvYWRpbmcgQDB4ZmZmZmZmZmZhMDAzNDAwMDogL2hvbWUvdXNlci9saW51eC9idWlsZC9saWIvbGliY3JjMzJjLmtvCisgICAgbG9hZGluZyBAMHhmZmZmZmZmZmEwMDUwMDAwOiAvaG9tZS91c2VyL2xpbnV4L2J1aWxkL2xpYi9sem8vbHpvX2NvbXByZXNzLmtvCisgICAgbG9hZGluZyBAMHhmZmZmZmZmZmEwMDZlMDAwOiAvaG9tZS91c2VyL2xpbnV4L2J1aWxkL2xpYi96bGliX2RlZmxhdGUvemxpYl9kZWZsYXRlLmtvCisgICAgbG9hZGluZyBAMHhmZmZmZmZmZmEwMWIxMDAwOiAvaG9tZS91c2VyL2xpbnV4L2J1aWxkL2ZzL2J0cmZzL2J0cmZzLmtvCisKKyAgICBCcmVha3BvaW50IDEsIGJ0cmZzX2luaXRfc3lzZnMgKCkgYXQgL2hvbWUvdXNlci9saW51eC9mcy9idHJmcy9zeXNmcy5jOjM2CisgICAgMzYgICAgICAgICAgICAgIGJ0cmZzX2tzZXQgPSBrc2V0X2NyZWF0ZV9hbmRfYWRkKCJidHJmcyIsIE5VTEwsIGZzX2tvYmopOworCisgbyBEdW1wIHRoZSBsb2cgYnVmZmVyIG9mIHRoZSB0YXJnZXQga2VybmVsOgorICAgIChnZGIpIGx4LWRtZXNnCisgICAgWyAgICAgMC4wMDAwMDBdIEluaXRpYWxpemluZyBjZ3JvdXAgc3Vic3lzIGNwdXNldAorICAgIFsgICAgIDAuMDAwMDAwXSBJbml0aWFsaXppbmcgY2dyb3VwIHN1YnN5cyBjcHUKKyAgICBbICAgICAwLjAwMDAwMF0gTGludXggdmVyc2lvbiAzLjguMC1yYzQtZGJnKyAoLi4uCisgICAgWyAgICAgMC4wMDAwMDBdIENvbW1hbmQgbGluZTogcm9vdD0vZGV2L3NkYTIgcmVzdW1lPS9kZXYvc2RhMSB2Z2E9MHgzMTQKKyAgICBbICAgICAwLjAwMDAwMF0gZTgyMDogQklPUy1wcm92aWRlZCBwaHlzaWNhbCBSQU0gbWFwOgorICAgIFsgICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMDAwMDAwMDAwLTB4MDAwMDAwMDAwMDA5ZmJmZl0gdXNhYmxlCisgICAgWyAgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwMDAwOWZjMDAtMHgwMDAwMDAwMDAwMDlmZmZmXSByZXNlcnZlZAorICAgIC4uLi4KKworIG8gRXhhbWluZSBmaWVsZHMgb2YgdGhlIGN1cnJlbnQgdGFzayBzdHJ1Y3Q6CisgICAgKGdkYikgcCAkbHhfY3VycmVudCgpLnBpZAorICAgICQxID0gNDk5OAorICAgIChnZGIpIHAgJGx4X2N1cnJlbnQoKS5jb21tCisgICAgJDIgPSAibW9kcHJvYmVcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIgorCisgbyBNYWtlIHVzZSBvZiB0aGUgcGVyLWNwdSBmdW5jdGlvbiBmb3IgdGhlIGN1cnJlbnQgb3IgYSBzcGVjaWZpZWQgQ1BVOgorICAgIChnZGIpIHAgJGx4X3Blcl9jcHUoInJ1bnF1ZXVlcyIpLm5yX3J1bm5pbmcKKyAgICAkMyA9IDEKKyAgICAoZ2RiKSBwICRseF9wZXJfY3B1KCJydW5xdWV1ZXMiLCAyKS5ucl9ydW5uaW5nCisgICAgJDQgPSAwCisKKyBvIERpZyBpbnRvIGhydGltZXJzIHVzaW5nIHRoZSBjb250YWluZXJfb2YgaGVscGVyOgorICAgIChnZGIpIHNldCAkbmV4dCA9ICRseF9wZXJfY3B1KCJocnRpbWVyX2Jhc2VzIikuY2xvY2tfYmFzZVswXS5hY3RpdmUubmV4dAorICAgIChnZGIpIHAgKiRjb250YWluZXJfb2YoJG5leHQsICJzdHJ1Y3QgaHJ0aW1lciIsICJub2RlIikKKyAgICAkNSA9IHsKKyAgICAgIG5vZGUgPSB7CisgICAgICAgIG5vZGUgPSB7CisgICAgICAgICAgX19yYl9wYXJlbnRfY29sb3IgPSAxODQ0NjYxMjEzMzM1NTI1NjA3MiwKKyAgICAgICAgICByYl9yaWdodCA9IDB4MCA8aXJxX3N0YWNrX3VuaW9uPiwKKyAgICAgICAgICByYl9sZWZ0ID0gMHgwIDxpcnFfc3RhY2tfdW5pb24+CisgICAgICAgIH0sCisgICAgICAgIGV4cGlyZXMgPSB7CisgICAgICAgICAgdHY2NCA9IDE4MzUyNjgwMDAwMDAKKyAgICAgICAgfQorICAgICAgfSwKKyAgICAgIF9zb2Z0ZXhwaXJlcyA9IHsKKyAgICAgICAgdHY2NCA9IDE4MzUyNjgwMDAwMDAKKyAgICAgIH0sCisgICAgICBmdW5jdGlvbiA9IDB4ZmZmZmZmZmY4MTA3ODIzMiA8dGlja19zY2hlZF90aW1lcj4sCisgICAgICBiYXNlID0gMHhmZmZmODgwMDNmZDBkNmYwLAorICAgICAgc3RhdGUgPSAxLAorICAgICAgc3RhcnRfcGlkID0gMCwKKyAgICAgIHN0YXJ0X3NpdGUgPSAweGZmZmZmZmZmODEwNTVjMWYgPGhydGltZXJfc3RhcnRfcmFuZ2VfbnMrMjA+LAorICAgICAgc3RhcnRfY29tbSA9ICJzd2FwcGVyLzJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAiCisgICAgfQorCisKK0xpc3Qgb2YgY29tbWFuZHMgYW5kIGZ1bmN0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBudW1iZXIgb2YgY29tbWFuZHMgYW5kIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyBtYXkgZXZvbHZlIG92ZXIgdGhlIHRpbWUsCit0aGlzIGlzIGp1c3QgYSBzbmFwc2hvdCBvZiB0aGUgaW5pdGlhbCB2ZXJzaW9uOgorCisgKGdkYikgYXByb3BvcyBseAorIGZ1bmN0aW9uIGx4X2N1cnJlbnQgLS0gUmV0dXJuIGN1cnJlbnQgdGFzaworIGZ1bmN0aW9uIGx4X21vZHVsZSAtLSBGaW5kIG1vZHVsZSBieSBuYW1lIGFuZCByZXR1cm4gdGhlIG1vZHVsZSB2YXJpYWJsZQorIGZ1bmN0aW9uIGx4X3Blcl9jcHUgLS0gUmV0dXJuIHBlci1jcHUgdmFyaWFibGUKKyBmdW5jdGlvbiBseF90YXNrX2J5X3BpZCAtLSBGaW5kIExpbnV4IHRhc2sgYnkgUElEIGFuZCByZXR1cm4gdGhlIHRhc2tfc3RydWN0IHZhcmlhYmxlCisgZnVuY3Rpb24gbHhfdGhyZWFkX2luZm8gLS0gQ2FsY3VsYXRlIExpbnV4IHRocmVhZF9pbmZvIGZyb20gdGFzayB2YXJpYWJsZQorIGx4LWRtZXNnIC0tIFByaW50IExpbnV4IGtlcm5lbCBsb2cgYnVmZmVyCisgbHgtbHNtb2QgLS0gTGlzdCBjdXJyZW50bHkgbG9hZGVkIG1vZHVsZXMKKyBseC1zeW1ib2xzIC0tIChSZS0pbG9hZCBzeW1ib2xzIG9mIExpbnV4IGtlcm5lbCBhbmQgY3VycmVudGx5IGxvYWRlZCBtb2R1bGVzCisKK0RldGFpbGVkIGhlbHAgY2FuIGJlIG9idGFpbmVkIHZpYSAiaGVscCA8Y29tbWFuZC1uYW1lPiIgZm9yIGNvbW1hbmRzIGFuZCAiaGVscAorZnVuY3Rpb24gPGZ1bmN0aW9uLW5hbWU+IiBmb3IgY29udmVuaWVuY2UgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncGlvLzAwLUlOREVYIGIvRG9jdW1lbnRhdGlvbi9ncGlvLzAwLUlOREVYCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3OWJlYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2dwaW8vMDAtSU5ERVgKQEAgLTAsMCArMSwxNyBAQAorMDAtSU5ERVgKKwktIFRoaXMgZmlsZQorZ3Bpby50eHQKKwktIEludHJvZHVjdGlvbiB0byBHUElPcyBhbmQgdGhlaXIga2VybmVsIGludGVyZmFjZXMKK2NvbnN1bWVyLnR4dAorCS0gSG93IHRvIG9idGFpbiBhbmQgdXNlIEdQSU9zIGluIGEgZHJpdmVyCitkcml2ZXIudHh0CisJLSBIb3cgdG8gd3JpdGUgYSBHUElPIGRyaXZlcgorZHJpdmVycy1vbi1ncGlvLnR4dDoKKwktIERyaXZlcnMgaW4gb3RoZXIgc3Vic3lzdGVtcyB0aGF0IGNhbiB1c2UgR1BJTyB0byBwcm92aWRlIG1vcmUKKwkgIGNvbXBsZXggZnVuY3Rpb25hbGl0eS4KK2JvYXJkLnR4dAorCS0gSG93IHRvIGFzc2lnbiBHUElPcyB0byBhIGNvbnN1bWVyIGRldmljZSBhbmQgYSBmdW5jdGlvbgorc3lzZnMudHh0CisJLSBJbmZvcm1hdGlvbiBhYm91dCB0aGUgR1BJTyBzeXNmcyBpbnRlcmZhY2UKK2dwaW8tbGVnYWN5LnR4dAorCS0gSGlzdG9yaWNhbCBkb2N1bWVudGF0aW9uIG9mIHRoZSBkZXByZWNhdGVkIEdQSU8gaW50ZWdlciBpbnRlcmZhY2UKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3Bpby9ib2FyZC50eHQgYi9Eb2N1bWVudGF0aW9uL2dwaW8vYm9hcmQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwOTIxNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2dwaW8vYm9hcmQudHh0CkBAIC0wLDAgKzEsMTY4IEBACitHUElPIE1hcHBpbmdzCis9PT09PT09PT09PT09CisKK1RoaXMgZG9jdW1lbnQgZXhwbGFpbnMgaG93IEdQSU9zIGNhbiBiZSBhc3NpZ25lZCB0byBnaXZlbiBkZXZpY2VzIGFuZCBmdW5jdGlvbnMuCitOb3RlIHRoYXQgaXQgb25seSBhcHBsaWVzIHRvIHRoZSBuZXcgZGVzY3JpcHRvci1iYXNlZCBpbnRlcmZhY2UuIEZvciBhCitkZXNjcmlwdGlvbiBvZiB0aGUgZGVwcmVjYXRlZCBpbnRlZ2VyLWJhc2VkIEdQSU8gaW50ZXJmYWNlIHBsZWFzZSByZWZlciB0bworZ3Bpby1sZWdhY3kudHh0IChhY3R1YWxseSwgdGhlcmUgaXMgbm8gcmVhbCBtYXBwaW5nIHBvc3NpYmxlIHdpdGggdGhlIG9sZAoraW50ZXJmYWNlOyB5b3UganVzdCBmZXRjaCBhbiBpbnRlZ2VyIGZyb20gc29tZXdoZXJlIGFuZCByZXF1ZXN0IHRoZQorY29ycmVzcG9uZGluZyBHUElPLgorCitQbGF0Zm9ybXMgdGhhdCBtYWtlIHVzZSBvZiBHUElPcyBtdXN0IHNlbGVjdCBBUkNIX1JFUVVJUkVfR1BJT0xJQiAoaWYgR1BJTyB1c2FnZQoraXMgbWFuZGF0b3J5KSBvciBBUkNIX1dBTlRfT1BUSU9OQUxfR1BJT0xJQiAoaWYgR1BJTyBzdXBwb3J0IGNhbiBiZSBvbWl0dGVkKSBpbgordGhlaXIgS2NvbmZpZy4gVGhlbiwgaG93IEdQSU9zIGFyZSBtYXBwZWQgZGVwZW5kcyBvbiB3aGF0IHRoZSBwbGF0Zm9ybSB1c2VzIHRvCitkZXNjcmliZSBpdHMgaGFyZHdhcmUgbGF5b3V0LiBDdXJyZW50bHksIG1hcHBpbmdzIGNhbiBiZSBkZWZpbmVkIHRocm91Z2ggZGV2aWNlCit0cmVlLCBBQ1BJLCBhbmQgcGxhdGZvcm0gZGF0YS4KKworRGV2aWNlIFRyZWUKKy0tLS0tLS0tLS0tCitHUElPcyBjYW4gZWFzaWx5IGJlIG1hcHBlZCB0byBkZXZpY2VzIGFuZCBmdW5jdGlvbnMgaW4gdGhlIGRldmljZSB0cmVlLiBUaGUKK2V4YWN0IHdheSB0byBkbyBpdCBkZXBlbmRzIG9uIHRoZSBHUElPIGNvbnRyb2xsZXIgcHJvdmlkaW5nIHRoZSBHUElPcywgc2VlIHRoZQorZGV2aWNlIHRyZWUgYmluZGluZ3MgZm9yIHlvdXIgY29udHJvbGxlci4KKworR1BJT3MgbWFwcGluZ3MgYXJlIGRlZmluZWQgaW4gdGhlIGNvbnN1bWVyIGRldmljZSdzIG5vZGUsIGluIGEgcHJvcGVydHkgbmFtZWQKKzxmdW5jdGlvbj4tZ3Bpb3MsIHdoZXJlIDxmdW5jdGlvbj4gaXMgdGhlIGZ1bmN0aW9uIHRoZSBkcml2ZXIgd2lsbCByZXF1ZXN0Cit0aHJvdWdoIGdwaW9kX2dldCgpLiBGb3IgZXhhbXBsZToKKworCWZvb19kZXZpY2UgeworCQljb21wYXRpYmxlID0gImFjbWUsZm9vIjsKKwkJLi4uCisJCWxlZC1ncGlvcyA9IDwmZ3BpbyAxNSBHUElPX0FDVElWRV9ISUdIPiwgLyogcmVkICovCisJCQkgICAgPCZncGlvIDE2IEdQSU9fQUNUSVZFX0hJR0g+LCAvKiBncmVlbiAqLworCQkJICAgIDwmZ3BpbyAxNyBHUElPX0FDVElWRV9ISUdIPjsgLyogYmx1ZSAqLworCisJCXBvd2VyLWdwaW9zID0gPCZncGlvIDEgR1BJT19BQ1RJVkVfTE9XPjsKKwl9OworCitQcm9wZXJ0aWVzIG5hbWVkIDxmdW5jdGlvbj4tZ3BpbyBhcmUgYWxzbyBjb25zaWRlcmVkIHZhbGlkIGFuZCBvbGQgYmluZGluZ3MgdXNlCitpdCBidXQgYXJlIG9ubHkgc3VwcG9ydGVkIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBmb3IKK25ld2VyIGJpbmRpbmdzIHNpbmNlIGl0IGhhcyBiZWVuIGRlcHJlY2F0ZWQuCisKK1RoaXMgcHJvcGVydHkgd2lsbCBtYWtlIEdQSU9zIDE1LCAxNiBhbmQgMTcgYXZhaWxhYmxlIHRvIHRoZSBkcml2ZXIgdW5kZXIgdGhlCisibGVkIiBmdW5jdGlvbiwgYW5kIEdQSU8gMSBhcyB0aGUgInBvd2VyIiBHUElPOgorCisJc3RydWN0IGdwaW9fZGVzYyAqcmVkLCAqZ3JlZW4sICpibHVlLCAqcG93ZXI7CisKKwlyZWQgPSBncGlvZF9nZXRfaW5kZXgoZGV2LCAibGVkIiwgMCwgR1BJT0RfT1VUX0hJR0gpOworCWdyZWVuID0gZ3Bpb2RfZ2V0X2luZGV4KGRldiwgImxlZCIsIDEsIEdQSU9EX09VVF9ISUdIKTsKKwlibHVlID0gZ3Bpb2RfZ2V0X2luZGV4KGRldiwgImxlZCIsIDIsIEdQSU9EX09VVF9ISUdIKTsKKworCXBvd2VyID0gZ3Bpb2RfZ2V0KGRldiwgInBvd2VyIiwgR1BJT0RfT1VUX0hJR0gpOworCitUaGUgbGVkIEdQSU9zIHdpbGwgYmUgYWN0aXZlLWhpZ2gsIHdoaWxlIHRoZSBwb3dlciBHUElPIHdpbGwgYmUgYWN0aXZlLWxvdyAoaS5lLgorZ3Bpb2RfaXNfYWN0aXZlX2xvdyhwb3dlcikgd2lsbCBiZSB0cnVlKS4KKworVGhlIHNlY29uZCBwYXJhbWV0ZXIgb2YgdGhlIGdwaW9kX2dldCgpIGZ1bmN0aW9ucywgdGhlIGNvbl9pZCBzdHJpbmcsIGhhcyB0byBiZQordGhlIDxmdW5jdGlvbj4tcHJlZml4IG9mIHRoZSBHUElPIHN1ZmZpeGVzICgiZ3Bpb3MiIG9yICJncGlvIiwgYXV0b21hdGljYWxseQorbG9va2VkIHVwIGJ5IHRoZSBncGlvZCBmdW5jdGlvbnMgaW50ZXJuYWxseSkgdXNlZCBpbiB0aGUgZGV2aWNlIHRyZWUuIFdpdGggYWJvdmUKKyJsZWQtZ3Bpb3MiIGV4YW1wbGUsIHVzZSB0aGUgcHJlZml4IHdpdGhvdXQgdGhlICItIiBhcyBjb25faWQgcGFyYW1ldGVyOiAibGVkIi4KKworSW50ZXJuYWxseSwgdGhlIEdQSU8gc3Vic3lzdGVtIHByZWZpeGVzIHRoZSBHUElPIHN1ZmZpeCAoImdwaW9zIiBvciAiZ3BpbyIpCit3aXRoIHRoZSBzdHJpbmcgcGFzc2VkIGluIGNvbl9pZCB0byBnZXQgdGhlIHJlc3VsdGluZyBzdHJpbmcKKyhzbnByaW50ZiguLi4gIiVzLSVzIiwgY29uX2lkLCBncGlvX3N1ZmZpeGVzW10pLgorCitBQ1BJCistLS0tCitBQ1BJIGFsc28gc3VwcG9ydHMgZnVuY3Rpb24gbmFtZXMgZm9yIEdQSU9zIGluIGEgc2ltaWxhciBmYXNoaW9uIHRvIERULgorVGhlIGFib3ZlIERUIGV4YW1wbGUgY2FuIGJlIGNvbnZlcnRlZCB0byBhbiBlcXVpdmFsZW50IEFDUEkgZGVzY3JpcHRpb24KK3dpdGggdGhlIGhlbHAgb2YgX0RTRCAoRGV2aWNlIFNwZWNpZmljIERhdGEpLCBpbnRyb2R1Y2VkIGluIEFDUEkgNS4xOgorCisJRGV2aWNlIChGT08pIHsKKwkJTmFtZSAoX0NSUywgUmVzb3VyY2VUZW1wbGF0ZSAoKSB7CisJCQlHcGlvSW8gKEV4Y2x1c2l2ZSwgLi4uLCBJb1Jlc3RyaWN0aW9uT3V0cHV0T25seSwKKwkJCQkiXFxfU0IuR1BJMCIpIHsxNX0gLy8gcmVkCisJCQlHcGlvSW8gKEV4Y2x1c2l2ZSwgLi4uLCBJb1Jlc3RyaWN0aW9uT3V0cHV0T25seSwKKwkJCQkiXFxfU0IuR1BJMCIpIHsxNn0gLy8gZ3JlZW4KKwkJCUdwaW9JbyAoRXhjbHVzaXZlLCAuLi4sIElvUmVzdHJpY3Rpb25PdXRwdXRPbmx5LAorCQkJCSJcXF9TQi5HUEkwIikgezE3fSAvLyBibHVlCisJCQlHcGlvSW8gKEV4Y2x1c2l2ZSwgLi4uLCBJb1Jlc3RyaWN0aW9uT3V0cHV0T25seSwKKwkJCQkiXFxfU0IuR1BJMCIpIHsxfSAvLyBwb3dlcgorCQl9KQorCisJCU5hbWUgKF9EU0QsIFBhY2thZ2UgKCkgeworCQkJVG9VVUlEKCJkYWZmZDgxNC02ZWJhLTRkOGMtOGE5MS1iYzliYmY0YWEzMDEiKSwKKwkJCVBhY2thZ2UgKCkgeworCQkJCVBhY2thZ2UgKCkgeworCQkJCQkibGVkLWdwaW9zIiwKKwkJCQkJUGFja2FnZSAoKSB7CisJCQkJCQleRk9PLCAwLCAwLCAxLAorCQkJCQkJXkZPTywgMSwgMCwgMSwKKwkJCQkJCV5GT08sIDIsIDAsIDEsCisJCQkJCX0KKwkJCQl9LAorCQkJCVBhY2thZ2UgKCkgeworCQkJCQkicG93ZXItZ3Bpb3MiLAorCQkJCQlQYWNrYWdlICgpIHteRk9PLCAzLCAwLCAwfSwKKwkJCQl9LAorCQkJfQorCQl9KQorCX0KKworRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEFDUEkgR1BJTyBiaW5kaW5ncyBzZWUKK0RvY3VtZW50YXRpb24vYWNwaS9ncGlvLXByb3BlcnRpZXMudHh0LgorCitQbGF0Zm9ybSBEYXRhCistLS0tLS0tLS0tLS0tCitGaW5hbGx5LCBHUElPcyBjYW4gYmUgYm91bmQgdG8gZGV2aWNlcyBhbmQgZnVuY3Rpb25zIHVzaW5nIHBsYXRmb3JtIGRhdGEuIEJvYXJkCitmaWxlcyB0aGF0IGRlc2lyZSB0byBkbyBzbyBuZWVkIHRvIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBoZWFkZXI6CisKKwkjaW5jbHVkZSA8bGludXgvZ3Bpby9tYWNoaW5lLmg+CisKK0dQSU9zIGFyZSBtYXBwZWQgYnkgdGhlIG1lYW5zIG9mIHRhYmxlcyBvZiBsb29rdXBzLCBjb250YWluaW5nIGluc3RhbmNlcyBvZiB0aGUKK2dwaW9kX2xvb2t1cCBzdHJ1Y3R1cmUuIFR3byBtYWNyb3MgYXJlIGRlZmluZWQgdG8gaGVscCBkZWNsYXJpbmcgc3VjaCBtYXBwaW5nczoKKworCUdQSU9fTE9PS1VQKGNoaXBfbGFiZWwsIGNoaXBfaHdudW0sIGRldl9pZCwgY29uX2lkLCBmbGFncykKKwlHUElPX0xPT0tVUF9JRFgoY2hpcF9sYWJlbCwgY2hpcF9od251bSwgZGV2X2lkLCBjb25faWQsIGlkeCwgZmxhZ3MpCisKK3doZXJlCisKKyAgLSBjaGlwX2xhYmVsIGlzIHRoZSBsYWJlbCBvZiB0aGUgZ3Bpb2RfY2hpcCBpbnN0YW5jZSBwcm92aWRpbmcgdGhlIEdQSU8KKyAgLSBjaGlwX2h3bnVtIGlzIHRoZSBoYXJkd2FyZSBudW1iZXIgb2YgdGhlIEdQSU8gd2l0aGluIHRoZSBjaGlwCisgIC0gZGV2X2lkIGlzIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBkZXZpY2UgdGhhdCB3aWxsIG1ha2UgdXNlIG9mIHRoaXMgR1BJTy4gSXQKKwljYW4gYmUgTlVMTCwgaW4gd2hpY2ggY2FzZSBpdCB3aWxsIGJlIG1hdGNoZWQgZm9yIGNhbGxzIHRvIGdwaW9kX2dldCgpCisJd2l0aCBhIE5VTEwgZGV2aWNlLgorICAtIGNvbl9pZCBpcyB0aGUgbmFtZSBvZiB0aGUgR1BJTyBmdW5jdGlvbiBmcm9tIHRoZSBkZXZpY2UgcG9pbnQgb2Ygdmlldy4gSXQKKwljYW4gYmUgTlVMTCwgaW4gd2hpY2ggY2FzZSBpdCB3aWxsIG1hdGNoIGFueSBmdW5jdGlvbi4KKyAgLSBpZHggaXMgdGhlIGluZGV4IG9mIHRoZSBHUElPIHdpdGhpbiB0aGUgZnVuY3Rpb24uCisgIC0gZmxhZ3MgaXMgZGVmaW5lZCB0byBzcGVjaWZ5IHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKKwkqIEdQSU9GX0FDVElWRV9MT1cJLSB0byBjb25maWd1cmUgdGhlIEdQSU8gYXMgYWN0aXZlLWxvdworCSogR1BJT0ZfT1BFTl9EUkFJTgktIEdQSU8gcGluIGlzIG9wZW4gZHJhaW4gdHlwZS4KKwkqIEdQSU9GX09QRU5fU09VUkNFCS0gR1BJTyBwaW4gaXMgb3BlbiBzb3VyY2UgdHlwZS4KKworSW4gdGhlIGZ1dHVyZSwgdGhlc2UgZmxhZ3MgbWlnaHQgYmUgZXh0ZW5kZWQgdG8gc3VwcG9ydCBtb3JlIHByb3BlcnRpZXMuCisKK05vdGUgdGhhdCBHUElPX0xPT0tVUCgpIGlzIGp1c3QgYSBzaG9ydGN1dCB0byBHUElPX0xPT0tVUF9JRFgoKSB3aGVyZSBpZHggPSAwLgorCitBIGxvb2t1cCB0YWJsZSBjYW4gdGhlbiBiZSBkZWZpbmVkIGFzIGZvbGxvd3MsIHdpdGggYW4gZW1wdHkgZW50cnkgZGVmaW5pbmcgaXRzCitlbmQ6CisKK3N0cnVjdCBncGlvZF9sb29rdXBfdGFibGUgZ3Bpb3NfdGFibGUgPSB7CisJLmRldl9pZCA9ICJmb28uMCIsCisJLnRhYmxlID0geworCQlHUElPX0xPT0tVUF9JRFgoImdwaW8uMCIsIDE1LCAibGVkIiwgMCwgR1BJT19BQ1RJVkVfSElHSCksCisJCUdQSU9fTE9PS1VQX0lEWCgiZ3Bpby4wIiwgMTYsICJsZWQiLCAxLCBHUElPX0FDVElWRV9ISUdIKSwKKwkJR1BJT19MT09LVVBfSURYKCJncGlvLjAiLCAxNywgImxlZCIsIDIsIEdQSU9fQUNUSVZFX0hJR0gpLAorCQlHUElPX0xPT0tVUCgiZ3Bpby4wIiwgMSwgInBvd2VyIiwgR1BJT19BQ1RJVkVfTE9XKSwKKwkJeyB9LAorCX0sCit9OworCitBbmQgdGhlIHRhYmxlIGNhbiBiZSBhZGRlZCBieSB0aGUgYm9hcmQgY29kZSBhcyBmb2xsb3dzOgorCisJZ3Bpb2RfYWRkX2xvb2t1cF90YWJsZSgmZ3Bpb3NfdGFibGUpOworCitUaGUgZHJpdmVyIGNvbnRyb2xsaW5nICJmb28uMCIgd2lsbCB0aGVuIGJlIGFibGUgdG8gb2J0YWluIGl0cyBHUElPcyBhcyBmb2xsb3dzOgorCisJc3RydWN0IGdwaW9fZGVzYyAqcmVkLCAqZ3JlZW4sICpibHVlLCAqcG93ZXI7CisKKwlyZWQgPSBncGlvZF9nZXRfaW5kZXgoZGV2LCAibGVkIiwgMCwgR1BJT0RfT1VUX0hJR0gpOworCWdyZWVuID0gZ3Bpb2RfZ2V0X2luZGV4KGRldiwgImxlZCIsIDEsIEdQSU9EX09VVF9ISUdIKTsKKwlibHVlID0gZ3Bpb2RfZ2V0X2luZGV4KGRldiwgImxlZCIsIDIsIEdQSU9EX09VVF9ISUdIKTsKKworCXBvd2VyID0gZ3Bpb2RfZ2V0KGRldiwgInBvd2VyIiwgR1BJT0RfT1VUX0hJR0gpOworCitTaW5jZSB0aGUgImxlZCIgR1BJT3MgYXJlIG1hcHBlZCBhcyBhY3RpdmUtaGlnaCwgdGhpcyBleGFtcGxlIHdpbGwgc3dpdGNoIHRoZWlyCitzaWduYWxzIHRvIDEsIGkuZS4gZW5hYmxpbmcgdGhlIExFRHMuIEFuZCBmb3IgdGhlICJwb3dlciIgR1BJTywgd2hpY2ggaXMgbWFwcGVkCithcyBhY3RpdmUtbG93LCBpdHMgYWN0dWFsIHNpZ25hbCB3aWxsIGJlIDAgYWZ0ZXIgdGhpcyBjb2RlLiBDb250cmFyeSB0byB0aGUgbGVnYWN5CitpbnRlZ2VyIEdQSU8gaW50ZXJmYWNlLCB0aGUgYWN0aXZlLWxvdyBwcm9wZXJ0eSBpcyBoYW5kbGVkIGR1cmluZyBtYXBwaW5nIGFuZCBpcwordGh1cyB0cmFuc3BhcmVudCB0byBHUElPIGNvbnN1bWVycy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3Bpby9jb25zdW1lci50eHQgYi9Eb2N1bWVudGF0aW9uL2dwaW8vY29uc3VtZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwMDA1MDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2dwaW8vY29uc3VtZXIudHh0CkBAIC0wLDAgKzEsMzc2IEBACitHUElPIERlc2NyaXB0b3IgQ29uc3VtZXIgSW50ZXJmYWNlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBjb25zdW1lciBpbnRlcmZhY2Ugb2YgdGhlIEdQSU8gZnJhbWV3b3JrLiBOb3RlIHRoYXQKK2l0IGRlc2NyaWJlcyB0aGUgbmV3IGRlc2NyaXB0b3ItYmFzZWQgaW50ZXJmYWNlLiBGb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUKK2RlcHJlY2F0ZWQgaW50ZWdlci1iYXNlZCBHUElPIGludGVyZmFjZSBwbGVhc2UgcmVmZXIgdG8gZ3Bpby1sZWdhY3kudHh0LgorCisKK0d1aWRlbGluZXMgZm9yIEdQSU9zIGNvbnN1bWVycworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0RyaXZlcnMgdGhhdCBjYW4ndCB3b3JrIHdpdGhvdXQgc3RhbmRhcmQgR1BJTyBjYWxscyBzaG91bGQgaGF2ZSBLY29uZmlnIGVudHJpZXMKK3RoYXQgZGVwZW5kIG9uIEdQSU9MSUIuIFRoZSBmdW5jdGlvbnMgdGhhdCBhbGxvdyBhIGRyaXZlciB0byBvYnRhaW4gYW5kIHVzZQorR1BJT3MgYXJlIGF2YWlsYWJsZSBieSBpbmNsdWRpbmcgdGhlIGZvbGxvd2luZyBmaWxlOgorCisJI2luY2x1ZGUgPGxpbnV4L2dwaW8vY29uc3VtZXIuaD4KKworQWxsIHRoZSBmdW5jdGlvbnMgdGhhdCB3b3JrIHdpdGggdGhlIGRlc2NyaXB0b3ItYmFzZWQgR1BJTyBpbnRlcmZhY2UgYXJlCitwcmVmaXhlZCB3aXRoIGdwaW9kXy4gVGhlIGdwaW9fIHByZWZpeCBpcyB1c2VkIGZvciB0aGUgbGVnYWN5IGludGVyZmFjZS4gTm8KK290aGVyIGZ1bmN0aW9uIGluIHRoZSBrZXJuZWwgc2hvdWxkIHVzZSB0aGVzZSBwcmVmaXhlcy4KKworCitPYnRhaW5pbmcgYW5kIERpc3Bvc2luZyBHUElPcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworV2l0aCB0aGUgZGVzY3JpcHRvci1iYXNlZCBpbnRlcmZhY2UsIEdQSU9zIGFyZSBpZGVudGlmaWVkIHdpdGggYW4gb3BhcXVlLAorbm9uLWZvcmdlYWJsZSBoYW5kbGVyIHRoYXQgbXVzdCBiZSBvYnRhaW5lZCB0aHJvdWdoIGEgY2FsbCB0byBvbmUgb2YgdGhlCitncGlvZF9nZXQoKSBmdW5jdGlvbnMuIExpa2UgbWFueSBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcywgZ3Bpb2RfZ2V0KCkgdGFrZXMgdGhlCitkZXZpY2UgdGhhdCB3aWxsIHVzZSB0aGUgR1BJTyBhbmQgdGhlIGZ1bmN0aW9uIHRoZSByZXF1ZXN0ZWQgR1BJTyBpcyBzdXBwb3NlZCB0bworZnVsZmlsbDoKKworCXN0cnVjdCBncGlvX2Rlc2MgKmdwaW9kX2dldChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKmNvbl9pZCwKKwkJCQkgICAgZW51bSBncGlvZF9mbGFncyBmbGFncykKKworSWYgYSBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBieSB1c2luZyBzZXZlcmFsIEdQSU9zIHRvZ2V0aGVyIChlLmcuIGEgc2ltcGxlIExFRAorZGV2aWNlIHRoYXQgZGlzcGxheXMgZGlnaXRzKSwgYW4gYWRkaXRpb25hbCBpbmRleCBhcmd1bWVudCBjYW4gYmUgc3BlY2lmaWVkOgorCisJc3RydWN0IGdwaW9fZGVzYyAqZ3Bpb2RfZ2V0X2luZGV4KHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCQkJICBjb25zdCBjaGFyICpjb25faWQsIHVuc2lnbmVkIGludCBpZHgsCisJCQkJCSAgZW51bSBncGlvZF9mbGFncyBmbGFncykKKworRm9yIGEgbW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgY29uX2lkIHBhcmFtZXRlciBpbiB0aGUgRGV2aWNlVHJlZSBjYXNlCitzZWUgRG9jdW1lbnRhdGlvbi9ncGlvL2JvYXJkLnR4dAorCitUaGUgZmxhZ3MgcGFyYW1ldGVyIGlzIHVzZWQgdG8gb3B0aW9uYWxseSBzcGVjaWZ5IGEgZGlyZWN0aW9uIGFuZCBpbml0aWFsIHZhbHVlCitmb3IgdGhlIEdQSU8uIFZhbHVlcyBjYW4gYmU6CisKKyogR1BJT0RfQVNJUyBvciAwIHRvIG5vdCBpbml0aWFsaXplIHRoZSBHUElPIGF0IGFsbC4gVGhlIGRpcmVjdGlvbiBtdXN0IGJlIHNldAorICBsYXRlciB3aXRoIG9uZSBvZiB0aGUgZGVkaWNhdGVkIGZ1bmN0aW9ucy4KKyogR1BJT0RfSU4gdG8gaW5pdGlhbGl6ZSB0aGUgR1BJTyBhcyBpbnB1dC4KKyogR1BJT0RfT1VUX0xPVyB0byBpbml0aWFsaXplIHRoZSBHUElPIGFzIG91dHB1dCB3aXRoIGEgdmFsdWUgb2YgMC4KKyogR1BJT0RfT1VUX0hJR0ggdG8gaW5pdGlhbGl6ZSB0aGUgR1BJTyBhcyBvdXRwdXQgd2l0aCBhIHZhbHVlIG9mIDEuCisKK0JvdGggZnVuY3Rpb25zIHJldHVybiBlaXRoZXIgYSB2YWxpZCBHUElPIGRlc2NyaXB0b3IsIG9yIGFuIGVycm9yIGNvZGUgY2hlY2thYmxlCit3aXRoIElTX0VSUigpICh0aGV5IHdpbGwgbmV2ZXIgcmV0dXJuIGEgTlVMTCBwb2ludGVyKS4gLUVOT0VOVCB3aWxsIGJlIHJldHVybmVkCitpZiBhbmQgb25seSBpZiBubyBHUElPIGhhcyBiZWVuIGFzc2lnbmVkIHRvIHRoZSBkZXZpY2UvZnVuY3Rpb24vaW5kZXggdHJpcGxldCwKK290aGVyIGVycm9yIGNvZGVzIGFyZSB1c2VkIGZvciBjYXNlcyB3aGVyZSBhIEdQSU8gaGFzIGJlZW4gYXNzaWduZWQgYnV0IGFuIGVycm9yCitvY2N1cnJlZCB3aGlsZSB0cnlpbmcgdG8gYWNxdWlyZSBpdC4gVGhpcyBpcyB1c2VmdWwgdG8gZGlzY3JpbWluYXRlIGJldHdlZW4gbWVyZQorZXJyb3JzIGFuZCBhbiBhYnNlbmNlIG9mIEdQSU8gZm9yIG9wdGlvbmFsIEdQSU8gcGFyYW1ldGVycy4gRm9yIHRoZSBjb21tb24KK3BhdHRlcm4gd2hlcmUgYSBHUElPIGlzIG9wdGlvbmFsLCB0aGUgZ3Bpb2RfZ2V0X29wdGlvbmFsKCkgYW5kCitncGlvZF9nZXRfaW5kZXhfb3B0aW9uYWwoKSBmdW5jdGlvbnMgY2FuIGJlIHVzZWQuIFRoZXNlIGZ1bmN0aW9ucyByZXR1cm4gTlVMTAoraW5zdGVhZCBvZiAtRU5PRU5UIGlmIG5vIEdQSU8gaGFzIGJlZW4gYXNzaWduZWQgdG8gdGhlIHJlcXVlc3RlZCBmdW5jdGlvbjoKKworCXN0cnVjdCBncGlvX2Rlc2MgKmdwaW9kX2dldF9vcHRpb25hbChzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJCSAgICAgY29uc3QgY2hhciAqY29uX2lkLAorCQkJCQkgICAgIGVudW0gZ3Bpb2RfZmxhZ3MgZmxhZ3MpCisKKwlzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvZF9nZXRfaW5kZXhfb3B0aW9uYWwoc3RydWN0IGRldmljZSAqZGV2LAorCQkJCQkJICAgY29uc3QgY2hhciAqY29uX2lkLAorCQkJCQkJICAgdW5zaWduZWQgaW50IGluZGV4LAorCQkJCQkJICAgZW51bSBncGlvZF9mbGFncyBmbGFncykKKworRm9yIGEgZnVuY3Rpb24gdXNpbmcgbXVsdGlwbGUgR1BJT3MgYWxsIG9mIHRob3NlIGNhbiBiZSBvYnRhaW5lZCB3aXRoIG9uZSBjYWxsOgorCisJc3RydWN0IGdwaW9fZGVzY3MgKmdwaW9kX2dldF9hcnJheShzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJCSAgIGNvbnN0IGNoYXIgKmNvbl9pZCwKKwkJCQkJICAgZW51bSBncGlvZF9mbGFncyBmbGFncykKKworVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgc3RydWN0IGdwaW9fZGVzY3Mgd2hpY2ggY29udGFpbnMgYW4gYXJyYXkgb2YKK2Rlc2NyaXB0b3JzOgorCisJc3RydWN0IGdwaW9fZGVzY3MgeworCQl1bnNpZ25lZCBpbnQgbmRlc2NzOworCQlzdHJ1Y3QgZ3Bpb19kZXNjICpkZXNjW107CisJfQorCitUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIHJldHVybnMgTlVMTCBpbnN0ZWFkIG9mIC1FTk9FTlQgaWYgbm8gR1BJT3MgaGF2ZSBiZWVuCithc3NpZ25lZCB0byB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uOgorCisJc3RydWN0IGdwaW9fZGVzY3MgKmdwaW9kX2dldF9hcnJheV9vcHRpb25hbChzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJCQkgICAgY29uc3QgY2hhciAqY29uX2lkLAorCQkJCQkJICAgIGVudW0gZ3Bpb2RfZmxhZ3MgZmxhZ3MpCisKK0RldmljZS1tYW5hZ2VkIHZhcmlhbnRzIG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWxzbyBkZWZpbmVkOgorCisJc3RydWN0IGdwaW9fZGVzYyAqZGV2bV9ncGlvZF9nZXQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpjb25faWQsCisJCQkJCSBlbnVtIGdwaW9kX2ZsYWdzIGZsYWdzKQorCisJc3RydWN0IGdwaW9fZGVzYyAqZGV2bV9ncGlvZF9nZXRfaW5kZXgoc3RydWN0IGRldmljZSAqZGV2LAorCQkJCQkgICAgICAgY29uc3QgY2hhciAqY29uX2lkLAorCQkJCQkgICAgICAgdW5zaWduZWQgaW50IGlkeCwKKwkJCQkJICAgICAgIGVudW0gZ3Bpb2RfZmxhZ3MgZmxhZ3MpCisKKwlzdHJ1Y3QgZ3Bpb19kZXNjICpkZXZtX2dwaW9kX2dldF9vcHRpb25hbChzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJCQkgIGNvbnN0IGNoYXIgKmNvbl9pZCwKKwkJCQkJCSAgZW51bSBncGlvZF9mbGFncyBmbGFncykKKworCXN0cnVjdCBncGlvX2Rlc2MgKmRldm1fZ3Bpb2RfZ2V0X2luZGV4X29wdGlvbmFsKHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCQkJCQljb25zdCBjaGFyICpjb25faWQsCisJCQkJCQkJdW5zaWduZWQgaW50IGluZGV4LAorCQkJCQkJCWVudW0gZ3Bpb2RfZmxhZ3MgZmxhZ3MpCisKKwlzdHJ1Y3QgZ3Bpb19kZXNjcyAqZGV2bV9ncGlvZF9nZXRfYXJyYXkoc3RydWN0IGRldmljZSAqZGV2LAorCQkJCQkJY29uc3QgY2hhciAqY29uX2lkLAorCQkJCQkJZW51bSBncGlvZF9mbGFncyBmbGFncykKKworCXN0cnVjdCBncGlvX2Rlc2NzICpkZXZtX2dwaW9kX2dldF9hcnJheV9vcHRpb25hbChzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJCQkJIGNvbnN0IGNoYXIgKmNvbl9pZCwKKwkJCQkJCQkgZW51bSBncGlvZF9mbGFncyBmbGFncykKKworQSBHUElPIGRlc2NyaXB0b3IgY2FuIGJlIGRpc3Bvc2VkIG9mIHVzaW5nIHRoZSBncGlvZF9wdXQoKSBmdW5jdGlvbjoKKworCXZvaWQgZ3Bpb2RfcHV0KHN0cnVjdCBncGlvX2Rlc2MgKmRlc2MpCisKK0ZvciBhbiBhcnJheSBvZiBHUElPcyB0aGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkOgorCisJdm9pZCBncGlvZF9wdXRfYXJyYXkoc3RydWN0IGdwaW9fZGVzY3MgKmRlc2NzKQorCitJdCBpcyBzdHJpY3RseSBmb3JiaWRkZW4gdG8gdXNlIGEgZGVzY3JpcHRvciBhZnRlciBjYWxsaW5nIHRoZXNlIGZ1bmN0aW9ucy4KK0l0IGlzIGFsc28gbm90IGFsbG93ZWQgdG8gaW5kaXZpZHVhbGx5IHJlbGVhc2UgZGVzY3JpcHRvcnMgKHVzaW5nIGdwaW9kX3B1dCgpKQorZnJvbSBhbiBhcnJheSBhY3F1aXJlZCB3aXRoIGdwaW9kX2dldF9hcnJheSgpLgorCitUaGUgZGV2aWNlLW1hbmFnZWQgdmFyaWFudHMgYXJlLCB1bnN1cnByaXNpbmdseToKKworCXZvaWQgZGV2bV9ncGlvZF9wdXQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZ3Bpb19kZXNjICpkZXNjKQorCisJdm9pZCBkZXZtX2dwaW9kX3B1dF9hcnJheShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBncGlvX2Rlc2NzICpkZXNjcykKKworCitVc2luZyBHUElPcworPT09PT09PT09PT0KKworU2V0dGluZyBEaXJlY3Rpb24KKy0tLS0tLS0tLS0tLS0tLS0tCitUaGUgZmlyc3QgdGhpbmcgYSBkcml2ZXIgbXVzdCBkbyB3aXRoIGEgR1BJTyBpcyBzZXR0aW5nIGl0cyBkaXJlY3Rpb24uIElmIG5vCitkaXJlY3Rpb24tc2V0dGluZyBmbGFncyBoYXZlIGJlZW4gZ2l2ZW4gdG8gZ3Bpb2RfZ2V0KigpLCB0aGlzIGlzIGRvbmUgYnkKK2ludm9raW5nIG9uZSBvZiB0aGUgZ3Bpb2RfZGlyZWN0aW9uXyooKSBmdW5jdGlvbnM6CisKKwlpbnQgZ3Bpb2RfZGlyZWN0aW9uX2lucHV0KHN0cnVjdCBncGlvX2Rlc2MgKmRlc2MpCisJaW50IGdwaW9kX2RpcmVjdGlvbl9vdXRwdXQoc3RydWN0IGdwaW9fZGVzYyAqZGVzYywgaW50IHZhbHVlKQorCitUaGUgcmV0dXJuIHZhbHVlIGlzIHplcm8gZm9yIHN1Y2Nlc3MsIGVsc2UgYSBuZWdhdGl2ZSBlcnJuby4gSXQgc2hvdWxkIGJlCitjaGVja2VkLCBzaW5jZSB0aGUgZ2V0L3NldCBjYWxscyBkb24ndCByZXR1cm4gZXJyb3JzIGFuZCBzaW5jZSBtaXNjb25maWd1cmF0aW9uCitpcyBwb3NzaWJsZS4gWW91IHNob3VsZCBub3JtYWxseSBpc3N1ZSB0aGVzZSBjYWxscyBmcm9tIGEgdGFzayBjb250ZXh0LiBIb3dldmVyLAorZm9yIHNwaW5sb2NrLXNhZmUgR1BJT3MgaXQgaXMgT0sgdG8gdXNlIHRoZW0gYmVmb3JlIHRhc2tpbmcgaXMgZW5hYmxlZCwgYXMgcGFydAorb2YgZWFybHkgYm9hcmQgc2V0dXAuCisKK0ZvciBvdXRwdXQgR1BJT3MsIHRoZSB2YWx1ZSBwcm92aWRlZCBiZWNvbWVzIHRoZSBpbml0aWFsIG91dHB1dCB2YWx1ZS4gVGhpcworaGVscHMgYXZvaWQgc2lnbmFsIGdsaXRjaGluZyBkdXJpbmcgc3lzdGVtIHN0YXJ0dXAuCisKK0EgZHJpdmVyIGNhbiBhbHNvIHF1ZXJ5IHRoZSBjdXJyZW50IGRpcmVjdGlvbiBvZiBhIEdQSU86CisKKwlpbnQgZ3Bpb2RfZ2V0X2RpcmVjdGlvbihjb25zdCBzdHJ1Y3QgZ3Bpb19kZXNjICpkZXNjKQorCitUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGVpdGhlciBHUElPRl9ESVJfSU4gb3IgR1BJT0ZfRElSX09VVC4KKworQmUgYXdhcmUgdGhhdCB0aGVyZSBpcyBubyBkZWZhdWx0IGRpcmVjdGlvbiBmb3IgR1BJT3MuIFRoZXJlZm9yZSwgKip1c2luZyBhIEdQSU8KK3dpdGhvdXQgc2V0dGluZyBpdHMgZGlyZWN0aW9uIGZpcnN0IGlzIGlsbGVnYWwgYW5kIHdpbGwgcmVzdWx0IGluIHVuZGVmaW5lZAorYmVoYXZpb3IhKioKKworCitTcGlubG9jay1TYWZlIEdQSU8gQWNjZXNzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitNb3N0IEdQSU8gY29udHJvbGxlcnMgY2FuIGJlIGFjY2Vzc2VkIHdpdGggbWVtb3J5IHJlYWQvd3JpdGUgaW5zdHJ1Y3Rpb25zLiBUaG9zZQorZG9uJ3QgbmVlZCB0byBzbGVlcCwgYW5kIGNhbiBzYWZlbHkgYmUgZG9uZSBmcm9tIGluc2lkZSBoYXJkIChub24tdGhyZWFkZWQpIElSUQoraGFuZGxlcnMgYW5kIHNpbWlsYXIgY29udGV4dHMuCisKK1VzZSB0aGUgZm9sbG93aW5nIGNhbGxzIHRvIGFjY2VzcyBHUElPcyBmcm9tIGFuIGF0b21pYyBjb250ZXh0OgorCisJaW50IGdwaW9kX2dldF92YWx1ZShjb25zdCBzdHJ1Y3QgZ3Bpb19kZXNjICpkZXNjKTsKKwl2b2lkIGdwaW9kX3NldF92YWx1ZShzdHJ1Y3QgZ3Bpb19kZXNjICpkZXNjLCBpbnQgdmFsdWUpOworCitUaGUgdmFsdWVzIGFyZSBib29sZWFuLCB6ZXJvIGZvciBsb3csIG5vbnplcm8gZm9yIGhpZ2guIFdoZW4gcmVhZGluZyB0aGUgdmFsdWUKK29mIGFuIG91dHB1dCBwaW4sIHRoZSB2YWx1ZSByZXR1cm5lZCBzaG91bGQgYmUgd2hhdCdzIHNlZW4gb24gdGhlIHBpbi4gVGhhdAord29uJ3QgYWx3YXlzIG1hdGNoIHRoZSBzcGVjaWZpZWQgb3V0cHV0IHZhbHVlLCBiZWNhdXNlIG9mIGlzc3VlcyBpbmNsdWRpbmcKK29wZW4tZHJhaW4gc2lnbmFsaW5nIGFuZCBvdXRwdXQgbGF0ZW5jaWVzLgorCitUaGUgZ2V0L3NldCBjYWxscyBkbyBub3QgcmV0dXJuIGVycm9ycyBiZWNhdXNlICJpbnZhbGlkIEdQSU8iIHNob3VsZCBoYXZlIGJlZW4KK3JlcG9ydGVkIGVhcmxpZXIgZnJvbSBncGlvZF9kaXJlY3Rpb25fKigpLiBIb3dldmVyLCBub3RlIHRoYXQgbm90IGFsbCBwbGF0Zm9ybXMKK2NhbiByZWFkIHRoZSB2YWx1ZSBvZiBvdXRwdXQgcGluczsgdGhvc2UgdGhhdCBjYW4ndCBzaG91bGQgYWx3YXlzIHJldHVybiB6ZXJvLgorQWxzbywgdXNpbmcgdGhlc2UgY2FsbHMgZm9yIEdQSU9zIHRoYXQgY2FuJ3Qgc2FmZWx5IGJlIGFjY2Vzc2VkIHdpdGhvdXQgc2xlZXBpbmcKKyhzZWUgYmVsb3cpIGlzIGFuIGVycm9yLgorCisKK0dQSU8gQWNjZXNzIFRoYXQgTWF5IFNsZWVwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU29tZSBHUElPIGNvbnRyb2xsZXJzIG11c3QgYmUgYWNjZXNzZWQgdXNpbmcgbWVzc2FnZSBiYXNlZCBidXNlcyBsaWtlIEkyQyBvcgorU1BJLiBDb21tYW5kcyB0byByZWFkIG9yIHdyaXRlIHRob3NlIEdQSU8gdmFsdWVzIHJlcXVpcmUgd2FpdGluZyB0byBnZXQgdG8gdGhlCitoZWFkIG9mIGEgcXVldWUgdG8gdHJhbnNtaXQgYSBjb21tYW5kIGFuZCBnZXQgaXRzIHJlc3BvbnNlLiBUaGlzIHJlcXVpcmVzCitzbGVlcGluZywgd2hpY2ggY2FuJ3QgYmUgZG9uZSBmcm9tIGluc2lkZSBJUlEgaGFuZGxlcnMuCisKK1BsYXRmb3JtcyB0aGF0IHN1cHBvcnQgdGhpcyB0eXBlIG9mIEdQSU8gZGlzdGluZ3Vpc2ggdGhlbSBmcm9tIG90aGVyIEdQSU9zIGJ5CityZXR1cm5pbmcgbm9uemVybyBmcm9tIHRoaXMgY2FsbDoKKworCWludCBncGlvZF9jYW5zbGVlcChjb25zdCBzdHJ1Y3QgZ3Bpb19kZXNjICpkZXNjKQorCitUbyBhY2Nlc3Mgc3VjaCBHUElPcywgYSBkaWZmZXJlbnQgc2V0IG9mIGFjY2Vzc29ycyBpcyBkZWZpbmVkOgorCisJaW50IGdwaW9kX2dldF92YWx1ZV9jYW5zbGVlcChjb25zdCBzdHJ1Y3QgZ3Bpb19kZXNjICpkZXNjKQorCXZvaWQgZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHN0cnVjdCBncGlvX2Rlc2MgKmRlc2MsIGludCB2YWx1ZSkKKworQWNjZXNzaW5nIHN1Y2ggR1BJT3MgcmVxdWlyZXMgYSBjb250ZXh0IHdoaWNoIG1heSBzbGVlcCwgZm9yIGV4YW1wbGUgYSB0aHJlYWRlZAorSVJRIGhhbmRsZXIsIGFuZCB0aG9zZSBhY2Nlc3NvcnMgbXVzdCBiZSB1c2VkIGluc3RlYWQgb2Ygc3BpbmxvY2stc2FmZQorYWNjZXNzb3JzIHdpdGhvdXQgdGhlIGNhbnNsZWVwKCkgbmFtZSBzdWZmaXguCisKK090aGVyIHRoYW4gdGhlIGZhY3QgdGhhdCB0aGVzZSBhY2Nlc3NvcnMgbWlnaHQgc2xlZXAsIGFuZCB3aWxsIHdvcmsgb24gR1BJT3MKK3RoYXQgY2FuJ3QgYmUgYWNjZXNzZWQgZnJvbSBoYXJkSVJRIGhhbmRsZXJzLCB0aGVzZSBjYWxscyBhY3QgdGhlIHNhbWUgYXMgdGhlCitzcGlubG9jay1zYWZlIGNhbGxzLgorCisKK0FjdGl2ZS1sb3cgU3RhdGUgYW5kIFJhdyBHUElPIFZhbHVlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEZXZpY2UgZHJpdmVycyBsaWtlIHRvIG1hbmFnZSB0aGUgbG9naWNhbCBzdGF0ZSBvZiBhIEdQSU8sIGkuZS4gdGhlIHZhbHVlIHRoZWlyCitkZXZpY2Ugd2lsbCBhY3R1YWxseSByZWNlaXZlLCBubyBtYXR0ZXIgd2hhdCBsaWVzIGJldHdlZW4gaXQgYW5kIHRoZSBHUElPIGxpbmUuCitJbiBzb21lIGNhc2VzLCBpdCBtaWdodCBtYWtlIHNlbnNlIHRvIGNvbnRyb2wgdGhlIGFjdHVhbCBHUElPIGxpbmUgdmFsdWUuIFRoZQorZm9sbG93aW5nIHNldCBvZiBjYWxscyBpZ25vcmUgdGhlIGFjdGl2ZS1sb3cgcHJvcGVydHkgb2YgYSBHUElPIGFuZCB3b3JrIG9uIHRoZQorcmF3IGxpbmUgdmFsdWU6CisKKwlpbnQgZ3Bpb2RfZ2V0X3Jhd192YWx1ZShjb25zdCBzdHJ1Y3QgZ3Bpb19kZXNjICpkZXNjKQorCXZvaWQgZ3Bpb2Rfc2V0X3Jhd192YWx1ZShzdHJ1Y3QgZ3Bpb19kZXNjICpkZXNjLCBpbnQgdmFsdWUpCisJaW50IGdwaW9kX2dldF9yYXdfdmFsdWVfY2Fuc2xlZXAoY29uc3Qgc3RydWN0IGdwaW9fZGVzYyAqZGVzYykKKwl2b2lkIGdwaW9kX3NldF9yYXdfdmFsdWVfY2Fuc2xlZXAoc3RydWN0IGdwaW9fZGVzYyAqZGVzYywgaW50IHZhbHVlKQorCWludCBncGlvZF9kaXJlY3Rpb25fb3V0cHV0X3JhdyhzdHJ1Y3QgZ3Bpb19kZXNjICpkZXNjLCBpbnQgdmFsdWUpCisKK1RoZSBhY3RpdmUtbG93IHN0YXRlIG9mIGEgR1BJTyBjYW4gYWxzbyBiZSBxdWVyaWVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgY2FsbDoKKworCWludCBncGlvZF9pc19hY3RpdmVfbG93KGNvbnN0IHN0cnVjdCBncGlvX2Rlc2MgKmRlc2MpCisKK05vdGUgdGhhdCB0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIGdyZWF0IG1vZGVyYXRpb24gOyBhIGRyaXZlcgorc2hvdWxkIG5vdCBoYXZlIHRvIGNhcmUgYWJvdXQgdGhlIHBoeXNpY2FsIGxpbmUgbGV2ZWwuCisKKworVGhlIGFjdGl2ZS1sb3cgcHJvcGVydHkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FzIGEgZHJpdmVyIHNob3VsZCBub3QgaGF2ZSB0byBjYXJlIGFib3V0IHRoZSBwaHlzaWNhbCBsaW5lIGxldmVsLCBhbGwgb2YgdGhlCitncGlvZF9zZXRfdmFsdWVfeHh4KCkgb3IgZ3Bpb2Rfc2V0X2FycmF5X3ZhbHVlX3h4eCgpIGZ1bmN0aW9ucyBvcGVyYXRlIHdpdGgKK3RoZSAqbG9naWNhbCogdmFsdWUuIFdpdGggdGhpcyB0aGV5IHRha2UgdGhlIGFjdGl2ZS1sb3cgcHJvcGVydHkgaW50byBhY2NvdW50LgorVGhpcyBtZWFucyB0aGF0IHRoZXkgY2hlY2sgd2hldGhlciB0aGUgR1BJTyBpcyBjb25maWd1cmVkIHRvIGJlIGFjdGl2ZS1sb3csCithbmQgaWYgc28sIHRoZXkgbWFuaXB1bGF0ZSB0aGUgcGFzc2VkIHZhbHVlIGJlZm9yZSB0aGUgcGh5c2ljYWwgbGluZSBsZXZlbCBpcworZHJpdmVuLgorCitXaXRoIHRoaXMsIGFsbCB0aGUgZ3Bpb2Rfc2V0XyhhcnJheSlfdmFsdWVfeHh4KCkgZnVuY3Rpb25zIGludGVycHJldCB0aGUKK3BhcmFtZXRlciAidmFsdWUiIGFzICJhY3RpdmUiICgiMSIpIG9yICJpbmFjdGl2ZSIgKCIwIikuIFRoZSBwaHlzaWNhbCBsaW5lCitsZXZlbCB3aWxsIGJlIGRyaXZlbiBhY2NvcmRpbmdseS4KKworQXMgYW4gZXhhbXBsZSwgaWYgdGhlIGFjdGl2ZS1sb3cgcHJvcGVydHkgZm9yIGEgZGVkaWNhdGVkIEdQSU8gaXMgc2V0LCBhbmQgdGhlCitncGlvZF9zZXRfKGFycmF5KV92YWx1ZV94eHgoKSBwYXNzZXMgImFjdGl2ZSIgKCIxIiksIHRoZSBwaHlzaWNhbCBsaW5lIGxldmVsCit3aWxsIGJlIGRyaXZlbiBsb3cuCisKK1RvIHN1bW1hcml6ZToKKworRnVuY3Rpb24gKGV4YW1wbGUpICAgICAgICAgICAgICAgYWN0aXZlLWxvdyBwcm9wb3J0eSAgcGh5c2ljYWwgbGluZQorZ3Bpb2Rfc2V0X3Jhd192YWx1ZShkZXNjLCAwKTsgICAgICAgIGRvbid0IGNhcmUgICAgICAgICAgIGxvdworZ3Bpb2Rfc2V0X3Jhd192YWx1ZShkZXNjLCAxKTsgICAgICAgIGRvbid0IGNhcmUgICAgICAgICAgIGhpZ2gKK2dwaW9kX3NldF92YWx1ZShkZXNjLCAwKTsgICAgICAgZGVmYXVsdCAoYWN0aXZlLWhpZ2gpICAgICBsb3cKK2dwaW9kX3NldF92YWx1ZShkZXNjLCAxKTsgICAgICAgZGVmYXVsdCAoYWN0aXZlLWhpZ2gpICAgICBoaWdoCitncGlvZF9zZXRfdmFsdWUoZGVzYywgMCk7ICAgICAgICAgICAgIGFjdGl2ZS1sb3cgICAgICAgICAgaGlnaAorZ3Bpb2Rfc2V0X3ZhbHVlKGRlc2MsIDEpOyAgICAgICAgICAgICBhY3RpdmUtbG93ICAgICAgICAgIGxvdworCitQbGVhc2Ugbm90ZSBhZ2FpbiB0aGF0IHRoZSBzZXRfcmF3L2dldF9yYXcgZnVuY3Rpb25zIHNob3VsZCBiZSBhdm9pZGVkIGFzIG11Y2gKK2FzIHBvc3NpYmxlLCBlc3BlY2lhbGx5IGJ5IGRyaXZlcnMgd2hpY2ggc2hvdWxkIG5vdCBjYXJlIGFib3V0IHRoZSBhY3R1YWwKK3BoeXNpY2FsIGxpbmUgbGV2ZWwgYW5kIHdvcnJ5IGFib3V0IHRoZSBsb2dpY2FsIHZhbHVlIGluc3RlYWQuCisKKworU2V0IG11bHRpcGxlIEdQSU8gb3V0cHV0cyB3aXRoIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBzZXQgdGhlIG91dHB1dCB2YWx1ZXMgb2YgYW4gYXJyYXkgb2YgR1BJT3M6CisKKwl2b2lkIGdwaW9kX3NldF9hcnJheV92YWx1ZSh1bnNpZ25lZCBpbnQgYXJyYXlfc2l6ZSwKKwkJCQkgICBzdHJ1Y3QgZ3Bpb19kZXNjICoqZGVzY19hcnJheSwKKwkJCQkgICBpbnQgKnZhbHVlX2FycmF5KQorCXZvaWQgZ3Bpb2Rfc2V0X3Jhd19hcnJheV92YWx1ZSh1bnNpZ25lZCBpbnQgYXJyYXlfc2l6ZSwKKwkJCQkgICAgICAgc3RydWN0IGdwaW9fZGVzYyAqKmRlc2NfYXJyYXksCisJCQkJICAgICAgIGludCAqdmFsdWVfYXJyYXkpCisJdm9pZCBncGlvZF9zZXRfYXJyYXlfdmFsdWVfY2Fuc2xlZXAodW5zaWduZWQgaW50IGFycmF5X3NpemUsCisJCQkJCSAgICBzdHJ1Y3QgZ3Bpb19kZXNjICoqZGVzY19hcnJheSwKKwkJCQkJICAgIGludCAqdmFsdWVfYXJyYXkpCisJdm9pZCBncGlvZF9zZXRfcmF3X2FycmF5X3ZhbHVlX2NhbnNsZWVwKHVuc2lnbmVkIGludCBhcnJheV9zaXplLAorCQkJCQkJc3RydWN0IGdwaW9fZGVzYyAqKmRlc2NfYXJyYXksCisJCQkJCQlpbnQgKnZhbHVlX2FycmF5KQorCitUaGUgYXJyYXkgY2FuIGJlIGFuIGFyYml0cmFyeSBzZXQgb2YgR1BJT3MuIFRoZSBmdW5jdGlvbnMgd2lsbCB0cnkgdG8gc2V0CitHUElPcyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgYmFuayBvciBjaGlwIHNpbXVsdGFuZW91c2x5IGlmIHN1cHBvcnRlZCBieSB0aGUKK2NvcnJlc3BvbmRpbmcgY2hpcCBkcml2ZXIuIEluIHRoYXQgY2FzZSBhIHNpZ25pZmljYW50bHkgaW1wcm92ZWQgcGVyZm9ybWFuY2UKK2NhbiBiZSBleHBlY3RlZC4gSWYgc2ltdWx0YW5lb3VzIHNldHRpbmcgaXMgbm90IHBvc3NpYmxlIHRoZSBHUElPcyB3aWxsIGJlIHNldAorc2VxdWVudGlhbGx5LgorCitUaGUgZ3Bpb2Rfc2V0X2FycmF5KCkgZnVuY3Rpb25zIHRha2UgdGhyZWUgYXJndW1lbnRzOgorCSogYXJyYXlfc2l6ZQktIHRoZSBudW1iZXIgb2YgYXJyYXkgZWxlbWVudHMKKwkqIGRlc2NfYXJyYXkJLSBhbiBhcnJheSBvZiBHUElPIGRlc2NyaXB0b3JzCisJKiB2YWx1ZV9hcnJheQktIGFuIGFycmF5IG9mIHZhbHVlcyB0byBhc3NpZ24gdG8gdGhlIEdQSU9zCisKK1RoZSBkZXNjcmlwdG9yIGFycmF5IGNhbiBiZSBvYnRhaW5lZCB1c2luZyB0aGUgZ3Bpb2RfZ2V0X2FycmF5KCkgZnVuY3Rpb24KK29yIG9uZSBvZiBpdHMgdmFyaWFudHMuIElmIHRoZSBncm91cCBvZiBkZXNjcmlwdG9ycyByZXR1cm5lZCBieSB0aGF0IGZ1bmN0aW9uCittYXRjaGVzIHRoZSBkZXNpcmVkIGdyb3VwIG9mIEdQSU9zLCB0aG9zZSBHUElPcyBjYW4gYmUgc2V0IGJ5IHNpbXBseSB1c2luZwordGhlIHN0cnVjdCBncGlvX2Rlc2NzIHJldHVybmVkIGJ5IGdwaW9kX2dldF9hcnJheSgpOgorCisJc3RydWN0IGdwaW9fZGVzY3MgKm15X2dwaW9fZGVzY3MgPSBncGlvZF9nZXRfYXJyYXkoLi4uKTsKKwlncGlvZF9zZXRfYXJyYXlfdmFsdWUobXlfZ3Bpb19kZXNjcy0+bmRlc2NzLCBteV9ncGlvX2Rlc2NzLT5kZXNjLAorCQkJICAgICAgbXlfZ3Bpb192YWx1ZXMpOworCitJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHNldCBhIGNvbXBsZXRlbHkgYXJiaXRyYXJ5IGFycmF5IG9mIGRlc2NyaXB0b3JzLiBUaGUKK2Rlc2NyaXB0b3JzIG1heSBiZSBvYnRhaW5lZCB1c2luZyBhbnkgY29tYmluYXRpb24gb2YgZ3Bpb2RfZ2V0KCkgYW5kCitncGlvZF9nZXRfYXJyYXkoKS4gQWZ0ZXJ3YXJkcyB0aGUgYXJyYXkgb2YgZGVzY3JpcHRvcnMgaGFzIHRvIGJlIHNldHVwCittYW51YWxseSBiZWZvcmUgaXQgY2FuIGJlIHVzZWQgd2l0aCBncGlvZF9zZXRfYXJyYXkoKS4KKworTm90ZSB0aGF0IGZvciBvcHRpbWFsIHBlcmZvcm1hbmNlIEdQSU9zIGJlbG9uZ2luZyB0byB0aGUgc2FtZSBjaGlwIHNob3VsZCBiZQorY29udGlndW91cyB3aXRoaW4gdGhlIGFycmF5IG9mIGRlc2NyaXB0b3JzLgorCisKK0dQSU9zIG1hcHBlZCB0byBJUlFzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorR1BJTyBsaW5lcyBjYW4gcXVpdGUgb2Z0ZW4gYmUgdXNlZCBhcyBJUlFzLiBZb3UgY2FuIGdldCB0aGUgSVJRIG51bWJlcgorY29ycmVzcG9uZGluZyB0byBhIGdpdmVuIEdQSU8gdXNpbmcgdGhlIGZvbGxvd2luZyBjYWxsOgorCisJaW50IGdwaW9kX3RvX2lycShjb25zdCBzdHJ1Y3QgZ3Bpb19kZXNjICpkZXNjKQorCitJdCB3aWxsIHJldHVybiBhbiBJUlEgbnVtYmVyLCBvciBhIG5lZ2F0aXZlIGVycm5vIGNvZGUgaWYgdGhlIG1hcHBpbmcgY2FuJ3QgYmUKK2RvbmUgKG1vc3QgbGlrZWx5IGJlY2F1c2UgdGhhdCBwYXJ0aWN1bGFyIEdQSU8gY2Fubm90IGJlIHVzZWQgYXMgSVJRKS4gSXQgaXMgYW4KK3VuY2hlY2tlZCBlcnJvciB0byB1c2UgYSBHUElPIHRoYXQgd2Fzbid0IHNldCB1cCBhcyBhbiBpbnB1dCB1c2luZworZ3Bpb2RfZGlyZWN0aW9uX2lucHV0KCksIG9yIHRvIHVzZSBhbiBJUlEgbnVtYmVyIHRoYXQgZGlkbid0IG9yaWdpbmFsbHkgY29tZQorZnJvbSBncGlvZF90b19pcnEoKS4gZ3Bpb2RfdG9faXJxKCkgaXMgbm90IGFsbG93ZWQgdG8gc2xlZXAuCisKK05vbi1lcnJvciB2YWx1ZXMgcmV0dXJuZWQgZnJvbSBncGlvZF90b19pcnEoKSBjYW4gYmUgcGFzc2VkIHRvIHJlcXVlc3RfaXJxKCkgb3IKK2ZyZWVfaXJxKCkuIFRoZXkgd2lsbCBvZnRlbiBiZSBzdG9yZWQgaW50byBJUlEgcmVzb3VyY2VzIGZvciBwbGF0Zm9ybSBkZXZpY2VzLAorYnkgdGhlIGJvYXJkLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIGNvZGUuIE5vdGUgdGhhdCBJUlEgdHJpZ2dlciBvcHRpb25zIGFyZQorcGFydCBvZiB0aGUgSVJRIGludGVyZmFjZSwgZS5nLiBJUlFGX1RSSUdHRVJfRkFMTElORywgYXMgYXJlIHN5c3RlbSB3YWtldXAKK2NhcGFiaWxpdGllcy4KKworCitHUElPcyBhbmQgQUNQSQorPT09PT09PT09PT09PT0KKworT24gQUNQSSBzeXN0ZW1zLCBHUElPcyBhcmUgZGVzY3JpYmVkIGJ5IEdwaW9JbygpL0dwaW9JbnQoKSByZXNvdXJjZXMgbGlzdGVkIGJ5Cit0aGUgX0NSUyBjb25maWd1cmF0aW9uIG9iamVjdHMgb2YgZGV2aWNlcy4gIFRob3NlIHJlc291cmNlcyBkbyBub3QgcHJvdmlkZQorY29ubmVjdGlvbiBJRHMgKG5hbWVzKSBmb3IgR1BJT3MsIHNvIGl0IGlzIG5lY2Vzc2FyeSB0byB1c2UgYW4gYWRkaXRpb25hbAorbWVjaGFuaXNtIGZvciB0aGlzIHB1cnBvc2UuCisKK1N5c3RlbXMgY29tcGxpYW50IHdpdGggQUNQSSA1LjEgb3IgbmV3ZXIgbWF5IHByb3ZpZGUgYSBfRFNEIGNvbmZpZ3VyYXRpb24gb2JqZWN0Cit3aGljaCwgYW1vbmcgb3RoZXIgdGhpbmdzLCBtYXkgYmUgdXNlZCB0byBwcm92aWRlIGNvbm5lY3Rpb24gSURzIGZvciBzcGVjaWZpYworR1BJT3MgZGVzY3JpYmVkIGJ5IHRoZSBHcGlvSW8oKS9HcGlvSW50KCkgcmVzb3VyY2VzIGluIF9DUlMuICBJZiB0aGF0IGlzIHRoZQorY2FzZSwgaXQgd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSBHUElPIHN1YnN5c3RlbSBhdXRvbWF0aWNhbGx5LiAgSG93ZXZlciwgaWYgdGhlCitfRFNEIGlzIG5vdCBwcmVzZW50LCB0aGUgbWFwcGluZ3MgYmV0d2VlbiBHcGlvSW8oKS9HcGlvSW50KCkgcmVzb3VyY2VzIGFuZCBHUElPCitjb25uZWN0aW9uIElEcyBuZWVkIHRvIGJlIHByb3ZpZGVkIGJ5IGRldmljZSBkcml2ZXJzLgorCitGb3IgZGV0YWlscyByZWZlciB0byBEb2N1bWVudGF0aW9uL2FjcGkvZ3Bpby1wcm9wZXJ0aWVzLnR4dAorCisKK0ludGVyYWN0aW5nIFdpdGggdGhlIExlZ2FjeSBHUElPIFN1YnN5c3RlbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitNYW55IGtlcm5lbCBzdWJzeXN0ZW1zIHN0aWxsIGhhbmRsZSBHUElPcyB1c2luZyB0aGUgbGVnYWN5IGludGVnZXItYmFzZWQKK2ludGVyZmFjZS4gQWx0aG91Z2ggaXQgaXMgc3Ryb25nbHkgZW5jb3VyYWdlZCB0byB1cGdyYWRlIHRoZW0gdG8gdGhlIHNhZmVyCitkZXNjcmlwdG9yLWJhc2VkIEFQSSwgdGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zIGFsbG93IHlvdSB0byBjb252ZXJ0IGEgR1BJTworZGVzY3JpcHRvciBpbnRvIHRoZSBHUElPIGludGVnZXIgbmFtZXNwYWNlIGFuZCB2aWNlLXZlcnNhOgorCisJaW50IGRlc2NfdG9fZ3Bpbyhjb25zdCBzdHJ1Y3QgZ3Bpb19kZXNjICpkZXNjKQorCXN0cnVjdCBncGlvX2Rlc2MgKmdwaW9fdG9fZGVzYyh1bnNpZ25lZCBncGlvKQorCitUaGUgR1BJTyBudW1iZXIgcmV0dXJuZWQgYnkgZGVzY190b19ncGlvKCkgY2FuIGJlIHNhZmVseSB1c2VkIGFzIGxvbmcgYXMgdGhlCitHUElPIGRlc2NyaXB0b3IgaGFzIG5vdCBiZWVuIGZyZWVkLiBBbGwgdGhlIHNhbWUsIGEgR1BJTyBudW1iZXIgcGFzc2VkIHRvCitncGlvX3RvX2Rlc2MoKSBtdXN0IGhhdmUgYmVlbiBwcm9wZXJseSBhY3F1aXJlZCwgYW5kIHVzYWdlIG9mIHRoZSByZXR1cm5lZCBHUElPCitkZXNjcmlwdG9yIGlzIG9ubHkgcG9zc2libGUgYWZ0ZXIgdGhlIEdQSU8gbnVtYmVyIGhhcyBiZWVuIHJlbGVhc2VkLgorCitGcmVlaW5nIGEgR1BJTyBvYnRhaW5lZCBieSBvbmUgQVBJIHdpdGggdGhlIG90aGVyIEFQSSBpcyBmb3JiaWRkZW4gYW5kIGFuCit1bmNoZWNrZWQgZXJyb3IuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwaW8vZHJpdmVyLnR4dCBiL0RvY3VtZW50YXRpb24vZ3Bpby9kcml2ZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyYTYxOTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2dwaW8vZHJpdmVyLnR4dApAQCAtMCwwICsxLDI3MiBAQAorR1BJTyBEZXNjcmlwdG9yIERyaXZlciBJbnRlcmZhY2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgZG9jdW1lbnQgc2VydmVzIGFzIGEgZ3VpZGUgZm9yIEdQSU8gY2hpcCBkcml2ZXJzIHdyaXRlcnMuIE5vdGUgdGhhdCBpdAorZGVzY3JpYmVzIHRoZSBuZXcgZGVzY3JpcHRvci1iYXNlZCBpbnRlcmZhY2UuIEZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZQorZGVwcmVjYXRlZCBpbnRlZ2VyLWJhc2VkIEdQSU8gaW50ZXJmYWNlIHBsZWFzZSByZWZlciB0byBncGlvLWxlZ2FjeS50eHQuCisKK0VhY2ggR1BJTyBjb250cm9sbGVyIGRyaXZlciBuZWVkcyB0byBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgaGVhZGVyLCB3aGljaCBkZWZpbmVzCit0aGUgc3RydWN0dXJlcyB1c2VkIHRvIGRlZmluZSBhIEdQSU8gZHJpdmVyOgorCisJI2luY2x1ZGUgPGxpbnV4L2dwaW8vZHJpdmVyLmg+CisKKworSW50ZXJuYWwgUmVwcmVzZW50YXRpb24gb2YgR1BJT3MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0luc2lkZSBhIEdQSU8gZHJpdmVyLCBpbmRpdmlkdWFsIEdQSU9zIGFyZSBpZGVudGlmaWVkIGJ5IHRoZWlyIGhhcmR3YXJlIG51bWJlciwKK3doaWNoIGlzIGEgdW5pcXVlIG51bWJlciBiZXR3ZWVuIDAgYW5kIG4sIG4gYmVpbmcgdGhlIG51bWJlciBvZiBHUElPcyBtYW5hZ2VkIGJ5Cit0aGUgY2hpcC4gVGhpcyBudW1iZXIgaXMgcHVyZWx5IGludGVybmFsOiB0aGUgaGFyZHdhcmUgbnVtYmVyIG9mIGEgcGFydGljdWxhcgorR1BJTyBkZXNjcmlwdG9yIGlzIG5ldmVyIG1hZGUgdmlzaWJsZSBvdXRzaWRlIG9mIHRoZSBkcml2ZXIuCisKK09uIHRvcCBvZiB0aGlzIGludGVybmFsIG51bWJlciwgZWFjaCBHUElPIGFsc28gbmVlZCB0byBoYXZlIGEgZ2xvYmFsIG51bWJlciBpbgordGhlIGludGVnZXIgR1BJTyBuYW1lc3BhY2Ugc28gdGhhdCBpdCBjYW4gYmUgdXNlZCB3aXRoIHRoZSBsZWdhY3kgR1BJTworaW50ZXJmYWNlLiBFYWNoIGNoaXAgbXVzdCB0aHVzIGhhdmUgYSAiYmFzZSIgbnVtYmVyICh3aGljaCBjYW4gYmUgYXV0b21hdGljYWxseQorYXNzaWduZWQpLCBhbmQgZm9yIGVhY2ggR1BJTyB0aGUgZ2xvYmFsIG51bWJlciB3aWxsIGJlIChiYXNlICsgaGFyZHdhcmUgbnVtYmVyKS4KK0FsdGhvdWdoIHRoZSBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIGlzIGNvbnNpZGVyZWQgZGVwcmVjYXRlZCwgaXQgc3RpbGwgaGFzIG1hbnkKK3VzZXJzIGFuZCB0aHVzIG5lZWRzIHRvIGJlIG1haW50YWluZWQuCisKK1NvIGZvciBleGFtcGxlIG9uZSBwbGF0Zm9ybSBjb3VsZCB1c2UgbnVtYmVycyAzMi0xNTkgZm9yIEdQSU9zLCB3aXRoIGEKK2NvbnRyb2xsZXIgZGVmaW5pbmcgMTI4IEdQSU9zIGF0IGEgImJhc2UiIG9mIDMyIDsgd2hpbGUgYW5vdGhlciBwbGF0Zm9ybSB1c2VzCitudW1iZXJzIDAuLjYzIHdpdGggb25lIHNldCBvZiBHUElPIGNvbnRyb2xsZXJzLCA2NC03OSB3aXRoIGFub3RoZXIgdHlwZSBvZiBHUElPCitjb250cm9sbGVyLCBhbmQgb24gb25lIHBhcnRpY3VsYXIgYm9hcmQgODAtOTUgd2l0aCBhbiBGUEdBLiBUaGUgbnVtYmVycyBuZWVkIG5vdAorYmUgY29udGlndW91czsgZWl0aGVyIG9mIHRob3NlIHBsYXRmb3JtcyBjb3VsZCBhbHNvIHVzZSBudW1iZXJzIDIwMDAtMjA2MyB0bworaWRlbnRpZnkgR1BJT3MgaW4gYSBiYW5rIG9mIEkyQyBHUElPIGV4cGFuZGVycy4KKworCitDb250cm9sbGVyIERyaXZlcnM6IGdwaW9fY2hpcAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW4gdGhlIGdwaW9saWIgZnJhbWV3b3JrIGVhY2ggR1BJTyBjb250cm9sbGVyIGlzIHBhY2thZ2VkIGFzIGEgInN0cnVjdAorZ3Bpb19jaGlwIiAoc2VlIGxpbnV4L2dwaW8vZHJpdmVyLmggZm9yIGl0cyBjb21wbGV0ZSBkZWZpbml0aW9uKSB3aXRoIG1lbWJlcnMKK2NvbW1vbiB0byBlYWNoIGNvbnRyb2xsZXIgb2YgdGhhdCB0eXBlOgorCisgLSBtZXRob2RzIHRvIGVzdGFibGlzaCBHUElPIGRpcmVjdGlvbgorIC0gbWV0aG9kcyB1c2VkIHRvIGFjY2VzcyBHUElPIHZhbHVlcworIC0gbWV0aG9kIHRvIHJldHVybiB0aGUgSVJRIG51bWJlciBhc3NvY2lhdGVkIHRvIGEgZ2l2ZW4gR1BJTworIC0gZmxhZyBzYXlpbmcgd2hldGhlciBjYWxscyB0byBpdHMgbWV0aG9kcyBtYXkgc2xlZXAKKyAtIG9wdGlvbmFsIGRlYnVnZnMgZHVtcCBtZXRob2QgKHNob3dpbmcgZXh0cmEgc3RhdGUgbGlrZSBwdWxsdXAgY29uZmlnKQorIC0gb3B0aW9uYWwgYmFzZSBudW1iZXIgKHdpbGwgYmUgYXV0b21hdGljYWxseSBhc3NpZ25lZCBpZiBvbWl0dGVkKQorIC0gbGFiZWwgZm9yIGRpYWdub3N0aWNzIGFuZCBHUElPcyBtYXBwaW5nIHVzaW5nIHBsYXRmb3JtIGRhdGEKKworVGhlIGNvZGUgaW1wbGVtZW50aW5nIGEgZ3Bpb19jaGlwIHNob3VsZCBzdXBwb3J0IG11bHRpcGxlIGluc3RhbmNlcyBvZiB0aGUKK2NvbnRyb2xsZXIsIHBvc3NpYmx5IHVzaW5nIHRoZSBkcml2ZXIgbW9kZWwuIFRoYXQgY29kZSB3aWxsIGNvbmZpZ3VyZSBlYWNoCitncGlvX2NoaXAgYW5kIGlzc3VlIGdwaW9jaGlwX2FkZCgpLiBSZW1vdmluZyBhIEdQSU8gY29udHJvbGxlciBzaG91bGQgYmUgcmFyZTsKK3VzZSBncGlvY2hpcF9yZW1vdmUoKSB3aGVuIGl0IGlzIHVuYXZvaWRhYmxlLgorCitNb3N0IG9mdGVuIGEgZ3Bpb19jaGlwIGlzIHBhcnQgb2YgYW4gaW5zdGFuY2Utc3BlY2lmaWMgc3RydWN0dXJlIHdpdGggc3RhdGUgbm90CitleHBvc2VkIGJ5IHRoZSBHUElPIGludGVyZmFjZXMsIHN1Y2ggYXMgYWRkcmVzc2luZywgcG93ZXIgbWFuYWdlbWVudCwgYW5kIG1vcmUuCitDaGlwcyBzdWNoIGFzIGNvZGVjcyB3aWxsIGhhdmUgY29tcGxleCBub24tR1BJTyBzdGF0ZS4KKworQW55IGRlYnVnZnMgZHVtcCBtZXRob2Qgc2hvdWxkIG5vcm1hbGx5IGlnbm9yZSBzaWduYWxzIHdoaWNoIGhhdmVuJ3QgYmVlbgorcmVxdWVzdGVkIGFzIEdQSU9zLiBUaGV5IGNhbiB1c2UgZ3Bpb2NoaXBfaXNfcmVxdWVzdGVkKCksIHdoaWNoIHJldHVybnMgZWl0aGVyCitOVUxMIG9yIHRoZSBsYWJlbCBhc3NvY2lhdGVkIHdpdGggdGhhdCBHUElPIHdoZW4gaXQgd2FzIHJlcXVlc3RlZC4KKworUlRfRlVMTDogR1BJTyBkcml2ZXIgc2hvdWxkIG5vdCB1c2Ugc3BpbmxvY2tfdCBvciBhbnkgc2xlZXBhYmxlIEFQSXMKKyhsaWtlIFBNIHJ1bnRpbWUpIGluIGl0cyBncGlvX2NoaXAgaW1wbGVtZW50YXRpb24gKC5nZXQvLnNldCBhbmQgZGlyZWN0aW9uCitjb250cm9sIGNhbGxiYWNrcykgaWYgaXQgaXMgZXhwZWN0ZWQgdG8gY2FsbCBHUElPIEFQSXMgZnJvbSBhdG9taWMgY29udGV4dAorb24gLVJUIChpbnNpZGUgaGFyZCBJUlEgaGFuZGxlcnMgYW5kIHNpbWlsYXIgY29udGV4dHMpLiBOb3JtYWxseSB0aGlzIHNob3VsZAorbm90IGJlIHJlcXVpcmVkLgorCitHUElPIGRyaXZlcnMgcHJvdmlkaW5nIElSUXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSXQgaXMgY3VzdG9tIHRoYXQgR1BJTyBkcml2ZXJzIChHUElPIGNoaXBzKSBhcmUgYWxzbyBwcm92aWRpbmcgaW50ZXJydXB0cywKK21vc3Qgb2Z0ZW4gY2FzY2FkZWQgb2ZmIGEgcGFyZW50IGludGVycnVwdCBjb250cm9sbGVyLCBhbmQgaW4gc29tZSBzcGVjaWFsCitjYXNlcyB0aGUgR1BJTyBsb2dpYyBpcyBtZWxkZWQgd2l0aCBhIFNvQydzIHByaW1hcnkgaW50ZXJydXB0IGNvbnRyb2xsZXIuCisKK1RoZSBJUlEgcG9ydGlvbnMgb2YgdGhlIEdQSU8gYmxvY2sgYXJlIGltcGxlbWVudGVkIHVzaW5nIGFuIGlycWNoaXAsIHVzaW5nCit0aGUgaGVhZGVyIDxsaW51eC9pcnEuaD4uIFNvIGJhc2ljYWxseSBzdWNoIGEgZHJpdmVyIGlzIHV0aWxpemluZyB0d28gc3ViLQorc3lzdGVtcyBzaW11bHRhbmVvdXNseTogZ3BpbyBhbmQgaXJxLgorCitSVF9GVUxMOiBHUElPIGRyaXZlciBzaG91bGQgbm90IHVzZSBzcGlubG9ja190IG9yIGFueSBzbGVlcGFibGUgQVBJcworKGxpa2UgUE0gcnVudGltZSkgYXMgcGFydCBvZiBpdHMgaXJxX2NoaXAgaW1wbGVtZW50YXRpb24gb24gLVJULgorLSBzcGlubG9ja190IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIHJhd19zcGlubG9ja190IFsxXS4KKy0gSWYgc2xlZXBhYmxlIEFQSXMgaGF2ZSB0byBiZSB1c2VkLCB0aGVzZSBjYW4gYmUgZG9uZSBmcm9tIHRoZSAuaXJxX2J1c19sb2NrKCkKKyAgYW5kIC5pcnFfYnVzX3VubG9jaygpIGNhbGxiYWNrcywgYXMgdGhlc2UgYXJlIHRoZSBvbmx5IHNsb3dwYXRoIGNhbGxiYWNrcworICBvbiBhbiBpcnFjaGlwLiBDcmVhdGUgdGhlIGNhbGxiYWNrcyBpZiBuZWVkZWQgWzJdLgorCitHUElPIGlycWNoaXBzIHVzdWFsbHkgZmFsbCBpbiBvbmUgb2YgdHdvIGNhdGVnb3JpZXM6CisKKyogQ0hBSU5FRCBHUElPIGlycWNoaXBzOiB0aGVzZSBhcmUgdXN1YWxseSB0aGUgdHlwZSB0aGF0IGlzIGVtYmVkZGVkIG9uCisgIGFuIFNvQy4gVGhpcyBtZWFucyB0aGF0IHRoZXJlIGlzIGEgZmFzdCBJUlEgaGFuZGxlciBmb3IgdGhlIEdQSU9zIHRoYXQKKyAgZ2V0cyBjYWxsZWQgaW4gYSBjaGFpbiBmcm9tIHRoZSBwYXJlbnQgSVJRIGhhbmRsZXIsIG1vc3QgdHlwaWNhbGx5IHRoZQorICBzeXN0ZW0gaW50ZXJydXB0IGNvbnRyb2xsZXIuIFRoaXMgbWVhbnMgdGhlIEdQSU8gaXJxY2hpcCBpcyByZWdpc3RlcmVkCisgIHVzaW5nIGlycV9zZXRfY2hhaW5lZF9oYW5kbGVyKCkgb3IgdGhlIGNvcnJlc3BvbmRpbmcKKyAgZ3Bpb2NoaXBfc2V0X2NoYWluZWRfaXJxY2hpcCgpIGhlbHBlciBmdW5jdGlvbiwgYW5kIHRoZSBHUElPIGlycWNoaXAKKyAgaGFuZGxlciB3aWxsIGJlIGNhbGxlZCBpbW1lZGlhdGVseSBmcm9tIHRoZSBwYXJlbnQgaXJxY2hpcCwgd2hpbGUKKyAgaG9sZGluZyB0aGUgSVJRcyBkaXNhYmxlZC4gVGhlIEdQSU8gaXJxY2hpcCB3aWxsIHRoZW4gZW5kIHVwIGNhbGxpbmcKKyAgc29tZXRoaW5nIGxpa2UgdGhpcyBzZXF1ZW5jZSBpbiBpdHMgaW50ZXJydXB0IGhhbmRsZXI6CisKKyAgc3RhdGljIGlycXJldHVybl90IHRjMzU4OXhfZ3Bpb19pcnEoaW50IGlycSwgdm9pZCAqZGF0YSkKKyAgICAgIGNoYWluZWRfaXJxX2VudGVyKC4uLik7CisgICAgICBnZW5lcmljX2hhbmRsZV9pcnEoLi4uKTsKKyAgICAgIGNoYWluZWRfaXJxX2V4aXQoLi4uKTsKKworICBDaGFpbmVkIEdQSU8gaXJxY2hpcHMgdHlwaWNhbGx5IGNhbiBOT1Qgc2V0IHRoZSAuY2FuX3NsZWVwIGZsYWcgb24KKyAgc3RydWN0IGdwaW9fY2hpcCwgYXMgZXZlcnl0aGluZyBoYXBwZW5zIGRpcmVjdGx5IGluIHRoZSBjYWxsYmFja3MuCisKKyAgUlRfRlVMTDogTm90ZSwgY2hhaW5lZCBJUlEgaGFuZGxlcnMgd2lsbCBub3QgYmUgZm9yY2VkIHRocmVhZGVkIG9uIC1SVC4KKyAgQXMgcmVzdWx0LCBzcGlubG9ja190IG9yIGFueSBzbGVlcGFibGUgQVBJcyAobGlrZSBQTSBydW50aW1lKSBjYW4ndCBiZSB1c2VkCisgIGluIGNoYWluZWQgSVJRIGhhbmRsZXIuCisgIGlmIHJlcXVpcmVkIChhbmQgaWYgaXQgY2FuJ3QgYmUgY29udmVydGVkIHRvIHRoZSBuZXN0ZWQgdGhyZWFkZWQgR1BJTyBpcnFjaGlwKQorICAtIGNoYWluZWQgSVJRIGhhbmRsZXIgY2FuIGJlIGNvbnZlcnRlZCB0byBnZW5lcmljIGlycSBoYW5kbGVyIGFuZCB0aGlzIHdheQorICBpdCB3aWxsIGJlIHRocmVhZGVkIElSUSBoYW5kbGVyIG9uIC1SVCBhbmQgaGFyZCBJUlEgaGFuZGxlciBvbiBub24tUlQKKyAgKGZvciBleGFtcGxlLCBzZWUgWzNdKS4KKyAgS25vdyBXL0E6IFRoZSBnZW5lcmljX2hhbmRsZV9pcnEoKSBpcyBleHBlY3RlZCB0byBiZSBjYWxsZWQgd2l0aCBJUlEgZGlzYWJsZWQsCisgIHNvIElSUSBjb3JlIHdpbGwgY29tcGxhaW4gaWYgaXQgd2lsbCBiZSBjYWxsZWQgZnJvbSBJUlEgaGFuZGxlciB3aWNoIGlzIGZvcmNlZAorICB0aHJlYWQuIFRoZSAiZmFrZT8iIHJhdyBsb2NrIGNhbiBiZSB1c2VkIHRvIFcvQSB0aGlzIHByb2JsZW06CisKKwlyYXdfc3BpbmxvY2tfdCB3YV9sb2NrOworCXN0YXRpYyBpcnFyZXR1cm5fdCBvbWFwX2dwaW9faXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZ3Bpb2JhbmspCisJCXVuc2lnbmVkIGxvbmcgd2FfbG9ja19mbGFnczsKKwkJcmF3X3NwaW5fbG9ja19pcnFzYXZlKCZiYW5rLT53YV9sb2NrLCB3YV9sb2NrX2ZsYWdzKTsKKwkJZ2VuZXJpY19oYW5kbGVfaXJxKGlycV9maW5kX21hcHBpbmcoYmFuay0+Y2hpcC5pcnFkb21haW4sIGJpdCkpOworCQlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYmFuay0+d2FfbG9jaywgd2FfbG9ja19mbGFncyk7CisKKyogR0VORVJJQyBDSEFJTkVEIEdQSU8gaXJxY2hpcHM6IHRoZXNlIGFyZSB0aGUgc2FtZSBhcyAiQ0hBSU5FRCBHUElPIGlycWNoaXBzIiwKKyAgYnV0IGNoYWluZWQgSVJRIGhhbmRsZXJzIGFyZSBub3QgdXNlZC4gSW5zdGVhZCBHUElPIElSUXMgZGlzcGF0Y2hpbmcgaXMKKyAgcGVyZm9ybWVkIGJ5IGdlbmVyaWMgSVJRIGhhbmRsZXIgd2hpY2ggaXMgY29uZmlndXJlZCB1c2luZyByZXF1ZXN0X2lycSgpLgorICBUaGUgR1BJTyBpcnFjaGlwIHdpbGwgdGhlbiBlbmQgdXAgY2FsbGluZyBzb21ldGhpbmcgbGlrZSB0aGlzIHNlcXVlbmNlIGluCisgIGl0cyBpbnRlcnJ1cHQgaGFuZGxlcjoKKworICBzdGF0aWMgaXJxcmV0dXJuX3QgZ3Bpb19yY2FyX2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pZCkKKwlmb3IgZWFjaCBkZXRlY3RlZCBHUElPIElSUQorCQlnZW5lcmljX2hhbmRsZV9pcnEoLi4uKTsKKworICBSVF9GVUxMOiBTdWNoIGtpbmQgb2YgaGFuZGxlcnMgd2lsbCBiZSBmb3JjZWQgdGhyZWFkZWQgb24gLVJULCBhcyByZXN1bHQgSVJRCisgIGNvcmUgd2lsbCBjb21wbGFpbiB0aGF0IGdlbmVyaWNfaGFuZGxlX2lycSgpIGlzIGNhbGxlZCB3aXRoIElSUSBlbmFibGVkIGFuZAorICB0aGUgc2FtZSBXL0EgYXMgZm9yICJDSEFJTkVEIEdQSU8gaXJxY2hpcHMiIGNhbiBiZSBhcHBsaWVkLgorCisqIE5FU1RFRCBUSFJFQURFRCBHUElPIGlycWNoaXBzOiB0aGVzZSBhcmUgb2ZmLWNoaXAgR1BJTyBleHBhbmRlcnMgYW5kIGFueQorICBvdGhlciBHUElPIGlycWNoaXAgcmVzaWRpbmcgb24gdGhlIG90aGVyIHNpZGUgb2YgYSBzbGVlcGluZyBidXMuIE9mIGNvdXJzZQorICBzdWNoIGRyaXZlcnMgdGhhdCBuZWVkIHNsb3cgYnVzIHRyYWZmaWMgdG8gcmVhZCBvdXQgSVJRIHN0YXR1cyBhbmQgc2ltaWxhciwKKyAgdHJhZmZpYyB3aGljaCBtYXkgaW4gdHVybiBpbmN1ciBvdGhlciBJUlFzIHRvIGhhcHBlbiwgY2Fubm90IGJlIGhhbmRsZWQKKyAgaW4gYSBxdWljayBJUlEgaGFuZGxlciB3aXRoIElSUXMgZGlzYWJsZWQuIEluc3RlYWQgdGhleSBuZWVkIHRvIHNwYXduIGEKKyAgdGhyZWFkIGFuZCB0aGVuIG1hc2sgdGhlIHBhcmVudCBJUlEgbGluZSB1bnRpbCB0aGUgaW50ZXJydXB0IGlzIGhhbmRsZWQKKyAgYnkgdGhlIGRyaXZlci4gVGhlIGhhbGxtYXJrIG9mIHRoaXMgZHJpdmVyIGlzIHRvIGNhbGwgc29tZXRoaW5nIGxpa2UKKyAgdGhpcyBpbiBpdHMgaW50ZXJydXB0IGhhbmRsZXI6CisKKyAgc3RhdGljIGlycXJldHVybl90IHRjMzU4OXhfZ3Bpb19pcnEoaW50IGlycSwgdm9pZCAqZGF0YSkKKyAgICAgIC4uLgorICAgICAgaGFuZGxlX25lc3RlZF9pcnEoaXJxKTsKKworICBUaGUgaGFsbG1hcmsgb2YgdGhyZWFkZWQgR1BJTyBpcnFjaGlwcyBpcyB0aGF0IHRoZXkgc2V0IHRoZSAuY2FuX3NsZWVwCisgIGZsYWcgb24gc3RydWN0IGdwaW9fY2hpcCB0byB0cnVlLCBpbmRpY2F0aW5nIHRoYXQgdGhpcyBjaGlwIG1heSBzbGVlcAorICB3aGVuIGFjY2Vzc2luZyB0aGUgR1BJT3MuCisKK1RvIGhlbHAgb3V0IGluIGhhbmRsaW5nIHRoZSBzZXQtdXAgYW5kIG1hbmFnZW1lbnQgb2YgR1BJTyBpcnFjaGlwcyBhbmQgdGhlCithc3NvY2lhdGVkIGlycWRvbWFpbiBhbmQgcmVzb3VyY2UgYWxsb2NhdGlvbiBjYWxsYmFja3MsIHRoZSBncGlvbGliIGhhcworc29tZSBoZWxwZXJzIHRoYXQgY2FuIGJlIGVuYWJsZWQgYnkgc2VsZWN0aW5nIHRoZSBHUElPTElCX0lSUUNISVAgS2NvbmZpZworc3ltYm9sOgorCisqIGdwaW9jaGlwX2lycWNoaXBfYWRkKCk6IGFkZHMgYW4gaXJxY2hpcCB0byBhIGdwaW9jaGlwLiBJdCB3aWxsIHBhc3MKKyAgdGhlIHN0cnVjdCBncGlvX2NoaXAqIGZvciB0aGUgY2hpcCB0byBhbGwgSVJRIGNhbGxiYWNrcywgc28gdGhlIGNhbGxiYWNrcworICBuZWVkIHRvIGVtYmVkIHRoZSBncGlvX2NoaXAgaW4gaXRzIHN0YXRlIGNvbnRhaW5lciBhbmQgb2J0YWluIGEgcG9pbnRlcgorICB0byB0aGUgY29udGFpbmVyIHVzaW5nIGNvbnRhaW5lcl9vZigpLgorICAoU2VlIERvY3VtZW50YXRpb24vZHJpdmVyLW1vZGVsL2Rlc2lnbi1wYXR0ZXJucy50eHQpCisKKyogZ3Bpb2NoaXBfc2V0X2NoYWluZWRfaXJxY2hpcCgpOiBzZXRzIHVwIGEgY2hhaW5lZCBpcnEgaGFuZGxlciBmb3IgYQorICBncGlvX2NoaXAgZnJvbSBhIHBhcmVudCBJUlEgYW5kIHBhc3NlcyB0aGUgc3RydWN0IGdwaW9fY2hpcCogYXMgaGFuZGxlcgorICBkYXRhLiAoTm90aWNlIGhhbmRsZXIgZGF0YSwgc2luY2UgdGhlIGlycWNoaXAgZGF0YSBpcyBsaWtlbHkgdXNlZCBieSB0aGUKKyAgcGFyZW50IGlycWNoaXAhKSBUaGlzIGlzIGZvciB0aGUgY2hhaW5lZCB0eXBlIG9mIGNoaXAuIFRoaXMgaXMgYWxzbyB1c2VkCisgIHRvIHNldCB1cCBhIG5lc3RlZCBpcnFjaGlwIGlmIE5VTEwgaXMgcGFzc2VkIGFzIGhhbmRsZXIuCisKK1RvIHVzZSB0aGUgaGVscGVycyBwbGVhc2Uga2VlcCB0aGUgZm9sbG93aW5nIGluIG1pbmQ6CisKKy0gTWFrZSBzdXJlIHRvIGFzc2lnbiBhbGwgcmVsZXZhbnQgbWVtYmVycyBvZiB0aGUgc3RydWN0IGdwaW9fY2hpcCBzbyB0aGF0CisgIHRoZSBpcnFjaGlwIGNhbiBpbml0aWFsaXplLiBFLmcuIC5kZXYgYW5kIC5jYW5fc2xlZXAgc2hhbGwgYmUgc2V0IHVwCisgIHByb3Blcmx5LgorCistIE5vbWluYWxseSBzZXQgYWxsIGhhbmRsZXJzIHRvIGhhbmRsZV9iYWRfaXJxKCkgaW4gdGhlIHNldHVwIGNhbGwgYW5kIHBhc3MKKyAgaGFuZGxlX2JhZF9pcnEoKSBhcyBmbG93IGhhbmRsZXIgcGFyYW1ldGVyIGluIGdwaW9jaGlwX2lycWNoaXBfYWRkKCkgaWYgaXQgaXMKKyAgZXhwZWN0ZWQgZm9yIEdQSU8gZHJpdmVyIHRoYXQgaXJxY2hpcCAuc2V0X3R5cGUoKSBjYWxsYmFjayBoYXZlIHRvIGJlIGNhbGxlZAorICBiZWZvcmUgdXNpbmcvZW5hYmxpbmcgR1BJTyBJUlEuIFRoZW4gc2V0IHRoZSBoYW5kbGVyIHRvIGhhbmRsZV9sZXZlbF9pcnEoKQorICBhbmQvb3IgaGFuZGxlX2VkZ2VfaXJxKCkgaW4gdGhlIGlycWNoaXAgLnNldF90eXBlKCkgY2FsbGJhY2sgZGVwZW5kaW5nIG9uCisgIHdoYXQgeW91ciBjb250cm9sbGVyIHN1cHBvcnRzLgorCitJdCBpcyBsZWdhbCBmb3IgYW55IElSUSBjb25zdW1lciB0byByZXF1ZXN0IGFuIElSUSBmcm9tIGFueSBpcnFjaGlwIG5vIG1hdHRlcgoraWYgdGhhdCBpcyBhIGNvbWJpbmVkIEdQSU8rSVJRIGRyaXZlci4gVGhlIGJhc2ljIHByZW1pc2UgaXMgdGhhdCBncGlvX2NoaXAgYW5kCitpcnFfY2hpcCBhcmUgb3J0aG9nb25hbCwgYW5kIG9mZmVyaW5nIHRoZWlyIHNlcnZpY2VzIGluZGVwZW5kZW50IG9mIGVhY2gKK290aGVyLgorCitncGlvZF90b19pcnEoKSBpcyBqdXN0IGEgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZmlndXJlIG91dCB0aGUgSVJRIGZvciBhCitjZXJ0YWluIEdQSU8gbGluZSBhbmQgc2hvdWxkIG5vdCBiZSByZWxpZWQgdXBvbiB0byBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZQordGhlIElSUSBpcyB1c2VkLgorCitTbyBhbHdheXMgcHJlcGFyZSB0aGUgaGFyZHdhcmUgYW5kIG1ha2UgaXQgcmVhZHkgZm9yIGFjdGlvbiBpbiByZXNwZWN0aXZlCitjYWxsYmFja3MgZnJvbSB0aGUgR1BJTyBhbmQgaXJxY2hpcCBBUElzLiBEbyBub3QgcmVseSBvbiBncGlvZF90b19pcnEoKSBoYXZpbmcKK2JlZW4gY2FsbGVkIGZpcnN0LgorCitUaGlzIG9ydGhvZ29uYWxpdHkgbGVhZHMgdG8gYW1iaWd1aXRpZXMgdGhhdCB3ZSBuZWVkIHRvIHNvbHZlOiBpZiB0aGVyZSBpcworY29tcGV0aXRpb24gaW5zaWRlIHRoZSBzdWJzeXN0ZW0gd2hpY2ggc2lkZSBpcyB1c2luZyB0aGUgcmVzb3VyY2UgKGEgY2VydGFpbgorR1BJTyBsaW5lIGFuZCByZWdpc3RlciBmb3IgZXhhbXBsZSkgaXQgbmVlZHMgdG8gZGVueSBjZXJ0YWluIG9wZXJhdGlvbnMgYW5kCitrZWVwIHRyYWNrIG9mIHVzYWdlIGluc2lkZSBvZiB0aGUgZ3Bpb2xpYiBzdWJzeXN0ZW0uIFRoaXMgaXMgd2h5IHRoZSBBUEkKK2JlbG93IGV4aXN0cy4KKworCitMb2NraW5nIElSUSB1c2FnZQorLS0tLS0tLS0tLS0tLS0tLS0KK0lucHV0IEdQSU9zIGNhbiBiZSB1c2VkIGFzIElSUSBzaWduYWxzLiBXaGVuIHRoaXMgaGFwcGVucywgYSBkcml2ZXIgaXMgcmVxdWVzdGVkCit0byBtYXJrIHRoZSBHUElPIGFzIGJlaW5nIHVzZWQgYXMgYW4gSVJROgorCisJaW50IGdwaW9jaGlwX2xvY2tfYXNfaXJxKHN0cnVjdCBncGlvX2NoaXAgKmNoaXAsIHVuc2lnbmVkIGludCBvZmZzZXQpCisKK1RoaXMgd2lsbCBwcmV2ZW50IHRoZSB1c2Ugb2Ygbm9uLWlycSByZWxhdGVkIEdQSU8gQVBJcyB1bnRpbCB0aGUgR1BJTyBJUlEgbG9jaworaXMgcmVsZWFzZWQ6CisKKwl2b2lkIGdwaW9jaGlwX3VubG9ja19hc19pcnEoc3RydWN0IGdwaW9fY2hpcCAqY2hpcCwgdW5zaWduZWQgaW50IG9mZnNldCkKKworV2hlbiBpbXBsZW1lbnRpbmcgYW4gaXJxY2hpcCBpbnNpZGUgYSBHUElPIGRyaXZlciwgdGhlc2UgdHdvIGZ1bmN0aW9ucyBzaG91bGQKK3R5cGljYWxseSBiZSBjYWxsZWQgaW4gdGhlIC5zdGFydHVwKCkgYW5kIC5zaHV0ZG93bigpIGNhbGxiYWNrcyBmcm9tIHRoZQoraXJxY2hpcC4KKworUmVhbC1UaW1lIGNvbXBsaWFuY2UgZm9yIEdQSU8gSVJRIGNoaXBzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQW55IHByb3ZpZGVyIG9mIGlycWNoaXBzIG5lZWRzIHRvIGJlIGNhcmVmdWxseSB0YWlsb3JlZCB0byBzdXBwb3J0IFJlYWwgVGltZQorcHJlZW1wdGlvbi4gSXQgaXMgZGVzaXJlYWJsZSB0aGF0IGFsbCBpcnFjaGlwcyBpbiB0aGUgR1BJTyBzdWJzeXN0ZW0ga2VlcCB0aGlzCitpbiBtaW5kIGFuZCBkb2VzIHRoZSBwcm9wZXIgdGVzdGluZyB0byBhc3N1cmUgdGhleSBhcmUgcmVhbCB0aW1lLWVuYWJsZWQuCitTbywgcGF5IGF0dGVudGlvbiBvbiBhYm92ZSAiIFJUX0ZVTEw6IiBub3RlcywgcGxlYXNlLgorVGhlIGZvbGxvd2luZyBpcyBhIGNoZWNrbGlzdCB0byBmb2xsb3cgd2hlbiBwcmVwYXJpbmcgYSBkcml2ZXIgZm9yIHJlYWwKK3RpbWUtY29tcGxpYW5jZToKKworLSBlbnN1cmUgc3BpbmxvY2tfdCBpcyBub3QgdXNlZCBhcyBwYXJ0IGlycV9jaGlwIGltcGxlbWVudGF0aW9uOworLSBlbnN1cmUgdGhhdCBzbGVlcGFibGUgQVBJcyBhcmUgbm90IHVzZWQgYXMgcGFydCBpcnFfY2hpcCBpbXBsZW1lbnRhdGlvbi4KKyAgSWYgc2xlZXBhYmxlIEFQSXMgaGF2ZSB0byBiZSB1c2VkLCB0aGVzZSBjYW4gYmUgZG9uZSBmcm9tIHRoZSAuaXJxX2J1c19sb2NrKCkKKyAgYW5kIC5pcnFfYnVzX3VubG9jaygpIGNhbGxiYWNrczsKKy0gQ2hhaW5lZCBHUElPIGlycWNoaXBzOiBlbnN1cmUgc3BpbmxvY2tfdCBvciBhbnkgc2xlZXBhYmxlIEFQSXMgYXJlIG5vdCB1c2VkCisgIGZyb20gY2hhaW5lZCBJUlEgaGFuZGxlcjsKKy0gR2VuZXJpYyBjaGFpbmVkIEdQSU8gaXJxY2hpcHM6IHRha2UgY2FyZSBhYm91dCBnZW5lcmljX2hhbmRsZV9pcnEoKSBjYWxscyBhbmQKKyAgYXBwbHkgY29ycmVzcG9uZGluZyBXL0E7CistIENoYWluZWQgR1BJTyBpcnFjaGlwczogZ2V0IHJpZCBvZiBjaGFpbmVkIElSUSBoYW5kbGVyIGFuZCB1c2UgZ2VuZXJpYyBpcnEKKyAgaGFuZGxlciBpZiBwb3NzaWJsZSA6KQorLSByZWdtYXBfbW1pbzogU3J5LCBidXQgeW91IGFyZSBpbiB0cm91YmxlIDooIGlmIE1NSU8gcmVnbWFwIGlzIHVzZWQgYXMgZm9yCisgIEdQSU8gSVJRIGNoaXAgaW1wbGVtZW50YXRpb247CistIFRlc3QgeW91ciBkcml2ZXIgd2l0aCB0aGUgYXBwcm9wcmlhdGUgaW4ta2VybmVsIHJlYWwgdGltZSB0ZXN0IGNhc2VzIGZvciBib3RoCisgIGxldmVsIGFuZCBlZGdlIElSUXMuCisKKworUmVxdWVzdGluZyBzZWxmLW93bmVkIEdQSU8gcGlucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTb21ldGltZXMgaXQgaXMgdXNlZnVsIHRvIGFsbG93IGEgR1BJTyBjaGlwIGRyaXZlciB0byByZXF1ZXN0IGl0cyBvd24gR1BJTworZGVzY3JpcHRvcnMgdGhyb3VnaCB0aGUgZ3Bpb2xpYiBBUEkuIFVzaW5nIGdwaW9fcmVxdWVzdCgpIGZvciB0aGlzIHB1cnBvc2UKK2RvZXMgbm90IGhlbHAgc2luY2UgaXQgcGlucyB0aGUgbW9kdWxlIHRvIHRoZSBrZXJuZWwgZm9yZXZlciAoaXQgY2FsbHMKK3RyeV9tb2R1bGVfZ2V0KCkpLiBBIEdQSU8gZHJpdmVyIGNhbiB1c2UgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgaW5zdGVhZAordG8gcmVxdWVzdCBhbmQgZnJlZSBkZXNjcmlwdG9ycyB3aXRob3V0IGJlaW5nIHBpbm5lZCB0byB0aGUga2VybmVsIGZvcmV2ZXIuCisKKwlzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvY2hpcF9yZXF1ZXN0X293bl9kZXNjKHN0cnVjdCBncGlvX2Rlc2MgKmRlc2MsCisJCQkJCQkgICAgY29uc3QgY2hhciAqbGFiZWwpCisKKwl2b2lkIGdwaW9jaGlwX2ZyZWVfb3duX2Rlc2Moc3RydWN0IGdwaW9fZGVzYyAqZGVzYykKKworRGVzY3JpcHRvcnMgcmVxdWVzdGVkIHdpdGggZ3Bpb2NoaXBfcmVxdWVzdF9vd25fZGVzYygpIG11c3QgYmUgcmVsZWFzZWQgd2l0aAorZ3Bpb2NoaXBfZnJlZV9vd25fZGVzYygpLgorCitUaGVzZSBmdW5jdGlvbnMgbXVzdCBiZSB1c2VkIHdpdGggY2FyZSBzaW5jZSB0aGV5IGRvIG5vdCBhZmZlY3QgbW9kdWxlIHVzZQorY291bnQuIERvIG5vdCB1c2UgdGhlIGZ1bmN0aW9ucyB0byByZXF1ZXN0IGdwaW8gZGVzY3JpcHRvcnMgbm90IG93bmVkIGJ5IHRoZQorY2FsbGluZyBkcml2ZXIuCisKK1sxXSBodHRwOi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2xpbnV4LW9tYXAvbXNnMTIwNDI1Lmh0bWwKK1syXSBodHRwczovL2xrbWwub3JnL2xrbWwvMjAxNS85LzI1LzQ5NAorWzNdIGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDE1LzkvMjUvNDk1CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwaW8vZHJpdmVycy1vbi1ncGlvLnR4dCBiL0RvY3VtZW50YXRpb24vZ3Bpby9kcml2ZXJzLW9uLWdwaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2MTIxMzIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2dwaW8vZHJpdmVycy1vbi1ncGlvLnR4dApAQCAtMCwwICsxLDk1IEBACitTdWJzeXN0ZW0gZHJpdmVycyB1c2luZyBHUElPCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK05vdGUgdGhhdCBzdGFuZGFyZCBrZXJuZWwgZHJpdmVycyBleGlzdCBmb3IgY29tbW9uIEdQSU8gdGFza3MgYW5kIHdpbGwgcHJvdmlkZQordGhlIHJpZ2h0IGluLWtlcm5lbCBhbmQgdXNlcnNwYWNlIEFQSXMvQUJJcyBmb3IgdGhlIGpvYiwgYW5kIHRoYXQgdGhlc2UKK2RyaXZlcnMgY2FuIHF1aXRlIGVhc2lseSBpbnRlcmNvbm5lY3Qgd2l0aCBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcyB1c2luZworaGFyZHdhcmUgZGVzY3JpcHRpb25zIHN1Y2ggYXMgZGV2aWNlIHRyZWUgb3IgQUNQSToKKworLSBsZWRzLWdwaW86IGRyaXZlcnMvbGVkcy9sZWRzLWdwaW8uYyB3aWxsIGhhbmRsZSBMRURzIGNvbm5lY3RlZCB0byAgR1BJTworICBsaW5lcywgZ2l2aW5nIHlvdSB0aGUgTEVEIHN5c2ZzIGludGVyZmFjZQorCistIGxlZHRyaWctZ3BpbzogZHJpdmVycy9sZWRzL3RyaWdnZXIvbGVkdHJpZy1ncGlvLmMgd2lsbCBwcm92aWRlIGEgTEVEIHRyaWdnZXIsCisgIGkuZS4gYSBMRUQgd2lsbCB0dXJuIG9uL29mZiBpbiByZXNwb25zZSB0byBhIEdQSU8gbGluZSBnb2luZyBoaWdoIG9yIGxvdworICAoYW5kIHRoYXQgTEVEIG1heSBpbiB0dXJuIHVzZSB0aGUgbGVkcy1ncGlvIGFzIHBlciBhYm92ZSkuCisKKy0gZ3Bpby1rZXlzOiBkcml2ZXJzL2lucHV0L2tleWJvYXJkL2dwaW9fa2V5cy5jIGlzIHVzZWQgd2hlbiB5b3VyIEdQSU8gbGluZQorICBjYW4gZ2VuZXJhdGUgaW50ZXJydXB0cyBpbiByZXNwb25zZSB0byBhIGtleSBwcmVzcy4gQWxzbyBzdXBwb3J0cyBkZWJvdW5jZS4KKworLSBncGlvLWtleXMtcG9sbGVkOiBkcml2ZXJzL2lucHV0L2tleWJvYXJkL2dwaW9fa2V5c19wb2xsZWQuYyBpcyB1c2VkIHdoZW4geW91cgorICBHUElPIGxpbmUgY2Fubm90IGdlbmVyYXRlIGludGVycnVwdHMsIHNvIGl0IG5lZWRzIHRvIGJlIHBlcmlvZGljYWxseSBwb2xsZWQKKyAgYnkgYSB0aW1lci4KKworLSBncGlvX21vdXNlOiBkcml2ZXJzL2lucHV0L21vdXNlL2dwaW9fbW91c2UuYyBpcyB1c2VkIHRvIHByb3ZpZGUgYSBtb3VzZSB3aXRoCisgIHVwIHRvIHRocmVlIGJ1dHRvbnMgYnkgc2ltcGx5IHVzaW5nIEdQSU9zIGFuZCBubyBtb3VzZSBwb3J0LiBZb3UgY2FuIGN1dCB0aGUKKyAgbW91c2UgY2FibGUgYW5kIGNvbm5lY3QgdGhlIHdpcmVzIHRvIEdQSU8gbGluZXMgb3Igc29sZGVyIGEgbW91c2UgY29ubmVjdG9yCisgIHRvIHRoZSBsaW5lcyBmb3IgYSBtb3JlIHBlcm1hbmVudCBzb2x1dGlvbiBvZiB0aGlzIHR5cGUuCisKKy0gZ3Bpby1iZWVwZXI6IGRyaXZlcnMvaW5wdXQvbWlzYy9ncGlvLWJlZXBlci5jIGlzIHVzZWQgdG8gcHJvdmlkZSBhIGJlZXAgZnJvbQorICBhbiBleHRlcm5hbCBzcGVha2VyIGNvbm5lY3RlZCB0byBhIEdQSU8gbGluZS4KKworLSBncGlvLXRpbHQtcG9sbGVkOiBkcml2ZXJzL2lucHV0L21pc2MvZ3Bpb190aWx0X3BvbGxlZC5jIHByb3ZpZGVzIHRpbHQKKyAgZGV0ZWN0aW9uIHN3aXRjaGVzIHVzaW5nIEdQSU8sIHdoaWNoIGlzIHVzZWZ1bCBmb3IgeW91ciBob21lYnJld24gcGluYmFsbAorICBtYWNoaW5lIGlmIGZvciBub3RoaW5nIGVsc2UuIEl0IGNhbiBkZXRlY3QgZGlmZmVyZW50IHRpbHQgYW5nbGVzIG9mIHRoZQorICBtb25pdG9yZWQgb2JqZWN0LgorCistIGV4dGNvbi1ncGlvOiBkcml2ZXJzL2V4dGNvbi9leHRjb24tZ3Bpby5jIGlzIHVzZWQgd2hlbiB5b3UgbmVlZCB0byByZWFkIGFuCisgIGV4dGVybmFsIGNvbm5lY3RvciBzdGF0dXMsIHN1Y2ggYXMgYSBoZWFkc2V0IGxpbmUgZm9yIGFuIGF1ZGlvIGRyaXZlciBvciBhbgorICBIRE1JIGNvbm5lY3Rvci4gSXQgd2lsbCBwcm92aWRlIGEgYmV0dGVyIHVzZXJzcGFjZSBzeXNmcyBpbnRlcmZhY2UgdGhhbiBHUElPLgorCistIHJlc3RhcnQtZ3BpbzogZHJpdmVycy9wb3dlci9ncGlvLXJlc3RhcnQuYyBpcyB1c2VkIHRvIHJlc3RhcnQvcmVib290IHRoZQorICBzeXN0ZW0gYnkgcHVsbGluZyBhIEdQSU8gbGluZSBhbmQgd2lsbCByZWdpc3RlciBhIHJlc3RhcnQgaGFuZGxlciBzbworICB1c2Vyc3BhY2UgY2FuIGlzc3VlIHRoZSByaWdodCBzeXN0ZW0gY2FsbCB0byByZXN0YXJ0IHRoZSBzeXN0ZW0uCisKKy0gcG93ZXJvZmYtZ3BpbzogZHJpdmVycy9wb3dlci9ncGlvLXBvd2Vyb2ZmLmMgaXMgdXNlZCB0byBwb3dlciB0aGUgc3lzdGVtIGRvd24KKyAgYnkgcHVsbGluZyBhIEdQSU8gbGluZSBhbmQgd2lsbCByZWdpc3RlciBhIHBtX3Bvd2VyX29mZigpIGNhbGxiYWNrIHNvIHRoYXQKKyAgdXNlcnNwYWNlIGNhbiBpc3N1ZSB0aGUgcmlnaHQgc3lzdGVtIGNhbGwgdG8gcG93ZXIgZG93biB0aGUgc3lzdGVtLgorCistIGdwaW8tZ2F0ZS1jbG9jazogZHJpdmVycy9jbGsvY2xrLWdwaW8tZ2F0ZS5jIGlzIHVzZWQgdG8gY29udHJvbCBhIGdhdGVkIGNsb2NrCisgIChvZmYvb24pIHRoYXQgdXNlcyBhIEdQSU8sIGFuZCBpbnRlZ3JhdGVkIHdpdGggdGhlIGNsb2NrIHN1YnN5c3RlbS4KKworLSBpMmMtZ3BpbzogZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1ncGlvLmMgaXMgdXNlZCB0byBkcml2ZSBhbiBJMkMgYnVzCisgICh0d28gd2lyZXMsIFNEQSBhbmQgU0NMIGxpbmVzKSBieSBoYW1tZXJpbmcgKGJpdGJhbmcpIHR3byBHUElPIGxpbmVzLiBJdCB3aWxsCisgIGFwcGVhciBhcyBhbnkgb3RoZXIgSTJDIGJ1cyB0byB0aGUgc3lzdGVtIGFuZCBtYWtlcyBpdCBwb3NzaWJsZSB0byBjb25uZWN0CisgIGRyaXZlcnMgZm9yIHRoZSBJMkMgZGV2aWNlcyBvbiB0aGUgYnVzIGxpa2UgYW55IG90aGVyIEkyQyBidXMgZHJpdmVyLgorCistIHNwaV9ncGlvOiBkcml2ZXJzL3NwaS9zcGktZ3Bpby5jIGlzIHVzZWQgdG8gZHJpdmUgYW4gU1BJIGJ1cyAodmFyaWFibGUgbnVtYmVyCisgIG9mIHdpcmVzLCBhdGxlYXN0IFNDSyBhbmQgb3B0aW9uYWxseSBNSVNPLCBNT1NJIGFuZCBjaGlwIHNlbGVjdCBsaW5lcykgdXNpbmcKKyAgR1BJTyBoYW1tZXJpbmcgKGJpdGJhbmcpLiBJdCB3aWxsIGFwcGVhciBhcyBhbnkgb3RoZXIgU1BJIGJ1cyBvbiB0aGUgc3lzdGVtCisgIGFuZCBtYWtlcyBpdCBwb3NzaWJsZSB0byBjb25uZWN0IGRyaXZlcnMgZm9yIFNQSSBkZXZpY2VzIG9uIHRoZSBidXMgbGlrZQorICBhbnkgb3RoZXIgU1BJIGJ1cyBkcml2ZXIuIEZvciBleGFtcGxlIGFueSBNTUMvU0QgY2FyZCBjYW4gdGhlbiBiZSBjb25uZWN0ZWQKKyAgdG8gdGhpcyBTUEkgYnkgdXNpbmcgdGhlIG1tY19zcGkgaG9zdCBmcm9tIHRoZSBNTUMvU0QgY2FyZCBzdWJzeXN0ZW0uCisKKy0gdzEtZ3BpbzogZHJpdmVycy93MS9tYXN0ZXJzL3cxLWdwaW8uYyBpcyB1c2VkIHRvIGRyaXZlIGEgb25lLXdpcmUgYnVzIHVzaW5nCisgIGEgR1BJTyBsaW5lLCBpbnRlZ3JhdGluZyB3aXRoIHRoZSBXMSBzdWJzeXN0ZW0gYW5kIGhhbmRsaW5nIGRldmljZXMgb24KKyAgdGhlIGJ1cyBsaWtlIGFueSBvdGhlciBXMSBkZXZpY2UuCisKKy0gZ3Bpby1mYW46IGRyaXZlcnMvaHdtb24vZ3Bpby1mYW4uYyBpcyB1c2VkIHRvIGNvbnRyb2wgYSBmYW4gZm9yIGNvb2xpbmcgdGhlCisgIHN5c3RlbSwgY29ubmVjdGVkIHRvIGEgR1BJTyBsaW5lIChhbmQgb3B0aW9uYWxseSBhIEdQSU8gYWxhcm0gbGluZSksCisgIHByZXNlbnRpbmcgYWxsIHRoZSByaWdodCBpbi1rZXJuZWwgYW5kIHN5c2ZzIGludGVyZmFjZXMgdG8gbWFrZSB5b3VyIHN5c3RlbQorICBub3Qgb3ZlcmhlYXQuCisKKy0gZ3Bpby1yZWd1bGF0b3I6IGRyaXZlcnMvcmVndWxhdG9yL2dwaW8tcmVndWxhdG9yLmMgaXMgdXNlZCB0byBjb250cm9sIGEKKyAgcmVndWxhdG9yIHByb3ZpZGluZyBhIGNlcnRhaW4gdm9sdGFnZSBieSBwdWxsaW5nIGEgR1BJTyBsaW5lLCBpbnRlZ3JhdGluZworICB3aXRoIHRoZSByZWd1bGF0b3Igc3Vic3lzdGVtIGFuZCBnaXZpbmcgeW91IGFsbCB0aGUgcmlnaHQgaW50ZXJmYWNlcy4KKworLSBncGlvLXdkdDogZHJpdmVycy93YXRjaGRvZy9ncGlvX3dkdC5jIGlzIHVzZWQgdG8gcHJvdmlkZSBhIHdhdGNoZG9nIHRpbWVyCisgIHRoYXQgd2lsbCBwZXJpb2RpY2FsbHkgInBpbmciIGEgaGFyZHdhcmUgY29ubmVjdGVkIHRvIGEgR1BJTyBsaW5lIGJ5IHRvZ2dsaW5nCisgIGl0IGZyb20gMS10by0wLXRvLTEuIElmIHRoYXQgaGFyZHdhcmUgZG9lcyBub3QgcmVjaWV2ZSBpdHMgInBpbmciCisgIHBlcmlvZGljYWxseSwgaXQgd2lsbCByZXNldCB0aGUgc3lzdGVtLgorCistIGdwaW8tbmFuZDogZHJpdmVycy9tdGQvbmFuZC9ncGlvLmMgaXMgdXNlZCB0byBjb25uZWN0IGEgTkFORCBmbGFzaCBjaGlwIHRvCisgIGEgc2V0IG9mIHNpbXBsZSBHUElPIGxpbmVzOiBSRFksIE5DRSwgQUxFLCBDTEUsIE5XUC4gSXQgaW50ZXJhY3RzIHdpdGggdGhlCisgIE5BTkQgZmxhc2ggTVREIHN1YnN5c3RlbSBhbmQgcHJvdmlkZXMgY2hpcCBhY2Nlc3MgYW5kIHBhcnRpdGlvbiBwYXJzaW5nIGxpa2UKKyAgYW55IG90aGVyIE5BTkQgZHJpdmluZyBoYXJkd2FyZS4KKworQXBhcnQgZnJvbSB0aGlzIHRoZXJlIGFyZSBzcGVjaWFsIEdQSU8gZHJpdmVycyBpbiBzdWJzeXN0ZW1zIGxpa2UgTU1DL1NEIHRvCityZWFkIGNhcmQgZGV0ZWN0IGFuZCB3cml0ZSBwcm90ZWN0IEdQSU8gbGluZXMsIGFuZCBpbiB0aGUgVFRZIHNlcmlhbCBzdWJzeXN0ZW0KK3RvIGVtdWxhdGUgTUNUUkwgKG1vZGVtIGNvbnRyb2wpIHNpZ25hbHMgQ1RTL1JUUyBieSB1c2luZyB0d28gR1BJTyBsaW5lcy4gVGhlCitNVEQgTk9SIGZsYXNoIGhhcyBhZGQtb25zIGZvciBleHRyYSBHUElPIGxpbmVzIHRvbywgdGhvdWdoIHRoZSBhZGRyZXNzIGJ1cyBpcwordXN1YWxseSBjb25uZWN0ZWQgZGlyZWN0bHkgdG8gdGhlIGZsYXNoLgorCitVc2UgdGhvc2UgaW5zdGVhZCBvZiB0YWxraW5nIGRpcmVjdGx5IHRvIHRoZSBHUElPcyB1c2luZyBzeXNmczsgdGhleSBpbnRlZ3JhdGUKK3dpdGgga2VybmVsIGZyYW1ld29ya3MgYmV0dGVyIHRoYW4geW91ciB1c2Vyc3BhY2UgY29kZSBjb3VsZC4gTmVlZGxlc3MgdG8gc2F5LAoranVzdCB1c2luZyB0aGUgYXByb3ByaWF0ZSBrZXJuZWwgZHJpdmVycyB3aWxsIHNpbXBsaWZ5IGFuZCBzcGVlZCB1cCB5b3VyCitlbWJlZGRlZCBoYWNraW5nIGluIHBhcnRpY3VsYXIgYnkgcHJvdmlkaW5nIHJlYWR5LW1hZGUgY29tcG9uZW50cy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3Bpby9ncGlvLWxlZ2FjeS50eHQgYi9Eb2N1bWVudGF0aW9uL2dwaW8vZ3Bpby1sZWdhY3kudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5YWI1NjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2dwaW8vZ3Bpby1sZWdhY3kudHh0CkBAIC0wLDAgKzEsNzY2IEBACitHUElPIEludGVyZmFjZXMKKworVGhpcyBwcm92aWRlcyBhbiBvdmVydmlldyBvZiBHUElPIGFjY2VzcyBjb252ZW50aW9ucyBvbiBMaW51eC4KKworVGhlc2UgY2FsbHMgdXNlIHRoZSBncGlvXyogbmFtaW5nIHByZWZpeC4gIE5vIG90aGVyIGNhbGxzIHNob3VsZCB1c2UgdGhhdAorcHJlZml4LCBvciB0aGUgcmVsYXRlZCBfX2dwaW9fKiBwcmVmaXguCisKKworV2hhdCBpcyBhIEdQSU8/Cis9PT09PT09PT09PT09PT0KK0EgIkdlbmVyYWwgUHVycG9zZSBJbnB1dC9PdXRwdXQiIChHUElPKSBpcyBhIGZsZXhpYmxlIHNvZnR3YXJlLWNvbnRyb2xsZWQKK2RpZ2l0YWwgc2lnbmFsLiAgVGhleSBhcmUgcHJvdmlkZWQgZnJvbSBtYW55IGtpbmRzIG9mIGNoaXAsIGFuZCBhcmUgZmFtaWxpYXIKK3RvIExpbnV4IGRldmVsb3BlcnMgd29ya2luZyB3aXRoIGVtYmVkZGVkIGFuZCBjdXN0b20gaGFyZHdhcmUuICBFYWNoIEdQSU8KK3JlcHJlc2VudHMgYSBiaXQgY29ubmVjdGVkIHRvIGEgcGFydGljdWxhciBwaW4sIG9yICJiYWxsIiBvbiBCYWxsIEdyaWQgQXJyYXkKKyhCR0EpIHBhY2thZ2VzLiAgQm9hcmQgc2NoZW1hdGljcyBzaG93IHdoaWNoIGV4dGVybmFsIGhhcmR3YXJlIGNvbm5lY3RzIHRvCit3aGljaCBHUElPcy4gIERyaXZlcnMgY2FuIGJlIHdyaXR0ZW4gZ2VuZXJpY2FsbHksIHNvIHRoYXQgYm9hcmQgc2V0dXAgY29kZQorcGFzc2VzIHN1Y2ggcGluIGNvbmZpZ3VyYXRpb24gZGF0YSB0byBkcml2ZXJzLgorCitTeXN0ZW0tb24tQ2hpcCAoU09DKSBwcm9jZXNzb3JzIGhlYXZpbHkgcmVseSBvbiBHUElPcy4gIEluIHNvbWUgY2FzZXMsIGV2ZXJ5Citub24tZGVkaWNhdGVkIHBpbiBjYW4gYmUgY29uZmlndXJlZCBhcyBhIEdQSU87IGFuZCBtb3N0IGNoaXBzIGhhdmUgYXQgbGVhc3QKK3NldmVyYWwgZG96ZW4gb2YgdGhlbS4gIFByb2dyYW1tYWJsZSBsb2dpYyBkZXZpY2VzIChsaWtlIEZQR0FzKSBjYW4gZWFzaWx5Citwcm92aWRlIEdQSU9zOyBtdWx0aWZ1bmN0aW9uIGNoaXBzIGxpa2UgcG93ZXIgbWFuYWdlcnMsIGFuZCBhdWRpbyBjb2RlY3MKK29mdGVuIGhhdmUgYSBmZXcgc3VjaCBwaW5zIHRvIGhlbHAgd2l0aCBwaW4gc2NhcmNpdHkgb24gU09DczsgYW5kIHRoZXJlIGFyZQorYWxzbyAiR1BJTyBFeHBhbmRlciIgY2hpcHMgdGhhdCBjb25uZWN0IHVzaW5nIHRoZSBJMkMgb3IgU1BJIHNlcmlhbCBidXNzZXMuCitNb3N0IFBDIHNvdXRoYnJpZGdlcyBoYXZlIGEgZmV3IGRvemVuIEdQSU8tY2FwYWJsZSBwaW5zICh3aXRoIG9ubHkgdGhlIEJJT1MKK2Zpcm13YXJlIGtub3dpbmcgaG93IHRoZXkncmUgdXNlZCkuCisKK1RoZSBleGFjdCBjYXBhYmlsaXRpZXMgb2YgR1BJT3MgdmFyeSBiZXR3ZWVuIHN5c3RlbXMuICBDb21tb24gb3B0aW9uczoKKworICAtIE91dHB1dCB2YWx1ZXMgYXJlIHdyaXRhYmxlIChoaWdoPTEsIGxvdz0wKS4gIFNvbWUgY2hpcHMgYWxzbyBoYXZlCisgICAgb3B0aW9ucyBhYm91dCBob3cgdGhhdCB2YWx1ZSBpcyBkcml2ZW4sIHNvIHRoYXQgZm9yIGV4YW1wbGUgb25seSBvbmUKKyAgICB2YWx1ZSBtaWdodCBiZSBkcml2ZW4gLi4uIHN1cHBvcnRpbmcgIndpcmUtT1IiIGFuZCBzaW1pbGFyIHNjaGVtZXMKKyAgICBmb3IgdGhlIG90aGVyIHZhbHVlIChub3RhYmx5LCAib3BlbiBkcmFpbiIgc2lnbmFsaW5nKS4KKworICAtIElucHV0IHZhbHVlcyBhcmUgbGlrZXdpc2UgcmVhZGFibGUgKDEsIDApLiAgU29tZSBjaGlwcyBzdXBwb3J0IHJlYWRiYWNrCisgICAgb2YgcGlucyBjb25maWd1cmVkIGFzICJvdXRwdXQiLCB3aGljaCBpcyB2ZXJ5IHVzZWZ1bCBpbiBzdWNoICJ3aXJlLU9SIgorICAgIGNhc2VzICh0byBzdXBwb3J0IGJpZGlyZWN0aW9uYWwgc2lnbmFsaW5nKS4gIEdQSU8gY29udHJvbGxlcnMgbWF5IGhhdmUKKyAgICBpbnB1dCBkZS1nbGl0Y2gvZGVib3VuY2UgbG9naWMsIHNvbWV0aW1lcyB3aXRoIHNvZnR3YXJlIGNvbnRyb2xzLgorCisgIC0gSW5wdXRzIGNhbiBvZnRlbiBiZSB1c2VkIGFzIElSUSBzaWduYWxzLCBvZnRlbiBlZGdlIHRyaWdnZXJlZCBidXQKKyAgICBzb21ldGltZXMgbGV2ZWwgdHJpZ2dlcmVkLiAgU3VjaCBJUlFzIG1heSBiZSBjb25maWd1cmFibGUgYXMgc3lzdGVtCisgICAgd2FrZXVwIGV2ZW50cywgdG8gd2FrZSB0aGUgc3lzdGVtIGZyb20gYSBsb3cgcG93ZXIgc3RhdGUuCisKKyAgLSBVc3VhbGx5IGEgR1BJTyB3aWxsIGJlIGNvbmZpZ3VyYWJsZSBhcyBlaXRoZXIgaW5wdXQgb3Igb3V0cHV0LCBhcyBuZWVkZWQKKyAgICBieSBkaWZmZXJlbnQgcHJvZHVjdCBib2FyZHM7IHNpbmdsZSBkaXJlY3Rpb24gb25lcyBleGlzdCB0b28uCisKKyAgLSBNb3N0IEdQSU9zIGNhbiBiZSBhY2Nlc3NlZCB3aGlsZSBob2xkaW5nIHNwaW5sb2NrcywgYnV0IHRob3NlIGFjY2Vzc2VkCisgICAgdGhyb3VnaCBhIHNlcmlhbCBidXMgbm9ybWFsbHkgY2FuJ3QuICBTb21lIHN5c3RlbXMgc3VwcG9ydCBib3RoIHR5cGVzLgorCitPbiBhIGdpdmVuIGJvYXJkIGVhY2ggR1BJTyBpcyB1c2VkIGZvciBvbmUgc3BlY2lmaWMgcHVycG9zZSBsaWtlIG1vbml0b3JpbmcKK01NQy9TRCBjYXJkIGluc2VydGlvbi9yZW1vdmFsLCBkZXRlY3RpbmcgY2FyZCB3cml0ZXByb3RlY3Qgc3RhdHVzLCBkcml2aW5nCithIExFRCwgY29uZmlndXJpbmcgYSB0cmFuc2NlaXZlciwgYml0YmFuZ2luZyBhIHNlcmlhbCBidXMsIHBva2luZyBhIGhhcmR3YXJlCit3YXRjaGRvZywgc2Vuc2luZyBhIHN3aXRjaCwgYW5kIHNvIG9uLgorCisKK0dQSU8gY29udmVudGlvbnMKKz09PT09PT09PT09PT09PT0KK05vdGUgdGhhdCB0aGlzIGlzIGNhbGxlZCBhICJjb252ZW50aW9uIiBiZWNhdXNlIHlvdSBkb24ndCBuZWVkIHRvIGRvIGl0IHRoaXMKK3dheSwgYW5kIGl0J3Mgbm8gY3JpbWUgaWYgeW91IGRvbid0LiAgVGhlcmUgKiphcmUqKiBjYXNlcyB3aGVyZSBwb3J0YWJpbGl0eQoraXMgbm90IHRoZSBtYWluIGlzc3VlOyBHUElPcyBhcmUgb2Z0ZW4gdXNlZCBmb3IgdGhlIGtpbmQgb2YgYm9hcmQtc3BlY2lmaWMKK2dsdWUgbG9naWMgdGhhdCBtYXkgZXZlbiBjaGFuZ2UgYmV0d2VlbiBib2FyZCByZXZpc2lvbnMsIGFuZCBjYW4ndCBldmVyIGJlCit1c2VkIG9uIGEgYm9hcmQgdGhhdCdzIHdpcmVkIGRpZmZlcmVudGx5LiAgT25seSBsZWFzdC1jb21tb24tZGVub21pbmF0b3IKK2Z1bmN0aW9uYWxpdHkgY2FuIGJlIHZlcnkgcG9ydGFibGUuICBPdGhlciBmZWF0dXJlcyBhcmUgcGxhdGZvcm0tc3BlY2lmaWMsCithbmQgdGhhdCBjYW4gYmUgY3JpdGljYWwgZm9yIGdsdWUgbG9naWMuCisKK1BsdXMsIHRoaXMgZG9lc24ndCByZXF1aXJlIGFueSBpbXBsZW1lbnRhdGlvbiBmcmFtZXdvcmssIGp1c3QgYW4gaW50ZXJmYWNlLgorT25lIHBsYXRmb3JtIG1pZ2h0IGltcGxlbWVudCBpdCBhcyBzaW1wbGUgaW5saW5lIGZ1bmN0aW9ucyBhY2Nlc3NpbmcgY2hpcAorcmVnaXN0ZXJzOyBhbm90aGVyIG1pZ2h0IGltcGxlbWVudCBpdCBieSBkZWxlZ2F0aW5nIHRocm91Z2ggYWJzdHJhY3Rpb25zCit1c2VkIGZvciBzZXZlcmFsIHZlcnkgZGlmZmVyZW50IGtpbmRzIG9mIEdQSU8gY29udHJvbGxlci4gIChUaGVyZSBpcyBzb21lCitvcHRpb25hbCBjb2RlIHN1cHBvcnRpbmcgc3VjaCBhbiBpbXBsZW1lbnRhdGlvbiBzdHJhdGVneSwgZGVzY3JpYmVkIGxhdGVyCitpbiB0aGlzIGRvY3VtZW50LCBidXQgZHJpdmVycyBhY3RpbmcgYXMgY2xpZW50cyB0byB0aGUgR1BJTyBpbnRlcmZhY2UgbXVzdAorbm90IGNhcmUgaG93IGl0J3MgaW1wbGVtZW50ZWQuKQorCitUaGF0IHNhaWQsIGlmIHRoZSBjb252ZW50aW9uIGlzIHN1cHBvcnRlZCBvbiB0aGVpciBwbGF0Zm9ybSwgZHJpdmVycyBzaG91bGQKK3VzZSBpdCB3aGVuIHBvc3NpYmxlLiAgUGxhdGZvcm1zIG11c3Qgc2VsZWN0IEFSQ0hfUkVRVUlSRV9HUElPTElCIG9yCitBUkNIX1dBTlRfT1BUSU9OQUxfR1BJT0xJQiBpbiB0aGVpciBLY29uZmlnLiAgRHJpdmVycyB0aGF0IGNhbid0IHdvcmsgd2l0aG91dAorc3RhbmRhcmQgR1BJTyBjYWxscyBzaG91bGQgaGF2ZSBLY29uZmlnIGVudHJpZXMgd2hpY2ggZGVwZW5kIG9uIEdQSU9MSUIuICBUaGUKK0dQSU8gY2FsbHMgYXJlIGF2YWlsYWJsZSwgZWl0aGVyIGFzICJyZWFsIGNvZGUiIG9yIGFzIG9wdGltaXplZC1hd2F5IHN0dWJzLAord2hlbiBkcml2ZXJzIHVzZSB0aGUgaW5jbHVkZSBmaWxlOgorCisJI2luY2x1ZGUgPGxpbnV4L2dwaW8uaD4KKworSWYgeW91IHN0aWNrIHRvIHRoaXMgY29udmVudGlvbiB0aGVuIGl0J2xsIGJlIGVhc2llciBmb3Igb3RoZXIgZGV2ZWxvcGVycyB0bworc2VlIHdoYXQgeW91ciBjb2RlIGlzIGRvaW5nLCBhbmQgaGVscCBtYWludGFpbiBpdC4KKworTm90ZSB0aGF0IHRoZXNlIG9wZXJhdGlvbnMgaW5jbHVkZSBJL08gYmFycmllcnMgb24gcGxhdGZvcm1zIHdoaWNoIG5lZWQgdG8KK3VzZSB0aGVtOyBkcml2ZXJzIGRvbid0IG5lZWQgdG8gYWRkIHRoZW0gZXhwbGljaXRseS4KKworCitJZGVudGlmeWluZyBHUElPcworLS0tLS0tLS0tLS0tLS0tLS0KK0dQSU9zIGFyZSBpZGVudGlmaWVkIGJ5IHVuc2lnbmVkIGludGVnZXJzIGluIHRoZSByYW5nZSAwLi5NQVhfSU5ULiAgVGhhdAorcmVzZXJ2ZXMgIm5lZ2F0aXZlIiBudW1iZXJzIGZvciBvdGhlciBwdXJwb3NlcyBsaWtlIG1hcmtpbmcgc2lnbmFscyBhcworIm5vdCBhdmFpbGFibGUgb24gdGhpcyBib2FyZCIsIG9yIGluZGljYXRpbmcgZmF1bHRzLiAgQ29kZSB0aGF0IGRvZXNuJ3QKK3RvdWNoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIHRyZWF0cyB0aGVzZSBpbnRlZ2VycyBhcyBvcGFxdWUgY29va2llcy4KKworUGxhdGZvcm1zIGRlZmluZSBob3cgdGhleSB1c2UgdGhvc2UgaW50ZWdlcnMsIGFuZCB1c3VhbGx5ICNkZWZpbmUgc3ltYm9scworZm9yIHRoZSBHUElPIGxpbmVzIHNvIHRoYXQgYm9hcmQtc3BlY2lmaWMgc2V0dXAgY29kZSBkaXJlY3RseSBjb3JyZXNwb25kcwordG8gdGhlIHJlbGV2YW50IHNjaGVtYXRpY3MuICBJbiBjb250cmFzdCwgZHJpdmVycyBzaG91bGQgb25seSB1c2UgR1BJTworbnVtYmVycyBwYXNzZWQgdG8gdGhlbSBmcm9tIHRoYXQgc2V0dXAgY29kZSwgdXNpbmcgcGxhdGZvcm1fZGF0YSB0byBob2xkCitib2FyZC1zcGVjaWZpYyBwaW4gY29uZmlndXJhdGlvbiBkYXRhIChhbG9uZyB3aXRoIG90aGVyIGJvYXJkIHNwZWNpZmljCitkYXRhIHRoZXkgbmVlZCkuICBUaGF0IGF2b2lkcyBwb3J0YWJpbGl0eSBwcm9ibGVtcy4KKworU28gZm9yIGV4YW1wbGUgb25lIHBsYXRmb3JtIHVzZXMgbnVtYmVycyAzMi0xNTkgZm9yIEdQSU9zOyB3aGlsZSBhbm90aGVyCit1c2VzIG51bWJlcnMgMC4uNjMgd2l0aCBvbmUgc2V0IG9mIEdQSU8gY29udHJvbGxlcnMsIDY0LTc5IHdpdGggYW5vdGhlcgordHlwZSBvZiBHUElPIGNvbnRyb2xsZXIsIGFuZCBvbiBvbmUgcGFydGljdWxhciBib2FyZCA4MC05NSB3aXRoIGFuIEZQR0EuCitUaGUgbnVtYmVycyBuZWVkIG5vdCBiZSBjb250aWd1b3VzOyBlaXRoZXIgb2YgdGhvc2UgcGxhdGZvcm1zIGNvdWxkIGFsc28KK3VzZSBudW1iZXJzIDIwMDAtMjA2MyB0byBpZGVudGlmeSBHUElPcyBpbiBhIGJhbmsgb2YgSTJDIEdQSU8gZXhwYW5kZXJzLgorCitJZiB5b3Ugd2FudCB0byBpbml0aWFsaXplIGEgc3RydWN0dXJlIHdpdGggYW4gaW52YWxpZCBHUElPIG51bWJlciwgdXNlCitzb21lIG5lZ2F0aXZlIG51bWJlciAocGVyaGFwcyAiLUVJTlZBTCIpOyB0aGF0IHdpbGwgbmV2ZXIgYmUgdmFsaWQuICBUbwordGVzdCBpZiBzdWNoIG51bWJlciBmcm9tIHN1Y2ggYSBzdHJ1Y3R1cmUgY291bGQgcmVmZXJlbmNlIGEgR1BJTywgeW91CittYXkgdXNlIHRoaXMgcHJlZGljYXRlOgorCisJaW50IGdwaW9faXNfdmFsaWQoaW50IG51bWJlcik7CisKK0EgbnVtYmVyIHRoYXQncyBub3QgdmFsaWQgd2lsbCBiZSByZWplY3RlZCBieSBjYWxscyB3aGljaCBtYXkgcmVxdWVzdAorb3IgZnJlZSBHUElPcyAoc2VlIGJlbG93KS4gIE90aGVyIG51bWJlcnMgbWF5IGFsc28gYmUgcmVqZWN0ZWQ7IGZvcgorZXhhbXBsZSwgYSBudW1iZXIgbWlnaHQgYmUgdmFsaWQgYnV0IHRlbXBvcmFyaWx5IHVudXNlZCBvbiBhIGdpdmVuIGJvYXJkLgorCitXaGV0aGVyIGEgcGxhdGZvcm0gc3VwcG9ydHMgbXVsdGlwbGUgR1BJTyBjb250cm9sbGVycyBpcyBhIHBsYXRmb3JtLXNwZWNpZmljCitpbXBsZW1lbnRhdGlvbiBpc3N1ZSwgYXMgYXJlIHdoZXRoZXIgdGhhdCBzdXBwb3J0IGNhbiBsZWF2ZSAiaG9sZXMiIGluIHRoZSBzcGFjZQorb2YgR1BJTyBudW1iZXJzLCBhbmQgd2hldGhlciBuZXcgY29udHJvbGxlcnMgY2FuIGJlIGFkZGVkIGF0IHJ1bnRpbWUuICBTdWNoIGlzc3VlcworY2FuIGFmZmVjdCB0aGluZ3MgaW5jbHVkaW5nIHdoZXRoZXIgYWRqYWNlbnQgR1BJTyBudW1iZXJzIGFyZSBib3RoIHZhbGlkLgorCitVc2luZyBHUElPcworLS0tLS0tLS0tLS0KK1RoZSBmaXJzdCB0aGluZyBhIHN5c3RlbSBzaG91bGQgZG8gd2l0aCBhIEdQSU8gaXMgYWxsb2NhdGUgaXQsIHVzaW5nCit0aGUgZ3Bpb19yZXF1ZXN0KCkgY2FsbDsgc2VlIGxhdGVyLgorCitPbmUgb2YgdGhlIG5leHQgdGhpbmdzIHRvIGRvIHdpdGggYSBHUElPLCBvZnRlbiBpbiBib2FyZCBzZXR1cCBjb2RlIHdoZW4KK3NldHRpbmcgdXAgYSBwbGF0Zm9ybV9kZXZpY2UgdXNpbmcgdGhlIEdQSU8sIGlzIG1hcmsgaXRzIGRpcmVjdGlvbjoKKworCS8qIHNldCBhcyBpbnB1dCBvciBvdXRwdXQsIHJldHVybmluZyAwIG9yIG5lZ2F0aXZlIGVycm5vICovCisJaW50IGdwaW9fZGlyZWN0aW9uX2lucHV0KHVuc2lnbmVkIGdwaW8pOworCWludCBncGlvX2RpcmVjdGlvbl9vdXRwdXQodW5zaWduZWQgZ3BpbywgaW50IHZhbHVlKTsKKworVGhlIHJldHVybiB2YWx1ZSBpcyB6ZXJvIGZvciBzdWNjZXNzLCBlbHNlIGEgbmVnYXRpdmUgZXJybm8uICBJdCBzaG91bGQKK2JlIGNoZWNrZWQsIHNpbmNlIHRoZSBnZXQvc2V0IGNhbGxzIGRvbid0IGhhdmUgZXJyb3IgcmV0dXJucyBhbmQgc2luY2UKK21pc2NvbmZpZ3VyYXRpb24gaXMgcG9zc2libGUuICBZb3Ugc2hvdWxkIG5vcm1hbGx5IGlzc3VlIHRoZXNlIGNhbGxzIGZyb20KK2EgdGFzayBjb250ZXh0LiAgSG93ZXZlciwgZm9yIHNwaW5sb2NrLXNhZmUgR1BJT3MgaXQncyBPSyB0byB1c2UgdGhlbQorYmVmb3JlIHRhc2tpbmcgaXMgZW5hYmxlZCwgYXMgcGFydCBvZiBlYXJseSBib2FyZCBzZXR1cC4KKworRm9yIG91dHB1dCBHUElPcywgdGhlIHZhbHVlIHByb3ZpZGVkIGJlY29tZXMgdGhlIGluaXRpYWwgb3V0cHV0IHZhbHVlLgorVGhpcyBoZWxwcyBhdm9pZCBzaWduYWwgZ2xpdGNoaW5nIGR1cmluZyBzeXN0ZW0gc3RhcnR1cC4KKworRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBsZWdhY3kgaW50ZXJmYWNlcyB0byBHUElPcywgc2V0dGluZyB0aGUgZGlyZWN0aW9uCitvZiBhIEdQSU8gaW1wbGljaXRseSByZXF1ZXN0cyB0aGF0IEdQSU8gKHNlZSBiZWxvdykgaWYgaXQgaGFzIG5vdCBiZWVuCityZXF1ZXN0ZWQgYWxyZWFkeS4gIFRoYXQgY29tcGF0aWJpbGl0eSBpcyBiZWluZyByZW1vdmVkIGZyb20gdGhlIG9wdGlvbmFsCitncGlvbGliIGZyYW1ld29yay4KKworU2V0dGluZyB0aGUgZGlyZWN0aW9uIGNhbiBmYWlsIGlmIHRoZSBHUElPIG51bWJlciBpcyBpbnZhbGlkLCBvciB3aGVuCit0aGF0IHBhcnRpY3VsYXIgR1BJTyBjYW4ndCBiZSB1c2VkIGluIHRoYXQgbW9kZS4gIEl0J3MgZ2VuZXJhbGx5IGEgYmFkCitpZGVhIHRvIHJlbHkgb24gYm9vdCBmaXJtd2FyZSB0byBoYXZlIHNldCB0aGUgZGlyZWN0aW9uIGNvcnJlY3RseSwgc2luY2UKK2l0IHByb2JhYmx5IHdhc24ndCB2YWxpZGF0ZWQgdG8gZG8gbW9yZSB0aGFuIGJvb3QgTGludXguICAoU2ltaWxhcmx5LAordGhhdCBib2FyZCBzZXR1cCBjb2RlIHByb2JhYmx5IG5lZWRzIHRvIG11bHRpcGxleCB0aGF0IHBpbiBhcyBhIEdQSU8sCithbmQgY29uZmlndXJlIHB1bGx1cHMvcHVsbGRvd25zIGFwcHJvcHJpYXRlbHkuKQorCisKK1NwaW5sb2NrLVNhZmUgR1BJTyBhY2Nlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK01vc3QgR1BJTyBjb250cm9sbGVycyBjYW4gYmUgYWNjZXNzZWQgd2l0aCBtZW1vcnkgcmVhZC93cml0ZSBpbnN0cnVjdGlvbnMuCitUaG9zZSBkb24ndCBuZWVkIHRvIHNsZWVwLCBhbmQgY2FuIHNhZmVseSBiZSBkb25lIGZyb20gaW5zaWRlIGhhcmQKKyhub250aHJlYWRlZCkgSVJRIGhhbmRsZXJzIGFuZCBzaW1pbGFyIGNvbnRleHRzLgorCitVc2UgdGhlIGZvbGxvd2luZyBjYWxscyB0byBhY2Nlc3Mgc3VjaCBHUElPcywKK2ZvciB3aGljaCBncGlvX2NhbnNsZWVwKCkgd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNlIChzZWUgYmVsb3cpOgorCisJLyogR1BJTyBJTlBVVDogIHJldHVybiB6ZXJvIG9yIG5vbnplcm8gKi8KKwlpbnQgZ3Bpb19nZXRfdmFsdWUodW5zaWduZWQgZ3Bpbyk7CisKKwkvKiBHUElPIE9VVFBVVCAqLworCXZvaWQgZ3Bpb19zZXRfdmFsdWUodW5zaWduZWQgZ3BpbywgaW50IHZhbHVlKTsKKworVGhlIHZhbHVlcyBhcmUgYm9vbGVhbiwgemVybyBmb3IgbG93LCBub256ZXJvIGZvciBoaWdoLiAgV2hlbiByZWFkaW5nIHRoZQordmFsdWUgb2YgYW4gb3V0cHV0IHBpbiwgdGhlIHZhbHVlIHJldHVybmVkIHNob3VsZCBiZSB3aGF0J3Mgc2VlbiBvbiB0aGUKK3BpbiAuLi4gdGhhdCB3b24ndCBhbHdheXMgbWF0Y2ggdGhlIHNwZWNpZmllZCBvdXRwdXQgdmFsdWUsIGJlY2F1c2Ugb2YKK2lzc3VlcyBpbmNsdWRpbmcgb3Blbi1kcmFpbiBzaWduYWxpbmcgYW5kIG91dHB1dCBsYXRlbmNpZXMuCisKK1RoZSBnZXQvc2V0IGNhbGxzIGhhdmUgbm8gZXJyb3IgcmV0dXJucyBiZWNhdXNlICJpbnZhbGlkIEdQSU8iIHNob3VsZCBoYXZlCitiZWVuIHJlcG9ydGVkIGVhcmxpZXIgZnJvbSBncGlvX2RpcmVjdGlvbl8qKCkuICBIb3dldmVyLCBub3RlIHRoYXQgbm90IGFsbAorcGxhdGZvcm1zIGNhbiByZWFkIHRoZSB2YWx1ZSBvZiBvdXRwdXQgcGluczsgdGhvc2UgdGhhdCBjYW4ndCBzaG91bGQgYWx3YXlzCityZXR1cm4gemVyby4gIEFsc28sIHVzaW5nIHRoZXNlIGNhbGxzIGZvciBHUElPcyB0aGF0IGNhbid0IHNhZmVseSBiZSBhY2Nlc3NlZAord2l0aG91dCBzbGVlcGluZyAoc2VlIGJlbG93KSBpcyBhbiBlcnJvci4KKworUGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIGFyZSBlbmNvdXJhZ2VkIHRvIG9wdGltaXplIHRoZSB0d28KK2NhbGxzIHRvIGFjY2VzcyB0aGUgR1BJTyB2YWx1ZSBpbiBjYXNlcyB3aGVyZSB0aGUgR1BJTyBudW1iZXIgKGFuZCBmb3IKK291dHB1dCwgdmFsdWUpIGFyZSBjb25zdGFudC4gIEl0J3Mgbm9ybWFsIGZvciB0aGVtIHRvIG5lZWQgb25seSBhIGNvdXBsZQorb2YgaW5zdHJ1Y3Rpb25zIGluIHN1Y2ggY2FzZXMgKHJlYWRpbmcgb3Igd3JpdGluZyBhIGhhcmR3YXJlIHJlZ2lzdGVyKSwKK2FuZCBub3QgdG8gbmVlZCBzcGlubG9ja3MuICBTdWNoIG9wdGltaXplZCBjYWxscyBjYW4gbWFrZSBiaXRiYW5naW5nCithcHBsaWNhdGlvbnMgYSBsb3QgbW9yZSBlZmZpY2llbnQgKGluIGJvdGggc3BhY2UgYW5kIHRpbWUpIHRoYW4gc3BlbmRpbmcKK2RvemVucyBvZiBpbnN0cnVjdGlvbnMgb24gc3Vicm91dGluZSBjYWxscy4KKworCitHUElPIGFjY2VzcyB0aGF0IG1heSBzbGVlcAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1NvbWUgR1BJTyBjb250cm9sbGVycyBtdXN0IGJlIGFjY2Vzc2VkIHVzaW5nIG1lc3NhZ2UgYmFzZWQgYnVzc2VzIGxpa2UgSTJDCitvciBTUEkuICBDb21tYW5kcyB0byByZWFkIG9yIHdyaXRlIHRob3NlIEdQSU8gdmFsdWVzIHJlcXVpcmUgd2FpdGluZyB0bworZ2V0IHRvIHRoZSBoZWFkIG9mIGEgcXVldWUgdG8gdHJhbnNtaXQgYSBjb21tYW5kIGFuZCBnZXQgaXRzIHJlc3BvbnNlLgorVGhpcyByZXF1aXJlcyBzbGVlcGluZywgd2hpY2ggY2FuJ3QgYmUgZG9uZSBmcm9tIGluc2lkZSBJUlEgaGFuZGxlcnMuCisKK1BsYXRmb3JtcyB0aGF0IHN1cHBvcnQgdGhpcyB0eXBlIG9mIEdQSU8gZGlzdGluZ3Vpc2ggdGhlbSBmcm9tIG90aGVyIEdQSU9zCitieSByZXR1cm5pbmcgbm9uemVybyBmcm9tIHRoaXMgY2FsbCAod2hpY2ggcmVxdWlyZXMgYSB2YWxpZCBHUElPIG51bWJlciwKK3doaWNoIHNob3VsZCBoYXZlIGJlZW4gcHJldmlvdXNseSBhbGxvY2F0ZWQgd2l0aCBncGlvX3JlcXVlc3QpOgorCisJaW50IGdwaW9fY2Fuc2xlZXAodW5zaWduZWQgZ3Bpbyk7CisKK1RvIGFjY2VzcyBzdWNoIEdQSU9zLCBhIGRpZmZlcmVudCBzZXQgb2YgYWNjZXNzb3JzIGlzIGRlZmluZWQ6CisKKwkvKiBHUElPIElOUFVUOiAgcmV0dXJuIHplcm8gb3Igbm9uemVybywgbWlnaHQgc2xlZXAgKi8KKwlpbnQgZ3Bpb19nZXRfdmFsdWVfY2Fuc2xlZXAodW5zaWduZWQgZ3Bpbyk7CisKKwkvKiBHUElPIE9VVFBVVCwgbWlnaHQgc2xlZXAgKi8KKwl2b2lkIGdwaW9fc2V0X3ZhbHVlX2NhbnNsZWVwKHVuc2lnbmVkIGdwaW8sIGludCB2YWx1ZSk7CisKKworQWNjZXNzaW5nIHN1Y2ggR1BJT3MgcmVxdWlyZXMgYSBjb250ZXh0IHdoaWNoIG1heSBzbGVlcCwgIGZvciBleGFtcGxlCithIHRocmVhZGVkIElSUSBoYW5kbGVyLCBhbmQgdGhvc2UgYWNjZXNzb3JzIG11c3QgYmUgdXNlZCBpbnN0ZWFkIG9mCitzcGlubG9jay1zYWZlIGFjY2Vzc29ycyB3aXRob3V0IHRoZSBjYW5zbGVlcCgpIG5hbWUgc3VmZml4LgorCitPdGhlciB0aGFuIHRoZSBmYWN0IHRoYXQgdGhlc2UgYWNjZXNzb3JzIG1pZ2h0IHNsZWVwLCBhbmQgd2lsbCB3b3JrCitvbiBHUElPcyB0aGF0IGNhbid0IGJlIGFjY2Vzc2VkIGZyb20gaGFyZElSUSBoYW5kbGVycywgdGhlc2UgY2FsbHMgYWN0Cit0aGUgc2FtZSBhcyB0aGUgc3BpbmxvY2stc2FmZSBjYWxscy4KKworICAqKiBJTiBBRERJVElPTiAqKiBjYWxscyB0byBzZXR1cCBhbmQgY29uZmlndXJlIHN1Y2ggR1BJT3MgbXVzdCBiZSBtYWRlCitmcm9tIGNvbnRleHRzIHdoaWNoIG1heSBzbGVlcCwgc2luY2UgdGhleSBtYXkgbmVlZCB0byBhY2Nlc3MgdGhlIEdQSU8KK2NvbnRyb2xsZXIgY2hpcCB0b286ICAoVGhlc2Ugc2V0dXAgY2FsbHMgYXJlIHVzdWFsbHkgbWFkZSBmcm9tIGJvYXJkCitzZXR1cCBvciBkcml2ZXIgcHJvYmUvdGVhcmRvd24gY29kZSwgc28gdGhpcyBpcyBhbiBlYXN5IGNvbnN0cmFpbnQuKQorCisJZ3Bpb19kaXJlY3Rpb25faW5wdXQoKQorCWdwaW9fZGlyZWN0aW9uX291dHB1dCgpCisJZ3Bpb19yZXF1ZXN0KCkKKworIyMgCWdwaW9fcmVxdWVzdF9vbmUoKQorIyMJZ3Bpb19yZXF1ZXN0X2FycmF5KCkKKyMjIAlncGlvX2ZyZWVfYXJyYXkoKQorCisJZ3Bpb19mcmVlKCkKKwlncGlvX3NldF9kZWJvdW5jZSgpCisKKworCitDbGFpbWluZyBhbmQgUmVsZWFzaW5nIEdQSU9zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUbyBoZWxwIGNhdGNoIHN5c3RlbSBjb25maWd1cmF0aW9uIGVycm9ycywgdHdvIGNhbGxzIGFyZSBkZWZpbmVkLgorCisJLyogcmVxdWVzdCBHUElPLCByZXR1cm5pbmcgMCBvciBuZWdhdGl2ZSBlcnJuby4KKwkgKiBub24tbnVsbCBsYWJlbHMgbWF5IGJlIHVzZWZ1bCBmb3IgZGlhZ25vc3RpY3MuCisJICovCisJaW50IGdwaW9fcmVxdWVzdCh1bnNpZ25lZCBncGlvLCBjb25zdCBjaGFyICpsYWJlbCk7CisKKwkvKiByZWxlYXNlIHByZXZpb3VzbHktY2xhaW1lZCBHUElPICovCisJdm9pZCBncGlvX2ZyZWUodW5zaWduZWQgZ3Bpbyk7CisKK1Bhc3NpbmcgaW52YWxpZCBHUElPIG51bWJlcnMgdG8gZ3Bpb19yZXF1ZXN0KCkgd2lsbCBmYWlsLCBhcyB3aWxsIHJlcXVlc3RpbmcKK0dQSU9zIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gY2xhaW1lZCB3aXRoIHRoYXQgY2FsbC4gIFRoZSByZXR1cm4gdmFsdWUgb2YKK2dwaW9fcmVxdWVzdCgpIG11c3QgYmUgY2hlY2tlZC4gIFlvdSBzaG91bGQgbm9ybWFsbHkgaXNzdWUgdGhlc2UgY2FsbHMgZnJvbQorYSB0YXNrIGNvbnRleHQuICBIb3dldmVyLCBmb3Igc3BpbmxvY2stc2FmZSBHUElPcyBpdCdzIE9LIHRvIHJlcXVlc3QgR1BJT3MKK2JlZm9yZSB0YXNraW5nIGlzIGVuYWJsZWQsIGFzIHBhcnQgb2YgZWFybHkgYm9hcmQgc2V0dXAuCisKK1RoZXNlIGNhbGxzIHNlcnZlIHR3byBiYXNpYyBwdXJwb3Nlcy4gIE9uZSBpcyBtYXJraW5nIHRoZSBzaWduYWxzIHdoaWNoCithcmUgYWN0dWFsbHkgaW4gdXNlIGFzIEdQSU9zLCBmb3IgYmV0dGVyIGRpYWdub3N0aWNzOyBzeXN0ZW1zIG1heSBoYXZlCitzZXZlcmFsIGh1bmRyZWQgcG90ZW50aWFsIEdQSU9zLCBidXQgb2Z0ZW4gb25seSBhIGRvemVuIGFyZSB1c2VkIG9uIGFueQorZ2l2ZW4gYm9hcmQuICBBbm90aGVyIGlzIHRvIGNhdGNoIGNvbmZsaWN0cywgaWRlbnRpZnlpbmcgZXJyb3JzIHdoZW4KKyhhKSB0d28gb3IgbW9yZSBkcml2ZXJzIHdyb25nbHkgdGhpbmsgdGhleSBoYXZlIGV4Y2x1c2l2ZSB1c2Ugb2YgdGhhdAorc2lnbmFsLCBvciAoYikgc29tZXRoaW5nIHdyb25nbHkgYmVsaWV2ZXMgaXQncyBzYWZlIHRvIHJlbW92ZSBkcml2ZXJzCituZWVkZWQgdG8gbWFuYWdlIGEgc2lnbmFsIHRoYXQncyBpbiBhY3RpdmUgdXNlLiAgVGhhdCBpcywgcmVxdWVzdGluZyBhCitHUElPIGNhbiBzZXJ2ZSBhcyBhIGtpbmQgb2YgbG9jay4KKworU29tZSBwbGF0Zm9ybXMgbWF5IGFsc28gdXNlIGtub3dsZWRnZSBhYm91dCB3aGF0IEdQSU9zIGFyZSBhY3RpdmUgZm9yCitwb3dlciBtYW5hZ2VtZW50LCBzdWNoIGFzIGJ5IHBvd2VyaW5nIGRvd24gdW51c2VkIGNoaXAgc2VjdG9ycyBhbmQsIG1vcmUKK2Vhc2lseSwgZ2F0aW5nIG9mZiB1bnVzZWQgY2xvY2tzLgorCitGb3IgR1BJT3MgdGhhdCB1c2UgcGlucyBrbm93biB0byB0aGUgcGluY3RybCBzdWJzeXN0ZW0sIHRoYXQgc3Vic3lzdGVtIHNob3VsZAorYmUgaW5mb3JtZWQgb2YgdGhlaXIgdXNlOyBhIGdwaW9saWIgZHJpdmVyJ3MgLnJlcXVlc3QoKSBvcGVyYXRpb24gbWF5IGNhbGwKK3BpbmN0cmxfcmVxdWVzdF9ncGlvKCksIGFuZCBhIGdwaW9saWIgZHJpdmVyJ3MgLmZyZWUoKSBvcGVyYXRpb24gbWF5IGNhbGwKK3BpbmN0cmxfZnJlZV9ncGlvKCkuIFRoZSBwaW5jdHJsIHN1YnN5c3RlbSBhbGxvd3MgYSBwaW5jdHJsX3JlcXVlc3RfZ3BpbygpCit0byBzdWNjZWVkIGNvbmN1cnJlbnRseSB3aXRoIGEgcGluIG9yIHBpbmdyb3VwIGJlaW5nICJvd25lZCIgYnkgYSBkZXZpY2UgZm9yCitwaW4gbXVsdGlwbGV4aW5nLgorCitBbnkgcHJvZ3JhbW1pbmcgb2YgcGluIG11bHRpcGxleGluZyBoYXJkd2FyZSB0aGF0IGlzIG5lZWRlZCB0byByb3V0ZSB0aGUKK0dQSU8gc2lnbmFsIHRvIHRoZSBhcHByb3ByaWF0ZSBwaW4gc2hvdWxkIG9jY3VyIHdpdGhpbiBhIEdQSU8gZHJpdmVyJ3MKKy5kaXJlY3Rpb25faW5wdXQoKSBvciAuZGlyZWN0aW9uX291dHB1dCgpIG9wZXJhdGlvbnMsIGFuZCBvY2N1ciBhZnRlciBhbnkKK3NldHVwIG9mIGFuIG91dHB1dCBHUElPJ3MgdmFsdWUuIFRoaXMgYWxsb3dzIGEgZ2xpdGNoLWZyZWUgbWlncmF0aW9uIGZyb20gYQorcGluJ3Mgc3BlY2lhbCBmdW5jdGlvbiB0byBHUElPLiBUaGlzIGlzIHNvbWV0aW1lcyByZXF1aXJlZCB3aGVuIHVzaW5nIGEgR1BJTwordG8gaW1wbGVtZW50IGEgd29ya2Fyb3VuZCBvbiBzaWduYWxzIHR5cGljYWxseSBkcml2ZW4gYnkgYSBub24tR1BJTyBIVyBibG9jay4KKworU29tZSBwbGF0Zm9ybXMgYWxsb3cgc29tZSBvciBhbGwgR1BJTyBzaWduYWxzIHRvIGJlIHJvdXRlZCB0byBkaWZmZXJlbnQgcGlucy4KK1NpbWlsYXJseSwgb3RoZXIgYXNwZWN0cyBvZiB0aGUgR1BJTyBvciBwaW4gbWF5IG5lZWQgdG8gYmUgY29uZmlndXJlZCwgc3VjaCBhcworcHVsbHVwL3B1bGxkb3duLiBQbGF0Zm9ybSBzb2Z0d2FyZSBzaG91bGQgYXJyYW5nZSB0aGF0IGFueSBzdWNoIGRldGFpbHMgYXJlCitjb25maWd1cmVkIHByaW9yIHRvIGdwaW9fcmVxdWVzdCgpIGJlaW5nIGNhbGxlZCBmb3IgdGhvc2UgR1BJT3MsIGUuZy4gdXNpbmcKK3RoZSBwaW5jdHJsIHN1YnN5c3RlbSdzIG1hcHBpbmcgdGFibGUsIHNvIHRoYXQgR1BJTyB1c2VycyBuZWVkIG5vdCBiZSBhd2FyZQorb2YgdGhlc2UgZGV0YWlscy4KKworQWxzbyBub3RlIHRoYXQgaXQncyB5b3VyIHJlc3BvbnNpYmlsaXR5IHRvIGhhdmUgc3RvcHBlZCB1c2luZyBhIEdQSU8KK2JlZm9yZSB5b3UgZnJlZSBpdC4KKworQ29uc2lkZXJpbmcgaW4gbW9zdCBjYXNlcyBHUElPcyBhcmUgYWN0dWFsbHkgY29uZmlndXJlZCByaWdodCBhZnRlciB0aGV5CithcmUgY2xhaW1lZCwgdGhyZWUgYWRkaXRpb25hbCBjYWxscyBhcmUgZGVmaW5lZDoKKworCS8qIHJlcXVlc3QgYSBzaW5nbGUgR1BJTywgd2l0aCBpbml0aWFsIGNvbmZpZ3VyYXRpb24gc3BlY2lmaWVkIGJ5CisJICogJ2ZsYWdzJywgaWRlbnRpY2FsIHRvIGdwaW9fcmVxdWVzdCgpIHdydCBvdGhlciBhcmd1bWVudHMgYW5kCisJICogcmV0dXJuIHZhbHVlCisJICovCisJaW50IGdwaW9fcmVxdWVzdF9vbmUodW5zaWduZWQgZ3BpbywgdW5zaWduZWQgbG9uZyBmbGFncywgY29uc3QgY2hhciAqbGFiZWwpOworCisJLyogcmVxdWVzdCBtdWx0aXBsZSBHUElPcyBpbiBhIHNpbmdsZSBjYWxsCisJICovCisJaW50IGdwaW9fcmVxdWVzdF9hcnJheShzdHJ1Y3QgZ3BpbyAqYXJyYXksIHNpemVfdCBudW0pOworCisJLyogcmVsZWFzZSBtdWx0aXBsZSBHUElPcyBpbiBhIHNpbmdsZSBjYWxsCisJICovCisJdm9pZCBncGlvX2ZyZWVfYXJyYXkoc3RydWN0IGdwaW8gKmFycmF5LCBzaXplX3QgbnVtKTsKKword2hlcmUgJ2ZsYWdzJyBpcyBjdXJyZW50bHkgZGVmaW5lZCB0byBzcGVjaWZ5IHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKKworCSogR1BJT0ZfRElSX0lOCQktIHRvIGNvbmZpZ3VyZSBkaXJlY3Rpb24gYXMgaW5wdXQKKwkqIEdQSU9GX0RJUl9PVVQJCS0gdG8gY29uZmlndXJlIGRpcmVjdGlvbiBhcyBvdXRwdXQKKworCSogR1BJT0ZfSU5JVF9MT1cJLSBhcyBvdXRwdXQsIHNldCBpbml0aWFsIGxldmVsIHRvIExPVworCSogR1BJT0ZfSU5JVF9ISUdICS0gYXMgb3V0cHV0LCBzZXQgaW5pdGlhbCBsZXZlbCB0byBISUdICisJKiBHUElPRl9PUEVOX0RSQUlOCS0gZ3BpbyBwaW4gaXMgb3BlbiBkcmFpbiB0eXBlLgorCSogR1BJT0ZfT1BFTl9TT1VSQ0UJLSBncGlvIHBpbiBpcyBvcGVuIHNvdXJjZSB0eXBlLgorCisJKiBHUElPRl9FWFBPUlRfRElSX0ZJWEVECS0gZXhwb3J0IGdwaW8gdG8gc3lzZnMsIGtlZXAgZGlyZWN0aW9uCisJKiBHUElPRl9FWFBPUlRfRElSX0NIQU5HRUFCTEUJLSBhbHNvIGV4cG9ydCwgYWxsb3cgY2hhbmdpbmcgZGlyZWN0aW9uCisKK3NpbmNlIEdQSU9GX0lOSVRfKiBhcmUgb25seSB2YWxpZCB3aGVuIGNvbmZpZ3VyZWQgYXMgb3V0cHV0LCBzbyBncm91cCB2YWxpZAorY29tYmluYXRpb25zIGFzOgorCisJKiBHUElPRl9JTgkJLSBjb25maWd1cmUgYXMgaW5wdXQKKwkqIEdQSU9GX09VVF9JTklUX0xPVwktIGNvbmZpZ3VyZWQgYXMgb3V0cHV0LCBpbml0aWFsIGxldmVsIExPVworCSogR1BJT0ZfT1VUX0lOSVRfSElHSAktIGNvbmZpZ3VyZWQgYXMgb3V0cHV0LCBpbml0aWFsIGxldmVsIEhJR0gKKworV2hlbiBzZXR0aW5nIHRoZSBmbGFnIGFzIEdQSU9GX09QRU5fRFJBSU4gdGhlbiBpdCB3aWxsIGFzc3VtZSB0aGF0IHBpbnMgaXMKK29wZW4gZHJhaW4gdHlwZS4gU3VjaCBwaW5zIHdpbGwgbm90IGJlIGRyaXZlbiB0byAxIGluIG91dHB1dCBtb2RlLiBJdCBpcworcmVxdWlyZSB0byBjb25uZWN0IHB1bGwtdXAgb24gc3VjaCBwaW5zLiBCeSBlbmFibGluZyB0aGlzIGZsYWcsIGdwaW8gbGliIHdpbGwKK21ha2UgdGhlIGRpcmVjdGlvbiB0byBpbnB1dCB3aGVuIGl0IGlzIGFza2VkIHRvIHNldCB2YWx1ZSBvZiAxIGluIG91dHB1dCBtb2RlCit0byBtYWtlIHRoZSBwaW4gSElHSC4gVGhlIHBpbiBpcyBtYWtlIHRvIExPVyBieSBkcml2aW5nIHZhbHVlIDAgaW4gb3V0cHV0IG1vZGUuCisKK1doZW4gc2V0dGluZyB0aGUgZmxhZyBhcyBHUElPRl9PUEVOX1NPVVJDRSB0aGVuIGl0IHdpbGwgYXNzdW1lIHRoYXQgcGlucyBpcworb3BlbiBzb3VyY2UgdHlwZS4gU3VjaCBwaW5zIHdpbGwgbm90IGJlIGRyaXZlbiB0byAwIGluIG91dHB1dCBtb2RlLiBJdCBpcworcmVxdWlyZSB0byBjb25uZWN0IHB1bGwtZG93biBvbiBzdWNoIHBpbi4gQnkgZW5hYmxpbmcgdGhpcyBmbGFnLCBncGlvIGxpYiB3aWxsCittYWtlIHRoZSBkaXJlY3Rpb24gdG8gaW5wdXQgd2hlbiBpdCBpcyBhc2tlZCB0byBzZXQgdmFsdWUgb2YgMCBpbiBvdXRwdXQgbW9kZQordG8gbWFrZSB0aGUgcGluIExPVy4gVGhlIHBpbiBpcyBtYWtlIHRvIEhJR0ggYnkgZHJpdmluZyB2YWx1ZSAxIGluIG91dHB1dCBtb2RlLgorCitJbiB0aGUgZnV0dXJlLCB0aGVzZSBmbGFncyBjYW4gYmUgZXh0ZW5kZWQgdG8gc3VwcG9ydCBtb3JlIHByb3BlcnRpZXMuCisKK0Z1cnRoZXIgbW9yZSwgdG8gZWFzZSB0aGUgY2xhaW0vcmVsZWFzZSBvZiBtdWx0aXBsZSBHUElPcywgJ3N0cnVjdCBncGlvJyBpcworaW50cm9kdWNlZCB0byBlbmNhcHN1bGF0ZSBhbGwgdGhyZWUgZmllbGRzIGFzOgorCisJc3RydWN0IGdwaW8geworCQl1bnNpZ25lZAlncGlvOworCQl1bnNpZ25lZCBsb25nCWZsYWdzOworCQljb25zdCBjaGFyCSpsYWJlbDsKKwl9OworCitBIHR5cGljYWwgZXhhbXBsZSBvZiB1c2FnZToKKworCXN0YXRpYyBzdHJ1Y3QgZ3BpbyBsZWRzX2dwaW9zW10gPSB7CisJCXsgMzIsIEdQSU9GX09VVF9JTklUX0hJR0gsICJQb3dlciBMRUQiIH0sIC8qIGRlZmF1bHQgdG8gT04gKi8KKwkJeyAzMywgR1BJT0ZfT1VUX0lOSVRfTE9XLCAgIkdyZWVuIExFRCIgfSwgLyogZGVmYXVsdCB0byBPRkYgKi8KKwkJeyAzNCwgR1BJT0ZfT1VUX0lOSVRfTE9XLCAgIlJlZCBMRUQiICAgfSwgLyogZGVmYXVsdCB0byBPRkYgKi8KKwkJeyAzNSwgR1BJT0ZfT1VUX0lOSVRfTE9XLCAgIkJsdWUgTEVEIiAgfSwgLyogZGVmYXVsdCB0byBPRkYgKi8KKwkJeyAuLi4gfSwKKwl9OworCisJZXJyID0gZ3Bpb19yZXF1ZXN0X29uZSgzMSwgR1BJT0ZfSU4sICJSZXNldCBCdXR0b24iKTsKKwlpZiAoZXJyKQorCQkuLi4KKworCWVyciA9IGdwaW9fcmVxdWVzdF9hcnJheShsZWRzX2dwaW9zLCBBUlJBWV9TSVpFKGxlZHNfZ3Bpb3MpKTsKKwlpZiAoZXJyKQorCQkuLi4KKworCWdwaW9fZnJlZV9hcnJheShsZWRzX2dwaW9zLCBBUlJBWV9TSVpFKGxlZHNfZ3Bpb3MpKTsKKworCitHUElPcyBtYXBwZWQgdG8gSVJRcworLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0dQSU8gbnVtYmVycyBhcmUgdW5zaWduZWQgaW50ZWdlcnM7IHNvIGFyZSBJUlEgbnVtYmVycy4gIFRoZXNlIG1ha2UgdXAKK3R3byBsb2dpY2FsbHkgZGlzdGluY3QgbmFtZXNwYWNlcyAoR1BJTyAwIG5lZWQgbm90IHVzZSBJUlEgMCkuICBZb3UgY2FuCittYXAgYmV0d2VlbiB0aGVtIHVzaW5nIGNhbGxzIGxpa2U6CisKKwkvKiBtYXAgR1BJTyBudW1iZXJzIHRvIElSUSBudW1iZXJzICovCisJaW50IGdwaW9fdG9faXJxKHVuc2lnbmVkIGdwaW8pOworCisJLyogbWFwIElSUSBudW1iZXJzIHRvIEdQSU8gbnVtYmVycyAoYXZvaWQgdXNpbmcgdGhpcykgKi8KKwlpbnQgaXJxX3RvX2dwaW8odW5zaWduZWQgaXJxKTsKKworVGhvc2UgcmV0dXJuIGVpdGhlciB0aGUgY29ycmVzcG9uZGluZyBudW1iZXIgaW4gdGhlIG90aGVyIG5hbWVzcGFjZSwgb3IKK2Vsc2UgYSBuZWdhdGl2ZSBlcnJubyBjb2RlIGlmIHRoZSBtYXBwaW5nIGNhbid0IGJlIGRvbmUuICAoRm9yIGV4YW1wbGUsCitzb21lIEdQSU9zIGNhbid0IGJlIHVzZWQgYXMgSVJRcy4pICBJdCBpcyBhbiB1bmNoZWNrZWQgZXJyb3IgdG8gdXNlIGEgR1BJTworbnVtYmVyIHRoYXQgd2Fzbid0IHNldCB1cCBhcyBhbiBpbnB1dCB1c2luZyBncGlvX2RpcmVjdGlvbl9pbnB1dCgpLCBvcgordG8gdXNlIGFuIElSUSBudW1iZXIgdGhhdCBkaWRuJ3Qgb3JpZ2luYWxseSBjb21lIGZyb20gZ3Bpb190b19pcnEoKS4KKworVGhlc2UgdHdvIG1hcHBpbmcgY2FsbHMgYXJlIGV4cGVjdGVkIHRvIGNvc3Qgb24gdGhlIG9yZGVyIG9mIGEgc2luZ2xlCithZGRpdGlvbiBvciBzdWJ0cmFjdGlvbi4gIFRoZXkncmUgbm90IGFsbG93ZWQgdG8gc2xlZXAuCisKK05vbi1lcnJvciB2YWx1ZXMgcmV0dXJuZWQgZnJvbSBncGlvX3RvX2lycSgpIGNhbiBiZSBwYXNzZWQgdG8gcmVxdWVzdF9pcnEoKQorb3IgZnJlZV9pcnEoKS4gIFRoZXkgd2lsbCBvZnRlbiBiZSBzdG9yZWQgaW50byBJUlEgcmVzb3VyY2VzIGZvciBwbGF0Zm9ybQorZGV2aWNlcywgYnkgdGhlIGJvYXJkLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIGNvZGUuICBOb3RlIHRoYXQgSVJRIHRyaWdnZXIKK29wdGlvbnMgYXJlIHBhcnQgb2YgdGhlIElSUSBpbnRlcmZhY2UsIGUuZy4gSVJRRl9UUklHR0VSX0ZBTExJTkcsIGFzIGFyZQorc3lzdGVtIHdha2V1cCBjYXBhYmlsaXRpZXMuCisKK05vbi1lcnJvciB2YWx1ZXMgcmV0dXJuZWQgZnJvbSBpcnFfdG9fZ3BpbygpIHdvdWxkIG1vc3QgY29tbW9ubHkgYmUgdXNlZAord2l0aCBncGlvX2dldF92YWx1ZSgpLCBmb3IgZXhhbXBsZSB0byBpbml0aWFsaXplIG9yIHVwZGF0ZSBkcml2ZXIgc3RhdGUKK3doZW4gdGhlIElSUSBpcyBlZGdlLXRyaWdnZXJlZC4gIE5vdGUgdGhhdCBzb21lIHBsYXRmb3JtcyBkb24ndCBzdXBwb3J0Cit0aGlzIHJldmVyc2UgbWFwcGluZywgc28geW91IHNob3VsZCBhdm9pZCB1c2luZyBpdC4KKworCitFbXVsYXRpbmcgT3BlbiBEcmFpbiBTaWduYWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTb21ldGltZXMgc2hhcmVkIHNpZ25hbHMgbmVlZCB0byB1c2UgIm9wZW4gZHJhaW4iIHNpZ25hbGluZywgd2hlcmUgb25seSB0aGUKK2xvdyBzaWduYWwgbGV2ZWwgaXMgYWN0dWFsbHkgZHJpdmVuLiAgKFRoYXQgdGVybSBhcHBsaWVzIHRvIENNT1MgdHJhbnNpc3RvcnM7Cisib3BlbiBjb2xsZWN0b3IiIGlzIHVzZWQgZm9yIFRUTC4pICBBIHB1bGx1cCByZXNpc3RvciBjYXVzZXMgdGhlIGhpZ2ggc2lnbmFsCitsZXZlbC4gIFRoaXMgaXMgc29tZXRpbWVzIGNhbGxlZCBhICJ3aXJlLUFORCI7IG9yIG1vcmUgcHJhY3RpY2FsbHksIGZyb20gdGhlCituZWdhdGl2ZSBsb2dpYyAobG93PXRydWUpIHBlcnNwZWN0aXZlIHRoaXMgaXMgYSAid2lyZS1PUiIuCisKK09uZSBjb21tb24gZXhhbXBsZSBvZiBhbiBvcGVuIGRyYWluIHNpZ25hbCBpcyBhIHNoYXJlZCBhY3RpdmUtbG93IElSUSBsaW5lLgorQWxzbywgYmlkaXJlY3Rpb25hbCBkYXRhIGJ1cyBzaWduYWxzIHNvbWV0aW1lcyB1c2Ugb3BlbiBkcmFpbiBzaWduYWxzLgorCitTb21lIEdQSU8gY29udHJvbGxlcnMgZGlyZWN0bHkgc3VwcG9ydCBvcGVuIGRyYWluIG91dHB1dHM7IG1hbnkgZG9uJ3QuICBXaGVuCit5b3UgbmVlZCBvcGVuIGRyYWluIHNpZ25hbGluZyBidXQgeW91ciBoYXJkd2FyZSBkb2Vzbid0IGRpcmVjdGx5IHN1cHBvcnQgaXQsCit0aGVyZSdzIGEgY29tbW9uIGlkaW9tIHlvdSBjYW4gdXNlIHRvIGVtdWxhdGUgaXQgd2l0aCBhbnkgR1BJTyBwaW4gdGhhdCBjYW4KK2JlIHVzZWQgYXMgZWl0aGVyIGFuIGlucHV0IG9yIGFuIG91dHB1dDoKKworIExPVzoJZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KGdwaW8sIDApIC4uLiB0aGlzIGRyaXZlcyB0aGUgc2lnbmFsCisJYW5kIG92ZXJyaWRlcyB0aGUgcHVsbHVwLgorCisgSElHSDoJZ3Bpb19kaXJlY3Rpb25faW5wdXQoZ3BpbykgLi4uIHRoaXMgdHVybnMgb2ZmIHRoZSBvdXRwdXQsCisJc28gdGhlIHB1bGx1cCAob3Igc29tZSBvdGhlciBkZXZpY2UpIGNvbnRyb2xzIHRoZSBzaWduYWwuCisKK0lmIHlvdSBhcmUgImRyaXZpbmciIHRoZSBzaWduYWwgaGlnaCBidXQgZ3Bpb19nZXRfdmFsdWUoZ3BpbykgcmVwb3J0cyBhIGxvdwordmFsdWUgKGFmdGVyIHRoZSBhcHByb3ByaWF0ZSByaXNlIHRpbWUgcGFzc2VzKSwgeW91IGtub3cgc29tZSBvdGhlciBjb21wb25lbnQKK2lzIGRyaXZpbmcgdGhlIHNoYXJlZCBzaWduYWwgbG93LiAgVGhhdCdzIG5vdCBuZWNlc3NhcmlseSBhbiBlcnJvci4gIEFzIG9uZQorY29tbW9uIGV4YW1wbGUsIHRoYXQncyBob3cgSTJDIGNsb2NrcyBhcmUgc3RyZXRjaGVkOiAgYSBzbGF2ZSB0aGF0IG5lZWRzIGEKK3Nsb3dlciBjbG9jayBkZWxheXMgdGhlIHJpc2luZyBlZGdlIG9mIFNDSywgYW5kIHRoZSBJMkMgbWFzdGVyIGFkanVzdHMgaXRzCitzaWduYWxpbmcgcmF0ZSBhY2NvcmRpbmdseS4KKworCitHUElPIGNvbnRyb2xsZXJzIGFuZCB0aGUgcGluY3RybCBzdWJzeXN0ZW0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBIEdQSU8gY29udHJvbGxlciBvbiBhIFNPQyBtaWdodCBiZSB0aWdodGx5IGNvdXBsZWQgd2l0aCB0aGUgcGluY3RybAorc3Vic3lzdGVtLCBpbiB0aGUgc2Vuc2UgdGhhdCB0aGUgcGlucyBjYW4gYmUgdXNlZCBieSBvdGhlciBmdW5jdGlvbnMKK3RvZ2V0aGVyIHdpdGggYW4gb3B0aW9uYWwgZ3BpbyBmZWF0dXJlLiBXZSBoYXZlIGFscmVhZHkgY292ZXJlZCB0aGUKK2Nhc2Ugd2hlcmUgZS5nLiBhIEdQSU8gY29udHJvbGxlciBuZWVkIHRvIHJlc2VydmUgYSBwaW4gb3Igc2V0IHRoZQorZGlyZWN0aW9uIG9mIGEgcGluIGJ5IGNhbGxpbmcgYW55IG9mOgorCitwaW5jdHJsX3JlcXVlc3RfZ3BpbygpCitwaW5jdHJsX2ZyZWVfZ3BpbygpCitwaW5jdHJsX2dwaW9fZGlyZWN0aW9uX2lucHV0KCkKK3BpbmN0cmxfZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KCkKKworQnV0IGhvdyBkb2VzIHRoZSBwaW4gY29udHJvbCBzdWJzeXN0ZW0gY3Jvc3MtY29ycmVsYXRlIHRoZSBHUElPCitudW1iZXJzICh3aGljaCBhcmUgYSBnbG9iYWwgYnVzaW5lc3MpIHRvIGEgY2VydGFpbiBwaW4gb24gYSBjZXJ0YWluCitwaW4gY29udHJvbGxlcj8KKworVGhpcyBpcyBkb25lIGJ5IHJlZ2lzdGVyaW5nICJyYW5nZXMiIG9mIHBpbnMsIHdoaWNoIGFyZSBlc3NlbnRpYWxseQorY3Jvc3MtcmVmZXJlbmNlIHRhYmxlcy4gVGhlc2UgYXJlIGRlc2NyaWJlZCBpbgorRG9jdW1lbnRhdGlvbi9waW5jdHJsLnR4dAorCitXaGlsZSB0aGUgcGluIGFsbG9jYXRpb24gaXMgdG90YWxseSBtYW5hZ2VkIGJ5IHRoZSBwaW5jdHJsIHN1YnN5c3RlbSwKK2dwaW8gKHVuZGVyIGdwaW9saWIpIGlzIHN0aWxsIG1haW50YWluZWQgYnkgZ3BpbyBkcml2ZXJzLiBJdCBtYXkgaGFwcGVuCit0aGF0IGRpZmZlcmVudCBwaW4gcmFuZ2VzIGluIGEgU29DIGlzIG1hbmFnZWQgYnkgZGlmZmVyZW50IGdwaW8gZHJpdmVycy4KKworVGhpcyBtYWtlcyBpdCBsb2dpY2FsIHRvIGxldCBncGlvIGRyaXZlcnMgYW5ub3VuY2UgdGhlaXIgcGluIHJhbmdlcyB0bwordGhlIHBpbiBjdHJsIHN1YnN5c3RlbSBiZWZvcmUgaXQgd2lsbCBjYWxsICdwaW5jdHJsX3JlcXVlc3RfZ3BpbycgaW4gb3JkZXIKK3RvIHJlcXVlc3QgdGhlIGNvcnJlc3BvbmRpbmcgcGluIHRvIGJlIHByZXBhcmVkIGJ5IHRoZSBwaW5jdHJsIHN1YnN5c3RlbQorYmVmb3JlIGFueSBncGlvIHVzYWdlLgorCitGb3IgdGhpcywgdGhlIGdwaW8gY29udHJvbGxlciBjYW4gcmVnaXN0ZXIgaXRzIHBpbiByYW5nZSB3aXRoIHBpbmN0cmwKK3N1YnN5c3RlbS4gVGhlcmUgYXJlIHR3byB3YXlzIG9mIGRvaW5nIGl0IGN1cnJlbnRseTogd2l0aCBvciB3aXRob3V0IERULgorCitGb3Igd2l0aCBEVCBzdXBwb3J0IHJlZmVyIHRvIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8udHh0LgorCitGb3Igbm9uLURUIHN1cHBvcnQsIHVzZXIgY2FuIGNhbGwgZ3Bpb2NoaXBfYWRkX3Bpbl9yYW5nZSgpIHdpdGggYXBwcm9wcmlhdGUKK3BhcmFtZXRlcnMgdG8gcmVnaXN0ZXIgYSByYW5nZSBvZiBncGlvIHBpbnMgd2l0aCBhIHBpbmN0cmwgZHJpdmVyLiBGb3IgdGhpcworZXhhY3QgbmFtZSBzdHJpbmcgb2YgcGluY3RybCBkZXZpY2UgaGFzIHRvIGJlIHBhc3NlZCBhcyBvbmUgb2YgdGhlCithcmd1bWVudCB0byB0aGlzIHJvdXRpbmUuCisKKworV2hhdCBkbyB0aGVzZSBjb252ZW50aW9ucyBvbWl0PworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorT25lIG9mIHRoZSBiaWdnZXN0IHRoaW5ncyB0aGVzZSBjb252ZW50aW9ucyBvbWl0IGlzIHBpbiBtdWx0aXBsZXhpbmcsIHNpbmNlCit0aGlzIGlzIGhpZ2hseSBjaGlwLXNwZWNpZmljIGFuZCBub25wb3J0YWJsZS4gIE9uZSBwbGF0Zm9ybSBtaWdodCBub3QgbmVlZAorZXhwbGljaXQgbXVsdGlwbGV4aW5nOyBhbm90aGVyIG1pZ2h0IGhhdmUganVzdCB0d28gb3B0aW9ucyBmb3IgdXNlIG9mIGFueQorZ2l2ZW4gcGluOyBhbm90aGVyIG1pZ2h0IGhhdmUgZWlnaHQgb3B0aW9ucyBwZXIgcGluOyBhbm90aGVyIG1pZ2h0IGJlIGFibGUKK3RvIHJvdXRlIGEgZ2l2ZW4gR1BJTyB0byBhbnkgb25lIG9mIHNldmVyYWwgcGlucy4gIChZZXMsIHRob3NlIGV4YW1wbGVzIGFsbAorY29tZSBmcm9tIHN5c3RlbXMgdGhhdCBydW4gTGludXggdG9kYXkuKQorCitSZWxhdGVkIHRvIG11bHRpcGxleGluZyBpcyBjb25maWd1cmF0aW9uIGFuZCBlbmFibGluZyBvZiB0aGUgcHVsbHVwcyBvcgorcHVsbGRvd25zIGludGVncmF0ZWQgb24gc29tZSBwbGF0Zm9ybXMuICBOb3QgYWxsIHBsYXRmb3JtcyBzdXBwb3J0IHRoZW0sCitvciBzdXBwb3J0IHRoZW0gaW4gdGhlIHNhbWUgd2F5OyBhbmQgYW55IGdpdmVuIGJvYXJkIG1pZ2h0IHVzZSBleHRlcm5hbAorcHVsbHVwcyAob3IgcHVsbGRvd25zKSBzbyB0aGF0IHRoZSBvbi1jaGlwIG9uZXMgc2hvdWxkIG5vdCBiZSB1c2VkLgorKFdoZW4gYSBjaXJjdWl0IG5lZWRzIDUga09obSwgb24tY2hpcCAxMDAga09obSByZXNpc3RvcnMgd29uJ3QgZG8uKQorTGlrZXdpc2UgZHJpdmUgc3RyZW5ndGggKDIgbUEgdnMgMjAgbUEpIGFuZCB2b2x0YWdlICgxLjhWIHZzIDMuM1YpIGlzIGEKK3BsYXRmb3JtLXNwZWNpZmljIGlzc3VlLCBhcyBhcmUgbW9kZWxzIGxpa2UgKG5vdCkgaGF2aW5nIGEgb25lLXRvLW9uZQorY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBjb25maWd1cmFibGUgcGlucyBhbmQgR1BJT3MuCisKK1RoZXJlIGFyZSBvdGhlciBzeXN0ZW0tc3BlY2lmaWMgbWVjaGFuaXNtcyB0aGF0IGFyZSBub3Qgc3BlY2lmaWVkIGhlcmUsCitsaWtlIHRoZSBhZm9yZW1lbnRpb25lZCBvcHRpb25zIGZvciBpbnB1dCBkZS1nbGl0Y2hpbmcgYW5kIHdpcmUtT1Igb3V0cHV0LgorSGFyZHdhcmUgbWF5IHN1cHBvcnQgcmVhZGluZyBvciB3cml0aW5nIEdQSU9zIGluIGdhbmdzLCBidXQgdGhhdCdzIHVzdWFsbHkKK2NvbmZpZ3VyYXRpb24gZGVwZW5kZW50OiAgZm9yIEdQSU9zIHNoYXJpbmcgdGhlIHNhbWUgYmFuay4gIChHUElPcyBhcmUKK2NvbW1vbmx5IGdyb3VwZWQgaW4gYmFua3Mgb2YgMTYgb3IgMzIsIHdpdGggYSBnaXZlbiBTT0MgaGF2aW5nIHNldmVyYWwgc3VjaAorYmFua3MuKSAgU29tZSBzeXN0ZW1zIGNhbiB0cmlnZ2VyIElSUXMgZnJvbSBvdXRwdXQgR1BJT3MsIG9yIHJlYWQgdmFsdWVzCitmcm9tIHBpbnMgbm90IG1hbmFnZWQgYXMgR1BJT3MuICBDb2RlIHJlbHlpbmcgb24gc3VjaCBtZWNoYW5pc21zIHdpbGwKK25lY2Vzc2FyaWx5IGJlIG5vbnBvcnRhYmxlLgorCitEeW5hbWljIGRlZmluaXRpb24gb2YgR1BJT3MgaXMgbm90IGN1cnJlbnRseSBzdGFuZGFyZDsgZm9yIGV4YW1wbGUsIGFzCithIHNpZGUgZWZmZWN0IG9mIGNvbmZpZ3VyaW5nIGFuIGFkZC1vbiBib2FyZCB3aXRoIHNvbWUgR1BJTyBleHBhbmRlcnMuCisKKworR1BJTyBpbXBsZW1lbnRvcidzIGZyYW1ld29yayAoT1BUSU9OQUwpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0FzIG5vdGVkIGVhcmxpZXIsIHRoZXJlIGlzIGFuIG9wdGlvbmFsIGltcGxlbWVudGF0aW9uIGZyYW1ld29yayBtYWtpbmcgaXQKK2Vhc2llciBmb3IgcGxhdGZvcm1zIHRvIHN1cHBvcnQgZGlmZmVyZW50IGtpbmRzIG9mIEdQSU8gY29udHJvbGxlciB1c2luZwordGhlIHNhbWUgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlLiAgVGhpcyBmcmFtZXdvcmsgaXMgY2FsbGVkICJncGlvbGliIi4KKworQXMgYSBkZWJ1Z2dpbmcgYWlkLCBpZiBkZWJ1Z2ZzIGlzIGF2YWlsYWJsZSBhIC9zeXMva2VybmVsL2RlYnVnL2dwaW8gZmlsZQord2lsbCBiZSBmb3VuZCB0aGVyZS4gIFRoYXQgd2lsbCBsaXN0IGFsbCB0aGUgY29udHJvbGxlcnMgcmVnaXN0ZXJlZCB0aHJvdWdoCit0aGlzIGZyYW1ld29yaywgYW5kIHRoZSBzdGF0ZSBvZiB0aGUgR1BJT3MgY3VycmVudGx5IGluIHVzZS4KKworCitDb250cm9sbGVyIERyaXZlcnM6IGdwaW9fY2hpcAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0luIHRoaXMgZnJhbWV3b3JrIGVhY2ggR1BJTyBjb250cm9sbGVyIGlzIHBhY2thZ2VkIGFzIGEgInN0cnVjdCBncGlvX2NoaXAiCit3aXRoIGluZm9ybWF0aW9uIGNvbW1vbiB0byBlYWNoIGNvbnRyb2xsZXIgb2YgdGhhdCB0eXBlOgorCisgLSBtZXRob2RzIHRvIGVzdGFibGlzaCBHUElPIGRpcmVjdGlvbgorIC0gbWV0aG9kcyB1c2VkIHRvIGFjY2VzcyBHUElPIHZhbHVlcworIC0gZmxhZyBzYXlpbmcgd2hldGhlciBjYWxscyB0byBpdHMgbWV0aG9kcyBtYXkgc2xlZXAKKyAtIG9wdGlvbmFsIGRlYnVnZnMgZHVtcCBtZXRob2QgKHNob3dpbmcgZXh0cmEgc3RhdGUgbGlrZSBwdWxsdXAgY29uZmlnKQorIC0gbGFiZWwgZm9yIGRpYWdub3N0aWNzCisKK1RoZXJlIGlzIGFsc28gcGVyLWluc3RhbmNlIGRhdGEsIHdoaWNoIG1heSBjb21lIGZyb20gZGV2aWNlLnBsYXRmb3JtX2RhdGE6Cit0aGUgbnVtYmVyIG9mIGl0cyBmaXJzdCBHUElPLCBhbmQgaG93IG1hbnkgR1BJT3MgaXQgZXhwb3Nlcy4KKworVGhlIGNvZGUgaW1wbGVtZW50aW5nIGEgZ3Bpb19jaGlwIHNob3VsZCBzdXBwb3J0IG11bHRpcGxlIGluc3RhbmNlcyBvZiB0aGUKK2NvbnRyb2xsZXIsIHBvc3NpYmx5IHVzaW5nIHRoZSBkcml2ZXIgbW9kZWwuICBUaGF0IGNvZGUgd2lsbCBjb25maWd1cmUgZWFjaAorZ3Bpb19jaGlwIGFuZCBpc3N1ZSBncGlvY2hpcF9hZGQoKS4gIFJlbW92aW5nIGEgR1BJTyBjb250cm9sbGVyIHNob3VsZCBiZQorcmFyZTsgdXNlIGdwaW9jaGlwX3JlbW92ZSgpIHdoZW4gaXQgaXMgdW5hdm9pZGFibGUuCisKK01vc3Qgb2Z0ZW4gYSBncGlvX2NoaXAgaXMgcGFydCBvZiBhbiBpbnN0YW5jZS1zcGVjaWZpYyBzdHJ1Y3R1cmUgd2l0aCBzdGF0ZQorbm90IGV4cG9zZWQgYnkgdGhlIEdQSU8gaW50ZXJmYWNlcywgc3VjaCBhcyBhZGRyZXNzaW5nLCBwb3dlciBtYW5hZ2VtZW50LAorYW5kIG1vcmUuICBDaGlwcyBzdWNoIGFzIGNvZGVjcyB3aWxsIGhhdmUgY29tcGxleCBub24tR1BJTyBzdGF0ZS4KKworQW55IGRlYnVnZnMgZHVtcCBtZXRob2Qgc2hvdWxkIG5vcm1hbGx5IGlnbm9yZSBzaWduYWxzIHdoaWNoIGhhdmVuJ3QgYmVlbgorcmVxdWVzdGVkIGFzIEdQSU9zLiAgVGhleSBjYW4gdXNlIGdwaW9jaGlwX2lzX3JlcXVlc3RlZCgpLCB3aGljaCByZXR1cm5zCitlaXRoZXIgTlVMTCBvciB0aGUgbGFiZWwgYXNzb2NpYXRlZCB3aXRoIHRoYXQgR1BJTyB3aGVuIGl0IHdhcyByZXF1ZXN0ZWQuCisKKworUGxhdGZvcm0gU3VwcG9ydAorLS0tLS0tLS0tLS0tLS0tLQorVG8gc3VwcG9ydCB0aGlzIGZyYW1ld29yaywgYSBwbGF0Zm9ybSdzIEtjb25maWcgd2lsbCAic2VsZWN0IiBlaXRoZXIKK0FSQ0hfUkVRVUlSRV9HUElPTElCIG9yIEFSQ0hfV0FOVF9PUFRJT05BTF9HUElPTElCCithbmQgYXJyYW5nZSB0aGF0IGl0cyA8YXNtL2dwaW8uaD4gaW5jbHVkZXMgPGFzbS1nZW5lcmljL2dwaW8uaD4gYW5kIGRlZmluZXMKK3RocmVlIGZ1bmN0aW9uczogZ3Bpb19nZXRfdmFsdWUoKSwgZ3Bpb19zZXRfdmFsdWUoKSwgYW5kIGdwaW9fY2Fuc2xlZXAoKS4KKworSXQgbWF5IGFsc28gcHJvdmlkZSBhIGN1c3RvbSB2YWx1ZSBmb3IgQVJDSF9OUl9HUElPUywgc28gdGhhdCBpdCBiZXR0ZXIKK3JlZmxlY3RzIHRoZSBudW1iZXIgb2YgR1BJT3MgaW4gYWN0dWFsIHVzZSBvbiB0aGF0IHBsYXRmb3JtLCB3aXRob3V0Cit3YXN0aW5nIHN0YXRpYyB0YWJsZSBzcGFjZS4gIChJdCBzaG91bGQgY291bnQgYm90aCBidWlsdC1pbi9Tb0MgR1BJT3MgYW5kCithbHNvIG9uZXMgb24gR1BJTyBleHBhbmRlcnMuCisKK0FSQ0hfUkVRVUlSRV9HUElPTElCIG1lYW5zIHRoYXQgdGhlIGdwaW9saWIgY29kZSB3aWxsIGFsd2F5cyBnZXQgY29tcGlsZWQKK2ludG8gdGhlIGtlcm5lbCBvbiB0aGF0IGFyY2hpdGVjdHVyZS4KKworQVJDSF9XQU5UX09QVElPTkFMX0dQSU9MSUIgbWVhbnMgdGhlIGdwaW9saWIgY29kZSBkZWZhdWx0cyB0byBvZmYgYW5kIHRoZSB1c2VyCitjYW4gZW5hYmxlIGl0IGFuZCBidWlsZCBpdCBpbnRvIHRoZSBrZXJuZWwgb3B0aW9uYWxseS4KKworSWYgbmVpdGhlciBvZiB0aGVzZSBvcHRpb25zIGFyZSBzZWxlY3RlZCwgdGhlIHBsYXRmb3JtIGRvZXMgbm90IHN1cHBvcnQKK0dQSU9zIHRocm91Z2ggR1BJTy1saWIgYW5kIHRoZSBjb2RlIGNhbm5vdCBiZSBlbmFibGVkIGJ5IHRoZSB1c2VyLgorCitUcml2aWFsIGltcGxlbWVudGF0aW9ucyBvZiB0aG9zZSBmdW5jdGlvbnMgY2FuIGRpcmVjdGx5IHVzZSBmcmFtZXdvcmsKK2NvZGUsIHdoaWNoIGFsd2F5cyBkaXNwYXRjaGVzIHRocm91Z2ggdGhlIGdwaW9fY2hpcDoKKworICAjZGVmaW5lIGdwaW9fZ2V0X3ZhbHVlCV9fZ3Bpb19nZXRfdmFsdWUKKyAgI2RlZmluZSBncGlvX3NldF92YWx1ZQlfX2dwaW9fc2V0X3ZhbHVlCisgICNkZWZpbmUgZ3Bpb19jYW5zbGVlcAkJX19ncGlvX2NhbnNsZWVwCisKK0ZhbmNpZXIgaW1wbGVtZW50YXRpb25zIGNvdWxkIGluc3RlYWQgZGVmaW5lIHRob3NlIGFzIGlubGluZSBmdW5jdGlvbnMgd2l0aAorbG9naWMgb3B0aW1pemluZyBhY2Nlc3MgdG8gc3BlY2lmaWMgU09DLWJhc2VkIEdQSU9zLiAgRm9yIGV4YW1wbGUsIGlmIHRoZQorcmVmZXJlbmNlZCBHUElPIGlzIHRoZSBjb25zdGFudCAiMTIiLCBnZXR0aW5nIG9yIHNldHRpbmcgaXRzIHZhbHVlIGNvdWxkCitjb3N0IGFzIGxpdHRsZSBhcyB0d28gb3IgdGhyZWUgaW5zdHJ1Y3Rpb25zLCBuZXZlciBzbGVlcGluZy4gIFdoZW4gc3VjaCBhbgorb3B0aW1pemF0aW9uIGlzIG5vdCBwb3NzaWJsZSB0aG9zZSBjYWxscyBtdXN0IGRlbGVnYXRlIHRvIHRoZSBmcmFtZXdvcmsKK2NvZGUsIGNvc3RpbmcgYXQgbGVhc3QgYSBmZXcgZG96ZW4gaW5zdHJ1Y3Rpb25zLiAgRm9yIGJpdGJhbmdlZCBJL08sIHN1Y2gKK2luc3RydWN0aW9uIHNhdmluZ3MgY2FuIGJlIHNpZ25pZmljYW50LgorCitGb3IgU09DcywgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBkZWZpbmVzIGFuZCByZWdpc3RlcnMgZ3Bpb19jaGlwIGluc3RhbmNlcworZm9yIGVhY2ggYmFuayBvZiBvbi1jaGlwIEdQSU9zLiAgVGhvc2UgR1BJT3Mgc2hvdWxkIGJlIG51bWJlcmVkL2xhYmVsZWQgdG8KK21hdGNoIGNoaXAgdmVuZG9yIGRvY3VtZW50YXRpb24sIGFuZCBkaXJlY3RseSBtYXRjaCBib2FyZCBzY2hlbWF0aWNzLiAgVGhleQorbWF5IHdlbGwgc3RhcnQgYXQgemVybyBhbmQgZ28gdXAgdG8gYSBwbGF0Zm9ybS1zcGVjaWZpYyBsaW1pdC4gIFN1Y2ggR1BJT3MKK2FyZSBub3JtYWxseSBpbnRlZ3JhdGVkIGludG8gcGxhdGZvcm0gaW5pdGlhbGl6YXRpb24gdG8gbWFrZSB0aGVtIGFsd2F5cyBiZQorYXZhaWxhYmxlLCBmcm9tIGFyY2hfaW5pdGNhbGwoKSBvciBlYXJsaWVyOyB0aGV5IGNhbiBvZnRlbiBzZXJ2ZSBhcyBJUlFzLgorCisKK0JvYXJkIFN1cHBvcnQKKy0tLS0tLS0tLS0tLS0KK0ZvciBleHRlcm5hbCBHUElPIGNvbnRyb2xsZXJzIC0tIHN1Y2ggYXMgSTJDIG9yIFNQSSBleHBhbmRlcnMsIEFTSUNzLCBtdWx0aQorZnVuY3Rpb24gZGV2aWNlcywgRlBHQXMgb3IgQ1BMRHMgLS0gbW9zdCBvZnRlbiBib2FyZC1zcGVjaWZpYyBjb2RlIGhhbmRsZXMKK3JlZ2lzdGVyaW5nIGNvbnRyb2xsZXIgZGV2aWNlcyBhbmQgZW5zdXJlcyB0aGF0IHRoZWlyIGRyaXZlcnMga25vdyB3aGF0IEdQSU8KK251bWJlcnMgdG8gdXNlIHdpdGggZ3Bpb2NoaXBfYWRkKCkuICBUaGVpciBudW1iZXJzIG9mdGVuIHN0YXJ0IHJpZ2h0IGFmdGVyCitwbGF0Zm9ybS1zcGVjaWZpYyBHUElPcy4KKworRm9yIGV4YW1wbGUsIGJvYXJkIHNldHVwIGNvZGUgY291bGQgY3JlYXRlIHN0cnVjdHVyZXMgaWRlbnRpZnlpbmcgdGhlIHJhbmdlCitvZiBHUElPcyB0aGF0IGNoaXAgd2lsbCBleHBvc2UsIGFuZCBwYXNzZXMgdGhlbSB0byBlYWNoIEdQSU8gZXhwYW5kZXIgY2hpcAordXNpbmcgcGxhdGZvcm1fZGF0YS4gIFRoZW4gdGhlIGNoaXAgZHJpdmVyJ3MgcHJvYmUoKSByb3V0aW5lIGNvdWxkIHBhc3MgdGhhdAorZGF0YSB0byBncGlvY2hpcF9hZGQoKS4KKworSW5pdGlhbGl6YXRpb24gb3JkZXIgY2FuIGJlIGltcG9ydGFudC4gIEZvciBleGFtcGxlLCB3aGVuIGEgZGV2aWNlIHJlbGllcyBvbgorYW4gSTJDLWJhc2VkIEdQSU8sIGl0cyBwcm9iZSgpIHJvdXRpbmUgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIHRoYXQgR1BJTworYmVjb21lcyBhdmFpbGFibGUuICBUaGF0IG1heSBtZWFuIHRoZSBkZXZpY2Ugc2hvdWxkIG5vdCBiZSByZWdpc3RlcmVkIHVudGlsCitjYWxscyBmb3IgdGhhdCBHUElPIGNhbiB3b3JrLiAgT25lIHdheSB0byBhZGRyZXNzIHN1Y2ggZGVwZW5kZW5jaWVzIGlzIGZvcgorc3VjaCBncGlvX2NoaXAgY29udHJvbGxlcnMgdG8gcHJvdmlkZSBzZXR1cCgpIGFuZCB0ZWFyZG93bigpIGNhbGxiYWNrcyB0bworYm9hcmQgc3BlY2lmaWMgY29kZTsgdGhvc2UgYm9hcmQgc3BlY2lmaWMgY2FsbGJhY2tzIHdvdWxkIHJlZ2lzdGVyIGRldmljZXMKK29uY2UgYWxsIHRoZSBuZWNlc3NhcnkgcmVzb3VyY2VzIGFyZSBhdmFpbGFibGUsIGFuZCByZW1vdmUgdGhlbSBsYXRlciB3aGVuCit0aGUgR1BJTyBjb250cm9sbGVyIGRldmljZSBiZWNvbWVzIHVuYXZhaWxhYmxlLgorCisKK1N5c2ZzIEludGVyZmFjZSBmb3IgVXNlcnNwYWNlIChPUFRJT05BTCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1BsYXRmb3JtcyB3aGljaCB1c2UgdGhlICJncGlvbGliIiBpbXBsZW1lbnRvcnMgZnJhbWV3b3JrIG1heSBjaG9vc2UgdG8KK2NvbmZpZ3VyZSBhIHN5c2ZzIHVzZXIgaW50ZXJmYWNlIHRvIEdQSU9zLiAgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUKK2RlYnVnZnMgaW50ZXJmYWNlLCBzaW5jZSBpdCBwcm92aWRlcyBjb250cm9sIG92ZXIgR1BJTyBkaXJlY3Rpb24gYW5kCit2YWx1ZSBpbnN0ZWFkIG9mIGp1c3Qgc2hvd2luZyBhIGdwaW8gc3RhdGUgc3VtbWFyeS4gIFBsdXMsIGl0IGNvdWxkIGJlCitwcmVzZW50IG9uIHByb2R1Y3Rpb24gc3lzdGVtcyB3aXRob3V0IGRlYnVnZ2luZyBzdXBwb3J0LgorCitHaXZlbiBhcHByb3ByaWF0ZSBoYXJkd2FyZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgc3lzdGVtLCB1c2Vyc3BhY2UgY291bGQKK2tub3cgZm9yIGV4YW1wbGUgdGhhdCBHUElPICMyMyBjb250cm9scyB0aGUgd3JpdGUgcHJvdGVjdCBsaW5lIHVzZWQgdG8KK3Byb3RlY3QgYm9vdCBsb2FkZXIgc2VnbWVudHMgaW4gZmxhc2ggbWVtb3J5LiAgU3lzdGVtIHVwZ3JhZGUgcHJvY2VkdXJlcworbWF5IG5lZWQgdG8gdGVtcG9yYXJpbHkgcmVtb3ZlIHRoYXQgcHJvdGVjdGlvbiwgZmlyc3QgaW1wb3J0aW5nIGEgR1BJTywKK3RoZW4gY2hhbmdpbmcgaXRzIG91dHB1dCBzdGF0ZSwgdGhlbiB1cGRhdGluZyB0aGUgY29kZSBiZWZvcmUgcmUtZW5hYmxpbmcKK3RoZSB3cml0ZSBwcm90ZWN0aW9uLiAgSW4gbm9ybWFsIHVzZSwgR1BJTyAjMjMgd291bGQgbmV2ZXIgYmUgdG91Y2hlZCwKK2FuZCB0aGUga2VybmVsIHdvdWxkIGhhdmUgbm8gbmVlZCB0byBrbm93IGFib3V0IGl0LgorCitBZ2FpbiBkZXBlbmRpbmcgb24gYXBwcm9wcmlhdGUgaGFyZHdhcmUgZG9jdW1lbnRhdGlvbiwgb24gc29tZSBzeXN0ZW1zCit1c2Vyc3BhY2UgR1BJTyBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgc3lzdGVtIGNvbmZpZ3VyYXRpb24gZGF0YSB0aGF0CitzdGFuZGFyZCBrZXJuZWxzIHdvbid0IGtub3cgYWJvdXQuICBBbmQgZm9yIHNvbWUgdGFza3MsIHNpbXBsZSB1c2Vyc3BhY2UKK0dQSU8gZHJpdmVycyBjb3VsZCBiZSBhbGwgdGhhdCB0aGUgc3lzdGVtIHJlYWxseSBuZWVkcy4KKworTm90ZSB0aGF0IHN0YW5kYXJkIGtlcm5lbCBkcml2ZXJzIGV4aXN0IGZvciBjb21tb24gIkxFRHMgYW5kIEJ1dHRvbnMiCitHUElPIHRhc2tzOiAgImxlZHMtZ3BpbyIgYW5kICJncGlvX2tleXMiLCByZXNwZWN0aXZlbHkuICBVc2UgdGhvc2UKK2luc3RlYWQgb2YgdGFsa2luZyBkaXJlY3RseSB0byB0aGUgR1BJT3M7IHRoZXkgaW50ZWdyYXRlIHdpdGgga2VybmVsCitmcmFtZXdvcmtzIGJldHRlciB0aGFuIHlvdXIgdXNlcnNwYWNlIGNvZGUgY291bGQuCisKKworUGF0aHMgaW4gU3lzZnMKKy0tLS0tLS0tLS0tLS0tCitUaGVyZSBhcmUgdGhyZWUga2luZHMgb2YgZW50cnkgaW4gL3N5cy9jbGFzcy9ncGlvOgorCisgICAtCUNvbnRyb2wgaW50ZXJmYWNlcyB1c2VkIHRvIGdldCB1c2Vyc3BhY2UgY29udHJvbCBvdmVyIEdQSU9zOworCisgICAtCUdQSU9zIHRoZW1zZWx2ZXM7IGFuZAorCisgICAtCUdQSU8gY29udHJvbGxlcnMgKCJncGlvX2NoaXAiIGluc3RhbmNlcykuCisKK1RoYXQncyBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBmaWxlcyBpbmNsdWRpbmcgdGhlICJkZXZpY2UiIHN5bWxpbmsuCisKK1RoZSBjb250cm9sIGludGVyZmFjZXMgYXJlIHdyaXRlLW9ubHk6CisKKyAgICAvc3lzL2NsYXNzL2dwaW8vCisKKyAgICAJImV4cG9ydCIgLi4uIFVzZXJzcGFjZSBtYXkgYXNrIHRoZSBrZXJuZWwgdG8gZXhwb3J0IGNvbnRyb2wgb2YKKwkJYSBHUElPIHRvIHVzZXJzcGFjZSBieSB3cml0aW5nIGl0cyBudW1iZXIgdG8gdGhpcyBmaWxlLgorCisJCUV4YW1wbGU6ICAiZWNobyAxOSA+IGV4cG9ydCIgd2lsbCBjcmVhdGUgYSAiZ3BpbzE5IiBub2RlCisJCWZvciBHUElPICMxOSwgaWYgdGhhdCdzIG5vdCByZXF1ZXN0ZWQgYnkga2VybmVsIGNvZGUuCisKKyAgICAJInVuZXhwb3J0IiAuLi4gUmV2ZXJzZXMgdGhlIGVmZmVjdCBvZiBleHBvcnRpbmcgdG8gdXNlcnNwYWNlLgorCisJCUV4YW1wbGU6ICAiZWNobyAxOSA+IHVuZXhwb3J0IiB3aWxsIHJlbW92ZSBhICJncGlvMTkiCisJCW5vZGUgZXhwb3J0ZWQgdXNpbmcgdGhlICJleHBvcnQiIGZpbGUuCisKK0dQSU8gc2lnbmFscyBoYXZlIHBhdGhzIGxpa2UgL3N5cy9jbGFzcy9ncGlvL2dwaW80Mi8gKGZvciBHUElPICM0MikKK2FuZCBoYXZlIHRoZSBmb2xsb3dpbmcgcmVhZC93cml0ZSBhdHRyaWJ1dGVzOgorCisgICAgL3N5cy9jbGFzcy9ncGlvL2dwaW9OLworCisJImRpcmVjdGlvbiIgLi4uIHJlYWRzIGFzIGVpdGhlciAiaW4iIG9yICJvdXQiLiAgVGhpcyB2YWx1ZSBtYXkKKwkJbm9ybWFsbHkgYmUgd3JpdHRlbi4gIFdyaXRpbmcgYXMgIm91dCIgZGVmYXVsdHMgdG8KKwkJaW5pdGlhbGl6aW5nIHRoZSB2YWx1ZSBhcyBsb3cuICBUbyBlbnN1cmUgZ2xpdGNoIGZyZWUKKwkJb3BlcmF0aW9uLCB2YWx1ZXMgImxvdyIgYW5kICJoaWdoIiBtYXkgYmUgd3JpdHRlbiB0bworCQljb25maWd1cmUgdGhlIEdQSU8gYXMgYW4gb3V0cHV0IHdpdGggdGhhdCBpbml0aWFsIHZhbHVlLgorCisJCU5vdGUgdGhhdCB0aGlzIGF0dHJpYnV0ZSAqd2lsbCBub3QgZXhpc3QqIGlmIHRoZSBrZXJuZWwKKwkJZG9lc24ndCBzdXBwb3J0IGNoYW5naW5nIHRoZSBkaXJlY3Rpb24gb2YgYSBHUElPLCBvcgorCQlpdCB3YXMgZXhwb3J0ZWQgYnkga2VybmVsIGNvZGUgdGhhdCBkaWRuJ3QgZXhwbGljaXRseQorCQlhbGxvdyB1c2Vyc3BhY2UgdG8gcmVjb25maWd1cmUgdGhpcyBHUElPJ3MgZGlyZWN0aW9uLgorCisJInZhbHVlIiAuLi4gcmVhZHMgYXMgZWl0aGVyIDAgKGxvdykgb3IgMSAoaGlnaCkuICBJZiB0aGUgR1BJTworCQlpcyBjb25maWd1cmVkIGFzIGFuIG91dHB1dCwgdGhpcyB2YWx1ZSBtYXkgYmUgd3JpdHRlbjsKKwkJYW55IG5vbnplcm8gdmFsdWUgaXMgdHJlYXRlZCBhcyBoaWdoLgorCisJCUlmIHRoZSBwaW4gY2FuIGJlIGNvbmZpZ3VyZWQgYXMgaW50ZXJydXB0LWdlbmVyYXRpbmcgaW50ZXJydXB0CisJCWFuZCBpZiBpdCBoYXMgYmVlbiBjb25maWd1cmVkIHRvIGdlbmVyYXRlIGludGVycnVwdHMgKHNlZSB0aGUKKwkJZGVzY3JpcHRpb24gb2YgImVkZ2UiKSwgeW91IGNhbiBwb2xsKDIpIG9uIHRoYXQgZmlsZSBhbmQKKwkJcG9sbCgyKSB3aWxsIHJldHVybiB3aGVuZXZlciB0aGUgaW50ZXJydXB0IHdhcyB0cmlnZ2VyZWQuIElmCisJCXlvdSB1c2UgcG9sbCgyKSwgc2V0IHRoZSBldmVudHMgUE9MTFBSSSBhbmQgUE9MTEVSUi4gSWYgeW91CisJCXVzZSBzZWxlY3QoMiksIHNldCB0aGUgZmlsZSBkZXNjcmlwdG9yIGluIGV4Y2VwdGZkcy4gQWZ0ZXIKKwkJcG9sbCgyKSByZXR1cm5zLCBlaXRoZXIgbHNlZWsoMikgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3lzZnMKKwkJZmlsZSBhbmQgcmVhZCB0aGUgbmV3IHZhbHVlIG9yIGNsb3NlIHRoZSBmaWxlIGFuZCByZS1vcGVuIGl0CisJCXRvIHJlYWQgdGhlIHZhbHVlLgorCisJImVkZ2UiIC4uLiByZWFkcyBhcyBlaXRoZXIgIm5vbmUiLCAicmlzaW5nIiwgImZhbGxpbmciLCBvcgorCQkiYm90aCIuIFdyaXRlIHRoZXNlIHN0cmluZ3MgdG8gc2VsZWN0IHRoZSBzaWduYWwgZWRnZShzKQorCQl0aGF0IHdpbGwgbWFrZSBwb2xsKDIpIG9uIHRoZSAidmFsdWUiIGZpbGUgcmV0dXJuLgorCisJCVRoaXMgZmlsZSBleGlzdHMgb25seSBpZiB0aGUgcGluIGNhbiBiZSBjb25maWd1cmVkIGFzIGFuCisJCWludGVycnVwdCBnZW5lcmF0aW5nIGlucHV0IHBpbi4KKworCSJhY3RpdmVfbG93IiAuLi4gcmVhZHMgYXMgZWl0aGVyIDAgKGZhbHNlKSBvciAxICh0cnVlKS4gIFdyaXRlCisJCWFueSBub256ZXJvIHZhbHVlIHRvIGludmVydCB0aGUgdmFsdWUgYXR0cmlidXRlIGJvdGgKKwkJZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcuICBFeGlzdGluZyBhbmQgc3Vic2VxdWVudAorCQlwb2xsKDIpIHN1cHBvcnQgY29uZmlndXJhdGlvbiB2aWEgdGhlIGVkZ2UgYXR0cmlidXRlCisJCWZvciAicmlzaW5nIiBhbmQgImZhbGxpbmciIGVkZ2VzIHdpbGwgZm9sbG93IHRoaXMKKwkJc2V0dGluZy4KKworR1BJTyBjb250cm9sbGVycyBoYXZlIHBhdGhzIGxpa2UgL3N5cy9jbGFzcy9ncGlvL2dwaW9jaGlwNDIvIChmb3IgdGhlCitjb250cm9sbGVyIGltcGxlbWVudGluZyBHUElPcyBzdGFydGluZyBhdCAjNDIpIGFuZCBoYXZlIHRoZSBmb2xsb3dpbmcKK3JlYWQtb25seSBhdHRyaWJ1dGVzOgorCisgICAgL3N5cy9jbGFzcy9ncGlvL2dwaW9jaGlwTi8KKworICAgIAkiYmFzZSIgLi4uIHNhbWUgYXMgTiwgdGhlIGZpcnN0IEdQSU8gbWFuYWdlZCBieSB0aGlzIGNoaXAKKworICAgIAkibGFiZWwiIC4uLiBwcm92aWRlZCBmb3IgZGlhZ25vc3RpY3MgKG5vdCBhbHdheXMgdW5pcXVlKQorCisgICAgCSJuZ3BpbyIgLi4uIGhvdyBtYW55IEdQSU9zIHRoaXMgbWFuZ2VzIChOIHRvIE4gKyBuZ3BpbyAtIDEpCisKK0JvYXJkIGRvY3VtZW50YXRpb24gc2hvdWxkIGluIG1vc3QgY2FzZXMgY292ZXIgd2hhdCBHUElPcyBhcmUgdXNlZCBmb3IKK3doYXQgcHVycG9zZXMuICBIb3dldmVyLCB0aG9zZSBudW1iZXJzIGFyZSBub3QgYWx3YXlzIHN0YWJsZTsgR1BJT3Mgb24KK2EgZGF1Z2h0ZXJjYXJkIG1pZ2h0IGJlIGRpZmZlcmVudCBkZXBlbmRpbmcgb24gdGhlIGJhc2UgYm9hcmQgYmVpbmcgdXNlZCwKK29yIG90aGVyIGNhcmRzIGluIHRoZSBzdGFjay4gIEluIHN1Y2ggY2FzZXMsIHlvdSBtYXkgbmVlZCB0byB1c2UgdGhlCitncGlvY2hpcCBub2RlcyAocG9zc2libHkgaW4gY29uanVuY3Rpb24gd2l0aCBzY2hlbWF0aWNzKSB0byBkZXRlcm1pbmUKK3RoZSBjb3JyZWN0IEdQSU8gbnVtYmVyIHRvIHVzZSBmb3IgYSBnaXZlbiBzaWduYWwuCisKKworRXhwb3J0aW5nIGZyb20gS2VybmVsIGNvZGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitLZXJuZWwgY29kZSBjYW4gZXhwbGljaXRseSBtYW5hZ2UgZXhwb3J0cyBvZiBHUElPcyB3aGljaCBoYXZlIGFscmVhZHkgYmVlbgorcmVxdWVzdGVkIHVzaW5nIGdwaW9fcmVxdWVzdCgpOgorCisJLyogZXhwb3J0IHRoZSBHUElPIHRvIHVzZXJzcGFjZSAqLworCWludCBncGlvX2V4cG9ydCh1bnNpZ25lZCBncGlvLCBib29sIGRpcmVjdGlvbl9tYXlfY2hhbmdlKTsKKworCS8qIHJldmVyc2UgZ3Bpb19leHBvcnQoKSAqLworCXZvaWQgZ3Bpb191bmV4cG9ydCgpOworCisJLyogY3JlYXRlIGEgc3lzZnMgbGluayB0byBhbiBleHBvcnRlZCBHUElPIG5vZGUgKi8KKwlpbnQgZ3Bpb19leHBvcnRfbGluayhzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKm5hbWUsCisJCXVuc2lnbmVkIGdwaW8pCisKK0FmdGVyIGEga2VybmVsIGRyaXZlciByZXF1ZXN0cyBhIEdQSU8sIGl0IG1heSBvbmx5IGJlIG1hZGUgYXZhaWxhYmxlIGluCit0aGUgc3lzZnMgaW50ZXJmYWNlIGJ5IGdwaW9fZXhwb3J0KCkuICBUaGUgZHJpdmVyIGNhbiBjb250cm9sIHdoZXRoZXIgdGhlCitzaWduYWwgZGlyZWN0aW9uIG1heSBjaGFuZ2UuICBUaGlzIGhlbHBzIGRyaXZlcnMgcHJldmVudCB1c2Vyc3BhY2UgY29kZQorZnJvbSBhY2NpZGVudGFsbHkgY2xvYmJlcmluZyBpbXBvcnRhbnQgc3lzdGVtIHN0YXRlLgorCitUaGlzIGV4cGxpY2l0IGV4cG9ydGluZyBjYW4gaGVscCB3aXRoIGRlYnVnZ2luZyAoYnkgbWFraW5nIHNvbWUga2luZHMKK29mIGV4cGVyaW1lbnRzIGVhc2llciksIG9yIGNhbiBwcm92aWRlIGFuIGFsd2F5cy10aGVyZSBpbnRlcmZhY2UgdGhhdCdzCitzdWl0YWJsZSBmb3IgZG9jdW1lbnRpbmcgYXMgcGFydCBvZiBhIGJvYXJkIHN1cHBvcnQgcGFja2FnZS4KKworQWZ0ZXIgdGhlIEdQSU8gaGFzIGJlZW4gZXhwb3J0ZWQsIGdwaW9fZXhwb3J0X2xpbmsoKSBhbGxvd3MgY3JlYXRpbmcKK3N5bWxpbmtzIGZyb20gZWxzZXdoZXJlIGluIHN5c2ZzIHRvIHRoZSBHUElPIHN5c2ZzIG5vZGUuICBEcml2ZXJzIGNhbgordXNlIHRoaXMgdG8gcHJvdmlkZSB0aGUgaW50ZXJmYWNlIHVuZGVyIHRoZWlyIG93biBkZXZpY2UgaW4gc3lzZnMgd2l0aAorYSBkZXNjcmlwdGl2ZSBuYW1lLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncGlvL2dwaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9ncGlvL2dwaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkOWIzNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2dwaW8vZ3Bpby50eHQKQEAgLTAsMCArMSwxMTkgQEAKK0dQSU8gSW50ZXJmYWNlcworPT09PT09PT09PT09PT09CisKK1RoZSBkb2N1bWVudHMgaW4gdGhpcyBkaXJlY3RvcnkgZ2l2ZSBkZXRhaWxlZCBpbnN0cnVjdGlvbnMgb24gaG93IHRvIGFjY2VzcworR1BJT3MgaW4gZHJpdmVycywgYW5kIGhvdyB0byB3cml0ZSBhIGRyaXZlciBmb3IgYSBkZXZpY2UgdGhhdCBwcm92aWRlcyBHUElPcworaXRzZWxmLgorCitEdWUgdG8gdGhlIGhpc3Rvcnkgb2YgR1BJTyBpbnRlcmZhY2VzIGluIHRoZSBrZXJuZWwsIHRoZXJlIGFyZSB0d28gZGlmZmVyZW50Cit3YXlzIHRvIG9idGFpbiBhbmQgdXNlIEdQSU9zOgorCisgIC0gVGhlIGRlc2NyaXB0b3ItYmFzZWQgaW50ZXJmYWNlIGlzIHRoZSBwcmVmZXJyZWQgd2F5IHRvIG1hbmlwdWxhdGUgR1BJT3MsCithbmQgaXMgZGVzY3JpYmVkIGJ5IGFsbCB0aGUgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgZXhjZXB0ZWQgZ3Bpby1sZWdhY3kudHh0LgorICAtIFRoZSBsZWdhY3kgaW50ZWdlci1iYXNlZCBpbnRlcmZhY2Ugd2hpY2ggaXMgY29uc2lkZXJlZCBkZXByZWNhdGVkIChidXQgc3RpbGwKK3VzYWJsZSBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zKSBpcyBkb2N1bWVudGVkIGluIGdwaW8tbGVnYWN5LnR4dC4KKworVGhlIHJlbWFpbmRlciBvZiB0aGlzIGRvY3VtZW50IGFwcGxpZXMgdG8gdGhlIG5ldyBkZXNjcmlwdG9yLWJhc2VkIGludGVyZmFjZS4KK2dwaW8tbGVnYWN5LnR4dCBjb250YWlucyB0aGUgc2FtZSBpbmZvcm1hdGlvbiBhcHBsaWVkIHRvIHRoZSBsZWdhY3kKK2ludGVnZXItYmFzZWQgaW50ZXJmYWNlLgorCisKK1doYXQgaXMgYSBHUElPPworPT09PT09PT09PT09PT09CisKK0EgIkdlbmVyYWwgUHVycG9zZSBJbnB1dC9PdXRwdXQiIChHUElPKSBpcyBhIGZsZXhpYmxlIHNvZnR3YXJlLWNvbnRyb2xsZWQKK2RpZ2l0YWwgc2lnbmFsLiBUaGV5IGFyZSBwcm92aWRlZCBmcm9tIG1hbnkga2luZHMgb2YgY2hpcCwgYW5kIGFyZSBmYW1pbGlhcgordG8gTGludXggZGV2ZWxvcGVycyB3b3JraW5nIHdpdGggZW1iZWRkZWQgYW5kIGN1c3RvbSBoYXJkd2FyZS4gRWFjaCBHUElPCityZXByZXNlbnRzIGEgYml0IGNvbm5lY3RlZCB0byBhIHBhcnRpY3VsYXIgcGluLCBvciAiYmFsbCIgb24gQmFsbCBHcmlkIEFycmF5CisoQkdBKSBwYWNrYWdlcy4gQm9hcmQgc2NoZW1hdGljcyBzaG93IHdoaWNoIGV4dGVybmFsIGhhcmR3YXJlIGNvbm5lY3RzIHRvCit3aGljaCBHUElPcy4gRHJpdmVycyBjYW4gYmUgd3JpdHRlbiBnZW5lcmljYWxseSwgc28gdGhhdCBib2FyZCBzZXR1cCBjb2RlCitwYXNzZXMgc3VjaCBwaW4gY29uZmlndXJhdGlvbiBkYXRhIHRvIGRyaXZlcnMuCisKK1N5c3RlbS1vbi1DaGlwIChTT0MpIHByb2Nlc3NvcnMgaGVhdmlseSByZWx5IG9uIEdQSU9zLiBJbiBzb21lIGNhc2VzLCBldmVyeQorbm9uLWRlZGljYXRlZCBwaW4gY2FuIGJlIGNvbmZpZ3VyZWQgYXMgYSBHUElPOyBhbmQgbW9zdCBjaGlwcyBoYXZlIGF0IGxlYXN0CitzZXZlcmFsIGRvemVuIG9mIHRoZW0uIFByb2dyYW1tYWJsZSBsb2dpYyBkZXZpY2VzIChsaWtlIEZQR0FzKSBjYW4gZWFzaWx5Citwcm92aWRlIEdQSU9zOyBtdWx0aWZ1bmN0aW9uIGNoaXBzIGxpa2UgcG93ZXIgbWFuYWdlcnMsIGFuZCBhdWRpbyBjb2RlY3MKK29mdGVuIGhhdmUgYSBmZXcgc3VjaCBwaW5zIHRvIGhlbHAgd2l0aCBwaW4gc2NhcmNpdHkgb24gU09DczsgYW5kIHRoZXJlIGFyZQorYWxzbyAiR1BJTyBFeHBhbmRlciIgY2hpcHMgdGhhdCBjb25uZWN0IHVzaW5nIHRoZSBJMkMgb3IgU1BJIHNlcmlhbCBidXNlcy4KK01vc3QgUEMgc291dGhicmlkZ2VzIGhhdmUgYSBmZXcgZG96ZW4gR1BJTy1jYXBhYmxlIHBpbnMgKHdpdGggb25seSB0aGUgQklPUworZmlybXdhcmUga25vd2luZyBob3cgdGhleSdyZSB1c2VkKS4KKworVGhlIGV4YWN0IGNhcGFiaWxpdGllcyBvZiBHUElPcyB2YXJ5IGJldHdlZW4gc3lzdGVtcy4gQ29tbW9uIG9wdGlvbnM6CisKKyAgLSBPdXRwdXQgdmFsdWVzIGFyZSB3cml0YWJsZSAoaGlnaD0xLCBsb3c9MCkuIFNvbWUgY2hpcHMgYWxzbyBoYXZlCisgICAgb3B0aW9ucyBhYm91dCBob3cgdGhhdCB2YWx1ZSBpcyBkcml2ZW4sIHNvIHRoYXQgZm9yIGV4YW1wbGUgb25seSBvbmUKKyAgICB2YWx1ZSBtaWdodCBiZSBkcml2ZW4sIHN1cHBvcnRpbmcgIndpcmUtT1IiIGFuZCBzaW1pbGFyIHNjaGVtZXMgZm9yIHRoZQorICAgIG90aGVyIHZhbHVlIChub3RhYmx5LCAib3BlbiBkcmFpbiIgc2lnbmFsaW5nKS4KKworICAtIElucHV0IHZhbHVlcyBhcmUgbGlrZXdpc2UgcmVhZGFibGUgKDEsIDApLiBTb21lIGNoaXBzIHN1cHBvcnQgcmVhZGJhY2sKKyAgICBvZiBwaW5zIGNvbmZpZ3VyZWQgYXMgIm91dHB1dCIsIHdoaWNoIGlzIHZlcnkgdXNlZnVsIGluIHN1Y2ggIndpcmUtT1IiCisgICAgY2FzZXMgKHRvIHN1cHBvcnQgYmlkaXJlY3Rpb25hbCBzaWduYWxpbmcpLiBHUElPIGNvbnRyb2xsZXJzIG1heSBoYXZlCisgICAgaW5wdXQgZGUtZ2xpdGNoL2RlYm91bmNlIGxvZ2ljLCBzb21ldGltZXMgd2l0aCBzb2Z0d2FyZSBjb250cm9scy4KKworICAtIElucHV0cyBjYW4gb2Z0ZW4gYmUgdXNlZCBhcyBJUlEgc2lnbmFscywgb2Z0ZW4gZWRnZSB0cmlnZ2VyZWQgYnV0CisgICAgc29tZXRpbWVzIGxldmVsIHRyaWdnZXJlZC4gU3VjaCBJUlFzIG1heSBiZSBjb25maWd1cmFibGUgYXMgc3lzdGVtCisgICAgd2FrZXVwIGV2ZW50cywgdG8gd2FrZSB0aGUgc3lzdGVtIGZyb20gYSBsb3cgcG93ZXIgc3RhdGUuCisKKyAgLSBVc3VhbGx5IGEgR1BJTyB3aWxsIGJlIGNvbmZpZ3VyYWJsZSBhcyBlaXRoZXIgaW5wdXQgb3Igb3V0cHV0LCBhcyBuZWVkZWQKKyAgICBieSBkaWZmZXJlbnQgcHJvZHVjdCBib2FyZHM7IHNpbmdsZSBkaXJlY3Rpb24gb25lcyBleGlzdCB0b28uCisKKyAgLSBNb3N0IEdQSU9zIGNhbiBiZSBhY2Nlc3NlZCB3aGlsZSBob2xkaW5nIHNwaW5sb2NrcywgYnV0IHRob3NlIGFjY2Vzc2VkCisgICAgdGhyb3VnaCBhIHNlcmlhbCBidXMgbm9ybWFsbHkgY2FuJ3QuIFNvbWUgc3lzdGVtcyBzdXBwb3J0IGJvdGggdHlwZXMuCisKK09uIGEgZ2l2ZW4gYm9hcmQgZWFjaCBHUElPIGlzIHVzZWQgZm9yIG9uZSBzcGVjaWZpYyBwdXJwb3NlIGxpa2UgbW9uaXRvcmluZworTU1DL1NEIGNhcmQgaW5zZXJ0aW9uL3JlbW92YWwsIGRldGVjdGluZyBjYXJkIHdyaXRlLXByb3RlY3Qgc3RhdHVzLCBkcml2aW5nCithIExFRCwgY29uZmlndXJpbmcgYSB0cmFuc2NlaXZlciwgYml0LWJhbmdpbmcgYSBzZXJpYWwgYnVzLCBwb2tpbmcgYSBoYXJkd2FyZQord2F0Y2hkb2csIHNlbnNpbmcgYSBzd2l0Y2gsIGFuZCBzbyBvbi4KKworCitDb21tb24gR1BJTyBQcm9wZXJ0aWVzCis9PT09PT09PT09PT09PT09PT09PT09CisKK1RoZXNlIHByb3BlcnRpZXMgYXJlIG1ldCB0aHJvdWdoIGFsbCB0aGUgb3RoZXIgZG9jdW1lbnRzIG9mIHRoZSBHUElPIGludGVyZmFjZQorYW5kIGl0IGlzIHVzZWZ1bCB0byB1bmRlcnN0YW5kIHRoZW0sIGVzcGVjaWFsbHkgaWYgeW91IG5lZWQgdG8gZGVmaW5lIEdQSU8KK21hcHBpbmdzLgorCitBY3RpdmUtSGlnaCBhbmQgQWN0aXZlLUxvdworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0l0IGlzIG5hdHVyYWwgdG8gYXNzdW1lIHRoYXQgYSBHUElPIGlzICJhY3RpdmUiIHdoZW4gaXRzIG91dHB1dCBzaWduYWwgaXMgMQorKCJoaWdoIiksIGFuZCBpbmFjdGl2ZSB3aGVuIGl0IGlzIDAgKCJsb3ciKS4gSG93ZXZlciBpbiBwcmFjdGljZSB0aGUgc2lnbmFsIG9mIGEKK0dQSU8gbWF5IGJlIGludmVydGVkIGJlZm9yZSBpcyByZWFjaGVzIGl0cyBkZXN0aW5hdGlvbiwgb3IgYSBkZXZpY2UgY291bGQgZGVjaWRlCit0byBoYXZlIGRpZmZlcmVudCBjb252ZW50aW9ucyBhYm91dCB3aGF0ICJhY3RpdmUiIG1lYW5zLiBTdWNoIGRlY2lzaW9ucyBzaG91bGQKK2JlIHRyYW5zcGFyZW50IHRvIGRldmljZSBkcml2ZXJzLCB0aGVyZWZvcmUgaXQgaXMgcG9zc2libGUgdG8gZGVmaW5lIGEgR1BJTyBhcworYmVpbmcgZWl0aGVyIGFjdGl2ZS1oaWdoICgiMSIgbWVhbnMgImFjdGl2ZSIsIHRoZSBkZWZhdWx0KSBvciBhY3RpdmUtbG93ICgiMCIKK21lYW5zICJhY3RpdmUiKSBzbyB0aGF0IGRyaXZlcnMgb25seSBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoZSBsb2dpY2FsIHNpZ25hbCBhbmQKK25vdCBhYm91dCB3aGF0IGhhcHBlbnMgYXQgdGhlIGxpbmUgbGV2ZWwuCisKK09wZW4gRHJhaW4gYW5kIE9wZW4gU291cmNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU29tZXRpbWVzIHNoYXJlZCBzaWduYWxzIG5lZWQgdG8gdXNlICJvcGVuIGRyYWluIiAod2hlcmUgb25seSB0aGUgbG93IHNpZ25hbAorbGV2ZWwgaXMgYWN0dWFsbHkgZHJpdmVuKSwgb3IgIm9wZW4gc291cmNlIiAod2hlcmUgb25seSB0aGUgaGlnaCBzaWduYWwgbGV2ZWwgaXMKK2RyaXZlbikgc2lnbmFsaW5nLiBUaGF0IHRlcm0gYXBwbGllcyB0byBDTU9TIHRyYW5zaXN0b3JzOyAib3BlbiBjb2xsZWN0b3IiIGlzCit1c2VkIGZvciBUVEwuIEEgcHVsbHVwIG9yIHB1bGxkb3duIHJlc2lzdG9yIGNhdXNlcyB0aGUgaGlnaCBvciBsb3cgc2lnbmFsIGxldmVsLgorVGhpcyBpcyBzb21ldGltZXMgY2FsbGVkIGEgIndpcmUtQU5EIjsgb3IgbW9yZSBwcmFjdGljYWxseSwgZnJvbSB0aGUgbmVnYXRpdmUKK2xvZ2ljIChsb3c9dHJ1ZSkgcGVyc3BlY3RpdmUgdGhpcyBpcyBhICJ3aXJlLU9SIi4KKworT25lIGNvbW1vbiBleGFtcGxlIG9mIGFuIG9wZW4gZHJhaW4gc2lnbmFsIGlzIGEgc2hhcmVkIGFjdGl2ZS1sb3cgSVJRIGxpbmUuCitBbHNvLCBiaWRpcmVjdGlvbmFsIGRhdGEgYnVzIHNpZ25hbHMgc29tZXRpbWVzIHVzZSBvcGVuIGRyYWluIHNpZ25hbHMuCisKK1NvbWUgR1BJTyBjb250cm9sbGVycyBkaXJlY3RseSBzdXBwb3J0IG9wZW4gZHJhaW4gYW5kIG9wZW4gc291cmNlIG91dHB1dHM7IG1hbnkKK2Rvbid0LiBXaGVuIHlvdSBuZWVkIG9wZW4gZHJhaW4gc2lnbmFsaW5nIGJ1dCB5b3VyIGhhcmR3YXJlIGRvZXNuJ3QgZGlyZWN0bHkKK3N1cHBvcnQgaXQsIHRoZXJlJ3MgYSBjb21tb24gaWRpb20geW91IGNhbiB1c2UgdG8gZW11bGF0ZSBpdCB3aXRoIGFueSBHUElPIHBpbgordGhhdCBjYW4gYmUgdXNlZCBhcyBlaXRoZXIgYW4gaW5wdXQgb3IgYW4gb3V0cHV0OgorCisgTE9XOglncGlvZF9kaXJlY3Rpb25fb3V0cHV0KGdwaW8sIDApIC4uLiB0aGlzIGRyaXZlcyB0aGUgc2lnbmFsIGFuZCBvdmVycmlkZXMKKwl0aGUgcHVsbHVwLgorCisgSElHSDoJZ3Bpb2RfZGlyZWN0aW9uX2lucHV0KGdwaW8pIC4uLiB0aGlzIHR1cm5zIG9mZiB0aGUgb3V0cHV0LCBzbyB0aGUgcHVsbHVwCisJKG9yIHNvbWUgb3RoZXIgZGV2aWNlKSBjb250cm9scyB0aGUgc2lnbmFsLgorCitUaGUgc2FtZSBsb2dpYyBjYW4gYmUgYXBwbGllZCB0byBlbXVsYXRlIG9wZW4gc291cmNlIHNpZ25hbGluZywgYnkgZHJpdmluZyB0aGUKK2hpZ2ggc2lnbmFsIGFuZCBjb25maWd1cmluZyB0aGUgR1BJTyBhcyBpbnB1dCBmb3IgbG93LiBUaGlzIG9wZW4gZHJhaW4vb3Blbgorc291cmNlIGVtdWxhdGlvbiBjYW4gYmUgaGFuZGxlZCB0cmFuc3BhcmVudGx5IGJ5IHRoZSBHUElPIGZyYW1ld29yay4KKworSWYgeW91IGFyZSAiZHJpdmluZyIgdGhlIHNpZ25hbCBoaWdoIGJ1dCBncGlvZF9nZXRfdmFsdWUoZ3BpbykgcmVwb3J0cyBhIGxvdwordmFsdWUgKGFmdGVyIHRoZSBhcHByb3ByaWF0ZSByaXNlIHRpbWUgcGFzc2VzKSwgeW91IGtub3cgc29tZSBvdGhlciBjb21wb25lbnQgaXMKK2RyaXZpbmcgdGhlIHNoYXJlZCBzaWduYWwgbG93LiBUaGF0J3Mgbm90IG5lY2Vzc2FyaWx5IGFuIGVycm9yLiBBcyBvbmUgY29tbW9uCitleGFtcGxlLCB0aGF0J3MgaG93IEkyQyBjbG9ja3MgYXJlIHN0cmV0Y2hlZDogIGEgc2xhdmUgdGhhdCBuZWVkcyBhIHNsb3dlciBjbG9jaworZGVsYXlzIHRoZSByaXNpbmcgZWRnZSBvZiBTQ0ssIGFuZCB0aGUgSTJDIG1hc3RlciBhZGp1c3RzIGl0cyBzaWduYWxpbmcgcmF0ZQorYWNjb3JkaW5nbHkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwaW8vc3lzZnMudHh0IGIvRG9jdW1lbnRhdGlvbi9ncGlvL3N5c2ZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWFiMDFhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9ncGlvL3N5c2ZzLnR4dApAQCAtMCwwICsxLDE0NiBAQAorR1BJTyBTeXNmcyBJbnRlcmZhY2UgZm9yIFVzZXJzcGFjZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQbGF0Zm9ybXMgd2hpY2ggdXNlIHRoZSAiZ3Bpb2xpYiIgaW1wbGVtZW50b3JzIGZyYW1ld29yayBtYXkgY2hvb3NlIHRvCitjb25maWd1cmUgYSBzeXNmcyB1c2VyIGludGVyZmFjZSB0byBHUElPcy4gVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUKK2RlYnVnZnMgaW50ZXJmYWNlLCBzaW5jZSBpdCBwcm92aWRlcyBjb250cm9sIG92ZXIgR1BJTyBkaXJlY3Rpb24gYW5kCit2YWx1ZSBpbnN0ZWFkIG9mIGp1c3Qgc2hvd2luZyBhIGdwaW8gc3RhdGUgc3VtbWFyeS4gUGx1cywgaXQgY291bGQgYmUKK3ByZXNlbnQgb24gcHJvZHVjdGlvbiBzeXN0ZW1zIHdpdGhvdXQgZGVidWdnaW5nIHN1cHBvcnQuCisKK0dpdmVuIGFwcHJvcHJpYXRlIGhhcmR3YXJlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBzeXN0ZW0sIHVzZXJzcGFjZSBjb3VsZAora25vdyBmb3IgZXhhbXBsZSB0aGF0IEdQSU8gIzIzIGNvbnRyb2xzIHRoZSB3cml0ZSBwcm90ZWN0IGxpbmUgdXNlZCB0bworcHJvdGVjdCBib290IGxvYWRlciBzZWdtZW50cyBpbiBmbGFzaCBtZW1vcnkuIFN5c3RlbSB1cGdyYWRlIHByb2NlZHVyZXMKK21heSBuZWVkIHRvIHRlbXBvcmFyaWx5IHJlbW92ZSB0aGF0IHByb3RlY3Rpb24sIGZpcnN0IGltcG9ydGluZyBhIEdQSU8sCit0aGVuIGNoYW5naW5nIGl0cyBvdXRwdXQgc3RhdGUsIHRoZW4gdXBkYXRpbmcgdGhlIGNvZGUgYmVmb3JlIHJlLWVuYWJsaW5nCit0aGUgd3JpdGUgcHJvdGVjdGlvbi4gSW4gbm9ybWFsIHVzZSwgR1BJTyAjMjMgd291bGQgbmV2ZXIgYmUgdG91Y2hlZCwKK2FuZCB0aGUga2VybmVsIHdvdWxkIGhhdmUgbm8gbmVlZCB0byBrbm93IGFib3V0IGl0LgorCitBZ2FpbiBkZXBlbmRpbmcgb24gYXBwcm9wcmlhdGUgaGFyZHdhcmUgZG9jdW1lbnRhdGlvbiwgb24gc29tZSBzeXN0ZW1zCit1c2Vyc3BhY2UgR1BJTyBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgc3lzdGVtIGNvbmZpZ3VyYXRpb24gZGF0YSB0aGF0CitzdGFuZGFyZCBrZXJuZWxzIHdvbid0IGtub3cgYWJvdXQuIEFuZCBmb3Igc29tZSB0YXNrcywgc2ltcGxlIHVzZXJzcGFjZQorR1BJTyBkcml2ZXJzIGNvdWxkIGJlIGFsbCB0aGF0IHRoZSBzeXN0ZW0gcmVhbGx5IG5lZWRzLgorCitETyBOT1QgQUJVU0UgU1lTRlMgVE8gQ09OVFJPTCBIQVJEV0FSRSBUSEFUIEhBUyBQUk9QRVIgS0VSTkVMIERSSVZFUlMuCitQTEVBU0UgUkVBRCBUSEUgRE9DVU1FTlQgTkFNRUQgImRyaXZlcnMtb24tZ3Bpby50eHQiIElOIFRISVMgRE9DVU1FTlRBVElPTgorRElSRUNUT1JZIFRPIEFWT0lEIFJFSU5WRU5USU5HIEtFUk5FTCBXSEVFTFMgSU4gVVNFUlNQQUNFLiBJIE1FQU4gSVQuCitSRUFMTFkuCisKK1BhdGhzIGluIFN5c2ZzCistLS0tLS0tLS0tLS0tLQorVGhlcmUgYXJlIHRocmVlIGtpbmRzIG9mIGVudHJpZXMgaW4gL3N5cy9jbGFzcy9ncGlvOgorCisgICAtCUNvbnRyb2wgaW50ZXJmYWNlcyB1c2VkIHRvIGdldCB1c2Vyc3BhY2UgY29udHJvbCBvdmVyIEdQSU9zOworCisgICAtCUdQSU9zIHRoZW1zZWx2ZXM7IGFuZAorCisgICAtCUdQSU8gY29udHJvbGxlcnMgKCJncGlvX2NoaXAiIGluc3RhbmNlcykuCisKK1RoYXQncyBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBmaWxlcyBpbmNsdWRpbmcgdGhlICJkZXZpY2UiIHN5bWxpbmsuCisKK1RoZSBjb250cm9sIGludGVyZmFjZXMgYXJlIHdyaXRlLW9ubHk6CisKKyAgICAvc3lzL2NsYXNzL2dwaW8vCisKKyAgICAJImV4cG9ydCIgLi4uIFVzZXJzcGFjZSBtYXkgYXNrIHRoZSBrZXJuZWwgdG8gZXhwb3J0IGNvbnRyb2wgb2YKKwkJYSBHUElPIHRvIHVzZXJzcGFjZSBieSB3cml0aW5nIGl0cyBudW1iZXIgdG8gdGhpcyBmaWxlLgorCisJCUV4YW1wbGU6ICAiZWNobyAxOSA+IGV4cG9ydCIgd2lsbCBjcmVhdGUgYSAiZ3BpbzE5IiBub2RlCisJCWZvciBHUElPICMxOSwgaWYgdGhhdCdzIG5vdCByZXF1ZXN0ZWQgYnkga2VybmVsIGNvZGUuCisKKyAgICAJInVuZXhwb3J0IiAuLi4gUmV2ZXJzZXMgdGhlIGVmZmVjdCBvZiBleHBvcnRpbmcgdG8gdXNlcnNwYWNlLgorCisJCUV4YW1wbGU6ICAiZWNobyAxOSA+IHVuZXhwb3J0IiB3aWxsIHJlbW92ZSBhICJncGlvMTkiCisJCW5vZGUgZXhwb3J0ZWQgdXNpbmcgdGhlICJleHBvcnQiIGZpbGUuCisKK0dQSU8gc2lnbmFscyBoYXZlIHBhdGhzIGxpa2UgL3N5cy9jbGFzcy9ncGlvL2dwaW80Mi8gKGZvciBHUElPICM0MikKK2FuZCBoYXZlIHRoZSBmb2xsb3dpbmcgcmVhZC93cml0ZSBhdHRyaWJ1dGVzOgorCisgICAgL3N5cy9jbGFzcy9ncGlvL2dwaW9OLworCisJImRpcmVjdGlvbiIgLi4uIHJlYWRzIGFzIGVpdGhlciAiaW4iIG9yICJvdXQiLiBUaGlzIHZhbHVlIG1heQorCQlub3JtYWxseSBiZSB3cml0dGVuLiBXcml0aW5nIGFzICJvdXQiIGRlZmF1bHRzIHRvCisJCWluaXRpYWxpemluZyB0aGUgdmFsdWUgYXMgbG93LiBUbyBlbnN1cmUgZ2xpdGNoIGZyZWUKKwkJb3BlcmF0aW9uLCB2YWx1ZXMgImxvdyIgYW5kICJoaWdoIiBtYXkgYmUgd3JpdHRlbiB0bworCQljb25maWd1cmUgdGhlIEdQSU8gYXMgYW4gb3V0cHV0IHdpdGggdGhhdCBpbml0aWFsIHZhbHVlLgorCisJCU5vdGUgdGhhdCB0aGlzIGF0dHJpYnV0ZSAqd2lsbCBub3QgZXhpc3QqIGlmIHRoZSBrZXJuZWwKKwkJZG9lc24ndCBzdXBwb3J0IGNoYW5naW5nIHRoZSBkaXJlY3Rpb24gb2YgYSBHUElPLCBvcgorCQlpdCB3YXMgZXhwb3J0ZWQgYnkga2VybmVsIGNvZGUgdGhhdCBkaWRuJ3QgZXhwbGljaXRseQorCQlhbGxvdyB1c2Vyc3BhY2UgdG8gcmVjb25maWd1cmUgdGhpcyBHUElPJ3MgZGlyZWN0aW9uLgorCisJInZhbHVlIiAuLi4gcmVhZHMgYXMgZWl0aGVyIDAgKGxvdykgb3IgMSAoaGlnaCkuIElmIHRoZSBHUElPCisJCWlzIGNvbmZpZ3VyZWQgYXMgYW4gb3V0cHV0LCB0aGlzIHZhbHVlIG1heSBiZSB3cml0dGVuOworCQlhbnkgbm9uemVybyB2YWx1ZSBpcyB0cmVhdGVkIGFzIGhpZ2guCisKKwkJSWYgdGhlIHBpbiBjYW4gYmUgY29uZmlndXJlZCBhcyBpbnRlcnJ1cHQtZ2VuZXJhdGluZyBpbnRlcnJ1cHQKKwkJYW5kIGlmIGl0IGhhcyBiZWVuIGNvbmZpZ3VyZWQgdG8gZ2VuZXJhdGUgaW50ZXJydXB0cyAoc2VlIHRoZQorCQlkZXNjcmlwdGlvbiBvZiAiZWRnZSIpLCB5b3UgY2FuIHBvbGwoMikgb24gdGhhdCBmaWxlIGFuZAorCQlwb2xsKDIpIHdpbGwgcmV0dXJuIHdoZW5ldmVyIHRoZSBpbnRlcnJ1cHQgd2FzIHRyaWdnZXJlZC4gSWYKKwkJeW91IHVzZSBwb2xsKDIpLCBzZXQgdGhlIGV2ZW50cyBQT0xMUFJJIGFuZCBQT0xMRVJSLiBJZiB5b3UKKwkJdXNlIHNlbGVjdCgyKSwgc2V0IHRoZSBmaWxlIGRlc2NyaXB0b3IgaW4gZXhjZXB0ZmRzLiBBZnRlcgorCQlwb2xsKDIpIHJldHVybnMsIGVpdGhlciBsc2VlaygyKSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzeXNmcworCQlmaWxlIGFuZCByZWFkIHRoZSBuZXcgdmFsdWUgb3IgY2xvc2UgdGhlIGZpbGUgYW5kIHJlLW9wZW4gaXQKKwkJdG8gcmVhZCB0aGUgdmFsdWUuCisKKwkiZWRnZSIgLi4uIHJlYWRzIGFzIGVpdGhlciAibm9uZSIsICJyaXNpbmciLCAiZmFsbGluZyIsIG9yCisJCSJib3RoIi4gV3JpdGUgdGhlc2Ugc3RyaW5ncyB0byBzZWxlY3QgdGhlIHNpZ25hbCBlZGdlKHMpCisJCXRoYXQgd2lsbCBtYWtlIHBvbGwoMikgb24gdGhlICJ2YWx1ZSIgZmlsZSByZXR1cm4uCisKKwkJVGhpcyBmaWxlIGV4aXN0cyBvbmx5IGlmIHRoZSBwaW4gY2FuIGJlIGNvbmZpZ3VyZWQgYXMgYW4KKwkJaW50ZXJydXB0IGdlbmVyYXRpbmcgaW5wdXQgcGluLgorCisJImFjdGl2ZV9sb3ciIC4uLiByZWFkcyBhcyBlaXRoZXIgMCAoZmFsc2UpIG9yIDEgKHRydWUpLiBXcml0ZQorCQlhbnkgbm9uemVybyB2YWx1ZSB0byBpbnZlcnQgdGhlIHZhbHVlIGF0dHJpYnV0ZSBib3RoCisJCWZvciByZWFkaW5nIGFuZCB3cml0aW5nLiBFeGlzdGluZyBhbmQgc3Vic2VxdWVudAorCQlwb2xsKDIpIHN1cHBvcnQgY29uZmlndXJhdGlvbiB2aWEgdGhlIGVkZ2UgYXR0cmlidXRlCisJCWZvciAicmlzaW5nIiBhbmQgImZhbGxpbmciIGVkZ2VzIHdpbGwgZm9sbG93IHRoaXMKKwkJc2V0dGluZy4KKworR1BJTyBjb250cm9sbGVycyBoYXZlIHBhdGhzIGxpa2UgL3N5cy9jbGFzcy9ncGlvL2dwaW9jaGlwNDIvIChmb3IgdGhlCitjb250cm9sbGVyIGltcGxlbWVudGluZyBHUElPcyBzdGFydGluZyBhdCAjNDIpIGFuZCBoYXZlIHRoZSBmb2xsb3dpbmcKK3JlYWQtb25seSBhdHRyaWJ1dGVzOgorCisgICAgL3N5cy9jbGFzcy9ncGlvL2dwaW9jaGlwTi8KKworICAgIAkiYmFzZSIgLi4uIHNhbWUgYXMgTiwgdGhlIGZpcnN0IEdQSU8gbWFuYWdlZCBieSB0aGlzIGNoaXAKKworICAgIAkibGFiZWwiIC4uLiBwcm92aWRlZCBmb3IgZGlhZ25vc3RpY3MgKG5vdCBhbHdheXMgdW5pcXVlKQorCisgICAgICAgICJuZ3BpbyIgLi4uIGhvdyBtYW55IEdQSU9zIHRoaXMgbWFuYWdlcyAoTiB0byBOICsgbmdwaW8gLSAxKQorCitCb2FyZCBkb2N1bWVudGF0aW9uIHNob3VsZCBpbiBtb3N0IGNhc2VzIGNvdmVyIHdoYXQgR1BJT3MgYXJlIHVzZWQgZm9yCit3aGF0IHB1cnBvc2VzLiBIb3dldmVyLCB0aG9zZSBudW1iZXJzIGFyZSBub3QgYWx3YXlzIHN0YWJsZTsgR1BJT3Mgb24KK2EgZGF1Z2h0ZXJjYXJkIG1pZ2h0IGJlIGRpZmZlcmVudCBkZXBlbmRpbmcgb24gdGhlIGJhc2UgYm9hcmQgYmVpbmcgdXNlZCwKK29yIG90aGVyIGNhcmRzIGluIHRoZSBzdGFjay4gSW4gc3VjaCBjYXNlcywgeW91IG1heSBuZWVkIHRvIHVzZSB0aGUKK2dwaW9jaGlwIG5vZGVzIChwb3NzaWJseSBpbiBjb25qdW5jdGlvbiB3aXRoIHNjaGVtYXRpY3MpIHRvIGRldGVybWluZQordGhlIGNvcnJlY3QgR1BJTyBudW1iZXIgdG8gdXNlIGZvciBhIGdpdmVuIHNpZ25hbC4KKworCitFeHBvcnRpbmcgZnJvbSBLZXJuZWwgY29kZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0tlcm5lbCBjb2RlIGNhbiBleHBsaWNpdGx5IG1hbmFnZSBleHBvcnRzIG9mIEdQSU9zIHdoaWNoIGhhdmUgYWxyZWFkeSBiZWVuCityZXF1ZXN0ZWQgdXNpbmcgZ3Bpb19yZXF1ZXN0KCk6CisKKwkvKiBleHBvcnQgdGhlIEdQSU8gdG8gdXNlcnNwYWNlICovCisJaW50IGdwaW9kX2V4cG9ydChzdHJ1Y3QgZ3Bpb19kZXNjICpkZXNjLCBib29sIGRpcmVjdGlvbl9tYXlfY2hhbmdlKTsKKworCS8qIHJldmVyc2UgZ3Bpb19leHBvcnQoKSAqLworCXZvaWQgZ3Bpb2RfdW5leHBvcnQoc3RydWN0IGdwaW9fZGVzYyAqZGVzYyk7CisKKwkvKiBjcmVhdGUgYSBzeXNmcyBsaW5rIHRvIGFuIGV4cG9ydGVkIEdQSU8gbm9kZSAqLworCWludCBncGlvZF9leHBvcnRfbGluayhzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKm5hbWUsCisJCSAgICAgIHN0cnVjdCBncGlvX2Rlc2MgKmRlc2MpOworCitBZnRlciBhIGtlcm5lbCBkcml2ZXIgcmVxdWVzdHMgYSBHUElPLCBpdCBtYXkgb25seSBiZSBtYWRlIGF2YWlsYWJsZSBpbgordGhlIHN5c2ZzIGludGVyZmFjZSBieSBncGlvZF9leHBvcnQoKS4gVGhlIGRyaXZlciBjYW4gY29udHJvbCB3aGV0aGVyIHRoZQorc2lnbmFsIGRpcmVjdGlvbiBtYXkgY2hhbmdlLiBUaGlzIGhlbHBzIGRyaXZlcnMgcHJldmVudCB1c2Vyc3BhY2UgY29kZQorZnJvbSBhY2NpZGVudGFsbHkgY2xvYmJlcmluZyBpbXBvcnRhbnQgc3lzdGVtIHN0YXRlLgorCitUaGlzIGV4cGxpY2l0IGV4cG9ydGluZyBjYW4gaGVscCB3aXRoIGRlYnVnZ2luZyAoYnkgbWFraW5nIHNvbWUga2luZHMKK29mIGV4cGVyaW1lbnRzIGVhc2llciksIG9yIGNhbiBwcm92aWRlIGFuIGFsd2F5cy10aGVyZSBpbnRlcmZhY2UgdGhhdCdzCitzdWl0YWJsZSBmb3IgZG9jdW1lbnRpbmcgYXMgcGFydCBvZiBhIGJvYXJkIHN1cHBvcnQgcGFja2FnZS4KKworQWZ0ZXIgdGhlIEdQSU8gaGFzIGJlZW4gZXhwb3J0ZWQsIGdwaW9kX2V4cG9ydF9saW5rKCkgYWxsb3dzIGNyZWF0aW5nCitzeW1saW5rcyBmcm9tIGVsc2V3aGVyZSBpbiBzeXNmcyB0byB0aGUgR1BJTyBzeXNmcyBub2RlLiBEcml2ZXJzIGNhbgordXNlIHRoaXMgdG8gcHJvdmlkZSB0aGUgaW50ZXJmYWNlIHVuZGVyIHRoZWlyIG93biBkZXZpY2UgaW4gc3lzZnMgd2l0aAorYSBkZXNjcmlwdGl2ZSBuYW1lLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9oaWQvaGlkLXNlbnNvci50eHQgYi9Eb2N1bWVudGF0aW9uL2hpZC9oaWQtc2Vuc29yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjg3NzUyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9oaWQvaGlkLXNlbnNvci50eHQKQEAgLTAsMCArMSwyMjQgQEAKKworSElEIFNlbnNvcnMgRnJhbWV3b3JrCis9PT09PT09PT09PT09PT09PT09PT09CitISUQgc2Vuc29yIGZyYW1ld29yayBwcm92aWRlcyBuZWNlc3NhcnkgaW50ZXJmYWNlcyB0byBpbXBsZW1lbnQgc2Vuc29yIGRyaXZlcnMsCit3aGljaCBhcmUgY29ubmVjdGVkIHRvIGEgc2Vuc29yIGh1Yi4gVGhlIHNlbnNvciBodWIgaXMgYSBISUQgZGV2aWNlIGFuZCBpdCBwcm92aWRlcworYSByZXBvcnQgZGVzY3JpcHRvciBjb25mb3JtaW5nIHRvIEhJRCAxLjEyIHNlbnNvciB1c2FnZSB0YWJsZXMuCisKK0Rlc2NyaXB0aW9uIGZyb20gdGhlIEhJRCAxLjEyICJISUQgU2Vuc29yIFVzYWdlcyIgc3BlY2lmaWNhdGlvbjoKKyJTdGFuZGFyZGl6YXRpb24gb2YgSElEIHVzYWdlcyBmb3Igc2Vuc29ycyB3b3VsZCBhbGxvdyAoYnV0IG5vdCByZXF1aXJlKSBzZW5zb3IKK2hhcmR3YXJlIHZlbmRvcnMgdG8gcHJvdmlkZSBhIGNvbnNpc3RlbnQgUGx1ZyBBbmQgUGxheSBpbnRlcmZhY2UgYXQgdGhlIFVTQiBib3VuZGFyeSwKK3RoZXJlYnkgZW5hYmxpbmcgc29tZSBvcGVyYXRpbmcgc3lzdGVtcyB0byBpbmNvcnBvcmF0ZSBjb21tb24gZGV2aWNlIGRyaXZlcnMgdGhhdAorY291bGQgYmUgcmV1c2VkIGJldHdlZW4gdmVuZG9ycywgYWxsZXZpYXRpbmcgYW55IG5lZWQgZm9yIHRoZSB2ZW5kb3JzIHRvIHByb3ZpZGUKK3RoZSBkcml2ZXJzIHRoZW1zZWx2ZXMuIgorCitUaGlzIHNwZWNpZmljYXRpb24gZGVzY3JpYmVzIG1hbnkgdXNhZ2UgSURzLCB3aGljaCBkZXNjcmliZSB0aGUgdHlwZSBvZiBzZW5zb3IKK2FuZCBhbHNvIHRoZSBpbmRpdmlkdWFsIGRhdGEgZmllbGRzLiBFYWNoIHNlbnNvciBjYW4gaGF2ZSB2YXJpYWJsZSBudW1iZXIgb2YKK2RhdGEgZmllbGRzLiBUaGUgbGVuZ3RoIGFuZCBvcmRlciBpcyBzcGVjaWZpZWQgaW4gdGhlIHJlcG9ydCBkZXNjcmlwdG9yLiBGb3IKK2V4YW1wbGUgYSBwYXJ0IG9mIHJlcG9ydCBkZXNjcmlwdG9yIGNhbiBsb29rIGxpa2U6CisKKyAgIElOUFVUKDEpW0lOUFVUXQorIC4uCisgICAgRmllbGQoMikKKyAgICAgIFBoeXNpY2FsKDAwMjAuMDA3MykKKyAgICAgIFVzYWdlKDEpCisgICAgICAgIDAwMjAuMDQ1ZgorICAgICAgTG9naWNhbCBNaW5pbXVtKC0zMjc2NykKKyAgICAgIExvZ2ljYWwgTWF4aW11bSgzMjc2NykKKyAgICAgIFJlcG9ydCBTaXplKDgpCisgICAgICBSZXBvcnQgQ291bnQoMSkKKyAgICAgIFJlcG9ydCBPZmZzZXQoMTYpCisgICAgICBGbGFncyhWYXJpYWJsZSBBYnNvbHV0ZSkKKy4uCisuLgorCitUaGUgcmVwb3J0IGlzIGluZGljYXRpbmcgInNlbnNvciBwYWdlICgweDIwKSIgY29udGFpbnMgYW4gYWNjZWxlcm9tZXRlci0zRCAoMHg3MykuCitUaGlzIGFjY2VsZXJvbWV0ZXItM0QgaGFzIHNvbWUgZmllbGRzLiBIZXJlIGZvciBleGFtcGxlIGZpZWxkIDIgaXMgbW90aW9uIGludGVuc2l0eQorKDB4MDQ1Zikgd2l0aCBhIGxvZ2ljYWwgbWluaW11bSB2YWx1ZSBvZiAtMzI3NjcgYW5kIGxvZ2ljYWwgbWF4aW11bSBvZiAzMjc2Ny4gVGhlCitvcmRlciBvZiBmaWVsZHMgYW5kIGxlbmd0aCBvZiBlYWNoIGZpZWxkIGlzIGltcG9ydGFudCBhcyB0aGUgaW5wdXQgZXZlbnQgcmF3CitkYXRhIHdpbGwgdXNlIHRoaXMgZm9ybWF0LgorCisKK0ltcGxlbWVudGF0aW9uCis9PT09PT09PT09PT09PT09PQorCitUaGlzIHNwZWNpZmljYXRpb24gZGVmaW5lcyBtYW55IGRpZmZlcmVudCB0eXBlcyBvZiBzZW5zb3JzIHdpdGggZGlmZmVyZW50IHNldHMgb2YKK2RhdGEgZmllbGRzLiBJdCBpcyBkaWZmaWN1bHQgdG8gaGF2ZSBhIGNvbW1vbiBpbnB1dCBldmVudCB0byB1c2VyIHNwYWNlIGFwcGxpY2F0aW9ucywKK2ZvciBkaWZmZXJlbnQgc2Vuc29ycy4gRm9yIGV4YW1wbGUgYW4gYWNjZWxlcm9tZXRlciBjYW4gc2VuZCBYLFkgYW5kIFogZGF0YSwgd2hlcmVhcworYW4gYW1iaWVudCBsaWdodCBzZW5zb3IgY2FuIHNlbmQgaWxsdW1pbmF0aW9uIGRhdGEuCitTbyB0aGUgaW1wbGVtZW50YXRpb24gaGFzIHR3byBwYXJ0czoKKy0gQ29yZSBoaWQgZHJpdmVyCistIEluZGl2aWR1YWwgc2Vuc29yIHByb2Nlc3NpbmcgcGFydCAoc2Vuc29yIGRyaXZlcnMpCisKK0NvcmUgZHJpdmVyCistLS0tLS0tLS0tLQorVGhlIGNvcmUgZHJpdmVyIHJlZ2lzdGVycyAoaGlkLXNlbnNvci1odWIpIHJlZ2lzdGVycyBhcyBhIEhJRCBkcml2ZXIuIEl0IHBhcnNlcworcmVwb3J0IGRlc2NyaXB0b3JzIGFuZCBpZGVudGlmaWVzIGFsbCB0aGUgc2Vuc29ycyBwcmVzZW50LiBJdCBhZGRzIGFuIE1GRCBkZXZpY2UKK3dpdGggbmFtZSBISUQtU0VOU09SLXh4eHggKHdoZXJlIHh4eHggaXMgdXNhZ2UgaWQgZnJvbSB0aGUgc3BlY2lmaWNhdGlvbikuCitGb3IgZXhhbXBsZQorSElELVNFTlNPUi0yMDAwNzMgaXMgcmVnaXN0ZXJlZCBmb3IgYW4gQWNjZWxlcm9tZXRlciAzRCBkcml2ZXIuCitTbyBpZiBhbnkgZHJpdmVyIHdpdGggdGhpcyBuYW1lIGlzIGluc2VydGVkLCB0aGVuIHRoZSBwcm9iZSByb3V0aW5lIGZvciB0aGF0CitmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZC4gU28gYW4gYWNjZWxlcm9tZXRlciBwcm9jZXNzaW5nIGRyaXZlciBjYW4gcmVnaXN0ZXIKK3dpdGggdGhpcyBuYW1lIGFuZCB3aWxsIGJlIHByb2JlZCBpZiB0aGVyZSBpcyBhbiBhY2NlbGVyb21ldGVyLTNEIGRldGVjdGVkLgorCitUaGUgY29yZSBkcml2ZXIgcHJvdmlkZXMgYSBzZXQgb2YgQVBJcyB3aGljaCBjYW4gYmUgdXNlZCBieSB0aGUgcHJvY2Vzc2luZworZHJpdmVycyB0byByZWdpc3RlciBhbmQgZ2V0IGV2ZW50cyBmb3IgdGhhdCB1c2FnZSBpZC4gQWxzbyBpdCBwcm92aWRlcyBwYXJzaW5nCitmdW5jdGlvbnMsIHdoaWNoIGdldCBhbmQgc2V0IGVhY2ggaW5wdXQvZmVhdHVyZS9vdXRwdXQgcmVwb3J0LgorCitJbmRpdmlkdWFsIHNlbnNvciBwcm9jZXNzaW5nIHBhcnQgKHNlbnNvciBkcml2ZXJzKQorLS0tLS0tLS0tLS0KK1RoZSBwcm9jZXNzaW5nIGRyaXZlciB3aWxsIHVzZSBhbiBpbnRlcmZhY2UgcHJvdmlkZWQgYnkgdGhlIGNvcmUgZHJpdmVyIHRvIHBhcnNlCit0aGUgcmVwb3J0IGFuZCBnZXQgdGhlIGluZGV4ZXMgb2YgdGhlIGZpZWxkcyBhbmQgYWxzbyBjYW4gZ2V0IGV2ZW50cy4gVGhpcyBkcml2ZXIKK2NhbiB1c2UgSUlPIGludGVyZmFjZSB0byB1c2UgdGhlIHN0YW5kYXJkIEFCSSBkZWZpbmVkIGZvciBhIHR5cGUgb2Ygc2Vuc29yLgorCisKK0NvcmUgZHJpdmVyIEludGVyZmFjZQorPT09PT09PT09PT09PT09PT09PT09CisKK0NhbGxiYWNrIHN0cnVjdHVyZToKK0VhY2ggcHJvY2Vzc2luZyBkcml2ZXIgY2FuIHVzZSB0aGlzIHN0cnVjdHVyZSB0byBzZXQgc29tZSBjYWxsYmFja3MuCisJaW50ICgqc3VzcGVuZCkoLi4pOiBDYWxsYmFjayB3aGVuIEhJRCBzdXNwZW5kIGlzIHJlY2VpdmVkCisJaW50ICgqcmVzdW1lKSguLik6IENhbGxiYWNrIHdoZW4gSElEIHJlc3VtZSBpcyByZWNlaXZlZAorCWludCAoKmNhcHR1cmVfc2FtcGxlKSguLik6IENhcHR1cmUgYSBzYW1wbGUgZm9yIG9uZSBvZiBpdHMgZGF0YSBmaWVsZHMKKwlpbnQgKCpzZW5kX2V2ZW50KSguLik6IE9uZSBjb21wbGV0ZSBldmVudCBpcyByZWNlaXZlZCB3aGljaCBjYW4gaGF2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIGRhdGEgZmllbGRzLgorCitSZWdpc3RyYXRpb24gZnVuY3Rpb25zOgoraW50IHNlbnNvcl9odWJfcmVnaXN0ZXJfY2FsbGJhY2soc3RydWN0IGhpZF9zZW5zb3JfaHViX2RldmljZSAqaHNkZXYsCisJCQl1MzIgdXNhZ2VfaWQsCisJCQlzdHJ1Y3QgaGlkX3NlbnNvcl9odWJfY2FsbGJhY2tzICp1c2FnZV9jYWxsYmFjayk6CisKK1JlZ2lzdGVycyBjYWxsYmFja3MgZm9yIGFuIHVzYWdlIGlkLiBUaGUgY2FsbGJhY2sgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZAordG8gc2xlZXAuCisKKworaW50IHNlbnNvcl9odWJfcmVtb3ZlX2NhbGxiYWNrKHN0cnVjdCBoaWRfc2Vuc29yX2h1Yl9kZXZpY2UgKmhzZGV2LAorCQkJdTMyIHVzYWdlX2lkKToKKworUmVtb3ZlcyBjYWxsYmFja3MgZm9yIGFuIHVzYWdlIGlkLgorCisKK1BhcnNpbmcgZnVuY3Rpb246CitpbnQgc2Vuc29yX2h1Yl9pbnB1dF9nZXRfYXR0cmlidXRlX2luZm8oc3RydWN0IGhpZF9zZW5zb3JfaHViX2RldmljZSAqaHNkZXYsCisJCQl1OCB0eXBlLAorCQkJdTMyIHVzYWdlX2lkLCB1MzIgYXR0cl91c2FnZV9pZCwKKwkJCXN0cnVjdCBoaWRfc2Vuc29yX2h1Yl9hdHRyaWJ1dGVfaW5mbyAqaW5mbyk7CisKK0EgcHJvY2Vzc2luZyBkcml2ZXIgY2FuIGxvb2sgZm9yIHNvbWUgZmllbGQgb2YgaW50ZXJlc3QgYW5kIGNoZWNrIGlmIGl0IGV4aXN0cworaW4gYSByZXBvcnQgZGVzY3JpcHRvci4gSWYgaXQgZXhpc3RzIGl0IHdpbGwgc3RvcmUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uCitzbyB0aGF0IGZpZWxkcyBjYW4gYmUgc2V0IG9yIGdldCBpbmRpdmlkdWFsbHkuCitUaGVzZSBpbmRleGVzIGF2b2lkIHNlYXJjaGluZyBldmVyeSB0aW1lIGFuZCBnZXR0aW5nIGZpZWxkIGluZGV4IHRvIGdldCBvciBzZXQuCisKKworU2V0IEZlYXR1cmUgcmVwb3J0CitpbnQgc2Vuc29yX2h1Yl9zZXRfZmVhdHVyZShzdHJ1Y3QgaGlkX3NlbnNvcl9odWJfZGV2aWNlICpoc2RldiwgdTMyIHJlcG9ydF9pZCwKKwkJCXUzMiBmaWVsZF9pbmRleCwgczMyIHZhbHVlKTsKKworVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCB0byBzZXQgYSB2YWx1ZSBmb3IgYSBmaWVsZCBpbiBmZWF0dXJlIHJlcG9ydC4gRm9yIGV4YW1wbGUKK2lmIHRoZXJlIGlzIGEgZmllbGQgcmVwb3J0X2ludGVydmFsLCB3aGljaCBpcyBwYXJzZWQgYnkgYSBjYWxsIHRvCitzZW5zb3JfaHViX2lucHV0X2dldF9hdHRyaWJ1dGVfaW5mbyBiZWZvcmUsIHRoZW4gaXQgY2FuIGRpcmVjdGx5IHNldCB0aGF0IGluZGl2aWR1YWwKK2ZpZWxkLgorCisKK2ludCBzZW5zb3JfaHViX2dldF9mZWF0dXJlKHN0cnVjdCBoaWRfc2Vuc29yX2h1Yl9kZXZpY2UgKmhzZGV2LCB1MzIgcmVwb3J0X2lkLAorCQkJdTMyIGZpZWxkX2luZGV4LCBzMzIgKnZhbHVlKTsKKworVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCB0byBnZXQgYSB2YWx1ZSBmb3IgYSBmaWVsZCBpbiBpbnB1dCByZXBvcnQuIEZvciBleGFtcGxlCitpZiB0aGVyZSBpcyBhIGZpZWxkIHJlcG9ydF9pbnRlcnZhbCwgd2hpY2ggaXMgcGFyc2VkIGJ5IGEgY2FsbCB0bworc2Vuc29yX2h1Yl9pbnB1dF9nZXRfYXR0cmlidXRlX2luZm8gYmVmb3JlLCB0aGVuIGl0IGNhbiBkaXJlY3RseSBnZXQgdGhhdCBpbmRpdmlkdWFsCitmaWVsZCB2YWx1ZS4KKworCitpbnQgc2Vuc29yX2h1Yl9pbnB1dF9hdHRyX2dldF9yYXdfdmFsdWUoc3RydWN0IGhpZF9zZW5zb3JfaHViX2RldmljZSAqaHNkZXYsCisJCQl1MzIgdXNhZ2VfaWQsCisJCQl1MzIgYXR0cl91c2FnZV9pZCwgdTMyIHJlcG9ydF9pZCk7CisKK1RoaXMgaXMgdXNlZCB0byBnZXQgYSBwYXJ0aWN1bGFyIGZpZWxkIHZhbHVlIHRocm91Z2ggaW5wdXQgcmVwb3J0cy4gRm9yIGV4YW1wbGUKK2FjY2VsZXJvbWV0ZXIgd2FudHMgdG8gcG9sbCBYIGF4aXMgdmFsdWUsIHRoZW4gaXQgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiB3aXRoCit0aGUgdXNhZ2UgaWQgb2YgWCBheGlzLiBISUQgc2Vuc29ycyBjYW4gcHJvdmlkZSBldmVudHMsIHNvIHRoaXMgaXMgbm90IG5lY2Vzc2FyeQordG8gcG9sbCBmb3IgYW55IGZpZWxkLiBJZiB0aGVyZSBpcyBzb21lIG5ldyBzYW1wbGUsIHRoZSBjb3JlIGRyaXZlciB3aWxsIGNhbGwKK3JlZ2lzdGVyZWQgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcHJvY2VzcyB0aGUgc2FtcGxlLgorCisKKy0tLS0tLS0tLS0KKworSElEIEN1c3RvbSBhbmQgZ2VuZXJpYyBTZW5zb3JzCisKK0hJRCBTZW5zb3Igc3BlY2lmaWNhdGlvbiBkZWZpbmVzIHR3byBzcGVjaWFsIHNlbnNvciB1c2FnZSB0eXBlcy4gU2luY2UgdGhleQorZG9uJ3QgcmVwcmVzZW50IGEgc3RhbmRhcmQgc2Vuc29yLCBpdCBpcyBub3QgcG9zc2libGUgdG8gZGVmaW5lIHVzaW5nIExpbnV4IElJTwordHlwZSBpbnRlcmZhY2VzLgorVGhlIHB1cnBvc2Ugb2YgdGhlc2Ugc2Vuc29ycyBpcyB0byBleHRlbmQgdGhlIGZ1bmN0aW9uYWxpdHkgb3IgcHJvdmlkZSBhCit3YXkgdG8gb2JmdXNjYXRlIHRoZSBkYXRhIGJlaW5nIGNvbW11bmljYXRlZCBieSBhIHNlbnNvci4gV2l0aG91dCBrbm93aW5nIHRoZQorbWFwcGluZyBiZXR3ZWVuIHRoZSBkYXRhIGFuZCBpdHMgZW5jYXBzdWxhdGVkIGZvcm0sIGl0IGlzIGRpZmZpY3VsdCBmb3IKK2FuIGFwcGxpY2F0aW9uL2RyaXZlciB0byBkZXRlcm1pbmUgd2hhdCBkYXRhIGlzIGJlaW5nIGNvbW11bmljYXRlZCBieSB0aGUgc2Vuc29yLgorVGhpcyBhbGxvd3Mgc29tZSBkaWZmZXJlbnRpYXRpbmcgdXNlIGNhc2VzLCB3aGVyZSB2ZW5kb3IgY2FuIHByb3ZpZGUgYXBwbGljYXRpb25zLgorU29tZSBjb21tb24gdXNlIGNhc2VzIGFyZSBkZWJ1ZyBvdGhlciBzZW5zb3JzIG9yIHRvIHByb3ZpZGUgc29tZSBldmVudHMgbGlrZQora2V5Ym9hcmQgYXR0YWNoZWQvZGV0YWNoZWQgb3IgbGlkIG9wZW4vY2xvc2UuCisKK1RvIGFsbG93IGFwcGxpY2F0aW9uIHRvIHV0aWxpemUgdGhlc2Ugc2Vuc29ycywgaGVyZSB0aGV5IGFyZSBleHBvcnRlZCB1c2VzIHN5c2ZzCithdHRyaWJ1dGUgZ3JvdXBzLCBhdHRyaWJ1dGVzIGFuZCBtaXNjIGRldmljZSBpbnRlcmZhY2UuCisKK0FuIGV4YW1wbGUgb2YgdGhpcyByZXByZXNlbnRhdGlvbiBvbiBzeXNmczoKKy9zeXMvZGV2aWNlcy9wY2kwMDAwOjAwL0lOVDMzQzI6MDAvaTJjLTAvaTJjLUlOVDMzRDE6MDAvMDAxODo4MDg2OjA5RkEuMDAwMS9ISUQtU0VOU09SLTIwMDBlMS42LmF1dG8kIHRyZWUgLVIKKy4KKz8/Pz8/Pz8/PyBlbmFibGVfc2Vuc29yCis/Pz8/Pz8/Pz8gZmVhdHVyZS0wLTIwMDMxNgorPz8/Pz8/PyA/Pz8/Pz8/Pz8gZmVhdHVyZS0wLTIwMDMxNi1tYXhpbXVtCis/Pz8/Pz8/ID8/Pz8/Pz8/PyBmZWF0dXJlLTAtMjAwMzE2LW1pbmltdW0KKz8/Pz8/Pz8gPz8/Pz8/Pz8/IGZlYXR1cmUtMC0yMDAzMTYtbmFtZQorPz8/Pz8/PyA/Pz8/Pz8/Pz8gZmVhdHVyZS0wLTIwMDMxNi1zaXplCis/Pz8/Pz8/ID8/Pz8/Pz8/PyBmZWF0dXJlLTAtMjAwMzE2LXVuaXQtZXhwbworPz8/Pz8/PyA/Pz8/Pz8/Pz8gZmVhdHVyZS0wLTIwMDMxNi11bml0cworPz8/Pz8/PyA/Pz8/Pz8/Pz8gZmVhdHVyZS0wLTIwMDMxNi12YWx1ZQorPz8/Pz8/Pz8/IGZlYXR1cmUtMS0yMDAyMDEKKz8/Pz8/Pz8gPz8/Pz8/Pz8/IGZlYXR1cmUtMS0yMDAyMDEtbWF4aW11bQorPz8/Pz8/PyA/Pz8/Pz8/Pz8gZmVhdHVyZS0xLTIwMDIwMS1taW5pbXVtCis/Pz8/Pz8/ID8/Pz8/Pz8/PyBmZWF0dXJlLTEtMjAwMjAxLW5hbWUKKz8/Pz8/Pz8gPz8/Pz8/Pz8/IGZlYXR1cmUtMS0yMDAyMDEtc2l6ZQorPz8/Pz8/PyA/Pz8/Pz8/Pz8gZmVhdHVyZS0xLTIwMDIwMS11bml0LWV4cG8KKz8/Pz8/Pz8gPz8/Pz8/Pz8/IGZlYXR1cmUtMS0yMDAyMDEtdW5pdHMKKz8/Pz8/Pz8gPz8/Pz8/Pz8/IGZlYXR1cmUtMS0yMDAyMDEtdmFsdWUKKz8/Pz8/Pz8/PyBpbnB1dC0wLTIwMDIwMQorPz8/Pz8/PyA/Pz8/Pz8/Pz8gaW5wdXQtMC0yMDAyMDEtbWF4aW11bQorPz8/Pz8/PyA/Pz8/Pz8/Pz8gaW5wdXQtMC0yMDAyMDEtbWluaW11bQorPz8/Pz8/PyA/Pz8/Pz8/Pz8gaW5wdXQtMC0yMDAyMDEtbmFtZQorPz8/Pz8/PyA/Pz8/Pz8/Pz8gaW5wdXQtMC0yMDAyMDEtc2l6ZQorPz8/Pz8/PyA/Pz8/Pz8/Pz8gaW5wdXQtMC0yMDAyMDEtdW5pdC1leHBvCis/Pz8/Pz8/ID8/Pz8/Pz8/PyBpbnB1dC0wLTIwMDIwMS11bml0cworPz8/Pz8/PyA/Pz8/Pz8/Pz8gaW5wdXQtMC0yMDAyMDEtdmFsdWUKKz8/Pz8/Pz8/PyBpbnB1dC0xLTIwMDIwMgorPz8/Pz8/PyA/Pz8/Pz8/Pz8gaW5wdXQtMS0yMDAyMDItbWF4aW11bQorPz8/Pz8/PyA/Pz8/Pz8/Pz8gaW5wdXQtMS0yMDAyMDItbWluaW11bQorPz8/Pz8/PyA/Pz8/Pz8/Pz8gaW5wdXQtMS0yMDAyMDItbmFtZQorPz8/Pz8/PyA/Pz8/Pz8/Pz8gaW5wdXQtMS0yMDAyMDItc2l6ZQorPz8/Pz8/PyA/Pz8/Pz8/Pz8gaW5wdXQtMS0yMDAyMDItdW5pdC1leHBvCis/Pz8/Pz8/ID8/Pz8/Pz8/PyBpbnB1dC0xLTIwMDIwMi11bml0cworPz8/Pz8/PyA/Pz8/Pz8/Pz8gaW5wdXQtMS0yMDAyMDItdmFsdWUKKworSGVyZSB0aGVyZSBpcyBhIGN1c3RvbSBzZW5zb3JzIHdpdGggZm91ciBmaWVsZHMsIHR3byBmZWF0dXJlIGFuZCB0d28gaW5wdXRzLgorRWFjaCBmaWVsZCBpcyByZXByZXNlbnRlZCBieSBhIHNldCBvZiBhdHRyaWJ1dGVzLiBBbGwgZmllbGRzIGV4Y2VwdCB0aGUgInZhbHVlIgorYXJlIHJlYWQgb25seS4gVGhlIHZhbHVlIGZpZWxkIGlzIGEgUlcgZmllbGQuCitFeGFtcGxlCisvc3lzL2J1cy9wbGF0Zm9ybS9kZXZpY2VzL0hJRC1TRU5TT1ItMjAwMGUxLjYuYXV0by9mZWF0dXJlLTAtMjAwMzE2JCBncmVwIC1yIC4gKgorZmVhdHVyZS0wLTIwMDMxNi1tYXhpbXVtOjYKK2ZlYXR1cmUtMC0yMDAzMTYtbWluaW11bTowCitmZWF0dXJlLTAtMjAwMzE2LW5hbWU6cHJvcGVydHktcmVwb3J0aW5nLXN0YXRlCitmZWF0dXJlLTAtMjAwMzE2LXNpemU6MQorZmVhdHVyZS0wLTIwMDMxNi11bml0LWV4cG86MAorZmVhdHVyZS0wLTIwMDMxNi11bml0czoyNQorZmVhdHVyZS0wLTIwMDMxNi12YWx1ZToxCisKK0hvdyB0byBlbmFibGUgc3VjaCBzZW5zb3I/CitCeSBkZWZhdWx0IHNlbnNvciBjYW4gYmUgcG93ZXIgZ2F0ZWQuIFRvIGVuYWJsZSBzeXNmcyBhdHRyaWJ1dGUgImVuYWJsZSIgY2FuIGJlCit1c2VkLgorJCBlY2hvIDEgPiBlbmFibGVfc2Vuc29yCisKK09uY2UgZW5hYmxlZCBhbmQgcG93ZXJlZCBvbiwgc2Vuc29yIGNhbiByZXBvcnQgdmFsdWUgdXNpbmcgSElEIHJlcG9ydHMuCitUaGVzZSByZXBvcnRzIGFyZSBwdXNoZWQgdXNpbmcgbWlzYyBkZXZpY2UgaW50ZXJmYWNlIGluIGEgRklGTyBvcmRlci4KKy9kZXYkIHRyZWUgfCBncmVwIEhJRC1TRU5TT1ItMjAwMGUxLjYuYXV0bworPz8/Pz8/PyA/Pz8/Pz8/Pz8gMTA6NTMgLT4gLi4vSElELVNFTlNPUi0yMDAwZTEuNi5hdXRvCis/Pz8/Pz8/Pz8gSElELVNFTlNPUi0yMDAwZTEuNi5hdXRvCisKK0VhY2ggcmVwb3J0cyBjYW4gYmUgb2YgdmFyaWFibGUgbGVuZ3RoIHByZWNlZGVkIGJ5IGEgaGVhZGVyLiBUaGlzIGhlYWRlcgorY29uc2lzdCBvZiBhIDMyIGJpdCB1c2FnZSBpZCwgNjQgYml0IHRpbWUgc3RhbXAgYW5kIDMyIGJpdCBsZW5ndGggZmllbGQgb2YgcmF3CitkYXRhLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9oaWQvaGlkLXRyYW5zcG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL2hpZC9oaWQtdHJhbnNwb3J0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGNiYTlmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9oaWQvaGlkLXRyYW5zcG9ydC50eHQKQEAgLTAsMCArMSwzMTcgQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSElEIEkvTyBUcmFuc3BvcnQgRHJpdmVycworICAgICAgICAgICAgICAgICAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgSElEIHN1YnN5c3RlbSBpcyBpbmRlcGVuZGVudCBvZiB0aGUgdW5kZXJseWluZyB0cmFuc3BvcnQgZHJpdmVyLiBJbml0aWFsbHksCitvbmx5IFVTQiB3YXMgc3VwcG9ydGVkLCBidXQgb3RoZXIgc3BlY2lmaWNhdGlvbnMgYWRvcHRlZCB0aGUgSElEIGRlc2lnbiBhbmQKK3Byb3ZpZGVkIG5ldyB0cmFuc3BvcnQgZHJpdmVycy4gVGhlIGtlcm5lbCBpbmNsdWRlcyBhdCBsZWFzdCBzdXBwb3J0IGZvciBVU0IsCitCbHVldG9vdGgsIEkyQyBhbmQgdXNlci1zcGFjZSBJL08gZHJpdmVycy4KKworMSkgSElEIEJ1cworPT09PT09PT09PQorCitUaGUgSElEIHN1YnN5c3RlbSBpcyBkZXNpZ25lZCBhcyBhIGJ1cy4gQW55IEkvTyBzdWJzeXN0ZW0gbWF5IHByb3ZpZGUgSElECitkZXZpY2VzIGFuZCByZWdpc3RlciB0aGVtIHdpdGggdGhlIEhJRCBidXMuIEhJRCBjb3JlIHRoZW4gbG9hZHMgZ2VuZXJpYyBkZXZpY2UKK2RyaXZlcnMgb24gdG9wIG9mIGl0LiBUaGUgdHJhbnNwb3J0IGRyaXZlcnMgYXJlIHJlc3BvbnNpYmxlIG9mIHJhdyBkYXRhCit0cmFuc3BvcnQgYW5kIGRldmljZSBzZXR1cC9tYW5hZ2VtZW50LiBISUQgY29yZSBpcyByZXNwb25zaWJsZSBvZgorcmVwb3J0LXBhcnNpbmcsIHJlcG9ydCBpbnRlcnByZXRhdGlvbiBhbmQgdGhlIHVzZXItc3BhY2UgQVBJLiBEZXZpY2Ugc3BlY2lmaWNzCithbmQgcXVpcmtzIGFyZSBoYW5kbGVkIGJ5IGFsbCBsYXllcnMgZGVwZW5kaW5nIG9uIHRoZSBxdWlyay4KKworICstLS0tLS0tLS0tLSsgICstLS0tLS0tLS0tLSsgICAgICAgICAgICArLS0tLS0tLS0tLS0rICArLS0tLS0tLS0tLS0rCisgfCBEZXZpY2UgIzEgfCAgfCBEZXZpY2UgI2kgfCAgICAgICAgICAgIHwgRGV2aWNlICNqIHwgIHwgRGV2aWNlICNrIHwKKyArLS0tLS0tLS0tLS0rICArLS0tLS0tLS0tLS0rICAgICAgICAgICAgKy0tLS0tLS0tLS0tKyAgKy0tLS0tLS0tLS0tKworICAgICAgICAgIFxcICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXCAgICAgIC8vCisgICAgICAgICstLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tKworICAgICAgICB8IEkvTyBEcml2ZXIgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBJL08gRHJpdmVyIHwKKyAgICAgICAgKy0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fAorICAgICArLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgfCBUcmFuc3BvcnQgRHJpdmVyIHwgICAgICAgICAgICAgICAgICAgIHwgVHJhbnNwb3J0IERyaXZlciB8CisgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgICBcX19fICAgICAgICAgICAgICAgIF9fXy8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgICAgICAgICAgICAgIC8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgSElEIENvcmUgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gIHwgICAgICAgIHwgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLyAgIHwgICAgICAgIHwgICBcCisgICAgICAgICAgICAgX19fX19fX19fX19fLyAgICB8ICAgICAgICB8ICAgIFxfX19fX19fX19fX19fX19fXworICAgICAgICAgICAgLyAgICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgIC8gICAgICAgICAgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICBcCisgKy0tLS0tLS0tLS0tLS0tLS0rICArLS0tLS0tLS0tLS0rICArLS0tLS0tLS0tLS0tLS0tLS0tKyAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKKyB8IEdlbmVyaWMgRHJpdmVyIHwgIHwgTVQgRHJpdmVyIHwgIHwgQ3VzdG9tIERyaXZlciAjMSB8ICB8IEN1c3RvbSBEcml2ZXIgIzIgfAorICstLS0tLS0tLS0tLS0tLS0tKyAgKy0tLS0tLS0tLS0tKyAgKy0tLS0tLS0tLS0tLS0tLS0tLSsgICstLS0tLS0tLS0tLS0tLS0tLS0rCisKK0V4YW1wbGUgRHJpdmVyczoKKyAgSS9POiBVU0IsIEkyQywgQmx1ZXRvb3RoLWwyY2FwCisgIFRyYW5zcG9ydDogVVNCLUhJRCwgSTJDLUhJRCwgQlQtSElEUAorCitFdmVyeXRoaW5nIGJlbG93ICJISUQgQ29yZSIgaXMgc2ltcGxpZmllZCBpbiB0aGlzIGdyYXBoIGFzIGl0IGlzIG9ubHkgb2YKK2ludGVyZXN0IHRvIEhJRCBkZXZpY2UgZHJpdmVycy4gVHJhbnNwb3J0IGRyaXZlcnMgZG8gbm90IG5lZWQgdG8ga25vdyB0aGUKK3NwZWNpZmljcy4KKworMS4xKSBEZXZpY2UgU2V0dXAKKy0tLS0tLS0tLS0tLS0tLS0tCisKK0kvTyBkcml2ZXJzIG5vcm1hbGx5IHByb3ZpZGUgaG90cGx1ZyBkZXRlY3Rpb24gb3IgZGV2aWNlIGVudW1lcmF0aW9uIEFQSXMgdG8gdGhlCit0cmFuc3BvcnQgZHJpdmVycy4gVHJhbnNwb3J0IGRyaXZlcnMgdXNlIHRoaXMgdG8gZmluZCBhbnkgc3VpdGFibGUgSElEIGRldmljZS4KK1RoZXkgYWxsb2NhdGUgSElEIGRldmljZSBvYmplY3RzIGFuZCByZWdpc3RlciB0aGVtIHdpdGggSElEIGNvcmUuIFRyYW5zcG9ydAorZHJpdmVycyBhcmUgbm90IHJlcXVpcmVkIHRvIHJlZ2lzdGVyIHRoZW1zZWx2ZXMgd2l0aCBISUQgY29yZS4gSElEIGNvcmUgaXMgbmV2ZXIKK2F3YXJlIG9mIHdoaWNoIHRyYW5zcG9ydCBkcml2ZXJzIGFyZSBhdmFpbGFibGUgYW5kIGlzIG5vdCBpbnRlcmVzdGVkIGluIGl0LiBJdAoraXMgb25seSBpbnRlcmVzdGVkIGluIGRldmljZXMuCisKK1RyYW5zcG9ydCBkcml2ZXJzIGF0dGFjaCBhIGNvbnN0YW50ICJzdHJ1Y3QgaGlkX2xsX2RyaXZlciIgb2JqZWN0IHdpdGggZWFjaAorZGV2aWNlLiBPbmNlIGEgZGV2aWNlIGlzIHJlZ2lzdGVyZWQgd2l0aCBISUQgY29yZSwgdGhlIGNhbGxiYWNrcyBwcm92aWRlZCB2aWEKK3RoaXMgc3RydWN0IGFyZSB1c2VkIGJ5IEhJRCBjb3JlIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIGRldmljZS4KKworVHJhbnNwb3J0IGRyaXZlcnMgYXJlIHJlc3BvbnNpYmxlIG9mIGRldGVjdGluZyBkZXZpY2UgZmFpbHVyZXMgYW5kIHVucGx1Z2dpbmcuCitISUQgY29yZSB3aWxsIG9wZXJhdGUgYSBkZXZpY2UgYXMgbG9uZyBhcyBpdCBpcyByZWdpc3RlcmVkIHJlZ2FyZGxlc3Mgb2YgYW55CitkZXZpY2UgZmFpbHVyZXMuIE9uY2UgdHJhbnNwb3J0IGRyaXZlcnMgZGV0ZWN0IHVucGx1ZyBvciBmYWlsdXJlIGV2ZW50cywgdGhleQorbXVzdCB1bnJlZ2lzdGVyIHRoZSBkZXZpY2UgZnJvbSBISUQgY29yZSBhbmQgSElEIGNvcmUgd2lsbCBzdG9wIHVzaW5nIHRoZQorcHJvdmlkZWQgY2FsbGJhY2tzLgorCisxLjIpIFRyYW5zcG9ydCBEcml2ZXIgUmVxdWlyZW1lbnRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSB0ZXJtcyAiYXN5bmNocm9ub3VzIiBhbmQgInN5bmNocm9ub3VzIiBpbiB0aGlzIGRvY3VtZW50IGRlc2NyaWJlIHRoZQordHJhbnNtaXNzaW9uIGJlaGF2aW9yIHJlZ2FyZGluZyBhY2tub3dsZWRnZW1lbnRzLiBBbiBhc3luY2hyb25vdXMgY2hhbm5lbCBtdXN0Citub3QgcGVyZm9ybSBhbnkgc3luY2hyb25vdXMgb3BlcmF0aW9ucyBsaWtlIHdhaXRpbmcgZm9yIGFja25vd2xlZGdlbWVudHMgb3IKK3ZlcmlmaWNhdGlvbnMuIEdlbmVyYWxseSwgSElEIGNhbGxzIG9wZXJhdGluZyBvbiBhc3luY2hyb25vdXMgY2hhbm5lbHMgbXVzdCBiZQorcnVubmluZyBpbiBhdG9taWMtY29udGV4dCBqdXN0IGZpbmUuCitPbiB0aGUgb3RoZXIgaGFuZCwgc3luY2hyb25vdXMgY2hhbm5lbHMgY2FuIGJlIGltcGxlbWVudGVkIGJ5IHRoZSB0cmFuc3BvcnQKK2RyaXZlciBpbiB3aGF0ZXZlciB3YXkgdGhleSBsaWtlLiBUaGV5IG1pZ2h0IGp1c3QgYmUgdGhlIHNhbWUgYXMgYXN5bmNocm9ub3VzCitjaGFubmVscywgYnV0IHRoZXkgY2FuIGFsc28gcHJvdmlkZSBhY2tub3dsZWRnZW1lbnQgcmVwb3J0cywgYXV0b21hdGljCityZXRyYW5zbWlzc2lvbiBvbiBmYWlsdXJlLCBldGMuIGluIGEgYmxvY2tpbmcgbWFubmVyLiBJZiBzdWNoIGZ1bmN0aW9uYWxpdHkgaXMKK3JlcXVpcmVkIG9uIGFzeW5jaHJvbm91cyBjaGFubmVscywgYSB0cmFuc3BvcnQtZHJpdmVyIG11c3QgaW1wbGVtZW50IHRoYXQgdmlhCitpdHMgb3duIHdvcmtlciB0aHJlYWRzLgorCitISUQgY29yZSByZXF1aXJlcyB0cmFuc3BvcnQgZHJpdmVycyB0byBmb2xsb3cgYSBnaXZlbiBkZXNpZ24uIEEgVHJhbnNwb3J0Citkcml2ZXIgbXVzdCBwcm92aWRlIHR3byBiaS1kaXJlY3Rpb25hbCBJL08gY2hhbm5lbHMgdG8gZWFjaCBISUQgZGV2aWNlLiBUaGVzZQorY2hhbm5lbHMgbXVzdCBub3QgbmVjZXNzYXJpbHkgYmUgYmktZGlyZWN0aW9uYWwgaW4gdGhlIGhhcmR3YXJlIGl0c2VsZi4gQQordHJhbnNwb3J0IGRyaXZlciBtaWdodCBqdXN0IHByb3ZpZGUgNCB1bmktZGlyZWN0aW9uYWwgY2hhbm5lbHMuIE9yIGl0IG1pZ2h0CittdWx0aXBsZXggYWxsIGZvdXIgb24gYSBzaW5nbGUgcGh5c2ljYWwgY2hhbm5lbC4gSG93ZXZlciwgaW4gdGhpcyBkb2N1bWVudCB3ZQord2lsbCBkZXNjcmliZSB0aGVtIGFzIHR3byBiaS1kaXJlY3Rpb25hbCBjaGFubmVscyBhcyB0aGV5IGhhdmUgc2V2ZXJhbAorcHJvcGVydGllcyBpbiBjb21tb24uCisKKyAtIEludGVycnVwdCBDaGFubmVsIChpbnRyKTogVGhlIGludHIgY2hhbm5lbCBpcyB1c2VkIGZvciBhc3luY2hyb25vdXMgZGF0YQorICAgcmVwb3J0cy4gTm8gbWFuYWdlbWVudCBjb21tYW5kcyBvciBkYXRhIGFja25vd2xlZGdlbWVudHMgYXJlIHNlbnQgb24gdGhpcworICAgY2hhbm5lbC4gQW55IHVucmVxdWVzdGVkIGluY29taW5nIG9yIG91dGdvaW5nIGRhdGEgcmVwb3J0IG11c3QgYmUgc2VudCBvbgorICAgdGhpcyBjaGFubmVsIGFuZCBpcyBuZXZlciBhY2tub3dsZWRnZWQgYnkgdGhlIHJlbW90ZSBzaWRlLiBEZXZpY2VzIHVzdWFsbHkKKyAgIHNlbmQgdGhlaXIgaW5wdXQgZXZlbnRzIG9uIHRoaXMgY2hhbm5lbC4gT3V0Z29pbmcgZXZlbnRzIGFyZSBub3JtYWxseQorICAgbm90IHNlbmQgdmlhIGludHIsIGV4Y2VwdCBpZiBoaWdoIHRocm91Z2hwdXQgaXMgcmVxdWlyZWQuCisgLSBDb250cm9sIENoYW5uZWwgKGN0cmwpOiBUaGUgY3RybCBjaGFubmVsIGlzIHVzZWQgZm9yIHN5bmNocm9ub3VzIHJlcXVlc3RzIGFuZAorICAgZGV2aWNlIG1hbmFnZW1lbnQuIFVucmVxdWVzdGVkIGRhdGEgaW5wdXQgZXZlbnRzIG11c3Qgbm90IGJlIHNlbnQgb24gdGhpcworICAgY2hhbm5lbCBhbmQgYXJlIG5vcm1hbGx5IGlnbm9yZWQuIEluc3RlYWQsIGRldmljZXMgb25seSBzZW5kIG1hbmFnZW1lbnQKKyAgIGV2ZW50cyBvciBhbnN3ZXJzIHRvIGhvc3QgcmVxdWVzdHMgb24gdGhpcyBjaGFubmVsLgorICAgVGhlIGNvbnRyb2wtY2hhbm5lbCBpcyB1c2VkIGZvciBkaXJlY3QgYmxvY2tpbmcgcXVlcmllcyB0byB0aGUgZGV2aWNlCisgICBpbmRlcGVuZGVudCBvZiBhbnkgZXZlbnRzIG9uIHRoZSBpbnRyLWNoYW5uZWwuCisgICBPdXRnb2luZyByZXBvcnRzIGFyZSB1c3VhbGx5IHNlbnQgb24gdGhlIGN0cmwgY2hhbm5lbCB2aWEgc3luY2hyb25vdXMKKyAgIFNFVF9SRVBPUlQgcmVxdWVzdHMuCisKK0NvbW11bmljYXRpb24gYmV0d2VlbiBkZXZpY2VzIGFuZCBISUQgY29yZSBpcyBtb3N0bHkgZG9uZSB2aWEgSElEIHJlcG9ydHMuIEEKK3JlcG9ydCBjYW4gYmUgb2Ygb25lIG9mIHRocmVlIHR5cGVzOgorCisgLSBJTlBVVCBSZXBvcnQ6IElucHV0IHJlcG9ydHMgcHJvdmlkZSBkYXRhIGZyb20gZGV2aWNlIHRvIGhvc3QuIFRoaXMKKyAgIGRhdGEgbWF5IGluY2x1ZGUgYnV0dG9uIGV2ZW50cywgYXhpcyBldmVudHMsIGJhdHRlcnkgc3RhdHVzIG9yIG1vcmUuIFRoaXMKKyAgIGRhdGEgaXMgZ2VuZXJhdGVkIGJ5IHRoZSBkZXZpY2UgYW5kIHNlbnQgdG8gdGhlIGhvc3Qgd2l0aCBvciB3aXRob3V0CisgICByZXF1aXJpbmcgZXhwbGljaXQgcmVxdWVzdHMuIERldmljZXMgY2FuIGNob29zZSB0byBzZW5kIGRhdGEgY29udGludW91c2x5IG9yCisgICBvbmx5IG9uIGNoYW5nZS4KKyAtIE9VVFBVVCBSZXBvcnQ6IE91dHB1dCByZXBvcnRzIGNoYW5nZSBkZXZpY2Ugc3RhdGVzLiBUaGV5IGFyZSBzZW50IGZyb20gaG9zdAorICAgdG8gZGV2aWNlIGFuZCBtYXkgaW5jbHVkZSBMRUQgcmVxdWVzdHMsIHJ1bWJsZSByZXF1ZXN0cyBvciBtb3JlLiBPdXRwdXQKKyAgIHJlcG9ydHMgYXJlIG5ldmVyIHNlbnQgZnJvbSBkZXZpY2UgdG8gaG9zdCwgYnV0IGEgaG9zdCBjYW4gcmV0cmlldmUgdGhlaXIKKyAgIGN1cnJlbnQgc3RhdGUuCisgICBIb3N0cyBtYXkgY2hvb3NlIHRvIHNlbmQgb3V0cHV0IHJlcG9ydHMgZWl0aGVyIGNvbnRpbnVvdXNseSBvciBvbmx5IG9uCisgICBjaGFuZ2UuCisgLSBGRUFUVVJFIFJlcG9ydDogRmVhdHVyZSByZXBvcnRzIGFyZSB1c2VkIGZvciBzcGVjaWZpYyBzdGF0aWMgZGV2aWNlIGZlYXR1cmVzCisgICBhbmQgbmV2ZXIgcmVwb3J0ZWQgc3BvbnRhbmVvdXNseS4gQSBob3N0IGNhbiByZWFkIGFuZC9vciB3cml0ZSB0aGVtIHRvIGFjY2VzcworICAgZGF0YSBsaWtlIGJhdHRlcnktc3RhdGUgb3IgZGV2aWNlLXNldHRpbmdzLgorICAgRmVhdHVyZSByZXBvcnRzIGFyZSBuZXZlciBzZW50IHdpdGhvdXQgcmVxdWVzdHMuIEEgaG9zdCBtdXN0IGV4cGxpY2l0bHkgc2V0CisgICBvciByZXRyaWV2ZSBhIGZlYXR1cmUgcmVwb3J0LiBUaGlzIGFsc28gbWVhbnMsIGZlYXR1cmUgcmVwb3J0cyBhcmUgbmV2ZXIgc2VudAorICAgb24gdGhlIGludHIgY2hhbm5lbCBhcyB0aGlzIGNoYW5uZWwgaXMgYXN5bmNocm9ub3VzLgorCitJTlBVVCBhbmQgT1VUUFVUIHJlcG9ydHMgY2FuIGJlIHNlbnQgYXMgcHVyZSBkYXRhIHJlcG9ydHMgb24gdGhlIGludHIgY2hhbm5lbC4KK0ZvciBJTlBVVCByZXBvcnRzIHRoaXMgaXMgdGhlIHVzdWFsIG9wZXJhdGlvbmFsIG1vZGUuIEJ1dCBmb3IgT1VUUFVUIHJlcG9ydHMsCit0aGlzIGlzIHJhcmVseSBkb25lIGFzIE9VVFBVVCByZXBvcnRzIGFyZSBub3JtYWxseSBxdWl0ZSBzY2FyY2UuIEJ1dCBkZXZpY2VzIGFyZQorZnJlZSB0byBtYWtlIGV4Y2Vzc2l2ZSB1c2Ugb2YgYXN5bmNocm9ub3VzIE9VVFBVVCByZXBvcnRzIChmb3IgaW5zdGFuY2UsIGN1c3RvbQorSElEIGF1ZGlvIHNwZWFrZXJzIG1ha2UgZ3JlYXQgdXNlIG9mIGl0KS4KKworUGxhaW4gcmVwb3J0cyBtdXN0IG5vdCBiZSBzZW50IG9uIHRoZSBjdHJsIGNoYW5uZWwsIHRob3VnaC4gSW5zdGVhZCwgdGhlIGN0cmwKK2NoYW5uZWwgcHJvdmlkZXMgc3luY2hyb25vdXMgR0VUL1NFVF9SRVBPUlQgcmVxdWVzdHMuIFBsYWluIHJlcG9ydHMgYXJlIG9ubHkKK2FsbG93ZWQgb24gdGhlIGludHIgY2hhbm5lbCBhbmQgYXJlIHRoZSBvbmx5IG1lYW5zIG9mIGRhdGEgdGhlcmUuCisKKyAtIEdFVF9SRVBPUlQ6IEEgR0VUX1JFUE9SVCByZXF1ZXN0IGhhcyBhIHJlcG9ydCBJRCBhcyBwYXlsb2FkIGFuZCBpcyBzZW50CisgICBmcm9tIGhvc3QgdG8gZGV2aWNlLiBUaGUgZGV2aWNlIG11c3QgYW5zd2VyIHdpdGggYSBkYXRhIHJlcG9ydCBmb3IgdGhlCisgICByZXF1ZXN0ZWQgcmVwb3J0IElEIG9uIHRoZSBjdHJsIGNoYW5uZWwgYXMgYSBzeW5jaHJvbm91cyBhY2tub3dsZWRnZW1lbnQuCisgICBPbmx5IG9uZSBHRVRfUkVQT1JUIHJlcXVlc3QgY2FuIGJlIHBlbmRpbmcgZm9yIGVhY2ggZGV2aWNlLiBUaGlzIHJlc3RyaWN0aW9uCisgICBpcyBlbmZvcmNlZCBieSBISUQgY29yZSBhcyBzZXZlcmFsIHRyYW5zcG9ydCBkcml2ZXJzIGRvbid0IGFsbG93IG11bHRpcGxlCisgICBzaW11bHRhbmVvdXMgR0VUX1JFUE9SVCByZXF1ZXN0cy4KKyAgIE5vdGUgdGhhdCBkYXRhIHJlcG9ydHMgd2hpY2ggYXJlIHNlbnQgYXMgYW5zd2VyIHRvIGEgR0VUX1JFUE9SVCByZXF1ZXN0IGFyZQorICAgbm90IGhhbmRsZWQgYXMgZ2VuZXJpYyBkZXZpY2UgZXZlbnRzLiBUaGF0IGlzLCBpZiBhIGRldmljZSBkb2VzIG5vdCBvcGVyYXRlCisgICBpbiBjb250aW51b3VzIGRhdGEgcmVwb3J0aW5nIG1vZGUsIGFuIGFuc3dlciB0byBHRVRfUkVQT1JUIGRvZXMgbm90IHJlcGxhY2UKKyAgIHRoZSByYXcgZGF0YSByZXBvcnQgb24gdGhlIGludHIgY2hhbm5lbCBvbiBzdGF0ZSBjaGFuZ2UuCisgICBHRVRfUkVQT1JUIGlzIG9ubHkgdXNlZCBieSBjdXN0b20gSElEIGRldmljZSBkcml2ZXJzIHRvIHF1ZXJ5IGRldmljZSBzdGF0ZS4KKyAgIE5vcm1hbGx5LCBISUQgY29yZSBjYWNoZXMgYW55IGRldmljZSBzdGF0ZSBzbyB0aGlzIHJlcXVlc3QgaXMgbm90IG5lY2Vzc2FyeQorICAgb24gZGV2aWNlcyB0aGF0IGZvbGxvdyB0aGUgSElEIHNwZWNzIGV4Y2VwdCBkdXJpbmcgZGV2aWNlIGluaXRpYWxpemF0aW9uIHRvCisgICByZXRyaWV2ZSB0aGUgY3VycmVudCBzdGF0ZS4KKyAgIEdFVF9SRVBPUlQgcmVxdWVzdHMgY2FuIGJlIHNlbnQgZm9yIGFueSBvZiB0aGUgMyByZXBvcnQgdHlwZXMgYW5kIHNoYWxsCisgICByZXR1cm4gdGhlIGN1cnJlbnQgcmVwb3J0IHN0YXRlIG9mIHRoZSBkZXZpY2UuIEhvd2V2ZXIsIE9VVFBVVCByZXBvcnRzIGFzCisgICBwYXlsb2FkIG1heSBiZSBibG9ja2VkIGJ5IHRoZSB1bmRlcmx5aW5nIHRyYW5zcG9ydCBkcml2ZXIgaWYgdGhlCisgICBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGFsbG93IHRoZW0uCisgLSBTRVRfUkVQT1JUOiBBIFNFVF9SRVBPUlQgcmVxdWVzdCBoYXMgYSByZXBvcnQgSUQgcGx1cyBkYXRhIGFzIHBheWxvYWQuIEl0IGlzCisgICBzZW50IGZyb20gaG9zdCB0byBkZXZpY2UgYW5kIGEgZGV2aWNlIG11c3QgdXBkYXRlIGl0J3MgY3VycmVudCByZXBvcnQgc3RhdGUKKyAgIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gZGF0YS4gQW55IG9mIHRoZSAzIHJlcG9ydCB0eXBlcyBjYW4gYmUgdXNlZC4gSG93ZXZlciwKKyAgIElOUFVUIHJlcG9ydHMgYXMgcGF5bG9hZCBtaWdodCBiZSBibG9ja2VkIGJ5IHRoZSB1bmRlcmx5aW5nIHRyYW5zcG9ydCBkcml2ZXIKKyAgIGlmIHRoZSBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGFsbG93IHRoZW0uCisgICBBIGRldmljZSBtdXN0IGFuc3dlciB3aXRoIGEgc3luY2hyb25vdXMgYWNrbm93bGVkZ2VtZW50LiBIb3dldmVyLCBISUQgY29yZQorICAgZG9lcyBub3QgcmVxdWlyZSB0cmFuc3BvcnQgZHJpdmVycyB0byBmb3J3YXJkIHRoaXMgYWNrbm93bGVkZ2VtZW50IHRvIEhJRAorICAgY29yZS4KKyAgIFNhbWUgYXMgZm9yIEdFVF9SRVBPUlQsIG9ubHkgb25lIFNFVF9SRVBPUlQgY2FuIGJlIHBlbmRpbmcgYXQgYSB0aW1lLiBUaGlzCisgICByZXN0cmljdGlvbiBpcyBlbmZvcmNlZCBieSBISUQgY29yZSBhcyBzb21lIHRyYW5zcG9ydCBkcml2ZXJzIGRvIG5vdCBzdXBwb3J0CisgICBtdWx0aXBsZSBzeW5jaHJvbm91cyBTRVRfUkVQT1JUIHJlcXVlc3RzLgorCitPdGhlciBjdHJsLWNoYW5uZWwgcmVxdWVzdHMgYXJlIHN1cHBvcnRlZCBieSBVU0ItSElEIGJ1dCBhcmUgbm90IGF2YWlsYWJsZQorKG9yIGRlcHJlY2F0ZWQpIGluIG1vc3Qgb3RoZXIgdHJhbnNwb3J0IGxldmVsIHNwZWNpZmljYXRpb25zOgorCisgLSBHRVQvU0VUX0lETEU6IE9ubHkgdXNlZCBieSBVU0ItSElEIGFuZCBJMkMtSElELgorIC0gR0VUL1NFVF9QUk9UT0NPTDogTm90IHVzZWQgYnkgSElEIGNvcmUuCisgLSBSRVNFVDogVXNlZCBieSBJMkMtSElELCBub3QgaG9va2VkIHVwIGluIEhJRCBjb3JlLgorIC0gU0VUX1BPV0VSOiBVc2VkIGJ5IEkyQy1ISUQsIG5vdCBob29rZWQgdXAgaW4gSElEIGNvcmUuCisKKzIpIEhJRCBBUEkKKz09PT09PT09PT0KKworMi4xKSBJbml0aWFsaXphdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUcmFuc3BvcnQgZHJpdmVycyBub3JtYWxseSB1c2UgdGhlIGZvbGxvd2luZyBwcm9jZWR1cmUgdG8gcmVnaXN0ZXIgYSBuZXcgZGV2aWNlCit3aXRoIEhJRCBjb3JlOgorCisJc3RydWN0IGhpZF9kZXZpY2UgKmhpZDsKKwlpbnQgcmV0OworCisJaGlkID0gaGlkX2FsbG9jYXRlX2RldmljZSgpOworCWlmIChJU19FUlIoaGlkKSkgeworCQlyZXQgPSBQVFJfRVJSKGhpZCk7CisJCWdvdG8gZXJyXzwuLi4+OworCX0KKworCXN0cmxjcHkoaGlkLT5uYW1lLCA8ZGV2aWNlLW5hbWUtc3JjPiwgMTI3KTsKKwlzdHJsY3B5KGhpZC0+cGh5cywgPGRldmljZS1waHlzLXNyYz4sIDYzKTsKKwlzdHJsY3B5KGhpZC0+dW5pcSwgPGRldmljZS11bmlxLXNyYz4sIDYzKTsKKworCWhpZC0+bGxfZHJpdmVyID0gJmN1c3RvbV9sbF9kcml2ZXI7CisJaGlkLT5idXMgPSA8ZGV2aWNlLWJ1cz47CisJaGlkLT52ZW5kb3IgPSA8ZGV2aWNlLXZlbmRvcj47CisJaGlkLT5wcm9kdWN0ID0gPGRldmljZS1wcm9kdWN0PjsKKwloaWQtPnZlcnNpb24gPSA8ZGV2aWNlLXZlcnNpb24+OworCWhpZC0+Y291bnRyeSA9IDxkZXZpY2UtY291bnRyeT47CisJaGlkLT5kZXYucGFyZW50ID0gPHBvaW50ZXItdG8tcGFyZW50LWRldmljZT47CisJaGlkLT5kcml2ZXJfZGF0YSA9IDx0cmFuc3BvcnQtZHJpdmVyLWRhdGEtZmllbGQ+OworCisJcmV0ID0gaGlkX2FkZF9kZXZpY2UoaGlkKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl88Li4uPjsKKworT25jZSBoaWRfYWRkX2RldmljZSgpIGlzIGVudGVyZWQsIEhJRCBjb3JlIG1pZ2h0IHVzZSB0aGUgY2FsbGJhY2tzIHByb3ZpZGVkIGluCisiY3VzdG9tX2xsX2RyaXZlciIuIE5vdGUgdGhhdCBmaWVsZHMgbGlrZSAiY291bnRyeSIgY2FuIGJlIGlnbm9yZWQgYnkgdW5kZXJseWluZwordHJhbnNwb3J0LWRyaXZlcnMgaWYgbm90IHN1cHBvcnRlZC4KKworVG8gdW5yZWdpc3RlciBhIGRldmljZSwgdXNlOgorCisJaGlkX2Rlc3Ryb3lfZGV2aWNlKGhpZCk7CisKK09uY2UgaGlkX2Rlc3Ryb3lfZGV2aWNlKCkgcmV0dXJucywgSElEIGNvcmUgd2lsbCBubyBsb25nZXIgbWFrZSB1c2Ugb2YgYW55Citkcml2ZXIgY2FsbGJhY2tzLgorCisyLjIpIGhpZF9sbF9kcml2ZXIgb3BlcmF0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGF2YWlsYWJsZSBISUQgY2FsbGJhY2tzIGFyZToKKyAtIGludCAoKnN0YXJ0KSAoc3RydWN0IGhpZF9kZXZpY2UgKmhkZXYpCisgICBDYWxsZWQgZnJvbSBISUQgZGV2aWNlIGRyaXZlcnMgb25jZSB0aGV5IHdhbnQgdG8gdXNlIHRoZSBkZXZpY2UuIFRyYW5zcG9ydAorICAgZHJpdmVycyBjYW4gY2hvb3NlIHRvIHNldHVwIHRoZWlyIGRldmljZSBpbiB0aGlzIGNhbGxiYWNrLiBIb3dldmVyLCBub3JtYWxseQorICAgZGV2aWNlcyBhcmUgYWxyZWFkeSBzZXQgdXAgYmVmb3JlIHRyYW5zcG9ydCBkcml2ZXJzIHJlZ2lzdGVyIHRoZW0gdG8gSElEIGNvcmUKKyAgIHNvIHRoaXMgaXMgbW9zdGx5IG9ubHkgdXNlZCBieSBVU0ItSElELgorCisgLSB2b2lkICgqc3RvcCkgKHN0cnVjdCBoaWRfZGV2aWNlICpoZGV2KQorICAgQ2FsbGVkIGZyb20gSElEIGRldmljZSBkcml2ZXJzIG9uY2UgdGhleSBhcmUgZG9uZSB3aXRoIGEgZGV2aWNlLiBUcmFuc3BvcnQKKyAgIGRyaXZlcnMgY2FuIGZyZWUgYW55IGJ1ZmZlcnMgYW5kIGRlaW5pdGlhbGl6ZSB0aGUgZGV2aWNlLiBCdXQgbm90ZSB0aGF0CisgICAtPnN0YXJ0KCkgbWlnaHQgYmUgY2FsbGVkIGFnYWluIGlmIGFub3RoZXIgSElEIGRldmljZSBkcml2ZXIgaXMgbG9hZGVkIG9uIHRoZQorICAgZGV2aWNlLgorICAgVHJhbnNwb3J0IGRyaXZlcnMgYXJlIGZyZWUgdG8gaWdub3JlIGl0IGFuZCBkZWluaXRpYWxpemUgZGV2aWNlcyBhZnRlciB0aGV5CisgICBkZXN0cm95ZWQgdGhlbSB2aWEgaGlkX2Rlc3Ryb3lfZGV2aWNlKCkuCisKKyAtIGludCAoKm9wZW4pIChzdHJ1Y3QgaGlkX2RldmljZSAqaGRldikKKyAgIENhbGxlZCBmcm9tIEhJRCBkZXZpY2UgZHJpdmVycyBvbmNlIHRoZXkgYXJlIGludGVyZXN0ZWQgaW4gZGF0YSByZXBvcnRzLgorICAgVXN1YWxseSwgd2hpbGUgdXNlci1zcGFjZSBkaWRuJ3Qgb3BlbiBhbnkgaW5wdXQgQVBJL2V0Yy4sIGRldmljZSBkcml2ZXJzIGFyZQorICAgbm90IGludGVyZXN0ZWQgaW4gZGV2aWNlIGRhdGEgYW5kIHRyYW5zcG9ydCBkcml2ZXJzIGNhbiBwdXQgZGV2aWNlcyBhc2xlZXAuCisgICBIb3dldmVyLCBvbmNlIC0+b3BlbigpIGlzIGNhbGxlZCwgdHJhbnNwb3J0IGRyaXZlcnMgbXVzdCBiZSByZWFkeSBmb3IgSS9PLgorICAgLT5vcGVuKCkgY2FsbHMgYXJlIG5lc3RlZCBmb3IgZWFjaCBjbGllbnQgdGhhdCBvcGVucyB0aGUgSElEIGRldmljZS4KKworIC0gdm9pZCAoKmNsb3NlKSAoc3RydWN0IGhpZF9kZXZpY2UgKmhkZXYpCisgICBDYWxsZWQgZnJvbSBISUQgZGV2aWNlIGRyaXZlcnMgYWZ0ZXIgLT5vcGVuKCkgd2FzIGNhbGxlZCBidXQgdGhleSBhcmUgbm8KKyAgIGxvbmdlciBpbnRlcmVzdGVkIGluIGRldmljZSByZXBvcnRzLiAoVXN1YWxseSBpZiB1c2VyLXNwYWNlIGNsb3NlZCBhbnkgaW5wdXQKKyAgIGRldmljZXMgb2YgdGhlIGRyaXZlcikuCisgICBUcmFuc3BvcnQgZHJpdmVycyBjYW4gcHV0IGRldmljZXMgYXNsZWVwIGFuZCB0ZXJtaW5hdGUgYW55IEkvTyBvZiBhbGwKKyAgIC0+b3BlbigpIGNhbGxzIGhhdmUgYmVlbiBmb2xsb3dlZCBieSBhIC0+Y2xvc2UoKSBjYWxsLiBIb3dldmVyLCAtPnN0YXJ0KCkgbWF5CisgICBiZSBjYWxsZWQgYWdhaW4gaWYgdGhlIGRldmljZSBkcml2ZXIgaXMgaW50ZXJlc3RlZCBpbiBpbnB1dCByZXBvcnRzIGFnYWluLgorCisgLSBpbnQgKCpwYXJzZSkgKHN0cnVjdCBoaWRfZGV2aWNlICpoZGV2KQorICAgQ2FsbGVkIG9uY2UgZHVyaW5nIGRldmljZSBzZXR1cCBhZnRlciAtPnN0YXJ0KCkgaGFzIGJlZW4gY2FsbGVkLiBUcmFuc3BvcnQKKyAgIGRyaXZlcnMgbXVzdCByZWFkIHRoZSBISUQgcmVwb3J0LWRlc2NyaXB0b3IgZnJvbSB0aGUgZGV2aWNlIGFuZCB0ZWxsIEhJRCBjb3JlCisgICBhYm91dCBpdCB2aWEgaGlkX3BhcnNlX3JlcG9ydCgpLgorCisgLSBpbnQgKCpwb3dlcikgKHN0cnVjdCBoaWRfZGV2aWNlICpoZGV2LCBpbnQgbGV2ZWwpCisgICBDYWxsZWQgYnkgSElEIGNvcmUgdG8gZ2l2ZSBQTSBoaW50cyB0byB0cmFuc3BvcnQgZHJpdmVycy4gVXN1YWxseSB0aGlzIGlzCisgICBhbmFsb2dpY2FsIHRvIHRoZSAtPm9wZW4oKSBhbmQgLT5jbG9zZSgpIGhpbnRzIGFuZCByZWR1bmRhbnQuCisKKyAtIHZvaWQgKCpyZXF1ZXN0KSAoc3RydWN0IGhpZF9kZXZpY2UgKmhkZXYsIHN0cnVjdCBoaWRfcmVwb3J0ICpyZXBvcnQsCisgICAgICAgICAgICAgICAgICAgIGludCByZXF0eXBlKQorICAgU2VuZCBhbiBISUQgcmVxdWVzdCBvbiB0aGUgY3RybCBjaGFubmVsLiAicmVwb3J0IiBjb250YWlucyB0aGUgcmVwb3J0IHRoYXQKKyAgIHNob3VsZCBiZSBzZW50IGFuZCAicmVxdHlwZSIgdGhlIHJlcXVlc3QgdHlwZS4gUmVxdWVzdC10eXBlIGNhbiBiZQorICAgSElEX1JFUV9TRVRfUkVQT1JUIG9yIEhJRF9SRVFfR0VUX1JFUE9SVC4KKyAgIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwuIElmIG5vdCBwcm92aWRlZCwgSElEIGNvcmUgd2lsbCBhc3NlbWJsZSBhIHJhdworICAgcmVwb3J0IGZvbGxvd2luZyB0aGUgSElEIHNwZWNzIGFuZCBzZW5kIGl0IHZpYSB0aGUgLT5yYXdfcmVxdWVzdCgpIGNhbGxiYWNrLgorICAgVGhlIHRyYW5zcG9ydCBkcml2ZXIgaXMgZnJlZSB0byBpbXBsZW1lbnQgdGhpcyBhc3luY2hyb25vdXNseS4KKworIC0gaW50ICgqd2FpdCkgKHN0cnVjdCBoaWRfZGV2aWNlICpoZGV2KQorICAgVXNlZCBieSBISUQgY29yZSBiZWZvcmUgY2FsbGluZyAtPnJlcXVlc3QoKSBhZ2Fpbi4gQSB0cmFuc3BvcnQgZHJpdmVyIGNhbiB1c2UKKyAgIGl0IHRvIHdhaXQgZm9yIGFueSBwZW5kaW5nIHJlcXVlc3RzIHRvIGNvbXBsZXRlIGlmIG9ubHkgb25lIHJlcXVlc3QgaXMKKyAgIGFsbG93ZWQgYXQgYSB0aW1lLgorCisgLSBpbnQgKCpyYXdfcmVxdWVzdCkgKHN0cnVjdCBoaWRfZGV2aWNlICpoZGV2LCB1bnNpZ25lZCBjaGFyIHJlcG9ydG51bSwKKyAgICAgICAgICAgICAgICAgICAgICAgX191OCAqYnVmLCBzaXplX3QgY291bnQsIHVuc2lnbmVkIGNoYXIgcnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgIGludCByZXF0eXBlKQorICAgU2FtZSBhcyAtPnJlcXVlc3QoKSBidXQgcHJvdmlkZXMgdGhlIHJlcG9ydCBhcyByYXcgYnVmZmVyLiBUaGlzIHJlcXVlc3Qgc2hhbGwKKyAgIGJlIHN5bmNocm9ub3VzLiBBIHRyYW5zcG9ydCBkcml2ZXIgbXVzdCBub3QgdXNlIC0+d2FpdCgpIHRvIGNvbXBsZXRlIHN1Y2gKKyAgIHJlcXVlc3RzLiBUaGlzIHJlcXVlc3QgaXMgbWFuZGF0b3J5IGFuZCBoaWQgY29yZSB3aWxsIHJlamVjdCB0aGUgZGV2aWNlIGlmCisgICBpdCBpcyBtaXNzaW5nLgorCisgLSBpbnQgKCpvdXRwdXRfcmVwb3J0KSAoc3RydWN0IGhpZF9kZXZpY2UgKmhkZXYsIF9fdTggKmJ1Ziwgc2l6ZV90IGxlbikKKyAgIFNlbmQgcmF3IG91dHB1dCByZXBvcnQgdmlhIGludHIgY2hhbm5lbC4gVXNlZCBieSBzb21lIEhJRCBkZXZpY2UgZHJpdmVycworICAgd2hpY2ggcmVxdWlyZSBoaWdoIHRocm91Z2hwdXQgZm9yIG91dGdvaW5nIHJlcXVlc3RzIG9uIHRoZSBpbnRyIGNoYW5uZWwuIFRoaXMKKyAgIG11c3Qgbm90IGNhdXNlIFNFVF9SRVBPUlQgY2FsbHMhIFRoaXMgbXVzdCBiZSBpbXBsZW1lbnRlZCBhcyBhc3luY2hyb25vdXMKKyAgIG91dHB1dCByZXBvcnQgb24gdGhlIGludHIgY2hhbm5lbCEKKworIC0gaW50ICgqaWRsZSkgKHN0cnVjdCBoaWRfZGV2aWNlICpoZGV2LCBpbnQgcmVwb3J0LCBpbnQgaWRsZSwgaW50IHJlcXR5cGUpCisgICBQZXJmb3JtIFNFVC9HRVRfSURMRSByZXF1ZXN0LiBPbmx5IHVzZWQgYnkgVVNCLUhJRCwgZG8gbm90IGltcGxlbWVudCEKKworMi4zKSBEYXRhIFBhdGgKKy0tLS0tLS0tLS0tLS0tCisKK1RyYW5zcG9ydCBkcml2ZXJzIGFyZSByZXNwb25zaWJsZSBvZiByZWFkaW5nIGRhdGEgZnJvbSBJL08gZGV2aWNlcy4gVGhleSBtdXN0CitoYW5kbGUgYW55IEkvTy1yZWxhdGVkIHN0YXRlLXRyYWNraW5nIHRoZW1zZWx2ZXMuIEhJRCBjb3JlIGRvZXMgbm90IGltcGxlbWVudAorcHJvdG9jb2wgaGFuZHNoYWtlcyBvciBvdGhlciBtYW5hZ2VtZW50IGNvbW1hbmRzIHdoaWNoIGNhbiBiZSByZXF1aXJlZCBieSB0aGUKK2dpdmVuIEhJRCB0cmFuc3BvcnQgc3BlY2lmaWNhdGlvbi4KKworRXZlcnkgcmF3IGRhdGEgcGFja2V0IHJlYWQgZnJvbSBhIGRldmljZSBtdXN0IGJlIGZlZCBpbnRvIEhJRCBjb3JlIHZpYQoraGlkX2lucHV0X3JlcG9ydCgpLiBZb3UgbXVzdCBzcGVjaWZ5IHRoZSBjaGFubmVsLXR5cGUgKGludHIgb3IgY3RybCkgYW5kIHJlcG9ydAordHlwZSAoaW5wdXQvb3V0cHV0L2ZlYXR1cmUpLiBVbmRlciBub3JtYWwgY29uZGl0aW9ucywgb25seSBpbnB1dCByZXBvcnRzIGFyZQorcHJvdmlkZWQgdmlhIHRoaXMgQVBJLgorCitSZXNwb25zZXMgdG8gR0VUX1JFUE9SVCByZXF1ZXN0cyB2aWEgLT5yZXF1ZXN0KCkgbXVzdCBhbHNvIGJlIHByb3ZpZGVkIHZpYSB0aGlzCitBUEkuIFJlc3BvbnNlcyB0byAtPnJhd19yZXF1ZXN0KCkgYXJlIHN5bmNocm9ub3VzIGFuZCBtdXN0IGJlIGludGVyY2VwdGVkIGJ5IHRoZQordHJhbnNwb3J0IGRyaXZlciBhbmQgbm90IHBhc3NlZCB0byBoaWRfaW5wdXRfcmVwb3J0KCkuCitBY2tub3dsZWRnZW1lbnRzIHRvIFNFVF9SRVBPUlQgcmVxdWVzdHMgYXJlIG5vdCBvZiBpbnRlcmVzdCB0byBISUQgY29yZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorV3JpdHRlbiAyMDEzLCBEYXZpZCBIZXJybWFubiA8ZGguaGVycm1hbm5AZ21haWwuY29tPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9oaWQvaGlkZGV2LnR4dCBiL0RvY3VtZW50YXRpb24vaGlkL2hpZGRldi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU4YzlmMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaGlkL2hpZGRldi50eHQKQEAgLTAsMCArMSwyMDUgQEAKK0NhcmUgYW5kIGZlZWRpbmcgb2YgeW91ciBIdW1hbiBJbnRlcmZhY2UgRGV2aWNlcworCitJTlRST0RVQ1RJT04KKworSW4gYWRkaXRpb24gdG8gdGhlIG5vcm1hbCBpbnB1dCB0eXBlIEhJRCBkZXZpY2VzLCBVU0IgYWxzbyB1c2VzIHRoZQoraHVtYW4gaW50ZXJmYWNlIGRldmljZSBwcm90b2NvbHMgZm9yIHRoaW5ncyB0aGF0IGFyZSBub3QgcmVhbGx5IGh1bWFuCitpbnRlcmZhY2VzLCBidXQgaGF2ZSBzaW1pbGFyIHNvcnRzIG9mIGNvbW11bmljYXRpb24gbmVlZHMuIFRoZSB0d28gYmlnCitleGFtcGxlcyBmb3IgdGhpcyBhcmUgcG93ZXIgZGV2aWNlcyAoZXNwZWNpYWxseSB1bmludGVycnVwdGFibGUgcG93ZXIKK3N1cHBsaWVzKSBhbmQgbW9uaXRvciBjb250cm9sIG9uIGhpZ2hlciBlbmQgbW9uaXRvcnMuCisKK1RvIHN1cHBvcnQgdGhlc2UgZGlzcGFyYXRlIHJlcXVpcmVtZW50cywgdGhlIExpbnV4IFVTQiBzeXN0ZW0gcHJvdmlkZXMKK0hJRCBldmVudHMgdG8gdHdvIHNlcGFyYXRlIGludGVyZmFjZXM6CisqIHRoZSBpbnB1dCBzdWJzeXN0ZW0sIHdoaWNoIGNvbnZlcnRzIEhJRCBldmVudHMgaW50byBub3JtYWwgaW5wdXQKK2RldmljZSBpbnRlcmZhY2VzIChzdWNoIGFzIGtleWJvYXJkLCBtb3VzZSBhbmQgam95c3RpY2spIGFuZCBhCitub3JtYWxpc2VkIGV2ZW50IGludGVyZmFjZSAtIHNlZSBEb2N1bWVudGF0aW9uL2lucHV0L2lucHV0LnR4dAorKiB0aGUgaGlkZGV2IGludGVyZmFjZSwgd2hpY2ggcHJvdmlkZXMgZmFpcmx5IHJhdyBISUQgZXZlbnRzCisKK1RoZSBkYXRhIGZsb3cgZm9yIGEgSElEIGV2ZW50IHByb2R1Y2VkIGJ5IGEgZGV2aWNlIGlzIHNvbWV0aGluZyBsaWtlCit0aGUgZm9sbG93aW5nIDoKKworIHVzYi5jIC0tLT4gaGlkLWNvcmUuYyAgLS0tLT4gaGlkLWlucHV0LmMgLS0tLT4gW2tleWJvYXJkL21vdXNlL2pveXN0aWNrL2V2ZW50XQorICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPiBoaWRkZXYuYyAtLS0tPiBQT1dFUiAvIE1PTklUT1IgQ09OVFJPTCAKKworSW4gYWRkaXRpb24sIG90aGVyIHN1YnN5c3RlbXMgKGFwYXJ0IGZyb20gVVNCKSBjYW4gcG90ZW50aWFsbHkgZmVlZAorZXZlbnRzIGludG8gdGhlIGlucHV0IHN1YnN5c3RlbSwgYnV0IHRoZXNlIGhhdmUgbm8gZWZmZWN0IG9uIHRoZSBoaWQKK2RldmljZSBpbnRlcmZhY2UuCisKK1VTSU5HIFRIRSBISUQgREVWSUNFIElOVEVSRkFDRQorCitUaGUgaGlkZGV2IGludGVyZmFjZSBpcyBhIGNoYXIgaW50ZXJmYWNlIHVzaW5nIHRoZSBub3JtYWwgVVNCIG1ham9yLAord2l0aCB0aGUgbWlub3IgbnVtYmVycyBzdGFydGluZyBhdCA5NiBhbmQgZmluaXNoaW5nIGF0IDExMS4gVGhlcmVmb3JlLAoreW91IG5lZWQgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKK21rbm9kIC9kZXYvdXNiL2hpZGRldjAgYyAxODAgOTYKK21rbm9kIC9kZXYvdXNiL2hpZGRldjEgYyAxODAgOTcKK21rbm9kIC9kZXYvdXNiL2hpZGRldjIgYyAxODAgOTgKK21rbm9kIC9kZXYvdXNiL2hpZGRldjMgYyAxODAgOTkKK21rbm9kIC9kZXYvdXNiL2hpZGRldjQgYyAxODAgMTAwCitta25vZCAvZGV2L3VzYi9oaWRkZXY1IGMgMTgwIDEwMQorbWtub2QgL2Rldi91c2IvaGlkZGV2NiBjIDE4MCAxMDIKK21rbm9kIC9kZXYvdXNiL2hpZGRldjcgYyAxODAgMTAzCitta25vZCAvZGV2L3VzYi9oaWRkZXY4IGMgMTgwIDEwNAorbWtub2QgL2Rldi91c2IvaGlkZGV2OSBjIDE4MCAxMDUKK21rbm9kIC9kZXYvdXNiL2hpZGRldjEwIGMgMTgwIDEwNgorbWtub2QgL2Rldi91c2IvaGlkZGV2MTEgYyAxODAgMTA3Citta25vZCAvZGV2L3VzYi9oaWRkZXYxMiBjIDE4MCAxMDgKK21rbm9kIC9kZXYvdXNiL2hpZGRldjEzIGMgMTgwIDEwOQorbWtub2QgL2Rldi91c2IvaGlkZGV2MTQgYyAxODAgMTEwCitta25vZCAvZGV2L3VzYi9oaWRkZXYxNSBjIDE4MCAxMTEKKworU28geW91IHBvaW50IHlvdXIgaGlkZGV2IGNvbXBsaWFudCB1c2VyLXNwYWNlIHByb2dyYW0gYXQgdGhlIGNvcnJlY3QKK2ludGVyZmFjZSBmb3IgeW91ciBkZXZpY2UsIGFuZCBpdCBhbGwganVzdCB3b3Jrcy4KKworQXNzdW1pbmcgdGhhdCB5b3UgaGF2ZSBhIGhpZGRldiBjb21wbGlhbnQgdXNlci1zcGFjZSBwcm9ncmFtLCBvZgorY291cnNlLiBJZiB5b3UgbmVlZCB0byB3cml0ZSBvbmUsIHJlYWQgb24uCisKKworVEhFIEhJRERFViBBUEkKK1RoaXMgZGVzY3JpcHRpb24gc2hvdWxkIGJlIHJlYWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgSElECitzcGVjaWZpY2F0aW9uLCBmcmVlbHkgYXZhaWxhYmxlIGZyb20gaHR0cDovL3d3dy51c2Iub3JnLCBhbmQKK2NvbnZlbmllbnRseSBsaW5rZWQgb2YgaHR0cDovL3d3dy5saW51eC11c2Iub3JnLgorCitUaGUgaGlkZGV2IEFQSSB1c2VzIGEgcmVhZCgpIGludGVyZmFjZSwgYW5kIGEgc2V0IG9mIGlvY3RsKCkgY2FsbHMuCisKK0hJRCBkZXZpY2VzIGV4Y2hhbmdlIGRhdGEgd2l0aCB0aGUgaG9zdCBjb21wdXRlciB1c2luZyBkYXRhCitidW5kbGVzIGNhbGxlZCAicmVwb3J0cyIuICBFYWNoIHJlcG9ydCBpcyBkaXZpZGVkIGludG8gImZpZWxkcyIsCitlYWNoIG9mIHdoaWNoIGNhbiBoYXZlIG9uZSBvciBtb3JlICJ1c2FnZXMiLiAgSW4gdGhlIGhpZC1jb3JlLAorZWFjaCBvbmUgb2YgdGhlc2UgdXNhZ2VzIGhhcyBhIHNpbmdsZSBzaWduZWQgMzIgYml0IHZhbHVlLgorCityZWFkKCk6CitUaGlzIGlzIHRoZSBldmVudCBpbnRlcmZhY2UuICBXaGVuIHRoZSBISUQgZGV2aWNlJ3Mgc3RhdGUgY2hhbmdlcywKK2l0IHBlcmZvcm1zIGFuIGludGVycnVwdCB0cmFuc2ZlciBjb250YWluaW5nIGEgcmVwb3J0IHdoaWNoIGNvbnRhaW5zCit0aGUgY2hhbmdlZCB2YWx1ZS4gIFRoZSBoaWQtY29yZS5jIG1vZHVsZSBwYXJzZXMgdGhlIHJlcG9ydCwgYW5kCityZXR1cm5zIHRvIGhpZGRldi5jIHRoZSBpbmRpdmlkdWFsIHVzYWdlcyB0aGF0IGhhdmUgY2hhbmdlZCB3aXRoaW4KK3RoZSByZXBvcnQuICBJbiBpdHMgYmFzaWMgbW9kZSwgdGhlIGhpZGRldiB3aWxsIG1ha2UgdGhlc2UgaW5kaXZpZHVhbAordXNhZ2UgY2hhbmdlcyBhdmFpbGFibGUgdG8gdGhlIHJlYWRlciB1c2luZyBhIHN0cnVjdCBoaWRkZXZfZXZlbnQ6CisKKyAgICAgICBzdHJ1Y3QgaGlkZGV2X2V2ZW50IHsKKyAgICAgICAgICAgdW5zaWduZWQgaGlkOworICAgICAgICAgICBzaWduZWQgaW50IHZhbHVlOworICAgICAgIH07CisKK2NvbnRhaW5pbmcgdGhlIEhJRCB1c2FnZSBpZGVudGlmaWVyIGZvciB0aGUgc3RhdHVzIHRoYXQgY2hhbmdlZCwgYW5kCit0aGUgdmFsdWUgdGhhdCBpdCB3YXMgY2hhbmdlZCB0by4gTm90ZSB0aGF0IHRoZSBzdHJ1Y3R1cmUgaXMgZGVmaW5lZAord2l0aGluIDxsaW51eC9oaWRkZXYuaD4sIGFsb25nIHdpdGggc29tZSBvdGhlciB1c2VmdWwgI2RlZmluZXMgYW5kCitzdHJ1Y3R1cmVzLiAgVGhlIEhJRCB1c2FnZSBpZGVudGlmaWVyIGlzIGEgY29tcG9zaXRlIG9mIHRoZSBISUQgdXNhZ2UKK3BhZ2Ugc2hpZnRlZCB0byB0aGUgMTYgaGlnaCBvcmRlciBiaXRzIE9SZWQgd2l0aCB0aGUgdXNhZ2UgY29kZS4gIFRoZQorYmVoYXZpb3Igb2YgdGhlIHJlYWQoKSBmdW5jdGlvbiBjYW4gYmUgbW9kaWZpZWQgdXNpbmcgdGhlIEhJRElPQ1NGTEFHCitpb2N0bCgpIGRlc2NyaWJlZCBiZWxvdy4KKworCitpb2N0bCgpOiAKK1RoaXMgaXMgdGhlIGNvbnRyb2wgaW50ZXJmYWNlLiBUaGVyZSBhcmUgYSBudW1iZXIgb2YgY29udHJvbHM6IAorCitISURJT0NHVkVSU0lPTiAtIGludCAocmVhZCkKK0dldHMgdGhlIHZlcnNpb24gY29kZSBvdXQgb2YgdGhlIGhpZGRldiBkcml2ZXIuCisKK0hJRElPQ0FQUExJQ0FUSU9OIC0gKG5vbmUpCitUaGlzIGlvY3RsIGNhbGwgcmV0dXJucyB0aGUgSElEIGFwcGxpY2F0aW9uIHVzYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGUKK2hpZCBkZXZpY2UuIFRoZSB0aGlyZCBhcmd1bWVudCB0byBpb2N0bCgpIHNwZWNpZmllcyB3aGljaCBhcHBsaWNhdGlvbgoraW5kZXggdG8gZ2V0LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHRoZSBkZXZpY2UgaGFzIG1vcmUgdGhhbiBvbmUKK2FwcGxpY2F0aW9uIGNvbGxlY3Rpb24uIElmIHRoZSBpbmRleCBpcyBpbnZhbGlkIChncmVhdGVyIG9yIGVxdWFsIHRvCit0aGUgbnVtYmVyIG9mIGFwcGxpY2F0aW9uIGNvbGxlY3Rpb25zIHRoaXMgZGV2aWNlIGhhcykgdGhlIGlvY3RsCityZXR1cm5zIC0xLiBZb3UgY2FuIGZpbmQgb3V0IGJlZm9yZWhhbmQgaG93IG1hbnkgYXBwbGljYXRpb24KK2NvbGxlY3Rpb25zIHRoZSBkZXZpY2UgaGFzIGZyb20gdGhlIG51bV9hcHBsaWNhdGlvbnMgZmllbGQgZnJvbSB0aGUKK2hpZGRldl9kZXZpbmZvIHN0cnVjdHVyZS4gCisKK0hJRElPQ0dDT0xMRUNUSU9OSU5GTyAtIHN0cnVjdCBoaWRkZXZfY29sbGVjdGlvbl9pbmZvIChyZWFkL3dyaXRlKQorVGhpcyByZXR1cm5zIGEgc3VwZXJzZXQgb2YgdGhlIGluZm9ybWF0aW9uIGFib3ZlLCBwcm92aWRpbmcgbm90IG9ubHkKK2FwcGxpY2F0aW9uIGNvbGxlY3Rpb25zLCBidXQgYWxsIHRoZSBjb2xsZWN0aW9ucyB0aGUgZGV2aWNlIGhhcy4gIEl0CithbHNvIHJldHVybnMgdGhlIGxldmVsIHRoZSBjb2xsZWN0aW9uIGxpdmVzIGluIHRoZSBoaWVyYXJjaHkuCitUaGUgdXNlciBwYXNzZXMgaW4gYSBoaWRkZXZfY29sbGVjdGlvbl9pbmZvIHN0cnVjdCB3aXRoIHRoZSBpbmRleCAKK2ZpZWxkIHNldCB0byB0aGUgaW5kZXggdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQuICBUaGUgaW9jdGwgZmlsbHMgaW4gCit0aGUgb3RoZXIgZmllbGRzLiAgSWYgdGhlIGluZGV4IGlzIGxhcmdlciB0aGFuIHRoZSBsYXN0IGNvbGxlY3Rpb24gCitpbmRleCwgdGhlIGlvY3RsIHJldHVybnMgLTEgYW5kIHNldHMgZXJybm8gdG8gLUVJTlZBTC4KKworSElESU9DR0RFVklORk8gLSBzdHJ1Y3QgaGlkZGV2X2RldmluZm8gKHJlYWQpCitHZXRzIGEgaGlkZGV2X2RldmluZm8gc3RydWN0dXJlIHdoaWNoIGRlc2NyaWJlcyB0aGUgZGV2aWNlLgorCitISURJT0NHU1RSSU5HIC0gc3RydWN0IGhpZGRldl9zdHJpbmdfZGVzY3JpcHRvciAocmVhZC93cml0ZSkKK0dldHMgYSBzdHJpbmcgZGVzY3JpcHRvciBmcm9tIHRoZSBkZXZpY2UuIFRoZSBjYWxsZXIgbXVzdCBmaWxsIGluIHRoZQorImluZGV4IiBmaWVsZCB0byBpbmRpY2F0ZSB3aGljaCBkZXNjcmlwdG9yIHNob3VsZCBiZSByZXR1cm5lZC4KKworSElESU9DSU5JVFJFUE9SVCAtIChub25lKQorSW5zdHJ1Y3RzIHRoZSBrZXJuZWwgdG8gcmV0cmlldmUgYWxsIGlucHV0IGFuZCBmZWF0dXJlIHJlcG9ydCB2YWx1ZXMKK2Zyb20gdGhlIGRldmljZS4gQXQgdGhpcyBwb2ludCwgYWxsIHRoZSB1c2FnZSBzdHJ1Y3R1cmVzIHdpbGwgY29udGFpbgorY3VycmVudCB2YWx1ZXMgZm9yIHRoZSBkZXZpY2UsIGFuZCB3aWxsIG1haW50YWluIGl0IGFzIHRoZSBkZXZpY2UKK2NoYW5nZXMuICBOb3RlIHRoYXQgdGhlIHVzZSBvZiB0aGlzIGlvY3RsIGlzIHVubmVjZXNzYXJ5IGluIGdlbmVyYWwsCitzaW5jZSBsYXRlciBrZXJuZWxzIGF1dG9tYXRpY2FsbHkgaW5pdGlhbGl6ZSB0aGUgcmVwb3J0cyBmcm9tIHRoZQorZGV2aWNlIGF0IGF0dGFjaCB0aW1lLgorCitISURJT0NHTkFNRSAtIHN0cmluZyAodmFyaWFibGUgbGVuZ3RoKQorR2V0cyB0aGUgZGV2aWNlIG5hbWUKKworSElESU9DR1JFUE9SVCAtIHN0cnVjdCBoaWRkZXZfcmVwb3J0X2luZm8gKHdyaXRlKQorSW5zdHJ1Y3RzIHRoZSBrZXJuZWwgdG8gZ2V0IGEgZmVhdHVyZSBvciBpbnB1dCByZXBvcnQgZnJvbSB0aGUgZGV2aWNlLAoraW4gb3JkZXIgdG8gc2VsZWN0aXZlbHkgdXBkYXRlIHRoZSB1c2FnZSBzdHJ1Y3R1cmVzIChpbiBjb250cmFzdCB0bworSU5JVFJFUE9SVCkuCisKK0hJRElPQ1NSRVBPUlQgLSBzdHJ1Y3QgaGlkZGV2X3JlcG9ydF9pbmZvICh3cml0ZSkKK0luc3RydWN0cyB0aGUga2VybmVsIHRvIHNlbmQgYSByZXBvcnQgdG8gdGhlIGRldmljZS4gVGhpcyByZXBvcnQgY2FuCitiZSBmaWxsZWQgaW4gYnkgdGhlIHVzZXIgdGhyb3VnaCBISURJT0NTVVNBR0UgY2FsbHMgKGJlbG93KSB0byBmaWxsIGluCitpbmRpdmlkdWFsIHVzYWdlIHZhbHVlcyBpbiB0aGUgcmVwb3J0IGJlZm9yZSBzZW5kaW5nIHRoZSByZXBvcnQgaW4gZnVsbAordG8gdGhlIGRldmljZS4gCisKK0hJRElPQ0dSRVBPUlRJTkZPIC0gc3RydWN0IGhpZGRldl9yZXBvcnRfaW5mbyAocmVhZC93cml0ZSkKK0ZpbGxzIGluIGEgaGlkZGV2X3JlcG9ydF9pbmZvIHN0cnVjdHVyZSBmb3IgdGhlIHVzZXIuIFRoZSByZXBvcnQgaXMKK2xvb2tlZCB1cCBieSB0eXBlIChpbnB1dCwgb3V0cHV0IG9yIGZlYXR1cmUpIGFuZCBpZCwgc28gdGhlc2UgZmllbGRzCittdXN0IGJlIGZpbGxlZCBpbiBieSB0aGUgdXNlci4gVGhlIElEIGNhbiBiZSBhYnNvbHV0ZSAtLSB0aGUgYWN0dWFsCityZXBvcnQgaWQgYXMgcmVwb3J0ZWQgYnkgdGhlIGRldmljZSAtLSBvciByZWxhdGl2ZSAtLQorSElEX1JFUE9SVF9JRF9GSVJTVCBmb3IgdGhlIGZpcnN0IHJlcG9ydCwgYW5kIChISURfUkVQT1JUX0lEX05FWFQgfAorcmVwb3J0X2lkKSBmb3IgdGhlIG5leHQgcmVwb3J0IGFmdGVyIHJlcG9ydF9pZC4gV2l0aG91dCBhLXByaW9yaQoraW5mb3JtYXRpb24gYWJvdXQgcmVwb3J0IGlkcywgdGhlIHJpZ2h0IHdheSB0byB1c2UgdGhpcyBpb2N0bCBpcyB0bwordXNlIHRoZSByZWxhdGl2ZSBJRHMgYWJvdmUgdG8gZW51bWVyYXRlIHRoZSB2YWxpZCBJRHMuIFRoZSBpb2N0bAorcmV0dXJucyBub24temVybyB3aGVuIHRoZXJlIGlzIG5vIG1vcmUgbmV4dCBJRC4gVGhlIHJlYWwgcmVwb3J0IElEIGlzCitmaWxsZWQgaW50byB0aGUgcmV0dXJuZWQgaGlkZGV2X3JlcG9ydF9pbmZvIHN0cnVjdHVyZS4gCisKK0hJRElPQ0dGSUVMRElORk8gLSBzdHJ1Y3QgaGlkZGV2X2ZpZWxkX2luZm8gKHJlYWQvd3JpdGUpCitSZXR1cm5zIHRoZSBmaWVsZCBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggYSByZXBvcnQgaW4gYQoraGlkZGV2X2ZpZWxkX2luZm8gc3RydWN0dXJlLiBUaGUgdXNlciBtdXN0IGZpbGwgaW4gcmVwb3J0X2lkIGFuZAorcmVwb3J0X3R5cGUgaW4gdGhpcyBzdHJ1Y3R1cmUsIGFzIGFib3ZlLiBUaGUgZmllbGRfaW5kZXggc2hvdWxkIGFsc28KK2JlIGZpbGxlZCBpbiwgd2hpY2ggc2hvdWxkIGJlIGEgbnVtYmVyIGZyb20gMCBhbmQgbWF4ZmllbGQtMSwgYXMKK3JldHVybmVkIGZyb20gYSBwcmV2aW91cyBISURJT0NHUkVQT1JUSU5GTyBjYWxsLiAKKworSElESU9DR1VDT0RFIC0gc3RydWN0IGhpZGRldl91c2FnZV9yZWYgKHJlYWQvd3JpdGUpCitSZXR1cm5zIHRoZSB1c2FnZV9jb2RlIGluIGEgaGlkZGV2X3VzYWdlX3JlZiBzdHJ1Y3R1cmUsIGdpdmVuIHRoYXQKK2dpdmVuIGl0cyByZXBvcnQgdHlwZSwgcmVwb3J0IGlkLCBmaWVsZCBpbmRleCwgYW5kIGluZGV4IHdpdGhpbiB0aGUKK2ZpZWxkIGhhdmUgYWxyZWFkeSBiZWVuIGZpbGxlZCBpbnRvIHRoZSBzdHJ1Y3R1cmUuCisKK0hJRElPQ0dVU0FHRSAtIHN0cnVjdCBoaWRkZXZfdXNhZ2VfcmVmIChyZWFkL3dyaXRlKQorUmV0dXJucyB0aGUgdmFsdWUgb2YgYSB1c2FnZSBpbiBhIGhpZGRldl91c2FnZV9yZWYgc3RydWN0dXJlLiBUaGUKK3VzYWdlIHRvIGJlIHJldHJpZXZlZCBjYW4gYmUgc3BlY2lmaWVkIGFzIGFib3ZlLCBvciB0aGUgdXNlciBjYW4KK2Nob29zZSB0byBmaWxsIGluIHRoZSByZXBvcnRfdHlwZSBmaWVsZCBhbmQgc3BlY2lmeSB0aGUgcmVwb3J0X2lkIGFzCitISURfUkVQT1JUX0lEX1VOS05PV04uIEluIHRoaXMgY2FzZSwgdGhlIGhpZGRldl91c2FnZV9yZWYgd2lsbCBiZQorZmlsbGVkIGluIHdpdGggdGhlIHJlcG9ydCBhbmQgZmllbGQgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMKK3VzYWdlIGlmIGl0IGlzIGZvdW5kLiAKKworSElESU9DU1VTQUdFIC0gc3RydWN0IGhpZGRldl91c2FnZV9yZWYgKHdyaXRlKQorU2V0cyB0aGUgdmFsdWUgb2YgYSB1c2FnZSBpbiBhbiBvdXRwdXQgcmVwb3J0LiAgVGhlIHVzZXIgZmlsbHMgaW4KK3RoZSBoaWRkZXZfdXNhZ2VfcmVmIHN0cnVjdHVyZSBhcyBhYm92ZSwgYnV0IGFkZGl0aW9uYWxseSBmaWxscyBpbgordGhlIHZhbHVlIGZpZWxkLgorCitISURJT0dDT0xMRUNUSU9OSU5ERVggLSBzdHJ1Y3QgaGlkZGV2X3VzYWdlX3JlZiAod3JpdGUpCitSZXR1cm5zIHRoZSBjb2xsZWN0aW9uIGluZGV4IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHVzYWdlLiAgVGhpcworaW5kaWNhdGVzIHdoZXJlIGluIHRoZSBjb2xsZWN0aW9uIGhpZXJhcmNoeSB0aGlzIHVzYWdlIHNpdHMuCisKK0hJRElPQ0dGTEFHIC0gaW50IChyZWFkKQorSElESU9DU0ZMQUcgLSBpbnQgKHdyaXRlKQorVGhlc2Ugb3BlcmF0aW9ucyByZXNwZWN0aXZlbHkgaW5zcGVjdCBhbmQgcmVwbGFjZSB0aGUgbW9kZSBmbGFncwordGhhdCBpbmZsdWVuY2UgdGhlIHJlYWQoKSBjYWxsIGFib3ZlLiAgVGhlIGZsYWdzIGFyZSBhcyBmb2xsb3dzOgorCisgICAgSElEREVWX0ZMQUdfVVJFRiAtIHJlYWQoKSBjYWxscyB3aWxsIG5vdyByZXR1cm4gCisgICAgICAgIHN0cnVjdCBoaWRkZXZfdXNhZ2VfcmVmIGluc3RlYWQgb2Ygc3RydWN0IGhpZGRldl9ldmVudC4KKyAgICAgICAgVGhpcyBpcyBhIGxhcmdlciBzdHJ1Y3R1cmUsIGJ1dCBpbiBzaXR1YXRpb25zIHdoZXJlIHRoZQorICAgICAgICBkZXZpY2UgaGFzIG1vcmUgdGhhbiBvbmUgdXNhZ2UgaW4gaXRzIHJlcG9ydHMgd2l0aCB0aGUKKyAgICAgICAgc2FtZSB1c2FnZSBjb2RlLCB0aGlzIG1vZGUgc2VydmVzIHRvIHJlc29sdmUgc3VjaAorICAgICAgICBhbWJpZ3VpdHkuCisKKyAgICBISURERVZfRkxBR19SRVBPUlQgLSBUaGlzIGZsYWcgY2FuIG9ubHkgYmUgdXNlZCBpbiBjb25qdW5jdGlvbgorICAgICAgICB3aXRoIEhJRERFVl9GTEFHX1VSRUYuICBXaXRoIHRoaXMgZmxhZyBzZXQsIHdoZW4gdGhlIGRldmljZQorICAgICAgICBzZW5kcyBhIHJlcG9ydCwgYSBzdHJ1Y3QgaGlkZGV2X3VzYWdlX3JlZiB3aWxsIGJlIHJldHVybmVkCisgICAgICAgIHRvIHJlYWQoKSBmaWxsZWQgaW4gd2l0aCB0aGUgcmVwb3J0X3R5cGUgYW5kIHJlcG9ydF9pZCwgYnV0IAorICAgICAgICB3aXRoIGZpZWxkX2luZGV4IHNldCB0byBGSUVMRF9JTkRFWF9OT05FLiAgVGhpcyBzZXJ2ZXMgYXMKKyAgICAgICAgYWRkaXRpb25hbCBub3RpZmljYXRpb24gd2hlbiB0aGUgZGV2aWNlIGhhcyBzZW50IGEgcmVwb3J0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9oaWQvaGlkcmF3LnR4dCBiL0RvY3VtZW50YXRpb24vaGlkL2hpZHJhdy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI5ZTZjYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaGlkL2hpZHJhdy50eHQKQEAgLTAsMCArMSwxMTkgQEAKKyAgICAgIEhJRFJBVyAtIFJhdyBBY2Nlc3MgdG8gVVNCIGFuZCBCbHVldG9vdGggSHVtYW4gSW50ZXJmYWNlIERldmljZXMKKyAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBoaWRyYXcgZHJpdmVyIHByb3ZpZGVzIGEgcmF3IGludGVyZmFjZSB0byBVU0IgYW5kIEJsdWV0b290aCBIdW1hbgorSW50ZXJmYWNlIERldmljZXMgKEhJRHMpLiAgSXQgZGlmZmVycyBmcm9tIGhpZGRldiBpbiB0aGF0IHJlcG9ydHMgc2VudCBhbmQKK3JlY2VpdmVkIGFyZSBub3QgcGFyc2VkIGJ5IHRoZSBISUQgcGFyc2VyLCBidXQgYXJlIHNlbnQgdG8gYW5kIHJlY2VpdmVkIGZyb20KK3RoZSBkZXZpY2UgdW5tb2RpZmllZC4KKworSGlkcmF3IHNob3VsZCBiZSB1c2VkIGlmIHRoZSB1c2Vyc3BhY2UgYXBwbGljYXRpb24ga25vd3MgZXhhY3RseSBob3cgdG8KK2NvbW11bmljYXRlIHdpdGggdGhlIGhhcmR3YXJlIGRldmljZSwgYW5kIGlzIGFibGUgdG8gY29uc3RydWN0IHRoZSBISUQKK3JlcG9ydHMgbWFudWFsbHkuICBUaGlzIGlzIG9mdGVuIHRoZSBjYXNlIHdoZW4gbWFraW5nIHVzZXJzcGFjZSBkcml2ZXJzIGZvcgorY3VzdG9tIEhJRCBkZXZpY2VzLgorCitIaWRyYXcgaXMgYWxzbyB1c2VmdWwgZm9yIGNvbW11bmljYXRpbmcgd2l0aCBub24tY29uZm9ybWFudCBISUQgZGV2aWNlcword2hpY2ggc2VuZCBhbmQgcmVjZWl2ZSBkYXRhIGluIGEgd2F5IHRoYXQgaXMgaW5jb25zaXN0ZW50IHdpdGggdGhlaXIgcmVwb3J0CitkZXNjcmlwdG9ycy4gIEJlY2F1c2UgaGlkZGV2IHBhcnNlcyByZXBvcnRzIHdoaWNoIGFyZSBzZW50IGFuZCByZWNlaXZlZAordGhyb3VnaCBpdCwgY2hlY2tpbmcgdGhlbSBhZ2FpbnN0IHRoZSBkZXZpY2UncyByZXBvcnQgZGVzY3JpcHRvciwgc3VjaAorY29tbXVuaWNhdGlvbiB3aXRoIHRoZXNlIG5vbi1jb25mb3JtYW50IGRldmljZXMgaXMgaW1wb3NzaWJsZSB1c2luZyBoaWRkZXYuCitIaWRyYXcgaXMgdGhlIG9ubHkgYWx0ZXJuYXRpdmUsIHNob3J0IG9mIHdyaXRpbmcgYSBjdXN0b20ga2VybmVsIGRyaXZlciwgZm9yCit0aGVzZSBub24tY29uZm9ybWFudCBkZXZpY2VzLgorCitBIGJlbmVmaXQgb2YgaGlkcmF3IGlzIHRoYXQgaXRzIHVzZSBieSB1c2Vyc3BhY2UgYXBwbGljYXRpb25zIGlzIGluZGVwZW5kZW50CitvZiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSB0eXBlLiAgQ3VycmVudGx5LCBIaWRyYXcgaXMgaW1wbGVtZW50ZWQgZm9yIFVTQgorYW5kIEJsdWV0b290aC4gIEluIHRoZSBmdXR1cmUsIGFzIG5ldyBoYXJkd2FyZSBidXMgdHlwZXMgYXJlIGRldmVsb3BlZCB3aGljaAordXNlIHRoZSBISUQgc3BlY2lmaWNhdGlvbiwgaGlkcmF3IHdpbGwgYmUgZXhwYW5kZWQgdG8gYWRkIHN1cHBvcnQgZm9yIHRoZXNlCituZXcgYnVzIHR5cGVzLgorCitIaWRyYXcgdXNlcyBhIGR5bmFtaWMgbWFqb3IgbnVtYmVyLCBtZWFuaW5nIHRoYXQgdWRldiBzaG91bGQgYmUgcmVsaWVkIG9uIHRvCitjcmVhdGUgaGlkcmF3IGRldmljZSBub2Rlcy4gIFVkZXYgd2lsbCB0eXBpY2FsbHkgY3JlYXRlIHRoZSBkZXZpY2Ugbm9kZXMKK2RpcmVjdGx5IHVuZGVyIC9kZXYgKGVnOiAvZGV2L2hpZHJhdzApLiAgQXMgdGhpcyBsb2NhdGlvbiBpcyBkaXN0cmlidXRpb24tCithbmQgdWRldiBydWxlLWRlcGVuZGVudCwgYXBwbGljYXRpb25zIHNob3VsZCB1c2UgbGlidWRldiB0byBsb2NhdGUgaGlkcmF3CitkZXZpY2VzIGF0dGFjaGVkIHRvIHRoZSBzeXN0ZW0uICBUaGVyZSBpcyBhIHR1dG9yaWFsIG9uIGxpYnVkZXYgd2l0aCBhCit3b3JraW5nIGV4YW1wbGUgYXQ6CisJaHR0cDovL3d3dy5zaWduYWwxMS51cy9vc3MvdWRldi8KKworVGhlIEhJRFJBVyBBUEkKKy0tLS0tLS0tLS0tLS0tLQorCityZWFkKCkKKy0tLS0tLS0KK3JlYWQoKSB3aWxsIHJlYWQgYSBxdWV1ZWQgcmVwb3J0IHJlY2VpdmVkIGZyb20gdGhlIEhJRCBkZXZpY2UuIE9uIFVTQgorZGV2aWNlcywgdGhlIHJlcG9ydHMgcmVhZCB1c2luZyByZWFkKCkgYXJlIHRoZSByZXBvcnRzIHNlbnQgZnJvbSB0aGUgZGV2aWNlCitvbiB0aGUgSU5URVJSVVBUIElOIGVuZHBvaW50LiAgQnkgZGVmYXVsdCwgcmVhZCgpIHdpbGwgYmxvY2sgdW50aWwgdGhlcmUgaXMKK2EgcmVwb3J0IGF2YWlsYWJsZSB0byBiZSByZWFkLiAgcmVhZCgpIGNhbiBiZSBtYWRlIG5vbi1ibG9ja2luZywgYnkgcGFzc2luZwordGhlIE9fTk9OQkxPQ0sgZmxhZyB0byBvcGVuKCksIG9yIGJ5IHNldHRpbmcgdGhlIE9fTk9OQkxPQ0sgZmxhZyB1c2luZworZmNudGwoKS4KKworT24gYSBkZXZpY2Ugd2hpY2ggdXNlcyBudW1iZXJlZCByZXBvcnRzLCB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgcmV0dXJuZWQgZGF0YQord2lsbCBiZSB0aGUgcmVwb3J0IG51bWJlcjsgdGhlIHJlcG9ydCBkYXRhIGZvbGxvd3MsIGJlZ2lubmluZyBpbiB0aGUgc2Vjb25kCitieXRlLiAgRm9yIGRldmljZXMgd2hpY2ggZG8gbm90IHVzZSBudW1iZXJlZCByZXBvcnRzLCB0aGUgcmVwb3J0IGRhdGEKK3dpbGwgYmVnaW4gYXQgdGhlIGZpcnN0IGJ5dGUuCisKK3dyaXRlKCkKKy0tLS0tLS0tCitUaGUgd3JpdGUoKSBmdW5jdGlvbiB3aWxsIHdyaXRlIGEgcmVwb3J0IHRvIHRoZSBkZXZpY2UuIEZvciBVU0IgZGV2aWNlcywgaWYKK3RoZSBkZXZpY2UgaGFzIGFuIElOVEVSUlVQVCBPVVQgZW5kcG9pbnQsIHRoZSByZXBvcnQgd2lsbCBiZSBzZW50IG9uIHRoYXQKK2VuZHBvaW50LiBJZiBpdCBkb2VzIG5vdCwgdGhlIHJlcG9ydCB3aWxsIGJlIHNlbnQgb3ZlciB0aGUgY29udHJvbCBlbmRwb2ludCwKK3VzaW5nIGEgU0VUX1JFUE9SVCB0cmFuc2Zlci4KKworVGhlIGZpcnN0IGJ5dGUgb2YgdGhlIGJ1ZmZlciBwYXNzZWQgdG8gd3JpdGUoKSBzaG91bGQgYmUgc2V0IHRvIHRoZSByZXBvcnQKK251bWJlci4gIElmIHRoZSBkZXZpY2UgZG9lcyBub3QgdXNlIG51bWJlcmVkIHJlcG9ydHMsIHRoZSBmaXJzdCBieXRlIHNob3VsZAorYmUgc2V0IHRvIDAuIFRoZSByZXBvcnQgZGF0YSBpdHNlbGYgc2hvdWxkIGJlZ2luIGF0IHRoZSBzZWNvbmQgYnl0ZS4KKworaW9jdGwoKQorLS0tLS0tLS0KK0hpZHJhdyBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGlvY3RsczoKKworSElESU9DR1JERVNDU0laRTogR2V0IFJlcG9ydCBEZXNjcmlwdG9yIFNpemUKK1RoaXMgaW9jdGwgd2lsbCBnZXQgdGhlIHNpemUgb2YgdGhlIGRldmljZSdzIHJlcG9ydCBkZXNjcmlwdG9yLgorCitISURJT0NHUkRFU0M6IEdldCBSZXBvcnQgRGVzY3JpcHRvcgorVGhpcyBpb2N0bCByZXR1cm5zIHRoZSBkZXZpY2UncyByZXBvcnQgZGVzY3JpcHRvciB1c2luZyBhCitoaWRyYXdfcmVwb3J0X2Rlc2NyaXB0b3Igc3RydWN0LiAgTWFrZSBzdXJlIHRvIHNldCB0aGUgc2l6ZSBmaWVsZCBvZiB0aGUKK2hpZHJhd19yZXBvcnRfZGVzY3JpcHRvciBzdHJ1Y3QgdG8gdGhlIHNpemUgcmV0dXJuZWQgZnJvbSBISURJT0NHUkRFU0NTSVpFLgorCitISURJT0NHUkFXSU5GTzogR2V0IFJhdyBJbmZvCitUaGlzIGlvY3RsIHdpbGwgcmV0dXJuIGEgaGlkcmF3X2RldmluZm8gc3RydWN0IGNvbnRhaW5pbmcgdGhlIGJ1cyB0eXBlLCB0aGUKK3ZlbmRvciBJRCAoVklEKSwgYW5kIHByb2R1Y3QgSUQgKFBJRCkgb2YgdGhlIGRldmljZS4gVGhlIGJ1cyB0eXBlIGNhbiBiZSBvbmUKK29mOgorCUJVU19VU0IKKwlCVVNfSElMCisJQlVTX0JMVUVUT09USAorCUJVU19WSVJUVUFMCit3aGljaCBhcmUgZGVmaW5lZCBpbiBsaW51eC9pbnB1dC5oLgorCitISURJT0NHUkFXTkFNRShsZW4pOiBHZXQgUmF3IE5hbWUKK1RoaXMgaW9jdGwgcmV0dXJucyBhIHN0cmluZyBjb250YWluaW5nIHRoZSB2ZW5kb3IgYW5kIHByb2R1Y3Qgc3RyaW5ncyBvZgordGhlIGRldmljZS4gIFRoZSByZXR1cm5lZCBzdHJpbmcgaXMgVW5pY29kZSwgVVRGLTggZW5jb2RlZC4KKworSElESU9DR1JBV1BIWVMobGVuKTogR2V0IFBoeXNpY2FsIEFkZHJlc3MKK1RoaXMgaW9jdGwgcmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGRldmljZS4KK0ZvciBVU0IgZGV2aWNlcywgdGhlIHN0cmluZyBjb250YWlucyB0aGUgcGh5c2ljYWwgcGF0aCB0byB0aGUgZGV2aWNlICh0aGUKK1VTQiBjb250cm9sbGVyLCBodWJzLCBwb3J0cywgZXRjKS4gIEZvciBCbHVldG9vdGggZGV2aWNlcywgdGhlIHN0cmluZworY29udGFpbnMgdGhlIGhhcmR3YXJlIChNQUMpIGFkZHJlc3Mgb2YgdGhlIGRldmljZS4KKworSElESU9DU0ZFQVRVUkUobGVuKTogU2VuZCBhIEZlYXR1cmUgUmVwb3J0CitUaGlzIGlvY3RsIHdpbGwgc2VuZCBhIGZlYXR1cmUgcmVwb3J0IHRvIHRoZSBkZXZpY2UuICBQZXIgdGhlIEhJRAorc3BlY2lmaWNhdGlvbiwgZmVhdHVyZSByZXBvcnRzIGFyZSBhbHdheXMgc2VudCB1c2luZyB0aGUgY29udHJvbCBlbmRwb2ludC4KK1NldCB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgc3VwcGxpZWQgYnVmZmVyIHRvIHRoZSByZXBvcnQgbnVtYmVyLiAgRm9yIGRldmljZXMKK3doaWNoIGRvIG5vdCB1c2UgbnVtYmVyZWQgcmVwb3J0cywgc2V0IHRoZSBmaXJzdCBieXRlIHRvIDAuIFRoZSByZXBvcnQgZGF0YQorYmVnaW5zIGluIHRoZSBzZWNvbmQgYnl0ZS4gTWFrZSBzdXJlIHRvIHNldCBsZW4gYWNjb3JkaW5nbHksIHRvIG9uZSBtb3JlCit0aGFuIHRoZSBsZW5ndGggb2YgdGhlIHJlcG9ydCAodG8gYWNjb3VudCBmb3IgdGhlIHJlcG9ydCBudW1iZXIpLgorCitISURJT0NHRkVBVFVSRShsZW4pOiBHZXQgYSBGZWF0dXJlIFJlcG9ydAorVGhpcyBpb2N0bCB3aWxsIHJlcXVlc3QgYSBmZWF0dXJlIHJlcG9ydCBmcm9tIHRoZSBkZXZpY2UgdXNpbmcgdGhlIGNvbnRyb2wKK2VuZHBvaW50LiAgVGhlIGZpcnN0IGJ5dGUgb2YgdGhlIHN1cHBsaWVkIGJ1ZmZlciBzaG91bGQgYmUgc2V0IHRvIHRoZSByZXBvcnQKK251bWJlciBvZiB0aGUgcmVxdWVzdGVkIHJlcG9ydC4gIEZvciBkZXZpY2VzIHdoaWNoIGRvIG5vdCB1c2UgbnVtYmVyZWQKK3JlcG9ydHMsIHNldCB0aGUgZmlyc3QgYnl0ZSB0byAwLiAgVGhlIHJlcG9ydCB3aWxsIGJlIHJldHVybmVkIHN0YXJ0aW5nIGF0Cit0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgYnVmZmVyIChpZTogdGhlIHJlcG9ydCBudW1iZXIgaXMgbm90IHJldHVybmVkKS4KKworRXhhbXBsZQorLS0tLS0tLS0tCitJbiBzYW1wbGVzLywgZmluZCBoaWQtZXhhbXBsZS5jLCB3aGljaCBzaG93cyBleGFtcGxlcyBvZiByZWFkKCksIHdyaXRlKCksCithbmQgYWxsIHRoZSBpb2N0bHMgZm9yIGhpZHJhdy4gIFRoZSBjb2RlIG1heSBiZSB1c2VkIGJ5IGFueW9uZSBmb3IgYW55CitwdXJwb3NlLCBhbmQgY2FuIHNlcnZlIGFzIGEgc3RhcnRpbmcgcG9pbnQgZm9yIGRldmVsb3BpbmcgYXBwbGljYXRpb25zIHVzaW5nCitoaWRyYXcuCisKK0RvY3VtZW50IGJ5OgorCUFsYW4gT3R0IDxhbGFuQHNpZ25hbDExLnVzPiwgU2lnbmFsIDExIFNvZnR3YXJlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2hpZC91aGlkLnR4dCBiL0RvY3VtZW50YXRpb24vaGlkL3VoaWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NjU2ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2hpZC91aGlkLnR4dApAQCAtMCwwICsxLDE4NyBAQAorICAgICAgVUhJRCAtIFVzZXItc3BhY2UgSS9PIGRyaXZlciBzdXBwb3J0IGZvciBISUQgc3Vic3lzdGVtCisgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1VISUQgYWxsb3dzIHVzZXItc3BhY2UgdG8gaW1wbGVtZW50IEhJRCB0cmFuc3BvcnQgZHJpdmVycy4gUGxlYXNlIHNlZQoraGlkLXRyYW5zcG9ydC50eHQgZm9yIGFuIGludHJvZHVjdGlvbiBpbnRvIEhJRCB0cmFuc3BvcnQgZHJpdmVycy4gVGhpcyBkb2N1bWVudAorcmVsaWVzIGhlYXZpbHkgb24gdGhlIGRlZmluaXRpb25zIGRlY2xhcmVkIHRoZXJlLgorCitXaXRoIFVISUQsIGEgdXNlci1zcGFjZSB0cmFuc3BvcnQgZHJpdmVyIGNhbiBjcmVhdGUga2VybmVsIGhpZC1kZXZpY2VzIGZvciBlYWNoCitkZXZpY2UgY29ubmVjdGVkIHRvIHRoZSB1c2VyLXNwYWNlIGNvbnRyb2xsZWQgYnVzLiBUaGUgVUhJRCBBUEkgZGVmaW5lcyB0aGUgSS9PCitldmVudHMgcHJvdmlkZWQgZnJvbSB0aGUga2VybmVsIHRvIHVzZXItc3BhY2UgYW5kIHZpY2UgdmVyc2EuCisKK1RoZXJlIGlzIGFuIGV4YW1wbGUgdXNlci1zcGFjZSBhcHBsaWNhdGlvbiBpbiAuL3NhbXBsZXMvdWhpZC91aGlkLWV4YW1wbGUuYworCitUaGUgVUhJRCBBUEkKKy0tLS0tLS0tLS0tLQorCitVSElEIGlzIGFjY2Vzc2VkIHRocm91Z2ggYSBjaGFyYWN0ZXIgbWlzYy1kZXZpY2UuIFRoZSBtaW5vci1udW1iZXIgaXMgYWxsb2NhdGVkCitkeW5hbWljYWxseSBzbyB5b3UgbmVlZCB0byByZWx5IG9uIHVkZXYgKG9yIHNpbWlsYXIpIHRvIGNyZWF0ZSB0aGUgZGV2aWNlIG5vZGUuCitUaGlzIGlzIC9kZXYvdWhpZCBieSBkZWZhdWx0LgorCitJZiBhIG5ldyBkZXZpY2UgaXMgZGV0ZWN0ZWQgYnkgeW91ciBISUQgSS9PIERyaXZlciBhbmQgeW91IHdhbnQgdG8gcmVnaXN0ZXIgdGhpcworZGV2aWNlIHdpdGggdGhlIEhJRCBzdWJzeXN0ZW0sIHRoZW4geW91IG5lZWQgdG8gb3BlbiAvZGV2L3VoaWQgb25jZSBmb3IgZWFjaAorZGV2aWNlIHlvdSB3YW50IHRvIHJlZ2lzdGVyLiBBbGwgZnVydGhlciBjb21tdW5pY2F0aW9uIGlzIGRvbmUgYnkgcmVhZCgpJ2luZyBvcgord3JpdGUoKSdpbmcgInN0cnVjdCB1aGlkX2V2ZW50IiBvYmplY3RzLiBOb24tYmxvY2tpbmcgb3BlcmF0aW9ucyBhcmUgc3VwcG9ydGVkCitieSBzZXR0aW5nIE9fTk9OQkxPQ0suCisKK3N0cnVjdCB1aGlkX2V2ZW50IHsKKyAgICAgICAgX191MzIgdHlwZTsKKyAgICAgICAgdW5pb24geworICAgICAgICAgICAgICAgIHN0cnVjdCB1aGlkX2NyZWF0ZTJfcmVxIGNyZWF0ZTI7CisgICAgICAgICAgICAgICAgc3RydWN0IHVoaWRfb3V0cHV0X3JlcSBvdXRwdXQ7CisgICAgICAgICAgICAgICAgc3RydWN0IHVoaWRfaW5wdXQyX3JlcSBpbnB1dDI7CisgICAgICAgICAgICAgICAgLi4uCisgICAgICAgIH0gdTsKK307CisKK1RoZSAidHlwZSIgZmllbGQgY29udGFpbnMgdGhlIElEIG9mIHRoZSBldmVudC4gRGVwZW5kaW5nIG9uIHRoZSBJRCBkaWZmZXJlbnQKK3BheWxvYWRzIGFyZSBzZW50LiBZb3UgbXVzdCBub3Qgc3BsaXQgYSBzaW5nbGUgZXZlbnQgYWNyb3NzIG11bHRpcGxlIHJlYWQoKSdzIG9yCittdWx0aXBsZSB3cml0ZSgpJ3MuIEEgc2luZ2xlIGV2ZW50IG11c3QgYWx3YXlzIGJlIHNlbnQgYXMgYSB3aG9sZS4gRnVydGhlcm1vcmUsCitvbmx5IGEgc2luZ2xlIGV2ZW50IGNhbiBiZSBzZW50IHBlciByZWFkKCkgb3Igd3JpdGUoKS4gUGVuZGluZyBkYXRhIGlzIGlnbm9yZWQuCitJZiB5b3Ugd2FudCB0byBoYW5kbGUgbXVsdGlwbGUgZXZlbnRzIGluIGEgc2luZ2xlIHN5c2NhbGwsIHRoZW4gdXNlIHZlY3RvcmVkCitJL08gd2l0aCByZWFkdigpL3dyaXRldigpLgorVGhlICJ0eXBlIiBmaWVsZCBkZWZpbmVzIHRoZSBwYXlsb2FkLiBGb3IgZWFjaCB0eXBlLCB0aGVyZSBpcyBhCitwYXlsb2FkLXN0cnVjdHVyZSBhdmFpbGFibGUgaW4gdGhlIHVuaW9uICJ1IiAoZXhjZXB0IGZvciBlbXB0eSBwYXlsb2FkcykuIFRoaXMKK3BheWxvYWQgY29udGFpbnMgbWFuYWdlbWVudCBhbmQvb3IgZGV2aWNlIGRhdGEuCisKK1RoZSBmaXJzdCB0aGluZyB5b3Ugc2hvdWxkIGRvIGlzIHNlbmRpbmcgYW4gVUhJRF9DUkVBVEUyIGV2ZW50LiBUaGlzIHdpbGwKK3JlZ2lzdGVyIHRoZSBkZXZpY2UuIFVISUQgd2lsbCByZXNwb25kIHdpdGggYW4gVUhJRF9TVEFSVCBldmVudC4gWW91IGNhbiBub3cKK3N0YXJ0IHNlbmRpbmcgZGF0YSB0byBhbmQgcmVhZGluZyBkYXRhIGZyb20gVUhJRC4gSG93ZXZlciwgdW5sZXNzIFVISUQgc2VuZHMgdGhlCitVSElEX09QRU4gZXZlbnQsIHRoZSBpbnRlcm5hbGx5IGF0dGFjaGVkIEhJRCBEZXZpY2UgRHJpdmVyIGhhcyBubyB1c2VyIGF0dGFjaGVkLgorVGhhdCBpcywgeW91IG1pZ2h0IHB1dCB5b3VyIGRldmljZSBhc2xlZXAgdW5sZXNzIHlvdSByZWNlaXZlIHRoZSBVSElEX09QRU4KK2V2ZW50LiBJZiB5b3UgcmVjZWl2ZSB0aGUgVUhJRF9PUEVOIGV2ZW50LCB5b3Ugc2hvdWxkIHN0YXJ0IEkvTy4gSWYgdGhlIGxhc3QKK3VzZXIgY2xvc2VzIHRoZSBISUQgZGV2aWNlLCB5b3Ugd2lsbCByZWNlaXZlIGFuIFVISURfQ0xPU0UgZXZlbnQuIFRoaXMgbWF5IGJlCitmb2xsb3dlZCBieSBhbiBVSElEX09QRU4gZXZlbnQgYWdhaW4gYW5kIHNvIG9uLiBUaGVyZSBpcyBubyBuZWVkIHRvIHBlcmZvcm0KK3JlZmVyZW5jZS1jb3VudGluZyBpbiB1c2VyLXNwYWNlLiBUaGF0IGlzLCB5b3Ugd2lsbCBuZXZlciByZWNlaXZlIG11bHRpcGxlCitVSElEX09QRU4gZXZlbnRzIHdpdGhvdXQgYW4gVUhJRF9DTE9TRSBldmVudC4gVGhlIEhJRCBzdWJzeXN0ZW0gcGVyZm9ybXMKK3JlZi1jb3VudGluZyBmb3IgeW91LgorWW91IG1heSBkZWNpZGUgdG8gaWdub3JlIFVISURfT1BFTi9VSElEX0NMT1NFLCB0aG91Z2guIEkvTyBpcyBhbGxvd2VkIGV2ZW4KK3Rob3VnaCB0aGUgZGV2aWNlIG1heSBoYXZlIG5vIHVzZXJzLgorCitJZiB5b3Ugd2FudCB0byBzZW5kIGRhdGEgb24gdGhlIGludGVycnVwdCBjaGFubmVsIHRvIHRoZSBISUQgc3Vic3lzdGVtLCB5b3Ugc2VuZAorYW4gSElEX0lOUFVUMiBldmVudCB3aXRoIHlvdXIgcmF3IGRhdGEgcGF5bG9hZC4gSWYgdGhlIGtlcm5lbCB3YW50cyB0byBzZW5kIGRhdGEKK29uIHRoZSBpbnRlcnJ1cHQgY2hhbm5lbCB0byB0aGUgZGV2aWNlLCB5b3Ugd2lsbCByZWFkIGFuIFVISURfT1VUUFVUIGV2ZW50LgorRGF0YSByZXF1ZXN0cyBvbiB0aGUgY29udHJvbCBjaGFubmVsIGFyZSBjdXJyZW50bHkgbGltaXRlZCB0byBHRVRfUkVQT1JUIGFuZAorU0VUX1JFUE9SVCAobm8gb3RoZXIgZGF0YSByZXBvcnRzIG9uIHRoZSBjb250cm9sIGNoYW5uZWwgYXJlIGRlZmluZWQgc28gZmFyKS4KK1Rob3NlIHJlcXVlc3RzIGFyZSBhbHdheXMgc3luY2hyb25vdXMuIFRoYXQgbWVhbnMsIHRoZSBrZXJuZWwgc2VuZHMKK1VISURfR0VUX1JFUE9SVCBhbmQgVUhJRF9TRVRfUkVQT1JUIGV2ZW50cyBhbmQgcmVxdWlyZXMgeW91IHRvIGZvcndhcmQgdGhlbSB0bwordGhlIGRldmljZSBvbiB0aGUgY29udHJvbCBjaGFubmVsLiBPbmNlIHRoZSBkZXZpY2UgcmVzcG9uZHMsIHlvdSBtdXN0IGZvcndhcmQKK3RoZSByZXNwb25zZSB2aWEgVUhJRF9HRVRfUkVQT1JUX1JFUExZIGFuZCBVSElEX1NFVF9SRVBPUlRfUkVQTFkgdG8gdGhlIGtlcm5lbC4KK1RoZSBrZXJuZWwgYmxvY2tzIGludGVybmFsIGRyaXZlci1leGVjdXRpb24gZHVyaW5nIHN1Y2ggcm91bmQtdHJpcHMgKHRpbWVzIG91dAorYWZ0ZXIgYSBoYXJkLWNvZGVkIHBlcmlvZCkuCisKK0lmIHlvdXIgZGV2aWNlIGRpc2Nvbm5lY3RzLCB5b3Ugc2hvdWxkIHNlbmQgYW4gVUhJRF9ERVNUUk9ZIGV2ZW50LiBUaGlzIHdpbGwKK3VucmVnaXN0ZXIgdGhlIGRldmljZS4gWW91IGNhbiBub3cgc2VuZCBVSElEX0NSRUFURTIgYWdhaW4gdG8gcmVnaXN0ZXIgYSBuZXcKK2RldmljZS4KK0lmIHlvdSBjbG9zZSgpIHRoZSBmZCwgdGhlIGRldmljZSBpcyBhdXRvbWF0aWNhbGx5IHVucmVnaXN0ZXJlZCBhbmQgZGVzdHJveWVkCitpbnRlcm5hbGx5LgorCit3cml0ZSgpCistLS0tLS0tCit3cml0ZSgpIGFsbG93cyB5b3UgdG8gbW9kaWZ5IHRoZSBzdGF0ZSBvZiB0aGUgZGV2aWNlIGFuZCBmZWVkIGlucHV0IGRhdGEgaW50bwordGhlIGtlcm5lbC4gVGhlIGtlcm5lbCB3aWxsIHBhcnNlIHRoZSBldmVudCBpbW1lZGlhdGVseSBhbmQgaWYgdGhlIGV2ZW50IElEIGlzCitub3Qgc3VwcG9ydGVkLCBpdCB3aWxsIHJldHVybiAtRU9QTk9UU1VQUC4gSWYgdGhlIHBheWxvYWQgaXMgaW52YWxpZCwgdGhlbgorLUVJTlZBTCBpcyByZXR1cm5lZCwgb3RoZXJ3aXNlLCB0aGUgYW1vdW50IG9mIGRhdGEgdGhhdCB3YXMgcmVhZCBpcyByZXR1cm5lZCBhbmQKK3RoZSByZXF1ZXN0IHdhcyBoYW5kbGVkIHN1Y2Nlc3NmdWxseS4gT19OT05CTE9DSyBkb2VzIG5vdCBhZmZlY3Qgd3JpdGUoKSBhcword3JpdGVzIGFyZSBhbHdheXMgaGFuZGxlZCBpbW1lZGlhdGVseSBpbiBhIG5vbi1ibG9ja2luZyBmYXNoaW9uLiBGdXR1cmUgcmVxdWVzdHMKK21pZ2h0IG1ha2UgdXNlIG9mIE9fTk9OQkxPQ0ssIHRob3VnaC4KKworICBVSElEX0NSRUFURTI6CisgIFRoaXMgY3JlYXRlcyB0aGUgaW50ZXJuYWwgSElEIGRldmljZS4gTm8gSS9PIGlzIHBvc3NpYmxlIHVudGlsIHlvdSBzZW5kIHRoaXMKKyAgZXZlbnQgdG8gdGhlIGtlcm5lbC4gVGhlIHBheWxvYWQgaXMgb2YgdHlwZSBzdHJ1Y3QgdWhpZF9jcmVhdGUyX3JlcSBhbmQKKyAgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgeW91ciBkZXZpY2UuIFlvdSBjYW4gc3RhcnQgSS9PIG5vdy4KKworICBVSElEX0RFU1RST1k6CisgIFRoaXMgZGVzdHJveXMgdGhlIGludGVybmFsIEhJRCBkZXZpY2UuIE5vIGZ1cnRoZXIgSS9PIHdpbGwgYmUgYWNjZXB0ZWQuIFRoZXJlCisgIG1heSBzdGlsbCBiZSBwZW5kaW5nIG1lc3NhZ2VzIHRoYXQgeW91IGNhbiByZWNlaXZlIHdpdGggcmVhZCgpIGJ1dCBubyBmdXJ0aGVyCisgIFVISURfSU5QVVQgZXZlbnRzIGNhbiBiZSBzZW50IHRvIHRoZSBrZXJuZWwuCisgIFlvdSBjYW4gY3JlYXRlIGEgbmV3IGRldmljZSBieSBzZW5kaW5nIFVISURfQ1JFQVRFMiBhZ2Fpbi4gVGhlcmUgaXMgbm8gbmVlZCB0bworICByZW9wZW4gdGhlIGNoYXJhY3RlciBkZXZpY2UuCisKKyAgVUhJRF9JTlBVVDI6CisgIFlvdSBtdXN0IHNlbmQgVUhJRF9DUkVBVEUyIGJlZm9yZSBzZW5kaW5nIGlucHV0IHRvIHRoZSBrZXJuZWwhIFRoaXMgZXZlbnQKKyAgY29udGFpbnMgYSBkYXRhLXBheWxvYWQuIFRoaXMgaXMgdGhlIHJhdyBkYXRhIHRoYXQgeW91IHJlYWQgZnJvbSB5b3VyIGRldmljZQorICBvbiB0aGUgaW50ZXJydXB0IGNoYW5uZWwuIFRoZSBrZXJuZWwgd2lsbCBwYXJzZSB0aGUgSElEIHJlcG9ydHMuCisKKyAgVUhJRF9HRVRfUkVQT1JUX1JFUExZOgorICBJZiB5b3UgcmVjZWl2ZSBhIFVISURfR0VUX1JFUE9SVCByZXF1ZXN0IHlvdSBtdXN0IGFuc3dlciB3aXRoIHRoaXMgcmVxdWVzdC4KKyAgWW91ICBtdXN0IGNvcHkgdGhlICJpZCIgZmllbGQgZnJvbSB0aGUgcmVxdWVzdCBpbnRvIHRoZSBhbnN3ZXIuIFNldCB0aGUgImVyciIKKyAgZmllbGQgdG8gMCBpZiBubyBlcnJvciBvY2N1cnJlZCBvciB0byBFSU8gaWYgYW4gSS9PIGVycm9yIG9jY3VycmVkLgorICBJZiAiZXJyIiBpcyAwIHRoZW4geW91IHNob3VsZCBmaWxsIHRoZSBidWZmZXIgb2YgdGhlIGFuc3dlciB3aXRoIHRoZSByZXN1bHRzCisgIG9mIHRoZSBHRVRfUkVQT1JUIHJlcXVlc3QgYW5kIHNldCAic2l6ZSIgY29ycmVzcG9uZGluZ2x5LgorCisgIFVISURfU0VUX1JFUE9SVF9SRVBMWToKKyAgVGhpcyBpcyB0aGUgU0VUX1JFUE9SVCBlcXVpdmFsZW50IG9mIFVISURfR0VUX1JFUE9SVF9SRVBMWS4gVW5saWtlIEdFVF9SRVBPUlQsCisgIFNFVF9SRVBPUlQgbmV2ZXIgcmV0dXJucyBhIGRhdGEgYnVmZmVyLCB0aGVyZWZvcmUsIGl0J3Mgc3VmZmljaWVudCB0byBzZXQgdGhlCisgICJpZCIgYW5kICJlcnIiIGZpZWxkcyBjb3JyZWN0bHkuCisKK3JlYWQoKQorLS0tLS0tCityZWFkKCkgd2lsbCByZXR1cm4gYSBxdWV1ZWQgb3V0cHV0IHJlcG9ydC4gTm8gcmVhY3Rpb24gaXMgcmVxdWlyZWQgdG8gYW55IG9mCit0aGVtIGJ1dCB5b3Ugc2hvdWxkIGhhbmRsZSB0aGVtIGFjY29yZGluZyB0byB5b3VyIG5lZWRzLgorCisgIFVISURfU1RBUlQ6CisgIFRoaXMgaXMgc2VudCB3aGVuIHRoZSBISUQgZGV2aWNlIGlzIHN0YXJ0ZWQuIENvbnNpZGVyIHRoaXMgYXMgYW4gYW5zd2VyIHRvCisgIFVISURfQ1JFQVRFMi4gVGhpcyBpcyBhbHdheXMgdGhlIGZpcnN0IGV2ZW50IHRoYXQgaXMgc2VudC4gTm90ZSB0aGF0IHRoaXMKKyAgZXZlbnQgbWlnaHQgbm90IGJlIGF2YWlsYWJsZSBpbW1lZGlhdGVseSBhZnRlciB3cml0ZShVSElEX0NSRUFURTIpIHJldHVybnMuCisgIERldmljZSBkcml2ZXJzIG1pZ2h0IHJlcXVpcmVkIGRlbGF5ZWQgc2V0dXBzLgorICBUaGlzIGV2ZW50IGNvbnRhaW5zIGEgcGF5bG9hZCBvZiB0eXBlIHVoaWRfc3RhcnRfcmVxLiBUaGUgImRldl9mbGFncyIgZmllbGQKKyAgZGVzY3JpYmVzIHNwZWNpYWwgYmVoYXZpb3JzIG9mIGEgZGV2aWNlLiBUaGUgZm9sbG93aW5nIGZsYWdzIGFyZSBkZWZpbmVkOgorICAgICAgVUhJRF9ERVZfTlVNQkVSRURfRkVBVFVSRV9SRVBPUlRTOgorICAgICAgVUhJRF9ERVZfTlVNQkVSRURfT1VUUFVUX1JFUE9SVFM6CisgICAgICBVSElEX0RFVl9OVU1CRVJFRF9JTlBVVF9SRVBPUlRTOgorICAgICAgICAgIEVhY2ggb2YgdGhlc2UgZmxhZ3MgZGVmaW5lcyB3aGV0aGVyIGEgZ2l2ZW4gcmVwb3J0LXR5cGUgdXNlcyBudW1iZXJlZAorICAgICAgICAgIHJlcG9ydHMuIElmIG51bWJlcmVkIHJlcG9ydHMgYXJlIHVzZWQgZm9yIGEgdHlwZSwgYWxsIG1lc3NhZ2VzIGZyb20KKyAgICAgICAgICB0aGUga2VybmVsIGFscmVhZHkgaGF2ZSB0aGUgcmVwb3J0LW51bWJlciBhcyBwcmVmaXguIE90aGVyd2lzZSwgbm8KKyAgICAgICAgICBwcmVmaXggaXMgYWRkZWQgYnkgdGhlIGtlcm5lbC4KKyAgICAgICAgICBGb3IgbWVzc2FnZXMgc2VudCBieSB1c2VyLXNwYWNlIHRvIHRoZSBrZXJuZWwsIHlvdSBtdXN0IGFkanVzdCB0aGUKKyAgICAgICAgICBwcmVmaXhlcyBhY2NvcmRpbmcgdG8gdGhlc2UgZmxhZ3MuCisKKyAgVUhJRF9TVE9QOgorICBUaGlzIGlzIHNlbnQgd2hlbiB0aGUgSElEIGRldmljZSBpcyBzdG9wcGVkLiBDb25zaWRlciB0aGlzIGFzIGFuIGFuc3dlciB0bworICBVSElEX0RFU1RST1kuCisgIElmIHlvdSBkaWRuJ3QgZGVzdHJveSB5b3VyIGRldmljZSB2aWEgVUhJRF9ERVNUUk9ZLCBidXQgdGhlIGtlcm5lbCBzZW5kcyBhbgorICBVSElEX1NUT1AgZXZlbnQsIHRoaXMgc2hvdWxkIHVzdWFsbHkgYmUgaWdub3JlZC4gSXQgbWVhbnMgdGhhdCB0aGUga2VybmVsCisgIHJlbG9hZGVkL2NoYW5nZWQgdGhlIGRldmljZSBkcml2ZXIgbG9hZGVkIG9uIHlvdXIgSElEIGRldmljZSAob3Igc29tZSBvdGhlcgorICBtYWludGVuYW5jZSBhY3Rpb25zIGhhcHBlbmVkKS4KKyAgWW91IGNhbiB1c3VhbGx5IGlnbm9yZWQgYW55IFVISURfU1RPUCBldmVudHMgc2FmZWx5LgorCisgIFVISURfT1BFTjoKKyAgVGhpcyBpcyBzZW50IHdoZW4gdGhlIEhJRCBkZXZpY2UgaXMgb3BlbmVkLiBUaGF0IGlzLCB0aGUgZGF0YSB0aGF0IHRoZSBISUQKKyAgZGV2aWNlIHByb3ZpZGVzIGlzIHJlYWQgYnkgc29tZSBvdGhlciBwcm9jZXNzLiBZb3UgbWF5IGlnbm9yZSB0aGlzIGV2ZW50IGJ1dAorICBpdCBpcyB1c2VmdWwgZm9yIHBvd2VyLW1hbmFnZW1lbnQuIEFzIGxvbmcgYXMgeW91IGhhdmVuJ3QgcmVjZWl2ZWQgdGhpcyBldmVudAorICB0aGVyZSBpcyBhY3R1YWxseSBubyBvdGhlciBwcm9jZXNzIHRoYXQgcmVhZHMgeW91ciBkYXRhIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8KKyAgc2VuZCBVSElEX0lOUFVUMiBldmVudHMgdG8gdGhlIGtlcm5lbC4KKworICBVSElEX0NMT1NFOgorICBUaGlzIGlzIHNlbnQgd2hlbiB0aGVyZSBhcmUgbm8gbW9yZSBwcm9jZXNzZXMgd2hpY2ggcmVhZCB0aGUgSElEIGRhdGEuIEl0IGlzCisgIHRoZSBjb3VudGVycGFydCBvZiBVSElEX09QRU4gYW5kIHlvdSBtYXkgYXMgd2VsbCBpZ25vcmUgdGhpcyBldmVudC4KKworICBVSElEX09VVFBVVDoKKyAgVGhpcyBpcyBzZW50IGlmIHRoZSBISUQgZGV2aWNlIGRyaXZlciB3YW50cyB0byBzZW5kIHJhdyBkYXRhIHRvIHRoZSBJL08KKyAgZGV2aWNlIG9uIHRoZSBpbnRlcnJ1cHQgY2hhbm5lbC4gWW91IHNob3VsZCByZWFkIHRoZSBwYXlsb2FkIGFuZCBmb3J3YXJkIGl0IHRvCisgIHRoZSBkZXZpY2UuIFRoZSBwYXlsb2FkIGlzIG9mIHR5cGUgInN0cnVjdCB1aGlkX2RhdGFfcmVxIi4KKyAgVGhpcyBtYXkgYmUgcmVjZWl2ZWQgZXZlbiB0aG91Z2ggeW91IGhhdmVuJ3QgcmVjZWl2ZWQgVUhJRF9PUEVOLCB5ZXQuCisKKyAgVUhJRF9HRVRfUkVQT1JUOgorICBUaGlzIGV2ZW50IGlzIHNlbnQgaWYgdGhlIGtlcm5lbCBkcml2ZXIgd2FudHMgdG8gcGVyZm9ybSBhIEdFVF9SRVBPUlQgcmVxdWVzdAorICBvbiB0aGUgY29udHJvbCBjaGFubmVsZCBhcyBkZXNjcmliZWQgaW4gdGhlIEhJRCBzcGVjcy4gVGhlIHJlcG9ydC10eXBlIGFuZAorICByZXBvcnQtbnVtYmVyIGFyZSBhdmFpbGFibGUgaW4gdGhlIHBheWxvYWQuCisgIFRoZSBrZXJuZWwgc2VyaWFsaXplcyBHRVRfUkVQT1JUIHJlcXVlc3RzIHNvIHRoZXJlIHdpbGwgbmV2ZXIgYmUgdHdvIGluCisgIHBhcmFsbGVsLiBIb3dldmVyLCBpZiB5b3UgZmFpbCB0byByZXNwb25kIHdpdGggYSBVSElEX0dFVF9SRVBPUlRfUkVQTFksIHRoZQorICByZXF1ZXN0IG1pZ2h0IHNpbGVudGx5IHRpbWUgb3V0LgorICBPbmNlIHlvdSByZWFkIGEgR0VUX1JFUE9SVCByZXF1ZXN0LCB5b3Ugc2hhbGwgZm9yd2FyZCBpdCB0byB0aGUgaGlkIGRldmljZSBhbmQKKyAgcmVtZW1iZXIgdGhlICJpZCIgZmllbGQgaW4gdGhlIHBheWxvYWQuIE9uY2UgeW91ciBoaWQgZGV2aWNlIHJlc3BvbmRzIHRvIHRoZQorICBHRVRfUkVQT1JUIChvciBpZiBpdCBmYWlscyksIHlvdSBtdXN0IHNlbmQgYSBVSElEX0dFVF9SRVBPUlRfUkVQTFkgdG8gdGhlCisgIGtlcm5lbCB3aXRoIHRoZSBleGFjdCBzYW1lICJpZCIgYXMgaW4gdGhlIHJlcXVlc3QuIElmIHRoZSByZXF1ZXN0IGFscmVhZHkKKyAgdGltZWQgb3V0LCB0aGUga2VybmVsIHdpbGwgaWdub3JlIHRoZSByZXNwb25zZSBzaWxlbnRseS4gVGhlICJpZCIgZmllbGQgaXMKKyAgbmV2ZXIgcmUtdXNlZCwgc28gY29uZmxpY3RzIGNhbm5vdCBoYXBwZW4uCisKKyAgVUhJRF9TRVRfUkVQT1JUOgorICBUaGlzIGlzIHRoZSBTRVRfUkVQT1JUIGVxdWl2YWxlbnQgb2YgVUhJRF9HRVRfUkVQT1JULiBPbiByZWNlaXB0LCB5b3Ugc2hhbGwKKyAgc2VuZCBhIFNFVF9SRVBPUlQgcmVxdWVzdCB0byB5b3VyIGhpZCBkZXZpY2UuIE9uY2UgaXQgcmVwbGllcywgeW91IG11c3QgdGVsbAorICB0aGUga2VybmVsIGFib3V0IGl0IHZpYSBVSElEX1NFVF9SRVBPUlRfUkVQTFkuCisgIFRoZSBzYW1lIHJlc3RyaWN0aW9ucyBhcyBmb3IgVUhJRF9HRVRfUkVQT1JUIGFwcGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitXcml0dGVuIDIwMTIsIERhdmlkIEhlcnJtYW5uIDxkaC5oZXJybWFubkBnbWFpbC5jb20+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2hpZ2h1aWQudHh0IGIvRG9jdW1lbnRhdGlvbi9oaWdodWlkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmFkNmYxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9oaWdodWlkLnR4dApAQCAtMCwwICsxLDc3IEBACitOb3RlcyBvbiB0aGUgY2hhbmdlIGZyb20gMTYtYml0IFVJRHMgdG8gMzItYml0IFVJRHM6CisKKy0ga2VybmVsIGNvZGUgTVVTVCB0YWtlIGludG8gYWNjb3VudCBfX2tlcm5lbF91aWRfdCBhbmQgX19rZXJuZWxfdWlkMzJfdAorICB3aGVuIGNvbW11bmljYXRpbmcgYmV0d2VlbiB1c2VyIGFuZCBrZXJuZWwgc3BhY2UgaW4gYW4gaW9jdGwgb3IgZGF0YQorICBzdHJ1Y3R1cmUuCisKKy0ga2VybmVsIGNvZGUgc2hvdWxkIHVzZSB1aWRfdCBhbmQgZ2lkX3QgaW4ga2VybmVsLXByaXZhdGUgc3RydWN0dXJlcyBhbmQKKyAgY29kZS4KKworV2hhdCdzIGxlZnQgdG8gYmUgZG9uZSBmb3IgMzItYml0IFVJRHMgb24gYWxsIExpbnV4IGFyY2hpdGVjdHVyZXM6CisKKy0gRGlzayBxdW90YXMgaGF2ZSBhbiBpbnRlcmVzdGluZyBsaW1pdGF0aW9uIHRoYXQgaXMgbm90IHJlbGF0ZWQgdG8gdGhlCisgIG1heGltdW0gVUlEL0dJRC4gVGhleSBhcmUgbGltaXRlZCBieSB0aGUgbWF4aW11bSBmaWxlIHNpemUgb24gdGhlCisgIHVuZGVybHlpbmcgZmlsZXN5c3RlbSwgYmVjYXVzZSBxdW90YSByZWNvcmRzIGFyZSB3cml0dGVuIGF0IG9mZnNldHMKKyAgY29ycmVzcG9uZGluZyB0byB0aGUgVUlEIGluIHF1ZXN0aW9uLgorICBGdXJ0aGVyIGludmVzdGlnYXRpb24gaXMgbmVlZGVkIHRvIHNlZSBpZiB0aGUgcXVvdGEgc3lzdGVtIGNhbiBjb3BlCisgIHByb3Blcmx5IHdpdGggaHVnZSBVSURzLiBJZiBpdCBjYW4gZGVhbCB3aXRoIDY0LWJpdCBmaWxlIG9mZnNldHMgb24gYWxsIAorICBhcmNoaXRlY3R1cmVzLCB0aGlzIHNob3VsZCBub3QgYmUgYSBwcm9ibGVtLgorCistIERlY2lkZSB3aGV0aGVyIG9yIG5vdCB0byBrZWVwIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHN5c3RlbQorICBhY2NvdW50aW5nIGZpbGUsIG9yIGlmIHdlIHNob3VsZCBicmVhayBpdCBhcyB0aGUgY29tbWVudHMgc3VnZ2VzdAorICAoY3VycmVudGx5LCB0aGUgb2xkIDE2LWJpdCBVSUQgYW5kIEdJRCBhcmUgc3RpbGwgd3JpdHRlbiB0byBkaXNrLCBhbmQKKyAgcGFydCBvZiB0aGUgZm9ybWVyIHBhZCBzcGFjZSBpcyB1c2VkIHRvIHN0b3JlIHNlcGFyYXRlIDMyLWJpdCBVSUQgYW5kCisgIEdJRCkKKworLSBOZWVkIHRvIHZhbGlkYXRlIHRoYXQgT1MgZW11bGF0aW9uIGNhbGxzIHRoZSAxNi1iaXQgVUlECisgIGNvbXBhdGliaWxpdHkgc3lzY2FsbHMsIGlmIHRoZSBPUyBiZWluZyBlbXVsYXRlZCB1c2VkIDE2LWJpdCBVSURzLCBvcgorICB1c2VzIHRoZSAzMi1iaXQgVUlEIHN5c3RlbSBjYWxscyBwcm9wZXJseSBvdGhlcndpc2UuCisKKyAgVGhpcyBhZmZlY3RzIGF0IGxlYXN0OgorCWlCQ1Mgb24gSW50ZWwKKworCXNwYXJjMzIgZW11bGF0aW9uIG9uIHNwYXJjNjQKKwkobmVlZCB0byBzdXBwb3J0IHdoYXRldmVyIG5ldyAzMi1iaXQgVUlEIHN5c3RlbSBjYWxscyBhcmUgYWRkZWQgdG8KKwlzcGFyYzMyKQorCistIFZhbGlkYXRlIHRoYXQgYWxsIGZpbGVzeXN0ZW1zIGJlaGF2ZSBwcm9wZXJseS4KKworICBBdCBwcmVzZW50LCAzMi1iaXQgVUlEcyBfc2hvdWxkXyB3b3JrIGZvcjoKKwlleHQyCisJdWZzCisJaXNvZnMKKwluZnMKKwljb2RhCisJdWRmCisKKyAgSW9jdGwoKSBmaXh1cHMgaGF2ZSBiZWVuIG1hZGUgZm9yOgorCW5jcGZzCisJc21iZnMKKworICBGaWxlc3lzdGVtcyB3aXRoIHNpbXBsZSBmaXh1cHMgdG8gcHJldmVudCAxNi1iaXQgVUlEIHdyYXBhcm91bmQ6CisJbWluaXgKKwlzeXN2CisJcW54NAorCisgIE90aGVyIGZpbGVzeXN0ZW1zIGhhdmUgbm90IGJlZW4gY2hlY2tlZCB5ZXQuCisKKy0gVGhlIG5jcGZzIGFuZCBzbXBmcyBmaWxlc3lzdGVtcyBjYW5ub3QgcHJlc2VudGx5IHVzZSAzMi1iaXQgVUlEcyBpbgorICBhbGwgaW9jdGwoKXMuIFNvbWUgbmV3IGlvY3RsKClzIGhhdmUgYmVlbiBhZGRlZCB3aXRoIDMyLWJpdCBVSURzLCBidXQKKyAgbW9yZSBhcmUgbmVlZGVkLiAoYXMgd2VsbCBhcyBuZXcgdXNlcjwtPmtlcm5lbCBkYXRhIHN0cnVjdHVyZXMpCisKKy0gVGhlIEVMRiBjb3JlIGR1bXAgZm9ybWF0IG9ubHkgc3VwcG9ydHMgMTYtYml0IFVJRHMgb24gYXJtLCBpMzg2LCBtNjhrLAorICBzaCwgYW5kIHNwYXJjMzIuIEZpeGluZyB0aGlzIGlzIHByb2JhYmx5IG5vdCB0aGF0IGltcG9ydGFudCwgYnV0IHdvdWxkCisgIHJlcXVpcmUgYWRkaW5nIGEgbmV3IEVMRiBzZWN0aW9uLgorCistIFRoZSBpb2N0bCgpcyB1c2VkIHRvIGNvbnRyb2wgdGhlIGluLWtlcm5lbCBORlMgc2VydmVyIG9ubHkgc3VwcG9ydAorICAxNi1iaXQgVUlEcyBvbiBhcm0sIGkzODYsIG02OGssIHNoLCBhbmQgc3BhcmMzMi4KKworLSBtYWtlIHN1cmUgdGhhdCB0aGUgVUlEIG1hcHBpbmcgZmVhdHVyZSBvZiBBWDI1IG5ldHdvcmtpbmcgd29ya3MgcHJvcGVybHkKKyAgKGl0IHNob3VsZCBiZSBzYWZlIGJlY2F1c2UgaXQncyBhbHdheXMgdXNlZCBhIDMyLWJpdCBpbnRlZ2VyIHRvCisgIGNvbW11bmljYXRlIGJldHdlZW4gdXNlciBhbmQga2VybmVsKQorCisKK0NocmlzIFdpbmcKK3dpbmdjQHVtaWNoLmVkdQorCitsYXN0IHVwZGF0ZWQ6IEphbnVhcnkgMTEsIDIwMDAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHNpLnR4dCBiL0RvY3VtZW50YXRpb24vaHNpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWM2Y2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9oc2kudHh0CkBAIC0wLDAgKzEsNzUgQEAKK0hTSSAtIEhpZ2gtc3BlZWQgU3luY2hyb25vdXMgU2VyaWFsIEludGVyZmFjZQorCisxLiBJbnRyb2R1Y3Rpb24KK35+fn5+fn5+fn5+fn5+fgorCitIaWdoIFNwZWVkIFN5bmNyb25vdXMgSW50ZXJmYWNlIChIU0kpIGlzIGEgZnVsbGR1cGxleCwgbG93IGxhdGVuY3kgcHJvdG9jb2wsCit0aGF0IGlzIG9wdGltaXplZCBmb3IgZGllLWxldmVsIGludGVyY29ubmVjdCBiZXR3ZWVuIGFuIEFwcGxpY2F0aW9uIFByb2Nlc3NvcgorYW5kIGEgQmFzZWJhbmQgY2hpcHNldC4gSXQgaGFzIGJlZW4gc3BlY2lmaWVkIGJ5IHRoZSBNSVBJIGFsbGlhbmNlIGluIDIwMDMgYW5kCitpbXBsZW1lbnRlZCBieSBtdWx0aXBsZSB2ZW5kb3JzIHNpbmNlIHRoZW4uCisKK1RoZSBIU0kgaW50ZXJmYWNlIHN1cHBvcnRzIGZ1bGwgZHVwbGV4IGNvbW11bmljYXRpb24gb3ZlciBtdWx0aXBsZSBjaGFubmVscworKHR5cGljYWxseSA4KSBhbmQgaXMgY2FwYWJsZSBvZiByZWFjaGluZyBzcGVlZHMgdXAgdG8gMjAwIE1iaXQvcy4KKworVGhlIHNlcmlhbCBwcm90b2NvbCB1c2VzIHR3byBzaWduYWxzLCBEQVRBIGFuZCBGTEFHIGFzIGNvbWJpbmVkIGRhdGEgYW5kIGNsb2NrCitzaWduYWxzIGFuZCBhbiBhZGRpdGlvbmFsIFJFQURZIHNpZ25hbCBmb3IgZmxvdyBjb250cm9sLiBBbiBhZGRpdGlvbmFsIFdBS0UKK3NpZ25hbCBjYW4gYmUgdXNlZCB0byB3YWtldXAgdGhlIGNoaXBzIGZyb20gc3RhbmRieSBtb2Rlcy4gVGhlIHNpZ25hbHMgYXJlCitjb21tb25seSBwcmVmaXhlZCBieSBBQyBmb3Igc2lnbmFscyBnb2luZyBmcm9tIHRoZSBhcHBsaWNhdGlvbiBkaWUgdG8gdGhlCitjZWxsdWxhciBkaWUgYW5kIENBIGZvciBzaWduYWxzIGdvaW5nIHRoZSBvdGhlciB3YXkgYXJvdW5kLgorCisrLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0rCit8ICBDZWxsdWxhciAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIEFwcGxpY2F0aW9uICB8Cit8ICAgIERpZSAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICBEaWUgICAgICB8Cit8ICAgICAgICAgICAgfCAtIC0gLSAtIC0gLSBDQVdBS0UgLSAtIC0gLSAtIC0gPnwgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICBUfC0tLS0tLS0tLS0tLSBDQURBVEEgLS0tLS0tLS0tLS0tPnxSICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICBYfC0tLS0tLS0tLS0tLSBDQUZMQUcgLS0tLS0tLS0tLS0tPnxYICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgfDwtLS0tLS0tLS0tLSBBQ1JFQURZIC0tLS0tLS0tLS0tLXwgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgfDwgLSAtIC0gLSAtICBBQ1dBS0UgLSAtIC0gLSAtIC0gLXwgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICBSfDwtLS0tLS0tLS0tLSBBQ0RBVEEgLS0tLS0tLS0tLS0tLXxUICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICBYfDwtLS0tLS0tLS0tLSBBQ0ZMQUcgLS0tLS0tLS0tLS0tLXxYICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgfC0tLS0tLS0tLS0tLSBDQVJFQURZIC0tLS0tLS0tLS0tPnwgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0rCisKKzIuIEhTSSBTdWJzeXN0ZW0gaW4gTGludXgKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworSW4gdGhlIExpbnV4IGtlcm5lbCB0aGUgaHNpIHN1YnN5c3RlbSBpcyBzdXBwb3NlZCB0byBiZSB1c2VkIGZvciBIU0kgZGV2aWNlcy4KK1RoZSBoc2kgc3Vic3lzdGVtIGNvbnRhaW5zIGRyaXZlcnMgZm9yIGhzaSBjb250cm9sbGVycyBpbmNsdWRpbmcgc3VwcG9ydCBmb3IKK211bHRpLXBvcnQgY29udHJvbGxlcnMgYW5kIHByb3ZpZGVzIGEgZ2VuZXJpYyBBUEkgZm9yIHVzaW5nIHRoZSBIU0kgcG9ydHMuCisKK0l0IGFsc28gY29udGFpbnMgSFNJIGNsaWVudCBkcml2ZXJzLCB3aGljaCBtYWtlIHVzZSBvZiB0aGUgZ2VuZXJpYyBBUEkgdG8KK2ltcGxlbWVudCBhIHByb3RvY29sIHVzZWQgb24gdGhlIEhTSSBpbnRlcmZhY2UuIFRoZXNlIGNsaWVudCBkcml2ZXJzIGNhbgordXNlIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgY2hhbm5lbHMuCisKKzMuIGhzaS1jaGFyIERldmljZQorfn5+fn5+fn5+fn5+fn5+fn5+CisKK0VhY2ggcG9ydCBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVycyBhIGdlbmVyaWMgY2xpZW50IGRyaXZlciBjYWxsZWQgaHNpX2NoYXIsCit3aGljaCBwcm92aWRlcyBhIGNoYXJlY3RlciBkZXZpY2UgZm9yIHVzZXJzcGFjZSByZXByZXNlbnRpbmcgdGhlIEhTSSBwb3J0LgorSXQgY2FuIGJlIHVzZWQgdG8gY29tbXVuaWNhdGUgdmlhIEhTSSBmcm9tIHVzZXJzcGFjZS4gVXNlcnNwYWNlIG1heQorY29uZmlndXJlIHRoZSBoc2lfY2hhciBkZXZpY2UgdXNpbmcgdGhlIGZvbGxvd2luZyBpb2N0bCBjb21tYW5kczoKKworKiBIU0NfUkVTRVQ6CisgLSBmbHVzaCB0aGUgSFNJIHBvcnQKKworKiBIU0NfU0VUX1BNCisgLSBlbmFibGUgb3IgZGlzYWJsZSB0aGUgY2xpZW50LgorCisqIEhTQ19TRU5EX0JSRUFLCisgLSBzZW5kIGJyZWFrCisKKyogSFNDX1NFVF9SWAorIC0gc2V0IFJYIGNvbmZpZ3VyYXRpb24KKworKiBIU0NfR0VUX1JYCisgLSBnZXQgUlggY29uZmlndXJhdGlvbgorCisqIEhTQ19TRVRfVFgKKyAtIHNldCBUWCBjb25maWd1cmF0aW9uCisKKyogSFNDX0dFVF9UWAorIC0gZ2V0IFRYIGNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdfcmFuZG9tLnR4dCBiL0RvY3VtZW50YXRpb24vaHdfcmFuZG9tLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2UxNjM0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od19yYW5kb20udHh0CkBAIC0wLDAgKzEsOTAgQEAKK0ludHJvZHVjdGlvbjoKKworCVRoZSBod19yYW5kb20gZnJhbWV3b3JrIGlzIHNvZnR3YXJlIHRoYXQgbWFrZXMgdXNlIG9mIGEKKwlzcGVjaWFsIGhhcmR3YXJlIGZlYXR1cmUgb24geW91ciBDUFUgb3IgbW90aGVyYm9hcmQsCisJYSBSYW5kb20gTnVtYmVyIEdlbmVyYXRvciAoUk5HKS4gIFRoZSBzb2Z0d2FyZSBoYXMgdHdvIHBhcnRzOgorCWEgY29yZSBwcm92aWRpbmcgdGhlIC9kZXYvaHdybmcgY2hhcmFjdGVyIGRldmljZSBhbmQgaXRzCisJc3lzZnMgc3VwcG9ydCwgcGx1cyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciB0aGF0IHBsdWdzCisJaW50byB0aGF0IGNvcmUuCisKKwlUbyBtYWtlIHRoZSBtb3N0IGVmZmVjdGl2ZSB1c2Ugb2YgdGhlc2UgbWVjaGFuaXNtcywgeW91CisJc2hvdWxkIGRvd25sb2FkIHRoZSBzdXBwb3J0IHNvZnR3YXJlIGFzIHdlbGwuICBEb3dubG9hZCB0aGUKKwlsYXRlc3QgdmVyc2lvbiBvZiB0aGUgInJuZy10b29scyIgcGFja2FnZSBmcm9tIHRoZQorCWh3X3JhbmRvbSBkcml2ZXIncyBvZmZpY2lhbCBXZWIgc2l0ZToKKworCQlodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2drZXJuZWwvCisKKwlUaG9zZSB0b29scyB1c2UgL2Rldi9od3JuZyB0byBmaWxsIHRoZSBrZXJuZWwgZW50cm9weSBwb29sLAorCXdoaWNoIGlzIHVzZWQgaW50ZXJuYWxseSBhbmQgZXhwb3J0ZWQgYnkgdGhlIC9kZXYvdXJhbmRvbSBhbmQKKwkvZGV2L3JhbmRvbSBzcGVjaWFsIGZpbGVzLgorCitUaGVvcnkgb2Ygb3BlcmF0aW9uOgorCisJQ0hBUkFDVEVSIERFVklDRS4gIFVzaW5nIHRoZSBzdGFuZGFyZCBvcGVuKCkKKwlhbmQgcmVhZCgpIHN5c3RlbSBjYWxscywgeW91IGNhbiByZWFkIHJhbmRvbSBkYXRhIGZyb20KKwl0aGUgaGFyZHdhcmUgUk5HIGRldmljZS4gIFRoaXMgZGF0YSBpcyBOT1QgQ0hFQ0tFRCBieSBhbnkKKwlmaXRuZXNzIHRlc3RzLCBhbmQgY291bGQgcG90ZW50aWFsbHkgYmUgYm9ndXMgKGlmIHRoZQorCWhhcmR3YXJlIGlzIGZhdWx0eSBvciBoYXMgYmVlbiB0YW1wZXJlZCB3aXRoKS4gIERhdGEgaXMgb25seQorCW91dHB1dCBpZiB0aGUgaGFyZHdhcmUgImhhcy1kYXRhIiBmbGFnIGlzIHNldCwgYnV0IG5ldmVydGhlbGVzcworCWEgc2VjdXJpdHktY29uc2Npb3VzIHBlcnNvbiB3b3VsZCBydW4gZml0bmVzcyB0ZXN0cyBvbiB0aGUKKwlkYXRhIGJlZm9yZSBhc3N1bWluZyBpdCBpcyB0cnVseSByYW5kb20uCisKKwlUaGUgcm5nLXRvb2xzIHBhY2thZ2UgdXNlcyBzdWNoIHRlc3RzIGluICJybmdkIiwgYW5kIGxldHMgeW91CisJcnVuIHRoZW0gYnkgaGFuZCB3aXRoIGEgInJuZ3Rlc3QiIHV0aWxpdHkuCisKKwkvZGV2L2h3cm5nIGlzIGNoYXIgZGV2aWNlIG1ham9yIDEwLCBtaW5vciAxODMuCisKKwlDTEFTUyBERVZJQ0UuICBUaGVyZSBpcyBhIC9zeXMvY2xhc3MvbWlzYy9od19yYW5kb20gbm9kZSB3aXRoCisJdHdvIHVuaXF1ZSBhdHRyaWJ1dGVzLCAicm5nX2F2YWlsYWJsZSIgYW5kICJybmdfY3VycmVudCIuICBUaGUKKwkicm5nX2F2YWlsYWJsZSIgYXR0cmlidXRlIGxpc3RzIHRoZSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzCisJYXZhaWxhYmxlLCB3aGlsZSAicm5nX2N1cnJlbnQiIGxpc3RzIHRoZSBvbmUgd2hpY2ggaXMgY3VycmVudGx5CisJY29ubmVjdGVkIHRvIC9kZXYvaHdybmcuICBJZiB5b3VyIHN5c3RlbSBoYXMgbW9yZSB0aGFuIG9uZQorCVJORyBhdmFpbGFibGUsIHlvdSBtYXkgY2hhbmdlIHRoZSBvbmUgdXNlZCBieSB3cml0aW5nIGEgbmFtZSBmcm9tCisJdGhlIGxpc3QgaW4gInJuZ19hdmFpbGFibGUiIGludG8gInJuZ19jdXJyZW50Ii4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCUhhcmR3YXJlIGRyaXZlciBmb3IgSW50ZWwvQU1EL1ZJQSBSYW5kb20gTnVtYmVyIEdlbmVyYXRvcnMgKFJORykKKwlDb3B5cmlnaHQgMjAwMCwyMDAxIEplZmYgR2FyemlrIDxqZ2FyemlrQHBvYm94LmNvbT4KKwlDb3B5cmlnaHQgMjAwMCwyMDAxIFBoaWxpcHAgUnVtcGYgPHBydW1wZkBtYW5kcmFrZXNvZnQuY29tPgorCisKK0Fib3V0IHRoZSBJbnRlbCBSTkcgaGFyZHdhcmUsIGZyb20gdGhlIGZpcm13YXJlIGh1YiBkYXRhc2hlZXQ6CisKKwlUaGUgRmlybXdhcmUgSHViIGludGVncmF0ZXMgYSBSYW5kb20gTnVtYmVyIEdlbmVyYXRvciAoUk5HKQorCXVzaW5nIHRoZXJtYWwgbm9pc2UgZ2VuZXJhdGVkIGZyb20gaW5oZXJlbnRseSByYW5kb20gcXVhbnR1bQorCW1lY2hhbmljYWwgcHJvcGVydGllcyBvZiBzaWxpY29uLiBXaGVuIG5vdCBnZW5lcmF0aW5nIG5ldyByYW5kb20KKwliaXRzIHRoZSBSTkcgY2lyY3VpdHJ5IHdpbGwgZW50ZXIgYSBsb3cgcG93ZXIgc3RhdGUuIEludGVsIHdpbGwKKwlwcm92aWRlIGEgYmluYXJ5IHNvZnR3YXJlIGRyaXZlciB0byBnaXZlIHRoaXJkIHBhcnR5IHNvZnR3YXJlCisJYWNjZXNzIHRvIG91ciBSTkcgZm9yIHVzZSBhcyBhIHNlY3VyaXR5IGZlYXR1cmUuIEF0IHRoaXMgdGltZSwKKwl0aGUgUk5HIGlzIG9ubHkgdG8gYmUgdXNlZCB3aXRoIGEgc3lzdGVtIGluIGFuIE9TLXByZXNlbnQgc3RhdGUuCisKK0ludGVsIFJORyBEcml2ZXIgbm90ZXM6CisKKwkqIEZJWE1FOiBzdXBwb3J0IHBvbGwoMikKKworCU5PVEU6IHJlcXVlc3RfbWVtX3JlZ2lvbiB3YXMgcmVtb3ZlZCwgZm9yIHRocmVlIHJlYXNvbnM6CisJMSkgT25seSBvbmUgUk5HIGlzIHN1cHBvcnRlZCBieSB0aGlzIGRyaXZlciwgMikgVGhlIGxvY2F0aW9uCisJdXNlZCBieSB0aGUgUk5HIGlzIGEgZml4ZWQgbG9jYXRpb24gaW4gTU1JTy1hZGRyZXNzYWJsZSBtZW1vcnksCisJMykgdXNlcnMgd2l0aCBwcm9wZXJseSB3b3JraW5nIEJJT1MgZTgyMCBoYW5kbGluZyB3aWxsIGFsd2F5cworCWhhdmUgdGhlIHJlZ2lvbiBpbiB3aGljaCB0aGUgUk5HIGlzIGxvY2F0ZWQgcmVzZXJ2ZWQsIHNvCisJcmVxdWVzdF9tZW1fcmVnaW9uIGNhbGxzIGFsd2F5cyBmYWlsIGZvciBwcm9wZXIgc2V0dXBzLgorCUhvd2V2ZXIsIGZvciBwZW9wbGUgd2hvIHVzZSBtZW09WFgsIEJJT1MgZTgyMCBpbmZvcm1hdGlvbiBpcworCS1ub3QtIGluIC9wcm9jL2lvbWVtLCBhbmQgcmVxdWVzdF9tZW1fcmVnaW9uKFJOR19BRERSKSBjYW4KKwlzdWNjZWVkLgorCitEcml2ZXIgZGV0YWlsczoKKworCUJhc2VkIG9uOgorCUludGVsIDgyODAyQUIvODI4MDJBQyBGaXJtd2FyZSBIdWIgKEZXSCkgRGF0YXNoZWV0CisJCU1heSAxOTk5IE9yZGVyIE51bWJlcjogMjkwNjU4LTAwMiBSCisKKwlJbnRlbCA4MjgwMiBGaXJtd2FyZSBIdWI6IFJhbmRvbSBOdW1iZXIgR2VuZXJhdG9yCisJUHJvZ3JhbW1lcidzIFJlZmVyZW5jZSBNYW51YWwKKwkJRGVjZW1iZXIgMTk5OSBPcmRlciBOdW1iZXI6IDI5ODAyOS0wMDEgUgorCisJSW50ZWwgODI4MDIgRmlybXdhcmUgSFVCIFJhbmRvbSBOdW1iZXIgR2VuZXJhdG9yIERyaXZlcgorCUNvcHlyaWdodCAoYykgMjAwMCBNYXR0IFNvdHRlayA8bXNvdHRla0BxdWlrbmV0LmNvbT4KKworCVNwZWNpYWwgdGhhbmtzIHRvIE1hdHQgU290dGVrLiAgSSBkaWQgdGhlICJndXRzIiwgaGUKKwlkaWQgdGhlICJicmFpbnMiIGFuZCBhbGwgdGhlIHRlc3RpbmcuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2FiODUwMCBiL0RvY3VtZW50YXRpb24vaHdtb24vYWI4NTAwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMTY5YzgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2FiODUwMApAQCAtMCwwICsxLDIyIEBACitLZXJuZWwgZHJpdmVyIGFiODUwMAorPT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIFNULUVyaWNzc29uIEFCODUwMAorICAgIFByZWZpeDogJ2FiODUwMCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5zdGVyaWNzc29uLmNvbS9kZXZlbG9wZXJzL2RvY3VtZW50YXRpb24uanNwCisKK0F1dGhvcnM6CisgICAgICAgIE1hcnRpbiBQZXJzc29uIDxtYXJ0aW4ucGVyc3NvbkBzdGVyaWNzc29uLmNvbT4KKyAgICAgICAgSG9uZ2JvIFpoYW5nIDxob25nYm8uemhhbmdAbGluYXJvLm9yZz4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1NlZSBhbHNvIERvY3VtZW50YXRpb24vaHdtb24vYWJ4NTAwLiBUaGlzIGlzIHRoZSBTVC1Fcmljc3NvbiBBQjg1MDAgc3BlY2lmaWMKK2RyaXZlci4KKworQ3VycmVudGx5IG9ubHkgdGhlIEFCODUwMCBpbnRlcm5hbCBzZW5zb3IgYW5kIG9uZSBleHRlcm5hbCBzZW5zb3IgZm9yIGJhdHRlcnkKK3RlbXBlcmF0dXJlIGFyZSBtb25pdG9yZWQuIE90aGVyIEdQQURDIGNoYW5uZWxzIGNhbiBhbHNvIGJlIG1vbml0b3JlZCBpZiBuZWVkZWQKK2luIGZ1dHVyZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vYWJpdHVndXJ1IGIvRG9jdW1lbnRhdGlvbi9od21vbi9hYml0dWd1cnUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE1ZjMyMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vYWJpdHVndXJ1CkBAIC0wLDAgKzEsOTIgQEAKK0tlcm5lbCBkcml2ZXIgYWJpdHVndXJ1Cis9PT09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogQWJpdCB1R3VydSByZXZpc2lvbiAxICYgMiAoSGFyZHdhcmUgTW9uaXRvciBwYXJ0IG9ubHkpCisgICAgUHJlZml4OiAnYWJpdHVndXJ1JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJU0EgMHgwRTAKKyAgICBEYXRhc2hlZXQ6IE5vdCBhdmFpbGFibGUsIHRoaXMgZHJpdmVyIGlzIGJhc2VkIG9uIHJldmVyc2UgZW5naW5lZXJpbmcuCisJQSAiRGF0YXNoZWV0IiBoYXMgYmVlbiB3cml0dGVuIGJhc2VkIG9uIHRoZSByZXZlcnNlIGVuZ2luZWVyaW5nIGl0CisJc2hvdWxkIGJlIGF2YWlsYWJsZSBpbiB0aGUgc2FtZSBkaXIgYXMgdGhpcyBmaWxlIHVuZGVyIHRoZSBuYW1lCisJYWJpdHVndXJ1LWRhdGFzaGVldC4KKyAgICBOb3RlOgorCVRoZSB1R3VydSBpcyBhIG1pY3JvY29udHJvbGxlciB3aXRoIG9uYm9hcmQgZmlybXdhcmUgd2hpY2ggcHJvZ3JhbXMKKwlpdCB0byBiZWhhdmUgYXMgYSBod21vbiBJQy4gVGhlcmUgYXJlIG1hbnkgZGlmZmVyZW50IHJldmlzaW9ucyBvZiB0aGUKKwlmaXJtd2FyZSBhbmQgdGh1cyBlZmZlY3Rpdmx5IG1hbnkgZGlmZmVyZW50IHJldmlzaW9ucyBvZiB0aGUgdUd1cnUuCisJQmVsb3cgaXMgYW4gaW5jb21wbGV0ZSBsaXN0IHdpdGggd2hpY2ggcmV2aXNpb25zIGFyZSB1c2VkIGZvciB3aGljaAorCU1vdGhlcmJvYXJkczoKKwl1R3VydSAxLjAwICAgIH4gMS4yNCAgICAoQUk3LCBLVjgtTUFYMywgQU43KSAoMSkKKwl1R3VydSAyLjAuMC4wIH4gMi4wLjQuMiAoS1Y4LVBSTykKKwl1R3VydSAyLjEuMC4wIH4gMi4xLjIuOCAoQVM4LCBBVjgsIEFBOCwgQUc4LCBBQThYRSwgQVg4KQorCXVHdXJ1IDIuMi4wLjAgfiAyLjIuMC42IChBQTggRmF0YWwxdHkpCisJdUd1cnUgMi4zLjAuMCB+IDIuMy4wLjkgKEFOOCkKKwl1R3VydSAzLjAuMC4wIH4gMy4wLngueCAoQVc4LCBBTDgsIEFUOCwgTkk4IFNMSSwgQVQ4IDMyWCwgQU44IDMyWCwKKwkJCQkgQVc5RC1NQVgpICgyKQorCTEpIEZvciByZXZpc2lvbnMgMiBhbmQgMyB1R3VydSdzIHRoZSBkcml2ZXIgY2FuIGF1dG9kZXRlY3QgdGhlCisJICAgc2Vuc29ydHlwZSAoVm9sdCBvciBUZW1wKSBmb3IgYmFuazEgc2Vuc29ycywgZm9yIHJldmlzaW9uIDEgdUd1cnUncworCSAgIHRoaXMgZG9lc25vdCBhbHdheXMgd29yay4gRm9yIHRoZXNlIHVHdXJ1J3MgdGhlIGF1dG9kZWN0aW9uIGNhbgorCSAgIGJlIG92ZXJyaWRlbiB3aXRoIHRoZSBiYW5rMV90eXBlcyBtb2R1bGUgcGFyYW0uIEZvciBhbGwgMyBrbm93bgorCSAgIHJldmlzb24gMSBtb3RoZXJib2FyZHMgdGhlIGNvcnJlY3QgdXNlIG9mIHRoaXMgcGFyYW0gaXM6CisJICAgYmFuazFfdHlwZXM9MSwxLDAsMCwwLDAsMCwyLDAsMCwwLDAsMiwwLDAsMQorCSAgIFlvdSBtYXkgYWxzbyBuZWVkIHRvIHNwZWNpZnkgdGhlIGZhbl9zZW5zb3JzIG9wdGlvbiBmb3IgdGhlc2UgYm9hcmRzCisJICAgZmFuX3NlbnNvcnM9NQorCTIpIFRoZXJlIGlzIGEgc2VwYXJhdGUgYWJpdHVndXJ1MyBkcml2ZXIgZm9yIHRoZXNlIG1vdGhlcmJvYXJkcywKKwkgICB0aGUgYWJpdHVndXJ1ICh3aXRob3V0IHRoZSAzICEpIGRyaXZlciB3aWxsIG5vdCB3b3JrIG9uIHRoZXNlCisJICAgbW90aGVyYm9hcmRzIChhbmQgdmlzYSB2ZXJzYSkhCisKK0F1dGhvcnM6CisJSGFucyBkZSBHb2VkZSA8ai53LnIuZGVnb2VkZUBoaHMubmw+LAorCShJbml0aWFsIHJldmVyc2UgZW5naW5lZXJpbmcgZG9uZSBieSBPbGxlIFNhbmRiZXJnCisJIDxvbGxlYnVsbEBnbWFpbC5jb20+KQorCisKK01vZHVsZSBQYXJhbWV0ZXJzCistLS0tLS0tLS0tLS0tLS0tLQorCisqIGZvcmNlOiBib29sCQlGb3JjZSBkZXRlY3Rpb24uIE5vdGUgdGhpcyBwYXJhbWV0ZXIgb25seSBjYXVzZXMgdGhlCisJCQlkZXRlY3Rpb24gdG8gYmUgc2tpcHBlZCwgYW5kIHRodXMgdGhlIGluc21vZCB0bworCQkJc3VjY2VlZC4gSWYgdGhlIHVHdXJ1IGNhbid0IGJlIHJlYWQgdGhlIGFjdHVhbCBod21vbgorCQkJZHJpdmVyIHdpbGwgbm90IGxvYWQgYW5kIHRodXMgbm8gaHdtb24gZGV2aWNlIHdpbGwgZ2V0CisJCQlyZWdpc3RlcmVkLgorKiBiYW5rMV90eXBlczogaW50W10JQmFuazEgc2Vuc29ydHlwZSBhdXRvZGV0ZWN0aW9uIG92ZXJyaWRlOgorCQkJICAtMSBhdXRvZGV0ZWN0IChkZWZhdWx0KQorCQkJICAgMCB2b2x0IHNlbnNvcgorCQkJICAgMSB0ZW1wIHNlbnNvcgorCQkJICAgMiBub3QgY29ubmVjdGVkCisqIGZhbl9zZW5zb3JzOiBpbnQJVGVsbCB0aGUgZHJpdmVyIGhvdyBtYW55IGZhbiBzcGVlZCBzZW5zb3JzIHRoZXJlIGFyZQorCQkJb24geW91ciBtb3RoZXJib2FyZC4gRGVmYXVsdDogMCAoYXV0b2RldGVjdCkuCisqIHB3bXM6IGludAkJVGVsbCB0aGUgZHJpdmVyIGhvdyBtYW55IGZhbiBzcGVlZCBjb250cm9scyAoZmFuCisJCQlwd21zKSB5b3VyIG1vdGhlcmJvYXJkIGhhcy4gRGVmYXVsdDogMCAoYXV0b2RldGVjdCkuCisqIHZlcmJvc2U6IGludAkJSG93IHZlcmJvc2Ugc2hvdWxkIHRoZSBkcml2ZXIgYmU/ICgwLTMpOgorCQkJICAgMCBub3JtYWwgb3V0cHV0CisJCQkgICAxICsgdmVyYm9zZSBlcnJvciByZXBvcnRpbmcKKwkJCSAgIDIgKyBzZW5zb3JzIHR5cGUgcHJvYmluZyBpbmZvIChkZWZhdWx0KQorCQkJICAgMyArIHJldHJ5YWJsZSBlcnJvciByZXBvcnRpbmcKKwkJCURlZmF1bHQ6IDIgKHRoZSBkcml2ZXIgaXMgc3RpbGwgaW4gdGhlIHRlc3RpbmcgcGhhc2UpCisKK05vdGljZSBpZiB5b3UgbmVlZCBhbnkgb2YgdGhlIGZpcnN0IHRocmVlIG9wdGlvbnMgYWJvdmUgcGxlYXNlIGluc21vZCB0aGUKK2RyaXZlciB3aXRoIHZlcmJvc2Ugc2V0IHRvIDMgYW5kIG1haWwgbWUgPGoudy5yLmRlZ29lZGVAaGhzLm5sPiB0aGUgb3V0cHV0IG9mOgorZG1lc2cgfCBncmVwIGFiaXR1Z3VydQorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgaGFyZHdhcmUgbW9uaXRvcmluZyBmZWF0dXJlcyBvZiB0aGUgZmlyc3QgYW5kCitzZWNvbmQgcmV2aXNpb24gb2YgdGhlIEFiaXQgdUd1cnUgY2hpcCBmb3VuZCBvbiBBYml0IHVHdXJ1IGZlYXR1cmluZworbW90aGVyYm9hcmRzIChtb3N0IG1vZGVybiBBYml0IG1vdGhlcmJvYXJkcykuCisKK1RoZSBmaXJzdCBhbmQgc2Vjb25kIHJldmlzaW9uIG9mIHRoZSB1R3VydSBjaGlwIGluIHJlYWxpdHkgaXMgYSBXaW5ib25kCitXODNMOTUwRCBpbiBkaXNndWlzZSAoZGVzcGl0ZSBBYml0IGNsYWltaW5nIGl0IGlzICJhIG5ldyBtaWNyb3Byb2Nlc3NvcgorZGVzaWduZWQgYnkgdGhlIEFCSVQgRW5naW5lZXJzIikuIFVuZm9ydHVuYXRlbHkgdGhpcyBkb2Vzbid0IGhlbHAgc2luY2UgdGhlCitXODNMOTUwRCBpcyBhIGdlbmVyaWMgbWljcm9jb250cm9sbGVyIHdpdGggYSBjdXN0b20gQWJpdCBhcHBsaWNhdGlvbiBydW5uaW5nCitvbiBpdC4KKworRGVzcGl0ZSBBYml0IG5vdCByZWxlYXNpbmcgYW55IGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgdUd1cnUsIE9sbGUKK1NhbmRiZXJnIDxvbGxlYnVsbEBnbWFpbC5jb20+IGhhcyBtYW5hZ2VkIHRvIHJldmVyc2UgZW5naW5lZXIgdGhlIHNlbnNvciBwYXJ0CitvZiB0aGUgdUd1cnUuIFdpdGhvdXQgaGlzIHdvcmsgdGhpcyBkcml2ZXIgd291bGQgbm90IGhhdmUgYmVlbiBwb3NzaWJsZS4KKworS25vd24gSXNzdWVzCistLS0tLS0tLS0tLS0KKworVGhlIHZvbHRhZ2UgYW5kIGZyZXF1ZW5jeSBjb250cm9sIHBhcnRzIG9mIHRoZSBBYml0IHVHdXJ1IGFyZSBub3Qgc3VwcG9ydGVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9hYml0dWd1cnUtZGF0YXNoZWV0IGIvRG9jdW1lbnRhdGlvbi9od21vbi9hYml0dWd1cnUtZGF0YXNoZWV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2YzBiMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2FiaXR1Z3VydS1kYXRhc2hlZXQKQEAgLTAsMCArMSwzMTIgQEAKK3VHdXJ1IGRhdGFzaGVldAorPT09PT09PT09PT09PT09CisKK0ZpcnN0IG9mIGFsbCwgd2hhdCBJIGtub3cgYWJvdXQgdUd1cnUgaXMgbm8gZmFjdCBiYXNlZCBvbiBhbnkgaGVscCwgaGludHMgb3IKK2RhdGFzaGVldCBmcm9tIEFiaXQuIFRoZSBkYXRhIEkgaGF2ZSBnb3Qgb24gdUd1cnUgaGF2ZSBJIGFzc2VtYmxlZCB0aHJvdWdoCitteSB3ZWFrIGtub3dsZWRnZSBpbiAiYmFja3dhcmRzIGVuZ2luZWVyaW5nIi4KK0FuZCBqdXN0IGZvciB0aGUgcmVjb3JkLCB5b3UgbWF5IGhhdmUgbm90aWNlZCB1R3VydSBpc24ndCBhIGNoaXAgZGV2ZWxvcGVkIGJ5CitBYml0LCBhcyB0aGV5IGNsYWltIGl0IHRvIGJlLiBJdCdzIHJlYWxseSBqdXN0IGFuIG1pY3JvcHJvY2Vzc29yICh1QykgY3JlYXRlZCBieQorV2luYm9uZCAoVzgzTDk1MEQpLiBBbmQgbm8sIHJlYWRpbmcgdGhlIG1hbnVhbCBmb3IgdGhpcyBzcGVjaWZpYyB1QyBvcgorbWFpbGluZyAgV2luZGJvbmQgZm9yIGhlbHAgd29uJ3QgZ2l2ZSBhbnkgdXNlZnVsIGRhdGEgYWJvdXQgdUd1cnUsIGFzIGl0IGlzCit0aGUgcHJvZ3JhbSBpbnNpZGUgdGhlIHVDIHRoYXQgaXMgcmVzcG9uZGluZyB0byBjYWxscy4KKworT2xsZSBTYW5kYmVyZyA8b2xsZWJ1bGxAZ21haWwuY29tPiwgMjAwNS0wNS0yNQorCisKK09yaWdpbmFsIHZlcnNpb24gYnkgT2xsZSBTYW5kYmVyZyB3aG8gZGlkIHRoZSBoZWF2eSBsaWZ0aW5nIG9mIHRoZSBpbml0aWFsCityZXZlcnNlIGVuZ2luZWVyaW5nLiBUaGlzIHZlcnNpb24gaGFzIGJlZW4gYWxtb3N0IGZ1bGx5IHJld3JpdHRlbiBmb3IgY2xhcml0eQorYW5kIGV4dGVuZGVkIHdpdGggd3JpdGUgc3VwcG9ydCBhbmQgaW5mbyBvbiBtb3JlIGRhdGFiYW5rcywgdGhlIHdyaXRlIHN1cHBvcnQKK2lzIG9uY2UgYWdhaW4gcmV2ZXJzZSBlbmdpbmVlcmVkIGJ5IE9sbGUgdGhlIGFkZGl0aW9uYWwgZGF0YWJhbmtzIGhhdmUgYmVlbgorcmV2ZXJzZSBlbmdpbmVlcmVkIGJ5IG1lLiBJIHdvdWxkIGxpa2UgdG8gZXhwcmVzcyBteSB0aGFua3MgdG8gT2xsZSwgdGhpcworZG9jdW1lbnQgYW5kIHRoZSBMaW51eCBkcml2ZXIgY291bGQgbm90IGhhdmUgYmVlbiB3cml0dGVuIHdpdGhvdXQgaGlzIGVmZm9ydHMuCisKK05vdGU6IGJlY2F1c2Ugb2YgdGhlIGxhY2sgb2Ygc3BlY3Mgb25seSB0aGUgc2Vuc29ycyBwYXJ0IG9mIHRoZSB1R3VydSBpcworZGVzY3JpYmVkIGhlcmUgYW5kIG5vdCB0aGUgQ1BVIC8gUkFNIC8gZXRjIHZvbHRhZ2UgJiBmcmVxdWVuY3kgY29udHJvbC4KKworSGFucyBkZSBHb2VkZSA8ai53LnIuZGVnb2VkZUBoaHMubmw+LCAyOC0wMS0yMDA2CisKKworRGV0ZWN0aW9uCis9PT09PT09PT0KKworQXMgZmFyIGFzIGtub3duIHRoZSB1R3VydSBpcyBhbHdheXMgcGxhY2VkIGF0IGFuZCB1c2luZyB0aGUgKElTQSkgSS9PLXBvcnRzCisweEUwIGFuZCAweEU0LCBzbyB3ZSBkb24ndCBoYXZlIHRvIHNjYW4gYW55IHBvcnQtcmFuZ2UsIGp1c3QgY2hlY2sgd2hhdCB0aGUgdHdvCitwb3J0cyBhcmUgaG9sZGluZyBmb3IgZGV0ZWN0aW9uLiBXZSB3aWxsIHJlZmVyIHRvIDB4RTAgYXMgQ01EIChjb21tYW5kLXBvcnQpCithbmQgMHhFNCBhcyBEQVRBIGJlY2F1c2UgQWJpdCByZWZlcnMgdG8gdGhlbSB3aXRoIHRoZXNlIG5hbWVzLgorCitJZiBEQVRBIGhvbGRzIDB4MDAgb3IgMHgwOCBhbmQgQ01EIGhvbGRzIDB4MDAgb3IgMHhBQyBhbiB1R3VydSBjb3VsZCBiZQorcHJlc2VudC4gV2UgaGF2ZSB0byBjaGVjayBmb3IgdHdvIGRpZmZlcmVudCB2YWx1ZXMgYXQgZGF0YS1wb3J0LCBiZWNhdXNlCithZnRlciBhIHJlYm9vdCB1R3VydSB3aWxsIGhvbGQgMHgwMCBoZXJlLCBidXQgaWYgdGhlIGRyaXZlciBpcyByZW1vdmVkIGFuZAorbGF0ZXIgb24gYXR0YWNoZWQgYWdhaW4gZGF0YS1wb3J0IHdpbGwgaG9sZCAweDA4LCBtb3JlIGFib3V0IHRoaXMgbGF0ZXIuCisKK0FmdGVyIHdpZGVyIHRlc3Rpbmcgb2YgdGhlIExpbnV4IGtlcm5lbCBkcml2ZXIgc29tZSB2YXJpYW50cyBvZiB0aGUgdUd1cnUgaGF2ZQordHVybmVkIHVwIHdoaWNoIHdpbGwgaG9sZCAweDAwIGluc3RlYWQgb2YgMHhBQyBhdCB0aGUgQ01EIHBvcnQsIHRodXMgd2UgYWxzbworaGF2ZSB0byB0ZXN0IENNRCBmb3IgdHdvIGRpZmZlcmVudCB2YWx1ZXMuIE9uIHRoZXNlIHVHdXJ1J3MgREFUQSB3aWxsIGluaXRpYWxseQoraG9sZCAweDA5IGFuZCB3aWxsIG9ubHkgaG9sZCAweDA4IGFmdGVyIHJlYWRpbmcgQ01EIGZpcnN0LCBzbyBDTUQgbXVzdCBiZSByZWFkCitmaXJzdCEKKworVG8gYmUgcmVhbGx5IHN1cmUgYW4gdUd1cnUgaXMgcHJlc2VudCBhIHRlc3QgcmVhZCBvZiBvbmUgb3IgbW9yZSByZWdpc3Rlcgorc2V0cyBzaG91bGQgYmUgZG9uZS4KKworCitSZWFkaW5nIC8gV3JpdGluZworPT09PT09PT09PT09PT09PT0KKworQWRkcmVzc2luZworLS0tLS0tLS0tLQorCitUaGUgdUd1cnUgaGFzIGEgbnVtYmVyIG9mIGRpZmZlcmVudCBhZGRyZXNzaW5nIGxldmVscy4gVGhlIGZpcnN0IGFkZHJlc3NpbmcKK2xldmVsIHdlIHdpbGwgY2FsbCBiYW5rcy4gQSBiYW5rIGhvbGRzIGRhdGEgZm9yIG9uZSBvciBtb3JlIHNlbnNvcnMuIFRoZSBkYXRhCitpbiBhIGJhbmsgZm9yIGEgc2Vuc29yIGlzIG9uZSBvciBtb3JlIGJ5dGVzIGxhcmdlLgorCitUaGUgbnVtYmVyIG9mIGJ5dGVzIGlzIGZpeGVkIGZvciBhIGdpdmVuIGJhbmssIHlvdSBzaG91bGQgYWx3YXlzIHJlYWQgb3Igd3JpdGUKK3RoYXQgbWFueSBieXRlcywgcmVhZGluZyAvIHdyaXRpbmcgbW9yZSB3aWxsIGZhaWwsIHRoZSByZXN1bHRzIHdoZW4gd3JpdGluZworbGVzcyB0aGVuIHRoZSBudW1iZXIgb2YgYnl0ZXMgZm9yIGEgZ2l2ZW4gYmFuayBhcmUgdW5kZXRlcm1pbmVkLgorCitTZWUgYmVsb3cgZm9yIGFsbCBrbm93biBiYW5rIGFkZHJlc3NlcywgbnVtYmVycyBvZiBzZW5zb3JzIGluIHRoYXQgYmFuaywKK251bWJlciBvZiBieXRlcyBkYXRhIHBlciBzZW5zb3IgYW5kIGNvbnRlbnRzL21lYW5pbmcgb2YgdGhvc2UgYnl0ZXMuCisKK0FsdGhvdWdoIGJvdGggdGhpcyBkb2N1bWVudCBhbmQgdGhlIGtlcm5lbCBkcml2ZXIgaGF2ZSBrZXB0IHRoZSBzZW5zb3IKK3Rlcm1pbm9saWd5IGZvciB0aGUgYWRkcmVzc2luZyB3aXRoaW4gYSBiYW5rIHRoaXMgaXMgbm90IDEwMCUgY29ycmVjdCwgaW4KK2JhbmsgMHgyNCBmb3IgZXhhbXBsZSB0aGUgYWRkcmVzc2luZyB3aXRoaW4gdGhlIGJhbmsgc2VsZWN0cyBhIFBXTSBvdXRwdXQgbm90CithIHNlbnNvci4KKworTm90aWNlIHRoYXQgc29tZSBiYW5rcyBoYXZlIGJvdGggYSByZWFkIGFuZCBhIHdyaXRlIGFkZHJlc3MgdGhpcyBpcyBob3cgdGhlCit1R3VydSBkZXRlcm1pbmVzIGlmIGEgcmVhZCBmcm9tIG9yIGEgd3JpdGUgdG8gdGhlIGJhbmsgaXMgdGFraW5nIHBsYWNlLCB0aHVzCit3aGVuIHJlYWRpbmcgeW91IHNob3VsZCBhbHdheXMgdXNlIHRoZSByZWFkIGFkZHJlc3MgYW5kIHdoZW4gd3JpdGluZyB0aGUKK3dyaXRlIGFkZHJlc3MuIFRoZSB3cml0ZSBhZGRyZXNzIGlzIGFsd2F5cyBvbmUgKDEpIG1vcmUgdGhhbiB0aGUgcmVhZCBhZGRyZXNzLgorCisKK3VHdXJ1IHJlYWR5CistLS0tLS0tLS0tLQorCitCZWZvcmUgeW91IGNhbiByZWFkIGZyb20gb3Igd3JpdGUgdG8gdGhlIHVHdXJ1IHlvdSBtdXN0IGZpcnN0IHB1dCB0aGUgdUd1cnUKK2luICJyZWFkeSIgbW9kZS4KKworVG8gcHV0IHRoZSB1R3VydSBpbiByZWFkeSBtb2RlIGZpcnN0IHdyaXRlIDB4MDAgdG8gREFUQSBhbmQgdGhlbiB3YWl0IGZvciBEQVRBCit0byBob2xkIDB4MDksIERBVEEgc2hvdWxkIHJlYWQgMHgwOSB3aXRoaW4gMjUwIHJlYWQgY3ljbGVzLgorCitOZXh0IENNRCBfbXVzdF8gYmUgcmVhZCBhbmQgc2hvdWxkIGhvbGQgMHhBQywgdXN1YWxseSBDTUQgd2lsbCBob2xkIDB4QUMgdGhlCitmaXJzdCByZWFkIGJ1dCBzb21ldGltZXMgaXQgdGFrZXMgYSB3aGlsZSBiZWZvcmUgQ01EIGhvbGRzIDB4QUMgYW5kIHRodXMgaXQKK2hhcyB0byBiZSByZWFkIGEgbnVtYmVyIG9mIHRpbWVzIChtYXggNTApLgorCitBZnRlciByZWFkaW5nIENNRCwgREFUQSBzaG91bGQgaG9sZCAweDA4IHdoaWNoIG1lYW5zIHRoYXQgdGhlIHVHdXJ1IGlzIHJlYWR5Citmb3IgaW5wdXQuIEFzIGFib3ZlIERBVEEgd2lsbCB1c3VhbGx5IGhvbGQgMHgwOCB0aGUgZmlyc3QgcmVhZCBidXQgbm90IGFsd2F5cy4KK1RoaXMgc3RlcCBjYW4gYmUgc2tpcHBlZCwgYnV0IGl0IGlzIHVuZGV0ZXJtaW5lZCB3aGF0IGhhcHBlbnMgaWYgdGhlIHVHdXJ1IGhhcworbm90IHlldCByZXBvcnRlZCAweDA4IGF0IERBVEEgYW5kIHlvdSBwcm9jZWVkIHdpdGggd3JpdGluZyBhIGJhbmsgYWRkcmVzcy4KKworCitTZW5kaW5nIGJhbmsgYW5kIHNlbnNvciBhZGRyZXNzZXMgdG8gdGhlIHVHdXJ1CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpcnN0IHRoZSB1R3VydSBtdXN0IGJlIGluICJyZWFkeSIgbW9kZSBhcyBkZXNjcmliZWQgYWJvdmUsIERBVEEgc2hvdWxkIGhvbGQKKzB4MDggaW5kaWNhdGluZyB0aGF0IHRoZSB1R3VydSB3YW50cyBpbnB1dCwgaW4gdGhpcyBjYXNlIHRoZSBiYW5rIGFkZHJlc3MuCisKK05leHQgd3JpdGUgdGhlIGJhbmsgYWRkcmVzcyB0byBEQVRBLiBBZnRlciB0aGUgYmFuayBhZGRyZXNzIGhhcyBiZWVuIHdyaXR0ZW4KK3dhaXQgZm9yIHRvIERBVEEgdG8gaG9sZCAweDA4IGFnYWluIGluZGljYXRpbmcgdGhhdCBpdCB3YW50cyAvIGlzIHJlYWR5IGZvcgorbW9yZSBpbnB1dCAobWF4IDI1MCByZWFkcykuCisKK09uY2UgREFUQSBob2xkcyAweDA4IGFnYWluIHdyaXRlIHRoZSBzZW5zb3IgYWRkcmVzcyB0byBDTUQuCisKKworUmVhZGluZworLS0tLS0tLQorCitGaXJzdCBzZW5kIHRoZSBiYW5rIGFuZCBzZW5zb3IgYWRkcmVzc2VzIGFzIGRlc2NyaWJlZCBhYm92ZS4KK1RoZW4gZm9yIGVhY2ggYnl0ZSBvZiBkYXRhIHlvdSB3YW50IHRvIHJlYWQgd2FpdCBmb3IgREFUQSB0byBob2xkIDB4MDEKK3doaWNoIGluZGljYXRlcyB0aGF0IHRoZSB1R3VydSBpcyByZWFkeSB0byBiZSByZWFkIChtYXggMjUwIHJlYWRzKSBhbmQgb25jZQorREFUQSBob2xkcyAweDAxIHJlYWQgdGhlIGJ5dGUgZnJvbSBDTUQuCisKK09uY2UgYWxsIGJ5dGVzIGhhdmUgYmVlbiByZWFkIGRhdGEgd2lsbCBob2xkIDB4MDksIGJ1dCB0aGVyZSBpcyBubyByZWFzb24gdG8KK3Rlc3QgZm9yIHRoaXMuIE5vdGljZSB0aGF0IHRoZSBudW1iZXIgb2YgYnl0ZXMgaXMgYmFuayBhZGRyZXNzIGRlcGVuZGVudCBzZWUKK2Fib3ZlIGFuZCBiZWxvdy4KKworQWZ0ZXIgY29tcGxldGluZyBhIHN1Y2Nlc3NmdWwgcmVhZCBpdCBpcyBhZHZpc2VkIHRvIHB1dCB0aGUgdUd1cnUgYmFjayBpbgorcmVhZHkgbW9kZSwgc28gdGhhdCBpdCBpcyByZWFkeSBmb3IgdGhlIG5leHQgcmVhZCAvIHdyaXRlIGN5Y2xlLiBUaGlzIHdheQoraWYgeW91ciBwcm9ncmFtIC8gZHJpdmVyIGlzIHVubG9hZGVkIGFuZCBsYXRlciBsb2FkZWQgYWdhaW4gdGhlIGRldGVjdGlvbgorYWxnb3JpdGhtIGRlc2NyaWJlZCBhYm92ZSB3aWxsIHN0aWxsIHdvcmsuCisKKworCitXcml0aW5nCistLS0tLS0tCisKK0ZpcnN0IHNlbmQgdGhlIGJhbmsgYW5kIHNlbnNvciBhZGRyZXNzZXMgYXMgZGVzY3JpYmVkIGFib3ZlLgorVGhlbiBmb3IgZWFjaCBieXRlIG9mIGRhdGEgeW91IHdhbnQgdG8gd3JpdGUgd2FpdCBmb3IgREFUQSB0byBob2xkIDB4MDAKK3doaWNoIGluZGljYXRlcyB0aGF0IHRoZSB1R3VydSBpcyByZWFkeSB0byBiZSB3cml0dGVuIChtYXggMjUwIHJlYWRzKSBhbmQKK29uY2UgREFUQSBob2xkcyAweDAwIHdyaXRlIHRoZSBieXRlIHRvIENNRC4KKworT25jZSBhbGwgYnl0ZXMgaGF2ZSBiZWVuIHdyaXR0ZW4gd2FpdCBmb3IgREFUQSB0byBob2xkIDB4MDEgKG1heCAyNTAgcmVhZHMpCitkb24ndCBhc2sgd2h5IHRoaXMgaXMgdGhlIHdheSBpdCBpcy4KKworT25jZSBEQVRBIGhvbGRzIDB4MDEgcmVhZCBDTUQgaXQgc2hvdWxkIGhvbGQgMHhBQyBub3cuCisKK0FmdGVyIGNvbXBsZXRpbmcgYSBzdWNjZXNzZnVsIHdyaXRlIGl0IGlzIGFkdmlzZWQgdG8gcHV0IHRoZSB1R3VydSBiYWNrIGluCityZWFkeSBtb2RlLCBzbyB0aGF0IGl0IGlzIHJlYWR5IGZvciB0aGUgbmV4dCByZWFkIC8gd3JpdGUgY3ljbGUuIFRoaXMgd2F5CitpZiB5b3VyIHByb2dyYW0gLyBkcml2ZXIgaXMgdW5sb2FkZWQgYW5kIGxhdGVyIGxvYWRlZCBhZ2FpbiB0aGUgZGV0ZWN0aW9uCithbGdvcml0aG0gZGVzY3JpYmVkIGFib3ZlIHdpbGwgc3RpbGwgd29yay4KKworCitHb3RjaGFzCistLS0tLS0tCisKK0FmdGVyIHdpZGVyIHRlc3Rpbmcgb2YgdGhlIExpbnV4IGtlcm5lbCBkcml2ZXIgc29tZSB2YXJpYW50cyBvZiB0aGUgdUd1cnUgaGF2ZQordHVybmVkIHVwIHdoaWNoIGRvIG5vdCBob2xkIDB4MDggYXQgREFUQSB3aXRoaW4gMjUwIHJlYWRzIGFmdGVyIHdyaXRpbmcgdGhlCitiYW5rIGFkZHJlc3MuIFdpdGggdGhlc2UgdmVyc2lvbnMgdGhpcyBoYXBwZW5zIHF1aXRlIGZyZXF1ZW50LCB1c2luZyBsYXJnZXIKK3RpbWVvdXRzIGRvZXNuJ3QgaGVscCwgdGhleSBqdXN0IGdvIG9mZmxpbmUgZm9yIGEgc2Vjb25kIG9yIDIsIGRvaW5nIHNvbWUKK2ludGVybmFsIGNhbGxpYnJhdGlvbiBvciB3aGF0ZXZlci4gWW91ciBjb2RlIHNob3VsZCBiZSBwcmVwYXJlZCB0byBoYW5kbGUKK3RoaXMgYW5kIGluIGNhc2Ugb2Ygbm8gcmVzcG9uc2UgaW4gdGhpcyBzcGVjaWZpYyBjYXNlIGp1c3QgZ290byBzbGVlcCBmb3IgYQord2hpbGUgYW5kIHRoZW4gcmV0cnkuCisKKworQWRkcmVzcyBNYXAKKz09PT09PT09PT09CisKK0JhbmsgMHgyMCBBbGFybXMgKFIpCistLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhpcyBiYW5rIGNvbnRhaW5zIDAgc2Vuc29ycywgaW93IHRoZSBzZW5zb3IgYWRkcmVzcyBpcyBpZ25vcmVkIChidXQgbXVzdCBiZQord3JpdHRlbikganVzdCB1c2UgMC4gQmFuayAweDIwIGNvbnRhaW5zIDMgYnl0ZXM6CisKK0J5dGUgMDoKK1RoaXMgYnl0ZSBob2xkcyB0aGUgYWxhcm0gZmxhZ3MgZm9yIHNlbnNvciAwLTcgb2YgU2Vuc29yIEJhbmsxLCB3aXRoIGJpdCAwCitjb3JyZXNwb25kaW5nIHRvIHNlbnNvciAwLCAxIHRvIDEsIGV0Yy4KKworQnl0ZSAxOgorVGhpcyBieXRlIGhvbGRzIHRoZSBhbGFybSBmbGFncyBmb3Igc2Vuc29yIDgtMTUgb2YgU2Vuc29yIEJhbmsxLCB3aXRoIGJpdCAwCitjb3JyZXNwb25kaW5nIHRvIHNlbnNvciA4LCAxIHRvIDksIGV0Yy4KKworQnl0ZSAyOgorVGhpcyBieXRlIGhvbGRzIHRoZSBhbGFybSBmbGFncyBmb3Igc2Vuc29yIDAtNSBvZiBTZW5zb3IgQmFuazIsIHdpdGggYml0IDAKK2NvcnJlc3BvbmRpbmcgdG8gc2Vuc29yIDAsIDEgdG8gMSwgZXRjLgorCisKK0JhbmsgMHgyMSBTZW5zb3IgQmFuazEgVmFsdWVzIC8gUmVhZGluZ3MgKFIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhpcyBiYW5rIGNvbnRhaW5zIDE2IHNlbnNvcnMsIGZvciBlYWNoIHNlbnNvciBpdCBjb250YWlucyAxIGJ5dGUuCitTbyBmYXIgdGhlIGZvbGxvd2luZyBzZW5zb3JzIGFyZSBrbm93biB0byBiZSBhdmFpbGFibGUgb24gYWxsIG1vdGhlcmJvYXJkczoKK1NlbnNvciAgMCBDUFUgdGVtcAorU2Vuc29yICAxIFNZUyB0ZW1wCitTZW5zb3IgIDMgQ1BVIGNvcmUgdm9sdAorU2Vuc29yICA0IEREUiB2b2x0CitTZW5zb3IgMTAgRERSIFZ0dCB2b2x0CitTZW5zb3IgMTUgUFdNIHRlbXAKKworQnl0ZSAwOgorVGhpcyBieXRlIGhvbGRzIHRoZSByZWFkaW5nIGZyb20gdGhlIHNlbnNvci4gU2Vuc29ycyBpbiBCYW5rMSBjYW4gYmUgYm90aAordm9sdCBhbmQgdGVtcCBzZW5zb3JzLCB0aGlzIGlzIG1vdGhlcmJvYXJkIHNwZWNpZmljLiBUaGUgdUd1cnUgaG93ZXZlciBkb2VzCitzZWVtIHRvIGtub3cgKGJlIHByb2dyYW1tZWQgd2l0aCkgd2hhdCBraW5kb2ZmIHNlbnNvciBpcyBhdHRhY2hlZCBzZWUgU2Vuc29yCitCYW5rMSBTZXR0aW5ncyBkZXNjcmlwdGlvbi4KKworVm9sdCBzZW5zb3JzIHVzZSBhIGxpbmVhciBzY2FsZSwgYSByZWFkaW5nIDAgY29ycmVzcG9uZHMgd2l0aCAwIHZvbHQgYW5kIGEKK3JlYWRpbmcgb2YgMjU1IHdpdGggMzQ5NCBtVi4gVGhlIHNlbnNvcnMgZm9yIGhpZ2hlciB2b2x0YWdlcyBob3dldmVyIGFyZQorY29ubmVjdGVkIHRocm91Z2ggYSBkaXZpc2lvbiBjaXJjdWl0LiBUaGUgY3VycmVudGx5IGtub3duIGRpdmlzaW9uIGNpcmN1aXRzCitpbiB1c2UgcmVzdWx0IGluIHJhbmdlcyBvZjogMC00MzYxbVYsIDAtNjI0OG1WIG9yIDAtMTQ1MTBtVi4gMy4zIHZvbHQgc291cmNlcwordXNlIHRoZSAwLTQzNjFtViByYW5nZSwgNSB2b2x0IHRoZSAwLTYyNDhtViBhbmQgMTIgdm9sdCB0aGUgMC0xNDUxMG1WIC4KKworVGVtcCBzZW5zb3JzIGFsc28gdXNlIGEgbGluZWFyIHNjYWxlLCBhIHJlYWRpbmcgb2YgMCBjb3JyZXNwb25kcyB3aXRoIDAgZGVncmVlCitDZWxzaXVzIGFuZCBhIHJlYWRpbmcgb2YgMjU1IHdpdGggYSByZWFkaW5nIG9mIDI1NSBkZWdyZWVzIENlbHNpdXMuCisKKworQmFuayAweDIyIFNlbnNvciBCYW5rMSBTZXR0aW5ncyAoUikKK0JhbmsgMHgyMyBTZW5zb3IgQmFuazEgU2V0dGluZ3MgKFcpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGJhbmsgY29udGFpbnMgMTYgc2Vuc29ycywgZm9yIGVhY2ggc2Vuc29yIGl0IGNvbnRhaW5zIDMgYnl0ZXMuIEVhY2gKK3NldCBvZiAzIGJ5dGVzIGNvbnRhaW5zIHRoZSBzZXR0aW5ncyBmb3IgdGhlIHNlbnNvciB3aXRoIHRoZSBzYW1lIHNlbnNvcgorYWRkcmVzcyBpbiBCYW5rIDB4MjEgLgorCitCeXRlIDA6CitBbGFybSBiZWhhdmlvdXIgZm9yIHRoZSBzZWxlY3RlZCBzZW5zb3IuIEEgMSBlbmFibGVzIHRoZSBkZXNjcmliZWQgYmVoYXZpb3VyLgorQml0IDA6IEdpdmUgYW4gYWxhcm0gaWYgbWVhc3VyZWQgdGVtcCBpcyBvdmVyIHRoZSB3YXJuaW5nIHRocmVzaG9sZAkoUlcpICoKK0JpdCAxOiBHaXZlIGFuIGFsYXJtIGlmIG1lYXN1cmVkIHZvbHQgaXMgb3ZlciB0aGUgbWF4IHRocmVzaG9sZAkJKFJXKSAqKgorQml0IDI6IEdpdmUgYW4gYWxhcm0gaWYgbWVhc3VyZWQgdm9sdCBpcyB1bmRlciB0aGUgbWluIHRocmVzaG9sZAkoUlcpICoqCitCaXQgMzogQmVlcCBpZiBhbGFybQkJCQkJCQkoUlcpCitCaXQgNDogMSBpZiBhbGFybSBjYXVzZSBtZWFzdXJlZCB0ZW1wIGlzIG92ZXIgdGhlIHdhcm5pbmcgdGhyZXNob2xkCShSKQorQml0IDU6IDEgaWYgYWxhcm0gY2F1c2UgbWVhc3VyZWQgdm9sdCBpcyBvdmVyIHRoZSBtYXggdGhyZXNob2xkCQkoUikKK0JpdCA2OiAxIGlmIGFsYXJtIGNhdXNlIG1lYXN1cmVkIHZvbHQgaXMgdW5kZXIgdGhlIG1pbiB0aHJlc2hvbGQJKFIpCitCaXQgNzogVm9sdCBzZW5zb3I6IFNodXRkb3duIGlmIGFsYXJtIHBlcnNpc3QgZm9yIG1vcmUgdGhhbiA0IHNlY29uZHMJKFJXKQorICAgICAgIFRlbXAgc2Vuc29yOiBTaHV0ZG93biBpZiB0ZW1wIGlzIG92ZXIgdGhlIHNodXRkb3duIHRocmVzaG9sZAkoUlcpCisKKyogIFRoaXMgYml0IGlzIG9ubHkgaG9ub3JlZC91c2VkIGJ5IHRoZSB1R3VydSBpZiBhIHRlbXAgc2Vuc29yIGlzIGNvbm5lY3RlZAorKiogVGhpcyBiaXQgaXMgb25seSBob25vcmVkL3VzZWQgYnkgdGhlIHVHdXJ1IGlmIGEgdm9sdCBzZW5zb3IgaXMgY29ubmVjdGVkCitOb3RlIHdpdGggc29tZSB0cmlja2VyeSB0aGlzIGNhbiBiZSB1c2VkIHRvIGZpbmQgb3V0IHdoYXQga2luZGEgc2Vuc29yIGlzCitkZXRlY3RlZCBzZWUgdGhlIExpbnV4IGtlcm5lbCBkcml2ZXIgZm9yIGFuIGV4YW1wbGUgd2l0aCBtYW55IGNvbW1lbnRzIG9uCitob3cgdG9kbyB0aGlzLgorCitCeXRlIDE6CitUZW1wIHNlbnNvcjogd2FybmluZyB0aHJlc2hvbGQgIChzY2FsZSBhcyBiYW5rIDB4MjEpCitWb2x0IHNlbnNvcjogbWluIHRocmVzaG9sZCAgICAgIChzY2FsZSBhcyBiYW5rIDB4MjEpCisKK0J5dGUgMjoKK1RlbXAgc2Vuc29yOiBzaHV0ZG93biB0aHJlc2hvbGQgKHNjYWxlIGFzIGJhbmsgMHgyMSkKK1ZvbHQgc2Vuc29yOiBtYXggdGhyZXNob2xkICAgICAgKHNjYWxlIGFzIGJhbmsgMHgyMSkKKworCitCYW5rIDB4MjQgUFdNIG91dHB1dHMgZm9yIEZBTidzIChSKQorQmFuayAweDI1IFBXTSBvdXRwdXRzIGZvciBGQU4ncyAoVykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgYmFuayBjb250YWlucyAzICJzZW5zb3JzIiwgZm9yIGVhY2ggc2Vuc29yIGl0IGNvbnRhaW5zIDUgYnl0ZXMuCitTZW5zb3IgMCB1c3VhbGx5IGNvbnRyb2xzIHRoZSBDUFUgZmFuCitTZW5zb3IgMSB1c3VhbGx5IGNvbnRyb2xzIHRoZSBOQiAob3IgY2hpcHNldCBmb3Igc2luZ2xlIGNoaXApIGZhbgorU2Vuc29yIDIgdXN1YWxseSBjb250cm9scyB0aGUgU3lzdGVtIGZhbgorCitCeXRlIDA6CitGbGFnIDB4ODAgdG8gZW5hYmxlIGNvbnRyb2wsIEZhbiBydW5zIGF0IDEwMCUgd2hlbiBkaXNhYmxlZC4KK2xvdyBuaWJibGUgKHRlbXApc2Vuc29yIGFkZHJlc3MgYXQgYmFuayAweDIxIHVzZWQgZm9yIGNvbnRyb2wuCisKK0J5dGUgMToKKzAtMjU1ID0gMC0xMnYgKGxpbmVhciksIHNwZWNpZnkgdm9sdGFnZSBhdCB3aGljaCBmYW4gd2lsbCByb3RhdGUgd2hlbiB1bmRlcgorbG93IHRocmVzaG9sZCB0ZW1wIChzcGVjaWZpZWQgaW4gYnl0ZSAzKQorCitCeXRlIDI6CiswLTI1NSA9IDAtMTJ2IChsaW5lYXIpLCBzcGVjaWZ5IHZvbHRhZ2UgYXQgd2hpY2ggZmFuIHdpbGwgcm90YXRlIHdoZW4gYWJvdmUKK2hpZ2ggdGhyZXNob2xkIHRlbXAgKHNwZWNpZmllZCBpbiBieXRlIDQpCisKK0J5dGUgMzoKK0xvdyB0aHJlc2hvbGQgdGVtcCAgKHNjYWxlIGFzIGJhbmsgMHgyMSkKKworYnl0ZSA0OgorSGlnaCB0aHJlc2hvbGQgdGVtcCAoc2NhbGUgYXMgYmFuayAweDIxKQorCisKK0JhbmsgMHgyNiBTZW5zb3JzIEJhbmsyIFZhbHVlcyAvIFJlYWRpbmdzIChSKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgYmFuayBjb250YWlucyA2IHNlbnNvcnMgKEFGQUlLKSwgZm9yIGVhY2ggc2Vuc29yIGl0IGNvbnRhaW5zIDEgYnl0ZS4KK1NvIGZhciB0aGUgZm9sbG93aW5nIHNlbnNvcnMgYXJlIGtub3duIHRvIGJlIGF2YWlsYWJsZSBvbiBhbGwgbW90aGVyYm9hcmRzOgorU2Vuc29yIDA6IENQVSBmYW4gc3BlZWQKK1NlbnNvciAxOiBOQiAob3IgY2hpcHNldCBmb3Igc2luZ2xlIGNoaXApIGZhbiBzcGVlZAorU2Vuc29yIDI6IFNZUyBmYW4gc3BlZWQKKworQnl0ZSAwOgorVGhpcyBieXRlIGhvbGRzIHRoZSByZWFkaW5nIGZyb20gdGhlIHNlbnNvci4gMC0yNTUgPSAwLTE1MzAwIChsaW5lYXIpCisKKworQmFuayAweDI3IFNlbnNvcnMgQmFuazIgU2V0dGluZ3MgKFIpCitCYW5rIDB4MjggU2Vuc29ycyBCYW5rMiBTZXR0aW5ncyAoVykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGJhbmsgY29udGFpbnMgNiBzZW5zb3JzIChBRkFJSyksIGZvciBlYWNoIHNlbnNvciBpdCBjb250YWlucyAyIGJ5dGVzLgorCitCeXRlIDA6CitBbGFybSBiZWhhdmlvdXIgZm9yIHRoZSBzZWxlY3RlZCBzZW5zb3IuIEEgMSBlbmFibGVzIHRoZSBkZXNjcmliZWQgYmVoYXZpb3VyLgorQml0IDA6IEdpdmUgYW4gYWxhcm0gaWYgbWVhc3VyZWQgcnBtIGlzIHVuZGVyIHRoZSBtaW4gdGhyZXNob2xkCShSVykKK0JpdCAzOiBCZWVwIGlmIGFsYXJtCQkJCQkJKFJXKQorQml0IDc6IFNodXRkb3duIGlmIGFsYXJtIHBlcnNpc3QgZm9yIG1vcmUgdGhhbiA0IHNlY29uZHMJKFJXKQorCitCeXRlIDE6CittaW4gdGhyZXNob2xkIChzY2FsZSBhcyBiYW5rIDB4MjYpCisKKworV2FybmluZyBmb3IgdGhlIGFkdmVudHVyb3VzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQSB3b3JkIG9mIGNhdXRpb24gdG8gdGhvc2Ugd2hvIHdhbnQgdG8gZXhwZXJpbWVudCBhbmQgc2VlIGlmIHRoZXkgY2FuIGZpZ3VyZQordGhlIHZvbHRhZ2UgLyBjbG9jayBwcm9ncmFtbWluZyBvdXQsIEkgdHJpZWQgcmVhZGluZyBhbmQgb25seSByZWFkaW5nIGJhbmtzCiswLTB4MzAgd2l0aCB0aGUgcmVhZGluZyBjb2RlIHVzZWQgZm9yIHRoZSBzZW5zb3IgYmFua3MgKDB4MjAtMHgyOCkgYW5kIHRoaXMKK3Jlc3VsdGVkIGluIGEgX3Blcm1hbmVudF8gcmVwcm9ncmFtbWluZyBvZiB0aGUgdm9sdGFnZXMsIGx1Y2tpbHkgSSBoYWQgdGhlCitzZW5zb3JzIHBhcnQgY29uZmlndXJlZCBzbyB0aGF0IGl0IHdvdWxkIHNodXRkb3duIG15IHN5c3RlbSBvbiBhbnkgb3V0IG9mIHNwZWMKK3ZvbHRhZ2VzIHdoaWNoIHByb3ByYWJseSBzYWZlZCBteSBjb21wdXRlciAoYWZ0ZXIgYSByZWJvb3QgSSBtYW5hZ2VkIHRvCitpbW1lZGlhdGVseSBlbnRlciB0aGUgYmlvcyBhbmQgcmVsb2FkIHRoZSBkZWZhdWx0cykuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdAordGhlIHJlYWQvd3JpdGUgY3ljbGUgZm9yIHRoZSBub24gc2Vuc29yIHBhcnQgaXMgZGlmZmVyZW50IGZyb20gdGhlIHNlbnNvciBwYXJ0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9hYml0dWd1cnUzIGIvRG9jdW1lbnRhdGlvbi9od21vbi9hYml0dWd1cnUzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2Y2NmZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2FiaXR1Z3VydTMKQEAgLTAsMCArMSw2NSBAQAorS2VybmVsIGRyaXZlciBhYml0dWd1cnUzCis9PT09PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIEFiaXQgdUd1cnUgcmV2aXNpb24gMyAoSGFyZHdhcmUgTW9uaXRvciBwYXJ0LCByZWFkaW5nIG9ubHkpCisgICAgUHJlZml4OiAnYWJpdHVndXJ1MycKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSVNBIDB4MEUwCisgICAgRGF0YXNoZWV0OiBOb3QgYXZhaWxhYmxlLCB0aGlzIGRyaXZlciBpcyBiYXNlZCBvbiByZXZlcnNlIGVuZ2luZWVyaW5nLgorICAgIE5vdGU6CisJVGhlIHVHdXJ1IGlzIGEgbWljcm9jb250cm9sbGVyIHdpdGggb25ib2FyZCBmaXJtd2FyZSB3aGljaCBwcm9ncmFtcworCWl0IHRvIGJlaGF2ZSBhcyBhIGh3bW9uIElDLiBUaGVyZSBhcmUgbWFueSBkaWZmZXJlbnQgcmV2aXNpb25zIG9mIHRoZQorCWZpcm13YXJlIGFuZCB0aHVzIGVmZmVjdGl2bHkgbWFueSBkaWZmZXJlbnQgcmV2aXNpb25zIG9mIHRoZSB1R3VydS4KKwlCZWxvdyBpcyBhbiBpbmNvbXBsZXRlIGxpc3Qgd2l0aCB3aGljaCByZXZpc2lvbnMgYXJlIHVzZWQgZm9yIHdoaWNoCisJTW90aGVyYm9hcmRzOgorCXVHdXJ1IDEuMDAgICAgfiAxLjI0ICAgIChBSTcsIEtWOC1NQVgzLCBBTjcpCisJdUd1cnUgMi4wLjAuMCB+IDIuMC40LjIgKEtWOC1QUk8pCisJdUd1cnUgMi4xLjAuMCB+IDIuMS4yLjggKEFTOCwgQVY4LCBBQTgsIEFHOCwgQUE4WEUsIEFYOCkKKwl1R3VydSAyLjMuMC4wIH4gMi4zLjAuOSAoQU44KQorCXVHdXJ1IDMuMC4wLjAgfiAzLjAueC54IChBVzgsIEFMOCwgQVQ4LCBOSTggU0xJLCBBVDggMzJYLCBBTjggMzJYLAorCQkJCSBBVzlELU1BWCkKKwlUaGUgYWJpdHVndXJ1MyBkcml2ZXIgaXMgb25seSBmb3IgcmV2aXNvbiAzLjAueC54IG1vdGhlcmJvYXJkcywKKwl0aGlzIGRyaXZlciB3aWxsIG5vdCB3b3JrIG9uIG9sZGVyIG1vdGhlcmJvYXJkcy4gRm9yIG9sZGVyCisJbW90aGVyYm9hcmRzIHVzZSB0aGUgYWJpdHVndXJ1ICh3aXRob3V0IHRoZSAzICEpIGRyaXZlci4KKworQXV0aG9yczoKKwlIYW5zIGRlIEdvZWRlIDxqLncuci5kZWdvZWRlQGhocy5ubD4sCisJKEluaXRpYWwgcmV2ZXJzZSBlbmdpbmVlcmluZyBkb25lIGJ5IExvdWlzIEtydWdlcikKKworCitNb2R1bGUgUGFyYW1ldGVycworLS0tLS0tLS0tLS0tLS0tLS0KKworKiBmb3JjZTogYm9vbAkJRm9yY2UgZGV0ZWN0aW9uLiBOb3RlIHRoaXMgcGFyYW1ldGVyIG9ubHkgY2F1c2VzIHRoZQorCQkJZGV0ZWN0aW9uIHRvIGJlIHNraXBwZWQsIGFuZCB0aHVzIHRoZSBpbnNtb2QgdG8KKwkJCXN1Y2NlZWQuIElmIHRoZSB1R3VydSBjYW4ndCBiZSByZWFkIHRoZSBhY3R1YWwgaHdtb24KKwkJCWRyaXZlciB3aWxsIG5vdCBsb2FkIGFuZCB0aHVzIG5vIGh3bW9uIGRldmljZSB3aWxsIGdldAorCQkJcmVnaXN0ZXJlZC4KKyogdmVyYm9zZTogYm9vbAkJU2hvdWxkIHRoZSBkcml2ZXIgYmUgdmVyYm9zZT8KKwkJCTAvb2ZmL2ZhbHNlICBub3JtYWwgb3V0cHV0CisJCQkxL29uL3RydWUgICAgKyB2ZXJib3NlIGVycm9yIHJlcG9ydGluZyAoZGVmYXVsdCkKKwkJCURlZmF1bHQ6IDEgKHRoZSBkcml2ZXIgaXMgc3RpbGwgaW4gdGhlIHRlc3RpbmcgcGhhc2UpCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgaGFyZHdhcmUgbW9uaXRvcmluZyBmZWF0dXJlcyBvZiB0aGUgdGhpcmQgcmV2aXNpb24gb2YKK3RoZSBBYml0IHVHdXJ1IGNoaXAsIGZvdW5kIG9uIHJlY2VudCBBYml0IHVHdXJ1IGZlYXR1cmluZyBtb3RoZXJib2FyZHMuCisKK1RoZSAzcmQgcmV2aXNpb24gb2YgdGhlIHVHdXJ1IGNoaXAgaW4gcmVhbGl0eSBpcyBhIFdpbmJvbmQgVzgzTDk1MUcuCitVbmZvcnR1bmF0ZWx5IHRoaXMgZG9lc24ndCBoZWxwIHNpbmNlIHRoZSBXODNMOTUxRyBpcyBhIGdlbmVyaWMgbWljcm9jb250cm9sbGVyCit3aXRoIGEgY3VzdG9tIEFiaXQgYXBwbGljYXRpb24gcnVubmluZyBvbiBpdC4KKworRGVzcGl0ZSBBYml0IG5vdCByZWxlYXNpbmcgYW55IGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgdUd1cnUgcmV2aXNpb24gMywKK0xvdWlzIEtydWdlciBoYXMgbWFuYWdlZCB0byByZXZlcnNlIGVuZ2luZWVyIHRoZSBzZW5zb3IgcGFydCBvZiB0aGUgdUd1cnUuCitXaXRob3V0IGhpcyB3b3JrIHRoaXMgZHJpdmVyIHdvdWxkIG5vdCBoYXZlIGJlZW4gcG9zc2libGUuCisKK0tub3duIElzc3VlcworLS0tLS0tLS0tLS0tCisKK1RoZSB2b2x0YWdlIGFuZCBmcmVxdWVuY3kgY29udHJvbCBwYXJ0cyBvZiB0aGUgQWJpdCB1R3VydSBhcmUgbm90IHN1cHBvcnRlZCwKK25laXRoZXIgaXMgd3JpdGluZyBhbnkgb2YgdGhlIHNlbnNvciBzZXR0aW5ncyBhbmQgd3JpdGluZyAvIHJlYWRpbmcgdGhlCitmYW5zcGVlZCBjb250cm9sIHJlZ2lzdGVycyAoRmFuRVEpCisKK0lmIHlvdSBlbmNvdW50ZXIgYW55IHByb2JsZW1zIHBsZWFzZSBtYWlsIG1lIDxqLncuci5kZWdvZWRlQGhocy5ubD4gYW5kCitpbmNsdWRlIHRoZSBvdXRwdXQgb2Y6ICJkbWVzZyB8IGdyZXAgYWJpdHVndXJ1IgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9hYng1MDAgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2FieDUwMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTlhMDU4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9hYng1MDAKQEAgLTAsMCArMSwyOCBAQAorS2VybmVsIGRyaXZlciBhYng1MDAKKz09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBTVC1Fcmljc3NvbiBBQng1MDAgc2VyaWVzCisgICAgUHJlZml4OiAnYWJ4NTAwJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OiBodHRwOi8vd3d3LnN0ZXJpY3Nzb24uY29tL2RldmVsb3BlcnMvZG9jdW1lbnRhdGlvbi5qc3AKKworQXV0aG9yczoKKyAgICAgICAgTWFydGluIFBlcnNzb24gPG1hcnRpbi5wZXJzc29uQHN0ZXJpY3Nzb24uY29tPgorICAgICAgICBIb25nYm8gWmhhbmcgPGhvbmdiby56aGFuZ0BsaW5hcm8ub3JnPgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworRXZlcnkgU1QtRXJpY3Nzb24gVXg1MDAgU09DIGNvbnNpc3RzIG9mIGJvdGggQUJ4NTAwIGFuZCBEQng1MDAgcGh5c2ljYWxseSwKK3RoaXMgaXMga2VybmVsIGh3bW9uIGRyaXZlciBmb3IgQUJ4NTAwLgorCitUaGVyZSBhcmUgc29tZSBHUEFEQ3MgaW5zaWRlIEFCeDUwMCB3aGljaCBhcmUgZGVzaWduZWQgZm9yIGNvbm5lY3RpbmcgdG8KK3RoZXJtYWwgc2Vuc29ycywgYW5kIHRoZXJlIGlzIGFsc28gYSB0aGVybWFsIHNlbnNvciBpbnNpZGUgQUJ4NTAwIHRvbywgd2hpY2gKK3JhaXNlcyBpbnRlcnJ1cHQgd2hlbiBjcml0aWNhbCB0ZW1wZXJhdHVyZSByZWFjaGVkLgorCitUaGlzIGFieDUwMCBpcyBhIGNvbW1vbiBsYXllciB3aGljaCBjYW4gbW9uaXRvciBhbGwgb2YgdGhlIHNlbnNvcnMsIGV2ZXJ5CitzcGVjaWZpYyBhYng1MDAgY2hpcCBoYXMgaXRzIHNwZWNpYWwgY29uZmlndXJhdGlvbnMgaW4gaXRzIG93biBmaWxlLCBlLmcuIHNvbWUKK3NlbnNvcnMgY2FuIGJlIGNvbmZpZ3VyZWQgaW52aXNpYmxlIGlmIHRoZXkgYXJlIG5vdCBhdmFpbGFibGUgb24gdGhhdCBjaGlwLCBhbmQKK3RoZSBjb3JyZXNwb25kaW5nIGdwYWRjX2FkZHIgc2hvdWxkIGJlIHNldCB0byAwLCB0aHVzIHRoaXMgc2Vuc29yIHdvbid0IGJlCitwb2xsZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2FjcGlfcG93ZXJfbWV0ZXIgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2FjcGlfcG93ZXJfbWV0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgwMzk5YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vYWNwaV9wb3dlcl9tZXRlcgpAQCAtMCwwICsxLDUxIEBACitLZXJuZWwgZHJpdmVyIHBvd2VyX21ldGVyCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgZHJpdmVyIHRhbGtzIHRvIEFDUEkgNC4wIHBvd2VyIG1ldGVycy4KKworU3VwcG9ydGVkIHN5c3RlbXM6CisgICogQW55IHJlY2VudCBzeXN0ZW0gd2l0aCBBQ1BJIDQuMC4KKyAgICBQcmVmaXg6ICdwb3dlcl9tZXRlcicKKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly9hY3BpLmluZm8vLCBzZWN0aW9uIDEwLjQuCisKK0F1dGhvcjogRGFycmljayBKLiBXb25nCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHNlbnNvciByZWFkaW5nIHN1cHBvcnQgZm9yIHRoZSBwb3dlciBtZXRlcnMgZXhwb3NlZCBpbgordGhlIEFDUEkgNC4wIHNwZWMgKENoYXB0ZXIgMTAuNCkuICBUaGVzZSBkZXZpY2VzIGhhdmUgYSBzaW1wbGUgc2V0IG9mCitmZWF0dXJlcy0tYSBwb3dlciBtZXRlciB0aGF0IHJldHVybnMgYXZlcmFnZSBwb3dlciB1c2Ugb3ZlciBhIGNvbmZpZ3VyYWJsZQoraW50ZXJ2YWwsIGFuIG9wdGlvbmFsIGNhcHBpbmcgbWVjaGFuaXNtLCBhbmQgYSBjb3VwbGUgb2YgdHJpcCBwb2ludHMuICBUaGUKK3N5c2ZzIGludGVyZmFjZSBjb25mb3JtcyB3aXRoIHRoZSBzcGVjaWZpY2F0aW9uIG91dGxpbmVkIGluIHRoZSAiUG93ZXIiIHNlY3Rpb24KK29mIERvY3VtZW50YXRpb24vaHdtb24vc3lzZnMtaW50ZXJmYWNlLgorCitTcGVjaWFsIEZlYXR1cmVzCistLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBwb3dlclsxLSpdX2lzX2JhdHRlcnkga25vYiBpbmRpY2F0ZXMgaWYgdGhlIHBvd2VyIHN1cHBseSBpcyBhIGJhdHRlcnkuCitCb3RoIHBvd2VyWzEtKl1fYXZlcmFnZV97bWluLG1heH0gbXVzdCBiZSBzZXQgYmVmb3JlIHRoZSB0cmlwIHBvaW50cyB3aWxsIHdvcmsuCitXaGVuIGJvdGggb2YgdGhlbSBhcmUgc2V0LCBhbiBBQ1BJIGV2ZW50IHdpbGwgYmUgYnJvYWRjYXN0IG9uIHRoZSBBQ1BJIG5ldGxpbmsKK3NvY2tldCBhbmQgYSBwb2xsIG5vdGlmaWNhdGlvbiB3aWxsIGJlIHNlbnQgdG8gdGhlIGFwcHJvcHJpYXRlCitwb3dlclsxLSpdX2F2ZXJhZ2Ugc3lzZnMgZmlsZS4KKworVGhlIHBvd2VyWzEtKl1fe21vZGVsX251bWJlciwgc2VyaWFsX251bWJlciwgb2VtX2luZm99IGZpZWxkcyBkaXNwbGF5IGFyYml0cmFyeQorc3RyaW5ncyB0aGF0IEFDUEkgcHJvdmlkZXMgd2l0aCB0aGUgbWV0ZXIuICBUaGUgbWVhc3VyZXMvIGRpcmVjdG9yeSBjb250YWlucworc3ltbGlua3MgdG8gdGhlIGRldmljZXMgdGhhdCB0aGlzIG1ldGVyIG1lYXN1cmVzLgorCitTb21lIGNvbXB1dGVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIGVuZm9yY2UgYSBwb3dlciBjYXAgaW4gaGFyZHdhcmUuICBJZiB0aGlzIGlzCit0aGUgY2FzZSwgdGhlIHBvd2VyWzEtKl1fY2FwIGFuZCByZWxhdGVkIHN5c2ZzIGZpbGVzIHdpbGwgYXBwZWFyLiAgV2hlbiB0aGUKK2F2ZXJhZ2UgcG93ZXIgY29uc3VtcHRpb24gZXhjZWVkcyB0aGUgY2FwLCBhbiBBQ1BJIGV2ZW50IHdpbGwgYmUgYnJvYWRjYXN0IG9uCit0aGUgbmV0bGluayBldmVudCBzb2NrZXQgYW5kIGEgcG9sbCBub3RpZmljYXRpb24gd2lsbCBiZSBzZW50IHRvIHRoZQorYXBwcm9wcmlhdGUgcG93ZXJbMS0qXV9hbGFybSBmaWxlIHRvIGluZGljYXRlIHRoYXQgY2FwcGluZyBoYXMgYmVndW4sIGFuZCB0aGUKK2hhcmR3YXJlIGhhcyB0YWtlbiBhY3Rpb24gdG8gcmVkdWNlIHBvd2VyIGNvbnN1bXB0aW9uLiAgTW9zdCBsaWtlbHkgdGhpcyB3aWxsCityZXN1bHQgaW4gcmVkdWNlZCBwZXJmb3JtYW5jZS4KKworVGhlcmUgYXJlIGEgZmV3IG90aGVyIEFDUEkgbm90aWZpY2F0aW9ucyB0aGF0IGNhbiBiZSBzZW50IGJ5IHRoZSBmaXJtd2FyZS4gIEluCithbGwgY2FzZXMgdGhlIEFDUEkgZXZlbnQgd2lsbCBiZSBicm9hZGNhc3Qgb24gdGhlIEFDUEkgbmV0bGluayBldmVudCBzb2NrZXQgYXMKK3dlbGwgYXMgc2VudCBhcyBhIHBvbGwgbm90aWZpY2F0aW9uIHRvIGEgc3lzZnMgZmlsZS4gIFRoZSBldmVudHMgYXJlIGFzCitmb2xsb3dzOgorCitwb3dlclsxLSpdX2NhcCB3aWxsIGJlIG5vdGlmaWVkIGlmIHRoZSBmaXJtd2FyZSBjaGFuZ2VzIHRoZSBwb3dlciBjYXAuCitwb3dlclsxLSpdX2ludGVydmFsIHdpbGwgYmUgbm90aWZpZWQgaWYgdGhlIGZpcm13YXJlIGNoYW5nZXMgdGhlIGF2ZXJhZ2luZworaW50ZXJ2YWwuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2FkNzMxNCBiL0RvY3VtZW50YXRpb24vaHdtb24vYWQ3MzE0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5MTI1NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2FkNzMxNApAQCAtMCwwICsxLDI1IEBACitLZXJuZWwgZHJpdmVyIGFkNzMxNAorPT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAgKiBBbmFsb2cgRGV2aWNlcyBBRDczMTQKKyAgICAgUHJlZml4OiAnYWQ3MzE0JworICAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCBBbmFsb2cgRGV2aWNlcyB3ZWJzaXRlLgorICAgKiBBbmFsb2cgRGV2aWNlcyBBRFQ3MzAxCisgICAgIFByZWZpeDogJ2FkdDczMDEnCisgICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IEFuYWxvZyBEZXZpY2VzIHdlYnNpdGUuCisgICAqIEFuYWxvZyBEZXZpY2VzIEFEVDczMDIKKyAgICAgUHJlZml4OiAnYWR0NzMwMicKKyAgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgQW5hbG9nIERldmljZXMgd2Vic2l0ZS4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK0RyaXZlciBzdXBwb3J0cyB0aGUgYWJvdmUgcGFydHMuICBUaGUgYWQ3MzE0IGhhcyBhIDEwIGJpdAorc2Vuc29yIHdpdGggMWxzYiA9IDAuMjUgZGVncmVlcyBjZW50aWdyYWRlLiBUaGUgYWR0NzMwMSBhbmQKK2FkdDczMDIgaGF2ZSAxNCBiaXQgc2Vuc29ycyB3aXRoIDFsc2IgPSAwLjAzMTI1IGRlZ3JlZXMgY2VudGlncmFkZS4KKworTm90ZXMKKy0tLS0tCisKK0N1cnJlbnRseSBwb3dlciBkb3duIG1vZGUgaXMgbm90IHN1cHBvcnRlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vYWRjMTI4ZDgxOCBiL0RvY3VtZW50YXRpb24vaHdtb24vYWRjMTI4ZDgxOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWM5NTAwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9hZGMxMjhkODE4CkBAIC0wLDAgKzEsNDcgQEAKK0tlcm5lbCBkcml2ZXIgYWRjMTI4ZDgxOAorPT09PT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBUZXhhcyBJbnN0cnVtZW50cyBBREM4MThEODE4CisgICAgUHJlZml4OiAnYWRjODE4ZDgxOCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MWQsIDB4MWUsIDB4MWYsIDB4MmQsIDB4MmUsIDB4MmYKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgVEkgd2Vic2l0ZQorICAgICAgICAgICAgICAgaHR0cDovL3d3dy50aS5jb20vCisKK0F1dGhvcjogR3VlbnRlciBSb2VjaworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgaW1wbGVtZW50cyBzdXBwb3J0IGZvciB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgQURDMTI4RDgxOC4KK0l0IGlzIGRlc2NyaWJlZCBhcyAnQURDIFN5c3RlbSBNb25pdG9yIHdpdGggVGVtcGVyYXR1cmUgU2Vuc29yJy4KKworVGhlIEFEQzEyOEQ4MTggaW1wbGVtZW50cyBvbmUgdGVtcGVyYXR1cmUgc2Vuc29yIGFuZCBzZXZlbiB2b2x0YWdlIHNlbnNvcnMuCisKK1RlbXBlcmF0dXJlcyBhcmUgbWVhc3VyZWQgaW4gZGVncmVlcyBDZWxzaXVzLiBUaGVyZSBpcyBvbmUgc2V0IG9mIGxpbWl0cy4KK1doZW4gdGhlIEhPVCBUZW1wZXJhdHVyZSBMaW1pdCBpcyBjcm9zc2VkLCB0aGlzIHdpbGwgY2F1c2UgYW4gYWxhcm0gdGhhdCB3aWxsCitiZSByZWFzc2VydGVkIHVudGlsIHRoZSB0ZW1wZXJhdHVyZSBkcm9wcyBiZWxvdyB0aGUgSE9UIEh5c3RlcmVzaXMuCitNZWFzdXJlbWVudHMgYXJlIGd1YXJhbnRlZWQgYmV0d2VlbiAtNTUgYW5kICsxMjUgZGVncmVlcy4gVGhlIHRlbXBlcmF0dXJlCittZWFzdXJlbWVudCBoYXMgYSByZXNvbHV0aW9uIG9mIDAuNSBkZWdyZWVzOyB0aGUgbGltaXRzIGhhdmUgYSByZXNvbHV0aW9uCitvZiAxIGRlZ3JlZS4KKworVm9sdGFnZSBzZW5zb3JzIChhbHNvIGtub3duIGFzIElOIHNlbnNvcnMpIHJlcG9ydCB0aGVpciB2YWx1ZXMgaW4gdm9sdHMuCitBbiBhbGFybSBpcyB0cmlnZ2VyZWQgaWYgdGhlIHZvbHRhZ2UgaGFzIGNyb3NzZWQgYSBwcm9ncmFtbWFibGUgbWluaW11bQorb3IgbWF4aW11bSBsaW1pdC4gTm90ZSB0aGF0IG1pbmltdW0gaW4gdGhpcyBjYXNlIGFsd2F5cyBtZWFucyAnY2xvc2VzdCB0bworemVybyc7IHRoaXMgaXMgaW1wb3J0YW50IGZvciBuZWdhdGl2ZSB2b2x0YWdlIG1lYXN1cmVtZW50cy4gQWxsIHZvbHRhZ2UKK2lucHV0cyBjYW4gbWVhc3VyZSB2b2x0YWdlcyBiZXR3ZWVuIDAgYW5kIDIuNTUgdm9sdHMsIHdpdGggYSByZXNvbHV0aW9uCitvZiAwLjYyNSBtVi4KKworSWYgYW4gYWxhcm0gdHJpZ2dlcnMsIGl0IHdpbGwgcmVtYWluIHRyaWdnZXJlZCB1bnRpbCB0aGUgaGFyZHdhcmUgcmVnaXN0ZXIKK2lzIHJlYWQgYXQgbGVhc3Qgb25jZS4gVGhpcyBtZWFucyB0aGF0IHRoZSBjYXVzZSBmb3IgdGhlIGFsYXJtIG1heQorYWxyZWFkeSBoYXZlIGRpc2FwcGVhcmVkIGJ5IHRoZSB0aW1lIHRoZSBhbGFybSBpcyByZWFkLiBUaGUgZHJpdmVyCitjYWNoZXMgdGhlIGFsYXJtIHN0YXR1cyBmb3IgZWFjaCBzZW5zb3IgdW50aWwgaXQgaXMgYXQgbGVhc3QgcmVwb3J0ZWQKK29uY2UsIHRvIGVuc3VyZSB0aGF0IGFsYXJtcyBhcmUgcmVwb3J0ZWQgdG8gdXNlciBzcGFjZS4KKworVGhlIEFEQzEyOEQ4MTggb25seSB1cGRhdGVzIGl0cyB2YWx1ZXMgYXBwcm94aW1hdGVseSBvbmNlIHBlciBzZWNvbmQ7CityZWFkaW5nIGl0IG1vcmUgb2Z0ZW4gd2lsbCBkbyBubyBoYXJtLCBidXQgd2lsbCByZXR1cm4gJ29sZCcgdmFsdWVzLgorCitJbiBhZGRpdGlvbiB0byB0aGUgc2Nhbm5lZCBhZGRyZXNzIGxpc3QsIHRoZSBjaGlwIGNhbiBhbHNvIGJlIGNvbmZpZ3VyZWQgZm9yCithZGRyZXNzZXMgMHgzNSB0byAweDM3LiBUaG9zZSBhZGRyZXNzZXMgYXJlIG5vdCBzY2FubmVkLiBZb3UgaGF2ZSB0byBpbnN0YW50aWF0ZQordGhlIGRyaXZlciBleHBsaWNpdGx5IGlmIHRoZSBjaGlwIGlzIGNvbmZpZ3VyZWQgZm9yIGFueSBvZiB0aG9zZSBhZGRyZXNzZXMgaW4KK3lvdXIgc3lzdGVtLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9hZG0xMDIxIGIvRG9jdW1lbnRhdGlvbi9od21vbi9hZG0xMDIxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyYWQ5NmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2FkbTEwMjEKQEAgLTAsMCArMSwxMTMgQEAKK0tlcm5lbCBkcml2ZXIgYWRtMTAyMQorPT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBBbmFsb2cgRGV2aWNlcyBBRE0xMDIxCisgICAgUHJlZml4OiAnYWRtMTAyMScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MTggLSAweDFhLCAweDI5IC0gMHgyYiwgMHg0YyAtIDB4NGUKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgQW5hbG9nIERldmljZXMgd2Vic2l0ZQorICAqIEFuYWxvZyBEZXZpY2VzIEFETTEwMjFBL0FETTEwMjMKKyAgICBQcmVmaXg6ICdhZG0xMDIzJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgxOCAtIDB4MWEsIDB4MjkgLSAweDJiLCAweDRjIC0gMHg0ZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBBbmFsb2cgRGV2aWNlcyB3ZWJzaXRlCisgICogR2VuZXN5cyBMb2dpYyBHTDUyM1NNCisgICAgUHJlZml4OiAnZ2w1MjNzbScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MTggLSAweDFhLCAweDI5IC0gMHgyYiwgMHg0YyAtIDB4NGUKKyAgICBEYXRhc2hlZXQ6CisgICogTWF4aW0gTUFYMTYxNworICAgIFByZWZpeDogJ21heDE2MTcnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDE4IC0gMHgxYSwgMHgyOSAtIDB4MmIsIDB4NGMgLSAweDRlCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIE1heGltIHdlYnNpdGUKKyAgKiBNYXhpbSBNQVgxNjE3QQorICAgIFByZWZpeDogJ21heDE2MTdhJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgxOCAtIDB4MWEsIDB4MjkgLSAweDJiLCAweDRjIC0gMHg0ZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBNYXhpbSB3ZWJzaXRlCisgICogTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBMTTg0CisgICAgUHJlZml4OiAnbG04NCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MTggLSAweDFhLCAweDI5IC0gMHgyYiwgMHg0YyAtIDB4NGUKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciB3ZWJzaXRlCisgICogUGhpbGlwcyBORTE2MTcKKyAgICBQcmVmaXg6ICdtYXgxNjE3JyAocHJvYmFibHkgZGV0ZWN0ZWQgYXMgYSBtYXgxNjE3KQorICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgxOCAtIDB4MWEsIDB4MjkgLSAweDJiLCAweDRjIC0gMHg0ZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBQaGlsaXBzIHdlYnNpdGUKKyAgKiBQaGlsaXBzIE5FMTYxN0EKKyAgICBQcmVmaXg6ICdtYXgxNjE3JyAocHJvYmFibHkgZGV0ZWN0ZWQgYXMgYSBtYXgxNjE3KQorICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgxOCAtIDB4MWEsIDB4MjkgLSAweDJiLCAweDRjIC0gMHg0ZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBQaGlsaXBzIHdlYnNpdGUKKyAgKiBUSSBUSE1DMTAKKyAgICBQcmVmaXg6ICd0aG1jMTAnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDE4IC0gMHgxYSwgMHgyOSAtIDB4MmIsIDB4NGMgLSAweDRlCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIFRJIHdlYnNpdGUKKyAgKiBPbnNlbWkgTUMxMDY2CisgICAgUHJlZml4OiAnbWMxMDY2JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgxOCAtIDB4MWEsIDB4MjkgLSAweDJiLCAweDRjIC0gMHg0ZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBPbnNlbWkgd2Vic2l0ZQorCisKK0F1dGhvcnM6CisgICAgICAgIEZyb2RvIExvb2lqYWFyZCA8ZnJvZG9sQGRkcy5ubD4sCisgICAgICAgIFBoaWxpcCBFZGVsYnJvY2sgPHBoaWxAbmV0cm9lZGdlLmNvbT4KKworTW9kdWxlIFBhcmFtZXRlcnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKyogcmVhZF9vbmx5OiBpbnQKKyAgRG9uJ3Qgc2V0IGFueSB2YWx1ZXMsIHJlYWQgb25seSBtb2RlCisKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoZSBjaGlwcyBzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIgYXJlIHZlcnkgc2ltaWxhci4gVGhlIE1heGltIE1BWDE2MTcgaXMKK3RoZSBvbGRlc3Q7IGl0IGhhcyB0aGUgcHJvYmxlbSB0aGF0IGl0IGlzIG5vdCB2ZXJ5IHdlbGwgZGV0ZWN0YWJsZS4gVGhlCitNQVgxNjE3QSBzb2x2ZXMgdGhhdC4gVGhlIEFETTEwMjEgaXMgYSBzdHJhaWdodCBjbG9uZSBvZiB0aGUgTUFYMTYxN0EuCitEaXR0byBmb3IgdGhlIFRITUMxMC4gRnJvbSBoZXJlIG9uLCB3ZSB3aWxsIHJlZmVyIHRvIGFsbCB0aGVzZSBjaGlwcyBhcworQURNMTAyMS1jbG9uZXMuCisKK1RoZSBBRE0xMDIxIGFuZCBNQVgxNjE3QSByZXBvcnRzIGEgZGllIGNvZGUsIHdoaWNoIGlzIGEgc29ydCBvZiByZXZpc2lvbgorY29kZS4gVGhpcyBjYW4gaGVscCB1cyBwaW5wb2ludCBwcm9ibGVtczsgaXQgaXMgbm90IHZlcnkgdXNlZnVsCitvdGhlcndpc2UuCisKK0FETTEwMjEtY2xvbmVzIGltcGxlbWVudCB0d28gdGVtcGVyYXR1cmUgc2Vuc29ycy4gT25lIG9mIHRoZW0gaXMgaW50ZXJuYWwsCithbmQgbWVhc3VyZXMgdGhlIHRlbXBlcmF0dXJlIG9mIHRoZSBjaGlwIGl0c2VsZjsgdGhlIG90aGVyIGlzIGV4dGVybmFsIGFuZAoraXMgcmVhbGlzZWQgaW4gdGhlIGZvcm0gb2YgYSB0cmFuc2lzdG9yLWxpa2UgZGV2aWNlLiBBIHNwZWNpYWwgYWxhcm0KK2luZGljYXRlcyB3aGV0aGVyIHRoZSByZW1vdGUgc2Vuc29yIGlzIGNvbm5lY3RlZC4KKworRWFjaCBzZW5zb3IgaGFzIGl0cyBvd24gbG93IGFuZCBoaWdoIGxpbWl0cy4gV2hlbiB0aGV5IGFyZSBjcm9zc2VkLCB0aGUKK2NvcnJlc3BvbmRpbmcgYWxhcm0gaXMgc2V0IGFuZCByZW1haW5zIG9uIGFzIGxvbmcgYXMgdGhlIHRlbXBlcmF0dXJlIHN0YXlzCitvdXQgb2YgcmFuZ2UuIFRlbXBlcmF0dXJlcyBhcmUgbWVhc3VyZWQgaW4gZGVncmVlcyBDZWxzaXVzLiBNZWFzdXJlbWVudHMKK2FyZSBwb3NzaWJsZSBiZXR3ZWVuIC02NSBhbmQgKzEyNyBkZWdyZWVzLCB3aXRoIGEgcmVzb2x1dGlvbiBvZiBvbmUgZGVncmVlLgorCitJZiBhbiBhbGFybSB0cmlnZ2VycywgaXQgd2lsbCByZW1haW4gdHJpZ2dlcmVkIHVudGlsIHRoZSBoYXJkd2FyZSByZWdpc3RlcgoraXMgcmVhZCBhdCBsZWFzdCBvbmNlLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGNhdXNlIGZvciB0aGUgYWxhcm0gbWF5IGFscmVhZHkKK2hhdmUgZGlzYXBwZWFyZWQhCisKK1RoaXMgZHJpdmVyIG9ubHkgdXBkYXRlcyBpdHMgdmFsdWVzIGVhY2ggMS41IHNlY29uZHM7IHJlYWRpbmcgaXQgbW9yZSBvZnRlbgord2lsbCBkbyBubyBoYXJtLCBidXQgd2lsbCByZXR1cm4gJ29sZCcgdmFsdWVzLiBJdCBpcyBwb3NzaWJsZSB0byBtYWtlCitBRE0xMDIxLWNsb25lcyBkbyBmYXN0ZXIgbWVhc3VyZW1lbnRzLCBidXQgdGhlcmUgaXMgcmVhbGx5IG5vIGdvb2QgcmVhc29uCitmb3IgdGhhdC4KKworCitOZXRidXJzdC1iYXNlZCBYZW9uIHN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTb21lIFhlb24gcHJvY2Vzc29ycyBiYXNlZCBvbiB0aGUgTmV0YnVyc3QgKGVhcmx5IFBlbnRpdW0gNCwgZnJvbSAyMDAxIHRvCisyMDAzKSBtaWNyb2FyY2hpdGVjdHVyZSBoYWQgcmVhbCBNQVgxNjE3LCBBRE0xMDIxLCBvciBjb21wYXRpYmxlIGNoaXBzCit3aXRoaW4gdGhlbSwgd2l0aCB0d28gdGVtcGVyYXR1cmUgc2Vuc29ycy4gT3RoZXIgWGVvbiBwcm9jZXNzb3JzIG9mIHRoaXMKK2VyYSAod2l0aCA0MDAgTUh6IEZTQikgaGFkIGNoaXBzIHdpdGggb25seSBvbmUgdGVtcGVyYXR1cmUgc2Vuc29yLgorCitJZiB5b3UgaGF2ZSBzdWNoIGFuIG9sZCBYZW9uLCBhbmQgeW91IGdldCB0d28gdmFsaWQgdGVtcGVyYXR1cmVzIHdoZW4KK2xvYWRpbmcgdGhlIGFkbTEwMjEgbW9kdWxlLCB0aGVuIHRoaW5ncyBhcmUgZ29vZC4KKworSWYgbm90aGluZyBoYXBwZW5zIHdoZW4gbG9hZGluZyB0aGUgYWRtMTAyMSBtb2R1bGUsIGFuZCB5b3UgYXJlIGNlcnRhaW4KK3RoYXQgeW91ciBzcGVjaWZpYyBYZW9uIHByb2Nlc3NvciBtb2RlbCBpbmNsdWRlcyBjb21wYXRpYmxlIHNlbnNvcnMsIHlvdQord2lsbCBoYXZlIHRvIGV4cGxpY2l0bHkgaW5zdGFudGlhdGUgdGhlIHNlbnNvciBjaGlwcyBmcm9tIHVzZXItc3BhY2UuIFNlZQorbWV0aG9kIDQgaW4gRG9jdW1lbnRhdGlvbi9pMmMvaW5zdGFudGlhdGluZy1kZXZpY2VzLiBQb3NzaWJsZSBzbGF2ZQorYWRkcmVzc2VzIGFyZSAweDE4LCAweDFhLCAweDI5LCAweDJiLCAweDRjLCBvciAweDRlLiBJdCBpcyBsaWtlbHkgdGhhdAorb25seSB0ZW1wMiB3aWxsIGJlIGNvcnJlY3QgYW5kIHRlbXAxIHdpbGwgaGF2ZSB0byBiZSBpZ25vcmVkLgorCitQcmV2aW91cyBnZW5lcmF0aW9ucyBvZiB0aGUgWGVvbiBwcm9jZXNzb3IgKGJhc2VkIG9uIFBlbnRpdW0gSUkvSUlJKQorZGlkbid0IGhhdmUgdGhlc2Ugc2Vuc29ycy4gTmV4dCBnZW5lcmF0aW9ucyBvZiBYZW9uIHByb2Nlc3NvcnMgKDUzMyBNSHoKK0ZTQiBhbmQgZmFzdGVyKSBsb3N0IHRoZW0sIHVudGlsIHRoZSBDb3JlLWJhc2VkIGdlbmVyYXRpb24gd2hpY2gKK2ludHJvZHVjZWQgaW50ZWdyYXRlZCBkaWdpdGFsIHRoZXJtYWwgc2Vuc29ycy4gVGhlc2UgYXJlIHN1cHBvcnRlZCBieQordGhlIGNvcmV0ZW1wIGRyaXZlci4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vYWRtMTAyNSBiL0RvY3VtZW50YXRpb24vaHdtb24vYWRtMTAyNQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWYwNTA0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9hZG0xMDI1CkBAIC0wLDAgKzEsNTEgQEAKK0tlcm5lbCBkcml2ZXIgYWRtMTAyNQorPT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBBbmFsb2cgRGV2aWNlcyBBRE0xMDI1LCBBRE0xMDI1QQorICAgIFByZWZpeDogJ2FkbTEwMjUnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJjIC0gMHgyZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBBbmFsb2cgRGV2aWNlcyB3ZWJzaXRlCisgICogUGhpbGlwcyBORTE2MTkKKyAgICBQcmVmaXg6ICduZTE2MTknCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJjIC0gMHgyZAorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBQaGlsaXBzIHdlYnNpdGUKKworVGhlIE5FMTYxOSBwcmVzZW50cyBzb21lIGRpZmZlcmVuY2VzIHdpdGggdGhlIG9yaWdpbmFsIEFETTEwMjU6CisgICogT25seSB0d28gcG9zc2libGUgYWRkcmVzc2VzICgweDJjIC0gMHgyZCkuCisgICogTm8gdGVtcGVyYXR1cmUgb2Zmc2V0IHJlZ2lzdGVyLCBidXQgd2UgZG9uJ3QgdXNlIGl0IGFueXdheS4KKyAgKiBObyBJTlQgbW9kZSBmb3IgcGluIDE2LiBXZSBkb24ndCBwbGF5IHdpdGggaXQgYW55d2F5LgorCitBdXRob3JzOgorICAgICAgICBDaGVuLVl1YW4gV3UgPGd3dUBlc29mdC5jb20+LAorICAgICAgICBKZWFuIERlbHZhcmUgPGpkZWx2YXJlQHN1c2UuZGU+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCisoVGhpcyBpcyBmcm9tIEFuYWxvZyBEZXZpY2VzLikgVGhlIEFETTEwMjUgaXMgYSBjb21wbGV0ZSBzeXN0ZW0gaGFyZHdhcmUKK21vbml0b3IgZm9yIG1pY3JvcHJvY2Vzc29yLWJhc2VkIHN5c3RlbXMsIHByb3ZpZGluZyBtZWFzdXJlbWVudCBhbmQgbGltaXQKK2NvbXBhcmlzb24gb2YgdmFyaW91cyBzeXN0ZW0gcGFyYW1ldGVycy4gRml2ZSB2b2x0YWdlIG1lYXN1cmVtZW50IGlucHV0cworYXJlIHByb3ZpZGVkLCBmb3IgbW9uaXRvcmluZyArMi41ViwgKzMuM1YsICs1ViBhbmQgKzEyViBwb3dlciBzdXBwbGllcyBhbmQKK3RoZSBwcm9jZXNzb3IgY29yZSB2b2x0YWdlLiBUaGUgQURNMTAyNSBjYW4gbW9uaXRvciBhIHNpeHRoIHBvd2VyLXN1cHBseQordm9sdGFnZSBieSBtZWFzdXJpbmcgaXRzIG93biBWQ0MuIE9uZSBpbnB1dCAodHdvIHBpbnMpIGlzIGRlZGljYXRlZCB0byBhCityZW1vdGUgdGVtcGVyYXR1cmUtc2Vuc2luZyBkaW9kZSBhbmQgYW4gb24tY2hpcCB0ZW1wZXJhdHVyZSBzZW5zb3IgYWxsb3dzCithbWJpZW50IHRlbXBlcmF0dXJlIHRvIGJlIG1vbml0b3JlZC4KKworT25lIHNwZWNpZmljaXR5IG9mIHRoaXMgY2hpcCBpcyB0aGF0IHRoZSBwaW4gMTEgY2FuIGJlIGhhcmR3aXJlZCBpbiB0d28KK2RpZmZlcmVudCBtYW5uZXJzLiBJdCBjYW4gYWN0IGFzIHRoZSArMTJWIHBvd2VyLXN1cHBseSB2b2x0YWdlIGFuYWxvZworaW5wdXQsIG9yIGFzIHRoZSBhIGZpZnRoIGRpZ2l0YWwgZW50cnkgZm9yIHRoZSBWSUQgcmVhZGluZyAoYml0IDQpLiBJdCdzCitraW5kIG9mIHN0cmFuZ2Ugc2luY2UgYm90aCBhcmUgdXNlZnVsLCBhbmQgdGhlIHJlYXNvbiBmb3IgZGVzaWduaW5nIHRoZQorY2hpcCB0aGF0IHdheSBpcyBvYnNjdXJlIGF0IGxlYXN0IHRvIG1lLiBUaGUgYml0IDUgb2YgdGhlIGNvbmZpZ3VyYXRpb24KK3JlZ2lzdGVyIGNhbiBiZSB1c2VkIHRvIGRlZmluZSBob3cgdGhlIGNoaXAgaXMgaGFyZHdpcmVkLiBQbGVhc2Ugbm90ZSB0aGF0CitpdCBpcyBub3QgYSBjaG9pY2UgeW91IGhhdmUgdG8gbWFrZSBhcyB0aGUgdXNlci4gVGhlIGNob2ljZSB3YXMgYWxyZWFkeQorbWFkZSBieSB5b3VyIG1vdGhlcmJvYXJkJ3MgbWFrZXIuIElmIHRoZSBjb25maWd1cmF0aW9uIGJpdCBpc24ndCBzZXQKK3Byb3Blcmx5LCB5b3UnbGwgaGF2ZSBhIHdyb25nICsxMlYgcmVhZGluZyBvciBhIHdyb25nIFZJRCByZWFkaW5nLiBUaGUgd2F5Cit0aGUgZHJpdmVyIGhhbmRsZXMgdGhhdCBpcyB0byBwcmVzZXJ2ZSB0aGlzIGJpdCB0aHJvdWdoIHRoZSBpbml0aWFsaXphdGlvbgorcHJvY2VzcywgYXNzdW1pbmcgdGhhdCB0aGUgQklPUyBzZXQgaXQgdXAgcHJvcGVybHkgYmVmb3JlaGFuZC4gSWYgaXQgdHVybnMKK291dCBub3QgdG8gYmUgdHJ1ZSBpbiBzb21lIGNhc2VzLCB3ZSdsbCBwcm92aWRlIGEgbW9kdWxlIHBhcmFtZXRlciB0byBmb3JjZQorbW9kZXMuCisKK1RoaXMgZHJpdmVyIGFsc28gc3VwcG9ydHMgdGhlIEFETTEwMjVBLCB3aGljaCBkaWZmZXJzIGZyb20gdGhlIEFETTEwMjUKK29ubHkgaW4gdGhhdCBpdCBoYXMgIm9wZW4tZHJhaW4gVklEIGlucHV0cyB3aGlsZSB0aGUgQURNMTAyNSBoYXMgb24tY2hpcAorMTAwayBwdWxsLXVwcyBvbiB0aGUgVklEIGlucHV0cyIuIEl0IGRvZXNuJ3QgbWFrZSBhbnkgZGlmZmVyZW5jZSBmb3IgdXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2FkbTEwMjYgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2FkbTEwMjYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhmYWJlMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vYWRtMTAyNgpAQCAtMCwwICsxLDkzIEBACitLZXJuZWwgZHJpdmVyIGFkbTEwMjYKKz09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogQW5hbG9nIERldmljZXMgQURNMTAyNgorICAgIFByZWZpeDogJ2FkbTEwMjYnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJjLCAweDJkLCAweDJlCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIEFuYWxvZyBEZXZpY2VzIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cub25zZW1pLmNvbS9Qb3dlclNvbHV0aW9ucy9wcm9kdWN0LmRvP2lkPUFETTEwMjYKKworQXV0aG9yczoKKyAgICAgICAgUGhpbGlwIFBva29ybnkgPHBwb2tvcm55QHBlbmd1aW5jb21wdXRpbmcuY29tPiBmb3IgUGVuZ3VpbiBDb21wdXRpbmcKKyAgICAgICAgSnVzdGluIFRoaWVzc2VuIDxqdGhpZXNzZW5AcGVuZ3VpbmNvbXB1dGluZy5jb20+CisKK01vZHVsZSBQYXJhbWV0ZXJzCistLS0tLS0tLS0tLS0tLS0tLQorCisqIGdwaW9faW5wdXQ6IGludCBhcnJheSAobWluID0gMSwgbWF4ID0gMTcpCisgIExpc3Qgb2YgR1BJTyBwaW5zICgwLTE2KSB0byBwcm9ncmFtIGFzIGlucHV0cworKiBncGlvX291dHB1dDogaW50IGFycmF5IChtaW4gPSAxLCBtYXggPSAxNykKKyAgTGlzdCBvZiBHUElPIHBpbnMgKDAtMTYpIHRvIHByb2dyYW0gYXMgb3V0cHV0cworKiBncGlvX2ludmVydGVkOiBpbnQgYXJyYXkgKG1pbiA9IDEsIG1heCA9IDE3KQorICBMaXN0IG9mIEdQSU8gcGlucyAoMC0xNikgdG8gcHJvZ3JhbSBhcyBpbnZlcnRlZAorKiBncGlvX25vcm1hbDogaW50IGFycmF5IChtaW4gPSAxLCBtYXggPSAxNykKKyAgTGlzdCBvZiBHUElPIHBpbnMgKDAtMTYpIHRvIHByb2dyYW0gYXMgbm9ybWFsL25vbi1pbnZlcnRlZAorKiBncGlvX2ZhbjogaW50IGFycmF5IChtaW4gPSAxLCBtYXggPSA4KQorICBMaXN0IG9mIEdQSU8gcGlucyAoMC03KSB0byBwcm9ncmFtIGFzIGZhbiB0YWNocworCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBBbmFsb2cgRGV2aWNlcyBBRE0xMDI2LiBBbmFsb2cKK0RldmljZXMgY2FsbHMgaXQgYSAiY29tcGxldGUgdGhlcm1hbCBzeXN0ZW0gbWFuYWdlbWVudCBjb250cm9sbGVyLiIKKworVGhlIEFETTEwMjYgaW1wbGVtZW50cyB0aHJlZSAoMykgdGVtcGVyYXR1cmUgc2Vuc29ycywgMTcgdm9sdGFnZSBzZW5zb3JzLAorMTYgZ2VuZXJhbCBwdXJwb3NlIGRpZ2l0YWwgSS9PIGxpbmVzLCBlaWdodCAoOCkgZmFuIHNwZWVkIHNlbnNvcnMgKDgtYml0KSwKK2FuIGFuYWxvZyBvdXRwdXQgYW5kIGEgUFdNIG91dHB1dCBhbG9uZyB3aXRoIGxpbWl0LCBhbGFybSBhbmQgbWFzayBiaXRzIGZvcgorYWxsIG9mIHRoZSBhYm92ZS4gVGhlcmUgaXMgZXZlbiA4ayBieXRlcyBvZiBFRVBST00gbWVtb3J5IG9uIGNoaXAuCisKK1RlbXBlcmF0dXJlcyBhcmUgbWVhc3VyZWQgaW4gZGVncmVlcyBDZWxzaXVzLiBUaGVyZSBhcmUgdHdvIGV4dGVybmFsCitzZW5zb3IgaW5wdXRzIGFuZCBvbmUgaW50ZXJuYWwgc2Vuc29yLiBFYWNoIHNlbnNvciBoYXMgYSBoaWdoIGFuZCBsb3cKK2xpbWl0LiBJZiB0aGUgbGltaXQgaXMgZXhjZWVkZWQsIGFuIGludGVycnVwdCAoI1NNQkFMRVJUKSBjYW4gYmUKK2dlbmVyYXRlZC4gVGhlIGludGVycnVwdHMgY2FuIGJlIG1hc2tlZC4gSW4gYWRkaXRpb24sIHRoZXJlIGFyZSBvdmVyLXRlbXAKK2xpbWl0cyBmb3IgZWFjaCBzZW5zb3IuIElmIHRoaXMgbGltaXQgaXMgZXhjZWVkZWQsIHRoZSAjVEhFUk0gb3V0cHV0IHdpbGwKK2JlIGFzc2VydGVkLiBUaGUgY3VycmVudCB0ZW1wZXJhdHVyZSBhbmQgbGltaXRzIGhhdmUgYSByZXNvbHV0aW9uIG9mIDEKK2RlZ3JlZS4KKworRmFuIHJvdGF0aW9uIHNwZWVkcyBhcmUgcmVwb3J0ZWQgaW4gUlBNIChyb3RhdGlvbnMgcGVyIG1pbnV0ZSkgYnV0IG1lYXN1cmVkCitpbiBjb3VudHMgb2YgYSAyMi41a0h6IGludGVybmFsIGNsb2NrLiBFYWNoIGZhbiBoYXMgYSBoaWdoIGxpbWl0IHdoaWNoCitjb3JyZXNwb25kcyB0byBhIG1pbmltdW0gZmFuIHNwZWVkLiBJZiB0aGUgbGltaXQgaXMgZXhjZWVkZWQsIGFuIGludGVycnVwdAorY2FuIGJlIGdlbmVyYXRlZC4gRWFjaCBmYW4gY2FuIGJlIHByb2dyYW1tZWQgdG8gZGl2aWRlIHRoZSByZWZlcmVuY2UgY2xvY2sKK2J5IDEsIDIsIDQgb3IgOC4gTm90IGFsbCBSUE0gdmFsdWVzIGNhbiBhY2N1cmF0ZWx5IGJlIHJlcHJlc2VudGVkLCBzbyBzb21lCityb3VuZGluZyBpcyBkb25lLiBXaXRoIGEgZGl2aWRlciBvZiA4LCB0aGUgc2xvd2VzdCBtZWFzdXJhYmxlIHNwZWVkIG9mIGEKK3R3byBwdWxzZSBwZXIgcmV2b2x1dGlvbiBmYW4gaXMgNjYxIFJQTS4KKworVGhlcmUgYXJlIDE3IHZvbHRhZ2Ugc2Vuc29ycy4gQW4gYWxhcm0gaXMgdHJpZ2dlcmVkIGlmIHRoZSB2b2x0YWdlIGhhcworY3Jvc3NlZCBhIHByb2dyYW1tYWJsZSBtaW5pbXVtIG9yIG1heGltdW0gbGltaXQuIE5vdGUgdGhhdCBtaW5pbXVtIGluIHRoaXMKK2Nhc2UgYWx3YXlzIG1lYW5zICdjbG9zZXN0IHRvIHplcm8nOyB0aGlzIGlzIGltcG9ydGFudCBmb3IgbmVnYXRpdmUgdm9sdGFnZQorbWVhc3VyZW1lbnRzLiBTZXZlcmFsIGlucHV0cyBoYXZlIGludGVncmF0ZWQgYXR0ZW51YXRvcnMgc28gdGhleSBjYW4gbWVhc3VyZQoraGlnaGVyIHZvbHRhZ2VzIGRpcmVjdGx5LiAzLjNWLCA1ViwgMTJWLCAtMTJWIGFuZCBiYXR0ZXJ5IHZvbHRhZ2UgYWxsIGhhdmUKK2RlZGljYXRlZCBpbnB1dHMuIFRoZXJlIGFyZSBzZXZlcmFsIGlucHV0cyBzY2FsZWQgdG8gMC0zViBmdWxsLXNjYWxlIHJhbmdlCitmb3IgU0NTSSB0ZXJtaW5hdG9yIHBvd2VyLiBUaGUgcmVtYWluaW5nIGlucHV0cyBhcmUgbm90IHNjYWxlZCBhbmQgaGF2ZQorYSAwLTIuNVYgZnVsbC1zY2FsZSByYW5nZS4gQSAyLjVWIG9yIDEuODJWIHJlZmVyZW5jZSB2b2x0YWdlIGlzIHByb3ZpZGVkCitmb3IgbmVnYXRpdmUgdm9sdGFnZSBtZWFzdXJlbWVudHMuCisKK0lmIGFuIGFsYXJtIHRyaWdnZXJzLCBpdCB3aWxsIHJlbWFpbiB0cmlnZ2VyZWQgdW50aWwgdGhlIGhhcmR3YXJlIHJlZ2lzdGVyCitpcyByZWFkIGF0IGxlYXN0IG9uY2UuIFRoaXMgbWVhbnMgdGhhdCB0aGUgY2F1c2UgZm9yIHRoZSBhbGFybSBtYXkgYWxyZWFkeQoraGF2ZSBkaXNhcHBlYXJlZCEgTm90ZSB0aGF0IGluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBhbGwgaGFyZHdhcmUKK3JlZ2lzdGVycyBhcmUgcmVhZCB3aGVuZXZlciBhbnkgZGF0YSBpcyByZWFkICh1bmxlc3MgaXQgaXMgbGVzcyB0aGFuIDIuMAorc2Vjb25kcyBzaW5jZSB0aGUgbGFzdCB1cGRhdGUpLiBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiBlYXNpbHkgbWlzcworb25jZS1vbmx5IGFsYXJtcy4KKworVGhlIEFETTEwMjYgbWVhc3VyZXMgY29udGludW91c2x5LiBBbmFsb2cgaW5wdXRzIGFyZSBtZWFzdXJlZCBhYm91dCA0Cit0aW1lcyBhIHNlY29uZC4gRmFuIHNwZWVkIG1lYXN1cmVtZW50IHRpbWUgZGVwZW5kcyBvbiBmYW4gc3BlZWQgYW5kCitkaXZpc29yLiBJdCBjYW4gdGFrZSBhcyBsb25nIGFzIDEuNSBzZWNvbmRzIHRvIG1lYXN1cmUgYWxsIGZhbiBzcGVlZHMuCisKK1RoZSBBRE0xMDI2IGhhcyB0aGUgYWJpbGl0eSB0byBhdXRvbWF0aWNhbGx5IGNvbnRyb2wgZmFuIHNwZWVkIGJhc2VkIG9uIHRoZQordGVtcGVyYXR1cmUgc2Vuc29yIGlucHV0cy4gQm90aCB0aGUgUFdNIG91dHB1dCBhbmQgdGhlIERBQyBvdXRwdXQgY2FuIGJlCit1c2VkIHRvIGNvbnRyb2wgZmFuIHNwZWVkLiBVc3VhbGx5IG9ubHkgb25lIG9mIHRoZXNlIHR3byBvdXRwdXRzIHdpbGwgYmUKK3VzZWQuIFdyaXRlIHRoZSBtaW5pbXVtIFBXTSBvciBEQUMgdmFsdWUgdG8gdGhlIGFwcHJvcHJpYXRlIGNvbnRyb2wKK3JlZ2lzdGVyLiBUaGVuIHNldCB0aGUgbG93IHRlbXBlcmF0dXJlIGxpbWl0IGluIHRoZSB0bWluIHZhbHVlcyBmb3IgZWFjaAordGVtcGVyYXR1cmUgc2Vuc29yLiBUaGUgcmFuZ2Ugb2YgY29udHJvbCBpcyBmaXhlZCBhdCAyMCDCsEMsIGFuZCB0aGUKK2xhcmdlc3QgZGlmZmVyZW5jZSBiZXR3ZWVuIGN1cnJlbnQgYW5kIHRtaW4gb2YgdGhlIHRlbXBlcmF0dXJlIHNlbnNvcnMgc2V0cwordGhlIGNvbnRyb2wgb3V0cHV0LiBTZWUgdGhlIGRhdGFzaGVldCBmb3Igc2V2ZXJhbCBleGFtcGxlIGNpcmN1aXRzIGZvcgorY29udHJvbGxpbmcgZmFuIHNwZWVkIHdpdGggdGhlIFBXTSBhbmQgREFDIG91dHB1dHMuIFRoZSBmYW4gc3BlZWQgc2Vuc29ycworZG8gbm90IGhhdmUgUFdNIGNvbXBlbnNhdGlvbiwgc28gaXQgaXMgcHJvYmFibHkgYmVzdCB0byBjb250cm9sIHRoZSBmYW4KK3ZvbHRhZ2UgZnJvbSB0aGUgcG93ZXIgbGVhZCByYXRoZXIgdGhhbiBvbiB0aGUgZ3JvdW5kIGxlYWQuCisKK1RoZSBkYXRhc2hlZXQgc2hvd3MgYW4gZXhhbXBsZSBhcHBsaWNhdGlvbiB3aXRoIFZJRCBzaWduYWxzIGF0dGFjaGVkIHRvCitHUElPIGxpbmVzLiBVbmZvcnR1bmF0ZWx5LCB0aGUgY2hpcCBtYXkgbm90IGJlIGNvbm5lY3RlZCB0byB0aGUgVklEIGxpbmVzCitpbiB0aGlzIHdheS4gVGhlIGRyaXZlciBhc3N1bWVzIHRoYXQgdGhlIGNoaXBzICppcyogY29ubmVjdGVkIHRoaXMgd2F5IHRvCitnZXQgYSBWSUQgdm9sdGFnZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vYWRtMTAzMSBiL0RvY3VtZW50YXRpb24vaHdtb24vYWRtMTAzMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTQzMTE3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9hZG0xMDMxCkBAIC0wLDAgKzEsMzUgQEAKK0tlcm5lbCBkcml2ZXIgYWRtMTAzMQorPT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBBbmFsb2cgRGV2aWNlcyBBRE0xMDMwCisgICAgUHJlZml4OiAnYWRtMTAzMCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MmMgdG8gMHgyZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBBbmFsb2cgRGV2aWNlcyB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFuYWxvZy5jb20vZW4vcHJvZC8wJTJDMjg3NyUyQ0FETTEwMzAlMkMwMC5odG1sCisKKyAgKiBBbmFsb2cgRGV2aWNlcyBBRE0xMDMxCisgICAgUHJlZml4OiAnYWRtMTAzMScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MmMgdG8gMHgyZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBBbmFsb2cgRGV2aWNlcyB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFuYWxvZy5jb20vZW4vcHJvZC8wJTJDMjg3NyUyQ0FETTEwMzElMkMwMC5odG1sCisKK0F1dGhvcnM6CisgICAgICAgIEFsZXhhbmRyZSBkJ0FsdG9uIDxhbGV4QGFsZXhkYWx0b24ub3JnPgorICAgICAgICBKZWFuIERlbHZhcmUgPGpkZWx2YXJlQHN1c2UuZGU+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGUgQURNMTAzMCBhbmQgQURNMTAzMSBhcmUgZGlnaXRhbCB0ZW1wZXJhdHVyZSBzZW5zb3JzIGFuZCBmYW4gY29udHJvbGxlcnMuCitUaGV5IHNlbnNlIHRoZWlyIG93biB0ZW1wZXJhdHVyZSBhcyB3ZWxsIGFzIHRoZSB0ZW1wZXJhdHVyZSBvZiB1cCB0byBvbmUKKyhBRE0xMDMwKSBvciB0d28gKEFETTEwMzEpIGV4dGVybmFsIGRpb2Rlcy4KKworQWxsIHRlbXBlcmF0dXJlIHZhbHVlcyBhcmUgZ2l2ZW4gaW4gZGVncmVlcyBDZWxzaXVzLiBSZXNvbHV0aW9uIGlzIDAuNQorZGVncmVlIGZvciB0aGUgbG9jYWwgdGVtcGVyYXR1cmUsIDAuMTI1IGRlZ3JlZSBmb3IgdGhlIHJlbW90ZSB0ZW1wZXJhdHVyZXMuCisKK0VhY2ggdGVtcGVyYXR1cmUgY2hhbm5lbCBoYXMgaXRzIG93biBoaWdoIGFuZCBsb3cgbGltaXRzLCBwbHVzIGEgY3JpdGljYWwKK2xpbWl0LgorCitUaGUgQURNMTAzMCBtb25pdG9ycyBhIHNpbmdsZSBmYW4gc3BlZWQsIHdoaWxlIHRoZSBBRE0xMDMxIG1vbml0b3JzIHVwIHRvCit0d28uIEVhY2ggZmFuIGNoYW5uZWwgaGFzIGl0cyBvd24gbG93IHNwZWVkIGxpbWl0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9hZG0xMjc1IGIvRG9jdW1lbnRhdGlvbi9od21vbi9hZG0xMjc1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2OTcyMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2FkbTEyNzUKQEAgLTAsMCArMSw5OCBAQAorS2VybmVsIGRyaXZlciBhZG0xMjc1Cis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIEFuYWxvZyBEZXZpY2VzIEFETTEwNzUKKyAgICBQcmVmaXg6ICdhZG0xMDc1JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OiB3d3cuYW5hbG9nLmNvbS9zdGF0aWMvaW1wb3J0ZWQtZmlsZXMvZGF0YV9zaGVldHMvQURNMTA3NS5wZGYKKyAgKiBBbmFsb2cgRGV2aWNlcyBBRE0xMjc1CisgICAgUHJlZml4OiAnYWRtMTI3NScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgIERhdGFzaGVldDogd3d3LmFuYWxvZy5jb20vc3RhdGljL2ltcG9ydGVkLWZpbGVzL2RhdGFfc2hlZXRzL0FETTEyNzUucGRmCisgICogQW5hbG9nIERldmljZXMgQURNMTI3NgorICAgIFByZWZpeDogJ2FkbTEyNzYnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IC0KKyAgICBEYXRhc2hlZXQ6IHd3dy5hbmFsb2cuY29tL3N0YXRpYy9pbXBvcnRlZC1maWxlcy9kYXRhX3NoZWV0cy9BRE0xMjc2LnBkZgorICAqIEFuYWxvZyBEZXZpY2VzIEFETTEyOTMvQURNMTI5NAorICAgIFByZWZpeDogJ2FkbTEyOTMnLCAnYWRtMTI5NCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5hbmFsb2cuY29tL21lZGlhL2VuL3RlY2huaWNhbC1kb2N1bWVudGF0aW9uL2RhdGEtc2hlZXRzL0FETTEyOTNfMTI5NC5wZGYKKworQXV0aG9yOiBHdWVudGVyIFJvZWNrIDxsaW51eEByb2Vjay11cy5uZXQ+CisKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIHN1cHBvcnRzIGhhcmR3YXJlIG1vbnRvcmluZyBmb3IgQW5hbG9nIERldmljZXMgQURNMTA3NSwgQURNMTI3NSwKK0FETTEyNzYsIEFETTEyOTMsIGFuZCBBRE0xMjk0IEhvdC1Td2FwIENvbnRyb2xsZXIgYW5kIERpZ2l0YWwgUG93ZXIgTW9uaXRvcnMuCisKK0FETTEwNzUsIEFETTEyNzUsIEFETTEyNzYsIEFETTEyOTMsIGFuZCBBRE0xMjk0IGFyZSBob3Qtc3dhcCBjb250cm9sbGVycyB0aGF0CithbGxvdyBhIGNpcmN1aXQgYm9hcmQgdG8gYmUgcmVtb3ZlZCBmcm9tIG9yIGluc2VydGVkIGludG8gYSBsaXZlIGJhY2twbGFuZS4KK1RoZXkgYWxzbyBmZWF0dXJlIGN1cnJlbnQgYW5kIHZvbHRhZ2UgcmVhZGJhY2sgdmlhIGFuIGludGVncmF0ZWQgMTIKK2JpdCBhbmFsb2ctdG8tZGlnaXRhbCBjb252ZXJ0ZXIgKEFEQyksIGFjY2Vzc2VkIHVzaW5nIGEgUE1CdXMgaW50ZXJmYWNlLgorCitUaGUgZHJpdmVyIGlzIGEgY2xpZW50IGRyaXZlciB0byB0aGUgY29yZSBQTUJ1cyBkcml2ZXIuIFBsZWFzZSBzZWUKK0RvY3VtZW50YXRpb24vaHdtb24vcG1idXMgZm9yIGRldGFpbHMgb24gUE1CdXMgY2xpZW50IGRyaXZlcnMuCisKKworVXNhZ2UgTm90ZXMKKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGRvZXMgbm90IGF1dG8tZGV0ZWN0IGRldmljZXMuIFlvdSB3aWxsIGhhdmUgdG8gaW5zdGFudGlhdGUgdGhlCitkZXZpY2VzIGV4cGxpY2l0bHkuIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pMmMvaW5zdGFudGlhdGluZy1kZXZpY2VzIGZvcgorZGV0YWlscy4KKworVGhlIEFETTEwNzUsIHVubGlrZSBtYW55IG90aGVyIFBNQnVzIGRldmljZXMsIGRvZXMgbm90IHN1cHBvcnQgaW50ZXJuYWwgdm9sdGFnZQorb3IgY3VycmVudCBzY2FsaW5nLiBSZXBvcnRlZCB2b2x0YWdlcywgY3VycmVudHMsIGFuZCBwb3dlciBhcmUgcmF3IG1lYXN1cmVtZW50cywKK2FuZCB3aWxsIHR5cGljYWxseSBoYXZlIHRvIGJlIHNjYWxlZC4KKworCitQbGF0Zm9ybSBkYXRhIHN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZHJpdmVyIHN1cHBvcnRzIHN0YW5kYXJkIFBNQnVzIGRyaXZlciBwbGF0Zm9ybSBkYXRhLiBQbGVhc2Ugc2VlCitEb2N1bWVudGF0aW9uL2h3bW9uL3BtYnVzIGZvciBkZXRhaWxzLgorCisKK1N5c2ZzIGVudHJpZXMKKy0tLS0tLS0tLS0tLS0KKworVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIGFyZSBzdXBwb3J0ZWQuIExpbWl0cyBhcmUgcmVhZC13cml0ZSwgaGlzdG9yeSByZXNldAorYXR0cmlidXRlcyBhcmUgd3JpdGUtb25seSwgYWxsIG90aGVyIGF0dHJpYnV0ZXMgYXJlIHJlYWQtb25seS4KKworaW5YX2xhYmVsCQkidmluMSIgb3IgInZvdXQxIiBkZXBlbmRpbmcgb24gY2hpcCB2YXJpYW50IGFuZAorCQkJY29uZmlndXJhdGlvbi4gT24gQURNMTA3NSwgQURNMTI5MywgYW5kIEFETTEyOTQsCisJCQl2b3V0MSByZXBvcnRzIHRoZSB2b2x0YWdlIG9uIHRoZSBWQVVYIHBpbi4KK2luWF9pbnB1dAkJTWVhc3VyZWQgdm9sdGFnZS4KK2luWF9taW4JCQlNaW5pbXVtIFZvbHRhZ2UuCitpblhfbWF4CQkJTWF4aW11bSB2b2x0YWdlLgoraW5YX21pbl9hbGFybQkJVm9sdGFnZSBsb3cgYWxhcm0uCitpblhfbWF4X2FsYXJtCQlWb2x0YWdlIGhpZ2ggYWxhcm0uCitpblhfaGlnaGVzdAkJSGlzdG9yaWNhbCBtYXhpbXVtIHZvbHRhZ2UuCitpblhfcmVzZXRfaGlzdG9yeQlXcml0ZSBhbnkgdmFsdWUgdG8gcmVzZXQgaGlzdG9yeS4KKworY3VycjFfbGFiZWwJCSJpb3V0MSIKK2N1cnIxX2lucHV0CQlNZWFzdXJlZCBjdXJyZW50LgorY3VycjFfbWF4CQlNYXhpbXVtIGN1cnJlbnQuCitjdXJyMV9tYXhfYWxhcm0JCUN1cnJlbnQgaGlnaCBhbGFybS4KK2N1cnIxX2xjcml0CQlDcml0aWNhbCBtaW5pbXVtIGN1cnJlbnQuIERlcGVuZGluZyBvbiB0aGUgY2hpcAorCQkJY29uZmlndXJhdGlvbiwgZWl0aGVyIGN1cnIxX2xjcml0IG9yIGN1cnIxX2NyaXQgaXMKKwkJCXN1cHBvcnRlZCwgYnV0IG5vdCBib3RoLgorY3VycjFfbGNyaXRfYWxhcm0JQ3JpdGljYWwgY3VycmVudCBsb3cgYWxhcm0uCitjdXJyMV9jcml0CQlDcml0aWNhbCBtYXhpbXVtIGN1cnJlbnQuIERlcGVuZGluZyBvbiB0aGUgY2hpcAorCQkJY29uZmlndXJhdGlvbiwgZWl0aGVyIGN1cnIxX2xjcml0IG9yIGN1cnIxX2NyaXQgaXMKKwkJCXN1cHBvcnRlZCwgYnV0IG5vdCBib3RoLgorY3VycjFfY3JpdF9hbGFybQlDcml0aWNhbCBjdXJyZW50IGhpZ2ggYWxhcm0uCitjdXJyMV9oaWdoZXN0CQlIaXN0b3JpY2FsIG1heGltdW0gY3VycmVudC4KK2N1cnIxX3Jlc2V0X2hpc3RvcnkJV3JpdGUgYW55IHZhbHVlIHRvIHJlc2V0IGhpc3RvcnkuCisKK3Bvd2VyMV9sYWJlbAkJInBpbjEiCitwb3dlcjFfaW5wdXQJCUlucHV0IHBvd2VyLgorcG93ZXIxX2lucHV0X2xvd2VzdAlMb3dlc3Qgb2JzZXJ2ZWQgaW5wdXQgcG93ZXIuIEFETTEyOTMgYW5kIEFETTEyOTQgb25seS4KK3Bvd2VyMV9pbnB1dF9oaWdoZXN0CUhpZ2hlc3Qgb2JzZXJ2ZWQgaW5wdXQgcG93ZXIuCitwb3dlcjFfcmVzZXRfaGlzdG9yeQlXcml0ZSBhbnkgdmFsdWUgdG8gcmVzZXQgaGlzdG9yeS4KKworCQkJUG93ZXIgYXR0cmlidXRlcyBhcmUgc3VwcG9ydGVkIG9uIEFETTEwNzUsIEFETTEyNzYsCisJCQlBRE0xMjkzLCBhbmQgQURNMTI5NC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vYWRtOTI0MCBiL0RvY3VtZW50YXRpb24vaHdtb24vYWRtOTI0MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjE3NGZjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9hZG05MjQwCkBAIC0wLDAgKzEsMTc3IEBACitLZXJuZWwgZHJpdmVyIGFkbTkyNDAKKz09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogQW5hbG9nIERldmljZXMgQURNOTI0MAorICAgIFByZWZpeDogJ2FkbTkyNDAnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJjIC0gMHgyZgorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBBbmFsb2cgRGV2aWNlcyB3ZWJzaXRlCisgICAgaHR0cDovL3d3dy5hbmFsb2cuY29tL1VwbG9hZGVkRmlsZXMvRGF0YV9TaGVldHMvNzk4NTc3NzhBRE05MjQwXzAucGRmCisKKyAgKiBEYWxsYXMgU2VtaWNvbmR1Y3RvciBEUzE3ODAKKyAgICBQcmVmaXg6ICdkczE3ODAnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJjIC0gMHgyZgorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBEYWxsYXMgU2VtaWNvbmR1Y3RvciAoTWF4aW0pIHdlYnNpdGUKKyAgICBodHRwOi8vcGRmc2Vydi5tYXhpbS1pYy5jb20vZW4vZHMvRFMxNzgwLnBkZgorCisgICogTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBMTTgxCisgICAgUHJlZml4OiAnbG04MScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MmMgLSAweDJmCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3Igd2Vic2l0ZQorICAgIGh0dHA6Ly93d3cubmF0aW9uYWwuY29tL2RzLmNnaS9MTS9MTTgxLnBkZgorCitBdXRob3JzOgorICAgIEZyb2RvIExvb2lqYWFyZCA8ZnJvZG9sQGRkcy5ubD4sCisgICAgUGhpbGlwIEVkZWxicm9jayA8cGhpbEBuZXRyb2VkZ2UuY29tPiwKKyAgICBNaWNoaWVsIFJvb2sgPG1pY2hpZWxAZ3JlbmRlbHByb2plY3Qubmw+LAorICAgIEdyYW50IENvYWR5IDxnY29hZHkubGtAZ21haWwuY29tPiB3aXRoIGd1aWRhbmNlCisgICAgICAgIGZyb20gSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmRlPgorCitJbnRlcmZhY2UKKy0tLS0tLS0tLQorVGhlIEkyQyBhZGRyZXNzZXMgbGlzdGVkIGFib3ZlIGFzc3VtZSBCSU9TIGhhcyBub3QgY2hhbmdlZCB0aGUKK2NoaXAgTVNCIDUtYml0IGFkZHJlc3MuIEVhY2ggY2hpcCByZXBvcnRzIGEgdW5pcXVlIG1hbnVmYWN0dXJlcgoraWRlbnRpZmljYXRpb24gY29kZSBhcyB3ZWxsIGFzIHRoZSBjaGlwIHJldmlzaW9uL3N0ZXBwaW5nIGxldmVsLgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KK1tGcm9tIEFETTkyNDBdIFRoZSBBRE05MjQwIGlzIGEgY29tcGxldGUgc3lzdGVtIGhhcmR3YXJlIG1vbml0b3IgZm9yCittaWNyb3Byb2Nlc3Nvci1iYXNlZCBzeXN0ZW1zLCBwcm92aWRpbmcgbWVhc3VyZW1lbnQgYW5kIGxpbWl0IGNvbXBhcmlzb24KK29mIHVwIHRvIGZvdXIgcG93ZXIgc3VwcGxpZXMgYW5kIHR3byBwcm9jZXNzb3IgY29yZSB2b2x0YWdlcywgcGx1cwordGVtcGVyYXR1cmUsIHR3byBmYW4gc3BlZWRzIGFuZCBjaGFzc2lzIGludHJ1c2lvbi4gTWVhc3VyZWQgdmFsdWVzIGNhbgorYmUgcmVhZCBvdXQgdmlhIGFuIEkyQy1jb21wYXRpYmxlIHNlcmlhbCBTeXN0ZW0gTWFuYWdlbWVudCBCdXMsIGFuZCB2YWx1ZXMKK2ZvciBsaW1pdCBjb21wYXJpc29ucyBjYW4gYmUgcHJvZ3JhbW1lZCBpbiBvdmVyIHRoZSBzYW1lIHNlcmlhbCBidXMuIFRoZQoraGlnaCBzcGVlZCBzdWNjZXNzaXZlIGFwcHJveGltYXRpb24gQURDIGFsbG93cyBmcmVxdWVudCBzYW1wbGluZyBvZiBhbGwKK2FuYWxvZyBjaGFubmVscyB0byBlbnN1cmUgYSBmYXN0IGludGVycnVwdCByZXNwb25zZSB0byBhbnkgb3V0LW9mLWxpbWl0CittZWFzdXJlbWVudC4KKworVGhlIEFETTkyNDAsIERTMTc4MCBhbmQgTE04MSBhcmUgcmVnaXN0ZXIgY29tcGF0aWJsZSwgdGhlIGZvbGxvd2luZworZGV0YWlscyBhcmUgY29tbW9uIHRvIHRoZSB0aHJlZSBjaGlwcy4gQ2hpcCBkaWZmZXJlbmNlcyBhcmUgZGVzY3JpYmVkCithZnRlciB0aGlzIHNlY3Rpb24uCisKKworTWVhc3VyZW1lbnRzCistLS0tLS0tLS0tLS0KK1RoZSBtZWFzdXJlbWVudCBjeWNsZQorCitUaGUgYWRtOTI0MCBkcml2ZXIgd2lsbCB0YWtlIGEgbWVhc3VyZW1lbnQgcmVhZGluZyBubyBmYXN0ZXIgdGhhbiBvbmNlCitlYWNoIHR3byBzZWNvbmRzLiBVc2VyLXNwYWNlIG1heSByZWFkIHN5c2ZzIGludGVyZmFjZSBmYXN0ZXIgdGhhbiB0aGUKK21lYXN1cmVtZW50IHVwZGF0ZSByYXRlIGFuZCB3aWxsIHJlY2VpdmUgY2FjaGVkIGRhdGEgZnJvbSB0aGUgbW9zdAorcmVjZW50IG1lYXN1cmVtZW50LgorCitBRE05MjQwIGhhcyBhIHZlcnkgZmFzdCAzMjB1cyB0ZW1wZXJhdHVyZSBhbmQgdm9sdGFnZSBtZWFzdXJlbWVudCBjeWNsZQord2l0aCBpbmRlcGVuZGVudCBmYW4gc3BlZWQgbWVhc3VyZW1lbnQgY3ljbGVzIGNvdW50aW5nIGFsdGVybmF0aW5nIHJpc2luZworZWRnZXMgb2YgdGhlIGZhbiB0YWNobyBpbnB1dHMuCisKK0RTMTc4MCBtZWFzdXJlbWVudCBjeWNsZSBpcyBhYm91dCBvbmNlIHBlciBzZWNvbmQgaW5jbHVkaW5nIGZhbiBzcGVlZC4KKworTE04MSBtZWFzdXJlbWVudCBjeWNsZSBpcyBhYm91dCBvbmNlIHBlciA0MDBtcyBpbmNsdWRpbmcgZmFuIHNwZWVkLgorVGhlIExNODEgMTItYml0IGV4dGVuZGVkIHRlbXBlcmF0dXJlIG1lYXN1cmVtZW50IG1vZGUgaXMgbm90IHN1cHBvcnRlZC4KKworVGVtcGVyYXR1cmUKKy0tLS0tLS0tLS0tCitPbiBjaGlwIHRlbXBlcmF0dXJlIGlzIHJlcG9ydGVkIGFzIGRlZ3JlZXMgQ2Vsc2l1cyBhcyA5LWJpdCBzaWduZWQgZGF0YQord2l0aCByZXNvbHV0aW9uIG9mIDAuNSBkZWdyZWVzIENlbHNpdXMuIEhpZ2ggYW5kIGxvdyB0ZW1wZXJhdHVyZSBsaW1pdHMKK2FyZSA4LWJpdCBzaWduZWQgZGF0YSB3aXRoIHJlc29sdXRpb24gb2Ygb25lIGRlZ3JlZSBDZWxzaXVzLgorCitUZW1wZXJhdHVyZSBhbGFybSBpcyBhc3NlcnRlZCBvbmNlIHRoZSB0ZW1wZXJhdHVyZSBleGNlZWRzIHRoZSBoaWdoIGxpbWl0LAorYW5kIGlzIGNsZWFyZWQgd2hlbiB0aGUgdGVtcGVyYXR1cmUgZmFsbHMgYmVsb3cgdGhlIHRlbXAxX21heF9oeXN0IHZhbHVlLgorCitGYW4gU3BlZWQKKy0tLS0tLS0tLQorVHdvIGZhbiB0YWNobyBpbnB1dHMgYXJlIHByb3ZpZGVkLCB0aGUgQURNOTI0MCBnYXRlcyBhbiBpbnRlcm5hbCAyMi41a0h6CitjbG9jayB2aWEgYSBkaXZpZGVyIHRvIGFuIDgtYml0IGNvdW50ZXIuIEZhbiBzcGVlZCAocnBtKSBpcyBjYWxjdWxhdGVkIGJ5OgorCitycG0gPSAoMjI1MDAgKiA2MCkgLyAoY291bnQgKiBkaXZpZGVyKQorCitBdXRvbWF0aWMgZmFuIGNsb2NrIGRpdmlkZXIKKworICAqIFVzZXIgc2V0cyAwIHRvIGZhbl9taW4gbGltaXQKKyAgICAtIGxvdyBzcGVlZCBhbGFybSBpcyBkaXNhYmxlZAorICAgIC0gZmFuIGNsb2NrIGRpdmlkZXIgbm90IGNoYW5nZWQKKyAgICAtIGF1dG8gZmFuIGNsb2NrIGFkanVzdGVyIGVuYWJsZWQgZm9yIHZhbGlkIGZhbiBzcGVlZCByZWFkaW5nCisKKyAgKiBVc2VyIHNldHMgZmFuX21pbiBsaW1pdCB0b28gbG93CisgICAgLSBsb3cgc3BlZWQgYWxhcm0gaXMgZW5hYmxlZAorICAgIC0gZmFuIGNsb2NrIGRpdmlkZXIgc2V0IHRvIG1heAorICAgIC0gZmFuX21pbiBzZXQgdG8gcmVnaXN0ZXIgdmFsdWUgMjU0IHdoaWNoIGNvcnJlc3BvbmRzCisgICAgICB0byA2NjQgcnBtIG9uIGFkbTkyNDAKKyAgICAtIGxvdyBzcGVlZCBhbGFybSB3aWxsIGJlIGFzc2VydGVkIGlmIGZhbiBzcGVlZCBpcworICAgICAgbGVzcyB0aGFuIG1pbmltdW0gbWVhc3VyYWJsZSBzcGVlZAorICAgIC0gYXV0byBmYW4gY2xvY2sgYWRqdXN0ZXIgZGlzYWJsZWQKKworICAqIFVzZXIgc2V0cyByZWFzb25hYmxlIGZhbiBzcGVlZAorICAgIC0gbG93IHNwZWVkIGFsYXJtIGlzIGVuYWJsZWQKKyAgICAtIGZhbiBjbG9jayBkaXZpZGVyIHNldCB0byBzdWl0IGZhbl9taW4KKyAgICAtIGF1dG8gZmFuIGNsb2NrIGFkanVzdGVyIGVuYWJsZWQ6IGFkanVzdHMgZmFuX21pbgorCisgICogVXNlciBzZXRzIHVucmVhc29uYWJseSBoaWdoIGxvdyBmYW4gc3BlZWQgbGltaXQKKyAgICAtIHJlc29sdXRpb24gb2YgdGhlIGxvdyBzcGVlZCBsaW1pdCBtYXkgYmUgcmVkdWNlZAorICAgIC0gYWxhcm0gd2lsbCBiZSBhc3NlcnRlZAorICAgIC0gYXV0byBmYW4gY2xvY2sgYWRqdXN0ZXIgZW5hYmxlZDogYWRqdXN0cyBmYW5fbWluCisKKyAgICAqIGZhbiBzcGVlZCBtYXkgYmUgZGlzcGxheWVkIGFzIHplcm8gdW50aWwgdGhlIGF1dG8gZmFuIGNsb2NrIGRpdmlkZXIKKyAgICAgIGFkanVzdGVyIGJyaW5ncyBmYW4gc3BlZWQgY2xvY2sgZGl2aWRlciBiYWNrIGludG8gY2hpcCBtZWFzdXJlbWVudAorICAgICAgcmFuZ2UsIHRoaXMgd2lsbCBvY2N1ciB3aXRoaW4gYSBmZXcgbWVhc3VyZW1lbnQgY3ljbGVzLgorCitBbmFsb2cgT3V0cHV0CistLS0tLS0tLS0tLS0tCitBbiBhbmFsb2cgb3V0cHV0IHByb3ZpZGVzIGEgMCB0byAxLjI1IHZvbHQgc2lnbmFsIGludGVuZGVkIGZvciBhbiBleHRlcm5hbAorZmFuIHNwZWVkIGFtcGxpZmllciBjaXJjdWl0LiBUaGUgYW5hbG9nIG91dHB1dCBpcyBzZXQgdG8gbWF4aW11bSB2YWx1ZSBvbgorcG93ZXIgdXAgb3IgcmVzZXQuIFRoaXMgZG9lc24ndCBkbyBtdWNoIG9uIHRoZSB0ZXN0IEludGVsIFNFNDQwQlgtMi4KKworVm9sdGFnZSBNb25pdG9yCisKK1ZvbHRhZ2UgKElOKSBtZWFzdXJlbWVudCBpcyBpbnRlcm5hbGx5IHNjYWxlZDoKKworICAgIG5yICBsYWJlbCAgICAgICBub21pbmFsICAgICBtYXhpbXVtICAgcmVzb2x1dGlvbgorICAgICAgICAgICAgICAgICAgICAgIG1WICAgICAgICAgIG1WICAgICAgICAgbVYKKyAgICAwICAgKzIuNVYgICAgICAgIDI1MDAgICAgICAgIDMzMjAgICAgICAgMTMuMAorICAgIDEgICBWY2NwMSAgICAgICAgMjcwMCAgICAgICAgMzYwMCAgICAgICAxNC4xCisgICAgMiAgICszLjNWICAgICAgICAzMzAwICAgICAgICA0MzgwICAgICAgIDE3LjIKKyAgICAzICAgICArNVYgICAgICAgIDUwMDAgICAgICAgIDY2NDAgICAgICAgMjYuMAorICAgIDQgICAgKzEyViAgICAgICAxMjAwMCAgICAgICAxNTk0MCAgICAgICA2Mi41CisgICAgNSAgIFZjY3AyICAgICAgICAyNzAwICAgICAgICAzNjAwICAgICAgIDE0LjEKKworVGhlIHJlYWRpbmcgaXMgYW4gdW5zaWduZWQgOC1iaXQgdmFsdWUsIG5vbWluYWwgdm9sdGFnZSBtZWFzdXJlbWVudCBpcworcmVwcmVzZW50ZWQgYnkgYSByZWFkaW5nIG9mIDE5MiwgYmVpbmcgMy80IG9mIHRoZSBtZWFzdXJlbWVudCByYW5nZS4KKworQW4gYWxhcm0gaXMgYXNzZXJ0ZWQgZm9yIGFueSB2b2x0YWdlIGdvaW5nIGJlbG93IG9yIGFib3ZlIHRoZSBzZXQgbGltaXRzLgorCitUaGUgZHJpdmVyIHJlcG9ydHMgYW5kIGFjY2VwdHMgdm9sdGFnZSBsaW1pdHMgc2NhbGVkIHRvIHRoZSBhYm92ZSB0YWJsZS4KKworVklEIE1vbml0b3IKKy0tLS0tLS0tLS0tCitUaGUgY2hpcCBoYXMgZml2ZSBpbnB1dHMgdG8gcmVhZCB0aGUgNS1iaXQgVklEIGFuZCByZXBvcnRzIHRoZSBtViB2YWx1ZQorYmFzZWQgb24gZGV0ZWN0ZWQgQ1BVIHR5cGUuCisKK0NoYXNzaXMgSW50cnVzaW9uCistLS0tLS0tLS0tLS0tLS0tLQorQW4gYWxhcm0gaXMgYXNzZXJ0ZWQgd2hlbiB0aGUgQ0kgcGluIGdvZXMgYWN0aXZlIGhpZ2guIFRoZSBBRE05MjQwCitEYXRhc2hlZXQgaGFzIGFuIGV4YW1wbGUgb2YgYW4gZXh0ZXJuYWwgdGVtcGVyYXR1cmUgc2Vuc29yIGRyaXZpbmcKK3RoaXMgcGluLiBPbiBhbiBJbnRlbCBTRTQ0MEJYLTIgdGhlIENoYXNzaXMgSW50cnVzaW9uIGhlYWRlciBpcworY29ubmVjdGVkIHRvIGEgbm9ybWFsbHkgb3BlbiBzd2l0Y2guCisKK1RoZSBBRE05MjQwIHByb3ZpZGVzIGFuIGludGVybmFsIG9wZW4gZHJhaW4gb24gdGhpcyBsaW5lLCBhbmQgbWF5IG91dHB1dAorYSAyMCBtcyBhY3RpdmUgbG93IHB1bHNlIHRvIHJlc2V0IGFuIGV4dGVybmFsIENoYXNzaXMgSW50cnVzaW9uIGxhdGNoLgorCitDbGVhciB0aGUgQ0kgbGF0Y2ggYnkgd3JpdGluZyB2YWx1ZSAwIHRvIHRoZSBzeXNmcyBpbnRydXNpb24wX2FsYXJtIGZpbGUuCisKK0FsYXJtIGZsYWdzIHJlcG9ydGVkIGFzIDE2LWJpdCB3b3JkCisKKyAgICBiaXQgICAgIGxhYmVsICAgICAgICAgICAgICAgY29tbWVudAorICAgIC0tLSAgICAgLS0tLS0tLS0tLS0tLSAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAwICAgICAgKzIuNSBWX0Vycm9yICAgICAgICBoaWdoIG9yIGxvdyBsaW1pdCBleGNlZWRlZAorICAgICAxICAgICAgVkNDUF9FcnJvciAgICAgICAgICBoaWdoIG9yIGxvdyBsaW1pdCBleGNlZWRlZAorICAgICAyICAgICAgKzMuMyBWX0Vycm9yICAgICAgICBoaWdoIG9yIGxvdyBsaW1pdCBleGNlZWRlZAorICAgICAzICAgICAgKzUgVl9FcnJvciAgICAgICAgICBoaWdoIG9yIGxvdyBsaW1pdCBleGNlZWRlZAorICAgICA0ICAgICAgVGVtcF9FcnJvciAgICAgICAgICB0ZW1wZXJhdHVyZSBlcnJvcgorICAgICA2ICAgICAgRkFOMV9FcnJvciAgICAgICAgICBmYW4gbG93IGxpbWl0IGV4Y2VlZGVkCisgICAgIDcgICAgICBGQU4yX0Vycm9yICAgICAgICAgIGZhbiBsb3cgbGltaXQgZXhjZWVkZWQKKyAgICAgOCAgICAgICsxMiBWX0Vycm9yICAgICAgICAgaGlnaCBvciBsb3cgbGltaXQgZXhjZWVkZWQKKyAgICAgOSAgICAgIFZDQ1AyX0Vycm9yICAgICAgICAgaGlnaCBvciBsb3cgbGltaXQgZXhjZWVkZWQKKyAgICAxMiAgICAgIENoYXNzaXNfRXJyb3IgICAgICAgQ0kgcGluIHdlbnQgaGlnaAorCitSZW1haW5pbmcgYml0cyBhcmUgcmVzZXJ2ZWQgYW5kIHRodXMgdW5kZWZpbmVkLiBJdCBpcyBpbXBvcnRhbnQgdG8gbm90ZQordGhhdCBhbGFybSBiaXRzIG1heSBiZSBjbGVhcmVkIG9uIHJlYWQsIHVzZXItc3BhY2UgbWF5IGxhdGNoIGFsYXJtcyBhbmQKK3Byb3ZpZGUgdGhlIGVuZC11c2VyIHdpdGggYSBtZXRob2QgdG8gY2xlYXIgYWxhcm0gbWVtb3J5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9hZHMxMDE1IGIvRG9jdW1lbnRhdGlvbi9od21vbi9hZHMxMDE1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2M2I4MGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2FkczEwMTUKQEAgLTAsMCArMSw3NiBAQAorS2VybmVsIGRyaXZlciBhZHMxMDE1Cis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIFRleGFzIEluc3RydW1lbnRzIEFEUzEwMTUKKyAgICBQcmVmaXg6ICdhZHMxMDE1JworICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBUZXhhcyBJbnN0cnVtZW50cyB3ZWJzaXRlIDoKKyAgICAgICAgICAgICAgIGh0dHA6Ly9mb2N1cy50aS5jb20vbGl0L2RzL3N5bWxpbmsvYWRzMTAxNS5wZGYKKyAgKiBUZXhhcyBJbnN0cnVtZW50cyBBRFMxMTE1CisgICAgUHJlZml4OiAnYWRzMTExNScKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgd2Vic2l0ZSA6CisgICAgICAgICAgICAgICBodHRwOi8vZm9jdXMudGkuY29tL2xpdC9kcy9zeW1saW5rL2FkczExMTUucGRmCisKK0F1dGhvcnM6CisgICAgICAgIERpcmsgRWliYWNoLCBHdW50ZXJtYW5uICYgRHJ1bmNrIEdtYkggPGVpYmFjaEBnZHN5cy5kZT4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgdGhlIFRleGFzIEluc3RydW1lbnRzIEFEUzEwMTUvQURTMTExNS4KKworVGhpcyBkZXZpY2UgaXMgYSAxMi8xNi1iaXQgQS1EIGNvbnZlcnRlciB3aXRoIDQgaW5wdXRzLgorCitUaGUgaW5wdXRzIGNhbiBiZSB1c2VkIHNpbmdsZSBlbmRlZCBvciBpbiBjZXJ0YWluIGRpZmZlcmVudGlhbCBjb21iaW5hdGlvbnMuCisKK1RoZSBpbnB1dHMgY2FuIGJlIG1hZGUgYXZhaWxhYmxlIGJ5IDggc3lzZnMgaW5wdXQgZmlsZXMgaW4wX2lucHV0IC0gaW43X2lucHV0OgoraW4wOiBWb2x0YWdlIG92ZXIgQUlOMCBhbmQgQUlOMS4KK2luMTogVm9sdGFnZSBvdmVyIEFJTjAgYW5kIEFJTjMuCitpbjI6IFZvbHRhZ2Ugb3ZlciBBSU4xIGFuZCBBSU4zLgoraW4zOiBWb2x0YWdlIG92ZXIgQUlOMiBhbmQgQUlOMy4KK2luNDogVm9sdGFnZSBvdmVyIEFJTjAgYW5kIEdORC4KK2luNTogVm9sdGFnZSBvdmVyIEFJTjEgYW5kIEdORC4KK2luNjogVm9sdGFnZSBvdmVyIEFJTjIgYW5kIEdORC4KK2luNzogVm9sdGFnZSBvdmVyIEFJTjMgYW5kIEdORC4KKworV2hpY2ggaW5wdXRzIGFyZSBhdmFpbGFibGUgY2FuIGJlIGNvbmZpZ3VyZWQgdXNpbmcgcGxhdGZvcm0gZGF0YSBvciBkZXZpY2V0cmVlLgorCitCeSBkZWZhdWx0IGFsbCBpbnB1dHMgYXJlIGV4cG9ydGVkLgorCitQbGF0Zm9ybSBEYXRhCistLS0tLS0tLS0tLS0tCisKK0luIGxpbnV4L2kyYy9hZHMxMDE1LmggcGxhdGZvcm0gZGF0YSBpcyBkZWZpbmVkLCBjaGFubmVsX2RhdGEgY29udGFpbnMKK2NvbmZpZ3VyYXRpb24gZGF0YSBmb3IgdGhlIHVzZWQgaW5wdXQgY29tYmluYXRpb25zOgorLSBwZ2EgaXMgdGhlIHByb2dyYW1tYWJsZSBnYWluIGFtcGxpZmllciAodmFsdWVzIGFyZSBmdWxsIHNjYWxlKQorICAwOiArLy0gNi4xNDQgVgorICAxOiArLy0gNC4wOTYgVgorICAyOiArLy0gMi4wNDggVgorICAzOiArLy0gMS4wMjQgVgorICA0OiArLy0gMC41MTIgVgorICA1OiArLy0gMC4yNTYgVgorLSBkYXRhX3JhdGUgaW4gc2FtcGxlcyBwZXIgc2Vjb25kCisgIDA6IDEyOAorICAxOiAyNTAKKyAgMjogNDkwCisgIDM6IDkyMAorICA0OiAxNjAwCisgIDU6IDI0MDAKKyAgNjogMzMwMAorCitFeGFtcGxlOgorc3RydWN0IGFkczEwMTVfcGxhdGZvcm1fZGF0YSBkYXRhID0geworCS5jaGFubmVsX2RhdGEgPSB7CisJCVsyXSA9IHsgLmVuYWJsZWQgPSB0cnVlLCAucGdhID0gMSwgLmRhdGFfcmF0ZSA9IDAgfSwKKwkJWzRdID0geyAuZW5hYmxlZCA9IHRydWUsIC5wZ2EgPSA0LCAuZGF0YV9yYXRlID0gNSB9LAorCX0KK307CisKK0luIHRoaXMgY2FzZSBvbmx5IGluMl9pbnB1dCAoRlMgKy8tIDQuMDk2IFYsIDEyOCBTUFMpIGFuZCBpbjRfaW5wdXQKKyhGUyArLy0gMC41MTIgViwgMjQwMCBTUFMpIHdvdWxkIGJlIGNyZWF0ZWQuCisKK0RldmljZXRyZWUKKy0tLS0tLS0tLS0KKworQ29uZmlndXJhdGlvbiBpcyBhbHNvIHBvc3NpYmxlIHZpYSBkZXZpY2V0cmVlOgorRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL2FkczEwMTUudHh0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2Fkczc4MjggYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2Fkczc4MjgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZlMjYzZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vYWRzNzgyOApAQCAtMCwwICsxLDU4IEBACitLZXJuZWwgZHJpdmVyIGFkczc4MjgKKz09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogVGV4YXMgSW5zdHJ1bWVudHMvQnVyci1Ccm93biBBRFM3ODI4CisgICAgUHJlZml4OiAnYWRzNzgyOCcKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgd2Vic2l0ZToKKyAgICAgICAgICAgICAgIGh0dHA6Ly9mb2N1cy50aS5jb20vbGl0L2RzL3N5bWxpbmsvYWRzNzgyOC5wZGYKKworICAqIFRleGFzIEluc3RydW1lbnRzIEFEUzc4MzAKKyAgICBQcmVmaXg6ICdhZHM3ODMwJworICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBUZXhhcyBJbnN0cnVtZW50cyB3ZWJzaXRlOgorICAgICAgICAgICAgICAgaHR0cDovL2ZvY3VzLnRpLmNvbS9saXQvZHMvc3ltbGluay9hZHM3ODMwLnBkZgorCitBdXRob3JzOgorICAgICAgICBTdGV2ZSBIYXJkeSA8c2hhcmR5QHJlZGhhdC5jb20+CisgICAgICAgIFZpdmllbiBEaWRlbG90IDx2aXZpZW4uZGlkZWxvdEBzYXZvaXJmYWlyZWxpbnV4LmNvbT4KKyAgICAgICAgR3VpbGxhdW1lIFJvZ3VleiA8Z3VpbGxhdW1lLnJvZ3VlekBzYXZvaXJmYWlyZWxpbnV4LmNvbT4KKworUGxhdGZvcm0gZGF0YQorLS0tLS0tLS0tLS0tLQorCitUaGUgYWRzNzgyOCBkcml2ZXIgYWNjZXB0cyBhbiBvcHRpb25hbCBhZHM3ODI4X3BsYXRmb3JtX2RhdGEgc3RydWN0dXJlIChkZWZpbmVkCitpbiBpbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvYWRzNzgyOC5oKS4gVGhlIHN0cnVjdHVyZSBmaWVsZHMgYXJlOgorCisqIGRpZmZfaW5wdXQ6IChib29sKSBEaWZmZXJlbnRpYWwgb3BlcmF0aW9uCisgIHNldCB0byB0cnVlIGZvciBkaWZmZXJlbnRpYWwgbW9kZSwgZmFsc2UgZm9yIGRlZmF1bHQgc2luZ2xlIGVuZGVkIG1vZGUuCisKKyogZXh0X3ZyZWY6IChib29sKSBFeHRlcm5hbCByZWZlcmVuY2UKKyAgc2V0IHRvIHRydWUgaWYgaXQgb3BlcmF0ZXMgd2l0aCBhbiBleHRlcm5hbCByZWZlcmVuY2UsIGZhbHNlIGZvciBkZWZhdWx0CisgIGludGVybmFsIHJlZmVyZW5jZS4KKworKiB2cmVmX212OiAodW5zaWduZWQgaW50KSBWb2x0YWdlIHJlZmVyZW5jZQorICBpZiB1c2luZyBhbiBleHRlcm5hbCByZWZlcmVuY2UsIHNldCB0aGlzIHRvIHRoZSByZWZlcmVuY2Ugdm9sdGFnZSBpbiBtViwKKyAgb3RoZXJ3aXNlIGl0IHdpbGwgZGVmYXVsdCB0byB0aGUgaW50ZXJuYWwgdmFsdWUgKDI1MDBtVikuIFRoaXMgdmFsdWUgd2lsbCBiZQorICBib3VuZGVkIHdpdGggbGltaXRzIGFjY2VwdGVkIGJ5IHRoZSBjaGlwLCBkZXNjcmliZWQgaW4gdGhlIGRhdGFzaGVldC4KKworIElmIG5vIHN0cnVjdHVyZSBpcyBwcm92aWRlZCwgdGhlIGNvbmZpZ3VyYXRpb24gZGVmYXVsdHMgdG8gc2luZ2xlIGVuZGVkCisgb3BlcmF0aW9uIGFuZCBpbnRlcm5hbCB2b2x0YWdlIHJlZmVyZW5jZSAoMi41VikuCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBBRFM3ODI4IGFuZCBBRFM3ODMwLgorCitUaGUgQURTNzgyOCBkZXZpY2UgaXMgYSAxMi1iaXQgOC1jaGFubmVsIEEvRCBjb252ZXJ0ZXIsIHdoaWxlIHRoZSBBRFM3ODMwIGRvZXMKKzgtYml0IHNhbXBsaW5nLgorCitJdCBjYW4gb3BlcmF0ZSBpbiBzaW5nbGUgZW5kZWQgbW9kZSAoOCArdmUgaW5wdXRzKSBvciBpbiBkaWZmZXJlbnRpYWwgbW9kZSwKK3doZXJlIDQgZGlmZmVyZW50aWFsIHBhaXJzIGNhbiBiZSBtZWFzdXJlZC4KKworVGhlIGNoaXAgYWxzbyBoYXMgdGhlIGZhY2lsaXR5IHRvIHVzZSBhbiBleHRlcm5hbCB2b2x0YWdlIHJlZmVyZW5jZS4gIFRoaXMKK21heSBiZSByZXF1aXJlZCBpZiB5b3VyIGhhcmR3YXJlIHN1cHBsaWVzIHRoZSBBRFM3ODI4IGZyb20gYSA1ViBzdXBwbHksIHNlZQordGhlIGRhdGFzaGVldCBmb3IgbW9yZSBkZXRhaWxzLgorCitUaGVyZSBpcyBubyByZWxpYWJsZSB3YXkgdG8gaWRlbnRpZnkgdGhpcyBjaGlwLCBzbyB0aGUgZHJpdmVyIHdpbGwgbm90IHNjYW4KK3NvbWUgYWRkcmVzc2VzIHRvIHRyeSB0byBhdXRvLWRldGVjdCBpdC4gVGhhdCBtZWFucyB0aGF0IHlvdSB3aWxsIGhhdmUgdG8KK3N0YXRpY2FsbHkgZGVjbGFyZSB0aGUgZGV2aWNlIGluIHRoZSBwbGF0Zm9ybSBzdXBwb3J0IGNvZGUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2FkdDc0MTAgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2FkdDc0MTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgxNzk0MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vYWR0NzQxMApAQCAtMCwwICsxLDczIEBACitLZXJuZWwgZHJpdmVyIGFkdDc0MTAKKz09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogQW5hbG9nIERldmljZXMgQURUNzQxMAorICAgIFByZWZpeDogJ2FkdDc0MTAnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IE5vbmUKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgQW5hbG9nIERldmljZXMgd2Vic2l0ZQorICAgICAgICAgICAgICAgaHR0cDovL3d3dy5hbmFsb2cuY29tL3N0YXRpYy9pbXBvcnRlZC1maWxlcy9kYXRhX3NoZWV0cy9BRFQ3NDEwLnBkZgorICAqIEFuYWxvZyBEZXZpY2VzIEFEVDc0MjAKKyAgICBQcmVmaXg6ICdhZHQ3NDIwJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBOb25lCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIEFuYWxvZyBEZXZpY2VzIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuYW5hbG9nLmNvbS9zdGF0aWMvaW1wb3J0ZWQtZmlsZXMvZGF0YV9zaGVldHMvQURUNzQyMC5wZGYKKyAgKiBBbmFsb2cgRGV2aWNlcyBBRFQ3MzEwCisgICAgUHJlZml4OiAnYWR0NzMxMCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogTm9uZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBBbmFsb2cgRGV2aWNlcyB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFuYWxvZy5jb20vc3RhdGljL2ltcG9ydGVkLWZpbGVzL2RhdGFfc2hlZXRzL0FEVDczMTAucGRmCisgICogQW5hbG9nIERldmljZXMgQURUNzMyMAorICAgIFByZWZpeDogJ2FkdDczMjAnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IE5vbmUKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgQW5hbG9nIERldmljZXMgd2Vic2l0ZQorICAgICAgICAgICAgICAgaHR0cDovL3d3dy5hbmFsb2cuY29tL3N0YXRpYy9pbXBvcnRlZC1maWxlcy9kYXRhX3NoZWV0cy9BRFQ3MzIwLnBkZgorCitBdXRob3I6IEhhcnRtdXQgS25hYWNrIDxrbmFhY2suaEBnbXguZGU+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGUgQURUNzMxMC9BRFQ3NDEwIGlzIGEgdGVtcGVyYXR1cmUgc2Vuc29yIHdpdGggcmF0ZWQgdGVtcGVyYXR1cmUgcmFuZ2Ugb2YKKy01NcKwQyB0byArMTUwwrBDLiBJdCBoYXMgYSBoaWdoIGFjY3VyYWN5IG9mICsvLTAuNcKwQyBhbmQgY2FuIGJlIG9wZXJhdGVkIGF0IGEKK3Jlc29sdXRpb24gb2YgMTMgYml0cyAoMC4wNjI1wrBDKSBvciAxNiBiaXRzICgwLjAwNzjCsEMpLiBUaGUgc2Vuc29yIHByb3ZpZGVzIGFuCitJTlQgcGluIHRvIGluZGljYXRlIHRoYXQgYSBtaW5pbXVtIG9yIG1heGltdW0gdGVtcGVyYXR1cmUgc2V0IHBvaW50IGhhcyBiZWVuCitleGNlZWRlZCwgYXMgd2VsbCBhcyBhIGNyaXRpY2FsIHRlbXBlcmF0dXJlIChDVCkgcGluIHRvIGluZGljYXRlIHRoYXQgdGhlCitjcml0aWNhbCB0ZW1wZXJhdHVyZSBzZXQgcG9pbnQgaGFzIGJlZW4gZXhjZWVkZWQuIEJvdGggcGlucyBjYW4gYmUgc2V0IHVwIHdpdGggYQorY29tbW9uIGh5c3RlcmVzaXMgb2YgMMKwQyAtIDE1wrBDIGFuZCBhIGZhdWx0IHF1ZXVlLCByYW5naW5nIGZyb20gMSB0byA0IGV2ZW50cy4KK0JvdGggcGlucyBjYW4gaW5kaXZpZHVhbGx5IHNldCB0byBiZSBhY3RpdmUtbG93IG9yIGFjdGl2ZS1oaWdoLCB3aGlsZSB0aGUgd2hvbGUKK2RldmljZSBjYW4gZWl0aGVyIHJ1biBpbiBjb21wYXJhdG9yIG1vZGUgb3IgaW50ZXJydXB0IG1vZGUuIFRoZSBBRFQ3NDEwIHN1cHBvcnRzCitjb250aW51b3VzIHRlbXBlcmF0dXJlIHNhbXBsaW5nLCBhcyB3ZWxsIGFzIHNhbXBsaW5nIG9uZSB0ZW1wZXJhdHVyZSB2YWx1ZSBwZXIKK3NlY29uZCBvciBldmVuIGp1c3QgZ2V0IG9uZSBzYW1wbGUgb24gZGVtYW5kIGZvciBwb3dlciBzYXZpbmcuIEJlc2lkZXMsIGl0IGNhbgorY29tcGxldGVseSBwb3dlciBkb3duIGl0cyBBREMsIGlmIHBvd2VyIG1hbmFnZW1lbnQgaXMgcmVxdWlyZWQuCisKK1RoZSBBRFQ3MzIwL0FEVDc0MjAgaXMgcmVnaXN0ZXIgY29tcGF0aWJsZSwgdGhlIG9ubHkgZGlmZmVyZW5jZXMgYmVpbmcgdGhlCitwYWNrYWdlLCBhIHNsaWdodGx5IG5hcnJvd2VyIG9wZXJhdGluZyB0ZW1wZXJhdHVyZSByYW5nZSAoLTQwwrBDIHRvICsxNTDCsEMpLCBhbmQKK2EgYmV0dGVyIGFjY3VyYWN5ICgwLjI1wrBDIGluc3RlYWQgb2YgMC41MMKwQy4pCisKK1RoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIEFEVDczMTAvQURUNzMyMCBhbmQgQURUNzQxMC9BRFQ3NDIwIGlzIHRoZSBjb250cm9sCitpbnRlcmZhY2UsIHRoZSBBRFQ3MzEwIGFuZCBBRFQ3MzIwIHVzZSBTUEkgd2hpbGUgdGhlIEFEVDc0MTAgYW5kIEFEVDc0MjAgdXNlCitJMkMuCisKK0NvbmZpZ3VyYXRpb24gTm90ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworU2luY2UgdGhlIGRldmljZSB1c2VzIG9uZSBoeXN0ZXJlc2lzIHZhbHVlLCB3aGljaCBpcyBhbiBvZmZzZXQgdG8gbWluaW11bSwKK21heGltdW0gYW5kIGNyaXRpY2FsIHRlbXBlcmF0dXJlLCBpdCBjYW4gb25seSBiZSBzZXQgZm9yIHRlbXAjX21heF9oeXN0LgorSG93ZXZlciwgdGVtcCNfbWluX2h5c3QgYW5kIHRlbXAjX2NyaXRfaHlzdCBzaG93IHRoZWlyIGNvcnJlc3BvbmRpbmcKK2h5c3RlcmVzaXMuCitUaGUgZGV2aWNlIGlzIHNldCB0byAxNiBiaXQgcmVzb2x1dGlvbiBhbmQgY29tcGFyYXRvciBtb2RlLgorCitzeXNmcy1JbnRlcmZhY2UKKy0tLS0tLS0tLS0tLS0tLQorCit0ZW1wI19pbnB1dAkJLSB0ZW1wZXJhdHVyZSBpbnB1dAordGVtcCNfbWluCQktIHRlbXBlcmF0dXJlIG1pbmltdW0gc2V0cG9pbnQKK3RlbXAjX21heAkJLSB0ZW1wZXJhdHVyZSBtYXhpbXVtIHNldHBvaW50Cit0ZW1wI19jcml0CQktIGNyaXRpY2FsIHRlbXBlcmF0dXJlIHNldHBvaW50Cit0ZW1wI19taW5faHlzdAkJLSBoeXN0ZXJlc2lzIGZvciB0ZW1wZXJhdHVyZSBtaW5pbXVtIChyZWFkLW9ubHkpCit0ZW1wI19tYXhfaHlzdAkJLSBoeXN0ZXJlc2lzIGZvciB0ZW1wZXJhdHVyZSBtYXhpbXVtIChyZWFkL3dyaXRlKQordGVtcCNfY3JpdF9oeXN0CQktIGh5c3RlcmVzaXMgZm9yIGNyaXRpY2FsIHRlbXBlcmF0dXJlIChyZWFkLW9ubHkpCit0ZW1wI19taW5fYWxhcm0JCS0gdGVtcGVyYXR1cmUgbWluaW11bSBhbGFybSBmbGFnCit0ZW1wI19tYXhfYWxhcm0JCS0gdGVtcGVyYXR1cmUgbWF4aW11bSBhbGFybSBmbGFnCit0ZW1wI19jcml0X2FsYXJtCS0gY3JpdGljYWwgdGVtcGVyYXR1cmUgYWxhcm0gZmxhZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9hZHQ3NDExIGIvRG9jdW1lbnRhdGlvbi9od21vbi9hZHQ3NDExCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MzI5NjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2FkdDc0MTEKQEAgLTAsMCArMSw0MiBAQAorS2VybmVsIGRyaXZlciBhZHQ3NDExCis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIEFuYWxvZyBEZXZpY2VzIEFEVDc0MTEKKyAgICBQcmVmaXg6ICdhZHQ3NDExJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAweDQ4LCAweDRhLCAweDRiCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIEFuYWxvZyBEZXZpY2VzIHdlYnNpdGUKKworQXV0aG9yOiBXb2xmcmFtIFNhbmcgKGJhc2VkIG9uIGFkdDc0NzAgYnkgRGFycmljayBKLiBXb25nKQorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgaW1wbGVtZW50cyBzdXBwb3J0IGZvciB0aGUgQW5hbG9nIERldmljZXMgQURUNzQxMSBjaGlwLiBUaGVyZSBtYXkKK2JlIG90aGVyIGNoaXBzIHRoYXQgaW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlLgorCitUaGUgQURUNzQxMSBjYW4gdXNlIGFuIEkyQy9TTUJ1cyBjb21wYXRpYmxlIDItd2lyZSBpbnRlcmZhY2Ugb3IgYW4KK1NQSS1jb21wYXRpYmxlIDQtd2lyZSBpbnRlcmZhY2UuIEl0IHByb3ZpZGVzIGEgMTAtYml0IGFuYWxvZyB0byBkaWdpdGFsCitjb252ZXJ0ZXIgd2hpY2ggbWVhc3VyZXMgMSB0ZW1wZXJhdHVyZSwgdmRkIGFuZCA4IGlucHV0IHZvbHRhZ2VzLiBJdCBoYXMgYW4KK2ludGVybmFsIHRlbXBlcmF0dXJlIHNlbnNvciwgYnV0IGFuIGV4dGVybmFsIG9uZSBjYW4gYWxzbyBiZSBjb25uZWN0ZWQgKG9uZQorbG9zZXMgMiBpbnB1dHMgdGhlbikuIFRoZXJlIGFyZSBoaWdoLSBhbmQgbG93LWxpbWl0IHJlZ2lzdGVycyBmb3IgYWxsIGlucHV0cy4KKworQ2hlY2sgdGhlIGRhdGFzaGVldCBmb3IgZGV0YWlscy4KKworc3lzZnMtSW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0KKworaW4wX2lucHV0CS0gdmRkIHZvbHRhZ2UgaW5wdXQKK2luWzEtOF1faW5wdXQJLSBhbmFsb2cgMS04IGlucHV0Cit0ZW1wMV9pbnB1dAktIHRlbXBlcmF0dXJlIGlucHV0CisKK0Jlc2lkZXMgc3RhbmRhcmQgaW50ZXJmYWNlcywgdGhpcyBkcml2ZXIgYWRkcyAoMCA9IG9mZiwgMSA9IG9uKToKKworICBhZGNfcmVmX3ZkZAktIFVzZSB2ZGQgYXMgcmVmZXJlbmNlIGluc3RlYWQgb2YgMi4yNSBWCisgIGZhc3Rfc2FtcGxpbmcJLSBTYW1wbGUgYXQgMjIuNSBrSHogaW5zdGVhZCBvZiAxLjQga0h6LCBidXQgZHJvcCBmaWx0ZXJzCisgIG5vX2F2ZXJhZ2UJLSBUdXJuIG9mZiBhdmVyYWdpbmcgb3ZlciAxNiBzYW1wbGVzCisKK05vdGVzCistLS0tLQorCitTUEksIGV4dGVybmFsIHRlbXBlcmF0dXJlIHNlbnNvciBhbmQgbGltaXQgcmVnaXN0ZXJzIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vYWR0NzQ2MiBiL0RvY3VtZW50YXRpb24vaHdtb24vYWR0NzQ2MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzY2MGIzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9hZHQ3NDYyCkBAIC0wLDAgKzEsNjcgQEAKK0tlcm5lbCBkcml2ZXIgYWR0NzQ2MgorPT09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogQW5hbG9nIERldmljZXMgQURUNzQ2MgorICAgIFByZWZpeDogJ2FkdDc0NjInCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDU4LCAweDVDCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIEFuYWxvZyBEZXZpY2VzIHdlYnNpdGUKKworQXV0aG9yOiBEYXJyaWNrIEouIFdvbmcKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgdGhlIEFuYWxvZyBEZXZpY2VzIEFEVDc0NjIgY2hpcCBmYW1pbHkuCisKK1RoaXMgY2hpcCBpcyBhIGJpdCBvZiBhIGJlYXN0LiAgSXQgaGFzIDggY291bnRlcnMgZm9yIG1lYXN1cmluZyBmYW4gc3BlZWQuICBJdAorY2FuIGFsc28gbWVhc3VyZSAxMyB2b2x0YWdlcyBvciA0IHRlbXBlcmF0dXJlcywgb3IgdmFyaW91cyBjb21iaW5hdGlvbnMgb2YgdGhlCit0d28uICBTZWUgdGhlIGNoaXAgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSBleGFjdCBzZXQgb2YKK2NvbmZpZ3VyYXRpb25zLiAgVGhpcyBkcml2ZXIgZG9lcyBub3QgYWxsb3cgb25lIHRvIGNvbmZpZ3VyZSB0aGUgY2hpcDsgdGhhdCBpcworbGVmdCB0byB0aGUgc3lzdGVtIGRlc2lnbmVyLgorCitBIHNvcGhpc3RpY2F0ZWQgY29udHJvbCBzeXN0ZW0gZm9yIHRoZSBQV00gb3V0cHV0cyBpcyBkZXNpZ25lZCBpbnRvIHRoZSBBRFQ3NDYyCit0aGF0IGFsbG93cyBmYW4gc3BlZWQgdG8gYmUgYWRqdXN0ZWQgYXV0b21hdGljYWxseSBiYXNlZCBvbiBhbnkgb2YgdGhlIHRocmVlCit0ZW1wZXJhdHVyZSBzZW5zb3JzLiBFYWNoIFBXTSBvdXRwdXQgaXMgaW5kaXZpZHVhbGx5IGFkanVzdGFibGUgYW5kCitwcm9ncmFtbWFibGUuIE9uY2UgY29uZmlndXJlZCwgdGhlIEFEVDc0NjIgd2lsbCBhZGp1c3QgdGhlIFBXTSBvdXRwdXRzIGluCityZXNwb25zZSB0byB0aGUgbWVhc3VyZWQgdGVtcGVyYXR1cmVzIHdpdGhvdXQgZnVydGhlciBob3N0IGludGVydmVudGlvbi4gIFRoaXMKK2ZlYXR1cmUgY2FuIGFsc28gYmUgZGlzYWJsZWQgZm9yIG1hbnVhbCBjb250cm9sIG9mIHRoZSBQV00ncy4KKworRWFjaCBvZiB0aGUgbWVhc3VyZWQgaW5wdXRzICh2b2x0YWdlLCB0ZW1wZXJhdHVyZSwgZmFuIHNwZWVkKSBoYXMKK2NvcnJlc3BvbmRpbmcgaGlnaC9sb3cgbGltaXQgdmFsdWVzLiBUaGUgQURUNzQ2MiB3aWxsIHNpZ25hbCBhbiBBTEFSTSBpZgorYW55IG1lYXN1cmVkIHZhbHVlIGV4Y2VlZHMgZWl0aGVyIGxpbWl0LgorCitUaGUgQURUNzQ2MiBzYW1wbGVzIGFsbCBpbnB1dHMgY29udGludW91c2x5LiBUaGUgZHJpdmVyIHdpbGwgbm90IHJlYWQKK3RoZSByZWdpc3RlcnMgbW9yZSBvZnRlbiB0aGFuIG9uY2UgZXZlcnkgb3RoZXIgc2Vjb25kLiBGdXJ0aGVyLAorY29uZmlndXJhdGlvbiBkYXRhIGlzIG9ubHkgcmVhZCBvbmNlIHBlciBtaW51dGUuCisKK1NwZWNpYWwgRmVhdHVyZXMKKy0tLS0tLS0tLS0tLS0tLS0KKworVGhlIEFEVDc0NjIgaGF2ZSBhIDEwLWJpdCBBREMgYW5kIGNhbiB0aGVyZWZvcmUgbWVhc3VyZSB0ZW1wZXJhdHVyZXMKK3dpdGggMC4yNSBkZWdDIHJlc29sdXRpb24uCisKK1RoZSBBbmFsb2cgRGV2aWNlcyBkYXRhc2hlZXQgaXMgdmVyeSBkZXRhaWxlZCBhbmQgZGVzY3JpYmVzIGEgcHJvY2VkdXJlIGZvcgorZGV0ZXJtaW5pbmcgYW4gb3B0aW1hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgYXV0b21hdGljIFBXTSBjb250cm9sLgorCitUaGUgZHJpdmVyIHdpbGwgcmVwb3J0IHNlbnNvciBsYWJlbHMgd2hlbiBpdCBpcyBhYmxlIHRvIGRldGVybWluZSB0aGF0CitpbmZvcm1hdGlvbiBmcm9tIHRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycy4KKworQ29uZmlndXJhdGlvbiBOb3RlcworLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCZXNpZGVzIHN0YW5kYXJkIGludGVyZmFjZXMgZHJpdmVyIGFkZHMgdGhlIGZvbGxvd2luZzoKKworKiBQV00gQ29udHJvbAorCisqIHB3bSNfYXV0b19wb2ludDFfcHdtIGFuZCB0ZW1wI19hdXRvX3BvaW50MV90ZW1wIGFuZAorKiBwd20jX2F1dG9fcG9pbnQyX3B3bSBhbmQgdGVtcCNfYXV0b19wb2ludDJfdGVtcCAtCisKK3BvaW50MTogU2V0IHRoZSBwd20gc3BlZWQgYXQgYSBsb3dlciB0ZW1wZXJhdHVyZSBib3VuZC4KK3BvaW50MjogU2V0IHRoZSBwd20gc3BlZWQgYXQgYSBoaWdoZXIgdGVtcGVyYXR1cmUgYm91bmQuCisKK1RoZSBBRFQ3NDYyIHdpbGwgc2NhbGUgdGhlIHB3bSBiZXR3ZWVuIHRoZSBsb3dlciBhbmQgaGlnaGVyIHB3bSBzcGVlZCB3aGVuCit0aGUgdGVtcGVyYXR1cmUgaXMgYmV0d2VlbiB0aGUgdHdvIHRlbXBlcmF0dXJlIGJvdW5kYXJpZXMuICBQV00gdmFsdWVzIHJhbmdlCitmcm9tIDAgKG9mZikgdG8gMjU1IChmdWxsIHNwZWVkKS4gIEZhbiBzcGVlZCB3aWxsIGJlIHNldCB0byBtYXhpbXVtIHdoZW4gdGhlCit0ZW1wZXJhdHVyZSBzZW5zb3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBQV00gY29udHJvbCBleGNlZWRzIHRlbXAjX21heC4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9hZHQ3NDcwIGIvRG9jdW1lbnRhdGlvbi9od21vbi9hZHQ3NDcwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjZTRhYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2FkdDc0NzAKQEAgLTAsMCArMSw3MyBAQAorS2VybmVsIGRyaXZlciBhZHQ3NDcwCis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIEFuYWxvZyBEZXZpY2VzIEFEVDc0NzAKKyAgICBQcmVmaXg6ICdhZHQ3NDcwJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgyQywgMHgyRSwgMHgyRgorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBBbmFsb2cgRGV2aWNlcyB3ZWJzaXRlCisKK0F1dGhvcjogRGFycmljayBKLiBXb25nCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBBbmFsb2cgRGV2aWNlcyBBRFQ3NDcwIGNoaXAuICBUaGVyZSBtYXkKK2JlIG90aGVyIGNoaXBzIHRoYXQgaW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlLgorCitUaGUgQURUNzQ3MCB1c2VzIHRoZSAyLXdpcmUgaW50ZXJmYWNlIGNvbXBhdGlibGUgd2l0aCB0aGUgU01CdXMgMi4wCitzcGVjaWZpY2F0aW9uLiBVc2luZyBhbiBhbmFsb2cgdG8gZGlnaXRhbCBjb252ZXJ0ZXIgaXQgbWVhc3VyZXMgdXAgdG8gdGVuICgxMCkKK2V4dGVybmFsIHRlbXBlcmF0dXJlcy4gSXQgaGFzIGZvdXIgKDQpIDE2LWJpdCBjb3VudGVycyBmb3IgbWVhc3VyaW5nIGZhbiBzcGVlZC4KK1RoZXJlIGFyZSBmb3VyICg0KSBQV00gb3V0cHV0cyB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgZmFuIHNwZWVkLgorCitBIHNvcGhpc3RpY2F0ZWQgY29udHJvbCBzeXN0ZW0gZm9yIHRoZSBQV00gb3V0cHV0cyBpcyBkZXNpZ25lZCBpbnRvIHRoZSBBRFQ3NDcwCit0aGF0IGFsbG93cyBmYW4gc3BlZWQgdG8gYmUgYWRqdXN0ZWQgYXV0b21hdGljYWxseSBiYXNlZCBvbiBhbnkgb2YgdGhlIHRlbgordGVtcGVyYXR1cmUgc2Vuc29ycy4gRWFjaCBQV00gb3V0cHV0IGlzIGluZGl2aWR1YWxseSBhZGp1c3RhYmxlIGFuZAorcHJvZ3JhbW1hYmxlLiBPbmNlIGNvbmZpZ3VyZWQsIHRoZSBBRFQ3NDcwIHdpbGwgYWRqdXN0IHRoZSBQV00gb3V0cHV0cyBpbgorcmVzcG9uc2UgdG8gdGhlIG1lYXN1cmVkIHRlbXBlcmF0dXJlcyB3aXRoIGZ1cnRoZXIgaG9zdCBpbnRlcnZlbnRpb24uICBUaGlzCitmZWF0dXJlIGNhbiBhbHNvIGJlIGRpc2FibGVkIGZvciBtYW51YWwgY29udHJvbCBvZiB0aGUgUFdNJ3MuCisKK0VhY2ggb2YgdGhlIG1lYXN1cmVkIGlucHV0cyAodGVtcGVyYXR1cmUsIGZhbiBzcGVlZCkgaGFzIGNvcnJlc3BvbmRpbmcgaGlnaC9sb3cKK2xpbWl0IHZhbHVlcy4gVGhlIEFEVDc0NzAgd2lsbCBzaWduYWwgYW4gQUxBUk0gaWYgYW55IG1lYXN1cmVkIHZhbHVlIGV4Y2VlZHMKK2VpdGhlciBsaW1pdC4KKworVGhlIEFEVDc0NzAgc2FtcGxlcyBhbGwgaW5wdXRzIGNvbnRpbnVvdXNseS4gIEEga2VybmVsIHRocmVhZCBpcyBzdGFydGVkIHVwIGZvcgordGhlIHB1cnBvc2Ugb2YgcGVyaW9kaWNhbGx5IHF1ZXJ5aW5nIHRoZSB0ZW1wZXJhdHVyZSBzZW5zb3JzLCB0aHVzIGFsbG93aW5nIHRoZQorYXV0b21hdGljIGZhbiBwd20gY29udHJvbCB0byBzZXQgdGhlIGZhbiBzcGVlZC4gIFRoZSBkcml2ZXIgd2lsbCBub3QgcmVhZCB0aGUKK3JlZ2lzdGVycyBtb3JlIG9mdGVuIHRoYW4gb25jZSBldmVyeSA1IHNlY29uZHMuICBGdXJ0aGVyLCBjb25maWd1cmF0aW9uIGRhdGEgaXMKK29ubHkgcmVhZCBvbmNlIHBlciBtaW51dGUuCisKK1NwZWNpYWwgRmVhdHVyZXMKKy0tLS0tLS0tLS0tLS0tLS0KKworVGhlIEFEVDc0NzAgaGFzIGEgOC1iaXQgQURDIGFuZCBpcyBjYXBhYmxlIG9mIG1lYXN1cmluZyB0ZW1wZXJhdHVyZXMgd2l0aCAxCitkZWdDIHJlc29sdXRpb24uCisKK1RoZSBBbmFsb2cgRGV2aWNlcyBkYXRhc2hlZXQgaXMgdmVyeSBkZXRhaWxlZCBhbmQgZGVzY3JpYmVzIGEgcHJvY2VkdXJlIGZvcgorZGV0ZXJtaW5pbmcgYW4gb3B0aW1hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgYXV0b21hdGljIFBXTSBjb250cm9sLgorCitDb25maWd1cmF0aW9uIE5vdGVzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Jlc2lkZXMgc3RhbmRhcmQgaW50ZXJmYWNlcyBkcml2ZXIgYWRkcyB0aGUgZm9sbG93aW5nOgorCisqIFBXTSBDb250cm9sCisKKyogcHdtI19hdXRvX3BvaW50MV9wd20gYW5kIHB3bSNfYXV0b19wb2ludDFfdGVtcCBhbmQKKyogcHdtI19hdXRvX3BvaW50Ml9wd20gYW5kIHB3bSNfYXV0b19wb2ludDJfdGVtcCAtCisKK3BvaW50MTogU2V0IHRoZSBwd20gc3BlZWQgYXQgYSBsb3dlciB0ZW1wZXJhdHVyZSBib3VuZC4KK3BvaW50MjogU2V0IHRoZSBwd20gc3BlZWQgYXQgYSBoaWdoZXIgdGVtcGVyYXR1cmUgYm91bmQuCisKK1RoZSBBRFQ3NDcwIHdpbGwgc2NhbGUgdGhlIHB3bSBiZXR3ZWVuIHRoZSBsb3dlciBhbmQgaGlnaGVyIHB3bSBzcGVlZCB3aGVuCit0aGUgdGVtcGVyYXR1cmUgaXMgYmV0d2VlbiB0aGUgdHdvIHRlbXBlcmF0dXJlIGJvdW5kYXJpZXMuICBQV00gdmFsdWVzIHJhbmdlCitmcm9tIDAgKG9mZikgdG8gMjU1IChmdWxsIHNwZWVkKS4gIEZhbiBzcGVlZCB3aWxsIGJlIHNldCB0byBtYXhpbXVtIHdoZW4gdGhlCit0ZW1wZXJhdHVyZSBzZW5zb3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBQV00gY29udHJvbCBleGNlZWRzCitwd20jX2F1dG9fcG9pbnQyX3RlbXAuCisKK05vdGVzCistLS0tLQorCitUaGUgdGVtcGVyYXR1cmUgaW5wdXRzIG5vIGxvbmdlciBuZWVkIHRvIGJlIHJlYWQgcGVyaW9kaWNhbGx5IGZyb20gdXNlcnNwYWNlIGluCitvcmRlciBmb3IgdGhlIGF1dG9tYXRpYyBwd20gYWxnb3JpdGhtIHRvIHJ1bi4gIFRoaXMgd2FzIHRoZSBjYXNlIGZvciBlYXJsaWVyCit2ZXJzaW9ucyBvZiB0aGUgZHJpdmVyLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9hZHQ3NDc1IGIvRG9jdW1lbnRhdGlvbi9od21vbi9hZHQ3NDc1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MDJmMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2FkdDc0NzUKQEAgLTAsMCArMSwxMTcgQEAKK0tlcm5lbCBkcml2ZXIgYWR0NzQ3NQorPT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBBbmFsb2cgRGV2aWNlcyBBRFQ3NDczCisgICAgUHJlZml4OiAnYWR0NzQ3MycKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MkMsIDB4MkQsIDB4MkUKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgT24gU2VtaWNvbmR1Y3RvcnMgd2Vic2l0ZQorICAqIEFuYWxvZyBEZXZpY2VzIEFEVDc0NzUKKyAgICBQcmVmaXg6ICdhZHQ3NDc1JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgyRQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBPbiBTZW1pY29uZHVjdG9ycyB3ZWJzaXRlCisgICogQW5hbG9nIERldmljZXMgQURUNzQ3NgorICAgIFByZWZpeDogJ2FkdDc0NzYnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJDLCAweDJELCAweDJFCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIE9uIFNlbWljb25kdWN0b3JzIHdlYnNpdGUKKyAgKiBBbmFsb2cgRGV2aWNlcyBBRFQ3NDkwCisgICAgUHJlZml4OiAnYWR0NzQ5MCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MkMsIDB4MkQsIDB4MkUKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgT24gU2VtaWNvbmR1Y3RvcnMgd2Vic2l0ZQorCitBdXRob3JzOgorCUpvcmRhbiBDcm91c2UKKwlIYW5zIGRlIEdvZWRlCisJRGFycmljayBKLiBXb25nIChkb2N1bWVudGF0aW9uKQorCUplYW4gRGVsdmFyZQorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBBbmFsb2cgRGV2aWNlcyBBRFQ3NDczLCBBRFQ3NDc1LAorQURUNzQ3NiBhbmQgQURUNzQ5MCBjaGlwIGZhbWlseS4gVGhlIEFEVDc0NzMgYW5kIEFEVDc0NzUgZGlmZmVyIG9ubHkgaW4KK21pbm9yIGRldGFpbHMuIFRoZSBBRFQ3NDc2IGhhcyBhZGRpdGlvbmFsIGZlYXR1cmVzLCBpbmNsdWRpbmcgZXh0cmEgdm9sdGFnZQorbWVhc3VyZW1lbnQgaW5wdXRzIGFuZCBWSUQgc3VwcG9ydC4gVGhlIEFEVDc0OTAgYWxzbyBoYXMgYWRkaXRpb25hbAorZmVhdHVyZXMsIGluY2x1ZGluZyBleHRyYSB2b2x0YWdlIG1lYXN1cmVtZW50IGlucHV0cyBhbmQgUEVDSSBzdXBwb3J0LiBBbGwKK3RoZSBzdXBwb3J0ZWQgY2hpcHMgd2lsbCBiZSBjb2xsZWN0aXZlbHkgZGVzaWduZWQgYnkgdGhlIG5hbWUgIkFEVDc0N3giIGluCit0aGUgcmVzdCBvZiB0aGlzIGRvY3VtZW50LgorCitUaGUgQURUNzQ3eCB1c2VzIHRoZSAyLXdpcmUgaW50ZXJmYWNlIGNvbXBhdGlibGUgd2l0aCB0aGUgU01CdXMgMi4wCitzcGVjaWZpY2F0aW9uLiBVc2luZyBhbiBhbmFsb2cgdG8gZGlnaXRhbCBjb252ZXJ0ZXIgaXQgbWVhc3VyZXMgdGhyZWUgKDMpCit0ZW1wZXJhdHVyZXMgYW5kIHR3byAoMikgb3IgbW9yZSB2b2x0YWdlcy4gSXQgaGFzIGZvdXIgKDQpIDE2LWJpdCBjb3VudGVycworZm9yIG1lYXN1cmluZyBmYW4gc3BlZWQuIFRoZXJlIGFyZSB0aHJlZSAoMykgUFdNIG91dHB1dHMgdGhhdCBjYW4gYmUgdXNlZAordG8gY29udHJvbCBmYW4gc3BlZWQuCisKK0Egc29waGlzdGljYXRlZCBjb250cm9sIHN5c3RlbSBmb3IgdGhlIFBXTSBvdXRwdXRzIGlzIGRlc2lnbmVkIGludG8gdGhlCitBRFQ3NDd4IHRoYXQgYWxsb3dzIGZhbiBzcGVlZCB0byBiZSBhZGp1c3RlZCBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIGFueSBvZiB0aGUKK3RocmVlIHRlbXBlcmF0dXJlIHNlbnNvcnMuIEVhY2ggUFdNIG91dHB1dCBpcyBpbmRpdmlkdWFsbHkgYWRqdXN0YWJsZSBhbmQKK3Byb2dyYW1tYWJsZS4gT25jZSBjb25maWd1cmVkLCB0aGUgQURUNzQ3eCB3aWxsIGFkanVzdCB0aGUgUFdNIG91dHB1dHMgaW4KK3Jlc3BvbnNlIHRvIHRoZSBtZWFzdXJlZCB0ZW1wZXJhdHVyZXMgd2l0aG91dCBmdXJ0aGVyIGhvc3QgaW50ZXJ2ZW50aW9uLgorVGhpcyBmZWF0dXJlIGNhbiBhbHNvIGJlIGRpc2FibGVkIGZvciBtYW51YWwgY29udHJvbCBvZiB0aGUgUFdNJ3MuCisKK0VhY2ggb2YgdGhlIG1lYXN1cmVkIGlucHV0cyAodm9sdGFnZSwgdGVtcGVyYXR1cmUsIGZhbiBzcGVlZCkgaGFzCitjb3JyZXNwb25kaW5nIGhpZ2gvbG93IGxpbWl0IHZhbHVlcy4gVGhlIEFEVDc0N3ggd2lsbCBzaWduYWwgYW4gQUxBUk0gaWYKK2FueSBtZWFzdXJlZCB2YWx1ZSBleGNlZWRzIGVpdGhlciBsaW1pdC4KKworVGhlIEFEVDc0N3ggc2FtcGxlcyBhbGwgaW5wdXRzIGNvbnRpbnVvdXNseS4gVGhlIGRyaXZlciB3aWxsIG5vdCByZWFkCit0aGUgcmVnaXN0ZXJzIG1vcmUgb2Z0ZW4gdGhhbiBvbmNlIGV2ZXJ5IG90aGVyIHNlY29uZC4gRnVydGhlciwKK2NvbmZpZ3VyYXRpb24gZGF0YSBpcyBvbmx5IHJlYWQgb25jZSBwZXIgbWludXRlLgorCitDaGlwIERpZmZlcmVuY2VzIFN1bW1hcnkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBRFQ3NDczOgorICAqIDIgdm9sdGFnZSBpbnB1dHMKKyAgKiBzeXN0ZW0gYWNvdXN0aWNzIG9wdGltaXphdGlvbnMgKG5vdCBpbXBsZW1lbnRlZCkKKworQURUNzQ3NToKKyAgKiAyIHZvbHRhZ2UgaW5wdXRzCisKK0FEVDc0NzY6CisgICogNSB2b2x0YWdlIGlucHV0cworICAqIFZJRCBzdXBwb3J0CisKK0FEVDc0OTA6CisgICogNiB2b2x0YWdlIGlucHV0cworICAqIDEgSW1vbiBpbnB1dCAobm90IGltcGxlbWVudGVkKQorICAqIFBFQ0kgc3VwcG9ydCAobm90IGltcGxlbWVudGVkKQorICAqIDIgR1BJTyBwaW5zIChub3QgaW1wbGVtZW50ZWQpCisgICogc3lzdGVtIGFjb3VzdGljcyBvcHRpbWl6YXRpb25zIChub3QgaW1wbGVtZW50ZWQpCisKK1NwZWNpYWwgRmVhdHVyZXMKKy0tLS0tLS0tLS0tLS0tLS0KKworVGhlIEFEVDc0N3ggaGFzIGEgMTAtYml0IEFEQyBhbmQgY2FuIHRoZXJlZm9yZSBtZWFzdXJlIHRlbXBlcmF0dXJlcword2l0aCBhIHJlc29sdXRpb24gb2YgMC4yNSBkZWdyZWUgQ2Vsc2l1cy4gVGVtcGVyYXR1cmUgcmVhZGluZ3MgY2FuIGJlCitjb25maWd1cmVkIGVpdGhlciBmb3IgdHdvJ3MgY29tcGxlbWVudCBmb3JtYXQgb3IgIk9mZnNldCA2NCIgZm9ybWF0LAord2hlcmVpbiA2NCBpcyBzdWJ0cmFjdGVkIGZyb20gdGhlIHJhdyB2YWx1ZSB0byBnZXQgdGhlIHRlbXBlcmF0dXJlIHZhbHVlLgorCitUaGUgZGF0YXNoZWV0IGlzIHZlcnkgZGV0YWlsZWQgYW5kIGRlc2NyaWJlcyBhIHByb2NlZHVyZSBmb3IgZGV0ZXJtaW5pbmcKK2FuIG9wdGltYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIGF1dG9tYXRpYyBQV00gY29udHJvbC4KKworRmFuIFNwZWVkIENvbnRyb2wKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBkcml2ZXIgZXhwb3NlcyB0d28gdHJpcCBwb2ludHMgcGVyIFBXTSBjaGFubmVsLgorCitwb2ludDE6IFNldCB0aGUgUFdNIHNwZWVkIGF0IHRoZSBsb3dlciB0ZW1wZXJhdHVyZSBib3VuZAorcG9pbnQyOiBTZXQgdGhlIFBXTSBzcGVlZCBhdCB0aGUgaGlnaGVyIHRlbXBlcmF0dXJlIGJvdW5kCisKK1RoZSBBRFQ3NDd4IHdpbGwgc2NhbGUgdGhlIFBXTSBsaW5lYXJseSBiZXR3ZWVuIHRoZSBsb3dlciBhbmQgaGlnaGVyIFBXTQorc3BlZWQgd2hlbiB0aGUgdGVtcGVyYXR1cmUgaXMgYmV0d2VlbiB0aGUgdHdvIHRlbXBlcmF0dXJlIGJvdW5kYXJpZXMuCitUZW1wZXJhdHVyZSBib3VuZGFyaWVzIGFyZSBhc3NvY2lhdGVkIHRvIHRlbXBlcmF0dXJlIGNoYW5uZWxzIHJhdGhlciB0aGFuCitQV00gb3V0cHV0cywgYW5kIGEgZ2l2ZW4gUFdNIG91dHB1dCBjYW4gYmUgY29udHJvbGxlZCBieSBzZXZlcmFsIHRlbXBlcmF0dXJlCitjaGFubmVscy4gQXMgYSByZXN1bHQsIHRoZSBBRFQ3NDd4IG1heSBjb21wdXRlIG1vcmUgdGhhbiBvbmUgUFdNIHZhbHVlCitmb3IgYSBjaGFubmVsIGF0IGEgZ2l2ZW4gdGltZSwgaW4gd2hpY2ggY2FzZSB0aGUgbWF4aW11bSB2YWx1ZSAoZmFzdGVzdAorZmFuIHNwZWVkKSBpcyBhcHBsaWVkLiBQV00gdmFsdWVzIHJhbmdlIGZyb20gMCAob2ZmKSB0byAyNTUgKGZ1bGwgc3BlZWQpLgorCitGYW4gc3BlZWQgbWF5IGJlIHNldCB0byBtYXhpbXVtIHdoZW4gdGhlIHRlbXBlcmF0dXJlIHNlbnNvciBhc3NvY2lhdGVkIHdpdGgKK3RoZSBQV00gY29udHJvbCBleGNlZWRzIHRlbXAjX21heC4KKworTm90ZXMKKy0tLS0tCisKK1RoZSBuVmlkaWEgYmluYXJ5IGRyaXZlciBwcmVzZW50cyBhbiBBRFQ3NDczIGNoaXAgdmlhIGFuIG9uLWNhcmQgaTJjIGJ1cy4KK1VuZm9ydHVuYXRlbHksIHRoZXkgZmFpbCB0byBzZXQgdGhlIGkyYyBhZGFwdGVyIGNsYXNzLCBzbyB0aGlzIGRyaXZlciBtYXkKK2ZhaWwgdG8gZmluZCB0aGUgY2hpcCB1bnRpbCB0aGUgbnZpZGlhIGRyaXZlciBpcyBwYXRjaGVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9hbWM2ODIxIGIvRG9jdW1lbnRhdGlvbi9od21vbi9hbWM2ODIxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlZDgzNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2FtYzY4MjEKQEAgLTAsMCArMSwxMDIgQEAKK0tlcm5lbCBkcml2ZXIgYW1jNjgyMQorPT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKwlUZXhhcyBJbnN0cnVtZW50cyBBTUM2ODIxCisJUHJlZml4OiAnYW1jNjgyMScKKwlBZGRyZXNzZXMgc2Nhbm5lZDogMHgxOCwgMHgxOSwgMHgxYSwgMHgyYywgMHgyZCwgMHgyZSwgMHg0YywgMHg0ZCwgMHg0ZQorCURhdGFzaGVldDogaHR0cDovL2ZvY3VzLnRpLmNvbS9kb2NzL3Byb2QvZm9sZGVycy9wcmludC9hbWM2ODIxLmh0bWwKKworQXV0aG9yczoKKwlUb21heiBNZXJ0ZWxqIDx0b21hei5tZXJ0ZWxqQGd1ZXN0LmFybmVzLnNpPgorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBUZXhhcyBJbnN0cnVtZW50cyBhbWM2ODIxIGNoaXAuCitUaGUgY2hpcCBoYXMgb25lIG9uLWNoaXAgYW5kIG9uZSByZW1vdGUgdGVtcGVyYXR1cmUgc2Vuc29yIGFuZCBvbmUgcHdtIGZhbgorcmVndWxhdG9yLgorVGhlIHB3bSBjYW4gYmUgY29udHJvbGxlZCBlaXRoZXIgZnJvbSBzb2Z0d2FyZSBvciBhdXRvbWF0aWNhbGx5LgorCitUaGUgZHJpdmVyIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgc2Vuc29yIGFjY2Vzc2VzIGluIHN5c2ZzOgorCit0ZW1wMV9pbnB1dAkJcm8Jb24tY2hpcCB0ZW1wZXJhdHVyZQordGVtcDFfbWluCQlydwkiCit0ZW1wMV9tYXgJCXJ3CSIKK3RlbXAxX2NyaXQJIAlydwkiCit0ZW1wMV9taW5fYWxhcm0JCXJvCSIKK3RlbXAxX21heF9hbGFybQkJcm8JIgordGVtcDFfY3JpdF9hbGFybQlybwkiCisKK3RlbXAyX2lucHV0CQlybwlyZW1vdGUgdGVtcGVyYXR1cmUKK3RlbXAyX21pbgkJcncJIgordGVtcDJfbWF4CQlydwkiCit0ZW1wMl9jcml0CSAJcncJIgordGVtcDJfbWluX2FsYXJtCQlybwkiCit0ZW1wMl9tYXhfYWxhcm0JCXJvCSIKK3RlbXAyX2NyaXRfYWxhcm0Jcm8JIgordGVtcDJfZmF1bHQJCXJvCSIKKworZmFuMV9pbnB1dAkgCXJvCXRhY2hvbWV0ZXIgc3BlZWQKK2ZhbjFfbWluCQlydwkiCitmYW4xX21heAkJcncJIgorZmFuMV9mYXVsdAkgCXJvCSIKK2ZhbjFfZGl2CQlydwlGYW4gZGl2aXNvciBjYW4gYmUgZWl0aGVyIDIgb3IgNC4KKworcHdtMQkJCXJ3CXB3bTEKK3B3bTFfZW5hYmxlCQlydwlyZWd1bGF0b3IgbW9kZSwgMT1vcGVuIGxvb3AsIDI9ZmFuIGNvbnRyb2xsZWQKKwkJCQlieSByZW1vdGUgdGVtcGVyYXR1cmUsIDM9ZmFuIGNvbnRyb2xsZWQgYnkKKwkJCQljb21iaW5hdGlvbiBvZiB0aGUgb24tY2hpcCB0ZW1wZXJhdHVyZSBhbmQKKwkJCQlyZW1vdGUtc2Vuc29yIHRlbXBlcmF0dXJlLAorcHdtMV9hdXRvX2NoYW5uZWxzX3RlbXAgcm8JMSBpZiBwd21fZW5hYmxlPT0yLCAzIGlmIHB3bV9lbmFibGU9PTMKK3B3bTFfYXV0b19wb2ludDFfcHdtCXJvCUhhcmR3aXJlZCB0byAwLCBzaGFyZWQgZm9yIGJvdGgKKwkJCQl0ZW1wZXJhdHVyZSBjaGFubmVscy4KK3B3bTFfYXV0b19wb2ludDJfcHdtCXJ3CVRoaXMgdmFsdWUgaXMgc2hhcmVkIGZvciBib3RoIHRlbXBlcmF0dXJlCisJCQkJY2hhbm5lbHMuCitwd20xX2F1dG9fcG9pbnQzX3B3bQlydwlIYXJkd2lyZWQgdG8gMjU1LCBzaGFyZWQgZm9yIGJvdGgKKwkJCQl0ZW1wZXJhdHVyZSBjaGFubmVscy4KKwordGVtcDFfYXV0b19wb2ludDFfdGVtcAlybwlIYXJkd2lyZWQgdG8gdGVtcDJfYXV0b19wb2ludDFfdGVtcAorCQkJCXdoaWNoIGlzIHJ3LiBCZWxvdyB0aGlzIHRlbXBlcmF0dXJlIGZhbiBzdG9wcy4KK3RlbXAxX2F1dG9fcG9pbnQyX3RlbXAJcncJVGhlIGxvdy10ZW1wZXJhdHVyZSBsaW1pdCBvZiB0aGUgcHJvcG9ydGlvbmFsCisJCQkJcmFuZ2UuIEJlbG93IHRoaXMgdGVtcGVyYXR1cmUKKwkJCQlwd20xID0gcHdtMV9hdXRvX3BvaW50Ml9wd20uIEl0IGNhbiBnbyBmcm9tCisJCQkJMCBkZWdyZWUgQyB0byAxMjQgZGVncmVlIEMgaW4gc3RlcHMgb2YKKwkJCQk0IGRlZ3JlZSBDLiBSZWFkIGl0IG91dCBhZnRlciB3cml0aW5nIHRvIGdldAorCQkJCXRoZSBhY3R1YWwgdmFsdWUuCit0ZW1wMV9hdXRvX3BvaW50M190ZW1wCXJ3CUFib3ZlIHRoaXMgdGVtcGVyYXR1cmUgZmFuIHJ1bnMgYXQgbWF4aW11bQorCQkJCXNwZWVkLiBJdCBjYW4gZ28gZnJvbSB0ZW1wMV9hdXRvX3BvaW50Ml90ZW1wLgorCQkJCUl0IGNhbiBvbmx5IGhhdmUgY2VydGFpbiBkaXNjcmV0ZSB2YWx1ZXMKKwkJCQl3aGljaCBkZXBlbmQgb24gdGVtcDFfYXV0b19wb2ludDJfdGVtcCBhbmQKKwkJCQlwd20xX2F1dG9fcG9pbnQyX3B3bS4gUmVhZCBpdCBvdXQgYWZ0ZXIKKwkJCQl3cml0aW5nIHRvIGdldCB0aGUgYWN0dWFsIHZhbHVlLgorCit0ZW1wMl9hdXRvX3BvaW50MV90ZW1wCXJ3CU11c3QgYmUgYmV0d2VlbiAwIGRlZ3JlZSBDIGFuZCA2MyBkZWdyZWUgQyBhbmQKKwkJCQlpdCBkZWZpbmVzIHRoZSBwYXNzaXZlIGNvb2xpbmcgdGVtcGVyYXR1cmUuCisJCQkJQmVsb3cgdGhpcyB0ZW1wZXJhdHVyZSB0aGUgZmFuIHN0b3BzIGluCisJCQkJdGhlIGNsb3NlZCBsb29wIG1vZGUuCit0ZW1wMl9hdXRvX3BvaW50Ml90ZW1wCXJ3CVRoZSBsb3ctdGVtcGVyYXR1cmUgbGltaXQgb2YgdGhlIHByb3BvcnRpb25hbAorCQkJCXJhbmdlLiBCZWxvdyB0aGlzIHRlbXBlcmF0dXJlCisJCQkJcHdtMSA9IHB3bTFfYXV0b19wb2ludDJfcHdtLiBJdCBjYW4gZ28gZnJvbQorCQkJCTAgZGVncmVlIEMgdG8gMTI0IGRlZ3JlZSBDIGluIHN0ZXBzCisJCQkJb2YgNCBkZWdyZWUgQy4KKwordGVtcDJfYXV0b19wb2ludDNfdGVtcAlydwlBYm92ZSB0aGlzIHRlbXBlcmF0dXJlIGZhbiBydW5zIGF0IG1heGltdW0KKwkJCQlzcGVlZC4gSXQgY2FuIG9ubHkgaGF2ZSBjZXJ0YWluIGRpc2NyZXRlCisJCQkJdmFsdWVzIHdoaWNoIGRlcGVuZCBvbiB0ZW1wMl9hdXRvX3BvaW50Ml90ZW1wCisJCQkJYW5kIHB3bTFfYXV0b19wb2ludDJfcHdtLiBSZWFkIGl0IG91dCBhZnRlcgorCQkJCXdyaXRpbmcgdG8gZ2V0IGFjdHVhbCB2YWx1ZS4KKworCitNb2R1bGUgcGFyYW1ldGVycworLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgeW91ciBib2FyZCBoYXMgYSBCSU9TIHRoYXQgaW5pdGlhbGl6ZXMgdGhlIGFtYzY4MjEgY29ycmVjdGx5LCB5b3Ugc2hvdWxkCitsb2FkIHRoZSBtb2R1bGUgd2l0aDogaW5pdD0wLgorCitJZiB5b3VyIGJvYXJkIEJJT1MgZG9lc24ndCBpbml0aWFsaXplIHRoZSBjaGlwLCBvciB5b3Ugd2FudAorZGlmZmVyZW50IHNldHRpbmdzLCB5b3UgY2FuIHNldCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6Citpbml0PTEsCitwd21pbnY6IDAgZGVmYXVsdCBwd20gb3V0cHV0LCAxIGludmVydHMgcHdtIG91dHB1dC4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9hc2IxMDAgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2FzYjEwMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjczNjVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9hc2IxMDAKQEAgLTAsMCArMSw3MiBAQAorS2VybmVsIGRyaXZlciBhc2IxMDAKKz09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBDaGlwczoKKyAgKiBBc3VzIEFTQjEwMCBhbmQgQVNCMTAwLUEgIkJhY2giCisgICAgUHJlZml4OiAnYXNiMTAwJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgyZAorICAgIERhdGFzaGVldDogbm9uZSByZWxlYXNlZAorCitBdXRob3I6IE1hcmsgTS4gSG9mZm1hbiA8bWhvZmZtYW5AbGlnaHRsaW5rLmNvbT4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgdGhlIEFzdXMgQVNCMTAwIGFuZCBBU0IxMDAtQSAiQmFjaCIuCitUaGVzZSBhcmUgY3VzdG9tIEFTSUNzIGF2YWlsYWJsZSBvbmx5IG9uIEFzdXMgbWFpbmJvYXJkcy4gQXN1cyByZWZ1c2VzIHRvCitzdXBwbHkgYSBkYXRhc2hlZXQgZm9yIHRoZXNlIGNoaXBzLiBUaGFua3MgZ28gdG8gbWFueSBwZW9wbGUgd2hvIGhlbHBlZAoraW52ZXN0aWdhdGUgdGhlaXIgaGFyZHdhcmUsIGluY2x1ZGluZzoKKworVml0YWx5IFYuIEJ1cnNvdgorQWxleGFuZGVyIHZhbiBLYWFtIChhdXRob3Igb2YgTUJNIGZvciBXaW5kb3dzKQorQmVydHJpayBTaWtrZW4KKworVGhlIEFTQjEwMCBpbXBsZW1lbnRzIHNldmVuIHZvbHRhZ2Ugc2Vuc29ycywgdGhyZWUgZmFuIHJvdGF0aW9uIHNwZWVkCitzZW5zb3JzLCBmb3VyIHRlbXBlcmF0dXJlIHNlbnNvcnMsIFZJRCBsaW5lcyBhbmQgYWxhcm1zLiBJbiBhZGRpdGlvbiB0bwordGhlc2UsIHRoZSBBU0IxMDAtQSBhbHNvIGltcGxlbWVudHMgYSBzaW5nbGUgUFdNIGNvbnRyb2xsZXIgZm9yIGZhbnMgMiBhbmQKKzMgKGkuZS4gb25lIHNldHRpbmcgY29udHJvbHMgYm90aC4pIElmIHlvdSBoYXZlIGEgcGxhaW4gQVNCMTAwLCB0aGUgUFdNCitjb250cm9sbGVyIHdpbGwgc2ltcGx5IG5vdCB3b3JrIChvciBtYXliZSBpdCB3aWxsIGZvciB5b3UuLi4gaXQgZG9lc24ndCBmb3IKK21lKS4KKworVGVtcGVyYXR1cmVzIGFyZSBtZWFzdXJlZCBhbmQgcmVwb3J0ZWQgaW4gZGVncmVlcyBDZWxzaXVzLgorCitGYW4gc3BlZWRzIGFyZSByZXBvcnRlZCBpbiBSUE0gKHJvdGF0aW9ucyBwZXIgbWludXRlKS4gQW4gYWxhcm0gaXMKK3RyaWdnZXJlZCBpZiB0aGUgcm90YXRpb24gc3BlZWQgaGFzIGRyb3BwZWQgYmVsb3cgYSBwcm9ncmFtbWFibGUgbGltaXQuCisKK1ZvbHRhZ2Ugc2Vuc29ycyAoYWxzbyBrbm93biBhcyBJTiBzZW5zb3JzKSByZXBvcnQgdmFsdWVzIGluIHZvbHRzLgorCitUaGUgVklEIGxpbmVzIGVuY29kZSB0aGUgY29yZSB2b2x0YWdlIHZhbHVlOiB0aGUgdm9sdGFnZSBsZXZlbCB5b3VyCitwcm9jZXNzb3Igc2hvdWxkIHdvcmsgd2l0aC4gVGhpcyBpcyBoYXJkY29kZWQgYnkgdGhlIG1haW5ib2FyZCBhbmQvb3IKK3Byb2Nlc3NvciBpdHNlbGYuIEl0IGlzIGEgdmFsdWUgaW4gdm9sdHMuCisKK0FsYXJtczogKFRPRE8gcXVlc3Rpb24gbWFya3MgaW5kaWNhdGUgbWF5IG9yIG1heSBub3Qgd29yaykKKworMHgwMDAxID0+IGluMCAoPykKKzB4MDAwMiA9PiBpbjEgKD8pCisweDAwMDQgPT4gaW4yCisweDAwMDggPT4gaW4zCisweDAwMTAgPT4gdGVtcDEgKDEpCisweDAwMjAgPT4gdGVtcDIKKzB4MDA0MCA9PiBmYW4xCisweDAwODAgPT4gZmFuMgorMHgwMTAwID0+IGluNAorMHgwMjAwID0+IGluNSAoPykgKDIpCisweDA0MDAgPT4gaW42ICg/KSAoMikKKzB4MDgwMCA9PiBmYW4zCisweDEwMDAgPT4gY2hhc3NpcyBzd2l0Y2gKKzB4MjAwMCA9PiB0ZW1wMworCitBbGFybSBOb3RlczoKKworKDEpIFRoaXMgYWxhcm0gd2lsbCBvbmx5IHRyaWdnZXIgaWYgdGhlIGh5c3RlcmVzaXMgdmFsdWUgaXMgMTI3Qy4KK0kuZS4gaXQgYmVoYXZlcyB0aGUgc2FtZSBhcyB3ODM3ODFkLgorCisoMikgVGhlIG1pbiBhbmQgbWF4IHJlZ2lzdGVycyBmb3IgdGhlc2UgdmFsdWVzIGFwcGVhciB0bworYmUgcmVhZC1vbmx5IG9yIG90aGVyd2lzZSBzdHVjayBhdCAweDAwLgorCitUT0RPOgorKiBFeHBlcmltZW50IHdpdGggZmFuIGRpdmlzb3JzID4gOC4KKyogRXhwZXJpbWVudCB3aXRoIHRlbXAuIHNlbnNvciB0eXBlcy4KKyogQXJlIHRoZXJlIHJlYWxseSAxMyB2b2x0YWdlIGlucHV0cz8gUHJvYmFibHkgbm90Li4uCisqIENsZWFudXBzLCBubyBkb3VidC4uLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2FzYzc2MjEgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2FzYzc2MjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI4N2JlNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vYXNjNzYyMQpAQCAtMCwwICsxLDI5NiBAQAorS2VybmVsIGRyaXZlciBhc2M3NjIxCis9PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAgIEFuZGlnaWxvZyBhU0M3NjIxIGFuZCBhU0M3NjIxYQorICAgIFByZWZpeDogJ2FzYzc2MjEnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJjLCAweDJkLCAweDJlCisgICAgRGF0YXNoZWV0OiBodHRwOi8vd3d3LmZhaXJ2aWV3NS5jb20vbGludXgvYXNjNzYyMS9hc2M3NjIxLnBkZgorCitBdXRob3I6CisJCUdlb3JnZSBKb3NlcGgKKworRGVzY3JpcHRpb24gcHJvdmlkZWQgYnkgRGF2ZSBQaXZpbiBAIEFuZGlnaWxvZzoKKworQW5kaWdpbG9nIGhhcyBib3RoIHRoZSBQRUNJIGFuZCBwcmUtUEVDSSB2ZXJzaW9ucyBvZiB0aGUgSGVjZXRhLTYsIGFzCitJbnRlbCBjYWxscyB0aGVtLiBIZWNldGEtNmUgaGFzIGhpZ2ggZnJlcXVlbmN5IFBXTSBhbmQgSGVjZXRhLTZwIGhhcworYWRkZWQgUEVDSSBhbmQgYSA0dGggdGhlcm1hbCB6b25lLiBUaGUgQW5kaWdpbG9nIGFTQzc2MTEgaXMgdGhlCitIZWNldGEtNmUgcGFydCBhbmQgYVNDNzYyMSBpcyB0aGUgSGVjZXRhLTZwIHBhcnQuIFRoZXkgYXJlIGJvdGggaW4KK3ZvbHVtZSBwcm9kdWN0aW9uLCBzaGlwcGluZyB0byBJbnRlbCBhbmQgdGhlaXIgc3Vicy4KKworV2UgaGF2ZSBlbmhhbmNlZCBib3RoIHBhcnRzIHJlbGF0aXZlIHRvIHRoZSBnb3Zlcm5pbmcgSW50ZWwKK3NwZWNpZmljYXRpb24uIEZpcnN0IGVuaGFuY2VtZW50IGlzIHRlbXBlcmF0dXJlIHJlYWRpbmcgcmVzb2x1dGlvbi4gV2UKK2hhdmUgdXNlZCByZWdpc3RlcnMgYmVsb3cgMjBoIGZvciB2ZW5kb3Itc3BlY2lmaWMgZnVuY3Rpb25zIGluIGFkZGl0aW9uCit0byB0aG9zZSBpbiB0aGUgSW50ZWwtc3BlY2lmaWVkIHZlbmRvciByYW5nZS4KKworT3VyIGNvbnZlcnNpb24gcHJvY2VzcyBwcm9kdWNlcyBhIHJlc3VsdCB0aGF0IGlzIHJlcG9ydGVkIGFzIHR3byBieXRlcy4KK1RoZSBmYW4gc3BlZWQgY29udHJvbCB1c2VzIHRoaXMgZmluZXIgdmFsdWUgdG8gcHJvZHVjZSBhICJzdGVwLWxlc3MiIGZhbgorUFdNIG91dHB1dC4gVGhlc2UgdHdvIGJ5dGVzIGFyZSAicmVhZC1sb2NrZWQiIHRvIGd1YXJhbnRlZSB0aGF0IG9uY2UgYQoraGlnaCBvciBsb3cgYnl0ZSBpcyByZWFkLCB0aGUgb3RoZXIgYnl0ZSBpcyBsb2NrZWQtaW4gdW50aWwgYWZ0ZXIgdGhlCituZXh0IHJlYWQgb2YgYW55IHJlZ2lzdGVyLiBTbyB0byBnZXQgYW4gYXRvbWljIHJlYWRpbmcsIHJlYWQgaGlnaCBvciBsb3cKK2J5dGUsIHRoZW4gdGhlIHZlcnkgbmV4dCByZWFkIHNob3VsZCBiZSB0aGUgb3Bwb3NpdGUgYnl0ZS4gT3VyIGRhdGEKK3NoZWV0IHNheXMgMTAtYml0cyBvZiByZXNvbHV0aW9uLCBhbHRob3VnaCB5b3UgbWF5IGZpbmQgdGhlIGxvd2VyIGJpdHMKK2FyZSBhY3RpdmUsIHRoZXkgYXJlIG5vdCBuZWNlc3NhcmlseSByZWxpYWJsZSBvciB1c2VmdWwgZXh0ZXJuYWxseS4gV2UKK2Nob3NlIG5vdCB0byBtYXNrIHRoZW0uCisKK1dlIGVtcGxveSBzaWduaWZpY2FudCBmaWx0ZXJpbmcgdGhhdCBpcyB1c2VyIHR1bmFibGUgYXMgZGVzY3JpYmVkIGluIHRoZQorZGF0YSBzaGVldC4gT3VyIHRlbXBlcmF0dXJlIHJlcG9ydHMgYW5kIGZhbiBQV00gb3V0cHV0cyBhcmUgdmVyeSBzbW9vdGgKK3doZW4gY29tcGFyZWQgdG8gdGhlIGNvbXBldGl0aW9uLCBpbiBhZGRpdGlvbiB0byB0aGUgaGlnaGVyIHJlc29sdXRpb24KK3RlbXBlcmF0dXJlIHJlcG9ydHMuIFRoZSBzbW9vdGhlciBQV00gb3V0cHV0IGRvZXMgbm90IHJlcXVpcmUgdXNlcgoraW50ZXJ2ZW50aW9uLgorCitXZSBvZmZlciBHUElPIGZlYXR1cmVzIG9uIHRoZSBmb3JtZXIgVklEIHBpbnMuIFRoZXNlIGFyZSBvcGVuLWRyYWluCitvdXRwdXRzIG9yIGlucHV0cyBhbmQgbWF5IGJlIHVzZWQgYXMgZ2VuZXJhbCBwdXJwb3NlIEkvTyBvciBhcyBhbGFybQorb3V0cHV0cyB0aGF0IGFyZSBiYXNlZCBvbiB0ZW1wZXJhdHVyZSBsaW1pdHMuIFRoZXNlIGFyZSBpbiAxOWggYW5kIDFBaC4KKworV2Ugb2ZmZXIgZmxleGlibGUgbWFwcGluZyBvZiB0ZW1wZXJhdHVyZSByZWFkaW5ncyB0byB0aGVybWFsIHpvbmVzLiBBbnkKK3RlbXBlcmF0dXJlIG1heSBiZSBtYXBwZWQgdG8gYW55IHpvbmUsIHdoaWNoIGhhcyBhIGRlZmF1bHQgYXNzaWdubWVudAordGhhdCBmb2xsb3dzIEludGVsJ3Mgc3BlY3MuCisKK1NpbmNlIHRoZXJlIGlzIGEgZmFuIHRvIHpvbmUgYXNzaWdubWVudCB0aGF0IGFsbG93cyBmb3IgdGhlICJob3R0ZXIiIG9mCithIHNldCBvZiB6b25lcyB0byBjb250cm9sIHRoZSBQV00gb2YgYW4gaW5kaXZpZHVhbCBmYW4sIGJ1dCB0aGVyZSBpcyBubworaW5kaWNhdGlvbiB0byB0aGUgdXNlciwgd2UgaGF2ZSBhZGRlZCBhbiBpbmRpY2F0b3IgdGhhdCBzaG93cyB3aGljaCB6b25lCitpcyBjdXJyZW50bHkgY29udHJvbGxpbmcgdGhlIFBXTSBmb3IgYSBnaXZlbiBmYW4uIFRoaXMgaXMgaW4gcmVnaXN0ZXIKKzAwaC4KKworQm90aCByZW1vdGUgZGlvZGUgdGVtcGVyYXR1cmUgcmVhZGluZ3MgbWF5IGJlIGdpdmVuIGFuIG9mZnNldCB2YWx1ZSBzdWNoCit0aGF0IHRoZSByZXBvcnRlZCByZWFkaW5nIGFzIHdlbGwgYXMgdGhlIHRlbXBlcmF0dXJlIHVzZWQgdG8gZGV0ZXJtaW5lCitQV00gbWF5IGJlIG9mZnNldCBmb3Igc3lzdGVtIGNhbGlicmF0aW9uIHB1cnBvc2VzLgorCitQRUNJIEV4dGVuZGVkIGNvbmZpZ3VyYXRpb24gYWxsb3dzIGZvciBoYXZpbmcgbW9yZSB0aGFuIHR3byBkb21haW5zIHBlcgorUEVDSSBhZGRyZXNzIGFuZCBhbHNvIHByb3ZpZGVzIGFuIGVuYWJsaW5nIGZ1bmN0aW9uIGZvciBlYWNoIFBFQ0kKK2FkZHJlc3MuIE9uZSBjb3VsZCB1c2Ugb3VyIGZsZXhpYmxlIHpvbmUgYXNzaWdubWVudCB0byBoYXZlIGEgem9uZQorYXNzaWduZWQgdG8gdXAgdG8gNCBQRUNJIGFkZHJlc3Nlcy4gVGhpcyBpcyBub3QgcG9zc2libGUgaW4gdGhlIGRlZmF1bHQKK0ludGVsIGNvbmZpZ3VyYXRpb24uIFRoaXMgd291bGQgYmUgdXNlZnVsIGluIG11bHRpLUNQVSBzeXN0ZW1zIHdpdGgKK2luZGl2aWR1YWwgZmFucyBvbiBlYWNoIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIGluZGl2aWR1YWwgZmFuIGNvbnRyb2wuCitUaGlzIGlzIGluIHJlZ2lzdGVyIDBFaC4KKworVGhlIHRhY2hvbWV0ZXIgbWVhc3VyZW1lbnQgc3lzdGVtIGlzIGZsZXhpYmxlIGFuZCBhYmxlIHRvIGFkYXB0IHRvIG1hbnkKK2ZhbiB0eXBlcy4gV2UgY2FuIGFsc28gc3VwcG9ydCBwdWxzZS1zdHJldGNoZWQgUFdNIHNvIHRoYXQgMy13aXJlIGZhbnMKK21heSBiZSB1c2VkLiBUaGVzZSBjaGFyYWN0ZXJpc3RpY3MgYXJlIGluIHJlZ2lzdGVycyAwNGggdG8gMDdoLgorCitGaW5hbGx5LCB3ZSBoYXZlIGFkZGVkIGEgdGFjaCBkaXNhYmxlIGZ1bmN0aW9uIHRoYXQgdHVybnMgb2ZmIHRoZSB0YWNoCittZWFzdXJlbWVudCBzeXN0ZW0gZm9yIGluZGl2aWR1YWwgdGFjaHMgaW4gb3JkZXIgdG8gc2F2ZSBwb3dlci4gVGhhdCBpcworaW4gcmVnaXN0ZXIgNzVoLgorCistLQorYVNDNzYyMSBQcm9kdWN0IERlc2NyaXB0aW9uCisKK1RoZSBhU0M3NjIxIGhhcyBhIHR3byB3aXJlIGRpZ2l0YWwgaW50ZXJmYWNlIGNvbXBhdGlibGUgd2l0aCBTTUJ1cyAyLjAuCitVc2luZyBhIDEwLWJpdCBBREMsIHRoZSBhU0M3NjIxIG1lYXN1cmVzIHRoZSB0ZW1wZXJhdHVyZSBvZiB0d28gcmVtb3RlIGRpb2RlCitjb25uZWN0ZWQgdHJhbnNpc3RvcnMgYXMgd2VsbCBhcyBpdHMgb3duIGRpZS4gU3VwcG9ydCBmb3IgUGxhdGZvcm0KK0Vudmlyb25tZW50YWwgQ29udHJvbCBJbnRlcmZhY2UgKFBFQ0kpIGlzIGluY2x1ZGVkLgorCitVc2luZyB0ZW1wZXJhdHVyZSBpbmZvcm1hdGlvbiBmcm9tIHRoZXNlIGZvdXIgem9uZXMsIGFuIGF1dG9tYXRpYyBmYW4gc3BlZWQKK2NvbnRyb2wgYWxnb3JpdGhtIGlzIGVtcGxveWVkIHRvIG1pbmltaXplIGFjb3VzdGljIGltcGFjdCB3aGlsZSBhY2hpZXZpbmcKK3JlY29tbWVuZGVkIENQVSB0ZW1wZXJhdHVyZSB1bmRlciB2YXJ5aW5nIG9wZXJhdGlvbmFsIGxvYWRzLgorCitUbyBzZXQgZmFuIHNwZWVkLCB0aGUgYVNDNzYyMSBoYXMgdGhyZWUgaW5kZXBlbmRlbnQgcHVsc2Ugd2lkdGggbW9kdWxhdGlvbgorKFBXTSkgb3V0cHV0cyB0aGF0IGFyZSBjb250cm9sbGVkIGJ5IG9uZSwgb3IgYSBjb21iaW5hdGlvbiBvZiB0aHJlZSwKK3RlbXBlcmF0dXJlIHpvbmVzLiBCb3RoIGhpZ2gtIGFuZCBsb3ctZnJlcXVlbmN5IFBXTSByYW5nZXMgYXJlIHN1cHBvcnRlZC4KKworVGhlIGFTQzc2MjEgYWxzbyBpbmNsdWRlcyBhIGRpZ2l0YWwgZmlsdGVyIHRoYXQgY2FuIGJlIGludm9rZWQgdG8gc21vb3RoCit0ZW1wZXJhdHVyZSByZWFkaW5ncyBmb3IgYmV0dGVyIGNvbnRyb2wgb2YgZmFuIHNwZWVkIGFuZCBtaW5pbXVtIGFjb3VzdGljCitpbXBhY3QuCisKK1RoZSBhU0M3NjIxIGhhcyB0YWNob21ldGVyIGlucHV0cyB0byBtZWFzdXJlIGZhbiBzcGVlZCBvbiB1cCB0byBmb3VyIGZhbnMuCitMaW1pdCBhbmQgc3RhdHVzIHJlZ2lzdGVycyBmb3IgYWxsIG1lYXN1cmVkIHZhbHVlcyBhcmUgaW5jbHVkZWQgdG8gYWxlcnQKK3RoZSBzeXN0ZW0gaG9zdCB0aGF0IGFueSBtZWFzdXJlbWVudHMgYXJlIG91dHNpZGUgb2YgcHJvZ3JhbW1lZCBsaW1pdHMKK3ZpYSBzdGF0dXMgcmVnaXN0ZXJzLgorCitTeXN0ZW0gdm9sdGFnZXMgb2YgVkNDUCwgMi41ViwgMy4zViwgNS4wViwgYW5kIDEyViBtb3RoZXJib2FyZCBwb3dlciBhcmUKK21vbml0b3JlZCBlZmZpY2llbnRseSB3aXRoIGludGVybmFsIHNjYWxpbmcgcmVzaXN0b3JzLgorCitGZWF0dXJlcworLSBTdXBwb3J0cyBQRUNJIGludGVyZmFjZSBhbmQgbW9uaXRvcnMgaW50ZXJuYWwgYW5kIHJlbW90ZSB0aGVybWFsIGRpb2RlcworLSAyLXdpcmUsIFNNQnVzIDIuMCBjb21wbGlhbnQsIHNlcmlhbCBpbnRlcmZhY2UKKy0gMTAtYml0IEFEQworLSBNb25pdG9ycyBWQ0NQLCAyLjVWLCAzLjNWLCA1LjBWLCBhbmQgMTJWIG1vdGhlcmJvYXJkL3Byb2Nlc3NvciBzdXBwbGllcworLSBQcm9ncmFtbWFibGUgYXV0b25vbW91cyBmYW4gY29udHJvbCBiYXNlZCBvbiB0ZW1wZXJhdHVyZSByZWFkaW5ncworLSBOb2lzZSBmaWx0ZXJpbmcgb2YgdGVtcGVyYXR1cmUgcmVhZGluZyBmb3IgZmFuIHNwZWVkIGNvbnRyb2wKKy0gMC4yNUMgZGlnaXRhbCB0ZW1wZXJhdHVyZSBzZW5zb3IgcmVzb2x1dGlvbgorLSAzIFBXTSBmYW4gc3BlZWQgY29udHJvbCBvdXRwdXRzIGZvciAyLSwgMy0gb3IgNC13aXJlIGZhbnMgYW5kIHVwIHRvIDQgZmFuCisJdGFjaG9tZXRlciBpbnB1dHMKKy0gRW5oYW5jZWQgbWVhc3VyZWQgdGVtcGVyYXR1cmUgdG8gVGVtcGVyYXR1cmUgWm9uZSBhc3NpZ25tZW50LgorLSBQcm92aWRlcyBoaWdoIGFuZCBsb3cgUFdNIGZyZXF1ZW5jeSByYW5nZXMKKy0gMyBHUElPIHBpbnMgZm9yIGN1c3RvbSB1c2UKKy0gMjQtTGVhZCBRU09QIHBhY2thZ2UKKworQ29uZmlndXJhdGlvbiBOb3RlcworPT09PT09PT09PT09PT09PT09PQorCitFeGNlcHQgd2hlcmUgbm90ZWQgYmVsb3csIHRoZSBzeXNmcyBlbnRyaWVzIGNyZWF0ZWQgYnkgdGhpcyBkcml2ZXIgZm9sbG93Cit0aGUgc3RhbmRhcmRzIGRlZmluZWQgaW4gInN5c2ZzLWludGVyZmFjZSIuCisKK3RlbXAxX3NvdXJjZQorCTAgCShkZWZhdWx0KSBwZWNpX2xlZ2FjeSA9IDAsIFJlbW90ZSAxIFRlbXBlcmF0dXJlCisJCQlwZWNpX2xlZ2FjeSA9IDEsIFBFQ0kgUHJvY2Vzc29yIFRlbXBlcmF0dXJlIDAKKwkxIAlSZW1vdGUgMSBUZW1wZXJhdHVyZQorCTIgCVJlbW90ZSAyIFRlbXBlcmF0dXJlCisJMyAJSW50ZXJuYWwgVGVtcGVyYXR1cmUKKwk0IAlQRUNJIFByb2Nlc3NvciBUZW1wZXJhdHVyZSAwCisJNSAJUEVDSSBQcm9jZXNzb3IgVGVtcGVyYXR1cmUgMQorCTYgCVBFQ0kgUHJvY2Vzc29yIFRlbXBlcmF0dXJlIDIKKwk3ICBQRUNJIFByb2Nlc3NvciBUZW1wZXJhdHVyZSAzCisKK3RlbXAyX3NvdXJjZQorCTAgCShkZWZhdWx0KSBJbnRlcm5hbCBUZW1wZXJhdHVyZQorCTEgCVJlbW90ZSAxIFRlbXBlcmF0dXJlCisJMiAJUmVtb3RlIDIgVGVtcGVyYXR1cmUKKwkzIAlJbnRlcm5hbCBUZW1wZXJhdHVyZQorCTQgCVBFQ0kgUHJvY2Vzc29yIFRlbXBlcmF0dXJlIDAKKwk1IAlQRUNJIFByb2Nlc3NvciBUZW1wZXJhdHVyZSAxCisJNiAJUEVDSSBQcm9jZXNzb3IgVGVtcGVyYXR1cmUgMgorCTcgCVBFQ0kgUHJvY2Vzc29yIFRlbXBlcmF0dXJlIDMKKwordGVtcDNfc291cmNlCisJMCAJKGRlZmF1bHQpIFJlbW90ZSAyIFRlbXBlcmF0dXJlCisJMSAJUmVtb3RlIDEgVGVtcGVyYXR1cmUKKwkyIAlSZW1vdGUgMiBUZW1wZXJhdHVyZQorCTMgCUludGVybmFsIFRlbXBlcmF0dXJlCisJNCAJUEVDSSBQcm9jZXNzb3IgVGVtcGVyYXR1cmUgMAorCTUgCVBFQ0kgUHJvY2Vzc29yIFRlbXBlcmF0dXJlIDEKKwk2IAlQRUNJIFByb2Nlc3NvciBUZW1wZXJhdHVyZSAyCisJNyAJUEVDSSBQcm9jZXNzb3IgVGVtcGVyYXR1cmUgMworCit0ZW1wNF9zb3VyY2UKKwkwIAkoZGVmYXVsdCkgcGVjaV9sZWdhY3kgPSAwLCBQRUNJIFByb2Nlc3NvciBUZW1wZXJhdHVyZSAwCisJCQlwZWNpX2xlZ2FjeSA9IDEsIFJlbW90ZSAxIFRlbXBlcmF0dXJlCisJMSAJUmVtb3RlIDEgVGVtcGVyYXR1cmUKKwkyIAlSZW1vdGUgMiBUZW1wZXJhdHVyZQorCTMgCUludGVybmFsIFRlbXBlcmF0dXJlCisJNCAJUEVDSSBQcm9jZXNzb3IgVGVtcGVyYXR1cmUgMAorCTUgCVBFQ0kgUHJvY2Vzc29yIFRlbXBlcmF0dXJlIDEKKwk2IAlQRUNJIFByb2Nlc3NvciBUZW1wZXJhdHVyZSAyCisJNyAJUEVDSSBQcm9jZXNzb3IgVGVtcGVyYXR1cmUgMworCit0ZW1wWzEtNF1fc21vb3RoaW5nX2VuYWJsZQordGVtcFsxLTRdX3Ntb290aGluZ190aW1lCisJU21vb3RocyBzcGlrZXMgaW4gdGVtcCByZWFkaW5ncyBjYXVzZWQgYnkgbm9pc2UuCisJVmFsaWQgdmFsdWVzIGluIG1pbGxpc2Vjb25kcyBhcmU6CisJMzUwMDAKKwkxNzYwMAorCTExODAwCisJIDcwMDAKKwkgNDQwMAorCSAzMDAwCisJIDE2MDAKKwkgIDgwMAorCit0ZW1wWzEtNF1fY3JpdAorCVdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgem9uZSB0ZW1wZXJhdHVyZSByZWFjaGVzIHRoaXMgdmFsdWUsCisJQUxMIHB3bSBvdXRwdXRzIHdpbGwgZ290IHRvIDEwMCUuCisKK3RlbXBbNS04XV9pbnB1dAordGVtcFs1LThdX2VuYWJsZQorCVRoZSBhU0M3NjIxIGNhbiBhbHNvIHJlYWQgdGVtcGVyYXR1cmVzIHByb3ZpZGVkIGJ5IHRoZSBwcm9jZXNzb3IKKwl2aWEgdGhlIFBFQ0kgYnVzLiAgVXN1YWxseSB0aGVzZSBhcmUgImNvcmUiIHRlbXBzIGFuZCBhcmUgcmVsYXRpdmUKKwl0byB0aGUgcG9pbnQgd2hlcmUgdGhlIGF1dG9tYXRpYyB0aGVybWFsIGNvbnRyb2wgY2lyY3VpdCBzdGFydHMKKwl0aHJvdHRsaW5nLiAgVGhpcyBtZWFucyB0aGF0IHRoZXNlIGFyZSB1c3VhbGx5IG5lZ2F0aXZlIG51bWJlcnMuCisKK3B3bVsxLTNdX2VuYWJsZQorCTAJCUZhbiBvZmYuCisJMQkJRmFuIG9uIG1hbnVhbCBjb250cm9sLgorCTIJCUZhbiBvbiBhdXRvbWF0aWMgY29udHJvbCBhbmQgd2lsbCBydW4gYXQgdGhlIG1pbmltdW0gcHdtCisJCQkJaWYgdGhlIHRlbXBlcmF0dXJlIGZvciB0aGUgem9uZSBpcyBiZWxvdyB0aGUgbWluaW11bS4KKwkzCQlGYW4gb24gYXV0b21hdGljIGNvbnRyb2wgYnV0IHdpbGwgYmUgb2ZmIGlmIHRoZSB0ZW1wZXJhdHVyZQorCQkJCWZvciB0aGUgem9uZSBpcyBiZWxvdyB0aGUgbWluaW11bS4KKwk0LTI1NAlJZ25vcmVkLgorCTI1NQkJRmFuIG9uIGZ1bGwuCisKK3B3bVsxLTNdX2F1dG9fY2hhbm5lbHMKKwlCaXRtYXAgYXMgZGVzY3JpYmVkIGluIHN5c2N0bC1pbnRlcmZhY2Ugd2l0aCB0aGUgZm9sbG93aW5nCisJZXhjZXB0aW9ucy4uLgorCU9ubHkgdGhlIGZvbGxvd2luZyBjb21iaW5hdGlvbiBvZiB6b25lcyAoYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgbWFza3MpCisJYXJlIHZhbGlkOgorCTEKKwkyCisJMworCTIsMworCTEsMiwzCisJNAorCTEsMiwzLDQKKworCVNwZWNpYWwgdmFsdWVzOgorCTAJCQlEaXNhYmxlZC4KKwkxNgkJRmFuIG9uIG1hbnVhbCBjb250cm9sLgorCTMxCQlGYW4gb24gZnVsbC4KKworCitwd21bMS0zXV9pbnZlcnQKKwlXaGVuIHNldCwgaW52ZXJ0cyB0aGUgbWVhbmluZyBvZiBwd21bMS0zXS4KKwlpLmUuICB3aGVuIHB3bSA9IDAsIHRoZSBmYW4gd2lsbCBiZSBvbiBmdWxsIGFuZAorCXdoZW4gcHdtID0gMjU1IHRoZSBmYW4gd2lsbCBiZSBvZmYuCisKK3B3bVsxLTNdX2ZyZXEKKwlQV00gZnJlcXVlbmN5IGluIEh6CisJVmFsaWQgdmFsdWVzIGluIEh6IGFyZToKKworCTEwCisJMTUKKwkyMworCTMwICAoZGVmYXVsdCkKKwkzOAorCTQ3CisJNjIKKwk5NAorCTIzMDAwCisJMjQwMDAKKwkyNTAwMAorCTI2MDAwCisJMjcwMDAKKwkyODAwMAorCTI5MDAwCisJMzAwMDAKKworCVNldHRpbmcgYW55IG90aGVyIHZhbHVlIHdpbGwgYmUgaWdub3JlZC4KKworcGVjaV9lbmFibGUKKwlFbmFibGVzIG9yIGRpc2FibGVzIFBFQ0kKKworcGVjaV9hdmcKKwlJbnB1dCBmaWx0ZXIgYXZlcmFnZSB0aW1lLgorCisJMCAJMCBTZWMuIChubyBTbW9vdGhpbmcpIChkZWZhdWx0KQorCTEgCTAuMjUgU2VjLgorCTIgCTAuNSBTZWMuCisJMyAJMS4wIFNlYy4KKwk0IAkyLjAgU2VjLgorCTUgCTQuMCBTZWMuCisJNiAJOC4wIFNlYy4KKwk3IAkwLjAgU2VjLgorCitwZWNpX2xlZ2FjeQorCisJMAlTdGFuZGFyZCBNb2RlIChkZWZhdWx0KQorCQlSZW1vdGUgRGlvZGUgMSByZWFkaW5nIGlzIGFzc29jaWF0ZWQgd2l0aAorCQlUZW1wZXJhdHVyZSBab25lIDEsIFBFQ0kgaXMgYXNzb2NpYXRlZCB3aXRoCisJCVpvbmUgNAorCisJMQlMZWdhY3kgTW9kZQorCQlQRUNJIGlzIGFzc29jaWF0ZWQgd2l0aCBUZW1wZXJhdHVyZSBab25lIDEsCisJCVJlbW90ZSBEaW9kZSAxIGlzIGFzc29jaWF0ZWQgd2l0aCBab25lIDQKKworcGVjaV9kaW9kZQorCURpb2RlIGZpbHRlcgorCisJMAkwLjI1IFNlYy4KKwkxIAkxLjEgU2VjLgorCTIgCTIuNCBTZWMuICAoZGVmYXVsdCkKKwkzIAkzLjQgU2VjLgorCTQgCTUuMCBTZWMuCisJNSAJNi44IFNlYy4KKwk2IAkxMC4yIFNlYy4KKwk3IAkxNi40IFNlYy4KKworcGVjaV80ZG9tYWluCisJRm91ciBkb21haW4gZW5hYmxlCisKKwkwIAkxIG9yIDIgRG9tYWlucyBmb3IgZW5hYmxlZCBwcm9jZXNzb3JzIChkZWZhdWx0KQorCTEgCTMgb3IgNCBEb21haW5zIGZvciBlbmFibGVkIHByb2Nlc3NvcnMKKworcGVjaV9kb21haW4KKwlEb21haW4KKworCTAgCVByb2Nlc3NvciBjb250YWlucyBhIHNpbmdsZSBkb21haW4gKDApIAkgKGRlZmF1bHQpCisJMSAJUHJvY2Vzc29yIGNvbnRhaW5zIHR3byBkb21haW5zICgwLDEpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2NvcmV0ZW1wIGIvRG9jdW1lbnRhdGlvbi9od21vbi9jb3JldGVtcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWM1YTliCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9jb3JldGVtcApAQCAtMCwwICsxLDE4MSBAQAorS2VybmVsIGRyaXZlciBjb3JldGVtcAorPT09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogQWxsIEludGVsIENvcmUgZmFtaWx5CisgICAgUHJlZml4OiAnY29yZXRlbXAnCisgICAgQ1BVSUQ6IGZhbWlseSAweDYsIG1vZGVscyAweGUgKFBlbnRpdW0gTSBEQyksIDB4ZiAoQ29yZSAyIERDIDY1bm0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNiAoQ29yZSAyIFNDIDY1bm0pLCAweDE3IChQZW5yeW4gNDVubSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDFhIChOZWhhbGVtKSwgMHgxYyAoQXRvbSksIDB4MWUgKEx5bm5maWVsZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDI2IChUdW5uZWwgQ3JlZWsgQXRvbSksIDB4MjcgKE1lZGZpZWxkIEF0b20pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNiAoQ2VkYXIgVHJhaWwgQXRvbSkKKyAgICBEYXRhc2hlZXQ6IEludGVsIDY0IGFuZCBJQS0zMiBBcmNoaXRlY3R1cmVzIFNvZnR3YXJlIERldmVsb3BlcidzIE1hbnVhbAorICAgICAgICAgICAgICAgVm9sdW1lIDNBOiBTeXN0ZW0gUHJvZ3JhbW1pbmcgR3VpZGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly9zb2Z0d2FyZWNvbW11bml0eS5pbnRlbC5jb20vV2lraS9Nb2JpbGl0eS83MjAuaHRtCisKK0F1dGhvcjogUnVkb2xmIE1hcmVrCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorVGhpcyBkcml2ZXIgcGVybWl0cyByZWFkaW5nIHRoZSBEVFMgKERpZ2l0YWwgVGVtcGVyYXR1cmUgU2Vuc29yKSBlbWJlZGRlZAoraW5zaWRlIEludGVsIENQVXMuIFRoaXMgZHJpdmVyIGNhbiByZWFkIGJvdGggdGhlIHBlci1jb3JlIGFuZCBwZXItcGFja2FnZQordGVtcGVyYXR1cmUgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIHNlbnNvcnMuIFRoZSBwZXItcGFja2FnZSBzZW5zb3IgaXMgbmV3OworYXMgb2Ygbm93LCBpdCBpcyBwcmVzZW50IG9ubHkgaW4gdGhlIFNhbmR5QnJpZGdlIHBsYXRmb3JtLiBUaGUgZHJpdmVyIHdpbGwKK3Nob3cgdGhlIHRlbXBlcmF0dXJlIG9mIGFsbCBjb3JlcyBpbnNpZGUgYSBwYWNrYWdlIHVuZGVyIGEgc2luZ2xlIGRldmljZQorZGlyZWN0b3J5IGluc2lkZSBod21vbi4KKworVGVtcGVyYXR1cmUgaXMgbWVhc3VyZWQgaW4gZGVncmVlcyBDZWxzaXVzIGFuZCBtZWFzdXJlbWVudCByZXNvbHV0aW9uIGlzCisxIGRlZ3JlZSBDLiBWYWxpZCB0ZW1wZXJhdHVyZXMgYXJlIGZyb20gMCB0byBUak1heCBkZWdyZWVzIEMsIGJlY2F1c2UKK3RoZSBhY3R1YWwgdmFsdWUgb2YgdGVtcGVyYXR1cmUgcmVnaXN0ZXIgaXMgaW4gZmFjdCBhIGRlbHRhIGZyb20gVGpNYXguCisKK1RlbXBlcmF0dXJlIGtub3duIGFzIFRqTWF4IGlzIHRoZSBtYXhpbXVtIGp1bmN0aW9uIHRlbXBlcmF0dXJlIG9mIHByb2Nlc3NvciwKK3doaWNoIGRlcGVuZHMgb24gdGhlIENQVSBtb2RlbC4gU2VlIHRhYmxlIGJlbG93LiBBdCB0aGlzIHRlbXBlcmF0dXJlLCBwcm90ZWN0aW9uCittZWNoYW5pc20gd2lsbCBwZXJmb3JtIGFjdGlvbnMgdG8gZm9yY2libHkgY29vbCBkb3duIHRoZSBwcm9jZXNzb3IuIEFsYXJtCittYXkgYmUgcmFpc2VkLCBpZiB0aGUgdGVtcGVyYXR1cmUgZ3Jvd3MgZW5vdWdoIChtb3JlIHRoYW4gVGpNYXgpIHRvIHRyaWdnZXIKK3RoZSBPdXQtT2YtU3BlYyBiaXQuIEZvbGxvd2luZyB0YWJsZSBzdW1tYXJpemVzIHRoZSBleHBvcnRlZCBzeXNmcyBmaWxlczoKKworQWxsIFN5c2ZzIGVudHJpZXMgYXJlIG5hbWVkIHdpdGggdGhlaXIgY29yZV9pZCAocmVwcmVzZW50ZWQgaGVyZSBieSAnWCcpLgordGVtcFhfaW5wdXQJIC0gQ29yZSB0ZW1wZXJhdHVyZSAoaW4gbWlsbGlkZWdyZWVzIENlbHNpdXMpLgordGVtcFhfbWF4CSAtIEFsbCBjb29saW5nIGRldmljZXMgc2hvdWxkIGJlIHR1cm5lZCBvbiAob24gQ29yZTIpLgordGVtcFhfY3JpdAkgLSBNYXhpbXVtIGp1bmN0aW9uIHRlbXBlcmF0dXJlIChpbiBtaWxsaWRlZ3JlZXMgQ2Vsc2l1cykuCit0ZW1wWF9jcml0X2FsYXJtIC0gU2V0IHdoZW4gT3V0LW9mLXNwZWMgYml0IGlzIHNldCwgbmV2ZXIgY2xlYXJzLgorCQkgICBDb3JyZWN0IENQVSBvcGVyYXRpb24gaXMgbm8gbG9uZ2VyIGd1YXJhbnRlZWQuCit0ZW1wWF9sYWJlbAkgLSBDb250YWlucyBzdHJpbmcgIkNvcmUgWCIsIHdoZXJlIFggaXMgcHJvY2Vzc29yCisJCSAgIG51bWJlci4gRm9yIFBhY2thZ2UgdGVtcCwgdGhpcyB3aWxsIGJlICJQaHlzaWNhbCBpZCBZIiwKKwkJICAgd2hlcmUgWSBpcyB0aGUgcGFja2FnZSBudW1iZXIuCisKK09uIENQVSBtb2RlbHMgd2hpY2ggc3VwcG9ydCBpdCwgVGpNYXggaXMgcmVhZCBmcm9tIGEgbW9kZWwtc3BlY2lmaWMgcmVnaXN0ZXIuCitPbiBvdGhlciBtb2RlbHMsIGl0IGlzIHNldCB0byBhbiBhcmJpdHJhcnkgdmFsdWUgYmFzZWQgb24gd2VhayBoZXVyaXN0aWNzLgorSWYgdGhlc2UgaGV1cmlzdGljcyBkb24ndCB3b3JrIGZvciB5b3UsIHlvdSBjYW4gcGFzcyB0aGUgY29ycmVjdCBUak1heCB2YWx1ZQorYXMgYSBtb2R1bGUgcGFyYW1ldGVyICh0am1heCkuCisKK0FwcGVuZGl4IEEuIEtub3duIFRqTWF4IGxpc3RzIChUQkQpOgorU29tZSBpbmZvcm1hdGlvbiBjb21lcyBmcm9tIGFyay5pbnRlbC5jb20KKworUHJvY2VzcwkJUHJvY2Vzc29yCQkJCQlUak1heChDKQorCisyMm5tCQlDb3JlIGk1L2k3IFByb2Nlc3NvcnMKKwkJaTcgMzkyMFhNLCAzODIwUU0sIDM3MjBRTSwgMzY2N1UsIDM1MjBNCQkxMDUKKwkJaTUgMzQyN1UsIDMzNjBNLzMzMjBNCQkJCTEwNQorCQlpNyAzNzcwLzM3NzBLCQkJCQkxMDUKKwkJaTUgMzU3MC8zNTcwSywgMzU1MCwgMzQ3MC8zNDUwCQkJMTA1CisJCWk3IDM3NzBTCQkJCQkxMDMKKwkJaTUgMzU3MFMvMzU1MFMsIDM0NzVTLzM0NzBTLzM0NTBTCQkxMDMKKwkJaTcgMzc3MFQJCQkJCTk0CisJCWk1IDM1NzBUCQkJCQk5NAorCQlpNSAzNDcwVAkJCQkJOTEKKworMzJubQkJQ29yZSBpMy9pNS9pNyBQcm9jZXNzb3JzCisJCWk3IDI2MDAJCQkJCQk5OAorCQlpNyA2NjBVTS82NDAvNjIwLCA2NDBMTS82MjAsIDYyME0sIDYxMEUJCTEwNQorCQlpNSA1NDBVTS81MjAvNDMwLCA1NDBNLzUyMC80NTAvNDMwCQkxMDUKKwkJaTMgMzMwRSwgMzcwTS8zNTAvMzMwCQkJCTkwIHJQR0EsIDEwNSBCR0EKKwkJaTMgMzMwVU0JCQkJCTEwNQorCiszMm5tCQlDb3JlIGk3IEV4dHJlbWUgUHJvY2Vzc29ycworCQk5ODBYCQkJCQkJMTAwCisKKzMybm0JCUNlbGVyb24gUHJvY2Vzc29ycworCQlVMzQwMAkJCQkJCTEwNQorCQlQNDUwNS9QNDUwMCAJCQkJCTkwCisKKzMybm0JCUF0b20gUHJvY2Vzc29ycworCQlTMTI2MC8xMjIwCQkJCQk5NQorCQlTMTI0MAkJCQkJCTEwMgorCQlaMjQ2MAkJCQkJCTkwCisJCVoyNzYwCQkJCQkJOTAKKwkJRDI3MDAvMjU1MC8yNTAwCQkJCQkxMDAKKwkJTjI4NTAvMjgwMC8yNjUwLzI2MDAJCQkJMTAwCisKKzQ1bm0JCVhlb24gUHJvY2Vzc29ycyA1NDAwIFF1YWQtQ29yZQorCQlYNTQ5MiwgWDU0ODIsIFg1NDcyLCBYNTQ3MCwgWDU0NjAsIFg1NDUwCTg1CisJCUU1NDcyLCBFNTQ2MiwgRTU0NTAvNDAvMzAvMjAvMTAvMDUJCTg1CisJCUw1NDA4CQkJCQkJOTUKKwkJTDU0MzAsIEw1NDIwLCBMNTQxMAkJCQk3MAorCis0NW5tCQlYZW9uIFByb2Nlc3NvcnMgNTIwMCBEdWFsLUNvcmUKKwkJWDUyODIsIFg1MjcyLCBYNTI3MCwgWDUyNjAJCQk5MAorCQlFNTI0MAkJCQkJCTkwCisJCUU1MjA1LCBFNTIyMAkJCQkJNzAsIDkwCisJCUw1MjQwCQkJCQkJNzAKKwkJTDUyMzgsIEw1MjE1CQkJCQk5NQorCis0NW5tCQlBdG9tIFByb2Nlc3NvcnMKKwkJRDUyNS81MTAvNDI1LzQxMAkJCQkxMDAKKwkJSzUyNS81MTAvNDI1LzQxMAkJCQkxMDAKKwkJWjY3MC82NTAJCQkJCTkwCisJCVo1NjAvNTUwLzU0MC81MzBQLzUzMC81MjBQVC81MjAvNTE1LzUxMFBULzUxMFAJOTAKKwkJWjUxMC81MDAJCQkJCTkwCisJCU41NzAvNTUwCQkJCQkxMDAKKwkJTjQ3NS80NzAvNDU1LzQ1MAkJCQkxMDAKKwkJTjI4MC8yNzAJCQkJCTkwCisJCTMzMC8yMzAJCQkJCQkxMjUKKwkJRTY4MC82NjAvNjQwLzYyMAkJCQk5MAorCQlFNjgwVC82NjBULzY0MFQvNjIwVAkJCQkxMTAKKwkJRTY2NUMvNjQ1QwkJCQkJOTAKKwkJRTY2NUNULzY0NUNUCQkJCQkxMTAKKwkJQ0U0MTcwLzQxNTAvNDExMAkJCQkxMTAKKwkJQ0U0MjAwIHNlcmllcwkJCQkJdW5rbm93bgorCQlDRTUzMDAgc2VyaWVzCQkJCQl1bmtub3duCisKKzQ1bm0JCUNvcmUyIFByb2Nlc3NvcnMKKwkJU29sbyBVTFYgU1UzNTAwLzMzMDAJCQkJMTAwCisJCVQ5OTAwLzk4MDAvOTYwMC85NTUwLzk1MDAvOTQwMC85MzAwLzgzMDAvODEwMAkxMDUKKwkJVDY2NzAvNjUwMC82NDAwCQkJCQkxMDUKKwkJVDY2MDAJCQkJCQk5MAorCQlTVTk2MDAvOTQwMC85MzAwCQkJCTEwNQorCQlTUDk2MDAvOTQwMAkJCQkJMTA1CisJCVNMOTYwMC85NDAwLzkzODAvOTMwMAkJCQkxMDUKKwkJUDk3MDAvOTYwMC85NTAwLzg4MDAvODcwMC84NjAwLzg0MDAvNzU3MAkxMDUKKwkJUDc1NTAvNzQ1MAkJCQkJOTAKKworNDVubQkJQ29yZTIgUXVhZCBQcm9jZXNzb3JzCisJCVE5MTAwLzkwMDAJCQkJCTEwMAorCis0NW5tCQlDb3JlMiBFeHRyZW1lIFByb2Nlc3NvcnMKKwkJWDkxMDAvOTAwMAkJCQkJMTA1CisJCVFYOTMwMAkJCQkJCTEwMAorCis0NW5tCQlDb3JlIGkzL2k1L2k3IFByb2Nlc3NvcnMKKwkJaTcgOTQwWE0vOTIwCQkJCQkxMDAKKwkJaTcgODQwUU0vODIwLzc0MC83MjAJCQkJMTAwCisKKzQ1bm0JCUNlbGVyb24gUHJvY2Vzc29ycworCQlTVTIzMDAJCQkJCQkxMDAKKwkJOTAwIAkJCQkJCTEwNQorCis2NW5tCQlDb3JlMiBEdW8gUHJvY2Vzc29ycworCQlTb2xvIFUyMjAwLCBVMjEwMAkJCQkxMDAKKwkJVTc3MDAvNzYwMC83NTAwCQkJCQkxMDAKKwkJVDc4MDAvNzcwMC83NjAwLzc1MDAvNzQwMC83MzAwLzcyNTAvNzIwMC83MTAwCTEwMAorCQlUNTg3MC81NjcwLzU2MDAvNTU1MC81NTAwLzU0NzAvNTQ1MC81MzAwLzUyNzAJMTAwCisJCVQ1MjUwCQkJCQkJMTAwCisJCVQ1ODAwLzU3NTAvNTIwMAkJCQkJODUKKwkJTDc3MDAvNzUwMC83NDAwLzczMDAvNzIwMAkJCTEwMAorCis2NW5tCQlDb3JlMiBFeHRyZW1lIFByb2Nlc3NvcnMKKwkJWDc5MDAvNzgwMAkJCQkJMTAwCisKKzY1bm0JCUNvcmUgRHVvIFByb2Nlc3NvcnMKKwkJVTI1MDAvMjQwMAkJCQkJMTAwCisJCVQyNzAwLzI2MDAvMjQ1MC8yNDAwLzIzNTAvMjMwMEUvMjMwMC8yMjUwLzIwNTAJMTAwCisJCUwyNTAwLzI0MDAvMjMwMAkJCQkJMTAwCisKKzY1bm0JCUNvcmUgU29sbyBQcm9jZXNzb3JzCisJCVUxNTAwLzE0MDAvMTMwMAkJCQkJMTAwCisJCVQxNDAwLzEzNTAvMTMwMC8xMjUwCQkJCTEwMAorCis2NW5tCQlYZW9uIFByb2Nlc3NvcnMgNTAwMCBRdWFkLUNvcmUKKwkJWDUwMDAJCQkJCQk5MC05NQorCQlFNTAwMAkJCQkJCTgwCisJCUw1MDAwCQkJCQkJNzAKKwkJTDUzMTgJCQkJCQk5NQorCis2NW5tCQlYZW9uIFByb2Nlc3NvcnMgNTAwMCBEdWFsLUNvcmUKKwkJNTA4MCwgNTA2MywgNTA2MCwgNTA1MCwgNTAzMAkJCTgwLTkwCisJCTUxNjAsIDUxNTAsIDUxNDgsIDUxNDAsIDUxMzAsIDUxMjAsIDUxMTAJODAKKwkJTDUxMzgJCQkJCQkxMDAKKworNjVubQkJQ2VsZXJvbiBQcm9jZXNzb3JzCisJCVQxNzAwLzE2MDAJCQkJCTEwMAorCQk1NjAvNTUwLzU0MC81MzAJCQkJCTEwMApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9kYTkwNTIgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2RhOTA1MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmM1MTM0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9kYTkwNTIKQEAgLTAsMCArMSw2MSBAQAorU3VwcG9ydGVkIGNoaXBzOgorICAqIERpYWxvZyBTZW1pY29uZHVjdG9ycyBEQTkwNTItQkMgYW5kIERBOTA1My1BQS9CeCBQTUlDcworICAgIFByZWZpeDogJ2RhOTA1MicKKyAgICBEYXRhc2hlZXQ6IERhdGFzaGVldCBpcyBub3QgcHVibGljbHkgYXZhaWxhYmxlLgorCitBdXRob3JzOiBEYXZpZCBEYWp1biBDaGVuIDxkY2hlbkBkaWFzZW1pLmNvbT4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoZSBEQTkwNTIvNTMgcHJvdmlkZXMgYW4gQW5hbG9ndWUgdG8gRGlnaXRhbCBDb252ZXJ0ZXIgKEFEQykgd2l0aCAxMCBiaXRzCityZXNvbHV0aW9uIGFuZCB0cmFjayBhbmQgaG9sZCBjaXJjdWl0cnkgY29tYmluZWQgd2l0aCBhbiBhbmFsb2d1ZSBpbnB1dAorbXVsdGlwbGV4ZXIuIFRoZSBhbmFsb2d1ZSBpbnB1dCBtdWx0aXBsZXhlciB3aWxsIGFsbG93IGNvbnZlcnNpb24gb2YgdXAgdG8gMTAKK2RpZmZlcmVudCBpbnB1dHMuIFRoZSB0cmFjayBhbmQgaG9sZCBjaXJjdWl0IGVuc3VyZXMgc3RhYmxlIGlucHV0IHZvbHRhZ2VzIGF0Cit0aGUgaW5wdXQgb2YgdGhlIEFEQyBkdXJpbmcgdGhlIGNvbnZlcnNpb24uCisKK1RoZSBBREMgaXMgdXNlZCB0byBtZWFzdXJlIHRoZSBmb2xsb3dpbmcgaW5wdXRzOgorQ2hhbm5lbCAwOiBWRERPVVQgLSBtZWFzdXJlbWVudCBvZiB0aGUgc3lzdGVtIHZvbHRhZ2UKK0NoYW5uZWwgMTogSUNIIC0gaW50ZXJuYWwgYmF0dGVyeSBjaGFyZ2VyIGN1cnJlbnQgbWVhc3VyZW1lbnQKK0NoYW5uZWwgMjogVEJBVCAtIG91dHB1dCBmcm9tIHRoZSBiYXR0ZXJ5IE5UQworQ2hhbm5lbCAzOiBWQkFUIC0gbWVhc3VyZW1lbnQgb2YgdGhlIGJhdHRlcnkgdm9sdGFnZQorQ2hhbm5lbCA0OiBBRENfSU40IC0gaGlnaCBpbXBlZGFuY2UgaW5wdXQgKDAgLSAyLjVWKQorQ2hhbm5lbCA1OiBBRENfSU41IC0gaGlnaCBpbXBlZGFuY2UgaW5wdXQgKDAgLSAyLjVWKQorQ2hhbm5lbCA2OiBBRENfSU42IC0gaGlnaCBpbXBlZGFuY2UgaW5wdXQgKDAgLSAyLjVWKQorQ2hhbm5lbCA3OiBYWSAtIFRTSSBpbnRlcmZhY2UgdG8gbWVhc3VyZSB0aGUgWCBhbmQgWSB2b2x0YWdlIG9mIHRoZSB0b3VjaAorCSAgIHNjcmVlbiByZXNpc3RpdmUgcG90ZW50aW9tZXRlcnMKK0NoYW5uZWwgODogSW50ZXJuYWwgVGp1bmMuIC0gc2Vuc2UgKGludGVybmFsIHRlbXAuIHNlbnNvcikKK0NoYW5uZWwgOTogVkJCQVQgLSBtZWFzdXJlbWVudCBvZiB0aGUgYmFja3VwIGJhdHRlcnkgdm9sdGFnZQorCitCeSB1c2luZyBzeXNmcyBhdHRyaWJ1dGVzIHdlIGNhbiBtZWFzdXJlIHRoZSBzeXN0ZW0gdm9sdGFnZSBWRERPVVQsIHRoZSBiYXR0ZXJ5CitjaGFyZ2luZyBjdXJyZW50IElDSCwgYmF0dGVyeSB0ZW1wZXJhdHVyZSBUQkFULCBiYXR0ZXJ5IGp1bmN0aW9uIHRlbXBlcmF0dXJlCitUSlVOQywgYmF0dGVyeSB2b2x0YWdlIFZCQVQgYW5kIHRoZSBiYWNrIHVwIGJhdHRlcnkgdm9sdGFnZSBWQkJBVC4KKworVm9sdGFnZSBNb25pdG9yaW5nCistLS0tLS0tLS0tLS0tLS0tLS0KKworVm9sdGFnZXMgYXJlIHNhbXBsZWQgYnkgYSAxMCBiaXQgQURDLgorCitUaGUgYmF0dGVyeSB2b2x0YWdlIGlzIGNhbGN1bGF0ZWQgYXM6CisJTWlsbGkgdm9sdCA9ICgoQURDIHZhbHVlICogMTAwMCkgLyA1MTIpICsgMjUwMAorCitUaGUgYmFja3VwIGJhdHRlcnkgdm9sdGFnZSBpcyBjYWxjdWxhdGVkIGFzOgorCU1pbGxpIHZvbHQgPSAoQURDIHZhbHVlICogMjUwMCkgLyA1MTI7CisKK1RoZSB2b2x0YWdlcyBvbiBBREMgY2hhbm5lbHMgNCwgNSBhbmQgNiBhcmUgY2FsY3VsYXRlZCBhczoKKwlNaWxsaSB2b2x0ID0gKEFEQyB2YWx1ZSAqIDI1MDApIC8gMTAyMworCitUZW1wZXJhdHVyZSBNb25pdG9yaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RlbXBlcmF0dXJlcyBhcmUgc2FtcGxlZCBieSBhIDEwIGJpdCBBREMuICBKdW5jdGlvbiBhbmQgYmF0dGVyeSB0ZW1wZXJhdHVyZXMKK2FyZSBtb25pdG9yZWQgYnkgdGhlIEFEQyBjaGFubmVscy4KKworVGhlIGp1bmN0aW9uIHRlbXBlcmF0dXJlIGlzIGNhbGN1bGF0ZWQ6CisJRGVncmVlcyBjZWxzaXVzID0gMS43MDggKiAoVEpVTkNfUkVTIC0gVF9PRkZTRVQpIC0gMTA4LjgKK1RoZSBqdW5jdGlvbiB0ZW1wZXJhdHVyZSBhdHRyaWJ1dGUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBkcml2ZXIuCisKK1RoZSBiYXR0ZXJ5IHRlbXBlcmF0dXJlIGlzIGNhbGN1bGF0ZWQ6CisJRGVncmVlIENlbHNpdXMgPSAxIC8gKHQxICsgMS8yOTgpLSAyNzMKK3doZXJlIHQxID0gKDEvQikqIGxuKCggQURDdmFsICogMi41KS8oUjI1KklUQkFUKjI1NSkpCitEZWZhdWx0IHZhbHVlcyBvZiBSMjUsIEIsIElUQkFUIGFyZSAxMGUzLCAzMzgwIGFuZCA1MGUtNiByZXNwZWN0aXZlbHkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2RhOTA1NSBiL0RvY3VtZW50YXRpb24vaHdtb24vZGE5MDU1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1NWMzZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2RhOTA1NQpAQCAtMCwwICsxLDQ3IEBACitTdXBwb3J0ZWQgY2hpcHM6CisgICogRGlhbG9nIFNlbWljb25kdWN0b3JzIERBOTA1NSBQTUlDCisgICAgUHJlZml4OiAnZGE5MDU1JworICAgIERhdGFzaGVldDogRGF0YXNoZWV0IGlzIG5vdCBwdWJsaWNseSBhdmFpbGFibGUuCisKK0F1dGhvcnM6IERhdmlkIERhanVuIENoZW4gPGRjaGVuQGRpYXNlbWkuY29tPgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIERBOTA1NSBwcm92aWRlcyBhbiBBbmFsb2d1ZSB0byBEaWdpdGFsIENvbnZlcnRlciAoQURDKSB3aXRoIDEwIGJpdHMKK3Jlc29sdXRpb24gYW5kIHRyYWNrIGFuZCBob2xkIGNpcmN1aXRyeSBjb21iaW5lZCB3aXRoIGFuIGFuYWxvZ3VlIGlucHV0CittdWx0aXBsZXhlci4gVGhlIGFuYWxvZ3VlIGlucHV0IG11bHRpcGxleGVyIHdpbGwgYWxsb3cgY29udmVyc2lvbiBvZiB1cCB0byA1CitkaWZmZXJlbnQgaW5wdXRzLiBUaGUgdHJhY2sgYW5kIGhvbGQgY2lyY3VpdCBlbnN1cmVzIHN0YWJsZSBpbnB1dCB2b2x0YWdlcyBhdAordGhlIGlucHV0IG9mIHRoZSBBREMgZHVyaW5nIHRoZSBjb252ZXJzaW9uLgorCitUaGUgQURDIGlzIHVzZWQgdG8gbWVhc3VyZSB0aGUgZm9sbG93aW5nIGlucHV0czoKK0NoYW5uZWwgMDogVkRET1VUIC0gbWVhc3VyZW1lbnQgb2YgdGhlIHN5c3RlbSB2b2x0YWdlCitDaGFubmVsIDE6IEFEQ19JTjEgLSBoaWdoIGltcGVkYW5jZSBpbnB1dCAoMCAtIDIuNVYpCitDaGFubmVsIDI6IEFEQ19JTjIgLSBoaWdoIGltcGVkYW5jZSBpbnB1dCAoMCAtIDIuNVYpCitDaGFubmVsIDM6IEFEQ19JTjMgLSBoaWdoIGltcGVkYW5jZSBpbnB1dCAoMCAtIDIuNVYpCitDaGFubmVsIDQ6IEludGVybmFsIFRqdW5jLiAtIHNlbnNlIChpbnRlcm5hbCB0ZW1wLiBzZW5zb3IpCisKK0J5IHVzaW5nIHN5c2ZzIGF0dHJpYnV0ZXMgd2UgY2FuIG1lYXN1cmUgdGhlIHN5c3RlbSB2b2x0YWdlIFZERE9VVCwKK2NoaXAganVuY3Rpb24gdGVtcGVyYXR1cmUgYW5kIGF1eGlsaWFyeSBjaGFubmVscyB2b2x0YWdlcy4KKworVm9sdGFnZSBNb25pdG9yaW5nCistLS0tLS0tLS0tLS0tLS0tLS0KKworVm9sdGFnZXMgYXJlIHNhbXBsZWQgaW4gYSBBVVRPIG1vZGUgaXQgY2FuIGJlIG1hbnVhbGx5IHNhbXBsZWQgdG9vIGFuZCByZXN1bHRzCithcmUgc3RvcmVkIGluIGEgMTAgYml0IEFEQy4KKworVGhlIHN5c3RlbSB2b2x0YWdlIGlzIGNhbGN1bGF0ZWQgYXM6CisJTWlsbGkgdm9sdCA9ICgoQURDIHZhbHVlICogMTAwMCkgLyA4NSkgKyAyNTAwCisKK1RoZSB2b2x0YWdlcyBvbiBBREMgY2hhbm5lbHMgMSwgMiBhbmQgMyBhcmUgY2FsY3VsYXRlZCBhczoKKwlNaWxsaSB2b2x0ID0gKEFEQyB2YWx1ZSAqIDEwMDApIC8gMTAyCisKK1RlbXBlcmF0dXJlIE1vbml0b3JpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGVtcGVyYXR1cmVzIGFyZSBzYW1wbGVkIGJ5IGEgMTAgYml0IEFEQy4gIEp1bmN0aW9uIHRlbXBlcmF0dXJlcworYXJlIG1vbml0b3JlZCBieSB0aGUgQURDIGNoYW5uZWxzLgorCitUaGUganVuY3Rpb24gdGVtcGVyYXR1cmUgaXMgY2FsY3VsYXRlZDoKKwlEZWdyZWVzIGNlbHNpdXMgPSAtMC40MDg0ICogKEFEQ19SRVMgLSBUX09GRlNFVCkgKyAzMDcuNjMzMgorVGhlIGp1bmN0aW9uIHRlbXBlcmF0dXJlIGF0dHJpYnV0ZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlci4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vZG1lMTczNyBiL0RvY3VtZW50YXRpb24vaHdtb24vZG1lMTczNwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDI5MzUxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9kbWUxNzM3CkBAIC0wLDAgKzEsMzI4IEBACitLZXJuZWwgZHJpdmVyIGRtZTE3MzcKKz09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogU01TQyBETUUxNzM3IGFuZCBjb21wYXRpYmxlcyAobGlrZSBBc3VzIEE4MDAwKQorICAgIFByZWZpeDogJ2RtZTE3MzcnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJjLCAweDJkLCAweDJlCisgICAgRGF0YXNoZWV0OiBQcm92aWRlZCBieSBTTVNDIHVwb24gcmVxdWVzdCBhbmQgdW5kZXIgTkRBCisgICogU01TQyBTQ0gzMTEyLCBTQ0gzMTE0LCBTQ0gzMTE2CisgICAgUHJlZml4OiAnc2NoMzExeCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZSwgYWRkcmVzcyByZWFkIGZyb20gU3VwZXItSS9PIGNvbmZpZyBzcGFjZQorICAgIERhdGFzaGVldDogQXZhaWxhYmxlIG9uIHRoZSBJbnRlcm5ldAorICAqIFNNU0MgU0NINTAyNworICAgIFByZWZpeDogJ3NjaDUwMjcnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJjLCAweDJkLCAweDJlCisgICAgRGF0YXNoZWV0OiBQcm92aWRlZCBieSBTTVNDIHVwb24gcmVxdWVzdCBhbmQgdW5kZXIgTkRBCisgICogU01TQyBTQ0g1MTI3CisgICAgUHJlZml4OiAnc2NoNTEyNycKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZSwgYWRkcmVzcyByZWFkIGZyb20gU3VwZXItSS9PIGNvbmZpZyBzcGFjZQorICAgIERhdGFzaGVldDogUHJvdmlkZWQgYnkgU01TQyB1cG9uIHJlcXVlc3QgYW5kIHVuZGVyIE5EQQorCitBdXRob3JzOgorICAgIEp1ZXJnIEhhZWZsaWdlciA8anVlcmdoQGdtYWlsLmNvbT4KKworCitNb2R1bGUgUGFyYW1ldGVycworLS0tLS0tLS0tLS0tLS0tLS0KKworKiBmb3JjZV9zdGFydDogYm9vbAlFbmFibGVzIHRoZSBtb25pdG9yaW5nIG9mIHZvbHRhZ2UsIGZhbiBhbmQgdGVtcCBpbnB1dHMKKwkJCWFuZCBQV00gb3V0cHV0IGNvbnRyb2wgZnVuY3Rpb25zLiBVc2luZyB0aGlzIHBhcmFtZXRlcgorCQkJc2hvdWxkbid0IGJlIHJlcXVpcmVkIHNpbmNlIHRoZSBCSU9TIHVzdWFsbHkgdGFrZXMgY2FyZQorCQkJb2YgdGhpcy4KKyogcHJvYmVfYWxsX2FkZHI6IGJvb2wJSW5jbHVkZSBub24tc3RhbmRhcmQgTFBDIGFkZHJlc3NlcyAweDE2MmUgYW5kIDB4MTY0ZQorCQkJd2hlbiBwcm9iaW5nIGZvciBJU0EgZGV2aWNlcy4gVGhpcyBpcyByZXF1aXJlZCBmb3IgdGhlCisJCQlmb2xsb3dpbmcgYm9hcmRzOgorCQkJLSBWSUEgRVBJQSBTTjE4MDAwCisKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgdGhlIGhhcmR3YXJlIG1vbml0b3JpbmcgY2FwYWJpbGl0aWVzIG9mIHRoZQorU01TQyBETUUxNzM3IGFuZCBBc3VzIEE4MDAwICh3aGljaCBhcmUgdGhlIHNhbWUpLCBTTVNDIFNDSDUwMjcsIFNDSDMxMXgsCithbmQgU0NINTEyNyBTdXBlci1JL08gY2hpcHMuIFRoZXNlIGNoaXBzIGZlYXR1cmUgbW9uaXRvcmluZyBvZiAzIHRlbXAgc2Vuc29ycwordGVtcFsxLTNdICgyIHJlbW90ZSBkaW9kZXMgYW5kIDEgaW50ZXJuYWwpLCA4IHZvbHRhZ2VzIGluWzAtN10gKDcgZXh0ZXJuYWwgYW5kCisxIGludGVybmFsKSBhbmQgdXAgdG8gNiBmYW4gc3BlZWRzIGZhblsxLTZdLiBBZGRpdGlvbmFsbHksIHRoZSBjaGlwcyBpbXBsZW1lbnQKK3VwIHRvIDUgUFdNIG91dHB1dHMgcHdtWzEtMyw1LTZdIGZvciBjb250cm9sbGluZyBmYW4gc3BlZWRzIGJvdGggbWFudWFsbHkgYW5kCithdXRvbWF0aWNhbGx5LgorCitGb3IgdGhlIERNRTE3MzcsIEE4MDAwIGFuZCBTQ0g1MDI3LCBmYW5bMS0yXSBhbmQgcHdtWzEtMl0gYXJlIGFsd2F5cyBwcmVzZW50LgorRmFuWzMtNl0gYW5kIHB3bVszLDUtNl0gYXJlIG9wdGlvbmFsIGZlYXR1cmVzIGFuZCB0aGVpciBhdmFpbGFiaWxpdHkgZGVwZW5kcyBvbgordGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGNoaXAuIFRoZSBkcml2ZXIgd2lsbCBkZXRlY3Qgd2hpY2ggZmVhdHVyZXMgYXJlCitwcmVzZW50IGR1cmluZyBpbml0aWFsaXphdGlvbiBhbmQgY3JlYXRlIHRoZSBzeXNmcyBhdHRyaWJ1dGVzIGFjY29yZGluZ2x5LgorCitGb3IgdGhlIFNDSDMxMXggYW5kIFNDSDUxMjcsIGZhblsxLTNdIGFuZCBwd21bMS0zXSBhcmUgYWx3YXlzIHByZXNlbnQgYW5kCitmYW5bNC02XSBhbmQgcHdtWzUtNl0gZG9uJ3QgZXhpc3QuCisKK1RoZSBoYXJkd2FyZSBtb25pdG9yaW5nIGZlYXR1cmVzIG9mIHRoZSBETUUxNzM3LCBBODAwMCwgYW5kIFNDSDUwMjcgYXJlIG9ubHkKK2FjY2Vzc2libGUgdmlhIFNNQnVzLCB3aGlsZSB0aGUgU0NIMzExeCBhbmQgU0NINTEyNyBvbmx5IHByb3ZpZGUgYWNjZXNzIHZpYQordGhlIElTQSBidXMuIFRoZSBkcml2ZXIgd2lsbCB0aGVyZWZvcmUgcmVnaXN0ZXIgaXRzZWxmIGFzIGFuIEkyQyBjbGllbnQgZHJpdmVyCitpZiBpdCBkZXRlY3RzIGEgRE1FMTczNywgQTgwMDAsIG9yIFNDSDUwMjcgYW5kIGFzIGEgcGxhdGZvcm0gZHJpdmVyIGlmIGl0CitkZXRlY3RzIGEgU0NIMzExeCBvciBTQ0g1MTI3IGNoaXAuCisKKworVm9sdGFnZSBNb25pdG9yaW5nCistLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHZvbHRhZ2UgaW5wdXRzIGFyZSBzYW1wbGVkIHdpdGggMTItYml0IHJlc29sdXRpb24gYW5kIGhhdmUgaW50ZXJuYWwKK3NjYWxpbmcgcmVzaXN0b3JzLiBUaGUgdmFsdWVzIHJldHVybmVkIGJ5IHRoZSBkcml2ZXIgdGhlcmVmb3JlIHJlZmxlY3QgdHJ1ZQorbWlsbGl2b2x0cyBhbmQgZG9uJ3QgbmVlZCBzY2FsaW5nLiBUaGUgdm9sdGFnZSBpbnB1dHMgYXJlIG1hcHBlZCBhcyBmb2xsb3dzCisodGhlIGxhc3QgY29sdW1uIGluZGljYXRlcyB0aGUgaW5wdXQgcmFuZ2VzKToKKworRE1FMTczNywgQTgwMDA6CisJaW4wOiArNVZUUgkoKzVWIHN0YW5kYnkpCQkwViAtIDYuNjRWCisJaW4xOiBWY2NwCShwcm9jZXNzb3IgY29yZSkJMFYgLSAzVgorCWluMjogVkNDCShpbnRlcm5hbCArMy4zVikJMFYgLSA0LjM4VgorCWluMzogKzVWCQkJCTBWIC0gNi42NFYKKwlpbjQ6ICsxMlYJCQkJMFYgLSAxNlYKKwlpbjU6IFZUUgkoKzMuM1Ygc3RhbmRieSkJCTBWIC0gNC4zOFYKKwlpbjY6IFZiYXQJKCszLjBWKQkJCTBWIC0gNC4zOFYKKworU0NIMzExeDoKKwlpbjA6ICsyLjVWCQkJCTBWIC0gMy4zMlYKKwlpbjE6IFZjY3AJKHByb2Nlc3NvciBjb3JlKQkwViAtIDJWCisJaW4yOiBWQ0MJKGludGVybmFsICszLjNWKQkwViAtIDQuMzhWCisJaW4zOiArNVYJCQkJMFYgLSA2LjY0VgorCWluNDogKzEyVgkJCQkwViAtIDE2VgorCWluNTogVlRSCSgrMy4zViBzdGFuZGJ5KQkJMFYgLSA0LjM4VgorCWluNjogVmJhdAkoKzMuMFYpCQkJMFYgLSA0LjM4VgorCitTQ0g1MDI3OgorCWluMDogKzVWVFIJKCs1ViBzdGFuZGJ5KQkJMFYgLSA2LjY0VgorCWluMTogVmNjcAkocHJvY2Vzc29yIGNvcmUpCTBWIC0gM1YKKwlpbjI6IFZDQwkoaW50ZXJuYWwgKzMuM1YpCTBWIC0gNC4zOFYKKwlpbjM6IFYyX0lOCQkJCTBWIC0gMS41VgorCWluNDogVjFfSU4JCQkJMFYgLSAxLjVWCisJaW41OiBWVFIJKCszLjNWIHN0YW5kYnkpCQkwViAtIDQuMzhWCisJaW42OiBWYmF0CSgrMy4wVikJCQkwViAtIDQuMzhWCisKK1NDSDUxMjc6CisJaW4wOiArMi41CQkJCTBWIC0gMy4zMlYKKwlpbjE6IFZjY3AJKHByb2Nlc3NvciBjb3JlKQkwViAtIDNWCisJaW4yOiBWQ0MJKGludGVybmFsICszLjNWKQkwViAtIDQuMzhWCisJaW4zOiBWMl9JTgkJCQkwViAtIDEuNVYKKwlpbjQ6IFYxX0lOCQkJCTBWIC0gMS41VgorCWluNTogVlRSCSgrMy4zViBzdGFuZGJ5KQkJMFYgLSA0LjM4VgorCWluNjogVmJhdAkoKzMuMFYpCQkJMFYgLSA0LjM4VgorCWluNzogVnRyaXAJKCsxLjVWKQkJCTBWIC0gMS45OVYKKworRWFjaCB2b2x0YWdlIGlucHV0IGhhcyBhc3NvY2lhdGVkIG1pbiBhbmQgbWF4IGxpbWl0cyB3aGljaCB0cmlnZ2VyIGFuIGFsYXJtCit3aGVuIGNyb3NzZWQuCisKKworVGVtcGVyYXR1cmUgTW9uaXRvcmluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUZW1wZXJhdHVyZXMgYXJlIG1lYXN1cmVkIHdpdGggMTItYml0IHJlc29sdXRpb24gYW5kIHJlcG9ydGVkIGluIG1pbGxpZGVncmVlCitDZWxzaXVzLiBUaGUgY2hpcCBhbHNvIGZlYXR1cmVzIG9mZnNldHMgZm9yIGFsbCAzIHRlbXBlcmF0dXJlIGlucHV0cyB3aGljaCAtCit3aGVuIHByb2dyYW1tZWQgLSBnZXQgYWRkZWQgdG8gdGhlIGlucHV0IHJlYWRpbmdzLiBUaGUgY2hpcCBkb2VzIGFsbCB0aGUKK3NjYWxpbmcgYnkgaXRzZWxmIGFuZCB0aGUgZHJpdmVyIHRoZXJlZm9yZSByZXBvcnRzIHRydWUgdGVtcGVyYXR1cmVzIHRoYXQgZG9uJ3QKK25lZWQgYW55IHVzZXItc3BhY2UgYWRqdXN0bWVudHMuIFRoZSB0ZW1wZXJhdHVyZSBpbnB1dHMgYXJlIG1hcHBlZCBhcyBmb2xsb3dzCisodGhlIGxhc3QgY29sdW1uIGluZGljYXRlcyB0aGUgaW5wdXQgcmFuZ2VzKToKKworCXRlbXAxOiBSZW1vdGUgZGlvZGUgMSAoMzkwNCB0eXBlKSB0ZW1wZXJhdHVyZQktMTI3QyAtICsxMjdDCisJdGVtcDI6IERNRTE3MzcgaW50ZXJuYWwgdGVtcGVyYXR1cmUJCS0xMjdDIC0gKzEyN0MKKwl0ZW1wMzogUmVtb3RlIGRpb2RlIDIgKDM5MDQgdHlwZSkgdGVtcGVyYXR1cmUJLTEyN0MgLSArMTI3QworCitFYWNoIHRlbXBlcmF0dXJlIGlucHV0IGhhcyBhc3NvY2lhdGVkIG1pbiBhbmQgbWF4IGxpbWl0cyB3aGljaCB0cmlnZ2VyIGFuIGFsYXJtCit3aGVuIGNyb3NzZWQuIEFkZGl0aW9uYWxseSwgZWFjaCB0ZW1wZXJhdHVyZSBpbnB1dCBoYXMgYSBmYXVsdCBhdHRyaWJ1dGUgdGhhdAorcmV0dXJucyAxIHdoZW4gYSBmYXVsdHkgZGlvZGUgb3IgYW4gdW5jb25uZWN0ZWQgaW5wdXQgaXMgZGV0ZWN0ZWQgYW5kIDAKK290aGVyd2lzZS4KKworCitGYW4gTW9uaXRvcmluZworLS0tLS0tLS0tLS0tLS0KKworRmFuIFJQTXMgYXJlIG1lYXN1cmVkIHdpdGggMTYtYml0IHJlc29sdXRpb24uIFRoZSBjaGlwIHByb3ZpZGVzIGlucHV0cyBmb3IgNgorZmFuIHRhY2hvbWV0ZXJzLiBBbGwgNiBpbnB1dHMgaGF2ZSBhbiBhc3NvY2lhdGVkIG1pbiBsaW1pdCB3aGljaCB0cmlnZ2VycyBhbgorYWxhcm0gd2hlbiBjcm9zc2VkLiBGYW4gaW5wdXRzIDEtNCBwcm92aWRlIHR5cGUgYXR0cmlidXRlcyB0aGF0IG5lZWQgdG8gYmUgc2V0Cit0byB0aGUgbnVtYmVyIG9mIHB1bHNlcyBwZXIgZmFuIHJldm9sdXRpb24gdGhhdCB0aGUgY29ubmVjdGVkIHRhY2hvbWV0ZXIKK2dlbmVyYXRlcy4gU3VwcG9ydGVkIHZhbHVlcyBhcmUgMSwgMiwgYW5kIDQuIEZhbiBpbnB1dHMgNS02IG9ubHkgc3VwcG9ydCBmYW5zCit0aGF0IGdlbmVyYXRlIDIgcHVsc2VzIHBlciByZXZvbHV0aW9uLiBGYW4gaW5wdXRzIDUtNiBhbHNvIHByb3ZpZGUgYSBtYXgKK2F0dHJpYnV0ZSB0aGF0IG5lZWRzIHRvIGJlIHNldCB0byB0aGUgbWF4aW11bSBhdHRhaW5hYmxlIFJQTSAoZmFuIGF0IDEwMCUgZHV0eS0KK2N5Y2xlKSBvZiB0aGUgaW5wdXQuIFRoZSBjaGlwIGFkanVzdHMgdGhlIHNhbXBsaW5nIHJhdGUgYmFzZWQgb24gdGhpcyB2YWx1ZS4KKworCitQV00gT3V0cHV0IENvbnRyb2wKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGNoaXAgZmVhdHVyZXMgNSBQV00gb3V0cHV0cy4gUFdNIG91dHB1dHMgMS0zIGFyZSBhc3NvY2lhdGVkIHdpdGggZmFuCitpbnB1dHMgMS0zIGFuZCBQV00gb3V0cHV0cyA1LTYgYXJlIGFzc29jaWF0ZWQgd2l0aCBmYW4gaW5wdXRzIDUtNi4gUFdNIG91dHB1dHMKKzEtMyBjYW4gYmUgY29uZmlndXJlZCB0byBvcGVyYXRlIGVpdGhlciBpbiBtYW51YWwgb3IgYXV0b21hdGljIG1vZGUgYnkgc2V0dGluZwordGhlIGFwcHJvcHJpYXRlIGVuYWJsZSBhdHRyaWJ1dGUgYWNjb3JkaW5nbHkuIFBXTSBvdXRwdXRzIDUtNiBjYW4gb25seSBvcGVyYXRlCitpbiBtYW51YWwgbW9kZSwgdGhlaXIgZW5hYmxlIGF0dHJpYnV0ZXMgYXJlIHRoZXJlZm9yZSByZWFkLW9ubHkuIFdoZW4gc2V0IHRvCittYW51YWwgbW9kZSwgdGhlIGZhbiBzcGVlZCBpcyBzZXQgYnkgd3JpdGluZyB0aGUgZHV0eS1jeWNsZSB2YWx1ZSB0byB0aGUKK2FwcHJvcHJpYXRlIFBXTSBhdHRyaWJ1dGUuIEluIGF1dG9tYXRpYyBtb2RlLCB0aGUgUFdNIGF0dHJpYnV0ZSByZXR1cm5zIHRoZQorY3VycmVudCBkdXR5LWN5Y2xlIGFzIHNldCBieSB0aGUgZmFuIGNvbnRyb2xsZXIgaW4gdGhlIGNoaXAuIEFsbCBQV00gb3V0cHV0cworc3VwcG9ydCB0aGUgc2V0dGluZyBvZiB0aGUgb3V0cHV0IGZyZXF1ZW5jeSB2aWEgdGhlIGZyZXEgYXR0cmlidXRlLgorCitJbiBhdXRvbWF0aWMgbW9kZSwgdGhlIGNoaXAgc3VwcG9ydHMgdGhlIHNldHRpbmcgb2YgdGhlIFBXTSByYW1wIHJhdGUgd2hpY2gKK2RlZmluZXMgaG93IGZhc3QgdGhlIFBXTSBvdXRwdXQgaXMgYWRqdXN0aW5nIHRvIGNoYW5nZXMgb2YgdGhlIGFzc29jaWF0ZWQKK3RlbXBlcmF0dXJlIGlucHV0LiBBc3NvY2lhdGluZyBQV00gb3V0cHV0cyB0byB0ZW1wZXJhdHVyZSBpbnB1dHMgaXMgZG9uZSB2aWEKK3RlbXBlcmF0dXJlIHpvbmVzLiBUaGUgY2hpcCBmZWF0dXJlcyAzIHpvbmVzIHdob3NlIGFzc2lnbm1lbnRzIHRvIHRlbXBlcmF0dXJlCitpbnB1dHMgaXMgc3RhdGljIGFuZCBkZXRlcm1pbmVkIGR1cmluZyBpbml0aWFsaXphdGlvbi4gVGhlc2UgYXNzaWdubWVudHMgY2FuCitiZSByZXRyaWV2ZWQgdmlhIHRoZSB6b25lWzEtM11fYXV0b19jaGFubmVsc190ZW1wIGF0dHJpYnV0ZXMuIEVhY2ggUFdNIG91dHB1dAoraXMgYXNzaWduZWQgdG8gb25lIChvciBob3R0ZXN0IG9mIG11bHRpcGxlKSB0ZW1wZXJhdHVyZSB6b25lKHMpIHRocm91Z2ggdGhlCitwd21bMS0zXV9hdXRvX2NoYW5uZWxzX3pvbmUgYXR0cmlidXRlcy4gRWFjaCBQV00gb3V0cHV0IGhhcyAzIGRpc3RpbmN0IG91dHB1dAorZHV0eS1jeWNsZXM6IGZ1bGwsIGxvdywgYW5kIG1pbi4gRnVsbCBpcyBpbnRlcm5hbGx5IGhhcmQtd2lyZWQgdG8gMjU1ICgxMDAlKQorYW5kIGxvdyBhbmQgbWluIGNhbiBiZSBwcm9ncmFtbWVkIHZpYSBwd21bMS0zXV9hdXRvX3BvaW50MV9wd20gYW5kCitwd21bMS0zXV9hdXRvX3B3bV9taW4sIHJlc3BlY3RpdmVseS4gVGhlIHRoZXJtYWwgdGhyZXNob2xkcyBvZiB0aGUgem9uZXMgYXJlCitwcm9ncmFtbWVkIHZpYSB6b25lWzEtM11fYXV0b19wb2ludFsxLTNdX3RlbXAgYW5kCit6b25lWzEtM11fYXV0b19wb2ludDFfdGVtcF9oeXN0OgorCisJcHdtWzEtM11fYXV0b19wb2ludDJfcHdtCWZ1bGwtc3BlZWQgZHV0eS1jeWNsZSAoMjU1LCBpLmUuLCAxMDAlKQorCXB3bVsxLTNdX2F1dG9fcG9pbnQxX3B3bQlsb3ctc3BlZWQgZHV0eS1jeWNsZQorCXB3bVsxLTNdX2F1dG9fcHdtX21pbgkJbWluLXNwZWVkIGR1dHktY3ljbGUKKworCXpvbmVbMS0zXV9hdXRvX3BvaW50M190ZW1wCWZ1bGwtc3BlZWQgdGVtcCAoYWxsIG91dHB1dHMpCisJem9uZVsxLTNdX2F1dG9fcG9pbnQyX3RlbXAJZnVsbC1zcGVlZCB0ZW1wCisJem9uZVsxLTNdX2F1dG9fcG9pbnQxX3RlbXAJbG93LXNwZWVkIHRlbXAKKwl6b25lWzEtM11fYXV0b19wb2ludDFfdGVtcF9oeXN0CW1pbi1zcGVlZCB0ZW1wCisKK1RoZSBjaGlwIGFkanVzdHMgdGhlIG91dHB1dCBkdXR5LWN5Y2xlIGxpbmVhcmx5IGluIHRoZSByYW5nZSBvZiBhdXRvX3BvaW50MV9wd20KK3RvIGF1dG9fcG9pbnQyX3B3bSBpZiB0aGUgdGVtcGVyYXR1cmUgb2YgdGhlIGFzc29jaWF0ZWQgem9uZSBpcyBiZXR3ZWVuCithdXRvX3BvaW50MV90ZW1wIGFuZCBhdXRvX3BvaW50Ml90ZW1wLiBJZiB0aGUgdGVtcGVyYXR1cmUgZHJvcHMgYmVsb3cgdGhlCithdXRvX3BvaW50MV90ZW1wX2h5c3QgdmFsdWUsIHRoZSBvdXRwdXQgZHV0eS1jeWNsZSBpcyBzZXQgdG8gdGhlIGF1dG9fcHdtX21pbgordmFsdWUgd2hpY2ggb25seSBzdXBwb3J0cyB0d28gdmFsdWVzOiAwIG9yIGF1dG9fcG9pbnQxX3B3bS4gVGhhdCBtZWFucyB0aGF0IHRoZQorZmFuIGVpdGhlciB0dXJucyBjb21wbGV0ZWx5IG9mZiBvciBrZWVwcyBzcGlubmluZyB3aXRoIHRoZSBsb3ctc3BlZWQKK2R1dHktY3ljbGUuIElmIGFueSBvZiB0aGUgdGVtcGVyYXR1cmVzIHJpc2UgYWJvdmUgdGhlIGF1dG9fcG9pbnQzX3RlbXAgdmFsdWUsCithbGwgUFdNIG91dHB1dHMgYXJlIHNldCB0byAxMDAlIGR1dHktY3ljbGUuCisKK0ZvbGxvd2luZyBpcyBhbm90aGVyIHJlcHJlc2VudGF0aW9uIG9mIGhvdyB0aGUgY2hpcCBzZXRzIHRoZSBvdXRwdXQgZHV0eS1jeWNsZQorYmFzZWQgb24gdGhlIHRlbXBlcmF0dXJlIG9mIHRoZSBhc3NvY2lhdGVkIHRoZXJtYWwgem9uZToKKworCQkJRHV0eS1DeWNsZQlEdXR5LUN5Y2xlCisJVGVtcGVyYXR1cmUJUmlzaW5nIFRlbXAJRmFsbGluZyBUZW1wCisJLS0tLS0tLS0tLS0JLS0tLS0tLS0tLS0JLS0tLS0tLS0tLS0tCisJZnVsbC1zcGVlZAlmdWxsLXNwZWVkCWZ1bGwtc3BlZWQKKworCQkJPCBsaW5lYXJseSBhZGp1c3RlZCBkdXR5LWN5Y2xlID4KKworCWxvdy1zcGVlZAlsb3ctc3BlZWQJbG93LXNwZWVkCisJCQltaW4tc3BlZWQJbG93LXNwZWVkCisJbWluLXNwZWVkCW1pbi1zcGVlZAltaW4tc3BlZWQKKwkJCW1pbi1zcGVlZAltaW4tc3BlZWQKKworCitTeXNmcyBBdHRyaWJ1dGVzCistLS0tLS0tLS0tLS0tLS0tCisKK0ZvbGxvd2luZyBpcyBhIGxpc3Qgb2YgYWxsIHN5c2ZzIGF0dHJpYnV0ZXMgdGhhdCB0aGUgZHJpdmVyIHByb3ZpZGVzLCB0aGVpcgorcGVybWlzc2lvbnMgYW5kIGEgc2hvcnQgZGVzY3JpcHRpb246CisKK05hbWUJCQkJUGVybQlEZXNjcmlwdGlvbgorLS0tLQkJCQktLS0tCS0tLS0tLS0tLS0tCitjcHUwX3ZpZAkJCVJPCUNQVSBjb3JlIHJlZmVyZW5jZSB2b2x0YWdlIGluCisJCQkJCW1pbGxpdm9sdHMuCit2cm0JCQkJUlcJVm9sdGFnZSByZWd1bGF0b3IgbW9kdWxlIHZlcnNpb24KKwkJCQkJbnVtYmVyLgorCitpblswLTddX2lucHV0CQkJUk8JTWVhc3VyZWQgdm9sdGFnZSBpbiBtaWxsaXZvbHRzLgoraW5bMC03XV9taW4JCQlSVwlMb3cgbGltaXQgZm9yIHZvbHRhZ2UgaW5wdXQuCitpblswLTddX21heAkJCVJXCUhpZ2ggbGltaXQgZm9yIHZvbHRhZ2UgaW5wdXQuCitpblswLTddX2FsYXJtCQkJUk8JVm9sdGFnZSBpbnB1dCBhbGFybS4gUmV0dXJucyAxIGlmCisJCQkJCXZvbHRhZ2UgaW5wdXQgaXMgb3Igd2VudCBvdXRzaWRlIHRoZQorCQkJCQlhc3NvY2lhdGVkIG1pbi1tYXggcmFuZ2UsIDAgb3RoZXJ3aXNlLgorCit0ZW1wWzEtM11faW5wdXQJCQlSTwlNZWFzdXJlZCB0ZW1wZXJhdHVyZSBpbiBtaWxsaWRlZ3JlZQorCQkJCQlDZWxzaXVzLgordGVtcFsxLTNdX21pbgkJCVJXCUxvdyBsaW1pdCBmb3IgdGVtcCBpbnB1dC4KK3RlbXBbMS0zXV9tYXgJCQlSVwlIaWdoIGxpbWl0IGZvciB0ZW1wIGlucHV0LgordGVtcFsxLTNdX29mZnNldAkJUlcJT2Zmc2V0IGZvciB0ZW1wIGlucHV0LiBUaGlzIHZhbHVlIHdpbGwKKwkJCQkJYmUgYWRkZWQgYnkgdGhlIGNoaXAgdG8gdGhlIG1lYXN1cmVkCisJCQkJCXRlbXBlcmF0dXJlLgordGVtcFsxLTNdX2FsYXJtCQkJUk8JQWxhcm0gZm9yIHRlbXAgaW5wdXQuIFJldHVybnMgMSBpZiB0ZW1wCisJCQkJCWlucHV0IGlzIG9yIHdlbnQgb3V0c2lkZSB0aGUgYXNzb2NpYXRlZAorCQkJCQltaW4tbWF4IHJhbmdlLCAwIG90aGVyd2lzZS4KK3RlbXBbMS0zXV9mYXVsdAkJCVJPCVRlbXAgaW5wdXQgZmF1bHQuIFJldHVybnMgMSBpZiB0aGUgY2hpcAorCQkJCQlkZXRlY3RzIGEgZmF1bHR5IHRoZXJtYWwgZGlvZGUgb3IgYW4KKwkJCQkJdW5jb25uZWN0ZWQgdGVtcCBpbnB1dCwgMCBvdGhlcndpc2UuCisKK3pvbmVbMS0zXV9hdXRvX2NoYW5uZWxzX3RlbXAJUk8JVGVtcGVyYXR1cmUgem9uZSB0byB0ZW1wZXJhdHVyZSBpbnB1dAorCQkJCQltYXBwaW5nLiBUaGlzIGF0dHJpYnV0ZSBpcyBhIGJpdGZpZWxkCisJCQkJCWFuZCBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIHZhbHVlczoKKwkJCQkJCTE6IHRlbXAxCisJCQkJCQkyOiB0ZW1wMgorCQkJCQkJNDogdGVtcDMKK3pvbmVbMS0zXV9hdXRvX3BvaW50MV90ZW1wX2h5c3QJUlcJQXV0byBQV00gdGVtcCBwb2ludDEgaHlzdGVyZXNpcy4gVGhlCisJCQkJCW91dHB1dCBvZiB0aGUgY29ycmVzcG9uZGluZyBQV00gaXMgc2V0CisJCQkJCXRvIHRoZSBwd21fYXV0b19taW4gdmFsdWUgaWYgdGhlIHRlbXAKKwkJCQkJZmFsbHMgYmVsb3cgdGhlIGF1dG9fcG9pbnQxX3RlbXBfaHlzdAorCQkJCQl2YWx1ZS4KK3pvbmVbMS0zXV9hdXRvX3BvaW50WzEtM11fdGVtcAlSVwlBdXRvIFBXTSB0ZW1wIHBvaW50cy4gQXV0b19wb2ludDEgaXMKKwkJCQkJdGhlIGxvdy1zcGVlZCB0ZW1wLCBhdXRvX3BvaW50MiBpcyB0aGUKKwkJCQkJZnVsbC1zcGVlZCB0ZW1wLCBhbmQgYXV0b19wb2ludDMgaXMgdGhlCisJCQkJCXRlbXAgYXQgd2hpY2ggYWxsIFBXTSBvdXRwdXRzIGFyZSBzZXQKKwkJCQkJdG8gZnVsbC1zcGVlZCAoMTAwJSBkdXR5LWN5Y2xlKS4KKworZmFuWzEtNl1faW5wdXQJCQlSTwlNZWFzdXJlZCBmYW4gc3BlZWQgaW4gUlBNLgorZmFuWzEtNl1fbWluCQkJUlcJTG93IGxpbWl0IGZvciBmYW4gaW5wdXQuCitmYW5bMS02XV9hbGFybQkJCVJPCUFsYXJtIGZvciBmYW4gaW5wdXQuIFJldHVybnMgMSBpZiBmYW4KKwkJCQkJaW5wdXQgaXMgb3Igd2VudCBiZWxvdyB0aGUgYXNzb2NpYXRlZAorCQkJCQltaW4gdmFsdWUsIDAgb3RoZXJ3aXNlLgorZmFuWzEtNF1fdHlwZQkJCVJXCVR5cGUgb2YgYXR0YWNoZWQgZmFuLiBFeHByZXNzZWQgaW4KKwkJCQkJbnVtYmVyIG9mIHB1bHNlcyBwZXIgcmV2b2x1dGlvbiB0aGF0CisJCQkJCXRoZSBmYW4gZ2VuZXJhdGVzLiBTdXBwb3J0ZWQgdmFsdWVzIGFyZQorCQkJCQkxLCAyLCBhbmQgNC4KK2Zhbls1LTZdX21heAkJCVJXCU1heCBhdHRhaW5hYmxlIFJQTSBhdCAxMDAlIGR1dHktY3ljbGUuCisJCQkJCVJlcXVpcmVkIGZvciBjaGlwIHRvIGFkanVzdCB0aGUKKwkJCQkJc2FtcGxpbmcgcmF0ZSBhY2NvcmRpbmdseS4KKworcG13WzEtMyw1LTZdCQkJUk8vUlcJRHV0eS1jeWNsZSBvZiBQV00gb3V0cHV0LiBTdXBwb3J0ZWQKKwkJCQkJdmFsdWVzIGFyZSAwLTI1NSAoMCUtMTAwJSkuIE9ubHkKKwkJCQkJd3JpdGVhYmxlIGlmIHRoZSBhc3NvY2lhdGVkIFBXTSBpcyBpbgorCQkJCQltYW51YWwgbW9kZS4KK3B3bVsxLTNdX2VuYWJsZQkJCVJXCUVuYWJsZSBvZiBQV00gb3V0cHV0cyAxLTMuIFN1cHBvcnRlZAorCQkJCQl2YWx1ZXMgYXJlOgorCQkJCQkJIDA6IHR1cm5lZCBvZmYgKG91dHB1dCBAIDEwMCUpCisJCQkJCQkgMTogbWFudWFsIG1vZGUKKwkJCQkJCSAyOiBhdXRvbWF0aWMgbW9kZQorcHdtWzUtNl1fZW5hYmxlCQkJUk8JRW5hYmxlIG9mIFBXTSBvdXRwdXRzIDUtNi4gQWx3YXlzCisJCQkJCXJldHVybnMgMSBzaW5jZSB0aGVzZSAyIG91dHB1dHMgYXJlCisJCQkJCWhhcmQtd2lyZWQgdG8gbWFudWFsIG1vZGUuCitwbXdbMS0zLDUtNl1fZnJlcQkJUlcJRnJlcXVlbmN5IG9mIFBXTSBvdXRwdXQuIFN1cHBvcnRlZAorCQkJCQl2YWx1ZXMgYXJlIGluIHRoZSByYW5nZSAxMUh6LTMwMDAwSHoKKwkJCQkJKGRlZmF1bHQgaXMgMjUwMDBIeikuCitwbXdbMS0zXV9yYW1wX3JhdGUJCVJXCVJhbXAgcmF0ZSBvZiBQV00gb3V0cHV0LiBEZXRlcm1pbmVzIGhvdworCQkJCQlmYXN0IHRoZSBQV00gZHV0eS1jeWNsZSB3aWxsIGNoYW5nZQorCQkJCQl3aGVuIHRoZSBQV00gaXMgaW4gYXV0b21hdGljIG1vZGUuCisJCQkJCUV4cHJlc3NlZCBpbiBtcyBwZXIgUFdNIHN0ZXAuIFN1cHBvcnRlZAorCQkJCQl2YWx1ZXMgYXJlIGluIHRoZSByYW5nZSAwbXMtMjA2bXMKKwkJCQkJKGRlZmF1bHQgaXMgMCwgd2hpY2ggbWVhbnMgdGhlIGR1dHktCisJCQkJCWN5Y2xlIGNoYW5nZXMgaW5zdGFudGx5KS4KK3B3bVsxLTNdX2F1dG9fY2hhbm5lbHNfem9uZQlSVwlQV00gb3V0cHV0IHRvIHRlbXBlcmF0dXJlIHpvbmUgbWFwcGluZy4KKwkJCQkJVGhpcyBhdHRyaWJ1dGUgaXMgYSBiaXRmaWVsZCBhbmQKKwkJCQkJc3VwcG9ydHMgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisJCQkJCQkxOiB6b25lMQorCQkJCQkJMjogem9uZTIKKwkJCQkJCTQ6IHpvbmUzCisJCQkJCQk2OiBoaWdoZXN0IG9mIHpvbmVbMi0zXQorCQkJCQkJNzogaGlnaGVzdCBvZiB6b25lWzEtM10KK3B3bVsxLTNdX2F1dG9fcHdtX21pbgkJUlcJQXV0byBQV00gbWluIHB3bS4gTWluaW11bSBQV00gZHV0eS0KKwkJCQkJY3ljbGUuIFN1cHBvcnRlZCB2YWx1ZXMgYXJlIDAgb3IKKwkJCQkJYXV0b19wb2ludDFfcHdtLgorcHdtWzEtM11fYXV0b19wb2ludDFfcHdtCVJXCUF1dG8gUFdNIHB3bSBwb2ludC4gQXV0b19wb2ludDEgaXMgdGhlCisJCQkJCWxvdy1zcGVlZCBkdXR5LWN5Y2xlLgorcHdtWzEtM11fYXV0b19wb2ludDJfcHdtCVJPCUF1dG8gUFdNIHB3bSBwb2ludC4gQXV0b19wb2ludDIgaXMgdGhlCisJCQkJCWZ1bGwtc3BlZWQgZHV0eS1jeWNsZSB3aGljaCBpcyBoYXJkLQorCQkJCQl3aXJlZCB0byAyNTUgKDEwMCUgZHV0eS1jeWNsZSkuCisKK0NoaXAgRGlmZmVyZW5jZXMKKy0tLS0tLS0tLS0tLS0tLS0KKworRmVhdHVyZQkJCWRtZTE3MzcJc2NoMzExeAlzY2g1MDI3CXNjaDUxMjcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3RlbXBbMS0zXV9vZmZzZXQJeWVzCXllcwordmlkCQkJeWVzCit6b25lMwkJCXllcwl5ZXMJeWVzCit6b25lWzEtM11faHlzdAkJeWVzCXllcworcHdtIG1pbi9vZmYJCXllcwl5ZXMKK2ZhbjMJCQlvcHQJeWVzCW9wdAl5ZXMKK3B3bTMJCQlvcHQJeWVzCW9wdAl5ZXMKK2ZhbjQJCQlvcHQJCW9wdAorZmFuNQkJCW9wdAkJb3B0Citwd201CQkJb3B0CQlvcHQKK2ZhbjYJCQlvcHQJCW9wdAorcHdtNgkJCW9wdAkJb3B0CitpbjcJCQkJCQl5ZXMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vZHMxNjIxIGIvRG9jdW1lbnRhdGlvbi9od21vbi9kczE2MjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc3NWU2MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vZHMxNjIxCkBAIC0wLDAgKzEsMTg3IEBACitLZXJuZWwgZHJpdmVyIGRzMTYyMQorPT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIERhbGxhcyBTZW1pY29uZHVjdG9yIC8gTWF4aW0gSW50ZWdyYXRlZCBEUzE2MjEKKyAgICBQcmVmaXg6ICdkczE2MjEnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IG5vbmUKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBmcm9tIHd3dy5tYXhpbWludGVncmF0ZWQuY29tCisKKyAgKiBEYWxsYXMgU2VtaWNvbmR1Y3RvciBEUzE2MjUKKyAgICBQcmVmaXg6ICdkczE2MjUnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IG5vbmUKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBmcm9tIHd3dy5kYXRhc2hlZXRhcmNoaXZlLmNvbQorCisgICogTWF4aW0gSW50ZWdyYXRlZCBEUzE2MzEKKyAgICBQcmVmaXg6ICdkczE2MzEnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IG5vbmUKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBmcm9tIHd3dy5tYXhpbWludGVncmF0ZWQuY29tCisKKyAgKiBNYXhpbSBJbnRlZ3JhdGVkIERTMTcyMQorICAgIFByZWZpeDogJ2RzMTcyMScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGZyb20gd3d3Lm1heGltaW50ZWdyYXRlZC5jb20KKworICAqIE1heGltIEludGVncmF0ZWQgRFMxNzMxCisgICAgUHJlZml4OiAnZHMxNzMxJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBub25lCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgZnJvbSB3d3cubWF4aW1pbnRlZ3JhdGVkLmNvbQorCitBdXRob3JzOgorICAgICAgICBDaHJpc3RpYW4gVy4gWnVja3NjaHdlcmR0IDx6YW55QHRyaXEubmV0PgorICAgICAgICB2YWx1YWJsZSBjb250cmlidXRpb25zIGJ5IEphbiBNLiBTZW5kbGVyIDxzZW5kbGVyQHNlbmRsZXIuZGU+CisgICAgICAgIHBvcnRlZCB0byAyLjYgYnkgQXVyZWxpZW4gSmFybm8gPGF1cmVsaWVuQGF1cmVsMzIubmV0PgorICAgICAgICB3aXRoIHRoZSBoZWxwIG9mIEplYW4gRGVsdmFyZSA8amRlbHZhcmVAc3VzZS5kZT4KKworTW9kdWxlIFBhcmFtZXRlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCisqIHBvbGFyaXR5IGludAorICBPdXRwdXQncyBwb2xhcml0eTogMCA9IGFjdGl2ZSBoaWdoLCAxID0gYWN0aXZlIGxvdworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIERTMTYyMSBpcyBhIChvbmUgaW5zdGFuY2UpIGRpZ2l0YWwgdGhlcm1vbWV0ZXIgYW5kIHRoZXJtb3N0YXQuIEl0IGhhcworYm90aCBoaWdoIGFuZCBsb3cgdGVtcGVyYXR1cmUgbGltaXRzIHdoaWNoIGNhbiBiZSB1c2VyIGRlZmluZWQgKGkuZS4KK3Byb2dyYW1tZWQgaW50byBub24tdm9sYXRpbGUgb24tY2hpcCByZWdpc3RlcnMpLiBUZW1wZXJhdHVyZSByYW5nZSBpcyAtNTUKK2RlZ3JlZSBDZWxzaXVzIHRvICsxMjUgaW4gMC41IGluY3JlbWVudHMuIFlvdSBtYXkgY29udmVydCB0aGlzIGludG8gYQorRmFocmVuaGVpdCByYW5nZSBvZiAtNjcgdG8gKzI1NyBkZWdyZWVzIHdpdGggMC45IHN0ZXBzLiBJZiBwb2xhcml0eQorcGFyYW1ldGVyIGlzIG5vdCBwcm92aWRlZCwgb3JpZ2luYWwgdmFsdWUgaXMgdXNlZC4KKworQXMgZm9yIHRoZSB0aGVybW9zdGF0LCBiZWhhdmlvciBjYW4gYWxzbyBiZSBwcm9ncmFtbWVkIHVzaW5nIHRoZSBwb2xhcml0eQordG9nZ2xlLiBPbiB0aGUgb25lIGhhbmQgKCJoZWF0ZXIiKSwgdGhlIHRoZXJtb3N0YXQgb3V0cHV0IG9mIHRoZSBjaGlwLAorVG91dCwgd2lsbCB0cmlnZ2VyIHdoZW4gdGhlIGxvdyBsaW1pdCB0ZW1wZXJhdHVyZSBpcyBtZXQgb3IgdW5kZXJydW4gYW5kCitzdGF5cyBoaWdoIHVudGlsIHRoZSBoaWdoIGxpbWl0IGlzIG1ldCBvciBleGNlZWRlZC4gT24gdGhlIG90aGVyIGhhbmQKKygiY29vbGVyIiksIHZpY2UgdmVyc2EuIFRoYXQgd2F5ICJoZWF0ZXIiIGVxdWFscyAiYWN0aXZlIGxvdyIsIHdoZXJlYXMKKyJjb25kaXRpb25lciIgZXF1YWxzICJhY3RpdmUgaGlnaCIuIFBsZWFzZSBub3RlIHRoYXQgdGhlIERTMTYyMSBkYXRhIHNoZWV0CitpcyBzb21ld2hhdCBtaXNsZWFkaW5nIGluIHRoaXMgcG9pbnQgc2luY2Ugc2V0dGluZyB0aGUgcG9sYXJpdHkgYml0IGRvZXMKK25vdCBzaW1wbHkgaW52ZXJ0IFRvdXQuCisKK0Egc2Vjb25kIHRoaW5nIGlzIHRoYXQsIGR1cmluZyBleHRlbnNpdmUgdGVzdGluZywgVG91dCBzaG93ZWQgYSB0b2xlcmFuY2UKK29mIHVwIHRvICsvLSAwLjUgZGVncmVlcyBldmVuIHdoZW4gY29tcGFyZWQgYWdhaW5zdCBwcmVjaXNlIHRlbXBlcmF0dXJlCityZWFkaW5ncy4gQmUgc3VyZSB0byBoYXZlIGEgaGlnaCB2cy4gbG93IHRlbXBlcmF0dXJlIGxpbWl0IGdhcCBvZiBhbCBsZWFzdAorMS4wIGRlZ3JlZSBDZWxzaXVzIHRvIGF2b2lkIFRvdXQgImJvdW5jaW5nIiwgdGhvdWdoIQorCitUaGUgYWxhcm0gYml0cyBhcmUgc2V0IHdoZW4gdGhlIGhpZ2ggb3IgbG93IGxpbWl0cyBhcmUgbWV0IG9yIGV4Y2VlZGVkIGFuZAorYXJlIHJlc2V0IGJ5IHRoZSBtb2R1bGUgYXMgc29vbiBhcyB0aGUgcmVzcGVjdGl2ZSB0ZW1wZXJhdHVyZSByYW5nZXMgYXJlCitsZWZ0LgorCitUaGUgYWxhcm0gcmVnaXN0ZXJzIGFyZSBpbiBubyB3YXkgc3VpdGFibGUgdG8gZmluZCBvdXQgYWJvdXQgdGhlIGFjdHVhbAorc3RhdHVzIG9mIFRvdXQuIFRoZXkgd2lsbCBvbmx5IHRlbGwgeW91IGFib3V0IGl0cyBoaXN0b3J5LCB3aGV0aGVyIG9yIG5vdAorYW55IG9mIHRoZSBsaW1pdHMgaGF2ZSBldmVyIGJlZW4gbWV0IG9yIGV4Y2VlZGVkIHNpbmNlIGxhc3QgcG93ZXItdXAgb3IKK3Jlc2V0LiBCZSBhd2FyZTogV2hlbiB0ZXN0aW5nLCBpdCBzaG93ZWQgdGhhdCB0aGUgc3RhdHVzIG9mIFRvdXQgY2FuIGNoYW5nZQord2l0aCBuZWl0aGVyIG9mIHRoZSBhbGFybXMgc2V0LgorCitTaW5jZSB0aGVyZSBpcyBubyB2ZXJzaW9uIG9yIHZlbmRvciBpZGVudGlmaWNhdGlvbiByZWdpc3RlciwgdGhlcmUgaXMKK25vIHVuaXF1ZSBpZGVudGlmaWNhdGlvbiBmb3IgdGhlc2UgZGV2aWNlcy4gVGhlcmVmb3JlLCBleHBsaWNpdCBkZXZpY2UKK2luc3RhbnRpYXRpb24gaXMgcmVxdWlyZWQgZm9yIGNvcnJlY3QgZGV2aWNlIGlkZW50aWZpY2F0aW9uIGFuZCBmdW5jdGlvbmFsaXR5Cisob25lIGRldmljZSBwZXIgYWRkcmVzcyBpbiB0aGlzIGFkZHJlc3MgcmFuZ2U6IDB4NDguLjB4NGYpLgorCitUaGUgRFMxNjI1IGlzIHBpbiBjb21wYXRpYmxlIGFuZCBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB3aXRoIHRoZSBEUzE2MjEsCitidXQgdGhlIERTMTYyMSBpcyBtZWFudCB0byByZXBsYWNlIGl0LiBUaGUgRFMxNjMxLCBEUzE3MjEsIGFuZCBEUzE3MzEgYXJlCithbHNvIHBpbiBjb21wYXRpYmxlIHdpdGggdGhlIERTMTYyMSBhbmQgcHJvdmlkZSBtdWx0aS1yZXNvbHV0aW9uIHN1cHBvcnQuCisKK0FkZGl0aW9uYWxseSwgdGhlIERTMTcyMSBkYXRhIHNoZWV0IHNheXMgdGhlIHRlbXBlcmF0dXJlIGZsYWdzIChUSEYgYW5kIFRMRikKK2FyZSB1c2VkIGludGVybmFsbHksIGhvd2V2ZXIsIHRoZXNlIGZsYWdzIGRvIGdldCBzZXQgYW5kIGNsZWFyZWQgYXMgdGhlIGFjdHVhbAordGVtcGVyYXR1cmUgY3Jvc3NlcyB0aGUgbWluIG9yIG1heCBzZXR0aW5ncyAod2hpY2ggYnkgZGVmYXVsdCBhcmUgc2V0IHRvIDc1CithbmQgODAgZGVncmVlcyByZXNwZWN0aXZlbHkpLgorCitUZW1wZXJhdHVyZSBDb252ZXJzaW9uOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RTMTYyMSAtIDc1MG1zIChvbGRlciBkZXZpY2VzIG1heSB0YWtlIHVwIHRvIDEwMDBtcykKK0RTMTYyNSAtIDUwMG1zCitEUzE2MzEgLSA5M21zLi43NTBtcyBmb3IgOS4uMTIgYml0cyByZXNvbHV0aW9uLCByZXNwZWN0aXZlbHkuCitEUzE3MjEgLSA5M21zLi43NTBtcyBmb3IgOS4uMTIgYml0cyByZXNvbHV0aW9uLCByZXNwZWN0aXZlbHkuCitEUzE3MzEgLSA5M21zLi43NTBtcyBmb3IgOS4uMTIgYml0cyByZXNvbHV0aW9uLCByZXNwZWN0aXZlbHkuCisKK05vdGU6CitPbiB0aGUgRFMxNjIxLCBpbnRlcm5hbCBhY2Nlc3MgdG8gbm9uLXZvbGF0aWxlIHJlZ2lzdGVycyBtYXkgbGFzdCBmb3IgMTBtcworb3IgbGVzcyAodW52ZXJpZmllZCBvbiB0aGUgb3RoZXIgZGV2aWNlcykuCisKK1RlbXBlcmF0dXJlIEFjY3VyYWN5OgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEUzE2MjE6ICsvLSAwLjUgZGVncmVlIENlbHNpdXMgKGZyb20gMCB0byArNzAgZGVncmVlcykKK0RTMTYyNTogKy8tIDAuNSBkZWdyZWUgQ2Vsc2l1cyAoZnJvbSAwIHRvICs3MCBkZWdyZWVzKQorRFMxNjMxOiArLy0gMC41IGRlZ3JlZSBDZWxzaXVzIChmcm9tIDAgdG8gKzcwIGRlZ3JlZXMpCitEUzE3MjE6ICsvLSAxLjAgZGVncmVlIENlbHNpdXMgKGZyb20gLTEwIHRvICs4NSBkZWdyZWVzKQorRFMxNzMxOiArLy0gMS4wIGRlZ3JlZSBDZWxzaXVzIChmcm9tIC0xMCB0byArODUgZGVncmVlcykKKworTm90ZToKK1BsZWFzZSByZWZlciB0byB0aGUgZGV2aWNlIGRhdGFzaGVldHMgZm9yIGFjY3VyYWN5IGF0IG90aGVyIHRlbXBlcmF0dXJlcy4KKworVGVtcGVyYXR1cmUgUmVzb2x1dGlvbjoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBcyBtZW50aW9uZWQgYWJvdmUsIHRoZSBEUzE2MzEsIERTMTcyMSwgYW5kIERTMTczMSBwcm92aWRlIG11bHRpLXJlc29sdXRpb24KK3N1cHBvcnQsIHdoaWNoIGlzIGFjaGlldmVkIHZpYSB0aGUgUjAgYW5kIFIxIGNvbmZpZyByZWdpc3RlciBiaXRzLCB3aGVyZToKKworUjAuLlIxCistLS0tLS0KKyAwICAwID0+IDkgYml0cywgMC41IGRlZ3JlZXMgQ2VsY2l1cworIDEgIDAgPT4gMTAgYml0cywgMC4yNSBkZWdyZWVzIENlbGNpdXMKKyAwICAxID0+IDExIGJpdHMsIDAuMTI1IGRlZ3JlZXMgQ2VsY2l1cworIDEgIDEgPT4gMTIgYml0cywgMC4wNjI1IGRlZ3JlZXMgQ2VsY2l1cworCitOb3RlOgorQXQgaW5pdGlhbCBkZXZpY2UgcG93ZXItb24sIHRoZSBkZWZhdWx0IHJlc29sdXRpb24gaXMgc2V0IHRvIDEyLWJpdHMuCisKK1RoZSByZXNvbHV0aW9uIG1vZGUgZm9yIHRoZSBEUzE2MzEsIERTMTcyMSwgb3IgRFMxNzMxIGNhbiBiZSBjaGFuZ2VkIGZyb20KK3VzZXJzcGFjZSwgdmlhIHRoZSBkZXZpY2UgJ3VwZGF0ZV9pbnRlcnZhbCcgc3lzZnMgYXR0cmlidXRlLiBUaGlzIGF0dHJpYnV0ZQord2lsbCBub3JtYWxpemUgdGhlIHJhbmdlIG9mIGlucHV0IHZhbHVlcyB0byB0aGUgZGV2aWNlIG1heGltdW0gcmVzb2x1dGlvbgordmFsdWVzIGRlZmluZWQgaW4gdGhlIGRhdGFzaGVldCBhcyBmb2xsb3dzOgorCitSZXNvbHV0aW9uICAgIENvbnZlcnNpb24gVGltZSAgICBJbnB1dCBSYW5nZQorIChDL0xTQikgICAgICAgKG1zZWMpICAgICAgICAgICAgIChtc2VjKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiswLjUgICAgICAgICAgICAgOTMuNzUgICAgICAgICAgICAgIDAuLi4uOTQKKzAuMjUgICAgICAgICAgICAxODcuNSAgICAgICAgICAgICAgOTUuLi4xODcKKzAuMTI1ICAgICAgICAgICAzNzUgICAgICAgICAgICAgICAgMTg4Li4zNzUKKzAuMDYyNSAgICAgICAgICA3NTAgICAgICAgICAgICAgICAgMzc2Li5pbmZpbml0eQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBmb2xsb3dpbmcgZXhhbXBsZXMgc2hvdyBob3cgdGhlICd1cGRhdGVfaW50ZXJ2YWwnIGF0dHJpYnV0ZSBjYW4gYmUKK3VzZWQgdG8gY2hhbmdlIHRoZSBjb252ZXJzaW9uIHRpbWU6CisKKyQgY2F0IHVwZGF0ZV9pbnRlcnZhbAorNzUwCiskIGNhdCB0ZW1wMV9pbnB1dAorMjIwNjIKKyQKKyQgZWNobyAzMDAgPiB1cGRhdGVfaW50ZXJ2YWwKKyQgY2F0IHVwZGF0ZV9pbnRlcnZhbAorMzc1CiskIGNhdCB0ZW1wMV9pbnB1dAorMjIxMjUKKyQKKyQgZWNobyAxNTAgPiB1cGRhdGVfaW50ZXJ2YWwKKyQgY2F0IHVwZGF0ZV9pbnRlcnZhbAorMTg4CiskIGNhdCB0ZW1wMV9pbnB1dAorMjIyNTAKKyQKKyQgZWNobyAxID4gdXBkYXRlX2ludGVydmFsCiskIGNhdCB1cGRhdGVfaW50ZXJ2YWwKKzk0CiskIGNhdCB0ZW1wMV9pbnB1dAorMjIwMDAKKyQKKyQgZWNobyAxMDAwID4gdXBkYXRlX2ludGVydmFsCiskIGNhdCB1cGRhdGVfaW50ZXJ2YWwKKzc1MAorJCBjYXQgdGVtcDFfaW5wdXQKKzIyMDYyCiskCisKK0FzIHNob3duLCB0aGUgZHMxNjIxIGRyaXZlciBhdXRvbWF0aWNhbGx5IGFkanVzdHMgdGhlICd1cGRhdGVfaW50ZXJ2YWwnCit1c2VyIGlucHV0LCB2aWEgYSBzdGVwIGZ1bmN0aW9uLiBSZWFkaW5nIGJhY2sgdGhlICd1cGRhdGVfaW50ZXJ2YWwnIHZhbHVlCithZnRlciBhIHdyaXRlIG9wZXJhdGlvbiBwcm92aWRlcyB0aGUgY29udmVyc2lvbiB0aW1lIHVzZWQgYnkgdGhlIGRldmljZS4KKworTWF0aGVtYXRpY2FsbHksIHRoZSByZXNvbHV0aW9uIGNhbiBiZSBkZXJpdmVkIGZyb20gdGhlIGNvbnZlcnNpb24gdGltZQordmlhIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb246CisKKyAgIGcoeCkgPSAwLjUgKiBbbWluaW11bV9jb252ZXJzaW9uX3RpbWUveF0KKword2hlcmU6CisgLT4gJ3gnID0gdGhlIG91dHB1dCBmcm9tICd1cGRhdGVfaW50ZXJ2YWwnCisgLT4gJ2coeCknID0gdGhlIHJlc29sdXRpb24gaW4gZGVncmVlcyBDIHBlciBMU0IuCisgLT4gOTMuNzVtcyA9IG1pbmltdW0gY29udmVyc2lvbiB0aW1lCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2RzNjIwIGIvRG9jdW1lbnRhdGlvbi9od21vbi9kczYyMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmJlM2NkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9kczYyMApAQCAtMCwwICsxLDM0IEBACitLZXJuZWwgZHJpdmVyIGRzNjIwCis9PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBEYWxsYXMgU2VtaWNvbmR1Y3RvciBEUzYyMAorICAgIFByZWZpeDogJ2RzNjIwJworICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBEYWxsYXMgU2VtaWNvbmR1Y3RvciB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3LmRhbHNlbWkuY29tLworCitBdXRob3JzOgorICAgICAgICBSb2xhbmQgU3RpZ2dlIDxzdGlnZ2VAYW50Y29tLmRlPgorICAgICAgICBiYXNlZCBvbiBkczE2MjEuYyBieQorICAgICAgICBDaHJpc3RpYW4gVy4gWnVja3NjaHdlcmR0IDx6YW55QHRyaXEubmV0PgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIERTNjIwIGlzIGEgKG9uZSBpbnN0YW5jZSkgZGlnaXRhbCB0aGVybW9tZXRlciBhbmQgdGhlcm1vc3RhdC4gSXQgaGFzIGJvdGgKK2hpZ2ggYW5kIGxvdyB0ZW1wZXJhdHVyZSBsaW1pdHMgd2hpY2ggY2FuIGJlIHVzZXIgZGVmaW5lZCAoaS5lLiAgcHJvZ3JhbW1lZAoraW50byBub24tdm9sYXRpbGUgb24tY2hpcCByZWdpc3RlcnMpLiBUZW1wZXJhdHVyZSByYW5nZSBpcyAtNTUgZGVncmVlIENlbHNpdXMKK3RvICsxMjUuIEJldHdlZW4gMCBhbmQgNzAgZGVncmVlIENlbHNpdXMsIGFjY3VyYWN5IGlzIDAuNSBLZWx2aW4uIFRoZSB2YWx1ZQorcmV0dXJuZWQgdmlhIHN5c2ZzIGRpc3BsYXlzIHBvc3QgZGVjaW1hbCBwb3NpdGlvbnMuCisKK1RoZSB0aGVybW9zdGF0IGZ1bmN0aW9uIHdvcmtzIGFzIGZvbGxvd3M6IFdoZW4gY29uZmlndXJlZCB2aWEgcGxhdGZvcm1fZGF0YQorKHN0cnVjdCBkczYyMF9wbGF0Zm9ybV9kYXRhKSAucG9tb2RlID09IDAgKGRlZmF1bHQpLCB0aGUgdGhlcm1vc3RhdCBvdXRwdXQgcGluCitQTyBpcyBhbHdheXMgbG93LiBJZiAucG9tb2RlID09IDEsIHRoZSB0aGVybW9zdGF0IGlzIGluIFBPX0xPVyBtb2RlLiBJLmUuLCB0aGUKK291dHB1dCBwaW4gUE8gYmVjb21lcyBhY3RpdmUgd2hlbiB0aGUgdGVtcGVyYXR1cmUgZmFsbHMgYmVsb3cgdGVtcDFfbWluIGFuZAorc3RheXMgYWN0aXZlIHVudGlsIHRoZSB0ZW1wZXJhdHVyZSBnb2VzIGFib3ZlIHRlbXAxX21heC4KKworTGlrZXdpc2UsIHdpdGggLnBvbW9kZSA9PSAyLCB0aGUgdGhlcm1vc3RhdCBpcyBpbiBQT19ISUdIIG1vZGUuIEkuZS4sIHRoZSBQTworb3V0cHV0IHBpbiBiZWNvbWVzIGFjdGl2ZSB3aGVuIHRoZSB0ZW1wZXJhdHVyZSBnb2VzIGFib3ZlIHRlbXAxX21heCBhbmQgc3RheXMKK2FjdGl2ZSB1bnRpbCB0aGUgdGVtcGVyYXR1cmUgZmFsbHMgYmVsb3cgdGVtcDFfbWluLgorCitUaGUgUE8gb3V0cHV0IHBpbiBvZiB0aGUgRFM2MjAgb3BlcmF0ZXMgYWN0aXZlLWxvdy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vZW1jMTQwMyBiL0RvY3VtZW50YXRpb24vaHdtb24vZW1jMTQwMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODY5YjBlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9lbWMxNDAzCkBAIC0wLDAgKzEsNTkgQEAKK0tlcm5lbCBkcml2ZXIgZW1jMTQwMworPT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBTTVNDIC8gTWljcm9jaGlwIEVNQzE0MDIsIEVNQzE0MTIKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MTgsIDB4MWMsIDB4MjksIDB4NGMsIDB4NGQsIDB4NWMKKyAgICBQcmVmaXg6ICdlbWMxNDAyJworICAgIERhdGFzaGVldHM6CisJaHR0cDovL3d3MS5taWNyb2NoaXAuY29tL2Rvd25sb2Fkcy9lbi9EZXZpY2VEb2MvMTQxMi5wZGYKKwlodHRwOi8vd3cxLm1pY3JvY2hpcC5jb20vZG93bmxvYWRzL2VuL0RldmljZURvYy8xNDAyLnBkZgorICAqIFNNU0MgLyBNaWNyb2NoaXAgRU1DMTQwMywgRU1DMTQwNCwgRU1DMTQxMywgRU1DMTQxNAorICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgxOCwgMHgyOSwgMHg0YywgMHg0ZAorICAgIFByZWZpeDogJ2VtYzE0MDMnLCAnZW1jMTQwNCcKKyAgICBEYXRhc2hlZXRzOgorCWh0dHA6Ly93dzEubWljcm9jaGlwLmNvbS9kb3dubG9hZHMvZW4vRGV2aWNlRG9jLzE0MDNfMTQwNC5wZGYKKwlodHRwOi8vd3cxLm1pY3JvY2hpcC5jb20vZG93bmxvYWRzL2VuL0RldmljZURvYy8xNDEzXzE0MTQucGRmCisgICogU01TQyAvIE1pY3JvY2hpcCBFTUMxNDIyCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDRjCisgICAgUHJlZml4OiAnZW1jMTQyMicKKyAgICBEYXRhc2hlZXQ6CisJaHR0cDovL3d3MS5taWNyb2NoaXAuY29tL2Rvd25sb2Fkcy9lbi9EZXZpY2VEb2MvMTQyMi5wZGYKKyAgKiBTTVNDIC8gTWljcm9jaGlwIEVNQzE0MjMsIEVNQzE0MjQKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4NGMKKyAgICBQcmVmaXg6ICdlbWMxNDIzJywgJ2VtYzE0MjQnCisgICAgRGF0YXNoZWV0OgorCWh0dHA6Ly93dzEubWljcm9jaGlwLmNvbS9kb3dubG9hZHMvZW4vRGV2aWNlRG9jLzE0MjNfMTQyNC5wZGYKKworQXV0aG9yOgorICAgIEthbGhhbiBUcmlzYWwgPGthbGhhbi50cmlzYWxAaW50ZWwuY29tCisKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoZSBTdGFuZGFyZCBNaWNyb3N5c3RlbXMgQ29ycG9yYXRpb24gKFNNU0MpIC8gTWljcm9jaGlwIEVNQzE0eHggY2hpcHMKK2NvbnRhaW4gdXAgdG8gZm91ciB0ZW1wZXJhdHVyZSBzZW5zb3JzLiBFTUMxNHgyIHN1cHBvcnQgdHdvIHNlbnNvcnMKKyhvbmUgaW50ZXJuYWwsIG9uZSBleHRlcm5hbCkuIEVNQzE0eDMgc3VwcG9ydCB0aHJlZSBzZW5zb3JzIChvbmUgaW50ZXJuYWwsCit0d28gZXh0ZXJuYWwpLCBhbmQgRU1DMTR4NCBzdXBwb3J0IGZvdXIgc2Vuc29ycyAob25lIGludGVybmFsLCB0aHJlZQorZXh0ZXJuYWwpLgorCitUaGUgY2hpcHMgaW1wbGVtZW50IHRocmVlIGxpbWl0cyBmb3IgZWFjaCBzZW5zb3I6IGxvdyAodGVtcFhfbWluKSwgaGlnaAorKHRlbXBYX21heCkgYW5kIGNyaXRpY2FsICh0ZW1wWF9jcml0LikgVGhlIGNoaXBzIGFsc28gaW1wbGVtZW50IGFuCitoeXN0ZXJlc2lzIG1lY2hhbmlzbSB3aGljaCBhcHBsaWVzIHRvIGFsbCBsaW1pdHMuIFRoZSByZWxhdGl2ZSBkaWZmZXJlbmNlCitpcyBzdG9yZWQgaW4gYSBzaW5nbGUgcmVnaXN0ZXIgb24gdGhlIGNoaXAsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIHJlbGF0aXZlCitkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGxpbWl0IGFuZCBpdHMgaHlzdGVyZXNpcyBpcyBhbHdheXMgdGhlIHNhbWUgZm9yCithbGwgdGhyZWUgbGltaXRzLgorCitUaGlzIGltcGxlbWVudGF0aW9uIGRldGFpbCBpbXBsaWVzIHRoZSBmb2xsb3dpbmc6CisqIFdoZW4gc2V0dGluZyBhIGxpbWl0LCBpdHMgaHlzdGVyZXNpcyB3aWxsIGF1dG9tYXRpY2FsbHkgZm9sbG93LCB0aGUKKyAgZGlmZmVyZW5jZSBzdGF5aW5nIHVuY2hhbmdlZC4gRm9yIGV4YW1wbGUsIGlmIHRoZSBvbGQgY3JpdGljYWwgbGltaXQKKyAgd2FzIDgwIGRlZ3JlZXMgQywgYW5kIHRoZSBoeXN0ZXJlc2lzIHdhcyA3NSBkZWdyZWVzIEMsIGFuZCB5b3UgY2hhbmdlCisgIHRoZSBjcml0aWNhbCBsaW1pdCB0byA5MCBkZWdyZWVzIEMsIHRoZW4gdGhlIGh5c3RlcmVzaXMgd2lsbAorICBhdXRvbWF0aWNhbGx5IGNoYW5nZSB0byA4NSBkZWdyZWVzIEMuCisqIFRoZSBoeXN0ZXJlc2lzIHZhbHVlcyBjYW4ndCBiZSBzZXQgaW5kZXBlbmRlbnRseS4gV2UgZGVjaWRlZCB0byBtYWtlCisgIG9ubHkgdGVtcDFfY3JpdF9oeXN0IHdyaXRhYmxlLCB3aGlsZSBhbGwgb3RoZXIgaHlzdGVyZXNpcyBhdHRyaWJ1dGVzCisgIGFyZSByZWFkLW9ubHkuIFNldHRpbmcgdGVtcDFfY3JpdF9oeXN0IHdyaXRlcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuCisgIHRlbXAxX2NyaXRfaHlzdCBhbmQgdGVtcDFfY3JpdCBpbnRvIHRoZSBjaGlwLCBhbmQgdGhlIHNhbWUgcmVsYXRpdmUKKyAgaHlzdGVyZXNpcyBhcHBsaWVzIGF1dG9tYXRpY2FsbHkgdG8gYWxsIG90aGVyIGxpbWl0cy4KKyogVGhlIGxpbWl0cyBzaG91bGQgYmUgc2V0IGJlZm9yZSB0aGUgaHlzdGVyZXNpcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vZW1jMjEwMyBiL0RvY3VtZW50YXRpb24vaHdtb24vZW1jMjEwMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTJiMmMxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9lbWMyMTAzCkBAIC0wLDAgKzEsMzMgQEAKK0tlcm5lbCBkcml2ZXIgZW1jMjEwMworPT09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogU01TQyBFTUMyMTAzCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJlCisgICAgUHJlZml4OiAnZW1jMjEwMycKKyAgICBEYXRhc2hlZXQ6IE5vdCBwdWJsaWMKKworQXV0aG9yczoKKyAgICAgICAgU3RldmUgR2xlbmRpbm5pbmcgPHN0ZXZlLmdsZW5kaW5uaW5nQHNtc2MuY29tPgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIFN0YW5kYXJkIE1pY3Jvc3lzdGVtcyBDb3Jwb3JhdGlvbiAoU01TQykgRU1DMjEwMyBjaGlwcworY29udGFpbiB1cCB0byA0IHRlbXBlcmF0dXJlIHNlbnNvcnMgYW5kIGEgc2luZ2xlIGZhbiBjb250cm9sbGVyLgorCitGYW4gcm90YXRpb24gc3BlZWRzIGFyZSByZXBvcnRlZCBpbiBSUE0gKHJvdGF0aW9ucyBwZXIgbWludXRlKS4gQW4gYWxhcm0gaXMKK3RyaWdnZXJlZCBpZiB0aGUgcm90YXRpb24gc3BlZWQgaGFzIGRyb3BwZWQgYmVsb3cgYSBwcm9ncmFtbWFibGUgbGltaXQuIEZhbgorcmVhZGluZ3MgY2FuIGJlIGRpdmlkZWQgYnkgYSBwcm9ncmFtbWFibGUgZGl2aWRlciAoMSwgMiwgNCBvciA4KSB0byBnaXZlCit0aGUgcmVhZGluZ3MgbW9yZSByYW5nZSBvciBhY2N1cmFjeS4gTm90IGFsbCBSUE0gdmFsdWVzIGNhbiBhY2N1cmF0ZWx5IGJlCityZXByZXNlbnRlZCwgc28gc29tZSByb3VuZGluZyBpcyBkb25lLiBXaXRoIGEgZGl2aWRlciBvZiAxLCB0aGUgbG93ZXN0CityZXByZXNlbnRhYmxlIHZhbHVlIGlzIDQ4MCBSUE0uCisKK1RoaXMgZHJpdmVyIHN1cHBvcnRzIFJQTSBiYXNlZCBjb250cm9sLCB0byB1c2UgdGhpcyBhIGZhbiB0YXJnZXQKK3Nob3VsZCBiZSB3cml0dGVuIHRvIGZhbjFfdGFyZ2V0IGFuZCBwd20xX2VuYWJsZSBzaG91bGQgYmUgc2V0IHRvIDMuCisKK1RoZSAyMTAzLTIgYW5kIDIxMDMtNCB2YXJpYW50cyBoYXZlIGEgdGhpcmQgdGVtcGVyYXR1cmUgc2Vuc29yLCB3aGljaCBjYW4KK2JlIGNvbm5lY3RlZCB0byB0d28gYW50aS1wYXJhbGxlbCBkaW9kZXMuICBUaGVzZSB2YWx1ZXMgY2FuIGJlIHJlYWQKK2FzIHRlbXAzIGFuZCB0ZW1wNC4gIElmIG9ubHkgb25lIGRpb2RlIGlzIGF0dGFjaGVkIHRvIHRoaXMgY2hhbm5lbCwgdGVtcDQKK3dpbGwgc2hvdyBhcyAiZmF1bHQiLiAgVGhlIG1vZHVsZSBwYXJhbWV0ZXIgImFwZD0wIiBjYW4gYmUgdXNlZCB0byBzdXBwcmVzcwordGhpcyA0dGggY2hhbm5lbCB3aGVuIGFudGktcGFyYWxsZWwgZGlvZGVzIGFyZSBub3QgZml0dGVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9lbWM2dzIwMSBiL0RvY3VtZW50YXRpb24vaHdtb24vZW1jNncyMDEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU3NjI5YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vZW1jNncyMDEKQEAgLTAsMCArMSw0MiBAQAorS2VybmVsIGRyaXZlciBlbWM2dzIwMQorPT09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogU01TQyBFTUM2VzIwMQorICAgIFByZWZpeDogJ2VtYzZ3MjAxJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgyYywgMHgyZCwgMHgyZQorICAgIERhdGFzaGVldDogTm90IHB1YmxpYworCitBdXRob3I6IEplYW4gRGVsdmFyZSA8amRlbHZhcmVAc3VzZS5kZT4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworRnJvbSB0aGUgZGF0YXNoZWV0OgorCisiVGhlIEVNQzZXMjAxIGlzIGFuIGVudmlyb25tZW50YWwgbW9uaXRvcmluZyBkZXZpY2Ugd2l0aCBhdXRvbWF0aWMgZmFuCitjb250cm9sIGNhcGFiaWxpdHkgYW5kIGVuaGFuY2VkIHN5c3RlbSBhY291c3RpY3MgZm9yIG5vaXNlIHN1cHByZXNzaW9uLgorVGhpcyBBQ1BJIGNvbXBsaWFudCBkZXZpY2UgcHJvdmlkZXMgaGFyZHdhcmUgbW9uaXRvcmluZyBmb3IgdXAgdG8gc2l4Cit2b2x0YWdlcyAoaW5jbHVkaW5nIGl0cyBvd24gVkNDKSBhbmQgZml2ZSBleHRlcm5hbCB0aGVybWFsIHNlbnNvcnMsCittZWFzdXJlcyB0aGUgc3BlZWQgb2YgdXAgdG8gZml2ZSBmYW5zLCBhbmQgY29udHJvbHMgdGhlIHNwZWVkIG9mCittdWx0aXBsZSBEQyBmYW5zIHVzaW5nIHRocmVlIFB1bHNlIFdpZHRoIE1vZHVsYXRvciAoUFdNKSBvdXRwdXRzLiBOb3RlCit0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIGNvbnRyb2wgbW9yZSB0aGFuIHRocmVlIGZhbnMgYnkgY29ubmVjdGluZyB0d28KK2ZhbnMgdG8gb25lIFBXTSBvdXRwdXQuIFRoZSBFTUM2VzIwMSB3aWxsIGJlIGF2YWlsYWJsZSBpbiBhIDM2LXBpbgorUUZOIHBhY2thZ2UuIgorCitUaGUgZGV2aWNlIGlzIGZ1bmN0aW9uYWxseSBjbG9zZSB0byB0aGUgRU1DNkQxMDAgc2VyaWVzLCBidXQgaXMKK3JlZ2lzdGVyLWluY29tcGF0aWJsZS4KKworVGhlIGRyaXZlciBjdXJyZW50bHkgb25seSBzdXBwb3J0cyB0aGUgbW9uaXRvcmluZyBvZiB0aGUgdm9sdGFnZXMsCit0ZW1wZXJhdHVyZXMgYW5kIGZhbiBzcGVlZHMuIExpbWl0cyBjYW4gYmUgY2hhbmdlZC4gQWxhcm1zIGFyZSBub3QKK3N1cHBvcnRlZCwgYW5kIG5laXRoZXIgaXMgZmFuIHNwZWVkIGNvbnRyb2wuCisKKworS25vd24gU3lzdGVtcyBXaXRoIEVNQzZXMjAxCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIEVNQzZXMjAxIGlzIGEgcmFyZSBkZXZpY2UsIG9ubHkgZm91bmQgb24gYSBmZXcgc3lzdGVtcywgbWFkZSBpbgorMjAwNSBhbmQgMjAwNi4gS25vd24gc3lzdGVtcyB3aXRoIHRoaXMgZGV2aWNlOgorKiBEZWxsIFByZWNpc2lvbiA2NzAgd29ya3N0YXRpb24KKyogR2lnYWJ5dGUgMkNFV0ggbWFpbmJvYXJkCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2Y3MTgwNWYgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2Y3MTgwNWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhhMzU2MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vZjcxODA1ZgpAQCAtMCwwICsxLDE2NyBAQAorS2VybmVsIGRyaXZlciBmNzE4MDVmCis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIEZpbnRlayBGNzE4MDVGL0ZHCisgICAgUHJlZml4OiAnZjcxODA1ZicKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZSwgYWRkcmVzcyByZWFkIGZyb20gU3VwZXIgSS9PIGNvbmZpZyBzcGFjZQorICAgIERhdGFzaGVldDogQXZhaWxhYmxlIGZyb20gdGhlIEZpbnRlayB3ZWJzaXRlCisgICogRmludGVrIEY3MTgwNkYvRkcKKyAgICBQcmVmaXg6ICdmNzE4NzJmJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBub25lLCBhZGRyZXNzIHJlYWQgZnJvbSBTdXBlciBJL08gY29uZmlnIHNwYWNlCisgICAgRGF0YXNoZWV0OiBBdmFpbGFibGUgZnJvbSB0aGUgRmludGVrIHdlYnNpdGUKKyAgKiBGaW50ZWsgRjcxODcyRi9GRworICAgIFByZWZpeDogJ2Y3MTg3MmYnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IG5vbmUsIGFkZHJlc3MgcmVhZCBmcm9tIFN1cGVyIEkvTyBjb25maWcgc3BhY2UKKyAgICBEYXRhc2hlZXQ6IEF2YWlsYWJsZSBmcm9tIHRoZSBGaW50ZWsgd2Vic2l0ZQorCitBdXRob3I6IEplYW4gRGVsdmFyZSA8amRlbHZhcmVAc3VzZS5kZT4KKworVGhhbmtzIHRvIERlbmlzIEtpZWZ0IGZyb20gQmFycmFjdWRhIE5ldHdvcmtzIGZvciB0aGUgZG9uYXRpb24gb2YgYQordGVzdCBzeXN0ZW0gKGN1c3RvbSBKZXR3YXkgSzhNOE1TIG1vdGhlcmJvYXJkLCB3aXRoIENQVSBhbmQgUkFNKSBhbmQKK2ZvciBwcm92aWRpbmcgaW5pdGlhbCBkb2N1bWVudGF0aW9uLgorCitUaGFua3MgdG8gS3JpcyBDaGVuIGFuZCBBYXJvbiBIdWFuZyBmcm9tIEZpbnRlayBmb3IgYW5zd2VyaW5nIHRlY2huaWNhbAorcXVlc3Rpb25zIGFuZCBwcm92aWRpbmcgYWRkaXRpb25hbCBkb2N1bWVudGF0aW9uLgorCitUaGFua3MgdG8gQ2hyaXMgTGluIGZyb20gSmV0d2F5IGZvciBwcm92aWRpbmcgd2lyaW5nIHNjaGVtYXRpY3MgYW5kCithbnN3ZXJpbmcgdGVjaG5pY2FsIHF1ZXN0aW9ucy4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIEZpbnRlayBGNzE4MDVGL0ZHIFN1cGVyIEkvTyBjaGlwIGluY2x1ZGVzIGNvbXBsZXRlIGhhcmR3YXJlIG1vbml0b3JpbmcKK2NhcGFiaWxpdGllcy4gSXQgY2FuIG1vbml0b3IgdXAgdG8gOSB2b2x0YWdlcyAoY291bnRpbmcgaXRzIG93biBwb3dlcgorc291cmNlKSwgMyBmYW5zIGFuZCAzIHRlbXBlcmF0dXJlIHNlbnNvcnMuCisKK1RoaXMgY2hpcCBhbHNvIGhhcyBmYW4gY29udHJvbGxpbmcgZmVhdHVyZXMsIHVzaW5nIGVpdGhlciBEQyBvciBQV00sIGluCit0aHJlZSBkaWZmZXJlbnQgbW9kZXMgKG9uZSBtYW51YWwsIHR3byBhdXRvbWF0aWMpLgorCitUaGUgRmludGVrIEY3MTg3MkYvRkcgU3VwZXIgSS9PIGNoaXAgaXMgYWxtb3N0IHRoZSBzYW1lLCB3aXRoIHR3bworYWRkaXRpb25hbCBpbnRlcm5hbCB2b2x0YWdlcyBtb25pdG9yZWQgKFZTQiBhbmQgYmF0dGVyeSkuIEl0IGFsc28gZmVhdHVyZXMKKzYgVklEIGlucHV0cy4gVGhlIFZJRCBpbnB1dHMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5IHRoaXMgZHJpdmVyLgorCitUaGUgRmludGVrIEY3MTgwNkYvRkcgU3VwZXItSS9PIGNoaXAgaXMgZXNzZW50aWFsbHkgdGhlIHNhbWUgYXMgdGhlCitGNzE4NzJGL0ZHLCBhbmQgaXMgdW5kaXN0aW5ndWlzaGFibGUgdGhlcmVmcm9tLgorCitUaGUgZHJpdmVyIGFzc3VtZXMgdGhhdCBubyBtb3JlIHRoYW4gb25lIGNoaXAgaXMgcHJlc2VudCwgd2hpY2ggc2VlbXMKK3JlYXNvbmFibGUuCisKKworVm9sdGFnZSBNb25pdG9yaW5nCistLS0tLS0tLS0tLS0tLS0tLS0KKworVm9sdGFnZXMgYXJlIHNhbXBsZWQgYnkgYW4gOC1iaXQgQURDIHdpdGggYSBMU0Igb2YgOCBtVi4gVGhlIHN1cHBvcnRlZAorcmFuZ2UgaXMgdGh1cyBmcm9tIDAgdG8gMi4wNDAgVi4gVm9sdGFnZSB2YWx1ZXMgb3V0c2lkZSBvZiB0aGlzIHJhbmdlCituZWVkIGV4dGVybmFsIHJlc2lzdG9ycy4gQW4gZXhjZXB0aW9uIGlzIGluMCwgd2hpY2ggaXMgdXNlZCB0byBtb25pdG9yCit0aGUgY2hpcCdzIG93biBwb3dlciBzb3VyY2UgKCszLjNWKSwgYW5kIGlzIGRpdmlkZWQgaW50ZXJuYWxseSBieSBhCitmYWN0b3IgMi4gRm9yIHRoZSBGNzE4NzJGL0ZHLCBpbjkgKFZTQikgYW5kIGluMTAgKGJhdHRlcnkpIGFyZSBhbHNvCitkaXZpZGVkIGludGVybmFsbHkgYnkgYSBmYWN0b3IgMi4KKworVGhlIHR3byBMU0Igb2YgdGhlIHZvbHRhZ2UgbGltaXQgcmVnaXN0ZXJzIGFyZSBub3QgdXNlZCAoYWx3YXlzIDApLCBzbworeW91IGNhbiBvbmx5IHNldCB0aGUgbGltaXRzIGluIHN0ZXBzIG9mIDMyIG1WIChiZWZvcmUgc2NhbGluZykuCisKK1RoZSB3aXJpbmdzIGFuZCByZXNpc3RvciB2YWx1ZXMgc3VnZ2VzdGVkIGJ5IEZpbnRlayBhcmUgYXMgZm9sbG93OgorCisgICAgICAgIHBpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZAorICAgICAgICBuYW1lICAgIHVzZSAgICAgICAgICAgUjEgICAgICBSMiAgICAgZGl2aWRlciAgcmF3IHZhbC4KKworaW4wICAgICBWQ0MgICAgIFZDQzMuM1YgICAgIGludC4gICAgaW50LiAgICAgICAgMi4wMCAgICAxLjY1IFYKK2luMSAgICAgVklOMSAgICBWVFQxLjJWICAgICAgMTBLICAgICAgIC0gICAgICAgIDEuMDAgICAgMS4yMCBWCitpbjIgICAgIFZJTjIgICAgVlJBTSAgICAgICAgMTAwSyAgICAxMDBLICAgICAgICAyLjAwICAgfjEuMjUgViAoMSkKK2luMyAgICAgVklOMyAgICBWQ0hJUFNFVCAgICAgNDdLICAgIDEwMEsgICAgICAgIDEuNDcgICAgMi4yNCBWICgyKQoraW40ICAgICBWSU40ICAgIFZDQzVWICAgICAgIDIwMEsgICAgIDQ3SyAgICAgICAgNS4yNSAgICAwLjk1IFYKK2luNSAgICAgVklONSAgICArMTJWICAgICAgICAyMDBLICAgICAyMEsgICAgICAgMTEuMDAgICAgMS4wNSBWCitpbjYgICAgIFZJTjYgICAgVkNDMS41ViAgICAgIDEwSyAgICAgICAtICAgICAgICAxLjAwICAgIDEuNTAgVgoraW43ICAgICBWSU43ICAgIFZDT1JFICAgICAgICAxMEsgICAgICAgLSAgICAgICAgMS4wMCAgIH4xLjQwIFYgKDEpCitpbjggICAgIFZJTjggICAgVlNCNVYgICAgICAgMjAwSyAgICAgNDdLICAgICAgICAxLjAwICAgIDAuOTUgVgoraW4xMCAgICBWU0IgICAgIFZTQjMuM1YgICAgIGludC4gICAgaW50LiAgICAgICAgMi4wMCAgICAxLjY1IFYgKDMpCitpbjkgICAgIFZCQVQgICAgVkJBVFRFUlkgICAgaW50LiAgICBpbnQuICAgICAgICAyLjAwICAgIDEuNTAgViAoMykKKworKDEpIERlcGVuZHMgb24geW91ciBoYXJkd2FyZSBzZXR1cC4KKygyKSBPYnZpb3VzbHkgbm90IGNvcnJlY3QsIHN3YXBwaW5nIFIxIGFuZCBSMiB3b3VsZCBtYWtlIG1vcmUgc2Vuc2UuCisoMykgRjcxODcyRi9GRyBvbmx5LgorCitUaGVzZSB2YWx1ZXMgY2FuIGJlIHVzZWQgYXMgaGludHMgYXQgYmVzdCwgYXMgbW90aGVyYm9hcmQgbWFudWZhY3R1cmVycworYXJlIGZyZWUgdG8gdXNlIGEgY29tcGxldGVseSBkaWZmZXJlbnQgc2V0dXAuIEFzIGEgbWF0dGVyIG9mIGZhY3QsIHRoZQorSmV0d2F5IEs4TThNUyB1c2VzIGEgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQgc2V0dXAuIFlvdSB3aWxsIGhhdmUgdG8KK2ZpbmQgb3V0IGRvY3VtZW50YXRpb24gYWJvdXQgeW91ciBvd24gbW90aGVyYm9hcmQsIGFuZCBlZGl0IHNlbnNvcnMuY29uZgorYWNjb3JkaW5nbHkuCisKK0VhY2ggdm9sdGFnZSBtZWFzdXJlZCBoYXMgYXNzb2NpYXRlZCBsb3cgYW5kIGhpZ2ggbGltaXRzLCBlYWNoIG9mIHdoaWNoCit0cmlnZ2VycyBhbiBhbGFybSB3aGVuIGNyb3NzZWQuCisKKworRmFuIE1vbml0b3JpbmcKKy0tLS0tLS0tLS0tLS0tCisKK0ZhbiByb3RhdGlvbiBzcGVlZHMgYXJlIHJlcG9ydGVkIGFzIDEyLWJpdCB2YWx1ZXMgZnJvbSBhIGdhdGVkIGNsb2NrCitzaWduYWwuIFNwZWVkcyBkb3duIHRvIDM2NiBSUE0gY2FuIGJlIG1lYXN1cmVkLiBUaGVyZSBpcyBubyB0aGVvcmV0aWNhbAoraGlnaCBsaW1pdCwgYnV0IHZhbHVlcyBvdmVyIDYwMDAgUlBNIHNlZW0gdG8gY2F1c2UgcHJvYmxlbS4gVGhlIGVmZmVjdGl2ZQorcmVzb2x1dGlvbiBpcyBtdWNoIGxvd2VyIHRoYW4geW91IHdvdWxkIGV4cGVjdCwgdGhlIHN0ZXAgYmV0d2VlbiBkaWZmZXJlbnQKK3JlZ2lzdGVyIHZhbHVlcyBiZWluZyAxMCByYXRoZXIgdGhhbiAxLgorCitUaGUgY2hpcCBhc3N1bWVzIDIgcHVsc2UtcGVyLXJldm9sdXRpb24gZmFucy4KKworQW4gYWxhcm0gaXMgdHJpZ2dlcmVkIGlmIHRoZSByb3RhdGlvbiBzcGVlZCBkcm9wcyBiZWxvdyBhIHByb2dyYW1tYWJsZQorbGltaXQgb3IgaXMgdG9vIGxvdyB0byBiZSBtZWFzdXJlZC4KKworCitUZW1wZXJhdHVyZSBNb25pdG9yaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RlbXBlcmF0dXJlcyBhcmUgcmVwb3J0ZWQgaW4gZGVncmVlcyBDZWxzaXVzLiBFYWNoIHRlbXBlcmF0dXJlIG1lYXN1cmVkCitoYXMgYSBoaWdoIGxpbWl0LCB0aG9zZSBjcm9zc2luZyB0cmlnZ2VycyBhbiBhbGFybS4gVGhlcmUgaXMgYW4gYXNzb2NpYXRlZAoraHlzdGVyZXNpcyB2YWx1ZSwgYmVsb3cgd2hpY2ggdGhlIHRlbXBlcmF0dXJlIGhhcyB0byBkcm9wIGJlZm9yZSB0aGUKK2FsYXJtIGlzIGNsZWFyZWQuCisKK0FsbCB0ZW1wZXJhdHVyZSBjaGFubmVscyBhcmUgZXh0ZXJuYWwsIHRoZXJlIGlzIG5vIGVtYmVkZGVkIHRlbXBlcmF0dXJlCitzZW5zb3IuIEVhY2ggY2hhbm5lbCBjYW4gYmUgdXNlZCBmb3IgY29ubmVjdGluZyBlaXRoZXIgYSB0aGVybWFsIGRpb2RlCitvciBhIHRoZXJtaXN0b3IuIFRoZSBkcml2ZXIgcmVwb3J0cyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG1vZGUsIGJ1dAorZG9lc24ndCBhbGxvdyBjaGFuZ2luZyBpdC4gSW4gdGhlb3J5LCB0aGUgQklPUyBzaG91bGQgaGF2ZSBjb25maWd1cmVkCitldmVyeXRoaW5nIHByb3Blcmx5LgorCisKK0ZhbiBDb250cm9sCistLS0tLS0tLS0tLQorCitCb3RoIFBXTSAocHVsc2Utd2lkdGggbW9kdWxhdGlvbikgYW5kIERDIGZhbiBzcGVlZCBjb250cm9sIG1ldGhvZHMgYXJlCitzdXBwb3J0ZWQuIFRoZSByaWdodCBvbmUgdG8gdXNlIGRlcGVuZHMgb24gZXh0ZXJuYWwgY2lyY3VpdHJ5IG9uIHRoZQorbW90aGVyYm9hcmQsIHNvIHRoZSBkcml2ZXIgYXNzdW1lcyB0aGF0IHRoZSBCSU9TIHNldCB0aGUgbWV0aG9kCitwcm9wZXJseS4gVGhlIGRyaXZlciB3aWxsIHJlcG9ydCB0aGUgbWV0aG9kLCBidXQgd29uJ3QgbGV0IHlvdSBjaGFuZ2UKK2l0LgorCitXaGVuIHRoZSBQV00gbWV0aG9kIGlzIHVzZWQsIHlvdSBjYW4gc2VsZWN0IHRoZSBvcGVyYXRpbmcgZnJlcXVlbmN5LAorZnJvbSAxODcuNSBrSHogKGRlZmF1bHQpIHRvIDMxIEh6LiBUaGUgYmVzdCBmcmVxdWVuY3kgZGVwZW5kcyBvbiB0aGUKK2ZhbiBtb2RlbC4gQXMgYSBydWxlIG9mIHRodW1iLCBsb3dlciBmcmVxdWVuY2llcyBzZWVtIHRvIGdpdmUgYmV0dGVyCitjb250cm9sLCBidXQgbWF5IGdlbmVyYXRlIGFubm95aW5nIGhpZ2gtcGl0Y2ggbm9pc2UuIFNvIGEgZnJlcXVlbmN5IGp1c3QKK2Fib3ZlIHRoZSBhdWRpYmxlIHJhbmdlLCBzdWNoIGFzIDI1IGtIeiwgbWF5IGJlIGEgZ29vZCBjaG9pY2U7IGlmIHRoaXMKK2RvZXNuJ3QgZ2l2ZSB5b3UgZ29vZCBsaW5lYXIgY29udHJvbCwgdHJ5IHJlZHVjaW5nIGl0LiBGaW50ZWsgcmVjb21tZW5kcworbm90IGdvaW5nIGJlbG93IDEga0h6LCBhcyB0aGUgZmFuIHRhY2hvbWV0ZXJzIGdldCBjb25mdXNlZCBieSBsb3dlcgorZnJlcXVlbmNpZXMgYXMgd2VsbC4KKworV2hlbiB0aGUgREMgbWV0aG9kIGlzIHVzZWQsIEZpbnRlayByZWNvbW1lbmRzIG5vdCBnb2luZyBiZWxvdyA1IFYsIHdoaWNoCitjb3JyZXNwb25kcyB0byBhIHB3bSB2YWx1ZSBvZiAxMDYgZm9yIHRoZSBkcml2ZXIuIFRoZSBkcml2ZXIgZG9lc24ndAorZW5mb3JjZSB0aGlzIGxpbWl0IHRob3VnaC4KKworVGhyZWUgZGlmZmVyZW50IGZhbiBjb250cm9sIG1vZGVzIGFyZSBzdXBwb3J0ZWQ7IHRoZSBtb2RlIG51bWJlciBpcyB3cml0dGVuCit0byB0aGUgcHdtPG4+X2VuYWJsZSBmaWxlLgorCisqIDE6IE1hbnVhbCBtb2RlCisgIFlvdSBhc2sgZm9yIGEgc3BlY2lmaWMgUFdNIGR1dHkgY3ljbGUgb3IgREMgdm9sdGFnZSBieSB3cml0aW5nIHRvIHRoZQorICBwd208bj4gZmlsZS4KKworKiAyOiBUZW1wZXJhdHVyZSBtb2RlCisgIFlvdSBkZWZpbmUgMyB0ZW1wZXJhdHVyZS9mYW4gc3BlZWQgdHJpcCBwb2ludHMgdXNpbmcgdGhlCisgIHB3bTxuPl9hdXRvX3BvaW50PG0+X3RlbXAgYW5kIF9mYW4gZmlsZXMuIFRoZXNlIGRlZmluZSBhIHN0YWlyY2FzZQorICByZWxhdGlvbnNoaXAgYmV0d2VlbiB0ZW1wZXJhdHVyZSBhbmQgZmFuIHNwZWVkIHdpdGggdHdvIGFkZGl0aW9uYWwgcG9pbnRzCisgIGludGVycG9sYXRlZCBiZXR3ZWVuIHRoZSB2YWx1ZXMgdGhhdCB5b3UgZGVmaW5lLiBXaGVuIHRoZSB0ZW1wZXJhdHVyZQorICBpcyBiZWxvdyBhdXRvX3BvaW50MV90ZW1wIHRoZSBmYW4gaXMgc3dpdGNoZWQgb2ZmLgorCisqIDM6IEZhbiBzcGVlZCBtb2RlCisgIFlvdSBhc2sgZm9yIGEgc3BlY2lmaWMgZmFuIHNwZWVkIGJ5IHdyaXRpbmcgdG8gdGhlIGZhbjxuPl90YXJnZXQgZmlsZS4KKworQm90aCBvZiB0aGUgYXV0b21hdGljIG1vZGVzIHJlcXVpcmUgdGhhdCBwd20xIGNvcnJlc3BvbmRzIHRvIGZhbjEsIHB3bTIgdG8KK2ZhbjIgYW5kIHB3bTMgdG8gZmFuMy4gVGVtcGVyYXR1cmUgbW9kZSBhbHNvIHJlcXVpcmVzIHRoYXQgdGVtcDEgY29ycmVzcG9uZHMKK3RvIHB3bTEgYW5kIGZhbjEsIGV0Yy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vZjcxODgyZmcgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2Y3MTg4MmZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlOTFjMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2Y3MTg4MmZnCkBAIC0wLDAgKzEsMTM4IEBACitLZXJuZWwgZHJpdmVyIGY3MTg4MmZnCis9PT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBGaW50ZWsgRjcxODA4RQorICAgIFByZWZpeDogJ2Y3MTgwOGUnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IG5vbmUsIGFkZHJlc3MgcmVhZCBmcm9tIFN1cGVyIEkvTyBjb25maWcgc3BhY2UKKyAgICBEYXRhc2hlZXQ6IE5vdCBwdWJsaWMKKyAgKiBGaW50ZWsgRjcxODA4QQorICAgIFByZWZpeDogJ2Y3MTgwOGEnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IG5vbmUsIGFkZHJlc3MgcmVhZCBmcm9tIFN1cGVyIEkvTyBjb25maWcgc3BhY2UKKyAgICBEYXRhc2hlZXQ6IE5vdCBwdWJsaWMKKyAgKiBGaW50ZWsgRjcxODU4RkcKKyAgICBQcmVmaXg6ICdmNzE4NThmZycKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZSwgYWRkcmVzcyByZWFkIGZyb20gU3VwZXIgSS9PIGNvbmZpZyBzcGFjZQorICAgIERhdGFzaGVldDogQXZhaWxhYmxlIGZyb20gdGhlIEZpbnRlayB3ZWJzaXRlCisgICogRmludGVrIEY3MTg2MkZHIGFuZCBGNzE4NjNGRworICAgIFByZWZpeDogJ2Y3MTg2MmZnJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBub25lLCBhZGRyZXNzIHJlYWQgZnJvbSBTdXBlciBJL08gY29uZmlnIHNwYWNlCisgICAgRGF0YXNoZWV0OiBBdmFpbGFibGUgZnJvbSB0aGUgRmludGVrIHdlYnNpdGUKKyAgKiBGaW50ZWsgRjcxODY5RiBhbmQgRjcxODY5RQorICAgIFByZWZpeDogJ2Y3MTg2OScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZSwgYWRkcmVzcyByZWFkIGZyb20gU3VwZXIgSS9PIGNvbmZpZyBzcGFjZQorICAgIERhdGFzaGVldDogQXZhaWxhYmxlIGZyb20gdGhlIEZpbnRlayB3ZWJzaXRlCisgICogRmludGVrIEY3MTg2OUEKKyAgICBQcmVmaXg6ICdmNzE4NjlhJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBub25lLCBhZGRyZXNzIHJlYWQgZnJvbSBTdXBlciBJL08gY29uZmlnIHNwYWNlCisgICAgRGF0YXNoZWV0OiBOb3QgcHVibGljCisgICogRmludGVrIEY3MTg4MkZHIGFuZCBGNzE4ODNGRworICAgIFByZWZpeDogJ2Y3MTg4MmZnJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBub25lLCBhZGRyZXNzIHJlYWQgZnJvbSBTdXBlciBJL08gY29uZmlnIHNwYWNlCisgICAgRGF0YXNoZWV0OiBBdmFpbGFibGUgZnJvbSB0aGUgRmludGVrIHdlYnNpdGUKKyAgKiBGaW50ZWsgRjcxODg5RkcKKyAgICBQcmVmaXg6ICdmNzE4ODlmZycKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZSwgYWRkcmVzcyByZWFkIGZyb20gU3VwZXIgSS9PIGNvbmZpZyBzcGFjZQorICAgIERhdGFzaGVldDogQXZhaWxhYmxlIGZyb20gdGhlIEZpbnRlayB3ZWJzaXRlCisgICogRmludGVrIEY3MTg4OUVECisgICAgUHJlZml4OiAnZjcxODg5ZWQnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IG5vbmUsIGFkZHJlc3MgcmVhZCBmcm9tIFN1cGVyIEkvTyBjb25maWcgc3BhY2UKKyAgICBEYXRhc2hlZXQ6IFNob3VsZCBiZWNvbWUgYXZhaWxhYmxlIG9uIHRoZSBGaW50ZWsgd2Vic2l0ZSBzb29uCisgICogRmludGVrIEY3MTg4OUEKKyAgICBQcmVmaXg6ICdmNzE4ODlhJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBub25lLCBhZGRyZXNzIHJlYWQgZnJvbSBTdXBlciBJL08gY29uZmlnIHNwYWNlCisgICAgRGF0YXNoZWV0OiBTaG91bGQgYmVjb21lIGF2YWlsYWJsZSBvbiB0aGUgRmludGVrIHdlYnNpdGUgc29vbgorICAqIEZpbnRlayBGODAwMAorICAgIFByZWZpeDogJ2Y4MDAwJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBub25lLCBhZGRyZXNzIHJlYWQgZnJvbSBTdXBlciBJL08gY29uZmlnIHNwYWNlCisgICAgRGF0YXNoZWV0OiBOb3QgcHVibGljCisgICogRmludGVrIEY4MTgwMVUKKyAgICBQcmVmaXg6ICdmNzE4ODlmZycKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZSwgYWRkcmVzcyByZWFkIGZyb20gU3VwZXIgSS9PIGNvbmZpZyBzcGFjZQorICAgIERhdGFzaGVldDogTm90IHB1YmxpYworICAgIE5vdGU6IFRoaXMgaXMgdGhlIDY0LXBpbiB2YXJpYW50IG9mIHRoZSBGNzE4ODlGRywgdGhleSBoYXZlIHRoZQorCSAgc2FtZSBkZXZpY2UgSUQgYW5kIGFyZSBmdWxseSBjb21wYXRpYmxlIGFzIGZhciBhcyBoYXJkd2FyZQorCSAgbW9uaXRvcmluZyBpcyBjb25jZXJuZWQuCisgICogRmludGVrIEY4MTg2NUYKKyAgICBQcmVmaXg6ICdmODE4NjVmJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBub25lLCBhZGRyZXNzIHJlYWQgZnJvbSBTdXBlciBJL08gY29uZmlnIHNwYWNlCisgICAgRGF0YXNoZWV0OiBBdmFpbGFibGUgZnJvbSB0aGUgRmludGVrIHdlYnNpdGUKKworQXV0aG9yOiBIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitGaW50ZWsgRjcxOHh4L0Y4MDAwIFN1cGVyIEkvTyBjaGlwcyBpbmNsdWRlIGNvbXBsZXRlIGhhcmR3YXJlIG1vbml0b3JpbmcKK2NhcGFiaWxpdGllcy4gVGhleSBjYW4gbW9uaXRvciB1cCB0byA5IHZvbHRhZ2VzLCA0IGZhbnMgYW5kIDMgdGVtcGVyYXR1cmUKK3NlbnNvcnMuCisKK1RoZXNlIGNoaXBzIGFsc28gaGF2ZSBmYW4gY29udHJvbGxpbmcgZmVhdHVyZXMsIHVzaW5nIGVpdGhlciBEQyBvciBQV00sIGluCit0aHJlZSBkaWZmZXJlbnQgbW9kZXMgKG9uZSBtYW51YWwsIHR3byBhdXRvbWF0aWMpLgorCitUaGUgZHJpdmVyIGFzc3VtZXMgdGhhdCBubyBtb3JlIHRoYW4gb25lIGNoaXAgaXMgcHJlc2VudCwgd2hpY2ggc2VlbXMKK3JlYXNvbmFibGUuCisKKworTW9uaXRvcmluZworLS0tLS0tLS0tLQorCitUaGUgVm9sdGFnZSwgRmFuIGFuZCBUZW1wZXJhdHVyZSBNb25pdG9yaW5nIHVzZXMgdGhlIHN0YW5kYXJkIHN5c2ZzCitpbnRlcmZhY2UgYXMgZG9jdW1lbnRlZCBpbiBzeXNmcy1pbnRlcmZhY2UsIHdpdGhvdXQgYW55IGV4Y2VwdGlvbnMuCisKKworRmFuIENvbnRyb2wKKy0tLS0tLS0tLS0tCisKK0JvdGggUFdNIChwdWxzZS13aWR0aCBtb2R1bGF0aW9uKSBhbmQgREMgZmFuIHNwZWVkIGNvbnRyb2wgbWV0aG9kcyBhcmUKK3N1cHBvcnRlZC4gVGhlIHJpZ2h0IG9uZSB0byB1c2UgZGVwZW5kcyBvbiBleHRlcm5hbCBjaXJjdWl0cnkgb24gdGhlCittb3RoZXJib2FyZCwgc28gdGhlIGRyaXZlciBhc3N1bWVzIHRoYXQgdGhlIEJJT1Mgc2V0IHRoZSBtZXRob2QKK3Byb3Blcmx5LgorCitOb3RlIHRoYXQgdGhlIGxvd2VzdCBudW1iZXJlZCB0ZW1wZXJhdHVyZSB6b25lIHRyaXAgcG9pbnQgY29ycmVzcG9uZHMgdG8KK3RvIHRoZSBib3JkZXIgYmV0d2VlbiB0aGUgaGlnaGVzdCBhbmQgb25lIGJ1dCBoaWdoZXN0IHRlbXBlcmF0dXJlIHpvbmVzLCBhbmQKK3ZpY2EgdmVyc2EuIFNvIHRoZSB0ZW1wZXJhdHVyZSB6b25lIHRyaXAgcG9pbnRzIDEtNCAob3IgMS0yKSBnbyBmcm9tIGhpZ2ggdGVtcAordG8gbG93IHRlbXAhIFRoaXMgaXMgaG93IHRoaW5ncyBhcmUgaW1wbGVtZW50ZWQgaW4gdGhlIElDLCBhbmQgdGhlIGRyaXZlcgorbWltaWNrcyB0aGlzLgorCitUaGVyZSBhcmUgMiBtb2RlcyB0byBzcGVjaWZ5IHRoZSBzcGVlZCBvZiB0aGUgZmFuLCBQV00gZHV0eSBjeWNsZSAob3IgREMKK3ZvbHRhZ2UpIG1vZGUsIHdoZXJlIDAtMTAwJSBkdXR5IGN5Y2xlICgwLTEwMCUgb2YgMTJWKSBpcyBzcGVjaWZpZWQuIEFuZCBSUE0KK21vZGUgd2hlcmUgdGhlIGFjdHVhbCBSUE0gb2YgdGhlIGZhbiAoYXMgbWVhc3VyZWQpIGlzIGNvbnRyb2xsZWQgYW5kIHRoZSBzcGVlZAorZ2V0cyBzcGVjaWZpZWQgYXMgMC0xMDAlIG9mIHRoZSBmYW4jX2Z1bGxfc3BlZWQgZmlsZS4KKworU2luY2UgYm90aCBtb2RlcyB3b3JrIGluIGEgMC0xMDAlIChtYXBwZWQgdG8gMC0yNTUpIHNjYWxlLCB0aGVyZSBpc24ndCBhCit3aG9sZSBsb3Qgb2YgYSBkaWZmZXJlbmNlIHdoZW4gbW9kaWZ5aW5nIGZhbiBjb250cm9sIHNldHRpbmdzLiBUaGUgb25seQoraW1wb3J0YW50IGRpZmZlcmVuY2UgaXMgdGhhdCBpbiBSUE0gbW9kZSB0aGUgMC0xMDAlIGNvbnRyb2xzIHRoZSBmYW4gc3BlZWQKK2JldHdlZW4gMC0xMDAlIG9mIGZhbiNfZnVsbF9zcGVlZC4gSXQgaXMgYXNzdW1lZCB0aGF0IGlmIHRoZSBCSU9TIHByb2dyYW1zCitSUE0gbW9kZSwgaXQgd2lsbCBhbHNvIHNldCBmYW4jX2Z1bGxfc3BlZWQgcHJvcGVybHksIGlmIGl0IGRvZXMgbm90IHRoZW4KK2ZhbiBjb250cm9sIHdpbGwgbm90IHdvcmsgcHJvcGVybHksIHVubGVzcyB5b3Ugc2V0IGEgc2FuZSBmYW4jX2Z1bGxfc3BlZWQKK3ZhbHVlIHlvdXJzZWxmLgorCitTd2l0Y2hpbmcgYmV0d2VlbiB0aGVzZSBtb2RlcyByZXF1aXJlcyByZS1pbml0aWFsaXppbmcgYSB3aG9sZSBidW5jaCBvZgorcmVnaXN0ZXJzLCBzbyB0aGUgbW9kZSB3aGljaCB0aGUgQklPUyBoYXMgc2V0IGlzIGtlcHQuIFRoZSBtb2RlIGlzCitwcmludGVkIHdoZW4gbG9hZGluZyB0aGUgZHJpdmVyLgorCitUaHJlZSBkaWZmZXJlbnQgZmFuIGNvbnRyb2wgbW9kZXMgYXJlIHN1cHBvcnRlZDsgdGhlIG1vZGUgbnVtYmVyIGlzIHdyaXR0ZW4KK3RvIHRoZSBwd20jX2VuYWJsZSBmaWxlLiBOb3RlIHRoYXQgbm90IGFsbCBtb2RlcyBhcmUgc3VwcG9ydGVkIG9uIGFsbAorY2hpcHMsIGFuZCBzb21lIG1vZGVzIG1heSBvbmx5IGJlIGF2YWlsYWJsZSBpbiBSUE0gLyBQV00gbW9kZS4KK1dyaXRpbmcgYW4gdW5zdXBwb3J0ZWQgbW9kZSB3aWxsIHJlc3VsdCBpbiBhbiBpbnZhbGlkIHBhcmFtZXRlciBlcnJvci4KKworKiAxOiBNYW51YWwgbW9kZQorICBZb3UgYXNrIGZvciBhIHNwZWNpZmljIFBXTSBkdXR5IGN5Y2xlIC8gREMgdm9sdGFnZSBvciBhIHNwZWNpZmljICUgb2YKKyAgZmFuI19mdWxsX3NwZWVkIGJ5IHdyaXRpbmcgdG8gdGhlIHB3bSMgZmlsZS4gVGhpcyBtb2RlIGlzIG9ubHkKKyAgYXZhaWxhYmxlIG9uIHRoZSBGNzE4NThGRyAvIEY4MDAwIGlmIHRoZSBmYW4gY2hhbm5lbCBpcyBpbiBSUE0gbW9kZS4KKworKiAyOiBOb3JtYWwgYXV0byBtb2RlCisgIFlvdSBjYW4gZGVmaW5lIGEgbnVtYmVyIG9mIHRlbXBlcmF0dXJlL2ZhbiBzcGVlZCB0cmlwIHBvaW50cywgd2hpY2ggJSB0aGUKKyAgZmFuIHNob3VsZCBydW4gYXQgYXQgdGhpcyB0ZW1wIGFuZCB3aGljaCB0ZW1wIGEgZmFuIHNob3VsZCBmb2xsb3cgdXNpbmcgdGhlCisgIHN0YW5kYXJkIHN5c2ZzIGludGVyZmFjZS4gVGhlIG51bWJlciBhbmQgdHlwZSBvZiB0cmlwIHBvaW50cyBpcyBjaGlwCisgIGRlcGVuZGVkLCBzZWUgd2hpY2ggZmlsZXMgYXJlIGF2YWlsYWJsZSBpbiBzeXNmcy4KKyAgRmFuL1BXTSBjaGFubmVsIDMgb2YgdGhlIEY4MDAwIGlzIGFsd2F5cyBpbiB0aGlzIG1vZGUhCisKKyogMzogVGhlcm1vc3RhdCBtb2RlIChPbmx5IGF2YWlsYWJsZSBvbiB0aGUgRjgwMDAgd2hlbiBpbiBkdXR5IGN5Y2xlIG1vZGUpCisgIFRoZSBmYW4gc3BlZWQgaXMgcmVndWxhdGVkIHRvIGtlZXAgdGhlIHRlbXAgdGhlIGZhbiBpcyBtYXBwZWQgdG8gYmV0d2VlbgorICB0ZW1wI19hdXRvX3BvaW50Ml90ZW1wIGFuZCB0ZW1wI19hdXRvX3BvaW50M190ZW1wLgorCitBbGwgb2YgdGhlIGF1dG9tYXRpYyBtb2RlcyByZXF1aXJlIHRoYXQgcHdtMSBjb3JyZXNwb25kcyB0byBmYW4xLCBwd20yIHRvCitmYW4yIGFuZCBwd20zIHRvIGZhbjMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2ZhbTE1aF9wb3dlciBiL0RvY3VtZW50YXRpb24vaHdtb24vZmFtMTVoX3Bvd2VyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyYjFiNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2ZhbTE1aF9wb3dlcgpAQCAtMCwwICsxLDM5IEBACitLZXJuZWwgZHJpdmVyIGZhbTE1aF9wb3dlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorKiBBTUQgRmFtaWx5IDE1aCBQcm9jZXNzb3JzCisqIEFNRCBGYW1pbHkgMTZoIFByb2Nlc3NvcnMKKworICBQcmVmaXg6ICdmYW0xNWhfcG93ZXInCisgIEFkZHJlc3NlcyBzY2FubmVkOiBQQ0kgc3BhY2UKKyAgRGF0YXNoZWV0czoKKyAgQklPUyBhbmQgS2VybmVsIERldmVsb3BlcidzIEd1aWRlIChCS0RHKSBGb3IgQU1EIEZhbWlseSAxNWggUHJvY2Vzc29ycworICBCSU9TIGFuZCBLZXJuZWwgRGV2ZWxvcGVyJ3MgR3VpZGUgKEJLREcpIEZvciBBTUQgRmFtaWx5IDE2aCBQcm9jZXNzb3JzCisKK0F1dGhvcjogQW5kcmVhcyBIZXJybWFubiA8aGVycm1hbm4uZGVyLnVzZXJAZ29vZ2xlbWFpbC5jb20+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBwZXJtaXRzIHJlYWRpbmcgb2YgcmVnaXN0ZXJzIHByb3ZpZGluZyBwb3dlciBpbmZvcm1hdGlvbgorb2YgQU1EIEZhbWlseSAxNWggYW5kIDE2aCBwcm9jZXNzb3JzLgorCitGb3IgQU1EIEZhbWlseSAxNWggYW5kIDE2aCBwcm9jZXNzb3JzIHRoZSBmb2xsb3dpbmcgcG93ZXIgdmFsdWVzIGNhbgorYmUgY2FsY3VsYXRlZCB1c2luZyBkaWZmZXJlbnQgcHJvY2Vzc29yIG5vcnRoYnJpZGdlIGZ1bmN0aW9uCityZWdpc3RlcnM6CisKKyogQmFzZVB3cldhdHRzOiBTcGVjaWZpZXMgaW4gd2F0dHMgdGhlIG1heGltdW0gYW1vdW50IG9mIHBvd2VyCisgIGNvbnN1bWVkIGJ5IHRoZSBwcm9jZXNzb3IgZm9yIE5CIGFuZCBsb2dpYyBleHRlcm5hbCB0byB0aGUgY29yZS4KKyogUHJvY2Vzc29yUHdyV2F0dHM6IFNwZWNpZmllcyBpbiB3YXR0cyB0aGUgbWF4aW11bSBhbW91bnQgb2YgcG93ZXIKKyAgdGhlIHByb2Nlc3NvciBjYW4gc3VwcG9ydC4KKyogQ3VyclB3cldhdHRzOiBTcGVjaWZpZXMgaW4gd2F0dHMgdGhlIGN1cnJlbnQgYW1vdW50IG9mIHBvd2VyIGJlaW5nCisgIGNvbnN1bWVkIGJ5IHRoZSBwcm9jZXNzb3IuCisKK1RoaXMgZHJpdmVyIHByb3ZpZGVzIFByb2Nlc3NvclB3cldhdHRzIGFuZCBDdXJyUHdyV2F0dHM6CisqIHBvd2VyMV9jcml0IChQcm9jZXNzb3JQd3JXYXR0cykKKyogcG93ZXIxX2lucHV0IChDdXJyUHdyV2F0dHMpCisKK09uIG11bHRpLW5vZGUgcHJvY2Vzc29ycyB0aGUgY2FsY3VsYXRlZCB2YWx1ZSBpcyBmb3IgdGhlIGVudGlyZQorcGFja2FnZSBhbmQgbm90IGZvciBhIHNpbmdsZSBub2RlLiBUaHVzIHRoZSBkcml2ZXIgY3JlYXRlcyBzeXNmcworYXR0cmlidXRlcyBvbmx5IGZvciBpbnRlcm5hbCBub2RlMCBvZiBhIG11bHRpLW5vZGUgcHJvY2Vzc29yLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9nNzYwYSBiL0RvY3VtZW50YXRpb24vaHdtb24vZzc2MGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZjODk0NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vZzc2MGEKQEAgLTAsMCArMSwzNiBAQAorS2VybmVsIGRyaXZlciBnNzYwYQorPT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogR2xvYmFsIE1peGVkLW1vZGUgVGVjaG5vbG9neSBJbmMuIEc3NjBBCisgICAgUHJlZml4OiAnZzc2MGEnCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIEdNVCB3ZWJzaXRlCisgICAgICBodHRwOi8vd3d3LmdtdC5jb20udHcvcHJvZHVjdC9kYXRhc2hlZXQvRURTLTc2MEEucGRmCisKK0F1dGhvcjogSGVyYmVydCBWYWxlcmlvIFJpZWRlbCA8aHZyQGdudS5vcmc+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGUgR01UIEc3NjBBIEZhbiBTcGVlZCBQV00gQ29udHJvbGxlciBpcyBjb25uZWN0ZWQgZGlyZWN0bHkgdG8gYSBmYW4KK2FuZCBwZXJmb3JtcyBjbG9zZWQtbG9vcCBjb250cm9sIG9mIHRoZSBmYW4gc3BlZWQuCisKK1RoZSBmYW4gc3BlZWQgaXMgcHJvZ3JhbW1lZCBieSBzZXR0aW5nIHRoZSBwZXJpb2QgdmlhICdwd20xJyBvZiB0d28KK2NvbnNlY3V0aXZlIHNwZWVkIHB1bHNlcy4gVGhlIHBlcmlvZCBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIGNsb2NrCitjeWNsZSBjb3VudHMgb2YgYW4gYXNzdW1lZCAzMmtIeiBjbG9jayBzb3VyY2UuCisKK1NldHRpbmcgYSBwZXJpb2Qgb2YgMCBzdG9wcyB0aGUgZmFuOyBzZXR0aW5nIHRoZSBwZXJpb2QgdG8gMjU1IHNldHMKK2ZhbiB0byBtYXhpbXVtIHNwZWVkLgorCitUaGUgbWVhc3VyZWQgZmFuIHJvdGF0aW9uIHNwZWVkIHJldHVybmVkIHZpYSAnZmFuMV9pbnB1dCcgaXMgZGVyaXZlZAorZnJvbSB0aGUgbWVhc3VyZWQgc3BlZWQgcHVsc2UgcGVyaW9kIGJ5IGFzc3VtaW5nIGFnYWluIGEgMzJrSHogY2xvY2sKK3NvdXJjZSBhbmQgYSAyIHB1bHNlLXBlci1yZXZvbHV0aW9uIGZhbi4KKworVGhlICdhbGFybXMnIGZpbGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSB0d28gYWxhcm0gYml0cyBwcm92aWRlZCBieQordGhlIEc3NjBBIGNoaXAncyBzdGF0dXMgcmVnaXN0ZXI6IEJpdCAwIGlzIHNldCB3aGVuIHRoZSBhY3R1YWwgZmFuCitzcGVlZCBkaWZmZXJzIG1vcmUgdGhhbiAyMCUgd2l0aCByZXNwZWN0IHRvIHRoZSBwcm9ncmFtbWVkIGZhbiBzcGVlZDsKK2JpdCAxIGlzIHNldCB3aGVuIGZhbiBzcGVlZCBpcyBiZWxvdyAxOTIwIFJQTS4KKworVGhlIGc3NjBhIGRyaXZlciB3aWxsIG5vdCB1cGRhdGUgaXRzIHZhbHVlcyBtb3JlIGZyZXF1ZW50bHkgdGhhbiBldmVyeQorb3RoZXIgc2Vjb25kOyByZWFkaW5nIHRoZW0gbW9yZSBvZnRlbiB3aWxsIGRvIG5vIGhhcm0sIGJ1dCB3aWxsIHJldHVybgorJ29sZCcgdmFsdWVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9nNzYyIGIvRG9jdW1lbnRhdGlvbi9od21vbi9nNzYyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyM2RiOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2c3NjIKQEAgLTAsMCArMSw2NSBAQAorS2VybmVsIGRyaXZlciBnNzYyCis9PT09PT09PT09PT09PT09PT0KKworVGhlIEdNVCBHNzYyIEZhbiBTcGVlZCBQV00gQ29udHJvbGxlciBpcyBjb25uZWN0ZWQgZGlyZWN0bHkgdG8gYSBmYW4KK2FuZCBwZXJmb3JtcyBjbG9zZWQtbG9vcCBvciBvcGVuLWxvb3AgY29udHJvbCBvZiB0aGUgZmFuIHNwZWVkLiBUd28KK21vZGVzIC0gUFdNIG9yIERDIC0gYXJlIHN1cHBvcnRlZCBieSB0aGUgZGV2aWNlLgorCitGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiwgYSBkZXRhaWxlZCBkYXRhc2hlZXQgaXMgYXZhaWxhYmxlIGF0CitodHRwOi8vbmF0aXNiYWQub3JnL05BUy9yZWYvR01UX0VEUy03NjJfNzYzLTA4MDcxMC0wLjIucGRmLiBzeXNmcworYmluZGluZ3MgYXJlIGRlc2NyaWJlZCBpbiBEb2N1bWVudGF0aW9uL2h3bW9uL3N5c2ZzLWludGVyZmFjZS4KKworVGhlIGZvbGxvd2luZyBlbnRyaWVzIGFyZSBhdmFpbGFibGUgdG8gdGhlIHVzZXIgaW4gYSBzdWJkaXJlY3Rvcnkgb2YKKy9zeXMvYnVzL2kyYy9kcml2ZXJzL2c3NjIvIHRvIGNvbnRyb2wgdGhlIG9wZXJhdGlvbiBvZiB0aGUgZGV2aWNlLgorVGhpcyBjYW4gYmUgZG9uZSBtYW51YWxseSB1c2luZyB0aGUgZm9sbG93aW5nIGVudHJpZXMgYnV0IGlzIHVzdWFsbHkKK2RvbmUgdmlhIGEgdXNlcmxhbmQgZGFlbW9uIGxpa2UgZmFuY29udHJvbC4KKworTm90ZSB0aGF0IHRob3NlIGVudHJpZXMgZG8gbm90IHByb3ZpZGUgd2F5cyB0byBzZXR1cCB0aGUgc3BlY2lmaWMKK2hhcmR3YXJlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgc3lzdGVtIChyZWZlcmVuY2UgY2xvY2ssIHB1bHNlcyBwZXIKK2ZhbiByZXZvbHV0aW9uLCAuLi4pOyBUaG9zZSBjYW4gYmUgbW9kaWZpZWQgdmlhIGRldmljZXRyZWUgYmluZGluZ3MKK2RvY3VtZW50ZWQgaW4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL2c3NjIudHh0IG9yCit1c2luZyBhIHNwZWNpZmljIHBsYXRmb3JtX2RhdGEgc3RydWN0dXJlIGluIGJvYXJkIGluaXRpYWxpemF0aW9uCitmaWxlIChzZWUgaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL2c3NjIuaCkuCisKKyAgZmFuMV90YXJnZXQ6IHNldCBkZXNpcmVkIGZhbiBzcGVlZC4gVGhpcyBvbmx5IG1ha2VzIHNlbnNlIGluIGNsb3NlZC1sb29wCisgICAgICAgICAgICBmYW4gc3BlZWQgY29udHJvbCAoaS5lLiB3aGVuIHB3bTFfZW5hYmxlIGlzIHNldCB0byAyKS4KKworICBmYW4xX2lucHV0OiBwcm92aWRlIGN1cnJlbnQgZmFuIHJvdGF0aW9uIHZhbHVlIGluIFJQTSBhcyByZXBvcnRlZCBieQorICAgICAgICAgICAgdGhlIGZhbiB0byB0aGUgZGV2aWNlLgorCisgIGZhbjFfZGl2OiBmYW4gY2xvY2sgZGl2aXNvci4gU3VwcG9ydGVkIHZhbHVlIGFyZSAxLCAyLCA0IGFuZCA4LgorCisgIGZhbjFfcHVsc2VzOiBudW1iZXIgb2YgcHVsc2VzIHBlciBmYW4gcmV2b2x1dGlvbi4gU3VwcG9ydGVkIHZhbHVlcworICAgICAgICAgICAgYXJlIDIgYW5kIDQuCisKKyAgZmFuMV9mYXVsdDogcmVwb3J0cyBmYW4gZmFpbHVyZSwgaS5lLiBubyB0cmFuc2l0aW9uIG9uIGZhbiBnZWFyIHBpbiBmb3IKKyAgICAgICAgICAgIGFib3V0IDAuN3MgKGlmIHRoZSBmYW4gaXMgbm90IHZvbHVudGFyaWx5IHNldCBvZmYpLgorCisgIGZhbjFfYWxhcm06IGluIGNsb3NlZC1sb29wIGNvbnRyb2wgbW9kZSwgaWYgZmFuIFJQTSB2YWx1ZSBpcyAyNSUgb3V0CisgICAgICAgICAgICBvZiB0aGUgcHJvZ3JhbW1lZCB2YWx1ZSBmb3Igb3ZlciA2IHNlY29uZHMgJ2ZhbjFfYWxhcm0nIGlzCisgICAgICAgICAgICBzZXQgdG8gMS4KKworICBwd20xX2VuYWJsZTogc2V0IGN1cnJlbnQgZmFuIHNwZWVkIGNvbnRyb2wgbW9kZSBpLmUuIDEgZm9yIG1hbnVhbCBmYW4KKyAgICAgICAgICAgIHNwZWVkIGNvbnRyb2wgKG9wZW4tbG9vcCkgdmlhIHB3bTEgZGVzY3JpYmVkIGJlbG93LCAyIGZvcgorICAgICAgICAgICAgYXV0b21hdGljIGZhbiBzcGVlZCBjb250cm9sIChjbG9zZWQtbG9vcCkgdmlhIGZhbjFfdGFyZ2V0CisgICAgICAgICAgICBhYm92ZS4KKworICBwd20xX21vZGU6IHNldCBvciBnZXQgZmFuIGRyaXZpbmcgbW9kZTogMSBmb3IgUFdNIG1vZGUsIDAgZm9yIERDIG1vZGUuCisKKyAgcHdtMTogZ2V0IG9yIHNldCBQV00gZmFuIGNvbnRyb2wgdmFsdWUgaW4gb3Blbi1sb29wIG1vZGUuIFRoaXMgaXMgYW4KKyAgICAgICAgICAgIGludGVnZXIgdmFsdWUgYmV0d2VlbiAwIGFuZCAyNTUuIDAgc3RvcHMgdGhlIGZhbiwgMjU1IG1ha2VzCisgICAgICAgICAgICBpdCBydW4gYXQgZnVsbCBzcGVlZC4KKworQm90aCBpbiBQV00gbW9kZSAoJ3B3bTFfbW9kZScgc2V0IHRvIDEpIGFuZCBEQyBtb2RlICgncHdtMV9tb2RlJyBzZXQgdG8gMCksCit3aGVuIGN1cnJlbnQgZmFuIHNwZWVkIGNvbnRyb2wgbW9kZSBpcyBvcGVuLWxvb3AgKCdwd20xX2VuYWJsZScgc2V0IHRvIDEpLAordGhlIGZhbiBzcGVlZCBpcyBwcm9ncmFtbWVkIGJ5IHNldHRpbmcgYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDI1NSB2aWEgJ3B3bTEnCitlbnRyeSAoMCBzdG9wcyB0aGUgZmFuLCAyNTUgbWFrZXMgaXQgcnVuIGF0IGZ1bGwgc3BlZWQpLiBJbiBjbG9zZWQtbG9vcCBtb2RlCisoJ3B3bTFfZW5hYmxlJyBzZXQgdG8gMiksIHRoZSBleHBlY3RlZCByb3RhdGlvbiBzcGVlZCBpbiBSUE0gY2FuIGJlIHBhc3NlZCB0bwordGhlIGNoaXAgdmlhICdmYW4xX3RhcmdldCcuIEluIGNsb3NlZC1sb29wIG1vZGUsIHRoZSB0YXJnZXQgc3BlZWQgaXMgY29tcGFyZWQKK3dpdGggY3VycmVudCBzcGVlZCAoYXZhaWxhYmxlIHZpYSAnZmFuMV9pbnB1dCcpIGJ5IHRoZSBkZXZpY2UgYW5kIGEgZmVlZGJhY2sKK2lzIHBlcmZvcm1lZCB0byBtYXRjaCB0aGF0IHRhcmdldCB2YWx1ZS4gVGhlIGZhbiBzcGVlZCB2YWx1ZSBpcyBjb21wdXRlZAorYmFzZWQgb24gdGhlIHBhcmFtZXRlcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBwaHlzaWNhbCBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlCitzeXN0ZW06IGEgcmVmZXJlbmNlIGNsb2NrIHNvdXJjZSBmcmVxdWVuY3ksIGEgbnVtYmVyIG9mIHB1bHNlcyBwZXIgZmFuCityZXZvbHV0aW9uLCBldGMuCisKK05vdGUgdGhhdCB0aGUgZHJpdmVyIHdpbGwgdXBkYXRlIGl0cyB2YWx1ZXMgYXQgbW9zdCBvbmNlIHBlciBzZWNvbmQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2dsNTE4c20gYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2dsNTE4c20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDk0YmI1NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vZ2w1MThzbQpAQCAtMCwwICsxLDczIEBACitLZXJuZWwgZHJpdmVyIGdsNTE4c20KKz09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogR2VuZXN5cyBMb2dpYyBHTDUxOFNNIHJlbGVhc2UgMHgwMAorICAgIFByZWZpeDogJ2dsNTE4c20nCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJjIGFuZCAweDJkCisgICogR2VuZXN5cyBMb2dpYyBHTDUxOFNNIHJlbGVhc2UgMHg4MAorICAgIFByZWZpeDogJ2dsNTE4c20nCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJjIGFuZCAweDJkCisgICAgRGF0YXNoZWV0OiBodHRwOi8vd3d3LmdlbmVzeXNsb2dpYy5jb20vCisKK0F1dGhvcnM6CisgICAgICAgIEZyb2RvIExvb2lqYWFyZCA8ZnJvZG9sQGRkcy5ubD4sCisgICAgICAgIEt5w7ZzdGkgTcOkbGtraSA8a21hbGtraUBjYy5odXQuZmk+CisgICAgICAgIEhvbmctR3VubiBDaGV3IDxoZ2xpbnV4QGd1bm5ldC5vcmc+CisgICAgICAgIEplYW4gRGVsdmFyZSA8amRlbHZhcmVAc3VzZS5kZT4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK0lNUE9SVEFOVDoKKworRm9yIHRoZSByZXZpc2lvbiAweDAwIGNoaXAsIHRoZSBpbjAsIGluMSwgYW5kIGluMiAgdmFsdWVzICgrNVYsICszViwKK2FuZCArMTJWKSBDQU5OT1QgYmUgcmVhZC4gVGhpcyBpcyBhIGxpbWl0YXRpb24gb2YgdGhlIGNoaXAsIG5vdCB0aGUgZHJpdmVyLgorCitUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgR2VuZXN5cyBMb2dpYyBHTDUxOFNNIGNoaXAuIFRoZXJlIGFyZSBhdCBsZWFzdAordHdvIHJldmlzaW9uIG9mIHRoaXMgY2hpcCwgd2hpY2ggd2UgY2FsbCByZXZpc2lvbiAweDAwIGFuZCAweDgwLiBSZXZpc2lvbgorMHg4MCBjaGlwcyBzdXBwb3J0IHRoZSByZWFkaW5nIG9mIGFsbCB2b2x0YWdlcyBhbmQgcmV2aXNpb24gMHgwMCBvbmx5Citmb3IgVklOMy4KKworVGhlIEdMNTE4U00gaW1wbGVtZW50cyBvbmUgdGVtcGVyYXR1cmUgc2Vuc29yLCB0d28gZmFuIHJvdGF0aW9uIHNwZWVkCitzZW5zb3JzLCBhbmQgZm91ciB2b2x0YWdlIHNlbnNvcnMuIEl0IGNhbiByZXBvcnQgYWxhcm1zIHRocm91Z2ggdGhlCitjb21wdXRlciBzcGVha2Vycy4KKworVGVtcGVyYXR1cmVzIGFyZSBtZWFzdXJlZCBpbiBkZWdyZWVzIENlbHNpdXMuIEFuIGFsYXJtIGdvZXMgb2ZmIHdoaWxlIHRoZQordGVtcGVyYXR1cmUgaXMgYWJvdmUgdGhlIG92ZXIgdGVtcGVyYXR1cmUgbGltaXQsIGFuZCBoYXMgbm90IHlldCBkcm9wcGVkCitiZWxvdyB0aGUgaHlzdGVyZXNpcyBsaW1pdC4gVGhlIGFsYXJtIGFsd2F5cyByZWZsZWN0cyB0aGUgY3VycmVudAorc2l0dWF0aW9uLiBNZWFzdXJlbWVudHMgYXJlIGd1YXJhbnRlZWQgYmV0d2VlbiAtMTAgZGVncmVlcyBhbmQgKzExMAorZGVncmVlcywgd2l0aCBhIGFjY3VyYWN5IG9mICsvLTMgZGVncmVlcy4KKworUm90YXRpb24gc3BlZWRzIGFyZSByZXBvcnRlZCBpbiBSUE0gKHJvdGF0aW9ucyBwZXIgbWludXRlKS4gQW4gYWxhcm0gaXMKK3RyaWdnZXJlZCBpZiB0aGUgcm90YXRpb24gc3BlZWQgaGFzIGRyb3BwZWQgYmVsb3cgYSBwcm9ncmFtbWFibGUgbGltaXQuIEluCitjYXNlIHdoZW4geW91IGhhdmUgc2VsZWN0ZWQgdG8gdHVybiBmYW4xIG9mZiwgbm8gZmFuMSBhbGFybSBpcyB0cmlnZ2VyZWQuCisKK0ZhbiByZWFkaW5ncyBjYW4gYmUgZGl2aWRlZCBieSBhIHByb2dyYW1tYWJsZSBkaXZpZGVyICgxLCAyLCA0IG9yIDgpIHRvCitnaXZlIHRoZSByZWFkaW5ncyBtb3JlIHJhbmdlIG9yIGFjY3VyYWN5LiAgTm90IGFsbCBSUE0gdmFsdWVzIGNhbgorYWNjdXJhdGVseSBiZSByZXByZXNlbnRlZCwgc28gc29tZSByb3VuZGluZyBpcyBkb25lLiBXaXRoIGEgZGl2aWRlcgorb2YgMiwgdGhlIGxvd2VzdCByZXByZXNlbnRhYmxlIHZhbHVlIGlzIGFyb3VuZCAxOTAwIFJQTS4KKworVm9sdGFnZSBzZW5zb3JzIChhbHNvIGtub3duIGFzIFZJTiBzZW5zb3JzKSByZXBvcnQgdGhlaXIgdmFsdWVzIGluIHZvbHRzLgorQW4gYWxhcm0gaXMgdHJpZ2dlcmVkIGlmIHRoZSB2b2x0YWdlIGhhcyBjcm9zc2VkIGEgcHJvZ3JhbW1hYmxlIG1pbmltdW0gb3IKK21heGltdW0gbGltaXQuIE5vdGUgdGhhdCBtaW5pbXVtIGluIHRoaXMgY2FzZSBhbHdheXMgbWVhbnMgJ2Nsb3Nlc3QgdG8KK3plcm8nOyB0aGlzIGlzIGltcG9ydGFudCBmb3IgbmVnYXRpdmUgdm9sdGFnZSBtZWFzdXJlbWVudHMuIFRoZSBWREQgaW5wdXQKK21lYXN1cmVzIHZvbHRhZ2VzIGJldHdlZW4gMC4wMDAgYW5kIDUuODY1IHZvbHQsIHdpdGggYSByZXNvbHV0aW9uIG9mIDAuMDIzCit2b2x0LiBUaGUgb3RoZXIgaW5wdXRzIG1lYXN1cmUgdm9sdGFnZXMgYmV0d2VlbiAwLjAwMCBhbmQgNC44NDUgdm9sdCwgd2l0aAorYSByZXNvbHV0aW9uIG9mIDAuMDE5IHZvbHQuIE5vdGUgdGhhdCByZXZpc2lvbiAweDAwIGNoaXBzIGRvIG5vdCBzdXBwb3J0CityZWFkaW5nIHRoZSBjdXJyZW50IHZvbHRhZ2Ugb2YgYW55IGlucHV0IGV4Y2VwdCBmb3IgVklOMzsgbGltaXQgc2V0dGluZyBhbmQKK2FsYXJtcyB3b3JrIGZpbmUsIHRob3VnaC4KKworV2hlbiBhbiBhbGFybSBpcyB0cmlnZ2VyZWQsIHlvdSBjYW4gYmUgd2FybmVkIGJ5IGEgYmVlcGluZyBzaWduYWwgdGhyb3VnaCB5b3VyCitjb21wdXRlciBzcGVha2VyLiBJdCBpcyBwb3NzaWJsZSB0byBlbmFibGUgYWxsIGJlZXBpbmcgZ2xvYmFsbHksIG9yIG9ubHkgdGhlCitiZWVwaW5nIGZvciBzb21lIGFsYXJtcy4KKworSWYgYW4gYWxhcm0gdHJpZ2dlcnMsIGl0IHdpbGwgcmVtYWluIHRyaWdnZXJlZCB1bnRpbCB0aGUgaGFyZHdhcmUgcmVnaXN0ZXIKK2lzIHJlYWQgYXQgbGVhc3Qgb25jZSAoZXhjZXB0IGZvciB0ZW1wZXJhdHVyZSBhbGFybXMpLiBUaGlzIG1lYW5zIHRoYXQgdGhlCitjYXVzZSBmb3IgdGhlIGFsYXJtIG1heSBhbHJlYWR5IGhhdmUgZGlzYXBwZWFyZWQhIE5vdGUgdGhhdCBpbiB0aGUgY3VycmVudAoraW1wbGVtZW50YXRpb24sIGFsbCBoYXJkd2FyZSByZWdpc3RlcnMgYXJlIHJlYWQgd2hlbmV2ZXIgYW55IGRhdGEgaXMgcmVhZAorKHVubGVzcyBpdCBpcyBsZXNzIHRoYW4gMS41IHNlY29uZHMgc2luY2UgdGhlIGxhc3QgdXBkYXRlKS4gVGhpcyBtZWFucyB0aGF0Cit5b3UgY2FuIGVhc2lseSBtaXNzIG9uY2Utb25seSBhbGFybXMuCisKK1RoZSBHTDUxOFNNIG9ubHkgdXBkYXRlcyBpdHMgdmFsdWVzIGVhY2ggMS41IHNlY29uZHM7IHJlYWRpbmcgaXQgbW9yZSBvZnRlbgord2lsbCBkbyBubyBoYXJtLCBidXQgd2lsbCByZXR1cm4gJ29sZCcgdmFsdWVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9oaWg2MTMwIGIvRG9jdW1lbnRhdGlvbi9od21vbi9oaWg2MTMwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczZGFlOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2hpaDYxMzAKQEAgLTAsMCArMSwzNyBAQAorS2VybmVsIGRyaXZlciBoaWg2MTMwCis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIEhvbmV5d2VsbCBISUgtNjEzMCAvIEhJSC02MTMxCisgICAgUHJlZml4OiAnaGloNjEzMCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBIb25leXdlbGwgd2Vic2l0ZQorICAgIGh0dHA6Ly9zZW5zaW5nLmhvbmV5d2VsbC5jb20vaW5kZXgucGhwP2NpX2lkPTMxMDYmbGFfaWQ9MSZkZWZJZD00NDg3MgorCitBdXRob3I6CisgIElhaW4gUGF0b24gPGlwYXRvbjBAZ21haWwuY29tPgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIEhJSC02MTMwICYgSElILTYxMzEgYXJlIGh1bWlkaXR5IGFuZCB0ZW1wZXJhdHVyZSBzZW5zb3JzIGluIGEgU084IHBhY2thZ2UuCitUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gZGV2aWNlcyBpcyB0aGF0IHRoZSBISUgtNjEzMSBoYXMgYSBjb25kZW5zYXRpb24KK2ZpbHRlci4KKworVGhlIGRldmljZXMgY29tbXVuaWNhdGUgd2l0aCB0aGUgSTJDIHByb3RvY29sLiBBbGwgc2Vuc29ycyBhcmUgc2V0IHRvIHRoZSBzYW1lCitJMkMgYWRkcmVzcyAweDI3IGJ5IGRlZmF1bHQsIHNvIGFuIGVudHJ5IHdpdGggSTJDX0JPQVJEX0lORk8oImhpaDYxMzAiLCAweDI3KQorY2FuIGJlIHVzZWQgaW4gdGhlIGJvYXJkIHNldHVwIGNvZGUuCisKK1BsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pMmMvaW5zdGFudGlhdGluZy1kZXZpY2VzIGZvciBkZXRhaWxzIG9uIGhvdyB0bworaW5zdGFudGlhdGUgSTJDIGRldmljZXMuCisKK3N5c2ZzLUludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tCisKK3RlbXAxX2lucHV0IC0gdGVtcGVyYXR1cmUgaW5wdXQKK2h1bWlkaXR5MV9pbnB1dCAtIGh1bWlkaXR5IGlucHV0CisKK05vdGVzCistLS0tLQorCitDb21tYW5kIG1vZGUgYW5kIGFsYXJtcyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2h0dTIxIGIvRG9jdW1lbnRhdGlvbi9od21vbi9odHUyMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzlhMjE1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9odHUyMQpAQCAtMCwwICsxLDQ2IEBACitLZXJuZWwgZHJpdmVyIGh0dTIxCis9PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBNZWFzdXJlbWVudCBTcGVjaWFsdGllcyBIVFUyMUQKKyAgICBQcmVmaXg6ICdodHUyMScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBNZWFzdXJlbWVudCBTcGVjaWFsdGllcyB3ZWJzaXRlCisgICAgaHR0cDovL3d3dy5tZWFzLXNwZWMuY29tL2Rvd25sb2Fkcy9IVFUyMUQucGRmCisKKworQXV0aG9yOgorICBXaWxsaWFtIE1hcmtlemFuYSA8d2lsbGlhbS5tYXJrZXphbmFAbWVhcy1zcGVjLmNvbT4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoZSBIVFUyMUQgaXMgYSBodW1pZGl0eSBhbmQgdGVtcGVyYXR1cmUgc2Vuc29yIGluIGEgREZOIHBhY2thZ2Ugb2YKK29ubHkgMyB4IDMgbW0gZm9vdHByaW50IGFuZCAwLjkgbW0gaGVpZ2h0LgorCitUaGUgZGV2aWNlcyBjb21tdW5pY2F0ZSB3aXRoIHRoZSBJMkMgcHJvdG9jb2wuIEFsbCBzZW5zb3JzIGFyZSBzZXQgdG8gdGhlCitzYW1lIEkyQyBhZGRyZXNzIDB4NDAsIHNvIGFuIGVudHJ5IHdpdGggSTJDX0JPQVJEX0lORk8oImh0dTIxIiwgMHg0MCkgY2FuCitiZSB1c2VkIGluIHRoZSBib2FyZCBzZXR1cCBjb2RlLgorCitUaGlzIGRyaXZlciBkb2VzIG5vdCBhdXRvLWRldGVjdCBkZXZpY2VzLiBZb3Ugd2lsbCBoYXZlIHRvIGluc3RhbnRpYXRlIHRoZQorZGV2aWNlcyBleHBsaWNpdGx5LiBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaTJjL2luc3RhbnRpYXRpbmctZGV2aWNlcworZm9yIGRldGFpbHMuCisKK3N5c2ZzLUludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tCisKK3RlbXAxX2lucHV0IC0gdGVtcGVyYXR1cmUgaW5wdXQKK2h1bWlkaXR5MV9pbnB1dCAtIGh1bWlkaXR5IGlucHV0CisKK05vdGVzCistLS0tLQorCitUaGUgZHJpdmVyIHVzZXMgdGhlIGRlZmF1bHQgcmVzb2x1dGlvbiBzZXR0aW5ncyBvZiAxMiBiaXQgZm9yIGh1bWlkaXR5IGFuZCAxNAorYml0IGZvciB0ZW1wZXJhdHVyZSwgd2hpY2ggcmVzdWx0cyBpbiB0eXBpY2FsIG1lYXN1cmVtZW50IHRpbWVzIG9mIDExIG1zIGZvcgoraHVtaWRpdHkgYW5kIDQ0IG1zIGZvciB0ZW1wZXJhdHVyZS4gVG8ga2VlcCBzZWxmIGhlYXRpbmcgYmVsb3cgMC4xIGRlZ3JlZQorQ2Vsc2l1cywgdGhlIGRldmljZSBzaG91bGQgbm90IGJlIGFjdGl2ZSBmb3IgbW9yZSB0aGFuIDEwJSBvZiB0aGUgdGltZS4gRm9yCit0aGlzIHJlYXNvbiwgdGhlIGRyaXZlciBwZXJmb3JtcyBubyBtb3JlIHRoYW4gdHdvIG1lYXN1cmVtZW50cyBwZXIgc2Vjb25kIGFuZAorcmVwb3J0cyBjYWNoZWQgaW5mb3JtYXRpb24gaWYgcG9sbGVkIG1vcmUgZnJlcXVlbnRseS4KKworRGlmZmVyZW50IHJlc29sdXRpb25zLCB0aGUgb24tY2hpcCBoZWF0ZXIsIHVzaW5nIHRoZSBDUkMgY2hlY2tzdW0gYW5kIHJlYWRpbmcKK3RoZSBzZXJpYWwgbnVtYmVyIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vaHdtb24ta2VybmVsLWFwaS50eHQgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2h3bW9uLWtlcm5lbC1hcGkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlY2RiZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2h3bW9uLWtlcm5lbC1hcGkudHh0CkBAIC0wLDAgKzEsMTA3IEBACitUaGUgTGludXggSGFyZHdhcmUgTW9uaXRvcmluZyBrZXJuZWwgQVBJLgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworR3VlbnRlciBSb2VjaworCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLQorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgQVBJIHRoYXQgY2FuIGJlIHVzZWQgYnkgaGFyZHdhcmUgbW9uaXRvcmluZworZHJpdmVycyB0aGF0IHdhbnQgdG8gdXNlIHRoZSBoYXJkd2FyZSBtb25pdG9yaW5nIGZyYW1ld29yay4KKworVGhpcyBkb2N1bWVudCBkb2VzIG5vdCBkZXNjcmliZSB3aGF0IGEgaGFyZHdhcmUgbW9uaXRvcmluZyAoaHdtb24pIERyaXZlciBvcgorRGV2aWNlIGlzLiBJdCBhbHNvIGRvZXMgbm90IGRlc2NyaWJlIHRoZSBBUEkgd2hpY2ggY2FuIGJlIHVzZWQgYnkgdXNlciBzcGFjZQordG8gY29tbXVuaWNhdGUgd2l0aCBhIGhhcmR3YXJlIG1vbml0b3JpbmcgZGV2aWNlLiBJZiB5b3Ugd2FudCB0byBrbm93IHRoaXMKK3RoZW4gcGxlYXNlIHJlYWQgdGhlIGZvbGxvd2luZyBmaWxlOiBEb2N1bWVudGF0aW9uL2h3bW9uL3N5c2ZzLWludGVyZmFjZS4KKworRm9yIGFkZGl0aW9uYWwgZ3VpZGVsaW5lcyBvbiBob3cgdG8gd3JpdGUgYW5kIGltcHJvdmUgaHdtb24gZHJpdmVycywgcGxlYXNlCithbHNvIHJlYWQgRG9jdW1lbnRhdGlvbi9od21vbi9zdWJtaXR0aW5nLXBhdGNoZXMuCisKK1RoZSBBUEkKKy0tLS0tLS0KK0VhY2ggaGFyZHdhcmUgbW9uaXRvcmluZyBkcml2ZXIgbXVzdCAjaW5jbHVkZSA8bGludXgvaHdtb24uaD4gYW5kLCBpbiBtb3N0CitjYXNlcywgPGxpbnV4L2h3bW9uLXN5c2ZzLmg+LiBsaW51eC9od21vbi5oIGRlY2xhcmVzIHRoZSBmb2xsb3dpbmcKK3JlZ2lzdGVyL3VucmVnaXN0ZXIgZnVuY3Rpb25zOgorCitzdHJ1Y3QgZGV2aWNlICpod21vbl9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2KTsKK3N0cnVjdCBkZXZpY2UgKgoraHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfZ3JvdXBzKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkgIHZvaWQgKmRydmRhdGEsCisJCQkJICBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICoqZ3JvdXBzKTsKKworc3RydWN0IGRldmljZSAqCitkZXZtX2h3bW9uX2RldmljZV9yZWdpc3Rlcl93aXRoX2dyb3VwcyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKmRydmRhdGEsCisJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipncm91cHMpOworCit2b2lkIGh3bW9uX2RldmljZV91bnJlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKmRldik7Cit2b2lkIGRldm1faHdtb25fZGV2aWNlX3VucmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2KTsKKworaHdtb25fZGV2aWNlX3JlZ2lzdGVyIHJlZ2lzdGVycyBhIGhhcmR3YXJlIG1vbml0b3JpbmcgZGV2aWNlLiBUaGUgcGFyYW1ldGVyCitvZiB0aGlzIGZ1bmN0aW9uIGlzIGEgcG9pbnRlciB0byB0aGUgcGFyZW50IGRldmljZS4KK1RoaXMgZnVuY3Rpb24gcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgaGFyZHdhcmUgbW9uaXRvcmluZyBkZXZpY2UKK29yIFBUUl9FUlIgZm9yIGZhaWx1cmUuIElmIHRoaXMgcmVnaXN0cmF0aW9uIGZ1bmN0aW9uIGlzIHVzZWQsIGhhcmR3YXJlCittb25pdG9yaW5nIHN5c2ZzIGF0dHJpYnV0ZXMgYXJlIGV4cGVjdGVkIHRvIGhhdmUgYmVlbiBjcmVhdGVkIGFuZCBhdHRhY2hlZCB0bwordGhlIHBhcmVudCBkZXZpY2UgcHJpb3IgdG8gY2FsbGluZyBod21vbl9kZXZpY2VfcmVnaXN0ZXIuIEEgbmFtZSBhdHRyaWJ1dGUgbXVzdAoraGF2ZSBiZWVuIGNyZWF0ZWQgYnkgdGhlIGNhbGxlci4KKworaHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfZ3JvdXBzIGlzIHNpbWlsYXIgdG8gaHdtb25fZGV2aWNlX3JlZ2lzdGVyLiBIb3dldmVyLAoraXQgaGFzIGFkZGl0aW9uYWwgcGFyYW1ldGVycy4gVGhlIG5hbWUgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byB0aGUgaHdtb24KK2RldmljZSBuYW1lLiBUaGUgcmVnaXN0cmF0aW9uIGZ1bmN0aW9uIHdpbCBjcmVhdGUgYSBuYW1lIHN5c2ZzIGF0dHJpYnV0ZQorcG9pbnRpbmcgdG8gdGhpcyBuYW1lLiBUaGUgZHJ2ZGF0YSBwYXJhbWV0ZXIgaXMgdGhlIHBvaW50ZXIgdG8gdGhlIGxvY2FsCitkcml2ZXIgZGF0YS4gIGh3bW9uX2RldmljZV9yZWdpc3Rlcl93aXRoX2dyb3VwcyB3aWxsIGF0dGFjaCB0aGlzIHBvaW50ZXIKK3RvIHRoZSBuZXdseSBhbGxvY2F0ZWQgaHdtb24gZGV2aWNlLiBUaGUgcG9pbnRlciBjYW4gYmUgcmV0cmlldmVkIGJ5IHRoZSBkcml2ZXIKK3VzaW5nIGRldl9nZXRfZHJ2ZGF0YSgpIG9uIHRoZSBod21vbiBkZXZpY2UgcG9pbnRlci4gVGhlIGdyb3VwcyBwYXJhbWV0ZXIgaXMKK2EgcG9pbnRlciB0byBhIGxpc3Qgb2Ygc3lzZnMgYXR0cmlidXRlIGdyb3Vwcy4gVGhlIGxpc3QgbXVzdCBiZSBOVUxMIHRlcm1pbmF0ZWQuCitod21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9ncm91cHMgY3JlYXRlcyB0aGUgaHdtb24gZGV2aWNlIHdpdGggbmFtZSBhdHRyaWJ1dGUKK2FzIHdlbGwgYXMgYWxsIHN5c2ZzIGF0dHJpYnV0ZXMgYXR0YWNoZWQgdG8gdGhlIGh3bW9uIGRldmljZS4KKworZGV2bV9od21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9ncm91cHMgaXMgc2ltaWxhciB0bworaHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfZ3JvdXBzLiBIb3dldmVyLCBpdCBpcyBkZXZpY2UgbWFuYWdlZCwgbWVhbmluZyB0aGUKK2h3bW9uIGRldmljZSBkb2VzIG5vdCBoYXZlIHRvIGJlIHJlbW92ZWQgZXhwbGljaXRseSBieSB0aGUgcmVtb3ZhbCBmdW5jdGlvbi4KKworaHdtb25fZGV2aWNlX3VucmVnaXN0ZXIgZGVyZWdpc3RlcnMgYSByZWdpc3RlcmVkIGhhcmR3YXJlIG1vbml0b3JpbmcgZGV2aWNlLgorVGhlIHBhcmFtZXRlciBvZiB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBwb2ludGVyIHRvIHRoZSByZWdpc3RlcmVkIGhhcmR3YXJlCittb25pdG9yaW5nIGRldmljZSBzdHJ1Y3R1cmUuIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgZHJpdmVyCityZW1vdmUgZnVuY3Rpb24gaWYgdGhlIGhhcmR3YXJlIG1vbml0b3JpbmcgZGV2aWNlIHdhcyByZWdpc3RlcmVkIHdpdGgKK2h3bW9uX2RldmljZV9yZWdpc3RlciBvciB3aXRoIGh3bW9uX2RldmljZV9yZWdpc3Rlcl93aXRoX2dyb3Vwcy4KKworZGV2bV9od21vbl9kZXZpY2VfdW5yZWdpc3RlciBkb2VzIG5vdCBub3JtYWxseSBoYXZlIHRvIGJlIGNhbGxlZC4gSXQgaXMgb25seQorbmVlZGVkIGZvciBlcnJvciBoYW5kbGluZywgYW5kIG9ubHkgbmVlZGVkIGlmIHRoZSBkcml2ZXIgcHJvYmUgZmFpbHMgYWZ0ZXIKK3RoZSBjYWxsIHRvIGRldm1faHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfZ3JvdXBzLgorCitUaGUgaGVhZGVyIGZpbGUgbGludXgvaHdtb24tc3lzZnMuaCBwcm92aWRlcyBhIG51bWJlciBvZiB1c2VmdWwgbWFjcm9zIHRvCitkZWNsYXJlIGFuZCB1c2UgaGFyZHdhcmUgbW9uaXRvcmluZyBzeXNmcyBhdHRyaWJ1dGVzLgorCitJbiBtYW55IGNhc2VzLCB5b3UgY2FuIHVzZSB0aGUgZXhzdGluZyBkZWZpbmUgREVWSUNFX0FUVFIgdG8gZGVjbGFyZSBzdWNoCithdHRyaWJ1dGVzLiBUaGlzIGlzIGZlYXNpYmxlIGlmIGFuIGF0dHJpYnV0ZSBoYXMgbm8gYWRkaXRpb25hbCBjb250ZXh0LiBIb3dldmVyLAoraW4gbWFueSBjYXNlcyB0aGVyZSB3aWxsIGJlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gc3VjaCBhcyBhIHNlbnNvciBpbmRleCB3aGljaAord2lsbCBuZWVkIHRvIGJlIHBhc3NlZCB0byB0aGUgc3lzZnMgYXR0cmlidXRlIGhhbmRsaW5nIGZ1bmN0aW9uLgorCitTRU5TT1JfREVWSUNFX0FUVFIgYW5kIFNFTlNPUl9ERVZJQ0VfQVRUUl8yIGNhbiBiZSB1c2VkIHRvIGRlZmluZSBhdHRyaWJ1dGVzCit3aGljaCBuZWVkIHN1Y2ggYWRkaXRpb25hbCBjb250ZXh0IGluZm9ybWF0aW9uLiBTRU5TT1JfREVWSUNFX0FUVFIgcmVxdWlyZXMKK29uZSBhZGRpdGlvbmFsIGFyZ3VtZW50LCBTRU5TT1JfREVWSUNFX0FUVFJfMiByZXF1aXJlcyB0d28uCisKK1NFTlNPUl9ERVZJQ0VfQVRUUiBkZWZpbmVzIGEgc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlIHZhcmlhYmxlLgorVGhpcyBzdHJ1Y3R1cmUgaGFzIHRoZSBmb2xsb3dpbmcgZmllbGRzLgorCitzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGUgeworCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyOworCWludCBpbmRleDsKK307CisKK1lvdSBjYW4gdXNlIHRvX3NlbnNvcl9kZXZfYXR0ciB0byBnZXQgdGhlIHBvaW50ZXIgdG8gdGhpcyBzdHJ1Y3R1cmUgZnJvbSB0aGUKK2F0dHJpYnV0ZSByZWFkIG9yIHdyaXRlIGZ1bmN0aW9uLiBJdHMgcGFyYW1ldGVyIGlzIHRoZSBkZXZpY2UgdG8gd2hpY2ggdGhlCithdHRyaWJ1dGUgaXMgYXR0YWNoZWQuCisKK1NFTlNPUl9ERVZJQ0VfQVRUUl8yIGRlZmluZXMgYSBzdHJ1Y3Qgc2Vuc29yX2RldmljZV9hdHRyaWJ1dGVfMiB2YXJpYWJsZSwKK3doaWNoIGlzIGRlZmluZWQgYXMgZm9sbG93cy4KKworc3RydWN0IHNlbnNvcl9kZXZpY2VfYXR0cmlidXRlXzIgeworCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyOworCXU4IGluZGV4OworCXU4IG5yOworfTsKKworVXNlIHRvX3NlbnNvcl9kZXZfYXR0cl8yIHRvIGdldCB0aGUgcG9pbnRlciB0byB0aGlzIHN0cnVjdHVyZS4gSXRzIHBhcmFtZXRlcgoraXMgdGhlIGRldmljZSB0byB3aGljaCB0aGUgYXR0cmlidXRlIGlzIGF0dGFjaGVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9pYm1hZW0gYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2libWFlbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTBkNTllCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9pYm1hZW0KQEAgLTAsMCArMSwzOCBAQAorS2VybmVsIGRyaXZlciBpYm1hZW0KKz09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBkcml2ZXIgdGFsa3MgdG8gdGhlIElCTSBTeXN0ZW1zIERpcmVjdG9yIEFjdGl2ZSBFbmVyZ3kgTWFuYWdlciwga25vd24KK2hlbmNlZm9ydGggYXMgQUVNLgorCitTdXBwb3J0ZWQgc3lzdGVtczoKKyAgKiBBbnkgcmVjZW50IElCTSBTeXN0ZW0gWCBzZXJ2ZXIgd2l0aCBBRU0gc3VwcG9ydC4KKyAgICBUaGlzIGluY2x1ZGVzIHRoZSB4MzM1MCwgeDM1NTAsIHgzNjUwLCB4MzY1NSwgeDM3NTUsIHgzODUwIE0yLAorICAgIHgzOTUwIE0yLCBhbmQgY2VydGFpbiBIQzEwL0hTMngvTFMyeC9RUzJ4IGJsYWRlcy4gIFRoZSBJUE1JIGhvc3QgaW50ZXJmYWNlCisgICAgZHJpdmVyICgiaXBtaS1zaSIpIG5lZWRzIHRvIGJlIGxvYWRlZCBmb3IgdGhpcyBkcml2ZXIgdG8gZG8gYW55dGhpbmcuCisgICAgUHJlZml4OiAnaWJtYWVtJworICAgIERhdGFzaGVldDogTm90IGF2YWlsYWJsZQorCitBdXRob3I6IERhcnJpY2sgSi4gV29uZworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgaW1wbGVtZW50cyBzZW5zb3IgcmVhZGluZyBzdXBwb3J0IGZvciB0aGUgZW5lcmd5IGFuZCBwb3dlciBtZXRlcnMKK2F2YWlsYWJsZSBvbiB2YXJpb3VzIElCTSBTeXN0ZW0gWCBoYXJkd2FyZSB0aHJvdWdoIHRoZSBCTUMuICBBbGwgc2Vuc29yIGJhbmtzCit3aWxsIGJlIGV4cG9ydGVkIGFzIHBsYXRmb3JtIGRldmljZXM7IHRoaXMgZHJpdmVyIGNhbiB0YWxrIHRvIGJvdGggdjEgYW5kIHYyCitpbnRlcmZhY2VzLiAgVGhpcyBkcml2ZXIgaXMgY29tcGxldGVseSBzZXBhcmF0ZSBmcm9tIHRoZSBvbGRlciBpYm1wZXggZHJpdmVyLgorCitUaGUgdjEgQUVNIGludGVyZmFjZSBoYXMgYSBzaW1wbGUgc2V0IG9mIGZlYXR1cmVzIHRvIG1vbml0b3IgZW5lcmd5IHVzZS4gIFRoZXJlCitpcyBhIHJlZ2lzdGVyIHRoYXQgZGlzcGxheXMgYW4gZXN0aW1hdGUgb2YgcmF3IGVuZXJneSBjb25zdW1wdGlvbiBzaW5jZSB0aGUKK2xhc3QgQk1DIHJlc2V0LCBhbmQgYSBwb3dlciBzZW5zb3IgdGhhdCByZXR1cm5zIGF2ZXJhZ2UgcG93ZXIgdXNlIG92ZXIgYQorY29uZmlndXJhYmxlIGludGVydmFsLgorCitUaGUgdjIgQUVNIGludGVyZmFjZSBpcyBhIGJpdCBtb3JlIHNvcGhpc3RpY2F0ZWQsIGJlaW5nIGFibGUgdG8gcHJlc2VudCBhIHdpZGVyCityYW5nZSBvZiBlbmVyZ3kgYW5kIHBvd2VyIHVzZSByZWdpc3RlcnMsIHRoZSBwb3dlciBjYXAgYXMgc2V0IGJ5IHRoZSBBRU0KK3NvZnR3YXJlLCBhbmQgdGVtcGVyYXR1cmUgc2Vuc29ycy4KKworU3BlY2lhbCBGZWF0dXJlcworLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgInBvd2VyX2NhcCIgdmFsdWUgZGlzcGxheXMgdGhlIGN1cnJlbnQgc3lzdGVtIHBvd2VyIGNhcCwgYXMgc2V0IGJ5IHRoZSBBRU0KK3NvZnR3YXJlLiAgU2V0dGluZyB0aGUgcG93ZXIgY2FwIGZyb20gdGhlIGhvc3QgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2libXBvd2VybnYgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2libXBvd2VybnYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgyNmJhMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vaWJtcG93ZXJudgpAQCAtMCwwICsxLDQxIEBACitLZXJuZWwgRHJpdmVyIElCTVBPV0VSTlYKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgc3lzdGVtczoKKyAgKiBBbnkgcmVjZW50IElCTSBQIHNlcnZlcnMgYmFzZWQgb24gUE9XRVJOViBwbGF0Zm9ybQorCitBdXRob3I6IE5lZWxlc2ggR3VwdGEKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGltcGxlbWVudHMgcmVhZGluZyB0aGUgcGxhdGZvcm0gc2Vuc29ycyBkYXRhIGxpa2UgdGVtcGVyYXR1cmUvZmFuLwordm9sdGFnZS9wb3dlciBmb3IgJ1BPV0VSTlYnIHBsYXRmb3JtLgorCitUaGUgZHJpdmVyIHVzZXMgdGhlIHBsYXRmb3JtIGRldmljZSBpbmZyYXN0cnVjdHVyZS4gSXQgcHJvYmVzIHRoZSBkZXZpY2UgdHJlZQorZm9yIHNlbnNvciBkZXZpY2VzIGR1cmluZyB0aGUgX19pbml0IHBoYXNlIGFuZCByZWdpc3RlcnMgdGhlbSB3aXRoIHRoZSAnaHdtb24nLgorJ2h3bW9uJyBwb3B1bGF0ZXMgdGhlICdzeXNmcycgdHJlZSBoYXZpbmcgYXR0cmlidXRlIGZpbGVzLCBlYWNoIGZvciBhIGdpdmVuCitzZW5zb3IgdHlwZSBhbmQgaXRzIGF0dHJpYnV0ZSBkYXRhLgorCitBbGwgdGhlIG5vZGVzIGluIHRoZSBEVCBhcHBlYXIgdW5kZXIgIi9pYm0sb3BhbC9zZW5zb3JzIiBhbmQgZWFjaCB2YWxpZCBub2RlIGluCit0aGUgRFQgbWFwcyB0byBhbiBhdHRyaWJ1dGUgZmlsZSBpbiAnc3lzZnMnLiBUaGUgbm9kZSBleHBvcnRzIHVuaXF1ZSAnc2Vuc29yLWlkJword2hpY2ggdGhlIGRyaXZlciB1c2VzIHRvIG1ha2UgYW4gT1BBTCBjYWxsIHRvIHRoZSBmaXJtd2FyZS4KKworVXNhZ2Ugbm90ZXMKKy0tLS0tLS0tLS0tCitUaGUgZHJpdmVyIGlzIGJ1aWx0IHN0YXRpY2FsbHkgd2l0aCB0aGUga2VybmVsIGJ5IGVuYWJsaW5nIHRoZSBjb25maWcKK0NPTkZJR19TRU5TT1JTX0lCTVBPV0VSTlYuIEl0IGNhbiBhbHNvIGJlIGJ1aWx0IGFzIG1vZHVsZSAnaWJtcG93ZXJudicuCisKK1N5c2ZzIGF0dHJpYnV0ZXMKKy0tLS0tLS0tLS0tLS0tLS0KKworZmFuWF9pbnB1dAkJTWVhc3VyZWQgUlBNIHZhbHVlLgorZmFuWF9taW4JCVRocmVzaG9sZCBSUE0gZm9yIGFsZXJ0IGdlbmVyYXRpb24uCitmYW5YX2ZhdWx0CQkwOiBObyBmYWlsIGNvbmRpdGlvbgorCQkJMTogRmFpbGluZyBmYW4KK3RlbXBYX2lucHV0CQlNZWFzdXJlZCBhbWJpZW50IHRlbXBlcmF0dXJlLgordGVtcFhfbWF4CQlUaHJlc2hvbGQgYW1iaWVudCB0ZW1wZXJhdHVyZSBmb3IgYWxlcnQgZ2VuZXJhdGlvbi4KK2luWF9pbnB1dAkJTWVhc3VyZWQgcG93ZXIgc3VwcGx5IHZvbHRhZ2UKK2luWF9mYXVsdAkJMDogTm8gZmFpbCBjb25kaXRpb24uCisJCQkxOiBGYWlsaW5nIHBvd2VyIHN1cHBseS4KK3Bvd2VyMV9pbnB1dAkJU3lzdGVtIHBvd2VyIGNvbnN1bXB0aW9uIChtaWNyb1dhdHQpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2luYTIwOSBiL0RvY3VtZW50YXRpb24vaHdtb24vaW5hMjA5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MjUwMWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2luYTIwOQpAQCAtMCwwICsxLDkzIEBACitLZXJuZWwgZHJpdmVyIGluYTIwOQorPT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBCdXJyLUJyb3duIC8gVGV4YXMgSW5zdHJ1bWVudHMgSU5BMjA5CisgICAgUHJlZml4OiAnaW5hMjA5JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OgorICAgICAgICBodHRwOi8vd3d3LnRpLmNvbS9saXQvZ3BuL2luYTIwOQorCitBdXRob3I6IFBhdWwgSGF5cyA8UGF1bC5IYXlzQGNhdHRhaWwuY2E+CitBdXRob3I6IElyYSBXLiBTbnlkZXIgPGl3c0BvdnJvLmNhbHRlY2guZWR1PgorQXV0aG9yOiBHdWVudGVyIFJvZWNrIDxsaW51eEByb2Vjay11cy5uZXQ+CisKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoZSBUSSAvIEJ1cnItQnJvd24gSU5BMjA5IG1vbml0b3JzIHZvbHRhZ2UsIGN1cnJlbnQsIGFuZCBwb3dlciBvbiB0aGUgaGlnaCBzaWRlCitvZiBhIEQuQy4gcG93ZXIgc3VwcGx5LiBJdCBjYW4gcGVyZm9ybSBtZWFzdXJlbWVudHMgYW5kIGNhbGN1bGF0aW9ucyBpbiB0aGUKK2JhY2tncm91bmQgdG8gc3VwcGx5IHJlYWRpbmdzIGF0IGFueSB0aW1lLiBJdCBpbmNsdWRlcyBhIHByb2dyYW1tYWJsZQorY2FsaWJyYXRpb24gbXVsdGlwbGllciB0byBzY2FsZSB0aGUgZGlzcGxheWVkIGN1cnJlbnQgYW5kIHBvd2VyIHZhbHVlcy4KKworCitTeXNmcyBlbnRyaWVzCistLS0tLS0tLS0tLS0tCisKK1RoZSBJTkEyMDkgY2hpcCBpcyBoaWdobHkgY29uZmlndXJhYmxlIGJvdGggdmlhIGhhcmR3aXJpbmcgYW5kIHZpYQordGhlIEkyQyBidXMuIFNlZSB0aGUgZGF0YXNoZWV0IGZvciBkZXRhaWxzLgorCitUaGlzIHRyaWVzIHRvIGV4cG9zZSBtb3N0IG1vbml0b3JpbmcgZmVhdHVyZXMgb2YgdGhlIGhhcmR3YXJlIHZpYQorc3lzZnMuIEl0IGRvZXMgbm90IHN1cHBvcnQgZXZlcnkgZmVhdHVyZSBvZiB0aGlzIGNoaXAuCisKKworaW4wX2lucHV0CQlzaHVudCB2b2x0YWdlIChtVikKK2luMF9pbnB1dF9oaWdoZXN0CXNodW50IHZvbHRhZ2UgaGlzdG9yaWNhbCBtYXhpbXVtIHJlYWRpbmcgKG1WKQoraW4wX2lucHV0X2xvd2VzdAlzaHVudCB2b2x0YWdlIGhpc3RvcmljYWwgbWluaW11bSByZWFkaW5nIChtVikKK2luMF9yZXNldF9oaXN0b3J5CXJlc2V0IHNodW50IHZvbHRhZ2UgaGlzdG9yeQoraW4wX21heAkJCXNodW50IHZvbHRhZ2UgbWF4IGFsYXJtIGxpbWl0IChtVikKK2luMF9taW4JCQlzaHVudCB2b2x0YWdlIG1pbiBhbGFybSBsaW1pdCAobVYpCitpbjBfY3JpdF9tYXgJCXNodW50IHZvbHRhZ2UgY3JpdCBtYXggYWxhcm0gbGltaXQgKG1WKQoraW4wX2NyaXRfbWluCQlzaHVudCB2b2x0YWdlIGNyaXQgbWluIGFsYXJtIGxpbWl0IChtVikKK2luMF9tYXhfYWxhcm0JCXNodW50IHZvbHRhZ2UgbWF4IGFsYXJtIGxpbWl0IGV4Y2VlZGVkCitpbjBfbWluX2FsYXJtCQlzaHVudCB2b2x0YWdlIG1pbiBhbGFybSBsaW1pdCBleGNlZWRlZAoraW4wX2NyaXRfbWF4X2FsYXJtCXNodW50IHZvbHRhZ2UgY3JpdCBtYXggYWxhcm0gbGltaXQgZXhjZWVkZWQKK2luMF9jcml0X21pbl9hbGFybQlzaHVudCB2b2x0YWdlIGNyaXQgbWluIGFsYXJtIGxpbWl0IGV4Y2VlZGVkCisKK2luMV9pbnB1dAkJYnVzIHZvbHRhZ2UgKG1WKQoraW4xX2lucHV0X2hpZ2hlc3QJYnVzIHZvbHRhZ2UgaGlzdG9yaWNhbCBtYXhpbXVtIHJlYWRpbmcgKG1WKQoraW4xX2lucHV0X2xvd2VzdAlidXMgdm9sdGFnZSBoaXN0b3JpY2FsIG1pbmltdW0gcmVhZGluZyAobVYpCitpbjFfcmVzZXRfaGlzdG9yeQlyZXNldCBidXMgdm9sdGFnZSBoaXN0b3J5CitpbjFfbWF4CQkJYnVzIHZvbHRhZ2UgbWF4IGFsYXJtIGxpbWl0IChtVikKK2luMV9taW4JCQlidXMgdm9sdGFnZSBtaW4gYWxhcm0gbGltaXQgKG1WKQoraW4xX2NyaXRfbWF4CQlidXMgdm9sdGFnZSBjcml0IG1heCBhbGFybSBsaW1pdCAobVYpCitpbjFfY3JpdF9taW4JCWJ1cyB2b2x0YWdlIGNyaXQgbWluIGFsYXJtIGxpbWl0IChtVikKK2luMV9tYXhfYWxhcm0JCWJ1cyB2b2x0YWdlIG1heCBhbGFybSBsaW1pdCBleGNlZWRlZAoraW4xX21pbl9hbGFybQkJYnVzIHZvbHRhZ2UgbWluIGFsYXJtIGxpbWl0IGV4Y2VlZGVkCitpbjFfY3JpdF9tYXhfYWxhcm0JYnVzIHZvbHRhZ2UgY3JpdCBtYXggYWxhcm0gbGltaXQgZXhjZWVkZWQKK2luMV9jcml0X21pbl9hbGFybQlidXMgdm9sdGFnZSBjcml0IG1pbiBhbGFybSBsaW1pdCBleGNlZWRlZAorCitwb3dlcjFfaW5wdXQJCXBvd2VyIG1lYXN1cmVtZW50ICh1VykKK3Bvd2VyMV9pbnB1dF9oaWdoZXN0CXBvd2VyIGhpc3RvcmljYWwgbWF4aW11bSByZWFkaW5nICh1VykKK3Bvd2VyMV9yZXNldF9oaXN0b3J5CXJlc2V0IHBvd2VyIGhpc3RvcnkKK3Bvd2VyMV9tYXgJCXBvd2VyIG1heCBhbGFybSBsaW1pdCAodVcpCitwb3dlcjFfY3JpdAkJcG93ZXIgY3JpdCBhbGFybSBsaW1pdCAodVcpCitwb3dlcjFfbWF4X2FsYXJtCXBvd2VyIG1heCBhbGFybSBsaW1pdCBleGNlZWRlZAorcG93ZXIxX2NyaXRfYWxhcm0JcG93ZXIgY3JpdCBhbGFybSBsaW1pdCBleGNlZWRlZAorCitjdXJyMV9pbnB1dAkJY3VycmVudCBtZWFzdXJlbWVudCAobUEpCisKK3VwZGF0ZV9pbnRlcnZhbAkJZGF0YSBjb252ZXJzaW9uIHRpbWU7IGFmZmVjdHMgbnVtYmVyIG9mIHNhbXBsZXMgdXNlZAorCQkJdG8gYXZlcmFnZSByZXN1bHRzIGZvciBzaHVudCBhbmQgYnVzIHZvbHRhZ2VzLgorCitHZW5lcmFsIFJlbWFya3MKKy0tLS0tLS0tLS0tLS0tLQorCitUaGUgcG93ZXIgYW5kIGN1cnJlbnQgcmVnaXN0ZXJzIGluIHRoaXMgY2hpcCByZXF1aXJlIHRoYXQgdGhlIGNhbGlicmF0aW9uCityZWdpc3RlciBpcyBwcm9ncmFtbWVkIGNvcnJlY3RseSBiZWZvcmUgdGhleSBhcmUgdXNlZC4gTm9ybWFsbHkgdGhpcyBpcyBleHBlY3RlZAordG8gYmUgZG9uZSBpbiB0aGUgQklPUy4gSW4gdGhlIGFic2VuY2Ugb2YgQklPUyBwcm9ncmFtbWluZywgdGhlIHNodW50IHJlc2lzdG9yCit2b2x0YWdlIGNhbiBiZSBwcm92aWRlZCB1c2luZyBwbGF0Zm9ybSBkYXRhLiBUaGUgZHJpdmVyIHVzZXMgcGxhdGZvcm0gZGF0YSBmcm9tCit0aGUgaW5hMnh4IGRyaXZlciBmb3IgdGhpcyBwdXJwb3NlLiBJZiBjYWxpYnJhdGlvbiByZWdpc3RlciBkYXRhIGlzIG5vdCBwcm92aWRlZAordmlhIHBsYXRmb3JtIGRhdGEsIHRoZSBkcml2ZXIgY2hlY2tzIGlmIHRoZSBjYWxpYnJhdGlvbiByZWdpc3RlciBoYXMgYmVlbgorcHJvZ3JhbW1lZCAoaWUgaGFzIGEgdmFsdWUgbm90IGVxdWFsIHRvIHplcm8pLiBJZiBzbywgdGhpcyB2YWx1ZSBpcyByZXRhaW5lZC4KK090aGVyd2lzZSwgYSBkZWZhdWx0IHZhbHVlIHJlZmxlY3RpbmcgYSBzaHVudCByZXNpc3RvciB2YWx1ZSBvZiAxMCBtT2htIGlzCitwcm9ncmFtbWVkIGludG8gdGhlIGNhbGlicmF0aW9uIHJlZ2lzdGVyLgorCisKK091dHB1dCBQaW5zCistLS0tLS0tLS0tLQorCitPdXRwdXQgcGluIHByb2dyYW1taW5nIGlzIGEgYm9hcmQgZmVhdHVyZSB3aGljaCBkZXBlbmRzIG9uIHRoZSBCSU9TLiBJdCBpcworb3V0c2lkZSB0aGUgc2NvcGUgb2YgYSBoYXJkd2FyZSBtb25pdG9yaW5nIGRyaXZlciB0byBlbmFibGUgb3IgZGlzYWJsZSBvdXRwdXQKK3BpbnMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2luYTJ4eCBiL0RvY3VtZW50YXRpb24vaHdtb24vaW5hMnh4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmZDMxZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2luYTJ4eApAQCAtMCwwICsxLDY0IEBACitLZXJuZWwgZHJpdmVyIGluYTJ4eAorPT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIFRleGFzIEluc3RydW1lbnRzIElOQTIxOQorICAgIFByZWZpeDogJ2luYTIxOScKKyAgICBBZGRyZXNzZXM6IEkyQyAweDQwIC0gMHg0ZgorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBUZXhhcyBJbnN0cnVtZW50cyB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3LnRpLmNvbS8KKworICAqIFRleGFzIEluc3RydW1lbnRzIElOQTIyMAorICAgIFByZWZpeDogJ2luYTIyMCcKKyAgICBBZGRyZXNzZXM6IEkyQyAweDQwIC0gMHg0ZgorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBUZXhhcyBJbnN0cnVtZW50cyB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3LnRpLmNvbS8KKworICAqIFRleGFzIEluc3RydW1lbnRzIElOQTIyNgorICAgIFByZWZpeDogJ2luYTIyNicKKyAgICBBZGRyZXNzZXM6IEkyQyAweDQwIC0gMHg0ZgorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBUZXhhcyBJbnN0cnVtZW50cyB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3LnRpLmNvbS8KKworICAqIFRleGFzIEluc3RydW1lbnRzIElOQTIzMAorICAgIFByZWZpeDogJ2luYTIzMCcKKyAgICBBZGRyZXNzZXM6IEkyQyAweDQwIC0gMHg0ZgorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBUZXhhcyBJbnN0cnVtZW50cyB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3LnRpLmNvbS8KKworICAqIFRleGFzIEluc3RydW1lbnRzIElOQTIzMQorICAgIFByZWZpeDogJ2luYTIzMScKKyAgICBBZGRyZXNzZXM6IEkyQyAweDQwIC0gMHg0ZgorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBUZXhhcyBJbnN0cnVtZW50cyB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3LnRpLmNvbS8KKworQXV0aG9yOiBMb3RoYXIgRmVsdGVuIDxsLWZlbHRlbkB0aS5jb20+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGUgSU5BMjE5IGlzIGEgaGlnaC1zaWRlIGN1cnJlbnQgc2h1bnQgYW5kIHBvd2VyIG1vbml0b3Igd2l0aCBhbiBJMkMKK2ludGVyZmFjZS4gVGhlIElOQTIxOSBtb25pdG9ycyBib3RoIHNodW50IGRyb3AgYW5kIHN1cHBseSB2b2x0YWdlLCB3aXRoCitwcm9ncmFtbWFibGUgY29udmVyc2lvbiB0aW1lcyBhbmQgZmlsdGVyaW5nLgorCitUaGUgSU5BMjIwIGlzIGEgaGlnaCBvciBsb3cgc2lkZSBjdXJyZW50IHNodW50IGFuZCBwb3dlciBtb25pdG9yIHdpdGggYW4gSTJDCitpbnRlcmZhY2UuIFRoZSBJTkEyMjAgbW9uaXRvcnMgYm90aCBzaHVudCBkcm9wIGFuZCBzdXBwbHkgdm9sdGFnZS4KKworVGhlIElOQTIyNiBpcyBhIGN1cnJlbnQgc2h1bnQgYW5kIHBvd2VyIG1vbml0b3Igd2l0aCBhbiBJMkMgaW50ZXJmYWNlLgorVGhlIElOQTIyNiBtb25pdG9ycyBib3RoIGEgc2h1bnQgdm9sdGFnZSBkcm9wIGFuZCBidXMgc3VwcGx5IHZvbHRhZ2UuCisKK0lOQTIzMCBhbmQgSU5BMjMxIGFyZSBoaWdoIG9yIGxvdyBzaWRlIGN1cnJlbnQgc2h1bnQgYW5kIHBvd2VyIG1vbml0b3JzCit3aXRoIGFuIEkyQyBpbnRlcmZhY2UuIFRoZSBjaGlwcyBtb25pdG9yIGJvdGggYSBzaHVudCB2b2x0YWdlIGRyb3AgYW5kCitidXMgc3VwcGx5IHZvbHRhZ2UuCisKK1RoZSBzaHVudCB2YWx1ZSBpbiBtaWNyby1vaG1zIGNhbiBiZSBzZXQgdmlhIHBsYXRmb3JtIGRhdGEgb3IgZGV2aWNlIHRyZWUgYXQKK2NvbXBpbGUtdGltZSBvciB2aWEgdGhlIHNodW50X3Jlc2lzdG9yIGF0dHJpYnV0ZSBpbiBzeXNmcyBhdCBydW4tdGltZS4gUGxlYXNlCityZWZlciB0byB0aGUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pbmEyeHgudHh0IGZvciBiaW5kaW5ncworaWYgdGhlIGRldmljZSB0cmVlIGlzIHVzZWQuCisKK0FkZGl0aW9uYWxseSBpbmEyMjYgc3VwcG9ydHMgdXBkYXRlX2ludGVydmFsIGF0dHJpYnV0ZSBhcyBkZXNjcmliZWQgaW4KK0RvY3VtZW50YXRpb24vaHdtb24vc3lzZnMtaW50ZXJmYWNlLiBJbnRlcm5hbGx5IHRoZSBpbnRlcnZhbCBpcyB0aGUgc3VtIG9mCitidXMgYW5kIHNodW50IHZvbHRhZ2UgY29udmVyc2lvbiB0aW1lcyBtdWx0aXBsaWVkIGJ5IHRoZSBhdmVyYWdpbmcgcmF0ZS4gV2UKK2Rvbid0IHRvdWNoIHRoZSBjb252ZXJzaW9uIHRpbWVzIGFuZCBvbmx5IG1vZGlmeSB0aGUgbnVtYmVyIG9mIGF2ZXJhZ2VzLiBUaGUKK2xvd2VyIGxpbWl0IG9mIHRoZSB1cGRhdGVfaW50ZXJ2YWwgaXMgMiBtcywgdGhlIHVwcGVyIGxpbWl0IGlzIDIyNTMgbXMuCitUaGUgYWN0dWFsIHByb2dyYW1tZWQgaW50ZXJ2YWwgbWF5IHZhcnkgZnJvbSB0aGUgZGVzaXJlZCB2YWx1ZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vaXQ4NyBiL0RvY3VtZW50YXRpb24vaHdtb24vaXQ4NwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzMyOTZkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9pdDg3CkBAIC0wLDAgKzEsMjcxIEBACitLZXJuZWwgZHJpdmVyIGl0ODcKKz09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogSVQ4NjAzRS9JVDg2MjNFCisgICAgUHJlZml4OiAnaXQ4NjAzJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBmcm9tIFN1cGVyIEkvTyBjb25maWcgc3BhY2UgKDggSS9PIHBvcnRzKQorICAgIERhdGFzaGVldDogTm90IHB1YmxpY2x5IGF2YWlsYWJsZQorICAqIElUODYyMEUKKyAgICBQcmVmaXg6ICdpdDg2MjAnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IGZyb20gU3VwZXIgSS9PIGNvbmZpZyBzcGFjZSAoOCBJL08gcG9ydHMpCisgICAgRGF0YXNoZWV0OiBOb3QgcHVibGljbHkgYXZhaWxhYmxlCisgICogSVQ4NzA1RgorICAgIFByZWZpeDogJ2l0ODcnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IGZyb20gU3VwZXIgSS9PIGNvbmZpZyBzcGFjZSAoOCBJL08gcG9ydHMpCisgICAgRGF0YXNoZWV0OiBPbmNlIHB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgSVRFIHdlYnNpdGUsIGJ1dCBubyBsb25nZXIKKyAgKiBJVDg3MTJGCisgICAgUHJlZml4OiAnaXQ4NzEyJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBmcm9tIFN1cGVyIEkvTyBjb25maWcgc3BhY2UgKDggSS9PIHBvcnRzKQorICAgIERhdGFzaGVldDogT25jZSBwdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIElURSB3ZWJzaXRlLCBidXQgbm8gbG9uZ2VyCisgICogSVQ4NzE2Ri9JVDg3MjZGCisgICAgUHJlZml4OiAnaXQ4NzE2JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBmcm9tIFN1cGVyIEkvTyBjb25maWcgc3BhY2UgKDggSS9PIHBvcnRzKQorICAgIERhdGFzaGVldDogT25jZSBwdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIElURSB3ZWJzaXRlLCBidXQgbm8gbG9uZ2VyCisgICogSVQ4NzE4RgorICAgIFByZWZpeDogJ2l0ODcxOCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogZnJvbSBTdXBlciBJL08gY29uZmlnIHNwYWNlICg4IEkvTyBwb3J0cykKKyAgICBEYXRhc2hlZXQ6IE9uY2UgcHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBJVEUgd2Vic2l0ZSwgYnV0IG5vIGxvbmdlcgorICAqIElUODcyMEYKKyAgICBQcmVmaXg6ICdpdDg3MjAnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IGZyb20gU3VwZXIgSS9PIGNvbmZpZyBzcGFjZSAoOCBJL08gcG9ydHMpCisgICAgRGF0YXNoZWV0OiBOb3QgcHVibGljbHkgYXZhaWxhYmxlCisgICogSVQ4NzIxRi9JVDg3NThFCisgICAgUHJlZml4OiAnaXQ4NzIxJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBmcm9tIFN1cGVyIEkvTyBjb25maWcgc3BhY2UgKDggSS9PIHBvcnRzKQorICAgIERhdGFzaGVldDogTm90IHB1YmxpY2x5IGF2YWlsYWJsZQorICAqIElUODcyOEYKKyAgICBQcmVmaXg6ICdpdDg3MjgnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IGZyb20gU3VwZXIgSS9PIGNvbmZpZyBzcGFjZSAoOCBJL08gcG9ydHMpCisgICAgRGF0YXNoZWV0OiBOb3QgcHVibGljbHkgYXZhaWxhYmxlCisgICogSVQ4NzMyRgorICAgIFByZWZpeDogJ2l0ODczMicKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogZnJvbSBTdXBlciBJL08gY29uZmlnIHNwYWNlICg4IEkvTyBwb3J0cykKKyAgICBEYXRhc2hlZXQ6IE5vdCBwdWJsaWNseSBhdmFpbGFibGUKKyAgKiBJVDg3NzFFCisgICAgUHJlZml4OiAnaXQ4NzcxJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBmcm9tIFN1cGVyIEkvTyBjb25maWcgc3BhY2UgKDggSS9PIHBvcnRzKQorICAgIERhdGFzaGVldDogTm90IHB1YmxpY2x5IGF2YWlsYWJsZQorICAqIElUODc3MkUKKyAgICBQcmVmaXg6ICdpdDg3NzInCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IGZyb20gU3VwZXIgSS9PIGNvbmZpZyBzcGFjZSAoOCBJL08gcG9ydHMpCisgICAgRGF0YXNoZWV0OiBOb3QgcHVibGljbHkgYXZhaWxhYmxlCisgICogSVQ4NzgxRgorICAgIFByZWZpeDogJ2l0ODc4MScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogZnJvbSBTdXBlciBJL08gY29uZmlnIHNwYWNlICg4IEkvTyBwb3J0cykKKyAgICBEYXRhc2hlZXQ6IE5vdCBwdWJsaWNseSBhdmFpbGFibGUKKyAgKiBJVDg3ODJGCisgICAgUHJlZml4OiAnaXQ4NzgyJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBmcm9tIFN1cGVyIEkvTyBjb25maWcgc3BhY2UgKDggSS9PIHBvcnRzKQorICAgIERhdGFzaGVldDogTm90IHB1YmxpY2x5IGF2YWlsYWJsZQorICAqIElUODc4M0UvRgorICAgIFByZWZpeDogJ2l0ODc4MycKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogZnJvbSBTdXBlciBJL08gY29uZmlnIHNwYWNlICg4IEkvTyBwb3J0cykKKyAgICBEYXRhc2hlZXQ6IE5vdCBwdWJsaWNseSBhdmFpbGFibGUKKyAgKiBJVDg3ODZFCisgICAgUHJlZml4OiAnaXQ4Nzg2JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBmcm9tIFN1cGVyIEkvTyBjb25maWcgc3BhY2UgKDggSS9PIHBvcnRzKQorICAgIERhdGFzaGVldDogTm90IHB1YmxpY2x5IGF2YWlsYWJsZQorICAqIElUODc5MEUKKyAgICBQcmVmaXg6ICdpdDg3OTAnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IGZyb20gU3VwZXIgSS9PIGNvbmZpZyBzcGFjZSAoOCBJL08gcG9ydHMpCisgICAgRGF0YXNoZWV0OiBOb3QgcHVibGljbHkgYXZhaWxhYmxlCisgICogU2lTOTUwICAgW2Nsb25lIG9mIElUODcwNUZdCisgICAgUHJlZml4OiAnaXQ4NycKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogZnJvbSBTdXBlciBJL08gY29uZmlnIHNwYWNlICg4IEkvTyBwb3J0cykKKyAgICBEYXRhc2hlZXQ6IE5vIGxvbmdlciBiZSBhdmFpbGFibGUKKworQXV0aG9yczoKKyAgICBDaHJpc3RvcGhlIEdhdXRocm9uCisgICAgSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmRlPgorCisKK01vZHVsZSBQYXJhbWV0ZXJzCistLS0tLS0tLS0tLS0tLS0tLQorCisqIHVwZGF0ZV92YmF0OiBpbnQKKworICAwIGlmIHZiYXQgc2hvdWxkIHJlcG9ydCBwb3dlciBvbiB2YWx1ZSwgMSBpZiB2YmF0IHNob3VsZCBiZSB1cGRhdGVkIGFmdGVyCisgIGVhY2ggcmVhZC4gRGVmYXVsdCBpcyAwLiBPbiBzb21lIGJvYXJkcyB0aGUgYmF0dGVyeSB2b2x0YWdlIGlzIHByb3ZpZGVkCisgIGJ5IGVpdGhlciB0aGUgYmF0dGVyeSBvciB0aGUgb25ib2FyZCBwb3dlciBzdXBwbHkuIE9ubHkgdGhlIGZpcnN0IHJlYWRpbmcKKyAgYXQgcG93ZXIgb24gd2lsbCBiZSB0aGUgYWN0dWFsIGJhdHRlcnkgdm9sdGFnZSAod2hpY2ggdGhlIGNoaXAgZG9lcworICBhdXRvbWF0aWNhbGx5KS4gT24gb3RoZXIgYm9hcmRzIHRoZSBiYXR0ZXJ5IHZvbHRhZ2UgaXMgYWx3YXlzIGZlZCB0bworICB0aGUgY2hpcCBzbyBjYW4gYmUgcmVhZCBhdCBhbnkgdGltZS4gRXhjZXNzaXZlIHJlYWRpbmcgbWF5IGRlY3JlYXNlCisgIGJhdHRlcnkgbGlmZSBidXQgbm8gaW5mb3JtYXRpb24gaXMgZ2l2ZW4gaW4gdGhlIGRhdGFzaGVldC4KKworKiBmaXhfcHdtX3BvbGFyaXR5IGludAorCisgIEZvcmNlIFBXTSBwb2xhcml0eSB0byBhY3RpdmUgaGlnaCAoREFOR0VST1VTKS4gU29tZSBjaGlwcyBhcmUKKyAgbWlzY29uZmlndXJlZCBieSBCSU9TIC0gUFdNIHZhbHVlcyB3b3VsZCBiZSBpbnZlcnRlZC4gVGhpcyBvcHRpb24gdHJpZXMKKyAgdG8gZml4IHRoaXMuIFBsZWFzZSBjb250YWN0IHlvdXIgQklPUyBtYW51ZmFjdHVyZXIgYW5kIGFzayBoaW0gZm9yIGZpeC4KKworCitIYXJkd2FyZSBJbnRlcmZhY2VzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FsbCB0aGUgY2hpcHMgc3VwcG9ydGVkIGJ5IHRoaXMgZHJpdmVyIGFyZSBMUEMgU3VwZXItSS9PIGNoaXBzLCBhY2Nlc3NlZAordGhyb3VnaCB0aGUgTFBDIGJ1cyAoSVNBLWxpa2UgSS9PIHBvcnRzKS4gVGhlIElUODcxMkYgYWRkaXRpb25hbGx5IGhhcyBhbgorU01CdXMgaW50ZXJmYWNlIHRvIHRoZSBoYXJkd2FyZSBtb25pdG9yaW5nIGZ1bmN0aW9ucy4gVGhpcyBkcml2ZXIgbm8KK2xvbmdlciBzdXBwb3J0cyB0aGlzIGludGVyZmFjZSB0aG91Z2gsIGFzIGl0IGlzIHNsb3dlciBhbmQgbGVzcyByZWxpYWJsZQordGhhbiB0aGUgSVNBIGFjY2VzcywgYW5kIHdhcyBvbmx5IGF2YWlsYWJsZSBvbiBhIHNtYWxsIG51bWJlciBvZgorbW90aGVyYm9hcmQgbW9kZWxzLgorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBJVDg2MDNFLCBJVDg2MjBFLCBJVDg2MjNFLCBJVDg3MDVGLAorSVQ4NzEyRiwgSVQ4NzE2RiwgSVQ4NzE4RiwgSVQ4NzIwRiwgSVQ4NzIxRiwgSVQ4NzI2RiwgSVQ4NzI4RiwgSVQ4NzMyRiwKK0lUODc1OEUsIElUODc3MUUsIElUODc3MkUsIElUODc4MUYsIElUODc4MkYsIElUODc4M0UvRiwgSVQ4Nzg2RSwgSVQ4NzkwRSwgYW5kCitTaVM5NTAgY2hpcHMuCisKK1RoZXNlIGNoaXBzIGFyZSAnU3VwZXIgSS9PIGNoaXBzJywgc3VwcG9ydGluZyBmbG9wcHkgZGlza3MsIGluZnJhcmVkIHBvcnRzLAoram95c3RpY2tzIGFuZCBvdGhlciBtaXNjZWxsYW5lb3VzIHN0dWZmLiBGb3IgaGFyZHdhcmUgbW9uaXRvcmluZywgdGhleQoraW5jbHVkZSBhbiAnZW52aXJvbm1lbnQgY29udHJvbGxlcicgd2l0aCAzIHRlbXBlcmF0dXJlIHNlbnNvcnMsIDMgZmFuCityb3RhdGlvbiBzcGVlZCBzZW5zb3JzLCA4IHZvbHRhZ2Ugc2Vuc29ycywgYXNzb2NpYXRlZCBhbGFybXMsIGFuZCBjaGFzc2lzCitpbnRydXNpb24gZGV0ZWN0aW9uLgorCitUaGUgSVQ4NzEyRiBhbmQgSVQ4NzE2RiBhZGRpdGlvbmFsbHkgZmVhdHVyZSBWSUQgaW5wdXRzLCB1c2VkIHRvIHJlcG9ydAordGhlIFZjb3JlIHZvbHRhZ2Ugb2YgdGhlIHByb2Nlc3Nvci4gVGhlIGVhcmx5IElUODcxMkYgaGF2ZSA1IFZJRCBwaW5zLAordGhlIElUODcxNkYgYW5kIGxhdGUgSVQ4NzEyRiBoYXZlIDYuIFRoZXkgYXJlIHNoYXJlZCB3aXRoIG90aGVyIGZ1bmN0aW9ucwordGhvdWdoLCBzbyB0aGUgZnVuY3Rpb25hbGl0eSBtYXkgbm90IGJlIGF2YWlsYWJsZSBvbiBhIGdpdmVuIHN5c3RlbS4KKworVGhlIElUODcxOEYgYW5kIElUODcyMEYgYWxzbyBmZWF0dXJlcyBWSUQgaW5wdXRzICh1cCB0byA4IHBpbnMpIGJ1dCB0aGUgdmFsdWUKK2lzIHN0b3JlZCBpbiB0aGUgU3VwZXItSS9PIGNvbmZpZ3VyYXRpb24gc3BhY2UuIER1ZSB0byB0ZWNobmljYWwgbGltaXRhdGlvbnMsCit0aGlzIHZhbHVlIGNhbiBjdXJyZW50bHkgb25seSBiZSByZWFkIG9uY2UgYXQgaW5pdGlhbGl6YXRpb24gdGltZSwgc28KK3RoZSBkcml2ZXIgd29uJ3Qgbm90aWNlIGFuZCByZXBvcnQgY2hhbmdlcyBpbiB0aGUgVklEIHZhbHVlLiBUaGUgdHdvCit1cHBlciBWSUQgYml0cyBzaGFyZSB0aGVpciBwaW5zIHdpdGggdm9sdGFnZSBpbnB1dHMgKGluNSBhbmQgaW42KSBzbyB5b3UKK2Nhbid0IGhhdmUgYm90aCBvbiBhIGdpdmVuIGJvYXJkLgorCitUaGUgSVQ4NzE2RiwgSVQ4NzE4RiwgSVQ4NzIwRiwgSVQ4NzIxRi9JVDg3NThFIGFuZCBsYXRlciBJVDg3MTJGIHJldmlzaW9ucworaGF2ZSBzdXBwb3J0IGZvciAyIGFkZGl0aW9uYWwgZmFucy4gVGhlIGFkZGl0aW9uYWwgZmFucyBhcmUgc3VwcG9ydGVkIGJ5IHRoZQorZHJpdmVyLgorCitUaGUgSVQ4NzE2RiwgSVQ4NzE4RiwgSVQ4NzIwRiwgSVQ4NzIxRi9JVDg3NThFLCBJVDg3MzJGLCBJVDg3ODFGLCBJVDg3ODJGLAorSVQ4NzgzRS9GLCBhbmQgbGF0ZSBJVDg3MTJGIGFuZCBJVDg3MDVGIGFsc28gaGF2ZSBvcHRpb25hbCAxNi1iaXQgdGFjaG9tZXRlcgorY291bnRlcnMgZm9yIGZhbnMgMSB0byAzLiBUaGlzIGlzIGJldHRlciAobm8gbW9yZSBmYW4gY2xvY2sgZGl2aWRlciBtZXNzKSBidXQKK25vdCBjb21wYXRpYmxlIHdpdGggdGhlIG9sZGVyIGNoaXBzIGFuZCByZXZpc2lvbnMuIFRoZSAxNi1iaXQgdGFjaG9tZXRlciBtb2RlCitpcyBlbmFibGVkIGJ5IHRoZSBkcml2ZXIgd2hlbiBvbmUgb2YgdGhlIGFib3ZlIGNoaXBzIGlzIGRldGVjdGVkLgorCitUaGUgSVQ4NzI2RiBpcyBqdXN0IGJpdCBlbmhhbmNlZCBJVDg3MTZGIHdpdGggYWRkaXRpb25hbCBoYXJkd2FyZQorZm9yIEFNRCBwb3dlciBzZXF1ZW5jaW5nLiBUaGVyZWZvcmUgdGhlIGNoaXAgd2lsbCBhcHBlYXIgYXMgSVQ4NzE2RgordG8gdXNlcnNwYWNlIGFwcGxpY2F0aW9ucy4KKworVGhlIElUODcyOEYsIElUODc3MUUsIGFuZCBJVDg3NzJFIGFyZSBjb25zaWRlcmVkIGNvbXBhdGlibGUgd2l0aCB0aGUgSVQ4NzIxRiwKK3VudGlsIGEgZGF0YXNoZWV0IGJlY29tZXMgYXZhaWxhYmxlIChob3BlZnVsbHkuKQorCitUaGUgSVQ4NjAzRS9JVDg2MjNFIGlzIGEgY3VzdG9tIGRlc2lnbiwgaGFyZHdhcmUgbW9uaXRvcmluZyBwYXJ0IGlzIHNpbWlsYXIgdG8KK0lUODcyOEYuIEl0IG9ubHkgc3VwcG9ydHMgMyBmYW5zLCAxNi1iaXQgZmFuIG1vZGUsIGFuZCB0aGUgZnVsbCBzcGVlZCBtb2RlCitvZiB0aGUgZmFuIGlzIG5vdCBzdXBwb3J0ZWQgKHZhbHVlIDAgb2YgcHdtWF9lbmFibGUpLgorCitUaGUgSVQ4NjIwRSBpcyBhbm90aGVyIGN1c3RvbSBkZXNpZ24sIGhhcmR3YXJlIG1vbml0b3JpbmcgcGFydCBpcyBzaW1pbGFyIHRvCitJVDg3MjhGLiBJdCBvbmx5IHN1cHBvcnRzIDE2LWJpdCBmYW4gbW9kZS4KKworVGhlIElUODc5MEUgc3VwcG9ydHMgdXAgdG8gMyBmYW5zLiAxNi1iaXQgZmFuIG1vZGUgaXMgYWx3YXlzIGVuYWJsZWQuCisKK1RoZSBJVDg3MzJGIHN1cHBvcnRzIGEgY2xvc2VkLWxvb3AgbW9kZSBmb3IgZmFuIGNvbnRyb2wsIGJ1dCB0aGlzIGlzIG5vdAorY3VycmVudGx5IGltcGxlbWVudGVkIGJ5IHRoZSBkcml2ZXIuCisKK1RlbXBlcmF0dXJlcyBhcmUgbWVhc3VyZWQgaW4gZGVncmVlcyBDZWxzaXVzLiBBbiBhbGFybSBpcyB0cmlnZ2VyZWQgb25jZQord2hlbiB0aGUgT3ZlcnRlbXBlcmF0dXJlIFNodXRkb3duIGxpbWl0IGlzIGNyb3NzZWQuCisKK0ZhbiByb3RhdGlvbiBzcGVlZHMgYXJlIHJlcG9ydGVkIGluIFJQTSAocm90YXRpb25zIHBlciBtaW51dGUpLiBBbiBhbGFybSBpcwordHJpZ2dlcmVkIGlmIHRoZSByb3RhdGlvbiBzcGVlZCBoYXMgZHJvcHBlZCBiZWxvdyBhIHByb2dyYW1tYWJsZSBsaW1pdC4gV2hlbgorMTYtYml0IHRhY2hvbWV0ZXIgY291bnRlcnMgYXJlbid0IHVzZWQsIGZhbiByZWFkaW5ncyBjYW4gYmUgZGl2aWRlZCBieQorYSBwcm9ncmFtbWFibGUgZGl2aWRlciAoMSwgMiwgNCBvciA4KSB0byBnaXZlIHRoZSByZWFkaW5ncyBtb3JlIHJhbmdlIG9yCithY2N1cmFjeS4gV2l0aCBhIGRpdmlkZXIgb2YgMiwgdGhlIGxvd2VzdCByZXByZXNlbnRhYmxlIHZhbHVlIGlzIGFyb3VuZAorMjYwMCBSUE0uIE5vdCBhbGwgUlBNIHZhbHVlcyBjYW4gYWNjdXJhdGVseSBiZSByZXByZXNlbnRlZCwgc28gc29tZSByb3VuZGluZworaXMgZG9uZS4KKworVm9sdGFnZSBzZW5zb3JzIChhbHNvIGtub3duIGFzIElOIHNlbnNvcnMpIHJlcG9ydCB0aGVpciB2YWx1ZXMgaW4gdm9sdHMuIEFuCithbGFybSBpcyB0cmlnZ2VyZWQgaWYgdGhlIHZvbHRhZ2UgaGFzIGNyb3NzZWQgYSBwcm9ncmFtbWFibGUgbWluaW11bSBvcgorbWF4aW11bSBsaW1pdC4gTm90ZSB0aGF0IG1pbmltdW0gaW4gdGhpcyBjYXNlIGFsd2F5cyBtZWFucyAnY2xvc2VzdCB0bworemVybyc7IHRoaXMgaXMgaW1wb3J0YW50IGZvciBuZWdhdGl2ZSB2b2x0YWdlIG1lYXN1cmVtZW50cy4gT24gbW9zdCBjaGlwcywgYWxsCit2b2x0YWdlIGlucHV0cyBjYW4gbWVhc3VyZSB2b2x0YWdlcyBiZXR3ZWVuIDAgYW5kIDQuMDggdm9sdHMsIHdpdGggYSByZXNvbHV0aW9uCitvZiAwLjAxNiB2b2x0LiAgSVQ4NjAzRSwgSVQ4NzIxRi9JVDg3NThFIGFuZCBJVDg3MjhGIGNhbiBtZWFzdXJlIGJldHdlZW4gMCBhbmQKKzMuMDYgdm9sdHMsIHdpdGggYSByZXNvbHV0aW9uIG9mIDAuMDEyIHZvbHQuICBJVDg3MzJGIGNhbiBtZWFzdXJlIGJldHdlZW4gMCBhbmQKKzIuOCB2b2x0cyB3aXRoIGEgcmVzb2x1dGlvbiBvZiAwLjAxMDkgdm9sdC4gIFRoZSBiYXR0ZXJ5IHZvbHRhZ2UgaW44IGRvZXMgbm90CitoYXZlIGxpbWl0IHJlZ2lzdGVycy4KKworT24gdGhlIElUODYwM0UsIElUODcyMUYvSVQ4NzU4RSwgSVQ4NzMyRiwgSVQ4NzgxRiwgSVQ4NzgyRiwgYW5kIElUODc4M0UvRiwgc29tZQordm9sdGFnZSBpbnB1dHMgYXJlIGludGVybmFsIGFuZCBzY2FsZWQgaW5zaWRlIHRoZSBjaGlwOgorKiBpbjMgKG9wdGlvbmFsKQorKiBpbjcgKG9wdGlvbmFsIGZvciBJVDg3ODFGLCBJVDg3ODJGLCBhbmQgSVQ4NzgzRS9GKQorKiBpbjggKGFsd2F5cykKKyogaW45IChyZWxldmFudCBmb3IgSVQ4NjAzRSBvbmx5KQorVGhlIGRyaXZlciBoYW5kbGVzIHRoaXMgdHJhbnNwYXJlbnRseSBzbyB1c2VyLXNwYWNlIGRvZXNuJ3QgaGF2ZSB0byBjYXJlLgorCitUaGUgVklEIGxpbmVzIChJVDg3MTJGL0lUODcxNkYvSVQ4NzE4Ri9JVDg3MjBGKSBlbmNvZGUgdGhlIGNvcmUgdm9sdGFnZSB2YWx1ZToKK3RoZSB2b2x0YWdlIGxldmVsIHlvdXIgcHJvY2Vzc29yIHNob3VsZCB3b3JrIHdpdGguIFRoaXMgaXMgaGFyZGNvZGVkIGJ5Cit0aGUgbWFpbmJvYXJkIGFuZC9vciBwcm9jZXNzb3IgaXRzZWxmLiBJdCBpcyBhIHZhbHVlIGluIHZvbHRzLgorCitJZiBhbiBhbGFybSB0cmlnZ2VycywgaXQgd2lsbCByZW1haW4gdHJpZ2dlcmVkIHVudGlsIHRoZSBoYXJkd2FyZSByZWdpc3RlcgoraXMgcmVhZCBhdCBsZWFzdCBvbmNlLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGNhdXNlIGZvciB0aGUgYWxhcm0gbWF5IGFscmVhZHkKK2hhdmUgZGlzYXBwZWFyZWQhIE5vdGUgdGhhdCBpbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgYWxsIGhhcmR3YXJlCityZWdpc3RlcnMgYXJlIHJlYWQgd2hlbmV2ZXIgYW55IGRhdGEgaXMgcmVhZCAodW5sZXNzIGl0IGlzIGxlc3MgdGhhbiAxLjUKK3NlY29uZHMgc2luY2UgdGhlIGxhc3QgdXBkYXRlKS4gVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4gZWFzaWx5IG1pc3MKK29uY2Utb25seSBhbGFybXMuCisKK091dC1vZi1saW1pdCByZWFkaW5ncyBjYW4gYWxzbyByZXN1bHQgaW4gYmVlcGluZywgaWYgdGhlIGNoaXAgaXMgcHJvcGVybHkKK3dpcmVkIGFuZCBjb25maWd1cmVkLiBCZWVwaW5nIGNhbiBiZSBlbmFibGVkIG9yIGRpc2FibGVkIHBlciBzZW5zb3IgdHlwZQorKHRlbXBlcmF0dXJlcywgdm9sdGFnZXMgYW5kIGZhbnMuKQorCitUaGUgSVQ4N3h4IG9ubHkgdXBkYXRlcyBpdHMgdmFsdWVzIGVhY2ggMS41IHNlY29uZHM7IHJlYWRpbmcgaXQgbW9yZSBvZnRlbgord2lsbCBkbyBubyBoYXJtLCBidXQgd2lsbCByZXR1cm4gJ29sZCcgdmFsdWVzLgorCitUbyBjaGFuZ2Ugc2Vuc29yIE4gdG8gYSB0aGVybWlzdG9yLCAnZWNobyA0ID4gdGVtcE5fdHlwZScgd2hlcmUgTiBpcyAxLCAyLAorb3IgMy4gVG8gY2hhbmdlIHNlbnNvciBOIHRvIGEgdGhlcm1hbCBkaW9kZSwgJ2VjaG8gMyA+IHRlbXBOX3R5cGUnLgorR2l2ZSAwIGZvciB1bnVzZWQgc2Vuc29yLiBBbnkgb3RoZXIgdmFsdWUgaXMgaW52YWxpZC4gVG8gY29uZmlndXJlIHRoaXMgYXQKK3N0YXJ0dXAsIGNvbnN1bHQgbG1fc2Vuc29ycydzIC9ldGMvc2Vuc29ycy5jb25mLiAoNCA9IHRoZXJtaXN0b3I7CiszID0gdGhlcm1hbCBkaW9kZSkKKworCitGYW4gc3BlZWQgY29udHJvbAorLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZhbiBzcGVlZCBjb250cm9sIGZlYXR1cmVzIGFyZSBsaW1pdGVkIHRvIG1hbnVhbCBQV00gbW9kZS4gQXV0b21hdGljCisiU21hcnQgR3VhcmRpYW4iIG1vZGUgY29udHJvbCBoYW5kbGluZyBpcyBvbmx5IGltcGxlbWVudGVkIGZvciBvbGRlciBjaGlwcworKHNlZSBiZWxvdy4pIEhvd2V2ZXIgaWYgeW91IHdhbnQgdG8gZ28gZm9yICJtYW51YWwgbW9kZSIganVzdCB3cml0ZSAxIHRvCitwd21OX2VuYWJsZS4KKworSWYgeW91IGFyZSBvbmx5IGFibGUgdG8gY29udHJvbCB0aGUgZmFuIHNwZWVkIHdpdGggdmVyeSBzbWFsbCBQV00gdmFsdWVzLAordHJ5IGxvd2VyaW5nIHRoZSBQV00gYmFzZSBmcmVxdWVuY3kgKHB3bTFfZnJlcSkuIERlcGVuZGluZyBvbiB0aGUgZmFuLAoraXQgbWF5IGdpdmUgeW91IGEgc29tZXdoYXQgZ3JlYXRlciBjb250cm9sIHJhbmdlLiBUaGUgc2FtZSBmcmVxdWVuY3kgaXMKK3VzZWQgdG8gZHJpdmUgYWxsIGZhbiBvdXRwdXRzLCB3aGljaCBpcyB3aHkgcHdtMl9mcmVxIGFuZCBwd20zX2ZyZXEgYXJlCityZWFkLW9ubHkuCisKKworQXV0b21hdGljIGZhbiBzcGVlZCBjb250cm9sIChvbGQgaW50ZXJmYWNlKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZHJpdmVyIHN1cHBvcnRzIHRoZSBvbGQgaW50ZXJmYWNlIHRvIGF1dG9tYXRpYyBmYW4gc3BlZWQgY29udHJvbAord2hpY2ggaXMgaW1wbGVtZW50ZWQgYnkgSVQ4NzA1RiBjaGlwcyB1cCB0byByZXZpc2lvbiBGIGFuZCBJVDg3MTJGCitjaGlwcyB1cCB0byByZXZpc2lvbiBHLgorCitUaGlzIGludGVyZmFjZSBpbXBsZW1lbnRzIDQgdGVtcGVyYXR1cmUgdnMuIFBXTSBvdXRwdXQgdHJpcCBwb2ludHMuCitUaGUgUFdNIG91dHB1dCBvZiB0cmlwIHBvaW50IDQgaXMgYWx3YXlzIHRoZSBtYXhpbXVtIHZhbHVlIChmYW4gcnVubmluZworYXQgZnVsbCBzcGVlZCkgd2hpbGUgdGhlIFBXTSBvdXRwdXQgb2YgdGhlIG90aGVyIDMgdHJpcCBwb2ludHMgY2FuIGJlCitmcmVlbHkgY2hvc2VuLiBUaGUgdGVtcGVyYXR1cmUgb2YgYWxsIDQgdHJpcCBwb2ludHMgY2FuIGJlIGZyZWVseSBjaG9zZW4uCitBZGRpdGlvbmFsbHksIHRyaXAgcG9pbnQgMSBoYXMgYW4gaHlzdGVyZXNpcyB0ZW1wZXJhdHVyZSBhdHRhY2hlZCwgdG8KK3ByZXZlbnQgZmFzdCBzd2l0Y2hpbmcgYmV0d2VlbiBmYW4gb24gYW5kIG9mZi4KKworVGhlIGNoaXAgYXV0b21hdGljYWxseSBjb21wdXRlcyB0aGUgUFdNIG91dHB1dCB2YWx1ZSBiYXNlZCBvbiB0aGUgaW5wdXQKK3RlbXBlcmF0dXJlLCBiYXNlZCBvbiB0aGlzIHNpbXBsZSBydWxlOiBpZiB0aGUgdGVtcGVyYXR1cmUgdmFsdWUgaXMKK2JldHdlZW4gdHJpcCBwb2ludCBOIGFuZCB0cmlwIHBvaW50IE4rMSB0aGVuIHRoZSBQV00gb3V0cHV0IHZhbHVlIGlzCit0aGUgb25lIG9mIHRyaXAgcG9pbnQgTi4gVGhlIGF1dG9tYXRpYyBjb250cm9sIG1vZGUgaXMgbGVzcyBmbGV4aWJsZQordGhhbiB0aGUgbWFudWFsIGNvbnRyb2wgbW9kZSwgYnV0IGl0IHJlYWN0cyBmYXN0ZXIsIGlzIG1vcmUgcm9idXN0IGFuZAorZG9lc24ndCB1c2UgQ1BVIGN5Y2xlcy4KKworVHJpcCBwb2ludHMgbXVzdCBiZSBzZXQgcHJvcGVybHkgYmVmb3JlIHN3aXRjaGluZyB0byBhdXRvbWF0aWMgZmFuIHNwZWVkCitjb250cm9sIG1vZGUuIFRoZSBkcml2ZXIgd2lsbCBwZXJmb3JtIGJhc2ljIGludGVncml0eSBjaGVja3MgYmVmb3JlCithY3R1YWxseSBzd2l0Y2hpbmcgdG8gYXV0b21hdGljIGNvbnRyb2wgbW9kZS4KKworCitUZW1wZXJhdHVyZSBvZmZzZXQgYXR0cmlidXRlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGRyaXZlciBzdXBwb3J0cyB0ZW1wWzEtM11fb2Zmc2V0IHN5c2ZzIGF0dHJpYnV0ZXMgdG8gYWRqdXN0IHRoZSByZXBvcnRlZAordGVtcGVyYXR1cmUgZm9yIHRoZXJtYWwgZGlvZGVzIG9yIGRpb2RlLWNvbm5lY3RlZCB0aGVybWFsIHRyYW5zaXN0b3JzLgorSWYgYSB0ZW1wZXJhdHVyZSBzZW5zb3IgaXMgY29uZmlndXJlZCBmb3IgdGhlcm1pc3RvcnMsIHRoZSBhdHRyaWJ1dGUgdmFsdWVzCithcmUgaWdub3JlZC4gSWYgdGhlIHRoZXJtYWwgc2Vuc29yIHR5cGUgaXMgSW50ZWwgUEVDSSwgdGhlIHRlbXBlcmF0dXJlIG9mZnNldAorbXVzdCBiZSBwcm9ncmFtbWVkIHRvIHRoZSBjcml0aWNhbCBDUFUgdGVtcGVyYXR1cmUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2pjNDIgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2pjNDIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdmMTgzMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vamM0MgpAQCAtMCwwICsxLDEwMiBAQAorS2VybmVsIGRyaXZlciBqYzQyCis9PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIEFuYWxvZyBEZXZpY2VzIEFEVDc0MDgKKyAgICBEYXRhc2hlZXRzOgorCWh0dHA6Ly93d3cuYW5hbG9nLmNvbS9zdGF0aWMvaW1wb3J0ZWQtZmlsZXMvZGF0YV9zaGVldHMvQURUNzQwOC5wZGYKKyAgKiBBdG1lbCBBVDMwVFMwMCwgQVQzMFRTMDAyQS9CLCBBVDMwVFNFMDA0QQorICAgIERhdGFzaGVldHM6CisJaHR0cDovL3d3dy5hdG1lbC5jb20vSW1hZ2VzL2RvYzg1ODUucGRmCisJaHR0cDovL3d3dy5hdG1lbC5jb20vSW1hZ2VzL2RvYzg3MTEucGRmCisJaHR0cDovL3d3dy5hdG1lbC5jb20vSW1hZ2VzL0F0bWVsLTg4NTItU0VFUFJPTS1BVDMwVFNFMDAyQS1EYXRhc2hlZXQucGRmCisJaHR0cDovL3d3dy5hdG1lbC5jb20vSW1hZ2VzL0F0bWVsLTg4NjgtRFRTLUFUMzBUU0UwMDRBLURhdGFzaGVldC5wZGYKKyAgKiBJRFQgVFNFMjAwMkIzLCBUU0UyMDAyR0IyLCBUU0UyMDA0R0IyLCBUUzMwMDBCMywgVFMzMDAwR0IwLCBUUzMwMDBHQjIsCisJVFMzMDAxR0IyCisgICAgRGF0YXNoZWV0czoKKwlBdmFpbGFibGUgZnJvbSBJRFQgd2ViIHNpdGUKKyAgKiBNYXhpbSBNQVg2NjA0CisgICAgRGF0YXNoZWV0czoKKwlodHRwOi8vZGF0YXNoZWV0cy5tYXhpbS1pYy5jb20vZW4vZHMvTUFYNjYwNC5wZGYKKyAgKiBNaWNyb2NoaXAgTUNQOTgwNCwgTUNQOTgwNSwgTUNQOTgyNDIsIE1DUDk4MjQzLCBNQ1A5ODI0NCwgTUNQOTg0MworICAgIERhdGFzaGVldHM6CisJaHR0cDovL3d3MS5taWNyb2NoaXAuY29tL2Rvd25sb2Fkcy9lbi9EZXZpY2VEb2MvMjIyMDNDLnBkZgorCWh0dHA6Ly93dzEubWljcm9jaGlwLmNvbS9kb3dubG9hZHMvZW4vRGV2aWNlRG9jLzIxOTc3Yi5wZGYKKwlodHRwOi8vd3cxLm1pY3JvY2hpcC5jb20vZG93bmxvYWRzL2VuL0RldmljZURvYy8yMTk5NmEucGRmCisJaHR0cDovL3d3MS5taWNyb2NoaXAuY29tL2Rvd25sb2Fkcy9lbi9EZXZpY2VEb2MvMjIxNTNjLnBkZgorCWh0dHA6Ly93dzEubWljcm9jaGlwLmNvbS9kb3dubG9hZHMvZW4vRGV2aWNlRG9jLzIyMzI3QS5wZGYKKyAgKiBOWFAgU2VtaWNvbmR1Y3RvcnMgU0U5NywgU0U5N0IsIFNFOTgsIFNFOThBCisgICAgRGF0YXNoZWV0czoKKwlodHRwOi8vd3d3Lm54cC5jb20vZG9jdW1lbnRzL2RhdGFfc2hlZXQvU0U5Ny5wZGYKKwlodHRwOi8vd3d3Lm54cC5jb20vZG9jdW1lbnRzL2RhdGFfc2hlZXQvU0U5N0IucGRmCisJaHR0cDovL3d3dy5ueHAuY29tL2RvY3VtZW50cy9kYXRhX3NoZWV0L1NFOTgucGRmCisJaHR0cDovL3d3dy5ueHAuY29tL2RvY3VtZW50cy9kYXRhX3NoZWV0L1NFOThBLnBkZgorICAqIE9OIFNlbWljb25kdWN0b3IgQ0FUMzRUUzAyLCBDQVQ2MDk1CisgICAgRGF0YXNoZWV0OgorCWh0dHA6Ly93d3cub25zZW1pLmNvbS9wdWJfbGluay9Db2xsYXRlcmFsL0NBVDM0VFMwMi1ELlBERgorCWh0dHA6Ly93d3cub25zZW1pLmNvbS9wdWIvQ29sbGF0ZXJhbC9DQVQ2MDk1LUQuUERGCisgICogU1QgTWljcm9lbGVjdHJvbmljcyBTVFRTNDI0LCBTVFRTNDI0RTAyLCBTVFRTMjAwMiwgU1RUUzIwMDQsIFNUVFMzMDAwCisgICAgRGF0YXNoZWV0czoKKwlodHRwOi8vd3d3LnN0LmNvbS93ZWIvZW4vcmVzb3VyY2UvdGVjaG5pY2FsL2RvY3VtZW50L2RhdGFzaGVldC9DRDAwMTU3NTU2LnBkZgorCWh0dHA6Ly93d3cuc3QuY29tL3dlYi9lbi9yZXNvdXJjZS90ZWNobmljYWwvZG9jdW1lbnQvZGF0YXNoZWV0L0NEMDAxNTc1NTgucGRmCisJaHR0cDovL3d3dy5zdC5jb20vd2ViL2VuL3Jlc291cmNlL3RlY2huaWNhbC9kb2N1bWVudC9kYXRhc2hlZXQvQ0QwMDI2NjYzOC5wZGYKKwlodHRwOi8vd3d3LnN0LmNvbS93ZWIvZW4vcmVzb3VyY2UvdGVjaG5pY2FsL2RvY3VtZW50L2RhdGFzaGVldC9DRDAwMjI1Mjc4LnBkZgorCWh0dHA6Ly93d3cuc3QuY29tL3dlYi9lbi9yZXNvdXJjZS90ZWNobmljYWwvZG9jdW1lbnQvZGF0YXNoZWV0L0RNMDAwNzY3MDkucGRmCisgICogSkVERUMgSkMgNDIuNCBjb21wbGlhbnQgdGVtcGVyYXR1cmUgc2Vuc29yIGNoaXBzCisgICAgRGF0YXNoZWV0OgorCWh0dHA6Ly93d3cuamVkZWMub3JnL3NpdGVzL2RlZmF1bHQvZmlsZXMvZG9jcy80XzAxXzA0UjE5LnBkZgorCisgIENvbW1vbiBmb3IgYWxsIGNoaXBzOgorICAgIFByZWZpeDogJ2pjNDInCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDE4IC0gMHgxZgorCitBdXRob3I6CisJR3VlbnRlciBSb2VjayA8bGludXhAcm9lY2stdXMubmV0PgorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIEpFREVDIEpDIDQyLjQgY29tcGxpYW50IHRlbXBlcmF0dXJlIHNlbnNvcnMsCit3aGljaCBhcmUgdXNlZCBvbiBtYW55IEREUjMgbWVtb3J5IG1vZHVsZXMgZm9yIG1vYmlsZSBkZXZpY2VzIGFuZCBzZXJ2ZXJzLiBTb21lCitzeXN0ZW1zIHVzZSB0aGUgc2Vuc29yIHRvIHByZXZlbnQgbWVtb3J5IG92ZXJoZWF0aW5nIGJ5IGF1dG9tYXRpY2FsbHkgdGhyb3R0bGluZwordGhlIG1lbW9yeSBjb250cm9sbGVyLgorCitUaGUgZHJpdmVyIGF1dG8tZGV0ZWN0cyB0aGUgY2hpcHMgbGlzdGVkIGFib3ZlLCBidXQgY2FuIGJlIG1hbnVhbGx5IGluc3RhbnRpYXRlZAordG8gc3VwcG9ydCBvdGhlciBKQyA0Mi40IGNvbXBsaWFudCBjaGlwcy4KKworRXhhbXBsZTogdGhlIGZvbGxvd2luZyB3aWxsIGxvYWQgdGhlIGRyaXZlciBmb3IgYSBnZW5lcmljIEpDIDQyLjQgY29tcGxpYW50Cit0ZW1wZXJhdHVyZSBzZW5zb3IgYXQgYWRkcmVzcyAweDE4IG9uIEkyQyBidXMgIzE6CisKKyMgbW9kcHJvYmUgamM0MgorIyBlY2hvIGpjNDIgMHgxOCA+IC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0xL25ld19kZXZpY2UKKworQSBKQyA0Mi40IGNvbXBsaWFudCBjaGlwIHN1cHBvcnRzIGEgc2luZ2xlIHRlbXBlcmF0dXJlIHNlbnNvci4gTWluaW11bSwgbWF4aW11bSwKK2FuZCBjcml0aWNhbCB0ZW1wZXJhdHVyZSBjYW4gYmUgY29uZmlndXJlZC4gVGhlcmUgYXJlIGFsYXJtcyBmb3IgaGlnaCwgbG93LAorYW5kIGNyaXRpY2FsIHRocmVzaG9sZHMuCisKK1RoZXJlIGlzIGFsc28gYW4gaHlzdGVyZXNpcyB0byBjb250cm9sIHRoZSB0aHJlc2hvbGRzIGZvciByZXNldHRpbmcgYWxhcm1zLgorUGVyIEpDIDQyLjQgc3BlY2lmaWNhdGlvbiwgdGhlIGh5c3RlcmVzaXMgdGhyZXNob2xkIGNhbiBiZSBjb25maWd1cmVkIHRvIDAsIDEuNSwKKzMuMCwgYW5kIDYuMCBkZWdyZWVzIEMuIENvbmZpZ3VyZWQgaHlzdGVyZXNpcyB2YWx1ZXMgd2lsbCBiZSByb3VuZGVkIHRvIHRob3NlCitsaW1pdHMuIFRoZSBjaGlwIHN1cHBvcnRzIG9ubHkgYSBzaW5nbGUgcmVnaXN0ZXIgdG8gY29uZmlndXJlIHRoZSBoeXN0ZXJlc2lzLAord2hpY2ggYXBwbGllcyB0byBhbGwgbGltaXRzLiBUaGlzIHJlZ2lzdGVyIGNhbiBiZSB3cml0dGVuIGJ5IHdyaXRpbmcgaW50bwordGVtcDFfY3JpdF9oeXN0LiBPdGhlciBoeXN0ZXJlc2lzIGF0dHJpYnV0ZXMgYXJlIHJlYWQtb25seS4KKworSWYgdGhlIEJJT1MgaGFzIGNvbmZpZ3VyZWQgdGhlIHNlbnNvciBmb3IgYXV0b21hdGljIHRlbXBlcmF0dXJlIG1hbmFnZW1lbnQsIGl0CitpcyBsaWtlbHkgdGhhdCBpdCBoYXMgbG9ja2VkIHRoZSByZWdpc3RlcnMsIGkuZS4sIHRoYXQgdGhlIHRlbXBlcmF0dXJlIGxpbWl0cworY2Fubm90IGJlIGNoYW5nZWQuCisKK1N5c2ZzIGVudHJpZXMKKy0tLS0tLS0tLS0tLS0KKwordGVtcDFfaW5wdXQJCVRlbXBlcmF0dXJlIChSTykKK3RlbXAxX21pbgkJTWluaW11bSB0ZW1wZXJhdHVyZSAoUk8gb3IgUlcpCit0ZW1wMV9tYXgJCU1heGltdW0gdGVtcGVyYXR1cmUgKFJPIG9yIFJXKQordGVtcDFfY3JpdAkJQ3JpdGljYWwgaGlnaCB0ZW1wZXJhdHVyZSAoUk8gb3IgUlcpCisKK3RlbXAxX2NyaXRfaHlzdAkJQ3JpdGljYWwgaHlzdGVyZXNpcyB0ZW1wZXJhdHVyZSAoUk8gb3IgUlcpCit0ZW1wMV9tYXhfaHlzdAkJTWF4aW11bSBoeXN0ZXJlc2lzIHRlbXBlcmF0dXJlIChSTykKKwordGVtcDFfbWluX2FsYXJtCQlUZW1wZXJhdHVyZSBsb3cgYWxhcm0KK3RlbXAxX21heF9hbGFybQkJVGVtcGVyYXR1cmUgaGlnaCBhbGFybQordGVtcDFfY3JpdF9hbGFybQlUZW1wZXJhdHVyZSBjcml0aWNhbCBhbGFybQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9rMTB0ZW1wIGIvRG9jdW1lbnRhdGlvbi9od21vbi9rMTB0ZW1wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NGQyZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2sxMHRlbXAKQEAgLTAsMCArMSw3NyBAQAorS2VybmVsIGRyaXZlciBrMTB0ZW1wCis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorKiBBTUQgRmFtaWx5IDEwaCBwcm9jZXNzb3JzOgorICBTb2NrZXQgRjogUXVhZC1Db3JlL1NpeC1Db3JlL0VtYmVkZGVkIE9wdGVyb24gKGJ1dCBzZWUgYmVsb3cpCisgIFNvY2tldCBBTTIrOiBRdWFkLUNvcmUgT3B0ZXJvbiwgUGhlbm9tIChJSSkgWDMvWDQsIEF0aGxvbiBYMiAoYnV0IHNlZSBiZWxvdykKKyAgU29ja2V0IEFNMzogUXVhZC1Db3JlIE9wdGVyb24sIEF0aGxvbi9QaGVub20gSUkgWDIvWDMvWDQsIFNlbXByb24gSUkKKyAgU29ja2V0IFMxRzM6IEF0aGxvbiBJSSwgU2VtcHJvbiwgVHVyaW9uIElJCisqIEFNRCBGYW1pbHkgMTFoIHByb2Nlc3NvcnM6CisgIFNvY2tldCBTMUcyOiBBdGhsb24gKFgyKSwgU2VtcHJvbiAoWDIpLCBUdXJpb24gWDIgKFVsdHJhKQorKiBBTUQgRmFtaWx5IDEyaCBwcm9jZXNzb3JzOiAiTGxhbm8iIChFMi9BNC9BNi9BOC1TZXJpZXMpCisqIEFNRCBGYW1pbHkgMTRoIHByb2Nlc3NvcnM6ICJCcmF6b3MiIChDL0UvRy9aLVNlcmllcykKKyogQU1EIEZhbWlseSAxNWggcHJvY2Vzc29yczogIkJ1bGxkb3plciIgKEZYLVNlcmllcyksICJUcmluaXR5IiwgIkthdmVyaSIsICJDYXJyaXpvIgorKiBBTUQgRmFtaWx5IDE2aCBwcm9jZXNzb3JzOiAiS2FiaW5pIiwgIk11bGxpbnMiCisKKyAgUHJlZml4OiAnazEwdGVtcCcKKyAgQWRkcmVzc2VzIHNjYW5uZWQ6IFBDSSBzcGFjZQorICBEYXRhc2hlZXRzOgorICBCSU9TIGFuZCBLZXJuZWwgRGV2ZWxvcGVyJ3MgR3VpZGUgKEJLREcpIEZvciBBTUQgRmFtaWx5IDEwaCBQcm9jZXNzb3JzOgorICAgIGh0dHA6Ly9zdXBwb3J0LmFtZC5jb20vdXMvUHJvY2Vzc29yX1RlY2hEb2NzLzMxMTE2LnBkZgorICBCSU9TIGFuZCBLZXJuZWwgRGV2ZWxvcGVyJ3MgR3VpZGUgKEJLREcpIGZvciBBTUQgRmFtaWx5IDExaCBQcm9jZXNzb3JzOgorICAgIGh0dHA6Ly9zdXBwb3J0LmFtZC5jb20vdXMvUHJvY2Vzc29yX1RlY2hEb2NzLzQxMjU2LnBkZgorICBCSU9TIGFuZCBLZXJuZWwgRGV2ZWxvcGVyJ3MgR3VpZGUgKEJLREcpIGZvciBBTUQgRmFtaWx5IDEyaCBQcm9jZXNzb3JzOgorICAgIGh0dHA6Ly9zdXBwb3J0LmFtZC5jb20vdXMvUHJvY2Vzc29yX1RlY2hEb2NzLzQxMTMxLnBkZgorICBCSU9TIGFuZCBLZXJuZWwgRGV2ZWxvcGVyJ3MgR3VpZGUgKEJLREcpIGZvciBBTUQgRmFtaWx5IDE0aCBNb2RlbHMgMDBoLTBGaCBQcm9jZXNzb3JzOgorICAgIGh0dHA6Ly9zdXBwb3J0LmFtZC5jb20vdXMvUHJvY2Vzc29yX1RlY2hEb2NzLzQzMTcwLnBkZgorICBSZXZpc2lvbiBHdWlkZSBmb3IgQU1EIEZhbWlseSAxMGggUHJvY2Vzc29yczoKKyAgICBodHRwOi8vc3VwcG9ydC5hbWQuY29tL3VzL1Byb2Nlc3Nvcl9UZWNoRG9jcy80MTMyMi5wZGYKKyAgUmV2aXNpb24gR3VpZGUgZm9yIEFNRCBGYW1pbHkgMTFoIFByb2Nlc3NvcnM6CisgICAgaHR0cDovL3N1cHBvcnQuYW1kLmNvbS91cy9Qcm9jZXNzb3JfVGVjaERvY3MvNDE3ODgucGRmCisgIFJldmlzaW9uIEd1aWRlIGZvciBBTUQgRmFtaWx5IDEyaCBQcm9jZXNzb3JzOgorICAgIGh0dHA6Ly9zdXBwb3J0LmFtZC5jb20vdXMvUHJvY2Vzc29yX1RlY2hEb2NzLzQ0NzM5LnBkZgorICBSZXZpc2lvbiBHdWlkZSBmb3IgQU1EIEZhbWlseSAxNGggTW9kZWxzIDAwaC0wRmggUHJvY2Vzc29yczoKKyAgICBodHRwOi8vc3VwcG9ydC5hbWQuY29tL3VzL1Byb2Nlc3Nvcl9UZWNoRG9jcy80NzUzNC5wZGYKKyAgQU1EIEZhbWlseSAxMWggUHJvY2Vzc29yIFBvd2VyIGFuZCBUaGVybWFsIERhdGEgU2hlZXQgZm9yIE5vdGVib29rczoKKyAgICBodHRwOi8vc3VwcG9ydC5hbWQuY29tL3VzL1Byb2Nlc3Nvcl9UZWNoRG9jcy80MzM3My5wZGYKKyAgQU1EIEZhbWlseSAxMGggU2VydmVyIGFuZCBXb3Jrc3RhdGlvbiBQcm9jZXNzb3IgUG93ZXIgYW5kIFRoZXJtYWwgRGF0YSBTaGVldDoKKyAgICBodHRwOi8vc3VwcG9ydC5hbWQuY29tL3VzL1Byb2Nlc3Nvcl9UZWNoRG9jcy80MzM3NC5wZGYKKyAgQU1EIEZhbWlseSAxMGggRGVza3RvcCBQcm9jZXNzb3IgUG93ZXIgYW5kIFRoZXJtYWwgRGF0YSBTaGVldDoKKyAgICBodHRwOi8vc3VwcG9ydC5hbWQuY29tL3VzL1Byb2Nlc3Nvcl9UZWNoRG9jcy80MzM3NS5wZGYKKworQXV0aG9yOiBDbGVtZW5zIExhZGlzY2ggPGNsZW1lbnNAbGFkaXNjaC5kZT4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIHBlcm1pdHMgcmVhZGluZyBvZiB0aGUgaW50ZXJuYWwgdGVtcGVyYXR1cmUgc2Vuc29yIG9mIEFNRAorRmFtaWx5IDEwaC8xMWgvMTJoLzE0aC8xNWgvMTZoIHByb2Nlc3NvcnMuCisKK0FsbCB0aGVzZSBwcm9jZXNzb3JzIGhhdmUgYSBzZW5zb3IsIGJ1dCBvbiB0aG9zZSBmb3IgU29ja2V0IEYgb3IgQU0yKywKK3RoZSBzZW5zb3IgbWF5IHJldHVybiBpbmNvbnNpc3RlbnQgdmFsdWVzIChlcnJhdHVtIDMxOSkuICBUaGUgZHJpdmVyCit3aWxsIHJlZnVzZSB0byBsb2FkIG9uIHRoZXNlIHJldmlzaW9ucyB1bmxlc3MgeW91IHNwZWNpZnkgdGhlICJmb3JjZT0xIgorbW9kdWxlIHBhcmFtZXRlci4KKworRHVlIHRvIHRlY2huaWNhbCByZWFzb25zLCB0aGUgZHJpdmVyIGNhbiBkZXRlY3Qgb25seSB0aGUgbWFpbmJvYXJkJ3MKK3NvY2tldCB0eXBlLCBub3QgdGhlIHByb2Nlc3NvcidzIGFjdHVhbCBjYXBhYmlsaXRpZXMuICBUaGVyZWZvcmUsIGlmIHlvdQorYXJlIHVzaW5nIGFuIEFNMyBwcm9jZXNzb3Igb24gYW4gQU0yKyBtYWluYm9hcmQsIHlvdSBjYW4gc2FmZWx5IHVzZSB0aGUKKyJmb3JjZT0xIiBwYXJhbWV0ZXIuCisKK1RoZXJlIGlzIG9uZSB0ZW1wZXJhdHVyZSBtZWFzdXJlbWVudCB2YWx1ZSwgYXZhaWxhYmxlIGFzIHRlbXAxX2lucHV0IGluCitzeXNmcy4gSXQgaXMgbWVhc3VyZWQgaW4gZGVncmVlcyBDZWxzaXVzIHdpdGggYSByZXNvbHV0aW9uIG9mIDEvOHRoIGRlZ3JlZS4KK1BsZWFzZSBub3RlIHRoYXQgaXQgaXMgZGVmaW5lZCBhcyBhIHJlbGF0aXZlIHZhbHVlOyB0byBxdW90ZSB0aGUgQU1EIG1hbnVhbDoKKworICBUY3RsIGlzIHRoZSBwcm9jZXNzb3IgdGVtcGVyYXR1cmUgY29udHJvbCB2YWx1ZSwgdXNlZCBieSB0aGUgcGxhdGZvcm0gdG8KKyAgY29udHJvbCBjb29saW5nIHN5c3RlbXMuIFRjdGwgaXMgYSBub24tcGh5c2ljYWwgdGVtcGVyYXR1cmUgb24gYW4KKyAgYXJiaXRyYXJ5IHNjYWxlIG1lYXN1cmVkIGluIGRlZ3JlZXMuIEl0IGRvZXMgX25vdF8gcmVwcmVzZW50IGFuIGFjdHVhbAorICBwaHlzaWNhbCB0ZW1wZXJhdHVyZSBsaWtlIGRpZSBvciBjYXNlIHRlbXBlcmF0dXJlLiBJbnN0ZWFkLCBpdCBzcGVjaWZpZXMKKyAgdGhlIHByb2Nlc3NvciB0ZW1wZXJhdHVyZSByZWxhdGl2ZSB0byB0aGUgcG9pbnQgYXQgd2hpY2ggdGhlIHN5c3RlbSBtdXN0CisgIHN1cHBseSB0aGUgbWF4aW11bSBjb29saW5nIGZvciB0aGUgcHJvY2Vzc29yJ3Mgc3BlY2lmaWVkIG1heGltdW0gY2FzZQorICB0ZW1wZXJhdHVyZSBhbmQgbWF4aW11bSB0aGVybWFsIHBvd2VyIGRpc3NpcGF0aW9uLgorCitUaGUgbWF4aW11bSB2YWx1ZSBmb3IgVGN0bCBpcyBhdmFpbGFibGUgaW4gdGhlIGZpbGUgdGVtcDFfbWF4LgorCitJZiB0aGUgQklPUyBoYXMgZW5hYmxlZCBoYXJkd2FyZSB0ZW1wZXJhdHVyZSBjb250cm9sLCB0aGUgdGhyZXNob2xkIGF0Cit3aGljaCB0aGUgcHJvY2Vzc29yIHdpbGwgdGhyb3R0bGUgaXRzZWxmIHRvIGF2b2lkIGRhbWFnZSBpcyBhdmFpbGFibGUgaW4KK3RlbXAxX2NyaXQgYW5kIHRlbXAxX2NyaXRfaHlzdC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vazh0ZW1wIGIvRG9jdW1lbnRhdGlvbi9od21vbi9rOHRlbXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE2ZGMyNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vazh0ZW1wCkBAIC0wLDAgKzEsNTUgQEAKK0tlcm5lbCBkcml2ZXIgazh0ZW1wCis9PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogQU1EIEF0aGxvbjY0L0ZYIG9yIE9wdGVyb24gQ1BVcworICAgIFByZWZpeDogJ2s4dGVtcCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogUENJIHNwYWNlCisgICAgRGF0YXNoZWV0OiBodHRwOi8vc3VwcG9ydC5hbWQuY29tL3VzL1Byb2Nlc3Nvcl9UZWNoRG9jcy8zMjU1OS5wZGYKKworQXV0aG9yOiBSdWRvbGYgTWFyZWsKK0NvbnRhY3Q6IFJ1ZG9sZiBNYXJlayA8ci5tYXJla0Bhc3NlbWJsZXIuY3o+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBwZXJtaXRzIHJlYWRpbmcgdGVtcGVyYXR1cmUgc2Vuc29yKHMpIGVtYmVkZGVkIGluc2lkZSBBTUQgSzgKK2ZhbWlseSBDUFVzIChBdGhsb242NC9GWCwgT3B0ZXJvbikuIE9mZmljaWFsIGRvY3VtZW50YXRpb24gc2F5cyB0aGF0IGl0IHdvcmtzCitmcm9tIHJldmlzaW9uIEYgb2YgSzggY29yZSwgYnV0IGluIGZhY3QgaXQgc2VlbXMgdG8gYmUgaW1wbGVtZW50ZWQgZm9yIGFsbAorcmV2aXNpb25zIG9mIEs4IGV4Y2VwdCB0aGUgZmlyc3QgdHdvIHJldmlzaW9ucyAoU0gtQjAgYW5kIFNILUIzKS4KKworUGxlYXNlIG5vdGUgdGhhdCB5b3Ugd2lsbCBuZWVkIGF0IGxlYXN0IGxtLXNlbnNvcnMgMi4xMC4xIGZvciBwcm9wZXIgdXNlcnNwYWNlCitzdXBwb3J0LgorCitUaGVyZSBjYW4gYmUgdXAgdG8gZm91ciB0ZW1wZXJhdHVyZSBzZW5zb3JzIGluc2lkZSBzaW5nbGUgQ1BVLiBUaGUgZHJpdmVyCit3aWxsIGF1dG8tZGV0ZWN0IHRoZSBzZW5zb3JzIGFuZCB3aWxsIGRpc3BsYXkgb25seSB0ZW1wZXJhdHVyZXMgZnJvbQoraW1wbGVtZW50ZWQgc2Vuc29ycy4KKworTWFwcGluZyBvZiAvc3lzIGZpbGVzIGlzIGFzIGZvbGxvd3M6CisKK3RlbXAxX2lucHV0IC0gdGVtcGVyYXR1cmUgb2YgQ29yZSAwIGFuZCAicGxhY2UiIDAKK3RlbXAyX2lucHV0IC0gdGVtcGVyYXR1cmUgb2YgQ29yZSAwIGFuZCAicGxhY2UiIDEKK3RlbXAzX2lucHV0IC0gdGVtcGVyYXR1cmUgb2YgQ29yZSAxIGFuZCAicGxhY2UiIDAKK3RlbXA0X2lucHV0IC0gdGVtcGVyYXR1cmUgb2YgQ29yZSAxIGFuZCAicGxhY2UiIDEKKworVGVtcGVyYXR1cmVzIGFyZSBtZWFzdXJlZCBpbiBkZWdyZWVzIENlbHNpdXMgYW5kIG1lYXN1cmVtZW50IHJlc29sdXRpb24gaXMKKzEgZGVncmVlIEMuIEl0IGlzIGV4cGVjdGVkIHRoYXQgZnV0dXJlIENQVSB3aWxsIGhhdmUgYmV0dGVyIHJlc29sdXRpb24uIFRoZQordGVtcGVyYXR1cmUgaXMgdXBkYXRlZCBvbmNlIGEgc2Vjb25kLiBWYWxpZCB0ZW1wZXJhdHVyZXMgYXJlIGZyb20gLTQ5IHRvCisyMDYgZGVncmVlcyBDLgorCitUZW1wZXJhdHVyZSBrbm93biBhcyBUQ2FzZU1heCB3YXMgc3BlY2lmaWVkIGZvciBwcm9jZXNzb3JzIHVwIHRvIHJldmlzaW9uIEUuCitUaGlzIHRlbXBlcmF0dXJlIGlzIGRlZmluZWQgYXMgdGVtcGVyYXR1cmUgYmV0d2VlbiBoZWF0LXNwcmVhZGVyIGFuZCBDUFUKK2Nhc2UsIHNvIHRoZSBpbnRlcm5hbCBDUFUgdGVtcGVyYXR1cmUgc3VwcGxpZWQgYnkgdGhpcyBkcml2ZXIgY2FuIGJlIGhpZ2hlci4KK1RoZXJlIGlzIG5vIGVhc3kgd2F5IGhvdyB0byBtZWFzdXJlIHRoZSB0ZW1wZXJhdHVyZSB3aGljaCB3aWxsIGNvcnJlbGF0ZQord2l0aCBUQ2FzZU1heCB0ZW1wZXJhdHVyZS4KKworRm9yIG5ld2VyIHJldmlzaW9ucyBvZiBDUFUgKHJldiBGLCBzb2NrZXQgQU0yKSB0aGVyZSBpcyBhIG1hdGhlbWF0aWNhbGx5Citjb21wdXRlZCB0ZW1wZXJhdHVyZSBjYWxsZWQgVENvbnRyb2wsIHdoaWNoIG11c3QgYmUgbG93ZXIgdGhhbiBUQ29udHJvbE1heC4KKworVGhlIHJlbGF0aW9uc2hpcCBpcyBmb2xsb3dpbmc6CisKK3RlbXAxX2lucHV0IC0gVGpPZmZzZXQqMiA8IFRDb250cm9sTWF4LAorCitUak9mZnNldCBpcyBub3QgeWV0IGV4cG9ydGVkIGJ5IHRoZSBkcml2ZXIsIFRDb250cm9sTWF4IGlzIHVzdWFsbHkKKzcwIGRlZ3JlZXMgQy4gVGhlIHJ1bGUgb2YgdGhlIHRodW1iIC0+IENQVSB0ZW1wZXJhdHVyZSBzaG91bGQgbm90IGNyb3NzCis2MCBkZWdyZWVzIEMgdG9vIG11Y2guCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2xpbmVhZ2UtcGVtIGIvRG9jdW1lbnRhdGlvbi9od21vbi9saW5lYWdlLXBlbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2IyZGRjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9saW5lYWdlLXBlbQpAQCAtMCwwICsxLDc3IEBACitLZXJuZWwgZHJpdmVyIGxpbmVhZ2UtcGVtCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBkZXZpY2VzOgorICAqIExpbmVhZ2UgQ29tcGFjdCBQb3dlciBMaW5lIFBvd2VyIEVudHJ5IE1vZHVsZXMKKyAgICBQcmVmaXg6ICdsaW5lYWdlLXBlbScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgIERvY3VtZW50YXRpb246CisgICAgICAgIGh0dHA6Ly93d3cubGluZWFnZXBvd2VyLmNvbS9vZW0vcGRmL0NQTEkyQy5wZGYKKworQXV0aG9yOiBHdWVudGVyIFJvZWNrIDxsaW51eEByb2Vjay11cy5uZXQ+CisKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIHN1cHBvcnRzIHZhcmlvdXMgTGluZWFnZSBDb21wYWN0IFBvd2VyIExpbmUgREMvREMgYW5kIEFDL0RDCitjb252ZXJ0ZXJzIHN1Y2ggYXMgQ1AxODAwLCBDUDIwMDBBQywgQ1AyMDAwREMsIENQMjEwMERDLCBhbmQgb3RoZXJzLgorCitMaW5lYWdlIENQTCBwb3dlciBlbnRyeSBtb2R1bGVzIGFyZSBub21pbmFsbHkgUE1CdXMgY29tcGxpYW50LiBIb3dldmVyLCBtb3N0CitzdGFuZGFyZCBQTUJ1cyBjb21tYW5kcyBhcmUgbm90IHN1cHBvcnRlZC4gU3BlY2lmaWNhbGx5LCBhbGwgaGFyZHdhcmUgbW9uaXRvcmluZworYW5kIHN0YXR1cyByZXBvcnRpbmcgY29tbWFuZHMgYXJlIG5vbi1zdGFuZGFyZC4gRm9yIHRoaXMgcmVhc29uLCBhIHN0YW5kYXJkCitQTUJ1cyBkcml2ZXIgY2FuIG5vdCBiZSB1c2VkLgorCisKK1VzYWdlIE5vdGVzCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBkb2VzIG5vdCBwcm9iZSBmb3IgTGluZWFnZSBDUEwgZGV2aWNlcywgc2luY2UgdGhlcmUgaXMgbm8gcmVnaXN0ZXIKK3doaWNoIGNhbiBiZSBzYWZlbHkgdXNlZCB0byBpZGVudGlmeSB0aGUgY2hpcC4gWW91IHdpbGwgaGF2ZSB0byBpbnN0YW50aWF0ZQordGhlIGRldmljZXMgZXhwbGljaXRseS4KKworRXhhbXBsZTogdGhlIGZvbGxvd2luZyB3aWxsIGxvYWQgdGhlIGRyaXZlciBmb3IgYSBMaW5lYWdlIFBFTSBhdCBhZGRyZXNzIDB4NDAKK29uIEkyQyBidXMgIzE6CiskIG1vZHByb2JlIGxpbmVhZ2UtcGVtCiskIGVjaG8gbGluZWFnZS1wZW0gMHg0MCA+IC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0xL25ld19kZXZpY2UKKworQWxsIExpbmVhZ2UgQ1BMIHBvd2VyIGVudHJ5IG1vZHVsZXMgaGF2ZSBhIGJ1aWx0LWluIEkyQyBidXMgbWFzdGVyIHNlbGVjdG9yCisoUENBOTU0MSkuIFRvIGVuc3VyZSBkZXZpY2UgYWNjZXNzLCB0aGlzIGRyaXZlciBzaG91bGQgb25seSBiZSB1c2VkIGFzIGNsaWVudAorZHJpdmVyIHRvIHRoZSBwY2E5NTQxIEkyQyBtYXN0ZXIgc2VsZWN0b3IgZHJpdmVyLgorCisKK1N5c2ZzIGVudHJpZXMKKy0tLS0tLS0tLS0tLS0KKworQWxsIExpbmVhZ2UgQ1BMIGRldmljZXMgcmVwb3J0IG91dHB1dCB2b2x0YWdlIGFuZCBkZXZpY2UgdGVtcGVyYXR1cmUgYXMgd2VsbCBhcworYWxhcm1zIGZvciBvdXRwdXQgdm9sdGFnZSwgdGVtcGVyYXR1cmUsIGlucHV0IHZvbHRhZ2UsIGlucHV0IGN1cnJlbnQsIGlucHV0IHBvd2VyLAorYW5kIGZhbiBzdGF0dXMuCisKK0lucHV0IHZvbHRhZ2UsIGlucHV0IGN1cnJlbnQsIGlucHV0IHBvd2VyLCBhbmQgZmFuIHNwZWVkIG1lYXN1cmVtZW50IGlzIG9ubHkKK3N1cHBvcnRlZCBvbiBuZXdlciBkZXZpY2VzLiBUaGUgZHJpdmVyIGRldGVjdHMgaWYgdGhvc2UgYXR0cmlidXRlcyBhcmUgc3VwcG9ydGVkLAorYW5kIG9ubHkgY3JlYXRlcyByZXNwZWN0aXZlIHN5c2ZzIGVudHJpZXMgaWYgdGhleSBhcmUuCisKK2luMV9pbnB1dAkJT3V0cHV0IHZvbHRhZ2UgKG1WKQoraW4xX21pbl9hbGFybQkJT3V0cHV0IHVuZGVydm9sdGFnZSBhbGFybQoraW4xX21heF9hbGFybQkJT3V0cHV0IG92ZXJ2b2x0YWdlIGFsYXJtCitpbjFfY3JpdAkJT3V0cHV0IHZvbHRhZ2UgY3JpdGljYWwgYWxhcm0KKworaW4yX2lucHV0CQlJbnB1dCB2b2x0YWdlIChtViwgb3B0aW9uYWwpCitpbjJfYWxhcm0JCUlucHV0IHZvbHRhZ2UgYWxhcm0KKworY3VycjFfaW5wdXQJCUlucHV0IGN1cnJlbnQgKG1BLCBvcHRpb25hbCkKK2N1cnIxX2FsYXJtCQlJbnB1dCBvdmVyY3VycmVudCBhbGFybQorCitwb3dlcjFfaW5wdXQJCUlucHV0IHBvd2VyICh1Vywgb3B0aW9uYWwpCitwb3dlcjFfYWxhcm0JCUlucHV0IHBvd2VyIGFsYXJtCisKK2ZhbjFfaW5wdXQJCUZhbiAxIHNwZWVkIChycG0sIG9wdGlvbmFsKQorZmFuMl9pbnB1dAkJRmFuIDIgc3BlZWQgKHJwbSwgb3B0aW9uYWwpCitmYW4zX2lucHV0CQlGYW4gMyBzcGVlZCAocnBtLCBvcHRpb25hbCkKKwordGVtcDFfaW5wdXQKK3RlbXAxX21heAordGVtcDFfY3JpdAordGVtcDFfYWxhcm0KK3RlbXAxX2NyaXRfYWxhcm0KK3RlbXAxX2ZhdWx0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2xtMjUwNjYgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2xtMjUwNjYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM0YzNkZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vbG0yNTA2NgpAQCAtMCwwICsxLDEyMCBAQAorS2VybmVsIGRyaXZlciBsbTI1MDY2Cis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIFRJIExNMjUwNTYKKyAgICBQcmVmaXg6ICdsbTI1MDU2JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0czoKKwlodHRwOi8vd3d3LnRpLmNvbS9saXQvZ3BuL2xtMjUwNTYKKwlodHRwOi8vd3d3LnRpLmNvbS9saXQvZ3BuL2xtMjUwNTZhCisgICogVEkgTE0yNTA2MworICAgIFByZWZpeDogJ2xtMjUwNjMnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IC0KKyAgICBEYXRhc2hlZXQ6CisJVG8gYmUgYW5ub3VuY2VkCisgICogTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBMTTI1MDY2CisgICAgUHJlZml4OiAnbG0yNTA2NicKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgIERhdGFzaGVldHM6CisJaHR0cDovL3d3dy5uYXRpb25hbC5jb20vcGYvTE0vTE0yNTA2Ni5odG1sCisJaHR0cDovL3d3dy5uYXRpb25hbC5jb20vcGYvTE0vTE0yNTA2NkEuaHRtbAorICAqIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgTE01MDY0CisgICAgUHJlZml4OiAnbG01MDY0JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OgorCWh0dHA6Ly93d3cubmF0aW9uYWwuY29tL3BmL0xNL0xNNTA2NC5odG1sCisgICogTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBMTTUwNjYKKyAgICBQcmVmaXg6ICdsbTUwNjYnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IC0KKyAgICBEYXRhc2hlZXQ6CisJaHR0cDovL3d3dy5uYXRpb25hbC5jb20vcGYvTE0vTE01MDY2Lmh0bWwKKworQXV0aG9yOiBHdWVudGVyIFJvZWNrIDxsaW51eEByb2Vjay11cy5uZXQ+CisKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIHN1cHBvcnRzIGhhcmR3YXJlIG1vbnRvcmluZyBmb3IgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciAvIFRJIExNMjUwNTYsCitMTTI1MDYzLCBMTTI1MDY2LCBMTTUwNjQsIGFuZCBMTTUwNjYgUG93ZXIgTWFuYWdlbWVudCwgTW9uaXRvcmluZywgQ29udHJvbCwgYW5kCitQcm90ZWN0aW9uIElDcy4KKworVGhlIGRyaXZlciBpcyBhIGNsaWVudCBkcml2ZXIgdG8gdGhlIGNvcmUgUE1CdXMgZHJpdmVyLiBQbGVhc2Ugc2VlCitEb2N1bWVudGF0aW9uL2h3bW9uL3BtYnVzIGZvciBkZXRhaWxzIG9uIFBNQnVzIGNsaWVudCBkcml2ZXJzLgorCisKK1VzYWdlIE5vdGVzCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBkb2VzIG5vdCBhdXRvLWRldGVjdCBkZXZpY2VzLiBZb3Ugd2lsbCBoYXZlIHRvIGluc3RhbnRpYXRlIHRoZQorZGV2aWNlcyBleHBsaWNpdGx5LiBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaTJjL2luc3RhbnRpYXRpbmctZGV2aWNlcyBmb3IKK2RldGFpbHMuCisKKworUGxhdGZvcm0gZGF0YSBzdXBwb3J0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGRyaXZlciBzdXBwb3J0cyBzdGFuZGFyZCBQTUJ1cyBkcml2ZXIgcGxhdGZvcm0gZGF0YS4KKworCitTeXNmcyBlbnRyaWVzCistLS0tLS0tLS0tLS0tCisKK1RoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBhcmUgc3VwcG9ydGVkLiBMaW1pdHMgYXJlIHJlYWQtd3JpdGU7IGFsbCBvdGhlcgorYXR0cmlidXRlcyBhcmUgcmVhZC1vbmx5LgorCitpbjFfbGFiZWwJCSJ2aW4iCitpbjFfaW5wdXQJCU1lYXN1cmVkIGlucHV0IHZvbHRhZ2UuCitpbjFfYXZlcmFnZQkJQXZlcmFnZSBtZWFzdXJlZCBpbnB1dCB2b2x0YWdlLgoraW4xX21pbgkJCU1pbmltdW0gaW5wdXQgdm9sdGFnZS4KK2luMV9tYXgJCQlNYXhpbXVtIGlucHV0IHZvbHRhZ2UuCitpbjFfY3JpdAkJQ3JpdGljYWwgaGlnaCBpbnB1dCB2b2x0YWdlIChMTTI1MDYzIG9ubHkpLgoraW4xX2xjcml0CQlDcml0aWNhbCBsb3cgaW5wdXQgdm9sdGFnZSAoTE0yNTA2MyBvbmx5KS4KK2luMV9taW5fYWxhcm0JCUlucHV0IHZvbHRhZ2UgbG93IGFsYXJtLgoraW4xX21heF9hbGFybQkJSW5wdXQgdm9sdGFnZSBoaWdoIGFsYXJtLgoraW4xX2xjcml0X2FsYXJtCQlJbnB1dCB2b2x0YWdlIGNyaXRpY2FsIGxvdyBhbGFybSAoTE0yNTA2MyBvbmx5KS4KK2luMV9jcml0X2FsYXJtCQlJbnB1dCB2b2x0YWdlIGNyaXRpY2FsIGhpZ2ggYWxhcm0uIChMTTI1MDYzIG9ubHkpLgorCitpbjJfbGFiZWwJCSJ2bW9uIgoraW4yX2lucHV0CQlNZWFzdXJlZCB2b2x0YWdlIG9uIFZBVVggcGluCitpbjJfbWluCQkJTWluaW11bSBWQVVYIHZvbHRhZ2UgKExNMjUwNTYgb25seSkuCitpbjJfbWF4CQkJTWF4aW11bSBWQVVYIHZvbHRhZ2UgKExNMjUwNTYgb25seSkuCitpbjJfbWluX2FsYXJtCQlWQVVYIHZvbHRhZ2UgbG93IGFsYXJtIChMTTI1MDU2IG9ubHkpLgoraW4yX21heF9hbGFybQkJVkFVWCB2b2x0YWdlIGhpZ2ggYWxhcm0gKExNMjUwNTYgb25seSkuCisKK2luM19sYWJlbAkJInZvdXQxIgorCQkJTm90IHN1cHBvcnRlZCBvbiBMTTI1MDU2LgoraW4zX2lucHV0CQlNZWFzdXJlZCBvdXRwdXQgdm9sdGFnZS4KK2luM19hdmVyYWdlCQlBdmVyYWdlIG1lYXN1cmVkIG91dHB1dCB2b2x0YWdlLgoraW4zX21pbgkJCU1pbmltdW0gb3V0cHV0IHZvbHRhZ2UuCitpbjNfbWluX2FsYXJtCQlPdXRwdXQgdm9sdGFnZSBsb3cgYWxhcm0uCitpbjNfaGlnaGVzdAkJSGlzdG9yaWNhbCBtaW5pbXVtIG91dHB1dCB2b2x0YWdlIChMTTI1MDYzIG9ubHkpLgoraW4zX2xvd2VzdAkJSGlzdG9yaWNhbCBtYXhpbXVtIG91dHB1dCB2b2x0YWdlIChMTTI1MDYzIG9ubHkpLgorCitjdXJyMV9sYWJlbAkJImlpbiIKK2N1cnIxX2lucHV0CQlNZWFzdXJlZCBpbnB1dCBjdXJyZW50LgorY3VycjFfYXZlcmFnZQkJQXZlcmFnZSBtZWFzdXJlZCBpbnB1dCBjdXJyZW50LgorY3VycjFfbWF4CQlNYXhpbXVtIGlucHV0IGN1cnJlbnQuCitjdXJyMV9jcml0CQlDcml0aWNhbCBpbnB1dCBjdXJyZW50IChMTTI1MDYzIG9ubHkpLgorY3VycjFfbWF4X2FsYXJtCQlJbnB1dCBjdXJyZW50IGhpZ2ggYWxhcm0uCitjdXJyMV9jcml0X2FsYXJtCUlucHV0IGN1cnJlbnQgY3JpdGljYWwgaGlnaCBhbGFybSAoTE0yNTA2MyBvbmx5KS4KKworcG93ZXIxX2xhYmVsCQkicGluIgorcG93ZXIxX2lucHV0CQlNZWFzdXJlZCBpbnB1dCBwb3dlci4KK3Bvd2VyMV9hdmVyYWdlCQlBdmVyYWdlIG1lYXN1cmVkIGlucHV0IHBvd2VyLgorcG93ZXIxX21heAkJTWF4aW11bSBpbnB1dCBwb3dlciBsaW1pdC4KK3Bvd2VyMV9hbGFybQkJSW5wdXQgcG93ZXIgYWxhcm0KK3Bvd2VyMV9pbnB1dF9oaWdoZXN0CUhpc3RvcmljYWwgbWF4aW11bSBwb3dlci4KK3Bvd2VyMV9yZXNldF9oaXN0b3J5CVdyaXRlIGFueSB2YWx1ZSB0byByZXNldCBtYXhpbXVtIHBvd2VyIGhpc3RvcnkuCisKK3Bvd2VyMl9sYWJlbAkJInBvdXQiLiBMTTI1MDYzIG9ubHkuCitwb3dlcjJfaW5wdXQJCU1lYXN1cmVkIG91dHB1dCBwb3dlci4KK3Bvd2VyMl9tYXgJCU1heGltdW0gb3V0cHV0IHBvd2VyIGxpbWl0LgorcG93ZXIyX2NyaXQJCUNyaXRpY2FsIG91dHB1dCBwb3dlciBsaW1pdC4KKwordGVtcDFfaW5wdXQJCU1lYXN1cmVkIHRlbXBlcmF0dXJlLgordGVtcDFfbWF4CQlNYXhpbXVtIHRlbXBlcmF0dXJlLgordGVtcDFfY3JpdAkJQ3JpdGljYWwgaGlnaCB0ZW1wZXJhdHVyZS4KK3RlbXAxX21heF9hbGFybQkJQ2hpcCB0ZW1wZXJhdHVyZSBoaWdoIGFsYXJtLgordGVtcDFfY3JpdF9hbGFybQlDaGlwIHRlbXBlcmF0dXJlIGNyaXRpY2FsIGhpZ2ggYWxhcm0uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2xtNjMgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2xtNjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGEwMDQ2MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vbG02MwpAQCAtMCwwICsxLDc3IEBACitLZXJuZWwgZHJpdmVyIGxtNjMKKz09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBMTTYzCisgICAgUHJlZml4OiAnbG02MycKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4NGMKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3Lm5hdGlvbmFsLmNvbS9wZi9MTS9MTTYzLmh0bWwKKyAgKiBOYXRpb25hbCBTZW1pY29uZHVjdG9yIExNNjQKKyAgICBQcmVmaXg6ICdsbTY0JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgxOCBhbmQgMHg0ZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubmF0aW9uYWwuY29tL3BmL0xNL0xNNjQuaHRtbAorICAqIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgTE05NjE2MworICAgIFByZWZpeDogJ2xtOTYxNjMnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDRjCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3Igd2Vic2l0ZQorICAgICAgICAgICAgICAgaHR0cDovL3d3dy5uYXRpb25hbC5jb20vcGYvTE0vTE05NjE2My5odG1sCisKK0F1dGhvcjogSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmRlPgorCitUaGFua3MgZ28gdG8gVHlhbiBhbmQgZXNwZWNpYWxseSBBbGV4IEJ1Y2tpbmdoYW0gZm9yIHNldHRpbmcgdXAgYSByZW1vdGUKK2FjY2VzcyB0byB0aGVpciBTNDg4MiB0ZXN0IHBsYXRmb3JtIGZvciB0aGlzIGRyaXZlci4KKyAgaHR0cDovL3d3dy50eWFuLmNvbS8KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoZSBMTTYzIGlzIGEgZGlnaXRhbCB0ZW1wZXJhdHVyZSBzZW5zb3Igd2l0aCBpbnRlZ3JhdGVkIGZhbiBtb25pdG9yaW5nCithbmQgY29udHJvbC4KKworVGhlIExNNjMgaXMgYmFzaWNhbGx5IGFuIExNODYgd2l0aCBmYW4gc3BlZWQgbW9uaXRvcmluZyBhbmQgY29udHJvbAorY2FwYWJpbGl0aWVzIGFkZGVkLiBJdCBtaXNzZXMgc29tZSBvZiB0aGUgTE04NiBmZWF0dXJlcyB0aG91Z2g6CisgLSBObyBsb3cgbGltaXQgZm9yIGxvY2FsIHRlbXBlcmF0dXJlLgorIC0gTm8gY3JpdGljYWwgbGltaXQgZm9yIGxvY2FsIHRlbXBlcmF0dXJlLgorIC0gQ3JpdGljYWwgbGltaXQgZm9yIHJlbW90ZSB0ZW1wZXJhdHVyZSBjYW4gYmUgY2hhbmdlZCBvbmx5IG9uY2UuIFdlCisgICB3aWxsIGNvbnNpZGVyIHRoYXQgdGhlIGNyaXRpY2FsIGxpbWl0IGlzIHJlYWQtb25seS4KKworVGhlIGRhdGFzaGVldCBpc24ndCB2ZXJ5IGNsZWFyIGFib3V0IHdoYXQgdGhlIHRhY2hvbWV0ZXIgcmVhZGluZyBpcy4KKworQW4gZXhwbGFuYXRpb24gZnJvbSBOYXRpb25hbCBTZW1pY29uZHVjdG9yOiBUaGUgdHdvIGxvd2VyIGJpdHMgb2YgdGhlIHJlYWQKK3ZhbHVlIGhhdmUgdG8gYmUgbWFza2VkIG91dC4gVGhlIHZhbHVlIGlzIHN0aWxsIDE2IGJpdCBpbiB3aWR0aC4KKworQWxsIHRlbXBlcmF0dXJlIHZhbHVlcyBhcmUgZ2l2ZW4gaW4gZGVncmVlcyBDZWxzaXVzLiBSZXNvbHV0aW9uIGlzIDEuMAorZGVncmVlIGZvciB0aGUgbG9jYWwgdGVtcGVyYXR1cmUsIDAuMTI1IGRlZ3JlZSBmb3IgdGhlIHJlbW90ZSB0ZW1wZXJhdHVyZS4KKworVGhlIGZhbiBzcGVlZCBpcyBtZWFzdXJlZCB1c2luZyBhIHRhY2hvbWV0ZXIuIENvbnRyYXJ5IHRvIG1vc3QgY2hpcHMgd2hpY2gKK3N0b3JlIHRoZSB2YWx1ZSBpbiBhbiA4LWJpdCByZWdpc3RlciBhbmQgaGF2ZSBhIHNlbGVjdGFibGUgY2xvY2sgZGl2aWRlcgordG8gbWFrZSBzdXJlIHRoYXQgdGhlIHJlc3VsdCB3aWxsIGZpdCBpbiB0aGUgcmVnaXN0ZXIsIHRoZSBMTTYzIHVzZXMgMTYtYml0Cit2YWx1ZSBmb3IgbWVhc3VyaW5nIHRoZSBzcGVlZCBvZiB0aGUgZmFuLiBJdCBjYW4gbWVhc3VyZSBmYW4gc3BlZWRzIGRvd24gdG8KKzgzIFJQTSwgYXQgbGVhc3QgaW4gdGhlb3J5LgorCitOb3RlIHRoYXQgdGhlIHBpbiB1c2VkIGZvciBmYW4gbW9uaXRvcmluZyBpcyBzaGFyZWQgd2l0aCBhbiBhbGVydCBvdXQKK2Z1bmN0aW9uLiBEZXBlbmRpbmcgb24gaG93IHRoZSBib2FyZCBkZXNpZ25lciB3YW50ZWQgdG8gdXNlIHRoZSBjaGlwLCBmYW4KK3NwZWVkIG1vbml0b3Jpbmcgd2lsbCBvciB3aWxsIG5vdCBiZSBwb3NzaWJsZS4gVGhlIHByb3BlciBjaGlwIGNvbmZpZ3VyYXRpb24KK2lzIGxlZnQgdG8gdGhlIEJJT1MsIGFuZCB0aGUgZHJpdmVyIHdpbGwgYmxpbmRseSB0cnVzdCBpdC4gT25seSB0aGUgb3JpZ2luYWwKK0xNNjMgc3VmZmVycyBmcm9tIHRoaXMgbGltaXRhdGlvbiwgdGhlIExNNjQgYW5kIExNOTYxNjMgaGF2ZSBzZXBhcmF0ZSBwaW5zCitmb3IgZmFuIG1vbml0b3JpbmcgYW5kIGFsZXJ0IG91dC4gT24gdGhlIExNNjQsIG1vbml0b3JpbmcgaXMgYWx3YXlzIGVuYWJsZWQ7CitvbiB0aGUgTE05NjE2MyBpdCBjYW4gYmUgZGlzYWJsZWQuCisKK0EgUFdNIG91dHB1dCBjYW4gYmUgdXNlZCB0byBjb250cm9sIHRoZSBzcGVlZCBvZiB0aGUgZmFuLiBUaGUgTE02MyBoYXMgdHdvCitQV00gbW9kZXM6IG1hbnVhbCBhbmQgYXV0b21hdGljLiBBdXRvbWF0aWMgbW9kZSBpcyBub3QgZnVsbHkgaW1wbGVtZW50ZWQgeWV0CisoeW91IGNhbm5vdCBkZWZpbmUgeW91ciBjdXN0b20gUFdNL3RlbXBlcmF0dXJlIGN1cnZlKSwgYW5kIG1vZGUgY2hhbmdlIGlzbid0CitzdXBwb3J0ZWQgZWl0aGVyLgorCitUaGUgbG02MyBkcml2ZXIgd2lsbCBub3QgdXBkYXRlIGl0cyB2YWx1ZXMgbW9yZSBmcmVxdWVudGx5IHRoYW4gY29uZmlndXJlZCB3aXRoCit0aGUgdXBkYXRlX2ludGVydmFsIHN5c2ZzIGF0dHJpYnV0ZTsgcmVhZGluZyB0aGVtIG1vcmUgb2Z0ZW4gd2lsbCBkbyBubyBoYXJtLAorYnV0IHdpbGwgcmV0dXJuICdvbGQnIHZhbHVlcy4gVmFsdWVzIGluIHRoZSBhdXRvbWF0aWMgZmFuIGNvbnRyb2wgbG9va3VwIHRhYmxlCisoYXR0cmlidXRlcyBwd20xX2F1dG9fKikgaGF2ZSB0aGVpciBvd24gaW5kZXBlbmRlbnQgbGlmZXRpbWUgb2YgNSBzZWNvbmRzLgorCitUaGUgTE02NCBpcyBlZmZlY3RpdmVseSBhbiBMTTYzIHdpdGggR1BJTyBsaW5lcy4gVGhlIGRyaXZlciBkb2VzIG5vdAorc3VwcG9ydCB0aGVzZSBHUElPIGxpbmVzIGF0IHByZXNlbnQuCisKK1RoZSBMTTk2MTYzIGlzIGFuIGVuaGFuY2VkIHZlcnNpb24gb2YgTE02MyB3aXRoIGltcHJvdmVkIHRlbXBlcmF0dXJlIGFjY3VyYWN5CithbmQgYmV0dGVyIFBXTSByZXNvbHV0aW9uLiBGb3IgTE05NjE2MywgdGhlIGV4dGVybmFsIHRlbXBlcmF0dXJlIHNlbnNvciB0eXBlIGlzCitjb25maWd1cmFibGUgYXMgQ1BVIGVtYmVkZGVkIGRpb2RlKDEpIG9yIDM5MDQgdHJhbnNpc3RvcigyKS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vbG03MCBiL0RvY3VtZW50YXRpb24vaHdtb24vbG03MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmIyZGI0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9sbTcwCkBAIC0wLDAgKzEsNDcgQEAKK0tlcm5lbCBkcml2ZXIgbG03MAorPT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBOYXRpb25hbCBTZW1pY29uZHVjdG9yIExNNzAKKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cubmF0aW9uYWwuY29tL3BmL0xNL0xNNzAuaHRtbAorICAqIFRleGFzIEluc3RydW1lbnRzIFRNUDEyMS9UTVAxMjMKKyAgICBJbmZvcm1hdGlvbjogaHR0cDovL2ZvY3VzLnRpLmNvbS9kb2NzL3Byb2QvZm9sZGVycy9wcmludC90bXAxMjEuaHRtbAorICAqIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgTE03MQorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy50aS5jb20vcHJvZHVjdC9MTTcxCisgICogTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBMTTc0CisgICAgRGF0YXNoZWV0OiBodHRwOi8vd3d3LnRpLmNvbS9wcm9kdWN0L0xNNzQKKworQXV0aG9yOgorICAgICAgICBLYWl3YW4gTiBCaWxsaW1vcmlhIDxrYWl3YW5AZGVzaWduZXJncmFwaGl4LmNvbT4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgTE03MAordGVtcGVyYXR1cmUgc2Vuc29yLgorCitUaGUgTE03MCB0ZW1wZXJhdHVyZSBzZW5zb3IgY2hpcCBzdXBwb3J0cyBhIHNpbmdsZSB0ZW1wZXJhdHVyZSBzZW5zb3IuCitJdCBjb21tdW5pY2F0ZXMgd2l0aCBhIGhvc3QgcHJvY2Vzc29yIChvciBtaWNyb2NvbnRyb2xsZXIpIHZpYSBhbgorU1BJL01pY3Jvd2lyZSBCdXMgaW50ZXJmYWNlLgorCitDb21tdW5pY2F0aW9uIHdpdGggdGhlIExNNzAgaXMgc2ltcGxlOiB3aGVuIHRoZSB0ZW1wZXJhdHVyZSBpcyB0byBiZSBzZW5zZWQsCit0aGUgZHJpdmVyIGFjY2Vzc2VzIHRoZSBMTTcwIHVzaW5nIFNQSSBjb21tdW5pY2F0aW9uOiAxNiBTQ0xLIGN5Y2xlcworY29tcHJpc2UgdGhlIE1PU0kvTUlTTyBsb29wLiBBdCB0aGUgZW5kIG9mIHRoZSB0cmFuc2ZlciwgdGhlIDExLWJpdCAyJ3MKK2NvbXBsZW1lbnQgZGlnaXRhbCB0ZW1wZXJhdHVyZSAoc2VudCB2aWEgdGhlIFNJTyBsaW5lKSwgaXMgYXZhaWxhYmxlIGluIHRoZQorZHJpdmVyIGZvciBpbnRlcnByZXRhdGlvbi4gVGhpcyBkcml2ZXIgbWFrZXMgdXNlIG9mIHRoZSBrZXJuZWwncyBpbi1jb3JlCitTUEkgc3VwcG9ydC4KKworQXMgYSByZWFsIChpbi10cmVlKSBleGFtcGxlIG9mIHRoaXMgIlNQSSBwcm90b2NvbCBkcml2ZXIiIGludGVyZmFjaW5nCit3aXRoIGEgIlNQSSBtYXN0ZXIgY29udHJvbGxlciBkcml2ZXIiLCBzZWUgZHJpdmVycy9zcGkvc3BpX2xtNzBsbHAuYworYW5kIGl0cyBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24uCisKK1RoZSBMTTc0IGFuZCBUTVAxMjEvVE1QMTIzIGFyZSB2ZXJ5IHNpbWlsYXI7IG1haW4gZGlmZmVyZW5jZSBpcyAxMy1iaXQKK3RlbXBlcmF0dXJlIGRhdGEgKDAuMDYyNSBkZWdyZWVzIGNlbHNpdXMgcmVzb2x1dGlvbikuCisKK1RoZSBMTTcxIGlzIGFsc28gdmVyeSBzaW1pbGFyOyBtYWluIGRpZmZlcmVuY2UgaXMgMTQtYml0IHRlbXBlcmF0dXJlCitkYXRhICgwLjAzMTI1IGRlZ3JlZXMgY2Vsc2l1cyByZXNvbHV0aW9uKS4KKworVGhhbmtzIHRvCistLS0tLS0tLS0KK0plYW4gRGVsdmFyZSA8amRlbHZhcmVAc3VzZS5kZT4gZm9yIG1lbnRvcmluZyB0aGUgaHdtb24tc2lkZSBkcml2ZXIKK2RldmVsb3BtZW50LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9sbTczIGIvRG9jdW1lbnRhdGlvbi9od21vbi9sbTczCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhZjA1OWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2xtNzMKQEAgLTAsMCArMSw5MCBAQAorS2VybmVsIGRyaXZlciBsbTczCis9PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIFRleGFzIEluc3RydW1lbnRzIExNNzMKKyAgICBQcmVmaXg6ICdsbTczJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHg0OCwgMHg0OSwgMHg0YSwgMHg0YywgMHg0ZCwgYW5kIDB4NGUKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgd2Vic2l0ZQorICAgICAgICAgICAgICAgaHR0cDovL3d3dy50aS5jb20vcHJvZHVjdC9sbTczCisKK0F1dGhvcjogR3VpbGxhdW1lIExpZ25ldWwgPGd1aWxsYXVtZS5saWduZXVsQGdtYWlsLmNvbT4KK0RvY3VtZW50YXRpb246IENocmlzIFZlcmdlcyA8a2c0eXNuQGdtYWlsLmNvbT4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIExNNzMgaXMgYSBkaWdpdGFsIHRlbXBlcmF0dXJlIHNlbnNvci4gIEFsbCB0ZW1wZXJhdHVyZSB2YWx1ZXMgYXJlCitnaXZlbiBpbiBkZWdyZWVzIENlbHNpdXMuCisKK01lYXN1cmVtZW50IFJlc29sdXRpb24gU3VwcG9ydAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBMTTczIHN1cHBvcnRzIGZvdXIgcmVzb2x1dGlvbnMsIGRlZmluZWQgaW4gdGVybXMgb2YgZGVncmVlcyBDIHBlcgorTFNCOiAwLjI1LCAwLjEyNSwgMC4wNjI1LCBhbmQgMC4zMTI1LiAgQ2hhbmdpbmcgdGhlIHJlc29sdXRpb24gbW9kZQorYWZmZWN0cyB0aGUgY29udmVyc2lvbiB0aW1lIG9mIHRoZSBMTTczJ3MgYW5hbG9nLXRvLWRpZ2l0YWwgY29udmVydGVyLgorRnJvbSB1c2Vyc3BhY2UsIHRoZSBkZXNpcmVkIHJlc29sdXRpb24gY2FuIGJlIHNwZWNpZmllZCBhcyBhIGZ1bmN0aW9uIG9mCitjb252ZXJzaW9uIHRpbWUgdmlhIHRoZSAndXBkYXRlX2ludGVydmFsJyBzeXNmcyBhdHRyaWJ1dGUgZm9yIHRoZQorZGV2aWNlLiAgVGhpcyBhdHRyaWJ1dGUgd2lsbCBub3JtYWxpemUgcmFuZ2VzIG9mIGlucHV0IHZhbHVlcyB0byB0aGUKK21heGltdW0gdGltZXMgZGVmaW5lZCBmb3IgdGhlIHJlc29sdXRpb24gaW4gdGhlIGRhdGFzaGVldC4KKworICAgIFJlc29sdXRpb24gICAgQ29udi4gVGltZSAgICBJbnB1dCBSYW5nZQorICAgIChDL0xTQikgICAgICAgKG1zZWMpICAgICAgICAobXNlYykKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIDAuMjUgICAgICAgICAgMTQgICAgICAgICAgICAgMC4uMTQKKyAgICAwLjEyNSAgICAgICAgIDI4ICAgICAgICAgICAgMTUuLjI4CisgICAgMC4wNjI1ICAgICAgICA1NiAgICAgICAgICAgIDI5Li41NgorICAgIDAuMDMxMjUgICAgICAgMTEyICAgICAgICAgICA1Ny4uaW5maW5pdHkKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIGV4YW1wbGVzIHNob3cgaG93IHRoZSAndXBkYXRlX2ludGVydmFsJyBhdHRyaWJ1dGUgY2FuIGJlCit1c2VkIHRvIGNoYW5nZSB0aGUgY29udmVyc2lvbiB0aW1lOgorCisgICAgJCBlY2hvIDAgPiB1cGRhdGVfaW50ZXJ2YWwKKyAgICAkIGNhdCB1cGRhdGVfaW50ZXJ2YWwKKyAgICAxNAorICAgICQgY2F0IHRlbXAxX2lucHV0CisgICAgMjQyNTAKKworICAgICQgZWNobyAyMiA+IHVwZGF0ZV9pbnRlcnZhbAorICAgICQgY2F0IHVwZGF0ZV9pbnRlcnZhbAorICAgIDI4CisgICAgJCBjYXQgdGVtcDFfaW5wdXQKKyAgICAyNDEyNQorCisgICAgJCBlY2hvIDU2ID4gdXBkYXRlX2ludGVydmFsCisgICAgJCBjYXQgdXBkYXRlX2ludGVydmFsCisgICAgNTYKKyAgICAkIGNhdCB0ZW1wMV9pbnB1dAorICAgIDI0MDYyCisKKyAgICAkIGVjaG8gODUgPiB1cGRhdGVfaW50ZXJ2YWwKKyAgICAkIGNhdCB1cGRhdGVfaW50ZXJ2YWwKKyAgICAxMTIKKyAgICAkIGNhdCB0ZW1wMV9pbnB1dAorICAgIDI0MDMxCisKK0FzIHNob3duIGhlcmUsIHRoZSBsbTczIGRyaXZlciBhdXRvbWF0aWNhbGx5IGFkanVzdHMgYW55IHVzZXIgaW5wdXQgZm9yCisndXBkYXRlX2ludGVydmFsJyB2aWEgYSBzdGVwIGZ1bmN0aW9uLiAgUmVhZGluZyBiYWNrIHRoZQorJ3VwZGF0ZV9pbnRlcnZhbCcgdmFsdWUgYWZ0ZXIgYSB3cml0ZSBvcGVyYXRpb24gd2lsbCBjb25maXJtIHRoZQorY29udmVyc2lvbiB0aW1lIGFjdGl2ZWx5IGluIHVzZS4KKworTWF0aGVtYXRpY2FsbHksIHRoZSByZXNvbHV0aW9uIGNhbiBiZSBkZXJpdmVkIGZyb20gdGhlIGNvbnZlcnNpb24gdGltZQordmlhIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb246CisKKyAgIGcoeCkgPSAwLjI1MCAqIFtsb2coeC8xNCkgLyBsb2coMildCisKK3doZXJlICd4JyBpcyB0aGUgb3V0cHV0IGZyb20gJ3VwZGF0ZV9pbnRlcnZhbCcgYW5kICdnKHgpJyBpcyB0aGUKK3Jlc29sdXRpb24gaW4gZGVncmVlcyBDIHBlciBMU0IuCisKK0FsYXJtIFN1cHBvcnQKKy0tLS0tLS0tLS0tLS0KKworVGhlIExNNzMgZmVhdHVyZXMgYSBzaW1wbGUgb3Zlci10ZW1wZXJhdHVyZSBhbGFybSBtZWNoYW5pc20uICBUaGlzCitmZWF0dXJlIGlzIGV4cG9zZWQgdmlhIHRoZSBzeXNmcyBhdHRyaWJ1dGVzLgorCitUaGUgYXR0cmlidXRlcyAndGVtcDFfbWF4X2FsYXJtJyBhbmQgJ3RlbXAxX21pbl9hbGFybScgYXJlIGZsYWdzCitwcm92aWRlZCBieSB0aGUgTE03MyB0aGF0IGluZGljYXRlIHdoZXRoZXIgdGhlIG1lYXN1cmVkIHRlbXBlcmF0dXJlIGhhcworcGFzc2VkIHRoZSAndGVtcDFfbWF4JyBhbmQgJ3RlbXAxX21pbicgdGhyZXNob2xkcywgcmVzcGVjdGl2ZWx5LiAgVGhlc2UKK3ZhbHVlcyBfbXVzdF8gYmUgcmVhZCB0byBjbGVhciB0aGUgcmVnaXN0ZXJzIG9uIHRoZSBMTTczLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9sbTc1IGIvRG9jdW1lbnRhdGlvbi9od21vbi9sbTc1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjOTVlZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2xtNzUKQEAgLTAsMCArMSw5MyBAQAorS2VybmVsIGRyaXZlciBsbTc1Cis9PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgTE03NQorICAgIFByZWZpeDogJ2xtNzUnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDQ4IC0gMHg0ZgorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubmF0aW9uYWwuY29tLworICAqIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgTE03NUEKKyAgICBQcmVmaXg6ICdsbTc1YScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4NDggLSAweDRmCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3Igd2Vic2l0ZQorICAgICAgICAgICAgICAgaHR0cDovL3d3dy5uYXRpb25hbC5jb20vCisgICogRGFsbGFzIFNlbWljb25kdWN0b3IgKG5vdyBNYXhpbSkgRFM3NSwgRFMxNzc1LCBEUzc1MDUKKyAgICBQcmVmaXhlczogJ2RzNzUnLCAnZHMxNzc1JywgJ2RzNzUwNScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBNYXhpbSB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3Lm1heGltaW50ZWdyYXRlZC5jb20vCisgICogTWF4aW0gTUFYNjYyNSwgTUFYNjYyNgorICAgIFByZWZpeGVzOiAnbWF4NjYyNScsICdtYXg2NjI2JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBub25lCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIE1heGltIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubWF4aW0taWMuY29tLworICAqIE1pY3JvY2hpcCAoVGVsQ29tKSBUQ043NQorICAgIFByZWZpeDogJ3Rjbjc1JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBub25lCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIE1pY3JvY2hpcCB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3Lm1pY3JvY2hpcC5jb20vCisgICogTWljcm9jaGlwIE1DUDk4MDAsIE1DUDk4MDEsIE1DUDk4MDIsIE1DUDk4MDMKKyAgICBQcmVmaXg6ICdtY3A5ODB4JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBub25lCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIE1pY3JvY2hpcCB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3Lm1pY3JvY2hpcC5jb20vCisgICogQW5hbG9nIERldmljZXMgQURUNzUKKyAgICBQcmVmaXg6ICdhZHQ3NScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBBbmFsb2cgRGV2aWNlcyB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFuYWxvZy5jb20vYWR0NzUKKyAgKiBTVCBNaWNyb2VsZWN0cm9uaWNzIFNURFM3NQorICAgIFByZWZpeDogJ3N0ZHM3NScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBTVCB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3LnN0LmNvbS9pbnRlcm5ldC9hbmFsb2cvcHJvZHVjdC8xMjE3NjkuanNwCisgICogVGV4YXMgSW5zdHJ1bWVudHMgVE1QMTAwLCBUTVAxMDEsIFRNUDEwNSwgVE1QMTEyLCBUTVA3NSwgVE1QNzVDLCBUTVAxNzUsIFRNUDI3NQorICAgIFByZWZpeGVzOiAndG1wMTAwJywgJ3RtcDEwMScsICd0bXAxMDUnLCAndG1wMTEyJywgJ3RtcDE3NScsICd0bXA3NScsICd0bXA3NWMnLCAndG1wMjc1JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBub25lCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIFRleGFzIEluc3RydW1lbnRzIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cudGkuY29tL3Byb2R1Y3QvdG1wMTAwCisgICAgICAgICAgICAgICBodHRwOi8vd3d3LnRpLmNvbS9wcm9kdWN0L3RtcDEwMQorICAgICAgICAgICAgICAgaHR0cDovL3d3dy50aS5jb20vcHJvZHVjdC90bXAxMDUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cudGkuY29tL3Byb2R1Y3QvdG1wMTEyCisgICAgICAgICAgICAgICBodHRwOi8vd3d3LnRpLmNvbS9wcm9kdWN0L3RtcDc1CisgICAgICAgICAgICAgICBodHRwOi8vd3d3LnRpLmNvbS9wcm9kdWN0L3RtcDc1YworICAgICAgICAgICAgICAgaHR0cDovL3d3dy50aS5jb20vcHJvZHVjdC90bXAxNzUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cudGkuY29tL3Byb2R1Y3QvdG1wMjc1CisgICogTlhQIExNNzVCCisgICAgUHJlZml4OiAnbG03NWInCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IG5vbmUKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgTlhQIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubnhwLmNvbS9kb2N1bWVudHMvZGF0YV9zaGVldC9MTTc1Qi5wZGYKKworQXV0aG9yOiBGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGUgTE03NSBpbXBsZW1lbnRzIG9uZSB0ZW1wZXJhdHVyZSBzZW5zb3IuIExpbWl0cyBjYW4gYmUgc2V0IHRocm91Z2ggdGhlCitPdmVydGVtcGVyYXR1cmUgU2h1dGRvd24gcmVnaXN0ZXIgYW5kIEh5c3RlcmVzaXMgcmVnaXN0ZXIuIEVhY2ggdmFsdWUgY2FuIGJlCitzZXQgYW5kIHJlYWQgdG8gaGFsZi1kZWdyZWUgYWNjdXJhY3kuCitBbiBhbGFybSBpcyBpc3N1ZWQgKHVzdWFsbHkgdG8gYSBjb25uZWN0ZWQgTE03OCkgd2hlbiB0aGUgdGVtcGVyYXR1cmUKK2dldHMgaGlnaGVyIHRoZW4gdGhlIE92ZXJ0ZW1wZXJhdHVyZSBTaHV0ZG93biB2YWx1ZTsgaXQgc3RheXMgb24gdW50aWwKK3RoZSB0ZW1wZXJhdHVyZSBmYWxscyBiZWxvdyB0aGUgSHlzdGVyZXNpcyB2YWx1ZS4KK0FsbCB0ZW1wZXJhdHVyZXMgYXJlIGluIGRlZ3JlZXMgQ2Vsc2l1cywgYW5kIGFyZSBndWFyYW50ZWVkIHdpdGhpbiBhCityYW5nZSBvZiAtNTUgdG8gKzEyNSBkZWdyZWVzLgorCitUaGUgZHJpdmVyIGNhY2hlcyB0aGUgdmFsdWVzIGZvciBhIHBlcmlvZCB2YXJ5aW5nIGJldHdlZW4gMSBzZWNvbmQgZm9yIHRoZQorc2xvd2VzdCBjaGlwcyBhbmQgMTI1IG1zIGZvciB0aGUgZmFzdGVzdCBjaGlwczsgcmVhZGluZyBpdCBtb3JlIG9mdGVuCit3aWxsIGRvIG5vIGhhcm0sIGJ1dCB3aWxsIHJldHVybiAnb2xkJyB2YWx1ZXMuCisKK1RoZSBvcmlnaW5hbCBMTTc1IHdhcyB0eXBpY2FsbHkgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIExNNzgtbGlrZSBjaGlwcworb24gUEMgbW90aGVyYm9hcmRzLCB0byBtZWFzdXJlIHRoZSB0ZW1wZXJhdHVyZSBvZiB0aGUgcHJvY2Vzc29yKHMpLiBDbG9uZXMKK2FyZSBub3cgdXNlZCBpbiB2YXJpb3VzIGVtYmVkZGVkIGRlc2lnbnMuCisKK1RoZSBMTTc1IGlzIGVzc2VudGlhbGx5IGFuIGluZHVzdHJ5IHN0YW5kYXJkOyB0aGVyZSBtYXkgYmUgb3RoZXIKK0xNNzUgY2xvbmVzIG5vdCBsaXN0ZWQgaGVyZSwgd2l0aCBvciB3aXRob3V0IHZhcmlvdXMgZW5oYW5jZW1lbnRzLAordGhhdCBhcmUgc3VwcG9ydGVkLiBUaGUgY2xvbmVzIGFyZSBub3QgZGV0ZWN0ZWQgYnkgdGhlIGRyaXZlciwgdW5sZXNzCit0aGV5IHJlcHJvZHVjZSB0aGUgZXhhY3QgcmVnaXN0ZXIgdHJpY2tzIG9mIHRoZSBvcmlnaW5hbCBMTTc1LCBhbmQgbXVzdAordGhlcmVmb3JlIGJlIGluc3RhbnRpYXRlZCBleHBsaWNpdGx5LiBIaWdoZXIgcmVzb2x1dGlvbiB1cCB0byAxMi1iaXQKK2lzIHN1cHBvcnRlZCBieSB0aGlzIGRyaXZlciwgb3RoZXIgc3BlY2lmaWMgZW5oYW5jZW1lbnRzIGFyZSBub3QuCisKK1RoZSBMTTc3IGlzIG5vdCBzdXBwb3J0ZWQsIGNvbnRyYXJ5IHRvIHdoYXQgd2UgcHJldGVuZGVkIGZvciBhIGxvbmcgdGltZS4KK0JvdGggY2hpcHMgYXJlIHNpbXBseSBub3QgY29tcGF0aWJsZSwgdmFsdWUgZW5jb2RpbmcgZGlmZmVycy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vbG03NyBiL0RvY3VtZW50YXRpb24vaHdtb24vbG03NwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZmM5MTVmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9sbTc3CkBAIC0wLDAgKzEsMzggQEAKK0tlcm5lbCBkcml2ZXIgbG03NworPT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBOYXRpb25hbCBTZW1pY29uZHVjdG9yIExNNzcKKyAgICBQcmVmaXg6ICdsbTc3JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHg0OCAtIDB4NGIKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3Lm5hdGlvbmFsLmNvbS8KKworQXV0aG9yOiBBbmRyYXMgQkFMSSA8ZHJld2llQGZyZWVtYWlsLmh1PgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIExNNzcgaW1wbGVtZW50cyBvbmUgdGVtcGVyYXR1cmUgc2Vuc29yLiBUaGUgdGVtcGVyYXR1cmUKK3NlbnNvciBpbmNvcnBvcmF0ZXMgYSBiYW5kLWdhcCB0eXBlIHRlbXBlcmF0dXJlIHNlbnNvciwKKzEwLWJpdCBBREMsIGFuZCBhIGRpZ2l0YWwgY29tcGFyYXRvciB3aXRoIHVzZXItcHJvZ3JhbW1hYmxlIHVwcGVyCithbmQgbG93ZXIgbGltaXQgdmFsdWVzLgorCitUaGUgTE03NyBpbXBsZW1lbnRzIDMgbGltaXRzOiBsb3cgKHRlbXAxX21pbiksIGhpZ2ggKHRlbXAxX21heCkgYW5kCitjcml0aWNhbCAodGVtcDFfY3JpdC4pIEl0IGFsc28gaW1wbGVtZW50cyBhbiBoeXN0ZXJlc2lzIG1lY2hhbmlzbSB3aGljaAorYXBwbGllcyB0byBhbGwgMyBsaW1pdHMuIFRoZSByZWxhdGl2ZSBkaWZmZXJlbmNlIGlzIHN0b3JlZCBpbiBhIHNpbmdsZQorcmVnaXN0ZXIgb24gdGhlIGNoaXAsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIHJlbGF0aXZlIGRpZmZlcmVuY2UgYmV0d2VlbgordGhlIGxpbWl0IGFuZCBpdHMgaHlzdGVyZXNpcyBpcyBhbHdheXMgdGhlIHNhbWUgZm9yIGFsbCAzIGxpbWl0cy4KKworVGhpcyBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgaW1wbGllcyB0aGUgZm9sbG93aW5nOgorKiBXaGVuIHNldHRpbmcgYSBsaW1pdCwgaXRzIGh5c3RlcmVzaXMgd2lsbCBhdXRvbWF0aWNhbGx5IGZvbGxvdywgdGhlCisgIGRpZmZlcmVuY2Ugc3RheWluZyB1bmNoYW5nZWQuIEZvciBleGFtcGxlLCBpZiB0aGUgb2xkIGNyaXRpY2FsIGxpbWl0CisgIHdhcyA4MCBkZWdyZWVzIEMsIGFuZCB0aGUgaHlzdGVyZXNpcyB3YXMgNzUgZGVncmVlcyBDLCBhbmQgeW91IGNoYW5nZQorICB0aGUgY3JpdGljYWwgbGltaXQgdG8gOTAgZGVncmVlcyBDLCB0aGVuIHRoZSBoeXN0ZXJlc2lzIHdpbGwKKyAgYXV0b21hdGljYWxseSBjaGFuZ2UgdG8gODUgZGVncmVlcyBDLgorKiBBbGwgMyBoeXN0ZXJlc2lzIGNhbid0IGJlIHNldCBpbmRlcGVuZGVudGx5LiBXZSBkZWNpZGVkIHRvIG1ha2UKKyAgdGVtcDFfY3JpdF9oeXN0IHdyaXRhYmxlLCB3aGlsZSB0ZW1wMV9taW5faHlzdCBhbmQgdGVtcDFfbWF4X2h5c3QgYXJlCisgIHJlYWQtb25seS4gU2V0dGluZyB0ZW1wMV9jcml0X2h5c3Qgd3JpdGVzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4KKyAgdGVtcDFfY3JpdF9oeXN0IGFuZCB0ZW1wMV9jcml0IGludG8gdGhlIGNoaXAsIGFuZCB0aGUgc2FtZSByZWxhdGl2ZQorICBoeXN0ZXJlc2lzIGFwcGxpZXMgYXV0b21hdGljYWxseSB0byB0aGUgbG93IGFuZCBoaWdoIGxpbWl0cy4KKyogVGhlIGxpbWl0cyBzaG91bGQgYmUgc2V0IGJlZm9yZSB0aGUgaHlzdGVyZXNpcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vbG03OCBiL0RvY3VtZW50YXRpb24vaHdtb24vbG03OApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGQ0NzczCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9sbTc4CkBAIC0wLDAgKzEsNjggQEAKK0tlcm5lbCBkcml2ZXIgbG03OAorPT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBOYXRpb25hbCBTZW1pY29uZHVjdG9yIExNNzggLyBMTTc4LUoKKyAgICBQcmVmaXg6ICdsbTc4JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgyOCAtIDB4MmYsIElTQSAweDI5MCAoOCBJL08gcG9ydHMpCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3Igd2Vic2l0ZQorICAgICAgICAgICAgICAgaHR0cDovL3d3dy5uYXRpb25hbC5jb20vCisgICogTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBMTTc5CisgICAgUHJlZml4OiAnbG03OScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MjggLSAweDJmLCBJU0EgMHgyOTAgKDggSS9PIHBvcnRzKQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubmF0aW9uYWwuY29tLworCitBdXRob3JzOiBGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+CisgICAgICAgICBKZWFuIERlbHZhcmUgPGpkZWx2YXJlQHN1c2UuZGU+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIExNNzgsIExNNzgtSgorYW5kIExNNzkuIFRoZXkgYXJlIGRlc2NyaWJlZCBhcyAnTWljcm9wcm9jZXNzb3IgU3lzdGVtIEhhcmR3YXJlIE1vbml0b3JzJy4KKworVGhlcmUgaXMgYWxtb3N0IG5vIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdGhyZWUgc3VwcG9ydGVkIGNoaXBzLiBGdW5jdGlvbmFsbHksCit0aGUgTE03OCBhbmQgTE03OC1KIGFyZSBleGFjdGx5IGlkZW50aWNhbC4gVGhlIExNNzkgaGFzIG9uZSBtb3JlIFZJRCBsaW5lLAord2hpY2ggaXMgdXNlZCB0byByZXBvcnQgdGhlIGxvd2VyIHZvbHRhZ2VzIG5ld2VyIFBlbnRpdW0gcHJvY2Vzc29ycyB1c2UuCitGcm9tIGhlcmUgb24sIExNNyogbWVhbnMgZWl0aGVyIG9mIHRoZXNlIHRocmVlIHR5cGVzLgorCitUaGUgTE03KiBpbXBsZW1lbnRzIG9uZSB0ZW1wZXJhdHVyZSBzZW5zb3IsIHRocmVlIGZhbiByb3RhdGlvbiBzcGVlZCBzZW5zb3JzLAorc2V2ZW4gdm9sdGFnZSBzZW5zb3JzLCBWSUQgbGluZXMsIGFsYXJtcywgYW5kIHNvbWUgbWlzY2VsbGFuZW91cyBzdHVmZi4KKworVGVtcGVyYXR1cmVzIGFyZSBtZWFzdXJlZCBpbiBkZWdyZWVzIENlbHNpdXMuIEFuIGFsYXJtIGlzIHRyaWdnZXJlZCBvbmNlCit3aGVuIHRoZSBPdmVydGVtcGVyYXR1cmUgU2h1dGRvd24gbGltaXQgaXMgY3Jvc3NlZDsgaXQgaXMgdHJpZ2dlcmVkIGFnYWluCithcyBzb29uIGFzIGl0IGRyb3BzIGJlbG93IHRoZSBIeXN0ZXJlc2lzIHZhbHVlLiBBIG1vcmUgdXNlZnVsIGJlaGF2aW9yCitjYW4gYmUgZm91bmQgYnkgc2V0dGluZyB0aGUgSHlzdGVyZXNpcyB2YWx1ZSB0byArMTI3IGRlZ3JlZXMgQ2Vsc2l1czsgaW4KK3RoaXMgY2FzZSwgYWxhcm1zIGFyZSBpc3N1ZWQgZHVyaW5nIGFsbCB0aGUgdGltZSB3aGVuIHRoZSBhY3R1YWwgdGVtcGVyYXR1cmUKK2lzIGFib3ZlIHRoZSBPdmVydGVtcGVyYXR1cmUgU2h1dGRvd24gdmFsdWUuIE1lYXN1cmVtZW50cyBhcmUgZ3VhcmFudGVlZAorYmV0d2VlbiAtNTUgYW5kICsxMjUgZGVncmVlcywgd2l0aCBhIHJlc29sdXRpb24gb2YgMSBkZWdyZWUuCisKK0ZhbiByb3RhdGlvbiBzcGVlZHMgYXJlIHJlcG9ydGVkIGluIFJQTSAocm90YXRpb25zIHBlciBtaW51dGUpLiBBbiBhbGFybSBpcwordHJpZ2dlcmVkIGlmIHRoZSByb3RhdGlvbiBzcGVlZCBoYXMgZHJvcHBlZCBiZWxvdyBhIHByb2dyYW1tYWJsZSBsaW1pdC4gRmFuCityZWFkaW5ncyBjYW4gYmUgZGl2aWRlZCBieSBhIHByb2dyYW1tYWJsZSBkaXZpZGVyICgxLCAyLCA0IG9yIDgpIHRvIGdpdmUKK3RoZSByZWFkaW5ncyBtb3JlIHJhbmdlIG9yIGFjY3VyYWN5LiBOb3QgYWxsIFJQTSB2YWx1ZXMgY2FuIGFjY3VyYXRlbHkgYmUKK3JlcHJlc2VudGVkLCBzbyBzb21lIHJvdW5kaW5nIGlzIGRvbmUuIFdpdGggYSBkaXZpZGVyIG9mIDIsIHRoZSBsb3dlc3QKK3JlcHJlc2VudGFibGUgdmFsdWUgaXMgYXJvdW5kIDI2MDAgUlBNLgorCitWb2x0YWdlIHNlbnNvcnMgKGFsc28ga25vd24gYXMgSU4gc2Vuc29ycykgcmVwb3J0IHRoZWlyIHZhbHVlcyBpbiB2b2x0cy4KK0FuIGFsYXJtIGlzIHRyaWdnZXJlZCBpZiB0aGUgdm9sdGFnZSBoYXMgY3Jvc3NlZCBhIHByb2dyYW1tYWJsZSBtaW5pbXVtCitvciBtYXhpbXVtIGxpbWl0LiBOb3RlIHRoYXQgbWluaW11bSBpbiB0aGlzIGNhc2UgYWx3YXlzIG1lYW5zICdjbG9zZXN0IHRvCit6ZXJvJzsgdGhpcyBpcyBpbXBvcnRhbnQgZm9yIG5lZ2F0aXZlIHZvbHRhZ2UgbWVhc3VyZW1lbnRzLiBBbGwgdm9sdGFnZQoraW5wdXRzIGNhbiBtZWFzdXJlIHZvbHRhZ2VzIGJldHdlZW4gMCBhbmQgNC4wOCB2b2x0cywgd2l0aCBhIHJlc29sdXRpb24KK29mIDAuMDE2IHZvbHQuCisKK1RoZSBWSUQgbGluZXMgZW5jb2RlIHRoZSBjb3JlIHZvbHRhZ2UgdmFsdWU6IHRoZSB2b2x0YWdlIGxldmVsIHlvdXIgcHJvY2Vzc29yCitzaG91bGQgd29yayB3aXRoLiBUaGlzIGlzIGhhcmRjb2RlZCBieSB0aGUgbWFpbmJvYXJkIGFuZC9vciBwcm9jZXNzb3IgaXRzZWxmLgorSXQgaXMgYSB2YWx1ZSBpbiB2b2x0cy4gV2hlbiBpdCBpcyB1bmNvbm5lY3RlZCwgeW91IHdpbGwgb2Z0ZW4gZmluZCB0aGUKK3ZhbHVlIDMuNTAgViBoZXJlLgorCitJZiBhbiBhbGFybSB0cmlnZ2VycywgaXQgd2lsbCByZW1haW4gdHJpZ2dlcmVkIHVudGlsIHRoZSBoYXJkd2FyZSByZWdpc3RlcgoraXMgcmVhZCBhdCBsZWFzdCBvbmNlLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGNhdXNlIGZvciB0aGUgYWxhcm0gbWF5CithbHJlYWR5IGhhdmUgZGlzYXBwZWFyZWQhIE5vdGUgdGhhdCBpbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgYWxsCitoYXJkd2FyZSByZWdpc3RlcnMgYXJlIHJlYWQgd2hlbmV2ZXIgYW55IGRhdGEgaXMgcmVhZCAodW5sZXNzIGl0IGlzIGxlc3MKK3RoYW4gMS41IHNlY29uZHMgc2luY2UgdGhlIGxhc3QgdXBkYXRlKS4gVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4gZWFzaWx5CittaXNzIG9uY2Utb25seSBhbGFybXMuCisKK1RoZSBMTTcqIG9ubHkgdXBkYXRlcyBpdHMgdmFsdWVzIGVhY2ggMS41IHNlY29uZHM7IHJlYWRpbmcgaXQgbW9yZSBvZnRlbgord2lsbCBkbyBubyBoYXJtLCBidXQgd2lsbCByZXR1cm4gJ29sZCcgdmFsdWVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9sbTgwIGIvRG9jdW1lbnRhdGlvbi9od21vbi9sbTgwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2MGI0M2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2xtODAKQEAgLTAsMCArMSw2MyBAQAorS2VybmVsIGRyaXZlciBsbTgwCis9PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgTE04MAorICAgIFByZWZpeDogJ2xtODAnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDI4IC0gMHgyZgorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubmF0aW9uYWwuY29tLworICAqIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgTE05NjA4MAorICAgIFByZWZpeDogJ2xtOTYwODAnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDI4IC0gMHgyZgorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubmF0aW9uYWwuY29tLworCitBdXRob3JzOgorICAgICAgICBGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+LAorICAgICAgICBQaGlsaXAgRWRlbGJyb2NrIDxwaGlsQG5ldHJvZWRnZS5jb20+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIExNODAuCitJdCBpcyBkZXNjcmliZWQgYXMgYSAnU2VyaWFsIEludGVyZmFjZSBBQ1BJLUNvbXBhdGlibGUgTWljcm9wcm9jZXNzb3IKK1N5c3RlbSBIYXJkd2FyZSBNb25pdG9yJy4gVGhlIExNOTYwODAgaXMgYSBtb3JlIHJlY2VudCBpbmNhcm5hdGlvbiwKK2l0IGlzIHBpbiBhbmQgcmVnaXN0ZXIgY29tcGF0aWJsZSwgd2l0aCBhIGZldyBhZGRpdGlvbmFsIGZlYXR1cmVzIG5vdAoreWV0IHN1cHBvcnRlZCBieSB0aGUgZHJpdmVyLgorCitUaGUgTE04MCBpbXBsZW1lbnRzIG9uZSB0ZW1wZXJhdHVyZSBzZW5zb3IsIHR3byBmYW4gcm90YXRpb24gc3BlZWQgc2Vuc29ycywKK3NldmVuIHZvbHRhZ2Ugc2Vuc29ycywgYWxhcm1zLCBhbmQgc29tZSBtaXNjZWxsYW5lb3VzIHN0dWZmLgorCitUZW1wZXJhdHVyZXMgYXJlIG1lYXN1cmVkIGluIGRlZ3JlZXMgQ2Vsc2l1cy4gVGhlcmUgYXJlIHR3byBzZXRzIG9mIGxpbWl0cword2hpY2ggb3BlcmF0ZSBpbmRlcGVuZGVudGx5LiBXaGVuIHRoZSBIT1QgVGVtcGVyYXR1cmUgTGltaXQgaXMgY3Jvc3NlZCwKK3RoaXMgd2lsbCBjYXVzZSBhbiBhbGFybSB0aGF0IHdpbGwgYmUgcmVhc3NlcnRlZCB1bnRpbCB0aGUgdGVtcGVyYXR1cmUKK2Ryb3BzIGJlbG93IHRoZSBIT1QgSHlzdGVyZXNpcy4gVGhlIE92ZXJ0ZW1wZXJhdHVyZSBTaHV0ZG93biAoT1MpIGxpbWl0cworc2hvdWxkIHdvcmsgaW4gdGhlIHNhbWUgd2F5IChidXQgdGhpcyBtdXN0IGJlIGNoZWNrZWQ7IHRoZSBkYXRhc2hlZXQKK2lzIHVuY2xlYXIgYWJvdXQgdGhpcykuIE1lYXN1cmVtZW50cyBhcmUgZ3VhcmFudGVlZCBiZXR3ZWVuIC01NSBhbmQKKysxMjUgZGVncmVlcy4gVGhlIGN1cnJlbnQgdGVtcGVyYXR1cmUgbWVhc3VyZW1lbnQgaGFzIGEgcmVzb2x1dGlvbiBvZgorMC4wNjI1IGRlZ3JlZXM7IHRoZSBsaW1pdHMgaGF2ZSBhIHJlc29sdXRpb24gb2YgMSBkZWdyZWUuCisKK0ZhbiByb3RhdGlvbiBzcGVlZHMgYXJlIHJlcG9ydGVkIGluIFJQTSAocm90YXRpb25zIHBlciBtaW51dGUpLiBBbiBhbGFybSBpcwordHJpZ2dlcmVkIGlmIHRoZSByb3RhdGlvbiBzcGVlZCBoYXMgZHJvcHBlZCBiZWxvdyBhIHByb2dyYW1tYWJsZSBsaW1pdC4gRmFuCityZWFkaW5ncyBjYW4gYmUgZGl2aWRlZCBieSBhIHByb2dyYW1tYWJsZSBkaXZpZGVyICgxLCAyLCA0IG9yIDgpIHRvIGdpdmUKK3RoZSByZWFkaW5ncyBtb3JlIHJhbmdlIG9yIGFjY3VyYWN5LiBOb3QgYWxsIFJQTSB2YWx1ZXMgY2FuIGFjY3VyYXRlbHkgYmUKK3JlcHJlc2VudGVkLCBzbyBzb21lIHJvdW5kaW5nIGlzIGRvbmUuIFdpdGggYSBkaXZpZGVyIG9mIDIsIHRoZSBsb3dlc3QKK3JlcHJlc2VudGFibGUgdmFsdWUgaXMgYXJvdW5kIDI2MDAgUlBNLgorCitWb2x0YWdlIHNlbnNvcnMgKGFsc28ga25vd24gYXMgSU4gc2Vuc29ycykgcmVwb3J0IHRoZWlyIHZhbHVlcyBpbiB2b2x0cy4KK0FuIGFsYXJtIGlzIHRyaWdnZXJlZCBpZiB0aGUgdm9sdGFnZSBoYXMgY3Jvc3NlZCBhIHByb2dyYW1tYWJsZSBtaW5pbXVtCitvciBtYXhpbXVtIGxpbWl0LiBOb3RlIHRoYXQgbWluaW11bSBpbiB0aGlzIGNhc2UgYWx3YXlzIG1lYW5zICdjbG9zZXN0IHRvCit6ZXJvJzsgdGhpcyBpcyBpbXBvcnRhbnQgZm9yIG5lZ2F0aXZlIHZvbHRhZ2UgbWVhc3VyZW1lbnRzLiBBbGwgdm9sdGFnZQoraW5wdXRzIGNhbiBtZWFzdXJlIHZvbHRhZ2VzIGJldHdlZW4gMCBhbmQgMi41NSB2b2x0cywgd2l0aCBhIHJlc29sdXRpb24KK29mIDAuMDEgdm9sdC4KKworSWYgYW4gYWxhcm0gdHJpZ2dlcnMsIGl0IHdpbGwgcmVtYWluIHRyaWdnZXJlZCB1bnRpbCB0aGUgaGFyZHdhcmUgcmVnaXN0ZXIKK2lzIHJlYWQgYXQgbGVhc3Qgb25jZS4gVGhpcyBtZWFucyB0aGF0IHRoZSBjYXVzZSBmb3IgdGhlIGFsYXJtIG1heQorYWxyZWFkeSBoYXZlIGRpc2FwcGVhcmVkISBOb3RlIHRoYXQgaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIGFsbAoraGFyZHdhcmUgcmVnaXN0ZXJzIGFyZSByZWFkIHdoZW5ldmVyIGFueSBkYXRhIGlzIHJlYWQgKHVubGVzcyBpdCBpcyBsZXNzCit0aGFuIDIuMCBzZWNvbmRzIHNpbmNlIHRoZSBsYXN0IHVwZGF0ZSkuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIGVhc2lseQorbWlzcyBvbmNlLW9ubHkgYWxhcm1zLgorCitUaGUgTE04MCBvbmx5IHVwZGF0ZXMgaXRzIHZhbHVlcyBlYWNoIDEuNSBzZWNvbmRzOyByZWFkaW5nIGl0IG1vcmUgb2Z0ZW4KK3dpbGwgZG8gbm8gaGFybSwgYnV0IHdpbGwgcmV0dXJuICdvbGQnIHZhbHVlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vbG04MyBiL0RvY3VtZW50YXRpb24vaHdtb24vbG04MwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGJlNWNiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9sbTgzCkBAIC0wLDAgKzEsODUgQEAKK0tlcm5lbCBkcml2ZXIgbG04MworPT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBOYXRpb25hbCBTZW1pY29uZHVjdG9yIExNODMKKyAgICBQcmVmaXg6ICdsbTgzJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgxOCAtIDB4MWEsIDB4MjkgLSAweDJiLCAweDRjIC0gMHg0ZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubmF0aW9uYWwuY29tL3BmL0xNL0xNODMuaHRtbAorICAqIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgTE04MgorICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgxOCAtIDB4MWEsIDB4MjkgLSAweDJiLCAweDRjIC0gMHg0ZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubmF0aW9uYWwuY29tL3BmL0xNL0xNODIuaHRtbAorCisKK0F1dGhvcjogSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmRlPgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIExNODMgaXMgYSBkaWdpdGFsIHRlbXBlcmF0dXJlIHNlbnNvci4gSXQgc2Vuc2VzIGl0cyBvd24gdGVtcGVyYXR1cmUgYXMKK3dlbGwgYXMgdGhlIHRlbXBlcmF0dXJlIG9mIHVwIHRvIHRocmVlIGV4dGVybmFsIGRpb2Rlcy4gVGhlIExNODIgaXMKK2Egc3RyaXBwZWQgZG93biB2ZXJzaW9uIG9mIHRoZSBMTTgzIHRoYXQgb25seSBzdXBwb3J0cyBvbmUgZXh0ZXJuYWwgZGlvZGUuCitCb3RoIGFyZSBjb21wYXRpYmxlIHdpdGggbWFueSBvdGhlciBkZXZpY2VzIHN1Y2ggYXMgdGhlIExNODQgYW5kIGFsbAorb3RoZXIgQURNMTAyMSBjbG9uZXMuIFRoZSBtYWluIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgTE04MyBhbmQgdGhlIExNODQKK2luIHRoYXQgdGhlIGxhdGVyIGNhbiBvbmx5IHNlbnNlIHRoZSB0ZW1wZXJhdHVyZSBvZiBvbmUgZXh0ZXJuYWwgZGlvZGUuCisKK1VzaW5nIHRoZSBhZG0xMDIxIGRyaXZlciBmb3IgYSBMTTgzIHNob3VsZCB3b3JrLCBidXQgb25seSB0d28gdGVtcGVyYXR1cmVzCit3aWxsIGJlIHJlcG9ydGVkIGluc3RlYWQgb2YgZm91ci4KKworVGhlIExNODMgaXMgb25seSBmb3VuZCBvbiBhIGhhbmRmdWwgb2YgbW90aGVyYm9hcmRzLiBCb3RoIGEgY29uZmlybWVkCitsaXN0IGFuZCBhbiB1bmNvbmZpcm1lZCBsaXN0IGZvbGxvdy4gSWYgeW91IGNhbiBjb25maXJtIG9yIGluZmlybSB0aGUKK2ZhY3QgdGhhdCBhbnkgb2YgdGhlc2UgbW90aGVyYm9hcmRzIGRvIGFjdHVhbGx5IGhhdmUgYW4gTE04MywgcGxlYXNlCitjb250YWN0IHVzLiBOb3RlIHRoYXQgdGhlIExNOTAgY2FuIGVhc2lseSBiZSBtaXNkZXRlY3RlZCBhcyBhIExNODMuCisKK0NvbmZpcm1lZCBtb3RoZXJib2FyZHM6CisgICAgU0JTICAgICAgICAgUDAxNAorICAgIFNCUyAgICAgICAgIFBTTDA5CisKK1VuY29uZmlybWVkIG1vdGhlcmJvYXJkczoKKyAgICBHaWdhYnl0ZSAgICBHQS04SUsxMTAwCisgICAgSXdpbGwgICAgICAgTVBYMgorICAgIFNvbHRlayAgICAgIFNMLTc1RFJWNQorCitUaGUgTE04MiBpcyBjb25maXJtZWQgdG8gaGF2ZSBiZWVuIGZvdW5kIG9uIG1vc3QgQU1EIEdlb2RlIHJlZmVyZW5jZQorZGVzaWducyBhbmQgdGVzdCBwbGF0Zm9ybXMuCisKK1RoZSBkcml2ZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHRlc3RlZCBieSBNYWdudXMgRm9yc3N0csO2bSwgd2hvIEknZAorbGlrZSB0byB0aGFuayBoZXJlLiBNb3JlIHRlc3RlcnMgd2lsbCBiZSBvZiBjb3Vyc2Ugd2VsY29tZS4KKworVGhlIGZhY3QgdGhhdCB0aGUgTE04MyBpcyBvbmx5IHNjYXJjZWx5IHVzZWQgY2FuIGJlIGVhc2lseSBleHBsYWluZWQuCitNb3N0IG1vdGhlcmJvYXJkcyBjb21lIHdpdGggbW9yZSB0aGFuIGp1c3QgdGVtcGVyYXR1cmUgc2Vuc29ycyBmb3IKK2hlYWx0aCBtb25pdG9yaW5nLiBUaGV5IGFsc28gaGF2ZSB2b2x0YWdlIGFuZCBmYW4gcm90YXRpb24gc3BlZWQKK3NlbnNvcnMuIFRoaXMgbWVhbnMgdGhhdCB0ZW1wZXJhdHVyZS1vbmx5IGNoaXBzIGFyZSB1c3VhbGx5IHVzZWQgYXMKK3NlY29uZGFyeSBjaGlwcyBjb3VwbGVkIHdpdGggYW5vdGhlciBjaGlwIHN1Y2ggYXMgYW4gSVQ4NzA1RiBvciBzaW1pbGFyCitjaGlwLCB3aGljaCBwcm92aWRlcyBtb3JlIGZlYXR1cmVzLiBTaW5jZSBzeXN0ZW1zIHVzdWFsbHkgbmVlZCB0aHJlZQordGVtcGVyYXR1cmUgc2Vuc29ycyAobW90aGVyYm9hcmQsIHByb2Nlc3NvciwgcG93ZXIgc3VwcGx5KSBhbmQgcHJpbWFyeQorY2hpcHMgcHJvdmlkZSBzb21lIHRlbXBlcmF0dXJlIHNlbnNvcnMsIHRoZSBzZWNvbmRhcnkgY2hpcCwgaWYgbmVlZGVkLAord29uJ3QgaGF2ZSB0byBoYW5kbGUgbW9yZSB0aGFuIHR3byB0ZW1wZXJhdHVyZXMuIFRodXMsIEFETTEwMjEgY2xvbmVzCithcmUgc3VmZmljaWVudCwgYW5kIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGEgZm91ciB0ZW1wZXJhdHVyZXMgc2Vuc29yCitjaGlwIHN1Y2ggYXMgdGhlIExNODMuIFRoZSBvbmx5IGNhc2Ugd2hlcmUgdXNpbmcgYW4gTE04MyB3b3VsZCBtYWtlCitzZW5zZSBpcyBvbiBTTVAgc3lzdGVtcywgc3VjaCBhcyB0aGUgYWJvdmUtbWVudGlvbmVkIEl3aWxsIE1QWDIsCitiZWNhdXNlIHlvdSB3YW50IGFuIGFkZGl0aW9uYWwgdGVtcGVyYXR1cmUgc2Vuc29yIGZvciBlYWNoIGFkZGl0aW9uYWwKK0NQVS4KKworT24gdGhlIFNCUyBQMDE0LCB0aGlzIGlzIGRpZmZlcmVudCwgc2luY2UgdGhlIExNODMgaXMgdGhlIG9ubHkgaGFyZHdhcmUKK21vbml0b3JpbmcgY2hpcHNldC4gT25lIHRlbXBlcmF0dXJlIHNlbnNvciBpcyB1c2VkIGZvciB0aGUgbW90aGVyYm9hcmQKKyhhY3R1YWxseSBtZWFzdXJpbmcgdGhlIExNODMncyBvd24gdGVtcGVyYXR1cmUpLCBvbmUgaXMgdXNlZCBmb3IgdGhlCitDUFUuIFRoZSB0d28gb3RoZXIgc2Vuc29ycyBtdXN0IGJlIHVzZWQgdG8gbWVhc3VyZSB0aGUgdGVtcGVyYXR1cmUgb2YKK3R3byBvdGhlciBwb2ludHMgb2YgdGhlIG1vdGhlcmJvYXJkLiBXZSBzdXNwZWN0IHRoZXNlIHBvaW50cyB0byBiZSB0aGUKK25vcnRoIGFuZCBzb3V0aCBicmlkZ2VzLCBidXQgdGhpcyBjb3VsZG4ndCBiZSBjb25maXJtZWQuCisKK0FsbCB0ZW1wZXJhdHVyZSB2YWx1ZXMgYXJlIGdpdmVuIGluIGRlZ3JlZXMgQ2Vsc2l1cy4gTG9jYWwgdGVtcGVyYXR1cmUKK2lzIGdpdmVuIHdpdGhpbiBhIHJhbmdlIG9mIDAgdG8gKzg1IGRlZ3JlZXMuIFJlbW90ZSB0ZW1wZXJhdHVyZXMgYXJlCitnaXZlbiB3aXRoaW4gYSByYW5nZSBvZiAwIHRvICsxMjUgZGVncmVlcy4gUmVzb2x1dGlvbiBpcyAxLjAgZGVncmVlLAorYWNjdXJhY3kgaXMgZ3VhcmFudGVlZCB0byAzLjAgZGVncmVlcyAoc2VlIHRoZSBkYXRhc2hlZXQgZm9yIG1vcmUKK2RldGFpbHMpLgorCitFYWNoIHNlbnNvciBoYXMgaXRzIG93biBoaWdoIGxpbWl0LCBidXQgdGhlIGNyaXRpY2FsIGxpbWl0IGlzIGNvbW1vbiB0bworYWxsIGZvdXIgc2Vuc29ycy4gVGhlcmUgaXMgbm8gaHlzdGVyZXNpcyBtZWNoYW5pc20gYXMgZm91bmQgb24gbW9zdAorcmVjZW50IHRlbXBlcmF0dXJlIHNlbnNvcnMuCisKK1RoZSBsbTgzIGRyaXZlciB3aWxsIG5vdCB1cGRhdGUgaXRzIHZhbHVlcyBtb3JlIGZyZXF1ZW50bHkgdGhhbiBldmVyeQorb3RoZXIgc2Vjb25kOyByZWFkaW5nIHRoZW0gbW9yZSBvZnRlbiB3aWxsIGRvIG5vIGhhcm0sIGJ1dCB3aWxsIHJldHVybgorJ29sZCcgdmFsdWVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9sbTg1IGIvRG9jdW1lbnRhdGlvbi9od21vbi9sbTg1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjNDlmZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2xtODUKQEAgLTAsMCArMSwyMzAgQEAKK0tlcm5lbCBkcml2ZXIgbG04NQorPT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBOYXRpb25hbCBTZW1pY29uZHVjdG9yIExNODUgKEIgYW5kIEMgdmVyc2lvbnMpCisgICAgUHJlZml4OiAnbG04NScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MmMsIDB4MmQsIDB4MmUKKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cubmF0aW9uYWwuY29tL3BmL0xNL0xNODUuaHRtbAorICAqIEFuYWxvZyBEZXZpY2VzIEFETTEwMjcKKyAgICBQcmVmaXg6ICdhZG0xMDI3JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgyYywgMHgyZCwgMHgyZQorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5vbnNlbWkuY29tL1Bvd2VyU29sdXRpb25zL3Byb2R1Y3QuZG8/aWQ9QURNMTAyNworICAqIEFuYWxvZyBEZXZpY2VzIEFEVDc0NjMKKyAgICBQcmVmaXg6ICdhZHQ3NDYzJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgyYywgMHgyZCwgMHgyZQorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5vbnNlbWkuY29tL1Bvd2VyU29sdXRpb25zL3Byb2R1Y3QuZG8/aWQ9QURUNzQ2MworICAqIEFuYWxvZyBEZXZpY2VzIEFEVDc0NjgKKyAgICBQcmVmaXg6ICdhZHQ3NDY4JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgyYywgMHgyZCwgMHgyZQorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5vbnNlbWkuY29tL1Bvd2VyU29sdXRpb25zL3Byb2R1Y3QuZG8/aWQ9QURUNzQ2OAorICAqIFNNU0MgRU1DNkQxMDAsIFNNU0MgRU1DNkQxMDEKKyAgICBQcmVmaXg6ICdlbWM2ZDEwMCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MmMsIDB4MmQsIDB4MmUKKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cuc21zYy5jb20vbWVkaWEvRG93bmxvYWRzX1B1YmxpYy9kaXNjb250aW51ZWQvNmQxMDAucGRmIAorICAqIFNNU0MgRU1DNkQxMDIKKyAgICBQcmVmaXg6ICdlbWM2ZDEwMicKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MmMsIDB4MmQsIDB4MmUKKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cuc21zYy5jb20vbWFpbi9jYXRhbG9nL2VtYzZkMTAyLmh0bWwKKyAgKiBTTVNDIEVNQzZEMTAzCisgICAgUHJlZml4OiAnZW1jNmQxMDMnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJjLCAweDJkLCAweDJlCisgICAgRGF0YXNoZWV0OiBodHRwOi8vd3d3LnNtc2MuY29tL21haW4vY2F0YWxvZy9lbWM2ZDEwMy5odG1sCisgICogU01TQyBFTUM2RDEwM1MKKyAgICBQcmVmaXg6ICdlbWM2ZDEwM3MnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJjLCAweDJkLCAweDJlCisgICAgRGF0YXNoZWV0OiBodHRwOi8vd3d3LnNtc2MuY29tL21haW4vY2F0YWxvZy9lbWM2ZDEwM3MuaHRtbAorCitBdXRob3JzOgorICAgICAgICBQaGlsaXAgUG9rb3JueSA8cHBva29ybnlAcGVuZ3VpbmNvbXB1dGluZy5jb20+LAorICAgICAgICBGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+LAorICAgICAgICBSaWNoYXJkIEJhcnJpbmd0b24gPHJpY2hfYl9uekBjbGVhci5uZXQubno+LAorICAgICAgICBNYXJnaXQgU2NodWJlcnQtV2hpbGUgPG1hcmdpdHN3QHQtb25saW5lLmRlPiwKKyAgICAgICAgSnVzdGluIFRoaWVzc2VuIDxqdGhpZXNzZW5AcGVuZ3VpbmNvbXB1dGluZy5jb20+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIExNODUgYW5kCitjb21wYXRpYmxlIGNoaXBzIGluY2x1ZGluZyB0aGUgQW5hbG9nIERldmljZXMgQURNMTAyNywgQURUNzQ2MywgQURUNzQ2OCBhbmQKK1NNU0MgRU1DNkQxMHggY2hpcHMgZmFtaWx5LgorCitUaGUgTE04NSB1c2VzIHRoZSAyLXdpcmUgaW50ZXJmYWNlIGNvbXBhdGlibGUgd2l0aCB0aGUgU01CVVMgMi4wCitzcGVjaWZpY2F0aW9uLiBVc2luZyBhbiBhbmFsb2cgdG8gZGlnaXRhbCBjb252ZXJ0ZXIgaXQgbWVhc3VyZXMgdGhyZWUgKDMpCit0ZW1wZXJhdHVyZXMgYW5kIGZpdmUgKDUpIHZvbHRhZ2VzLiBJdCBoYXMgZm91ciAoNCkgMTYtYml0IGNvdW50ZXJzIGZvcgorbWVhc3VyaW5nIGZhbiBzcGVlZC4gRml2ZSAoNSkgZGlnaXRhbCBpbnB1dHMgYXJlIHByb3ZpZGVkIGZvciBzYW1wbGluZyB0aGUKK1ZJRCBzaWduYWxzIGZyb20gdGhlIHByb2Nlc3NvciB0byB0aGUgVlJNLiBMYXN0bHksIHRoZXJlIGFyZSB0aHJlZSAoMykgUFdNCitvdXRwdXRzIHRoYXQgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBmYW4gc3BlZWQuCisKK1RoZSB2b2x0YWdlIGlucHV0cyBoYXZlIGludGVybmFsIHNjYWxpbmcgcmVzaXN0b3JzIHNvIHRoYXQgdGhlIGZvbGxvd2luZwordm9sdGFnZSBjYW4gYmUgbWVhc3VyZWQgd2l0aG91dCBleHRlcm5hbCByZXNpc3RvcnM6CisKKyAgMi41ViwgMy4zViwgNVYsIDEyViwgYW5kIENQVSBjb3JlIHZvbHRhZ2UgKDIuMjVWKQorCitUaGUgdGVtcGVyYXR1cmVzIG1lYXN1cmVkIGFyZSBvbmUgaW50ZXJuYWwgZGlvZGUsIGFuZCB0d28gcmVtb3RlIGRpb2Rlcy4KK1JlbW90ZSAxIGlzIGdlbmVyYWxseSB0aGUgQ1BVIHRlbXBlcmF0dXJlLiBUaGVzZSBpbnB1dHMgYXJlIGRlc2lnbmVkIHRvCittZWFzdXJlIGEgdGhlcm1hbCBkaW9kZSBsaWtlIHRoZSBvbmUgaW4gYSBQZW50aXVtIDQgcHJvY2Vzc29yIGluIGEgc29ja2V0Cis0MjMgb3Igc29ja2V0IDQ3OCBwYWNrYWdlLiBUaGV5IGNhbiBhbHNvIG1lYXN1cmUgdGVtcGVyYXR1cmUgdXNpbmcgYQordHJhbnNpc3RvciBsaWtlIHRoZSAyTjM5MDQuCisKK0Egc29waGlzdGljYXRlZCBjb250cm9sIHN5c3RlbSBmb3IgdGhlIFBXTSBvdXRwdXRzIGlzIGRlc2lnbmVkIGludG8gdGhlCitMTTg1IHRoYXQgYWxsb3dzIGZhbiBzcGVlZCB0byBiZSBhZGp1c3RlZCBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIGFueSBvZiB0aGUKK3RocmVlIHRlbXBlcmF0dXJlIHNlbnNvcnMuIEVhY2ggUFdNIG91dHB1dCBpcyBpbmRpdmlkdWFsbHkgYWRqdXN0YWJsZSBhbmQKK3Byb2dyYW1tYWJsZS4gT25jZSBjb25maWd1cmVkLCB0aGUgTE04NSB3aWxsIGFkanVzdCB0aGUgUFdNIG91dHB1dHMgaW4KK3Jlc3BvbnNlIHRvIHRoZSBtZWFzdXJlZCB0ZW1wZXJhdHVyZXMgd2l0aG91dCBmdXJ0aGVyIGhvc3QgaW50ZXJ2ZW50aW9uLgorVGhpcyBmZWF0dXJlIGNhbiBhbHNvIGJlIGRpc2FibGVkIGZvciBtYW51YWwgY29udHJvbCBvZiB0aGUgUFdNJ3MuCisKK0VhY2ggb2YgdGhlIG1lYXN1cmVkIGlucHV0cyAodm9sdGFnZSwgdGVtcGVyYXR1cmUsIGZhbiBzcGVlZCkgaGFzCitjb3JyZXNwb25kaW5nIGhpZ2gvbG93IGxpbWl0IHZhbHVlcy4gVGhlIExNODUgd2lsbCBzaWduYWwgYW4gQUxBUk0gaWYgYW55CittZWFzdXJlZCB2YWx1ZSBleGNlZWRzIGVpdGhlciBsaW1pdC4KKworVGhlIExNODUgc2FtcGxlcyBhbGwgaW5wdXRzIGNvbnRpbnVvdXNseS4gVGhlIGxtODUgZHJpdmVyIHdpbGwgbm90IHJlYWQKK3RoZSByZWdpc3RlcnMgbW9yZSBvZnRlbiB0aGFuIG9uY2UgYSBzZWNvbmQuIEZ1cnRoZXIsIGNvbmZpZ3VyYXRpb24gZGF0YSBpcworb25seSByZWFkIG9uY2UgZWFjaCA1IG1pbnV0ZXMuIFRoZXJlIGlzIHR3aWNlIGFzIG11Y2ggY29uZmlnIGRhdGEgYXMKK21lYXN1cmVtZW50cywgc28gdGhpcyB3b3VsZCBzZWVtIHRvIGJlIGEgd29ydGh3aGlsZSBvcHRpbWl6YXRpb24uCisKK1NwZWNpYWwgRmVhdHVyZXMKKy0tLS0tLS0tLS0tLS0tLS0KKworVGhlIExNODUgaGFzIGZvdXIgZmFuIHNwZWVkIG1vbml0b3JpbmcgbW9kZXMuIFRoZSBBRE0xMDI3IGhhcyBvbmx5IHR3by4KK0JvdGggaGF2ZSBzcGVjaWFsIGNpcmN1aXRyeSB0byBjb21wZW5zYXRlIGZvciBQV00gaW50ZXJhY3Rpb25zIHdpdGggdGhlCitUQUNIIHNpZ25hbCBmcm9tIHRoZSBmYW5zLiBUaGUgQURNMTAyNyBjYW4gYmUgY29uZmlndXJlZCB0byBtZWFzdXJlIHRoZQorc3BlZWQgb2YgYSB0d28gd2lyZSBmYW4sIGJ1dCB0aGUgaW5wdXQgY29uZGl0aW9uaW5nIGNpcmN1aXRyeSBpcyBkaWZmZXJlbnQKK2ZvciAzLXdpcmUgYW5kIDItd2lyZSBtb2RlLiBGb3IgdGhpcyByZWFzb24sIHRoZSAyLXdpcmUgZmFuIG1vZGVzIGFyZSBub3QKK2V4cG9zZWQgdG8gdXNlciBjb250cm9sLiBUaGUgQklPUyBzaG91bGQgaW5pdGlhbGl6ZSB0aGVtIHRvIHRoZSBjb3JyZWN0Cittb2RlLiBJZiB5b3UndmUgZGVzaWduZWQgeW91ciBvd24gQURNMTAyNywgeW91J2xsIGhhdmUgdG8gbW9kaWZ5IHRoZQoraW5pdF9jbGllbnQgZnVuY3Rpb24gYW5kIGFkZCBhbiBpbnNtb2QgcGFyYW1ldGVyIHRvIHNldCB0aGlzIHVwLgorCitUbyBzbW9vdGggdGhlIHJlc3BvbnNlIG9mIGZhbnMgdG8gY2hhbmdlcyBpbiB0ZW1wZXJhdHVyZSwgdGhlIExNODUgaGFzIGFuCitvcHRpb25hbCBmaWx0ZXIgZm9yIHNtb290aGluZyB0ZW1wZXJhdHVyZXMuIFRoZSBBRE0xMDI3IGhhcyB0aGUgc2FtZQorY29uZmlnIG9wdGlvbiBidXQgdXNlcyBpdCB0byByYXRlIGxpbWl0IHRoZSBjaGFuZ2VzIHRvIGZhbiBzcGVlZCBpbnN0ZWFkLgorCitUaGUgQURNMTAyNywgQURUNzQ2MyBhbmQgQURUNzQ2OCBoYXZlIGEgMTAtYml0IEFEQyBhbmQgY2FuIHRoZXJlZm9yZQorbWVhc3VyZSB0ZW1wZXJhdHVyZXMgd2l0aCAwLjI1IGRlZ0MgcmVzb2x1dGlvbi4gVGhleSBhbHNvIHByb3ZpZGUgYW4gb2Zmc2V0Cit0byB0aGUgdGVtcGVyYXR1cmUgcmVhZGluZ3MgdGhhdCBpcyBhdXRvbWF0aWNhbGx5IGFwcGxpZWQgZHVyaW5nCittZWFzdXJlbWVudC4gVGhpcyBvZmZzZXQgY2FuIGJlIHVzZWQgdG8gemVybyBvdXQgYW55IGVycm9ycyBkdWUgdG8gdHJhY2VzCithbmQgcGxhY2VtZW50LiBUaGUgZG9jdW1lbnRhdGlvbiBzYXlzIHRoYXQgdGhlIG9mZnNldCBpcyBpbiAwLjI1IGRlZ0MKK3N0ZXBzLCBidXQgaW4gaW5pdGlhbCB0ZXN0aW5nIG9mIHRoZSBBRE0xMDI3IGl0IHdhcyAxLjAwIGRlZ0Mgc3RlcHMuIEFuYWxvZworRGV2aWNlcyBoYXMgY29uZmlybWVkIHRoaXMgImJ1ZyIuIFRoZSBBRFQ3NDYzIGlzIHJlcG9ydGVkIHRvIHdvcmsgYXMKK2Rlc2NyaWJlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4gVGhlIGN1cnJlbnQgbG04NSBkcml2ZXIgZG9lcyBub3Qgc2hvdyB0aGUKK29mZnNldCByZWdpc3Rlci4KKworVGhlIEFEVDc0NjggaGFzIGEgaGlnaC1mcmVxdWVuY3kgUFdNIG1vZGUsIHdoZXJlIGFsbCBQV00gb3V0cHV0cyBhcmUKK2RyaXZlbiBieSBhIDIyLjUga0h6IGNsb2NrLiBUaGlzIGlzIGEgZ2xvYmFsIG1vZGUsIG5vdCBwZXItUFdNIG91dHB1dCwKK3doaWNoIG1lYW5zIHRoYXQgc2V0dGluZyBhbnkgUFdNIGZyZXF1ZW5jeSBhYm92ZSAxMS4zIGtIeiB3aWxsIHN3aXRjaAorYWxsIDMgUFdNIG91dHB1dHMgdG8gYSAyMi41IGtIeiBmcmVxdWVuY3kuIENvbnZlcnNlbHksIHNldHRpbmcgYW55IFBXTQorZnJlcXVlbmN5IGJlbG93IDExLjMga0h6IHdpbGwgc3dpdGNoIGFsbCAzIFBXTSBvdXRwdXRzIHRvIGEgZnJlcXVlbmN5CitiZXR3ZWVuIDEwIGFuZCAxMDAgSHosIHdoaWNoIGNhbiB0aGVuIGJlIHR1bmVkIHNlcGFyYXRlbHkuCisKK1NlZSB0aGUgdmVuZG9yIGRhdGFzaGVldHMgZm9yIG1vcmUgaW5mb3JtYXRpb24uIFRoZXJlIGlzIGFwcGxpY2F0aW9uIG5vdGUKK2Zyb20gTmF0aW9uYWwgKEFOLTEyNjApIHdpdGggc29tZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBMTTg1LgorVGhlIEFuYWxvZyBEZXZpY2VzIGRhdGFzaGVldCBpcyB2ZXJ5IGRldGFpbGVkIGFuZCBkZXNjcmliZXMgYSBwcm9jZWR1cmUgZm9yCitkZXRlcm1pbmluZyBhbiBvcHRpbWFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhdXRvbWF0aWMgUFdNIGNvbnRyb2wuCisKK1RoZSBTTVNDIEVNQzZEMTAwICYgRU1DNkQxMDEgbW9uaXRvciBleHRlcm5hbCB2b2x0YWdlcywgdGVtcGVyYXR1cmVzLCBhbmQKK2ZhbiBzcGVlZHMuIFRoZXkgdXNlIHRoaXMgbW9uaXRvcmluZyBjYXBhYmlsaXR5IHRvIGFsZXJ0IHRoZSBzeXN0ZW0gdG8gb3V0CitvZiBsaW1pdCBjb25kaXRpb25zIGFuZCBjYW4gYXV0b21hdGljYWxseSBjb250cm9sIHRoZSBzcGVlZHMgb2YgbXVsdGlwbGUKK2ZhbnMgaW4gYSBQQyBvciBlbWJlZGRlZCBzeXN0ZW0uIFRoZSBFTUM2RDEwMSwgYXZhaWxhYmxlIGluIGEgMjQtcGluIFNTT1AKK3BhY2thZ2UsIGFuZCB0aGUgRU1DNkQxMDAsIGF2YWlsYWJsZSBpbiBhIDI4LXBpbiBTU09QIHBhY2thZ2UsIGFyZSBkZXNpZ25lZAordG8gYmUgcmVnaXN0ZXIgY29tcGF0aWJsZS4gVGhlIEVNQzZEMTAwIG9mZmVycyBhbGwgdGhlIGZlYXR1cmVzIG9mIHRoZQorRU1DNkQxMDEgcGx1cyBhZGRpdGlvbmFsIHZvbHRhZ2UgbW9uaXRvcmluZyBhbmQgc3lzdGVtIGNvbnRyb2wgZmVhdHVyZXMuCitVbmZvcnR1bmF0ZWx5IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBwYWNrYWdlCit2ZXJzaW9ucyBvbiByZWdpc3RlciBsZXZlbCBzbyB0aGVzZSBhZGRpdGlvbmFsIHZvbHRhZ2UgaW5wdXRzIG1heSByZWFkCit6ZXJvLiBFTUM2RDEwMiBhbmQgRU1DNkQxMDMgZmVhdHVyZSBhZGRpdGlvbmFsIEFEQyBiaXRzIHRodXMgZXh0ZW5kaW5nIHByZWNpc2lvbgorb2Ygdm9sdGFnZSBhbmQgdGVtcGVyYXR1cmUgY2hhbm5lbHMuCisKK1NNU0MgRU1DNkQxMDNTIGlzIHNpbWlsYXIgdG8gRU1DNkQxMDMsIGJ1dCBkb2VzIG5vdCBzdXBwb3J0IHB3bSNfYXV0b19wd21fbWluY3RsCithbmQgdGVtcCNfYXV0b190ZW1wX29mZi4KKworSGFyZHdhcmUgQ29uZmlndXJhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBMTTg1IGNhbiBiZSBqdW1wZXJlZCBmb3IgMyBkaWZmZXJlbnQgU01CdXMgYWRkcmVzc2VzLiBUaGVyZSBhcmUKK25vIG90aGVyIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIExNODUuCisKK1RoZSBsbTg1IGRyaXZlciBkZXRlY3RzIGJvdGggTE04NUIgYW5kIExNODVDIHJldmlzaW9ucyBvZiB0aGUgY2hpcC4gU2VlIHRoZQorZGF0YXNoZWV0IGZvciBhIGNvbXBsZXRlIGRlc2NyaXB0aW9uIG9mIHRoZSBkaWZmZXJlbmNlcy4gT3RoZXIgdGhhbgoraWRlbnRpZnlpbmcgdGhlIGNoaXAsIHRoZSBkcml2ZXIgYmVoYXZlcyBubyBkaWZmZXJlbnRseSB3aXRoIHJlZ2FyZCB0bwordGhlc2UgdHdvIGNoaXBzLiBUaGUgTE04NUIgaXMgcmVjb21tZW5kZWQgZm9yIG5ldyBkZXNpZ25zLgorCitUaGUgQURNMTAyNywgQURUNzQ2MyBhbmQgQURUNzQ2OCBjaGlwcyBoYXZlIGFuIG9wdGlvbmFsIFNNQkFMRVJUIG91dHB1dAordGhhdCBjYW4gYmUgdXNlZCB0byBzaWduYWwgdGhlIGNoaXBzZXQgaW4gY2FzZSBhIGxpbWl0IGlzIGV4Y2VlZGVkIG9yIHRoZQordGVtcGVyYXR1cmUgc2Vuc29ycyBmYWlsLiBJbmRpdmlkdWFsIHNlbnNvciBpbnRlcnJ1cHRzIGNhbiBiZSBtYXNrZWQgc28KK3RoZXkgd29uJ3QgdHJpZ2dlciBTTUJBTEVSVC4gVGhlIFNNQkFMRVJUIG91dHB1dCBpZiBjb25maWd1cmVkIHJlcGxhY2VzIG9uZQorb2YgdGhlIG90aGVyIGZ1bmN0aW9ucyAoUFdNMiBvciBJTjApLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGltcGxlbWVudGVkCitpbiBjdXJyZW50IGRyaXZlci4KKworVGhlIEFEVDc0NjMgYW5kIEFEVDc0NjggYWxzbyBoYXZlIGFuIG9wdGlvbmFsIFRIRVJNIG91dHB1dC9pbnB1dCB3aGljaCBjYW4KK2JlIGNvbm5lY3RlZCB0byB0aGUgcHJvY2Vzc29yIFBST0NfSE9UIG91dHB1dC4gSWYgYXZhaWxhYmxlLCB0aGUgYXV0b2ZhbgorY29udHJvbCBkeW5hbWljIFRtaW4gZmVhdHVyZSBjYW4gYmUgZW5hYmxlZCB0byBrZWVwIHRoZSBzeXN0ZW0gdGVtcGVyYXR1cmUKK3dpdGhpbiBzcGVjIChqdXN0PyEpIHdpdGggdGhlIGxlYXN0IHBvc3NpYmxlIGZhbiBub2lzZS4KKworQ29uZmlndXJhdGlvbiBOb3RlcworLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCZXNpZGVzIHN0YW5kYXJkIGludGVyZmFjZXMgZHJpdmVyIGFkZHMgZm9sbG93aW5nOgorCisqIFRlbXBlcmF0dXJlcyBhbmQgWm9uZXMKKworRWFjaCB0ZW1wZXJhdHVyZSBzZW5zb3IgaXMgYXNzb2NpYXRlZCB3aXRoIGEgWm9uZS4gVGhlcmUgYXJlIHRocmVlCitzZW5zb3JzIGFuZCB0aGVyZWZvcmUgdGhyZWUgem9uZXMgKCMgMSwgMiBhbmQgMykuIEVhY2ggem9uZSBoYXMgdGhlIGZvbGxvd2luZwordGVtcGVyYXR1cmUgY29uZmlndXJhdGlvbiBwb2ludHM6CisKKyogdGVtcCNfYXV0b190ZW1wX29mZiAtIHRlbXBlcmF0dXJlIGJlbG93IHdoaWNoIGZhbnMgc2hvdWxkIGJlIG9mZiBvciBzcGlubmluZyB2ZXJ5IGxvdy4KKyogdGVtcCNfYXV0b190ZW1wX21pbiAtIHRlbXBlcmF0dXJlIG92ZXIgd2hpY2ggZmFucyBzdGFydCB0byBzcGluLgorKiB0ZW1wI19hdXRvX3RlbXBfbWF4IC0gdGVtcGVyYXR1cmUgd2hlbiBmYW5zIHNwaW4gYXQgZnVsbCBzcGVlZC4KKyogdGVtcCNfYXV0b190ZW1wX2NyaXQgLSB0ZW1wZXJhdHVyZSB3aGVuIGFsbCBmYW5zIHdpbGwgcnVuIGZ1bGwgc3BlZWQuCisKKyogUFdNIENvbnRyb2wKKworVGhlcmUgYXJlIHRocmVlIFBXTSBvdXRwdXRzLiBUaGUgTE04NSBkYXRhc2hlZXQgc3VnZ2VzdHMgdGhhdCB0aGUKK3B3bTMgb3V0cHV0IGNvbnRyb2wgYm90aCBmYW4zIGFuZCBmYW40LiBFYWNoIFBXTSBjYW4gYmUgaW5kaXZpZHVhbGx5Citjb25maWd1cmVkIGFuZCBhc3NpZ25lZCB0byBhIHpvbmUgZm9yIGl0cyBjb250cm9sIHZhbHVlLiBFYWNoIFBXTSBjYW4gYmUKK2NvbmZpZ3VyZWQgaW5kaXZpZHVhbGx5IGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIG9wdGlvbnMuCisKKyogcHdtI19hdXRvX3B3bV9taW4gLSB0aGlzIHNwZWNpZmllcyB0aGUgUFdNIHZhbHVlIGZvciB0ZW1wI19hdXRvX3RlbXBfb2ZmCisgICAgICAgICAgICAgICAgICAgICAgdGVtcGVyYXR1cmUuIChQV00gdmFsdWUgZnJvbSAwIHRvIDI1NSkKKworKiBwd20jX2F1dG9fcHdtX21pbmN0bCAtIHRoaXMgZmxhZ3Mgc2VsZWN0cyBmb3IgdGVtcCNfYXV0b190ZW1wX29mZiB0ZW1wZXJhdHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBiZWhhdmlvdXIgb2YgZmFucy4gV3JpdGUgMSB0byBsZXQgZmFucyBzcGlubmluZyBhdAorCQkJIHB3bSNfYXV0b19wd21fbWluIG9yIHdyaXRlIDAgdG8gbGV0IHRoZW0gb2ZmLgorCitOT1RFOiBJdCBoYXMgYmVlbiByZXBvcnRlZCB0aGF0IHRoZXJlIGlzIGEgYnVnIGluIHRoZSBMTTg1IHRoYXQgY2F1c2VzIHRoZSBmbGFnCit0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHpvbmVzIG5vdCB0aGUgUFdNcy4gVGhpcyBjb250cmFkaWN0cyBhbGwgdGhlCitwdWJsaXNoZWQgZG9jdW1lbnRhdGlvbi4gU2V0dGluZyBwd20jX21pbl9jdGwgaW4gdGhpcyBjYXNlIGFjdHVhbGx5IGFmZmVjdHMgYWxsCitQV01zIGNvbnRyb2xsZWQgYnkgem9uZSAnIycuCisKKyogUFdNIENvbnRyb2xsaW5nIFpvbmUgc2VsZWN0aW9uCisKKyogcHdtI19hdXRvX2NoYW5uZWxzIC0gY29udHJvbHMgem9uZSB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBQV00KKworQ29uZmlndXJhdGlvbiBjaG9pY2VzOgorCisgICBWYWx1ZSAgICAgTWVhbmluZworICAtLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgMSAgICBDb250cm9sbGVkIGJ5IFpvbmUgMQorICAgICAgMiAgICBDb250cm9sbGVkIGJ5IFpvbmUgMgorICAgICAgMyAgICBDb250cm9sbGVkIGJ5IFpvbmUgMworICAgICAyMyAgICBDb250cm9sbGVkIGJ5IGhpZ2hlciB0ZW1wIG9mIFpvbmUgMiBvciAzCisgICAgMTIzICAgIENvbnRyb2xsZWQgYnkgaGlnaGVzdCB0ZW1wIG9mIFpvbmUgMSwgMiBvciAzCisgICAgICAwICAgIFBXTSBhbHdheXMgMCUgIChvZmYpCisgICAgIC0xICAgIFBXTSBhbHdheXMgMTAwJSAgKGZ1bGwgb24pCisgICAgIC0yICAgIE1hbnVhbCBjb250cm9sICh3cml0ZSB0byAncHdtIycgdG8gc2V0KQorCitUaGUgTmF0aW9uYWwgTE04NSdzIGhhdmUgdHdvIHZlbmRvciBzcGVjaWZpYyBjb25maWd1cmF0aW9uCitmZWF0dXJlcy4gVGFjaC4gbW9kZSBhbmQgU3BpbnVwIENvbnRyb2wuIEZvciBtb3JlIGRldGFpbHMgb24gdGhlc2UsCitzZWUgdGhlIExNODUgZGF0YXNoZWV0IG9yIEFwcGxpY2F0aW9uIE5vdGUgQU4tMTI2MC4gVGhlc2UgZmVhdHVyZXMKK2FyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBieSB0aGUgbG04NSBkcml2ZXIuCisKK1RoZSBBbmFsb2cgRGV2aWNlcyBBRE0xMDI3IGhhcyBzZXZlcmFsIHZlbmRvciBzcGVjaWZpYyBlbmhhbmNlbWVudHMuCitUaGUgbnVtYmVyIG9mIHB1bHNlcy1wZXItcmV2IG9mIHRoZSBmYW5zIGNhbiBiZSBzZXQsIFRhY2ggbW9uaXRvcmluZworY2FuIGJlIG9wdGltaXplZCBmb3IgUFdNIG9wZXJhdGlvbiwgYW5kIGFuIG9mZnNldCBjYW4gYmUgYXBwbGllZCB0bwordGhlIHRlbXBlcmF0dXJlcyB0byBjb21wZW5zYXRlIGZvciBzeXN0ZW1pYyBlcnJvcnMgaW4gdGhlCittZWFzdXJlbWVudHMuIFRoZXNlIGZlYXR1cmVzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBieSB0aGUgbG04NQorZHJpdmVyLgorCitJbiBhZGRpdGlvbiB0byB0aGUgQURNMTAyNyBmZWF0dXJlcywgdGhlIEFEVDc0NjMgYW5kIEFEVDc0NjggYWxzbyBoYXZlCitUbWluIGNvbnRyb2wgYW5kIFRIRVJNIGFzc2VydGVkIGNvdW50cy4gQXV0b21hdGljIFRtaW4gY29udHJvbCBhY3RzIHRvCithZGp1c3QgdGhlIFRtaW4gdmFsdWUgdG8gbWFpbnRhaW4gdGhlIG1lYXN1cmVkIHRlbXBlcmF0dXJlIHNlbnNvciBhdCBhCitzcGVjaWZpZWQgdGVtcGVyYXR1cmUuIFRoZXJlIGlzbid0IG11Y2ggZG9jdW1lbnRhdGlvbiBvbiB0aGlzIGZlYXR1cmUgaW4KK3RoZSBBRFQ3NDYzIGRhdGEgc2hlZXQuIFRoaXMgaXMgbm90IHN1cHBvcnRlZCBieSBjdXJyZW50IGRyaXZlci4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vbG04NyBiL0RvY3VtZW50YXRpb24vaHdtb24vbG04NwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjMzOWZkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9sbTg3CkBAIC0wLDAgKzEsNzcgQEAKK0tlcm5lbCBkcml2ZXIgbG04NworPT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBOYXRpb25hbCBTZW1pY29uZHVjdG9yIExNODcKKyAgICBQcmVmaXg6ICdsbTg3JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgyYyAtIDB4MmUKKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cubmF0aW9uYWwuY29tL3BmL0xNL0xNODcuaHRtbAorICAqIEFuYWxvZyBEZXZpY2VzIEFETTEwMjQKKyAgICBQcmVmaXg6ICdhZG0xMDI0JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgyYyAtIDB4MmUKKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cuYW5hbG9nLmNvbS9lbi9wcm9kLzAsMjg3NyxBRE0xMDI0LDAwLmh0bWwKKworQXV0aG9yczoKKyAgICAgICAgRnJvZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5sPiwKKyAgICAgICAgUGhpbGlwIEVkZWxicm9jayA8cGhpbEBuZXRyb2VkZ2UuY29tPiwKKyAgICAgICAgTWFyayBTdHVkZWJha2VyIDxtZHN4eXoxMjNAeWFob28uY29tPiwKKyAgICAgICAgU3RlcGhlbiBSb3Vzc2V0IDxzdGVwaGVuLnJvdXNzZXRAcm9ja2V0bG9naXguY29tPiwKKyAgICAgICAgRGFuIEVhdG9uIDxkYW4uZWF0b25Acm9ja2V0bG9naXguY29tPiwKKyAgICAgICAgSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmRlPiwKKyAgICAgICAgT3JpZ2luYWwgMi42IHBvcnQgSmVmZiBPbGl2ZXIKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgTE04NworYW5kIHRoZSBBbmFsb2cgRGV2aWNlcyBBRE0xMDI0LgorCitUaGUgTE04NyBpbXBsZW1lbnRzIHVwIHRvIHRocmVlIHRlbXBlcmF0dXJlIHNlbnNvcnMsIHVwIHRvIHR3byBmYW4KK3JvdGF0aW9uIHNwZWVkIHNlbnNvcnMsIHVwIHRvIHNldmVuIHZvbHRhZ2Ugc2Vuc29ycywgYWxhcm1zLCBhbmQgc29tZQorbWlzY2VsbGFuZW91cyBzdHVmZi4gVGhlIEFETTEwMjQgaXMgZnVsbHkgY29tcGF0aWJsZS4KKworVGVtcGVyYXR1cmVzIGFyZSBtZWFzdXJlZCBpbiBkZWdyZWVzIENlbHNpdXMuIEVhY2ggaW5wdXQgaGFzIGEgaGlnaAorYW5kIGxvdyBhbGFybSBzZXR0aW5ncy4gQSBoaWdoIGxpbWl0IHByb2R1Y2VzIGFuIGFsYXJtIHdoZW4gdGhlIHZhbHVlCitnb2VzIGFib3ZlIGl0LCBhbmQgYW4gYWxhcm0gaXMgYWxzbyBwcm9kdWNlZCB3aGVuIHRoZSB2YWx1ZSBnb2VzIGJlbG93Cit0aGUgbG93IGxpbWl0LgorCitGYW4gcm90YXRpb24gc3BlZWRzIGFyZSByZXBvcnRlZCBpbiBSUE0gKHJvdGF0aW9ucyBwZXIgbWludXRlKS4gQW4gYWxhcm0gaXMKK3RyaWdnZXJlZCBpZiB0aGUgcm90YXRpb24gc3BlZWQgaGFzIGRyb3BwZWQgYmVsb3cgYSBwcm9ncmFtbWFibGUgbGltaXQuIEZhbgorcmVhZGluZ3MgY2FuIGJlIGRpdmlkZWQgYnkgYSBwcm9ncmFtbWFibGUgZGl2aWRlciAoMSwgMiwgNCBvciA4KSB0byBnaXZlCit0aGUgcmVhZGluZ3MgbW9yZSByYW5nZSBvciBhY2N1cmFjeS4gTm90IGFsbCBSUE0gdmFsdWVzIGNhbiBhY2N1cmF0ZWx5IGJlCityZXByZXNlbnRlZCwgc28gc29tZSByb3VuZGluZyBpcyBkb25lLiBXaXRoIGEgZGl2aWRlciBvZiAyLCB0aGUgbG93ZXN0CityZXByZXNlbnRhYmxlIHZhbHVlIGlzIGFyb3VuZCAyNjAwIFJQTS4KKworVm9sdGFnZSBzZW5zb3JzIChhbHNvIGtub3duIGFzIElOIHNlbnNvcnMpIHJlcG9ydCB0aGVpciB2YWx1ZXMgaW4KK3ZvbHRzLiBBbiBhbGFybSBpcyB0cmlnZ2VyZWQgaWYgdGhlIHZvbHRhZ2UgaGFzIGNyb3NzZWQgYSBwcm9ncmFtbWFibGUKK21pbmltdW0gb3IgbWF4aW11bSBsaW1pdC4gTm90ZSB0aGF0IG1pbmltdW0gaW4gdGhpcyBjYXNlIGFsd2F5cyBtZWFucworJ2Nsb3Nlc3QgdG8gemVybyc7IHRoaXMgaXMgaW1wb3J0YW50IGZvciBuZWdhdGl2ZSB2b2x0YWdlIG1lYXN1cmVtZW50cy4KKworSWYgYW4gYWxhcm0gdHJpZ2dlcnMsIGl0IHdpbGwgcmVtYWluIHRyaWdnZXJlZCB1bnRpbCB0aGUgaGFyZHdhcmUgcmVnaXN0ZXIKK2lzIHJlYWQgYXQgbGVhc3Qgb25jZS4gVGhpcyBtZWFucyB0aGF0IHRoZSBjYXVzZSBmb3IgdGhlIGFsYXJtIG1heQorYWxyZWFkeSBoYXZlIGRpc2FwcGVhcmVkISBOb3RlIHRoYXQgaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIGFsbAoraGFyZHdhcmUgcmVnaXN0ZXJzIGFyZSByZWFkIHdoZW5ldmVyIGFueSBkYXRhIGlzIHJlYWQgKHVubGVzcyBpdCBpcyBsZXNzCit0aGFuIDEuMCBzZWNvbmRzIHNpbmNlIHRoZSBsYXN0IHVwZGF0ZSkuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIGVhc2lseQorbWlzcyBvbmNlLW9ubHkgYWxhcm1zLgorCitUaGUgbG04NyBkcml2ZXIgb25seSB1cGRhdGVzIGl0cyB2YWx1ZXMgZWFjaCAxLjAgc2Vjb25kczsgcmVhZGluZyBpdCBtb3JlCitvZnRlbiB3aWxsIGRvIG5vIGhhcm0sIGJ1dCB3aWxsIHJldHVybiAnb2xkJyB2YWx1ZXMuCisKKworSGFyZHdhcmUgQ29uZmlndXJhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBMTTg3IGhhcyBmb3VyIHBpbnMgd2hpY2ggY2FuIHNlcnZlIG9uZSBvZiB0d28gcG9zc2libGUgZnVuY3Rpb25zLAorZGVwZW5kaW5nIG9uIHRoZSBoYXJkd2FyZSBjb25maWd1cmF0aW9uLgorCitTb21lIGZ1bmN0aW9ucyBzaGFyZSBwaW5zLCBzbyBub3QgYWxsIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIGF0IHRoZSBzYW1lCit0aW1lLiBXaGljaCBhcmUgZGVwZW5kcyBvbiB0aGUgaGFyZHdhcmUgc2V0dXAuIFRoaXMgZHJpdmVyIG5vcm1hbGx5Cithc3N1bWVzIHRoYXQgZmlybXdhcmUgY29uZmlndXJlZCB0aGUgY2hpcCBjb3JyZWN0bHkuIFdoZXJlIHRoaXMgaXMgbm90Cit0aGUgY2FzZSwgcGxhdGZvcm0gY29kZSBtdXN0IHNldCB0aGUgSTJDIGNsaWVudCdzIHBsYXRmb3JtX2RhdGEgdG8gcG9pbnQKK3RvIGEgdTggdmFsdWUgdG8gYmUgd3JpdHRlbiB0byB0aGUgY2hhbm5lbCByZWdpc3Rlci4KKworRm9yIHJlZmVyZW5jZSwgaGVyZSBpcyB0aGUgbGlzdCBvZiBleGNsdXNpdmUgZnVuY3Rpb25zOgorIC0gaW4wK2luNSAoZGVmYXVsdCkgb3IgdGVtcDMKKyAtIGZhbjEgKGRlZmF1bHQpIG9yIGluNgorIC0gZmFuMiAoZGVmYXVsdCkgb3IgaW43CisgLSBWSUQgbGluZXMgKGRlZmF1bHQpIG9yIElSUSBsaW5lcyAobm90IGhhbmRsZWQgYnkgdGhpcyBkcml2ZXIpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2xtOTAgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2xtOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODEyMjY3NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vbG05MApAQCAtMCwwICsxLDI3NSBAQAorS2VybmVsIGRyaXZlciBsbTkwCis9PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgTE05MAorICAgIFByZWZpeDogJ2xtOTAnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDRjCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3Igd2Vic2l0ZQorICAgICAgICAgICAgICAgaHR0cDovL3d3dy5uYXRpb25hbC5jb20vcGYvTE0vTE05MC5odG1sCisgICogTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBMTTg5CisgICAgUHJlZml4OiAnbG04OScgKG5vIGF1dG8tZGV0ZWN0aW9uKQorICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHg0YyBhbmQgMHg0ZAorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubmF0aW9uYWwuY29tL21wZi9MTS9MTTg5Lmh0bWwKKyAgKiBOYXRpb25hbCBTZW1pY29uZHVjdG9yIExNOTkKKyAgICBQcmVmaXg6ICdsbTk5JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHg0YyBhbmQgMHg0ZAorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubmF0aW9uYWwuY29tL3BmL0xNL0xNOTkuaHRtbAorICAqIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgTE04NgorICAgIFByZWZpeDogJ2xtODYnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDRjCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIE5hdGlvbmFsIFNlbWljb25kdWN0b3Igd2Vic2l0ZQorICAgICAgICAgICAgICAgaHR0cDovL3d3dy5uYXRpb25hbC5jb20vbXBmL0xNL0xNODYuaHRtbAorICAqIEFuYWxvZyBEZXZpY2VzIEFETTEwMzIKKyAgICBQcmVmaXg6ICdhZG0xMDMyJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHg0YyBhbmQgMHg0ZAorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBPTiBTZW1pY29uZHVjdG9yIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cub25zZW1pLmNvbS9Qb3dlclNvbHV0aW9ucy9wcm9kdWN0LmRvP2lkPUFETTEwMzIKKyAgKiBBbmFsb2cgRGV2aWNlcyBBRFQ3NDYxCisgICAgUHJlZml4OiAnYWR0NzQ2MScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4NGMgYW5kIDB4NGQKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgT04gU2VtaWNvbmR1Y3RvciB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3Lm9uc2VtaS5jb20vUG93ZXJTb2x1dGlvbnMvcHJvZHVjdC5kbz9pZD1BRFQ3NDYxCisgICogQW5hbG9nIERldmljZXMgQURUNzQ2MUEKKyAgICBQcmVmaXg6ICdhZHQ3NDYxYScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4NGMgYW5kIDB4NGQKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgT04gU2VtaWNvbmR1Y3RvciB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3Lm9uc2VtaS5jb20vUG93ZXJTb2x1dGlvbnMvcHJvZHVjdC5kbz9pZD1BRFQ3NDYxQQorICAqIE9OIFNlbWljb25kdWN0b3IgTkNUMTAwOAorICAgIFByZWZpeDogJ25jdDEwMDgnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDRjIGFuZCAweDRkCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIE9OIFNlbWljb25kdWN0b3Igd2Vic2l0ZQorICAgICAgICAgICAgICAgaHR0cDovL3d3dy5vbnNlbWkuY29tL1Bvd2VyU29sdXRpb25zL3Byb2R1Y3QuZG8/aWQ9TkNUMTAwOAorICAqIE1heGltIE1BWDY2NDYKKyAgICBQcmVmaXg6ICdtYXg2NjQ2JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHg0ZAorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBNYXhpbSB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3Lm1heGltLWljLmNvbS9xdWlja192aWV3Mi5jZm0vcXZfcGsvMzQ5NworICAqIE1heGltIE1BWDY2NDcKKyAgICBQcmVmaXg6ICdtYXg2NjQ2JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHg0ZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBNYXhpbSB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3Lm1heGltLWljLmNvbS9xdWlja192aWV3Mi5jZm0vcXZfcGsvMzQ5NworICAqIE1heGltIE1BWDY2NDgKKyAgICBQcmVmaXg6ICdtYXg2NjQ2JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHg0YworICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBNYXhpbSB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3Lm1heGltLWljLmNvbS9xdWlja192aWV3Mi5jZm0vcXZfcGsvMzUwMAorICAqIE1heGltIE1BWDY2NDkKKyAgICBQcmVmaXg6ICdtYXg2NjQ2JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHg0YworICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBNYXhpbSB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3Lm1heGltLWljLmNvbS9xdWlja192aWV3Mi5jZm0vcXZfcGsvMzQ5NworICAqIE1heGltIE1BWDY2NTcKKyAgICBQcmVmaXg6ICdtYXg2NjU3JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHg0YworICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBNYXhpbSB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3Lm1heGltLWljLmNvbS9xdWlja192aWV3Mi5jZm0vcXZfcGsvMjU3OAorICAqIE1heGltIE1BWDY2NTgKKyAgICBQcmVmaXg6ICdtYXg2NjU3JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHg0YworICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBNYXhpbSB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3Lm1heGltLWljLmNvbS9xdWlja192aWV3Mi5jZm0vcXZfcGsvMjU3OAorICAqIE1heGltIE1BWDY2NTkKKyAgICBQcmVmaXg6ICdtYXg2NjU5JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHg0YywgMHg0ZCwgMHg0ZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBNYXhpbSB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3Lm1heGltLWljLmNvbS9xdWlja192aWV3Mi5jZm0vcXZfcGsvMjU3OAorICAqIE1heGltIE1BWDY2ODAKKyAgICBQcmVmaXg6ICdtYXg2NjgwJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgxOCwgMHgxOSwgMHgxYSwgMHgyOSwgMHgyYSwgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4NGQgYW5kIDB4NGUKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgTWF4aW0gd2Vic2l0ZQorICAgICAgICAgICAgICAgaHR0cDovL3d3dy5tYXhpbS1pYy5jb20vcXVpY2tfdmlldzIuY2ZtL3F2X3BrLzMzNzAKKyAgKiBNYXhpbSBNQVg2NjgxCisgICAgUHJlZml4OiAnbWF4NjY4MCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MTgsIDB4MTksIDB4MWEsIDB4MjksIDB4MmEsIDB4MmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAweDRjLCAweDRkIGFuZCAweDRlCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIE1heGltIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubWF4aW0taWMuY29tL3F1aWNrX3ZpZXcyLmNmbS9xdl9way8zMzcwCisgICogTWF4aW0gTUFYNjY5MgorICAgIFByZWZpeDogJ21heDY2NDYnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDRjCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIE1heGltIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubWF4aW0taWMuY29tL3F1aWNrX3ZpZXcyLmNmbS9xdl9way8zNTAwCisgICogTWF4aW0gTUFYNjY5NQorICAgIFByZWZpeDogJ21heDY2OTUnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDE4CisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIE1heGltIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubWF4aW0taWMuY29tL2RhdGFzaGVldC9pbmRleC5tdnAvaWQvNDE5OQorICAqIE1heGltIE1BWDY2OTYKKyAgICBQcmVmaXg6ICdtYXg2Njk1JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgxOCwgMHgxOSwgMHgxYSwgMHgyOSwgMHgyYSwgMHgyYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NGMsIDB4NGQgYW5kIDB4NGUKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgTWF4aW0gd2Vic2l0ZQorICAgICAgICAgICAgICAgaHR0cDovL3d3dy5tYXhpbS1pYy5jb20vZGF0YXNoZWV0L2luZGV4Lm12cC9pZC80MTk5CisgICogV2luYm9uZC9OdXZvdG9uIFc4M0w3NzFXL0cKKyAgICBQcmVmaXg6ICd3ODNsNzcxJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHg0YworICAgIERhdGFzaGVldDogTm8gbG9uZ2VyIGF2YWlsYWJsZQorICAqIFdpbmJvbmQvTnV2b3RvbiBXODNMNzcxQVdHL0FTRworICAgIFByZWZpeDogJ3c4M2w3NzEnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDRjCisgICAgRGF0YXNoZWV0OiBOb3QgcHVibGljbHkgYXZhaWxhYmxlLCBjYW4gYmUgcmVxdWVzdGVkIGZyb20gTnV2b3RvbgorICAqIFBoaWxpcHMvTlhQIFNBNTYwMDRYCisgICAgUHJlZml4OiAnc2E1NjAwNCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4NDggdGhyb3VnaCAweDRGCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgTlhQIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly9pY3MubnhwLmNvbS9wcm9kdWN0cy9pbnRlcmZhY2UvZGF0YXNoZWV0L3NhNTYwMDR4LnBkZgorICAqIEdNVCBHNzgxCisgICAgUHJlZml4OiAnZzc4MScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4NGMsIDB4NGQKKyAgICBEYXRhc2hlZXQ6IE5vdCBwdWJsaWNseSBhdmFpbGFibGUgZnJvbSBHTVQKKyAgKiBUZXhhcyBJbnN0cnVtZW50cyBUTVA0NTEKKyAgICBQcmVmaXg6ICd0bXA0NTEnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDRjCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgVEkgd2Vic2l0ZQorICAgICAgICAgICAgICAgaHR0cDovL3d3dy50aS5jb20vbGl0di9wZGYvc2JvczY4NgorCisKK0F1dGhvcjogSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmRlPgorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGUgTE05MCBpcyBhIGRpZ2l0YWwgdGVtcGVyYXR1cmUgc2Vuc29yLiBJdCBzZW5zZXMgaXRzIG93biB0ZW1wZXJhdHVyZSBhcword2VsbCBhcyB0aGUgdGVtcGVyYXR1cmUgb2YgdXAgdG8gb25lIGV4dGVybmFsIGRpb2RlLiBJdCBpcyBjb21wYXRpYmxlCit3aXRoIG1hbnkgb3RoZXIgZGV2aWNlcywgbWFueSBvZiB3aGljaCBhcmUgc3VwcG9ydGVkIGJ5IHRoaXMgZHJpdmVyLgorCitOb3RlIHRoYXQgdGhlcmUgaXMgbm8gZWFzeSB3YXkgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRoZSBNQVg2NjU3LAorTUFYNjY1OCBhbmQgTUFYNjY1OSB2YXJpYW50cy4gVGhlIGV4dHJhIGZlYXR1cmVzIG9mIHRoZSBNQVg2NjU5IGFyZSBvbmx5CitzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIgaWYgdGhlIGNoaXAgaXMgbG9jYXRlZCBhdCBhZGRyZXNzIDB4NGQgb3IgMHg0ZSwKK29yIGlmIHRoZSBjaGlwIHR5cGUgaXMgZXhwbGljaXRseSBzZWxlY3RlZCBhcyBtYXg2NjU5LgorVGhlIE1BWDY2ODAgYW5kIE1BWDY2ODEgb25seSBkaWZmZXIgaW4gdGhlaXIgcGlub3V0LCB0aGVyZWZvcmUgdGhleSBvYnZpb3VzbHkKK2Nhbid0IChhbmQgZG9uJ3QgbmVlZCB0bykgYmUgZGlzdGluZ3Vpc2hlZC4KKworVGhlIHNwZWNpZmljaXR5IG9mIHRoaXMgZmFtaWx5IG9mIGNoaXBzZXRzIG92ZXIgdGhlIEFETTEwMjEvTE04NAorZmFtaWx5IGlzIHRoYXQgaXQgZmVhdHVyZXMgY3JpdGljYWwgbGltaXRzIHdpdGggaHlzdGVyZXNpcywgYW5kIGFuCitpbmNyZWFzZWQgcmVzb2x1dGlvbiBvZiB0aGUgcmVtb3RlIHRlbXBlcmF0dXJlIG1lYXN1cmVtZW50LgorCitUaGUgZGlmZmVyZW50IGNoaXBzZXRzIG9mIHRoZSBmYW1pbHkgYXJlIG5vdCBzdHJpY3RseSBpZGVudGljYWwsIGFsdGhvdWdoCit2ZXJ5IHNpbWlsYXIuIEZvciByZWZlcmVuY2UsIGhlcmUgY29tZXMgYSBub24tZXhoYXVzdGl2ZSBsaXN0IG9mIHNwZWNpZmljCitmZWF0dXJlczoKKworTE05MDoKKyAgKiBGaWx0ZXIgYW5kIGFsZXJ0IGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgYXQgMHhCRi4KKyAgKiBBTEVSVCBpcyB0cmlnZ2VyZWQgYnkgdGVtcGVyYXR1cmVzIG92ZXIgY3JpdGljYWwgbGltaXRzLgorCitMTTg2IGFuZCBMTTg5OgorICAqIFNhbWUgYXMgTE05MAorICAqIEJldHRlciBleHRlcm5hbCBjaGFubmVsIGFjY3VyYWN5CisKK0xNOTk6CisgICogU2FtZSBhcyBMTTg5CisgICogRXh0ZXJuYWwgdGVtcGVyYXR1cmUgc2hpZnRlZCBieSAxNiBkZWdyZWVzIGRvd24KKworQURNMTAzMjoKKyAgKiBDb25zZWN1dGl2ZSBhbGVydCByZWdpc3RlciBhdCAweDIyLgorICAqIENvbnZlcnNpb24gYXZlcmFnaW5nLgorICAqIFVwIHRvIDY0IGNvbnZlcnNpb25zL3MuCisgICogQUxFUlQgaXMgdHJpZ2dlcmVkIGJ5IG9wZW4gcmVtb3RlIHNlbnNvci4KKyAgKiBTTUJ1cyBQRUMgc3VwcG9ydCBmb3IgV3JpdGUgQnl0ZSBhbmQgUmVjZWl2ZSBCeXRlIHRyYW5zYWN0aW9ucy4KKworQURUNzQ2MSwgQURUNzQ2MUEsIE5DVDEwMDg6CisgICogRXh0ZW5kZWQgdGVtcGVyYXR1cmUgcmFuZ2UgKGJyZWFrcyBjb21wYXRpYmlsaXR5KQorICAqIExvd2VyIHJlc29sdXRpb24gZm9yIHJlbW90ZSB0ZW1wZXJhdHVyZQorCitNQVg2NjU3IGFuZCBNQVg2NjU4OgorICAqIEJldHRlciBsb2NhbCByZXNvbHV0aW9uCisgICogUmVtb3RlIHNlbnNvciB0eXBlIHNlbGVjdGlvbgorCitNQVg2NjU5OgorICAqIEJldHRlciBsb2NhbCByZXNvbHV0aW9uCisgICogU2VsZWN0YWJsZSBhZGRyZXNzCisgICogU2Vjb25kIGNyaXRpY2FsIHRlbXBlcmF0dXJlIGxpbWl0CisgICogUmVtb3RlIHNlbnNvciB0eXBlIHNlbGVjdGlvbgorCitNQVg2NjgwIGFuZCBNQVg2NjgxOgorICAqIFNlbGVjdGFibGUgYWRkcmVzcworICAqIFJlbW90ZSBzZW5zb3IgdHlwZSBzZWxlY3Rpb24KKworTUFYNjY5NSBhbmQgTUFYNjY5NjoKKyAgKiBCZXR0ZXIgbG9jYWwgcmVzb2x1dGlvbgorICAqIFNlbGVjdGFibGUgYWRkcmVzcyAobWF4NjY5NikKKyAgKiBTZWNvbmQgY3JpdGljYWwgdGVtcGVyYXR1cmUgbGltaXQKKyAgKiBUd28gcmVtb3RlIHNlbnNvcnMKKworVzgzTDc3MVcvRworICAqIFRoZSBHIHZhcmlhbnQgaXMgbGVhZC1mcmVlLCBvdGhlcndpc2Ugc2ltaWxhciB0byB0aGUgVy4KKyAgKiBGaWx0ZXIgYW5kIGFsZXJ0IGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgYXQgMHhCRgorICAqIE1vdmluZyBhdmVyYWdlIChkZXBlbmRpbmcgb24gY29udmVyc2lvbiByYXRlKQorCitXODNMNzcxQVdHL0FTRworICAqIFN1Y2Nlc3NvciBvZiB0aGUgVzgzTDc3MVcvRywgc2FtZSBmZWF0dXJlcy4KKyAgKiBUaGUgQVdHIGFuZCBBU0cgdmFyaWFudHMgb25seSBkaWZmZXIgaW4gcGFja2FnZSBmb3JtYXQuCisgICogRGlvZGUgaWRlYWxpdHkgZmFjdG9yIGNvbmZpZ3VyYXRpb24gKHJlbW90ZSBzZW5zb3IpIGF0IDB4RTMKKworU0E1NjAwNFg6CisgICogQmV0dGVyIGxvY2FsIHJlc29sdXRpb24KKworQWxsIHRlbXBlcmF0dXJlIHZhbHVlcyBhcmUgZ2l2ZW4gaW4gZGVncmVlcyBDZWxzaXVzLiBSZXNvbHV0aW9uCitpcyAxLjAgZGVncmVlIGZvciB0aGUgbG9jYWwgdGVtcGVyYXR1cmUsIDAuMTI1IGRlZ3JlZSBmb3IgdGhlIHJlbW90ZQordGVtcGVyYXR1cmUsIGV4Y2VwdCBmb3IgdGhlIE1BWDY2NTcsIE1BWDY2NTggYW5kIE1BWDY2NTkgd2hpY2ggaGF2ZSBhCityZXNvbHV0aW9uIG9mIDAuMTI1IGRlZ3JlZSBmb3IgYm90aCB0ZW1wZXJhdHVyZXMuCisKK0VhY2ggc2Vuc29yIGhhcyBpdHMgb3duIGhpZ2ggYW5kIGxvdyBsaW1pdHMsIHBsdXMgYSBjcml0aWNhbCBsaW1pdC4KK0FkZGl0aW9uYWxseSwgdGhlcmUgaXMgYSByZWxhdGl2ZSBoeXN0ZXJlc2lzIHZhbHVlIGNvbW1vbiB0byBib3RoIGNyaXRpY2FsCit2YWx1ZXMuIFRvIG1ha2UgbGlmZSBlYXNpZXIgdG8gdXNlci1zcGFjZSBhcHBsaWNhdGlvbnMsIHR3byBhYnNvbHV0ZSB2YWx1ZXMKK2FyZSBleHBvcnRlZCwgb25lIGZvciBlYWNoIGNoYW5uZWwsIGJ1dCB0aGVzZSB2YWx1ZXMgYXJlIG9mIGNvdXJzZSBsaW5rZWQuCitPbmx5IHRoZSBsb2NhbCBoeXN0ZXJlc2lzIGNhbiBiZSBzZXQgZnJvbSB1c2VyLXNwYWNlLCBhbmQgdGhlIHNhbWUgZGVsdGEKK2FwcGxpZXMgdG8gdGhlIHJlbW90ZSBoeXN0ZXJlc2lzLgorCitUaGUgbG05MCBkcml2ZXIgd2lsbCBub3QgdXBkYXRlIGl0cyB2YWx1ZXMgbW9yZSBmcmVxdWVudGx5IHRoYW4gY29uZmlndXJlZCB3aXRoCit0aGUgdXBkYXRlX2ludGVydmFsIGF0dHJpYnV0ZTsgcmVhZGluZyB0aGVtIG1vcmUgb2Z0ZW4gd2lsbCBkbyBubyBoYXJtLCBidXQgd2lsbAorcmV0dXJuICdvbGQnIHZhbHVlcy4KKworU01CdXMgQWxlcnQgU3VwcG9ydAorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBoYXMgYmFzaWMgc3VwcG9ydCBmb3IgU01CdXMgYWxlcnQuIFdoZW4gYW4gYWxlcnQgaXMgcmVjZWl2ZWQsCit0aGUgc3RhdHVzIHJlZ2lzdGVyIGlzIHJlYWQgYW5kIHRoZSBmYXVsdHkgdGVtcGVyYXR1cmUgY2hhbm5lbCBpcyBsb2dnZWQuCisKK1RoZSBBbmFsb2cgRGV2aWNlcyBjaGlwcyAoQURNMTAzMiwgQURUNzQ2MSBhbmQgQURUNzQ2MUEpIGFuZCBPTgorU2VtaWNvbmR1Y3RvciBjaGlwcyAoTkNUMTAwOCkgZG8gbm90IGltcGxlbWVudCB0aGUgU01CdXMgYWxlcnQgcHJvdG9jb2wKK3Byb3Blcmx5IHNvIGFkZGl0aW9uYWwgY2FyZSBpcyBuZWVkZWQ6IHRoZSBBTEVSVCBvdXRwdXQgaXMgZGlzYWJsZWQgd2hlbgorYW4gYWxlcnQgaXMgcmVjZWl2ZWQsIGFuZCBpcyByZS1lbmFibGVkIG9ubHkgd2hlbiB0aGUgYWxhcm0gaXMgZ29uZS4KK090aGVyd2lzZSB0aGUgY2hpcCB3b3VsZCBibG9jayBhbGVydHMgZnJvbSBvdGhlciBjaGlwcyBpbiB0aGUgYnVzIGFzIGxvbmcKK2FzIHRoZSBhbGFybSBpcyBhY3RpdmUuCisKK1BFQyBTdXBwb3J0CistLS0tLS0tLS0tLQorCitUaGUgQURNMTAzMiBpcyB0aGUgb25seSBjaGlwIG9mIHRoZSBmYW1pbHkgd2hpY2ggc3VwcG9ydHMgUEVDLiBJdCBkb2VzCitub3Qgc3VwcG9ydCBQRUMgb24gYWxsIHRyYW5zYWN0aW9ucyB0aG91Z2gsIHNvIHNvbWUgY2FyZSBtdXN0IGJlIHRha2VuLgorCitXaGVuIHJlYWRpbmcgYSByZWdpc3RlciB2YWx1ZSwgdGhlIFBFQyBieXRlIGlzIGNvbXB1dGVkIGFuZCBzZW50IGJ5IHRoZQorQURNMTAzMiBjaGlwLiBIb3dldmVyLCBpbiB0aGUgY2FzZSBvZiBhIGNvbWJpbmVkIHRyYW5zYWN0aW9uIChTTUJ1cyBSZWFkCitCeXRlKSwgdGhlIEFETTEwMzIgY29tcHV0ZXMgdGhlIENSQyB2YWx1ZSBvdmVyIG9ubHkgdGhlIHNlY29uZCBoYWxmIG9mCit0aGUgbWVzc2FnZSByYXRoZXIgdGhhbiBpdHMgZW50aXJldHksIGJlY2F1c2UgaXQgdGhpbmtzIHRoZSBmaXJzdCBoYWxmCitvZiB0aGUgbWVzc2FnZSBiZWxvbmdzIHRvIGEgZGlmZmVyZW50IHRyYW5zYWN0aW9uLiBBcyBhIHJlc3VsdCwgdGhlIENSQwordmFsdWUgZGlmZmVycyBmcm9tIHdoYXQgdGhlIFNNQnVzIG1hc3RlciBleHBlY3RzLCBhbmQgYWxsIHJlYWRzIGZhaWwuCisKK0ZvciB0aGlzIHJlYXNvbiwgdGhlIGxtOTAgZHJpdmVyIHdpbGwgZW5hYmxlIFBFQyBmb3IgdGhlIEFETTEwMzIgb25seSBpZgordGhlIGJ1cyBzdXBwb3J0cyB0aGUgU01CdXMgU2VuZCBCeXRlIGFuZCBSZWNlaXZlIEJ5dGUgdHJhbnNhY3Rpb24gdHlwZXMuCitUaGVzZSB0cmFuc2FjdGlvbnMgd2lsbCBiZSB1c2VkIHRvIHJlYWQgcmVnaXN0ZXIgdmFsdWVzLCBpbnN0ZWFkIG9mCitTTUJ1cyBSZWFkIEJ5dGUsIGFuZCBQRUMgd2lsbCB3b3JrIHByb3Blcmx5LgorCitBZGRpdGlvbmFsbHksIHRoZSBBRE0xMDMyIGRvZXNuJ3Qgc3VwcG9ydCBTTUJ1cyBTZW5kIEJ5dGUgd2l0aCBQRUMuCitJbnN0ZWFkLCBpdCB3aWxsIHRyeSB0byB3cml0ZSB0aGUgUEVDIHZhbHVlIHRvIHRoZSByZWdpc3RlciAoYmVjYXVzZSB0aGUKK1NNQnVzIFNlbmQgQnl0ZSB0cmFuc2FjdGlvbiB3aXRoIFBFQyBpcyBzaW1pbGFyIHRvIGEgV3JpdGUgQnl0ZSB0cmFuc2FjdGlvbgord2l0aG91dCBQRUMpLCB3aGljaCBpcyBub3Qgd2hhdCB3ZSB3YW50LiBUaHVzLCBQRUMgaXMgZXhwbGljaXRseSBkaXNhYmxlZAorb24gU01CdXMgU2VuZCBCeXRlIHRyYW5zYWN0aW9ucyBpbiB0aGUgbG05MCBkcml2ZXIuCisKK1BFQyBvbiBieXRlIGRhdGEgdHJhbnNhY3Rpb25zIHJlcHJlc2VudHMgYSBzaWduaWZpY2FudCBpbmNyZWFzZSBpbiBiYW5kd2lkdGgKK3VzYWdlICgrMzMlIGZvciB3cml0ZXMsICsyNSUgZm9yIHJlYWRzKSBpbiBub3JtYWwgY29uZGl0aW9ucy4gV2l0aCB0aGUgbmVlZAordG8gdXNlIHR3byBTTUJ1cyB0cmFuc2FjdGlvbiBmb3IgcmVhZHMsIHRoaXMgb3ZlcmhlYWQganVtcHMgdG8gKzUwJS4gV29yc2UsCit0d28gdHJhbnNhY3Rpb25zIHdpbGwgdHlwaWNhbGx5IG1lYW4gdHdpY2UgYXMgbXVjaCBkZWxheSB3YWl0aW5nIGZvcgordHJhbnNhY3Rpb24gY29tcGxldGlvbiwgZWZmZWN0aXZlbHkgZG91YmxpbmcgdGhlIHJlZ2lzdGVyIGNhY2hlIHJlZnJlc2ggdGltZS4KK0kgZ3Vlc3MgcmVsaWFiaWxpdHkgY29tZXMgYXQgYSBwcmljZSwgYnV0IGl0J3MgcXVpdGUgZXhwZW5zaXZlIHRoaXMgdGltZS4KKworU28sIGFzIG5vdCBldmVyeW9uZSBtaWdodCBlbmpveSB0aGUgc2xvd2Rvd24sIFBFQyBjYW4gYmUgZGlzYWJsZWQgdGhyb3VnaAorc3lzZnMuIEp1c3Qgd3JpdGUgMCB0byB0aGUgInBlYyIgZmlsZSBhbmQgUEVDIHdpbGwgYmUgZGlzYWJsZWQuIFdyaXRlIDEKK3RvIHRoYXQgZmlsZSB0byBlbmFibGUgUEVDIGFnYWluLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9sbTkyIGIvRG9jdW1lbnRhdGlvbi9od21vbi9sbTkyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyZjY4YWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2xtOTIKQEAgLTAsMCArMSwzNyBAQAorS2VybmVsIGRyaXZlciBsbTkyCis9PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgTE05MgorICAgIFByZWZpeDogJ2xtOTInCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDQ4IC0gMHg0YgorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5uYXRpb25hbC5jb20vcGYvTE0vTE05Mi5odG1sCisgICogTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBMTTc2CisgICAgUHJlZml4OiAnbG05MicKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZSwgZm9yY2UgcGFyYW1ldGVyIG5lZWRlZAorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5uYXRpb25hbC5jb20vcGYvTE0vTE03Ni5odG1sCisgICogTWF4aW0gTUFYNjYzMy9NQVg2NjM0L01BWDY2MzUKKyAgICBQcmVmaXg6ICdsbTkyJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHg0OCAtIDB4NGIKKyAgICBNQVg2NjMzIHdpdGggYWRkcmVzcyBpbiAweDQwIC0gMHg0NywgMHg0YyAtIDB4NGYgbmVlZHMgZm9yY2UgcGFyYW1ldGVyCisgICAgYW5kIE1BWDY2MzQgd2l0aCBhZGRyZXNzIGluIDB4NGMgLSAweDRmIG5lZWRzIGZvcmNlIHBhcmFtZXRlcgorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5tYXhpbS1pYy5jb20vcXVpY2tfdmlldzIuY2ZtL3F2X3BrLzMwNzQKKworQXV0aG9yczoKKyAgICAgICAgQWJyYWhhbSB2YW4gZGVyIE1lcndlIDxhYnJhaGFtQDJkM2QuY28uemE+CisgICAgICAgIEplYW4gRGVsdmFyZSA8amRlbHZhcmVAc3VzZS5kZT4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgaW1wbGVtZW50cyBzdXBwb3J0IGZvciB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBMTTkyCit0ZW1wZXJhdHVyZSBzZW5zb3IuCisKK0VhY2ggTE05MiB0ZW1wZXJhdHVyZSBzZW5zb3Igc3VwcG9ydHMgYSBzaW5nbGUgdGVtcGVyYXR1cmUgc2Vuc29yLiBUaGVyZSBhcmUKK2FsYXJtcyBmb3IgaGlnaCwgbG93LCBhbmQgY3JpdGljYWwgdGhyZXNob2xkcy4gVGhlcmUncyBhbHNvIGFuIGh5c3RlcmVzaXMgdG8KK2NvbnRyb2wgdGhlIHRocmVzaG9sZHMgZm9yIHJlc2V0dGluZyBhbGFybXMuCisKK1N1cHBvcnQgd2FzIGFkZGVkIGxhdGVyIGZvciB0aGUgTE03NiBhbmQgTWF4aW0gTUFYNjYzMy9NQVg2NjM0L01BWDY2MzUsCit3aGljaCBhcmUgbW9zdGx5IGNvbXBhdGlibGUuIFRoZXkgaGF2ZSBub3QgYWxsIGJlZW4gdGVzdGVkLCBzbyB5b3UKK21heSBuZWVkIHRvIHVzZSB0aGUgZm9yY2UgcGFyYW1ldGVyLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9sbTkzIGIvRG9jdW1lbnRhdGlvbi9od21vbi9sbTkzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzYjJhZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2xtOTMKQEAgLTAsMCArMSwzMDkgQEAKK0tlcm5lbCBkcml2ZXIgbG05MworPT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBOYXRpb25hbCBTZW1pY29uZHVjdG9yIExNOTMKKyAgICBQcmVmaXggJ2xtOTMnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJjLTB4MmUKKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cubmF0aW9uYWwuY29tL2RzLmNnaS9MTS9MTTkzLnBkZgorICAqIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgTE05NAorICAgIFByZWZpeCAnbG05NCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MmMtMHgyZQorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5uYXRpb25hbC5jb20vZHMuY2dpL0xNL0xNOTQucGRmCisKK0F1dGhvcnM6CisJTWFyayBNLiBIb2ZmbWFuIDxtaG9mZm1hbkBsaWdodGxpbmsuY29tPgorCVBvcnRlZCB0byAyLjYgYnkgRXJpYyBKLiBCb3dlcnNveCA8ZXJpY2JAYXNwc3lzLmNvbT4KKwlBZGFwdGVkIHRvIDIuNi4yMCBieSBDYXJzdGVuIEVtZGUgPGNlQG9zYWRsLm9yZz4KKwlNb2RpZmllZCBmb3IgbWFpbmxpbmUgaW50ZWdyYXRpb24gYnkgSGFucyBKLiBLb2NoIDxoamtAaGFuc2prb2NoLmRlPgorCitNb2R1bGUgUGFyYW1ldGVycworLS0tLS0tLS0tLS0tLS0tLS0KKworKiBpbml0OiBpbnRlZ2VyCisgIFNldCB0byBub24temVybyB0byBmb3JjZSBzb21lIGluaXRpYWxpemF0aW9ucyAoZGVmYXVsdCBpcyAwKS4KKyogZGlzYWJsZV9ibG9jazogaW50ZWdlcgorICBBICIwIiBhbGxvd3MgU01CdXMgYmxvY2sgZGF0YSB0cmFuc2FjdGlvbnMgaWYgdGhlIGhvc3Qgc3VwcG9ydHMgdGhlbS4gIEEgIjEiCisgIGRpc2FibGVzIFNNQnVzIGJsb2NrIGRhdGEgdHJhbnNhY3Rpb25zLiAgVGhlIGRlZmF1bHQgaXMgMC4KKyogdmNjcF9saW1pdF90eXBlOiBpbnRlZ2VyIGFycmF5ICgyKQorICBDb25maWd1cmVzIGluNyBhbmQgaW44IGxpbWl0IHR5cGUsIHdoZXJlIDAgbWVhbnMgYWJzb2x1dGUgYW5kIG5vbi16ZXJvCisgIG1lYW5zIHJlbGF0aXZlLiAgIlJlbGF0aXZlIiBoZXJlIHJlZmVycyB0byAiRHluYW1pYyBWY2NwIE1vbml0b3JpbmcgdXNpbmcKKyAgVklEIiBmcm9tIHRoZSBkYXRhc2hlZXQuICBJdCBncmVhdGx5IHNpbXBsaWZpZXMgdGhlIGludGVyZmFjZSB0byBhbGxvdworICBvbmx5IG9uZSBzZXQgb2YgbGltaXRzIChhYnNvbHV0ZSBvciByZWxhdGl2ZSkgdG8gYmUgaW4gb3BlcmF0aW9uIGF0IGEKKyAgdGltZSAoZXZlbiB0aG91Z2ggdGhlIGhhcmR3YXJlIGlzIGNhcGFibGUgb2YgZW5hYmxpbmcgYm90aCkuICBUaGVyZSdzCisgIG5vdCBhIGNvbXBlbGxpbmcgdXNlIGNhc2UgZm9yIGVuYWJsaW5nIGJvdGggYXQgb25jZSwgYW55d2F5LiAgVGhlIGRlZmF1bHQKKyAgaXMgIjAsMCIuCisqIHZpZF9hZ3RsOiBpbnRlZ2VyCisgIEEgIjAiIGNvbmZpZ3VyZXMgdGhlIFZJRCBwaW5zIGZvciBWKGloKSA9IDIuMVYgbWluLCBWKGlsKSA9IDAuOFYgbWF4LgorICBBICIxIiBjb25maWd1cmVzIHRoZSBWSUQgcGlucyBmb3IgVihpaCkgPSAwLjhWIG1pbiwgVihpbCkgPSAwLjRWIG1heC4KKyAgKFRoZSBsYXR0ZXIgc2V0dGluZyBpcyByZWZlcnJlZCB0byBhcyBBR1RMKyBDb21wYXRpYmxlIGluIHRoZSBkYXRhc2hlZXQuKQorICBJLmUuIHRoaXMgcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBWSUQgcGluIGlucHV0IHRocmVzaG9sZHM7IGlmIHlvdXIgVklECisgIGlucHV0cyBhcmUgbm90IHdvcmtpbmcsIHRyeSBjaGFuZ2luZyB0aGlzLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgIjAiLgorCisKK0hhcmR3YXJlIERlc2NyaXB0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCisoZnJvbSB0aGUgZGF0YXNoZWV0KQorCitUaGUgTE05MyBoYXJkd2FyZSBtb25pdG9yIGhhcyBhIHR3byB3aXJlIGRpZ2l0YWwgaW50ZXJmYWNlIGNvbXBhdGlibGUgd2l0aAorU01CdXMgMi4wLiBVc2luZyBhbiA4LWJpdCBBREMsIHRoZSBMTTkzIG1lYXN1cmVzIHRoZSB0ZW1wZXJhdHVyZSBvZiB0d28gcmVtb3RlCitkaW9kZSBjb25uZWN0ZWQgdHJhbnNpc3RvcnMgYXMgd2VsbCBhcyBpdHMgb3duIGRpZSBhbmQgMTYgcG93ZXIgc3VwcGx5Cit2b2x0YWdlcy4gVG8gc2V0IGZhbiBzcGVlZCwgdGhlIExNOTMgaGFzIHR3byBQV00gb3V0cHV0cyB0aGF0IGFyZSBlYWNoCitjb250cm9sbGVkIGJ5IHVwIHRvIGZvdXIgdGVtcGVyYXR1cmUgem9uZXMuIFRoZSBmYW5jb250cm9sIGFsZ29yaXRobSBpcyBsb29rdXAKK3RhYmxlIGJhc2VkLiBUaGUgTE05MyBpbmNsdWRlcyBhIGRpZ2l0YWwgZmlsdGVyIHRoYXQgY2FuIGJlIGludm9rZWQgdG8gc21vb3RoCit0ZW1wZXJhdHVyZSByZWFkaW5ncyBmb3IgYmV0dGVyIGNvbnRyb2wgb2YgZmFuIHNwZWVkLiBUaGUgTE05MyBoYXMgZm91cgordGFjaG9tZXRlciBpbnB1dHMgdG8gbWVhc3VyZSBmYW4gc3BlZWQuIExpbWl0IGFuZCBzdGF0dXMgcmVnaXN0ZXJzIGZvciBhbGwKK21lYXN1cmVkIHZhbHVlcyBhcmUgaW5jbHVkZWQuIFRoZSBMTTkzIGJ1aWxkcyB1cG9uIHRoZSBmdW5jdGlvbmFsaXR5IG9mCitwcmV2aW91cyBtb3RoZXJib2FyZCBtYW5hZ2VtZW50IEFTSUNzIGFuZCB1c2VzIHNvbWUgb2YgdGhlIExNODUncyBmZWF0dXJlcworKGkuZS4gc21hcnQgdGFjaG9tZXRlciBtb2RlKS4gSXQgYWxzbyBhZGRzIG1lYXN1cmVtZW50IGFuZCBjb250cm9sIHN1cHBvcnQKK2ZvciBkeW5hbWljIFZjY3AgbW9uaXRvcmluZyBhbmQgUFJPQ0hPVC4gSXQgaXMgZGVzaWduZWQgdG8gbW9uaXRvciBhIGR1YWwKK3Byb2Nlc3NvciBYZW9uIGNsYXNzIG1vdGhlcmJvYXJkIHdpdGggYSBtaW5pbXVtIG9mIGV4dGVybmFsIGNvbXBvbmVudHMuCisKK0xNOTQgaXMgYWxzbyBzdXBwb3J0ZWQgaW4gTE05MyBjb21wYXRpYmxlIG1vZGUuIEV4dHJhIHNlbnNvcnMgYW5kIGZlYXR1cmVzIG9mCitMTTk0IGFyZSBub3Qgc3VwcG9ydGVkLgorCisKK1VzZXIgSW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLQorCisjUFJPQ0hPVDoKKworVGhlIExNOTMgY2FuIG1vbml0b3IgdHdvICNQUk9DSE9UIHNpZ25hbHMuICBUaGUgcmVzdWx0cyBhcmUgZm91bmQgaW4gdGhlCitzeXNmcyBmaWxlcyBwcm9jaG90MSwgcHJvY2hvdDIsIHByb2Nob3QxX2F2ZywgcHJvY2hvdDJfYXZnLCBwcm9jaG90MV9tYXgsCithbmQgcHJvY2hvdDJfbWF4LiAgcHJvY2hvdDFfbWF4IGFuZCBwcm9jaG90Ml9tYXggY29udGFpbiB0aGUgdXNlciBsaW1pdHMKK2ZvciAjUFJPQ0hPVDEgYW5kICNQUk9DSE9UMiwgcmVzcGVjdGl2ZWx5LiAgcHJvY2hvdDEgYW5kIHByb2Nob3QyIGNvbnRhaW4KK3RoZSBjdXJyZW50IHJlYWRpbmdzIGZvciB0aGUgbW9zdCByZWNlbnQgY29tcGxldGUgdGltZSBpbnRlcnZhbC4gIFRoZQordmFsdWUgb2YgcHJvY2hvdDFfYXZnIGFuZCBwcm9jaG90Ml9hdmcgaXMgc29tZXRoaW5nIGxpa2UgYSAyIHBlcmlvZAorZXhwb25lbnRpYWwgbW92aW5nIGF2ZXJhZ2UgKGJ1dCBub3QgcXVpdGUgLSBjaGVjayB0aGUgZGF0YXNoZWV0KS4gTm90ZQordGhhdCB0aGlzIHRoaXJkIHZhbHVlIGlzIGNhbGN1bGF0ZWQgYnkgdGhlIGNoaXAgaXRzZWxmLiAgQWxsIHZhbHVlcyByYW5nZQorZnJvbSAwLTI1NSB3aGVyZSAwIGluZGljYXRlcyBubyB0aHJvdHRsaW5nLCBhbmQgMjU1IGluZGljYXRlcyA+IDk5LjYlLgorCitUaGUgbW9uaXRvcmluZyBpbnRlcnZhbHMgZm9yIHRoZSB0d28gI1BST0NIT1Qgc2lnbmFscyBpcyBhbHNvIGNvbmZpZ3VyYWJsZS4KK1RoZXNlIGludGVydmFscyBjYW4gYmUgZm91bmQgaW4gdGhlIHN5c2ZzIGZpbGVzIHByb2Nob3QxX2ludGVydmFsIGFuZAorcHJvY2hvdDJfaW50ZXJ2YWwuICBUaGUgdmFsdWVzIGluIHRoZXNlIGZpbGVzIHNwZWNpZnkgdGhlIGludGVydmFscyBmb3IKKyNQMV9QUk9DSE9UIGFuZCAjUDJfUFJPQ0hPVCwgcmVzcGVjdGl2ZWx5LiAgU2VsZWN0aW5nIGEgdmFsdWUgbm90IGluIHRoaXMKK2xpc3Qgd2lsbCBjYXVzZSB0aGUgZHJpdmVyIHRvIHVzZSB0aGUgbmV4dCBsYXJnZXN0IGludGVydmFsLiAgVGhlIGF2YWlsYWJsZQoraW50ZXJ2YWxzIGFyZSAoaW4gc2Vjb25kcyk6CisKKyNQUk9DSE9UIGludGVydmFsczogMC43MywgMS40NiwgMi45LCA1LjgsIDExLjcsIDIzLjMsIDQ2LjYsIDkzLjIsIDE4NiwgMzcyCisKK0l0IGlzIHBvc3NpYmxlIHRvIGNvbmZpZ3VyZSB0aGUgTE05MyB0byBsb2dpY2FsbHkgc2hvcnQgdGhlIHR3byAjUFJPQ0hPVAorc2lnbmFscy4gIEkuZS4gd2hlbiAjUDFfUFJPQ0hPVCBpcyBhc3NlcnRlZCwgdGhlIExNOTMgd2lsbCBhdXRvbWF0aWNhbGx5Cithc3NlcnQgI1AyX1BST0NIT1QsIGFuZCB2aWNlLXZlcnNhLiAgVGhpcyBtb2RlIGlzIGVuYWJsZWQgYnkgd3JpdGluZyBhCitub24temVybyBpbnRlZ2VyIHRvIHRoZSBzeXNmcyBmaWxlIHByb2Nob3Rfc2hvcnQuCisKK1RoZSBMTTkzIGNhbiBhbHNvIG92ZXJyaWRlIHRoZSAjUFJPQ0hPVCBwaW5zIGJ5IGRyaXZpbmcgYSBQV00gc2lnbmFsIG9udG8KK29uZSBvciBib3RoIG9mIHRoZW0uICBXaGVuIG92ZXJyaWRkZW4sIHRoZSBzaWduYWwgaGFzIGEgcGVyaW9kIG9mIDMuNTYgbXMsCithIG1pbmltdW0gcHVsc2Ugd2lkdGggb2YgNSBjbG9ja3MgKGF0IDIyLjVrSHogPT4gNi4yNSUgZHV0eSBjeWNsZSksIGFuZAorYSBtYXhpbXVtIHB1bHNlIHdpZHRoIG9mIDgwIGNsb2NrcyAoYXQgMjIuNWtIeiA9PiA5OS44OCUgZHV0eSBjeWNsZSkuCisKK1RoZSBzeXNmcyBmaWxlcyBwcm9jaG90MV9vdmVycmlkZSBhbmQgcHJvY2hvdDJfb3ZlcnJpZGUgY29udGFpbiBib29sZWFuCitpbnRlZ2VycyB3aGljaCBlbmFibGUgb3IgZGlzYWJsZSB0aGUgb3ZlcnJpZGUgZnVuY3Rpb24gZm9yICNQMV9QUk9DSE9UIGFuZAorI1AyX1BST0NIT1QsIHJlc3BlY3RpdmVseS4gIFRoZSBzeXNmcyBmaWxlIHByb2Nob3Rfb3ZlcnJpZGVfZHV0eV9jeWNsZQorY29udGFpbnMgYSB2YWx1ZSBjb250cm9sbGluZyB0aGUgZHV0eSBjeWNsZSBmb3IgdGhlIFBXTSBzaWduYWwgdXNlZCB3aGVuCit0aGUgb3ZlcnJpZGUgZnVuY3Rpb24gaXMgZW5hYmxlZC4gIFRoaXMgdmFsdWUgcmFuZ2VzIGZyb20gMCB0byAxNSwgd2l0aCAwCitpbmRpY2F0aW5nIG1pbmltdW0gZHV0eSBjeWNsZSBhbmQgMTUgaW5kaWNhdGluZyBtYXhpbXVtLgorCisjVlJEX0hPVDoKKworVGhlIExNOTMgY2FuIG1vbml0b3IgdHdvICNWUkRfSE9UIHNpZ25hbHMuIFRoZSByZXN1bHRzIGFyZSBmb3VuZCBpbiB0aGUKK3N5c2ZzIGZpbGVzIHZyZGhvdDEgYW5kIHZyZGhvdDIuIFRoZXJlIGlzIG9uZSB2YWx1ZSBwZXIgZmlsZTogYSBib29sZWFuIGZvcgord2hpY2ggMSBpbmRpY2F0ZXMgI1ZSRF9IT1QgaXMgYXNzZXJ0ZWQgYW5kIDAgaW5kaWNhdGVzIGl0IGlzIG5lZ2F0ZWQuIFRoZXNlCitmaWxlcyBhcmUgcmVhZC1vbmx5LgorCitTbWFydCBUYWNoIE1vZGU6CisKKyhmcm9tIHRoZSBkYXRhc2hlZXQpCisKKwlJZiBhIGZhbiBpcyBkcml2ZW4gdXNpbmcgYSBsb3ctc2lkZSBkcml2ZSBQV00sIHRoZSB0YWNob21ldGVyCisJb3V0cHV0IG9mIHRoZSBmYW4gaXMgY29ycnVwdGVkLiBUaGUgTE05MyBpbmNsdWRlcyBzbWFydCB0YWNob21ldGVyCisJY2lyY3VpdHJ5IHRoYXQgYWxsb3dzIGFuIGFjY3VyYXRlIHRhY2hvbWV0ZXIgcmVhZGluZyB0byBiZQorCWFjaGlldmVkIGRlc3BpdGUgdGhlIHNpZ25hbCBjb3JydXB0aW9uLiAgSW4gc21hcnQgdGFjaCBtb2RlIGFsbAorCWZvdXIgc2lnbmFscyBhcmUgbWVhc3VyZWQgd2l0aGluIDQgc2Vjb25kcy4KKworU21hcnQgdGFjaCBtb2RlIGlzIGVuYWJsZWQgYnkgdGhlIGRyaXZlciBieSB3cml0aW5nIDEgb3IgMiAoYXNzb2NpYXRpbmcgdGhlCit0aGUgZmFuIHRhY2hvbWV0ZXIgd2l0aCBhIHB3bSkgdG8gdGhlIHN5c2ZzIGZpbGUgZmFuPG4+X3NtYXJ0X3RhY2guICBBIHplcm8KK3dpbGwgZGlzYWJsZSB0aGUgZnVuY3Rpb24gZm9yIHRoYXQgZmFuLiAgTm90ZSB0aGF0IFNtYXJ0IHRhY2ggbW9kZSBjYW5ub3QgYmUKK2VuYWJsZWQgaWYgdGhlIFBXTSBvdXRwdXQgZnJlcXVlbmN5IGlzIDIyNTAwIEh6IChzZWUgYmVsb3cpLgorCitNYW51YWwgUFdNOgorCitUaGUgTE05MyBoYXMgYSBmaXhlZCBvciBvdmVycmlkZSBtb2RlIGZvciB0aGUgdHdvIFBXTSBvdXRwdXRzIChhbHRob3VnaCwgdGhlcmUKK2FyZSBzdGlsbCBzb21lIGNvbmRpdGlvbnMgdGhhdCB3aWxsIG92ZXJyaWRlIGV2ZW4gdGhpcyBtb2RlIC0gc2VlIHNlY3Rpb24KKzE1LjEwLjYgb2YgdGhlIGRhdGFzaGVldCBmb3IgZGV0YWlscy4pICBUaGUgc3lzZnMgZmlsZXMgcHdtMV9vdmVycmlkZQorYW5kIHB3bTJfb3ZlcnJpZGUgYXJlIHVzZWQgdG8gZW5hYmxlIHRoaXMgbW9kZTsgZWFjaCBpcyBhIGJvb2xlYW4gaW50ZWdlcgord2hlcmUgMCBkaXNhYmxlcyBhbmQgMSBlbmFibGVzIHRoZSBtYW51YWwgY29udHJvbCBtb2RlLiAgVGhlIHN5c2ZzIGZpbGVzIHB3bTEKK2FuZCBwd20yIGFyZSB1c2VkIHRvIHNldCB0aGUgbWFudWFsIGR1dHkgY3ljbGU7IGVhY2ggaXMgYW4gaW50ZWdlciAoMC0yNTUpCit3aGVyZSAwIGlzIDAlIGR1dHkgY3ljbGUsIGFuZCAyNTUgaXMgMTAwJS4gIE5vdGUgdGhhdCB0aGUgZHV0eSBjeWNsZSB2YWx1ZXMKK2FyZSBjb25zdHJhaW5lZCBieSB0aGUgaGFyZHdhcmUuIFNlbGVjdGluZyBhIHZhbHVlIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUKK3dpbGwgY2F1c2UgdGhlIGRyaXZlciB0byB1c2UgdGhlIG5leHQgbGFyZ2VzdCB2YWx1ZS4gIEFsc28gbm90ZTogd2hlbiBtYW51YWwKK1BXTSBtb2RlIGlzIGRpc2FibGVkLCB0aGUgdmFsdWUgb2YgcHdtMSBhbmQgcHdtMiBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgZHV0eQorY3ljbGUgY2hvc2VuIGJ5IHRoZSBoL3cuCisKK1BXTSBPdXRwdXQgRnJlcXVlbmN5OgorCitUaGUgTE05MyBzdXBwb3J0cyBzZXZlcmFsIGRpZmZlcmVudCBmcmVxdWVuY2llcyBmb3IgdGhlIFBXTSBvdXRwdXQgY2hhbm5lbHMuCitUaGUgc3lzZnMgZmlsZXMgcHdtMV9mcmVxIGFuZCBwd20yX2ZyZXEgYXJlIHVzZWQgdG8gc2VsZWN0IHRoZSBmcmVxdWVuY3kuIFRoZQorZnJlcXVlbmN5IHZhbHVlcyBhcmUgY29uc3RyYWluZWQgYnkgdGhlIGhhcmR3YXJlLiAgU2VsZWN0aW5nIGEgdmFsdWUgd2hpY2ggaXMKK25vdCBhdmFpbGFibGUgd2lsbCBjYXVzZSB0aGUgZHJpdmVyIHRvIHVzZSB0aGUgbmV4dCBsYXJnZXN0IHZhbHVlLiAgQWxzbyBub3RlCit0aGF0IHRoaXMgcGFyYW1ldGVyIGhhcyBpbXBsaWNhdGlvbnMgZm9yIHRoZSBTbWFydCBUYWNoIE1vZGUgKHNlZSBhYm92ZSkuCisKK1BXTSBPdXRwdXQgRnJlcXVlbmNpZXMgKGluIEh6KTogMTIsIDM2LCA0OCwgNjAsIDcyLCA4NCwgOTYsIDIyNTAwIChkZWZhdWx0KQorCitBdXRvbWF0aWMgUFdNOgorCitUaGUgTE05MyBpcyBjYXBhYmxlIG9mIGNvbXBsZXggYXV0b21hdGljIGZhbiBjb250cm9sLCB3aXRoIG1hbnkgZGlmZmVyZW50Citwb2ludHMgb2YgY29uZmlndXJhdGlvbi4gIFRvIHN0YXJ0LCBlYWNoIFBXTSBvdXRwdXQgY2FuIGJlIGJvdW5kIHRvIGFueQorY29tYmluYXRpb24gb2YgZWlnaHQgY29udHJvbCBzb3VyY2VzLiAgVGhlIGZpbmFsIFBXTSBpcyB0aGUgbGFyZ2VzdCBvZiBhbGwKK2luZGl2aWR1YWwgY29udHJvbCBzb3VyY2VzIHRvIHdoaWNoIHRoZSBQV00gb3V0cHV0IGlzIGJvdW5kLgorCitUaGUgZWlnaHQgY29udHJvbCBzb3VyY2VzIGFyZTogdGVtcDEtdGVtcDQgKGFrYSAiem9uZXMiIGluIHRoZSBkYXRhc2hlZXQpLAorI1BST0NIT1QgMSAmIDIsIGFuZCAjVlJESE9UIDEgJiAyLiAgVGhlIGJpbmRpbmdzIGFyZSBleHByZXNzZWQgYXMgYSBiaXRtYXNrCitpbiB0aGUgc3lzZnMgZmlsZXMgcHdtPG4+X2F1dG9fY2hhbm5lbHMsIHdoZXJlIGEgIjEiIGVuYWJsZXMgdGhlIGJpbmRpbmcsIGFuZAorYSAiMCIgZGlzYWJsZXMgaXQuIFRoZSBoL3cgZGVmYXVsdCBpcyAweDBmIChhbGwgdGVtcGVyYXR1cmVzIGJvdW5kKS4KKworCTB4MDEgLSBUZW1wIDEKKwkweDAyIC0gVGVtcCAyCisJMHgwNCAtIFRlbXAgMworCTB4MDggLSBUZW1wIDQKKwkweDEwIC0gI1BST0NIT1QgMQorCTB4MjAgLSAjUFJPQ0hPVCAyCisJMHg0MCAtICNWUkRIT1QgMQorCTB4ODAgLSAjVlJESE9UIDIKKworVGhlIGZ1bmN0aW9uIHkgPSBmKHgpIHRha2VzIGEgc291cmNlIHRlbXBlcmF0dXJlIHggdG8gYSBQV00gb3V0cHV0IHkuICBUaGlzCitmdW5jdGlvbiBvZiB0aGUgTE05MyBpcyBkZXJpdmVkIGZyb20gYSBiYXNlIHRlbXBlcmF0dXJlIGFuZCBhIHRhYmxlIG9mIDEyCit0ZW1wZXJhdHVyZSBvZmZzZXRzLiAgVGhlIGJhc2UgdGVtcGVyYXR1cmUgaXMgZXhwcmVzc2VkIGluIGRlZ3JlZXMgQyBpbiB0aGUKK3N5c2ZzIGZpbGVzIHRlbXA8bj5fYXV0b19iYXNlLiAgVGhlIG9mZnNldHMgYXJlIGV4cHJlc3NlZCBpbiBjdW11bGF0aXZlCitkZWdyZWVzIEMsIHdpdGggdGhlIHZhbHVlIG9mIG9mZnNldCA8aT4gZm9yIHRlbXBlcmF0dXJlIHZhbHVlIDxuPiBiZWluZworY29udGFpbmVkIGluIHRoZSBmaWxlIHRlbXA8bj5fYXV0b19vZmZzZXQ8aT4uICBFLmcuIGlmIHRoZSBiYXNlIHRlbXBlcmF0dXJlCitpcyA0MEM6CisKKyAgICAgb2Zmc2V0ICMJdGVtcDxuPl9hdXRvX29mZnNldDxpPglyYW5nZQkJcHdtCisJIDEJCTAJCS0JCSAyNS4wMCUKKwkgMgkJMAkJLQkJIDI4LjU3JQorCSAzCQkxCQk0MEMgLSA0MUMJIDMyLjE0JQorCSA0CQkxCQk0MUMgLSA0MkMJIDM1LjcxJQorCSA1CQkyCQk0MkMgLSA0NEMJIDM5LjI5JQorCSA2CQkyCQk0NEMgLSA0NkMJIDQyLjg2JQorCSA3CQkyCQk0OEMgLSA1MEMJIDQ2LjQzJQorCSA4CQkyCQk1MEMgLSA1MkMJIDUwLjAwJQorCSA5CQkyCQk1MkMgLSA1NEMJIDUzLjU3JQorCTEwCQkyCQk1NEMgLSA1NkMJIDU3LjE0JQorCTExCQkyCQk1NkMgLSA1OEMJIDcxLjQzJQorCTEyCQkyCQk1OEMgLSA2MEMJIDg1LjcxJQorCQkJCQk+IDYwQwkJMTAwLjAwJQorCitWYWxpZCBvZmZzZXRzIGFyZSBpbiB0aGUgcmFuZ2UgMEMgPD0geCA8PSA3LjVDIGluIDAuNUMgaW5jcmVtZW50cy4KKworVGhlcmUgaXMgYW4gaW5kZXBlbmRlbnQgYmFzZSB0ZW1wZXJhdHVyZSBmb3IgZWFjaCB0ZW1wZXJhdHVyZSBjaGFubmVsLiBOb3RlLAoraG93ZXZlciwgdGhlcmUgYXJlIG9ubHkgdHdvIHRhYmxlcyBvZiBvZmZzZXRzOiBvbmUgZWFjaCBmb3IgdGVtcFsxMl0gYW5kCit0ZW1wWzM0XS4gIFRoZXJlZm9yZSwgYW55IGNoYW5nZSB0byBlLmcuIHRlbXAxX2F1dG9fb2Zmc2V0PGk+IHdpbGwgYWxzbworYWZmZWN0IHRlbXAyX2F1dG9fb2Zmc2V0PGk+LgorCitUaGUgTE05MyBjYW4gYWxzbyBhcHBseSBoeXN0ZXJlc2lzIHRvIHRoZSBvZmZzZXQgdGFibGUsIHRvIHByZXZlbnQgdW53YW50ZWQKK29zY2lsbGF0aW9uIGJldHdlZW4gdHdvIHN0ZXBzIGluIHRoZSBvZmZzZXRzIHRhYmxlLiAgVGhlc2UgdmFsdWVzIGFyZSBmb3VuZCBpbgordGhlIHN5c2ZzIGZpbGVzIHRlbXA8bj5fYXV0b19vZmZzZXRfaHlzdC4gIFRoZSB2YWx1ZSBpbiB0aGlzIGZpbGUgaGFzIHRoZQorc2FtZSByZXByZXNlbnRhdGlvbiBhcyBpbiB0ZW1wPG4+X2F1dG9fb2Zmc2V0PGk+LgorCitJZiBhIHRlbXBlcmF0dXJlIHJlYWRpbmcgZmFsbHMgYmVsb3cgdGhlIGJhc2UgdmFsdWUgZm9yIHRoYXQgY2hhbm5lbCwgdGhlIExNOTMKK3dpbGwgdXNlIHRoZSBtaW5pbXVtIFBXTSB2YWx1ZS4gIFRoZXNlIHZhbHVlcyBhcmUgZm91bmQgaW4gdGhlIHN5c2ZzIGZpbGVzCit0ZW1wPG4+X2F1dG9fcHdtX21pbi4gIE5vdGUsIHRoZXJlIGFyZSBvbmx5IHR3byBtaW5pbXVtczogb25lIGVhY2ggZm9yIHRlbXBbMTJdCithbmQgdGVtcFszNF0uICBUaGVyZWZvcmUsIGFueSBjaGFuZ2UgdG8gZS5nLiB0ZW1wMV9hdXRvX3B3bV9taW4gd2lsbCBhbHNvCithZmZlY3QgdGVtcDJfYXV0b19wd21fbWluLgorCitQV00gU3Bpbi1VcCBDeWNsZToKKworQSBzcGluLXVwIGN5Y2xlIG9jY3VycyB3aGVuIGEgUFdNIG91dHB1dCBpcyBjb21tYW5kZWQgZnJvbSAwJSBkdXR5IGN5Y2xlIHRvCitzb21lIHZhbHVlID4gMCUuICBUaGUgTE05MyBzdXBwb3J0cyBhIG1pbmltdW0gZHV0eSBjeWNsZSBkdXJpbmcgc3Bpbi11cC4gIFRoZXNlCit2YWx1ZXMgYXJlIGZvdW5kIGluIHRoZSBzeXNmcyBmaWxlcyBwd208bj5fYXV0b19zcGludXBfbWluLiBUaGUgdmFsdWUgaW4gdGhpcworZmlsZSBoYXMgdGhlIHNhbWUgcmVwcmVzZW50YXRpb24gYXMgb3RoZXIgUFdNIGR1dHkgY3ljbGUgdmFsdWVzLiBUaGUKK2R1cmF0aW9uIG9mIHRoZSBzcGluLXVwIGN5Y2xlIGlzIGFsc28gY29uZmlndXJhYmxlLiAgVGhlc2UgdmFsdWVzIGFyZSBmb3VuZCBpbgordGhlIHN5c2ZzIGZpbGVzIHB3bTxuPl9hdXRvX3NwaW51cF90aW1lLiBUaGUgdmFsdWUgaW4gdGhpcyBmaWxlIGlzCit0aGUgc3Bpbi11cCB0aW1lIGluIHNlY29uZHMuICBUaGUgYXZhaWxhYmxlIHNwaW4tdXAgdGltZXMgYXJlIGNvbnN0cmFpbmVkIGJ5Cit0aGUgaGFyZHdhcmUuICBTZWxlY3RpbmcgYSB2YWx1ZSB3aGljaCBpcyBub3QgYXZhaWxhYmxlIHdpbGwgY2F1c2UgdGhlIGRyaXZlcgordG8gdXNlIHRoZSBuZXh0IGxhcmdlc3QgdmFsdWUuCisKK1NwaW4tdXAgRHVyYXRpb25zOiAwIChkaXNhYmxlZCwgaC93IGRlZmF1bHQpLCAwLjEsIDAuMjUsIDAuNCwgMC43LCAxLjAsCisJCSAgIDIuMCwgNC4wCisKKyNQUk9DSE9UIGFuZCAjVlJESE9UIFBXTSBSYW1waW5nOgorCitJZiB0aGUgI1BST0NIT1Qgb3IgI1ZSREhPVCBzaWduYWxzIGFyZSBhc3NlcnRlZCB3aGlsZSBib3VuZCB0byBhIFBXTSBvdXRwdXQKK2NoYW5uZWwsIHRoZSBMTTkzIHdpbGwgcmFtcCB0aGUgUFdNIG91dHB1dCB1cCB0byAxMDAlIGR1dHkgY3ljbGUgaW4gZGlzY3JldGUKK3N0ZXBzLiBUaGUgZHVyYXRpb24gb2YgZWFjaCBzdGVwIGlzIGNvbmZpZ3VyYWJsZS4gVGhlcmUgYXJlIHR3byBmaWxlcywgd2l0aAorb25lIHZhbHVlIGVhY2ggaW4gc2Vjb25kczogcHdtX2F1dG9fcHJvY2hvdF9yYW1wIGFuZCBwd21fYXV0b192cmRob3RfcmFtcC4KK1RoZSBhdmFpbGFibGUgcmFtcCB0aW1lcyBhcmUgY29uc3RyYWluZWQgYnkgdGhlIGhhcmR3YXJlLiAgU2VsZWN0aW5nIGEgdmFsdWUKK3doaWNoIGlzIG5vdCBhdmFpbGFibGUgd2lsbCBjYXVzZSB0aGUgZHJpdmVyIHRvIHVzZSB0aGUgbmV4dCBsYXJnZXN0IHZhbHVlLgorCitSYW1wIFRpbWVzOiAwIChkaXNhYmxlZCwgaC93IGRlZmF1bHQpIHRvIDAuNzUgaW4gMC4wNSBzZWNvbmQgaW50ZXJ2YWxzCisKK0ZhbiBCb29zdDoKKworRm9yIGVhY2ggdGVtcGVyYXR1cmUgY2hhbm5lbCwgdGhlcmUgaXMgYSBib29zdCB0ZW1wZXJhdHVyZTogaWYgdGhlIGNoYW5uZWwKK2V4Y2VlZHMgdGhpcyBsaW1pdCwgdGhlIExNOTMgd2lsbCBpbW1lZGlhdGVseSBkcml2ZSBib3RoIFBXTSBvdXRwdXRzIHRvIDEwMCUuCitUaGlzIGxpbWl0IGlzIGV4cHJlc3NlZCBpbiBkZWdyZWVzIEMgaW4gdGhlIHN5c2ZzIGZpbGVzIHRlbXA8bj5fYXV0b19ib29zdC4KK1RoZXJlIGlzIGFsc28gYSBoeXN0ZXJlc2lzIHRlbXBlcmF0dXJlIGZvciB0aGlzIGZ1bmN0aW9uOiBhZnRlciB0aGUgYm9vc3QKK2xpbWl0IGlzIHJlYWNoZWQsIHRoZSB0ZW1wZXJhdHVyZSBjaGFubmVsIG11c3QgZHJvcCBiZWxvdyB0aGlzIHZhbHVlIGJlZm9yZQordGhlIGJvb3N0IGZ1bmN0aW9uIGlzIGRpc2FibGVkLiAgVGhpcyB0ZW1wZXJhdHVyZSBpcyBhbHNvIGV4cHJlc3NlZCBpbiBkZWdyZWVzCitDIGluIHRoZSBzeXNmcyBmaWxlcyB0ZW1wPG4+X2F1dG9fYm9vc3RfaHlzdC4KKworR1BJTyBQaW5zOgorCitUaGUgTE05MyBjYW4gbW9uaXRvciB0aGUgbG9naWMgbGV2ZWwgb2YgZm91ciBkZWRpY2F0ZWQgR1BJTyBwaW5zIGFzIHdlbGwgYXMgdGhlCitmb3VyIHRhY2ggaW5wdXQgcGlucy4gIEdQSU8wLUdQSU8zIGNvcnJlc3BvbmQgdG8gKGZhbikgdGFjaCAxLTQsIHJlc3BlY3RpdmVseS4KK0FsbCBlaWdodCBHUElPcyBhcmUgcmVhZCBieSByZWFkaW5nIHRoZSBiaXRtYXNrIGluIHRoZSBzeXNmcyBmaWxlIGdwaW8uICBUaGUKK0xTQiBpcyBHUElPMCwgYW5kIHRoZSBNU0IgaXMgR1BJTzcuCisKKworTE05MyBVbmlxdWUgc3lzZnMgRmlsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlmaWxlCQkJZGVzY3JpcHRpb24KKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlwcm9jaG90PG4+CQljdXJyZW50ICNQUk9DSE9UICUKKworCXByb2Nob3Q8bj5fYXZnCQltb3ZpbmcgYXZlcmFnZSAjUFJPQ0hPVCAlCisKKwlwcm9jaG90PG4+X21heAkJbGltaXQgI1BST0NIT1QgJQorCisJcHJvY2hvdF9zaG9ydAkJZW5hYmxlIG9yIGRpc2FibGUgbG9naWNhbCAjUFJPQ0hPVCBwaW4gc2hvcnQKKworCXByb2Nob3Q8bj5fb3ZlcnJpZGUJZm9yY2UgI1BST0NIT1QgYXNzZXJ0aW9uIGFzIFBXTQorCisJcHJvY2hvdF9vdmVycmlkZV9kdXR5X2N5Y2xlCisJCQkJZHV0eSBjeWNsZSBmb3IgdGhlIFBXTSBzaWduYWwgdXNlZCB3aGVuCisJCQkJI1BST0NIT1QgaXMgb3ZlcnJpZGRlbgorCisJcHJvY2hvdDxuPl9pbnRlcnZhbAkjUFJPQ0hPVCBQV00gc2FtcGxpbmcgaW50ZXJ2YWwKKworCXZyZGhvdDxuPgkJMCBtZWFucyBuZWdhdGVkLCAxIG1lYW5zIGFzc2VydGVkCisKKwlmYW48bj5fc21hcnRfdGFjaAllbmFibGUgb3IgZGlzYWJsZSBzbWFydCB0YWNoIG1vZGUKKworCXB3bTxuPl9hdXRvX2NoYW5uZWxzCXNlbGVjdCBjb250cm9sIHNvdXJjZXMgZm9yIFBXTSBvdXRwdXRzCisKKwlwd208bj5fYXV0b19zcGludXBfbWluCW1pbmltdW0gZHV0eSBjeWNsZSBkdXJpbmcgc3Bpbi11cAorCisJcHdtPG4+X2F1dG9fc3BpbnVwX3RpbWUJZHVyYXRpb24gb2Ygc3Bpbi11cAorCisJcHdtX2F1dG9fcHJvY2hvdF9yYW1wCXJhbXAgdGltZSBwZXIgc3RlcCB3aGVuICNQUk9DSE9UIGFzc2VydGVkCisKKwlwd21fYXV0b192cmRob3RfcmFtcAlyYW1wIHRpbWUgcGVyIHN0ZXAgd2hlbiAjVlJESE9UIGFzc2VydGVkCisKKwl0ZW1wPG4+X2F1dG9fYmFzZQl0ZW1wZXJhdHVyZSBjaGFubmVsIGJhc2UKKworCXRlbXA8bj5fYXV0b19vZmZzZXRbMS0xMl0KKwkJCQl0ZW1wZXJhdHVyZSBjaGFubmVsIG9mZnNldHMKKworCXRlbXA8bj5fYXV0b19vZmZzZXRfaHlzdAorCQkJCXRlbXBlcmF0dXJlIGNoYW5uZWwgb2Zmc2V0IGh5c3RlcmVzaXMKKworCXRlbXA8bj5fYXV0b19ib29zdAl0ZW1wZXJhdHVyZSBjaGFubmVsIGJvb3N0IChQV01zIHRvIDEwMCUpIGxpbWl0CisKKwl0ZW1wPG4+X2F1dG9fYm9vc3RfaHlzdAl0ZW1wZXJhdHVyZSBjaGFubmVsIGJvb3N0IGh5c3RlcmVzaXMKKworCWdwaW8JCQlpbnB1dCBzdGF0ZSBvZiA4IEdQSU8gcGluczsgcmVhZC1vbmx5CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vbG05NTIzNCBiL0RvY3VtZW50YXRpb24vaHdtb24vbG05NTIzNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmI3NzdlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9sbTk1MjM0CkBAIC0wLDAgKzEsNDEgQEAKK0tlcm5lbCBkcml2ZXIgbG05NTIzNAorPT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBOYXRpb25hbCBTZW1pY29uZHVjdG9yIC8gVGV4YXMgSW5zdHJ1bWVudHMgTE05NTIzMworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgxOCwgMHgyYSwgMHgyYgorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBUZXhhcyBJbnN0cnVtZW50cyB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3LnRpLmNvbS9wcm9kdWN0L2xtOTUyMzMKKyAgKiBOYXRpb25hbCBTZW1pY29uZHVjdG9yIC8gVGV4YXMgSW5zdHJ1bWVudHMgTE05NTIzNAorICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgxOCwgMHg0ZCwgMHg0ZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBUZXhhcyBJbnN0cnVtZW50cyB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3LnRpLmNvbS9wcm9kdWN0L2xtOTUyMzQKKworCitBdXRob3I6IEd1ZW50ZXIgUm9lY2sgPGxpbnV4QHJvZWNrLXVzLm5ldD4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK0xNOTUyMzMgYW5kIExNOTUyMzQgYXJlIDExLWJpdCBkaWdpdGFsIHRlbXBlcmF0dXJlIHNlbnNvcnMgd2l0aCBhIDItd2lyZQorU3lzdGVtIE1hbmFnZW1lbnQgQnVzIChTTUJ1cykgaW50ZXJmYWNlIGFuZCBUcnVlVGhlcm0gdGVjaG5vbG9neQordGhhdCBjYW4gdmVyeSBhY2N1cmF0ZWx5IG1vbml0b3IgdGhlIHRlbXBlcmF0dXJlIG9mIHR3byAoTE05NTIzMykKK29yIGZvdXIgKExNOTUyMzQpIHJlbW90ZSBkaW9kZXMgYXMgd2VsbCBhcyBpdHMgb3duIHRlbXBlcmF0dXJlLgorVGhlIHJlbW90ZSBkaW9kZXMgY2FuIGJlIGV4dGVybmFsIGRldmljZXMgc3VjaCBhcyBtaWNyb3Byb2Nlc3NvcnMsCitncmFwaGljcyBwcm9jZXNzb3JzIG9yIGRpb2RlLWNvbm5lY3RlZCAyTjM5MDRzLiBUaGUgY2hpcCdzIFRydVRoZXJtCitiZXRhIGNvbXBlbnNhdGlvbiB0ZWNobm9sb2d5IGFsbG93cyBzZW5zaW5nIG9mIDkwIG5tIG9yIDY1IG5tIHByb2Nlc3MKK3RoZXJtYWwgZGlvZGVzIGFjY3VyYXRlbHkuCisKK0FsbCB0ZW1wZXJhdHVyZSB2YWx1ZXMgYXJlIGdpdmVuIGluIG1pbGxpZGVncmVlcyBDZWxzaXVzLiBUZW1wZXJhdHVyZQoraXMgcHJvdmlkZWQgd2l0aGluIGEgcmFuZ2Ugb2YgLTEyNyB0byArMjU1IGRlZ3JlZXMgKCsxMjcuODc1IGRlZ3JlZXMgZm9yCit0aGUgaW50ZXJuYWwgc2Vuc29yKS4gUmVzb2x1dGlvbiBkZXBlbmRzIG9uIHRlbXBlcmF0dXJlIGlucHV0IGFuZCByYW5nZS4KKworRWFjaCBzZW5zb3IgaGFzIGl0cyBvd24gbWF4aW11bSBsaW1pdCwgYnV0IHRoZSBoeXN0ZXJlc2lzIGlzIGNvbW1vbiB0byBhbGwKK2NoYW5uZWxzLiBUaGUgaHlzdGVyZXNpcyBpcyBjb25maWd1cmFibGUgd2l0aCB0aGUgdGVtMV9tYXhfaHlzdCBhdHRyaWJ1dGUgYW5kCithZmZlY3RzIHRoZSBoeXN0ZXJlc2lzIG9uIGFsbCBjaGFubmVscy4gVGhlIGZpcnN0IHR3byBleHRlcm5hbCBzZW5zb3JzIGFsc28KK2hhdmUgYSBjcml0aWNhbCBsaW1pdC4KKworVGhlIGxtOTUyMzQgZHJpdmVyIGNhbiBjaGFuZ2UgaXRzIHVwZGF0ZSBpbnRlcnZhbCB0byBhIGZpeGVkIHNldCBvZiB2YWx1ZXMuCitJdCB3aWxsIHJvdW5kIHVwIHRvIHRoZSBuZXh0IHNlbGVjdGFibGUgaW50ZXJ2YWwuIFNlZSB0aGUgZGF0YXNoZWV0IGZvciBleGFjdAordmFsdWVzLiBSZWFkaW5nIHNlbnNvciB2YWx1ZXMgbW9yZSBvZnRlbiB3aWxsIGRvIG5vIGhhcm0sIGJ1dCB3aWxsIHJldHVybgorJ29sZCcgdmFsdWVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9sbTk1MjQ1IGIvRG9jdW1lbnRhdGlvbi9od21vbi9sbTk1MjQ1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NTU5MDEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2xtOTUyNDUKQEAgLTAsMCArMSw0MSBAQAorS2VybmVsIGRyaXZlciBsbTk1MjQ1Cis9PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIFRJIExNOTUyMzUKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MTgsIDB4MjksIDB4NGMKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgVEkgd2Vic2l0ZQorICAgICAgICAgICAgICAgaHR0cDovL3d3dy50aS5jb20vbGl0L2RzL3N5bWxpbmsvbG05NTIzNS5wZGYKKyAgKiBUSSAvIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgTE05NTI0NQorICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgxOCwgMHgxOSwgMHgyOSwgMHg0YywgMHg0ZAorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBUSSB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3LnRpLmNvbS9saXQvZHMvc3ltbGluay9sbTk1MjQ1LnBkZgorCisKK0F1dGhvcjogQWxleGFuZGVyIFN0ZWluIDxhbGV4YW5kZXIuc3RlaW5Ac3lzdGVjLWVsZWN0cm9uaWMuY29tPgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworTE05NTIzNSBhbmQgTE05NTI0NSBhcmUgMTEtYml0IGRpZ2l0YWwgdGVtcGVyYXR1cmUgc2Vuc29ycyB3aXRoIGEgMi13aXJlIFN5c3RlbQorTWFuYWdlbWVudCBCdXMgKFNNQnVzKSBpbnRlcmZhY2UgYW5kIFRydVRoZXJtIHRlY2hub2xvZ3kgdGhhdCBjYW4gbW9uaXRvcgordGhlIHRlbXBlcmF0dXJlIG9mIGEgcmVtb3RlIGRpb2RlIGFzIHdlbGwgYXMgaXRzIG93biB0ZW1wZXJhdHVyZS4KK1RoZSBjaGlwcyBjYW4gYmUgdXNlZCB0byB2ZXJ5IGFjY3VyYXRlbHkgbW9uaXRvciB0aGUgdGVtcGVyYXR1cmUgb2YKK2V4dGVybmFsIGRldmljZXMgc3VjaCBhcyBtaWNyb3Byb2Nlc3NvcnMuCisKK0FsbCB0ZW1wZXJhdHVyZSB2YWx1ZXMgYXJlIGdpdmVuIGluIG1pbGxpZGVncmVlcyBDZWxzaXVzLiBMb2NhbCB0ZW1wZXJhdHVyZQoraXMgZ2l2ZW4gd2l0aGluIGEgcmFuZ2Ugb2YgLTEyNyB0byArMTI3Ljg3NSBkZWdyZWVzLiBSZW1vdGUgdGVtcGVyYXR1cmVzIGFyZQorZ2l2ZW4gd2l0aGluIGEgcmFuZ2Ugb2YgLTEyNyB0byArMjU1IGRlZ3JlZXMuIFJlc29sdXRpb24gZGVwZW5kcyBvbgordGVtcGVyYXR1cmUgaW5wdXQgYW5kIHJhbmdlLgorCitFYWNoIHNlbnNvciBoYXMgaXRzIG93biBjcml0aWNhbCBsaW1pdC4gQWRkaXRpb25hbGx5LCB0aGVyZSBpcyBhIHJlbGF0aXZlCitoeXN0ZXJlc2lzIHZhbHVlIGNvbW1vbiB0byBib3RoIGNyaXRpY2FsIGxpbWl0cy4gVG8gbWFrZSBsaWZlIGVhc2llciB0bwordXNlci1zcGFjZSBhcHBsaWNhdGlvbnMsIHR3byBhYnNvbHV0ZSB2YWx1ZXMgYXJlIGV4cG9ydGVkLCBvbmUgZm9yIGVhY2gKK2NoYW5uZWwsIGJ1dCB0aGVzZSB2YWx1ZXMgYXJlIG9mIGNvdXJzZSBsaW5rZWQuIE9ubHkgdGhlIGxvY2FsIGh5c3RlcmVzaXMKK2NhbiBiZSBzZXQgZnJvbSB1c2VyLXNwYWNlLCBhbmQgdGhlIHNhbWUgZGVsdGEgYXBwbGllcyB0byB0aGUgcmVtb3RlCitoeXN0ZXJlc2lzLgorCitUaGUgbG05NTI0NSBkcml2ZXIgY2FuIGNoYW5nZSBpdHMgdXBkYXRlIGludGVydmFsIHRvIGEgZml4ZWQgc2V0IG9mIHZhbHVlcy4KK0l0IHdpbGwgcm91bmQgdXAgdG8gdGhlIG5leHQgc2VsZWN0YWJsZSBpbnRlcnZhbC4gU2VlIHRoZSBkYXRhc2hlZXQgZm9yIGV4YWN0Cit2YWx1ZXMuIFJlYWRpbmcgc2Vuc29yIHZhbHVlcyBtb3JlIG9mdGVuIHdpbGwgZG8gbm8gaGFybSwgYnV0IHdpbGwgcmV0dXJuCisnb2xkJyB2YWx1ZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2x0YzI5NDUgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2x0YzI5NDUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhkMGY3ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vbHRjMjk0NQpAQCAtMCwwICsxLDg0IEBACitLZXJuZWwgZHJpdmVyIGx0YzI5NDUKKz09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogTGluZWFyIFRlY2hub2xvZ3kgTFRDMjk0NQorICAgIFByZWZpeDogJ2x0YzI5NDUnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IC0KKyAgICBEYXRhc2hlZXQ6CisgICAgICAgIGh0dHA6Ly9jZHMubGluZWFyLmNvbS9kb2NzL2VuL2RhdGFzaGVldC8yOTQ1ZmEucGRmCisKK0F1dGhvcjogR3VlbnRlciBSb2VjayA8bGludXhAcm9lY2stdXMubmV0PgorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGUgTFRDMjk0NSAgaXMgYSByYWlsLXRvLXJhaWwgc3lzdGVtIG1vbml0b3IgdGhhdCBtZWFzdXJlcyBjdXJyZW50LCB2b2x0YWdlLAorYW5kIHBvd2VyIGNvbnN1bXB0aW9uLgorCisKK1VzYWdlIE5vdGVzCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBkb2VzIG5vdCBwcm9iZSBmb3IgTFRDMjk0NSBkZXZpY2VzLCBzaW5jZSB0aGVyZSBpcyBubyByZWdpc3Rlcgord2hpY2ggY2FuIGJlIHNhZmVseSB1c2VkIHRvIGlkZW50aWZ5IHRoZSBjaGlwLiBZb3Ugd2lsbCBoYXZlIHRvIGluc3RhbnRpYXRlCit0aGUgZGV2aWNlcyBleHBsaWNpdGx5LgorCitFeGFtcGxlOiB0aGUgZm9sbG93aW5nIHdpbGwgbG9hZCB0aGUgZHJpdmVyIGZvciBhbiBMVEMyOTQ1IGF0IGFkZHJlc3MgMHgxMAorb24gSTJDIGJ1cyAjMToKKyQgbW9kcHJvYmUgbHRjMjk0NQorJCBlY2hvIGx0YzI5NDUgMHgxMCA+IC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0xL25ld19kZXZpY2UKKworCitTeXNmcyBlbnRyaWVzCistLS0tLS0tLS0tLS0tCisKK1ZvbHRhZ2UgcmVhZGluZ3MgcHJvdmlkZWQgYnkgdGhpcyBkcml2ZXIgYXJlIHJlcG9ydGVkIGFzIG9idGFpbmVkIGZyb20gdGhlIEFEQworcmVnaXN0ZXJzLiBJZiBhIHNldCBvZiB2b2x0YWdlIGRpdmlkZXIgcmVzaXN0b3JzIGlzIGluc3RhbGxlZCwgY2FsY3VsYXRlIHRoZQorcmVhbCB2b2x0YWdlIGJ5IG11bHRpcGx5aW5nIHRoZSByZXBvcnRlZCB2YWx1ZSB3aXRoIChSMStSMikvUjIsIHdoZXJlIFIxIGlzIHRoZQordmFsdWUgb2YgdGhlIGRpdmlkZXIgcmVzaXN0b3IgYWdhaW5zdCB0aGUgbWVhc3VyZWQgdm9sdGFnZSBhbmQgUjIgaXMgdGhlIHZhbHVlCitvZiB0aGUgZGl2aWRlciByZXNpc3RvciBhZ2FpbnN0IEdyb3VuZC4KKworQ3VycmVudCByZWFkaW5nIHByb3ZpZGVkIGJ5IHRoaXMgZHJpdmVyIGlzIHJlcG9ydGVkIGFzIG9idGFpbmVkIGZyb20gdGhlIEFEQworQ3VycmVudCBTZW5zZSByZWdpc3Rlci4gVGhlIHJlcG9ydGVkIHZhbHVlIGFzc3VtZXMgdGhhdCBhIDEgbU9obSBzZW5zZSByZXNpc3RvcgoraXMgaW5zdGFsbGVkLiBJZiBhIGRpZmZlcmVudCBzZW5zZSByZXNpc3RvciBpcyBpbnN0YWxsZWQsIGNhbGN1bGF0ZSB0aGUgcmVhbAorY3VycmVudCBieSBkaXZpZGluZyB0aGUgcmVwb3J0ZWQgdmFsdWUgYnkgdGhlIHNlbnNlIHJlc2lzdG9yIHZhbHVlIGluIG1PaG0uCisKK2luMV9pbnB1dAkJVklOIHZvbHRhZ2UgKG1WKS4gVm9sdGFnZSBpcyBtZWFzdXJlZCBlaXRoZXIgYXQKKwkJCVNFTlNFKyBvciBWREQgcGluIGRlcGVuZGluZyBvbiBjaGlwIGNvbmZpZ3VyYXRpb24uCitpbjFfbWluCQkJVW5kZXJ2b2x0YWdlIHRocmVzaG9sZAoraW4xX21heAkJCU92ZXJ2b2x0YWdlIHRocmVzaG9sZAoraW4xX2xvd2VzdAkJTG93ZXN0IG1lYXN1cmVkIHZvbHRhZ2UKK2luMV9oaWdoZXN0CQlIaWdoZXN0IG1lYXN1cmVkIHZvbHRhZ2UKK2luMV9yZXNldF9oaXN0b3J5CVdyaXRlIDEgdG8gcmVzZXQgaW4xIGhpc3RvcnkKK2luMV9taW5fYWxhcm0JCVVuZGVydm9sdGFnZSBhbGFybQoraW4xX21heF9hbGFybQkJT3ZlcnZvbHRhZ2UgYWxhcm0KKworaW4yX2lucHV0CQlBRElOIHZvbHRhZ2UgKG1WKQoraW4yX21pbgkJCVVuZGVydm9sdGFnZSB0aHJlc2hvbGQKK2luMl9tYXgJCQlPdmVydm9sdGFnZSB0aHJlc2hvbGQKK2luMl9sb3dlc3QJCUxvd2VzdCBtZWFzdXJlZCB2b2x0YWdlCitpbjJfaGlnaGVzdAkJSGlnaGVzdCBtZWFzdXJlZCB2b2x0YWdlCitpbjJfcmVzZXRfaGlzdG9yeQlXcml0ZSAxIHRvIHJlc2V0IGluMiBoaXN0b3J5CitpbjJfbWluX2FsYXJtCQlVbmRlcnZvbHRhZ2UgYWxhcm0KK2luMl9tYXhfYWxhcm0JCU92ZXJ2b2x0YWdlIGFsYXJtCisKK2N1cnIxX2lucHV0CQlTRU5TRSBjdXJyZW50IChtQSkKK2N1cnIxX21pbgkJVW5kZXJjdXJyZW50IHRocmVzaG9sZAorY3VycjFfbWF4CQlPdmVyY3VycmVudCB0aHJlc2hvbGQKK2N1cnIxX2xvd2VzdAkJTG93ZXN0IG1lYXN1cmVkIGN1cnJlbnQKK2N1cnIxX2hpZ2hlc3QJCUhpZ2hlc3QgbWVhc3VyZWQgY3VycmVudAorY3VycjFfcmVzZXRfaGlzdG9yeQlXcml0ZSAxIHRvIHJlc2V0IGN1cnIxIGhpc3RvcnkKK2N1cnIxX21pbl9hbGFybQkJVW5kZXJjdXJyZW50IGFsYXJtCitjdXJyMV9tYXhfYWxhcm0JCU92ZXJjdXJyZW50IGFsYXJtCisKK3Bvd2VyMV9pbnB1dAkJUG93ZXIgKGluIHVXKS4gUG93ZXIgaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiBTRU5TRSsvVkRECisJCQl2b2x0YWdlIG9yIEFESU4gdm9sdGFnZSBkZXBlbmRpbmcgb24gY2hpcCBjb25maWd1cmF0aW9uLgorcG93ZXIxX21pbgkJTG93IGxvd2VyIHRocmVzaG9sZAorcG93ZXIxX21heAkJSGlnaCBwb3dlciB0aHJlc2hvbGQKK3Bvd2VyMV9pbnB1dF9sb3dlc3QJSGlzdG9yaWNhbCBtaW5pbXVtIHBvd2VyIHVzZQorcG93ZXIxX2lucHV0X2hpZ2hlc3QJSGlzdG9yaWNhbCBtYXhpbXVtIHBvd2VyIHVzZQorcG93ZXIxX3Jlc2V0X2hpc3RvcnkJV3JpdGUgMSB0byByZXNldCBwb3dlcjEgaGlzdG9yeQorcG93ZXIxX21pbl9hbGFybQlMb3cgcG93ZXIgYWxhcm0KK3Bvd2VyMV9tYXhfYWxhcm0JSGlnaCBwb3dlciBhbGFybQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9sdGMyOTc4IGIvRG9jdW1lbnRhdGlvbi9od21vbi9sdGMyOTc4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhNDlkM2MKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2x0YzI5NzgKQEAgLTAsMCArMSwyMTEgQEAKK0tlcm5lbCBkcml2ZXIgbHRjMjk3OAorPT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBMaW5lYXIgVGVjaG5vbG9neSBMVEMyOTc0CisgICAgUHJlZml4OiAnbHRjMjk3NCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5saW5lYXIuY29tL3Byb2R1Y3QvbHRjMjk3NAorICAqIExpbmVhciBUZWNobm9sb2d5IExUQzI5NzUKKyAgICBQcmVmaXg6ICdsdGMyOTc1JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OiBodHRwOi8vd3d3LmxpbmVhci5jb20vcHJvZHVjdC9sdGMyOTc1CisgICogTGluZWFyIFRlY2hub2xvZ3kgTFRDMjk3NworICAgIFByZWZpeDogJ2x0YzI5NzcnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IC0KKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cubGluZWFyLmNvbS9wcm9kdWN0L2x0YzI5NzcKKyAgKiBMaW5lYXIgVGVjaG5vbG9neSBMVEMyOTc4LCBMVEMyOTc4QQorICAgIFByZWZpeDogJ2x0YzI5NzgnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IC0KKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cubGluZWFyLmNvbS9wcm9kdWN0L2x0YzI5NzgKKyAgICAJICAgICAgIGh0dHA6Ly93d3cubGluZWFyLmNvbS9wcm9kdWN0L2x0YzI5NzhhCisgICogTGluZWFyIFRlY2hub2xvZ3kgTFRDMjk4MAorICAgIFByZWZpeDogJ2x0YzI5ODAnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IC0KKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cubGluZWFyLmNvbS9wcm9kdWN0L2x0YzI5ODAKKyAgKiBMaW5lYXIgVGVjaG5vbG9neSBMVEMzODgwCisgICAgUHJlZml4OiAnbHRjMzg4MCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5saW5lYXIuY29tL3Byb2R1Y3QvbHRjMzg4MAorICAqIExpbmVhciBUZWNobm9sb2d5IExUQzM4ODIKKyAgICBQcmVmaXg6ICdsdGMzODgyJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OiBodHRwOi8vd3d3LmxpbmVhci5jb20vcHJvZHVjdC9sdGMzODgyCisgICogTGluZWFyIFRlY2hub2xvZ3kgTFRDMzg4MworICAgIFByZWZpeDogJ2x0YzM4ODMnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IC0KKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cubGluZWFyLmNvbS9wcm9kdWN0L2x0YzM4ODMKKyAgKiBMaW5lYXIgVGVjaG5vbG9neSBMVEMzODg2CisgICAgUHJlZml4OiAnbHRjMzg4NicKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5saW5lYXIuY29tL3Byb2R1Y3QvbHRjMzg4NgorICAqIExpbmVhciBUZWNobm9sb2d5IExUQzM4ODcKKyAgICBQcmVmaXg6ICdsdGMzODg3JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OiBodHRwOi8vd3d3LmxpbmVhci5jb20vcHJvZHVjdC9sdGMzODg3CisgICogTGluZWFyIFRlY2hub2xvZ3kgTFRNMjk4NworICAgIFByZWZpeDogJ2x0bTI5ODcnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IC0KKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cubGluZWFyLmNvbS9wcm9kdWN0L2x0bTI5ODcKKyAgKiBMaW5lYXIgVGVjaG5vbG9neSBMVE00Njc1CisgICAgUHJlZml4OiAnbHRtNDY3NScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5saW5lYXIuY29tL3Byb2R1Y3QvbHRtNDY3NQorICAqIExpbmVhciBUZWNobm9sb2d5IExUTTQ2NzYKKyAgICBQcmVmaXg6ICdsdG00Njc2JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OiBodHRwOi8vd3d3LmxpbmVhci5jb20vcHJvZHVjdC9sdG00Njc2CisKK0F1dGhvcjogR3VlbnRlciBSb2VjayA8bGludXhAcm9lY2stdXMubmV0PgorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitMVEMyOTc0IGFuZCBMVEMyOTc1IGFyZSBxdWFkIGRpZ2l0YWwgcG93ZXIgc3VwcGx5IG1hbmFnZXJzLgorTFRDMjk3OCBpcyBhbiBvY3RhbCBwb3dlciBzdXBwbHkgbW9uaXRvci4KK0xUQzI5NzcgaXMgYSBwaW4gY29tcGF0aWJsZSByZXBsYWNlbWVudCBmb3IgTFRDMjk3OC4KK0xUQzI5ODAgaXMgYSAxNi1jaGFubmVsIFBvd2VyIFN5c3RlbSBNYW5hZ2VyLCBjb25zaXN0aW5nIG9mIHR3byBMVEMyOTc3CitpbiBhIHNpbmdsZSBkaWUuIFRoZSBjaGlwIGlzIGluc3RhbnRpYXRlZCBhbmQgcmVwb3J0ZWQgYXMgdHdvIHNlcGFyYXRlIGNoaXBzCitvbiB0d28gZGlmZmVyZW50IEkyQyBidXMgYWRkcmVzc2VzLgorTFRDMzg4MCwgTFRDMzg4MiwgTFRDMzg4NiwgYW5kIExUQzM4ODcgYXJlIGR1YWwgb3V0cHV0IHBvbHktcGhhc2Ugc3RlcC1kb3duCitEQy9EQyBjb250cm9sbGVycy4KK0xUQzM4ODMgaXMgYSBzaW5nbGUgcGhhc2Ugc3RlcC1kb3duIERDL0RDIGNvbnRyb2xsZXIuCitMVE0yOTg3IGlzIGEgMTYtY2hhbm5lbCBQb3dlciBTeXN0ZW0gTWFuYWdlciB3aXRoIHR3byBMVEMyOTc3IHBsdXMKK2FkZGl0aW9uYWwgY29tcG9uZW50cyBvbiBhIHNpbmdsZSBkaWUuIFRoZSBjaGlwIGlzIGluc3RhbnRpYXRlZCBhbmQgcmVwb3J0ZWQKK2FzIHR3byBzZXBhcmF0ZSBjaGlwcyBvbiB0d28gZGlmZmVyZW50IEkyQyBidXMgYWRkcmVzc2VzLgorTFRNNDY3NSBpcyBhIGR1YWwgOUEgb3Igc2luZ2xlIDE4QSDOvE1vZHVsZSByZWd1bGF0b3IKK0xUTTQ2NzYgaXMgYSBkdWFsIDEzQSBvciBzaW5nbGUgMjZBIHVNb2R1bGUgcmVndWxhdG9yLgorCisKK1VzYWdlIE5vdGVzCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBkb2VzIG5vdCBwcm9iZSBmb3IgUE1CdXMgZGV2aWNlcy4gWW91IHdpbGwgaGF2ZSB0byBpbnN0YW50aWF0ZQorZGV2aWNlcyBleHBsaWNpdGx5LgorCitFeGFtcGxlOiB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHdpbGwgbG9hZCB0aGUgZHJpdmVyIGZvciBhbiBMVEMyOTc4IGF0IGFkZHJlc3MKKzB4NjAgb24gSTJDIGJ1cyAjMToKKworIyBtb2Rwcm9iZSBsdGMyOTc4CisjIGVjaG8gbHRjMjk3OCAweDYwID4gL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLTEvbmV3X2RldmljZQorCisKK1N5c2ZzIGF0dHJpYnV0ZXMKKy0tLS0tLS0tLS0tLS0tLS0KKworaW4xX2xhYmVsCQkidmluIgoraW4xX2lucHV0CQlNZWFzdXJlZCBpbnB1dCB2b2x0YWdlLgoraW4xX21pbgkJCU1pbmltdW0gaW5wdXQgdm9sdGFnZS4KK2luMV9tYXgJCQlNYXhpbXVtIGlucHV0IHZvbHRhZ2UuCisJCQlMVEMyOTc0LCBMVEMyOTc1LCBMVEMyOTc3LCBMVEMyOTgwLCBMVEMyOTc4LCBhbmQKKwkJCUxUTTI5ODcgb25seS4KK2luMV9sY3JpdAkJQ3JpdGljYWwgbWluaW11bSBpbnB1dCB2b2x0YWdlLgorCQkJTFRDMjk3NCwgTFRDMjk3NSwgTFRDMjk3NywgTFRDMjk4MCwgTFRDMjk3OCwgYW5kCisJCQlMVE0yOTg3IG9ubHkuCitpbjFfY3JpdAkJQ3JpdGljYWwgbWF4aW11bSBpbnB1dCB2b2x0YWdlLgoraW4xX21pbl9hbGFybQkJSW5wdXQgdm9sdGFnZSBsb3cgYWxhcm0uCitpbjFfbWF4X2FsYXJtCQlJbnB1dCB2b2x0YWdlIGhpZ2ggYWxhcm0uCisJCQlMVEMyOTc0LCBMVEMyOTc1LCBMVEMyOTc3LCBMVEMyOTgwLCBMVEMyOTc4LCBhbmQKKwkJCUxUTTI5ODcgb25seS4KK2luMV9sY3JpdF9hbGFybQkJSW5wdXQgdm9sdGFnZSBjcml0aWNhbCBsb3cgYWxhcm0uCisJCQlMVEMyOTc0LCBMVEMyOTc1LCBMVEMyOTc3LCBMVEMyOTgwLCBMVEMyOTc4LCBhbmQKKwkJCUxUTTI5ODcgb25seS4KK2luMV9jcml0X2FsYXJtCQlJbnB1dCB2b2x0YWdlIGNyaXRpY2FsIGhpZ2ggYWxhcm0uCitpbjFfbG93ZXN0CQlMb3dlc3QgaW5wdXQgdm9sdGFnZS4KKwkJCUxUQzI5NzQsIExUQzI5NzUsIExUQzI5NzcsIExUQzI5ODAsIExUQzI5NzgsIGFuZAorCQkJTFRNMjk4NyBvbmx5LgoraW4xX2hpZ2hlc3QJCUhpZ2hlc3QgaW5wdXQgdm9sdGFnZS4KK2luMV9yZXNldF9oaXN0b3J5CVJlc2V0IGlucHV0IHZvbHRhZ2UgaGlzdG9yeS4KKworaW5bTl1fbGFiZWwJCSJ2b3V0WzEtOF0iLgorCQkJTFRDMjk3NCwgTFRDMjk3NTogTj0yLTUKKwkJCUxUQzI5NzcsIExUQzI5ODAsIExUTTI5ODc6IE49Mi05CisJCQlMVEMyOTc4OiBOPTItOQorCQkJTFRDMzg4MCwgTFRDMzg4MiwgTFRDMjM4ODYgTFRDMzg4NywgTFRNNDY3NSwgTFRNNDY3NjoKKwkJCQlOPTItMworCQkJTFRDMzg4MzogTj0yCitpbltOXV9pbnB1dAkJTWVhc3VyZWQgb3V0cHV0IHZvbHRhZ2UuCitpbltOXV9taW4JCU1pbmltdW0gb3V0cHV0IHZvbHRhZ2UuCitpbltOXV9tYXgJCU1heGltdW0gb3V0cHV0IHZvbHRhZ2UuCitpbltOXV9sY3JpdAkJQ3JpdGljYWwgbWluaW11bSBvdXRwdXQgdm9sdGFnZS4KK2luW05dX2NyaXQJCUNyaXRpY2FsIG1heGltdW0gb3V0cHV0IHZvbHRhZ2UuCitpbltOXV9taW5fYWxhcm0JCU91dHB1dCB2b2x0YWdlIGxvdyBhbGFybS4KK2luW05dX21heF9hbGFybQkJT3V0cHV0IHZvbHRhZ2UgaGlnaCBhbGFybS4KK2luW05dX2xjcml0X2FsYXJtCU91dHB1dCB2b2x0YWdlIGNyaXRpY2FsIGxvdyBhbGFybS4KK2luW05dX2NyaXRfYWxhcm0JT3V0cHV0IHZvbHRhZ2UgY3JpdGljYWwgaGlnaCBhbGFybS4KK2luW05dX2xvd2VzdAkJTG93ZXN0IG91dHB1dCB2b2x0YWdlLiBMVEMyOTc0LCBMVEMyOTc1LAorCQkJYW5kIExUQzI5Nzggb25seS4KK2luW05dX2hpZ2hlc3QJCUhpZ2hlc3Qgb3V0cHV0IHZvbHRhZ2UuCitpbltOXV9yZXNldF9oaXN0b3J5CVJlc2V0IG91dHB1dCB2b2x0YWdlIGhpc3RvcnkuCisKK3RlbXBbTl1faW5wdXQJCU1lYXN1cmVkIHRlbXBlcmF0dXJlLgorCQkJT24gTFRDMjk3NCBhbmQgTFRDMjk3NSwgdGVtcFsxLTRdIHJlcG9ydCBleHRlcm5hbAorCQkJdGVtcGVyYXR1cmVzLCBhbmQgdGVtcDUgcmVwb3J0cyB0aGUgY2hpcCB0ZW1wZXJhdHVyZS4KKwkJCU9uIExUQzI5NzcsIExUQzI5ODAsIExUQzI5NzgsIGFuZCBMVE0yOTg3LCBvbmx5IG9uZQorCQkJdGVtcGVyYXR1cmUgbWVhc3VyZW1lbnQgaXMgc3VwcG9ydGVkIGFuZCByZXBvcnRzCisJCQl0aGUgY2hpcCB0ZW1wZXJhdHVyZS4KKwkJCU9uIExUQzM4ODAsIExUQzM4ODIsIExUQzM4ODcsIExUTTQ2NzUsIGFuZCBMVE00Njc2LAorCQkJdGVtcDEgYW5kIHRlbXAyIHJlcG9ydCBleHRlcm5hbCB0ZW1wZXJhdHVyZXMsIGFuZCB0ZW1wMworCQkJcmVwb3J0cyB0aGUgY2hpcCB0ZW1wZXJhdHVyZS4KKwkJCU9uIExUQzM4ODMsIHRlbXAxIHJlcG9ydHMgYW4gZXh0ZXJuYWwgdGVtcGVyYXR1cmUsCisJCQlhbmQgdGVtcDIgcmVwb3J0cyB0aGUgY2hpcCB0ZW1wZXJhdHVyZS4KK3RlbXBbTl1fbWluCQlNaW1pbXVtIHRlbXBlcmF0dXJlLiBMVEMyOTc0LCBMQ1QyOTc3LCBMVE0yOTgwLCBMVEMyOTc4LAorCQkJYW5kIExUTTI5ODcgb25seS4KK3RlbXBbTl1fbWF4CQlNYXhpbXVtIHRlbXBlcmF0dXJlLgordGVtcFtOXV9sY3JpdAkJQ3JpdGljYWwgbG93IHRlbXBlcmF0dXJlLgordGVtcFtOXV9jcml0CQlDcml0aWNhbCBoaWdoIHRlbXBlcmF0dXJlLgordGVtcFtOXV9taW5fYWxhcm0JVGVtcGVyYXR1cmUgbG93IGFsYXJtLgorCQkJTFRDMjk3NCwgTFRDMjk3NSwgTFRDMjk3NywgTFRNMjk4MCwgTFRDMjk3OCwgYW5kCisJCQlMVE0yOTg3IG9ubHkuCit0ZW1wW05dX21heF9hbGFybQlUZW1wZXJhdHVyZSBoaWdoIGFsYXJtLgordGVtcFtOXV9sY3JpdF9hbGFybQlUZW1wZXJhdHVyZSBjcml0aWNhbCBsb3cgYWxhcm0uCit0ZW1wW05dX2NyaXRfYWxhcm0JVGVtcGVyYXR1cmUgY3JpdGljYWwgaGlnaCBhbGFybS4KK3RlbXBbTl1fbG93ZXN0CQlMb3dlc3QgbWVhc3VyZWQgdGVtcGVyYXR1cmUuCisJCQlMVEMyOTc0LCBMVEMyOTc1LCBMVEMyOTc3LCBMVE0yOTgwLCBMVEMyOTc4LCBhbmQKKwkJCUxUTTI5ODcgb25seS4KKwkJCU5vdCBzdXBwb3J0ZWQgZm9yIGNoaXAgdGVtcGVyYXR1cmUgc2Vuc29yIG9uIExUQzI5NzQgYW5kCisJCQlMVEMyOTc1LgordGVtcFtOXV9oaWdoZXN0CQlIaWdoZXN0IG1lYXN1cmVkIHRlbXBlcmF0dXJlLiBOb3Qgc3VwcG9ydGVkIGZvciBjaGlwCisJCQl0ZW1wZXJhdHVyZSBzZW5zb3Igb24gTFRDMjk3NCBhbmQgTFRDMjk3NS4KK3RlbXBbTl1fcmVzZXRfaGlzdG9yeQlSZXNldCB0ZW1wZXJhdHVyZSBoaXN0b3J5LiBOb3Qgc3VwcG9ydGVkIGZvciBjaGlwCisJCQl0ZW1wZXJhdHVyZSBzZW5zb3Igb24gTFRDMjk3NCBhbmQgTFRDMjk3NS4KKworcG93ZXIxX2xhYmVsCQkicGluIi4gTFRDMzg4MyBhbmQgTFRDMzg4NiBvbmx5LgorcG93ZXIxX2lucHV0CQlNZWFzdXJlZCBpbnB1dCBwb3dlci4KKworcG93ZXJbTl1fbGFiZWwJCSJwb3V0WzEtNF0iLgorCQkJTFRDMjk3NCwgTFRDMjk3NTogTj0xLTQKKwkJCUxUQzI5NzcsIExUQzI5ODAsIExUTTI5ODc6IE5vdCBzdXBwb3J0ZWQKKwkJCUxUQzI5Nzg6IE5vdCBzdXBwb3J0ZWQKKwkJCUxUQzM4ODAsIExUQzM4ODIsIExUQzM4ODYsIExUQzM4ODcsIExUTTQ2NzUsIExUTTQ2NzY6CisJCQkJTj0xLTIKKwkJCUxUQzM4ODM6IE49MgorcG93ZXJbTl1faW5wdXQJCU1lYXN1cmVkIG91dHB1dCBwb3dlci4KKworY3VycjFfbGFiZWwJCSJpaW4iLiBMVEMzODgwLCBMVEMzODgzLCBMVEMzODg2LCBMVEMzODg3LCBMVE00Njc1LAorCQkJYW5kIExUTTQ2NzYgb25seS4KK2N1cnIxX2lucHV0CQlNZWFzdXJlZCBpbnB1dCBjdXJyZW50LgorY3VycjFfbWF4CQlNYXhpbXVtIGlucHV0IGN1cnJlbnQuCitjdXJyMV9tYXhfYWxhcm0JCUlucHV0IGN1cnJlbnQgaGlnaCBhbGFybS4KK2N1cnIxX2hpZ2hlc3QJCUhpZ2hlc3QgaW5wdXQgY3VycmVudC4gTFRDMzg4MyBhbmQgTFRDMzg4NiBvbmx5LgorY3VycjFfcmVzZXRfaGlzdG9yeQlSZXNldCBpbnB1dCBjdXJyZW50IGhpc3RvcnkuIExUQzM4ODMgYW5kIExUQzM4ODYgb25seS4KKworY3VycltOXV9sYWJlbAkJImlvdXRbMS00XSIuCisJCQlMVEMyOTc0LCBMVEMyOTc1OiBOPTEtNAorCQkJTFRDMjk3NywgTFRDMjk4MCwgTFRNMjk4Nzogbm90IHN1cHBvcnRlZAorCQkJTFRDMjk3ODogbm90IHN1cHBvcnRlZAorCQkJTFRDMzg4MCwgTFRDMzg4MiwgTFRDMzg4NiwgTFRDMzg4NywgTFRNNDY3NSwgTFRNNDY3NjoKKwkJCQlOPTItMworCQkJTFRDMzg4MzogTj0yCitjdXJyW05dX2lucHV0CQlNZWFzdXJlZCBvdXRwdXQgY3VycmVudC4KK2N1cnJbTl1fbWF4CQlNYXhpbXVtIG91dHB1dCBjdXJyZW50LgorY3VycltOXV9jcml0CQlDcml0aWNhbCBoaWdoIG91dHB1dCBjdXJyZW50LgorY3VycltOXV9sY3JpdAkJQ3JpdGljYWwgbG93IG91dHB1dCBjdXJyZW50LiBMVEMyOTc0IGFuZCBMVEMyOTc1IG9ubHkuCitjdXJyW05dX21heF9hbGFybQlPdXRwdXQgY3VycmVudCBoaWdoIGFsYXJtLgorY3VycltOXV9jcml0X2FsYXJtCU91dHB1dCBjdXJyZW50IGNyaXRpY2FsIGhpZ2ggYWxhcm0uCitjdXJyW05dX2xjcml0X2FsYXJtCU91dHB1dCBjdXJyZW50IGNyaXRpY2FsIGxvdyBhbGFybS4KKwkJCUxUQzI5NzQgYW5kIExUQzI5NzUgb25seS4KK2N1cnJbTl1fbG93ZXN0CQlMb3dlc3Qgb3V0cHV0IGN1cnJlbnQuIExUQzI5NzQgYW5kIExUQzI5NzUgb25seS4KK2N1cnJbTl1faGlnaGVzdAkJSGlnaGVzdCBvdXRwdXQgY3VycmVudC4KK2N1cnJbTl1fcmVzZXRfaGlzdG9yeQlSZXNldCBvdXRwdXQgY3VycmVudCBoaXN0b3J5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9sdGM0MTUxIGIvRG9jdW1lbnRhdGlvbi9od21vbi9sdGM0MTUxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzYzY2N2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2x0YzQxNTEKQEAgLTAsMCArMSw0NyBAQAorS2VybmVsIGRyaXZlciBsdGM0MTUxCis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIExpbmVhciBUZWNobm9sb2d5IExUQzQxNTEKKyAgICBQcmVmaXg6ICdsdGM0MTUxJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OgorICAgICAgICBodHRwOi8vd3d3LmxpbmVhci5jb20vZG9jcy9EYXRhc2hlZXQvNDE1MWZjLnBkZgorCitBdXRob3I6IFBlciBEYWxlbiA8cGVyLmRhbGVuQGFwcGVhcnR2LmNvbT4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIExUQzQxNTEgaXMgYSBIaWdoIFZvbHRhZ2UgSTJDIEN1cnJlbnQgYW5kIFZvbHRhZ2UgTW9uaXRvci4KKworCitVc2FnZSBOb3RlcworLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgZG9lcyBub3QgcHJvYmUgZm9yIExUQzQxNTEgZGV2aWNlcywgc2luY2UgdGhlcmUgaXMgbm8gcmVnaXN0ZXIKK3doaWNoIGNhbiBiZSBzYWZlbHkgdXNlZCB0byBpZGVudGlmeSB0aGUgY2hpcC4gWW91IHdpbGwgaGF2ZSB0byBpbnN0YW50aWF0ZQordGhlIGRldmljZXMgZXhwbGljaXRseS4KKworRXhhbXBsZTogdGhlIGZvbGxvd2luZyB3aWxsIGxvYWQgdGhlIGRyaXZlciBmb3IgYW4gTFRDNDE1MSBhdCBhZGRyZXNzIDB4NmYKK29uIEkyQyBidXMgIzA6CisjIG1vZHByb2JlIGx0YzQxNTEKKyMgZWNobyBsdGM0MTUxIDB4NmYgPiAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtMC9uZXdfZGV2aWNlCisKKworU3lzZnMgZW50cmllcworLS0tLS0tLS0tLS0tLQorCitWb2x0YWdlIHJlYWRpbmdzIHByb3ZpZGVkIGJ5IHRoaXMgZHJpdmVyIGFyZSByZXBvcnRlZCBhcyBvYnRhaW5lZCBmcm9tIHRoZSBBRElOCithbmQgVklOIHJlZ2lzdGVycy4KKworQ3VycmVudCByZWFkaW5nIHByb3ZpZGVkIGJ5IHRoaXMgZHJpdmVyIGlzIHJlcG9ydGVkIGFzIG9idGFpbmVkIGZyb20gdGhlIEN1cnJlbnQKK1NlbnNlIHJlZ2lzdGVyLiBUaGUgcmVwb3J0ZWQgdmFsdWUgYXNzdW1lcyB0aGF0IGEgMSBtT2htIHNlbnNlIHJlc2lzdG9yIGlzCitpbnN0YWxsZWQuCisKK2luMV9pbnB1dAkJVkRJTiB2b2x0YWdlIChtVikKKworaW4yX2lucHV0CQlBRElOIHZvbHRhZ2UgKG1WKQorCitjdXJyMV9pbnB1dAkJU0VOU0UgY3VycmVudCAobUEpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2x0YzQyMTUgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2x0YzQyMTUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE5NmExOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vbHRjNDIxNQpAQCAtMCwwICsxLDUxIEBACitLZXJuZWwgZHJpdmVyIGx0YzQyMTUKKz09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogTGluZWFyIFRlY2hub2xvZ3kgTFRDNDIxNQorICAgIFByZWZpeDogJ2x0YzQyMTUnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IDB4NDQKKyAgICBEYXRhc2hlZXQ6CisgICAgICAgIGh0dHA6Ly93d3cubGluZWFyLmNvbS9wYy9kb3dubG9hZERvY3VtZW50LmRvP25hdklkPUgwLEMxLEMxMDAzLEMxMDA2LEMxMTYzLFAxNzU3MixEMTI2OTcKKworQXV0aG9yOiBJcmEgVy4gU255ZGVyIDxpd3NAb3Zyby5jYWx0ZWNoLmVkdT4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIExUQzQyMTUgY29udHJvbGxlciBhbGxvd3MgYSBib2FyZCB0byBiZSBzYWZlbHkgaW5zZXJ0ZWQgYW5kIHJlbW92ZWQKK2Zyb20gYSBsaXZlIGJhY2twbGFuZS4KKworCitVc2FnZSBOb3RlcworLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgZG9lcyBub3QgcHJvYmUgZm9yIExUQzQyMTUgZGV2aWNlcywgZHVlIHRvIHRoZSBmYWN0IHRoYXQgc29tZQorb2YgdGhlIHBvc3NpYmxlIGFkZHJlc3NlcyBhcmUgdW5mcmllbmRseSB0byBwcm9iaW5nLiBZb3Ugd2lsbCBoYXZlIHRvCitpbnN0YW50aWF0ZSB0aGUgZGV2aWNlcyBleHBsaWNpdGx5LgorCitFeGFtcGxlOiB0aGUgZm9sbG93aW5nIHdpbGwgbG9hZCB0aGUgZHJpdmVyIGZvciBhbiBMVEM0MjE1IGF0IGFkZHJlc3MgMHg0NAorb24gSTJDIGJ1cyAjMDoKKyQgbW9kcHJvYmUgbHRjNDIxNQorJCBlY2hvIGx0YzQyMTUgMHg0NCA+IC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0wL25ld19kZXZpY2UKKworCitTeXNmcyBlbnRyaWVzCistLS0tLS0tLS0tLS0tCisKK1RoZSBMVEM0MjE1IGhhcyBidWlsdC1pbiBsaW1pdHMgZm9yIG92ZXJ2b2x0YWdlLCB1bmRlcnZvbHRhZ2UsIGFuZAordW5kZXJjdXJyZW50IHdhcm5pbmdzLiBUaGlzIG1ha2VzIGl0IHZlcnkgbGlrZWx5IHRoYXQgdGhlIHJlZmVyZW5jZQorY2lyY3VpdCB3aWxsIGJlIHVzZWQuCisKK2luMV9pbnB1dAkJaW5wdXQgdm9sdGFnZQoraW4yX2lucHV0CQlvdXRwdXQgdm9sdGFnZQorCitpbjFfbWluX2FsYXJtCQlpbnB1dCB1bmRlcnZvbHRhZ2UgYWxhcm0KK2luMV9tYXhfYWxhcm0JCWlucHV0IG92ZXJ2b2x0YWdlIGFsYXJtCisKK2N1cnIxX2lucHV0CQljdXJyZW50CitjdXJyMV9tYXhfYWxhcm0JCW92ZXJjdXJyZW50IGFsYXJtCisKK3Bvd2VyMV9pbnB1dAkJcG93ZXIgdXNhZ2UKK3Bvd2VyMV9hbGFybQkJcG93ZXIgYmFkIGFsYXJtCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2x0YzQyNDUgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2x0YzQyNDUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ3OGIwOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vbHRjNDI0NQpAQCAtMCwwICsxLDEwMiBAQAorS2VybmVsIGRyaXZlciBsdGM0MjQ1Cis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIExpbmVhciBUZWNobm9sb2d5IExUQzQyNDUKKyAgICBQcmVmaXg6ICdsdGM0MjQ1JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAweDIwLTB4M2YKKyAgICBEYXRhc2hlZXQ6CisgICAgICAgIGh0dHA6Ly93d3cubGluZWFyLmNvbS9wYy9kb3dubG9hZERvY3VtZW50LmRvP25hdklkPUgwLEMxLEMxMDAzLEMxMDA2LEMxMTQwLFAxOTM5MixEMTM1MTcKKworQXV0aG9yOiBJcmEgVy4gU255ZGVyIDxpd3NAb3Zyby5jYWx0ZWNoLmVkdT4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIExUQzQyNDUgY29udHJvbGxlciBhbGxvd3MgYSBib2FyZCB0byBiZSBzYWZlbHkgaW5zZXJ0ZWQgYW5kIHJlbW92ZWQKK2Zyb20gYSBsaXZlIGJhY2twbGFuZSBpbiBtdWx0aXBsZSBzdXBwbHkgc3lzdGVtcyBzdWNoIGFzIENvbXBhY3RQQ0kgYW5kCitQQ0kgRXhwcmVzcy4KKworCitVc2FnZSBOb3RlcworLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgZG9lcyBub3QgcHJvYmUgZm9yIExUQzQyNDUgZGV2aWNlcywgZHVlIHRvIHRoZSBmYWN0IHRoYXQgc29tZQorb2YgdGhlIHBvc3NpYmxlIGFkZHJlc3NlcyBhcmUgdW5mcmllbmRseSB0byBwcm9iaW5nLiBZb3Ugd2lsbCBoYXZlIHRvCitpbnN0YW50aWF0ZSB0aGUgZGV2aWNlcyBleHBsaWNpdGx5LgorCitFeGFtcGxlOiB0aGUgZm9sbG93aW5nIHdpbGwgbG9hZCB0aGUgZHJpdmVyIGZvciBhbiBMVEM0MjQ1IGF0IGFkZHJlc3MgMHgyMworb24gSTJDIGJ1cyAjMToKKyQgbW9kcHJvYmUgbHRjNDI0NQorJCBlY2hvIGx0YzQyNDUgMHgyMyA+IC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0xL25ld19kZXZpY2UKKworCitTeXNmcyBlbnRyaWVzCistLS0tLS0tLS0tLS0tCisKK1RoZSBMVEM0MjQ1IGhhcyBidWlsdC1pbiBsaW1pdHMgZm9yIG92ZXIgYW5kIHVuZGVyIGN1cnJlbnQgd2FybmluZ3MuIFRoaXMKK21ha2VzIGl0IHZlcnkgbGlrZWx5IHRoYXQgdGhlIHJlZmVyZW5jZSBjaXJjdWl0IHdpbGwgYmUgdXNlZC4KKworVGhpcyBkcml2ZXIgdXNlcyB0aGUgdmFsdWVzIGluIHRoZSBkYXRhc2hlZXQgdG8gY2hhbmdlIHRoZSByZWdpc3RlciB2YWx1ZXMKK2ludG8gdGhlIHZhbHVlcyBzcGVjaWZpZWQgaW4gdGhlIHN5c2ZzLWludGVyZmFjZSBkb2N1bWVudC4gVGhlIGN1cnJlbnQgcmVhZGluZ3MKK3JlbHkgb24gdGhlIHNlbnNlIHJlc2lzdG9ycyBsaXN0ZWQgaW4gVGFibGUgMjogIlNlbnNlIFJlc2lzdG9yIFZhbHVlcyIuCisKK2luMV9pbnB1dAkJMTJ2IGlucHV0IHZvbHRhZ2UgKG1WKQoraW4yX2lucHV0CQk1diAgaW5wdXQgdm9sdGFnZSAobVYpCitpbjNfaW5wdXQJCTN2ICBpbnB1dCB2b2x0YWdlIChtVikKK2luNF9pbnB1dAkJVmVlICgtMTJ2KSBpbnB1dCB2b2x0YWdlIChtVikKKworaW4xX21pbl9hbGFybQkJMTJ2IGlucHV0IHVuZGVydm9sdGFnZSBhbGFybQoraW4yX21pbl9hbGFybQkJNXYgIGlucHV0IHVuZGVydm9sdGFnZSBhbGFybQoraW4zX21pbl9hbGFybQkJM3YgIGlucHV0IHVuZGVydm9sdGFnZSBhbGFybQoraW40X21pbl9hbGFybQkJVmVlICgtMTJ2KSBpbnB1dCB1bmRlcnZvbHRhZ2UgYWxhcm0KKworY3VycjFfaW5wdXQJCTEydiBjdXJyZW50IChtQSkKK2N1cnIyX2lucHV0CQk1diAgY3VycmVudCAobUEpCitjdXJyM19pbnB1dAkJM3YgIGN1cnJlbnQgKG1BKQorY3VycjRfaW5wdXQJCVZlZSAoLTEydikgY3VycmVudCAobUEpCisKK2N1cnIxX21heF9hbGFybQkJMTJ2IG92ZXJjdXJyZW50IGFsYXJtCitjdXJyMl9tYXhfYWxhcm0JCTV2ICBvdmVyY3VycmVudCBhbGFybQorY3VycjNfbWF4X2FsYXJtCQkzdiAgb3ZlcmN1cnJlbnQgYWxhcm0KK2N1cnI0X21heF9hbGFybQkJVmVlICgtMTJ2KSBvdmVyY3VycmVudCBhbGFybQorCitpbjVfaW5wdXQJCTEydiBvdXRwdXQgdm9sdGFnZSAobVYpCitpbjZfaW5wdXQJCTV2ICBvdXRwdXQgdm9sdGFnZSAobVYpCitpbjdfaW5wdXQJCTN2ICBvdXRwdXQgdm9sdGFnZSAobVYpCitpbjhfaW5wdXQJCVZlZSAoLTEydikgb3V0cHV0IHZvbHRhZ2UgKG1WKQorCitpbjVfbWluX2FsYXJtCQkxMnYgb3V0cHV0IHVuZGVydm9sdGFnZSBhbGFybQoraW42X21pbl9hbGFybQkJNXYgIG91dHB1dCB1bmRlcnZvbHRhZ2UgYWxhcm0KK2luN19taW5fYWxhcm0JCTN2ICBvdXRwdXQgdW5kZXJ2b2x0YWdlIGFsYXJtCitpbjhfbWluX2FsYXJtCQlWZWUgKC0xMnYpIG91dHB1dCB1bmRlcnZvbHRhZ2UgYWxhcm0KKworaW45X2lucHV0CQlHUElPIHZvbHRhZ2UgZGF0YSAoc2VlIG5vdGUgMSkKK2luMTBfaW5wdXQJCUdQSU8gdm9sdGFnZSBkYXRhIChzZWUgbm90ZSAxKQoraW4xMV9pbnB1dAkJR1BJTyB2b2x0YWdlIGRhdGEgKHNlZSBub3RlIDEpCisKK3Bvd2VyMV9pbnB1dAkJMTJ2IHBvd2VyIHVzYWdlIChtVykKK3Bvd2VyMl9pbnB1dAkJNXYgIHBvd2VyIHVzYWdlIChtVykKK3Bvd2VyM19pbnB1dAkJM3YgIHBvd2VyIHVzYWdlIChtVykKK3Bvd2VyNF9pbnB1dAkJVmVlICgtMTJ2KSBwb3dlciB1c2FnZSAobVcpCisKKworTm90ZSAxCistLS0tLS0KKworSWYgeW91IGhhdmUgTk9UIGNvbmZpZ3VyZWQgdGhlIGRyaXZlciB0byBzYW1wbGUgYWxsIEdQSU8gcGlucyBhcyBhbmFsb2cKK3ZvbHRhZ2VzLCB0aGVuIHRoZSBpbjEwX2lucHV0IGFuZCBpbjExX2lucHV0IHN5c2ZzIGF0dHJpYnV0ZXMgd2lsbCBub3QgYmUKK2NyZWF0ZWQuIFRoZSBkcml2ZXIgd2lsbCBzYW1wbGUgdGhlIEdQSU8gcGluIHRoYXQgaXMgY3VycmVudGx5IGNvbm5lY3RlZCB0byB0aGUKK0FEQyBhcyBhbiBhbmFsb2cgdm9sdGFnZSwgYW5kIHJlcG9ydCB0aGUgdmFsdWUgaW4gaW45X2lucHV0LgorCitJZiB5b3UgaGF2ZSBjb25maWd1cmVkIHRoZSBkcml2ZXIgdG8gc2FtcGxlIGFsbCBHUElPIHBpbnMgYXMgYW5hbG9nIHZvbHRhZ2VzLAordGhlbiB0aGV5IHdpbGwgYmUgc2FtcGxlZCBpbiByb3VuZC1yb2JpbiBmYXNoaW9uLiBJZiB1c2Vyc3BhY2UgcmVhZHMgdG9vCitzbG93bHksIC1FQUdBSU4gd2lsbCBiZSByZXR1cm5lZCB3aGVuIHlvdSByZWFkIHRoZSBzeXNmcyBhdHRyaWJ1dGUgY29udGFpbmluZwordGhlIHNlbnNvciByZWFkaW5nLgorCitUaGUgTFRDNDI0NSBjaGlwIGNhbiBiZSBjb25maWd1cmVkIHRvIHNhbXBsZSBhbGwgR1BJTyBwaW5zIHdpdGggdHdvIG1ldGhvZHM6CisxKSBwbGF0Zm9ybSBkYXRhIC0tIHNlZSBpbmNsdWRlL2xpbnV4L2kyYy9sdGM0MjQ1LmgKKzIpIE9GIGRldmljZSB0cmVlIC0tIGFkZCB0aGUgImx0YzQyNDUsdXNlLWV4dHJhLWdwaW9zIiBwcm9wZXJ0eSB0byBlYWNoIGNoaXAKKworVGhlIGRlZmF1bHQgbW9kZSBvZiBvcGVyYXRpb24gaXMgdG8gc2FtcGxlIGEgc2luZ2xlIEdQSU8gcGluLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9sdGM0MjYwIGIvRG9jdW1lbnRhdGlvbi9od21vbi9sdGM0MjYwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ZmY0YWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2x0YzQyNjAKQEAgLTAsMCArMSw1NiBAQAorS2VybmVsIGRyaXZlciBsdGM0MjYwCis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIExpbmVhciBUZWNobm9sb2d5IExUQzQyNjAKKyAgICBQcmVmaXg6ICdsdGM0MjYwJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OgorICAgICAgICBodHRwOi8vY2RzLmxpbmVhci5jb20vZG9jcy9lbi9kYXRhc2hlZXQvNDI2MGZjLnBkZgorCitBdXRob3I6IEd1ZW50ZXIgUm9lY2sgPGxpbnV4QHJvZWNrLXVzLm5ldD4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIExUQzQyNjAgSG90IFN3YXAgY29udHJvbGxlciBhbGxvd3MgYSBib2FyZCB0byBiZSBzYWZlbHkgaW5zZXJ0ZWQKK2FuZCByZW1vdmVkIGZyb20gYSBsaXZlIGJhY2twbGFuZS4KKworCitVc2FnZSBOb3RlcworLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgZG9lcyBub3QgcHJvYmUgZm9yIExUQzQyNjAgZGV2aWNlcywgc2luY2UgdGhlcmUgaXMgbm8gcmVnaXN0ZXIKK3doaWNoIGNhbiBiZSBzYWZlbHkgdXNlZCB0byBpZGVudGlmeSB0aGUgY2hpcC4gWW91IHdpbGwgaGF2ZSB0byBpbnN0YW50aWF0ZQordGhlIGRldmljZXMgZXhwbGljaXRseS4KKworRXhhbXBsZTogdGhlIGZvbGxvd2luZyB3aWxsIGxvYWQgdGhlIGRyaXZlciBmb3IgYW4gTFRDNDI2MCBhdCBhZGRyZXNzIDB4MTAKK29uIEkyQyBidXMgIzE6CiskIG1vZHByb2JlIGx0YzQyNjAKKyQgZWNobyBsdGM0MjYwIDB4MTAgPiAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtMS9uZXdfZGV2aWNlCisKKworU3lzZnMgZW50cmllcworLS0tLS0tLS0tLS0tLQorCitWb2x0YWdlIHJlYWRpbmdzIHByb3ZpZGVkIGJ5IHRoaXMgZHJpdmVyIGFyZSByZXBvcnRlZCBhcyBvYnRhaW5lZCBmcm9tIHRoZSBBREMKK3JlZ2lzdGVycy4gSWYgYSBzZXQgb2Ygdm9sdGFnZSBkaXZpZGVyIHJlc2lzdG9ycyBpcyBpbnN0YWxsZWQsIGNhbGN1bGF0ZSB0aGUKK3JlYWwgdm9sdGFnZSBieSBtdWx0aXBseWluZyB0aGUgcmVwb3J0ZWQgdmFsdWUgd2l0aCAoUjErUjIpL1IyLCB3aGVyZSBSMSBpcyB0aGUKK3ZhbHVlIG9mIHRoZSBkaXZpZGVyIHJlc2lzdG9yIGFnYWluc3QgdGhlIG1lYXN1cmVkIHZvbHRhZ2UgYW5kIFIyIGlzIHRoZSB2YWx1ZQorb2YgdGhlIGRpdmlkZXIgcmVzaXN0b3IgYWdhaW5zdCBHcm91bmQuCisKK0N1cnJlbnQgcmVhZGluZyBwcm92aWRlZCBieSB0aGlzIGRyaXZlciBpcyByZXBvcnRlZCBhcyBvYnRhaW5lZCBmcm9tIHRoZSBBREMKK0N1cnJlbnQgU2Vuc2UgcmVnaXN0ZXIuIFRoZSByZXBvcnRlZCB2YWx1ZSBhc3N1bWVzIHRoYXQgYSAxIG1PaG0gc2Vuc2UgcmVzaXN0b3IKK2lzIGluc3RhbGxlZC4gSWYgYSBkaWZmZXJlbnQgc2Vuc2UgcmVzaXN0b3IgaXMgaW5zdGFsbGVkLCBjYWxjdWxhdGUgdGhlIHJlYWwKK2N1cnJlbnQgYnkgZGl2aWRpbmcgdGhlIHJlcG9ydGVkIHZhbHVlIGJ5IHRoZSBzZW5zZSByZXNpc3RvciB2YWx1ZSBpbiBtT2htLgorCitpbjFfaW5wdXQJCVNPVVJDRSB2b2x0YWdlIChtVikKK2luMV9taW5fYWxhcm0JCVVuZGVydm9sdGFnZSBhbGFybQoraW4xX21heF9hbGFybQkJT3ZlcnZvbHRhZ2UgYWxhcm0KKworaW4yX2lucHV0CQlBRElOIHZvbHRhZ2UgKG1WKQoraW4yX2FsYXJtCQlQb3dlciBiYWQgYWxhcm0KKworY3VycjFfaW5wdXQJCVNFTlNFIGN1cnJlbnQgKG1BKQorY3VycjFfYWxhcm0JCVNFTlNFIG92ZXJjdXJyZW50IGFsYXJtCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2x0YzQyNjEgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2x0YzQyNjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM3OGE3NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vbHRjNDI2MQpAQCAtMCwwICsxLDYzIEBACitLZXJuZWwgZHJpdmVyIGx0YzQyNjEKKz09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogTGluZWFyIFRlY2hub2xvZ3kgTFRDNDI2MQorICAgIFByZWZpeDogJ2x0YzQyNjEnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IC0KKyAgICBEYXRhc2hlZXQ6CisgICAgICAgIGh0dHA6Ly9jZHMubGluZWFyLmNvbS9kb2NzL0RhdGFzaGVldC80MjYxMmZiLnBkZgorCitBdXRob3I6IEd1ZW50ZXIgUm9lY2sgPGxpbnV4QHJvZWNrLXVzLm5ldD4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIExUQzQyNjEvTFRDNDI2MS0yIG5lZ2F0aXZlIHZvbHRhZ2UgSG90IFN3YXAgY29udHJvbGxlcnMgYWxsb3cgYSBib2FyZAordG8gYmUgc2FmZWx5IGluc2VydGVkIGFuZCByZW1vdmVkIGZyb20gYSBsaXZlIGJhY2twbGFuZS4KKworCitVc2FnZSBOb3RlcworLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgZG9lcyBub3QgcHJvYmUgZm9yIExUQzQyNjEgZGV2aWNlcywgc2luY2UgdGhlcmUgaXMgbm8gcmVnaXN0ZXIKK3doaWNoIGNhbiBiZSBzYWZlbHkgdXNlZCB0byBpZGVudGlmeSB0aGUgY2hpcC4gWW91IHdpbGwgaGF2ZSB0byBpbnN0YW50aWF0ZQordGhlIGRldmljZXMgZXhwbGljaXRseS4KKworRXhhbXBsZTogdGhlIGZvbGxvd2luZyB3aWxsIGxvYWQgdGhlIGRyaXZlciBmb3IgYW4gTFRDNDI2MSBhdCBhZGRyZXNzIDB4MTAKK29uIEkyQyBidXMgIzE6CiskIG1vZHByb2JlIGx0YzQyNjEKKyQgZWNobyBsdGM0MjYxIDB4MTAgPiAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtMS9uZXdfZGV2aWNlCisKKworU3lzZnMgZW50cmllcworLS0tLS0tLS0tLS0tLQorCitWb2x0YWdlIHJlYWRpbmdzIHByb3ZpZGVkIGJ5IHRoaXMgZHJpdmVyIGFyZSByZXBvcnRlZCBhcyBvYnRhaW5lZCBmcm9tIHRoZSBBREMKK3JlZ2lzdGVycy4gSWYgYSBzZXQgb2Ygdm9sdGFnZSBkaXZpZGVyIHJlc2lzdG9ycyBpcyBpbnN0YWxsZWQsIGNhbGN1bGF0ZSB0aGUKK3JlYWwgdm9sdGFnZSBieSBtdWx0aXBseWluZyB0aGUgcmVwb3J0ZWQgdmFsdWUgd2l0aCAoUjErUjIpL1IyLCB3aGVyZSBSMSBpcyB0aGUKK3ZhbHVlIG9mIHRoZSBkaXZpZGVyIHJlc2lzdG9yIGFnYWluc3QgdGhlIG1lYXN1cmVkIHZvbHRhZ2UgYW5kIFIyIGlzIHRoZSB2YWx1ZQorb2YgdGhlIGRpdmlkZXIgcmVzaXN0b3IgYWdhaW5zdCBHcm91bmQuCisKK0N1cnJlbnQgcmVhZGluZyBwcm92aWRlZCBieSB0aGlzIGRyaXZlciBpcyByZXBvcnRlZCBhcyBvYnRhaW5lZCBmcm9tIHRoZSBBREMKK0N1cnJlbnQgU2Vuc2UgcmVnaXN0ZXIuIFRoZSByZXBvcnRlZCB2YWx1ZSBhc3N1bWVzIHRoYXQgYSAxIG1PaG0gc2Vuc2UgcmVzaXN0b3IKK2lzIGluc3RhbGxlZC4gSWYgYSBkaWZmZXJlbnQgc2Vuc2UgcmVzaXN0b3IgaXMgaW5zdGFsbGVkLCBjYWxjdWxhdGUgdGhlIHJlYWwKK2N1cnJlbnQgYnkgZGl2aWRpbmcgdGhlIHJlcG9ydGVkIHZhbHVlIGJ5IHRoZSBzZW5zZSByZXNpc3RvciB2YWx1ZSBpbiBtT2htLgorCitUaGUgY2hpcCBoYXMgdHdvIHZvbHRhZ2Ugc2Vuc29ycywgYnV0IG9ubHkgb25lIHNldCBvZiB2b2x0YWdlIGFsYXJtIHN0YXR1cyBiaXRzLgorSW4gbWFueSBtYW55IGRlc2lnbnMsIHRob3NlIGFsYXJtcyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBBRElOMiBzZW5zb3IsIGR1ZSB0bwordGhlIHByb3hpbWl0eSBvZiB0aGUgQURJTjIgcGluIHRvIHRoZSBPViBwaW4uIEFESU4yIGlzLCBob3dldmVyLCBub3QgYXZhaWxhYmxlCitvbiBhbGwgY2hpcCB2YXJpYW50cy4gVG8gZW5zdXJlIHRoYXQgdGhlIGFsYXJtIGNvbmRpdGlvbiBpcyByZXBvcnRlZCB0byB0aGUgdXNlciwKK3JlcG9ydCBpdCB3aXRoIGJvdGggdm9sdGFnZSBzZW5zb3JzLgorCitpbjFfaW5wdXQJCUFESU4yIHZvbHRhZ2UgKG1WKQoraW4xX21pbl9hbGFybQkJQURJTi9BRElOMiBVbmRlcnZvbHRhZ2UgYWxhcm0KK2luMV9tYXhfYWxhcm0JCUFESU4vQURJTjIgT3ZlcnZvbHRhZ2UgYWxhcm0KKworaW4yX2lucHV0CQlBRElOIHZvbHRhZ2UgKG1WKQoraW4yX21pbl9hbGFybQkJQURJTi9BRElOMiBVbmRlcnZvbHRhZ2UgYWxhcm0KK2luMl9tYXhfYWxhcm0JCUFESU4vQURJTjIgT3ZlcnZvbHRhZ2UgYWxhcm0KKworY3VycjFfaW5wdXQJCVNFTlNFIGN1cnJlbnQgKG1BKQorY3VycjFfYWxhcm0JCVNFTlNFIG92ZXJjdXJyZW50IGFsYXJtCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL21heDE2MDY0IGIvRG9jdW1lbnRhdGlvbi9od21vbi9tYXgxNjA2NApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTljYzc4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9tYXgxNjA2NApAQCAtMCwwICsxLDY2IEBACitLZXJuZWwgZHJpdmVyIG1heDE2MDY0Cis9PT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBNYXhpbSBNQVgxNjA2NAorICAgIFByZWZpeDogJ21heDE2MDY0JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OiBodHRwOi8vZGF0YXNoZWV0cy5tYXhpbS1pYy5jb20vZW4vZHMvTUFYMTYwNjQucGRmCisKK0F1dGhvcjogR3VlbnRlciBSb2VjayA8bGludXhAcm9lY2stdXMubmV0PgorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBzdXBwb3J0cyBoYXJkd2FyZSBtb250b3JpbmcgZm9yIE1heGltIE1BWDE2MDY0IFF1YWQgUG93ZXItU3VwcGx5CitDb250cm9sbGVyIHdpdGggQWN0aXZlLVZvbHRhZ2UgT3V0cHV0IENvbnRyb2wgYW5kIFBNQnVzIEludGVyZmFjZS4KKworVGhlIGRyaXZlciBpcyBhIGNsaWVudCBkcml2ZXIgdG8gdGhlIGNvcmUgUE1CdXMgZHJpdmVyLgorUGxlYXNlIHNlZSBEb2N1bWVudGF0aW9uL2h3bW9uL3BtYnVzIGZvciBkZXRhaWxzIG9uIFBNQnVzIGNsaWVudCBkcml2ZXJzLgorCisKK1VzYWdlIE5vdGVzCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBkb2VzIG5vdCBhdXRvLWRldGVjdCBkZXZpY2VzLiBZb3Ugd2lsbCBoYXZlIHRvIGluc3RhbnRpYXRlIHRoZQorZGV2aWNlcyBleHBsaWNpdGx5LiBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaTJjL2luc3RhbnRpYXRpbmctZGV2aWNlcyBmb3IKK2RldGFpbHMuCisKKworUGxhdGZvcm0gZGF0YSBzdXBwb3J0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGRyaXZlciBzdXBwb3J0cyBzdGFuZGFyZCBQTUJ1cyBkcml2ZXIgcGxhdGZvcm0gZGF0YS4KKworCitTeXNmcyBlbnRyaWVzCistLS0tLS0tLS0tLS0tCisKK1RoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBhcmUgc3VwcG9ydGVkLiBMaW1pdHMgYXJlIHJlYWQtd3JpdGU7IGFsbCBvdGhlcgorYXR0cmlidXRlcyBhcmUgcmVhZC1vbmx5LgorCitpblsxLTRdX2xhYmVsCQkidm91dFsxLTRdIgoraW5bMS00XV9pbnB1dAkJTWVhc3VyZWQgdm9sdGFnZS4gRnJvbSBSRUFEX1ZPVVQgcmVnaXN0ZXIuCitpblsxLTRdX21pbgkJTWluaW11bSBWb2x0YWdlLiBGcm9tIFZPVVRfVVZfV0FSTl9MSU1JVCByZWdpc3Rlci4KK2luWzEtNF1fbWF4CQlNYXhpbXVtIHZvbHRhZ2UuIEZyb20gVk9VVF9PVl9XQVJOX0xJTUlUIHJlZ2lzdGVyLgoraW5bMS00XV9sY3JpdAkJQ3JpdGljYWwgbWluaW11bSBWb2x0YWdlLiBWT1VUX1VWX0ZBVUxUX0xJTUlUIHJlZ2lzdGVyLgoraW5bMS00XV9jcml0CQlDcml0aWNhbCBtYXhpbXVtIHZvbHRhZ2UuIEZyb20gVk9VVF9PVl9GQVVMVF9MSU1JVCByZWdpc3Rlci4KK2luWzEtNF1fbWluX2FsYXJtCVZvbHRhZ2UgbG93IGFsYXJtLiBGcm9tIFZPTFRBR0VfVVZfV0FSTklORyBzdGF0dXMuCitpblsxLTRdX21heF9hbGFybQlWb2x0YWdlIGhpZ2ggYWxhcm0uIEZyb20gVk9MVEFHRV9PVl9XQVJOSU5HIHN0YXR1cy4KK2luWzEtNF1fbGNyaXRfYWxhcm0JVm9sdGFnZSBjcml0aWNhbCBsb3cgYWxhcm0uIEZyb20gVk9MVEFHRV9VVl9GQVVMVCBzdGF0dXMuCitpblsxLTRdX2NyaXRfYWxhcm0JVm9sdGFnZSBjcml0aWNhbCBoaWdoIGFsYXJtLiBGcm9tIFZPTFRBR0VfT1ZfRkFVTFQgc3RhdHVzLgoraW5bMS00XV9oaWdoZXN0CQlIaXN0b3JpY2FsIG1heGltdW0gdm9sdGFnZS4KK2luWzEtNF1fcmVzZXRfaGlzdG9yeQlXcml0ZSBhbnkgdmFsdWUgdG8gcmVzZXQgaGlzdG9yeS4KKwordGVtcDFfaW5wdXQJCU1lYXN1cmVkIHRlbXBlcmF0dXJlLiBGcm9tIFJFQURfVEVNUEVSQVRVUkVfMSByZWdpc3Rlci4KK3RlbXAxX21heAkJTWF4aW11bSB0ZW1wZXJhdHVyZS4gRnJvbSBPVF9XQVJOX0xJTUlUIHJlZ2lzdGVyLgordGVtcDFfY3JpdAkJQ3JpdGljYWwgaGlnaCB0ZW1wZXJhdHVyZS4gRnJvbSBPVF9GQVVMVF9MSU1JVCByZWdpc3Rlci4KK3RlbXAxX21heF9hbGFybQkJQ2hpcCB0ZW1wZXJhdHVyZSBoaWdoIGFsYXJtLiBTZXQgYnkgY29tcGFyaW5nCisJCQlSRUFEX1RFTVBFUkFUVVJFXzEgd2l0aCBPVF9XQVJOX0xJTUlUIGlmIFRFTVBfT1RfV0FSTklORworCQkJc3RhdHVzIGlzIHNldC4KK3RlbXAxX2NyaXRfYWxhcm0JQ2hpcCB0ZW1wZXJhdHVyZSBjcml0aWNhbCBoaWdoIGFsYXJtLiBTZXQgYnkgY29tcGFyaW5nCisJCQlSRUFEX1RFTVBFUkFUVVJFXzEgd2l0aCBPVF9GQVVMVF9MSU1JVCBpZiBURU1QX09UX0ZBVUxUCisJCQlzdGF0dXMgaXMgc2V0LgordGVtcDFfaGlnaGVzdAkJSGlzdG9yaWNhbCBtYXhpbXVtIHRlbXBlcmF0dXJlLgordGVtcDFfcmVzZXRfaGlzdG9yeQlXcml0ZSBhbnkgdmFsdWUgdG8gcmVzZXQgaGlzdG9yeS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vbWF4MTYwNjUgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL21heDE2MDY1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwOGEyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL21heDE2MDY1CkBAIC0wLDAgKzEsMTA1IEBACitLZXJuZWwgZHJpdmVyIG1heDE2MDY1Cis9PT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBNYXhpbSBNQVgxNjA2NSwgTUFYMTYwNjYKKyAgICBQcmVmaXhlczogJ21heDE2MDY1JywgJ21heDE2MDY2JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OgorCWh0dHA6Ly9kYXRhc2hlZXRzLm1heGltLWljLmNvbS9lbi9kcy9NQVgxNjA2NS1NQVgxNjA2Ni5wZGYKKyAqICBNYXhpbSBNQVgxNjA2NworICAgIFByZWZpeDogJ21heDE2MDY3JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OgorCWh0dHA6Ly9kYXRhc2hlZXRzLm1heGltLWljLmNvbS9lbi9kcy9NQVgxNjA2Ny5wZGYKKyAqICBNYXhpbSBNQVgxNjA2OAorICAgIFByZWZpeDogJ21heDE2MDY4JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OgorCWh0dHA6Ly9kYXRhc2hlZXRzLm1heGltLWljLmNvbS9lbi9kcy9NQVgxNjA2OC5wZGYKKyAqICBNYXhpbSBNQVgxNjA3MC9NQVgxNjA3MQorICAgIFByZWZpeGVzOiAnbWF4MTYwNzAnLCAnbWF4MTYwNzEnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IC0KKyAgICBEYXRhc2hlZXQ6CisJaHR0cDovL2RhdGFzaGVldHMubWF4aW0taWMuY29tL2VuL2RzL01BWDE2MDcwLU1BWDE2MDcxLnBkZgorCisKK0F1dGhvcjogR3VlbnRlciBSb2VjayA8bGludXhAcm9lY2stdXMubmV0PgorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitbRnJvbSBkYXRhc2hlZXRzXSBUaGUgTUFYMTYwNjUvTUFYMTYwNjYgZmxhc2gtY29uZmlndXJhYmxlIHN5c3RlbSBtYW5hZ2VycworbW9uaXRvciBhbmQgc2VxdWVuY2UgbXVsdGlwbGUgc3lzdGVtIHZvbHRhZ2VzLiBUaGUgTUFYMTYwNjUvTUFYMTYwNjYgY2FuIGFsc28KK2FjY3VyYXRlbHkgbW9uaXRvciAoKy8tMi41JSkgb25lIGN1cnJlbnQgY2hhbm5lbCB1c2luZyBhIGRlZGljYXRlZCBoaWdoLXNpZGUKK2N1cnJlbnQtc2Vuc2UgYW1wbGlmaWVyLiBUaGUgTUFYMTYwNjUgbWFuYWdlcyB1cCB0byB0d2VsdmUgc3lzdGVtIHZvbHRhZ2VzCitzaW11bHRhbmVvdXNseSwgYW5kIHRoZSBNQVgxNjA2NiBtYW5hZ2VzIHVwIHRvIGVpZ2h0IHN1cHBseSB2b2x0YWdlcy4KKworVGhlIE1BWDE2MDY3IGZsYXNoLWNvbmZpZ3VyYWJsZSBzeXN0ZW0gbWFuYWdlciBtb25pdG9ycyBhbmQgc2VxdWVuY2VzIG11bHRpcGxlCitzeXN0ZW0gdm9sdGFnZXMuIFRoZSBNQVgxNjA2NyBtYW5hZ2VzIHVwIHRvIHNpeCBzeXN0ZW0gdm9sdGFnZXMgc2ltdWx0YW5lb3VzbHkuCisKK1RoZSBNQVgxNjA2OCBmbGFzaC1jb25maWd1cmFibGUgc3lzdGVtIG1hbmFnZXIgbW9uaXRvcnMgYW5kIG1hbmFnZXMgdXAgdG8gc2l4CitzeXN0ZW0gdm9sdGFnZXMgc2ltdWx0YW5lb3VzbHkuCisKK1RoZSBNQVgxNjA3MC9NQVgxNjA3MSBmbGFzaC1jb25maWd1cmFibGUgc3lzdGVtIG1vbml0b3JzIHN1cGVydmlzZSBtdWx0aXBsZQorc3lzdGVtIHZvbHRhZ2VzLiBUaGUgTUFYMTYwNzAvTUFYMTYwNzEgY2FuIGFsc28gYWNjdXJhdGVseSBtb25pdG9yICgrLy0yLjUlKQorb25lIGN1cnJlbnQgY2hhbm5lbCB1c2luZyBhIGRlZGljYXRlZCBoaWdoLXNpZGUgY3VycmVudC1zZW5zZSBhbXBsaWZpZXIuIFRoZQorTUFYMTYwNzAgbW9uaXRvcnMgdXAgdG8gdHdlbHZlIHN5c3RlbSB2b2x0YWdlcyBzaW11bHRhbmVvdXNseSwgYW5kIHRoZSBNQVgxNjA3MQorbW9uaXRvcnMgdXAgdG8gZWlnaHQgc3VwcGx5IHZvbHRhZ2VzLgorCitFYWNoIG1vbml0b3JlZCBjaGFubmVsIGhhcyBpdHMgb3duIGxvdyBhbmQgaGlnaCBjcml0aWNhbCBsaW1pdHMuIE1BWDE2MDY1LAorTUFYMTYwNjYsIE1BWDE2MDcwLCBhbmQgTUFYMTYwNzEgc3VwcG9ydCBhbiBhZGRpdGlvbmFsIGxpbWl0IHdoaWNoIGlzCitjb25maWd1cmFibGUgYXMgZWl0aGVyIGxvdyBvciBoaWdoIHNlY29uZGFyeSBsaW1pdC4gTUFYMTYwNjUsIE1BWDE2MDY2LAorTUFYMTYwNzAsIGFuZCBNQVgxNjA3MSBhbHNvIHN1cHBvcnQgc3VwcGx5IGN1cnJlbnQgbW9uaXRvcmluZy4KKworCitVc2FnZSBOb3RlcworLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgZG9lcyBub3QgcHJvYmUgZm9yIGRldmljZXMsIHNpbmNlIHRoZXJlIGlzIG5vIHJlZ2lzdGVyIHdoaWNoCitjYW4gYmUgc2FmZWx5IHVzZWQgdG8gaWRlbnRpZnkgdGhlIGNoaXAuIFlvdSB3aWxsIGhhdmUgdG8gaW5zdGFudGlhdGUKK3RoZSBkZXZpY2VzIGV4cGxpY2l0bHkuIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pMmMvaW5zdGFudGlhdGluZy1kZXZpY2VzIGZvcgorZGV0YWlscy4KKworV0FSTklORzogRG8gbm90IGFjY2VzcyBjaGlwIHJlZ2lzdGVycyB1c2luZyB0aGUgaTJjZHVtcCBjb21tYW5kLCBhbmQgZG8gbm90IHVzZQorYW55IG9mIHRoZSBpMmN0b29scyBjb21tYW5kcyBvbiBhIGNvbW1hbmQgcmVnaXN0ZXIgKDB4YTUgdG8gMHhhYykuIFRoZSBjaGlwcworc3VwcG9ydGVkIGJ5IHRoaXMgZHJpdmVyIGludGVycHJldCBhbnkgYWNjZXNzIHRvIGEgY29tbWFuZCByZWdpc3RlciAoaW5jbHVkaW5nCityZWFkIGNvbW1hbmRzKSBhcyByZXF1ZXN0IHRvIGV4ZWN1dGUgdGhlIGNvbW1hbmQgaW4gcXVlc3Rpb24uIFRoaXMgbWF5IHJlc3VsdCBpbgorcG93ZXIgbG9zcywgYm9hcmQgcmVzZXRzLCBhbmQvb3IgRmxhc2ggY29ycnVwdGlvbi4gV29yc3QgY2FzZSwgeW91ciBib2FyZCBtYXkKK3R1cm4gaW50byBhIGJyaWNrLgorCisKK1N5c2ZzIGVudHJpZXMKKy0tLS0tLS0tLS0tLS0KKworaW5bMC0xMV1faW5wdXQJCUlucHV0IHZvbHRhZ2UgbWVhc3VyZW1lbnRzLgorCitpbjEyX2lucHV0CQlWb2x0YWdlIG9uIENTUCAoQ3VycmVudCBTZW5zZSBQb3NpdGl2ZSkgcGluLgorCQkJT25seSBpZiB0aGUgY2hpcCBzdXBwb3J0cyBjdXJyZW50IHNlbnNpbmcgYW5kIGlmCisJCQljdXJyZW50IHNlbnNpbmcgaXMgZW5hYmxlZC4KKworaW5bMC0xMV1fbWluCQlMb3cgd2FybmluZyBsaW1pdC4KKwkJCVN1cHBvcnRlZCBvbiBNQVgxNjA2NSwgTUFYMTYwNjYsIE1BWDE2MDcwLCBhbmQgTUFYMTYwNzEKKwkJCW9ubHkuCisKK2luWzAtMTFdX21heAkJSGlnaCB3YXJuaW5nIGxpbWl0LgorCQkJU3VwcG9ydGVkIG9uIE1BWDE2MDY1LCBNQVgxNjA2NiwgTUFYMTYwNzAsIGFuZCBNQVgxNjA3MQorCQkJb25seS4KKworCQkJRWl0aGVyIGxvdyBvciBoaWdoIHdhcm5pbmcgbGltaXRzIGFyZSBzdXBwb3J0ZWQKKwkJCShkZXBlbmRpbmcgb24gY2hpcCBjb25maWd1cmF0aW9uKSwgYnV0IG5vdCBib3RoLgorCitpblswLTExXV9sY3JpdAkJTG93IGNyaXRpY2FsIGxpbWl0LgorCitpblswLTExXV9jcml0CQlIaWdoIGNyaXRpY2FsIGxpbWl0LgorCitpblswLTExXV9hbGFybQkJSW5wdXQgdm9sdGFnZSBhbGFybS4KKworY3VycjFfaW5wdXQJCUN1cnJlbnQgc2Vuc2UgaW5wdXQ7IG9ubHkgaWYgdGhlIGNoaXAgc3VwcG9ydHMgY3VycmVudAorCQkJc2Vuc2luZyBhbmQgaWYgY3VycmVudCBzZW5zaW5nIGlzIGVuYWJsZWQuCisJCQlEaXNwbGF5ZWQgY3VycmVudCBhc3N1bWVzIDAuMDAxIE9obSBjdXJyZW50IHNlbnNlCisJCQlyZXNpc3Rvci4KKworY3VycjFfYWxhcm0JCU92ZXJjdXJyZW50IGFsYXJtOyBvbmx5IGlmIHRoZSBjaGlwIHN1cHBvcnRzIGN1cnJlbnQKKwkJCXNlbnNpbmcgYW5kIGlmIGN1cnJlbnQgc2Vuc2luZyBpcyBlbmFibGVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9tYXgxNjE5IGIvRG9jdW1lbnRhdGlvbi9od21vbi9tYXgxNjE5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxOGJhZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL21heDE2MTkKQEAgLTAsMCArMSwyOSBAQAorS2VybmVsIGRyaXZlciBtYXgxNjE5Cis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIE1heGltIE1BWDE2MTkKKyAgICBQcmVmaXg6ICdtYXgxNjE5JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgxOC0weDFhLCAweDI5LTB4MmIsIDB4NGMtMHg0ZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBNYXhpbSB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vcGRmc2Vydi5tYXhpbS1pYy5jb20vZW4vZHMvTUFYMTYxOS5wZGYKKworQXV0aG9yczoKKyAgICAgICAgT2xla3NpaiBSZW1wZWwgPGJ1Zy10cmFja0BmaXNoZXItcHJpdmF0Lm5ldD4sCisgICAgICAgIEplYW4gRGVsdmFyZSA8amRlbHZhcmVAc3VzZS5kZT4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoZSBNQVgxNjE5IGlzIGEgZGlnaXRhbCB0ZW1wZXJhdHVyZSBzZW5zb3IuIEl0IHNlbnNlcyBpdHMgb3duIHRlbXBlcmF0dXJlIGFzCit3ZWxsIGFzIHRoZSB0ZW1wZXJhdHVyZSBvZiB1cCB0byBvbmUgZXh0ZXJuYWwgZGlvZGUuCisKK0FsbCB0ZW1wZXJhdHVyZSB2YWx1ZXMgYXJlIGdpdmVuIGluIGRlZ3JlZXMgQ2Vsc2l1cy4gUmVzb2x1dGlvbgoraXMgMS4wIGRlZ3JlZSBmb3IgdGhlIGxvY2FsIHRlbXBlcmF0dXJlIGFuZCBmb3IgdGhlIHJlbW90ZSB0ZW1wZXJhdHVyZS4KKworT25seSB0aGUgZXh0ZXJuYWwgc2Vuc29yIGhhcyBoaWdoIGFuZCBsb3cgbGltaXRzLgorCitUaGUgbWF4MTYxOSBkcml2ZXIgd2lsbCBub3QgdXBkYXRlIGl0cyB2YWx1ZXMgbW9yZSBmcmVxdWVudGx5IHRoYW4gZXZlcnkKK290aGVyIHNlY29uZDsgcmVhZGluZyB0aGVtIG1vcmUgb2Z0ZW4gd2lsbCBkbyBubyBoYXJtLCBidXQgd2lsbCByZXR1cm4KKydvbGQnIHZhbHVlcy4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9tYXgxNjY4IGIvRG9jdW1lbnRhdGlvbi9od21vbi9tYXgxNjY4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MTZlZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL21heDE2NjgKQEAgLTAsMCArMSw2MCBAQAorS2VybmVsIGRyaXZlciBtYXgxNjY4Cis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIE1heGltIE1BWDE2NjgsIE1BWDE4MDUgYW5kIE1BWDE5ODkKKyAgICBQcmVmaXg6ICdtYXgxNjY4JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgxOCwgMHgxOSwgMHgxYSwgMHgyOSwgMHgyYSwgMHgyYiwgMHg0YywgMHg0ZCwgMHg0ZQorICAgIERhdGFzaGVldDogaHR0cDovL2RhdGFzaGVldHMubWF4aW0taWMuY29tL2VuL2RzL01BWDE2NjgtTUFYMTk4OS5wZGYKKworQXV0aG9yOgorICAgIERhdmlkIEdlb3JnZSA8ZGF2aWQuZ2VvcmdlQHNrYS5hYy56YT4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgdGhlIE1heGltIE1BWDE2NjgsIE1BWDE4MDUgYW5kIE1BWDE5ODkKK2NoaXBzLgorCitUaGUgdGhyZWUgZGV2aWNlcyBhcmUgdmVyeSBzaW1pbGFyLCBidXQgdGhlIE1BWDE4MDUgaGFzIGEgcmVkdWNlZCBmZWF0dXJlCitzZXQ7IG9ubHkgdHdvIHJlbW90ZSB0ZW1wZXJhdHVyZSBpbnB1dHMgdnMgdGhlIGZvdXIgYXZhaWJsZSBvbiB0aGUgb3RoZXIKK3R3byBJQ3MuCisKK1RoZSBkcml2ZXIgaXMgYWJsZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBkZXZpY2VzIGFuZCBjcmVhdGVzIHN5c2ZzCitlbnRyaWVzIGFzIGZvbGxvd3M6CisKK01BWDE4MDUsIE1BWDE2NjggYW5kIE1BWDE5ODk6CisKK3RlbXAxX2lucHV0ICAgICBybyBsb2NhbCAoYW1iaWVudCkgdGVtcGVyYXR1cmUKK3RlbXAxX21heCAgICAgICBydyBsb2NhbCB0ZW1wZXJhdHVyZSBtYXhpbXVtIHRocmVzaG9sZCBmb3IgYWxhcm0KK3RlbXAxX21heF9hbGFybSBybyBsb2NhbCB0ZW1wZXJhdHVyZSBtYXhpbXVtIHRocmVzaG9sZCBhbGFybQordGVtcDFfbWluICAgICAgIHJ3IGxvY2FsIHRlbXBlcmF0dXJlIG1pbmltdW0gdGhyZXNob2xkIGZvciBhbGFybQordGVtcDFfbWluX2FsYXJtIHJvIGxvY2FsIHRlbXBlcmF0dXJlIG1pbmltdW0gdGhyZXNob2xkIGFsYXJtCit0ZW1wMl9pbnB1dCAgICAgcm8gcmVtb3RlIHRlbXBlcmF0dXJlIDEKK3RlbXAyX21heCAgICAgICBydyByZW1vdGUgdGVtcGVyYXR1cmUgMSBtYXhpbXVtIHRocmVzaG9sZCBmb3IgYWxhcm0KK3RlbXAyX21heF9hbGFybSBybyByZW1vdGUgdGVtcGVyYXR1cmUgMSBtYXhpbXVtIHRocmVzaG9sZCBhbGFybQordGVtcDJfbWluICAgICAgIHJ3IHJlbW90ZSB0ZW1wZXJhdHVyZSAxIG1pbmltdW0gdGhyZXNob2xkIGZvciBhbGFybQordGVtcDJfbWluX2FsYXJtIHJvIHJlbW90ZSB0ZW1wZXJhdHVyZSAxIG1pbmltdW0gdGhyZXNob2xkIGFsYXJtCit0ZW1wM19pbnB1dCAgICAgcm8gcmVtb3RlIHRlbXBlcmF0dXJlIDIKK3RlbXAzX21heCAgICAgICBydyByZW1vdGUgdGVtcGVyYXR1cmUgMiBtYXhpbXVtIHRocmVzaG9sZCBmb3IgYWxhcm0KK3RlbXAzX21heF9hbGFybSBybyByZW1vdGUgdGVtcGVyYXR1cmUgMiBtYXhpbXVtIHRocmVzaG9sZCBhbGFybQordGVtcDNfbWluICAgICAgIHJ3IHJlbW90ZSB0ZW1wZXJhdHVyZSAyIG1pbmltdW0gdGhyZXNob2xkIGZvciBhbGFybQordGVtcDNfbWluX2FsYXJtIHJvIHJlbW90ZSB0ZW1wZXJhdHVyZSAyIG1pbmltdW0gdGhyZXNob2xkIGFsYXJtCisKK01BWDE2NjggYW5kIE1BWDE5ODkgb25seToKK3RlbXA0X2lucHV0ICAgICBybyByZW1vdGUgdGVtcGVyYXR1cmUgMwordGVtcDRfbWF4ICAgICAgIHJ3IHJlbW90ZSB0ZW1wZXJhdHVyZSAzIG1heGltdW0gdGhyZXNob2xkIGZvciBhbGFybQordGVtcDRfbWF4X2FsYXJtIHJvIHJlbW90ZSB0ZW1wZXJhdHVyZSAzIG1heGltdW0gdGhyZXNob2xkIGFsYXJtCit0ZW1wNF9taW4gICAgICAgcncgcmVtb3RlIHRlbXBlcmF0dXJlIDMgbWluaW11bSB0aHJlc2hvbGQgZm9yIGFsYXJtCit0ZW1wNF9taW5fYWxhcm0gcm8gcmVtb3RlIHRlbXBlcmF0dXJlIDMgbWluaW11bSB0aHJlc2hvbGQgYWxhcm0KK3RlbXA1X2lucHV0ICAgICBybyByZW1vdGUgdGVtcGVyYXR1cmUgNAordGVtcDVfbWF4ICAgICAgIHJ3IHJlbW90ZSB0ZW1wZXJhdHVyZSA0IG1heGltdW0gdGhyZXNob2xkIGZvciBhbGFybQordGVtcDVfbWF4X2FsYXJtIHJvIHJlbW90ZSB0ZW1wZXJhdHVyZSA0IG1heGltdW0gdGhyZXNob2xkIGFsYXJtCit0ZW1wNV9taW4gICAgICAgcncgcmVtb3RlIHRlbXBlcmF0dXJlIDQgbWluaW11bSB0aHJlc2hvbGQgZm9yIGFsYXJtCit0ZW1wNV9taW5fYWxhcm0gcm8gcmVtb3RlIHRlbXBlcmF0dXJlIDQgbWluaW11bSB0aHJlc2hvbGQgYWxhcm0KKworTW9kdWxlIFBhcmFtZXRlcnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKyogcmVhZF9vbmx5OiBpbnQKKyAgU2V0IHRvIG5vbi16ZXJvIGlmIHlvdSB3aXNoIHRvIHByZXZlbnQgd3JpdGUgYWNjZXNzIHRvIGFsYXJtIHRocmVzaG9sZHMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL21heDE5NyBiL0RvY3VtZW50YXRpb24vaHdtb24vbWF4MTk3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkODliOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL21heDE5NwpAQCAtMCwwICsxLDYwIEBACitNYXhpbSBNQVgxOTcgZHJpdmVyCis9PT09PT09PT09PT09PT09PT09CisKK0F1dGhvcjoKKyAgKiBWaXZpZW4gRGlkZWxvdCA8dml2aWVuLmRpZGVsb3RAc2F2b2lyZmFpcmVsaW51eC5jb20+CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBNYXhpbSBNQVgxOTcKKyAgICBQcmVmaXg6ICdtYXgxOTcnCisgICAgRGF0YXNoZWV0OiBodHRwOi8vZGF0YXNoZWV0cy5tYXhpbS1pYy5jb20vZW4vZHMvTUFYMTk3LnBkZgorCisgICogTWF4aW0gTUFYMTk5CisgICAgUHJlZml4OiAnbWF4MTk5JworICAgIERhdGFzaGVldDogaHR0cDovL2RhdGFzaGVldHMubWF4aW0taWMuY29tL2VuL2RzL01BWDE5OS5wZGYKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoZSBBL0QgY29udmVydGVycyBNQVgxOTcsIGFuZCBNQVgxOTkgYXJlIGJvdGggOC1DaGFubmVsLCBNdWx0aS1SYW5nZSwgNVYsCisxMi1CaXQgREFTIHdpdGggOCs0IEJ1cyBJbnRlcmZhY2UgYW5kIEZhdWx0IFByb3RlY3Rpb24uCisKK1RoZSBhdmFpbGFibGUgcmFuZ2VzIGZvciB0aGUgTUFYMTk3IGFyZSB7MCwtNVZ9IHRvIDVWLCBhbmQgezAsLTEwVn0gdG8gMTBWLAord2hpbGUgdGhleSBhcmUgezAsLTJWfSB0byAyViwgYW5kIHswLC00Vn0gdG8gNFYgb24gdGhlIE1BWDE5OS4KKworUGxhdGZvcm0gZGF0YQorLS0tLS0tLS0tLS0tLQorCitUaGUgTUFYMTk3IHBsYXRmb3JtIGRhdGEgKGRlZmluZWQgaW4gbGludXgvcGxhdGZvcm1fZGF0YS9tYXgxOTcuaCkgc2hvdWxkIGJlCitmaWxsZWQgd2l0aCBhIHBvaW50ZXIgdG8gYSBjb252ZXJzaW9uIGZ1bmN0aW9uLCBkZWZpbmVkIGxpa2U6CisKKyAgICBpbnQgY29udmVydCh1OCBjdHJsKTsKKworY3RybCBpcyB0aGUgY29udHJvbCBieXRlIHRvIHdyaXRlIHRvIHN0YXJ0IGEgbmV3IGNvbnZlcnNpb24uCitPbiBzdWNjZXNzLCB0aGUgZnVuY3Rpb24gbXVzdCByZXR1cm4gdGhlIDEyLWJpdCByYXcgdmFsdWUgcmVhZCBmcm9tIHRoZSBjaGlwLAorb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZS4KKworQ29udHJvbCBieXRlIGZvcm1hdDoKKworQml0ICAgICBOYW1lICAgICAgIERlc2NyaXB0aW9uCis3LDYgICAgIFBEMSxQRDAgICAgQ2xvY2sgYW5kIFBvd2VyLURvd24gbW9kZXMKKzUgICAgICAgQUNRTU9EICAgICBJbnRlcm5hbCBvciBFeHRlcm5hbCBDb250cm9sbGVkIEFjcXVpc2l0aW9uCis0ICAgICAgIFJORyAgICAgICAgRnVsbC1zY2FsZSB2b2x0YWdlIG1hZ25pdHVkZSBhdCB0aGUgaW5wdXQKKzMgICAgICAgQklQICAgICAgICBVbmlwb2xhciBvciBCaXBvbGFyIGNvbnZlcnNpb24gbW9kZQorMiwxLDAgICBBMixBMSxBMCAgIENoYW5uZWwKKworU3lzZnMgaW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0KKworKiBpblswLTddX2lucHV0OiBUaGUgY29udmVyc2lvbiB2YWx1ZSBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgUk8KKworKiBpblswLTddX21pbjogICBUaGUgbG93ZXIgbGltaXQgKGluIG1WKSBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgRm9yIHRoZSBNQVgxOTcsIGl0IHdpbGwgYmUgYWRqdXN0ZWQgdG8gLTEwMDAwLCAtNTAwMCwgb3IgMC4KKyAgICAgICAgICAgICAgICAgRm9yIHRoZSBNQVgxOTksIGl0IHdpbGwgYmUgYWRqdXN0ZWQgdG8gLTQwMDAsIC0yMDAwLCBvciAwLgorICAgICAgICAgICAgICAgICBSVworCisqIGluWzAtN11fbWF4OiAgIFRoZSBoaWdoZXIgbGltaXQgKGluIG1WKSBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgRm9yIHRoZSBNQVgxOTcsIGl0IHdpbGwgYmUgYWRqdXN0ZWQgdG8gMCwgNTAwMCwgb3IgMTAwMDAuCisgICAgICAgICAgICAgICAgIEZvciB0aGUgTUFYMTk5LCBpdCB3aWxsIGJlIGFkanVzdGVkIHRvIDAsIDIwMDAsIG9yIDQwMDAuCisgICAgICAgICAgICAgICAgIFJXCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL21heDIwNzUxIGIvRG9jdW1lbnRhdGlvbi9od21vbi9tYXgyMDc1MQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWZhMjVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9tYXgyMDc1MQpAQCAtMCwwICsxLDc3IEBACitLZXJuZWwgZHJpdmVyIG1heDIwNzUxCis9PT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBtYXhpbSBNQVgyMDc1MQorICAgIFByZWZpeDogJ21heDIwNzUxJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OiBodHRwOi8vZGF0YXNoZWV0cy5tYXhpbWludGVncmF0ZWQuY29tL2VuL2RzL01BWDIwNzUxLnBkZgorICAgIEFwcGxpY2F0aW9uIG5vdGU6IGh0dHA6Ly9wZGZzZXJ2Lm1heGltaW50ZWdyYXRlZC5jb20vZW4vYW4vQU41OTQxLnBkZgorCitBdXRob3I6IEd1ZW50ZXIgUm9lY2sgPGxpbnV4QHJvZWNrLXVzLm5ldD4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgc3VwcG9ydHMgTUFYMjA3NTEgTXVsdGlwaGFzZSBNYXN0ZXIgd2l0aCBQTUJ1cyBJbnRlcmZhY2UKK2FuZCBJbnRlcm5hbCBCdWNrIENvbnZlcnRlci4KKworVGhlIGRyaXZlciBpcyBhIGNsaWVudCBkcml2ZXIgdG8gdGhlIGNvcmUgUE1CdXMgZHJpdmVyLgorUGxlYXNlIHNlZSBEb2N1bWVudGF0aW9uL2h3bW9uL3BtYnVzIGZvciBkZXRhaWxzIG9uIFBNQnVzIGNsaWVudCBkcml2ZXJzLgorCisKK1VzYWdlIE5vdGVzCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBkb2VzIG5vdCBhdXRvLWRldGVjdCBkZXZpY2VzLiBZb3Ugd2lsbCBoYXZlIHRvIGluc3RhbnRpYXRlIHRoZQorZGV2aWNlcyBleHBsaWNpdGx5LiBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaTJjL2luc3RhbnRpYXRpbmctZGV2aWNlcyBmb3IKK2RldGFpbHMuCisKKworUGxhdGZvcm0gZGF0YSBzdXBwb3J0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGRyaXZlciBzdXBwb3J0cyBzdGFuZGFyZCBQTUJ1cyBkcml2ZXIgcGxhdGZvcm0gZGF0YS4KKworCitTeXNmcyBlbnRyaWVzCistLS0tLS0tLS0tLS0tCisKK1RoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBhcmUgc3VwcG9ydGVkLgorCitpbjFfbGFiZWwJCSJ2aW4xIgoraW4xX2lucHV0CQlNZWFzdXJlZCB2b2x0YWdlLgoraW4xX21pbgkJCU1pbmltdW0gaW5wdXQgdm9sdGFnZS4KK2luMV9tYXgJCQlNYXhpbXVtIGlucHV0IHZvbHRhZ2UuCitpbjFfbGNyaXQJCUNyaXRpY2FsIG1pbmltdW0gaW5wdXQgdm9sdGFnZS4KK2luMV9jcml0CQlDcml0aWNhbCBtYXhpbXVtIGlucHV0IHZvbHRhZ2UuCitpbjFfbWluX2FsYXJtCQlJbnB1dCB2b2x0YWdlIGxvdyBhbGFybS4KK2luMV9sY3JpdF9hbGFybQkJSW5wdXQgdm9sdGFnZSBjcml0aWNhbCBsb3cgYWxhcm0uCitpbjFfbWluX2FsYXJtCQlJbnB1dCB2b2x0YWdlIGxvdyBhbGFybS4KK2luMV9tYXhfYWxhcm0JCUlucHV0IHZvbHRhZ2UgaGlnaCBhbGFybS4KKworaW4yX2xhYmVsCQkidm91dDEiCitpbjJfaW5wdXQJCU1lYXN1cmVkIHZvbHRhZ2UuCitpbjJfbWluCQkJTWluaW11bSBvdXRwdXQgdm9sdGFnZS4KK2luMl9tYXgJCQlNYXhpbXVtIG91dHB1dCB2b2x0YWdlLgoraW4yX2xjcml0CQlDcml0aWNhbCBtaW5pbXVtIG91dHB1dCB2b2x0YWdlLgoraW4yX2NyaXQJCUNyaXRpY2FsIG1heGltdW0gb3V0cHV0IHZvbHRhZ2UuCitpbjJfbWluX2FsYXJtCQlPdXRwdXQgdm9sdGFnZSBsb3cgYWxhcm0uCitpbjJfbGNyaXRfYWxhcm0JCU91dHB1dCB2b2x0YWdlIGNyaXRpY2FsIGxvdyBhbGFybS4KK2luMl9taW5fYWxhcm0JCU91dHB1dCB2b2x0YWdlIGxvdyBhbGFybS4KK2luMl9tYXhfYWxhcm0JCU91dHB1dCB2b2x0YWdlIGhpZ2ggYWxhcm0uCisKK2N1cnIxX2lucHV0CQlNZWFzdXJlZCBvdXRwdXQgY3VycmVudC4KK2N1cnIxX2xhYmVsCQkiaW91dDEiCitjdXJyMV9tYXgJCU1heGltdW0gb3V0cHV0IGN1cnJlbnQuCitjdXJyMV9hbGFybQkJQ3VycmVudCBoaWdoIGFsYXJtLgorCit0ZW1wMV9pbnB1dAkJTWVhc3VyZWQgdGVtcGVyYXR1cmUuCit0ZW1wMV9tYXgJCU1heGltdW0gdGVtcGVyYXR1cmUuCit0ZW1wMV9jcml0CQlDcml0aWNhbCBoaWdoIHRlbXBlcmF0dXJlLgordGVtcDFfbWF4X2FsYXJtCQlDaGlwIHRlbXBlcmF0dXJlIGhpZ2ggYWxhcm0uCit0ZW1wMV9jcml0X2FsYXJtCUNoaXAgdGVtcGVyYXR1cmUgY3JpdGljYWwgaGlnaCBhbGFybS4KKworcG93ZXIxX2lucHV0CQlPdXRwdXQgcG93ZXIuCitwb3dlcjFfbGFiZWwJCSJwb3V0MSIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vbWF4MzE3OTAgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL21heDMxNzkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1NWU2MjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL21heDMxNzkwCkBAIC0wLDAgKzEsMzcgQEAKK0tlcm5lbCBkcml2ZXIgbWF4MzE3OTAKKz09PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIE1heGltIE1BWDMxNzkwCisgICAgUHJlZml4OiAnbWF4MzE3OTAnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IC0KKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly9wZGZzZXJ2Lm1heGltaW50ZWdyYXRlZC5jb20vZW4vZHMvTUFYMzE3OTAucGRmCisKK0F1dGhvcjogSWwgSGFuIDxjb3JvbmUuaWwuaGFuQGdtYWlsLmNvbT4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgaW1wbGVtZW50cyBzdXBwb3J0IGZvciB0aGUgTWF4aW0gTUFYMzE3OTAgY2hpcC4KKworVGhlIE1BWDMxNzkwIGNvbnRyb2xzIHRoZSBzcGVlZHMgb2YgdXAgdG8gc2l4IGZhbnMgdXNpbmcgc2l4IGluZGVwZW5kZW50CitQV00gb3V0cHV0cy4gVGhlIGRlc2lyZWQgZmFuIHNwZWVkcyAob3IgUFdNIGR1dHkgY3ljbGVzKSBhcmUgd3JpdHRlbgordGhyb3VnaCB0aGUgSTJDIGludGVyZmFjZS4gVGhlIG91dHB1dHMgZHJpdmUgIjQtd2lyZSIgZmFucyBkaXJlY3RseSwKK29yIGNhbiBiZSB1c2VkIHRvIG1vZHVsYXRlIHRoZSBmYW4ncyBwb3dlciB0ZXJtaW5hbHMgdXNpbmcgYW4gZXh0ZXJuYWwKK3Bhc3MgdHJhbnNpc3Rvci4KKworVGFjaG9tZXRlciBpbnB1dHMgbW9uaXRvciBmYW4gdGFjaG9tZXRlciBsb2dpYyBvdXRwdXRzIGZvciBwcmVjaXNlICgrLy0xJSkKK21vbml0b3JpbmcgYW5kIGNvbnRyb2wgb2YgZmFuIFJQTSBhcyB3ZWxsIGFzIGRldGVjdGlvbiBvZiBmYW4gZmFpbHVyZS4KK1NpeCBwaW5zIGFyZSBkZWRpY2F0ZWQgdGFjaG9tZXRlciBpbnB1dHMuIEFueSBvZiB0aGUgc2l4IFBXTSBvdXRwdXRzIGNhbgorYWxzbyBiZSBjb25maWd1cmVkIHRvIHNlcnZlIGFzIHRhY2hvbWV0ZXIgaW5wdXRzLgorCisKK1N5c2ZzIGVudHJpZXMKKy0tLS0tLS0tLS0tLS0KKworZmFuWzEtMTJdX2lucHV0ICAgIFJPICBmYW4gdGFjaG9tZXRlciBzcGVlZCBpbiBSUE0KK2ZhblsxLTEyXV9mYXVsdCAgICBSTyAgZmFuIGV4cGVyaWVuY2VkIGZhdWx0CitmYW5bMS02XV90YXJnZXQgICAgUlcgIGRlc2lyZWQgZmFuIHNwZWVkIGluIFJQTQorcHdtWzEtNl1fZW5hYmxlICAgIFJXICByZWd1bGF0b3IgbW9kZSwgMD1kaXNhYmxlZCwgMT1tYW51YWwgbW9kZSwgMj1ycG0gbW9kZQorcHdtWzEtNl0gICAgICAgICAgIFJXICBmYW4gdGFyZ2V0IGR1dHkgY3ljbGUgKDAtMjU1KQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9tYXgzNDQ0MCBiL0RvY3VtZW50YXRpb24vaHdtb24vbWF4MzQ0NDAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdjYmY0NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vbWF4MzQ0NDAKQEAgLTAsMCArMSwxMjcgQEAKK0tlcm5lbCBkcml2ZXIgbWF4MzQ0NDAKKz09PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIE1heGltIE1BWDM0NDQwCisgICAgUHJlZml4ZXM6ICdtYXgzNDQ0MCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgIERhdGFzaGVldDogaHR0cDovL2RhdGFzaGVldHMubWF4aW0taWMuY29tL2VuL2RzL01BWDM0NDQwLnBkZgorICAqIE1heGltIE1BWDM0NDQxCisgICAgUE1CdXMgNS1DaGFubmVsIFBvd2VyLVN1cHBseSBNYW5hZ2VyIGFuZCBJbnRlbGxpZ2VudCBGYW4gQ29udHJvbGxlcgorICAgIFByZWZpeGVzOiAnbWF4MzQ0NDEnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IC0KKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly9kYXRhc2hlZXRzLm1heGltLWljLmNvbS9lbi9kcy9NQVgzNDQ0MS5wZGYKKyAgKiBNYXhpbSBNQVgzNDQ0NgorICAgIFBNQnVzIFBvd2VyLVN1cHBseSBEYXRhIExvZ2dlcgorICAgIFByZWZpeGVzOiAnbWF4MzQ0NDYnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IC0KKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly9kYXRhc2hlZXRzLm1heGltLWljLmNvbS9lbi9kcy9NQVgzNDQ0Ni5wZGYKKyAgKiBNYXhpbSBNQVgzNDQ2MAorICAgIFBNQnVzIDEyLUNoYW5uZWwgVm9sdGFnZSBNb25pdG9yICYgU2VxdWVuY2VyCisgICAgUHJlZml4OiAnbWF4MzQ0NjAnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IC0KKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly9kYXRhc2hlZXRzLm1heGltaW50ZWdyYXRlZC5jb20vZW4vZHMvTUFYMzQ0NjAucGRmCisgICogTWF4aW0gTUFYMzQ0NjEKKyAgICBQTUJ1cyAxNi1DaGFubmVsIFZvbHRhZ2UgTW9uaXRvciAmIFNlcXVlbmNlcgorICAgIFByZWZpeDogJ21heDM0NDYxJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OiBodHRwOi8vZGF0YXNoZWV0cy5tYXhpbWludGVncmF0ZWQuY29tL2VuL2RzL01BWDM0NDYxLnBkZgorCitBdXRob3I6IEd1ZW50ZXIgUm9lY2sgPGxpbnV4QHJvZWNrLXVzLm5ldD4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgc3VwcG9ydHMgaGFyZHdhcmUgbW9udG9yaW5nIGZvciBNYXhpbSBNQVgzNDQ0MCBQTUJ1cyA2LUNoYW5uZWwKK1Bvd2VyLVN1cHBseSBNYW5hZ2VyLCBNQVgzNDQ0MSBQTUJ1cyA1LUNoYW5uZWwgUG93ZXItU3VwcGx5IE1hbmFnZXIKK2FuZCBJbnRlbGxpZ2VudCBGYW4gQ29udHJvbGxlciwgYW5kIE1BWDM0NDQ2IFBNQnVzIFBvd2VyLVN1cHBseSBEYXRhIExvZ2dlci4KK0l0IGFsc28gc3VwcG9ydHMgdGhlIE1BWDM0NDYwIGFuZCBNQVgzNDQ2MSBQTUJ1cyBWb2x0YWdlIE1vbml0b3IgJiBTZXF1ZW5jZXJzLgorVGhlIE1BWDM0NDYwIHN1cHBvcnRzIDEyIHZvbHRhZ2UgY2hhbm5lbHMsIGFuZCB0aGUgTUFYMzQ0NjEgc3VwcG9ydHMgMTYgdm9sdGFnZQorY2hhbm5lbHMuCisKK1RoZSBkcml2ZXIgaXMgYSBjbGllbnQgZHJpdmVyIHRvIHRoZSBjb3JlIFBNQnVzIGRyaXZlci4gUGxlYXNlIHNlZQorRG9jdW1lbnRhdGlvbi9od21vbi9wbWJ1cyBmb3IgZGV0YWlscyBvbiBQTUJ1cyBjbGllbnQgZHJpdmVycy4KKworCitVc2FnZSBOb3RlcworLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgZG9lcyBub3QgYXV0by1kZXRlY3QgZGV2aWNlcy4gWW91IHdpbGwgaGF2ZSB0byBpbnN0YW50aWF0ZSB0aGUKK2RldmljZXMgZXhwbGljaXRseS4gUGxlYXNlIHNlZSBEb2N1bWVudGF0aW9uL2kyYy9pbnN0YW50aWF0aW5nLWRldmljZXMgZm9yCitkZXRhaWxzLgorCitGb3IgTUFYMzQ0NDYsIHRoZSB2YWx1ZSBvZiB0aGUgY3VyclhfY3JpdCBhdHRyaWJ1dGUgZGV0ZXJtaW5lcyBpZiBjdXJyZW50IG9yCit2b2x0YWdlIG1lYXN1cmVtZW50IGlzIGVuYWJsZWQgZm9yIGEgZ2l2ZW4gY2hhbm5lbC4gVm9sdGFnZSBtZWFzdXJlbWVudCBpcworZW5hYmxlZCBpZiBjdXJyWF9jcml0IGlzIHNldCB0byAwOyBjdXJyZW50IG1lYXN1cmVtZW50IGlzIGVuYWJsZWQgaWYgdGhlCithdHRyaWJ1dGUgaXMgc2V0IHRvIGEgcG9zaXRpdmUgdmFsdWUuIFBvd2VyIG1lYXN1cmVtZW50IGlzIG9ubHkgZW5hYmxlZCBpZgorY2hhbm5lbCAxICgzKSBpcyBjb25maWd1cmVkIGZvciB2b2x0YWdlIG1lYXN1cmVtZW50LCBhbmQgY2hhbm5lbCAyICg0KSBpcworY29uZmlndXJlZCBmb3IgY3VycmVudCBtZWFzdXJlbWVudC4KKworCitQbGF0Zm9ybSBkYXRhIHN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZHJpdmVyIHN1cHBvcnRzIHN0YW5kYXJkIFBNQnVzIGRyaXZlciBwbGF0Zm9ybSBkYXRhLgorCisKK1N5c2ZzIGVudHJpZXMKKy0tLS0tLS0tLS0tLS0KKworVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIGFyZSBzdXBwb3J0ZWQuIExpbWl0cyBhcmUgcmVhZC13cml0ZTsgYWxsIG90aGVyCithdHRyaWJ1dGVzIGFyZSByZWFkLW9ubHkuCisKK2luWzEtNl1fbGFiZWwJCSJ2b3V0WzEtNl0iLgoraW5bMS02XV9pbnB1dAkJTWVhc3VyZWQgdm9sdGFnZS4gRnJvbSBSRUFEX1ZPVVQgcmVnaXN0ZXIuCitpblsxLTZdX21pbgkJTWluaW11bSBWb2x0YWdlLiBGcm9tIFZPVVRfVVZfV0FSTl9MSU1JVCByZWdpc3Rlci4KK2luWzEtNl1fbWF4CQlNYXhpbXVtIHZvbHRhZ2UuIEZyb20gVk9VVF9PVl9XQVJOX0xJTUlUIHJlZ2lzdGVyLgoraW5bMS02XV9sY3JpdAkJQ3JpdGljYWwgbWluaW11bSBWb2x0YWdlLiBWT1VUX1VWX0ZBVUxUX0xJTUlUIHJlZ2lzdGVyLgoraW5bMS02XV9jcml0CQlDcml0aWNhbCBtYXhpbXVtIHZvbHRhZ2UuIEZyb20gVk9VVF9PVl9GQVVMVF9MSU1JVCByZWdpc3Rlci4KK2luWzEtNl1fbWluX2FsYXJtCVZvbHRhZ2UgbG93IGFsYXJtLiBGcm9tIFZPTFRBR0VfVVZfV0FSTklORyBzdGF0dXMuCitpblsxLTZdX21heF9hbGFybQlWb2x0YWdlIGhpZ2ggYWxhcm0uIEZyb20gVk9MVEFHRV9PVl9XQVJOSU5HIHN0YXR1cy4KK2luWzEtNl1fbGNyaXRfYWxhcm0JVm9sdGFnZSBjcml0aWNhbCBsb3cgYWxhcm0uIEZyb20gVk9MVEFHRV9VVl9GQVVMVCBzdGF0dXMuCitpblsxLTZdX2NyaXRfYWxhcm0JVm9sdGFnZSBjcml0aWNhbCBoaWdoIGFsYXJtLiBGcm9tIFZPTFRBR0VfT1ZfRkFVTFQgc3RhdHVzLgoraW5bMS02XV9sb3dlc3QJCUhpc3RvcmljYWwgbWluaW11bSB2b2x0YWdlLgoraW5bMS02XV9oaWdoZXN0CQlIaXN0b3JpY2FsIG1heGltdW0gdm9sdGFnZS4KK2luWzEtNl1fcmVzZXRfaGlzdG9yeQlXcml0ZSBhbnkgdmFsdWUgdG8gcmVzZXQgaGlzdG9yeS4KKworCQkJTUFYMzQ0NDYgb25seSBzdXBwb3J0cyBpblsxLTRdLgorCitjdXJyWzEtNl1fbGFiZWwJCSJpb3V0WzEtNl0iLgorY3VyclsxLTZdX2lucHV0CQlNZWFzdXJlZCBjdXJyZW50LiBGcm9tIFJFQURfSU9VVCByZWdpc3Rlci4KK2N1cnJbMS02XV9tYXgJCU1heGltdW0gY3VycmVudC4gRnJvbSBJT1VUX09DX1dBUk5fTElNSVQgcmVnaXN0ZXIuCitjdXJyWzEtNl1fY3JpdAkJQ3JpdGljYWwgbWF4aW11bSBjdXJyZW50LiBGcm9tIElPVVRfT0NfRkFVTFRfTElNSVQgcmVnaXN0ZXIuCitjdXJyWzEtNl1fbWF4X2FsYXJtCUN1cnJlbnQgaGlnaCBhbGFybS4gRnJvbSBJT1VUX09DX1dBUk5JTkcgc3RhdHVzLgorY3VyclsxLTZdX2NyaXRfYWxhcm0JQ3VycmVudCBjcml0aWNhbCBoaWdoIGFsYXJtLiBGcm9tIElPVVRfT0NfRkFVTFQgc3RhdHVzLgorY3VyclsxLTRdX2F2ZXJhZ2UJSGlzdG9yaWNhbCBhdmVyYWdlIGN1cnJlbnQgKE1BWDM0NDQ2IG9ubHkpLgorY3VyclsxLTZdX2hpZ2hlc3QJSGlzdG9yaWNhbCBtYXhpbXVtIGN1cnJlbnQuCitjdXJyWzEtNl1fcmVzZXRfaGlzdG9yeQlXcml0ZSBhbnkgdmFsdWUgdG8gcmVzZXQgaGlzdG9yeS4KKworCQkJaW42IGFuZCBjdXJyNiBhdHRyaWJ1dGVzIG9ubHkgZXhpc3QgZm9yIE1BWDM0NDQwLgorCQkJTUFYMzQ0NDYgb25seSBzdXBwb3J0cyBjdXJyWzEtNF0uCisKK3Bvd2VyWzEsM11fbGFiZWwJInBvdXRbMSwzXSIKK3Bvd2VyWzEsM11faW5wdXQJTWVhc3VyZWQgcG93ZXIuCitwb3dlclsxLDNdX2F2ZXJhZ2UJSGlzdG9yaWNhbCBhdmVyYWdlIHBvd2VyLgorcG93ZXJbMSwzXV9oaWdoZXN0CUhpc3RvcmljYWwgbWF4aW11bSBwb3dlci4KKworCQkJUG93ZXIgYXR0cmlidXRlcyBvbmx5IGV4aXN0IGZvciBNQVgzNDQ0Ni4KKwordGVtcFsxLThdX2lucHV0CQlNZWFzdXJlZCB0ZW1wZXJhdHVyZXMuIEZyb20gUkVBRF9URU1QRVJBVFVSRV8xIHJlZ2lzdGVyLgorCQkJdGVtcDEgaXMgdGhlIGNoaXAncyBpbnRlcm5hbCB0ZW1wZXJhdHVyZS4gdGVtcDIuLnRlbXA1CisJCQlhcmUgcmVtb3RlIEkyQyB0ZW1wZXJhdHVyZSBzZW5zb3JzLiBGb3IgTUFYMzQ0NDEsIHRlbXA2CisJCQlpcyBhIHJlbW90ZSB0aGVybWFsLWRpb2RlIHNlbnNvci4gRm9yIE1BWDM0NDQwLCB0ZW1wNi4uOAorCQkJYXJlIHJlbW90ZSBJMkMgdGVtcGVyYXR1cmUgc2Vuc29ycy4KK3RlbXBbMS04XV9tYXgJCU1heGltdW0gdGVtcGVyYXR1cmUuIEZyb20gT1RfV0FSTl9MSU1JVCByZWdpc3Rlci4KK3RlbXBbMS04XV9jcml0CQlDcml0aWNhbCBoaWdoIHRlbXBlcmF0dXJlLiBGcm9tIE9UX0ZBVUxUX0xJTUlUIHJlZ2lzdGVyLgordGVtcFsxLThdX21heF9hbGFybQlUZW1wZXJhdHVyZSBoaWdoIGFsYXJtLgordGVtcFsxLThdX2NyaXRfYWxhcm0JVGVtcGVyYXR1cmUgY3JpdGljYWwgaGlnaCBhbGFybS4KK3RlbXBbMS04XV9hdmVyYWdlCUhpc3RvcmljYWwgYXZlcmFnZSB0ZW1wZXJhdHVyZSAoTUFYMzQ0NDYgb25seSkuCit0ZW1wWzEtOF1faGlnaGVzdAlIaXN0b3JpY2FsIG1heGltdW0gdGVtcGVyYXR1cmUuCit0ZW1wWzEtOF1fcmVzZXRfaGlzdG9yeQlXcml0ZSBhbnkgdmFsdWUgdG8gcmVzZXQgaGlzdG9yeS4KKworCQkJdGVtcDcgYW5kIHRlbXA4IGF0dHJpYnV0ZXMgb25seSBleGlzdCBmb3IgTUFYMzQ0NDAuCisJCQlNQVgzNDQ0NiBvbmx5IHN1cHBvcnRzIHRlbXBbMS0zXS4KKworTUFYMzQ0NjAgc3VwcG9ydHMgYXR0cmlidXRlIGdyb3VwcyBpblsxLTEyXSBhbmQgdGVtcFsxLTVdLgorTUFYMzQ0NjEgc3VwcG9ydHMgYXR0cmlidXRlIGdyb3VwcyBpblsxLTE2XSBhbmQgdGVtcFsxLTVdLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9tYXg2NjM5IGIvRG9jdW1lbnRhdGlvbi9od21vbi9tYXg2NjM5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjNDlmOGIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL21heDY2MzkKQEAgLTAsMCArMSw0OSBAQAorS2VybmVsIGRyaXZlciBtYXg2NjM5Cis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIE1heGltIE1BWDY2MzkKKyAgICBQcmVmaXg6ICdtYXg2NjM5JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgyYywgMHgyZSwgMHgyZgorICAgIERhdGFzaGVldDogaHR0cDovL3BkZnNlcnYubWF4aW0taWMuY29tL2VuL2RzL01BWDY2MzkucGRmCisKK0F1dGhvcnM6CisgICAgSGUgQ2hhbmdxaW5nIDxoZWNoYW5ncWluZ0BzZW1wdGlhbi5jb20+CisgICAgUm9sYW5kIFN0aWdnZSA8c3RpZ2dlQGFudGNvbS5kZT4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgdGhlIE1heGltIE1BWDY2MzkuIFRoaXMgY2hpcCBpcyBhIDItY2hhbm5lbAordGVtcGVyYXR1cmUgbW9uaXRvciB3aXRoIGR1YWwgUFdNIGZhbiBzcGVlZCBjb250cm9sbGVyLiBJdCBjYW4gbW9uaXRvciBpdHMgb3duCit0ZW1wZXJhdHVyZSBhbmQgb25lIGV4dGVybmFsIGRpb2RlLWNvbm5lY3RlZCB0cmFuc2lzdG9yIG9yIHR3byBleHRlcm5hbAorZGlvZGUtY29ubmVjdGVkIHRyYW5zaXN0b3JzLgorCitUaGUgZm9sbG93aW5nIGRldmljZSBhdHRyaWJ1dGVzIGFyZSBpbXBsZW1lbnRlZCB2aWEgc3lzZnM6CisKK0F0dHJpYnV0ZSAgICAgICAgICAgICAgUi9XICBDb250ZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordGVtcDFfaW5wdXQgICAgICAgICAgICBSICAgIFRlbXBlcmF0dXJlIGNoYW5uZWwgMSBpbnB1dCAoMC4uMTUwIEMpCit0ZW1wMl9pbnB1dCAgICAgICAgICAgIFIgICAgVGVtcGVyYXR1cmUgY2hhbm5lbCAyIGlucHV0ICgwLi4xNTAgQykKK3RlbXAxX2ZhdWx0ICAgICAgICAgICAgUiAgICBUZW1wZXJhdHVyZSBjaGFubmVsIDEgZGlvZGUgZmF1bHQKK3RlbXAyX2ZhdWx0ICAgICAgICAgICAgUiAgICBUZW1wZXJhdHVyZSBjaGFubmVsIDIgZGlvZGUgZmF1bHQKK3RlbXAxX21heCAgICAgICAgICAgICAgUlcgICBTZXQgVEhFUk0gdGVtcGVyYXR1cmUgZm9yIGlucHV0IDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW4gQywgc2VlIGRhdGFzaGVldCkKK3RlbXAyX21heCAgICAgICAgICAgICAgUlcgICBTZXQgVEhFUk0gdGVtcGVyYXR1cmUgZm9yIGlucHV0IDIKK3RlbXAxX2NyaXQgICAgICAgICAgICAgUlcgICBTZXQgQUxFUlQgdGVtcGVyYXR1cmUgZm9yIGlucHV0IDEKK3RlbXAyX2NyaXQgICAgICAgICAgICAgUlcgICBTZXQgQUxFUlQgdGVtcGVyYXR1cmUgZm9yIGlucHV0IDIKK3RlbXAxX2VtZXJnZW5jeSAgICAgICAgUlcgICBTZXQgT1QgdGVtcGVyYXR1cmUgZm9yIGlucHV0IDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW4gQywgc2VlIGRhdGFzaGVldCkKK3RlbXAyX2VtZXJnZW5jeSAgICAgICAgUlcgICBTZXQgT1QgdGVtcGVyYXR1cmUgZm9yIGlucHV0IDIKK3B3bTEgICAgICAgICAgICAgICAgICAgUlcgICBGYW4gMSB0YXJnZXQgZHV0eSBjeWNsZSAoMC4uMjU1KQorcHdtMiAgICAgICAgICAgICAgICAgICBSVyAgIEZhbiAyIHRhcmdldCBkdXR5IGN5Y2xlICgwLi4yNTUpCitmYW4xX2lucHV0ICAgICAgICAgICAgIFIgICAgVEFDSDEgZmFuIHRhY2hvbWV0ZXIgaW5wdXQgKGluIFJQTSkKK2ZhbjJfaW5wdXQgICAgICAgICAgICAgUiAgICBUQUNIMiBmYW4gdGFjaG9tZXRlciBpbnB1dCAoaW4gUlBNKQorZmFuMV9mYXVsdCAgICAgICAgICAgICBSICAgIEZhbiAxIGZhdWx0CitmYW4yX2ZhdWx0ICAgICAgICAgICAgIFIgICAgRmFuIDIgZmF1bHQKK3RlbXAxX21heF9hbGFybSAgICAgICAgUiAgICBBbGFybSBvbiBUSEVSTSB0ZW1wZXJhdHVyZSBvbiBjaGFubmVsIDEKK3RlbXAyX21heF9hbGFybSAgICAgICAgUiAgICBBbGFybSBvbiBUSEVSTSB0ZW1wZXJhdHVyZSBvbiBjaGFubmVsIDIKK3RlbXAxX2NyaXRfYWxhcm0gICAgICAgUiAgICBBbGFybSBvbiBBTEVSVCB0ZW1wZXJhdHVyZSBvbiBjaGFubmVsIDEKK3RlbXAyX2NyaXRfYWxhcm0gICAgICAgUiAgICBBbGFybSBvbiBBTEVSVCB0ZW1wZXJhdHVyZSBvbiBjaGFubmVsIDIKK3RlbXAxX2VtZXJnZW5jeV9hbGFybSAgUiAgICBBbGFybSBvbiBPVCB0ZW1wZXJhdHVyZSBvbiBjaGFubmVsIDEKK3RlbXAyX2VtZXJnZW5jeV9hbGFybSAgUiAgICBBbGFybSBvbiBPVCB0ZW1wZXJhdHVyZSBvbiBjaGFubmVsIDIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vbWF4NjY0MiBiL0RvY3VtZW50YXRpb24vaHdtb24vbWF4NjY0MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmJkM2U0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9tYXg2NjQyCkBAIC0wLDAgKzEsMjEgQEAKK0tlcm5lbCBkcml2ZXIgbWF4NjY0MgorPT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBNYXhpbSBNQVg2NjQyCisgICAgUHJlZml4OiAnbWF4NjY0MicKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4NDgtMHg0ZgorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBNYXhpbSB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vZGF0YXNoZWV0cy5tYXhpbS1pYy5jb20vZW4vZHMvTUFYNjY0Mi5wZGYKKworQXV0aG9yczoKKyAgICAgICAgUGVyIERhbGVuIDxwZXIuZGFsZW5AYXBwZWFydHYuY29tPgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIE1BWDY2NDIgaXMgYSBkaWdpdGFsIHRlbXBlcmF0dXJlIHNlbnNvci4gSXQgc2Vuc2VzIGl0cyBvd24gdGVtcGVyYXR1cmUgYXMKK3dlbGwgYXMgdGhlIHRlbXBlcmF0dXJlIG9uIG9uZSBleHRlcm5hbCBkaW9kZS4KKworQWxsIHRlbXBlcmF0dXJlIHZhbHVlcyBhcmUgZ2l2ZW4gaW4gZGVncmVlcyBDZWxzaXVzLiBSZXNvbHV0aW9uCitpcyAwLjI1IGRlZ3JlZSBmb3IgdGhlIGxvY2FsIHRlbXBlcmF0dXJlIGFuZCBmb3IgdGhlIHJlbW90ZSB0ZW1wZXJhdHVyZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vbWF4NjY1MCBiL0RvY3VtZW50YXRpb24vaHdtb24vbWF4NjY1MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGQ5NjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9tYXg2NjUwCkBAIC0wLDAgKzEsNjQgQEAKK0tlcm5lbCBkcml2ZXIgbWF4NjY1MAorPT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBNYXhpbSBNQVg2NjUwCisgICAgUHJlZml4OiAnbWF4NjY1MCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZQorICAgIERhdGFzaGVldDogaHR0cDovL3BkZnNlcnYubWF4aW0taWMuY29tL2VuL2RzL01BWDY2NTAtTUFYNjY1MS5wZGYKKyAgKiBNYXhpbSBNQVg2NjUxCisgICAgUHJlZml4OiAnbWF4NjY1MScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZQorICAgIERhdGFzaGVldDogaHR0cDovL3BkZnNlcnYubWF4aW0taWMuY29tL2VuL2RzL01BWDY2NTAtTUFYNjY1MS5wZGYKKworQXV0aG9yczoKKyAgICBIYW5zIEouIEtvY2ggPGhqa0BoYW5zamtvY2guZGU+CisgICAgSm9obiBNb3JyaXMgPGpvaG4ubW9ycmlzQHNwaXJlbnRjb20uY29tPgorICAgIENsYXVzIEdpbmRoYXJ0IDxjbGF1cy5naW5kaGFydEBrb250cm9uLmNvbT4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgdGhlIE1heGltIE1BWDY2NTAgYW5kIE1BWDY2NTEuCisKK1RoZSAyIGRldmljZXMgYXJlIHZlcnkgc2ltaWxhciwgYnV0IHRoZSBNQVg2NTUwIGhhcyBhIHJlZHVjZWQgZmVhdHVyZQorc2V0LCBlLmcuIG9ubHkgb25lIGZhbi1pbnB1dCwgaW5zdGVhZCBvZiA0IGZvciB0aGUgTUFYNjY1MS4KKworVGhlIGRyaXZlciBpcyBub3QgYWJsZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSAyIGRldmljZXMuCisKK1RoZSBkcml2ZXIgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBzZW5zb3IgYWNjZXNzZXMgaW4gc3lzZnM6CisKK2ZhbjFfaW5wdXQJcm8JZmFuIHRhY2hvbWV0ZXIgc3BlZWQgaW4gUlBNCitmYW4yX2lucHV0CXJvCSIKK2ZhbjNfaW5wdXQJcm8JIgorZmFuNF9pbnB1dAlybwkiCitmYW4xX3RhcmdldAlydwlkZXNpcmVkIGZhbiBzcGVlZCBpbiBSUE0gKGNsb3NlZCBsb29wIG1vZGUgb25seSkKK3B3bTFfZW5hYmxlCXJ3CXJlZ3VsYXRvciBtb2RlLCAwPWZ1bGwgb24sIDE9b3BlbiBsb29wLCAyPWNsb3NlZCBsb29wCitwd20xCQlydwlyZWxhdGl2ZSBzcGVlZCAoMC0yNTUpLCAyNTU9bWF4LiBzcGVlZC4KKwkJCVVzZWQgaW4gb3BlbiBsb29wIG1vZGUgb25seS4KK2ZhbjFfZGl2CXJ3CXNldHMgdGhlIHNwZWVkIHJhbmdlIHRoZSBpbnB1dHMgY2FuIGhhbmRsZS4gTGVnYWwKKwkJCXZhbHVlcyBhcmUgMSwgMiwgNCwgYW5kIDguIFVzZSBsb3dlciB2YWx1ZXMgZm9yCisJCQlmYXN0ZXIgZmFucy4KKworVXNhZ2Ugbm90ZXMKKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGRvZXMgbm90IGF1dG8tZGV0ZWN0IGRldmljZXMuIFlvdSB3aWxsIGhhdmUgdG8gaW5zdGFudGlhdGUgdGhlCitkZXZpY2VzIGV4cGxpY2l0bHkuIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pMmMvaW5zdGFudGlhdGluZy1kZXZpY2VzIGZvcgorZGV0YWlscy4KKworTW9kdWxlIHBhcmFtZXRlcnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHlvdXIgYm9hcmQgaGFzIGEgQklPUyB0aGF0IGluaXRpYWxpemVzIHRoZSBNQVg2NjUwLzY2NTEgY29ycmVjdGx5LCB5b3UgY2FuCitzaW1wbHkgbG9hZCB5b3VyIG1vZHVsZSB3aXRob3V0IHBhcmFtZXRlcnMuIEl0IHdvbid0IHRvdWNoIHRoZSBjb25maWd1cmF0aW9uCityZWdpc3RlcnMgdGhlbi4gSWYgeW91ciBib2FyZCBCSU9TIGRvZXNuJ3QgaW5pdGlhbGl6ZSB0aGUgY2hpcCwgb3IgeW91IHdhbnQKK2RpZmZlcmVudCBzZXR0aW5ncywgeW91IGNhbiBzZXQgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOgorCit2b2x0YWdlXzEyVjogNT01ViBmYW4sIDEyPTEyViBmYW4sIDA9ZG9uJ3QgY2hhbmdlCitwcmVzY2FsZXI6IFBvc3NpYmxlIHZhbHVlcyBhcmUgMSwyLDQsOCwxNiwgb3IgMCBmb3IgZG9uJ3QgY2hhbmdlCitjbG9jazogVGhlIGNsb2NrIGZyZXF1ZW5jeSBpbiBIeiBvZiB0aGUgY2hpcCB0aGUgZHJpdmVyIHNob3VsZCBhc3N1bWUgWzI1NDAwMF0KKworUGxlYXNlIGhhdmUgYSBsb29rIGF0IHRoZSBNQVg2NjUwLzY2NTEgZGF0YSBzaGVldCBhbmQgbWFrZSBzdXJlIHRoYXQgeW91IGZ1bGx5Cit1bmRlcnN0YW5kIHRoZSBtZWFuaW5nIG9mIHRoZXNlIHBhcmFtZXRlcnMgYmVmb3JlIHlvdSBhdHRlbXB0IHRvIGNoYW5nZSB0aGVtLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL21heDY2OTcgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL21heDY2OTcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjU5NDE3NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vbWF4NjY5NwpAQCAtMCwwICsxLDU4IEBACitLZXJuZWwgZHJpdmVyIG1heDY2OTcKKz09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogTWF4aW0gTUFYNjU4MQorICAgIFByZWZpeDogJ21heDY1ODEnCisgICAgRGF0YXNoZWV0OiBodHRwOi8vZGF0YXNoZWV0cy5tYXhpbWludGVncmF0ZWQuY29tL2VuL2RzL01BWDY1ODEucGRmCisgICogTWF4aW0gTUFYNjYwMgorICAgIFByZWZpeDogJ21heDY2MDInCisgICAgRGF0YXNoZWV0OiBodHRwOi8vZGF0YXNoZWV0cy5tYXhpbWludGVncmF0ZWQuY29tL2VuL2RzL01BWDY2MDIucGRmCisgICogTWF4aW0gTUFYNjYyMgorICAgIFByZWZpeDogJ21heDY2MjInCisgICAgRGF0YXNoZWV0OiBodHRwOi8vZGF0YXNoZWV0cy5tYXhpbWludGVncmF0ZWQuY29tL2VuL2RzL01BWDY2MjIucGRmCisgICogTWF4aW0gTUFYNjYzNgorICAgIFByZWZpeDogJ21heDY2MzYnCisgICAgRGF0YXNoZWV0OiBodHRwOi8vZGF0YXNoZWV0cy5tYXhpbWludGVncmF0ZWQuY29tL2VuL2RzL01BWDY2MzYucGRmCisgICogTWF4aW0gTUFYNjY4OQorICAgIFByZWZpeDogJ21heDY2ODknCisgICAgRGF0YXNoZWV0OiBodHRwOi8vZGF0YXNoZWV0cy5tYXhpbWludGVncmF0ZWQuY29tL2VuL2RzL01BWDY2ODkucGRmCisgICogTWF4aW0gTUFYNjY5MworICAgIFByZWZpeDogJ21heDY2OTMnCisgICAgRGF0YXNoZWV0OiBodHRwOi8vZGF0YXNoZWV0cy5tYXhpbWludGVncmF0ZWQuY29tL2VuL2RzL01BWDY2OTMucGRmCisgICogTWF4aW0gTUFYNjY5NAorICAgIFByZWZpeDogJ21heDY2OTQnCisgICAgRGF0YXNoZWV0OiBodHRwOi8vZGF0YXNoZWV0cy5tYXhpbWludGVncmF0ZWQuY29tL2VuL2RzL01BWDY2OTQucGRmCisgICogTWF4aW0gTUFYNjY5NworICAgIFByZWZpeDogJ21heDY2OTcnCisgICAgRGF0YXNoZWV0OiBodHRwOi8vZGF0YXNoZWV0cy5tYXhpbWludGVncmF0ZWQuY29tL2VuL2RzL01BWDY2OTcucGRmCisgICogTWF4aW0gTUFYNjY5OAorICAgIFByZWZpeDogJ21heDY2OTgnCisgICAgRGF0YXNoZWV0OiBodHRwOi8vZGF0YXNoZWV0cy5tYXhpbWludGVncmF0ZWQuY29tL2VuL2RzL01BWDY2OTgucGRmCisgICogTWF4aW0gTUFYNjY5OQorICAgIFByZWZpeDogJ21heDY2OTknCisgICAgRGF0YXNoZWV0OiBodHRwOi8vZGF0YXNoZWV0cy5tYXhpbWludGVncmF0ZWQuY29tL2VuL2RzL01BWDY2OTkucGRmCisKK0F1dGhvcjoKKyAgICBHdWVudGVyIFJvZWNrIDxsaW51eEByb2Vjay11cy5uZXQ+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHNldmVyYWwgTUFYNjY5NyBjb21wYXRpYmxlIHRlbXBlcmF0dXJlIHNlbnNvcgorY2hpcHMuIFRoZSBjaGlwcyBzdXBwb3J0IG9uZSBsb2NhbCB0ZW1wZXJhdHVyZSBzZW5zb3IgcGx1cyBmb3VyLCBzaXgsIG9yIHNldmVuCityZW1vdGUgdGVtcGVyYXR1cmUgc2Vuc29ycy4gUmVtb3RlIHRlbXBlcmF0dXJlIHNlbnNvcnMgYXJlIGRpb2RlLWNvbm5lY3RlZAordGhlcm1hbCB0cmFuc2l0b3JzLCBleGNlcHQgZm9yIE1BWDY2OTggd2hpY2ggc3VwcG9ydHMgdGhyZWUgZGlvZGUtY29ubmVjdGVkCit0aGVybWFsIHRyYW5zaXN0b3JzIHBsdXMgdGhyZWUgdGhlcm1pc3RvcnMgaW4gYWRkaXRpb24gdG8gdGhlIGxvY2FsIHRlbXBlcmF0dXJlCitzZW5zb3IuCisKK1RoZSBkcml2ZXIgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBzeXNmcyBhdHRyaWJ1dGVzLiB0ZW1wMSBpcyB0aGUgbG9jYWwgKGNoaXApCit0ZW1wZXJhdHVyZSwgdGVtcFsyLi5uXSBhcmUgcmVtb3RlIHRlbXBlcmF0dXJlcy4gVGhlIGFjdHVhbGx5IHN1cHBvcnRlZAorcGVyLWNoYW5uZWwgYXR0cmlidXRlcyBhcmUgY2hpcCB0eXBlIGFuZCBjaGFubmVsIGRlcGVuZGVudC4KKwordGVtcFhfaW5wdXQgICAgICBSTyB0ZW1wZXJhdHVyZQordGVtcFhfbWF4ICAgICAgICBSVyB0ZW1wZXJhdHVyZSBtYXhpbXVtIHRocmVzaG9sZAordGVtcFhfbWF4X2FsYXJtICBSTyB0ZW1wZXJhdHVyZSBtYXhpbXVtIHRocmVzaG9sZCBhbGFybQordGVtcFhfY3JpdCAgICAgICBSVyB0ZW1wZXJhdHVyZSBjcml0aWNhbCB0aHJlc2hvbGQKK3RlbXBYX2NyaXRfYWxhcm0gUk8gdGVtcGVyYXR1cmUgY3JpdGljYWwgdGhyZXNob2xkIGFsYXJtCit0ZW1wWF9mYXVsdCAgICAgIFJPIHRlbXBlcmF0dXJlIGRpb2RlIGZhdWx0IChyZW1vdGUgc2Vuc29ycyBvbmx5KQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9tYXg4Njg4IGIvRG9jdW1lbnRhdGlvbi9od21vbi9tYXg4Njg4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3ODA3ODYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL21heDg2ODgKQEAgLTAsMCArMSw3NSBAQAorS2VybmVsIGRyaXZlciBtYXg4Njg4Cis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIE1heGltIE1BWDg2ODgKKyAgICBQcmVmaXg6ICdtYXg4Njg4JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OiBodHRwOi8vZGF0YXNoZWV0cy5tYXhpbS1pYy5jb20vZW4vZHMvTUFYODY4OC5wZGYKKworQXV0aG9yOiBHdWVudGVyIFJvZWNrIDxsaW51eEByb2Vjay11cy5uZXQ+CisKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIHN1cHBvcnRzIGhhcmR3YXJlIG1vbnRvcmluZyBmb3IgTWF4aW0gTUFYODY4OCBEaWdpdGFsIFBvd2VyLVN1cHBseQorQ29udHJvbGxlci9Nb25pdG9yIHdpdGggUE1CdXMgSW50ZXJmYWNlLgorCitUaGUgZHJpdmVyIGlzIGEgY2xpZW50IGRyaXZlciB0byB0aGUgY29yZSBQTUJ1cyBkcml2ZXIuIFBsZWFzZSBzZWUKK0RvY3VtZW50YXRpb24vaHdtb24vcG1idXMgZm9yIGRldGFpbHMgb24gUE1CdXMgY2xpZW50IGRyaXZlcnMuCisKKworVXNhZ2UgTm90ZXMKKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGRvZXMgbm90IGF1dG8tZGV0ZWN0IGRldmljZXMuIFlvdSB3aWxsIGhhdmUgdG8gaW5zdGFudGlhdGUgdGhlCitkZXZpY2VzIGV4cGxpY2l0bHkuIFBsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9pMmMvaW5zdGFudGlhdGluZy1kZXZpY2VzIGZvcgorZGV0YWlscy4KKworCitQbGF0Zm9ybSBkYXRhIHN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZHJpdmVyIHN1cHBvcnRzIHN0YW5kYXJkIFBNQnVzIGRyaXZlciBwbGF0Zm9ybSBkYXRhLgorCisKK1N5c2ZzIGVudHJpZXMKKy0tLS0tLS0tLS0tLS0KKworVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIGFyZSBzdXBwb3J0ZWQuIExpbWl0cyBhcmUgcmVhZC13cml0ZTsgYWxsIG90aGVyCithdHRyaWJ1dGVzIGFyZSByZWFkLW9ubHkuCisKK2luMV9sYWJlbAkJInZvdXQxIgoraW4xX2lucHV0CQlNZWFzdXJlZCB2b2x0YWdlLiBGcm9tIFJFQURfVk9VVCByZWdpc3Rlci4KK2luMV9taW4JCQlNaW5pbXVtIFZvbHRhZ2UuIEZyb20gVk9VVF9VVl9XQVJOX0xJTUlUIHJlZ2lzdGVyLgoraW4xX21heAkJCU1heGltdW0gdm9sdGFnZS4gRnJvbSBWT1VUX09WX1dBUk5fTElNSVQgcmVnaXN0ZXIuCitpbjFfbGNyaXQJCUNyaXRpY2FsIG1pbmltdW0gVm9sdGFnZS4gVk9VVF9VVl9GQVVMVF9MSU1JVCByZWdpc3Rlci4KK2luMV9jcml0CQlDcml0aWNhbCBtYXhpbXVtIHZvbHRhZ2UuIEZyb20gVk9VVF9PVl9GQVVMVF9MSU1JVCByZWdpc3Rlci4KK2luMV9taW5fYWxhcm0JCVZvbHRhZ2UgbG93IGFsYXJtLiBGcm9tIFZPTFRBR0VfVVZfV0FSTklORyBzdGF0dXMuCitpbjFfbWF4X2FsYXJtCQlWb2x0YWdlIGhpZ2ggYWxhcm0uIEZyb20gVk9MVEFHRV9PVl9XQVJOSU5HIHN0YXR1cy4KK2luMV9sY3JpdF9hbGFybQkJVm9sdGFnZSBjcml0aWNhbCBsb3cgYWxhcm0uIEZyb20gVk9MVEFHRV9VVl9GQVVMVCBzdGF0dXMuCitpbjFfY3JpdF9hbGFybQkJVm9sdGFnZSBjcml0aWNhbCBoaWdoIGFsYXJtLiBGcm9tIFZPTFRBR0VfT1ZfRkFVTFQgc3RhdHVzLgoraW4xX2hpZ2hlc3QJCUhpc3RvcmljYWwgbWF4aW11bSB2b2x0YWdlLgoraW4xX3Jlc2V0X2hpc3RvcnkJV3JpdGUgYW55IHZhbHVlIHRvIHJlc2V0IGhpc3RvcnkuCisKK2N1cnIxX2xhYmVsCQkiaW91dDEiCitjdXJyMV9pbnB1dAkJTWVhc3VyZWQgY3VycmVudC4gRnJvbSBSRUFEX0lPVVQgcmVnaXN0ZXIuCitjdXJyMV9tYXgJCU1heGltdW0gY3VycmVudC4gRnJvbSBJT1VUX09DX1dBUk5fTElNSVQgcmVnaXN0ZXIuCitjdXJyMV9jcml0CQlDcml0aWNhbCBtYXhpbXVtIGN1cnJlbnQuIEZyb20gSU9VVF9PQ19GQVVMVF9MSU1JVCByZWdpc3Rlci4KK2N1cnIxX21heF9hbGFybQkJQ3VycmVudCBoaWdoIGFsYXJtLiBGcm9tIElPVVRfT0NfV0FSTl9MSU1JVCByZWdpc3Rlci4KK2N1cnIxX2NyaXRfYWxhcm0JQ3VycmVudCBjcml0aWNhbCBoaWdoIGFsYXJtLiBGcm9tIElPVVRfT0NfRkFVTFQgc3RhdHVzLgorY3VycjFfaGlnaGVzdAkJSGlzdG9yaWNhbCBtYXhpbXVtIGN1cnJlbnQuCitjdXJyMV9yZXNldF9oaXN0b3J5CVdyaXRlIGFueSB2YWx1ZSB0byByZXNldCBoaXN0b3J5LgorCit0ZW1wMV9pbnB1dAkJTWVhc3VyZWQgdGVtcGVyYXR1cmUuIEZyb20gUkVBRF9URU1QRVJBVFVSRV8xIHJlZ2lzdGVyLgordGVtcDFfbWF4CQlNYXhpbXVtIHRlbXBlcmF0dXJlLiBGcm9tIE9UX1dBUk5fTElNSVQgcmVnaXN0ZXIuCit0ZW1wMV9jcml0CQlDcml0aWNhbCBoaWdoIHRlbXBlcmF0dXJlLiBGcm9tIE9UX0ZBVUxUX0xJTUlUIHJlZ2lzdGVyLgordGVtcDFfbWF4X2FsYXJtCQlDaGlwIHRlbXBlcmF0dXJlIGhpZ2ggYWxhcm0uIFNldCBieSBjb21wYXJpbmcKKwkJCVJFQURfVEVNUEVSQVRVUkVfMSB3aXRoIE9UX1dBUk5fTElNSVQgaWYgVEVNUF9PVF9XQVJOSU5HCisJCQlzdGF0dXMgaXMgc2V0LgordGVtcDFfY3JpdF9hbGFybQlDaGlwIHRlbXBlcmF0dXJlIGNyaXRpY2FsIGhpZ2ggYWxhcm0uIFNldCBieSBjb21wYXJpbmcKKwkJCVJFQURfVEVNUEVSQVRVUkVfMSB3aXRoIE9UX0ZBVUxUX0xJTUlUIGlmIFRFTVBfT1RfRkFVTFQKKwkJCXN0YXR1cyBpcyBzZXQuCit0ZW1wMV9oaWdoZXN0CQlIaXN0b3JpY2FsIG1heGltdW0gdGVtcGVyYXR1cmUuCit0ZW1wMV9yZXNldF9oaXN0b3J5CVdyaXRlIGFueSB2YWx1ZSB0byByZXNldCBoaXN0b3J5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9tYzEzNzgzLWFkYyBiL0RvY3VtZW50YXRpb24vaHdtb24vbWMxMzc4My1hZGMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBlN2IzZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vbWMxMzc4My1hZGMKQEAgLTAsMCArMSw3NCBAQAorS2VybmVsIGRyaXZlciBtYzEzNzgzLWFkYworPT09PT09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogRnJlZXNjYWxlIEF0bGFzIE1DMTM3ODMKKyAgICBQcmVmaXg6ICdtYzEzNzgzJworICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5mcmVlc2NhbGUuY29tL2ZpbGVzL3JmX2lmL2RvYy9kYXRhX3NoZWV0L01DMTM3ODMucGRmP2ZzcmNoPTEKKyAgKiBGcmVlc2NhbGUgQXRsYXMgTUMxMzg5MgorICAgIFByZWZpeDogJ21jMTM4OTInCisgICAgRGF0YXNoZWV0OiBodHRwOi8vY2FjaGUuZnJlZXNjYWxlLmNvbS9maWxlcy9hbmFsb2cvZG9jL2RhdGFfc2hlZXQvTUMxMzg5Mi5wZGY/ZnNyY2g9MSZzcj0xCisKK0F1dGhvcnM6CisgICAgU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgorICAgIEx1b3RhbyBGdSA8bC5mdUBwZW5ndXRyb25peC5kZT4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoZSBGcmVlc2NhbGUgTUMxMzc4MyBhbmQgTUMxMzg5MiBhcmUgUG93ZXIgTWFuYWdlbWVudCBhbmQgQXVkaW8gQ2lyY3VpdHMuCitBbW9uZyBvdGhlciB0aGluZ3MgdGhleSBjb250YWluIGEgMTAtYml0IEEvRCBjb252ZXJ0ZXIuIFRoZSBjb252ZXJ0ZXIgaGFzIDE2CisoTUMxMzc4MykgcmVzcC4gMTIgKE1DMTM4OTIpIGNoYW5uZWxzIHdoaWNoIGNhbiBiZSB1c2VkIGluIGRpZmZlcmVudCBtb2Rlcy4gVGhlCitBL0QgY29udmVydGVyIGhhcyBhIHJlc29sdXRpb24gb2YgMi4yNW1WLgorCitTb21lIGNoYW5uZWxzIGNhbiBiZSB1c2VkIGFzIEdlbmVyYWwgUHVycG9zZSBpbnB1dHMgb3IgaW4gYSBkZWRpY2F0ZWQgbW9kZSB3aXRoCithIGNoaXAgaW50ZXJuYWwgc2NhbGluZyBhcHBsaWVkIC4KKworQ3VycmVudGx5IHRoZSBkcml2ZXIgb25seSBzdXBwb3J0cyB0aGUgQXBwbGljYXRpb24gU3VwcGx5IGNoYW5uZWwgKEJQIC8gQlBTTlMpLAordGhlIEdlbmVyYWwgUHVycG9zZSBpbnB1dHMgYW5kIHRvdWNoc2NyZWVuLgorCitTZWUgdGhlIGZvbGxvd2luZyB0YWJsZXMgZm9yIHRoZSBtZWFuaW5nIG9mIHRoZSBkaWZmZXJlbnQgY2hhbm5lbHMgYW5kIHRoZWlyCitjaGlwIGludGVybmFsIHNjYWxpbmc6CisKK01DMTM3ODM6CitDaGFubmVsCVNpZ25hbAkJCQkJCUlucHV0IFJhbmdlCVNjYWxpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzAJQmF0dGVyeSBWb2x0YWdlIChCQVRUKQkJCQkyLjUwIC0gNC42NVYJLTIuNDBWCisxCUJhdHRlcnkgQ3VycmVudCAoQkFUVCAtIEJBVFRJU05TKQkJLTUwIC0gNTAgbVYJeDIwCisyCUFwcGxpY2F0aW9uIFN1cHBseSAoQlApCQkJCTIuNTAgLSA0LjY1VgktMi40MFYKKzMJQ2hhcmdlciBWb2x0YWdlIChDSFJHUkFXKQkJCTAgLSAxMFYgLwkvNQorCQkJCQkJCTAgLSAyMFYJCS8xMAorNAlDaGFyZ2VyIEN1cnJlbnQgKENIUkdJU05TUC1DSFJHSVNOU04pCQktMC4yNSAtIDAuMjVWCXg0Cis1CUdlbmVyYWwgUHVycG9zZSBBRElONSAvIEJhdHRlcnkgUGFjayBUaGVybWlzdG9yCTAgLSAyLjMwVglObworNglHZW5lcmFsIFB1cnBvc2UgQURJTjYgLyBCYWNrdXAgVm9sdGFnZSAoTElDRUxMKQkwIC0gMi4zMFYgLwlObyAvCisJCQkJCQkJMS41MCAtIDMuNTBWCS0xLjIwVgorNwlHZW5lcmFsIFB1cnBvc2UgQURJTjcgLyBVSUQgLyBEaWUgVGVtcGVyYXR1cmUJMCAtIDIuMzBWIC8JTm8gLworCQkJCQkJCTAgLSAyLjU1ViAvCXgwLjkgLyBObworOAlHZW5lcmFsIFB1cnBvc2UgQURJTjgJCQkJMCAtIDIuMzBWCU5vCis5CUdlbmVyYWwgUHVycG9zZSBBRElOOQkJCQkwIC0gMi4zMFYJTm8KKzEwCUdlbmVyYWwgUHVycG9zZSBBRElOMTAJCQkJMCAtIDIuMzBWCU5vCisxMQlHZW5lcmFsIFB1cnBvc2UgQURJTjExCQkJCTAgLSAyLjMwVglObworMTIJR2VuZXJhbCBQdXJwb3NlIFRTWDEgLyBUb3VjaHNjcmVlbiBYLXBsYXRlIDEJMCAtIDIuMzBWCU5vCisxMwlHZW5lcmFsIFB1cnBvc2UgVFNYMiAvIFRvdWNoc2NyZWVuIFgtcGxhdGUgMgkwIC0gMi4zMFYJTm8KKzE0CUdlbmVyYWwgUHVycG9zZSBUU1kxIC8gVG91Y2hzY3JlZW4gWS1wbGF0ZSAxCTAgLSAyLjMwVglObworMTUJR2VuZXJhbCBQdXJwb3NlIFRTWTIgLyBUb3VjaHNjcmVlbiBZLXBsYXRlIDIJMCAtIDIuMzBWCU5vCisKK01DMTM4OTI6CitDaGFubmVsCVNpZ25hbAkJCQkJCUlucHV0IFJhbmdlCVNjYWxpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzAJQmF0dGVyeSBWb2x0YWdlIChCQVRUKQkJCQkwIC0gNC44VgkvMgorMQlCYXR0ZXJ5IEN1cnJlbnQgKEJBVFQgLSBCQVRUSVNOU0NDKQkJLTYwIC0gNjAgbVYJeDIwCisyCUFwcGxpY2F0aW9uIFN1cHBseSAoQlBTTlMpCQkJMCAtIDQuOFYJLzIKKzMJQ2hhcmdlciBWb2x0YWdlIChDSFJHUkFXKQkJCTAgLSAxMlYgLwkvNQorCQkJCQkJCTAgLSAyMFYJCS8xMAorNAlDaGFyZ2VyIEN1cnJlbnQgKENIUkdJU05TLUJQU05TKSAvCQktMC4zIC0gMC4zViAvCXg0IC8KKwlUb3VjaHNjcmVlbiBYLXBsYXRlIDEJCQkJMCAtIDIuNFYJTm8KKzUJR2VuZXJhbCBQdXJwb3NlIEFESU41IC8JQmF0dGVyeSBQYWNrIFRoZXJtaXN0b3IJMCAtIDIuNFYJTm8KKzYJR2VuZXJhbCBQdXJwb3NlIEFESU42IC8gQmFja3VwIFZvbHRhZ2UgKExJQ0VMTCkJMCAtIDIuNFYgLwlObworCUJhY2t1cCBWb2x0YWdlIChMSUNFTEwpICAgICAgICAgICAgICAgICAgICAgICAgCTAgLSAzLjZWCXgyLzMKKzcJR2VuZXJhbCBQdXJwb3NlIEFESU43IC8gVUlEIC8gRGllIFRlbXBlcmF0dXJlCTAgLSAyLjRWIC8JTm8gLworCQkJCQkJCTAgLSA0LjhWCS8yCisxMglHZW5lcmFsIFB1cnBvc2UgVFNYMSAvIFRvdWNoc2NyZWVuIFgtcGxhdGUgMQkwIC0gMi40VglObworMTMJR2VuZXJhbCBQdXJwb3NlIFRTWDIgLyBUb3VjaHNjcmVlbiBYLXBsYXRlIDIJMCAtIDIuNFYJTm8KKzE0CUdlbmVyYWwgUHVycG9zZSBUU1kxIC8gVG91Y2hzY3JlZW4gWS1wbGF0ZSAxCTAgLSAyLjRWCU5vCisxNQlHZW5lcmFsIFB1cnBvc2UgVFNZMiAvIFRvdWNoc2NyZWVuIFktcGxhdGUgMgkwIC0gMi40VglObwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9tY3AzMDIxIGIvRG9jdW1lbnRhdGlvbi9od21vbi9tY3AzMDIxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0YTZiNzIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL21jcDMwMjEKQEAgLTAsMCArMSwyOSBAQAorS2VybmVsIGRyaXZlciBNQ1AzMDIxCis9PT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBNaWNyb2NoaXAgVGVjaG5vbG9neSBNQ1AzMDIxCisgICAgUHJlZml4OiAnbWNwMzAyMScKKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93dzEubWljcm9jaGlwLmNvbS9kb3dubG9hZHMvZW4vRGV2aWNlRG9jLzIxODA1YS5wZGYKKyAgKiBNaWNyb2NoaXAgVGVjaG5vbG9neSBNQ1AzMjIxCisgICAgUHJlZml4OiAnbWNwMzIyMScKKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93dzEubWljcm9jaGlwLmNvbS9kb3dubG9hZHMvZW4vRGV2aWNlRG9jLzIxNzMyYy5wZGYKKworQXV0aG9yczoKKyAgIE1pbmdrYWkgSHUKKyAgIFN2ZW4gU2NodWNobWFubiA8c2NodWNobWFubkBzY2hsZWlzc2hlaW1lci5kZT4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgdGhlIE1pY3JvY2hpcCBUZWNobm9sb2d5IE1DUDMwMjEgYW5kCitNQ1AzMjIxIGNoaXAuCisKK1RoZSBNaWNyb2NoaXAgVGVjaG5vbG9neSBJbmMuIE1DUDMwMjEgaXMgYSBzdWNjZXNzaXZlIGFwcHJveGltYXRpb24gQS9ECitjb252ZXJ0ZXIgKEFEQykgd2l0aCAxMC1iaXQgcmVzb2x1dGlvbi4gVGhlIE1DUDMyMjEgaGFzIDEyLWJpdCByZXNvbHV0aW9uLgorCitUaGVzZSBkZXZpY2VzIHByb3ZpZGUgb25lIHNpbmdsZS1lbmRlZCBpbnB1dCB3aXRoIHZlcnkgbG93IHBvd2VyIGNvbnN1bXB0aW9uLgorQ29tbXVuaWNhdGlvbiB0byB0aGUgTUNQMzAyMS9NQ1AzMjIxICBpcyBwZXJmb3JtZWQgdXNpbmcgYSAyLXdpcmUgSTJDCitjb21wYXRpYmxlIGludGVyZmFjZS4gU3RhbmRhcmQgKDEwMCBrSHopIGFuZCBGYXN0ICg0MDAga0h6KSBJMkMgbW9kZXMgYXJlCithdmFpbGFibGUuIFRoZSBkZWZhdWx0IEkyQyBkZXZpY2UgYWRkcmVzcyBpcyAweDRkIChjb250YWN0IHRoZSBNaWNyb2NoaXAKK2ZhY3RvcnkgZm9yIGFkZGl0aW9uYWwgYWRkcmVzcyBvcHRpb25zKS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vbWVuZjIxYm1jIGIvRG9jdW1lbnRhdGlvbi9od21vbi9tZW5mMjFibWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmEyNzNhMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vbWVuZjIxYm1jCkBAIC0wLDAgKzEsNTAgQEAKK0tlcm5lbCBkcml2ZXIgbWVuZjIxYm1jX2h3bW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisJKiBNRU4gMTRGMDIxUDAwCisJICBQcmVmaXg6ICdtZW5mMjFibWNfaHdtb24nCisJICBBZHJlc3NlcyBzY2FubmVkOiAtCisKK0F1dGhvcjogQW5kcmVhcyBXZXJuZXIgPGFuZHJlYXMud2VybmVyQG1lbi5kZT4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoZSBtZW5mMjFibWMgaXMgYSBCb2FyZCBNYW5hZ2VtZW50IENvbnRyb2xsZXIgKEJNQykgd2hpY2ggcHJvdmlkZXMgYW4gSTJDCitpbnRlcmZhY2UgdG8gdGhlIGhvc3QgdG8gYWNjZXNzIHRoZSBmZWF0dXJlcyBpbXBsZW1lbnRlZCBpbiB0aGUgQk1DLgorCitUaGlzIGRyaXZlciBnaXZlcyBhY2Nlc3MgdG8gdGhlIHZvbHRhZ2UgbW9uaXRvcmluZyBmZWF0dXJlIG9mIHRoZSBtYWluCit2b2x0YWdlcyBvZiB0aGUgYm9hcmQuCitUaGUgdm9sdGFnZSBzZW5zb3JzIGFyZSBjb25uZWN0ZWQgdG8gdGhlIEFEQyBpbnB1dHMgb2YgdGhlIEJNQyB3aGljaCBpcworYSBQSUMxNkY5MTcgTWlrcm9jb250cm9sbGVyLgorCitVc2FnZSBOb3RlcworLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgaXMgcGFydCBvZiB0aGUgTUZEIGRyaXZlciBuYW1lZCAibWVuZjIxYm1jIiBhbmQgZG9lcworbm90IGF1dG8tZGV0ZWN0IGRldmljZXMuCitZb3Ugd2lsbCBoYXZlIHRvIGluc3RhbnRpYXRlIHRoZSBNRkQgZHJpdmVyIGV4cGxpY2l0bHkuCitQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaTJjL2luc3RhbnRpYXRpbmctZGV2aWNlcyBmb3IKK2RldGFpbHMuCisKK1N5c2ZzIGVudHJpZXMKKy0tLS0tLS0tLS0tLS0KKworVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIGFyZSBzdXBwb3J0ZWQuIEFsbCBhdHRyaWJ1dGVzIGFyZSByZWFkIG9ubHkKK1RoZSBMaW1pdHMgYXJlIHJlYWQgb25jZSBieSB0aGUgZHJpdmVyLgorCitpbjBfaW5wdXQJKzMuM1YgaW5wdXQgdm9sdGFnZQoraW4xX2lucHV0CSs1LjBWIGlucHV0IHZvbHRhZ2UKK2luMl9pbnB1dAkrMTIuMFYgaW5wdXQgdm9sdGFnZQoraW4zX2lucHV0CSs1ViBTdGFuZGJ5IGlucHV0IHZvbHRhZ2UKK2luNF9pbnB1dAlWQkFUIChvbiBib2FyZCBiYXR0ZXJ5KQorCitpblswLTRdX21pbglNaW5pbXVtIHZvbHRhZ2UgbGltaXQKK2luWzAtNF1fbWF4CU1heGltdW0gdm9sdGFnZSBsaW1pdAorCitpbjBfbGFiZWwJIk1PTl8zXzNWIgoraW4xX2xhYmVsCSJNT05fNVYiCitpbjJfbGFiZWwJIk1PTl8xMlYiCitpbjNfbGFiZWwJIjVWX1NUQU5EQlkiCitpbjRfbGFiZWwJIlZCQVQiCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL25jdDY2ODMgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL25jdDY2ODMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzEzMDFkNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vbmN0NjY4MwpAQCAtMCwwICsxLDU3IEBACitLZXJuZWwgZHJpdmVyIG5jdDY2ODMKKz09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogTnV2b3RvbiBOQ1Q2NjgzRAorICAgIFByZWZpeDogJ25jdDY2ODMnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IElTQSBhZGRyZXNzIHJldHJpZXZlZCBmcm9tIFN1cGVyIEkvTyByZWdpc3RlcnMKKyAgICBEYXRhc2hlZXQ6IEF2YWlsYWJsZSBmcm9tIE51dm90b24gdXBvbiByZXF1ZXN0CisKK0F1dGhvcnM6CisgICAgICAgIEd1ZW50ZXIgUm9lY2sgPGxpbnV4QHJvZWNrLXVzLm5ldD4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgdGhlIE51dm90b24gTkNUNjY4M0QgZVNJTyBjaGlwLgorCitUaGUgY2hpcHMgaW1wbGVtZW50IHVwIHRvIHNoYXJlZCAzMiB0ZW1wZXJhdHVyZSBhbmQgdm9sdGFnZSBzZW5zb3JzLgorSXQgc3VwcG9ydHMgdXAgdG8gMTYgZmFuIHJvdGF0aW9uIHNlbnNvcnMgYW5kIHVwIHRvIDggZmFuIGNvbnRyb2wgZW5naW5lcy4KKworVGVtcGVyYXR1cmVzIGFyZSBtZWFzdXJlZCBpbiBkZWdyZWVzIENlbHNpdXMuIE1lYXN1cmVtZW50IHJlc29sdXRpb24gaXMKKzAuNSBkZWdyZWVzIEMuCisKK1ZvbHRhZ2Ugc2Vuc29ycyAoYWxzbyBrbm93biBhcyBJTiBzZW5zb3JzKSByZXBvcnQgdGhlaXIgdmFsdWVzIGluIG1pbGxpdm9sdHMuCisKK0ZhbiByb3RhdGlvbiBzcGVlZHMgYXJlIHJlcG9ydGVkIGluIFJQTSAocm90YXRpb25zIHBlciBtaW51dGUpLgorCitVc2FnZSBOb3RlCistLS0tLS0tLS0tCisKK0xpbWl0IHJlZ2lzdGVyIGxvY2F0aW9ucyBvbiBJbnRlbCBib2FyZHMgd2l0aCBFQyBmaXJtd2FyZSB2ZXJzaW9uIDEuMAorYnVpbGQgZGF0ZSAwNC8wMy8xMyBkbyBub3QgbWF0Y2ggdGhlIHJlZ2lzdGVyIGxvY2F0aW9ucyBpbiB0aGUgTnV2b3RvbgorZGF0YXNoZWV0LiBOdXZvdG9uIGNvbmZpcm1zIHRoYXQgSW50ZWwgdXNlcyBhIHNwZWNpYWwgZmlybXdhcmUgdmVyc2lvbgord2l0aCBkaWZmZXJlbnQgcmVnaXN0ZXIgYWRkcmVzc2VzLiBUaGUgc3BlY2lmaWNhdGlvbiBkZXNjcmliaW5nIHRoZSBJbnRlbAorZmlybXdhcmUgaXMgaGVsZCB1bmRlciBOREEgYnkgTnV2b3RvbiBhbmQgSW50ZWwgYW5kIG5vdCBhdmFpbGFibGUKK3RvIHRoZSBwdWJsaWMuCisKK1NvbWUgb2YgdGhlIHJlZ2lzdGVyIGxvY2F0aW9ucyBjYW4gYmUgcmV2ZXJzZSBlbmdpbmVlcmVkOyBvdGhlcnMgYXJlIHRvbword2VsbCBoaWRkZW4uIEdpdmVuIHRoaXMsIHdyaXRpbmcgYW55IHZhbHVlcyBmcm9tIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGlzCitjb25zaWRlcmVkIHRvbyByaXNreSB3aXRoIHRoaXMgZmlybXdhcmUgYW5kIGhhcyBiZWVuIGRpc2FibGVkLiBBbGwgbGltaXRzCittdXN0IGFsbCBiZSB3cml0dGVuIGZyb20gdGhlIEJJT1MuCisKK1RoZSBkcml2ZXIgaGFzIG9ubHkgYmVlbiB0ZXN0ZWQgd2l0aCB0aGUgSW50ZWwgZmlybXdhcmUsIGFuZCBieSBkZWZhdWx0Citvbmx5IGluc3RhbnRpYXRlcyBvbiBJbnRlbCBib2FyZHMuIFRvIGVuYWJsZSBpdCBvbiBub24tSW50ZWwgYm9hcmRzLAorc2V0IHRoZSAnZm9yY2UnIG1vZHVsZSBwYXJhbWV0ZXIgdG8gMS4KKworVGVzdGVkIEJvYXJkcyBhbmQgRmlybXdhcmUgVmVyc2lvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBkcml2ZXIgaGFzIGJlZW4gcmVwb3J0ZWQgdG8gd29yayB3aXRoIHRoZSBmb2xsb3dpbmcgYm9hcmRzIGFuZAorZmlybXdhcmUgdmVyc2lvbnMuCisKK0JvYXJkCQlGaXJtd2FyZSB2ZXJzaW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0ludGVsIERIODdSTAlOQ1Q2NjgzRCBFQyBmaXJtd2FyZSB2ZXJzaW9uIDEuMCBidWlsZCAwNC8wMy8xMworSW50ZWwgREg4N01DCU5DVDY2ODNEIEVDIGZpcm13YXJlIHZlcnNpb24gMS4wIGJ1aWxkIDA0LzAzLzEzCitJbnRlbCBEQjg1RkwJTkNUNjY4M0QgRUMgZmlybXdhcmUgdmVyc2lvbiAxLjAgYnVpbGQgMDQvMDMvMTMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vbmN0Njc3NSBiL0RvY3VtZW50YXRpb24vaHdtb24vbmN0Njc3NQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmFkZDRjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9uY3Q2Nzc1CkBAIC0wLDAgKzEsMjA0IEBACitOb3RlCis9PT09CisKK1RoaXMgZHJpdmVyIHN1cGVyc2VkZXMgdGhlIE5DVDY3NzVGIGFuZCBOQ1Q2Nzc2RiBzdXBwb3J0IGluIHRoZSBXODM2MjdFSEYKK2RyaXZlci4KKworS2VybmVsIGRyaXZlciBOQ1Q2Nzc1Cis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIE51dm90b24gTkNUNjEwMkQvTkNUNjEwNEQvTkNUNjEwNkQKKyAgICBQcmVmaXg6ICduY3Q2MTA2JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJU0EgYWRkcmVzcyByZXRyaWV2ZWQgZnJvbSBTdXBlciBJL08gcmVnaXN0ZXJzCisgICAgRGF0YXNoZWV0OiBBdmFpbGFibGUgZnJvbSB0aGUgTnV2b3RvbiB3ZWIgc2l0ZQorICAqIE51dm90b24gTkNUNTU3MkQvTkNUNjc3MUYvTkNUNjc3MkYvTkNUNjc3NUYvVzgzNjc3SEctSQorICAgIFByZWZpeDogJ25jdDY3NzUnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IElTQSBhZGRyZXNzIHJldHJpZXZlZCBmcm9tIFN1cGVyIEkvTyByZWdpc3RlcnMKKyAgICBEYXRhc2hlZXQ6IEF2YWlsYWJsZSBmcm9tIE51dm90b24gdXBvbiByZXF1ZXN0CisgICogTnV2b3RvbiBOQ1Q1NTczRC9OQ1Q1NTc3RC9OQ1Q2Nzc2RC9OQ1Q2Nzc2RgorICAgIFByZWZpeDogJ25jdDY3NzYnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IElTQSBhZGRyZXNzIHJldHJpZXZlZCBmcm9tIFN1cGVyIEkvTyByZWdpc3RlcnMKKyAgICBEYXRhc2hlZXQ6IEF2YWlsYWJsZSBmcm9tIE51dm90b24gdXBvbiByZXF1ZXN0CisgICogTnV2b3RvbiBOQ1Q1NTMyRC9OQ1Q2Nzc5RAorICAgIFByZWZpeDogJ25jdDY3NzknCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IElTQSBhZGRyZXNzIHJldHJpZXZlZCBmcm9tIFN1cGVyIEkvTyByZWdpc3RlcnMKKyAgICBEYXRhc2hlZXQ6IEF2YWlsYWJsZSBmcm9tIE51dm90b24gdXBvbiByZXF1ZXN0CisgICogTnV2b3RvbiBOQ1Q2NzkxRAorICAgIFByZWZpeDogJ25jdDY3OTEnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IElTQSBhZGRyZXNzIHJldHJpZXZlZCBmcm9tIFN1cGVyIEkvTyByZWdpc3RlcnMKKyAgICBEYXRhc2hlZXQ6IEF2YWlsYWJsZSBmcm9tIE51dm90b24gdXBvbiByZXF1ZXN0CisgICogTnV2b3RvbiBOQ1Q2NzkyRAorICAgIFByZWZpeDogJ25jdDY3OTInCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IElTQSBhZGRyZXNzIHJldHJpZXZlZCBmcm9tIFN1cGVyIEkvTyByZWdpc3RlcnMKKyAgICBEYXRhc2hlZXQ6IEF2YWlsYWJsZSBmcm9tIE51dm90b24gdXBvbiByZXF1ZXN0CisgICogTnV2b3RvbiBOQ1Q2NzkzRAorICAgIFByZWZpeDogJ25jdDY3OTMnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IElTQSBhZGRyZXNzIHJldHJpZXZlZCBmcm9tIFN1cGVyIEkvTyByZWdpc3RlcnMKKyAgICBEYXRhc2hlZXQ6IEF2YWlsYWJsZSBmcm9tIE51dm90b24gdXBvbiByZXF1ZXN0CisKK0F1dGhvcnM6CisgICAgICAgIEd1ZW50ZXIgUm9lY2sgPGxpbnV4QHJvZWNrLXVzLm5ldD4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgdGhlIE51dm90b24gTkNUNjc3NUYsIE5DVDY3NzZGLCBhbmQgTkNUNjc3OUQKK2FuZCBjb21wYXRpYmxlIHN1cGVyIEkvTyBjaGlwcy4KKworVGhlIGNoaXBzIHN1cHBvcnQgdXAgdG8gMjUgdGVtcGVyYXR1cmUgbW9uaXRvcmluZyBzb3VyY2VzLiBVcCB0byA2IG9mIHRob3NlIGFyZQorZGlyZWN0IHRlbXBlcmF0dXJlIHNlbnNvciBpbnB1dHMsIHRoZSBvdGhlcnMgYXJlIHNwZWNpYWwgc291cmNlcyBzdWNoIGFzIFBFQ0ksCitQQ0gsIGFuZCBTTUJVUy4gRGVwZW5kaW5nIG9uIHRoZSBjaGlwIHR5cGUsIDIgdG8gNiBvZiB0aGUgdGVtcGVyYXR1cmUgc291cmNlcworY2FuIGJlIG1vbml0b3JlZCBhbmQgY29tcGFyZWQgYWdhaW5zdCBtaW5pbXVtLCBtYXhpbXVtLCBhbmQgY3JpdGljYWwKK3RlbXBlcmF0dXJlcy4gVGhlIGRyaXZlciByZXBvcnRzIHVwIHRvIDEwIG9mIHRoZSB0ZW1wZXJhdHVyZXMgdG8gdGhlIHVzZXIuCitUaGVyZSBhcmUgNCB0byA1IGZhbiByb3RhdGlvbiBzcGVlZCBzZW5zb3JzLCA4IHRvIDE1IGFuYWxvZyB2b2x0YWdlIHNlbnNvcnMsCitvbmUgVklELCBhbGFybXMgd2l0aCBiZWVwIHdhcm5pbmdzIChjb250cm9sIHVuaW1wbGVtZW50ZWQpLCBhbmQgc29tZSBhdXRvbWF0aWMKK2ZhbiByZWd1bGF0aW9uIHN0cmF0ZWdpZXMgKHBsdXMgbWFudWFsIGZhbiBjb250cm9sIG1vZGUpLgorCitUaGUgdGVtcGVyYXR1cmUgc2Vuc29yIHNvdXJjZXMgb24gYWxsIGNoaXBzIGFyZSBjb25maWd1cmFibGUuIFRoZSBjb25maWd1cmVkCitzb3VyY2UgZm9yIGVhY2ggb2YgdGhlIHRlbXBlcmF0dXJlIHNlbnNvcnMgaXMgcHJvdmlkZWQgaW4gdGVtcFhfbGFiZWwuCisKK1RlbXBlcmF0dXJlcyBhcmUgbWVhc3VyZWQgaW4gZGVncmVlcyBDZWxzaXVzIGFuZCBtZWFzdXJlbWVudCByZXNvbHV0aW9uIGlzCitlaXRoZXIgMSBkZWdDIG9yIDAuNSBkZWdDLCBkZXBlbmRpbmcgb24gdGhlIHRlbXBlcmF0dXJlIHNvdXJjZSBhbmQKK2NvbmZpZ3VyYXRpb24uIEFuIGFsYXJtIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB0ZW1wZXJhdHVyZSBnZXRzIGhpZ2hlciB0aGFuCit0aGUgaGlnaCBsaW1pdDsgaXQgc3RheXMgb24gdW50aWwgdGhlIHRlbXBlcmF0dXJlIGZhbGxzIGJlbG93IHRoZSBoeXN0ZXJlc2lzCit2YWx1ZS4gQWxhcm1zIGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgdGVtcDEgdG8gdGVtcDYsIGRlcGVuZGluZyBvbiB0aGUgY2hpcCB0eXBlLgorCitGYW4gcm90YXRpb24gc3BlZWRzIGFyZSByZXBvcnRlZCBpbiBSUE0gKHJvdGF0aW9ucyBwZXIgbWludXRlKS4gQW4gYWxhcm0gaXMKK3RyaWdnZXJlZCBpZiB0aGUgcm90YXRpb24gc3BlZWQgaGFzIGRyb3BwZWQgYmVsb3cgYSBwcm9ncmFtbWFibGUgbGltaXQuIE9uCitOQ1Q2Nzc1RiwgZmFuIHJlYWRpbmdzIGNhbiBiZSBkaXZpZGVkIGJ5IGEgcHJvZ3JhbW1hYmxlIGRpdmlkZXIgKDEsIDIsIDQsIDgsCisxNiwgMzIsIDY0IG9yIDEyOCkgdG8gZ2l2ZSB0aGUgcmVhZGluZ3MgbW9yZSByYW5nZSBvciBhY2N1cmFjeTsgdGhlIG90aGVyIGNoaXBzCitkbyBub3QgaGF2ZSBhIGZhbiBzcGVlZCBkaXZpZGVyLiBUaGUgZHJpdmVyIHNldHMgdGhlIG1vc3Qgc3VpdGFibGUgZmFuIGRpdmlzb3IKK2l0c2VsZjsgc3BlY2lmaWNhbGx5LCBpdCBpbmNyZWFzZXMgdGhlIGRpdmlkZXIgdmFsdWUgZWFjaCB0aW1lIGEgZmFuIHNwZWVkCityZWFkaW5nIHJldHVybnMgYW4gaW52YWxpZCB2YWx1ZSwgYW5kIGl0IHJlZHVjZXMgaXQgaWYgdGhlIGZhbiBzcGVlZCByZWFkaW5nCitpcyBsb3dlciB0aGFuIG9wdGltYWwuIFNvbWUgZmFucyBtaWdodCBub3QgYmUgcHJlc2VudCBiZWNhdXNlIHRoZXkgc2hhcmUgcGlucword2l0aCBvdGhlciBmdW5jdGlvbnMuCisKK1ZvbHRhZ2Ugc2Vuc29ycyAoYWxzbyBrbm93biBhcyBJTiBzZW5zb3JzKSByZXBvcnQgdGhlaXIgdmFsdWVzIGluIG1pbGxpdm9sdHMuCitBbiBhbGFybSBpcyB0cmlnZ2VyZWQgaWYgdGhlIHZvbHRhZ2UgaGFzIGNyb3NzZWQgYSBwcm9ncmFtbWFibGUgbWluaW11bQorb3IgbWF4aW11bSBsaW1pdC4KKworVGhlIGRyaXZlciBzdXBwb3J0cyBhdXRvbWF0aWMgZmFuIGNvbnRyb2wgbW9kZSBrbm93biBhcyBUaGVybWFsIENydWlzZS4KK0luIHRoaXMgbW9kZSwgdGhlIGNoaXAgYXR0ZW1wdHMgdG8ga2VlcCB0aGUgbWVhc3VyZWQgdGVtcGVyYXR1cmUgaW4gYQorcHJlZGVmaW5lZCB0ZW1wZXJhdHVyZSByYW5nZS4gSWYgdGhlIHRlbXBlcmF0dXJlIGdvZXMgb3V0IG9mIHJhbmdlLCBmYW4KK2lzIGRyaXZlbiBzbG93ZXIvZmFzdGVyIHRvIHJlYWNoIHRoZSBwcmVkZWZpbmVkIHJhbmdlIGFnYWluLgorCitUaGUgbW9kZSB3b3JrcyBmb3IgZmFuMS1mYW41LgorCitzeXNmcyBhdHRyaWJ1dGVzCistLS0tLS0tLS0tLS0tLS0tCisKK3B3bVsxLTVdIC0gdGhpcyBmaWxlIHN0b3JlcyBQV00gZHV0eSBjeWNsZSBvciBEQyB2YWx1ZSAoZmFuIHNwZWVkKSBpbiByYW5nZToKKwkgICAwIChsb3dlc3Qgc3BlZWQpIHRvIDI1NSAoZnVsbCkKKworcHdtWzEtNV1fZW5hYmxlIC0gdGhpcyBmaWxlIGNvbnRyb2xzIG1vZGUgb2YgZmFuL3RlbXBlcmF0dXJlIGNvbnRyb2w6CisJKiAwIEZhbiBjb250cm9sIGRpc2FibGVkIChmYW5zIHNldCB0byBtYXhpbXVtIHNwZWVkKQorCSogMSBNYW51YWwgbW9kZSwgd3JpdGUgdG8gcHdtWzAtNV0gYW55IHZhbHVlIDAtMjU1CisJKiAyICJUaGVybWFsIENydWlzZSIgbW9kZQorCSogMyAiRmFuIFNwZWVkIENydWlzZSIgbW9kZQorCSogNCAiU21hcnQgRmFuIElJSSIgbW9kZSAoTkNUNjc3NUYgb25seSkKKwkqIDUgIlNtYXJ0IEZhbiBJViIgbW9kZQorCitwd21bMS01XV9tb2RlIC0gY29udHJvbHMgaWYgb3V0cHV0IGlzIFBXTSBvciBEQyBsZXZlbAorICAgICAgICAqIDAgREMgb3V0cHV0CisgICAgICAgICogMSBQV00gb3V0cHV0CisKK0NvbW1vbiBmYW4gY29udHJvbCBhdHRyaWJ1dGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitwd21bMS01XV90ZW1wX3NlbAlUZW1wZXJhdHVyZSBzb3VyY2UuIFZhbHVlIGlzIHRlbXBlcmF0dXJlIHNlbnNvciBpbmRleC4KKwkJCUZvciBleGFtcGxlLCBzZWxlY3QgJzEnIGZvciB0ZW1wMV9pbnB1dC4KK3B3bVsxLTVdX3dlaWdodF90ZW1wX3NlbAorCQkJU2Vjb25kYXJ5IHRlbXBlcmF0dXJlIHNvdXJjZS4gVmFsdWUgaXMgdGVtcGVyYXR1cmUKKwkJCXNlbnNvciBpbmRleC4gRm9yIGV4YW1wbGUsIHNlbGVjdCAnMScgZm9yIHRlbXAxX2lucHV0LgorCQkJU2V0IHRvIDAgdG8gZGlzYWJsZSBzZWNvbmRhcnkgdGVtcGVyYXR1cmUgY29udHJvbC4KKworSWYgc2Vjb25kYXJ5IHRlbXBlcmF0dXJlIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZCwgaXQgaXMgY29udHJvbGxlZCB3aXRoIHRoZQorZm9sbG93aW5nIGF0dHJpYnV0ZXMuCisKK3B3bVsxLTVdX3dlaWdodF9kdXR5X3N0ZXAKKwkJCUR1dHkgc3RlcCBzaXplLgorcHdtWzEtNV1fd2VpZ2h0X3RlbXBfc3RlcAorCQkJVGVtcGVyYXR1cmUgc3RlcCBzaXplLiBXaXRoIGVhY2ggc3RlcCBvdmVyCisJCQl0ZW1wX3N0ZXBfYmFzZSwgdGhlIHZhbHVlIG9mIHdlaWdodF9kdXR5X3N0ZXAgaXMgYWRkZWQKKwkJCXRvIHRoZSBjdXJyZW50IHB3bSB2YWx1ZS4KK3B3bVsxLTVdX3dlaWdodF90ZW1wX3N0ZXBfYmFzZQorCQkJVGVtcGVyYXR1cmUgYXQgd2hpY2ggc2Vjb25kYXJ5IHRlbXBlcmF0dXJlIGNvbnRyb2wga2lja3MKKwkJCWluLgorcHdtWzEtNV1fd2VpZ2h0X3RlbXBfc3RlcF90b2wKKwkJCVRlbXBlcmF0dXJlIHN0ZXAgdG9sZXJhbmNlLgorCitUaGVybWFsIENydWlzZSBtb2RlICgyKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgdGhlIHRlbXBlcmF0dXJlIGlzIGluIHRoZSByYW5nZSBkZWZpbmVkIGJ5OgorCitwd21bMS01XV90YXJnZXRfdGVtcAlUYXJnZXQgdGVtcGVyYXR1cmUsIHVuaXQgbWlsbGlkZWdyZWUgQ2Vsc2l1cworCQkJKHJhbmdlIDAgLSAxMjcwMDApCitwd21bMS01XV90ZW1wX3RvbGVyYW5jZQorCQkJVGFyZ2V0IHRlbXBlcmF0dXJlIHRvbGVyYW5jZSwgdW5pdCBtaWxsaWRlZ3JlZSBDZWxzaXVzCisKK3RoZXJlIGFyZSBubyBjaGFuZ2VzIHRvIGZhbiBzcGVlZC4gT25jZSB0aGUgdGVtcGVyYXR1cmUgbGVhdmVzIHRoZSBpbnRlcnZhbCwgZmFuCitzcGVlZCBpbmNyZWFzZXMgKGlmIHRlbXBlcmF0dXJlIGlzIGhpZ2hlciB0aGF0IGRlc2lyZWQpIG9yIGRlY3JlYXNlcyAoaWYKK3RlbXBlcmF0dXJlIGlzIGxvd2VyIHRoYW4gZGVzaXJlZCksIHVzaW5nIHRoZSBmb2xsb3dpbmcgbGltaXRzIGFuZCB0aW1lCitpbnRlcnZhbHMuCisKK3B3bVsxLTVdX3N0YXJ0CQlmYW4gcHdtIHN0YXJ0IHZhbHVlIChyYW5nZSAxIC0gMjU1KSwgdG8gc3RhcnQgZmFuCisJCQl3aGVuIHRoZSB0ZW1wZXJhdHVyZSBpcyBhYm92ZSBkZWZpbmVkIHJhbmdlLgorcHdtWzEtNV1fZmxvb3IJCWxvd2VzdCBmYW4gcHdtIChyYW5nZSAwIC0gMjU1KSBpZiB0ZW1wZXJhdHVyZSBpcyBiZWxvdworCQkJdGhlIGRlZmluZWQgcmFuZ2UuIElmIHNldCB0byAwLCB0aGUgZmFuIGlzIGV4cGVjdGVkIHRvCisJCQlzdG9wIGlmIHRoZSB0ZW1wZXJhdHVyZSBpcyBiZWxvdyB0aGUgZGVmaW5lZCByYW5nZS4KK3B3bVsxLTVdX3N0ZXBfdXBfdGltZQltaWxsaXNlY29uZHMgYmVmb3JlIGZhbiBzcGVlZCBpcyBpbmNyZWFzZWQKK3B3bVsxLTVdX3N0ZXBfZG93bl90aW1lCW1pbGxpc2Vjb25kcyBiZWZvcmUgZmFuIHNwZWVkIGlzIGRlY3JlYXNlZAorcHdtWzEtNV1fc3RvcF90aW1lCWhvdyBtYW55IG1pbGxpc2Vjb25kcyBtdXN0IGVsYXBzZSB0byBzd2l0Y2gKKwkJCWNvcnJlc3BvbmRpbmcgZmFuIG9mZiAod2hlbiB0aGUgdGVtcGVyYXR1cmUgd2FzIGJlbG93CisJCQlkZWZpbmVkIHJhbmdlKS4KKworU3BlZWQgQ3J1aXNlIG1vZGUgKDMpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBtb2RlcyB0cmllcyB0byBrZWVwIHRoZSBmYW4gc3BlZWQgY29uc3RhbnQuCisKK2ZhblsxLTVdX3RhcmdldAkJVGFyZ2V0IGZhbiBzcGVlZAorZmFuWzEtNV1fdG9sZXJhbmNlCisJCQlUYXJnZXQgc3BlZWQgdG9sZXJhbmNlCisKKworVW50ZXN0ZWQ7IHVzZSBhdCB5b3VyIG93biByaXNrLgorCitTbWFydCBGYW4gSVYgbW9kZSAoNSkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIG1vZGUgb2ZmZXJzIG11bHRpcGxlIHNsb3BlcyB0byBjb250cm9sIHRoZSBmYW4gc3BlZWQuIFRoZSBzbG9wZXMgY2FuIGJlCitjb250cm9sbGVkIGJ5IHNldHRpbmcgdGhlIHB3bSBhbmQgdGVtcGVyYXR1cmUgYXR0cmlidXRlcy4gV2hlbiB0aGUgdGVtcGVyYXR1cmUKK3Jpc2VzLCB0aGUgY2hpcCB3aWxsIGNhbGN1bGF0ZSB0aGUgREMvUFdNIG91dHB1dCBiYXNlZCBvbiB0aGUgY3VycmVudCBzbG9wZS4KK1RoZXJlIGFyZSB1cCB0byBzZXZlbiBkYXRhIHBvaW50cyBkZXBlbmRpbmcgb24gdGhlIGNoaXAgdHlwZS4gU3Vic2VxdWVudCBkYXRhCitwb2ludHMgc2hvdWxkIGJlIHNldCB0byBoaWdoZXIgdGVtcGVyYXR1cmVzIGFuZCBoaWdoZXIgcHdtIHZhbHVlcyB0byBhY2hpZXZlCitoaWdoZXIgZmFuIHNwZWVkcyB3aXRoIGluY3JlYXNpbmcgdGVtcGVyYXR1cmUuIFRoZSBsYXN0IGRhdGEgcG9pbnQgcmVmbGVjdHMKK2NyaXRpY2FsIHRlbXBlcmF0dXJlIG1vZGUsIGluIHdoaWNoIHRoZSBmYW5zIHNob3VsZCBydW4gYXQgZnVsbCBzcGVlZC4KKworcHdtWzEtNV1fYXV0b19wb2ludFsxLTddX3B3bQorCQkJcHdtIHZhbHVlIHRvIGJlIHNldCBpZiB0ZW1wZXJhdHVyZSByZWFjaGVzIG1hdGNoaW5nCisJCQl0ZW1wZXJhdHVyZSByYW5nZS4KK3B3bVsxLTVdX2F1dG9fcG9pbnRbMS03XV90ZW1wCisJCQlUZW1wZXJhdHVyZSBvdmVyIHdoaWNoIHRoZSBtYXRjaGluZyBwd20gaXMgZW5hYmxlZC4KK3B3bVsxLTVdX3RlbXBfdG9sZXJhbmNlCisJCQlUZW1wZXJhdHVyZSB0b2xlcmFuY2UsIHVuaXQgbWlsbGlkZWdyZWUgQ2Vsc2l1cworcHdtWzEtNV1fY3JpdF90ZW1wX3RvbGVyYW5jZQorCQkJVGVtcGVyYXR1cmUgdG9sZXJhbmNlIGZvciBjcml0aWNhbCB0ZW1wZXJhdHVyZSwKKwkJCXVuaXQgbWlsbGlkZWdyZWUgQ2Vsc2l1cworCitwd21bMS01XV9zdGVwX3VwX3RpbWUJbWlsbGlzZWNvbmRzIGJlZm9yZSBmYW4gc3BlZWQgaXMgaW5jcmVhc2VkCitwd21bMS01XV9zdGVwX2Rvd25fdGltZQltaWxsaXNlY29uZHMgYmVmb3JlIGZhbiBzcGVlZCBpcyBkZWNyZWFzZWQKKworVXNhZ2UgTm90ZXMKKy0tLS0tLS0tLS0tCisKK09uIHZhcmlvdXMgQVNVUyBib2FyZHMgd2l0aCBOQ1Q2Nzc2RiwgaXQgYXBwZWFycyB0aGF0IENQVVRJTiBpcyBub3QgcmVhbGx5Citjb25uZWN0ZWQgdG8gYW55dGhpbmcgYW5kIGZsb2F0cywgb3IgdGhhdCBpdCBpcyBjb25uZWN0ZWQgdG8gc29tZSBub24tc3RhbmRhcmQKK3RlbXBlcmF0dXJlIG1lYXN1cmVtZW50IGRldmljZS4gQXMgYSByZXN1bHQsIHRoZSB0ZW1wZXJhdHVyZSByZXBvcnRlZCBvbiBDUFVUSU4KK3dpbGwgbm90IHJlZmxlY3QgYSB1c2FibGUgdmFsdWUuIEl0IG9mdGVuIHJlcG9ydHMgdW5yZWFzb25hYmx5IGhpZ2gKK3RlbXBlcmF0dXJlcywgYW5kIGluIHNvbWUgY2FzZXMgdGhlIHJlcG9ydGVkIHRlbXBlcmF0dXJlIGRlY2xpbmVzIGlmIHRoZSBhY3R1YWwKK3RlbXBlcmF0dXJlIGluY3JlYXNlcyAoc2ltaWxhciB0byB0aGUgcmF3IFBFQ0kgdGVtcGVyYXR1cmUgdmFsdWUgLSBzZWUgUEVDSQorc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscykuIENQVVRJTiBzaG91bGQgdGhlcmVmb3JlIGJlIGJlIGlnbm9yZWQgb24gQVNVUworYm9hcmRzLiBUaGUgQ1BVIHRlbXBlcmF0dXJlIG9uIEFTVVMgYm9hcmRzIGlzIHJlcG9ydGVkIGZyb20gUEVDSSAwLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9uY3Q3ODAyIGIvRG9jdW1lbnRhdGlvbi9od21vbi9uY3Q3ODAyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MzhkZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL25jdDc4MDIKQEAgLTAsMCArMSwzMSBAQAorS2VybmVsIGRyaXZlciBuY3Q3ODAyCis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIE51dm90b24gTkNUNzgwMlkKKyAgICBQcmVmaXg6ICduY3Q3ODAyJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgyOC4uMHgyZgorICAgIERhdGFzaGVldDogQXZhaWxhYmxlIGZyb20gTnV2b3RvbiB3ZWIgc2l0ZQorCitBdXRob3JzOgorICAgICAgICBHdWVudGVyIFJvZWNrIDxsaW51eEByb2Vjay11cy5uZXQ+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBOdXZvdG9uIE5DVDc4MDJZIGhhcmR3YXJlIG1vbml0b3JpbmcKK2NoaXAuIE5DVDc4MDJZIHN1cHBvcnRzIDYgdGVtcGVyYXR1cmUgc2Vuc29ycywgNSB2b2x0YWdlIHNlbnNvcnMsIGFuZCAzIGZhbgorc3BlZWQgc2Vuc29ycy4KKworU21hcnQgRmFu4oSiIHNwZWVkIGNvbnRyb2wgaXMgYXZhaWxhYmxlIHZpYSBwd21YX2F1dG9fcG9pbnQgYXR0cmlidXRlcy4KKworVGVzdGVkIEJvYXJkcyBhbmQgQklPUyBWZXJzaW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZHJpdmVyIGhhcyBiZWVuIHJlcG9ydGVkIHRvIHdvcmsgd2l0aCB0aGUgZm9sbG93aW5nIGJvYXJkcyBhbmQKK0JJT1MgdmVyc2lvbnMuCisKK0JvYXJkCQkJQklPUyB2ZXJzaW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0tvbnRyb24gQ09NZS1iU0MyCUNIUjJFOTM0LjAwMS5HR08KK0tvbnRyb24gQ09NZS1iSVAyCUNDUjJFMjEyCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL25jdDc5MDQgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL25jdDc5MDQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdmZmZlMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vbmN0NzkwNApAQCAtMCwwICsxLDYwIEBACitLZXJuZWwgZHJpdmVyIG5jdDc5MDQKKz09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwOgorICAqIE51dm90b24gTkNUNzkwNEQKKyAgICBQcmVmaXg6IG5jdDc5MDQKKyAgICBBZGRyZXNzZXM6IEkyQyAweDJkLCAweDJlCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgTnV2b3RvbiB3ZWJzaXRlCisJaHR0cDovL3d3dy5udXZvdG9uLmNvbS8KKworQXV0aG9yOiBWYWRpbSBWLiBWbGFzb3YgPHZ2bGFzb3ZAZGV2LnJ0c29mdC5ydT4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIE5DVDc5MDREIGlzIGEgaGFyZHdhcmUgbW9uaXRvciBzdXBwb3J0aW5nIHVwIHRvIDIwIHZvbHRhZ2Ugc2Vuc29ycywKK2ludGVybmFsIHRlbXBlcmF0dXJlIHNlbnNvciwgSW50ZWwgUEVDSSBhbmQgQU1EIFNCLVRTSSBDUFUgdGVtcGVyYXR1cmUKK2ludGVyZmFjZSwgdXAgdG8gMTIgZmFuIHRhY2hvbWV0ZXIgaW5wdXRzLCB1cCB0byA0IGZhbiBjb250cm9sIGNoYW5uZWxzCit3aXRoIFNtYXJ0RmFuLgorCisKK1N5c2ZzIGVudHJpZXMKKy0tLS0tLS0tLS0tLS0KKworQ3VycmVudGx5LCB0aGUgZHJpdmVyIHN1cHBvcnRzIG9ubHkgdGhlIGZvbGxvd2luZyBmZWF0dXJlczoKKworaW5bMS0yMF1faW5wdXQJCUlucHV0IHZvbHRhZ2UgbWVhc3VyZW1lbnRzIChtVikKKworZmFuWzEtMTJdX2lucHV0CQlGYW4gdGFjaG9tZXRlciBtZWFzdXJlbWVudHMgKHJwbSkKKwordGVtcDFfaW5wdXQJCUxvY2FsIHRlbXBlcmF0dXJlICgxLzEwMDAgZGVncmVlLAorCQkJMC4xMjUgZGVncmVlIHJlc29sdXRpb24pCisKK3RlbXBbMi05XV9pbnB1dAkJQ1BVIHRlbXBlcmF0dXJlcyAoMS8xMDAwIGRlZ3JlZSwKKwkJCTAuMTI1IGRlZ3JlZSByZXNvbHV0aW9uKQorCitwd21bMS00XV9lbmFibGUJCVIvVywgMS8yIGZvciBtYW51YWwgb3IgU21hcnRGYW4gbW9kZQorCQkJU2V0dGluZyBTbWFydEZhbiBtb2RlIGlzIHN1cHBvcnRlZCBvbmx5IGlmIGl0IGhhcyBiZWVuCisJCQlwcmV2aW91c2x5IGNvbmZpZ3VyZWQgYnkgQklPUyAob3IgY29uZmlndXJhdGlvbiBFRVBST00pCisKK3B3bVsxLTRdCQlSL08gaW4gU21hcnRGYW4gbW9kZSwgUi9XIGluIG1hbnVhbCBjb250cm9sIG1vZGUKKworVGhlIGRyaXZlciBjaGVja3Mgc2Vuc29yIGNvbnRyb2wgcmVnaXN0ZXJzIGFuZCBkb2VzIG5vdCBleHBvcnQgdGhlIHNlbnNvcnMKK3RoYXQgYXJlIG5vdCBlbmFibGVkLiBBbnl3YXksIGEgc2Vuc29yIHRoYXQgaXMgZW5hYmxlZCBtYXkgYWN0dWFsbHkgYmUgbm90Citjb25uZWN0ZWQgYW5kIHRodXMgcHJvdmlkZSB6ZXJvIHJlYWRpbmdzLgorCisKK0xpbWl0YXRpb25zCistLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIGN1cnJlbnQgdmVyc2lvbjoKKworIC0gU21hcnRGYW4gY29udHJvbAorIC0gV2F0Y2hkb2cKKyAtIEdQSU8KKyAtIGV4dGVybmFsIHRlbXBlcmF0dXJlIHNlbnNvcnMKKyAtIFNNSQorIC0gbWluL21heCB2YWx1ZXMKKyAtIG1hbnkgb3RoZXIuLi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vbnRjX3RoZXJtaXN0b3IgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL250Y190aGVybWlzdG9yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkNGNjODQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL250Y190aGVybWlzdG9yCkBAIC0wLDAgKzEsMTAwIEBACitLZXJuZWwgZHJpdmVyIG50Y190aGVybWlzdG9yCis9PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgdGhlcm1pc3RvcnMgZnJvbSBNdXJhdGE6CisqIE11cmF0YSBOVEMgVGhlcm1pc3RvcnMgTkNQMTVXQjQ3MywgTkNQMThXQjQ3MywgTkNQMjFXQjQ3MywgTkNQMDNXQjQ3MywKKyAgTkNQMTVXTDMzMywgTkNQMDNXRjEwNAorICBQcmVmaXhlczogJ25jcDE1d2I0NzMnLCAnbmNwMTh3YjQ3MycsICduY3AyMXdiNDczJywgJ25jcDAzd2I0NzMnLAorICAnbmNwMTV3bDMzMycsICduY3AwM3dmMTA0JworICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCBNdXJhdGEKKworU3VwcG9ydGVkIHRoZXJtaXN0b3JzIGZyb20gRVBDT1M6CisqIEVQQ09TIE5UQyBUaGVybWlzdG9ycyBCNTczMzBWMjEwMworICBQcmVmaXhlczogYjU3MzMwdjIxMDMKKyAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgRVBDT1MKKworT3RoZXIgTlRDIHRoZXJtaXN0b3JzIGNhbiBiZSBzdXBwb3J0ZWQgc2ltcGx5IGJ5IGFkZGluZyBjb21wZW5zYXRpb24KK3RhYmxlczsgZS5nLiwgTkNQMTVXTDMzMyBzdXBwb3J0IGlzIGFkZGVkIGJ5IHRoZSB0YWJsZSBuY3BYWHdsMzMzLgorCitBdXRob3JzOgorCU15dW5nSm9vIEhhbSA8bXl1bmdqb28uaGFtQHNhbXN1bmcuY29tPgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIE5UQyAoTmVnYXRpdmUgVGVtcGVyYXR1cmUgQ29lZmZpY2llbnQpIHRoZXJtaXN0b3IgaXMgYSBzaW1wbGUgdGhlcm1pc3RvcgordGhhdCByZXF1aXJlcyB1c2VycyB0byBwcm92aWRlIHRoZSByZXNpc3RhbmNlIGFuZCBsb29rdXAgdGhlIGNvcnJlc3BvbmRpbmcKK2NvbXBlbnNhdGlvbiB0YWJsZSB0byBnZXQgdGhlIHRlbXBlcmF0dXJlIGlucHV0LgorCitUaGUgTlRDIGRyaXZlciBwcm92aWRlcyBsb29rdXAgdGFibGVzIHdpdGggYSBsaW5lYXIgYXBwcm94aW1hdGlvbiBmdW5jdGlvbgorYW5kIGZvdXIgY2lyY3VpdCBtb2RlbHMgd2l0aCBhbiBvcHRpb24gbm90IHRvIHVzZSBhbnkgb2YgdGhlIGZvdXIgbW9kZWxzLgorCitUaGUgZm91ciBjaXJjdWl0IG1vZGVscyBwcm92aWRlZCBhcmU6CisKKwkkOiByZXNpc3RlciwgW1RIXTogdGhlIHRoZXJtaXN0b3IKKworIDEuIGNvbm5lY3QgPSBOVENfQ09OTkVDVEVEX1BPU0lUSVZFLCBwdWxsdXBfb2htID4gMAorCisgICBbcHVsbHVwX3VWXQorICAgICAgIHwgICAgfAorICAgICAgW1RIXSAgJCAocHVsbHVwX29obSkKKyAgICAgICB8ICAgIHwKKyAgICAgICArLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVtyZWFkX3VWXQorICAgICAgIHwKKyAgICAgICAkIChwdWxsZG93bl9vaG0pCisgICAgICAgfAorICAgICAgLS0tIChncm91bmQpCisKKyAyLiBjb25uZWN0ID0gTlRDX0NPTk5FQ1RFRF9QT1NJVElWRSwgcHVsbHVwX29obSA9IDAgKG5vdC1jb25uZWN0ZWQpCisKKyAgIFtwdWxsdXBfdVZdCisgICAgICAgfAorICAgICAgW1RIXQorICAgICAgIHwKKyAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVtyZWFkX3VWXQorICAgICAgIHwKKyAgICAgICAkIChwdWxsZG93bl9vaG0pCisgICAgICAgfAorICAgICAgLS0tIChncm91bmQpCisKKyAzLiBjb25uZWN0ID0gTlRDX0NPTk5FQ1RFRF9HUk9VTkQsIHB1bGxkb3duX29obSA+IDAKKworICAgW3B1bGx1cF91Vl0KKyAgICAgICB8CisgICAgICAgJCAocHVsbHVwX29obSkKKyAgICAgICB8CisgICAgICAgKy0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1bcmVhZF91Vl0KKyAgICAgICB8ICAgIHwKKyAgICAgIFtUSF0gICQgKHB1bGxkb3duX29obSkKKyAgICAgICB8ICAgIHwKKyAgICAgIC0tLS0tLS0tIChncm91bmQpCisKKyA0LiBjb25uZWN0ID0gTlRDX0NPTk5FQ1RFRF9HUk9VTkQsIHB1bGxkb3duX29obSA9IDAgKG5vdC1jb25uZWN0ZWQpCisKKyAgIFtwdWxsdXBfdVZdCisgICAgICAgfAorICAgICAgICQgKHB1bGx1cF9vaG0pCisgICAgICAgfAorICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tW3JlYWRfdVZdCisgICAgICAgfAorICAgICAgW1RIXQorICAgICAgIHwKKyAgICAgIC0tLSAoZ3JvdW5kKQorCitXaGVuIG9uZSBvZiB0aGUgZm91ciBjaXJjdWl0IG1vZGVscyBpcyB1c2VkLCByZWFkX3VWLCBwdWxsdXBfdVYsIHB1bGx1cF9vaG0sCitwdWxsZG93bl9vaG0sIGFuZCBjb25uZWN0IHNob3VsZCBiZSBwcm92aWRlZC4gV2hlbiBub25lIG9mIHRoZSBmb3VyIG1vZGVscworYXJlIHN1aXRhYmxlIG9yIHRoZSB1c2VyIGNhbiBnZXQgdGhlIHJlc2lzdGFuY2UgZGlyZWN0bHksIHRoZSB1c2VyIHNob3VsZAorcHJvdmlkZSByZWFkX29obSBhbmQgX25vdF8gcHJvdmlkZSB0aGUgb3RoZXJzLgorCitTeXNmcyBJbnRlcmZhY2UKKy0tLS0tLS0tLS0tLS0tLQorbmFtZQkJdGhlIG1hbmRhdG9yeSBnbG9iYWwgYXR0cmlidXRlLCB0aGUgdGhlcm1pc3RvciBuYW1lLgorCit0ZW1wMV90eXBlCWFsd2F5cyA0ICh0aGVybWlzdG9yKQorCQlSTworCit0ZW1wMV9pbnB1dAltZWFzdXJlIHRoZSB0ZW1wZXJhdHVyZSBhbmQgcHJvdmlkZSB0aGUgbWVhc3VyZWQgdmFsdWUuCisJCShyZWFkaW5nIHRoaXMgZmlsZSBpbml0aWF0ZXMgdGhlIHJlYWRpbmcgcHJvY2VkdXJlLikKKwkJUk8KKworTm90ZSB0aGF0IGVhY2ggTlRDIHRoZXJtaXN0b3IgaGFzIG9ubHkgX29uZV8gdGhlcm1pc3RvcjsgdGh1cywgb25seSB0ZW1wMSBleGlzdHMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3BjODczNjAgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3BjODczNjAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVmNWNmMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vcGM4NzM2MApAQCAtMCwwICsxLDE4NCBAQAorS2VybmVsIGRyaXZlciBwYzg3MzYwCis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgUEM4NzM2MCwgUEM4NzM2MywgUEM4NzM2NCwgUEM4NzM2NSBhbmQgUEM4NzM2NgorICAgIFByZWZpeGVzOiAncGM4NzM2MCcsICdwYzg3MzYzJywgJ3BjODczNjQnLCAncGM4NzM2NScsICdwYzg3MzY2JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBub25lLCBhZGRyZXNzIHJlYWQgZnJvbSBTdXBlciBJL08gY29uZmlnIHNwYWNlCisgICAgRGF0YXNoZWV0czogTm8gbG9uZ2VyIGF2YWlsYWJsZQorCitBdXRob3JzOiBKZWFuIERlbHZhcmUgPGpkZWx2YXJlQHN1c2UuZGU+CisKK1RoYW5rcyB0byBTYW5kZWVwIE1laHRhLCBUb25rbyBkZSBSb295IGFuZCBEYW5pZWwgQ2VyZWdhdHRpIGZvciB0ZXN0aW5nLgorVGhhbmtzIHRvIFJ1ZG9sZiBNYXJlayBmb3IgaGVscGluZyBtZSBpbnZlc3RpZ2F0ZSBjb252ZXJzaW9uIGlzc3Vlcy4KKworCitNb2R1bGUgUGFyYW1ldGVycworLS0tLS0tLS0tLS0tLS0tLS0KKworKiBpbml0IGludAorICBDaGlwIGluaXRpYWxpemF0aW9uIGxldmVsOgorICAgMDogTm9uZQorICAqMTogRm9yY2libHkgZW5hYmxlIGludGVybmFsIHZvbHRhZ2UgYW5kIHRlbXBlcmF0dXJlIGNoYW5uZWxzLCBleGNlcHQgaW45CisgICAyOiBGb3JjaWJseSBlbmFibGUgYWxsIHZvbHRhZ2UgYW5kIHRlbXBlcmF0dXJlIGNoYW5uZWxzLCBleGNlcHQgaW45CisgICAzOiBGb3JjaWJseSBlbmFibGUgYWxsIHZvbHRhZ2UgYW5kIHRlbXBlcmF0dXJlIGNoYW5uZWxzLCBpbmNsdWRpbmcgaW45CisKK05vdGUgdGhhdCB0aGlzIHBhcmFtZXRlciBoYXMgbm8gZWZmZWN0IGZvciB0aGUgUEM4NzM2MCwgUEM4NzM2MyBhbmQgUEM4NzM2NAorY2hpcHMuCisKK0Fsc28gbm90ZSB0aGF0IGZvciB0aGUgUEM4NzM2NiwgaW5pdGlhbGl6YXRpb24gbGV2ZWxzIDIgYW5kIDMgZG9uJ3QgZW5hYmxlCithbGwgdGVtcGVyYXR1cmUgY2hhbm5lbHMsIGJlY2F1c2Ugc29tZSBvZiB0aGVtIHNoYXJlIHBpbnMgd2l0aCBlYWNoIG90aGVyLAorc28gdGhleSBjYW4ndCBiZSB1c2VkIGF0IHRoZSBzYW1lIHRpbWUuCisKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIFBDODczNjAgU3VwZXIgSS9PIGNoaXAgY29udGFpbnMgbW9uaXRvcmluZyBhbmQKK1BXTSBjb250cm9sIGNpcmN1aXRyeSBmb3IgdHdvIGZhbnMuIFRoZSBQQzg3MzYzIGNoaXAgaXMgc2ltaWxhciwgYW5kIHRoZQorUEM4NzM2NCBjaGlwIGhhcyBtb25pdG9yaW5nIGFuZCBQV00gY29udHJvbCBmb3IgYSB0aGlyZCBmYW4uCisKK1RoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIFBDODczNjUgYW5kIFBDODczNjYgU3VwZXIgSS9PIGNoaXBzIGFyZSBjb21wbGV0ZQoraGFyZHdhcmUgbW9uaXRvcmluZyBjaGlwc2V0cywgbm90IG9ubHkgY29udHJvbGxpbmcgYW5kIG1vbml0b3JpbmcgdGhyZWUgZmFucywKK2J1dCBhbHNvIG1vbml0b3JpbmcgZWxldmVuIHZvbHRhZ2UgaW5wdXRzIGFuZCB0d28gKFBDODczNjUpIG9yIHVwIHRvIGZvdXIKKyhQQzg3MzY2KSB0ZW1wZXJhdHVyZXMuCisKKyAgQ2hpcCAgICAgICAgI3ZpbiAgICAjZmFuICAgICNwd20gICAgI3RlbXAgICBkZXZpZAorCisgIFBDODczNjAgICAgIC0gICAgICAgMiAgICAgICAyICAgICAgIC0gICAgICAgMHhFMQorICBQQzg3MzYzICAgICAtICAgICAgIDIgICAgICAgMiAgICAgICAtICAgICAgIDB4RTgKKyAgUEM4NzM2NCAgICAgLSAgICAgICAzICAgICAgIDMgICAgICAgLSAgICAgICAweEU0CisgIFBDODczNjUgICAgIDExICAgICAgMyAgICAgICAzICAgICAgIDIgICAgICAgMHhFNQorICBQQzg3MzY2ICAgICAxMSAgICAgIDMgICAgICAgMyAgICAgICAzLTQgICAgIDB4RTkKKworVGhlIGRyaXZlciBhc3N1bWVzIHRoYXQgbm8gbW9yZSB0aGFuIG9uZSBjaGlwIGlzIHByZXNlbnQsIGFuZCBvbmUgb2YgdGhlCitzdGFuZGFyZCBTdXBlciBJL08gYWRkcmVzc2VzIGlzIHVzZWQgKDB4MkUvMHgyRiBvciAweDRFLzB4NEYpCisKK0ZhbiBNb25pdG9yaW5nCistLS0tLS0tLS0tLS0tLQorCitGYW4gcm90YXRpb24gc3BlZWRzIGFyZSByZXBvcnRlZCBpbiBSUE0gKHJldm9sdXRpb25zIHBlciBtaW51dGUpLiBBbiBhbGFybQoraXMgdHJpZ2dlcmVkIGlmIHRoZSByb3RhdGlvbiBzcGVlZCBoYXMgZHJvcHBlZCBiZWxvdyBhIHByb2dyYW1tYWJsZSBsaW1pdC4KK0EgZGlmZmVyZW50IGFsYXJtIGlzIHRyaWdnZXJlZCBpZiB0aGUgZmFuIHNwZWVkIGlzIHRvbyBsb3cgdG8gYmUgbWVhc3VyZWQuCisKK0ZhbiByZWFkaW5ncyBhcmUgYWZmZWN0ZWQgYnkgYSBwcm9ncmFtbWFibGUgY2xvY2sgZGl2aWRlciwgZ2l2aW5nIHRoZQorcmVhZGluZ3MgbW9yZSByYW5nZSBvciBhY2N1cmFjeS4gVXN1YWxseSwgdXNlcnMgaGF2ZSB0byBsZWFybiBob3cgaXQgd29ya3MsCitidXQgdGhpcyBkcml2ZXIgaW1wbGVtZW50cyBkeW5hbWljIGNsb2NrIGRpdmlkZXIgc2VsZWN0aW9uLCBzbyB5b3UgZG9uJ3QKK2hhdmUgdG8gY2FyZSBubyBtb3JlLgorCitGb3IgcmVmZXJlbmNlLCBoZXJlIGFyZSBhIGZldyB2YWx1ZXMgYWJvdXQgY2xvY2sgZGl2aWRlcnM6CisKKyAgICAgICAgICAgICAgICBzbG93ZXN0ICAgICAgICAgYWNjdXJhY3kgICAgICAgIGhpZ2hlc3QKKyAgICAgICAgICAgICAgICBtZWFzdXJhYmxlICAgICAgYXJvdW5kIDMwMDAgICAgIGFjY3VyYXRlCisgICAgZGl2aWRlciAgICAgc3BlZWQgKFJQTSkgICAgIFJQTSAoUlBNKSAgICAgICBzcGVlZCAoUlBNKQorICAgICAgICAgMSAgICAgICAgMTg4MiAgICAgICAgICAgICAgMTggICAgICAgICAgIDY5MjgKKyAgICAgICAgIDIgICAgICAgICA5NDEgICAgICAgICAgICAgIDM3ICAgICAgICAgICA0ODk4CisgICAgICAgICA0ICAgICAgICAgNDcwICAgICAgICAgICAgICA3NCAgICAgICAgICAgMzQ2NAorICAgICAgICAgOCAgICAgICAgIDIzNSAgICAgICAgICAgICAxNTAgICAgICAgICAgIDI0NDkKKworRm9yIHRoZSBjdXJpb3VzLCBoZXJlIGlzIGhvdyB0aGUgdmFsdWVzIGFib3ZlIHdlcmUgY29tcHV0ZWQ6CisgKiBzbG93ZXN0IG1lYXN1cmFibGUgc3BlZWQ6IGNsb2NrLygyNTUqZGl2aWRlcikKKyAqIGFjY3VyYWN5IGFyb3VuZCAzMDAwIFJQTTogMzAwMF4yL2Nsb2NrCisgKiBoaWdoZXN0IGFjY3VyYXRlIHNwZWVkOiBzcXJ0KGNsb2NrKjEwMCkKK1RoZSBjbG9jayBzcGVlZCBmb3IgdGhlIFBDODczNjAgZmFtaWx5IGlzIDQ4MCBrSHouIEkgYXJiaXRyYXJpbHkgY2hvc2UgMTAwCitSUE0gYXMgdGhlIGxvd2VzdCBhY2NlcHRhYmxlIGFjY3VyYWN5LgorCitBcyBtZW50aW9uZWQgYWJvdmUsIHlvdSBkb24ndCBoYXZlIHRvIGNhcmUgYWJvdXQgdGhpcyBubyBtb3JlLgorCitOb3RlIHRoYXQgbm90IGFsbCBSUE0gdmFsdWVzIGNhbiBiZSByZXByZXNlbnRlZCwgZXZlbiB3aGVuIHRoZSBiZXN0IGNsb2NrCitkaXZpZGVyIGlzIHNlbGVjdGVkLiBUaGlzIGlzIG5vdCBvbmx5IHRydWUgZm9yIHRoZSBtZWFzdXJlZCBzcGVlZHMsIGJ1dAorYWxzbyBmb3IgdGhlIHByb2dyYW1tYWJsZSBsb3cgbGltaXRzLCBzbyBkb24ndCBiZSBzdXJwcmlzZWQgaWYgeW91IHRyeSB0bworc2V0LCBzYXksIGZhbjFfbWluIHRvIDI5MDAgYW5kIGl0IGZpbmFsbHkgcmVhZHMgMjkwOS4KKworCitGYW4gQ29udHJvbAorLS0tLS0tLS0tLS0KKworUFdNIChwdWxzZSB3aWR0aCBtb2R1bGF0aW9uKSB2YWx1ZXMgcmFuZ2UgZnJvbSAwIHRvIDI1NSwgd2l0aCAwIG1lYW5pbmcKK3RoYXQgdGhlIGZhbiBpcyBzdG9wcGVkLCBhbmQgMjU1IG1lYW5pbmcgdGhhdCB0aGUgZmFuIGdvZXMgYXQgZnVsbCBzcGVlZC4KKworQmUgZXh0cmVtZWx5IGNhcmVmdWwgd2hlbiBjaGFuZ2luZyBQV00gdmFsdWVzLiBMb3cgUFdNIHZhbHVlcywgZXZlbgorbm9uLXplcm8sIGNhbiBzdG9wIHRoZSBmYW4sIHdoaWNoIG1heSBjYXVzZSBpcnJldmVyc2libGUgZGFtYWdlIHRvIHlvdXIKK2hhcmR3YXJlIGlmIHRlbXBlcmF0dXJlIGluY3JlYXNlcyB0b28gbXVjaC4gV2hlbiBjaGFuZ2luZyBQV00gdmFsdWVzLCBnbworc3RlcCBieSBzdGVwIGFuZCBrZWVwIGFuIGV5ZSBvbiB0ZW1wZXJhdHVyZXMuCisKK09uZSB1c2VyIHJlcG9ydGVkIHByb2JsZW1zIHdpdGggUFdNLiBDaGFuZ2luZyBQV00gdmFsdWVzIHdvdWxkIGJyZWFrIGZhbgorc3BlZWQgcmVhZGluZ3MuIE5vIGV4cGxhbmF0aW9uIG5vciBmaXggY291bGQgYmUgZm91bmQuCisKKworVGVtcGVyYXR1cmUgTW9uaXRvcmluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUZW1wZXJhdHVyZXMgYXJlIHJlcG9ydGVkIGluIGRlZ3JlZXMgQ2Vsc2l1cy4gRWFjaCB0ZW1wZXJhdHVyZSBtZWFzdXJlZCBoYXMKK2Fzc29jaWF0ZWQgbG93LCBoaWdoIGFuZCBvdmVydGVtcGVyYXR1cmUgbGltaXRzLCBlYWNoIG9mIHdoaWNoIHRyaWdnZXJzIGFuCithbGFybSB3aGVuIGNyb3NzZWQuCisKK1RoZSBmaXJzdCB0d28gdGVtcGVyYXR1cmUgY2hhbm5lbHMgYXJlIGV4dGVybmFsLiBUaGUgdGhpcmQgb25lIChQQzg3MzY2Citvbmx5KSBpcyBpbnRlcm5hbC4KKworVGhlIFBDODczNjYgaGFzIHRocmVlIGFkZGl0aW9uYWwgdGVtcGVyYXR1cmUgY2hhbm5lbHMsIGJhc2VkIG9uCit0aGVybWlzdG9ycyAoYXMgb3Bwb3NlZCB0byB0aGVybWFsIGRpb2RlcyBmb3IgdGhlIGZpcnN0IHRocmVlIHRlbXBlcmF0dXJlCitjaGFubmVscykuIEZvciB0ZWNobmljYWwgcmVhc29ucywgdGhlc2UgY2hhbm5lbHMgYXJlIGhlbGQgYnkgdGhlIFZMTQorKHZvbHRhZ2UgbGV2ZWwgbW9uaXRvcikgbG9naWNhbCBkZXZpY2UsIG5vdCB0aGUgVE1TICh0ZW1wZXJhdHVyZQorbWVhc3VyZW1lbnQpIG9uZS4gQXMgYSBjb25zZXF1ZW5jZSwgdGhlc2UgdGVtcGVyYXR1cmVzIGFyZSBleHBvcnRlZCBhcwordm9sdGFnZXMsIGFuZCBjb252ZXJ0ZWQgaW50byB0ZW1wZXJhdHVyZXMgaW4gdXNlci1zcGFjZS4KKworTm90ZSB0aGF0IHRoZXNlIHRocmVlIGFkZGl0aW9uYWwgY2hhbm5lbHMgc2hhcmUgdGhlaXIgcGlucyB3aXRoIHRoZQorZXh0ZXJuYWwgdGhlcm1hbCBkaW9kZSBjaGFubmVscywgc28geW91IChwaHlzaWNhbGx5KSBjYW4ndCB1c2UgdGhlbSBhbGwgYXQKK3RoZSBzYW1lIHRpbWUuIEFsdGhvdWdoIGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBtaXggdGhlIHR3byBzZW5zb3IgdHlwZXMsCit0aGUgZG9jdW1lbnRzIGZyb20gTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBzdWdnZXN0IHRoYXQgbW90aGVyYm9hcmQKK21hbnVmYWN0dXJlcnMgc2hvdWxkIGNob29zZSBvbmUgdHlwZSBhbmQgc3RpY2sgdG8gaXQuIFNvIHlvdSB3aWxsIG1vcmUKK2xpa2VseSBoYXZlIGVpdGhlciBjaGFubmVscyAxIHRvIDMgKHRoZXJtYWwgZGlvZGVzKSBvciAzIHRvIDYgKGludGVybmFsCit0aGVybWFsIGRpb2RlLCBhbmQgdGhlcm1pc3RvcnMpLgorCisKK1ZvbHRhZ2UgTW9uaXRvcmluZworLS0tLS0tLS0tLS0tLS0tLS0tCisKK1ZvbHRhZ2VzIGFyZSByZXBvcnRlZCByZWxhdGl2ZWx5IHRvIGEgcmVmZXJlbmNlIHZvbHRhZ2UsIGVpdGhlciBpbnRlcm5hbCBvcgorZXh0ZXJuYWwuIFNvbWUgb2YgdGhlbSAoaW43OlZzYiwgaW44OlZkZCBhbmQgaW4xMDpBVmRkKSBhcmUgZGl2aWRlZCBieSB0d28KK2ludGVybmFsbHksIHlvdSB3aWxsIGhhdmUgdG8gY29tcGVuc2F0ZSBpbiBzZW5zb3JzLmNvbmYuIE90aGVycyAoaW4wIHRvIGluNikKK2FyZSBsaWtlbHkgdG8gYmUgZGl2aWRlZCBleHRlcm5hbGx5LiBUaGUgbWVhbmluZyBvZiBlYWNoIG9mIHRoZXNlIGlucHV0cyBhcword2VsbCBhcyB0aGUgdmFsdWVzIG9mIHRoZSByZXNpc3RvcnMgdXNlZCBmb3IgZGl2aXNpb24gaXMgbGVmdCB0byB0aGUKK21vdGhlcmJvYXJkIG1hbnVmYWN0dXJlcnMsIHNvIHlvdSB3aWxsIGhhdmUgdG8gZG9jdW1lbnQgeW91cnNlbGYgYW5kIGVkaXQKK3NlbnNvcnMuY29uZiBhY2NvcmRpbmdseS4gTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBoYXMgYSBkb2N1bWVudCB3aXRoCityZWNvbW1lbmRlZCByZXNpc3RvciB2YWx1ZXMgZm9yIHNvbWUgdm9sdGFnZXMsIGJ1dCB0aGlzIHN0aWxsIGxlYXZlcyBtdWNoCityb29tIGZvciBwZXIgbW90aGVyYm9hcmQgc3BlY2lmaWNpdGllcywgdW5mb3J0dW5hdGVseS4gRXZlbiB3b3JzZSwKK21vdGhlcmJvYXJkIG1hbnVmYWN0dXJlcnMgZG9uJ3Qgc2VlbSB0byBjYXJlIGFib3V0IE5hdGlvbmFsIFNlbWljb25kdWN0b3IncworcmVjb21tZW5kYXRpb25zLgorCitFYWNoIHZvbHRhZ2UgbWVhc3VyZWQgaGFzIGFzc29jaWF0ZWQgbG93IGFuZCBoaWdoIGxpbWl0cywgZWFjaCBvZiB3aGljaAordHJpZ2dlcnMgYW4gYWxhcm0gd2hlbiBjcm9zc2VkLgorCitXaGVuIGF2YWlsYWJsZSwgVklEIGlucHV0cyBhcmUgdXNlZCB0byBwcm92aWRlIHRoZSBub21pbmFsIENQVSBDb3JlIHZvbHRhZ2UuCitUaGUgZHJpdmVyIHdpbGwgZGVmYXVsdCB0byBWUk0gOS4wLCBidXQgdGhpcyBjYW4gYmUgY2hhbmdlZCBmcm9tIHVzZXItc3BhY2UuCitUaGUgY2hpcHNldHMgY2FuIGhhbmRsZSB0d28gc2V0cyBvZiBWSUQgaW5wdXRzIChvbiBkdWFsLUNQVSBzeXN0ZW1zKSwgYnV0Cit0aGUgZHJpdmVyIHdpbGwgb25seSBleHBvcnQgb25lIGZvciBub3cuIFRoaXMgbWF5IGNoYW5nZSBsYXRlciBpZiB0aGVyZSBpcworYSBuZWVkLgorCisKK0dlbmVyYWwgUmVtYXJrcworLS0tLS0tLS0tLS0tLS0tCisKK0lmIGFuIGFsYXJtIHRyaWdnZXJzLCBpdCB3aWxsIHJlbWFpbiB0cmlnZ2VyZWQgdW50aWwgdGhlIGhhcmR3YXJlIHJlZ2lzdGVyCitpcyByZWFkIGF0IGxlYXN0IG9uY2UuIFRoaXMgbWVhbnMgdGhhdCB0aGUgY2F1c2UgZm9yIHRoZSBhbGFybSBtYXkgYWxyZWFkeQoraGF2ZSBkaXNhcHBlYXJlZCEgTm90ZSB0aGF0IGFsbCBoYXJkd2FyZSByZWdpc3RlcnMgYXJlIHJlYWQgd2hlbmV2ZXIgYW55CitkYXRhIGlzIHJlYWQgKHVubGVzcyBpdCBpcyBsZXNzIHRoYW4gMiBzZWNvbmRzIHNpbmNlIHRoZSBsYXN0IHVwZGF0ZSwgaW4KK3doaWNoIGNhc2UgY2FjaGVkIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW5zdGVhZCkuIEFzIGEgY29uc2VxdWVuY2UsIHdoZW4KK2Egb25jZS1vbmx5IGFsYXJtIHRyaWdnZXJzLCBpdCBtYXkgdGFrZSAyIHNlY29uZHMgZm9yIGl0IHRvIHNob3csIGFuZCAyCittb3JlIHNlY29uZHMgZm9yIGl0IHRvIGRpc2FwcGVhci4KKworTW9uaXRvcmluZyBvZiBpbjkgaXNuJ3QgZW5hYmxlZCBhdCBsb3dlciBpbml0IGxldmVscyAoPDMpIGJlY2F1c2UgdGhhdAorY2hhbm5lbCBtZWFzdXJlcyB0aGUgYmF0dGVyeSB2b2x0YWdlIChWYmF0KS4gSXQgaXMgYSBrbm93biBmYWN0IHRoYXQKK3JlcGVhdGVkbHkgc2FtcGxpbmcgdGhlIGJhdHRlcnkgdm9sdGFnZSByZWR1Y2VzIGl0cyBsaWZldGltZS4gTmF0aW9uYWwKK1NlbWljb25kdWN0b3Igc21hcnRseSBkZXNpZ25lZCB0aGVpciBjaGlwc2V0IHNvIHRoYXQgaW45IGlzIHNhbXBsZWQgb25seQorb25jZSBldmVyeSAxMDI0IHNhbXBsaW5nIGN5Y2xlcyAodGhhdCBpcyBldmVyeSAzNCBtaW51dGVzIGF0IHRoZSBkZWZhdWx0CitzYW1wbGluZyByYXRlKSwgc28gdGhlIGVmZmVjdCBpcyBhdHRlbnVhdGVkLCBidXQgc3RpbGwgcHJlc2VudC4KKworCitMaW1pdGF0aW9ucworLS0tLS0tLS0tLS0KKworVGhlIGRhdGFzaGVldHMgc3VnZ2VzdHMgdGhhdCBzb21lIHZhbHVlcyAoZmFuIG1pbnMsIGZhbiBkaXZpZGVycykKK3Nob3VsZG4ndCBiZSBjaGFuZ2VkIG9uY2UgdGhlIG1vbml0b3JpbmcgaGFzIHN0YXJ0ZWQsIGJ1dCB3ZSBpZ25vcmUgdGhhdAorcmVjb21tZW5kYXRpb24uIFdlJ2xsIHJlY29uc2lkZXIgaWYgaXQgYWN0dWFsbHkgY2F1c2VzIHRyb3VibGUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3BjODc0MjcgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3BjODc0MjcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMxM2ViNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vcGM4NzQyNwpAQCAtMCwwICsxLDU5IEBACitLZXJuZWwgZHJpdmVyIHBjODc0MjcKKz09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBQQzg3NDI3CisgICAgUHJlZml4OiAncGM4NzQyNycKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZSwgYWRkcmVzcyByZWFkIGZyb20gU3VwZXIgSS9PIGNvbmZpZyBzcGFjZQorICAgIERhdGFzaGVldDogTm8gbG9uZ2VyIGF2YWlsYWJsZQorCitBdXRob3I6IEplYW4gRGVsdmFyZSA8amRlbHZhcmVAc3VzZS5kZT4KKworVGhhbmtzIHRvIEFtaXIgSGFiaWJpIGF0IENhbmRlbGlzIGZvciBzZXR0aW5nIHVwIGEgdGVzdCBzeXN0ZW0sIGFuZCB0bworTWljaGFlbCBLcmVzcyBmb3IgdGVzdGluZyBzZXZlcmFsIGl0ZXJhdGlvbnMgb2YgdGhpcyBkcml2ZXIuCisKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoZSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIFN1cGVyIEkvTyBjaGlwIGluY2x1ZGVzIGNvbXBsZXRlIGhhcmR3YXJlCittb25pdG9yaW5nIGNhcGFiaWxpdGllcy4gSXQgY2FuIG1vbml0b3IgdXAgdG8gMTggdm9sdGFnZXMsIDggZmFucyBhbmQKKzYgdGVtcGVyYXR1cmUgc2Vuc29ycy4gT25seSB0aGUgZmFucyBhbmQgdGVtcGVyYXR1cmVzIGFyZSBzdXBwb3J0ZWQgYXQKK3RoZSBtb21lbnQsIHZvbHRhZ2VzIGFyZW4ndC4KKworVGhpcyBjaGlwIGFsc28gaGFzIGZhbiBjb250cm9sbGluZyBmZWF0dXJlcyAodXAgdG8gNCBQV00gb3V0cHV0cyksCit3aGljaCBhcmUgcGFydGx5IHN1cHBvcnRlZCBieSB0aGlzIGRyaXZlci4KKworVGhlIGRyaXZlciBhc3N1bWVzIHRoYXQgbm8gbW9yZSB0aGFuIG9uZSBjaGlwIGlzIHByZXNlbnQsIHdoaWNoIHNlZW1zCityZWFzb25hYmxlLgorCisKK0ZhbiBNb25pdG9yaW5nCistLS0tLS0tLS0tLS0tLQorCitGYW4gcm90YXRpb24gc3BlZWRzIGFyZSByZXBvcnRlZCBhcyAxNC1iaXQgdmFsdWVzIGZyb20gYSBnYXRlZCBjbG9jaworc2lnbmFsLiBTcGVlZHMgZG93biB0byA4MyBSUE0gY2FuIGJlIG1lYXN1cmVkLgorCitBbiBhbGFybSBpcyB0cmlnZ2VyZWQgaWYgdGhlIHJvdGF0aW9uIHNwZWVkIGRyb3BzIGJlbG93IGEgcHJvZ3JhbW1hYmxlCitsaW1pdC4gQW5vdGhlciBhbGFybSBpcyB0cmlnZ2VyZWQgaWYgdGhlIHNwZWVkIGlzIHRvbyBsb3cgdG8gYmUgbWVhc3VyZWQKKyhpbmNsdWRpbmcgc3RhbGxlZCBvciBtaXNzaW5nIGZhbikuCisKKworRmFuIFNwZWVkIENvbnRyb2wKKy0tLS0tLS0tLS0tLS0tLS0tCisKK0ZhbiBzcGVlZCBjYW4gYmUgY29udHJvbGxlZCBieSBQV00gb3V0cHV0cy4gVGhlcmUgYXJlIDQgcG9zc2libGUgbW9kZXM6CithbHdheXMgb2ZmLCBhbHdheXMgb24sIG1hbnVhbCBhbmQgYXV0b21hdGljLiBUaGUgbGF0dGVyIGlzbid0IHN1cHBvcnRlZAorYnkgdGhlIGRyaXZlcjogeW91IGNhbiBvbmx5IHJldHVybiB0byB0aGF0IG1vZGUgaWYgaXQgd2FzIHRoZSBvcmlnaW5hbAorc2V0dGluZywgYW5kIHRoZSBjb25maWd1cmF0aW9uIGludGVyZmFjZSBpcyBtaXNzaW5nLgorCisKK1RlbXBlcmF0dXJlIE1vbml0b3JpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIFBDODc0MjcgcmVsaWVzIG9uIGV4dGVybmFsIHNlbnNvcnMgKGZvbGxvd2luZyB0aGUgU2Vuc29yUGF0aAorc3RhbmRhcmQpLCBzbyB0aGUgcmVzb2x1dGlvbiBhbmQgcmFuZ2UgZGVwZW5kIG9uIHRoZSB0eXBlIG9mIHNlbnNvcgorY29ubmVjdGVkLiBUaGUgaW50ZWdlciBwYXJ0IGNhbiBiZSA4LWJpdCBvciA5LWJpdCwgYW5kIGNhbiBiZSBzaWduZWQgb3IKK25vdC4gSSBjb3VsZG4ndCBmaW5kIGEgd2F5IHRvIGZpZ3VyZSBvdXQgdGhlIGV4dGVybmFsIHNlbnNvciBkYXRhCit0ZW1wZXJhdHVyZSBmb3JtYXQsIHNvIHVzZXItc3BhY2UgYWRqdXN0bWVudCAodHlwaWNhbGx5IGJ5IGEgZmFjdG9yIDIpCittYXkgYmUgcmVxdWlyZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3BjZjg1OTEgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3BjZjg1OTEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ3YzA3MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vcGNmODU5MQpAQCAtMCwwICsxLDkwIEBACitLZXJuZWwgZHJpdmVyIHBjZjg1OTEKKz09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogUGhpbGlwcy9OWFAgUENGODU5MQorICAgIFByZWZpeDogJ3BjZjg1OTEnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IG5vbmUKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgTlhQIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubnhwLmNvbS9waXAvUENGODU5MV82Lmh0bWwKKworQXV0aG9yczoKKyAgICAgICAgQXVyZWxpZW4gSmFybm8gPGF1cmVsaWVuQGF1cmVsMzIubmV0PgorICAgICAgICB2YWx1YWJsZSBjb250cmlidXRpb25zIGJ5IEphbiBNLiBTZW5kbGVyIDxzZW5kbGVyQHNlbmRsZXIuZGU+LAorICAgICAgICBKZWFuIERlbHZhcmUgPGpkZWx2YXJlQHN1c2UuZGU+CisKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoZSBQQ0Y4NTkxIGlzIGFuIDgtYml0IEEvRCBhbmQgRC9BIGNvbnZlcnRlciAoNCBhbmFsb2cgaW5wdXRzIGFuZCBvbmUKK2FuYWxvZyBvdXRwdXQpIGZvciB0aGUgSTJDIGJ1cyBwcm9kdWNlZCBieSBQaGlsaXBzIFNlbWljb25kdWN0b3JzIChub3cgTlhQKS4KK0l0IGlzIGRlc2lnbmVkIHRvIHByb3ZpZGUgYSBieXRlIEkyQyBpbnRlcmZhY2UgdG8gdXAgdG8gNCBzZXBhcmF0ZSBkZXZpY2VzLgorCitUaGUgUENGODU5MSBoYXMgNCBhbmFsb2cgaW5wdXRzIHByb2dyYW1tYWJsZSBhcyBzaW5nbGUtZW5kZWQgb3IKK2RpZmZlcmVudGlhbCBpbnB1dHMgOgorLSBtb2RlIDAgOiBmb3VyIHNpbmdsZSBlbmRlZCBpbnB1dHMKKyAgICAgICAgUGlucyBBSU4wIHRvIEFJTjMgYXJlIHNpbmdsZSBlbmRlZCBpbnB1dHMgZm9yIGNoYW5uZWxzIDAgdG8gMworCistIG1vZGUgMSA6IHRocmVlIGRpZmZlcmVudGlhbCBpbnB1dHMKKyAgICAgICAgUGlucyBBSU4zIGlzIHRoZSBjb21tb24gbmVnYXRpdmUgZGlmZmVyZW50aWFsIGlucHV0CisgICAgICAgIFBpbnMgQUlOMCB0byBBSU4yIGFyZSBwb3NpdGl2ZSBkaWZmZXJlbnRpYWwgaW5wdXRzIGZvciBjaGFubmVscyAwIHRvIDIKKworLSBtb2RlIDIgOiBzaW5nbGUgZW5kZWQgYW5kIGRpZmZlcmVudGlhbCBtaXhlZAorICAgICAgICBQaW5zIEFJTjAgYW5kIEFJTjEgYXJlIHNpbmdsZSBlbmRlZCBpbnB1dHMgZm9yIGNoYW5uZWxzIDAgYW5kIDEKKyAgICAgICAgUGlucyBBSU4yIGlzIHRoZSBwb3NpdGl2ZSBkaWZmZXJlbnRpYWwgaW5wdXQgZm9yIGNoYW5uZWwgMworICAgICAgICBQaW5zIEFJTjMgaXMgdGhlIG5lZ2F0aXZlIGRpZmZlcmVudGlhbCBpbnB1dCBmb3IgY2hhbm5lbCAzCisKKy0gbW9kZSAzIDogdHdvIGRpZmZlcmVudGlhbCBpbnB1dHMKKyAgICAgICAgUGlucyBBSU4wIGlzIHRoZSBwb3NpdGl2ZSBkaWZmZXJlbnRpYWwgaW5wdXQgZm9yIGNoYW5uZWwgMAorICAgICAgICBQaW5zIEFJTjEgaXMgdGhlIG5lZ2F0aXZlIGRpZmZlcmVudGlhbCBpbnB1dCBmb3IgY2hhbm5lbCAwCisgICAgICAgIFBpbnMgQUlOMiBpcyB0aGUgcG9zaXRpdmUgZGlmZmVyZW50aWFsIGlucHV0IGZvciBjaGFubmVsIDEKKyAgICAgICAgUGlucyBBSU4zIGlzIHRoZSBuZWdhdGl2ZSBkaWZmZXJlbnRpYWwgaW5wdXQgZm9yIGNoYW5uZWwgMQorCitTZWUgdGhlIGRhdGFzaGVldCBmb3IgZGV0YWlscy4KKworTW9kdWxlIHBhcmFtZXRlcnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKyogaW5wdXRfbW9kZSBpbnQKKworICAgIEFuYWxvZyBpbnB1dCBtb2RlOgorICAgICAgICAgMCA9IGZvdXIgc2luZ2xlIGVuZGVkIGlucHV0cworICAgICAgICAgMSA9IHRocmVlIGRpZmZlcmVudGlhbCBpbnB1dHMKKyAgICAgICAgIDIgPSBzaW5nbGUgZW5kZWQgYW5kIGRpZmZlcmVudGlhbCBtaXhlZAorICAgICAgICAgMyA9IHR3byBkaWZmZXJlbnRpYWwgaW5wdXRzCisKKworQWNjZXNzaW5nIFBDRjg1OTEgdmlhIC9zeXMgaW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBQQ0Y4NTkxIGlzIHBsYWlubHkgaW1wb3NzaWJsZSB0byBkZXRlY3QhIFRodXMgdGhlIGRyaXZlciB3b24ndCBldmVuCit0cnkuIFlvdSBoYXZlIHRvIGV4cGxpY2l0bHkgaW5zdGFudGlhdGUgdGhlIGRldmljZSBhdCB0aGUgcmVsZXZhbnQKK2FkZHJlc3MgKGluIHRoZSBpbnRlcnZhbCBbMHg0OC4uMHg0Zl0pIGVpdGhlciB0aHJvdWdoIHBsYXRmb3JtIGRhdGEsIG9yCit1c2luZyB0aGUgc3lzZnMgaW50ZXJmYWNlLiBTZWUgRG9jdW1lbnRhdGlvbi9pMmMvaW5zdGFudGlhdGluZy1kZXZpY2VzCitmb3IgZGV0YWlscy4KKworRGlyZWN0b3JpZXMgYXJlIGJlaW5nIGNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFudGlhdGVkIFBDRjg1OTE6CisKKy9zeXMvYnVzL2kyYy9kZXZpY2VzLzwwPi08MT4vCit3aGVyZSA8MD4gaXMgdGhlIGJ1cyB0aGUgY2hpcCBpcyBjb25uZWN0ZWQgdG8gKGUuIGcuIGkyYy0wKQorYW5kIDwxPiB0aGUgY2hpcCBhZGRyZXNzIChbNDguLjRmXSkKKworSW5zaWRlIHRoZXNlIGRpcmVjdG9yaWVzLCB0aGVyZSBhcmUgc3VjaCBmaWxlczoKK2luMF9pbnB1dCwgaW4xX2lucHV0LCBpbjJfaW5wdXQsIGluM19pbnB1dCwgb3V0MF9lbmFibGUsIG91dDBfb3V0cHV0LCBuYW1lCisKK05hbWUgY29udGFpbnMgY2hpcCBuYW1lLgorCitUaGUgaW4wX2lucHV0LCBpbjFfaW5wdXQsIGluMl9pbnB1dCBhbmQgaW4zX2lucHV0IGZpbGVzIGFyZSBSTy4gUmVhZGluZyBnaXZlcwordGhlIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGNoYW5uZWwuIERlcGVuZGluZyBvbiB0aGUgY3VycmVudCBhbmFsb2cgaW5wdXRzCitjb25maWd1cmF0aW9uLCBmaWxlcyBpbjJfaW5wdXQgYW5kIGluM19pbnB1dCBtYXkgbm90IGV4aXN0LiBWYWx1ZXMgcmFuZ2UKK2Zyb20gMCB0byAyNTUgZm9yIHNpbmdsZSBlbmRlZCBpbnB1dHMgYW5kIC0xMjggdG8gKzEyNyBmb3IgZGlmZmVyZW50aWFsIGlucHV0cworKDgtYml0IEFEQykuCisKK1RoZSBvdXQwX2VuYWJsZSBmaWxlIGlzIFJXLiBSZWFkaW5nIGdpdmVzICIxIiBmb3IgYW5hbG9nIG91dHB1dCBlbmFibGVkIGFuZAorIjAiIGZvciBhbmFsb2cgb3V0cHV0IGRpc2FibGVkLiBXcml0aW5nIGFjY2VwdHMgIjAiIGFuZCAiMSIgYWNjb3JkaW5nbHkuCisKK1RoZSBvdXQwX291dHB1dCBmaWxlIGlzIFJXLiBXcml0aW5nIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMjU1ICg4LWJpdCBEQUMpLCBzZW5kCit0aGUgdmFsdWUgdG8gdGhlIGRpZ2l0YWwtdG8tYW5hbG9nIGNvbnZlcnRlci4gTm90ZSB0aGF0IGEgdm9sdGFnZSB3aWxsCitvbmx5IGFwcGVhcnMgb24gQU9VVCBwaW4gaWYgYW91dDBfZW5hYmxlIGVxdWFscyAxLiBSZWFkaW5nIHJldHVybnMgdGhlIGxhc3QKK3ZhbHVlIHdyaXR0ZW4uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3BtYnVzIGIvRG9jdW1lbnRhdGlvbi9od21vbi9wbWJ1cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzk3Njc1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9wbWJ1cwpAQCAtMCwwICsxLDIxNiBAQAorS2VybmVsIGRyaXZlciBwbWJ1cworPT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIEVyaWNzc29uIEJNUjQ1MywgQk1SNDU0CisgICAgUHJlZml4ZXM6ICdibXI0NTMnLCAnYm1yNDU0JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OgorIGh0dHA6Ly9hcmNoaXZlLmVyaWNzc29uLm5ldC9zZXJ2aWNlL2ludGVybmV0L3BpY292L2dldD9Eb2NObz0yODcwMS1FTi9MWlQxNDYzOTUKKyAgKiBPTiBTZW1pY29uZHVjdG9yIEFEUDQwMDAsIE5DUDQyMDAsIE5DUDQyMDgKKyAgICBQcmVmaXhlczogJ2FkcDQwMDAnLCAnbmNwNDIwMCcsICduY3A0MjA4JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0czoKKwlodHRwOi8vd3d3Lm9uc2VtaS5jb20vcHViX2xpbmsvQ29sbGF0ZXJhbC9BRFA0MDAwLUQuUERGCisJaHR0cDovL3d3dy5vbnNlbWkuY29tL3B1Yl9saW5rL0NvbGxhdGVyYWwvTkNQNDIwMC1ELlBERgorCWh0dHA6Ly93d3cub25zZW1pLmNvbS9wdWJfbGluay9Db2xsYXRlcmFsL0pVTkUlMjAyMDA5LSUyMFJFVi4lMjAwLlBERgorICAqIExpbmVhZ2UgUG93ZXIKKyAgICBQcmVmaXhlczogJ21kdDA0MCcsICdwZHQwMDMnLCAncGR0MDA2JywgJ3BkdDAxMicsICd1ZHQwMjAnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IC0KKyAgICBEYXRhc2hlZXRzOgorCWh0dHA6Ly93d3cubGluZWFnZXBvd2VyLmNvbS9vZW0vcGRmL1BEVDAwM0EwWC5wZGYKKwlodHRwOi8vd3d3LmxpbmVhZ2Vwb3dlci5jb20vb2VtL3BkZi9QRFQwMDZBMFgucGRmCisJaHR0cDovL3d3dy5saW5lYWdlcG93ZXIuY29tL29lbS9wZGYvUERUMDEyQTBYLnBkZgorCWh0dHA6Ly93d3cubGluZWFnZXBvd2VyLmNvbS9vZW0vcGRmL1VEVDAyMEEwWC5wZGYKKwlodHRwOi8vd3d3LmxpbmVhZ2Vwb3dlci5jb20vb2VtL3BkZi9NRFQwNDBBMFgucGRmCisgICogVGV4YXMgSW5zdHJ1bWVudHMgVFBTNDA0MDAsIFRQUzU0NEIyMCwgVFBTNTQ0QjI1LCBUUFM1NDRDMjAsIFRQUzU0NEMyNQorICAgIFByZWZpeGVzOiAndHBzNDA0MDAnLCAndHBzNTQ0YjIwJywgJ3RwczU0NGIyNScsICd0cHM1NDRjMjAnLCAndHBzNTQ0YzI1JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0czoKKwlodHRwOi8vd3d3LnRpLmNvbS9saXQvZ3BuL3RwczQwNDAwCisJaHR0cDovL3d3dy50aS5jb20vbGl0L2dwbi90cHM1NDRiMjAKKwlodHRwOi8vd3d3LnRpLmNvbS9saXQvZ3BuL3RwczU0NGIyNQorCWh0dHA6Ly93d3cudGkuY29tL2xpdC9ncG4vdHBzNTQ0YzIwCisJaHR0cDovL3d3dy50aS5jb20vbGl0L2dwbi90cHM1NDRjMjUKKyAgKiBHZW5lcmljIFBNQnVzIGRldmljZXMKKyAgICBQcmVmaXg6ICdwbWJ1cycKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgIERhdGFzaGVldDogbi5hLgorCitBdXRob3I6IEd1ZW50ZXIgUm9lY2sgPGxpbnV4QHJvZWNrLXVzLm5ldD4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgc3VwcG9ydHMgaGFyZHdhcmUgbW9udG9yaW5nIGZvciB2YXJpb3VzIFBNQnVzIGNvbXBsaWFudCBkZXZpY2VzLgorSXQgc3VwcG9ydHMgdm9sdGFnZSwgY3VycmVudCwgcG93ZXIsIGFuZCB0ZW1wZXJhdHVyZSBzZW5zb3JzIGFzIHN1cHBvcnRlZAorYnkgdGhlIGRldmljZS4KKworRWFjaCBtb25pdG9yZWQgY2hhbm5lbCBoYXMgaXRzIG93biBoaWdoIGFuZCBsb3cgbGltaXRzLCBwbHVzIGEgY3JpdGljYWwKK2xpbWl0LgorCitGYW4gc3VwcG9ydCB3aWxsIGJlIGFkZGVkIGluIGEgbGF0ZXIgdmVyc2lvbiBvZiB0aGlzIGRyaXZlci4KKworCitVc2FnZSBOb3RlcworLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgZG9lcyBub3QgcHJvYmUgZm9yIFBNQnVzIGRldmljZXMsIHNpbmNlIHRoZXJlIGlzIG5vIHJlZ2lzdGVyCit3aGljaCBjYW4gYmUgc2FmZWx5IHVzZWQgdG8gaWRlbnRpZnkgdGhlIGNoaXAgKFRoZSBNRkdfSUQgcmVnaXN0ZXIgaXMgbm90CitzdXBwb3J0ZWQgYnkgYWxsIGNoaXBzKSwgYW5kIHNpbmNlIHRoZXJlIGlzIG5vIHdlbGwgZGVmaW5lZCBhZGRyZXNzIHJhbmdlIGZvcgorUE1CdXMgZGV2aWNlcy4gWW91IHdpbGwgaGF2ZSB0byBpbnN0YW50aWF0ZSB0aGUgZGV2aWNlcyBleHBsaWNpdGx5LgorCitFeGFtcGxlOiB0aGUgZm9sbG93aW5nIHdpbGwgbG9hZCB0aGUgZHJpdmVyIGZvciBhbiBMVEMyOTc4IGF0IGFkZHJlc3MgMHg2MAorb24gSTJDIGJ1cyAjMToKKyQgbW9kcHJvYmUgcG1idXMKKyQgZWNobyBsdGMyOTc4IDB4NjAgPiAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtMS9uZXdfZGV2aWNlCisKKworUGxhdGZvcm0gZGF0YSBzdXBwb3J0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU3VwcG9ydCBmb3IgYWRkaXRpb25hbCBQTUJ1cyBjaGlwcyBjYW4gYmUgYWRkZWQgYnkgZGVmaW5pbmcgY2hpcCBwYXJhbWV0ZXJzIGluCithIG5ldyBjaGlwIHNwZWNpZmljIGRyaXZlciBmaWxlLiBGb3IgZXhhbXBsZSwgKHVudGVzdGVkKSBjb2RlIHRvIGFkZCBzdXBwb3J0IGZvcgorRW1lcnNvbiBEUzEyMDAgcG93ZXIgbW9kdWxlcyBtaWdodCBsb29rIGFzIGZvbGxvd3MuCisKK3N0YXRpYyBzdHJ1Y3QgcG1idXNfZHJpdmVyX2luZm8gZHMxMjAwX2luZm8gPSB7CisJLnBhZ2VzID0gMSwKKwkvKiBOb3RlOiBBbGwgb3RoZXIgc2Vuc29ycyBhcmUgaW4gbGluZWFyIG1vZGUgKi8KKwkuZGlyZWN0W1BTQ19WT0xUQUdFX09VVF0gPSB0cnVlLAorCS5kaXJlY3RbUFNDX1RFTVBFUkFUVVJFXSA9IHRydWUsCisJLmRpcmVjdFtQU0NfQ1VSUkVOVF9PVVRdID0gdHJ1ZSwKKwkubVtQU0NfVk9MVEFHRV9JTl0gPSAxLAorCS5iW1BTQ19WT0xUQUdFX0lOXSA9IDAsCisJLlJbUFNDX1ZPTFRBR0VfSU5dID0gMywKKwkubVtQU0NfVk9MVEFHRV9PVVRdID0gMSwKKwkuYltQU0NfVk9MVEFHRV9PVVRdID0gMCwKKwkuUltQU0NfVk9MVEFHRV9PVVRdID0gMywKKwkubVtQU0NfVEVNUEVSQVRVUkVdID0gMSwKKwkuYltQU0NfVEVNUEVSQVRVUkVdID0gMCwKKwkuUltQU0NfVEVNUEVSQVRVUkVdID0gMywKKwkuZnVuY1swXSA9IFBNQlVTX0hBVkVfVklOIHwgUE1CVVNfSEFWRV9JSU4gfCBQTUJVU19IQVZFX1NUQVRVU19JTlBVVAorCQkgICB8IFBNQlVTX0hBVkVfVk9VVCB8IFBNQlVTX0hBVkVfU1RBVFVTX1ZPVVQKKwkJICAgfCBQTUJVU19IQVZFX0lPVVQgfCBQTUJVU19IQVZFX1NUQVRVU19JT1VUCisJCSAgIHwgUE1CVVNfSEFWRV9QSU4gfCBQTUJVU19IQVZFX1BPVVQKKwkJICAgfCBQTUJVU19IQVZFX1RFTVAgfCBQTUJVU19IQVZFX1NUQVRVU19URU1QCisJCSAgIHwgUE1CVVNfSEFWRV9GQU4xMiB8IFBNQlVTX0hBVkVfU1RBVFVTX0ZBTjEyLAorfTsKKworc3RhdGljIGludCBkczEyMDBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKKwkJCWNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppZCkKK3sKKwlyZXR1cm4gcG1idXNfZG9fcHJvYmUoY2xpZW50LCBpZCwgJmRzMTIwMF9pbmZvKTsKK30KKworc3RhdGljIGludCBkczEyMDBfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCit7CisJcmV0dXJuIHBtYnVzX2RvX3JlbW92ZShjbGllbnQpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgZHMxMjAwX2lkW10gPSB7CisJeyJkczEyMDAiLCAwfSwKKwl7fQorfTsKKworTU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIGRzMTIwMF9pZCk7CisKKy8qIFRoaXMgaXMgdGhlIGRyaXZlciB0aGF0IHdpbGwgYmUgaW5zZXJ0ZWQgKi8KK3N0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBkczEyMDBfZHJpdmVyID0geworCS5kcml2ZXIgPSB7CisJCSAgIC5uYW1lID0gImRzMTIwMCIsCisJCSAgIH0sCisJLnByb2JlID0gZHMxMjAwX3Byb2JlLAorCS5yZW1vdmUgPSBkczEyMDBfcmVtb3ZlLAorCS5pZF90YWJsZSA9IGRzMTIwMF9pZCwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IGRzMTIwMF9pbml0KHZvaWQpCit7CisJcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZkczEyMDBfZHJpdmVyKTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IGRzMTIwMF9leGl0KHZvaWQpCit7CisJaTJjX2RlbF9kcml2ZXIoJmRzMTIwMF9kcml2ZXIpOworfQorCisKK1N5c2ZzIGVudHJpZXMKKy0tLS0tLS0tLS0tLS0KKworV2hlbiBwcm9iaW5nIHRoZSBjaGlwLCB0aGUgZHJpdmVyIGlkZW50aWZpZXMgd2hpY2ggUE1CdXMgcmVnaXN0ZXJzIGFyZQorc3VwcG9ydGVkLCBhbmQgZGV0ZXJtaW5lcyBhdmFpbGFibGUgc2Vuc29ycyBmcm9tIHRoaXMgaW5mb3JtYXRpb24uCitBdHRyaWJ1dGUgZmlsZXMgb25seSBleGlzdCBpZiByZXNwZWN0aXZlIHNlbnNvcnMgYXJlIHN1cHBvcnRlZCBieSB0aGUgY2hpcC4KK0xhYmVscyBhcmUgcHJvdmlkZWQgdG8gaW5mb3JtIHRoZSB1c2VyIGFib3V0IHRoZSBzZW5zb3IgYXNzb2NpYXRlZCB3aXRoCithIGdpdmVuIHN5c2ZzIGVudHJ5LgorCitUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgYXJlIHN1cHBvcnRlZC4gTGltaXRzIGFyZSByZWFkLXdyaXRlOyBhbGwgb3RoZXIKK2F0dHJpYnV0ZXMgYXJlIHJlYWQtb25seS4KKworaW5YX2lucHV0CQlNZWFzdXJlZCB2b2x0YWdlLiBGcm9tIFJFQURfVklOIG9yIFJFQURfVk9VVCByZWdpc3Rlci4KK2luWF9taW4JCQlNaW5pbXVtIFZvbHRhZ2UuCisJCQlGcm9tIFZJTl9VVl9XQVJOX0xJTUlUIG9yIFZPVVRfVVZfV0FSTl9MSU1JVCByZWdpc3Rlci4KK2luWF9tYXgJCQlNYXhpbXVtIHZvbHRhZ2UuCisJCQlGcm9tIFZJTl9PVl9XQVJOX0xJTUlUIG9yIFZPVVRfT1ZfV0FSTl9MSU1JVCByZWdpc3Rlci4KK2luWF9sY3JpdAkJQ3JpdGljYWwgbWluaW11bSBWb2x0YWdlLgorCQkJRnJvbSBWSU5fVVZfRkFVTFRfTElNSVQgb3IgVk9VVF9VVl9GQVVMVF9MSU1JVCByZWdpc3Rlci4KK2luWF9jcml0CQlDcml0aWNhbCBtYXhpbXVtIHZvbHRhZ2UuCisJCQlGcm9tIFZJTl9PVl9GQVVMVF9MSU1JVCBvciBWT1VUX09WX0ZBVUxUX0xJTUlUIHJlZ2lzdGVyLgoraW5YX21pbl9hbGFybQkJVm9sdGFnZSBsb3cgYWxhcm0uIEZyb20gVk9MVEFHRV9VVl9XQVJOSU5HIHN0YXR1cy4KK2luWF9tYXhfYWxhcm0JCVZvbHRhZ2UgaGlnaCBhbGFybS4gRnJvbSBWT0xUQUdFX09WX1dBUk5JTkcgc3RhdHVzLgoraW5YX2xjcml0X2FsYXJtCQlWb2x0YWdlIGNyaXRpY2FsIGxvdyBhbGFybS4KKwkJCUZyb20gVk9MVEFHRV9VVl9GQVVMVCBzdGF0dXMuCitpblhfY3JpdF9hbGFybQkJVm9sdGFnZSBjcml0aWNhbCBoaWdoIGFsYXJtLgorCQkJRnJvbSBWT0xUQUdFX09WX0ZBVUxUIHN0YXR1cy4KK2luWF9sYWJlbAkJInZpbiIsICJ2Y2FwIiwgb3IgInZvdXRZIgorCitjdXJyWF9pbnB1dAkJTWVhc3VyZWQgY3VycmVudC4gRnJvbSBSRUFEX0lJTiBvciBSRUFEX0lPVVQgcmVnaXN0ZXIuCitjdXJyWF9tYXgJCU1heGltdW0gY3VycmVudC4KKwkJCUZyb20gSUlOX09DX1dBUk5fTElNSVQgb3IgSU9VVF9PQ19XQVJOX0xJTUlUIHJlZ2lzdGVyLgorY3VyclhfbGNyaXQJCUNyaXRpY2FsIG1pbmltdW0gb3V0cHV0IGN1cnJlbnQuCisJCQlGcm9tIElPVVRfVUNfRkFVTFRfTElNSVQgcmVnaXN0ZXIuCitjdXJyWF9jcml0CQlDcml0aWNhbCBtYXhpbXVtIGN1cnJlbnQuCisJCQlGcm9tIElJTl9PQ19GQVVMVF9MSU1JVCBvciBJT1VUX09DX0ZBVUxUX0xJTUlUIHJlZ2lzdGVyLgorY3VyclhfYWxhcm0JCUN1cnJlbnQgaGlnaCBhbGFybS4KKwkJCUZyb20gSUlOX09DX1dBUk5JTkcgb3IgSU9VVF9PQ19XQVJOSU5HIHN0YXR1cy4KK2N1cnJYX21heF9hbGFybQkJQ3VycmVudCBoaWdoIGFsYXJtLgorCQkJRnJvbSBJSU5fT0NfV0FSTl9MSU1JVCBvciBJT1VUX09DX1dBUk5fTElNSVQgc3RhdHVzLgorY3VyclhfbGNyaXRfYWxhcm0JT3V0cHV0IGN1cnJlbnQgY3JpdGljYWwgbG93IGFsYXJtLgorCQkJRnJvbSBJT1VUX1VDX0ZBVUxUIHN0YXR1cy4KK2N1cnJYX2NyaXRfYWxhcm0JQ3VycmVudCBjcml0aWNhbCBoaWdoIGFsYXJtLgorCQkJRnJvbSBJSU5fT0NfRkFVTFQgb3IgSU9VVF9PQ19GQVVMVCBzdGF0dXMuCitjdXJyWF9sYWJlbAkJImlpbiIgb3IgImlvdXRZIgorCitwb3dlclhfaW5wdXQJCU1lYXN1cmVkIHBvd2VyLiBGcm9tIFJFQURfUElOIG9yIFJFQURfUE9VVCByZWdpc3Rlci4KK3Bvd2VyWF9jYXAJCU91dHB1dCBwb3dlciBjYXAuIEZyb20gUE9VVF9NQVggcmVnaXN0ZXIuCitwb3dlclhfbWF4CQlQb3dlciBsaW1pdC4gRnJvbSBQSU5fT1BfV0FSTl9MSU1JVCBvcgorCQkJUE9VVF9PUF9XQVJOX0xJTUlUIHJlZ2lzdGVyLgorcG93ZXJYX2NyaXQJCUNyaXRpY2FsIG91dHB1dCBwb3dlciBsaW1pdC4KKwkJCUZyb20gUE9VVF9PUF9GQVVMVF9MSU1JVCByZWdpc3Rlci4KK3Bvd2VyWF9hbGFybQkJUG93ZXIgaGlnaCBhbGFybS4KKwkJCUZyb20gUElOX09QX1dBUk5JTkcgb3IgUE9VVF9PUF9XQVJOSU5HIHN0YXR1cy4KK3Bvd2VyWF9jcml0X2FsYXJtCU91dHB1dCBwb3dlciBjcml0aWNhbCBoaWdoIGFsYXJtLgorCQkJRnJvbSBQT1VUX09QX0ZBVUxUIHN0YXR1cy4KK3Bvd2VyWF9sYWJlbAkJInBpbiIgb3IgInBvdXRZIgorCit0ZW1wWF9pbnB1dAkJTWVhc3VyZWQgdGVtcGVyYXR1cmUuCisJCQlGcm9tIFJFQURfVEVNUEVSQVRVUkVfWCByZWdpc3Rlci4KK3RlbXBYX21pbgkJTWltaW11bSB0ZW1wZXJhdHVyZS4gRnJvbSBVVF9XQVJOX0xJTUlUIHJlZ2lzdGVyLgordGVtcFhfbWF4CQlNYXhpbXVtIHRlbXBlcmF0dXJlLiBGcm9tIE9UX1dBUk5fTElNSVQgcmVnaXN0ZXIuCit0ZW1wWF9sY3JpdAkJQ3JpdGljYWwgbG93IHRlbXBlcmF0dXJlLgorCQkJRnJvbSBVVF9GQVVMVF9MSU1JVCByZWdpc3Rlci4KK3RlbXBYX2NyaXQJCUNyaXRpY2FsIGhpZ2ggdGVtcGVyYXR1cmUuCisJCQlGcm9tIE9UX0ZBVUxUX0xJTUlUIHJlZ2lzdGVyLgordGVtcFhfbWluX2FsYXJtCQlDaGlwIHRlbXBlcmF0dXJlIGxvdyBhbGFybS4gU2V0IGJ5IGNvbXBhcmluZworCQkJUkVBRF9URU1QRVJBVFVSRV9YIHdpdGggVVRfV0FSTl9MSU1JVCBpZgorCQkJVEVNUF9VVF9XQVJOSU5HIHN0YXR1cyBpcyBzZXQuCit0ZW1wWF9tYXhfYWxhcm0JCUNoaXAgdGVtcGVyYXR1cmUgaGlnaCBhbGFybS4gU2V0IGJ5IGNvbXBhcmluZworCQkJUkVBRF9URU1QRVJBVFVSRV9YIHdpdGggT1RfV0FSTl9MSU1JVCBpZgorCQkJVEVNUF9PVF9XQVJOSU5HIHN0YXR1cyBpcyBzZXQuCit0ZW1wWF9sY3JpdF9hbGFybQlDaGlwIHRlbXBlcmF0dXJlIGNyaXRpY2FsIGxvdyBhbGFybS4gU2V0IGJ5IGNvbXBhcmluZworCQkJUkVBRF9URU1QRVJBVFVSRV9YIHdpdGggVVRfRkFVTFRfTElNSVQgaWYKKwkJCVRFTVBfVVRfRkFVTFQgc3RhdHVzIGlzIHNldC4KK3RlbXBYX2NyaXRfYWxhcm0JQ2hpcCB0ZW1wZXJhdHVyZSBjcml0aWNhbCBoaWdoIGFsYXJtLiBTZXQgYnkgY29tcGFyaW5nCisJCQlSRUFEX1RFTVBFUkFUVVJFX1ggd2l0aCBPVF9GQVVMVF9MSU1JVCBpZgorCQkJVEVNUF9PVF9GQVVMVCBzdGF0dXMgaXMgc2V0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9wbWJ1cy1jb3JlIGIvRG9jdW1lbnRhdGlvbi9od21vbi9wbWJ1cy1jb3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxZTQ3MjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3BtYnVzLWNvcmUKQEAgLTAsMCArMSwyODMgQEAKK1BNQnVzIGNvcmUgZHJpdmVyIGFuZCBpbnRlcm5hbCBBUEkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW50cm9kdWN0aW9uCis9PT09PT09PT09PT0KKworW2Zyb20gcG1idXMub3JnXSBUaGUgUG93ZXIgTWFuYWdlbWVudCBCdXMgKFBNQnVzKSBpcyBhbiBvcGVuIHN0YW5kYXJkCitwb3dlci1tYW5hZ2VtZW50IHByb3RvY29sIHdpdGggYSBmdWxseSBkZWZpbmVkIGNvbW1hbmQgbGFuZ3VhZ2UgdGhhdCBmYWNpbGl0YXRlcworY29tbXVuaWNhdGlvbiB3aXRoIHBvd2VyIGNvbnZlcnRlcnMgYW5kIG90aGVyIGRldmljZXMgaW4gYSBwb3dlciBzeXN0ZW0uIFRoZQorcHJvdG9jb2wgaXMgaW1wbGVtZW50ZWQgb3ZlciB0aGUgaW5kdXN0cnktc3RhbmRhcmQgU01CdXMgc2VyaWFsIGludGVyZmFjZSBhbmQKK2VuYWJsZXMgcHJvZ3JhbW1pbmcsIGNvbnRyb2wsIGFuZCByZWFsLXRpbWUgbW9uaXRvcmluZyBvZiBjb21wbGlhbnQgcG93ZXIKK2NvbnZlcnNpb24gcHJvZHVjdHMuIFRoaXMgZmxleGlibGUgYW5kIGhpZ2hseSB2ZXJzYXRpbGUgc3RhbmRhcmQgYWxsb3dzIGZvcgorY29tbXVuaWNhdGlvbiBiZXR3ZWVuIGRldmljZXMgYmFzZWQgb24gYm90aCBhbmFsb2cgYW5kIGRpZ2l0YWwgdGVjaG5vbG9naWVzLCBhbmQKK3Byb3ZpZGVzIHRydWUgaW50ZXJvcGVyYWJpbGl0eSB3aGljaCB3aWxsIHJlZHVjZSBkZXNpZ24gY29tcGxleGl0eSBhbmQgc2hvcnRlbgordGltZSB0byBtYXJrZXQgZm9yIHBvd2VyIHN5c3RlbSBkZXNpZ25lcnMuIFBpb25lZXJlZCBieSBsZWFkaW5nIHBvd2VyIHN1cHBseSBhbmQKK3NlbWljb25kdWN0b3IgY29tcGFuaWVzLCB0aGlzIG9wZW4gcG93ZXIgc3lzdGVtIHN0YW5kYXJkIGlzIG1haW50YWluZWQgYW5kCitwcm9tb3RlZCBieSB0aGUgUE1CdXMgSW1wbGVtZW50ZXJzIEZvcnVtIChQTUJ1cy1JRiksIGNvbXByaXNpbmcgMzArIGFkb3B0ZXJzCit3aXRoIHRoZSBvYmplY3RpdmUgdG8gcHJvdmlkZSBzdXBwb3J0IHRvLCBhbmQgZmFjaWxpdGF0ZSBhZG9wdGlvbiBhbW9uZywgdXNlcnMuCisKK1VuZm9ydHVuYXRlbHksIHdoaWxlIFBNQnVzIGNvbW1hbmRzIGFyZSBzdGFuZGFyZGl6ZWQsIHRoZXJlIGFyZSBubyBtYW5kYXRvcnkKK2NvbW1hbmRzLCBhbmQgbWFudWZhY3R1cmVycyBjYW4gYWRkIGFzIG1hbnkgbm9uLXN0YW5kYXJkIGNvbW1hbmRzIGFzIHRoZXkgbGlrZS4KK0Fsc28sIGRpZmZlcmVudCBQTUJVcyBkZXZpY2VzIGFjdCBkaWZmZXJlbnRseSBpZiBub24tc3VwcG9ydGVkIGNvbW1hbmRzIGFyZQorZXhlY3V0ZWQuIFNvbWUgZGV2aWNlcyByZXR1cm4gYW4gZXJyb3IsIHNvbWUgZGV2aWNlcyByZXR1cm4gMHhmZiBvciAweGZmZmYgYW5kCitzZXQgYSBzdGF0dXMgZXJyb3IgZmxhZywgYW5kIHNvbWUgZGV2aWNlcyBtYXkgc2ltcGx5IGhhbmcgdXAuCisKK0Rlc3BpdGUgYWxsIHRob3NlIGRpZmZpY3VsdGllcywgYSBnZW5lcmljIFBNQnVzIGRldmljZSBkcml2ZXIgaXMgc3RpbGwgdXNlZnVsCithbmQgc3VwcG9ydGVkIHNpbmNlIGtlcm5lbCB2ZXJzaW9uIDIuNi4zOS4gSG93ZXZlciwgaXQgd2FzIG5lY2Vzc2FyeSB0byBzdXBwb3J0CitkZXZpY2Ugc3BlY2lmaWMgZXh0ZW5zaW9ucyBpbiBhZGRpdGlvbiB0byB0aGUgY29yZSBQTUJ1cyBkcml2ZXIsIHNpbmNlIGl0IGlzCitzaW1wbHkgdW5rbm93biB3aGF0IG5ldyBkZXZpY2Ugc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBQTUJ1cyBkZXZpY2UgZGV2ZWxvcGVycworY29tZSB1cCB3aXRoIG5leHQuCisKK1RvIG1ha2UgZGV2aWNlIHNwZWNpZmljIGV4dGVuc2lvbnMgYXMgc2NhbGFibGUgYXMgcG9zc2libGUsIGFuZCB0byBhdm9pZCBoYXZpbmcKK3RvIG1vZGlmeSB0aGUgY29yZSBQTUJ1cyBkcml2ZXIgcmVwZWF0ZWRseSBmb3IgbmV3IGRldmljZXMsIHRoZSBQTUJ1cyBkcml2ZXIgd2FzCitzcGxpdCBpbnRvIGNvcmUsIGdlbmVyaWMsIGFuZCBkZXZpY2Ugc3BlY2lmaWMgY29kZS4gVGhlIGNvcmUgY29kZSAoaW4KK3BtYnVzX2NvcmUuYykgcHJvdmlkZXMgZ2VuZXJpYyBmdW5jdGlvbmFsaXR5LiBUaGUgZ2VuZXJpYyBjb2RlIChpbiBwbWJ1cy5jKQorcHJvdmlkZXMgc3VwcG9ydCBmb3IgZ2VuZXJpYyBQTUJ1cyBkZXZpY2VzLiBEZXZpY2Ugc3BlY2lmaWMgY29kZSBpcyByZXNwb25zaWJsZQorZm9yIGRldmljZSBzcGVjaWZpYyBpbml0aWFsaXphdGlvbiBhbmQsIGlmIG5lZWRlZCwgbWFwcyBkZXZpY2Ugc3BlY2lmaWMKK2Z1bmN0aW9uYWxpdHkgaW50byBnZW5lcmljIGZ1bmN0aW9uYWxpdHkuIFRoaXMgaXMgdG8gc29tZSBkZWdyZWUgY29tcGFyYWJsZQordG8gUENJIGNvZGUsIHdoZXJlIGdlbmVyaWMgY29kZSBpcyBhdWdtZW50ZWQgYXMgbmVlZGVkIHdpdGggcXVpcmtzIGZvciBhbGwga2luZHMKK29mIGRldmljZXMuCisKK1BNQnVzIGRldmljZSBjYXBhYmlsaXRpZXMgYXV0by1kZXRlY3Rpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRm9yIGdlbmVyaWMgUE1CdXMgZGV2aWNlcywgY29kZSBpbiBwbWJ1cy5jIGF0dGVtcHRzIHRvIGF1dG8tZGV0ZWN0IGFsbCBzdXBwb3J0ZWQKK1BNQnVzIGNvbW1hbmRzLiBBdXRvLWRldGVjdGlvbiBpcyBzb21ld2hhdCBsaW1pdGVkLCBzaW5jZSB0aGVyZSBhcmUgc2ltcGx5IHRvbworbWFueSB2YXJpYWJsZXMgdG8gY29uc2lkZXIuIEZvciBleGFtcGxlLCBpdCBpcyBhbG1vc3QgaW1wb3NzaWJsZSB0byBhdXRvZGV0ZWN0Cit3aGljaCBQTUJ1cyBjb21tYW5kcyBhcmUgcGFnZWQgYW5kIHdoaWNoIGNvbW1hbmRzIGFyZSByZXBsaWNhdGVkIGFjcm9zcyBhbGwKK3BhZ2VzIChzZWUgdGhlIFBNQnVzIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMgb24gbXVsdGktcGFnZSBQTUJ1cyBkZXZpY2VzKS4KKworRm9yIHRoaXMgcmVhc29uLCBpdCBvZnRlbiBtYWtlcyBzZW5zZSB0byBwcm92aWRlIGEgZGV2aWNlIHNwZWNpZmljIGRyaXZlciBpZiBub3QKK2FsbCBjb21tYW5kcyBjYW4gYmUgYXV0by1kZXRlY3RlZC4gVGhlIGRhdGEgc3RydWN0dXJlcyBpbiB0aGlzIGRyaXZlciBjYW4gYmUKK3VzZWQgdG8gaW5mb3JtIHRoZSBjb3JlIGRyaXZlciBhYm91dCBmdW5jdGlvbmFsaXR5IHN1cHBvcnRlZCBieSBpbmRpdmlkdWFsCitjaGlwcy4KKworU29tZSBjb21tYW5kcyBhcmUgYWx3YXlzIGF1dG8tZGV0ZWN0ZWQuIFRoaXMgYXBwbGllcyB0byBhbGwgbGltaXQgY29tbWFuZHMKKyhsY3JpdCwgbWluLCBtYXgsIGFuZCBjcml0IGF0dHJpYnV0ZXMpIGFzIHdlbGwgYXMgYXNzb2NpYXRlZCBhbGFybSBhdHRyaWJ1dGVzLgorTGltaXRzIGFuZCBhbGFybSBhdHRyaWJ1dGVzIGFyZSBhdXRvLWRldGVjdGVkIGJlY2F1c2UgdGhlcmUgYXJlIHNpbXBseSB0b28gbWFueQorcG9zc2libGUgY29tYmluYXRpb25zIHRvIHByb3ZpZGUgYSBtYW51YWwgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UuCisKK1BNQnVzIGludGVybmFsIEFQSQorPT09PT09PT09PT09PT09PT09CisKK1RoZSBBUEkgYmV0d2VlbiBjb3JlIGFuZCBkZXZpY2Ugc3BlY2lmaWMgUE1CdXMgY29kZSBpcyBkZWZpbmVkIGluCitkcml2ZXJzL2h3bW9uL3BtYnVzL3BtYnVzLmguIEluIGFkZGl0aW9uIHRvIHRoZSBpbnRlcm5hbCBBUEksIHBtYnVzLmggZGVmaW5lcworc3RhbmRhcmQgUE1CdXMgY29tbWFuZHMgYW5kIHZpcnR1YWwgUE1CdXMgY29tbWFuZHMuCisKK1N0YW5kYXJkIFBNQnVzIGNvbW1hbmRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTdGFuZGFyZCBQTUJ1cyBjb21tYW5kcyAoY29tbWFuZHMgdmFsdWVzIDB4MDAgdG8gMHhmZikgYXJlIGRlZmluZWQgaW4gdGhlIFBNQlVzCitzcGVjaWZpY2F0aW9uLgorCitWaXJ0dWFsIFBNQnVzIGNvbW1hbmRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1ZpcnR1YWwgUE1CdXMgY29tbWFuZHMgYXJlIHByb3ZpZGVkIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBub24tc3RhbmRhcmQKK2Z1bmN0aW9uYWxpdHkgd2hpY2ggaGFzIGJlZW4gaW1wbGVtZW50ZWQgYnkgc2V2ZXJhbCBjaGlwIHZlbmRvcnMgYW5kIGlzIHRodXMKK2Rlc2lyYWJsZSB0byBzdXBwb3J0LgorCitWaXJ0dWFsIFBNQnVzIGNvbW1hbmRzIHN0YXJ0IHdpdGggY29tbWFuZCB2YWx1ZSAweDEwMCBhbmQgY2FuIHRodXMgZWFzaWx5IGJlCitkaXN0aW5ndWlzaGVkIGZyb20gc3RhbmRhcmQgUE1CdXMgY29tbWFuZHMgKHdoaWNoIGNhbiBub3QgaGF2ZSB2YWx1ZXMgbGFyZ2VyCit0aGFuIDB4ZmYpLiBTdXBwb3J0IGZvciB2aXJ0dWFsIFBNQnVzIGNvbW1hbmRzIGlzIGRldmljZSBzcGVjaWZpYyBhbmQgdGh1cyBoYXMKK3RvIGJlIGltcGxlbWVudGVkIGluIGRldmljZSBzcGVjaWZpYyBjb2RlLgorCitWaXJ0dWFsIGNvbW1hbmRzIGFyZSBuYW1lZCBQTUJVU19WSVJUX3h4eCBhbmQgc3RhcnQgd2l0aCBQTUJVU19WSVJUX0JBU0UuIEFsbAordmlydHVhbCBjb21tYW5kcyBhcmUgd29yZCBzaXplZC4KKworVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gdHlwZXMgb2YgdmlydHVhbCBjb21tYW5kcy4KKworLSBSRUFEIGNvbW1hbmRzIGFyZSByZWFkLW9ubHk7IHdyaXRlcyBhcmUgZWl0aGVyIGlnbm9yZWQgb3IgcmV0dXJuIGFuIGVycm9yLgorLSBSRVNFVCBjb21tYW5kcyBhcmUgcmVhZC93cml0ZS4gUmVhZGluZyByZXNldCByZWdpc3RlcnMgcmV0dXJucyB6ZXJvCisgICh1c2VkIGZvciBkZXRlY3Rpb24pLCB3cml0aW5nIGFueSB2YWx1ZSBjYXVzZXMgdGhlIGFzc29jaWF0ZWQgaGlzdG9yeSB0byBiZQorICByZXNldC4KKworVmlydHVhbCBjb21tYW5kcyBoYXZlIHRvIGJlIGhhbmRsZWQgaW4gZGV2aWNlIHNwZWNpZmljIGRyaXZlciBjb2RlLiBDaGlwIGRyaXZlcgorY29kZSByZXR1cm5zIG5vbi1uZWdhdGl2ZSB2YWx1ZXMgaWYgYSB2aXJ0dWFsIGNvbW1hbmQgaXMgc3VwcG9ydGVkLCBvciBhCituZWdhdGl2ZSBlcnJvciBjb2RlIGlmIG5vdC4gVGhlIGNoaXAgZHJpdmVyIG1heSByZXR1cm4gLUVOT0RBVEEgb3IgYW55IG90aGVyCitMaW51eCBlcnJvciBjb2RlIGluIHRoaXMgY2FzZSwgdGhvdWdoIGFuIGVycm9yIGNvZGUgb3RoZXIgdGhhbiAtRU5PREFUQSBpcworaGFuZGxlZCBtb3JlIGVmZmljaWVudGx5IGFuZCB0aHVzIHByZWZlcnJlZC4gRWl0aGVyIGNhc2UsIHRoZSBjYWxsaW5nIFBNQnVzCitjb3JlIGNvZGUgd2lsbCBhYm9ydCBpZiB0aGUgY2hpcCBkcml2ZXIgcmV0dXJucyBhbiBlcnJvciBjb2RlIHdoZW4gcmVhZGluZworb3Igd3JpdGluZyB2aXJ0dWFsIHJlZ2lzdGVycyAoaW4gb3RoZXIgd29yZHMsIHRoZSBQTUJ1cyBjb3JlIGNvZGUgd2lsbCBuZXZlcgorc2VuZCBhIHZpcnR1YWwgY29tbWFuZCB0byBhIGNoaXApLgorCitQTUJ1cyBkcml2ZXIgaW5mb3JtYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQTUJ1cyBkcml2ZXIgaW5mb3JtYXRpb24sIGRlZmluZWQgaW4gc3RydWN0IHBtYnVzX2RyaXZlcl9pbmZvLCBpcyB0aGUgbWFpbiBtZWFucworZm9yIGRldmljZSBzcGVjaWZpYyBkcml2ZXJzIHRvIHBhc3MgaW5mb3JtYXRpb24gdG8gdGhlIGNvcmUgUE1CdXMgZHJpdmVyLgorU3BlY2lmaWNhbGx5LCBpdCBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uLgorCistIEZvciBkZXZpY2VzIHN1cHBvcnRpbmcgaXRzIGRhdGEgaW4gRGlyZWN0IERhdGEgRm9ybWF0LCBpdCBwcm92aWRlcyBjb2VmZmljaWVudHMKKyAgZm9yIGNvbnZlcnRpbmcgcmVnaXN0ZXIgdmFsdWVzIGludG8gbm9ybWFsaXplZCBkYXRhLiBUaGlzIGRhdGEgaXMgdXN1YWxseQorICBwcm92aWRlZCBieSBjaGlwIG1hbnVmYWN0dXJlcnMgaW4gZGV2aWNlIGRhdGFzaGVldHMuCistIFN1cHBvcnRlZCBjaGlwIGZ1bmN0aW9uYWxpdHkgY2FuIGJlIHByb3ZpZGVkIHRvIHRoZSBjb3JlIGRyaXZlci4gVGhpcyBtYXkgYmUKKyAgbmVjZXNzYXJ5IGZvciBjaGlwcyB3aGljaCByZWFjdCBiYWRseSBpZiBub24tc3VwcG9ydGVkIGNvbW1hbmRzIGFyZSBleGVjdXRlZCwKKyAgYW5kL29yIHRvIHNwZWVkIHVwIGRldmljZSBkZXRlY3Rpb24gYW5kIGluaXRpYWxpemF0aW9uLgorLSBTZXZlcmFsIGZ1bmN0aW9uIGVudHJ5IHBvaW50cyBhcmUgcHJvdmlkZWQgdG8gc3VwcG9ydCBvdmVycmlkaW5nIGFuZC9vcgorICBhdWdtZW50aW5nIGdlbmVyaWMgY29tbWFuZCBleGVjdXRpb24uIFRoaXMgZnVuY3Rpb25hbGl0eSBjYW4gYmUgdXNlZCB0byBtYXAKKyAgbm9uLXN0YW5kYXJkIFBNQnVzIGNvbW1hbmRzIHRvIHN0YW5kYXJkIGNvbW1hbmRzLCBvciB0byBhdWdtZW50IHN0YW5kYXJkCisgIGNvbW1hbmQgcmV0dXJuIHZhbHVlcyB3aXRoIGRldmljZSBzcGVjaWZpYyBpbmZvcm1hdGlvbi4KKworICBBUEkgZnVuY3Rpb25zCisgIC0tLS0tLS0tLS0tLS0KKworICBGdW5jdGlvbnMgcHJvdmlkZWQgYnkgY2hpcCBkcml2ZXIKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgQWxsIGZ1bmN0aW9ucyByZXR1cm4gdGhlIGNvbW1hbmQgcmV0dXJuIHZhbHVlIChyZWFkKSBvciB6ZXJvICh3cml0ZSkgaWYKKyAgc3VjY2Vzc2Z1bC4gQSByZXR1cm4gdmFsdWUgb2YgLUVOT0RBVEEgaW5kaWNhdGVzIHRoYXQgdGhlcmUgaXMgbm8gbWFudWZhY3R1cmVyCisgIHNwZWNpZmljIGNvbW1hbmQsIGJ1dCB0aGF0IGEgc3RhbmRhcmQgUE1CdXMgY29tbWFuZCBtYXkgZXhpc3QuIEFueSBvdGhlcgorICBuZWdhdGl2ZSByZXR1cm4gdmFsdWUgaW5kaWNhdGVzIHRoYXQgdGhlIGNvbW1hbmRzIGRvZXMgbm90IGV4aXN0IGZvciB0aGlzCisgIGNoaXAsIGFuZCB0aGF0IG5vIGF0dGVtcHQgc2hvdWxkIGJlIG1hZGUgdG8gcmVhZCBvciB3cml0ZSB0aGUgc3RhbmRhcmQKKyAgY29tbWFuZC4KKworICBBcyBtZW50aW9uZWQgYWJvdmUsIGFuIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGUgYXBwbGllcyB0byB2aXJ0dWFsIGNvbW1hbmRzLAorICB3aGljaCAgX211c3RfIGJlIGhhbmRsZWQgaW4gZHJpdmVyIHNwZWNpZmljIGNvZGUuIFNlZSAiVmlydHVhbCBQTUJ1cyBDb21tYW5kcyIKKyAgYWJvdmUgZm9yIG1vcmUgZGV0YWlscy4KKworICBDb21tYW5kIGV4ZWN1dGlvbiBpbiB0aGUgY29yZSBQTUJ1cyBkcml2ZXIgY29kZSBpcyBhcyBmb2xsb3dzLgorCisJaWYgKGNoaXBfYWNjZXNzX2Z1bmN0aW9uKSB7CisJCXN0YXR1cyA9IGNoaXBfYWNjZXNzX2Z1bmN0aW9uKCk7CisJCWlmIChzdGF0dXMgIT0gLUVOT0RBVEEpCisJCQlyZXR1cm4gc3RhdHVzOworCX0KKwlpZiAoY29tbWFuZCA+PSBQTUJVU19WSVJUX0JBU0UpCS8qIEZvciB3b3JkIGNvbW1hbmRzL3JlZ2lzdGVycyBvbmx5ICovCisJCXJldHVybiAtRUlOVkFMOworCXJldHVybiBnZW5lcmljX2FjY2VzcygpOworCisgIENoaXAgZHJpdmVycyBtYXkgcHJvdmlkZSBwb2ludGVycyB0byB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBpbiBzdHJ1Y3QKKyAgcG1idXNfZHJpdmVyX2luZm8uIEFsbCBmdW5jdGlvbnMgYXJlIG9wdGlvbmFsLgorCisgIGludCAoKnJlYWRfYnl0ZV9kYXRhKShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCBpbnQgcGFnZSwgaW50IHJlZyk7CisKKyAgUmVhZCBieXRlIGZyb20gcGFnZSA8cGFnZT4sIHJlZ2lzdGVyIDxyZWc+LgorICA8cGFnZT4gbWF5IGJlIC0xLCB3aGljaCBtZWFucyAiY3VycmVudCBwYWdlIi4KKworICBpbnQgKCpyZWFkX3dvcmRfZGF0YSkoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgaW50IHBhZ2UsIGludCByZWcpOworCisgIFJlYWQgd29yZCBmcm9tIHBhZ2UgPHBhZ2U+LCByZWdpc3RlciA8cmVnPi4KKworICBpbnQgKCp3cml0ZV93b3JkX2RhdGEpKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIGludCBwYWdlLCBpbnQgcmVnLAorCQkgICAgICAgICB1MTYgd29yZCk7CisKKyAgV3JpdGUgd29yZCB0byBwYWdlIDxwYWdlPiwgcmVnaXN0ZXIgPHJlZz4uCisKKyAgaW50ICgqd3JpdGVfYnl0ZSkoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgaW50IHBhZ2UsIHU4IHZhbHVlKTsKKworICBXcml0ZSBieXRlIHRvIHBhZ2UgPHBhZ2U+LCByZWdpc3RlciA8cmVnPi4KKyAgPHBhZ2U+IG1heSBiZSAtMSwgd2hpY2ggbWVhbnMgImN1cnJlbnQgcGFnZSIuCisKKyAgaW50ICgqaWRlbnRpZnkpKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHN0cnVjdCBwbWJ1c19kcml2ZXJfaW5mbyAqaW5mbyk7CisKKyAgRGV0ZXJtaW5lIHN1cHBvcnRlZCBQTUJ1cyBmdW5jdGlvbmFsaXR5LiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgbmVjZXNzYXJ5CisgIGlmIGEgY2hpcCBkcml2ZXIgc3VwcG9ydHMgbXVsdGlwbGUgY2hpcHMsIGFuZCB0aGUgY2hpcCBmdW5jdGlvbmFsaXR5IGlzIG5vdAorICBwcmUtZGV0ZXJtaW5lZC4gSXQgaXMgY3VycmVudGx5IG9ubHkgdXNlZCBieSB0aGUgZ2VuZXJpYyBwbWJ1cyBkcml2ZXIKKyAgKHBtYnVzLmMpLgorCisgIEZ1bmN0aW9ucyBleHBvcnRlZCBieSBjb3JlIGRyaXZlcgorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBDaGlwIGRyaXZlcnMgYXJlIGV4cGVjdGVkIHRvIHVzZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB0byByZWFkIG9yIHdyaXRlCisgIFBNQnVzIHJlZ2lzdGVycy4gQ2hpcCBkcml2ZXJzIG1heSBhbHNvIHVzZSBkaXJlY3QgSTJDIGNvbW1hbmRzLiBJZiBkaXJlY3QgSTJDCisgIGNvbW1hbmRzIGFyZSB1c2VkLCB0aGUgY2hpcCBkcml2ZXIgY29kZSBtdXN0IG5vdCBkaXJlY3RseSBtb2RpZnkgdGhlIGN1cnJlbnQKKyAgcGFnZSwgc2luY2UgdGhlIHNlbGVjdGVkIHBhZ2UgaXMgY2FjaGVkIGluIHRoZSBjb3JlIGRyaXZlciBhbmQgdGhlIGNvcmUgZHJpdmVyCisgIHdpbGwgYXNzdW1lIHRoYXQgaXQgaXMgc2VsZWN0ZWQuIFVzaW5nIHBtYnVzX3NldF9wYWdlKCkgdG8gc2VsZWN0IGEgbmV3IHBhZ2UKKyAgaXMgbWFuZGF0b3J5LgorCisgIGludCBwbWJ1c19zZXRfcGFnZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCBwYWdlKTsKKworICBTZXQgUE1CdXMgcGFnZSByZWdpc3RlciB0byA8cGFnZT4gZm9yIHN1YnNlcXVlbnQgY29tbWFuZHMuCisKKyAgaW50IHBtYnVzX3JlYWRfd29yZF9kYXRhKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHU4IHBhZ2UsIHU4IHJlZyk7CisKKyAgUmVhZCB3b3JkIGRhdGEgZnJvbSA8cGFnZT4sIDxyZWc+LiBTaW1pbGFyIHRvIGkyY19zbWJ1c19yZWFkX3dvcmRfZGF0YSgpLCBidXQKKyAgc2VsZWN0cyBwYWdlIGZpcnN0LgorCisgIGludCBwbWJ1c193cml0ZV93b3JkX2RhdGEoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTggcGFnZSwgdTggcmVnLAorCQkJICAgIHUxNiB3b3JkKTsKKworICBXcml0ZSB3b3JkIGRhdGEgdG8gPHBhZ2U+LCA8cmVnPi4gU2ltaWxhciB0byBpMmNfc21idXNfd3JpdGVfd29yZF9kYXRhKCksIGJ1dAorICBzZWxlY3RzIHBhZ2UgZmlyc3QuCisKKyAgaW50IHBtYnVzX3JlYWRfYnl0ZV9kYXRhKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIGludCBwYWdlLCB1OCByZWcpOworCisgIFJlYWQgYnl0ZSBkYXRhIGZyb20gPHBhZ2U+LCA8cmVnPi4gU2ltaWxhciB0byBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoKSwgYnV0CisgIHNlbGVjdHMgcGFnZSBmaXJzdC4gPHBhZ2U+IG1heSBiZSAtMSwgd2hpY2ggbWVhbnMgImN1cnJlbnQgcGFnZSIuCisKKyAgaW50IHBtYnVzX3dyaXRlX2J5dGUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgaW50IHBhZ2UsIHU4IHZhbHVlKTsKKworICBXcml0ZSBieXRlIGRhdGEgdG8gPHBhZ2U+LCA8cmVnPi4gU2ltaWxhciB0byBpMmNfc21idXNfd3JpdGVfYnl0ZSgpLCBidXQKKyAgc2VsZWN0cyBwYWdlIGZpcnN0LiA8cGFnZT4gbWF5IGJlIC0xLCB3aGljaCBtZWFucyAiY3VycmVudCBwYWdlIi4KKworICB2b2lkIHBtYnVzX2NsZWFyX2ZhdWx0cyhzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KTsKKworICBFeGVjdXRlIFBNQnVzICJDbGVhciBGYXVsdCIgY29tbWFuZCBvbiBhbGwgY2hpcCBwYWdlcy4KKyAgVGhpcyBmdW5jdGlvbiBjYWxscyB0aGUgZGV2aWNlIHNwZWNpZmljIHdyaXRlX2J5dGUgZnVuY3Rpb24gaWYgZGVmaW5lZC4KKyAgVGhlcmVmb3JlLCBpdCBtdXN0IF9ub3RfIGJlIGNhbGxlZCBmcm9tIHRoYXQgZnVuY3Rpb24uCisKKyAgYm9vbCBwbWJ1c19jaGVja19ieXRlX3JlZ2lzdGVyKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIGludCBwYWdlLCBpbnQgcmVnKTsKKworICBDaGVjayBpZiBieXRlIHJlZ2lzdGVyIGV4aXN0cy4gUmV0dXJuIHRydWUgaWYgdGhlIHJlZ2lzdGVyIGV4aXN0cywgZmFsc2UKKyAgb3RoZXJ3aXNlLgorICBUaGlzIGZ1bmN0aW9uIGNhbGxzIHRoZSBkZXZpY2Ugc3BlY2lmaWMgd3JpdGVfYnl0ZSBmdW5jdGlvbiBpZiBkZWZpbmVkIHRvCisgIG9idGFpbiB0aGUgY2hpcCBzdGF0dXMuIFRoZXJlZm9yZSwgaXQgbXVzdCBfbm90XyBiZSBjYWxsZWQgZnJvbSB0aGF0IGZ1bmN0aW9uLgorCisgIGJvb2wgcG1idXNfY2hlY2tfd29yZF9yZWdpc3RlcihzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCBpbnQgcGFnZSwgaW50IHJlZyk7CisKKyAgQ2hlY2sgaWYgd29yZCByZWdpc3RlciBleGlzdHMuIFJldHVybiB0cnVlIGlmIHRoZSByZWdpc3RlciBleGlzdHMsIGZhbHNlCisgIG90aGVyd2lzZS4KKyAgVGhpcyBmdW5jdGlvbiBjYWxscyB0aGUgZGV2aWNlIHNwZWNpZmljIHdyaXRlX2J5dGUgZnVuY3Rpb24gaWYgZGVmaW5lZCB0bworICBvYnRhaW4gdGhlIGNoaXAgc3RhdHVzLiBUaGVyZWZvcmUsIGl0IG11c3QgX25vdF8gYmUgY2FsbGVkIGZyb20gdGhhdCBmdW5jdGlvbi4KKworICBpbnQgcG1idXNfZG9fcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkLAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBtYnVzX2RyaXZlcl9pbmZvICppbmZvKTsKKworICBFeGVjdXRlIHByb2JlIGZ1bmN0aW9uLiBTaW1pbGFyIHRvIHN0YW5kYXJkIHByb2JlIGZ1bmN0aW9uIGZvciBvdGhlciBkcml2ZXJzLAorICB3aXRoIHRoZSBwb2ludGVyIHRvIHN0cnVjdCBwbWJ1c19kcml2ZXJfaW5mbyBhcyBhZGRpdGlvbmFsIGFyZ3VtZW50LiBDYWxscworICBpZGVudGlmeSBmdW5jdGlvbiBpZiBzdXBwb3J0ZWQuIE11c3Qgb25seSBiZSBjYWxsZWQgZnJvbSBkZXZpY2UgcHJvYmUKKyAgZnVuY3Rpb24uCisKKyAgdm9pZCBwbWJ1c19kb19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCk7CisKKyAgRXhlY3V0ZSBkcml2ZXIgcmVtb3ZlIGZ1bmN0aW9uLiBTaW1pbGFyIHRvIHN0YW5kYXJkIGRyaXZlciByZW1vdmUgZnVuY3Rpb24uCisKKyAgY29uc3Qgc3RydWN0IHBtYnVzX2RyaXZlcl9pbmZvCisJKnBtYnVzX2dldF9kcml2ZXJfaW5mbyhzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KTsKKworICBSZXR1cm4gcG9pbnRlciB0byBzdHJ1Y3QgcG1idXNfZHJpdmVyX2luZm8gYXMgcGFzc2VkIHRvIHBtYnVzX2RvX3Byb2JlKCkuCisKKworUE1CdXMgZHJpdmVyIHBsYXRmb3JtIGRhdGEKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1BNQnVzIHBsYXRmb3JtIGRhdGEgaXMgZGVmaW5lZCBpbiBpbmNsdWRlL2xpbnV4L2kyYy9wbWJ1cy5oLiBQbGF0Zm9ybSBkYXRhCitjdXJyZW50bHkgb25seSBwcm92aWRlcyBhIGZsYWcgZmllbGQgd2l0aCBhIHNpbmdsZSBiaXQgdXNlZC4KKworI2RlZmluZSBQTUJVU19TS0lQX1NUQVRVU19DSEVDSyAoMSA8PCAwKQorCitzdHJ1Y3QgcG1idXNfcGxhdGZvcm1fZGF0YSB7CisgICAgICAgIHUzMiBmbGFnczsgICAgICAgICAgICAgIC8qIERldmljZSBzcGVjaWZpYyBmbGFncyAqLworfTsKKworCitGbGFncworLS0tLS0KKworUE1CVVNfU0tJUF9TVEFUVVNfQ0hFQ0sKKworRHVyaW5nIHJlZ2lzdGVyIGRldGVjdGlvbiwgc2tpcCBjaGVja2luZyB0aGUgc3RhdHVzIHJlZ2lzdGVyIGZvcgorY29tbXVuaWNhdGlvbiBvciBjb21tYW5kIGVycm9ycy4KKworU29tZSBQTUJ1cyBjaGlwcyByZXNwb25kIHdpdGggdmFsaWQgZGF0YSB3aGVuIHRyeWluZyB0byByZWFkIGFuIHVuc3VwcG9ydGVkCityZWdpc3Rlci4gRm9yIHN1Y2ggY2hpcHMsIGNoZWNraW5nIHRoZSBzdGF0dXMgcmVnaXN0ZXIgaXMgbWFuZGF0b3J5IHdoZW4KK3RyeWluZyB0byBkZXRlcm1pbmUgaWYgYSBjaGlwIHJlZ2lzdGVyIGV4aXN0cyBvciBub3QuCitPdGhlciBQTUJ1cyBjaGlwcyBkb24ndCBzdXBwb3J0IHRoZSBTVEFUVVNfQ01MIHJlZ2lzdGVyLCBvciByZXBvcnQKK2NvbW11bmljYXRpb24gZXJyb3JzIGZvciBubyBleHBsaWNhYmxlIHJlYXNvbi4gRm9yIHN1Y2ggY2hpcHMsIGNoZWNraW5nIHRoZQorc3RhdHVzIHJlZ2lzdGVyIG11c3QgYmUgZGlzYWJsZWQuCisKK1NvbWUgaTJjIGNvbnRyb2xsZXJzIGRvIG5vdCBzdXBwb3J0IHNpbmdsZS1ieXRlIGNvbW1hbmRzICh3cml0ZSBjb21tYW5kcyB3aXRoCitubyBkYXRhLCBpMmNfc21idXNfd3JpdGVfYnl0ZSgpKS4gV2l0aCBzdWNoIGNvbnRyb2xsZXJzLCBjbGVhcmluZyB0aGUgc3RhdHVzCityZWdpc3RlciBpcyBpbXBvc3NpYmxlLCBhbmQgdGhlIFBNQlVTX1NLSVBfU1RBVFVTX0NIRUNLIGZsYWcgbXVzdCBiZSBzZXQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3Bvd3IxMjIwIGIvRG9jdW1lbnRhdGlvbi9od21vbi9wb3dyMTIyMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWU0NGY3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9wb3dyMTIyMApAQCAtMCwwICsxLDQ1IEBACitLZXJuZWwgZHJpdmVyIHBvd3IxMjIwCis9PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIExhdHRpY2UgUE9XUjEyMjBBVDgKKyAgICBQcmVmaXg6ICdwb3dyMTIyMCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBMYXR0aWNlIHdlYnNpdGUKKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubGF0dGljZXNlbWkuY29tLworCitBdXRob3I6IFNjb3R0IEthbm93aXR6IDxzY290dC5rYW5vd2l0ekBnbWFpbC5jb20+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgTGF0dGljZSBQT1dSMTIyMEFUOCBjaGlwLiBUaGUgUE9XUjEyMjAKK2luY2x1ZGVzIHZvbHRhZ2UgbW9uaXRvcmluZyBmb3IgMTQgaW5wdXRzIGFzIHdlbGwgYXMgdHJpbSBzZXR0aW5ncworZm9yIG91dHB1dCB2b2x0YWdlcyBhbmQgR1BJT3MuIFRoaXMgZHJpdmVyIGltcGxlbWVudHMgdGhlIHZvbHRhZ2UKK21vbml0b3JpbmcgcG9ydGlvbiBvZiB0aGUgY2hpcC4KKworVm9sdGFnZXMgYXJlIHNhbXBsZWQgYnkgYSAxMi1iaXQgQURDIHdpdGggYSBzdGVwIHNpemUgb2YgMiBtVi4KK0FuIGluLWxpbmUgYXR0ZW51YXRvciBhbGxvd3MgbWVhc3VyZW1lbnRzIGZyb20gMCB0byA2IFYuIFRoZQorYXR0ZW51YXRvciBpcyBlbmFibGVkIG9yIGRpc2FibGVkIGRlcGVuZGluZyBvbiB0aGUgc2V0dGluZyBvZiB0aGUKK2lucHV0J3MgbWF4IHZhbHVlLiBUaGUgZHJpdmVyIHdpbGwgZW5hYmxlIHRoZSBhdHRlbnVhdG9yIGZvciBhbnkKK3ZhbHVlIG92ZXIgdGhlIGxvdyBtZWFzdXJlbWVudCByYW5nZSBtYXhpbXVtIG9mIDIgVi4KKworVGhlIGlucHV0IG5hbWluZyBjb252ZW50aW9uIGlzIGFzIGZvbGxvd3M6CisKK2RyaXZlciBuYW1lICAgIHBpbiBuYW1lCitpbjAgICAgICAgICAgICBWTU9OMQoraW4xICAgICAgICAgICAgVk1PTjIKK2luMiAgICAgICAgICAgIFZNT04zCitpbjIgICAgICAgICAgICBWTU9ONAoraW40ICAgICAgICAgICAgVk1PTjUKK2luNSAgICAgICAgICAgIFZNT042CitpbjYgICAgICAgICAgICBWTU9ONworaW43ICAgICAgICAgICAgVk1PTjgKK2luOCAgICAgICAgICAgIFZNT045CitpbjkgICAgICAgICAgICBWTU9OMTAKK2luMTAgICAgICAgICAgIFZNT04xMQoraW4xMSAgICAgICAgICAgVk1PTjEyCitpbjEyICAgICAgICAgICBWQ0NBCitpbjEzICAgICAgICAgICBWQ0NJTlAKKworVGhlIEFEQyByZWFkaW5ncyBhcmUgdXBkYXRlZCBvbiByZXF1ZXN0IHdpdGggYSBtaW5pbXVtIHBlcmlvZCBvZiAxcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vcHdtLWZhbiBiL0RvY3VtZW50YXRpb24vaHdtb24vcHdtLWZhbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODUyOWQyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9wd20tZmFuCkBAIC0wLDAgKzEsMTcgQEAKK0tlcm5lbCBkcml2ZXIgcHdtLWZhbgorPT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgZHJpdmVyIGVuYWJsZXMgdGhlIHVzZSBvZiBhIFBXTSBtb2R1bGUgdG8gZHJpdmUgYSBmYW4uIEl0IHVzZXMgdGhlCitnZW5lcmljIFBXTSBpbnRlcmZhY2UgdGh1cyBpdCBpcyBoYXJkd2FyZSBpbmRlcGVuZGVudC4gSXQgY2FuIGJlIHVzZWQgb24KK21hbnkgU29DcywgYXMgbG9uZyBhcyB0aGUgU29DIHN1cHBsaWVzIGEgUFdNIGxpbmUgZHJpdmVyIHRoYXQgZXhwb3NlcwordGhlIGdlbmVyaWMgUFdNIEFQSS4KKworQXV0aG9yOiBLYW1pbCBEZWJza2kgPGsuZGVic2tpQHNhbXN1bmcuY29tPgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIGRyaXZlciBpbXBsZW1lbnRzIGEgc2ltcGxlIGludGVyZmFjZSBmb3IgZHJpdmluZyBhIGZhbiBjb25uZWN0ZWQgdG8KK2EgUFdNIG91dHB1dC4gSXQgdXNlcyB0aGUgZ2VuZXJpYyBQV00gaW50ZXJmYWNlLCB0aHVzIGl0IGNhbiBiZSB1c2VkIHdpdGgKK2EgcmFuZ2Ugb2YgU29Dcy4gVGhlIGRyaXZlciBleHBvc2VzIHRoZSBmYW4gdG8gdGhlIHVzZXIgc3BhY2UgdGhyb3VnaAordGhlIGh3bW9uJ3Mgc3lzZnMgaW50ZXJmYWNlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9zY2g1NjI3IGIvRG9jdW1lbnRhdGlvbi9od21vbi9zY2g1NjI3Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1NTFkMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3NjaDU2MjcKQEAgLTAsMCArMSwyNyBAQAorS2VybmVsIGRyaXZlciBzY2g1NjI3Cis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIFNNU0MgU0NINTYyNworICAgIFByZWZpeDogJ3NjaDU2MjcnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IG5vbmUsIGFkZHJlc3MgcmVhZCBmcm9tIFN1cGVyIEkvTyBjb25maWcgc3BhY2UKKyAgICBEYXRhc2hlZXQ6IEFwcGxpY2F0aW9uIE5vdGUgYXZhaWxhYmxlIHVwb24gcmVxdWVzdAorCitBdXRob3I6IEhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+CisKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1NNU0MgU0NINTYyNyBTdXBlciBJL08gY2hpcHMgaW5jbHVkZSBjb21wbGV0ZSBoYXJkd2FyZSBtb25pdG9yaW5nCitjYXBhYmlsaXRpZXMuIFRoZXkgY2FuIG1vbml0b3IgdXAgdG8gNSB2b2x0YWdlcywgNCBmYW5zIGFuZCA4IHRlbXBlcmF0dXJlcy4KKworVGhlIFNNU0MgU0NINTYyNyBoYXJkd2FyZSBtb25pdG9yaW5nIHBhcnQgYWxzbyBjb250YWlucyBhbiBpbnRlZ3JhdGVkCit3YXRjaGRvZy4gSW4gb3JkZXIgZm9yIHRoaXMgd2F0Y2hkb2cgdG8gZnVuY3Rpb24gc29tZSBtb3RoZXJib2FyZCBzcGVjaWZpYworaW5pdGlhbGl6YXRpb24gbW9zdCBiZSBkb25lIGJ5IHRoZSBCSU9TLCBzbyBpZiB0aGUgd2F0Y2hkb2cgaXMgbm90IGVuYWJsZWQKK2J5IHRoZSBCSU9TIHRoZSBzY2g1NjI3IGRyaXZlciB3aWxsIG5vdCByZWdpc3RlciBhIHdhdGNoZG9nIGRldmljZS4KKworVGhlIGhhcmR3YXJlIG1vbml0b3JpbmcgcGFydCBvZiB0aGUgU01TQyBTQ0g1NjI3IGlzIGFjY2Vzc2VkIGJ5IHRhbGtpbmcKK3Rocm91Z2ggYW4gZW1iZWRkZWQgbWljcm9jb250cm9sbGVyLiBBbiBhcHBsaWNhdGlvbiBub3RlIGRlc2NyaWJpbmcgdGhlCitwcm90b2NvbCBmb3IgY29tbXVuaWNhdGluZyB3aXRoIHRoZSBtaWNyb2NvbnRyb2xsZXIgaXMgYXZhaWxhYmxlIHVwb24KK3JlcXVlc3QuIFBsZWFzZSBtYWlsIG1lIGlmIHlvdSB3YW50IGEgY29weS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vc2NoNTYzNiBiL0RvY3VtZW50YXRpb24vaHdtb24vc2NoNTYzNgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjBhMDFkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9zY2g1NjM2CkBAIC0wLDAgKzEsMzQgQEAKK0tlcm5lbCBkcml2ZXIgc2NoNTYzNgorPT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBTTVNDIFNDSDU2MzYKKyAgICBQcmVmaXg6ICdzY2g1NjM2JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBub25lLCBhZGRyZXNzIHJlYWQgZnJvbSBTdXBlciBJL08gY29uZmlnIHNwYWNlCisKK0F1dGhvcjogSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworU01TQyBTQ0g1NjM2IFN1cGVyIEkvTyBjaGlwcyBpbmNsdWRlIGFuIGVtYmVkZGVkIG1pY3JvY29udHJvbGxlciBmb3IKK2hhcmR3YXJlIG1vbml0b3Jpbmcgc29sdXRpb25zLCBhbGxvd2luZyBtb3RoZXJib2FyZCBtYW51ZmFjdHVyZXJzIHRvIGNyZWF0ZQordGhlaXIgb3duIGN1c3RvbSBod21vbiBzb2x1dGlvbiBiYXNlZCB1cG9uIHRoZSBTQ0g1NjM2LgorCitDdXJyZW50bHkgdGhlIHNjaDU2MzYgZHJpdmVyIG9ubHkgc3VwcG9ydHMgdGhlIEZ1aml0c3UgVGhlc2V1cyBTQ0g1NjM2IGJhc2VkCitod21vbiBzb2x1dGlvbi4gVGhlIHNjaDU2MzYgZHJpdmVyIHJ1bnMgYSBzYW5pdHkgY2hlY2sgb24gbG9hZGluZyB0byBlbnN1cmUKK2l0IGlzIGRlYWxpbmcgd2l0aCBhIEZ1aml0c3UgVGhlc2V1cyBhbmQgbm90IHdpdGggYW5vdGhlciBjdXN0b20gU0NINTYzNiBiYXNlZAoraHdtb24gc29sdXRpb24uCisKK1RoZSBGdWppdHN1IFRoZXNldXMgY2FuIG1vbml0b3IgdXAgdG8gNSB2b2x0YWdlcywgOCBmYW5zIGFuZCAxNgordGVtcGVyYXR1cmVzLiBOb3RlIHRoYXQgdGhlIGRyaXZlciBkZXRlY3RzIGhvdyBtYW55IGZhbiBoZWFkZXJzIC8KK3RlbXBlcmF0dXJlIHNlbnNvcnMgYXJlIGFjdHVhbGx5IGltcGxlbWVudGVkIG9uIHRoZSBtb3RoZXJib2FyZCwgc28geW91IHdpbGwKK2xpa2VseSBzZWUgZmV3ZXIgdGVtcGVyYXR1cmUgYW5kIGZhbiBpbnB1dHMuCisKK1RoZSBGdWppdHN1IFRoZXNldXMgaHdtb24gc29sdXRpb24gYWxzbyBjb250YWlucyBhbiBpbnRlZ3JhdGVkIHdhdGNoZG9nLgorVGhpcyB3YXRjaGRvZyBpcyBmdWxseSBzdXBwb3J0ZWQgYnkgdGhlIHNjaDU2MzYgZHJpdmVyLgorCitBbiBhcHBsaWNhdGlvbiBub3RlIGRlc2NyaWJpbmcgdGhlIFRoZXNldXMnIHJlZ2lzdGVycywgYXMgd2VsbCBhcyBhbgorYXBwbGljYXRpb24gbm90ZSBkZXNjcmliaW5nIHRoZSBwcm90b2NvbCBmb3IgY29tbXVuaWNhdGluZyB3aXRoIHRoZQorbWljcm9jb250cm9sbGVyIGlzIGF2YWlsYWJsZSB1cG9uIHJlcXVlc3QuIFBsZWFzZSBtYWlsIG1lIGlmIHlvdSB3YW50IGEgY29weS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vc2NwaS1od21vbiBiL0RvY3VtZW50YXRpb24vaHdtb24vc2NwaS1od21vbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2ZjZGYyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9zY3BpLWh3bW9uCkBAIC0wLDAgKzEsMzMgQEAKK0tlcm5lbCBkcml2ZXIgc2NwaS1od21vbgorPT09PT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAqIENoaXBzIGJhc2VkIG9uIEFSTSBTeXN0ZW0gQ29udHJvbCBQcm9jZXNzb3IgSW50ZXJmYWNlCisgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgRGF0YXNoZWV0OiBodHRwOi8vaW5mb2NlbnRlci5hcm0uY29tL2hlbHAvaW5kZXguanNwP3RvcGljPS9jb20uYXJtLmRvYy5kdWkwOTIyYi9pbmRleC5odG1sCisKK0F1dGhvcjogUHVuaXQgQWdyYXdhbCA8cHVuaXQuYWdyYXdhbEBhcm0uY29tPgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgc3VwcG9ydHMgaGFyZHdhcmUgbW9uaXRvcmluZyBmb3IgU29DJ3MgYmFzZWQgb24gdGhlIEFSTQorU3lzdGVtIENvbnRyb2wgUHJvY2Vzc29yIChTQ1ApIGltcGxlbWVudGluZyB0aGUgU3lzdGVtIENvbnRyb2wKK1Byb2Nlc3NvciBJbnRlcmZhY2UgKFNDUEkpLiBUaGUgZm9sbG93aW5nIHNlbnNvciB0eXBlcyBhcmUgc3VwcG9ydGVkCitieSB0aGUgU0NQIC0KKworICAqIHRlbXBlcmF0dXJlCisgICogdm9sdGFnZQorICAqIGN1cnJlbnQKKyAgKiBwb3dlcgorCitUaGUgU0NQIGludGVyZmFjZSBwcm92aWRlcyBhbiBBUEkgdG8gcXVlcnkgdGhlIGF2YWlsYWJsZSBzZW5zb3JzIGFuZAordGhlaXIgdmFsdWVzIHdoaWNoIGFyZSB0aGVuIGV4cG9ydGVkIHRvIHVzZXJzcGFjZSBieSB0aGlzIGRyaXZlci4KKworVXNhZ2UgTm90ZXMKKy0tLS0tLS0tLS0tCisKK1RoZSBkcml2ZXIgcmVsaWVzIG9uIGRldmljZSB0cmVlIG5vZGUgdG8gaW5kaWNhdGUgdGhlIHByZXNlbmNlIG9mIFNDUEkKK3N1cHBvcnQgaW4gdGhlIGtlcm5lbC4gU2VlCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2FybSxzY3BpLnR4dCBmb3IgZGV0YWlscyBvZiB0aGUKK2RldmljZXRyZWUgbm9kZS4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3NodDE1IGIvRG9jdW1lbnRhdGlvbi9od21vbi9zaHQxNQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Nzg5ODdkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9zaHQxNQpAQCAtMCwwICsxLDc0IEBACitLZXJuZWwgZHJpdmVyIHNodDE1Cis9PT09PT09PT09PT09PT09PT09CisKK0F1dGhvcnM6CisgICogV291dGVyIEhvcnJlCisgICogSm9uYXRoYW4gQ2FtZXJvbgorICAqIFZpdmllbiBEaWRlbG90IDx2aXZpZW4uZGlkZWxvdEBzYXZvaXJmYWlyZWxpbnV4LmNvbT4KKyAgKiBKZXJvbWUgT3VmZWxsYSA8amVyb21lLm91ZmVsbGFAc2F2b2lyZmFpcmVsaW51eC5jb20+CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBTZW5zaXJpb24gU0hUMTAKKyAgICBQcmVmaXg6ICdzaHQxMCcKKworICAqIFNlbnNpcmlvbiBTSFQxMQorICAgIFByZWZpeDogJ3NodDExJworCisgICogU2Vuc2lyaW9uIFNIVDE1CisgICAgUHJlZml4OiAnc2h0MTUnCisKKyAgKiBTZW5zaXJpb24gU0hUNzEKKyAgICBQcmVmaXg6ICdzaHQ3MScKKworICAqIFNlbnNpcmlvbiBTSFQ3NQorICAgIFByZWZpeDogJ3NodDc1JworCitEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgU2Vuc2lyaW9uIHdlYnNpdGUKK2h0dHA6Ly93d3cuc2Vuc2lyaW9uLmNoL2VuL3BkZi9wcm9kdWN0X2luZm9ybWF0aW9uL0RhdGFzaGVldC1odW1pZGl0eS1zZW5zb3ItU0hUMXgucGRmCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGUgU0hUMTAsIFNIVDExLCBTSFQxNSwgU0hUNzEsIGFuZCBTSFQ3NSBhcmUgaHVtaWRpdHkgYW5kIHRlbXBlcmF0dXJlCitzZW5zb3JzLgorCitUaGUgZGV2aWNlcyBjb21tdW5pY2F0ZSB1c2luZyB0d28gR1BJTyBsaW5lcy4KKworU3VwcG9ydGVkIHJlc29sdXRpb25zIGZvciB0aGUgbWVhc3VyZW1lbnRzIGFyZSAxNCBiaXRzIGZvciB0ZW1wZXJhdHVyZSBhbmQgMTIKK2JpdHMgZm9yIGh1bWlkaXR5LCBvciAxMiBiaXRzIGZvciB0ZW1wZXJhdHVyZSBhbmQgOCBiaXRzIGZvciBodW1pZGl0eS4KKworVGhlIGh1bWlkaXR5IGNhbGlicmF0aW9uIGNvZWZmaWNpZW50cyBhcmUgcHJvZ3JhbW1lZCBpbnRvIGFuIE9UUCBtZW1vcnkgb24gdGhlCitjaGlwLiBUaGVzZSBjb2VmZmljaWVudHMgYXJlIHVzZWQgdG8gaW50ZXJuYWxseSBjYWxpYnJhdGUgdGhlIHNpZ25hbHMgZnJvbSB0aGUKK3NlbnNvcnMuIERpc2FibGluZyB0aGUgcmVsb2FkIG9mIHRob3NlIGNvZWZmaWNpZW50cyBhbGxvd3Mgc2F2aW5nIDEwbXMgZm9yIGVhY2gKK21lYXN1cmVtZW50IGFuZCBkZWNyZWFzZSBwb3dlciBjb25zdW1wdGlvbiwgd2hpbGUgbG9zaW5nIG9uIHByZWNpc2lvbi4KKworU29tZSBvcHRpb25zIG1heSBiZSBzZXQgZGlyZWN0bHkgaW4gdGhlIHNodDE1X3BsYXRmb3JtX2RhdGEgc3RydWN0dXJlCitvciB2aWEgc3lzZnMgYXR0cmlidXRlcy4KKworTm90ZXM6CisgICogVGhlIHJlZ3VsYXRvciBzdXBwbHkgbmFtZSBpcyBzZXQgdG8gInZjYyIuCisgICogSWYgYSBDUkMgdmFsaWRhdGlvbiBmYWlscywgYSBzb2Z0IHJlc2V0IGNvbW1hbmQgaXMgc2VudCwgd2hpY2ggcmVzZXRzCisgICAgc3RhdHVzIHJlZ2lzdGVyIHRvIGl0cyBoYXJkd2FyZSBkZWZhdWx0IHZhbHVlLCBidXQgdGhlIGRyaXZlciB3aWxsIHRyeSB0bworICAgIHJlc3RvcmUgdGhlIHByZXZpb3VzIGRldmljZSBjb25maWd1cmF0aW9uLgorCitQbGF0Zm9ybSBkYXRhCistLS0tLS0tLS0tLS0tCisKKyogY2hlY2tzdW06CisgIHNldCBpdCB0byB0cnVlIHRvIGVuYWJsZSBDUkMgdmFsaWRhdGlvbiBvZiB0aGUgcmVhZGluZ3MgKGRlZmF1bHQgdG8gZmFsc2UpLgorKiBub19vdHBfcmVsb2FkOgorICBmbGFnIHRvIGluZGljYXRlIG5vdCB0byByZWxvYWQgZnJvbSBPVFAgKGRlZmF1bHQgdG8gZmFsc2UpLgorKiBsb3dfcmVzb2x1dGlvbjoKKyAgZmxhZyB0byBpbmRpY2F0ZSB0aGUgdGVtcC9odW1pZGl0eSByZXNvbHV0aW9uIHRvIHVzZSAoZGVmYXVsdCB0byBmYWxzZSkuCisKK1N5c2ZzIGludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tCisKKyogdGVtcDFfaW5wdXQ6ICAgICB0ZW1wZXJhdHVyZSBpbnB1dAorKiBodW1pZGl0eTFfaW5wdXQ6IGh1bWlkaXR5IGlucHV0CisqIGhlYXRlcl9lbmFibGU6ICAgd3JpdGUgMSBpbiB0aGlzIGF0dHJpYnV0ZSB0byBlbmFibGUgdGhlIG9uLWNoaXAgaGVhdGVyLAorICAgICAgICAgICAgICAgICAgIDAgdG8gZGlzYWJsZSBpdC4gQmUgY2FyZWZ1bCBub3QgdG8gZW5hYmxlIHRoZSBoZWF0ZXIKKyAgICAgICAgICAgICAgICAgICBmb3IgdG9vIGxvbmcuCisqIHRlbXAxX2ZhdWx0OiAgICAgaWYgMSwgdGhpcyBtZWFucyB0aGF0IHRoZSB2b2x0YWdlIGlzIGxvdyAoYmVsb3cgMi40N1YpIGFuZAorICAgICAgICAgICAgICAgICAgIG1lYXN1cmVtZW50IG1heSBiZSBpbnZhbGlkLgorKiBodW1pZGl0eTFfZmF1bHQ6IHNhbWUgYXMgdGVtcDFfZmF1bHQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3NodDIxIGIvRG9jdW1lbnRhdGlvbi9od21vbi9zaHQyMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjE3ZmRhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9zaHQyMQpAQCAtMCwwICsxLDQ5IEBACitLZXJuZWwgZHJpdmVyIHNodDIxCis9PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBTZW5zaXJpb24gU0hUMjEKKyAgICBQcmVmaXg6ICdzaHQyMScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBTZW5zaXJpb24gd2Vic2l0ZQorICAgIGh0dHA6Ly93d3cuc2Vuc2lyaW9uLmNvbS9lbi9wZGYvcHJvZHVjdF9pbmZvcm1hdGlvbi9EYXRhc2hlZXQtaHVtaWRpdHktc2Vuc29yLVNIVDIxLnBkZgorCisgICogU2Vuc2lyaW9uIFNIVDI1CisgICAgUHJlZml4OiAnc2h0MjEnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IG5vbmUKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgU2Vuc2lyaW9uIHdlYnNpdGUKKyAgICBodHRwOi8vd3d3LnNlbnNpcmlvbi5jb20vZW4vcGRmL3Byb2R1Y3RfaW5mb3JtYXRpb24vRGF0YXNoZWV0LWh1bWlkaXR5LXNlbnNvci1TSFQyNS5wZGYKKworQXV0aG9yOgorICBVcnMgRmxlaXNjaCA8dXJzLmZsZWlzY2hAc2Vuc2lyaW9uLmNvbT4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoZSBTSFQyMSBhbmQgU0hUMjUgYXJlIGh1bWlkaXR5IGFuZCB0ZW1wZXJhdHVyZSBzZW5zb3JzIGluIGEgREZOIHBhY2thZ2Ugb2YKK29ubHkgMyB4IDMgbW0gZm9vdHByaW50IGFuZCAxLjEgbW0gaGVpZ2h0LiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28KK2RldmljZXMgaXMgdGhlIGhpZ2hlciBsZXZlbCBvZiBwcmVjaXNpb24gb2YgdGhlIFNIVDI1ICgxLjglIHJlbGF0aXZlIGh1bWlkaXR5LAorMC4yIGRlZ3JlZSBDZWxzaXVzKSBjb21wYXJlZCB3aXRoIHRoZSBTSFQyMSAoMi4wJSByZWxhdGl2ZSBodW1pZGl0eSwKKzAuMyBkZWdyZWUgQ2Vsc2l1cykuCisKK1RoZSBkZXZpY2VzIGNvbW11bmljYXRlIHdpdGggdGhlIEkyQyBwcm90b2NvbC4gQWxsIHNlbnNvcnMgYXJlIHNldCB0byB0aGUgc2FtZQorSTJDIGFkZHJlc3MgMHg0MCwgc28gYW4gZW50cnkgd2l0aCBJMkNfQk9BUkRfSU5GTygic2h0MjEiLCAweDQwKSBjYW4gYmUgdXNlZAoraW4gdGhlIGJvYXJkIHNldHVwIGNvZGUuCisKK3N5c2ZzLUludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tCisKK3RlbXAxX2lucHV0IC0gdGVtcGVyYXR1cmUgaW5wdXQKK2h1bWlkaXR5MV9pbnB1dCAtIGh1bWlkaXR5IGlucHV0CisKK05vdGVzCistLS0tLQorCitUaGUgZHJpdmVyIHVzZXMgdGhlIGRlZmF1bHQgcmVzb2x1dGlvbiBzZXR0aW5ncyBvZiAxMiBiaXQgZm9yIGh1bWlkaXR5IGFuZCAxNAorYml0IGZvciB0ZW1wZXJhdHVyZSwgd2hpY2ggcmVzdWx0cyBpbiB0eXBpY2FsIG1lYXN1cmVtZW50IHRpbWVzIG9mIDIyIG1zIGZvcgoraHVtaWRpdHkgYW5kIDY2IG1zIGZvciB0ZW1wZXJhdHVyZS4gVG8ga2VlcCBzZWxmIGhlYXRpbmcgYmVsb3cgMC4xIGRlZ3JlZQorQ2Vsc2l1cywgdGhlIGRldmljZSBzaG91bGQgbm90IGJlIGFjdGl2ZSBmb3IgbW9yZSB0aGFuIDEwJSBvZiB0aGUgdGltZSwKK2UuZy4gbWF4aW11bSB0d28gbWVhc3VyZW1lbnRzIHBlciBzZWNvbmQgYXQgdGhlIGdpdmVuIHJlc29sdXRpb24uCisKK0RpZmZlcmVudCByZXNvbHV0aW9ucywgdGhlIG9uLWNoaXAgaGVhdGVyLCB1c2luZyB0aGUgQ1JDIGNoZWNrc3VtIGFuZCByZWFkaW5nCit0aGUgc2VyaWFsIG51bWJlciBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3NodGMxIGIvRG9jdW1lbnRhdGlvbi9od21vbi9zaHRjMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjFlMDU0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9zaHRjMQpAQCAtMCwwICsxLDQzIEBACitLZXJuZWwgZHJpdmVyIHNodGMxCis9PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBTZW5zaXJpb24gU0hUQzEKKyAgICBQcmVmaXg6ICdzaHRjMScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZQorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5zZW5zaXJpb24uY29tL2ZpbGUvZGF0YXNoZWV0X3NodGMxCisKKyAgKiBTZW5zaXJpb24gU0hUVzEKKyAgICBQcmVmaXg6ICdzaHR3MScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZQorICAgIERhdGFzaGVldDogTm90IHB1YmxpY2x5IGF2YWlsYWJsZQorCitBdXRob3I6CisgIEpvaGFubmVzIFdpbmtlbG1hbm4gPGpvaGFubmVzLndpbmtlbG1hbm5Ac2Vuc2lyaW9uLmNvbT4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgdGhlIFNlbnNpcmlvbiBTSFRDMSBjaGlwLCBhIGh1bWlkaXR5IGFuZAordGVtcGVyYXR1cmUgc2Vuc29yLiBUZW1wZXJhdHVyZSBpcyBtZWFzdXJlZCBpbiBkZWdyZWVzIGNlbHNpdXMsIHJlbGF0aXZlCitodW1pZGl0eSBpcyBleHByZXNzZWQgYXMgYSBwZXJjZW50YWdlLiBEcml2ZXIgY2FuIGJlIHVzZWQgYXMgd2VsbCBmb3IgU0hUVzEKK2NoaXAsIHdoaWNoIGhhcyB0aGUgc2FtZSBlbGVjdHJpY2FsIGludGVyZmFjZS4KKworVGhlIGRldmljZSBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgSTJDIHByb3RvY29sLiBBbGwgc2Vuc29ycyBhcmUgc2V0IHRvIEkyQworYWRkcmVzcyAweDcwLiBTZWUgRG9jdW1lbnRhdGlvbi9pMmMvaW5zdGFudGlhdGluZy1kZXZpY2VzIGZvciBtZXRob2RzIHRvCitpbnN0YW50aWF0ZSB0aGUgZGV2aWNlLgorCitUaGVyZSBhcmUgdHdvIG9wdGlvbnMgY29uZmlndXJhYmxlIGJ5IG1lYW5zIG9mIHNodGMxX3BsYXRmb3JtX2RhdGE6CisxLiBibG9ja2luZyAocHVsbCB0aGUgSTJDIGNsb2NrIGxpbmUgZG93biB3aGlsZSBwZXJmb3JtaW5nIHRoZSBtZWFzdXJlbWVudCkgb3IKKyAgIG5vbi1ibG9ja2luZyBtb2RlLiBCbG9ja2luZyBtb2RlIHdpbGwgZ3VhcmFudGVlIHRoZSBmYXN0ZXN0IHJlc3VsdCBidXQKKyAgIHRoZSBJMkMgYnVzIHdpbGwgYmUgYnVzeSBkdXJpbmcgdGhhdCB0aW1lLiBCeSBkZWZhdWx0LCBub24tYmxvY2tpbmcgbW9kZQorICAgaXMgdXNlZC4gTWFrZSBzdXJlIGNsb2NrLXN0cmV0Y2hpbmcgd29ya3MgcHJvcGVybHkgb24geW91ciBkZXZpY2UgaWYgeW91CisgICB3YW50IHRvIHVzZSBibG9ja2luZyBtb2RlLgorMi4gaGlnaCBvciBsb3cgYWNjdXJhY3kuIEhpZ2ggYWNjdXJhY3kgaXMgdXNlZCBieSBkZWZhdWx0IGFuZCB1c2luZyBpdCBpcworICAgc3Ryb25nbHkgcmVjb21tZW5kZWQuCisKK3N5c2ZzLUludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tCisKK3RlbXAxX2lucHV0IC0gdGVtcGVyYXR1cmUgaW5wdXQKK2h1bWlkaXR5MV9pbnB1dCAtIGh1bWlkaXR5IGlucHV0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3NpczU1OTUgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3NpczU1OTUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY4ODc3YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vc2lzNTU5NQpAQCAtMCwwICsxLDEwNiBAQAorS2VybmVsIGRyaXZlciBzaXM1NTk1Cis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIFNpbGljb24gSW50ZWdyYXRlZCBTeXN0ZW1zIENvcnAuIFNpUzU1OTUgU291dGhicmlkZ2UgSGFyZHdhcmUgTW9uaXRvcgorICAgIFByZWZpeDogJ3NpczU1OTUnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IElTQSBpbiBQQ0ktc3BhY2UgZW5jb2RlZCBhZGRyZXNzCisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIFNpbGljb24gSW50ZWdyYXRlZCBTeXN0ZW1zIENvcnAuIHNpdGUuCisKK0F1dGhvcnM6CisgICAgICAgIEt5w7ZzdGkgTcOkbGtraSA8a21hbGtraUBjYy5odXQuZmk+LAorICAgICAgICBNYXJrIEQuIFN0dWRlYmFrZXIgPG1kc3h5ejEyM0B5YWhvby5jb20+LAorICAgICAgICBBdXJlbGllbiBKYXJubyA8YXVyZWxpZW5AYXVyZWwzMi5uZXQ+IDIuNiBwb3J0CisKKyAgIFNpUyBzb3V0aGJyaWRnZSBoYXMgYSBMTTc4LWxpa2UgY2hpcCBpbnRlZ3JhdGVkIG9uIHRoZSBzYW1lIElDLgorICAgVGhpcyBkcml2ZXIgaXMgYSBjdXN0b21pemVkIGNvcHkgb2YgbG03OC5jCisKKyAgIFN1cHBvcnRzIGZvbGxvd2luZyByZXZpc2lvbnM6CisgICAgICAgVmVyc2lvbiAgICAgICAgIFBDSSBJRCAgICAgICAgICBQQ0kgUmV2aXNpb24KKyAgICAgICAxICAgICAgICAgICAgICAgMTAzOS8wMDA4ICAgICAgIEFGIG9yIGxlc3MKKyAgICAgICAyICAgICAgICAgICAgICAgMTAzOS8wMDA4ICAgICAgIEIwIG9yIGdyZWF0ZXIKKworICAgTm90ZTogdGhlc2UgY2hpcHMgY29udGFpbiBhIDAwMDggZGV2aWNlIHdoaWNoIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZQorICAgICAgICA1NTk1LiBXZSByZWNvZ25pemUgdGhlc2UgYnkgdGhlIHByZXNlbmNlIG9mIHRoZSBsaXN0ZWQKKyAgICAgICAgImJsYWNrbGlzdCIgUENJIElEIGFuZCByZWZ1c2UgdG8gbG9hZC4KKworICAgTk9UIFNVUFBPUlRFRCAgICAgICBQQ0kgSUQgICAgICAgICAgQkxBQ0tMSVNUIFBDSSBJRAorICAgICAgICA1NDAgICAgICAgICAgICAwMDA4ICAgICAgICAgICAgMDU0MAorICAgICAgICA1NTAgICAgICAgICAgICAwMDA4ICAgICAgICAgICAgMDU1MAorICAgICAgIDU1MTMgICAgICAgICAgICAwMDA4ICAgICAgICAgICAgNTUxMQorICAgICAgIDU1ODEgICAgICAgICAgICAwMDA4ICAgICAgICAgICAgNTU5NworICAgICAgIDU1ODIgICAgICAgICAgICAwMDA4ICAgICAgICAgICAgNTU5NworICAgICAgIDU1OTcgICAgICAgICAgICAwMDA4ICAgICAgICAgICAgNTU5NworICAgICAgICA2MzAgICAgICAgICAgICAwMDA4ICAgICAgICAgICAgMDYzMAorICAgICAgICA2NDUgICAgICAgICAgICAwMDA4ICAgICAgICAgICAgMDY0NQorICAgICAgICA3MzAgICAgICAgICAgICAwMDA4ICAgICAgICAgICAgMDczMAorICAgICAgICA3MzUgICAgICAgICAgICAwMDA4ICAgICAgICAgICAgMDczNQorCisKK01vZHVsZSBQYXJhbWV0ZXJzCistLS0tLS0tLS0tLS0tLS0tLQorZm9yY2VfYWRkcj0weGFkZHIJU2V0IHRoZSBJL08gYmFzZSBhZGRyZXNzLiBVc2VmdWwgZm9yIGJvYXJkcworCQkJdGhhdCBkb24ndCBzZXQgdGhlIGFkZHJlc3MgaW4gdGhlIEJJT1MuIERvZXMgbm90IGRvIGEKKwkJCVBDSSBmb3JjZTsgdGhlIGRldmljZSBtdXN0IHN0aWxsIGJlIHByZXNlbnQgaW4gbHNwY2kuCisJCQlEb24ndCB1c2UgdGhpcyB1bmxlc3MgdGhlIGRyaXZlciBjb21wbGFpbnMgdGhhdCB0aGUKKwkJCWJhc2UgYWRkcmVzcyBpcyBub3Qgc2V0LgorCQkJRXhhbXBsZTogJ21vZHByb2JlIHNpczU1OTUgZm9yY2VfYWRkcj0weDI5MCcKKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIFNpUzU1OTUgc291dGhicmlkZ2UgaGFzIGludGVncmF0ZWQgaGFyZHdhcmUgbW9uaXRvciBmdW5jdGlvbnMuIEl0IGFsc28KK2hhcyBhbiBJMkMgYnVzLCBidXQgdGhpcyBkcml2ZXIgb25seSBzdXBwb3J0cyB0aGUgaGFyZHdhcmUgbW9uaXRvci4gRm9yIHRoZQorSTJDIGJ1cyBkcml2ZXIgc2VlIGkyYy1zaXM1NTk1LgorCitUaGUgU2lTNTU5NSBpbXBsZW1lbnRzIHplcm8gb3Igb25lIHRlbXBlcmF0dXJlIHNlbnNvciwgdHdvIGZhbiBzcGVlZAorc2Vuc29ycywgZm91ciBvciBmaXZlIHZvbHRhZ2Ugc2Vuc29ycywgYW5kIGFsYXJtcy4KKworT24gdGhlIGZpcnN0IHZlcnNpb24gb2YgdGhlIGNoaXAsIHRoZXJlIGFyZSBmb3VyIHZvbHRhZ2Ugc2Vuc29ycyBhbmQgb25lCit0ZW1wZXJhdHVyZSBzZW5zb3IuCisKK09uIHRoZSBzZWNvbmQgdmVyc2lvbiBvZiB0aGUgY2hpcCwgdGhlIHRlbXBlcmF0dXJlIHNlbnNvciAodGVtcCkgYW5kIHRoZQorZmlmdGggdm9sdGFnZSBzZW5zb3IgKGluNCkgc2hhcmUgYSBwaW4gd2hpY2ggaXMgY29uZmlndXJhYmxlLCBidXQgbm90Cit0aHJvdWdoIHRoZSBkcml2ZXIuIFNvcnJ5LiBUaGUgZHJpdmVyIHNlbnNlcyB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgcGluLAord2hpY2ggd2FzIGhvcGVmdWxseSBzZXQgYnkgdGhlIEJJT1MuCisKK1RlbXBlcmF0dXJlcyBhcmUgbWVhc3VyZWQgaW4gZGVncmVlcyBDZWxzaXVzLiBBbiBhbGFybSBpcyB0cmlnZ2VyZWQgb25jZQord2hlbiB0aGUgbWF4IGlzIGNyb3NzZWQ7IGl0IGlzIGFsc28gdHJpZ2dlcmVkIHdoZW4gaXQgZHJvcHMgYmVsb3cgdGhlIG1pbgordmFsdWUuIE1lYXN1cmVtZW50cyBhcmUgZ3VhcmFudGVlZCBiZXR3ZWVuIC01NSBhbmQgKzEyNSBkZWdyZWVzLCB3aXRoIGEKK3Jlc29sdXRpb24gb2YgMSBkZWdyZWUuCisKK0ZhbiByb3RhdGlvbiBzcGVlZHMgYXJlIHJlcG9ydGVkIGluIFJQTSAocm90YXRpb25zIHBlciBtaW51dGUpLiBBbiBhbGFybSBpcwordHJpZ2dlcmVkIGlmIHRoZSByb3RhdGlvbiBzcGVlZCBoYXMgZHJvcHBlZCBiZWxvdyBhIHByb2dyYW1tYWJsZSBsaW1pdC4gRmFuCityZWFkaW5ncyBjYW4gYmUgZGl2aWRlZCBieSBhIHByb2dyYW1tYWJsZSBkaXZpZGVyICgxLCAyLCA0IG9yIDgpIHRvIGdpdmUKK3RoZSByZWFkaW5ncyBtb3JlIHJhbmdlIG9yIGFjY3VyYWN5LiBOb3QgYWxsIFJQTSB2YWx1ZXMgY2FuIGFjY3VyYXRlbHkgYmUKK3JlcHJlc2VudGVkLCBzbyBzb21lIHJvdW5kaW5nIGlzIGRvbmUuIFdpdGggYSBkaXZpZGVyIG9mIDIsIHRoZSBsb3dlc3QKK3JlcHJlc2VudGFibGUgdmFsdWUgaXMgYXJvdW5kIDI2MDAgUlBNLgorCitWb2x0YWdlIHNlbnNvcnMgKGFsc28ga25vd24gYXMgSU4gc2Vuc29ycykgcmVwb3J0IHRoZWlyIHZhbHVlcyBpbiB2b2x0cy4gQW4KK2FsYXJtIGlzIHRyaWdnZXJlZCBpZiB0aGUgdm9sdGFnZSBoYXMgY3Jvc3NlZCBhIHByb2dyYW1tYWJsZSBtaW5pbXVtIG9yCittYXhpbXVtIGxpbWl0LiBOb3RlIHRoYXQgbWluaW11bSBpbiB0aGlzIGNhc2UgYWx3YXlzIG1lYW5zICdjbG9zZXN0IHRvCit6ZXJvJzsgdGhpcyBpcyBpbXBvcnRhbnQgZm9yIG5lZ2F0aXZlIHZvbHRhZ2UgbWVhc3VyZW1lbnRzLiBBbGwgdm9sdGFnZQoraW5wdXRzIGNhbiBtZWFzdXJlIHZvbHRhZ2VzIGJldHdlZW4gMCBhbmQgNC4wOCB2b2x0cywgd2l0aCBhIHJlc29sdXRpb24gb2YKKzAuMDE2IHZvbHQuCisKK0luIGFkZGl0aW9uIHRvIHRoZSBhbGFybXMgZGVzY3JpYmVkIGFib3ZlLCB0aGVyZSBpcyBhIEJUSSBhbGFybSwgd2hpY2ggZ2V0cwordHJpZ2dlcmVkIHdoZW4gYW4gZXh0ZXJuYWwgY2hpcCBoYXMgY3Jvc3NlZCBpdHMgbGltaXRzLiBVc3VhbGx5LCB0aGlzIGlzCitjb25uZWN0ZWQgdG8gc29tZSBMTTc1LWxpa2UgY2hpcDsgaWYgYXQgbGVhc3Qgb25lIGNyb3NzZXMgaXRzIGxpbWl0cywgdGhpcworYml0IGdldHMgc2V0LgorCitJZiBhbiBhbGFybSB0cmlnZ2VycywgaXQgd2lsbCByZW1haW4gdHJpZ2dlcmVkIHVudGlsIHRoZSBoYXJkd2FyZSByZWdpc3RlcgoraXMgcmVhZCBhdCBsZWFzdCBvbmNlLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGNhdXNlIGZvciB0aGUgYWxhcm0gbWF5IGFscmVhZHkKK2hhdmUgZGlzYXBwZWFyZWQhIE5vdGUgdGhhdCBpbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgYWxsIGhhcmR3YXJlCityZWdpc3RlcnMgYXJlIHJlYWQgd2hlbmV2ZXIgYW55IGRhdGEgaXMgcmVhZCAodW5sZXNzIGl0IGlzIGxlc3MgdGhhbiAxLjUKK3NlY29uZHMgc2luY2UgdGhlIGxhc3QgdXBkYXRlKS4gVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4gZWFzaWx5IG1pc3MKK29uY2Utb25seSBhbGFybXMuCisKK1RoZSBTaVM1NTk1IG9ubHkgdXBkYXRlcyBpdHMgdmFsdWVzIGVhY2ggMS41IHNlY29uZHM7IHJlYWRpbmcgaXQgbW9yZSBvZnRlbgord2lsbCBkbyBubyBoYXJtLCBidXQgd2lsbCByZXR1cm4gJ29sZCcgdmFsdWVzLgorCitQcm9ibGVtcworLS0tLS0tLS0KK1NvbWUgY2hpcHMgcmVmdXNlIHRvIGJlIGVuYWJsZWQuIFdlIGRvbid0IGtub3cgd2h5LgorVGhlIGRyaXZlciB3aWxsIHJlY29nbml6ZSB0aGlzIGFuZCBwcmludCBhIG1lc3NhZ2UgaW4gZG1lc2cuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vc21tNjY1IGIvRG9jdW1lbnRhdGlvbi9od21vbi9zbW02NjUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM0MWVlZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vc21tNjY1CkBAIC0wLDAgKzEsMTU3IEBACitLZXJuZWwgZHJpdmVyIHNtbTY2NQorPT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIFN1bW1pdCBNaWNyb2VsZWN0cm9uaWNzIFNNTTQ2NQorICAgIFByZWZpeDogJ3NtbTQ2NScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgIERhdGFzaGVldDoKKyAgICAgIGh0dHA6Ly93d3cuc3VtbWl0bWljcm8uY29tL3Byb2Rfc2VsZWN0L3N1bW1hcnkvU01NNDY1L1NNTTQ2NURTLnBkZgorICAqIFN1bW1pdCBNaWNyb2VsZWN0cm9uaWNzIFNNTTY2NSwgU01NNjY1QgorICAgIFByZWZpeDogJ3NtbTY2NScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgIERhdGFzaGVldDoKKyAgICAgIGh0dHA6Ly93d3cuc3VtbWl0bWljcm8uY29tL3Byb2Rfc2VsZWN0L3N1bW1hcnkvU01NNjY1L1NNTTY2NUJfMjA4OV8yMC5wZGYKKyAgKiBTdW1taXQgTWljcm9lbGVjdHJvbmljcyBTTU02NjVDCisgICAgUHJlZml4OiAnc21tNjY1YycKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgIERhdGFzaGVldDoKKyAgICAgIGh0dHA6Ly93d3cuc3VtbWl0bWljcm8uY29tL3Byb2Rfc2VsZWN0L3N1bW1hcnkvU01NNjY1Qy9TTU02NjVDXzIxMjUucGRmCisgICogU3VtbWl0IE1pY3JvZWxlY3Ryb25pY3MgU01NNzY0CisgICAgUHJlZml4OiAnc21tNzY0JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OgorICAgICAgaHR0cDovL3d3dy5zdW1taXRtaWNyby5jb20vcHJvZF9zZWxlY3Qvc3VtbWFyeS9TTU03NjQvU01NNzY0XzIwOTgucGRmCisgICogU3VtbWl0IE1pY3JvZWxlY3Ryb25pY3MgU01NNzY2LCBTTU03NjZCCisgICAgUHJlZml4OiAnc21tNzY2JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0czoKKyAgICAgIGh0dHA6Ly93d3cuc3VtbWl0bWljcm8uY29tL3Byb2Rfc2VsZWN0L3N1bW1hcnkvU01NNzY2L1NNTTc2Nl8yMDg2LnBkZgorICAgICAgaHR0cDovL3d3dy5zdW1taXRtaWNyby5jb20vcHJvZF9zZWxlY3Qvc3VtbWFyeS9TTU03NjZCL1NNTTc2NkJfMjEyMi5wZGYKKworQXV0aG9yOiBHdWVudGVyIFJvZWNrIDxsaW51eEByb2Vjay11cy5uZXQ+CisKKworTW9kdWxlIFBhcmFtZXRlcnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKyogdnJlZjogaW50CisgIERlZmF1bHQ6IDEyNTAgKG1WKQorICBSZWZlcmVuY2Ugdm9sdGFnZSBvbiBWUkVGX0FEQyBwaW4gaW4gbVYuIEl0IHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5IHRvIHNldAorICB0aGlzIHBhcmFtZXRlciB1bmxlc3MgYSBub24tZGVmYXVsdCByZWZlcmVuY2Ugdm9sdGFnZSBpcyB1c2VkLgorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitbRnJvbSBkYXRhc2hlZXRdIFRoZSBTTU02NjUgaXMgYW4gQWN0aXZlIERDIE91dHB1dCBwb3dlciBzdXBwbHkgQ29udHJvbGxlcgordGhhdCBtb25pdG9ycywgbWFyZ2lucyBhbmQgY2FzY2FkZSBzZXF1ZW5jZXMgcG93ZXIuIFRoZSBwYXJ0IG1vbml0b3JzIHNpeAorcG93ZXIgc3VwcGx5IGNoYW5uZWxzIGFzIHdlbGwgYXMgVkRELCAxMlYgaW5wdXQsIHR3byBnZW5lcmFsLXB1cnBvc2UgYW5hbG9nCitpbnB1dHMgYW5kIGFuIGludGVybmFsIHRlbXBlcmF0dXJlIHNlbnNvciB1c2luZyBhIDEwLWJpdCBBREMuCisKK0VhY2ggbW9uaXRvcmVkIGNoYW5uZWwgaGFzIGl0cyBvd24gaGlnaCBhbmQgbG93IGxpbWl0cywgcGx1cyBhIGNyaXRpY2FsCitsaW1pdC4KKworU3VwcG9ydCBmb3IgU01NNDY1LCBTTU03NjQsIGFuZCBTTU03NjYgaGFzIGJlZW4gaW1wbGVtZW50ZWQgYnV0IGlzIHVudGVzdGVkLgorCisKK1VzYWdlIE5vdGVzCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBkb2VzIG5vdCBwcm9iZSBmb3IgZGV2aWNlcywgc2luY2UgdGhlcmUgaXMgbm8gcmVnaXN0ZXIgd2hpY2gKK2NhbiBiZSBzYWZlbHkgdXNlZCB0byBpZGVudGlmeSB0aGUgY2hpcC4gWW91IHdpbGwgaGF2ZSB0byBpbnN0YW50aWF0ZQordGhlIGRldmljZXMgZXhwbGljaXRseS4gV2hlbiBpbnN0YW50aWF0aW5nIHRoZSBkZXZpY2UsIHlvdSBoYXZlIHRvIHNwZWNpZnkKK2l0cyBjb25maWd1cmF0aW9uIHJlZ2lzdGVyIGFkZHJlc3MuCisKK0V4YW1wbGU6IHRoZSBmb2xsb3dpbmcgd2lsbCBsb2FkIHRoZSBkcml2ZXIgZm9yIGFuIFNNTTY2NSBhdCBhZGRyZXNzIDB4NTcKK29uIEkyQyBidXMgIzE6CiskIG1vZHByb2JlIHNtbTY2NQorJCBlY2hvIHNtbTY2NSAweDU3ID4gL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLTEvbmV3X2RldmljZQorCisKK1N5c2ZzIGVudHJpZXMKKy0tLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgdXNlcyB0aGUgdmFsdWVzIGluIHRoZSBkYXRhc2hlZXQgdG8gY29udmVydCBBREMgcmVnaXN0ZXIgdmFsdWVzCitpbnRvIHRoZSB2YWx1ZXMgc3BlY2lmaWVkIGluIHRoZSBzeXNmcy1pbnRlcmZhY2UgZG9jdW1lbnQuIEFsbCBhdHRyaWJ1dGVzIGFyZQorcmVhZCBvbmx5LgorCitNaW4sIG1heCwgbGNyaXQsIGFuZCBjcml0IHZhbHVlcyBhcmUgdXNlZCBieSB0aGUgY2hpcCB0byB0cmlnZ2VyIGV4dGVybmFsIHNpZ25hbHMKK2FuZC9vciBvdGhlciBhY3Rpdml0eS4gVHJpZ2dlcmVkIHNpZ25hbHMgY2FuIGluY2x1ZGUgSEVBTFRIWSwgUlNULCBQb3dlciBPZmYsCitvciBGYXVsdCBkZXBlbmRpbmcgb24gdGhlIGNoaXAgY29uZmlndXJhdGlvbi4gVGhlIGRyaXZlciByZXBvcnRzIHZhbHVlcyBhcyBsY3JpdAorb3IgY3JpdCBpZiBleGNlZWRpbmcgdGhlIGxpbWl0cyB0cmlnZ2VycyBSU1QsIFBvd2VyIE9mZiwgb3IgRmF1bHQsIGFuZCBhcyBtaW4gb3IKK21heCBvdGhlcndpc2UuIEZvciBkZXRhaWxzIHBsZWFzZSBzZWUgdGhlIFNNTTY2NSBkYXRhc2hlZXQuCisKK0ZvciBTTU00NjUgYW5kIFNNTTc2NCwgdmFsdWVzIGZvciBDaGFubmVsIEUgYW5kIEYgYXJlIHJlcG9ydGVkIGJ1dCB1bmRlZmluZWQuCisKK2luMV9pbnB1dAkJMTJWIGlucHV0IHZvbHRhZ2UgKG1WKQoraW4yX2lucHV0CQkzLjNWIChWREQpIGlucHV0IHZvbHRhZ2UgKG1WKQoraW4zX2lucHV0CQlDaGFubmVsIEEgdm9sdGFnZSAobVYpCitpbjRfaW5wdXQJCUNoYW5uZWwgQiB2b2x0YWdlIChtVikKK2luNV9pbnB1dAkJQ2hhbm5lbCBDIHZvbHRhZ2UgKG1WKQoraW42X2lucHV0CQlDaGFubmVsIEQgdm9sdGFnZSAobVYpCitpbjdfaW5wdXQJCUNoYW5uZWwgRSB2b2x0YWdlIChtVikKK2luOF9pbnB1dAkJQ2hhbm5lbCBGIHZvbHRhZ2UgKG1WKQoraW45X2lucHV0CQlBSU4xIHZvbHRhZ2UgKG1WKQoraW4xMF9pbnB1dAkJQUlOMiB2b2x0YWdlIChtVikKKworaW4xX21pbgkJCTEydiBpbnB1dCBtaW5pbXVtIHZvbHRhZ2UgKG1WKQoraW4yX21pbgkJCTMuM1YgKFZERCkgaW5wdXQgbWluaW11bSB2b2x0YWdlIChtVikKK2luM19taW4JCQlDaGFubmVsIEEgbWluaW11bSB2b2x0YWdlIChtVikKK2luNF9taW4JCQlDaGFubmVsIEIgbWluaW11bSB2b2x0YWdlIChtVikKK2luNV9taW4JCQlDaGFubmVsIEMgbWluaW11bSB2b2x0YWdlIChtVikKK2luNl9taW4JCQlDaGFubmVsIEQgbWluaW11bSB2b2x0YWdlIChtVikKK2luN19taW4JCQlDaGFubmVsIEUgbWluaW11bSB2b2x0YWdlIChtVikKK2luOF9taW4JCQlDaGFubmVsIEYgbWluaW11bSB2b2x0YWdlIChtVikKK2luOV9taW4JCQlBSU4xIG1pbmltdW0gdm9sdGFnZSAobVYpCitpbjEwX21pbgkJQUlOMiBtaW5pbXVtIHZvbHRhZ2UgKG1WKQorCitpbjFfbWF4CQkJMTJ2IGlucHV0IG1heGltdW0gdm9sdGFnZSAobVYpCitpbjJfbWF4CQkJMy4zViAoVkREKSBpbnB1dCBtYXhpbXVtIHZvbHRhZ2UgKG1WKQoraW4zX21heAkJCUNoYW5uZWwgQSBtYXhpbXVtIHZvbHRhZ2UgKG1WKQoraW40X21heAkJCUNoYW5uZWwgQiBtYXhpbXVtIHZvbHRhZ2UgKG1WKQoraW41X21heAkJCUNoYW5uZWwgQyBtYXhpbXVtIHZvbHRhZ2UgKG1WKQoraW42X21heAkJCUNoYW5uZWwgRCBtYXhpbXVtIHZvbHRhZ2UgKG1WKQoraW43X21heAkJCUNoYW5uZWwgRSBtYXhpbXVtIHZvbHRhZ2UgKG1WKQoraW44X21heAkJCUNoYW5uZWwgRiBtYXhpbXVtIHZvbHRhZ2UgKG1WKQoraW45X21heAkJCUFJTjEgbWF4aW11bSB2b2x0YWdlIChtVikKK2luMTBfbWF4CQlBSU4yIG1heGltdW0gdm9sdGFnZSAobVYpCisKK2luMV9sY3JpdAkJMTJ2IGlucHV0IGNyaXRpY2FsIG1pbmltdW0gdm9sdGFnZSAobVYpCitpbjJfbGNyaXQJCTMuM1YgKFZERCkgaW5wdXQgY3JpdGljYWwgbWluaW11bSB2b2x0YWdlIChtVikKK2luM19sY3JpdAkJQ2hhbm5lbCBBIGNyaXRpY2FsIG1pbmltdW0gdm9sdGFnZSAobVYpCitpbjRfbGNyaXQJCUNoYW5uZWwgQiBjcml0aWNhbCBtaW5pbXVtIHZvbHRhZ2UgKG1WKQoraW41X2xjcml0CQlDaGFubmVsIEMgY3JpdGljYWwgbWluaW11bSB2b2x0YWdlIChtVikKK2luNl9sY3JpdAkJQ2hhbm5lbCBEIGNyaXRpY2FsIG1pbmltdW0gdm9sdGFnZSAobVYpCitpbjdfbGNyaXQJCUNoYW5uZWwgRSBjcml0aWNhbCBtaW5pbXVtIHZvbHRhZ2UgKG1WKQoraW44X2xjcml0CQlDaGFubmVsIEYgY3JpdGljYWwgbWluaW11bSB2b2x0YWdlIChtVikKK2luOV9sY3JpdAkJQUlOMSBjcml0aWNhbCBtaW5pbXVtIHZvbHRhZ2UgKG1WKQoraW4xMF9sY3JpdAkJQUlOMiBjcml0aWNhbCBtaW5pbXVtIHZvbHRhZ2UgKG1WKQorCitpbjFfY3JpdAkJMTJ2IGlucHV0IGNyaXRpY2FsIG1heGltdW0gdm9sdGFnZSAobVYpCitpbjJfY3JpdAkJMy4zViAoVkREKSBpbnB1dCBjcml0aWNhbCBtYXhpbXVtIHZvbHRhZ2UgKG1WKQoraW4zX2NyaXQJCUNoYW5uZWwgQSBjcml0aWNhbCBtYXhpbXVtIHZvbHRhZ2UgKG1WKQoraW40X2NyaXQJCUNoYW5uZWwgQiBjcml0aWNhbCBtYXhpbXVtIHZvbHRhZ2UgKG1WKQoraW41X2NyaXQJCUNoYW5uZWwgQyBjcml0aWNhbCBtYXhpbXVtIHZvbHRhZ2UgKG1WKQoraW42X2NyaXQJCUNoYW5uZWwgRCBjcml0aWNhbCBtYXhpbXVtIHZvbHRhZ2UgKG1WKQoraW43X2NyaXQJCUNoYW5uZWwgRSBjcml0aWNhbCBtYXhpbXVtIHZvbHRhZ2UgKG1WKQoraW44X2NyaXQJCUNoYW5uZWwgRiBjcml0aWNhbCBtYXhpbXVtIHZvbHRhZ2UgKG1WKQoraW45X2NyaXQJCUFJTjEgY3JpdGljYWwgbWF4aW11bSB2b2x0YWdlIChtVikKK2luMTBfY3JpdAkJQUlOMiBjcml0aWNhbCBtYXhpbXVtIHZvbHRhZ2UgKG1WKQorCitpbjFfY3JpdF9hbGFybQkJMTJ2IGlucHV0IGNyaXRpY2FsIGFsYXJtCitpbjJfY3JpdF9hbGFybQkJMy4zViAoVkREKSBpbnB1dCBjcml0aWNhbCBhbGFybQoraW4zX2NyaXRfYWxhcm0JCUNoYW5uZWwgQSBjcml0aWNhbCBhbGFybQoraW40X2NyaXRfYWxhcm0JCUNoYW5uZWwgQiBjcml0aWNhbCBhbGFybQoraW41X2NyaXRfYWxhcm0JCUNoYW5uZWwgQyBjcml0aWNhbCBhbGFybQoraW42X2NyaXRfYWxhcm0JCUNoYW5uZWwgRCBjcml0aWNhbCBhbGFybQoraW43X2NyaXRfYWxhcm0JCUNoYW5uZWwgRSBjcml0aWNhbCBhbGFybQoraW44X2NyaXRfYWxhcm0JCUNoYW5uZWwgRiBjcml0aWNhbCBhbGFybQoraW45X2NyaXRfYWxhcm0JCUFJTjEgY3JpdGljYWwgYWxhcm0KK2luMTBfY3JpdF9hbGFybQkJQUlOMiBjcml0aWNhbCBhbGFybQorCit0ZW1wMV9pbnB1dAkJQ2hpcCB0ZW1wZXJhdHVyZQordGVtcDFfbWluCQlNaW1pbXVtIGNoaXAgdGVtcGVyYXR1cmUKK3RlbXAxX21heAkJTWF4aW11bSBjaGlwIHRlbXBlcmF0dXJlCit0ZW1wMV9jcml0CQlDcml0aWNhbCBjaGlwIHRlbXBlcmF0dXJlCit0ZW1wMV9jcml0X2FsYXJtCVRlbXBlcmF0dXJlIGNyaXRpY2FsIGFsYXJtCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3Ntc2M0N2IzOTcgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3Ntc2M0N2IzOTcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E0M2I2OQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vc21zYzQ3YjM5NwpAQCAtMCwwICsxLDE2MyBAQAorS2VybmVsIGRyaXZlciBzbXNjNDdiMzk3Cis9PT09PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIFNNU0MgTFBDNDdCMzk3LU5DCisgICogU01TQyBTQ0g1MzA3LU5TCisgICogU01TQyBTQ0g1MzE3CisgICAgUHJlZml4OiAnc21zYzQ3YjM5NycKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZSwgYWRkcmVzcyByZWFkIGZyb20gU3VwZXIgSS9PIGNvbmZpZyBzcGFjZQorICAgIERhdGFzaGVldDogSW4gdGhpcyBmaWxlCisKK0F1dGhvcnM6IE1hcmsgTS4gSG9mZm1hbiA8bWhvZmZtYW5AbGlnaHRsaW5rLmNvbT4KKyAgICAgICAgIFV0aWxpdGVrIFN5c3RlbXMsIEluYy4KKworTm92ZW1iZXIgMjMsIDIwMDQKKworVGhlIGZvbGxvd2luZyBzcGVjaWZpY2F0aW9uIGRlc2NyaWJlcyB0aGUgU01TQyBMUEM0N0IzOTctTkNbMV0gc2Vuc29yIGNoaXAKKyhmb3Igd2hpY2ggdGhlcmUgaXMgbm8gcHVibGljIGRhdGFzaGVldCBhdmFpbGFibGUpLiBUaGlzIGRvY3VtZW50IHdhcworcHJvdmlkZWQgYnkgQ3JhaWcgS2VsbHkgKEluLVN0b3JlIEJyb2FkY2FzdCBOZXR3b3JrKSBhbmQgZWRpdGVkL2NvcnJlY3RlZAorYnkgTWFyayBNLiBIb2ZmbWFuIDxtaG9mZm1hbkBsaWdodGxpbmsuY29tPi4KKworWzFdIEFuZCBTTVNDIFNDSDUzMDctTlMgYW5kIFNDSDUzMTcsIHdoaWNoIGhhdmUgZGlmZmVyZW50IGRldmljZSBJRHMgYnV0IGFyZQorb3RoZXJ3aXNlIGNvbXBhdGlibGUuCisKKyogKiAqICogKgorCitNZXRob2RzIGZvciBkZXRlY3RpbmcgdGhlIEhQIFNJTyBhbmQgcmVhZGluZyB0aGUgdGhlcm1hbCBkYXRhIG9uIGEgZGM3MTAwLgorCitUaGUgdGhlcm1hbCBpbmZvcm1hdGlvbiBvbiB0aGUgZGM3MTAwIGlzIGNvbnRhaW5lZCBpbiB0aGUgU0lPIEhhcmR3YXJlIE1vbml0b3IKKyhIV00pLiBUaGUgaW5mb3JtYXRpb24gaXMgYWNjZXNzZWQgdGhyb3VnaCBhbiBpbmRleC9kYXRhIHBhaXIuIFRoZSBpbmRleC9kYXRhCitwYWlyIGlzIGxvY2F0ZWQgYXQgdGhlIEhXTSBCYXNlIEFkZHJlc3MgKyAwIGFuZCB0aGUgSFdNIEJhc2UgQWRkcmVzcyArIDEuIFRoZQorSFdNIEJhc2UgYWRkcmVzcyBjYW4gYmUgb2J0YWluZWQgZnJvbSBMb2dpY2FsIERldmljZSA4LCByZWdpc3RlcnMgMHg2MCAoTVNCKQorYW5kIDB4NjEgKExTQikuIEN1cnJlbnRseSB3ZSBhcmUgdXNpbmcgMHg0ODAgZm9yIHRoZSBIV00gQmFzZSBBZGRyZXNzIGFuZAorMHg0ODAgYW5kIDB4NDgxIGZvciB0aGUgaW5kZXgvZGF0YSBwYWlyLgorCitSZWFkaW5nIHRlbXBlcmF0dXJlIGluZm9ybWF0aW9uLgorVGhlIHRlbXBlcmF0dXJlIGluZm9ybWF0aW9uIGlzIGxvY2F0ZWQgaW4gdGhlIGZvbGxvd2luZyByZWdpc3RlcnM6CitUZW1wMQkJMHgyNQkoQ3VycmVudGx5LCB0aGlzIHJlZmxlY3RzIHRoZSBDUFUgdGVtcCBvbiBhbGwgc3lzdGVtcykuCitUZW1wMgkJMHgyNgorVGVtcDMJCTB4MjcKK1RlbXA0CQkweDgwCisKK1Byb2dyYW1taW5nIEV4YW1wbGUKK1RoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBvZiBob3cgdG8gcmVhZCB0aGUgSFdNIHRlbXBlcmF0dXJlIHJlZ2lzdGVyczoKK01PVglEWCw0ODBICitNT1YJQVgsMjVICitPVVQJRFgsQUwKK01PVglEWCw0ODFICitJTglBTCxEWAorCitBTCBjb250YWlucyB0aGUgZGF0YSBpbiBoZXgsIHRoZSB0ZW1wZXJhdHVyZSBpbiBDZWxzaXVzIGlzIHRoZSBkZWNpbWFsCitlcXVpdmFsZW50LgorCitFeDogSWYgQUwgY29udGFpbnMgMHgyQSwgdGhlIHRlbXBlcmF0dXJlIGlzIDQyIGRlZ3JlZXMgQy4KKworUmVhZGluZyB0YWNoIGluZm9ybWF0aW9uLgorVGhlIGZhbiBzcGVlZCBpbmZvcm1hdGlvbiBpcyBsb2NhdGVkIGluIHRoZSBmb2xsb3dpbmcgcmVnaXN0ZXJzOgorCQlMU0IJTVNCCitUYWNoMQkJMHgyOAkweDI5CShDdXJyZW50bHksIHRoaXMgcmVmbGVjdHMgdGhlIENQVQorCQkJCWZhbiBzcGVlZCBvbiBhbGwgc3lzdGVtcykuCitUYWNoMgkJMHgyQQkweDJCCitUYWNoMwkJMHgyQwkweDJECitUYWNoNAkJMHgyRQkweDJGCisKK0ltcG9ydGFudCEhIQorUmVhZGluZyB0aGUgdGFjaCBMU0IgbG9ja3MgdGhlIHRhY2ggTVNCLgorVGhlIExTQiBNdXN0IGJlIHJlYWQgZmlyc3QuCisKK0hvdyB0byBjb252ZXJ0IHRoZSB0YWNoIHJlYWRpbmcgdG8gUlBNLgorVGhlIHRhY2ggcmVhZGluZyAoVENvdW50KSBpcyBnaXZlbiBieTogKFRhY2ggTVNCICogMjU2KSArIChUYWNoIExTQikKK1RoZSBTSU8gY291bnRzIHRoZSBudW1iZXIgb2YgOTBrSHogKDExLjExMXVzKSBwdWxzZXMgcGVyIHJldm9sdXRpb24uCitSUE0gPSA2MC8oVENvdW50ICogMTEuMTExdXMpCisKK0V4YW1wbGU6CitSZWcgMHgyOCA9IDB4OUIKK1JlZyAweDI5ID0gMHgwOAorCitUQ291bnQgPSAweDg5QiA9IDIyMDMKKworUlBNID0gNjAgLyAoMjIwMyAqIDExLjExMTExIEUtNikgPSAyNDUxIFJQTQorCitPYnRhaW5pbmcgdGhlIFNJTyB2ZXJzaW9uLgorCitDT05GSUdVUkFUSU9OIFNFUVVFTkNFCitUbyBwcm9ncmFtIHRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycywgdGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBtdXN0IGJlIGZvbGxvd2VkOgorMS4gRW50ZXIgQ29uZmlndXJhdGlvbiBNb2RlCisyLiBDb25maWd1cmUgdGhlIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXJzCiszLiBFeGl0IENvbmZpZ3VyYXRpb24gTW9kZS4KKworRW50ZXIgQ29uZmlndXJhdGlvbiBNb2RlCitUbyBwbGFjZSB0aGUgY2hpcCBpbnRvIHRoZSBDb25maWd1cmF0aW9uIFN0YXRlIFRoZSBjb25maWcga2V5ICgweDU1KSBpcyB3cml0dGVuCit0byB0aGUgQ09ORklHIFBPUlQgKDB4MkUpLgorCitDb25maWd1cmF0aW9uIE1vZGUKK0luIGNvbmZpZ3VyYXRpb24gbW9kZSwgdGhlIElOREVYIFBPUlQgaXMgbG9jYXRlZCBhdCB0aGUgQ09ORklHIFBPUlQgYWRkcmVzcyBhbmQKK3RoZSBEQVRBIFBPUlQgaXMgYXQgSU5ERVggUE9SVCBhZGRyZXNzICsgMS4KKworVGhlIGRlc2lyZWQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYXJlIGFjY2Vzc2VkIGluIHR3byBzdGVwczoKK2EuCVdyaXRlIHRoZSBpbmRleCBvZiB0aGUgTG9naWNhbCBEZXZpY2UgTnVtYmVyIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIKKwkoaS5lLiwgMHgwNykgdG8gdGhlIElOREVYIFBPUlQgYW5kIHRoZW4gd3JpdGUgdGhlIG51bWJlciBvZiB0aGUKKwlkZXNpcmVkIGxvZ2ljYWwgZGV2aWNlIHRvIHRoZSBEQVRBIFBPUlQuCisKK2IuCVdyaXRlIHRoZSBhZGRyZXNzIG9mIHRoZSBkZXNpcmVkIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgd2l0aGluIHRoZQorCWxvZ2ljYWwgZGV2aWNlIHRvIHRoZSBJTkRFWCBQT1JUIGFuZCB0aGVuIHdyaXRlIG9yIHJlYWQgdGhlIGNvbmZpZy0KKwl1cmF0aW9uIHJlZ2lzdGVyIHRocm91Z2ggdGhlIERBVEEgUE9SVC4KKworTm90ZTogSWYgYWNjZXNzaW5nIHRoZSBHbG9iYWwgQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMsIHN0ZXAgKGEpIGlzIG5vdCByZXF1aXJlZC4KKworRXhpdCBDb25maWd1cmF0aW9uIE1vZGUKK1RvIGV4aXQgdGhlIENvbmZpZ3VyYXRpb24gU3RhdGUgdGhlIHdyaXRlIDB4QUEgdG8gdGhlIENPTkZJRyBQT1JUICgweDJFKS4KK1RoZSBjaGlwIHJldHVybnMgdG8gdGhlIFJVTiBTdGF0ZS4gIChUaGlzIGlzIGltcG9ydGFudCkuCisKK1Byb2dyYW1taW5nIEV4YW1wbGUKK1RoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBvZiBob3cgdG8gcmVhZCB0aGUgU0lPIERldmljZSBJRCBsb2NhdGVkIGF0IDB4MjAKKworOyBFTlRFUiBDT05GSUdVUkFUSU9OIE1PREUKK01PVglEWCwwMkVICitNT1YJQVgsMDU1SAorT1VUCURYLEFMCis7IEdMT0JBTCBDT05GSUdVUkFUSU9OICBSRUdJU1RFUgorTU9WCURYLDAyRUgKK01PVglBTCwyMEgKK09VVAlEWCxBTAorOyBSRUFEIFRIRSBEQVRBCitNT1YJRFgsMDJGSAorSU4JQUwsRFgKKzsgRVhJVCBDT05GSUdVUkFUSU9OIE1PREUKK01PVglEWCwwMkVICitNT1YJQVgsMEFBSAorT1VUCURYLEFMCisKK1RoZSByZWdpc3RlcnMgb2YgaW50ZXJlc3QgZm9yIGlkZW50aWZ5aW5nIHRoZSBTSU8gb24gdGhlIGRjNzEwMCBhcmUgRGV2aWNlIElECisoMHgyMCkgYW5kIERldmljZSBSZXYgICgweDIxKS4KKworVGhlIERldmljZSBJRCB3aWxsIHJlYWQgMHg2RiAoMHg4MSBmb3IgU0NINTMwNy1OUywgYW5kIDB4ODUgZm9yIFNDSDUzMTcpCitUaGUgRGV2aWNlIFJldiBjdXJyZW50bHkgcmVhZHMgMHgwMQorCitPYnRhaW5pbmcgdGhlIEhXTSBCYXNlIEFkZHJlc3MuCitUaGUgZm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHJlYWQgdGhlIEhXTSBCYXNlIEFkZHJlc3MgbG9jYXRlZCBpbgorTG9naWNhbCBEZXZpY2UgOC4KKworOyBFTlRFUiBDT05GSUdVUkFUSU9OIE1PREUKK01PVglEWCwwMkVICitNT1YJQVgsMDU1SAorT1VUCURYLEFMCis7IENPTkZJR1VSRSBSRUdJU1RFUiBDUkUwLAorOyBMT0dJQ0FMIERFVklDRSA4CitNT1YJRFgsMDJFSAorTU9WCUFMLDA3SAorT1VUCURYLEFMIDtQb2ludCB0byBMRCMgQ29uZmlnIFJlZworTU9WCURYLDAyRkgKK01PVglBTCwgMDhICitPVVQJRFgsQUw7UG9pbnQgdG8gTG9naWNhbCBEZXZpY2UgOAorOworTU9WCURYLDAyRUgKK01PVglBTCw2MEgKK09VVAlEWCxBTAk7IFBvaW50IHRvIEhXTSBCYXNlIEFkZHIgTVNCCitNT1YJRFgsMDJGSAorSU4JQUwsRFgJOyBHZXQgTVNCIG9mIEhXTSBCYXNlIEFkZHIKKzsgRVhJVCBDT05GSUdVUkFUSU9OIE1PREUKK01PVglEWCwwMkVICitNT1YJQVgsMEFBSAorT1VUCURYLEFMCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3Ntc2M0N20xIGIvRG9jdW1lbnRhdGlvbi9od21vbi9zbXNjNDdtMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGEyNGI0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9zbXNjNDdtMQpAQCAtMCwwICsxLDYzIEBACitLZXJuZWwgZHJpdmVyIHNtc2M0N20xCis9PT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBTTVNDIExQQzQ3QjI3eCwgTFBDNDdNMTEyLCBMUEM0N00xMHgsIExQQzQ3TTEzeCwgTFBDNDdNMTR4LAorICAgIExQQzQ3TTE1eCBhbmQgTFBDNDdNMTkyCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IG5vbmUsIGFkZHJlc3MgcmVhZCBmcm9tIFN1cGVyIEkvTyBjb25maWcgc3BhY2UKKyAgICBQcmVmaXg6ICdzbXNjNDdtMScKKyAgICBEYXRhc2hlZXRzOgorICAgICAgICBodHRwOi8vd3d3LnNtc2MuY29tL21lZGlhL0Rvd25sb2Fkc19QdWJsaWMvRGF0YV9TaGVldHMvNDdiMjcyLnBkZgorICAgICAgICBodHRwOi8vd3d3LnNtc2MuY29tL21lZGlhL0Rvd25sb2Fkc19QdWJsaWMvRGF0YV9TaGVldHMvNDdtMTB4LnBkZgorICAgICAgICBodHRwOi8vd3d3LnNtc2MuY29tL21lZGlhL0Rvd25sb2Fkc19QdWJsaWMvRGF0YV9TaGVldHMvNDdtMTEyLnBkZgorICAgICAgICBodHRwOi8vd3d3LnNtc2MuY29tLworICAqIFNNU0MgTFBDNDdNMjkyCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IG5vbmUsIGFkZHJlc3MgcmVhZCBmcm9tIFN1cGVyIEkvTyBjb25maWcgc3BhY2UKKyAgICBQcmVmaXg6ICdzbXNjNDdtMicKKyAgICBEYXRhc2hlZXQ6IE5vdCBwdWJsaWMKKyAgKiBTTVNDIExQQzQ3TTk5NworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBub25lLCBhZGRyZXNzIHJlYWQgZnJvbSBTdXBlciBJL08gY29uZmlnIHNwYWNlCisgICAgUHJlZml4OiAnc21zYzQ3bTEnCisgICAgRGF0YXNoZWV0OiBub25lCisKK0F1dGhvcnM6CisgICAgICAgIE1hcmsgRC4gU3R1ZGViYWtlciA8bWRzeHl6MTIzQHlhaG9vLmNvbT4sCisgICAgICAgIFdpdGggYXNzaXN0YW5jZSBmcm9tIEJydWNlIEFsbGVuIDxiYWxsZW5AdXdtLmVkdT4sIGFuZCBoaXMKKyAgICAgICAgZmFuLmMgcHJvZ3JhbTogaHR0cDovL3d3dy5sc2MtZ3JvdXAucGh5cy51d20uZWR1LyU3RWJhbGxlbi9kcml2ZXIvCisgICAgICAgIEdhYnJpZWxlIEdvcmxhIDxnb3JsaWtAeWFob28uY29tPiwKKyAgICAgICAgSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmRlPgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIFN0YW5kYXJkIE1pY3Jvc3lzdGVtcyBDb3Jwb3JhdGlvbiAoU01TQykgNDdNMXh4IFN1cGVyIEkvTyBjaGlwcworY29udGFpbiBtb25pdG9yaW5nIGFuZCBQV00gY29udHJvbCBjaXJjdWl0cnkgZm9yIHR3byBmYW5zLgorCitUaGUgTFBDNDdNMTV4LCBMUEM0N00xOTIgYW5kIExQQzQ3TTI5MiBjaGlwcyBjb250YWluIGEgZnVsbCAnaGFyZHdhcmUKK21vbml0b3JpbmcgYmxvY2snIGluIGFkZGl0aW9uIHRvIHRoZSBmYW4gbW9uaXRvcmluZyBhbmQgY29udHJvbC4gVGhlCitoYXJkd2FyZSBtb25pdG9yaW5nIGJsb2NrIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIsIHVzZSB0aGUKK3Ntc2M0N20xOTIgZHJpdmVyIGZvciB0aGF0LgorCitObyBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBmb3IgdGhlIDQ3TTk5NywgYnV0IGl0IGhhcyB0aGUgc2FtZSBkZXZpY2UKK0lEIGFzIHRoZSA0N00xNXggYW5kIDQ3TTE5MiBjaGlwcyBhbmQgc2VlbXMgdG8gYmUgY29tcGF0aWJsZS4KKworRmFuIHJvdGF0aW9uIHNwZWVkcyBhcmUgcmVwb3J0ZWQgaW4gUlBNIChyb3RhdGlvbnMgcGVyIG1pbnV0ZSkuIEFuIGFsYXJtIGlzCit0cmlnZ2VyZWQgaWYgdGhlIHJvdGF0aW9uIHNwZWVkIGhhcyBkcm9wcGVkIGJlbG93IGEgcHJvZ3JhbW1hYmxlIGxpbWl0LiBGYW4KK3JlYWRpbmdzIGNhbiBiZSBkaXZpZGVkIGJ5IGEgcHJvZ3JhbW1hYmxlIGRpdmlkZXIgKDEsIDIsIDQgb3IgOCkgdG8gZ2l2ZQordGhlIHJlYWRpbmdzIG1vcmUgcmFuZ2Ugb3IgYWNjdXJhY3kuIE5vdCBhbGwgUlBNIHZhbHVlcyBjYW4gYWNjdXJhdGVseSBiZQorcmVwcmVzZW50ZWQsIHNvIHNvbWUgcm91bmRpbmcgaXMgZG9uZS4gV2l0aCBhIGRpdmlkZXIgb2YgMiwgdGhlIGxvd2VzdAorcmVwcmVzZW50YWJsZSB2YWx1ZSBpcyBhcm91bmQgMjYwMCBSUE0uCisKK1BXTSB2YWx1ZXMgYXJlIGZyb20gMCB0byAyNTUuCisKK0lmIGFuIGFsYXJtIHRyaWdnZXJzLCBpdCB3aWxsIHJlbWFpbiB0cmlnZ2VyZWQgdW50aWwgdGhlIGhhcmR3YXJlIHJlZ2lzdGVyCitpcyByZWFkIGF0IGxlYXN0IG9uY2UuIFRoaXMgbWVhbnMgdGhhdCB0aGUgY2F1c2UgZm9yIHRoZSBhbGFybSBtYXkKK2FscmVhZHkgaGF2ZSBkaXNhcHBlYXJlZCEgTm90ZSB0aGF0IGluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBhbGwKK2hhcmR3YXJlIHJlZ2lzdGVycyBhcmUgcmVhZCB3aGVuZXZlciBhbnkgZGF0YSBpcyByZWFkICh1bmxlc3MgaXQgaXMgbGVzcwordGhhbiAxLjUgc2Vjb25kcyBzaW5jZSB0aGUgbGFzdCB1cGRhdGUpLiBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiBlYXNpbHkKK21pc3Mgb25jZS1vbmx5IGFsYXJtcy4KKworCisqKioqKioqKioqKioqKioqKioqKioqCitUaGUgbG1fc2Vuc29ycyBwcm9qZWN0IGdyYXRlZnVsbHkgYWNrbm93bGVkZ2VzIHRoZSBzdXBwb3J0IG9mCitJbnRlbCBpbiB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhpcyBkcml2ZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3Ntc2M0N20xOTIgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3Ntc2M0N20xOTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ1NGVjYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vc21zYzQ3bTE5MgpAQCAtMCwwICsxLDEwMyBAQAorS2VybmVsIGRyaXZlciBzbXNjNDdtMTkyCis9PT09PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIFNNU0MgTFBDNDdNMTkyLCBMUEM0N00xNXgsIExQQzQ3TTI5MiBhbmQgTFBDNDdNOTk3CisgICAgUHJlZml4OiAnc21zYzQ3bTE5MicKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MmMgLSAweDJkCisgICAgRGF0YXNoZWV0OiBUaGUgZGF0YXNoZWV0IGZvciBMUEM0N00xOTIgaXMgcHVibGljbHkgYXZhaWxhYmxlIGZyb20KKyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuc21zYy5jb20vCisgICAgICAgICAgICAgICBUaGUgTFBDNDdNMTV4LCBMUEM0N00yOTIgYW5kIExQQzQ3TTk5NyBhcmUgY29tcGF0aWJsZSBmb3IKKyAgICAgICAgICAgICAgIGhhcmR3YXJlIG1vbml0b3JpbmcuCisKK0F1dGhvcjogSGFydG11dCBSaWNrIDxsaW51eEByaWNrLmNsYXJhbmV0LmRlPgorICAgICAgICBTcGVjaWFsIHRoYW5rcyB0byBKZWFuIERlbHZhcmUgZm9yIGNhcmVmdWwgY2hlY2tpbmcKKyAgICAgICAgb2YgdGhlIGNvZGUgYW5kIG1hbnkgaGVscGZ1bCBjb21tZW50cyBhbmQgc3VnZ2VzdGlvbnMuCisKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgdGhlIGhhcmR3YXJlIHNlbnNvciBjYXBhYmlsaXRpZXMKK29mIHRoZSBTTVNDIExQQzQ3TTE5MiBhbmQgY29tcGF0aWJsZSBTdXBlci1JL08gY2hpcHMuCisKK1RoZXNlIGNoaXBzIHN1cHBvcnQgMyB0ZW1wZXJhdHVyZSBjaGFubmVscyBhbmQgOCB2b2x0YWdlIGlucHV0cworYXMgd2VsbCBhcyBDUFUgdm9sdGFnZSBWSUQgaW5wdXQuCisKK1RoZXkgZG8gYWxzbyBoYXZlIGZhbiBtb25pdG9yaW5nIGFuZCBjb250cm9sIGNhcGFiaWxpdGllcywgYnV0IHRoZQordGhlc2UgZmVhdHVyZXMgYXJlIGFjY2Vzc2VkIHZpYSBJU0EgYnVzIGFuZCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGlzCitkcml2ZXIuIFVzZSB0aGUgJ3Ntc2M0N20xJyBkcml2ZXIgZm9yIGZhbiBtb25pdG9yaW5nIGFuZCBjb250cm9sLgorCitWb2x0YWdlcyBhbmQgdGVtcGVyYXR1cmVzIGFyZSBtZWFzdXJlZCBieSBhbiA4LWJpdCBBREMsIHRoZSByZXNvbHV0aW9uCitvZiB0aGUgdGVtcGVyYXR1cmVzIGlzIDEgYml0IHBlciBkZWdyZWUgQy4KK1ZvbHRhZ2VzIGFyZSBzY2FsZWQgc3VjaCB0aGF0IHRoZSBub21pbmFsIHZvbHRhZ2UgY29ycmVzcG9uZHMgdG8KKzE5MiBjb3VudHMsIGkuZS4gMy80IG9mIHRoZSBmdWxsIHJhbmdlLiBUaHVzIHRoZSBhdmFpbGFibGUgcmFuZ2UgZm9yCitlYWNoIHZvbHRhZ2UgY2hhbm5lbCBpcyAwViAuLi4gMjU1LzE5Mioobm9taW5hbCB2b2x0YWdlKSwgdGhlIHJlc29sdXRpb24KK2lzIDEgYml0IHBlciAobm9taW5hbCB2b2x0YWdlKS8xOTIuCitCb3RoIHZvbHRhZ2UgYW5kIHRlbXBlcmF0dXJlIHZhbHVlcyBhcmUgc2NhbGVkIGJ5IDEwMDAsIHRoZSBzeXMgZmlsZXMKK3Nob3cgdm9sdGFnZXMgaW4gbVYgYW5kIHRlbXBlcmF0dXJlcyBpbiB1bml0cyBvZiAwLjAwMSBkZWdDLgorCitUaGUgKzEyViBhbmFsb2cgdm9sdGFnZSBpbnB1dCBjaGFubmVsIChpbjRfaW5wdXQpIGlzIG11bHRpcGxleGVkIHdpdGgKK2JpdCA0IG9mIHRoZSBlbmNvZGVkIENQVSB2b2x0YWdlLiBUaGlzIG1lYW5zIHRoYXQgeW91IGVpdGhlciBnZXQKK2EgKzEyViB2b2x0YWdlIG1lYXN1cmVtZW50IG9yIGEgNSBiaXQgQ1BVIFZJRCwgYnV0IG5vdCBib3RoLgorVGhlIGRlZmF1bHQgc2V0dGluZyBpcyB0byB1c2UgdGhlIHBpbiBhcyAxMlYgaW5wdXQsIGFuZCB1c2Ugb25seSA0IGJpdCBWSUQuCitUaGlzIGRyaXZlciBhc3N1bWVzIHRoYXQgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVyCitpcyBjb3JyZWN0LCBpLmUuIHRoYXQgdGhlIEJJT1MgaGFzIHVwZGF0ZWQgdGhlIGNvbmZpZ3VyYXRpb24gaWYKK3RoZSBtb3RoZXJib2FyZCBoYXMgdGhpcyBpbnB1dCB3aXJlZCB0byBWSUQ0LgorCitUaGUgdGVtcGVyYXR1cmUgYW5kIHZvbHRhZ2UgcmVhZGluZ3MgYXJlIHVwZGF0ZWQgb25jZSBldmVyeSAxLjUgc2Vjb25kcy4KK1JlYWRpbmcgdGhlbSBtb3JlIG9mdGVuIHJlcGVhdHMgdGhlIHNhbWUgdmFsdWVzLgorCisKK3N5c2ZzIGludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tCisKK2luMF9pbnB1dAktICsyLjVWIHZvbHRhZ2UgaW5wdXQKK2luMV9pbnB1dAktIENQVSB2b2x0YWdlIGlucHV0IChub21pbmFsIDIuMjVWKQoraW4yX2lucHV0CS0gKzMuM1Ygdm9sdGFnZSBpbnB1dAoraW4zX2lucHV0CS0gKzVWIHZvbHRhZ2UgaW5wdXQKK2luNF9pbnB1dAktICsxMlYgdm9sdGFnZSBpbnB1dCAobWF5IGJlIG1pc3NpbmcgaWYgdXNlZCBhcyBWSUQ0KQoraW41X2lucHV0CS0gVmNjIHZvbHRhZ2UgaW5wdXQgKG5vbWluYWwgMy4zVikKKwkJICBUaGlzIGlzIHRoZSBzdXBwbHkgdm9sdGFnZSBvZiB0aGUgc2Vuc29yIGNoaXAgaXRzZWxmLgoraW42X2lucHV0CS0gKzEuNVYgdm9sdGFnZSBpbnB1dAoraW43X2lucHV0CS0gKzEuOFYgdm9sdGFnZSBpbnB1dAorCitpblswLTddX21pbiwKK2luWzAtN11fbWF4CS0gbG93ZXIgYW5kIHVwcGVyIGFsYXJtIHRocmVzaG9sZHMgZm9yIGluWzAtN11faW5wdXQgcmVhZGluZworCisJCSAgQWxsIHZvbHRhZ2VzIGFyZSByZWFkIGFuZCB3cml0dGVuIGluIG1WLgorCitpblswLTddX2FsYXJtCS0gYWxhcm0gZmxhZ3MgZm9yIHZvbHRhZ2UgaW5wdXRzCisJCSAgVGhlc2UgZmlsZXMgcmVhZCAnMScgaW4gY2FzZSBvZiBhbGFybSwgJzAnIG90aGVyd2lzZS4KKwordGVtcDFfaW5wdXQJLSBjaGlwIHRlbXBlcmF0dXJlIG1lYXN1cmVkIGJ5IG9uLWNoaXAgZGlvZGUKK3RlbXBbMi0zXV9pbnB1dAktIHRlbXBlcmF0dXJlIG1lYXN1cmVkIGJ5IGV4dGVybmFsIGRpb2RlcyAob25lIG9mIHRoZXNlIHdvdWxkCisJCSAgdHlwaWNhbGx5IGJlIHdpcmVkIHRvIHRoZSBkaW9kZSBpbnNpZGUgdGhlIENQVSkKKwordGVtcFsxLTNdX21pbiwKK3RlbXBbMS0zXV9tYXgJLSBsb3dlciBhbmQgdXBwZXIgYWxhcm0gdGhyZXNob2xkcyBmb3IgdGVtcGVyYXR1cmVzCisKK3RlbXBbMS0zXV9vZmZzZXQgLSB0ZW1wZXJhdHVyZSBvZmZzZXQgcmVnaXN0ZXJzCisJCSAgVGhlIGNoaXAgYWRkcyB0aGUgb2Zmc2V0cyBzdG9yZWQgaW4gdGhlc2UgcmVnaXN0ZXJzIHRvCisJCSAgdGhlIGNvcnJlc3BvbmRpbmcgdGVtcGVyYXR1cmUgcmVhZGluZ3MuCisJCSAgTm90ZSB0aGF0IHRlbXAxIGFuZCB0ZW1wMiBvZmZzZXRzIHNoYXJlIHRoZSBzYW1lIHJlZ2lzdGVyLAorCQkgIHRoZXkgY2Fubm90IGJvdGggYmUgZGlmZmVyZW50IGZyb20gemVybyBhdCB0aGUgc2FtZSB0aW1lLgorCQkgIFdyaXRpbmcgYSBub24temVybyBudW1iZXIgdG8gb25lIG9mIHRoZW0gd2lsbCByZXNldCB0aGUgb3RoZXIKKwkJICBvZmZzZXQgdG8gemVyby4KKworCQkgIEFsbCB0ZW1wZXJhdHVyZXMgYW5kIG9mZnNldHMgYXJlIHJlYWQgYW5kIHdyaXR0ZW4gaW4KKwkJICB1bml0cyBvZiAwLjAwMSBkZWdDLgorCit0ZW1wWzEtM11fYWxhcm0gLSBhbGFybSBmbGFncyBmb3IgdGVtcGVyYXR1cmUgaW5wdXRzLCAnMScgaW4gY2FzZSBvZiBhbGFybSwKKwkJICAnMCcgb3RoZXJ3aXNlLgordGVtcFsyLTNdX2lucHV0X2ZhdWx0IC0gZGlvZGUgZmF1bHQgZmxhZ3MgZm9yIHRlbXBlcmF0dXJlIGlucHV0cyAyIGFuZCAzLgorCQkgIEEgZmF1bHQgaXMgZGV0ZWN0ZWQgaWYgdGhlIHR3byBwaW5zIGZvciB0aGUgY29ycmVzcG9uZGluZworCQkgIHNlbnNvciBhcmUgb3BlbiBvciBzaG9ydGVkLCBvciBhbnkgb2YgdGhlIHR3byBpcyBzaG9ydGVkCisJCSAgdG8gZ3JvdW5kIG9yIFZjYy4gJzEnIGluZGljYXRlcyBhIGRpb2RlIGZhdWx0LgorCitjcHUwX3ZpZAktIENQVSB2b2x0YWdlIGFzIHJlY2VpdmVkIGZyb20gdGhlIENQVQorCit2cm0JCS0gQ1BVIFZJRCBzdGFuZGFyZCB1c2VkIGZvciBkZWNvZGluZyBDUFUgdm9sdGFnZQorCisJCSAgVGhlICpfbWluLCAqX21heCwgKl9vZmZzZXQgYW5kIHZybSBmaWxlcyBjYW4gYmUgcmVhZCBhbmQKKwkJICB3cml0dGVuLCBhbGwgb3RoZXJzIGFyZSByZWFkLW9ubHkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3N1Ym1pdHRpbmctcGF0Y2hlcyBiL0RvY3VtZW50YXRpb24vaHdtb24vc3VibWl0dGluZy1wYXRjaGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMDE4MjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3N1Ym1pdHRpbmctcGF0Y2hlcwpAQCAtMCwwICsxLDExNyBAQAorCUhvdyB0byBHZXQgWW91ciBQYXRjaCBBY2NlcHRlZCBJbnRvIHRoZSBId21vbiBTdWJzeXN0ZW0KKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgdGV4dCBpcyBhIGNvbGxlY3Rpb24gb2Ygc3VnZ2VzdGlvbnMgZm9yIHBlb3BsZSB3cml0aW5nIHBhdGNoZXMgb3IKK2RyaXZlcnMgZm9yIHRoZSBod21vbiBzdWJzeXN0ZW0uIEZvbGxvd2luZyB0aGVzZSBzdWdnZXN0aW9ucyB3aWxsIGdyZWF0bHkKK2luY3JlYXNlIHRoZSBjaGFuY2VzIG9mIHlvdXIgY2hhbmdlIGJlaW5nIGFjY2VwdGVkLgorCisKKzEuIEdlbmVyYWwKKy0tLS0tLS0tLS0KKworKiBJdCBzaG91bGQgYmUgdW5uZWNlc3NhcnkgdG8gbWVudGlvbiwgYnV0IHBsZWFzZSByZWFkIGFuZCBmb2xsb3cKKyAgICBEb2N1bWVudGF0aW9uL1N1Ym1pdENoZWNrbGlzdAorICAgIERvY3VtZW50YXRpb24vU3VibWl0dGluZ0RyaXZlcnMKKyAgICBEb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzCisgICAgRG9jdW1lbnRhdGlvbi9Db2RpbmdTdHlsZQorCisqIElmIHlvdXIgcGF0Y2ggZ2VuZXJhdGVzIGNoZWNrcGF0Y2ggd2FybmluZ3MsIHBsZWFzZSByZWZyYWluIGZyb20gZXhwbGFuYXRpb25zCisgIHN1Y2ggYXMgIkkgZG9uJ3QgbGlrZSB0aGF0IGNvZGluZyBzdHlsZSIuIEtlZXAgaW4gbWluZCB0aGF0IGVhY2ggdW5uZWNlc3NhcnkKKyAgd2FybmluZyBoZWxwcyBoaWRpbmcgYSByZWFsIHByb2JsZW0uIElmIHlvdSBkb24ndCBsaWtlIHRoZSBrZXJuZWwgY29kaW5nCisgIHN0eWxlLCBkb24ndCB3cml0ZSBrZXJuZWwgZHJpdmVycy4KKworKiBQbGVhc2UgdGVzdCB5b3VyIHBhdGNoIHRob3JvdWdobHkuIFdlIGFyZSBub3QgeW91ciB0ZXN0IGdyb3VwLgorICBTb21ldGltZXMgYSBwYXRjaCBjYW4gbm90IG9yIG5vdCBjb21wbGV0ZWx5IGJlIHRlc3RlZCBiZWNhdXNlIG9mIG1pc3NpbmcKKyAgaGFyZHdhcmUuIEluIHN1Y2ggY2FzZXMsIHlvdSBzaG91bGQgdGVzdC1idWlsZCB0aGUgY29kZSBvbiBhdCBsZWFzdCBvbmUKKyAgYXJjaGl0ZWN0dXJlLiBJZiBydW4tdGltZSB0ZXN0aW5nIHdhcyBub3QgYWNoaWV2ZWQsIGl0IHNob3VsZCBiZSB3cml0dGVuCisgIGV4cGxpY2l0bHkgYmVsb3cgdGhlIHBhdGNoIGhlYWRlci4KKworKiBJZiB5b3VyIHBhdGNoIChvciB0aGUgZHJpdmVyKSBpcyBhZmZlY3RlZCBieSBjb25maWd1cmF0aW9uIG9wdGlvbnMgc3VjaCBhcworICBDT05GSUdfU01QLCBtYWtlIHN1cmUgaXQgY29tcGlsZXMgZm9yIGFsbCBjb25maWd1cmF0aW9uIHZhcmlhbnRzLgorCisKKzIuIEFkZGluZyBmdW5jdGlvbmFsaXR5IHRvIGV4aXN0aW5nIGRyaXZlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBNYWtlIHN1cmUgdGhlIGRvY3VtZW50YXRpb24gaW4gRG9jdW1lbnRhdGlvbi9od21vbi88ZHJpdmVyX25hbWU+IGlzIHVwIHRvCisgIGRhdGUuCisKKyogTWFrZSBzdXJlIHRoZSBpbmZvcm1hdGlvbiBpbiBLY29uZmlnIGlzIHVwIHRvIGRhdGUuCisKKyogSWYgdGhlIGFkZGVkIGZ1bmN0aW9uYWxpdHkgcmVxdWlyZXMgc29tZSBjbGVhbnVwIG9yIHN0cnVjdHVyYWwgY2hhbmdlcywgc3BsaXQKKyAgeW91ciBwYXRjaCBpbnRvIGEgY2xlYW51cCBwYXJ0IGFuZCB0aGUgYWN0dWFsIGFkZGl0aW9uLiBUaGlzIG1ha2VzIGl0IGVhc2llcgorICB0byByZXZpZXcgeW91ciBjaGFuZ2VzLCBhbmQgdG8gYmlzZWN0IGFueSByZXN1bHRpbmcgcHJvYmxlbXMuCisKKyogTmV2ZXIgbWl4IGJ1ZyBmaXhlcywgY2xlYW51cCwgYW5kIGZ1bmN0aW9uYWwgZW5oYW5jZW1lbnRzIGluIGEgc2luZ2xlIHBhdGNoLgorCisKKzMuIE5ldyBkcml2ZXJzCistLS0tLS0tLS0tLS0tLQorCisqIFJ1bm5pbmcgeW91ciBwYXRjaCBvciBkcml2ZXIgZmlsZShzKSB0aHJvdWdoIGNoZWNrcGF0Y2ggZG9lcyBub3QgbWVhbiBpdHMKKyAgZm9ybWF0dGluZyBpcyBjbGVhbi4gSWYgdW5zdXJlIGFib3V0IGZvcm1hdHRpbmcgaW4geW91ciBuZXcgZHJpdmVyLCBydW4gaXQKKyAgdGhyb3VnaCBMaW5kZW50LiBMaW5kZW50IGlzIG5vdCBwZXJmZWN0LCBhbmQgeW91IG1heSBoYXZlIHRvIGRvIHNvbWUgbWlub3IKKyAgY2xlYW51cCwgYnV0IGl0IGlzIGEgZ29vZCBzdGFydC4KKworKiBDb25zaWRlciBhZGRpbmcgeW91cnNlbGYgdG8gTUFJTlRBSU5FUlMuCisKKyogRG9jdW1lbnQgdGhlIGRyaXZlciBpbiBEb2N1bWVudGF0aW9uL2h3bW9uLzxkcml2ZXJfbmFtZT4uCisKKyogQWRkIHRoZSBkcml2ZXIgdG8gS2NvbmZpZyBhbmQgTWFrZWZpbGUgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLgorCisqIE1ha2Ugc3VyZSB0aGF0IGFsbCBkZXBlbmRlbmNpZXMgYXJlIGxpc3RlZCBpbiBLY29uZmlnLgorCisqIEF2b2lkIGZvcndhcmQgZGVjbGFyYXRpb25zIGlmIHlvdSBjYW4uIFJlYXJyYW5nZSB0aGUgY29kZSBpZiBuZWNlc3NhcnkuCisKKyogQXZvaWQgY2FsY3VsYXRpb25zIGluIG1hY3JvcyBhbmQgbWFjcm8tZ2VuZXJhdGVkIGZ1bmN0aW9ucy4gV2hpbGUgc3VjaCBtYWNyb3MKKyAgbWF5IHNhdmUgYSBsaW5lIG9yIHNvIGluIHRoZSBzb3VyY2UsIGl0IG9iZnVzY2F0ZXMgdGhlIGNvZGUgYW5kIG1ha2VzIGNvZGUKKyAgcmV2aWV3IG1vcmUgZGlmZmljdWx0LiBJdCBtYXkgYWxzbyByZXN1bHQgaW4gY29kZSB3aGljaCBpcyBtb3JlIGNvbXBsaWNhdGVkCisgIHRoYW4gbmVjZXNzYXJ5LiBVc2UgaW5saW5lIGZ1bmN0aW9ucyBvciBqdXN0IHJlZ3VsYXIgZnVuY3Rpb25zIGluc3RlYWQuCisKKyogVXNlIGRldnJlcyBmdW5jdGlvbnMgd2hlbmV2ZXIgcG9zc2libGUgdG8gYWxsb2NhdGUgcmVzb3VyY2VzLiBGb3IgcmF0aW9uYWxlCisgIGFuZCBzdXBwb3J0ZWQgZnVuY3Rpb25zLCBwbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vZHJpdmVyLW1vZGVsL2RldnJlcy50eHQuCisKKyogSWYgdGhlIGRyaXZlciBoYXMgYSBkZXRlY3QgZnVuY3Rpb24sIG1ha2Ugc3VyZSBpdCBpcyBzaWxlbnQuIERlYnVnIG1lc3NhZ2VzCisgIGFuZCBtZXNzYWdlcyBwcmludGVkIGFmdGVyIGEgc3VjY2Vzc2Z1bCBkZXRlY3Rpb24gYXJlIGFjY2VwdGFibGUsIGJ1dCBpdAorICBtdXN0IG5vdCBwcmludCBtZXNzYWdlcyBzdWNoIGFzICJDaGlwIFhYWCBub3QgZm91bmQvc3VwcG9ydGVkIi4KKworICBLZWVwIGluIG1pbmQgdGhhdCB0aGUgZGV0ZWN0IGZ1bmN0aW9uIHdpbGwgcnVuIGZvciBhbGwgZHJpdmVycyBzdXBwb3J0aW5nIGFuCisgIGFkZHJlc3MgaWYgYSBjaGlwIGlzIGRldGVjdGVkIG9uIHRoYXQgYWRkcmVzcy4gVW5uZWNlc3NhcnkgbWVzc2FnZXMgd2lsbCBqdXN0CisgIHBvbGx1dGUgdGhlIGtlcm5lbCBsb2cgYW5kIG5vdCBwcm92aWRlIGFueSB2YWx1ZS4KKworKiBQcm92aWRlIGEgZGV0ZWN0IGZ1bmN0aW9uIGlmIGFuZCBvbmx5IGlmIGEgY2hpcCBjYW4gYmUgZGV0ZWN0ZWQgcmVsaWFibHkuCisKKyogT25seSB0aGUgZm9sbG93aW5nIEkyQyBhZGRyZXNzZXMgc2hhbGwgYmUgcHJvYmVkOiAweDE4LTB4MWYsIDB4MjgtMHgyZiwKKyAgMHg0OC0weDRmLCAweDU4LCAweDVjLCAweDczIGFuZCAweDc3LiBQcm9iaW5nIG90aGVyIGFkZHJlc3NlcyBpcyBzdHJvbmdseQorICBkaXNjb3VyYWdlZCBhcyBpdCBpcyBrbm93biB0byBjYXVzZSB0cm91YmxlIHdpdGggb3RoZXIgKG5vbi1od21vbikgSTJDCisgIGNoaXBzLiBJZiB5b3VyIGNoaXAgbGl2ZXMgYXQgYW4gYWRkcmVzcyB3aGljaCBjYW4ndCBiZSBwcm9iZWQgdGhlbiB0aGUKKyAgZGV2aWNlIHdpbGwgaGF2ZSB0byBiZSBpbnN0YW50aWF0ZWQgZXhwbGljaXRseSAod2hpY2ggaXMgYWx3YXlzIGJldHRlcgorICBhbnl3YXkuKQorCisqIEF2b2lkIHdyaXRpbmcgdG8gY2hpcCByZWdpc3RlcnMgaW4gdGhlIGRldGVjdCBmdW5jdGlvbi4gSWYgeW91IGhhdmUgdG8gd3JpdGUsCisgIG9ubHkgZG8gaXQgYWZ0ZXIgeW91IGhhdmUgYWxyZWFkeSBnYXRoZXJlZCBlbm91Z2ggZGF0YSB0byBiZSBjZXJ0YWluIHRoYXQgdGhlCisgIGRldGVjdGlvbiBpcyBnb2luZyB0byBiZSBzdWNjZXNzZnVsLgorCisgIEtlZXAgaW4gbWluZCB0aGF0IHRoZSBjaGlwIG1pZ2h0IG5vdCBiZSB3aGF0IHlvdXIgZHJpdmVyIGJlbGlldmVzIGl0IGlzLCBhbmQKKyAgd3JpdGluZyB0byBpdCBtaWdodCBjYXVzZSBhIGJhZCBtaXNjb25maWd1cmF0aW9uLgorCisqIE1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gcmFjZSBjb25kaXRpb25zIGluIHRoZSBwcm9iZSBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LAorICBjb21wbGV0ZWx5IGluaXRpYWxpemUgeW91ciBjaGlwIGZpcnN0LCB0aGVuIGNyZWF0ZSBzeXNmcyBlbnRyaWVzIGFuZCByZWdpc3RlcgorICB3aXRoIHRoZSBod21vbiBzdWJzeXN0ZW0uCisKKyogRG8gbm90IHByb3ZpZGUgc3VwcG9ydCBmb3IgZGVwcmVjYXRlZCBzeXNmcyBhdHRyaWJ1dGVzLgorCisqIERvIG5vdCBjcmVhdGUgbm9uLXN0YW5kYXJkIGF0dHJpYnV0ZXMgdW5sZXNzIHJlYWxseSBuZWVkZWQuIElmIHlvdSBoYXZlIHRvIHVzZQorICBub24tc3RhbmRhcmQgYXR0cmlidXRlcywgb3IgeW91IGJlbGlldmUgeW91IGRvLCBkaXNjdXNzIGl0IG9uIHRoZSBtYWlsaW5nIGxpc3QKKyAgZmlyc3QuIEVpdGhlciBjYXNlLCBwcm92aWRlIGEgZGV0YWlsZWQgZXhwbGFuYXRpb24gd2h5IHlvdSBuZWVkIHRoZQorICBub24tc3RhbmRhcmQgYXR0cmlidXRlKHMpLgorICBTdGFuZGFyZCBhdHRyaWJ1dGVzIGFyZSBzcGVjaWZpZWQgaW4gRG9jdW1lbnRhdGlvbi9od21vbi9zeXNmcy1pbnRlcmZhY2UuCisKKyogV2hlbiBkZWNpZGluZyB3aGljaCBzeXNmcyBhdHRyaWJ1dGVzIHRvIHN1cHBvcnQsIGxvb2sgYXQgdGhlIGNoaXAncworICBjYXBhYmlsaXRpZXMuIFdoaWxlIHdlIGRvIG5vdCBleHBlY3QgeW91ciBkcml2ZXIgdG8gc3VwcG9ydCBldmVyeXRoaW5nIHRoZQorICBjaGlwIG1heSBvZmZlciwgaXQgc2hvdWxkIGF0IGxlYXN0IHN1cHBvcnQgYWxsIGxpbWl0cyBhbmQgYWxhcm1zLgorCisqIExhc3QgYnV0IG5vdCBsZWFzdCwgcGxlYXNlIGNoZWNrIGlmIGEgZHJpdmVyIGZvciB5b3VyIGNoaXAgYWxyZWFkeSBleGlzdHMKKyAgYmVmb3JlIHN0YXJ0aW5nIHRvIHdyaXRlIGEgbmV3IGRyaXZlci4gRXNwZWNpYWxseSBmb3IgdGVtcGVyYXR1cmUgc2Vuc29ycywKKyAgbmV3IGNoaXBzIGFyZSBvZnRlbiB2YXJpYW50cyBvZiBwcmV2aW91c2x5IHJlbGVhc2VkIGNoaXBzLiBJbiBzb21lIGNhc2VzLAorICBhIHByZXN1bWFibHkgbmV3IGNoaXAgbWF5IHNpbXBseSBoYXZlIGJlZW4gcmVsYWJlbGVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9zeXNmcy1pbnRlcmZhY2UgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3N5c2ZzLWludGVyZmFjZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2M5NWFkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9zeXNmcy1pbnRlcmZhY2UKQEAgLTAsMCArMSw3NjAgQEAKK05hbWluZyBhbmQgZGF0YSBmb3JtYXQgc3RhbmRhcmRzIGZvciBzeXNmcyBmaWxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBsaWJzZW5zb3JzIGxpYnJhcnkgb2ZmZXJzIGFuIGludGVyZmFjZSB0byB0aGUgcmF3IHNlbnNvcnMgZGF0YQordGhyb3VnaCB0aGUgc3lzZnMgaW50ZXJmYWNlLiBTaW5jZSBsbS1zZW5zb3JzIDMuMC4wLCBsaWJzZW5zb3JzIGlzCitjb21wbGV0ZWx5IGNoaXAtaW5kZXBlbmRlbnQuIEl0IGFzc3VtZXMgdGhhdCBhbGwgdGhlIGtlcm5lbCBkcml2ZXJzCitpbXBsZW1lbnQgdGhlIHN0YW5kYXJkIHN5c2ZzIGludGVyZmFjZSBkZXNjcmliZWQgaW4gdGhpcyBkb2N1bWVudC4KK1RoaXMgbWFrZXMgYWRkaW5nIG9yIHVwZGF0aW5nIHN1cHBvcnQgZm9yIGFueSBnaXZlbiBjaGlwIHZlcnkgZWFzeSwgYXMKK2xpYnNlbnNvcnMsIGFuZCBhcHBsaWNhdGlvbnMgdXNpbmcgaXQsIGRvIG5vdCBuZWVkIHRvIGJlIG1vZGlmaWVkLgorVGhpcyBpcyBhIG1ham9yIGltcHJvdmVtZW50IGNvbXBhcmVkIHRvIGxtLXNlbnNvcnMgMi4KKworTm90ZSB0aGF0IG1vdGhlcmJvYXJkcyB2YXJ5IHdpZGVseSBpbiB0aGUgY29ubmVjdGlvbnMgdG8gc2Vuc29yIGNoaXBzLgorVGhlcmUgaXMgbm8gc3RhbmRhcmQgdGhhdCBlbnN1cmVzLCBmb3IgZXhhbXBsZSwgdGhhdCB0aGUgc2Vjb25kCit0ZW1wZXJhdHVyZSBzZW5zb3IgaXMgY29ubmVjdGVkIHRvIHRoZSBDUFUsIG9yIHRoYXQgdGhlIHNlY29uZCBmYW4gaXMgb24KK3RoZSBDUFUuIEFsc28sIHNvbWUgdmFsdWVzIHJlcG9ydGVkIGJ5IHRoZSBjaGlwcyBuZWVkIHNvbWUgY29tcHV0YXRpb24KK2JlZm9yZSB0aGV5IG1ha2UgZnVsbCBzZW5zZS4gRm9yIGV4YW1wbGUsIG1vc3QgY2hpcHMgY2FuIG9ubHkgbWVhc3VyZQordm9sdGFnZXMgYmV0d2VlbiAwIGFuZCArNFYuIE90aGVyIHZvbHRhZ2VzIGFyZSBzY2FsZWQgYmFjayBpbnRvIHRoYXQKK3JhbmdlIHVzaW5nIGV4dGVybmFsIHJlc2lzdG9ycy4gU2luY2UgdGhlIHZhbHVlcyBvZiB0aGVzZSByZXNpc3RvcnMKK2NhbiBjaGFuZ2UgZnJvbSBtb3RoZXJib2FyZCB0byBtb3RoZXJib2FyZCwgdGhlIGNvbnZlcnNpb25zIGNhbm5vdCBiZQoraGFyZCBjb2RlZCBpbnRvIHRoZSBkcml2ZXIgYW5kIGhhdmUgdG8gYmUgZG9uZSBpbiB1c2VyIHNwYWNlLgorCitGb3IgdGhpcyByZWFzb24sIGV2ZW4gaWYgd2UgYWltIGF0IGEgY2hpcC1pbmRlcGVuZGVudCBsaWJzZW5zb3JzLCBpdCB3aWxsCitzdGlsbCByZXF1aXJlIGEgY29uZmlndXJhdGlvbiBmaWxlIChlLmcuIC9ldGMvc2Vuc29ycy5jb25mKSBmb3IgcHJvcGVyCit2YWx1ZXMgY29udmVyc2lvbiwgbGFiZWxpbmcgb2YgaW5wdXRzIGFuZCBoaWRpbmcgb2YgdW51c2VkIGlucHV0cy4KKworQW4gYWx0ZXJuYXRpdmUgbWV0aG9kIHRoYXQgc29tZSBwcm9ncmFtcyB1c2UgaXMgdG8gYWNjZXNzIHRoZSBzeXNmcworZmlsZXMgZGlyZWN0bHkuIFRoaXMgZG9jdW1lbnQgYnJpZWZseSBkZXNjcmliZXMgdGhlIHN0YW5kYXJkcyB0aGF0IHRoZQorZHJpdmVycyBmb2xsb3csIHNvIHRoYXQgYW4gYXBwbGljYXRpb24gcHJvZ3JhbSBjYW4gc2NhbiBmb3IgZW50cmllcyBhbmQKK2FjY2VzcyB0aGlzIGRhdGEgaW4gYSBzaW1wbGUgYW5kIGNvbnNpc3RlbnQgd2F5LiBUaGF0IHNhaWQsIHN1Y2ggcHJvZ3JhbXMKK3dpbGwgaGF2ZSB0byBpbXBsZW1lbnQgY29udmVyc2lvbiwgbGFiZWxpbmcgYW5kIGhpZGluZyBvZiBpbnB1dHMuIEZvcgordGhpcyByZWFzb24sIGl0IGlzIHN0aWxsIG5vdCByZWNvbW1lbmRlZCB0byBieXBhc3MgdGhlIGxpYnJhcnkuCisKK0VhY2ggY2hpcCBnZXRzIGl0cyBvd24gZGlyZWN0b3J5IGluIHRoZSBzeXNmcyAvc3lzL2RldmljZXMgdHJlZS4gIFRvCitmaW5kIGFsbCBzZW5zb3IgY2hpcHMsIGl0IGlzIGVhc2llciB0byBmb2xsb3cgdGhlIGRldmljZSBzeW1saW5rcyBmcm9tCisvc3lzL2NsYXNzL2h3bW9uL2h3bW9uKi4KKworVXAgdG8gbG0tc2Vuc29ycyAzLjAuMCwgbGlic2Vuc29ycyBsb29rcyBmb3IgaGFyZHdhcmUgbW9uaXRvcmluZyBhdHRyaWJ1dGVzCitpbiB0aGUgInBoeXNpY2FsIiBkZXZpY2UgZGlyZWN0b3J5LiBTaW5jZSBsbS1zZW5zb3JzIDMuMC4xLCBhdHRyaWJ1dGVzIGZvdW5kCitpbiB0aGUgaHdtb24gImNsYXNzIiBkZXZpY2UgZGlyZWN0b3J5IGFyZSBhbHNvIHN1cHBvcnRlZC4gQ29tcGxleCBkcml2ZXJzCisoZS5nLiBkcml2ZXJzIGZvciBtdWx0aWZ1bmN0aW9uIGNoaXBzKSBtYXkgd2FudCB0byB1c2UgdGhpcyBwb3NzaWJpbGl0eSB0bworYXZvaWQgbmFtZXNwYWNlIHBvbGx1dGlvbi4gVGhlIG9ubHkgZHJhd2JhY2sgd2lsbCBiZSB0aGF0IG9sZGVyIHZlcnNpb25zIG9mCitsaWJzZW5zb3JzIHdvbid0IHN1cHBvcnQgdGhlIGRyaXZlciBpbiBxdWVzdGlvbi4KKworQWxsIHN5c2ZzIHZhbHVlcyBhcmUgZml4ZWQgcG9pbnQgbnVtYmVycy4KKworVGhlcmUgaXMgb25seSBvbmUgdmFsdWUgcGVyIGZpbGUsIHVubGlrZSB0aGUgb2xkZXIgL3Byb2Mgc3BlY2lmaWNhdGlvbi4KK1RoZSBjb21tb24gc2NoZW1lIGZvciBmaWxlcyBuYW1pbmcgaXM6IDx0eXBlPjxudW1iZXI+XzxpdGVtPi4gVXN1YWwKK3R5cGVzIGZvciBzZW5zb3IgY2hpcHMgYXJlICJpbiIgKHZvbHRhZ2UpLCAidGVtcCIgKHRlbXBlcmF0dXJlKSBhbmQKKyJmYW4iIChmYW4pLiBVc3VhbCBpdGVtcyBhcmUgImlucHV0IiAobWVhc3VyZWQgdmFsdWUpLCAibWF4IiAoaGlnaAordGhyZXNob2xkLCAibWluIiAobG93IHRocmVzaG9sZCkuIE51bWJlcmluZyB1c3VhbGx5IHN0YXJ0cyBmcm9tIDEsCitleGNlcHQgZm9yIHZvbHRhZ2VzIHdoaWNoIHN0YXJ0IGZyb20gMCAoYmVjYXVzZSBtb3N0IGRhdGEgc2hlZXRzIHVzZQordGhpcykuIEEgbnVtYmVyIGlzIGFsd2F5cyB1c2VkIGZvciBlbGVtZW50cyB0aGF0IGNhbiBiZSBwcmVzZW50IG1vcmUKK3RoYW4gb25jZSwgZXZlbiBpZiB0aGVyZSBpcyBhIHNpbmdsZSBlbGVtZW50IG9mIHRoZSBnaXZlbiB0eXBlIG9uIHRoZQorc3BlY2lmaWMgY2hpcC4gT3RoZXIgZmlsZXMgZG8gbm90IHJlZmVyIHRvIGEgc3BlY2lmaWMgZWxlbWVudCwgc28KK3RoZXkgaGF2ZSBhIHNpbXBsZSBuYW1lLCBhbmQgbm8gbnVtYmVyLgorCitBbGFybXMgYXJlIGRpcmVjdCBpbmRpY2F0aW9ucyByZWFkIGZyb20gdGhlIGNoaXBzLiBUaGUgZHJpdmVycyBkbyBOT1QKK21ha2UgY29tcGFyaXNvbnMgb2YgcmVhZGluZ3MgdG8gdGhyZXNob2xkcy4gVGhpcyBhbGxvd3MgdmlvbGF0aW9ucworYmV0d2VlbiByZWFkaW5ncyB0byBiZSBjYXVnaHQgYW5kIGFsYXJtZWQuIFRoZSBleGFjdCBkZWZpbml0aW9uIG9mIGFuCithbGFybSAoZm9yIGV4YW1wbGUsIHdoZXRoZXIgYSB0aHJlc2hvbGQgbXVzdCBiZSBtZXQgb3IgbXVzdCBiZSBleGNlZWRlZAordG8gY2F1c2UgYW4gYWxhcm0pIGlzIGNoaXAtZGVwZW5kZW50LgorCitXaGVuIHNldHRpbmcgdmFsdWVzIG9mIGh3bW9uIHN5c2ZzIGF0dHJpYnV0ZXMsIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YKK3RoZSBkZXNpcmVkIHZhbHVlIG11c3QgYmUgd3JpdHRlbiwgbm90ZSB0aGF0IHN0cmluZ3Mgd2hpY2ggYXJlIG5vdCBhIG51bWJlcgorYXJlIGludGVycHJldGVkIGFzIDAhIEZvciBtb3JlIG9uIGhvdyB3cml0dGVuIHN0cmluZ3MgYXJlIGludGVycHJldGVkIHNlZSB0aGUKKyJzeXNmcyBhdHRyaWJ1dGUgd3JpdGVzIGludGVycHJldGF0aW9uIiBzZWN0aW9uIGF0IHRoZSBlbmQgb2YgdGhpcyBmaWxlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1swLSpdCWRlbm90ZXMgYW55IHBvc2l0aXZlIG51bWJlciBzdGFydGluZyBmcm9tIDAKK1sxLSpdCWRlbm90ZXMgYW55IHBvc2l0aXZlIG51bWJlciBzdGFydGluZyBmcm9tIDEKK1JPCXJlYWQgb25seSB2YWx1ZQorV08Jd3JpdGUgb25seSB2YWx1ZQorUlcJcmVhZC93cml0ZSB2YWx1ZQorCitSZWFkL3dyaXRlIHZhbHVlcyBtYXkgYmUgcmVhZC1vbmx5IGZvciBzb21lIGNoaXBzLCBkZXBlbmRpbmcgb24gdGhlCitoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbi4KKworQWxsIGVudHJpZXMgKGV4Y2VwdCBuYW1lKSBhcmUgb3B0aW9uYWwsIGFuZCBzaG91bGQgb25seSBiZSBjcmVhdGVkIGluIGEKK2dpdmVuIGRyaXZlciBpZiB0aGUgY2hpcCBoYXMgdGhlIGZlYXR1cmUuCisKKworKioqKioqKioqKioqKioqKioqKioqCisqIEdsb2JhbCBhdHRyaWJ1dGVzICoKKyoqKioqKioqKioqKioqKioqKioqKgorCituYW1lCQlUaGUgY2hpcCBuYW1lLgorCQlUaGlzIHNob3VsZCBiZSBhIHNob3J0LCBsb3dlcmNhc2Ugc3RyaW5nLCBub3QgY29udGFpbmluZworCQlzcGFjZXMgbm9yIGRhc2hlcywgcmVwcmVzZW50aW5nIHRoZSBjaGlwIG5hbWUuIFRoaXMgaXMKKwkJdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4KKwkJSTJDIGRldmljZXMgZ2V0IHRoaXMgYXR0cmlidXRlIGNyZWF0ZWQgYXV0b21hdGljYWxseS4KKwkJUk8KKwordXBkYXRlX2ludGVydmFsCVRoZSBpbnRlcnZhbCBhdCB3aGljaCB0aGUgY2hpcCB3aWxsIHVwZGF0ZSByZWFkaW5ncy4KKwkJVW5pdDogbWlsbGlzZWNvbmQKKwkJUlcKKwkJU29tZSBkZXZpY2VzIGhhdmUgYSB2YXJpYWJsZSB1cGRhdGUgcmF0ZSBvciBpbnRlcnZhbC4KKwkJVGhpcyBhdHRyaWJ1dGUgY2FuIGJlIHVzZWQgdG8gY2hhbmdlIGl0IHRvIHRoZSBkZXNpcmVkIHZhbHVlLgorCisKKyoqKioqKioqKioqKgorKiBWb2x0YWdlcyAqCisqKioqKioqKioqKioKKworaW5bMC0qXV9taW4JVm9sdGFnZSBtaW4gdmFsdWUuCisJCVVuaXQ6IG1pbGxpdm9sdAorCQlSVworCQkKK2luWzAtKl1fbGNyaXQJVm9sdGFnZSBjcml0aWNhbCBtaW4gdmFsdWUuCisJCVVuaXQ6IG1pbGxpdm9sdAorCQlSVworCQlJZiB2b2x0YWdlIGRyb3BzIHRvIG9yIGJlbG93IHRoaXMgbGltaXQsIHRoZSBzeXN0ZW0gbWF5CisJCXRha2UgZHJhc3RpYyBhY3Rpb24gc3VjaCBhcyBwb3dlciBkb3duIG9yIHJlc2V0LiBBdCB0aGUgdmVyeQorCQlsZWFzdCwgaXQgc2hvdWxkIHJlcG9ydCBhIGZhdWx0LgorCitpblswLSpdX21heAlWb2x0YWdlIG1heCB2YWx1ZS4KKwkJVW5pdDogbWlsbGl2b2x0CisJCVJXCisJCQoraW5bMC0qXV9jcml0CVZvbHRhZ2UgY3JpdGljYWwgbWF4IHZhbHVlLgorCQlVbml0OiBtaWxsaXZvbHQKKwkJUlcKKwkJSWYgdm9sdGFnZSByZWFjaGVzIG9yIGV4Y2VlZHMgdGhpcyBsaW1pdCwgdGhlIHN5c3RlbSBtYXkKKwkJdGFrZSBkcmFzdGljIGFjdGlvbiBzdWNoIGFzIHBvd2VyIGRvd24gb3IgcmVzZXQuIEF0IHRoZSB2ZXJ5CisJCWxlYXN0LCBpdCBzaG91bGQgcmVwb3J0IGEgZmF1bHQuCisKK2luWzAtKl1faW5wdXQJVm9sdGFnZSBpbnB1dCB2YWx1ZS4KKwkJVW5pdDogbWlsbGl2b2x0CisJCVJPCisJCVZvbHRhZ2UgbWVhc3VyZWQgb24gdGhlIGNoaXAgcGluLgorCQlBY3R1YWwgdm9sdGFnZSBkZXBlbmRzIG9uIHRoZSBzY2FsaW5nIHJlc2lzdG9ycyBvbiB0aGUKKwkJbW90aGVyYm9hcmQsIGFzIHJlY29tbWVuZGVkIGluIHRoZSBjaGlwIGRhdGFzaGVldC4KKwkJVGhpcyB2YXJpZXMgYnkgY2hpcCBhbmQgYnkgbW90aGVyYm9hcmQuCisJCUJlY2F1c2Ugb2YgdGhpcyB2YXJpYXRpb24sIHZhbHVlcyBhcmUgZ2VuZXJhbGx5IE5PVCBzY2FsZWQKKwkJYnkgdGhlIGNoaXAgZHJpdmVyLCBhbmQgbXVzdCBiZSBkb25lIGJ5IHRoZSBhcHBsaWNhdGlvbi4KKwkJSG93ZXZlciwgc29tZSBkcml2ZXJzIChub3RhYmx5IGxtODcgYW5kIHZpYTY4NmEpCisJCWRvIHNjYWxlLCBiZWNhdXNlIG9mIGludGVybmFsIHJlc2lzdG9ycyBidWlsdCBpbnRvIGEgY2hpcC4KKwkJVGhlc2UgZHJpdmVycyB3aWxsIG91dHB1dCB0aGUgYWN0dWFsIHZvbHRhZ2UuIFJ1bGUgb2YKKwkJdGh1bWI6IGRyaXZlcnMgc2hvdWxkIHJlcG9ydCB0aGUgdm9sdGFnZSB2YWx1ZXMgYXQgdGhlCisJCSJwaW5zIiBvZiB0aGUgY2hpcC4KKworaW5bMC0qXV9hdmVyYWdlCisJCUF2ZXJhZ2Ugdm9sdGFnZQorCQlVbml0OiBtaWxsaXZvbHQKKwkJUk8KKworaW5bMC0qXV9sb3dlc3QKKwkJSGlzdG9yaWNhbCBtaW5pbXVtIHZvbHRhZ2UKKwkJVW5pdDogbWlsbGl2b2x0CisJCVJPCisKK2luWzAtKl1faGlnaGVzdAorCQlIaXN0b3JpY2FsIG1heGltdW0gdm9sdGFnZQorCQlVbml0OiBtaWxsaXZvbHQKKwkJUk8KKworaW5bMC0qXV9yZXNldF9oaXN0b3J5CisJCVJlc2V0IGluWF9sb3dlc3QgYW5kIGluWF9oaWdoZXN0CisJCVdPCisKK2luX3Jlc2V0X2hpc3RvcnkKKwkJUmVzZXQgaW5YX2xvd2VzdCBhbmQgaW5YX2hpZ2hlc3QgZm9yIGFsbCBzZW5zb3JzCisJCVdPCisKK2luWzAtKl1fbGFiZWwJU3VnZ2VzdGVkIHZvbHRhZ2UgY2hhbm5lbCBsYWJlbC4KKwkJVGV4dCBzdHJpbmcKKwkJU2hvdWxkIG9ubHkgYmUgY3JlYXRlZCBpZiB0aGUgZHJpdmVyIGhhcyBoaW50cyBhYm91dCB3aGF0CisJCXRoaXMgdm9sdGFnZSBjaGFubmVsIGlzIGJlaW5nIHVzZWQgZm9yLCBhbmQgdXNlci1zcGFjZQorCQlkb2Vzbid0LiBJbiBhbGwgb3RoZXIgY2FzZXMsIHRoZSBsYWJlbCBpcyBwcm92aWRlZCBieQorCQl1c2VyLXNwYWNlLgorCQlSTworCitjcHVbMC0qXV92aWQJQ1BVIGNvcmUgcmVmZXJlbmNlIHZvbHRhZ2UuCisJCVVuaXQ6IG1pbGxpdm9sdAorCQlSTworCQlOb3QgYWx3YXlzIGNvcnJlY3QuCisKK3ZybQkJVm9sdGFnZSBSZWd1bGF0b3IgTW9kdWxlIHZlcnNpb24gbnVtYmVyLiAKKwkJUlcgKGJ1dCBjaGFuZ2luZyBpdCBzaG91bGQgbm8gbW9yZSBiZSBuZWNlc3NhcnkpCisJCU9yaWdpbmFsbHkgdGhlIFZSTSBzdGFuZGFyZCB2ZXJzaW9uIG11bHRpcGxpZWQgYnkgMTAsIGJ1dCBub3cKKwkJYW4gYXJiaXRyYXJ5IG51bWJlciwgYXMgbm90IGFsbCBzdGFuZGFyZHMgaGF2ZSBhIHZlcnNpb24KKwkJbnVtYmVyLgorCQlBZmZlY3RzIHRoZSB3YXkgdGhlIGRyaXZlciBjYWxjdWxhdGVzIHRoZSBDUFUgY29yZSByZWZlcmVuY2UKKwkJdm9sdGFnZSBmcm9tIHRoZSB2aWQgcGlucy4KKworQWxzbyBzZWUgdGhlIEFsYXJtcyBzZWN0aW9uIGZvciBzdGF0dXMgZmxhZ3MgYXNzb2NpYXRlZCB3aXRoIHZvbHRhZ2VzLgorCisKKyoqKioqKioqCisqIEZhbnMgKgorKioqKioqKioKKworZmFuWzEtKl1fbWluCUZhbiBtaW5pbXVtIHZhbHVlCisJCVVuaXQ6IHJldm9sdXRpb24vbWluIChSUE0pCisJCVJXCisKK2ZhblsxLSpdX21heAlGYW4gbWF4aW11bSB2YWx1ZQorCQlVbml0OiByZXZvbHV0aW9uL21pbiAoUlBNKQorCQlPbmx5IHJhcmVseSBzdXBwb3J0ZWQgYnkgdGhlIGhhcmR3YXJlLgorCQlSVworCitmYW5bMS0qXV9pbnB1dAlGYW4gaW5wdXQgdmFsdWUuCisJCVVuaXQ6IHJldm9sdXRpb24vbWluIChSUE0pCisJCVJPCisKK2ZhblsxLSpdX2RpdglGYW4gZGl2aXNvci4KKwkJSW50ZWdlciB2YWx1ZSBpbiBwb3dlcnMgb2YgdHdvICgxLCAyLCA0LCA4LCAxNiwgMzIsIDY0LCAxMjgpLgorCQlSVworCQlTb21lIGNoaXBzIG9ubHkgc3VwcG9ydCB2YWx1ZXMgMSwgMiwgNCBhbmQgOC4KKwkJTm90ZSB0aGF0IHRoaXMgaXMgYWN0dWFsbHkgYW4gaW50ZXJuYWwgY2xvY2sgZGl2aXNvciwgd2hpY2gKKwkJYWZmZWN0cyB0aGUgbWVhc3VyYWJsZSBzcGVlZCByYW5nZSwgbm90IHRoZSByZWFkIHZhbHVlLgorCitmYW5bMS0qXV9wdWxzZXMJTnVtYmVyIG9mIHRhY2hvbWV0ZXIgcHVsc2VzIHBlciBmYW4gcmV2b2x1dGlvbi4KKwkJSW50ZWdlciB2YWx1ZSwgdHlwaWNhbGx5IGJldHdlZW4gMSBhbmQgNC4KKwkJUlcKKwkJVGhpcyB2YWx1ZSBpcyBhIGNoYXJhY3RlcmlzdGljIG9mIHRoZSBmYW4gY29ubmVjdGVkIHRvIHRoZQorCQlkZXZpY2UncyBpbnB1dCwgc28gaXQgaGFzIHRvIGJlIHNldCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGZhbgorCQltb2RlbC4KKwkJU2hvdWxkIG9ubHkgYmUgY3JlYXRlZCBpZiB0aGUgY2hpcCBoYXMgYSByZWdpc3RlciB0byBjb25maWd1cmUKKwkJdGhlIG51bWJlciBvZiBwdWxzZXMuIEluIHRoZSBhYnNlbmNlIG9mIHN1Y2ggYSByZWdpc3RlciAoYW5kCisJCXRodXMgYXR0cmlidXRlKSB0aGUgdmFsdWUgYXNzdW1lZCBieSBhbGwgZGV2aWNlcyBpcyAyIHB1bHNlcworCQlwZXIgZmFuIHJldm9sdXRpb24uCisKK2ZhblsxLSpdX3RhcmdldAorCQlEZXNpcmVkIGZhbiBzcGVlZAorCQlVbml0OiByZXZvbHV0aW9uL21pbiAoUlBNKQorCQlSVworCQlPbmx5IG1ha2VzIHNlbnNlIGlmIHRoZSBjaGlwIHN1cHBvcnRzIGNsb3NlZC1sb29wIGZhbiBzcGVlZAorCQljb250cm9sIGJhc2VkIG9uIHRoZSBtZWFzdXJlZCBmYW4gc3BlZWQuCisKK2ZhblsxLSpdX2xhYmVsCVN1Z2dlc3RlZCBmYW4gY2hhbm5lbCBsYWJlbC4KKwkJVGV4dCBzdHJpbmcKKwkJU2hvdWxkIG9ubHkgYmUgY3JlYXRlZCBpZiB0aGUgZHJpdmVyIGhhcyBoaW50cyBhYm91dCB3aGF0CisJCXRoaXMgZmFuIGNoYW5uZWwgaXMgYmVpbmcgdXNlZCBmb3IsIGFuZCB1c2VyLXNwYWNlIGRvZXNuJ3QuCisJCUluIGFsbCBvdGhlciBjYXNlcywgdGhlIGxhYmVsIGlzIHByb3ZpZGVkIGJ5IHVzZXItc3BhY2UuCisJCVJPCisKK0Fsc28gc2VlIHRoZSBBbGFybXMgc2VjdGlvbiBmb3Igc3RhdHVzIGZsYWdzIGFzc29jaWF0ZWQgd2l0aCBmYW5zLgorCisKKyoqKioqKioKKyogUFdNICoKKyoqKioqKioKKworcHdtWzEtKl0JUHVsc2Ugd2lkdGggbW9kdWxhdGlvbiBmYW4gY29udHJvbC4KKwkJSW50ZWdlciB2YWx1ZSBpbiB0aGUgcmFuZ2UgMCB0byAyNTUKKwkJUlcKKwkJMjU1IGlzIG1heCBvciAxMDAlLgorCitwd21bMS0qXV9lbmFibGUKKwkJRmFuIHNwZWVkIGNvbnRyb2wgbWV0aG9kOgorCQkwOiBubyBmYW4gc3BlZWQgY29udHJvbCAoaS5lLiBmYW4gYXQgZnVsbCBzcGVlZCkKKwkJMTogbWFudWFsIGZhbiBzcGVlZCBjb250cm9sIGVuYWJsZWQgKHVzaW5nIHB3bVsxLSpdKQorCQkyKzogYXV0b21hdGljIGZhbiBzcGVlZCBjb250cm9sIGVuYWJsZWQKKwkJQ2hlY2sgaW5kaXZpZHVhbCBjaGlwIGRvY3VtZW50YXRpb24gZmlsZXMgZm9yIGF1dG9tYXRpYyBtb2RlCisJCWRldGFpbHMuCisJCVJXCisKK3B3bVsxLSpdX21vZGUJMDogREMgbW9kZSAoZGlyZWN0IGN1cnJlbnQpCisJCTE6IFBXTSBtb2RlIChwdWxzZS13aWR0aCBtb2R1bGF0aW9uKQorCQlSVworCitwd21bMS0qXV9mcmVxCUJhc2UgUFdNIGZyZXF1ZW5jeSBpbiBIei4KKwkJT25seSBwb3NzaWJseSBhdmFpbGFibGUgd2hlbiBwd21OX21vZGUgaXMgUFdNLCBidXQgbm90IGFsd2F5cworCQlwcmVzZW50IGV2ZW4gdGhlbi4KKwkJUlcKKworcHdtWzEtKl1fYXV0b19jaGFubmVsc190ZW1wCisJCVNlbGVjdCB3aGljaCB0ZW1wZXJhdHVyZSBjaGFubmVscyBhZmZlY3QgdGhpcyBQV00gb3V0cHV0IGluCisJCWF1dG8gbW9kZS4gQml0ZmllbGQsIDEgaXMgdGVtcDEsIDIgaXMgdGVtcDIsIDQgaXMgdGVtcDMgZXRjLi4uCisJCVdoaWNoIHZhbHVlcyBhcmUgcG9zc2libGUgZGVwZW5kIG9uIHRoZSBjaGlwIHVzZWQuCisJCVJXCisKK3B3bVsxLSpdX2F1dG9fcG9pbnRbMS0qXV9wd20KK3B3bVsxLSpdX2F1dG9fcG9pbnRbMS0qXV90ZW1wCitwd21bMS0qXV9hdXRvX3BvaW50WzEtKl1fdGVtcF9oeXN0CisJCURlZmluZSB0aGUgUFdNIHZzIHRlbXBlcmF0dXJlIGN1cnZlLiBOdW1iZXIgb2YgdHJpcCBwb2ludHMgaXMKKwkJY2hpcC1kZXBlbmRlbnQuIFVzZSB0aGlzIGZvciBjaGlwcyB3aGljaCBhc3NvY2lhdGUgdHJpcCBwb2ludHMKKwkJdG8gUFdNIG91dHB1dCBjaGFubmVscy4KKwkJUlcKKwordGVtcFsxLSpdX2F1dG9fcG9pbnRbMS0qXV9wd20KK3RlbXBbMS0qXV9hdXRvX3BvaW50WzEtKl1fdGVtcAordGVtcFsxLSpdX2F1dG9fcG9pbnRbMS0qXV90ZW1wX2h5c3QKKwkJRGVmaW5lIHRoZSBQV00gdnMgdGVtcGVyYXR1cmUgY3VydmUuIE51bWJlciBvZiB0cmlwIHBvaW50cyBpcworCQljaGlwLWRlcGVuZGVudC4gVXNlIHRoaXMgZm9yIGNoaXBzIHdoaWNoIGFzc29jaWF0ZSB0cmlwIHBvaW50cworCQl0byB0ZW1wZXJhdHVyZSBjaGFubmVscy4KKwkJUlcKKworVGhlcmUgaXMgYSB0aGlyZCBjYXNlIHdoZXJlIHRyaXAgcG9pbnRzIGFyZSBhc3NvY2lhdGVkIHRvIGJvdGggUFdNIG91dHB1dAorY2hhbm5lbHMgYW5kIHRlbXBlcmF0dXJlIGNoYW5uZWxzOiB0aGUgUFdNIHZhbHVlcyBhcmUgYXNzb2NpYXRlZCB0byBQV00KK291dHB1dCBjaGFubmVscyB3aGlsZSB0aGUgdGVtcGVyYXR1cmUgdmFsdWVzIGFyZSBhc3NvY2lhdGVkIHRvIHRlbXBlcmF0dXJlCitjaGFubmVscy4gSW4gdGhhdCBjYXNlLCB0aGUgcmVzdWx0IGlzIGRldGVybWluZWQgYnkgdGhlIG1hcHBpbmcgYmV0d2VlbgordGVtcGVyYXR1cmUgaW5wdXRzIGFuZCBQV00gb3V0cHV0cy4gV2hlbiBzZXZlcmFsIHRlbXBlcmF0dXJlIGlucHV0cyBhcmUKK21hcHBlZCB0byBhIGdpdmVuIFBXTSBvdXRwdXQsIHRoaXMgbGVhZHMgdG8gc2V2ZXJhbCBjYW5kaWRhdGUgUFdNIHZhbHVlcy4KK1RoZSBhY3R1YWwgcmVzdWx0IGlzIHVwIHRvIHRoZSBjaGlwLCBidXQgaW4gZ2VuZXJhbCB0aGUgaGlnaGVzdCBjYW5kaWRhdGUKK3ZhbHVlIChmYXN0ZXN0IGZhbiBzcGVlZCkgd2lucy4KKworCisqKioqKioqKioqKioqKioqCisqIFRlbXBlcmF0dXJlcyAqCisqKioqKioqKioqKioqKioqCisKK3RlbXBbMS0qXV90eXBlCVNlbnNvciB0eXBlIHNlbGVjdGlvbi4KKwkJSW50ZWdlcnMgMSB0byA2CisJCVJXCisJCTE6IENQVSBlbWJlZGRlZCBkaW9kZQorCQkyOiAzOTA0IHRyYW5zaXN0b3IKKwkJMzogdGhlcm1hbCBkaW9kZQorCQk0OiB0aGVybWlzdG9yCisJCTU6IEFNRCBBTURTSQorCQk2OiBJbnRlbCBQRUNJCisJCU5vdCBhbGwgdHlwZXMgYXJlIHN1cHBvcnRlZCBieSBhbGwgY2hpcHMKKwordGVtcFsxLSpdX21heAlUZW1wZXJhdHVyZSBtYXggdmFsdWUuCisJCVVuaXQ6IG1pbGxpZGVncmVlIENlbHNpdXMgKG9yIG1pbGxpdm9sdCwgc2VlIGJlbG93KQorCQlSVworCit0ZW1wWzEtKl1fbWluCVRlbXBlcmF0dXJlIG1pbiB2YWx1ZS4KKwkJVW5pdDogbWlsbGlkZWdyZWUgQ2Vsc2l1cworCQlSVworCit0ZW1wWzEtKl1fbWF4X2h5c3QKKwkJVGVtcGVyYXR1cmUgaHlzdGVyZXNpcyB2YWx1ZSBmb3IgbWF4IGxpbWl0LgorCQlVbml0OiBtaWxsaWRlZ3JlZSBDZWxzaXVzCisJCU11c3QgYmUgcmVwb3J0ZWQgYXMgYW4gYWJzb2x1dGUgdGVtcGVyYXR1cmUsIE5PVCBhIGRlbHRhCisJCWZyb20gdGhlIG1heCB2YWx1ZS4KKwkJUlcKKwordGVtcFsxLSpdX21pbl9oeXN0CisJCVRlbXBlcmF0dXJlIGh5c3RlcmVzaXMgdmFsdWUgZm9yIG1pbiBsaW1pdC4KKwkJVW5pdDogbWlsbGlkZWdyZWUgQ2Vsc2l1cworCQlNdXN0IGJlIHJlcG9ydGVkIGFzIGFuIGFic29sdXRlIHRlbXBlcmF0dXJlLCBOT1QgYSBkZWx0YQorCQlmcm9tIHRoZSBtaW4gdmFsdWUuCisJCVJXCisKK3RlbXBbMS0qXV9pbnB1dCBUZW1wZXJhdHVyZSBpbnB1dCB2YWx1ZS4KKwkJVW5pdDogbWlsbGlkZWdyZWUgQ2Vsc2l1cworCQlSTworCit0ZW1wWzEtKl1fY3JpdAlUZW1wZXJhdHVyZSBjcml0aWNhbCBtYXggdmFsdWUsIHR5cGljYWxseSBncmVhdGVyIHRoYW4KKwkJY29ycmVzcG9uZGluZyB0ZW1wX21heCB2YWx1ZXMuCisJCVVuaXQ6IG1pbGxpZGVncmVlIENlbHNpdXMKKwkJUlcKKwordGVtcFsxLSpdX2NyaXRfaHlzdAorCQlUZW1wZXJhdHVyZSBoeXN0ZXJlc2lzIHZhbHVlIGZvciBjcml0aWNhbCBsaW1pdC4KKwkJVW5pdDogbWlsbGlkZWdyZWUgQ2Vsc2l1cworCQlNdXN0IGJlIHJlcG9ydGVkIGFzIGFuIGFic29sdXRlIHRlbXBlcmF0dXJlLCBOT1QgYSBkZWx0YQorCQlmcm9tIHRoZSBjcml0aWNhbCB2YWx1ZS4KKwkJUlcKKwordGVtcFsxLSpdX2VtZXJnZW5jeQorCQlUZW1wZXJhdHVyZSBlbWVyZ2VuY3kgbWF4IHZhbHVlLCBmb3IgY2hpcHMgc3VwcG9ydGluZyBtb3JlIHRoYW4KKwkJdHdvIHVwcGVyIHRlbXBlcmF0dXJlIGxpbWl0cy4gTXVzdCBiZSBlcXVhbCBvciBncmVhdGVyIHRoYW4KKwkJY29ycmVzcG9uZGluZyB0ZW1wX2NyaXQgdmFsdWVzLgorCQlVbml0OiBtaWxsaWRlZ3JlZSBDZWxzaXVzCisJCVJXCisKK3RlbXBbMS0qXV9lbWVyZ2VuY3lfaHlzdAorCQlUZW1wZXJhdHVyZSBoeXN0ZXJlc2lzIHZhbHVlIGZvciBlbWVyZ2VuY3kgbGltaXQuCisJCVVuaXQ6IG1pbGxpZGVncmVlIENlbHNpdXMKKwkJTXVzdCBiZSByZXBvcnRlZCBhcyBhbiBhYnNvbHV0ZSB0ZW1wZXJhdHVyZSwgTk9UIGEgZGVsdGEKKwkJZnJvbSB0aGUgZW1lcmdlbmN5IHZhbHVlLgorCQlSVworCit0ZW1wWzEtKl1fbGNyaXQJVGVtcGVyYXR1cmUgY3JpdGljYWwgbWluIHZhbHVlLCB0eXBpY2FsbHkgbG93ZXIgdGhhbgorCQljb3JyZXNwb25kaW5nIHRlbXBfbWluIHZhbHVlcy4KKwkJVW5pdDogbWlsbGlkZWdyZWUgQ2Vsc2l1cworCQlSVworCit0ZW1wWzEtKl1fbGNyaXRfaHlzdAorCQlUZW1wZXJhdHVyZSBoeXN0ZXJlc2lzIHZhbHVlIGZvciBjcml0aWNhbCBtaW4gbGltaXQuCisJCVVuaXQ6IG1pbGxpZGVncmVlIENlbHNpdXMKKwkJTXVzdCBiZSByZXBvcnRlZCBhcyBhbiBhYnNvbHV0ZSB0ZW1wZXJhdHVyZSwgTk9UIGEgZGVsdGEKKwkJZnJvbSB0aGUgY3JpdGljYWwgbWluIHZhbHVlLgorCQlSVworCit0ZW1wWzEtKl1fb2Zmc2V0CisJCVRlbXBlcmF0dXJlIG9mZnNldCB3aGljaCBpcyBhZGRlZCB0byB0aGUgdGVtcGVyYXR1cmUgcmVhZGluZworCQlieSB0aGUgY2hpcC4KKwkJVW5pdDogbWlsbGlkZWdyZWUgQ2Vsc2l1cworCQlSZWFkL1dyaXRlIHZhbHVlLgorCit0ZW1wWzEtKl1fbGFiZWwJU3VnZ2VzdGVkIHRlbXBlcmF0dXJlIGNoYW5uZWwgbGFiZWwuCisJCVRleHQgc3RyaW5nCisJCVNob3VsZCBvbmx5IGJlIGNyZWF0ZWQgaWYgdGhlIGRyaXZlciBoYXMgaGludHMgYWJvdXQgd2hhdAorCQl0aGlzIHRlbXBlcmF0dXJlIGNoYW5uZWwgaXMgYmVpbmcgdXNlZCBmb3IsIGFuZCB1c2VyLXNwYWNlCisJCWRvZXNuJ3QuIEluIGFsbCBvdGhlciBjYXNlcywgdGhlIGxhYmVsIGlzIHByb3ZpZGVkIGJ5CisJCXVzZXItc3BhY2UuCisJCVJPCisKK3RlbXBbMS0qXV9sb3dlc3QKKwkJSGlzdG9yaWNhbCBtaW5pbXVtIHRlbXBlcmF0dXJlCisJCVVuaXQ6IG1pbGxpZGVncmVlIENlbHNpdXMKKwkJUk8KKwordGVtcFsxLSpdX2hpZ2hlc3QKKwkJSGlzdG9yaWNhbCBtYXhpbXVtIHRlbXBlcmF0dXJlCisJCVVuaXQ6IG1pbGxpZGVncmVlIENlbHNpdXMKKwkJUk8KKwordGVtcFsxLSpdX3Jlc2V0X2hpc3RvcnkKKwkJUmVzZXQgdGVtcF9sb3dlc3QgYW5kIHRlbXBfaGlnaGVzdAorCQlXTworCit0ZW1wX3Jlc2V0X2hpc3RvcnkKKwkJUmVzZXQgdGVtcF9sb3dlc3QgYW5kIHRlbXBfaGlnaGVzdCBmb3IgYWxsIHNlbnNvcnMKKwkJV08KKworU29tZSBjaGlwcyBtZWFzdXJlIHRlbXBlcmF0dXJlIHVzaW5nIGV4dGVybmFsIHRoZXJtaXN0b3JzIGFuZCBhbiBBREMsIGFuZAorcmVwb3J0IHRoZSB0ZW1wZXJhdHVyZSBtZWFzdXJlbWVudCBhcyBhIHZvbHRhZ2UuIENvbnZlcnRpbmcgdGhpcyB2b2x0YWdlCitiYWNrIHRvIGEgdGVtcGVyYXR1cmUgKG9yIHRoZSBvdGhlciB3YXkgYXJvdW5kIGZvciBsaW1pdHMpIHJlcXVpcmVzCittYXRoZW1hdGljYWwgZnVuY3Rpb25zIG5vdCBhdmFpbGFibGUgaW4gdGhlIGtlcm5lbCwgc28gdGhlIGNvbnZlcnNpb24KK211c3Qgb2NjdXIgaW4gdXNlciBzcGFjZS4gRm9yIHRoZXNlIGNoaXBzLCBhbGwgdGVtcCogZmlsZXMgZGVzY3JpYmVkCithYm92ZSBzaG91bGQgY29udGFpbiB2YWx1ZXMgZXhwcmVzc2VkIGluIG1pbGxpdm9sdCBpbnN0ZWFkIG9mIG1pbGxpZGVncmVlCitDZWxzaXVzLiBJbiBvdGhlciB3b3Jkcywgc3VjaCB0ZW1wZXJhdHVyZSBjaGFubmVscyBhcmUgaGFuZGxlZCBhcyB2b2x0YWdlCitjaGFubmVscyBieSB0aGUgZHJpdmVyLgorCitBbHNvIHNlZSB0aGUgQWxhcm1zIHNlY3Rpb24gZm9yIHN0YXR1cyBmbGFncyBhc3NvY2lhdGVkIHdpdGggdGVtcGVyYXR1cmVzLgorCisKKyoqKioqKioqKioqKgorKiBDdXJyZW50cyAqCisqKioqKioqKioqKioKKworY3VyclsxLSpdX21heAlDdXJyZW50IG1heCB2YWx1ZQorCQlVbml0OiBtaWxsaWFtcGVyZQorCQlSVworCitjdXJyWzEtKl1fbWluCUN1cnJlbnQgbWluIHZhbHVlLgorCQlVbml0OiBtaWxsaWFtcGVyZQorCQlSVworCitjdXJyWzEtKl1fbGNyaXQJQ3VycmVudCBjcml0aWNhbCBsb3cgdmFsdWUKKwkJVW5pdDogbWlsbGlhbXBlcmUKKwkJUlcKKworY3VyclsxLSpdX2NyaXQJQ3VycmVudCBjcml0aWNhbCBoaWdoIHZhbHVlLgorCQlVbml0OiBtaWxsaWFtcGVyZQorCQlSVworCitjdXJyWzEtKl1faW5wdXQJQ3VycmVudCBpbnB1dCB2YWx1ZQorCQlVbml0OiBtaWxsaWFtcGVyZQorCQlSTworCitjdXJyWzEtKl1fYXZlcmFnZQorCQlBdmVyYWdlIGN1cnJlbnQgdXNlCisJCVVuaXQ6IG1pbGxpYW1wZXJlCisJCVJPCisKK2N1cnJbMS0qXV9sb3dlc3QKKwkJSGlzdG9yaWNhbCBtaW5pbXVtIGN1cnJlbnQKKwkJVW5pdDogbWlsbGlhbXBlcmUKKwkJUk8KKworY3VyclsxLSpdX2hpZ2hlc3QKKwkJSGlzdG9yaWNhbCBtYXhpbXVtIGN1cnJlbnQKKwkJVW5pdDogbWlsbGlhbXBlcmUKKwkJUk8KKworY3VyclsxLSpdX3Jlc2V0X2hpc3RvcnkKKwkJUmVzZXQgY3VyclhfbG93ZXN0IGFuZCBjdXJyWF9oaWdoZXN0CisJCVdPCisKK2N1cnJfcmVzZXRfaGlzdG9yeQorCQlSZXNldCBjdXJyWF9sb3dlc3QgYW5kIGN1cnJYX2hpZ2hlc3QgZm9yIGFsbCBzZW5zb3JzCisJCVdPCisKK0Fsc28gc2VlIHRoZSBBbGFybXMgc2VjdGlvbiBmb3Igc3RhdHVzIGZsYWdzIGFzc29jaWF0ZWQgd2l0aCBjdXJyZW50cy4KKworKioqKioqKioqCisqIFBvd2VyICoKKyoqKioqKioqKgorCitwb3dlclsxLSpdX2F2ZXJhZ2UJCUF2ZXJhZ2UgcG93ZXIgdXNlCisJCQkJVW5pdDogbWljcm9XYXR0CisJCQkJUk8KKworcG93ZXJbMS0qXV9hdmVyYWdlX2ludGVydmFsCVBvd2VyIHVzZSBhdmVyYWdpbmcgaW50ZXJ2YWwuICBBIHBvbGwKKwkJCQlub3RpZmljYXRpb24gaXMgc2VudCB0byB0aGlzIGZpbGUgaWYgdGhlCisJCQkJaGFyZHdhcmUgY2hhbmdlcyB0aGUgYXZlcmFnaW5nIGludGVydmFsLgorCQkJCVVuaXQ6IG1pbGxpc2Vjb25kcworCQkJCVJXCisKK3Bvd2VyWzEtKl1fYXZlcmFnZV9pbnRlcnZhbF9tYXgJTWF4aW11bSBwb3dlciB1c2UgYXZlcmFnaW5nIGludGVydmFsCisJCQkJVW5pdDogbWlsbGlzZWNvbmRzCisJCQkJUk8KKworcG93ZXJbMS0qXV9hdmVyYWdlX2ludGVydmFsX21pbglNaW5pbXVtIHBvd2VyIHVzZSBhdmVyYWdpbmcgaW50ZXJ2YWwKKwkJCQlVbml0OiBtaWxsaXNlY29uZHMKKwkJCQlSTworCitwb3dlclsxLSpdX2F2ZXJhZ2VfaGlnaGVzdAlIaXN0b3JpY2FsIGF2ZXJhZ2UgbWF4aW11bSBwb3dlciB1c2UKKwkJCQlVbml0OiBtaWNyb1dhdHQKKwkJCQlSTworCitwb3dlclsxLSpdX2F2ZXJhZ2VfbG93ZXN0CUhpc3RvcmljYWwgYXZlcmFnZSBtaW5pbXVtIHBvd2VyIHVzZQorCQkJCVVuaXQ6IG1pY3JvV2F0dAorCQkJCVJPCisKK3Bvd2VyWzEtKl1fYXZlcmFnZV9tYXgJCUEgcG9sbCBub3RpZmljYXRpb24gaXMgc2VudCB0bworCQkJCXBvd2VyWzEtKl1fYXZlcmFnZSB3aGVuIHBvd2VyIHVzZQorCQkJCXJpc2VzIGFib3ZlIHRoaXMgdmFsdWUuCisJCQkJVW5pdDogbWljcm9XYXR0CisJCQkJUlcKKworcG93ZXJbMS0qXV9hdmVyYWdlX21pbgkJQSBwb2xsIG5vdGlmaWNhdGlvbiBpcyBzZW50IHRvCisJCQkJcG93ZXJbMS0qXV9hdmVyYWdlIHdoZW4gcG93ZXIgdXNlCisJCQkJc2lua3MgYmVsb3cgdGhpcyB2YWx1ZS4KKwkJCQlVbml0OiBtaWNyb1dhdHQKKwkJCQlSVworCitwb3dlclsxLSpdX2lucHV0CQlJbnN0YW50YW5lb3VzIHBvd2VyIHVzZQorCQkJCVVuaXQ6IG1pY3JvV2F0dAorCQkJCVJPCisKK3Bvd2VyWzEtKl1faW5wdXRfaGlnaGVzdAlIaXN0b3JpY2FsIG1heGltdW0gcG93ZXIgdXNlCisJCQkJVW5pdDogbWljcm9XYXR0CisJCQkJUk8KKworcG93ZXJbMS0qXV9pbnB1dF9sb3dlc3QJCUhpc3RvcmljYWwgbWluaW11bSBwb3dlciB1c2UKKwkJCQlVbml0OiBtaWNyb1dhdHQKKwkJCQlSTworCitwb3dlclsxLSpdX3Jlc2V0X2hpc3RvcnkJUmVzZXQgaW5wdXRfaGlnaGVzdCwgaW5wdXRfbG93ZXN0LAorCQkJCWF2ZXJhZ2VfaGlnaGVzdCBhbmQgYXZlcmFnZV9sb3dlc3QuCisJCQkJV08KKworcG93ZXJbMS0qXV9hY2N1cmFjeQkJQWNjdXJhY3kgb2YgdGhlIHBvd2VyIG1ldGVyLgorCQkJCVVuaXQ6IFBlcmNlbnQKKwkJCQlSTworCitwb3dlclsxLSpdX2NhcAkJCUlmIHBvd2VyIHVzZSByaXNlcyBhYm92ZSB0aGlzIGxpbWl0LCB0aGUKKwkJCQlzeXN0ZW0gc2hvdWxkIHRha2UgYWN0aW9uIHRvIHJlZHVjZSBwb3dlciB1c2UuCisJCQkJQSBwb2xsIG5vdGlmaWNhdGlvbiBpcyBzZW50IHRvIHRoaXMgZmlsZSBpZiB0aGUKKwkJCQljYXAgaXMgY2hhbmdlZCBieSB0aGUgaGFyZHdhcmUuICBUaGUgKl9jYXAKKwkJCQlmaWxlcyBvbmx5IGFwcGVhciBpZiB0aGUgY2FwIGlzIGtub3duIHRvIGJlCisJCQkJZW5mb3JjZWQgYnkgaGFyZHdhcmUuCisJCQkJVW5pdDogbWljcm9XYXR0CisJCQkJUlcKKworcG93ZXJbMS0qXV9jYXBfaHlzdAkJTWFyZ2luIG9mIGh5c3RlcmVzaXMgYnVpbHQgYXJvdW5kIGNhcHBpbmcgYW5kCisJCQkJbm90aWZpY2F0aW9uLgorCQkJCVVuaXQ6IG1pY3JvV2F0dAorCQkJCVJXCisKK3Bvd2VyWzEtKl1fY2FwX21heAkJTWF4aW11bSBjYXAgdGhhdCBjYW4gYmUgc2V0LgorCQkJCVVuaXQ6IG1pY3JvV2F0dAorCQkJCVJPCisKK3Bvd2VyWzEtKl1fY2FwX21pbgkJTWluaW11bSBjYXAgdGhhdCBjYW4gYmUgc2V0LgorCQkJCVVuaXQ6IG1pY3JvV2F0dAorCQkJCVJPCisKK3Bvd2VyWzEtKl1fbWF4CQkJTWF4aW11bSBwb3dlci4KKwkJCQlVbml0OiBtaWNyb1dhdHQKKwkJCQlSVworCitwb3dlclsxLSpdX2NyaXQJCQlDcml0aWNhbCBtYXhpbXVtIHBvd2VyLgorCQkJCUlmIHBvd2VyIHJpc2VzIHRvIG9yIGFib3ZlIHRoaXMgbGltaXQsIHRoZQorCQkJCXN5c3RlbSBpcyBleHBlY3RlZCB0YWtlIGRyYXN0aWMgYWN0aW9uIHRvIHJlZHVjZQorCQkJCXBvd2VyIGNvbnN1bXB0aW9uLCBzdWNoIGFzIGEgc3lzdGVtIHNodXRkb3duIG9yCisJCQkJYSBmb3JjZWQgcG93ZXJkb3duIG9mIHNvbWUgZGV2aWNlcy4KKwkJCQlVbml0OiBtaWNyb1dhdHQKKwkJCQlSVworCitBbHNvIHNlZSB0aGUgQWxhcm1zIHNlY3Rpb24gZm9yIHN0YXR1cyBmbGFncyBhc3NvY2lhdGVkIHdpdGggcG93ZXIgcmVhZGluZ3MuCisKKyoqKioqKioqKioKKyogRW5lcmd5ICoKKyoqKioqKioqKioKKworZW5lcmd5WzEtKl1faW5wdXQJCUN1bXVsYXRpdmUgZW5lcmd5IHVzZQorCQkJCVVuaXQ6IG1pY3JvSm91bGUKKwkJCQlSTworCisKKyoqKioqKioqKioqKgorKiBIdW1pZGl0eSAqCisqKioqKioqKioqKioKKworaHVtaWRpdHlbMS0qXV9pbnB1dAkJSHVtaWRpdHkKKwkJCQlVbml0OiBtaWxsaS1wZXJjZW50IChwZXIgY2VudCBtaWxsZSwgcGNtKQorCQkJCVJPCisKKworKioqKioqKioqKgorKiBBbGFybXMgKgorKioqKioqKioqKgorCitFYWNoIGNoYW5uZWwgb3IgbGltaXQgbWF5IGhhdmUgYW4gYXNzb2NpYXRlZCBhbGFybSBmaWxlLCBjb250YWluaW5nIGEKK2Jvb2xlYW4gdmFsdWUuIDEgbWVhbnMgdGhhbiBhbiBhbGFybSBjb25kaXRpb24gZXhpc3RzLCAwIG1lYW5zIG5vIGFsYXJtLgorCitVc3VhbGx5IGEgZ2l2ZW4gY2hpcCB3aWxsIGVpdGhlciB1c2UgY2hhbm5lbC1yZWxhdGVkIGFsYXJtcywgb3IKK2xpbWl0LXJlbGF0ZWQgYWxhcm1zLCBub3QgYm90aC4gVGhlIGRyaXZlciBzaG91bGQganVzdCByZWZsZWN0IHRoZSBoYXJkd2FyZQoraW1wbGVtZW50YXRpb24uCisKK2luWzAtKl1fYWxhcm0KK2N1cnJbMS0qXV9hbGFybQorcG93ZXJbMS0qXV9hbGFybQorZmFuWzEtKl1fYWxhcm0KK3RlbXBbMS0qXV9hbGFybQorCQlDaGFubmVsIGFsYXJtCisJCTA6IG5vIGFsYXJtCisJCTE6IGFsYXJtCisJCVJPCisKK09SCisKK2luWzAtKl1fbWluX2FsYXJtCitpblswLSpdX21heF9hbGFybQoraW5bMC0qXV9sY3JpdF9hbGFybQoraW5bMC0qXV9jcml0X2FsYXJtCitjdXJyWzEtKl1fbWluX2FsYXJtCitjdXJyWzEtKl1fbWF4X2FsYXJtCitjdXJyWzEtKl1fbGNyaXRfYWxhcm0KK2N1cnJbMS0qXV9jcml0X2FsYXJtCitwb3dlclsxLSpdX2NhcF9hbGFybQorcG93ZXJbMS0qXV9tYXhfYWxhcm0KK3Bvd2VyWzEtKl1fY3JpdF9hbGFybQorZmFuWzEtKl1fbWluX2FsYXJtCitmYW5bMS0qXV9tYXhfYWxhcm0KK3RlbXBbMS0qXV9taW5fYWxhcm0KK3RlbXBbMS0qXV9tYXhfYWxhcm0KK3RlbXBbMS0qXV9sY3JpdF9hbGFybQordGVtcFsxLSpdX2NyaXRfYWxhcm0KK3RlbXBbMS0qXV9lbWVyZ2VuY3lfYWxhcm0KKwkJTGltaXQgYWxhcm0KKwkJMDogbm8gYWxhcm0KKwkJMTogYWxhcm0KKwkJUk8KKworRWFjaCBpbnB1dCBjaGFubmVsIG1heSBoYXZlIGFuIGFzc29jaWF0ZWQgZmF1bHQgZmlsZS4gVGhpcyBjYW4gYmUgdXNlZAordG8gbm90aWZ5IG9wZW4gZGlvZGVzLCB1bmNvbm5lY3RlZCBmYW5zIGV0Yy4gd2hlcmUgdGhlIGhhcmR3YXJlCitzdXBwb3J0cyBpdC4gV2hlbiB0aGlzIGJvb2xlYW4gaGFzIHZhbHVlIDEsIHRoZSBtZWFzdXJlbWVudCBmb3IgdGhhdAorY2hhbm5lbCBzaG91bGQgbm90IGJlIHRydXN0ZWQuCisKK2ZhblsxLSpdX2ZhdWx0Cit0ZW1wWzEtKl1fZmF1bHQKKwkJSW5wdXQgZmF1bHQgY29uZGl0aW9uCisJCTA6IG5vIGZhdWx0IG9jY3VycmVkCisJCTE6IGZhdWx0IGNvbmRpdGlvbgorCQlSTworCitTb21lIGNoaXBzIGFsc28gb2ZmZXIgdGhlIHBvc3NpYmlsaXR5IHRvIGdldCBiZWVwZWQgd2hlbiBhbiBhbGFybSBvY2N1cnM6CisKK2JlZXBfZW5hYmxlCU1hc3RlciBiZWVwIGVuYWJsZQorCQkwOiBubyBiZWVwcworCQkxOiBiZWVwcworCQlSVworCitpblswLSpdX2JlZXAKK2N1cnJbMS0qXV9iZWVwCitmYW5bMS0qXV9iZWVwCit0ZW1wWzEtKl1fYmVlcAorCQlDaGFubmVsIGJlZXAKKwkJMDogZGlzYWJsZQorCQkxOiBlbmFibGUKKwkJUlcKKworSW4gdGhlb3J5LCBhIGNoaXAgY291bGQgcHJvdmlkZSBwZXItbGltaXQgYmVlcCBtYXNraW5nLCBidXQgbm8gc3VjaCBjaGlwCit3YXMgc2VlbiBzbyBmYXIuCisKK09sZCBkcml2ZXJzIHByb3ZpZGVkIGEgZGlmZmVyZW50LCBub24tc3RhbmRhcmQgaW50ZXJmYWNlIHRvIGFsYXJtcyBhbmQKK2JlZXBzLiBUaGVzZSBpbnRlcmZhY2UgZmlsZXMgYXJlIGRlcHJlY2F0ZWQsIGJ1dCB3aWxsIGJlIGtlcHQgYXJvdW5kCitmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zOgorCithbGFybXMJCUFsYXJtIGJpdG1hc2suCisJCVJPCisJCUludGVnZXIgcmVwcmVzZW50YXRpb24gb2Ygb25lIHRvIGZvdXIgYnl0ZXMuCisJCUEgJzEnIGJpdCBtZWFucyBhbiBhbGFybS4KKwkJQ2hpcHMgc2hvdWxkIGJlIHByb2dyYW1tZWQgZm9yICdjb21wYXJhdG9yJyBtb2RlIHNvIHRoYXQKKwkJdGhlIGFsYXJtIHdpbGwgJ2NvbWUgYmFjaycgYWZ0ZXIgeW91IHJlYWQgdGhlIHJlZ2lzdGVyCisJCWlmIGl0IGlzIHN0aWxsIHZhbGlkLgorCQlHZW5lcmFsbHkgYSBkaXJlY3QgcmVwcmVzZW50YXRpb24gb2YgYSBjaGlwJ3MgaW50ZXJuYWwKKwkJYWxhcm0gcmVnaXN0ZXJzOyB0aGVyZSBpcyBubyBzdGFuZGFyZCBmb3IgdGhlIHBvc2l0aW9uCisJCW9mIGluZGl2aWR1YWwgYml0cy4gRm9yIHRoaXMgcmVhc29uLCB0aGUgdXNlIG9mIHRoaXMKKwkJaW50ZXJmYWNlIGZpbGUgZm9yIG5ldyBkcml2ZXJzIGlzIGRpc2NvdXJhZ2VkLiBVc2UKKwkJaW5kaXZpZHVhbCAqX2FsYXJtIGFuZCAqX2ZhdWx0IGZpbGVzIGluc3RlYWQuCisJCUJpdHMgYXJlIGRlZmluZWQgaW4ga2VybmVsL2luY2x1ZGUvc2Vuc29ycy5oLgorCitiZWVwX21hc2sJQml0bWFzayBmb3IgYmVlcC4KKwkJU2FtZSBmb3JtYXQgYXMgJ2FsYXJtcycgd2l0aCB0aGUgc2FtZSBiaXQgbG9jYXRpb25zLAorCQl1c2UgZGlzY291cmFnZWQgZm9yIHRoZSBzYW1lIHJlYXNvbi4gVXNlIGluZGl2aWR1YWwKKwkJKl9iZWVwIGZpbGVzIGluc3RlYWQuCisJCVJXCisKKworKioqKioqKioqKioqKioqKioqKioqKioKKyogSW50cnVzaW9uIGRldGVjdGlvbiAqCisqKioqKioqKioqKioqKioqKioqKioqKgorCitpbnRydXNpb25bMC0qXV9hbGFybQorCQlDaGFzc2lzIGludHJ1c2lvbiBkZXRlY3Rpb24KKwkJMDogT0sKKwkJMTogaW50cnVzaW9uIGRldGVjdGVkCisJCVJXCisJCUNvbnRyYXJ5IHRvIHJlZ3VsYXIgYWxhcm0gZmxhZ3Mgd2hpY2ggY2xlYXIgdGhlbXNlbHZlcworCQlhdXRvbWF0aWNhbGx5IHdoZW4gcmVhZCwgdGhpcyBvbmUgc3RpY2tzIHVudGlsIGNsZWFyZWQgYnkKKwkJdGhlIHVzZXIuIFRoaXMgaXMgZG9uZSBieSB3cml0aW5nIDAgdG8gdGhlIGZpbGUuIFdyaXRpbmcKKwkJb3RoZXIgdmFsdWVzIGlzIHVuc3VwcG9ydGVkLgorCitpbnRydXNpb25bMC0qXV9iZWVwCisJCUNoYXNzaXMgaW50cnVzaW9uIGJlZXAKKwkJMDogZGlzYWJsZQorCQkxOiBlbmFibGUKKwkJUlcKKworCitzeXNmcyBhdHRyaWJ1dGUgd3JpdGVzIGludGVycHJldGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2h3bW9uIHN5c2ZzIGF0dHJpYnV0ZXMgYWx3YXlzIGNvbnRhaW4gbnVtYmVycywgc28gdGhlIGZpcnN0IHRoaW5nIHRvIGRvIGlzIHRvCitjb252ZXJ0IHRoZSBpbnB1dCB0byBhIG51bWJlciwgdGhlcmUgYXJlIDIgd2F5cyB0b2RvIHRoaXMgZGVwZW5kaW5nIHdoZXRoZXIKK3RoZSBudW1iZXIgY2FuIGJlIG5lZ2F0aXZlIG9yIG5vdDoKK3Vuc2lnbmVkIGxvbmcgdSA9IHNpbXBsZV9zdHJ0b3VsKGJ1ZiwgTlVMTCwgMTApOworbG9uZyBzID0gc2ltcGxlX3N0cnRvbChidWYsIE5VTEwsIDEwKTsKKworV2l0aCBidWYgYmVpbmcgdGhlIGJ1ZmZlciB3aXRoIHRoZSB1c2VyIGlucHV0IGJlaW5nIHBhc3NlZCBieSB0aGUga2VybmVsLgorTm90aWNlIHRoYXQgd2UgZG8gbm90IHVzZSB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHN0cnRvW3VdbCwgYW5kIHRodXMgY2Fubm90Cit0ZWxsIHdoZW4gMCBpcyByZXR1cm5lZCwgaWYgdGhpcyB3YXMgcmVhbGx5IDAgb3IgaXMgY2F1c2VkIGJ5IGludmFsaWQgaW5wdXQuCitUaGlzIGlzIGRvbmUgZGVsaWJlcmF0ZWx5IGFzIGNoZWNraW5nIHRoaXMgZXZlcnl3aGVyZSB3b3VsZCBhZGQgYSBsb3Qgb2YKK2NvZGUgdG8gdGhlIGtlcm5lbC4KKworTm90aWNlIHRoYXQgaXQgaXMgaW1wb3J0YW50IHRvIGFsd2F5cyBzdG9yZSB0aGUgY29udmVydGVkIHZhbHVlIGluIGFuCit1bnNpZ25lZCBsb25nIG9yIGxvbmcsIHNvIHRoYXQgbm8gd3JhcCBhcm91bmQgY2FuIGhhcHBlbiBiZWZvcmUgYW55IGZ1cnRoZXIKK2NoZWNraW5nLgorCitBZnRlciB0aGUgaW5wdXQgc3RyaW5nIGlzIGNvbnZlcnRlZCB0byBhbiAodW5zaWduZWQpIGxvbmcsIHRoZSB2YWx1ZSBzaG91bGQgYmUKK2NoZWNrZWQgaWYgaXRzIGFjY2VwdGFibGUuIEJlIGNhcmVmdWwgd2l0aCBmdXJ0aGVyIGNvbnZlcnNpb25zIG9uIHRoZSB2YWx1ZQorYmVmb3JlIGNoZWNraW5nIGl0IGZvciB2YWxpZGl0eSwgYXMgdGhlc2UgY29udmVyc2lvbnMgY291bGQgc3RpbGwgY2F1c2UgYSB3cmFwCithcm91bmQgYmVmb3JlIHRoZSBjaGVjay4gRm9yIGV4YW1wbGUgZG8gbm90IG11bHRpcGx5IHRoZSByZXN1bHQsIGFuZCBvbmx5CithZGQvc3VidHJhY3QgaWYgaXQgaGFzIGJlZW4gZGl2aWRlZCBiZWZvcmUgdGhlIGFkZC9zdWJ0cmFjdC4KKworV2hhdCB0byBkbyBpZiBhIHZhbHVlIGlzIGZvdW5kIHRvIGJlIGludmFsaWQsIGRlcGVuZHMgb24gdGhlIHR5cGUgb2YgdGhlCitzeXNmcyBhdHRyaWJ1dGUgdGhhdCBpcyBiZWluZyBzZXQuIElmIGl0IGlzIGEgY29udGludW91cyBzZXR0aW5nIGxpa2UgYQordGVtcFhfbWF4IG9yIGluWF9tYXggYXR0cmlidXRlLCB0aGVuIHRoZSB2YWx1ZSBzaG91bGQgYmUgY2xhbXBlZCB0byBpdHMKK2xpbWl0cyB1c2luZyBjbGFtcF92YWwodmFsdWUsIG1pbl9saW1pdCwgbWF4X2xpbWl0KS4gSWYgaXQgaXMgbm90IGNvbnRpbnVvdXMKK2xpa2UgZm9yIGV4YW1wbGUgYSB0ZW1wWF90eXBlLCB0aGVuIHdoZW4gYW4gaW52YWxpZCB2YWx1ZSBpcyB3cml0dGVuLAorLUVJTlZBTCBzaG91bGQgYmUgcmV0dXJuZWQuCisKK0V4YW1wbGUxLCB0ZW1wMV9tYXgsIHJlZ2lzdGVyIGlzIGEgc2lnbmVkIDggYml0IHZhbHVlICgtMTI4IC0gMTI3IGRlZ3JlZXMpOgorCisJbG9uZyB2ID0gc2ltcGxlX3N0cnRvbChidWYsIE5VTEwsIDEwKSAvIDEwMDA7CisJdiA9IGNsYW1wX3ZhbCh2LCAtMTI4LCAxMjcpOworCS8qIHdyaXRlIHYgdG8gcmVnaXN0ZXIgKi8KKworRXhhbXBsZTIsIGZhbiBkaXZpZGVyIHNldHRpbmcsIHZhbGlkIHZhbHVlcyAyLCA0IGFuZCA4OgorCisJdW5zaWduZWQgbG9uZyB2ID0gc2ltcGxlX3N0cnRvdWwoYnVmLCBOVUxMLCAxMCk7CisKKwlzd2l0Y2ggKHYpIHsKKwljYXNlIDI6IHYgPSAxOyBicmVhazsKKwljYXNlIDQ6IHYgPSAyOyBicmVhazsKKwljYXNlIDg6IHYgPSAzOyBicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisJLyogd3JpdGUgdiB0byByZWdpc3RlciAqLwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi90Yzc0IGIvRG9jdW1lbnRhdGlvbi9od21vbi90Yzc0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMDI3YWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3RjNzQKQEAgLTAsMCArMSwyMCBAQAorS2VybmVsIGRyaXZlciB0Yzc0Cis9PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICAqIE1pY3JvY2hpcCBUQzc0CisgICAgIFByZWZpeDogJ3RjNzQnCisgICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IE1pY3JvY2hpcCB3ZWJzaXRlLgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworRHJpdmVyIHN1cHBvcnRzIHRoZSBhYm92ZSBwYXJ0LgorCitUaGUgdGM3NCBoYXMgYW4gOC1iaXQgc2Vuc29yLCB3aXRoIDEgZGVncmVlIGNlbnRpZ3JhZGUgcmVzb2x1dGlvbgorYW5kICstIDIgZGVncmVlcyBjZW50aWdyYWRlIGFjY3VyYWN5LgorCitOb3RlcworLS0tLS0KKworQ3VycmVudGx5IGVudGVyaW5nIGxvdyBwb3dlciBzdGFuZGJ5IG1vZGUgaXMgbm90IHN1cHBvcnRlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vdGhtYzUwIGIvRG9jdW1lbnRhdGlvbi9od21vbi90aG1jNTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE3NzcyYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vdGhtYzUwCkBAIC0wLDAgKzEsNzQgQEAKK0tlcm5lbCBkcml2ZXIgdGhtYzUwCis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIEFuYWxvZyBEZXZpY2VzIEFETTEwMjIKKyAgICBQcmVmaXg6ICdhZG0xMDIyJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgyYyAtIDB4MmUKKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cuYW5hbG9nLmNvbS9lbi9wcm9kLzAsMjg3NyxBRE0xMDIyLDAwLmh0bWwKKyAgKiBUZXhhcyBJbnN0cnVtZW50cyBUSE1DNTAKKyAgICBQcmVmaXg6ICd0aG1jNTAnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJjIC0gMHgyZQorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy50aS5jb20vIAorCitBdXRob3I6IEtyenlzenRvZiBIZWx0IDxrcnp5c3p0b2YuaDFAd3AucGw+CisKK1RoaXMgZHJpdmVyIHdhcyBkZXJpdmVkIGZyb20gdGhlIDIuNCBrZXJuZWwgdGhtYzUwLmMgc291cmNlIGZpbGUuCisKK0NyZWRpdHM6CisgIHRobWM1MC5jICgyLjQga2VybmVsKToKKwlGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+CisJUGhpbGlwIEVkZWxicm9jayA8cGhpbEBuZXRyb2VkZ2UuY29tPgorCitNb2R1bGUgUGFyYW1ldGVycworLS0tLS0tLS0tLS0tLS0tLS0KKworKiBhZG0xMDIyX3RlbXAzOiBzaG9ydCBhcnJheQorICBMaXN0IG9mIGFkYXB0ZXIsYWRkcmVzcyBwYWlycyB0byBmb3JjZSBjaGlwcyBpbnRvIEFETTEwMjIgbW9kZSB3aXRoCisgIHNlY29uZCByZW1vdGUgdGVtcGVyYXR1cmUuIFRoaXMgZG9lcyBub3Qgd29yayBmb3Igb3JpZ2luYWwgVEhNQzUwIGNoaXBzLgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIFRITUM1MCBpbXBsZW1lbnRzOiBhbiBpbnRlcm5hbCB0ZW1wZXJhdHVyZSBzZW5zb3IsIHN1cHBvcnQgZm9yIGFuCitleHRlcm5hbCBkaW9kZS10eXBlIHRlbXBlcmF0dXJlIHNlbnNvciAoY29tcGF0aWJsZSB3LyB0aGUgZGlvZGUgc2Vuc29yIGluc2lkZQorbWFueSBwcm9jZXNzb3JzKSwgYW5kIGEgY29udHJvbGxhYmxlIGZhbi9hbmFsb2dfb3V0IERBQy4gRm9yIHRoZSB0ZW1wZXJhdHVyZQorc2Vuc29ycywgbGltaXRzIGNhbiBiZSBzZXQgdGhyb3VnaCB0aGUgYXBwcm9wcmlhdGUgT3ZlcnRlbXBlcmF0dXJlIFNodXRkb3duCityZWdpc3RlciBhbmQgSHlzdGVyZXNpcyByZWdpc3Rlci4gRWFjaCB2YWx1ZSBjYW4gYmUgc2V0IGFuZCByZWFkIHRvIGhhbGYtZGVncmVlCithY2N1cmFjeS4gIEFuIGFsYXJtIGlzIGlzc3VlZCAodXN1YWxseSB0byBhIGNvbm5lY3RlZCBMTTc4KSB3aGVuIHRoZQordGVtcGVyYXR1cmUgZ2V0cyBoaWdoZXIgdGhlbiB0aGUgT3ZlcnRlbXBlcmF0dXJlIFNodXRkb3duIHZhbHVlOyBpdCBzdGF5cyBvbgordW50aWwgdGhlIHRlbXBlcmF0dXJlIGZhbGxzIGJlbG93IHRoZSBIeXN0ZXJlc2lzIHZhbHVlLiBBbGwgdGVtcGVyYXR1cmVzIGFyZSBpbgorZGVncmVlcyBDZWxzaXVzLCBhbmQgYXJlIGd1YXJhbnRlZWQgd2l0aGluIGEgcmFuZ2Ugb2YgLTU1IHRvICsxMjUgZGVncmVlcy4KKworVGhlIFRITUM1MCBvbmx5IHVwZGF0ZXMgaXRzIHZhbHVlcyBlYWNoIDEuNSBzZWNvbmRzOyByZWFkaW5nIGl0IG1vcmUgb2Z0ZW4KK3dpbGwgZG8gbm8gaGFybSwgYnV0IHdpbGwgcmV0dXJuICdvbGQnIHZhbHVlcy4KKworVGhlIFRITUM1MCBpcyB1c3VhbGx5IHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBMTTc4LWxpa2UgY2hpcHMsIHRvIG1lYXN1cmUKK3RoZSB0ZW1wZXJhdHVyZSBvZiB0aGUgcHJvY2Vzc29yKHMpLgorCitUaGUgQURNMTAyMiB3b3JrcyB0aGUgc2FtZSBhcyBUSE1DNTAgYnV0IGl0IGlzIGZhc3RlciAoNSBIeiBpbnN0ZWFkIG9mCisxIEh6IGZvciBUSE1DNTApLiBJdCBjYW4gYmUgYWxzbyBwdXQgaW4gYSBuZXcgbW9kZSB0byBoYW5kbGUgYWRkaXRpb25hbAorcmVtb3RlIHRlbXBlcmF0dXJlIHNlbnNvci4gVGhlIGRyaXZlciB1c2UgdGhlIG1vZGUgc2V0IGJ5IEJJT1MgYnkgZGVmYXVsdC4KKworSW4gY2FzZSB0aGUgQklPUyBpcyBicm9rZW4gYW5kIHRoZSBtb2RlIGlzIHNldCBpbmNvcnJlY3RseSwgeW91IGNhbiBmb3JjZQordGhlIG1vZGUgd2l0aCBhZGRpdGlvbmFsIHJlbW90ZSB0ZW1wZXJhdHVyZSB3aXRoIGFkbTEwMjJfdGVtcDMgcGFyYW1ldGVyLgorQSB0eXBpY2FsIHN5bXB0b20gb2Ygd3Jvbmcgc2V0dGluZyBpcyBhIGZhbiBmb3JjZWQgdG8gZnVsbCBzcGVlZC4KKworRHJpdmVyIEZlYXR1cmVzCistLS0tLS0tLS0tLS0tLS0KKworVGhlIGRyaXZlciBwcm92aWRlcyB1cCB0byB0aHJlZSB0ZW1wZXJhdHVyZXM6CisKK3RlbXAxCQktLSBpbnRlcm5hbAordGVtcDIJCS0tIHJlbW90ZQordGVtcDMJCS0tIDJuZCByZW1vdGUgb25seSBmb3IgQURNMTAyMgorCitwd20xCQktLSBmYW4gc3BlZWQgKDAgPSBzdG9wLCAyNTUgPSBmdWxsKQorcHdtMV9tb2RlCS0tIGFsd2F5cyAwIChEQyBtb2RlKQorCitUaGUgdmFsdWUgb2YgMCBmb3IgcHdtMSBhbHNvIGZvcmNlcyBGQU5fT0ZGIHNpZ25hbCBmcm9tIHRoZSBjaGlwLAorc28gaXQgc3RvcHMgZmFucyBldmVuIGlmIHRoZSB2YWx1ZSAwIGludG8gdGhlIEFOQUxPR19PVVQgcmVnaXN0ZXIgZG9lcyBub3QuCisKK1RoZSBkcml2ZXIgd2FzIHRlc3RlZCBvbiBDb21wYXEgQVA1NTAgd2l0aCB0d28gQURNMTAyMiBjaGlwcyAob25lIHdvcmtzCitpbiB0aGUgdGVtcDMgbW9kZSksIGZpdmUgdGVtcGVyYXR1cmUgcmVhZGluZ3MgYW5kIHR3byBmYW5zLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3RtcDEwMiBiL0RvY3VtZW50YXRpb24vaHdtb24vdG1wMTAyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0NTRhNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3RtcDEwMgpAQCAtMCwwICsxLDI2IEBACitLZXJuZWwgZHJpdmVyIHRtcDEwMgorPT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIFRleGFzIEluc3RydW1lbnRzIFRNUDEwMgorICAgIFByZWZpeDogJ3RtcDEwMicKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogbm9uZQorICAgIERhdGFzaGVldDogaHR0cDovL2ZvY3VzLnRpLmNvbS9kb2NzL3Byb2QvZm9sZGVycy9wcmludC90bXAxMDIuaHRtbAorCitBdXRob3I6CisJU3RldmVuIEtpbmcgPHNma2luZ0BmZHdkYy5jb20+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGUgVGV4YXMgSW5zdHJ1bWVudHMgVE1QMTAyIGltcGxlbWVudHMgb25lIHRlbXBlcmF0dXJlIHNlbnNvci4gIExpbWl0cyBjYW4gYmUKK3NldCB0aHJvdWdoIHRoZSBPdmVydGVtcGVyYXR1cmUgU2h1dGRvd24gcmVnaXN0ZXIgYW5kIEh5c3RlcmVzaXMgcmVnaXN0ZXIuICBUaGUKK3NlbnNvciBpcyBhY2N1cmF0ZSB0byAwLjUgZGVncmVlIG92ZXIgdGhlIHJhbmdlIG9mIC0yNSB0byArODUgQywgYW5kIHRvIDEuMAorZGVncmVlIGZyb20gLTQwIHRvICsxMjUgQy4gUmVzb2x1dGlvbiBvZiB0aGUgc2Vuc29yIGlzIDAuMDYyNSBkZWdyZWUuICBUaGUKK29wZXJhdGluZyB0ZW1wZXJhdHVyZSBoYXMgYSBtaW5pbXVtIG9mIC01NSBDIGFuZCBhIG1heGltdW0gb2YgKzE1MCBDLgorCitUaGUgVE1QMTAyIGhhcyBhIHByb2dyYW1tYWJsZSB1cGRhdGUgcmF0ZSB0aGF0IGNhbiBzZWxlY3QgYmV0d2VlbiA4LCA0LCAxLCBhbmQKKzAuNSBIei4gKEN1cnJlbnRseSB0aGUgZHJpdmVyIG9ubHkgc3VwcG9ydHMgdGhlIGRlZmF1bHQgb2YgNCBIeikuCisKK1RoZSBkcml2ZXIgcHJvdmlkZXMgdGhlIGNvbW1vbiBzeXNmcy1pbnRlcmZhY2UgZm9yIHRlbXBlcmF0dXJlcyAoc2VlCitEb2N1bWVudGF0aW9uL2h3bW9uL3N5c2ZzLWludGVyZmFjZSB1bmRlciBUZW1wZXJhdHVyZXMpLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi90bXAxMDMgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3RtcDEwMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzAwYTE1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi90bXAxMDMKQEAgLTAsMCArMSwyOCBAQAorS2VybmVsIGRyaXZlciB0bXAxMDMKKz09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBUZXhhcyBJbnN0cnVtZW50cyBUTVAxMDMKKyAgICBQcmVmaXg6ICd0bXAxMDMnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IG5vbmUKKyAgICBQcm9kdWN0IGluZm8gYW5kIGRhdGFzaGVldDogaHR0cDovL3d3dy50aS5jb20vcHJvZHVjdC90bXAxMDMKKworQXV0aG9yOgorCUhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIFRNUDEwMyBpcyBhIGRpZ2l0YWwgb3V0cHV0IHRlbXBlcmF0dXJlIHNlbnNvciBpbiBhIGZvdXItYmFsbAord2FmZXIgY2hpcC1zY2FsZSBwYWNrYWdlIChXQ1NQKS4gVGhlIFRNUDEwMyBpcyBjYXBhYmxlIG9mIHJlYWRpbmcKK3RlbXBlcmF0dXJlcyB0byBhIHJlc29sdXRpb24gb2YgMcKwQy4gVGhlIFRNUDEwMyBpcyBzcGVjaWZpZWQgZm9yCitvcGVyYXRpb24gb3ZlciBhIHRlbXBlcmF0dXJlIHJhbmdlIG9mIOKAkzQwwrBDIHRvICsxMjXCsEMuCisKK1Jlc29sdXRpb246IDggQml0cworQWNjdXJhY3k6IMKxMcKwQyBUeXAgKOKAkzEwwrBDIHRvICsxMDDCsEMpCisKK1RoZSBkcml2ZXIgcHJvdmlkZXMgdGhlIGNvbW1vbiBzeXNmcy1pbnRlcmZhY2UgZm9yIHRlbXBlcmF0dXJlcyAoc2VlCitEb2N1bWVudGF0aW9uL2h3bW9uL3N5c2ZzLWludGVyZmFjZSB1bmRlciBUZW1wZXJhdHVyZXMpLgorCitQbGVhc2UgcmVmZXIgaG93IHRvIGluc3RhbnRpYXRlIHRoaXMgZHJpdmVyOgorRG9jdW1lbnRhdGlvbi9pMmMvaW5zdGFudGlhdGluZy1kZXZpY2VzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3RtcDQwMSBiL0RvY3VtZW50YXRpb24vaHdtb24vdG1wNDAxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMWY3NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3RtcDQwMQpAQCAtMCwwICsxLDU3IEBACitLZXJuZWwgZHJpdmVyIHRtcDQwMQorPT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIFRleGFzIEluc3RydW1lbnRzIFRNUDQwMQorICAgIFByZWZpeDogJ3RtcDQwMScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4NGMKKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly9mb2N1cy50aS5jb20vZG9jcy9wcm9kL2ZvbGRlcnMvcHJpbnQvdG1wNDAxLmh0bWwKKyAgKiBUZXhhcyBJbnN0cnVtZW50cyBUTVA0MTEKKyAgICBQcmVmaXg6ICd0bXA0MTEnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDRjLCAweDRkLCAweDRlCisgICAgRGF0YXNoZWV0OiBodHRwOi8vZm9jdXMudGkuY29tL2RvY3MvcHJvZC9mb2xkZXJzL3ByaW50L3RtcDQxMS5odG1sCisgICogVGV4YXMgSW5zdHJ1bWVudHMgVE1QNDMxCisgICAgUHJlZml4OiAndG1wNDMxJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHg0YywgMHg0ZAorICAgIERhdGFzaGVldDogaHR0cDovL2ZvY3VzLnRpLmNvbS9kb2NzL3Byb2QvZm9sZGVycy9wcmludC90bXA0MzEuaHRtbAorICAqIFRleGFzIEluc3RydW1lbnRzIFRNUDQzMgorICAgIFByZWZpeDogJ3RtcDQzMicKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4NGMsIDB4NGQKKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly9mb2N1cy50aS5jb20vZG9jcy9wcm9kL2ZvbGRlcnMvcHJpbnQvdG1wNDMyLmh0bWwKKyAgKiBUZXhhcyBJbnN0cnVtZW50cyBUTVA0MzUKKyAgICBQcmVmaXg6ICd0bXA0MzUnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDQ4IC0gMHg0ZgorICAgIERhdGFzaGVldDogaHR0cDovL2ZvY3VzLnRpLmNvbS9kb2NzL3Byb2QvZm9sZGVycy9wcmludC90bXA0MzUuaHRtbAorCitBdXRob3JzOgorICAgICAgICAgSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KKwkgQW5kcmUgUHJlbmRlbCA8YW5kcmUucHJlbmRlbEBnbXguZGU+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIFRleGFzIEluc3RydW1lbnRzIFRNUDQwMSwgVE1QNDExLAorVE1QNDMxLCBUTVA0MzIgYW5kIFRNUDQzNSBjaGlwcy4gVGhlc2UgY2hpcHMgaW1wbGVtZW50IG9uZSBvciB0d28gcmVtb3RlCithbmQgb25lIGxvY2FsIHRlbXBlcmF0dXJlIHNlbnNvcnMuIFRlbXBlcmF0dXJlIGlzIG1lYXN1cmVkIGluIGRlZ3JlZXMKK0NlbHNpdXMuIFJlc29sdXRpb24gb2YgdGhlIHJlbW90ZSBzZW5zb3IgaXMgMC4wNjI1IGRlZ3JlZS4gTG9jYWwKK3NlbnNvciByZXNvbHV0aW9uIGNhbiBiZSBzZXQgdG8gMC41LCAwLjI1LCAwLjEyNSBvciAwLjA2MjUgZGVncmVlIChub3QKK3N1cHBvcnRlZCBieSB0aGUgZHJpdmVyIHNvIGZhciwgc28gdXNpbmcgdGhlIGRlZmF1bHQgcmVzb2x1dGlvbiBvZiAwLjUKK2RlZ3JlZSkuCisKK1RoZSBkcml2ZXIgcHJvdmlkZXMgdGhlIGNvbW1vbiBzeXNmcy1pbnRlcmZhY2UgZm9yIHRlbXBlcmF0dXJlcyAoc2VlCitEb2N1bWVudGF0aW9uL2h3bW9uL3N5c2ZzLWludGVyZmFjZSB1bmRlciBUZW1wZXJhdHVyZXMpLgorCitUaGUgVE1QNDExIGFuZCBUTVA0MzEgY2hpcHMgYXJlIGNvbXBhdGlibGUgd2l0aCBUTVA0MDEuIFRNUDQxMSBwcm92aWRlcworc29tZSBhZGRpdGlvbmFsIGZlYXR1cmVzLgorCisqIE1pbmltdW0gYW5kIE1heGltdW0gdGVtcGVyYXR1cmUgbWVhc3VyZWQgc2luY2UgcG93ZXItb24sIGNoaXAtcmVzZXQKKworICBFeHBvcnRlZCB2aWEgc3lzZnMgYXR0cmlidXRlcyB0ZW1wWF9sb3dlc3QgYW5kIHRlbXBYX2hpZ2hlc3QuCisKKyogUmVzZXQgb2YgaGlzdG9yaWNhbCBtaW5pbXVtL21heGltdW0gdGVtcGVyYXR1cmUgbWVhc3VyZW1lbnRzCisKKyAgRXhwb3J0ZWQgdmlhIHN5c2ZzIGF0dHJpYnV0ZSB0ZW1wX3Jlc2V0X2hpc3RvcnkuIFdyaXRpbmcgMSB0byB0aGlzCisgIGZpbGUgdHJpZ2dlcnMgYSByZXNldC4KKworVE1QNDMyIGlzIGNvbXBhdGlibGUgd2l0aCBUTVA0MDEgYW5kIFRNUDQzMS4gSXQgc3VwcG9ydHMgdHdvIGV4dGVybmFsCit0ZW1wZXJhdHVyZSBzZW5zb3JzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi90bXA0MjEgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3RtcDQyMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTZmZTU1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi90bXA0MjEKQEAgLTAsMCArMSw0NCBAQAorS2VybmVsIGRyaXZlciB0bXA0MjEKKz09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBUZXhhcyBJbnN0cnVtZW50cyBUTVA0MjEKKyAgICBQcmVmaXg6ICd0bXA0MjEnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJhLCAweDRjLCAweDRkLCAweDRlIGFuZCAweDRmCisgICAgRGF0YXNoZWV0OiBodHRwOi8vZm9jdXMudGkuY29tL2RvY3MvcHJvZC9mb2xkZXJzL3ByaW50L3RtcDQyMS5odG1sCisgICogVGV4YXMgSW5zdHJ1bWVudHMgVE1QNDIyCisgICAgUHJlZml4OiAndG1wNDIyJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHg0YywgMHg0ZCwgMHg0ZSBhbmQgMHg0ZgorICAgIERhdGFzaGVldDogaHR0cDovL2ZvY3VzLnRpLmNvbS9kb2NzL3Byb2QvZm9sZGVycy9wcmludC90bXA0MjEuaHRtbAorICAqIFRleGFzIEluc3RydW1lbnRzIFRNUDQyMworICAgIFByZWZpeDogJ3RtcDQyMycKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4NGMgYW5kIDB4NGQKKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly9mb2N1cy50aS5jb20vZG9jcy9wcm9kL2ZvbGRlcnMvcHJpbnQvdG1wNDIxLmh0bWwKKyAgKiBUZXhhcyBJbnN0cnVtZW50cyBUTVA0NDEKKyAgICBQcmVmaXg6ICd0bXA0NDEnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJhLCAweDRjLCAweDRkLCAweDRlIGFuZCAweDRmCisgICAgRGF0YXNoZWV0OiBodHRwOi8vd3d3LnRpLmNvbS9wcm9kdWN0L3RtcDQ0MQorICAqIFRleGFzIEluc3RydW1lbnRzIFRNUDQ0MgorICAgIFByZWZpeDogJ3RtcDQ0MicKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4NGMgYW5kIDB4NGQKKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cudGkuY29tL3Byb2R1Y3QvdG1wNDQyCisKK0F1dGhvcnM6CisJQW5kcmUgUHJlbmRlbCA8YW5kcmUucHJlbmRlbEBnbXguZGU+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIFRleGFzIEluc3RydW1lbnRzIFRNUDQyMSwgVE1QNDIyLAorVE1QNDIzLCBUTVA0NDEsIGFuZCBUTVA0NDIgdGVtcGVyYXR1cmUgc2Vuc29yIGNoaXBzLiBUaGVzZSBjaGlwcworaW1wbGVtZW50IG9uZSBsb2NhbCBhbmQgdXAgdG8gb25lIChUTVA0MjEsIFRNUDQ0MSksIHVwIHRvIHR3byAoVE1QNDIyLAorVE1QNDQyKSBvciB1cCB0byB0aHJlZSAoVE1QNDIzKSByZW1vdGUgc2Vuc29ycy4gVGVtcGVyYXR1cmUgaXMgbWVhc3VyZWQKK2luIGRlZ3JlZXMgQ2Vsc2l1cy4gVGhlIGNoaXBzIGFyZSB3aXJlZCBvdmVyIEkyQy9TTUJ1cyBhbmQgc3BlY2lmaWVkCitvdmVyIGEgdGVtcGVyYXR1cmUgcmFuZ2Ugb2YgLTQwIHRvICsxMjUgZGVncmVlcyBDZWxzaXVzLiBSZXNvbHV0aW9uCitmb3IgYm90aCB0aGUgbG9jYWwgYW5kIHJlbW90ZSBjaGFubmVscyBpcyAwLjA2MjUgZGVncmVlIEMuCisKK1RoZSBjaGlwcyBzdXBwb3J0IG9ubHkgdGVtcGVyYXR1cmUgbWVhc3VyZW1lbnQuIFRoZSBkcml2ZXIgZXhwb3J0cwordGhlIHRlbXBlcmF0dXJlIHZhbHVlcyB2aWEgdGhlIGZvbGxvd2luZyBzeXNmcyBmaWxlczoKKwordGVtcFsxLTRdX2lucHV0Cit0ZW1wWzItNF1fZmF1bHQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vdHBzNDA0MjIgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3RwczQwNDIyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0YmIwNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3RwczQwNDIyCkBAIC0wLDAgKzEsNjQgQEAKK0tlcm5lbCBkcml2ZXIgdHBzNDA0MjIKKz09PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIFRJIFRQUzQwNDIyCisgICAgUHJlZml4OiAndHBzNDA0MjInCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IC0KKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cudGkuY29tL2xpdC9ncG4vdHBzNDA0MjIKKworQXV0aG9yOiBaaHUgTGFpd2VuIDxyaWNoYXJkLnpodUBuc24uY29tPgorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBzdXBwb3J0cyBUSSBUUFM0MDQyMiBEdWFsLU91dHB1dCBvciBUd28tUGhhc2UgU3luY2hyb25vdXMgQnVjaworQ29udHJvbGxlciB3aXRoIFBNQnVzCisKK1RoZSBkcml2ZXIgaXMgYSBjbGllbnQgZHJpdmVyIHRvIHRoZSBjb3JlIFBNQnVzIGRyaXZlci4KK1BsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi9od21vbi9wbWJ1cyBmb3IgZGV0YWlscyBvbiBQTUJ1cyBjbGllbnQgZHJpdmVycy4KKworCitVc2FnZSBOb3RlcworLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgZG9lcyBub3QgYXV0by1kZXRlY3QgZGV2aWNlcy4gWW91IHdpbGwgaGF2ZSB0byBpbnN0YW50aWF0ZSB0aGUKK2RldmljZXMgZXhwbGljaXRseS4gUGxlYXNlIHNlZSBEb2N1bWVudGF0aW9uL2kyYy9pbnN0YW50aWF0aW5nLWRldmljZXMgZm9yCitkZXRhaWxzLgorCisKK1BsYXRmb3JtIGRhdGEgc3VwcG9ydAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBkcml2ZXIgc3VwcG9ydHMgc3RhbmRhcmQgUE1CdXMgZHJpdmVyIHBsYXRmb3JtIGRhdGEuCisKKworU3lzZnMgZW50cmllcworLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgYXJlIHN1cHBvcnRlZC4KKworaW5bMS0yXV9sYWJlbAkJInZvdXRbMS0yXSIKK2luWzEtMl1faW5wdXQJCU1lYXN1cmVkIHZvbHRhZ2UuIEZyb20gUkVBRF9WT1VUIHJlZ2lzdGVyLgoraW5bMS0yXV9hbGFybQkJdm9sdGFnZSBhbGFybS4KKworY3VyclsxLTJdX2lucHV0CQlNZWFzdXJlZCBjdXJyZW50LiBGcm9tIFJFQURfSU9VVCByZWdpc3Rlci4KK2N1cnJbMS0yXV9sYWJlbAkJImlvdXRbMS0yXSIKK2N1cnIxX21heAkJTWF4aW11bSBjdXJyZW50LiBGcm9tIElPVVRfT0NfV0FSTl9MSU1JVCByZWdpc3Rlci4KK2N1cnIxX2NyaXQJCUNyaXRpY2FsIG1heGltdW0gY3VycmVudC4gRnJvbSBJT1VUX09DX0ZBVUxUX0xJTUlUIHJlZ2lzdGVyLgorY3VycjFfbWF4X2FsYXJtCQlDdXJyZW50IGhpZ2ggYWxhcm0uIEZyb20gSU9VVF9PQ19XQVJOX0xJTUlUIHN0YXR1cy4KK2N1cnIxX2NyaXRfYWxhcm0JQ3VycmVudCBjcml0aWNhbCBoaWdoIGFsYXJtLiBGcm9tIElPVVRfT0NfRkFVTFQgc3RhdHVzLgorY3VycjJfYWxhcm0JCUN1cnJlbnQgaGlnaCBhbGFybS4gRnJvbSBJT1VUX09DX1dBUk5JTkcgc3RhdHVzLgorCit0ZW1wMV9pbnB1dAkJTWVhc3VyZWQgdGVtcGVyYXR1cmUuIEZyb20gUkVBRF9URU1QRVJBVFVSRV8yIHJlZ2lzdGVyIG9uIHBhZ2UgMC4KK3RlbXAxX21heAkJTWF4aW11bSB0ZW1wZXJhdHVyZS4gRnJvbSBPVF9XQVJOX0xJTUlUIHJlZ2lzdGVyLgordGVtcDFfY3JpdAkJQ3JpdGljYWwgaGlnaCB0ZW1wZXJhdHVyZS4gRnJvbSBPVF9GQVVMVF9MSU1JVCByZWdpc3Rlci4KK3RlbXAxX21heF9hbGFybQkJQ2hpcCB0ZW1wZXJhdHVyZSBoaWdoIGFsYXJtLiBTZXQgYnkgY29tcGFyaW5nCisJCQlSRUFEX1RFTVBFUkFUVVJFXzIgb24gcGFnZSAwIHdpdGggT1RfV0FSTl9MSU1JVCBpZiBURU1QX09UX1dBUk5JTkcKKwkJCXN0YXR1cyBpcyBzZXQuCit0ZW1wMV9jcml0X2FsYXJtCUNoaXAgdGVtcGVyYXR1cmUgY3JpdGljYWwgaGlnaCBhbGFybS4gU2V0IGJ5IGNvbXBhcmluZworCQkJUkVBRF9URU1QRVJBVFVSRV8yIG9uIHBhZ2UgMCB3aXRoIE9UX0ZBVUxUX0xJTUlUIGlmIFRFTVBfT1RfRkFVTFQKKwkJCXN0YXR1cyBpcyBzZXQuCit0ZW1wMl9pbnB1dAkJTWVhc3VyZWQgdGVtcGVyYXR1cmUuIEZyb20gUkVBRF9URU1QRVJBVFVSRV8yIHJlZ2lzdGVyIG9uIHBhZ2UgMS4KK3RlbXAyX2FsYXJtCQlDaGlwIHRlbXBlcmF0dXJlIGFsYXJtIG9uIHBhZ2UgMS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vdHdsNDAzMC1tYWRjLWh3bW9uIGIvRG9jdW1lbnRhdGlvbi9od21vbi90d2w0MDMwLW1hZGMtaHdtb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNhM2E1YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vdHdsNDAzMC1tYWRjLWh3bW9uCkBAIC0wLDAgKzEsNDUgQEAKK0tlcm5lbCBkcml2ZXIgdHdsNDAzMC1tYWRjCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKwkqIFRleGFzIEluc3RydW1lbnRzIFRXTDQwMzAKKwlQcmVmaXg6ICd0d2w0MDMwLW1hZGMnCisKKworQXV0aG9yczoKKwlKIEtlZXJ0aHkgPGota2VlcnRoeUB0aS5jb20+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGUgVGV4YXMgSW5zdHJ1bWVudHMgVFdMNDAzMCBpcyBhIFBvd2VyIE1hbmFnZW1lbnQgYW5kIEF1ZGlvIENpcmN1aXQuIEFtb25nCitvdGhlciB0aGluZ3MgaXQgY29udGFpbnMgYSAxMC1iaXQgQS9EIGNvbnZlcnRlciBNQURDLiBUaGUgY29udmVydGVyIGhhcyAxNgorY2hhbm5lbHMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gZGlmZmVyZW50IG1vZGVzLgorCisKK1NlZSB0aGlzIHRhYmxlIGZvciB0aGUgbWVhbmluZyBvZiB0aGUgZGlmZmVyZW50IGNoYW5uZWxzCisKK0NoYW5uZWwgU2lnbmFsCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzAJQmF0dGVyeSB0eXBlKEJUWVBFKQorMQlCQ0k6IEJhdHRlcnkgdGVtcGVyYXR1cmUgKEJURU1QKQorMglHUCBhbmFsb2cgaW5wdXQKKzMJR1AgYW5hbG9nIGlucHV0Cis0CUdQIGFuYWxvZyBpbnB1dAorNQlHUCBhbmFsb2cgaW5wdXQKKzYJR1AgYW5hbG9nIGlucHV0Cis3CUdQIGFuYWxvZyBpbnB1dAorOAlCQ0k6IFZCVVMgdm9sdGFnZShWQlVTKQorOQlCYWNrdXAgQmF0dGVyeSB2b2x0YWdlIChWQktQKQorMTAJQkNJOiBCYXR0ZXJ5IGNoYXJnZXIgY3VycmVudCAoSUNIRykKKzExCUJDSTogQmF0dGVyeSBjaGFyZ2VyIHZvbHRhZ2UgKFZDSEcpCisxMglCQ0k6IE1haW4gYmF0dGVyeSB2b2x0YWdlIChWQkFUKQorMTMJUmVzZXJ2ZWQKKzE0CVJlc2VydmVkCisxNQlWUlVTQiBTdXBwbHkvU3BlYWtlciBsZWZ0L1NwZWFrZXIgcmlnaHQgcG9sYXJpemF0aW9uIGxldmVsCisKKworVGhlIFN5c2ZzIG5vZGVzIHdpbGwgcmVwcmVzZW50IHRoZSB2b2x0YWdlIGluIHRoZSB1bml0cyBvZiBtViwKK3RoZSB0ZW1wZXJhdHVyZSBjaGFubmVsIHNob3dzIHRoZSBjb252ZXJ0ZWQgdGVtcGVyYXR1cmUgaW4KK2RlZ3JlZSBDZWxzaXVzLiBUaGUgQmF0dGVyeSBjaGFyZ2luZyBjdXJyZW50IGNoYW5uZWwgcmVwcmVzZW50cworYmF0dGVyeSBjaGFyZ2luZyBjdXJyZW50IGluIG1BLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi91Y2Q5MDAwIGIvRG9jdW1lbnRhdGlvbi9od21vbi91Y2Q5MDAwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNWUzM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3VjZDkwMDAKQEAgLTAsMCArMSwxMTAgQEAKK0tlcm5lbCBkcml2ZXIgdWNkOTAwMAorPT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBUSSBVQ0Q5MDEyMCwgVUNEOTAxMjQsIFVDRDkwOTAsIGFuZCBVQ0Q5MDkxMAorICAgIFByZWZpeGVzOiAndWNkOTAxMjAnLCAndWNkOTAxMjQnLCAndWNkOTA5MCcsICd1Y2Q5MDkxMCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgIERhdGFzaGVldHM6CisJaHR0cDovL2ZvY3VzLnRpLmNvbS9saXQvZHMvc3ltbGluay91Y2Q5MDEyMC5wZGYKKwlodHRwOi8vZm9jdXMudGkuY29tL2xpdC9kcy9zeW1saW5rL3VjZDkwMTI0LnBkZgorCWh0dHA6Ly9mb2N1cy50aS5jb20vbGl0L2RzL3N5bWxpbmsvdWNkOTA5MC5wZGYKKwlodHRwOi8vZm9jdXMudGkuY29tL2xpdC9kcy9zeW1saW5rL3VjZDkwOTEwLnBkZgorCitBdXRob3I6IEd1ZW50ZXIgUm9lY2sgPGxpbnV4QHJvZWNrLXVzLm5ldD4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworRnJvbSBkYXRhc2hlZXRzOgorCitUaGUgVUNEOTAxMjAgUG93ZXIgU3VwcGx5IFNlcXVlbmNlciBhbmQgU3lzdGVtIEhlYWx0aCBNb25pdG9yIG1vbml0b3JzIGFuZAorc2VxdWVuY2VzIHVwIHRvIDEyIGluZGVwZW5kZW50IHZvbHRhZ2UgcmFpbHMuIFRoZSBkZXZpY2UgaW50ZWdyYXRlcyBhIDEyLWJpdAorQURDIHdpdGggYSAyLjVWIGludGVybmFsIHJlZmVyZW5jZSBmb3IgbW9uaXRvcmluZyB1cCB0byAxMyBwb3dlciBzdXBwbHkgdm9sdGFnZSwKK2N1cnJlbnQsIG9yIHRlbXBlcmF0dXJlIGlucHV0cy4KKworVGhlIFVDRDkwMTI0IGlzIGEgMTItcmFpbCBQTUJ1cy9JMkMgYWRkcmVzc2FibGUgcG93ZXItc3VwcGx5IHNlcXVlbmNlciBhbmQKK3N5c3RlbS1oZWFsdGggbW9uaXRvci4gVGhlIGRldmljZSBpbnRlZ3JhdGVzIGEgMTItYml0IEFEQyBmb3IgbW9uaXRvcmluZyB1cCB0bworMTMgcG93ZXItc3VwcGx5IHZvbHRhZ2UsIGN1cnJlbnQsIG9yIHRlbXBlcmF0dXJlIGlucHV0cy4gVHdlbnR5LXNpeCBHUElPIHBpbnMKK2NhbiBiZSB1c2VkIGZvciBwb3dlciBzdXBwbHkgZW5hYmxlcywgcG93ZXItb24gcmVzZXQgc2lnbmFscywgZXh0ZXJuYWwKK2ludGVycnVwdHMsIGNhc2NhZGluZywgb3Igb3RoZXIgc3lzdGVtIGZ1bmN0aW9ucy4gVHdlbHZlIG9mIHRoZXNlIHBpbnMgb2ZmZXIgUFdNCitmdW5jdGlvbmFsaXR5LiBVc2luZyB0aGVzZSBwaW5zLCB0aGUgVUNEOTAxMjQgb2ZmZXJzIHN1cHBvcnQgZm9yIGZhbiBjb250cm9sLAorbWFyZ2luaW5nLCBhbmQgZ2VuZXJhbC1wdXJwb3NlIFBXTSBmdW5jdGlvbnMuCisKK1RoZSBVQ0Q5MDkwIGlzIGEgMTAtcmFpbCBQTUJ1cy9JMkMgYWRkcmVzc2FibGUgcG93ZXItc3VwcGx5IHNlcXVlbmNlciBhbmQKK21vbml0b3IuIFRoZSBkZXZpY2UgaW50ZWdyYXRlcyBhIDEyLWJpdCBBREMgZm9yIG1vbml0b3JpbmcgdXAgdG8gMTAgcG93ZXItc3VwcGx5Cit2b2x0YWdlIGlucHV0cy4gVHdlbnR5LXRocmVlIEdQSU8gcGlucyBjYW4gYmUgdXNlZCBmb3IgcG93ZXIgc3VwcGx5IGVuYWJsZXMsCitwb3dlci1vbiByZXNldCBzaWduYWxzLCBleHRlcm5hbCBpbnRlcnJ1cHRzLCBjYXNjYWRpbmcsIG9yIG90aGVyIHN5c3RlbQorZnVuY3Rpb25zLiBUZW4gb2YgdGhlc2UgcGlucyBvZmZlciBQV00gZnVuY3Rpb25hbGl0eS4gVXNpbmcgdGhlc2UgcGlucywgdGhlCitVQ0Q5MDkwIG9mZmVycyBzdXBwb3J0IGZvciBtYXJnaW5pbmcsIGFuZCBnZW5lcmFsLXB1cnBvc2UgUFdNIGZ1bmN0aW9ucy4KKworVGhlIFVDRDkwOTEwIGlzIGEgdGVuLXJhaWwgSTJDIC8gUE1CdXMgYWRkcmVzc2FibGUgcG93ZXItc3VwcGx5IHNlcXVlbmNlciBhbmQKK3N5c3RlbS1oZWFsdGggbW9uaXRvci4gVGhlIGRldmljZSBpbnRlZ3JhdGVzIGEgMTItYml0IEFEQyBmb3IgbW9uaXRvcmluZyB1cCB0bworMTMgcG93ZXItc3VwcGx5IHZvbHRhZ2UsIGN1cnJlbnQsIG9yIHRlbXBlcmF0dXJlIGlucHV0cy4KKworVGhpcyBkcml2ZXIgaXMgYSBjbGllbnQgZHJpdmVyIHRvIHRoZSBjb3JlIFBNQnVzIGRyaXZlci4gUGxlYXNlIHNlZQorRG9jdW1lbnRhdGlvbi9od21vbi9wbWJ1cyBmb3IgZGV0YWlscyBvbiBQTUJ1cyBjbGllbnQgZHJpdmVycy4KKworCitVc2FnZSBOb3RlcworLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgZG9lcyBub3QgYXV0by1kZXRlY3QgZGV2aWNlcy4gWW91IHdpbGwgaGF2ZSB0byBpbnN0YW50aWF0ZSB0aGUKK2RldmljZXMgZXhwbGljaXRseS4gUGxlYXNlIHNlZSBEb2N1bWVudGF0aW9uL2kyYy9pbnN0YW50aWF0aW5nLWRldmljZXMgZm9yCitkZXRhaWxzLgorCisKK1BsYXRmb3JtIGRhdGEgc3VwcG9ydAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBkcml2ZXIgc3VwcG9ydHMgc3RhbmRhcmQgUE1CdXMgZHJpdmVyIHBsYXRmb3JtIGRhdGEuIFBsZWFzZSBzZWUKK0RvY3VtZW50YXRpb24vaHdtb24vcG1idXMgZm9yIGRldGFpbHMuCisKKworU3lzZnMgZW50cmllcworLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgYXJlIHN1cHBvcnRlZC4gTGltaXRzIGFyZSByZWFkLXdyaXRlOyBhbGwgb3RoZXIKK2F0dHJpYnV0ZXMgYXJlIHJlYWQtb25seS4KKworaW5bMS0xMl1fbGFiZWwJCSJ2b3V0WzEtMTJdIi4KK2luWzEtMTJdX2lucHV0CQlNZWFzdXJlZCB2b2x0YWdlLiBGcm9tIFJFQURfVk9VVCByZWdpc3Rlci4KK2luWzEtMTJdX21pbgkJTWluaW11bSBWb2x0YWdlLiBGcm9tIFZPVVRfVVZfV0FSTl9MSU1JVCByZWdpc3Rlci4KK2luWzEtMTJdX21heAkJTWF4aW11bSB2b2x0YWdlLiBGcm9tIFZPVVRfT1ZfV0FSTl9MSU1JVCByZWdpc3Rlci4KK2luWzEtMTJdX2xjcml0CQlDcml0aWNhbCBtaW5pbXVtIFZvbHRhZ2UuIFZPVVRfVVZfRkFVTFRfTElNSVQgcmVnaXN0ZXIuCitpblsxLTEyXV9jcml0CQlDcml0aWNhbCBtYXhpbXVtIHZvbHRhZ2UuIEZyb20gVk9VVF9PVl9GQVVMVF9MSU1JVCByZWdpc3Rlci4KK2luWzEtMTJdX21pbl9hbGFybQlWb2x0YWdlIGxvdyBhbGFybS4gRnJvbSBWT0xUQUdFX1VWX1dBUk5JTkcgc3RhdHVzLgoraW5bMS0xMl1fbWF4X2FsYXJtCVZvbHRhZ2UgaGlnaCBhbGFybS4gRnJvbSBWT0xUQUdFX09WX1dBUk5JTkcgc3RhdHVzLgoraW5bMS0xMl1fbGNyaXRfYWxhcm0JVm9sdGFnZSBjcml0aWNhbCBsb3cgYWxhcm0uIEZyb20gVk9MVEFHRV9VVl9GQVVMVCBzdGF0dXMuCitpblsxLTEyXV9jcml0X2FsYXJtCVZvbHRhZ2UgY3JpdGljYWwgaGlnaCBhbGFybS4gRnJvbSBWT0xUQUdFX09WX0ZBVUxUIHN0YXR1cy4KKworY3VyclsxLTEyXV9sYWJlbAkiaW91dFsxLTEyXSIuCitjdXJyWzEtMTJdX2lucHV0CU1lYXN1cmVkIGN1cnJlbnQuIEZyb20gUkVBRF9JT1VUIHJlZ2lzdGVyLgorY3VyclsxLTEyXV9tYXgJCU1heGltdW0gY3VycmVudC4gRnJvbSBJT1VUX09DX1dBUk5fTElNSVQgcmVnaXN0ZXIuCitjdXJyWzEtMTJdX2xjcml0CUNyaXRpY2FsIG1pbmltdW0gb3V0cHV0IGN1cnJlbnQuIEZyb20gSU9VVF9VQ19GQVVMVF9MSU1JVAorCQkJcmVnaXN0ZXIuCitjdXJyWzEtMTJdX2NyaXQJCUNyaXRpY2FsIG1heGltdW0gY3VycmVudC4gRnJvbSBJT1VUX09DX0ZBVUxUX0xJTUlUIHJlZ2lzdGVyLgorY3VyclsxLTEyXV9tYXhfYWxhcm0JQ3VycmVudCBoaWdoIGFsYXJtLiBGcm9tIElPVVRfT0NfV0FSTklORyBzdGF0dXMuCitjdXJyWzEtMTJdX2NyaXRfYWxhcm0JQ3VycmVudCBjcml0aWNhbCBoaWdoIGFsYXJtLiBGcm9tIElPVVRfT0NfRkFVTFQgc3RhdHVzLgorCisJCQlGb3IgZWFjaCBhdHRyaWJ1dGUgaW5kZXgsIGVpdGhlciB2b2x0YWdlIG9yIGN1cnJlbnQgaXMKKwkJCXJlcG9ydGVkLCBidXQgbm90IGJvdGguIElmIHZvbHRhZ2Ugb3IgY3VycmVudCBpcworCQkJcmVwb3J0ZWQgZGVwZW5kcyBvbiB0aGUgY2hpcCBjb25maWd1cmF0aW9uLgorCit0ZW1wWzEtMl1faW5wdXQJCU1lYXN1cmVkIHRlbXBlcmF0dXJlcy4gRnJvbSBSRUFEX1RFTVBFUkFUVVJFXzEgYW5kCisJCQlSRUFEX1RFTVBFUkFUVVJFXzIgcmVnaXN0ZXJzLgordGVtcFsxLTJdX21heAkJTWF4aW11bSB0ZW1wZXJhdHVyZS4gRnJvbSBPVF9XQVJOX0xJTUlUIHJlZ2lzdGVyLgordGVtcFsxLTJdX2NyaXQJCUNyaXRpY2FsIGhpZ2ggdGVtcGVyYXR1cmUuIEZyb20gT1RfRkFVTFRfTElNSVQgcmVnaXN0ZXIuCit0ZW1wWzEtMl1fbWF4X2FsYXJtCVRlbXBlcmF0dXJlIGhpZ2ggYWxhcm0uCit0ZW1wWzEtMl1fY3JpdF9hbGFybQlUZW1wZXJhdHVyZSBjcml0aWNhbCBoaWdoIGFsYXJtLgorCitmYW5bMS00XV9pbnB1dAkJRmFuIFJQTS4KK2ZhblsxLTRdX2FsYXJtCQlGYW4gYWxhcm0uCitmYW5bMS00XV9mYXVsdAkJRmFuIGZhdWx0LgorCisJCQlGYW4gYXR0cmlidXRlcyBhcmUgb25seSBhdmFpbGFibGUgb24gY2hpcHMgc3VwcG9ydGluZworCQkJZmFuIGNvbnRyb2wgKFVDRDkwMTI0LCBVQ0Q5MDkxMCkuIEF0dHJpYnV0ZSBmaWxlcyBhcmUKKwkJCWNyZWF0ZWQgb25seSBmb3IgZW5hYmxlZCBmYW5zLgorCQkJTm90ZSB0aGF0IGV2ZW4gdGhvdWdoIFVDRDkwOTEwIHN1cHBvcnRzIHVwIHRvIDEwIGZhbnMsCisJCQlvbmx5IHVwIHRvIGZvdXIgZmFucyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vdWNkOTIwMCBiL0RvY3VtZW50YXRpb24vaHdtb24vdWNkOTIwMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTgwNjBlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi91Y2Q5MjAwCkBAIC0wLDAgKzEsMTEyIEBACitLZXJuZWwgZHJpdmVyIHVjZDkyMDAKKz09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogVEkgVUNEOTIyMCwgVUNEOTIyMiwgVUNEOTIyNCwgVUNEOTI0MCwgVUNEOTI0NCwgVUNEOTI0NiwgYW5kIFVDRDkyNDgKKyAgICBQcmVmaXhlczogJ3VjZDkyMjAnLCAndWNkOTIyMicsICd1Y2Q5MjI0JywgJ3VjZDkyNDAnLCAndWNkOTI0NCcsICd1Y2Q5MjQ2JywKKwkndWNkOTI0OCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgIERhdGFzaGVldHM6CisJaHR0cDovL2ZvY3VzLnRpLmNvbS9saXQvZHMvc3ltbGluay91Y2Q5MjIwLnBkZgorCWh0dHA6Ly9mb2N1cy50aS5jb20vbGl0L2RzL3N5bWxpbmsvdWNkOTIyMi5wZGYKKwlodHRwOi8vZm9jdXMudGkuY29tL2xpdC9kcy9zeW1saW5rL3VjZDkyMjQucGRmCisJaHR0cDovL2ZvY3VzLnRpLmNvbS9saXQvZHMvc3ltbGluay91Y2Q5MjQwLnBkZgorCWh0dHA6Ly9mb2N1cy50aS5jb20vbGl0L2RzL3N5bWxpbmsvdWNkOTI0NC5wZGYKKwlodHRwOi8vZm9jdXMudGkuY29tL2xpdC9kcy9zeW1saW5rL3VjZDkyNDYucGRmCisJaHR0cDovL2ZvY3VzLnRpLmNvbS9saXQvZHMvc3ltbGluay91Y2Q5MjQ4LnBkZgorCitBdXRob3I6IEd1ZW50ZXIgUm9lY2sgPGxpbnV4QHJvZWNrLXVzLm5ldD4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworW0Zyb20gZGF0YXNoZWV0c10gVUNEOTIyMCwgVUNEOTIyMiwgVUNEOTIyNCwgVUNEOTI0MCwgVUNEOTI0NCwgVUNEOTI0NiwgYW5kCitVQ0Q5MjQ4IGFyZSBtdWx0aS1yYWlsLCBtdWx0aS1waGFzZSBzeW5jaHJvbm91cyBidWNrIGRpZ2l0YWwgUFdNIGNvbnRyb2xsZXJzCitkZXNpZ25lZCBmb3Igbm9uLWlzb2xhdGVkIERDL0RDIHBvd2VyIGFwcGxpY2F0aW9ucy4gVGhlIGRldmljZXMgaW50ZWdyYXRlCitkZWRpY2F0ZWQgY2lyY3VpdHJ5IGZvciBEQy9EQyBsb29wIG1hbmFnZW1lbnQgd2l0aCBmbGFzaCBtZW1vcnkgYW5kIGEgc2VyaWFsCitpbnRlcmZhY2UgdG8gc3VwcG9ydCBjb25maWd1cmF0aW9uLCBtb25pdG9yaW5nIGFuZCBtYW5hZ2VtZW50LgorCitUaGlzIGRyaXZlciBpcyBhIGNsaWVudCBkcml2ZXIgdG8gdGhlIGNvcmUgUE1CdXMgZHJpdmVyLiBQbGVhc2Ugc2VlCitEb2N1bWVudGF0aW9uL2h3bW9uL3BtYnVzIGZvciBkZXRhaWxzIG9uIFBNQnVzIGNsaWVudCBkcml2ZXJzLgorCisKK1VzYWdlIE5vdGVzCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBkb2VzIG5vdCBhdXRvLWRldGVjdCBkZXZpY2VzLiBZb3Ugd2lsbCBoYXZlIHRvIGluc3RhbnRpYXRlIHRoZQorZGV2aWNlcyBleHBsaWNpdGx5LiBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaTJjL2luc3RhbnRpYXRpbmctZGV2aWNlcyBmb3IKK2RldGFpbHMuCisKKworUGxhdGZvcm0gZGF0YSBzdXBwb3J0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGRyaXZlciBzdXBwb3J0cyBzdGFuZGFyZCBQTUJ1cyBkcml2ZXIgcGxhdGZvcm0gZGF0YS4gUGxlYXNlIHNlZQorRG9jdW1lbnRhdGlvbi9od21vbi9wbWJ1cyBmb3IgZGV0YWlscy4KKworCitTeXNmcyBlbnRyaWVzCistLS0tLS0tLS0tLS0tCisKK1RoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBhcmUgc3VwcG9ydGVkLiBMaW1pdHMgYXJlIHJlYWQtd3JpdGU7IGFsbCBvdGhlcgorYXR0cmlidXRlcyBhcmUgcmVhZC1vbmx5LgorCitpbjFfbGFiZWwJCSJ2aW4iLgoraW4xX2lucHV0CQlNZWFzdXJlZCB2b2x0YWdlLiBGcm9tIFJFQURfVklOIHJlZ2lzdGVyLgoraW4xX21pbgkJCU1pbmltdW0gVm9sdGFnZS4gRnJvbSBWSU5fVVZfV0FSTl9MSU1JVCByZWdpc3Rlci4KK2luMV9tYXgJCQlNYXhpbXVtIHZvbHRhZ2UuIEZyb20gVklOX09WX1dBUk5fTElNSVQgcmVnaXN0ZXIuCitpbjFfbGNyaXQJCUNyaXRpY2FsIG1pbmltdW0gVm9sdGFnZS4gVklOX1VWX0ZBVUxUX0xJTUlUIHJlZ2lzdGVyLgoraW4xX2NyaXQJCUNyaXRpY2FsIG1heGltdW0gdm9sdGFnZS4gRnJvbSBWSU5fT1ZfRkFVTFRfTElNSVQgcmVnaXN0ZXIuCitpbjFfbWluX2FsYXJtCQlWb2x0YWdlIGxvdyBhbGFybS4gRnJvbSBWSU5fVVZfV0FSTklORyBzdGF0dXMuCitpbjFfbWF4X2FsYXJtCQlWb2x0YWdlIGhpZ2ggYWxhcm0uIEZyb20gVklOX09WX1dBUk5JTkcgc3RhdHVzLgoraW4xX2xjcml0X2FsYXJtCQlWb2x0YWdlIGNyaXRpY2FsIGxvdyBhbGFybS4gRnJvbSBWSU5fVVZfRkFVTFQgc3RhdHVzLgoraW4xX2NyaXRfYWxhcm0JCVZvbHRhZ2UgY3JpdGljYWwgaGlnaCBhbGFybS4gRnJvbSBWSU5fT1ZfRkFVTFQgc3RhdHVzLgorCitpblsyLTVdX2xhYmVsCQkidm91dFsxLTRdIi4KK2luWzItNV1faW5wdXQJCU1lYXN1cmVkIHZvbHRhZ2UuIEZyb20gUkVBRF9WT1VUIHJlZ2lzdGVyLgoraW5bMi01XV9taW4JCU1pbmltdW0gVm9sdGFnZS4gRnJvbSBWT1VUX1VWX1dBUk5fTElNSVQgcmVnaXN0ZXIuCitpblsyLTVdX21heAkJTWF4aW11bSB2b2x0YWdlLiBGcm9tIFZPVVRfT1ZfV0FSTl9MSU1JVCByZWdpc3Rlci4KK2luWzItNV1fbGNyaXQJCUNyaXRpY2FsIG1pbmltdW0gVm9sdGFnZS4gVk9VVF9VVl9GQVVMVF9MSU1JVCByZWdpc3Rlci4KK2luWzItNV1fY3JpdAkJQ3JpdGljYWwgbWF4aW11bSB2b2x0YWdlLiBGcm9tIFZPVVRfT1ZfRkFVTFRfTElNSVQgcmVnaXN0ZXIuCitpblsyLTVdX21pbl9hbGFybQlWb2x0YWdlIGxvdyBhbGFybS4gRnJvbSBWT0xUQUdFX1VWX1dBUk5JTkcgc3RhdHVzLgoraW5bMi01XV9tYXhfYWxhcm0JVm9sdGFnZSBoaWdoIGFsYXJtLiBGcm9tIFZPTFRBR0VfT1ZfV0FSTklORyBzdGF0dXMuCitpblsyLTVdX2xjcml0X2FsYXJtCVZvbHRhZ2UgY3JpdGljYWwgbG93IGFsYXJtLiBGcm9tIFZPTFRBR0VfVVZfRkFVTFQgc3RhdHVzLgoraW5bMi01XV9jcml0X2FsYXJtCVZvbHRhZ2UgY3JpdGljYWwgaGlnaCBhbGFybS4gRnJvbSBWT0xUQUdFX09WX0ZBVUxUIHN0YXR1cy4KKworY3VycjFfbGFiZWwJCSJpaW4iLgorY3VycjFfaW5wdXQJCU1lYXN1cmVkIGN1cnJlbnQuIEZyb20gUkVBRF9JSU4gcmVnaXN0ZXIuCisKK2N1cnJbMi01XV9sYWJlbAkJImlvdXRbMS00XSIuCitjdXJyWzItNV1faW5wdXQJCU1lYXN1cmVkIGN1cnJlbnQuIEZyb20gUkVBRF9JT1VUIHJlZ2lzdGVyLgorY3VyclsyLTVdX21heAkJTWF4aW11bSBjdXJyZW50LiBGcm9tIElPVVRfT0NfV0FSTl9MSU1JVCByZWdpc3Rlci4KK2N1cnJbMi01XV9sY3JpdAkJQ3JpdGljYWwgbWluaW11bSBvdXRwdXQgY3VycmVudC4gRnJvbSBJT1VUX1VDX0ZBVUxUX0xJTUlUCisJCQlyZWdpc3Rlci4KK2N1cnJbMi01XV9jcml0CQlDcml0aWNhbCBtYXhpbXVtIGN1cnJlbnQuIEZyb20gSU9VVF9PQ19GQVVMVF9MSU1JVCByZWdpc3Rlci4KK2N1cnJbMi01XV9tYXhfYWxhcm0JQ3VycmVudCBoaWdoIGFsYXJtLiBGcm9tIElPVVRfT0NfV0FSTklORyBzdGF0dXMuCitjdXJyWzItNV1fY3JpdF9hbGFybQlDdXJyZW50IGNyaXRpY2FsIGhpZ2ggYWxhcm0uIEZyb20gSU9VVF9PQ19GQVVMVCBzdGF0dXMuCisKK3Bvd2VyMV9pbnB1dAkJTWVhc3VyZWQgaW5wdXQgcG93ZXIuIEZyb20gUkVBRF9QSU4gcmVnaXN0ZXIuCitwb3dlcjFfbGFiZWwJCSJwaW4iCisKK3Bvd2VyWzItNV1faW5wdXQJTWVhc3VyZWQgb3V0cHV0IHBvd2VyLiBGcm9tIFJFQURfUE9VVCByZWdpc3Rlci4KK3Bvd2VyWzItNV1fbGFiZWwJInBvdXRbMS00XSIKKworCQkJVGhlIG51bWJlciBvZiBvdXRwdXQgdm9sdGFnZSwgY3VycmVudCwgYW5kIHBvd2VyCisJCQlhdHRyaWJ1dGUgc2V0cyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBudW1iZXIgb2YgZW5hYmxlZAorCQkJcmFpbHMuIFNlZSBjaGlwIGRhdGFzaGVldHMgZm9yIGRldGFpbHMuCisKK3RlbXBbMS01XV9pbnB1dAkJTWVhc3VyZWQgdGVtcGVyYXR1cmVzLiBGcm9tIFJFQURfVEVNUEVSQVRVUkVfMSBhbmQKKwkJICAgICAgICBSRUFEX1RFTVBFUkFUVVJFXzIgcmVnaXN0ZXJzLgorCQkJdGVtcDEgaXMgdGhlIGNoaXAgaW50ZXJuYWwgdGVtcGVyYXR1cmUuIHRlbXBbMi01XSBhcmUKKwkJCXJhaWwgdGVtcGVyYXR1cmVzLiAgdGVtcFsyLTVdIGF0dHJpYnV0ZXMgYXJlIG9ubHkKKwkJCWNyZWF0ZWQgZm9yIGVuYWJsZWQgcmFpbHMuIFNlZSBjaGlwIGRhdGFzaGVldHMgZm9yCisJCQlkZXRhaWxzLgordGVtcFsxLTVdX21heAkJTWF4aW11bSB0ZW1wZXJhdHVyZS4gRnJvbSBPVF9XQVJOX0xJTUlUIHJlZ2lzdGVyLgordGVtcFsxLTVdX2NyaXQJCUNyaXRpY2FsIGhpZ2ggdGVtcGVyYXR1cmUuIEZyb20gT1RfRkFVTFRfTElNSVQgcmVnaXN0ZXIuCit0ZW1wWzEtNV1fbWF4X2FsYXJtCVRlbXBlcmF0dXJlIGhpZ2ggYWxhcm0uCit0ZW1wWzEtNV1fY3JpdF9hbGFybQlUZW1wZXJhdHVyZSBjcml0aWNhbCBoaWdoIGFsYXJtLgorCitmYW4xX2lucHV0CQlGYW4gUlBNLiB1Y2Q5MjQwIG9ubHkuCitmYW4xX2FsYXJtCQlGYW4gYWxhcm0uIHVjZDkyNDAgb25seS4KK2ZhbjFfZmF1bHQJCUZhbiBmYXVsdC4gdWNkOTI0MCBvbmx5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi91c2Vyc3BhY2UtdG9vbHMgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3VzZXJzcGFjZS10b29scwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODY1YWVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi91c2Vyc3BhY2UtdG9vbHMKQEAgLTAsMCArMSw0MCBAQAorSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0KKworTW9zdCBtYWluYm9hcmRzIGhhdmUgc2Vuc29yIGNoaXBzIHRvIG1vbml0b3Igc3lzdGVtIGhlYWx0aCAobGlrZSB0ZW1wZXJhdHVyZXMsCit2b2x0YWdlcywgZmFucyBzcGVlZCkuIFRoZXkgYXJlIG9mdGVuIGNvbm5lY3RlZCB0aHJvdWdoIGFuIEkyQyBidXMsIGJ1dCBzb21lCithcmUgYWxzbyBjb25uZWN0ZWQgZGlyZWN0bHkgdGhyb3VnaCB0aGUgSVNBIGJ1cy4KKworVGhlIGtlcm5lbCBkcml2ZXJzIG1ha2UgdGhlIGRhdGEgZnJvbSB0aGUgc2Vuc29yIGNoaXBzIGF2YWlsYWJsZSBpbiB0aGUgL3N5cwordmlydHVhbCBmaWxlc3lzdGVtLiBVc2Vyc3BhY2UgdG9vbHMgYXJlIHRoZW4gdXNlZCB0byBkaXNwbGF5IHRoZSBtZWFzdXJlZAordmFsdWVzIG9yIGNvbmZpZ3VyZSB0aGUgY2hpcHMgaW4gYSBtb3JlIGZyaWVuZGx5IG1hbm5lci4KKworTG0tc2Vuc29ycworLS0tLS0tLS0tLQorCitDb3JlIHNldCBvZiB1dGlsaXRpZXMgdGhhdCB3aWxsIGFsbG93IHlvdSB0byBvYnRhaW4gaGVhbHRoIGluZm9ybWF0aW9uLAorc2V0dXAgbW9uaXRvcmluZyBsaW1pdHMgZXRjLiBZb3UgY2FuIGdldCB0aGVtIG9uIHRoZWlyIGhvbWVwYWdlCitodHRwOi8vd3d3LmxtLXNlbnNvcnMub3JnLyBvciBhcyBhIHBhY2thZ2UgZnJvbSB5b3VyIExpbnV4IGRpc3RyaWJ1dGlvbi4KKworSWYgZnJvbSB3ZWJzaXRlOgorR2V0IGxtLXNlbnNvcnMgZnJvbSBwcm9qZWN0IHdlYiBzaXRlLiBQbGVhc2Ugbm90ZSwgeW91IG5lZWQgb25seSB1c2Vyc3BhY2UKK3BhcnQsIHNvIGNvbXBpbGUgd2l0aCAibWFrZSB1c2VyIiBhbmQgaW5zdGFsbCB3aXRoICJtYWtlIHVzZXJfaW5zdGFsbCIuCisKK0dlbmVyYWwgaGludHMgdG8gZ2V0IHRoaW5ncyB3b3JraW5nOgorCiswKSBnZXQgbG0tc2Vuc29ycyB1c2Vyc3BhY2UgdXRpbHMKKzEpIGNvbXBpbGUgYWxsIGRyaXZlcnMgaW4gSTJDIGFuZCBIYXJkd2FyZSBNb25pdG9yaW5nIHNlY3Rpb25zIGFzIG1vZHVsZXMKKyAgIGluIHlvdXIga2VybmVsCisyKSBydW4gc2Vuc29ycy1kZXRlY3Qgc2NyaXB0LCBpdCB3aWxsIHRlbGwgeW91IHdoYXQgbW9kdWxlcyB5b3UgbmVlZCB0byBsb2FkLgorMykgbG9hZCB0aGVtIGFuZCBydW4gInNlbnNvcnMiIGNvbW1hbmQsIHlvdSBzaG91bGQgc2VlIHNvbWUgcmVzdWx0cy4KKzQpIGZpeCBzZW5zb3JzLmNvbmYsIGxhYmVscywgbGltaXRzLCBmYW4gZGl2aXNvcnMKKzUpIGlmIGFueSBtb3JlIHByb2JsZW1zIGNvbnN1bHQgRkFRLCBvciBkb2N1bWVudGF0aW9uCisKK090aGVyIHV0aWxpdGllcworLS0tLS0tLS0tLS0tLS0tCisKK0lmIHlvdSB3YW50IHNvbWUgZ3JhcGhpY2FsIGluZGljYXRvcnMgb2Ygc3lzdGVtIGhlYWx0aCBsb29rIGZvciBhcHBsaWNhdGlvbnMKK2xpa2U6IGdrcmVsbG0sIGtzZW5zb3JzLCB4c2Vuc29ycywgd210ZW1wLCB3bXNlbnNvcnMsIHdtZ3RlbXAsIGtzeXNndWFyZGQsCitoYXJkd2FyZS1tb25pdG9yCisKK0lmIHlvdSBhcmUgc2VydmVyIGFkbWluaXN0cmF0b3IgeW91IGNhbiB0cnkgc25tcGQgb3IgbXJ0Z3V0aWxzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi92ZXhwcmVzcyBiL0RvY3VtZW50YXRpb24vaHdtb24vdmV4cHJlc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU3ZDZkNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vdmV4cHJlc3MKQEAgLTAsMCArMSwzNCBAQAorS2VybmVsIGRyaXZlciB2ZXhwcmVzcworPT09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgc3lzdGVtczoKKyAgKiBBUk0gTHRkLiBWZXJzYXRpbGUgRXhwcmVzcyBwbGF0Zm9ybQorICAgIFByZWZpeDogJ3ZleHByZXNzJworICAgIERhdGFzaGVldHM6CisgICAgICAqICJIYXJkd2FyZSBEZXNjcmlwdGlvbiIgc2VjdGlvbnMgb2YgdGhlIFRlY2huaWNhbCBSZWZlcmVuY2UgTWFudWFscworICAgICAgICBmb3IgdGhlIFZlcnNhdGlsZSBFeHByZXNzIGJvYXJkczoKKyAgICAgICAgaHR0cDovL2luZm9jZW50ZXIuYXJtLmNvbS9oZWxwL3RvcGljL2NvbS5hcm0uZG9jLnN1YnNldC5ib2FyZHMuZXhwcmVzcy9pbmRleC5odG1sCisgICAgICAqIFNlY3Rpb24gIjQuNC4xNC4gU3lzdGVtIENvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIiBvZiB0aGUgVjJNLVAxIFRSTToKKyAgICAgICAgaHR0cDovL2luZm9jZW50ZXIuYXJtLmNvbS9oZWxwL2luZGV4LmpzcD90b3BpYz0vY29tLmFybS5kb2MuZHVpMDQ0Ny0vaW5kZXguaHRtbAorCitBdXRob3I6IFBhd2VsIE1vbGwKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1ZlcnNhdGlsZSBFeHByZXNzIHBsYXRmb3JtIChodHRwOi8vd3d3LmFybS5jb20vdmVyc2F0aWxlZXhwcmVzcy8pIGlzIGEKK3JlZmVyZW5jZSAmIHByb3RvdHlwaW5nIHN5c3RlbSBmb3IgQVJNIEx0ZC4gcHJvY2Vzc29ycy4gSXQgY2FuIGJlIHNldCB1cAorZnJvbSBhIHdpZGUgcmFuZ2Ugb2YgYm9hcmRzLCBlYWNoIG9mIHRoZW0gY29udGFpbmluZyAoYXBhcnQgb2YgdGhlIG1haW4KK2NoaXAvRlBHQSkgYSBudW1iZXIgb2YgbWljcm9jb250cm9sbGVycyByZXNwb25zaWJsZSBmb3IgcGxhdGZvcm0KK2NvbmZpZ3VyYXRpb24gYW5kIGNvbnRyb2wuIFRoZXNlcyBtaWNyb2NvbnRyb2xsZXJzIGNhbiBhbHNvIG1vbml0b3IgdGhlCitib2FyZCBhbmQgaXRzIGVudmlyb25tZW50IGJ5IGEgbnVtYmVyIG9mIGludGVybmFsIGFuZCBleHRlcm5hbCBzZW5zb3JzLAorcHJvdmlkaW5nIGluZm9ybWF0aW9uIGFib3V0IHBvd2VyIGxpbmVzIHZvbHRhZ2VzIGFuZCBjdXJyZW50cywgYm9hcmQKK3RlbXBlcmF0dXJlIGFuZCBwb3dlciB1c2FnZS4gU29tZSBvZiB0aGVtIGFsc28gY2FsY3VsYXRlIGNvbnN1bWVkIGVuZXJneQorYW5kIHByb3ZpZGUgYSBjdW11bGF0aXZlIHVzZSBjb3VudGVyLgorCitUaGUgY29uZmlndXJhdGlvbiBkZXZpY2VzIGFyZSBfbm90XyBtZW1vcnkgbWFwcGVkIGFuZCBtdXN0IGJlIGFjY2Vzc2VkCit2aWEgYSBjdXN0b20gaW50ZXJmYWNlLCBhYnN0cmFjdGVkIGJ5IHRoZSAidmV4cHJlc3NfY29uZmlnIiBBUEkuCisKK0FzIHRoZXNlIGRldmljZXMgYXJlIG5vbi1kaXNjb3ZlcmFibGUsIHRoZXkgbXVzdCBiZSBkZXNjcmliZWQgaW4gYSBEZXZpY2UKK1RyZWUgcGFzc2VkIHRvIHRoZSBrZXJuZWwuIERldGFpbHMgb2YgdGhlIERUIGJpbmRpbmcgZm9yIHRoZW0gY2FuIGJlIGZvdW5kCitpbiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaHdtb24vdmV4cHJlc3MudHh0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi92aWE2ODZhIGIvRG9jdW1lbnRhdGlvbi9od21vbi92aWE2ODZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1ZjkwYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3ZpYTY4NmEKQEAgLTAsMCArMSw3OCBAQAorS2VybmVsIGRyaXZlciB2aWE2ODZhCis9PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIFZpYSBWVDgyQzY4NkEsIFZUODJDNjg2QiAgU291dGhicmlkZ2UgSW50ZWdyYXRlZCBIYXJkd2FyZSBNb25pdG9yCisgICAgUHJlZml4OiAndmlhNjg2YScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSVNBIGluIFBDSS1zcGFjZSBlbmNvZGVkIGFkZHJlc3MKKyAgICBEYXRhc2hlZXQ6IE9uIHJlcXVlc3QgdGhyb3VnaCB3ZWIgZm9ybSAoaHR0cDovL3d3dy52aWEuY29tLnR3L2VuL3Jlc291cmNlcy9kb3dubG9hZC1jZW50ZXIvKQorCitBdXRob3JzOgorICAgICAgICBLecO2c3RpIE3DpGxra2kgPGttYWxra2lAY2MuaHV0LmZpPiwKKyAgICAgICAgTWFyayBELiBTdHVkZWJha2VyIDxtZHN4eXoxMjNAeWFob28uY29tPgorICAgICAgICBCb2IgRG91Z2hlcnR5IDxib2JkQHN0YW5mb3JkLmVkdT4KKyAgICAgICAgKFNvbWUgY29udmVyc2lvbi1mYWN0b3IgZGF0YSB3ZXJlIGNvbnRyaWJ1dGVkIGJ5CisgICAgICAgIEpvbmF0aGFuIFRlaCBTb29uIFlldyA8ai50ZWhAaW5hbWUuY29tPgorICAgICAgICBhbmQgQWxleCB2YW4gS2FhbSA8ZGFya3NpZGVAY2hlbGxvLm5sPi4pCisKK01vZHVsZSBQYXJhbWV0ZXJzCistLS0tLS0tLS0tLS0tLS0tLQorCitmb3JjZV9hZGRyPTB4YWRkciAgICAgICBTZXQgdGhlIEkvTyBiYXNlIGFkZHJlc3MuIFVzZWZ1bCBmb3IgYm9hcmRzIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbid0IHNldCB0aGUgYWRkcmVzcyBpbiB0aGUgQklPUy4gTG9vayBmb3IgYSBCSU9TCisgICAgICAgICAgICAgICAgICAgICAgICB1cGdyYWRlIGJlZm9yZSByZXNvcnRpbmcgdG8gdGhpcy4gRG9lcyBub3QgZG8gYQorICAgICAgICAgICAgICAgICAgICAgICAgUENJIGZvcmNlOyB0aGUgdmlhNjg2YSBtdXN0IHN0aWxsIGJlIHByZXNlbnQgaW4gbHNwY2kuCisgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCB1c2UgdGhpcyB1bmxlc3MgdGhlIGRyaXZlciBjb21wbGFpbnMgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgYWRkcmVzcyBpcyBub3Qgc2V0LgorICAgICAgICAgICAgICAgICAgICAgICAgRXhhbXBsZTogJ21vZHByb2JlIHZpYTY4NmEgZm9yY2VfYWRkcj0weDYwMDAnCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGUgZHJpdmVyIGRvZXMgbm90IGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIGNoaXBzIGFuZCByZXBvcnRzCithbGwgYXMgYSA2ODZBLgorCitUaGUgVmlhIDY4NmEgc291dGhicmlkZ2UgaGFzIGludGVncmF0ZWQgaGFyZHdhcmUgbW9uaXRvciBmdW5jdGlvbmFsaXR5LgorSXQgYWxzbyBoYXMgYW4gSTJDIGJ1cywgYnV0IHRoaXMgZHJpdmVyIG9ubHkgc3VwcG9ydHMgdGhlIGhhcmR3YXJlIG1vbml0b3IuCitGb3IgdGhlIEkyQyBidXMgZHJpdmVyLCBzZWUgPGZpbGU6RG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy12aWFwcm8+CisKK1RoZSBWaWEgNjg2YSBpbXBsZW1lbnRzIHRocmVlIHRlbXBlcmF0dXJlIHNlbnNvcnMsIHR3byBmYW4gcm90YXRpb24gc3BlZWQKK3NlbnNvcnMsIGZpdmUgdm9sdGFnZSBzZW5zb3JzIGFuZCBhbGFybXMuCisKK1RlbXBlcmF0dXJlcyBhcmUgbWVhc3VyZWQgaW4gZGVncmVlcyBDZWxzaXVzLiBBbiBhbGFybSBpcyB0cmlnZ2VyZWQgb25jZQord2hlbiB0aGUgT3ZlcnRlbXBlcmF0dXJlIFNodXRkb3duIGxpbWl0IGlzIGNyb3NzZWQ7IGl0IGlzIHRyaWdnZXJlZCBhZ2FpbgorYXMgc29vbiBhcyBpdCBkcm9wcyBiZWxvdyB0aGUgaHlzdGVyZXNpcyB2YWx1ZS4KKworRmFuIHJvdGF0aW9uIHNwZWVkcyBhcmUgcmVwb3J0ZWQgaW4gUlBNIChyb3RhdGlvbnMgcGVyIG1pbnV0ZSkuIEFuIGFsYXJtIGlzCit0cmlnZ2VyZWQgaWYgdGhlIHJvdGF0aW9uIHNwZWVkIGhhcyBkcm9wcGVkIGJlbG93IGEgcHJvZ3JhbW1hYmxlIGxpbWl0LiBGYW4KK3JlYWRpbmdzIGNhbiBiZSBkaXZpZGVkIGJ5IGEgcHJvZ3JhbW1hYmxlIGRpdmlkZXIgKDEsIDIsIDQgb3IgOCkgdG8gZ2l2ZQordGhlIHJlYWRpbmdzIG1vcmUgcmFuZ2Ugb3IgYWNjdXJhY3kuIE5vdCBhbGwgUlBNIHZhbHVlcyBjYW4gYWNjdXJhdGVseSBiZQorcmVwcmVzZW50ZWQsIHNvIHNvbWUgcm91bmRpbmcgaXMgZG9uZS4gV2l0aCBhIGRpdmlkZXIgb2YgMiwgdGhlIGxvd2VzdAorcmVwcmVzZW50YWJsZSB2YWx1ZSBpcyBhcm91bmQgMjYwMCBSUE0uCisKK1ZvbHRhZ2Ugc2Vuc29ycyAoYWxzbyBrbm93biBhcyBJTiBzZW5zb3JzKSByZXBvcnQgdGhlaXIgdmFsdWVzIGluIHZvbHRzLgorQW4gYWxhcm0gaXMgdHJpZ2dlcmVkIGlmIHRoZSB2b2x0YWdlIGhhcyBjcm9zc2VkIGEgcHJvZ3JhbW1hYmxlIG1pbmltdW0KK29yIG1heGltdW0gbGltaXQuIFZvbHRhZ2VzIGFyZSBpbnRlcm5hbGx5IHNjYWxsZWQsIHNvIGVhY2ggdm9sdGFnZSBjaGFubmVsCitoYXMgYSBkaWZmZXJlbnQgcmVzb2x1dGlvbiBhbmQgcmFuZ2UuCisKK0lmIGFuIGFsYXJtIHRyaWdnZXJzLCBpdCB3aWxsIHJlbWFpbiB0cmlnZ2VyZWQgdW50aWwgdGhlIGhhcmR3YXJlIHJlZ2lzdGVyCitpcyByZWFkIGF0IGxlYXN0IG9uY2UuIFRoaXMgbWVhbnMgdGhhdCB0aGUgY2F1c2UgZm9yIHRoZSBhbGFybSBtYXkKK2FscmVhZHkgaGF2ZSBkaXNhcHBlYXJlZCEgTm90ZSB0aGF0IGluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBhbGwKK2hhcmR3YXJlIHJlZ2lzdGVycyBhcmUgcmVhZCB3aGVuZXZlciBhbnkgZGF0YSBpcyByZWFkICh1bmxlc3MgaXQgaXMgbGVzcwordGhhbiAxLjUgc2Vjb25kcyBzaW5jZSB0aGUgbGFzdCB1cGRhdGUpLiBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiBlYXNpbHkKK21pc3Mgb25jZS1vbmx5IGFsYXJtcy4KKworVGhlIGRyaXZlciBvbmx5IHVwZGF0ZXMgaXRzIHZhbHVlcyBlYWNoIDEuNSBzZWNvbmRzOyByZWFkaW5nIGl0IG1vcmUgb2Z0ZW4KK3dpbGwgZG8gbm8gaGFybSwgYnV0IHdpbGwgcmV0dXJuICdvbGQnIHZhbHVlcy4KKworS25vd24gSXNzdWVzCistLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgaGFuZGxlcyBzZW5zb3JzIGludGVncmF0ZWQgaW4gc29tZSBWSUEgc291dGggYnJpZGdlcy4gSXQgaXMKK3Bvc3NpYmxlIHRoYXQgYSBtb3RoZXJib2FyZCBtYWtlciB1c2VkIGEgVlQ4MkM2ODZBL0IgY2hpcCBhcyBwYXJ0IG9mIGEKK3Byb2R1Y3QgZGVzaWduIGJ1dCB3YXMgbm90IGludGVyZXN0ZWQgaW4gaXRzIGhhcmR3YXJlIG1vbml0b3JpbmcgZmVhdHVyZXMsCitpbiB3aGljaCBjYXNlIHRoZSBzZW5zb3IgaW5wdXRzIHdpbGwgbm90IGJlIHdpcmVkLiBUaGlzIGlzIHRoZSBjYXNlIG9mCit0aGUgQXN1cyBLN1YsIEE3ViBhbmQgQTdWMTMzIG1vdGhlcmJvYXJkcywgdG8gbmFtZSBvbmx5IGEgZmV3IG9mIHRoZW0uCitTbywgaWYgeW91IG5lZWQgdGhlIGZvcmNlX2FkZHIgcGFyYW1ldGVyLCBhbmQgZW5kIHVwIHdpdGggdmFsdWVzIHdoaWNoCitkb24ndCBzZWVtIHRvIG1ha2UgYW55IHNlbnNlLCBkb24ndCBsb29rIGFueSBmdXJ0aGVyOiB5b3VyIGNoaXAgaXMgc2ltcGx5Citub3Qgd2lyZWQgZm9yIGhhcmR3YXJlIG1vbml0b3JpbmcuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3Z0MTIxMSBiL0RvY3VtZW50YXRpb24vaHdtb24vdnQxMjExCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3ZmE2MzMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3Z0MTIxMQpAQCAtMCwwICsxLDIwNiBAQAorS2VybmVsIGRyaXZlciB2dDEyMTEKKz09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBWSUEgVlQxMjExCisgICAgUHJlZml4OiAndnQxMjExJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBub25lLCBhZGRyZXNzIHJlYWQgZnJvbSBTdXBlci1JL08gY29uZmlnIHNwYWNlCisgICAgRGF0YXNoZWV0OiBQcm92aWRlZCBieSBWSUEgdXBvbiByZXF1ZXN0IGFuZCB1bmRlciBOREEKKworQXV0aG9yczogSnVlcmcgSGFlZmxpZ2VyIDxqdWVyZ2hAZ21haWwuY29tPgorCitUaGlzIGRyaXZlciBpcyBiYXNlZCBvbiB0aGUgZHJpdmVyIGZvciBrZXJuZWwgMi40IGJ5IE1hcmsgRC4gU3R1ZGViYWtlciBhbmQKK2l0cyBwb3J0IHRvIGtlcm5lbCAyLjYgYnkgTGFycyBFa21hbi4KKworVGhhbmtzIHRvIEpvc2VwaCBDaGFuIGFuZCBGaW9uYSBHYXR0IGZyb20gVklBIGZvciBwcm92aWRpbmcgZG9jdW1lbnRhdGlvbiBhbmQKK3RlY2huaWNhbCBzdXBwb3J0LgorCisKK01vZHVsZSBQYXJhbWV0ZXJzCistLS0tLS0tLS0tLS0tLS0tLQorCisqIHVjaF9jb25maWc6IGludAlPdmVycmlkZSB0aGUgQklPUyBkZWZhdWx0IHVuaXZlcnNhbCBjaGFubmVsIChVQ0gpCisJCQljb25maWd1cmF0aW9uIGZvciBjaGFubmVscyAxLTUuCisJCQlMZWdhbCB2YWx1ZXMgYXJlIGluIHRoZSByYW5nZSBvZiAwLTMxLiBCaXQgMCBtYXBzIHRvCisJCQlVQ0gxLCBiaXQgMSBtYXBzIHRvIFVDSDIgYW5kIHNvIG9uLiBTZXR0aW5nIGEgYml0IHRvIDEKKwkJCWVuYWJsZXMgdGhlIHRoZXJtYWwgaW5wdXQgb2YgdGhhdCBwYXJ0aWN1bGFyIFVDSCBhbmQKKwkJCXNldHRpbmcgYSBiaXQgdG8gMCBlbmFibGVzIHRoZSB2b2x0YWdlIGlucHV0LgorCisqIGludF9tb2RlOiBpbnQJCU92ZXJyaWRlIHRoZSBCSU9TIGRlZmF1bHQgdGVtcGVyYXR1cmUgaW50ZXJydXB0IG1vZGUuCisJCQlUaGUgb25seSBwb3NzaWJsZSB2YWx1ZSBpcyAwIHdoaWNoIGZvcmNlcyBpbnRlcnJ1cHQKKwkJCW1vZGUgMC4gSW4gdGhpcyBtb2RlLCBhbnkgcGVuZGluZyBpbnRlcnJ1cHQgaXMgY2xlYXJlZAorCQkJd2hlbiB0aGUgc3RhdHVzIHJlZ2lzdGVyIGlzIHJlYWQgYnV0IGlzIHJlZ2VuZXJhdGVkIGFzCisJCQlsb25nIGFzIHRoZSB0ZW1wZXJhdHVyZSBzdGF5cyBhYm92ZSB0aGUgaHlzdGVyZXNpcworCQkJbGltaXQuCisKK0JlIGF3YXJlIHRoYXQgb3ZlcnJpZGluZyBCSU9TIGRlZmF1bHRzIG1pZ2h0IGNhdXNlIHNvbWUgdW53YW50ZWQgc2lkZSBlZmZlY3RzIQorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGUgVklBIFZUMTIxMSBTdXBlci1JL08gY2hpcCBpbmNsdWRlcyBjb21wbGV0ZSBoYXJkd2FyZSBtb25pdG9yaW5nCitjYXBhYmlsaXRpZXMuIEl0IG1vbml0b3JzIDIgZGVkaWNhdGVkIHRlbXBlcmF0dXJlIHNlbnNvciBpbnB1dHMgKHRlbXAxIGFuZAordGVtcDIpLCAxIGRlZGljYXRlZCB2b2x0YWdlIChpbjUpIGFuZCAyIGZhbnMuIEFkZGl0aW9uYWxseSwgdGhlIGNoaXAKK2ltcGxlbWVudHMgNSB1bml2ZXJzYWwgaW5wdXQgY2hhbm5lbHMgKFVDSDEtNSkgdGhhdCBjYW4gYmUgaW5kaXZpZHVhbGx5Citwcm9ncmFtbWVkIHRvIGVpdGhlciBtb25pdG9yIGEgdm9sdGFnZSBvciBhIHRlbXBlcmF0dXJlLgorCitUaGlzIGNoaXAgYWxzbyBwcm92aWRlcyBtYW51YWwgYW5kIGF1dG9tYXRpYyBjb250cm9sIG9mIGZhbiBzcGVlZHMgKGFjY29yZGluZwordG8gdGhlIGRhdGFzaGVldCkuIFRoZSBkcml2ZXIgb25seSBzdXBwb3J0cyBhdXRvbWF0aWMgY29udHJvbCBzaW5jZSB0aGUgbWFudWFsCittb2RlIGRvZXNuJ3Qgc2VlbSB0byB3b3JrIGFzIGFkdmVydGlzZWQgaW4gdGhlIGRhdGFzaGVldC4gSW4gZmFjdCBJIGNvdWxkbid0CitnZXQgbWFudWFsIG1vZGUgdG8gd29yayBhdCBhbGwhIEJlIGF3YXJlIHRoYXQgYXV0b21hdGljIG1vZGUgaGFzbid0IGJlZW4KK3Rlc3RlZCB2ZXJ5IHdlbGwgKGR1ZSB0byB0aGUgZmFjdCB0aGF0IG15IEVQSUEgTTEwMDAwIGRvZXNuJ3QgaGF2ZSB0aGUgZmFucworY29ubmVjdGVkIHRvIHRoZSBQV00gb3V0cHV0cyBvZiB0aGUgVlQxMjExIDotKCkuCisKK1RoZSBmb2xsb3dpbmcgdGFibGUgc2hvd3MgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSB2dDEyMTEgaW5wdXRzIGFuZCB0aGUKK3N5c2ZzIG5vZGVzLgorCitTZW5zb3IgICAgICAgICAgVm9sdGFnZSBNb2RlICAgVGVtcCBNb2RlICAgRGVmYXVsdCBVc2UgKGZyb20gdGhlIGRhdGFzaGVldCkKKy0tLS0tLSAgICAgICAgICAtLS0tLS0tLS0tLS0gICAtLS0tLS0tLS0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUmVhZGluZyAxICAgICAgICAgICAgICAgICAgICAgIHRlbXAxICAgICAgIEludGVsIHRoZXJtYWwgZGlvZGUKK1JlYWRpbmcgMyAgICAgICAgICAgICAgICAgICAgICB0ZW1wMiAgICAgICBJbnRlcm5hbCB0aGVybWFsIGRpb2RlCitVQ0gxL1JlYWRpbmcyICAgaW4wICAgICAgICAgICAgdGVtcDMgICAgICAgTlRDIHR5cGUgdGhlcm1pc3RvcgorVUNIMiAgICAgICAgICAgIGluMSAgICAgICAgICAgIHRlbXA0ICAgICAgICsyLjVWCitVQ0gzICAgICAgICAgICAgaW4yICAgICAgICAgICAgdGVtcDUgICAgICAgVmNjUCAocHJvY2Vzc29yIGNvcmUpCitVQ0g0ICAgICAgICAgICAgaW4zICAgICAgICAgICAgdGVtcDYgICAgICAgKzVWCitVQ0g1ICAgICAgICAgICAgaW40ICAgICAgICAgICAgdGVtcDcgICAgICAgKzEyVgorKzMuM1YgICAgICAgICAgIGluNSAgICAgICAgICAgICAgICAgICAgICAgIEludGVybmFsIFZDQyAoKzMuM1YpCisKKworVm9sdGFnZSBNb25pdG9yaW5nCistLS0tLS0tLS0tLS0tLS0tLS0KKworVm9sdGFnZXMgYXJlIHNhbXBsZWQgYnkgYW4gOC1iaXQgQURDIHdpdGggYSBMU0Igb2YgfjEwbVYuIFRoZSBzdXBwb3J0ZWQgaW5wdXQKK3JhbmdlIGlzIHRodXMgZnJvbSAwIHRvIDIuNjBWLiBWb2x0YWdlIHZhbHVlcyBvdXRzaWRlIG9mIHRoaXMgcmFuZ2UgbmVlZAorZXh0ZXJuYWwgc2NhbGluZyByZXNpc3RvcnMuIFRoaXMgZXh0ZXJuYWwgc2NhbGluZyBuZWVkcyB0byBiZSBjb21wZW5zYXRlZCBmb3IKK3ZpYSBjb21wdXRlIGxpbmVzIGluIHNlbnNvcnMuY29uZiwgbGlrZToKKworY29tcHV0ZSBpbnggQCooMStSMS9SMiksIEAvKDErUjEvUjIpCisKK1RoZSBib2FyZCBsZXZlbCBzY2FsaW5nIHJlc2lzdG9ycyBhY2NvcmRpbmcgdG8gVklBJ3MgcmVjb21tZW5kYXRpb24gYXJlIGFzCitmb2xsb3dzLiBBbmQgdGhpcyBpcyBvZiBjb3Vyc2UgdG90YWxseSBkZXBlbmRlbnQgb24gdGhlIGFjdHVhbCBib2FyZAoraW1wbGVtZW50YXRpb24gOi0pIFlvdSB3aWxsIGhhdmUgdG8gZmluZCBkb2N1bWVudGF0aW9uIGZvciB5b3VyIG93bgorbW90aGVyYm9hcmQgYW5kIGVkaXQgc2Vuc29ycy5jb25mIGFjY29yZGluZ2x5LgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cGVjdGVkCitWb2x0YWdlICAgICAgIFIxICAgICBSMiAgICAgRGl2aWRlciAgIFJhdyBWYWx1ZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysyLjVWICAgICAgICAgMksgICAgIDEwSyAgICAxLjIgICAgICAgMjA4MyBtVgorVmNjUCAgICAgICAgICAtLS0gICAgLS0tICAgIDEuMCAgICAgICAxNDAwIG1WICgxKQorKzVWICAgICAgICAgICAxNEsgICAgMTBLICAgIDIuNCAgICAgICAyMDgzIG1WCisrMTJWICAgICAgICAgIDQ3SyAgICAxMEsgICAgNS43ICAgICAgIDIxMDUgbVYKKyszLjNWIChpbnQpICAgMksgICAgIDMuNEsgICAxLjU4OCAgICAgMzMwMCBtViAoMikKKyszLjNWIChleHQpICAgNi44SyAgIDEwSyAgICAxLjY4ICAgICAgMTk2NCBtVgorCisoMSkgRGVwZW5kaW5nIG9uIHRoZSBDUFUgKDEuNFYgaXMgZm9yIGEgVklBIEMzIE5laGVtaWFoKS4KKygyKSBSMSBhbmQgUjIgZm9yIDMuM1YgKGludCkgYXJlIGludGVybmFsIHRvIHRoZSBWVDEyMTEgY2hpcCBhbmQgdGhlIGRyaXZlcgorICAgIHBlcmZvcm1zIHRoZSBzY2FsaW5nIGFuZCByZXR1cm5zIHRoZSBwcm9wZXJseSBzY2FsZWQgdm9sdGFnZSB2YWx1ZS4KKworRWFjaCBtZWFzdXJlZCB2b2x0YWdlIGhhcyBhbiBhc3NvY2lhdGVkIGxvdyBhbmQgaGlnaCBsaW1pdCB3aGljaCB0cmlnZ2VycyBhbgorYWxhcm0gd2hlbiBjcm9zc2VkLgorCisKK1RlbXBlcmF0dXJlIE1vbml0b3JpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGVtcGVyYXR1cmVzIGFyZSByZXBvcnRlZCBpbiBtaWxsaWRlZ3JlZSBDZWxzaXVzLiBFYWNoIG1lYXN1cmVkIHRlbXBlcmF0dXJlCitoYXMgYSBoaWdoIGxpbWl0IHdoaWNoIHRyaWdnZXJzIGFuIGFsYXJtIGlmIGNyb3NzZWQuIFRoZXJlIGlzIGFuIGFzc29jaWF0ZWQKK2h5c3RlcmVzaXMgdmFsdWUgd2l0aCBlYWNoIHRlbXBlcmF0dXJlIGJlbG93IHdoaWNoIHRoZSB0ZW1wZXJhdHVyZSBoYXMgdG8gZHJvcAorYmVmb3JlIHRoZSBhbGFybSBpcyBjbGVhcmVkICh0aGlzIGlzIG9ubHkgdHJ1ZSBmb3IgaW50ZXJydXB0IG1vZGUgMCkuIFRoZQoraW50ZXJydXB0IG1vZGUgY2FuIGJlIGZvcmNlZCB0byAwIGluIGNhc2UgdGhlIEJJT1MgZG9lc24ndCBkbyBpdAorYXV0b21hdGljYWxseS4gU2VlIHRoZSAnTW9kdWxlIFBhcmFtZXRlcnMnIHNlY3Rpb24gZm9yIGRldGFpbHMuCisKK0FsbCB0ZW1wZXJhdHVyZSBjaGFubmVscyBleGNlcHQgdGVtcDIgYXJlIGV4dGVybmFsLiBUZW1wMiBpcyB0aGUgVlQxMjExCitpbnRlcm5hbCB0aGVybWFsIGRpb2RlIGFuZCB0aGUgZHJpdmVyIGRvZXMgYWxsIHRoZSBzY2FsaW5nIGZvciB0ZW1wMiBhbmQKK3JldHVybnMgdGhlIHRlbXBlcmF0dXJlIGluIG1pbGxpZGVncmVlIENlbHNpdXMuIEZvciB0aGUgZXh0ZXJuYWwgY2hhbm5lbHMKK3RlbXAxIGFuZCB0ZW1wMy10ZW1wNywgc2NhbGluZyBkZXBlbmRzIG9uIHRoZSBib2FyZCBpbXBsZW1lbnRhdGlvbiBhbmQgbmVlZHMKK3RvIGJlIHBlcmZvcm1lZCBpbiB1c2Vyc3BhY2UgdmlhIHNlbnNvcnMuY29uZi4KKworVGVtcDEgaXMgYW4gSW50ZWwtdHlwZSB0aGVybWFsIGRpb2RlIHdoaWNoIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgZm9ybXVsYSB0bworY29udmVydCBiZXR3ZWVuIHN5c2ZzIHJlYWRpbmdzIGFuZCByZWFsIHRlbXBlcmF0dXJlczoKKworY29tcHV0ZSB0ZW1wMSAoQC1PZmZzZXQpL0dhaW4sIChAKkdhaW4pK09mZnNldAorCitBY2NvcmRpbmcgdG8gdGhlIFZJQSBWVDEyMTEgQklPUyBwb3J0aW5nIGd1aWRlLCB0aGUgZm9sbG93aW5nIGdhaW4gYW5kIG9mZnNldAordmFsdWVzIHNob3VsZCBiZSB1c2VkOgorCitEaW9kZSBUeXBlICAgICAgT2Zmc2V0ICAgR2FpbgorLS0tLS0tLS0tLSAgICAgIC0tLS0tLSAgIC0tLS0KK0ludGVsIENQVSAgICAgICA4OC42MzggICAwLjk1MjgKKyAgICAgICAgICAgICAgICA2NS4wMDAgICAwLjk2ODYgICAqKQorVklBIEMzIEV6cmEgICAgIDgzLjg2OSAgIDAuOTUyOAorVklBIEMzIEV6cmEtVCAgIDczLjg2OSAgIDAuOTUyOAorCisqKSBUaGlzIGlzIHRoZSBmb3JtdWxhIGZyb20gdGhlIGxtX3NlbnNvcnMgMi4xMC4wIHNlbnNvcnMuY29uZiBmaWxlLiBJIGRvbid0Citrbm93IHdoZXJlIGl0IGNvbWVzIGZyb20gb3IgaG93IGl0IHdhcyBkZXJpdmVkLCBpdCdzIGp1c3QgbGlzdGVkIGhlcmUgZm9yCitjb21wbGV0ZW5lc3MuCisKK1RlbXAzLXRlbXA3IHN1cHBvcnQgTlRDIHRoZXJtaXN0b3JzLiBGb3IgdGhlc2UgY2hhbm5lbHMsIHRoZSBkcml2ZXIgcmV0dXJucwordGhlIHZvbHRhZ2VzIGFzIHNlZW4gYXQgdGhlIGluZGl2aWR1YWwgcGlucyBvZiBVQ0gxLVVDSDUuIFRoZSB2b2x0YWdlIGF0IHRoZQorcGluIChWcGluKSBpcyBmb3JtZWQgYnkgYSB2b2x0YWdlIGRpdmlkZXIgbWFkZSBvZiB0aGUgdGhlcm1pc3RvciAoUnRoKSBhbmQgYQorc2NhbGluZyByZXNpc3RvciAoUnMpOgorCitWcGluID0gMjIwMCAqIFJ0aCAvIChScyArIFJ0aCkgICAoMjIwMCBpcyB0aGUgQURDIG1heCBsaW1pdCBvZiAyMjAwIG1WKQorCitUaGUgZXF1YXRpb24gZm9yIHRoZSB0aGVybWlzdG9yIGlzIGFzIGZvbGxvd3MgKGdvb2dsZSBpdCBpZiB5b3Ugd2FudCB0byBrbm93Cittb3JlIGFib3V0IGl0KToKKworUnRoID0gUm8gKiBleHAoQiAqICgxIC8gVCAtIDEgLyBUbykpICAgKFRvIGlzIDI5OC4xNUsgKDI1QykgYW5kIFJvIGlzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbWluYWwgcmVzaXN0YW5jZSBhdCAyNUMpCisKK01pbmdsaW5nIHRoZSBhYm92ZSB0d28gZXF1YXRpb25zIGFuZCBhc3N1bWluZyBScyA9IFJvIGFuZCBCID0gMzQzNSB5aWVsZHMgdGhlCitmb2xsb3dpbmcgZm9ybXVsYSBmb3Igc2Vuc29ycy5jb25mOgorCitjb21wdXRlIHRlbXB4IDEgLyAoMSAvIDI5OC4xNSAtIChgICgyMjAwIC8gQCAtIDEpKSAvIDM0MzUpIC0gMjczLjE1LAorICAgICAgICAgICAgICAyMjAwIC8gKDEgKyAoXiAoMzQzNSAvIDI5OC4xNSAtIDM0MzUgLyAoMjczLjE1ICsgQCkpKSkKKworCitGYW4gU3BlZWQgQ29udHJvbAorLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIFZUMTIxMSBwcm92aWRlcyAyIHByb2dyYW1tYWJsZSBQV00gb3V0cHV0cyB0byBjb250cm9sIHRoZSBzcGVlZHMgb2YgMgorZmFucy4gV3JpdGluZyBhIDIgdG8gYW55IG9mIHRoZSB0d28gcHdtWzEtMl1fZW5hYmxlIHN5c2ZzIG5vZGVzIHdpbGwgcHV0IHRoZQorUFdNIGNvbnRyb2xsZXIgaW4gYXV0b21hdGljIG1vZGUuIFRoZXJlIGlzIG9ubHkgYSBzaW5nbGUgY29udHJvbGxlciB0aGF0Citjb250cm9scyBib3RoIFBXTSBvdXRwdXRzIGJ1dCBlYWNoIFBXTSBvdXRwdXQgY2FuIGJlIGluZGl2aWR1YWxseSBlbmFibGVkIGFuZAorZGlzYWJsZWQuCisKK0VhY2ggUFdNIGhhcyA0IGFzc29jaWF0ZWQgZGlzdGluY3Qgb3V0cHV0IGR1dHktY3ljbGVzOiBmdWxsLCBoaWdoLCBsb3cgYW5kCitvZmYuIEZ1bGwgYW5kIG9mZiBhcmUgaW50ZXJuYWxseSBoYXJkLXdpcmVkIHRvIDI1NSAoMTAwJSkgYW5kIDAgKDAlKSwKK3Jlc3BlY3RpdmVseS4gSGlnaCBhbmQgbG93IGNhbiBiZSBwcm9ncmFtbWVkIHZpYQorcHdtWzEtMl1fYXV0b19wb2ludFsyLTNdX3B3bS4gRWFjaCBQV00gb3V0cHV0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYQorZGlmZmVyZW50IHRoZXJtYWwgaW5wdXQgYnV0IC0gYW5kIGhlcmUncyB0aGUgd2VpcmQgcGFydCAtIG9ubHkgb25lIHNldCBvZgordGhlcm1hbCB0aHJlc2hvbGRzIGV4aXN0IHRoYXQgY29udHJvbHMgYm90aCBQV01zIG91dHB1dCBkdXR5LWN5Y2xlcy4gVGhlCit0aGVybWFsIHRocmVzaG9sZHMgYXJlIGFjY2Vzc2libGUgdmlhIHB3bVsxLTJdX2F1dG9fcG9pbnRbMS00XV90ZW1wLiBOb3RlCit0aGF0IGV2ZW4gdGhvdWdoIHRoZXJlIGFyZSAyIHNldHMgb2YgNCBhdXRvIHBvaW50cyBlYWNoLCB0aGV5IG1hcCB0byB0aGUgc2FtZQorcmVnaXN0ZXJzIGluIHRoZSBWVDEyMTEgYW5kIHByb2dyYW1taW5nIG9uZSBzZXQgaXMgc3VmZmljaWVudCAoYWN0dWFsbHkgb25seQordGhlIGZpcnN0IHNldCBwd20xX2F1dG9fcG9pbnRbMS00XV90ZW1wIGlzIHdyaXRhYmxlLCB0aGUgc2Vjb25kIHNldCBpcworcmVhZC1vbmx5KS4KKworUFdNIEF1dG8gUG9pbnQgICAgICAgICAgICAgUFdNIE91dHB1dCBEdXR5LUN5Y2xlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3B3bVsxLTJdX2F1dG9fcG9pbnQ0X3B3bSAgIGZ1bGwgc3BlZWQgZHV0eS1jeWNsZSAoaGFyZC13aXJlZCB0byAyNTUpCitwd21bMS0yXV9hdXRvX3BvaW50M19wd20gICBoaWdoIHNwZWVkIGR1dHktY3ljbGUKK3B3bVsxLTJdX2F1dG9fcG9pbnQyX3B3bSAgIGxvdyBzcGVlZCBkdXR5LWN5Y2xlCitwd21bMS0yXV9hdXRvX3BvaW50MV9wd20gICBvZmYgZHV0eS1jeWNsZSAoaGFyZC13aXJlZCB0byAwKQorCitUZW1wIEF1dG8gUG9pbnQgICAgICAgICAgICAgVGhlcm1hbCBUaHJlc2hvbGQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorcHdtWzEtMl1fYXV0b19wb2ludDRfdGVtcCAgIGZ1bGwgc3BlZWQgdGVtcAorcHdtWzEtMl1fYXV0b19wb2ludDNfdGVtcCAgIGhpZ2ggc3BlZWQgdGVtcAorcHdtWzEtMl1fYXV0b19wb2ludDJfdGVtcCAgIGxvdyBzcGVlZCB0ZW1wCitwd21bMS0yXV9hdXRvX3BvaW50MV90ZW1wICAgb2ZmIHRlbXAKKworTG9uZyBzdG9yeSBzaG9ydCwgdGhlIGNvbnRyb2xsZXIgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIGFsZ29yaXRobSB0byBzZXQgdGhlCitQV00gb3V0cHV0IGR1dHktY3ljbGUgYmFzZWQgb24gdGhlIGlucHV0IHRlbXBlcmF0dXJlOgorCitUaGVybWFsIFRocmVzaG9sZCAgICAgICAgICAgICBPdXRwdXQgRHV0eS1DeWNsZQorICAgICAgICAgICAgICAgICAgICAoUmlzaW5nIFRlbXApICAgICAgICAgICAoRmFsbGluZyBUZW1wKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICBmdWxsIHNwZWVkIGR1dHktY3ljbGUgICBmdWxsIHNwZWVkIGR1dHktY3ljbGUKK2Z1bGwgc3BlZWQgdGVtcAorICAgICAgICAgICAgICAgICAgICBoaWdoIHNwZWVkIGR1dHktY3ljbGUgICBmdWxsIHNwZWVkIGR1dHktY3ljbGUKK2hpZ2ggc3BlZWQgdGVtcAorICAgICAgICAgICAgICAgICAgICBsb3cgc3BlZWQgZHV0eS1jeWNsZSAgICBoaWdoIHNwZWVkIGR1dHktY3ljbGUKK2xvdyBzcGVlZCB0ZW1wCisgICAgICAgICAgICAgICAgICAgIG9mZiBkdXR5LWN5Y2xlICAgICAgICAgIGxvdyBzcGVlZCBkdXR5LWN5Y2xlCitvZmYgdGVtcApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi93ODM2MjdlaGYgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3c4MzYyN2VoZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzVjNDJhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi93ODM2MjdlaGYKQEAgLTAsMCArMSwxOTAgQEAKK0tlcm5lbCBkcml2ZXIgdzgzNjI3ZWhmCis9PT09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogV2luYm9uZCBXODM2MjdFSEYvRUhHIChJU0EgYWNjZXNzIE9OTFkpCisgICAgUHJlZml4OiAndzgzNjI3ZWhmJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJU0EgYWRkcmVzcyByZXRyaWV2ZWQgZnJvbSBTdXBlciBJL08gcmVnaXN0ZXJzCisgICAgRGF0YXNoZWV0OiBub3QgYXZhaWxhYmxlCisgICogV2luYm9uZCBXODM2MjdESEcKKyAgICBQcmVmaXg6ICd3ODM2MjdkaGcnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IElTQSBhZGRyZXNzIHJldHJpZXZlZCBmcm9tIFN1cGVyIEkvTyByZWdpc3RlcnMKKyAgICBEYXRhc2hlZXQ6IG5vdCBhdmFpbGFibGUKKyAgKiBXaW5ib25kIFc4MzYyN0RIRy1QCisgICAgUHJlZml4OiAndzgzNjI3ZGhnJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJU0EgYWRkcmVzcyByZXRyaWV2ZWQgZnJvbSBTdXBlciBJL08gcmVnaXN0ZXJzCisgICAgRGF0YXNoZWV0OiBub3QgYXZhaWxhYmxlCisgICogV2luYm9uZCBXODM2MjdVSEcKKyAgICBQcmVmaXg6ICd3ODM2Mjd1aGcnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IElTQSBhZGRyZXNzIHJldHJpZXZlZCBmcm9tIFN1cGVyIEkvTyByZWdpc3RlcnMKKyAgICBEYXRhc2hlZXQ6IGF2YWlsYWJsZSBmcm9tIHd3dy5udXZvdG9uLmNvbQorICAqIFdpbmJvbmQgVzgzNjY3SEcKKyAgICBQcmVmaXg6ICd3ODM2NjdoZycKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSVNBIGFkZHJlc3MgcmV0cmlldmVkIGZyb20gU3VwZXIgSS9PIHJlZ2lzdGVycworICAgIERhdGFzaGVldDogbm90IGF2YWlsYWJsZQorICAqIFdpbmJvbmQgVzgzNjY3SEctQgorICAgIFByZWZpeDogJ3c4MzY2N2hnJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJU0EgYWRkcmVzcyByZXRyaWV2ZWQgZnJvbSBTdXBlciBJL08gcmVnaXN0ZXJzCisgICAgRGF0YXNoZWV0OiBBdmFpbGFibGUgZnJvbSBOdXZvdG9uIHVwb24gcmVxdWVzdAorICAqIE51dm90b24gTkNUNjc3NUYvVzgzNjY3SEctSQorICAgIFByZWZpeDogJ25jdDY3NzUnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IElTQSBhZGRyZXNzIHJldHJpZXZlZCBmcm9tIFN1cGVyIEkvTyByZWdpc3RlcnMKKyAgICBEYXRhc2hlZXQ6IEF2YWlsYWJsZSBmcm9tIE51dm90b24gdXBvbiByZXF1ZXN0CisgICogTnV2b3RvbiBOQ1Q2Nzc2RgorICAgIFByZWZpeDogJ25jdDY3NzYnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IElTQSBhZGRyZXNzIHJldHJpZXZlZCBmcm9tIFN1cGVyIEkvTyByZWdpc3RlcnMKKyAgICBEYXRhc2hlZXQ6IEF2YWlsYWJsZSBmcm9tIE51dm90b24gdXBvbiByZXF1ZXN0CisKK0F1dGhvcnM6CisgICAgICAgIEplYW4gRGVsdmFyZSA8amRlbHZhcmVAc3VzZS5kZT4KKyAgICAgICAgWXVhbiBNdSAoV2luYm9uZCkKKyAgICAgICAgUnVkb2xmIE1hcmVrIDxyLm1hcmVrQGFzc2VtYmxlci5jej4KKyAgICAgICAgRGF2aWQgSHViYmFyZCA8ZGF2aWQuYy5odWJiYXJkQGdtYWlsLmNvbT4KKyAgICAgICAgR29uZyBKdW4gPEpHb25nQG51dm90b24uY29tPgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgaW1wbGVtZW50cyBzdXBwb3J0IGZvciB0aGUgV2luYm9uZCBXODM2MjdFSEYsIFc4MzYyN0VIRywKK1c4MzYyN0RIRywgVzgzNjI3REhHLVAsIFc4MzYyN1VIRywgVzgzNjY3SEcsIFc4MzY2N0hHLUIsIFc4MzY2N0hHLUkKKyhOQ1Q2Nzc1RiksIGFuZCBOQ1Q2Nzc2RiBzdXBlciBJL08gY2hpcHMuIFdlIHdpbGwgcmVmZXIgdG8gdGhlbSBjb2xsZWN0aXZlbHkKK2FzIFdpbmJvbmQgY2hpcHMuCisKK1RoZSBjaGlwcyBpbXBsZW1lbnQgMyB0byA0IHRlbXBlcmF0dXJlIHNlbnNvcnMgKDkgZm9yIE5DVDY3NzVGIGFuZCBOQ1Q2Nzc2RiksCisyIHRvIDUgZmFuIHJvdGF0aW9uIHNwZWVkIHNlbnNvcnMsIDggdG8gMTAgYW5hbG9nIHZvbHRhZ2Ugc2Vuc29ycywgb25lIFZJRAorKGV4Y2VwdCBmb3IgNjI3VUhHKSwgYWxhcm1zIHdpdGggYmVlcCB3YXJuaW5ncyAoY29udHJvbCB1bmltcGxlbWVudGVkKSwKK2FuZCBzb21lIGF1dG9tYXRpYyBmYW4gcmVndWxhdGlvbiBzdHJhdGVnaWVzIChwbHVzIG1hbnVhbCBmYW4gY29udHJvbCBtb2RlKS4KKworVGhlIHRlbXBlcmF0dXJlIHNlbnNvciBzb3VyY2VzIG9uIFc4MjY3N0hHLUIsIE5DVDY3NzVGLCBhbmQgTkNUNjc3NkYgYXJlCitjb25maWd1cmFibGUuIHRlbXA0IGFuZCBoaWdoZXIgYXR0cmlidXRlcyBhcmUgb25seSByZXBvcnRlZCBpZiBpdHMgdGVtcGVyYXR1cmUKK3NvdXJjZSBkaWZmZXJzIGZyb20gdGhlIHRlbXBlcmF0dXJlIHNvdXJjZXMgb2YgdGhlIGFscmVhZHkgcmVwb3J0ZWQgdGVtcGVyYXR1cmUKK3NlbnNvcnMuIFRoZSBjb25maWd1cmVkIHNvdXJjZSBmb3IgZWFjaCBvZiB0aGUgdGVtcGVyYXR1cmUgc2Vuc29ycyBpcyBwcm92aWRlZAoraW4gdGVtcFhfbGFiZWwuCisKK1RlbXBlcmF0dXJlcyBhcmUgbWVhc3VyZWQgaW4gZGVncmVlcyBDZWxzaXVzIGFuZCBtZWFzdXJlbWVudCByZXNvbHV0aW9uIGlzIDEKK2RlZ0MgZm9yIHRlbXAxIGFuZCBhbmQgMC41IGRlZ0MgZm9yIHRlbXAyIGFuZCB0ZW1wMy4gRm9yIHRlbXA0IGFuZCBoaWdoZXIsCityZXNvbHV0aW9uIGlzIDEgZGVnQyBmb3IgVzgzNjY3SEctQiBhbmQgMC4wIGRlZ0MgZm9yIE5DVDY3NzVGIGFuZCBOQ1Q2Nzc2Ri4KK0FuIGFsYXJtIGlzIHRyaWdnZXJlZCB3aGVuIHRoZSB0ZW1wZXJhdHVyZSBnZXRzIGhpZ2hlciB0aGFuIGhpZ2ggbGltaXQ7CitpdCBzdGF5cyBvbiB1bnRpbCB0aGUgdGVtcGVyYXR1cmUgZmFsbHMgYmVsb3cgdGhlIGh5c3RlcmVzaXMgdmFsdWUuCitBbGFybXMgYXJlIG9ubHkgc3VwcG9ydGVkIGZvciB0ZW1wMSwgdGVtcDIsIGFuZCB0ZW1wMy4KKworRmFuIHJvdGF0aW9uIHNwZWVkcyBhcmUgcmVwb3J0ZWQgaW4gUlBNIChyb3RhdGlvbnMgcGVyIG1pbnV0ZSkuIEFuIGFsYXJtIGlzCit0cmlnZ2VyZWQgaWYgdGhlIHJvdGF0aW9uIHNwZWVkIGhhcyBkcm9wcGVkIGJlbG93IGEgcHJvZ3JhbW1hYmxlIGxpbWl0LiBGYW4KK3JlYWRpbmdzIGNhbiBiZSBkaXZpZGVkIGJ5IGEgcHJvZ3JhbW1hYmxlIGRpdmlkZXIgKDEsIDIsIDQsIDgsIDE2LCAzMiwgNjQgb3IKKzEyOCkgdG8gZ2l2ZSB0aGUgcmVhZGluZ3MgbW9yZSByYW5nZSBvciBhY2N1cmFjeS4gVGhlIGRyaXZlciBzZXRzIHRoZSBtb3N0CitzdWl0YWJsZSBmYW4gZGl2aXNvciBpdHNlbGYuIFNvbWUgZmFucyBtaWdodCBub3QgYmUgcHJlc2VudCBiZWNhdXNlIHRoZXkKK3NoYXJlIHBpbnMgd2l0aCBvdGhlciBmdW5jdGlvbnMuCisKK1ZvbHRhZ2Ugc2Vuc29ycyAoYWxzbyBrbm93biBhcyBJTiBzZW5zb3JzKSByZXBvcnQgdGhlaXIgdmFsdWVzIGluIG1pbGxpdm9sdHMuCitBbiBhbGFybSBpcyB0cmlnZ2VyZWQgaWYgdGhlIHZvbHRhZ2UgaGFzIGNyb3NzZWQgYSBwcm9ncmFtbWFibGUgbWluaW11bQorb3IgbWF4aW11bSBsaW1pdC4KKworVGhlIGRyaXZlciBzdXBwb3J0cyBhdXRvbWF0aWMgZmFuIGNvbnRyb2wgbW9kZSBrbm93biBhcyBUaGVybWFsIENydWlzZS4KK0luIHRoaXMgbW9kZSwgdGhlIGNoaXAgYXR0ZW1wdHMgdG8ga2VlcCB0aGUgbWVhc3VyZWQgdGVtcGVyYXR1cmUgaW4gYQorcHJlZGVmaW5lZCB0ZW1wZXJhdHVyZSByYW5nZS4gSWYgdGhlIHRlbXBlcmF0dXJlIGdvZXMgb3V0IG9mIHJhbmdlLCBmYW4KK2lzIGRyaXZlbiBzbG93ZXIvZmFzdGVyIHRvIHJlYWNoIHRoZSBwcmVkZWZpbmVkIHJhbmdlIGFnYWluLgorCitUaGUgbW9kZSB3b3JrcyBmb3IgZmFuMS1mYW40LiBNYXBwaW5nIG9mIHRlbXBlcmF0dXJlcyB0byBwd20gb3V0cHV0cyBpcyBhcworZm9sbG93czoKKwordGVtcDEgLT4gcHdtMQordGVtcDIgLT4gcHdtMgordGVtcDMgLT4gcHdtMyAobm90IG9uIDYyN1VIRykKK3Byb2cgIC0+IHB3bTQgKG5vdCBvbiA2NjdIRyBhbmQgNjY3SEctQjsgdGhlIHByb2dyYW1tYWJsZSBzZXR0aW5nIGlzIG5vdAorCSAgICAgICBzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlcikKKworL3N5cyBmaWxlcworLS0tLS0tLS0tLQorCituYW1lIC0gdGhpcyBpcyBhIHN0YW5kYXJkIGh3bW9uIGRldmljZSBlbnRyeSwgaXQgY29udGFpbnMgdGhlIG5hbWUgb2YKKyAgICAgICB0aGUgZGV2aWNlIChzZWUgdGhlIHByZWZpeCBpbiB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgZGV2aWNlcyBhdAorICAgICAgIHRoZSB0b3Agb2YgdGhpcyBmaWxlKQorCitwd21bMS00XSAtIHRoaXMgZmlsZSBzdG9yZXMgUFdNIGR1dHkgY3ljbGUgb3IgREMgdmFsdWUgKGZhbiBzcGVlZCkgaW4gcmFuZ2U6CisJICAgMCAoc3RvcCkgdG8gMjU1IChmdWxsKQorCitwd21bMS00XV9lbmFibGUgLSB0aGlzIGZpbGUgY29udHJvbHMgbW9kZSBvZiBmYW4vdGVtcGVyYXR1cmUgY29udHJvbDoKKwkqIDEgTWFudWFsIG1vZGUsIHdyaXRlIHRvIHB3bSBmaWxlIGFueSB2YWx1ZSAwLTI1NSAoZnVsbCBzcGVlZCkKKwkqIDIgIlRoZXJtYWwgQ3J1aXNlIiBtb2RlCisJKiAzICJGYW4gU3BlZWQgQ3J1aXNlIiBtb2RlCisJKiA0ICJTbWFydCBGYW4gSUlJIiBtb2RlCisJKiA1ICJTbWFydCBGYW4gSVYiIG1vZGUKKworCVNtYXJ0RmFuIElJSSBtb2RlIGlzIG5vdCBzdXBwb3J0ZWQgb24gTkNUNjc3NkYuCisKKwlTbWFydEZhbiBJViBtb2RlIGlzIGNvbmZpZ3VyYWJsZSBvbmx5IGlmIGl0IHdhcyBjb25maWd1cmVkIGF0IHN5c3RlbQorCXN0YXJ0dXAsIGFuZCBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgVzgzNjc3SEctQiwgTkNUNjc3NUYsIGFuZCBOQ1Q2Nzc2Ri4KKwlTbWFydEZhbiBJViBvcGVyYXRpb25hbCBwYXJhbWV0ZXJzIGNhbiBub3QgYmUgY29uZmlndXJlZCBhdCB0aGlzIHRpbWUsCisJYW5kIHRoZSB2YXJpb3VzIHB3bSBhdHRyaWJ1dGVzIGFyZSBub3QgdXNlZCBpbiBTbWFydEZhbiBJViBtb2RlLgorCVRoZSBhdHRyaWJ1dGVzIGNhbiBiZSB3cml0dGVuIHRvLCB3aGljaCBpcyB1c2VmdWwgaWYgeW91IHBsYW4gdG8KKwljb25maWd1cmUgdGhlIHN5c3RlbSBmb3IgYSBkaWZmZXJlbnQgcHdtIG1vZGUuIEhvd2V2ZXIsIHRoZSBpbmZvcm1hdGlvbgorCXJldHVybmVkIHdoZW4gcmVhZGluZyBwd20gYXR0cmlidXRlcyBpcyB1bnJlbGF0ZWQgdG8gU21hcnRGYW4gSVYKKwlvcGVyYXRpb24uCisKK3B3bVsxLTRdX21vZGUgLSBjb250cm9scyBpZiBvdXRwdXQgaXMgUFdNIG9yIERDIGxldmVsCisgICAgICAgICogMCBEQyBvdXRwdXQgKDAgLSAxMnYpCisgICAgICAgICogMSBQV00gb3V0cHV0CisKK1RoZXJtYWwgQ3J1aXNlIG1vZGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgdGhlIHRlbXBlcmF0dXJlIGlzIGluIHRoZSByYW5nZSBkZWZpbmVkIGJ5OgorCitwd21bMS00XV90YXJnZXQgICAgLSBzZXQgdGFyZ2V0IHRlbXBlcmF0dXJlLCB1bml0IG1pbGxpZGVncmVlIENlbHNpdXMKKwkJICAgICAocmFuZ2UgMCAtIDEyNzAwMCkKK3B3bVsxLTRdX3RvbGVyYW5jZSAtIHRvbGVyYW5jZSwgdW5pdCBtaWxsaWRlZ3JlZSBDZWxzaXVzIChyYW5nZSAwIC0gMTUwMDApCisKK3RoZXJlIGFyZSBubyBjaGFuZ2VzIHRvIGZhbiBzcGVlZC4gT25jZSB0aGUgdGVtcGVyYXR1cmUgbGVhdmVzIHRoZSBpbnRlcnZhbCwKK2ZhbiBzcGVlZCBpbmNyZWFzZXMgKHRlbXAgaXMgaGlnaGVyKSBvciBkZWNyZWFzZXMgaWYgbG93ZXIgdGhhbiBkZXNpcmVkLgorVGhlcmUgYXJlIGRlZmluZWQgc3RlcHMgYW5kIHRpbWVzLCBidXQgbm90IGV4cG9ydGVkIGJ5IHRoZSBkcml2ZXIgeWV0LgorCitwd21bMS00XV9taW5fb3V0cHV0IC0gbWluaW11bSBmYW4gc3BlZWQgKHJhbmdlIDEgLSAyNTUpLCB3aGVuIHRoZSB0ZW1wZXJhdHVyZQorICAgICAgICAgICAgICAgICAgICAgIGlzIGJlbG93IGRlZmluZWQgcmFuZ2UuCitwd21bMS00XV9zdG9wX3RpbWUgIC0gaG93IG1hbnkgbWlsbGlzZWNvbmRzIFttc10gbXVzdCBlbGFwc2UgdG8gc3dpdGNoCisgICAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZGluZyBmYW4gb2ZmLiAod2hlbiB0aGUgdGVtcGVyYXR1cmUgd2FzIGJlbG93CisgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCByYW5nZSkuCitwd21bMS00XV9zdGFydF9vdXRwdXQtbWluaW11bSBmYW4gc3BlZWQgKHJhbmdlIDEgLSAyNTUpIHdoZW4gc3Bpbm5pbmcgdXAKK3B3bVsxLTRdX3N0ZXBfb3V0cHV0LSByYXRlIG9mIGZhbiBzcGVlZCBjaGFuZ2UgKDEgLSAyNTUpCitwd21bMS00XV9zdG9wX291dHB1dC0gbWluaW11bSBmYW4gc3BlZWQgKHJhbmdlIDEgLSAyNTUpIHdoZW4gc3Bpbm5pbmcgZG93bgorcHdtWzEtNF1fbWF4X291dHB1dCAtIG1heGltdW0gZmFuIHNwZWVkIChyYW5nZSAxIC0gMjU1KSwgd2hlbiB0aGUgdGVtcGVyYXR1cmUKKyAgICAgICAgICAgICAgICAgICAgICBpcyBhYm92ZSBkZWZpbmVkIHJhbmdlLgorCitOb3RlOiBsYXN0IHNpeCBmdW5jdGlvbnMgYXJlIGluZmx1ZW5jZWQgYnkgb3RoZXIgY29udHJvbCBiaXRzLCBub3QgeWV0IGV4cG9ydGVkCisgICAgICBieSB0aGUgZHJpdmVyLCBzbyBhIGNoYW5nZSBtaWdodCBub3QgaGF2ZSBhbnkgZWZmZWN0LgorCitJbXBsZW1lbnRhdGlvbiBEZXRhaWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Z1dHVyZSBkcml2ZXIgZGV2ZWxvcG1lbnQgc2hvdWxkIGJlYXIgaW4gbWluZCB0aGF0IHRoZSBmb2xsb3dpbmcgcmVnaXN0ZXJzIGhhdmUKK2RpZmZlcmVudCBmdW5jdGlvbnMgb24gdGhlIDYyN0VIRiBhbmQgdGhlIDYyN0RIRy4gU29tZSByZWdpc3RlcnMgYWxzbyBoYXZlCitkaWZmZXJlbnQgcG93ZXItb24gZGVmYXVsdCB2YWx1ZXMsIGJ1dCBCSU9TIHNob3VsZCBhbHJlYWR5IGJlIGxvYWRpbmcKK2FwcHJvcHJpYXRlIGRlZmF1bHRzLiBOb3RlIHRoYXQgYmFuayBzZWxlY3Rpb24gbXVzdCBiZSBwZXJmb3JtZWQgYXMgaXMgY3VycmVudGx5Citkb25lIGluIHRoZSBkcml2ZXIgZm9yIGFsbCByZWdpc3RlciBhZGRyZXNzZXMuCisKKzB4NDk6ICBvbmx5IG9uIERIRywgc2VsZWN0cyB0ZW1wZXJhdHVyZSBzb3VyY2UgZm9yIEFVWCBmYW4sIENQVSBmYW4wCisweDRhOiAgbm90IGNvbXBsZXRlbHkgZG9jdW1lbnRlZCBmb3IgdGhlIEVIRiBhbmQgdGhlIERIRyBkb2N1bWVudGF0aW9uIGFzc2lnbnMKKyAgICAgICBkaWZmZXJlbnQgYmVoYXZpb3IgdG8gYml0cyA3IGFuZCA2LCBpbmNsdWRpbmcgZXh0ZW5kaW5nIHRoZSB0ZW1wZXJhdHVyZQorICAgICAgIGlucHV0IHNlbGVjdGlvbiB0byBTbWFydEZhbiBJLCBub3QganVzdCBTbWFydEZhbiBJSUkuIFRlc3Rpbmcgb24gdGhlIEVIRgorICAgICAgIHdpbGwgcmV2ZWFsIHdoZXRoZXIgdGhleSBhcmUgY29tcGF0aWJsZSBvciBub3QuCisKKzB4NTg6ICBDaGlwIElEOiAweGExPUVIRiAweGMxPURIRworMHg1ZTogIG9ubHkgb24gREhHLCBoYXMgYml0cyB0byBlbmFibGUgImN1cnJlbnQgbW9kZSIgdGVtcGVyYXR1cmUgZGV0ZWN0aW9uIGFuZAorICAgICAgIGNyaXRpY2FsIHRlbXBlcmF0dXJlIHByb3RlY3Rpb24KKzB4NDViOiBvbmx5IG9uIEVIRiwgYml0IDMsIHZpbjQgYWxhcm0gKEVIRiBzdXBwb3J0cyAxMCBpbnB1dHMsIG9ubHkgOSBvbiBESEcpCisweDU1Mjogb25seSBvbiBFSEYsIHZpbjQKKzB4NTU4OiBvbmx5IG9uIEVIRiwgdmluNCBoaWdoIGxpbWl0CisweDU1OTogb25seSBvbiBFSEYsIHZpbjQgbG93IGxpbWl0CisweDZiOiAgb25seSBvbiBESEcsIFNZUyBmYW4gY3JpdGljYWwgdGVtcGVyYXR1cmUKKzB4NmM6ICBvbmx5IG9uIERIRywgQ1BVIGZhbjAgY3JpdGljYWwgdGVtcGVyYXR1cmUKKzB4NmQ6ICBvbmx5IG9uIERIRywgQVVYIGZhbiBjcml0aWNhbCB0ZW1wZXJhdHVyZQorMHg2ZTogIG9ubHkgb24gREhHLCBDUFUgZmFuMSBjcml0aWNhbCB0ZW1wZXJhdHVyZQorCisweDUwLTB4NTUgYW5kIDB4NjUwLTB4NjU3IGFyZSBtYXJrZWQgIlRlc3QgUmVnaXN0ZXIiIGZvciB0aGUgRUhGLCBidXQgIlJlc2VydmVkCisgICAgICAgUmVnaXN0ZXIiIGZvciB0aGUgREhHCisKK1RoZSBESEcgYWxzbyBzdXBwb3J0cyBQRUNJLCB3aGVyZSB0aGUgREhHIHF1ZXJpZXMgSW50ZWwgQ1BVIHRlbXBlcmF0dXJlcywgYW5kCit0aGUgSUNIOCBzb3V0aGJyaWRnZSBnZXRzIHRoYXQgZGF0YSB2aWEgUEVDSSBmcm9tIHRoZSBESEcsIHNvIHRoYXQgdGhlCitzb3V0aGJyaWRnZSBkcml2ZXMgdGhlIGZhbnMuIEFuZCB0aGUgREhHIHN1cHBvcnRzIFNTVCwgYSBvbmUtd2lyZSBzZXJpYWwgYnVzLgorCitUaGUgREhHLVAgaGFzIGFuIGFkZGl0aW9uYWwgYXV0b21hdGljIGZhbiBzcGVlZCBjb250cm9sIG1vZGUgbmFtZWQgU21hcnQgRmFuCisoVE0pIElJSSsuIFRoaXMgbW9kZSBpcyBub3QgeWV0IHN1cHBvcnRlZCBieSB0aGUgZHJpdmVyLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi93ODM2MjdoZiBiL0RvY3VtZW50YXRpb24vaHdtb24vdzgzNjI3aGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQzMmUxMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vdzgzNjI3aGYKQEAgLTAsMCArMSwxMTUgQEAKK0tlcm5lbCBkcml2ZXIgdzgzNjI3aGYKKz09PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIFdpbmJvbmQgVzgzNjI3SEYgKElTQSBhY2Nlc3NlcyBPTkxZKQorICAgIFByZWZpeDogJ3c4MzYyN2hmJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJU0EgYWRkcmVzcyByZXRyaWV2ZWQgZnJvbSBTdXBlciBJL08gcmVnaXN0ZXJzCisgICogV2luYm9uZCBXODM2MjdUSEYKKyAgICBQcmVmaXg6ICd3ODM2Mjd0aGYnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IElTQSBhZGRyZXNzIHJldHJpZXZlZCBmcm9tIFN1cGVyIEkvTyByZWdpc3RlcnMKKyAgKiBXaW5ib25kIFc4MzY5N0hGCisgICAgUHJlZml4OiAndzgzNjk3aGYnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IElTQSBhZGRyZXNzIHJldHJpZXZlZCBmcm9tIFN1cGVyIEkvTyByZWdpc3RlcnMKKyAgKiBXaW5ib25kIFc4MzYzN0hGCisgICAgUHJlZml4OiAndzgzNjM3aGYnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IElTQSBhZGRyZXNzIHJldHJpZXZlZCBmcm9tIFN1cGVyIEkvTyByZWdpc3RlcnMKKyAgKiBXaW5ib25kIFc4MzY4N1RIRgorICAgIFByZWZpeDogJ3c4MzY4N3RoZicKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSVNBIGFkZHJlc3MgcmV0cmlldmVkIGZyb20gU3VwZXIgSS9PIHJlZ2lzdGVycworICAgIERhdGFzaGVldDogUHJvdmlkZWQgYnkgV2luYm9uZCBvbiByZXF1ZXN0KGh0dHA6Ly93d3cud2luYm9uZC5jb20vaHEvZW51KQorCitBdXRob3JzOgorICAgICAgICBGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+LAorICAgICAgICBQaGlsaXAgRWRlbGJyb2NrIDxwaGlsQG5ldHJvZWRnZS5jb20+LAorICAgICAgICBNYXJrIFN0dWRlYmFrZXIgPG1kc3h5ejEyM0B5YWhvby5jb20+LAorICAgICAgICBCZXJuaGFyZCBDLiBTY2hyZW5rIDxjbGVteUBjbGVteS5vcmc+CisKK01vZHVsZSBQYXJhbWV0ZXJzCistLS0tLS0tLS0tLS0tLS0tLQorCisqIGZvcmNlX2kyYzogaW50CisgIEluaXRpYWxpemUgdGhlIEkyQyBhZGRyZXNzIG9mIHRoZSBzZW5zb3JzCisqIGluaXQ6IGludAorICAoZGVmYXVsdCBpcyAxKQorICBVc2UgJ2luaXQ9MCcgdG8gYnlwYXNzIGluaXRpYWxpemluZyB0aGUgY2hpcC4KKyAgVHJ5IHRoaXMgaWYgeW91ciBjb21wdXRlciBjcmFzaGVzIHdoZW4geW91IGxvYWQgdGhlIG1vZHVsZS4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgSVNBIGFjY2Vzc2VzICpvbmx5KiBmb3IKK3RoZSBXaW5ib25kIFc4MzYyN0hGLCBXODM2MjdUSEYsIFc4MzY5N0hGIGFuZCBXODM2MzdIRiBTdXBlciBJL08gY2hpcHMuCitXZSB3aWxsIHJlZmVyIHRvIHRoZW0gY29sbGVjdGl2ZWx5IGFzIFdpbmJvbmQgY2hpcHMuCisKK1RoaXMgZHJpdmVyIHN1cHBvcnRzIElTQSBhY2Nlc3Nlcywgd2hpY2ggc2hvdWxkIGJlIG1vcmUgcmVsaWFibGUKK3RoYW4gaTJjIGFjY2Vzc2VzLiBBbHNvLCBmb3IgVHlhbiBib2FyZHMgd2hpY2ggY29udGFpbiBib3RoIGEKK1N1cGVyIEkvTyBjaGlwIGFuZCBhIHNlY29uZCBpMmMtb25seSBXaW5ib25kIGNoaXAgKG9mdGVuIGEgVzgzNzgyRCksCit1c2luZyB0aGlzIGRyaXZlciB3aWxsIGF2b2lkIGkyYyBhZGRyZXNzIGNvbmZsaWN0cyBhbmQgY29tcGxleAoraW5pdGlhbGl6YXRpb24gdGhhdCB3ZXJlIHJlcXVpcmVkIGluIHRoZSB3ODM3ODFkIGRyaXZlci4KKworSWYgeW91IHJlYWxseSB3YW50IGkyYyBhY2Nlc3NlcyBmb3IgdGhlc2UgU3VwZXIgSS9PIGNoaXBzLAordXNlIHRoZSB3ODM3ODFkIGRyaXZlci4gSG93ZXZlciB0aGlzIGlzIG5vdCB0aGUgcHJlZmVycmVkIG1ldGhvZAorbm93IHRoYXQgdGhpcyBJU0EgZHJpdmVyIGhhcyBiZWVuIGRldmVsb3BlZC4KKworVGhlIHc4MzYyN19IRl8gdXNlcyBwaW5zIDExMC0xMDYgYXMgVklEMC1WSUQ0LiBUaGUgdzgzNjI3X1RIRl8gdXNlcyB0aGUKK3NhbWUgcGlucyBhcyBHUElPWzA6NF0uIFRlY2huaWNhbGx5LCB0aGUgdzgzNjI3X1RIRl8gZG9lcyBub3Qgc3VwcG9ydCBhCitWSUQgcmVhZGluZy4gSG93ZXZlciB0aGUgdHdvIGNoaXBzIGhhdmUgdGhlIGlkZW50aWNhbCAxMjggcGluIHBhY2thZ2UuIFNvLAoraXQgaXMgcG9zc2libGUgb3IgZXZlbiBsaWtlbHkgZm9yIGEgdzgzNjI3dGhmIHRvIGhhdmUgdGhlIFZJRCBzaWduYWxzIHJvdXRlZAordG8gdGhlc2UgcGlucyBkZXNwaXRlIHRoZWlyIG5vdCBiZWluZyBsYWJlbGVkIGZvciB0aGF0IHB1cnBvc2UuIFRoZXJlZm9yZSwKK3RoZSB3ODM2Mjd0aGYgZHJpdmVyIGludGVycHJldHMgdGhlc2UgYXMgVklELiBJZiB0aGUgVklEIG9uIHlvdXIgYm9hcmQKK2RvZXNuJ3Qgd29yaywgZmlyc3Qgc2VlIGRvYy92aWQgaW4gdGhlIGxtX3NlbnNvcnMgcGFja2FnZVsxXS4gSWYgdGhhdCBzdGlsbAorZG9lc24ndCBoZWxwLCB5b3UgbWF5IGp1c3QgaWdub3JlIHRoZSBib2d1cyBWSUQgcmVhZGluZyB3aXRoIG5vIGhhcm0gZG9uZS4KKworRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gb24gdGhpcyBkcml2ZXIgc2VlIHRoZSB3ODM3ODFkIGRyaXZlciBkb2N1bWVudGF0aW9uLgorCitbMV0gaHR0cDovL3d3dy5sbS1zZW5zb3JzLm9yZy9icm93c2VyL2xtLXNlbnNvcnMvdHJ1bmsvZG9jL3ZpZAorCitGb3JjaW5nIHRoZSBhZGRyZXNzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBkcml2ZXIgdXNlZCB0byBoYXZlIGEgbW9kdWxlIHBhcmFtZXRlciBuYW1lZCBmb3JjZV9hZGRyLCB3aGljaCBjb3VsZAorYmUgdXNlZCB0byBmb3JjZSB0aGUgYmFzZSBJL08gYWRkcmVzcyBvZiB0aGUgaGFyZHdhcmUgbW9uaXRvcmluZyBibG9jay4KK1RoaXMgd2FzIG1lYW50IGFzIGEgd29ya2Fyb3VuZCBmb3IgbWFpbmJvYXJkcyB3aXRoIGEgYnJva2VuIEJJT1MuIFRoaXMKK21vZHVsZSBwYXJhbWV0ZXIgaXMgZ29uZSBmb3IgdGVjaG5pY2FsIHJlYXNvbnMuIElmIHlvdSBuZWVkIHRoaXMgZmVhdHVyZSwKK3lvdSBjYW4gb2J0YWluIHRoZSBzYW1lIHJlc3VsdCBieSB1c2luZyB0aGUgaXNhc2V0IHRvb2wgKHBhcnQgb2YKK2xtLXNlbnNvcnMpIGJlZm9yZSBsb2FkaW5nIHRoZSBkcml2ZXI6CisKKyMgRW50ZXIgdGhlIFN1cGVyIEkvTyBjb25maWcgc3BhY2UKK2lzYXNldCAteSAtZiAweDJlIDB4ODcKK2lzYXNldCAteSAtZiAweDJlIDB4ODcKKworIyBTZWxlY3QgdGhlIGh3bW9uIGxvZ2ljYWwgZGV2aWNlCitpc2FzZXQgLXkgMHgyZSAweDJmIDB4MDcgMHgwYgorCisjIFNldCB0aGUgYmFzZSBJL08gYWRkcmVzcyAodG8gMHgyOTAgaW4gdGhpcyBleGFtcGxlKQoraXNhc2V0IC15IDB4MmUgMHgyZiAweDYwIDB4MDIKK2lzYXNldCAteSAweDJlIDB4MmYgMHg2MSAweDkwCisKKyMgRXhpdCB0aGUgU3VwZXItSS9PIGNvbmZpZyBzcGFjZQoraXNhc2V0IC15IC1mIDB4MmUgMHhhYQorCitUaGUgYWJvdmUgc2VxdWVuY2UgYXNzdW1lcyBhIFN1cGVyLUkvTyBjb25maWcgc3BhY2UgYXQgMHgyZS8weDJmLCBidXQKKzB4NGUvMHg0ZiBpcyBhbHNvIHBvc3NpYmxlLgorCitWb2x0YWdlIHBpbiBtYXBwaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0hlcmUgaXMgYSBzdW1tYXJ5IG9mIHRoZSB2b2x0YWdlIHBpbiBtYXBwaW5nIGZvciB0aGUgVzgzNjI3VEhGLiBUaGlzCitjYW4gYmUgdXNlZnVsIHRvIGNvbnZlcnQgZGF0YSBwcm92aWRlZCBieSBib2FyZCBtYW51ZmFjdHVyZXJzIGludG8KK3dvcmtpbmcgbGlic2Vuc29ycyBjb25maWd1cmF0aW9uIHN0YXRlbWVudHMuCisKKyAgICBXODM2MjdUSEYJCXwKKyAgUGluCXwgTmFtZQkJfCBSZWdpc3Rlcgl8IFN5c2ZzIGF0dHJpYnV0ZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMTAwCXwgQ1BVVkNPUkUJfCAyMGgJCXwgaW4wCisgICA5OQl8IFZJTjAJCXwgMjFoCQl8IGluMQorICAgOTgJfCBWSU4xCQl8IDIyaAkJfCBpbjIKKyAgIDk3CXwgVklOMgkJfCAyNGgJCXwgaW40CisgIDExNAl8IEFWQ0MJCXwgMjNoCQl8IGluMworICAgNjEJfCA1VlNCCQl8IDUwaCAoYmFuayA1KQl8IGluNworICAgNzQJfCBWQkFUCQl8IDUxaCAoYmFuayA1KQl8IGluOAorCitGb3Igb3RoZXIgc3VwcG9ydGVkIGRldmljZXMsIHlvdSdsbCBoYXZlIHRvIHRha2UgdGhlIGhhcmQgcGF0aCBhbmQKK2xvb2sgdXAgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBkYXRhc2hlZXQgeW91cnNlbGYgKGFuZCB0aGVuIGFkZCBpdAordG8gdGhpcyBkb2N1bWVudCBwbGVhc2UuKQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi93ODM3ODFkIGIvRG9jdW1lbnRhdGlvbi9od21vbi93ODM3ODFkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyOWIwYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3c4Mzc4MWQKQEAgLTAsMCArMSw0NTMgQEAKK0tlcm5lbCBkcml2ZXIgdzgzNzgxZAorPT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBXaW5ib25kIFc4Mzc4MUQKKyAgICBQcmVmaXg6ICd3ODM3ODFkJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgyOCAtIDB4MmYsIElTQSAweDI5MCAoOCBJL08gcG9ydHMpCisgICAgRGF0YXNoZWV0OiBodHRwOi8vd3d3LndpbmJvbmQtdXNhLmNvbS9wcm9kdWN0cy93aW5ib25kX3Byb2R1Y3RzL3BkZnMvUENJQy93ODM3ODFkLnBkZgorICAqIFdpbmJvbmQgVzgzNzgyRAorICAgIFByZWZpeDogJ3c4Mzc4MmQnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDI4IC0gMHgyZiwgSVNBIDB4MjkwICg4IEkvTyBwb3J0cykKKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cud2luYm9uZC5jb20KKyAgKiBXaW5ib25kIFc4Mzc4M1MKKyAgICBQcmVmaXg6ICd3ODM3ODNzJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgyZAorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy53aW5ib25kLXVzYS5jb20vcHJvZHVjdHMvd2luYm9uZF9wcm9kdWN0cy9wZGZzL1BDSUMvdzgzNzgzcy5wZGYKKyAgKiBBc3VzIEFTOTkxMjdGCisgICAgUHJlZml4OiAnYXM5OTEyN2YnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDI4IC0gMHgyZgorICAgIERhdGFzaGVldDogVW5hdmFpbGFibGUgZnJvbSBBc3VzCisKK0F1dGhvcnM6CisgICAgICAgIEZyb2RvIExvb2lqYWFyZCA8ZnJvZG9sQGRkcy5ubD4sCisgICAgICAgIFBoaWxpcCBFZGVsYnJvY2sgPHBoaWxAbmV0cm9lZGdlLmNvbT4sCisgICAgICAgIE1hcmsgU3R1ZGViYWtlciA8bWRzeHl6MTIzQHlhaG9vLmNvbT4KKworTW9kdWxlIHBhcmFtZXRlcnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKyogaW5pdCBpbnQKKyAgKGRlZmF1bHQgMSkKKyAgVXNlICdpbml0PTAnIHRvIGJ5cGFzcyBpbml0aWFsaXppbmcgdGhlIGNoaXAuCisgIFRyeSB0aGlzIGlmIHlvdXIgY29tcHV0ZXIgY3Jhc2hlcyB3aGVuIHlvdSBsb2FkIHRoZSBtb2R1bGUuCisKKyogcmVzZXQgaW50CisgIChkZWZhdWx0IDApCisgIFRoZSBkcml2ZXIgdXNlZCB0byByZXNldCB0aGUgY2hpcCBvbiBsb2FkLCBidXQgZG9lcyBubyBtb3JlLiBVc2UKKyAgJ3Jlc2V0PTEnIHRvIHJlc3RvcmUgdGhlIG9sZCBiZWhhdmlvci4gUmVwb3J0IGlmIHlvdSBuZWVkIHRvIGRvIHRoaXMuCisKK2ZvcmNlX3N1YmNsaWVudHM9YnVzLGNhZGRyLHNhZGRyLHNhZGRyCisgIFRoaXMgaXMgdXNlZCB0byBmb3JjZSB0aGUgaTJjIGFkZHJlc3NlcyBmb3Igc3ViY2xpZW50cyBvZgorICBhIGNlcnRhaW4gY2hpcC4gVHlwaWNhbCB1c2FnZSBpcyBgZm9yY2Vfc3ViY2xpZW50cz0wLDB4MmQsMHg0YSwweDRiJworICB0byBmb3JjZSB0aGUgc3ViY2xpZW50cyBvZiBjaGlwIDB4MmQgb24gYnVzIDAgdG8gaTJjIGFkZHJlc3NlcworICAweDRhIGFuZCAweDRiLiBUaGlzIHBhcmFtZXRlciBpcyB1c2VmdWwgZm9yIGNlcnRhaW4gVHlhbiBib2FyZHMuCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBXaW5ib25kIFc4Mzc4MUQsIFc4Mzc4MkQsIFc4Mzc4M1MKK2NoaXBzLCBhbmQgdGhlIEFzdXMgQVM5OTEyN0YgY2hpcHMuIFdlIHdpbGwgcmVmZXIgdG8gdGhlbSBjb2xsZWN0aXZlbHkgYXMKK1c4Mzc4KiBjaGlwcy4KKworVGhlcmUgaXMgcXVpdGUgc29tZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlc2UgY2hpcHMsIGJ1dCB0aGV5IGFyZSBzaW1pbGFyCitlbm91Z2ggdGhhdCBpdCB3YXMgc2Vuc2libGUgdG8gcHV0IHRoZW0gdG9nZXRoZXIgaW4gb25lIGRyaXZlci4KK1RoZSBBc3VzIGNoaXBzIGFyZSBzaW1pbGFyIHRvIGFuIEkyQy1vbmx5IFc4Mzc4MkQuCisKK0NoaXAgICAgICAgICN2aW4gICAgI2ZhbmluICAjcHdtICAgICN0ZW1wICAgd2NoaXBpZCB2ZW5kaWQgIGkyYyAgICAgSVNBCithczk5MTI3ZiAgICA3ICAgICAgIDMgICAgICAgMCAgICAgICAzICAgICAgIDB4MzEgICAgMHgxMmMzICB5ZXMgICAgIG5vCithczk5MTI3ZiByZXYuMiAodHlwZV9uYW1lID0gYXM5OTEyN2YpICAgICAgIDB4MzEgICAgMHg1Y2EzICB5ZXMgICAgIG5vCit3ODM3ODFkICAgICA3ICAgICAgIDMgICAgICAgMCAgICAgICAzICAgICAgIDB4MTAtMSAgMHg1Y2EzICB5ZXMgICAgIHllcwordzgzNzgyZCAgICAgOSAgICAgICAzICAgICAgIDItNCAgICAgMyAgICAgICAweDMwICAgIDB4NWNhMyAgeWVzICAgICB5ZXMKK3c4Mzc4M3MgICAgIDUtNiAgICAgMyAgICAgICAyICAgICAgIDEtMiAgICAgMHg0MCAgICAweDVjYTMgIHllcyAgICAgbm8KKworRGV0ZWN0aW9uIG9mIHRoZXNlIGNoaXBzIGNhbiBzb21ldGltZXMgYmUgZm9pbGVkIGJlY2F1c2UgdGhleSBjYW4gYmUgaW4KK2FuIGludGVybmFsIHN0YXRlIHRoYXQgYWxsb3dzIG5vIGNsZWFuIGFjY2Vzcy4gSWYgeW91IGtub3cgdGhlIGFkZHJlc3MKK29mIHRoZSBjaGlwLCB1c2UgYSAnZm9yY2UnIHBhcmFtZXRlcjsgdGhpcyB3aWxsIHB1dCB0aGVtIGludG8gYSBtb3JlCit3ZWxsLWJlaGF2ZWQgc3RhdGUgZmlyc3QuCisKK1RoZSBXODM3OCogaW1wbGVtZW50cyB0ZW1wZXJhdHVyZSBzZW5zb3JzICh0aHJlZSBvbiB0aGUgVzgzNzgxRCBhbmQgVzgzNzgyRCwKK3R3byBvbiB0aGUgVzgzNzgzUyksIHRocmVlIGZhbiByb3RhdGlvbiBzcGVlZCBzZW5zb3JzLCB2b2x0YWdlIHNlbnNvcnMKKyhzZXZlbiBvbiB0aGUgVzgzNzgxRCwgbmluZSBvbiB0aGUgVzgzNzgyRCBhbmQgc2l4IG9uIHRoZSBXODM3ODNTKSwgVklECitsaW5lcywgYWxhcm1zIHdpdGggYmVlcCB3YXJuaW5ncywgYW5kIHNvbWUgbWlzY2VsbGFuZW91cyBzdHVmZi4KKworVGVtcGVyYXR1cmVzIGFyZSBtZWFzdXJlZCBpbiBkZWdyZWVzIENlbHNpdXMuIFRoZXJlIGlzIGFsd2F5cyBvbmUgbWFpbgordGVtcGVyYXR1cmUgc2Vuc29yLCBhbmQgb25lIChXODM3ODNTKSBvciB0d28gKFc4Mzc4MUQgYW5kIFc4Mzc4MkQpIG90aGVyCitzZW5zb3JzLiBBbiBhbGFybSBpcyB0cmlnZ2VyZWQgZm9yIHRoZSBtYWluIHNlbnNvciBvbmNlIHdoZW4gdGhlCitPdmVydGVtcGVyYXR1cmUgU2h1dGRvd24gbGltaXQgaXMgY3Jvc3NlZDsgaXQgaXMgdHJpZ2dlcmVkIGFnYWluIGFzIHNvb24gYXMKK2l0IGRyb3BzIGJlbG93IHRoZSBIeXN0ZXJlc2lzIHZhbHVlLiBBIG1vcmUgdXNlZnVsIGJlaGF2aW9yCitjYW4gYmUgZm91bmQgYnkgc2V0dGluZyB0aGUgSHlzdGVyZXNpcyB2YWx1ZSB0byArMTI3IGRlZ3JlZXMgQ2Vsc2l1czsgaW4KK3RoaXMgY2FzZSwgYWxhcm1zIGFyZSBpc3N1ZWQgZHVyaW5nIGFsbCB0aGUgdGltZSB3aGVuIHRoZSBhY3R1YWwgdGVtcGVyYXR1cmUKK2lzIGFib3ZlIHRoZSBPdmVydGVtcGVyYXR1cmUgU2h1dGRvd24gdmFsdWUuIFRoZSBkcml2ZXIgc2V0cyB0aGUKK2h5c3RlcmVzaXMgdmFsdWUgZm9yIHRlbXAxIHRvIDEyNyBhdCBpbml0aWFsaXphdGlvbi4KKworRm9yIHRoZSBvdGhlciB0ZW1wZXJhdHVyZSBzZW5zb3IocyksIGFuIGFsYXJtIGlzIHRyaWdnZXJlZCB3aGVuIHRoZQordGVtcGVyYXR1cmUgZ2V0cyBoaWdoZXIgdGhlbiB0aGUgT3ZlcnRlbXBlcmF0dXJlIFNodXRkb3duIHZhbHVlOyBpdCBzdGF5cworb24gdW50aWwgdGhlIHRlbXBlcmF0dXJlIGZhbGxzIGJlbG93IHRoZSBIeXN0ZXJlc2lzIHZhbHVlLiBCdXQgb24gdGhlCitXODM3ODFELCB0aGVyZSBpcyBvbmx5IG9uZSBhbGFybSB0aGF0IGZ1bmN0aW9ucyBmb3IgYm90aCBvdGhlciBzZW5zb3JzIQorVGVtcGVyYXR1cmVzIGFyZSBndWFyYW50ZWVkIHdpdGhpbiBhIHJhbmdlIG9mIC01NSB0byArMTI1IGRlZ3JlZXMuIFRoZQorbWFpbiB0ZW1wZXJhdHVyZSBzZW5zb3JzIGhhcyBhIHJlc29sdXRpb24gb2YgMSBkZWdyZWU7IHRoZSBvdGhlciBzZW5zb3IocykKK29mIDAuNSBkZWdyZWUuCisKK0ZhbiByb3RhdGlvbiBzcGVlZHMgYXJlIHJlcG9ydGVkIGluIFJQTSAocm90YXRpb25zIHBlciBtaW51dGUpLiBBbiBhbGFybSBpcwordHJpZ2dlcmVkIGlmIHRoZSByb3RhdGlvbiBzcGVlZCBoYXMgZHJvcHBlZCBiZWxvdyBhIHByb2dyYW1tYWJsZSBsaW1pdC4gRmFuCityZWFkaW5ncyBjYW4gYmUgZGl2aWRlZCBieSBhIHByb2dyYW1tYWJsZSBkaXZpZGVyICgxLCAyLCA0IG9yIDggZm9yIHRoZQorVzgzNzgxRDsgMSwgMiwgNCwgOCwgMTYsIDMyLCA2NCBvciAxMjggZm9yIHRoZSBvdGhlcnMpIHRvIGdpdmUKK3RoZSByZWFkaW5ncyBtb3JlIHJhbmdlIG9yIGFjY3VyYWN5LiBOb3QgYWxsIFJQTSB2YWx1ZXMgY2FuIGFjY3VyYXRlbHkKK2JlIHJlcHJlc2VudGVkLCBzbyBzb21lIHJvdW5kaW5nIGlzIGRvbmUuIFdpdGggYSBkaXZpZGVyIG9mIDIsIHRoZSBsb3dlc3QKK3JlcHJlc2VudGFibGUgdmFsdWUgaXMgYXJvdW5kIDI2MDAgUlBNLgorCitWb2x0YWdlIHNlbnNvcnMgKGFsc28ga25vd24gYXMgSU4gc2Vuc29ycykgcmVwb3J0IHRoZWlyIHZhbHVlcyBpbiB2b2x0cy4KK0FuIGFsYXJtIGlzIHRyaWdnZXJlZCBpZiB0aGUgdm9sdGFnZSBoYXMgY3Jvc3NlZCBhIHByb2dyYW1tYWJsZSBtaW5pbXVtCitvciBtYXhpbXVtIGxpbWl0LiBOb3RlIHRoYXQgbWluaW11bSBpbiB0aGlzIGNhc2UgYWx3YXlzIG1lYW5zICdjbG9zZXN0IHRvCit6ZXJvJzsgdGhpcyBpcyBpbXBvcnRhbnQgZm9yIG5lZ2F0aXZlIHZvbHRhZ2UgbWVhc3VyZW1lbnRzLiBBbGwgdm9sdGFnZQoraW5wdXRzIGNhbiBtZWFzdXJlIHZvbHRhZ2VzIGJldHdlZW4gMCBhbmQgNC4wOCB2b2x0cywgd2l0aCBhIHJlc29sdXRpb24KK29mIDAuMDE2IHZvbHQuCisKK1RoZSBWSUQgbGluZXMgZW5jb2RlIHRoZSBjb3JlIHZvbHRhZ2UgdmFsdWU6IHRoZSB2b2x0YWdlIGxldmVsIHlvdXIgcHJvY2Vzc29yCitzaG91bGQgd29yayB3aXRoLiBUaGlzIGlzIGhhcmRjb2RlZCBieSB0aGUgbWFpbmJvYXJkIGFuZC9vciBwcm9jZXNzb3IgaXRzZWxmLgorSXQgaXMgYSB2YWx1ZSBpbiB2b2x0cy4gV2hlbiBpdCBpcyB1bmNvbm5lY3RlZCwgeW91IHdpbGwgb2Z0ZW4gZmluZCB0aGUKK3ZhbHVlIDMuNTAgViBoZXJlLgorCitUaGUgVzgzNzgyRCBhbmQgVzgzNzgzUyB0ZW1wZXJhdHVyZSBjb252ZXJzaW9uIG1hY2hpbmUgdW5kZXJzdGFuZHMgYWJvdXQKK3NldmVyYWwga2luZHMgb2YgdGVtcGVyYXR1cmUgcHJvYmVzLiBZb3UgY2FuIHByb2dyYW0gdGhlIHNvLWNhbGxlZAorYmV0YSB2YWx1ZSBpbiB0aGUgc2Vuc29yIGZpbGVzLiAnMScgaXMgdGhlIFBJSS9DZWxlcm9uIGRpb2RlLCAnMicgaXMgdGhlCitUTjM5MDQgdHJhbnNpc3RvciwgYW5kIDM0MzUgdGhlIGRlZmF1bHQgdGhlcm1pc3RvciB2YWx1ZS4gT3RoZXIgdmFsdWVzCithcmUgKG5vdCB5ZXQpIHN1cHBvcnRlZC4KKworSW4gYWRkaXRpb24gdG8gdGhlIGFsYXJtcyBkZXNjcmliZWQgYWJvdmUsIHRoZXJlIGlzIGEgQ0hBUyBhbGFybSBvbiB0aGUKK2NoaXBzIHdoaWNoIHRyaWdnZXJzIGlmIHlvdXIgY29tcHV0ZXIgY2FzZSBpcyBvcGVuLgorCitXaGVuIGFuIGFsYXJtIGdvZXMgb2ZmLCB5b3UgY2FuIGJlIHdhcm5lZCBieSBhIGJlZXBpbmcgc2lnbmFsIHRocm91Z2gKK3lvdXIgY29tcHV0ZXIgc3BlYWtlci4gSXQgaXMgcG9zc2libGUgdG8gZW5hYmxlIGFsbCBiZWVwaW5nIGdsb2JhbGx5LAorb3Igb25seSB0aGUgYmVlcGluZyBmb3Igc29tZSBhbGFybXMuCisKK0luZGl2aWR1YWwgYWxhcm0gYW5kIGJlZXAgYml0czoKKworMHgwMDAwMDE6IGluMAorMHgwMDAwMDI6IGluMQorMHgwMDAwMDQ6IGluMgorMHgwMDAwMDg6IGluMworMHgwMDAwMTA6IHRlbXAxCisweDAwMDAyMDogdGVtcDIgKCt0ZW1wMyBvbiBXODM3ODFEKQorMHgwMDAwNDA6IGZhbjEKKzB4MDAwMDgwOiBmYW4yCisweDAwMDEwMDogaW40CisweDAwMDIwMDogaW41CisweDAwMDQwMDogaW42CisweDAwMDgwMDogZmFuMworMHgwMDEwMDA6IGNoYXNzaXMKKzB4MDAyMDAwOiB0ZW1wMyAoVzgzNzgyRCBvbmx5KQorMHgwMTAwMDA6IGluNyAoVzgzNzgyRCBvbmx5KQorMHgwMjAwMDA6IGluOCAoVzgzNzgyRCBvbmx5KQorCitJZiBhbiBhbGFybSB0cmlnZ2VycywgaXQgd2lsbCByZW1haW4gdHJpZ2dlcmVkIHVudGlsIHRoZSBoYXJkd2FyZSByZWdpc3RlcgoraXMgcmVhZCBhdCBsZWFzdCBvbmNlLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGNhdXNlIGZvciB0aGUgYWxhcm0gbWF5CithbHJlYWR5IGhhdmUgZGlzYXBwZWFyZWQhIE5vdGUgdGhhdCBpbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgYWxsCitoYXJkd2FyZSByZWdpc3RlcnMgYXJlIHJlYWQgd2hlbmV2ZXIgYW55IGRhdGEgaXMgcmVhZCAodW5sZXNzIGl0IGlzIGxlc3MKK3RoYW4gMS41IHNlY29uZHMgc2luY2UgdGhlIGxhc3QgdXBkYXRlKS4gVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4gZWFzaWx5CittaXNzIG9uY2Utb25seSBhbGFybXMuCisKK1RoZSBjaGlwcyBvbmx5IHVwZGF0ZSB2YWx1ZXMgZWFjaCAxLjUgc2Vjb25kczsgcmVhZGluZyB0aGVtIG1vcmUgb2Z0ZW4KK3dpbGwgZG8gbm8gaGFybSwgYnV0IHdpbGwgcmV0dXJuICdvbGQnIHZhbHVlcy4KKworQVM5OTEyN0YgUFJPQkxFTVMKKy0tLS0tLS0tLS0tLS0tLS0tCitUaGUgYXM5OTEyN2Ygc3VwcG9ydCB3YXMgZGV2ZWxvcGVkIHdpdGhvdXQgdGhlIGJlbmVmaXQgb2YgYSBkYXRhc2hlZXQuCitJbiBtb3N0IGNhc2VzIGl0IGlzIHRyZWF0ZWQgYXMgYSB3ODM3ODFkIChhbHRob3VnaCByZXZpc2lvbiAyIG9mIHRoZQorQVM5OTEyN0YgbG9va3MgbW9yZSBsaWtlIGEgdzgzNzgyZCkuCitUaGlzIHN1cHBvcnQgd2lsbCBiZSBCRVRBIHVudGlsIGEgZGF0YXNoZWV0IGlzIHJlbGVhc2VkLgorT25lIHVzZXIgaGFzIHJlcG9ydGVkIHByb2JsZW1zIHdpdGggZmFucyBzdG9wcGluZworb2NjYXNpb25hbGx5LgorCitOb3RlIHRoYXQgdGhlIGluZGl2aWR1YWwgYmVlcCBiaXRzIGFyZSBpbnZlcnRlZCBmcm9tIHRoZSBvdGhlciBjaGlwcy4KK1RoZSBkcml2ZXIgbm93IHRha2VzIGNhcmUgb2YgdGhpcyBzbyB0aGF0IHVzZXItc3BhY2UgYXBwbGljYXRpb25zCitkb24ndCBoYXZlIHRvIGtub3cgYWJvdXQgaXQuCisKK0tub3duIHByb2JsZW1zOgorCS0gUHJvYmxlbXMgd2l0aCBkaW9kZS90aGVybWlzdG9yIHNldHRpbmdzIChzdXBwb3J0ZWQ/KQorCS0gT25lIHVzZXIgcmVwb3J0cyBmYW5zIHN0b3BwaW5nIHVuZGVyIGhpZ2ggc2VydmVyIGxvYWQuCisJLSBSZXZpc2lvbiAyIHNlZW1zIHRvIGhhdmUgMiBQV00gcmVnaXN0ZXJzIGJ1dCB3ZSBkb24ndCBrbm93CisJICBob3cgdG8gaGFuZGxlIHRoZW0uIE1vcmUgZGV0YWlscyBiZWxvdy4KKworVGhlc2Ugd2lsbCBub3QgYmUgZml4ZWQgdW5sZXNzIHdlIGdldCBhIGRhdGFzaGVldC4KK0lmIHlvdSBoYXZlIHByb2JsZW1zLCBwbGVhc2UgbG9iYnkgQXN1cyB0byByZWxlYXNlIGEgZGF0YXNoZWV0LgorVW5mb3J0dW5hdGVseSBzZXZlcmFsIG90aGVycyBoYXZlIHdpdGhvdXQgc3VjY2Vzcy4KK1BsZWFzZSBkbyBub3Qgc2VuZCBtYWlsIHRvIHVzIGFza2luZyBmb3IgYmV0dGVyIGFzOTkxMjdmIHN1cHBvcnQuCitXZSBoYXZlIGRvbmUgdGhlIGJlc3Qgd2UgY2FuIHdpdGhvdXQgYSBkYXRhc2hlZXQuCitQbGVhc2UgZG8gbm90IHNlbmQgbWFpbCB0byB0aGUgYXV0aG9yIG9yIHRoZSBzZW5zb3JzIGdyb3VwIGFza2luZyBmb3IKK2EgZGF0YXNoZWV0IG9yIGlkZWFzIG9uIGhvdyB0byBjb252aW5jZSBBc3VzLiBXZSBjYW4ndCBoZWxwLgorCisKK05PVEVTOgorLS0tLS0KKyAgNzgzcyBoYXMgbm8gaW4xIHNvIHRoYXQgaW5bMi02XSBhcmUgY29tcGF0aWJsZSB3aXRoIHRoZSA3ODFkLzc4MmQuCisKKyAgNzgzcyBwaW4gaXMgcHJvZ3JhbW1hYmxlIGZvciAtNVYgb3IgdGVtcDE7IGRlZmF1bHRzIHRvIC01ViwKKyAgICAgICBubyBjb250cm9sIGluIGRyaXZlciBzbyB0ZW1wMSBkb2Vzbid0IHdvcmsuCisKKyAgNzgyZCBhbmQgNzgzcyBkYXRhc2hlZXRzIGRpZmZlciBvbiB3aGljaCBpcyBwd20xIGFuZCB3aGljaCBpcyBwd20yLgorICAgICAgIFdlIGNob3NlIHRvIGZvbGxvdyA3ODJkLgorCisgIDc4MmQgYW5kIDc4M3MgcGluIGlzIHByb2dyYW1tYWJsZSBmb3IgZmFuMyBpbnB1dCBvciBwd20yIG91dHB1dDsKKyAgICAgICBkZWZhdWx0cyB0byBmYW4zIGlucHV0LgorICAgICAgIElmIHB3bTIgaXMgZW5hYmxlZCAod2l0aCBlY2hvIDI1NSAxID4gcHdtMiksIHRoZW4KKyAgICAgICBmYW4zIHdpbGwgcmVwb3J0IDAuCisKKyAgNzgyZCBoYXMgcHdtMS0yIGZvciBJU0EsIHB3bTEtNCBmb3IgaTJjLiAocHdtMy00IHNoYXJlIHBpbnMgd2l0aAorICAgICAgIHRoZSBJU0EgcGlucykKKworRGF0YSBzaGVldCB1cGRhdGVzOgorLS0tLS0tLS0tLS0tLS0tLS0tCisJLSBQV00gY2xvY2sgcmVnaXN0ZXJzOgorCisJCTAwMDogbWFzdGVyIC8gIDUxMgorCQkwMDE6IG1hc3RlciAvIDEwMjQKKwkJMDEwOiBtYXN0ZXIgLyAyMDQ4CisJCTAxMTogbWFzdGVyIC8gNDA5NgorCQkxMDA6IG1hc3RlciAvIDgxOTIKKworCitBbnN3ZXJzIGZyb20gV2luYm9uZCB0ZWNoIHN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorPgorPiAxKSBJbiB0aGUgVzgzNzgxRCBkYXRhIHNoZWV0IHNlY3Rpb24gNy4yIGxhc3QgcGFyYWdyYXBoLCBpdCB0YWxrcyBhYm91dAorPiAgICByZXByb2dyYW1taW5nIHRoZSBSLVQgdGFibGUgaWYgdGhlIEJldGEgb2YgdGhlIHRoZXJtaXN0b3IgaXMgbm90Cis+ICAgIDM0MzVLLiBUaGUgUi1UIHRhYmxlIGlzIGRlc2NyaWJlZCBicmllZmx5IGluIHNlY3Rpb24gOC4yMC4KKz4gICAgV2hhdCBmb3JtdWxhcyBkbyBJIHVzZSB0byBwcm9ncmFtIGEgbmV3IFItVCB0YWJsZSBmb3IgYSBnaXZlbiBCZXRhPworPgorCVdlIGFyZSBzb3JyeSB0aGF0IHRoZSBjYWxjdWxhdGlvbiBmb3IgUi1UIHRhYmxlIHZhbHVlIGlzCitjb25maWRlbnRpYWwuIElmIHlvdSBoYXZlIGFub3RoZXIgQmV0YSB2YWx1ZSBvZiB0aGVybWlzdG9yLCB3ZSBjYW4gaGVscAordG8gY2FsY3VsYXRlIHRoZSBSLVQgdGFibGUgZm9yIHlvdS4gQnV0IHlvdSBzaG91bGQgZ2l2ZSB1cyByZWFsIFItVAorVGFibGUgd2hpY2ggY2FuIGJlIGdvdHRlbiBieSB0aGVybWlzdG9yIHZlbmRvci4gVGhlcmVmb3JlIHdlIHdpbGwgY2FsY3VsYXRlCit0aGVtIGFuZCBvYnRhaW4gMzItYnl0ZSBkYXRhLCBhbmQgeW91IGNhbiBmaWxsIHRoZSAzMi1ieXRlIGRhdGEgdG8gdGhlCityZWdpc3RlciBpbiBCYW5rMC5DUjUxIG9mIFc4Mzc4MUQuCisKKworPiAyKSBJbiB0aGUgVzgzNzgyRCBkYXRhIHNoZWV0LCBpdCBtZW50aW9ucyB0aGF0IHBpbnMgMzgsIDM5LCBhbmQgNDAgYXJlCis+ICAgIHByb2dyYW1tYWJsZSB0byBiZSBlaXRoZXIgdGhlcm1pc3RvciBvciBQZW50aXVtIElJIGRpb2RlIGlucHV0cy4KKz4gICAgSG93IGRvIEkgcHJvZ3JhbSB0aGVtIGZvciBkaW9kZSBpbnB1dHM/IEkgY2FuJ3QgZmluZCBhbnkgcmVnaXN0ZXIKKz4gICAgdG8gcHJvZ3JhbSB0aGVzZSB0byBiZSBkaW9kZSBpbnB1dHMuCisgLS0+IFlvdSBtYXkgcHJvZ3JhbSBCYW5rMCBDUls1RGhdIGFuZCBDUls1OWhdIHJlZ2lzdGVycy4KKworIAlDUls1RGhdICAgIAkJYml0IDEoVlRJTjEpICAgIGJpdCAyKFZUSU4yKSAgIGJpdCAzKFZUSU4zKQorCisgICAgICAJdGhlcm1pc3RvciAgICAgICAgICAgICAgICAwCQkgMAkJMAorIAlkaW9kZSAJCSAgICAgICAgICAxCQkgMQkJMQorCisKKyhlcnJvcikgQ1JbNTloXSAJCWJpdCA0KFZUSU4xKQliaXQgMihWVElOMikgICBiaXQgMyhWVElOMykKKyhyaWdodCkgQ1JbNTloXSAJCWJpdCA0KFZUSU4xKQliaXQgNShWVElOMikgICBiaXQgNihWVElOMykKKworIAlQSUkgdGhlcm1hbCBkaW9kZSAgICAgICAgIDEJCSAxCQkxCisgCTJOMzkwNAlkaW9kZQkgICAgICAgICAgMAkJIDAJCTAKKworCitBc3VzIENsb25lcworLS0tLS0tLS0tLS0KKworV2UgaGF2ZSBubyBkYXRhc2hlZXRzIGZvciB0aGUgQXN1cyBjbG9uZXMgKEFTOTkxMjdGIGFuZCBBU0IxMDAgQmFjaCkuCitIZXJlIGFyZSBzb21lIHZlcnkgdXNlZnVsIGluZm9ybWF0aW9uIHRoYXQgd2VyZSBnaXZlbiB0byB1cyBieSBBbGV4IFZhbgorS2FhbSBhYm91dCBob3cgdG8gZGV0ZWN0IHRoZXNlIGNoaXBzLCBhbmQgaG93IHRvIHJlYWQgdGhlaXIgdmFsdWVzLiBIZQorYWxzbyBnaXZlcyBhZHZpY2UgZm9yIGFub3RoZXIgQXN1cyBjaGlwc2V0LCB0aGUgTW96YXJ0LTIgKHdoaWNoIHdlCitkb24ndCBzdXBwb3J0IHlldCkuIFRoYW5rcyBBbGV4IQorSSByZXdvcmRlZCBzb21lIHBhcnRzIGFuZCBhZGRlZCBwZXJzb25hbCBjb21tZW50cy4KKworIyBEZXRlY3Rpb246CisKK0FTOTkxMjdGIHJldi4xLCBBUzk5MTI3RiByZXYuMiBhbmQgQVNCMTAwOgorLSBJMkMgYWRkcmVzcyByYW5nZTogMHgyOSAtIDB4MkYKKy0gSWYgcmVnaXN0ZXIgMHg1OCBob2xkcyAweDMxIHRoZW4gd2UgaGF2ZSBhbiBBc3VzIChlaXRoZXIgQVNCMTAwIG9yCisgIEFTOTkxMjdGKQorLSBXaGljaCBvbmUgZGVwZW5kcyBvbiByZWdpc3RlciAweDRGIChtYW51ZmFjdHVyZXIgSUQpOgorICAweDA2IG9yIDB4OTQ6IEFTQjEwMAorICAweDEyIG9yIDB4QzM6IEFTOTkxMjdGIHJldi4xCisgIDB4NUMgb3IgMHhBMzogQVM5OTEyN0YgcmV2LjIKKyAgTm90ZSB0aGF0IDB4NUNBMyBpcyBXaW5ib25kJ3MgSUQgKFdFQyksIHdoaWNoIGxldCB1cyB0aGluayBBc3VzIGdldCB0aGVpcgorICBBUzk5MTI3RiByZXYuMiBkaXJlY3QgZnJvbSBXaW5ib25kLiBUaGUgb3RoZXIgY29kZXMgbWVhbiBBVFQgYW5kIERWQywKKyAgcmVzcGVjdGl2ZWx5LiBBVFQgY291bGQgc3RhbmQgZm9yIEFzdXN0ZWsgc29tZXRoaW5nIChhbHRob3VnaCBpdCB3b3VsZCBiZQorICB2ZXJ5IGJhZGx5IGNob3NlbiBJTUhPKSwgSSBkb24ndCBrbm93IHdoYXQgRFZDIGNvdWxkIHN0YW5kIGZvci4gTWF5YmUKKyAgdGhlc2UgY29kZXMgc2ltcGx5IGFyZW4ndCBtZWFudCB0byBiZSBkZWNvZGVkIHRoYXQgd2F5LgorCitNb3phcnQtMjoKKy0gSTJDIGFkZHJlc3M6IDB4NzcKKy0gSWYgcmVnaXN0ZXIgMHg1OCBob2xkcyAweDU2IG9yIDB4MTAgdGhlbiB3ZSBoYXZlIGEgTW96YXJ0LTIKKy0gT2YgdGhlIE1vemFydCB0aGVyZSBhcmUgMyB0eXBlczoKKyAgMHg1OD0weDU2LCAweDRFPTB4OTQsIDB4NEY9MHgzNjogQXN1cyBBU001OCBNb3phcnQtMgorICAweDU4PTB4NTYsIDB4NEU9MHg5NCwgMHg0Rj0weDA2OiBBc3VzIEFTMksxMjlSIE1vemFydC0yCisgIDB4NTg9MHgxMCwgMHg0RT0weDVDLCAweDRGPTB4QTM6IEFzdXMgPz8/IE1vemFydC0yCisgIFlvdSBjYW4gaGFuZGxlIGFsbCAzIHRoZSBleGFjdCBzYW1lIHdheSA6KQorCisjIFRlbXBlcmF0dXJlIHNlbnNvcnM6CisKK0FTQjEwMDoKKy0gc2Vuc29yIDE6IHJlZ2lzdGVyIDB4MjcKKy0gc2Vuc29yIDIgJiAzIGFyZSB0aGUgMiBMTTc1J3Mgb24gdGhlIFNNQnVzCistIHNlbnNvciA0OiByZWdpc3RlciAweDE3CitSZW1hcms6IEkgbm90aWNlZCB0aGF0IG9uIEludGVsIGJvYXJkcyBzZW5zb3IgMiBpcyB1c2VkIGZvciB0aGUgQ1BVCisgIGFuZCA0IGlzIGlnbm9yZWQvc3R1Y2ssIG9uIEFNRCBib2FyZHMgc2Vuc29yIDQgaXMgdGhlIENQVSBhbmQgc2Vuc29yIDIgaXMKKyAgZWl0aGVyIGlnbm9yZWQgb3IgYSBzb2NrZXQgdGVtcGVyYXR1cmUuCisKK0FTOTkxMjdGIChyZXYuMSBhbmQgMiBhbGlrZSk6CistIHNlbnNvciAxOiByZWdpc3RlciAweDI3CistIHNlbnNvciAyICYgMyBhcmUgdGhlIDIgTE03NSdzIG9uIHRoZSBTTUJ1cworUmVtYXJrOiBSZWdpc3RlciAweDViIGlzIHN1c3BlY3RlZCB0byBiZSB0ZW1wZXJhdHVyZSB0eXBlIHNlbGVjdG9yLiBCaXQgMQorICB3b3VsZCBjb250cm9sIHRlbXAxLCBiaXQgMyB0ZW1wMiBhbmQgYml0IDUgdGVtcDMuCisKK01vemFydC0yOgorLSBzZW5zb3IgMTogcmVnaXN0ZXIgMHgyNworLSBzZW5zb3IgMjogcmVnaXN0ZXIgMHgxMworCisjIEZhbiBzZW5zb3JzOgorCitBU0IxMDAsIEFTOTkxMjdGIChyZXYuMSBhbmQgMiBhbGlrZSk6CistIDMgZmFucywgaWRlbnRpY2FsIHRvIHRoZSBXODM3ODFECisKK01vemFydC0yOgorLSAyIGZhbnMgb25seSwgMTM1MDAwMC9SUE0vZGl2CistIGZhbiAxOiByZWdpc3RlciAweDI4LCAgZGl2aXNvciBvbiByZWdpc3RlciAweEExIChiaXRzIDQtNSkKKy0gZmFuIDI6IHJlZ2lzdGVyIDB4MjksICBkaXZpc29yIG9uIHJlZ2lzdGVyIDB4QTEgKGJpdHMgNi03KQorCisjIFZvbHRhZ2VzOgorCitUaGlzIGlzIHdoZXJlIHRoZXJlIGlzIGEgZGlmZmVyZW5jZSBiZXR3ZWVuIEFTOTkxMjdGIHJldi4xIGFuZCAyLgorUmVtYXJrOiBUaGUgZGlmZmVyZW5jZSBpcyBzaW1pbGFyIHRvIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4KKyAgVzgzNzgxRCBhbmQgVzgzNzgyRC4KKworQVNCMTAwOgoraW4wPXIoMHgyMCkqMC4wMTYKK2luMT1yKDB4MjEpKjAuMDE2CitpbjI9cigweDIyKSowLjAxNgoraW4zPXIoMHgyMykqMC4wMTYqMS42OAoraW40PXIoMHgyNCkqMC4wMTYqMy44CitpbjU9cigweDI1KSooLTAuMDE2KSozLjk3CitpbjY9cigweDI2KSooLTAuMDE2KSoxLjY2NgorCitBUzk5MTI3RiByZXYuMToKK2luMD1yKDB4MjApKjAuMDE2CitpbjE9cigweDIxKSowLjAxNgoraW4yPXIoMHgyMikqMC4wMTYKK2luMz1yKDB4MjMpKjAuMDE2KjEuNjgKK2luND1yKDB4MjQpKjAuMDE2KjMuOAoraW41PXIoMHgyNSkqKC0wLjAxNikqMy45NworaW42PXIoMHgyNikqKC0wLjAxNikqMS41MDMKKworQVM5OTEyN0YgcmV2LjI6CitpbjA9cigweDIwKSowLjAxNgoraW4xPXIoMHgyMSkqMC4wMTYKK2luMj1yKDB4MjIpKjAuMDE2CitpbjM9cigweDIzKSowLjAxNioxLjY4CitpbjQ9cigweDI0KSowLjAxNiozLjgKK2luNT0ocigweDI1KSowLjAxNi0zLjYpKjUuMTQrMy42CitpbjY9KHIoMHgyNikqMC4wMTYtMy42KSozLjE0KzMuNgorCitNb3phcnQtMjoKK2luMD1yKDB4MjApKjAuMDE2CitpbjE9MjU1CitpbjI9cigweDIyKSowLjAxNgoraW4zPXIoMHgyMykqMC4wMTYqMS42OAoraW40PXIoMHgyNCkqMC4wMTYqNAoraW41PTI1NQoraW42PTI1NQorCisKKyMgUFdNCisKKyogQWRkaXRpb25hbCBpbmZvIGFib3V0IFBXTSBvbiB0aGUgQVM5OTEyN0YgKG1heSBhcHBseSB0byBvdGhlciBBc3VzCitjaGlwcyBhcyB3ZWxsKSBieSBKZWFuIERlbHZhcmUgYXMgb2YgMjAwNC0wNC0wOToKKworQVM5OTEyN0YgcmV2aXNpb24gMiBzZWVtcyB0byBoYXZlIHR3byBQV00gcmVnaXN0ZXJzIGF0IDB4NTkgYW5kIDB4NUEsCithbmQgYSB0ZW1wZXJhdHVyZSBzZW5zb3IgdHlwZSBzZWxlY3RvciBhdCAweDVCICh3aGljaCBiYXNpY2FsbHkgbWVhbnMKK3RoYXQgdGhleSBzd2FwcGVkIHJlZ2lzdGVycyAweDU5IGFuZCAweDVCIHdoZW4geW91IGNvbXBhcmUgd2l0aCBXaW5ib25kCitjaGlwcykuCitSZXZpc2lvbiAxIG9mIHRoZSBjaGlwIGFsc28gaGFzIHRoZSB0ZW1wZXJhdHVyZSBzZW5zb3IgdHlwZSBzZWxlY3RvciBhdAorMHg1QiwgYnV0IFBXTSByZWdpc3RlcnMgaGF2ZSBubyBlZmZlY3QuCisKK1dlIGRvbid0IGtub3cgZXhhY3RseSBob3cgdGhlIHRlbXBlcmF0dXJlIHNlbnNvciB0eXBlIHNlbGVjdGlvbiB3b3Jrcy4KK0xvb2tzIGxpa2UgYml0cyAxLTAgYXJlIGZvciB0ZW1wMSwgYml0cyAzLTIgZm9yIHRlbXAyIGFuZCBiaXRzIDUtNCBmb3IKK3RlbXAzLCBhbHRob3VnaCBpdCBpcyBwb3NzaWJsZSB0aGF0IG9ubHkgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG1hdHRlcnMKK2VhY2ggdGltZS4gU28gZmFyLCB2YWx1ZXMgb3RoZXIgdGhhbiAwIGFsd2F5cyBicm9rZSB0aGUgcmVhZGluZ3MuCisKK1BXTSByZWdpc3RlcnMgc2VlbSB0byBiZSBzcGxpdCBpbiB0d28gcGFydHM6IGJpdCA3IGlzIGEgbW9kZSBzZWxlY3RvciwKK3doaWxlIHRoZSBvdGhlciBiaXRzIHNlZW0gdG8gZGVmaW5lIGEgdmFsdWUgb3IgdGhyZXNob2xkLgorCitXaGVuIGJpdCA3IGlzIGNsZWFyLCBiaXRzIDYtMCBzZWVtIHRvIGhvbGQgYSB0aHJlc2hvbGQgdmFsdWUuIElmIHRoZSB2YWx1ZQoraXMgYmVsb3cgYSBnaXZlbiBsaW1pdCwgdGhlIGZhbiBydW5zIGF0IGxvdyBzcGVlZC4gSWYgdGhlIHZhbHVlIGlzIGFib3ZlCit0aGUgbGltaXQsIHRoZSBmYW4gcnVucyBhdCBmdWxsIHNwZWVkLiBXZSBoYXZlIG5vIGNsdWUgYXMgdG8gd2hhdCB0aGUgbGltaXQKK3JlcHJlc2VudHMuIE5vdGUgdGhhdCB0aGVyZSBzZWVtIHRvIGJlIHNvbWUgaW5lcnRpYSBpbiB0aGlzIG1vZGUsIHNwZWVkCitjaGFuZ2VzIG1heSBuZWVkIHNvbWUgdGltZSB0byB0cmlnZ2VyLiBBbHNvLCBhbiBoeXN0ZXJlc2lzIG1lY2hhbmlzbSBpcworc3VzcGVjdGVkIHNpbmNlIHdhbGtpbmcgdGhyb3VnaCBhbGwgdGhlIHZhbHVlcyBpbmNyZWFzaW5nbHkgYW5kIHRoZW4KK2RlY3JlYXNpbmdseSBsZWQgdG8gc2xpZ2h0bHkgZGlmZmVyZW50IGxpbWl0cy4KKworV2hlbiBiaXQgNyBpcyBzZXQsIGJpdHMgMy0wIHNlZW0gdG8gaG9sZCBhIHRocmVzaG9sZCB2YWx1ZSwgd2hpbGUgYml0cyA2LTQKK3dvdWxkIG5vdCBiZSBzaWduaWZpY2FudC4gSWYgdGhlIHZhbHVlIGlzIGJlbG93IGEgZ2l2ZW4gbGltaXQsIHRoZSBmYW4gcnVucworYXQgZnVsbCBzcGVlZCwgd2hpbGUgaWYgaXQgaXMgYWJvdmUgdGhlIGxpbWl0IGl0IHJ1bnMgYXQgbG93IHNwZWVkIChzbyB0aGlzCitpcyB0aGUgY29udHJhcnkgb2YgdGhlIG90aGVyIG1vZGUsIGluIGEgd2F5KS4gSGVyZSBhZ2Fpbiwgd2UgZG9uJ3Qga25vdword2hhdCB0aGUgbGltaXQgaXMgc3VwcG9zZWQgdG8gcmVwcmVzZW50LgorCitPbmUgcmVtYXJrYWJsZSB0aGluZyBpcyB0aGF0IHRoZSBmYW5zIHdvdWxkIG9ubHkgaGF2ZSB0d28gb3IgdGhyZWUKK2RpZmZlcmVudCBzcGVlZHMgKHRyYW5zaXRpb25hbCBzdGF0ZXMgbGVmdCBhcGFydCksIG5vdCBhIHdob2xlIHJhbmdlIGFzCit5b3UgdXN1YWxseSBnZXQgd2l0aCBQV00uCisKK0FzIGEgY29uY2x1c2lvbiwgeW91IGNhbiB3cml0ZSAweDAwIG9yIDB4OEYgdG8gdGhlIFBXTSByZWdpc3RlcnMgdG8gbWFrZQorZmFucyBydW4gYXQgbG93IHNwZWVkLCBhbmQgMHg3RiBvciAweDgwIHRvIG1ha2UgdGhlbSBydW4gYXQgZnVsbCBzcGVlZC4KKworUGxlYXNlIGNvbnRhY3QgdXMgaWYgeW91IGNhbiBmaWd1cmUgb3V0IGhvdyBpdCBpcyBzdXBwb3NlZCB0byB3b3JrLiBBcworbG9uZyBhcyB3ZSBkb24ndCBrbm93IG1vcmUsIHRoZSB3ODM3ODFkIGRyaXZlciBkb2Vzbid0IGhhbmRsZSBQV00gb24KK0FTOTkxMjdGIGNoaXBzIGF0IGFsbC4KKworKiBBZGRpdGlvbmFsIGluZm8gYWJvdXQgUFdNIG9uIHRoZSBBUzk5MTI3RiByZXYuMSBieSBIZWN0b3IgTWFydGluOgorCitJJ3ZlIGJlZW4gZmlkZGxpbmcgYXJvdW5kIHdpdGggdGhlIChpbilmYW1vdXMgMHg1OSByZWdpc3RlciBhbmQKK2ZvdW5kIG91dCB0aGUgZm9sbG93aW5nIHZhbHVlcyBkbyB3b3JrIGFzIGEgZm9ybSBvZiBjb2Fyc2UgcHdtOgorCisweDgwIC0gc2VlbXMgdG8gdHVybiBmYW5zIG9mZiBhZnRlciBzb21lIHRpbWUoMS0yIG1pbnV0ZXMpLi4uIG1pZ2h0IGJlCitzb21lIGZvcm0gb2YgYXV0by1mYW4tY29udHJvbCBiYXNlZCBvbiB0ZW1wPyBobW0gKFFmYW4/IHRoaXMgbW9ibyBpcyBhbgorb2xkIEFTVVMsIGl0IGlzbid0IG1hcmtldGVkIGFzIFFmYW4uIE1heWJlIHNvbWUgYmV0YSBwcmUtYXR0ZW1wdCBhdCBRZmFuCit0aGF0IHdhcyBkcm9wcGVkIGF0IHRoZSBCSU9TKQorMHg4MSAtIG9mZgorMHg4MiAtIHNsaWdodGx5ICJvbi1uZXIiIHRoYW4gb2ZmLCBidXQgbXkgZmFucyBkbyBub3QgZ2V0IHRvIG1vdmUuIEkgY2FuCitoZWFyIHRoZSBoaWdoLXBpdGNoZWQgUFdNIHNvdW5kIHRoYXQgbW90b3JzIGdpdmUgb2ZmIGF0IHRvby1sb3ctcHdtLgorMHg4MyAtIG5vdyB0aGV5IGRvIG1vdmUuIEVzdGltYXRlIGFib3V0IDcwJSBzcGVlZCBvciBzby4KKzB4ODQtMHg4ZiAtIGZ1bGwgb24KKworQ2hhbmdpbmcgdGhlIGhpZ2ggbmliYmxlIGRvZXNuJ3Qgc2VlbSB0byBkbyBtdWNoIGV4Y2VwdCB0aGUgaGlnaCBiaXQKKygweDgwKSBtdXN0IGJlIHNldCBmb3IgUFdNIHRvIHdvcmssIGVsc2UgdGhlIGN1cnJlbnQgcHdtIGRvZXNuJ3Qgc2VlbSB0bworY2hhbmdlLgorCitNeSBtb2JvIGlzIGFuIEFTVVMgQTdWMjY2LUUuIFRoaXMgYmVoYXZpb3IgaXMgc2ltaWxhciB0byB3aGF0IEkgZ290Cit3aXRoIHNwZWVkZmFuIHVuZGVyIFdpbmRvd3MsIHdoZXJlIDAtMTUlIHdvdWxkIGJlIG9mZiwgMTUtMnglIChjYW4ndAorcmVtZW1iZXIgdGhlIGV4YWN0IHZhbHVlKSB3b3VsZCBiZSA3MCUgYW5kIGhpZ2hlciB3b3VsZCBiZSBmdWxsIG9uLgorCisqIEFkZGl0aW9uYWwgaW5mbyBhYm91dCBQV00gb24gdGhlIEFTOTkxMjdGIHJldi4xIGZyb20gbG0tc2Vuc29ycworICB0aWNrZXQgIzIzNTA6CisKK0kgY29uZHVjdGVkIHNvbWUgZXhwZXJpbWVudCBvbiBBc3VzIFAzQi1GIG1vdGhlcmJvYXJkIHdpdGggQVM5OTEyN0YKKyhWZXIuIDEpLgorCitJIGNvbmZpcm0gdGhhdCAweDU5IHJlZ2lzdGVyIGNvbnRyb2wgdGhlIENQVV9GYW4gSGVhZGVyIG9uIHRoaXMKK21vdGhlcmJvYXJkLCBhbmQgMHg1YSByZWdpc3RlciBjb250cm9sIFBXUl9GYW4uCisKK0luIG9yZGVyIHRvIHJlZHVjZSB0aGUgZGVwZW5kZW5jeSBvZiBzcGVjaWZpYyBmYW4sIHRoZSBtZWFzdXJlbWVudCBpcworY29uZHVjdGVkIHdpdGggYSBkaWdpdGFsIHNjb3BlIHdpdGhvdXQgZmFuIGNvbm5lY3RlZC4gSSBmb3VuZCBvdXQgdGhhdAorUDNCLUYgYWN0dWFsbHkgb3V0cHV0IHZhcmlhYmxlIERDIHZvbHRhZ2Ugb24gZmFuIGhlYWRlciBjZW50ZXIgcGluLAorbG9va3MgbGlrZSBQV00gaXMgZmlsdGVyZWQgb24gdGhpcyBtb3RoZXJib2FyZC4KKworSGVyZSBhcmUgc29tZSBvZiBtZWFzdXJlbWVudHM6CisKKzB4ODAgICAgIDIwIG1WCisweDgxICAgICAyMCBtVgorMHg4MiAgICAyMzIgbVYKKzB4ODMgICAxLjIgIFYKKzB4ODQgICAyLjMxIFYKKzB4ODUgICAzLjQ0IFYKKzB4ODYgICA0LjYyIFYKKzB4ODcgICA1LjgxIFYKKzB4ODggICA3LjAxIFYKKzl4ODkgICA4LjIyIFYKKzB4OGEgICA5LjQyIFYKKzB4OGIgIDEwLjYgIFYKKzB4OGMgIDExLjkgIFYKKzB4OGQgIDEyLjQgIFYKKzB4OGUgIDEyLjQgIFYKKzB4OGYgIDEyLjQgIFYKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vdzgzNzkxZCBiL0RvY3VtZW50YXRpb24vaHdtb24vdzgzNzkxZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDAyMWEyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi93ODM3OTFkCkBAIC0wLDAgKzEsMTYxIEBACitLZXJuZWwgZHJpdmVyIHc4Mzc5MWQKKz09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogV2luYm9uZCBXODM3OTFECisgICAgUHJlZml4OiAndzgzNzkxZCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MmMgLSAweDJmCisgICAgRGF0YXNoZWV0OiBodHRwOi8vd3d3LndpbmJvbmQtdXNhLmNvbS9wcm9kdWN0cy93aW5ib25kX3Byb2R1Y3RzL3BkZnMvUENJQy9XODM3OTFEX1c4Mzc5MUdiLnBkZgorCitBdXRob3I6IENoYXJsZXMgU3BpcmFraXMgPGJlemF1ckBnbWFpbC5jb20+CisKK1RoaXMgZHJpdmVyIHdhcyBkZXJpdmVkIGZyb20gdGhlIHc4Mzc4MWQuYyBhbmQgdzgzNzkyZC5jIHNvdXJjZSBmaWxlcy4KKworQ3JlZGl0czoKKyAgdzgzNzgxZC5jOgorICAgIEZyb2RvIExvb2lqYWFyZCA8ZnJvZG9sQGRkcy5ubD4sCisgICAgUGhpbGlwIEVkZWxicm9jayA8cGhpbEBuZXRyb2VkZ2UuY29tPiwKKyAgICBhbmQgTWFyayBTdHVkZWJha2VyIDxtZHN4eXoxMjNAeWFob28uY29tPgorICB3ODM3OTJkLmM6CisgICAgU2hhbmUgSHVhbmcgKFdpbmJvbmQpLAorICAgIFJ1ZG9sZiBNYXJlayA8ci5tYXJla0Bhc3NlbWJsZXIuY3o+CisKK0FkZGl0aW9uYWwgY29udHJpYnV0b3JzOgorICAgIFN2ZW4gQW5kZXJzIDxhbmRlcnNAYW5kdXJhcy5kZT4KKyAgICBNYXJjIEh1bHNtYW4gPG0uaHVsc21hbkB0dWRlbGZ0Lm5sPgorCitNb2R1bGUgUGFyYW1ldGVycworLS0tLS0tLS0tLS0tLS0tLS0KKworKiBpbml0IGJvb2xlYW4KKyAgKGRlZmF1bHQgMCkKKyAgVXNlICdpbml0PTEnIHRvIGhhdmUgdGhlIGRyaXZlciBkbyBleHRyYSBzb2Z0d2FyZSBpbml0aWFsaXphdGlvbnMuCisgIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIGRvIHRoZSBtaW5pbXVtIGluaXRpYWxpemF0aW9uIHBvc3NpYmxlCisgIGFuZCBkZXBlbmQgb24gdGhlIEJJT1MgdG8gcHJvcGVybHkgc2V0dXAgdGhlIGNoaXAuIElmIHlvdSBrbm93IHlvdQorICBoYXZlIGEgdzgzNzkxZCBhbmQgeW91J3JlIGhhdmluZyBwcm9ibGVtcywgdHJ5IGluaXQ9MSBiZWZvcmUgdHJ5aW5nCisgIHJlc2V0PTEuCisKKyogcmVzZXQgYm9vbGVhbgorICAoZGVmYXVsdCAwKQorICBVc2UgJ3Jlc2V0PTEnIHRvIHJlc2V0IHRoZSBjaGlwICh2aWEgaW5kZXggMHg0MCwgYml0IDcpLiBUaGUgZGVmYXVsdAorICBiZWhhdmlvciBpcyBubyBjaGlwIHJlc2V0IHRvIHByZXNlcnZlIEJJT1Mgc2V0dGluZ3MuCisKKyogZm9yY2Vfc3ViY2xpZW50cz1idXMsY2FkZHIsc2FkZHIsc2FkZHIKKyAgVGhpcyBpcyB1c2VkIHRvIGZvcmNlIHRoZSBpMmMgYWRkcmVzc2VzIGZvciBzdWJjbGllbnRzIG9mCisgIGEgY2VydGFpbiBjaGlwLiBFeGFtcGxlIHVzYWdlIGlzIGBmb3JjZV9zdWJjbGllbnRzPTAsMHgyZiwweDRhLDB4NGInCisgIHRvIGZvcmNlIHRoZSBzdWJjbGllbnRzIG9mIGNoaXAgMHgyZiBvbiBidXMgMCB0byBpMmMgYWRkcmVzc2VzCisgIDB4NGEgYW5kIDB4NGIuCisKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgdGhlIFdpbmJvbmQgVzgzNzkxRCBjaGlwLiBUaGUgVzgzNzkxRworY2hpcCBhcHBlYXJzIHRvIGJlIHRoZSBzYW1lIGFzIHRoZSBXODM3OTFEIGJ1dCBpcyBsZWFkIGZyZWUuCisKK0RldGVjdGlvbiBvZiB0aGUgY2hpcCBjYW4gc29tZXRpbWVzIGJlIGZvaWxlZCBiZWNhdXNlIGl0IGNhbiBiZSBpbiBhbgoraW50ZXJuYWwgc3RhdGUgdGhhdCBhbGxvd3Mgbm8gY2xlYW4gYWNjZXNzIChCYW5rIHdpdGggSUQgcmVnaXN0ZXIgaXMgbm90CitjdXJyZW50bHkgc2VsZWN0ZWQpLiBJZiB5b3Uga25vdyB0aGUgYWRkcmVzcyBvZiB0aGUgY2hpcCwgdXNlIGEgJ2ZvcmNlJworcGFyYW1ldGVyOyB0aGlzIHdpbGwgcHV0IGl0IGludG8gYSBtb3JlIHdlbGwtYmVoYXZlZCBzdGF0ZSBmaXJzdC4KKworVGhlIGRyaXZlciBpbXBsZW1lbnRzIHRocmVlIHRlbXBlcmF0dXJlIHNlbnNvcnMsIHRlbiB2b2x0YWdlIHNlbnNvcnMsCitmaXZlIGZhbiByb3RhdGlvbiBzcGVlZCBzZW5zb3JzIGFuZCBtYW51YWwgUFdNIGNvbnRyb2wgb2YgZWFjaCBmYW4uCisKK1RlbXBlcmF0dXJlcyBhcmUgbWVhc3VyZWQgaW4gZGVncmVlcyBDZWxzaXVzIGFuZCBtZWFzdXJlbWVudCByZXNvbHV0aW9uIGlzIDEKK2RlZ0MgZm9yIHRlbXAxIGFuZCAwLjUgZGVnQyBmb3IgdGVtcDIgYW5kIHRlbXAzLiBBbiBhbGFybSBpcyB0cmlnZ2VyZWQgd2hlbgordGhlIHRlbXBlcmF0dXJlIGdldHMgaGlnaGVyIHRoYW4gdGhlIE92ZXJ0ZW1wZXJhdHVyZSBTaHV0ZG93biB2YWx1ZTsgaXQgc3RheXMKK29uIHVudGlsIHRoZSB0ZW1wZXJhdHVyZSBmYWxscyBiZWxvdyB0aGUgSHlzdGVyZXNpcyB2YWx1ZS4KKworVm9sdGFnZSBzZW5zb3JzIChhbHNvIGtub3duIGFzIElOIHNlbnNvcnMpIHJlcG9ydCB0aGVpciB2YWx1ZXMgaW4gbWlsbGl2b2x0cy4KK0FuIGFsYXJtIGlzIHRyaWdnZXJlZCBpZiB0aGUgdm9sdGFnZSBoYXMgY3Jvc3NlZCBhIHByb2dyYW1tYWJsZSBtaW5pbXVtCitvciBtYXhpbXVtIGxpbWl0LgorCitGYW4gcm90YXRpb24gc3BlZWRzIGFyZSByZXBvcnRlZCBpbiBSUE0gKHJvdGF0aW9ucyBwZXIgbWludXRlKS4gQW4gYWxhcm0gaXMKK3RyaWdnZXJlZCBpZiB0aGUgcm90YXRpb24gc3BlZWQgaGFzIGRyb3BwZWQgYmVsb3cgYSBwcm9ncmFtbWFibGUgbGltaXQuIEZhbgorcmVhZGluZ3MgY2FuIGJlIGRpdmlkZWQgYnkgYSBwcm9ncmFtbWFibGUgZGl2aWRlciAoMSwgMiwgNCwgOCwgMTYsCiszMiwgNjQgb3IgMTI4IGZvciBhbGwgZmFucykgdG8gZ2l2ZSB0aGUgcmVhZGluZ3MgbW9yZSByYW5nZSBvciBhY2N1cmFjeS4KKworRWFjaCBmYW4gY29udHJvbGxlZCBpcyBjb250cm9sbGVkIGJ5IFBXTS4gVGhlIFBXTSBkdXR5IGN5Y2xlIGNhbiBiZSByZWFkIGFuZAorc2V0IGZvciBlYWNoIGZhbiBzZXBhcmF0ZWx5LiBWYWxpZCB2YWx1ZXMgcmFuZ2UgZnJvbSAwIChzdG9wKSB0byAyNTUgKGZ1bGwpLgorUFdNIDEtMyBzdXBwb3J0IFRoZXJtYWwgQ3J1aXNlIG1vZGUsIGluIHdoaWNoIHRoZSBQV01zIGFyZSBhdXRvbWF0aWNhbGx5CityZWd1bGF0ZWQgdG8ga2VlcCByZXNwZWN0aXZlbHkgdGVtcCAxLTMgYXQgYSBjZXJ0YWluIHRhcmdldCB0ZW1wZXJhdHVyZS4KK1NlZSBiZWxvdyBmb3IgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBzeXNmcy1pbnRlcmZhY2UuCisKK1RoZSB3ODM3OTFkIGhhcyBhIGdsb2JhbCBiaXQgdXNlZCB0byBlbmFibGUgYmVlcGluZyBmcm9tIHRoZSBzcGVha2VyIHdoZW4gYW4KK2FsYXJtIGlzIHRyaWdnZXJlZCBhcyB3ZWxsIGFzIGEgYml0bWFzayB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgYmVlcCBmb3IKK3NwZWNpZmljIGFsYXJtcy4gWW91IG5lZWQgYm90aCB0aGUgZ2xvYmFsIGJlZXAgZW5hYmxlIGJpdCBhbmQgdGhlCitjb3JyZXNwb25kaW5nIGJlZXAgYml0IHRvIGJlIG9uIGZvciBhIHRyaWdnZXJlZCBhbGFybSB0byBzb3VuZCBhIGJlZXAuCisKK1RoZSBzeXNmcyBpbnRlcmZhY2UgdG8gdGhlIGdsb2JhbCBlbmFibGUgaXMgdmlhIHRoZSBzeXNmcyBiZWVwX2VuYWJsZSBmaWxlLgorVGhpcyBmaWxlIGlzIHVzZWQgZm9yIGJvdGggbGVnYWN5IGFuZCBuZXcgY29kZS4KKworVGhlIHN5c2ZzIGludGVyZmFjZSB0byB0aGUgYmVlcCBiaXRtYXNrIGhhcyBtaWdyYXRlZCBmcm9tIHRoZSBvcmlnaW5hbCBsZWdhY3kKK21ldGhvZCBvZiBhIHNpbmdsZSBzeXNmcyBiZWVwX21hc2sgZmlsZSB0byBhIG5ld2VyIG1ldGhvZCB1c2luZyBtdWx0aXBsZQorKl9iZWVwIGZpbGVzIGFzIGRlc2NyaWJlZCBpbiAuLi4vRG9jdW1lbnRhdGlvbi9od21vbi9zeXNmcy1pbnRlcmZhY2UuCisKK0Egc2ltaWxhciBjaGFuZ2UgaGFzIG9jY3VycmVkIGZvciB0aGUgYml0bWFwIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFsYXJtcy4gVGhlCitvcmlnaW5hbCBsZWdhY3kgbWV0aG9kIHVzZWQgYSBzaW5nbGUgc3lzZnMgYWxhcm1zIGZpbGUgY29udGFpbmluZyBhIGJpdG1hcAorb2YgdHJpZ2dlcmVkIGFsYXJtcy4gVGhlIG5ld2VyIG1ldGhvZCB1c2VzIG11bHRpcGxlIHN5c2ZzICpfYWxhcm0gZmlsZXMKKyhhZ2FpbiBmb2xsb3dpbmcgdGhlIHBhdHRlcm4gZGVzY3JpYmVkIGluIHN5c2ZzLWludGVyZmFjZSkuCisKK1NpbmNlIGJvdGggbWV0aG9kcyByZWFkIGFuZCB3cml0ZSB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgdGhleSBjYW4gYmUgdXNlZAoraW50ZXJjaGFuZ2VhYmx5IGFuZCBjaGFuZ2VzIGluIG9uZSB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgcmVmbGVjdGVkIGJ5Cit0aGUgb3RoZXIuIElmIHlvdSB1c2UgdGhlIGxlZ2FjeSBiaXRtYXNrIG1ldGhvZCwgeW91ciB1c2VyLXNwYWNlIGNvZGUgaXMKK3Jlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgZmFjdCB0aGF0IHRoZSBhbGFybXMgYW5kIGJlZXBfbWFzayBiaXRtYXBzCithcmUgbm90IHRoZSBzYW1lIChzZWUgdGhlIHRhYmxlIGJlbG93KS4KKworTk9URTogQWxsIG5ldyBjb2RlIHNob3VsZCBiZSB3cml0dGVuIHRvIHVzZSB0aGUgbmV3ZXIgc3lzZnMtaW50ZXJmYWNlCitzcGVjaWZpY2F0aW9uIGFzIHRoYXQgYXZvaWRzIGJpdG1hcCBwcm9ibGVtcyBhbmQgaXMgdGhlIHByZWZlcnJlZCBpbnRlcmZhY2UKK2dvaW5nIGZvcndhcmQuCisKK1RoZSBkcml2ZXIgcmVhZHMgdGhlIGhhcmR3YXJlIGNoaXAgdmFsdWVzIGF0IG1vc3Qgb25jZSBldmVyeSB0aHJlZSBzZWNvbmRzLgorVXNlciBtb2RlIGNvZGUgcmVxdWVzdGluZyB2YWx1ZXMgbW9yZSBvZnRlbiB3aWxsIHJlY2VpdmUgY2FjaGVkIHZhbHVlcy4KKworL3N5cyBmaWxlcworLS0tLS0tLS0tLQorVGhlIHN5c2ZzLWludGVyZmFjZSBpcyBkb2N1bWVudGVkIGluIHRoZSAnc3lzZnMtaW50ZXJmYWNlJyBmaWxlLiBPbmx5CitjaGlwLXNwZWNpZmljIG9wdGlvbnMgYXJlIGRvY3VtZW50ZWQgaGVyZS4KKworcHdtWzEtM11fZW5hYmxlIC0JdGhpcyBmaWxlIGNvbnRyb2xzIG1vZGUgb2YgZmFuL3RlbXBlcmF0dXJlIGNvbnRyb2wgZm9yCisJCQlmYW4gMS0zLiBGYW4vUFdNIDQtNSBvbmx5IHN1cHBvcnQgbWFudWFsIG1vZGUuCisJCSAgICAgICAgICAgICogMSBNYW51YWwgbW9kZQorCQkgICAgICAgICAgICAqIDIgVGhlcm1hbCBDcnVpc2UgbW9kZQorCQkgICAgICAgICAgICAqIDMgRmFuIFNwZWVkIENydWlzZSBtb2RlIChubyBmdXJ0aGVyIHN1cHBvcnQpCisKK3RlbXBbMS0zXV90YXJnZXQgLQlkZWZpbmVzIHRoZSB0YXJnZXQgdGVtcGVyYXR1cmUgZm9yIFRoZXJtYWwgQ3J1aXNlIG1vZGUuCisJCQlVbml0OiBtaWxsaWRlZ3JlZSBDZWxzaXVzCisJCQlSVworCit0ZW1wWzEtM11fdG9sZXJhbmNlIC0JdGVtcGVyYXR1cmUgdG9sZXJhbmNlIGZvciBUaGVybWFsIENydWlzZSBtb2RlLgorCQkJU3BlY2lmaWVzIGFuIGludGVydmFsIGFyb3VuZCB0aGUgdGFyZ2V0IHRlbXBlcmF0dXJlCisJCQlpbiB3aGljaCB0aGUgZmFuIHNwZWVkIGlzIG5vdCBjaGFuZ2VkLgorCQkJVW5pdDogbWlsbGlkZWdyZWUgQ2Vsc2l1cworCQkJUlcKKworQWxhcm1zIGJpdG1hcCB2cy4gYmVlcF9tYXNrIGJpdG1hc2sKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRm9yIGxlZ2FjeSBjb2RlIHVzaW5nIHRoZSBhbGFybXMgYW5kIGJlZXBfbWFzayBmaWxlczoKKworaW4wIChWQ09SRSkgIDogIGFsYXJtczogMHgwMDAwMDEgYmVlcF9tYXNrOiAweDAwMDAwMQoraW4xIChWSU5SMCkgIDogIGFsYXJtczogMHgwMDAwMDIgYmVlcF9tYXNrOiAweDAwMjAwMCA8PT0gbWlzbWF0Y2gKK2luMiAoKzMuM1ZJTik6ICBhbGFybXM6IDB4MDAwMDA0IGJlZXBfbWFzazogMHgwMDAwMDQKK2luMyAoNVZERCkgICA6ICBhbGFybXM6IDB4MDAwMDA4IGJlZXBfbWFzazogMHgwMDAwMDgKK2luNCAoKzEyVklOKSA6ICBhbGFybXM6IDB4MDAwMTAwIGJlZXBfbWFzazogMHgwMDAxMDAKK2luNSAoLTEyVklOKSA6ICBhbGFybXM6IDB4MDAwMjAwIGJlZXBfbWFzazogMHgwMDAyMDAKK2luNiAoLTVWSU4pICA6ICBhbGFybXM6IDB4MDAwNDAwIGJlZXBfbWFzazogMHgwMDA0MDAKK2luNyAoVlNCKSAgICA6ICBhbGFybXM6IDB4MDgwMDAwIGJlZXBfbWFzazogMHgwMTAwMDAgPD09IG1pc21hdGNoCitpbjggKFZCQVQpICAgOiAgYWxhcm1zOiAweDEwMDAwMCBiZWVwX21hc2s6IDB4MDIwMDAwIDw9PSBtaXNtYXRjaAoraW45IChWSU5SMSkgIDogIGFsYXJtczogMHgwMDQwMDAgYmVlcF9tYXNrOiAweDAwNDAwMAordGVtcDEgICAgICAgIDogIGFsYXJtczogMHgwMDAwMTAgYmVlcF9tYXNrOiAweDAwMDAxMAordGVtcDIgICAgICAgIDogIGFsYXJtczogMHgwMDAwMjAgYmVlcF9tYXNrOiAweDAwMDAyMAordGVtcDMgICAgICAgIDogIGFsYXJtczogMHgwMDIwMDAgYmVlcF9tYXNrOiAweDAwMDAwMiA8PT0gbWlzbWF0Y2gKK2ZhbjEgICAgICAgICA6ICBhbGFybXM6IDB4MDAwMDQwIGJlZXBfbWFzazogMHgwMDAwNDAKK2ZhbjIgICAgICAgICA6ICBhbGFybXM6IDB4MDAwMDgwIGJlZXBfbWFzazogMHgwMDAwODAKK2ZhbjMgICAgICAgICA6ICBhbGFybXM6IDB4MDAwODAwIGJlZXBfbWFzazogMHgwMDA4MDAKK2ZhbjQgICAgICAgICA6ICBhbGFybXM6IDB4MjAwMDAwIGJlZXBfbWFzazogMHgyMDAwMDAKK2ZhbjUgICAgICAgICA6ICBhbGFybXM6IDB4NDAwMDAwIGJlZXBfbWFzazogMHg0MDAwMDAKK3RhcnQxICAgICAgICA6ICBhbGFybXM6IDB4MDEwMDAwIGJlZXBfbWFzazogMHgwNDAwMDAgPD09IG1pc21hdGNoCit0YXJ0MiAgICAgICAgOiAgYWxhcm1zOiAweDAyMDAwMCBiZWVwX21hc2s6IDB4MDgwMDAwIDw9PSBtaXNtYXRjaAordGFydDMgICAgICAgIDogIGFsYXJtczogMHgwNDAwMDAgYmVlcF9tYXNrOiAweDEwMDAwMCA8PT0gbWlzbWF0Y2gKK2Nhc2Vfb3BlbiAgICA6ICBhbGFybXM6IDB4MDAxMDAwIGJlZXBfbWFzazogMHgwMDEwMDAKK2dsb2JhbF9lbmFibGU6ICBhbGFybXM6IC0tLS0tLS0tIGJlZXBfbWFzazogMHg4MDAwMDAgKG1vZGlmaWVkIHZpYSBiZWVwX2VuYWJsZSkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vdzgzNzkyZCBiL0RvY3VtZW50YXRpb24vaHdtb24vdzgzNzkyZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmZmYzQwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi93ODM3OTJkCkBAIC0wLDAgKzEsMTgxIEBACitLZXJuZWwgZHJpdmVyIHc4Mzc5MmQKKz09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogV2luYm9uZCBXODM3OTJECisgICAgUHJlZml4OiAndzgzNzkyZCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MmMgLSAweDJmCisgICAgRGF0YXNoZWV0OiBodHRwOi8vd3d3LndpbmJvbmQuY29tLnR3CisKK0F1dGhvcjogU2hhbmUgSHVhbmcgKFdpbmJvbmQpCitVcGRhdGVkOiBSb2dlciBMdWNhcworCisKK01vZHVsZSBQYXJhbWV0ZXJzCistLS0tLS0tLS0tLS0tLS0tLQorCisqIGluaXQgaW50CisgIChkZWZhdWx0IDEpCisgIFVzZSAnaW5pdD0wJyB0byBieXBhc3MgaW5pdGlhbGl6aW5nIHRoZSBjaGlwLgorICBUcnkgdGhpcyBpZiB5b3VyIGNvbXB1dGVyIGNyYXNoZXMgd2hlbiB5b3UgbG9hZCB0aGUgbW9kdWxlLgorCisqIGZvcmNlX3N1YmNsaWVudHM9YnVzLGNhZGRyLHNhZGRyLHNhZGRyCisgIFRoaXMgaXMgdXNlZCB0byBmb3JjZSB0aGUgaTJjIGFkZHJlc3NlcyBmb3Igc3ViY2xpZW50cyBvZgorICBhIGNlcnRhaW4gY2hpcC4gRXhhbXBsZSB1c2FnZSBpcyBgZm9yY2Vfc3ViY2xpZW50cz0wLDB4MmYsMHg0YSwweDRiJworICB0byBmb3JjZSB0aGUgc3ViY2xpZW50cyBvZiBjaGlwIDB4MmYgb24gYnVzIDAgdG8gaTJjIGFkZHJlc3NlcworICAweDRhIGFuZCAweDRiLgorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBXaW5ib25kIFc4Mzc5MkFEL0QuCisKK0RldGVjdGlvbiBvZiB0aGUgY2hpcCBjYW4gc29tZXRpbWVzIGJlIGZvaWxlZCBiZWNhdXNlIGl0IGNhbiBiZSBpbiBhbgoraW50ZXJuYWwgc3RhdGUgdGhhdCBhbGxvd3Mgbm8gY2xlYW4gYWNjZXNzIChCYW5rIHdpdGggSUQgcmVnaXN0ZXIgaXMgbm90CitjdXJyZW50bHkgc2VsZWN0ZWQpLiBJZiB5b3Uga25vdyB0aGUgYWRkcmVzcyBvZiB0aGUgY2hpcCwgdXNlIGEgJ2ZvcmNlJworcGFyYW1ldGVyOyB0aGlzIHdpbGwgcHV0IGl0IGludG8gYSBtb3JlIHdlbGwtYmVoYXZlZCBzdGF0ZSBmaXJzdC4KKworVGhlIGRyaXZlciBpbXBsZW1lbnRzIHRocmVlIHRlbXBlcmF0dXJlIHNlbnNvcnMsIHNldmVuIGZhbiByb3RhdGlvbiBzcGVlZAorc2Vuc29ycywgbmluZSB2b2x0YWdlIHNlbnNvcnMsIGFuZCB0d28gYXV0b21hdGljIGZhbiByZWd1bGF0aW9uCitzdHJhdGVnaWVzIGNhbGxlZDogU21hcnQgRmFuIEkgKFRoZXJtYWwgQ3J1aXNlIG1vZGUpIGFuZCBTbWFydCBGYW4gSUkuCisKK1RoZSBkcml2ZXIgYWxzbyBpbXBsZW1lbnRzIHVwIHRvIHNldmVuIGZhbiBjb250cm9sIG91dHB1dHM6IHB3bTEtNy4gIFB3bTEtNworY2FuIGJlIGNvbmZpZ3VyZWQgdG8gUFdNIG91dHB1dCBvciBBbmFsb2d1ZSBEQyBvdXRwdXQgdmlhIHRoZWlyIGFzc29jaWF0ZWQKK3B3bVhfbW9kZS4gT3V0cHV0cyBwd200IHRocm91Z2ggcHdtNyBtYXkgb3IgbWF5IG5vdCBiZSBwcmVzZW50IGRlcGVuZGluZyBvbgoraG93IHRoZSBXODM3OTJBRC9EIHdhcyBjb25maWd1cmVkIGJ5IHRoZSBCSU9TLgorCitBdXRvbWF0aWMgZmFuIGNvbnRyb2wgbW9kZSBpcyBwb3NzaWJsZSBvbmx5IGZvciBmYW4xLWZhbjMuCisKK0ZvciBhbGwgcHdtWCBvdXRwdXRzLCBhIHZhbHVlIG9mIDAgbWVhbnMgbWluaW11bSBmYW4gc3BlZWQgYW5kIGEgdmFsdWUgb2YKKzI1NSBtZWFucyBtYXhpbXVtIGZhbiBzcGVlZC4KKworVGVtcGVyYXR1cmVzIGFyZSBtZWFzdXJlZCBpbiBkZWdyZWVzIENlbHNpdXMgYW5kIG1lYXN1cmVtZW50IHJlc29sdXRpb24gaXMgMQorZGVnQyBmb3IgdGVtcDEgYW5kIDAuNSBkZWdDIGZvciB0ZW1wMiBhbmQgdGVtcDMuIEFuIGFsYXJtIGlzIHRyaWdnZXJlZCB3aGVuCit0aGUgdGVtcGVyYXR1cmUgZ2V0cyBoaWdoZXIgdGhhbiB0aGUgT3ZlcnRlbXBlcmF0dXJlIFNodXRkb3duIHZhbHVlOyBpdCBzdGF5cworb24gdW50aWwgdGhlIHRlbXBlcmF0dXJlIGZhbGxzIGJlbG93IHRoZSBIeXN0ZXJlc2lzIHZhbHVlLgorCitGYW4gcm90YXRpb24gc3BlZWRzIGFyZSByZXBvcnRlZCBpbiBSUE0gKHJvdGF0aW9ucyBwZXIgbWludXRlKS4gQW4gYWxhcm0gaXMKK3RyaWdnZXJlZCBpZiB0aGUgcm90YXRpb24gc3BlZWQgaGFzIGRyb3BwZWQgYmVsb3cgYSBwcm9ncmFtbWFibGUgbGltaXQuIEZhbgorcmVhZGluZ3MgY2FuIGJlIGRpdmlkZWQgYnkgYSBwcm9ncmFtbWFibGUgZGl2aWRlciAoMSwgMiwgNCwgOCwgMTYsIDMyLCA2NCBvcgorMTI4KSB0byBnaXZlIHRoZSByZWFkaW5ncyBtb3JlIHJhbmdlIG9yIGFjY3VyYWN5LgorCitWb2x0YWdlIHNlbnNvcnMgKGFsc28ga25vd24gYXMgSU4gc2Vuc29ycykgcmVwb3J0IHRoZWlyIHZhbHVlcyBpbiBtaWxsaXZvbHRzLgorQW4gYWxhcm0gaXMgdHJpZ2dlcmVkIGlmIHRoZSB2b2x0YWdlIGhhcyBjcm9zc2VkIGEgcHJvZ3JhbW1hYmxlIG1pbmltdW0KK29yIG1heGltdW0gbGltaXQuCisKK0FsYXJtcyBhcmUgcHJvdmlkZWQgYXMgb3V0cHV0IGZyb20gInJlYWx0aW1lIHN0YXR1cyByZWdpc3RlciIuIEZvbGxvd2luZyBiaXRzCithcmUgZGVmaW5lZDoKKworYml0IC0gYWxhcm0gb246CiswICAtIGluMAorMSAgLSBpbjEKKzIgIC0gdGVtcDEKKzMgIC0gdGVtcDIKKzQgIC0gdGVtcDMKKzUgIC0gZmFuMQorNiAgLSBmYW4yCis3ICAtIGZhbjMKKzggIC0gaW4yCis5ICAtIGluMworMTAgLSBpbjQKKzExIC0gaW41CisxMiAtIGluNgorMTMgLSBWSUQgY2hhbmdlCisxNCAtIGNoYXNzaXMKKzE1IC0gZmFuNworMTYgLSB0YXJ0MQorMTcgLSB0YXJ0MgorMTggLSB0YXJ0MworMTkgLSBpbjcKKzIwIC0gaW44CisyMSAtIGZhbjQKKzIyIC0gZmFuNQorMjMgLSBmYW42CisKK1RhcnQgd2lsbCBiZSBhc3NlcnRlZCB3aGlsZSB0YXJnZXQgdGVtcGVyYXR1cmUgY2Fubm90IGJlIGFjaGlldmVkIGFmdGVyIDMgbWludXRlcworb2YgZnVsbCBzcGVlZCByb3RhdGlvbiBvZiBjb3JyZXNwb25kaW5nIGZhbi4KKworSW4gYWRkaXRpb24gdG8gdGhlIGFsYXJtcyBkZXNjcmliZWQgYWJvdmUsIHRoZXJlIGlzIGEgQ0hBUyBhbGFybSBvbiB0aGUgY2hpcHMKK3doaWNoIHRyaWdnZXJzIGlmIHlvdXIgY29tcHV0ZXIgY2FzZSBpcyBvcGVuIChUaGlzIG9uZSBpcyBsYXRjaGVkLCBjb250cmFyeQordG8gcmVhbHRpbWUgYWxhcm1zKS4KKworVGhlIGNoaXBzIG9ubHkgdXBkYXRlIHZhbHVlcyBlYWNoIDMgc2Vjb25kczsgcmVhZGluZyB0aGVtIG1vcmUgb2Z0ZW4gd2lsbAorZG8gbm8gaGFybSwgYnV0IHdpbGwgcmV0dXJuICdvbGQnIHZhbHVlcy4KKworCitXODM3OTJEIFBST0JMRU1TCistLS0tLS0tLS0tLS0tLS0tCitLbm93biBwcm9ibGVtczoKKwktIFRoaXMgZHJpdmVyIGlzIG9ubHkgZm9yIFdpbmJvbmQgVzgzNzkyRCBDIHZlcnNpb24gZGV2aWNlLCB0aGVyZQorCSAgYXJlIGFsc28gc29tZSBtb3RoZXJib2FyZHMgd2l0aCBCIHZlcnNpb24gVzgzNzkyRCBkZXZpY2UuIFRoZQorCSAgY2FsY3VsYXRpb24gbWV0aG9kIHRvIGluNi1pbjcobWVhc3VyZWQgdmFsdWUsIGxpbWl0cykgaXMgYSBsaXR0bGUKKwkgIGRpZmZlcmVudCBiZXR3ZWVuIEMgYW5kIEIgdmVyc2lvbi4gQyBvciBCIHZlcnNpb24gY2FuIGJlIGlkZW50aWZpZWQKKwkgIGJ5IENSWzB4NDloXS4KKwktIFRoZSBmdW5jdGlvbiBvZiB2aWQgYW5kIHZybSBoYXMgbm90IGJlZW4gZmluaXNoZWQsIGJlY2F1c2UgSSdtIE5PVAorCSAgdmVyeSBmYW1pbGlhciB3aXRoIHRoZW0uIEFkZGluZyBzdXBwb3J0IGlzIHdlbGNvbWUuCivCoAktIFRoZSBmdW5jdGlvbiBvZiBjaGFzc2lzIG9wZW4gZGV0ZWN0aW9uIG5lZWRzIG1vcmUgdGVzdHMuCisJLSBJZiB5b3UgaGF2ZSBBU1VTIHNlcnZlciBib2FyZCBhbmQgY2hpcCB3YXMgbm90IGZvdW5kOiBUaGVuIHlvdSB3aWxsCisJICBuZWVkIHRvIHVwZ3JhZGUgdG8gbGF0ZXN0IChvciBiZXRhKSBCSU9TLiBJZiBpdCBkb2VzIG5vdCBoZWxwIHBsZWFzZQorCSAgY29udGFjdCB1cy4KKworRmFuIGNvbnRyb2wKKy0tLS0tLS0tLS0tCisKK01hbnVhbCBtb2RlCistLS0tLS0tLS0tLQorCitXb3JrcyBhcyBleHBlY3RlZC4gWW91IGp1c3QgbmVlZCB0byBzcGVjaWZ5IGRlc2lyZWQgUFdNL0RDIHZhbHVlIChmYW4gc3BlZWQpCitpbiBhcHByb3ByaWF0ZSBwd20jIGZpbGUuCisKK1RoZXJtYWwgY3J1aXNlCistLS0tLS0tLS0tLS0tLQorCitJbiB0aGlzIG1vZGUsIFc4Mzc5MkQgcHJvdmlkZXMgdGhlIFNtYXJ0IEZhbiBzeXN0ZW0gdG8gYXV0b21hdGljYWxseSBjb250cm9sCitmYW4gc3BlZWQgdG8ga2VlcCB0aGUgdGVtcGVyYXR1cmVzIG9mIENQVSBhbmQgdGhlIHN5c3RlbSB3aXRoaW4gc3BlY2lmaWMKK3JhbmdlLiBBdCBmaXJzdCBhIHdhbnRlZCB0ZW1wZXJhdHVyZSBhbmQgaW50ZXJ2YWwgbXVzdCBiZSBzZXQuIFRoaXMgaXMgZG9uZQordmlhIHRoZXJtYWxfY3J1aXNlIyBmaWxlLiBUaGUgdG9sZXJhbmNlIyBmaWxlIHNlcnZlcyB0byBjcmVhdGUgVCArLSB0b2xlcmFuY2UKK2ludGVydmFsLiBUaGUgZmFuIHNwZWVkIHdpbGwgYmUgbG93ZXJlZCBhcyBsb25nIGFzIHRoZSBjdXJyZW50IHRlbXBlcmF0dXJlCityZW1haW5zIGJlbG93IHRoZSB0aGVybWFsX2NydWlzZSMgKy0gdG9sZXJhbmNlIyB2YWx1ZS4gT25jZSB0aGUgdGVtcGVyYXR1cmUKK2V4Y2VlZHMgdGhlIGhpZ2ggbGltaXQgKFQrdG9sZXJhbmNlKSwgdGhlIGZhbiB3aWxsIGJlIHR1cm5lZCBvbiB3aXRoIGEKK3NwZWNpZmljIHNwZWVkIHNldCBieSBwd20jIGFuZCBhdXRvbWF0aWNhbGx5IGNvbnRyb2xsZWQgaXRzIFBXTSBkdXR5IGN5Y2xlCit3aXRoIHRoZSB0ZW1wZXJhdHVyZSB2YXJ5aW5nLiBUaHJlZSBjb25kaXRpb25zIG1heSBvY2N1cjoKKworKDEpIElmIHRoZSB0ZW1wZXJhdHVyZSBzdGlsbCBleGNlZWRzIHRoZSBoaWdoIGxpbWl0LCBQV00gZHV0eQorY3ljbGUgd2lsbCBpbmNyZWFzZSBzbG93bHkuCisKKygyKSBJZiB0aGUgdGVtcGVyYXR1cmUgZ29lcyBiZWxvdyB0aGUgaGlnaCBsaW1pdCwgYnV0IHN0aWxsIGFib3ZlIHRoZSBsb3cKK2xpbWl0IChULXRvbGVyYW5jZSksIHRoZSBmYW4gc3BlZWQgd2lsbCBiZSBmaXhlZCBhdCB0aGUgY3VycmVudCBzcGVlZCBiZWNhdXNlCit0aGUgdGVtcGVyYXR1cmUgaXMgaW4gdGhlIHRhcmdldCByYW5nZS4KKworKDMpIElmIHRoZSB0ZW1wZXJhdHVyZSBnb2VzIGJlbG93IHRoZSBsb3cgbGltaXQsIFBXTSBkdXR5IGN5Y2xlIHdpbGwgZGVjcmVhc2UKK3Nsb3dseSB0byAwIG9yIGEgcHJlc2V0IHN0b3AgdmFsdWUgdW50aWwgdGhlIHRlbXBlcmF0dXJlIGV4Y2VlZHMgdGhlIGxvdworbGltaXQuIChUaGUgcHJlc2V0IHN0b3AgdmFsdWUgaGFuZGxpbmcgaXMgbm90IHlldCBpbXBsZW1lbnRlZCBpbiBkcml2ZXIpCisKK1NtYXJ0IEZhbiBJSQorLS0tLS0tLS0tLS0tCisKK1c4Mzc5MkQgYWxzbyBwcm92aWRlcyBhIHNwZWNpYWwgbW9kZSBmb3IgZmFuLiBGb3VyIHRlbXBlcmF0dXJlIHBvaW50cyBhcmUKK2F2YWlsYWJsZS4gV2hlbiByZWxhdGVkIHRlbXBlcmF0dXJlIHNlbnNvcnMgZGV0ZWN0cyB0aGUgdGVtcGVyYXR1cmUgaW4gcHJlc2V0Cit0ZW1wZXJhdHVyZSByZWdpb24gKHNmMl9wb2ludEBfZmFuIyArLSB0b2xlcmFuY2UjKSBpdCB3aWxsIGNhdXNlIGZhbnMgdG8gcnVuCitvbiBwcm9ncmFtbWVkIHZhbHVlIGZyb20gc2YyX2xldmVsQF9mYW4jLiBZb3UgbmVlZCB0byBzZXQgZm91ciB0ZW1wZXJhdHVyZXMKK2ZvciBlYWNoIGZhbi4KKworCisvc3lzIGZpbGVzCistLS0tLS0tLS0tCisKK3B3bVsxLTddIC0gdGhpcyBmaWxlIHN0b3JlcyBQV00gZHV0eSBjeWNsZSBvciBEQyB2YWx1ZSAoZmFuIHNwZWVkKSBpbiByYW5nZToKKwkwIChzdG9wKSB0byAyNTUgKGZ1bGwpCitwd21bMS0zXV9lbmFibGUgLSB0aGlzIGZpbGUgY29udHJvbHMgbW9kZSBvZiBmYW4vdGVtcGVyYXR1cmUgY29udHJvbDoKKyAgICAgICAgICAgICogMCBEaXNhYmxlZAorICAgICAgICAgICAgKiAxIE1hbnVhbCBtb2RlCisgICAgICAgICAgICAqIDIgU21hcnQgRmFuIElJCisgICAgICAgICAgICAqIDMgVGhlcm1hbCBDcnVpc2UKK3B3bVsxLTddX21vZGUgLSBTZWxlY3QgUFdNIG9yIERDIG1vZGUKKyAgICAgICAgICAgICogMCBEQworICAgICAgICAgICAgKiAxIFBXTQordGhlcm1hbF9jcnVpc2VbMS0zXSAtIFNlbGVjdHMgdGhlIGRlc2lyZWQgdGVtcGVyYXR1cmUgZm9yIGNydWlzZSAoZGVnQykKK3RvbGVyYW5jZVsxLTNdIC0gVmFsdWUgaW4gZGVncmVlcyBvZiBDZWxzaXVzIChkZWdDKSBmb3IgKy0gVAorc2YyX3BvaW50WzEtNF1fZmFuWzEtM10gLSBmb3VyIHRlbXBlcmF0dXJlIHBvaW50cyBmb3IgZWFjaCBmYW4gZm9yIFNtYXJ0IEZhbiBJSQorc2YyX2xldmVsWzEtM11fZmFuWzEtM10gLSB0aHJlZSBQV00vREMgbGV2ZWxzIGZvciBlYWNoIGZhbiBmb3IgU21hcnQgRmFuIElJCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3c4Mzc5MyBiL0RvY3VtZW50YXRpb24vaHdtb24vdzgzNzkzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjYzVmNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3c4Mzc5MwpAQCAtMCwwICsxLDEwNiBAQAorS2VybmVsIGRyaXZlciB3ODM3OTMKKz09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBXaW5ib25kIFc4Mzc5M0cvVzgzNzkzUgorICAgIFByZWZpeDogJ3c4Mzc5MycKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4MmMgLSAweDJmCisgICAgRGF0YXNoZWV0OiBTdGlsbCBub3QgcHVibGlzaGVkCisKK0F1dGhvcnM6CisgICAgWXVhbiBNdSAoV2luYm9uZCBFbGVjdHJvbmljcykKKyAgICBSdWRvbGYgTWFyZWsgPHIubWFyZWtAYXNzZW1ibGVyLmN6PgorCisKK01vZHVsZSBwYXJhbWV0ZXJzCistLS0tLS0tLS0tLS0tLS0tLQorCisqIHJlc2V0IGludAorICAoZGVmYXVsdCAwKQorICBUaGlzIHBhcmFtZXRlciBpcyBub3QgcmVjb21tZW5kZWQsIGl0IHdpbGwgbG9zZSBtb3RoZXJib2FyZCBzcGVjaWZpYworICBzZXR0aW5ncy4gVXNlICdyZXNldD0xJyB0byByZXNldCB0aGUgY2hpcCB3aGVuIGxvYWRpbmcgdGhpcyBtb2R1bGUuCisKKyogZm9yY2Vfc3ViY2xpZW50cz1idXMsY2FkZHIsc2FkZHIxLHNhZGRyMgorICBUaGlzIGlzIHVzZWQgdG8gZm9yY2UgdGhlIGkyYyBhZGRyZXNzZXMgZm9yIHN1YmNsaWVudHMgb2YKKyAgYSBjZXJ0YWluIGNoaXAuIFR5cGljYWwgdXNhZ2UgaXMgYGZvcmNlX3N1YmNsaWVudHM9MCwweDJmLDB4NGEsMHg0YicKKyAgdG8gZm9yY2UgdGhlIHN1YmNsaWVudHMgb2YgY2hpcCAweDJmIG9uIGJ1cyAwIHRvIGkyYyBhZGRyZXNzZXMKKyAgMHg0YSBhbmQgMHg0Yi4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgaW1wbGVtZW50cyBzdXBwb3J0IGZvciBXaW5ib25kIFc4Mzc5M0cvVzgzNzkzUiBjaGlwcy4KKworKiBFeHBvcnRlZCBmZWF0dXJlcworICBUaGlzIGRyaXZlciBleHBvcnRzIDEwIHZvbHRhZ2Ugc2Vuc29ycywgdXAgdG8gMTIgZmFuIHRhY2hvbWV0ZXIgaW5wdXRzLAorICA2IHJlbW90ZSB0ZW1wZXJhdHVyZXMsIHVwIHRvIDggc2V0cyBvZiBQV00gZmFuIGNvbnRyb2xzLCBTbWFydEZhbgorICAoYXV0b21hdGljIGZhbiBzcGVlZCBjb250cm9sKSBvbiBhbGwgdGVtcGVyYXR1cmUvUFdNIGNvbWJpbmF0aW9ucywgMgorICBzZXRzIG9mIDYtcGluIENQVSBWSUQgaW5wdXQuCisKKyogU2Vuc29yIHJlc29sdXRpb25zCisgIElmIHlvdXIgbW90aGVyYm9hcmQgbWFrZXIgdXNlZCB0aGUgcmVmZXJlbmNlIGRlc2lnbiwgdGhlIHJlc29sdXRpb24gb2YKKyAgdm9sdGFnZTAtMiBpcyAybVYsIHJlc29sdXRpb24gb2Ygdm9sdGFnZTMvNC81IGlzIDE2bVYsIDhtViBmb3Igdm9sdGFnZTYsCisgIDI0bVYgZm9yIHZvbHRhZ2U3LzguIFRlbXAxLTQgaGF2ZSBhIDAuMjUgZGVncmVlIENlbHNpdXMgcmVzb2x1dGlvbiwKKyAgdGVtcDUtNiBoYXZlIGEgMSBkZWdyZWUgQ2Vsc2lpcyByZXNvbHV0aW9uLgorCisqIFRlbXBlcmF0dXJlIHNlbnNvciB0eXBlcworICBUZW1wMS00IGhhdmUgMiBwb3NzaWJsZSB0eXBlcy4gSXQgY2FuIGJlIHJlYWQgZnJvbSAoYW5kIHdyaXR0ZW4gdG8pCisgIHRlbXBbMS00XV90eXBlLgorICAtIElmIHRoZSB2YWx1ZSBpcyAzLCBpdCBzdGFydHMgbW9uaXRvcmluZyB1c2luZyBhIHJlbW90ZSB0ZXJtYWwgZGlvZGUKKyAgICAoZGVmYXVsdCkuCisgIC0gSWYgdGhlIHZhbHVlIGlzIDYsIGl0IHN0YXJ0cyBtb25pdG9yaW5nIHVzaW5nIHRoZSB0ZW1wZXJhdHVyZSBzZW5zb3IKKyAgICBpbiBJbnRlbCBDUFUgYW5kIGdldCByZXN1bHQgYnkgUEVDSS4KKyAgVGVtcDUtNiBjYW4gYmUgY29ubmVjdGVkIHRvIGV4dGVybmFsIHRoZXJtaXN0b3JzICh2YWx1ZSBvZgorICB0ZW1wWzUtNl1fdHlwZSBpcyA0KS4KKworKiBBbGFybSBtZWNoYW5pc20KKyAgRm9yIHZvbHRhZ2Ugc2Vuc29ycywgYW4gYWxhcm0gdHJpZ2dlcnMgaWYgdGhlIG1lYXN1cmVkIHZhbHVlIGlzIGJlbG93CisgIHRoZSBsb3cgdm9sdGFnZSBsaW1pdCBvciBvdmVyIHRoZSBoaWdoIHZvbHRhZ2UgbGltaXQuCisgIEZvciB0ZW1wZXJhdHVyZSBzZW5zb3JzLCBhbiBhbGFybSB0cmlnZ2VycyBpZiB0aGUgbWVhc3VyZWQgdmFsdWUgZ29lcworICBhYm92ZSB0aGUgaGlnaCB0ZW1wZXJhdHVyZSBsaW1pdCwgYW5kIHdlYXJzIG9mZiBvbmx5IGFmdGVyIHRoZSBtZWFzdXJlZAorICB2YWx1ZSBkcm9wcyBiZWxvdyB0aGUgaHlzdGVyZXNpcyB2YWx1ZS4KKyAgRm9yIGZhbiBzZW5zb3JzLCBhbiBhbGFybSB0cmlnZ2VycyBpZiB0aGUgbWVhc3VyZWQgdmFsdWUgaXMgYmVsb3cgdGhlCisgIGxvdyBzcGVlZCBsaW1pdC4KKworKiBTbWFydEZhbi9QV00gY29udHJvbAorICBJZiB5b3Ugd2FudCB0byBzZXQgYSBwd20gZmFuIHRvIG1hbnVhbCBtb2RlLCB5b3UganVzdCBuZWVkIHRvIG1ha2Ugc3VyZSBpdAorICBpcyBub3QgY29udHJvbGxlZCBieSBhbnkgdGVtcCBjaGFubmVsLCBmb3IgZXhhbXBsZSwgeW91IHdhbnQgdG8gc2V0IGZhbjEKKyAgdG8gbWFudWFsIG1vZGUsIHlvdSBuZWVkIHRvIGNoZWNrIHRoZSB2YWx1ZSBvZiB0ZW1wWzEtNl1fZmFuX21hcCwgbWFrZQorICBzdXJlIGJpdCAwIGlzIGNsZWFyZWQgaW4gdGhlIDYgdmFsdWVzLiBBbmQgdGhlbiBzZXQgdGhlIHB3bTEgdmFsdWUgdG8KKyAgY29udHJvbCB0aGUgZmFuLgorCisgIEVhY2ggdGVtcGVyYXR1cmUgY2hhbm5lbCBjYW4gY29udHJvbCBhbGwgdGhlIDggUFdNIG91dHB1dHMgKGJ5IHNldHRpbmcgdGhlCisgIGNvcnJlc3BvbmRpbmcgYml0IGluIHRlbXBYX2Zhbl9tYXApLCB5b3UgY2FuIHNldCB0aGUgdGVtcGVyYXR1cmUgY2hhbm5lbAorICBtb2RlIHVzaW5nIHRlbXBbMS02XV9wd21fZW5hYmxlLCAyIGlzIFRoZXJtYWwgQ3J1aXNlIG1vZGUgYW5kIDMKKyAgaXMgdGhlIFNtYXJ0RmFuSUkgbW9kZS4gVGVtcGVyYXR1cmUgY2hhbm5lbHMgd2lsbCB0cnkgdG8gc3BlZWQgdXAgb3IKKyAgc2xvdyBkb3duIGFsbCBjb250cm9sbGVkIGZhbnMsIHRoaXMgbWVhbnMgb25lIGZhbiBjYW4gcmVjZWl2ZSBkaWZmZXJlbnQKKyAgUFdNIHZhbHVlIHJlcXVlc3RzIGZyb20gZGlmZmVyZW50IHRlbXBlcmF0dXJlIGNoYW5uZWxzLCBidXQgdGhlIGNoaXAKKyAgd2lsbCBhbHdheXMgcGljayB0aGUgc2FmZXN0IChtYXgpIFBXTSB2YWx1ZSBmb3IgZWFjaCBmYW4uCisKKyAgSW4gVGhlcm1hbCBDcnVpc2UgbW9kZSwgdGhlIGNoaXAgYXR0ZW1wdHMgdG8ga2VlcCB0aGUgdGVtcGVyYXR1cmUgYXQgYQorICBwcmVkZWZpbmVkIHZhbHVlLCB3aXRoaW4gYSB0b2xlcmFuY2UgbWFyZ2luLiBTbyBpZiB0ZW1wWF9pbnB1dCA+CisgIHRoZXJtYWxfY3J1aXNlWCArIHRvbGVyYW5jZVgsIHRoZSBjaGlwIHdpbGwgaW5jcmVhc2UgdGhlIFBXTSB2YWx1ZSwKKyAgaWYgdGVtcFhfaW5wdXQgPCB0aGVybWFsX2NydWlzZVggLSB0b2xlcmFuY2VYLCB0aGUgY2hpcCB3aWxsIGRlY3JlYXNlCisgIHRoZSBQV00gdmFsdWUuIElmIHRoZSB0ZW1wZXJhdHVyZSBpcyB3aXRoaW4gdGhlIHRvbGVyYW5jZSByYW5nZSwgdGhlIFBXTQorICB2YWx1ZSBpcyBsZWZ0IHVuY2hhbmdlZC4KKworICBTbWFydEZhbklJIHdvcmtzIGRpZmZlcmVudGx5LCB5b3UgaGF2ZSB0byBkZWZpbmUgdXAgdG8gNyBQV00sIHRlbXBlcmF0dXJlCisgIHRyaXAgcG9pbnRzLCBkZWZpbmluZyBhIFBXTS90ZW1wZXJhdHVyZSBjdXJ2ZSB3aGljaCB0aGUgY2hpcCB3aWxsIGZvbGxvdy4KKyAgV2hpbGUgbm90IGZ1bmRhbWVudGFsbHkgZGlmZmVyZW50IGZyb20gdGhlIFRoZXJtYWwgQ3J1aXNlIG1vZGUsIHRoZQorICBpbXBsZW1lbnRhdGlvbiBpcyBxdWl0ZSBkaWZmZXJlbnQsIGdpdmluZyB5b3UgYSBmaW5lci1ncmFpbmVkIGNvbnRyb2wuCisKKyogQ2hhc3NpcworICBJZiB0aGUgY2FzZSBvcGVuIGFsYXJtIHRyaWdnZXJzLCBpdCB3aWxsIHN0YXkgaW4gdGhpcyBzdGF0ZSB1bmxlc3MgY2xlYXJlZAorICBieSB3cml0aW5nIDAgdG8gdGhlIHN5c2ZzIGZpbGUgImludHJ1c2lvbjBfYWxhcm0iLgorCisqIFZJRCBhbmQgVlJNCisgIFRoZSBWUk0gdmVyc2lvbiBpcyBkZXRlY3RlZCBhdXRvbWF0aWNhbGx5LCBkb24ndCBtb2RpZnkgdGhlIGl0IHVubGVzcyB5b3UKKyAgKmRvKiBrbm93IHRoZSBjcHUgVlJNIHZlcnNpb24gYW5kIGl0J3Mgbm90IHByb3Blcmx5IGRldGVjdGVkLgorCisKK05vdGVzCistLS0tLQorCisgIE9ubHkgRmFuMS01IGFuZCBQV00xLTMgYXJlIGd1YXJhbnRlZWQgdG8gYWx3YXlzIGV4aXN0LCBvdGhlciBmYW4gaW5wdXRzIGFuZAorICBQV00gb3V0cHV0cyBtYXkgb3IgbWF5IG5vdCBleGlzdCBkZXBlbmRpbmcgb24gdGhlIGNoaXAgcGluIGNvbmZpZ3VyYXRpb24uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3c4Mzc5NSBiL0RvY3VtZW50YXRpb24vaHdtb24vdzgzNzk1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzZTY3ODIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3c4Mzc5NQpAQCAtMCwwICsxLDEyNyBAQAorS2VybmVsIGRyaXZlciB3ODM3OTUKKz09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBXaW5ib25kL051dm90b24gVzgzNzk1RworICAgIFByZWZpeDogJ3c4Mzc5NWcnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJjIC0gMHgyZgorICAgIERhdGFzaGVldDogQXZhaWxhYmxlIGZvciBkb3dubG9hZCBvbiBudXZvdG9uLmNvbQorICAqIFdpbmJvbmQvTnV2b3RvbiBXODM3OTVBREcKKyAgICBQcmVmaXg6ICd3ODM3OTVhZGcnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDJjIC0gMHgyZgorICAgIERhdGFzaGVldDogQXZhaWxhYmxlIGZvciBkb3dubG9hZCBvbiBudXZvdG9uLmNvbQorCitBdXRob3JzOgorICAgIFdlaSBTb25nIChOdXZvdG9uKQorICAgIEplYW4gRGVsdmFyZSA8amRlbHZhcmVAc3VzZS5kZT4KKworCitQaW4gbWFwcGluZworLS0tLS0tLS0tLS0KKworSGVyZSBpcyBhIHN1bW1hcnkgb2YgdGhlIHBpbiBtYXBwaW5nIGZvciB0aGUgVzgzNzk1RyBhbmQgVzgzNzk1QURHLgorVGhpcyBjYW4gYmUgdXNlZnVsIHRvIGNvbnZlcnQgZGF0YSBwcm92aWRlZCBieSBib2FyZCBtYW51ZmFjdHVyZXJzCitpbnRvIHdvcmtpbmcgbGlic2Vuc29ycyBjb25maWd1cmF0aW9uIHN0YXRlbWVudHMuCisKKyAgICBXODM3OTVHCQkJfAorICBQaW4JfCBOYW1lCQkJfCBSZWdpc3Rlcgl8IFN5c2ZzIGF0dHJpYnV0ZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAxMwl8IFZTRU4xIChWQ09SRTEpCXwgMTBoCQl8IGluMAorICAgMTQJfCBWU0VOMiAoVkNPUkUyKQl8IDExaAkJfCBpbjEKKyAgIDE1CXwgVlNFTjMgKFZDT1JFMykJfCAxMmgJCXwgaW4yCisgICAxNgl8IFZTRU40CQkJfCAxM2gJCXwgaW4zCisgICAxNwl8IFZTRU41CQkJfCAxNGgJCXwgaW40CisgICAxOAl8IFZTRU42CQkJfCAxNWgJCXwgaW41CisgICAxOQl8IFZTRU43CQkJfCAxNmgJCXwgaW42CisgICAyMAl8IFZTRU44CQkJfCAxN2gJCXwgaW43CisgICAyMQl8IFZTRU45CQkJfCAxOGgJCXwgaW44CisgICAyMgl8IFZTRU4xMAkJfCAxOWgJCXwgaW45CisgICAyMwl8IFZTRU4xMQkJfCAxQWgJCXwgaW4xMAorICAgMjgJfCBWVFQJCQl8IDFCaAkJfCBpbjExCisgICAyNAl8IDNWREQJCQl8IDFDaAkJfCBpbjEyCisgICAyNQl8IDNWU0IJCQl8IDFEaAkJfCBpbjEzCisgICAyNgl8IFZCQVQJCQl8IDFFaAkJfCBpbjE0CisgICAgMwl8IFZTRU4xMi9UUjUJCXwgMUZoCQl8IGluMTUvdGVtcDUKKyAgICA0CXwgVlNFTjEzL1RSNQkJfCAyMGgJCXwgaW4xNi90ZW1wNgorICA1LyAgNgl8IFZEU0VOMTQvVFIxL1REMQl8IDIxaAkJfCBpbjE3L3RlbXAxCisgIDcvICA4CXwgVkRTRU4xNS9UUjIvVEQyCXwgMjJoCQl8IGluMTgvdGVtcDIKKyAgOS8gMTAJfCBWRFNFTjE2L1RSMy9URDMJfCAyM2gJCXwgaW4xOS90ZW1wMworIDExLyAxMgl8IFZEU0VOMTcvVFI0L1RENAl8IDI0aAkJfCBpbjIwL3RlbXA0CisgICA0MAl8IEZBTklOMQkJfCAyRWgJCXwgZmFuMQorICAgNDIJfCBGQU5JTjIJCXwgMkZoCQl8IGZhbjIKKyAgIDQ0CXwgRkFOSU4zCQl8IDMwaAkJfCBmYW4zCisgICA0Ngl8IEZBTklONAkJfCAzMWgJCXwgZmFuNAorICAgNDgJfCBGQU5JTjUJCXwgMzJoCQl8IGZhbjUKKyAgIDUwCXwgRkFOSU42CQl8IDMzaAkJfCBmYW42CisgICA1Mgl8IEZBTklONwkJfCAzNGgJCXwgZmFuNworICAgNTQJfCBGQU5JTjgJCXwgMzVoCQl8IGZhbjgKKyAgIDU3CXwgRkFOSU45CQl8IDM2aAkJfCBmYW45CisgICA1OAl8IEZBTklOMTAJCXwgMzdoCQl8IGZhbjEwCisgICA1OQl8IEZBTklOMTEJCXwgMzhoCQl8IGZhbjExCisgICA2MAl8IEZBTklOMTIJCXwgMzloCQl8IGZhbjEyCisgICAzMQl8IEZBTklOMTMJCXwgM0FoCQl8IGZhbjEzCisgICAzNQl8IEZBTklOMTQJCXwgM0JoCQl8IGZhbjE0CisgICA0MQl8IEZBTkNUTDEJCXwgMTBoIChiYW5rIDIpCXwgcHdtMQorICAgNDMJfCBGQU5DVEwyCQl8IDExaCAoYmFuayAyKQl8IHB3bTIKKyAgIDQ1CXwgRkFOQ1RMMwkJfCAxMmggKGJhbmsgMikJfCBwd20zCisgICA0Nwl8IEZBTkNUTDQJCXwgMTNoIChiYW5rIDIpCXwgcHdtNAorICAgNDkJfCBGQU5DVEw1CQl8IDE0aCAoYmFuayAyKQl8IHB3bTUKKyAgIDUxCXwgRkFOQ1RMNgkJfCAxNWggKGJhbmsgMikJfCBwd202CisgICA1Mwl8IEZBTkNUTDcJCXwgMTZoIChiYW5rIDIpCXwgcHdtNworICAgNTUJfCBGQU5DVEw4CQl8IDE3aCAoYmFuayAyKQl8IHB3bTgKKyAyOS8gMzAJfCBQRUNJL1RTSSAoRFRTMSkJfCAyNmgJCXwgdGVtcDcKKyAyOS8gMzAJfCBQRUNJL1RTSSAoRFRTMikJfCAyN2gJCXwgdGVtcDgKKyAyOS8gMzAJfCBQRUNJL1RTSSAoRFRTMykJfCAyOGgJCXwgdGVtcDkKKyAyOS8gMzAJfCBQRUNJL1RTSSAoRFRTNCkJfCAyOWgJCXwgdGVtcDEwCisgMjkvIDMwCXwgUEVDSS9UU0kgKERUUzUpCXwgMkFoCQl8IHRlbXAxMQorIDI5LyAzMAl8IFBFQ0kvVFNJIChEVFM2KQl8IDJCaAkJfCB0ZW1wMTIKKyAyOS8gMzAJfCBQRUNJL1RTSSAoRFRTNykJfCAyQ2gJCXwgdGVtcDEzCisgMjkvIDMwCXwgUEVDSS9UU0kgKERUUzgpCXwgMkRoCQl8IHRlbXAxNAorICAgMjcJfCBDQVNFT1BFTiMJCXwgNDZoCQl8IGludHJ1c2lvbjAKKworICAgIFc4Mzc5NUFERwkJCXwKKyAgUGluCXwgTmFtZQkJCXwgUmVnaXN0ZXIJfCBTeXNmcyBhdHRyaWJ1dGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgMTAJfCBWU0VOMSAoVkNPUkUxKQl8IDEwaAkJfCBpbjAKKyAgIDExCXwgVlNFTjIgKFZDT1JFMikJfCAxMWgJCXwgaW4xCisgICAxMgl8IFZTRU4zIChWQ09SRTMpCXwgMTJoCQl8IGluMgorICAgMTMJfCBWU0VONAkJCXwgMTNoCQl8IGluMworICAgMTQJfCBWU0VONQkJCXwgMTRoCQl8IGluNAorICAgMTUJfCBWU0VONgkJCXwgMTVoCQl8IGluNQorICAgMTYJfCBWU0VONwkJCXwgMTZoCQl8IGluNgorICAgMTcJfCBWU0VOOAkJCXwgMTdoCQl8IGluNworICAgMjIJfCBWVFQJCQl8IDFCaAkJfCBpbjExCisgICAxOAl8IDNWREQJCQl8IDFDaAkJfCBpbjEyCisgICAxOQl8IDNWU0IJCQl8IDFEaAkJfCBpbjEzCisgICAyMAl8IFZCQVQJCQl8IDFFaAkJfCBpbjE0CisgICA0OAl8IFZTRU4xMi9UUjUJCXwgMUZoCQl8IGluMTUvdGVtcDUKKyAgICAxCXwgVlNFTjEzL1RSNQkJfCAyMGgJCXwgaW4xNi90ZW1wNgorICAyLyAgMwl8IFZEU0VOMTQvVFIxL1REMQl8IDIxaAkJfCBpbjE3L3RlbXAxCisgIDQvICA1CXwgVkRTRU4xNS9UUjIvVEQyCXwgMjJoCQl8IGluMTgvdGVtcDIKKyAgNi8gIDcJfCBWRFNFTjE2L1RSMy9URDMJfCAyM2gJCXwgaW4xOS90ZW1wMworICA4LyAgOQl8IFZEU0VOMTcvVFI0L1RENAl8IDI0aAkJfCBpbjIwL3RlbXA0CisgICAzMgl8IEZBTklOMQkJfCAyRWgJCXwgZmFuMQorICAgMzQJfCBGQU5JTjIJCXwgMkZoCQl8IGZhbjIKKyAgIDM2CXwgRkFOSU4zCQl8IDMwaAkJfCBmYW4zCisgICAzNwl8IEZBTklONAkJfCAzMWgJCXwgZmFuNAorICAgMzgJfCBGQU5JTjUJCXwgMzJoCQl8IGZhbjUKKyAgIDM5CXwgRkFOSU42CQl8IDMzaAkJfCBmYW42CisgICA0MAl8IEZBTklONwkJfCAzNGgJCXwgZmFuNworICAgNDEJfCBGQU5JTjgJCXwgMzVoCQl8IGZhbjgKKyAgIDQzCXwgRkFOSU45CQl8IDM2aAkJfCBmYW45CisgICA0NAl8IEZBTklOMTAJCXwgMzdoCQl8IGZhbjEwCisgICA0NQl8IEZBTklOMTEJCXwgMzhoCQl8IGZhbjExCisgICA0Ngl8IEZBTklOMTIJCXwgMzloCQl8IGZhbjEyCisgICAyNAl8IEZBTklOMTMJCXwgM0FoCQl8IGZhbjEzCisgICAyOAl8IEZBTklOMTQJCXwgM0JoCQl8IGZhbjE0CisgICAzMwl8IEZBTkNUTDEJCXwgMTBoIChiYW5rIDIpCXwgcHdtMQorICAgMzUJfCBGQU5DVEwyCQl8IDExaCAoYmFuayAyKQl8IHB3bTIKKyAgIDIzCXwgUEVDSSAoRFRTMSkJCXwgMjZoCQl8IHRlbXA3CisgICAyMwl8IFBFQ0kgKERUUzIpCQl8IDI3aAkJfCB0ZW1wOAorICAgMjMJfCBQRUNJIChEVFMzKQkJfCAyOGgJCXwgdGVtcDkKKyAgIDIzCXwgUEVDSSAoRFRTNCkJCXwgMjloCQl8IHRlbXAxMAorICAgMjMJfCBQRUNJIChEVFM1KQkJfCAyQWgJCXwgdGVtcDExCisgICAyMwl8IFBFQ0kgKERUUzYpCQl8IDJCaAkJfCB0ZW1wMTIKKyAgIDIzCXwgUEVDSSAoRFRTNykJCXwgMkNoCQl8IHRlbXAxMworICAgMjMJfCBQRUNJIChEVFM4KQkJfCAyRGgJCXwgdGVtcDE0CisgICAyMQl8IENBU0VPUEVOIwkJfCA0NmgJCXwgaW50cnVzaW9uMApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi93ODNsNzg1dHMgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3c4M2w3ODV0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODk3ODQ3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi93ODNsNzg1dHMKQEAgLTAsMCArMSw0MCBAQAorS2VybmVsIGRyaXZlciB3ODNsNzg1dHMKKz09PT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBXaW5ib25kIFc4M0w3ODVUUy1TCisgICAgUHJlZml4OiAndzgzbDc4NXRzJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgyZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBXaW5ib25kIFVTQSB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3LndpbmJvbmQtdXNhLmNvbS9wcm9kdWN0cy93aW5ib25kX3Byb2R1Y3RzL3BkZnMvUENJQy9XODNMNzg1VFMtUy5wZGYKKworQXV0aG9yczoKKyAgICAgICAgSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmRlPgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIFc4M0w3ODVUUy1TIGlzIGEgZGlnaXRhbCB0ZW1wZXJhdHVyZSBzZW5zb3IuIEl0IHNlbnNlcyB0aGUKK3RlbXBlcmF0dXJlIG9mIGEgc2luZ2xlIGV4dGVybmFsIGRpb2RlLiBUaGUgaGlnaCBsaW1pdCBpcwordGhlb3JldGljYWxseSBkZWZpbmVkIGFzIDg1IG9yIDEwMCBkZWdyZWVzIEMgdGhyb3VnaCBhIGNvbWJpbmF0aW9uCitvZiBleHRlcm5hbCByZXNpc3RvcnMsIHNvIHRoZSB1c2VyIGNhbm5vdCBjaGFuZ2UgaXQuIFZhbHVlcyBzZWVuIHNvCitmYXIgc3VnZ2VzdCB0aGF0IHRoZSB0d28gcG9zc2libGUgbGltaXRzIGFyZSBhY3R1YWxseSA5NSBhbmQgMTEwCitkZWdyZWVzIEMuIFRoZSBkYXRhc2hlZXQgaXMgcmF0aGVyIHBvb3IgYW5kIG9idmlvdXNseSBpbmFjY3VyYXRlCitvbiBzZXZlcmFsIHBvaW50cyBpbmNsdWRpbmcgdGhpcyBvbmUuCisKK0FsbCB0ZW1wZXJhdHVyZSB2YWx1ZXMgYXJlIGdpdmVuIGluIGRlZ3JlZXMgQ2Vsc2l1cy4gUmVzb2x1dGlvbgoraXMgMS4wIGRlZ3JlZS4gU2VlIHRoZSBkYXRhc2hlZXQgZm9yIGRldGFpbHMuCisKK1RoZSB3ODNsNzg1dHMgZHJpdmVyIHdpbGwgbm90IHVwZGF0ZSBpdHMgdmFsdWVzIG1vcmUgZnJlcXVlbnRseSB0aGFuCitldmVyeSBvdGhlciBzZWNvbmQ7IHJlYWRpbmcgdGhlbSBtb3JlIG9mdGVuIHdpbGwgZG8gbm8gaGFybSwgYnV0IHdpbGwKK3JldHVybiAnb2xkJyB2YWx1ZXMuCisKK0tub3duIElzc3VlcworLS0tLS0tLS0tLS0tCisKK09uIHNvbWUgc3lzdGVtcyAoQXN1cyksIHRoZSBCSU9TIGlzIGtub3duIHRvIGludGVyZmVyZSB3aXRoIHRoZSBkcml2ZXIKK2FuZCBjYXVzZSByZWFkIGVycm9ycy4gT3IgbWF5YmUgdGhlIFc4M0w3ODVUUy1TIGNoaXAgaXMgc2ltcGx5IHVucmVsaWFibGUsCit3ZSBkb24ndCByZWFsbHkga25vdy4gVGhlIGRyaXZlciB3aWxsIHJldHJ5IGEgZ2l2ZW4gbnVtYmVyIG9mIHRpbWVzCisoNSBieSBkZWZhdWx0KSBhbmQgdGhlbiBnaXZlIHVwLCByZXR1cm5pbmcgdGhlIG9sZCB2YWx1ZSAob3IgMCBpZgordGhlcmUgaXMgbm8gb2xkIHZhbHVlKS4gSXQgc2VlbXMgdG8gd29yayB3ZWxsIGVub3VnaCBzbyB0aGF0IHlvdSBzaG91bGQKK25vdCBub3RpY2UgYW55dGhpbmcuIFRoYW5rcyB0byBKYW1lcyBCb2x0IGZvciBoZWxwaW5nIHRlc3QgdGhpcyBmZWF0dXJlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi93ODNsNzg2bmcgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3c4M2w3ODZuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOGY1NWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi93ODNsNzg2bmcKQEAgLTAsMCArMSw1NCBAQAorS2VybmVsIGRyaXZlciB3ODNsNzg2bmcKKz09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogV2luYm9uZCBXODNMNzg2TkcvVzgzTDc4Nk5SCisgICAgUHJlZml4OiAndzgzbDc4Nm5nJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHgyZSAtIDB4MmYKKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cud2luYm9uZC11c2EuY29tL3Byb2R1Y3RzL3dpbmJvbmRfcHJvZHVjdHMvcGRmcy9QQ0lDL1c4M0w3ODZOUk5HMDkucGRmCisKK0F1dGhvcjogS2V2aW4gTG8gPGtldmxvQGtldmxvLm9yZz4KKworCitNb2R1bGUgUGFyYW1ldGVycworLS0tLS0tLS0tLS0tLS0tLS0KKworKiByZXNldCBib29sZWFuCisgIChkZWZhdWx0IDApCisgIFVzZSAncmVzZXQ9MScgdG8gcmVzZXQgdGhlIGNoaXAgKHZpYSBpbmRleCAweDQwLCBiaXQgNykuIFRoZSBkZWZhdWx0CisgIGJlaGF2aW9yIGlzIG5vIGNoaXAgcmVzZXQgdG8gcHJlc2VydmUgQklPUyBzZXR0aW5ncworCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIFdpbmJvbmQgVzgzTDc4Nk5HL1c4M0w3ODZOUiBjaGlwcy4KKworVGhlIGRyaXZlciBpbXBsZW1lbnRzIHR3byB0ZW1wZXJhdHVyZSBzZW5zb3JzLCB0d28gZmFuIHJvdGF0aW9uIHNwZWVkCitzZW5zb3JzLCBhbmQgdGhyZWUgdm9sdGFnZSBzZW5zb3JzLgorCitUZW1wZXJhdHVyZXMgYXJlIG1lYXN1cmVkIGluIGRlZ3JlZXMgQ2Vsc2l1cyBhbmQgbWVhc3VyZW1lbnQgcmVzb2x1dGlvbiBpcyAxCitkZWdDIGZvciB0ZW1wMSBhbmQgdGVtcDIuCisKK0ZhbiByb3RhdGlvbiBzcGVlZHMgYXJlIHJlcG9ydGVkIGluIFJQTSAocm90YXRpb25zIHBlciBtaW51dGUpLiBGYW4gcmVhZGluZ3MKK3JlYWRpbmdzIGNhbiBiZSBkaXZpZGVkIGJ5IGEgcHJvZ3JhbW1hYmxlIGRpdmlkZXIgKDEsIDIsIDQsIDgsIDE2LCAzMiwgNjQKK29yIDEyOCBmb3IgZmFuIDEvMikgdG8gZ2l2ZSB0aGUgcmVhZGluZ3MgbW9yZSByYW5nZSBvciBhY2N1cmFjeS4KKworVm9sdGFnZSBzZW5zb3JzIChhbHNvIGtub3duIGFzIElOIHNlbnNvcnMpIHJlcG9ydCB0aGVpciB2YWx1ZXMgaW4gbWlsbGl2b2x0cy4KK0FuIGFsYXJtIGlzIHRyaWdnZXJlZCBpZiB0aGUgdm9sdGFnZSBoYXMgY3Jvc3NlZCBhIHByb2dyYW1tYWJsZSBtaW5pbXVtCitvciBtYXhpbXVtIGxpbWl0LgorCisvc3lzIGZpbGVzCistLS0tLS0tLS0tCisKK3B3bVsxLTJdIC0gdGhpcyBmaWxlIHN0b3JlcyBQV00gZHV0eSBjeWNsZSBvciBEQyB2YWx1ZSAoZmFuIHNwZWVkKSBpbiByYW5nZToKKwkgICAgMCAoc3RvcCkgdG8gMjU1IChmdWxsKQorcHdtWzEtMl1fZW5hYmxlIC0gdGhpcyBmaWxlIGNvbnRyb2xzIG1vZGUgb2YgZmFuL3RlbXBlcmF0dXJlIGNvbnRyb2w6CisgICAgICAgICAgICAqIDAgTWFudWFsIE1vZGUKKyAgICAgICAgICAgICogMSBUaGVybWFsIENydWlzZQorICAgICAgICAgICAgKiAyIFNtYXJ0IEZhbiBJSQorICAgICAgICAgICAgKiA0IEZBTl9TRVQKK3B3bVsxLTJdX21vZGUgLSBTZWxlY3QgUFdNIG9mIERDIG1vZGUKKyAgICAgICAgICAgICogMCBEQworICAgICAgICAgICAgKiAxIFBXTQordG9sZXJhbmNlWzEtMl0gLSBWYWx1ZSBpbiBkZWdyZWVzIG9mIENlbHNpdXMgKGRlZ0MpIGZvciArLSBUCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3dtODMxeCBiL0RvY3VtZW50YXRpb24vaHdtb24vd204MzF4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNDQ2NzUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3dtODMxeApAQCAtMCwwICsxLDM3IEBACitLZXJuZWwgZHJpdmVyIHdtODMxeC1od21vbgorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIFdvbGZzb24gTWljcm9lbGVjdHJvbmljcyBXTTgzMXggUE1JQ3MKKyAgICBQcmVmaXg6ICd3bTgzMXgnCisgICAgRGF0YXNoZWV0OgorCWh0dHA6Ly93d3cud29sZnNvbm1pY3JvLmNvbS9wcm9kdWN0cy9XTTgzMTAKKwlodHRwOi8vd3d3LndvbGZzb25taWNyby5jb20vcHJvZHVjdHMvV004MzExCisJaHR0cDovL3d3dy53b2xmc29ubWljcm8uY29tL3Byb2R1Y3RzL1dNODMxMgorCitBdXRob3JzOiBNYXJrIEJyb3duIDxicm9vbmllQG9wZW5zb3VyY2Uud29sZnNvbm1pY3JvLmNvbT4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoZSBXTTgzMXggc2VyaWVzIG9mIFBNSUNzIGluY2x1ZGUgYW4gQVVYQURDIHdoaWNoIGNhbiBiZSB1c2VkIHRvCittb25pdG9yIGEgcmFuZ2Ugb2Ygc3lzdGVtIG9wZXJhdGluZyBwYXJhbWV0ZXJzLCBpbmNsdWRpbmcgdGhlIHZvbHRhZ2VzCitvZiB0aGUgbWFqb3Igc3VwcGxpZXMgd2l0aGluIHRoZSBzeXN0ZW0uICBDdXJyZW50bHkgdGhlIGRyaXZlciBwcm92aWRlcworcmVwb3J0aW5nIG9mIGFsbCB0aGUgaW5wdXQgdmFsdWVzIGJ1dCBkb2VzIG5vdCBwcm92aWRlIGFueSBhbGFybXMuCisKK1ZvbHRhZ2UgTW9uaXRvcmluZworLS0tLS0tLS0tLS0tLS0tLS0tCisKK1ZvbHRhZ2VzIGFyZSBzYW1wbGVkIGJ5IGEgMTIgYml0IEFEQy4gIFZvbHRhZ2VzIGluIG1pbGxpdm9sdHMgYXJlIDEuNDY1Cit0aW1lcyB0aGUgQURDIHZhbHVlLgorCitUZW1wZXJhdHVyZSBNb25pdG9yaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RlbXBlcmF0dXJlcyBhcmUgc2FtcGxlZCBieSBhIDEyIGJpdCBBREMuICBDaGlwIGFuZCBiYXR0ZXJ5IHRlbXBlcmF0dXJlcworYXJlIGF2YWlsYWJsZS4gIFRoZSBjaGlwIHRlbXBlcmF0dXJlIGlzIGNhbGN1bGF0ZWQgYXM6CisKKwlEZWdyZWVzIGNlbHNpdXMgPSAoNTEyLjE4IC0gZGF0YSkgLyAxLjA5ODMKKword2hpbGUgdGhlIGJhdHRlcnkgdGVtcGVyYXR1cmUgY2FsY3VsYXRpb24gd2lsbCBkZXBlbmQgb24gdGhlIE5UQwordGhlcm1pc3RvciBjb21wb25lbnQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL3dtODM1MCBiL0RvY3VtZW50YXRpb24vaHdtb24vd204MzUwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ZjkyM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3dtODM1MApAQCAtMCwwICsxLDI2IEBACitLZXJuZWwgZHJpdmVyIHdtODM1MC1od21vbgorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIFdvbGZzb24gTWljcm9lbGVjdHJvbmljcyBXTTgzNXggUE1JQ3MKKyAgICBQcmVmaXg6ICd3bTgzNTAnCisgICAgRGF0YXNoZWV0OgorCWh0dHA6Ly93d3cud29sZnNvbm1pY3JvLmNvbS9wcm9kdWN0cy9XTTgzNTAKKwlodHRwOi8vd3d3LndvbGZzb25taWNyby5jb20vcHJvZHVjdHMvV004MzUxCisJaHR0cDovL3d3dy53b2xmc29ubWljcm8uY29tL3Byb2R1Y3RzL1dNODM1MgorCitBdXRob3JzOiBNYXJrIEJyb3duIDxicm9vbmllQG9wZW5zb3VyY2Uud29sZnNvbm1pY3JvLmNvbT4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoZSBXTTgzNXggc2VyaWVzIG9mIFBNSUNzIGluY2x1ZGUgYW4gQVVYQURDIHdoaWNoIGNhbiBiZSB1c2VkIHRvCittb25pdG9yIGEgcmFuZ2Ugb2Ygc3lzdGVtIG9wZXJhdGluZyBwYXJhbWV0ZXJzLCBpbmNsdWRpbmcgdGhlIHZvbHRhZ2VzCitvZiB0aGUgbWFqb3Igc3VwcGxpZXMgd2l0aGluIHRoZSBzeXN0ZW0uICBDdXJyZW50bHkgdGhlIGRyaXZlciBwcm92aWRlcworc2ltcGxlIGFjY2VzcyB0byB0aGVzZSBtYWpvciBzdXBwbGllcy4KKworVm9sdGFnZSBNb25pdG9yaW5nCistLS0tLS0tLS0tLS0tLS0tLS0KKworVm9sdGFnZXMgYXJlIHNhbXBsZWQgYnkgYSAxMiBiaXQgQURDLiAgRm9yIHRoZSBpbnRlcm5hbCBzdXBwbGllcyB0aGUgQURDCitpcyByZWZlcmVuY2VkIHRvIHRoZSBzeXN0ZW0gVlJUQy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vemw2MTAwIGIvRG9jdW1lbnRhdGlvbi9od21vbi96bDYxMDAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM5MDhhNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vemw2MTAwCkBAIC0wLDAgKzEsMTYwIEBACitLZXJuZWwgZHJpdmVyIHpsNjEwMAorPT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIEludGVyc2lsIC8gWmlsa2VyIExhYnMgWkwyMDA0CisgICAgUHJlZml4OiAnemwyMDA0JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OiBodHRwOi8vd3d3LmludGVyc2lsLmNvbS9kYXRhL2ZuL2ZuNjg0Ny5wZGYKKyAgKiBJbnRlcnNpbCAvIFppbGtlciBMYWJzIFpMMjAwNQorICAgIFByZWZpeDogJ3psMjAwNScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5pbnRlcnNpbC5jb20vZGF0YS9mbi9mbjY4NDgucGRmCisgICogSW50ZXJzaWwgLyBaaWxrZXIgTGFicyBaTDIwMDYKKyAgICBQcmVmaXg6ICd6bDIwMDYnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IC0KKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cuaW50ZXJzaWwuY29tL2RhdGEvZm4vZm42ODUwLnBkZgorICAqIEludGVyc2lsIC8gWmlsa2VyIExhYnMgWkwyMDA4CisgICAgUHJlZml4OiAnemwyMDA4JworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OiBodHRwOi8vd3d3LmludGVyc2lsLmNvbS9kYXRhL2ZuL2ZuNjg1OS5wZGYKKyAgKiBJbnRlcnNpbCAvIFppbGtlciBMYWJzIFpMMjEwNQorICAgIFByZWZpeDogJ3psMjEwNScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5pbnRlcnNpbC5jb20vZGF0YS9mbi9mbjY4NTEucGRmCisgICogSW50ZXJzaWwgLyBaaWxrZXIgTGFicyBaTDIxMDYKKyAgICBQcmVmaXg6ICd6bDIxMDYnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IC0KKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cuaW50ZXJzaWwuY29tL2RhdGEvZm4vZm42ODUyLnBkZgorICAqIEludGVyc2lsIC8gWmlsa2VyIExhYnMgWkw2MTAwCisgICAgUHJlZml4OiAnemw2MTAwJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OiBodHRwOi8vd3d3LmludGVyc2lsLmNvbS9kYXRhL2ZuL2ZuNjg3Ni5wZGYKKyAgKiBJbnRlcnNpbCAvIFppbGtlciBMYWJzIFpMNjEwNQorICAgIFByZWZpeDogJ3psNjEwNScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5pbnRlcnNpbC5jb20vZGF0YS9mbi9mbjY5MDYucGRmCisgICogSW50ZXJzaWwgLyBaaWxrZXIgTGFicyBaTDkxMDFNCisgICAgUHJlZml4OiAnemw5MTAxJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiAtCisgICAgRGF0YXNoZWV0OiBodHRwOi8vd3d3LmludGVyc2lsLmNvbS9kYXRhL2ZuL2ZuNzY2OS5wZGYKKyAgKiBJbnRlcnNpbCAvIFppbGtlciBMYWJzIFpMOTExN00KKyAgICBQcmVmaXg6ICd6bDkxMTcnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IC0KKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cuaW50ZXJzaWwuY29tL2RhdGEvZm4vZm43OTE0LnBkZgorICAqIEVyaWNzc29uIEJNUjQ1MCwgQk1SNDUxCisgICAgUHJlZml4OiAnYm1yNDUwJywgJ2JtcjQ1MScKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgIERhdGFzaGVldDoKK2h0dHA6Ly9hcmNoaXZlLmVyaWNzc29uLm5ldC9zZXJ2aWNlL2ludGVybmV0L3BpY292L2dldD9Eb2NObz0yODcwMS1FTi9MWlQxNDY0MDEKKyAgKiBFcmljc3NvbiBCTVI0NjIsIEJNUjQ2MywgQk1SNDY0CisgICAgUHJlZml4ZXM6ICdibXI0NjInLCAnYm1yNDYzJywgJ2JtcjQ2NCcKKyAgICBBZGRyZXNzZXMgc2Nhbm5lZDogLQorICAgIERhdGFzaGVldDoKK2h0dHA6Ly9hcmNoaXZlLmVyaWNzc29uLm5ldC9zZXJ2aWNlL2ludGVybmV0L3BpY292L2dldD9Eb2NObz0yODcwMS1FTi9MWlQxNDYyNTYKKworCitBdXRob3I6IEd1ZW50ZXIgUm9lY2sgPGxpbnV4QHJvZWNrLXVzLm5ldD4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgc3VwcG9ydHMgaGFyZHdhcmUgbW9udG9yaW5nIGZvciBJbnRlcnNpbCAvIFppbGtlciBMYWJzIFpMNjEwMCBhbmQKK2NvbXBhdGlibGUgZGlnaXRhbCBEQy1EQyBjb250cm9sbGVycy4KKworVGhlIGRyaXZlciBpcyBhIGNsaWVudCBkcml2ZXIgdG8gdGhlIGNvcmUgUE1CdXMgZHJpdmVyLiBQbGVhc2Ugc2VlCitEb2N1bWVudGF0aW9uL2h3bW9uL3BtYnVzIGFuZCBEb2N1bWVudGF0aW9uLmh3bW9uL3BtYnVzLWNvcmUgZm9yIGRldGFpbHMKK29uIFBNQnVzIGNsaWVudCBkcml2ZXJzLgorCisKK1VzYWdlIE5vdGVzCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBkb2VzIG5vdCBhdXRvLWRldGVjdCBkZXZpY2VzLiBZb3Ugd2lsbCBoYXZlIHRvIGluc3RhbnRpYXRlIHRoZQorZGV2aWNlcyBleHBsaWNpdGx5LiBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaTJjL2luc3RhbnRpYXRpbmctZGV2aWNlcyBmb3IKK2RldGFpbHMuCisKK1dBUk5JTkc6IERvIG5vdCBhY2Nlc3MgY2hpcCByZWdpc3RlcnMgdXNpbmcgdGhlIGkyY2R1bXAgY29tbWFuZCwgYW5kIGRvIG5vdCB1c2UKK2FueSBvZiB0aGUgaTJjdG9vbHMgY29tbWFuZHMgb24gYSBjb21tYW5kIHJlZ2lzdGVyIHVzZWQgdG8gc2F2ZSBhbmQgcmVzdG9yZQorY29uZmlndXJhdGlvbiBkYXRhICgweDExLCAweDEyLCAweDE1LCAweDE2LCBhbmQgMHhmNCkuIFRoZSBjaGlwcyBzdXBwb3J0ZWQgYnkKK3RoaXMgZHJpdmVyIGludGVycHJldCBhbnkgYWNjZXNzIHRvIHRob3NlIGNvbW1hbmQgcmVnaXN0ZXJzIChpbmNsdWRpbmcgcmVhZAorY29tbWFuZHMpIGFzIHJlcXVlc3QgdG8gZXhlY3V0ZSB0aGUgY29tbWFuZCBpbiBxdWVzdGlvbi4gVW5sZXNzIHdyaXRlIGFjY2Vzc2VzCit0byB0aG9zZSByZWdpc3RlcnMgYXJlIHByb3RlY3RlZCwgdGhpcyBtYXkgcmVzdWx0IGluIHBvd2VyIGxvc3MsIGJvYXJkIHJlc2V0cywKK2FuZC9vciBGbGFzaCBjb3JydXB0aW9uLiBXb3JzdCBjYXNlLCB5b3VyIGJvYXJkIG1heSB0dXJuIGludG8gYSBicmljay4KKworCitQbGF0Zm9ybSBkYXRhIHN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZHJpdmVyIHN1cHBvcnRzIHN0YW5kYXJkIFBNQnVzIGRyaXZlciBwbGF0Zm9ybSBkYXRhLgorCisKK01vZHVsZSBwYXJhbWV0ZXJzCistLS0tLS0tLS0tLS0tLS0tLQorCitkZWxheQorLS0tLS0KKworSW50ZXJzaWwvWmlsa2VyIExhYnMgREMtREMgY29udHJvbGxlcnMgcmVxdWlyZSBhIG1pbmltdW0gaW50ZXJ2YWwgYmV0d2VlbiBJMkMKK2J1cyBhY2Nlc3Nlcy4gQWNjb3JkaW5nIHRvIEludGVyc2lsLCB0aGUgbWluaW11bSBpbnRlcnZhbCBpcyAyIG1zLCB0aG91Z2ggMSBtcworYXBwZWFycyB0byBiZSBzdWZmaWNpZW50IGFuZCBoYXMgbm90IGNhdXNlZCBhbnkgcHJvYmxlbXMgaW4gdGVzdGluZy4gVGhlIHByb2JsZW0KK2lzIGtub3duIHRvIGFmZmVjdCBhbGwgY3VycmVudGx5IHN1cHBvcnRlZCBjaGlwcy4gRm9yIG1hbnVhbCBvdmVycmlkZSwgdGhlCitkcml2ZXIgcHJvdmlkZXMgYSB3cml0ZWFibGUgbW9kdWxlIHBhcmFtZXRlciwgJ2RlbGF5Jywgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0Cit0aGUgaW50ZXJ2YWwgdG8gYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDY1LDUzNSBtaWNyb3NlY29uZHMuCisKKworU3lzZnMgZW50cmllcworLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgYXJlIHN1cHBvcnRlZC4gTGltaXRzIGFyZSByZWFkLXdyaXRlOyBhbGwgb3RoZXIKK2F0dHJpYnV0ZXMgYXJlIHJlYWQtb25seS4KKworaW4xX2xhYmVsCQkidmluIgoraW4xX2lucHV0CQlNZWFzdXJlZCBpbnB1dCB2b2x0YWdlLgoraW4xX21pbgkJCU1pbmltdW0gaW5wdXQgdm9sdGFnZS4KK2luMV9tYXgJCQlNYXhpbXVtIGlucHV0IHZvbHRhZ2UuCitpbjFfbGNyaXQJCUNyaXRpY2FsIG1pbmltdW0gaW5wdXQgdm9sdGFnZS4KK2luMV9jcml0CQlDcml0aWNhbCBtYXhpbXVtIGlucHV0IHZvbHRhZ2UuCitpbjFfbWluX2FsYXJtCQlJbnB1dCB2b2x0YWdlIGxvdyBhbGFybS4KK2luMV9tYXhfYWxhcm0JCUlucHV0IHZvbHRhZ2UgaGlnaCBhbGFybS4KK2luMV9sY3JpdF9hbGFybQkJSW5wdXQgdm9sdGFnZSBjcml0aWNhbCBsb3cgYWxhcm0uCitpbjFfY3JpdF9hbGFybQkJSW5wdXQgdm9sdGFnZSBjcml0aWNhbCBoaWdoIGFsYXJtLgorCitpbjJfbGFiZWwJCSJ2bW9uIgoraW4yX2lucHV0CQlNZWFzdXJlZCB2b2x0YWdlIG9uIFZNT04gKFpMMjAwNCkgb3IgVkRSViAoWkw5MTAxTSwKKwkJCVpMOTExN00pIHBpbi4gUmVwb3J0ZWQgdm9sdGFnZSBpcyAxNnggdGhlIHZvbHRhZ2Ugb24gdGhlCisJCQlwaW4gKGFkanVzdGVkIGludGVybmFsbHkgYnkgdGhlIGNoaXApLgoraW4yX2xjcml0CQlDcml0aWNhbCBtaW5pbXVtIFZNT04vVkRSViBWb2x0YWdlLgoraW4yX2NyaXQJCUNyaXRpY2FsIG1heGltdW0gVk1PTi9WRFJWIHZvbHRhZ2UuCitpbjJfbGNyaXRfYWxhcm0JCVZNT04vVkRSViB2b2x0YWdlIGNyaXRpY2FsIGxvdyBhbGFybS4KK2luMl9jcml0X2FsYXJtCQlWTU9OL1ZEUlYgdm9sdGFnZSBjcml0aWNhbCBoaWdoIGFsYXJtLgorCisJCQl2bW9uIGF0dHJpYnV0ZXMgYXJlIHN1cHBvcnRlZCBvbiBaTDIwMDQsIFpMOTEwMU0sCisJCQlhbmQgWkw5MTE3TSBvbmx5LgorCitpblhfbGFiZWwJCSJ2b3V0MSIKK2luWF9pbnB1dAkJTWVhc3VyZWQgb3V0cHV0IHZvbHRhZ2UuCitpblhfbGNyaXQJCUNyaXRpY2FsIG1pbmltdW0gb3V0cHV0IFZvbHRhZ2UuCitpblhfY3JpdAkJQ3JpdGljYWwgbWF4aW11bSBvdXRwdXQgdm9sdGFnZS4KK2luWF9sY3JpdF9hbGFybQkJQ3JpdGljYWwgb3V0cHV0IHZvbHRhZ2UgY3JpdGljYWwgbG93IGFsYXJtLgoraW5YX2NyaXRfYWxhcm0JCUNyaXRpY2FsIG91dHB1dCB2b2x0YWdlIGNyaXRpY2FsIGhpZ2ggYWxhcm0uCisKKwkJCVggaXMgMyBmb3IgWkwyMDA0LCBaTDkxMDFNLCBhbmQgWkw5MTE3TSwgMiBvdGhlcndpc2UuCisKK2N1cnIxX2xhYmVsCQkiaW91dDEiCitjdXJyMV9pbnB1dAkJTWVhc3VyZWQgb3V0cHV0IGN1cnJlbnQuCitjdXJyMV9sY3JpdAkJQ3JpdGljYWwgbWluaW11bSBvdXRwdXQgY3VycmVudC4KK2N1cnIxX2NyaXQJCUNyaXRpY2FsIG1heGltdW0gb3V0cHV0IGN1cnJlbnQuCitjdXJyMV9sY3JpdF9hbGFybQlPdXRwdXQgY3VycmVudCBjcml0aWNhbCBsb3cgYWxhcm0uCitjdXJyMV9jcml0X2FsYXJtCU91dHB1dCBjdXJyZW50IGNyaXRpY2FsIGhpZ2ggYWxhcm0uCisKK3RlbXBbMTJdX2lucHV0CQlNZWFzdXJlZCB0ZW1wZXJhdHVyZS4KK3RlbXBbMTJdX21pbgkJTWluaW11bSB0ZW1wZXJhdHVyZS4KK3RlbXBbMTJdX21heAkJTWF4aW11bSB0ZW1wZXJhdHVyZS4KK3RlbXBbMTJdX2xjcml0CQlDcml0aWNhbCBsb3cgdGVtcGVyYXR1cmUuCit0ZW1wWzEyXV9jcml0CQlDcml0aWNhbCBoaWdoIHRlbXBlcmF0dXJlLgordGVtcFsxMl1fbWluX2FsYXJtCUNoaXAgdGVtcGVyYXR1cmUgbG93IGFsYXJtLgordGVtcFsxMl1fbWF4X2FsYXJtCUNoaXAgdGVtcGVyYXR1cmUgaGlnaCBhbGFybS4KK3RlbXBbMTJdX2xjcml0X2FsYXJtCUNoaXAgdGVtcGVyYXR1cmUgY3JpdGljYWwgbG93IGFsYXJtLgordGVtcFsxMl1fY3JpdF9hbGFybQlDaGlwIHRlbXBlcmF0dXJlIGNyaXRpY2FsIGhpZ2ggYWxhcm0uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3c3BpbmxvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9od3NwaW5sb2NrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWMxZWU5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9od3NwaW5sb2NrLnR4dApAQCAtMCwwICsxLDMxNyBAQAorSGFyZHdhcmUgU3BpbmxvY2sgRnJhbWV3b3JrCisKKzEuIEludHJvZHVjdGlvbgorCitIYXJkd2FyZSBzcGlubG9jayBtb2R1bGVzIHByb3ZpZGUgaGFyZHdhcmUgYXNzaXN0YW5jZSBmb3Igc3luY2hyb25pemF0aW9uCithbmQgbXV0dWFsIGV4Y2x1c2lvbiBiZXR3ZWVuIGhldGVyb2dlbmVvdXMgcHJvY2Vzc29ycyBhbmQgdGhvc2Ugbm90IG9wZXJhdGluZwordW5kZXIgYSBzaW5nbGUsIHNoYXJlZCBvcGVyYXRpbmcgc3lzdGVtLgorCitGb3IgZXhhbXBsZSwgT01BUDQgaGFzIGR1YWwgQ29ydGV4LUE5LCBkdWFsIENvcnRleC1NMyBhbmQgYSBDNjR4KyBEU1AsCitlYWNoIG9mIHdoaWNoIGlzIHJ1bm5pbmcgYSBkaWZmZXJlbnQgT3BlcmF0aW5nIFN5c3RlbSAodGhlIG1hc3RlciwgQTksCitpcyB1c3VhbGx5IHJ1bm5pbmcgTGludXggYW5kIHRoZSBzbGF2ZSBwcm9jZXNzb3JzLCB0aGUgTTMgYW5kIHRoZSBEU1AsCithcmUgcnVubmluZyBzb21lIGZsYXZvciBvZiBSVE9TKS4KKworQSBnZW5lcmljIGh3c3BpbmxvY2sgZnJhbWV3b3JrIGFsbG93cyBwbGF0Zm9ybS1pbmRlcGVuZGVudCBkcml2ZXJzIHRvIHVzZQordGhlIGh3c3BpbmxvY2sgZGV2aWNlIGluIG9yZGVyIHRvIGFjY2VzcyBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhcmUgc2hhcmVkCitiZXR3ZWVuIHJlbW90ZSBwcm9jZXNzb3JzLCB0aGF0IG90aGVyd2lzZSBoYXZlIG5vIGFsdGVybmF0aXZlIG1lY2hhbmlzbQordG8gYWNjb21wbGlzaCBzeW5jaHJvbml6YXRpb24gYW5kIG11dHVhbCBleGNsdXNpb24gb3BlcmF0aW9ucy4KKworVGhpcyBpcyBuZWNlc3NhcnksIGZvciBleGFtcGxlLCBmb3IgSW50ZXItcHJvY2Vzc29yIGNvbW11bmljYXRpb25zOgorb24gT01BUDQsIGNwdS1pbnRlbnNpdmUgbXVsdGltZWRpYSB0YXNrcyBhcmUgb2ZmbG9hZGVkIGJ5IHRoZSBob3N0IHRvIHRoZQorcmVtb3RlIE0zIGFuZC9vciBDNjR4KyBzbGF2ZSBwcm9jZXNzb3JzIChieSBhbiBJUEMgc3Vic3lzdGVtIGNhbGxlZCBTeXNsaW5rKS4KKworVG8gYWNoaWV2ZSBmYXN0IG1lc3NhZ2UtYmFzZWQgY29tbXVuaWNhdGlvbnMsIGEgbWluaW1hbCBrZXJuZWwgc3VwcG9ydAoraXMgbmVlZGVkIHRvIGRlbGl2ZXIgbWVzc2FnZXMgYXJyaXZpbmcgZnJvbSBhIHJlbW90ZSBwcm9jZXNzb3IgdG8gdGhlCithcHByb3ByaWF0ZSB1c2VyIHByb2Nlc3MuCisKK1RoaXMgY29tbXVuaWNhdGlvbiBpcyBiYXNlZCBvbiBzaW1wbGUgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgaXMgc2hhcmVkIGJldHdlZW4KK3RoZSByZW1vdGUgcHJvY2Vzc29ycywgYW5kIGFjY2VzcyB0byBpdCBpcyBzeW5jaHJvbml6ZWQgdXNpbmcgdGhlIGh3c3BpbmxvY2sKK21vZHVsZSAocmVtb3RlIHByb2Nlc3NvciBkaXJlY3RseSBwbGFjZXMgbmV3IG1lc3NhZ2VzIGluIHRoaXMgc2hhcmVkIGRhdGEKK3N0cnVjdHVyZSkuCisKK0EgY29tbW9uIGh3c3BpbmxvY2sgaW50ZXJmYWNlIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGhhdmUgZ2VuZXJpYywgcGxhdGZvcm0tCitpbmRlcGVuZGVudCwgZHJpdmVycy4KKworMi4gVXNlciBBUEkKKworICBzdHJ1Y3QgaHdzcGlubG9jayAqaHdzcGluX2xvY2tfcmVxdWVzdCh2b2lkKTsKKyAgIC0gZHluYW1pY2FsbHkgYXNzaWduIGFuIGh3c3BpbmxvY2sgYW5kIHJldHVybiBpdHMgYWRkcmVzcywgb3IgTlVMTAorICAgICBpbiBjYXNlIGFuIHVudXNlZCBod3NwaW5sb2NrIGlzbid0IGF2YWlsYWJsZS4gVXNlcnMgb2YgdGhpcworICAgICBBUEkgd2lsbCB1c3VhbGx5IHdhbnQgdG8gY29tbXVuaWNhdGUgdGhlIGxvY2sncyBpZCB0byB0aGUgcmVtb3RlIGNvcmUKKyAgICAgYmVmb3JlIGl0IGNhbiBiZSB1c2VkIHRvIGFjaGlldmUgc3luY2hyb25pemF0aW9uLgorICAgICBTaG91bGQgYmUgY2FsbGVkIGZyb20gYSBwcm9jZXNzIGNvbnRleHQgKG1pZ2h0IHNsZWVwKS4KKworICBzdHJ1Y3QgaHdzcGlubG9jayAqaHdzcGluX2xvY2tfcmVxdWVzdF9zcGVjaWZpYyh1bnNpZ25lZCBpbnQgaWQpOworICAgLSBhc3NpZ24gYSBzcGVjaWZpYyBod3NwaW5sb2NrIGlkIGFuZCByZXR1cm4gaXRzIGFkZHJlc3MsIG9yIE5VTEwKKyAgICAgaWYgdGhhdCBod3NwaW5sb2NrIGlzIGFscmVhZHkgaW4gdXNlLiBVc3VhbGx5IGJvYXJkIGNvZGUgd2lsbAorICAgICBiZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gaW4gb3JkZXIgdG8gcmVzZXJ2ZSBzcGVjaWZpYyBod3NwaW5sb2NrCisgICAgIGlkcyBmb3IgcHJlZGVmaW5lZCBwdXJwb3Nlcy4KKyAgICAgU2hvdWxkIGJlIGNhbGxlZCBmcm9tIGEgcHJvY2VzcyBjb250ZXh0IChtaWdodCBzbGVlcCkuCisKKyAgaW50IG9mX2h3c3Bpbl9sb2NrX2dldF9pZChzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBpbnQgaW5kZXgpOworICAgLSByZXRyaWV2ZSB0aGUgZ2xvYmFsIGxvY2sgaWQgZm9yIGFuIE9GIHBoYW5kbGUtYmFzZWQgc3BlY2lmaWMgbG9jay4KKyAgICAgVGhpcyBmdW5jdGlvbiBwcm92aWRlcyBhIG1lYW5zIGZvciBEVCB1c2VycyBvZiBhIGh3c3BpbmxvY2sgbW9kdWxlCisgICAgIHRvIGdldCB0aGUgZ2xvYmFsIGxvY2sgaWQgb2YgYSBzcGVjaWZpYyBod3NwaW5sb2NrLCBzbyB0aGF0IGl0IGNhbgorICAgICBiZSByZXF1ZXN0ZWQgdXNpbmcgdGhlIG5vcm1hbCBod3NwaW5fbG9ja19yZXF1ZXN0X3NwZWNpZmljKCkgQVBJLgorICAgICBUaGUgZnVuY3Rpb24gcmV0dXJucyBhIGxvY2sgaWQgbnVtYmVyIG9uIHN1Y2Nlc3MsIC1FUFJPQkVfREVGRVIgaWYKKyAgICAgdGhlIGh3c3BpbmxvY2sgZGV2aWNlIGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZCB3aXRoIHRoZSBjb3JlLCBvciBvdGhlcgorICAgICBlcnJvciB2YWx1ZXMuCisgICAgIFNob3VsZCBiZSBjYWxsZWQgZnJvbSBhIHByb2Nlc3MgY29udGV4dCAobWlnaHQgc2xlZXApLgorCisgIGludCBod3NwaW5fbG9ja19mcmVlKHN0cnVjdCBod3NwaW5sb2NrICpod2xvY2spOworICAgLSBmcmVlIGEgcHJldmlvdXNseS1hc3NpZ25lZCBod3NwaW5sb2NrOyByZXR1cm5zIDAgb24gc3VjY2Vzcywgb3IgYW4KKyAgICAgYXBwcm9wcmlhdGUgZXJyb3IgY29kZSBvbiBmYWlsdXJlIChlLmcuIC1FSU5WQUwgaWYgdGhlIGh3c3BpbmxvY2sKKyAgICAgaXMgYWxyZWFkeSBmcmVlKS4KKyAgICAgU2hvdWxkIGJlIGNhbGxlZCBmcm9tIGEgcHJvY2VzcyBjb250ZXh0IChtaWdodCBzbGVlcCkuCisKKyAgaW50IGh3c3Bpbl9sb2NrX3RpbWVvdXQoc3RydWN0IGh3c3BpbmxvY2sgKmh3bG9jaywgdW5zaWduZWQgaW50IHRpbWVvdXQpOworICAgLSBsb2NrIGEgcHJldmlvdXNseS1hc3NpZ25lZCBod3NwaW5sb2NrIHdpdGggYSB0aW1lb3V0IGxpbWl0IChzcGVjaWZpZWQgaW4KKyAgICAgbXNlY3MpLiBJZiB0aGUgaHdzcGlubG9jayBpcyBhbHJlYWR5IHRha2VuLCB0aGUgZnVuY3Rpb24gd2lsbCBidXN5IGxvb3AKKyAgICAgd2FpdGluZyBmb3IgaXQgdG8gYmUgcmVsZWFzZWQsIGJ1dCBnaXZlIHVwIHdoZW4gdGhlIHRpbWVvdXQgZWxhcHNlcy4KKyAgICAgVXBvbiBhIHN1Y2Nlc3NmdWwgcmV0dXJuIGZyb20gdGhpcyBmdW5jdGlvbiwgcHJlZW1wdGlvbiBpcyBkaXNhYmxlZCBzbworICAgICB0aGUgY2FsbGVyIG11c3Qgbm90IHNsZWVwLCBhbmQgaXMgYWR2aXNlZCB0byByZWxlYXNlIHRoZSBod3NwaW5sb2NrIGFzCisgICAgIHNvb24gYXMgcG9zc2libGUsIGluIG9yZGVyIHRvIG1pbmltaXplIHJlbW90ZSBjb3JlcyBwb2xsaW5nIG9uIHRoZQorICAgICBoYXJkd2FyZSBpbnRlcmNvbm5lY3QuCisgICAgIFJldHVybnMgMCB3aGVuIHN1Y2Nlc3NmdWwgYW5kIGFuIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUgb3RoZXJ3aXNlIChtb3N0CisgICAgIG5vdGFibHkgLUVUSU1FRE9VVCBpZiB0aGUgaHdzcGlubG9jayBpcyBzdGlsbCBidXN5IGFmdGVyIHRpbWVvdXQgbXNlY3MpLgorICAgICBUaGUgZnVuY3Rpb24gd2lsbCBuZXZlciBzbGVlcC4KKworICBpbnQgaHdzcGluX2xvY2tfdGltZW91dF9pcnEoc3RydWN0IGh3c3BpbmxvY2sgKmh3bG9jaywgdW5zaWduZWQgaW50IHRpbWVvdXQpOworICAgLSBsb2NrIGEgcHJldmlvdXNseS1hc3NpZ25lZCBod3NwaW5sb2NrIHdpdGggYSB0aW1lb3V0IGxpbWl0IChzcGVjaWZpZWQgaW4KKyAgICAgbXNlY3MpLiBJZiB0aGUgaHdzcGlubG9jayBpcyBhbHJlYWR5IHRha2VuLCB0aGUgZnVuY3Rpb24gd2lsbCBidXN5IGxvb3AKKyAgICAgd2FpdGluZyBmb3IgaXQgdG8gYmUgcmVsZWFzZWQsIGJ1dCBnaXZlIHVwIHdoZW4gdGhlIHRpbWVvdXQgZWxhcHNlcy4KKyAgICAgVXBvbiBhIHN1Y2Nlc3NmdWwgcmV0dXJuIGZyb20gdGhpcyBmdW5jdGlvbiwgcHJlZW1wdGlvbiBhbmQgdGhlIGxvY2FsCisgICAgIGludGVycnVwdHMgYXJlIGRpc2FibGVkLCBzbyB0aGUgY2FsbGVyIG11c3Qgbm90IHNsZWVwLCBhbmQgaXMgYWR2aXNlZCB0bworICAgICByZWxlYXNlIHRoZSBod3NwaW5sb2NrIGFzIHNvb24gYXMgcG9zc2libGUuCisgICAgIFJldHVybnMgMCB3aGVuIHN1Y2Nlc3NmdWwgYW5kIGFuIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUgb3RoZXJ3aXNlIChtb3N0CisgICAgIG5vdGFibHkgLUVUSU1FRE9VVCBpZiB0aGUgaHdzcGlubG9jayBpcyBzdGlsbCBidXN5IGFmdGVyIHRpbWVvdXQgbXNlY3MpLgorICAgICBUaGUgZnVuY3Rpb24gd2lsbCBuZXZlciBzbGVlcC4KKworICBpbnQgaHdzcGluX2xvY2tfdGltZW91dF9pcnFzYXZlKHN0cnVjdCBod3NwaW5sb2NrICpod2xvY2ssIHVuc2lnbmVkIGludCB0bywKKwkJCQkJCQl1bnNpZ25lZCBsb25nICpmbGFncyk7CisgICAtIGxvY2sgYSBwcmV2aW91c2x5LWFzc2lnbmVkIGh3c3BpbmxvY2sgd2l0aCBhIHRpbWVvdXQgbGltaXQgKHNwZWNpZmllZCBpbgorICAgICBtc2VjcykuIElmIHRoZSBod3NwaW5sb2NrIGlzIGFscmVhZHkgdGFrZW4sIHRoZSBmdW5jdGlvbiB3aWxsIGJ1c3kgbG9vcAorICAgICB3YWl0aW5nIGZvciBpdCB0byBiZSByZWxlYXNlZCwgYnV0IGdpdmUgdXAgd2hlbiB0aGUgdGltZW91dCBlbGFwc2VzLgorICAgICBVcG9uIGEgc3VjY2Vzc2Z1bCByZXR1cm4gZnJvbSB0aGlzIGZ1bmN0aW9uLCBwcmVlbXB0aW9uIGlzIGRpc2FibGVkLAorICAgICBsb2NhbCBpbnRlcnJ1cHRzIGFyZSBkaXNhYmxlZCBhbmQgdGhlaXIgcHJldmlvdXMgc3RhdGUgaXMgc2F2ZWQgYXQgdGhlCisgICAgIGdpdmVuIGZsYWdzIHBsYWNlaG9sZGVyLiBUaGUgY2FsbGVyIG11c3Qgbm90IHNsZWVwLCBhbmQgaXMgYWR2aXNlZCB0bworICAgICByZWxlYXNlIHRoZSBod3NwaW5sb2NrIGFzIHNvb24gYXMgcG9zc2libGUuCisgICAgIFJldHVybnMgMCB3aGVuIHN1Y2Nlc3NmdWwgYW5kIGFuIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUgb3RoZXJ3aXNlIChtb3N0CisgICAgIG5vdGFibHkgLUVUSU1FRE9VVCBpZiB0aGUgaHdzcGlubG9jayBpcyBzdGlsbCBidXN5IGFmdGVyIHRpbWVvdXQgbXNlY3MpLgorICAgICBUaGUgZnVuY3Rpb24gd2lsbCBuZXZlciBzbGVlcC4KKworICBpbnQgaHdzcGluX3RyeWxvY2soc3RydWN0IGh3c3BpbmxvY2sgKmh3bG9jayk7CisgICAtIGF0dGVtcHQgdG8gbG9jayBhIHByZXZpb3VzbHktYXNzaWduZWQgaHdzcGlubG9jaywgYnV0IGltbWVkaWF0ZWx5IGZhaWwgaWYKKyAgICAgaXQgaXMgYWxyZWFkeSB0YWtlbi4KKyAgICAgVXBvbiBhIHN1Y2Nlc3NmdWwgcmV0dXJuIGZyb20gdGhpcyBmdW5jdGlvbiwgcHJlZW1wdGlvbiBpcyBkaXNhYmxlZCBzbworICAgICBjYWxsZXIgbXVzdCBub3Qgc2xlZXAsIGFuZCBpcyBhZHZpc2VkIHRvIHJlbGVhc2UgdGhlIGh3c3BpbmxvY2sgYXMgc29vbiBhcworICAgICBwb3NzaWJsZSwgaW4gb3JkZXIgdG8gbWluaW1pemUgcmVtb3RlIGNvcmVzIHBvbGxpbmcgb24gdGhlIGhhcmR3YXJlCisgICAgIGludGVyY29ubmVjdC4KKyAgICAgUmV0dXJucyAwIG9uIHN1Y2Nlc3MgYW5kIGFuIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUgb3RoZXJ3aXNlIChtb3N0CisgICAgIG5vdGFibHkgLUVCVVNZIGlmIHRoZSBod3NwaW5sb2NrIHdhcyBhbHJlYWR5IHRha2VuKS4KKyAgICAgVGhlIGZ1bmN0aW9uIHdpbGwgbmV2ZXIgc2xlZXAuCisKKyAgaW50IGh3c3Bpbl90cnlsb2NrX2lycShzdHJ1Y3QgaHdzcGlubG9jayAqaHdsb2NrKTsKKyAgIC0gYXR0ZW1wdCB0byBsb2NrIGEgcHJldmlvdXNseS1hc3NpZ25lZCBod3NwaW5sb2NrLCBidXQgaW1tZWRpYXRlbHkgZmFpbCBpZgorICAgICBpdCBpcyBhbHJlYWR5IHRha2VuLgorICAgICBVcG9uIGEgc3VjY2Vzc2Z1bCByZXR1cm4gZnJvbSB0aGlzIGZ1bmN0aW9uLCBwcmVlbXB0aW9uIGFuZCB0aGUgbG9jYWwKKyAgICAgaW50ZXJydXB0cyBhcmUgZGlzYWJsZWQgc28gY2FsbGVyIG11c3Qgbm90IHNsZWVwLCBhbmQgaXMgYWR2aXNlZCB0bworICAgICByZWxlYXNlIHRoZSBod3NwaW5sb2NrIGFzIHNvb24gYXMgcG9zc2libGUuCisgICAgIFJldHVybnMgMCBvbiBzdWNjZXNzIGFuZCBhbiBhcHByb3ByaWF0ZSBlcnJvciBjb2RlIG90aGVyd2lzZSAobW9zdAorICAgICBub3RhYmx5IC1FQlVTWSBpZiB0aGUgaHdzcGlubG9jayB3YXMgYWxyZWFkeSB0YWtlbikuCisgICAgIFRoZSBmdW5jdGlvbiB3aWxsIG5ldmVyIHNsZWVwLgorCisgIGludCBod3NwaW5fdHJ5bG9ja19pcnFzYXZlKHN0cnVjdCBod3NwaW5sb2NrICpod2xvY2ssIHVuc2lnbmVkIGxvbmcgKmZsYWdzKTsKKyAgIC0gYXR0ZW1wdCB0byBsb2NrIGEgcHJldmlvdXNseS1hc3NpZ25lZCBod3NwaW5sb2NrLCBidXQgaW1tZWRpYXRlbHkgZmFpbCBpZgorICAgICBpdCBpcyBhbHJlYWR5IHRha2VuLgorICAgICBVcG9uIGEgc3VjY2Vzc2Z1bCByZXR1cm4gZnJvbSB0aGlzIGZ1bmN0aW9uLCBwcmVlbXB0aW9uIGlzIGRpc2FibGVkLAorICAgICB0aGUgbG9jYWwgaW50ZXJydXB0cyBhcmUgZGlzYWJsZWQgYW5kIHRoZWlyIHByZXZpb3VzIHN0YXRlIGlzIHNhdmVkCisgICAgIGF0IHRoZSBnaXZlbiBmbGFncyBwbGFjZWhvbGRlci4gVGhlIGNhbGxlciBtdXN0IG5vdCBzbGVlcCwgYW5kIGlzIGFkdmlzZWQKKyAgICAgdG8gcmVsZWFzZSB0aGUgaHdzcGlubG9jayBhcyBzb29uIGFzIHBvc3NpYmxlLgorICAgICBSZXR1cm5zIDAgb24gc3VjY2VzcyBhbmQgYW4gYXBwcm9wcmlhdGUgZXJyb3IgY29kZSBvdGhlcndpc2UgKG1vc3QKKyAgICAgbm90YWJseSAtRUJVU1kgaWYgdGhlIGh3c3BpbmxvY2sgd2FzIGFscmVhZHkgdGFrZW4pLgorICAgICBUaGUgZnVuY3Rpb24gd2lsbCBuZXZlciBzbGVlcC4KKworICB2b2lkIGh3c3Bpbl91bmxvY2soc3RydWN0IGh3c3BpbmxvY2sgKmh3bG9jayk7CisgICAtIHVubG9jayBhIHByZXZpb3VzbHktbG9ja2VkIGh3c3BpbmxvY2suIEFsd2F5cyBzdWNjZWVkLCBhbmQgY2FuIGJlIGNhbGxlZAorICAgICBmcm9tIGFueSBjb250ZXh0ICh0aGUgZnVuY3Rpb24gbmV2ZXIgc2xlZXBzKS4gTm90ZTogY29kZSBzaG91bGQgX25ldmVyXworICAgICB1bmxvY2sgYW4gaHdzcGlubG9jayB3aGljaCBpcyBhbHJlYWR5IHVubG9ja2VkICh0aGVyZSBpcyBubyBwcm90ZWN0aW9uCisgICAgIGFnYWluc3QgdGhpcykuCisKKyAgdm9pZCBod3NwaW5fdW5sb2NrX2lycShzdHJ1Y3QgaHdzcGlubG9jayAqaHdsb2NrKTsKKyAgIC0gdW5sb2NrIGEgcHJldmlvdXNseS1sb2NrZWQgaHdzcGlubG9jayBhbmQgZW5hYmxlIGxvY2FsIGludGVycnVwdHMuCisgICAgIFRoZSBjYWxsZXIgc2hvdWxkIF9uZXZlcl8gdW5sb2NrIGFuIGh3c3BpbmxvY2sgd2hpY2ggaXMgYWxyZWFkeSB1bmxvY2tlZC4KKyAgICAgRG9pbmcgc28gaXMgY29uc2lkZXJlZCBhIGJ1ZyAodGhlcmUgaXMgbm8gcHJvdGVjdGlvbiBhZ2FpbnN0IHRoaXMpLgorICAgICBVcG9uIGEgc3VjY2Vzc2Z1bCByZXR1cm4gZnJvbSB0aGlzIGZ1bmN0aW9uLCBwcmVlbXB0aW9uIGFuZCBsb2NhbAorICAgICBpbnRlcnJ1cHRzIGFyZSBlbmFibGVkLiBUaGlzIGZ1bmN0aW9uIHdpbGwgbmV2ZXIgc2xlZXAuCisKKyAgdm9pZAorICBod3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoc3RydWN0IGh3c3BpbmxvY2sgKmh3bG9jaywgdW5zaWduZWQgbG9uZyAqZmxhZ3MpOworICAgLSB1bmxvY2sgYSBwcmV2aW91c2x5LWxvY2tlZCBod3NwaW5sb2NrLgorICAgICBUaGUgY2FsbGVyIHNob3VsZCBfbmV2ZXJfIHVubG9jayBhbiBod3NwaW5sb2NrIHdoaWNoIGlzIGFscmVhZHkgdW5sb2NrZWQuCisgICAgIERvaW5nIHNvIGlzIGNvbnNpZGVyZWQgYSBidWcgKHRoZXJlIGlzIG5vIHByb3RlY3Rpb24gYWdhaW5zdCB0aGlzKS4KKyAgICAgVXBvbiBhIHN1Y2Nlc3NmdWwgcmV0dXJuIGZyb20gdGhpcyBmdW5jdGlvbiwgcHJlZW1wdGlvbiBpcyByZWVuYWJsZWQsCisgICAgIGFuZCB0aGUgc3RhdGUgb2YgdGhlIGxvY2FsIGludGVycnVwdHMgaXMgcmVzdG9yZWQgdG8gdGhlIHN0YXRlIHNhdmVkIGF0CisgICAgIHRoZSBnaXZlbiBmbGFncy4gVGhpcyBmdW5jdGlvbiB3aWxsIG5ldmVyIHNsZWVwLgorCisgIGludCBod3NwaW5fbG9ja19nZXRfaWQoc3RydWN0IGh3c3BpbmxvY2sgKmh3bG9jayk7CisgICAtIHJldHJpZXZlIGlkIG51bWJlciBvZiBhIGdpdmVuIGh3c3BpbmxvY2suIFRoaXMgaXMgbmVlZGVkIHdoZW4gYW4KKyAgICAgaHdzcGlubG9jayBpcyBkeW5hbWljYWxseSBhc3NpZ25lZDogYmVmb3JlIGl0IGNhbiBiZSB1c2VkIHRvIGFjaGlldmUKKyAgICAgbXV0dWFsIGV4Y2x1c2lvbiB3aXRoIGEgcmVtb3RlIGNwdSwgdGhlIGlkIG51bWJlciBzaG91bGQgYmUgY29tbXVuaWNhdGVkCisgICAgIHRvIHRoZSByZW1vdGUgdGFzayB3aXRoIHdoaWNoIHdlIHdhbnQgdG8gc3luY2hyb25pemUuCisgICAgIFJldHVybnMgdGhlIGh3c3BpbmxvY2sgaWQgbnVtYmVyLCBvciAtRUlOVkFMIGlmIGh3bG9jayBpcyBudWxsLgorCiszLiBUeXBpY2FsIHVzYWdlCisKKyNpbmNsdWRlIDxsaW51eC9od3NwaW5sb2NrLmg+CisjaW5jbHVkZSA8bGludXgvZXJyLmg+CisKK2ludCBod3NwaW5sb2NrX2V4YW1wbGUxKHZvaWQpCit7CisJc3RydWN0IGh3c3BpbmxvY2sgKmh3bG9jazsKKwlpbnQgcmV0OworCisJLyogZHluYW1pY2FsbHkgYXNzaWduIGEgaHdzcGlubG9jayAqLworCWh3bG9jayA9IGh3c3Bpbl9sb2NrX3JlcXVlc3QoKTsKKwlpZiAoIWh3bG9jaykKKwkJLi4uCisKKwlpZCA9IGh3c3Bpbl9sb2NrX2dldF9pZChod2xvY2spOworCS8qIHByb2JhYmx5IG5lZWQgdG8gY29tbXVuaWNhdGUgaWQgdG8gYSByZW1vdGUgcHJvY2Vzc29yIG5vdyAqLworCisJLyogdGFrZSB0aGUgbG9jaywgc3BpbiBmb3IgMSBzZWMgaWYgaXQncyBhbHJlYWR5IHRha2VuICovCisJcmV0ID0gaHdzcGluX2xvY2tfdGltZW91dChod2xvY2ssIDEwMDApOworCWlmIChyZXQpCisJCS4uLgorCisJLyoKKwkgKiB3ZSB0b29rIHRoZSBsb2NrLCBkbyBvdXIgdGhpbmcgbm93LCBidXQgZG8gTk9UIHNsZWVwCisJICovCisKKwkvKiByZWxlYXNlIHRoZSBsb2NrICovCisJaHdzcGluX3VubG9jayhod2xvY2spOworCisJLyogZnJlZSB0aGUgbG9jayAqLworCXJldCA9IGh3c3Bpbl9sb2NrX2ZyZWUoaHdsb2NrKTsKKwlpZiAocmV0KQorCQkuLi4KKworCXJldHVybiByZXQ7Cit9CisKK2ludCBod3NwaW5sb2NrX2V4YW1wbGUyKHZvaWQpCit7CisJc3RydWN0IGh3c3BpbmxvY2sgKmh3bG9jazsKKwlpbnQgcmV0OworCisJLyoKKwkgKiBhc3NpZ24gYSBzcGVjaWZpYyBod3NwaW5sb2NrIGlkIC0gdGhpcyBzaG91bGQgYmUgY2FsbGVkIGVhcmx5CisJICogYnkgYm9hcmQgaW5pdCBjb2RlLgorCSAqLworCWh3bG9jayA9IGh3c3Bpbl9sb2NrX3JlcXVlc3Rfc3BlY2lmaWMoUFJFREVGSU5FRF9MT0NLX0lEKTsKKwlpZiAoIWh3bG9jaykKKwkJLi4uCisKKwkvKiB0cnkgdG8gdGFrZSBpdCwgYnV0IGRvbid0IHNwaW4gb24gaXQgKi8KKwlyZXQgPSBod3NwaW5fdHJ5bG9jayhod2xvY2spOworCWlmICghcmV0KSB7CisJCXByX2luZm8oImxvY2sgaXMgYWxyZWFkeSB0YWtlblxuIik7CisJCXJldHVybiAtRUJVU1k7CisJfQorCisJLyoKKwkgKiB3ZSB0b29rIHRoZSBsb2NrLCBkbyBvdXIgdGhpbmcgbm93LCBidXQgZG8gTk9UIHNsZWVwCisJICovCisKKwkvKiByZWxlYXNlIHRoZSBsb2NrICovCisJaHdzcGluX3VubG9jayhod2xvY2spOworCisJLyogZnJlZSB0aGUgbG9jayAqLworCXJldCA9IGh3c3Bpbl9sb2NrX2ZyZWUoaHdsb2NrKTsKKwlpZiAocmV0KQorCQkuLi4KKworCXJldHVybiByZXQ7Cit9CisKKworNC4gQVBJIGZvciBpbXBsZW1lbnRvcnMKKworICBpbnQgaHdzcGluX2xvY2tfcmVnaXN0ZXIoc3RydWN0IGh3c3BpbmxvY2tfZGV2aWNlICpiYW5rLCBzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCWNvbnN0IHN0cnVjdCBod3NwaW5sb2NrX29wcyAqb3BzLCBpbnQgYmFzZV9pZCwgaW50IG51bV9sb2Nrcyk7CisgICAtIHRvIGJlIGNhbGxlZCBmcm9tIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9uLCBpbgorICAgICBvcmRlciB0byByZWdpc3RlciBhIG5ldyBod3NwaW5sb2NrIGRldmljZSAod2hpY2ggaXMgdXN1YWxseSBhIGJhbmsgb2YKKyAgICAgbnVtZXJvdXMgbG9ja3MpLiBTaG91bGQgYmUgY2FsbGVkIGZyb20gYSBwcm9jZXNzIGNvbnRleHQgKHRoaXMgZnVuY3Rpb24KKyAgICAgbWlnaHQgc2xlZXApLgorICAgICBSZXR1cm5zIDAgb24gc3VjY2Vzcywgb3IgYXBwcm9wcmlhdGUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgorCisgIGludCBod3NwaW5fbG9ja191bnJlZ2lzdGVyKHN0cnVjdCBod3NwaW5sb2NrX2RldmljZSAqYmFuayk7CisgICAtIHRvIGJlIGNhbGxlZCBmcm9tIHRoZSB1bmRlcmx5aW5nIHZlbmRvci1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiwgaW4gb3JkZXIKKyAgICAgdG8gdW5yZWdpc3RlciBhbiBod3NwaW5sb2NrIGRldmljZSAod2hpY2ggaXMgdXN1YWxseSBhIGJhbmsgb2YgbnVtZXJvdXMKKyAgICAgbG9ja3MpLgorICAgICBTaG91bGQgYmUgY2FsbGVkIGZyb20gYSBwcm9jZXNzIGNvbnRleHQgKHRoaXMgZnVuY3Rpb24gbWlnaHQgc2xlZXApLgorICAgICBSZXR1cm5zIHRoZSBhZGRyZXNzIG9mIGh3c3BpbmxvY2sgb24gc3VjY2Vzcywgb3IgTlVMTCBvbiBlcnJvciAoZS5nLgorICAgICBpZiB0aGUgaHdzcGlubG9jayBpcyBzdGlsbCBpbiB1c2UpLgorCis1LiBJbXBvcnRhbnQgc3RydWN0cworCitzdHJ1Y3QgaHdzcGlubG9ja19kZXZpY2UgaXMgYSBkZXZpY2Ugd2hpY2ggdXN1YWxseSBjb250YWlucyBhIGJhbmsKK29mIGhhcmR3YXJlIGxvY2tzLiBJdCBpcyByZWdpc3RlcmVkIGJ5IHRoZSB1bmRlcmx5aW5nIGh3c3BpbmxvY2sKK2ltcGxlbWVudGF0aW9uIHVzaW5nIHRoZSBod3NwaW5fbG9ja19yZWdpc3RlcigpIEFQSS4KKworLyoqCisgKiBzdHJ1Y3QgaHdzcGlubG9ja19kZXZpY2UgLSBhIGRldmljZSB3aGljaCB1c3VhbGx5IHNwYW5zIG51bWVyb3VzIGh3c3BpbmxvY2tzCisgKiBAZGV2OiB1bmRlcmx5aW5nIGRldmljZSwgd2lsbCBiZSB1c2VkIHRvIGludm9rZSBydW50aW1lIFBNIGFwaQorICogQG9wczogcGxhdGZvcm0tc3BlY2lmaWMgaHdzcGlubG9jayBoYW5kbGVycworICogQGJhc2VfaWQ6IGlkIGluZGV4IG9mIHRoZSBmaXJzdCBsb2NrIGluIHRoaXMgZGV2aWNlCisgKiBAbnVtX2xvY2tzOiBudW1iZXIgb2YgbG9ja3MgaW4gdGhpcyBkZXZpY2UKKyAqIEBsb2NrOiBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYXJyYXkgb2YgJ3N0cnVjdCBod3NwaW5sb2NrJworICovCitzdHJ1Y3QgaHdzcGlubG9ja19kZXZpY2UgeworCXN0cnVjdCBkZXZpY2UgKmRldjsKKwljb25zdCBzdHJ1Y3QgaHdzcGlubG9ja19vcHMgKm9wczsKKwlpbnQgYmFzZV9pZDsKKwlpbnQgbnVtX2xvY2tzOworCXN0cnVjdCBod3NwaW5sb2NrIGxvY2tbMF07Cit9OworCitzdHJ1Y3QgaHdzcGlubG9ja19kZXZpY2UgY29udGFpbnMgYW4gYXJyYXkgb2YgaHdzcGlubG9jayBzdHJ1Y3RzLCBlYWNoCitvZiB3aGljaCByZXByZXNlbnRzIGEgc2luZ2xlIGhhcmR3YXJlIGxvY2s6CisKKy8qKgorICogc3RydWN0IGh3c3BpbmxvY2sgLSB0aGlzIHN0cnVjdCByZXByZXNlbnRzIGEgc2luZ2xlIGh3c3BpbmxvY2sgaW5zdGFuY2UKKyAqIEBiYW5rOiB0aGUgaHdzcGlubG9ja19kZXZpY2Ugc3RydWN0dXJlIHdoaWNoIG93bnMgdGhpcyBsb2NrCisgKiBAbG9jazogaW5pdGlhbGl6ZWQgYW5kIHVzZWQgYnkgaHdzcGlubG9jayBjb3JlCisgKiBAcHJpdjogcHJpdmF0ZSBkYXRhLCBvd25lZCBieSB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybS1zcGVjaWZpYyBod3NwaW5sb2NrIGRydgorICovCitzdHJ1Y3QgaHdzcGlubG9jayB7CisJc3RydWN0IGh3c3BpbmxvY2tfZGV2aWNlICpiYW5rOworCXNwaW5sb2NrX3QgbG9jazsKKwl2b2lkICpwcml2OworfTsKKworV2hlbiByZWdpc3RlcmluZyBhIGJhbmsgb2YgbG9ja3MsIHRoZSBod3NwaW5sb2NrIGRyaXZlciBvbmx5IG5lZWRzIHRvCitzZXQgdGhlIHByaXYgbWVtYmVycyBvZiB0aGUgbG9ja3MuIFRoZSByZXN0IG9mIHRoZSBtZW1iZXJzIGFyZSBzZXQgYW5kCitpbml0aWFsaXplZCBieSB0aGUgaHdzcGlubG9jayBjb3JlIGl0c2VsZi4KKworNi4gSW1wbGVtZW50YXRpb24gY2FsbGJhY2tzCisKK1RoZXJlIGFyZSB0aHJlZSBwb3NzaWJsZSBjYWxsYmFja3MgZGVmaW5lZCBpbiAnc3RydWN0IGh3c3BpbmxvY2tfb3BzJzoKKworc3RydWN0IGh3c3BpbmxvY2tfb3BzIHsKKwlpbnQgKCp0cnlsb2NrKShzdHJ1Y3QgaHdzcGlubG9jayAqbG9jayk7CisJdm9pZCAoKnVubG9jaykoc3RydWN0IGh3c3BpbmxvY2sgKmxvY2spOworCXZvaWQgKCpyZWxheCkoc3RydWN0IGh3c3BpbmxvY2sgKmxvY2spOworfTsKKworVGhlIGZpcnN0IHR3byBjYWxsYmFja3MgYXJlIG1hbmRhdG9yeToKKworVGhlIC0+dHJ5bG9jaygpIGNhbGxiYWNrIHNob3VsZCBtYWtlIGEgc2luZ2xlIGF0dGVtcHQgdG8gdGFrZSB0aGUgbG9jaywgYW5kCityZXR1cm4gMCBvbiBmYWlsdXJlIGFuZCAxIG9uIHN1Y2Nlc3MuIFRoaXMgY2FsbGJhY2sgbWF5IF9ub3RfIHNsZWVwLgorCitUaGUgLT51bmxvY2soKSBjYWxsYmFjayByZWxlYXNlcyB0aGUgbG9jay4gSXQgYWx3YXlzIHN1Y2NlZWQsIGFuZCBpdCwgdG9vLAorbWF5IF9ub3RfIHNsZWVwLgorCitUaGUgLT5yZWxheCgpIGNhbGxiYWNrIGlzIG9wdGlvbmFsLiBJdCBpcyBjYWxsZWQgYnkgaHdzcGlubG9jayBjb3JlIHdoaWxlCitzcGlubmluZyBvbiBhIGxvY2ssIGFuZCBjYW4gYmUgdXNlZCBieSB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiB0byBmb3JjZQorYSBkZWxheSBiZXR3ZWVuIHR3byBzdWNjZXNzaXZlIGludm9jYXRpb25zIG9mIC0+dHJ5bG9jaygpLiBJdCBtYXkgX25vdF8gc2xlZXAuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLWFsaTE1MzUgYi9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLWFsaTE1MzUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ0NjM0MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtYWxpMTUzNQpAQCAtMCwwICsxLDQyIEBACitLZXJuZWwgZHJpdmVyIGkyYy1hbGkxNTM1CisKK1N1cHBvcnRlZCBhZGFwdGVyczoKKyAgKiBBY2VyIExhYnMsIEluYy4gQUxJIDE1MzUgKHNvdXRoIGJyaWRnZSkKKyAgICBEYXRhc2hlZXQ6IE5vdyB1bmRlciBOREEKKwlodHRwOi8vd3d3LmFsaS5jb20udHcvCisKK0F1dGhvcnM6CisJRnJvZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5sPiwKKwlQaGlsaXAgRWRlbGJyb2NrIDxwaGlsQG5ldHJvZWRnZS5jb20+LAorCU1hcmsgRC4gU3R1ZGViYWtlciA8bWRzeHl6MTIzQHlhaG9vLmNvbT4sCisJRGFuIEVhdG9uIDxkYW4uZWF0b25Acm9ja2V0bG9naXguY29tPiwKKwlTdGVwaGVuIFJvdXNzZXQ8c3RlcGhlbi5yb3Vzc2V0QHJvY2tldGxvZ2l4LmNvbT4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIFNNQiBIb3N0IGNvbnRyb2xsZXIgb24gQWNlciBMYWJzIEluYy4gKEFMSSkKK00xNTM1IFNvdXRoIEJyaWRnZS4KKworVGhlIE0xNTM1IGlzIGEgU291dGggYnJpZGdlIGZvciBwb3J0YWJsZSBzeXN0ZW1zLiBJdCBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhlCitNMTV4MyBTb3V0aCBicmlkZ2VzIGFsc28gcHJvZHVjZWQgYnkgQWNlciBMYWJzIEluYy4gIFNvbWUgb2YgdGhlIHJlZ2lzdGVycword2l0aGluIHRoZSBwYXJ0IGhhdmUgbW92ZWQgYW5kIHNvbWUgaGF2ZSBiZWVuIHJlZGVmaW5lZCBzbGlnaHRseS4KK0FkZGl0aW9uYWxseSwgdGhlIHNlcXVlbmNpbmcgb2YgdGhlIFNNQnVzIHRyYW5zYWN0aW9ucyBoYXMgYmVlbiBtb2RpZmllZCB0bworYmUgbW9yZSBjb25zaXN0ZW50IHdpdGggdGhlIHNlcXVlbmNpbmcgcmVjb21tZW5kZWQgYnkgdGhlIG1hbnVmYWN0dXJlciBhbmQKK29ic2VydmVkIHRocm91Z2ggdGVzdGluZy4gIFRoZXNlIGNoYW5nZXMgYXJlIHJlZmxlY3RlZCBpbiB0aGlzIGRyaXZlciBhbmQKK2NhbiBiZSBpZGVudGlmaWVkIGJ5IGNvbXBhcmluZyB0aGlzIGRyaXZlciB0byB0aGUgaTJjLWFsaTE1eDMgZHJpdmVyLiBGb3IKK2FuIG92ZXJ2aWV3IG9mIHRoZXNlIGNoaXBzIHNlZSBodHRwOi8vd3d3LmFjZXJsYWJzLmNvbQorCitUaGUgU01CIGNvbnRyb2xsZXIgaXMgcGFydCBvZiB0aGUgTTcxMDEgZGV2aWNlLCB3aGljaCBpcyBhbiBBQ1BJLWNvbXBsaWFudAorUG93ZXIgTWFuYWdlbWVudCBVbml0IChQTVUpLgorCitUaGUgd2hvbGUgTTcxMDEgZGV2aWNlIGhhcyB0byBiZSBlbmFibGVkIGZvciB0aGUgU01CIHRvIHdvcmsuIFlvdSBjYW4ndAoranVzdCBlbmFibGUgdGhlIFNNQiBhbG9uZS4gVGhlIFNNQiBhbmQgdGhlIEFDUEkgaGF2ZSBzZXBhcmF0ZSBJL08gc3BhY2VzLgorV2UgbWFrZSBzdXJlIHRoYXQgdGhlIFNNQiBpcyBlbmFibGVkLiBXZSBsZWF2ZSB0aGUgQUNQSSBhbG9uZS4KKworCitGZWF0dXJlcworLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgY29udHJvbHMgdGhlIFNNQiBIb3N0IG9ubHkuIFRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZQoraW50ZXJydXB0cy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtYWxpMTU2MyBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtYWxpMTU2MwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWIxYTA3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1hbGkxNTYzCkBAIC0wLDAgKzEsMjcgQEAKK0tlcm5lbCBkcml2ZXIgaTJjLWFsaTE1NjMKKworU3VwcG9ydGVkIGFkYXB0ZXJzOgorICAqIEFjZXIgTGFicywgSW5jLiBBTEkgMTU2MyAoc291dGggYnJpZGdlKQorICAgIERhdGFzaGVldDogTm93IHVuZGVyIE5EQQorCWh0dHA6Ly93d3cuYWxpLmNvbS50dy8KKworQXV0aG9yOiBQYXRyaWNrIE1vY2hlbCA8bW9jaGVsQGRpZ2l0YWxpbXBsYW50Lm9yZz4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIFNNQiBIb3N0IGNvbnRyb2xsZXIgb24gQWNlciBMYWJzIEluYy4gKEFMSSkKK00xNTYzIFNvdXRoIEJyaWRnZS4KKworRm9yIGFuIG92ZXJ2aWV3IG9mIHRoZXNlIGNoaXBzIHNlZSBodHRwOi8vd3d3LmFjZXJsYWJzLmNvbQorCitUaGUgTTE1NjMgc291dGhicmlkZ2UgaXMgZGVjZXB0aXZlbHkgc2ltaWxhciB0byB0aGUgTTE1MzMsIHdpdGggYSBmZXcKK25vdGFibGUgZXhjZXB0aW9ucy4gT25lIG9mIHRob3NlIGhhcHBlbnMgdG8gYmUgdGhlIGZhY3QgdGhleSB1cGdyYWRlZCB0aGUKK2kyYyBjb3JlIHRvIGJlIFNNQnVzIDIuMCBjb21wbGlhbnQsIGFuZCBoYXBwZW5zIHRvIGJlIGFsbW9zdCBpZGVudGljYWwgdG8KK3RoZSBpMmMgY29udHJvbGxlciBmb3VuZCBpbiB0aGUgSW50ZWwgODAxIHNvdXRoIGJyaWRnZXMuCisKK0ZlYXR1cmVzCistLS0tLS0tLQorCitUaGlzIGRyaXZlciBjb250cm9scyB0aGUgU01CIEhvc3Qgb25seS4gVGhpcyBkcml2ZXIgZG9lcyBub3QgdXNlCitpbnRlcnJ1cHRzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1hbGkxNXgzIGIvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1hbGkxNXgzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyODg4ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLWFsaTE1eDMKQEAgLTAsMCArMSwxMTIgQEAKK0tlcm5lbCBkcml2ZXIgaTJjLWFsaTE1eDMKKworU3VwcG9ydGVkIGFkYXB0ZXJzOgorICAqIEFjZXIgTGFicywgSW5jLiBBTEkgMTUzMyBhbmQgMTU0M0MgKHNvdXRoIGJyaWRnZSkKKyAgICBEYXRhc2hlZXQ6IE5vdyB1bmRlciBOREEKKwlodHRwOi8vd3d3LmFsaS5jb20udHcvCisKK0F1dGhvcnM6CisJRnJvZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5sPiwKKwlQaGlsaXAgRWRlbGJyb2NrIDxwaGlsQG5ldHJvZWRnZS5jb20+LAorCU1hcmsgRC4gU3R1ZGViYWtlciA8bWRzeHl6MTIzQHlhaG9vLmNvbT4KKworTW9kdWxlIFBhcmFtZXRlcnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKyogZm9yY2VfYWRkcjogaW50CisgIEluaXRpYWxpemUgdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgaTJjIGNvbnRyb2xsZXIKKworCitOb3RlcworLS0tLS0KKworVGhlIGZvcmNlX2FkZHIgcGFyYW1ldGVyIGlzIHVzZWZ1bCBmb3IgYm9hcmRzIHRoYXQgZG9uJ3Qgc2V0IHRoZSBhZGRyZXNzIGluCit0aGUgQklPUy4gRG9lcyBub3QgZG8gYSBQQ0kgZm9yY2U7IHRoZSBkZXZpY2UgbXVzdCBzdGlsbCBiZSBwcmVzZW50IGluCitsc3BjaS4gRG9uJ3QgdXNlIHRoaXMgdW5sZXNzIHRoZSBkcml2ZXIgY29tcGxhaW5zIHRoYXQgdGhlIGJhc2UgYWRkcmVzcyBpcworbm90IHNldC4KKworRXhhbXBsZTogJ21vZHByb2JlIGkyYy1hbGkxNXgzIGZvcmNlX2FkZHI9MHhlODAwJworCitTTUJ1cyBwZXJpb2RpY2FsbHkgaGFuZ3Mgb24gQVNVUyBQNUEgbW90aGVyYm9hcmRzIGFuZCBjYW4gb25seSBiZSBjbGVhcmVkCitieSBhIHBvd2VyIGN5Y2xlLiBDYXVzZSB1bmtub3duIChzZWUgSXNzdWVzIGJlbG93KS4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhpcyBpcyB0aGUgZHJpdmVyIGZvciB0aGUgU01CIEhvc3QgY29udHJvbGxlciBvbiBBY2VyIExhYnMgSW5jLiAoQUxJKQorTTE1NDEgYW5kIE0xNTQzQyBTb3V0aCBCcmlkZ2VzLgorCitUaGUgTTE1NDNDIGlzIGEgU291dGggYnJpZGdlIGZvciBkZXNrdG9wIHN5c3RlbXMuCitUaGUgTTE1NDEgaXMgYSBTb3V0aCBicmlkZ2UgZm9yIHBvcnRhYmxlIHN5c3RlbXMuCitUaGV5IGFyZSBwYXJ0IG9mIHRoZSBmb2xsb3dpbmcgQUxJIGNoaXBzZXRzOgorCisgKiAiQWxhZGRpbiBQcm8gMiIgaW5jbHVkZXMgdGhlIE0xNjIxIFNsb3QgMSBOb3J0aCBicmlkZ2Ugd2l0aCBBR1AgYW5kCisgCQkxMDBNSHogQ1BVIEZyb250IFNpZGUgYnVzCisgKiAiQWxhZGRpbiBWIiBpbmNsdWRlcyB0aGUgTTE1NDEgU29ja2V0IDcgTm9ydGggYnJpZGdlIHdpdGggQUdQIGFuZCAxMDBNSHoKKyAJCUNQVSBGcm9udCBTaWRlIGJ1cworICAgU29tZSBBbGFkZGluIFYgbW90aGVyYm9hcmRzOgorCUFzdXMgUDVBCisJQXRyZW5kIEFUQy01MjIwCisJQkNNL0dWQyBWUDE1NDEKKwlCaW9zdGFyIE01QUxBCisJR2lnYWJ5dGUgR0EtNUFYICgqKiBHZW5lcmFsbHkgZG9lc24ndCB3b3JrIGJlY2F1c2UgdGhlIEJJT1MgZG9lc24ndAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZSB0aGUgNzEwMSBkZXZpY2UhICoqKQorCUl3aWxsIFhBMTAwIFBsdXMKKwlNaWNyb25pY3MgQzIwMAorCU1pY3Jvc3RhciAoTVNJKSBNUy01MTY5CisKKyAgKiAiQWxhZGRpbiBJViIgaW5jbHVkZXMgdGhlIE0xNTQxIFNvY2tldCA3IE5vcnRoIGJyaWRnZQorICAgCQl3aXRoIGhvc3QgYnVzIHVwIHRvIDgzLjMgTUh6LgorCitGb3IgYW4gb3ZlcnZpZXcgb2YgdGhlc2UgY2hpcHMgc2VlIGh0dHA6Ly93d3cuYWNlcmxhYnMuY29tLiBBdCB0aGlzIHRpbWUgdGhlCitmdWxsIGRhdGEgc2hlZXRzIG9uIHRoZSB3ZWIgc2l0ZSBhcmUgcGFzc3dvcmQgcHJvdGVjdGVkLCBob3dldmVyIGlmIHlvdQorY29udGFjdCB0aGUgQUxJIG9mZmljZSBpbiBTYW4gSm9zZSB0aGV5IG1heSBnaXZlIHlvdSB0aGUgcGFzc3dvcmQuCisKK1RoZSBNMTUzMy9NMTU0M0MgZGV2aWNlcyBhcHBlYXIgYXMgRk9VUiBzZXBhcmF0ZSBkZXZpY2VzIG9uIHRoZSBQQ0kgYnVzLiBBbgorb3V0cHV0IG9mIGxzcGNpIHdpbGwgc2hvdyBzb21ldGhpbmcgc2ltaWxhciB0byB0aGUgZm9sbG93aW5nOgorCisgIDAwOjAyLjAgVVNCIENvbnRyb2xsZXI6IEFjZXIgTGFib3JhdG9yaWVzIEluYy4gTTUyMzcgKHJldiAwMykKKyAgMDA6MDMuMCBCcmlkZ2U6IEFjZXIgTGFib3JhdG9yaWVzIEluYy4gTTcxMDEgICAgICA8PSBUSElTIElTIFRIRSBPTkUgV0UgTkVFRAorICAwMDowNy4wIElTQSBicmlkZ2U6IEFjZXIgTGFib3JhdG9yaWVzIEluYy4gTTE1MzMgKHJldiBjMykKKyAgMDA6MGYuMCBJREUgaW50ZXJmYWNlOiBBY2VyIExhYm9yYXRvcmllcyBJbmMuIE01MjI5IChyZXYgYzEpCisKKyoqIElNUE9SVEFOVCAqKgorKiogSWYgeW91IGhhdmUgYSBNMTUzMyBvciBNMTU0M0Mgb24gdGhlIGJvYXJkIGFuZCB5b3UgZ2V0CisqKiAiYWxpMTV4MzogRXJyb3I6IENhbid0IGRldGVjdCBhbGkxNXgzISIKKyoqIHRoZW4gcnVuIGxzcGNpLgorKiogSWYgeW91IHNlZSB0aGUgMTUzMyBhbmQgNTIyOSBkZXZpY2VzIGJ1dCBOT1QgdGhlIDcxMDEgZGV2aWNlLAorKiogdGhlbiB5b3UgbXVzdCBlbmFibGUgQUNQSSwgdGhlIFBNVSwgU01CLCBvciBzb21ldGhpbmcgc2ltaWxhcgorKiogaW4gdGhlIEJJT1MuCisqKiBUaGUgZHJpdmVyIHdvbid0IHdvcmsgaWYgaXQgY2FuJ3QgZmluZCB0aGUgTTcxMDEgZGV2aWNlLgorCitUaGUgU01CIGNvbnRyb2xsZXIgaXMgcGFydCBvZiB0aGUgTTcxMDEgZGV2aWNlLCB3aGljaCBpcyBhbiBBQ1BJLWNvbXBsaWFudAorUG93ZXIgTWFuYWdlbWVudCBVbml0IChQTVUpLgorCitUaGUgd2hvbGUgTTcxMDEgZGV2aWNlIGhhcyB0byBiZSBlbmFibGVkIGZvciB0aGUgU01CIHRvIHdvcmsuIFlvdSBjYW4ndAoranVzdCBlbmFibGUgdGhlIFNNQiBhbG9uZS4gVGhlIFNNQiBhbmQgdGhlIEFDUEkgaGF2ZSBzZXBhcmF0ZSBJL08gc3BhY2VzLgorV2UgbWFrZSBzdXJlIHRoYXQgdGhlIFNNQiBpcyBlbmFibGVkLiBXZSBsZWF2ZSB0aGUgQUNQSSBhbG9uZS4KKworRmVhdHVyZXMKKy0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGNvbnRyb2xzIHRoZSBTTUIgSG9zdCBvbmx5LiBUaGUgU01CIFNsYXZlCitjb250cm9sbGVyIG9uIHRoZSBNMTVYMyBpcyBub3QgZW5hYmxlZC4gVGhpcyBkcml2ZXIgZG9lcyBub3QgdXNlCitpbnRlcnJ1cHRzLgorCisKK0lzc3VlcworLS0tLS0tCisKK1RoaXMgZHJpdmVyIHJlcXVlc3RzIHRoZSBJL08gc3BhY2UgZm9yIG9ubHkgdGhlIFNNQgorcmVnaXN0ZXJzLiBJdCBkb2Vzbid0IHVzZSB0aGUgQUNQSSByZWdpb24uCisKK09uIHRoZSBBU1VTIFA1QSBtb3RoZXJib2FyZCwgdGhlcmUgYXJlIHNldmVyYWwgcmVwb3J0cyB0aGF0Cit0aGUgU01CdXMgd2lsbCBoYW5nIGFuZCB0aGlzIGNhbiBvbmx5IGJlIHJlc29sdmVkIGJ5Citwb3dlcmluZyBvZmYgdGhlIGNvbXB1dGVyLiBJdCBhcHBlYXJzIHRvIGJlIHdvcnNlIHdoZW4gdGhlIGJvYXJkCitnZXRzIGhvdCwgZm9yIGV4YW1wbGUgdW5kZXIgaGVhdnkgQ1BVIGxvYWQsIG9yIGluIHRoZSBzdW1tZXIuCitUaGVyZSBtYXkgYmUgZWxlY3RyaWNhbCBwcm9ibGVtcyBvbiB0aGlzIGJvYXJkLgorT24gdGhlIFA1QSwgdGhlIFc4Mzc4MUQgc2Vuc29yIGNoaXAgaXMgb24gYm90aCB0aGUgSVNBIGFuZAorU01CdXMuIFRoZXJlZm9yZSB0aGUgU01CdXMgaGFuZ3MgY2FuIGdlbmVyYWxseSBiZSBhdm9pZGVkCitieSBhY2Nlc3NpbmcgdGhlIFc4Mzc4MUQgb24gdGhlIElTQSBidXMgb25seS4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1hbWQ3NTYgYi9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLWFtZDc1NgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2YzMDg3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1hbWQ3NTYKQEAgLTAsMCArMSwyNSBAQAorS2VybmVsIGRyaXZlciBpMmMtYW1kNzU2CisKK1N1cHBvcnRlZCBhZGFwdGVyczoKKyAgKiBBTUQgNzU2CisgICogQU1EIDc2NgorICAqIEFNRCA3NjgKKyAgKiBBTUQgODExMQorICAgIERhdGFzaGVldHM6IFB1YmxpY2x5IGF2YWlsYWJsZSBvbiBBTUQgd2Vic2l0ZQorCisgICogblZpZGlhIG5Gb3JjZQorICAgIERhdGFzaGVldDogVW5hdmFpbGFibGUKKworQXV0aG9yczoKKwlGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+LAorCVBoaWxpcCBFZGVsYnJvY2sgPHBoaWxAbmV0cm9lZGdlLmNvbT4gCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgQU1EIDc1NiwgNzY2LCA3NjggYW5kIDgxMTEgUGVyaXBoZXJhbCBCdXMKK0NvbnRyb2xsZXJzLCBhbmQgdGhlIG5WaWRpYSBuRm9yY2UuCisKK05vdGUgdGhhdCBmb3IgdGhlIDgxMTEsIHRoZXJlIGFyZSB0d28gU01CdXMgYWRhcHRlcnMuIFRoZSBTTUJ1cyAxLjAgYWRhcHRlcgoraXMgc3VwcG9ydGVkIGJ5IHRoaXMgZHJpdmVyLCBhbmQgdGhlIFNNQnVzIDIuMCBhZGFwdGVyIGlzIHN1cHBvcnRlZCBieSB0aGUKK2kyYy1hbWQ4MTExIGRyaXZlci4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtYW1kODExMSBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtYW1kODExMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjBkZDY2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1hbWQ4MTExCkBAIC0wLDAgKzEsNDEgQEAKK0tlcm5lbCBkcml2ZXIgaTJjLWFkbTgxMTEKKworU3VwcG9ydGVkIGFkYXB0ZXJzOgorICAgICogQU1ELTgxMTEgU01CdXMgMi4wIFBDSSBpbnRlcmZhY2UKKworRGF0YXNoZWV0czoKKwlBTUQgZGF0YXNoZWV0IG5vdCB5ZXQgYXZhaWxhYmxlLCBidXQgYWxtb3N0IGV2ZXJ5dGhpbmcgY2FuIGJlIGZvdW5kCisJaW4gdGhlIHB1YmxpY2x5IGF2YWlsYWJsZSBBQ1BJIDIuMCBzcGVjaWZpY2F0aW9uLCB3aGljaCB0aGUgYWRhcHRlcgorCWZvbGxvd3MuCisKK0F1dGhvcjogVm9qdGVjaCBQYXZsaWsgPHZvanRlY2hAc3VzZS5jej4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK0lmIHlvdSBzZWUgc29tZXRoaW5nIGxpa2UgdGhpczoKKworMDA6MDcuMiBTTUJ1czogQWR2YW5jZWQgTWljcm8gRGV2aWNlcyBbQU1EXSBBTUQtODExMSBTTUJ1cyAyLjAgKHJldiAwMikKKyAgICAgICAgU3Vic3lzdGVtOiBBZHZhbmNlZCBNaWNybyBEZXZpY2VzIFtBTURdIEFNRC04MTExIFNNQnVzIDIuMAorICAgICAgICBGbGFnczogbWVkaXVtIGRldnNlbCwgSVJRIDE5CisgICAgICAgIEkvTyBwb3J0cyBhdCBkNDAwIFtzaXplPTMyXQorCitpbiB5b3VyICdsc3BjaSAtdicsIHRoZW4gdGhpcyBkcml2ZXIgaXMgZm9yIHlvdXIgY2hpcHNldC4KKworUHJvY2VzcyBDYWxsIFN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1N1cHBvcnRlZC4KKworU01CdXMgMi4wIFN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1N1cHBvcnRlZC4gQm90aCBQRUMgYW5kIGJsb2NrIHByb2Nlc3MgY2FsbCBzdXBwb3J0IGlzIGltcGxlbWVudGVkLiBTbGF2ZQorbW9kZSBvciBob3N0IG5vdGlmaWNhdGlvbiBhcmUgbm90IHlldCBpbXBsZW1lbnRlZC4KKworTm90ZXMKKy0tLS0tCisKK05vdGUgdGhhdCBmb3IgdGhlIDgxMTEsIHRoZXJlIGFyZSB0d28gU01CdXMgYWRhcHRlcnMuIFRoZSBTTUJ1cyAyLjAgYWRhcHRlcgoraXMgc3VwcG9ydGVkIGJ5IHRoaXMgZHJpdmVyLCBhbmQgdGhlIFNNQnVzIDEuMCBhZGFwdGVyIGlzIHN1cHBvcnRlZCBieSB0aGUKK2kyYy1hbWQ3NTYgZHJpdmVyLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1kaW9sYW4tdTJjIGIvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1kaW9sYW4tdTJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkNjAxOGMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLWRpb2xhbi11MmMKQEAgLTAsMCArMSwyNiBAQAorS2VybmVsIGRyaXZlciBpMmMtZGlvbGFuLXUyYworCitTdXBwb3J0ZWQgYWRhcHRlcnM6CisgICogRGlvbGFuIFUyQy0xMiBJMkMtVVNCIGFkYXB0ZXIKKyAgICBEb2N1bWVudGF0aW9uOgorCWh0dHA6Ly93d3cuZGlvbGFuLmNvbS9pMmMvdTJjMTIuaHRtbAorCitBdXRob3I6IEd1ZW50ZXIgUm9lY2sgPGxpbnV4QHJvZWNrLXVzLm5ldD4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIERpb2xhbiBVMkMtMTIgVVNCLUkyQyBhZGFwdGVyLgorCitUaGUgRGlvbGFuIFUyQy0xMiBJMkMtVVNCIEFkYXB0ZXIgcHJvdmlkZXMgYSBsb3cgY29zdCBzb2x1dGlvbiB0byBjb25uZWN0CithIGNvbXB1dGVyIHRvIEkyQyBzbGF2ZSBkZXZpY2VzIHVzaW5nIGEgVVNCIGludGVyZmFjZS4gSXQgYWxzbyBzdXBwb3J0cworY29ubmVjdGl2aXR5IHRvIFNQSSBkZXZpY2VzLgorCitUaGlzIGRyaXZlciBvbmx5IHN1cHBvcnRzIHRoZSBJMkMgaW50ZXJmYWNlIG9mIFUyQy0xMi4gVGhlIGRyaXZlciBkb2VzIG5vdCB1c2UKK2ludGVycnVwdHMuCisKKworTW9kdWxlIHBhcmFtZXRlcnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKyogZnJlcXVlbmN5OiBJMkMgYnVzIGZyZXF1ZW5jeQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1pODAxIGIvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1pODAxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiYmEzOGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLWk4MDEKQEAgLTAsMCArMSwxNjcgQEAKK0tlcm5lbCBkcml2ZXIgaTJjLWk4MDEKKworU3VwcG9ydGVkIGFkYXB0ZXJzOgorICAqIEludGVsIDgyODAxQUEgYW5kIDgyODAxQUIgKElDSCBhbmQgSUNIMCAtIHBhcnQgb2YgdGhlCisgICAgJzgxMCcgYW5kICc4MTBFJyBjaGlwc2V0cykKKyAgKiBJbnRlbCA4MjgwMUJBIChJQ0gyIC0gcGFydCBvZiB0aGUgJzgxNUUnIGNoaXBzZXQpCisgICogSW50ZWwgODI4MDFDQS9DQU0gKElDSDMpCisgICogSW50ZWwgODI4MDFEQiAoSUNINCkgKEhXIFBFQyBzdXBwb3J0ZWQpCisgICogSW50ZWwgODI4MDFFQi9FUiAoSUNINSkgKEhXIFBFQyBzdXBwb3J0ZWQpCisgICogSW50ZWwgNjMwMEVTQgorICAqIEludGVsIDgyODAxRkIvRlIvRlcvRlJXIChJQ0g2KQorICAqIEludGVsIDgyODAxRyAoSUNINykKKyAgKiBJbnRlbCA2MzF4RVNCLzYzMnhFU0IgKEVTQjIpCisgICogSW50ZWwgODI4MDFIIChJQ0g4KQorICAqIEludGVsIDgyODAxSSAoSUNIOSkKKyAgKiBJbnRlbCBFUDgwNTc5IChUb2xhcGFpKQorICAqIEludGVsIDgyODAxSkkgKElDSDEwKQorICAqIEludGVsIDUvMzQwMCBTZXJpZXMgKFBDSCkKKyAgKiBJbnRlbCA2IFNlcmllcyAoUENIKQorICAqIEludGVsIFBhdHNidXJnIChQQ0gpCisgICogSW50ZWwgREg4OXh4Q0MgKFBDSCkKKyAgKiBJbnRlbCBQYW50aGVyIFBvaW50IChQQ0gpCisgICogSW50ZWwgTHlueCBQb2ludCAoUENIKQorICAqIEludGVsIEx5bnggUG9pbnQtTFAgKFBDSCkKKyAgKiBJbnRlbCBBdm90b24gKFNPQykKKyAgKiBJbnRlbCBXZWxsc2J1cmcgKFBDSCkKKyAgKiBJbnRlbCBDb2xldG8gQ3JlZWsgKFBDSCkKKyAgKiBJbnRlbCBXaWxkY2F0IFBvaW50IChQQ0gpCisgICogSW50ZWwgV2lsZGNhdCBQb2ludC1MUCAoUENIKQorICAqIEludGVsIEJheVRyYWlsIChTT0MpCisgICogSW50ZWwgU3VucmlzZSBQb2ludC1IIChQQ0gpCisgICogSW50ZWwgU3VucmlzZSBQb2ludC1MUCAoUENIKQorICAqIEludGVsIEROViAoU09DKQorICAqIEludGVsIEJyb3h0b24gKFNPQykKKyAgKiBJbnRlbCBMZXdpc2J1cmcgKFBDSCkKKyAgIERhdGFzaGVldHM6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgSW50ZWwgd2Vic2l0ZQorCitPbiBJbnRlbCBQYXRzYnVyZyBhbmQgbGF0ZXIgY2hpcHNldHMsIGJvdGggdGhlIG5vcm1hbCBob3N0IFNNQnVzIGNvbnRyb2xsZXIKK2FuZCB0aGUgYWRkaXRpb25hbCAnSW50ZWdyYXRlZCBEZXZpY2UgRnVuY3Rpb24nIGNvbnRyb2xsZXJzIGFyZSBzdXBwb3J0ZWQuCisKK0F1dGhvcnM6IAorCU1hcmsgU3R1ZGViYWtlciA8bWRzeHl6MTIzQHlhaG9vLmNvbT4KKwlKZWFuIERlbHZhcmUgPGpkZWx2YXJlQHN1c2UuZGU+CisKKworTW9kdWxlIFBhcmFtZXRlcnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKyogZGlzYWJsZV9mZWF0dXJlcyAoYml0IHZlY3RvcikKK0Rpc2FibGUgc2VsZWN0ZWQgZmVhdHVyZXMgbm9ybWFsbHkgc3VwcG9ydGVkIGJ5IHRoZSBkZXZpY2UuIFRoaXMgbWFrZXMgaXQKK3Bvc3NpYmxlIHRvIHdvcmsgYXJvdW5kIHBvc3NpYmxlIGRyaXZlciBvciBoYXJkd2FyZSBidWdzIGlmIHRoZSBmZWF0dXJlIGluCitxdWVzdGlvbiBkb2Vzbid0IHdvcmsgYXMgaW50ZW5kZWQgZm9yIHdoYXRldmVyIHJlYXNvbi4gQml0IHZhbHVlczoKKyAweDAxICBkaXNhYmxlIFNNQnVzIFBFQworIDB4MDIgIGRpc2FibGUgdGhlIGJsb2NrIGJ1ZmZlcgorIDB4MDggIGRpc2FibGUgdGhlIEkyQyBibG9jayByZWFkIGZ1bmN0aW9uYWxpdHkKKyAweDEwICBkb24ndCB1c2UgaW50ZXJydXB0cworCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGUgSUNIIChwcm9wZXJseSBrbm93biBhcyB0aGUgODI4MDFBQSksIElDSDAgKDgyODAxQUIpLCBJQ0gyICg4MjgwMUJBKSwKK0lDSDMgKDgyODAxQ0EvQ0FNKSBhbmQgbGF0ZXIgZGV2aWNlcyAoUENIKSBhcmUgSW50ZWwgY2hpcHMgdGhhdCBhcmUgYSBwYXJ0IG9mCitJbnRlbCdzICc4MTAnIGNoaXBzZXQgZm9yIENlbGVyb24tYmFzZWQgUENzLCAnODEwRScgY2hpcHNldCBmb3IKK1BlbnRpdW0tYmFzZWQgUENzLCAnODE1RScgY2hpcHNldCwgYW5kIG90aGVycy4KKworVGhlIElDSCBjaGlwcyBjb250YWluIGF0IGxlYXN0IFNFVkVOIHNlcGFyYXRlIFBDSSBmdW5jdGlvbnMgaW4gVFdPIGxvZ2ljYWwKK1BDSSBkZXZpY2VzLiBBbiBvdXRwdXQgb2YgbHNwY2kgd2lsbCBzaG93IHNvbWV0aGluZyBzaW1pbGFyIHRvIHRoZQorZm9sbG93aW5nOgorCisgIDAwOjFlLjAgUENJIGJyaWRnZTogSW50ZWwgQ29ycG9yYXRpb246IFVua25vd24gZGV2aWNlIDI0MTggKHJldiAwMSkKKyAgMDA6MWYuMCBJU0EgYnJpZGdlOiBJbnRlbCBDb3Jwb3JhdGlvbjogVW5rbm93biBkZXZpY2UgMjQxMCAocmV2IDAxKQorICAwMDoxZi4xIElERSBpbnRlcmZhY2U6IEludGVsIENvcnBvcmF0aW9uOiBVbmtub3duIGRldmljZSAyNDExIChyZXYgMDEpCisgIDAwOjFmLjIgVVNCIENvbnRyb2xsZXI6IEludGVsIENvcnBvcmF0aW9uOiBVbmtub3duIGRldmljZSAyNDEyIChyZXYgMDEpCisgIDAwOjFmLjMgVW5rbm93biBjbGFzcyBbMGMwNV06IEludGVsIENvcnBvcmF0aW9uOiBVbmtub3duIGRldmljZSAyNDEzIChyZXYgMDEpCisKK1RoZSBTTUJ1cyBjb250cm9sbGVyIGlzIGZ1bmN0aW9uIDMgaW4gZGV2aWNlIDFmLiBDbGFzcyAwYzA1IGlzIFNNQnVzIFNlcmlhbAorQ29udHJvbGxlci4KKworVGhlIElDSCBjaGlwcyBhcmUgcXVpdGUgc2ltaWxhciB0byBJbnRlbCdzIFBJSVg0IGNoaXAsIGF0IGxlYXN0IGluIHRoZQorU01CdXMgY29udHJvbGxlci4KKworCitQcm9jZXNzIENhbGwgU3VwcG9ydAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTm90IHN1cHBvcnRlZC4KKworCitJMkMgQmxvY2sgUmVhZCBTdXBwb3J0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0kyQyBibG9jayByZWFkIGlzIHN1cHBvcnRlZCBvbiB0aGUgODI4MDFFQiAoSUNINSkgYW5kIGxhdGVyIGNoaXBzLgorCisKK1NNQnVzIDIuMCBTdXBwb3J0CistLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgODI4MDFEQiAoSUNINCkgYW5kIGxhdGVyIGNoaXBzIHN1cHBvcnQgc2V2ZXJhbCBTTUJ1cyAyLjAgZmVhdHVyZXMuCisKKworSW50ZXJydXB0IFN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1BDSSBpbnRlcnJ1cHQgc3VwcG9ydCBpcyBzdXBwb3J0ZWQgb24gdGhlIDgyODAxRUIgKElDSDUpIGFuZCBsYXRlciBjaGlwcy4KKworCitIaWRkZW4gSUNIIFNNQnVzCistLS0tLS0tLS0tLS0tLS0tCisKK0lmIHlvdXIgc3lzdGVtIGhhcyBhbiBJbnRlbCBJQ0ggc291dGggYnJpZGdlLCBidXQgeW91IGRvIE5PVCBzZWUgdGhlCitTTUJ1cyBkZXZpY2UgYXQgMDA6MWYuMyBpbiBsc3BjaSwgYW5kIHlvdSBjYW4ndCBmaWd1cmUgb3V0IGFueSB3YXkgaW4gdGhlCitCSU9TIHRvIGVuYWJsZSBpdCwgaXQgbWVhbnMgaXQgaGFzIGJlZW4gaGlkZGVuIGJ5IHRoZSBCSU9TIGNvZGUuIEFzdXMgaXMKK3dlbGwga25vd24gZm9yIGZpcnN0IGRvaW5nIHRoaXMgb24gdGhlaXIgUDRCIG1vdGhlcmJvYXJkLCBhbmQgbWFueSBvdGhlcgorYm9hcmRzIGFmdGVyIHRoYXQuIFNvbWUgdmVuZG9yIG1hY2hpbmVzIGFyZSBhZmZlY3RlZCBhcyB3ZWxsLgorCitUaGUgZmlyc3QgdGhpbmcgdG8gdHJ5IGlzIHRoZSAiaTJjX2VjIiBBQ1BJIGRyaXZlci4gSXQgY291bGQgYmUgdGhhdCB0aGUKK1NNQnVzIHdhcyBoaWRkZW4gb24gcHVycG9zZSBiZWNhdXNlIGl0J2xsIGJlIGRyaXZlbiBieSBBQ1BJLiBJZiB0aGUKK2kyY19lYyBkcml2ZXIgd29ya3MgZm9yIHlvdSwganVzdCBmb3JnZXQgYWJvdXQgdGhlIGkyYy1pODAxIGRyaXZlciBhbmQKK2Rvbid0IHRyeSB0byB1bmhpZGUgdGhlIElDSCBTTUJ1cy4gRXZlbiBpZiBpMmNfZWMgZG9lc24ndCB3b3JrLCB5b3UKK2JldHRlciBtYWtlIHN1cmUgdGhhdCB0aGUgU01CdXMgaXNuJ3QgdXNlZCBieSB0aGUgQUNQSSBjb2RlLiBUcnkgbG9hZGluZwordGhlICJmYW4iIGFuZCAidGhlcm1hbCIgZHJpdmVycywgYW5kIGNoZWNrIGluIC9wcm9jL2FjcGkvZmFuIGFuZAorL3Byb2MvYWNwaS90aGVybWFsX3pvbmUuIElmIHlvdSBmaW5kIGFueXRoaW5nIHRoZXJlLCBpdCdzIGxpa2VseSB0aGF0Cit0aGUgQUNQSSBpcyBhY2Nlc3NpbmcgdGhlIFNNQnVzIGFuZCBpdCdzIHNhZmVyIG5vdCB0byB1bmhpZGUgaXQuIE9ubHkKK29uY2UgeW91IGFyZSBjZXJ0YWluIHRoYXQgQUNQSSBpc24ndCB1c2luZyB0aGUgU01CdXMsIHlvdSBjYW4gYXR0ZW1wdAordG8gdW5oaWRlIGl0LgorCitJbiBvcmRlciB0byB1bmhpZGUgdGhlIFNNQnVzLCB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUgdmFsdWUgb2YgYSBQQ0kKK3JlZ2lzdGVyIGJlZm9yZSB0aGUga2VybmVsIGVudW1lcmF0ZXMgdGhlIFBDSSBkZXZpY2VzLiBUaGlzIGlzIGRvbmUgaW4KK2RyaXZlcnMvcGNpL3F1aXJrcy5jLCB3aGVyZSBhbGwgYWZmZWN0ZWQgYm9hcmRzIG11c3QgYmUgbGlzdGVkIChzZWUKK2Z1bmN0aW9uIGFzdXNfaGlkZXNfc21idXNfaG9zdGJyaWRnZS4pIElmIHRoZSBTTUJ1cyBkZXZpY2UgaXMgbWlzc2luZywKK2FuZCB5b3UgdGhpbmsgdGhlcmUncyBzb21ldGhpbmcgaW50ZXJlc3Rpbmcgb24gdGhlIFNNQnVzIChlLmcuIGEKK2hhcmR3YXJlIG1vbml0b3JpbmcgY2hpcCksIHlvdSBuZWVkIHRvIGFkZCB5b3VyIGJvYXJkIHRvIHRoZSBsaXN0LgorCitUaGUgbW90aGVyYm9hcmQgaXMgaWRlbnRpZmllZCB1c2luZyB0aGUgc3VidmVuZG9yIGFuZCBzdWJkZXZpY2UgSURzIG9mIHRoZQoraG9zdCBicmlkZ2UgUENJIGRldmljZS4gR2V0IHlvdXJzIHdpdGggImxzcGNpIC1uIC12IC1zIDAwOjAwLjAiOgorCiswMDowMC4wIENsYXNzIDA2MDA6IDgwODY6MjU3MCAocmV2IDAyKQorICAgICAgICBTdWJzeXN0ZW06IDEwNDM6ODBmMgorICAgICAgICBGbGFnczogYnVzIG1hc3RlciwgZmFzdCBkZXZzZWwsIGxhdGVuY3kgMAorICAgICAgICBNZW1vcnkgYXQgZmMwMDAwMDAgKDMyLWJpdCwgcHJlZmV0Y2hhYmxlKSBbc2l6ZT0zMk1dCisgICAgICAgIENhcGFiaWxpdGllczogW2U0XSAjMDkgWzIxMDZdCisgICAgICAgIENhcGFiaWxpdGllczogW2EwXSBBR1AgdmVyc2lvbiAzLjAKKworSGVyZSB0aGUgaG9zdCBicmlkZ2UgSUQgaXMgMjU3MCAoODI4NjVHL1BFL1ApLCB0aGUgc3VidmVuZG9yIElEIGlzIDEwNDMKKyhBc3VzKSBhbmQgdGhlIHN1YmRldmljZSBJRCBpcyA4MGYyIChQNFA4MDAtWCkuIFlvdSBjYW4gZmluZCB0aGUgc3ltYm9saWMKK25hbWVzIGZvciB0aGUgYnJpZGdlIElEIGFuZCB0aGUgc3VidmVuZG9yIElEIGluIGluY2x1ZGUvbGludXgvcGNpX2lkcy5oLAorYW5kIHRoZW4gYWRkIGEgY2FzZSBmb3IgeW91ciBzdWJkZXZpY2UgSUQgYXQgdGhlIHJpZ2h0IHBsYWNlIGluCitkcml2ZXJzL3BjaS9xdWlya3MuYy4gVGhlbiBwbGVhc2UgZ2l2ZSBpdCB2ZXJ5IGdvb2QgdGVzdGluZywgdG8gbWFrZSBzdXJlCit0aGF0IHRoZSB1bmhpZGRlbiBTTUJ1cyBkb2Vzbid0IGNvbmZsaWN0IHdpdGggZS5nLiBBQ1BJLgorCitJZiBpdCB3b3JrcywgcHJvdmVzIHVzZWZ1bCAoaS5lLiB0aGVyZSBhcmUgdXNhYmxlIGNoaXBzIG9uIHRoZSBTTUJ1cykKK2FuZCBzZWVtcyBzYWZlLCBwbGVhc2Ugc3VibWl0IGEgcGF0Y2ggZm9yIGluY2x1c2lvbiBpbnRvIHRoZSBrZXJuZWwuCisKK05vdGU6IFRoZXJlJ3MgYSB1c2VmdWwgc2NyaXB0IGluIGxtX3NlbnNvcnMgMi4xMC4yIGFuZCBsYXRlciwgbmFtZWQKK3VuaGlkZV9JQ0hfU01CdXMgKGluIHByb2cvaG90cGx1ZyksIHdoaWNoIHVzZXMgdGhlIGZha2VwaHAgZHJpdmVyIHRvCit0ZW1wb3JhcmlseSB1bmhpZGUgdGhlIFNNQnVzIHdpdGhvdXQgaGF2aW5nIHRvIHBhdGNoIGFuZCByZWNvbXBpbGUgeW91cgora2VybmVsLiBJdCdzIHZlcnkgY29udmVuaWVudCBpZiB5b3UganVzdCB3YW50IHRvIGNoZWNrIGlmIHRoZXJlJ3MKK2FueXRoaW5nIGludGVyZXN0aW5nIG9uIHlvdXIgaGlkZGVuIElDSCBTTUJ1cy4KKworCisqKioqKioqKioqKioqKioqKioqKioqCitUaGUgbG1fc2Vuc29ycyBwcm9qZWN0IGdyYXRlZnVsbHkgYWNrbm93bGVkZ2VzIHRoZSBzdXBwb3J0IG9mIFRleGFzCitJbnN0cnVtZW50cyBpbiB0aGUgaW5pdGlhbCBkZXZlbG9wbWVudCBvZiB0aGlzIGRyaXZlci4KKworVGhlIGxtX3NlbnNvcnMgcHJvamVjdCBncmF0ZWZ1bGx5IGFja25vd2xlZGdlcyB0aGUgc3VwcG9ydCBvZiBJbnRlbCBpbiB0aGUKK2RldmVsb3BtZW50IG9mIFNNQnVzIDIuMCAvIElDSDQgZmVhdHVyZXMgb2YgdGhpcyBkcml2ZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLWlzbXQgYi9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLWlzbXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM3MzU1OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtaXNtdApAQCAtMCwwICsxLDM2IEBACitLZXJuZWwgZHJpdmVyIGkyYy1pc210CisKK1N1cHBvcnRlZCBhZGFwdGVyczoKKyAgKiBJbnRlbCBTMTJ4eCBzZXJpZXMgU09DcworCitBdXRob3JzOgorCUJpbGwgQnJvd24gPGJpbGwuZS5icm93bkBpbnRlbC5jb20+CisKKworTW9kdWxlIFBhcmFtZXRlcnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKyogYnVzX3NwZWVkICh1bnNpZ25lZCBpbnQpCitBbGxvd3MgY2hhbmdpbmcgb2YgdGhlIGJ1cyBzcGVlZC4gIE5vcm1hbGx5LCB0aGUgYnVzIHNwZWVkIGlzIHNldCBieSB0aGUgQklPUworYW5kIG5ldmVyIG5lZWRzIHRvIGJlIGNoYW5nZWQuICBIb3dldmVyLCBzb21lIFNNQnVzIGFuYWx5emVycyBhcmUgdG9vIHNsb3cgZm9yCittb25pdG9yaW5nIHRoZSBidXMgZHVyaW5nIGRlYnVnLCB0aHVzIHRoZSBuZWVkIGZvciB0aGlzIG1vZHVsZSBwYXJhbWV0ZXIuCitTcGVjaWZ5IHRoZSBidXMgc3BlZWQgaW4ga0h6LgorQXZhaWxhYmxlIGJ1cyBmcmVxdWVuY3kgc2V0dGluZ3M6CisgIDAgIG5vIGNoYW5nZQorICA4MCBrSHoKKyAgMTAwIGtIegorICA0MDAga0h6CisgIDEwMDAga0h6CisKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoZSBTMTJ4eCBzZXJpZXMgb2YgU09DcyBoYXZlIGEgcGFpciBvZiBpbnRlZ3JhdGVkIFNNQnVzIDIuMCBjb250cm9sbGVycwordGFyZ2V0ZWQgcHJpbWFyaWx5IGF0IHRoZSBtaWNyb3NlcnZlciBhbmQgc3RvcmFnZSBtYXJrZXRzLgorCitUaGUgUzEyeHggc2VyaWVzIGNvbnRhaW4gYSBwYWlyIG9mIFBDSSBmdW5jdGlvbnMuICBBbiBvdXRwdXQgb2YgbHNwY2kgd2lsbCBzaG93Citzb21ldGhpbmcgc2ltaWxhciB0byB0aGUgZm9sbG93aW5nOgorCisgIDAwOjEzLjAgU3lzdGVtIHBlcmlwaGVyYWw6IEludGVsIENvcnBvcmF0aW9uIENlbnRlcnRvbiBTTUJ1cyAyLjAgQ29udHJvbGxlciAwCisgIDAwOjEzLjEgU3lzdGVtIHBlcmlwaGVyYWw6IEludGVsIENvcnBvcmF0aW9uIENlbnRlcnRvbiBTTUJ1cyAyLjAgQ29udHJvbGxlciAxCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLW5mb3JjZTIgYi9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLW5mb3JjZTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY5OGMzOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtbmZvcmNlMgpAQCAtMCwwICsxLDUwIEBACitLZXJuZWwgZHJpdmVyIGkyYy1uZm9yY2UyCisKK1N1cHBvcnRlZCBhZGFwdGVyczoKKyAgKiBuRm9yY2UyIE1DUCAgICAgICAgICAgICAgICAxMGRlOjAwNjQgCisgICogbkZvcmNlMiBVbHRyYSA0MDAgTUNQICAgICAgMTBkZTowMDg0IAorICAqIG5Gb3JjZTMgUHJvMTUwIE1DUCAgICAgICAgIDEwZGU6MDBENCAKKyAgKiBuRm9yY2UzIDI1MEdiIE1DUCAgICAgICAgICAxMGRlOjAwRTQgCisgICogbkZvcmNlNCBNQ1AgICAgICAgICAgICAgICAgMTBkZTowMDUyCisgICogbkZvcmNlNCBNQ1AtMDQgICAgICAgICAgICAgMTBkZTowMDM0CisgICogbkZvcmNlIE1DUDUxICAgICAgICAgICAgICAgMTBkZTowMjY0CisgICogbkZvcmNlIE1DUDU1ICAgICAgICAgICAgICAgMTBkZTowMzY4CisgICogbkZvcmNlIE1DUDYxICAgICAgICAgICAgICAgMTBkZTowM0VCCisgICogbkZvcmNlIE1DUDY1ICAgICAgICAgICAgICAgMTBkZTowNDQ2CisgICogbkZvcmNlIE1DUDY3ICAgICAgICAgICAgICAgMTBkZTowNTQyCisgICogbkZvcmNlIE1DUDczICAgICAgICAgICAgICAgMTBkZTowN0Q4CisgICogbkZvcmNlIE1DUDc4UyAgICAgICAgICAgICAgMTBkZTowNzUyCisgICogbkZvcmNlIE1DUDc5ICAgICAgICAgICAgICAgMTBkZTowQUEyCisKK0RhdGFzaGVldDogbm90IHB1YmxpY2x5IGF2YWlsYWJsZSwgYnV0IHNlZW1zIHRvIGJlIHNpbWlsYXIgdG8gdGhlCisgICAgICAgICAgIEFNRC04MTExIFNNQnVzIDIuMCBhZGFwdGVyLgorCitBdXRob3JzOgorCUhhbnMtRnJpZWRlciBWb2d0IDxoZnZvZ3RAZ214Lm5ldD4sCisJVGhvbWFzIExlaWJvbGQgPHRob21hc0BwbHguY29tPiwgCisgICAgICAgIFBhdHJpY2sgRHJla2VyIDxwYXRyaWNrQGRyZWtlci5kZT4KKwkKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitpMmMtbmZvcmNlMiBpcyBhIGRyaXZlciBmb3IgdGhlIFNNQnVzZXMgaW5jbHVkZWQgaW4gdGhlIG5WaWRpYSBuRm9yY2UyIE1DUC4KKworSWYgeW91ciAnbHNwY2kgLXYnIGxpc3Rpbmcgc2hvd3Mgc29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZywKKworMDA6MDEuMSBTTUJ1czogblZpZGlhIENvcnBvcmF0aW9uOiBVbmtub3duIGRldmljZSAwMDY0IChyZXYgYTIpCisgICAgICAgIFN1YnN5c3RlbTogQXN1c3RlayBDb21wdXRlciwgSW5jLjogVW5rbm93biBkZXZpY2UgMGMxMQorICAgICAgICBGbGFnczogNjZNaHosIGZhc3QgZGV2c2VsLCBJUlEgNQorICAgICAgICBJL08gcG9ydHMgYXQgYzAwMCBbc2l6ZT0zMl0KKyAgICAgICAgQ2FwYWJpbGl0aWVzOiA8YXZhaWxhYmxlIG9ubHkgdG8gcm9vdD4KKwordGhlbiB0aGlzIGRyaXZlciBzaG91bGQgc3VwcG9ydCB0aGUgU01CdXNlcyBvZiB5b3VyIG1vdGhlcmJvYXJkLgorCisKK05vdGVzCistLS0tLQorCitUaGUgU01CdXMgYWRhcHRlciBpbiB0aGUgbkZvcmNlMiBjaGlwc2V0IHNlZW1zIHRvIGJlIHZlcnkgc2ltaWxhciB0byB0aGUKK1NNQnVzIDIuMCBhZGFwdGVyIGluIHRoZSBBTUQtODExMSBzb3V0aCBicmlkZ2UuIEhvd2V2ZXIsIEkgY291bGQgb25seSBnZXQKK3RoZSBkcml2ZXIgdG8gd29yayB3aXRoIGRpcmVjdCBJL08gYWNjZXNzLCB3aGljaCBpcyBkaWZmZXJlbnQgdG8gdGhlIEVDCitpbnRlcmZhY2Ugb2YgdGhlIEFNRC04MTExLiBUZXN0ZWQgb24gQXN1cyBBN044WC4gVGhlIEFDUEkgRFNEVCB0YWJsZSBvZiB0aGUKK0FzdXMgQTdOOFggbGlzdHMgdHdvIFNNQnVzZXMsIGJvdGggb2Ygd2hpY2ggYXJlIHN1cHBvcnRlZCBieSB0aGlzIGRyaXZlci4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtb2NvcmVzIGIvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1vY29yZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzI2OWFhYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtb2NvcmVzCkBAIC0wLDAgKzEsNjggQEAKK0tlcm5lbCBkcml2ZXIgaTJjLW9jb3JlcworCitTdXBwb3J0ZWQgYWRhcHRlcnM6CisgICogT3BlbkNvcmVzLm9yZyBJMkMgY29udHJvbGxlciBieSBSaWNoYXJkIEhlcnZlaWxsZSAoc2VlIGRhdGFzaGVldCBsaW5rKQorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5vcGVuY29yZXMub3JnL3Byb2plY3RzLmNnaS93ZWIvaTJjL292ZXJ2aWV3CisKK0F1dGhvcjogUGV0ZXIgS29yc2dhYXJkIDxqYWNtZXRAc3Vuc2l0ZS5kaz4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK2kyYy1vY29yZXMgaXMgYW4gaTJjIGJ1cyBkcml2ZXIgZm9yIHRoZSBPcGVuQ29yZXMub3JnIEkyQyBjb250cm9sbGVyCitJUCBjb3JlIGJ5IFJpY2hhcmQgSGVydmVpbGxlLgorCitVc2FnZQorLS0tLS0KKworaTJjLW9jb3JlcyB1c2VzIHRoZSBwbGF0Zm9ybSBidXMsIHNvIHlvdSBuZWVkIHRvIHByb3ZpZGUgYSBzdHJ1Y3QKK3BsYXRmb3JtX2RldmljZSB3aXRoIHRoZSBiYXNlIGFkZHJlc3MgYW5kIGludGVycnVwdCBudW1iZXIuIFRoZQorZGV2LnBsYXRmb3JtX2RhdGEgb2YgdGhlIGRldmljZSBzaG91bGQgYWxzbyBwb2ludCB0byBhIHN0cnVjdAorb2NvcmVzX2kyY19wbGF0Zm9ybV9kYXRhIChzZWUgbGludXgvaTJjLW9jb3Jlcy5oKSBkZXNjcmliaW5nIHRoZQorZGlzdGFuY2UgYmV0d2VlbiByZWdpc3RlcnMgYW5kIHRoZSBpbnB1dCBjbG9jayBzcGVlZC4KK1RoZXJlIGlzIGFsc28gYSBwb3NzaWJpbGl0eSB0byBhdHRhY2ggYSBsaXN0IG9mIGkyY19ib2FyZF9pbmZvIHdoaWNoCit0aGUgaTJjLW9jb3JlcyBkcml2ZXIgd2lsbCBhZGQgdG8gdGhlIGJ1cyB1cG9uIGNyZWF0aW9uLgorCitFLkcuIHNvbWV0aGluZyBsaWtlOgorCitzdGF0aWMgc3RydWN0IHJlc291cmNlIG9jb3Jlc19yZXNvdXJjZXNbXSA9IHsKKwlbMF0gPSB7CisJCS5zdGFydAk9IE1ZSTJDX0JBU0VBRERSLAorCQkuZW5kCT0gTVlJMkNfQkFTRUFERFIgKyA4LAorCQkuZmxhZ3MJPSBJT1JFU09VUkNFX01FTSwKKwl9LAorCVsxXSA9IHsKKwkJLnN0YXJ0CT0gTVlJMkNfSVJRLAorCQkuZW5kCT0gTVlJMkNfSVJRLAorCQkuZmxhZ3MJPSBJT1JFU09VUkNFX0lSUSwKKwl9LAorfTsKKworLyogb3B0aW9uYWwgYm9hcmQgaW5mbyAqLworc3RydWN0IGkyY19ib2FyZF9pbmZvIG9jb3Jlc19pMmNfYm9hcmRfaW5mb1tdID0geworCXsKKwkJSTJDX0JPQVJEX0lORk8oInRzYzIwMDMiLCAweDQ4KSwKKwkJLnBsYXRmb3JtX2RhdGEgPSAmdHNjMjAwM19wbGF0Zm9ybV9kYXRhLAorCQkuaXJxID0gVFNDX0lSUQorCX0sCisJeworCQlJMkNfQk9BUkRfSU5GTygiYWR2NzE4MCIsIDB4NDIgPj4gMSksCisJCS5pcnEgPSBBRFZfSVJRCisJfQorfTsKKworc3RhdGljIHN0cnVjdCBvY29yZXNfaTJjX3BsYXRmb3JtX2RhdGEgbXlpMmNfZGF0YSA9IHsKKwkucmVnc3RlcAk9IDIsCQkvKiB0d28gYnl0ZXMgYmV0d2VlbiByZWdpc3RlcnMgKi8KKwkuY2xvY2tfa2h6CT0gNTAwMDAsCS8qIGlucHV0IGNsb2NrIG9mIDUwTUh6ICovCisJLmRldmljZXMJPSBvY29yZXNfaTJjX2JvYXJkX2luZm8sIC8qIG9wdGlvbmFsIHRhYmxlIG9mIGRldmljZXMgKi8KKwkubnVtX2RldmljZXMJPSBBUlJBWV9TSVpFKG9jb3Jlc19pMmNfYm9hcmRfaW5mbyksIC8qIHRhYmxlIHNpemUgKi8KK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG15aTJjID0geworCS5uYW1lCQkJPSAib2NvcmVzLWkyYyIsCisJLmRldiA9IHsKKwkJLnBsYXRmb3JtX2RhdGEJPSAmbXlpMmNfZGF0YSwKKwl9LAorCS5udW1fcmVzb3VyY2VzCQk9IEFSUkFZX1NJWkUob2NvcmVzX3Jlc291cmNlcyksCisJLnJlc291cmNlCQk9IG9jb3Jlc19yZXNvdXJjZXMsCit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1wYXJwb3J0IGIvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1wYXJwb3J0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzZGJiM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLXBhcnBvcnQKQEAgLTAsMCArMSwxNzggQEAKK0tlcm5lbCBkcml2ZXIgaTJjLXBhcnBvcnQKKworQXV0aG9yOiBKZWFuIERlbHZhcmUgPGpkZWx2YXJlQHN1c2UuZGU+CisKK1RoaXMgaXMgYSB1bmlmaWVkIGRyaXZlciBmb3Igc2V2ZXJhbCBpMmMtb3Zlci1wYXJhbGxlbC1wb3J0IGFkYXB0ZXJzLAorc3VjaCBhcyB0aGUgb25lcyBtYWRlIGJ5IFBoaWxpcHMsIFZlbGxlbWFuIG9yIEVMVi4gVGhpcyBkcml2ZXIgaXMKK21lYW50IGFzIGEgcmVwbGFjZW1lbnQgZm9yIHRoZSBvbGRlciwgaW5kaXZpZHVhbCBkcml2ZXJzOgorICogaTJjLXBoaWxpcHMtcGFyCisgKiBpMmMtZWx2CisgKiBpMmMtdmVsbGVtYW4KKyAqIHZpZGVvL2kyYy1wYXJwb3J0IChOT1QgdGhlIHNhbWUgYXMgdGhpcyBvbmUsIGRlZGljYXRlZCB0byBob21lIGJyZXcKKyAgICAgICAgICAgICAgICAgICAgICB0ZWxldGV4dCBhZGFwdGVycykKKworSXQgY3VycmVudGx5IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgZGV2aWNlczoKKyAqICh0eXBlPTApIFBoaWxpcHMgYWRhcHRlcgorICogKHR5cGU9MSkgaG9tZSBicmV3IHRlbGV0ZXh0IGFkYXB0ZXIKKyAqICh0eXBlPTIpIFZlbGxlbWFuIEs4MDAwIGFkYXB0ZXIKKyAqICh0eXBlPTMpIEVMViBhZGFwdGVyCisgKiAodHlwZT00KSBBbmFsb2cgRGV2aWNlcyBBRE0xMDMyIGV2YWx1YXRpb24gYm9hcmQKKyAqICh0eXBlPTUpIEFuYWxvZyBEZXZpY2VzIGV2YWx1YXRpb24gYm9hcmRzOiBBRE0xMDI1LCBBRE0xMDMwLCBBRE0xMDMxCisgKiAodHlwZT02KSBCYXJjbyBMUFQtPkRWSSAoSzU4MDAyMzYpIGFkYXB0ZXIKKyAqICh0eXBlPTcpIE9uZSBGb3IgQWxsIEpQMSBwYXJhbGxlbCBwb3J0IGFkYXB0ZXIKKyAqICh0eXBlPTgpIFZDVC1qaWcKKworVGhlc2UgZGV2aWNlcyB1c2UgZGlmZmVyZW50IHBpbm91dCBjb25maWd1cmF0aW9ucywgc28geW91IGhhdmUgdG8gdGVsbAordGhlIGRyaXZlciB3aGF0IHlvdSBoYXZlLCB1c2luZyB0aGUgdHlwZSBtb2R1bGUgcGFyYW1ldGVyLiBUaGVyZSBpcyBubword2F5IHRvIGF1dG9kZXRlY3QgdGhlIGRldmljZXMuIFN1cHBvcnQgZm9yIGRpZmZlcmVudCBwaW5vdXQgY29uZmlndXJhdGlvbnMKK2NhbiBiZSBlYXNpbHkgYWRkZWQgd2hlbiBuZWVkZWQuCisKK0VhcmxpZXIga2VybmVscyBkZWZhdWx0ZWQgdG8gdHlwZT0wIChQaGlsaXBzKS4gIEJ1dCBub3csIGlmIHRoZSB0eXBlCitwYXJhbWV0ZXIgaXMgbWlzc2luZywgdGhlIGRyaXZlciB3aWxsIHNpbXBseSBmYWlsIHRvIGluaXRpYWxpemUuCisKK1NNQnVzIGFsZXJ0IHN1cHBvcnQgaXMgYXZhaWxhYmxlIG9uIGFkYXB0ZXJzIHdoaWNoIGhhdmUgdGhpcyBsaW5lIHByb3Blcmx5Citjb25uZWN0ZWQgdG8gdGhlIHBhcmFsbGVsIHBvcnQncyBpbnRlcnJ1cHQgcGluLgorCisKK0J1aWxkaW5nIHlvdXIgb3duIGFkYXB0ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgeW91IHdhbnQgdG8gYnVpbGQgeW91IG93biBpMmMtb3Zlci1wYXJhbGxlbC1wb3J0IGFkYXB0ZXIsIGhlcmUgaXMKK2Egc2FtcGxlIGVsZWN0cm9uaWNzIHNjaGVtYSAoY3JlZGl0cyBnbyB0byBTeWx2YWluIE11bmF1dCk6CisKK0RldmljZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDCitTaWRlICAgICAgICAgIF9fX19fX19fX19fX19fX19fX19WZGQgKCspICAgICAgICAgICAgICAgICAgICBTaWRlCisgICAgICAgICAgICAgICB8ICAgIHwgICAgICAgICB8CisgICAgICAgICAgICAgIC0tLSAgLS0tICAgICAgIC0tLQorICAgICAgICAgICAgICB8IHwgIHwgfCAgICAgICB8IHwKKyAgICAgICAgICAgICAgfFJ8ICB8UnwgICAgICAgfFJ8CisgICAgICAgICAgICAgIHwgfCAgfCB8ICAgICAgIHwgfAorICAgICAgICAgICAgICAtLS0gIC0tLSAgICAgICAtLS0KKyAgICAgICAgICAgICAgIHwgICAgfCAgICAgICAgIHwKKyAgICAgICAgICAgICAgIHwgICAgfCAgICAvfCAgIHwKK1NDTCAgLS0tLS0tLS0tLXgtLS0tLS0tLW8gfC0tLS0tLS0tLS0teC0tLS0tLS0tLS0tLS0tLS0tLS0gIHBpbiAyCisgICAgICAgICAgICAgICAgICAgIHwgICAgXHwgICB8ICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgfAorICAgICAgICAgICAgICAgICAgICB8ICAgfFwgICAgfCAgICAgICB8CitTREEgIC0tLS0tLS0tLS14LS0tLXgtLS18IG8tLS14LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICBwaW4gMTMKKyAgICAgICAgICAgICAgIHwgICAgICAgIHwvICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICB8ICAgICAgICAgL3wgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgIC0tLS0tLS0tLW8gfC0tLS0tLS0tLS0tLS0tLS14LS0tLS0tLS0tLS0tLS0gIHBpbiAzCisgICAgICAgICAgICAgICAgICAgICAgICAgXHwgICAgICAgICAgIHwgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0gIC0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgfCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFJ8ICB8UnwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgIHwgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLSAgLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyMgICMjIworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdORCAgR05ECisgICAgICAgIAorUmVtYXJrczoKKyAtIFRoaXMgaXMgdGhlIGV4YWN0IHBpbm91dCBhbmQgZWxlY3Ryb25pY3MgdXNlZCBvbiB0aGUgQW5hbG9nIERldmljZXMKKyAgIGV2YWx1YXRpb24gYm9hcmRzLgorICAgICAgICAgICAgICAgICAgIC98CisgLSBBbGwgaW52ZXJ0ZXJzIC1vIHwtIG11c3QgYmUgNzRIQzA1LCB0aGV5IG11c3QgYmUgb3BlbiBjb2xsZWN0b3Igb3V0cHV0LgorICAgICAgICAgICAgICAgICAgIFx8CisgLSBBbGwgcmVzaXRvcnMgYXJlIDEway4KKyAtIFBpbnMgMTgtMjUgb2YgdGhlIHBhcmFsbGVsIHBvcnQgY29ubmVjdGVkIHRvIEdORC4KKyAtIFBpbnMgNC05IChEMi1ENykgY291bGQgYmUgdXNlZCBhcyBWREQgaXMgdGhlIGRyaXZlciBkcml2ZXMgdGhlbSBoaWdoLgorICAgVGhlIEFETTEwMzIgZXZhbHVhdGlvbiBib2FyZCB1c2VzIEQ0LUQ3LiBCZXdhcmUgdGhhdCB0aGUgYW1vdW50IG9mCisgICBjdXJyZW50IHlvdSBjYW4gZHJhdyBmcm9tIHRoZSBwYXJhbGxlbCBwb3J0IGlzIGxpbWl0ZWQuIEFsc28gbm90ZSB0aGF0CisgICBhbGwgY29ubmVjdGVkIGxpbmVzIE1VU1QgQkUgZHJpdmVuIGF0IHRoZSBzYW1lIHN0YXRlLCBlbHNlIHlvdSdsbCBzaG9ydAorICAgY2lyY3VpdCB0aGUgb3V0cHV0IGJ1ZmZlcnMhIFNvIHBsdWdnaW5nIHRoZSBJMkMgYWRhcHRlciBhZnRlciBsb2FkaW5nCisgICB0aGUgaTJjLXBhcnBvcnQgbW9kdWxlIG1pZ2h0IGJlIGEgZ29vZCBzYWZldHkgc2luY2UgZGF0YSBsaW5lIHN0YXRlCisgICBwcmlvciB0byBpbml0IG1heSBiZSB1bmtub3duLiAKKyAtIFRoaXMgaXMgNVYhCisgLSBPYnZpb3VzbHkgeW91IGNhbm5vdCByZWFkIFNDTCAoc28gaXQncyBub3QgcmVhbGx5IHN0YW5kYXJkLWNvbXBsaWFudCkuCisgICBQcmV0dHkgZWFzeSB0byBhZGQsIGp1c3QgY29weSB0aGUgU0RBIHBhcnQgYW5kIHVzZSBhbm90aGVyIGlucHV0IHBpbi4KKyAgIFRoYXQgd291bGQgZ2l2ZSAoRUxWIGNvbXBhdGlibGUgcGlub3V0KToKKworCitEZXZpY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQworU2lkZSAgICAgICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19WZGQgKCspICAgICAgICAgU2lkZQorICAgICAgICAgICAgICAgfCAgICB8ICAgICAgICAgICAgfCAgICB8CisgICAgICAgICAgICAgIC0tLSAgLS0tICAgICAgICAgIC0tLSAgLS0tCisgICAgICAgICAgICAgIHwgfCAgfCB8ICAgICAgICAgIHwgfCAgfCB8CisgICAgICAgICAgICAgIHxSfCAgfFJ8ICAgICAgICAgIHxSfCAgfFJ8CisgICAgICAgICAgICAgIHwgfCAgfCB8ICAgICAgICAgIHwgfCAgfCB8CisgICAgICAgICAgICAgIC0tLSAgLS0tICAgICAgICAgIC0tLSAgLS0tCisgICAgICAgICAgICAgICB8ICAgIHwgICAgICAgICAgICB8ICAgIHwKKyAgICAgICAgICAgICAgIHwgICAgfCAgICAgIHxcICAgIHwgICAgfAorU0NMICAtLS0tLS0tLS0teC0tLS0tLS0teC0tfCBvLS0teC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgcGluIDE1CisgICAgICAgICAgICAgICAgICAgIHwgICB8ICB8LyAgICAgICAgIHwgCisgICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAvfCAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICB8ICAgLS0tbyB8LS0tLS0tLS0tLS0tLXgtLS0tLS0tLS0tLS0tLSAgcGluIDIKKyAgICAgICAgICAgICAgICAgICAgfCAgICAgICBcfCAgICAgICAgfCAgICB8CisgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgfAorICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgIHwKKyAgICAgICAgICAgICAgICAgICAgfCAgICAgIHxcICAgICAgICAgfCAgICB8CitTREEgIC0tLS0tLS0tLS0tLS0tLXgtLS14LS18IG8tLS0tLS0tLXgtLS0tLS0tLS0tLS0tLS0tLS0tICBwaW4gMTAKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwvICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgfCAgIC98ICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgIC0tLW8gfC0tLS0tLS0tLS0tLS0tLS0tLXgtLS0tLS0tLS0gIHBpbiAzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHwgICAgICAgICAgICAgfCAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0gIC0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICB8IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxSfCAgfFJ8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgIHwgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tICAtLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyMgICMjIworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR05EICBHTkQKKworCitJZiBwb3NzaWJsZSwgeW91IHNob3VsZCB1c2UgdGhlIHNhbWUgcGlub3V0IGNvbmZpZ3VyYXRpb24gYXMgZXhpc3RpbmcKK2FkYXB0ZXJzIGRvLCBzbyB5b3Ugd29uJ3QgZXZlbiBoYXZlIHRvIGNoYW5nZSB0aGUgY29kZS4KKworCitTaW1pbGFyIChidXQgZGlmZmVyZW50KSBkcml2ZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGlzIE5PVCB0aGUgc2FtZSBhcyB0aGUgaTJjLXBwb3J0IGRyaXZlciBmb3VuZCBpbiB0aGUgaTJjCitwYWNrYWdlLiBUaGUgaTJjLXBwb3J0IGRyaXZlciBtYWtlcyB1c2Ugb2YgbW9kZXJuIHBhcmFsbGVsIHBvcnQgZmVhdHVyZXMgc28KK3RoYXQgeW91IGRvbid0IG5lZWQgYWRkaXRpb25hbCBlbGVjdHJvbmljcy4gSXQgaGFzIG90aGVyIHJlc3RyaWN0aW9ucworaG93ZXZlciwgYW5kIHdhcyBub3QgcG9ydGVkIHRvIExpbnV4IDIuNiAoeWV0KS4KKworVGhpcyBkcml2ZXIgaXMgYWxzbyBOT1QgdGhlIHNhbWUgYXMgdGhlIGkyYy1wY2YtZXBwIGRyaXZlciBmb3VuZCBpbiB0aGUKK2xtX3NlbnNvcnMgcGFja2FnZS4gVGhlIGkyYy1wY2YtZXBwIGRyaXZlciBkb2Vzbid0IHVzZSB0aGUgcGFyYWxsZWwgcG9ydCBhcworYW4gSTJDIGJ1cyBkaXJlY3RseS4gSW5zdGVhZCwgaXQgdXNlcyBpdCB0byBjb250cm9sIGFuIGV4dGVybmFsIEkyQyBidXMKK21hc3Rlci4gVGhhdCBkcml2ZXIgd2FzIG5vdCBwb3J0ZWQgdG8gTGludXggMi42ICh5ZXQpIGVpdGhlci4KKworCitMZWdhY3kgZG9jdW1lbnRhdGlvbiBmb3IgVmVsbGVtYW4gYWRhcHRlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVXNlZnVsIGxpbmtzOgorVmVsbGVtYW4gICAgICAgICAgICAgICAgaHR0cDovL3d3dy52ZWxsZW1hbi5iZS8KK1ZlbGxlbWFuIEs4MDAwIEhvd3RvICAgIGh0dHA6Ly9ob3d0by5odGx3MTYuYWMuYXQvazgwMDAtaG93dG8uaHRtbAorCitUaGUgcHJvamVjdCBoYXMgbGVhZCB0byBuZXcgbGlicyBmb3IgdGhlIFZlbGxlbWFuIEs4MDAwIGFuZCBLODAwNToKKyAgTElCSzgwMDAgdjEuOTkuMSBhbmQgTElCSzgwMDUgdjAuMjEKK1dpdGggdGhlc2UgbGlicywgeW91IGNhbiBjb250cm9sIHRoZSBLODAwMCBpbnRlcmZhY2UgY2FyZCBhbmQgdGhlIEs4MDA1CitzdGVwcGVyIG1vdG9yIGNhcmQgd2l0aCB0aGUgc2ltcGxlIGNvbW1hbmRzIHdoaWNoIGFyZSBpbiB0aGUgb3JpZ2luYWwKK1ZlbGxlbWFuIHNvZnR3YXJlLCBsaWtlIFNldElPY2hhbm5lbCwgUmVhZEFEY2hhbm5lbCwgU2VuZFN0ZXBDQ1dGdWxsIGFuZAorbWFueSBtb3JlLCB1c2luZyAvZGV2L3ZlbGxlbWFuLgorICBodHRwOi8vaG9tZS53YW5hZG9vLm5sL2hpaGloaS9saWJrODAwMC5odG0KKyAgaHR0cDovL2hvbWUud2FuYWRvby5ubC9oaWhpaGkvbGliazgwMDUuaHRtCisgIGh0dHA6Ly9zdHJ1eXZlLm1pbmUubnU6ODA4MC9pbmRleC5waHA/YmxvY2s9azgwMDAKKyAgaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJrODAwNS8KKworCitPbmUgRm9yIEFsbCBKUDEgcGFyYWxsZWwgcG9ydCBhZGFwdGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBKUDEgcHJvamVjdCByZXZvbHZlcyBhcm91bmQgYSBzZXQgb2YgcmVtb3RlIGNvbnRyb2xzIHdoaWNoIGV4cG9zZQordGhlIEkyQyBidXMgdGhlaXIgaW50ZXJuYWwgY29uZmlndXJhdGlvbiBFRVBST00gbGl2ZXMgb24gdmlhIGEgNiBwaW4KK2p1bXBlciBpbiB0aGUgYmF0dGVyeSBjb21wYXJ0bWVudC4gTW9yZSBkZXRhaWxzIGNhbiBiZSBmb3VuZCBhdDoKKworaHR0cDovL3d3dy5oaWZpLXJlbW90ZS5jb20vanAxLworCitEZXRhaWxzIG9mIHRoZSBzaW1wbGUgcGFyYWxsZWwgcG9ydCBoYXJkd2FyZSBjYW4gYmUgZm91bmQgYXQ6CisKK2h0dHA6Ly93d3cuaGlmaS1yZW1vdGUuY29tL2pwMS9oYXJkd2FyZS5zaHRtbApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1wYXJwb3J0LWxpZ2h0IGIvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1wYXJwb3J0LWxpZ2h0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwNzFiOGIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLXBhcnBvcnQtbGlnaHQKQEAgLTAsMCArMSwyMiBAQAorS2VybmVsIGRyaXZlciBpMmMtcGFycG9ydC1saWdodAorCitBdXRob3I6IEplYW4gRGVsdmFyZSA8amRlbHZhcmVAc3VzZS5kZT4KKworVGhpcyBkcml2ZXIgaXMgYSBsaWdodCB2ZXJzaW9uIG9mIGkyYy1wYXJwb3J0LiBJdCBkb2Vzbid0IGRlcGVuZCAgICAgICAgCitvbiB0aGUgcGFycG9ydCBkcml2ZXIsIGFuZCB1c2VzIGRpcmVjdCBJL08gYWNjZXNzIGluc3RlYWQuIFRoaXMgbWlnaHQgYmUKK3ByZWZlcnJlZCBvbiBlbWJlZGRlZCBzeXN0ZW1zIHdoZXJlIHdhc3RpbmcgbWVtb3J5IGZvciB0aGUgY2xlYW4gYnV0IGhlYXZ5CitwYXJwb3J0IGhhbmRsaW5nIGlzIG5vdCBhbiBvcHRpb24uIFRoZSBkcmF3YmFjayBpcyBhIHJlZHVjZWQgcG9ydGFiaWxpdHkKK2FuZCB0aGUgaW1wb3NzaWJpbGl0eSB0byBkYWlzeS1jaGFpbiBvdGhlciBwYXJhbGxlbCBwb3J0IGRldmljZXMuICAgICAgICAgICAgICAgICAKKyAgCitQbGVhc2Ugc2VlIGkyYy1wYXJwb3J0IGZvciBkb2N1bWVudGF0aW9uLgorCitNb2R1bGUgcGFyYW1ldGVyczoKKworKiB0eXBlOiB0eXBlIG9mIGFkYXB0ZXIgKHNlZSBpMmMtcGFycG9ydCBvciBtb2RpbmZvKQorCisqIGJhc2U6IGJhc2UgSS9PIGFkZHJlc3MKKyAgRGVmYXVsdCBpcyAweDM3OCB3aGljaCBpcyBmYWlybHkgY29tbW9uIGZvciBwYXJhbGxlbCBwb3J0cywgYXQgbGVhc3Qgb24gUEMuCisKKyogaXJxOiBvcHRpb25hbCBJUlEKKyAgVGhpcyBtdXN0IGJlIHBhc3NlZCBpZiB5b3Ugd2FudCBTTUJ1cyBhbGVydCBzdXBwb3J0LCBhc3N1bWluZyB5b3VyIGFkYXB0ZXIKKyAgYWN0dWFsbHkgc3VwcG9ydHMgdGhpcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtcGNhLWlzYSBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtcGNhLWlzYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDQ0ZTUyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1wY2EtaXNhCkBAIC0wLDAgKzEsMjMgQEAKK0tlcm5lbCBkcml2ZXIgaTJjLXBjYS1pc2EKKworU3VwcG9ydGVkIGFkYXB0ZXJzOgorVGhpcyBkcml2ZXIgc3VwcG9ydHMgSVNBIGJvYXJkcyB1c2luZyB0aGUgUGhpbGlwcyBQQ0EgOTU2NAorUGFyYWxsZWwgYnVzIHRvIEkyQyBidXMgY29udHJvbGxlcgorCitBdXRob3I6IElhbiBDYW1wYmVsbCA8aWNhbXBiZWxsQGFyY29tLmNvbT4sIEFyY29tIENvbnRyb2wgU3lzdGVtcworCitNb2R1bGUgUGFyYW1ldGVycworLS0tLS0tLS0tLS0tLS0tLS0KKworKiBiYXNlIGludAorIEkvTyBiYXNlIGFkZHJlc3MKKyogaXJxIGludAorIElSUSBpbnRlcnJ1cHQKKyogY2xvY2sgaW50CisgQ2xvY2sgcmF0ZSBhcyBkZXNjcmliZWQgaW4gdGFibGUgMSBvZiBQQ0E5NTY0IGRhdGFzaGVldAorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgc3VwcG9ydHMgSVNBIGJvYXJkcyB1c2luZyB0aGUgUGhpbGlwcyBQQ0EgOTU2NAorUGFyYWxsZWwgYnVzIHRvIEkyQyBidXMgY29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1waWl4NCBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtcGlpeDQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE5NTlmZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtcGlpeDQKQEAgLTAsMCArMSwxMTAgQEAKK0tlcm5lbCBkcml2ZXIgaTJjLXBpaXg0CisKK1N1cHBvcnRlZCBhZGFwdGVyczoKKyAgKiBJbnRlbCA4MjM3MUFCIFBJSVg0IGFuZCBQSUlYNEUKKyAgKiBJbnRlbCA4MjQ0M01YICg0NDBNWCkKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgSW50ZWwgd2Vic2l0ZQorICAqIFNlcnZlcldvcmtzIE9TQjQsIENTQjUsIENTQjYsIEhULTEwMDAgYW5kIEhULTExMDAgc291dGhicmlkZ2VzCisgICAgRGF0YXNoZWV0OiBPbmx5IGF2YWlsYWJsZSB2aWEgTkRBIGZyb20gU2VydmVyV29ya3MKKyAgKiBBVEkgSVhQMjAwLCBJWFAzMDAsIElYUDQwMCwgU0I2MDAsIFNCNzAwIGFuZCBTQjgwMCBzb3V0aGJyaWRnZXMKKyAgICBEYXRhc2hlZXQ6IE5vdCBwdWJsaWNseSBhdmFpbGFibGUKKyAgICBTQjcwMCByZWdpc3RlciByZWZlcmVuY2UgYXZhaWxhYmxlIGF0OgorICAgIGh0dHA6Ly9zdXBwb3J0LmFtZC5jb20vdXMvRW1iZWRkZWRfVGVjaERvY3MvNDMwMDlfc2I3eHhfcnJnX3B1Yl8xLjAwLnBkZgorICAqIEFNRCBTUDUxMDAgKFNCNzAwIGRlcml2YXRpdmUgZm91bmQgb24gc29tZSBzZXJ2ZXIgbWFpbmJvYXJkcykKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgQU1EIHdlYnNpdGUKKyAgICBodHRwOi8vc3VwcG9ydC5hbWQuY29tL3VzL0VtYmVkZGVkX1RlY2hEb2NzLzQ0NDEzLnBkZgorICAqIEFNRCBIdWRzb24tMiwgTUwsIENaCisgICAgRGF0YXNoZWV0OiBOb3QgcHVibGljbHkgYXZhaWxhYmxlCisgICogU3RhbmRhcmQgTWljcm9zeXN0ZW1zIChTTVNDKSBTTEM5MEU2NiAoVmljdG9yeTY2KSBzb3V0aGJyaWRnZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBTTVNDIHdlYnNpdGUgaHR0cDovL3d3dy5zbXNjLmNvbQorCitBdXRob3JzOiAKKwlGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+CisJUGhpbGlwIEVkZWxicm9jayA8cGhpbEBuZXRyb2VkZ2UuY29tPgorCisKK01vZHVsZSBQYXJhbWV0ZXJzCistLS0tLS0tLS0tLS0tLS0tLQorCisqIGZvcmNlOiBpbnQKKyAgRm9yY2libHkgZW5hYmxlIHRoZSBQSUlYNC4gREFOR0VST1VTIQorKiBmb3JjZV9hZGRyOiBpbnQKKyAgRm9yY2libHkgZW5hYmxlIHRoZSBQSUlYNCBhdCB0aGUgZ2l2ZW4gYWRkcmVzcy4gRVhUUkVNRUxZIERBTkdFUk9VUyEKKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworVGhlIFBJSVg0IChwcm9wZXJseSBrbm93biBhcyB0aGUgODIzNzFBQikgaXMgYW4gSW50ZWwgY2hpcCB3aXRoIGEgbG90IG9mCitmdW5jdGlvbmFsaXR5LiBBbW9uZyBvdGhlciB0aGluZ3MsIGl0IGltcGxlbWVudHMgdGhlIFBDSSBidXMuIE9uZSBvZiBpdHMKK21pbm9yIGZ1bmN0aW9ucyBpcyBpbXBsZW1lbnRpbmcgYSBTeXN0ZW0gTWFuYWdlbWVudCBCdXMuIFRoaXMgaXMgYSB0cnVlIAorU01CdXMgLSB5b3UgY2FuIG5vdCBhY2Nlc3MgaXQgb24gSTJDIGxldmVscy4gVGhlIGdvb2QgbmV3cyBpcyB0aGF0IGl0CituYXRpdmVseSB1bmRlcnN0YW5kcyBTTUJ1cyBjb21tYW5kcyBhbmQgeW91IGRvIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0Cit0aW1pbmcgcHJvYmxlbXMuIFRoZSBiYWQgbmV3cyBpcyB0aGF0IG5vbi1TTUJ1cyBkZXZpY2VzIGNvbm5lY3RlZCB0byBpdCBjYW4KK2NvbmZ1c2UgaXQgbWlnaHRpbHkuIFllcywgdGhpcyBpcyBrbm93biB0byBoYXBwZW4uLi4KKworRG8gJ2xzcGNpIC12JyBhbmQgc2VlIHdoZXRoZXIgaXQgY29udGFpbnMgYW4gZW50cnkgbGlrZSB0aGlzOgorCiswMDAwOjAwOjAyLjMgQnJpZGdlOiBJbnRlbCBDb3JwLiA4MjM3MUFCL0VCL01CIFBJSVg0IEFDUEkgKHJldiAwMikKKwkgICAgIEZsYWdzOiBtZWRpdW0gZGV2c2VsLCBJUlEgOQorCitCdXMgYW5kIGRldmljZSBudW1iZXJzIG1heSBkaWZmZXIsIGJ1dCB0aGUgZnVuY3Rpb24gbnVtYmVyIG11c3QgYmUKK2lkZW50aWNhbCAobGlrZSBtYW55IFBDSSBkZXZpY2VzLCB0aGUgUElJWDQgaW5jb3Jwb3JhdGVzIGEgbnVtYmVyIG9mCitkaWZmZXJlbnQgJ2Z1bmN0aW9ucycsIHdoaWNoIGNhbiBiZSBjb25zaWRlcmVkIGFzIHNlcGFyYXRlIGRldmljZXMpLiBJZiB5b3UKK2ZpbmQgc3VjaCBhbiBlbnRyeSwgeW91IGhhdmUgYSBQSUlYNCBTTUJ1cyBjb250cm9sbGVyLgorCitPbiBzb21lIGNvbXB1dGVycyAobW9zdCBub3RhYmx5LCBzb21lIERlbGxzKSwgdGhlIFNNQnVzIGlzIGRpc2FibGVkIGJ5CitkZWZhdWx0LiBJZiB5b3UgdXNlIHRoZSBpbnNtb2QgcGFyYW1ldGVyICdmb3JjZT0xJywgdGhlIGtlcm5lbCBtb2R1bGUgd2lsbAordHJ5IHRvIGVuYWJsZSBpdC4gVEhJUyBJUyBWRVJZIERBTkdFUk9VUyEgSWYgdGhlIEJJT1MgZGlkIG5vdCBzZXQgdXAgYQorY29ycmVjdCBhZGRyZXNzIGZvciB0aGlzIG1vZHVsZSwgeW91IGNvdWxkIGdldCBpbiBiaWcgdHJvdWJsZSAocmVhZDoKK2NyYXNoZXMsIGRhdGEgY29ycnVwdGlvbiwgZXRjLikuIFRyeSB0aGlzIG9ubHkgYXMgYSBsYXN0IHJlc29ydCAodHJ5IEJJT1MKK3VwZGF0ZXMgZmlyc3QsIGZvciBleGFtcGxlKSwgYW5kIGJhY2t1cCBmaXJzdCEgQW4gZXZlbiBtb3JlIGRhbmdlcm91cworb3B0aW9uIGlzICdmb3JjZV9hZGRyPTxJT1BPUlQ+Jy4gVGhpcyB3aWxsIG5vdCBvbmx5IGVuYWJsZSB0aGUgUElJWDQgbGlrZQorJ2ZvcmNlJyBmb2VzLCBidXQgaXQgd2lsbCBhbHNvIHNldCBhIG5ldyBiYXNlIEkvTyBwb3J0IGFkZHJlc3MuIFRoZSBTTUJ1cworcGFydHMgb2YgdGhlIFBJSVg0IG5lZWRzIGEgcmFuZ2Ugb2YgOCBvZiB0aGVzZSBhZGRyZXNzZXMgdG8gZnVuY3Rpb24KK2NvcnJlY3RseS4gSWYgdGhlc2UgYWRkcmVzc2VzIGFyZSBhbHJlYWR5IHJlc2VydmVkIGJ5IHNvbWUgb3RoZXIgZGV2aWNlLAoreW91IHdpbGwgZ2V0IGludG8gYmlnIHRyb3VibGUhIERPTidUIFVTRSBUSElTIElGIFlPVSBBUkUgTk9UIFZFUlkgU1VSRQorQUJPVVQgV0hBVCBZT1UgQVJFIERPSU5HIQorCitUaGUgUElJWDRFIGlzIGp1c3QgYW4gbmV3IHZlcnNpb24gb2YgdGhlIFBJSVg0OyBpdCBpcyBzdXBwb3J0ZWQgYXMgd2VsbC4KK1RoZSBQSUlYL1BJSVgzIGRvZXMgbm90IGltcGxlbWVudCBhbiBTTUJ1cyBvciBJMkMgYnVzLCBzbyB5b3UgY2FuJ3QgdXNlCit0aGlzIGRyaXZlciBvbiB0aG9zZSBtYWluYm9hcmRzLgorCitUaGUgU2VydmVyV29ya3MgU291dGhicmlkZ2VzLCB0aGUgSW50ZWwgNDQwTVgsIGFuZCB0aGUgVmljdG9yeTY2IGFyZQoraWRlbnRpY2FsIHRvIHRoZSBQSUlYNCBpbiBJMkMvU01CdXMgc3VwcG9ydC4KKworVGhlIEFNRCBTQjcwMCwgU0I4MDAsIFNQNTEwMCBhbmQgSHVkc29uLTIgY2hpcHNldHMgaW1wbGVtZW50IHR3bworUElJWDQtY29tcGF0aWJsZSBTTUJ1cyBjb250cm9sbGVycy4gSWYgeW91ciBCSU9TIGluaXRpYWxpemVzIHRoZQorc2Vjb25kYXJ5IGNvbnRyb2xsZXIsIGl0IHdpbGwgYmUgZGV0ZWN0ZWQgYnkgdGhpcyBkcml2ZXIgYXMKK2FuICJBdXhpbGlhcnkgU01CdXMgSG9zdCBDb250cm9sbGVyIi4KKworSWYgeW91IG93biBGb3JjZSBDUENJNzM1IG1vdGhlcmJvYXJkIG9yIG90aGVyIE9TQjQgYmFzZWQgc3lzdGVtcyB5b3UgbWF5IG5lZWQKK3RvIGNoYW5nZSB0aGUgU01CdXMgSW50ZXJydXB0IFNlbGVjdCByZWdpc3RlciBzbyB0aGUgU01CdXMgY29udHJvbGxlciB1c2VzCit0aGUgU01JIG1vZGUuCisKKzEpIFVzZSBsc3BjaSBjb21tYW5kIGFuZCBsb2NhdGUgdGhlIFBDSSBkZXZpY2Ugd2l0aCB0aGUgU01CdXMgY29udHJvbGxlcjoKKyAgIDAwOjBmLjAgSVNBIGJyaWRnZTogU2VydmVyV29ya3MgT1NCNCBTb3V0aCBCcmlkZ2UgKHJldiA0ZikKKyAgIFRoZSBsaW5lIG1heSB2YXJ5IGZvciBkaWZmZXJlbnQgY2hpcHNldHMuIFBsZWFzZSBjb25zdWx0IHRoZSBkcml2ZXIgc291cmNlCisgICBmb3IgYWxsIHBvc3NpYmxlIFBDSSBpZHMgKGFuZCBsc3BjaSAtbiB0byBtYXRjaCB0aGVtKS4gTGV0cyBhc3N1bWUgdGhlCisgICBkZXZpY2UgaXMgbG9jYXRlZCBhdCAwMDowZi4wLgorMikgTm93IHlvdSBqdXN0IG5lZWQgdG8gY2hhbmdlIHRoZSB2YWx1ZSBpbiAweEQyIHJlZ2lzdGVyLiBHZXQgaXQgZmlyc3Qgd2l0aAorICAgY29tbWFuZDogbHNwY2kgLXh4eCAtcyAwMDowZi4wCisgICBJZiB0aGUgdmFsdWUgaXMgMHgzIHRoZW4geW91IG5lZWQgdG8gY2hhbmdlIGl0IHRvIDB4MQorICAgc2V0cGNpICAtcyAwMDowZi4wIGQyLmI9MQorCitQbGVhc2Ugbm90ZSB0aGF0IHlvdSBkb24ndCBuZWVkIHRvIGRvIHRoYXQgaW4gYWxsIGNhc2VzLCBqdXN0IHdoZW4gdGhlIFNNQnVzIGlzCitub3Qgd29ya2luZyBwcm9wZXJseS4KKworCitIYXJkd2FyZS1zcGVjaWZpYyBpc3N1ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciB3aWxsIHJlZnVzZSB0byBsb2FkIG9uIElCTSBzeXN0ZW1zIHdpdGggYW4gSW50ZWwgUElJWDQgU01CdXMuCitTb21lIG9mIHRoZXNlIG1hY2hpbmVzIGhhdmUgYW4gUkZJRCBFRVBST00gKDI0UkYwOCkgY29ubmVjdGVkIHRvIHRoZSBTTUJ1cywKK3doaWNoIGNhbiBlYXNpbHkgZ2V0IGNvcnJ1cHRlZCBkdWUgdG8gYSBzdGF0ZSBtYWNoaW5lIGJ1Zy4gVGhlc2UgYXJlIG1vc3RseQorVGhpbmtwYWQgbGFwdG9wcywgYnV0IGRlc2t0b3Agc3lzdGVtcyBtYXkgYWxzbyBiZSBhZmZlY3RlZC4gV2UgaGF2ZSBubyBsaXN0CitvZiBhbGwgYWZmZWN0ZWQgc3lzdGVtcywgc28gdGhlIG9ubHkgc2FmZSBzb2x1dGlvbiB3YXMgdG8gcHJldmVudCBhY2Nlc3MgdG8KK3RoZSBTTUJ1cyBvbiBhbGwgSUJNIHN5c3RlbXMgKGRldGVjdGVkIHVzaW5nIERNSSBkYXRhLikKKworRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24sIHJlYWQ6CitodHRwOi8vd3d3LmxtLXNlbnNvcnMub3JnL2Jyb3dzZXIvbG0tc2Vuc29ycy90cnVuay9SRUFETUUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtc2lzNTU5NSBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtc2lzNTU5NQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2QyMWZiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1zaXM1NTk1CkBAIC0wLDAgKzEsNTkgQEAKK0tlcm5lbCBkcml2ZXIgaTJjLXNpczU1OTUKKworQXV0aG9yczoKKwlGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+LAorICAgICAgICBNYXJrIEQuIFN0dWRlYmFrZXIgPG1kc3h5ejEyM0B5YWhvby5jb20+LAorCVBoaWxpcCBFZGVsYnJvY2sgPHBoaWxAbmV0cm9lZGdlLmNvbT4KKworU3VwcG9ydGVkIGFkYXB0ZXJzOgorICAqIFNpbGljb24gSW50ZWdyYXRlZCBTeXN0ZW1zIENvcnAuIFNpUzU1OTUgU291dGhicmlkZ2UKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgU2lsaWNvbiBJbnRlZ3JhdGVkIFN5c3RlbXMgQ29ycC4gc2l0ZS4KKworTm90ZTogYWxsIGhhdmUgbWZyLiBJRCAweDEwMzkuCisKKyAgIFNVUFBPUlRFRCAgICAgICAgICAgIFBDSSBJRAorICAgICAgICA1NTk1ICAgICAgICAgICAgMDAwOAorCisgICBOb3RlOiB0aGVzZSBjaGlwcyBjb250YWluIGEgMDAwOCBkZXZpY2Ugd2hpY2ggaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlCisgICAgICAgICA1NTk1LiBXZSByZWNvZ25pemUgdGhlc2UgYnkgdGhlIHByZXNlbmNlIG9mIHRoZSBsaXN0ZWQKKyAgICAgICAgICJibGFja2xpc3QiIFBDSSBJRCBhbmQgcmVmdXNlIHRvIGxvYWQuCisKKyAgIE5PVCBTVVBQT1JURUQgICAgICAgIFBDSSBJRCAgICAgICAgICBCTEFDS0xJU1QgUENJIElECisgICAgICAgICA1NDAgICAgICAgICAgICAwMDA4ICAgICAgICAgICAgMDU0MAorICAgICAgICAgNTUwICAgICAgICAgICAgMDAwOCAgICAgICAgICAgIDA1NTAKKyAgICAgICAgNTUxMyAgICAgICAgICAgIDAwMDggICAgICAgICAgICA1NTExCisgICAgICAgIDU1ODEgICAgICAgICAgICAwMDA4ICAgICAgICAgICAgNTU5NworICAgICAgICA1NTgyICAgICAgICAgICAgMDAwOCAgICAgICAgICAgIDU1OTcKKyAgICAgICAgNTU5NyAgICAgICAgICAgIDAwMDggICAgICAgICAgICA1NTk3CisgICAgICAgIDU1OTggICAgICAgICAgICAwMDA4ICAgICAgICAgICAgNTU5Ny81NTk4CisgICAgICAgICA2MzAgICAgICAgICAgICAwMDA4ICAgICAgICAgICAgMDYzMAorICAgICAgICAgNjQ1ICAgICAgICAgICAgMDAwOCAgICAgICAgICAgIDA2NDUKKyAgICAgICAgIDY0NiAgICAgICAgICAgIDAwMDggICAgICAgICAgICAwNjQ2CisgICAgICAgICA2NDggICAgICAgICAgICAwMDA4ICAgICAgICAgICAgMDY0OAorICAgICAgICAgNjUwICAgICAgICAgICAgMDAwOCAgICAgICAgICAgIDA2NTAKKyAgICAgICAgIDY1MSAgICAgICAgICAgIDAwMDggICAgICAgICAgICAwNjUxCisgICAgICAgICA3MzAgICAgICAgICAgICAwMDA4ICAgICAgICAgICAgMDczMAorICAgICAgICAgNzM1ICAgICAgICAgICAgMDAwOCAgICAgICAgICAgIDA3MzUKKyAgICAgICAgIDc0NSAgICAgICAgICAgIDAwMDggICAgICAgICAgICAwNzQ1CisgICAgICAgICA3NDYgICAgICAgICAgICAwMDA4ICAgICAgICAgICAgMDc0NgorCitNb2R1bGUgUGFyYW1ldGVycworLS0tLS0tLS0tLS0tLS0tLS0KKworKiBmb3JjZV9hZGRyPTB4YWRkcglTZXQgdGhlIEkvTyBiYXNlIGFkZHJlc3MuIFVzZWZ1bCBmb3IgYm9hcmRzCisJCQl0aGF0IGRvbid0IHNldCB0aGUgYWRkcmVzcyBpbiB0aGUgQklPUy4gRG9lcyBub3QgZG8gYQorCQkJUENJIGZvcmNlOyB0aGUgZGV2aWNlIG11c3Qgc3RpbGwgYmUgcHJlc2VudCBpbiBsc3BjaS4KKwkJCURvbid0IHVzZSB0aGlzIHVubGVzcyB0aGUgZHJpdmVyIGNvbXBsYWlucyB0aGF0IHRoZQorCQkJYmFzZSBhZGRyZXNzIGlzIG5vdCBzZXQuCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitpMmMtc2lzNTU5NSBpcyBhIHRydWUgU01CdXMgaG9zdCBkcml2ZXIgZm9yIG1vdGhlcmJvYXJkcyB3aXRoIHRoZSBTaVM1NTk1Citzb3V0aGJyaWRnZXMuCisKK1dBUk5JTkc6IElmIHlvdSBhcmUgdHJ5aW5nIHRvIGFjY2VzcyB0aGUgaW50ZWdyYXRlZCBzZW5zb3JzIG9uIHRoZSBTaVM1NTk1CitjaGlwLCB5b3Ugd2FudCB0aGUgc2lzNTU5NSBkcml2ZXIgZm9yIHRob3NlLCBub3QgdGhpcyBkcml2ZXIuIFRoaXMgZHJpdmVyCitpcyBhIEJVUyBkcml2ZXIsIG5vdCBhIENISVAgZHJpdmVyLiBBIEJVUyBkcml2ZXIgaXMgdXNlZCBieSBvdGhlciBDSElQCitkcml2ZXJzIHRvIGFjY2VzcyBjaGlwcyBvbiB0aGUgYnVzLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLXNpczYzMCBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtc2lzNjMwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlNzk0MzYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLXNpczYzMApAQCAtMCwwICsxLDU4IEBACitLZXJuZWwgZHJpdmVyIGkyYy1zaXM2MzAKKworU3VwcG9ydGVkIGFkYXB0ZXJzOgorICAqIFNpbGljb24gSW50ZWdyYXRlZCBTeXN0ZW1zIENvcnAgKFNpUykKKwk2MzAgY2hpcHNldCAoRGF0YXNoZWV0OiBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5zZnItZnJlc2guY29tL2xpbnV4KQorCTczMCBjaGlwc2V0CisJOTY0IGNoaXBzZXQKKyAgKiBQb3NzaWJsZSBvdGhlciBTaVMgY2hpcHNldHMgPworCitBdXRob3I6IEFsZXhhbmRlciBNYWx5c2ggPGFtYWx5c2hAd2ViLmRlPgorCUFtYXVyeSBEZWNyw6ptZSA8YW1hdXJ5LmRlY3JlbWVAZ21haWwuY29tPiAtIFNpUzk2NCBzdXBwb3J0CisKK01vZHVsZSBQYXJhbWV0ZXJzCistLS0tLS0tLS0tLS0tLS0tLQorCisqIGZvcmNlID0gWzF8MF0gRm9yY2libHkgZW5hYmxlIHRoZSBTSVM2MzAuIERBTkdFUk9VUyEKKwkJVGhpcyBjYW4gYmUgaW50ZXJlc3RpbmcgZm9yIGNoaXBzZXRzIG5vdCBuYW1lZAorCQlhYm92ZSB0byBjaGVjayBpZiBpdCB3b3JrcyBmb3IgeW91IGNoaXBzZXQsIGJ1dCBEQU5HRVJPVVMhCisKKyogaGlnaF9jbG9jayA9IFsxfDBdIEZvcmNpYmx5IHNldCBIb3N0IE1hc3RlciBDbG9jayB0byA1NktIeiAoZGVmYXVsdCwKKwkJCXdoYXQgeW91ciBCSU9TIHVzZSkuIERBTkdFUk9VUyEgVGhpcyBzaG91bGQgYmUgYSBiaXQKKwkJCWZhc3RlciwgYnV0IGZyZWV6ZSBzb21lIHN5c3RlbXMgKGkuZS4gbXkgTGFwdG9wKS4KKwkJCVNJUzYzMC83MzAgY2hpcCBvbmx5LgorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIFNNQnVzIG9ubHkgZHJpdmVyIGlzIGtub3duIHRvIHdvcmsgb24gbW90aGVyYm9hcmRzIHdpdGggdGhlIGFib3ZlCituYW1lZCBjaGlwc2V0cy4KKworSWYgeW91IHNlZSBzb21ldGhpbmcgbGlrZSB0aGlzOgorCiswMDowMC4wIEhvc3QgYnJpZGdlOiBTaWxpY29uIEludGVncmF0ZWQgU3lzdGVtcyBbU2lTXSA2MzAgSG9zdCAocmV2IDMxKQorMDA6MDEuMCBJU0EgYnJpZGdlOiBTaWxpY29uIEludGVncmF0ZWQgU3lzdGVtcyBbU2lTXSA4NUM1MDMvNTUxMworCitvciBsaWtlIHRoaXM6CisKKzAwOjAwLjAgSG9zdCBicmlkZ2U6IFNpbGljb24gSW50ZWdyYXRlZCBTeXN0ZW1zIFtTaVNdIDczMCBIb3N0IChyZXYgMDIpCiswMDowMS4wIElTQSBicmlkZ2U6IFNpbGljb24gSW50ZWdyYXRlZCBTeXN0ZW1zIFtTaVNdIDg1QzUwMy81NTEzCisKK29yIGxpa2UgdGhpczoKKworMDA6MDAuMCBIb3N0IGJyaWRnZTogU2lsaWNvbiBJbnRlZ3JhdGVkIFN5c3RlbXMgW1NpU10gNzYwL003NjAgSG9zdCAocmV2IDAyKQorMDA6MDIuMCBJU0EgYnJpZGdlOiBTaWxpY29uIEludGVncmF0ZWQgU3lzdGVtcyBbU2lTXSBTaVM5NjQgW011VElPTCBNZWRpYSBJT10KKwkJCQkJCQlMUEMgQ29udHJvbGxlciAocmV2IDM2KQorCitpbiB5b3VyICdsc3BjaScgb3V0cHV0ICwgdGhlbiB0aGlzIGRyaXZlciBpcyBmb3IgeW91ciBjaGlwc2V0LgorCitUaGFuayBZb3UKKy0tLS0tLS0tLQorUGhpbGlwIEVkZWxicm9jayA8cGhpbEBuZXRyb2VkZ2UuY29tPgorLSB0ZXN0aW5nIFNpUzczMCBzdXBwb3J0CitNYXJrIE0uIEhvZmZtYW4gPG1ob2ZmbWFuQGxpZ2h0bGluay5jb20+CistIGJ1ZyBmaXhlcworCitUbyBhbnlvbmUgZWxzZSB3aGljaCBJIGZvcmdvdCBoZXJlIDspLCB0aGFua3MhCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtc2lzOTZ4IGIvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1zaXM5NngKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI5NzlmMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtc2lzOTZ4CkBAIC0wLDAgKzEsNzMgQEAKK0tlcm5lbCBkcml2ZXIgaTJjLXNpczk2eAorCitSZXBsYWNlcyAyLjQueCBpMmMtc2lzNjQ1CisKK1N1cHBvcnRlZCBhZGFwdGVyczoKKyAgKiBTaWxpY29uIEludGVncmF0ZWQgU3lzdGVtcyBDb3JwIChTaVMpCisgICAgQW55IGNvbWJpbmF0aW9uIG9mIHRoZXNlIGhvc3QgYnJpZGdlczoKKwk2NDUsIDY0NURYIChha2EgNjQ2KSwgNjQ4LCA2NTAsIDY1MSwgNjU1LCA3MzUsIDc0NSwgNzQ2CisgICAgYW5kIHRoZXNlIHNvdXRoIGJyaWRnZXM6CisgICAgCTk2MSwgOTYyLCA5NjMoTCkKKworQXV0aG9yOiBNYXJrIE0uIEhvZmZtYW4gPG1ob2ZmbWFuQGxpZ2h0bGluay5jb20+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIFNNQnVzIG9ubHkgZHJpdmVyIGlzIGtub3duIHRvIHdvcmsgb24gbW90aGVyYm9hcmRzIHdpdGggdGhlIGFib3ZlCituYW1lZCBjaGlwc2V0IGNvbWJpbmF0aW9ucy4gVGhlIGRyaXZlciB3YXMgZGV2ZWxvcGVkIHdpdGhvdXQgYmVuZWZpdCBvZiBhCitwcm9wZXIgZGF0YXNoZWV0IGZyb20gU2lTLiBUaGUgU01CdXMgcmVnaXN0ZXJzIGFyZSBhc3N1bWVkIGNvbXBhdGlibGUgd2l0aAordGhvc2Ugb2YgdGhlIFNpUzYzMCwgYWx0aG91Z2ggdGhleSBhcmUgbG9jYXRlZCBpbiBhIGNvbXBsZXRlbHkgZGlmZmVyZW50CitwbGFjZS4gVGhhbmtzIHRvIEFsZXhhbmRlciBNYWx5c2ggPGFtYWx5c2hAd2ViLmRlPiBmb3IgcHJvdmlkaW5nIHRoZQorU2lTNjMwIGRhdGFzaGVldCAoYW5kICBkcml2ZXIpLgorCitUaGUgY29tbWFuZCAibHNwY2kiIGFzIHJvb3Qgc2hvdWxkIHByb2R1Y2Ugc29tZXRoaW5nIGxpa2UgdGhlc2UgbGluZXM6CisKKzAwOjAwLjAgSG9zdCBicmlkZ2U6IFNpbGljb24gSW50ZWdyYXRlZCBTeXN0ZW1zIFtTaVNdOiBVbmtub3duIGRldmljZSAwNjQ1CiswMDowMi4wIElTQSBicmlkZ2U6IFNpbGljb24gSW50ZWdyYXRlZCBTeXN0ZW1zIFtTaVNdIDg1QzUwMy81NTEzCiswMDowMi4xIFNNQnVzOiBTaWxpY29uIEludGVncmF0ZWQgU3lzdGVtcyBbU2lTXTogVW5rbm93biBkZXZpY2UgMDAxNgorCitvciBwZXJoYXBzIHRoaXMuLi4KKworMDA6MDAuMCBIb3N0IGJyaWRnZTogU2lsaWNvbiBJbnRlZ3JhdGVkIFN5c3RlbXMgW1NpU106IFVua25vd24gZGV2aWNlIDA2NDUKKzAwOjAyLjAgSVNBIGJyaWRnZTogU2lsaWNvbiBJbnRlZ3JhdGVkIFN5c3RlbXMgW1NpU106IFVua25vd24gZGV2aWNlIDA5NjEKKzAwOjAyLjEgU01CdXM6IFNpbGljb24gSW50ZWdyYXRlZCBTeXN0ZW1zIFtTaVNdOiBVbmtub3duIGRldmljZSAwMDE2CisKKyhrZXJuZWwgdmVyc2lvbnMgbGF0ZXIgdGhhbiAyLjQuMTggbWF5IGZpbGwgaW4gdGhlICJVbmtub3duInMpCisKK0lmIHlvdSBjYW4ndCBzZWUgaXQgcGxlYXNlIGxvb2sgb24gcXVpcmtfc2lzXzk2eF9zbWJ1cworKGRyaXZlcnMvcGNpL3F1aXJrcy5jKSAoYWxzbyBpZiBzb3V0aGJyaWRnZSBkZXRlY3Rpb24gZmFpbHMpCisKK0kgc3VzcGVjdCB0aGF0IHRoaXMgZHJpdmVyIGNvdWxkIGJlIG1hZGUgdG8gd29yayBmb3IgdGhlIGZvbGxvd2luZyBTaVMKK2NoaXBzZXRzIGFzIHdlbGw6IDYzNSwgYW5kIDYzNVQuIElmIGFueW9uZSBvd25zIGEgYm9hcmQgd2l0aCB0aG9zZSBjaGlwcworQU5EIGlzIHdpbGxpbmcgdG8gcmlzayBjcmFzaGluZyAmIGJ1cm5pbmcgYW4gb3RoZXJ3aXNlIHdlbGwtYmVoYXZlZCBrZXJuZWwKK2luIHRoZSBuYW1lIG9mIHByb2dyZXNzLi4uIHBsZWFzZSBjb250YWN0IG1lIGF0IDxtaG9mZm1hbkBsaWdodGxpbmsuY29tPiBvcgordmlhIHRoZSBsaW51eC1pMmMgbWFpbGluZyBsaXN0OiA8bGludXgtaTJjQHZnZXIua2VybmVsLm9yZz4uICBQbGVhc2Ugc2VuZCBidWcKK3JlcG9ydHMgYW5kL29yIHN1Y2Nlc3Mgc3RvcmllcyBhcyB3ZWxsLgorCisKK1RPIERPcworLS0tLS0tCisKKyogVGhlIGRyaXZlciBkb2VzIG5vdCBzdXBwb3J0IFNNQnVzIGJsb2NrIHJlYWRzL3dyaXRlczsgSSBtYXkgYWRkIHRoZW0gaWYgYQorc2NlbmFyaW8gaXMgZm91bmQgd2hlcmUgdGhleSdyZSBuZWVkZWQuCisKKworVGhhbmsgWW91CistLS0tLS0tLS0KKworTWFyayBELiBTdHVkZWJha2VyIDxtZHN4eXoxMjNAeWFob28uY29tPgorIC0gZGVzaWduIGhpbnRzIGFuZCBidWcgZml4ZXMKK0FsZXhhbmRlciBNYXlsc2ggPGFtYWx5c2hAd2ViLmRlPgorIC0gZGl0dG8sIHBsdXMgYW4gaW1wb3J0YW50IGRhdGFzaGVldC4uLiBhbG1vc3QgdGhlIG9uZSBJIHJlYWxseSB3YW50ZWQKK0hhbnMtR8O8bnRlciBMw7x0a2UgVXBodWVzIDxoZ19sdUB0LW9ubGluZS5kZT4KKyAtIHBhdGNoIGZvciBTaVM3MzUKK1JvYmVydCBad2VydXMgPGFyemllQGRkcy5ubD4KKyAtIHRlc3RpbmcgZm9yIFNpUzY0NURYCitLaWFudXNjaCBTYXlhaCBLYXJhZGppIDxraWFudXNjaEBzay10ZWNoLm5ldD4KKyAtIHBhdGNoIGZvciBTaVM2NDVEWC85NjIKK0tlbiBIZWFseQorIC0gcGF0Y2ggZm9yIFNpUzY1NQorCitUbyBhbnlvbmUgZWxzZSB3aG8gaGFzIHdyaXR0ZW4gdy8gZmVlZGJhY2ssIHRoYW5rcyEKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy10YW9zLWV2bSBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtdGFvcy1ldm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjAyOTk1NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtdGFvcy1ldm0KQEAgLTAsMCArMSw0NiBAQAorS2VybmVsIGRyaXZlciBpMmMtdGFvcy1ldm0KKworQXV0aG9yOiBKZWFuIERlbHZhcmUgPGpkZWx2YXJlQHN1c2UuZGU+CisKK1RoaXMgaXMgYSBkcml2ZXIgZm9yIHRoZSBldmFsdWF0aW9uIG1vZHVsZXMgZm9yIFRBT1MgSTJDL1NNQnVzIGNoaXBzLgorVGhlIG1vZHVsZXMgaW5jbHVkZSBhbiBTTUJ1cyBtYXN0ZXIgd2l0aCBsaW1pdGVkIGNhcGFiaWxpdGllcywgd2hpY2ggY2FuCitiZSBjb250cm9sbGVkIG92ZXIgdGhlIHNlcmlhbCBwb3J0LiBWaXJ0dWFsbHkgYWxsIGV2YWx1YXRpb24gbW9kdWxlcworYXJlIHN1cHBvcnRlZCwgYnV0IGEgZmV3IGxpbmVzIG9mIGNvZGUgbmVlZCB0byBiZSBhZGRlZCBmb3IgZWFjaCBuZXcKK21vZHVsZSB0byBpbnN0YW50aWF0ZSB0aGUgcmlnaHQgSTJDIGNoaXAgb24gdGhlIGJ1cy4gT2J2aW91c2x5LCBhIGRyaXZlcgorZm9yIHRoZSBjaGlwIGluIHF1ZXN0aW9uIGlzIGFsc28gbmVlZGVkLgorCitDdXJyZW50bHkgc3VwcG9ydGVkIGRldmljZXMgYXJlOgorCisqIFRBT1MgVFNMMjU1MCBFVk0KKworRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gVEFPUyBwcm9kdWN0cywgcGxlYXNlIHNlZQorICBodHRwOi8vd3d3LnRhb3NpbmMuY29tLworCisKK1VzaW5nIHRoaXMgZHJpdmVyCistLS0tLS0tLS0tLS0tLS0tLQorCitJbiBvcmRlciB0byB1c2UgdGhpcyBkcml2ZXIsIHlvdSdsbCBuZWVkIHRoZSBzZXJwb3J0IGRyaXZlciwgYW5kIHRoZQoraW5wdXRhdHRhY2ggdG9vbCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgaW5wdXQtdXRpbHMgcGFja2FnZS4gVGhlIGZvbGxvd2luZworY29tbWFuZHMgd2lsbCB0ZWxsIHRoZSBrZXJuZWwgdGhhdCB5b3UgaGF2ZSBhIFRBT1MgRVZNIG9uIHRoZSBmaXJzdAorc2VyaWFsIHBvcnQ6CisKKyMgbW9kcHJvYmUgc2VycG9ydAorIyBpbnB1dGF0dGFjaCAtLXRhb3MtZXZtIC9kZXYvdHR5UzAKKworCitUZWNobmljYWwgZGV0YWlscworLS0tLS0tLS0tLS0tLS0tLS0KKworT25seSA0IFNNQnVzIHRyYW5zYWN0aW9uIHR5cGVzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIFRBT1MgZXZhbHVhdGlvbgorbW9kdWxlczoKKyogUmVjZWl2ZSBCeXRlCisqIFNlbmQgQnl0ZQorKiBSZWFkIEJ5dGUKKyogV3JpdGUgQnl0ZQorCitUaGUgY29tbXVuaWNhdGlvbiBwcm90b2NvbCBpcyB0ZXh0LWJhc2VkIGFuZCBwcmV0dHkgc2ltcGxlLiBJdCBpcworZGVzY3JpYmVkIGluIGEgUERGIGRvY3VtZW50IG9uIHRoZSBDRCB3aGljaCBjb21lcyB3aXRoIHRoZSBldmFsdWF0aW9uCittb2R1bGUuIFRoZSBjb21tdW5pY2F0aW9uIGlzIHJhdGhlciBzbG93LCBiZWNhdXNlIHRoZSBzZXJpYWwgcG9ydCBoYXMKK3RvIG9wZXJhdGUgYXQgMTIwMCBicHMuIEhvd2V2ZXIsIEkgZG9uJ3QgdGhpbmsgdGhpcyBpcyBhIGJpZyBjb25jZXJuIGluCitwcmFjdGljZSwgYXMgdGhlc2UgbW9kdWxlcyBhcmUgbWVhbnQgZm9yIGV2YWx1YXRpb24gYW5kIHRlc3Rpbmcgb25seS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtdmlhIGIvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy12aWEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQzODcwNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtdmlhCkBAIC0wLDAgKzEsMzQgQEAKK0tlcm5lbCBkcml2ZXIgaTJjLXZpYQorCitTdXBwb3J0ZWQgYWRhcHRlcnM6CisgICogVklBIFRlY2hub2xvZ2llcywgSW5DLiBWVDgyQzU4NkIKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgVklBIHdlYnNpdGUKKworQXV0aG9yOiBLecO2c3RpIE3DpGxra2kgPGttYWxra2lAY2MuaHV0LmZpPgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworaTJjLXZpYSBpcyBhbiBpMmMgYnVzIGRyaXZlciBmb3IgbW90aGVyYm9hcmRzIHdpdGggVklBIGNoaXBzZXQuCisKK1RoZSBmb2xsb3dpbmcgVklBIHBjaSBjaGlwc2V0cyBhcmUgc3VwcG9ydGVkOgorIC0gTVZQMywgVlAzLCBWUDIvOTcsIFZQWC85NyAKKyAtIG90aGVycyB3aXRoIFNvdXRoIGJyaWRnZSBWVDgyQzU4NkIKKworWW91ciBsc3BjaSBsaXN0aW5nIG11c3Qgc2hvdyB0aGlzIDoKKworIEJyaWRnZTogVklBIFRlY2hub2xvZ2llcywgSW5jLiBWVDgyQzU4NkIgQUNQSSAocmV2IDEwKQorCisgICAgUHJvYmxlbXM/CisgCisgUTogWW91IGhhdmUgVlQ4MkM1ODZCIG9uIHRoZSBtb3RoZXJib2FyZCwgYnV0IG5vdCBpbiB0aGUgbGlzdGluZy4gCisgCisgQTogR28gdG8geW91ciBCSU9TIHNldHVwLCBzZWN0aW9uIFBDSSBkZXZpY2VzIG9yIHNpbWlsYXIuCisgICAgVHVybiBVU0Igc3VwcG9ydCBvbiwgYW5kIHRyeSBhZ2Fpbi4gCisKKyBROiBObyBlcnJvciBtZXNzYWdlcywgYnV0IHN0aWxsIGkyYyBkb2Vzbid0IHNlZW0gdG8gd29yay4KKworIEE6IFRoaXMgY2FuIGhhcHBlbi4gVGhpcyBkcml2ZXIgdXNlcyB0aGUgcGlucyBWSUEgcmVjb21tZW5kcyBpbiB0aGVpcgorICAgIGRhdGFzaGVldHMsIGJ1dCB0aGVyZSBhcmUgc2V2ZXJhbCB3YXlzIHRoZSBtb3RoZXJib2FyZCBtYW51ZmFjdHVyZXIKKyAgICBjYW4gYWN0dWFsbHkgd2lyZSB0aGUgbGluZXMuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtdmlhcHJvIGIvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy12aWFwcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWI2NGNlMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtdmlhcHJvCkBAIC0wLDAgKzEsNzMgQEAKK0tlcm5lbCBkcml2ZXIgaTJjLXZpYXBybworCitTdXBwb3J0ZWQgYWRhcHRlcnM6CisgICogVklBIFRlY2hub2xvZ2llcywgSW5jLiBWVDgyQzU5NkEvQgorICAgIERhdGFzaGVldDogU29tZXRpbWVzIGF2YWlsYWJsZSBhdCB0aGUgVklBIHdlYnNpdGUKKworICAqIFZJQSBUZWNobm9sb2dpZXMsIEluYy4gVlQ4MkM2ODZBL0IKKyAgICBEYXRhc2hlZXQ6IFNvbWV0aW1lcyBhdmFpbGFibGUgYXQgdGhlIFZJQSB3ZWJzaXRlCisKKyAgKiBWSUEgVGVjaG5vbG9naWVzLCBJbmMuIFZUODIzMSwgVlQ4MjMzLCBWVDgyMzNBCisgICAgRGF0YXNoZWV0OiBhdmFpbGFibGUgb24gcmVxdWVzdCBmcm9tIFZJQQorCisgICogVklBIFRlY2hub2xvZ2llcywgSW5jLiBWVDgyMzUsIFZUODIzN1IsIFZUODIzN0EsIFZUODIzN1MsIFZUODI1MQorICAgIERhdGFzaGVldDogYXZhaWxhYmxlIG9uIHJlcXVlc3QgYW5kIHVuZGVyIE5EQSBmcm9tIFZJQQorCisgICogVklBIFRlY2hub2xvZ2llcywgSW5jLiBDWDcwMAorICAgIERhdGFzaGVldDogYXZhaWxhYmxlIG9uIHJlcXVlc3QgYW5kIHVuZGVyIE5EQSBmcm9tIFZJQQorCisgICogVklBIFRlY2hub2xvZ2llcywgSW5jLiBWWDgwMC9WWDgyMAorICAgIERhdGFzaGVldDogYXZhaWxhYmxlIG9uIGh0dHA6Ly9saW51eC52aWEuY29tLnR3CisKKyAgKiBWSUEgVGVjaG5vbG9naWVzLCBJbmMuIFZYODU1L1ZYODc1CisgICAgRGF0YXNoZWV0OiBhdmFpbGFibGUgb24gaHR0cDovL2xpbnV4LnZpYS5jb20udHcKKworICAqIFZJQSBUZWNobm9sb2dpZXMsIEluYy4gVlg5MDAKKyAgICBEYXRhc2hlZXQ6IGF2YWlsYWJsZSBvbiBodHRwOi8vbGludXgudmlhLmNvbS50dworCitBdXRob3JzOgorCUt5w7ZzdGkgTcOkbGtraSA8a21hbGtraUBjYy5odXQuZmk+LAorCU1hcmsgRC4gU3R1ZGViYWtlciA8bWRzeHl6MTIzQHlhaG9vLmNvbT4sCisJSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmRlPgorCitNb2R1bGUgUGFyYW1ldGVycworLS0tLS0tLS0tLS0tLS0tLS0KKworKiBmb3JjZTogaW50CisgIEZvcmNpYmx5IGVuYWJsZSB0aGUgU01CdXMgY29udHJvbGxlci4gREFOR0VST1VTIQorKiBmb3JjZV9hZGRyOiBpbnQKKyAgRm9yY2libHkgZW5hYmxlIHRoZSBTTUJ1cyBhdCB0aGUgZ2l2ZW4gYWRkcmVzcy4gRVhUUkVNRUxZIERBTkdFUk9VUyEKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK2kyYy12aWFwcm8gaXMgYSB0cnVlIFNNQnVzIGhvc3QgZHJpdmVyIGZvciBtb3RoZXJib2FyZHMgd2l0aCBvbmUgb2YgdGhlCitzdXBwb3J0ZWQgVklBIHNvdXRoIGJyaWRnZXMuCisKK1lvdXIgbHNwY2kgLW4gbGlzdGluZyBtdXN0IHNob3cgb25lIG9mIHRoZXNlIDoKKworIGRldmljZSAxMTA2OjMwNTAgICAoVlQ4MkM1OTZBIGZ1bmN0aW9uIDMpCisgZGV2aWNlIDExMDY6MzA1MSAgIChWVDgyQzU5NkIgZnVuY3Rpb24gMykKKyBkZXZpY2UgMTEwNjozMDU3ICAgKFZUODJDNjg2IGZ1bmN0aW9uIDQpCisgZGV2aWNlIDExMDY6MzA3NCAgIChWVDgyMzMpCisgZGV2aWNlIDExMDY6MzE0NyAgIChWVDgyMzNBKQorIGRldmljZSAxMTA2OjgyMzUgICAoVlQ4MjMxIGZ1bmN0aW9uIDQpCisgZGV2aWNlIDExMDY6MzE3NyAgIChWVDgyMzUpCisgZGV2aWNlIDExMDY6MzIyNyAgIChWVDgyMzdSKQorIGRldmljZSAxMTA2OjMzMzcgICAoVlQ4MjM3QSkKKyBkZXZpY2UgMTEwNjozMzcyICAgKFZUODIzN1MpCisgZGV2aWNlIDExMDY6MzI4NyAgIChWVDgyNTEpCisgZGV2aWNlIDExMDY6ODMyNCAgIChDWDcwMCkKKyBkZXZpY2UgMTEwNjo4MzUzICAgKFZYODAwL1ZYODIwKQorIGRldmljZSAxMTA2Ojg0MDkgICAoVlg4NTUvVlg4NzUpCisgZGV2aWNlIDExMDY6ODQxMCAgIChWWDkwMCkKKworSWYgbm9uZSBvZiB0aGVzZSBzaG93IHVwLCB5b3Ugc2hvdWxkIGxvb2sgaW4gdGhlIEJJT1MgZm9yIHNldHRpbmdzIGxpa2UKK2VuYWJsZSBBQ1BJIC8gU01CdXMgb3IgZXZlbiBVU0IuCisKK0V4Y2VwdCBmb3IgdGhlIG9sZGVzdCBjaGlwcyAoVlQ4MkM1OTZBL0IsIFZUODJDNjg2QSBhbmQgbW9zdCBwcm9iYWJseQorVlQ4MjMxKSwgdGhpcyBkcml2ZXIgc3VwcG9ydHMgSTJDIGJsb2NrIHRyYW5zYWN0aW9ucy4gU3VjaCB0cmFuc2FjdGlvbnMKK2FyZSBtYWlubHkgdXNlZnVsIHRvIHJlYWQgZnJvbSBhbmQgd3JpdGUgdG8gRUVQUk9Ncy4KKworVGhlIENYNzAwL1ZYODAwL1ZYODIwIGFkZGl0aW9uYWxseSBhcHBlYXJzIHRvIHN1cHBvcnQgU01CdXMgUEVDLCBhbHRob3VnaAordGhpcyBkcml2ZXIgZG9lc24ndCBpbXBsZW1lbnQgaXQgeWV0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL3NjeDIwMF9hY2IgYi9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvc2N4MjAwX2FjYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTgzYzg3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL3NjeDIwMF9hY2IKQEAgLTAsMCArMSwzMiBAQAorS2VybmVsIGRyaXZlciBzY3gyMDBfYWNiCisKK0F1dGhvcjogQ2hyaXN0ZXIgV2VpbmlnZWwgPHdpbmdlbEBuYW5vLXN5c3RlbS5jb20+CisKK1RoZSBkcml2ZXIgc3VwZXJzZWRlcyB0aGUgb2xkZXIsIG5ldmVyIG1lcmdlZCBkcml2ZXIgbmFtZWQgaTJjLW5zY2FjYi4KKworTW9kdWxlIFBhcmFtZXRlcnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKyogYmFzZTogdXAgdG8gNCBpbnRzCisgIEJhc2UgYWRkcmVzc2VzIGZvciB0aGUgQUNDRVNTLmJ1cyBjb250cm9sbGVycyBvbiBTQ3gyMDAgYW5kIFNDMTEwMCBkZXZpY2VzCisKKyAgQnkgZGVmYXVsdCB0aGUgZHJpdmVyIHVzZXMgdHdvIGJhc2UgYWRkcmVzc2VzIDB4ODIwIGFuZCAweDg0MC4KKyAgSWYgeW91IHdhbnQgb25seSBvbmUgYmFzZSBhZGRyZXNzLCBzcGVjaWZ5IHRoZSBzZWNvbmQgYXMgMCBzbyBhcyB0bworICBvdmVycmlkZSB0aGlzIGRlZmF1bHQuCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitFbmFibGUgdGhlIHVzZSBvZiB0aGUgQUNDRVNTLmJ1cyBjb250cm9sbGVyIG9uIHRoZSBHZW9kZSBTQ3gyMDAgYW5kCitTQzExMDAgcHJvY2Vzc29ycyBhbmQgdGhlIENTNTUzNSBhbmQgQ1M1NTM2IEdlb2RlIGNvbXBhbmlvbiBkZXZpY2VzLgorCitEZXZpY2Utc3BlY2lmaWMgbm90ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgU0MxMTAwIFdSQVAgYm9hcmRzIGFyZSBrbm93biB0byB1c2UgYmFzZSBhZGRyZXNzZXMgMHg4MTAgYW5kIDB4ODIwLgorSWYgdGhlIHNjeDIwMF9hY2IgZHJpdmVyIGlzIGJ1aWx0IGludG8gdGhlIGtlcm5lbCwgYWRkIHRoZSBmb2xsb3dpbmcKK3BhcmFtZXRlciB0byB5b3VyIGJvb3QgY29tbWFuZCBsaW5lOgorICBzY3gyMDBfYWNiLmJhc2U9MHg4MTAsMHg4MjAKK0lmIHRoZSBzY3gyMDBfYWNiIGRyaXZlciBpcyBidWlsdCBhcyBhIG1vZHVsZSwgYWRkIHRoZSBmb2xsb3dpbmcgbGluZSB0bworYSBjb25maWd1cmF0aW9uIGZpbGUgaW4gL2V0Yy9tb2Rwcm9iZS5kLyBpbnN0ZWFkOgorICBvcHRpb25zIHNjeDIwMF9hY2IgYmFzZT0weDgxMCwweDgyMApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pMmMvZGV2LWludGVyZmFjZSBiL0RvY3VtZW50YXRpb24vaTJjL2Rldi1pbnRlcmZhY2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFjNzhhZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaTJjL2Rldi1pbnRlcmZhY2UKQEAgLTAsMCArMSwyMTQgQEAKK1VzdWFsbHksIGkyYyBkZXZpY2VzIGFyZSBjb250cm9sbGVkIGJ5IGEga2VybmVsIGRyaXZlci4gQnV0IGl0IGlzIGFsc28KK3Bvc3NpYmxlIHRvIGFjY2VzcyBhbGwgZGV2aWNlcyBvbiBhbiBhZGFwdGVyIGZyb20gdXNlcnNwYWNlLCB0aHJvdWdoCit0aGUgL2RldiBpbnRlcmZhY2UuIFlvdSBuZWVkIHRvIGxvYWQgbW9kdWxlIGkyYy1kZXYgZm9yIHRoaXMuCisKK0VhY2ggcmVnaXN0ZXJlZCBpMmMgYWRhcHRlciBnZXRzIGEgbnVtYmVyLCBjb3VudGluZyBmcm9tIDAuIFlvdSBjYW4KK2V4YW1pbmUgL3N5cy9jbGFzcy9pMmMtZGV2LyB0byBzZWUgd2hhdCBudW1iZXIgY29ycmVzcG9uZHMgdG8gd2hpY2ggYWRhcHRlci4KK0FsdGVybmF0aXZlbHksIHlvdSBjYW4gcnVuICJpMmNkZXRlY3QgLWwiIHRvIG9idGFpbiBhIGZvcm1hdGVkIGxpc3Qgb2YgYWxsCitpMmMgYWRhcHRlcnMgcHJlc2VudCBvbiB5b3VyIHN5c3RlbSBhdCBhIGdpdmVuIHRpbWUuIGkyY2RldGVjdCBpcyBwYXJ0IG9mCit0aGUgaTJjLXRvb2xzIHBhY2thZ2UuCisKK0kyQyBkZXZpY2UgZmlsZXMgYXJlIGNoYXJhY3RlciBkZXZpY2UgZmlsZXMgd2l0aCBtYWpvciBkZXZpY2UgbnVtYmVyIDg5CithbmQgYSBtaW5vciBkZXZpY2UgbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG51bWJlciBhc3NpZ25lZCBhcyAKK2V4cGxhaW5lZCBhYm92ZS4gVGhleSBzaG91bGQgYmUgY2FsbGVkICJpMmMtJWQiIChpMmMtMCwgaTJjLTEsIC4uLiwgCitpMmMtMTAsIC4uLikuIEFsbCAyNTYgbWlub3IgZGV2aWNlIG51bWJlcnMgYXJlIHJlc2VydmVkIGZvciBpMmMuCisKKworQyBleGFtcGxlCis9PT09PT09PT0KKworU28gbGV0J3Mgc2F5IHlvdSB3YW50IHRvIGFjY2VzcyBhbiBpMmMgYWRhcHRlciBmcm9tIGEgQyBwcm9ncmFtLiBUaGUKK2ZpcnN0IHRoaW5nIHRvIGRvIGlzICIjaW5jbHVkZSA8bGludXgvaTJjLWRldi5oPiIuIFBsZWFzZSBub3RlIHRoYXQKK3RoZXJlIGFyZSB0d28gZmlsZXMgbmFtZWQgImkyYy1kZXYuaCIgb3V0IHRoZXJlLCBvbmUgaXMgZGlzdHJpYnV0ZWQKK3dpdGggdGhlIExpbnV4IGtlcm5lbCBhbmQgaXMgbWVhbnQgdG8gYmUgaW5jbHVkZWQgZnJvbSBrZXJuZWwKK2RyaXZlciBjb2RlLCB0aGUgb3RoZXIgb25lIGlzIGRpc3RyaWJ1dGVkIHdpdGggaTJjLXRvb2xzIGFuZCBpcworbWVhbnQgdG8gYmUgaW5jbHVkZWQgZnJvbSB1c2VyLXNwYWNlIHByb2dyYW1zLiBZb3Ugb2J2aW91c2x5IHdhbnQKK3RoZSBzZWNvbmQgb25lIGhlcmUuCisKK05vdywgeW91IGhhdmUgdG8gZGVjaWRlIHdoaWNoIGFkYXB0ZXIgeW91IHdhbnQgdG8gYWNjZXNzLiBZb3Ugc2hvdWxkCitpbnNwZWN0IC9zeXMvY2xhc3MvaTJjLWRldi8gb3IgcnVuICJpMmNkZXRlY3QgLWwiIHRvIGRlY2lkZSB0aGlzLgorQWRhcHRlciBudW1iZXJzIGFyZSBhc3NpZ25lZCBzb21ld2hhdCBkeW5hbWljYWxseSwgc28geW91IGNhbiBub3QKK2Fzc3VtZSBtdWNoIGFib3V0IHRoZW0uIFRoZXkgY2FuIGV2ZW4gY2hhbmdlIGZyb20gb25lIGJvb3QgdG8gdGhlIG5leHQuCisKK05leHQgdGhpbmcsIG9wZW4gdGhlIGRldmljZSBmaWxlLCBhcyBmb2xsb3dzOgorCisgIGludCBmaWxlOworICBpbnQgYWRhcHRlcl9uciA9IDI7IC8qIHByb2JhYmx5IGR5bmFtaWNhbGx5IGRldGVybWluZWQgKi8KKyAgY2hhciBmaWxlbmFtZVsyMF07CisgIAorICBzbnByaW50ZihmaWxlbmFtZSwgMTksICIvZGV2L2kyYy0lZCIsIGFkYXB0ZXJfbnIpOworICBmaWxlID0gb3BlbihmaWxlbmFtZSwgT19SRFdSKTsKKyAgaWYgKGZpbGUgPCAwKSB7CisgICAgLyogRVJST1IgSEFORExJTkc7IHlvdSBjYW4gY2hlY2sgZXJybm8gdG8gc2VlIHdoYXQgd2VudCB3cm9uZyAqLworICAgIGV4aXQoMSk7CisgIH0KKworV2hlbiB5b3UgaGF2ZSBvcGVuZWQgdGhlIGRldmljZSwgeW91IG11c3Qgc3BlY2lmeSB3aXRoIHdoYXQgZGV2aWNlCithZGRyZXNzIHlvdSB3YW50IHRvIGNvbW11bmljYXRlOgorCisgIGludCBhZGRyID0gMHg0MDsgLyogVGhlIEkyQyBhZGRyZXNzICovCisKKyAgaWYgKGlvY3RsKGZpbGUsIEkyQ19TTEFWRSwgYWRkcikgPCAwKSB7CisgICAgLyogRVJST1IgSEFORExJTkc7IHlvdSBjYW4gY2hlY2sgZXJybm8gdG8gc2VlIHdoYXQgd2VudCB3cm9uZyAqLworICAgIGV4aXQoMSk7CisgIH0KKworV2VsbCwgeW91IGFyZSBhbGwgc2V0IHVwIG5vdy4gWW91IGNhbiBub3cgdXNlIFNNQnVzIGNvbW1hbmRzIG9yIHBsYWluCitJMkMgdG8gY29tbXVuaWNhdGUgd2l0aCB5b3VyIGRldmljZS4gU01CdXMgY29tbWFuZHMgYXJlIHByZWZlcnJlZCBpZgordGhlIGRldmljZSBzdXBwb3J0cyB0aGVtLiBCb3RoIGFyZSBpbGx1c3RyYXRlZCBiZWxvdy4KKworICBfX3U4IHJlZyA9IDB4MTA7IC8qIERldmljZSByZWdpc3RlciB0byBhY2Nlc3MgKi8KKyAgX19zMzIgcmVzOworICBjaGFyIGJ1ZlsxMF07CisKKyAgLyogVXNpbmcgU01CdXMgY29tbWFuZHMgKi8KKyAgcmVzID0gaTJjX3NtYnVzX3JlYWRfd29yZF9kYXRhKGZpbGUsIHJlZyk7CisgIGlmIChyZXMgPCAwKSB7CisgICAgLyogRVJST1IgSEFORExJTkc6IGkyYyB0cmFuc2FjdGlvbiBmYWlsZWQgKi8KKyAgfSBlbHNlIHsKKyAgICAvKiByZXMgY29udGFpbnMgdGhlIHJlYWQgd29yZCAqLworICB9CisKKyAgLyogVXNpbmcgSTJDIFdyaXRlLCBlcXVpdmFsZW50IG9mIAorICAgICBpMmNfc21idXNfd3JpdGVfd29yZF9kYXRhKGZpbGUsIHJlZywgMHg2NTQzKSAqLworICBidWZbMF0gPSByZWc7CisgIGJ1ZlsxXSA9IDB4NDM7CisgIGJ1ZlsyXSA9IDB4NjU7CisgIGlmICh3cml0ZShmaWxlLCBidWYsIDMpICE9IDMpIHsKKyAgICAvKiBFUlJPUiBIQU5ETElORzogaTJjIHRyYW5zYWN0aW9uIGZhaWxlZCAqLworICB9CisKKyAgLyogVXNpbmcgSTJDIFJlYWQsIGVxdWl2YWxlbnQgb2YgaTJjX3NtYnVzX3JlYWRfYnl0ZShmaWxlKSAqLworICBpZiAocmVhZChmaWxlLCBidWYsIDEpICE9IDEpIHsKKyAgICAvKiBFUlJPUiBIQU5ETElORzogaTJjIHRyYW5zYWN0aW9uIGZhaWxlZCAqLworICB9IGVsc2UgeworICAgIC8qIGJ1ZlswXSBjb250YWlucyB0aGUgcmVhZCBieXRlICovCisgIH0KKworTm90ZSB0aGF0IG9ubHkgYSBzdWJzZXQgb2YgdGhlIEkyQyBhbmQgU01CdXMgcHJvdG9jb2xzIGNhbiBiZSBhY2hpZXZlZCBieQordGhlIG1lYW5zIG9mIHJlYWQoKSBhbmQgd3JpdGUoKSBjYWxscy4gSW4gcGFydGljdWxhciwgc28tY2FsbGVkIGNvbWJpbmVkCit0cmFuc2FjdGlvbnMgKG1peGluZyByZWFkIGFuZCB3cml0ZSBtZXNzYWdlcyBpbiB0aGUgc2FtZSB0cmFuc2FjdGlvbikKK2FyZW4ndCBzdXBwb3J0ZWQuIEZvciB0aGlzIHJlYXNvbiwgdGhpcyBpbnRlcmZhY2UgaXMgYWxtb3N0IG5ldmVyIHVzZWQgYnkKK3VzZXItc3BhY2UgcHJvZ3JhbXMuCisKK0lNUE9SVEFOVDogYmVjYXVzZSBvZiB0aGUgdXNlIG9mIGlubGluZSBmdW5jdGlvbnMsIHlvdSAqaGF2ZSogdG8gdXNlCisnLU8nIG9yIHNvbWUgdmFyaWF0aW9uIHdoZW4geW91IGNvbXBpbGUgeW91ciBwcm9ncmFtIQorCisKK0Z1bGwgaW50ZXJmYWNlIGRlc2NyaXB0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZm9sbG93aW5nIElPQ1RMcyBhcmUgZGVmaW5lZDoKKworaW9jdGwoZmlsZSwgSTJDX1NMQVZFLCBsb25nIGFkZHIpCisgIENoYW5nZSBzbGF2ZSBhZGRyZXNzLiBUaGUgYWRkcmVzcyBpcyBwYXNzZWQgaW4gdGhlIDcgbG93ZXIgYml0cyBvZiB0aGUKKyAgYXJndW1lbnQgKGV4Y2VwdCBmb3IgMTAgYml0IGFkZHJlc3NlcywgcGFzc2VkIGluIHRoZSAxMCBsb3dlciBiaXRzIGluIHRoaXMKKyAgY2FzZSkuCisKK2lvY3RsKGZpbGUsIEkyQ19URU5CSVQsIGxvbmcgc2VsZWN0KQorICBTZWxlY3RzIHRlbiBiaXQgYWRkcmVzc2VzIGlmIHNlbGVjdCBub3QgZXF1YWxzIDAsIHNlbGVjdHMgbm9ybWFsIDcgYml0CisgIGFkZHJlc3NlcyBpZiBzZWxlY3QgZXF1YWxzIDAuIERlZmF1bHQgMC4gIFRoaXMgcmVxdWVzdCBpcyBvbmx5IHZhbGlkCisgIGlmIHRoZSBhZGFwdGVyIGhhcyBJMkNfRlVOQ18xMEJJVF9BRERSLgorCitpb2N0bChmaWxlLCBJMkNfUEVDLCBsb25nIHNlbGVjdCkKKyAgU2VsZWN0cyBTTUJ1cyBQRUMgKHBhY2tldCBlcnJvciBjaGVja2luZykgZ2VuZXJhdGlvbiBhbmQgdmVyaWZpY2F0aW9uCisgIGlmIHNlbGVjdCBub3QgZXF1YWxzIDAsIGRpc2FibGVzIGlmIHNlbGVjdCBlcXVhbHMgMC4gRGVmYXVsdCAwLgorICBVc2VkIG9ubHkgZm9yIFNNQnVzIHRyYW5zYWN0aW9ucy4gIFRoaXMgcmVxdWVzdCBvbmx5IGhhcyBhbiBlZmZlY3QgaWYgdGhlCisgIHRoZSBhZGFwdGVyIGhhcyBJMkNfRlVOQ19TTUJVU19QRUM7IGl0IGlzIHN0aWxsIHNhZmUgaWYgbm90LCBpdCBqdXN0CisgIGRvZXNuJ3QgaGF2ZSBhbnkgZWZmZWN0LgorCitpb2N0bChmaWxlLCBJMkNfRlVOQ1MsIHVuc2lnbmVkIGxvbmcgKmZ1bmNzKQorICBHZXRzIHRoZSBhZGFwdGVyIGZ1bmN0aW9uYWxpdHkgYW5kIHB1dHMgaXQgaW4gKmZ1bmNzLgorCitpb2N0bChmaWxlLCBJMkNfUkRXUiwgc3RydWN0IGkyY19yZHdyX2lvY3RsX2RhdGEgKm1zZ3NldCkKKyAgRG8gY29tYmluZWQgcmVhZC93cml0ZSB0cmFuc2FjdGlvbiB3aXRob3V0IHN0b3AgaW4gYmV0d2Vlbi4KKyAgT25seSB2YWxpZCBpZiB0aGUgYWRhcHRlciBoYXMgSTJDX0ZVTkNfSTJDLiAgVGhlIGFyZ3VtZW50IGlzCisgIGEgcG9pbnRlciB0byBhCisKKyAgc3RydWN0IGkyY19yZHdyX2lvY3RsX2RhdGEgeworICAgICAgc3RydWN0IGkyY19tc2cgKm1zZ3M7ICAvKiBwdHIgdG8gYXJyYXkgb2Ygc2ltcGxlIG1lc3NhZ2VzICovCisgICAgICBpbnQgbm1zZ3M7ICAgICAgICAgICAgIC8qIG51bWJlciBvZiBtZXNzYWdlcyB0byBleGNoYW5nZSAqLworICB9CisKKyAgVGhlIG1zZ3NbXSB0aGVtc2VsdmVzIGNvbnRhaW4gZnVydGhlciBwb2ludGVycyBpbnRvIGRhdGEgYnVmZmVycy4KKyAgVGhlIGZ1bmN0aW9uIHdpbGwgd3JpdGUgb3IgcmVhZCBkYXRhIHRvIG9yIGZyb20gdGhhdCBidWZmZXJzIGRlcGVuZGluZworICBvbiB3aGV0aGVyIHRoZSBJMkNfTV9SRCBmbGFnIGlzIHNldCBpbiBhIHBhcnRpY3VsYXIgbWVzc2FnZSBvciBub3QuCisgIFRoZSBzbGF2ZSBhZGRyZXNzIGFuZCB3aGV0aGVyIHRvIHVzZSB0ZW4gYml0IGFkZHJlc3MgbW9kZSBoYXMgdG8gYmUKKyAgc2V0IGluIGVhY2ggbWVzc2FnZSwgb3ZlcnJpZGluZyB0aGUgdmFsdWVzIHNldCB3aXRoIHRoZSBhYm92ZSBpb2N0bCdzLgorCitpb2N0bChmaWxlLCBJMkNfU01CVVMsIHN0cnVjdCBpMmNfc21idXNfaW9jdGxfZGF0YSAqYXJncykKKyAgTm90IG1lYW50IHRvIGJlIGNhbGxlZCAgZGlyZWN0bHk7IGluc3RlYWQsIHVzZSB0aGUgYWNjZXNzIGZ1bmN0aW9ucworICBiZWxvdy4KKworWW91IGNhbiBkbyBwbGFpbiBpMmMgdHJhbnNhY3Rpb25zIGJ5IHVzaW5nIHJlYWQoMikgYW5kIHdyaXRlKDIpIGNhbGxzLgorWW91IGRvIG5vdCBuZWVkIHRvIHBhc3MgdGhlIGFkZHJlc3MgYnl0ZTsgaW5zdGVhZCwgc2V0IGl0IHRocm91Z2gKK2lvY3RsIEkyQ19TTEFWRSBiZWZvcmUgeW91IHRyeSB0byBhY2Nlc3MgdGhlIGRldmljZS4KKworWW91IGNhbiBkbyBTTUJ1cyBsZXZlbCB0cmFuc2FjdGlvbnMgKHNlZSBkb2N1bWVudGF0aW9uIGZpbGUgc21idXMtcHJvdG9jb2wgCitmb3IgZGV0YWlscykgdGhyb3VnaCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKKyAgX19zMzIgaTJjX3NtYnVzX3dyaXRlX3F1aWNrKGludCBmaWxlLCBfX3U4IHZhbHVlKTsKKyAgX19zMzIgaTJjX3NtYnVzX3JlYWRfYnl0ZShpbnQgZmlsZSk7CisgIF9fczMyIGkyY19zbWJ1c193cml0ZV9ieXRlKGludCBmaWxlLCBfX3U4IHZhbHVlKTsKKyAgX19zMzIgaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGludCBmaWxlLCBfX3U4IGNvbW1hbmQpOworICBfX3MzMiBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGludCBmaWxlLCBfX3U4IGNvbW1hbmQsIF9fdTggdmFsdWUpOworICBfX3MzMiBpMmNfc21idXNfcmVhZF93b3JkX2RhdGEoaW50IGZpbGUsIF9fdTggY29tbWFuZCk7CisgIF9fczMyIGkyY19zbWJ1c193cml0ZV93b3JkX2RhdGEoaW50IGZpbGUsIF9fdTggY29tbWFuZCwgX191MTYgdmFsdWUpOworICBfX3MzMiBpMmNfc21idXNfcHJvY2Vzc19jYWxsKGludCBmaWxlLCBfX3U4IGNvbW1hbmQsIF9fdTE2IHZhbHVlKTsKKyAgX19zMzIgaTJjX3NtYnVzX3JlYWRfYmxvY2tfZGF0YShpbnQgZmlsZSwgX191OCBjb21tYW5kLCBfX3U4ICp2YWx1ZXMpOworICBfX3MzMiBpMmNfc21idXNfd3JpdGVfYmxvY2tfZGF0YShpbnQgZmlsZSwgX191OCBjb21tYW5kLCBfX3U4IGxlbmd0aCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdTggKnZhbHVlcyk7CitBbGwgdGhlc2UgdHJhbnNhY3Rpb25zIHJldHVybiAtMSBvbiBmYWlsdXJlOyB5b3UgY2FuIHJlYWQgZXJybm8gdG8gc2VlCit3aGF0IGhhcHBlbmVkLiBUaGUgJ3dyaXRlJyB0cmFuc2FjdGlvbnMgcmV0dXJuIDAgb24gc3VjY2VzczsgdGhlCisncmVhZCcgdHJhbnNhY3Rpb25zIHJldHVybiB0aGUgcmVhZCB2YWx1ZSwgZXhjZXB0IGZvciByZWFkX2Jsb2NrLCB3aGljaAorcmV0dXJucyB0aGUgbnVtYmVyIG9mIHZhbHVlcyByZWFkLiBUaGUgYmxvY2sgYnVmZmVycyBuZWVkIG5vdCBiZSBsb25nZXIKK3RoYW4gMzIgYnl0ZXMuCisKK1RoZSBhYm92ZSBmdW5jdGlvbnMgYXJlIGFsbCBpbmxpbmUgZnVuY3Rpb25zLCB0aGF0IHJlc29sdmUgdG8gY2FsbHMgdG8KK3RoZSBpMmNfc21idXNfYWNjZXNzIGZ1bmN0aW9uLCB0aGF0IG9uIGl0cyB0dXJuIGNhbGxzIGEgc3BlY2lmaWMgaW9jdGwKK3dpdGggdGhlIGRhdGEgaW4gYSBzcGVjaWZpYyBmb3JtYXQuIFJlYWQgdGhlIHNvdXJjZSBjb2RlIGlmIHlvdQord2FudCB0byBrbm93IHdoYXQgaGFwcGVucyBiZWhpbmQgdGhlIHNjcmVlbnMuCisKKworSW1wbGVtZW50YXRpb24gZGV0YWlscworPT09PT09PT09PT09PT09PT09PT09PQorCitGb3IgdGhlIGludGVyZXN0ZWQsIGhlcmUncyB0aGUgY29kZSBmbG93IHdoaWNoIGhhcHBlbnMgaW5zaWRlIHRoZSBrZXJuZWwKK3doZW4geW91IHVzZSB0aGUgL2RldiBpbnRlcmZhY2UgdG8gSTJDOgorCisxKiBZb3VyIHByb2dyYW0gb3BlbnMgL2Rldi9pMmMtTiBhbmQgY2FsbHMgaW9jdGwoKSBvbiBpdCwgYXMgZGVzY3JpYmVkIGluCitzZWN0aW9uICJDIGV4YW1wbGUiIGFib3ZlLgorCisyKiBUaGVzZSBvcGVuKCkgYW5kIGlvY3RsKCkgY2FsbHMgYXJlIGhhbmRsZWQgYnkgdGhlIGkyYy1kZXYga2VybmVsCitkcml2ZXI6IHNlZSBpMmMtZGV2LmM6aTJjZGV2X29wZW4oKSBhbmQgaTJjLWRldi5jOmkyY2Rldl9pb2N0bCgpLAorcmVzcGVjdGl2ZWx5LiBZb3UgY2FuIHRoaW5rIG9mIGkyYy1kZXYgYXMgYSBnZW5lcmljIEkyQyBjaGlwIGRyaXZlcgordGhhdCBjYW4gYmUgcHJvZ3JhbW1lZCBmcm9tIHVzZXItc3BhY2UuCisKKzMqIFNvbWUgaW9jdGwoKSBjYWxscyBhcmUgZm9yIGFkbWluaXN0cmF0aXZlIHRhc2tzIGFuZCBhcmUgaGFuZGxlZCBieQoraTJjLWRldiBkaXJlY3RseS4gRXhhbXBsZXMgaW5jbHVkZSBJMkNfU0xBVkUgKHNldCB0aGUgYWRkcmVzcyBvZiB0aGUKK2RldmljZSB5b3Ugd2FudCB0byBhY2Nlc3MpIGFuZCBJMkNfUEVDIChlbmFibGUgb3IgZGlzYWJsZSBTTUJ1cyBlcnJvcgorY2hlY2tpbmcgb24gZnV0dXJlIHRyYW5zYWN0aW9ucy4pCisKKzQqIE90aGVyIGlvY3RsKCkgY2FsbHMgYXJlIGNvbnZlcnRlZCB0byBpbi1rZXJuZWwgZnVuY3Rpb24gY2FsbHMgYnkKK2kyYy1kZXYuIEV4YW1wbGVzIGluY2x1ZGUgSTJDX0ZVTkNTLCB3aGljaCBxdWVyaWVzIHRoZSBJMkMgYWRhcHRlcgorZnVuY3Rpb25hbGl0eSB1c2luZyBpMmMuaDppMmNfZ2V0X2Z1bmN0aW9uYWxpdHkoKSwgYW5kIEkyQ19TTUJVUywgd2hpY2gKK3BlcmZvcm1zIGFuIFNNQnVzIHRyYW5zYWN0aW9uIHVzaW5nIGkyYy1jb3JlLmM6aTJjX3NtYnVzX3hmZXIoKS4KKworVGhlIGkyYy1kZXYgZHJpdmVyIGlzIHJlc3BvbnNpYmxlIGZvciBjaGVja2luZyBhbGwgdGhlIHBhcmFtZXRlcnMgdGhhdAorY29tZSBmcm9tIHVzZXItc3BhY2UgZm9yIHZhbGlkaXR5LiBBZnRlciB0aGlzIHBvaW50LCB0aGVyZSBpcyBubworZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZXNlIGNhbGxzIHRoYXQgY2FtZSBmcm9tIHVzZXItc3BhY2UgdGhyb3VnaCBpMmMtZGV2CithbmQgY2FsbHMgdGhhdCB3b3VsZCBoYXZlIGJlZW4gcGVyZm9ybWVkIGJ5IGtlcm5lbCBJMkMgY2hpcCBkcml2ZXJzCitkaXJlY3RseS4gVGhpcyBtZWFucyB0aGF0IEkyQyBidXMgZHJpdmVycyBkb24ndCBuZWVkIHRvIGltcGxlbWVudAorYW55dGhpbmcgc3BlY2lhbCB0byBzdXBwb3J0IGFjY2VzcyBmcm9tIHVzZXItc3BhY2UuCisKKzUqIFRoZXNlIGkyYy1jb3JlLmMvaTJjLmggZnVuY3Rpb25zIGFyZSB3cmFwcGVycyB0byB0aGUgYWN0dWFsCitpbXBsZW1lbnRhdGlvbiBvZiB5b3VyIEkyQyBidXMgZHJpdmVyLiBFYWNoIGFkYXB0ZXIgbXVzdCBkZWNsYXJlCitjYWxsYmFjayBmdW5jdGlvbnMgaW1wbGVtZW50aW5nIHRoZXNlIHN0YW5kYXJkIGNhbGxzLgoraTJjLmg6aTJjX2dldF9mdW5jdGlvbmFsaXR5KCkgY2FsbHMgaTJjX2FkYXB0ZXIuYWxnby0+ZnVuY3Rpb25hbGl0eSgpLAord2hpbGUgaTJjLWNvcmUuYzppMmNfc21idXNfeGZlcigpIGNhbGxzIGVpdGhlcgorYWRhcHRlci5hbGdvLT5zbWJ1c194ZmVyKCkgaWYgaXQgaXMgaW1wbGVtZW50ZWQsIG9yIGlmIG5vdCwKK2kyYy1jb3JlLmM6aTJjX3NtYnVzX3hmZXJfZW11bGF0ZWQoKSB3aGljaCBpbiB0dXJuIGNhbGxzCitpMmNfYWRhcHRlci5hbGdvLT5tYXN0ZXJfeGZlcigpLgorCitBZnRlciB5b3VyIEkyQyBidXMgZHJpdmVyIGhhcyBwcm9jZXNzZWQgdGhlc2UgcmVxdWVzdHMsIGV4ZWN1dGlvbiBydW5zCit1cCB0aGUgY2FsbCBjaGFpbiwgd2l0aCBhbG1vc3Qgbm8gcHJvY2Vzc2luZyBkb25lLCBleGNlcHQgYnkgaTJjLWRldiB0bworcGFja2FnZSB0aGUgcmV0dXJuZWQgZGF0YSwgaWYgYW55LCBpbiBzdWl0YWJsZSBmb3JtYXQgZm9yIHRoZSBpb2N0bC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaTJjL2ZhdWx0LWNvZGVzIGIvRG9jdW1lbnRhdGlvbi9pMmMvZmF1bHQtY29kZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdjMjVhYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaTJjL2ZhdWx0LWNvZGVzCkBAIC0wLDAgKzEsMTI0IEBACitUaGlzIGlzIGEgc3VtbWFyeSBvZiB0aGUgbW9zdCBpbXBvcnRhbnQgY29udmVudGlvbnMgZm9yIHVzZSBvZiBmYXVsdAorY29kZXMgaW4gdGhlIEkyQy9TTUJ1cyBzdGFjay4KKworCitBICJGYXVsdCIgaXMgbm90IGFsd2F5cyBhbiAiRXJyb3IiCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOb3QgYWxsIGZhdWx0IHJlcG9ydHMgaW1wbHkgZXJyb3JzOyAicGFnZSBmYXVsdHMiIHNob3VsZCBiZSBhIGZhbWlsaWFyCitleGFtcGxlLiAgU29mdHdhcmUgb2Z0ZW4gcmV0cmllcyBpZGVtcG90ZW50IG9wZXJhdGlvbnMgYWZ0ZXIgdHJhbnNpZW50CitmYXVsdHMuICBUaGVyZSBtYXkgYmUgZmFuY2llciByZWNvdmVyeSBzY2hlbWVzIHRoYXQgYXJlIGFwcHJvcHJpYXRlIGluCitzb21lIGNhc2VzLCBzdWNoIGFzIHJlLWluaXRpYWxpemluZyAoYW5kIG1heWJlIHJlc2V0dGluZykuICBBZnRlciBzdWNoCityZWNvdmVyeSwgdHJpZ2dlcmVkIGJ5IGEgZmF1bHQgcmVwb3J0LCB0aGVyZSBpcyBubyBlcnJvci4KKworSW4gYSBzaW1pbGFyIHdheSwgc29tZXRpbWVzIGEgImZhdWx0IiBjb2RlIGp1c3QgcmVwb3J0cyBvbmUgZGVmaW5lZAorcmVzdWx0IGZvciBhbiBvcGVyYXRpb24gLi4uIGl0IGRvZXNuJ3QgaW5kaWNhdGUgdGhhdCBhbnl0aGluZyBpcyB3cm9uZworYXQgYWxsLCBqdXN0IHRoYXQgdGhlIG91dGNvbWUgd2Fzbid0IG9uIHRoZSAiZ29sZGVuIHBhdGgiLgorCitJbiBzaG9ydCwgeW91ciBJMkMgZHJpdmVyIGNvZGUgbWF5IG5lZWQgdG8ga25vdyB0aGVzZSBjb2RlcyBpbiBvcmRlcgordG8gcmVzcG9uZCBjb3JyZWN0bHkuICBPdGhlciBjb2RlIG1heSBuZWVkIHRvIHJlbHkgb24gWU9VUiBjb2RlIHJlcG9ydGluZwordGhlIHJpZ2h0IGZhdWx0IGNvZGUsIHNvIHRoYXQgaXQgY2FuIChpbiB0dXJuKSBiZWhhdmUgY29ycmVjdGx5LgorCisKK0kyQyBhbmQgU01CdXMgZmF1bHQgY29kZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZXNlIGFyZSByZXR1cm5lZCBhcyBuZWdhdGl2ZSBudW1iZXJzIGZyb20gbW9zdCBjYWxscywgd2l0aCB6ZXJvIG9yCitzb21lIHBvc2l0aXZlIG51bWJlciBpbmRpY2F0aW5nIGEgbm9uLWZhdWx0IHJldHVybi4gIFRoZSBzcGVjaWZpYworbnVtYmVycyBhc3NvY2lhdGVkIHdpdGggdGhlc2Ugc3ltYm9scyBkaWZmZXIgYmV0d2VlbiBhcmNoaXRlY3R1cmVzLAordGhvdWdoIG1vc3QgTGludXggc3lzdGVtcyB1c2UgPGFzbS1nZW5lcmljL2Vycm5vKi5oPiBudW1iZXJpbmcuCisKK05vdGUgdGhhdCB0aGUgZGVzY3JpcHRpb25zIGhlcmUgYXJlIG5vdCBleGhhdXN0aXZlLiAgVGhlcmUgYXJlIG90aGVyCitjb2RlcyB0aGF0IG1heSBiZSByZXR1cm5lZCwgYW5kIG90aGVyIGNhc2VzIHdoZXJlIHRoZXNlIGNvZGVzIHNob3VsZAorYmUgcmV0dXJuZWQuICBIb3dldmVyLCBkcml2ZXJzIHNob3VsZCBub3QgcmV0dXJuIG90aGVyIGNvZGVzIGZvciB0aGVzZQorY2FzZXMgKHVubGVzcyB0aGUgaGFyZHdhcmUgZG9lc24ndCBwcm92aWRlIHVuaXF1ZSBmYXVsdCByZXBvcnRzKS4KKworQWxzbywgY29kZXMgcmV0dXJuZWQgYnkgYWRhcHRlciBwcm9iZSBtZXRob2RzIGZvbGxvdyBydWxlcyB3aGljaCBhcmUKK3NwZWNpZmljIHRvIHRoZWlyIGhvc3QgYnVzIChzdWNoIGFzIFBDSSwgb3IgdGhlIHBsYXRmb3JtIGJ1cykuCisKKworRUFHQUlOCisJUmV0dXJuZWQgYnkgSTJDIGFkYXB0ZXJzIHdoZW4gdGhleSBsb3NlIGFyYml0cmF0aW9uIGluIG1hc3RlcgorCXRyYW5zbWl0IG1vZGU6ICBzb21lIG90aGVyIG1hc3RlciB3YXMgdHJhbnNtaXR0aW5nIGRpZmZlcmVudAorCWRhdGEgYXQgdGhlIHNhbWUgdGltZS4KKworCUFsc28gcmV0dXJuZWQgd2hlbiB0cnlpbmcgdG8gaW52b2tlIGFuIEkyQyBvcGVyYXRpb24gaW4gYW4KKwlhdG9taWMgY29udGV4dCwgd2hlbiBzb21lIHRhc2sgaXMgYWxyZWFkeSB1c2luZyB0aGF0IEkyQyBidXMKKwl0byBleGVjdXRlIHNvbWUgb3RoZXIgb3BlcmF0aW9uLgorCitFQkFETVNHCisJUmV0dXJuZWQgYnkgU01CdXMgbG9naWMgd2hlbiBhbiBpbnZhbGlkIFBhY2tldCBFcnJvciBDb2RlIGJ5dGUKKwlpcyByZWNlaXZlZC4gIFRoaXMgY29kZSBpcyBhIENSQyBjb3ZlcmluZyBhbGwgYnl0ZXMgaW4gdGhlCisJdHJhbnNhY3Rpb24sIGFuZCBpcyBzZW50IGJlZm9yZSB0aGUgdGVybWluYXRpbmcgU1RPUC4gIFRoaXMKKwlmYXVsdCBpcyBvbmx5IHJlcG9ydGVkIG9uIHJlYWQgdHJhbnNhY3Rpb25zOyB0aGUgU01CdXMgc2xhdmUKKwltYXkgaGF2ZSBhIHdheSB0byByZXBvcnQgUEVDIG1pc21hdGNoZXMgb24gd3JpdGVzIGZyb20gdGhlCisJaG9zdC4gIE5vdGUgdGhhdCBldmVuIGlmIFBFQ3MgYXJlIGluIHVzZSwgeW91IHNob3VsZCBub3QgcmVseQorCW9uIHRoZXNlIGFzIHRoZSBvbmx5IHdheSB0byBkZXRlY3QgaW5jb3JyZWN0IGRhdGEgdHJhbnNmZXJzLgorCitFQlVTWQorCVJldHVybmVkIGJ5IFNNQnVzIGFkYXB0ZXJzIHdoZW4gdGhlIGJ1cyB3YXMgYnVzeSBmb3IgbG9uZ2VyCisJdGhhbiBhbGxvd2VkLiAgVGhpcyB1c3VhbGx5IGluZGljYXRlcyBzb21lIGRldmljZSAobWF5YmUgdGhlCisJU01CdXMgYWRhcHRlcikgbmVlZHMgc29tZSBmYXVsdCByZWNvdmVyeSAoc3VjaCBhcyByZXNldHRpbmcpLAorCW9yIHRoYXQgdGhlIHJlc2V0IHdhcyBhdHRlbXB0ZWQgYnV0IGZhaWxlZC4KKworRUlOVkFMCisJVGhpcyByYXRoZXIgdmFndWUgZXJyb3IgbWVhbnMgYW4gaW52YWxpZCBwYXJhbWV0ZXIgaGFzIGJlZW4KKwlkZXRlY3RlZCBiZWZvcmUgYW55IEkvTyBvcGVyYXRpb24gd2FzIHN0YXJ0ZWQuICBVc2UgYSBtb3JlCisJc3BlY2lmaWMgZmF1bHQgY29kZSB3aGVuIHlvdSBjYW4uCisKK0VJTworCVRoaXMgcmF0aGVyIHZhZ3VlIGVycm9yIG1lYW5zIHNvbWV0aGluZyB3ZW50IHdyb25nIHdoZW4KKwlwZXJmb3JtaW5nIGFuIEkvTyBvcGVyYXRpb24uICBVc2UgYSBtb3JlIHNwZWNpZmljIGZhdWx0CisJY29kZSB3aGVuIHlvdSBjYW4uCisKK0VOT0RFVgorCVJldHVybmVkIGJ5IGRyaXZlciBwcm9iZSgpIG1ldGhvZHMuICBUaGlzIGlzIGEgYml0IG1vcmUKKwlzcGVjaWZpYyB0aGFuIEVOWElPLCBpbXBseWluZyB0aGUgcHJvYmxlbSBpc24ndCB3aXRoIHRoZQorCWFkZHJlc3MsIGJ1dCB3aXRoIHRoZSBkZXZpY2UgZm91bmQgdGhlcmUuICBEcml2ZXIgcHJvYmVzCisJbWF5IHZlcmlmeSB0aGUgZGV2aWNlIHJldHVybnMgKmNvcnJlY3QqIHJlc3BvbnNlcywgYW5kCisJcmV0dXJuIHRoaXMgYXMgYXBwcm9wcmlhdGUuICAoVGhlIGRyaXZlciBjb3JlIHdpbGwgd2FybgorCWFib3V0IHByb2JlIGZhdWx0cyBvdGhlciB0aGFuIEVOWElPIGFuZCBFTk9ERVYuKQorCitFTk9NRU0KKwlSZXR1cm5lZCBieSBhbnkgY29tcG9uZW50IHRoYXQgY2FuJ3QgYWxsb2NhdGUgbWVtb3J5IHdoZW4KKwlpdCBuZWVkcyB0byBkbyBzby4KKworRU5YSU8KKwlSZXR1cm5lZCBieSBJMkMgYWRhcHRlcnMgdG8gaW5kaWNhdGUgdGhhdCB0aGUgYWRkcmVzcyBwaGFzZQorCW9mIGEgdHJhbnNmZXIgZGlkbid0IGdldCBhbiBBQ0suICBXaGlsZSBpdCBtaWdodCBqdXN0IG1lYW4KKwlhbiBJMkMgZGV2aWNlIHdhcyB0ZW1wb3JhcmlseSBub3QgcmVzcG9uZGluZywgdXN1YWxseSBpdAorCW1lYW5zIHRoZXJlJ3Mgbm90aGluZyBsaXN0ZW5pbmcgYXQgdGhhdCBhZGRyZXNzLgorCisJUmV0dXJuZWQgYnkgZHJpdmVyIHByb2JlKCkgbWV0aG9kcyB0byBpbmRpY2F0ZSB0aGF0IHRoZXkKKwlmb3VuZCBubyBkZXZpY2UgdG8gYmluZCB0by4gIChFTk9ERVYgbWF5IGFsc28gYmUgdXNlZC4pCisKK0VPUE5PVFNVUFAKKwlSZXR1cm5lZCBieSBhbiBhZGFwdGVyIHdoZW4gYXNrZWQgdG8gcGVyZm9ybSBhbiBvcGVyYXRpb24KKwl0aGF0IGl0IGRvZXNuJ3QsIG9yIGNhbid0LCBzdXBwb3J0LgorCisJRm9yIGV4YW1wbGUsIHRoaXMgd291bGQgYmUgcmV0dXJuZWQgd2hlbiBhbiBhZGFwdGVyIHRoYXQKKwlkb2Vzbid0IHN1cHBvcnQgU01CdXMgYmxvY2sgdHJhbnNmZXJzIGlzIGFza2VkIHRvIGV4ZWN1dGUKKwlvbmUuICBJbiB0aGF0IGNhc2UsIHRoZSBkcml2ZXIgbWFraW5nIHRoYXQgcmVxdWVzdCBzaG91bGQKKwloYXZlIHZlcmlmaWVkIHRoYXQgZnVuY3Rpb25hbGl0eSB3YXMgc3VwcG9ydGVkIGJlZm9yZSBpdAorCW1hZGUgdGhhdCBibG9jayB0cmFuc2ZlciByZXF1ZXN0LgorCisJU2ltaWxhcmx5LCBpZiBhbiBJMkMgYWRhcHRlciBjYW4ndCBleGVjdXRlIGFsbCBsZWdhbCBJMkMKKwltZXNzYWdlcywgaXQgc2hvdWxkIHJldHVybiB0aGlzIHdoZW4gYXNrZWQgdG8gcGVyZm9ybSBhCisJdHJhbnNhY3Rpb24gaXQgY2FuJ3QuICAoVGhlc2UgbGltaXRhdGlvbnMgY2FuJ3QgYmUgc2VlbiBpbgorCXRoZSBhZGFwdGVyJ3MgZnVuY3Rpb25hbGl0eSBtYXNrLCBzaW5jZSB0aGUgYXNzdW1wdGlvbiBpcworCXRoYXQgaWYgYW4gYWRhcHRlciBzdXBwb3J0cyBJMkMgaXQgc3VwcG9ydHMgYWxsIG9mIEkyQy4pCisKK0VQUk9UTworCVJldHVybmVkIHdoZW4gc2xhdmUgZG9lcyBub3QgY29uZm9ybSB0byB0aGUgcmVsZXZhbnQgSTJDCisJb3IgU01CdXMgKG9yIGNoaXAtc3BlY2lmaWMpIHByb3RvY29sIHNwZWNpZmljYXRpb25zLiAgT25lCisJY2FzZSBpcyB3aGVuIHRoZSBsZW5ndGggb2YgYW4gU01CdXMgYmxvY2sgZGF0YSByZXNwb25zZQorCShmcm9tIHRoZSBTTUJ1cyBzbGF2ZSkgaXMgb3V0c2lkZSB0aGUgcmFuZ2UgMS0zMiBieXRlcy4KKworRVRJTUVET1VUCisJVGhpcyBpcyByZXR1cm5lZCBieSBkcml2ZXJzIHdoZW4gYW4gb3BlcmF0aW9uIHRvb2sgdG9vIG11Y2gKKwl0aW1lLCBhbmQgd2FzIGFib3J0ZWQgYmVmb3JlIGl0IGNvbXBsZXRlZC4KKworCVNNQnVzIGFkYXB0ZXJzIG1heSByZXR1cm4gaXQgd2hlbiBhbiBvcGVyYXRpb24gdG9vayBtb3JlCisJdGltZSB0aGFuIGFsbG93ZWQgYnkgdGhlIFNNQnVzIHNwZWNpZmljYXRpb247IGZvciBleGFtcGxlLAorCXdoZW4gYSBzbGF2ZSBzdHJldGNoZXMgY2xvY2tzIHRvbyBmYXIuICBJMkMgaGFzIG5vIHN1Y2gKKwl0aW1lb3V0cywgYnV0IGl0J3Mgbm9ybWFsIGZvciBJMkMgYWRhcHRlcnMgdG8gaW1wb3NlIHNvbWUKKwlhcmJpdHJhcnkgbGltaXRzIChtdWNoIGxvbmdlciB0aGFuIFNNQnVzISkgdG9vLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2kyYy9mdW5jdGlvbmFsaXR5IGIvRG9jdW1lbnRhdGlvbi9pMmMvZnVuY3Rpb25hbGl0eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWFlOGVkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pMmMvZnVuY3Rpb25hbGl0eQpAQCAtMCwwICsxLDE0OCBAQAorSU5UUk9EVUNUSU9OCistLS0tLS0tLS0tLS0KKworQmVjYXVzZSBub3QgZXZlcnkgSTJDIG9yIFNNQnVzIGFkYXB0ZXIgaW1wbGVtZW50cyBldmVyeXRoaW5nIGluIHRoZSAKK0kyQyBzcGVjaWZpY2F0aW9ucywgYSBjbGllbnQgY2FuIG5vdCB0cnVzdCB0aGF0IGV2ZXJ5dGhpbmcgaXQgbmVlZHMKK2lzIGltcGxlbWVudGVkIHdoZW4gaXQgaXMgZ2l2ZW4gdGhlIG9wdGlvbiB0byBhdHRhY2ggdG8gYW4gYWRhcHRlcjoKK3RoZSBjbGllbnQgbmVlZHMgc29tZSB3YXkgdG8gY2hlY2sgd2hldGhlciBhbiBhZGFwdGVyIGhhcyB0aGUgbmVlZGVkCitmdW5jdGlvbmFsaXR5LiAKKworCitGVU5DVElPTkFMSVRZIENPTlNUQU5UUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRm9yIHRoZSBtb3N0IHVwLXRvLWRhdGUgbGlzdCBvZiBmdW5jdGlvbmFsaXR5IGNvbnN0YW50cywgcGxlYXNlIGNoZWNrCis8dWFwaS9saW51eC9pMmMuaD4hCisKKyAgSTJDX0ZVTkNfSTJDICAgICAgICAgICAgICAgICAgICBQbGFpbiBpMmMtbGV2ZWwgY29tbWFuZHMgKFB1cmUgU01CdXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGFwdGVycyB0eXBpY2FsbHkgY2FuIG5vdCBkbyB0aGVzZSkKKyAgSTJDX0ZVTkNfMTBCSVRfQUREUiAgICAgICAgICAgICBIYW5kbGVzIHRoZSAxMC1iaXQgYWRkcmVzcyBleHRlbnNpb25zCisgIEkyQ19GVU5DX1BST1RPQ09MX01BTkdMSU5HICAgICAgS25vd3MgYWJvdXQgdGhlIEkyQ19NX0lHTk9SRV9OQUssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTJDX01fUkVWX0RJUl9BRERSIGFuZCBJMkNfTV9OT19SRF9BQ0sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyAod2hpY2ggbW9kaWZ5IHRoZSBJMkMgcHJvdG9jb2whKQorICBJMkNfRlVOQ19OT1NUQVJUICAgICAgICAgICAgICAgIENhbiBza2lwIHJlcGVhdGVkIHN0YXJ0IHNlcXVlbmNlCisgIEkyQ19GVU5DX1NNQlVTX1FVSUNLICAgICAgICAgICAgSGFuZGxlcyB0aGUgU01CdXMgd3JpdGVfcXVpY2sgY29tbWFuZAorICBJMkNfRlVOQ19TTUJVU19SRUFEX0JZVEUgICAgICAgIEhhbmRsZXMgdGhlIFNNQnVzIHJlYWRfYnl0ZSBjb21tYW5kCisgIEkyQ19GVU5DX1NNQlVTX1dSSVRFX0JZVEUgICAgICAgSGFuZGxlcyB0aGUgU01CdXMgd3JpdGVfYnl0ZSBjb21tYW5kCisgIEkyQ19GVU5DX1NNQlVTX1JFQURfQllURV9EQVRBICAgSGFuZGxlcyB0aGUgU01CdXMgcmVhZF9ieXRlX2RhdGEgY29tbWFuZAorICBJMkNfRlVOQ19TTUJVU19XUklURV9CWVRFX0RBVEEgIEhhbmRsZXMgdGhlIFNNQnVzIHdyaXRlX2J5dGVfZGF0YSBjb21tYW5kCisgIEkyQ19GVU5DX1NNQlVTX1JFQURfV09SRF9EQVRBICAgSGFuZGxlcyB0aGUgU01CdXMgcmVhZF93b3JkX2RhdGEgY29tbWFuZAorICBJMkNfRlVOQ19TTUJVU19XUklURV9XT1JEX0RBVEEgIEhhbmRsZXMgdGhlIFNNQnVzIHdyaXRlX2J5dGVfZGF0YSBjb21tYW5kCisgIEkyQ19GVU5DX1NNQlVTX1BST0NfQ0FMTCAgICAgICAgSGFuZGxlcyB0aGUgU01CdXMgcHJvY2Vzc19jYWxsIGNvbW1hbmQKKyAgSTJDX0ZVTkNfU01CVVNfUkVBRF9CTE9DS19EQVRBICBIYW5kbGVzIHRoZSBTTUJ1cyByZWFkX2Jsb2NrX2RhdGEgY29tbWFuZAorICBJMkNfRlVOQ19TTUJVU19XUklURV9CTE9DS19EQVRBIEhhbmRsZXMgdGhlIFNNQnVzIHdyaXRlX2Jsb2NrX2RhdGEgY29tbWFuZAorICBJMkNfRlVOQ19TTUJVU19SRUFEX0kyQ19CTE9DSyAgIEhhbmRsZXMgdGhlIFNNQnVzIHJlYWRfaTJjX2Jsb2NrX2RhdGEgY29tbWFuZAorICBJMkNfRlVOQ19TTUJVU19XUklURV9JMkNfQkxPQ0sgIEhhbmRsZXMgdGhlIFNNQnVzIHdyaXRlX2kyY19ibG9ja19kYXRhIGNvbW1hbmQKKworQSBmZXcgY29tYmluYXRpb25zIG9mIHRoZSBhYm92ZSBmbGFncyBhcmUgYWxzbyBkZWZpbmVkIGZvciB5b3VyIGNvbnZlbmllbmNlOgorCisgIEkyQ19GVU5DX1NNQlVTX0JZVEUgICAgICAgICAgICAgSGFuZGxlcyB0aGUgU01CdXMgcmVhZF9ieXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHdyaXRlX2J5dGUgY29tbWFuZHMKKyAgSTJDX0ZVTkNfU01CVVNfQllURV9EQVRBICAgICAgICBIYW5kbGVzIHRoZSBTTUJ1cyByZWFkX2J5dGVfZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB3cml0ZV9ieXRlX2RhdGEgY29tbWFuZHMKKyAgSTJDX0ZVTkNfU01CVVNfV09SRF9EQVRBICAgICAgICBIYW5kbGVzIHRoZSBTTUJ1cyByZWFkX3dvcmRfZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB3cml0ZV93b3JkX2RhdGEgY29tbWFuZHMKKyAgSTJDX0ZVTkNfU01CVVNfQkxPQ0tfREFUQSAgICAgICBIYW5kbGVzIHRoZSBTTUJ1cyByZWFkX2Jsb2NrX2RhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgd3JpdGVfYmxvY2tfZGF0YSBjb21tYW5kcworICBJMkNfRlVOQ19TTUJVU19JMkNfQkxPQ0sgICAgICAgIEhhbmRsZXMgdGhlIFNNQnVzIHJlYWRfaTJjX2Jsb2NrX2RhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgd3JpdGVfaTJjX2Jsb2NrX2RhdGEgY29tbWFuZHMKKyAgSTJDX0ZVTkNfU01CVVNfRU1VTCAgICAgICAgICAgICBIYW5kbGVzIGFsbCBTTUJ1cyBjb21tYW5kcyB0aGF0IGNhbiBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtdWxhdGVkIGJ5IGEgcmVhbCBJMkMgYWRhcHRlciAodXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdHJhbnNwYXJlbnQgZW11bGF0aW9uIGxheWVyKQorCitJbiBrZXJuZWwgdmVyc2lvbnMgcHJpb3IgdG8gMy41IEkyQ19GVU5DX05PU1RBUlQgd2FzIGltcGxlbWVudGVkIGFzCitwYXJ0IG9mIEkyQ19GVU5DX1BST1RPQ09MX01BTkdMSU5HLgorCisKK0FEQVBURVIgSU1QTEVNRU5UQVRJT04KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hlbiB5b3Ugd3JpdGUgYSBuZXcgYWRhcHRlciBkcml2ZXIsIHlvdSB3aWxsIGhhdmUgdG8gaW1wbGVtZW50IGEKK2Z1bmN0aW9uIGNhbGxiYWNrIGBmdW5jdGlvbmFsaXR5Jy4gVHlwaWNhbCBpbXBsZW1lbnRhdGlvbnMgYXJlIGdpdmVuCitiZWxvdy4KKworQSB0eXBpY2FsIFNNQnVzLW9ubHkgYWRhcHRlciB3b3VsZCBsaXN0IGFsbCB0aGUgU01CdXMgdHJhbnNhY3Rpb25zIGl0CitzdXBwb3J0cy4gVGhpcyBleGFtcGxlIGNvbWVzIGZyb20gdGhlIGkyYy1waWl4NCBkcml2ZXI6CisKKyAgc3RhdGljIHUzMiBwaWl4NF9mdW5jKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKKyAgeworCXJldHVybiBJMkNfRlVOQ19TTUJVU19RVUlDSyB8IEkyQ19GVU5DX1NNQlVTX0JZVEUgfAorCSAgICAgICBJMkNfRlVOQ19TTUJVU19CWVRFX0RBVEEgfCBJMkNfRlVOQ19TTUJVU19XT1JEX0RBVEEgfAorCSAgICAgICBJMkNfRlVOQ19TTUJVU19CTE9DS19EQVRBOworICB9CisKK0EgdHlwaWNhbCBmdWxsLUkyQyBhZGFwdGVyIHdvdWxkIHVzZSB0aGUgZm9sbG93aW5nIChmcm9tIHRoZSBpMmMtcHhhCitkcml2ZXIpOgorCisgIHN0YXRpYyB1MzIgaTJjX3B4YV9mdW5jdGlvbmFsaXR5KHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcCkKKyAgeworCXJldHVybiBJMkNfRlVOQ19JMkMgfCBJMkNfRlVOQ19TTUJVU19FTVVMOworICB9CisKK0kyQ19GVU5DX1NNQlVTX0VNVUwgaW5jbHVkZXMgYWxsIHRoZSBTTUJ1cyB0cmFuc2FjdGlvbnMgKHdpdGggdGhlCithZGRpdGlvbiBvZiBJMkMgYmxvY2sgdHJhbnNhY3Rpb25zKSB3aGljaCBpMmMtY29yZSBjYW4gZW11bGF0ZSB1c2luZworSTJDX0ZVTkNfSTJDIHdpdGhvdXQgYW55IGhlbHAgZnJvbSB0aGUgYWRhcHRlciBkcml2ZXIuIFRoZSBpZGVhIGlzCit0byBsZXQgdGhlIGNsaWVudCBkcml2ZXJzIGNoZWNrIGZvciB0aGUgc3VwcG9ydCBvZiBTTUJ1cyBmdW5jdGlvbnMKK3dpdGhvdXQgaGF2aW5nIHRvIGNhcmUgd2hldGhlciB0aGUgc2FpZCBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIGluCitoYXJkd2FyZSBieSB0aGUgYWRhcHRlciwgb3IgZW11bGF0ZWQgaW4gc29mdHdhcmUgYnkgaTJjLWNvcmUgb24gdG9wCitvZiBhbiBJMkMgYWRhcHRlci4KKworCitDTElFTlQgQ0hFQ0tJTkcKKy0tLS0tLS0tLS0tLS0tLQorCitCZWZvcmUgYSBjbGllbnQgdHJpZXMgdG8gYXR0YWNoIHRvIGFuIGFkYXB0ZXIsIG9yIGV2ZW4gZG8gdGVzdHMgdG8gY2hlY2sKK3doZXRoZXIgb25lIG9mIHRoZSBkZXZpY2VzIGl0IHN1cHBvcnRzIGlzIHByZXNlbnQgb24gYW4gYWRhcHRlciwgaXQgc2hvdWxkCitjaGVjayB3aGV0aGVyIHRoZSBuZWVkZWQgZnVuY3Rpb25hbGl0eSBpcyBwcmVzZW50LiBUaGUgdHlwaWNhbCB3YXkgdG8gZG8KK3RoaXMgaXMgKGZyb20gdGhlIGxtNzUgZHJpdmVyKToKKworICBzdGF0aWMgaW50IGxtNzVfZGV0ZWN0KC4uLikKKyAgeworCSguLi4pCisJaWYgKCFpMmNfY2hlY2tfZnVuY3Rpb25hbGl0eShhZGFwdGVyLCBJMkNfRlVOQ19TTUJVU19CWVRFX0RBVEEgfAorCQkJCSAgICAgSTJDX0ZVTkNfU01CVVNfV09SRF9EQVRBKSkKKwkJZ290byBleGl0OworCSguLi4pCisgIH0KKworSGVyZSwgdGhlIGxtNzUgZHJpdmVyIGNoZWNrcyBpZiB0aGUgYWRhcHRlciBjYW4gZG8gYm90aCBTTUJ1cyBieXRlIGRhdGEKK2FuZCBTTUJ1cyB3b3JkIGRhdGEgdHJhbnNhY3Rpb25zLiBJZiBub3QsIHRoZW4gdGhlIGRyaXZlciB3b24ndCB3b3JrIG9uCit0aGlzIGFkYXB0ZXIgYW5kIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gZ29pbmcgb24uIElmIHRoZSBjaGVjayBhYm92ZSBpcworc3VjY2Vzc2Z1bCwgdGhlbiB0aGUgZHJpdmVyIGtub3dzIHRoYXQgaXQgY2FuIGNhbGwgdGhlIGZvbGxvd2luZworZnVuY3Rpb25zOiBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoKSwgaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YSgpLAoraTJjX3NtYnVzX3JlYWRfd29yZF9kYXRhKCkgYW5kIGkyY19zbWJ1c193cml0ZV93b3JkX2RhdGEoKS4gQXMgYSBydWxlIG9mCit0aHVtYiwgdGhlIGZ1bmN0aW9uYWxpdHkgY29uc3RhbnRzIHlvdSB0ZXN0IGZvciB3aXRoCitpMmNfY2hlY2tfZnVuY3Rpb25hbGl0eSgpIHNob3VsZCBtYXRjaCBleGFjdGx5IHRoZSBpMmNfc21idXNfKiBmdW5jdGlvbnMKK3doaWNoIHlvdSBkcml2ZXIgaXMgY2FsbGluZy4KKworTm90ZSB0aGF0IHRoZSBjaGVjayBhYm92ZSBkb2Vzbid0IHRlbGwgd2hldGhlciB0aGUgZnVuY3Rpb25hbGl0aWVzIGFyZQoraW1wbGVtZW50ZWQgaW4gaGFyZHdhcmUgYnkgdGhlIHVuZGVybHlpbmcgYWRhcHRlciBvciBlbXVsYXRlZCBpbgorc29mdHdhcmUgYnkgaTJjLWNvcmUuIENsaWVudCBkcml2ZXJzIGRvbid0IGhhdmUgdG8gY2FyZSBhYm91dCB0aGlzLCBhcworaTJjLWNvcmUgd2lsbCB0cmFuc3BhcmVudGx5IGltcGxlbWVudCBTTUJ1cyB0cmFuc2FjdGlvbnMgb24gdG9wIG9mIEkyQworYWRhcHRlcnMuCisKKworQ0hFQ0tJTkcgVEhST1VHSCAvREVWCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgeW91IHRyeSB0byBhY2Nlc3MgYW4gYWRhcHRlciBmcm9tIGEgdXNlcnNwYWNlIHByb2dyYW0sIHlvdSB3aWxsIGhhdmUKK3RvIHVzZSB0aGUgL2RldiBpbnRlcmZhY2UuIFlvdSB3aWxsIHN0aWxsIGhhdmUgdG8gY2hlY2sgd2hldGhlciB0aGUKK2Z1bmN0aW9uYWxpdHkgeW91IG5lZWQgaXMgc3VwcG9ydGVkLCBvZiBjb3Vyc2UuIFRoaXMgaXMgZG9uZSB1c2luZwordGhlIEkyQ19GVU5DUyBpb2N0bC4gQW4gZXhhbXBsZSwgYWRhcHRlZCBmcm9tIHRoZSBpMmNkZXRlY3QgcHJvZ3JhbSwgaXMKK2JlbG93OgorCisgIGludCBmaWxlOworICBpZiAoZmlsZSA9IG9wZW4oIi9kZXYvaTJjLTAiLCBPX1JEV1IpIDwgMCkgeworCS8qIFNvbWUga2luZCBvZiBlcnJvciBoYW5kbGluZyAqLworCWV4aXQoMSk7CisgIH0KKyAgaWYgKGlvY3RsKGZpbGUsIEkyQ19GVU5DUywgJmZ1bmNzKSA8IDApIHsKKwkvKiBTb21lIGtpbmQgb2YgZXJyb3IgaGFuZGxpbmcgKi8KKwlleGl0KDEpOworICB9CisgIGlmICghKGZ1bmNzICYgSTJDX0ZVTkNfU01CVVNfUVVJQ0spKSB7CisJLyogT29wcywgdGhlIG5lZWRlZCBmdW5jdGlvbmFsaXR5IChTTUJ1cyB3cml0ZV9xdWljayBmdW5jdGlvbikgaXMKKyAgICAgICAgICAgbm90IGF2YWlsYWJsZSEgKi8KKwlleGl0KDEpOworICB9CisgIC8qIE5vdyBpdCBpcyBzYWZlIHRvIHVzZSB0aGUgU01CdXMgd3JpdGVfcXVpY2sgY29tbWFuZCAqLwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pMmMvaTJjLXByb3RvY29sIGIvRG9jdW1lbnRhdGlvbi9pMmMvaTJjLXByb3RvY29sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNmQ2Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2kyYy9pMmMtcHJvdG9jb2wKQEAgLTAsMCArMSw4OCBAQAorVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIGkyYyBwcm90b2NvbC4gT3Igd2lsbCwgd2hlbiBpdCBpcyBmaW5pc2hlZCA6LSkKKworS2V5IHRvIHN5bWJvbHMKKz09PT09PT09PT09PT09CisKK1MgICAgICgxIGJpdCkgOiBTdGFydCBiaXQKK1AgICAgICgxIGJpdCkgOiBTdG9wIGJpdAorUmQvV3IgKDEgYml0KSA6IFJlYWQvV3JpdGUgYml0LiBSZCBlcXVhbHMgMSwgV3IgZXF1YWxzIDAuCitBLCBOQSAoMSBiaXQpIDogQWNjZXB0IGFuZCByZXZlcnNlIGFjY2VwdCBiaXQuCitBZGRyICAoNyBiaXRzKTogSTJDIDcgYml0IGFkZHJlc3MuIE5vdGUgdGhhdCB0aGlzIGNhbiBiZSBleHBhbmRlZCBhcyB1c3VhbCB0bworICAgICAgICAgICAgICAgIGdldCBhIDEwIGJpdCBJMkMgYWRkcmVzcy4KK0NvbW0gICg4IGJpdHMpOiBDb21tYW5kIGJ5dGUsIGEgZGF0YSBieXRlIHdoaWNoIG9mdGVuIHNlbGVjdHMgYSByZWdpc3RlciBvbgorICAgICAgICAgICAgICAgIHRoZSBkZXZpY2UuCitEYXRhICAoOCBiaXRzKTogQSBwbGFpbiBkYXRhIGJ5dGUuIFNvbWV0aW1lcywgSSB3cml0ZSBEYXRhTG93LCBEYXRhSGlnaAorICAgICAgICAgICAgICAgIGZvciAxNiBiaXQgZGF0YS4KK0NvdW50ICg4IGJpdHMpOiBBIGRhdGEgYnl0ZSBjb250YWluaW5nIHRoZSBsZW5ndGggb2YgYSBibG9jayBvcGVyYXRpb24uCisKK1suLl06IERhdGEgc2VudCBieSBJMkMgZGV2aWNlLCBhcyBvcHBvc2VkIHRvIGRhdGEgc2VudCBieSB0aGUgaG9zdCBhZGFwdGVyLgorCisKK1NpbXBsZSBzZW5kIHRyYW5zYWN0aW9uCis9PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgY29ycmVzcG9uZHMgdG8gaTJjX21hc3Rlcl9zZW5kLgorCisgIFMgQWRkciBXciBbQV0gRGF0YSBbQV0gRGF0YSBbQV0gLi4uIFtBXSBEYXRhIFtBXSBQCisKKworU2ltcGxlIHJlY2VpdmUgdHJhbnNhY3Rpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGNvcnJlc3BvbmRzIHRvIGkyY19tYXN0ZXJfcmVjdgorCisgIFMgQWRkciBSZCBbQV0gW0RhdGFdIEEgW0RhdGFdIEEgLi4uIEEgW0RhdGFdIE5BIFAKKworCitDb21iaW5lZCB0cmFuc2FjdGlvbnMKKz09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgY29ycmVzcG9uZHMgdG8gaTJjX3RyYW5zZmVyCisKK1RoZXkgYXJlIGp1c3QgbGlrZSB0aGUgYWJvdmUgdHJhbnNhY3Rpb25zLCBidXQgaW5zdGVhZCBvZiBhIHN0b3AgYml0IFAKK2Egc3RhcnQgYml0IFMgaXMgc2VudCBhbmQgdGhlIHRyYW5zYWN0aW9uIGNvbnRpbnVlcy4gQW4gZXhhbXBsZSBvZgorYSBieXRlIHJlYWQsIGZvbGxvd2VkIGJ5IGEgYnl0ZSB3cml0ZToKKworICBTIEFkZHIgUmQgW0FdIFtEYXRhXSBOQSBTIEFkZHIgV3IgW0FdIERhdGEgW0FdIFAKKworCitNb2RpZmllZCB0cmFuc2FjdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZm9sbG93aW5nIG1vZGlmaWNhdGlvbnMgdG8gdGhlIEkyQyBwcm90b2NvbCBjYW4gYWxzbyBiZSBnZW5lcmF0ZWQgYnkKK3NldHRpbmcgdGhlc2UgZmxhZ3MgZm9yIGkyYyBtZXNzYWdlcy4gV2l0aCB0aGUgZXhjZXB0aW9uIG9mIEkyQ19NX05PU1RBUlQsIHRoZXkKK2FyZSB1c3VhbGx5IG9ubHkgbmVlZGVkIHRvIHdvcmsgYXJvdW5kIGRldmljZSBpc3N1ZXM6CisKK0kyQ19NX0lHTk9SRV9OQUs6CisgICAgTm9ybWFsbHkgbWVzc2FnZSBpcyBpbnRlcnJ1cHRlZCBpbW1lZGlhdGVseSBpZiB0aGVyZSBpcyBbTkFdIGZyb20gdGhlCisgICAgY2xpZW50LiBTZXR0aW5nIHRoaXMgZmxhZyB0cmVhdHMgYW55IFtOQV0gYXMgW0FdLCBhbmQgYWxsIG9mCisgICAgbWVzc2FnZSBpcyBzZW50LgorICAgIFRoZXNlIG1lc3NhZ2VzIG1heSBzdGlsbCBmYWlsIHRvIFNDTCBsby0+aGkgdGltZW91dC4KKworSTJDX01fTk9fUkRfQUNLOgorICAgIEluIGEgcmVhZCBtZXNzYWdlLCBtYXN0ZXIgQS9OQSBiaXQgaXMgc2tpcHBlZC4KKworSTJDX01fTk9TVEFSVDoKKyAgICBJbiBhIGNvbWJpbmVkIHRyYW5zYWN0aW9uLCBubyAnUyBBZGRyIFdyL1JkIFtBXScgaXMgZ2VuZXJhdGVkIGF0IHNvbWUKKyAgICBwb2ludC4gRm9yIGV4YW1wbGUsIHNldHRpbmcgSTJDX01fTk9TVEFSVCBvbiB0aGUgc2Vjb25kIHBhcnRpYWwgbWVzc2FnZQorICAgIGdlbmVyYXRlcyBzb21ldGhpbmcgbGlrZToKKyAgICAgIFMgQWRkciBSZCBbQV0gW0RhdGFdIE5BIERhdGEgW0FdIFAKKyAgICBJZiB5b3Ugc2V0IHRoZSBJMkNfTV9OT1NUQVJUIHZhcmlhYmxlIGZvciB0aGUgZmlyc3QgcGFydGlhbCBtZXNzYWdlLAorICAgIHdlIGRvIG5vdCBnZW5lcmF0ZSBBZGRyLCBidXQgd2UgZG8gZ2VuZXJhdGUgdGhlIHN0YXJ0Yml0IFMuIFRoaXMgd2lsbAorICAgIHByb2JhYmx5IGNvbmZ1c2UgYWxsIG90aGVyIGNsaWVudHMgb24geW91ciBidXMsIHNvIGRvbid0IHRyeSB0aGlzLgorCisgICAgVGhpcyBpcyBvZnRlbiB1c2VkIHRvIGdhdGhlciB0cmFuc21pdHMgZnJvbSBtdWx0aXBsZSBkYXRhIGJ1ZmZlcnMgaW4KKyAgICBzeXN0ZW0gbWVtb3J5IGludG8gc29tZXRoaW5nIHRoYXQgYXBwZWFycyBhcyBhIHNpbmdsZSB0cmFuc2ZlciB0byB0aGUKKyAgICBJMkMgZGV2aWNlIGJ1dCBtYXkgYWxzbyBiZSB1c2VkIGJldHdlZW4gZGlyZWN0aW9uIGNoYW5nZXMgYnkgc29tZQorICAgIHJhcmUgZGV2aWNlcy4KKworSTJDX01fUkVWX0RJUl9BRERSOgorICAgIFRoaXMgdG9nZ2xlcyB0aGUgUmQvV3IgZmxhZy4gVGhhdCBpcywgaWYgeW91IHdhbnQgdG8gZG8gYSB3cml0ZSwgYnV0CisgICAgbmVlZCB0byBlbWl0IGFuIFJkIGluc3RlYWQgb2YgYSBXciwgb3IgdmljZSB2ZXJzYSwgeW91IHNldCB0aGlzCisgICAgZmxhZy4gRm9yIGV4YW1wbGU6CisgICAgICBTIEFkZHIgUmQgW0FdIERhdGEgW0FdIERhdGEgW0FdIC4uLiBbQV0gRGF0YSBbQV0gUAorCitJMkNfTV9TVE9QOgorICAgIEZvcmNlIGEgc3RvcCBjb25kaXRpb24gKFApIGFmdGVyIHRoZSBtZXNzYWdlLiBTb21lIEkyQyByZWxhdGVkIHByb3RvY29scworICAgIGxpa2UgU0NDQiByZXF1aXJlIHRoYXQuIE5vcm1hbGx5LCB5b3UgcmVhbGx5IGRvbid0IHdhbnQgdG8gZ2V0IGludGVycnVwdGVkCisgICAgYmV0d2VlbiB0aGUgbWVzc2FnZXMgb2Ygb25lIHRyYW5zZmVyLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pMmMvaTJjLXN0dWIgYi9Eb2N1bWVudGF0aW9uL2kyYy9pMmMtc3R1YgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTY5MjRmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pMmMvaTJjLXN0dWIKQEAgLTAsMCArMSw2NCBAQAorTU9EVUxFOiBpMmMtc3R1YgorCitERVNDUklQVElPTjoKKworVGhpcyBtb2R1bGUgaXMgYSB2ZXJ5IHNpbXBsZSBmYWtlIEkyQy9TTUJ1cyBkcml2ZXIuICBJdCBpbXBsZW1lbnRzIHNpeAordHlwZXMgb2YgU01CdXMgY29tbWFuZHM6IHdyaXRlIHF1aWNrLCAoci93KSBieXRlLCAoci93KSBieXRlIGRhdGEsIChyL3cpCit3b3JkIGRhdGEsIChyL3cpIEkyQyBibG9jayBkYXRhLCBhbmQgKHIvdykgU01CdXMgYmxvY2sgZGF0YS4KKworWW91IG5lZWQgdG8gcHJvdmlkZSBjaGlwIGFkZHJlc3NlcyBhcyBhIG1vZHVsZSBwYXJhbWV0ZXIgd2hlbiBsb2FkaW5nIHRoaXMKK2RyaXZlciwgd2hpY2ggd2lsbCB0aGVuIG9ubHkgcmVhY3QgdG8gU01CdXMgY29tbWFuZHMgdG8gdGhlc2UgYWRkcmVzc2VzLgorCitObyBoYXJkd2FyZSBpcyBuZWVkZWQgbm9yIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG1vZHVsZS4gIEl0IHdpbGwgYWNjZXB0IHdyaXRlCitxdWljayBjb21tYW5kcyB0byB0aGUgc3BlY2lmaWVkIGFkZHJlc3NlczsgaXQgd2lsbCByZXNwb25kIHRvIHRoZSBvdGhlcgorY29tbWFuZHMgKGFsc28gdG8gdGhlIHNwZWNpZmllZCBhZGRyZXNzZXMpIGJ5IHJlYWRpbmcgZnJvbSBvciB3cml0aW5nIHRvCithcnJheXMgaW4gbWVtb3J5LiAgSXQgd2lsbCBhbHNvIHNwYW0gdGhlIGtlcm5lbCBsb2dzIGZvciBldmVyeSBjb21tYW5kIGl0CitoYW5kbGVzLgorCitBIHBvaW50ZXIgcmVnaXN0ZXIgd2l0aCBhdXRvLWluY3JlbWVudCBpcyBpbXBsZW1lbnRlZCBmb3IgYWxsIGJ5dGUKK29wZXJhdGlvbnMuICBUaGlzIGFsbG93cyBmb3IgY29udGludW91cyBieXRlIHJlYWRzIGxpa2UgdGhvc2Ugc3VwcG9ydGVkIGJ5CitFRVBST01zLCBhbW9uZyBvdGhlcnMuCisKK1NNQnVzIGJsb2NrIGNvbW1hbmQgc3VwcG9ydCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LCBhbmQgbXVzdCBiZSBlbmFibGVkCitleHBsaWNpdGx5IGJ5IHNldHRpbmcgdGhlIHJlc3BlY3RpdmUgYml0cyAoMHgwMzAwMDAwMCkgaW4gdGhlIGZ1bmN0aW9uYWxpdHkKK21vZHVsZSBwYXJhbWV0ZXIuCisKK1NNQnVzIGJsb2NrIGNvbW1hbmRzIG11c3QgYmUgd3JpdHRlbiB0byBjb25maWd1cmUgYW4gU01CdXMgY29tbWFuZCBmb3IKK1NNQnVzIGJsb2NrIG9wZXJhdGlvbnMuIFdyaXRlcyBjYW4gYmUgcGFydGlhbC4gQmxvY2sgcmVhZCBjb21tYW5kcyBhbHdheXMKK3JldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHNlbGVjdGVkIHdpdGggdGhlIGxhcmdlc3Qgd3JpdGUgc28gZmFyLgorCitUaGUgdHlwaWNhbCB1c2UtY2FzZSBpcyBsaWtlIHRoaXM6CisJMS4gbG9hZCB0aGlzIG1vZHVsZQorCTIuIHVzZSBpMmNzZXQgKGZyb20gdGhlIGkyYy10b29scyBwcm9qZWN0KSB0byBwcmUtbG9hZCBzb21lIGRhdGEKKwkzLiBsb2FkIHRoZSB0YXJnZXQgY2hpcCBkcml2ZXIgbW9kdWxlCisJNC4gb2JzZXJ2ZSBpdHMgYmVoYXZpb3IgaW4gdGhlIGtlcm5lbCBsb2cKKworVGhlcmUncyBhIHNjcmlwdCBuYW1lZCBpMmMtc3R1Yi1mcm9tLWR1bXAgaW4gdGhlIGkyYy10b29scyBwYWNrYWdlIHdoaWNoCitjYW4gbG9hZCByZWdpc3RlciB2YWx1ZXMgYXV0b21hdGljYWxseSBmcm9tIGEgY2hpcCBkdW1wLgorCitQQVJBTUVURVJTOgorCitpbnQgY2hpcF9hZGRyWzEwXToKKwlUaGUgU01CdXMgYWRkcmVzc2VzIHRvIGVtdWxhdGUgY2hpcHMgYXQuCisKK3Vuc2lnbmVkIGxvbmcgZnVuY3Rpb25hbGl0eToKKwlGdW5jdGlvbmFsaXR5IG92ZXJyaWRlLCB0byBkaXNhYmxlIHNvbWUgY29tbWFuZHMuIFNlZSBJMkNfRlVOQ18qCisJY29uc3RhbnRzIGluIDxsaW51eC9pMmMuaD4gZm9yIHRoZSBzdWl0YWJsZSB2YWx1ZXMuIEZvciBleGFtcGxlLAorCXZhbHVlIDB4MWYwMDAwIHdvdWxkIG9ubHkgZW5hYmxlIHRoZSBxdWljaywgYnl0ZSBhbmQgYnl0ZSBkYXRhCisJY29tbWFuZHMuCisKK3U4IGJhbmtfcmVnWzEwXQordTggYmFua19tYXNrWzEwXQordTggYmFua19zdGFydFsxMF0KK3U4IGJhbmtfZW5kWzEwXToKKwlPcHRpb25hbCBiYW5rIHNldHRpbmdzLiBUaGV5IHRlbGwgd2hpY2ggYml0cyBpbiB3aGljaCByZWdpc3RlcgorCXNlbGVjdCB0aGUgYWN0aXZlIGJhbmssIGFzIHdlbGwgYXMgdGhlIHJhbmdlIG9mIGJhbmtlZCByZWdpc3RlcnMuCisKK0NBVkVBVFM6CisKK0lmIHlvdXIgdGFyZ2V0IGRyaXZlciBwb2xscyBzb21lIGJ5dGUgb3Igd29yZCB3YWl0aW5nIGZvciBpdCB0byBjaGFuZ2UsIHRoZQorc3R1YiBjb3VsZCBsb2NrIGl0IHVwLiAgVXNlIGkyY3NldCB0byB1bmxvY2sgaXQuCisKK0lmIHlvdSBzcGFtIGl0IGhhcmQgZW5vdWdoLCBwcmludGsgY2FuIGJlIGxvc3N5LiAgVGhpcyBtb2R1bGUgcmVhbGx5IHdhbnRzCitzb21ldGhpbmcgbGlrZSByZWxheWZzLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2kyYy9pbnN0YW50aWF0aW5nLWRldmljZXMgYi9Eb2N1bWVudGF0aW9uL2kyYy9pbnN0YW50aWF0aW5nLWRldmljZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ4NWFjMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaTJjL2luc3RhbnRpYXRpbmctZGV2aWNlcwpAQCAtMCwwICsxLDI0OCBAQAorSG93IHRvIGluc3RhbnRpYXRlIEkyQyBkZXZpY2VzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVW5saWtlIFBDSSBvciBVU0IgZGV2aWNlcywgSTJDIGRldmljZXMgYXJlIG5vdCBlbnVtZXJhdGVkIGF0IHRoZSBoYXJkd2FyZQorbGV2ZWwuIEluc3RlYWQsIHRoZSBzb2Z0d2FyZSBtdXN0IGtub3cgd2hpY2ggZGV2aWNlcyBhcmUgY29ubmVjdGVkIG9uIGVhY2gKK0kyQyBidXMgc2VnbWVudCwgYW5kIHdoYXQgYWRkcmVzcyB0aGVzZSBkZXZpY2VzIGFyZSB1c2luZy4gRm9yIHRoaXMKK3JlYXNvbiwgdGhlIGtlcm5lbCBjb2RlIG11c3QgaW5zdGFudGlhdGUgSTJDIGRldmljZXMgZXhwbGljaXRseS4gVGhlcmUgYXJlCitzZXZlcmFsIHdheXMgdG8gYWNoaWV2ZSB0aGlzLCBkZXBlbmRpbmcgb24gdGhlIGNvbnRleHQgYW5kIHJlcXVpcmVtZW50cy4KKworCitNZXRob2QgMWE6IERlY2xhcmUgdGhlIEkyQyBkZXZpY2VzIGJ5IGJ1cyBudW1iZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIG1ldGhvZCBpcyBhcHByb3ByaWF0ZSB3aGVuIHRoZSBJMkMgYnVzIGlzIGEgc3lzdGVtIGJ1cyBhcyBpcyB0aGUgY2FzZQorZm9yIG1hbnkgZW1iZWRkZWQgc3lzdGVtcy4gT24gc3VjaCBzeXN0ZW1zLCBlYWNoIEkyQyBidXMgaGFzIGEgbnVtYmVyCit3aGljaCBpcyBrbm93biBpbiBhZHZhbmNlLiBJdCBpcyB0aHVzIHBvc3NpYmxlIHRvIHByZS1kZWNsYXJlIHRoZSBJMkMKK2RldmljZXMgd2hpY2ggbGl2ZSBvbiB0aGlzIGJ1cy4gVGhpcyBpcyBkb25lIHdpdGggYW4gYXJyYXkgb2Ygc3RydWN0CitpMmNfYm9hcmRfaW5mbyB3aGljaCBpcyByZWdpc3RlcmVkIGJ5IGNhbGxpbmcgaTJjX3JlZ2lzdGVyX2JvYXJkX2luZm8oKS4KKworRXhhbXBsZSAoZnJvbSBvbWFwMiBoNCk6CisKK3N0YXRpYyBzdHJ1Y3QgaTJjX2JvYXJkX2luZm8gaDRfaTJjX2JvYXJkX2luZm9bXSBfX2luaXRkYXRhID0geworCXsKKwkJSTJDX0JPQVJEX0lORk8oImlzcDEzMDFfb21hcCIsIDB4MmQpLAorCQkuaXJxCQk9IE9NQVBfR1BJT19JUlEoMTI1KSwKKwl9LAorCXsJLyogRUVQUk9NIG9uIG1haW5ib2FyZCAqLworCQlJMkNfQk9BUkRfSU5GTygiMjRjMDEiLCAweDUyKSwKKwkJLnBsYXRmb3JtX2RhdGEJPSAmbTI0YzAxLAorCX0sCisJewkvKiBFRVBST00gb24gY3B1IGNhcmQgKi8KKwkJSTJDX0JPQVJEX0lORk8oIjI0YzAxIiwgMHg1NyksCisJCS5wbGF0Zm9ybV9kYXRhCT0gJm0yNGMwMSwKKwl9LAorfTsKKworc3RhdGljIHZvaWQgX19pbml0IG9tYXBfaDRfaW5pdCh2b2lkKQoreworCSguLi4pCisJaTJjX3JlZ2lzdGVyX2JvYXJkX2luZm8oMSwgaDRfaTJjX2JvYXJkX2luZm8sCisJCQlBUlJBWV9TSVpFKGg0X2kyY19ib2FyZF9pbmZvKSk7CisJKC4uLikKK30KKworVGhlIGFib3ZlIGNvZGUgZGVjbGFyZXMgMyBkZXZpY2VzIG9uIEkyQyBidXMgMSwgaW5jbHVkaW5nIHRoZWlyIHJlc3BlY3RpdmUKK2FkZHJlc3NlcyBhbmQgY3VzdG9tIGRhdGEgbmVlZGVkIGJ5IHRoZWlyIGRyaXZlcnMuIFdoZW4gdGhlIEkyQyBidXMgaW4KK3F1ZXN0aW9uIGlzIHJlZ2lzdGVyZWQsIHRoZSBJMkMgZGV2aWNlcyB3aWxsIGJlIGluc3RhbnRpYXRlZCBhdXRvbWF0aWNhbGx5CitieSBpMmMtY29yZS4KKworVGhlIGRldmljZXMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHVuYm91bmQgYW5kIGRlc3Ryb3llZCB3aGVuIHRoZSBJMkMgYnVzCit0aGV5IHNpdCBvbiBnb2VzIGF3YXkgKGlmIGV2ZXIuKQorCisKK01ldGhvZCAxYjogRGVjbGFyZSB0aGUgSTJDIGRldmljZXMgdmlhIGRldmljZXRyZWUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBtZXRob2QgaGFzIHRoZSBzYW1lIGltcGxpY2F0aW9ucyBhcyBtZXRob2QgMWEuIFRoZSBkZWNsYXJhdGlvbiBvZiBJMkMKK2RldmljZXMgaXMgaGVyZSBkb25lIHZpYSBkZXZpY2V0cmVlIGFzIHN1Ym5vZGVzIG9mIHRoZSBtYXN0ZXIgY29udHJvbGxlci4KKworRXhhbXBsZToKKworCWkyYzE6IGkyY0A0MDBhMDAwMCB7CisJCS8qIC4uLiBtYXN0ZXIgcHJvcGVydGllcyBza2lwcGVkIC4uLiAqLworCQljbG9jay1mcmVxdWVuY3kgPSA8MTAwMDAwPjsKKworCQlmbGFzaEA1MCB7CisJCQljb21wYXRpYmxlID0gImF0bWVsLDI0YzI1NiI7CisJCQlyZWcgPSA8MHg1MD47CisJCX07CisKKwkJcGNhOTUzMjogZ3Bpb0A2MCB7CisJCQljb21wYXRpYmxlID0gIm54cCxwY2E5NTMyIjsKKwkJCWdwaW8tY29udHJvbGxlcjsKKwkJCSNncGlvLWNlbGxzID0gPDI+OworCQkJcmVnID0gPDB4NjA+OworCQl9OworCX07CisKK0hlcmUsIHR3byBkZXZpY2VzIGFyZSBhdHRhY2hlZCB0byB0aGUgYnVzIHVzaW5nIGEgc3BlZWQgb2YgMTAwa0h6LiBGb3IKK2FkZGl0aW9uYWwgcHJvcGVydGllcyB3aGljaCBtaWdodCBiZSBuZWVkZWQgdG8gc2V0IHVwIHRoZSBkZXZpY2UsIHBsZWFzZSByZWZlcgordG8gaXRzIGRldmljZXRyZWUgZG9jdW1lbnRhdGlvbiBpbiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvLgorCisKK01ldGhvZCAxYzogRGVjbGFyZSB0aGUgSTJDIGRldmljZXMgdmlhIEFDUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQUNQSSBjYW4gYWxzbyBkZXNjcmliZSBJMkMgZGV2aWNlcy4gVGhlcmUgaXMgc3BlY2lhbCBkb2N1bWVudGF0aW9uIGZvciB0aGlzCit3aGljaCBpcyBjdXJyZW50bHkgbG9jYXRlZCBhdCBEb2N1bWVudGF0aW9uL2FjcGkvZW51bWVyYXRpb24udHh0LgorCisKK01ldGhvZCAyOiBJbnN0YW50aWF0ZSB0aGUgZGV2aWNlcyBleHBsaWNpdGx5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIG1ldGhvZCBpcyBhcHByb3ByaWF0ZSB3aGVuIGEgbGFyZ2VyIGRldmljZSB1c2VzIGFuIEkyQyBidXMgZm9yCitpbnRlcm5hbCBjb21tdW5pY2F0aW9uLiBBIHR5cGljYWwgY2FzZSBpcyBUViBhZGFwdGVycy4gVGhlc2UgY2FuIGhhdmUgYQordHVuZXIsIGEgdmlkZW8gZGVjb2RlciwgYW4gYXVkaW8gZGVjb2RlciwgZXRjLiB1c3VhbGx5IGNvbm5lY3RlZCB0byB0aGUKK21haW4gY2hpcCBieSB0aGUgbWVhbnMgb2YgYW4gSTJDIGJ1cy4gWW91IHdvbid0IGtub3cgdGhlIG51bWJlciBvZiB0aGUgSTJDCitidXMgaW4gYWR2YW5jZSwgc28gdGhlIG1ldGhvZCAxIGRlc2NyaWJlZCBhYm92ZSBjYW4ndCBiZSB1c2VkLiBJbnN0ZWFkLAoreW91IGNhbiBpbnN0YW50aWF0ZSB5b3VyIEkyQyBkZXZpY2VzIGV4cGxpY2l0bHkuIFRoaXMgaXMgZG9uZSBieSBmaWxsaW5nCithIHN0cnVjdCBpMmNfYm9hcmRfaW5mbyBhbmQgY2FsbGluZyBpMmNfbmV3X2RldmljZSgpLgorCitFeGFtcGxlIChmcm9tIHRoZSBzZmU0MDAxIG5ldHdvcmsgZHJpdmVyKToKKworc3RhdGljIHN0cnVjdCBpMmNfYm9hcmRfaW5mbyBzZmU0MDAxX2h3bW9uX2luZm8gPSB7CisJSTJDX0JPQVJEX0lORk8oIm1heDY2NDciLCAweDRlKSwKK307CisKK2ludCBzZmU0MDAxX2luaXQoc3RydWN0IGVmeF9uaWMgKmVmeCkKK3sKKwkoLi4uKQorCWVmeC0+Ym9hcmRfaW5mby5od21vbl9jbGllbnQgPQorCQlpMmNfbmV3X2RldmljZSgmZWZ4LT5pMmNfYWRhcCwgJnNmZTQwMDFfaHdtb25faW5mbyk7CisKKwkoLi4uKQorfQorCitUaGUgYWJvdmUgY29kZSBpbnN0YW50aWF0ZXMgMSBJMkMgZGV2aWNlIG9uIHRoZSBJMkMgYnVzIHdoaWNoIGlzIG9uIHRoZQorbmV0d29yayBhZGFwdGVyIGluIHF1ZXN0aW9uLgorCitBIHZhcmlhbnQgb2YgdGhpcyBpcyB3aGVuIHlvdSBkb24ndCBrbm93IGZvciBzdXJlIGlmIGFuIEkyQyBkZXZpY2UgaXMKK3ByZXNlbnQgb3Igbm90IChmb3IgZXhhbXBsZSBmb3IgYW4gb3B0aW9uYWwgZmVhdHVyZSB3aGljaCBpcyBub3QgcHJlc2VudAorb24gY2hlYXAgdmFyaWFudHMgb2YgYSBib2FyZCBidXQgeW91IGhhdmUgbm8gd2F5IHRvIHRlbGwgdGhlbSBhcGFydCksIG9yCitpdCBtYXkgaGF2ZSBkaWZmZXJlbnQgYWRkcmVzc2VzIGZyb20gb25lIGJvYXJkIHRvIHRoZSBuZXh0IChtYW51ZmFjdHVyZXIKK2NoYW5naW5nIGl0cyBkZXNpZ24gd2l0aG91dCBub3RpY2UpLiBJbiB0aGlzIGNhc2UsIHlvdSBjYW4gY2FsbAoraTJjX25ld19wcm9iZWRfZGV2aWNlKCkgaW5zdGVhZCBvZiBpMmNfbmV3X2RldmljZSgpLgorCitFeGFtcGxlIChmcm9tIHRoZSBueHAgT0hDSSBkcml2ZXIpOgorCitzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgbm9ybWFsX2kyY1tdID0geyAweDJjLCAweDJkLCBJMkNfQ0xJRU5UX0VORCB9OworCitzdGF0aWMgaW50IHVzYl9oY2RfbnhwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJKC4uLikKKwlzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmkyY19hZGFwOworCXN0cnVjdCBpMmNfYm9hcmRfaW5mbyBpMmNfaW5mbzsKKworCSguLi4pCisJaTJjX2FkYXAgPSBpMmNfZ2V0X2FkYXB0ZXIoMik7CisJbWVtc2V0KCZpMmNfaW5mbywgMCwgc2l6ZW9mKHN0cnVjdCBpMmNfYm9hcmRfaW5mbykpOworCXN0cmxjcHkoaTJjX2luZm8udHlwZSwgImlzcDEzMDFfbnhwIiwgSTJDX05BTUVfU0laRSk7CisJaXNwMTMwMV9pMmNfY2xpZW50ID0gaTJjX25ld19wcm9iZWRfZGV2aWNlKGkyY19hZGFwLCAmaTJjX2luZm8sCisJCQkJCQkgICBub3JtYWxfaTJjLCBOVUxMKTsKKwlpMmNfcHV0X2FkYXB0ZXIoaTJjX2FkYXApOworCSguLi4pCit9CisKK1RoZSBhYm92ZSBjb2RlIGluc3RhbnRpYXRlcyB1cCB0byAxIEkyQyBkZXZpY2Ugb24gdGhlIEkyQyBidXMgd2hpY2ggaXMgb24KK3RoZSBPSENJIGFkYXB0ZXIgaW4gcXVlc3Rpb24uIEl0IGZpcnN0IHRyaWVzIGF0IGFkZHJlc3MgMHgyYywgaWYgbm90aGluZworaXMgZm91bmQgdGhlcmUgaXQgdHJpZXMgYWRkcmVzcyAweDJkLCBhbmQgaWYgc3RpbGwgbm90aGluZyBpcyBmb3VuZCwgaXQKK3NpbXBseSBnaXZlcyB1cC4KKworVGhlIGRyaXZlciB3aGljaCBpbnN0YW50aWF0ZWQgdGhlIEkyQyBkZXZpY2UgaXMgcmVzcG9uc2libGUgZm9yIGRlc3Ryb3lpbmcKK2l0IG9uIGNsZWFudXAuIFRoaXMgaXMgZG9uZSBieSBjYWxsaW5nIGkyY191bnJlZ2lzdGVyX2RldmljZSgpIG9uIHRoZQorcG9pbnRlciB0aGF0IHdhcyBlYXJsaWVyIHJldHVybmVkIGJ5IGkyY19uZXdfZGV2aWNlKCkgb3IKK2kyY19uZXdfcHJvYmVkX2RldmljZSgpLgorCisKK01ldGhvZCAzOiBQcm9iZSBhbiBJMkMgYnVzIGZvciBjZXJ0YWluIGRldmljZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU29tZXRpbWVzIHlvdSBkbyBub3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgYW4gSTJDIGRldmljZSwgbm90IGV2ZW4KK3RvIGNhbGwgaTJjX25ld19wcm9iZWRfZGV2aWNlKCkuIFRoZSB0eXBpY2FsIGNhc2UgaXMgaGFyZHdhcmUgbW9uaXRvcmluZworY2hpcHMgb24gUEMgbWFpbmJvYXJkcy4gVGhlcmUgYXJlIHNldmVyYWwgZG96ZW4gbW9kZWxzLCB3aGljaCBjYW4gbGl2ZQorYXQgMjUgZGlmZmVyZW50IGFkZHJlc3Nlcy4gR2l2ZW4gdGhlIGh1Z2UgbnVtYmVyIG9mIG1haW5ib2FyZHMgb3V0IHRoZXJlLAoraXQgaXMgbmV4dCB0byBpbXBvc3NpYmxlIHRvIGJ1aWxkIGFuIGV4aGF1c3RpdmUgbGlzdCBvZiB0aGUgaGFyZHdhcmUKK21vbml0b3JpbmcgY2hpcHMgYmVpbmcgdXNlZC4gRm9ydHVuYXRlbHksIG1vc3Qgb2YgdGhlc2UgY2hpcHMgaGF2ZQorbWFudWZhY3R1cmVyIGFuZCBkZXZpY2UgSUQgcmVnaXN0ZXJzLCBzbyB0aGV5IGNhbiBiZSBpZGVudGlmaWVkIGJ5Citwcm9iaW5nLgorCitJbiB0aGF0IGNhc2UsIEkyQyBkZXZpY2VzIGFyZSBuZWl0aGVyIGRlY2xhcmVkIG5vciBpbnN0YW50aWF0ZWQKK2V4cGxpY2l0bHkuIEluc3RlYWQsIGkyYy1jb3JlIHdpbGwgcHJvYmUgZm9yIHN1Y2ggZGV2aWNlcyBhcyBzb29uIGFzIHRoZWlyCitkcml2ZXJzIGFyZSBsb2FkZWQsIGFuZCBpZiBhbnkgaXMgZm91bmQsIGFuIEkyQyBkZXZpY2Ugd2lsbCBiZQoraW5zdGFudGlhdGVkIGF1dG9tYXRpY2FsbHkuIEluIG9yZGVyIHRvIHByZXZlbnQgYW55IG1pc2JlaGF2aW9yIG9mIHRoaXMKK21lY2hhbmlzbSwgdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnMgYXBwbHk6CisqIFRoZSBJMkMgZGV2aWNlIGRyaXZlciBtdXN0IGltcGxlbWVudCB0aGUgZGV0ZWN0KCkgbWV0aG9kLCB3aGljaAorICBpZGVudGlmaWVzIGEgc3VwcG9ydGVkIGRldmljZSBieSByZWFkaW5nIGZyb20gYXJiaXRyYXJ5IHJlZ2lzdGVycy4KKyogT25seSBidXNlcyB3aGljaCBhcmUgbGlrZWx5IHRvIGhhdmUgYSBzdXBwb3J0ZWQgZGV2aWNlIGFuZCBhZ3JlZSB0byBiZQorICBwcm9iZWQsIHdpbGwgYmUgcHJvYmVkLiBGb3IgZXhhbXBsZSB0aGlzIGF2b2lkcyBwcm9iaW5nIGZvciBoYXJkd2FyZQorICBtb25pdG9yaW5nIGNoaXBzIG9uIGEgVFYgYWRhcHRlci4KKworRXhhbXBsZToKK1NlZSBsbTkwX2RyaXZlciBhbmQgbG05MF9kZXRlY3QoKSBpbiBkcml2ZXJzL2h3bW9uL2xtOTAuYworCitJMkMgZGV2aWNlcyBpbnN0YW50aWF0ZWQgYXMgYSByZXN1bHQgb2Ygc3VjaCBhIHN1Y2Nlc3NmdWwgcHJvYmUgd2lsbCBiZQorZGVzdHJveWVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgZHJpdmVyIHdoaWNoIGRldGVjdGVkIHRoZW0gaXMgcmVtb3ZlZCwKK29yIHdoZW4gdGhlIHVuZGVybHlpbmcgSTJDIGJ1cyBpcyBpdHNlbGYgZGVzdHJveWVkLCB3aGljaGV2ZXIgaGFwcGVucworZmlyc3QuCisKK1Rob3NlIG9mIHlvdSBmYW1pbGlhciB3aXRoIHRoZSBpMmMgc3Vic3lzdGVtIG9mIDIuNCBrZXJuZWxzIGFuZCBlYXJseSAyLjYKK2tlcm5lbHMgd2lsbCBmaW5kIG91dCB0aGF0IHRoaXMgbWV0aG9kIDMgaXMgZXNzZW50aWFsbHkgc2ltaWxhciB0byB3aGF0Cit3YXMgZG9uZSB0aGVyZS4gVHdvIHNpZ25pZmljYW50IGRpZmZlcmVuY2VzIGFyZToKKyogUHJvYmluZyBpcyBvbmx5IG9uZSB3YXkgdG8gaW5zdGFudGlhdGUgSTJDIGRldmljZXMgbm93LCB3aGlsZSBpdCB3YXMgdGhlCisgIG9ubHkgd2F5IGJhY2sgdGhlbi4gV2hlcmUgcG9zc2libGUsIG1ldGhvZHMgMSBhbmQgMiBzaG91bGQgYmUgcHJlZmVycmVkLgorICBNZXRob2QgMyBzaG91bGQgb25seSBiZSB1c2VkIHdoZW4gdGhlcmUgaXMgbm8gb3RoZXIgd2F5LCBhcyBpdCBjYW4gaGF2ZQorICB1bmRlc2lyYWJsZSBzaWRlIGVmZmVjdHMuCisqIEkyQyBidXNlcyBtdXN0IG5vdyBleHBsaWNpdGx5IHNheSB3aGljaCBJMkMgZHJpdmVyIGNsYXNzZXMgY2FuIHByb2JlCisgIHRoZW0gKGJ5IHRoZSBtZWFucyBvZiB0aGUgY2xhc3MgYml0ZmllbGQpLCB3aGlsZSBhbGwgSTJDIGJ1c2VzIHdlcmUKKyAgcHJvYmVkIGJ5IGRlZmF1bHQgYmFjayB0aGVuLiBUaGUgZGVmYXVsdCBpcyBhbiBlbXB0eSBjbGFzcyB3aGljaCBtZWFucworICB0aGF0IG5vIHByb2JpbmcgaGFwcGVucy4gVGhlIHB1cnBvc2Ugb2YgdGhlIGNsYXNzIGJpdGZpZWxkIGlzIHRvIGxpbWl0CisgIHRoZSBhZm9yZW1lbnRpb25lZCB1bmRlc2lyYWJsZSBzaWRlIGVmZmVjdHMuCisKK09uY2UgYWdhaW4sIG1ldGhvZCAzIHNob3VsZCBiZSBhdm9pZGVkIHdoZXJldmVyIHBvc3NpYmxlLiBFeHBsaWNpdCBkZXZpY2UKK2luc3RhbnRpYXRpb24gKG1ldGhvZHMgMSBhbmQgMikgaXMgbXVjaCBwcmVmZXJyZWQgZm9yIGl0IGlzIHNhZmVyIGFuZAorZmFzdGVyLgorCisKK01ldGhvZCA0OiBJbnN0YW50aWF0ZSBmcm9tIHVzZXItc3BhY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW4gZ2VuZXJhbCwgdGhlIGtlcm5lbCBzaG91bGQga25vdyB3aGljaCBJMkMgZGV2aWNlcyBhcmUgY29ubmVjdGVkIGFuZAord2hhdCBhZGRyZXNzZXMgdGhleSBsaXZlIGF0LiBIb3dldmVyLCBpbiBjZXJ0YWluIGNhc2VzLCBpdCBkb2VzIG5vdCwgc28gYQorc3lzZnMgaW50ZXJmYWNlIHdhcyBhZGRlZCB0byBsZXQgdGhlIHVzZXIgcHJvdmlkZSB0aGUgaW5mb3JtYXRpb24uIFRoaXMKK2ludGVyZmFjZSBpcyBtYWRlIG9mIDIgYXR0cmlidXRlIGZpbGVzIHdoaWNoIGFyZSBjcmVhdGVkIGluIGV2ZXJ5IEkyQyBidXMKK2RpcmVjdG9yeTogbmV3X2RldmljZSBhbmQgZGVsZXRlX2RldmljZS4gQm90aCBmaWxlcyBhcmUgd3JpdGUgb25seSBhbmQgeW91CittdXN0IHdyaXRlIHRoZSByaWdodCBwYXJhbWV0ZXJzIHRvIHRoZW0gaW4gb3JkZXIgdG8gcHJvcGVybHkgaW5zdGFudGlhdGUsCityZXNwZWN0aXZlbHkgZGVsZXRlLCBhbiBJMkMgZGV2aWNlLgorCitGaWxlIG5ld19kZXZpY2UgdGFrZXMgMiBwYXJhbWV0ZXJzOiB0aGUgbmFtZSBvZiB0aGUgSTJDIGRldmljZSAoYSBzdHJpbmcpCithbmQgdGhlIGFkZHJlc3Mgb2YgdGhlIEkyQyBkZXZpY2UgKGEgbnVtYmVyLCB0eXBpY2FsbHkgZXhwcmVzc2VkIGluCitoZXhhZGVjaW1hbCBzdGFydGluZyB3aXRoIDB4LCBidXQgY2FuIGFsc28gYmUgZXhwcmVzc2VkIGluIGRlY2ltYWwuKQorCitGaWxlIGRlbGV0ZV9kZXZpY2UgdGFrZXMgYSBzaW5nbGUgcGFyYW1ldGVyOiB0aGUgYWRkcmVzcyBvZiB0aGUgSTJDCitkZXZpY2UuIEFzIG5vIHR3byBkZXZpY2VzIGNhbiBsaXZlIGF0IHRoZSBzYW1lIGFkZHJlc3Mgb24gYSBnaXZlbiBJMkMKK3NlZ21lbnQsIHRoZSBhZGRyZXNzIGlzIHN1ZmZpY2llbnQgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhlIGRldmljZSB0byBiZQorZGVsZXRlZC4KKworRXhhbXBsZToKKyMgZWNobyBlZXByb20gMHg1MCA+IC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0zL25ld19kZXZpY2UKKworV2hpbGUgdGhpcyBpbnRlcmZhY2Ugc2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIGluLWtlcm5lbCBkZXZpY2UgZGVjbGFyYXRpb24KK2Nhbid0IGJlIGRvbmUsIHRoZXJlIGlzIGEgdmFyaWV0eSBvZiBjYXNlcyB3aGVyZSBpdCBjYW4gYmUgaGVscGZ1bDoKKyogVGhlIEkyQyBkcml2ZXIgdXN1YWxseSBkZXRlY3RzIGRldmljZXMgKG1ldGhvZCAzIGFib3ZlKSBidXQgdGhlIGJ1cworICBzZWdtZW50IHlvdXIgZGV2aWNlIGxpdmVzIG9uIGRvZXNuJ3QgaGF2ZSB0aGUgcHJvcGVyIGNsYXNzIGJpdCBzZXQgYW5kCisgIHRodXMgZGV0ZWN0aW9uIGRvZXNuJ3QgdHJpZ2dlci4KKyogVGhlIEkyQyBkcml2ZXIgdXN1YWxseSBkZXRlY3RzIGRldmljZXMsIGJ1dCB5b3VyIGRldmljZSBsaXZlcyBhdCBhbgorICB1bmV4cGVjdGVkIGFkZHJlc3MuCisqIFRoZSBJMkMgZHJpdmVyIHVzdWFsbHkgZGV0ZWN0cyBkZXZpY2VzLCBidXQgeW91ciBkZXZpY2UgaXMgbm90IGRldGVjdGVkLAorICBlaXRoZXIgYmVjYXVzZSB0aGUgZGV0ZWN0aW9uIHJvdXRpbmUgaXMgdG9vIHN0cmljdCwgb3IgYmVjYXVzZSB5b3VyCisgIGRldmljZSBpcyBub3Qgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgeWV0IGJ1dCB5b3Uga25vdyBpdCBpcyBjb21wYXRpYmxlLgorKiBZb3UgYXJlIGRldmVsb3BpbmcgYSBkcml2ZXIgb24gYSB0ZXN0IGJvYXJkLCB3aGVyZSB5b3Ugc29sZGVyZWQgdGhlIEkyQworICBkZXZpY2UgeW91cnNlbGYuCisKK1RoaXMgaW50ZXJmYWNlIGlzIGEgcmVwbGFjZW1lbnQgZm9yIHRoZSBmb3JjZV8qIG1vZHVsZSBwYXJhbWV0ZXJzIHNvbWUgSTJDCitkcml2ZXJzIGltcGxlbWVudC4gQmVpbmcgaW1wbGVtZW50ZWQgaW4gaTJjLWNvcmUgcmF0aGVyIHRoYW4gaW4gZWFjaAorZGV2aWNlIGRyaXZlciBpbmRpdmlkdWFsbHksIGl0IGlzIG11Y2ggbW9yZSBlZmZpY2llbnQsIGFuZCBhbHNvIGhhcyB0aGUKK2FkdmFudGFnZSB0aGF0IHlvdSBkbyBub3QgaGF2ZSB0byByZWxvYWQgdGhlIGRyaXZlciB0byBjaGFuZ2UgYSBzZXR0aW5nLgorWW91IGNhbiBhbHNvIGluc3RhbnRpYXRlIHRoZSBkZXZpY2UgYmVmb3JlIHRoZSBkcml2ZXIgaXMgbG9hZGVkIG9yIGV2ZW4KK2F2YWlsYWJsZSwgYW5kIHlvdSBkb24ndCBuZWVkIHRvIGtub3cgd2hhdCBkcml2ZXIgdGhlIGRldmljZSBuZWVkcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaTJjL211eGVzL2kyYy1tdXgtZ3BpbyBiL0RvY3VtZW50YXRpb24vaTJjL211eGVzL2kyYy1tdXgtZ3BpbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGQ5MWE1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pMmMvbXV4ZXMvaTJjLW11eC1ncGlvCkBAIC0wLDAgKzEsODMgQEAKK0tlcm5lbCBkcml2ZXIgaTJjLWdwaW8tbXV4CisKK0F1dGhvcjogUGV0ZXIgS29yc2dhYXJkIDxwZXRlci5rb3JzZ2FhcmRAYmFyY28uY29tPgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworaTJjLWdwaW8tbXV4IGlzIGFuIGkyYyBtdXggZHJpdmVyIHByb3ZpZGluZyBhY2Nlc3MgdG8gSTJDIGJ1cyBzZWdtZW50cworZnJvbSBhIG1hc3RlciBJMkMgYnVzIGFuZCBhIGhhcmR3YXJlIE1VWCBjb250cm9sbGVkIHRocm91Z2ggR1BJTyBwaW5zLgorCitFLkcuOgorCisgIC0tLS0tLS0tLS0gICAgICAgICAgICAgIC0tLS0tLS0tLS0gIEJ1cyBzZWdtZW50IDEgICAtIC0gLSAtIC0KKyB8ICAgICAgICAgIHwgU0NML1NEQSAgICB8ICAgICAgICAgIHwtLS0tLS0tLS0tLS0tLSB8ICAgICAgICAgICB8CisgfCAgICAgICAgICB8LS0tLS0tLS0tLS0tfCAgICAgICAgICB8CisgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICB8IEJ1cyBzZWdtZW50IDIgfCAgICAgICAgICAgfAorIHwgIExpbnV4ICAgfCBHUElPIDEuLk4gIHwgICBNVVggICAgfC0tLS0tLS0tLS0tLS0tLSAgIERldmljZXMKKyB8ICAgICAgICAgIHwtLS0tLS0tLS0tLS18ICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICB8CisgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICB8IEJ1cyBzZWdtZW50IE0KKyB8ICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgIHwtLS0tLS0tLS0tLS0tLS18ICAgICAgICAgICB8CisgIC0tLS0tLS0tLS0gICAgICAgICAgICAgIC0tLS0tLS0tLS0gICAgICAgICAgICAgICAgICAtIC0gLSAtIC0KKworU0NML1NEQSBvZiB0aGUgbWFzdGVyIEkyQyBidXMgaXMgbXVsdGlwbGV4ZWQgdG8gYnVzIHNlZ21lbnQgMS4uTQorYWNjb3JkaW5nIHRvIHRoZSBzZXR0aW5ncyBvZiB0aGUgR1BJTyBwaW5zIDEuLk4uCisKK1VzYWdlCistLS0tLQorCitpMmMtZ3Bpby1tdXggdXNlcyB0aGUgcGxhdGZvcm0gYnVzLCBzbyB5b3UgbmVlZCB0byBwcm92aWRlIGEgc3RydWN0CitwbGF0Zm9ybV9kZXZpY2Ugd2l0aCB0aGUgcGxhdGZvcm1fZGF0YSBwb2ludGluZyB0byBhIHN0cnVjdAorZ3Bpb19pMmNtdXhfcGxhdGZvcm1fZGF0YSB3aXRoIHRoZSBJMkMgYWRhcHRlciBudW1iZXIgb2YgdGhlIG1hc3RlcgorYnVzLCB0aGUgbnVtYmVyIG9mIGJ1cyBzZWdtZW50cyB0byBjcmVhdGUgYW5kIHRoZSBHUElPIHBpbnMgdXNlZAordG8gY29udHJvbCBpdC4gU2VlIGluY2x1ZGUvbGludXgvaTJjLWdwaW8tbXV4LmggZm9yIGRldGFpbHMuCisKK0UuRy4gc29tZXRoaW5nIGxpa2UgdGhpcyBmb3IgYSBNVVggcHJvdmlkaW5nIDQgYnVzIHNlZ21lbnRzCitjb250cm9sbGVkIHRocm91Z2ggMyBHUElPIHBpbnM6CisKKyNpbmNsdWRlIDxsaW51eC9pMmMtZ3Bpby1tdXguaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIG15Ym9hcmRfZ3Bpb211eF9ncGlvc1tdID0geworCUFUOTFfUElOX1BDMjYsIEFUOTFfUElOX1BDMjUsIEFUOTFfUElOX1BDMjQKK307CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBteWJvYXJkX2dwaW9tdXhfdmFsdWVzW10gPSB7CisJMCwgMSwgMiwgMworfTsKKworc3RhdGljIHN0cnVjdCBncGlvX2kyY211eF9wbGF0Zm9ybV9kYXRhIG15Ym9hcmRfaTJjbXV4X2RhdGEgPSB7CisJLnBhcmVudAkJPSAxLAorCS5iYXNlX25yCT0gMiwgLyogb3B0aW9uYWwgKi8KKwkudmFsdWVzCQk9IG15Ym9hcmRfZ3Bpb211eF92YWx1ZXMsCisJLm5fdmFsdWVzCT0gQVJSQVlfU0laRShteWJvYXJkX2dwaW9tdXhfdmFsdWVzKSwKKwkuZ3Bpb3MJCT0gbXlib2FyZF9ncGlvbXV4X2dwaW9zLAorCS5uX2dwaW9zCT0gQVJSQVlfU0laRShteWJvYXJkX2dwaW9tdXhfZ3Bpb3MpLAorCS5pZGxlCQk9IDQsIC8qIG9wdGlvbmFsICovCit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBteWJvYXJkX2kyY211eCA9IHsKKwkubmFtZQkJPSAiaTJjLWdwaW8tbXV4IiwKKwkuaWQJCT0gMCwKKwkuZGV2CQk9IHsKKwkJLnBsYXRmb3JtX2RhdGEJPSAmbXlib2FyZF9pMmNtdXhfZGF0YSwKKwl9LAorfTsKKworSWYgeW91IGRvbid0IGtub3cgdGhlIGFic29sdXRlIEdQSU8gcGluIG51bWJlcnMgYXQgcmVnaXN0cmF0aW9uIHRpbWUsCit5b3UgY2FuIGluc3RlYWQgcHJvdmlkZSBhIGNoaXAgbmFtZSAoLmNoaXBfbmFtZSkgYW5kIHJlbGF0aXZlIEdQSU8gcGluCitudW1iZXJzLCBhbmQgdGhlIGkyYy1ncGlvLW11eCBkcml2ZXIgd2lsbCBkbyB0aGUgd29yayBmb3IgeW91LAoraW5jbHVkaW5nIGRlZmVycmVkIHByb2JpbmcgaWYgdGhlIEdQSU8gY2hpcCBpc24ndCBpbW1lZGlhdGVseQorYXZhaWxhYmxlLgorCitEZXZpY2UgUmVnaXN0cmF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doZW4gcmVnaXN0ZXJpbmcgeW91ciBpMmMtZ3Bpby1tdXggZGV2aWNlLCB5b3Ugc2hvdWxkIHBhc3MgdGhlIG51bWJlcgorb2YgYW55IEdQSU8gcGluIGl0IHVzZXMgYXMgdGhlIGRldmljZSBJRC4gVGhpcyBndWFyYW50ZWVzIHRoYXQgZXZlcnkKK2luc3RhbmNlIGhhcyBhIGRpZmZlcmVudCBJRC4KKworQWx0ZXJuYXRpdmVseSwgaWYgeW91IGRvbid0IG5lZWQgYSBzdGFibGUgZGV2aWNlIG5hbWUsIHlvdSBjYW4gc2ltcGx5CitwYXNzIFBMQVRGT1JNX0RFVklEX0FVVE8gYXMgdGhlIGRldmljZSBJRCwgYW5kIHRoZSBwbGF0Zm9ybSBjb3JlIHdpbGwKK2Fzc2lnbiBhIGR5bmFtaWMgSUQgdG8geW91ciBkZXZpY2UuIElmIHlvdSBkbyBub3Qga25vdyB0aGUgYWJzb2x1dGUKK0dQSU8gcGluIG51bWJlcnMgYXQgcmVnaXN0cmF0aW9uIHRpbWUsIHRoaXMgaXMgZXZlbiB0aGUgb25seSBvcHRpb24uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2kyYy9vbGQtbW9kdWxlLXBhcmFtZXRlcnMgYi9Eb2N1bWVudGF0aW9uL2kyYy9vbGQtbW9kdWxlLXBhcmFtZXRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUyYjYyOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaTJjL29sZC1tb2R1bGUtcGFyYW1ldGVycwpAQCAtMCwwICsxLDQ0IEBACitJMkMgZGV2aWNlIGRyaXZlciBiaW5kaW5nIGNvbnRyb2wgZnJvbSB1c2VyLXNwYWNlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1VwIHRvIGtlcm5lbCAyLjYuMzIsIG1hbnkgaTJjIGRyaXZlcnMgdXNlZCBoZWxwZXIgbWFjcm9zIHByb3ZpZGVkIGJ5Cis8bGludXgvaTJjLmg+IHdoaWNoIGNyZWF0ZWQgc3RhbmRhcmQgbW9kdWxlIHBhcmFtZXRlcnMgdG8gbGV0IHRoZSB1c2VyCitjb250cm9sIGhvdyB0aGUgZHJpdmVyIHdvdWxkIHByb2JlIGkyYyBidXNlcyBhbmQgYXR0YWNoIHRvIGRldmljZXMuIFRoZXNlCitwYXJhbWV0ZXJzIHdlcmUga25vd24gYXMgInByb2JlIiAodG8gbGV0IHRoZSBkcml2ZXIgcHJvYmUgZm9yIGFuIGV4dHJhCithZGRyZXNzKSwgImZvcmNlIiAodG8gZm9yY2libHkgYXR0YWNoIHRoZSBkcml2ZXIgdG8gYSBnaXZlbiBkZXZpY2UpIGFuZAorImlnbm9yZSIgKHRvIHByZXZlbnQgYSBkcml2ZXIgZnJvbSBwcm9iaW5nIGEgZ2l2ZW4gYWRkcmVzcykuCisKK1dpdGggdGhlIGNvbnZlcnNpb24gb2YgdGhlIGkyYyBzdWJzeXN0ZW0gdG8gdGhlIHN0YW5kYXJkIGRldmljZSBkcml2ZXIKK2JpbmRpbmcgbW9kZWwsIGl0IGJlY2FtZSBjbGVhciB0aGF0IHRoZXNlIHBlci1tb2R1bGUgcGFyYW1ldGVycyB3ZXJlIG5vCitsb25nZXIgbmVlZGVkLCBhbmQgdGhhdCBhIGNlbnRyYWxpemVkIGltcGxlbWVudGF0aW9uIHdhcyBwb3NzaWJsZS4gVGhlIG5ldywKK3N5c2ZzLWJhc2VkIGludGVyZmFjZSBpcyBkZXNjcmliZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gZmlsZQorImluc3RhbnRpYXRpbmctZGV2aWNlcyIsIHNlY3Rpb24gIk1ldGhvZCA0OiBJbnN0YW50aWF0ZSBmcm9tIHVzZXItc3BhY2UiLgorCitCZWxvdyBpcyBhIG1hcHBpbmcgZnJvbSB0aGUgb2xkIG1vZHVsZSBwYXJhbWV0ZXJzIHRvIHRoZSBuZXcgaW50ZXJmYWNlLgorCitBdHRhY2hpbmcgYSBkcml2ZXIgdG8gYW4gSTJDIGRldmljZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT2xkIG1ldGhvZCAobW9kdWxlIHBhcmFtZXRlcnMpOgorIyBtb2Rwcm9iZSA8ZHJpdmVyPiBwcm9iZT0xLDB4MmQKKyMgbW9kcHJvYmUgPGRyaXZlcj4gZm9yY2U9MSwweDJkCisjIG1vZHByb2JlIDxkcml2ZXI+IGZvcmNlXzxkZXZpY2U+PTEsMHgyZAorCitOZXcgbWV0aG9kIChzeXNmcyBpbnRlcmZhY2UpOgorIyBlY2hvIDxkZXZpY2U+IDB4MmQgPiAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtMS9uZXdfZGV2aWNlCisKK1ByZXZlbnRpbmcgYSBkcml2ZXIgZnJvbSBhdHRhY2hpbmcgdG8gYW4gSTJDIGRldmljZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK09sZCBtZXRob2QgKG1vZHVsZSBwYXJhbWV0ZXJzKToKKyMgbW9kcHJvYmUgPGRyaXZlcj4gaWdub3JlPTEsMHgyZgorCitOZXcgbWV0aG9kIChzeXNmcyBpbnRlcmZhY2UpOgorIyBlY2hvIGR1bW15IDB4MmYgPiAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtMS9uZXdfZGV2aWNlCisjIG1vZHByb2JlIDxkcml2ZXI+CisKK09mIGNvdXJzZSwgaXQgaXMgaW1wb3J0YW50IHRvIGluc3RhbnRpYXRlIHRoZSAiZHVtbXkiIGRldmljZSBiZWZvcmUgbG9hZGluZwordGhlIGRyaXZlci4gVGhlIGR1bW15IGRldmljZSB3aWxsIGJlIGhhbmRsZWQgYnkgaTJjLWNvcmUgaXRzZWxmLCBwcmV2ZW50aW5nCitvdGhlciBkcml2ZXJzIGZyb20gYmluZGluZyB0byBpdCBsYXRlciBvbi4gSWYgdGhlcmUgaXMgYSByZWFsIGRldmljZSBhdCB0aGUKK3Byb2JsZW1hdGljIGFkZHJlc3MsIGFuZCB5b3Ugd2FudCBhbm90aGVyIGRyaXZlciB0byBiaW5kIHRvIGl0LCB0aGVuIHNpbXBseQorcGFzcyB0aGUgbmFtZSBvZiB0aGUgZGV2aWNlIGluIHF1ZXN0aW9uIGluc3RlYWQgb2YgImR1bW15Ii4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaTJjL3NsYXZlLWVlcHJvbS1iYWNrZW5kIGIvRG9jdW1lbnRhdGlvbi9pMmMvc2xhdmUtZWVwcm9tLWJhY2tlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg0NDRlZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaTJjL3NsYXZlLWVlcHJvbS1iYWNrZW5kCkBAIC0wLDAgKzEsMTQgQEAKK0xpbnV4IEkyQyBzbGF2ZSBlZXByb20gYmFja2VuZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2J5IFdvbGZyYW0gU2FuZyA8d3NhQHNhbmctZW5naW5lZXJpbmcuY29tPiBpbiAyMDE0LTE1CisKK1RoaXMgaXMgYSBwcm9vZi1vZi1jb25jZXB0IGJhY2tlbmQgd2hpY2ggYWN0cyBsaWtlIGFuIEVFUFJPTSBvbiB0aGUgY29ubmVjdGVkCitJMkMgYnVzLiBUaGUgbWVtb3J5IGNvbnRlbnRzIGNhbiBiZSBtb2RpZmllZCBmcm9tIHVzZXJzcGFjZSB2aWEgdGhpcyBmaWxlCitsb2NhdGVkIGluIHN5c2ZzOgorCisJL3N5cy9idXMvaTJjL2RldmljZXMvPGRldmljZS1kaXJlY29yeT4vc2xhdmUtZWVwcm9tCisKK0FzIG9mIDIwMTUsIExpbnV4IGRvZXNuJ3Qgc3VwcG9ydCBwb2xsIG9uIGJpbmFyeSBzeXNmcyBmaWxlcywgc28gdGhlcmUgaXMgbm8KK25vdGZpY2F0aW9uIHdoZW4gYW5vdGhlciBtYXN0ZXIgY2hhbmdlZCB0aGUgY29udGVudC4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pMmMvc2xhdmUtaW50ZXJmYWNlIGIvRG9jdW1lbnRhdGlvbi9pMmMvc2xhdmUtaW50ZXJmYWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxZWQwNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2kyYy9zbGF2ZS1pbnRlcmZhY2UKQEAgLTAsMCArMSwxODcgQEAKK0xpbnV4IEkyQyBzbGF2ZSBpbnRlcmZhY2UgZGVzY3JpcHRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworYnkgV29sZnJhbSBTYW5nIDx3c2FAc2FuZy1lbmdpbmVlcmluZy5jb20+IGluIDIwMTQtMTUKKworTGludXggY2FuIGFsc28gYmUgYW4gSTJDIHNsYXZlIGlmIHRoZSBJMkMgY29udHJvbGxlciBpbiB1c2UgaGFzIHNsYXZlCitmdW5jdGlvbmFsaXR5LiBGb3IgdGhhdCB0byB3b3JrLCBvbmUgbmVlZHMgc2xhdmUgc3VwcG9ydCBpbiB0aGUgYnVzIGRyaXZlciBwbHVzCithIGhhcmR3YXJlIGluZGVwZW5kZW50IHNvZnR3YXJlIGJhY2tlbmQgcHJvdmlkaW5nIHRoZSBhY3R1YWwgZnVuY3Rpb25hbGl0eS4gQW4KK2V4YW1wbGUgZm9yIHRoZSBsYXR0ZXIgaXMgdGhlIHNsYXZlLWVlcHJvbSBkcml2ZXIsIHdoaWNoIGFjdHMgYXMgYSBkdWFsIG1lbW9yeQorZHJpdmVyLiBXaGlsZSBhbm90aGVyIEkyQyBtYXN0ZXIgb24gdGhlIGJ1cyBjYW4gYWNjZXNzIGl0IGxpa2UgYSByZWd1bGFyCitFRVBST00sIHRoZSBMaW51eCBJMkMgc2xhdmUgY2FuIGFjY2VzcyB0aGUgY29udGVudCB2aWEgc3lzZnMgYW5kIGhhbmRsZSBkYXRhIGFzCituZWVkZWQuIFRoZSBiYWNrZW5kIGRyaXZlciBhbmQgdGhlIEkyQyBidXMgZHJpdmVyIGNvbW11bmljYXRlIHZpYSBldmVudHMuIEhlcmUKK2lzIGEgc21hbGwgZ3JhcGggdmlzdWFsaXppbmcgdGhlIGRhdGEgZmxvdyBhbmQgdGhlIG1lYW5zIGJ5IHdoaWNoIGRhdGEgaXMKK3RyYW5zcG9ydGVkLiBUaGUgZG90dGVkIGxpbmUgbWFya3Mgb25seSBvbmUgZXhhbXBsZS4gVGhlIGJhY2tlbmQgY291bGQgYWxzbwordXNlIGEgY2hhcmFjdGVyIGRldmljZSwgYmUgaW4ta2VybmVsIG9ubHksIG9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudDoKKworCisgICAgICAgICAgICAgIGUuZy4gc3lzZnMgICAgICAgIEkyQyBzbGF2ZSBldmVudHMgICAgICAgIEkvTyByZWdpc3RlcnMKKyAgKy0tLS0tLS0tLS0tKyAgIHYgICAgKy0tLS0tLS0tLSsgICAgIHYgICAgICstLS0tLS0tLSsgIHYgICstLS0tLS0tLS0tLS0rCisgIHwgVXNlcnNwYWNlICsuLi4uLi4uLisgQmFja2VuZCArLS0tLS0tLS0tLS0rIERyaXZlciArLS0tLS0rIENvbnRyb2xsZXIgfAorICArLS0tLS0tLS0tLS0rICAgICAgICArLS0tLS0tLS0tKyAgICAgICAgICAgKy0tLS0tLS0tKyAgICAgKy0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLSAgSTJDCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0gIEJ1cworCitOb3RlOiBUZWNobmljYWxseSwgdGhlcmUgaXMgYWxzbyB0aGUgSTJDIGNvcmUgYmV0d2VlbiB0aGUgYmFja2VuZCBhbmQgdGhlCitkcml2ZXIuIEhvd2V2ZXIsIGF0IHRoaXMgdGltZSBvZiB3cml0aW5nLCB0aGUgbGF5ZXIgaXMgdHJhbnNwYXJlbnQuCisKKworVXNlciBtYW51YWwKKz09PT09PT09PT09CisKK0kyQyBzbGF2ZSBiYWNrZW5kcyBiZWhhdmUgbGlrZSBzdGFuZGFyZCBJMkMgY2xpZW50cy4gU28sIHlvdSBjYW4gaW5zdGFudGlhdGUKK3RoZW0gYXMgZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudCAnaW5zdGFudGlhdGluZy1kZXZpY2VzJy4gVGhlIG9ubHkgZGlmZmVyZW5jZQoraXMgdGhhdCBpMmMgc2xhdmUgYmFja2VuZHMgaGF2ZSB0aGVpciBvd24gYWRkcmVzcyBzcGFjZS4gU28sIHlvdSBoYXZlIHRvIGFkZAorMHgxMDAwIHRvIHRoZSBhZGRyZXNzIHlvdSB3b3VsZCBvcmlnaW5hbGx5IHJlcXVlc3QuIEFuIGV4YW1wbGUgZm9yCitpbnN0YW50aWF0aW5nIHRoZSBzbGF2ZS1lZXByb20gZHJpdmVyIGZyb20gdXNlcnNwYWNlIGF0IHRoZSA3IGJpdCBhZGRyZXNzIDB4NjQKK29uIGJ1cyAxOgorCisgICMgZWNobyBzbGF2ZS0yNGMwMiAweDEwNjQgPiAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtMS9uZXdfZGV2aWNlCisKK0VhY2ggYmFja2VuZCBzaG91bGQgY29tZSB3aXRoIHNlcGFyYXRlIGRvY3VtZW50YXRpb24gdG8gZGVzY3JpYmUgaXRzIHNwZWNpZmljCitiZWhhdmlvdXIgYW5kIHNldHVwLgorCisKK0RldmVsb3BlciBtYW51YWwKKz09PT09PT09PT09PT09PT0KKworRmlyc3QsIHRoZSBldmVudHMgd2hpY2ggYXJlIHVzZWQgYnkgdGhlIGJ1cyBkcml2ZXIgYW5kIHRoZSBiYWNrZW5kIHdpbGwgYmUKK2Rlc2NyaWJlZCBpbiBkZXRhaWwuIEFmdGVyIHRoYXQsIHNvbWUgaW1wbGVtZW50YXRpb24gaGludHMgZm9yIGV4dGVuZGluZyBidXMKK2RyaXZlcnMgYW5kIHdyaXRpbmcgYmFja2VuZHMgd2lsbCBiZSBnaXZlbi4KKworCitJMkMgc2xhdmUgZXZlbnRzCistLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBidXMgZHJpdmVyIHNlbmRzIGFuIGV2ZW50IHRvIHRoZSBiYWNrZW5kIHVzaW5nIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb246CisKKwlyZXQgPSBpMmNfc2xhdmVfZXZlbnQoY2xpZW50LCBldmVudCwgJnZhbCkKKworJ2NsaWVudCcgZGVzY3JpYmVzIHRoZSBpMmMgc2xhdmUgZGV2aWNlLiAnZXZlbnQnIGlzIG9uZSBvZiB0aGUgc3BlY2lhbCBldmVudAordHlwZXMgZGVzY3JpYmVkIGhlcmVhZnRlci4gJ3ZhbCcgaG9sZHMgYW4gdTggdmFsdWUgZm9yIHRoZSBkYXRhIGJ5dGUgdG8gYmUKK3JlYWQvd3JpdHRlbiBhbmQgaXMgdGh1cyBiaWRpcmVjdGlvbmFsLiBUaGUgcG9pbnRlciB0byB2YWwgbXVzdCBhbHdheXMgYmUKK3Byb3ZpZGVkIGV2ZW4gaWYgdmFsIGlzIG5vdCB1c2VkIGZvciBhbiBldmVudCwgaS5lLiBkb24ndCB1c2UgTlVMTCBoZXJlLiAncmV0JworaXMgdGhlIHJldHVybiB2YWx1ZSBmcm9tIHRoZSBiYWNrZW5kLiBNYW5kYXRvcnkgZXZlbnRzIG11c3QgYmUgcHJvdmlkZWQgYnkgdGhlCitidXMgZHJpdmVycyBhbmQgbXVzdCBiZSBjaGVja2VkIGZvciBieSBiYWNrZW5kIGRyaXZlcnMuCisKK0V2ZW50IHR5cGVzOgorCisqIEkyQ19TTEFWRV9XUklURV9SRVFVRVNURUQgKG1hbmRhdG9yeSkKKworJ3ZhbCc6IHVudXNlZAorJ3JldCc6IGFsd2F5cyAwCisKK0Fub3RoZXIgSTJDIG1hc3RlciB3YW50cyB0byB3cml0ZSBkYXRhIHRvIHVzLiBUaGlzIGV2ZW50IHNob3VsZCBiZSBzZW50IG9uY2UKK291ciBvd24gYWRkcmVzcyBhbmQgdGhlIHdyaXRlIGJpdCB3YXMgZGV0ZWN0ZWQuIFRoZSBkYXRhIGRpZCBub3QgYXJyaXZlIHlldCwgc28KK3RoZXJlIGlzIG5vdGhpbmcgdG8gcHJvY2VzcyBvciByZXR1cm4uIFdha2V1cCBvciBpbml0aWFsaXphdGlvbiBwcm9iYWJseSBuZWVkcwordG8gYmUgZG9uZSwgdGhvdWdoLgorCisqIEkyQ19TTEFWRV9SRUFEX1JFUVVFU1RFRCAobWFuZGF0b3J5KQorCisndmFsJzogYmFja2VuZCByZXR1cm5zIGZpcnN0IGJ5dGUgdG8gYmUgc2VudAorJ3JldCc6IGFsd2F5cyAwCisKK0Fub3RoZXIgSTJDIG1hc3RlciB3YW50cyB0byByZWFkIGRhdGEgZnJvbSB1cy4gVGhpcyBldmVudCBzaG91bGQgYmUgc2VudCBvbmNlCitvdXIgb3duIGFkZHJlc3MgYW5kIHRoZSByZWFkIGJpdCB3YXMgZGV0ZWN0ZWQuIEFmdGVyIHJldHVybmluZywgdGhlIGJ1cyBkcml2ZXIKK3Nob3VsZCB0cmFuc21pdCB0aGUgZmlyc3QgYnl0ZS4KKworKiBJMkNfU0xBVkVfV1JJVEVfUkVDRUlWRUQgKG1hbmRhdG9yeSkKKworJ3ZhbCc6IGJ1cyBkcml2ZXIgZGVsaXZlcnMgcmVjZWl2ZWQgYnl0ZQorJ3JldCc6IDAgaWYgdGhlIGJ5dGUgc2hvdWxkIGJlIGFja2VkLCBzb21lIGVycm5vIGlmIHRoZSBieXRlIHNob3VsZCBiZSBuYWNrZWQKKworQW5vdGhlciBJMkMgbWFzdGVyIGhhcyBzZW50IGEgYnl0ZSB0byB1cyB3aGljaCBuZWVkcyB0byBiZSBzZXQgaW4gJ3ZhbCcuIElmICdyZXQnCitpcyB6ZXJvLCB0aGUgYnVzIGRyaXZlciBzaG91bGQgYWNrIHRoaXMgYnl0ZS4gSWYgJ3JldCcgaXMgYW4gZXJybm8sIHRoZW4gdGhlIGJ5dGUKK3Nob3VsZCBiZSBuYWNrZWQuCisKKyogSTJDX1NMQVZFX1JFQURfUFJPQ0VTU0VEIChtYW5kYXRvcnkpCisKKyd2YWwnOiBiYWNrZW5kIHJldHVybnMgbmV4dCBieXRlIHRvIGJlIHNlbnQKKydyZXQnOiBhbHdheXMgMAorCitUaGUgYnVzIGRyaXZlciByZXF1ZXN0cyB0aGUgbmV4dCBieXRlIHRvIGJlIHNlbnQgdG8gYW5vdGhlciBJMkMgbWFzdGVyIGluCisndmFsJy4gSW1wb3J0YW50OiBUaGlzIGRvZXMgbm90IG1lYW4gdGhhdCB0aGUgcHJldmlvdXMgYnl0ZSBoYXMgYmVlbiBhY2tlZCwgaXQKK29ubHkgbWVhbnMgdGhhdCB0aGUgcHJldmlvdXMgYnl0ZSBpcyBzaGlmdGVkIG91dCB0byB0aGUgYnVzISBUbyBlbnN1cmUgc2VhbWxlc3MKK3RyYW5zbWlzc2lvbiwgbW9zdCBoYXJkd2FyZSByZXF1ZXN0cyB0aGUgbmV4dCBieXRlIHdoZW4gdGhlIHByZXZpb3VzIG9uZSBpcworc3RpbGwgc2hpZnRlZCBvdXQuIElmIHRoZSBtYXN0ZXIgc2VuZHMgTkFDSyBhbmQgc3RvcHMgcmVhZGluZyBhZnRlciB0aGUgYnl0ZQorY3VycmVudGx5IHNoaWZ0ZWQgb3V0LCB0aGlzIGJ5dGUgcmVxdWVzdGVkIGhlcmUgaXMgbmV2ZXIgdXNlZC4gSXQgdmVyeSBsaWtlbHkKK25lZWRzIHRvIGJlIHNlbnQgYWdhaW4gb24gdGhlIG5leHQgSTJDX1NMQVZFX1JFQURfUkVRVUVTVCwgZGVwZW5kaW5nIGEgYml0IG9uCit5b3VyIGJhY2tlbmQsIHRob3VnaC4KKworKiBJMkNfU0xBVkVfU1RPUCAobWFuZGF0b3J5KQorCisndmFsJzogdW51c2VkCisncmV0JzogYWx3YXlzIDAKKworQSBzdG9wIGNvbmRpdGlvbiB3YXMgcmVjZWl2ZWQuIFRoaXMgY2FuIGhhcHBlbiBhbnl0aW1lIGFuZCB0aGUgYmFja2VuZCBzaG91bGQKK3Jlc2V0IGl0cyBzdGF0ZSBtYWNoaW5lIGZvciBJMkMgdHJhbnNmZXJzIHRvIGJlIGFibGUgdG8gcmVjZWl2ZSBuZXcgcmVxdWVzdHMuCisKKworU29mdHdhcmUgYmFja2VuZHMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHlvdSB3YW50IHRvIHdyaXRlIGEgc29mdHdhcmUgYmFja2VuZDoKKworKiB1c2UgYSBzdGFuZGFyZCBpMmNfZHJpdmVyIGFuZCBpdHMgbWF0Y2hpbmcgbWVjaGFuaXNtcworKiB3cml0ZSB0aGUgc2xhdmVfY2FsbGJhY2sgd2hpY2ggaGFuZGxlcyB0aGUgYWJvdmUgc2xhdmUgZXZlbnRzCisgIChiZXN0IHVzaW5nIGEgc3RhdGUgbWFjaGluZSkKKyogcmVnaXN0ZXIgdGhpcyBjYWxsYmFjayB2aWEgaTJjX3NsYXZlX3JlZ2lzdGVyKCkKKworQ2hlY2sgdGhlIGkyYy1zbGF2ZS1lZXByb20gZHJpdmVyIGFzIGFuIGV4YW1wbGUuCisKKworQnVzIGRyaXZlciBzdXBwb3J0CistLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgeW91IHdhbnQgdG8gYWRkIHNsYXZlIHN1cHBvcnQgdG8gdGhlIGJ1cyBkcml2ZXI6CisKKyogaW1wbGVtZW50IGNhbGxzIHRvIHJlZ2lzdGVyL3VucmVnaXN0ZXIgdGhlIHNsYXZlIGFuZCBhZGQgdGhvc2UgdG8gdGhlCisgIHN0cnVjdCBpMmNfYWxnb3JpdGhtLiBXaGVuIHJlZ2lzdGVyaW5nLCB5b3UgcHJvYmFibHkgbmVlZCB0byBzZXQgdGhlIGkyYworICBzbGF2ZSBhZGRyZXNzIGFuZCBlbmFibGUgc2xhdmUgc3BlY2lmaWMgaW50ZXJydXB0cy4gSWYgeW91IHVzZSBydW50aW1lIHBtLCB5b3UKKyAgc2hvdWxkIHVzZSBwbV9ydW50aW1lX2ZvcmJpZCgpIGJlY2F1c2UgeW91ciBkZXZpY2UgdXN1YWxseSBuZWVkcyB0byBiZSBwb3dlcmVkCisgIG9uIGFsd2F5cyB0byBiZSBhYmxlIHRvIGRldGVjdCBpdHMgc2xhdmUgYWRkcmVzcy4gV2hlbiB1bnJlZ2lzdGVyaW5nLCBkbyB0aGUKKyAgaW52ZXJzZSBvZiB0aGUgYWJvdmUuCisKKyogQ2F0Y2ggdGhlIHNsYXZlIGludGVycnVwdHMgYW5kIHNlbmQgYXBwcm9wcmlhdGUgaTJjX3NsYXZlX2V2ZW50cyB0byB0aGUgYmFja2VuZC4KKworQ2hlY2sgdGhlIGkyYy1yY2FyIGRyaXZlciBhcyBhbiBleGFtcGxlLgorCisKK0Fib3V0IEFDSy9OQUNLCistLS0tLS0tLS0tLS0tLQorCitJdCBpcyBnb29kIGJlaGF2aW91ciB0byBhbHdheXMgQUNLIHRoZSBhZGRyZXNzIHBoYXNlLCBzbyB0aGUgbWFzdGVyIGtub3dzIGlmIGEKK2RldmljZSBpcyBiYXNpY2FsbHkgcHJlc2VudCBvciBpZiBpdCBteXN0ZXJpb3VzbHkgZGlzYXBwZWFyZWQuIFVzaW5nIE5BQ0sgdG8KK3N0YXRlIGJlaW5nIGJ1c3kgaXMgdHJvdWJsZXNvbWUuIFNNQnVzIGRlbWFuZHMgdG8gYWx3YXlzIEFDSyB0aGUgYWRkcmVzcyBwaGFzZSwKK3doaWxlIHRoZSBJMkMgc3BlY2lmaWNhdGlvbiBpcyBtb3JlIGxvb3NlIG9uIHRoYXQuIE1vc3QgSTJDIGNvbnRyb2xsZXJzIGFsc28KK2F1dG9tYXRpY2FsbHkgQUNLIHdoZW4gZGV0ZWN0aW5nIHRoZWlyIHNsYXZlIGFkZHJlc3Nlcywgc28gdGhlcmUgaXMgbm8gb3B0aW9uCit0byBOQUNLIHRoZW0uIEZvciB0aG9zZSByZWFzb25zLCB0aGlzIEFQSSBkb2VzIG5vdCBzdXBwb3J0IE5BQ0sgaW4gdGhlIGFkZHJlc3MKK3BoYXNlLgorCitDdXJyZW50bHksIHRoZXJlIGlzIG5vIHNsYXZlIGV2ZW50IHRvIHJlcG9ydCBpZiB0aGUgbWFzdGVyIGRpZCBBQ0sgb3IgTkFDSyBhCitieXRlIHdoZW4gaXQgcmVhZHMgZnJvbSB1cy4gV2UgY291bGQgbWFrZSB0aGlzIGFuIG9wdGlvbmFsIGV2ZW50IGlmIHRoZSBuZWVkCithcmlzZXMuIEhvd2V2ZXIsIGNhc2VzIHNob3VsZCBiZSBleHRyZW1lbHkgcmFyZSBiZWNhdXNlIHRoZSBtYXN0ZXIgaXMgZXhwZWN0ZWQKK3RvIHNlbmQgU1RPUCBhZnRlciB0aGF0IGFuZCB3ZSBoYXZlIGFuIGV2ZW50IGZvciB0aGF0LiBBbHNvLCBrZWVwIGluIG1pbmQgbm90CithbGwgSTJDIGNvbnRyb2xsZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIHJlcG9ydCB0aGF0IGV2ZW50LgorCisKK0Fib3V0IGJ1ZmZlcnMKKy0tLS0tLS0tLS0tLS0KKworRHVyaW5nIGRldmVsb3BtZW50IG9mIHRoaXMgQVBJLCB0aGUgcXVlc3Rpb24gb2YgdXNpbmcgYnVmZmVycyBpbnN0ZWFkIG9mIGp1c3QKK2J5dGVzIGNhbWUgdXAuIFN1Y2ggYW4gZXh0ZW5zaW9uIG1pZ2h0IGJlIHBvc3NpYmxlLCB1c2VmdWxuZXNzIGlzIHVuY2xlYXIgYXQKK3RoaXMgdGltZSBvZiB3cml0aW5nLiBTb21lIHBvaW50cyB0byBrZWVwIGluIG1pbmQgd2hlbiB1c2luZyBidWZmZXJzOgorCisqIEJ1ZmZlcnMgc2hvdWxkIGJlIG9wdC1pbiBhbmQgc2xhdmUgZHJpdmVycyB3aWxsIGFsd2F5cyBoYXZlIHRvIHN1cHBvcnQKKyAgYnl0ZS1iYXNlZCB0cmFuc2FjdGlvbnMgYXMgdGhlIHVsdGltYXRlIGZhbGxiYWNrIGJlY2F1c2UgdGhpcyBpcyBob3cgdGhlCisgIG1ham9yaXR5IG9mIEhXIHdvcmtzLgorCisqIEZvciBiYWNrZW5kcyBzaW11bGF0aW5nIGhhcmR3YXJlIHJlZ2lzdGVycywgYnVmZmVycyBhcmUgbm90IGhlbHBmdWwgYmVjYXVzZQorICBvbiB3cml0ZXMgYW4gYWN0aW9uIHNob3VsZCBiZSBpbW1lZGlhdGVseSB0cmlnZ2VyZWQuIEZvciByZWFkcywgdGhlIGRhdGEgaW4KKyAgdGhlIGJ1ZmZlciBtaWdodCBnZXQgc3RhbGUuCisKKyogQSBtYXN0ZXIgY2FuIHNlbmQgU1RPUCBhdCBhbnkgdGltZS4gRm9yIHBhcnRpYWxseSB0cmFuc2ZlcnJlZCBidWZmZXJzLCB0aGlzCisgIG1lYW5zIGFkZGl0aW9uYWwgY29kZSB0byBoYW5kbGUgdGhpcyBleGNlcHRpb24uIFN1Y2ggY29kZSB0ZW5kcyB0byBiZQorICBlcnJvci1wcm9uZS4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pMmMvc21idXMtcHJvdG9jb2wgYi9Eb2N1bWVudGF0aW9uL2kyYy9zbWJ1cy1wcm90b2NvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDEyYjEyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pMmMvc21idXMtcHJvdG9jb2wKQEAgLTAsMCArMSwyNzMgQEAKK1NNQnVzIFByb3RvY29sIFN1bW1hcnkKKz09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGZvbGxvd2luZyBpcyBhIHN1bW1hcnkgb2YgdGhlIFNNQnVzIHByb3RvY29sLiBJdCBhcHBsaWVzIHRvCithbGwgcmV2aXNpb25zIG9mIHRoZSBwcm90b2NvbCAoMS4wLCAxLjEsIGFuZCAyLjApLgorQ2VydGFpbiBwcm90b2NvbCBmZWF0dXJlcyB3aGljaCBhcmUgbm90IHN1cHBvcnRlZCBieQordGhpcyBwYWNrYWdlIGFyZSBicmllZmx5IGRlc2NyaWJlZCBhdCB0aGUgZW5kIG9mIHRoaXMgZG9jdW1lbnQuCisKK1NvbWUgYWRhcHRlcnMgdW5kZXJzdGFuZCBvbmx5IHRoZSBTTUJ1cyAoU3lzdGVtIE1hbmFnZW1lbnQgQnVzKSBwcm90b2NvbCwKK3doaWNoIGlzIGEgc3Vic2V0IGZyb20gdGhlIEkyQyBwcm90b2NvbC4gRm9ydHVuYXRlbHksIG1hbnkgZGV2aWNlcyB1c2UKK29ubHkgdGhlIHNhbWUgc3Vic2V0LCB3aGljaCBtYWtlcyBpdCBwb3NzaWJsZSB0byBwdXQgdGhlbSBvbiBhbiBTTUJ1cy4KKworSWYgeW91IHdyaXRlIGEgZHJpdmVyIGZvciBzb21lIEkyQyBkZXZpY2UsIHBsZWFzZSB0cnkgdG8gdXNlIHRoZSBTTUJ1cworY29tbWFuZHMgaWYgYXQgYWxsIHBvc3NpYmxlIChpZiB0aGUgZGV2aWNlIHVzZXMgb25seSB0aGF0IHN1YnNldCBvZiB0aGUKK0kyQyBwcm90b2NvbCkuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gdXNlIHRoZSBkZXZpY2UgZHJpdmVyIG9uIGJvdGgKK1NNQnVzIGFkYXB0ZXJzIGFuZCBJMkMgYWRhcHRlcnMgKHRoZSBTTUJ1cyBjb21tYW5kIHNldCBpcyBhdXRvbWF0aWNhbGx5Cit0cmFuc2xhdGVkIHRvIEkyQyBvbiBJMkMgYWRhcHRlcnMsIGJ1dCBwbGFpbiBJMkMgY29tbWFuZHMgY2FuIG5vdCBiZQoraGFuZGxlZCBhdCBhbGwgb24gbW9zdCBwdXJlIFNNQnVzIGFkYXB0ZXJzKS4KKworQmVsb3cgaXMgYSBsaXN0IG9mIFNNQnVzIHByb3RvY29sIG9wZXJhdGlvbnMsIGFuZCB0aGUgZnVuY3Rpb25zIGV4ZWN1dGluZwordGhlbS4gIE5vdGUgdGhhdCB0aGUgbmFtZXMgdXNlZCBpbiB0aGUgU01CdXMgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbnMgdXN1YWxseQorZG9uJ3QgbWF0Y2ggdGhlc2UgZnVuY3Rpb24gbmFtZXMuICBGb3Igc29tZSBvZiB0aGUgb3BlcmF0aW9ucyB3aGljaCBwYXNzIGEKK3NpbmdsZSBkYXRhIGJ5dGUsIHRoZSBmdW5jdGlvbnMgdXNpbmcgU01CdXMgcHJvdG9jb2wgb3BlcmF0aW9uIG5hbWVzIGV4ZWN1dGUKK2EgZGlmZmVyZW50IHByb3RvY29sIG9wZXJhdGlvbiBlbnRpcmVseS4KKworRWFjaCB0cmFuc2FjdGlvbiB0eXBlIGNvcnJlc3BvbmRzIHRvIGEgZnVuY3Rpb25hbGl0eSBmbGFnLiBCZWZvcmUgY2FsbGluZyBhCit0cmFuc2FjdGlvbiBmdW5jdGlvbiwgYSBkZXZpY2UgZHJpdmVyIHNob3VsZCBhbHdheXMgY2hlY2sgKGp1c3Qgb25jZSkgZm9yCit0aGUgY29ycmVzcG9uZGluZyBmdW5jdGlvbmFsaXR5IGZsYWcgdG8gZW5zdXJlIHRoYXQgdGhlIHVuZGVybHlpbmcgSTJDCithZGFwdGVyIHN1cHBvcnRzIHRoZSB0cmFuc2FjdGlvbiBpbiBxdWVzdGlvbi4gU2VlCis8ZmlsZTpEb2N1bWVudGF0aW9uL2kyYy9mdW5jdGlvbmFsaXR5PiBmb3IgdGhlIGRldGFpbHMuCisKKworS2V5IHRvIHN5bWJvbHMKKz09PT09PT09PT09PT09CisKK1MgICAgICgxIGJpdCkgOiBTdGFydCBiaXQKK1AgICAgICgxIGJpdCkgOiBTdG9wIGJpdAorUmQvV3IgKDEgYml0KSA6IFJlYWQvV3JpdGUgYml0LiBSZCBlcXVhbHMgMSwgV3IgZXF1YWxzIDAuCitBLCBOQSAoMSBiaXQpIDogQWNjZXB0IGFuZCByZXZlcnNlIGFjY2VwdCBiaXQuIAorQWRkciAgKDcgYml0cyk6IEkyQyA3IGJpdCBhZGRyZXNzLiBOb3RlIHRoYXQgdGhpcyBjYW4gYmUgZXhwYW5kZWQgYXMgdXN1YWwgdG8gCisgICAgICAgICAgICAgICAgZ2V0IGEgMTAgYml0IEkyQyBhZGRyZXNzLgorQ29tbSAgKDggYml0cyk6IENvbW1hbmQgYnl0ZSwgYSBkYXRhIGJ5dGUgd2hpY2ggb2Z0ZW4gc2VsZWN0cyBhIHJlZ2lzdGVyIG9uCisgICAgICAgICAgICAgICAgdGhlIGRldmljZS4KK0RhdGEgICg4IGJpdHMpOiBBIHBsYWluIGRhdGEgYnl0ZS4gU29tZXRpbWVzLCBJIHdyaXRlIERhdGFMb3csIERhdGFIaWdoCisgICAgICAgICAgICAgICAgZm9yIDE2IGJpdCBkYXRhLgorQ291bnQgKDggYml0cyk6IEEgZGF0YSBieXRlIGNvbnRhaW5pbmcgdGhlIGxlbmd0aCBvZiBhIGJsb2NrIG9wZXJhdGlvbi4KKworWy4uXTogRGF0YSBzZW50IGJ5IEkyQyBkZXZpY2UsIGFzIG9wcG9zZWQgdG8gZGF0YSBzZW50IGJ5IHRoZSBob3N0IGFkYXB0ZXIuCisKKworU01CdXMgUXVpY2sgQ29tbWFuZAorPT09PT09PT09PT09PT09PT09PQorCitUaGlzIHNlbmRzIGEgc2luZ2xlIGJpdCB0byB0aGUgZGV2aWNlLCBhdCB0aGUgcGxhY2Ugb2YgdGhlIFJkL1dyIGJpdC4KKworQSBBZGRyIFJkL1dyIFtBXSBQCisKK0Z1bmN0aW9uYWxpdHkgZmxhZzogSTJDX0ZVTkNfU01CVVNfUVVJQ0sKKworCitTTUJ1cyBSZWNlaXZlIEJ5dGU6ICBpMmNfc21idXNfcmVhZF9ieXRlKCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIHJlYWRzIGEgc2luZ2xlIGJ5dGUgZnJvbSBhIGRldmljZSwgd2l0aG91dCBzcGVjaWZ5aW5nIGEgZGV2aWNlCityZWdpc3Rlci4gU29tZSBkZXZpY2VzIGFyZSBzbyBzaW1wbGUgdGhhdCB0aGlzIGludGVyZmFjZSBpcyBlbm91Z2g7IGZvcgorb3RoZXJzLCBpdCBpcyBhIHNob3J0aGFuZCBpZiB5b3Ugd2FudCB0byByZWFkIHRoZSBzYW1lIHJlZ2lzdGVyIGFzIGluCit0aGUgcHJldmlvdXMgU01CdXMgY29tbWFuZC4KKworUyBBZGRyIFJkIFtBXSBbRGF0YV0gTkEgUAorCitGdW5jdGlvbmFsaXR5IGZsYWc6IEkyQ19GVU5DX1NNQlVTX1JFQURfQllURQorCisKK1NNQnVzIFNlbmQgQnl0ZTogIGkyY19zbWJ1c193cml0ZV9ieXRlKCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBvcGVyYXRpb24gaXMgdGhlIHJldmVyc2Ugb2YgUmVjZWl2ZSBCeXRlOiBpdCBzZW5kcyBhIHNpbmdsZSBieXRlCit0byBhIGRldmljZS4gIFNlZSBSZWNlaXZlIEJ5dGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKK1MgQWRkciBXciBbQV0gRGF0YSBbQV0gUAorCitGdW5jdGlvbmFsaXR5IGZsYWc6IEkyQ19GVU5DX1NNQlVTX1dSSVRFX0JZVEUKKworCitTTUJ1cyBSZWFkIEJ5dGU6ICBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyByZWFkcyBhIHNpbmdsZSBieXRlIGZyb20gYSBkZXZpY2UsIGZyb20gYSBkZXNpZ25hdGVkIHJlZ2lzdGVyLgorVGhlIHJlZ2lzdGVyIGlzIHNwZWNpZmllZCB0aHJvdWdoIHRoZSBDb21tIGJ5dGUuCisKK1MgQWRkciBXciBbQV0gQ29tbSBbQV0gUyBBZGRyIFJkIFtBXSBbRGF0YV0gTkEgUAorCitGdW5jdGlvbmFsaXR5IGZsYWc6IEkyQ19GVU5DX1NNQlVTX1JFQURfQllURV9EQVRBCisKKworU01CdXMgUmVhZCBXb3JkOiAgaTJjX3NtYnVzX3JlYWRfd29yZF9kYXRhKCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgb3BlcmF0aW9uIGlzIHZlcnkgbGlrZSBSZWFkIEJ5dGU7IGFnYWluLCBkYXRhIGlzIHJlYWQgZnJvbSBhCitkZXZpY2UsIGZyb20gYSBkZXNpZ25hdGVkIHJlZ2lzdGVyIHRoYXQgaXMgc3BlY2lmaWVkIHRocm91Z2ggdGhlIENvbW0KK2J5dGUuIEJ1dCB0aGlzIHRpbWUsIHRoZSBkYXRhIGlzIGEgY29tcGxldGUgd29yZCAoMTYgYml0cykuCisKK1MgQWRkciBXciBbQV0gQ29tbSBbQV0gUyBBZGRyIFJkIFtBXSBbRGF0YUxvd10gQSBbRGF0YUhpZ2hdIE5BIFAKKworRnVuY3Rpb25hbGl0eSBmbGFnOiBJMkNfRlVOQ19TTUJVU19SRUFEX1dPUkRfREFUQQorCitOb3RlIHRoZSBjb252ZW5pZW5jZSBmdW5jdGlvbiBpMmNfc21idXNfcmVhZF93b3JkX3N3YXBwZWQgaXMKK2F2YWlsYWJsZSBmb3IgcmVhZHMgd2hlcmUgdGhlIHR3byBkYXRhIGJ5dGVzIGFyZSB0aGUgb3RoZXIgd2F5Cithcm91bmQgKG5vdCBTTUJ1cyBjb21wbGlhbnQsIGJ1dCB2ZXJ5IHBvcHVsYXIuKQorCisKK1NNQnVzIFdyaXRlIEJ5dGU6ICBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyB3cml0ZXMgYSBzaW5nbGUgYnl0ZSB0byBhIGRldmljZSwgdG8gYSBkZXNpZ25hdGVkIHJlZ2lzdGVyLiBUaGUKK3JlZ2lzdGVyIGlzIHNwZWNpZmllZCB0aHJvdWdoIHRoZSBDb21tIGJ5dGUuIFRoaXMgaXMgdGhlIG9wcG9zaXRlIG9mCit0aGUgUmVhZCBCeXRlIG9wZXJhdGlvbi4KKworUyBBZGRyIFdyIFtBXSBDb21tIFtBXSBEYXRhIFtBXSBQCisKK0Z1bmN0aW9uYWxpdHkgZmxhZzogSTJDX0ZVTkNfU01CVVNfV1JJVEVfQllURV9EQVRBCisKKworU01CdXMgV3JpdGUgV29yZDogIGkyY19zbWJ1c193cml0ZV93b3JkX2RhdGEoKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGlzIHRoZSBvcHBvc2l0ZSBvZiB0aGUgUmVhZCBXb3JkIG9wZXJhdGlvbi4gMTYgYml0cworb2YgZGF0YSBpcyB3cml0dGVuIHRvIGEgZGV2aWNlLCB0byB0aGUgZGVzaWduYXRlZCByZWdpc3RlciB0aGF0IGlzCitzcGVjaWZpZWQgdGhyb3VnaCB0aGUgQ29tbSBieXRlLiAKKworUyBBZGRyIFdyIFtBXSBDb21tIFtBXSBEYXRhTG93IFtBXSBEYXRhSGlnaCBbQV0gUAorCitGdW5jdGlvbmFsaXR5IGZsYWc6IEkyQ19GVU5DX1NNQlVTX1dSSVRFX1dPUkRfREFUQQorCitOb3RlIHRoZSBjb252ZW5pZW5jZSBmdW5jdGlvbiBpMmNfc21idXNfd3JpdGVfd29yZF9zd2FwcGVkIGlzCithdmFpbGFibGUgZm9yIHdyaXRlcyB3aGVyZSB0aGUgdHdvIGRhdGEgYnl0ZXMgYXJlIHRoZSBvdGhlciB3YXkKK2Fyb3VuZCAobm90IFNNQnVzIGNvbXBsaWFudCwgYnV0IHZlcnkgcG9wdWxhci4pCisKKworU01CdXMgUHJvY2VzcyBDYWxsOgorPT09PT09PT09PT09PT09PT09PQorCitUaGlzIGNvbW1hbmQgc2VsZWN0cyBhIGRldmljZSByZWdpc3RlciAodGhyb3VnaCB0aGUgQ29tbSBieXRlKSwgc2VuZHMKKzE2IGJpdHMgb2YgZGF0YSB0byBpdCwgYW5kIHJlYWRzIDE2IGJpdHMgb2YgZGF0YSBpbiByZXR1cm4uCisKK1MgQWRkciBXciBbQV0gQ29tbSBbQV0gRGF0YUxvdyBbQV0gRGF0YUhpZ2ggW0FdIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTIEFkZHIgUmQgW0FdIFtEYXRhTG93XSBBIFtEYXRhSGlnaF0gTkEgUAorCitGdW5jdGlvbmFsaXR5IGZsYWc6IEkyQ19GVU5DX1NNQlVTX1BST0NfQ0FMTAorCisKK1NNQnVzIEJsb2NrIFJlYWQ6ICBpMmNfc21idXNfcmVhZF9ibG9ja19kYXRhKCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBjb21tYW5kIHJlYWRzIGEgYmxvY2sgb2YgdXAgdG8gMzIgYnl0ZXMgZnJvbSBhIGRldmljZSwgZnJvbSBhIAorZGVzaWduYXRlZCByZWdpc3RlciB0aGF0IGlzIHNwZWNpZmllZCB0aHJvdWdoIHRoZSBDb21tIGJ5dGUuIFRoZSBhbW91bnQKK29mIGRhdGEgaXMgc3BlY2lmaWVkIGJ5IHRoZSBkZXZpY2UgaW4gdGhlIENvdW50IGJ5dGUuCisKK1MgQWRkciBXciBbQV0gQ29tbSBbQV0gCisgICAgICAgICAgIFMgQWRkciBSZCBbQV0gW0NvdW50XSBBIFtEYXRhXSBBIFtEYXRhXSBBIC4uLiBBIFtEYXRhXSBOQSBQCisKK0Z1bmN0aW9uYWxpdHkgZmxhZzogSTJDX0ZVTkNfU01CVVNfUkVBRF9CTE9DS19EQVRBCisKKworU01CdXMgQmxvY2sgV3JpdGU6ICBpMmNfc21idXNfd3JpdGVfYmxvY2tfZGF0YSgpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIG9wcG9zaXRlIG9mIHRoZSBCbG9jayBSZWFkIGNvbW1hbmQsIHRoaXMgd3JpdGVzIHVwIHRvIDMyIGJ5dGVzIHRvIAorYSBkZXZpY2UsIHRvIGEgZGVzaWduYXRlZCByZWdpc3RlciB0aGF0IGlzIHNwZWNpZmllZCB0aHJvdWdoIHRoZQorQ29tbSBieXRlLiBUaGUgYW1vdW50IG9mIGRhdGEgaXMgc3BlY2lmaWVkIGluIHRoZSBDb3VudCBieXRlLgorCitTIEFkZHIgV3IgW0FdIENvbW0gW0FdIENvdW50IFtBXSBEYXRhIFtBXSBEYXRhIFtBXSAuLi4gW0FdIERhdGEgW0FdIFAKKworRnVuY3Rpb25hbGl0eSBmbGFnOiBJMkNfRlVOQ19TTUJVU19XUklURV9CTE9DS19EQVRBCisKKworU01CdXMgQmxvY2sgV3JpdGUgLSBCbG9jayBSZWFkIFByb2Nlc3MgQ2FsbAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitTTUJ1cyBCbG9jayBXcml0ZSAtIEJsb2NrIFJlYWQgUHJvY2VzcyBDYWxsIHdhcyBpbnRyb2R1Y2VkIGluCitSZXZpc2lvbiAyLjAgb2YgdGhlIHNwZWNpZmljYXRpb24uCisKK1RoaXMgY29tbWFuZCBzZWxlY3RzIGEgZGV2aWNlIHJlZ2lzdGVyICh0aHJvdWdoIHRoZSBDb21tIGJ5dGUpLCBzZW5kcworMSB0byAzMSBieXRlcyBvZiBkYXRhIHRvIGl0LCBhbmQgcmVhZHMgMSB0byAzMSBieXRlcyBvZiBkYXRhIGluIHJldHVybi4KKworUyBBZGRyIFdyIFtBXSBDb21tIFtBXSBDb3VudCBbQV0gRGF0YSBbQV0gLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMgQWRkciBSZCBbQV0gW0NvdW50XSBBIFtEYXRhXSAuLi4gQSBQCisKK0Z1bmN0aW9uYWxpdHkgZmxhZzogSTJDX0ZVTkNfU01CVVNfQkxPQ0tfUFJPQ19DQUxMCisKKworU01CdXMgSG9zdCBOb3RpZnkKKz09PT09PT09PT09PT09PT09CisKK1RoaXMgY29tbWFuZCBpcyBzZW50IGZyb20gYSBTTUJ1cyBkZXZpY2UgYWN0aW5nIGFzIGEgbWFzdGVyIHRvIHRoZQorU01CdXMgaG9zdCBhY3RpbmcgYXMgYSBzbGF2ZS4KK0l0IGlzIHRoZSBzYW1lIGZvcm0gYXMgV3JpdGUgV29yZCwgd2l0aCB0aGUgY29tbWFuZCBjb2RlIHJlcGxhY2VkIGJ5IHRoZQorYWxlcnRpbmcgZGV2aWNlJ3MgYWRkcmVzcy4KKworW1NdIFtIb3N0QWRkcl0gW1dyXSBBIFtEZXZBZGRyXSBBIFtEYXRhTG93XSBBIFtEYXRhSGlnaF0gQSBbUF0KKworCitQYWNrZXQgRXJyb3IgQ2hlY2tpbmcgKFBFQykKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQYWNrZXQgRXJyb3IgQ2hlY2tpbmcgd2FzIGludHJvZHVjZWQgaW4gUmV2aXNpb24gMS4xIG9mIHRoZSBzcGVjaWZpY2F0aW9uLgorCitQRUMgYWRkcyBhIENSQy04IGVycm9yLWNoZWNraW5nIGJ5dGUgdG8gdHJhbnNmZXJzIHVzaW5nIGl0LCBpbW1lZGlhdGVseQorYmVmb3JlIHRoZSB0ZXJtaW5hdGluZyBTVE9QLgorCisKK0FkZHJlc3MgUmVzb2x1dGlvbiBQcm90b2NvbCAoQVJQKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBBZGRyZXNzIFJlc29sdXRpb24gUHJvdG9jb2wgd2FzIGludHJvZHVjZWQgaW4gUmV2aXNpb24gMi4wIG9mCit0aGUgc3BlY2lmaWNhdGlvbi4gSXQgaXMgYSBoaWdoZXItbGF5ZXIgcHJvdG9jb2wgd2hpY2ggdXNlcyB0aGUKK21lc3NhZ2VzIGFib3ZlLgorCitBUlAgYWRkcyBkZXZpY2UgZW51bWVyYXRpb24gYW5kIGR5bmFtaWMgYWRkcmVzcyBhc3NpZ25tZW50IHRvCit0aGUgcHJvdG9jb2wuIEFsbCBBUlAgY29tbXVuaWNhdGlvbnMgdXNlIHNsYXZlIGFkZHJlc3MgMHg2MSBhbmQKK3JlcXVpcmUgUEVDIGNoZWNrc3Vtcy4KKworCitTTUJ1cyBBbGVydAorPT09PT09PT09PT0KKworU01CdXMgQWxlcnQgd2FzIGludHJvZHVjZWQgaW4gUmV2aXNpb24gMS4wIG9mIHRoZSBzcGVjaWZpY2F0aW9uLgorCitUaGUgU01CdXMgYWxlcnQgcHJvdG9jb2wgYWxsb3dzIHNldmVyYWwgU01CdXMgc2xhdmUgZGV2aWNlcyB0byBzaGFyZSBhCitzaW5nbGUgaW50ZXJydXB0IHBpbiBvbiB0aGUgU01CdXMgbWFzdGVyLCB3aGlsZSBzdGlsbCBhbGxvd2luZyB0aGUgbWFzdGVyCit0byBrbm93IHdoaWNoIHNsYXZlIHRyaWdnZXJlZCB0aGUgaW50ZXJydXB0LgorCitUaGlzIGlzIGltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgd2F5IGluIHRoZSBMaW51eCBrZXJuZWw6CisqIEkyQyBidXMgZHJpdmVycyB3aGljaCBzdXBwb3J0IFNNQnVzIGFsZXJ0IHNob3VsZCBjYWxsCisgIGkyY19zZXR1cF9zbWJ1c19hbGVydCgpIHRvIHNldHVwIFNNQnVzIGFsZXJ0IHN1cHBvcnQuCisqIEkyQyBkcml2ZXJzIGZvciBkZXZpY2VzIHdoaWNoIGNhbiB0cmlnZ2VyIFNNQnVzIGFsZXJ0cyBzaG91bGQgaW1wbGVtZW50CisgIHRoZSBvcHRpb25hbCBhbGVydCgpIGNhbGxiYWNrLgorCisKK0kyQyBCbG9jayBUcmFuc2FjdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGZvbGxvd2luZyBJMkMgYmxvY2sgdHJhbnNhY3Rpb25zIGFyZSBzdXBwb3J0ZWQgYnkgdGhlCitTTUJ1cyBsYXllciBhbmQgYXJlIGRlc2NyaWJlZCBoZXJlIGZvciBjb21wbGV0ZW5lc3MuCitUaGV5IGFyZSAqTk9UKiBkZWZpbmVkIGJ5IHRoZSBTTUJ1cyBzcGVjaWZpY2F0aW9uLgorCitJMkMgYmxvY2sgdHJhbnNhY3Rpb25zIGRvIG5vdCBsaW1pdCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRyYW5zZmVycmVkCitidXQgdGhlIFNNQnVzIGxheWVyIHBsYWNlcyBhIGxpbWl0IG9mIDMyIGJ5dGVzLgorCisKK0kyQyBCbG9jayBSZWFkOiAgaTJjX3NtYnVzX3JlYWRfaTJjX2Jsb2NrX2RhdGEoKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgY29tbWFuZCByZWFkcyBhIGJsb2NrIG9mIGJ5dGVzIGZyb20gYSBkZXZpY2UsIGZyb20gYSAKK2Rlc2lnbmF0ZWQgcmVnaXN0ZXIgdGhhdCBpcyBzcGVjaWZpZWQgdGhyb3VnaCB0aGUgQ29tbSBieXRlLgorCitTIEFkZHIgV3IgW0FdIENvbW0gW0FdIAorICAgICAgICAgICBTIEFkZHIgUmQgW0FdIFtEYXRhXSBBIFtEYXRhXSBBIC4uLiBBIFtEYXRhXSBOQSBQCisKK0Z1bmN0aW9uYWxpdHkgZmxhZzogSTJDX0ZVTkNfU01CVVNfUkVBRF9JMkNfQkxPQ0sKKworCitJMkMgQmxvY2sgV3JpdGU6ICBpMmNfc21idXNfd3JpdGVfaTJjX2Jsb2NrX2RhdGEoKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIG9wcG9zaXRlIG9mIHRoZSBCbG9jayBSZWFkIGNvbW1hbmQsIHRoaXMgd3JpdGVzIGJ5dGVzIHRvIAorYSBkZXZpY2UsIHRvIGEgZGVzaWduYXRlZCByZWdpc3RlciB0aGF0IGlzIHNwZWNpZmllZCB0aHJvdWdoIHRoZQorQ29tbSBieXRlLiBOb3RlIHRoYXQgY29tbWFuZCBsZW5ndGhzIG9mIDAsIDIsIG9yIG1vcmUgYnl0ZXMgYXJlCitzdXBwb3J0ZWQgYXMgdGhleSBhcmUgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBkYXRhLgorCitTIEFkZHIgV3IgW0FdIENvbW0gW0FdIERhdGEgW0FdIERhdGEgW0FdIC4uLiBbQV0gRGF0YSBbQV0gUAorCitGdW5jdGlvbmFsaXR5IGZsYWc6IEkyQ19GVU5DX1NNQlVTX1dSSVRFX0kyQ19CTE9DSwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pMmMvc3VtbWFyeSBiL0RvY3VtZW50YXRpb24vaTJjL3N1bW1hcnkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA5NTQxYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaTJjL3N1bW1hcnkKQEAgLTAsMCArMSw0MyBAQAorSTJDIGFuZCBTTUJ1cworPT09PT09PT09PT09PQorCitJMkMgKHByb25vdW5jZTogSSBzcXVhcmVkIEMpIGlzIGEgcHJvdG9jb2wgZGV2ZWxvcGVkIGJ5IFBoaWxpcHMuIEl0IGlzIGEgCitzbG93IHR3by13aXJlIHByb3RvY29sICh2YXJpYWJsZSBzcGVlZCwgdXAgdG8gNDAwIGtIeiksIHdpdGggYSBoaWdoIHNwZWVkCitleHRlbnNpb24gKDMuNCBNSHopLiAgSXQgcHJvdmlkZXMgYW4gaW5leHBlbnNpdmUgYnVzIGZvciBjb25uZWN0aW5nIG1hbnkKK3R5cGVzIG9mIGRldmljZXMgd2l0aCBpbmZyZXF1ZW50IG9yIGxvdyBiYW5kd2lkdGggY29tbXVuaWNhdGlvbnMgbmVlZHMuCitJMkMgaXMgd2lkZWx5IHVzZWQgd2l0aCBlbWJlZGRlZCBzeXN0ZW1zLiAgU29tZSBzeXN0ZW1zIHVzZSB2YXJpYW50cyB0aGF0Citkb24ndCBtZWV0IGJyYW5kaW5nIHJlcXVpcmVtZW50cywgYW5kIHNvIGFyZSBub3QgYWR2ZXJ0aXNlZCBhcyBiZWluZyBJMkMuCisKK1NNQnVzIChTeXN0ZW0gTWFuYWdlbWVudCBCdXMpIGlzIGJhc2VkIG9uIHRoZSBJMkMgcHJvdG9jb2wsIGFuZCBpcyBtb3N0bHkKK2Egc3Vic2V0IG9mIEkyQyBwcm90b2NvbHMgYW5kIHNpZ25hbGluZy4gIE1hbnkgSTJDIGRldmljZXMgd2lsbCB3b3JrIG9uIGFuCitTTUJ1cywgYnV0IHNvbWUgU01CdXMgcHJvdG9jb2xzIGFkZCBzZW1hbnRpY3MgYmV5b25kIHdoYXQgaXMgcmVxdWlyZWQgdG8KK2FjaGlldmUgSTJDIGJyYW5kaW5nLiAgTW9kZXJuIFBDIG1haW5ib2FyZHMgcmVseSBvbiBTTUJ1cy4gIFRoZSBtb3N0IGNvbW1vbgorZGV2aWNlcyBjb25uZWN0ZWQgdGhyb3VnaCBTTUJ1cyBhcmUgUkFNIG1vZHVsZXMgY29uZmlndXJlZCB1c2luZyBJMkMgRUVQUk9NcywKK2FuZCBoYXJkd2FyZSBtb25pdG9yaW5nIGNoaXBzLgorCitCZWNhdXNlIHRoZSBTTUJ1cyBpcyBtb3N0bHkgYSBzdWJzZXQgb2YgdGhlIGdlbmVyYWxpemVkIEkyQyBidXMsIHdlIGNhbgordXNlIGl0cyBwcm90b2NvbHMgb24gbWFueSBJMkMgc3lzdGVtcy4gIEhvd2V2ZXIsIHRoZXJlIGFyZSBzeXN0ZW1zIHRoYXQgZG9uJ3QKK21lZXQgYm90aCBTTUJ1cyBhbmQgSTJDIGVsZWN0cmljYWwgY29uc3RyYWludHM7IGFuZCBvdGhlcnMgd2hpY2ggY2FuJ3QKK2ltcGxlbWVudCBhbGwgdGhlIGNvbW1vbiBTTUJ1cyBwcm90b2NvbCBzZW1hbnRpY3Mgb3IgbWVzc2FnZXMuCisKKworVGVybWlub2xvZ3kKKz09PT09PT09PT09CisKK1doZW4gd2UgdGFsayBhYm91dCBJMkMsIHdlIHVzZSB0aGUgZm9sbG93aW5nIHRlcm1zOgorICBCdXMgICAgLT4gQWxnb3JpdGhtCisgICAgICAgICAgICBBZGFwdGVyCisgIERldmljZSAtPiBEcml2ZXIKKyAgICAgICAgICAgIENsaWVudAorCitBbiBBbGdvcml0aG0gZHJpdmVyIGNvbnRhaW5zIGdlbmVyYWwgY29kZSB0aGF0IGNhbiBiZSB1c2VkIGZvciBhIHdob2xlIGNsYXNzCitvZiBJMkMgYWRhcHRlcnMuIEVhY2ggc3BlY2lmaWMgYWRhcHRlciBkcml2ZXIgZWl0aGVyIGRlcGVuZHMgb24gb25lIGFsZ29yaXRobQorZHJpdmVyLCBvciBpbmNsdWRlcyBpdHMgb3duIGltcGxlbWVudGF0aW9uLgorCitBIERyaXZlciBkcml2ZXIgKHllcywgdGhpcyBzb3VuZHMgcmlkaWN1bG91cywgc29ycnkpIGNvbnRhaW5zIHRoZSBnZW5lcmFsCitjb2RlIHRvIGFjY2VzcyBzb21lIHR5cGUgb2YgZGV2aWNlLiBFYWNoIGRldGVjdGVkIGRldmljZSBnZXRzIGl0cyBvd24KK2RhdGEgaW4gdGhlIENsaWVudCBzdHJ1Y3R1cmUuIFVzdWFsbHksIERyaXZlciBhbmQgQ2xpZW50IGFyZSBtb3JlIGNsb3NlbHkKK2ludGVncmF0ZWQgdGhhbiBBbGdvcml0aG0gYW5kIEFkYXB0ZXIuCisKK0ZvciBhIGdpdmVuIGNvbmZpZ3VyYXRpb24sIHlvdSB3aWxsIG5lZWQgYSBkcml2ZXIgZm9yIHlvdXIgSTJDIGJ1cywgYW5kCitkcml2ZXJzIGZvciB5b3VyIEkyQyBkZXZpY2VzICh1c3VhbGx5IG9uZSBkcml2ZXIgZm9yIGVhY2ggZGV2aWNlKS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaTJjL3Rlbi1iaXQtYWRkcmVzc2VzIGIvRG9jdW1lbnRhdGlvbi9pMmMvdGVuLWJpdC1hZGRyZXNzZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IyZDExZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaTJjL3Rlbi1iaXQtYWRkcmVzc2VzCkBAIC0wLDAgKzEsMjggQEAKK1RoZSBJMkMgcHJvdG9jb2wga25vd3MgYWJvdXQgdHdvIGtpbmRzIG9mIGRldmljZSBhZGRyZXNzZXM6IG5vcm1hbCA3IGJpdAorYWRkcmVzc2VzLCBhbmQgYW4gZXh0ZW5kZWQgc2V0IG9mIDEwIGJpdCBhZGRyZXNzZXMuIFRoZSBzZXRzIG9mIGFkZHJlc3NlcworZG8gbm90IGludGVyc2VjdDogdGhlIDcgYml0IGFkZHJlc3MgMHgxMCBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIDEwIGJpdAorYWRkcmVzcyAweDEwICh0aG91Z2ggYSBzaW5nbGUgZGV2aWNlIGNvdWxkIHJlc3BvbmQgdG8gYm90aCBvZiB0aGVtKS4KK1RvIGF2b2lkIGFtYmlndWl0eSwgdGhlIHVzZXIgc2VlcyAxMCBiaXQgYWRkcmVzc2VzIG1hcHBlZCB0byBhIGRpZmZlcmVudAorYWRkcmVzcyBzcGFjZSwgbmFtZWx5IDB4YTAwMC0weGEzZmYuIFRoZSBsZWFkaW5nIDB4YSAoPSAxMCkgcmVwcmVzZW50cyB0aGUKKzEwIGJpdCBtb2RlLiBUaGlzIGlzIHVzZWQgZm9yIGNyZWF0aW5nIGRldmljZSBuYW1lcyBpbiBzeXNmcy4gSXQgaXMgYWxzbworbmVlZGVkIHdoZW4gaW5zdGFudGlhdGluZyAxMCBiaXQgZGV2aWNlcyB2aWEgdGhlIG5ld19kZXZpY2UgZmlsZSBpbiBzeXNmcy4KKworSTJDIG1lc3NhZ2VzIHRvIGFuZCBmcm9tIDEwLWJpdCBhZGRyZXNzIGRldmljZXMgaGF2ZSBhIGRpZmZlcmVudCBmb3JtYXQuCitTZWUgdGhlIEkyQyBzcGVjaWZpY2F0aW9uIGZvciB0aGUgZGV0YWlscy4KKworVGhlIGN1cnJlbnQgMTAgYml0IGFkZHJlc3Mgc3VwcG9ydCBpcyBtaW5pbWFsLiBJdCBzaG91bGQgd29yaywgaG93ZXZlcgoreW91IGNhbiBleHBlY3Qgc29tZSBwcm9ibGVtcyBhbG9uZyB0aGUgd2F5OgorKiBOb3QgYWxsIGJ1cyBkcml2ZXJzIHN1cHBvcnQgMTAtYml0IGFkZHJlc3Nlcy4gU29tZSBkb24ndCBiZWNhdXNlIHRoZQorICBoYXJkd2FyZSBkb2Vzbid0IHN1cHBvcnQgdGhlbSAoU01CdXMgZG9lc24ndCByZXF1aXJlIDEwLWJpdCBhZGRyZXNzCisgIHN1cHBvcnQgZm9yIGV4YW1wbGUpLCBzb21lIGRvbid0IGJlY2F1c2Ugbm9ib2R5IGJvdGhlcmVkIGFkZGluZyB0aGUKKyAgY29kZSAob3IgaXQncyB0aGVyZSBidXQgbm90IHdvcmtpbmcgcHJvcGVybHkuKSBTb2Z0d2FyZSBpbXBsZW1lbnRhdGlvbgorICAoaTJjLWFsZ28tYml0KSBpcyBrbm93biB0byB3b3JrLgorKiBTb21lIG9wdGlvbmFsIGZlYXR1cmVzIGRvIG5vdCBzdXBwb3J0IDEwLWJpdCBhZGRyZXNzZXMuIFRoaXMgaXMgdGhlCisgIGNhc2Ugb2YgYXV0b21hdGljIGRldGVjdGlvbiBhbmQgaW5zdGFudGlhdGlvbiBvZiBkZXZpY2VzIGJ5IHRoZWlyLAorICBkcml2ZXJzLCBmb3IgZXhhbXBsZS4KKyogTWFueSB1c2VyLXNwYWNlIHBhY2thZ2VzIChmb3IgZXhhbXBsZSBpMmMtdG9vbHMpIGxhY2sgc3VwcG9ydCBmb3IKKyAgMTAtYml0IGFkZHJlc3Nlcy4KKworTm90ZSB0aGF0IDEwLWJpdCBhZGRyZXNzIGRldmljZXMgYXJlIHN0aWxsIHByZXR0eSByYXJlLCBzbyB0aGUgbGltaXRhdGlvbnMKK2xpc3RlZCBhYm92ZSBjb3VsZCBzdGF5IGZvciBhIGxvbmcgdGltZSwgbWF5YmUgZXZlbiBmb3JldmVyIGlmIG5vYm9keQorbmVlZHMgdGhlbSB0byBiZSBmaXhlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaTJjL3VwZ3JhZGluZy1jbGllbnRzIGIvRG9jdW1lbnRhdGlvbi9pMmMvdXBncmFkaW5nLWNsaWVudHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NiYTNmZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaTJjL3VwZ3JhZGluZy1jbGllbnRzCkBAIC0wLDAgKzEsMjc5IEBACitVcGdyYWRpbmcgSTJDIERyaXZlcnMgdG8gdGhlIG5ldyAyLjYgRHJpdmVyIE1vZGVsCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0JlbiBEb29rcyA8YmVuLWxpbnV4QGZsdWZmLm9yZz4KKworSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0KKworVGhpcyBndWlkZSBvdXRsaW5lcyBob3cgdG8gYWx0ZXIgZXhpc3RpbmcgTGludXggMi42IGNsaWVudCBkcml2ZXJzIGZyb20KK3RoZSBvbGQgdG8gdGhlIG5ldyBuZXcgYmluZGluZyBtZXRob2RzLgorCisKK0V4YW1wbGUgb2xkLXN0eWxlIGRyaXZlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworc3RydWN0IGV4YW1wbGVfc3RhdGUgeworCXN0cnVjdCBpMmNfY2xpZW50CWNsaWVudDsKKwkuLi4uCit9OworCitzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgZXhhbXBsZV9kcml2ZXI7CisKK3N0YXRpYyB1bnNpZ25lZCBzaG9ydCBpZ25vcmVbXSA9IHsgSTJDX0NMSUVOVF9FTkQgfTsKK3N0YXRpYyB1bnNpZ25lZCBzaG9ydCBub3JtYWxfYWRkcltdID0geyBPVVJfQUREUiwgSTJDX0NMSUVOVF9FTkQgfTsKKworSTJDX0NMSUVOVF9JTlNNT0Q7CisKK3N0YXRpYyBpbnQgZXhhbXBsZV9hdHRhY2goc3RydWN0IGkyY19hZGFwdGVyICphZGFwLCBpbnQgYWRkciwgaW50IGtpbmQpCit7CisJc3RydWN0IGV4YW1wbGVfc3RhdGUgKnN0YXRlOworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhZGFwLT5kZXY7ICAvKiB0byB1c2UgZm9yIGRldl8gcmVwb3J0cyAqLworCWludCByZXQ7CisKKwlzdGF0ZSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBleGFtcGxlX3N0YXRlKSwgR0ZQX0tFUk5FTCk7CisJaWYgKHN0YXRlID09IE5VTEwpIHsKKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gY3JlYXRlIG91ciBzdGF0ZVxuIik7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCWV4YW1wbGUtPmNsaWVudC5hZGRyICAgID0gYWRkcjsKKwlleGFtcGxlLT5jbGllbnQuZmxhZ3MgICA9IDA7CisJZXhhbXBsZS0+Y2xpZW50LmFkYXB0ZXIgPSBhZGFwOworCisJaTJjX3NldF9jbGllbnRkYXRhKCZzdGF0ZS0+aTJjX2NsaWVudCwgc3RhdGUpOworCXN0cmxjcHkoY2xpZW50LT5pMmNfY2xpZW50Lm5hbWUsICJleGFtcGxlIiwgSTJDX05BTUVfU0laRSk7CisKKwlyZXQgPSBpMmNfYXR0YWNoX2NsaWVudCgmc3RhdGUtPmkyY19jbGllbnQpOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGF0dGFjaCBjbGllbnRcbiIpOworCQlrZnJlZShzdGF0ZSk7CisJCXJldHVybiByZXQ7CisJfQorCisJZGV2ID0gJnN0YXRlLT5pMmNfY2xpZW50LmRldjsKKworCS8qIHJlc3Qgb2YgdGhlIGluaXRpYWxpc2F0aW9uIGdvZXMgaGVyZS4gKi8KKworCWRldl9pbmZvKGRldiwgImV4YW1wbGUgY2xpZW50IGNyZWF0ZWRcbiIpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZXhhbXBsZV9kZXRhY2goc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKK3sKKwlzdHJ1Y3QgZXhhbXBsZV9zdGF0ZSAqc3RhdGUgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKKworCWkyY19kZXRhY2hfY2xpZW50KGNsaWVudCk7CisJa2ZyZWUoc3RhdGUpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGV4YW1wbGVfYXR0YWNoX2FkYXB0ZXIoc3RydWN0IGkyY19hZGFwdGVyICphZGFwKQoreworCXJldHVybiBpMmNfcHJvYmUoYWRhcCwgJmFkZHJfZGF0YSwgZXhhbXBsZV9hdHRhY2gpOworfQorCitzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgZXhhbXBsZV9kcml2ZXIgPSB7CisgCS5kcml2ZXIJCT0geworCQkub3duZXIJCT0gVEhJU19NT0RVTEUsCisJCS5uYW1lCQk9ICJleGFtcGxlIiwKKwkJLnBtCQk9ICZleGFtcGxlX3BtX29wcywKKwl9LAorCS5hdHRhY2hfYWRhcHRlciA9IGV4YW1wbGVfYXR0YWNoX2FkYXB0ZXIsCisJLmRldGFjaF9jbGllbnQJPSBleGFtcGxlX2RldGFjaCwKK307CisKKworVXBkYXRpbmcgdGhlIGNsaWVudAorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbmV3IHN0eWxlIGJpbmRpbmcgbW9kZWwgd2lsbCBjaGVjayBhZ2FpbnN0IGEgbGlzdCBvZiBzdXBwb3J0ZWQKK2RldmljZXMgYW5kIHRoZWlyIGFzc29jaWF0ZWQgYWRkcmVzcyBzdXBwbGllZCBieSB0aGUgY29kZSByZWdpc3RlcmluZwordGhlIGJ1c3Nlcy4gVGhpcyBtZWFucyB0aGF0IHRoZSBkcml2ZXIgLmF0dGFjaF9hZGFwdGVyIGFuZAorLmRldGFjaF9jbGllbnQgbWV0aG9kcyBjYW4gYmUgcmVtb3ZlZCwgYWxvbmcgd2l0aCB0aGUgYWRkcl9kYXRhLAorYXMgZm9sbG93czoKKworLSBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgZXhhbXBsZV9kcml2ZXI7CisKKy0gc3RhdGljIHVuc2lnbmVkIHNob3J0IGlnbm9yZVtdID0geyBJMkNfQ0xJRU5UX0VORCB9OworLSBzdGF0aWMgdW5zaWduZWQgc2hvcnQgbm9ybWFsX2FkZHJbXSA9IHsgT1VSX0FERFIsIEkyQ19DTElFTlRfRU5EIH07CisKKy0gSTJDX0NMSUVOVF9JTlNNT0Q7CisKKy0gc3RhdGljIGludCBleGFtcGxlX2F0dGFjaF9hZGFwdGVyKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcCkKKy0geworLSAJcmV0dXJuIGkyY19wcm9iZShhZGFwLCAmYWRkcl9kYXRhLCBleGFtcGxlX2F0dGFjaCk7CistIH0KKworIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBleGFtcGxlX2RyaXZlciA9IHsKKy0JLmF0dGFjaF9hZGFwdGVyID0gZXhhbXBsZV9hdHRhY2hfYWRhcHRlciwKKy0JLmRldGFjaF9jbGllbnQJPSBleGFtcGxlX2RldGFjaCwKKyB9CisKK0FkZCB0aGUgcHJvYmUgYW5kIHJlbW92ZSBtZXRob2RzIHRvIHRoZSBpMmNfZHJpdmVyLCBhcyBzbzoKKworIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBleGFtcGxlX2RyaXZlciA9IHsKKysJLnByb2JlCQk9IGV4YW1wbGVfcHJvYmUsCisrCS5yZW1vdmUJCT0gZXhhbXBsZV9yZW1vdmUsCisgfQorCitDaGFuZ2UgdGhlIGV4YW1wbGVfYXR0YWNoIG1ldGhvZCB0byBhY2NlcHQgdGhlIG5ldyBwYXJhbWV0ZXJzCit3aGljaCBpbmNsdWRlIHRoZSBpMmNfY2xpZW50IHRoYXQgaXQgd2lsbCBiZSB3b3JraW5nIHdpdGg6CisKKy0gc3RhdGljIGludCBleGFtcGxlX2F0dGFjaChzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXAsIGludCBhZGRyLCBpbnQga2luZCkKKysgc3RhdGljIGludCBleGFtcGxlX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCisrCQkJICAgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQorCitDaGFuZ2UgdGhlIG5hbWUgb2YgZXhhbXBsZV9hdHRhY2ggdG8gZXhhbXBsZV9wcm9iZSB0byBhbGlnbiBpdCB3aXRoIHRoZQoraTJjX2RyaXZlciBlbnRyeSBuYW1lcy4gVGhlIHJlc3Qgb2YgdGhlIHByb2JlIHJvdXRpbmUgd2lsbCBub3cgbmVlZCB0byBiZQorY2hhbmdlZCBhcyB0aGUgaTJjX2NsaWVudCBoYXMgYWxyZWFkeSBiZWVuIHNldHVwIGZvciB1c2UuCisKK1RoZSBuZWNlc3NhcnkgY2xpZW50IGZpZWxkcyBoYXZlIGFscmVhZHkgYmVlbiBzZXR1cCBiZWZvcmUKK3RoZSBwcm9iZSBmdW5jdGlvbiBpcyBjYWxsZWQsIHNvIHRoZSBmb2xsb3dpbmcgY2xpZW50IHNldHVwCitjYW4gYmUgcmVtb3ZlZDoKKworLQlleGFtcGxlLT5jbGllbnQuYWRkciAgICA9IGFkZHI7CistCWV4YW1wbGUtPmNsaWVudC5mbGFncyAgID0gMDsKKy0JZXhhbXBsZS0+Y2xpZW50LmFkYXB0ZXIgPSBhZGFwOworLQorLQlzdHJsY3B5KGNsaWVudC0+aTJjX2NsaWVudC5uYW1lLCAiZXhhbXBsZSIsIEkyQ19OQU1FX1NJWkUpOworCitUaGUgaTJjX3NldF9jbGllbnRkYXRhIGlzIG5vdzoKKworLQlpMmNfc2V0X2NsaWVudGRhdGEoJnN0YXRlLT5jbGllbnQsIHN0YXRlKTsKKysJaTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgc3RhdGUpOworCitUaGUgY2FsbCB0byBpMmNfYXR0YWNoX2NsaWVudCBpcyBubyBsb25nZXIgbmVlZGVkLCBpZiB0aGUgcHJvYmUKK3JvdXRpbmUgZXhpdHMgc3VjY2Vzc2Z1bGx5LCB0aGVuIHRoZSBkcml2ZXIgd2lsbCBiZSBhdXRvbWF0aWNhbGx5CithdHRhY2hlZCBieSB0aGUgY29yZS4gQ2hhbmdlIHRoZSBwcm9iZSByb3V0aW5lIGFzIHNvOgorCistCXJldCA9IGkyY19hdHRhY2hfY2xpZW50KCZzdGF0ZS0+aTJjX2NsaWVudCk7CistCWlmIChyZXQgPCAwKSB7CistCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBhdHRhY2ggY2xpZW50XG4iKTsKKy0JCWtmcmVlKHN0YXRlKTsKKy0JCXJldHVybiByZXQ7CistCX0KKworCitSZW1vdmUgdGhlIHN0b3JhZ2Ugb2YgJ3N0cnVjdCBpMmNfY2xpZW50JyBmcm9tIHRoZSAnc3RydWN0IGV4YW1wbGVfc3RhdGUnCithcyB3ZSBhcmUgcHJvdmlkZWQgd2l0aCB0aGUgaTJjX2NsaWVudCBpbiBvdXIgZXhhbXBsZV9wcm9iZS4gSW5zdGVhZCB3ZQorc3RvcmUgYSBwb2ludGVyIHRvIGl0IGZvciB3aGVuIGl0IGlzIG5lZWRlZC4KKworc3RydWN0IGV4YW1wbGVfc3RhdGUgeworLQlzdHJ1Y3QgaTJjX2NsaWVudAljbGllbnQ7CisrCXN0cnVjdCBpMmNfY2xpZW50CSpjbGllbnQ7CisKK3RoZSBuZXcgaTJjIGNsaWVudCBhcyBzbzoKKworLQlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmYWRhcC0+ZGV2OyAgLyogdG8gdXNlIGZvciBkZXZfIHJlcG9ydHMgKi8KKysgCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZpMmNfY2xpZW50LT5kZXY7ICAvKiB0byB1c2UgZm9yIGRldl8gcmVwb3J0cyAqLworCitBbmQgcmVtb3ZlIHRoZSBjaGFuZ2UgYWZ0ZXIgb3VyIGNsaWVudCBpcyBhdHRhY2hlZCwgYXMgdGhlIGRyaXZlciBubworbG9uZ2VyIG5lZWRzIHRvIHJlZ2lzdGVyIGEgbmV3IGNsaWVudCBzdHJ1Y3R1cmUgd2l0aCB0aGUgY29yZToKKworLQlkZXYgPSAmc3RhdGUtPmkyY19jbGllbnQuZGV2OworCitJbiB0aGUgcHJvYmUgcm91dGluZSwgZW5zdXJlIHRoYXQgdGhlIG5ldyBzdGF0ZSBoYXMgdGhlIGNsaWVudCBzdG9yZWQKK2luIGl0OgorCitzdGF0aWMgaW50IGV4YW1wbGVfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyY19jbGllbnQsCisJCQkgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkKQoreworCXN0cnVjdCBleGFtcGxlX3N0YXRlICpzdGF0ZTsKKyAJc3RydWN0IGRldmljZSAqZGV2ID0gJmkyY19jbGllbnQtPmRldjsKKwlpbnQgcmV0OworCisJc3RhdGUgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgZXhhbXBsZV9zdGF0ZSksIEdGUF9LRVJORUwpOworCWlmIChzdGF0ZSA9PSBOVUxMKSB7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSBvdXIgc3RhdGVcbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKysJc3RhdGUtPmNsaWVudCA9IGkyY19jbGllbnQ7CisKK1VwZGF0ZSB0aGUgZGV0YWNoIG1ldGhvZCwgYnkgY2hhbmdpbmcgdGhlIG5hbWUgdG8gX3JlbW92ZSBhbmQKK3RvIGRlbGV0ZSB0aGUgaTJjX2RldGFjaF9jbGllbnQgY2FsbC4gSXQgaXMgcG9zc2libGUgdGhhdCB5b3UKK2NhbiBhbHNvIHJlbW92ZSB0aGUgcmV0IHZhcmlhYmxlIGFzIGl0IGlzIG5vdCBuZWVkZWQgZm9yIGFueQorb2YgdGhlIGNvcmUgZnVuY3Rpb25zLgorCistIHN0YXRpYyBpbnQgZXhhbXBsZV9kZXRhY2goc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKKysgc3RhdGljIGludCBleGFtcGxlX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQoreworCXN0cnVjdCBleGFtcGxlX3N0YXRlICpzdGF0ZSA9IGkyY19nZXRfY2xpZW50ZGF0YShjbGllbnQpOworCistCWkyY19kZXRhY2hfY2xpZW50KGNsaWVudCk7CisKK0FuZCBmaW5hbGx5IGVuc3VyZSB0aGF0IHdlIGhhdmUgdGhlIGNvcnJlY3QgSUQgdGFibGUgZm9yIHRoZSBpMmMtY29yZQorYW5kIG90aGVyIHV0aWxpdGllczoKKworKyBzdHJ1Y3QgaTJjX2RldmljZV9pZCBleGFtcGxlX2lkdGFibGVbXSA9IHsKKysgICAgICAgeyAiZXhhbXBsZSIsIDAgfSwKKysgICAgICAgeyB9CisrfTsKKysKKytNT0RVTEVfREVWSUNFX1RBQkxFKGkyYywgZXhhbXBsZV9pZHRhYmxlKTsKKworc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGV4YW1wbGVfZHJpdmVyID0geworIAkuZHJpdmVyCQk9IHsKKwkJLm93bmVyCQk9IFRISVNfTU9EVUxFLAorCQkubmFtZQkJPSAiZXhhbXBsZSIsCisJfSwKKysJLmlkX3RhYmxlCT0gZXhhbXBsZV9pZHMsCisKKworT3VyIGRyaXZlciBzaG91bGQgbm93IGxvb2sgbGlrZSB0aGlzOgorCitzdHJ1Y3QgZXhhbXBsZV9zdGF0ZSB7CisJc3RydWN0IGkyY19jbGllbnQJKmNsaWVudDsKKwkuLi4uCit9OworCitzdGF0aWMgaW50IGV4YW1wbGVfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKKwkJICAgICAJIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppZCkKK3sKKwlzdHJ1Y3QgZXhhbXBsZV9zdGF0ZSAqc3RhdGU7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJmNsaWVudC0+ZGV2OworCisJc3RhdGUgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgZXhhbXBsZV9zdGF0ZSksIEdGUF9LRVJORUwpOworCWlmIChzdGF0ZSA9PSBOVUxMKSB7CisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGNyZWF0ZSBvdXIgc3RhdGVcbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlzdGF0ZS0+Y2xpZW50ID0gY2xpZW50OworCWkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIHN0YXRlKTsKKworCS8qIHJlc3Qgb2YgdGhlIGluaXRpYWxpc2F0aW9uIGdvZXMgaGVyZS4gKi8KKworCWRldl9pbmZvKGRldiwgImV4YW1wbGUgY2xpZW50IGNyZWF0ZWRcbiIpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZXhhbXBsZV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKK3sKKwlzdHJ1Y3QgZXhhbXBsZV9zdGF0ZSAqc3RhdGUgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKKworCWtmcmVlKHN0YXRlKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBpMmNfZGV2aWNlX2lkIGV4YW1wbGVfaWR0YWJsZVtdID0geworCXsgImV4YW1wbGUiLCAwIH0sCisJeyB9Cit9OworCitNT0RVTEVfREVWSUNFX1RBQkxFKGkyYywgZXhhbXBsZV9pZHRhYmxlKTsKKworc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGV4YW1wbGVfZHJpdmVyID0geworIAkuZHJpdmVyCQk9IHsKKwkJLm93bmVyCQk9IFRISVNfTU9EVUxFLAorCQkubmFtZQkJPSAiZXhhbXBsZSIsCisJCS5wbQkJPSAmZXhhbXBsZV9wbV9vcHMsCisJfSwKKwkuaWRfdGFibGUJPSBleGFtcGxlX2lkdGFibGUsCisJLnByb2JlCQk9IGV4YW1wbGVfcHJvYmUsCisJLnJlbW92ZQkJPSBleGFtcGxlX3JlbW92ZSwKK307CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2kyYy93cml0aW5nLWNsaWVudHMgYi9Eb2N1bWVudGF0aW9uL2kyYy93cml0aW5nLWNsaWVudHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc1NWIxNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaTJjL3dyaXRpbmctY2xpZW50cwpAQCAtMCwwICsxLDQwMyBAQAorVGhpcyBpcyBhIHNtYWxsIGd1aWRlIGZvciB0aG9zZSB3aG8gd2FudCB0byB3cml0ZSBrZXJuZWwgZHJpdmVycyBmb3IgSTJDCitvciBTTUJ1cyBkZXZpY2VzLCB1c2luZyBMaW51eCBhcyB0aGUgcHJvdG9jb2wgaG9zdC9tYXN0ZXIgKG5vdCBzbGF2ZSkuCisKK1RvIHNldCB1cCBhIGRyaXZlciwgeW91IG5lZWQgdG8gZG8gc2V2ZXJhbCB0aGluZ3MuIFNvbWUgYXJlIG9wdGlvbmFsLCBhbmQKK3NvbWUgdGhpbmdzIGNhbiBiZSBkb25lIHNsaWdodGx5IG9yIGNvbXBsZXRlbHkgZGlmZmVyZW50LiBVc2UgdGhpcyBhcyBhCitndWlkZSwgbm90IGFzIGEgcnVsZSBib29rIQorCisKK0dlbmVyYWwgcmVtYXJrcworPT09PT09PT09PT09PT09CisKK1RyeSB0byBrZWVwIHRoZSBrZXJuZWwgbmFtZXNwYWNlIGFzIGNsZWFuIGFzIHBvc3NpYmxlLiBUaGUgYmVzdCB3YXkgdG8KK2RvIHRoaXMgaXMgdG8gdXNlIGEgdW5pcXVlIHByZWZpeCBmb3IgYWxsIGdsb2JhbCBzeW1ib2xzLiBUaGlzIGlzCitlc3BlY2lhbGx5IGltcG9ydGFudCBmb3IgZXhwb3J0ZWQgc3ltYm9scywgYnV0IGl0IGlzIGEgZ29vZCBpZGVhIHRvIGRvCitpdCBmb3Igbm9uLWV4cG9ydGVkIHN5bWJvbHMgdG9vLiBXZSB3aWxsIHVzZSB0aGUgcHJlZml4IGBmb29fJyBpbiB0aGlzCit0dXRvcmlhbC4KKworCitUaGUgZHJpdmVyIHN0cnVjdHVyZQorPT09PT09PT09PT09PT09PT09PT0KKworVXN1YWxseSwgeW91IHdpbGwgaW1wbGVtZW50IGEgc2luZ2xlIGRyaXZlciBzdHJ1Y3R1cmUsIGFuZCBpbnN0YW50aWF0ZQorYWxsIGNsaWVudHMgZnJvbSBpdC4gUmVtZW1iZXIsIGEgZHJpdmVyIHN0cnVjdHVyZSBjb250YWlucyBnZW5lcmFsIGFjY2Vzcworcm91dGluZXMsIGFuZCBzaG91bGQgYmUgemVyby1pbml0aWFsaXplZCBleGNlcHQgZm9yIGZpZWxkcyB3aXRoIGRhdGEgeW91Citwcm92aWRlLiAgQSBjbGllbnQgc3RydWN0dXJlIGhvbGRzIGRldmljZS1zcGVjaWZpYyBpbmZvcm1hdGlvbiBsaWtlIHRoZQorZHJpdmVyIG1vZGVsIGRldmljZSBub2RlLCBhbmQgaXRzIEkyQyBhZGRyZXNzLgorCitzdGF0aWMgc3RydWN0IGkyY19kZXZpY2VfaWQgZm9vX2lkdGFibGVbXSA9IHsKKwl7ICJmb28iLCBteV9pZF9mb3JfZm9vIH0sCisJeyAiYmFyIiwgbXlfaWRfZm9yX2JhciB9LAorCXsgfQorfTsKKworTU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIGZvb19pZHRhYmxlKTsKKworc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGZvb19kcml2ZXIgPSB7CisJLmRyaXZlciA9IHsKKwkJLm5hbWUJPSAiZm9vIiwKKwkJLnBtCT0gJmZvb19wbV9vcHMsCS8qIG9wdGlvbmFsICovCisJfSwKKworCS5pZF90YWJsZQk9IGZvb19pZHRhYmxlLAorCS5wcm9iZQkJPSBmb29fcHJvYmUsCisJLnJlbW92ZQkJPSBmb29fcmVtb3ZlLAorCS8qIGlmIGRldmljZSBhdXRvZGV0ZWN0aW9uIGlzIG5lZWRlZDogKi8KKwkuY2xhc3MJCT0gSTJDX0NMQVNTX1NPTUVUSElORywKKwkuZGV0ZWN0CQk9IGZvb19kZXRlY3QsCisJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9pMmMsCisKKwkuc2h1dGRvd24JPSBmb29fc2h1dGRvd24sCS8qIG9wdGlvbmFsICovCisJLmNvbW1hbmQJPSBmb29fY29tbWFuZCwJLyogb3B0aW9uYWwsIGRlcHJlY2F0ZWQgKi8KK30KKworVGhlIG5hbWUgZmllbGQgaXMgdGhlIGRyaXZlciBuYW1lLCBhbmQgbXVzdCBub3QgY29udGFpbiBzcGFjZXMuICBJdAorc2hvdWxkIG1hdGNoIHRoZSBtb2R1bGUgbmFtZSAoaWYgdGhlIGRyaXZlciBjYW4gYmUgY29tcGlsZWQgYXMgYSBtb2R1bGUpLAorYWx0aG91Z2ggeW91IGNhbiB1c2UgTU9EVUxFX0FMSUFTIChwYXNzaW5nICJmb28iIGluIHRoaXMgZXhhbXBsZSkgdG8gYWRkCithbm90aGVyIG5hbWUgZm9yIHRoZSBtb2R1bGUuICBJZiB0aGUgZHJpdmVyIG5hbWUgZG9lc24ndCBtYXRjaCB0aGUgbW9kdWxlCituYW1lLCB0aGUgbW9kdWxlIHdvbid0IGJlIGF1dG9tYXRpY2FsbHkgbG9hZGVkIChob3RwbHVnL2NvbGRwbHVnKS4KKworQWxsIG90aGVyIGZpZWxkcyBhcmUgZm9yIGNhbGwtYmFjayBmdW5jdGlvbnMgd2hpY2ggd2lsbCBiZSBleHBsYWluZWQKK2JlbG93LgorCisKK0V4dHJhIGNsaWVudCBkYXRhCis9PT09PT09PT09PT09PT09PQorCitFYWNoIGNsaWVudCBzdHJ1Y3R1cmUgaGFzIGEgc3BlY2lhbCBgZGF0YScgZmllbGQgdGhhdCBjYW4gcG9pbnQgdG8gYW55CitzdHJ1Y3R1cmUgYXQgYWxsLiAgWW91IHNob3VsZCB1c2UgdGhpcyB0byBrZWVwIGRldmljZS1zcGVjaWZpYyBkYXRhLgorCisJLyogc3RvcmUgdGhlIHZhbHVlICovCisJdm9pZCBpMmNfc2V0X2NsaWVudGRhdGEoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdm9pZCAqZGF0YSk7CisKKwkvKiByZXRyaWV2ZSB0aGUgdmFsdWUgKi8KKwl2b2lkICppMmNfZ2V0X2NsaWVudGRhdGEoY29uc3Qgc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCk7CisKK05vdGUgdGhhdCBzdGFydGluZyB3aXRoIGtlcm5lbCAyLjYuMzQsIHlvdSBkb24ndCBoYXZlIHRvIHNldCB0aGUgYGRhdGEnIGZpZWxkCit0byBOVUxMIGluIHJlbW92ZSgpIG9yIGlmIHByb2JlKCkgZmFpbGVkIGFueW1vcmUuIFRoZSBpMmMtY29yZSBkb2VzIHRoaXMKK2F1dG9tYXRpY2FsbHkgb24gdGhlc2Ugb2NjYXNpb25zLiBUaG9zZSBhcmUgYWxzbyB0aGUgb25seSB0aW1lcyB0aGUgY29yZSB3aWxsCit0b3VjaCB0aGlzIGZpZWxkLgorCisKK0FjY2Vzc2luZyB0aGUgY2xpZW50Cis9PT09PT09PT09PT09PT09PT09PQorCitMZXQncyBzYXkgd2UgaGF2ZSBhIHZhbGlkIGNsaWVudCBzdHJ1Y3R1cmUuIEF0IHNvbWUgdGltZSwgd2Ugd2lsbCBuZWVkCit0byBnYXRoZXIgaW5mb3JtYXRpb24gZnJvbSB0aGUgY2xpZW50LCBvciB3cml0ZSBuZXcgaW5mb3JtYXRpb24gdG8gdGhlCitjbGllbnQuCisKK0kgaGF2ZSBmb3VuZCBpdCB1c2VmdWwgdG8gZGVmaW5lIGZvb19yZWFkIGFuZCBmb29fd3JpdGUgZnVuY3Rpb25zIGZvciB0aGlzLgorRm9yIHNvbWUgY2FzZXMsIGl0IHdpbGwgYmUgZWFzaWVyIHRvIGNhbGwgdGhlIGkyYyBmdW5jdGlvbnMgZGlyZWN0bHksCitidXQgbWFueSBjaGlwcyBoYXZlIHNvbWUga2luZCBvZiByZWdpc3Rlci12YWx1ZSBpZGVhIHRoYXQgY2FuIGVhc2lseQorYmUgZW5jYXBzdWxhdGVkLgorCitUaGUgYmVsb3cgZnVuY3Rpb25zIGFyZSBzaW1wbGUgZXhhbXBsZXMsIGFuZCBzaG91bGQgbm90IGJlIGNvcGllZAorbGl0ZXJhbGx5LgorCitpbnQgZm9vX3JlYWRfdmFsdWUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTggcmVnKQoreworCWlmIChyZWcgPCAweDEwKQkvKiBieXRlLXNpemVkIHJlZ2lzdGVyICovCisJCXJldHVybiBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCByZWcpOworCWVsc2UJCS8qIHdvcmQtc2l6ZWQgcmVnaXN0ZXIgKi8KKwkJcmV0dXJuIGkyY19zbWJ1c19yZWFkX3dvcmRfZGF0YShjbGllbnQsIHJlZyk7Cit9CisKK2ludCBmb29fd3JpdGVfdmFsdWUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgdTggcmVnLCB1MTYgdmFsdWUpCit7CisJaWYgKHJlZyA9PSAweDEwKQkvKiBJbXBvc3NpYmxlIHRvIHdyaXRlIC0gZHJpdmVyIGVycm9yISAqLworCQlyZXR1cm4gLUVJTlZBTDsKKwllbHNlIGlmIChyZWcgPCAweDEwKQkvKiBieXRlLXNpemVkIHJlZ2lzdGVyICovCisJCXJldHVybiBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGNsaWVudCwgcmVnLCB2YWx1ZSk7CisJZWxzZQkJCS8qIHdvcmQtc2l6ZWQgcmVnaXN0ZXIgKi8KKwkJcmV0dXJuIGkyY19zbWJ1c193cml0ZV93b3JkX2RhdGEoY2xpZW50LCByZWcsIHZhbHVlKTsKK30KKworCitQcm9iaW5nIGFuZCBhdHRhY2hpbmcKKz09PT09PT09PT09PT09PT09PT09PQorCitUaGUgTGludXggSTJDIHN0YWNrIHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4gdG8gc3VwcG9ydCBhY2Nlc3MgdG8gaGFyZHdhcmUKK21vbml0b3JpbmcgY2hpcHMgb24gUEMgbW90aGVyYm9hcmRzLCBhbmQgdGh1cyB1c2VkIHRvIGVtYmVkIHNvbWUgYXNzdW1wdGlvbnMKK3RoYXQgd2VyZSBtb3JlIGFwcHJvcHJpYXRlIHRvIFNNQnVzIChhbmQgUENzKSB0aGFuIHRvIEkyQy4gIE9uZSBvZiB0aGVzZQorYXNzdW1wdGlvbnMgd2FzIHRoYXQgbW9zdCBhZGFwdGVycyBhbmQgZGV2aWNlcyBkcml2ZXJzIHN1cHBvcnQgdGhlIFNNQlVTX1FVSUNLCitwcm90b2NvbCB0byBwcm9iZSBkZXZpY2UgcHJlc2VuY2UuICBBbm90aGVyIHdhcyB0aGF0IGRldmljZXMgYW5kIHRoZWlyIGRyaXZlcnMKK2NhbiBiZSBzdWZmaWNpZW50bHkgY29uZmlndXJlZCB1c2luZyBvbmx5IHN1Y2ggcHJvYmUgcHJpbWl0aXZlcy4KKworQXMgTGludXggYW5kIGl0cyBJMkMgc3RhY2sgYmVjYW1lIG1vcmUgd2lkZWx5IHVzZWQgaW4gZW1iZWRkZWQgc3lzdGVtcworYW5kIGNvbXBsZXggY29tcG9uZW50cyBzdWNoIGFzIERWQiBhZGFwdGVycywgdGhvc2UgYXNzdW1wdGlvbnMgYmVjYW1lIG1vcmUKK3Byb2JsZW1hdGljLiAgRHJpdmVycyBmb3IgSTJDIGRldmljZXMgdGhhdCBpc3N1ZSBpbnRlcnJ1cHRzIG5lZWQgbW9yZSAoYW5kCitkaWZmZXJlbnQpIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24sIGFzIGRvIGRyaXZlcnMgaGFuZGxpbmcgY2hpcCB2YXJpYW50cwordGhhdCBjYW4ndCBiZSBkaXN0aW5ndWlzaGVkIGJ5IHByb3RvY29sIHByb2JpbmcsIG9yIHdoaWNoIG5lZWQgc29tZSBib2FyZAorc3BlY2lmaWMgaW5mb3JtYXRpb24gdG8gb3BlcmF0ZSBjb3JyZWN0bHkuCisKKworRGV2aWNlL0RyaXZlciBCaW5kaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU3lzdGVtIGluZnJhc3RydWN0dXJlLCB0eXBpY2FsbHkgYm9hcmQtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gY29kZSBvcgorYm9vdCBmaXJtd2FyZSwgcmVwb3J0cyB3aGF0IEkyQyBkZXZpY2VzIGV4aXN0LiAgRm9yIGV4YW1wbGUsIHRoZXJlIG1heSBiZQorYSB0YWJsZSwgaW4gdGhlIGtlcm5lbCBvciBmcm9tIHRoZSBib290IGxvYWRlciwgaWRlbnRpZnlpbmcgSTJDIGRldmljZXMKK2FuZCBsaW5raW5nIHRoZW0gdG8gYm9hcmQtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhYm91dCBJUlFzCithbmQgb3RoZXIgd2lyaW5nIGFydGlmYWN0cywgY2hpcCB0eXBlLCBhbmQgc28gb24uICBUaGF0IGNvdWxkIGJlIHVzZWQgdG8KK2NyZWF0ZSBpMmNfY2xpZW50IG9iamVjdHMgZm9yIGVhY2ggSTJDIGRldmljZS4KKworSTJDIGRldmljZSBkcml2ZXJzIHVzaW5nIHRoaXMgYmluZGluZyBtb2RlbCB3b3JrIGp1c3QgbGlrZSBhbnkgb3RoZXIKK2tpbmQgb2YgZHJpdmVyIGluIExpbnV4OiAgdGhleSBwcm92aWRlIGEgcHJvYmUoKSBtZXRob2QgdG8gYmluZCB0bwordGhvc2UgZGV2aWNlcywgYW5kIGEgcmVtb3ZlKCkgbWV0aG9kIHRvIHVuYmluZC4KKworCXN0YXRpYyBpbnQgZm9vX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppZCk7CisJc3RhdGljIGludCBmb29fcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpOworCitSZW1lbWJlciB0aGF0IHRoZSBpMmNfZHJpdmVyIGRvZXMgbm90IGNyZWF0ZSB0aG9zZSBjbGllbnQgaGFuZGxlcy4gIFRoZQoraGFuZGxlIG1heSBiZSB1c2VkIGR1cmluZyBmb29fcHJvYmUoKS4gIElmIGZvb19wcm9iZSgpIHJlcG9ydHMgc3VjY2VzcworKHplcm8gbm90IGEgbmVnYXRpdmUgc3RhdHVzIGNvZGUpIGl0IG1heSBzYXZlIHRoZSBoYW5kbGUgYW5kIHVzZSBpdCB1bnRpbAorZm9vX3JlbW92ZSgpIHJldHVybnMuICBUaGF0IGJpbmRpbmcgbW9kZWwgaXMgdXNlZCBieSBtb3N0IExpbnV4IGRyaXZlcnMuCisKK1RoZSBwcm9iZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBhbiBlbnRyeSBpbiB0aGUgaWRfdGFibGUgbmFtZSBmaWVsZAorbWF0Y2hlcyB0aGUgZGV2aWNlJ3MgbmFtZS4gSXQgaXMgcGFzc2VkIHRoZSBlbnRyeSB0aGF0IHdhcyBtYXRjaGVkIHNvCit0aGUgZHJpdmVyIGtub3dzIHdoaWNoIG9uZSBpbiB0aGUgdGFibGUgbWF0Y2hlZC4KKworCitEZXZpY2UgQ3JlYXRpb24KKy0tLS0tLS0tLS0tLS0tLQorCitJZiB5b3Uga25vdyBmb3IgYSBmYWN0IHRoYXQgYW4gSTJDIGRldmljZSBpcyBjb25uZWN0ZWQgdG8gYSBnaXZlbiBJMkMgYnVzLAoreW91IGNhbiBpbnN0YW50aWF0ZSB0aGF0IGRldmljZSBieSBzaW1wbHkgZmlsbGluZyBhbiBpMmNfYm9hcmRfaW5mbworc3RydWN0dXJlIHdpdGggdGhlIGRldmljZSBhZGRyZXNzIGFuZCBkcml2ZXIgbmFtZSwgYW5kIGNhbGxpbmcKK2kyY19uZXdfZGV2aWNlKCkuICBUaGlzIHdpbGwgY3JlYXRlIHRoZSBkZXZpY2UsIHRoZW4gdGhlIGRyaXZlciBjb3JlIHdpbGwKK3Rha2UgY2FyZSBvZiBmaW5kaW5nIHRoZSByaWdodCBkcml2ZXIgYW5kIHdpbGwgY2FsbCBpdHMgcHJvYmUoKSBtZXRob2QuCitJZiBhIGRyaXZlciBzdXBwb3J0cyBkaWZmZXJlbnQgZGV2aWNlIHR5cGVzLCB5b3UgY2FuIHNwZWNpZnkgdGhlIHR5cGUgeW91Cit3YW50IHVzaW5nIHRoZSB0eXBlIGZpZWxkLiAgWW91IGNhbiBhbHNvIHNwZWNpZnkgYW4gSVJRIGFuZCBwbGF0Zm9ybSBkYXRhCitpZiBuZWVkZWQuCisKK1NvbWV0aW1lcyB5b3Uga25vdyB0aGF0IGEgZGV2aWNlIGlzIGNvbm5lY3RlZCB0byBhIGdpdmVuIEkyQyBidXMsIGJ1dCB5b3UKK2Rvbid0IGtub3cgdGhlIGV4YWN0IGFkZHJlc3MgaXQgdXNlcy4gIFRoaXMgaGFwcGVucyBvbiBUViBhZGFwdGVycyBmb3IKK2V4YW1wbGUsIHdoZXJlIHRoZSBzYW1lIGRyaXZlciBzdXBwb3J0cyBkb3plbnMgb2Ygc2xpZ2h0bHkgZGlmZmVyZW50Cittb2RlbHMsIGFuZCBJMkMgZGV2aWNlIGFkZHJlc3NlcyBjaGFuZ2UgZnJvbSBvbmUgbW9kZWwgdG8gdGhlIG5leHQuICBJbgordGhhdCBjYXNlLCB5b3UgY2FuIHVzZSB0aGUgaTJjX25ld19wcm9iZWRfZGV2aWNlKCkgdmFyaWFudCwgd2hpY2ggaXMKK3NpbWlsYXIgdG8gaTJjX25ld19kZXZpY2UoKSwgZXhjZXB0IHRoYXQgaXQgdGFrZXMgYW4gYWRkaXRpb25hbCBsaXN0IG9mCitwb3NzaWJsZSBJMkMgYWRkcmVzc2VzIHRvIHByb2JlLiAgQSBkZXZpY2UgaXMgY3JlYXRlZCBmb3IgdGhlIGZpcnN0CityZXNwb25zaXZlIGFkZHJlc3MgaW4gdGhlIGxpc3QuICBJZiB5b3UgZXhwZWN0IG1vcmUgdGhhbiBvbmUgZGV2aWNlIHRvIGJlCitwcmVzZW50IGluIHRoZSBhZGRyZXNzIHJhbmdlLCBzaW1wbHkgY2FsbCBpMmNfbmV3X3Byb2JlZF9kZXZpY2UoKSB0aGF0CittYW55IHRpbWVzLgorCitUaGUgY2FsbCB0byBpMmNfbmV3X2RldmljZSgpIG9yIGkyY19uZXdfcHJvYmVkX2RldmljZSgpIHR5cGljYWxseSBoYXBwZW5zCitpbiB0aGUgSTJDIGJ1cyBkcml2ZXIuIFlvdSBtYXkgd2FudCB0byBzYXZlIHRoZSByZXR1cm5lZCBpMmNfY2xpZW50CityZWZlcmVuY2UgZm9yIGxhdGVyIHVzZS4KKworCitEZXZpY2UgRGV0ZWN0aW9uCistLS0tLS0tLS0tLS0tLS0tCisKK1NvbWV0aW1lcyB5b3UgZG8gbm90IGtub3cgaW4gYWR2YW5jZSB3aGljaCBJMkMgZGV2aWNlcyBhcmUgY29ubmVjdGVkIHRvCithIGdpdmVuIEkyQyBidXMuICBUaGlzIGlzIGZvciBleGFtcGxlIHRoZSBjYXNlIG9mIGhhcmR3YXJlIG1vbml0b3JpbmcKK2RldmljZXMgb24gYSBQQydzIFNNQnVzLiAgSW4gdGhhdCBjYXNlLCB5b3UgbWF5IHdhbnQgdG8gbGV0IHlvdXIgZHJpdmVyCitkZXRlY3Qgc3VwcG9ydGVkIGRldmljZXMgYXV0b21hdGljYWxseS4gIFRoaXMgaXMgaG93IHRoZSBsZWdhY3kgbW9kZWwKK3dhcyB3b3JraW5nLCBhbmQgaXMgbm93IGF2YWlsYWJsZSBhcyBhbiBleHRlbnNpb24gdG8gdGhlIHN0YW5kYXJkCitkcml2ZXIgbW9kZWwuCisKK1lvdSBzaW1wbHkgaGF2ZSB0byBkZWZpbmUgYSBkZXRlY3QgY2FsbGJhY2sgd2hpY2ggd2lsbCBhdHRlbXB0IHRvCitpZGVudGlmeSBzdXBwb3J0ZWQgZGV2aWNlcyAocmV0dXJuaW5nIDAgZm9yIHN1cHBvcnRlZCBvbmVzIGFuZCAtRU5PREVWCitmb3IgdW5zdXBwb3J0ZWQgb25lcyksIGEgbGlzdCBvZiBhZGRyZXNzZXMgdG8gcHJvYmUsIGFuZCBhIGRldmljZSB0eXBlCisob3IgY2xhc3MpIHNvIHRoYXQgb25seSBJMkMgYnVzZXMgd2hpY2ggbWF5IGhhdmUgdGhhdCB0eXBlIG9mIGRldmljZQorY29ubmVjdGVkIChhbmQgbm90IG90aGVyd2lzZSBlbnVtZXJhdGVkKSB3aWxsIGJlIHByb2JlZC4gIEZvciBleGFtcGxlLAorYSBkcml2ZXIgZm9yIGEgaGFyZHdhcmUgbW9uaXRvcmluZyBjaGlwIGZvciB3aGljaCBhdXRvLWRldGVjdGlvbiBpcworbmVlZGVkIHdvdWxkIHNldCBpdHMgY2xhc3MgdG8gSTJDX0NMQVNTX0hXTU9OLCBhbmQgb25seSBJMkMgYWRhcHRlcnMKK3dpdGggYSBjbGFzcyBpbmNsdWRpbmcgSTJDX0NMQVNTX0hXTU9OIHdvdWxkIGJlIHByb2JlZCBieSB0aGlzIGRyaXZlci4KK05vdGUgdGhhdCB0aGUgYWJzZW5jZSBvZiBtYXRjaGluZyBjbGFzc2VzIGRvZXMgbm90IHByZXZlbnQgdGhlIHVzZSBvZgorYSBkZXZpY2Ugb2YgdGhhdCB0eXBlIG9uIHRoZSBnaXZlbiBJMkMgYWRhcHRlci4gIEFsbCBpdCBwcmV2ZW50cyBpcworYXV0by1kZXRlY3Rpb247IGV4cGxpY2l0IGluc3RhbnRpYXRpb24gb2YgZGV2aWNlcyBpcyBzdGlsbCBwb3NzaWJsZS4KKworTm90ZSB0aGF0IHRoaXMgbWVjaGFuaXNtIGlzIHB1cmVseSBvcHRpb25hbCBhbmQgbm90IHN1aXRhYmxlIGZvciBhbGwKK2RldmljZXMuICBZb3UgbmVlZCBzb21lIHJlbGlhYmxlIHdheSB0byBpZGVudGlmeSB0aGUgc3VwcG9ydGVkIGRldmljZXMKKyh0eXBpY2FsbHkgdXNpbmcgZGV2aWNlLXNwZWNpZmljLCBkZWRpY2F0ZWQgaWRlbnRpZmljYXRpb24gcmVnaXN0ZXJzKSwKK290aGVyd2lzZSBtaXNkZXRlY3Rpb25zIGFyZSBsaWtlbHkgdG8gb2NjdXIgYW5kIHRoaW5ncyBjYW4gZ2V0IHdyb25nCitxdWlja2x5LiAgS2VlcCBpbiBtaW5kIHRoYXQgdGhlIEkyQyBwcm90b2NvbCBkb2Vzbid0IGluY2x1ZGUgYW55CitzdGFuZGFyZCB3YXkgdG8gZGV0ZWN0IHRoZSBwcmVzZW5jZSBvZiBhIGNoaXAgYXQgYSBnaXZlbiBhZGRyZXNzLCBsZXQKK2Fsb25lIGEgc3RhbmRhcmQgd2F5IHRvIGlkZW50aWZ5IGRldmljZXMuICBFdmVuIHdvcnNlIGlzIHRoZSBsYWNrIG9mCitzZW1hbnRpY3MgYXNzb2NpYXRlZCB0byBidXMgdHJhbnNmZXJzLCB3aGljaCBtZWFucyB0aGF0IHRoZSBzYW1lCit0cmFuc2ZlciBjYW4gYmUgc2VlbiBhcyBhIHJlYWQgb3BlcmF0aW9uIGJ5IGEgY2hpcCBhbmQgYXMgYSB3cml0ZQorb3BlcmF0aW9uIGJ5IGFub3RoZXIgY2hpcC4gIEZvciB0aGVzZSByZWFzb25zLCBleHBsaWNpdCBkZXZpY2UKK2luc3RhbnRpYXRpb24gc2hvdWxkIGFsd2F5cyBiZSBwcmVmZXJyZWQgdG8gYXV0by1kZXRlY3Rpb24gd2hlcmUKK3Bvc3NpYmxlLgorCisKK0RldmljZSBEZWxldGlvbgorLS0tLS0tLS0tLS0tLS0tCisKK0VhY2ggSTJDIGRldmljZSB3aGljaCBoYXMgYmVlbiBjcmVhdGVkIHVzaW5nIGkyY19uZXdfZGV2aWNlKCkgb3IKK2kyY19uZXdfcHJvYmVkX2RldmljZSgpIGNhbiBiZSB1bnJlZ2lzdGVyZWQgYnkgY2FsbGluZworaTJjX3VucmVnaXN0ZXJfZGV2aWNlKCkuICBJZiB5b3UgZG9uJ3QgY2FsbCBpdCBleHBsaWNpdGx5LCBpdCB3aWxsIGJlCitjYWxsZWQgYXV0b21hdGljYWxseSBiZWZvcmUgdGhlIHVuZGVybHlpbmcgSTJDIGJ1cyBpdHNlbGYgaXMgcmVtb3ZlZCwgYXMgYQorZGV2aWNlIGNhbid0IHN1cnZpdmUgaXRzIHBhcmVudCBpbiB0aGUgZGV2aWNlIGRyaXZlciBtb2RlbC4KKworCitJbml0aWFsaXppbmcgdGhlIGRyaXZlcgorPT09PT09PT09PT09PT09PT09PT09PT0KKworV2hlbiB0aGUga2VybmVsIGlzIGJvb3RlZCwgb3Igd2hlbiB5b3VyIGZvbyBkcml2ZXIgbW9kdWxlIGlzIGluc2VydGVkLAoreW91IGhhdmUgdG8gZG8gc29tZSBpbml0aWFsaXppbmcuIEZvcnR1bmF0ZWx5LCBqdXN0IHJlZ2lzdGVyaW5nIHRoZQorZHJpdmVyIG1vZHVsZSBpcyB1c3VhbGx5IGVub3VnaC4KKworc3RhdGljIGludCBfX2luaXQgZm9vX2luaXQodm9pZCkKK3sKKwlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmZvb19kcml2ZXIpOworfQorbW9kdWxlX2luaXQoZm9vX2luaXQpOworCitzdGF0aWMgdm9pZCBfX2V4aXQgZm9vX2NsZWFudXAodm9pZCkKK3sKKwlpMmNfZGVsX2RyaXZlcigmZm9vX2RyaXZlcik7Cit9Cittb2R1bGVfZXhpdChmb29fY2xlYW51cCk7CisKK1RoZSBtb2R1bGVfaTJjX2RyaXZlcigpIG1hY3JvIGNhbiBiZSB1c2VkIHRvIHJlZHVjZSBhYm92ZSBjb2RlLgorCittb2R1bGVfaTJjX2RyaXZlcihmb29fZHJpdmVyKTsKKworTm90ZSB0aGF0IHNvbWUgZnVuY3Rpb25zIGFyZSBtYXJrZWQgYnkgYF9faW5pdCcuICBUaGVzZSBmdW5jdGlvbnMgY2FuCitiZSByZW1vdmVkIGFmdGVyIGtlcm5lbCBib290aW5nIChvciBtb2R1bGUgbG9hZGluZykgaXMgY29tcGxldGVkLgorTGlrZXdpc2UsIGZ1bmN0aW9ucyBtYXJrZWQgYnkgYF9fZXhpdCcgYXJlIGRyb3BwZWQgYnkgdGhlIGNvbXBpbGVyIHdoZW4KK3RoZSBjb2RlIGlzIGJ1aWx0IGludG8gdGhlIGtlcm5lbCwgYXMgdGhleSB3b3VsZCBuZXZlciBiZSBjYWxsZWQuCisKKworRHJpdmVyIEluZm9ybWF0aW9uCis9PT09PT09PT09PT09PT09PT0KKworLyogU3Vic3RpdHV0ZSB5b3VyIG93biBuYW1lIGFuZCBlbWFpbCBhZGRyZXNzICovCitNT0RVTEVfQVVUSE9SKCJGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+IgorTU9EVUxFX0RFU0NSSVBUSU9OKCJEcml2ZXIgZm9yIEJhcmYgSW5jLiBGb28gSTJDIGRldmljZXMiKTsKKworLyogYSBmZXcgbm9uLUdQTCBsaWNlbnNlIHR5cGVzIGFyZSBhbHNvIGFsbG93ZWQgKi8KK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKKworCitQb3dlciBNYW5hZ2VtZW50Cis9PT09PT09PT09PT09PT09CisKK0lmIHlvdXIgSTJDIGRldmljZSBuZWVkcyBzcGVjaWFsIGhhbmRsaW5nIHdoZW4gZW50ZXJpbmcgYSBzeXN0ZW0gbG93Citwb3dlciBzdGF0ZSAtLSBsaWtlIHB1dHRpbmcgYSB0cmFuc2NlaXZlciBpbnRvIGEgbG93IHBvd2VyIG1vZGUsIG9yCithY3RpdmF0aW5nIGEgc3lzdGVtIHdha2V1cCBtZWNoYW5pc20gLS0gZG8gdGhhdCBieSBpbXBsZW1lbnRpbmcgdGhlCithcHByb3ByaWF0ZSBjYWxsYmFja3MgZm9yIHRoZSBkZXZfcG1fb3BzIG9mIHRoZSBkcml2ZXIgKGxpa2Ugc3VzcGVuZAorYW5kIHJlc3VtZSkuCisKK1RoZXNlIGFyZSBzdGFuZGFyZCBkcml2ZXIgbW9kZWwgY2FsbHMsIGFuZCB0aGV5IHdvcmsganVzdCBsaWtlIHRoZXkKK3dvdWxkIGZvciBhbnkgb3RoZXIgZHJpdmVyIHN0YWNrLiAgVGhlIGNhbGxzIGNhbiBzbGVlcCwgYW5kIGNhbiB1c2UKK0kyQyBtZXNzYWdpbmcgdG8gdGhlIGRldmljZSBiZWluZyBzdXNwZW5kZWQgb3IgcmVzdW1lZCAoc2luY2UgdGhlaXIKK3BhcmVudCBJMkMgYWRhcHRlciBpcyBhY3RpdmUgd2hlbiB0aGVzZSBjYWxscyBhcmUgaXNzdWVkLCBhbmQgSVJRcworYXJlIHN0aWxsIGVuYWJsZWQpLgorCisKK1N5c3RlbSBTaHV0ZG93bgorPT09PT09PT09PT09PT09CisKK0lmIHlvdXIgSTJDIGRldmljZSBuZWVkcyBzcGVjaWFsIGhhbmRsaW5nIHdoZW4gdGhlIHN5c3RlbSBzaHV0cyBkb3duCitvciByZWJvb3RzIChpbmNsdWRpbmcga2V4ZWMpIC0tIGxpa2UgdHVybmluZyBzb21ldGhpbmcgb2ZmIC0tIHVzZSBhCitzaHV0ZG93bigpIG1ldGhvZC4KKworQWdhaW4sIHRoaXMgaXMgYSBzdGFuZGFyZCBkcml2ZXIgbW9kZWwgY2FsbCwgd29ya2luZyBqdXN0IGxpa2UgaXQKK3dvdWxkIGZvciBhbnkgb3RoZXIgZHJpdmVyIHN0YWNrOiAgdGhlIGNhbGxzIGNhbiBzbGVlcCwgYW5kIGNhbiB1c2UKK0kyQyBtZXNzYWdpbmcuCisKKworQ29tbWFuZCBmdW5jdGlvbgorPT09PT09PT09PT09PT09PQorCitBIGdlbmVyaWMgaW9jdGwtbGlrZSBmdW5jdGlvbiBjYWxsIGJhY2sgaXMgc3VwcG9ydGVkLiBZb3Ugd2lsbCBzZWxkb20KK25lZWQgdGhpcywgYW5kIGl0cyB1c2UgaXMgZGVwcmVjYXRlZCBhbnl3YXksIHNvIG5ld2VyIGRlc2lnbiBzaG91bGQgbm90Cit1c2UgaXQuCisKKworU2VuZGluZyBhbmQgcmVjZWl2aW5nCis9PT09PT09PT09PT09PT09PT09PT0KKworSWYgeW91IHdhbnQgdG8gY29tbXVuaWNhdGUgd2l0aCB5b3VyIGRldmljZSwgdGhlcmUgYXJlIHNldmVyYWwgZnVuY3Rpb25zCit0byBkbyB0aGlzLiBZb3UgY2FuIGZpbmQgYWxsIG9mIHRoZW0gaW4gPGxpbnV4L2kyYy5oPi4KKworSWYgeW91IGNhbiBjaG9vc2UgYmV0d2VlbiBwbGFpbiBJMkMgY29tbXVuaWNhdGlvbiBhbmQgU01CdXMgbGV2ZWwKK2NvbW11bmljYXRpb24sIHBsZWFzZSB1c2UgdGhlIGxhdHRlci4gQWxsIGFkYXB0ZXJzIHVuZGVyc3RhbmQgU01CdXMgbGV2ZWwKK2NvbW1hbmRzLCBidXQgb25seSBzb21lIG9mIHRoZW0gdW5kZXJzdGFuZCBwbGFpbiBJMkMhCisKKworUGxhaW4gSTJDIGNvbW11bmljYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlpbnQgaTJjX21hc3Rlcl9zZW5kKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIGNvbnN0IGNoYXIgKmJ1ZiwKKwkJCSAgICBpbnQgY291bnQpOworCWludCBpMmNfbWFzdGVyX3JlY3Yoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwgY2hhciAqYnVmLCBpbnQgY291bnQpOworCitUaGVzZSByb3V0aW5lcyByZWFkIGFuZCB3cml0ZSBzb21lIGJ5dGVzIGZyb20vdG8gYSBjbGllbnQuIFRoZSBjbGllbnQKK2NvbnRhaW5zIHRoZSBpMmMgYWRkcmVzcywgc28geW91IGRvIG5vdCBoYXZlIHRvIGluY2x1ZGUgaXQuIFRoZSBzZWNvbmQKK3BhcmFtZXRlciBjb250YWlucyB0aGUgYnl0ZXMgdG8gcmVhZC93cml0ZSwgdGhlIHRoaXJkIHRoZSBudW1iZXIgb2YgYnl0ZXMKK3RvIHJlYWQvd3JpdGUgKG11c3QgYmUgbGVzcyB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciwgYWxzbyBzaG91bGQgYmUKK2xlc3MgdGhhbiA2NGsgc2luY2UgbXNnLmxlbiBpcyB1MTYuKSBSZXR1cm5lZCBpcyB0aGUgYWN0dWFsIG51bWJlciBvZiBieXRlcworcmVhZC93cml0dGVuLgorCisJaW50IGkyY190cmFuc2ZlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXAsIHN0cnVjdCBpMmNfbXNnICptc2csCisJCQkgaW50IG51bSk7CisKK1RoaXMgc2VuZHMgYSBzZXJpZXMgb2YgbWVzc2FnZXMuIEVhY2ggbWVzc2FnZSBjYW4gYmUgYSByZWFkIG9yIHdyaXRlLAorYW5kIHRoZXkgY2FuIGJlIG1peGVkIGluIGFueSB3YXkuIFRoZSB0cmFuc2FjdGlvbnMgYXJlIGNvbWJpbmVkOiBubworc3RvcCBiaXQgaXMgc2VudCBiZXR3ZWVuIHRyYW5zYWN0aW9uLiBUaGUgaTJjX21zZyBzdHJ1Y3R1cmUgY29udGFpbnMKK2ZvciBlYWNoIG1lc3NhZ2UgdGhlIGNsaWVudCBhZGRyZXNzLCB0aGUgbnVtYmVyIG9mIGJ5dGVzIG9mIHRoZSBtZXNzYWdlCithbmQgdGhlIG1lc3NhZ2UgZGF0YSBpdHNlbGYuCisKK1lvdSBjYW4gcmVhZCB0aGUgZmlsZSBgaTJjLXByb3RvY29sJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUKK2FjdHVhbCBJMkMgcHJvdG9jb2wuCisKKworU01CdXMgY29tbXVuaWNhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJczMyIGkyY19zbWJ1c194ZmVyKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTE2IGFkZHIsCisJCQkgICB1bnNpZ25lZCBzaG9ydCBmbGFncywgY2hhciByZWFkX3dyaXRlLCB1OCBjb21tYW5kLAorCQkJICAgaW50IHNpemUsIHVuaW9uIGkyY19zbWJ1c19kYXRhICpkYXRhKTsKKworVGhpcyBpcyB0aGUgZ2VuZXJpYyBTTUJ1cyBmdW5jdGlvbi4gQWxsIGZ1bmN0aW9ucyBiZWxvdyBhcmUgaW1wbGVtZW50ZWQKK2luIHRlcm1zIG9mIGl0LiBOZXZlciB1c2UgdGhpcyBmdW5jdGlvbiBkaXJlY3RseSEKKworCXMzMiBpMmNfc21idXNfcmVhZF9ieXRlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpOworCXMzMiBpMmNfc21idXNfd3JpdGVfYnl0ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCB2YWx1ZSk7CisJczMyIGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCB1OCBjb21tYW5kKTsKKwlzMzIgaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAorCQkJCSAgICAgIHU4IGNvbW1hbmQsIHU4IHZhbHVlKTsKKwlzMzIgaTJjX3NtYnVzX3JlYWRfd29yZF9kYXRhKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHU4IGNvbW1hbmQpOworCXMzMiBpMmNfc21idXNfd3JpdGVfd29yZF9kYXRhKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCisJCQkJICAgICAgdTggY29tbWFuZCwgdTE2IHZhbHVlKTsKKwlzMzIgaTJjX3NtYnVzX3JlYWRfYmxvY2tfZGF0YShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAorCQkJCSAgICAgIHU4IGNvbW1hbmQsIHU4ICp2YWx1ZXMpOworCXMzMiBpMmNfc21idXNfd3JpdGVfYmxvY2tfZGF0YShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAorCQkJCSAgICAgICB1OCBjb21tYW5kLCB1OCBsZW5ndGgsIGNvbnN0IHU4ICp2YWx1ZXMpOworCXMzMiBpMmNfc21idXNfcmVhZF9pMmNfYmxvY2tfZGF0YShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAorCQkJCQkgIHU4IGNvbW1hbmQsIHU4IGxlbmd0aCwgdTggKnZhbHVlcyk7CisJczMyIGkyY19zbWJ1c193cml0ZV9pMmNfYmxvY2tfZGF0YShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAorCQkJCQkgICB1OCBjb21tYW5kLCB1OCBsZW5ndGgsCisJCQkJCSAgIGNvbnN0IHU4ICp2YWx1ZXMpOworCitUaGVzZSBvbmVzIHdlcmUgcmVtb3ZlZCBmcm9tIGkyYy1jb3JlIGJlY2F1c2UgdGhleSBoYWQgbm8gdXNlcnMsIGJ1dCBjb3VsZAorYmUgYWRkZWQgYmFjayBsYXRlciBpZiBuZWVkZWQ6CisKKwlzMzIgaTJjX3NtYnVzX3dyaXRlX3F1aWNrKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHU4IHZhbHVlKTsKKwlzMzIgaTJjX3NtYnVzX3Byb2Nlc3NfY2FsbChzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LAorCQkJCSAgIHU4IGNvbW1hbmQsIHUxNiB2YWx1ZSk7CisJczMyIGkyY19zbWJ1c19ibG9ja19wcm9jZXNzX2NhbGwoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwKKwkJCQkJIHU4IGNvbW1hbmQsIHU4IGxlbmd0aCwgdTggKnZhbHVlcyk7CisKK0FsbCB0aGVzZSB0cmFuc2FjdGlvbnMgcmV0dXJuIGEgbmVnYXRpdmUgZXJybm8gdmFsdWUgb24gZmFpbHVyZS4gVGhlICd3cml0ZScKK3RyYW5zYWN0aW9ucyByZXR1cm4gMCBvbiBzdWNjZXNzOyB0aGUgJ3JlYWQnIHRyYW5zYWN0aW9ucyByZXR1cm4gdGhlIHJlYWQKK3ZhbHVlLCBleGNlcHQgZm9yIGJsb2NrIHRyYW5zYWN0aW9ucywgd2hpY2ggcmV0dXJuIHRoZSBudW1iZXIgb2YgdmFsdWVzCityZWFkLiBUaGUgYmxvY2sgYnVmZmVycyBuZWVkIG5vdCBiZSBsb25nZXIgdGhhbiAzMiBieXRlcy4KKworWW91IGNhbiByZWFkIHRoZSBmaWxlIGBzbWJ1cy1wcm90b2NvbCcgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlCithY3R1YWwgU01CdXMgcHJvdG9jb2wuCisKKworR2VuZXJhbCBwdXJwb3NlIHJvdXRpbmVzCis9PT09PT09PT09PT09PT09PT09PT09PT0KKworQmVsb3cgYWxsIGdlbmVyYWwgcHVycG9zZSByb3V0aW5lcyBhcmUgbGlzdGVkLCB0aGF0IHdlcmUgbm90IG1lbnRpb25lZAorYmVmb3JlLgorCisJLyogUmV0dXJuIHRoZSBhZGFwdGVyIG51bWJlciBmb3IgYSBzcGVjaWZpYyBhZGFwdGVyICovCisJaW50IGkyY19hZGFwdGVyX2lkKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcCk7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lhNjQvLmdpdGlnbm9yZSBiL0RvY3VtZW50YXRpb24vaWE2NC8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiODA2ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lhNjQvLmdpdGlnbm9yZQpAQCAtMCwwICsxIEBACithbGlhc2luZy10ZXN0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lhNjQvSVJRLXJlZGlyLnR4dCBiL0RvY3VtZW50YXRpb24vaWE2NC9JUlEtcmVkaXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3YmQ3MjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lhNjQvSVJRLXJlZGlyLnR4dApAQCAtMCwwICsxLDY5IEBACitJUlEgYWZmaW5pdHkgb24gSUE2NCBwbGF0Zm9ybXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgMDcuMDEuMjAwMiwgRXJpY2ggRm9jaHQgPGVmb2NodEBlc3MubmVjLmRlPgorCisKK0J5IHdyaXRpbmcgdG8gL3Byb2MvaXJxL0lSUSMvc21wX2FmZmluaXR5IHRoZSBpbnRlcnJ1cHQgcm91dGluZyBjYW4gYmUKK2NvbnRyb2xsZWQuIFRoZSBiZWhhdmlvciBvbiBJQTY0IHBsYXRmb3JtcyBpcyBzbGlnaHRseSBkaWZmZXJlbnQgZnJvbQordGhhdCBkZXNjcmliZWQgaW4gRG9jdW1lbnRhdGlvbi9JUlEtYWZmaW5pdHkudHh0IGZvciBpMzg2IHN5c3RlbXMuCisKK0JlY2F1c2Ugb2YgdGhlIHVzYWdlIG9mIFNBUElDIG1vZGUgYW5kIHBoeXNpY2FsIGRlc3RpbmF0aW9uIG1vZGUgdGhlCitJUlEgdGFyZ2V0IGlzIG9uZSBwYXJ0aWN1bGFyIENQVSBhbmQgY2Fubm90IGJlIGEgbWFzayBvZiBzZXZlcmFsCitDUFVzLiBPbmx5IHRoZSBmaXJzdCBub24temVybyBiaXQgaXMgdGFrZW4gaW50byBhY2NvdW50LgorCisKK1VzYWdlIGV4YW1wbGVzOgorCitUaGUgdGFyZ2V0IENQVSBoYXMgdG8gYmUgc3BlY2lmaWVkIGFzIGEgaGV4YWRlY2ltYWwgQ1BVIG1hc2suIFRoZQorZmlyc3Qgbm9uLXplcm8gYml0IGlzIHRoZSBzZWxlY3RlZCBDUFUuIFRoaXMgZm9ybWF0IGhhcyBiZWVuIGtlcHQgZm9yCitjb21wYXRpYmlsaXR5IHJlYXNvbnMgd2l0aCBpMzg2LgorCitTZXQgdGhlIGRlbGl2ZXJ5IG1vZGUgb2YgaW50ZXJydXB0IDQxIHRvIGZpeGVkIGFuZCByb3V0ZSB0aGUKK2ludGVycnVwdHMgdG8gQ1BVICMzIChsb2dpY2FsIENQVSBudW1iZXIpICgyXjM9MHgwOCk6CisgICAgIGVjaG8gIjgiID4vcHJvYy9pcnEvNDEvc21wX2FmZmluaXR5CisKK1NldCB0aGUgZGVmYXVsdCByb3V0ZSBmb3IgSVJRIG51bWJlciA0MSB0byBDUFUgNiBpbiBsb3dlc3QgcHJpb3JpdHkKK2RlbGl2ZXJ5IG1vZGUgKHJlZGlyZWN0YWJsZSk6CisgICAgIGVjaG8gInIgNDAiID4vcHJvYy9pcnEvNDEvc21wX2FmZmluaXR5CisKK1RoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQKKyAgICAgY2F0IC9wcm9jL2lycS9JUlEjL3NtcF9hZmZpbml0eQorZ2l2ZXMgdGhlIHRhcmdldCBDUFUgbWFzayBmb3IgdGhlIHNwZWNpZmllZCBpbnRlcnJ1cHQgdmVjdG9yLiBJZiB0aGUgQ1BVCittYXNrIGlzIHByZWNlZGVkIGJ5IHRoZSBjaGFyYWN0ZXIgInIiLCB0aGUgaW50ZXJydXB0IGlzIHJlZGlyZWN0YWJsZQorKGkuZS4gbG93ZXN0IHByaW9yaXR5IG1vZGUgcm91dGluZyBpcyB1c2VkKSwgb3RoZXJ3aXNlIGl0cyByb3V0ZSBpcworZml4ZWQuCisKKworCitJbml0aWFsaXphdGlvbiBhbmQgZGVmYXVsdCBiZWhhdmlvcjoKKworSWYgdGhlIHBsYXRmb3JtIGZlYXR1cmVzIElSUSByZWRpcmVjdGlvbiAoaW5mbyBwcm92aWRlZCBieSBTQUwpIGFsbAorSU8tU0FQSUMgaW50ZXJydXB0cyBhcmUgaW5pdGlhbGl6ZWQgd2l0aCBDUFUjMCBhcyB0aGVpciBkZWZhdWx0IHRhcmdldAorYW5kIHRoZSByb3V0aW5nIGlzIHRoZSBzbyBjYWxsZWQgImxvd2VzdCBwcmlvcml0eSBtb2RlIiAoYWN0dWFsbHkKK2ZpeGVkIFNBUElDIG1vZGUgd2l0aCBoaW50KS4gVGhlIFhUUCBjaGlwc2V0IHJlZ2lzdGVycyBhcmUgdXNlZCBhcyBoaW50cworZm9yIHRoZSBJUlEgcm91dGluZy4gQ3VycmVudGx5IGluIExpbnV4IFhUUCByZWdpc3RlcnMgY2FuIGhhdmUgdGhyZWUKK3ZhbHVlczoKKwktIG1pbmltYWwgZm9yIGFuIGlkbGUgdGFzaywKKwktIG5vcm1hbCBpZiBhbnkgb3RoZXIgdGFzayBydW5zLAorCS0gbWF4aW1hbCBpZiB0aGUgQ1BVIGlzIGdvaW5nIHRvIGJlIHN3aXRjaGVkIG9mZi4KK1RoZSBJUlEgaXMgcm91dGVkIHRvIHRoZSBDUFUgd2l0aCBsb3dlc3QgWFRQIHJlZ2lzdGVyIHZhbHVlLCB0aGUKK3NlYXJjaCBiZWdpbnMgYXQgdGhlIGRlZmF1bHQgQ1BVLiBUaGVyZWZvcmUgbW9zdCBvZiB0aGUgaW50ZXJydXB0cword2lsbCBiZSBoYW5kbGVkIGJ5IENQVSAjMC4KKworSWYgdGhlIHBsYXRmb3JtIGRvZXNuJ3QgZmVhdHVyZSBpbnRlcnJ1cHQgcmVkaXJlY3Rpb24gSU9TQVBJQyBmaXhlZAorcm91dGluZyBpcyB1c2VkLiBUaGUgdGFyZ2V0IENQVXMgYXJlIGRpc3RyaWJ1dGVkIGluIGEgcm91bmQgcm9iaW4KK21hbm5lci4gSVJRcyB3aWxsIGJlIHJvdXRlZCBvbmx5IHRvIHRoZSBzZWxlY3RlZCB0YXJnZXQgQ1BVcy4gQ2hlY2sKK3dpdGgKKyAgICAgICAgY2F0IC9wcm9jL2ludGVycnVwdHMKKworCisKK0NvbW1lbnRzOgorCitPbiBsYXJnZSAobXVsdGktbm9kZSkgc3lzdGVtcyBpdCBpcyByZWNvbW1lbmRlZCB0byByb3V0ZSB0aGUgSVJRcyB0bwordGhlIG5vZGUgdG8gd2hpY2ggdGhlIGNvcnJlc3BvbmRpbmcgZGV2aWNlIGlzIGNvbm5lY3RlZC4KK0ZvciBzeXN0ZW1zIGxpa2UgdGhlIE5FQyBBenVzQSB3ZSBnZXQgSVJRIG5vZGUtYWZmaW5pdHkgZm9yIGZyZWUuIFRoaXMKK2lzIGJlY2F1c2UgdXN1YWxseSB0aGUgY2hpcHNldHMgb24gZWFjaCBub2RlIHJlZGlyZWN0IHRoZSBpbnRlcnJ1cHRzCitvbmx5IHRvIHRoZWlyIG93biBDUFVzIChhcyB0aGV5IGNhbm5vdCBzZWUgdGhlIFhUUCByZWdpc3RlcnMgb24gdGhlCitvdGhlciBub2RlcykuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaWE2NC9NYWtlZmlsZSBiL0RvY3VtZW50YXRpb24vaWE2NC9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDkzMTYzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pYTY0L01ha2VmaWxlCkBAIC0wLDAgKzEsNSBAQAorIyBMaXN0IG9mIHByb2dyYW1zIHRvIGJ1aWxkCitob3N0cHJvZ3MteSA6PSBhbGlhc2luZy10ZXN0CisKKyMgVGVsbCBrYnVpbGQgdG8gYWx3YXlzIGJ1aWxkIHRoZSBwcm9ncmFtcworYWx3YXlzIDo9ICQoaG9zdHByb2dzLXkpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lhNjQvUkVBRE1FIGIvRG9jdW1lbnRhdGlvbi9pYTY0L1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTE3ZjIxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pYTY0L1JFQURNRQpAQCAtMCwwICsxLDQzIEBACisgICAgICAgIExpbnV4IGtlcm5lbCByZWxlYXNlIDIuNC54eCBmb3IgdGhlIElBLTY0IFBsYXRmb3JtCisKKyAgIFRoZXNlIGFyZSB0aGUgcmVsZWFzZSBub3RlcyBmb3IgTGludXggdmVyc2lvbiAyLjQgZm9yIElBLTY0CisgICBwbGF0Zm9ybS4gIFRoaXMgZG9jdW1lbnQgcHJvdmlkZXMgaW5mb3JtYXRpb24gc3BlY2lmaWMgdG8gSUEtNjQKKyAgIE9OTFksIHRvIGdldCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBMaW51eCBrZXJuZWwgYWxzbworICAgcmVhZCB0aGUgb3JpZ2luYWwgTGludXggUkVBRE1FIHByb3ZpZGVkIHdpdGggdGhlIGtlcm5lbC4KKworSU5TVEFMTElORyB0aGUga2VybmVsOgorCisgLSBJQS02NCBrZXJuZWwgaW5zdGFsbGF0aW9uIGlzIHRoZSBzYW1lIGFzIHRoZSBvdGhlciBwbGF0Zm9ybXMsIHNlZQorICAgb3JpZ2luYWwgUkVBRE1FIGZvciBkZXRhaWxzLgorCisKK1NPRlRXQVJFIFJFUVVJUkVNRU5UUworCisgICBDb21waWxpbmcgYW5kIHJ1bm5pbmcgdGhpcyBrZXJuZWwgcmVxdWlyZXMgYW4gSUEtNjQgY29tcGxpYW50IEdDQworICAgY29tcGlsZXIuICBBbmQgdmFyaW91cyBzb2Z0d2FyZSBwYWNrYWdlcyBhbHNvIGNvbXBpbGVkIHdpdGggYW4KKyAgIElBLTY0IGNvbXBsaWFudCBHQ0MgY29tcGlsZXIuCisKKworQ09ORklHVVJJTkcgdGhlIGtlcm5lbDoKKworICAgQ29uZmlndXJhdGlvbiBpcyB0aGUgc2FtZSwgc2VlIG9yaWdpbmFsIFJFQURNRSBmb3IgZGV0YWlscy4KKworCitDT01QSUxJTkcgdGhlIGtlcm5lbDoKKworIC0gQ29tcGlsaW5nIHRoaXMga2VybmVsIGRvZXNuJ3QgZGlmZmVyIGZyb20gb3RoZXIgcGxhdGZvcm0gc28gcmVhZAorICAgdGhlIG9yaWdpbmFsIFJFQURNRSBmb3IgZGV0YWlscyBCVVQgbWFrZSBzdXJlIHlvdSBoYXZlIGFuIElBLTY0CisgICBjb21wbGlhbnQgR0NDIGNvbXBpbGVyLgorCitJQS02NCBTUEVDSUZJQ1MKKworIC0gR2VuZXJhbCBpc3N1ZXM6CisKKyAgICBvIEhhcmRseSBhbnkgcGVyZm9ybWFuY2UgdHVuaW5nIGhhcyBiZWVuIGRvbmUuIE9idmlvdXMgdGFyZ2V0cworICAgICAgaW5jbHVkZSB0aGUgbGlicmFyeSByb3V0aW5lcyAoSVAgY2hlY2tzdW0sIGV0Yy4pLiBMZXNzCisgICAgICBvYnZpb3VzIHRhcmdldHMgaW5jbHVkZSBtYWtpbmcgc3VyZSB3ZSBkb24ndCBmbHVzaCB0aGUgVExCCisgICAgICBuZWVkbGVzc2x5LCBldGMuCisKKyAgICBvIFNNUCBsb2NrcyBjbGVhbnVwL29wdGltaXphdGlvbgorCisgICAgbyBJQTMyIHN1cHBvcnQuICBDdXJyZW50bHkgZXhwZXJpbWVudGFsLiAgSXQgbW9zdGx5IHdvcmtzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pYTY0L2FsaWFzaW5nLXRlc3QuYyBiL0RvY3VtZW50YXRpb24vaWE2NC9hbGlhc2luZy10ZXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJhMTkwZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaWE2NC9hbGlhc2luZy10ZXN0LmMKQEAgLTAsMCArMSwyNjMgQEAKKy8qCisgKiBFeGVyY2lzZSAvZGV2L21lbSBtbWFwIGNhc2VzIHRoYXQgaGF2ZSBiZWVuIHRyb3VibGVzb21lIGluIHRoZSBwYXN0CisgKgorICogKGMpIENvcHlyaWdodCAyMDA3IEhld2xldHQtUGFja2FyZCBEZXZlbG9wbWVudCBDb21wYW55LCBMLlAuCisgKglCam9ybiBIZWxnYWFzIDxiam9ybi5oZWxnYWFzQGhwLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8Zm5tYXRjaC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxsaW51eC9wY2kuaD4KKworaW50IHN1bTsKKworc3RhdGljIGludCBtYXBfbWVtKGNoYXIgKnBhdGgsIG9mZl90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCwgaW50IHRvdWNoKQoreworCWludCBmZCwgcmM7CisJdm9pZCAqYWRkcjsKKwlpbnQgKmM7CisKKwlmZCA9IG9wZW4ocGF0aCwgT19SRFdSKTsKKwlpZiAoZmQgPT0gLTEpIHsKKwkJcGVycm9yKHBhdGgpOworCQlyZXR1cm4gLTE7CisJfQorCisJaWYgKGZubWF0Y2goIi9wcm9jL2J1cy9wY2kvKiIsIHBhdGgsIDApID09IDApIHsKKwkJcmMgPSBpb2N0bChmZCwgUENJSU9DX01NQVBfSVNfTUVNKTsKKwkJaWYgKHJjID09IC0xKQorCQkJcGVycm9yKCJQQ0lJT0NfTU1BUF9JU19NRU0gaW9jdGwiKTsKKwl9CisKKwlhZGRyID0gbW1hcChOVUxMLCBsZW5ndGgsIFBST1RfUkVBRHxQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBmZCwgb2Zmc2V0KTsKKwlpZiAoYWRkciA9PSBNQVBfRkFJTEVEKQorCQlyZXR1cm4gMTsKKworCWlmICh0b3VjaCkgeworCQljID0gKGludCAqKSBhZGRyOworCQl3aGlsZSAoYyA8IChpbnQgKikgKGFkZHIgKyBsZW5ndGgpKQorCQkJc3VtICs9ICpjKys7CisJfQorCisJcmMgPSBtdW5tYXAoYWRkciwgbGVuZ3RoKTsKKwlpZiAocmMgPT0gLTEpIHsKKwkJcGVycm9yKCJtdW5tYXAiKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWNsb3NlKGZkKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzY2FuX3RyZWUoY2hhciAqcGF0aCwgY2hhciAqZmlsZSwgb2ZmX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBpbnQgdG91Y2gpCit7CisJc3RydWN0IGRpcmVudCAqKm5hbWVsaXN0OworCWNoYXIgKm5hbWUsICpwYXRoMjsKKwlpbnQgaSwgbiwgciwgcmMgPSAwLCByZXN1bHQgPSAwOworCXN0cnVjdCBzdGF0IGJ1ZjsKKworCW4gPSBzY2FuZGlyKHBhdGgsICZuYW1lbGlzdCwgMCwgYWxwaGFzb3J0KTsKKwlpZiAobiA8IDApIHsKKwkJcGVycm9yKCJzY2FuZGlyIik7CisJCXJldHVybiAtMTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisJCW5hbWUgPSBuYW1lbGlzdFtpXS0+ZF9uYW1lOworCisJCWlmIChmbm1hdGNoKCIuIiwgbmFtZSwgMCkgPT0gMCkKKwkJCWdvdG8gc2tpcDsKKwkJaWYgKGZubWF0Y2goIi4uIiwgbmFtZSwgMCkgPT0gMCkKKwkJCWdvdG8gc2tpcDsKKworCQlwYXRoMiA9IG1hbGxvYyhzdHJsZW4ocGF0aCkgKyBzdHJsZW4obmFtZSkgKyAzKTsKKwkJc3RyY3B5KHBhdGgyLCBwYXRoKTsKKwkJc3RyY2F0KHBhdGgyLCAiLyIpOworCQlzdHJjYXQocGF0aDIsIG5hbWUpOworCisJCWlmIChmbm1hdGNoKGZpbGUsIG5hbWUsIDApID09IDApIHsKKwkJCXJjID0gbWFwX21lbShwYXRoMiwgb2Zmc2V0LCBsZW5ndGgsIHRvdWNoKTsKKwkJCWlmIChyYyA9PSAwKQorCQkJCWZwcmludGYoc3RkZXJyLCAiUEFTUzogJXMgMHglbHgtMHglbHggaXMgJXNcbiIsIHBhdGgyLCBvZmZzZXQsIG9mZnNldCArIGxlbmd0aCwgdG91Y2ggPyAicmVhZGFibGUiIDogIm1hcHBhYmxlIik7CisJCQllbHNlIGlmIChyYyA+IDApCisJCQkJZnByaW50ZihzdGRlcnIsICJQQVNTOiAlcyAweCVseC0weCVseCBub3QgbWFwcGFibGVcbiIsIHBhdGgyLCBvZmZzZXQsIG9mZnNldCArIGxlbmd0aCk7CisJCQllbHNlIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIkZBSUw6ICVzIDB4JWx4LTB4JWx4IG5vdCBhY2Nlc3NpYmxlXG4iLCBwYXRoMiwgb2Zmc2V0LCBvZmZzZXQgKyBsZW5ndGgpOworCQkJCXJldHVybiByYzsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCXIgPSBsc3RhdChwYXRoMiwgJmJ1Zik7CisJCQlpZiAociA9PSAwICYmIFNfSVNESVIoYnVmLnN0X21vZGUpKSB7CisJCQkJcmMgPSBzY2FuX3RyZWUocGF0aDIsIGZpbGUsIG9mZnNldCwgbGVuZ3RoLCB0b3VjaCk7CisJCQkJaWYgKHJjIDwgMCkKKwkJCQkJcmV0dXJuIHJjOworCQkJfQorCQl9CisKKwkJcmVzdWx0IHw9IHJjOworCQlmcmVlKHBhdGgyKTsKKworc2tpcDoKKwkJZnJlZShuYW1lbGlzdFtpXSk7CisJfQorCWZyZWUobmFtZWxpc3QpOworCXJldHVybiByZXN1bHQ7Cit9CisKK2NoYXIgYnVmWzEwMjRdOworCitzdGF0aWMgaW50IHJlYWRfcm9tKGNoYXIgKnBhdGgpCit7CisJaW50IGZkLCByYzsKKwlzaXplX3Qgc2l6ZSA9IDA7CisKKwlmZCA9IG9wZW4ocGF0aCwgT19SRFdSKTsKKwlpZiAoZmQgPT0gLTEpIHsKKwkJcGVycm9yKHBhdGgpOworCQlyZXR1cm4gLTE7CisJfQorCisJcmMgPSB3cml0ZShmZCwgIjEiLCAyKTsKKwlpZiAocmMgPD0gMCkgeworCQljbG9zZShmZCk7CisJCXBlcnJvcigid3JpdGUiKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWRvIHsKKwkJcmMgPSByZWFkKGZkLCBidWYsIHNpemVvZihidWYpKTsKKwkJaWYgKHJjID4gMCkKKwkJCXNpemUgKz0gcmM7CisJfSB3aGlsZSAocmMgPiAwKTsKKworCWNsb3NlKGZkKTsKKwlyZXR1cm4gc2l6ZTsKK30KKworc3RhdGljIGludCBzY2FuX3JvbShjaGFyICpwYXRoLCBjaGFyICpmaWxlKQoreworCXN0cnVjdCBkaXJlbnQgKipuYW1lbGlzdDsKKwljaGFyICpuYW1lLCAqcGF0aDI7CisJaW50IGksIG4sIHIsIHJjID0gMCwgcmVzdWx0ID0gMDsKKwlzdHJ1Y3Qgc3RhdCBidWY7CisKKwluID0gc2NhbmRpcihwYXRoLCAmbmFtZWxpc3QsIDAsIGFscGhhc29ydCk7CisJaWYgKG4gPCAwKSB7CisJCXBlcnJvcigic2NhbmRpciIpOworCQlyZXR1cm4gLTE7CisJfQorCisJZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworCQluYW1lID0gbmFtZWxpc3RbaV0tPmRfbmFtZTsKKworCQlpZiAoZm5tYXRjaCgiLiIsIG5hbWUsIDApID09IDApCisJCQlnb3RvIHNraXA7CisJCWlmIChmbm1hdGNoKCIuLiIsIG5hbWUsIDApID09IDApCisJCQlnb3RvIHNraXA7CisKKwkJcGF0aDIgPSBtYWxsb2Moc3RybGVuKHBhdGgpICsgc3RybGVuKG5hbWUpICsgMyk7CisJCXN0cmNweShwYXRoMiwgcGF0aCk7CisJCXN0cmNhdChwYXRoMiwgIi8iKTsKKwkJc3RyY2F0KHBhdGgyLCBuYW1lKTsKKworCQlpZiAoZm5tYXRjaChmaWxlLCBuYW1lLCAwKSA9PSAwKSB7CisJCQlyYyA9IHJlYWRfcm9tKHBhdGgyKTsKKworCQkJLyoKKwkJCSAqIEl0J3MgT0sgaWYgdGhlIFJPTSBpcyB1bnJlYWRhYmxlLiAgTWF5YmUgdGhlcmUKKwkJCSAqIGlzIG5vIFJPTSwgb3Igc29tZSBvdGhlciBlcnJvciBvY2N1cnJlZC4gIFRoZQorCQkJICogaW1wb3J0YW50IHRoaW5nIGlzIHRoYXQgbm8gTUNBIGhhcHBlbmVkLgorCQkJICovCisJCQlpZiAocmMgPiAwKQorCQkJCWZwcmludGYoc3RkZXJyLCAiUEFTUzogJXMgcmVhZCAlZCBieXRlc1xuIiwgcGF0aDIsIHJjKTsKKwkJCWVsc2UgeworCQkJCWZwcmludGYoc3RkZXJyLCAiUEFTUzogJXMgbm90IHJlYWRhYmxlXG4iLCBwYXRoMik7CisJCQkJcmV0dXJuIHJjOworCQkJfQorCQl9IGVsc2UgeworCQkJciA9IGxzdGF0KHBhdGgyLCAmYnVmKTsKKwkJCWlmIChyID09IDAgJiYgU19JU0RJUihidWYuc3RfbW9kZSkpIHsKKwkJCQlyYyA9IHNjYW5fcm9tKHBhdGgyLCBmaWxlKTsKKwkJCQlpZiAocmMgPCAwKQorCQkJCQlyZXR1cm4gcmM7CisJCQl9CisJCX0KKworCQlyZXN1bHQgfD0gcmM7CisJCWZyZWUocGF0aDIpOworCitza2lwOgorCQlmcmVlKG5hbWVsaXN0W2ldKTsKKwl9CisJZnJlZShuYW1lbGlzdCk7CisJcmV0dXJuIHJlc3VsdDsKK30KKworaW50IG1haW4odm9pZCkKK3sKKwlpbnQgcmM7CisKKwlpZiAobWFwX21lbSgiL2Rldi9tZW0iLCAwLCAweEEwMDAwLCAxKSA9PSAwKQorCQlmcHJpbnRmKHN0ZGVyciwgIlBBU1M6IC9kZXYvbWVtIDB4MC0weGEwMDAwIGlzIHJlYWRhYmxlXG4iKTsKKwllbHNlCisJCWZwcmludGYoc3RkZXJyLCAiRkFJTDogL2Rldi9tZW0gMHgwLTB4YTAwMDAgbm90IGFjY2Vzc2libGVcbiIpOworCisJLyoKKwkgKiBJdCdzIG5vdCBzYWZlIHRvIGJsaW5kbHkgcmVhZCB0aGUgVkdBIGZyYW1lIGJ1ZmZlci4gIElmIHlvdSBrbm93CisJICogaG93IHRvIHBva2UgdGhlIGNhcmQgdGhlIHJpZ2h0IHdheSwgaXQgc2hvdWxkIHJlc3BvbmQsIGJ1dCBpdCdzCisJICogbm90IHNhZmUgaW4gZ2VuZXJhbC4gIE1hbnkgbWFjaGluZXMsIGUuZy4sIEludGVsIGNoaXBzZXRzLCBjb3ZlcgorCSAqIHVwIGEgbm9uLXJlc3BvbmRpbmcgY2FyZCBieSBqdXN0IHJldHVybmluZyAtMSwgYnV0IG90aGVycyB3aWxsCisJICogcmVwb3J0IHRoZSBmYWlsdXJlIGFzIGEgbWFjaGluZSBjaGVjay4KKwkgKi8KKwlpZiAobWFwX21lbSgiL2Rldi9tZW0iLCAweEEwMDAwLCAweDIwMDAwLCAwKSA9PSAwKQorCQlmcHJpbnRmKHN0ZGVyciwgIlBBU1M6IC9kZXYvbWVtIDB4YTAwMDAtMHhjMDAwMCBpcyBtYXBwYWJsZVxuIik7CisJZWxzZQorCQlmcHJpbnRmKHN0ZGVyciwgIkZBSUw6IC9kZXYvbWVtIDB4YTAwMDAtMHhjMDAwMCBub3QgYWNjZXNzaWJsZVxuIik7CisKKwlpZiAobWFwX21lbSgiL2Rldi9tZW0iLCAweEMwMDAwLCAweDQwMDAwLCAxKSA9PSAwKQorCQlmcHJpbnRmKHN0ZGVyciwgIlBBU1M6IC9kZXYvbWVtIDB4YzAwMDAtMHgxMDAwMDAgaXMgcmVhZGFibGVcbiIpOworCWVsc2UKKwkJZnByaW50ZihzdGRlcnIsICJGQUlMOiAvZGV2L21lbSAweGMwMDAwLTB4MTAwMDAwIG5vdCBhY2Nlc3NpYmxlXG4iKTsKKworCS8qCisJICogT2Z0ZW4geW91IGNhbiBtYXAgYWxsIHRoZSBpbmRpdmlkdWFsIHBpZWNlcyBhYm92ZSAoMC0weEEwMDAwLAorCSAqIDB4QTAwMDAtMHhDMDAwMCwgYW5kIDB4QzAwMDAtMHgxMDAwMDApLCBidXQgY2FuJ3QgbWFwIHRoZSB3aG9sZQorCSAqIHRoaW5nIGF0IG9uY2UuICBUaGlzIGlzIGJlY2F1c2UgdGhlIGluZGl2aWR1YWwgcGllY2VzIHVzZSBkaWZmZXJlbnQKKwkgKiBhdHRyaWJ1dGVzLCBhbmQgdGhlcmUncyBubyBzaW5nbGUgYXR0cmlidXRlIHN1cHBvcnRlZCBvdmVyIHRoZQorCSAqIHdob2xlIHJlZ2lvbi4KKwkgKi8KKwlyYyA9IG1hcF9tZW0oIi9kZXYvbWVtIiwgMCwgMTAyNCoxMDI0LCAwKTsKKwlpZiAocmMgPT0gMCkKKwkJZnByaW50ZihzdGRlcnIsICJQQVNTOiAvZGV2L21lbSAweDAtMHgxMDAwMDAgaXMgbWFwcGFibGVcbiIpOworCWVsc2UgaWYgKHJjID4gMCkKKwkJZnByaW50ZihzdGRlcnIsICJQQVNTOiAvZGV2L21lbSAweDAtMHgxMDAwMDAgbm90IG1hcHBhYmxlXG4iKTsKKwllbHNlCisJCWZwcmludGYoc3RkZXJyLCAiRkFJTDogL2Rldi9tZW0gMHgwLTB4MTAwMDAwIG5vdCBhY2Nlc3NpYmxlXG4iKTsKKworCXNjYW5fdHJlZSgiL3N5cy9jbGFzcy9wY2lfYnVzIiwgImxlZ2FjeV9tZW0iLCAwLCAweEEwMDAwLCAxKTsKKwlzY2FuX3RyZWUoIi9zeXMvY2xhc3MvcGNpX2J1cyIsICJsZWdhY3lfbWVtIiwgMHhBMDAwMCwgMHgyMDAwMCwgMCk7CisJc2Nhbl90cmVlKCIvc3lzL2NsYXNzL3BjaV9idXMiLCAibGVnYWN5X21lbSIsIDB4QzAwMDAsIDB4NDAwMDAsIDEpOworCXNjYW5fdHJlZSgiL3N5cy9jbGFzcy9wY2lfYnVzIiwgImxlZ2FjeV9tZW0iLCAwLCAxMDI0KjEwMjQsIDApOworCisJc2Nhbl9yb20oIi9zeXMvZGV2aWNlcyIsICJyb20iKTsKKworCXNjYW5fdHJlZSgiL3Byb2MvYnVzL3BjaSIsICI/Py4/IiwgMCwgMHhBMDAwMCwgMSk7CisJc2Nhbl90cmVlKCIvcHJvYy9idXMvcGNpIiwgIj8/Lj8iLCAweEEwMDAwLCAweDIwMDAwLCAwKTsKKwlzY2FuX3RyZWUoIi9wcm9jL2J1cy9wY2kiLCAiPz8uPyIsIDB4QzAwMDAsIDB4NDAwMDAsIDEpOworCXNjYW5fdHJlZSgiL3Byb2MvYnVzL3BjaSIsICI/Py4/IiwgMCwgMTAyNCoxMDI0LCAwKTsKKworCXJldHVybiByYzsKK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaWE2NC9hbGlhc2luZy50eHQgYi9Eb2N1bWVudGF0aW9uL2lhNjQvYWxpYXNpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhNGRlYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lhNjQvYWxpYXNpbmcudHh0CkBAIC0wLDAgKzEsMjIxIEBACisJICAgICAgICAgTUVNT1JZIEFUVFJJQlVURSBBTElBU0lORyBPTiBJQS02NAorCisJCQkgICBCam9ybiBIZWxnYWFzCisJCSAgICAgICA8Ympvcm4uaGVsZ2Fhc0BocC5jb20+CisJCQkgICAgTWF5IDQsIDIwMDYKKworCitNRU1PUlkgQVRUUklCVVRFUworCisgICAgSXRhbml1bSBzdXBwb3J0cyBzZXZlcmFsIGF0dHJpYnV0ZXMgZm9yIHZpcnR1YWwgbWVtb3J5IHJlZmVyZW5jZXMuCisgICAgVGhlIGF0dHJpYnV0ZSBpcyBwYXJ0IG9mIHRoZSB2aXJ0dWFsIHRyYW5zbGF0aW9uLCBpLmUuLCBpdCBpcworICAgIGNvbnRhaW5lZCBpbiB0aGUgVExCIGVudHJ5LiAgVGhlIG9uZXMgb2YgbW9zdCBpbnRlcmVzdCB0byB0aGUgTGludXgKKyAgICBrZXJuZWwgYXJlOgorCisJV0IJCVdyaXRlLWJhY2sgKGNhY2hlYWJsZSkKKwlVQwkJVW5jYWNoZWFibGUKKwlXQwkJV3JpdGUtY29hbGVzY2luZworCisgICAgU3lzdGVtIG1lbW9yeSB0eXBpY2FsbHkgdXNlcyB0aGUgV0IgYXR0cmlidXRlLiAgVGhlIFVDIGF0dHJpYnV0ZSBpcworICAgIHVzZWQgZm9yIG1lbW9yeS1tYXBwZWQgSS9PIGRldmljZXMuICBUaGUgV0MgYXR0cmlidXRlIGlzIHVuY2FjaGVhYmxlCisgICAgbGlrZSBVQyBpcywgYnV0IHdyaXRlcyBtYXkgYmUgZGVsYXllZCBhbmQgY29tYmluZWQgdG8gaW5jcmVhc2UKKyAgICBwZXJmb3JtYW5jZSBmb3IgdGhpbmdzIGxpa2UgZnJhbWUgYnVmZmVycy4KKworICAgIFRoZSBJdGFuaXVtIGFyY2hpdGVjdHVyZSByZXF1aXJlcyB0aGF0IHdlIGF2b2lkIGFjY2Vzc2luZyB0aGUgc2FtZQorICAgIHBhZ2Ugd2l0aCBib3RoIGEgY2FjaGVhYmxlIG1hcHBpbmcgYW5kIGFuIHVuY2FjaGVhYmxlIG1hcHBpbmdbMV0uCisKKyAgICBUaGUgZGVzaWduIG9mIHRoZSBjaGlwc2V0IGRldGVybWluZXMgd2hpY2ggYXR0cmlidXRlcyBhcmUgc3VwcG9ydGVkCisgICAgb24gd2hpY2ggcmVnaW9ucyBvZiB0aGUgYWRkcmVzcyBzcGFjZS4gIEZvciBleGFtcGxlLCBzb21lIGNoaXBzZXRzCisgICAgc3VwcG9ydCBlaXRoZXIgV0Igb3IgVUMgYWNjZXNzIHRvIG1haW4gbWVtb3J5LCB3aGlsZSBvdGhlcnMgc3VwcG9ydAorICAgIG9ubHkgV0IgYWNjZXNzLgorCitNRU1PUlkgTUFQCisKKyAgICBQbGF0Zm9ybSBmaXJtd2FyZSBkZXNjcmliZXMgdGhlIHBoeXNpY2FsIG1lbW9yeSBtYXAgYW5kIHRoZQorICAgIHN1cHBvcnRlZCBhdHRyaWJ1dGVzIGZvciBlYWNoIHJlZ2lvbi4gIEF0IGJvb3QtdGltZSwgdGhlIGtlcm5lbCB1c2VzCisgICAgdGhlIEVGSSBHZXRNZW1vcnlNYXAoKSBpbnRlcmZhY2UuICBBQ1BJIGNhbiBhbHNvIGRlc2NyaWJlIG1lbW9yeQorICAgIGRldmljZXMgYW5kIHRoZSBhdHRyaWJ1dGVzIHRoZXkgc3VwcG9ydCwgYnV0IExpbnV4L2lhNjQgY3VycmVudGx5CisgICAgZG9lc24ndCB1c2UgdGhpcyBpbmZvcm1hdGlvbi4KKworICAgIFRoZSBrZXJuZWwgdXNlcyB0aGUgZWZpX21lbW1hcCB0YWJsZSByZXR1cm5lZCBmcm9tIEdldE1lbW9yeU1hcCgpIHRvCisgICAgbGVhcm4gdGhlIGF0dHJpYnV0ZXMgc3VwcG9ydGVkIGJ5IGVhY2ggcmVnaW9uIG9mIHBoeXNpY2FsIGFkZHJlc3MKKyAgICBzcGFjZS4gIFVuZm9ydHVuYXRlbHksIHRoaXMgdGFibGUgZG9lcyBub3QgY29tcGxldGVseSBkZXNjcmliZSB0aGUKKyAgICBhZGRyZXNzIHNwYWNlIGJlY2F1c2Ugc29tZSBtYWNoaW5lcyBvbWl0IHNvbWUgb3IgYWxsIG9mIHRoZSBNTUlPCisgICAgcmVnaW9ucyBmcm9tIHRoZSBtYXAuCisKKyAgICBUaGUga2VybmVsIG1haW50YWlucyBhbm90aGVyIHRhYmxlLCBrZXJuX21lbW1hcCwgd2hpY2ggZGVzY3JpYmVzIHRoZQorICAgIG1lbW9yeSBMaW51eCBpcyBhY3R1YWxseSB1c2luZyBhbmQgdGhlIGF0dHJpYnV0ZSBmb3IgZWFjaCByZWdpb24uCisgICAgVGhpcyBjb250YWlucyBvbmx5IHN5c3RlbSBtZW1vcnk7IGl0IGRvZXMgbm90IGNvbnRhaW4gTU1JTyBzcGFjZS4KKworICAgIFRoZSBrZXJuX21lbW1hcCB0YWJsZSB0eXBpY2FsbHkgY29udGFpbnMgb25seSBhIHN1YnNldCBvZiB0aGUgc3lzdGVtCisgICAgbWVtb3J5IGRlc2NyaWJlZCBieSB0aGUgZWZpX21lbW1hcC4gIExpbnV4L2lhNjQgY2FuJ3QgdXNlIGFsbCBtZW1vcnkKKyAgICBpbiB0aGUgc3lzdGVtIGJlY2F1c2Ugb2YgY29uc3RyYWludHMgaW1wb3NlZCBieSB0aGUgaWRlbnRpdHkgbWFwcGluZworICAgIHNjaGVtZS4KKworICAgIFRoZSBlZmlfbWVtbWFwIHRhYmxlIGlzIHByZXNlcnZlZCB1bm1vZGlmaWVkIGJlY2F1c2UgdGhlIG9yaWdpbmFsCisgICAgYm9vdC10aW1lIGluZm9ybWF0aW9uIGlzIHJlcXVpcmVkIGZvciBrZXhlYy4KKworS0VSTkVMIElERU5USVRZIE1BUFBJTkdTCisKKyAgICBMaW51eC9pYTY0IGlkZW50aXR5IG1hcHBpbmdzIGFyZSBkb25lIHdpdGggbGFyZ2UgcGFnZXMsIGN1cnJlbnRseQorICAgIGVpdGhlciAxNk1CIG9yIDY0TUIsIHJlZmVycmVkIHRvIGFzICJncmFudWxlcy4iICBDYWNoZWFibGUgbWFwcGluZ3MKKyAgICBhcmUgc3BlY3VsYXRpdmVbMl0sIHNvIHRoZSBwcm9jZXNzb3IgY2FuIHJlYWQgYW55IGxvY2F0aW9uIGluIHRoZQorICAgIHBhZ2UgYXQgYW55IHRpbWUsIGluZGVwZW5kZW50IG9mIHRoZSBwcm9ncmFtbWVyJ3MgaW50ZW50aW9ucy4gIFRoaXMKKyAgICBtZWFucyB0aGF0IHRvIGF2b2lkIGF0dHJpYnV0ZSBhbGlhc2luZywgTGludXggY2FuIGNyZWF0ZSBhIGNhY2hlYWJsZQorICAgIGlkZW50aXR5IG1hcHBpbmcgb25seSB3aGVuIHRoZSBlbnRpcmUgZ3JhbnVsZSBzdXBwb3J0cyBjYWNoZWFibGUKKyAgICBhY2Nlc3MuCisKKyAgICBUaGVyZWZvcmUsIGtlcm5fbWVtbWFwIGNvbnRhaW5zIG9ubHkgZnVsbCBncmFudWxlLXNpemVkIHJlZ2lvbnMgdGhhdAorICAgIGNhbiByZWZlcmVuY2VkIHNhZmVseSBieSBhbiBpZGVudGl0eSBtYXBwaW5nLgorCisgICAgVW5jYWNoZWFibGUgbWFwcGluZ3MgYXJlIG5vdCBzcGVjdWxhdGl2ZSwgc28gdGhlIHByb2Nlc3NvciB3aWxsCisgICAgZ2VuZXJhdGUgVUMgYWNjZXNzZXMgb25seSB0byBsb2NhdGlvbnMgZXhwbGljaXRseSByZWZlcmVuY2VkIGJ5CisgICAgc29mdHdhcmUuICBUaGlzIGFsbG93cyBVQyBpZGVudGl0eSBtYXBwaW5ncyB0byBjb3ZlciBncmFudWxlcyB0aGF0CisgICAgYXJlIG9ubHkgcGFydGlhbGx5IHBvcHVsYXRlZCwgb3IgcG9wdWxhdGVkIHdpdGggYSBjb21iaW5hdGlvbiBvZiBVQworICAgIGFuZCBXQiByZWdpb25zLgorCitVU0VSIE1BUFBJTkdTCisKKyAgICBVc2VyIG1hcHBpbmdzIGFyZSB0eXBpY2FsbHkgZG9uZSB3aXRoIDE2SyBvciA2NEsgcGFnZXMuICBUaGUgc21hbGxlcgorICAgIHBhZ2Ugc2l6ZSBhbGxvd3MgbW9yZSBmbGV4aWJpbGl0eSBiZWNhdXNlIG9ubHkgMTZLIG9yIDY0SyBoYXMgdG8gYmUKKyAgICBob21vZ2VuZW91cyB3aXRoIHJlc3BlY3QgdG8gbWVtb3J5IGF0dHJpYnV0ZXMuCisKK1BPVEVOVElBTCBBVFRSSUJVVEUgQUxJQVNJTkcgQ0FTRVMKKworICAgIFRoZXJlIGFyZSBzZXZlcmFsIHdheXMgdGhlIGtlcm5lbCBjcmVhdGVzIG5ldyBtYXBwaW5nczoKKworICAgIG1tYXAgb2YgL2Rldi9tZW0KKworCVRoaXMgdXNlcyByZW1hcF9wZm5fcmFuZ2UoKSwgd2hpY2ggY3JlYXRlcyB1c2VyIG1hcHBpbmdzLiAgVGhlc2UKKwltYXBwaW5ncyBtYXkgYmUgZWl0aGVyIFdCIG9yIFVDLiAgSWYgdGhlIHJlZ2lvbiBiZWluZyBtYXBwZWQKKwloYXBwZW5zIHRvIGJlIGluIGtlcm5fbWVtbWFwLCBtZWFuaW5nIHRoYXQgaXQgbWF5IGFsc28gYmUgbWFwcGVkCisJYnkgYSBrZXJuZWwgaWRlbnRpdHkgbWFwcGluZywgdGhlIHVzZXIgbWFwcGluZyBtdXN0IHVzZSB0aGUgc2FtZQorCWF0dHJpYnV0ZSBhcyB0aGUga2VybmVsIG1hcHBpbmcuCisKKwlJZiB0aGUgcmVnaW9uIGlzIG5vdCBpbiBrZXJuX21lbW1hcCwgdGhlIHVzZXIgbWFwcGluZyBzaG91bGQgdXNlCisJYW4gYXR0cmlidXRlIHJlcG9ydGVkIGFzIGJlaW5nIHN1cHBvcnRlZCBpbiB0aGUgRUZJIG1lbW9yeSBtYXAuCisKKwlTaW5jZSB0aGUgRUZJIG1lbW9yeSBtYXAgZG9lcyBub3QgZGVzY3JpYmUgTU1JTyBvbiBzb21lCisJbWFjaGluZXMsIHRoaXMgc2hvdWxkIHVzZSBhbiB1bmNhY2hlYWJsZSBtYXBwaW5nIGFzIGEgZmFsbGJhY2suCisKKyAgICBtbWFwIG9mIC9zeXMvY2xhc3MvcGNpX2J1cy8uLi4vbGVnYWN5X21lbQorCisJVGhpcyBpcyB2ZXJ5IHNpbWlsYXIgdG8gbW1hcCBvZiAvZGV2L21lbSwgZXhjZXB0IHRoYXQgbGVnYWN5X21lbQorCW9ubHkgYWxsb3dzIG1tYXAgb2YgdGhlIG9uZSBtZWdhYnl0ZSAibGVnYWN5IE1NSU8iIGFyZWEgZm9yIGEKKwlzcGVjaWZpYyBQQ0kgYnVzLiAgVHlwaWNhbGx5IHRoaXMgaXMgdGhlIGZpcnN0IG1lZ2FieXRlIG9mCisJcGh5c2ljYWwgYWRkcmVzcyBzcGFjZSwgYnV0IGl0IG1heSBiZSBkaWZmZXJlbnQgb24gbWFjaGluZXMgd2l0aAorCXNldmVyYWwgVkdBIGRldmljZXMuCisKKwkiWCIgdXNlcyB0aGlzIHRvIGFjY2VzcyBWR0EgZnJhbWUgYnVmZmVycy4gIFVzaW5nIGxlZ2FjeV9tZW0KKwlyYXRoZXIgdGhhbiAvZGV2L21lbSBhbGxvd3MgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIFggdG8gdGFsayB0bworCWRpZmZlcmVudCBWR0EgY2FyZHMuCisKKwlUaGUgL2Rldi9tZW0gbW1hcCBjb25zdHJhaW50cyBhcHBseS4KKworICAgIG1tYXAgb2YgL3Byb2MvYnVzL3BjaS8uLi4vPz8uPworCisgICAgCVRoaXMgaXMgYW4gTU1JTyBtbWFwIG9mIFBDSSBmdW5jdGlvbnMsIHdoaWNoIGFkZGl0aW9uYWxseSBtYXkgb3IKKwltYXkgbm90IGJlIHJlcXVlc3RlZCBhcyB1c2luZyB0aGUgV0MgYXR0cmlidXRlLgorCisJSWYgV0MgaXMgcmVxdWVzdGVkLCBhbmQgdGhlIHJlZ2lvbiBpbiBrZXJuX21lbW1hcCBpcyBlaXRoZXIgV0MKKwlvciBVQywgYW5kIHRoZSBFRkkgbWVtb3J5IG1hcCBkZXNpZ25hdGVzIHRoZSByZWdpb24gYXMgV0MsIHRoZW4KKwl0aGUgV0MgbWFwcGluZyBpcyBhbGxvd2VkLgorCisJT3RoZXJ3aXNlLCB0aGUgdXNlciBtYXBwaW5nIG11c3QgdXNlIHRoZSBzYW1lIGF0dHJpYnV0ZSBhcyB0aGUKKwlrZXJuZWwgbWFwcGluZy4KKworICAgIHJlYWQvd3JpdGUgb2YgL2Rldi9tZW0KKworCVRoaXMgdXNlcyBjb3B5X2Zyb21fdXNlcigpLCB3aGljaCBpbXBsaWNpdGx5IHVzZXMgYSBrZXJuZWwKKwlpZGVudGl0eSBtYXBwaW5nLiAgVGhpcyBpcyBvYnZpb3VzbHkgc2FmZSBmb3IgdGhpbmdzIGluCisJa2Vybl9tZW1tYXAuCisKKwlUaGVyZSBtYXkgYmUgY29ybmVyIGNhc2VzIG9mIHRoaW5ncyB0aGF0IGFyZSBub3QgaW4ga2Vybl9tZW1tYXAsCisJYnV0IGNvdWxkIGJlIGFjY2Vzc2VkIHRoaXMgd2F5LiAgRm9yIGV4YW1wbGUsIHJlZ2lzdGVycyBpbiBNTUlPCisJc3BhY2UgYXJlIG5vdCBpbiBrZXJuX21lbW1hcCwgYnV0IGNvdWxkIGJlIGFjY2Vzc2VkIHdpdGggYSBVQworCW1hcHBpbmcuICBUaGlzIHdvdWxkIG5vdCBjYXVzZSBhdHRyaWJ1dGUgYWxpYXNpbmcuICBCdXQKKwlyZWdpc3RlcnMgdHlwaWNhbGx5IGNhbiBiZSBhY2Nlc3NlZCBvbmx5IHdpdGggZm91ci1ieXRlIG9yCisJZWlnaHQtYnl0ZSBhY2Nlc3NlcywgYW5kIHRoZSBjb3B5X2Zyb21fdXNlcigpIHBhdGggZG9lc24ndCBhbGxvdworCWFueSBjb250cm9sIG92ZXIgdGhlIGFjY2VzcyBzaXplLCBzbyB0aGlzIHdvdWxkIGJlIGRhbmdlcm91cy4KKworICAgIGlvcmVtYXAoKQorCisJVGhpcyByZXR1cm5zIGEgbWFwcGluZyBmb3IgdXNlIGluc2lkZSB0aGUga2VybmVsLgorCisJSWYgdGhlIHJlZ2lvbiBpcyBpbiBrZXJuX21lbW1hcCwgd2Ugc2hvdWxkIHVzZSB0aGUgYXR0cmlidXRlCisJc3BlY2lmaWVkIHRoZXJlLgorCisJSWYgdGhlIEVGSSBtZW1vcnkgbWFwIHJlcG9ydHMgdGhhdCB0aGUgZW50aXJlIGdyYW51bGUgc3VwcG9ydHMKKwlXQiwgd2Ugc2hvdWxkIHVzZSB0aGF0IChncmFudWxlcyB0aGF0IGFyZSBwYXJ0aWFsbHkgcmVzZXJ2ZWQKKwlvciBvY2N1cGllZCBieSBmaXJtd2FyZSBkbyBub3QgYXBwZWFyIGluIGtlcm5fbWVtbWFwKS4KKworCUlmIHRoZSBncmFudWxlIGNvbnRhaW5zIG5vbi1XQiBtZW1vcnksIGJ1dCB3ZSBjYW4gY292ZXIgdGhlCisJcmVnaW9uIHNhZmVseSB3aXRoIGtlcm5lbCBwYWdlIHRhYmxlIG1hcHBpbmdzLCB3ZSBjYW4gdXNlCisJaW9yZW1hcF9wYWdlX3JhbmdlKCkgYXMgbW9zdCBvdGhlciBhcmNoaXRlY3R1cmVzIGRvLgorCisJRmFpbGluZyBhbGwgb2YgdGhlIGFib3ZlLCB3ZSBoYXZlIHRvIGZhbGwgYmFjayB0byBhIFVDIG1hcHBpbmcuCisKK1BBU1QgUFJPQkxFTSBDQVNFUworCisgICAgbW1hcCBvZiB2YXJpb3VzIE1NSU8gcmVnaW9ucyBmcm9tIC9kZXYvbWVtIGJ5ICJYIiBvbiBJbnRlbCBwbGF0Zm9ybXMKKworICAgICAgVGhlIEVGSSBtZW1vcnkgbWFwIG1heSBub3QgcmVwb3J0IHRoZXNlIE1NSU8gcmVnaW9ucy4KKworICAgICAgVGhlc2UgbXVzdCBiZSBhbGxvd2VkIHNvIHRoYXQgWCB3aWxsIHdvcmsuICBUaGlzIG1lYW5zIHRoYXQKKyAgICAgIHdoZW4gdGhlIEVGSSBtZW1vcnkgbWFwIGlzIGluY29tcGxldGUsIGV2ZXJ5IC9kZXYvbWVtIG1tYXAgbXVzdAorICAgICAgc3VjY2VlZC4gIEl0IG1heSBjcmVhdGUgZWl0aGVyIFdCIG9yIFVDIHVzZXIgbWFwcGluZ3MsIGRlcGVuZGluZworICAgICAgb24gd2hldGhlciB0aGUgcmVnaW9uIGlzIGluIGtlcm5fbWVtbWFwIG9yIHRoZSBFRkkgbWVtb3J5IG1hcC4KKworICAgIG1tYXAgb2YgMHgwLTB4OUZGRkYgL2Rldi9tZW0gYnkgImh3aW5mbyIgb24gSFAgc3gxMDAwIHdpdGggVkdBIGVuYWJsZWQKKworICAgICAgVGhlIEVGSSBtZW1vcnkgbWFwIHJlcG9ydHMgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgorICAgICAgICAweDAwMDAwLTB4OUZGRkYgV0Igb25seQorICAgICAgICAweEEwMDAwLTB4QkZGRkYgVUMgb25seSAoVkdBIGZyYW1lIGJ1ZmZlcikKKyAgICAgICAgMHhDMDAwMC0weEZGRkZGIFdCIG9ubHkKKworICAgICAgVGhpcyBtbWFwIGlzIGRvbmUgd2l0aCB1c2VyIHBhZ2VzLCBub3Qga2VybmVsIGlkZW50aXR5IG1hcHBpbmdzLAorICAgICAgc28gaXQgaXMgc2FmZSB0byB1c2UgV0IgbWFwcGluZ3MuCisKKyAgICAgIFRoZSBrZXJuZWwgVkdBIGRyaXZlciBtYXkgaW9yZW1hcCB0aGUgVkdBIGZyYW1lIGJ1ZmZlciBhdCAweEEwMDAwLAorICAgICAgd2hpY2ggdXNlcyBhIGdyYW51bGUtc2l6ZWQgVUMgbWFwcGluZy4gIFRoaXMgZ3JhbnVsZSB3aWxsIGNvdmVyIHNvbWUKKyAgICAgIFdCLW9ubHkgbWVtb3J5LCBidXQgc2luY2UgVUMgaXMgbm9uLXNwZWN1bGF0aXZlLCB0aGUgcHJvY2Vzc29yIHdpbGwKKyAgICAgIG5ldmVyIGdlbmVyYXRlIGFuIHVuY2FjaGVhYmxlIHJlZmVyZW5jZSB0byB0aGUgV0Itb25seSBhcmVhcyB1bmxlc3MKKyAgICAgIHRoZSBkcml2ZXIgZXhwbGljaXRseSB0b3VjaGVzIHRoZW0uCisKKyAgICBtbWFwIG9mIDB4MC0weEZGRkZGIGxlZ2FjeV9tZW0gYnkgIlgiCisKKyAgICAgIElmIHRoZSBFRkkgbWVtb3J5IG1hcCByZXBvcnRzIHRoYXQgdGhlIGVudGlyZSByYW5nZSBzdXBwb3J0cyB0aGUKKyAgICAgIHNhbWUgYXR0cmlidXRlcywgd2UgY2FuIGFsbG93IHRoZSBtbWFwIChhbmQgd2Ugd2lsbCBwcmVmZXIgV0IgaWYKKyAgICAgIHN1cHBvcnRlZCwgYXMgaXMgdGhlIGNhc2Ugd2l0aCBIUCBzeFsxMl0wMDAgbWFjaGluZXMgd2l0aCBWR0EKKyAgICAgIGRpc2FibGVkKS4KKworICAgICAgSWYgRUZJIHJlcG9ydHMgdGhlIHJhbmdlIGFzIHBhcnRseSBXQiBhbmQgcGFydGx5IFVDIChhcyBvbiBzeFsxMl0wMDAKKyAgICAgIG1hY2hpbmVzIHdpdGggVkdBIGVuYWJsZWQpLCB3ZSBtdXN0IGZhaWwgdGhlIG1tYXAgYmVjYXVzZSB0aGVyZSdzIG5vCisgICAgICBzYWZlIGF0dHJpYnV0ZSB0byB1c2UuCisKKyAgICAgIElmIEVGSSByZXBvcnRzIHNvbWUgb2YgdGhlIHJhbmdlIGJ1dCBub3QgYWxsIChhcyBvbiBJbnRlbCBmaXJtd2FyZQorICAgICAgdGhhdCBkb2Vzbid0IHJlcG9ydCB0aGUgVkdBIGZyYW1lIGJ1ZmZlciBhdCBhbGwpLCB3ZSBzaG91bGQgZmFpbCB0aGUKKyAgICAgIG1tYXAgYW5kIGZvcmNlIHRoZSB1c2VyIHRvIG1hcCBqdXN0IHRoZSBzcGVjaWZpYyByZWdpb24gb2YgaW50ZXJlc3QuCisKKyAgICBtbWFwIG9mIDB4QTAwMDAtMHhCRkZGRiBsZWdhY3lfbWVtIGJ5ICJYIiBvbiBIUCBzeDEwMDAgd2l0aCBWR0EgZGlzYWJsZWQKKworICAgICAgVGhlIEVGSSBtZW1vcnkgbWFwIHJlcG9ydHMgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgorICAgICAgICAweDAwMDAwLTB4RkZGRkYgV0Igb25seSAobm8gVkdBIE1NSU8gaG9sZSkKKworICAgICAgVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSBvZiB0aGUgcHJldmlvdXMgY2FzZSwgYW5kIHRoZSBtbWFwIHNob3VsZAorICAgICAgZmFpbCBmb3IgdGhlIHNhbWUgcmVhc29uIGFzIGFib3ZlLgorCisgICAgcmVhZCBvZiAvc3lzL2RldmljZXMvLi4uL3JvbQorCisgICAgICBGb3IgVkdBIGRldmljZXMsIHRoaXMgbWF5IGNhdXNlIGFuIGlvcmVtYXAoKSBvZiAweEMwMDAwLiAgVGhpcworICAgICAgdXNlZCB0byBiZSBkb25lIHdpdGggYSBVQyBtYXBwaW5nLCBiZWNhdXNlIHRoZSBWR0EgZnJhbWUgYnVmZmVyCisgICAgICBhdCAweEEwMDAwIHByZXZlbnRzIHVzZSBvZiBhIFdCIGdyYW51bGUuICBUaGUgVUMgbWFwcGluZyBjYXVzZXMKKyAgICAgIGFuIE1DQSBvbiBIUCBzeFsxMl0wMDAgY2hpcHNldHMuCisKKyAgICAgIFdlIHNob3VsZCB1c2UgV0IgcGFnZSB0YWJsZSBtYXBwaW5ncyB0byBhdm9pZCBjb3ZlcmluZyB0aGUgVkdBCisgICAgICBmcmFtZSBidWZmZXIuCisKK05PVEVTCisKKyAgICBbMV0gU0RNIHJldiAyLjIsIHZvbCAyLCBzZWMgNC40LjEuCisgICAgWzJdIFNETSByZXYgMi4yLCB2b2wgMiwgc2VjIDQuNC42LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pYTY0L2VmaXJ0Yy50eHQgYi9Eb2N1bWVudGF0aW9uL2lhNjQvZWZpcnRjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTdlNmJlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pYTY0L2VmaXJ0Yy50eHQKQEAgLTAsMCArMSwxMjggQEAKK0VGSSBSZWFsIFRpbWUgQ2xvY2sgZHJpdmVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTLiBFcmFuaWFuIDxlcmFuaWFuQGhwbC5ocC5jb20+CitNYXJjaCAyMDAwCisKK0kvIEludHJvZHVjdGlvbgorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgZWZpcnRjLmMgZHJpdmVyIGhhcyBwcm92aWRlZCBmb3IKK3RoZSBJQS02NCBwbGF0Zm9ybS4gCisKK1RoZSBwdXJwb3NlIG9mIHRoaXMgZHJpdmVyIGlzIHRvIHN1cHBseSBhbiBBUEkgZm9yIGtlcm5lbCBhbmQgdXNlciBhcHBsaWNhdGlvbnMKK3RvIGdldCBhY2Nlc3MgdG8gdGhlIFRpbWUgU2VydmljZSBvZmZlcmVkIGJ5IEVGSSB2ZXJzaW9uIDAuOTIuCisKK0VGSSBwcm92aWRlcyA0IGNhbGxzIG9uZSBjYW4gbWFrZSBvbmNlIHRoZSBPUyBpcyBib290ZWQ6IEdldFRpbWUoKSwKK1NldFRpbWUoKSwgR2V0V2FrZXVwVGltZSgpLCBTZXRXYWtldXBUaW1lKCkgd2hpY2ggYXJlIGFsbCBzdXBwb3J0ZWQgYnkgdGhpcworZHJpdmVyLiBXZSBkZXNjcmliZSB0aG9zZSBjYWxscyBhcyB3ZWxsIHRoZSBkZXNpZ24gb2YgdGhlIGRyaXZlciBpbiB0aGUKK2ZvbGxvd2luZyBzZWN0aW9ucy4KKworSUkvIERlc2lnbiBEZWNpc2lvbnMKKworVGhlIG9yaWdpbmFsIGlkZWFzIHdhcyB0byBwcm92aWRlIGEgdmVyeSBzaW1wbGUgZHJpdmVyIHRvIGdldCBhY2Nlc3MgdG8sIAorYXQgZmlyc3QsIHRoZSB0aW1lIG9mIGRheSBzZXJ2aWNlLiBUaGlzIGlzIHJlcXVpcmVkIGluIG9yZGVyIHRvIGFjY2VzcywgaW4gYSAKK3BvcnRhYmxlIHdheSwgdGhlIENNT1MgY2xvY2suIEEgcHJvZ3JhbSBsaWtlIC9zYmluL2h3Y2xvY2sgdXNlcyBzdWNoIGEgY2xvY2sgCit0byBpbml0aWFsaXplIHRoZSBzeXN0ZW0gdmlldyBvZiB0aGUgdGltZSBkdXJpbmcgYm9vdC4KKworQmVjYXVzZSB3ZSB3YW50ZWQgdG8gbWluaW1pemUgdGhlIGltcGFjdCBvbiBleGlzdGluZyB1c2VyLWxldmVsIGFwcHMgdXNpbmcKK3RoZSBDTU9TIGNsb2NrLCB3ZSBkZWNpZGVkIHRvIGV4cG9zZSBhbiBBUEkgdGhhdCB3YXMgdmVyeSBzaW1pbGFyIHRvIHRoZSBvbmUKK3VzZWQgdG9kYXkgd2l0aCB0aGUgbGVnYWN5IFJUQyBkcml2ZXIgKGRyaXZlci9jaGFyL3J0Yy5jKS4gSG93ZXZlciwgYmVjYXVzZSAKK0VGSSBwcm92aWRlcyBhIHNpbXBsZXIgc2VydmljZXMsIG5vdCBhbGwgaW9jdGwoKSBhcmUgYXZhaWxhYmxlLiBBbHNvCituZXcgaW9jdGwoKXMgaGF2ZSBiZWVuIGludHJvZHVjZWQgZm9yIHRoaW5ncyB0aGF0IEVGSSBwcm92aWRlcyBidXQgbm90IHRoZSAKK2xlZ2FjeS4KKworRUZJIHVzZXMgYSBzbGlnaHRseSBkaWZmZXJlbnQgd2F5IG9mIHJlcHJlc2VudGluZyB0aGUgdGltZSwgbm90aWNlYWJseQordGhlIHJlZmVyZW5jZSBkYXRlIGlzIGRpZmZlcmVudC4gWWVhciBpcyB0aGUgdXNpbmcgdGhlIGZ1bGwgNC1kaWdpdCBmb3JtYXQuCitUaGUgRXBvY2ggaXMgSmFudWFyeSAxc3QgMTk5OC4gRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgcmVhc29ucyB3ZSBkb24ndAorZXhwb3NlIHRoaXMgbmV3IHdheSBvZiByZXByZXNlbnRpbmcgdGltZS4gSW5zdGVhZCB3ZSB1c2Ugc29tZXRoaW5nIHZlcnkgCitzaW1pbGFyIHRvIHRoZSBzdHJ1Y3QgdG0sIGkuZS4gc3RydWN0IHJ0Y190aW1lLCBhcyB1c2VkIGJ5IGh3Y2xvY2suCitPbmUgb2YgdGhlIHJlYXNvbnMgZm9yIGRvaW5nIGl0IHRoaXMgd2F5IGlzIHRvIGFsbG93IGZvciBFRkkgdG8gc3RpbGwgZXZvbHZlCit3aXRob3V0IG5lY2Vzc2FyaWx5IGltcGFjdGluZyBhbnkgb2YgdGhlIHVzZXIgYXBwbGljYXRpb25zLiBUaGUgZGVjb3VwbGluZworZW5hYmxlcyBmbGV4aWJpbGl0eSBhbmQgcGVybWl0cyB3cml0aW5nIHdyYXBwZXIgY29kZSBpcyBuY2FzZSB0aGluZ3MgY2hhbmdlLgorCitUaGUgZHJpdmVyIGV4cG9zZXMgdHdvIGludGVyZmFjZXMsIG9uZSB2aWEgdGhlIGRldmljZSBmaWxlIGFuZCBhIHNldCBvZgoraW9jdGwoKXMuIFRoZSBvdGhlciBpcyByZWFkLW9ubHkgdmlhIHRoZSAvcHJvYyBmaWxlc3lzdGVtLiAKKworQXMgb2YgdG9kYXkgd2UgZG9uJ3Qgb2ZmZXIgYSAvcHJvYy9zeXMgaW50ZXJmYWNlLgorCitUbyBhbGxvdyBmb3IgYSB1bmlmb3JtIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBsZWdhY3kgUlRDIGFuZCBFRkkgdGltZSBzZXJ2aWNlLAord2UgaGF2ZSBjcmVhdGVkIHRoZSBpbmNsdWRlL2xpbnV4L3J0Yy5oIGhlYWRlciBmaWxlIHRvIGNvbnRhaW4gb25seSB0aGUgCisicHVibGljIiBBUEkgb2YgdGhlIHR3byBkcml2ZXJzLiAgVGhlIHNwZWNpZmljcyBvZiB0aGUgbGVnYWN5IFJUQyBhcmUgc3RpbGwgCitpbiBpbmNsdWRlL2xpbnV4L21jMTQ2ODE4cnRjLmguCisKKyAKK0lJSS8gVGltZSBvZiBkYXkgc2VydmljZQorCitUaGUgcGFydCBvZiB0aGUgZHJpdmVyIGdpdmVzIGFjY2VzcyB0byB0aGUgdGltZSBvZiBkYXkgc2VydmljZSBvZiBFRkkuCitUd28gaW9jdGwoKXMsIGNvbXBhdGlibGUgd2l0aCB0aGUgbGVnYWN5IFJUQyBjYWxsczoKKworCVJlYWQgdGhlIENNT1MgY2xvY2s6IGlvY3RsKGQsIFJUQ19SRF9USU1FLCAmcnRjKTsKKworCVdyaXRlIHRoZSBDTU9TIGNsb2NrOiBpb2N0bChkLCBSVENfU0VUX1RJTUUsICZydGMpOworCitUaGUgcnRjIGlzIGEgcG9pbnRlciB0byBhIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgaW4gcnRjLmggd2hpY2ggaXMgY2xvc2UKK3RvIGEgc3RydWN0IHRtOgorCitzdHJ1Y3QgcnRjX3RpbWUgeworICAgICAgICBpbnQgdG1fc2VjOworICAgICAgICBpbnQgdG1fbWluOworICAgICAgICBpbnQgdG1faG91cjsKKyAgICAgICAgaW50IHRtX21kYXk7CisgICAgICAgIGludCB0bV9tb247CisgICAgICAgIGludCB0bV95ZWFyOworICAgICAgICBpbnQgdG1fd2RheTsKKyAgICAgICAgaW50IHRtX3lkYXk7CisgICAgICAgIGludCB0bV9pc2RzdDsKK307CisKK1RoZSBkcml2ZXIgdGFrZXMgY2FyZSBvZiBjb252ZXJ0aW5nIGJhY2sgYW4gZm9ydGggYmV0d2VlbiB0aGUgRUZJIHRpbWUgYW5kCit0aGlzIGZvcm1hdC4KKworVGhvc2UgdHdvIGlvY3RsKClzIGNhbiBiZSBleGVyY2lzZWQgd2l0aCB0aGUgaHdjbG9jayBjb21tYW5kOgorCitGb3IgcmVhZGluZzoKKyMgL3NiaW4vaHdjbG9jayAtLXNob3cKK01vbiBNYXIgIDYgMTU6MzI6MzIgMjAwMCAgLTAuOTEwMjQ4IHNlY29uZHMKKworRm9yIHNldHRpbmc6CisjIC9zYmluL2h3Y2xvY2sgLS1zeXN0b2hjCisKK1Jvb3QgcHJpdmlsZWdlcyBhcmUgcmVxdWlyZWQgdG8gYmUgYWJsZSB0byBzZXQgdGhlIHRpbWUgb2YgZGF5LgorCitJVi8gV2FrZXVwIEFsYXJtIHNlcnZpY2UKKworRUZJIHByb3ZpZGVzIGFuIEFQSSBieSB3aGljaCBvbmUgY2FuIHByb2dyYW0gd2hlbiBhIG1hY2hpbmUgc2hvdWxkIHdha2V1cCwKK2kuZS4gcmVib290LiBUaGlzIGlzIHZlcnkgZGlmZmVyZW50IGZyb20gdGhlIGFsYXJtIHByb3ZpZGVkIGJ5IHRoZSBsZWdhY3kKK1JUQyB3aGljaCBpcyBzb21lIGtpbmQgb2YgaW50ZXJ2YWwgdGltZXIgYWxhcm0uIEZvciB0aGlzIHJlYXNvbiB3ZSBkb24ndCB1c2UKK3RoZSBzYW1lIGlvY3RsKClzIHRvIGdldCBhY2Nlc3MgdG8gdGhlIHNlcnZpY2UuIEluc3RlYWQgd2UgaGF2ZQoraW50cm9kdWNlZCAyIG5ld3MgaW9jdGwoKXMgdG8gdGhlIGludGVyZmFjZSBvZiBhbiBSVEMuIAorCitXZSBoYXZlIGFkZGVkIDIgbmV3IGlvY3RsKClzIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoZSBFRkkgZHJpdmVyOgorCisJUmVhZCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYWxhcm0KKwlpb2N0bChkLCBSVENfV0tMQU1fUkQsICZ3a3QpCisKKwlTZXQgdGhlIGFsYXJtIG9yIGNoYW5nZSBpdHMgc3RhdHVzCisJaW9jdGwoZCwgUlRDX1dLQUxNX1NFVCwgJndrdCkKKworVGhlIHdrdCBzdHJ1Y3R1cmUgZW5jYXBzdWxhdGVzIGEgc3RydWN0IHJ0Y190aW1lICsgMiBleHRyYSBmaWVsZHMgdG8gZ2V0IAorc3RhdHVzIGluZm9ybWF0aW9uOgorCQorc3RydWN0IHJ0Y193a2Fscm0geworCisgICAgICAgIHVuc2lnbmVkIGNoYXIgZW5hYmxlZDsgLyogPTEgaWYgYWxhcm0gaXMgZW5hYmxlZCAqLworICAgICAgICB1bnNpZ25lZCBjaGFyIHBlbmRpbmc7IC8qID0xIGlmIGFsYXJtIGlzIHBlbmRpbmcgICovCisKKyAgICAgICAgc3RydWN0IHJ0Y190aW1lIHRpbWU7Cit9IAorCitBcyBvZiB0b2RheSwgbm9uZSBvZiB0aGUgZXhpc3RpbmcgdXNlci1sZXZlbCBhcHBzIHN1cHBvcnRzIHRoaXMgZmVhdHVyZS4KK0hvd2V2ZXIgd3JpdGluZyBzdWNoIGEgcHJvZ3JhbSBzaG91bGQgYmUgaGFyZCBieSBzaW1wbHkgdXNpbmcgdGhvc2UgdHdvIAoraW9jdGwoKS4gCisKK1Jvb3QgcHJpdmlsZWdlcyBhcmUgcmVxdWlyZWQgdG8gYmUgYWJsZSB0byBzZXQgdGhlIGFsYXJtLgorCitWLyBSZWZlcmVuY2VzLgorCitDaGVja291dCB0aGUgZm9sbG93aW5nIFdlYiBzaXRlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEVGSToKKworaHR0cDovL2RldmVsb3Blci5pbnRlbC5jb20vdGVjaG5vbG9neS9lZmkvCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lhNjQvZXJyX2luamVjdC50eHQgYi9Eb2N1bWVudGF0aW9uL2lhNjQvZXJyX2luamVjdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY2NTFjMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaWE2NC9lcnJfaW5qZWN0LnR4dApAQCAtMCwwICsxLDEwNjggQEAKKworSVBGIE1hY2hpbmUgQ2hlY2sgKE1DKSBlcnJvciBpbmplY3QgdG9vbAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJUEYgTWFjaGluZSBDaGVjayAoTUMpIGVycm9yIGluamVjdCB0b29sIGlzIHVzZWQgdG8gaW5qZWN0IE1DCitlcnJvcnMgZnJvbSBMaW51eC4gVGhlIHRvb2wgaXMgYSB0ZXN0IGJlZCBmb3IgSVBGIE1DIHdvcmsgZmxvdyBpbmNsdWRpbmcKK2hhcmR3YXJlIGNvcnJlY3RhYmxlIGVycm9yIGhhbmRsaW5nLCBPUyByZWNvdmVyYWJsZSBlcnJvciBoYW5kbGluZywgTUMKK2V2ZW50IGxvZ2dpbmcsIGV0Yy4KKworVGhlIHRvb2wgaW5jbHVkZXMgdHdvIHBhcnRzOiBhIGtlcm5lbCBkcml2ZXIgYW5kIGEgdXNlciBhcHBsaWNhdGlvbgorc2FtcGxlLiBUaGUgZHJpdmVyIHByb3ZpZGVzIGludGVyZmFjZSB0byBQQUwgdG8gaW5qZWN0IGVycm9yCithbmQgcXVlcnkgZXJyb3IgaW5qZWN0aW9uIGNhcGFiaWxpdGllcy4gVGhlIGRyaXZlciBjb2RlIGlzIGluCithcmNoL2lhNjQva2VybmVsL2Vycl9pbmplY3QuYy4gVGhlIGFwcGxpY2F0aW9uIHNhbXBsZSAoc2hvd24gYmVsb3cpCitwcm92aWRlcyBhIGNvbWJpbmF0aW9uIG9mIHZhcmlvdXMgZXJyb3JzIGFuZCBjYWxscyB0aGUgZHJpdmVyJ3MgaW50ZXJmYWNlCisoc3lzZnMgaW50ZXJmYWNlKSB0byBpbmplY3QgZXJyb3JzIG9yIHF1ZXJ5IGVycm9yIGluamVjdGlvbiBjYXBhYmlsaXRpZXMuCisKK1RoZSB0b29sIGNhbiBiZSB1c2VkIHRvIHRlc3QgSW50ZWwgSVBGIG1hY2hpbmUgTUMgaGFuZGxpbmcgY2FwYWJpbGl0aWVzLgorSXQncyBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IgcGVvcGxlIHdobyBjYW4gbm90IGFjY2VzcyBoYXJkd2FyZSBNQyBpbmplY3Rpb24KK3Rvb2wgdG8gaW5qZWN0IGVycm9yLiBJdCdzIGFsc28gdmVyeSB1c2VmdWwgdG8gaW50ZWdyYXRlIHdpdGggb3RoZXIKK3NvZnR3YXJlIHRlc3Qgc3VpdHMgdG8gZG8gc3RyZXNzZnVsIHRlc3Rpbmcgb24gSVBGLgorCitCZWxvdyBpcyBhIHNhbXBsZSBhcHBsaWNhdGlvbiBhcyBwYXJ0IG9mIHRoZSB3aG9sZSB0b29sLiBUaGUgc2FtcGxlCitjYW4gYmUgdXNlZCBhcyBhIHdvcmtpbmcgdGVzdCB0b29sLiBPciBpdCBjYW4gYmUgZXhwYW5kZWQgdG8gaW5jbHVkZQorbW9yZSBmZWF0dXJlcy4gSXQgYWxzbyBjYW4gYmUgYSBpbnRlZ3JhdGVkIGludG8gYSBsaWJyYXJ5IG9yIG90aGVyIHVzZXIKK2FwcGxpY2F0aW9uIHRvIGhhdmUgbW9yZSB0aG9yb3VnaCB0ZXN0LgorCitUaGUgc2FtcGxlIGFwcGxpY2F0aW9uIHRha2VzIGVyci5jb25mIGFzIGVycm9yIGNvbmZpZ3VyYXRpb24gaW5wdXQuIEdDQworY29tcGlsZXMgdGhlIGNvZGUuIEFmdGVyIHlvdSBpbnN0YWxsIGVycl9pbmplY3QgZHJpdmVyLCB5b3UgY2FuIHJ1bgordGhpcyBzYW1wbGUgYXBwbGljYXRpb24gdG8gaW5qZWN0IGVycm9ycy4KKworRXJyYXRhOiBJdGFuaXVtIDIgUHJvY2Vzc29ycyBTcGVjaWZpY2F0aW9uIFVwZGF0ZSBsaXN0cyBzb21lIGVycmF0YSBhZ2FpbnN0Cit0aGUgcGFsX21jX2Vycm9yX2luamVjdCBQQUwgcHJvY2VkdXJlLiBUaGUgZm9sbG93aW5nIGVyci5jb25mIGhhcyBiZWVuIHRlc3RlZAorb24gbGF0ZXN0IE1vbnRlY2l0byBQQUwuCisKK2Vyci5jb25mOgorCisjVGhpcyBpcyBjb25maWd1cmF0aW9uIGZpbGUgZm9yIGVycl9pbmplY3RfdG9vbC4KKyNUaGUgZm9ybWF0IG9mIHRoZSBlYWNoIGxpbmUgaXM6CisjY3B1LCBsb29wLCBpbnRlcnZhbCwgZXJyX3R5cGVfaW5mbywgZXJyX3N0cnVjdF9pbmZvLCBlcnJfZGF0YV9idWZmZXIKKyN3aGVyZQorIwljcHU6IGxvZ2ljYWwgY3B1IG51bWJlciB0aGUgZXJyb3Igd2lsbCBiZSBpbmplY3QgaW4uCisjCWxvb3A6IHRpbWVzIHRoZSBlcnJvciB3aWxsIGJlIGluamVjdGVkLgorIwlpbnRlcnZhbDogSW4gc2Vjb25kLiBldmVyeSBzbyBvZnRlbiBvbmUgZXJyb3IgaXMgaW5qZWN0ZWQuCisjCWVycl90eXBlX2luZm8sIGVycl9zdHJ1Y3RfaW5mbzogUEFMIHBhcmFtZXRlcnMuCisjCisjTm90ZTogQWxsIHZhbHVlcyBhcmUgaGV4IHcvbyBvciB3LyAweCBwcmVmaXguCisKKworI09uIGNwdTIsIGluamVjdCBvbmx5IHRvdGFsIDB4MTAgZXJyb3JzLCBpbnRlcnZhbCA1IHNlY29uZHMKKyNjb3JyZWN0ZWQsIGRhdGEgY2FjaGUsIGhpZXItMiwgcGh5c2ljYWwgYWRkcihhc3NpZ25lZCBieSB0b29sIGNvZGUpLgorI3dvcmtpbmcgb24gTW9udGVjaXRvIGxhdGVzdCBQQUwuCisyLCAxMCwgNSwgNDEwMSwgOTUKKworI09uIGNwdTQsIGluamVjdCBhbmQgY29uc3VtZSB0b3RhbCAweDEwIGVycm9ycywgaW50ZXJ2YWwgNSBzZWNvbmRzCisjY29ycmVjdGVkLCBkYXRhIGNhY2hlLCBoaWVyLTIsIHBoeXNpY2FsIGFkZHIoYXNzaWduZWQgYnkgdG9vbCBjb2RlKS4KKyN3b3JraW5nIG9uIE1vbnRlY2l0byBsYXRlc3QgUEFMLgorNCwgMTAsIDUsIDQxMDksIDk1CisKKyNPbiBjcHUxNSwgaW5qZWN0IGFuZCBjb25zdW1lIHRvdGFsIDB4MTAgZXJyb3JzLCBpbnRlcnZhbCA1IHNlY29uZHMKKyNyZWNvdmVyYWJsZSwgRFRSMCwgaGllci0yLgorI3dvcmtpbmcgb24gTW9udGVjaXRvIGxhdGVzdCBQQUwuCisweGYsIDB4MTAsIDUsIDQyNDksIDE1CisKK1RoZSBzYW1wbGUgYXBwbGljYXRpb24gc291cmNlIGNvZGU6CisKK2Vycl9pbmplY3Rpb25fdG9vbC5jOgorCisvKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisgKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgT1IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIEdPT0QgVElUTEUgb3IKKyAqIE5PTiBJTkZSSU5HRU1FTlQuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlCisgKiBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEludGVsIENvCisgKglGZW5naHVhIFl1IDxmZW5naHVhLnl1QGludGVsLmNvbT4KKyAqCisgKi8KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzY2hlZC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHN5cy9pcGMuaD4KKyNpbmNsdWRlIDxzeXMvc2VtLmg+CisjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUgPHN5cy9zaG0uaD4KKworI2RlZmluZSBNQVhfRk5fU0laRSAJCTI1NgorI2RlZmluZSBNQVhfQlVGX1NJWkUgCQkyNTYKKyNkZWZpbmUgREFUQV9CVUZfU0laRSAJCTI1NgorI2RlZmluZSBOUl9DUFVTIAkJNTEyCisjZGVmaW5lIE1BWF9UQVNLX05VTQkJMjA0OAorI2RlZmluZSBNSU5fSU5URVJWQUwJCTUJLy8gc2Vjb25kcworI2RlZmluZQlFUlJfREFUQV9CVUZGRVJfU0laRSAJMwkvLyBUaHJlZSA4LWJ5dGUuCisjZGVmaW5lIFBBUkFfRklFTERfTlVNCQk1CisjZGVmaW5lIE1BU0tfU0laRQkJKE5SX0NQVVMvNjQpCisjZGVmaW5lIFBBVEhfRk9STUFUICIvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUlZC9lcnJfaW5qZWN0LyIKKworaW50IHNjaGVkX3NldGFmZmluaXR5KHBpZF90IHBpZCwgdW5zaWduZWQgaW50IGxlbiwgdW5zaWduZWQgbG9uZyAqbWFzayk7CisKK2ludCB2ZXJib3NlOworI2RlZmluZSB2YnByaW50ZiBpZiAodmVyYm9zZSkgcHJpbnRmCisKK2ludCBsb2dfaW5mbyhpbnQgY3B1LCBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwlGSUxFICpsb2c7CisJY2hhciBmbltNQVhfRk5fU0laRV07CisJY2hhciBidWZbTUFYX0JVRl9TSVpFXTsKKwl2YV9saXN0IGFyZ3M7CisKKwlzcHJpbnRmKGZuLCAiJWQubG9nIiwgY3B1KTsKKwlsb2c9Zm9wZW4oZm4sICJhKyIpOworCWlmIChsb2c9PU5VTEwpIHsKKwkJcGVycm9yKCJFcnJvciBvcGVuOiIpOworCQlyZXR1cm4gLTE7CisJfQorCisJdmFfc3RhcnQoYXJncywgZm10KTsKKwl2cHJpbnRmKGZtdCwgYXJncyk7CisJbWVtc2V0KGJ1ZiwgMCwgTUFYX0JVRl9TSVpFKTsKKwl2c3ByaW50ZihidWYsIGZtdCwgYXJncyk7CisJdmFfZW5kKGFyZ3MpOworCisJZndyaXRlKGJ1Ziwgc2l6ZW9mKGJ1ZiksIDEsIGxvZyk7CisJZmNsb3NlKGxvZyk7CisKKwlyZXR1cm4gMDsKK30KKwordHlwZWRlZiB1bnNpZ25lZCBsb25nIHU2NDsKK3R5cGVkZWYgdW5zaWduZWQgaW50ICB1MzI7CisKK3R5cGVkZWYgdW5pb24gZXJyX3R5cGVfaW5mb191IHsKKwlzdHJ1Y3QgeworCQl1NjQJbW9kZQkJOiAzLAkvKiAwLTIgKi8KKwkJCWVycl9pbmoJCTogMywJLyogMy01ICovCisJCQllcnJfc2V2CQk6IDIsCS8qIDYtNyAqLworCQkJZXJyX3N0cnVjdAk6IDUsCS8qIDgtMTIgKi8KKwkJCXN0cnVjdF9oaWVyCTogMywJLyogMTMtMTUgKi8KKwkJCXJlc2VydmVkCTogNDg7CS8qIDE2LTYzICovCisJfSBlcnJfdHlwZV9pbmZvX3U7CisJdTY0CWVycl90eXBlX2luZm87Cit9IGVycl90eXBlX2luZm9fdDsKKwordHlwZWRlZiB1bmlvbiBlcnJfc3RydWN0X2luZm9fdSB7CisJc3RydWN0IHsKKwkJdTY0CXNpdgkJOiAxLAkvKiAwCSAqLworCQkJY190CQk6IDIsCS8qIDEtMgkgKi8KKwkJCWNsX3AJCTogMywJLyogMy01CSAqLworCQkJY2xfaWQJCTogMywJLyogNi04CSAqLworCQkJY2xfZHAJCTogMSwJLyogOQkgKi8KKwkJCXJlc2VydmVkMQk6IDIyLAkvKiAxMC0zMSAqLworCQkJdGl2CQk6IDEsCS8qIDMyCSAqLworCQkJdHJpZ2dlcgkJOiA0LAkvKiAzMy0zNiAqLworCQkJdHJpZ2dlcl9wbCAJOiAzLAkvKiAzNy0zOSAqLworCQkJcmVzZXJ2ZWQyIAk6IDI0OwkvKiA0MC02MyAqLworCX0gZXJyX3N0cnVjdF9pbmZvX2NhY2hlOworCXN0cnVjdCB7CisJCXU2NAlzaXYJCTogMSwJLyogMAkgKi8KKwkJCXR0CQk6IDIsCS8qIDEtMgkgKi8KKwkJCXRjX3RyCQk6IDIsCS8qIDMtNAkgKi8KKwkJCXRyX3Nsb3QJCTogOCwJLyogNS0xMgkgKi8KKwkJCXJlc2VydmVkMQk6IDE5LAkvKiAxMy0zMSAqLworCQkJdGl2CQk6IDEsCS8qIDMyCSAqLworCQkJdHJpZ2dlcgkJOiA0LAkvKiAzMy0zNiAqLworCQkJdHJpZ2dlcl9wbCAJOiAzLAkvKiAzNy0zOSAqLworCQkJcmVzZXJ2ZWQyIAk6IDI0OwkvKiA0MC02MyAqLworCX0gZXJyX3N0cnVjdF9pbmZvX3RsYjsKKwlzdHJ1Y3QgeworCQl1NjQJc2l2CQk6IDEsCS8qIDAJICovCisJCQlyZWdmaWxlX2lkCTogNCwJLyogMS00CSAqLworCQkJcmVnX251bQkJOiA3LAkvKiA1LTExCSAqLworCQkJcmVzZXJ2ZWQxCTogMjAsCS8qIDEyLTMxICovCisJCQl0aXYJCTogMSwJLyogMzIJICovCisJCQl0cmlnZ2VyCQk6IDQsCS8qIDMzLTM2ICovCisJCQl0cmlnZ2VyX3BsIAk6IDMsCS8qIDM3LTM5ICovCisJCQlyZXNlcnZlZDIgCTogMjQ7CS8qIDQwLTYzICovCisJfSBlcnJfc3RydWN0X2luZm9fcmVnaXN0ZXI7CisJc3RydWN0IHsKKwkJdTY0CXJlc2VydmVkOworCX0gZXJyX3N0cnVjdF9pbmZvX2J1c19wcm9jZXNzb3JfaW50ZXJjb25uZWN0OworCXU2NAllcnJfc3RydWN0X2luZm87Cit9IGVycl9zdHJ1Y3RfaW5mb190OworCit0eXBlZGVmIHVuaW9uIGVycl9kYXRhX2J1ZmZlcl91IHsKKwlzdHJ1Y3QgeworCQl1NjQJdHJpZ2dlcl9hZGRyOwkJLyogMC02MwkJKi8KKwkJdTY0CWlual9hZGRyOwkJLyogNjQtMTI3IAkqLworCQl1NjQJd2F5CQk6IDUsCS8qIDEyOC0xMzIJKi8KKwkJCWluZGV4CQk6IDIwLAkvKiAxMzMtMTUyCSovCisJCQkJCTogMzk7CS8qIDE1My0xOTEJKi8KKwl9IGVycl9kYXRhX2J1ZmZlcl9jYWNoZTsKKwlzdHJ1Y3QgeworCQl1NjQJdHJpZ2dlcl9hZGRyOwkJLyogMC02MwkJKi8KKwkJdTY0CWlual9hZGRyOwkJLyogNjQtMTI3IAkqLworCQl1NjQJd2F5CQk6IDUsCS8qIDEyOC0xMzIJKi8KKwkJCWluZGV4CQk6IDIwLAkvKiAxMzMtMTUyCSovCisJCQlyZXNlcnZlZAk6IDM5OwkvKiAxNTMtMTkxCSovCisJfSBlcnJfZGF0YV9idWZmZXJfdGxiOworCXN0cnVjdCB7CisJCXU2NAl0cmlnZ2VyX2FkZHI7CQkvKiAwLTYzCQkqLworCX0gZXJyX2RhdGFfYnVmZmVyX3JlZ2lzdGVyOworCXN0cnVjdCB7CisJCXU2NAlyZXNlcnZlZDsJCS8qIDAtNjMJCSovCisJfSBlcnJfZGF0YV9idWZmZXJfYnVzX3Byb2Nlc3Nvcl9pbnRlcmNvbm5lY3Q7CisJdTY0IGVycl9kYXRhX2J1ZmZlcltFUlJfREFUQV9CVUZGRVJfU0laRV07Cit9IGVycl9kYXRhX2J1ZmZlcl90OworCit0eXBlZGVmIHVuaW9uIGNhcGFiaWxpdGllc191IHsKKwlzdHJ1Y3QgeworCQl1NjQJaQkJOiAxLAorCQkJZAkJOiAxLAorCQkJcnYJCTogMSwKKwkJCXRhZwkJOiAxLAorCQkJZGF0YQkJOiAxLAorCQkJbWVzaQkJOiAxLAorCQkJZHAJCTogMSwKKwkJCXJlc2VydmVkMQk6IDMsCisJCQlwYQkJOiAxLAorCQkJdmEJCTogMSwKKwkJCXdpCQk6IDEsCisJCQlyZXNlcnZlZDIJOiAyMCwKKwkJCXRyaWdnZXIJCTogMSwKKwkJCXRyaWdnZXJfcGwJOiAxLAorCQkJcmVzZXJ2ZWQzCTogMzA7CisJfSBjYXBhYmlsaXRpZXNfY2FjaGU7CisJc3RydWN0IHsKKwkJdTY0CWQJCTogMSwKKwkJCWkJCTogMSwKKwkJCXJ2CQk6IDEsCisJCQl0YwkJOiAxLAorCQkJdHIJCTogMSwKKwkJCXJlc2VydmVkMQk6IDI3LAorCQkJdHJpZ2dlcgkJOiAxLAorCQkJdHJpZ2dlcl9wbAk6IDEsCisJCQlyZXNlcnZlZDIJOiAzMDsKKwl9IGNhcGFiaWxpdGllc190bGI7CisJc3RydWN0IHsKKwkJdTY0CWdyX2IwCQk6IDEsCisJCQlncl9iMQkJOiAxLAorCQkJZnIJCTogMSwKKwkJCWJyCQk6IDEsCisJCQlwcgkJOiAxLAorCQkJYXIJCTogMSwKKwkJCWNyCQk6IDEsCisJCQlycgkJOiAxLAorCQkJcGtyCQk6IDEsCisJCQlkYnIJCTogMSwKKwkJCWlicgkJOiAxLAorCQkJcG1jCQk6IDEsCisJCQlwbWQJCTogMSwKKwkJCXJlc2VydmVkMQk6IDMsCisJCQlyZWdudW0JCTogMSwKKwkJCXJlc2VydmVkMgk6IDE1LAorCQkJdHJpZ2dlcgkJOiAxLAorCQkJdHJpZ2dlcl9wbAk6IDEsCisJCQlyZXNlcnZlZDMJOiAzMDsKKwl9IGNhcGFiaWxpdGllc19yZWdpc3RlcjsKKwlzdHJ1Y3QgeworCQl1NjQJcmVzZXJ2ZWQ7CisJfSBjYXBhYmlsaXRpZXNfYnVzX3Byb2Nlc3Nvcl9pbnRlcmNvbm5lY3Q7Cit9IGNhcGFiaWxpdGllc190OworCit0eXBlZGVmIHN0cnVjdCByZXNvdXJjZXNfcyB7CisJdTY0CWlicjAJCTogMSwKKwkJaWJyMgkJOiAxLAorCQlpYnI0CQk6IDEsCisJCWlicjYJCTogMSwKKwkJZGJyMAkJOiAxLAorCQlkYnIyCQk6IDEsCisJCWRicjQJCTogMSwKKwkJZGJyNgkJOiAxLAorCQlyZXNlcnZlZAk6IDQ4OworfSByZXNvdXJjZXNfdDsKKworCitsb25nIGdldF9wYWdlX3NpemUodm9pZCkKK3sKKwlsb25nIHBhZ2Vfc2l6ZT1zeXNjb25mKF9TQ19QQUdFU0laRSk7CisJcmV0dXJuIHBhZ2Vfc2l6ZTsKK30KKworI2RlZmluZSBQQUdFX1NJWkUgKGdldF9wYWdlX3NpemUoKT09LTE/MHg0MDAwOmdldF9wYWdlX3NpemUoKSkKKyNkZWZpbmUgU0hNX1NJWkUgKDIqUEFHRV9TSVpFKk5SX0NQVVMpCisjZGVmaW5lIFNITV9WQSAweDIwMDAwMDAxMDAwMDAwMDAKKworaW50IHNobWlkOwordm9pZCAqc2htYWRkcjsKKworaW50IGNyZWF0ZV9zaG0odm9pZCkKK3sKKwlrZXlfdCBrZXk7CisJY2hhciBmbltNQVhfRk5fU0laRV07CisKKwkvKiBjcHUwIGlzIGFsd2F5cyBleGlzdGluZyAqLworCXNwcmludGYoZm4sIFBBVEhfRk9STUFULCAwKTsKKwlpZiAoKGtleSA9IGZ0b2soZm4sICdzJykpID09IC0xKSB7CisJCXBlcnJvcigiZnRvayIpOworCQlyZXR1cm4gLTE7CisJfQorCisJc2htaWQgPSBzaG1nZXQoa2V5LCBTSE1fU0laRSwgMDY0NCB8IElQQ19DUkVBVCk7CisJaWYgKHNobWlkID09IC0xKSB7CisJCWlmIChlcnJubz09RUVYSVNUKSB7CisJCQlzaG1pZCA9IHNobWdldChrZXksIFNITV9TSVpFLCAwKTsKKwkJCWlmIChzaG1pZCA9PSAtMSkgeworCQkJCXBlcnJvcigic2htZ2V0Iik7CisJCQkJcmV0dXJuIC0xOworCQkJfQorCQl9CisJCWVsc2UgeworCQkJcGVycm9yKCJzaG1nZXQiKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCX0KKwl2YnByaW50Zigic2htaWQ9JWQiLCBzaG1pZCk7CisKKwkvKiBjb25uZWN0IHRvIHRoZSBzZWdtZW50OiAqLworCXNobWFkZHIgPSBzaG1hdChzaG1pZCwgKHZvaWQgKilTSE1fVkEsIDApOworCWlmIChzaG1hZGRyID09ICh2b2lkKiktMSkgeworCQlwZXJyb3IoInNobWF0Iik7CisJCXJldHVybiAtMTsKKwl9CisKKwltZW1zZXQoc2htYWRkciwgMCwgU0hNX1NJWkUpOworCW1sb2NrKHNobWFkZHIsIFNITV9TSVpFKTsKKworCXJldHVybiAwOworfQorCitpbnQgZnJlZV9zaG0oKQoreworCW11bmxvY2soc2htYWRkciwgU0hNX1NJWkUpOworICAgICAgICBzaG1kdChzaG1hZGRyKTsKKwlzZW1jdGwoc2htaWQsIDAsIElQQ19STUlEKTsKKworCXJldHVybiAwOworfQorCisjaWZkZWYgX1NFTV9TRU1VTl9VTkRFRklORUQKK3VuaW9uIHNlbXVuCit7CisJaW50IHZhbDsKKwlzdHJ1Y3Qgc2VtaWRfZHMgKmJ1ZjsKKwl1bnNpZ25lZCBzaG9ydCBpbnQgKmFycmF5OworCXN0cnVjdCBzZW1pbmZvICpfX2J1ZjsKK307CisjZW5kaWYKKwordTMyIG1vZGU9MTsgLyogMTogcGh5c2ljYWwgbW9kZTsgMjogdmlydHVhbCBtb2RlLiAqLworaW50IG9uZV9sb2NrPTE7CitrZXlfdCBrZXlbTlJfQ1BVU107CitpbnQgc2VtaWRbTlJfQ1BVU107CisKK2ludCBjcmVhdGVfc2VtKGludCBjcHUpCit7CisJdW5pb24gc2VtdW4gYXJnOworCWNoYXIgZm5bTUFYX0ZOX1NJWkVdOworCWludCBzaWQ7CisKKwlzcHJpbnRmKGZuLCBQQVRIX0ZPUk1BVCwgY3B1KTsKKwlzcHJpbnRmKGZuLCAiJXMvJXMiLCBmbiwgImVycl90eXBlX2luZm8iKTsKKwlpZiAoKGtleVtjcHVdID0gZnRvayhmbiwgJ2UnKSkgPT0gLTEpIHsKKwkJcGVycm9yKCJmdG9rIik7CisJCXJldHVybiAtMTsKKwl9CisKKwlpZiAoc2VtaWRbY3B1XSE9MCkKKwkJcmV0dXJuIDA7CisKKwkvKiBjbGVhciBvbGQgc2VtYXBob3JlICovCisJaWYgKChzaWQgPSBzZW1nZXQoa2V5W2NwdV0sIDEsIDApKSAhPSAtMSkKKwkJc2VtY3RsKHNpZCwgMCwgSVBDX1JNSUQpOworCisJLyogZ2V0IG9uZSBzZW1hcGhvcmUgKi8KKwlpZiAoKHNlbWlkW2NwdV0gPSBzZW1nZXQoa2V5W2NwdV0sIDEsIElQQ19DUkVBVCB8IElQQ19FWENMKSkgPT0gLTEpIHsKKwkJcGVycm9yKCJzZW1nZXQiKTsKKwkJcHJpbnRmKCJQbGVhc2UgcmVtb3ZlIHNlbWFwaG9yZSB3aXRoIGtleT0weCVseCwgdGhlbiBydW4gdGhlIHRvb2wuXG4iLAorCQkJKHU2NClrZXlbY3B1XSk7CisJCXJldHVybiAtMTsKKwl9CisKKwl2YnByaW50Zigic2VtaWRbJWRdPTB4JWx4LCBrZXlbJWRdPSVseFxuIixjcHUsKHU2NClzZW1pZFtjcHVdLGNwdSwKKwkJKHU2NClrZXlbY3B1XSk7CisJLyogaW5pdGlhbGl6ZSB0aGUgc2VtYXBob3JlIHRvIDE6ICovCisJYXJnLnZhbCA9IDE7CisJaWYgKHNlbWN0bChzZW1pZFtjcHVdLCAwLCBTRVRWQUwsIGFyZykgPT0gLTEpIHsKKwkJcGVycm9yKCJzZW1jdGwiKTsKKwkJcmV0dXJuIC0xOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGxvY2soaW50IGNwdSkKK3sKKwlzdHJ1Y3Qgc2VtYnVmIGxvY2s7CisKKwlsb2NrLnNlbV9udW0gPSBjcHU7CisJbG9jay5zZW1fb3AgPSAxOworCXNlbW9wKHNlbWlkW2NwdV0sICZsb2NrLCAxKTsKKworICAgICAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCB1bmxvY2soaW50IGNwdSkKK3sKKwlzdHJ1Y3Qgc2VtYnVmIHVubG9jazsKKworCXVubG9jay5zZW1fbnVtID0gY3B1OworCXVubG9jay5zZW1fb3AgPSAtMTsKKwlzZW1vcChzZW1pZFtjcHVdLCAmdW5sb2NrLCAxKTsKKworICAgICAgICByZXR1cm4gMDsKK30KKwordm9pZCBmcmVlX3NlbShpbnQgY3B1KQoreworCXNlbWN0bChzZW1pZFtjcHVdLCAwLCBJUENfUk1JRCk7Cit9CisKK2ludCB3cl9tdWx0aShjaGFyICpmbiwgdW5zaWduZWQgbG9uZyAqZGF0YSwgaW50IHNpemUpCit7CisJaW50IGZkOworCWNoYXIgYnVmW01BWF9CVUZfU0laRV07CisJaW50IHJldDsKKworCWlmIChzaXplPT0xKQorCQlzcHJpbnRmKGJ1ZiwgIiVseCIsICpkYXRhKTsKKwllbHNlIGlmIChzaXplPT0zKQorCQlzcHJpbnRmKGJ1ZiwgIiVseCwlbHgsJWx4IiwgZGF0YVswXSwgZGF0YVsxXSwgZGF0YVsyXSk7CisJZWxzZSB7CisJCWZwcmludGYoc3RkZXJyLCJ3cml0ZSB0byBmaWxlIHdpdGggd3Jvbmcgc2l6ZSFcbiIpOworCQlyZXR1cm4gLTE7CisJfQorCisJZmQ9b3BlbihmbiwgT19SRFdSKTsKKwlpZiAoIWZkKSB7CisJCXBlcnJvcigiRXJyb3I6Iik7CisJCXJldHVybiAtMTsKKwl9CisJcmV0PXdyaXRlKGZkLCBidWYsIHNpemVvZihidWYpKTsKKwljbG9zZShmZCk7CisJcmV0dXJuIHJldDsKK30KKworaW50IHdyKGNoYXIgKmZuLCB1bnNpZ25lZCBsb25nIGRhdGEpCit7CisJcmV0dXJuIHdyX211bHRpKGZuLCAmZGF0YSwgMSk7Cit9CisKK2ludCByZChjaGFyICpmbiwgdW5zaWduZWQgbG9uZyAqZGF0YSkKK3sKKwlpbnQgZmQ7CisJY2hhciBidWZbTUFYX0JVRl9TSVpFXTsKKworCWZkPW9wZW4oZm4sIE9fUkRPTkxZKTsKKwlpZiAoZmQ8MCkgeworCQlwZXJyb3IoIkVycm9yOiIpOworCQlyZXR1cm4gLTE7CisJfQorCXJlYWQoZmQsIGJ1ZiwgTUFYX0JVRl9TSVpFKTsKKwkqZGF0YT1zdHJ0b3VsKGJ1ZiwgTlVMTCwgMTYpOworCWNsb3NlKGZkKTsKKwlyZXR1cm4gMDsKK30KKworaW50IHJkX3N0YXR1cyhjaGFyICpwYXRoLCBpbnQgKnN0YXR1cykKK3sKKwljaGFyIGZuW01BWF9GTl9TSVpFXTsKKwlzcHJpbnRmKGZuLCAiJXMvc3RhdHVzIiwgcGF0aCk7CisJaWYgKHJkKGZuLCAodTY0KilzdGF0dXMpPDApIHsKKwkJcGVycm9yKCJzdGF0dXMgcmVhZGluZyBlcnJvci5cbiIpOworCQlyZXR1cm4gLTE7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK2ludCByZF9jYXBhYmlsaXRpZXMoY2hhciAqcGF0aCwgdTY0ICpjYXBhYmlsaXRpZXMpCit7CisJY2hhciBmbltNQVhfRk5fU0laRV07CisJc3ByaW50ZihmbiwgIiVzL2NhcGFiaWxpdGllcyIsIHBhdGgpOworCWlmIChyZChmbiwgY2FwYWJpbGl0aWVzKTwwKSB7CisJCXBlcnJvcigiY2FwYWJpbGl0aWVzIHJlYWRpbmcgZXJyb3IuXG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKworCXJldHVybiAwOworfQorCitpbnQgcmRfYWxsKGNoYXIgKnBhdGgpCit7CisJdW5zaWduZWQgbG9uZyBlcnJfdHlwZV9pbmZvLCBlcnJfc3RydWN0X2luZm8sIGVycl9kYXRhX2J1ZmZlcjsKKwlpbnQgc3RhdHVzOworCXVuc2lnbmVkIGxvbmcgY2FwYWJpbGl0aWVzLCByZXNvdXJjZXM7CisJY2hhciBmbltNQVhfRk5fU0laRV07CisKKwlzcHJpbnRmKGZuLCAiJXMvZXJyX3R5cGVfaW5mbyIsIHBhdGgpOworCWlmIChyZChmbiwgJmVycl90eXBlX2luZm8pPDApIHsKKwkJcGVycm9yKCJlcnJfdHlwZV9pbmZvIHJlYWRpbmcgZXJyb3IuXG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKwlwcmludGYoImVycl90eXBlX2luZm89JWx4XG4iLCBlcnJfdHlwZV9pbmZvKTsKKworCXNwcmludGYoZm4sICIlcy9lcnJfc3RydWN0X2luZm8iLCBwYXRoKTsKKwlpZiAocmQoZm4sICZlcnJfc3RydWN0X2luZm8pPDApIHsKKwkJcGVycm9yKCJlcnJfc3RydWN0X2luZm8gcmVhZGluZyBlcnJvci5cbiIpOworCQlyZXR1cm4gLTE7CisJfQorCXByaW50ZigiZXJyX3N0cnVjdF9pbmZvPSVseFxuIiwgZXJyX3N0cnVjdF9pbmZvKTsKKworCXNwcmludGYoZm4sICIlcy9lcnJfZGF0YV9idWZmZXIiLCBwYXRoKTsKKwlpZiAocmQoZm4sICZlcnJfZGF0YV9idWZmZXIpPDApIHsKKwkJcGVycm9yKCJlcnJfZGF0YV9idWZmZXIgcmVhZGluZyBlcnJvci5cbiIpOworCQlyZXR1cm4gLTE7CisJfQorCXByaW50ZigiZXJyX2RhdGFfYnVmZmVyPSVseFxuIiwgZXJyX2RhdGFfYnVmZmVyKTsKKworCXNwcmludGYoZm4sICIlcy9zdGF0dXMiLCBwYXRoKTsKKwlpZiAocmQoInN0YXR1cyIsICh1NjQqKSZzdGF0dXMpPDApIHsKKwkJcGVycm9yKCJzdGF0dXMgcmVhZGluZyBlcnJvci5cbiIpOworCQlyZXR1cm4gLTE7CisJfQorCXByaW50Zigic3RhdHVzPSVkXG4iLCBzdGF0dXMpOworCisJc3ByaW50ZihmbiwgIiVzL2NhcGFiaWxpdGllcyIsIHBhdGgpOworCWlmIChyZChmbiwmY2FwYWJpbGl0aWVzKTwwKSB7CisJCXBlcnJvcigiY2FwYWJpbGl0aWVzIHJlYWRpbmcgZXJyb3IuXG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKwlwcmludGYoImNhcGFiaWxpdGllcz0lbHhcbiIsIGNhcGFiaWxpdGllcyk7CisKKwlzcHJpbnRmKGZuLCAiJXMvcmVzb3VyY2VzIiwgcGF0aCk7CisJaWYgKHJkKGZuLCAmcmVzb3VyY2VzKTwwKSB7CisJCXBlcnJvcigicmVzb3VyY2VzIHJlYWRpbmcgZXJyb3IuXG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKwlwcmludGYoInJlc291cmNlcz0lbHhcbiIsIHJlc291cmNlcyk7CisKKwlyZXR1cm4gMDsKK30KKworaW50IHF1ZXJ5X2NhcGFiaWxpdGllcyhjaGFyICpwYXRoLCBlcnJfdHlwZV9pbmZvX3QgZXJyX3R5cGVfaW5mbywKKwkJCXU2NCAqY2FwYWJpbGl0aWVzKQoreworCWNoYXIgZm5bTUFYX0ZOX1NJWkVdOworCWVycl9zdHJ1Y3RfaW5mb190IGVycl9zdHJ1Y3RfaW5mbzsKKwllcnJfZGF0YV9idWZmZXJfdCBlcnJfZGF0YV9idWZmZXI7CisKKwllcnJfc3RydWN0X2luZm8uZXJyX3N0cnVjdF9pbmZvPTA7CisJbWVtc2V0KGVycl9kYXRhX2J1ZmZlci5lcnJfZGF0YV9idWZmZXIsIC0xLCBFUlJfREFUQV9CVUZGRVJfU0laRSo4KTsKKworCXNwcmludGYoZm4sICIlcy9lcnJfdHlwZV9pbmZvIiwgcGF0aCk7CisJd3IoZm4sIGVycl90eXBlX2luZm8uZXJyX3R5cGVfaW5mbyk7CisJc3ByaW50ZihmbiwgIiVzL2Vycl9zdHJ1Y3RfaW5mbyIsIHBhdGgpOworCXdyKGZuLCAweDApOworCXNwcmludGYoZm4sICIlcy9lcnJfZGF0YV9idWZmZXIiLCBwYXRoKTsKKwl3cl9tdWx0aShmbiwgZXJyX2RhdGFfYnVmZmVyLmVycl9kYXRhX2J1ZmZlciwgRVJSX0RBVEFfQlVGRkVSX1NJWkUpOworCisJLy8gRmlyZSBwYWxfbWNfZXJyb3JfaW5qZWN0IHByb2NlZHVyZS4KKwlzcHJpbnRmKGZuLCAiJXMvY2FsbF9zdGFydCIsIHBhdGgpOworCXdyKGZuLCBtb2RlKTsKKworCWlmIChyZF9jYXBhYmlsaXRpZXMocGF0aCwgY2FwYWJpbGl0aWVzKTwwKQorCQlyZXR1cm4gLTE7CisKKwlyZXR1cm4gMDsKK30KKworaW50IHF1ZXJ5X2FsbF9jYXBhYmlsaXRpZXMoKQoreworCWludCBzdGF0dXM7CisJZXJyX3R5cGVfaW5mb190IGVycl90eXBlX2luZm87CisJaW50IGVycl9zZXYsIGVycl9zdHJ1Y3QsIHN0cnVjdF9oaWVyOworCWludCBjYXA9MDsKKwl1NjQgY2FwYWJpbGl0aWVzOworCWNoYXIgcGF0aFtNQVhfRk5fU0laRV07CisKKwllcnJfdHlwZV9pbmZvLmVycl90eXBlX2luZm89MDsJCQkvLyBJbml0aWFsCisJZXJyX3R5cGVfaW5mby5lcnJfdHlwZV9pbmZvX3UubW9kZT0wOwkJLy8gUXVlcnkgbW9kZTsKKwllcnJfdHlwZV9pbmZvLmVycl90eXBlX2luZm9fdS5lcnJfaW5qPTA7CisKKwlwcmludGYoIkFsbCBjYXBhYmlsaXRpZXMgaW1wbGVtZW50ZWQgaW4gcGFsX21jX2Vycm9yX2luamVjdDpcbiIpOworCXNwcmludGYocGF0aCwgUEFUSF9GT1JNQVQgLDApOworCWZvciAoZXJyX3Nldj0wO2Vycl9zZXY8MztlcnJfc2V2KyspCisJCWZvciAoZXJyX3N0cnVjdD0wO2Vycl9zdHJ1Y3Q8NTtlcnJfc3RydWN0KyspCisJCQlmb3IgKHN0cnVjdF9oaWVyPTA7c3RydWN0X2hpZXI8NTtzdHJ1Y3RfaGllcisrKQorCXsKKwkJc3RhdHVzPS0xOworCQljYXBhYmlsaXRpZXM9MDsKKwkJZXJyX3R5cGVfaW5mby5lcnJfdHlwZV9pbmZvX3UuZXJyX3Nldj1lcnJfc2V2OworCQllcnJfdHlwZV9pbmZvLmVycl90eXBlX2luZm9fdS5lcnJfc3RydWN0PWVycl9zdHJ1Y3Q7CisJCWVycl90eXBlX2luZm8uZXJyX3R5cGVfaW5mb191LnN0cnVjdF9oaWVyPXN0cnVjdF9oaWVyOworCisJCWlmIChxdWVyeV9jYXBhYmlsaXRpZXMocGF0aCwgZXJyX3R5cGVfaW5mbywgJmNhcGFiaWxpdGllcyk8MCkKKwkJCWNvbnRpbnVlOworCisJCWlmIChyZF9zdGF0dXMocGF0aCwgJnN0YXR1cyk8MCkKKwkJCWNvbnRpbnVlOworCisJCWlmIChzdGF0dXM9PTApIHsKKwkJCWNhcD0xOworCQkJcHJpbnRmKCJGb3IgZXJyX3Nldj0lZCwgZXJyX3N0cnVjdD0lZCwgc3RydWN0X2hpZXI9JWQ6ICIsCisJCQkJZXJyX3NldiwgZXJyX3N0cnVjdCwgc3RydWN0X2hpZXIpOworCQkJcHJpbnRmKCJjYXBhYmlsaXRpZXMgMHglbHhcbiIsIGNhcGFiaWxpdGllcyk7CisJCX0KKwl9CisJaWYgKCFjYXApIHsKKwkJcHJpbnRmKCJObyBjYXBhYmlsaXRpZXMgc3VwcG9ydGVkLlxuIik7CisJCXJldHVybiAwOworCX0KKworCXJldHVybiAwOworfQorCitpbnQgZXJyX2luamVjdChpbnQgY3B1LCBjaGFyICpwYXRoLCBlcnJfdHlwZV9pbmZvX3QgZXJyX3R5cGVfaW5mbywKKwkJZXJyX3N0cnVjdF9pbmZvX3QgZXJyX3N0cnVjdF9pbmZvLAorCQllcnJfZGF0YV9idWZmZXJfdCBlcnJfZGF0YV9idWZmZXIpCit7CisJaW50IHN0YXR1czsKKwljaGFyIGZuW01BWF9GTl9TSVpFXTsKKworCWxvZ19pbmZvKGNwdSwgImVycl90eXBlX2luZm89JWx4LCBlcnJfc3RydWN0X2luZm89JWx4LCAiLAorCQllcnJfdHlwZV9pbmZvLmVycl90eXBlX2luZm8sCisJCWVycl9zdHJ1Y3RfaW5mby5lcnJfc3RydWN0X2luZm8pOworCWxvZ19pbmZvKGNwdSwiZXJyX2RhdGFfYnVmZmVyPVslbHgsJWx4LCVseF1cbiIsCisJCWVycl9kYXRhX2J1ZmZlci5lcnJfZGF0YV9idWZmZXJbMF0sCisJCWVycl9kYXRhX2J1ZmZlci5lcnJfZGF0YV9idWZmZXJbMV0sCisJCWVycl9kYXRhX2J1ZmZlci5lcnJfZGF0YV9idWZmZXJbMl0pOworCXNwcmludGYoZm4sICIlcy9lcnJfdHlwZV9pbmZvIiwgcGF0aCk7CisJd3IoZm4sIGVycl90eXBlX2luZm8uZXJyX3R5cGVfaW5mbyk7CisJc3ByaW50ZihmbiwgIiVzL2Vycl9zdHJ1Y3RfaW5mbyIsIHBhdGgpOworCXdyKGZuLCBlcnJfc3RydWN0X2luZm8uZXJyX3N0cnVjdF9pbmZvKTsKKwlzcHJpbnRmKGZuLCAiJXMvZXJyX2RhdGFfYnVmZmVyIiwgcGF0aCk7CisJd3JfbXVsdGkoZm4sIGVycl9kYXRhX2J1ZmZlci5lcnJfZGF0YV9idWZmZXIsIEVSUl9EQVRBX0JVRkZFUl9TSVpFKTsKKworCS8vIEZpcmUgcGFsX21jX2Vycm9yX2luamVjdCBwcm9jZWR1cmUuCisJc3ByaW50ZihmbiwgIiVzL2NhbGxfc3RhcnQiLCBwYXRoKTsKKwl3cihmbixtb2RlKTsKKworCWlmIChyZF9zdGF0dXMocGF0aCwgJnN0YXR1cyk8MCkgeworCQl2YnByaW50ZigiZmFpbDogcmVhZCBzdGF0dXNcbiIpOworCQlyZXR1cm4gLTEwMDsKKwl9CisKKwlpZiAoc3RhdHVzIT0wKSB7CisJCWxvZ19pbmZvKGNwdSwgImZhaWw6IHN0YXR1cz0lZFxuIiwgc3RhdHVzKTsKKwkJcmV0dXJuIHN0YXR1czsKKwl9CisKKwlyZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgaW50IGNvbnN0cnVjdF9kYXRhX2J1ZihjaGFyICpwYXRoLCBlcnJfdHlwZV9pbmZvX3QgZXJyX3R5cGVfaW5mbywKKwkJZXJyX3N0cnVjdF9pbmZvX3QgZXJyX3N0cnVjdF9pbmZvLAorCQllcnJfZGF0YV9idWZmZXJfdCAqZXJyX2RhdGFfYnVmZmVyLAorCQl2b2lkICp2YTEpCit7CisJY2hhciBmbltNQVhfRk5fU0laRV07CisJdTY0IHZpcnRfYWRkcj0wLCBwaHlzX2FkZHI9MDsKKworCXZicHJpbnRmKCJ2YTE9JWx4XG4iLCAodTY0KXZhMSk7CisJbWVtc2V0KCZlcnJfZGF0YV9idWZmZXItPmVycl9kYXRhX2J1ZmZlcl9jYWNoZSwgMCwgRVJSX0RBVEFfQlVGRkVSX1NJWkUqOCk7CisKKwlzd2l0Y2ggKGVycl90eXBlX2luZm8uZXJyX3R5cGVfaW5mb191LmVycl9zdHJ1Y3QpIHsKKwkJY2FzZSAxOiAvLyBDYWNoZQorCQkJc3dpdGNoIChlcnJfc3RydWN0X2luZm8uZXJyX3N0cnVjdF9pbmZvX2NhY2hlLmNsX2lkKSB7CisJCQkJY2FzZSAxOiAvL1ZpcnR1YWwgYWRkcgorCQkJCQllcnJfZGF0YV9idWZmZXItPmVycl9kYXRhX2J1ZmZlcl9jYWNoZS5pbmpfYWRkcj0odTY0KXZhMTsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAyOiAvL1BoeXMgYWRkcgorCQkJCQlzcHJpbnRmKGZuLCAiJXMvdmlydHVhbF90b19waHlzIiwgcGF0aCk7CisJCQkJCXZpcnRfYWRkcj0odTY0KXZhMTsKKwkJCQkJaWYgKHdyKGZuLHZpcnRfYWRkcik8MCkKKwkJCQkJCXJldHVybiAtMTsKKwkJCQkJcmQoZm4sICZwaHlzX2FkZHIpOworCQkJCQllcnJfZGF0YV9idWZmZXItPmVycl9kYXRhX2J1ZmZlcl9jYWNoZS5pbmpfYWRkcj1waHlzX2FkZHI7CisJCQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6CisJCQkJCXByaW50ZigiTm90IHN1cHBvcnRlZCBjbF9pZFxuIik7CisJCQkJCWJyZWFrOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgMjogLy8gIFRMQgorCQkJYnJlYWs7CisJCWNhc2UgMzogLy8gIFJlZ2lzdGVyIGZpbGUKKwkJCWJyZWFrOworCQljYXNlIDQ6IC8vICBCdXMvc3lzdGVtIGludGVyY29ubmVjdAorCQlkZWZhdWx0OgorCQkJcHJpbnRmKCJOb3Qgc3VwcG9ydGVkIGVycl9zdHJ1Y3RcbiIpOworCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3R5cGVkZWYgc3RydWN0IHsKKwl1NjQgY3B1OworCXU2NCBsb29wOworCXU2NCBpbnRlcnZhbDsKKwl1NjQgZXJyX3R5cGVfaW5mbzsKKwl1NjQgZXJyX3N0cnVjdF9pbmZvOworCXU2NCBlcnJfZGF0YV9idWZmZXJbRVJSX0RBVEFfQlVGRkVSX1NJWkVdOworfSBwYXJhbWV0ZXJzX3Q7CisKK3BhcmFtZXRlcnNfdCBsaW5lX3BhcmE7CitpbnQgcGFyYTsKKworc3RhdGljIGludCBlbXB0eV9kYXRhX2J1ZmZlcih1NjQgKmVycl9kYXRhX2J1ZmZlcikKK3sKKwlpbnQgZW1wdHk9MTsKKwlpbnQgaTsKKworCWZvciAoaT0wO2k8RVJSX0RBVEFfQlVGRkVSX1NJWkU7IGkrKykKKwkgICBpZiAoZXJyX2RhdGFfYnVmZmVyW2ldIT0tMSkKKwkJZW1wdHk9MDsKKworCXJldHVybiBlbXB0eTsKK30KKworaW50IGVycl9pbmooKQoreworCWVycl90eXBlX2luZm9fdCBlcnJfdHlwZV9pbmZvOworCWVycl9zdHJ1Y3RfaW5mb190IGVycl9zdHJ1Y3RfaW5mbzsKKwllcnJfZGF0YV9idWZmZXJfdCBlcnJfZGF0YV9idWZmZXI7CisJaW50IGNvdW50OworCUZJTEUgKmZwOworCXVuc2lnbmVkIGxvbmcgY3B1LCBsb29wLCBpbnRlcnZhbCwgZXJyX3R5cGVfaW5mb19jb25mLCBlcnJfc3RydWN0X2luZm9fY29uZjsKKwl1NjQgZXJyX2RhdGFfYnVmZmVyX2NvbmZbRVJSX0RBVEFfQlVGRkVSX1NJWkVdOworCWludCBudW07CisJaW50IGk7CisJY2hhciBwYXRoW01BWF9GTl9TSVpFXTsKKwlwYXJhbWV0ZXJzX3QgcGFyYW1ldGVyc1tNQVhfVEFTS19OVU1dPXt9OworCXBpZF90IGNoaWxkX3BpZFtNQVhfVEFTS19OVU1dOworCXRpbWVfdCBjdXJyZW50X3RpbWU7CisJaW50IHN0YXR1czsKKworCWlmICghcGFyYSkgeworCSAgICBmcD1mb3BlbigiZXJyLmNvbmYiLCAiciIpOworCSAgICBpZiAoZnA9PU5VTEwpIHsKKwkJcGVycm9yKCJFcnJvciBvcGVuIGVyci5jb25mIik7CisJCXJldHVybiAtMTsKKwkgICAgfQorCisJICAgIG51bT0wOworCSAgICB3aGlsZSAoIWZlb2YoZnApKSB7CisJCWNoYXIgYnVmWzI1Nl07CisJCW1lbXNldChidWYsMCwyNTYpOworCQlmZ2V0cyhidWYsIDI1NiwgZnApOworCQljb3VudD1zc2NhbmYoYnVmLCAiJWx4LCAlbHgsICVseCwgJWx4LCAlbHgsICVseCwgJWx4LCAlbHhcbiIsCisJCQkJJmNwdSwgJmxvb3AsICZpbnRlcnZhbCwmZXJyX3R5cGVfaW5mb19jb25mLAorCQkJCSZlcnJfc3RydWN0X2luZm9fY29uZiwKKwkJCQkmZXJyX2RhdGFfYnVmZmVyX2NvbmZbMF0sCisJCQkJJmVycl9kYXRhX2J1ZmZlcl9jb25mWzFdLAorCQkJCSZlcnJfZGF0YV9idWZmZXJfY29uZlsyXSk7CisJCWlmIChjb3VudCE9UEFSQV9GSUVMRF9OVU0rMykgeworCQkJZXJyX2RhdGFfYnVmZmVyX2NvbmZbMF09LTE7CisJCQllcnJfZGF0YV9idWZmZXJfY29uZlsxXT0tMTsKKwkJCWVycl9kYXRhX2J1ZmZlcl9jb25mWzJdPS0xOworCQkJY291bnQ9c3NjYW5mKGJ1ZiwgIiVseCwgJWx4LCAlbHgsICVseCwgJWx4XG4iLAorCQkJCSZjcHUsICZsb29wLCAmaW50ZXJ2YWwsJmVycl90eXBlX2luZm9fY29uZiwKKwkJCQkmZXJyX3N0cnVjdF9pbmZvX2NvbmYpOworCQkJaWYgKGNvdW50IT1QQVJBX0ZJRUxEX05VTSkKKwkJCQljb250aW51ZTsKKwkJfQorCisJCXBhcmFtZXRlcnNbbnVtXS5jcHU9Y3B1OworCQlwYXJhbWV0ZXJzW251bV0ubG9vcD1sb29wOworCQlwYXJhbWV0ZXJzW251bV0uaW50ZXJ2YWw9IGludGVydmFsPk1JTl9JTlRFUlZBTAorCQkJCQkgID9pbnRlcnZhbDpNSU5fSU5URVJWQUw7CisJCXBhcmFtZXRlcnNbbnVtXS5lcnJfdHlwZV9pbmZvPWVycl90eXBlX2luZm9fY29uZjsKKwkJcGFyYW1ldGVyc1tudW1dLmVycl9zdHJ1Y3RfaW5mbz1lcnJfc3RydWN0X2luZm9fY29uZjsKKwkJbWVtY3B5KHBhcmFtZXRlcnNbbnVtKytdLmVycl9kYXRhX2J1ZmZlciwKKwkJCWVycl9kYXRhX2J1ZmZlcl9jb25mLEVSUl9EQVRBX0JVRkZFUl9TSVpFKjgpIDsKKworCQlpZiAobnVtPj1NQVhfVEFTS19OVU0pCisJCQlicmVhazsKKwkgICAgfQorCX0KKwllbHNlIHsKKwkJcGFyYW1ldGVyc1swXS5jcHU9bGluZV9wYXJhLmNwdTsKKwkJcGFyYW1ldGVyc1swXS5sb29wPWxpbmVfcGFyYS5sb29wOworCQlwYXJhbWV0ZXJzWzBdLmludGVydmFsPSBsaW5lX3BhcmEuaW50ZXJ2YWw+TUlOX0lOVEVSVkFMCisJCQkJCSAgP2xpbmVfcGFyYS5pbnRlcnZhbDpNSU5fSU5URVJWQUw7CisJCXBhcmFtZXRlcnNbMF0uZXJyX3R5cGVfaW5mbz1saW5lX3BhcmEuZXJyX3R5cGVfaW5mbzsKKwkJcGFyYW1ldGVyc1swXS5lcnJfc3RydWN0X2luZm89bGluZV9wYXJhLmVycl9zdHJ1Y3RfaW5mbzsKKwkJbWVtY3B5KHBhcmFtZXRlcnNbMF0uZXJyX2RhdGFfYnVmZmVyLAorCQkJbGluZV9wYXJhLmVycl9kYXRhX2J1ZmZlcixFUlJfREFUQV9CVUZGRVJfU0laRSo4KSA7CisKKwkJbnVtPTE7CisJfQorCisJLyogQ3JlYXRlIHNlbWFwaG9yZTogSWYgb25lX2xvY2ssIG9uZSBzZW1hcGhvcmUgZm9yIGFsbCBwcm9jZXNzb3JzLgorCSAgIE90aGVyd2lzZSwgb25lIHNlbWFwaG9yZSBmb3IgZWFjaCBwcm9jZXNzb3IuICovCisJaWYgKG9uZV9sb2NrKSB7CisJCWlmIChjcmVhdGVfc2VtKDApKSB7CisJCQlwcmludGYoIkNhbiBub3QgY3JlYXRlIHNlbWFwaG9yZS4uLmV4aXRcbiIpOworCQkJZnJlZV9zZW0oMCk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisJZWxzZSB7CisJCWZvciAoaT0wO2k8bnVtO2krKykgeworCQkgICBpZiAoY3JlYXRlX3NlbShwYXJhbWV0ZXJzW2ldLmNwdSkpIHsKKwkJCXByaW50ZigiQ2FuIG5vdCBjcmVhdGUgc2VtYXBob3JlIGZvciBjcHUlZC4uLmV4aXRcbiIsaSk7CisJCQlmcmVlX3NlbShwYXJhbWV0ZXJzW251bV0uY3B1KTsKKwkJCXJldHVybiAtMTsKKwkJICAgfQorCQl9CisJfQorCisJLyogQ3JlYXRlIGEgc2htIHNlZ21lbnQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGluamVjdC9jb25zdW1lIGVycm9ycyBvbi4qLworCWlmIChjcmVhdGVfc2htKCk9PS0xKSB7CisJCXByaW50ZigiRXJyb3IgdG8gY3JlYXRlIHNobS4uLmV4aXRcbiIpOworCQlyZXR1cm4gLTE7CisJfQorCisJZm9yIChpPTA7aTxudW07aSsrKSB7CisJCXBpZF90IHBpZDsKKworCQljdXJyZW50X3RpbWU9dGltZShOVUxMKTsKKwkJbG9nX2luZm8ocGFyYW1ldGVyc1tpXS5jcHUsICJcbkJlZ2luZSBhdCAlcyIsIGN0aW1lKCZjdXJyZW50X3RpbWUpKTsKKwkJbG9nX2luZm8ocGFyYW1ldGVyc1tpXS5jcHUsICJDb25maWd1cmF0aW9uczpcbiIpOworCQlsb2dfaW5mbyhwYXJhbWV0ZXJzW2ldLmNwdSwiT24gY3B1JWxkOiBsb29wPSVseCwgaW50ZXJ2YWw9JWx4KHMpIiwKKwkJCXBhcmFtZXRlcnNbaV0uY3B1LAorCQkJcGFyYW1ldGVyc1tpXS5sb29wLAorCQkJcGFyYW1ldGVyc1tpXS5pbnRlcnZhbCk7CisJCWxvZ19pbmZvKHBhcmFtZXRlcnNbaV0uY3B1LCIgZXJyX3R5cGVfaW5mbz0lbHgsZXJyX3N0cnVjdF9pbmZvPSVseFxuIiwKKwkJCXBhcmFtZXRlcnNbaV0uZXJyX3R5cGVfaW5mbywKKwkJCXBhcmFtZXRlcnNbaV0uZXJyX3N0cnVjdF9pbmZvKTsKKworCQlzcHJpbnRmKHBhdGgsIFBBVEhfRk9STUFULCAoaW50KXBhcmFtZXRlcnNbaV0uY3B1KTsKKwkJZXJyX3R5cGVfaW5mby5lcnJfdHlwZV9pbmZvPXBhcmFtZXRlcnNbaV0uZXJyX3R5cGVfaW5mbzsKKwkJZXJyX3N0cnVjdF9pbmZvLmVycl9zdHJ1Y3RfaW5mbz1wYXJhbWV0ZXJzW2ldLmVycl9zdHJ1Y3RfaW5mbzsKKwkJbWVtY3B5KGVycl9kYXRhX2J1ZmZlci5lcnJfZGF0YV9idWZmZXIsCisJCQlwYXJhbWV0ZXJzW2ldLmVycl9kYXRhX2J1ZmZlciwKKwkJCUVSUl9EQVRBX0JVRkZFUl9TSVpFKjgpOworCisJCXBpZD1mb3JrKCk7CisJCWlmIChwaWQ9PTApIHsKKwkJCXVuc2lnbmVkIGxvbmcgbWFza1tNQVNLX1NJWkVdOworCQkJaW50IGosIGs7CisKKwkJCXZvaWQgKnZhMSwgKnZhMjsKKworCQkJLyogQWxsb2NhdGUgdHdvIG1lbW9yeSBhcmVhcyB2YTEgYW5kIHZhMiBpbiBzaG0gKi8KKwkJCXZhMT1zaG1hZGRyK3BhcmFtZXRlcnNbaV0uY3B1KlBBR0VfU0laRTsKKwkJCXZhMj1zaG1hZGRyK3BhcmFtZXRlcnNbaV0uY3B1KlBBR0VfU0laRStQQUdFX1NJWkU7CisKKwkJCXZicHJpbnRmKCJ2YTE9JWx4LCB2YTI9JWx4XG4iLCAodTY0KXZhMSwgKHU2NCl2YTIpOworCQkJbWVtc2V0KHZhMSwgMHgxLCBQQUdFX1NJWkUpOworCQkJbWVtc2V0KHZhMiwgMHgyLCBQQUdFX1NJWkUpOworCisJCQlpZiAoZW1wdHlfZGF0YV9idWZmZXIoZXJyX2RhdGFfYnVmZmVyLmVycl9kYXRhX2J1ZmZlcikpCisJCQkJLyogSWYgbm90IHNwZWNpZmllZCB5ZXQsIGNvbnN0cnVjdCBkYXRhIGJ1ZmZlcgorCQkJCSAqIHdpdGggdmExCisJCQkJICovCisJCQkJY29uc3RydWN0X2RhdGFfYnVmKHBhdGgsIGVycl90eXBlX2luZm8sCisJCQkJCWVycl9zdHJ1Y3RfaW5mbywgJmVycl9kYXRhX2J1ZmZlcix2YTEpOworCisJCQlmb3IgKGo9MDtqPE1BU0tfU0laRTtqKyspCisJCQkJbWFza1tqXT0wOworCisJCQljcHU9cGFyYW1ldGVyc1tpXS5jcHU7CisJCQlrID0gY3B1JTY0OworCQkJaiA9IGNwdS82NDsKKwkJCW1hc2tbal0gPSAxVUwgPDwgazsKKworCQkJaWYgKHNjaGVkX3NldGFmZmluaXR5KDAsIE1BU0tfU0laRSo4LCBtYXNrKT09LTEpIHsKKwkJCQlwZXJyb3IoIkVycm9yIHNjaGVkX3NldGFmZmluaXR5OiIpOworCQkJCXJldHVybiAtMTsKKwkJCX0KKworCQkJZm9yIChqPTA7IGo8cGFyYW1ldGVyc1tpXS5sb29wOyBqKyspIHsKKwkJCQlsb2dfaW5mbyhwYXJhbWV0ZXJzW2ldLmNwdSwiSW5qZWN0aW9uICIpOworCQkJCWxvZ19pbmZvKHBhcmFtZXRlcnNbaV0uY3B1LCJvbiBjcHUlbGQ6ICMlZC8lbGQgIiwKKworCQkJCQlwYXJhbWV0ZXJzW2ldLmNwdSxqKzEsIHBhcmFtZXRlcnNbaV0ubG9vcCk7CisKKwkJCQkvKiBIb2xkIHRoZSBsb2NrICovCisJCQkJaWYgKG9uZV9sb2NrKQorCQkJCQlsb2NrKDApOworCQkJCWVsc2UKKwkJCQkvKiBIb2xkIGxvY2sgb24gdGhpcyBjcHUgKi8KKwkJCQkJbG9jayhwYXJhbWV0ZXJzW2ldLmNwdSk7CisKKwkJCQlpZiAoKHN0YXR1cz1lcnJfaW5qZWN0KHBhcmFtZXRlcnNbaV0uY3B1LAorCQkJCQkgICBwYXRoLCBlcnJfdHlwZV9pbmZvLAorCQkJCQkgICBlcnJfc3RydWN0X2luZm8sIGVycl9kYXRhX2J1ZmZlcikpCisJCQkJCSAgID09MCkgeworCQkJCQkvKiBjb25zdW1lIHRoZSBlcnJvciBmb3IgImluamVjdCBvbmx5IiovCisJCQkJCW1lbWNweSh2YTIsIHZhMSwgUEFHRV9TSVpFKTsKKwkJCQkJbWVtY3B5KHZhMSwgdmEyLCBQQUdFX1NJWkUpOworCQkJCQlsb2dfaW5mbyhwYXJhbWV0ZXJzW2ldLmNwdSwKKwkJCQkJCSJzdWNjZXNzZnVsXG4iKTsKKwkJCQl9CisJCQkJZWxzZSB7CisJCQkJCWxvZ19pbmZvKHBhcmFtZXRlcnNbaV0uY3B1LCJmYWlsOiIpOworCQkJCQlsb2dfaW5mbyhwYXJhbWV0ZXJzW2ldLmNwdSwKKwkJCQkJCSJzdGF0dXM9JWRcbiIsIHN0YXR1cyk7CisJCQkJCXVubG9jayhwYXJhbWV0ZXJzW2ldLmNwdSk7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCQlpZiAob25lX2xvY2spCisJCQkJLyogUmVsZWFzZSB0aGUgbG9jayAqLworCQkJCQl1bmxvY2soMCk7CisJCQkJLyogUmVsZWFzZSBsb2NrIG9uIHRoaXMgY3B1ICovCisJCQkJZWxzZQorCQkJCQl1bmxvY2socGFyYW1ldGVyc1tpXS5jcHUpOworCisJCQkJaWYgKGogPCBwYXJhbWV0ZXJzW2ldLmxvb3AtMSkKKwkJCQkJc2xlZXAocGFyYW1ldGVyc1tpXS5pbnRlcnZhbCk7CisJCQl9CisJCQljdXJyZW50X3RpbWU9dGltZShOVUxMKTsKKwkJCWxvZ19pbmZvKHBhcmFtZXRlcnNbaV0uY3B1LCAiRG9uZSBhdCAlcyIsIGN0aW1lKCZjdXJyZW50X3RpbWUpKTsKKwkJCXJldHVybiAwOworCQl9CisJCWVsc2UgaWYgKHBpZDwwKSB7CisJCQlwZXJyb3IoIkVycm9yIGZvcms6Iik7CisJCQljb250aW51ZTsKKwkJfQorCQljaGlsZF9waWRbaV09cGlkOworCX0KKwlmb3IgKGk9MDtpPG51bTtpKyspCisJCXdhaXRwaWQoY2hpbGRfcGlkW2ldLCBOVUxMLCAwKTsKKworCWlmIChvbmVfbG9jaykKKwkJZnJlZV9zZW0oMCk7CisJZWxzZQorCQlmb3IgKGk9MDtpPG51bTtpKyspCisJCQlmcmVlX3NlbShwYXJhbWV0ZXJzW2ldLmNwdSk7CisKKwlwcmludGYoIkFsbCBkb25lLlxuIik7CisKKwlyZXR1cm4gMDsKK30KKwordm9pZCBoZWxwKCkKK3sKKwlwcmludGYoImVycl9pbmplY3RfdG9vbDpcbiIpOworCXByaW50ZigiXHQtcTogcXVlcnkgYWxsIGNhcGFiaWxpdGllcy4gZGVmYXVsdDogb2ZmXG4iKTsKKwlwcmludGYoIlx0LW06IHByb2NlZHVyZSBtb2RlLiAxOiBwaHlzaWNhbCAyOiB2aXJ0dWFsLiBkZWZhdWx0OiAxXG4iKTsKKwlwcmludGYoIlx0LWk6IGluamVjdCBlcnJvcnMuIGRlZmF1bHQ6IG9mZlxuIik7CisJcHJpbnRmKCJcdC1sOiBvbmUgbG9jayBwZXIgY3B1LiBkZWZhdWx0OiBvbmUgbG9jayBmb3IgYWxsXG4iKTsKKwlwcmludGYoIlx0LWU6IGVycm9yIHBhcmFtZXRlcnM6XG4iKTsKKwlwcmludGYoIlx0XHRjcHUsbG9vcCxpbnRlcnZhbCxlcnJfdHlwZV9pbmZvLGVycl9zdHJ1Y3RfaW5mb1ssZXJyX2RhdGFfYnVmZmVyWzBdLGVycl9kYXRhX2J1ZmZlclsxXSxlcnJfZGF0YV9idWZmZXJbMl1dXG4iKTsKKwlwcmludGYoIlx0XHQgICBjcHU6IGxvZ2ljYWwgY3B1IG51bWJlciB0aGUgZXJyb3Igd2lsbCBiZSBpbmplY3QgaW4uXG4iKTsKKwlwcmludGYoIlx0XHQgICBsb29wOiB0aW1lcyB0aGUgZXJyb3Igd2lsbCBiZSBpbmplY3RlZC5cbiIpOworCXByaW50ZigiXHRcdCAgIGludGVydmFsOiBJbiBzZWNvbmQuIGV2ZXJ5IHNvIG9mdGVuIG9uZSBlcnJvciBpcyBpbmplY3RlZC5cbiIpOworCXByaW50ZigiXHRcdCAgIGVycl90eXBlX2luZm8sIGVycl9zdHJ1Y3RfaW5mbzogUEFMIHBhcmFtZXRlcnMuXG4iKTsKKwlwcmludGYoIlx0XHQgICBlcnJfZGF0YV9idWZmZXI6IFBBTCBwYXJhbWV0ZXIuIE9wdGlvbmFsLiBJZiBub3QgcHJlc2VudCxcbiIpOworCXByaW50ZigiXHRcdCAgICAgICAgICAgICAgICAgICAgaXQncyBjb25zdHJ1Y3RlZCBieSB0b29sIGF1dG9tYXRpY2FsbHkuIEJlXG4iKTsKKwlwcmludGYoIlx0XHQgICAgICAgICAgICAgICAgICAgIGNhcmVmdWwgdG8gcHJvdmlkZSBlcnJfZGF0YV9idWZmZXIgYW5kIG1ha2VcbiIpOworCXByaW50ZigiXHRcdCAgICAgICAgICAgICAgICAgICAgc3VyZSBpdCdzIHdvcmtpbmcgd2l0aCB0aGUgZW52aXJvbm1lbnQuXG4iKTsKKwlwcmludGYoIlx0ICAgIE5vdGU6bm8gc3BhY2UgYmV0d2VlbiBlcnJvciBwYXJhbWV0ZXJzLlxuIik7CisJcHJpbnRmKCJcdCAgICBkZWZhdWx0OiBUYWtlIGVycm9yIHBhcmFtZXRlcnMgZnJvbSBlcnIuY29uZiBpbnN0ZWFkIG9mIGNvbW1hbmQgbGluZS5cbiIpOworCXByaW50ZigiXHQtdjogdmVyYm9zZS4gZGVmYXVsdDogb2ZmXG4iKTsKKwlwcmludGYoIlx0LWg6IGhlbHBcblxuIik7CisJcHJpbnRmKCJUaGUgdG9vbCB3aWxsIHRha2UgZXJyLmNvbmYgZmlsZSBhcyAiKTsKKwlwcmludGYoImlucHV0IHRvIGluamVjdCBzaW5nbGUgb3IgbXVsdGlwbGUgZXJyb3JzICIpOworCXByaW50Zigib24gb25lIG9yIG11bHRpcGxlIGNwdXMgaW4gcGFyYWxsZWwuXG4iKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWNoYXIgYzsKKwlpbnQgZG9fZXJyX2luaj0wOworCWludCBkb19xdWVyeV9hbGw9MDsKKwlpbnQgY291bnQ7CisJdTMyIG07CisKKwkvKiBEZWZhdWx0IG9uZSBsb2NrIGZvciBhbGwgY3B1J3MgKi8KKwlvbmVfbG9jaz0xOworCXdoaWxlICgoYyA9IGdldG9wdChhcmdjLCBhcmd2LCAibTppcXZobGU6IikpICE9IEVPRikKKwkJc3dpdGNoIChjKSB7CisJCQljYXNlICdtJzoJLyogUHJvY2VkdXJlIG1vZGUuIDE6IHBoeXMgMjogdmlydCAqLworCQkJCWNvdW50PXNzY2FuZihvcHRhcmcsICIleCIsICZtKTsKKwkJCQlpZiAoY291bnQhPTEgfHwgKG0hPTEgJiYgbSE9MikpIHsKKwkJCQkJcHJpbnRmKCJXcm9uZyBtb2RlIG51bWJlci5cbiIpOworCQkJCQloZWxwKCk7CisJCQkJCXJldHVybiAtMTsKKwkJCQl9CisJCQkJbW9kZT1tOworCQkJCWJyZWFrOworCQkJY2FzZSAnaSc6CS8qIEluamVjdCBlcnJvcnMgKi8KKwkJCQlkb19lcnJfaW5qPTE7CisJCQkJYnJlYWs7CisJCQljYXNlICdxJzoJLyogUXVlcnkgKi8KKwkJCQlkb19xdWVyeV9hbGw9MTsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ3YnOgkvKiBWZXJib3NlICovCisJCQkJdmVyYm9zZT0xOworCQkJCWJyZWFrOworCQkJY2FzZSAnbCc6CS8qIE9uZSBsb2NrIHBlciBjcHUgKi8KKwkJCQlvbmVfbG9jaz0wOworCQkJCWJyZWFrOworCQkJY2FzZSAnZSc6CS8qIGVycm9yIGFyZ3VtZW50cyAqLworCQkJCS8qIFRha2UgcGFyYW1ldGVyczoKKwkJCQkgKiAjY3B1LCBsb29wLCBpbnRlcnZhbCwgZXJyX3R5cGVfaW5mbywgZXJyX3N0cnVjdF9pbmZvWywgZXJyX2RhdGFfYnVmZmVyXQorCQkJCSAqIGVycl9kYXRhX2J1ZmZlciBpcyBvcHRpb25hbC4gUmVjb21tZW5kIG5vdCB0byBzcGVjaWZ5CisJCQkJICogZXJyX2RhdGFfYnVmZmVyLiBCZXR0ZXIgdG8gdXNlIHRvb2wgdG8gZ2VuZXJhdGUgaXQuCisJCQkJICovCisJCQkJY291bnQ9c3NjYW5mKG9wdGFyZywKKwkJCQkJIiVseCwgJWx4LCAlbHgsICVseCwgJWx4LCAlbHgsICVseCwgJWx4XG4iLAorCQkJCQkmbGluZV9wYXJhLmNwdSwKKwkJCQkJJmxpbmVfcGFyYS5sb29wLAorCQkJCQkmbGluZV9wYXJhLmludGVydmFsLAorCQkJCQkmbGluZV9wYXJhLmVycl90eXBlX2luZm8sCisJCQkJCSZsaW5lX3BhcmEuZXJyX3N0cnVjdF9pbmZvLAorCQkJCQkmbGluZV9wYXJhLmVycl9kYXRhX2J1ZmZlclswXSwKKwkJCQkJJmxpbmVfcGFyYS5lcnJfZGF0YV9idWZmZXJbMV0sCisJCQkJCSZsaW5lX3BhcmEuZXJyX2RhdGFfYnVmZmVyWzJdKTsKKwkJCQlpZiAoY291bnQhPVBBUkFfRklFTERfTlVNKzMpIHsKKwkJCQkgICAgbGluZV9wYXJhLmVycl9kYXRhX2J1ZmZlclswXT0tMSwKKwkJCQkgICAgbGluZV9wYXJhLmVycl9kYXRhX2J1ZmZlclsxXT0tMSwKKwkJCSAJICAgIGxpbmVfcGFyYS5lcnJfZGF0YV9idWZmZXJbMl09LTE7CisJCQkJICAgIGNvdW50PXNzY2FuZihvcHRhcmcsICIlbHgsICVseCwgJWx4LCAlbHgsICVseFxuIiwKKwkJCQkJCSZsaW5lX3BhcmEuY3B1LAorCQkJCQkJJmxpbmVfcGFyYS5sb29wLAorCQkJCQkJJmxpbmVfcGFyYS5pbnRlcnZhbCwKKwkJCQkJCSZsaW5lX3BhcmEuZXJyX3R5cGVfaW5mbywKKwkJCQkJCSZsaW5lX3BhcmEuZXJyX3N0cnVjdF9pbmZvKTsKKwkJCQkgICAgaWYgKGNvdW50IT1QQVJBX0ZJRUxEX05VTSkgeworCQkJCQlwcmludGYoIldyb25nIGVycm9yIGFyZ3VtZW50cy5cbiIpOworCQkJCQloZWxwKCk7CisJCQkJCXJldHVybiAtMTsKKwkJCQkgICAgfQorCQkJCX0KKwkJCQlwYXJhPTE7CisJCQkJYnJlYWs7CisJCQljb250aW51ZTsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ2gnOgorCQkJCWhlbHAoKTsKKwkJCQlyZXR1cm4gMDsKKwkJCWRlZmF1bHQ6CisJCQkJYnJlYWs7CisJCX0KKworCWlmIChkb19xdWVyeV9hbGwpCisJCXF1ZXJ5X2FsbF9jYXBhYmlsaXRpZXMoKTsKKwlpZiAoZG9fZXJyX2luaikKKwkJZXJyX2luaigpOworCisJaWYgKCFkb19xdWVyeV9hbGwgJiYgICFkb19lcnJfaW5qKQorCQloZWxwKCk7CisKKwlyZXR1cm4gMDsKK30KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pYTY0L2ZzeXMudHh0IGIvRG9jdW1lbnRhdGlvbi9pYTY0L2ZzeXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZGQ2ODkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lhNjQvZnN5cy50eHQKQEAgLTAsMCArMSwyODYgQEAKKy0qLU1vZGU6IG91dGxpbmUtKi0KKworCQlMaWdodC13ZWlnaHQgU3lzdGVtIENhbGxzIGZvciBJQS02NAorCQktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJCSAgICAgICAgU3RhcnRlZDogMTMtSmFuLTIwMDMKKwkJICAgIExhc3QgdXBkYXRlOiAyNy1TZXAtMjAwMworCisJICAgICAgICAgICAgICBEYXZpZCBNb3NiZXJnZXItVGFuZworCQkgICAgICA8ZGF2aWRtQGhwbC5ocC5jb20+CisKK1VzaW5nIHRoZSAiZXBjIiBpbnN0cnVjdGlvbiBlZmZlY3RpdmVseSBpbnRyb2R1Y2VzIGEgbmV3IG1vZGUgb2YKK2V4ZWN1dGlvbiB0byB0aGUgaWE2NCBsaW51eCBrZXJuZWwuICBXZSBjYWxsIHRoaXMgbW9kZSB0aGUKKyJmc3lzLW1vZGUiLiAgVG8gcmVjYXAsIHRoZSBub3JtYWwgc3RhdGVzIG9mIGV4ZWN1dGlvbiBhcmU6CisKKyAgLSBrZXJuZWwgbW9kZToKKwlCb3RoIHRoZSByZWdpc3RlciBzdGFjayBhbmQgdGhlIG1lbW9yeSBzdGFjayBoYXZlIGJlZW4KKwlzd2l0Y2hlZCBvdmVyIHRvIGtlcm5lbCBtZW1vcnkuICBUaGUgdXNlci1sZXZlbCBzdGF0ZSBpcyBzYXZlZAorCWluIGEgcHQtcmVncyBzdHJ1Y3R1cmUgYXQgdGhlIHRvcCBvZiB0aGUga2VybmVsIG1lbW9yeSBzdGFjay4KKworICAtIHVzZXIgbW9kZToKKwlCb3RoIHRoZSByZWdpc3RlciBzdGFjayBhbmQgdGhlIGtlcm5lbCBzdGFjayBhcmUgaW4KKwl1c2VyIG1lbW9yeS4gIFRoZSB1c2VyLWxldmVsIHN0YXRlIGlzIGNvbnRhaW5lZCBpbiB0aGUKKwlDUFUgcmVnaXN0ZXJzLgorCisgIC0gYmFuayAwIGludGVycnVwdGlvbi1oYW5kbGluZyBtb2RlOgorCVRoaXMgaXMgdGhlIG5vbi1pbnRlcnJ1cHRpYmxlIHN0YXRlIHdoaWNoIGFsbAorCWludGVycnVwdGlvbi1oYW5kbGVycyBzdGFydCBleGVjdXRpb24gaW4uICBUaGUgdXNlci1sZXZlbAorCXN0YXRlIHJlbWFpbnMgaW4gdGhlIENQVSByZWdpc3RlcnMgYW5kIHNvbWUga2VybmVsIHN0YXRlIG1heQorCWJlIHN0b3JlZCBpbiBiYW5rIDAgb2YgcmVnaXN0ZXJzIHIxNi1yMzEuCisKK0luIGNvbnRyYXN0LCBmc3lzLW1vZGUgaGFzIHRoZSBmb2xsb3dpbmcgc3BlY2lhbCBwcm9wZXJ0aWVzOgorCisgIC0gZXhlY3V0aW9uIGlzIGF0IHByaXZpbGVnZSBsZXZlbCAwIChtb3N0LXByaXZpbGVnZWQpCisKKyAgLSBDUFUgcmVnaXN0ZXJzIG1heSBjb250YWluIGEgbWl4dHVyZSBvZiB1c2VyLWxldmVsIGFuZCBrZXJuZWwtbGV2ZWwKKyAgICBzdGF0ZSAoaXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBrZXJuZWwgdG8gZW5zdXJlIHRoYXQgbm8KKyAgICBzZWN1cml0eS1zZW5zaXRpdmUga2VybmVsLWxldmVsIHN0YXRlIGlzIGxlYWtlZCBiYWNrIHRvCisgICAgdXNlci1sZXZlbCkKKworICAtIGV4ZWN1dGlvbiBpcyBpbnRlcnJ1cHRpYmxlIGFuZCBwcmVlbXB0aWJsZSAoYW4gZnN5cy1tb2RlIGhhbmRsZXIKKyAgICBjYW4gZGlzYWJsZSBpbnRlcnJ1cHRzIGFuZCBhdm9pZCBhbGwgb3RoZXIgaW50ZXJydXB0aW9uLXNvdXJjZXMKKyAgICB0byBhdm9pZCBwcmVlbXB0aW9uKQorCisgIC0gbmVpdGhlciB0aGUgbWVtb3J5LXN0YWNrIG5vciB0aGUgcmVnaXN0ZXItc3RhY2sgY2FuIGJlIHRydXN0ZWQgd2hpbGUKKyAgICBpbiBmc3lzLW1vZGUgKHRoZXkgcG9pbnQgdG8gdGhlIHVzZXItbGV2ZWwgc3RhY2tzLCB3aGljaCBtYXkKKyAgICBiZSBpbnZhbGlkLCBvciBjb21wbGV0ZWx5IGJvZ3VzIGFkZHJlc3NlcykKKworSW4gc3VtbWFyeSwgZnN5cy1tb2RlIGlzIG11Y2ggbW9yZSBzaW1pbGFyIHRvIHJ1bm5pbmcgaW4gdXNlci1tb2RlCit0aGFuIGl0IGlzIHRvIHJ1bm5pbmcgaW4ga2VybmVsLW1vZGUuICBPZiBjb3Vyc2UsIGdpdmVuIHRoYXQgdGhlCitwcml2aWxlZ2UgbGV2ZWwgaXMgYXQgbGV2ZWwgMCwgdGhpcyBtZWFucyB0aGF0IGZzeXMtbW9kZSByZXF1aXJlcyBzb21lCitjYXJlIChzZWUgYmVsb3cpLgorCisKKyogSG93IHRvIHRlbGwgZnN5cy1tb2RlCisKK0xpbnV4IG9wZXJhdGVzIGluIGZzeXMtbW9kZSB3aGVuIChhKSB0aGUgcHJpdmlsZWdlIGxldmVsIGlzIDAgKG1vc3QKK3ByaXZpbGVnZWQpIGFuZCAoYikgdGhlIHN0YWNrcyBoYXZlIE5PVCBiZWVuIHN3aXRjaGVkIHRvIGtlcm5lbCBtZW1vcnkKK3lldC4gIEZvciBjb252ZW5pZW5jZSwgdGhlIGhlYWRlciBmaWxlIDxhc20taWE2NC9wdHJhY2UuaD4gcHJvdmlkZXMKK3RocmVlIG1hY3JvczoKKworCXVzZXJfbW9kZShyZWdzKQorCXVzZXJfc3RhY2sodGFzayxyZWdzKQorCWZzeXNfbW9kZSh0YXNrLHJlZ3MpCisKK1RoZSAicmVncyIgYXJndW1lbnQgaXMgYSBwb2ludGVyIHRvIGEgcHRfcmVncyBzdHJ1Y3R1cmUuICBUaGUgInRhc2siCithcmd1bWVudCBpcyBhIHBvaW50ZXIgdG8gdGhlIHRhc2sgc3RydWN0dXJlIHRvIHdoaWNoIHRoZSAicmVncyIKK3BvaW50ZXIgYmVsb25ncyB0by4gIHVzZXJfbW9kZSgpIHJldHVybnMgVFJVRSBpZiB0aGUgQ1BVIHN0YXRlIHBvaW50ZWQKK3RvIGJ5ICJyZWdzIiB3YXMgZXhlY3V0aW5nIGluIHVzZXIgbW9kZSAocHJpdmlsZWdlIGxldmVsIDMpLgordXNlcl9zdGFjaygpIHJldHVybnMgVFJVRSBpZiB0aGUgc3RhdGUgcG9pbnRlZCB0byBieSAicmVncyIgd2FzCitleGVjdXRpbmcgb24gdGhlIHVzZXItbGV2ZWwgc3RhY2socykuICBGaW5hbGx5LCBmc3lzX21vZGUoKSByZXR1cm5zCitUUlVFIGlmIHRoZSBDUFUgc3RhdGUgcG9pbnRlZCB0byBieSAicmVncyIgd2FzIGV4ZWN1dGluZyBpbiBmc3lzLW1vZGUuCitUaGUgZnN5c19tb2RlKCkgbWFjcm8gaXMgZXF1aXZhbGVudCB0byB0aGUgZXhwcmVzc2lvbjoKKworCSF1c2VyX21vZGUocmVncykgJiYgdXNlcl9zdGFjayh0YXNrLHJlZ3MpCisKKyogSG93IHRvIHdyaXRlIGFuIGZzeXNjYWxsIGhhbmRsZXIKKworVGhlIGZpbGUgYXJjaC9pYTY0L2tlcm5lbC9mc3lzLlMgY29udGFpbnMgYSB0YWJsZSBvZiBmc3lzY2FsbC1oYW5kbGVycworKGZzeXNjYWxsX3RhYmxlKS4gIFRoaXMgdGFibGUgY29udGFpbnMgb25lIGVudHJ5IGZvciBlYWNoIHN5c3RlbSBjYWxsLgorQnkgZGVmYXVsdCwgYSBzeXN0ZW0gY2FsbCBpcyBoYW5kbGVkIGJ5IGZzeXNfZmFsbGJhY2tfc3lzY2FsbCgpLiAgVGhpcworcm91dGluZSB0YWtlcyBjYXJlIG9mIGVudGVyaW5nIChmdWxsKSBrZXJuZWwgbW9kZSBhbmQgY2FsbGluZyB0aGUKK25vcm1hbCBMaW51eCBzeXN0ZW0gY2FsbCBoYW5kbGVyLiAgRm9yIHBlcmZvcm1hbmNlLWNyaXRpY2FsIHN5c3RlbQorY2FsbHMsIGl0IGlzIHBvc3NpYmxlIHRvIHdyaXRlIGEgaGFuZC10dW5lZCBmc3lzY2FsbF9oYW5kbGVyLiAgRm9yCitleGFtcGxlLCBmc3lzLlMgY29udGFpbnMgZnN5c19nZXRwaWQoKSwgd2hpY2ggaXMgYSBoYW5kLXR1bmVkIHZlcnNpb24KK29mIHRoZSBnZXRwaWQoKSBzeXN0ZW0gY2FsbC4KKworVGhlIGVudHJ5IGFuZCBleGl0LXN0YXRlIG9mIGFuIGZzeXNjYWxsIGhhbmRsZXIgaXMgYXMgZm9sbG93czoKKworKiogTWFjaGluZSBzdGF0ZSBvbiBlbnRyeSB0byBmc3lzY2FsbCBoYW5kbGVyOgorCisgLSByMTAJICA9IDAKKyAtIHIxMQkgID0gc2F2ZWQgYXIucGZzIChhIHVzZXItbGV2ZWwgdmFsdWUpCisgLSByMTUJICA9IHN5c3RlbSBjYWxsIG51bWJlcgorIC0gcjE2CSAgPSAiY3VycmVudCIgdGFzayBwb2ludGVyIChpbiBub3JtYWwga2VybmVsLW1vZGUsIHRoaXMgaXMgaW4gcjEzKQorIC0gcjMyLXIzOSA9IHN5c3RlbSBjYWxsIGFyZ3VtZW50cworIC0gYjYJICA9IHJldHVybiBhZGRyZXNzIChhIHVzZXItbGV2ZWwgdmFsdWUpCisgLSBhci5wZnMgPSBwcmV2aW91cyBmcmFtZS1zdGF0ZSAoYSB1c2VyLWxldmVsIHZhbHVlKQorIC0gUFNSLmJlID0gY2xlYXJlZCB0byB6ZXJvIChpLmUuLCBsaXR0bGUtZW5kaWFuIGJ5dGUgb3JkZXIgaXMgaW4gZWZmZWN0KQorIC0gYWxsIG90aGVyIHJlZ2lzdGVycyBtYXkgY29udGFpbiB2YWx1ZXMgcGFzc2VkIGluIGZyb20gdXNlci1tb2RlCisKKyoqIFJlcXVpcmVkIG1hY2hpbmUgc3RhdGUgb24gZXhpdCB0byBmc3lzY2FsbCBoYW5kbGVyOgorCisgLSByMTEJICA9IHNhdmVkIGFyLnBmcyAoYXMgcGFzc2VkIGludG8gdGhlIGZzeXNjYWxsIGhhbmRsZXIpCisgLSByMTUJICA9IHN5c3RlbSBjYWxsIG51bWJlciAoYXMgcGFzc2VkIGludG8gdGhlIGZzeXNjYWxsIGhhbmRsZXIpCisgLSByMzItcjM5ID0gc3lzdGVtIGNhbGwgYXJndW1lbnRzIChhcyBwYXNzZWQgaW50byB0aGUgZnN5c2NhbGwgaGFuZGxlcikKKyAtIGI2CSAgPSByZXR1cm4gYWRkcmVzcyAoYXMgcGFzc2VkIGludG8gdGhlIGZzeXNjYWxsIGhhbmRsZXIpCisgLSBhci5wZnMgPSBwcmV2aW91cyBmcmFtZS1zdGF0ZSAoYXMgcGFzc2VkIGludG8gdGhlIGZzeXNjYWxsIGhhbmRsZXIpCisKK0ZzeXNjYWxsIGhhbmRsZXJzIGNhbiBleGVjdXRlIHdpdGggdmVyeSBsaXR0bGUgb3ZlcmhlYWQsIGJ1dCB3aXRoIHRoYXQKK3NwZWVkIGNvbWVzIGEgc2V0IG9mIHJlc3RyaWN0aW9uczoKKworIG8gRnN5c2NhbGwtaGFuZGxlcnMgTVVTVCBjaGVjayBmb3IgYW55IHBlbmRpbmcgd29yayBpbiB0aGUgZmxhZ3MKKyAgIG1lbWJlciBvZiB0aGUgdGhyZWFkLWluZm8gc3RydWN0dXJlIGFuZCBpZiBhbnkgb2YgdGhlCisgICBUSUZfQUxMV09SS19NQVNLIGZsYWdzIGFyZSBzZXQsIHRoZSBoYW5kbGVyIG5lZWRzIHRvIGZhbGwgYmFjayBvbgorICAgZG9pbmcgYSBmdWxsIHN5c3RlbSBjYWxsIChieSBjYWxsaW5nIGZzeXNfZmFsbGJhY2tfc3lzY2FsbCkuCisKKyBvIEZzeXNjYWxsLWhhbmRsZXJzIE1VU1QgcHJlc2VydmUgaW5jb21pbmcgYXJndW1lbnRzIChyMzItcjM5LCByMTEsCisgICByMTUsIGI2LCBhbmQgYXIucGZzKSBiZWNhdXNlIHRoZXkgd2lsbCBiZSBuZWVkZWQgaW4gY2FzZSBvZiBhCisgICBzeXN0ZW0gY2FsbCByZXN0YXJ0LiAgT2YgY291cnNlLCBhbGwgInByZXNlcnZlZCIgcmVnaXN0ZXJzIGFsc28KKyAgIG11c3QgYmUgcHJlc2VydmVkLCBpbiBhY2NvcmRhbmNlIHRvIHRoZSBub3JtYWwgY2FsbGluZyBjb252ZW50aW9ucy4KKworIG8gRnN5c2NhbGwtaGFuZGxlcnMgTVVTVCBjaGVjayBhcmd1bWVudCByZWdpc3RlcnMgZm9yIGNvbnRhaW5pbmcgYQorICAgTmFUIHZhbHVlIGJlZm9yZSB1c2luZyB0aGVtIGluIGFueSB3YXkgdGhhdCBjb3VsZCB0cmlnZ2VyIGEKKyAgIE5hVC1jb25zdW1wdGlvbiBmYXVsdC4gIElmIGEgc3lzdGVtIGNhbGwgYXJndW1lbnQgaXMgZm91bmQgdG8KKyAgIGNvbnRhaW4gYSBOYVQgdmFsdWUsIGFuIGZzeXNjYWxsLWhhbmRsZXIgbWF5IHJldHVybiBpbW1lZGlhdGVseQorICAgd2l0aCByOD1FSU5WQUwsIHIxMD0tMS4KKworIG8gRnN5c2NhbGwtaGFuZGxlcnMgTVVTVCBOT1QgdXNlIHRoZSAiYWxsb2MiIGluc3RydWN0aW9uIG9yIHBlcmZvcm0KKyAgIGFueSBvdGhlciBvcGVyYXRpb24gdGhhdCB3b3VsZCB0cmlnZ2VyIG1hbmRhdG9yeSBSU0UKKyAgIChyZWdpc3Rlci1zdGFjayBlbmdpbmUpIHRyYWZmaWMuCisKKyBvIEZzeXNjYWxsLWhhbmRsZXJzIE1VU1QgTk9UIHdyaXRlIHRvIGFueSBzdGFja2VkIHJlZ2lzdGVycyBiZWNhdXNlCisgICBpdCBpcyBub3Qgc2FmZSB0byBhc3N1bWUgdGhhdCB1c2VyLWxldmVsIGNhbGxlZCBhIGhhbmRsZXIgd2l0aCB0aGUKKyAgIHByb3BlciBudW1iZXIgb2YgYXJndW1lbnRzLgorCisgbyBGc3lzY2FsbC1oYW5kbGVycyBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBhY2Nlc3NpbmcgcGVyLUNQVSB2YXJpYWJsZXM6CisgICB1bmxlc3MgcHJvcGVyIHNhZmUtZ3VhcmRzIGFyZSB0YWtlbiAoZS5nLiwgaW50ZXJydXB0aW9ucyBhcmUgYXZvaWRlZCksCisgICBleGVjdXRpb24gbWF5IGJlIHByZS1lbXB0ZWQgYW5kIHJlc3VtZWQgb24gYW5vdGhlciBDUFUgYXQgYW55IGdpdmVuCisgICB0aW1lLgorCisgbyBGc3lzY2FsbC1oYW5kbGVycyBtdXN0IGJlIGNhcmVmdWwgbm90IHRvIGxlYWsgc2Vuc2l0aXZlIGtlcm5lbCcKKyAgIGluZm9ybWF0aW9uIGJhY2sgdG8gdXNlci1sZXZlbC4gIEluIHBhcnRpY3VsYXIsIGJlZm9yZSByZXR1cm5pbmcgdG8KKyAgIHVzZXItbGV2ZWwsIGNhcmUgbmVlZHMgdG8gYmUgdGFrZW4gdG8gY2xlYXIgYW55IHNjcmF0Y2ggcmVnaXN0ZXJzCisgICB0aGF0IGNvdWxkIGNvbnRhaW4gc2Vuc2l0aXZlIGluZm9ybWF0aW9uIChub3RlIHRoYXQgdGhlIGN1cnJlbnQKKyAgIHRhc2sgcG9pbnRlciBpcyBub3QgY29uc2lkZXJlZCBzZW5zaXRpdmU6IGl0J3MgYWxyZWFkeSBleHBvc2VkCisgICB0aHJvdWdoIGFyLms2KS4KKworIG8gRnN5c2NhbGwtaGFuZGxlcnMgTVVTVCBOT1QgYWNjZXNzIHVzZXItbWVtb3J5IHdpdGhvdXQgZmlyc3QKKyAgIHZhbGlkYXRpbmcgYWNjZXNzLXBlcm1pc3Npb24gKHRoaXMgY2FuIGJlIGRvbmUgdHlwaWNhbGx5IHZpYQorICAgcHJvYmUuci5mYXVsdCBhbmQvb3IgcHJvYmUudy5mYXVsdCkgYW5kIHdpdGhvdXQgZ3VhcmRpbmcgYWdhaW5zdAorICAgbWVtb3J5IGFjY2VzcyBleGNlcHRpb25zICh0aGlzIGNhbiBiZSBkb25lIHdpdGggdGhlIEVYKCkgbWFjcm9zCisgICBkZWZpbmVkIGJ5IGFzbW1hY3JvLmgpLgorCitUaGUgYWJvdmUgcmVzdHJpY3Rpb25zIG1heSBzZWVtIGRyYWNvbmlhbiwgYnV0IHJlbWVtYmVyIHRoYXQgaXQncworcG9zc2libGUgdG8gdHJhZGUgb2ZmIHNvbWUgb2YgdGhlIHJlc3RyaWN0aW9ucyBieSBwYXlpbmcgYSBzbGlnaHRseQoraGlnaGVyIG92ZXJoZWFkLiAgRm9yIGV4YW1wbGUsIGlmIGFuIGZzeXNjYWxsLWhhbmRsZXIgY291bGQgYmVuZWZpdAorZnJvbSB0aGUgc2hhZG93IHJlZ2lzdGVyIGJhbmssIGl0IGNvdWxkIHRlbXBvcmFyaWx5IGRpc2FibGUgUFNSLmkgYW5kCitQU1IuaWMsIHN3aXRjaCB0byBiYW5rIDAgKGJzdy4wKSBhbmQgdGhlbiB1c2UgdGhlIHNoYWRvdyByZWdpc3RlcnMgYXMKK25lZWRlZC4gIEluIG90aGVyIHdvcmRzLCBmb2xsb3dpbmcgdGhlIGFib3ZlIHJ1bGVzIHlpZWxkcyBleHRyZW1lbHkKK2Zhc3Qgc3lzdGVtIGNhbGwgZXhlY3V0aW9uICh3aGlsZSBmdWxseSBwcmVzZXJ2aW5nIHN5c3RlbSBjYWxsCitzZW1hbnRpY3MpLCBidXQgdGhlcmUgaXMgYWxzbyBhIGxvdCBvZiBmbGV4aWJpbGl0eSBpbiBoYW5kbGluZyBtb3JlCitjb21wbGljYXRlZCBjYXNlcy4KKworKiBTaWduYWwgaGFuZGxpbmcKKworVGhlIGRlbGl2ZXJ5IG9mIChhc3luY2hyb25vdXMpIHNpZ25hbHMgbXVzdCBiZSBkZWxheWVkIHVudGlsIGZzeXMtbW9kZQoraXMgZXhpdGVkLiAgVGhpcyBpcyBhY2NvbXBsaXNoZWQgd2l0aCB0aGUgaGVscCBvZiB0aGUgbG93ZXItcHJpdmlsZWdlCit0cmFuc2ZlciB0cmFwOiBhcmNoL2lhNjQva2VybmVsL3Byb2Nlc3MuYzpkb19ub3RpZnlfcmVzdW1lX3VzZXIoKQorY2hlY2tzIHdoZXRoZXIgdGhlIGludGVycnVwdGVkIHRhc2sgd2FzIGluIGZzeXMtbW9kZSBhbmQsIGlmIHNvLCBzZXRzCitQU1IubHAgYW5kIHJldHVybnMgaW1tZWRpYXRlbHkuICBXaGVuIGZzeXMtbW9kZSBpcyBleGl0ZWQgdmlhIHRoZQorImJyLnJldCIgaW5zdHJ1Y3Rpb24gdGhhdCBsb3dlcnMgdGhlIHByaXZpbGVnZSBsZXZlbCwgYSB0cmFwIHdpbGwKK29jY3VyLiAgVGhlIHRyYXAgaGFuZGxlciBjbGVhcnMgUFNSLmxwIGFnYWluIGFuZCByZXR1cm5zIGltbWVkaWF0ZWx5LgorVGhlIGtlcm5lbCBleGl0IHBhdGggdGhlbiBjaGVja3MgZm9yIGFuZCBkZWxpdmVycyBhbnkgcGVuZGluZyBzaWduYWxzLgorCisqIFBTUiBIYW5kbGluZworCitUaGUgImVwYyIgaW5zdHJ1Y3Rpb24gZG9lc24ndCBjaGFuZ2UgdGhlIGNvbnRlbnRzIG9mIFBTUiBhdCBhbGwuICBUaGlzCitpcyBpbiBjb250cmFzdCB0byBhIHJlZ3VsYXIgaW50ZXJydXB0aW9uLCB3aGljaCBjbGVhcnMgYWxtb3N0IGFsbAorYml0cy4gIEJlY2F1c2Ugb2YgdGhhdCwgc29tZSBjYXJlIG5lZWRzIHRvIGJlIHRha2VuIHRvIGVuc3VyZSB0aGluZ3MKK3dvcmsgYXMgZXhwZWN0ZWQuICBUaGUgZm9sbG93aW5nIGRpc2N1c3Npb24gZGVzY3JpYmVzIGhvdyBlYWNoIFBTUiBiaXQKK2lzIGhhbmRsZWQuCisKK1BTUi5iZQlDbGVhcmVkIHdoZW4gZW50ZXJpbmcgZnN5cy1tb2RlLiAgQSBzcmx6LmQgaW5zdHJ1Y3Rpb24gaXMgdXNlZAorCXRvIGVuc3VyZSB0aGUgQ1BVIGlzIGluIGxpdHRsZS1lbmRpYW4gbW9kZSBiZWZvcmUgdGhlIGZpcnN0CisJbG9hZC9zdG9yZSBpbnN0cnVjdGlvbiBpcyBleGVjdXRlZC4gIFBTUi5iZSBpcyBub3JtYWxseSBOT1QKKwlyZXN0b3JlZCB1cG9uIHJldHVybiBmcm9tIGFuIGZzeXMtbW9kZSBoYW5kbGVyLiAgSW4gb3RoZXIKKwl3b3JkcywgdXNlci1sZXZlbCBjb2RlIG11c3Qgbm90IHJlbHkgb24gUFNSLmJlIGJlaW5nIHByZXNlcnZlZAorCWFjcm9zcyBhIHN5c3RlbSBjYWxsLgorUFNSLnVwCVVuY2hhbmdlZC4KK1BTUi5hYwlVbmNoYW5nZWQuCitQU1IubWZsIFVuY2hhbmdlZC4gIE5vdGU6IGZzeXMtbW9kZSBoYW5kbGVycyBtdXN0IG5vdCB3cml0ZS1yZWdpc3RlcnMhCitQU1IubWZoCVVuY2hhbmdlZC4gIE5vdGU6IGZzeXMtbW9kZSBoYW5kbGVycyBtdXN0IG5vdCB3cml0ZS1yZWdpc3RlcnMhCitQU1IuaWMJVW5jaGFuZ2VkLiAgTm90ZTogZnN5cy1tb2RlIGhhbmRsZXJzIGNhbiBjbGVhciB0aGUgYml0LCBpZiBuZWVkZWQuCitQU1IuaQlVbmNoYW5nZWQuICBOb3RlOiBmc3lzLW1vZGUgaGFuZGxlcnMgY2FuIGNsZWFyIHRoZSBiaXQsIGlmIG5lZWRlZC4KK1BTUi5wawlVbmNoYW5nZWQuCitQU1IuZHQJVW5jaGFuZ2VkLgorUFNSLmRmbAlVbmNoYW5nZWQuICBOb3RlOiBmc3lzLW1vZGUgaGFuZGxlcnMgbXVzdCBub3Qgd3JpdGUtcmVnaXN0ZXJzIQorUFNSLmRmaAlVbmNoYW5nZWQuICBOb3RlOiBmc3lzLW1vZGUgaGFuZGxlcnMgbXVzdCBub3Qgd3JpdGUtcmVnaXN0ZXJzIQorUFNSLnNwCVVuY2hhbmdlZC4KK1BTUi5wcAlVbmNoYW5nZWQuCitQU1IuZGkJVW5jaGFuZ2VkLgorUFNSLnNpCVVuY2hhbmdlZC4KK1BTUi5kYglVbmNoYW5nZWQuICBUaGUga2VybmVsIHByZXZlbnRzIHVzZXItbGV2ZWwgZnJvbSBzZXR0aW5nIGEgaGFyZHdhcmUKKwlicmVha3BvaW50IHRoYXQgdHJpZ2dlcnMgYXQgYW55IHByaXZpbGVnZSBsZXZlbCBvdGhlciB0aGFuIDMgKHVzZXItbW9kZSkuCitQU1IubHAJVW5jaGFuZ2VkLgorUFNSLnRiCUxhenkgcmVkaXJlY3QuICBJZiBhIHRha2VuLWJyYW5jaCB0cmFwIG9jY3VycyB3aGlsZSBpbgorCWZzeXMtbW9kZSwgdGhlIHRyYXAtaGFuZGxlciBtb2RpZmllcyB0aGUgc2F2ZWQgbWFjaGluZSBzdGF0ZQorCXN1Y2ggdGhhdCBleGVjdXRpb24gcmVzdW1lcyBpbiB0aGUgZ2F0ZSBwYWdlIGF0CisJc3lzY2FsbF92aWFfYnJlYWsoKSwgd2l0aCBwcml2aWxlZ2UgbGV2ZWwgMy4gIE5vdGU6IHRoZQorCXRha2VuIGJyYW5jaCB3b3VsZCBvY2N1ciBvbiB0aGUgYnJhbmNoIGludm9raW5nIHRoZQorCWZzeXNjYWxsLWhhbmRsZXIsIGF0IHdoaWNoIHBvaW50LCBieSBkZWZpbml0aW9uLCBhIHN5c2NhbGwKKwlyZXN0YXJ0IGlzIHN0aWxsIHNhZmUuICBJZiB0aGUgc3lzdGVtIGNhbGwgbnVtYmVyIGlzIGludmFsaWQsCisJdGhlIGZzeXMtbW9kZSBoYW5kbGVyIHdpbGwgcmV0dXJuIGRpcmVjdGx5IHRvIHVzZXItbGV2ZWwuICBUaGlzCisJcmV0dXJuIHdpbGwgdHJpZ2dlciBhIHRha2VuLWJyYW5jaCB0cmFwLCBidXQgc2luY2UgdGhlIHRyYXAgaXMKKwl0YWtlbiBfYWZ0ZXJfIHJlc3RvcmluZyB0aGUgcHJpdmlsZWdlIGxldmVsLCB0aGUgQ1BVIGhhcyBhbHJlYWR5CisJbGVmdCBmc3lzLW1vZGUsIHNvIG5vIHNwZWNpYWwgdHJlYXRtZW50IGlzIG5lZWRlZC4KK1BTUi5ydAlVbmNoYW5nZWQuCitQU1IuY3BsCUNsZWFyZWQgdG8gMC4KK1BTUi5pcwlVbmNoYW5nZWQgKGd1YXJhbnRlZWQgdG8gYmUgMCBvbiBlbnRyeSB0byB0aGUgZ2F0ZSBwYWdlKS4KK1BTUi5tYwlVbmNoYW5nZWQuCitQU1IuaXQJVW5jaGFuZ2VkIChndWFyYW50ZWVkIHRvIGJlIDEpLgorUFNSLmlkCVVuY2hhbmdlZC4gIE5vdGU6IHRoZSBpYTY0IGxpbnV4IGtlcm5lbCBuZXZlciBzZXRzIHRoaXMgYml0LgorUFNSLmRhCVVuY2hhbmdlZC4gIE5vdGU6IHRoZSBpYTY0IGxpbnV4IGtlcm5lbCBuZXZlciBzZXRzIHRoaXMgYml0LgorUFNSLmRkCVVuY2hhbmdlZC4gIE5vdGU6IHRoZSBpYTY0IGxpbnV4IGtlcm5lbCBuZXZlciBzZXRzIHRoaXMgYml0LgorUFNSLnNzCUxhenkgcmVkaXJlY3QuICBJZiBzZXQsICJlcGMiIHdpbGwgY2F1c2UgYSBTaW5nbGUgU3RlcCBUcmFwIHRvCisJYmUgdGFrZW4uICBUaGUgdHJhcCBoYW5kbGVyIHRoZW4gbW9kaWZpZXMgdGhlIHNhdmVkIG1hY2hpbmUKKwlzdGF0ZSBzdWNoIHRoYXQgZXhlY3V0aW9uIHJlc3VtZXMgaW4gdGhlIGdhdGUgcGFnZSBhdAorCXN5c2NhbGxfdmlhX2JyZWFrKCksIHdpdGggcHJpdmlsZWdlIGxldmVsIDMuCitQU1IucmkJVW5jaGFuZ2VkLgorUFNSLmVkCVVuY2hhbmdlZC4gIE5vdGU6IFRoaXMgYml0IGNvdWxkIG9ubHkgaGF2ZSBhbiBlZmZlY3QgaWYgYW4gZnN5cy1tb2RlCisJaGFuZGxlciBwZXJmb3JtZWQgYSBzcGVjdWxhdGl2ZSBsb2FkIHRoYXQgZ2V0cyBOYVR0ZWQuICBJZiBzbywgdGhpcworCXdvdWxkIGJlIHRoZSBub3JtYWwgJiBleHBlY3RlZCBiZWhhdmlvciwgc28gbm8gc3BlY2lhbCB0cmVhdG1lbnQgaXMKKwluZWVkZWQuCitQU1IuYm4JVW5jaGFuZ2VkLiAgTm90ZTogZnN5cy1tb2RlIGhhbmRsZXJzIG1heSBjbGVhciB0aGUgYml0LCBpZiBuZWVkZWQuCisJRG9pbmcgc28gcmVxdWlyZXMgY2xlYXJpbmcgUFNSLmkgYW5kIFBTUi5pYyBhcyB3ZWxsLgorUFNSLmlhCVVuY2hhbmdlZC4gIE5vdGU6IHRoZSBpYTY0IGxpbnV4IGtlcm5lbCBuZXZlciBzZXRzIHRoaXMgYml0LgorCisqIFVzaW5nIGZhc3Qgc3lzdGVtIGNhbGxzCisKK1RvIHVzZSBmYXN0IHN5c3RlbSBjYWxscywgdXNlcnNwYWNlIGFwcGxpY2F0aW9ucyBuZWVkIHNpbXBseSBjYWxsCitfX2tlcm5lbF9zeXNjYWxsX3ZpYV9lcGMoKS4gIEZvciBleGFtcGxlCisKKy0tIGV4YW1wbGUgZmdldHRpbWVvZmRheSgpIGNhbGwgLS0KKy0tIGZnZXR0aW1lb2ZkYXkuUyAtLQorCisjaW5jbHVkZSA8YXNtL2FzbW1hY3JvLmg+CisKK0dMT0JBTF9FTlRSWShmZ2V0dGltZW9mZGF5KQorLnByb2xvZ3VlCisuc2F2ZSBhci5wZnMsIHIxMQorbW92IHIxMSA9IGFyLnBmcworLmJvZHkgCisKK21vdiByMiA9IDB4YTAwMDAwMDAwMDAyMDY2MDs7ICAvLyBnYXRlIGFkZHJlc3MgCisJCQkgICAgICAgLy8gZm91bmQgYnkgaW5zcGVjdGlvbiBvZiBTeXN0ZW0ubWFwIGZvciB0aGUgCisJCQkgICAgICAgLy8gX19rZXJuZWxfc3lzY2FsbF92aWFfZXBjKCkgZnVuY3Rpb24uICBTZWUKKwkJCSAgICAgICAvLyBiZWxvdyBmb3IgaG93IHRvIGRvIHRoaXMgZm9yIHJlYWwuCisKK21vdiBiNyA9IHIyCittb3YgcjE1ID0gMTA4NwkJICAgICAgIC8vIGdldHRpbWVvZmRheSBzeXNjYWxsCis7OworYnIuY2FsbC5zcHRrLm1hbnkgYjYgPSBiNworOzsKKworLnJlc3RvcmUgc3AKKworbW92IGFyLnBmcyA9IHIxMQorYnIucmV0LnNwdGsubWFueSBycDs7CSAgICAgIC8vIHJldHVybiB0byBjYWxsZXIKK0VORChmZ2V0dGltZW9mZGF5KQorCistLSBlbmQgZmdldHRpbWVvZmRheS5TIC0tCisKK0luIHJlYWxpdHksIGdldHRpbmcgdGhlIGdhdGUgYWRkcmVzcyBpcyBhY2NvbXBsaXNoZWQgYnkgdHdvIGV4dHJhCit2YWx1ZXMgcGFzc2VkIHZpYSB0aGUgRUxGIGF1eGlsaWFyeSB2ZWN0b3IgKGluY2x1ZGUvYXNtLWlhNjQvZWxmLmgpCisKKyBvIEFUX1NZU0lORk8gOiBpcyB0aGUgYWRkcmVzcyBvZiBfX2tlcm5lbF9zeXNjYWxsX3ZpYV9lcGMoKQorIG8gQVRfU1lTSU5GT19FSERSIDogaXMgdGhlIGFkZHJlc3Mgb2YgdGhlIGtlcm5lbCBnYXRlIEVMRiBEU08KKworVGhlIEVMRiBEU08gaXMgYSBwcmUtbGlua2VkIGxpYnJhcnkgdGhhdCBpcyBtYXBwZWQgaW4gYnkgdGhlIGtlcm5lbCBhdAordGhlIGdhdGUgcGFnZS4gIEl0IGlzIGEgcHJvcGVyIEVMRiBzaGFyZWQgb2JqZWN0IHNvLCB3aXRoIGEgZHluYW1pYworbG9hZGVyIHRoYXQgcmVjb2duaXNlcyB0aGUgbGlicmFyeSwgeW91IHNob3VsZCBiZSBhYmxlIHRvIG1ha2UgY2FsbHMgdG8KK3RoZSBleHBvcnRlZCBmdW5jdGlvbnMgd2l0aGluIGl0IGFzIHdpdGggYW55IG90aGVyIHNoYXJlZCBsaWJyYXJ5LgorQVRfU1lTSU5GTyBwb2ludHMgaW50byB0aGUga2VybmVsIERTTyBhdCB0aGUKK19fa2VybmVsX3N5c2NhbGxfdmlhX2VwYygpIGZ1bmN0aW9uIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMgKGl0IHdhcwordXNlZCBiZWZvcmUgdGhlIGtlcm5lbCBEU08pIGFuZCBhcyBhIGNvbnZlbmllbmNlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pYTY0L21jYS50eHQgYi9Eb2N1bWVudGF0aW9uL2lhNjQvbWNhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDk3YzYwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pYTY0L21jYS50eHQKQEAgLTAsMCArMSwxOTQgQEAKK0FuIGFkLWhvYyBjb2xsZWN0aW9uIG9mIG5vdGVzIG9uIElBNjQgTUNBIGFuZCBJTklUIHByb2Nlc3NpbmcuICBGZWVsCitmcmVlIHRvIHVwZGF0ZSBpdCB3aXRoIG5vdGVzIGFib3V0IGFueSBhcmVhIHRoYXQgaXMgbm90IGNsZWFyLgorCistLS0KKworTUNBL0lOSVQgYXJlIGNvbXBsZXRlbHkgYXN5bmNocm9ub3VzLiAgVGhleSBjYW4gb2NjdXIgYXQgYW55IHRpbWUsIHdoZW4KK3RoZSBPUyBpcyBpbiBhbnkgc3RhdGUuICBJbmNsdWRpbmcgd2hlbiBvbmUgb2YgdGhlIGNwdXMgaXMgYWxyZWFkeQoraG9sZGluZyBhIHNwaW5sb2NrLiAgVHJ5aW5nIHRvIGdldCBhbnkgbG9jayBmcm9tIE1DQS9JTklUIHN0YXRlIGlzCithc2tpbmcgZm9yIGRlYWRsb2NrLiAgQWxzbyB0aGUgc3RhdGUgb2Ygc3RydWN0dXJlcyB0aGF0IGFyZSBwcm90ZWN0ZWQKK2J5IGxvY2tzIGlzIGluZGV0ZXJtaW5hdGUsIGluY2x1ZGluZyBsaW5rZWQgbGlzdHMuCisKKy0tLQorCitUaGUgY29tcGxpY2F0ZWQgaWE2NCBNQ0EgcHJvY2Vzcy4gIEFsbCBvZiB0aGlzIGlzIG1hbmRhdGVkIGJ5IEludGVsJ3MKK3NwZWNpZmljYXRpb24gZm9yIGlhNjQgU0FMLCBlcnJvciByZWNvdmVyeSBhbmQgdW53aW5kLCBpdCBpcyBub3QgYXMKK2lmIHdlIGhhdmUgYSBjaG9pY2UgaGVyZS4KKworKiBNQ0Egb2NjdXJzIG9uIG9uZSBjcHUsIHVzdWFsbHkgZHVlIHRvIGEgZG91YmxlIGJpdCBtZW1vcnkgZXJyb3IuCisgIFRoaXMgaXMgdGhlIG1vbmFyY2ggY3B1LgorCisqIFNBTCBzZW5kcyBhbiBNQ0EgcmVuZGV6dm91cyBpbnRlcnJ1cHQgKHdoaWNoIGlzIGEgbm9ybWFsIGludGVycnVwdCkKKyAgdG8gYWxsIHRoZSBvdGhlciBjcHVzLCB0aGUgc2xhdmVzLgorCisqIFNsYXZlIGNwdXMgdGhhdCByZWNlaXZlIHRoZSBNQ0EgaW50ZXJydXB0IGNhbGwgZG93biBpbnRvIFNBTCwgdGhleQorICBlbmQgdXAgc3Bpbm5pbmcgZGlzYWJsZWQgd2hpbGUgdGhlIE1DQSBpcyBiZWluZyBzZXJ2aWNlZC4KKworKiBJZiBhbnkgc2xhdmUgY3B1IHdhcyBhbHJlYWR5IHNwaW5uaW5nIGRpc2FibGVkIHdoZW4gdGhlIE1DQSBvY2N1cnJlZAorICB0aGVuIGl0IGNhbm5vdCBzZXJ2aWNlIHRoZSBNQ0EgaW50ZXJydXB0LiAgU0FMIHdhaXRzIH4yMCBzZWNvbmRzIHRoZW4KKyAgc2VuZHMgYW4gdW5tYXNrYWJsZSBJTklUIGV2ZW50IHRvIHRoZSBzbGF2ZSBjcHVzIHRoYXQgaGF2ZSBub3QKKyAgYWxyZWFkeSByZW5kZXp2b3VzZWQuCisKKyogQmVjYXVzZSBNQ0EvSU5JVCBjYW4gYmUgZGVsaXZlcmVkIGF0IGFueSB0aW1lLCBpbmNsdWRpbmcgd2hlbiB0aGUgY3B1CisgIGlzIGRvd24gaW4gUEFMIGluIHBoeXNpY2FsIG1vZGUsIHRoZSByZWdpc3RlcnMgYXQgdGhlIHRpbWUgb2YgdGhlCisgIGV2ZW50IGFyZSBfY29tcGxldGVseV8gdW5kZWZpbmVkLiAgSW4gcGFydGljdWxhciB0aGUgTUNBL0lOSVQKKyAgaGFuZGxlcnMgY2Fubm90IHJlbHkgb24gdGhlIHRocmVhZCBwb2ludGVyLCBQQUwgcGh5c2ljYWwgbW9kZSBjYW4KKyAgKGFuZCBkb2VzKSBtb2RpZnkgVFAuICBJdCBpcyBhbGxvd2VkIHRvIGRvIHRoYXQgYXMgbG9uZyBhcyBpdCByZXNldHMKKyAgVFAgb24gcmV0dXJuLiAgSG93ZXZlciBNQ0EvSU5JVCBldmVudHMgZXhwb3NlIHVzIHRvIHRoZXNlIFBBTAorICBpbnRlcm5hbCBUUCBjaGFuZ2VzLiAgSGVuY2UgY3Vycl90YXNrKCkuCisKKyogSWYgYW4gTUNBL0lOSVQgZXZlbnQgb2NjdXJzIHdoaWxlIHRoZSBrZXJuZWwgd2FzIHJ1bm5pbmcgKG5vdCB1c2VyCisgIHNwYWNlKSBhbmQgdGhlIGtlcm5lbCBoYXMgY2FsbGVkIFBBTCB0aGVuIHRoZSBNQ0EvSU5JVCBoYW5kbGVyIGNhbm5vdAorICBhc3N1bWUgdGhhdCB0aGUga2VybmVsIHN0YWNrIGlzIGluIGEgZml0IHN0YXRlIHRvIGJlIHVzZWQuICBNYWlubHkKKyAgYmVjYXVzZSBQQUwgbWF5IG9yIG1heSBub3QgbWFpbnRhaW4gdGhlIHN0YWNrIHBvaW50ZXIgaW50ZXJuYWxseS4KKyAgQmVjYXVzZSB0aGUgTUNBL0lOSVQgaGFuZGxlcnMgY2Fubm90IHRydXN0IHRoZSBrZXJuZWwgc3RhY2ssIHRoZXkKKyAgaGF2ZSB0byB1c2UgdGhlaXIgb3duLCBwZXItY3B1IHN0YWNrcy4gIFRoZSBNQ0EvSU5JVCBzdGFja3MgYXJlCisgIHByZWZvcm1hdHRlZCB3aXRoIGp1c3QgZW5vdWdoIHRhc2sgc3RhdGUgdG8gbGV0IHRoZSByZWxldmFudCBoYW5kbGVycworICBkbyB0aGVpciBqb2IuCisKKyogVW5saWtlIG1vc3Qgb3RoZXIgYXJjaGl0ZWN0dXJlcywgdGhlIGlhNjQgc3RydWN0IHRhc2sgaXMgZW1iZWRkZWQgaW4KKyAgdGhlIGtlcm5lbCBzdGFja1sxXS4gIFNvIHN3aXRjaGluZyB0byBhIG5ldyBrZXJuZWwgc3RhY2sgbWVhbnMgdGhhdAorICB3ZSBzd2l0Y2ggdG8gYSBuZXcgdGFzayBhcyB3ZWxsLiAgQmVjYXVzZSB2YXJpb3VzIGJpdHMgb2YgdGhlIGtlcm5lbAorICBhc3N1bWUgdGhhdCBjdXJyZW50IHBvaW50cyBpbnRvIHRoZSBzdHJ1Y3QgdGFzaywgc3dpdGNoaW5nIHRvIGEgbmV3CisgIHN0YWNrIGFsc28gbWVhbnMgYSBuZXcgdmFsdWUgZm9yIGN1cnJlbnQuCisKKyogT25jZSBhbGwgc2xhdmVzIGhhdmUgcmVuZGV6dm91c2VkIGFuZCBhcmUgc3Bpbm5pbmcgZGlzYWJsZWQsIHRoZQorICBtb25hcmNoIGlzIGVudGVyZWQuICBUaGUgbW9uYXJjaCBub3cgdHJpZXMgdG8gZGlhZ25vc2UgdGhlIHByb2JsZW0KKyAgYW5kIGRlY2lkZSBpZiBpdCBjYW4gcmVjb3ZlciBvciBub3QuCisKKyogUGFydCBvZiB0aGUgbW9uYXJjaCdzIGpvYiBpcyB0byBsb29rIGF0IHRoZSBzdGF0ZSBvZiBhbGwgdGhlIG90aGVyCisgIHRhc2tzLiAgVGhlIG9ubHkgd2F5IHRvIGRvIHRoYXQgb24gaWE2NCBpcyB0byBjYWxsIHRoZSB1bndpbmRlciwKKyAgYXMgbWFuZGF0ZWQgYnkgSW50ZWwuCisKKyogVGhlIHN0YXJ0aW5nIHBvaW50IGZvciB0aGUgdW53aW5kIGRlcGVuZHMgb24gd2hldGhlciBhIHRhc2sgaXMKKyAgcnVubmluZyBvciBub3QuICBUaGF0IGlzLCB3aGV0aGVyIGl0IGlzIG9uIGEgY3B1IG9yIGlzIGJsb2NrZWQuICBUaGUKKyAgbW9uYXJjaCBoYXMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGEgdGFzayBpcyBvbiBhIGNwdSBiZWZvcmUgaXQKKyAga25vd3MgaG93IHRvIHN0YXJ0IHVud2luZGluZyBpdC4gIFRoZSB0YXNrcyB0aGF0IHJlY2VpdmVkIGFuIE1DQSBvcgorICBJTklUIGV2ZW50IGFyZSBubyBsb25nZXIgcnVubmluZywgdGhleSBoYXZlIGJlZW4gY29udmVydGVkIHRvIGJsb2NrZWQKKyAgdGFza3MuICBCdXQgKGFuZCBpdHMgYSBiaWcgYnV0KSwgdGhlIGNwdXMgdGhhdCByZWNlaXZlZCB0aGUgTUNBCisgIHJlbmRlenZvdXMgaW50ZXJydXB0IGFyZSBzdGlsbCBydW5uaW5nIG9uIHRoZWlyIG5vcm1hbCBrZXJuZWwgc3RhY2tzIQorCisqIFRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlc2UgdHdvIGNhc2VzLCB0aGUgbW9uYXJjaCBtdXN0IGtub3cgd2hpY2gKKyAgdGFza3MgYXJlIG9uIGEgY3B1IGFuZCB3aGljaCBhcmUgbm90LiAgSGVuY2UgZWFjaCBzbGF2ZSBjcHUgdGhhdAorICBzd2l0Y2hlcyB0byBhbiBNQ0EvSU5JVCBzdGFjaywgcmVnaXN0ZXJzIGl0cyBuZXcgc3RhY2sgdXNpbmcKKyAgc2V0X2N1cnJfdGFzaygpLCBzbyB0aGUgbW9uYXJjaCBjYW4gdGVsbCB0aGF0IHRoZSBfb3JpZ2luYWxfIHRhc2sgaXMKKyAgbm8gbG9uZ2VyIHJ1bm5pbmcgb24gdGhhdCBjcHUuICBUaGF0IGdpdmVzIHVzIGEgZGVjZW50IGNoYW5jZSBvZgorICBnZXR0aW5nIGEgdmFsaWQgYmFja3RyYWNlIG9mIHRoZSBfb3JpZ2luYWxfIHRhc2suCisKKyogTUNBL0lOSVQgY2FuIGJlIG5lc3RlZCwgdG8gYSBkZXB0aCBvZiAyIG9uIGFueSBjcHUuICBJbiB0aGUgY2FzZSBvZiBhCisgIG5lc3RlZCBlcnJvciwgd2Ugd2FudCBkaWFnbm9zdGljcyBvbiB0aGUgTUNBL0lOSVQgaGFuZGxlciB0aGF0CisgIGZhaWxlZCwgbm90IG9uIHRoZSB0YXNrIHRoYXQgd2FzIG9yaWdpbmFsbHkgcnVubmluZy4gIEFnYWluIHRoaXMKKyAgcmVxdWlyZXMgc2V0X2N1cnJfdGFzaygpIHNvIHRoZSBNQ0EvSU5JVCBoYW5kbGVycyBjYW4gcmVnaXN0ZXIgdGhlaXIKKyAgb3duIHN0YWNrIGFzIHJ1bm5pbmcgb24gdGhhdCBjcHUuICBUaGVuIGEgcmVjdXJzaXZlIGVycm9yIGdldHMgYQorICB0cmFjZSBvZiB0aGUgZmFpbGluZyBoYW5kbGVyJ3MgInRhc2siLgorCitbMV0gTXkgKEtlaXRoIE93ZW5zKSBvcmlnaW5hbCBkZXNpZ24gY2FsbGVkIGZvciBpYTY0IHRvIHNlcGFyYXRlIGl0cworICAgIHN0cnVjdCB0YXNrIGFuZCB0aGUga2VybmVsIHN0YWNrcy4gIFRoZW4gdGhlIE1DQS9JTklUIGRhdGEgd291bGQgYmUKKyAgICBjaGFpbmVkIHN0YWNrcyBsaWtlIGkzODYgaW50ZXJydXB0IHN0YWNrcy4gIEJ1dCB0aGF0IHJlcXVpcmVkCisgICAgcmFkaWNhbCBzdXJnZXJ5IG9uIHRoZSByZXN0IG9mIGlhNjQsIHBsdXMgZXh0cmEgaGFyZCB3aXJlZCBUTEIKKyAgICBlbnRyaWVzIHdpdGggaXRzIGFzc29jaWF0ZWQgcGVyZm9ybWFuY2UgZGVncmFkYXRpb24uICBEYXZpZAorICAgIE1vc2JlcmdlciB2ZXRvZWQgdGhhdCBhcHByb2FjaC4gIFdoaWNoIG1lYW50IHRoYXQgc2VwYXJhdGUga2VybmVsCisgICAgc3RhY2tzIG1lYW50IHNlcGFyYXRlICJ0YXNrcyIgZm9yIHRoZSBNQ0EvSU5JVCBoYW5kbGVycy4KKworLS0tCisKK0lOSVQgaXMgbGVzcyBjb21wbGljYXRlZCB0aGFuIE1DQS4gIFByZXNzaW5nIHRoZSBubWkgYnV0dG9uIG9yIHVzaW5nCit0aGUgZXF1aXZhbGVudCBjb21tYW5kIG9uIHRoZSBtYW5hZ2VtZW50IGNvbnNvbGUgc2VuZHMgSU5JVCB0byBhbGwKK2NwdXMuICBTQUwgcGlja3Mgb25lIG9mIHRoZSBjcHVzIGFzIHRoZSBtb25hcmNoIGFuZCB0aGUgcmVzdCBhcmUKK3NsYXZlcy4gIEFsbCB0aGUgT1MgSU5JVCBoYW5kbGVycyBhcmUgZW50ZXJlZCBhdCBhcHByb3hpbWF0ZWx5IHRoZSBzYW1lCit0aW1lLiAgVGhlIE9TIG1vbmFyY2ggcHJpbnRzIHRoZSBzdGF0ZSBvZiBhbGwgdGFza3MgYW5kIHJldHVybnMsIGFmdGVyCit3aGljaCB0aGUgc2xhdmVzIHJldHVybiBhbmQgdGhlIHN5c3RlbSByZXN1bWVzLgorCitBdCBsZWFzdCB0aGF0IGlzIHdoYXQgaXMgc3VwcG9zZWQgdG8gaGFwcGVuLiAgQWxhcyB0aGVyZSBhcmUgYnJva2VuCit2ZXJzaW9ucyBvZiBTQUwgb3V0IHRoZXJlLiAgU29tZSBkcml2ZSBhbGwgdGhlIGNwdXMgYXMgbW9uYXJjaHMuICBTb21lCitkcml2ZSB0aGVtIGFsbCBhcyBzbGF2ZXMuICBTb21lIGRyaXZlIG9uZSBjcHUgYXMgbW9uYXJjaCwgd2FpdCBmb3IgdGhhdAorY3B1IHRvIHJldHVybiBmcm9tIHRoZSBPUyB0aGVuIGRyaXZlIHRoZSByZXN0IGFzIHNsYXZlcy4gIFNvbWUgdmVyc2lvbnMKK29mIFNBTCBjYW5ub3QgZXZlbiBjb3BlIHdpdGggcmV0dXJuaW5nIGZyb20gdGhlIE9TLCB0aGV5IHNwaW4gaW5zaWRlCitTQUwgb24gcmVzdW1lLiAgVGhlIE9TIElOSVQgY29kZSBoYXMgd29ya2Fyb3VuZHMgZm9yIHNvbWUgb2YgdGhlc2UKK2Jyb2tlbiBTQUwgc3ltcHRvbXMsIGJ1dCBzb21lIHNpbXBseSBjYW5ub3QgYmUgZml4ZWQgZnJvbSB0aGUgT1Mgc2lkZS4KKworLS0tCisKK1RoZSBzY2hlZHVsZXIgaG9va3MgdXNlZCBieSBpYTY0IChjdXJyX3Rhc2ssIHNldF9jdXJyX3Rhc2spIGFyZSBsYXllcgordmlvbGF0aW9ucy4gIFVuZm9ydHVuYXRlbHkgTUNBL0lOSVQgc3RhcnQgb2ZmIGFzIG1hc3NpdmUgbGF5ZXIKK3Zpb2xhdGlvbnMgKGNhbiBvY2N1ciBhdCBfYW55XyB0aW1lKSBhbmQgdGhleSBidWlsZCBmcm9tIHRoZXJlLgorCitBdCBsZWFzdCBpYTY0IG1ha2VzIGFuIGF0dGVtcHQgYXQgcmVjb3ZlcmluZyBmcm9tIGhhcmR3YXJlIGVycm9ycywgYnV0CitpdCBpcyBhIGRpZmZpY3VsdCBwcm9ibGVtIGJlY2F1c2Ugb2YgdGhlIGFzeW5jaHJvbm91cyBuYXR1cmUgb2YgdGhlc2UKK2Vycm9ycy4gIFdoZW4gcHJvY2Vzc2luZyBhbiB1bm1hc2thYmxlIGludGVycnVwdCB3ZSBzb21ldGltZXMgbmVlZAorc3BlY2lhbCBjb2RlIHRvIGNvcGUgd2l0aCBvdXIgaW5hYmlsaXR5IHRvIHRha2UgYW55IGxvY2tzLgorCistLS0KKworSG93IGlzIGlhNjQgTUNBL0lOSVQgZGlmZmVyZW50IGZyb20geDg2IE5NST8KKworKiB4ODYgTk1JIHR5cGljYWxseSBnZXRzIGRlbGl2ZXJlZCB0byBvbmUgY3B1LiAgTUNBL0lOSVQgZ2V0cyBzZW50IHRvCisgIGFsbCBjcHVzLgorCisqIHg4NiBOTUkgY2Fubm90IGJlIG5lc3RlZC4gIE1DQS9JTklUIGNhbiBiZSBuZXN0ZWQsIHRvIGEgZGVwdGggb2YgMgorICBwZXIgY3B1LgorCisqIHg4NiBoYXMgYSBzZXBhcmF0ZSBzdHJ1Y3QgdGFzayB3aGljaCBwb2ludHMgdG8gb25lIG9mIG11bHRpcGxlIGtlcm5lbAorICBzdGFja3MuICBpYTY0IGhhcyB0aGUgc3RydWN0IHRhc2sgZW1iZWRkZWQgaW4gdGhlIHNpbmdsZSBrZXJuZWwKKyAgc3RhY2ssIHNvIHN3aXRjaGluZyBzdGFjayBtZWFucyBzd2l0Y2hpbmcgdGFzay4KKworKiB4ODYgZG9lcyBub3QgY2FsbCB0aGUgQklPUyBzbyB0aGUgTk1JIGhhbmRsZXIgZG9lcyBub3QgaGF2ZSB0byB3b3JyeQorICBhYm91dCBhbnkgcmVnaXN0ZXJzIGhhdmluZyBjaGFuZ2VkLiAgTUNBL0lOSVQgY2FuIG9jY3VyIHdoaWxlIHRoZSBjcHUKKyAgaXMgaW4gUEFMIGluIHBoeXNpY2FsIG1vZGUsIHdpdGggdW5kZWZpbmVkIHJlZ2lzdGVycyBhbmQgYW4gdW5kZWZpbmVkCisgIGtlcm5lbCBzdGFjay4KKworKiBpMzg2IGJhY2t0cmFjZSBpcyBub3QgdmVyeSBzZW5zaXRpdmUgdG8gd2hldGhlciBhIHByb2Nlc3MgaXMgcnVubmluZworICBvciBub3QuICBpYTY0IHVud2luZCBpcyB2ZXJ5LCB2ZXJ5IHNlbnNpdGl2ZSB0byB3aGV0aGVyIGEgcHJvY2VzcyBpcworICBydW5uaW5nIG9yIG5vdC4KKworLS0tCisKK1doYXQgaGFwcGVucyB3aGVuIE1DQS9JTklUIGlzIGRlbGl2ZXJlZCB3aGF0IGEgY3B1IGlzIHJ1bm5pbmcgdXNlcgorc3BhY2UgY29kZT8KKworVGhlIHVzZXIgbW9kZSByZWdpc3RlcnMgYXJlIHN0b3JlZCBpbiB0aGUgUlNFIGFyZWEgb2YgdGhlIE1DQS9JTklUIG9uCitlbnRyeSB0byB0aGUgT1MgYW5kIGFyZSByZXN0b3JlZCBmcm9tIHRoZXJlIG9uIHJldHVybiB0byBTQUwsIHNvIHVzZXIKK21vZGUgcmVnaXN0ZXJzIGFyZSBwcmVzZXJ2ZWQgYWNyb3NzIGEgcmVjb3ZlcmFibGUgTUNBL0lOSVQuICBTaW5jZSB0aGUKK09TIGhhcyBubyBpZGVhIHdoYXQgdW53aW5kIGRhdGEgaXMgYXZhaWxhYmxlIGZvciB0aGUgdXNlciBzcGFjZSBzdGFjaywKK01DQS9JTklUIG5ldmVyIHRyaWVzIHRvIGJhY2t0cmFjZSB1c2VyIHNwYWNlLiAgV2hpY2ggbWVhbnMgdGhhdCB0aGUgT1MKK2RvZXMgbm90IGJvdGhlciBtYWtpbmcgdGhlIHVzZXIgc3BhY2UgcHJvY2VzcyBsb29rIGxpa2UgYSBibG9ja2VkIHRhc2ssCitpLmUuIHRoZSBPUyBkb2VzIG5vdCBjb3B5IHB0X3JlZ3MgYW5kIHN3aXRjaF9zdGFjayB0byB0aGUgdXNlciBzcGFjZQorc3RhY2suICBBbHNvIHRoZSBPUyBoYXMgbm8gaWRlYSBob3cgYmlnIHRoZSB1c2VyIHNwYWNlIFJTRSBhbmQgbWVtb3J5CitzdGFja3MgYXJlLCB3aGljaCBtYWtlcyBpdCB0b28gcmlza3kgdG8gY29weSB0aGUgc2F2ZWQgc3RhdGUgdG8gYSB1c2VyCittb2RlIHN0YWNrLgorCistLS0KKworSG93IGRvIHdlIGdldCBhIGJhY2t0cmFjZSBvbiB0aGUgdGFza3MgdGhhdCB3ZXJlIHJ1bm5pbmcgd2hlbiBNQ0EvSU5JVAord2FzIGRlbGl2ZXJlZD8KKworbWNhLmM6OjppYTY0X21jYV9tb2RpZnlfb3JpZ2luYWxfc3RhY2soKS4gIFRoYXQgaWRlbnRpZmllcyBhbmQKK3ZlcmlmaWVzIHRoZSBvcmlnaW5hbCBrZXJuZWwgc3RhY2ssIGNvcGllcyB0aGUgZGlydHkgcmVnaXN0ZXJzIGZyb20KK3RoZSBNQ0EvSU5JVCBzdGFjaydzIFJTRSB0byB0aGUgb3JpZ2luYWwgc3RhY2sncyBSU0UsIGNvcGllcyB0aGUKK3NrZWxldG9uIHN0cnVjdCBwdF9yZWdzIGFuZCBzd2l0Y2hfc3RhY2sgdG8gdGhlIG9yaWdpbmFsIHN0YWNrLCBmaWxscworaW4gdGhlIHNrZWxldG9uIHN0cnVjdHVyZXMgZnJvbSB0aGUgUEFMIG1pbnN0YXRlIGFyZWEgYW5kIHVwZGF0ZXMgdGhlCitvcmlnaW5hbCBzdGFjaydzIHRocmVhZC5rc3AuICBUaGF0IG1ha2VzIHRoZSBvcmlnaW5hbCBzdGFjayBsb29rCitleGFjdGx5IGxpa2UgYW55IG90aGVyIGJsb2NrZWQgdGFzaywgaS5lLiBpdCBub3cgYXBwZWFycyB0byBiZQorc2xlZXBpbmcuICBUbyBnZXQgYSBiYWNrdHJhY2UsIGp1c3Qgc3RhcnQgd2l0aCB0aHJlYWQua3NwIGZvciB0aGUKK29yaWdpbmFsIHRhc2sgYW5kIHVud2luZCBsaWtlIGFueSBvdGhlciBzbGVlcGluZyB0YXNrLgorCistLS0KKworSG93IGRvIHdlIGlkZW50aWZ5IHRoZSB0YXNrcyB0aGF0IHdlcmUgcnVubmluZyB3aGVuIE1DQS9JTklUIHdhcworZGVsaXZlcmVkPworCitJZiB0aGUgcHJldmlvdXMgdGFzayBoYXMgYmVlbiB2ZXJpZmllZCBhbmQgY29udmVydGVkIHRvIGEgYmxvY2tlZAorc3RhdGUsIHRoZW4gc29zLT5wcmV2X3Rhc2sgb24gdGhlIE1DQS9JTklUIHN0YWNrIGlzIHVwZGF0ZWQgdG8gcG9pbnQgdG8KK3RoZSBwcmV2aW91cyB0YXNrLiAgWW91IGNhbiBsb29rIGF0IHRoYXQgZmllbGQgaW4gZHVtcHMgb3IgZGVidWdnZXJzLgorVG8gaGVscCBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBoYW5kbGVyIGFuZCB0aGUgb3JpZ2luYWwgdGFza3MsCitoYW5kbGVycyBoYXZlIF9USUZfTUNBX0lOSVQgc2V0IGluIHRocmVhZF9pbmZvLmZsYWdzLgorCitUaGUgc29zIGRhdGEgaXMgYWx3YXlzIGluIHRoZSBNQ0EvSU5JVCBoYW5kbGVyIHN0YWNrLCBhdCBvZmZzZXQKK01DQV9TT1NfT0ZGU0VULiAgWW91IGNhbiBnZXQgdGhhdCB2YWx1ZSBmcm9tIG1jYV9hc20uaCBvciBjYWxjdWxhdGUgaXQKK2FzIEtFUk5FTF9TVEFDS19TSVpFIC0gc2l6ZW9mKHN0cnVjdCBwdF9yZWdzKSAtIHNpemVvZihzdHJ1Y3QKK2lhNjRfc2FsX29zX3N0YXRlKSwgd2l0aCAxNiBieXRlIGFsaWdubWVudCBmb3IgYWxsIHN0cnVjdHVyZXMuCisKK0Fsc28gdGhlIGNvbW0gZmllbGQgb2YgdGhlIE1DQS9JTklUIHRhc2sgaXMgbW9kaWZpZWQgdG8gaW5jbHVkZSB0aGUgcGlkCitvZiB0aGUgb3JpZ2luYWwgdGFzaywgZm9yIGh1bWFucyB0byB1c2UuICBGb3IgZXhhbXBsZSwgYSBjb21tIGZpZWxkIG9mCisnTUNBIDEyMTU5JyBtZWFucyB0aGF0IHBpZCAxMjE1OSB3YXMgcnVubmluZyB3aGVuIHRoZSBNQ0Egd2FzCitkZWxpdmVyZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lhNjQvc2VyaWFsLnR4dCBiL0RvY3VtZW50YXRpb24vaWE2NC9zZXJpYWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4NjljNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lhNjQvc2VyaWFsLnR4dApAQCAtMCwwICsxLDE1MSBAQAorU0VSSUFMIERFVklDRSBOQU1JTkcKKworICAgIEFzIG9mIDIuNi4xMCwgc2VyaWFsIGRldmljZXMgb24gaWE2NCBhcmUgbmFtZWQgYmFzZWQgb24gdGhlCisgICAgb3JkZXIgb2YgQUNQSSBhbmQgUENJIGVudW1lcmF0aW9uLiAgVGhlIGZpcnN0IGRldmljZSBpbiB0aGUKKyAgICBBQ1BJIG5hbWVzcGFjZSAoaWYgYW55KSBiZWNvbWVzIC9kZXYvdHR5UzAsIHRoZSBzZWNvbmQgYmVjb21lcworICAgIC9kZXYvdHR5UzEsIGV0Yy4sIGFuZCBQQ0kgZGV2aWNlcyBhcmUgbmFtZWQgc2VxdWVudGlhbGx5CisgICAgc3RhcnRpbmcgYWZ0ZXIgdGhlIEFDUEkgZGV2aWNlcy4KKworICAgIFByaW9yIHRvIDIuNi4xMCwgdGhlcmUgd2VyZSBjb25mdXNpbmcgZXhjZXB0aW9ucyB0byB0aGlzOgorCisJLSBGaXJtd2FyZSBvbiBzb21lIG1hY2hpbmVzIChtb3N0bHkgZnJvbSBIUCkgcHJvdmlkZXMgYW4gSENEUAorCSAgdGFibGVbMV0gdGhhdCB0ZWxscyB0aGUga2VybmVsIGFib3V0IGRldmljZXMgdGhhdCBjYW4gYmUgdXNlZAorCSAgYXMgYSBzZXJpYWwgY29uc29sZS4gIElmIHRoZSB1c2VyIHNwZWNpZmllZCAiY29uc29sZT10dHlTMCIKKwkgIG9yIHRoZSBFRkkgQ29uT3V0IHBhdGggY29udGFpbmVkIG9ubHkgVUFSVCBkZXZpY2VzLCB0aGUKKwkgIGtlcm5lbCByZWdpc3RlcmVkIHRoZSBkZXZpY2UgZGVzY3JpYmVkIGJ5IHRoZSBIQ0RQIGFzCisJICAvZGV2L3R0eVMwLgorCisJLSBJZiB0aGVyZSB3YXMgbm8gSENEUCwgd2UgYXNzdW1lZCB0aGVyZSB3ZXJlIFVBUlRzIGF0IHRoZQorCSAgbGVnYWN5IENPTSBwb3J0IGFkZHJlc3NlcyAoSS9PIHBvcnRzIDB4M2Y4IGFuZCAweDJmOCksIHNvCisJICB0aGUga2VybmVsIHJlZ2lzdGVyZWQgdGhvc2UgYXMgL2Rldi90dHlTMCBhbmQgL2Rldi90dHlTMS4KKworICAgIEFueSBhZGRpdGlvbmFsIEFDUEkgb3IgUENJIGRldmljZXMgd2VyZSByZWdpc3RlcmVkIHNlcXVlbnRpYWxseQorICAgIGFmdGVyIC9kZXYvdHR5UzAgYXMgdGhleSB3ZXJlIGRpc2NvdmVyZWQuCisKKyAgICBXaXRoIGFuIEhDRFAsIGRldmljZSBuYW1lcyBjaGFuZ2VkIGRlcGVuZGluZyBvbiBFRkkgY29uZmlndXJhdGlvbgorICAgIGFuZCAiY29uc29sZT0iIGFyZ3VtZW50cy4gIFdpdGhvdXQgYW4gSENEUCwgZGV2aWNlIG5hbWVzIGRpZG4ndAorICAgIGNoYW5nZSwgYnV0IHdlIHJlZ2lzdGVyZWQgZGV2aWNlcyB0aGF0IG1pZ2h0IG5vdCByZWFsbHkgZXhpc3QuCisKKyAgICBGb3IgZXhhbXBsZSwgYW4gSFAgcngxNjAwIHdpdGggYSBzaW5nbGUgYnVpbHQtaW4gc2VyaWFsIHBvcnQKKyAgICAoZGVzY3JpYmVkIGluIHRoZSBBQ1BJIG5hbWVzcGFjZSkgcGx1cyBhbiBNUFsyXSAoYSBQQ0kgZGV2aWNlKSBoYXMKKyAgICB0aGVzZSBwb3J0czoKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZS0yLjYuMTAgICAgICBwcmUtMi42LjEwCisgICAgICAgICAgICAgICAgICAgIE1NSU8gICAgICAgICAoRUZJIGNvbnNvbGUgICAgKEVGSSBjb25zb2xlCisgICAgICAgICAgICAgICAgICAgYWRkcmVzcyAgICAgICAgb24gYnVpbHRpbikgICAgIG9uIE1QIHBvcnQpICAgIDIuNi4xMAorICAgICAgICAgICAgICAgICAgPT09PT09PT09PSAgICAgID09PT09PT09PT0gICAgICA9PT09PT09PT09ICAgICA9PT09PT0KKyAgICAgIGJ1aWx0aW4gICAgIDB4ZmY1ZTAwMDAgICAgICAgIHR0eVMwICAgICAgICAgICB0dHlTMSAgICAgICAgIHR0eVMwCisgICAgICBNUCBVUFMgICAgICAweGY4MDMxMDAwICAgICAgICB0dHlTMSAgICAgICAgICAgdHR5UzIgICAgICAgICB0dHlTMQorICAgICAgTVAgQ29uc29sZSAgMHhmODAzMDAwMCAgICAgICAgdHR5UzIgICAgICAgICAgIHR0eVMwICAgICAgICAgdHR5UzIKKyAgICAgIE1QIDIgICAgICAgIDB4ZjgwMzAwMTAgICAgICAgIHR0eVMzICAgICAgICAgICB0dHlTMyAgICAgICAgIHR0eVMzCisgICAgICBNUCAzICAgICAgICAweGY4MDMwMDM4ICAgICAgICB0dHlTNCAgICAgICAgICAgdHR5UzQgICAgICAgICB0dHlTNAorCitDT05TT0xFIFNFTEVDVElPTgorCisgICAgRUZJIGtub3dzIHdoYXQgeW91ciBjb25zb2xlIGRldmljZXMgYXJlLCBidXQgaXQgZG9lc24ndCB0ZWxsIHRoZQorICAgIGtlcm5lbCBxdWl0ZSBlbm91Z2ggdG8gYWN0dWFsbHkgbG9jYXRlIHRoZW0uICBUaGUgRElHNjQgSENEUAorICAgIHRhYmxlWzFdIGRvZXMgdGVsbCB0aGUga2VybmVsIHdoZXJlIHBvdGVudGlhbCBzZXJpYWwgY29uc29sZQorICAgIGRldmljZXMgYXJlLCBidXQgbm90IGFsbCBmaXJtd2FyZSBzdXBwbGllcyBpdC4gIEFsc28sIEVGSSBzdXBwb3J0cworICAgIG11bHRpcGxlIHNpbXVsdGFuZW91cyBjb25zb2xlcyBhbmQgZG9lc24ndCB0ZWxsIHRoZSBrZXJuZWwgd2hpY2gKKyAgICBzaG91bGQgYmUgdGhlICJwcmltYXJ5IiBvbmUuCisKKyAgICBTbyBob3cgZG8geW91IHRlbGwgTGludXggd2hpY2ggY29uc29sZSBkZXZpY2UgdG8gdXNlPworCisJLSBJZiB5b3VyIGZpcm13YXJlIHN1cHBsaWVzIHRoZSBIQ0RQLCBpdCBpcyBzaW1wbGVzdCB0bworCSAgY29uZmlndXJlIEVGSSB3aXRoIGEgc2luZ2xlIGRldmljZSAoZWl0aGVyIGEgVUFSVCBvciBhIFZHQQorCSAgY2FyZCkgYXMgdGhlIGNvbnNvbGUuICBUaGVuIHlvdSBkb24ndCBuZWVkIHRvIHRlbGwgTGludXgKKwkgIGFueXRoaW5nOyB0aGUga2VybmVsIHdpbGwgYXV0b21hdGljYWxseSB1c2UgdGhlIEVGSSBjb25zb2xlLgorCisJICAoVGhpcyB3b3JrcyBvbmx5IGluIDIuNi42IG9yIGxhdGVyOyBwcmlvciB0byB0aGF0IHlvdSBoYWQKKwkgIHRvIHNwZWNpZnkgImNvbnNvbGU9dHR5UzAiIHRvIGdldCBhIHNlcmlhbCBjb25zb2xlLikKKworCS0gV2l0aG91dCBhbiBIQ0RQLCBMaW51eCBkZWZhdWx0cyB0byBhIFZHQSBjb25zb2xlIHVubGVzcyB5b3UKKwkgIHNwZWNpZnkgYSAiY29uc29sZT0iIGFyZ3VtZW50LgorCisgICAgTk9URTogRG9uJ3QgYXNzdW1lIHRoYXQgYSBzZXJpYWwgY29uc29sZSBkZXZpY2Ugd2lsbCBiZSAvZGV2L3R0eVMwLgorICAgIEl0IG1pZ2h0IGJlIHR0eVMxLCB0dHlTMiwgZXRjLiAgTWFrZSBzdXJlIHlvdSBoYXZlIHRoZSBhcHByb3ByaWF0ZQorICAgIGVudHJpZXMgaW4gL2V0Yy9pbml0dGFiIChmb3IgZ2V0dHkpIGFuZCAvZXRjL3NlY3VyZXR0eSAodG8gYWxsb3cKKyAgICByb290IGxvZ2luKS4KKworRUFSTFkgU0VSSUFMIENPTlNPTEUKKworICAgIFRoZSBrZXJuZWwgY2FuJ3Qgc3RhcnQgdXNpbmcgYSBzZXJpYWwgY29uc29sZSB1bnRpbCBpdCBrbm93cyB3aGVyZQorICAgIHRoZSBkZXZpY2UgbGl2ZXMuICBOb3JtYWxseSB0aGlzIGhhcHBlbnMgd2hlbiB0aGUgZHJpdmVyIGVudW1lcmF0ZXMKKyAgICBhbGwgdGhlIHNlcmlhbCBkZXZpY2VzLCB3aGljaCBjYW4gaGFwcGVuIGEgbWludXRlIG9yIG1vcmUgYWZ0ZXIgdGhlCisgICAga2VybmVsIHN0YXJ0cyBib290aW5nLgorCisgICAgMi42LjEwIGFuZCBsYXRlciBrZXJuZWxzIGhhdmUgYW4gImVhcmx5IHVhcnQiIGRyaXZlciB0aGF0IHdvcmtzCisgICAgdmVyeSBlYXJseSBpbiB0aGUgYm9vdCBwcm9jZXNzLiAgVGhlIGtlcm5lbCB3aWxsIGF1dG9tYXRpY2FsbHkgdXNlCisgICAgdGhpcyBpZiB0aGUgdXNlciBzdXBwbGllcyBhbiBhcmd1bWVudCBsaWtlICJjb25zb2xlPXVhcnQsaW8sMHgzZjgiLAorICAgIG9yIGlmIHRoZSBFRkkgY29uc29sZSBwYXRoIGNvbnRhaW5zIG9ubHkgYSBVQVJUIGRldmljZSBhbmQgdGhlCisgICAgZmlybXdhcmUgc3VwcGxpZXMgYW4gSENEUC4KKworVFJPVUJMRVNIT09USU5HIFNFUklBTCBDT05TT0xFIFBST0JMRU1TCisKKyAgICBObyBrZXJuZWwgb3V0cHV0IGFmdGVyIGVsaWxvIHByaW50cyAiVW5jb21wcmVzc2luZyBMaW51eC4uLiBkb25lIjoKKworCS0gWW91IHNwZWNpZmllZCAiY29uc29sZT10dHlTMCIgYnV0IExpbnV4IGNoYW5nZWQgdGhlIGRldmljZQorCSAgdG8gd2hpY2ggdHR5UzAgcmVmZXJzLiAgQ29uZmlndXJlIGV4YWN0bHkgb25lIEVGSSBjb25zb2xlCisJICBkZXZpY2VbM10gYW5kIHJlbW92ZSB0aGUgImNvbnNvbGU9IiBvcHRpb24uCisKKwktIFRoZSBFRkkgY29uc29sZSBwYXRoIGNvbnRhaW5zIGJvdGggYSBWR0EgZGV2aWNlIGFuZCBhIFVBUlQuCisJICBFRkkgYW5kIGVsaWxvIHVzZSBib3RoLCBidXQgTGludXggZGVmYXVsdHMgdG8gVkdBLiAgUmVtb3ZlCisJICB0aGUgVkdBIGRldmljZSBmcm9tIHRoZSBFRkkgY29uc29sZSBwYXRoWzNdLgorCisJLSBNdWx0aXBsZSBVQVJUcyBzZWxlY3RlZCBhcyBFRkkgY29uc29sZSBkZXZpY2VzLiAgRUZJIGFuZAorCSAgZWxpbG8gdXNlIGFsbCBzZWxlY3RlZCBkZXZpY2VzLCBidXQgTGludXggdXNlcyBvbmx5IG9uZS4KKwkgIE1ha2Ugc3VyZSBvbmx5IG9uZSBVQVJUIGlzIHNlbGVjdGVkIGluIHRoZSBFRkkgY29uc29sZQorCSAgcGF0aFszXS4KKworCS0gWW91J3JlIGNvbm5lY3RlZCB0byBhbiBIUCBNUCBwb3J0WzJdIGJ1dCBoYXZlIGEgbm9uLU1QIFVBUlQKKwkgIHNlbGVjdGVkIGFzIEVGSSBjb25zb2xlIGRldmljZS4gIEVGSSB1c2VzIHRoZSBNUCBhcyBhCisJICBjb25zb2xlIGRldmljZSBldmVuIHdoZW4gaXQgaXNuJ3QgZXhwbGljaXRseSBzZWxlY3RlZC4KKwkgIEVpdGhlciBtb3ZlIHRoZSBjb25zb2xlIGNhYmxlIHRvIHRoZSBub24tTVAgVUFSVCwgb3IgY2hhbmdlCisJICB0aGUgRUZJIGNvbnNvbGUgcGF0aFszXSB0byB0aGUgTVAgVUFSVC4KKworICAgIExvbmcgcGF1c2UgKDYwKyBzZWNvbmRzKSBiZXR3ZWVuICJVbmNvbXByZXNzaW5nIExpbnV4Li4uIGRvbmUiIGFuZAorICAgIHN0YXJ0IG9mIGtlcm5lbCBvdXRwdXQ6CisKKwktIE5vIGVhcmx5IGNvbnNvbGUgYmVjYXVzZSB5b3UgdXNlZCAiY29uc29sZT10dHlTPG4+Ii4gIFJlbW92ZQorCSAgdGhlICJjb25zb2xlPSIgb3B0aW9uIGlmIHlvdXIgZmlybXdhcmUgc3VwcGxpZXMgYW4gSENEUC4KKworCS0gSWYgeW91IGRvbid0IGhhdmUgYW4gSENEUCwgdGhlIGtlcm5lbCBkb2Vzbid0IGtub3cgd2hlcmUKKwkgIHlvdXIgY29uc29sZSBsaXZlcyB1bnRpbCB0aGUgZHJpdmVyIGRpc2NvdmVycyBzZXJpYWwKKwkgIGRldmljZXMuICBVc2UgImNvbnNvbGU9dWFydCwgaW8sMHgzZjgiIChvciBhcHByb3ByaWF0ZQorCSAgYWRkcmVzcyBmb3IgeW91ciBtYWNoaW5lKS4KKworICAgIEtlcm5lbCBhbmQgaW5pdCBzY3JpcHQgb3V0cHV0IHdvcmtzIGZpbmUsIGJ1dCBubyAibG9naW46IiBwcm9tcHQ6CisKKwktIEFkZCBnZXR0eSBlbnRyeSB0byAvZXRjL2luaXR0YWIgZm9yIGNvbnNvbGUgdHR5LiAgTG9vayBmb3IKKwkgIHRoZSAiQWRkaW5nIGNvbnNvbGUgb24gdHR5UzxuPiIgbWVzc2FnZSB0aGF0IHRlbGxzIHlvdSB3aGljaAorCSAgZGV2aWNlIGlzIHRoZSBjb25zb2xlLgorCisgICAgImxvZ2luOiIgcHJvbXB0LCBidXQgY2FuJ3QgbG9naW4gYXMgcm9vdDoKKworCS0gQWRkIGVudHJ5IHRvIC9ldGMvc2VjdXJldHR5IGZvciBjb25zb2xlIHR0eS4KKworICAgIE5vIEFDUEkgc2VyaWFsIGRldmljZXMgZm91bmQgaW4gMi42LjE3IG9yIGxhdGVyOgorCisJLSBUdXJuIG9uIENPTkZJR19QTlAgYW5kIENPTkZJR19QTlBBQ1BJLiAgUHJpb3IgdG8gMi42LjE3LCBBQ1BJCisJICBzZXJpYWwgZGV2aWNlcyB3ZXJlIGRpc2NvdmVyZWQgYnkgODI1MF9hY3BpLiAgSW4gMi42LjE3LAorCSAgODI1MF9hY3BpIHdhcyByZXBsYWNlZCBieSB0aGUgY29tYmluYXRpb24gb2YgODI1MF9wbnAgYW5kCisJICBDT05GSUdfUE5QQUNQSS4KKworCisKK1sxXSBodHRwOi8vd3d3LmRpZzY0Lm9yZy9zcGVjaWZpY2F0aW9ucy9hZ3JlZW1lbnQgCisgICAgVGhlIHRhYmxlIHdhcyBvcmlnaW5hbGx5IGRlZmluZWQgYXMgdGhlICJIQ0RQIiBmb3IgIkhlYWRsZXNzCisgICAgQ29uc29sZS9EZWJ1ZyBQb3J0LiIgIFRoZSBjdXJyZW50IHZlcnNpb24gaXMgdGhlICJQQ0RQIiBmb3IKKyAgICAiUHJpbWFyeSBDb25zb2xlIGFuZCBEZWJ1ZyBQb3J0IERldmljZXMuIgorCitbMl0gVGhlIEhQIE1QIChtYW5hZ2VtZW50IHByb2Nlc3NvcikgaXMgYSBQQ0kgZGV2aWNlIHRoYXQgcHJvdmlkZXMKKyAgICBzZXZlcmFsIFVBUlRzLiAgT25lIG9mIHRoZSBVQVJUcyBpcyBvZnRlbiB1c2VkIGFzIGEgY29uc29sZTsgdGhlCisgICAgRUZJIEJvb3QgTWFuYWdlciBpZGVudGlmaWVzIGl0IGFzICJBY3BpKEhXUDAwMDIsNzAwKS9QY2koLi4uKS9VYXJ0Ii4KKyAgICBUaGUgZXh0ZXJuYWwgY29ubmVjdGlvbiBpcyB1c3VhbGx5IGEgMjUtcGluIGNvbm5lY3RvciwgYW5kIGEKKyAgICBzcGVjaWFsIGRvbmdsZSBjb252ZXJ0cyB0aGF0IHRvIHRocmVlIDktcGluIGNvbm5lY3RvcnMsIG9uZSBvZgorICAgIHdoaWNoIGlzIGxhYmVsbGVkICJDb25zb2xlLiIKKworWzNdIEVGSSBjb25zb2xlIGRldmljZXMgYXJlIGNvbmZpZ3VyZWQgdXNpbmcgdGhlIEVGSSBCb290IE1hbmFnZXIKKyAgICAiQm9vdCBvcHRpb24gbWFpbnRlbmFuY2UiIG1lbnUuICBZb3UgbWF5IGhhdmUgdG8gaW50ZXJydXB0IHRoZQorICAgIGJvb3Qgc2VxdWVuY2UgdG8gdXNlIHRoaXMgbWVudSwgYW5kIHlvdSB3aWxsIGhhdmUgdG8gcmVzZXQgdGhlCisgICAgYm94IGFmdGVyIGNoYW5naW5nIGNvbnNvbGUgY29uZmlndXJhdGlvbi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaWE2NC94ZW4udHh0IGIvRG9jdW1lbnRhdGlvbi9pYTY0L3hlbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYxYTk5ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaWE2NC94ZW4udHh0CkBAIC0wLDAgKzEsMTgzIEBACisgICAgICAgUmVjaXBlIGZvciBnZXR0aW5nL2J1aWxkaW5nL3J1bm5pbmcgWGVuL2lhNjQgd2l0aCBwdl9vcHMKKyAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIHJlY2lwZSBkZXNjcmliZXMgaG93IHRvIGdldCB4ZW4taWE2NCBzb3VyY2UgYW5kIGJ1aWxkIGl0LAorYW5kIHJ1biBkb21VIHdpdGggcHZfb3BzLgorCis9PT09PT09PT09PT0KK1JlcXVpcmVtZW50cworPT09PT09PT09PT09CisKKyAgLSBweXRob24KKyAgLSBtZXJjdXJpYWwKKyAgICBpdCAoYWthICJoZyIpIGlzIGFuIG9wZW4tc291cmNlIHNvdXJjZSBjb2RlCisgICAgbWFuYWdlbWVudCBzb2Z0d2FyZS4gU2VlIHRoZSBiZWxvdy4KKyAgICBodHRwOi8vd3d3LnNlbGVuaWMuY29tL21lcmN1cmlhbC93aWtpLworICAtIGdpdAorICAtIGJyaWRnZS11dGlscworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0dldHRpbmcgYW5kIEJ1aWxkaW5nIFhlbiBhbmQgRG9tMAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgTXkgZW52aXJvbm1lbnQgaXM7CisgICAgTWFjaGluZSAgOiBUaWdlcjQKKyAgICBEb21haW4wIE9TICA6IFJIRUw1CisgICAgRG9tYWluVSBPUyAgOiBSSEVMNQorCisgMS4gRG93bmxvYWQgc291cmNlCisgICAgIyBoZyBjbG9uZSBodHRwOi8veGVuYml0cy54ZW5zb3VyY2UuY29tL2V4dC9pYTY0L3hlbi11bnN0YWJsZS5oZworICAgICMgY2QgeGVuLXVuc3RhYmxlLmhnCisgICAgIyBoZyBjbG9uZSBodHRwOi8veGVuYml0cy54ZW5zb3VyY2UuY29tL2V4dC9pYTY0L2xpbnV4LTIuNi4xOC14ZW4uaGcKKworIDIuICMgbWFrZSB3b3JsZAorCisgMy4gIyBtYWtlIGluc3RhbGwtdG9vbHMKKworIDQuIGNvcHkga2VybmVscyBhbmQgeGVuCisgICAgIyBjcCB4ZW4veGVuLmd6IC9ib290L2VmaS9lZmkvcmVkaGF0LworICAgICMgY3AgYnVpbGQtbGludXgtMi42LjE4LXhlbl9pYTY0L3ZtbGludXguZ3ogXAorICAgICAgL2Jvb3QvZWZpL2VmaS9yZWRoYXQvdm1saW51ei0yLjYuMTguOC14ZW4KKworIDUuIG1ha2UgaW5pdHJkIGZvciBEb20wL0RvbVUKKyAgICAjIG1ha2UgLUMgbGludXgtMi42LjE4LXhlbi5oZyBBUkNIPWlhNjQgbW9kdWxlc19pbnN0YWxsIFwKKyAgICAgIE89JCgvYmluL3B3ZCkvYnVpbGQtbGludXgtMi42LjE4LXhlbl9pYTY0CisgICAgIyBta2luaXRyZCAtZiAvYm9vdC9lZmkvZWZpL3JlZGhhdC9pbml0cmQtMi42LjE4LjgteGVuLmltZyBcCisgICAgICAyLjYuMTguOC14ZW4gLS1idWlsdGluIG1wdHNwaSAtLWJ1aWx0aW4gbXB0YmFzZSBcCisgICAgICAtLWJ1aWx0aW4gbXB0c2NzaWggLS1idWlsdGluIHVoY2ktaGNkIC0tYnVpbHRpbiBvaGNpLWhjZCBcCisgICAgICAtLWJ1aWx0aW4gZWhjaS1oY2QKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK01ha2luZyBhIGRpc2sgaW1hZ2UgZm9yIGd1ZXN0IE9TCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgMS4gbWFrZSBmaWxlCisgICAgIyBkZCBpZj0vZGV2L3plcm8gb2Y9L3Jvb3QvcmhlbDUuaW1nIGJzPTFNIHNlZWs9NDA5NiBjb3VudD0wCisgICAgIyBta2UyZnMgLUYgLWogL3Jvb3QvcmhlbDUuaW1nCisgICAgIyBtb3VudCAtbyBsb29wIC9yb290L3JoZWw1LmltZyAvbW50CisgICAgIyBjcCAtYXggL3tkZXYsdmFyLGV0Yyx1c3IsYmluLHNiaW4sbGlifSAvbW50CisgICAgIyBta2RpciAvbW50L3tyb290LHByb2Msc3lzLGhvbWUsdG1wfQorCisgICAgTm90ZTogWW91IG1heSBtaXNzIHNvbWUgZGV2aWNlIGZpbGVzLiBJZiBzbywgcGxlYXNlIGNyZWF0ZSB0aGVtCisgICAgd2l0aCBta25vZC4gT3IgeW91IGNhbiB1c2UgdGFyIGluc3RlYWQgb2YgY3AuCisKKyAyLiBtb2RpZnkgRG9tVSdzIGZzdGFiCisgICAgIyB2aSAvbW50L2V0Yy9mc3RhYgorICAgICAgIC9kZXYveHZkYTEgIC8gICAgICAgICAgICBleHQzICAgIGRlZmF1bHRzICAgICAgICAxIDEKKyAgICAgICBub25lICAgICAgICAvZGV2L3B0cyAgICAgZGV2cHRzICBnaWQ9NSxtb2RlPTYyMCAgMCAwCisgICAgICAgbm9uZSAgICAgICAgL2Rldi9zaG0gICAgIHRtcGZzICAgZGVmYXVsdHMgICAgICAgIDAgMAorICAgICAgIG5vbmUgICAgICAgIC9wcm9jICAgICAgICBwcm9jICAgIGRlZmF1bHRzICAgICAgICAwIDAKKyAgICAgICBub25lICAgICAgICAvc3lzICAgICAgICAgc3lzZnMgICBkZWZhdWx0cyAgICAgICAgMCAwCisKKyAzLiBtb2RpZnkgaW5pdHRhYgorICAgIHNldCBydW5sZXZlbCB0byAzIHRvIGF2b2lkIFggdHJ5aW5nIHRvIHN0YXJ0CisgICAgIyB2aSAvbW50L2V0Yy9pbml0dGFiCisgICAgICAgaWQ6Mzppbml0ZGVmYXVsdDoKKyAgICBTdGFydCBhIGdldHR5IG9uIHRoZSBodmMwIGNvbnNvbGUKKyAgICAgICBYMDoyMzQ1OnJlc3Bhd246L3NiaW4vbWluZ2V0dHkgaHZjMAorICAgIHR0eTEtNiBtaW5nZXR0eSBjYW4gYmUgY29tbWVudGVkIG91dAorCisgNC4gYWRkIGh2YzAgaW50byAvZXRjL3NlY3VyZXR0eQorICAgICMgdmkgL21udC9ldGMvc2VjdXJldHR5IChhZGQgaHZjMCkKKworIDUuIHVtb3VudAorICAgICMgdW1vdW50IC9tbnQKKworRllJLCB2aXJ0LW1hbmFnZXIgY2FuIGFsc28gbWFrZSBhIGRpc2sgaW1hZ2UgZm9yIGd1ZXN0IE9TLgorSXQncyBHVUkgdG9vbHMgYW5kIGVhc3kgdG8gbWFrZSBpdC4KKworPT09PT09PT09PT09PT09PT09CitCb290IFhlbiAmIERvbWFpbjAKKz09PT09PT09PT09PT09PT09PQorCisgMS4gcmVwbGFjZSBlbGlsbworICAgIGVsaWxvIG9mIFJIRUw1IGNhbiBib290IFhlbiBhbmQgRG9tMC4KKyAgICBJZiB5b3UgdXNlIG9sZCBlbGlsbyAoZS5nIFJIRUw0KSwgcGxlYXNlIGRvd25sb2FkIGZyb20gdGhlIGJlbG93CisgICAgaHR0cDovL2VsaWxvLnNvdXJjZWZvcmdlLm5ldC9jZ2ktYmluL2Jsb3N4b20KKyAgICBhbmQgY29weSBpbnRvIC9ib290L2VmaS9lZmkvcmVkaGF0LworICAgICMgY3AgZWxpbG8tMy42LWlhNjQuZWZpIC9ib290L2VmaS9lZmkvcmVkaGF0L2VsaWxvLmVmaQorCisgMi4gbW9kaWZ5IGVsaWxvLmNvbmYgKGxpa2UgdGhlIGJlbG93KQorICAgICMgdmkgL2Jvb3QvZWZpL2VmaS9yZWRoYXQvZWxpbG8uY29uZgorICAgICBwcm9tcHQKKyAgICAgdGltZW91dD0yMAorICAgICBkZWZhdWx0PXhlbgorICAgICByZWxvY2F0YWJsZQorCisgICAgIGltYWdlPXZtbGludXotMi42LjE4LjgteGVuCisgICAgICAgICAgICAgbGFiZWw9eGVuCisgICAgICAgICAgICAgdm1tPXhlbi5negorICAgICAgICAgICAgIGluaXRyZD1pbml0cmQtMi42LjE4LjgteGVuLmltZworICAgICAgICAgICAgIHJlYWQtb25seQorICAgICAgICAgICAgIGFwcGVuZD0iIC0tIHJoZ2Igcm9vdD0vZGV2L3NkYTIiCisKK1RoZSBhcHBlbmQgb3B0aW9ucyBiZWZvcmUgIi0tIiBhcmUgZm9yIHhlbiBoeXBlcnZpc29yLAordGhlIG9wdGlvbnMgYWZ0ZXIgIi0tIiBhcmUgZm9yIGRvbTAuCisKK0ZZSSwgeW91ciBtYWNoaW5lIG1heSBuZWVkIGNvbnNvbGUgb3B0aW9ucyBsaWtlCisiY29tMT0xOTIwMCw4bjEgY29uc29sZT12Z2EsY29tMSIuIEZvciBleGFtcGxlLAorYXBwZW5kPSJjb20xPTE5MjAwLDhuMSBjb25zb2xlPXZnYSxjb20xIC0tIHJoZ2IgY29uc29sZT10dHkwIFwKK2NvbnNvbGU9dHR5UzAgcm9vdD0vZGV2L3NkYTIiCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0dldHRpbmcgYW5kIEJ1aWxkaW5nIGRvbVUgd2l0aCBwdl9vcHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIDEuIGdldCBwdl9vcHMgdHJlZQorICAgICMgZ2l0IGNsb25lIGh0dHA6Ly9wZW9wbGUudmFsaW51eC5jby5qcC9+eWFtYWhhdGEveGVuLWlhNjQvbGludXgtMi42LXhlbi1pYTY0LmdpdC8KKworIDIuIGdpdCBicmFuY2ggKGlmIG5lY2Vzc2FyeSkKKyAgICAjIGNkIGxpbnV4LTIuNi14ZW4taWE2NC8KKyAgICAjIGdpdCBjaGVja291dCAtYiB5b3VyX2JyYW5jaCBvcmlnaW4veGVuLWlhNjQtZG9tdS1taW5pbWFsLTIwMDhtYXkxOQorICAgIChOb3RlOiBUaGUgY3VycmVudCBicmFuY2ggaXMgeGVuLWlhNjQtZG9tdS1taW5pbWFsLTIwMDhtYXkxOS4KKyAgICBCdXQgeW91IHdvdWxkIGZpbmQgdGhlIG5ldyBicmFuY2guIFlvdSBjYW4gc2VlIHdpdGgKKyAgICAiZ2l0IGJyYW5jaCAtciIgdG8gZ2V0IHRoZSBicmFuY2ggbGlzdHMuCisgICAgaHR0cDovL3Blb3BsZS52YWxpbnV4LmNvLmpwL355YW1haGF0YS94ZW4taWE2NC9mb3JfZWFnbC9saW51eC0yLjYtaWE2NC1wdi1vcHMuZ2l0LworICAgIGlzIGFsc28gYXZhaWxhYmxlLiBUaGUgdHJlZSBpcyBiYXNlZCBvbgorICAgIGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9hZWdsL2xpbnV4LTIuNiB0ZXN0KQorCisKKyAzLiBjb3B5IC5jb25maWcgZm9yIHB2X29wcyBvZiBkb21VCisgICAgIyBjcCBhcmNoL2lhNjQvY29uZmlncy94ZW5fZG9tdV93aXBfZGVmY29uZmlnIC5jb25maWcKKworIDQuIG1ha2Uga2VybmVsIHdpdGggcHZfb3BzCisgICAgIyBtYWtlIG9sZGNvbmZpZworICAgICMgbWFrZQorCisgNS4gaW5zdGFsbCB0aGUga2VybmVsIGFuZCBpbml0cmQKKyAgICAjIGNwIHZtbGludXguZ3ogL2Jvb3QvZWZpL2VmaS9yZWRoYXQvdm1saW51ei0yLjYtcHZfb3BzLXhlblUKKyAgICAjIG1ha2UgbW9kdWxlc19pbnN0YWxsCisgICAgIyBta2luaXRyZCAtZiAvYm9vdC9lZmkvZWZpL3JlZGhhdC9pbml0cmQtMi42LXB2X29wcy14ZW5VLmltZyBcCisgICAgICAyLjYuMjYtcmMzeGVuLWlhNjQtMDg5NDEtZzFiMTIxNjEgLS1idWlsdGluIG1wdHNwaSBcCisgICAgICAtLWJ1aWx0aW4gbXB0YmFzZSAtLWJ1aWx0aW4gbXB0c2NzaWggLS1idWlsdGluIHVoY2ktaGNkIFwKKyAgICAgIC0tYnVpbHRpbiBvaGNpLWhjZCAtLWJ1aWx0aW4gZWhjaS1oY2QKKworPT09PT09PT09PT09PT09PT09PT09PT09CitCb290IERvbWFpblUgd2l0aCBwdl9vcHMKKz09PT09PT09PT09PT09PT09PT09PT09PQorCisgMS4gbWFrZSBjb25maWcgb2YgRG9tVQorICAgIyB2aSAvZXRjL3hlbi9yaGVsNQorICAgICBrZXJuZWwgPSAiL2Jvb3QvZWZpL2VmaS9yZWRoYXQvdm1saW51ei0yLjYtcHZfb3BzLXhlblUiCisgICAgIHJhbWRpc2sgPSAiL2Jvb3QvZWZpL2VmaS9yZWRoYXQvaW5pdHJkLTIuNi1wdl9vcHMteGVuVS5pbWciCisgICAgIHZjcHVzID0gMQorICAgICBtZW1vcnkgPSA1MTIKKyAgICAgbmFtZSA9ICJyaGVsNSIKKyAgICAgZGlzayA9IFsgJ2ZpbGU6L3Jvb3QvcmhlbDUuaW1nLHh2ZGExLHcnIF0KKyAgICAgcm9vdCA9ICIvZGV2L3h2ZGExIHJvIgorICAgICBleHRyYT0gInJoZ2IgY29uc29sZT1odmMwIgorCisgMi4gQWZ0ZXIgYm9vdCB4ZW4gYW5kIGRvbTAsIHN0YXJ0IHhlbmQKKyAgICMgL2V0Yy9pbml0LmQveGVuZCBzdGFydAorICAgKCBJbiB0aGUgZGVidWdnaW5nIGNhc2UsICMgWEVORF9ERUJVRz0xIHhlbmQgdHJhY2Vfc3RhcnQgKQorCisgMy4gc3RhcnQgZG9tVQorICAgIyB4bSBjcmVhdGUgLWMgcmhlbDUKKworPT09PT09PT09CitSZWZlcmVuY2UKKz09PT09PT09PQorLSBXaWtpIG9mIFhlbi9JQTY0IHVwc3RyZWFtIG1lcmdlCisgIGh0dHA6Ly93aWtpLnhlbnNvdXJjZS5jb20veGVud2lraS9YZW5JQTY0L1Vwc3RyZWFtTWVyZ2UKKworV3JpdHRlbiBieSBBa2lvIFRha2ViZSA8dGFrZWJlX2FraW9AanAuZnVqaXRzdS5jb20+IG9uIDI4IE1heSAyMDA4CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lkZS8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vaWRlLzAwLUlOREVYCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyZjk4Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lkZS8wMC1JTkRFWApAQCAtMCwwICsxLDE0IEBACiswMC1JTkRFWAorICAgIAktIHRoaXMgZmlsZQorQ2hhbmdlTG9nLmlkZS1jZC4xOTk0LTIwMDQKKwktIGlkZS1jZCBjaGFuZ2Vsb2cKK0NoYW5nZUxvZy5pZGUtZmxvcHB5LjE5OTYtMjAwMgorCS0gaWRlLWZsb3BweSBjaGFuZ2Vsb2cKK0NoYW5nZUxvZy5pZGUtdGFwZS4xOTk1LTIwMDIKKwktIGlkZS10YXBlIGNoYW5nZWxvZworaWRlLXRhcGUudHh0CisJLSBpbmZvIG9uIHRoZSBJREUgQVRBUEkgc3RyZWFtaW5nIHRhcGUgZHJpdmVyCitpZGUudHh0CisJLSBpbXBvcnRhbnQgaW5mbyBmb3IgdXNlcnMgb2YgQVRBIGRldmljZXMgKElERS9FSURFIGRpc2tzIGFuZCBDRC1ST01TKS4KK3dhcm0tcGx1Zy1ob3d0by50eHQKKwktIHVzaW5nIHN5c2ZzIHRvIHJlbW92ZSBhbmQgYWRkIElERSBkZXZpY2VzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaWRlL0NoYW5nZUxvZy5pZGUtY2QuMTk5NC0yMDA0IGIvRG9jdW1lbnRhdGlvbi9pZGUvQ2hhbmdlTG9nLmlkZS1jZC4xOTk0LTIwMDQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNjM2FkOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaWRlL0NoYW5nZUxvZy5pZGUtY2QuMTk5NC0yMDA0CkBAIC0wLDAgKzEsMjY4IEBACisvKgorICogMS4wMCAgT2N0IDMxLCAxOTk0IC0tIEluaXRpYWwgdmVyc2lvbi4KKyAqIDEuMDEgIE5vdiAgMiwgMTk5NCAtLSBGaXhlZCBwcm9ibGVtIHdpdGggc3RhcnRpbmcgcmVxdWVzdCBpbgorICogICAgICAgICAgICAgICAgICAgICAgIGNkcm9tX2NoZWNrX3N0YXR1cy4KKyAqIDEuMDMgIE5vdiAyNSwgMTk5NCAtLSBsZWF2aW5nIHVubWFza19pbnRyW10gYXMgYSB1c2VyLXNldHRpbmcgKGFzIGZvciBkaXNrcykKKyAqIChmcm9tIG1sb3JkKSAgICAgICAtLSBtaW5vciBjaGFuZ2VzIHRvIGNkcm9tX3NldHVwKCkKKyAqICAgICAgICAgICAgICAgICAgICAtLSByZW5hbWVkIGlkZV9kZXZfcyB0byBpZGVfZHJpdmVfdCwgZW5hYmxlIGlycSBvbiBjb21tYW5kCisgKiAyLjAwICBOb3YgMjcsIDE5OTQgLS0gR2VuZXJhbGl6ZSBwYWNrZXQgY29tbWFuZCBpbnRlcmZhY2U7CisgKiAgICAgICAgICAgICAgICAgICAgICAgYWRkIGF1ZGlvIGlvY3Rscy4KKyAqIDIuMDEgIERlYyAgMywgMTk5NCAtLSBSZXdvcmsgcGFja2V0IGNvbW1hbmQgaW50ZXJmYWNlIHRvIGhhbmRsZSBkZXZpY2VzCisgKiAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggc2VuZCBhbiBpbnRlcnJ1cHQgd2hlbiByZWFkeSBmb3IgYSBjb21tYW5kLgorICogMi4wMiAgRGVjIDExLCAxOTk0IC0tIENhY2hlIHRoZSBUT0MgaW4gdGhlIGRyaXZlci4KKyAqICAgICAgICAgICAgICAgICAgICAgICBEb24ndCB1c2UgU0NNRF9QTEFZQVVESU9fVEk7IGl0J3Mgbm90IGluY2x1ZGVkCisgKiAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBBVEFQSS4KKyAqICAgICAgICAgICAgICAgICAgICAgICBUcnkgdG8gdXNlIExCQSBpbnN0ZWFkIG9mIHRyYWNrIG9yIE1TRiBhZGRyZXNzaW5nCisgKiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBwb3NzaWJsZS4KKyAqICAgICAgICAgICAgICAgICAgICAgICBEb24ndCB3YWl0IGZvciBSRUFEWV9TVEFULgorICogMi4wMyAgSmFuIDEwLCAxOTk1IC0tIFJld3JpdGUgYmxvY2sgcmVhZCByb3V0aW5lcyB0byBoYW5kbGUgYmxvY2sgc2l6ZXMKKyAqICAgICAgICAgICAgICAgICAgICAgICBvdGhlciB0aGFuIDJrIGFuZCB0byBtb3ZlIG11bHRpcGxlIHNlY3RvcnMgaW4gYQorICogICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZSB0cmFuc2FjdGlvbi4KKyAqIDIuMDQgIEFwciAyMSwgMTk5NSAtLSBBZGQgd29yay1hcm91bmQgZm9yIENyZWF0aXZlIExhYnMgQ0QyMjBFIGRyaXZlcy4KKyAqICAgICAgICAgICAgICAgICAgICAgICBUaGFua3MgdG8gTmljayBTYXcgPGN3c2F3QHB0czcucHRzLm1vdC5jb20+IGZvcgorICogICAgICAgICAgICAgICAgICAgICAgIGhlbHAgaW4gZmlndXJpbmcgdGhpcyBvdXQuICBEaXR0byBmb3IgQWNlciBhbmQKKyAqICAgICAgICAgICAgICAgICAgICAgICBBenRlY2ggZHJpdmVzLCB3aGljaCBzZWVtIHRvIGhhdmUgdGhlIHNhbWUgcHJvYmxlbS4KKyAqIDIuMDRiIE1heSAzMCwgMTk5NSAtLSBGaXggdG8gbWF0Y2ggY2hhbmdlcyBpbiBpZGUuYyB2ZXJzaW9uIDMuMTYgLW1sCisgKiAyLjA1ICBKdW4gIDgsIDE5OTUgLS0gRG9uJ3QgYXR0ZW1wdCB0byByZXRyeSBhZnRlciBhbiBpbGxlZ2FsIHJlcXVlc3QKKyAqICAgICAgICAgICAgICAgICAgICAgICAgb3IgZGF0YSBwcm90ZWN0IGVycm9yLgorICogICAgICAgICAgICAgICAgICAgICAgIFVzZSBIV0lGIGFuZCBERVZfSFdJRiBtYWNyb3MgYXMgaW4gaWRlLmMuCisgKiAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzIHRyeSB0byBkbyBhIHJlcXVlc3Rfc2Vuc2UgYWZ0ZXIKKyAqICAgICAgICAgICAgICAgICAgICAgICAgYSBmYWlsZWQgY29tbWFuZC4KKyAqICAgICAgICAgICAgICAgICAgICAgICBJbmNsdWRlIGFuIG9wdGlvbiB0byBnaXZlIHRleHR1YWwgZGVzY3JpcHRpb25zCisgKiAgICAgICAgICAgICAgICAgICAgICAgIG9mIEFUQVBJIGVycm9ycy4KKyAqICAgICAgICAgICAgICAgICAgICAgICBGaXggYSBidWcgaW4gaGFuZGxpbmcgdGhlIHNlY3RvciBjYWNoZSB3aGljaAorICogICAgICAgICAgICAgICAgICAgICAgICBzaG93ZWQgdXAgaWYgdGhlIGRyaXZlIHJldHVybmVkIGRhdGEgaW4gNTEyIGJ5dGUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tzIChsaWtlIFBpb25lZXIgZHJpdmVzKS4gIFRoYW5rcyB0bworICogICAgICAgICAgICAgICAgICAgICAgICBSaWNoYXJkIEhpcnN0IDxzcmhAZ3B0LmNvLnVrPiBmb3IgZGlhZ25vc2luZyB0aGlzLgorICogICAgICAgICAgICAgICAgICAgICAgIFByb3Blcmx5IHN1cHBseSB0aGUgcGFnZSBudW1iZXIgZmllbGQgaW4gdGhlCisgKiAgICAgICAgICAgICAgICAgICAgICAgIE1PREVfU0VMRUNUIGNvbW1hbmQuCisgKiAgICAgICAgICAgICAgICAgICAgICAgUExBWUFVRElPMTIgaXMgYnJva2VuIG9uIHRoZSBBenRlY2g7IHdvcmsgYXJvdW5kIGl0LgorICogMi4wNXggQXVnIDExLCAxOTk1IC0tIGxvdHMgb2YgZGF0YSBzdHJ1Y3R1cmUgcmVuYW1pbmcvcmVzdHJ1Y3R1cmluZyBpbiBpZGUuYworICogICAgICAgICAgICAgICAgICAgICAgIChteSBhcG9sb2dpZXMgdG8gU2NvdHQsIGJ1dCBub3cgaWRlLWNkLmMgaXMgaW5kZXBlbmRlbnQpCisgKiAzLjAwICBBdWcgMjIsIDE5OTUgLS0gSW1wbGVtZW50IENEUk9NTVVMVElTRVNTSU9OIGlvY3RsLgorICogICAgICAgICAgICAgICAgICAgICAgIEltcGxlbWVudCBDRFJPTVJFQURBVURJTyBpb2N0bCAoVU5URVNURUQpLgorICogICAgICAgICAgICAgICAgICAgICAgIFVzZSBpbnB1dF9pZGVfZGF0YSgpIGFuZCBvdXRwdXRfaWRlX2RhdGEoKS4KKyAqICAgICAgICAgICAgICAgICAgICAgICBBZGQgZG9vciBsb2NraW5nLgorICogICAgICAgICAgICAgICAgICAgICAgIEZpeCB1c2FnZSBjb3VudCBsZWFrIGluIGNkcm9tX29wZW4sIHdoaWNoIGhhcHBlbmVkCisgKiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gYSByZWFkLXdyaXRlIG1vdW50IHdhcyBhdHRlbXB0ZWQuCisgKiAgICAgICAgICAgICAgICAgICAgICAgVHJ5IHRvIGxvYWQgdGhlIGRpc2sgb24gb3Blbi4KKyAqICAgICAgICAgICAgICAgICAgICAgICBJbXBsZW1lbnQgQ0RST01FSkVDVF9TVyBpb2N0bCAob2ZmIGJ5IGRlZmF1bHQpLgorICogICAgICAgICAgICAgICAgICAgICAgIFJlYWQgdG90YWwgY2Ryb20gY2FwYWNpdHkgZHVyaW5nIG9wZW4uCisgKiAgICAgICAgICAgICAgICAgICAgICAgUmVhcnJhbmdlIGxvZ2ljIGluIGNkcm9tX2RlY29kZV9zdGF0dXMuICBJc3N1ZQorICogICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0IHNlbnNlIGNvbW1hbmRzIGZvciBmYWlsZWQgcGFja2V0IGNvbW1hbmRzCisgKiAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gaGVyZSBpbnN0ZWFkIG9mIGZyb20gY2Ryb21fcXVldWVfcGFja2V0X2NvbW1hbmQuCisgKiAgICAgICAgICAgICAgICAgICAgICAgIEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIHJldHJpZXZpbmcgZXJyb3IgaW5mb3JtYXRpb24uCisgKiAgICAgICAgICAgICAgICAgICAgICAgU3VwcHJlc3MgcHJpbnRpbmcgbm9ybWFsIHVuaXQgYXR0ZW50aW9uIGVycm9ycyBhbmQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgc29tZSBkcml2ZSBub3QgcmVhZHkgZXJyb3JzLgorICogICAgICAgICAgICAgICAgICAgICAgIEltcGxlbWVudCBDRFJPTVZPTFJFQUQgaW9jdGwuCisgKiAgICAgICAgICAgICAgICAgICAgICAgSW1wbGVtZW50IENEUk9NUkVBRE1PREUxLzIgaW9jdGxzLgorICogICAgICAgICAgICAgICAgICAgICAgIEZpeCByYWNlIGNvbmRpdGlvbiBpbiBzZXR0aW5nIHVwIGludGVycnVwdCBoYW5kbGVycworICogICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHRoZSBgc2VyaWFsaXplJyBvcHRpb24gaXMgdXNlZC4KKyAqIDMuMDEgIFNlcCAgMiwgMTk5NSAtLSBGaXggb3JkZXJpbmcgb2YgcmVlbmFibGluZyBpbnRlcnJ1cHRzIGluCisgKiAgICAgICAgICAgICAgICAgICAgICAgIGNkcm9tX3F1ZXVlX3JlcXVlc3QuCisgKiAgICAgICAgICAgICAgICAgICAgICAgQW5vdGhlciB0cnkgYXQgdXNpbmcgaWRlX1tpbnB1dCxvdXRwdXRdX2RhdGEuCisgKiAzLjAyICBTZXAgMTYsIDE5OTUgLS0gU3RpY2sgdG90YWwgZGlzayBjYXBhY2l0eSBpbiBwYXJ0aXRpb24gdGFibGUgYXMgd2VsbC4KKyAqICAgICAgICAgICAgICAgICAgICAgICBNYWtlIFZFUkJPU0VfSURFX0NEX0VSUk9SUyBkdW1wIGZhaWxlZCBjb21tYW5kIGFnYWluLgorICogICAgICAgICAgICAgICAgICAgICAgIER1bXAgb3V0IG1vcmUgaW5mb3JtYXRpb24gZm9yIElMTEVHQUwgUkVRVUVTVCBlcnJzLgorICogICAgICAgICAgICAgICAgICAgICAgIEZpeCBoYW5kbGluZyBvZiBlcnJvcnMgb2NjdXJyaW5nIGJlZm9yZSB0aGUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0IGNvbW1hbmQgaXMgdHJhbnNmZXJyZWQuCisgKiAgICAgICAgICAgICAgICAgICAgICAgRml4IHRyYW5zZmVycyB3aXRoIG9kZCBieXRlbGVuZ3Rocy4KKyAqIDMuMDMgIE9jdCAyNywgMTk5NSAtLSBTb21lIENyZWF0aXZlIGRyaXZlcyBoYXZlIGFuIGlkIG9mIGp1c3QgYENEJy4KKyAqICAgICAgICAgICAgICAgICAgICAgICBgRENJLTJTMTAnIGRyaXZlcyBhcmUgYnJva2VuIHRvby4KKyAqIDMuMDQgIE5vdiAyMCwgMTk5NSAtLSBTbyBhcmUgVmVydG9zIGRyaXZlcy4KKyAqIDMuMDUgIERlYyAgMSwgMTk5NSAtLSBDaGFuZ2VzIHRvIGdvIHdpdGggb3ZlcmhhdWwgb2YgaWRlLmMgYW5kIGlkZS10YXBlLmMKKyAqIDMuMDYgIERlYyAxNiwgMTk5NSAtLSBBZGQgc3VwcG9ydCBuZWVkZWQgZm9yIHBhcnRpdGlvbnMuCisgKiAgICAgICAgICAgICAgICAgICAgICAgTW9yZSB3b3JrYXJvdW5kcyBmb3IgVmVydG9zIGJ1Z3MgKGJhc2VkIG9uIHBhdGNoZXMKKyAqICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBIb2xnZXIgRGlldHplIDxkaWV0emVAYWl4NTIwLmluZm9ybWF0aWsudW5pLWxlaXB6aWcuZGU+KS4KKyAqICAgICAgICAgICAgICAgICAgICAgICBUcnkgdG8gZWxpbWluYXRlIGJ5dGVvcmRlciBhc3N1bXB0aW9ucy4KKyAqICAgICAgICAgICAgICAgICAgICAgICBVc2UgYXRhcGlfY2Ryb21fc3ViY2hubCBzdHJ1Y3QgZGVmaW5pdGlvbi4KKyAqICAgICAgICAgICAgICAgICAgICAgICBBZGQgU1RBTkRBUkRfQVRBUEkgY29tcGlsYXRpb24gb3B0aW9uLgorICogMy4wNyAgSmFuIDI5LCAxOTk2IC0tIE1vcmUgdHdpZGRsaW5nIGZvciBicm9rZW4gZHJpdmVzOiBTb255IDU1RCwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgVmVydG9zIDMwMC4KKyAqICAgICAgICAgICAgICAgICAgICAgICBBZGQgTk9fRE9PUl9MT0NLSU5HIGNvbmZpZ3VyYXRpb24gb3B0aW9uLgorICogICAgICAgICAgICAgICAgICAgICAgIEhhbmRsZSBkcml2ZV9jbWQgcmVxdWVzdHMgdy9OVUxMIGFyZ3MgKGZvciBoZHBhcm0gLXQpLgorICogICAgICAgICAgICAgICAgICAgICAgIFdvcmsgYXJvdW5kIHNwb3JhZGljIFNvbnk1NWUgYXVkaW8gcGxheSBwcm9ibGVtLgorICogMy4wN2EgRmViIDExLCAxOTk2IC0tIGNoZWNrIGRyaXZlLT5pZCBmb3IgTlVMTCBiZWZvcmUgZGVyZWZlcmVuY2luZywgdG8gZml4CisgKiAgICAgICAgICAgICAgICAgICAgICAgIHByb2JsZW0gd2l0aCAiaGRlPWNkcm9tIiB3aXRoIG5vIGRyaXZlIHByZXNlbnQuICAtbWwKKyAqIDMuMDggIE1hciAgNiwgMTk5NiAtLSBNb3JlIFZlcnRvcyB3b3JrYXJvdW5kcy4KKyAqIDMuMDkgIEFwciAgNSwgMTk5NiAtLSBBZGQgQ0RST01DTE9TRVRSQVkgaW9jdGwuCisgKiAgICAgICAgICAgICAgICAgICAgICAgU3dpdGNoIHRvIHVzaW5nIE1TRiBhZGRyZXNzaW5nIGZvciBhdWRpbyBjb21tYW5kcy4KKyAqICAgICAgICAgICAgICAgICAgICAgICBSZWZvcm1hdCB0byBtYXRjaCBrZXJuZWwgdGFiYmluZyBzdHlsZS4KKyAqICAgICAgICAgICAgICAgICAgICAgICBBZGQgQ0RST01fR0VUX1VQQyBpb2N0bC4KKyAqIDMuMTAgIEFwciAxMCwgMTk5NiAtLSBGaXggY29tcGlsYXRpb24gZXJyb3Igd2l0aCBTVEFOREFSRF9BVEFQSS4KKyAqIDMuMTEgIEFwciAyOSwgMTk5NiAtLSBQYXRjaCBmcm9tIEhlaWtvIEVpw59mZWxkdCA8aGVpa29AY29sb3NzdXMuZXNjYXBlLmRlPgorICogICAgICAgICAgICAgICAgICAgICAgIHRvIHJlbW92ZSByZWR1bmRhbnQgdmVyaWZ5X2FyZWEgY2FsbHMuCisgKiAzLjEyICBNYXkgIDcsIDE5OTYgLS0gUnVkaW1lbnRhcnkgY2hhbmdlciBzdXBwb3J0LiAgQmFzZWQgb24gcGF0Y2hlcworICogICAgICAgICAgICAgICAgICAgICAgICBmcm9tIEdlcmhhcmQgWnViZXIgPHp1YmVyQGJlcmxpbi5zbmFmdS5kZT4uCisgKiAgICAgICAgICAgICAgICAgICAgICAgTGV0IG9wZW4gc3VjY2VlZCBldmVuIGlmIHRoZXJlJ3Mgbm8gbG9hZGVkIGRpc2MuCisgKiAzLjEzICBNYXkgMTksIDE5OTYgLS0gRml4ZXMgZm9yIGNoYW5nZXIgY29kZS4KKyAqIDMuMTQgIE1heSAyOSwgMTk5NiAtLSBBZGQgd29yay1hcm91bmQgZm9yIFZlcnRvcyA2MDAuCisgKiAgICAgICAgICAgICAgICAgICAgICAgIChGcm9tIEhlbm51cyBCZXJnbWFuIDxoZW5udXNAc2t5Lm93Lm5sPi4pCisgKiAzLjE1ICBKdWx5IDIsIDE5OTYgLS0gQWRkZWQgc3VwcG9ydCBmb3IgU2FueW8gMyBDRCBjaGFuZ2VycworICogICAgICAgICAgICAgICAgICAgICAgICBmcm9tIEJlbiBHYWxsaWFydCA8YmdhbGxpYUBsdWMuZWR1PiB3aXRoCisgKiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpYWwgaGVscCBmcm9tIEplZmYgTGlnaHRmb290CisgKiAgICAgICAgICAgICAgICAgICAgICAgIDxqZWZmbWxAcG9ib3guY29tPgorICogMy4xNWEgSnVseSA5LCAxOTk2IC0tIEltcHJvdmVkIFNhbnlvIDMgQ0QgY2hhbmdlciBpZGVudGlmaWNhdGlvbgorICogMy4xNiAgSnVsIDI4LCAxOTk2IC0tIEZpeCBmcm9tIEdhZGkgdG8gcmVkdWNlIGtlcm5lbCBzdGFjayB1c2FnZSBmb3IgaW9jdGwuCisgKiAzLjE3ICBTZXAgMTcsIDE5OTYgLS0gVHdlYWsgYXVkaW8gcmVhZHMgZm9yIHNvbWUgZHJpdmVzLgorICogICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0IGNoYW5naW5nIENEUk9NTE9BREZST01TTE9UIHRvIENEUk9NX1NFTEVDVF9ESVNDLgorICogMy4xOCAgT2N0IDMxLCAxOTk2IC0tIEFkZGVkIG1vZHVsZSBhbmQgRE1BIHN1cHBvcnQuCisgKgorICogNC4wMCAgTm92IDUsIDE5OTYgICAtLSBOZXcgaWRlLWNkIG1haW50YWluZXIsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVyaWsgQi4gQW5kZXJzZW4gPGFuZGVyc2VlQGRlYmlhbi5vcmc+CisgKiAgICAgICAgICAgICAgICAgICAgIC0tIE5ld2VyIENyZWF0aXZlIGRyaXZlcyBkb24ndCBhbHdheXMgc2V0IHRoZSBlcnJvcgorICogICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNvcnJlY3RseS4gIE1ha2Ugc3VyZSB3ZSBzZWUgbWVkaWEgY2hhbmdlcworICogICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2FyZGxlc3MuCisgKiAgICAgICAgICAgICAgICAgICAgIC0tIEludGVncmF0ZSB3aXRoIGdlbmVyaWMgY2Ryb20gZHJpdmVyLgorICogICAgICAgICAgICAgICAgICAgICAtLSBDRFJPTUdFVFNQSU5ET1dOIGFuZCBDRFJPTVNFVFNQSU5ET1dOIGlvY3RscywgYmFzZWQgb24KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBhIHBhdGNoIGZyb20gQ2lybyBDYXR0dXRvIDw+LgorICogICAgICAgICAgICAgICAgICAgICAtLSBDYWxsIHNldF9kZXZpY2Vfcm8uCisgKiAgICAgICAgICAgICAgICAgICAgIC0tIEltcGxlbWVudCBDRFJPTU1FQ0hBTklTTVNUQVRVUyBhbmQgQ0RST01TTE9UVEFCTEUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBpb2N0bHMsIGJhc2VkIG9uIHBhdGNoIGJ5IEVyaWsgQW5kZXJzZW4KKyAqICAgICAgICAgICAgICAgICAgICAgLS0gQWRkIHNvbWUgcHJvYmVzIG9mIGRyaXZlIGNhcGFiaWxpdHkgZHVyaW5nIHNldHVwLgorICoKKyAqIDQuMDEgIE5vdiAxMSwgMTk5NiAgLS0gU3BsaXQgaW50byBpZGUtY2QuYyBhbmQgaWRlLWNkLmgKKyAqICAgICAgICAgICAgICAgICAgICAgLS0gUmVtb3ZlZCBDRFJPTU1FQ0hBTklTTVNUQVRVUyBhbmQgQ0RST01TTE9UVEFCTEUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBpb2N0bHMgaW4gZmF2b3Igb2YgYSBnZW5lcmFsaXplZCBhcHByb2FjaAorICogICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBnZW5lcmljIGNkcm9tIGRyaXZlci4KKyAqICAgICAgICAgICAgICAgICAgICAgLS0gRnVsbHkgaW50ZWdyYXRlZCB3aXRoIHRoZSAyLjEuWCBrZXJuZWwuCisgKiAgICAgICAgICAgICAgICAgICAgIC0tIE90aGVyIHN0dWZmIHRoYXQgSSBmb3Jnb3QgKGxvdHMgb2YgY2hhbmdlcykKKyAqCisgKiA0LjAyICBEZWMgMDEsIDE5OTYgIC0tIEFwcGxpZWQgcGF0Y2ggZnJvbSBHYWRpIE94bWFuIDxnYWRpb0BuZXR2aXNpb24ubmV0LmlsPgorICogICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGZpeCB0aGUgZHJpdmUgZG9vciBsb2NraW5nIHByb2JsZW1zLgorICoKKyAqIDQuMDMgIERlYyAwNCwgMTk5NiAgLS0gQWRkZWQgRFNDIG92ZXJsYXAgc3VwcG9ydC4KKyAqIDQuMDQgIERlYyAyOSwgMTk5NiAgLS0gQWRkZWQgQ0RST01SRUFEUkFXIGlvY2x0IGJhc2VkIG9uIHBhdGNoCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgQWxlcyBNYWthcm92ICh4bWFrYXJvdkBzdW4uZmVsay5jdnV0LmN6KQorICoKKyAqIDQuMDUgIE5vdiAyMCwgMTk5NyAgLS0gTW9kaWZpZWQgdG8gcHJpbnQgbW9yZSBkcml2ZSBpbmZvIG9uIGluaXQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgTWlub3Igb3RoZXIgY2hhbmdlcworICogICAgICAgICAgICAgICAgICAgICAgICBGaXggZXJyb3JzIG9uIENEUk9NU1RPUCAoSWYgeW91IGhhdmUgYSAiRG9scGhpbiIsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgeW91IG11c3QgZGVmaW5lIElIQVZFQURPTFBISU4pCisgKiAgICAgICAgICAgICAgICAgICAgICAgIEFkZGVkIGlkZW50aWZpZXIgc28gbmV3IFNhbnlvIENELWNoYW5nZXIgd29ya3MKKyAqICAgICAgICAgICAgICAgICAgICAgICAgQmV0dGVyIGRldGVjdGlvbiBpZiBkb29yIGxvY2tpbmcgaXNuJ3Qgc3VwcG9ydGVkCisgKgorICogNC4wNiAgRGVjIDE3LCAxOTk3ICAtLSBmaXhlZCBlbmRsZXNzICJ0cmF5IG9wZW4iIG1lc3NhZ2VzICAtbWwKKyAqIDQuMDcgIERlYyAxNywgMTk5NyAgLS0gZmFsbGJhY2sgdG8gc2V0IHBjLT5zdGF0IG9uICJ0cmF5IG9wZW4iCisgKiA0LjA4ICBEZWMgMTgsIDE5OTcgIC0tIHNwZXcgbGVzcyBub2lzZSB3aGVuIHRyYXkgaXMgZW1wdHkKKyAqICAgICAgICAgICAgICAgICAgICAgLS0gZml4IHNwZWVkIGRpc3BsYXkgZm9yIEFDRVIgMjRYLCAxOFgKKyAqIDQuMDkgIEphbiAwNCwgMTk5OCAgLS0gZml4IGhhbmRsaW5nIG9mIHRoZSBsYXN0IGJsb2NrIHNvIHdlIHJldHVybgorICogICAgICAgICAgICAgICAgICAgICAgICAgYW4gZW5kIG9mIGZpbGUgaW5zdGVhZCBvZiBhbiBJL08gZXJyb3IgKEdhZGkpCisgKiA0LjEwICBKYW4gMjQsIDE5OTggIC0tIGZpeGVkIGEgYnVnIHNvIG5vdyBjaGFuZ2VycyBjYW4gY2hhbmdlIHRvIGEgbmV3CisgKiAgICAgICAgICAgICAgICAgICAgICAgICBzbG90IHdoZW4gdGhlcmUgaXMgbm8gZGlzYyBpbiB0aGUgY3VycmVudCBzbG90LgorICogICAgICAgICAgICAgICAgICAgICAtLSBGaXhlZCBhIG1lbW9yeSBsZWFrIHdoZXJlIGluZm8tPmNoYW5nZXJfaW5mbyB3YXMKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIG1hbGxvYydlZCBidXQgbmV2ZXIgZnJlZSdkIHdoZW4gY2xvc2luZyB0aGUgZGV2aWNlLgorICogICAgICAgICAgICAgICAgICAgICAtLSBDbGVhbmVkIHVwIHRoZSBnbG9iYWwgbmFtZXNwYWNlIGEgYml0IGJ5IG1ha2luZyBtb3JlCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMgc3RhdGljIHRoYXQgc2hvdWxkIGFscmVhZHkgaGF2ZSBiZWVuLgorICogNC4xMSAgTWFyIDEyLCAxOTk4ICAtLSBBZGRlZCBzdXBwb3J0IGZvciB0aGUgQ0RST01fU0VMRUNUX1NQRUVEIGlvY3RsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlZCBvbiBhIHBhdGNoIGZvciAyLjAuMzMgYnkgSmVsbGUgRm9rcworICogICAgICAgICAgICAgICAgICAgICAgICAgPGplbGxlQHNjaW50aWxsYS51dHdlbnRlLm5sPiwgYSBwYXRjaCBmb3IgMi4wLjMzCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBieSBUb25pIEdpb3JnaW5vIDx0b25pQHBjYXBlMi5waS5pbmZuLml0PiwgdGhlIFNDU0kKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24sIGFuZCBteSBvd24gZWZmb3J0cy4gIC1lcmlrCisgKiAgICAgICAgICAgICAgICAgICAgIC0tIEZpeGVkIGEgc3R1cGlkIGJ1ZyB3aGljaCBlZ2NzIHdhcyBraW5kIGVub3VnaCB0bworICogICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtIG1lIG9mIHdoZXJlICJJbGxlZ2FsIG1vZGUgZm9yIHRoaXMgdHJhY2siCisgKiAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgbmV2ZXIgcmV0dXJuZWQgZHVlIHRvIGEgY29tcGFyaXNvbiBvbiBkYXRhCisgKiAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcyBvZiBsaW1pdGVkIHJhbmdlLgorICogNC4xMiAgTWFyIDI5LCAxOTk4ICAtLSBGaXhlZCBidWcgaW4gQ0RST01fU0VMRUNUX1NQRUVEIHNvIHdyaXRlIHNwZWVkIGlzCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBub3cgc2V0IGlvbmx5IGZvciBDRC1SIGFuZCBDRC1SVyBkcml2ZXMuICBJIGhhZAorICogICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZCB0aGlzIHN1cHBvcnQgYmVjYXVzZSBpdCBwcm9kdWNlZCBlcnJvcnMuCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBJdCBwcm9kdWNlZCBlcnJvcnMgX29ubHlfIGZvciBub24td3JpdGVycy4gZHVoLgorICogNC4xMyAgTWF5IDA1LCAxOTk4ICAtLSBTdXBwcmVzcyB1c2VsZXNzICJpbiBwcm9ncmVzcyBvZiBiZWNvbWluZyByZWFkeSIKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzLCBzaW5jZSB0aGlzIGlzIG5vdCBhbiBlcnJvci4KKyAqICAgICAgICAgICAgICAgICAgICAgLS0gQ2hhbmdlIGVycm9yIG1lc3NhZ2VzIHRvIGJlIGNvbnN0CisgKiAgICAgICAgICAgICAgICAgICAgIC0tIFJlbW92ZSBhICJcdCIgd2hpY2ggbG9va3MgdWdseSBpbiB0aGUgc3lzbG9ncworICogNC4xNCAgSnVseSAxNywgMTk5OCAtLSBDaGFuZ2UgdG8gcG9pbnRpbmcgdG8gLnBzIHZlcnNpb24gb2YgQVRBUEkgc3BlYworICogICAgICAgICAgICAgICAgICAgICAgICAgc2luY2UgdGhlIC5wZGYgdmVyc2lvbiBkb2Vzbid0IHNlZW0gdG8gd29yay4uLgorICogICAgICAgICAgICAgICAgICAgICAtLSBVcGRhdGVkIHRoZSBUT0RPIGxpc3QgdG8gc29tZXRoaW5nIG1vcmUgY3VycmVudC4KKyAqCisgKiA0LjE1ICBBdWcgMjUsIDE5OTggIC0tIFVwZGF0ZWQgaWRlLWNkLmggdG8gcmVzcGVjdCBtYWNoaW5lIGVuZGlhbm5lc3MsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBwYXRjaCB0aGFua3MgdG8gIkVkZGllIEMuIERvc3QiIDxlY2RAc2t5bmV0LmJlPgorICoKKyAqIDQuNTAgIE9jdCAxOSwgMTk5OCAgLS0gTmV3IG1haW50YWluZXJzIQorICogICAgICAgICAgICAgICAgICAgICAgICAgSmVucyBBeGJvZSA8YXhib2VAaW1hZ2UuZGs+CisgKiAgICAgICAgICAgICAgICAgICAgICAgICBDaHJpcyBad2lsbGluZyA8Y2hyaXNAY2xvdWRuZXQuY29tPgorICoKKyAqIDQuNTEgIERlYyAyMywgMTk5OCAgLS0gSmVucyBBeGJvZSA8YXhib2VAaW1hZ2UuZGs+CisgKiAgICAgICAgICAgICAgICAgICAgICAtIGlkZV9jZHJvbV9yZXNldCBlbmFibGVkIHNpbmNlIHRoZSBpZGUgc3Vic3lzdGVtCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVzIHJlc2V0cyBmaW5lIG5vdy4gPGF4Ym9lQGltYWdlLmRrPgorICogICAgICAgICAgICAgICAgICAgICAgLSBUcmFuc2ZlciBzaXplIGZpeCBmb3IgU2Ftc3VuZyBDRC1ST01zLCB0aGFua3MgdG8KKyAqICAgICAgICAgICAgICAgICAgICAgICAgIlZpbGxlIEhhbGxpayIgPHZpbGxlLmhhbGxpa0BtYWlsLmVlPi4KKyAqICAgICAgICAgICAgICAgICAgICAgIC0gb3RoZXIgbWlub3Igc3R1ZmYuCisgKgorICogNC41MiAgSmFuIDE5LCAxOTk5ICAtLSBKZW5zIEF4Ym9lIDxheGJvZUBpbWFnZS5kaz4KKyAqICAgICAgICAgICAgICAgICAgICAgIC0gRGV0ZWN0IERWRC1ST00vUkFNIGRyaXZlcworICoKKyAqIDQuNTMgIEZlYiAyMiwgMTk5OSAgIC0gSW5jbHVkZSBvdGhlciBtb2RlbCBTYW1zdW5nIGFuZCBvbmUgR29sZHN0YXIKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlIGluIHRyYW5zZmVyIHNpemUgbGltaXQuCisgKiAgICAgICAgICAgICAgICAgICAgICAtIEZpeCB0aGUgSS9PIGVycm9yIHdoZW4gZG9pbmcgZWplY3Qgd2l0aG91dCBhIG1lZGl1bQorICogICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVkIG9uIHNvbWUgZHJpdmVzLgorICogICAgICAgICAgICAgICAgICAgICAgLSBDRFJPTVJFQURNT0RFMiBpcyBub3cgaW1wbGVtZW50ZWQgdGhyb3VnaAorICogICAgICAgICAgICAgICAgICAgICAgICAgQ0RST01SRUFEUkFXLCBzaW5jZSBtYW55IGRyaXZlcyBkb24ndCBzdXBwb3J0CisgKiAgICAgICAgICAgICAgICAgICAgICAgICBNT0RFMiAoZXZlbiB0aG91Z2ggQVRBUEkgMi42IHNheXMgdGhleSBtdXN0KS4KKyAqICAgICAgICAgICAgICAgICAgICAgIC0gQWRkZWQgaWdub3JlIHBhcmFtZXRlciB0byBpZGUtY2QgKGFzIGEgbW9kdWxlKSwgZWcKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIAlpbnNtb2QgaWRlLWNkIGlnbm9yZT0naGRhIGhkYicKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIFVzZWZ1bCB3aGVuIHVzaW5nIGlkZS1jZCBpbiBjb25qdW5jdGlvbiB3aXRoCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBpZGUtc2NzaS4gVE9ETzogbm9uLW1vZHVsYXIgd2F5IG9mIGRvaW5nIHRoZQorICogICAgICAgICAgICAgICAgICAgICAgICAgc2FtZS4KKyAqCisgKiA0LjU0ICBBdWcgNSwgMTk5OQktIFN1cHBvcnQgZm9yIE1NQzIgY2xhc3MgY29tbWFuZHMgdGhyb3VnaCB0aGUgZ2VuZXJpYworICoJCQkgIHBhY2tldCBpbnRlcmZhY2UgdG8gY2Ryb20uYy4KKyAqCQkJLSBVbmlmaWVkIGF1ZGlvIGlvY3RsIHN1cHBvcnQsIG1vc3Qgb2YgaXQuCisgKgkJCS0gY2xlYW5lZCB1cCB2YXJpb3VzIGRlcHJlY2F0ZWQgdmVyaWZ5X2FyZWEoKS4KKyAqCQkJLSBBZGRlZCBpZGVfY2Ryb21fcGFja2V0KCkgYXMgdGhlIGludGVyZmFjZSBmb3IKKyAqCQkJICB0aGUgVW5pZm9ybSBnZW5lcmljX3BhY2tldCgpLgorICoJCQktIGJ1bmNoIG9mIG90aGVyIHN0dWZmLCB3aWxsIGZpbGwgaW4gbG9ncyBsYXRlci4KKyAqCQkJLSByZXBvcnQgMSBzbG90IGZvciBub24tY2hhbmdlcnMsIGxpa2UgdGhlIG90aGVyCisgKgkJCSAgY2Qtcm9tIGRyaXZlcnMuIGRvbid0IHJlcG9ydCBzZWxlY3QgZGlzYyBmb3IKKyAqCQkJICBub24tY2hhbmdlcnMgYXMgd2VsbC4KKyAqCQkJLSBtYXNrIG91dCBhdWRpbyBwbGF5aW5nLCBpZiB0aGUgZGV2aWNlIGNhbid0IGRvIGl0LgorICoKKyAqIDQuNTUgIFNlcCAxLCAxOTk5CS0gRWxpbWluYXRlZCB0aGUgcmVzdCBvZiB0aGUgYXVkaW8gaW9jdGxzLCBleGNlcHQKKyAqCQkJICBmb3IgQ0RST01SRUFEVE9DW0VOVFJZfEhFQURFUl0uIFNvbWUgb2YgdGhlIGRyaXZlcnMKKyAqCQkJICB1c2UgdGhpcyBpbmRlcGVuZGVudGx5IG9mIHRoZSBhY3R1YWwgYXVkaW8gaGFuZGxpbmcuCisgKgkJCSAgVGhleSB3aWxsIGRpc2FwcGVhciBsYXRlciB3aGVuIEkgZ2V0IHRoZSB0aW1lIHRvCisgKgkJCSAgZG8gaXQgY2xlYW5seS4KKyAqCQkJLSBNaW5pbWl6ZSB0aGUgVE9DIHJlYWRpbmcgLSBvbmx5IGRvIGl0IHdoZW4gd2UKKyAqCQkJICBrbm93IGEgbWVkaWEgY2hhbmdlIGhhcyBvY2N1cnJlZC4KKyAqCQkJLSBNb3ZlZCBhbGwgdGhlIENEUk9NUkVBRHggaW9jdGxzIHRvIHRoZSBVbmlmb3JtIGxheWVyLgorICoJCQktIEhlaWtvIEVpw59mZWxkdCA8aGVpa29AY29sb3NzdXMuZXNjYXBlLmRlPiBzdXBwbGllZAorICoJCQkgIHNvbWUgZml4ZXMgZm9yIENESS4KKyAqCQkJLSBDRC1ST00gbGVhdmluZyBkb29yIGxvY2tlZCBmaXggZnJvbSBBbmRyaWVzCisgKgkJCSAgQnJvdXdlciA8QW5kcmllcy5Ccm91d2VyQGN3aS5ubD4KKyAqCQkJLSBFcmlrIEFuZGVyc2VuIDxhbmRlcnNlbkB4bWlzc2lvbi5jb20+IHVuaWZpZWQKKyAqCQkJICBjb21tYW5kcyBhY3Jvc3MgdGhlIHZhcmlvdXMgZHJpdmVycyBhbmQgaG93CisgKgkJCSAgc2Vuc2UgZXJyb3JzIGFyZSBoYW5kbGVkLgorICoKKyAqIDQuNTYgIFNlcCAxMiwgMTk5OQktIFJlbW92ZWQgY2hhbmdlciBzdXBwb3J0IC0gaXQgaXMgbm93IGluIHRoZQorICoJCQkgIFVuaWZvcm0gbGF5ZXIuCisgKgkJCS0gQWRkZWQgcGFydGl0aW9uIGJhc2VkIG11bHRpc2Vzc2lvbiBoYW5kbGluZy4KKyAqCQkJLSBNb2RlIHNlbnNlIGFuZCBtb2RlIHNlbGVjdCBtb3ZlZCB0byB0aGUKKyAqCQkJICBVbmlmb3JtIGxheWVyLgorICoJCQktIEZpeGVkIGEgcHJvYmxlbSB3aXRoIFdQSSBDRFMtMzJYIGRyaXZlIC0gaXQKKyAqCQkJICBmYWlsZWQgdGhlIGNhcGFiaWxpdGllcworICoKKyAqIDQuNTcgIEFwciA3LCAyMDAwCS0gRml4ZWQgc2Vuc2UgcmVwb3J0aW5nLgorICoJCQktIEZpeGVkIHBvc3NpYmxlIG9vcHMgaW4gaWRlX2Nkcm9tX2dldF9sYXN0X3Nlc3Npb24oKQorICoJCQktIEZpeCBsb2NraW5nIG1hbmlhIGFuZCBtYWtlIGlkZV9jZHJvbV9yZXNldCByZWxvY2sKKyAqCQkJLSBTdG9wIHNwZXdpbmcgZXJyb3JzIHRvIGxvZyB3aGVuIG1hZ2ljZGV2IHBvbGxzIHdpdGgKKyAqCQkJICBURVNUX1VOSVRfUkVBRFkgb24gc29tZSBkcml2ZXMuCisgKgkJCS0gVmFyaW91cyBmaXhlcyBmcm9tIFRvYmlhcyBSaW5nc3Ryb206CisgKgkJCSAgdHJheSBpZiBpdCB3YXMgbG9ja2VkIHByaW9yIHRvIHRoZSByZXNldC4KKyAqCQkJICAtIGNkcm9tX3JlYWRfY2FwYWNpdHkgcmV0dXJucyBvbmUgZnJhbWUgdG9vIGxpdHRsZS4KKyAqCQkJICAtIEZpeCByZWFsIGNhcGFjaXR5IHJlcG9ydGluZy4KKyAqCisgKiA0LjU4ICBNYXkgMSwgMjAwMAktIENsZWFuIHVwIEFDRVI1MCBzdHVmZi4KKyAqCQkJLSBGaXggc21hbGwgcHJvYmxlbSB3aXRoIGlkZV9jZHJvbV9jYXBhY2l0eQorICoKKyAqIDQuNTkgIEF1ZyAxMSwgMjAwMAktIEZpeCBjaGFuZ2VyIHByb2JsZW0gaW4gY2Ryb21fcmVhZF90b2MsIHdlIHdlcmVuJ3QKKyAqCQkJICBjb3JyZWN0bHkgc2Vuc2luZyBhIGRpc2MgY2hhbmdlLgorICoJCQktIFJlYXJyYW5nZWQgc29tZSBjb2RlCisgKgkJCS0gVXNlIGV4dGVuZGVkIHNlbnNlIG9uIGRyaXZlcyB0aGF0IHN1cHBvcnQgaXQgZm9yCisgKgkJCSAgY29ycmVjdGx5IHJlcG9ydGluZyB0cmF5IHN0YXR1cyAtLSBmcm9tCisgKgkJCSAgTWljaGFlbCBEIEpvaG5zb24gPGpvaG5zb21Ab3JzdC5lZHU+CisgKiA0LjYwICBEZWMgMTcsIDIwMDMJLSBBZGQgbXQgcmFpbmllciBzdXBwb3J0CisgKgkJCS0gQnVtcCB0aW1lb3V0IGZvciBwYWNrZXQgY29tbWFuZHMsIG1hdGNoZXMgc3IKKyAqCQkJLSBPZGQgc3R1ZmYKKyAqIDQuNjEgIEphbiAyMiwgMjAwNAktIHN1cHBvcnQgaGFyZHdhcmUgc2VjdG9yIHNpemVzIG90aGVyIHRoYW4gMmtCLAorICoJCQkgIFBhc2NhbCBTY2htaWR0IDxkZXIuZXJlbWl0QGVtYWlsLmRlPgorICovCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lkZS9DaGFuZ2VMb2cuaWRlLWZsb3BweS4xOTk2LTIwMDIgYi9Eb2N1bWVudGF0aW9uL2lkZS9DaGFuZ2VMb2cuaWRlLWZsb3BweS4xOTk2LTIwMDIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZjMTllZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaWRlL0NoYW5nZUxvZy5pZGUtZmxvcHB5LjE5OTYtMjAwMgpAQCAtMCwwICsxLDYzIEBACisvKgorICogTWFueSB0aGFua3MgdG8gTG9kZSBMZXJveSA8TG9kZS5MZXJveUB3d3cuaWJhc2UuYmU+LCB3aG8gdGVzdGVkIHNvIG1hbnkKKyAqIEFMUEhBIHBhdGNoZXMgdG8gdGhpcyBkcml2ZXIgb24gYW4gRUFTWVNUT1IgTFMtMTIwIEFUQVBJIGZsb3BweSBkcml2ZS4KKyAqCisgKiBWZXIgMC4xICAgT2N0IDE3IDk2ICAgSW5pdGlhbCB0ZXN0IHZlcnNpb24sIG1vc3RseSBiYXNlZCBvbiBpZGUtdGFwZS5jLgorICogVmVyIDAuMiAgIE9jdCAzMSA5NiAgIE1pbm9yIGNoYW5nZXMuCisgKiBWZXIgMC4zICAgRGVjICAyIDk2ICAgRml4ZWQgZXJyb3IgcmVjb3ZlcnkgYnVnLgorICogVmVyIDAuNCAgIEphbiAyNiA5NyAgIEFkZCBzdXBwb3J0IGZvciB0aGUgSERJT19HRVRHRU8gaW9jdGwuCisgKiBWZXIgMC41ICAgRmViIDIxIDk3ICAgQWRkIHBhcnRpdGlvbnMgc3VwcG9ydC4KKyAqICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIG1pbmltdW0gb2YgdGhlIExCQSBhbmQgQ0hTIGNhcGFjaXRpZXMuCisgKiAgICAgICAgICAgICAgICAgICAgICAgQXZvaWQgaHdncm91cC0+cnEgPT0gTlVMTCBvbiB0aGUgbGFzdCBpcnEuCisgKiAgICAgICAgICAgICAgICAgICAgICAgRml4IHBvdGVudGlhbCBudWxsIGRlcmVmZXJlbmNpbmcgd2l0aCBERUJVR19MT0cuCisgKiBWZXIgMC44ICAgRGVjICA3IDk3ICAgSW5jcmVhc2UgaXJxIHRpbWVvdXQgZnJvbSAxMCB0byA1MCBzZWNvbmRzLgorICogICAgICAgICAgICAgICAgICAgICAgIEFkZCBtZWRpYSB3cml0ZS1wcm90ZWN0IGRldGVjdGlvbi4KKyAqICAgICAgICAgICAgICAgICAgICAgICBJc3N1ZSBTVEFSVCBjb21tYW5kIG9ubHkgaWYgVEVTVCBVTklUIFJFQURZIGZhaWxzLgorICogICAgICAgICAgICAgICAgICAgICAgIEFkZCB3b3JrLWFyb3VuZCBmb3IgSU9NRUdBIFpJUCByZXZpc2lvbiAyMS5ELgorICogICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZSBpZGVmbG9wcHlfZ2V0X2NhcGFiaWxpdGllcygpLgorICogVmVyIDAuOSAgIEp1bCAgNCA5OSAgIEZpeCBhIGJ1ZyB3aGljaCBtaWdodCBoYXZlIGNhdXNlZCB0aGUgbnVtYmVyIG9mCisgKiAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzIHJlcXVlc3RlZCBvbiBlYWNoIGludGVycnVwdCB0byBiZSB6ZXJvLgorICogICAgICAgICAgICAgICAgICAgICAgICBUaGFua3MgdG8gPHNoYW5vc0Blcy5jby5uej4gZm9yIHBvaW50aW5nIHRoaXMgb3V0LgorICogVmVyIDAuOS5zdiBKYW4gNiAwMSAgIFNhbSBWYXJzaGF2Y2hpayA8bXJzYW1AY291cmllci1tdGEuY29tPgorICogICAgICAgICAgICAgICAgICAgICAgIEltcGxlbWVudCBsb3cgbGV2ZWwgZm9ybWF0dGluZy4gIFJlaW1wbGVtZW50ZWQKKyAqICAgICAgICAgICAgICAgICAgICAgICBJREVGTE9QUFlfQ0FQQUJJTElUSUVTX1BBR0UsIHNpbmNlIHdlIG5lZWQgdGhlIHNyZnAKKyAqICAgICAgICAgICAgICAgICAgICAgICBiaXQuICBNeSBMUy0xMjAgZHJpdmUgYmFyZnMgb24KKyAqICAgICAgICAgICAgICAgICAgICAgICBJREVGTE9QUFlfQ0FQQUJJTElUSUVTX1BBR0UsIGJ1dCBtYXliZSBpdCdzIGp1c3QgbWUuCisgKiAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJvbWlzZSBieSBub3QgcmVwb3J0aW5nIGEgZmFpbHVyZSB0byBnZXQgdGhpcworICogICAgICAgICAgICAgICAgICAgICAgIG1vZGUgcGFnZS4gIEltcGxlbWVudGVkIGZvdXIgSU9DVExzIGluIG9yZGVyIHRvCisgKiAgICAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50IGZvcm1hdHRpbmcuICBJT0NUbHMgYmVnaW4gd2l0aCAweDQ2MDAsCisgKiAgICAgICAgICAgICAgICAgICAgICAgMHg0NiBpcyAnRicgYXMgaW4gRm9ybWF0LgorICogICAgICAgICAgICBKYW4gOSAwMSAgIFVzZXJsYW5kIG9wdGlvbiB0byBzZWxlY3QgZm9ybWF0IHZlcmlmeS4KKyAqICAgICAgICAgICAgICAgICAgICAgICBBZGRlZCBQQ19TVVBQUkVTU19FUlJPUiBmbGFnIC0gc29tZSBpZGVmbG9wcHkgZHJpdmVzCisgKiAgICAgICAgICAgICAgICAgICAgICAgZG8gbm90IGltcGxlbWVudCBJREVGTE9QUFlfQ0FQQUJJTElUSUVTX1BBR0UsIGFuZAorICogICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhIHNlbnNlIGVycm9yLiAgU3VwcHJlc3MgZXJyb3IgcmVwb3J0aW5nIGluCisgKiAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBwYXJ0aWN1bGFyIGNhc2UgaW4gb3JkZXIgdG8gYXZvaWQgc3B1cmlvdXMKKyAqICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMgaW4gc3lzbG9nLiAgVGhlIGN1bHByaXQgaXMKKyAqICAgICAgICAgICAgICAgICAgICAgICBpZGVmbG9wcHlfZ2V0X2NhcGFiaWxpdHlfcGFnZSgpLCBzbyBtb3ZlIGl0IHRvCisgKiAgICAgICAgICAgICAgICAgICAgICAgaWRlZmxvcHB5X2JlZ2luX2Zvcm1hdCgpIHNvIHRoYXQgaXQncyBub3QgdXNlZAorICogICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyBhYnNvbHV0ZWx5IG5lY2Vzc2FyeS4KKyAqICAgICAgICAgICAgICAgICAgICAgICBJZiBkcml2ZSBkb2VzIG5vdCBzdXBwb3J0IGZvcm1hdCBwcm9ncmVzcyBpbmRpY2F0aW9uCisgKiAgICAgICAgICAgICAgICAgICAgICAgbW9uaXRvciB0aGUgZHNjIGJpdCBpbiB0aGUgc3RhdHVzIHJlZ2lzdGVyLgorICogICAgICAgICAgICAgICAgICAgICAgIEFsc28sIE9fTkRFTEFZIG9uIG9wZW4gd2lsbCBhbGxvdyB0aGUgZGV2aWNlIHRvIGJlCisgKiAgICAgICAgICAgICAgICAgICAgICAgb3BlbmVkIHdpdGhvdXQgYSBkaXNrIGF2YWlsYWJsZS4gIFRoaXMgY2FuIGJlIHVzZWQgdG8KKyAqICAgICAgICAgICAgICAgICAgICAgICBvcGVuIGFuIHVuZm9ybWF0dGVkIGRpc2ssIG9yIGdldCB0aGUgZGV2aWNlIGNhcGFjaXR5LgorICogVmVyIDAuOTEgIERlYyAxMSA5OSAgIEFkZGVkIElPTUVHQSBDbGlrISBkcml2ZSBzdXBwb3J0IGJ5CisgKiAgICAgCQkgICA8cGF1bEBwYXVsYnJpc3Rvdy5uZXQ+CisgKiBWZXIgMC45MiAgT2N0IDIyIDAwICAgUGF1bCBCcmlzdG93IGJlY2FtZSBvZmZpY2lhbCBtYWludGFpbmVyIGZvciB0aGlzCisgKiAgICAgICAgICAgCQkgICBkcml2ZXIuICBJbmNsdWRlZCBQb3dlcmJvb2sgaW50ZXJuYWwgemlwIGtsdWRnZS4KKyAqIFZlciAwLjkzICBPY3QgMjQgMDAgICBGaXhlZCBidWdzIGZvciBDbGlrISBkcml2ZQorICogICAgICAgICAgICAgICAgICAgICAgICBubyBkaXNrIG9uIGluc2VydCBhbmQgZGlzayBjaGFuZ2Ugbm93IHdvcmtzCisgKiBWZXIgMC45NCAgT2N0IDI3IDAwICAgVGlkaWVkIHVwIHRvIHJlbW92ZSBzdHJzdHIoQ2xpaykgZXZlcnl3aGVyZQorICogVmVyIDAuOTUgIE5vdiAgNyAwMCAgIEJyb3VnaHQgYWNyb3NzIHRvIGtlcm5lbCAyLjQKKyAqIFZlciAwLjk2ICBKYW4gIDcgMDEgICBBY3R1YWxseSBpbiBsaW5lIHdpdGggcmVsZWFzZSB2ZXJzaW9uIG9mIDIuNC4wCisgKiAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIHNldF9iaXQgcGF0Y2ggZnJvbSBSdXN0eSBSdXNzZWxsCisgKiBWZXIgMC45NyAgSnVsIDIyIDAxICAgTWVyZ2UgMC45MS0wLjk2IG9udG8gMC45LnN2IGZvciBhYyBzZXJpZXMKKyAqIFZlciAwLjk3LnN2IEF1ZyAzIDAxICBCYWNrcG9ydGVkIGZyb20gMi40LjctYWMzCisgKiBWZXIgMC45OCAgT2N0IDI2IDAxICAgU3BsaXQgaWRlZmxvcHB5X3RyYW5zZmVyX3BjIGludG8gdHdvIHBpZWNlcyB0bworICogICAgICAgICAgICAgICAgICAgICAgICBmaXggYSBsb3N0IGludGVycnVwdCBwcm9ibGVtLiBJdCBhcHBlYXJzIHRoZSBidXN5CisgKiAgICAgICAgICAgICAgICAgICAgICAgIGJpdCB3YXMgYmVpbmcgZGVhc3NlcnRlZCBieSBteSBJT01FR0EgQVRBUEkgWklQIDEwMAorICogICAgICAgICAgICAgICAgICAgICAgICBkcml2ZSBiZWZvcmUgdGhlIGRyaXZlIHdhcyBhY3R1YWxseSByZWFkeS4KKyAqIFZlciAwLjk4YSBPY3QgMjkgMDEgICBFeHBvc2UgZGVsYXkgdmFsdWUgc28gd2UgY2FuIHBsYXkuCisgKiBWZXIgMC45OSAgRmViIDI0IDAyICAgUmVtb3ZlIGR1cGxpY2F0ZSBjb2RlLCBtb2RpZnkgY2xpayEgZGV0ZWN0aW9uIGNvZGUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgdG8gc3VwcG9ydCBuZXcgUG9ja2V0WmlwIGRyaXZlcworICovCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lkZS9DaGFuZ2VMb2cuaWRlLXRhcGUuMTk5NS0yMDAyIGIvRG9jdW1lbnRhdGlvbi9pZGUvQ2hhbmdlTG9nLmlkZS10YXBlLjE5OTUtMjAwMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzdmYWM4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pZGUvQ2hhbmdlTG9nLmlkZS10YXBlLjE5OTUtMjAwMgpAQCAtMCwwICsxLDI1NyBAQAorLyoKKyAqIFZlciAwLjEgICBOb3YgIDEgOTUgICBQcmUtd29ya2luZyBjb2RlIDotKQorICogVmVyIDAuMiAgIE5vdiAyMyA5NSAgIEEgc2hvcnQgYmFja3VwIChmZXcgbWVnYWJ5dGVzKSBhbmQgcmVzdG9yZSBwcm9jZWR1cmUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgd2FzIHN1Y2Nlc3NmdWwgISAoVXNpbmcgdGFyIGN2ZiAuLi4gb24gdGhlIGJsb2NrCisgKiAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZSBpbnRlcmZhY2UpLgorICogICAgICAgICAgICAgICAgICAgICAgIEEgbG9uZ2VyIGJhY2t1cCByZXN1bHRlZCBpbiBtYWpvciBzd2FwcGluZywgYmFkCisgKiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJhbGwgTGludXggcGVyZm9ybWFuY2UgYW5kIGV2ZW50dWFsbHkgZmFpbGVkIGFzCisgKiAgICAgICAgICAgICAgICAgICAgICAgIHdlIHJlY2VpdmVkIG5vbiBzZXJpYWwgcmVhZC1haGVhZCByZXF1ZXN0cyBmcm9tIHRoZQorICogICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIgY2FjaGUuCisgKiBWZXIgMC4zICAgTm92IDI4IDk1ICAgTG9uZyBiYWNrdXBzIGFyZSBub3cgcG9zc2libGUsIHRoYW5rcyB0byB0aGUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyIGRldmljZSBpbnRlcmZhY2UuIExpbnV4J3MgcmVzcG9uc2l2ZW5lc3MKKyAqICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHBlcmZvcm1hbmNlIGRvZXNuJ3Qgc2VlbSB0byBiZSBtdWNoIGFmZmVjdGVkCisgKiAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIGJhY2tncm91bmQgYmFja3VwIHByb2NlZHVyZS4KKyAqICAgICAgICAgICAgICAgICAgICAgICBTb21lIGdlbmVyYWwgbXRpby5oIG1hZ25ldGljIHRhcGUgb3BlcmF0aW9ucyBhcmUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgbm93IHN1cHBvcnRlZCBieSBvdXIgY2hhcmFjdGVyIGRldmljZS4gQXMgYSByZXN1bHQsCisgKiAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVsYXIgdGFwZSB1dGlsaXRpZXMgYXJlIHN0YXJ0aW5nIHRvIHdvcmsgd2l0aAorICogICAgICAgICAgICAgICAgICAgICAgICBpZGUgdGFwZXMgOi0pCisgKiAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9ucyB3ZXJlIHRlc3RlZDoKKyAqICAgICAgICAgICAgICAgICAgICAgICAxLiBBbiBJREUgQVRBUEkgVEFQRSBzaGFyZXMgdGhlIHNhbWUgaW50ZXJmYWNlCisgKiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBpcnEgd2l0aCBhbiBJREUgQVRBUEkgQ0RST00uCisgKiAgICAgICAgICAgICAgICAgICAgICAgMi4gQW4gSURFIEFUQVBJIFRBUEUgc2hhcmVzIHRoZSBzYW1lIGludGVyZmFjZQorICogICAgICAgICAgICAgICAgICAgICAgICBhbmQgaXJxIHdpdGggYSBub3JtYWwgSURFIGRpc2suCisgKiAgICAgICAgICAgICAgICAgICAgICAgIEJvdGggY29uZmlndXJhdGlvbnMgc2VlbWVkIHRvIHdvcmsganVzdCBmaW5lICEKKyAqICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdG8gYmUgb24gdGhlIHNhZmUgc2lkZSwgaXQgaXMgbWVhbndoaWxlCisgKiAgICAgICAgICAgICAgICAgICAgICAgIHJlY29tbWVuZGVkIHRvIGdpdmUgdGhlIElERSBUQVBFIGl0cyBvd24gaW50ZXJmYWNlCisgKiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBpcnEuCisgKiAgICAgICAgICAgICAgICAgICAgICAgVGhlIG9uZSB0aGluZyB3aGljaCBuZWVkcyB0byBiZSBkb25lIGhlcmUgaXMgdG8KKyAqICAgICAgICAgICAgICAgICAgICAgICAgYWRkIGEgInJlcXVlc3QgcG9zdHBvbmUiIGZlYXR1cmUgdG8gaWRlLmMsCisgKiAgICAgICAgICAgICAgICAgICAgICAgIHNvIHRoYXQgd2Ugd29uJ3QgaGF2ZSB0byB3YWl0IGZvciB0aGUgdGFwZSB0byBmaW5pc2gKKyAqICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybWluZyBhIGxvbmcgbWVkaWEgYWNjZXNzIChEU0MpIHJlcXVlc3QgKHN1Y2gKKyAqICAgICAgICAgICAgICAgICAgICAgICAgYXMgYSByZXdpbmQpIGJlZm9yZSB3ZSBjYW4gYWNjZXNzIHRoZSBvdGhlciBkZXZpY2UKKyAqICAgICAgICAgICAgICAgICAgICAgICAgb24gdGhlIHNhbWUgaW50ZXJmYWNlLiBUaGlzIGVmZmVjdCBkb2Vzbid0IGRpc3R1cmIKKyAqICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsIG9wZXJhdGlvbiBtb3N0IG9mIHRoZSB0aW1lIGJlY2F1c2UgcmVhZC93cml0ZQorICogICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cyBhcmUgcmVsYXRpdmVseSBmYXN0LCBhbmQgb25jZSB3ZSBhcmUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybWluZyBvbmUgdGFwZSByL3cgcmVxdWVzdCwgYSBsb3Qgb2YgcmVxdWVzdHMKKyAqICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgb3RoZXIgZGV2aWNlIGNhbiBiZSBxdWV1ZWQgYW5kIGlkZS5jIHdpbGwKKyAqCQkJICBzZXJ2aWNlIGFsbCBvZiB0aGVtIGFmdGVyIHRoaXMgc2luZ2xlIHRhcGUgcmVxdWVzdC4KKyAqIFZlciAxLjAgICBEZWMgMTEgOTUgICBJbnRlZ3JhdGVkIGludG8gTGludXggMS4zLjQ2IGRldmVsb3BtZW50IHRyZWUuCisgKiAgICAgICAgICAgICAgICAgICAgICAgT24gZWFjaCByZWFkIC8gd3JpdGUgcmVxdWVzdCwgd2Ugbm93IGFzayB0aGUgZHJpdmUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgaWYgd2UgY2FuIHRyYW5zZmVyIGEgY29uc3RhbnQgbnVtYmVyIG9mIGJ5dGVzCisgKiAgICAgICAgICAgICAgICAgICAgICAgIChhIHBhcmFtZXRlciBvZiB0aGUgZHJpdmUpIG9ubHkgdG8gaXRzIGJ1ZmZlcnMsCisgKiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgY2F1c2luZyBhY3R1YWwgbWVkaWEgYWNjZXNzLiBJZiB3ZSBjYW4ndCwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgd2UganVzdCB3YWl0IHVudGlsIHdlIGNhbiBieSBwb2xsaW5nIHRoZSBEU0MgYml0LgorICogICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGVuc3VyZXMgdGhhdCB3aGlsZSB3ZSBhcmUgbm90IHRyYW5zZmVycmluZworICogICAgICAgICAgICAgICAgICAgICAgICBtb3JlIGJ5dGVzIHRoYW4gdGhlIGNvbnN0YW50IHJlZmVycmVkIHRvIGFib3ZlLCB0aGUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0IGxhdGVuY3kgd2lsbCBub3QgYmVjb21lIHRvbyBoaWdoIGFuZAorICogICAgICAgICAgICAgICAgICAgICAgICB3ZSB3b24ndCBjYXVzZSBhbiBpbnRlcnJ1cHQgdGltZW91dCwgYXMgaGFwcGVuZWQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgb2NjYXNpb25hbGx5IGluIHRoZSBwcmV2aW91cyB2ZXJzaW9uLgorICogICAgICAgICAgICAgICAgICAgICAgIFdoaWxlIHBvbGxpbmcgZm9yIERTQywgdGhlIGN1cnJlbnQgcmVxdWVzdCBpcworICogICAgICAgICAgICAgICAgICAgICAgICBwb3N0cG9uZWQgYW5kIGlkZS5jIGlzIGZyZWUgdG8gaGFuZGxlIHJlcXVlc3RzIGZyb20KKyAqICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG90aGVyIGRldmljZS4gVGhpcyBpcyBoYW5kbGVkIHRyYW5zcGFyZW50bHkgdG8KKyAqICAgICAgICAgICAgICAgICAgICAgICAgaWRlLmMuIFRoZSBod2dyb3VwIGxvY2tpbmcgbWV0aG9kIHdoaWNoIHdhcyB1c2VkCisgKiAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBwcmV2aW91cyB2ZXJzaW9uIHdhcyByZW1vdmVkLgorICogICAgICAgICAgICAgICAgICAgICAgIFVzZSBvZiBuZXcgZ2VuZXJhbCBmZWF0dXJlcyB3aGljaCBhcmUgcHJvdmlkZWQgYnkKKyAqICAgICAgICAgICAgICAgICAgICAgICAgaWRlLmMgZm9yIHVzZSB3aXRoIGF0YXBpIGRldmljZXMuCisgKiAgICAgICAgICAgICAgICAgICAgICAgIChQcm9ncmFtbWluZyBkb25lIGJ5IE1hcmsgTG9yZCkKKyAqICAgICAgICAgICAgICAgICAgICAgICBGZXcgcG90ZW50aWFsIGJ1ZyBmaXhlcyAoQWdhaW4sIHN1Z2dlc3RlZCBieSBNYXJrKQorICogICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZSBjaGFyYWN0ZXIgZGV2aWNlIGRhdGEgdHJhbnNmZXJzIGFyZSBub3cKKyAqICAgICAgICAgICAgICAgICAgICAgICAgbm90IGxpbWl0ZWQgaW4gc2l6ZSwgYXMgdGhleSB3ZXJlIGJlZm9yZS4KKyAqICAgICAgICAgICAgICAgICAgICAgICBXZSBhcmUgYXNraW5nIHRoZSB0YXBlIGFib3V0IGl0cyByZWNvbW1lbmRlZAorICogICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2ZlciB1bml0IGFuZCBzZW5kIGEgbGFyZ2VyIGRhdGEgdHJhbnNmZXIKKyAqICAgICAgICAgICAgICAgICAgICAgICAgYXMgc2V2ZXJhbCB0cmFuc2ZlcnMgb2YgdGhlIGFib3ZlIHNpemUuCisgKiAgICAgICAgICAgICAgICAgICAgICAgIEZvciBiZXN0IHJlc3VsdHMsIHVzZSBhbiBpbnRlZ3JhbCBudW1iZXIgb2YgdGhpcworICogICAgICAgICAgICAgICAgICAgICAgICBiYXNpYyB1bml0ICh3aGljaCBpcyBzaG93biBkdXJpbmcgZHJpdmVyCisgKiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uKS4gSSB3aWxsIHNvb24gYWRkIGFuIGlvY3RsIHRvIGdldAorICogICAgICAgICAgICAgICAgICAgICAgICB0aGlzIGltcG9ydGFudCBwYXJhbWV0ZXIuCisgKiAgICAgICAgICAgICAgICAgICAgICAgT3VyIGRhdGEgdHJhbnNmZXIgYnVmZmVyIGlzIGFsbG9jYXRlZCBvbiBzdGFydHVwLAorICogICAgICAgICAgICAgICAgICAgICAgICByYXRoZXIgdGhhbiBiZWZvcmUgZWFjaCBkYXRhIHRyYW5zZmVyLiBUaGlzIHNob3VsZAorICogICAgICAgICAgICAgICAgICAgICAgICBlbnN1cmUgdGhhdCB3ZSB3aWxsIGluZGVlZCBoYXZlIGEgZGF0YSBidWZmZXIuCisgKiBWZXIgMS4xICAgRGVjIDE0IDk1ICAgRml4ZWQgcmFuZG9tIHByb2JsZW1zIHdoaWNoIG9jY3VycmVkIHdoZW4gdGhlIHRhcGUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGFuIGludGVyZmFjZSB3aXRoIGFub3RoZXIgZGV2aWNlLgorICogICAgICAgICAgICAgICAgICAgICAgICAocG9sbF9mb3JfZHNjIHdhcyBhIGNvbXBsZXRlIG1lc3MpLgorICogICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZWQgc29tZSBvbGQgKG5vbi1hY3RpdmUpIGNvZGUgd2hpY2ggaGFkCisgKiAgICAgICAgICAgICAgICAgICAgICAgIHRvIGRvIHdpdGggc3VwcG9ydGluZyBidWZmZXIgY2FjaGUgb3JpZ2luYXRlZAorICogICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cy4KKyAqICAgICAgICAgICAgICAgICAgICAgICBUaGUgYmxvY2sgZGV2aWNlIGludGVyZmFjZSBjYW4gbm93IGJlIG9wZW5lZCwgc28KKyAqICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBnZW5lcmFsIGlkZSBkcml2ZXIgZmVhdHVyZXMgbGlrZSB0aGUgdW5tYXNrCisgKiAgICAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdHMgZmxhZyBjYW4gYmUgc2VsZWN0ZWQgd2l0aCBhbiBpb2N0bC4KKyAqICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyB0aGUgb25seSB1c2Ugb2YgdGhlIGJsb2NrIGRldmljZSBpbnRlcmZhY2UuCisgKiAgICAgICAgICAgICAgICAgICAgICAgTmV3IGZhc3QgcGlwZWxpbmVkIG9wZXJhdGlvbiBtb2RlIChjdXJyZW50bHkgb25seSBvbgorICogICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXMpLiBXaGVuIHVzaW5nIHRoZSBwaXBlbGluZWQgbW9kZSwgdGhlCisgKiAgICAgICAgICAgICAgICAgICAgICAgIHRocm91Z2hwdXQgY2FuIHBvdGVudGlhbGx5IHJlYWNoIHRoZSBtYXhpbXVtCisgKiAgICAgICAgICAgICAgICAgICAgICAgIHRhcGUgc3VwcG9ydGVkIHRocm91Z2hwdXQsIHJlZ2FyZGxlc3Mgb2YgdGhlCisgKiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIgYmFja3VwIHByb2dyYW0uIE9uIG15IHRhcGUgZHJpdmUsIGl0IHNvbWV0aW1lcworICogICAgICAgICAgICAgICAgICAgICAgICBib29zdGVkIHBlcmZvcm1hbmNlIGJ5IGEgZmFjdG9yIG9mIDIuIFBpcGVsaW5lZAorICogICAgICAgICAgICAgICAgICAgICAgICBtb2RlIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYnV0IHNpbmNlIGl0IGhhcyBhIGZldworICogICAgICAgICAgICAgICAgICAgICAgICBkb3duZmFsbHMgYXMgd2VsbCwgeW91IG1heSB3YW50IHRvIGRpc2FibGUgaXQuCisgKiAgICAgICAgICAgICAgICAgICAgICAgIEEgc2hvcnQgZXhwbGFuYXRpb24gb2YgdGhlIHBpcGVsaW5lZCBvcGVyYXRpb24gbW9kZQorICogICAgICAgICAgICAgICAgICAgICAgICBpcyBhdmFpbGFibGUgYmVsb3cuCisgKiBWZXIgMS4yICAgSmFuICAxIDk2ICAgRWxpbWluYXRlZCBwaXBlbGluZWQgbW9kZSByYWNlIGNvbmRpdGlvbi4KKyAqICAgICAgICAgICAgICAgICAgICAgICBBZGRlZCBwaXBlbGluZSByZWFkIG1vZGUuIEFzIGEgcmVzdWx0LCByZXN0b3JlcworICogICAgICAgICAgICAgICAgICAgICAgICBhcmUgbm93IGFzIGZhc3QgYXMgYmFja3Vwcy4KKyAqICAgICAgICAgICAgICAgICAgICAgICBPcHRpbWl6ZWQgc2hhcmVkIGludGVyZmFjZSBiZWhhdmlvci4gVGhlIG5ldyBiZWhhdmlvcgorICogICAgICAgICAgICAgICAgICAgICAgICB0eXBpY2FsbHkgcmVzdWx0cyBpbiBiZXR0ZXIgSURFIGJ1cyBlZmZpY2llbmN5IGFuZAorICogICAgICAgICAgICAgICAgICAgICAgICBoaWdoZXIgdGFwZSB0aHJvdWdocHV0LgorICogICAgICAgICAgICAgICAgICAgICAgIFByZS1jYWxjdWxhdGlvbiBvZiB0aGUgZXhwZWN0ZWQgcmVhZC93cml0ZSByZXF1ZXN0CisgKiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UgdGltZSwgYmFzZWQgb24gdGhlIHRhcGUncyBwYXJhbWV0ZXJzLiBJbgorICogICAgICAgICAgICAgICAgICAgICAgICB0aGUgcGlwZWxpbmVkIG9wZXJhdGlvbiBtb2RlLCB0aGlzIGFsbG93cyB1cyB0bworICogICAgICAgICAgICAgICAgICAgICAgICBhZGp1c3Qgb3VyIHBvbGxpbmcgZnJlcXVlbmN5IHRvIGEgbXVjaCBsb3dlciB2YWx1ZSwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRodXMgdG8gZHJhbWF0aWNhbGx5IHJlZHVjZSBvdXIgbG9hZCBvbiBMaW51eCwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgd2l0aG91dCBhbnkgZGVjcmVhc2UgaW4gcGVyZm9ybWFuY2UuCisgKiAgICAgICAgICAgICAgICAgICAgICAgSW1wbGVtZW50ZWQgYWRkaXRpb25hbCBtdGlvLmggb3BlcmF0aW9ucy4KKyAqICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVjb21tZW5kZWQgdXNlciBibG9jayBzaXplIGlzIHJldHVybmVkIGJ5CisgKiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBNVElPQ0dFVCBpb2N0bC4KKyAqICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsIG1pbm9yIGNoYW5nZXMuCisgKiBWZXIgMS4zICAgRmViICA5IDk2ICAgRml4ZWQgcGlwZWxpbmVkIHJlYWQgbW9kZSBidWcgd2hpY2ggcHJldmVudGVkIHRoZQorICogICAgICAgICAgICAgICAgICAgICAgICB1c2Ugb2Ygc29tZSBibG9jayBzaXplcyBkdXJpbmcgYSByZXN0b3JlIHByb2NlZHVyZS4KKyAqICAgICAgICAgICAgICAgICAgICAgICBUaGUgY2hhcmFjdGVyIGRldmljZSBpbnRlcmZhY2Ugd2lsbCBub3cgcHJlc2VudCBhCisgKiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVvdXMgdmlldyBvZiB0aGUgbWVkaWEgLSBhbnkgbWl4IG9mIGJsb2NrIHNpemVzCisgKiAgICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyBhIGJhY2t1cC9yZXN0b3JlIHByb2NlZHVyZSBpcyBzdXBwb3J0ZWQuIFRoZQorICogICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIgd2lsbCBidWZmZXIgdGhlIHJlcXVlc3RzIGludGVybmFsbHkgYW5kCisgKiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnQgdGhlbSB0byB0aGUgdGFwZSdzIHJlY29tbWVuZGVkIHRyYW5zZmVyCisgKiAgICAgICAgICAgICAgICAgICAgICAgIHVuaXQsIG1ha2luZyBwZXJmb3JtYW5jZSBhbG1vc3QgaW5kZXBlbmRlbnQgb2YgdGhlCisgKiAgICAgICAgICAgICAgICAgICAgICAgIGNob3NlbiB1c2VyIGJsb2NrIHNpemUuCisgKiAgICAgICAgICAgICAgICAgICAgICAgU29tZSBpbXByb3ZlbWVudHMgaW4gZXJyb3IgcmVjb3ZlcnkuCisgKiAgICAgICAgICAgICAgICAgICAgICAgQnkgY29vcGVyYXRpbmcgd2l0aCBpZGUtZG1hLmMsIGJ1cyBtYXN0ZXJpbmcgRE1BIGNhbgorICogICAgICAgICAgICAgICAgICAgICAgICBub3cgc29tZXRpbWVzIGJlIHVzZWQgd2l0aCBJREUgdGFwZSBkcml2ZXMgYXMgd2VsbC4KKyAqICAgICAgICAgICAgICAgICAgICAgICAgQnVzIG1hc3RlcmluZyBETUEgaGFzIHRoZSBwb3RlbnRpYWwgdG8gZHJhbWF0aWNhbGx5CisgKiAgICAgICAgICAgICAgICAgICAgICAgIHJlZHVjZSB0aGUgQ1BVJ3Mgb3ZlcmhlYWQgd2hlbiBhY2Nlc3NpbmcgdGhlIGRldmljZSwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGNhbiBiZSBlbmFibGVkIGJ5IHVzaW5nIGhkcGFybSAtZDEgb24gdGhlIHRhcGUncworICogICAgICAgICAgICAgICAgICAgICAgICBibG9jayBkZXZpY2UgaW50ZXJmYWNlLiBGb3IgbW9yZSBpbmZvLCByZWFkIHRoZQorICogICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50cyBpbiBpZGUtZG1hLmMuCisgKiBWZXIgMS40ICAgTWFyIDEzIDk2ICAgRml4ZWQgc2VyaWFsaXplIHN1cHBvcnQuCisgKiBWZXIgMS41ICAgQXByIDEyIDk2ICAgRml4ZWQgc2hhcmVkIGludGVyZmFjZSBvcGVyYXRpb24sIGJyb2tlbiBpbiAxLjMuODUuCisgKiAgICAgICAgICAgICAgICAgICAgICAgRml4ZWQgcGlwZWxpbmVkIHJlYWQgbW9kZSBpbmVmZmljaWVuY3kuCisgKiAgICAgICAgICAgICAgICAgICAgICAgRml4ZWQgbmFzdHkgbnVsbCBkZXJlZmVyZW5jaW5nIGJ1Zy4KKyAqIFZlciAxLjYgICBBdWcgMTYgOTYgICBGaXhlZCBGUFUgdXNhZ2UgaW4gdGhlIGRyaXZlci4KKyAqICAgICAgICAgICAgICAgICAgICAgICBGaXhlZCBlbmQgb2YgbWVkaWEgYnVnLgorICogVmVyIDEuNyAgIFNlcCAxMCA5NiAgIE1pbm9yIGNoYW5nZXMgZm9yIHRoZSBDT05ORVIgQ1RUODAwMC1BIG1vZGVsLgorICogVmVyIDEuOCAgIFNlcCAyNiA5NiAgIEF0dGVtcHQgdG8gZmluZCBhIGJldHRlciBiYWxhbmNlIGJldHdlZW4gZ29vZAorICogICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGl2ZSByZXNwb25zZSBhbmQgaGlnaCBzeXN0ZW0gdGhyb3VnaHB1dC4KKyAqIFZlciAxLjkgICBOb3YgIDUgOTYgICBBdXRvbWF0aWNhbGx5IGNyb3NzIGVuY291bnRlcmVkIGZpbGVtYXJrcyByYXRoZXIKKyAqICAgICAgICAgICAgICAgICAgICAgICAgdGhhbiByZXF1aXJpbmcgYW4gZXhwbGljaXQgRlNGIGNvbW1hbmQuCisgKiAgICAgICAgICAgICAgICAgICAgICAgQWJvcnQgcGVuZGluZyByZXF1ZXN0cyBhdCBlbmQgb2YgbWVkaWEuCisgKiAgICAgICAgICAgICAgICAgICAgICAgTVRURUxMIHdhcyBzb21ldGltZXMgcmV0dXJuaW5nIGluY29ycmVjdCByZXN1bHRzLgorICogICAgICAgICAgICAgICAgICAgICAgIFJldHVybiB0aGUgcmVhbCBibG9jayBzaXplIGluIHRoZSBNVElPQ0dFVCBpb2N0bC4KKyAqICAgICAgICAgICAgICAgICAgICAgICBTb21lIGVycm9yIHJlY292ZXJ5IGJ1ZyBmaXhlcy4KKyAqIFZlciAxLjEwICBOb3YgIDUgOTYgICBNYWpvciByZW9yZ2FuaXphdGlvbi4KKyAqICAgICAgICAgICAgICAgICAgICAgICBSZWR1Y2VkIENQVSBvdmVyaGVhZCBhIGJpdCBieSBlbGltaW5hdGluZyBpbnRlcm5hbAorICogICAgICAgICAgICAgICAgICAgICAgICBib3VuY2UgYnVmZmVycy4KKyAqICAgICAgICAgICAgICAgICAgICAgICBBZGRlZCBtb2R1bGUgc3VwcG9ydC4KKyAqICAgICAgICAgICAgICAgICAgICAgICBBZGRlZCBtdWx0aXBsZSB0YXBlIGRyaXZlcyBzdXBwb3J0LgorICogICAgICAgICAgICAgICAgICAgICAgIEFkZGVkIHBhcnRpdGlvbiBzdXBwb3J0LgorICogICAgICAgICAgICAgICAgICAgICAgIFJld3JvdGUgRFNDIGhhbmRsaW5nLgorICogICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcG9ydGFiaWxpdHkgZml4ZXMuCisgKiAgICAgICAgICAgICAgICAgICAgICAgUmVtb3ZlZCBpZGUtdGFwZS5oLgorICogICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWwgbWlub3IgY2hhbmdlcy4KKyAqIFZlciAxLjExICBEZWMgIDIgOTYgICBCdWcgZml4IGluIHByZXZpb3VzIERTQyB0aW1lb3V0IGhhbmRsaW5nLgorICogICAgICAgICAgICAgICAgICAgICAgIFVzZSBpZGVfc3RhbGxfcXVldWUoKSBmb3IgRFNDIG92ZXJsYXAuCisgKiAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBtYXhpbXVtIHNwZWVkIHJhdGhlciB0aGFuIHRoZSBjdXJyZW50IHNwZWVkCisgKiAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNvbXB1dGUgdGhlIHJlcXVlc3Qgc2VydmljZSB0aW1lLgorICogVmVyIDEuMTIgIERlYyAgNyA5NyAgIEZpeCByYW5kb20gbWVtb3J5IG92ZXJ3cml0aW5nIGFuZC9vciBsYXN0IGJsb2NrIGRhdGEKKyAqICAgICAgICAgICAgICAgICAgICAgICAgY29ycnVwdGlvbiwgd2hpY2ggY291bGQgb2NjdXIgaWYgdGhlIHRvdGFsIG51bWJlcgorICogICAgICAgICAgICAgICAgICAgICAgICBvZiBieXRlcyB3cml0dGVuIHRvIHRoZSB0YXBlIHdhcyBub3QgYW4gaW50ZWdyYWwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIHRhcGUgYmxvY2tzLgorICogICAgICAgICAgICAgICAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBJTlRFUlJVUFQgRFJRIGRldmljZXMuCisgKiBWZXIgMS4xMyAgSmFuICAyIDk4ICAgQWRkICJzcGVlZCA9PSAwIiB3b3JrLWFyb3VuZCBmb3IgSFAgQ09MT1JBRE8gNUdCCisgKiBWZXIgMS4xNCAgRGVjIDMwIDk4ICAgUGFydGlhbCBmaXhlcyBmb3IgdGhlIFNvbnkvQUlXQSB0YXBlIGRyaXZlcy4KKyAqICAgICAgICAgICAgICAgICAgICAgICBSZXBsYWNlIGNsaSgpL3N0aSgpIHdpdGggaHdncm91cCBzcGlubG9ja3MuCisgKiBWZXIgMS4xNSAgTWFyIDI1IDk5ICAgRml4IFNNUCByYWNlIGNvbmRpdGlvbiBieSByZXBsYWNpbmcgaHdncm91cAorICogICAgICAgICAgICAgICAgICAgICAgICBzcGlubG9jayB3aXRoIHByaXZhdGUgcGVyLXRhcGUgc3BpbmxvY2suCisgKiBWZXIgMS4xNiAgU2VwICAxIDk5ICAgQWRkIE9uU3RyZWFtIHRhcGUgc3VwcG9ydC4KKyAqICAgICAgICAgICAgICAgICAgICAgICBBYm9ydCByZWFkIHBpcGVsaW5lIG9uIEVPRC4KKyAqICAgICAgICAgICAgICAgICAgICAgICBXYWl0IGZvciB0aGUgdGFwZSB0byBiZWNvbWUgcmVhZHkgaW4gY2FzZSBpdCByZXR1cm5zCisgKiAgICAgICAgICAgICAgICAgICAgICAgICJpbiB0aGUgcHJvY2VzcyBvZiBiZWNvbWluZyByZWFkeSIgb24gb3BlbigpLgorICogICAgICAgICAgICAgICAgICAgICAgIEZpeCB6ZXJvIHBhZGRpbmcgb2YgdGhlIGxhc3Qgd3JpdHRlbiBibG9jayBpbgorICogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHRoZSB0YXBlIGJsb2NrIHNpemUgaXMgbGFyZ2VyIHRoYW4gUEFHRV9TSVpFLgorICogICAgICAgICAgICAgICAgICAgICAgIERlY3JlYXNlIHRoZSBkZWZhdWx0IGRpc2Nvbm5lY3Rpb24gdGltZSB0byB0bi4KKyAqIFZlciAxLjE2ZSBPY3QgIDMgOTkgICBNaW5vciBmaXhlcy4KKyAqIFZlciAxLjE2ZTEgT2N0IDEzIDk5ICBQYXRjaGVzIGJ5IEFybm9sZCBOaWVzc2VuLAorICogICAgICAgICAgICAgICAgICAgICAgICAgIG5pZXNzZW5AaWFlLm5sIC8gYXJub2xkLm5pZXNzZW5AcGhpbGlwcy5jb20KKyAqICAgICAgICAgICAgICAgICAgIEdPLTEpICBVbmRlZmluZWQgY29kZSBpbiBpZGV0YXBlX3JlYWRfcG9zaXRpb24KKyAqCQkJCWFjY29yZGluZyB0byBHYWRpJ3MgZW1haWwKKyAqICAgICAgICAgICAgICAgICAgIEFKTi0xKSBNaW5vciBmaXggYXNjID09IDExIHNob3VsZCBiZSBhc2MgPT0gMHgxMQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gaWRldGFwZV9pc3N1ZV9wYWNrZXRfY29tbWFuZCAoZGlkIGVmZmVjdAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdnaW5nIG91dHB1dCBvbmx5KQorICogICAgICAgICAgICAgICAgICAgQUpOLTIpIEFkZGVkIG1vcmUgZGVidWdnaW5nIG91dHB1dCwgYW5kCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGVkIGlkZS10YXBlOiB3aGVyZSBtaXNzaW5nLiBJIHdvdWxkIGFsc28KKyAqCQkJCWxpa2UgdG8gYWRkIHRhcGUtPm5hbWUgd2hlcmUgcG9zc2libGUKKyAqICAgICAgICAgICAgICAgICAgIEFKTi0zKSBBZGRlZCBkaWZmZXJlbnQgZGVidWdfbGV2ZWwncworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWEgL3Byb2MvaWRlL2hkYy9zZXR0aW5ncworICoJCQkJImRlYnVnX2xldmVsIiBkZXRlcm1pbmVzIGFtb3VudCBvZiBkZWJ1Z2dpbmcgb3V0cHV0OworICoJCQkJY2FuIGJlIGNoYW5nZWQgdXNpbmcgL3Byb2MvaWRlL2hkeC9zZXR0aW5ncworICoJCQkJMCA6IGFsbW9zdCBubyBkZWJ1Z2dpbmcgb3V0cHV0CisgKgkJCQkxIDogMCtvdXRwdXQgZXJyb3JzIG9ubHkKKyAqCQkJCTIgOiAxK291dHB1dCBhbGwgc2Vuc2VrZXkvYXNjCisgKgkJCQkzIDogMitmb2xsb3cgYWxsIGNocmRldiByZWxhdGVkIHByb2NlZHVyZXMKKyAqCQkJCTQgOiAzK2ZvbGxvdyBhbGwgcHJvY2VkdXJlcworICoJCQkJNSA6IDQraW5jbHVkZSBwY19zdGFjayBycV9zdGFjayBpbmZvCisgKgkJCQk2IDogNStVU0VfQ09VTlQgdXBkYXRlcworICogICAgICAgICAgICAgICAgICAgQUpOLTQpIEZpeGVkIHRpbWVvdXQgZm9yIHJldGVuc2lvbiBpbiBpZGV0YXBlX3F1ZXVlX3BjX3RhaWwKKyAqCQkJCWZyb20gNSB0byAxMCBtaW51dGVzCisgKiAgICAgICAgICAgICAgICAgICBBSk4tNSkgQ2hhbmdlZCBtYXhpbXVtIG51bWJlciBvZiBibG9ja3MgdG8gc2tpcCB3aGVuCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRpbmcgdGFwZXMgd2l0aCBtdWx0aXBsZSBjb25zZWN1dGl2ZSB3cml0ZQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMgZnJvbSAxMDAgdG8gMTAwMCBpbiBpZGV0YXBlX2dldF9sb2dpY2FsX2JsaworICogICAgICAgICAgICAgICAgICAgUHJvcG9zZWQgY2hhbmdlcyB0byBjb2RlOgorICogICAgICAgICAgICAgICAgICAgMSkgb3V0cHV0ICJsb2dpY2FsX2Jsa19udW0iIHZpYSAvcHJvYworICogICAgICAgICAgICAgICAgICAgMikgb3V0cHV0ICJjdXJyZW50X29wZXJhdGlvbiIgdmlhIC9wcm9jCisgKiAgICAgICAgICAgICAgICAgICAzKSBFaXRoZXIgc29sdmUgb3IgZG9jdW1lbnQgdGhlIGZhY3QgdGhhdCBgbXQgcmV3aW5kJyBpcworICogICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQgYWZ0ZXIgcmVhZGluZyBmcm9tIC9kZXYvbmh0eCB0byBiZQorICoJCQlhYmxlIHRvIHJtbW9kIHRoZSBpZGV0YXBlIG1vZHVsZTsKKyAqCQkJQWxzbywgc29tZXRpbWVzIGFuIGFwcGxpY2F0aW9uIGZpbmlzaGVzIGJ1dCB0aGUKKyAqCQkJZGV2aWNlIHJlbWFpbnMgYGJ1c3knIGZvciBzb21lIHRpbWUuIFNhbWUgY2F1c2UgPworICogICAgICAgICAgICAgICAgICAgUHJvcG9zZWQgY2hhbmdlcyB0byByZWxlYXNlLW5vdGVzOgorICoJCSAgICAgNCkgd3JpdGUgYSBzaW1wbGUgYHF1aWNrc3RhcnQnIHNlY3Rpb24gaW4gdGhlCisgKiAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlIG5vdGVzOyBJIHZvbHVudGVlciBpZiB5b3UgZG9uJ3Qgd2FudCB0bworICoJCSAgICAgNSkgaW5jbHVkZSBhIHBvaW50ZXIgdG8gdmlkZW80bGludXggaW4gdGhlIGRvYworICogICAgICAgICAgICAgICAgICAgICAgdG8gc3RpbXVsYXRlIHZpZGVvIGFwcGxpY2F0aW9ucworICogICAgICAgICAgICAgICAgICAgNikgcmVsZWFzZSBub3RlcyBsaW5lcyAzMzEgYW5kIDM2MjogZXhwbGFpbiB3aGF0IGhhcHBlbnMKKyAqCQkJaWYgdGhlIGFwcGxpY2F0aW9uIGRhdGEgcmF0ZSBpcyBoaWdoZXIgdGhhbiAxMTAwIEtCL3M7CisgKgkJCXNpbWlsYXIgYXBwcm9hY2ggdG8gbG93ZXItdGhhbi01MDAga0IvcyA/CisgKgkJICAgICA3KSA2LjYgQ29tcGFyaXNvbjsgd291bGRuJ3QgaXQgYmUgYmV0dGVyIHRvIGFsbG93IGRpZmZlcmVudAorICoJCQlzdHJhdGVnaWVzIGZvciByZWFkIGFuZCB3cml0ZSA/CisgKgkJCVdvdWxkbid0IGl0IGJlIGJldHRlciB0byBjb250cm9sIHRoZSB0YXBlIGJ1ZmZlcgorICoJCQljb250ZW50cyBpbnN0ZWFkIG9mIHRoZSBiYW5kd2lkdGggPworICoJCSAgICAgOCkgbGluZSA1MzY6IHJlcGxhY2Ugd2lsbCBieSB3b3VsZCAoaWYgSSB1bmRlcnN0YW5kCisgKgkJCXRoaXMgc2VjdGlvbiBjb3JyZWN0bHksIGEgaHlwb3RoZXRpY2FsIGFuZCB1bndhbnRlZCBzaXR1YXRpb24KKyAqCQkJIGlzIGJlaW5nIGRlc2NyaWJlZCkKKyAqIFZlciAxLjE2ZiBEZWMgMTUgOTkgICBDaGFuZ2UgcGxhY2Ugb2YgdGhlIHNlY29uZGFyeSBPblN0cmVhbSBoZWFkZXIgZnJhbWVzLgorICogVmVyIDEuMTcgIE5vdiAyMDAwIC8gSmFuIDIwMDEgIE1hcmNlbCBNb2wsIG1hcmNlbEBtZXNhLm5sCisgKgkJCS0gQWRkIGlkZXRhcGVfb25zdHJlYW1fbW9kZV9zZW5zZV90YXBlX3BhcmFtZXRlcl9wYWdlCisgKgkJCSAgZnVuY3Rpb24gdG8gZ2V0IHRhcGUgY2FwYWNpdHkgaW4gZnJhbWVzOiB0YXBlLT5jYXBhY2l0eS4KKyAqCQkJLSBBZGQgc3VwcG9ydCBmb3IgREktNTAgZHJpdmVzKCBvciBhbnkgREktIGRyaXZlKS4KKyAqCQkJLSAnd29ya2Fyb3VuZCcgZm9yIHJlYWQgZXJyb3IvYmxhbmsgYmxvY2sgYXJvdW5kIGJsb2NrIDMwMDAuCisgKgkJCS0gSW1wbGVtZW50IEVhcmx5IHdhcm5pbmcgZm9yIGVuZCBvZiBtZWRpYSBmb3IgT25zdHJlYW0uCisgKgkJCS0gQ29zbWV0aWMgY29kZSBjaGFuZ2VzIGZvciByZWFkYWJpbGl0eS4KKyAqCQkJLSBJZGV0YXBlX3Bvc2l0aW9uX3RhcGUgc2hvdWxkIG5vdCB1c2UgU0tJUCBiaXQgZHVyaW5nCisgKgkJCSAgT25zdHJlYW0gcmVhZCByZWNvdmVyeS4KKyAqCQkJLSBBZGQgY2FwYWNpdHksIGxvZ2ljYWxfYmxrX251bSBhbmQgZmlyc3QvbGFzdF9mcmFtZV9wb3NpdGlvbgorICoJCQkgIHRvIC9wcm9jL2lkZS9oZD8vc2V0dGluZ3MuCisgKgkJCS0gTW9kdWxlIHVzZSBjb3VudCB3YXMgZ29uZSBpbiB0aGUgTGludXggMi40IGRyaXZlci4KKyAqIFZlciAxLjE3YSBBcHIgMjAwMSBXaWxsZW0gUmllZGUgb3NzdEByaWVkZS5vcmcKKyAqCQkJLSBHZXQgZHJpdmUncyBhY3R1YWwgYmxvY2sgc2l6ZSBmcm9tIG1vZGUgc2Vuc2UgYmxvY2sgZGVzY3JpcHRvcgorICoJCQktIExpbWl0IHNpemUgb2YgcGlwZWxpbmUKKyAqIFZlciAxLjE3YiBPY3QgMjAwMiAgIEFsYW4gU3Rlcm4gPHN0ZXJuQHJvd2xhbmQuaGFydmFyZC5lZHU+CisgKgkJCUNoYW5nZWQgSURFVEFQRV9NSU5fUElQRUxJTkVfU1RBR0VTIHRvIDEgYW5kIGFjdHVhbGx5IHVzZWQKKyAqCQkJIGl0IGluIHRoZSBjb2RlIQorICoJCQlBY3R1YWxseSByZW1vdmVkIGFib3J0ZWQgc3RhZ2VzIGluIGlkZXRhcGVfYWJvcnRfcGlwZWxpbmUKKyAqCQkJIGluc3RlYWQgb2YganVzdCBjaGFuZ2luZyB0aGUgY29tbWFuZCBjb2RlLgorICoJCQlNYWRlIHRoZSB0cmFuc2ZlciBieXRlIGNvdW50IGZvciBSZXF1ZXN0IFNlbnNlIGVxdWFsIHRvIHRoZQorICoJCQkgYWN0dWFsIGxlbmd0aCBvZiB0aGUgZGF0YSB0cmFuc2Zlci4KKyAqCQkJQ2hhbmdlZCBoYW5kbGluZyBvZiBwYXJ0aWFsIGRhdGEgdHJhbnNmZXJzOiB0aGV5IGRvIG5vdAorICoJCQkgY2F1c2UgRE1BIGVycm9ycy4KKyAqCQkJTW92ZWQgaW5pdGlhdGlvbiBvZiBETUEgdHJhbnNmZXJzIHRvIHRoZSBjb3JyZWN0IHBsYWNlLgorICoJCQlSZW1vdmVkIHJlZmVyZW5jZSB0byB1bmFsbG9jYXRlZCBtZW1vcnkuCisgKgkJCU1hZGUgX19pZGV0YXBlX2Rpc2NhcmRfcmVhZF9waXBlbGluZSByZXR1cm4gdGhlIG51bWJlciBvZgorICoJCQkgc2VjdG9ycyBza2lwcGVkLCBub3QgdGhlIG51bWJlciBvZiBzdGFnZXMuCisgKgkJCVJlcGxhY2VkIGVycmFudCBrZnJlZSgpIGNhbGxzIHdpdGggX19pZGV0YXBlX2tmcmVlX3N0YWdlKCkuCisgKgkJCUZpeGVkIG9mZi1ieS1vbmUgZXJyb3IgaW4gdGVzdGluZyB0aGUgcGlwZWxpbmUgbGVuZ3RoLgorICoJCQlGaXhlZCBoYW5kbGluZyBvZiBmaWxlbWFya3MgaW4gdGhlIHJlYWQgcGlwZWxpbmUuCisgKgkJCVNtYWxsIGNvZGUgb3B0aW1pemF0aW9uIGZvciBNVEJTRiBhbmQgTVRCU0ZNIGlvY3Rscy4KKyAqCQkJRG9uJ3QgdHJ5IHRvIHVubG9jayB0aGUgZG9vciBkdXJpbmcgZGV2aWNlIGNsb3NlIGlmIGlzCisgKgkJCSBhbHJlYWR5IHVubG9ja2VkIQorICoJCQlDb3NtZXRpYyBmaXhlcyB0byBtaXNjZWxsYW5lb3VzIGRlYnVnZ2luZyBvdXRwdXQgbWVzc2FnZXMuCisgKgkJCVNldCB0aGUgbWluaW11bSAvcHJvYy9pZGUvaGQ/L3NldHRpbmdzIHZhbHVlcyBmb3IgInBpcGVsaW5lIiwKKyAqCQkJICJwaXBlbGluZV9taW4iLCBhbmQgInBpcGVsaW5lX21heCIgdG8gMS4KKyAqLwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pZGUvaWRlLXRhcGUudHh0IGIvRG9jdW1lbnRhdGlvbi9pZGUvaWRlLXRhcGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmMzQ4YTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lkZS9pZGUtdGFwZS50eHQKQEAgLTAsMCArMSw2NSBAQAorSURFIEFUQVBJIHN0cmVhbWluZyB0YXBlIGRyaXZlci4KKworVGhpcyBkcml2ZXIgaXMgYSBwYXJ0IG9mIHRoZSBMaW51eCBpZGUgZHJpdmVyLgorCitUaGUgZHJpdmVyLCBpbiBjby1vcGVyYXRpb24gd2l0aCBpZGUuYywgYmFzaWNhbGx5IHRyYXZlcnNlcyB0aGUKK3JlcXVlc3QtbGlzdCBmb3IgdGhlIGJsb2NrIGRldmljZSBpbnRlcmZhY2UuIFRoZSBjaGFyYWN0ZXIgZGV2aWNlCitpbnRlcmZhY2UsIG9uIHRoZSBvdGhlciBoYW5kLCBjcmVhdGVzIG5ldyByZXF1ZXN0cywgYWRkcyB0aGVtCit0byB0aGUgcmVxdWVzdC1saXN0IG9mIHRoZSBibG9jayBkZXZpY2UsIGFuZCB3YWl0cyBmb3IgdGhlaXIgY29tcGxldGlvbi4KKworVGhlIGJsb2NrIGRldmljZSBtYWpvciBhbmQgbWlub3IgbnVtYmVycyBhcmUgZGV0ZXJtaW5lZCBmcm9tIHRoZQordGFwZSdzIHJlbGF0aXZlIHBvc2l0aW9uIGluIHRoZSBpZGUgaW50ZXJmYWNlcywgYXMgZXhwbGFpbmVkIGluIGlkZS5jLgorCitUaGUgY2hhcmFjdGVyIGRldmljZSBpbnRlcmZhY2UgY29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZyBkZXZpY2VzOgorCitodDAJCW1ham9yIDM3LCBtaW5vciAwCWZpcnN0ICBJREUgdGFwZSwgcmV3aW5kIG9uIGNsb3NlLgoraHQxCQltYWpvciAzNywgbWlub3IgMQlzZWNvbmQgSURFIHRhcGUsIHJld2luZCBvbiBjbG9zZS4KKy4uLgorbmh0MAkJbWFqb3IgMzcsIG1pbm9yIDEyOAlmaXJzdCAgSURFIHRhcGUsIG5vIHJld2luZCBvbiBjbG9zZS4KK25odDEJCW1ham9yIDM3LCBtaW5vciAxMjkJc2Vjb25kIElERSB0YXBlLCBubyByZXdpbmQgb24gY2xvc2UuCisuLi4KKworVGhlIGdlbmVyYWwgbWFnbmV0aWMgdGFwZSBjb21tYW5kcyBjb21wYXRpYmxlIGludGVyZmFjZSwgYXMgZGVmaW5lZCBieQoraW5jbHVkZS9saW51eC9tdGlvLmgsIGlzIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgY2hhcmFjdGVyIGRldmljZS4KKworR2VuZXJhbCBpZGUgZHJpdmVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc3VjaCBhcyB0aGUgaW50ZXJydXB0LXVubWFzaworZmxhZywgY2FuIGJlIGNvbmZpZ3VyZWQgYnkgaXNzdWluZyBhbiBpb2N0bCB0byB0aGUgYmxvY2sgZGV2aWNlIGludGVyZmFjZSwKK2FzIGFueSBvdGhlciBpZGUgZGV2aWNlLgorCitPdXIgb3duIGlkZS10YXBlIGlvY3RsJ3MgY2FuIGJlIGlzc3VlZCB0byBlaXRoZXIgdGhlIGJsb2NrIGRldmljZSBvcgordGhlIGNoYXJhY3RlciBkZXZpY2UgaW50ZXJmYWNlLgorCitNYXhpbWFsIHRocm91Z2hwdXQgd2l0aCBtaW5pbWFsIGJ1cyBsb2FkIHdpbGwgdXN1YWxseSBiZSBhY2hpZXZlZCBpbiB0aGUKK2ZvbGxvd2luZyBzY2VuYXJpbzoKKworICAgICAxLglpZGUtdGFwZSBpcyBvcGVyYXRpbmcgaW4gdGhlIHBpcGVsaW5lZCBvcGVyYXRpb24gbW9kZS4KKyAgICAgMi4JTm8gYnVmZmVyaW5nIGlzIHBlcmZvcm1lZCBieSB0aGUgdXNlciBiYWNrdXAgcHJvZ3JhbS4KKworVGVzdGluZyB3YXMgZG9uZSB3aXRoIGEgMiBHQiBDT05ORVIgQ1RNQSA0MDAwIElERSBBVEFQSSBTdHJlYW1pbmcgVGFwZSBEcml2ZS4KKworSGVyZSBhcmUgc29tZSB3b3JkcyBmcm9tIHRoZSBmaXJzdCByZWxlYXNlcyBvZiBoZC5jLCB3aGljaCBhcmUgcXVvdGVkCitpbiBpZGUuYyBhbmQgYXBwbHkgaGVyZSBhcyB3ZWxsOgorCit8IFNwZWNpYWwgY2FyZSBpcyByZWNvbW1lbmRlZC4gIEhhdmUgRnVuIQorCitQb3NzaWJsZSBpbXByb3ZlbWVudHM6CisKKzEuIFN1cHBvcnQgZm9yIHRoZSBBVEFQSSBvdmVybGFwIHByb3RvY29sLgorCitJbiBvcmRlciB0byBtYXhpbWl6ZSBidXMgdGhyb3VnaHB1dCwgd2UgY3VycmVudGx5IHVzZSB0aGUgRFNDCitvdmVybGFwIG1ldGhvZCB3aGljaCBlbmFibGVzIGlkZS5jIHRvIHNlcnZpY2UgcmVxdWVzdHMgZnJvbSB0aGUKK290aGVyIGRldmljZSB3aGlsZSB0aGUgdGFwZSBpcyBidXN5IGV4ZWN1dGluZyBhIGNvbW1hbmQuIFRoZQorRFNDIG92ZXJsYXAgbWV0aG9kIGludm9sdmVzIHBvbGxpbmcgdGhlIHRhcGUncyBzdGF0dXMgcmVnaXN0ZXIKK2ZvciB0aGUgRFNDIGJpdCwgYW5kIHNlcnZpY2luZyB0aGUgb3RoZXIgZGV2aWNlIHdoaWxlIHRoZSB0YXBlCitpc24ndCByZWFkeS4KKworSW4gdGhlIGN1cnJlbnQgUUlDIGRldmVsb3BtZW50IHN0YW5kYXJkIChEZWNlbWJlciAxOTk1KSwKK2l0IGlzIHJlY29tbWVuZGVkIHRoYXQgbmV3IHRhcGUgZHJpdmVzIHdpbGwgKmluIGFkZGl0aW9uKgoraW1wbGVtZW50IHRoZSBBVEFQSSBvdmVybGFwIHByb3RvY29sLCB3aGljaCBpcyB1c2VkIGZvciB0aGUKK3NhbWUgcHVycG9zZSAtIGVmZmljaWVudCB1c2Ugb2YgdGhlIElERSBidXMsIGJ1dCBpcyBpbnRlcnJ1cHQKK2RyaXZlbiBhbmQgdGh1cyBoYXMgbXVjaCBsZXNzIENQVSBvdmVyaGVhZC4KKworQVRBUEkgb3ZlcmxhcCBpcyBsaWtlbHkgdG8gYmUgc3VwcG9ydGVkIGluIG1vc3QgbmV3IEFUQVBJCitkZXZpY2VzLCBpbmNsdWRpbmcgbmV3IEFUQVBJIGNkcm9tcywgYW5kIHRodXMgcHJvdmlkZXMgdXMKK2EgbWV0aG9kIGJ5IHdoaWNoIHdlIGNhbiBhY2hpZXZlIGhpZ2hlciB0aHJvdWdocHV0IHdoZW4KK3NoYXJpbmcgYSAoZmFzdCkgQVRBLTIgZGlzayB3aXRoIGFueSAoc2xvdykgbmV3IEFUQVBJIGRldmljZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaWRlL2lkZS50eHQgYi9Eb2N1bWVudGF0aW9uL2lkZS9pZGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhY2E5ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lkZS9pZGUudHh0CkBAIC0wLDAgKzEsMjU2IEBACisKKwlJbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIEVuaGFuY2VkIElERSBkcml2ZSBpbiBMaW51eCAyLjYKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworICAgVGhlIGhkcGFybSB1dGlsaXR5IGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgdmFyaW91cyBJREUgZmVhdHVyZXMgb24gYQorICAgcnVubmluZyBzeXN0ZW0uIEl0IGlzIHBhY2thZ2VkIHNlcGFyYXRlbHkuICBQbGVhc2UgTG9vayBmb3IgaXQgb24gcG9wdWxhcgorICAgbGludXggRlRQIHNpdGVzLgorCisKKworKioqICBJTVBPUlRBTlQgTk9USUNFUzogIEJVR0dZIElERSBDSElQU0VUUyBDQU4gQ09SUlVQVCBEQVRBISEKKyoqKiAgPT09PT09PT09PT09PT09PT0KKyoqKiAgUENJIHZlcnNpb25zIG9mIHRoZSBDTUQ2NDAgYW5kIFJaMTAwMCBpbnRlcmZhY2VzIGFyZSBub3cgZGV0ZWN0ZWQKKyoqKiAgYXV0b21hdGljYWxseSBhdCBzdGFydHVwIHdoZW4gUENJIEJJT1Mgc3VwcG9ydCBpcyBjb25maWd1cmVkLgorKioqCisqKiogIExpbnV4IGRpc2FibGVzIHRoZSAicHJlZmV0Y2giICgicmVhZGFoZWFkIikgbW9kZSBvZiB0aGUgUloxMDAwCisqKiogIHRvIHByZXZlbnQgZGF0YSBjb3JydXB0aW9uIHBvc3NpYmxlIGR1ZSB0byBoYXJkd2FyZSBkZXNpZ24gZmxhd3MuCisqKioKKyoqKiAgRm9yIHRoZSBDTUQ2NDAsIGxpbnV4IGRpc2FibGVzICJJUlEgdW5tYXNraW5nIiAoaGRwYXJtIC11MSkgb24gYW55CisqKiogIGRyaXZlIGZvciB3aGljaCB0aGUgInByZWZldGNoIiBtb2RlIG9mIHRoZSBDTUQ2NDAgaXMgdHVybmVkIG9uLgorKioqICBJZiAicHJlZmV0Y2giIGlzIGRpc2FibGVkIChoZHBhcm0gLXA4KSwgdGhlbiAiSVJRIHVubWFza2luZyIgY2FuIGJlCisqKiogIHVzZWQgYWdhaW4uCisqKioKKyoqKiAgRm9yIHRoZSBDTUQ2NDAsIGxpbnV4IGRpc2FibGVzICIzMmJpdCBJL08iIChoZHBhcm0gLWMxKSBvbiBhbnkgZHJpdmUKKyoqKiAgZm9yIHdoaWNoIHRoZSAicHJlZmV0Y2giIG1vZGUgb2YgdGhlIENNRDY0MCBpcyB0dXJuZWQgb2ZmLgorKioqICBJZiAicHJlZmV0Y2giIGlzIGVuYWJsZWQgKGhkcGFybSAtcDkpLCB0aGVuICIzMmJpdCBJL08iIGNhbiBiZQorKioqICB1c2VkIGFnYWluLgorKioqCisqKiogIFRoZSBDTUQ2NDAgaXMgYWxzbyB1c2VkIG9uIHNvbWUgVmVzYSBMb2NhbCBCdXMgKFZMQikgY2FyZHMsIGFuZCBpcyAqTk9UKgorKioqICBhdXRvbWF0aWNhbGx5IGRldGVjdGVkIGJ5IExpbnV4LiAgRm9yIHNhZmUsIHJlbGlhYmxlIG9wZXJhdGlvbiB3aXRoIHN1Y2gKKyoqKiAgaW50ZXJmYWNlcywgb25lICpNVVNUKiB1c2UgdGhlICJjbWQ2NDAucHJvYmVfdmxiIiBrZXJuZWwgb3B0aW9uLgorKioqCisqKiogIFVzZSBvZiB0aGUgInNlcmlhbGl6ZSIgb3B0aW9uIGlzIG5vIGxvbmdlciBuZWNlc3NhcnkuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDb21tb24gcGl0ZmFsbHM6CisKKy0gNDAtY29uZHVjdG9yIElERSBjYWJsZXMgYXJlIGNhcGFibGUgb2YgdHJhbnNmZXJyaW5nIGRhdGEgaW4gRE1BIG1vZGVzIHVwIHRvCisgIHVkbWEyLCBidXQgbm8gZmFzdGVyLgorCistIElmIHBvc3NpYmxlIGRldmljZXMgc2hvdWxkIGJlIGF0dGFjaGVkIHRvIHNlcGFyYXRlIGNoYW5uZWxzIGlmIHRoZXkgYXJlCisgIGF2YWlsYWJsZS4gVHlwaWNhbGx5IHRoZSBkaXNrIG9uIHRoZSBmaXJzdCBhbmQgQ0QtUk9NIG9uIHRoZSBzZWNvbmQuCisKKy0gSWYgeW91IG1peCBkZXZpY2VzIG9uIHRoZSBzYW1lIGNhYmxlLCBwbGVhc2UgY29uc2lkZXIgdXNpbmcgc2ltaWxhciBkZXZpY2VzCisgIGluIHJlc3BlY3Qgb2YgdGhlIGRhdGEgdHJhbnNmZXIgbW9kZSB0aGV5IHN1cHBvcnQuCisKKy0gRXZlbiBiZXR0ZXIgdHJ5IHRvIHN0aWNrIHRvIHRoZSBzYW1lIHZlbmRvciBhbmQgZGV2aWNlIHR5cGUgb24gdGhlIHNhbWUKKyAgY2FibGUuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgaXMgdGhlIG11bHRpcGxlIElERSBpbnRlcmZhY2UgZHJpdmVyLCBhcyBldm9sdmVkIGZyb20gaGQuYy4KKworSXQgc3VwcG9ydHMgdXAgdG8gOSBJREUgaW50ZXJmYWNlcyBwZXIgZGVmYXVsdCwgb24gb25lIG9yIG1vcmUgSVJRcyAodXN1YWxseQorMTQgJiAxNSkuICBUaGVyZSBjYW4gYmUgdXAgdG8gdHdvIGRyaXZlcyBwZXIgaW50ZXJmYWNlLCBhcyBwZXIgdGhlIEFUQS02IHNwZWMuCisKK1ByaW1hcnk6ICAgIGlkZTAsIHBvcnQgMHgxZjA7IG1ham9yPTM7ICBoZGEgaXMgbWlub3I9MDsgaGRiIGlzIG1pbm9yPTY0CitTZWNvbmRhcnk6ICBpZGUxLCBwb3J0IDB4MTcwOyBtYWpvcj0yMjsgaGRjIGlzIG1pbm9yPTA7IGhkZCBpcyBtaW5vcj02NAorVGVydGlhcnk6ICAgaWRlMiwgcG9ydCAweDFlODsgbWFqb3I9MzM7IGhkZSBpcyBtaW5vcj0wOyBoZGYgaXMgbWlub3I9NjQKK1F1YXRlcm5hcnk6IGlkZTMsIHBvcnQgMHgxNjg7IG1ham9yPTM0OyBoZGcgaXMgbWlub3I9MDsgaGRoIGlzIG1pbm9yPTY0CitmaWZ0aC4uICAgICBpZGU0LCB1c3VhbGx5IFBDSSwgcHJvYmVkCitzaXh0aC4uICAgICBpZGU1LCB1c3VhbGx5IFBDSSwgcHJvYmVkCisKK1RvIGFjY2VzcyBkZXZpY2VzIG9uIGludGVyZmFjZXMgPiBpZGUwLCBkZXZpY2UgZW50cmllcyBwbGVhc2UgbWFrZSBzdXJlIHRoYXQKK2RldmljZSBmaWxlcyBmb3IgdGhlbSBhcmUgcHJlc2VudCBpbiAvZGV2LiAgSWYgbm90LCBwbGVhc2UgY3JlYXRlIHN1Y2gKK2VudHJpZXMsIGJ5IHVzaW5nIC9kZXYvTUFLRURFVi4KKworVGhpcyBkcml2ZXIgYXV0b21hdGljYWxseSBwcm9iZXMgZm9yIG1vc3QgSURFIGludGVyZmFjZXMgKGluY2x1ZGluZyBhbGwgUENJCitvbmVzKSwgZm9yIHRoZSBkcml2ZXMvZ2VvbWV0cmllcyBhdHRhY2hlZCB0byB0aG9zZSBpbnRlcmZhY2VzLCBhbmQgZm9yIHRoZSBJUlEKK2xpbmVzIGJlaW5nIHVzZWQgYnkgdGhlIGludGVyZmFjZXMgKG5vcm1hbGx5IDE0LCAxNSBmb3IgaWRlMC9pZGUxKS4KKworQW55IG51bWJlciBvZiBpbnRlcmZhY2VzIG1heSBzaGFyZSBhIHNpbmdsZSBJUlEgaWYgbmVjZXNzYXJ5LCBhdCBhIHNsaWdodAorcGVyZm9ybWFuY2UgcGVuYWx0eSwgd2hldGhlciBvbiBzZXBhcmF0ZSBjYXJkcyBvciBhIHNpbmdsZSBWTEIgY2FyZC4KK1RoZSBJREUgZHJpdmVyIGF1dG9tYXRpY2FsbHkgZGV0ZWN0cyBhbmQgaGFuZGxlcyB0aGlzLiAgSG93ZXZlciwgdGhpcyBtYXkKK29yIG1heSBub3QgYmUgaGFybWZ1bCB0byB5b3VyIGhhcmR3YXJlLi4gdHdvIG9yIG1vcmUgY2FyZHMgZHJpdmluZyB0aGUgc2FtZSBJUlEKK2NhbiBwb3RlbnRpYWxseSBidXJuIGVhY2ggb3RoZXIncyBidXMgZHJpdmVyLCB0aG91Z2ggaW4gcHJhY3RpY2UgdGhpcworc2VsZG9tIG9jY3Vycy4gIEJlIGNhcmVmdWwsIGFuZCBpZiBpbiBkb3VidCwgZG9uJ3QgZG8gaXQhCisKK0RyaXZlcyBhcmUgbm9ybWFsbHkgZm91bmQgYnkgYXV0by1wcm9iaW5nIGFuZC9vciBleGFtaW5pbmcgdGhlIENNT1MvQklPUyBkYXRhLgorRm9yIHJlYWxseSB3ZWlyZCBzaXR1YXRpb25zLCB0aGUgYXBwYXJlbnQgKGZkaXNrKSBnZW9tZXRyeSBjYW4gYWxzbyBiZSBzcGVjaWZpZWQKK29uIHRoZSBrZXJuZWwgImNvbW1hbmQgbGluZSIgdXNpbmcgTElMTy4gIFRoZSBmb3JtYXQgb2Ygc3VjaCBsaW5lcyBpczoKKworCWlkZV9jb3JlLmNocz1baW50ZXJmYWNlX251bWJlci5kZXZpY2VfbnVtYmVyXTpjeWxzLGhlYWRzLHNlY3RzCitvcglpZGVfY29yZS5jZHJvbT1baW50ZXJmYWNlX251bWJlci5kZXZpY2VfbnVtYmVyXQorCitGb3IgZXhhbXBsZToKKworCWlkZV9jb3JlLmNocz0xLjA6MTA1MCwzMiw2NCAgaWRlX2NvcmUuY2Ryb209MS4xCisKK1RoZSByZXN1bHRzIG9mIHN1Y2Nlc3NmdWwgYXV0by1wcm9iaW5nIG1heSBvdmVycmlkZSB0aGUgcGh5c2ljYWwgZ2VvbWV0cnkvaXJxCitzcGVjaWZpZWQsIHRob3VnaCB0aGUgIm9yaWdpbmFsIiBnZW9tZXRyeSBtYXkgYmUgcmV0YWluZWQgYXMgdGhlICJsb2dpY2FsIgorZ2VvbWV0cnkgZm9yIHBhcnRpdGlvbmluZyBwdXJwb3NlcyAoZmRpc2spLgorCitJZiB0aGUgYXV0by1wcm9iaW5nIGR1cmluZyBib290IHRpbWUgY29uZnVzZXMgYSBkcml2ZSAoaWUuIHRoZSBkcml2ZSB3b3Jrcword2l0aCBoZC5jIGJ1dCBub3Qgd2l0aCBpZGUuYyksIHRoZW4gYW4gY29tbWFuZCBsaW5lIG9wdGlvbiBtYXkgYmUgc3BlY2lmaWVkCitmb3IgZWFjaCBkcml2ZSBmb3Igd2hpY2ggeW91J2QgbGlrZSB0aGUgZHJpdmUgdG8gc2tpcCB0aGUgaGFyZHdhcmUKK3Byb2JlL2lkZW50aWZpY2F0aW9uIHNlcXVlbmNlLiAgRm9yIGV4YW1wbGU6CisKKwlpZGVfY29yZS5ub3Byb2JlPTAuMQorb3IKKwlpZGVfY29yZS5jaHM9MS4wOjc2OCwxNiwzMgorCWlkZV9jb3JlLm5vcHJvYmU9MS4wCisKK05vdGUgdGhhdCB3aGVuIG9ubHkgb25lIElERSBkZXZpY2UgaXMgYXR0YWNoZWQgdG8gYW4gaW50ZXJmYWNlLCBpdCBzaG91bGQgYmUKK2p1bXBlcmVkIGFzICJzaW5nbGUiIG9yICJtYXN0ZXIiLCAqbm90KiAic2xhdmUiLiAgTWFueSBmb2xrcyBoYXZlIGhhZAorInRyb3VibGUiIHdpdGggY2Ryb21zIGJlY2F1c2Ugb2YgdGhpcyByZXF1aXJlbWVudCwgc28gdGhlIGRyaXZlciBub3cgcHJvYmVzCitmb3IgYm90aCB1bml0cywgdGhvdWdoIHN1Y2Nlc3MgaXMgbW9yZSBsaWtlbHkgd2hlbiB0aGUgZHJpdmUgaXMganVtcGVyZWQKK2NvcnJlY3RseS4KKworQ291cnRlc3kgb2YgU2NvdHQgU255ZGVyIGFuZCBvdGhlcnMsIHRoZSBkcml2ZXIgc3VwcG9ydHMgQVRBUEkgY2Ryb20gZHJpdmVzCitzdWNoIGFzIHRoZSBORUMtMjYwIGFuZCB0aGUgbmV3IE1JVFNVTUkgdHJpcGxlL3F1YWQgc3BlZWQgZHJpdmVzLgorU3VjaCBkcml2ZXMgd2lsbCBiZSBpZGVudGlmaWVkIGF0IGJvb3QgdGltZSwganVzdCBsaWtlIGEgaGFyZCBkaXNrLgorCitJZiBmb3Igc29tZSByZWFzb24geW91ciBjZHJvbSBkcml2ZSBpcyAqbm90KiBmb3VuZCBhdCBib290IHRpbWUsIHlvdSBjYW4gZm9yY2UKK3RoZSBwcm9iZSB0byBsb29rIGhhcmRlciBieSBzdXBwbHlpbmcgYSBrZXJuZWwgY29tbWFuZCBsaW5lIHBhcmFtZXRlcgordmlhIExJTE8sIHN1Y2ggYXM6CisKKwlpZGVfY29yZS5jZHJvbT0xLjAJLyogIm1hc3RlciIgb24gc2Vjb25kIGludGVyZmFjZSAoaGRjKSAqLworb3IKKwlpZGVfY29yZS5jZHJvbT0xLjEJLyogInNsYXZlIiBvbiBzZWNvbmQgaW50ZXJmYWNlIChoZGQpICovCisKK0ZvciBleGFtcGxlLCBhIEdXMjAwMCBzeXN0ZW0gbWlnaHQgaGF2ZSBhIGhhcmQgZHJpdmUgb24gdGhlIHByaW1hcnkKK2ludGVyZmFjZSAoL2Rldi9oZGEpIGFuZCBhbiBJREUgY2Ryb20gZHJpdmUgb24gdGhlIHNlY29uZGFyeSBpbnRlcmZhY2UKKygvZGV2L2hkYykuICBUbyBtb3VudCBhIENEIGluIHRoZSBjZHJvbSBkcml2ZSwgb25lIHdvdWxkIHVzZSBzb21ldGhpbmcgbGlrZToKKworCWxuIC1zZiAvZGV2L2hkYyAvZGV2L2Nkcm9tCisJbWtkaXIgL21udC9jZHJvbQorCW1vdW50IC9kZXYvY2Ryb20gL21udC9jZHJvbSAtdCBpc285NjYwIC1vIHJvCisKK0lmLCBhZnRlciBkb2luZyBhbGwgb2YgdGhlIGFib3ZlLCBtb3VudCBkb2Vzbid0IHdvcmsgYW5kIHlvdSBzZWUKK2Vycm9ycyBmcm9tIHRoZSBkcml2ZXIgKHdpdGggZG1lc2cpIGNvbXBsYWluaW5nIGFib3V0IGBzdGF0dXM9MHhmZicsCit0aGlzIG1lYW5zIHRoYXQgdGhlIGhhcmR3YXJlIGlzIG5vdCByZXNwb25kaW5nIHRvIHRoZSBkcml2ZXIncyBhdHRlbXB0cwordG8gcmVhZCBpdC4gIE9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHByb2JhYmx5IHRoZSBwcm9ibGVtOgorCisgIC0gWW91ciBoYXJkd2FyZSBpcyBicm9rZW4uCisKKyAgLSBZb3UgYXJlIHVzaW5nIHRoZSB3cm9uZyBhZGRyZXNzIGZvciB0aGUgZGV2aWNlLCBvciB5b3UgaGF2ZSB0aGUKKyAgICBkcml2ZSBqdW1wZXJlZCB3cm9uZy4gIFJldmlldyB0aGUgY29uZmlndXJhdGlvbiBpbnN0cnVjdGlvbnMgYWJvdmUuCisKKyAgLSBZb3VyIElERSBjb250cm9sbGVyIHJlcXVpcmVzIHNvbWUgbm9uc3RhbmRhcmQgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UKKyAgICBiZWZvcmUgaXQgd2lsbCB3b3JrIHByb3Blcmx5LiAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgdGhlcmUgd2lsbCBvZnRlbgorICAgIGJlIGEgc2VwYXJhdGUgTVMtRE9TIGRyaXZlciBqdXN0IGZvciB0aGUgY29udHJvbGxlci4gIElERSBpbnRlcmZhY2VzCisgICAgb24gc291bmQgY2FyZHMgdXN1YWxseSBmYWxsIGludG8gdGhpcyBjYXRlZ29yeS4gIFN1Y2ggY29uZmlndXJhdGlvbnMKKyAgICBjYW4gb2Z0ZW4gYmUgbWFkZSB0byB3b3JrIGJ5IGZpcnN0IGJvb3RpbmcgTVMtRE9TLCBsb2FkaW5nIHRoZQorICAgIGFwcHJvcHJpYXRlIGRyaXZlcnMsIGFuZCB0aGVuIHdhcm0tYm9vdGluZyBsaW51eCAod2l0aG91dCBwb3dlcmluZworICAgIG9mZikuICBUaGlzIGNhbiBiZSBhdXRvbWF0ZWQgdXNpbmcgbG9hZGxpbiBpbiB0aGUgTVMtRE9TIGF1dG9leGVjLgorCitJZiB5b3UgYWx3YXlzIGdldCB0aW1lb3V0IGVycm9ycywgaW50ZXJydXB0cyBmcm9tIHRoZSBkcml2ZSBhcmUgcHJvYmFibHkKK25vdCBtYWtpbmcgaXQgdG8gdGhlIGhvc3QuICBDaGVjayBob3cgeW91IGhhdmUgdGhlIGhhcmR3YXJlIGp1bXBlcmVkCithbmQgbWFrZSBzdXJlIGl0IG1hdGNoZXMgd2hhdCB0aGUgZHJpdmVyIGV4cGVjdHMgKHNlZSB0aGUgY29uZmlndXJhdGlvbgoraW5zdHJ1Y3Rpb25zIGFib3ZlKS4gIElmIHlvdSBoYXZlIGEgUENJIHN5c3RlbSwgYWxzbyBjaGVjayB0aGUgQklPUworc2V0dXA7IEkndmUgaGFkIG9uZSByZXBvcnQgb2YgYSBzeXN0ZW0gd2hpY2ggd2FzIHNoaXBwZWQgd2l0aCBJUlEgMTUKK2Rpc2FibGVkIGJ5IHRoZSBCSU9TLgorCitUaGUga2VybmVsIGlzIGFibGUgdG8gZXhlY3V0ZSBiaW5hcmllcyBkaXJlY3RseSBvZmYgb2YgdGhlIGNkcm9tLAorcHJvdmlkZWQgaXQgaXMgbW91bnRlZCB3aXRoIHRoZSBkZWZhdWx0IGJsb2NrIHNpemUgb2YgMTAyNCAoYXMgYWJvdmUpLgorCitQbGVhc2UgcGFzcyBvbiBhbnkgZmVlZGJhY2sgb24gYW55IG9mIHRoaXMgc3R1ZmYgdG8gdGhlIG1haW50YWluZXIsCit3aG9zZSBhZGRyZXNzIGNhbiBiZSBmb3VuZCBpbiBsaW51eC9NQUlOVEFJTkVSUy4KKworVGhlIElERSBkcml2ZXIgaXMgbW9kdWxhcml6ZWQuICBUaGUgaGlnaCBsZXZlbCBkaXNrL0NELVJPTS90YXBlL2Zsb3BweQorZHJpdmVycyBjYW4gYWx3YXlzIGJlIGNvbXBpbGVkIGFzIGxvYWRhYmxlIG1vZHVsZXMsIHRoZSBjaGlwc2V0IGRyaXZlcnMKK2NhbiBvbmx5IGJlIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCwgYW5kIHRoZSBjb3JlIGNvZGUgKGlkZS5jKSBjYW4gYmUKK2NvbXBpbGVkIGFzIGEgbG9hZGFibGUgbW9kdWxlIHByb3ZpZGVkIG5vIGNoaXBzZXQgc3VwcG9ydCBpcyBuZWVkZWQuCisKK1doZW4gdXNpbmcgaWRlLmMgYXMgYSBtb2R1bGUgaW4gY29tYmluYXRpb24gd2l0aCBrbW9kLCBhZGQ6CisKKwlhbGlhcyBibG9jay1tYWpvci0zIGlkZS1wcm9iZQorCit0byBhIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiAvZXRjL21vZHByb2JlLmQvLgorCitXaGVuIGlkZS5jIGlzIHVzZWQgYXMgYSBtb2R1bGUsIHlvdSBjYW4gcGFzcyBjb21tYW5kIGxpbmUgcGFyYW1ldGVycyB0byB0aGUKK2RyaXZlciB1c2luZyB0aGUgIm9wdGlvbnM9IiBrZXl3b3JkIHRvIGluc21vZCwgd2hpbGUgcmVwbGFjaW5nIGFueSAnLCcgd2l0aAorJzsnLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1N1bW1hcnkgb2YgaWRlIGRyaXZlciBwYXJhbWV0ZXJzIGZvciBrZXJuZWwgY29tbWFuZCBsaW5lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGb3IgbGVnYWN5IElERSBWTEIgaG9zdCBkcml2ZXJzIChhbGkxNHh4L2R0YzIyNzgvaHQ2NTYwYi9xZDY1eHgvdW1jODY3MikKK3lvdSBuZWVkIHRvIGV4cGxpY2l0bHkgZW5hYmxlIHByb2JpbmcgYnkgdXNpbmcgInByb2JlIiBrZXJuZWwgcGFyYW1ldGVyLAoraS5lLiB0byBlbmFibGUgcHJvYmluZyBmb3IgQUxJIE0xNHh4IGNoaXBzZXRzIChhbGkxNHh4IGhvc3QgZHJpdmVyKSB1c2U6CisKKyogImFsaTE0eHgucHJvYmUiIGJvb3Qgb3B0aW9uIHdoZW4gYWxpMTR4eCBkcml2ZXIgaXMgYnVpbHQtaW4gdGhlIGtlcm5lbAorCisqICJwcm9iZSIgbW9kdWxlIHBhcmFtZXRlciB3aGVuIGFsaTE0eHggZHJpdmVyIGlzIGNvbXBpbGVkIGFzIG1vZHVsZQorICAoIm1vZHByb2JlIGFsaTE0eHggcHJvYmUiKQorCitBbHNvIGZvciBsZWdhY3kgQ01ENjQwIGhvc3QgZHJpdmVyIChjbWQ2NDApIHlvdSBuZWVkIHRvIHVzZSAicHJvYmVfdmxiIgora2VybmVsIHBhcmVtZXRlciB0byBlbmFibGUgcHJvYmluZyBmb3IgVkxCIHZlcnNpb24gb2YgdGhlIGNoaXBzZXQgKFBDSSBvbmVzCithcmUgZGV0ZWN0ZWQgYXV0b21hdGljYWxseSkuCisKK1lvdSBhbHNvIG5lZWQgdG8gdXNlICJwcm9iZSIga2VybmVsIHBhcmFtZXRlciBmb3IgaWRlLTRkcml2ZXMgZHJpdmVyCisoc3VwcG9ydCBmb3IgSURFIGdlbmVyaWMgY2hpcHNldCB3aXRoIGZvdXIgZHJpdmVzIG9uIG9uZSBwb3J0KS4KKworVG8gZW5hYmxlIHN1cHBvcnQgZm9yIElERSBkb3VibGVycyBvbiBBbWlnYSB1c2UgImRvdWJsZXIiIGtlcm5lbCBwYXJhbWV0ZXIKK2ZvciBnYXlsZSBob3N0IGRyaXZlciAoaS5lLiAiZ2F5bGUuZG91YmxlciIgaWYgdGhlIGRyaXZlciBpcyBidWlsdC1pbikuCisKK1RvIGZvcmNlIGlnbm9yaW5nIGNhYmxlIGRldGVjdGlvbiAodGhpcyBzaG91bGQgYmUgbmVlZGVkIG9ubHkgaWYgeW91J3JlIHVzaW5nCitzaG9ydCA0MC13aXJlcyBjYWJsZSB3aGljaCBjYW5ub3QgYmUgYXV0b21hdGljYWxseSBkZXRlY3RlZCAtIGlmIHRoaXMgaXMgbm90CithIGNhc2UgcGxlYXNlIHJlcG9ydCBpdCBhcyBhIGJ1ZyBpbnN0ZWFkKSB1c2UgImlnbm9yZV9jYWJsZSIga2VybmVsIHBhcmFtZXRlcjoKKworKiAiaWRlX2NvcmUuaWdub3JlX2NhYmxlPVtpbnRlcmZhY2VfbnVtYmVyXSIgYm9vdCBvcHRpb24gaWYgSURFIGlzIGJ1aWx0LWluCisgIChpLmUuICJpZGVfY29yZS5pZ25vcmVfY2FibGU9MSIgdG8gZm9yY2UgaWdub3JpbmcgY2FibGUgZm9yICJpZGUxIikKKworKiAiaWdub3JlX2NhYmxlPVtpbnRlcmZhY2VfbnVtYmVyXSIgbW9kdWxlIHBhcmFtZXRlciAoZm9yIGlkZV9jb3JlIG1vZHVsZSkKKyAgaWYgSURFIGlzIGNvbXBpbGVkIGFzIG1vZHVsZQorCitPdGhlciBrZXJuZWwgcGFyYW1ldGVycyBmb3IgaWRlX2NvcmUgYXJlOgorCisqICJub2RtYT1baW50ZXJmYWNlX251bWJlci5kZXZpY2VfbnVtYmVyXSIgdG8gZGlzYWxsb3cgRE1BIGZvciBhIGRldmljZQorCisqICJub2ZsdXNoPVtpbnRlcmZhY2VfbnVtYmVyLmRldmljZV9udW1iZXJdIiB0byBkaXNhYmxlIGZsdXNoIHJlcXVlc3RzCisKKyogIm5vaHBhPVtpbnRlcmZhY2VfbnVtYmVyLmRldmljZV9udW1iZXJdIiB0byBkaXNhYmxlIEhvc3QgUHJvdGVjdGVkIEFyZWEKKworKiAibm9wcm9iZT1baW50ZXJmYWNlX251bWJlci5kZXZpY2VfbnVtYmVyXSIgdG8gc2tpcCBwcm9iaW5nCisKKyogIm5vd2Vycj1baW50ZXJmYWNlX251bWJlci5kZXZpY2VfbnVtYmVyXSIgdG8gaWdub3JlIHRoZSBXUkVSUl9TVEFUIGJpdAorCisqICJjZHJvbT1baW50ZXJmYWNlX251bWJlci5kZXZpY2VfbnVtYmVyXSIgdG8gZm9yY2UgZGV2aWNlIGFzIGEgQ0QtUk9NCisKKyogImNocz1baW50ZXJmYWNlX251bWJlci5kZXZpY2VfbnVtYmVyXSIgdG8gZm9yY2UgZGV2aWNlIGFzIGEgZGlzayAodXNpbmcgQ0hTKQorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitTb21lIFRlcm1pbm9sb2d5CistLS0tLS0tLS0tLS0tLS0tCitJREUgPSBJbnRlZ3JhdGVkIERyaXZlIEVsZWN0cm9uaWNzLCBtZWFuaW5nIHRoYXQgZWFjaCBkcml2ZSBoYXMgYSBidWlsdC1pbgorY29udHJvbGxlciwgd2hpY2ggaXMgd2h5IGFuICJJREUgaW50ZXJmYWNlIGNhcmQiIGlzIG5vdCBhICJjb250cm9sbGVyIGNhcmQiLgorCitBVEEgPSBBVCAodGhlIG9sZCBJQk0gMjg2IGNvbXB1dGVyKSBBdHRhY2htZW50IEludGVyZmFjZSwgYSBkcmFmdCBBbWVyaWNhbgorTmF0aW9uYWwgU3RhbmRhcmQgZm9yIGNvbm5lY3RpbmcgaGFyZCBkcml2ZXMgdG8gUENzLiAgVGhpcyBpcyB0aGUgb2ZmaWNpYWwKK25hbWUgZm9yICJJREUiLgorCitUaGUgbGF0ZXN0IHN0YW5kYXJkcyBkZWZpbmUgc29tZSBlbmhhbmNlbWVudHMsIGtub3duIGFzIHRoZSBBVEEtNiBzcGVjLAord2hpY2ggZ3JldyBvdXQgb2YgdmVuZG9yLXNwZWNpZmljICJFbmhhbmNlZCBJREUiIChFSURFKSBpbXBsZW1lbnRhdGlvbnMuCisKK0FUQVBJID0gQVRBIFBhY2tldCBJbnRlcmZhY2UsIGEgbmV3IHByb3RvY29sIGZvciBjb250cm9sbGluZyB0aGUgZHJpdmVzLAorc2ltaWxhciB0byBTQ1NJIHByb3RvY29scywgY3JlYXRlZCBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSBBVEEyIHN0YW5kYXJkLgorQVRBUEkgaXMgY3VycmVudGx5IHVzZWQgZm9yIGNvbnRyb2xsaW5nIENEUk9NLCBUQVBFIGFuZCBGTE9QUFkgKFpJUCBvcgorTFMxMjAvMjQwKSBkZXZpY2VzLCByZW1vdmFibGUgUi9XIGNhcnRyaWRnZXMsIGFuZCBmb3IgaGlnaCBjYXBhY2l0eSBoYXJkIGRpc2sKK2RyaXZlcy4KKworbWxvcmRAcG9ib3guY29tCistLQorCitXZWQgQXByIDE3IDIyOjUyOjQ0IENFU1QgMjAwMiBlZGl0ZWQgYnkgTWFyY2luIERhbGVja2ksIHRoZSBjdXJyZW50CittYWludGFpbmVyLgorCitXZWQgQXVnIDIwIDIyOjMxOjI5IENFU1QgMjAwMyB1cGRhdGVkIGlkZSBib290IG9wdGlvbnMgdG8gY3VycmVudCBpZGUuYworY29tbWVudHMgYXQgMi42LjAtdGVzdDQgdGltZS4gTWFjaWVqIFNvbHR5c2lhayA8c29sdEBkbnMudG94aWNmaWxtcy50dj4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaWRlL3dhcm0tcGx1Zy1ob3d0by50eHQgYi9Eb2N1bWVudGF0aW9uL2lkZS93YXJtLXBsdWctaG93dG8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MTUyYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lkZS93YXJtLXBsdWctaG93dG8udHh0CkBAIC0wLDAgKzEsMTggQEAKKworSURFIHdhcm0tcGx1ZyBIT1dUTworPT09PT09PT09PT09PT09PT09PQorCitUbyB3YXJtLXBsdWcgZGV2aWNlcyBvbiBhIHBvcnQgJ2lkZXgnOgorCisjIGVjaG8gLW4gIjEiID4gL3N5cy9jbGFzcy9pZGVfcG9ydC9pZGV4L2RlbGV0ZV9kZXZpY2VzCisKK3VucGx1ZyBvbGQgZGV2aWNlKHMpIGFuZCBwbHVnIG5ldyBkZXZpY2UocykKKworIyBlY2hvIC1uICIxIiA+IC9zeXMvY2xhc3MvaWRlX3BvcnQvaWRleC9zY2FuCisKK2RvbmUKKworTk9URTogcGxlYXNlIG1ha2Ugc3VyZSB0aGF0IHBhcnRpdGlvbnMgYXJlIHVubW91bnRlZCBhbmQgdGhhdCB0aGVyZSBhcmUKK25vIG90aGVyIGFjdGl2ZSByZWZlcmVuY2VzIHRvIGRldmljZXMgYmVmb3JlIGRvaW5nICJkZWxldGVfZGV2aWNlcyIgc3RlcCwKK2Fsc28gZG8gbm90IGF0dGVtcHQgInNjYW4iIHN0ZXAgb24gZGV2aWNlcyBjdXJyZW50bHkgaW4gdXNlIC0tIG90aGVyd2lzZQorcmVzdWx0cyBtYXkgYmUgdW5wcmVkaWN0YWJsZSBhbmQgbGVhZCB0byBkYXRhIGxvc3MgaWYgeW91J3JlIHVubHVja3kKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW5maW5pYmFuZC9jb3JlX2xvY2tpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9pbmZpbmliYW5kL2NvcmVfbG9ja2luZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE2Nzg1NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaW5maW5pYmFuZC9jb3JlX2xvY2tpbmcudHh0CkBAIC0wLDAgKzEsMTE0IEBACitJTkZJTklCQU5EIE1JRExBWUVSIExPQ0tJTkcKKworICBUaGlzIGd1aWRlIGlzIGFuIGF0dGVtcHQgdG8gbWFrZSBleHBsaWNpdCB0aGUgbG9ja2luZyBhc3N1bXB0aW9ucworICBtYWRlIGJ5IHRoZSBJbmZpbmlCYW5kIG1pZGxheWVyLiAgSXQgZGVzY3JpYmVzIHRoZSByZXF1aXJlbWVudHMgb24KKyAgYm90aCBsb3ctbGV2ZWwgZHJpdmVycyB0aGF0IHNpdCBiZWxvdyB0aGUgbWlkbGF5ZXIgYW5kIHVwcGVyIGxldmVsCisgIHByb3RvY29scyB0aGF0IHVzZSB0aGUgbWlkbGF5ZXIuCisKK1NsZWVwaW5nIGFuZCBpbnRlcnJ1cHQgY29udGV4dAorCisgIFdpdGggdGhlIGZvbGxvd2luZyBleGNlcHRpb25zLCBhIGxvdy1sZXZlbCBkcml2ZXIgaW1wbGVtZW50YXRpb24gb2YKKyAgYWxsIG9mIHRoZSBtZXRob2RzIGluIHN0cnVjdCBpYl9kZXZpY2UgbWF5IHNsZWVwLiAgVGhlIGV4Y2VwdGlvbnMKKyAgYXJlIGFueSBtZXRob2RzIGZyb20gdGhlIGxpc3Q6CisKKyAgICBjcmVhdGVfYWgKKyAgICBtb2RpZnlfYWgKKyAgICBxdWVyeV9haAorICAgIGRlc3Ryb3lfYWgKKyAgICBiaW5kX213CisgICAgcG9zdF9zZW5kCisgICAgcG9zdF9yZWN2CisgICAgcG9sbF9jcQorICAgIHJlcV9ub3RpZnlfY3EKKyAgICBtYXBfcGh5c19mbXIKKworICB3aGljaCBtYXkgbm90IHNsZWVwIGFuZCBtdXN0IGJlIGNhbGxhYmxlIGZyb20gYW55IGNvbnRleHQuCisKKyAgVGhlIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb25zIGV4cG9ydGVkIHRvIHVwcGVyIGxldmVsIHByb3RvY29sCisgIGNvbnN1bWVyczoKKworICAgIGliX2NyZWF0ZV9haAorICAgIGliX21vZGlmeV9haAorICAgIGliX3F1ZXJ5X2FoCisgICAgaWJfZGVzdHJveV9haAorICAgIGliX2JpbmRfbXcKKyAgICBpYl9wb3N0X3NlbmQKKyAgICBpYl9wb3N0X3JlY3YKKyAgICBpYl9yZXFfbm90aWZ5X2NxCisgICAgaWJfbWFwX3BoeXNfZm1yCisKKyAgYXJlIHRoZXJlZm9yZSBzYWZlIHRvIGNhbGwgZnJvbSBhbnkgY29udGV4dC4KKworICBJbiBhZGRpdGlvbiwgdGhlIGZ1bmN0aW9uCisKKyAgICBpYl9kaXNwYXRjaF9ldmVudAorCisgIHVzZWQgYnkgbG93LWxldmVsIGRyaXZlcnMgdG8gZGlzcGF0Y2ggYXN5bmNocm9ub3VzIGV2ZW50cyB0aHJvdWdoCisgIHRoZSBtaWRsYXllciBpcyBhbHNvIHNhZmUgdG8gY2FsbCBmcm9tIGFueSBjb250ZXh0LgorCitSZWVudHJhbmN5CisKKyAgQWxsIG9mIHRoZSBtZXRob2RzIGluIHN0cnVjdCBpYl9kZXZpY2UgZXhwb3J0ZWQgYnkgYSBsb3ctbGV2ZWwKKyAgZHJpdmVyIG11c3QgYmUgZnVsbHkgcmVlbnRyYW50LiAgVGhlIGxvdy1sZXZlbCBkcml2ZXIgaXMgcmVxdWlyZWQgdG8KKyAgcGVyZm9ybSBhbGwgc3luY2hyb25pemF0aW9uIG5lY2Vzc2FyeSB0byBtYWludGFpbiBjb25zaXN0ZW5jeSwgZXZlbgorICBpZiBtdWx0aXBsZSBmdW5jdGlvbiBjYWxscyB1c2luZyB0aGUgc2FtZSBvYmplY3QgYXJlIHJ1bgorICBzaW11bHRhbmVvdXNseS4KKworICBUaGUgSUIgbWlkbGF5ZXIgZG9lcyBub3QgcGVyZm9ybSBhbnkgc2VyaWFsaXphdGlvbiBvZiBmdW5jdGlvbiBjYWxscy4KKworICBCZWNhdXNlIGxvdy1sZXZlbCBkcml2ZXJzIGFyZSByZWVudHJhbnQsIHVwcGVyIGxldmVsIHByb3RvY29sCisgIGNvbnN1bWVycyBhcmUgbm90IHJlcXVpcmVkIHRvIHBlcmZvcm0gYW55IHNlcmlhbGl6YXRpb24uICBIb3dldmVyLAorICBzb21lIHNlcmlhbGl6YXRpb24gbWF5IGJlIHJlcXVpcmVkIHRvIGdldCBzZW5zaWJsZSByZXN1bHRzLiAgRm9yCisgIGV4YW1wbGUsIGEgY29uc3VtZXIgbWF5IHNhZmVseSBjYWxsIGliX3BvbGxfY3EoKSBvbiBtdWx0aXBsZSBDUFVzCisgIHNpbXVsdGFuZW91c2x5LiAgSG93ZXZlciwgdGhlIG9yZGVyaW5nIG9mIHRoZSB3b3JrIGNvbXBsZXRpb24KKyAgaW5mb3JtYXRpb24gYmV0d2VlbiBkaWZmZXJlbnQgY2FsbHMgb2YgaWJfcG9sbF9jcSgpIGlzIG5vdCBkZWZpbmVkLgorCitDYWxsYmFja3MKKworICBBIGxvdy1sZXZlbCBkcml2ZXIgbXVzdCBub3QgcGVyZm9ybSBhIGNhbGxiYWNrIGRpcmVjdGx5IGZyb20gdGhlCisgIHNhbWUgY2FsbGNoYWluIGFzIGFuIGliX2RldmljZSBtZXRob2QgY2FsbC4gIEZvciBleGFtcGxlLCBpdCBpcyBub3QKKyAgYWxsb3dlZCBmb3IgYSBsb3ctbGV2ZWwgZHJpdmVyIHRvIGNhbGwgYSBjb25zdW1lcidzIGNvbXBsZXRpb24gZXZlbnQKKyAgaGFuZGxlciBkaXJlY3RseSBmcm9tIGl0cyBwb3N0X3NlbmQgbWV0aG9kLiAgSW5zdGVhZCwgdGhlIGxvdy1sZXZlbAorICBkcml2ZXIgc2hvdWxkIGRlZmVyIHRoaXMgY2FsbGJhY2sgYnksIGZvciBleGFtcGxlLCBzY2hlZHVsaW5nIGEKKyAgdGFza2xldCB0byBwZXJmb3JtIHRoZSBjYWxsYmFjay4KKworICBUaGUgbG93LWxldmVsIGRyaXZlciBpcyByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhhdCBtdWx0aXBsZQorICBjb21wbGV0aW9uIGV2ZW50IGhhbmRsZXJzIGZvciB0aGUgc2FtZSBDUSBhcmUgbm90IGNhbGxlZAorICBzaW11bHRhbmVvdXNseS4gIFRoZSBkcml2ZXIgbXVzdCBndWFyYW50ZWUgdGhhdCBvbmx5IG9uZSBDUSBldmVudAorICBoYW5kbGVyIGZvciBhIGdpdmVuIENRIGlzIHJ1bm5pbmcgYXQgYSB0aW1lLiAgSW4gb3RoZXIgd29yZHMsIHRoZQorICBmb2xsb3dpbmcgc2l0dWF0aW9uIGlzIG5vdCBhbGxvd2VkOgorCisgICAgICAgIENQVTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUFUyCisKKyAgbG93LWxldmVsIGRyaXZlciAtPgorICAgIGNvbnN1bWVyIENRIGV2ZW50IGNhbGxiYWNrOgorICAgICAgLyogLi4uICovCisgICAgICBpYl9yZXFfbm90aWZ5X2NxKGNxLCAuLi4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvdy1sZXZlbCBkcml2ZXIgLT4KKyAgICAgIC8qIC4uLiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVyIENRIGV2ZW50IGNhbGxiYWNrOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAuLi4gKi8KKyAgICAgIHJldHVybiBmcm9tIENRIGV2ZW50IGhhbmRsZXIKKworICBUaGUgY29udGV4dCBpbiB3aGljaCBjb21wbGV0aW9uIGV2ZW50IGFuZCBhc3luY2hyb25vdXMgZXZlbnQKKyAgY2FsbGJhY2tzIHJ1biBpcyBub3QgZGVmaW5lZC4gIERlcGVuZGluZyBvbiB0aGUgbG93LWxldmVsIGRyaXZlciwgaXQKKyAgbWF5IGJlIHByb2Nlc3MgY29udGV4dCwgc29mdGlycSBjb250ZXh0LCBvciBpbnRlcnJ1cHQgY29udGV4dC4KKyAgVXBwZXIgbGV2ZWwgcHJvdG9jb2wgY29uc3VtZXJzIG1heSBub3Qgc2xlZXAgaW4gYSBjYWxsYmFjay4KKworSG90LXBsdWcKKworICBBIGxvdy1sZXZlbCBkcml2ZXIgYW5ub3VuY2VzIHRoYXQgYSBkZXZpY2UgaXMgcmVhZHkgZm9yIHVzZSBieQorICBjb25zdW1lcnMgd2hlbiBpdCBjYWxscyBpYl9yZWdpc3Rlcl9kZXZpY2UoKSwgYWxsIGluaXRpYWxpemF0aW9uCisgIG11c3QgYmUgY29tcGxldGUgYmVmb3JlIHRoaXMgY2FsbC4gIFRoZSBkZXZpY2UgbXVzdCByZW1haW4gdXNhYmxlCisgIHVudGlsIHRoZSBkcml2ZXIncyBjYWxsIHRvIGliX3VucmVnaXN0ZXJfZGV2aWNlKCkgaGFzIHJldHVybmVkLgorCisgIEEgbG93LWxldmVsIGRyaXZlciBtdXN0IGNhbGwgaWJfcmVnaXN0ZXJfZGV2aWNlKCkgYW5kCisgIGliX3VucmVnaXN0ZXJfZGV2aWNlKCkgZnJvbSBwcm9jZXNzIGNvbnRleHQuICBJdCBtdXN0IG5vdCBob2xkIGFueQorICBzZW1hcGhvcmVzIHRoYXQgY291bGQgY2F1c2UgZGVhZGxvY2sgaWYgYSBjb25zdW1lciBjYWxscyBiYWNrIGludG8KKyAgdGhlIGRyaXZlciBhY3Jvc3MgdGhlc2UgY2FsbHMuCisKKyAgQW4gdXBwZXIgbGV2ZWwgcHJvdG9jb2wgY29uc3VtZXIgbWF5IGJlZ2luIHVzaW5nIGFuIElCIGRldmljZSBhcworICBzb29uIGFzIHRoZSBhZGQgbWV0aG9kIG9mIGl0cyBzdHJ1Y3QgaWJfY2xpZW50IGlzIGNhbGxlZCBmb3IgdGhhdAorICBkZXZpY2UuICBBIGNvbnN1bWVyIG11c3QgZmluaXNoIGFsbCBjbGVhbnVwIGFuZCBmcmVlIGFsbCByZXNvdXJjZXMKKyAgcmVsYXRpbmcgdG8gYSBkZXZpY2UgYmVmb3JlIHJldHVybmluZyBmcm9tIHRoZSByZW1vdmUgbWV0aG9kLgorCisgIEEgY29uc3VtZXIgaXMgcGVybWl0dGVkIHRvIHNsZWVwIGluIGl0cyBhZGQgYW5kIHJlbW92ZSBtZXRob2RzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pbmZpbmliYW5kL2lwb2liLnR4dCBiL0RvY3VtZW50YXRpb24vaW5maW5pYmFuZC9pcG9pYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJjZmUyNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaW5maW5pYmFuZC9pcG9pYi50eHQKQEAgLTAsMCArMSwxMDUgQEAKK0lQIE9WRVIgSU5GSU5JQkFORAorCisgIFRoZSBpYl9pcG9pYiBkcml2ZXIgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIElQIG92ZXIgSW5maW5pQmFuZAorICBwcm90b2NvbCBhcyBzcGVjaWZpZWQgYnkgUkZDIDQzOTEgYW5kIDQzOTIsIGlzc3VlZCBieSB0aGUgSUVURiBpcG9pYgorICB3b3JraW5nIGdyb3VwLiAgSXQgaXMgYSAibmF0aXZlIiBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgc2Vuc2Ugb2YKKyAgc2V0dGluZyB0aGUgaW50ZXJmYWNlIHR5cGUgdG8gQVJQSFJEX0lORklOSUJBTkQgYW5kIHRoZSBoYXJkd2FyZQorICBhZGRyZXNzIGxlbmd0aCB0byAyMCAoZWFybGllciBwcm9wcmlldGFyeSBpbXBsZW1lbnRhdGlvbnMKKyAgbWFzcXVlcmFkZWQgdG8gdGhlIGtlcm5lbCBhcyBldGhlcm5ldCBpbnRlcmZhY2VzKS4KKworUGFydGl0aW9ucyBhbmQgUF9LZXlzCisKKyAgV2hlbiB0aGUgSVBvSUIgZHJpdmVyIGlzIGxvYWRlZCwgaXQgY3JlYXRlcyBvbmUgaW50ZXJmYWNlIGZvciBlYWNoCisgIHBvcnQgdXNpbmcgdGhlIFBfS2V5IGF0IGluZGV4IDAuICBUbyBjcmVhdGUgYW4gaW50ZXJmYWNlIHdpdGggYQorICBkaWZmZXJlbnQgUF9LZXksIHdyaXRlIHRoZSBkZXNpcmVkIFBfS2V5IGludG8gdGhlIG1haW4gaW50ZXJmYWNlJ3MKKyAgL3N5cy9jbGFzcy9uZXQvPGludGYgbmFtZT4vY3JlYXRlX2NoaWxkIGZpbGUuICBGb3IgZXhhbXBsZToKKworICAgIGVjaG8gMHg4MDAxID4gL3N5cy9jbGFzcy9uZXQvaWIwL2NyZWF0ZV9jaGlsZAorCisgIFRoaXMgd2lsbCBjcmVhdGUgYW4gaW50ZXJmYWNlIG5hbWVkIGliMC44MDAxIHdpdGggUF9LZXkgMHg4MDAxLiAgVG8KKyAgcmVtb3ZlIGEgc3ViaW50ZXJmYWNlLCB1c2UgdGhlICJkZWxldGVfY2hpbGQiIGZpbGU6CisKKyAgICBlY2hvIDB4ODAwMSA+IC9zeXMvY2xhc3MvbmV0L2liMC9kZWxldGVfY2hpbGQKKworICBUaGUgUF9LZXkgZm9yIGFueSBpbnRlcmZhY2UgaXMgZ2l2ZW4gYnkgdGhlICJwa2V5IiBmaWxlLCBhbmQgdGhlCisgIG1haW4gaW50ZXJmYWNlIGZvciBhIHN1YmludGVyZmFjZSBpcyBpbiAicGFyZW50LiIKKworICBDaGlsZCBpbnRlcmZhY2UgY3JlYXRlL2RlbGV0ZSBjYW4gYWxzbyBiZSBkb25lIHVzaW5nIElQb0lCJ3MKKyAgcnRubF9saW5rX29wcywgd2hlcmUgY2hpbGRzIGNyZWF0ZWQgdXNpbmcgZWl0aGVyIHdheSBiZWhhdmUgdGhlIHNhbWUuCisKK0RhdGFncmFtIHZzIENvbm5lY3RlZCBtb2RlcworCisgIFRoZSBJUG9JQiBkcml2ZXIgc3VwcG9ydHMgdHdvIG1vZGVzIG9mIG9wZXJhdGlvbjogZGF0YWdyYW0gYW5kCisgIGNvbm5lY3RlZC4gIFRoZSBtb2RlIGlzIHNldCBhbmQgcmVhZCB0aHJvdWdoIGFuIGludGVyZmFjZSdzCisgIC9zeXMvY2xhc3MvbmV0LzxpbnRmIG5hbWU+L21vZGUgZmlsZS4KKworICBJbiBkYXRhZ3JhbSBtb2RlLCB0aGUgSUIgVUQgKFVucmVsaWFibGUgRGF0YWdyYW0pIHRyYW5zcG9ydCBpcyB1c2VkCisgIGFuZCBzbyB0aGUgaW50ZXJmYWNlIE1UVSBoYXMgaXMgZXF1YWwgdG8gdGhlIElCIEwyIE1UVSBtaW51cyB0aGUKKyAgSVBvSUIgZW5jYXBzdWxhdGlvbiBoZWFkZXIgKDQgYnl0ZXMpLiAgRm9yIGV4YW1wbGUsIGluIGEgdHlwaWNhbCBJQgorICBmYWJyaWMgd2l0aCBhIDJLIE1UVSwgdGhlIElQb0lCIE1UVSB3aWxsIGJlIDIwNDggLSA0ID0gMjA0NCBieXRlcy4KKworICBJbiBjb25uZWN0ZWQgbW9kZSwgdGhlIElCIFJDIChSZWxpYWJsZSBDb25uZWN0ZWQpIHRyYW5zcG9ydCBpcyB1c2VkLgorICBDb25uZWN0ZWQgbW9kZSB0YWtlcyBhZHZhbnRhZ2Ugb2YgdGhlIGNvbm5lY3RlZCBuYXR1cmUgb2YgdGhlIElCCisgIHRyYW5zcG9ydCBhbmQgYWxsb3dzIGFuIE1UVSB1cCB0byB0aGUgbWF4aW1hbCBJUCBwYWNrZXQgc2l6ZSBvZiA2NEssCisgIHdoaWNoIHJlZHVjZXMgdGhlIG51bWJlciBvZiBJUCBwYWNrZXRzIG5lZWRlZCBmb3IgaGFuZGxpbmcgbGFyZ2UgVURQCisgIGRhdGFncmFtcywgVENQIHNlZ21lbnRzLCBldGMgYW5kIGluY3JlYXNlcyB0aGUgcGVyZm9ybWFuY2UgZm9yIGxhcmdlCisgIG1lc3NhZ2VzLgorCisgIEluIGNvbm5lY3RlZCBtb2RlLCB0aGUgaW50ZXJmYWNlJ3MgVUQgUVAgaXMgc3RpbGwgdXNlZCBmb3IgbXVsdGljYXN0CisgIGFuZCBjb21tdW5pY2F0aW9uIHdpdGggcGVlcnMgdGhhdCBkb24ndCBzdXBwb3J0IGNvbm5lY3RlZCBtb2RlLiBJbgorICB0aGlzIGNhc2UsIFJYIGVtdWxhdGlvbiBvZiBJQ01QIFBNVFUgcGFja2V0cyBpcyB1c2VkIHRvIGNhdXNlIHRoZQorICBuZXR3b3JraW5nIHN0YWNrIHRvIHVzZSB0aGUgc21hbGxlciBVRCBNVFUgZm9yIHRoZXNlIG5laWdoYm91cnMuCisKK1N0YXRlbGVzcyBvZmZsb2FkcworCisgIElmIHRoZSBJQiBIVyBzdXBwb3J0cyBJUG9JQiBzdGF0ZWxlc3Mgb2ZmbG9hZHMsIElQb0lCIGFkdmVydGlzZXMKKyAgVENQL0lQIGNoZWNrc3VtIGFuZC9vciBMYXJnZSBTZW5kIChMU08pIG9mZmxvYWRpbmcgY2FwYWJpbGl0eSB0byB0aGUKKyAgbmV0d29yayBzdGFjay4KKworICBMYXJnZSBSZWNlaXZlIChMUk8pIG9mZmxvYWRpbmcgaXMgYWxzbyBpbXBsZW1lbnRlZCBhbmQgbWF5IGJlIHR1cm5lZAorICBvbi9vZmYgdXNpbmcgZXRodG9vbCBjYWxscy4gIEN1cnJlbnRseSBMUk8gaXMgc3VwcG9ydGVkIG9ubHkgZm9yCisgIGNoZWNrc3VtIG9mZmxvYWQgY2FwYWJsZSBkZXZpY2VzLgorCisgIFN0YXRlbGVzcyBvZmZsb2FkcyBhcmUgc3VwcG9ydGVkIG9ubHkgaW4gZGF0YWdyYW0gbW9kZS4gIAorCitJbnRlcnJ1cHQgbW9kZXJhdGlvbgorCisgIElmIHRoZSB1bmRlcmx5aW5nIElCIGRldmljZSBzdXBwb3J0cyBDUSBldmVudCBtb2RlcmF0aW9uLCBvbmUgY2FuCisgIHVzZSBldGh0b29sIHRvIHNldCBpbnRlcnJ1cHQgbWl0aWdhdGlvbiBwYXJhbWV0ZXJzIGFuZCB0aHVzIHJlZHVjZQorICB0aGUgb3ZlcmhlYWQgaW5jdXJyZWQgYnkgaGFuZGxpbmcgaW50ZXJydXB0cy4gIFRoZSBtYWluIGNvZGUgcGF0aCBvZgorICBJUG9JQiBkb2Vzbid0IHVzZSBldmVudHMgZm9yIFRYIGNvbXBsZXRpb24gc2lnbmFsaW5nIHNvIG9ubHkgUlgKKyAgbW9kZXJhdGlvbiBpcyBzdXBwb3J0ZWQuCisKK0RlYnVnZ2luZyBJbmZvcm1hdGlvbgorCisgIEJ5IGNvbXBpbGluZyB0aGUgSVBvSUIgZHJpdmVyIHdpdGggQ09ORklHX0lORklOSUJBTkRfSVBPSUJfREVCVUcgc2V0CisgIHRvICd5JywgdHJhY2luZyBtZXNzYWdlcyBhcmUgY29tcGlsZWQgaW50byB0aGUgZHJpdmVyLiAgVGhleSBhcmUKKyAgdHVybmVkIG9uIGJ5IHNldHRpbmcgdGhlIG1vZHVsZSBwYXJhbWV0ZXJzIGRlYnVnX2xldmVsIGFuZAorICBtY2FzdF9kZWJ1Z19sZXZlbCB0byAxLiAgVGhlc2UgcGFyYW1ldGVycyBjYW4gYmUgY29udHJvbGxlZCBhdAorICBydW50aW1lIHRocm91Z2ggZmlsZXMgaW4gL3N5cy9tb2R1bGUvaWJfaXBvaWIvLgorCisgIENPTkZJR19JTkZJTklCQU5EX0lQT0lCX0RFQlVHIGFsc28gZW5hYmxlcyBmaWxlcyBpbiB0aGUgZGVidWdmcworICB2aXJ0dWFsIGZpbGVzeXN0ZW0uICBCeSBtb3VudGluZyB0aGlzIGZpbGVzeXN0ZW0sIGZvciBleGFtcGxlIHdpdGgKKworICAgIG1vdW50IC10IGRlYnVnZnMgbm9uZSAvc3lzL2tlcm5lbC9kZWJ1ZworCisgIGl0IGlzIHBvc3NpYmxlIHRvIGdldCBzdGF0aXN0aWNzIGFib3V0IG11bHRpY2FzdCBncm91cHMgZnJvbSB0aGUKKyAgZmlsZXMgL3N5cy9rZXJuZWwvZGVidWcvaXBvaWIvaWIwX21jZyBhbmQgc28gb24uCisKKyAgVGhlIHBlcmZvcm1hbmNlIGltcGFjdCBvZiB0aGlzIG9wdGlvbiBpcyBuZWdsaWdpYmxlLCBzbyBpdAorICBpcyBzYWZlIHRvIGVuYWJsZSB0aGlzIG9wdGlvbiB3aXRoIGRlYnVnX2xldmVsIHNldCB0byAwIGZvciBub3JtYWwKKyAgb3BlcmF0aW9uLgorCisgIENPTkZJR19JTkZJTklCQU5EX0lQT0lCX0RFQlVHX0RBVEEgZW5hYmxlcyBldmVuIG1vcmUgZGVidWcgb3V0cHV0IGluCisgIHRoZSBkYXRhIHBhdGggd2hlbiBkYXRhX2RlYnVnX2xldmVsIGlzIHNldCB0byAxLiAgSG93ZXZlciwgZXZlbiB3aXRoCisgIHRoZSBvdXRwdXQgZGlzYWJsZWQsIGVuYWJsaW5nIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gd2lsbCBhZmZlY3QKKyAgcGVyZm9ybWFuY2UsIGJlY2F1c2UgaXQgYWRkcyB0ZXN0cyB0byB0aGUgZmFzdCBwYXRoLgorCitSZWZlcmVuY2VzCisKKyAgVHJhbnNtaXNzaW9uIG9mIElQIG92ZXIgSW5maW5pQmFuZCAoSVBvSUIpIChSRkMgNDM5MSkKKyAgICBodHRwOi8vaWV0Zi5vcmcvcmZjL3JmYzQzOTEudHh0IAorICBJUCBvdmVyIEluZmluaUJhbmQgKElQb0lCKSBBcmNoaXRlY3R1cmUgKFJGQyA0MzkyKQorICAgIGh0dHA6Ly9pZXRmLm9yZy9yZmMvcmZjNDM5Mi50eHQgCisgIElQIG92ZXIgSW5maW5pQmFuZDogQ29ubmVjdGVkIE1vZGUgKFJGQyA0NzU1KQorICAgIGh0dHA6Ly9pZXRmLm9yZy9yZmMvcmZjNDc1NS50eHQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW5maW5pYmFuZC9zeXNmcy50eHQgYi9Eb2N1bWVudGF0aW9uL2luZmluaWJhbmQvc3lzZnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwMjhiMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2luZmluaWJhbmQvc3lzZnMudHh0CkBAIC0wLDAgKzEsODYgQEAKK1NZU0ZTIEZJTEVTCisKKyAgRm9yIGVhY2ggSW5maW5pQmFuZCBkZXZpY2UsIHRoZSBJbmZpbmlCYW5kIGRyaXZlcnMgY3JlYXRlIHRoZQorICBmb2xsb3dpbmcgZmlsZXMgdW5kZXIgL3N5cy9jbGFzcy9pbmZpbmliYW5kLzxkZXZpY2UgbmFtZT46CisKKyAgICBub2RlX3R5cGUgICAgICAtIE5vZGUgdHlwZSAoQ0EsIHN3aXRjaCBvciByb3V0ZXIpCisgICAgbm9kZV9ndWlkICAgICAgLSBOb2RlIEdVSUQKKyAgICBzeXNfaW1hZ2VfZ3VpZCAtIFN5c3RlbSBpbWFnZSBHVUlECisKKyAgSW4gYWRkaXRpb24sIHRoZXJlIGlzIGEgInBvcnRzIiBzdWJkaXJlY3RvcnksIHdpdGggb25lIHN1YmRpcmVjdG9yeQorICBmb3IgZWFjaCBwb3J0LiAgRm9yIGV4YW1wbGUsIGlmIG10aGNhMCBpcyBhIDItcG9ydCBIQ0EsIHRoZXJlIHdpbGwKKyAgYmUgdHdvIGRpcmVjdG9yaWVzOgorCisgICAgL3N5cy9jbGFzcy9pbmZpbmliYW5kL210aGNhMC9wb3J0cy8xCisgICAgL3N5cy9jbGFzcy9pbmZpbmliYW5kL210aGNhMC9wb3J0cy8yCisKKyAgKEEgc3dpdGNoIHdpbGwgb25seSBoYXZlIGEgc2luZ2xlICIwIiBzdWJkaXJlY3RvcnkgZm9yIHN3aXRjaCBwb3J0CisgIDA7IG5vIHN1YmRpcmVjdG9yeSBpcyBjcmVhdGVkIGZvciBub3JtYWwgc3dpdGNoIHBvcnRzKQorCisgIEluIGVhY2ggcG9ydCBzdWJkaXJlY3RvcnksIHRoZSBmb2xsb3dpbmcgZmlsZXMgYXJlIGNyZWF0ZWQ6CisKKyAgICBjYXBfbWFzayAgICAgICAtIFBvcnQgY2FwYWJpbGl0eSBtYXNrCisgICAgbGlkICAgICAgICAgICAgLSBQb3J0IExJRAorICAgIGxpZF9tYXNrX2NvdW50IC0gUG9ydCBMSUQgbWFzayBjb3VudAorICAgIHJhdGUgICAgICAgICAgIC0gUG9ydCBkYXRhIHJhdGUgKGFjdGl2ZSB3aWR0aCAqIGFjdGl2ZSBzcGVlZCkKKyAgICBzbV9saWQgICAgICAgICAtIFN1Ym5ldCBtYW5hZ2VyIExJRCBmb3IgcG9ydCdzIHN1Ym5ldAorICAgIHNtX3NsICAgICAgICAgIC0gU3VibmV0IG1hbmFnZXIgU0wgZm9yIHBvcnQncyBzdWJuZXQKKyAgICBzdGF0ZSAgICAgICAgICAtIFBvcnQgc3RhdGUgKERPV04sIElOSVQsIEFSTUVELCBBQ1RJVkUgb3IgQUNUSVZFX0RFRkVSKQorICAgIHBoeXNfc3RhdGUgICAgIC0gUG9ydCBwaHlzaWNhbCBzdGF0ZSAoU2xlZXAsIFBvbGxpbmcsIExpbmtVcCwgZXRjKQorCisgIFRoZXJlIGlzIGFsc28gYSAiY291bnRlcnMiIHN1YmRpcmVjdG9yeSwgd2l0aCBmaWxlcworCisgICAgVkwxNV9kcm9wcGVkCisgICAgZXhjZXNzaXZlX2J1ZmZlcl9vdmVycnVuX2Vycm9ycworICAgIGxpbmtfZG93bmVkCisgICAgbGlua19lcnJvcl9yZWNvdmVyeQorICAgIGxvY2FsX2xpbmtfaW50ZWdyaXR5X2Vycm9ycworICAgIHBvcnRfcmN2X2NvbnN0cmFpbnRfZXJyb3JzCisgICAgcG9ydF9yY3ZfZGF0YQorICAgIHBvcnRfcmN2X2Vycm9ycworICAgIHBvcnRfcmN2X3BhY2tldHMKKyAgICBwb3J0X3Jjdl9yZW1vdGVfcGh5c2ljYWxfZXJyb3JzCisgICAgcG9ydF9yY3Zfc3dpdGNoX3JlbGF5X2Vycm9ycworICAgIHBvcnRfeG1pdF9jb25zdHJhaW50X2Vycm9ycworICAgIHBvcnRfeG1pdF9kYXRhCisgICAgcG9ydF94bWl0X2Rpc2NhcmRzCisgICAgcG9ydF94bWl0X3BhY2tldHMKKyAgICBzeW1ib2xfZXJyb3IKKworICBFYWNoIG9mIHRoZXNlIGZpbGVzIGNvbnRhaW5zIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZyb20gdGhlIHBvcnQncworICBQZXJmb3JtYW5jZSBNYW5hZ2VtZW50IFBvcnRDb3VudGVycyBhdHRyaWJ1dGUsIGFzIGRlc2NyaWJlZCBpbgorICBzZWN0aW9uIDE2LjEuMy41IG9mIHRoZSBJbmZpbmlCYW5kIEFyY2hpdGVjdHVyZSBTcGVjaWZpY2F0aW9uLgorCisgIFRoZSAicGtleXMiIGFuZCAiZ2lkcyIgc3ViZGlyZWN0b3JpZXMgY29udGFpbiBvbmUgZmlsZSBmb3IgZWFjaAorICBlbnRyeSBpbiB0aGUgcG9ydCdzIFBfS2V5IG9yIEdJRCB0YWJsZSByZXNwZWN0aXZlbHkuICBGb3IgZXhhbXBsZSwKKyAgcG9ydHMvMS9wa2V5cy8xMCBjb250YWlucyB0aGUgdmFsdWUgYXQgaW5kZXggMTAgaW4gcG9ydCAxJ3MgUF9LZXkKKyAgdGFibGUuCisKK01USENBCisKKyAgVGhlIE1lbGxhbm94IEhDQSBkcml2ZXIgYWxzbyBjcmVhdGVzIHRoZSBmaWxlczoKKworICAgIGh3X3JldiAgIC0gSGFyZHdhcmUgcmV2aXNpb24gbnVtYmVyCisgICAgZndfdmVyICAgLSBGaXJtd2FyZSB2ZXJzaW9uCisgICAgaGNhX3R5cGUgLSBIQ0EgdHlwZTogIk1UMjMxMDgiLCAiTVQyNTIwOCAoTVQyMzEwOCBjb21wYXQgbW9kZSkiLAorICAgICAgICAgICAgICAgb3IgIk1UMjUyMDgiCisKK0hGSTEKKworICBUaGUgaGZpMSBkcml2ZXIgYWxzbyBjcmVhdGVzIHRoZXNlIGFkZGl0aW9uYWwgZmlsZXM6CisKKyAgIGh3X3JldiAtIGhhcmR3YXJlIHJldmlzaW9uCisgICBib2FyZF9pZCAtIG1hbnVmYWN0dXJpbmcgYm9hcmQgaWQKKyAgIHRlbXBzZW5zZSAtIHRoZXJtYWwgc2Vuc2UgaW5mb3JtYXRpb24KKyAgIHNlcmlhbCAtIGJvYXJkIHNlcmlhbCBudW1iZXIKKyAgIG5mcmVlY3R4dHMgLSBudW1iZXIgb2YgZnJlZSB1c2VyIGNvbnRleHRzCisgICBuY3R4dHMgLSBudW1iZXIgb2YgYWxsb3dlZCBjb250ZXh0cyAoUFNNMikKKyAgIGNoaXBfcmVzZXQgLSBkaWFnbm9zdGljIChyb290IG9ubHkpCisgICBib2FyZHZlcnNpb24gLSBib2FyZCB2ZXJzaW9uCisgICBwb3J0cy8xLworICAgICAgICAgIENNZ3RBLworICAgICAgICAgICAgICAgY2Nfc2V0dGluZ3NfYmluIC0gQ0NBIHRhYmxlcyB1c2VkIGJ5IFBTTTIKKyAgICAgICAgICAgICAgIGNjX3RhYmxlX2JpbgorICAgICAgICAgIHNjMnYvIC0gMzIgZmlsZXMgKDAgLSAzMSkgdXNlZCB0byB0cmFuc2xhdGUgc2wtPnZsCisgICAgICAgICAgc2wyc2MvIC0gMzIgZmlsZXMgKDAgLSAzMSkgdXNlZCB0byB0cmFuc2xhdGUgc2wtPnNjCisgICAgICAgICAgdmwybXR1LyAtIDE2ICgwIC0gMTUpIGZpbGVzIHVzZWQgdG8gZGV0ZXJtaW5lIE1UVSBmb3IgdmwKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW5maW5pYmFuZC91c2VyX21hZC50eHQgYi9Eb2N1bWVudGF0aW9uL2luZmluaWJhbmQvdXNlcl9tYWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhY2ExM2EKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2luZmluaWJhbmQvdXNlcl9tYWQudHh0CkBAIC0wLDAgKzEsMTUzIEBACitVU0VSU1BBQ0UgTUFEIEFDQ0VTUworCitEZXZpY2UgZmlsZXMKKworICBFYWNoIHBvcnQgb2YgZWFjaCBJbmZpbmlCYW5kIGRldmljZSBoYXMgYSAidW1hZCIgZGV2aWNlIGFuZCBhbgorICAiaXNzbSIgZGV2aWNlIGF0dGFjaGVkLiAgRm9yIGV4YW1wbGUsIGEgdHdvLXBvcnQgSENBIHdpbGwgaGF2ZSB0d28KKyAgdW1hZCBkZXZpY2VzIGFuZCB0d28gaXNzbSBkZXZpY2VzLCB3aGlsZSBhIHN3aXRjaCB3aWxsIGhhdmUgb25lCisgIGRldmljZSBvZiBlYWNoIHR5cGUgKGZvciBzd2l0Y2ggcG9ydCAwKS4KKworQ3JlYXRpbmcgTUFEIGFnZW50cworCisgIEEgTUFEIGFnZW50IGNhbiBiZSBjcmVhdGVkIGJ5IGZpbGxpbmcgaW4gYSBzdHJ1Y3QgaWJfdXNlcl9tYWRfcmVnX3JlcQorICBhbmQgdGhlbiBjYWxsaW5nIHRoZSBJQl9VU0VSX01BRF9SRUdJU1RFUl9BR0VOVCBpb2N0bCBvbiBhIGZpbGUKKyAgZGVzY3JpcHRvciBmb3IgdGhlIGFwcHJvcHJpYXRlIGRldmljZSBmaWxlLiAgSWYgdGhlIHJlZ2lzdHJhdGlvbgorICByZXF1ZXN0IHN1Y2NlZWRzLCBhIDMyLWJpdCBpZCB3aWxsIGJlIHJldHVybmVkIGluIHRoZSBzdHJ1Y3R1cmUuCisgIEZvciBleGFtcGxlOgorCisJc3RydWN0IGliX3VzZXJfbWFkX3JlZ19yZXEgcmVxID0geyAvKiAuLi4gKi8gfTsKKwlyZXQgPSBpb2N0bChmZCwgSUJfVVNFUl9NQURfUkVHSVNURVJfQUdFTlQsIChjaGFyICopICZyZXEpOworICAgICAgICBpZiAoIXJldCkKKwkJbXlfYWdlbnQgPSByZXEuaWQ7CisJZWxzZQorCQlwZXJyb3IoImFnZW50IHJlZ2lzdGVyIik7CisKKyAgQWdlbnRzIGNhbiBiZSB1bnJlZ2lzdGVyZWQgd2l0aCB0aGUgSUJfVVNFUl9NQURfVU5SRUdJU1RFUl9BR0VOVAorICBpb2N0bC4gIEFsc28sIGFsbCBhZ2VudHMgcmVnaXN0ZXJlZCB0aHJvdWdoIGEgZmlsZSBkZXNjcmlwdG9yIHdpbGwKKyAgYmUgdW5yZWdpc3RlcmVkIHdoZW4gdGhlIGRlc2NyaXB0b3IgaXMgY2xvc2VkLgorCisgIDIwMTQgLS0gYSBuZXcgcmVnaXN0cmF0aW9uIGlvY3RsIGlzIG5vdyBwcm92aWRlZCB3aGljaCBhbGxvd3MgYWRkaXRpb25hbAorICAgICAgIGZpZWxkcyB0byBiZSBwcm92aWRlZCBkdXJpbmcgcmVnaXN0cmF0aW9uLgorICAgICAgIFVzZXJzIG9mIHRoaXMgcmVnaXN0cmF0aW9uIGNhbGwgYXJlIGltcGxpY2l0bHkgc2V0dGluZyB0aGUgdXNlIG9mCisgICAgICAgcGtleV9pbmRleCAoc2VlIGJlbG93KS4KKworUmVjZWl2aW5nIE1BRHMKKworICBNQURzIGFyZSByZWNlaXZlZCB1c2luZyByZWFkKCkuICBUaGUgcmVjZWl2ZSBzaWRlIG5vdyBzdXBwb3J0cworICBSTVBQLiBUaGUgYnVmZmVyIHBhc3NlZCB0byByZWFkKCkgbXVzdCBiZSBhdCBsZWFzdCBvbmUKKyAgc3RydWN0IGliX3VzZXJfbWFkICsgMjU2IGJ5dGVzLiBGb3IgZXhhbXBsZToKKworICBJZiB0aGUgYnVmZmVyIHBhc3NlZCBpcyBub3QgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgdGhlIHJlY2VpdmVkCisgIE1BRCAoUk1QUCksIHRoZSBlcnJubyBpcyBzZXQgdG8gRU5PU1BDIGFuZCB0aGUgbGVuZ3RoIG9mIHRoZQorICBidWZmZXIgbmVlZGVkIGlzIHNldCBpbiBtYWQubGVuZ3RoLgorCisgIEV4YW1wbGUgZm9yIG5vcm1hbCBNQUQgKG5vbiBSTVBQKSByZWFkczoKKwlzdHJ1Y3QgaWJfdXNlcl9tYWQgKm1hZDsKKwltYWQgPSBtYWxsb2Moc2l6ZW9mICptYWQgKyAyNTYpOworCXJldCA9IHJlYWQoZmQsIG1hZCwgc2l6ZW9mICptYWQgKyAyNTYpOworCWlmIChyZXQgIT0gc2l6ZW9mIG1hZCArIDI1NikgeworCQlwZXJyb3IoInJlYWQiKTsKKwkJZnJlZShtYWQpOworCX0KKworICBFeGFtcGxlIGZvciBSTVBQIHJlYWRzOgorCXN0cnVjdCBpYl91c2VyX21hZCAqbWFkOworCW1hZCA9IG1hbGxvYyhzaXplb2YgKm1hZCArIDI1Nik7CisJcmV0ID0gcmVhZChmZCwgbWFkLCBzaXplb2YgKm1hZCArIDI1Nik7CisJaWYgKHJldCA9PSAtRU5PU1BDKSkgeworCQlsZW5ndGggPSBtYWQubGVuZ3RoOworCQlmcmVlKG1hZCk7CisJCW1hZCA9IG1hbGxvYyhzaXplb2YgKm1hZCArIGxlbmd0aCk7CisJCXJldCA9IHJlYWQoZmQsIG1hZCwgc2l6ZW9mICptYWQgKyBsZW5ndGgpOworCX0KKwlpZiAocmV0IDwgMCkgeworCQlwZXJyb3IoInJlYWQiKTsKKwkJZnJlZShtYWQpOworCX0KKworICBJbiBhZGRpdGlvbiB0byB0aGUgYWN0dWFsIE1BRCBjb250ZW50cywgdGhlIG90aGVyIHN0cnVjdCBpYl91c2VyX21hZAorICBmaWVsZHMgd2lsbCBiZSBmaWxsZWQgaW4gd2l0aCBpbmZvcm1hdGlvbiBvbiB0aGUgcmVjZWl2ZWQgTUFELiAgRm9yCisgIGV4YW1wbGUsIHRoZSByZW1vdGUgTElEIHdpbGwgYmUgaW4gbWFkLmxpZC4KKworICBJZiBhIHNlbmQgdGltZXMgb3V0LCBhIHJlY2VpdmUgd2lsbCBiZSBnZW5lcmF0ZWQgd2l0aCBtYWQuc3RhdHVzIHNldAorICB0byBFVElNRURPVVQuICBPdGhlcndpc2Ugd2hlbiBhIE1BRCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgcmVjZWl2ZWQsCisgIG1hZC5zdGF0dXMgd2lsbCBiZSAwLgorCisgIHBvbGwoKS9zZWxlY3QoKSBtYXkgYmUgdXNlZCB0byB3YWl0IHVudGlsIGEgTUFEIGNhbiBiZSByZWFkLgorCitTZW5kaW5nIE1BRHMKKworICBNQURzIGFyZSBzZW50IHVzaW5nIHdyaXRlKCkuICBUaGUgYWdlbnQgSUQgZm9yIHNlbmRpbmcgc2hvdWxkIGJlCisgIGZpbGxlZCBpbnRvIHRoZSBpZCBmaWVsZCBvZiB0aGUgTUFELCB0aGUgZGVzdGluYXRpb24gTElEIHNob3VsZCBiZQorICBmaWxsZWQgaW50byB0aGUgbGlkIGZpZWxkLCBhbmQgc28gb24uICBUaGUgc2VuZCBzaWRlIGRvZXMgc3VwcG9ydAorICBSTVBQIHNvIGFyYml0cmFyeSBsZW5ndGggTUFEIGNhbiBiZSBzZW50LiBGb3IgZXhhbXBsZToKKworCXN0cnVjdCBpYl91c2VyX21hZCAqbWFkOworCisJbWFkID0gbWFsbG9jKHNpemVvZiAqbWFkICsgbWFkX2xlbmd0aCk7CisKKwkvKiBmaWxsIGluIG1hZC0+ZGF0YSAqLworCisJbWFkLT5oZHIuaWQgID0gbXlfYWdlbnQ7CS8qIHJlcS5pZCBmcm9tIGFnZW50IHJlZ2lzdHJhdGlvbiAqLworCW1hZC0+aGRyLmxpZCA9IG15X2Rlc3Q7CQkvKiBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIuLi4gKi8KKwkvKiBldGMuICovCisKKwlyZXQgPSB3cml0ZShmZCwgJm1hZCwgc2l6ZW9mICptYWQgKyBtYWRfbGVuZ3RoKTsKKwlpZiAocmV0ICE9IHNpemVvZiAqbWFkICsgbWFkX2xlbmd0aCkKKwkJcGVycm9yKCJ3cml0ZSIpOworCitUcmFuc2FjdGlvbiBJRHMKKworICBVc2VycyBvZiB0aGUgdW1hZCBkZXZpY2VzIGNhbiB1c2UgdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlCisgIHRyYW5zYWN0aW9uIElEIGZpZWxkICh0aGF0IGlzLCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgaGFsZiBvZiB0aGUKKyAgZmllbGQgaW4gbmV0d29yayBieXRlIG9yZGVyKSBpbiBNQURzIGJlaW5nIHNlbnQgdG8gbWF0Y2gKKyAgcmVxdWVzdC9yZXNwb25zZSBwYWlycy4gIFRoZSB1cHBlciAzMiBiaXRzIGFyZSByZXNlcnZlZCBmb3IgdXNlIGJ5CisgIHRoZSBrZXJuZWwgYW5kIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYmVmb3JlIGEgTUFEIGlzIHNlbnQuCisKK1BfS2V5IEluZGV4IEhhbmRsaW5nCisKKyAgVGhlIG9sZCBpYl91bWFkIGludGVyZmFjZSBkaWQgbm90IGFsbG93IHNldHRpbmcgdGhlIFBfS2V5IGluZGV4IGZvcgorICBNQURzIHRoYXQgYXJlIHNlbnQgYW5kIGRpZCBub3QgcHJvdmlkZSBhIHdheSBmb3Igb2J0YWluaW5nIHRoZSBQX0tleQorICBpbmRleCBvZiByZWNlaXZlZCBNQURzLiAgQSBuZXcgbGF5b3V0IGZvciBzdHJ1Y3QgaWJfdXNlcl9tYWRfaGRyCisgIHdpdGggYSBwa2V5X2luZGV4IG1lbWJlciBoYXMgYmVlbiBkZWZpbmVkOyBob3dldmVyLCB0byBwcmVzZXJ2ZSBiaW5hcnkKKyAgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIGFwcGxpY2F0aW9ucywgdGhpcyBuZXcgbGF5b3V0IHdpbGwgbm90IGJlIHVzZWQKKyAgdW5sZXNzIG9uZSBvZiBJQl9VU0VSX01BRF9FTkFCTEVfUEtFWSBvciBJQl9VU0VSX01BRF9SRUdJU1RFUl9BR0VOVDIgaW9jdGwncworICBhcmUgY2FsbGVkIGJlZm9yZSBhIGZpbGUgZGVzY3JpcHRvciBpcyB1c2VkIGZvciBhbnl0aGluZyBlbHNlLgorCisgIEluIFNlcHRlbWJlciAyMDA4LCB0aGUgSUJfVVNFUl9NQURfQUJJX1ZFUlNJT04gd2lsbCBiZSBpbmNyZW1lbnRlZAorICB0byA2LCB0aGUgbmV3IGxheW91dCBvZiBzdHJ1Y3QgaWJfdXNlcl9tYWRfaGRyIHdpbGwgYmUgdXNlZCBieQorICBkZWZhdWx0LCBhbmQgdGhlIElCX1VTRVJfTUFEX0VOQUJMRV9QS0VZIGlvY3RsIHdpbGwgYmUgcmVtb3ZlZC4KKworU2V0dGluZyBJc1NNIENhcGFiaWxpdHkgQml0CisKKyAgVG8gc2V0IHRoZSBJc1NNIGNhcGFiaWxpdHkgYml0IGZvciBhIHBvcnQsIHNpbXBseSBvcGVuIHRoZQorICBjb3JyZXNwb25kaW5nIGlzc20gZGV2aWNlIGZpbGUuICBJZiB0aGUgSXNTTSBiaXQgaXMgYWxyZWFkeSBzZXQsCisgIHRoZW4gdGhlIG9wZW4gY2FsbCB3aWxsIGJsb2NrIHVudGlsIHRoZSBiaXQgaXMgY2xlYXJlZCAob3IgcmV0dXJuCisgIGltbWVkaWF0ZWx5IHdpdGggZXJybm8gc2V0IHRvIEVBR0FJTiBpZiB0aGUgT19OT05CTE9DSyBmbGFnIGlzCisgIHBhc3NlZCB0byBvcGVuKCkpLiAgVGhlIElzU00gYml0IHdpbGwgYmUgY2xlYXJlZCB3aGVuIHRoZSBpc3NtIGZpbGUKKyAgaXMgY2xvc2VkLiAgTm8gcmVhZCwgd3JpdGUgb3Igb3RoZXIgb3BlcmF0aW9ucyBjYW4gYmUgcGVyZm9ybWVkIG9uCisgIHRoZSBpc3NtIGZpbGUuCisKKy9kZXYgZmlsZXMKKworICBUbyBjcmVhdGUgdGhlIGFwcHJvcHJpYXRlIGNoYXJhY3RlciBkZXZpY2UgZmlsZXMgYXV0b21hdGljYWxseSB3aXRoCisgIHVkZXYsIGEgcnVsZSBsaWtlCisKKyAgICBLRVJORUw9PSJ1bWFkKiIsIE5BTUU9ImluZmluaWJhbmQvJWsiCisgICAgS0VSTkVMPT0iaXNzbSoiLCBOQU1FPSJpbmZpbmliYW5kLyVrIgorCisgIGNhbiBiZSB1c2VkLiAgVGhpcyB3aWxsIGNyZWF0ZSBkZXZpY2Ugbm9kZXMgbmFtZWQKKworICAgIC9kZXYvaW5maW5pYmFuZC91bWFkMAorICAgIC9kZXYvaW5maW5pYmFuZC9pc3NtMAorCisgIGZvciB0aGUgZmlyc3QgcG9ydCwgYW5kIHNvIG9uLiAgVGhlIEluZmluaUJhbmQgZGV2aWNlIGFuZCBwb3J0CisgIGFzc29jaWF0ZWQgd2l0aCB0aGVzZSBkZXZpY2VzIGNhbiBiZSBkZXRlcm1pbmVkIGZyb20gdGhlIGZpbGVzCisKKyAgICAvc3lzL2NsYXNzL2luZmluaWJhbmRfbWFkL3VtYWQwL2liZGV2CisgICAgL3N5cy9jbGFzcy9pbmZpbmliYW5kX21hZC91bWFkMC9wb3J0CisKKyAgYW5kCisKKyAgICAvc3lzL2NsYXNzL2luZmluaWJhbmRfbWFkL2lzc20wL2liZGV2CisgICAgL3N5cy9jbGFzcy9pbmZpbmliYW5kX21hZC9pc3NtMC9wb3J0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2luZmluaWJhbmQvdXNlcl92ZXJicy50eHQgYi9Eb2N1bWVudGF0aW9uL2luZmluaWJhbmQvdXNlcl92ZXJicy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUwOTJkNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaW5maW5pYmFuZC91c2VyX3ZlcmJzLnR4dApAQCAtMCwwICsxLDY5IEBACitVU0VSU1BBQ0UgVkVSQlMgQUNDRVNTCisKKyAgVGhlIGliX3V2ZXJicyBtb2R1bGUsIGJ1aWx0IGJ5IGVuYWJsaW5nIENPTkZJR19JTkZJTklCQU5EX1VTRVJfVkVSQlMsCisgIGVuYWJsZXMgZGlyZWN0IHVzZXJzcGFjZSBhY2Nlc3MgdG8gSUIgaGFyZHdhcmUgdmlhICJ2ZXJicywiIGFzCisgIGRlc2NyaWJlZCBpbiBjaGFwdGVyIDExIG9mIHRoZSBJbmZpbmlCYW5kIEFyY2hpdGVjdHVyZSBTcGVjaWZpY2F0aW9uLgorCisgIFRvIHVzZSB0aGUgdmVyYnMsIHRoZSBsaWJpYnZlcmJzIGxpYnJhcnksIGF2YWlsYWJsZSBmcm9tCisgIGh0dHA6Ly93d3cub3BlbmZhYnJpY3Mub3JnLywgaXMgcmVxdWlyZWQuICBsaWJpYnZlcmJzIGNvbnRhaW5zIGEKKyAgZGV2aWNlLWluZGVwZW5kZW50IEFQSSBmb3IgdXNpbmcgdGhlIGliX3V2ZXJicyBpbnRlcmZhY2UuCisgIGxpYmlidmVyYnMgYWxzbyByZXF1aXJlcyBhcHByb3ByaWF0ZSBkZXZpY2UtZGVwZW5kZW50IGtlcm5lbCBhbmQKKyAgdXNlcnNwYWNlIGRyaXZlciBmb3IgeW91ciBJbmZpbmlCYW5kIGhhcmR3YXJlLiAgRm9yIGV4YW1wbGUsIHRvIHVzZQorICBhIE1lbGxhbm94IEhDQSwgeW91IHdpbGwgbmVlZCB0aGUgaWJfbXRoY2Ega2VybmVsIG1vZHVsZSBhbmQgdGhlCisgIGxpYm10aGNhIHVzZXJzcGFjZSBkcml2ZXIgYmUgaW5zdGFsbGVkLgorCitVc2VyLWtlcm5lbCBjb21tdW5pY2F0aW9uCisKKyAgVXNlcnNwYWNlIGNvbW11bmljYXRlcyB3aXRoIHRoZSBrZXJuZWwgZm9yIHNsb3cgcGF0aCwgcmVzb3VyY2UKKyAgbWFuYWdlbWVudCBvcGVyYXRpb25zIHZpYSB0aGUgL2Rldi9pbmZpbmliYW5kL3V2ZXJic04gY2hhcmFjdGVyCisgIGRldmljZXMuICBGYXN0IHBhdGggb3BlcmF0aW9ucyBhcmUgdHlwaWNhbGx5IHBlcmZvcm1lZCBieSB3cml0aW5nCisgIGRpcmVjdGx5IHRvIGhhcmR3YXJlIHJlZ2lzdGVycyBtbWFwKCllZCBpbnRvIHVzZXJzcGFjZSwgd2l0aCBubworICBzeXN0ZW0gY2FsbCBvciBjb250ZXh0IHN3aXRjaCBpbnRvIHRoZSBrZXJuZWwuCisKKyAgQ29tbWFuZHMgYXJlIHNlbnQgdG8gdGhlIGtlcm5lbCB2aWEgd3JpdGUoKXMgb24gdGhlc2UgZGV2aWNlIGZpbGVzLgorICBUaGUgQUJJIGlzIGRlZmluZWQgaW4gZHJpdmVycy9pbmZpbmliYW5kL2luY2x1ZGUvaWJfdXNlcl92ZXJicy5oLgorICBUaGUgc3RydWN0cyBmb3IgY29tbWFuZHMgdGhhdCByZXF1aXJlIGEgcmVzcG9uc2UgZnJvbSB0aGUga2VybmVsCisgIGNvbnRhaW4gYSA2NC1iaXQgZmllbGQgdXNlZCB0byBwYXNzIGEgcG9pbnRlciB0byBhbiBvdXRwdXQgYnVmZmVyLgorICBTdGF0dXMgaXMgcmV0dXJuZWQgdG8gdXNlcnNwYWNlIGFzIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIHdyaXRlKCkKKyAgc3lzdGVtIGNhbGwuCisKK1Jlc291cmNlIG1hbmFnZW1lbnQKKworICBTaW5jZSBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gb2YgYWxsIElCIHJlc291cmNlcyBpcyBkb25lIGJ5CisgIGNvbW1hbmRzIHBhc3NlZCB0aHJvdWdoIGEgZmlsZSBkZXNjcmlwdG9yLCB0aGUga2VybmVsIGNhbiBrZWVwIHRyYWNrCisgIG9mIHdoaWNoIHJlc291cmNlcyBhcmUgYXR0YWNoZWQgdG8gYSBnaXZlbiB1c2Vyc3BhY2UgY29udGV4dC4gIFRoZQorICBpYl91dmVyYnMgbW9kdWxlIG1haW50YWlucyBpZHIgdGFibGVzIHRoYXQgYXJlIHVzZWQgdG8gdHJhbnNsYXRlCisgIGJldHdlZW4ga2VybmVsIHBvaW50ZXJzIGFuZCBvcGFxdWUgdXNlcnNwYWNlIGhhbmRsZXMsIHNvIHRoYXQga2VybmVsCisgIHBvaW50ZXJzIGFyZSBuZXZlciBleHBvc2VkIHRvIHVzZXJzcGFjZSBhbmQgdXNlcnNwYWNlIGNhbm5vdCB0cmljaworICB0aGUga2VybmVsIGludG8gZm9sbG93aW5nIGEgYm9ndXMgcG9pbnRlci4KKworICBUaGlzIGFsc28gYWxsb3dzIHRoZSBrZXJuZWwgdG8gY2xlYW4gdXAgd2hlbiBhIHByb2Nlc3MgZXhpdHMgYW5kCisgIHByZXZlbnQgb25lIHByb2Nlc3MgZnJvbSB0b3VjaGluZyBhbm90aGVyIHByb2Nlc3MncyByZXNvdXJjZXMuCisKK01lbW9yeSBwaW5uaW5nCisKKyAgRGlyZWN0IHVzZXJzcGFjZSBJL08gcmVxdWlyZXMgdGhhdCBtZW1vcnkgcmVnaW9ucyB0aGF0IGFyZSBwb3RlbnRpYWwKKyAgSS9PIHRhcmdldHMgYmUga2VwdCByZXNpZGVudCBhdCB0aGUgc2FtZSBwaHlzaWNhbCBhZGRyZXNzLiAgVGhlCisgIGliX3V2ZXJicyBtb2R1bGUgbWFuYWdlcyBwaW5uaW5nIGFuZCB1bnBpbm5pbmcgbWVtb3J5IHJlZ2lvbnMgdmlhCisgIGdldF91c2VyX3BhZ2VzKCkgYW5kIHB1dF9wYWdlKCkgY2FsbHMuICBJdCBhbHNvIGFjY291bnRzIGZvciB0aGUKKyAgYW1vdW50IG9mIG1lbW9yeSBwaW5uZWQgaW4gdGhlIHByb2Nlc3MncyBsb2NrZWRfdm0sIGFuZCBjaGVja3MgdGhhdAorICB1bnByaXZpbGVnZWQgcHJvY2Vzc2VzIGRvIG5vdCBleGNlZWQgdGhlaXIgUkxJTUlUX01FTUxPQ0sgbGltaXQuCisKKyAgUGFnZXMgdGhhdCBhcmUgcGlubmVkIG11bHRpcGxlIHRpbWVzIGFyZSBjb3VudGVkIGVhY2ggdGltZSB0aGV5IGFyZQorICBwaW5uZWQsIHNvIHRoZSB2YWx1ZSBvZiBsb2NrZWRfdm0gbWF5IGJlIGFuIG92ZXJlc3RpbWF0ZSBvZiB0aGUKKyAgbnVtYmVyIG9mIHBhZ2VzIHBpbm5lZCBieSBhIHByb2Nlc3MuCisKKy9kZXYgZmlsZXMKKworICBUbyBjcmVhdGUgdGhlIGFwcHJvcHJpYXRlIGNoYXJhY3RlciBkZXZpY2UgZmlsZXMgYXV0b21hdGljYWxseSB3aXRoCisgIHVkZXYsIGEgcnVsZSBsaWtlCisKKyAgICBLRVJORUw9PSJ1dmVyYnMqIiwgTkFNRT0iaW5maW5pYmFuZC8layIKKworICBjYW4gYmUgdXNlZC4gIFRoaXMgd2lsbCBjcmVhdGUgZGV2aWNlIG5vZGVzIG5hbWVkCisKKyAgICAvZGV2L2luZmluaWJhbmQvdXZlcmJzMAorCisgIGFuZCBzbyBvbi4gIFNpbmNlIHRoZSBJbmZpbmlCYW5kIHVzZXJzcGFjZSB2ZXJicyBzaG91bGQgYmUgc2FmZSBmb3IKKyAgdXNlIGJ5IG5vbi1wcml2aWxlZ2VkIHByb2Nlc3NlcywgaXQgbWF5IGJlIHVzZWZ1bCB0byBhZGQgYW4KKyAgYXBwcm9wcmlhdGUgTU9ERSBvciBHUk9VUCB0byB0aGUgdWRldiBydWxlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pbml0LnR4dCBiL0RvY3VtZW50YXRpb24vaW5pdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM1YWQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaW5pdC50eHQKQEAgLTAsMCArMSw0OSBAQAorRXhwbGFpbmluZyB0aGUgZHJlYWRlZCAiTm8gaW5pdCBmb3VuZC4iIGJvb3QgaGFuZyBtZXNzYWdlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworT0ssIHNvIHlvdSd2ZSBnb3QgdGhpcyBwcmV0dHkgdW5pbnR1aXRpdmUgbWVzc2FnZSAoY3VycmVudGx5IGxvY2F0ZWQKK2luIGluaXQvbWFpbi5jKSBhbmQgYXJlIHdvbmRlcmluZyB3aGF0IHRoZSBIKioqIHdlbnQgd3JvbmcuCitTb21lIGhpZ2gtbGV2ZWwgcmVhc29ucyBmb3IgZmFpbHVyZSAobGlzdGVkIHJvdWdobHkgaW4gb3JkZXIgb2YgZXhlY3V0aW9uKQordG8gbG9hZCB0aGUgaW5pdCBiaW5hcnkgYXJlOgorQSkgVW5hYmxlIHRvIG1vdW50IHJvb3QgRlMKK0IpIGluaXQgYmluYXJ5IGRvZXNuJ3QgZXhpc3Qgb24gcm9vdGZzCitDKSBicm9rZW4gY29uc29sZSBkZXZpY2UKK0QpIGJpbmFyeSBleGlzdHMgYnV0IGRlcGVuZGVuY2llcyBub3QgYXZhaWxhYmxlCitFKSBiaW5hcnkgY2Fubm90IGJlIGxvYWRlZAorCitEZXRhaWxlZCBleHBsYW5hdGlvbnM6CiswKSBTZXQgImRlYnVnIiBrZXJuZWwgcGFyYW1ldGVyIChpbiBib290bG9hZGVyIGNvbmZpZyBmaWxlIG9yIENPTkZJR19DTURMSU5FKQorICAgdG8gZ2V0IG1vcmUgZGV0YWlsZWQga2VybmVsIG1lc3NhZ2VzLgorQSkgbWFrZSBzdXJlIHlvdSBoYXZlIHRoZSBjb3JyZWN0IHJvb3QgRlMgdHlwZQorICAgKGFuZCByb290PSBrZXJuZWwgcGFyYW1ldGVyIHBvaW50cyB0byB0aGUgY29ycmVjdCBwYXJ0aXRpb24pLAorICAgcmVxdWlyZWQgZHJpdmVycyBzdWNoIGFzIHN0b3JhZ2UgaGFyZHdhcmUgKHN1Y2ggYXMgU0NTSSBvciBVU0IhKQorICAgYW5kIGZpbGVzeXN0ZW0gKGV4dDMsIGpmZnMyIGV0Yy4pIGFyZSBidWlsdGluIChhbHRlcm5hdGl2ZWx5IGFzIG1vZHVsZXMsCisgICB0byBiZSBwcmUtbG9hZGVkIGJ5IGFuIGluaXRyZCkKK0MpIFBvc3NpYmx5IGEgY29uZmxpY3QgaW4gY29uc29sZT0gc2V0dXAgLS0+IGluaXRpYWwgY29uc29sZSB1bmF2YWlsYWJsZS4KKyAgIEUuZy4gc29tZSBzZXJpYWwgY29uc29sZXMgYXJlIHVucmVsaWFibGUgZHVlIHRvIHNlcmlhbCBJUlEgaXNzdWVzIChlLmcuCisgICBtaXNzaW5nIGludGVycnVwdC1iYXNlZCBjb25maWd1cmF0aW9uKS4KKyAgIFRyeSB1c2luZyBhIGRpZmZlcmVudCBjb25zb2xlPSBkZXZpY2Ugb3IgZS5nLiBuZXRjb25zb2xlPSAuCitEKSBlLmcuIHJlcXVpcmVkIGxpYnJhcnkgZGVwZW5kZW5jaWVzIG9mIHRoZSBpbml0IGJpbmFyeSBzdWNoIGFzCisgICAvbGliL2xkLWxpbnV4LnNvLjIgbWlzc2luZyBvciBicm9rZW4uIFVzZSByZWFkZWxmIC1kIDxJTklUPnxncmVwIE5FRURFRAorICAgdG8gZmluZCBvdXQgd2hpY2ggbGlicmFyaWVzIGFyZSByZXF1aXJlZC4KK0UpIG1ha2Ugc3VyZSB0aGUgYmluYXJ5J3MgYXJjaGl0ZWN0dXJlIG1hdGNoZXMgeW91ciBoYXJkd2FyZS4KKyAgIEUuZy4gaTM4NiB2cy4geDg2XzY0IG1pc21hdGNoLCBvciB0cnlpbmcgdG8gbG9hZCB4ODYgb24gQVJNIGhhcmR3YXJlLgorICAgSW4gY2FzZSB5b3UgdHJpZWQgbG9hZGluZyBhIG5vbi1iaW5hcnkgZmlsZSBoZXJlIChzaGVsbCBzY3JpcHQ/KSwKKyAgIHlvdSBzaG91bGQgbWFrZSBzdXJlIHRoYXQgdGhlIHNjcmlwdCBzcGVjaWZpZXMgYW4gaW50ZXJwcmV0ZXIgaW4gaXRzIHNoZWJhbmcKKyAgIGhlYWRlciBsaW5lICgjIS8uLi4pIHRoYXQgaXMgZnVsbHkgd29ya2luZyAoaW5jbHVkaW5nIGl0cyBsaWJyYXJ5CisgICBkZXBlbmRlbmNpZXMpLiBBbmQgYmVmb3JlIHRhY2tsaW5nIHNjcmlwdHMsIGJldHRlciBmaXJzdCB0ZXN0IGEgc2ltcGxlCisgICBub24tc2NyaXB0IGJpbmFyeSBzdWNoIGFzIC9iaW4vc2ggYW5kIGNvbmZpcm0gaXRzIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uLgorICAgVG8gZmluZCBvdXQgbW9yZSwgYWRkIGNvZGUgdG8gaW5pdC9tYWluLmMgdG8gZGlzcGxheSBrZXJuZWxfZXhlY3ZlKClzCisgICByZXR1cm4gdmFsdWVzLgorCitQbGVhc2UgZXh0ZW5kIHRoaXMgZXhwbGFuYXRpb24gd2hlbmV2ZXIgeW91IGZpbmQgbmV3IGZhaWx1cmUgY2F1c2VzCisoYWZ0ZXIgYWxsIGxvYWRpbmcgdGhlIGluaXQgYmluYXJ5IGlzIGEgQ1JJVElDQUwgYW5kIGhhcmQgdHJhbnNpdGlvbiBzdGVwCit3aGljaCBuZWVkcyB0byBiZSBtYWRlIGFzIHBhaW5sZXNzIGFzIHBvc3NpYmxlKSwgdGhlbiBzdWJtaXQgcGF0Y2ggdG8gTEtNTC4KK0Z1cnRoZXIgVE9ET3M6CistIEltcGxlbWVudCB0aGUgdmFyaW91cyBydW5faW5pdF9wcm9jZXNzKCkgaW52b2NhdGlvbnMgdmlhIGEgc3RydWN0IGFycmF5CisgIHdoaWNoIGNhbiB0aGVuIHN0b3JlIHRoZSBrZXJuZWxfZXhlY3ZlKCkgcmVzdWx0IHZhbHVlIGFuZCBvbiBmYWlsdXJlCisgIGxvZyBpdCBhbGwgYnkgaXRlcmF0aW5nIG92ZXIgX2FsbF8gcmVzdWx0cyAodmVyeSBpbXBvcnRhbnQgdXNhYmlsaXR5IGZpeCkuCistIHRyeSB0byBtYWtlIHRoZSBpbXBsZW1lbnRhdGlvbiBpdHNlbGYgbW9yZSBoZWxwZnVsIGluIGdlbmVyYWwsCisgIGUuZy4gYnkgcHJvdmlkaW5nIGFkZGl0aW9uYWwgZXJyb3IgbWVzc2FnZXMgYXQgYWZmZWN0ZWQgcGxhY2VzLgorCitBbmRyZWFzIE1vaHIgPGFuZGkgYXQgbGlzYXMgcGVyaW9kIGRlPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pbml0cmQudHh0IGIvRG9jdW1lbnRhdGlvbi9pbml0cmQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlMTgzOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2luaXRyZC50eHQKQEAgLTAsMCArMSwzNjYgQEAKK1VzaW5nIHRoZSBpbml0aWFsIFJBTSBkaXNrIChpbml0cmQpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitXcml0dGVuIDE5OTYsMjAwMCBieSBXZXJuZXIgQWxtZXNiZXJnZXIgPHdlcm5lci5hbG1lc2JlcmdlckBlcGZsLmNoPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgIEhhbnMgTGVybWVuIDxsZXJtZW5AZmdhbi5kZT4KKworCitpbml0cmQgcHJvdmlkZXMgdGhlIGNhcGFiaWxpdHkgdG8gbG9hZCBhIFJBTSBkaXNrIGJ5IHRoZSBib290IGxvYWRlci4KK1RoaXMgUkFNIGRpc2sgY2FuIHRoZW4gYmUgbW91bnRlZCBhcyB0aGUgcm9vdCBmaWxlIHN5c3RlbSBhbmQgcHJvZ3JhbXMKK2NhbiBiZSBydW4gZnJvbSBpdC4gQWZ0ZXJ3YXJkcywgYSBuZXcgcm9vdCBmaWxlIHN5c3RlbSBjYW4gYmUgbW91bnRlZAorZnJvbSBhIGRpZmZlcmVudCBkZXZpY2UuIFRoZSBwcmV2aW91cyByb290IChmcm9tIGluaXRyZCkgaXMgdGhlbiBtb3ZlZAordG8gYSBkaXJlY3RvcnkgYW5kIGNhbiBiZSBzdWJzZXF1ZW50bHkgdW5tb3VudGVkLgorCitpbml0cmQgaXMgbWFpbmx5IGRlc2lnbmVkIHRvIGFsbG93IHN5c3RlbSBzdGFydHVwIHRvIG9jY3VyIGluIHR3byBwaGFzZXMsCit3aGVyZSB0aGUga2VybmVsIGNvbWVzIHVwIHdpdGggYSBtaW5pbXVtIHNldCBvZiBjb21waWxlZC1pbiBkcml2ZXJzLCBhbmQKK3doZXJlIGFkZGl0aW9uYWwgbW9kdWxlcyBhcmUgbG9hZGVkIGZyb20gaW5pdHJkLgorCitUaGlzIGRvY3VtZW50IGdpdmVzIGEgYnJpZWYgb3ZlcnZpZXcgb2YgdGhlIHVzZSBvZiBpbml0cmQuIEEgbW9yZSBkZXRhaWxlZAorZGlzY3Vzc2lvbiBvZiB0aGUgYm9vdCBwcm9jZXNzIGNhbiBiZSBmb3VuZCBpbiBbMV0uCisKKworT3BlcmF0aW9uCistLS0tLS0tLS0KKworV2hlbiB1c2luZyBpbml0cmQsIHRoZSBzeXN0ZW0gdHlwaWNhbGx5IGJvb3RzIGFzIGZvbGxvd3M6CisKKyAgMSkgdGhlIGJvb3QgbG9hZGVyIGxvYWRzIHRoZSBrZXJuZWwgYW5kIHRoZSBpbml0aWFsIFJBTSBkaXNrCisgIDIpIHRoZSBrZXJuZWwgY29udmVydHMgaW5pdHJkIGludG8gYSAibm9ybWFsIiBSQU0gZGlzayBhbmQKKyAgICAgZnJlZXMgdGhlIG1lbW9yeSB1c2VkIGJ5IGluaXRyZAorICAzKSBpZiB0aGUgcm9vdCBkZXZpY2UgaXMgbm90IC9kZXYvcmFtMCwgdGhlIG9sZCAoZGVwcmVjYXRlZCkKKyAgICAgY2hhbmdlX3Jvb3QgcHJvY2VkdXJlIGlzIGZvbGxvd2VkLiBzZWUgdGhlICJPYnNvbGV0ZSByb290IGNoYW5nZQorICAgICBtZWNoYW5pc20iIHNlY3Rpb24gYmVsb3cuCisgIDQpIHJvb3QgZGV2aWNlIGlzIG1vdW50ZWQuIGlmIGl0IGlzIC9kZXYvcmFtMCwgdGhlIGluaXRyZCBpbWFnZSBpcworICAgICB0aGVuIG1vdW50ZWQgYXMgcm9vdAorICA1KSAvc2Jpbi9pbml0IGlzIGV4ZWN1dGVkICh0aGlzIGNhbiBiZSBhbnkgdmFsaWQgZXhlY3V0YWJsZSwgaW5jbHVkaW5nCisgICAgIHNoZWxsIHNjcmlwdHM7IGl0IGlzIHJ1biB3aXRoIHVpZCAwIGFuZCBjYW4gZG8gYmFzaWNhbGx5IGV2ZXJ5dGhpbmcKKyAgICAgaW5pdCBjYW4gZG8pLgorICA2KSBpbml0IG1vdW50cyB0aGUgInJlYWwiIHJvb3QgZmlsZSBzeXN0ZW0KKyAgNykgaW5pdCBwbGFjZXMgdGhlIHJvb3QgZmlsZSBzeXN0ZW0gYXQgdGhlIHJvb3QgZGlyZWN0b3J5IHVzaW5nIHRoZQorICAgICBwaXZvdF9yb290IHN5c3RlbSBjYWxsCisgIDgpIGluaXQgZXhlY3MgdGhlIC9zYmluL2luaXQgb24gdGhlIG5ldyByb290IGZpbGVzeXN0ZW0sIHBlcmZvcm1pbmcKKyAgICAgdGhlIHVzdWFsIGJvb3Qgc2VxdWVuY2UKKyAgOSkgdGhlIGluaXRyZCBmaWxlIHN5c3RlbSBpcyByZW1vdmVkCisKK05vdGUgdGhhdCBjaGFuZ2luZyB0aGUgcm9vdCBkaXJlY3RvcnkgZG9lcyBub3QgaW52b2x2ZSB1bm1vdW50aW5nIGl0LgorSXQgaXMgdGhlcmVmb3JlIHBvc3NpYmxlIHRvIGxlYXZlIHByb2Nlc3NlcyBydW5uaW5nIG9uIGluaXRyZCBkdXJpbmcgdGhhdAorcHJvY2VkdXJlLiBBbHNvIG5vdGUgdGhhdCBmaWxlIHN5c3RlbXMgbW91bnRlZCB1bmRlciBpbml0cmQgY29udGludWUgdG8KK2JlIGFjY2Vzc2libGUuCisKKworQm9vdCBjb21tYW5kLWxpbmUgb3B0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbml0cmQgYWRkcyB0aGUgZm9sbG93aW5nIG5ldyBvcHRpb25zOgorCisgIGluaXRyZD08cGF0aD4gICAgKGUuZy4gTE9BRExJTikKKworICAgIExvYWRzIHRoZSBzcGVjaWZpZWQgZmlsZSBhcyB0aGUgaW5pdGlhbCBSQU0gZGlzay4gV2hlbiB1c2luZyBMSUxPLCB5b3UKKyAgICBoYXZlIHRvIHNwZWNpZnkgdGhlIFJBTSBkaXNrIGltYWdlIGZpbGUgaW4gL2V0Yy9saWxvLmNvbmYsIHVzaW5nIHRoZQorICAgIElOSVRSRCBjb25maWd1cmF0aW9uIHZhcmlhYmxlLgorCisgIG5vaW5pdHJkCisKKyAgICBpbml0cmQgZGF0YSBpcyBwcmVzZXJ2ZWQgYnV0IGl0IGlzIG5vdCBjb252ZXJ0ZWQgdG8gYSBSQU0gZGlzayBhbmQKKyAgICB0aGUgIm5vcm1hbCIgcm9vdCBmaWxlIHN5c3RlbSBpcyBtb3VudGVkLiBpbml0cmQgZGF0YSBjYW4gYmUgcmVhZAorICAgIGZyb20gL2Rldi9pbml0cmQuIE5vdGUgdGhhdCB0aGUgZGF0YSBpbiBpbml0cmQgY2FuIGhhdmUgYW55IHN0cnVjdHVyZQorICAgIGluIHRoaXMgY2FzZSBhbmQgZG9lc24ndCBuZWNlc3NhcmlseSBoYXZlIHRvIGJlIGEgZmlsZSBzeXN0ZW0gaW1hZ2UuCisgICAgVGhpcyBvcHRpb24gaXMgdXNlZCBtYWlubHkgZm9yIGRlYnVnZ2luZy4KKworICAgIE5vdGU6IC9kZXYvaW5pdHJkIGlzIHJlYWQtb25seSBhbmQgaXQgY2FuIG9ubHkgYmUgdXNlZCBvbmNlLiBBcyBzb29uCisgICAgYXMgdGhlIGxhc3QgcHJvY2VzcyBoYXMgY2xvc2VkIGl0LCBhbGwgZGF0YSBpcyBmcmVlZCBhbmQgL2Rldi9pbml0cmQKKyAgICBjYW4ndCBiZSBvcGVuZWQgYW55bW9yZS4KKworICByb290PS9kZXYvcmFtMAorCisgICAgaW5pdHJkIGlzIG1vdW50ZWQgYXMgcm9vdCwgYW5kIHRoZSBub3JtYWwgYm9vdCBwcm9jZWR1cmUgaXMgZm9sbG93ZWQsCisgICAgd2l0aCB0aGUgUkFNIGRpc2sgbW91bnRlZCBhcyByb290LgorCitDb21wcmVzc2VkIGNwaW8gaW1hZ2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlY2VudCBrZXJuZWxzIGhhdmUgc3VwcG9ydCBmb3IgcG9wdWxhdGluZyBhIHJhbWRpc2sgZnJvbSBhIGNvbXByZXNzZWQgY3BpbworYXJjaGl2ZS4gT24gc3VjaCBzeXN0ZW1zLCB0aGUgY3JlYXRpb24gb2YgYSByYW1kaXNrIGltYWdlIGRvZXNuJ3QgbmVlZCB0bworaW52b2x2ZSBzcGVjaWFsIGJsb2NrIGRldmljZXMgb3IgbG9vcGJhY2tzOyB5b3UgbWVyZWx5IGNyZWF0ZSBhIGRpcmVjdG9yeSBvbgorZGlzayB3aXRoIHRoZSBkZXNpcmVkIGluaXRyZCBjb250ZW50LCBjZCB0byB0aGF0IGRpcmVjdG9yeSwgYW5kIHJ1biAoYXMgYW4KK2V4YW1wbGUpOgorCitmaW5kIC4gfCBjcGlvIC0tcXVpZXQgLUggbmV3YyAtbyB8IGd6aXAgLTkgLW4gPiAvYm9vdC9pbWFnZWZpbGUuaW1nCisKK0V4YW1pbmluZyB0aGUgY29udGVudHMgb2YgYW4gZXhpc3RpbmcgaW1hZ2UgZmlsZSBpcyBqdXN0IGFzIHNpbXBsZToKKworbWtkaXIgL3RtcC9pbWFnZWZpbGUKK2NkIC90bXAvaW1hZ2VmaWxlCitnemlwIC1jZCAvYm9vdC9pbWFnZWZpbGUuaW1nIHwgY3BpbyAtaW1kIC0tcXVpZXQKKworSW5zdGFsbGF0aW9uCistLS0tLS0tLS0tLS0KKworRmlyc3QsIGEgZGlyZWN0b3J5IGZvciB0aGUgaW5pdHJkIGZpbGUgc3lzdGVtIGhhcyB0byBiZSBjcmVhdGVkIG9uIHRoZQorIm5vcm1hbCIgcm9vdCBmaWxlIHN5c3RlbSwgZS5nLgorCisjIG1rZGlyIC9pbml0cmQKKworVGhlIG5hbWUgaXMgbm90IHJlbGV2YW50LiBNb3JlIGRldGFpbHMgY2FuIGJlIGZvdW5kIG9uIHRoZSBwaXZvdF9yb290KDIpCittYW4gcGFnZS4KKworSWYgdGhlIHJvb3QgZmlsZSBzeXN0ZW0gaXMgY3JlYXRlZCBkdXJpbmcgdGhlIGJvb3QgcHJvY2VkdXJlIChpLmUuIGlmCit5b3UncmUgYnVpbGRpbmcgYW4gaW5zdGFsbCBmbG9wcHkpLCB0aGUgcm9vdCBmaWxlIHN5c3RlbSBjcmVhdGlvbgorcHJvY2VkdXJlIHNob3VsZCBjcmVhdGUgdGhlIC9pbml0cmQgZGlyZWN0b3J5LgorCitJZiBpbml0cmQgd2lsbCBub3QgYmUgbW91bnRlZCBpbiBzb21lIGNhc2VzLCBpdHMgY29udGVudCBpcyBzdGlsbAorYWNjZXNzaWJsZSBpZiB0aGUgZm9sbG93aW5nIGRldmljZSBoYXMgYmVlbiBjcmVhdGVkOgorCisjIG1rbm9kIC9kZXYvaW5pdHJkIGIgMSAyNTAgCisjIGNobW9kIDQwMCAvZGV2L2luaXRyZAorCitTZWNvbmQsIHRoZSBrZXJuZWwgaGFzIHRvIGJlIGNvbXBpbGVkIHdpdGggUkFNIGRpc2sgc3VwcG9ydCBhbmQgd2l0aAorc3VwcG9ydCBmb3IgdGhlIGluaXRpYWwgUkFNIGRpc2sgZW5hYmxlZC4gQWxzbywgYXQgbGVhc3QgYWxsIGNvbXBvbmVudHMKK25lZWRlZCB0byBleGVjdXRlIHByb2dyYW1zIGZyb20gaW5pdHJkIChlLmcuIGV4ZWN1dGFibGUgZm9ybWF0IGFuZCBmaWxlCitzeXN0ZW0pIG11c3QgYmUgY29tcGlsZWQgaW50byB0aGUga2VybmVsLgorCitUaGlyZCwgeW91IGhhdmUgdG8gY3JlYXRlIHRoZSBSQU0gZGlzayBpbWFnZS4gVGhpcyBpcyBkb25lIGJ5IGNyZWF0aW5nIGEKK2ZpbGUgc3lzdGVtIG9uIGEgYmxvY2sgZGV2aWNlLCBjb3B5aW5nIGZpbGVzIHRvIGl0IGFzIG5lZWRlZCwgYW5kIHRoZW4KK2NvcHlpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrIGRldmljZSB0byB0aGUgaW5pdHJkIGZpbGUuIFdpdGggcmVjZW50CitrZXJuZWxzLCBhdCBsZWFzdCB0aHJlZSB0eXBlcyBvZiBkZXZpY2VzIGFyZSBzdWl0YWJsZSBmb3IgdGhhdDoKKworIC0gYSBmbG9wcHkgZGlzayAod29ya3MgZXZlcnl3aGVyZSBidXQgaXQncyBwYWluZnVsbHkgc2xvdykKKyAtIGEgUkFNIGRpc2sgKGZhc3QsIGJ1dCBhbGxvY2F0ZXMgcGh5c2ljYWwgbWVtb3J5KQorIC0gYSBsb29wYmFjayBkZXZpY2UgKHRoZSBtb3N0IGVsZWdhbnQgc29sdXRpb24pCisKK1dlJ2xsIGRlc2NyaWJlIHRoZSBsb29wYmFjayBkZXZpY2UgbWV0aG9kOgorCisgMSkgbWFrZSBzdXJlIGxvb3BiYWNrIGJsb2NrIGRldmljZXMgYXJlIGNvbmZpZ3VyZWQgaW50byB0aGUga2VybmVsCisgMikgY3JlYXRlIGFuIGVtcHR5IGZpbGUgc3lzdGVtIG9mIHRoZSBhcHByb3ByaWF0ZSBzaXplLCBlLmcuCisgICAgIyBkZCBpZj0vZGV2L3plcm8gb2Y9aW5pdHJkIGJzPTMwMGsgY291bnQ9MQorICAgICMgbWtlMmZzIC1GIC1tMCBpbml0cmQKKyAgICAoaWYgc3BhY2UgaXMgY3JpdGljYWwsIHlvdSBtYXkgd2FudCB0byB1c2UgdGhlIE1pbml4IEZTIGluc3RlYWQgb2YgRXh0MikKKyAzKSBtb3VudCB0aGUgZmlsZSBzeXN0ZW0sIGUuZy4KKyAgICAjIG1vdW50IC10IGV4dDIgLW8gbG9vcCBpbml0cmQgL21udAorIDQpIGNyZWF0ZSB0aGUgY29uc29sZSBkZXZpY2U6CisgICAgIyBta2RpciAvbW50L2RldgorICAgICMgbWtub2QgL21udC9kZXYvY29uc29sZSBjIDUgMQorIDUpIGNvcHkgYWxsIHRoZSBmaWxlcyB0aGF0IGFyZSBuZWVkZWQgdG8gcHJvcGVybHkgdXNlIHRoZSBpbml0cmQKKyAgICBlbnZpcm9ubWVudC4gRG9uJ3QgZm9yZ2V0IHRoZSBtb3N0IGltcG9ydGFudCBmaWxlLCAvc2Jpbi9pbml0CisgICAgTm90ZSB0aGF0IC9zYmluL2luaXQncyBwZXJtaXNzaW9ucyBtdXN0IGluY2x1ZGUgIngiIChleGVjdXRlKS4KKyA2KSBjb3JyZWN0IG9wZXJhdGlvbiB0aGUgaW5pdHJkIGVudmlyb25tZW50IGNhbiBmcmVxdWVudGx5IGJlIHRlc3RlZAorICAgIGV2ZW4gd2l0aG91dCByZWJvb3Rpbmcgd2l0aCB0aGUgY29tbWFuZAorICAgICMgY2hyb290IC9tbnQgL3NiaW4vaW5pdAorICAgIFRoaXMgaXMgb2YgY291cnNlIGxpbWl0ZWQgdG8gaW5pdHJkcyB0aGF0IGRvIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUKKyAgICBnZW5lcmFsIHN5c3RlbSBzdGF0ZSAoZS5nLiBieSByZWNvbmZpZ3VyaW5nIG5ldHdvcmsgaW50ZXJmYWNlcywKKyAgICBvdmVyd3JpdGluZyBtb3VudGVkIGRldmljZXMsIHRyeWluZyB0byBzdGFydCBhbHJlYWR5IHJ1bm5pbmcgZGVtb25zLAorICAgIGV0Yy4gTm90ZSBob3dldmVyIHRoYXQgaXQgaXMgdXN1YWxseSBwb3NzaWJsZSB0byB1c2UgcGl2b3Rfcm9vdCBpbgorICAgIHN1Y2ggYSBjaHJvb3QnZWQgaW5pdHJkIGVudmlyb25tZW50LikKKyA3KSB1bm1vdW50IHRoZSBmaWxlIHN5c3RlbQorICAgICMgdW1vdW50IC9tbnQKKyA4KSB0aGUgaW5pdHJkIGlzIG5vdyBpbiB0aGUgZmlsZSAiaW5pdHJkIi4gT3B0aW9uYWxseSwgaXQgY2FuIG5vdyBiZQorICAgIGNvbXByZXNzZWQKKyAgICAjIGd6aXAgLTkgaW5pdHJkCisKK0ZvciBleHBlcmltZW50aW5nIHdpdGggaW5pdHJkLCB5b3UgbWF5IHdhbnQgdG8gdGFrZSBhIHJlc2N1ZSBmbG9wcHkgYW5kCitvbmx5IGFkZCBhIHN5bWJvbGljIGxpbmsgZnJvbSAvc2Jpbi9pbml0IHRvIC9iaW4vc2guIEFsdGVybmF0aXZlbHksIHlvdQorY2FuIHRyeSB0aGUgZXhwZXJpbWVudGFsIG5ld2xpYiBlbnZpcm9ubWVudCBbMl0gdG8gY3JlYXRlIGEgc21hbGwKK2luaXRyZC4KKworRmluYWxseSwgeW91IGhhdmUgdG8gYm9vdCB0aGUga2VybmVsIGFuZCBsb2FkIGluaXRyZC4gQWxtb3N0IGFsbCBMaW51eAorYm9vdCBsb2FkZXJzIHN1cHBvcnQgaW5pdHJkLiBTaW5jZSB0aGUgYm9vdCBwcm9jZXNzIGlzIHN0aWxsIGNvbXBhdGlibGUKK3dpdGggYW4gb2xkZXIgbWVjaGFuaXNtLCB0aGUgZm9sbG93aW5nIGJvb3QgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMKK2hhdmUgdG8gYmUgZ2l2ZW46CisKKyAgcm9vdD0vZGV2L3JhbTAgcncKKworKHJ3IGlzIG9ubHkgbmVjZXNzYXJ5IGlmIHdyaXRpbmcgdG8gdGhlIGluaXRyZCBmaWxlIHN5c3RlbS4pCisKK1dpdGggTE9BRExJTiwgeW91IHNpbXBseSBleGVjdXRlCisKKyAgICAgTE9BRExJTiA8a2VybmVsPiBpbml0cmQ9PGRpc2tfaW1hZ2U+CitlLmcuIExPQURMSU4gQzpcTElOVVhcQlpJTUFHRSBpbml0cmQ9QzpcTElOVVhcSU5JVFJELkdaIHJvb3Q9L2Rldi9yYW0wIHJ3CisKK1dpdGggTElMTywgeW91IGFkZCB0aGUgb3B0aW9uIElOSVRSRD08cGF0aD4gdG8gZWl0aGVyIHRoZSBnbG9iYWwgc2VjdGlvbgorb3IgdG8gdGhlIHNlY3Rpb24gb2YgdGhlIHJlc3BlY3RpdmUga2VybmVsIGluIC9ldGMvbGlsby5jb25mLCBhbmQgcGFzcwordGhlIG9wdGlvbnMgdXNpbmcgQVBQRU5ELCBlLmcuCisKKyAgaW1hZ2UgPSAvYnpJbWFnZQorICAgIGluaXRyZCA9IC9ib290L2luaXRyZC5negorICAgIGFwcGVuZCA9ICJyb290PS9kZXYvcmFtMCBydyIKKworYW5kIHJ1biAvc2Jpbi9saWxvCisKK0ZvciBvdGhlciBib290IGxvYWRlcnMsIHBsZWFzZSByZWZlciB0byB0aGUgcmVzcGVjdGl2ZSBkb2N1bWVudGF0aW9uLgorCitOb3cgeW91IGNhbiBib290IGFuZCBlbmpveSB1c2luZyBpbml0cmQuCisKKworQ2hhbmdpbmcgdGhlIHJvb3QgZGV2aWNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hlbiBmaW5pc2hlZCB3aXRoIGl0cyBkdXRpZXMsIGluaXQgdHlwaWNhbGx5IGNoYW5nZXMgdGhlIHJvb3QgZGV2aWNlCithbmQgcHJvY2VlZHMgd2l0aCBzdGFydGluZyB0aGUgTGludXggc3lzdGVtIG9uIHRoZSAicmVhbCIgcm9vdCBkZXZpY2UuCisKK1RoZSBwcm9jZWR1cmUgaW52b2x2ZXMgdGhlIGZvbGxvd2luZyBzdGVwczoKKyAtIG1vdW50aW5nIHRoZSBuZXcgcm9vdCBmaWxlIHN5c3RlbQorIC0gdHVybmluZyBpdCBpbnRvIHRoZSByb290IGZpbGUgc3lzdGVtCisgLSByZW1vdmluZyBhbGwgYWNjZXNzZXMgdG8gdGhlIG9sZCAoaW5pdHJkKSByb290IGZpbGUgc3lzdGVtCisgLSB1bm1vdW50aW5nIHRoZSBpbml0cmQgZmlsZSBzeXN0ZW0gYW5kIGRlLWFsbG9jYXRpbmcgdGhlIFJBTSBkaXNrCisKK01vdW50aW5nIHRoZSBuZXcgcm9vdCBmaWxlIHN5c3RlbSBpcyBlYXN5OiBpdCBqdXN0IG5lZWRzIHRvIGJlIG1vdW50ZWQgb24KK2EgZGlyZWN0b3J5IHVuZGVyIHRoZSBjdXJyZW50IHJvb3QuIEV4YW1wbGU6CisKKyMgbWtkaXIgL25ldy1yb290CisjIG1vdW50IC1vIHJvIC9kZXYvaGRhMSAvbmV3LXJvb3QKKworVGhlIHJvb3QgY2hhbmdlIGlzIGFjY29tcGxpc2hlZCB3aXRoIHRoZSBwaXZvdF9yb290IHN5c3RlbSBjYWxsLCB3aGljaAoraXMgYWxzbyBhdmFpbGFibGUgdmlhIHRoZSBwaXZvdF9yb290IHV0aWxpdHkgKHNlZSBwaXZvdF9yb290KDgpIG1hbgorcGFnZTsgcGl2b3Rfcm9vdCBpcyBkaXN0cmlidXRlZCB3aXRoIHV0aWwtbGludXggdmVyc2lvbiAyLjEwaCBvciBoaWdoZXIKK1szXSkuIHBpdm90X3Jvb3QgbW92ZXMgdGhlIGN1cnJlbnQgcm9vdCB0byBhIGRpcmVjdG9yeSB1bmRlciB0aGUgbmV3Cityb290LCBhbmQgcHV0cyB0aGUgbmV3IHJvb3QgYXQgaXRzIHBsYWNlLiBUaGUgZGlyZWN0b3J5IGZvciB0aGUgb2xkIHJvb3QKK211c3QgZXhpc3QgYmVmb3JlIGNhbGxpbmcgcGl2b3Rfcm9vdC4gRXhhbXBsZToKKworIyBjZCAvbmV3LXJvb3QKKyMgbWtkaXIgaW5pdHJkCisjIHBpdm90X3Jvb3QgLiBpbml0cmQKKworTm93LCB0aGUgaW5pdCBwcm9jZXNzIG1heSBzdGlsbCBhY2Nlc3MgdGhlIG9sZCByb290IHZpYSBpdHMKK2V4ZWN1dGFibGUsIHNoYXJlZCBsaWJyYXJpZXMsIHN0YW5kYXJkIGlucHV0L291dHB1dC9lcnJvciwgYW5kIGl0cworY3VycmVudCByb290IGRpcmVjdG9yeS4gQWxsIHRoZXNlIHJlZmVyZW5jZXMgYXJlIGRyb3BwZWQgYnkgdGhlCitmb2xsb3dpbmcgY29tbWFuZDoKKworIyBleGVjIGNocm9vdCAuIHdoYXQtZm9sbG93cyA8ZGV2L2NvbnNvbGUgPmRldi9jb25zb2xlIDI+JjEKKworV2hlcmUgd2hhdC1mb2xsb3dzIGlzIGEgcHJvZ3JhbSB1bmRlciB0aGUgbmV3IHJvb3QsIGUuZy4gL3NiaW4vaW5pdAorSWYgdGhlIG5ldyByb290IGZpbGUgc3lzdGVtIHdpbGwgYmUgdXNlZCB3aXRoIHVkZXYgYW5kIGhhcyBubyB2YWxpZAorL2RldiBkaXJlY3RvcnksIHVkZXYgbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgaW52b2tpbmcgY2hyb290IGluIG9yZGVyCit0byBwcm92aWRlIC9kZXYvY29uc29sZS4KKworTm90ZTogaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBwaXZvdF9yb290IG1heSBjaGFuZ2Ugd2l0aCB0aW1lLiBJbiBvcmRlcgordG8gZW5zdXJlIGNvbXBhdGliaWxpdHksIHRoZSBmb2xsb3dpbmcgcG9pbnRzIHNob3VsZCBiZSBvYnNlcnZlZDoKKworIC0gYmVmb3JlIGNhbGxpbmcgcGl2b3Rfcm9vdCwgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IG9mIHRoZSBpbnZva2luZworICAgcHJvY2VzcyBzaG91bGQgcG9pbnQgdG8gdGhlIG5ldyByb290IGRpcmVjdG9yeQorIC0gdXNlIC4gYXMgdGhlIGZpcnN0IGFyZ3VtZW50LCBhbmQgdGhlIF9yZWxhdGl2ZV8gcGF0aCBvZiB0aGUgZGlyZWN0b3J5CisgICBmb3IgdGhlIG9sZCByb290IGFzIHRoZSBzZWNvbmQgYXJndW1lbnQKKyAtIGEgY2hyb290IHByb2dyYW0gbXVzdCBiZSBhdmFpbGFibGUgdW5kZXIgdGhlIG9sZCBhbmQgdGhlIG5ldyByb290CisgLSBjaHJvb3QgdG8gdGhlIG5ldyByb290IGFmdGVyd2FyZHMKKyAtIHVzZSByZWxhdGl2ZSBwYXRocyBmb3IgZGV2L2NvbnNvbGUgaW4gdGhlIGV4ZWMgY29tbWFuZAorCitOb3csIHRoZSBpbml0cmQgY2FuIGJlIHVubW91bnRlZCBhbmQgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgYnkgdGhlIFJBTQorZGlzayBjYW4gYmUgZnJlZWQ6CisKKyMgdW1vdW50IC9pbml0cmQKKyMgYmxvY2tkZXYgLS1mbHVzaGJ1ZnMgL2Rldi9yYW0wCisKK0l0IGlzIGFsc28gcG9zc2libGUgdG8gdXNlIGluaXRyZCB3aXRoIGFuIE5GUy1tb3VudGVkIHJvb3QsIHNlZSB0aGUKK3Bpdm90X3Jvb3QoOCkgbWFuIHBhZ2UgZm9yIGRldGFpbHMuCisKKworVXNhZ2Ugc2NlbmFyaW9zCistLS0tLS0tLS0tLS0tLS0KKworVGhlIG1haW4gbW90aXZhdGlvbiBmb3IgaW1wbGVtZW50aW5nIGluaXRyZCB3YXMgdG8gYWxsb3cgZm9yIG1vZHVsYXIKK2tlcm5lbCBjb25maWd1cmF0aW9uIGF0IHN5c3RlbSBpbnN0YWxsYXRpb24uIFRoZSBwcm9jZWR1cmUgd291bGQgd29yaworYXMgZm9sbG93czoKKworICAxKSBzeXN0ZW0gYm9vdHMgZnJvbSBmbG9wcHkgb3Igb3RoZXIgbWVkaWEgd2l0aCBhIG1pbmltYWwga2VybmVsCisgICAgIChlLmcuIHN1cHBvcnQgZm9yIFJBTSBkaXNrcywgaW5pdHJkLCBhLm91dCwgYW5kIHRoZSBFeHQyIEZTKSBhbmQKKyAgICAgbG9hZHMgaW5pdHJkCisgIDIpIC9zYmluL2luaXQgZGV0ZXJtaW5lcyB3aGF0IGlzIG5lZWRlZCB0byAoMSkgbW91bnQgdGhlICJyZWFsIiByb290IEZTCisgICAgIChpLmUuIGRldmljZSB0eXBlLCBkZXZpY2UgZHJpdmVycywgZmlsZSBzeXN0ZW0pIGFuZCAoMikgdGhlCisgICAgIGRpc3RyaWJ1dGlvbiBtZWRpYSAoZS5nLiBDRC1ST00sIG5ldHdvcmssIHRhcGUsIC4uLikuIFRoaXMgY2FuIGJlCisgICAgIGRvbmUgYnkgYXNraW5nIHRoZSB1c2VyLCBieSBhdXRvLXByb2JpbmcsIG9yIGJ5IHVzaW5nIGEgaHlicmlkCisgICAgIGFwcHJvYWNoLgorICAzKSAvc2Jpbi9pbml0IGxvYWRzIHRoZSBuZWNlc3Nhcnkga2VybmVsIG1vZHVsZXMKKyAgNCkgL3NiaW4vaW5pdCBjcmVhdGVzIGFuZCBwb3B1bGF0ZXMgdGhlIHJvb3QgZmlsZSBzeXN0ZW0gKHRoaXMgZG9lc24ndAorICAgICBoYXZlIHRvIGJlIGEgdmVyeSB1c2FibGUgc3lzdGVtIHlldCkKKyAgNSkgL3NiaW4vaW5pdCBpbnZva2VzIHBpdm90X3Jvb3QgdG8gY2hhbmdlIHRoZSByb290IGZpbGUgc3lzdGVtIGFuZAorICAgICBleGVjcyAtIHZpYSBjaHJvb3QgLSBhIHByb2dyYW0gdGhhdCBjb250aW51ZXMgdGhlIGluc3RhbGxhdGlvbgorICA2KSB0aGUgYm9vdCBsb2FkZXIgaXMgaW5zdGFsbGVkCisgIDcpIHRoZSBib290IGxvYWRlciBpcyBjb25maWd1cmVkIHRvIGxvYWQgYW4gaW5pdHJkIHdpdGggdGhlIHNldCBvZgorICAgICBtb2R1bGVzIHRoYXQgd2FzIHVzZWQgdG8gYnJpbmcgdXAgdGhlIHN5c3RlbSAoZS5nLiAvaW5pdHJkIGNhbiBiZQorICAgICBtb2RpZmllZCwgdGhlbiB1bm1vdW50ZWQsIGFuZCBmaW5hbGx5LCB0aGUgaW1hZ2UgaXMgd3JpdHRlbiBmcm9tCisgICAgIC9kZXYvcmFtMCBvciAvZGV2L3JkLzAgdG8gYSBmaWxlKQorICA4KSBub3cgdGhlIHN5c3RlbSBpcyBib290YWJsZSBhbmQgYWRkaXRpb25hbCBpbnN0YWxsYXRpb24gdGFza3MgY2FuIGJlCisgICAgIHBlcmZvcm1lZAorCitUaGUga2V5IHJvbGUgb2YgaW5pdHJkIGhlcmUgaXMgdG8gcmUtdXNlIHRoZSBjb25maWd1cmF0aW9uIGRhdGEgZHVyaW5nCitub3JtYWwgc3lzdGVtIG9wZXJhdGlvbiB3aXRob3V0IHJlcXVpcmluZyB0aGUgdXNlIG9mIGEgYmxvYXRlZCAiZ2VuZXJpYyIKK2tlcm5lbCBvciByZS1jb21waWxpbmcgb3IgcmUtbGlua2luZyB0aGUga2VybmVsLgorCitBIHNlY29uZCBzY2VuYXJpbyBpcyBmb3IgaW5zdGFsbGF0aW9ucyB3aGVyZSBMaW51eCBydW5zIG9uIHN5c3RlbXMgd2l0aAorZGlmZmVyZW50IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIGluIGEgc2luZ2xlIGFkbWluaXN0cmF0aXZlIGRvbWFpbi4gSW4KK3N1Y2ggY2FzZXMsIGl0IGlzIGRlc2lyYWJsZSB0byBnZW5lcmF0ZSBvbmx5IGEgc21hbGwgc2V0IG9mIGtlcm5lbHMKKyhpZGVhbGx5IG9ubHkgb25lKSBhbmQgdG8ga2VlcCB0aGUgc3lzdGVtLXNwZWNpZmljIHBhcnQgb2YgY29uZmlndXJhdGlvbgoraW5mb3JtYXRpb24gYXMgc21hbGwgYXMgcG9zc2libGUuIEluIHRoaXMgY2FzZSwgYSBjb21tb24gaW5pdHJkIGNvdWxkIGJlCitnZW5lcmF0ZWQgd2l0aCBhbGwgdGhlIG5lY2Vzc2FyeSBtb2R1bGVzLiBUaGVuLCBvbmx5IC9zYmluL2luaXQgb3IgYSBmaWxlCityZWFkIGJ5IGl0IHdvdWxkIGhhdmUgdG8gYmUgZGlmZmVyZW50LgorCitBIHRoaXJkIHNjZW5hcmlvIGlzIG1vcmUgY29udmVuaWVudCByZWNvdmVyeSBkaXNrcywgYmVjYXVzZSBpbmZvcm1hdGlvbgorbGlrZSB0aGUgbG9jYXRpb24gb2YgdGhlIHJvb3QgRlMgcGFydGl0aW9uIGRvZXNuJ3QgaGF2ZSB0byBiZSBwcm92aWRlZCBhdAorYm9vdCB0aW1lLCBidXQgdGhlIHN5c3RlbSBsb2FkZWQgZnJvbSBpbml0cmQgY2FuIGludm9rZSBhIHVzZXItZnJpZW5kbHkKK2RpYWxvZyBhbmQgaXQgY2FuIGFsc28gcGVyZm9ybSBzb21lIHNhbml0eSBjaGVja3MgKG9yIGV2ZW4gc29tZSBmb3JtIG9mCithdXRvLWRldGVjdGlvbikuCisKK0xhc3Qgbm90IGxlYXN0LCBDRC1ST00gZGlzdHJpYnV0b3JzIG1heSB1c2UgaXQgZm9yIGJldHRlciBpbnN0YWxsYXRpb24KK2Zyb20gQ0QsIGUuZy4gYnkgdXNpbmcgYSBib290IGZsb3BweSBhbmQgYm9vdHN0cmFwcGluZyBhIGJpZ2dlciBSQU0gZGlzawordmlhIGluaXRyZCBmcm9tIENEOyBvciBieSBib290aW5nIHZpYSBhIGxvYWRlciBsaWtlIExPQURMSU4gb3IgZGlyZWN0bHkKK2Zyb20gdGhlIENELVJPTSwgYW5kIGxvYWRpbmcgdGhlIFJBTSBkaXNrIGZyb20gQ0Qgd2l0aG91dCBuZWVkIG9mCitmbG9wcGllcy4gCisKKworT2Jzb2xldGUgcm9vdCBjaGFuZ2UgbWVjaGFuaXNtCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZvbGxvd2luZyBtZWNoYW5pc20gd2FzIHVzZWQgYmVmb3JlIHRoZSBpbnRyb2R1Y3Rpb24gb2YgcGl2b3Rfcm9vdC4KK0N1cnJlbnQga2VybmVscyBzdGlsbCBzdXBwb3J0IGl0LCBidXQgeW91IHNob3VsZCBfbm90XyByZWx5IG9uIGl0cworY29udGludWVkIGF2YWlsYWJpbGl0eS4KKworSXQgd29ya3MgYnkgbW91bnRpbmcgdGhlICJyZWFsIiByb290IGRldmljZSAoaS5lLiB0aGUgb25lIHNldCB3aXRoIHJkZXYKK2luIHRoZSBrZXJuZWwgaW1hZ2Ugb3Igd2l0aCByb290PS4uLiBhdCB0aGUgYm9vdCBjb21tYW5kIGxpbmUpIGFzIHRoZQorcm9vdCBmaWxlIHN5c3RlbSB3aGVuIGxpbnV4cmMgZXhpdHMuIFRoZSBpbml0cmQgZmlsZSBzeXN0ZW0gaXMgdGhlbgordW5tb3VudGVkLCBvciwgaWYgaXQgaXMgc3RpbGwgYnVzeSwgbW92ZWQgdG8gYSBkaXJlY3RvcnkgL2luaXRyZCwgaWYKK3N1Y2ggYSBkaXJlY3RvcnkgZXhpc3RzIG9uIHRoZSBuZXcgcm9vdCBmaWxlIHN5c3RlbS4KKworSW4gb3JkZXIgdG8gdXNlIHRoaXMgbWVjaGFuaXNtLCB5b3UgZG8gbm90IGhhdmUgdG8gc3BlY2lmeSB0aGUgYm9vdAorY29tbWFuZCBvcHRpb25zIHJvb3QsIGluaXQsIG9yIHJ3LiAoSWYgc3BlY2lmaWVkLCB0aGV5IHdpbGwgYWZmZWN0Cit0aGUgcmVhbCByb290IGZpbGUgc3lzdGVtLCBub3QgdGhlIGluaXRyZCBlbnZpcm9ubWVudC4pCisgIAorSWYgL3Byb2MgaXMgbW91bnRlZCwgdGhlICJyZWFsIiByb290IGRldmljZSBjYW4gYmUgY2hhbmdlZCBmcm9tIHdpdGhpbgorbGludXhyYyBieSB3cml0aW5nIHRoZSBudW1iZXIgb2YgdGhlIG5ldyByb290IEZTIGRldmljZSB0byB0aGUgc3BlY2lhbAorZmlsZSAvcHJvYy9zeXMva2VybmVsL3JlYWwtcm9vdC1kZXYsIGUuZy4KKworICAjIGVjaG8gMHgzMDEgPi9wcm9jL3N5cy9rZXJuZWwvcmVhbC1yb290LWRldgorCitOb3RlIHRoYXQgdGhlIG1lY2hhbmlzbSBpcyBpbmNvbXBhdGlibGUgd2l0aCBORlMgYW5kIHNpbWlsYXIgZmlsZQorc3lzdGVtcy4KKworVGhpcyBvbGQsIGRlcHJlY2F0ZWQgbWVjaGFuaXNtIGlzIGNvbW1vbmx5IGNhbGxlZCAiY2hhbmdlX3Jvb3QiLCB3aGlsZQordGhlIG5ldywgc3VwcG9ydGVkIG1lY2hhbmlzbSBpcyBjYWxsZWQgInBpdm90X3Jvb3QiLgorCisKK01peGVkIGNoYW5nZV9yb290IGFuZCBwaXZvdF9yb290IG1lY2hhbmlzbQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0luIGNhc2UgeW91IGRpZCBub3Qgd2FudCB0byB1c2Ugcm9vdD0vZGV2L3JhbTAgdG8gdHJpZ2dlciB0aGUgcGl2b3Rfcm9vdAorbWVjaGFuaXNtLCB5b3UgbWF5IGNyZWF0ZSBib3RoIC9saW51eHJjIGFuZCAvc2Jpbi9pbml0IGluIHlvdXIgaW5pdHJkIGltYWdlLgorCisvbGludXhyYyB3b3VsZCBjb250YWluIG9ubHkgdGhlIGZvbGxvd2luZzoKKworIyEgL2Jpbi9zaAorbW91bnQgLW4gLXQgcHJvYyBwcm9jIC9wcm9jCitlY2hvIDB4MDEwMCA+L3Byb2Mvc3lzL2tlcm5lbC9yZWFsLXJvb3QtZGV2Cit1bW91bnQgLW4gL3Byb2MKKworT25jZSBsaW51eHJjIGV4aXRlZCwgdGhlIGtlcm5lbCB3b3VsZCBtb3VudCBhZ2FpbiB5b3VyIGluaXRyZCBhcyByb290LAordGhpcyB0aW1lIGV4ZWN1dGluZyAvc2Jpbi9pbml0LiBBZ2FpbiwgaXQgd291bGQgYmUgdGhlIGR1dHkgb2YgdGhpcyBpbml0Cit0byBidWlsZCB0aGUgcmlnaHQgZW52aXJvbm1lbnQgKG1heWJlIHVzaW5nIHRoZSByb290PSBkZXZpY2UgcGFzc2VkIG9uCit0aGUgY21kbGluZSkgYmVmb3JlIHRoZSBmaW5hbCBleGVjdXRpb24gb2YgdGhlIHJlYWwgL3NiaW4vaW5pdC4KKworCitSZXNvdXJjZXMKKy0tLS0tLS0tLQorCitbMV0gQWxtZXNiZXJnZXIsIFdlcm5lcjsgIkJvb3RpbmcgTGludXg6IFRoZSBIaXN0b3J5IGFuZCB0aGUgRnV0dXJlIgorICAgIGh0dHA6Ly93d3cuYWxtZXNiZXJnZXIubmV0L2N2L3BhcGVycy9vbHMyay05LnBzLmd6CitbMl0gbmV3bGliIHBhY2thZ2UgKGV4cGVyaW1lbnRhbCksIHdpdGggaW5pdHJkIGV4YW1wbGUKKyAgICBodHRwOi8vc291cmNlcy5yZWRoYXQuY29tL25ld2xpYi8KK1szXSB1dGlsLWxpbnV4OiBNaXNjZWxsYW5lb3VzIHV0aWxpdGllcyBmb3IgTGludXgKKyAgICBodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lucHV0L2FscHMudHh0IGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9hbHBzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmVjMTEzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9hbHBzLnR4dApAQCAtMCwwICsxLDMyMSBAQAorQUxQUyBUb3VjaHBhZCBQcm90b2NvbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLQorQ3VycmVudGx5IHRoZSBBTFBTIHRvdWNocGFkIGRyaXZlciBzdXBwb3J0cyBzZXZlbiBwcm90b2NvbCB2ZXJzaW9ucyBpbiB1c2UgYnkKK0FMUFMgdG91Y2hwYWRzLCBjYWxsZWQgdmVyc2lvbnMgMSwgMiwgMywgNCwgNSwgNiBhbmQgNy4KKworU2luY2Ugcm91Z2hseSBtaWQtMjAxMCBzZXZlcmFsIG5ldyBBTFBTIHRvdWNocGFkcyBoYXZlIGJlZW4gcmVsZWFzZWQgYW5kCitpbnRlZ3JhdGVkIGludG8gYSB2YXJpZXR5IG9mIGxhcHRvcHMgYW5kIG5ldGJvb2tzLiAgVGhlc2UgbmV3IHRvdWNocGFkcworaGF2ZSBlbm91Z2ggYmVoYXZpb3IgZGlmZmVyZW5jZXMgdGhhdCB0aGUgYWxwc19tb2RlbF9kYXRhIGRlZmluaXRpb24KK3RhYmxlLCBkZXNjcmliaW5nIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBkaWZmZXJlbnQgdmVyc2lvbnMsIGlzIG5vIGxvbmdlcgorYWRlcXVhdGUuICBUaGUgZGVzaWduIGNob2ljZXMgd2VyZSB0byByZS1kZWZpbmUgdGhlIGFscHNfbW9kZWxfZGF0YQordGFibGUsIHdpdGggdGhlIHJpc2sgb2YgcmVncmVzc2lvbiB0ZXN0aW5nIGV4aXN0aW5nIGRldmljZXMsIG9yIGlzb2xhdGUKK3RoZSBuZXcgZGV2aWNlcyBvdXRzaWRlIG9mIHRoZSBhbHBzX21vZGVsX2RhdGEgdGFibGUuICBUaGUgbGF0dGVyIGRlc2lnbgorY2hvaWNlIHdhcyBtYWRlLiAgVGhlIG5ldyB0b3VjaHBhZCBzaWduYXR1cmVzIGFyZSBuYW1lZDogIlJ1c2htb3JlIiwKKyJQaW5uYWNsZSIsIGFuZCAiRG9scGhpbiIsIHdoaWNoIHlvdSB3aWxsIHNlZSBpbiB0aGUgYWxwcy5jIGNvZGUuCitGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZG9jdW1lbnQsIHRoaXMgZ3JvdXAgb2YgQUxQUyB0b3VjaHBhZHMgd2lsbAorZ2VuZXJpY2FsbHkgYmUgY2FsbGVkICJuZXcgQUxQUyB0b3VjaHBhZHMiLgorCitXZSBleHBlcmltZW50ZWQgd2l0aCBwcm9iaW5nIHRoZSBBQ1BJIGludGVyZmFjZSBfSElEIChIYXJkd2FyZSBJRCkvX0NJRAorKENvbXBhdGliaWxpdHkgSUQpIGRlZmluaXRpb24gYXMgYSB3YXkgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhlCitkaWZmZXJlbnQgQUxQUyB2YXJpYW50cyBidXQgdGhlcmUgZGlkIG5vdCBhcHBlYXIgdG8gYmUgYSAxOjEgbWFwcGluZy4KK0luIGZhY3QsIGl0IGFwcGVhcmVkIHRvIGJlIGFuIG06biBtYXBwaW5nIGJldHdlZW4gdGhlIF9ISUQgYW5kIGFjdHVhbAoraGFyZHdhcmUgdHlwZS4KKworRGV0ZWN0aW9uCistLS0tLS0tLS0KKworQWxsIEFMUFMgdG91Y2hwYWRzIHNob3VsZCByZXNwb25kIHRvIHRoZSAiRTYgcmVwb3J0IiBjb21tYW5kIHNlcXVlbmNlOgorRTgtRTYtRTYtRTYtRTkuIEFuIEFMUFMgdG91Y2hwYWQgc2hvdWxkIHJlc3BvbmQgd2l0aCBlaXRoZXIgMDAtMDAtMEEgb3IKKzAwLTAwLTY0IGlmIG5vIGJ1dHRvbnMgYXJlIHByZXNzZWQuIFRoZSBiaXRzIDAtMiBvZiB0aGUgZmlyc3QgYnl0ZSB3aWxsIGJlIDFzCitpZiBzb21lIGJ1dHRvbnMgYXJlIHByZXNzZWQuCisKK0lmIHRoZSBFNiByZXBvcnQgaXMgc3VjY2Vzc2Z1bCwgdGhlIHRvdWNocGFkIG1vZGVsIGlzIGlkZW50aWZpZWQgdXNpbmcgdGhlICJFNworcmVwb3J0IiBzZXF1ZW5jZTogRTgtRTctRTctRTctRTkuIFRoZSByZXNwb25zZSBpcyB0aGUgbW9kZWwgc2lnbmF0dXJlIGFuZCBpcworbWF0Y2hlZCBhZ2FpbnN0IGtub3duIG1vZGVscyBpbiB0aGUgYWxwc19tb2RlbF9kYXRhX2FycmF5LgorCitGb3Igb2xkZXIgdG91Y2hwYWRzIHN1cHBvcnRpbmcgcHJvdG9jb2wgdmVyc2lvbnMgMyBhbmQgNCwgdGhlIEU3IHJlcG9ydAorbW9kZWwgc2lnbmF0dXJlIGlzIGFsd2F5cyA3My0wMi02NC4gVG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRoZXNlCit2ZXJzaW9ucywgdGhlIHJlc3BvbnNlIGZyb20gdGhlICJFbnRlciBDb21tYW5kIE1vZGUiIHNlcXVlbmNlIG11c3QgYmUKK2luc3BlY3RlZCBhcyBkZXNjcmliZWQgYmVsb3cuCisKK1RoZSBuZXcgQUxQUyB0b3VjaHBhZHMgaGF2ZSBhbiBFNyBzaWduYXR1cmUgb2YgNzMtMDMtNTAgb3IgNzMtMDMtMEEgYnV0CitzZWVtIHRvIGJlIGJldHRlciBkaWZmZXJlbnRpYXRlZCBieSB0aGUgRUMgQ29tbWFuZCBNb2RlIHJlc3BvbnNlLgorCitDb21tYW5kIE1vZGUKKy0tLS0tLS0tLS0tLQorCitQcm90b2NvbCB2ZXJzaW9ucyAzIGFuZCA0IGhhdmUgYSBjb21tYW5kIG1vZGUgdGhhdCBpcyB1c2VkIHRvIHJlYWQgYW5kIHdyaXRlCitvbmUtYnl0ZSBkZXZpY2UgcmVnaXN0ZXJzIGluIGEgMTYtYml0IGFkZHJlc3Mgc3BhY2UuIFRoZSBjb21tYW5kIHNlcXVlbmNlCitFQy1FQy1FQy1FOSBwbGFjZXMgdGhlIGRldmljZSBpbiBjb21tYW5kIG1vZGUsIGFuZCB0aGUgZGV2aWNlIHdpbGwgcmVzcG9uZAord2l0aCA4OC0wNyBmb2xsb3dlZCBieSBhIHRoaXJkIGJ5dGUuIFRoaXMgdGhpcmQgYnl0ZSBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUKK3doZXRoZXIgdGhlIGRldmljZXMgdXNlcyB0aGUgdmVyc2lvbiAzIG9yIDQgcHJvdG9jb2wuCisKK1RvIGV4aXQgY29tbWFuZCBtb2RlLCBQU01PVVNFX0NNRF9TRVRTVFJFQU0gKEVBKSBpcyBzZW50IHRvIHRoZSB0b3VjaHBhZC4KKworV2hpbGUgaW4gY29tbWFuZCBtb2RlLCByZWdpc3RlciBhZGRyZXNzZXMgY2FuIGJlIHNldCBieSBmaXJzdCBzZW5kaW5nIGEKK3NwZWNpZmljIGNvbW1hbmQsIGVpdGhlciBFQyBmb3IgdjMgZGV2aWNlcyBvciBGNSBmb3IgdjQgZGV2aWNlcy4gVGhlbiB0aGUKK2FkZHJlc3MgaXMgc2VudCBvbmUgbmliYmxlIGF0IGEgdGltZSwgd2hlcmUgZWFjaCBuaWJibGUgaXMgZW5jb2RlZCBhcyBhCitjb21tYW5kIHdpdGggb3B0aW9uYWwgZGF0YS4gVGhpcyBlbmNvZGluZyBkaWZmZXJzIHNsaWdodGx5IGJldHdlZW4gdGhlIHYzIGFuZAordjQgcHJvdG9jb2xzLgorCitPbmNlIGFuIGFkZHJlc3MgaGFzIGJlZW4gc2V0LCB0aGUgYWRkcmVzc2VkIHJlZ2lzdGVyIGNhbiBiZSByZWFkIGJ5IHNlbmRpbmcKK1BTTU9VU0VfQ01EX0dFVElORk8gKEU5KS4gVGhlIGZpcnN0IHR3byBieXRlcyBvZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgdGhlCithZGRyZXNzIG9mIHRoZSByZWdpc3RlciBiZWluZyByZWFkLCBhbmQgdGhlIHRoaXJkIGNvbnRhaW5zIHRoZSB2YWx1ZSBvZiB0aGUKK3JlZ2lzdGVyLiBSZWdpc3RlcnMgYXJlIHdyaXR0ZW4gYnkgd3JpdGluZyB0aGUgdmFsdWUgb25lIG5pYmJsZSBhdCBhIHRpbWUKK3VzaW5nIHRoZSBzYW1lIGVuY29kaW5nIHVzZWQgZm9yIGFkZHJlc3Nlcy4KKworRm9yIHRoZSBuZXcgQUxQUyB0b3VjaHBhZHMsIHRoZSBFQyBjb21tYW5kIGlzIHVzZWQgdG8gZW50ZXIgY29tbWFuZAorbW9kZS4gVGhlIHJlc3BvbnNlIGluIHRoZSBuZXcgQUxQUyB0b3VjaHBhZHMgaXMgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQsCithbmQgbW9yZSBpbXBvcnRhbnQgaW4gZGV0ZXJtaW5pbmcgdGhlIGJlaGF2aW9yLiAgVGhpcyBjb2RlIGhhcyBiZWVuCitzZXBhcmF0ZWQgZnJvbSB0aGUgb3JpZ2luYWwgYWxwc19tb2RlbF9kYXRhIHRhYmxlIGFuZCBwdXQgaW4gdGhlCithbHBzX2lkZW50aWZ5IGZ1bmN0aW9uLiAgRm9yIGV4YW1wbGUsIHRoZXJlIHNlZW0gdG8gYmUgdHdvIGhhcmR3YXJlIGluaXQKK3NlcXVlbmNlcyBmb3IgdGhlICJEb2xwaGluIiB0b3VjaHBhZHMgYXMgZGV0ZXJtaW5lZCBieSB0aGUgc2Vjb25kIGJ5dGUKK29mIHRoZSBFQyByZXNwb25zZS4KKworUGFja2V0IEZvcm1hdAorLS0tLS0tLS0tLS0tLQorCitJbiB0aGUgZm9sbG93aW5nIHRhYmxlcywgdGhlIGZvbGxvd2luZyBub3RhdGlvbiBpcyB1c2VkLgorCisgQ0FQSVRBTFMgPSBzdGljaywgbWluaXNjdWxlcyA9IHRvdWNocGFkCisKKz8ncyBjYW4gaGF2ZSBkaWZmZXJlbnQgbWVhbmluZ3Mgb24gZGlmZmVyZW50IG1vZGVscywgc3VjaCBhcyB3aGVlbCByb3RhdGlvbiwKK2V4dHJhIGJ1dHRvbnMsIHN0aWNrIGJ1dHRvbnMgb24gYSBkdWFscG9pbnQsIGV0Yy4KKworUFMvMiBwYWNrZXQgZm9ybWF0CistLS0tLS0tLS0tLS0tLS0tLS0KKworIGJ5dGUgMDogIDAgICAgMCBZU0dOIFhTR04gICAgMSAgICBNICAgIFIgICAgTAorIGJ5dGUgMTogWDcgICBYNiAgIFg1ICAgWDQgICBYMyAgIFgyICAgWDEgICBYMAorIGJ5dGUgMjogWTcgICBZNiAgIFk1ICAgWTQgICBZMyAgIFkyICAgWTEgICBZMAorCitOb3RlIHRoYXQgdGhlIGRldmljZSBuZXZlciBzaWduYWxzIG92ZXJmbG93IGNvbmRpdGlvbi4KKworRm9yIHByb3RvY29sIHZlcnNpb24gMiBkZXZpY2VzIHdoZW4gdGhlIHRyYWNrcG9pbnQgaXMgdXNlZCwgYW5kIG5vIGZpbmdlcnMKK2FyZSBvbiB0aGUgdG91Y2hwYWQsIHRoZSBNIFIgTCBiaXRzIHNpZ25hbCB0aGUgY29tYmluZWQgc3RhdHVzIG9mIGJvdGggdGhlCitwb2ludGluZ3N0aWNrIGFuZCB0b3VjaHBhZCBidXR0b25zLgorCitBTFBTIEFic29sdXRlIE1vZGUgLSBQcm90b2NvbCBWZXJzaW9uIDEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyBieXRlIDA6ICAxICAgIDAgICAgMCAgICAwICAgIDEgICB4OSAgIHg4ICAgeDcKKyBieXRlIDE6ICAwICAgeDYgICB4NSAgIHg0ICAgeDMgICB4MiAgIHgxICAgeDAKKyBieXRlIDI6ICAwICAgID8gICAgPyAgICBsICAgIHIgICAgPyAgZmluICBnZXMKKyBieXRlIDM6ICAwICAgID8gICAgPyAgICA/ICAgID8gICB5OSAgIHk4ICAgeTcKKyBieXRlIDQ6ICAwICAgeTYgICB5NSAgIHk0ICAgeTMgICB5MiAgIHkxICAgeTAKKyBieXRlIDU6ICAwICAgejYgICB6NSAgIHo0ICAgejMgICB6MiAgIHoxICAgejAKKworQUxQUyBBYnNvbHV0ZSBNb2RlIC0gUHJvdG9jb2wgVmVyc2lvbiAyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIGJ5dGUgMDogIDEgICAgPyAgICA/ICAgID8gICAgMSAgUFNNICBQU1IgIFBTTAorIGJ5dGUgMTogIDAgICB4NiAgIHg1ICAgeDQgICB4MyAgIHgyICAgeDEgICB4MAorIGJ5dGUgMjogIDAgIHgxMCAgIHg5ICAgeDggICB4NyAgICA/ICBmaW4gIGdlcworIGJ5dGUgMzogIDAgICB5OSAgIHk4ICAgeTcgICAgMSAgICBNICAgIFIgICAgTAorIGJ5dGUgNDogIDAgICB5NiAgIHk1ICAgeTQgICB5MyAgIHkyICAgeTEgICB5MAorIGJ5dGUgNTogIDAgICB6NiAgIHo1ICAgejQgICB6MyAgIHoyICAgejEgICB6MAorCitQcm90b2NvbCBWZXJzaW9uIDIgRHVhbFBvaW50IGRldmljZXMgc2VuZCBzdGFuZGFyZCBQUy8yIG1vdXNlIHBhY2tldHMgZm9yCit0aGUgRHVhbFBvaW50IFN0aWNrLiBUaGUgTSwgUiBhbmQgTCBiaXRzIHNpZ25hbCB0aGUgY29tYmluZWQgc3RhdHVzIG9mIGJvdGgKK3RoZSBwb2ludGluZ3N0aWNrIGFuZCB0b3VjaHBhZCBidXR0b25zLCBleGNlcHQgZm9yIERlbGwgZHVhbHBvaW50IGRldmljZXMKK3doZXJlIHRoZSBwb2ludGluZ3N0aWNrIGJ1dHRvbnMgZ2V0IHJlcG9ydGVkIHNlcGFyYXRlbHkgaW4gdGhlIFBTTSwgUFNSCithbmQgUFNMIGJpdHMuCisKK0R1YWxwb2ludCBkZXZpY2UgLS0gaW50ZXJsZWF2ZWQgcGFja2V0IGZvcm1hdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyBieXRlIDA6ICAgIDEgICAgMSAgICAwICAgIDAgICAgMSAgICAxICAgIDEgICAgMQorIGJ5dGUgMTogICAgMCAgIHg2ICAgeDUgICB4NCAgIHgzICAgeDIgICB4MSAgIHgwCisgYnl0ZSAyOiAgICAwICB4MTAgICB4OSAgIHg4ICAgeDcgICAgMCAgZmluICBnZXMKKyBieXRlIDM6ICAgIDAgICAgMCBZU0dOIFhTR04gICAgMSAgICAxICAgIDEgICAgMQorIGJ5dGUgNDogICBYNyAgIFg2ICAgWDUgICBYNCAgIFgzICAgWDIgICBYMSAgIFgwCisgYnl0ZSA1OiAgIFk3ICAgWTYgICBZNSAgIFk0ICAgWTMgICBZMiAgIFkxICAgWTAKKyBieXRlIDY6ICAgIDAgICB5OSAgIHk4ICAgeTcgICAgMSAgICBtICAgIHIgICAgbAorIGJ5dGUgNzogICAgMCAgIHk2ICAgeTUgICB5NCAgIHkzICAgeTIgICB5MSAgIHkwCisgYnl0ZSA4OiAgICAwICAgejYgICB6NSAgIHo0ICAgejMgICB6MiAgIHoxICAgejAKKworRGV2aWNlcyB3aGljaCB1c2UgdGhlIGludGVybGVhdmluZyBmb3JtYXQgbm9ybWFsbHkgc2VuZCBzdGFuZGFyZCBQUy8yIG1vdXNlCitwYWNrZXRzIGZvciB0aGUgRHVhbFBvaW50IFN0aWNrICsgQUxQUyBBYnNvbHV0ZSBNb2RlIHBhY2tldHMgZm9yIHRoZQordG91Y2hwYWQsIHN3aXRjaGluZyB0byB0aGUgaW50ZXJsZWF2ZWQgcGFja2V0IGZvcm1hdCB3aGVuIGJvdGggdGhlIHN0aWNrIGFuZAordGhlIHRvdWNocGFkIGFyZSB1c2VkIGF0IHRoZSBzYW1lIHRpbWUuCisKK0FMUFMgQWJzb2x1dGUgTW9kZSAtIFByb3RvY29sIFZlcnNpb24gMworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FMUFMgcHJvdG9jb2wgdmVyc2lvbiAzIGhhcyB0aHJlZSBkaWZmZXJlbnQgcGFja2V0IGZvcm1hdHMuIFRoZSBmaXJzdCB0d28gYXJlCithc3NvY2lhdGVkIHdpdGggdG91Y2hwYWQgZXZlbnRzLCBhbmQgdGhlIHRoaXJkIGlzIGFzc29jaWF0ZWQgd2l0aCB0cmFja3N0aWNrCitldmVudHMuCisKK1RoZSBmaXJzdCB0eXBlIGlzIHRoZSB0b3VjaHBhZCBwb3NpdGlvbiBwYWNrZXQuCisKKyBieXRlIDA6ICAgIDEgICAgPyAgIHgxICAgeDAgICAgMSAgICAxICAgIDEgICAgMQorIGJ5dGUgMTogICAgMCAgeDEwICAgeDkgICB4OCAgIHg3ICAgeDYgICB4NSAgIHg0CisgYnl0ZSAyOiAgICAwICB5MTAgICB5OSAgIHk4ICAgeTcgICB5NiAgIHk1ICAgeTQKKyBieXRlIDM6ICAgIDAgICAgTSAgICBSICAgIEwgICAgMSAgICBtICAgIHIgICAgbAorIGJ5dGUgNDogICAgMCAgIG10ICAgeDMgICB4MiAgIHkzICAgeTIgICB5MSAgIHkwCisgYnl0ZSA1OiAgICAwICAgejYgICB6NSAgIHo0ICAgejMgICB6MiAgIHoxICAgejAKKworTm90ZSB0aGF0IGZvciBzb21lIGRldmljZXMgdGhlIHRyYWNrc3RpY2sgYnV0dG9ucyBhcmUgcmVwb3J0ZWQgaW4gdGhpcyBwYWNrZXQsCithbmQgb24gb3RoZXJzIGl0IGlzIHJlcG9ydGVkIGluIHRoZSB0cmFja3N0aWNrIHBhY2tldHMuCisKK1RoZSBzZWNvbmQgcGFja2V0IHR5cGUgY29udGFpbnMgYml0bWFwcyByZXByZXNlbnRpbmcgdGhlIHggYW5kIHkgYXhlcy4gSW4gdGhlCitiaXRtYXBzIGEgZ2l2ZW4gYml0IGlzIHNldCBpZiB0aGVyZSBpcyBhIGZpbmdlciBjb3ZlcmluZyB0aGF0IHBvc2l0aW9uIG9uIHRoZQorZ2l2ZW4gYXhpcy4gVGh1cyB0aGUgYml0bWFwIHBhY2tldCBjYW4gYmUgdXNlZCBmb3IgbG93LXJlc29sdXRpb24gbXVsdGktdG91Y2gKK2RhdGEsIGFsdGhvdWdoIGZpbmdlciB0cmFja2luZyBpcyBub3QgcG9zc2libGUuICBUaGlzIHBhY2tldCBhbHNvIGVuY29kZXMgdGhlCitudW1iZXIgb2YgY29udGFjdHMgKGYxIGFuZCBmMCBpbiB0aGUgdGFibGUgYmVsb3cpLgorCisgYnl0ZSAwOiAgICAxICAgIDEgICB4MSAgIHgwICAgIDEgICAgMSAgICAxICAgIDEKKyBieXRlIDE6ICAgIDAgICB4OCAgIHg3ICAgeDYgICB4NSAgIHg0ICAgeDMgICB4MgorIGJ5dGUgMjogICAgMCAgIHk3ICAgeTYgICB5NSAgIHk0ICAgeTMgICB5MiAgIHkxCisgYnl0ZSAzOiAgICAwICB5MTAgICB5OSAgIHk4ICAgIDEgICAgMSAgICAxICAgIDEKKyBieXRlIDQ6ICAgIDAgIHgxNCAgeDEzICB4MTIgIHgxMSAgeDEwICAgeDkgICB5MAorIGJ5dGUgNTogICAgMCAgICAxICAgID8gICAgPyAgICA/ICAgID8gICBmMSAgIGYwCisKK1RoaXMgcGFja2V0IG9ubHkgYXBwZWFycyBhZnRlciBhIHBvc2l0aW9uIHBhY2tldCB3aXRoIHRoZSBtdCBiaXQgc2V0LCBhbmQKK3VzdWFsbHkgb25seSBhcHBlYXJzIHdoZW4gdGhlcmUgYXJlIHR3byBvciBtb3JlIGNvbnRhY3RzIChhbHRob3VnaAorb2NjYXNpb25hbGx5IGl0J3Mgc2VlbiB3aXRoIG9ubHkgYSBzaW5nbGUgY29udGFjdCkuCisKK1RoZSBmaW5hbCB2MyBwYWNrZXQgdHlwZSBpcyB0aGUgdHJhY2tzdGljayBwYWNrZXQuCisKKyBieXRlIDA6ICAgIDEgICAgMSAgIHg3ICAgeTcgICAgMSAgICAxICAgIDEgICAgMQorIGJ5dGUgMTogICAgMCAgIHg2ICAgeDUgICB4NCAgIHgzICAgeDIgICB4MSAgIHgwCisgYnl0ZSAyOiAgICAwICAgeTYgICB5NSAgIHk0ICAgeTMgICB5MiAgIHkxICAgeTAKKyBieXRlIDM6ICAgIDAgICAgMSAgICAwICAgIDAgICAgMSAgICAwICAgIDAgICAgMAorIGJ5dGUgNDogICAgMCAgIHo0ICAgejMgICB6MiAgIHoxICAgejAgICAgPyAgICA/CisgYnl0ZSA1OiAgICAwICAgIDAgICAgMSAgICAxICAgIDEgICAgMSAgICAxICAgIDEKKworQUxQUyBBYnNvbHV0ZSBNb2RlIC0gUHJvdG9jb2wgVmVyc2lvbiA0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUHJvdG9jb2wgdmVyc2lvbiA0IGhhcyBhbiA4LWJ5dGUgcGFja2V0IGZvcm1hdC4KKworIGJ5dGUgMDogICAgMSAgICA/ICAgeDEgICB4MCAgICAxICAgIDEgICAgMSAgICAxCisgYnl0ZSAxOiAgICAwICB4MTAgICB4OSAgIHg4ICAgeDcgICB4NiAgIHg1ICAgeDQKKyBieXRlIDI6ICAgIDAgIHkxMCAgIHk5ICAgeTggICB5NyAgIHk2ICAgeTUgICB5NAorIGJ5dGUgMzogICAgMCAgICAxICAgeDMgICB4MiAgIHkzICAgeTIgICB5MSAgIHkwCisgYnl0ZSA0OiAgICAwICAgID8gICAgPyAgICA/ICAgIDEgICAgPyAgICByICAgIGwKKyBieXRlIDU6ICAgIDAgICB6NiAgIHo1ICAgejQgICB6MyAgIHoyICAgejEgICB6MAorIGJ5dGUgNjogICAgYml0bWFwIGRhdGEgKGRlc2NyaWJlZCBiZWxvdykKKyBieXRlIDc6ICAgIGJpdG1hcCBkYXRhIChkZXNjcmliZWQgYmVsb3cpCisKK1RoZSBsYXN0IHR3byBieXRlcyByZXByZXNlbnQgYSBwYXJ0aWFsIGJpdG1hcCBwYWNrZXQsIHdpdGggMyBmdWxsIHBhY2tldHMKK3JlcXVpcmVkIHRvIGNvbnN0cnVjdCBhIGNvbXBsZXRlIGJpdG1hcCBwYWNrZXQuICBPbmNlIGFzc2VtYmxlZCwgdGhlIDYtYnl0ZQorYml0bWFwIHBhY2tldCBoYXMgdGhlIGZvbGxvd2luZyBmb3JtYXQ6CisKKyBieXRlIDA6ICAgIDAgICAgMSAgIHg3ICAgeDYgICB4NSAgIHg0ICAgeDMgICB4MgorIGJ5dGUgMTogICAgMCAgIHgxICAgeDAgICB5NCAgIHkzICAgeTIgICB5MSAgIHkwCisgYnl0ZSAyOiAgICAwICAgIDAgICAgPyAgeDE0ICB4MTMgIHgxMiAgeDExICB4MTAKKyBieXRlIDM6ICAgIDAgICB4OSAgIHg4ICAgeTkgICB5OCAgIHk3ICAgeTYgICB5NQorIGJ5dGUgNDogICAgMCAgICAwICAgIDAgICAgMCAgICAwICAgIDAgICAgMCAgICAwCisgYnl0ZSA1OiAgICAwICAgIDAgICAgMCAgICAwICAgIDAgICAgMCAgICAwICB5MTAKKworVGhlcmUgYXJlIHNldmVyYWwgdGhpbmdzIHdvcnRoIG5vdGluZyBoZXJlLgorCisgMSkgSW4gdGhlIGJpdG1hcCBkYXRhLCBiaXQgNiBvZiBieXRlIDAgc2VydmVzIGFzIGEgc3luYyBieXRlIHRvCisgICAgaWRlbnRpZnkgdGhlIGZpcnN0IGZyYWdtZW50IG9mIGEgYml0bWFwIHBhY2tldC4KKworIDIpIFRoZSBiaXRtYXBzIHJlcHJlc2VudCB0aGUgc2FtZSBkYXRhIGFzIGluIHRoZSB2MyBiaXRtYXAgcGFja2V0cywgYWx0aG91Z2gKKyAgICB0aGUgcGFja2V0IGxheW91dCBpcyBkaWZmZXJlbnQuCisKKyAzKSBUaGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBjb3VudCBvZiB0aGUgY29udGFjdCBwb2ludHMgYW55d2hlcmUgaW4gdGhlIHY0CisgICAgcHJvdG9jb2wgcGFja2V0cy4gRGVyaXZpbmcgYSBjb3VudCBvZiBjb250YWN0IHBvaW50cyBtdXN0IGJlIGRvbmUgYnkKKyAgICBhbmFseXppbmcgdGhlIGJpdG1hcHMuCisKKyA0KSBUaGVyZSBpcyBhIDMgdG8gMSByYXRpbyBvZiBwb3NpdGlvbiBwYWNrZXRzIHRvIGJpdG1hcCBwYWNrZXRzLiBUaGVyZWZvcmUKKyAgICBNVCBwb3NpdGlvbiBjYW4gb25seSBiZSB1cGRhdGVkIGZvciBldmVyeSB0aGlyZCBTVCBwb3NpdGlvbiB1cGRhdGUsIGFuZAorICAgIHRoZSBjb3VudCBvZiBjb250YWN0IHBvaW50cyBjYW4gb25seSBiZSB1cGRhdGVkIGV2ZXJ5IHRoaXJkIHBhY2tldCBhcworICAgIHdlbGwuCisKK1NvIGZhciBubyB2NCBkZXZpY2VzIHdpdGggdHJhY2tzdGlja3MgaGF2ZSBiZWVuIGVuY291bnRlcmVkLgorCitBTFBTIEFic29sdXRlIE1vZGUgLSBQcm90b2NvbCBWZXJzaW9uIDUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhpcyBpcyBiYXNpY2FsbHkgUHJvdG9jb2wgVmVyc2lvbiAzIGJ1dCB3aXRoIGRpZmZlcmVudCBsb2dpYyBmb3IgcGFja2V0CitkZWNvZGUuICBJdCB1c2VzIHRoZSBzYW1lIGFscHNfcHJvY2Vzc190b3VjaHBhZF9wYWNrZXRfdjMgY2FsbCB3aXRoIGEKK3NwZWNpYWxpemVkIGRlY29kZV9maWVsZHMgZnVuY3Rpb24gcG9pbnRlciB0byBjb3JyZWN0bHkgaW50ZXJwcmV0IHRoZQorcGFja2V0cy4gIFRoaXMgYXBwZWFycyB0byBvbmx5IGJlIHVzZWQgYnkgdGhlIERvbHBoaW4gZGV2aWNlcy4KKworRm9yIHNpbmdsZS10b3VjaCwgdGhlIDYtYnl0ZSBwYWNrZXQgZm9ybWF0IGlzOgorCisgYnl0ZSAwOiAgICAxICAgIDEgICAgMCAgICAwICAgIDEgICAgMCAgICAwICAgIDAKKyBieXRlIDE6ICAgIDAgICB4NiAgIHg1ICAgeDQgICB4MyAgIHgyICAgeDEgICB4MAorIGJ5dGUgMjogICAgMCAgIHk2ICAgeTUgICB5NCAgIHkzICAgeTIgICB5MSAgIHkwCisgYnl0ZSAzOiAgICAwICAgIE0gICAgUiAgICBMICAgIDEgICAgbSAgICByICAgIGwKKyBieXRlIDQ6ICAgeTEwICB5OSAgIHk4ICAgeTcgIHgxMCAgIHg5ICAgeDggICB4NworIGJ5dGUgNTogICAgMCAgIHo2ICAgejUgICB6NCAgIHozICAgejIgICB6MSAgIHowCisKK0ZvciBtdCwgdGhlIGZvcm1hdCBpczoKKworIGJ5dGUgMDogICAgMSAgICAxICAgIDEgICAgbjMgICAxICAgbjIgICBuMSAgIHgyNAorIGJ5dGUgMTogICAgMSAgIHk3ICAgeTYgICAgeTUgIHk0ICAgeTMgICB5MiAgICB5MQorIGJ5dGUgMjogICAgPyAgIHgyICAgeDEgICB5MTIgeTExICB5MTAgICB5OSAgICB5OAorIGJ5dGUgMzogICAgMCAgeDIzICB4MjIgICB4MjEgeDIwICB4MTkgIHgxOCAgIHgxNworIGJ5dGUgNDogICAgMCAgIHg5ICAgeDggICAgeDcgIHg2ICAgeDUgICB4NCAgICB4MworIGJ5dGUgNTogICAgMCAgeDE2ICB4MTUgICB4MTQgeDEzICB4MTIgIHgxMSAgIHgxMAorCitBTFBTIEFic29sdXRlIE1vZGUgLSBQcm90b2NvbCBWZXJzaW9uIDYKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGb3IgdHJhY2tzdGljayBwYWNrZXQsIHRoZSBmb3JtYXQgaXM6CisKKyBieXRlIDA6ICAgIDEgICAgMSAgICAxICAgIDEgICAgMSAgICAxICAgIDEgICAgMQorIGJ5dGUgMTogICAgMCAgIFg2ICAgWDUgICBYNCAgIFgzICAgWDIgICBYMSAgIFgwCisgYnl0ZSAyOiAgICAwICAgWTYgICBZNSAgIFk0ICAgWTMgICBZMiAgIFkxICAgWTAKKyBieXRlIDM6ICAgID8gICBZNyAgIFg3ICAgID8gICAgPyAgICBNICAgIFIgICAgTAorIGJ5dGUgNDogICBaNyAgIFo2ICAgWjUgICBaNCAgIFozICAgWjIgICBaMSAgIFowCisgYnl0ZSA1OiAgICAwICAgIDEgICAgMSAgICAxICAgIDEgICAgMSAgICAxICAgIDEKKworRm9yIHRvdWNocGFkIHBhY2tldCwgdGhlIGZvcm1hdCBpczoKKworIGJ5dGUgMDogICAgMSAgICAxICAgIDEgICAgMSAgICAxICAgIDEgICAgMSAgICAxCisgYnl0ZSAxOiAgICAwICAgIDAgICAgMCAgICAwICAgeDMgICB4MiAgIHgxICAgeDAKKyBieXRlIDI6ICAgIDAgICAgMCAgICAwICAgIDAgICB5MyAgIHkyICAgeTEgICB5MAorIGJ5dGUgMzogICAgPyAgIHg3ICAgeDYgICB4NSAgIHg0ICAgID8gICAgciAgICBsCisgYnl0ZSA0OiAgICA/ICAgeTcgICB5NiAgIHk1ICAgeTQgICAgPyAgICA/ICAgID8KKyBieXRlIDU6ICAgejcgICB6NiAgIHo1ICAgejQgICB6MyAgIHoyICAgejEgICB6MAorCisodjYgdG91Y2hwYWQgZG9lcyBub3QgaGF2ZSBtaWRkbGUgYnV0dG9uKQorCitBTFBTIEFic29sdXRlIE1vZGUgLSBQcm90b2NvbCBWZXJzaW9uIDcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGb3IgdHJhY2tzdGljayBwYWNrZXQsIHRoZSBmb3JtYXQgaXM6CisKKyBieXRlIDA6ICAgIDAgICAgMSAgICAwICAgIDAgICAgMSAgICAwICAgIDAgICAgMAorIGJ5dGUgMTogICAgMSAgICAxICAgICogICAgKiAgICAxICAgIE0gICAgUiAgICBMCisgYnl0ZSAyOiAgIFg3ICAgIDEgICBYNSAgIFg0ICAgWDMgICBYMiAgIFgxICAgWDAKKyBieXRlIDM6ICAgWjYgICAgMSAgIFk2ICAgWDYgICAgMSAgIFkyICAgWTEgICBZMAorIGJ5dGUgNDogICBZNyAgICAwICAgWTUgICBZNCAgIFkzICAgIDEgICAgMSAgICAwCisgYnl0ZSA1OiAgVCZQICAgIDAgICBaNSAgIFo0ICAgWjMgICBaMiAgIFoxICAgWjAKKworRm9yIHRvdWNocGFkIHBhY2tldCwgdGhlIGZvcm1hdCBpczoKKworICAgICAgICAgcGFja2V0LWZtdCAgICAgYjcgICAgIGI2ICAgICBiNSAgICAgYjQgICAgIGIzICAgICBiMiAgICAgYjEgICAgIGIwCisgYnl0ZSAwOiBUV08gJiBNVUxUSSAgICAgTCAgICAgIDEgICAgICBSICAgICAgTSAgICAgIDEgICBZMC0yICAgWTAtMSAgIFkwLTAKKyBieXRlIDA6IE5FVyAgICAgICAgICAgICBMICAgICAgMSAgIFgxLTUgICAgICAxICAgICAgMSAgIFkwLTIgICBZMC0xICAgWTAtMAorIGJ5dGUgMTogICAgICAgICAgICAgWTAtMTAgICBZMC05ICAgWTAtOCAgIFkwLTcgICBZMC02ICAgWTAtNSAgIFkwLTQgICBZMC0zCisgYnl0ZSAyOiAgICAgICAgICAgICBYMC0xMSAgICAgIDEgIFgwLTEwICAgWDAtOSAgIFgwLTggICBYMC03ICAgWDAtNiAgIFgwLTUKKyBieXRlIDM6ICAgICAgICAgICAgIFgxLTExICAgICAgMSAgIFgwLTQgICBYMC0zICAgICAgMSAgIFgwLTIgICBYMC0xICAgWDAtMAorIGJ5dGUgNDogVFdPICAgICAgICAgWDEtMTAgICAgVFdPICAgWDEtOSAgIFgxLTggICBYMS03ICAgWDEtNiAgIFgxLTUgICBYMS00CisgYnl0ZSA0OiBNVUxUSSAgICAgICBYMS0xMCAgICBUV08gICBYMS05ICAgWDEtOCAgIFgxLTcgICBYMS02ICAgWTEtNSAgICAgIDEKKyBieXRlIDQ6IE5FVyAgICAgICAgIFgxLTEwICAgIFRXTyAgIFgxLTkgICBYMS04ICAgWDEtNyAgIFgxLTYgICAgICAwICAgICAgMAorIGJ5dGUgNTogVFdPICYgTkVXICAgWTEtMTAgICAgICAwICAgWTEtOSAgIFkxLTggICBZMS03ICAgWTEtNiAgIFkxLTUgICBZMS00CisgYnl0ZSA1OiBNVUxUSSAgICAgICBZMS0xMCAgICAgIDAgICBZMS05ICAgWTEtOCAgIFkxLTcgICBZMS02ICAgIEYtMSAgICBGLTAKKworIEw6ICAgICAgICAgTGVmdCBidXR0b24KKyBSIC8gTTogICAgIE5vbi1jbGlja3BhZHM6IFJpZ2h0IC8gTWlkZGxlIGJ1dHRvbgorICAgICAgICAgICAgQ2xpY2twYWRzOiBXaGVuID4gMiBmaW5nZXJzIGFyZSBkb3duLCBhbmQgc29tZSBmaW5nZXJzCisgICAgICAgICAgICBhcmUgaW4gdGhlIGJ1dHRvbiBhcmVhLCB0aGVuIHRoZSAyIGNvb3JkaW5hdGVzIHJlcG9ydGVkCisgICAgICAgICAgICBhcmUgZm9yIGZpbmdlcnMgb3V0c2lkZSB0aGUgYnV0dG9uIGFyZWEgYW5kIHRoZXNlIHJlcG9ydAorICAgICAgICAgICAgZXh0cmEgZmluZ2VycyBiZWluZyBwcmVzZW50IGluIHRoZSByaWdodCAvIGxlZnQgYnV0dG9uCisgICAgICAgICAgICBhcmVhLiBOb3RlIHRoZXNlIGZpbmdlcnMgYXJlIG5vdCBhZGRlZCB0byB0aGUgRiBmaWVsZCEKKyAgICAgICAgICAgIHNvIGlmIGEgVFdPIHBhY2tldCBpcyByZWNlaXZlZCBhbmQgUiA9IDEgdGhlbiB0aGVyZSBhcmUKKyAgICAgICAgICAgIDMgZmluZ2VycyBkb3duLCBldGMuCisgVFdPOiAgICAgICAxOiBUd28gdG91Y2hlcyBwcmVzZW50LCBieXRlIDAvNC81IGFyZSBpbiBUV08gZm10CisgICAgICAgICAgICAwOiBJZiBieXRlIDQgYml0IDAgaXMgMSwgdGhlbiBieXRlIDAvNC81IGFyZSBpbiBNVUxUSSBmbXQKKyAgICAgICAgICAgICAgIG90aGVyd2lzZSBieXRlIDAgYml0IDQgbXVzdCBiZSBzZXQgYW5kIGJ5dGUgMC80LzUgYXJlCisgICAgICAgICAgICAgICBpbiBORVcgZm10CisgRjogICAgICAgICBOdW1iZXIgb2YgZmluZ2VycyAtIDMsIDAgbWVhbnMgMyBmaW5nZXJzLCAxIG1lYW5zIDQgLi4uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lucHV0L2FtaWpveS50eHQgYi9Eb2N1bWVudGF0aW9uL2lucHV0L2FtaWpveS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RjNGYxNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaW5wdXQvYW1pam95LnR4dApAQCAtMCwwICsxLDE4NCBAQAorQW1pZ2EgNC1qb3lzdGljayBwYXJwb3J0IGV4dGVuc2lvbgorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorUGFyYWxsZWwgcG9ydCBwaW5zOgorCisgKDIpIC0gVXAxCSAoNikgLSBVcDIKKyAoMykgLSBEb3duMQkgKDcpIC0gRG93bjIKKyAoNCkgLSBMZWZ0MQkgKDgpIC0gTGVmdDIKKyAoNSkgLSBSaWdodDEJICg5KSAtIFJpZ2h0MgorKDEzKSAtIEZpcmUxCSgxMSkgLSBGaXJlMgorKDE4KSAtIEduZDEJKDE4KSAtIEduZDIKKworQW1pZ2EgZGlnaXRhbCBqb3lzdGljayBwaW5vdXQKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisoMSkgLSBVcAorKDIpIC0gRG93bgorKDMpIC0gTGVmdAorKDQpIC0gUmlnaHQKKyg1KSAtIG4vYworKDYpIC0gRmlyZSBidXR0b24KKyg3KSAtICs1ViAoNTBtQSkKKyg4KSAtIEduZAorKDkpIC0gVGh1bWIgYnV0dG9uCisKK0FtaWdhIG1vdXNlIHBpbm91dAorfn5+fn5+fn5+fn5+fn5+fn5+CisoMSkgLSBWLXB1bHNlCisoMikgLSBILXB1bHNlCisoMykgLSBWUS1wdWxzZQorKDQpIC0gSFEtcHVsc2UKKyg1KSAtIE1pZGRsZSBidXR0b24KKyg2KSAtIExlZnQgYnV0dG9uCisoNykgLSArNVYgKDUwbUEpCisoOCkgLSBHbmQKKyg5KSAtIFJpZ2h0IGJ1dHRvbgorCitBbWlnYSBhbmFsb2cgam95c3RpY2sgcGlub3V0Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisoMSkgLSBUb3AgYnV0dG9uCisoMikgLSBUb3AyIGJ1dHRvbgorKDMpIC0gVHJpZ2dlciBidXR0b24KKyg0KSAtIFRodW1iIGJ1dHRvbgorKDUpIC0gQW5hbG9nIFgKKyg2KSAtIG4vYworKDcpIC0gKzVWICg1MG1BKQorKDgpIC0gR25kCisoOSkgLSBBbmFsb2cgWQorCitBbWlnYSBsaWdodHBlbiBwaW5vdXQKK35+fn5+fn5+fn5+fn5+fn5+fn5+fgorKDEpIC0gbi9jCisoMikgLSBuL2MKKygzKSAtIG4vYworKDQpIC0gbi9jCisoNSkgLSBUb3VjaCBidXR0b24KKyg2KSAtIC9CZWFtdHJpZ2dlcgorKDcpIC0gKzVWICg1MG1BKQorKDgpIC0gR25kCisoOSkgLSBTdHlsdXMgYnV0dG9uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTkFNRSAgICAgcmV2IEFERFIgdHlwZSBjaGlwICAgRGVzY3JpcHRpb24KK0pPWTBEQVQgICAgICAwMEEgICBSICAgRGVuaXNlIEpveXN0aWNrLW1vdXNlIDAgZGF0YSAobGVmdCB2ZXJ0LCBob3JpeikKK0pPWTFEQVQgICAgICAwMEMgICBSICAgRGVuaXNlIEpveXN0aWNrLW1vdXNlIDEgZGF0YSAocmlnaHQgdmVydCxob3JpeikKKworICAgICAgICBUaGVzZSBhZGRyZXNzZXMgZWFjaCByZWFkIGEgMTYgYml0IHJlZ2lzdGVyLiBUaGVzZSBpbiB0dXJuCisgICAgICAgIGFyZSBsb2FkZWQgZnJvbSB0aGUgTURBVCBzZXJpYWwgc3RyZWFtIGFuZCBhcmUgY2xvY2tlZCBpbiBvbgorICAgICAgICB0aGUgcmlzaW5nIGVkZ2Ugb2YgU0NMSy4gTUxEIG91dHB1dCBpcyB1c2VkIHRvIHBhcmFsbGVsIGxvYWQKKyAgICAgICAgdGhlIGV4dGVybmFsIHBhcmFsbGVsLXRvLXNlcmlhbCBjb252ZXJ0ZXIuVGhpcyBpbiB0dXJuIGlzCisgICAgICAgIGxvYWRlZCB3aXRoIHRoZSA0IHF1YWRyYXR1cmUgaW5wdXRzIGZyb20gZWFjaCBvZiB0d28gZ2FtZQorICAgICAgICBjb250cm9sbGVyIHBvcnRzICg4IHRvdGFsKSBwbHVzIDggbWlzY2VsbGFuZW91cyBjb250cm9sIGJpdHMKKyAgICAgICAgd2hpY2ggYXJlIG5ldyBmb3IgTElTQSBhbmQgY2FuIGJlIHJlYWQgaW4gdXBwZXIgOCBiaXRzIG9mCisgICAgICAgIExJU0FJRC4KKyAgICAgICAgUmVnaXN0ZXIgYml0cyBhcmUgYXMgZm9sbG93czoKKyAgICAgICAgTW91c2UgY291bnRlciB1c2FnZSAocGlucyAgMSwzID1ZY2xvY2ssIHBpbnMgMiw0ID1YY2xvY2spCisKKyAgICBCSVQjICAxNSAgMTQgIDEzICAxMiAgMTEgIDEwICAwOSAgMDggICAgIDA3ICAwNiAgMDUgIDA0ICAwMyAgMDIgIDAxICAwMAorSk9ZMERBVCAgIFk3ICBZNiAgWTUgIFk0ICBZMyAgWTIgIFkxICBZMCAgICAgWDcgIFg2ICBYNSAgWDQgIFgzICBYMiAgWDEgIFgwCitKT1kxREFUICAgWTcgIFk2ICBZNSAgWTQgIFkzICBZMiAgWTEgIFkwICAgICBYNyAgWDYgIFg1ICBYNCAgWDMgIFgyICBYMSAgWDAKKworICAgICAgICAwPUxFRlQgQ09OVFJPTExFUiBQQUlSLCAxPVJJR0hUIENPTlRST0xMRVIgUEFJUi4KKyAgICAgICAgKDQgY291bnRlcnMgdG90YWwpLiBUaGUgYml0IHVzYWdlIGZvciBib3RoIGxlZnQgYW5kIHJpZ2h0CisgICAgICAgIGFkZHJlc3NlcyBpcyBzaG93biBiZWxvdy4gRWFjaCA2IGJpdCBjb3VudGVyIChZNy1ZMixYNy1YMikgaXMKKyAgICAgICAgY2xvY2tlZCBieSAyIG9mIHRoZSBzaWduYWxzIGlucHV0IGZyb20gdGhlIG1vdXNlIHNlcmlhbAorICAgICAgICBzdHJlYW0uIFN0YXJ0aW5nIHdpdGggZmlyc3QgYml0IHJlY2VpdmVkOgorCisgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgIHwgU2VyaWFsIHwgQml0IE5hbWUgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICB8ICAgMCAgICB8IE0wSCAgICAgIHwgSk9ZMERBVCBIb3Jpem9udGFsIENsb2NrICAgICAgICAgICAgICAgIHwKKyAgICAgICAgIHwgICAxICAgIHwgTTBIUSAgICAgfCBKT1kwREFUIEhvcml6b250YWwgQ2xvY2sgKHF1YWRyYXR1cmUpICAgfAorICAgICAgICAgfCAgIDIgICAgfCBNMFYgICAgICB8IEpPWTBEQVQgVmVydGljYWwgQ2xvY2sgICAgICAgICAgICAgICAgICB8CisgICAgICAgICB8ICAgMyAgICB8IE0wVlEgICAgIHwgSk9ZMERBVCBWZXJ0aWNhbCBDbG9jayAgKHF1YWRyYXR1cmUpICAgIHwKKyAgICAgICAgIHwgICA0ICAgIHwgTTFWICAgICAgfCBKT1kxREFUIEhvcml6b250YWwgQ2xvY2sgICAgICAgICAgICAgICAgfAorICAgICAgICAgfCAgIDUgICAgfCBNMVZRICAgICB8IEpPWTFEQVQgSG9yaXpvbnRhbCBDbG9jayAocXVhZHJhdHVyZSkgICB8CisgICAgICAgICB8ICAgNiAgICB8IE0xViAgICAgIHwgSk9ZMURBVCBWZXJ0aWNhbCBDbG9jayAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgIHwgICA3ICAgIHwgTTFWUSAgICAgfCBKT1kxREFUIFZlcnRpY2FsIENsb2NrIChxdWFkcmF0dXJlKSAgICAgfAorICAgICAgICAgKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKyAgICAgICAgIEJpdHMgMSBhbmQgMCBvZiBlYWNoIGNvdW50ZXIgKFkxLVkwLFgxLVgwKSBtYXkgYmUKKyAgICAgICAgIHJlYWQgdG8gZGV0ZXJtaW5lIHRoZSBzdGF0ZSBvZiB0aGUgcmVsYXRlZCBpbnB1dCBzaWduYWwgcGFpci4KKyAgICAgICAgIFRoaXMgYWxsb3dzIHRoZXNlIHBpbnMgdG8gZG91YmxlIGFzIGpveXN0aWNrIHN3aXRjaCBpbnB1dHMuCisgICAgICAgICBKb3lzdGljayBzd2l0Y2ggY2xvc3VyZXMgY2FuIGJlIGRlY2lwaGVyZWQgYXMgZm9sbG93czoKKworICAgICAgICAgKy0tLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgfCBEaXJlY3Rpb25zIHwgUGluIyB8IENvdW50ZXIgYml0cyAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgKy0tLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgfCBGb3J3YXJkICAgIHwgIDEgICB8IFkxIHhvciBZMCAoQklUIzA5IHhvciBCSVQjMDgpICAgfAorICAgICAgICAgfCBMZWZ0ICAgICAgIHwgIDMgICB8IFkxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgfCBCYWNrICAgICAgIHwgIDIgICB8IFgxIHhvciBYMCAoQklUIzAxIHhvciBCSVQjMDApICAgfAorICAgICAgICAgfCBSaWdodCAgICAgIHwgIDQgICB8IFgxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgKy0tLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05BTUUgICAgICByZXYgQUREUiB0eXBlIGNoaXAgICAgRGVzY3JpcHRpb24KK0pPWVRFU1QgICAgICAgMDM2ICAgVyAgIERlbmlzZSAgV3JpdGUgdG8gYWxsIDQgIGpveXN0aWNrLW1vdXNlIGNvdW50ZXJzIGF0IG9uY2UuCisKKyAgICAgICAgICAgICAgICAgIE1vdXNlIGNvdW50ZXIgd3JpdGUgdGVzdCBkYXRhOgorICAgICBCSVQjICAxNSAgMTQgIDEzICAxMiAgMTEgIDEwICAwOSAgMDggICAgIDA3ICAwNiAgMDUgIDA0ICAwMyAgMDIgIDAxICAwMAorICBKT1l4REFUICBZNyAgWTYgIFk1ICBZNCAgWTMgIFkyICB4eCAgeHggICAgIFg3ICBYNiAgWDUgIFg0ICBYMyAgWDIgIHh4ICB4eAorICBKT1l4REFUICBZNyAgWTYgIFk1ICBZNCAgWTMgIFkyICB4eCAgeHggICAgIFg3ICBYNiAgWDUgIFg0ICBYMyAgWDIgIHh4ICB4eAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05BTUUgICAgcmV2IEFERFIgdHlwZSBjaGlwICAgRGVzY3JpcHRpb24KK1BPVDBEQVQgIGggIDAxMiAgIFIgICBQYXVsYSAgUG90IGNvdW50ZXIgZGF0YSBsZWZ0IHBhaXIgKHZlcnQsIGhvcml6KQorUE9UMURBVCAgaCAgMDE0ICAgUiAgIFBhdWxhICBQb3QgY291bnRlciBkYXRhIHJpZ2h0IHBhaXIgKHZlcnQsaG9yaXopCisKKyAgICAgICAgVGhlc2UgYWRkcmVzc2VzIGVhY2ggcmVhZCBhIHBhaXIgb2YgOCBiaXQgcG90IGNvdW50ZXJzLgorICAgICAgICAoNCBjb3VudGVycyB0b3RhbCkuIFRoZSBiaXQgYXNzaWdubWVudCBmb3IgYm90aAorICAgICAgICBhZGRyZXNzZXMgaXMgc2hvd24gYmVsb3cuIFRoZSBjb3VudGVycyBhcmUgc3RvcHBlZCBieSBzaWduYWxzCisgICAgICAgIGZyb20gMiBjb250cm9sbGVyIGNvbm5lY3RvcnMgKGxlZnQtcmlnaHQpIHdpdGggMiBwaW5zIGVhY2guCisKKyAgQklUIyAgMTUgIDE0ICAxMyAgMTIgIDExICAxMCAgMDkgIDA4ICAgICAwNyAgMDYgIDA1ICAwNCAgMDMgIDAyICAwMSAgMDAKKyBSSUdIVCAgWTcgIFk2ICBZNSAgWTQgIFkzICBZMiAgWTEgIFkwICAgICBYNyAgWDYgIFg1ICBYNCAgWDMgIFgyICBYMSAgWDAKKyAgTEVGVCAgWTcgIFk2ICBZNSAgWTQgIFkzICBZMiAgWTEgIFkwICAgICBYNyAgWDYgIFg1ICBYNCAgWDMgIFgyICBYMSAgWDAKKworICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCisgICAgICAgICB8IENPTk5FQ1RPUlMgICAgICAgICAgICAgICB8IFBBVUxBIHwKKyAgICAgICAgICstLS0tLS0tKy0tLS0tLSstLS0tLSstLS0tLSstLS0tLS0tKworICAgICAgICAgfCBMb2MuICB8IERpci4gfCBTeW0gfCBwaW4gfCBwaW4gICB8CisgICAgICAgICArLS0tLS0tLSstLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0tLSsKKyAgICAgICAgIHwgUklHSFQgfCBZICAgIHwgUlggIHwgOSAgIHwgMzMgICAgfAorICAgICAgICAgfCBSSUdIVCB8IFggICAgfCBSWCAgfCA1ICAgfCAzMiAgICB8CisgICAgICAgICB8IExFRlQgIHwgWSAgICB8IExZICB8IDkgICB8IDM2ICAgIHwKKyAgICAgICAgIHwgTEVGVCAgfCBYICAgIHwgTFggIHwgNSAgIHwgMzUgICAgfAorICAgICAgICAgKy0tLS0tLS0rLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tLS0rCisKKyAgICAgICAgIFdpdGggbm9ybWFsIChOVFNDIG9yIFBBTCkgaG9yaXouIGxpbmUgcmF0ZSwgdGhlIHBvdHMgd2lsbAorICAgICAgICAgZ2l2ZSBhIGZ1bGwgc2NhbGUgKEZGKSByZWFkaW5nIHdpdGggYWJvdXQgNTAwa29obXMgaW4gb25lCisgICAgICAgICBmcmFtZSB0aW1lLiBXaXRoIHByb3BvcnRpb25hbGx5IGZhc3RlciBob3JpeiBsaW5lIHRpbWVzLAorICAgICAgICAgdGhlIGNvdW50ZXJzIHdpbGwgY291bnQgcHJvcG9ydGlvbmFsbHkgZmFzdGVyLgorICAgICAgICAgVGhpcyBzaG91bGQgYmUgbm90ZWQgd2hlbiBkb2luZyB2YXJpYWJsZSBiZWFtIGRpc3BsYXlzLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05BTUUgICByZXYgQUREUiB0eXBlIGNoaXAgICBEZXNjcmlwdGlvbgorUE9UR08gICAgICAwMzQgICBXICAgUGF1bGEgIFBvdCBwb3J0ICg0IGJpdCkgYmktZGlyZWN0aW9uIGFuZCBkYXRhLCBhbmQgcG90IGNvdW50ZXIgc3RhcnQuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTkFNRSAgIHJldiBBRERSIHR5cGUgY2hpcCAgIERlc2NyaXB0aW9uCitQT1RJTlAgICAgIDAxNiAgIFIgICBQYXVsYSAgUG90IHBpbiBkYXRhIHJlYWQKKworICAgICAgICBUaGlzIHJlZ2lzdGVyIGNvbnRyb2xzIGEgNCBiaXQgYmktZGlyZWN0aW9uIEkvTyBwb3J0CisgICAgICAgIHRoYXQgc2hhcmVzIHRoZSBzYW1lIDQgcGlucyBhcyB0aGUgNCBwb3QgY291bnRlcnMgYWJvdmUuCisKKyAgICAgICAgICstLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgfCBCSVQjICB8IEZVTkNUSU9OIHwgREVTQ1JJUFRJT04gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICArLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgIHwgMTUgICAgfCBPVVRSWSAgICB8IE91dHB1dCBlbmFibGUgZm9yIFBhdWxhIHBpbiAzMyAgICAgICAgICAgICAgfAorICAgICAgICAgfCAxNCAgICB8IERBVFJZICAgIHwgSS9PIGRhdGEgUGF1bGEgcGluIDMzICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICB8IDEzICAgIHwgT1VUUlggICAgfCBPdXRwdXQgZW5hYmxlIGZvciBQYXVsYSBwaW4gMzIgICAgICAgICAgICAgIHwKKyAgICAgICAgIHwgMTIgICAgfCBEQVRSWCAgICB8IEkvTyBkYXRhIFBhdWxhIHBpbiAzMiAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgfCAxMSAgICB8IE9VVExZICAgIHwgT3V0IHB1dCBlbmFibGUgZm9yIFBhdWxhIHBpbiAzNiAgICAgICAgICAgICB8CisgICAgICAgICB8IDEwICAgIHwgREFUTFkgICAgfCBJL08gZGF0YSBQYXVsYSBwaW4gMzYgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgIHwgMDkgICAgfCBPVVRMWCAgICB8IE91dHB1dCBlbmFibGUgZm9yIFBhdWxhIHBpbiAzNSAgICAgICAgICAgICAgfAorICAgICAgICAgfCAwOCAgICB8IERBVExYICAgIHwgSS9PIGRhdGEgIFBhdWxhIHBpbiAzNSAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICB8IDA3LTAxIHwgICBYICAgICAgfCBOb3QgdXNlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgIHwgMDAgICAgfCBTVEFSVCAgICB8IFN0YXJ0IHBvdHMgKGR1bXAgY2FwYWNpdG9ycyxzdGFydCBjb3VudGVycykgfAorICAgICAgICAgKy0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW5wdXQvYXBwbGV0b3VjaC50eHQgYi9Eb2N1bWVudGF0aW9uL2lucHV0L2FwcGxldG91Y2gudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxM2RlM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lucHV0L2FwcGxldG91Y2gudHh0CkBAIC0wLDAgKzEsODUgQEAKK0FwcGxlIFRvdWNocGFkIERyaXZlciAoYXBwbGV0b3VjaCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlDb3B5cmlnaHQgKEMpIDIwMDUgU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KKworYXBwbGV0b3VjaCBpcyBhIExpbnV4IGtlcm5lbCBkcml2ZXIgZm9yIHRoZSBVU0IgdG91Y2hwYWQgZm91bmQgb24gcG9zdAorRmVicnVhcnkgMjAwNSBhbmQgT2N0b2JlciAyMDA1IEFwcGxlIEFsdW1pbml1bSBQb3dlcmJvb2tzLgorCitUaGlzIGRyaXZlciBpcyBkZXJpdmVkIGZyb20gSm9oYW5uZXMgQmVyZydzIGFwcGxldHJhY2twYWQgZHJpdmVyWzFdLCBidXQgaXQgaGFzCitiZWVuIGltcHJvdmVkIGluIHNvbWUgYXJlYXM6CisJKiBhcHBsZXRvdWNoIGlzIGEgZnVsbCBrZXJuZWwgZHJpdmVyLCBubyB1c2Vyc3BhY2UgcHJvZ3JhbSBpcyBuZWNlc3NhcnkKKwkqIGFwcGxldG91Y2ggY2FuIGJlIGludGVyZmFjZWQgd2l0aCB0aGUgc3luYXB0aWNzIFgxMSBkcml2ZXIsIGluIG9yZGVyCisJICB0byBoYXZlIHRvdWNocGFkIGFjY2VsZXJhdGlvbiwgc2Nyb2xsaW5nLCBldGMuCisKK0NyZWRpdHMgZ28gdG8gSm9oYW5uZXMgQmVyZyBmb3IgcmV2ZXJzZS1lbmdpbmVlcmluZyB0aGUgdG91Y2hwYWQgcHJvdG9jb2wsCitGcmFuayBBcm5vbGQgZm9yIGZ1cnRoZXIgaW1wcm92ZW1lbnRzLCBhbmQgQWxleCBIYXJwZXIgZm9yIHNvbWUgYWRkaXRpb25hbAoraW5mb3JtYXRpb24gYWJvdXQgdGhlIGlubmVyIHdvcmtpbmdzIG9mIHRoZSB0b3VjaHBhZCBzZW5zb3JzLiBNaWNoYWVsCitIYW5zZWxtYW5uIGFkZGVkIHN1cHBvcnQgZm9yIHRoZSBPY3RvYmVyIDIwMDUgbW9kZWxzLgorCitVc2FnZToKKy0tLS0tLQorCitJbiBvcmRlciB0byB1c2UgdGhlIHRvdWNocGFkIGluIHRoZSBiYXNpYyBtb2RlLCBjb21waWxlIHRoZSBkcml2ZXIgYW5kIGxvYWQKK3RoZSBtb2R1bGUuIEEgbmV3IGlucHV0IGRldmljZSB3aWxsIGJlIGRldGVjdGVkIGFuZCB5b3Ugd2lsbCBiZSBhYmxlIHRvIHJlYWQKK3RoZSBtb3VzZSBkYXRhIGZyb20gL2Rldi9pbnB1dC9taWNlICh1c2luZyBncG0sIG9yIFgxMSkuCisKK0luIFgxMSwgeW91IGNhbiBjb25maWd1cmUgdGhlIHRvdWNocGFkIHRvIHVzZSB0aGUgc3luYXB0aWNzIFgxMSBkcml2ZXIsIHdoaWNoCit3aWxsIGdpdmUgYWRkaXRpb25hbCBmdW5jdGlvbmFsaXRpZXMsIGxpa2UgYWNjZWxlcmF0aW9uLCBzY3JvbGxpbmcsIDIgZmluZ2VyCit0YXAgZm9yIG1pZGRsZSBidXR0b24gbW91c2UgZW11bGF0aW9uLCAzIGZpbmdlciB0YXAgZm9yIHJpZ2h0IGJ1dHRvbiBtb3VzZQorZW11bGF0aW9uLCBldGMuIEluIG9yZGVyIHRvIGRvIHRoaXMsIG1ha2Ugc3VyZSB5b3UncmUgdXNpbmcgYSByZWNlbnQgdmVyc2lvbiBvZgordGhlIHN5bmFwdGljcyBkcml2ZXIgKHRlc3RlZCB3aXRoIDAuMTQuMiwgYXZhaWxhYmxlIGZyb20gWzJdKSwgYW5kIGNvbmZpZ3VyZSBhCituZXcgaW5wdXQgZGV2aWNlIGluIHlvdXIgWDExIGNvbmZpZ3VyYXRpb24gZmlsZSAodGFrZSBhIGxvb2sgYmVsb3cgZm9yIGFuCitleGFtcGxlKS4gRm9yIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiwgc2VlIHRoZSBzeW5hcHRpY3MgZHJpdmVyIGRvY3VtZW50YXRpb24uCisKKwlTZWN0aW9uICJJbnB1dERldmljZSIKKyAgICAgICAgCUlkZW50aWZpZXIgICAgICAiU3luYXB0aWNzIFRvdWNocGFkIgorCSAgICAgICAgRHJpdmVyICAgICAgICAgICJzeW5hcHRpY3MiCisJCU9wdGlvbiAgICAgICAgICAiU2VuZENvcmVFdmVudHMiICAgICAgICAidHJ1ZSIKKwkJT3B0aW9uICAgICAgICAgICJEZXZpY2UiICAgICAgICAgICAgICAgICIvZGV2L2lucHV0L21pY2UiCisJCU9wdGlvbiAgICAgICAgICAiUHJvdG9jb2wiICAgICAgICAgICAgICAiYXV0by1kZXYiCisJCU9wdGlvbgkJIkxlZnRFZGdlIgkJIjAiCisJCU9wdGlvbgkJIlJpZ2h0RWRnZSIJCSI4NTAiCisJCU9wdGlvbgkJIlRvcEVkZ2UiCQkiMCIKKwkJT3B0aW9uCQkiQm90dG9tRWRnZSIJCSI2NDUiCisJCU9wdGlvbgkJIk1pblNwZWVkIgkJIjAuNCIKKwkJT3B0aW9uCQkiTWF4U3BlZWQiCQkiMSIKKwkJT3B0aW9uCQkiQWNjZWxGYWN0b3IiCQkiMC4wMiIKKwkJT3B0aW9uCQkiRmluZ2VyTG93IgkJIjAiCisJCU9wdGlvbgkJIkZpbmdlckhpZ2giCQkiMzAiCisJCU9wdGlvbgkJIk1heFRhcE1vdmUiCQkiMjAiCisJCU9wdGlvbgkJIk1heFRhcFRpbWUiCQkiMTAwIgorCQlPcHRpb24JCSJIb3JpelNjcm9sbERlbHRhIgkiMCIKKwkJT3B0aW9uCQkiVmVydFNjcm9sbERlbHRhIgkiMzAiCisJCU9wdGlvbgkJIlNITUNvbmZpZyIJCSJvbiIKKwlFbmRTZWN0aW9uCisKKwlTZWN0aW9uICJTZXJ2ZXJMYXlvdXQiCisJCS4uLgorCQlJbnB1dERldmljZQkiTW91c2UiCisJCUlucHV0RGV2aWNlCSJTeW5hcHRpY3MgVG91Y2hwYWQiCisJLi4uCisJRW5kU2VjdGlvbgorCitGdXp6IHByb2JsZW1zOgorLS0tLS0tLS0tLS0tLS0KKworVGhlIHRvdWNocGFkIHNlbnNvcnMgYXJlIHZlcnkgc2Vuc2l0aXZlIHRvIGhlYXQsIGFuZCB3aWxsIGdlbmVyYXRlIGEgbG90IG9mCitub2lzZSB3aGVuIHRoZSB0ZW1wZXJhdHVyZSBjaGFuZ2VzLiBUaGlzIGlzIGVzcGVjaWFsbHkgdHJ1ZSB3aGVuIHlvdSBwb3dlci1vbgordGhlIGxhcHRvcCBmb3IgdGhlIGZpcnN0IHRpbWUuCisKK1RoZSBhcHBsZXRvdWNoIGRyaXZlciB0cmllcyB0byBoYW5kbGUgdGhpcyBub2lzZSBhbmQgYXV0byBhZGFwdCBpdHNlbGYsIGJ1dCBpdAoraXMgbm90IHBlcmZlY3QuIElmIGZpbmdlciBtb3ZlbWVudHMgYXJlIG5vdCByZWNvZ25pemVkIGFueW1vcmUsIHRyeSByZWxvYWRpbmcKK3RoZSBkcml2ZXIuCisKK1lvdSBjYW4gYWN0aXZhdGUgZGVidWdnaW5nIHVzaW5nIHRoZSAnZGVidWcnIG1vZHVsZSBwYXJhbWV0ZXIuIEEgdmFsdWUgb2YgMAorZGVhY3RpdmF0ZXMgYW55IGRlYnVnZ2luZywgMSBhY3RpdmF0ZXMgdHJhY2luZyBvZiBpbnZhbGlkIHNhbXBsZXMsIDIgYWN0aXZhdGVzCitmdWxsIHRyYWNpbmcgKGVhY2ggc2FtcGxlIGlzIGJlaW5nIHRyYWNlZCk6CisJbW9kcHJvYmUgYXBwbGV0b3VjaCBkZWJ1Zz0xCisJCW9yCisJZWNobyAiMSIgPiAvc3lzL21vZHVsZS9hcHBsZXRvdWNoL3BhcmFtZXRlcnMvZGVidWcKKworTGlua3M6CistLS0tLS0KKworWzFdOiBodHRwOi8vam9oYW5uZXMuc2lwc29sdXRpb25zLm5ldC9Qb3dlckJvb2svdG91Y2hwYWQvCitbMl06IGh0dHA6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLyovaHR0cDovL3dlYi50ZWxpYS5jb20vfnU4OTQwNDM0MC90b3VjaHBhZC9pbmRleC5odG1sCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lucHV0L2F0YXJpa2JkLnR4dCBiL0RvY3VtZW50YXRpb24vaW5wdXQvYXRhcmlrYmQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzYTNiYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lucHV0L2F0YXJpa2JkLnR4dApAQCAtMCwwICsxLDcwOSBAQAorSW50ZWxsaWdlbnQgS2V5Ym9hcmQgKGlrYmQpIFByb3RvY29sCisKKworMS4gSW50cm9kdWN0aW9uCisKK1RoZSBBdGFyaSBDb3JwLiBJbnRlbGxpZ2VudCBLZXlib2FyZCAoaWtiZCkgaXMgYSBnZW5lcmFsIHB1cnBvc2Uga2V5Ym9hcmQKK2NvbnRyb2xsZXIgdGhhdCBpcyBmbGV4aWJsZSBlbm91Z2ggdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiBhIHZhcmlldHkgb2YKK3Byb2R1Y3RzIHdpdGhvdXQgbW9kaWZpY2F0aW9uLiBUaGUga2V5Ym9hcmQsIHdpdGggaXRzIG1pY3JvY29udHJvbGxlciwKK3Byb3ZpZGVzIGEgY29udmVuaWVudCBjb25uZWN0aW9uIHBvaW50IGZvciBhIG1vdXNlIGFuZCBzd2l0Y2gtdHlwZSBqb3lzdGlja3MuCitUaGUgaWtiZCBwcm9jZXNzb3IgYWxzbyBtYWludGFpbnMgYSB0aW1lLW9mLWRheSBjbG9jayB3aXRoIG9uZSBzZWNvbmQKK3Jlc29sdXRpb24uCitUaGUgaWtiZCBoYXMgYmVlbiBkZXNpZ25lZCB0byBiZSBnZW5lcmFsIGVub3VnaCB0aGF0IGl0IGNhbiBiZSB1c2VkIHdpdGggYQordmFyaWV0eSBvZiBuZXcgY29tcHV0ZXIgcHJvZHVjdHMuIFByb2R1Y3QgdmFyaWF0aW9ucyBpbiBhIG51bWJlciBvZgora2V5c3dpdGNoZXMsIG1vdXNlIHJlc29sdXRpb24sIGV0Yy4gY2FuIGJlIGFjY29tbW9kYXRlZC4KK1RoZSBpa2JkIGNvbW11bmljYXRlcyB3aXRoIHRoZSBtYWluIHByb2Nlc3NvciBvdmVyIGEgaGlnaCBzcGVlZCBiaS1kaXJlY3Rpb25hbAorc2VyaWFsIGludGVyZmFjZS4gSXQgY2FuIGZ1bmN0aW9uIGluIGEgdmFyaWV0eSBvZiBtb2RlcyB0byBmYWNpbGl0YXRlCitkaWZmZXJlbnQgYXBwbGljYXRpb25zIG9mIHRoZSBrZXlib2FyZCwgIGpveXN0aWNrcywgb3IgbW91c2UuIExpbWl0ZWQgdXNlIG9mCit0aGUgY29udHJvbGxlciBpcyBwb3NzaWJsZSBpbiBhcHBsaWNhdGlvbnMgaW4gd2hpY2ggb25seSBhIHVuaWRpcmVjdGlvbmFsCitjb21tdW5pY2F0aW9ucyBtZWRpdW0gaXMgYXZhaWxhYmxlIGJ5IGNhcmVmdWxseSBkZXNpZ25pbmcgdGhlIGRlZmF1bHQgbW9kZXMuCisKKzMuIEtleWJvYXJkCisKK1RoZSBrZXlib2FyZCBhbHdheXMgcmV0dXJucyBrZXkgbWFrZS9icmVhayBzY2FuIGNvZGVzLiBUaGUgaWtiZCBnZW5lcmF0ZXMKK2tleWJvYXJkIHNjYW4gY29kZXMgZm9yIGVhY2gga2V5IHByZXNzIGFuZCByZWxlYXNlLiBUaGUga2V5IHNjYW4gbWFrZSAoa2V5CitjbG9zdXJlKSBjb2RlcyBzdGFydCBhdCAxLCBhbmQgYXJlIGRlZmluZWQgaW4gQXBwZW5kaXggQS4gRm9yIGV4YW1wbGUsIHRoZQorSVNPIGtleSBwb3NpdGlvbiBpbiB0aGUgc2NhbiBjb2RlIHRhYmxlIHNob3VsZCBleGlzdCBldmVuIGlmIG5vIGtleXN3aXRjaAorZXhpc3RzIGluIHRoYXQgcG9zaXRpb24gb24gYSBwYXJ0aWN1bGFyIGtleWJvYXJkLiBUaGUgYnJlYWsgY29kZSBmb3IgZWFjaCBrZXkKK2lzIG9idGFpbmVkIGJ5IE9SaW5nIDB4ODAgd2l0aCB0aGUgbWFrZSBjb2RlLgorCitUaGUgc3BlY2lhbCBjb2RlcyAweEY2IHRocm91Z2ggMHhGRiBhcmUgcmVzZXJ2ZWQgZm9yIHVzZSBhcyBmb2xsb3dzOgorICAgIDB4RjYgICAgICAgICAgICBzdGF0dXMgcmVwb3J0CisgICAgMHhGNyAgICAgICAgICAgIGFic29sdXRlIG1vdXNlIHBvc2l0aW9uIHJlY29yZAorICAgIDB4RjgtMHhGQiAgICAgICByZWxhdGl2ZSBtb3VzZSBwb3NpdGlvbiByZWNvcmRzIChsc2JzIGRldGVybWluZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgIG1vdXNlIGJ1dHRvbiBzdGF0ZXMpCisgICAgMHhGQyAgICAgICAgICAgIHRpbWUtb2YtZGF5CisgICAgMHhGRCAgICAgICAgICAgIGpveXN0aWNrIHJlcG9ydCAoYm90aCBzdGlja3MpCisgICAgMHhGRSAgICAgICAgICAgIGpveXN0aWNrIDAgZXZlbnQKKyAgICAweEZGICAgICAgICAgICAgam95c3RpY2sgMSBldmVudAorCitUaGUgdHdvIHNoaWZ0IGtleXMgcmV0dXJuIGRpZmZlcmVudCBzY2FuIGNvZGVzIGluIHRoaXMgbW9kZS4gVGhlIEVOVEVSIGtleQorYW5kIHRoZSBSRVR1cm4ga2V5IGFyZSBhbHNvIGRpc3RpbmN0LgorCis0LiBNb3VzZQorCitUaGUgbW91c2UgcG9ydCBzaG91bGQgYmUgY2FwYWJsZSBvZiBzdXBwb3J0aW5nIGEgbW91c2Ugd2l0aCByZXNvbHV0aW9uIG9mCithcHByb3hpbWF0ZWx5IDIwMCBjb3VudHMgKHBoYXNlIGNoYW5nZXMgb3IgJ2NsaWNrcycpIHBlciBpbmNoIG9mIHRyYXZlbC4gVGhlCittb3VzZSBzaG91bGQgYmUgc2Nhbm5lZCBhdCBhIHJhdGUgdGhhdCB3aWxsIHBlcm1pdCBhY2N1cmF0ZSB0cmFja2luZyBhdAordmVsb2NpdGllcyB1cCB0byAxMCBpbmNoZXMgcGVyIHNlY29uZC4KK1RoZSBpa2JkIGNhbiByZXBvcnQgbW91c2UgbW90aW9uIGluIHRocmVlIGRpc3RpbmN0bHkgZGlmZmVyZW50IHdheXMuIEl0IGNhbgorcmVwb3J0IHJlbGF0aXZlIG1vdGlvbiwgYWJzb2x1dGUgbW90aW9uIGluIGEgY29vcmRpbmF0ZSBzeXN0ZW0gbWFpbnRhaW5lZAord2l0aGluIHRoZSBpa2JkLCBvciBieSBjb252ZXJ0aW5nIG1vdXNlIG1vdGlvbiBpbnRvIGtleWJvYXJkIGN1cnNvciBjb250cm9sCitrZXkgZXF1aXZhbGVudHMuCitUaGUgbW91c2UgYnV0dG9ucyBjYW4gYmUgdHJlYXRlZCBhcyBwYXJ0IG9mIHRoZSBtb3VzZSBvciBhcyBhZGRpdGlvbmFsCitrZXlib2FyZCBrZXlzLgorCis0LjEgUmVsYXRpdmUgUG9zaXRpb24gUmVwb3J0aW5nCisKK0luIHJlbGF0aXZlIHBvc2l0aW9uIG1vZGUsIHRoZSBpa2JkIHdpbGwgcmV0dXJuIHJlbGF0aXZlIG1vdXNlIHBvc2l0aW9uCityZWNvcmRzIHdoZW5ldmVyIGEgbW91c2UgZXZlbnQgb2NjdXJzLiBBIG1vdXNlIGV2ZW50IGNvbnNpc3RzIG9mIGEgbW91c2UKK2J1dHRvbiBiZWluZyBwcmVzc2VkIG9yIHJlbGVhc2VkLCBvciBtb3Rpb24gaW4gZWl0aGVyIGF4aXMgZXhjZWVkaW5nIGEKK3NldHRhYmxlIHRocmVzaG9sZCBvZiBtb3Rpb24uIFJlZ2FyZGxlc3Mgb2YgdGhlIHRocmVzaG9sZCwgYWxsIGJpdHMgb2YKK3Jlc29sdXRpb24gYXJlIHJldHVybmVkIHRvIHRoZSBob3N0IGNvbXB1dGVyLgorTm90ZSB0aGF0IHRoZSBpa2JkIG1heSByZXR1cm4gbW91c2UgcmVsYXRpdmUgcG9zaXRpb24gcmVwb3J0cyB3aXRoCitzaWduaWZpY2FudGx5IG1vcmUgdGhhbiB0aGUgdGhyZXNob2xkIGRlbHRhIHggb3IgeS4gVGhpcyBtYXkgaGFwcGVuIHNpbmNlIG5vCityZWxhdGl2ZSBtb3VzZSBtb3Rpb24gZXZlbnRzIHdpbGwgYmUgZ2VuZXJhdGVkOiAoYSkgd2hpbGUgdGhlIGtleWJvYXJkIGhhcworYmVlbiAncGF1c2VkJyAoIHRoZSBldmVudCB3aWxsIGJlIHN0b3JlZCB1bnRpbCBrZXlib2FyZCBjb21tdW5pY2F0aW9ucyBpcworcmVzdW1lZCkgKGIpIHdoaWxlIGFueSBldmVudCBpcyBiZWluZyB0cmFuc21pdHRlZC4KKworVGhlIHJlbGF0aXZlIG1vdXNlIHBvc2l0aW9uIHJlY29yZCBpcyBhIHRocmVlIGJ5dGUgcmVjb3JkIG9mIHRoZSBmb3JtCisocmVnYXJkbGVzcyBvZiBrZXlib2FyZCBtb2RlKToKKyAgICAlMTExMTEweHkgICAgICAgICAgIDsgbW91c2UgcG9zaXRpb24gcmVjb3JkIGZsYWcKKyAgICAgICAgICAgICAgICAgICAgICAgIDsgd2hlcmUgeSBpcyB0aGUgcmlnaHQgYnV0dG9uIHN0YXRlCisgICAgICAgICAgICAgICAgICAgICAgICA7IGFuZCB4IGlzIHRoZSBsZWZ0IGJ1dHRvbiBzdGF0ZQorICAgIFggICAgICAgICAgICAgICAgICAgOyBkZWx0YSB4IGFzIHR3b3MgY29tcGxlbWVudCBpbnRlZ2VyCisgICAgWSAgICAgICAgICAgICAgICAgICA7IGRlbHRhIHkgYXMgdHdvcyBjb21wbGVtZW50IGludGVnZXIKKworTm90ZSB0aGF0IHRoZSB2YWx1ZSBvZiB0aGUgYnV0dG9uIHN0YXRlIGJpdHMgc2hvdWxkIGJlIHZhbGlkIGV2ZW4gaWYgdGhlCitNT1VTRSBCVVRUT04gQUNUSU9OIGhhcyBzZXQgdGhlIGJ1dHRvbnMgdG8gYWN0IGxpa2UgcGFydCBvZiB0aGUga2V5Ym9hcmQuCitJZiB0aGUgYWNjdW11bGF0ZWQgbW90aW9uIGJlZm9yZSB0aGUgcmVwb3J0IHBhY2tldCBpcyBnZW5lcmF0ZWQgZXhjZWVkcyB0aGUKKysxMjcuLi4tMTI4IHJhbmdlLCB0aGUgbW90aW9uIGlzIGJyb2tlbiBpbnRvIG11bHRpcGxlIHBhY2tldHMuCitOb3RlIHRoYXQgdGhlIHNpZ24gb2YgdGhlIGRlbHRhIHkgcmVwb3J0ZWQgaXMgYSBmdW5jdGlvbiBvZiB0aGUgWSBvcmlnaW4KK3NlbGVjdGVkLgorCis0LjIgQWJzb2x1dGUgUG9zaXRpb24gcmVwb3J0aW5nCisKK1RoZSBpa2JkIGNhbiBhbHNvIG1haW50YWluIGFic29sdXRlIG1vdXNlIHBvc2l0aW9uLiBDb21tYW5kcyBleGlzdCBmb3IKK3Jlc2V0dGluZyB0aGUgbW91c2UgcG9zaXRpb24sIHNldHRpbmcgWC9ZIHNjYWxpbmcsIGFuZCBpbnRlcnJvZ2F0aW5nIHRoZQorY3VycmVudCBtb3VzZSBwb3NpdGlvbi4KKworNC4zIE1vdXNlIEN1cnNvciBLZXkgTW9kZQorCitUaGUgaWtiZCBjYW4gdHJhbnNsYXRlIG1vdXNlIG1vdGlvbiBpbnRvIHRoZSBlcXVpdmFsZW50IGN1cnNvciBrZXlzdHJva2VzLgorVGhlIG51bWJlciBvZiBtb3VzZSBjbGlja3MgcGVyIGtleXN0cm9rZSBpcyBpbmRlcGVuZGVudGx5IHByb2dyYW1tYWJsZSBpbgorZWFjaCBheGlzLiBUaGUgaWtiZCBpbnRlcm5hbGx5IG1haW50YWlucyBtb3VzZSBtb3Rpb24gaW5mb3JtYXRpb24gdG8gdGhlCitoaWdoZXN0IHJlc29sdXRpb24gYXZhaWxhYmxlLCBhbmQgbWVyZWx5IGdlbmVyYXRlcyBhIHBhaXIgb2YgY3Vyc29yIGtleSBldmVudHMKK2ZvciBlYWNoIG11bHRpcGxlIG9mIHRoZSBzY2FsZSBmYWN0b3IuCitNb3VzZSBtb3Rpb24gcHJvZHVjZXMgdGhlIGN1cnNvciBrZXkgbWFrZSBjb2RlIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IHRoZQorYnJlYWsgY29kZSBmb3IgdGhlIGFwcHJvcHJpYXRlIGN1cnNvciBrZXkuIFRoZSBtb3VzZSBidXR0b25zIHByb2R1Y2Ugc2NhbgorY29kZXMgYWJvdmUgdGhvc2Ugbm9ybWFsbHkgYXNzaWduZWQgZm9yIHRoZSBsYXJnZXN0IGVudmlzaW9uZWQga2V5Ym9hcmQgKGkuZS4KK0xFRlQ9MHg3NCAmIFJJR0hUPTB4NzUpLgorCis1LiBKb3lzdGljaworCis1LjEgSm95c3RpY2sgRXZlbnQgUmVwb3J0aW5nCisKK0luIHRoaXMgbW9kZSwgdGhlIGlrYmQgZ2VuZXJhdGVzIGEgcmVjb3JkIHdoZW5ldmVyIHRoZSBqb3lzdGljayBwb3NpdGlvbiBpcworY2hhbmdlZCAoaS5lLiBmb3IgZWFjaCBvcGVuaW5nIG9yIGNsb3Npbmcgb2YgYSBqb3lzdGljayBzd2l0Y2ggb3IgdHJpZ2dlcikuCisKK1RoZSBqb3lzdGljayBldmVudCByZWNvcmQgaXMgdHdvIGJ5dGVzIG9mIHRoZSBmb3JtOgorICAgICUxMTExMTExeCAgICAgICAgICAgOyBKb3lzdGljayBldmVudCBtYXJrZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIDsgd2hlcmUgeCBpcyBKb3lzdGljayAwIG9yIDEKKyAgICAleDAwMHl5eXkgICAgICAgICAgIDsgd2hlcmUgeXl5eSBpcyB0aGUgc3RpY2sgcG9zaXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIDsgYW5kIHggaXMgdGhlIHRyaWdnZXIKKworNS4yIEpveXN0aWNrIEludGVycm9nYXRpb24KKworVGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGpveXN0aWNrIHBvcnRzIG1heSBiZSBpbnRlcnJvZ2F0ZWQgYXQgYW55IHRpbWUgaW4KK3RoaXMgbW9kZSBieSBzZW5kaW5nIGFuICdJbnRlcnJvZ2F0ZSBKb3lzdGljaycgY29tbWFuZCB0byB0aGUgaWtiZC4KKworVGhlIGlrYmQgcmVzcG9uc2UgdG8gam95c3RpY2sgaW50ZXJyb2dhdGlvbiBpcyBhIHRocmVlIGJ5dGUgcmVwb3J0IG9mIHRoZSBmb3JtCisgICAgMHhGRCAgICAgICAgICAgICAgICA7IGpveXN0aWNrIHJlcG9ydCBoZWFkZXIKKyAgICAleDAwMHl5eXkgICAgICAgICAgIDsgSm95c3RpY2sgMAorICAgICV4MDAweXl5eSAgICAgICAgICAgOyBKb3lzdGljayAxCisgICAgICAgICAgICAgICAgICAgICAgICA7IHdoZXJlIHggaXMgdGhlIHRyaWdnZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIDsgYW5kIHl5eSBpcyB0aGUgc3RpY2sgcG9zaXRpb24KKworNS4zIEpveXN0aWNrIE1vbml0b3JpbmcKKworQSBtb2RlIGlzIGF2YWlsYWJsZSB0aGF0IGRldm90ZXMgbmVhcmx5IGFsbCBvZiB0aGUga2V5Ym9hcmQgY29tbXVuaWNhdGlvbnMKK3RpbWUgdG8gcmVwb3J0aW5nIHRoZSBzdGF0ZSBvZiB0aGUgam95c3RpY2sgcG9ydHMgYXQgYSB1c2VyIHNwZWNpZmlhYmxlIHJhdGUuCitJdCByZW1haW5zIGluIHRoaXMgbW9kZSB1bnRpbCByZXNldCBvciBjb21tYW5kZWQgaW50byBhbm90aGVyIG1vZGUuIFRoZSBQQVVTRQorY29tbWFuZCBpbiB0aGlzIG1vZGUgbm90IG9ubHkgc3RvcCB0aGUgb3V0cHV0IGJ1dCBhbHNvIHRlbXBvcmFyaWx5IHN0b3BzCitzY2FubmluZyB0aGUgam95c3RpY2tzIChzYW1wbGVzIGFyZSBub3QgcXVldWVkKS4KKworNS40IEZpcmUgQnV0dG9uIE1vbml0b3JpbmcKKworQSBtb2RlIGlzIHByb3ZpZGVkIHRvIHBlcm1pdCBtb25pdG9yaW5nIGEgc2luZ2xlIGlucHV0IGJpdCBhdCBhIGhpZ2ggcmF0ZS4gSW4KK3RoaXMgbW9kZSB0aGUgaWtiZCBtb25pdG9ycyB0aGUgc3RhdGUgb2YgdGhlIEpveXN0aWNrIDEgZmlyZSBidXR0b24gYXQgdGhlCittYXhpbXVtIHJhdGUgcGVybWl0dGVkIGJ5IHRoZSBzZXJpYWwgY29tbXVuaWNhdGlvbiBjaGFubmVsLiBUaGUgZGF0YSBpcyBwYWNrZWQKKzggYml0cyBwZXIgYnl0ZSBmb3IgdHJhbnNtaXNzaW9uIHRvIHRoZSBob3N0LiBUaGUgaWtiZCByZW1haW5zIGluIHRoaXMgbW9kZQordW50aWwgcmVzZXQgb3IgY29tbWFuZGVkIGludG8gYW5vdGhlciBtb2RlLiBUaGUgUEFVU0UgY29tbWFuZCBpbiB0aGlzIG1vZGUgbm90Citvbmx5IHN0b3BzIHRoZSBvdXRwdXQgYnV0IGFsc28gdGVtcG9yYXJpbHkgc3RvcHMgc2Nhbm5pbmcgdGhlIGJ1dHRvbiAoc2FtcGxlcworYXJlIG5vdCBxdWV1ZWQpLgorCis1LjUgSm95c3RpY2sgS2V5IENvZGUgTW9kZQorCitUaGUgaWtiZCBtYXkgYmUgY29tbWFuZGVkIHRvIHRyYW5zbGF0ZSB0aGUgdXNlIG9mIGVpdGhlciBqb3lzdGljayBpbnRvIHRoZQorZXF1aXZhbGVudCBjdXJzb3IgY29udHJvbCBrZXlzdHJva2UocykuIFRoZSBpa2JkIHByb3ZpZGVzIGEgc2luZ2xlIGJyZWFrcG9pbnQKK3ZlbG9jaXR5IGpveXN0aWNrIGN1cnNvci4KK0pveXN0aWNrIGV2ZW50cyBwcm9kdWNlIHRoZSBtYWtlIGNvZGUsIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IHRoZSBicmVhayBjb2RlCitmb3IgdGhlIGFwcHJvcHJpYXRlIGN1cnNvciBtb3Rpb24ga2V5cy4gVGhlIHRyaWdnZXIgb3IgZmlyZSBidXR0b25zIG9mIHRoZQoram95c3RpY2tzIHByb2R1Y2UgcHNldWRvIGtleSBzY2FuIGNvZGVzIGFib3ZlIHRob3NlIHVzZWQgYnkgdGhlIGxhcmdlc3Qga2V5CittYXRyaXggZW52aXNpb25lZCAoaS5lLiBKT1lTVElDSzA9MHg3NCwgSk9ZU1RJQ0sxPTB4NzUpLgorCis2LiBUaW1lLW9mLURheSBDbG9jaworCitUaGUgaWtiZCBhbHNvIG1haW50YWlucyBhIHRpbWUtb2YtZGF5IGNsb2NrIGZvciB0aGUgc3lzdGVtLiBDb21tYW5kcyBhcmUKK2F2YWlsYWJsZSB0byBzZXQgYW5kIGludGVycm9nYXRlIHRoZSB0aW1lci1vZi1kYXkgY2xvY2suIFRpbWUta2VlcGluZyBpcworbWFpbnRhaW5lZCBkb3duIHRvIGEgcmVzb2x1dGlvbiBvZiBvbmUgc2Vjb25kLgorCis3LiBTdGF0dXMgSW5xdWlyaWVzCisKK1RoZSBjdXJyZW50IHN0YXRlIG9mIGlrYmQgbW9kZXMgYW5kIHBhcmFtZXRlcnMgbWF5IGJlIGZvdW5kIGJ5IHNlbmRpbmcgc3RhdHVzCitpbnF1aXJ5IGNvbW1hbmRzIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgaWtiZCBzZXQgY29tbWFuZHMuCisKKzguIFBvd2VyLVVwIE1vZGUKKworVGhlIGtleWJvYXJkIGNvbnRyb2xsZXIgd2lsbCBwZXJmb3JtIGEgc2ltcGxlIHNlbGYtdGVzdCBvbiBwb3dlci11cCB0byBkZXRlY3QKK21ham9yIGNvbnRyb2xsZXIgZmF1bHRzIChST00gY2hlY2tzdW0gYW5kIFJBTSB0ZXN0KSBhbmQgc3VjaCB0aGluZ3MgYXMgc3R1Y2sKK2tleXMuIEFueSBrZXlzIGRvd24gYXQgcG93ZXItdXAgYXJlIHByZXN1bWVkIHRvIGJlIHN0dWNrLCBhbmQgdGhlaXIgQlJFQUsKKyhzaWMpIGNvZGUgaXMgcmV0dXJuZWQgKHdoaWNoIHdpdGhvdXQgdGhlIHByZWNlZGluZyBNQUtFIGNvZGUgaXMgYSBmbGFnIGZvciBhCitrZXlib2FyZCBlcnJvcikuIElmIHRoZSBjb250cm9sbGVyIHNlbGYtdGVzdCBjb21wbGV0ZXMgd2l0aG91dCBlcnJvciwgdGhlIGNvZGUKKzB4RjAgaXMgcmV0dXJuZWQuIChUaGlzIGNvZGUgd2lsbCBiZSB1c2VkIHRvIGluZGljYXRlIHRoZSB2ZXJzaW9uL3JlbGVhc2Ugb2YKK3RoZSBpa2JkIGNvbnRyb2xsZXIuIFRoZSBmaXJzdCByZWxlYXNlIG9mIHRoZSBpa2JkIGlzIHZlcnNpb24gMHhGMCwgc2hvdWxkCit0aGVyZSBiZSBhIHNlY29uZCByZWxlYXNlIGl0IHdpbGwgYmUgMHhGMSwgYW5kIHNvIG9uLikKK1RoZSBpa2JkIGRlZmF1bHRzIHRvIGEgbW91c2UgcG9zaXRpb24gcmVwb3J0aW5nIHdpdGggdGhyZXNob2xkIG9mIDEgdW5pdCBpbgorZWl0aGVyIGF4aXMgYW5kIHRoZSBZPTAgb3JpZ2luIGF0IHRoZSB0b3Agb2YgdGhlIHNjcmVlbiwgYW5kIGpveXN0aWNrIGV2ZW50CityZXBvcnRpbmcgbW9kZSBmb3Igam95c3RpY2sgMSwgd2l0aCBib3RoIGJ1dHRvbnMgYmVpbmcgbG9naWNhbGx5IGFzc2lnbmVkIHRvCit0aGUgbW91c2UuIEFmdGVyIGFueSBqb3lzdGljayBjb21tYW5kLCB0aGUgaWtiZCBhc3N1bWVzIHRoYXQgam95c3RpY2tzIGFyZQorY29ubmVjdGVkIHRvIGJvdGggSm95c3RpY2swIGFuZCBKb3lzdGljazEuIEFueSBtb3VzZSBjb21tYW5kIChleGNlcHQgTU9VU0UKK0RJU0FCTEUpIHRoZW4gY2F1c2VzIHBvcnQgMCB0byBhZ2FpbiBiZSBzY2FubmVkIGFzIGlmIGl0IHdlcmUgYSBtb3VzZSwgYW5kCitib3RoIGJ1dHRvbnMgYXJlIGxvZ2ljYWxseSBjb25uZWN0ZWQgdG8gaXQuIElmIGEgbW91c2UgZGlzYWJsZSBjb21tYW5kIGlzCityZWNlaXZlZCB3aGlsZSBwb3J0IDAgaXMgcHJlc3VtZWQgdG8gYmUgYSBtb3VzZSwgdGhlIGJ1dHRvbiBpcyBsb2dpY2FsbHkKK2Fzc2lnbmVkIHRvIEpveXN0aWNrMSAodW50aWwgdGhlIG1vdXNlIGlzIHJlZW5hYmxlZCBieSBhbm90aGVyIG1vdXNlIGNvbW1hbmQpLgorCis5LiBpa2JkIENvbW1hbmQgU2V0CisKK1RoaXMgc2VjdGlvbiBjb250YWlucyBhIGxpc3Qgb2YgY29tbWFuZHMgdGhhdCBjYW4gYmUgc2VudCB0byB0aGUgaWtiZC4gQ29tbWFuZAorY29kZXMgKHN1Y2ggYXMgMHgwMCkgd2hpY2ggYXJlIG5vdCBzcGVjaWZpZWQgc2hvdWxkIHBlcmZvcm0gbm8gb3BlcmF0aW9uCisoTk9QcykuCisKKzkuMSBSRVNFVAorCisgICAgMHg4MAorICAgIDB4MDEKKworTi5CLiBUaGUgUkVTRVQgY29tbWFuZCBpcyB0aGUgb25seSB0d28gYnl0ZSBjb21tYW5kIHVuZGVyc3Rvb2QgYnkgdGhlIGlrYmQuCitBbnkgYnl0ZSBmb2xsb3dpbmcgYW4gMHg4MCBjb21tYW5kIGJ5dGUgb3RoZXIgdGhhbiAweDAxIGlzIGlnbm9yZWQgKGFuZCBjYXVzZXMKK3RoZSAweDgwIHRvIGJlIGlnbm9yZWQpLgorQSByZXNldCBtYXkgYWxzbyBiZSBjYXVzZWQgYnkgc2VuZGluZyBhIGJyZWFrIGxhc3RpbmcgYXQgbGVhc3QgMjAwbVMgdG8gdGhlCitpa2JkLgorRXhlY3V0aW5nIHRoZSBSRVNFVCBjb21tYW5kIHJldHVybnMgdGhlIGtleWJvYXJkIHRvIGl0cyBkZWZhdWx0IChwb3dlci11cCkKK21vZGUgYW5kIHBhcmFtZXRlciBzZXR0aW5ncy4gSXQgZG9lcyBub3QgYWZmZWN0IHRoZSB0aW1lLW9mLWRheSBjbG9jay4KK1RoZSBSRVNFVCBjb21tYW5kIG9yIGZ1bmN0aW9uIGNhdXNlcyB0aGUgaWtiZCB0byBwZXJmb3JtIGEgc2ltcGxlIHNlbGYtdGVzdC4KK0lmIHRoZSB0ZXN0IGlzIHN1Y2Nlc3NmdWwsIHRoZSBpa2JkIHdpbGwgc2VuZCB0aGUgY29kZSBvZiAweEYwIHdpdGhpbiAzMDBtUworb2YgcmVjZWlwdCBvZiB0aGUgUkVTRVQgY29tbWFuZCAob3IgdGhlIGVuZCBvZiB0aGUgYnJlYWssIG9yIHBvd2VyLXVwKS4gVGhlCitpa2JkIHdpbGwgdGhlbiBzY2FuIHRoZSBrZXkgbWF0cml4IGZvciBhbnkgc3R1Y2sgKGNsb3NlZCkga2V5cy4gQW55IGtleXMgZm91bmQKK2Nsb3NlZCB3aWxsIGNhdXNlIHRoZSBicmVhayBzY2FuIGNvZGUgdG8gYmUgZ2VuZXJhdGVkICh0aGUgYnJlYWsgY29kZSBhcnJpdmluZword2l0aG91dCBiZWluZyBwcmVjZWRlZCBieSB0aGUgbWFrZSBjb2RlIGlzIGEgZmxhZyBmb3IgYSBrZXkgbWF0cml4IGVycm9yKS4KKworOS4yLiBTRVQgTU9VU0UgQlVUVE9OIEFDVElPTgorCisgICAgMHgwNworICAgICUwMDAwMG1zcyAgICAgICAgICAgOyBtb3VzZSBidXR0b24gYWN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICA7ICAgICAgIChtIGlzIHByZXN1bWVkID0gMSB3aGVuIGluIE1PVVNFIEtFWUNPREUgbW9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDsgbXNzPTB4eSwgbW91c2UgYnV0dG9uIHByZXNzIG9yIHJlbGVhc2UgY2F1c2VzIG1vdXNlCisgICAgICAgICAgICAgICAgICAgICAgICA7ICBwb3NpdGlvbiByZXBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgIDsgIHdoZXJlIHk9MSwgbW91c2Uga2V5IHByZXNzIGNhdXNlcyBhYnNvbHV0ZSByZXBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgIDsgIGFuZCB4PTEsIG1vdXNlIGtleSByZWxlYXNlIGNhdXNlcyBhYnNvbHV0ZSByZXBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgIDsgbXNzPTEwMCwgbW91c2UgYnV0dG9ucyBhY3QgbGlrZSBrZXlzIAorCitUaGlzIGNvbW1hbmQgc2V0cyBob3cgdGhlIGlrYmQgc2hvdWxkIHRyZWF0IHRoZSBidXR0b25zIG9uIHRoZSBtb3VzZS4gVGhlCitkZWZhdWx0IG1vdXNlIGJ1dHRvbiBhY3Rpb24gbW9kZSBpcyAlMDAwMDAwMDAsIHRoZSBidXR0b25zIGFyZSB0cmVhdGVkIGFzIHBhcnQKK29mIHRoZSBtb3VzZSBsb2dpY2FsbHkuCitXaGVuIGJ1dHRvbnMgYWN0IGxpa2Uga2V5cywgTEVGVD0weDc0ICYgUklHSFQ9MHg3NS4KKworOS4zIFNFVCBSRUxBVElWRSBNT1VTRSBQT1NJVElPTiBSRVBPUlRJTkcKKworICAgIDB4MDgKKworU2V0IHJlbGF0aXZlIG1vdXNlIHBvc2l0aW9uIHJlcG9ydGluZy4gKERFRkFVTFQpIE1vdXNlIHBvc2l0aW9uIHBhY2tldHMgYXJlCitnZW5lcmF0ZWQgYXN5bmNocm9ub3VzbHkgYnkgdGhlIGlrYmQgd2hlbmV2ZXIgbW90aW9uIGV4Y2VlZHMgdGhlIHNldGFibGUKK3RocmVzaG9sZCBpbiBlaXRoZXIgYXhpcyAoc2VlIFNFVCBNT1VTRSBUSFJFU0hPTEQpLiBEZXBlbmRpbmcgdXBvbiB0aGUgbW91c2UKK2tleSBtb2RlLCBtb3VzZSBwb3NpdGlvbiByZXBvcnRzIG1heSBhbHNvIGJlIGdlbmVyYXRlZCB3aGVuIGVpdGhlciBtb3VzZQorYnV0dG9uIGlzIHByZXNzZWQgb3IgcmVsZWFzZWQuIE90aGVyd2lzZSB0aGUgbW91c2UgYnV0dG9ucyBiZWhhdmUgYXMgaWYgdGhleQord2VyZSBrZXlib2FyZCBrZXlzLgorCis5LjQgU0VUIEFCU09MVVRFIE1PVVNFIFBPU0lUSU9OSU5HCisKKyAgICAweDA5CisgICAgWE1TQiAgICAgICAgICAgICAgICA7IFggbWF4aW11bSAoaW4gc2NhbGVkIG1vdXNlIGNsaWNrcykKKyAgICBYTFNCCisgICAgWU1TQiAgICAgICAgICAgICAgICA7IFkgbWF4aW11bSAoaW4gc2NhbGVkIG1vdXNlIGNsaWNrcykKKyAgICBZTFNCCisJCitTZXQgYWJzb2x1dGUgbW91c2UgcG9zaXRpb24gbWFpbnRlbmFuY2UuIFJlc2V0cyB0aGUgaWtiZCBtYWludGFpbmVkIFggYW5kIFkKK2Nvb3JkaW5hdGVzLgorSW4gdGhpcyBtb2RlLCB0aGUgdmFsdWUgb2YgdGhlIGludGVybmFsbHkgbWFpbnRhaW5lZCBjb29yZGluYXRlcyBkb2VzIE5PVCB3cmFwCitiZXR3ZWVuIDAgYW5kIGxhcmdlIHBvc2l0aXZlIG51bWJlcnMuIEV4Y2VzcyBtb3Rpb24gYmVsb3cgMCBpcyBpZ25vcmVkLiBUaGUKK2NvbW1hbmQgc2V0cyB0aGUgbWF4aW11bSBwb3NpdGl2ZSB2YWx1ZSB0aGF0IGNhbiBiZSBhdHRhaW5lZCBpbiB0aGUgc2NhbGVkCitjb29yZGluYXRlIHN5c3RlbS4gTW90aW9uIGJleW9uZCB0aGF0IHZhbHVlIGlzIGFsc28gaWdub3JlZC4KKworOS41IFNFVCBNT1VTRSBLRVlDT0RFIE1PU0UKKworICAgIDB4MEEKKyAgICBkZWx0YXggICAgICAgICAgICAgIDsgZGlzdGFuY2UgaW4gWCBjbGlja3MgdG8gcmV0dXJuIChMRUZUKSBvciAoUklHSFQpCisgICAgZGVsdGF5ICAgICAgICAgICAgICA7IGRpc3RhbmNlIGluIFkgY2xpY2tzIHRvIHJldHVybiAoVVApIG9yIChET1dOKQorCitTZXQgbW91c2UgbW9uaXRvcmluZyByb3V0aW5lcyB0byByZXR1cm4gY3Vyc29yIG1vdGlvbiBrZXljb2RlcyBpbnN0ZWFkIG9mCitlaXRoZXIgUkVMQVRJVkUgb3IgQUJTT0xVVEUgbW90aW9uIHJlY29yZHMuIFRoZSBpa2JkIHJldHVybnMgdGhlIGFwcHJvcHJpYXRlCitjdXJzb3Iga2V5Y29kZSBhZnRlciBtb3VzZSB0cmF2ZWwgZXhjZWVkaW5nIHRoZSB1c2VyIHNwZWNpZmllZCBkZWx0YXMgaW4KK2VpdGhlciBheGlzLiBXaGVuIHRoZSBrZXlib2FyZCBpcyBpbiBrZXkgc2NhbiBjb2RlIG1vZGUsIG1vdXNlIG1vdGlvbiB3aWxsCitjYXVzZSB0aGUgbWFrZSBjb2RlIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IHRoZSBicmVhayBjb2RlLiBOb3RlIHRoYXQgdGhpcworY29tbWFuZCBpcyBub3QgYWZmZWN0ZWQgYnkgdGhlIG1vdXNlIG1vdGlvbiBvcmlnaW4uCisKKzkuLjYgU0VUIE1PVVNFIFRIUkVTSE9MRAorCisgICAgMHgwQgorICAgIFggICAgICAgICAgICAgICAgICAgOyB4IHRocmVzaG9sZCBpbiBtb3VzZSB0aWNrcyAocG9zaXRpdmUgaW50ZWdlcnMpCisgICAgWSAgICAgICAgICAgICAgICAgICA7IHkgdGhyZXNob2xkIGluIG1vdXNlIHRpY2tzIChwb3NpdGl2ZSBpbnRlZ2VycykKKworVGhpcyBjb21tYW5kIHNldHMgdGhlIHRocmVzaG9sZCBiZWZvcmUgYSBtb3VzZSBldmVudCBpcyBnZW5lcmF0ZWQuIE5vdGUgdGhhdAoraXQgZG9lcyBOT1QgYWZmZWN0IHRoZSByZXNvbHV0aW9uIG9mIHRoZSBkYXRhIHJldHVybmVkIHRvIHRoZSBob3N0LiBUaGlzCitjb21tYW5kIGlzIHZhbGlkIG9ubHkgaW4gUkVMQVRJVkUgTU9VU0UgUE9TSVRJT05JTkcgbW9kZS4gVGhlIHRocmVzaG9sZHMKK2RlZmF1bHQgdG8gMSBhdCBSRVNFVCAob3IgcG93ZXItdXApLgorCis5LjcgU0VUIE1PVVNFIFNDQUxFCisKKyAgICAweDBDCisgICAgWCAgICAgICAgICAgICAgICAgICA7IGhvcml6b250YWwgbW91c2UgdGlja3MgcGVyIGludGVybmFsIFgKKyAgICBZICAgICAgICAgICAgICAgICAgIDsgdmVydGljYWwgbW91c2UgdGlja3MgcGVyIGludGVybmFsIFkKKworVGhpcyBjb21tYW5kIHNldHMgdGhlIHNjYWxlIGZhY3RvciBmb3IgdGhlIEFCU09MVVRFIE1PVVNFIFBPU0lUSU9OSU5HIG1vZGUuCitJbiB0aGlzIG1vZGUsIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1vdXNlIHBoYXNlIGNoYW5nZXMgKCdjbGlja3MnKSBtdXN0CitvY2N1ciBiZWZvcmUgdGhlIGludGVybmFsbHkgbWFpbnRhaW5lZCBjb29yZGluYXRlIGlzIGNoYW5nZWQgYnkgb25lCisoaW5kZXBlbmRlbnRseSBzY2FsZWQgZm9yIGVhY2ggYXhpcykuIFJlbWVtYmVyIHRoYXQgdGhlIG1vdXNlIHBvc2l0aW9uCitpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgb25seSBieSBpbnRlcnJvZ2F0aW5nIHRoZSBpa2JkIGluIHRoZSBBQlNPTFVURSBNT1VTRQorUE9TSVRJT05JTkcgbW9kZSB1bmxlc3MgdGhlIGlrYmQgaGFzIGJlZW4gY29tbWFuZGVkIHRvIHJlcG9ydCBvbiBidXR0b24gcHJlc3MKK29yIHJlbGVhc2UgKHNlZSBTRVQgTU9TRSBCVVRUT04gQUNUSU9OKS4KKworOS44IElOVEVSUk9HQVRFIE1PVVNFIFBPU0lUSU9OCisKKyAgICAweDBECisgICAgUmV0dXJuczoKKyAgICAgICAgICAgIDB4RjcgICAgICAgOyBhYnNvbHV0ZSBtb3VzZSBwb3NpdGlvbiBoZWFkZXIKKyAgICBCVVRUT05TCisgICAgICAgICAgICAwMDAwZGNiYSAgIDsgd2hlcmUgYSBpcyByaWdodCBidXR0b24gZG93biBzaW5jZSBsYXN0IGludGVycm9nYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgOyBiIGlzIHJpZ2h0IGJ1dHRvbiB1cCBzaW5jZSBsYXN0CisgICAgICAgICAgICAgICAgICAgICAgIDsgYyBpcyBsZWZ0IGJ1dHRvbiBkb3duIHNpbmNlIGxhc3QKKyAgICAgICAgICAgICAgICAgICAgICAgOyBkIGlzIGxlZnQgYnV0dG9uIHVwIHNpbmNlIGxhc3QKKyAgICAgICAgICAgIFhNU0IgICAgICAgOyBYIGNvb3JkaW5hdGUKKyAgICAgICAgICAgIFhMU0IKKyAgICAgICAgICAgIFlNU0IgICAgICAgOyBZIGNvb3JkaW5hdGUKKyAgICAgICAgICAgIFlMU0IKKworVGhlIElOVEVSUk9HQVRFIE1PVVNFIFBPU0lUSU9OIGNvbW1hbmQgaXMgdmFsaWQgd2hlbiBpbiB0aGUgQUJTT0xVVEUgTU9VU0UKK1BPU0lUSU9OSU5HIG1vZGUsIHJlZ2FyZGxlc3Mgb2YgdGhlIHNldHRpbmcgb2YgdGhlIE1PVVNFIEJVVFRPTiBBQ1RJT04uCisKKzkuOSBMT0FEIE1PVVNFIFBPU0lUSU9OCisKKyAgICAweDBFCisgICAgMHgwMCAgICAgICAgICAgICAgICA7IGZpbGxlcgorICAgIFhNU0IgICAgICAgICAgICAgICAgOyBYIGNvb3JkaW5hdGUKKyAgICBYTFNCICAgICAgICAgICAgICAgIDsgKGluIHNjYWxlZCBjb29yZGluYXRlIHN5c3RlbSkKKyAgICBZTVNCICAgICAgICAgICAgICAgIDsgWSBjb29yZGluYXRlCisgICAgWUxTQgorCitUaGlzIGNvbW1hbmQgYWxsb3dzIHRoZSB1c2VyIHRvIHByZXNldCB0aGUgaW50ZXJuYWxseSBtYWludGFpbmVkIGFic29sdXRlCittb3VzZSBwb3NpdGlvbi4KKworOS4xMCBTRVQgWT0wIEFUIEJPVFRPTQorCisgICAgMHgwRgorCitUaGlzIGNvbW1hbmQgbWFrZXMgdGhlIG9yaWdpbiBvZiB0aGUgWSBheGlzIHRvIGJlIGF0IHRoZSBib3R0b20gb2YgdGhlCitsb2dpY2FsIGNvb3JkaW5hdGUgc3lzdGVtIGludGVybmFsIHRvIHRoZSBpa2JkIGZvciBhbGwgcmVsYXRpdmUgb3IgYWJzb2x1dGUKK21vdXNlIG1vdGlvbi4gVGhpcyBjYXVzZXMgbW91c2UgbW90aW9uIHRvd2FyZCB0aGUgdXNlciB0byBiZSBuZWdhdGl2ZSBpbiBzaWduCithbmQgYXdheSBmcm9tIHRoZSB1c2VyIHRvIGJlIHBvc2l0aXZlLgorCis5LjExIFNFVCBZPTAgQVQgVE9QCisKKyAgICAweDEwCisKK01ha2VzIHRoZSBvcmlnaW4gb2YgdGhlIFkgYXhpcyB0byBiZSBhdCB0aGUgdG9wIG9mIHRoZSBsb2dpY2FsIGNvb3JkaW5hdGUKK3N5c3RlbSB3aXRoaW4gdGhlIGlrYmQgZm9yIGFsbCByZWxhdGl2ZSBvciBhYnNvbHV0ZSBtb3VzZSBtb3Rpb24uIChERUZBVUxUKQorVGhpcyBjYXVzZXMgbW91c2UgbW90aW9uIHRvd2FyZCB0aGUgdXNlciB0byBiZSBwb3NpdGl2ZSBpbiBzaWduIGFuZCBhd2F5IGZyb20KK3RoZSB1c2VyIHRvIGJlIG5lZ2F0aXZlLgorCis5LjEyIFJFU1VNRQorCisgICAgMHgxMQorCitSZXN1bWUgc2VuZGluZyBkYXRhIHRvIHRoZSBob3N0LiBTaW5jZSBhbnkgY29tbWFuZCByZWNlaXZlZCBieSB0aGUgaWtiZCBhZnRlcgoraXRzIG91dHB1dCBoYXMgYmVlbiBwYXVzZWQgYWxzbyBjYXVzZXMgYW4gaW1wbGljaXQgUkVTVU1FIHRoaXMgY29tbWFuZCBjYW4gYmUKK3Rob3VnaHQgb2YgYXMgYSBOTyBPUEVSQVRJT04gY29tbWFuZC4gSWYgdGhpcyBjb21tYW5kIGlzIHJlY2VpdmVkIGJ5IHRoZSBpa2JkCithbmQgaXQgaXMgbm90IFBBVVNFRCwgaXQgaXMgc2ltcGx5IGlnbm9yZWQuCisKKzkuMTMgRElTQUJMRSBNT1VTRQorCisgICAgMHgxMgorCitBbGwgbW91c2UgZXZlbnQgcmVwb3J0aW5nIGlzIGRpc2FibGVkIChhbmQgc2Nhbm5pbmcgbWF5IGJlIGludGVybmFsbHkKK2Rpc2FibGVkKS4gQW55IHZhbGlkIG1vdXNlIG1vZGUgY29tbWFuZCByZXN1bWVzIG1vdXNlIG1vdGlvbiBtb25pdG9yaW5nLiAoVGhlCit2YWxpZCBtb3VzZSBtb2RlIGNvbW1hbmRzIGFyZSBTRVQgUkVMQVRJVkUgTU9VU0UgUE9TSVRJT04gUkVQT1JUSU5HLCBTRVQKK0FCU09MVVRFIE1PVVNFIFBPU0lUSU9OSU5HLCBhbmQgU0VUIE1PVVNFIEtFWUNPREUgTU9ERS4gKQorTi5CLiBJZiB0aGUgbW91c2UgYnV0dG9ucyBoYXZlIGJlZW4gY29tbWFuZGVkIHRvIGFjdCBsaWtlIGtleWJvYXJkIGtleXMsIHRoaXMKK2NvbW1hbmQgRE9FUyBhZmZlY3QgdGhlaXIgYWN0aW9ucy4KKworOS4xNCBQQVVTRSBPVVRQVVQKKworICAgIDB4MTMKKworU3RvcCBzZW5kaW5nIGRhdGEgdG8gdGhlIGhvc3QgdW50aWwgYW5vdGhlciB2YWxpZCBjb21tYW5kIGlzIHJlY2VpdmVkLiBLZXkKK21hdHJpeCBhY3Rpdml0eSBpcyBzdGlsbCBtb25pdG9yZWQgYW5kIHNjYW4gY29kZXMgb3IgQVNDSUkgY2hhcmFjdGVycyBlbnF1ZXVlZAorKHVwIHRvIHRoZSBtYXhpbXVtIHN1cHBvcnRlZCBieSB0aGUgbWljcm9jb250cm9sbGVyKSB0byBiZSBzZW50IHdoZW4gdGhlIGhvc3QKK2FsbG93cyB0aGUgb3V0cHV0IHRvIGJlIHJlc3VtZWQuIElmIGluIHRoZSBKT1lTVElDSyBFVkVOVCBSRVBPUlRJTkcgbW9kZSwKK2pveXN0aWNrIGV2ZW50cyBhcmUgYWxzbyBxdWV1ZWQuCitNb3VzZSBtb3Rpb24gc2hvdWxkIGJlIGFjY3VtdWxhdGVkIHdoaWxlIHRoZSBvdXRwdXQgaXMgcGF1c2VkLiBJZiB0aGUgaWtiZCBpcworaW4gUkVMQVRJVkUgTU9VU0UgUE9TSVRJT05JTkcgUkVQT1JUSU5HIG1vZGUsIG1vdGlvbiBpcyBhY2N1bXVsYXRlZCBiZXlvbmQgdGhlCitub3JtYWwgdGhyZXNob2xkIGxpbWl0cyB0byBwcm9kdWNlIHRoZSBtaW5pbXVtIG51bWJlciBvZiBwYWNrZXRzIG5lY2Vzc2FyeSBmb3IKK3RyYW5zbWlzc2lvbiB3aGVuIG91dHB1dCBpcyByZXN1bWVkLiBQcmVzc2luZyBvciByZWxlYXNpbmcgZWl0aGVyIG1vdXNlIGJ1dHRvbgorY2F1c2VzIGFueSBhY2N1bXVsYXRlZCBtb3Rpb24gdG8gYmUgaW1tZWRpYXRlbHkgcXVldWVkIGFzIHBhY2tldHMsIGlmIHRoZQorbW91c2UgaXMgaW4gUkVMQVRJVkUgTU9VU0UgUE9TSVRJT04gUkVQT1JUSU5HIG1vZGUuCitCZWNhdXNlIG9mIHRoZSBsaW1pdGF0aW9ucyBvZiB0aGUgbWljcm9jb250cm9sbGVyIG1lbW9yeSB0aGlzIGNvbW1hbmQgc2hvdWxkCitiZSB1c2VkIHNwYXJpbmdseSwgYW5kIHRoZSBvdXRwdXQgc2hvdWxkIG5vdCBiZSBzaHV0IG9mIGZvciBtb3JlIHRoYW4gPHRiZD4KK21pbGxpc2Vjb25kcyBhdCBhIHRpbWUuCitUaGUgb3V0cHV0IGlzIHN0b3BwZWQgb25seSBhdCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50ICdldmVuJy4gSWYgdGhlIFBBVVNFCitPVVRQVVQgY29tbWFuZCBpcyByZWNlaXZlZCBpbiB0aGUgbWlkZGxlIG9mIGEgbXVsdGlwbGUgYnl0ZSByZXBvcnQsIHRoZSBwYWNrZXQKK3dpbGwgc3RpbGwgYmUgdHJhbnNtaXR0ZWQgdG8gY29uY2x1c2lvbiBhbmQgdGhlbiB0aGUgUEFVU0Ugd2lsbCB0YWtlIGVmZmVjdC4KK1doZW4gdGhlIGlrYmQgaXMgaW4gZWl0aGVyIHRoZSBKT1lTVElDSyBNT05JVE9SSU5HIG1vZGUgb3IgdGhlIEZJUkUgQlVUVE9OCitNT05JVE9SSU5HIG1vZGUsIHRoZSBQQVVTRSBPVVRQVVQgY29tbWFuZCBhbHNvIHRlbXBvcmFyaWx5IHN0b3BzIHRoZQorbW9uaXRvcmluZyBwcm9jZXNzIChpLmUuIHRoZSBzYW1wbGVzIGFyZSBub3QgZW5xdWV1ZWQgZm9yIHRyYW5zbWlzc2lvbikuCisKKzAuMTUgU0VUIEpPWVNUSUNLIEVWRU5UIFJFUE9SVElORworCisgICAgMHgxNAorCitFbnRlciBKT1lTVElDSyBFVkVOVCBSRVBPUlRJTkcgbW9kZSAoREVGQVVMVCkuIEVhY2ggb3BlbmluZyBvciBjbG9zdXJlIG9mIGEKK2pveXN0aWNrIHN3aXRjaCBvciB0cmlnZ2VyIGNhdXNlcyBhIGpveXN0aWNrIGV2ZW50IHJlY29yZCB0byBiZSBnZW5lcmF0ZWQuCisKKzkuMTYgU0VUIEpPWVNUSUNLIElOVEVSUk9HQVRJT04gTU9ERQorCisgICAgMHgxNQorCitEaXNhYmxlcyBKT1lTVElDSyBFVkVOVCBSRVBPUlRJTkcuIEhvc3QgbXVzdCBzZW5kIGluZGl2aWR1YWwgSk9ZU1RJQ0sKK0lOVEVSUk9HQVRFIGNvbW1hbmRzIHRvIHNlbnNlIGpveXN0aWNrIHN0YXRlLgorCis5LjE3IEpPWVNUSUNLIElOVEVSUk9HQVRFCisKKyAgICAweDE2CisKK1JldHVybiBhIHJlY29yZCBpbmRpY2F0aW5nIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBqb3lzdGlja3MuIFRoaXMgY29tbWFuZAoraXMgdmFsaWQgaW4gZWl0aGVyIHRoZSBKT1lTVElDSyBFVkVOVCBSRVBPUlRJTkcgbW9kZSBvciB0aGUgSk9ZU1RJQ0sKK0lOVEVSUk9HQVRJT04gTU9ERS4KKworOS4xOCBTRVQgSk9ZU1RJQ0sgTU9OSVRPUklORworCisgICAgMHgxNworICAgIHJhdGUgICAgICAgICAgICAgICAgOyB0aW1lIGJldHdlZW4gc2FtcGxlcyBpbiBodW5kcmVkdGhzIG9mIGEgc2Vjb25kCisgICAgUmV0dXJuczogKGluIHBhY2tldHMgb2YgdHdvIGFzIGxvbmcgYXMgaW4gbW9kZSkKKyAgICAgICAgICAgICUwMDAwMDB4eSAgIDsgd2hlcmUgeSBpcyBKT1lTVElDSzEgRmlyZSBidXR0b24KKyAgICAgICAgICAgICAgICAgICAgICAgIDsgYW5kIHggaXMgSk9ZU1RJQ0swIEZpcmUgYnV0dG9uCisgICAgICAgICAgICAlbm5ubm1tbW0gICA7IHdoZXJlIG0gaXMgSk9ZU1RJQ0sxIHN0YXRlCisgICAgICAgICAgICAgICAgICAgICAgICA7IGFuZCBuIGlzIEpPWVNUSUNLMCBzdGF0ZQorCitTZXRzIHRoZSBpa2JkIHRvIGRvIG5vdGhpbmcgYnV0IG1vbml0b3IgdGhlIHNlcmlhbCBjb21tYW5kIGxpbmUsIG1haW50YWluIHRoZQordGltZS1vZi1kYXkgY2xvY2ssIGFuZCBtb25pdG9yIHRoZSBqb3lzdGljay4gVGhlIHJhdGUgc2V0cyB0aGUgaW50ZXJ2YWwKK2JldHdlZW4gam95c3RpY2sgc2FtcGxlcy4KK04uQi4gVGhlIHVzZXIgc2hvdWxkIG5vdCBzZXQgdGhlIHJhdGUgaGlnaGVyIHRoYW4gdGhlIHNlcmlhbCBjb21tdW5pY2F0aW9ucworY2hhbm5lbCB3aWxsIGFsbG93IHRoZSAyIGJ5dGVzIHBhY2tldHMgdG8gYmUgdHJhbnNtaXR0ZWQuCisKKzkuMTkgU0VUIEZJUkUgQlVUVE9OIE1PTklUT1JJTkcKKworICAgIDB4MTgKKyAgICBSZXR1cm5zOiAoYXMgbG9uZyBhcyBpbiBtb2RlKQorICAgICAgICAgICAgJWJiYmJiYmJiICAgOyBzdGF0ZSBvZiB0aGUgSk9ZU1RJQ0sxIGZpcmUgYnV0dG9uIHBhY2tlZAorICAgICAgICAgICAgICAgICAgICAgICAgOyA4IGJpdHMgcGVyIGJ5dGUsIHRoZSBmaXJzdCBzYW1wbGUgaWYgdGhlIE1TQgorCitTZXQgdGhlIGlrYmQgdG8gZG8gbm90aGluZyBidXQgbW9uaXRvciB0aGUgc2VyaWFsIGNvbW1hbmQgbGluZSwgbWFpbnRhaW4gdGhlCit0aW1lLW9mLWRheSBjbG9jaywgYW5kIG1vbml0b3IgdGhlIGZpcmUgYnV0dG9uIG9uIEpveXN0aWNrIDEuIFRoZSBmaXJlIGJ1dHRvbgoraXMgc2Nhbm5lZCBhdCBhIHJhdGUgdGhhdCBjYXVzZXMgOCBzYW1wbGVzIHRvIGJlIG1hZGUgaW4gdGhlIHRpbWUgaXQgdGFrZXMgZm9yCit0aGUgcHJldmlvdXMgYnl0ZSB0byBiZSBzZW50IHRvIHRoZSBob3N0IChpLmUuIHNjYW4gcmF0ZSA9IDgvMTAgKiBiYXVkIHJhdGUpLgorVGhlIHNhbXBsZSBpbnRlcnZhbCBzaG91bGQgYmUgYXMgY29uc3RhbnQgYXMgcG9zc2libGUuCisKKzkuMjAgU0VUIEpPWVNUSUNLIEtFWUNPREUgTU9ERQorCisgICAgMHgxOQorICAgIFJYICAgICAgICAgICAgICAgICAgOyBsZW5ndGggb2YgdGltZSAoaW4gdGVudGhzIG9mIHNlY29uZHMpIHVudGlsCisgICAgICAgICAgICAgICAgICAgICAgICA7IGhvcml6b250YWwgdmVsb2NpdHkgYnJlYWtwb2ludCBpcyByZWFjaGVkCisgICAgUlkgICAgICAgICAgICAgICAgICA7IGxlbmd0aCBvZiB0aW1lIChpbiB0ZW50aHMgb2Ygc2Vjb25kcykgdW50aWwKKyAgICAgICAgICAgICAgICAgICAgICAgIDsgdmVydGljYWwgdmVsb2NpdHkgYnJlYWtwb2ludCBpcyByZWFjaGVkCisgICAgVFggICAgICAgICAgICAgICAgICA7IGxlbmd0aCAoaW4gdGVudGhzIG9mIHNlY29uZHMpIG9mIGpveXN0aWNrIGNsb3N1cmUKKyAgICAgICAgICAgICAgICAgICAgICAgIDsgdW50aWwgaG9yaXpvbnRhbCBjdXJzb3Iga2V5IGlzIGdlbmVyYXRlZCBiZWZvcmUgUlgKKyAgICAgICAgICAgICAgICAgICAgICAgIDsgaGFzIGVsYXBzZWQKKyAgICBUWSAgICAgICAgICAgICAgICAgIDsgbGVuZ3RoIChpbiB0ZW50aHMgb2Ygc2Vjb25kcykgb2Ygam95c3RpY2sgY2xvc3VyZQorICAgICAgICAgICAgICAgICAgICAgICAgOyB1bnRpbCB2ZXJ0aWNhbCBjdXJzb3Iga2V5IGlzIGdlbmVyYXRlZCBiZWZvcmUgUlkKKyAgICAgICAgICAgICAgICAgICAgICAgIDsgaGFzIGVsYXBzZWQKKyAgICBWWCAgICAgICAgICAgICAgICAgIDsgbGVuZ3RoIChpbiB0ZW50aHMgb2Ygc2Vjb25kcykgb2Ygam95c3RpY2sgY2xvc3VyZQorICAgICAgICAgICAgICAgICAgICAgICAgOyB1bnRpbCBob3Jpem9udGFsIGN1cnNvciBrZXlzdHJva2VzIGFyZSBnZW5lcmF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIDsgYWZ0ZXIgUlggaGFzIGVsYXBzZWQKKyAgICBWWSAgICAgICAgICAgICAgICAgIDsgbGVuZ3RoIChpbiB0ZW50aHMgb2Ygc2Vjb25kcykgb2Ygam95c3RpY2sgY2xvc3VyZQorICAgICAgICAgICAgICAgICAgICAgICAgOyB1bnRpbCB2ZXJ0aWNhbCBjdXJzb3Iga2V5c3Ryb2tlcyBhcmUgZ2VuZXJhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICA7IGFmdGVyIFJZIGhhcyBlbGFwc2VkCisKK0luIHRoaXMgbW9kZSwgam95c3RpY2sgMCBpcyBzY2FubmVkIGluIGEgd2F5IHRoYXQgc2ltdWxhdGVzIGN1cnNvciBrZXlzdHJva2VzLgorT24gaW5pdGlhbCBjbG9zdXJlLCBhIGtleXN0cm9rZSBwYWlyIChtYWtlL2JyZWFrKSBpcyBnZW5lcmF0ZWQuIFRoZW4gdXAgdG8gUm4KK3RlbnRocyBvZiBzZWNvbmRzIGxhdGVyLCBrZXlzdHJva2UgcGFpcnMgYXJlIGdlbmVyYXRlZCBldmVyeSBUbiB0ZW50aHMgb2YKK3NlY29uZHMuIEFmdGVyIHRoZSBSbiBicmVha3BvaW50IGlzIHJlYWNoZWQsIGtleXN0cm9rZSBwYWlycyBhcmUgZ2VuZXJhdGVkCitldmVyeSBWbiB0ZW50aHMgb2Ygc2Vjb25kcy4gVGhpcyBwcm92aWRlcyBhIHZlbG9jaXR5IChhdXRvLXJlcGVhdCkgYnJlYWtwb2ludAorZmVhdHVyZS4KK05vdGUgdGhhdCBieSBzZXR0aW5nIFJYIGFuZC9vciBSeSB0byB6ZXJvLCB0aGUgdmVsb2NpdHkgZmVhdHVyZSBjYW4gYmUKK2Rpc2FibGVkLiBUaGUgdmFsdWVzIG9mIFRYIGFuZCBUWSB0aGVuIGJlY29tZSBtZWFuaW5nbGVzcywgYW5kIHRoZSBnZW5lcmF0aW9uCitvZiBjdXJzb3IgJ2tleXN0cm9rZXMnIGlzIHNldCBieSBWWCBhbmQgVlkuCisKKzkuMjEgRElTQUJMRSBKT1lTVElDS1MKKworICAgIDB4MUEKKworRGlzYWJsZSB0aGUgZ2VuZXJhdGlvbiBvZiBhbnkgam95c3RpY2sgZXZlbnRzIChhbmQgc2Nhbm5pbmcgbWF5IGJlIGludGVybmFsbHkKK2Rpc2FibGVkKS4gQW55IHZhbGlkIGpveXN0aWNrIG1vZGUgY29tbWFuZCByZXN1bWVzIGpveXN0aWNrIG1vbml0b3JpbmcuIChUaGUKK2pveXN0aWNrIG1vZGUgY29tbWFuZHMgYXJlIFNFVCBKT1lTVElDSyBFVkVOVCBSRVBPUlRJTkcsIFNFVCBKT1lTVElDSworSU5URVJST0dBVElPTiBNT0RFLCBTRVQgSk9ZU1RJQ0sgTU9OSVRPUklORywgU0VUIEZJUkUgQlVUVE9OIE1PTklUT1JJTkcsIGFuZAorU0VUIEpPWVNUSUNLIEtFWUNPREUgTU9ERS4pCisKKzkuMjIgVElNRS1PRi1EQVkgQ0xPQ0sgU0VUCisKKyAgICAweDFCCisgICAgWVkgICAgICAgICAgICAgICAgICA7IHllYXIgKDIgbGVhc3Qgc2lnbmlmaWNhbnQgZGlnaXRzKQorICAgIE1NICAgICAgICAgICAgICAgICAgOyBtb250aAorICAgIEREICAgICAgICAgICAgICAgICAgOyBkYXkKKyAgICBoaCAgICAgICAgICAgICAgICAgIDsgaG91cgorICAgIG1tICAgICAgICAgICAgICAgICAgOyBtaW51dGUKKyAgICBzcyAgICAgICAgICAgICAgICAgIDsgc2Vjb25kCisKK0FsbCB0aW1lLW9mLWRheSBkYXRhIHNob3VsZCBiZSBzZW50IHRvIHRoZSBpa2JkIGluIHBhY2tlZCBCQ0QgZm9ybWF0LgorQW55IGRpZ2l0IHRoYXQgaXMgbm90IGEgdmFsaWQgQkNEIGRpZ2l0IHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgJ2Rvbid0IGNhcmUnCithbmQgbm90IGFsdGVyIHRoYXQgcGFydGljdWxhciBmaWVsZCBvZiB0aGUgZGF0ZSBvciB0aW1lLiBUaGlzIHBlcm1pdHMgc2V0dGluZworb25seSBzb21lIHN1YmZpZWxkcyBvZiB0aGUgdGltZS1vZi1kYXkgY2xvY2suCisKKzkuMjMgSU5URVJST0dBVEUgVElNRS1PRi1EQVQgQ0xPQ0sKKworICAgIDB4MUMKKyAgICBSZXR1cm5zOgorICAgICAgICAgICAgMHhGQyAgICAgICAgOyB0aW1lLW9mLWRheSBldmVudCBoZWFkZXIKKyAgICAgICAgICAgIFlZICAgICAgICAgIDsgeWVhciAoMiBsZWFzdCBzaWduaWZpY2FudCBkaWdpdHMpCisgICAgICAgICAgICBNTSAgICAgICAgICA7IG1vbnRoCisgICAgICAgICAgICBERCAgICAgICAgICA7IGRheQorICAgICAgICAgICAgaGggICAgICAgICAgOyBob3VyCisgICAgICAgICAgICBtbSAgICAgICAgICA7IG1pbnV0ZQorICAgICAgICAgICAgc3MgICAgICAgICAgOyBzZWNvbmQKKworICAgIEFsbCB0aW1lLW9mLWRheSBpcyBzZW50IGluIHBhY2tlZCBCQ0QgZm9ybWF0LgorCis5LjI0IE1FTU9SWSBMT0FECisKKyAgICAweDIwCisgICAgQURSTVNCICAgICAgICAgICAgICA7IGFkZHJlc3MgaW4gY29udHJvbGxlcgorICAgIEFEUkxTQiAgICAgICAgICAgICAgOyBtZW1vcnkgdG8gYmUgbG9hZGVkCisgICAgTlVNICAgICAgICAgICAgICAgICA7IG51bWJlciBvZiBieXRlcyAoMC0xMjgpCisgICAgeyBkYXRhIH0KKworVGhpcyBjb21tYW5kIHBlcm1pdHMgdGhlIGhvc3QgdG8gbG9hZCBhcmJpdHJhcnkgdmFsdWVzIGludG8gdGhlIGlrYmQKK2NvbnRyb2xsZXIgbWVtb3J5LiBUaGUgdGltZSBiZXR3ZWVuIGRhdGEgYnl0ZXMgbXVzdCBiZSBsZXNzIHRoYW4gMjBtcy4KKworOS4yNSBNRU1PUlkgUkVBRAorCisgICAgMHgyMQorICAgIEFEUk1TQiAgICAgICAgICAgICAgOyBhZGRyZXNzIGluIGNvbnRyb2xsZXIKKyAgICBBRFJMU0IgICAgICAgICAgICAgIDsgbWVtb3J5IHRvIGJlIHJlYWQKKyAgICBSZXR1cm5zOgorICAgICAgICAgICAgMHhGNiAgICAgICAgOyBzdGF0dXMgaGVhZGVyCisgICAgICAgICAgICAweDIwICAgICAgICA7IG1lbW9yeSBhY2Nlc3MKKyAgICAgICAgICAgIHsgZGF0YSB9ICAgIDsgNiBkYXRhIGJ5dGVzIHN0YXJ0aW5nIGF0IEFEUgorCitUaGlzIGNvbW1hbmQgcGVybWl0cyB0aGUgaG9zdCB0byByZWFkIGZyb20gdGhlIGlrYmQgY29udHJvbGxlciBtZW1vcnkuCisKKzkuMjYgQ09OVFJPTExFUiBFWEVDVVRFCisKKyAgICAweDIyCisgICAgQURSTVNCICAgICAgICAgICAgICA7IGFkZHJlc3Mgb2Ygc3Vicm91dGluZSBpbgorICAgIEFEUkxTQiAgICAgICAgICAgICAgOyBjb250cm9sbGVyIG1lbW9yeSB0byBiZSBjYWxsZWQKKworVGhpcyBjb21tYW5kIGFsbG93cyB0aGUgaG9zdCB0byBjb21tYW5kIHRoZSBleGVjdXRpb24gb2YgYSBzdWJyb3V0aW5lIGluIHRoZQoraWtiZCBjb250cm9sbGVyIG1lbW9yeS4KKworOS4yNyBTVEFUVVMgSU5RVUlSSUVTCisJCisgICAgU3RhdHVzIGNvbW1hbmRzIGFyZSBmb3JtZWQgYnkgaW5jbHVzaXZlbHkgT1JpbmcgMHg4MCB3aXRoIHRoZQorICAgIHJlbGV2YW50IFNFVCBjb21tYW5kLgorCisgICAgRXhhbXBsZToKKyAgICAweDg4IChvciAweDg5IG9yIDB4OEEpICA7IHJlcXVlc3QgbW91c2UgbW9kZQorICAgIFJldHVybnM6CisgICAgICAgICAgICAweEY2ICAgICAgICA7IHN0YXR1cyByZXNwb25zZSBoZWFkZXIKKyAgICAgICAgICAgIG1vZGUgICAgICAgIDsgMHgwOCBpcyBSRUxBVElWRQorICAgICAgICAgICAgICAgICAgICAgICAgOyAweDA5IGlzIEFCU09MVVRFCisgICAgICAgICAgICAgICAgICAgICAgICA7IDB4MEEgaXMgS0VZQ09ERQorICAgICAgICAgICAgcGFyYW0xICAgICAgOyAwIGlzIFJFTEFUSVZFCisgICAgICAgICAgICAgICAgICAgICAgICA7IFhNU0IgbWF4aW11bSBpZiBBQlNPTFVURQorICAgICAgICAgICAgICAgICAgICAgICAgOyBERUxUQSBYIGlzIEtFWUNPREUKKyAgICAgICAgICAgIHBhcmFtMiAgICAgIDsgMCBpcyBSRUxBVElWRQorICAgICAgICAgICAgICAgICAgICAgICAgOyBZTVNCIG1heGltdW0gaWYgQUJTT0xVVEUKKyAgICAgICAgICAgICAgICAgICAgICAgIDsgREVMVEEgWSBpcyBLRVlDT0RFCisgICAgICAgICAgICBwYXJhbTMgICAgICA7IDAgaWYgUkVMQVRJVkUKKyAgICAgICAgICAgICAgICAgICAgICAgIDsgb3IgS0VZQ09ERQorICAgICAgICAgICAgICAgICAgICAgICAgOyBZTVNCIGlzIEFCU09MVVRFCisgICAgICAgICAgICBwYXJhbTQgICAgICA7IDAgaWYgUkVMQVRJVkUKKyAgICAgICAgICAgICAgICAgICAgICAgIDsgb3IgS0VZQ09ERQorICAgICAgICAgICAgICAgICAgICAgICAgOyBZTFNCIGlzIEFCU09MVVRFCisgICAgICAgICAgICAwICAgICAgICAgICA7IHBhZAorICAgICAgICAgICAgMAorCitUaGUgU1RBVFVTIElOUVVJUlkgY29tbWFuZHMgcmVxdWVzdCB0aGUgaWtiZCB0byByZXR1cm4gZWl0aGVyIHRoZSBjdXJyZW50IG1vZGUKK29yIHRoZSBwYXJhbWV0ZXJzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGNvbW1hbmQuIEFsbCBzdGF0dXMgcmVwb3J0cyBhcmUKK3BhZGRlZCB0byBmb3JtIDggYnl0ZSBsb25nIHJldHVybiBwYWNrZXRzLiBUaGUgcmVzcG9uc2VzIHRvIHRoZSBzdGF0dXMKK3JlcXVlc3RzIGFyZSBkZXNpZ25lZCBzbyB0aGF0IHRoZSBob3N0IG1heSBzdG9yZSB0aGVtIGF3YXkgKGFmdGVyIHN0cmlwcGluZworb2ZmIHRoZSBzdGF0dXMgcmVwb3J0IGhlYWRlciBieXRlKSBhbmQgbGF0ZXIgc2VuZCB0aGVtIGJhY2sgYXMgY29tbWFuZHMgdG8KK2lrYmQgdG8gcmVzdG9yZSBpdHMgc3RhdGUuIFRoZSAwIHBhZCBieXRlcyB3aWxsIGJlIHRyZWF0ZWQgYXMgTk9QcyBieSB0aGUKK2lrYmQuCisKKyAgICBWYWxpZCBTVEFUVVMgSU5RVUlSWSBjb21tYW5kcyBhcmU6CisKKyAgICAgICAgICAgIDB4ODcgICAgbW91c2UgYnV0dG9uIGFjdGlvbgorICAgICAgICAgICAgMHg4OCAgICBtb3VzZSBtb2RlCisgICAgICAgICAgICAweDg5CisgICAgICAgICAgICAweDhBCisgICAgICAgICAgICAweDhCICAgIG1ub3VzZSB0aHJlc2hvbGQKKyAgICAgICAgICAgIDB4OEMgICAgbW91c2Ugc2NhbGUKKyAgICAgICAgICAgIDB4OEYgICAgbW91c2UgdmVydGljYWwgY29vcmRpbmF0ZXMKKyAgICAgICAgICAgIDB4OTAgICAgKCByZXR1cm5zICAgICAgIDB4MEYgWT0wIGF0IGJvdHRvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAgWT0wIGF0IHRvcCApCisgICAgICAgICAgICAweDkyICAgIG1vdXNlIGVuYWJsZS9kaXNhYmxlCisgICAgICAgICAgICAgICAgICAgICggcmV0dXJucyAgICAgICAweDAwIGVuYWJsZWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiBkaXNhYmxlZCApCisgICAgICAgICAgICAweDk0ICAgIGpveXN0aWNrIG1vZGUKKyAgICAgICAgICAgIDB4OTUKKyAgICAgICAgICAgIDB4OTYKKyAgICAgICAgICAgIDB4OUEgICAgam95c3RpY2sgZW5hYmxlL2Rpc2FibGUKKyAgICAgICAgICAgICAgICAgICAgKCByZXR1cm5zICAgICAgIDB4MDAgZW5hYmxlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUEgZGlzYWJsZWQgKQorCitJdCBpcyB0aGUgKGhvc3QpIHByb2dyYW1tZXIncyByZXNwb25zaWJpbGl0eSB0byBoYXZlIG9ubHkgb25lIHVuYW5zd2VyZWQKK2lucXVpcnkgaW4gcHJvY2VzcyBhdCBhIHRpbWUuCitTVEFUVVMgSU5RVUlSWSBjb21tYW5kcyBhcmUgbm90IHZhbGlkIGlmIHRoZSBpa2JkIGlzIGluIEpPWVNUSUNLIE1PTklUT1JJTkcKK21vZGUgb3IgRklSRSBCVVRUT04gTU9OSVRPUklORyBtb2RlLgorCisKKzEwLiBTQ0FOIENPREVTCisKK1RoZSBrZXkgc2NhbiBjb2RlcyByZXR1cm5lZCBieSB0aGUgaWtiZCBhcmUgY2hvc2VuIHRvIHNpbXBsaWZ5IHRoZQoraW1wbGVtZW50YXRpb24gb2YgR1NYLgorCitHU1ggU3RhbmRhcmQgS2V5Ym9hcmQgTWFwcGluZy4KKworSGV4CUtleXRvcAorMDEJRXNjCiswMgkxCiswMwkyCiswNAkzCiswNQk0CiswNgk1CiswNwk2CiswOAk3CiswOQk4CiswQQk5CiswQgkwCiswQwktCiswRAk9PQorMEUJQlMKKzBGCVRBQgorMTAJUQorMTEJVworMTIJRQorMTMJUgorMTQJVAorMTUJWQorMTYJVQorMTcJSQorMTgJTworMTkJUAorMUEJWworMUIJXQorMUMJUkVUCisxRAlDVFJMCisxRQlBCisxRglTCisyMAlECisyMQlGCisyMglHCisyMwlICisyNAlKCisyNQlLCisyNglMCisyNwk7CisyOAknCisyOQlgCisyQQkoTEVGVCkgU0hJRlQKKzJCCVwKKzJDCVoKKzJECVgKKzJFCUMKKzJGCVYKKzMwCUIKKzMxCU4KKzMyCU0KKzMzCSwKKzM0CS4KKzM1CS8KKzM2CShSSUdIVCkgU0hJRlQKKzM3CXsgTk9UIFVTRUQgfQorMzgJQUxUCiszOQlTUEFDRSBCQVIKKzNBCUNBUFMgTE9DSworM0IJRjEKKzNDCUYyCiszRAlGMworM0UJRjQKKzNGCUY1Cis0MAlGNgorNDEJRjcKKzQyCUY4Cis0MwlGOQorNDQJRjEwCis0NQl7IE5PVCBVU0VEIH0KKzQ2CXsgTk9UIFVTRUQgfQorNDcJSE9NRQorNDgJVVAgQVJST1cKKzQ5CXsgTk9UIFVTRUQgfQorNEEJS0VZUEFEIC0KKzRCCUxFRlQgQVJST1cKKzRDCXsgTk9UIFVTRUQgfQorNEQJUklHSFQgQVJST1cKKzRFCUtFWVBBRCArCis0Rgl7IE5PVCBVU0VEIH0KKzUwCURPV04gQVJST1cKKzUxCXsgTk9UIFVTRUQgfQorNTIJSU5TRVJUCis1MwlERUwKKzU0CXsgTk9UIFVTRUQgfQorNUYJeyBOT1QgVVNFRCB9Cis2MAlJU08gS0VZCis2MQlVTkRPCis2MglIRUxQCis2MwlLRVlQQUQgKAorNjQJS0VZUEFEIC8KKzY1CUtFWVBBRCAqCis2NglLRVlQQUQgKgorNjcJS0VZUEFEIDcKKzY4CUtFWVBBRCA4Cis2OQlLRVlQQUQgOQorNkEJS0VZUEFEIDQKKzZCCUtFWVBBRCA1Cis2QwlLRVlQQUQgNgorNkQJS0VZUEFEIDEKKzZFCUtFWVBBRCAyCis2RglLRVlQQUQgMworNzAJS0VZUEFEIDAKKzcxCUtFWVBBRCAuCis3MglLRVlQQUQgRU5URVIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW5wdXQvYmNtNTk3NC50eHQgYi9Eb2N1bWVudGF0aW9uL2lucHV0L2JjbTU5NzQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0ZDM4NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lucHV0L2JjbTU5NzQudHh0CkBAIC0wLDAgKzEsNjUgQEAKK0JDTTU5NzQgRHJpdmVyIChiY201OTc0KQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJQ29weXJpZ2h0IChDKSAyMDA4LTIwMDkJSGVucmlrIFJ5ZGJlcmcgPHJ5ZGJlcmdAZXVyb21haWwuc2U+CisKK1RoZSBVU0IgaW5pdGlhbGl6YXRpb24gYW5kIHBhY2thZ2UgZGVjb2Rpbmcgd2FzIG1hZGUgYnkgU2NvdHQgU2hhd2Nyb2Z0IGFzCitwYXJ0IG9mIHRoZSB0b3VjaGQgdXNlci1zcGFjZSBkcml2ZXIgcHJvamVjdDoKKwlDb3B5cmlnaHQgKEMpIDIwMDgJU2NvdHQgU2hhd2Nyb2Z0IChzY290dC5zaGF3Y3JvZnRAZ21haWwuY29tKQorCitUaGUgQkNNNTk3NCBkcml2ZXIgaXMgYmFzZWQgb24gdGhlIGFwcGxldG91Y2ggZHJpdmVyOgorCUNvcHlyaWdodCAoQykgMjAwMS0yMDA0CUdyZWcgS3JvYWgtSGFydG1hbiAoZ3JlZ0Brcm9haC5jb20pCisJQ29weXJpZ2h0IChDKSAyMDA1CUpvaGFubmVzIEJlcmcgKGpvaGFubmVzQHNpcHNvbHV0aW9ucy5uZXQpCisJQ29weXJpZ2h0IChDKSAyMDA1CVN0ZWxpYW4gUG9wIChzdGVsaWFuQHBvcGllcy5uZXQpCisJQ29weXJpZ2h0IChDKSAyMDA1CUZyYW5rIEFybm9sZCAoZnJhbmtAc2Npcm9jY28tNXYtdHVyYm8uZGUpCisJQ29weXJpZ2h0IChDKSAyMDA1CVBldGVyIE9zdGVybHVuZCAocGV0ZXJvMkB0ZWxpYS5jb20pCisJQ29weXJpZ2h0IChDKSAyMDA1CU1pY2hhZWwgSGFuc2VsbWFubiAobGludXgta2VybmVsQGhhbnNtaS5jaCkKKwlDb3B5cmlnaHQgKEMpIDIwMDYJTmljb2xhcyBCb2ljaGF0IChuaWNvbGFzQGJvaWNoYXQuY2gpCisKK1RoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgdGhlIG11bHRpLXRvdWNoIHRyYWNrcGFkIG9uIHRoZSBuZXcgQXBwbGUKK01hY2Jvb2sgQWlyIGFuZCBNYWNib29rIFBybyBsYXB0b3BzLiBJdCByZXBsYWNlcyB0aGUgYXBwbGV0b3VjaCBkcml2ZXIgb24KK3Rob3NlIGNvbXB1dGVycywgYW5kIGludGVncmF0ZXMgd2VsbCB3aXRoIHRoZSBzeW5hcHRpY3MgZHJpdmVyIG9mIHRoZSBYb3JnCitzeXN0ZW0uCisKK0tub3duIHRvIHdvcmsgb24gTWFjYm9vayBBaXIsIE1hY2Jvb2sgUHJvIFBlbnJ5biBhbmQgdGhlIG5ldyB1bmlib2R5CitNYWNib29rIDUgYW5kIE1hY2Jvb2sgUHJvIDUuCisKK1VzYWdlCistLS0tLQorCitUaGUgZHJpdmVyIGxvYWRzIGF1dG9tYXRpY2FsbHkgZm9yIHRoZSBzdXBwb3J0ZWQgdXNiIGRldmljZSBpZHMsIGFuZAorYmVjb21lcyBhdmFpbGFibGUgYm90aCBhcyBhbiBldmVudCBkZXZpY2UgKC9kZXYvaW5wdXQvZXZlbnQqKSBhbmQgYXMgYQorbW91c2UgdmlhIHRoZSBtb3VzZWRldiBkcml2ZXIgKC9kZXYvaW5wdXQvbWljZSkuCisKK1VTQiBSYWNlCistLS0tLS0tLQorCitUaGUgQXBwbGUgbXVsdGktdG91Y2ggdHJhY2twYWRzIHJlcG9ydCBib3RoIG1vdXNlIGFuZCBrZXlib2FyZCBldmVudHMgdmlhCitkaWZmZXJlbnQgaW50ZXJmYWNlcyBvZiB0aGUgc2FtZSB1c2IgZGV2aWNlLiBUaGlzIGNyZWF0ZXMgYSByYWNlIGNvbmRpdGlvbgord2l0aCB0aGUgSElEIGRyaXZlciwgd2hpY2gsIGlmIG5vdCB0b2xkIG90aGVyd2lzZSwgd2lsbCBmaW5kIHRoZSBzdGFuZGFyZAorSElEIG1vdXNlIGFuZCBrZXlib2FyZCwgYW5kIGNsYWltIHRoZSB3aG9sZSBkZXZpY2UuIFRvIHJlbWVkeSwgdGhlIHVzYgorcHJvZHVjdCBpZCBtdXN0IGJlIGxpc3RlZCBpbiB0aGUgbW91c2VfaWdub3JlIGxpc3Qgb2YgdGhlIGhpZCBkcml2ZXIuCisKK0RlYnVnIG91dHB1dAorLS0tLS0tLS0tLS0tCisKK1RvIGVhc2UgdGhlIGRldmVsb3BtZW50IGZvciBuZXcgaGFyZHdhcmUgdmVyc2lvbiwgdmVyYm9zZSBwYWNrZXQgb3V0cHV0IGNhbgorYmUgc3dpdGNoZWQgb24gd2l0aCB0aGUgZGVidWcga2VybmVsIG1vZHVsZSBwYXJhbWV0ZXIuIFRoZSByYW5nZSBbMS05XQoreWllbGRzIGRpZmZlcmVudCBsZXZlbHMgb2YgdmVyYm9zaXR5LiBFeGFtcGxlIChhcyByb290KToKKworZWNobyAtbiA5ID4gL3N5cy9tb2R1bGUvYmNtNTk3NC9wYXJhbWV0ZXJzL2RlYnVnCisKK3RhaWwgLWYgL3Zhci9sb2cvZGVidWcKKworZWNobyAtbiAwID4gL3N5cy9tb2R1bGUvYmNtNTk3NC9wYXJhbWV0ZXJzL2RlYnVnCisKK1RyaXZpYQorLS0tLS0tCisKK1RoZSBkcml2ZXIgd2FzIGRldmVsb3BlZCBhdCB0aGUgdWJ1bnR1IGZvcnVtcyBpbiBKdW5lIDIwMDggWzFdLCBhbmQgbm93IGhhcworYSBtb3JlIHBlcm1hbmVudCBob21lIGF0IGJpdG1hdGgub3JnIFsyXS4KKworTGlua3MKKy0tLS0tCisKK1sxXSBodHRwOi8vdWJ1bnR1Zm9ydW1zLm9yZy9zaG93dGhyZWFkLnBocD90PTg0MDA0MAorWzJdIGh0dHA6Ly9iaXRtYXRoLm9yZy9jb2RlLwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pbnB1dC9jZDMyLnR4dCBiL0RvY3VtZW50YXRpb24vaW5wdXQvY2QzMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTAwM2Q5YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaW5wdXQvY2QzMi50eHQKQEAgLTAsMCArMSwxOSBAQAorSSBoYXZlIHdyaXR0ZW4gYSBzbWFsbCBwYXRjaCB0aGF0IGxldCdzIG1lIHVzZSBteSBBbWlnYSBDRDMyCitqb3lwYWQgY29ubmVjdGVkIHRvIHRoZSBwYXJhbGxlbCBwb3J0LiBUaG91Z2h0IEknZCBzaGFyZSBpdCB3aXRoIHlvdSBzbworeW91IGNhbiBhZGQgaXQgdG8gdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGpveXN0aWNrcyAoaG9wZWZ1bGx5IHNvbWVvbmUgd2lsbAorZmluZCBpdCB1c2VmdWwpLgorCitJdCBuZWVkcyB0aGUgZm9sbG93aW5nIHdpcmluZzoKKworQ0QzMiBwYWQgICB8ICAgUGFyYWxsZWwgcG9ydAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMSAoVXApICAgICB8ICAgIDIgKEQwKQorMiAoRG93bikgICB8ICAgIDMgKEQxKQorMyAoTGVmdCkgICB8ICAgIDQgKEQyKQorNCAoUmlnaHQpICB8ICAgIDUgKEQzKQorNSAoRmlyZTMpICB8ICAgMTQgKEFVVE9GRCkKKzYgKEZpcmUxKSAgfCAgIDE3IChTRUxJTikKKzcgKCs1VikgICAgfCAgICAxIChTVFJPQkUpCis4IChHbmQpICAgIHwgICAxOCAoR25kKQorOSAoRmlyZTIpICB8ICAgIDcgKEQ1KQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lucHV0L2NtYTMwMDBfZDB4LnR4dCBiL0RvY3VtZW50YXRpb24vaW5wdXQvY21hMzAwMF9kMHgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5ZDA4OGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lucHV0L2NtYTMwMDBfZDB4LnR4dApAQCAtMCwwICsxLDExNSBAQAorS2VybmVsIGRyaXZlciBmb3IgQ01BMzAwMC1EMHgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorKiBWVEkgQ01BMzAwMC1EMHgKK0RhdGFzaGVldDoKKyAgQ01BMzAwMC1EMFggUHJvZHVjdCBGYW1pbHkgU3BlY2lmaWNhdGlvbiA4MjgxMDAwQS4wMi5wZGYKKyAgPGh0dHA6Ly93d3cudnRpLmZpL2VuLz4KKworQXV0aG9yOiBIZW1hbnRoIFYgPGhlbWFudGh2QHRpLmNvbT4KKworCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KK0NNQTMwMDAgVHJpLWF4aXMgYWNjZWxlcm9tZXRlciBzdXBwb3J0cyBNb3Rpb24gZGV0ZWN0LCBNZWFzdXJlbWVudCBhbmQKK0ZyZWUgZmFsbCBtb2Rlcy4KKworTW90aW9uIERldGVjdCBNb2RlOiBJdHMgdGhlIGxvdyBwb3dlciBtb2RlIHdoZXJlIGludGVycnVwdHMgYXJlIGdlbmVyYXRlZCBvbmx5Cit3aGVuIG1vdGlvbiBleGNlZWRzIHRoZSBkZWZpbmVkIHRocmVzaG9sZHMuCisKK01lYXN1cmVtZW50IE1vZGU6IFRoaXMgbW9kZSBpcyB1c2VkIHRvIHJlYWQgdGhlIGFjY2VsZXJhdGlvbiBkYXRhIG9uIFgsWSxaCitheGlzIGFuZCBzdXBwb3J0cyA0MDAsIDEwMCwgNDAgSHogc2FtcGxlIGZyZXF1ZW5jeS4KKworRnJlZSBmYWxsIE1vZGU6IFRoaXMgbW9kZSBpcyBpbnRlbmRlZCB0byBzYXZlIHN5c3RlbSByZXNvdXJjZXMuCisKK1RocmVzaG9sZCB2YWx1ZXM6IENoaXAgc3VwcG9ydHMgZGVmaW5pbmcgdGhyZXNob2xkIHZhbHVlcyBmb3IgYWJvdmUgbW9kZXMKK3doaWNoIGluY2x1ZGVzIHRpbWUgYW5kIGcgdmFsdWUuIFJlZmVyIHByb2R1Y3Qgc3BlY2lmaWNhdGlvbnMgZm9yIG1vcmUgZGV0YWlscy4KKworQ01BMzAwMCBjaGlwIHN1cHBvcnRzIG11dHVhbGx5IGV4Y2x1c2l2ZSBJMkMgYW5kIFNQSSBpbnRlcmZhY2VzIGZvcgorY29tbXVuaWNhdGlvbiwgY3VycmVudGx5IHRoZSBkcml2ZXIgc3VwcG9ydHMgSTJDIGJhc2VkIGNvbW11bmljYXRpb24gb25seS4KK0luaXRpYWwgY29uZmlndXJhdGlvbiBmb3IgYnVzIG1vZGUgaXMgc2V0IGluIG5vbiB2b2xhdGlsZSBtZW1vcnkgYW5kIGNhbiBsYXRlcgorYmUgbW9kaWZpZWQgdGhyb3VnaCBidXMgaW50ZXJmYWNlIGNvbW1hbmQuCisKK0RyaXZlciByZXBvcnRzIGFjY2VsZXJhdGlvbiBkYXRhIHRocm91Z2ggaW5wdXQgc3Vic3lzdGVtLiBJdCBnZW5lcmF0ZXMgQUJTX01JU0MKK2V2ZW50IHdpdGggdmFsdWUgMSB3aGVuIGZyZWUgZmFsbCBpcyBkZXRlY3RlZC4KKworUGxhdGZvcm0gZGF0YSBuZWVkIHRvIGJlIGNvbmZpZ3VyZWQgZm9yIGluaXRpYWwgZGVmYXVsdCB2YWx1ZXMuCisKK1BsYXRmb3JtIERhdGEKKy0tLS0tLS0tLS0tLS0KK2Z1enpfeDogTm9pc2Ugb24gWCBBeGlzCisKK2Z1enpfeTogTm9pc2Ugb24gWSBBeGlzCisKK2Z1enpfejogTm9pc2Ugb24gWiBBeGlzCisKK2dfcmFuZ2U6IEcgcmFuZ2UgaW4gbWlsbGkgZyBpLmUgMjAwMCBvciA4MDAwCisKK21vZGU6IERlZmF1bHQgT3BlcmF0aW5nIG1vZGUKKworbWR0aHI6IE1vdGlvbiBkZXRlY3QgZyByYW5nZSB0aHJlc2hvbGQgdmFsdWUKKworbWRmZnRtcjogTW90aW9uIGRldGVjdCBhbmQgZnJlZSBmYWxsIHRpbWUgdGhyZXNob2xkIHZhbHVlCisKK2ZmdGhyOiBGcmVlIGZhbGwgZyByYW5nZSB0aHJlc2hvbGQgdmFsdWUKKworSW5wdXQgSW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLQorSW5wdXQgZHJpdmVyIHZlcnNpb24gaXMgMS4wLjAKK0lucHV0IGRldmljZSBJRDogYnVzIDB4MTggdmVuZG9yIDB4MCBwcm9kdWN0IDB4MCB2ZXJzaW9uIDB4MAorSW5wdXQgZGV2aWNlIG5hbWU6ICJjbWEzMDAwLWFjY2VsZXJvbWV0ZXIiCitTdXBwb3J0ZWQgZXZlbnRzOgorICBFdmVudCB0eXBlIDAgKFN5bmMpCisgIEV2ZW50IHR5cGUgMyAoQWJzb2x1dGUpCisgICAgRXZlbnQgY29kZSAwIChYKQorICAgICAgVmFsdWUgICAgIDQ3CisgICAgICBNaW4gICAgLTgwMDAKKyAgICAgIE1heCAgICAgODAwMAorICAgICAgRnV6eiAgICAgMjAwCisgICAgRXZlbnQgY29kZSAxIChZKQorICAgICAgVmFsdWUgICAgLTI4CisgICAgICBNaW4gICAgLTgwMDAKKyAgICAgIE1heCAgICAgODAwMAorICAgICAgRnV6eiAgICAgMjAwCisgICAgRXZlbnQgY29kZSAyIChaKQorICAgICAgVmFsdWUgICAgOTA1CisgICAgICBNaW4gICAgLTgwMDAKKyAgICAgIE1heCAgICAgODAwMAorICAgICAgRnV6eiAgICAgMjAwCisgICAgRXZlbnQgY29kZSA0MCAoTWlzYykKKyAgICAgIFZhbHVlICAgICAgMAorICAgICAgTWluICAgICAgICAwCisgICAgICBNYXggICAgICAgIDEKKyAgRXZlbnQgdHlwZSA0IChNaXNjKQorCisKK1JlZ2lzdGVyL1BsYXRmb3JtIHBhcmFtZXRlcnMgRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbW9kZToKKwkwOiBwb3dlciBkb3duIG1vZGUKKwkxOiAxMDAgSHogTWVhc3VyZW1lbnQgbW9kZQorCTI6IDQwMCBIeiBNZWFzdXJlbWVudCBtb2RlCisJMzogNDAgSHogTWVhc3VyZW1lbnQgbW9kZQorCTQ6IE1vdGlvbiBEZXRlY3QgbW9kZSAoZGVmYXVsdCkKKwk1OiAxMDAgSHogRnJlZSBmYWxsIG1vZGUKKwk2OiA0MCBIeiBGcmVlIGZhbGwgbW9kZQorCTc6IFBvd2VyIG9mZiBtb2RlCisKK2dyYW5nZToKKwkyMDAwOiAyMDAwIG1nIG9yIDJHIFJhbmdlCisJODAwMDogODAwMCBtZyBvciA4RyBSYW5nZQorCittZHRocjoKKwlYOiBYICogNzFtZyAoOEcgUmFuZ2UpCisJWDogWCAqIDE4bWcgKDJHIFJhbmdlKQorCittZGZmdG1yOgorCVg6IChYICYgMHg3MCkgKiAxMDAgbXMgKE1EVE1SKQorCSAgIChYICYgMHgwRikgKiAyLjUgbXMgKEZGVE1SIDQwMCBIeikKKwkgICAoWCAmIDB4MEYpICogMTAgbXMgIChGRlRNUiAxMDAgSHopCisKK2ZmdGhyOgorICAgICAgIFg6IChYID4+IDIpICogMThtZyAoMkcgUmFuZ2UpCisgICAgICAgWDogKFggJiAweDBGKSAqIDcxIG1nICg4RyBSYW5nZSkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW5wdXQvY3M0NjF4LnR4dCBiL0RvY3VtZW50YXRpb24vaW5wdXQvY3M0NjF4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDJlOWRiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9jczQ2MXgudHh0CkBAIC0wLDAgKzEsNDUgQEAKK1ByZWZhY2UuCisKK1RoaXMgaXMgYSBuZXcgbG93LWxldmVsIGRyaXZlciB0byBzdXBwb3J0IGFuYWxvZyBqb3lzdGljayBhdHRhY2hlZCB0bworQ3J5c3RhbCBTb3VuZEZ1c2lvbiBDUzQ2MTAvQ1M0NjEyL0NTNDYxNS4gVGhpcyBjb2RlIGlzIGJhc2VkIHVwb24gCitWb3J0ZXgvU29sbyBkcml2ZXJzIGFzIGFuIGV4YW1wbGUgb2YgZGVjb3JhdGlvbiBzdHlsZSwgYW5kIEFMU0EKKzAuNS44YSBrZXJuZWwgZHJpdmVycyBhcyBhbiBjaGlwc2V0IGRvY3VtZW50YXRpb24gYW5kIHNhbXBsZXMuCisKK1RoaXMgdmVyc2lvbiBkb2VzIG5vdCBoYXZlIGNvb2tlZCBtb2RlIHN1cHBvcnQ7IHRoZSBiYXNpYyBjb2RlIAoraXMgcHJlc2VudCBoZXJlLCBidXQgaGF2ZSBub3QgdGVzdGVkIGNvbXBsZXRlbHkuIFRoZSBidXR0b24gYW5hbHlzaXMgCitpcyBjb21wbGV0ZWQgaW4gdGhpcyBtb2RlLCBidXQgdGhlIGF4aXMgbW92ZW1lbnQgaXMgbm90LiAKKworUmF3IG1vZGUgd29ya3MgZmluZSB3aXRoIGFuYWxvZyBqb3lzdGljayBmcm9udC1lbmQgZHJpdmVyIGFuZCBjczQ2MXgKK2RyaXZlciBhcyBhIGJhY2tlbmQuIEkndmUgdGVzdGVkIHRoaXMgZHJpdmVyIHdpdGggQ1M0NjEwLCA0LWF4aXMgYW5kIAorNC1idXR0b24gam95c3RpY2s7IEkgbWVhbiB0aGUganN0ZXN0IHV0aWxpdHkuIEFsc28gSSd2ZSB0cmllZCB0bworcGxheSBpbiB4cmFjZXIgZ2FtZSB1c2luZyBqb3lzdGljaywgYW5kIHRoZSByZXN1bHQgaXMgYmV0dGVyIHRoYW4KK2tleWJvYXJkIG9ubHkgbW9kZS4KKworVGhlIHNlbnNpdGl2aXR5IGFuZCBjYWxpYnJhdGUgcXVhbGl0eSBoYXZlIG5vdCBiZWVuIHRlc3RlZDsgdGhlIHR3bworcmVhc29ucyBhcmUgcGVyZm9ybWVkOiB0aGUgc2FtZSBoYXJkd2FyZSBjYW5ub3Qgd29yayB1bmRlciBXaW45NSAoYmx1ZSAKK3NjcmVlbiBpbiBWSk9ZRCk7IEkgaGF2ZSBubyBkb2N1bWVudGF0aW9uIG9uIG15IGNoaXA7IGFuZCB0aGUgZXhpc3RpbmcgCitiZWhhdmlvciBpbiBteSBjYXNlIHdhcyBub3QgcmFpc2VkIHRoZSByZXF1aXJlbWVudCBvZiBqb3lzdGljayBjYWxpYnJhdGlvbi4gCitTbyB0aGUgZHJpdmVyIGhhdmUgbm8gY29kZSB0byBwZXJmb3JtIGhhcmR3YXJlIHJlbGF0ZWQgY2FsaWJyYXRpb24uCisKK1RoZSBwYXRjaCBjb250YWlucyBtaW5vciBjaGFuZ2VzIG9mIENvbmZpZy5pbiBhbmQgTWFrZWZpbGUgZmlsZXMuIEFsbAorbmVlZGVkIGNvZGUgaGF2ZSBiZWVuIG1vdmVkIHRvIG9uZSBzZXBhcmF0ZSBmaWxlIGNzNDYxeC5jIGxpa2UgbnM1NTguYworVGhpcyBkcml2ZXIgaGF2ZSB0aGUgYmFzaWMgc3VwcG9ydCBmb3IgUENJIGRldmljZXMgb25seTsgdGhlcmUgaXMgbm8KK0lTQSBvciBQblAgSVNBIGNhcmRzIHN1cHBvcnRlZC4gQUZBSUsgdGhlIG5zNTU4IGhhdmUgc3VwcG9ydCBmb3IgQ3J5c3RhbCAKK0lTQSBhbmQgUG5QIElTQSBzZXJpZXMuCisKK1RoZSBkcml2ZXIgd29ya3Mgd2l0aCBBTFNBIGRyaXZlcnMgc2ltdWx0YW5lb3VzbHkuIEZvciBleGFtcGxlLCB0aGUgeHJhY2VyCit1c2VzIGpveXN0aWNrIGFzIGlucHV0IGRldmljZSBhbmQgUENNIGRldmljZSBhcyBzb3VuZCBvdXRwdXQgaW4gb25lIHRpbWUuCitUaGVyZSBhcmUgbm8gc291bmQgb3IgaW5wdXQgY29sbGlzaW9ucyBkZXRlY3RlZC4gVGhlIHNvdXJjZSBjb2RlIGhhdmUKK2NvbW1lbnRzIGFib3V0IHRoZW07IGJ1dCBJJ3ZlIGZvdW5kIHRoZSBqb3lzdGljayBjYW4gYmUgaW5pdGlhbGl6ZWQgCitzZXBhcmF0ZWx5IG9mIEFMU0EgbW9kdWxlcy4gU28sIHlvdSBjYW4gdXNlIG9ubHkgb25lIGpveXN0aWNrIGRyaXZlcgord2l0aG91dCBBTFNBIGRyaXZlcnMuIFRoZSBBTFNBIGRyaXZlcnMgYXJlIG5vdCBuZWVkZWQgdG8gY29tcGlsZSBvcgorcnVuIHRoaXMgZHJpdmVyLgorCitUaGVyZSBhcmUgbm8gZGVidWcgaW5mb3JtYXRpb24gcHJpbnQgaGF2ZSBiZWVuIHBsYWNlZCBpbiBzb3VyY2UsIGFuZCBubworc3BlY2lmaWMgb3B0aW9ucyByZXF1aXJlZCB0byB3b3JrIHRoaXMgZHJpdmVyLiBUaGUgZm91bmQgY2hpcHNldCBwYXJhbWV0ZXJzCithcmUgcHJpbnRlZCB2aWEgcHJpbnRrKEtFUk5fSU5GTyAiLi4uIiksIHNlZSB0aGUgL3Zhci9sb2cvbWVzc2FnZXMgdG8KK2luc3BlY3QgY3M0NjF4OiBwcmVmaXhlZCBtZXNzYWdlcyB0byBkZXRlcm1pbmUgcG9zc2libGUgY2FyZCBkZXRlY3Rpb24gCitlcnJvcnMuCisKK1JlZ2FyZHMsCitWaWt0b3IKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW5wdXQvZWR0LWZ0NXgwNi50eHQgYi9Eb2N1bWVudGF0aW9uL2lucHV0L2VkdC1mdDV4MDYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMzJmMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lucHV0L2VkdC1mdDV4MDYudHh0CkBAIC0wLDAgKzEsNTQgQEAKK0VEVCBmdDV4MDYgYmFzZWQgUG9seXRvdWNoIGRldmljZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGVkdC1mdDV4MDYgZHJpdmVyIGlzIHVzZWZ1bCBmb3IgdGhlIEVEVCAiUG9seXRvdWNoIiBmYW1pbHkgb2YgY2FwYWNpdGl2ZQordG91Y2ggc2NyZWVucy4gTm90ZSB0aGF0IGl0IGlzICpub3QqIHN1aXRhYmxlIGZvciBvdGhlciBkZXZpY2VzIGJhc2VkIG9uIHRoZQorZm9jYWx0ZWMgZnQ1eDA2IGRldmljZXMsIHNpbmNlIHRoZXkgY29udGFpbiB2ZW5kb3Itc3BlY2lmaWMgZmlybXdhcmUuIEluCitwYXJ0aWN1bGFyIHRoaXMgZHJpdmVyIGlzIG5vdCBzdWl0YWJsZSBmb3IgdGhlIE5vb2sgdGFibGV0LgorCitJdCBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCB0aGUgZm9sbG93aW5nIGRldmljZXM6CisgICogRVAwMzUwTTA2CisgICogRVAwNDMwTTA2CisgICogRVAwNTcwTTA2CisgICogRVAwNzAwTTA2CisKK1RoZSBkcml2ZXIgYWxsb3dzIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHRvdWNoIHNjcmVlbiB2aWEgYSBzZXQgb2Ygc3lzZnMgZmlsZXM6CisKKy9zeXMvY2xhc3MvaW5wdXQvZXZlbnRYL2RldmljZS9kZXZpY2UvdGhyZXNob2xkOgorICAgIGFsbG93cyBzZXR0aW5nIHRoZSAiY2xpY2siLXRocmVzaG9sZCBpbiB0aGUgcmFuZ2UgZnJvbSAyMCB0byA4MC4KKworL3N5cy9jbGFzcy9pbnB1dC9ldmVudFgvZGV2aWNlL2RldmljZS9nYWluOgorICAgIGFsbG93cyBzZXR0aW5nIHRoZSBzZW5zaXRpdml0eSBpbiB0aGUgcmFuZ2UgZnJvbSAwIHRvIDMxLiBOb3RlIHRoYXQKKyAgICBsb3dlciB2YWx1ZXMgaW5kaWNhdGUgaGlnaGVyIHNlbnNpdGl2aXR5LgorCisvc3lzL2NsYXNzL2lucHV0L2V2ZW50WC9kZXZpY2UvZGV2aWNlL29mZnNldDoKKyAgICBhbGxvd3Mgc2V0dGluZyB0aGUgZWRnZSBjb21wZW5zYXRpb24gaW4gdGhlIHJhbmdlIGZyb20gMCB0byAzMS4KKworL3N5cy9jbGFzcy9pbnB1dC9ldmVudFgvZGV2aWNlL2RldmljZS9yZXBvcnRfcmF0ZToKKyAgICBhbGxvd3Mgc2V0dGluZyB0aGUgcmVwb3J0IHJhdGUgaW4gdGhlIHJhbmdlIGZyb20gMyB0byAxNC4KKworCitGb3IgZGVidWdnaW5nIHB1cnBvc2VzIHRoZSBkcml2ZXIgcHJvdmlkZXMgYSBmZXcgZmlsZXMgaW4gdGhlIGRlYnVnCitmaWxlc3lzdGVtIChpZiBhdmFpbGFibGUgaW4gdGhlIGtlcm5lbCkuIEluIC9zeXMva2VybmVsL2RlYnVnL2VkdF9mdDV4MDYKK3lvdSdsbCBmaW5kIHRoZSBmb2xsb3dpbmcgZmlsZXM6CisKK251bV94LCBudW1feToKKyAgICAocmVhZG9ubHkpIGNvbnRhaW5zIHRoZSBudW1iZXIgb2Ygc2Vuc29yIGZpZWxkcyBpbiBYLSBhbmQKKyAgICBZLWRpcmVjdGlvbi4KKworbW9kZToKKyAgICBhbGxvd3Mgc3dpdGNoaW5nIHRoZSBzZW5zb3IgYmV0d2VlbiAiZmFjdG9yeSBtb2RlIiBhbmQgIm9wZXJhdGlvbgorICAgIG1vZGUiIGJ5IHdyaXRpbmcgIjEiIG9yICIwIiB0byBpdC4gSW4gZmFjdG9yeSBtb2RlICgxKSBpdCBpcworICAgIHBvc3NpYmxlIHRvIGdldCB0aGUgcmF3IGRhdGEgZnJvbSB0aGUgc2Vuc29yLiBOb3RlIHRoYXQgaW4gZmFjdG9yeQorICAgIG1vZGUgcmVndWxhciBldmVudHMgZG9uJ3QgZ2V0IGRlbGl2ZXJlZCBhbmQgdGhlIG9wdGlvbnMgZGVzY3JpYmVkCisgICAgYWJvdmUgYXJlIHVuYXZhaWxhYmxlLgorCityYXdfZGF0YToKKyAgICBjb250YWlucyBudW1feCAqIG51bV95IGJpZyBlbmRpYW4gMTYgYml0IHZhbHVlcyBkZXNjcmliaW5nIHRoZSByYXcKKyAgICB2YWx1ZXMgZm9yIGVhY2ggc2Vuc29yIGZpZWxkLiBOb3RlIHRoYXQgZWFjaCByZWFkKCkgY2FsbCBvbiB0aGlzCisgICAgZmlsZXMgdHJpZ2dlcnMgYSBuZXcgcmVhZG91dC4gSXQgaXMgcmVjb21tZW5kZWQgdG8gcHJvdmlkZSBhIGJ1ZmZlcgorICAgIGJpZyBlbm91Z2ggdG8gY29udGFpbiBudW1feCAqIG51bV95ICogMiBieXRlcy4KKworTm90ZSB0aGF0IHJlYWRpbmcgcmF3X2RhdGEgZ2l2ZXMgYSBJL08gZXJyb3Igd2hlbiB0aGUgZGV2aWNlIGlzIG5vdCBpbiBmYWN0b3J5Cittb2RlLiBUaGUgc2FtZSBoYXBwZW5zIHdoZW4gcmVhZGluZy93cml0aW5nIHRvIHRoZSBwYXJhbWV0ZXIgZmlsZXMgd2hlbiB0aGUKK2RldmljZSBpcyBub3QgaW4gcmVndWxhciBvcGVyYXRpb24gbW9kZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW5wdXQvZWxhbnRlY2gudHh0IGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9lbGFudGVjaC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWVjMGRiNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaW5wdXQvZWxhbnRlY2gudHh0CkBAIC0wLDAgKzEsODE3IEBACitFbGFudGVjaCBUb3VjaHBhZCBEcml2ZXIKKz09PT09PT09PT09PT09PT09PT09PT09PQorCisJQ29weXJpZ2h0IChDKSAyMDA3LTIwMDggQXJqYW4gT3BtZWVyIDxhcmphbkBvcG1lZXIubmV0PgorCisJRXh0cmEgaW5mb3JtYXRpb24gZm9yIGhhcmR3YXJlIHZlcnNpb24gMSBmb3VuZCBhbmQKKwlwcm92aWRlZCBieSBTdGV2ZSBIYXZlbGthCisKKwlWZXJzaW9uIDIgKEVlZVBDKSBoYXJkd2FyZSBzdXBwb3J0IGJhc2VkIG9uIHBhdGNoZXMKKwlyZWNlaXZlZCBmcm9tIFdvb2R5IGF0IFhhbmRyb3MgYW5kIGZvcndhcmRlZCB0byBtZQorCWJ5IHVzZXIgU3Rld2llR3JpZmZpbiBhdCB0aGUgZWVldXNlci5jb20gZm9ydW0KKworCitDb250ZW50cworfn5+fn5+fn4KKworIDEuIEludHJvZHVjdGlvbgorIDIuIEV4dHJhIGtub2JzCisgMy4gRGlmZmVyZW50aWF0aW5nIGhhcmR3YXJlIHZlcnNpb25zCisgNC4gSGFyZHdhcmUgdmVyc2lvbiAxCisgICAgNC4xIFJlZ2lzdGVycworICAgIDQuMiBOYXRpdmUgcmVsYXRpdmUgbW9kZSA0IGJ5dGUgcGFja2V0IGZvcm1hdAorICAgIDQuMyBOYXRpdmUgYWJzb2x1dGUgbW9kZSA0IGJ5dGUgcGFja2V0IGZvcm1hdAorIDUuIEhhcmR3YXJlIHZlcnNpb24gMgorICAgIDUuMSBSZWdpc3RlcnMKKyAgICA1LjIgTmF0aXZlIGFic29sdXRlIG1vZGUgNiBieXRlIHBhY2tldCBmb3JtYXQKKyAgICAgICAgNS4yLjEgUGFyaXR5IGNoZWNraW5nIGFuZCBwYWNrZXQgcmUtc3luY2hyb25pemF0aW9uCisgICAgICAgIDUuMi4yIE9uZS9UaHJlZSBmaW5nZXIgdG91Y2gKKyAgICAgICAgNS4yLjMgVHdvIGZpbmdlciB0b3VjaAorIDYuIEhhcmR3YXJlIHZlcnNpb24gMworICAgIDYuMSBSZWdpc3RlcnMKKyAgICA2LjIgTmF0aXZlIGFic29sdXRlIG1vZGUgNiBieXRlIHBhY2tldCBmb3JtYXQKKyAgICAgICAgNi4yLjEgT25lL1RocmVlIGZpbmdlciB0b3VjaAorICAgICAgICA2LjIuMiBUd28gZmluZ2VyIHRvdWNoCisgNy4gSGFyZHdhcmUgdmVyc2lvbiA0CisgICAgNy4xIFJlZ2lzdGVycworICAgIDcuMiBOYXRpdmUgYWJzb2x1dGUgbW9kZSA2IGJ5dGUgcGFja2V0IGZvcm1hdAorICAgICAgICA3LjIuMSBTdGF0dXMgcGFja2V0CisgICAgICAgIDcuMi4yIEhlYWQgcGFja2V0CisgICAgICAgIDcuMi4zIE1vdGlvbiBwYWNrZXQKKyA4LiBUcmFja3BvaW50IChmb3IgSGFyZHdhcmUgdmVyc2lvbiAzIGFuZCA0KQorICAgIDguMSBSZWdpc3RlcnMKKyAgICA4LjIgTmF0aXZlIHJlbGF0aXZlIG1vZGUgNiBieXRlIHBhY2tldCBmb3JtYXQKKyAgICAgICAgOC4yLjEgU3RhdHVzIFBhY2tldAorCisKKworMS4gSW50cm9kdWN0aW9uCisgICB+fn5+fn5+fn5+fn4KKworQ3VycmVudGx5IHRoZSBMaW51eCBFbGFudGVjaCB0b3VjaHBhZCBkcml2ZXIgaXMgYXdhcmUgb2YgZm91ciBkaWZmZXJlbnQKK2hhcmR3YXJlIHZlcnNpb25zIHVuaW1hZ2luYXRpdmVseSBjYWxsZWQgdmVyc2lvbiAxLHZlcnNpb24gMiwgdmVyc2lvbiAzCithbmQgdmVyc2lvbiA0LiBWZXJzaW9uIDEgaXMgZm91bmQgaW4gIm9sZGVyIiBsYXB0b3BzIGFuZCB1c2VzIDQgYnl0ZXMgcGVyCitwYWNrZXQuIFZlcnNpb24gMiBzZWVtcyB0byBiZSBpbnRyb2R1Y2VkIHdpdGggdGhlIEVlZVBDIGFuZCB1c2VzIDYgYnl0ZXMKK3BlciBwYWNrZXQsIGFuZCBwcm92aWRlcyBhZGRpdGlvbmFsIGZlYXR1cmVzIHN1Y2ggYXMgcG9zaXRpb24gb2YgdHdvIGZpbmdlcnMsCithbmQgd2lkdGggb2YgdGhlIHRvdWNoLiAgSGFyZHdhcmUgdmVyc2lvbiAzIHVzZXMgNiBieXRlcyBwZXIgcGFja2V0IChhbmQKK2ZvciAyIGZpbmdlcnMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdHdvIDYgYnl0ZXMgcGFja2V0cykgYW5kIGFsbG93cyB0cmFja2luZworb2YgdXAgdG8gMyBmaW5nZXJzLiBIYXJkd2FyZSB2ZXJzaW9uIDQgdXNlcyA2IGJ5dGVzIHBlciBwYWNrZXQsIGFuZCBjYW4KK2NvbWJpbmUgYSBzdGF0dXMgcGFja2V0IHdpdGggbXVsdGlwbGUgaGVhZCBvciBtb3Rpb24gcGFja2V0cy4gSGFyZHdhcmUgdmVyc2lvbgorNCBhbGxvd3MgdHJhY2tpbmcgdXAgdG8gNSBmaW5nZXJzLgorCitTb21lIEhhcmR3YXJlIHZlcnNpb24gMyBhbmQgdmVyc2lvbiA0IGFsc28gaGF2ZSBhIHRyYWNrcG9pbnQgd2hpY2ggdXNlcyBhCitzZXBhcmF0ZSBwYWNrZXQgZm9ybWF0LiBJdCBpcyBhbHNvIDYgYnl0ZXMgcGVyIHBhY2tldC4KKworVGhlIGRyaXZlciB0cmllcyB0byBzdXBwb3J0IGJvdGggaGFyZHdhcmUgdmVyc2lvbnMgYW5kIHNob3VsZCBiZSBjb21wYXRpYmxlCit3aXRoIHRoZSBYb3JnIFN5bmFwdGljcyB0b3VjaHBhZCBkcml2ZXIgYW5kIGl0cyBncmFwaGljYWwgY29uZmlndXJhdGlvbgordXRpbGl0aWVzLgorCitOb3RlIHRoYXQgYSBtb3VzZSBidXR0b24gaXMgYWxzbyBhc3NvY2lhdGVkIHdpdGggZWl0aGVyIHRoZSB0b3VjaHBhZCBvciB0aGUKK3RyYWNrcG9pbnQgd2hlbiBhIHRyYWNrcG9pbnQgaXMgYXZhaWxhYmxlLiAgRGlzYWJsaW5nIHRoZSBUb3VjaHBhZCBpbiB4b3JnCisoVG91Y2hQYWRPZmY9MCkgd2lsbCBhbHNvIGRpc2FibGUgdGhlIGJ1dHRvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSB0b3VjaHBhZC4KKworQWRkaXRpb25hbGx5IHRoZSBvcGVyYXRpb24gb2YgdGhlIHRvdWNocGFkIGNhbiBiZSBhbHRlcmVkIGJ5IGFkanVzdGluZyB0aGUKK2NvbnRlbnRzIG9mIHNvbWUgb2YgaXRzIGludGVybmFsIHJlZ2lzdGVycy4gVGhlc2UgcmVnaXN0ZXJzIGFyZSByZXByZXNlbnRlZAorYnkgdGhlIGRyaXZlciBhcyBzeXNmcyBlbnRyaWVzIHVuZGVyIC9zeXMvYnVzL3NlcmlvL2RyaXZlcnMvcHNtb3VzZS9zZXJpbz8KK3RoYXQgY2FuIGJlIHJlYWQgZnJvbSBhbmQgd3JpdHRlbiB0by4KKworQ3VycmVudGx5IG9ubHkgdGhlIHJlZ2lzdGVycyBmb3IgaGFyZHdhcmUgdmVyc2lvbiAxIGFyZSBzb21ld2hhdCB1bmRlcnN0b29kLgorSGFyZHdhcmUgdmVyc2lvbiAyIHNlZW1zIHRvIHVzZSBzb21lIG9mIHRoZSBzYW1lIHJlZ2lzdGVycyBidXQgaXQgaXMgbm90Citrbm93biB3aGV0aGVyIHRoZSBiaXRzIGluIHRoZSByZWdpc3RlcnMgcmVwcmVzZW50IHRoZSBzYW1lIHRoaW5nIG9yIG1pZ2h0CitoYXZlIGNoYW5nZWQgdGhlaXIgbWVhbmluZy4KKworT24gdG9wIG9mIHRoYXQsIHNvbWUgcmVnaXN0ZXIgc2V0dGluZ3MgaGF2ZSBlZmZlY3Qgb25seSB3aGVuIHRoZSB0b3VjaHBhZCBpcworaW4gcmVsYXRpdmUgbW9kZSBhbmQgbm90IGluIGFic29sdXRlIG1vZGUuIEFzIHRoZSBMaW51eCBFbGFudGVjaCB0b3VjaHBhZAorZHJpdmVyIGFsd2F5cyBwdXRzIHRoZSBoYXJkd2FyZSBpbnRvIGFic29sdXRlIG1vZGUgbm90IGFsbCBpbmZvcm1hdGlvbgorbWVudGlvbmVkIGJlbG93IGNhbiBiZSB1c2VkIGltbWVkaWF0ZWx5LiBCdXQgYmVjYXVzZSB0aGVyZSBpcyBubyBmcmVlbHkKK2F2YWlsYWJsZSBFbGFudGVjaCBkb2N1bWVudGF0aW9uIHRoZSBpbmZvcm1hdGlvbiBpcyBwcm92aWRlZCBoZXJlIGFueXdheSBmb3IKK2NvbXBsZXRlbmVzcyBzYWtlLgorCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKworMi4gRXh0cmEga25vYnMKKyAgIH5+fn5+fn5+fn5+CisKK0N1cnJlbnRseSB0aGUgTGludXggRWxhbnRlY2ggdG91Y2hwYWQgZHJpdmVyIHByb3ZpZGVzIHRocmVlIGV4dHJhIGtub2JzIHVuZGVyCisvc3lzL2J1cy9zZXJpby9kcml2ZXJzL3BzbW91c2Uvc2VyaW8/IGZvciB0aGUgdXNlci4KKworKiBkZWJ1ZworCisgICBUdXJuIGRpZmZlcmVudCBsZXZlbHMgb2YgZGVidWdnaW5nIE9OIG9yIE9GRi4KKworICAgQnkgZWNob2luZyAiMCIgdG8gdGhpcyBmaWxlIGFsbCBkZWJ1Z2dpbmcgd2lsbCBiZSB0dXJuZWQgT0ZGLgorCisgICBDdXJyZW50bHkgYSB2YWx1ZSBvZiAiMSIgd2lsbCB0dXJuIG9uIHNvbWUgYmFzaWMgZGVidWdnaW5nIGFuZCBhIHZhbHVlIG9mCisgICAiMiIgd2lsbCB0dXJuIG9uIHBhY2tldCBkZWJ1Z2dpbmcuIEZvciBoYXJkd2FyZSB2ZXJzaW9uIDEgdGhlIGRlZmF1bHQgaXMKKyAgIE9GRi4gRm9yIHZlcnNpb24gMiB0aGUgZGVmYXVsdCBpcyAiMSIuCisKKyAgIFR1cm5pbmcgcGFja2V0IGRlYnVnZ2luZyBvbiB3aWxsIG1ha2UgdGhlIGRyaXZlciBkdW1wIGV2ZXJ5IHBhY2tldAorICAgcmVjZWl2ZWQgdG8gdGhlIHN5c2xvZyBiZWZvcmUgcHJvY2Vzc2luZyBpdC4gQmUgd2FybmVkIHRoYXQgdGhpcyBjYW4KKyAgIGdlbmVyYXRlIHF1aXRlIGEgbG90IG9mIGRhdGEhCisKKyogcGFyaXR5Y2hlY2sKKworICAgVHVybnMgcGFyaXR5IGNoZWNraW5nIE9OIG9yIE9GRi4KKworICAgQnkgZWNob2luZyAiMCIgdG8gdGhpcyBmaWxlIHBhcml0eSBjaGVja2luZyB3aWxsIGJlIHR1cm5lZCBPRkYuIEFueQorICAgbm9uLXplcm8gdmFsdWUgd2lsbCB0dXJuIGl0IE9OLiBGb3IgaGFyZHdhcmUgdmVyc2lvbiAxIHRoZSBkZWZhdWx0IGlzIE9OLgorICAgRm9yIHZlcnNpb24gMiB0aGUgZGVmYXVsdCBpdCBpcyBPRkYuCisKKyAgIEhhcmR3YXJlIHZlcnNpb24gMSBwcm92aWRlcyBiYXNpYyBkYXRhIGludGVncml0eSB2ZXJpZmljYXRpb24gYnkKKyAgIGNhbGN1bGF0aW5nIGEgcGFyaXR5IGJpdCBmb3IgdGhlIGxhc3QgMyBieXRlcyBvZiBlYWNoIHBhY2tldC4gVGhlIGRyaXZlcgorICAgY2FuIGNoZWNrIHRoZXNlIGJpdHMgYW5kIHJlamVjdCBhbnkgcGFja2V0IHRoYXQgYXBwZWFycyBjb3JydXB0ZWQuIFVzaW5nCisgICB0aGlzIGtub2IgeW91IGNhbiBieXBhc3MgdGhhdCBjaGVjay4KKworICAgSGFyZHdhcmUgdmVyc2lvbiAyIGRvZXMgbm90IHByb3ZpZGUgdGhlIHNhbWUgcGFyaXR5IGJpdHMuIE9ubHkgc29tZSBiYXNpYworICAgZGF0YSBjb25zaXN0ZW5jeSBjaGVja2luZyBjYW4gYmUgZG9uZS4gRm9yIG5vdyBjaGVja2luZyBpcyBkaXNhYmxlZCBieQorICAgZGVmYXVsdC4gQ3VycmVudGx5IGV2ZW4gdHVybmluZyBpdCBvbiB3aWxsIGRvIG5vdGhpbmcuCisKKyogY3JjX2VuYWJsZWQKKworICAgU2V0cyBjcmNfZW5hYmxlZCB0byAwLzEuIFRoZSBuYW1lICJjcmNfZW5hYmxlZCIgaXMgdGhlIG9mZmljaWFsIG5hbWUgb2YKKyAgIHRoaXMgaW50ZWdyaXR5IGNoZWNrLCBldmVuIHRob3VnaCBpdCBpcyBub3QgYW4gYWN0dWFsIGN5Y2xpYyByZWR1bmRhbmN5CisgICBjaGVjay4KKworICAgRGVwZW5kaW5nIG9uIHRoZSBzdGF0ZSBvZiBjcmNfZW5hYmxlZCwgY2VydGFpbiBiYXNpYyBkYXRhIGludGVncml0eQorICAgdmVyaWZpY2F0aW9uIGlzIGRvbmUgYnkgdGhlIGRyaXZlciBvbiBoYXJkd2FyZSB2ZXJzaW9uIDMgYW5kIDQuIFRoZQorICAgZHJpdmVyIHdpbGwgcmVqZWN0IGFueSBwYWNrZXQgdGhhdCBhcHBlYXJzIGNvcnJ1cHRlZC4gVXNpbmcgdGhpcyBrbm9iLAorICAgVGhlIHN0YXRlIG9mIGNyY19lbmFibGVkIGNhbiBiZSBhbHRlcmVkIHdpdGggdGhpcyBrbm9iLgorCisgICBSZWFkaW5nIHRoZSBjcmNfZW5hYmxlZCB2YWx1ZSB3aWxsIHNob3cgdGhlIGFjdGl2ZSB2YWx1ZS4gRWNob2luZworICAgIjAiIG9yICIxIiB0byB0aGlzIGZpbGUgd2lsbCBzZXQgdGhlIHN0YXRlIHRvICIwIiBvciAiMSIuCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKzMuIERpZmZlcmVudGlhdGluZyBoYXJkd2FyZSB2ZXJzaW9ucworICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RvIGRldGVjdCB0aGUgaGFyZHdhcmUgdmVyc2lvbiwgcmVhZCB0aGUgdmVyc2lvbiBudW1iZXIgYXMgcGFyYW1bMF0ucGFyYW1bMV0ucGFyYW1bMl0KKworIDQgYnl0ZXMgdmVyc2lvbjogKGFmdGVyIHRoZSBhcnJvdyBpcyB0aGUgbmFtZSBnaXZlbiBpbiB0aGUgRGVsbC1wcm92aWRlZCBkcml2ZXIpCisgMDIuMDAuMjIgPT4gRUYwMTMKKyAwMi4wNi4wMCA9PiBFRjAxOQorSW4gdGhlIHdpbGQsIHRoZXJlIGFwcGVhciB0byBiZSBtb3JlIHZlcnNpb25zLCBzdWNoIGFzIDAwLjAxLjY0LCAwMS4wMC4yMSwKKzAyLjAwLjAwLCAwMi4wMC4wNCwgMDIuMDAuMDYuCisKKyA2IGJ5dGVzOgorIDAyLjAwLjMwID0+IEVGMTEzCisgMDIuMDguMDAgPT4gRUYwMjMKKyAwMi4wOC5YWCA9PiBFRjEyMworIDAyLjBCLjAwID0+IEVGMjE1CisgMDQuMDEuWFggPT4gU2Nyb2xsX0VGMDUxCisgMDQuMDIuWFggPT4gRUYwNTEKK0luIHRoZSB3aWxkLCB0aGVyZSBhcHBlYXIgdG8gYmUgbW9yZSB2ZXJzaW9ucywgc3VjaCBhcyAwNC4wMy4wMSwgMDQuMDQuMTEuIFRoZXJlCithcHBlYXJzIHRvIGJlIGFsbW9zdCBubyBkaWZmZXJlbmNlLCBleGNlcHQgZm9yIEVGMTEzLCB3aGljaCBkb2VzIG5vdCByZXBvcnQKK3ByZXNzdXJlL3dpZHRoIGFuZCBoYXMgZGlmZmVyZW50IGRhdGEgY29uc2lzdGVuY3kgY2hlY2tzLgorCitQcm9iYWJseSBhbGwgdGhlIHZlcnNpb25zIHdpdGggcGFyYW1bMF0gPD0gMDEgY2FuIGJlIGNvbnNpZGVyZWQgYXMKKzQgYnl0ZXMvZmlybXdhcmUgMS4gVGhlIHZlcnNpb25zIDwgMDIuMDguMDAsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiAwMi4wMC4zMCwgYXMKKzQgYnl0ZXMvZmlybXdhcmUgMi4gRXZlcnl0aGluZyA+PSAwMi4wOC4wMCBjYW4gYmUgY29uc2lkZXJlZCBhcyA2IGJ5dGVzLgorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCis0LiBIYXJkd2FyZSB2ZXJzaW9uIDEKKyAgID09PT09PT09PT09PT09PT09PQorCis0LjEgUmVnaXN0ZXJzCisgICAgfn5+fn5+fn5+CisKK0J5IGVjaG9pbmcgYSBoZXhhZGVjaW1hbCB2YWx1ZSB0byBhIHJlZ2lzdGVyIGl0IGNvbnRlbnRzIGNhbiBiZSBhbHRlcmVkLgorCitGb3IgZXhhbXBsZToKKworICAgZWNobyAtbiAweDE2ID4gcmVnXzEwCisKKyogcmVnXzEwCisKKyAgIGJpdCAgIDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwCisgICAgICAgICBCICAgQyAgIFQgICBEICAgTCAgIEEgICBTICAgRQorCisgICAgICAgICBFOiAxID0gZW5hYmxlIHNtYXJ0IGVkZ2VzIHVuY29uZGl0aW9uYWxseQorICAgICAgICAgUzogMSA9IGVuYWJsZSBzbWFydCBlZGdlcyBvbmx5IHdoZW4gZHJhZ2dpbmcKKyAgICAgICAgIEE6IDEgPSBhYnNvbHV0ZSBtb2RlIChuZWVkcyA0IGJ5dGUgcGFja2V0cywgc2VlIHJlZ18xMSkKKyAgICAgICAgIEw6IDEgPSBlbmFibGUgZHJhZyBsb2NrIChzZWUgcmVnXzIyKQorICAgICAgICAgRDogMSA9IGRpc2FibGUgZHluYW1pYyByZXNvbHV0aW9uCisgICAgICAgICBUOiAxID0gZGlzYWJsZSB0YXBwaW5nCisgICAgICAgICBDOiAxID0gZW5hYmxlIGNvcm5lciB0YXAKKyAgICAgICAgIEI6IDEgPSBzd2FwIGxlZnQgYW5kIHJpZ2h0IGJ1dHRvbgorCisqIHJlZ18xMQorCisgICBiaXQgICA3ICAgNiAgIDUgICA0ICAgMyAgIDIgICAxICAgMAorICAgICAgICAgMSAgIDAgICAwICAgSCAgIFYgICAxICAgRiAgIFAKKworICAgICAgICAgUDogMSA9IGVuYWJsZSBwYXJpdHkgY2hlY2tpbmcgZm9yIHJlbGF0aXZlIG1vZGUKKyAgICAgICAgIEY6IDEgPSBlbmFibGUgbmF0aXZlIDQgYnl0ZSBwYWNrZXQgbW9kZQorICAgICAgICAgVjogMSA9IGVuYWJsZSB2ZXJ0aWNhbCBzY3JvbGwgYXJlYQorICAgICAgICAgSDogMSA9IGVuYWJsZSBob3Jpem9udGFsIHNjcm9sbCBhcmVhCisKKyogcmVnXzIwCisKKyAgICAgICAgIHNpbmdsZSBmaW5nZXIgd2lkdGg/CisKKyogcmVnXzIxCisKKyAgICAgICAgIHNjcm9sbCBhcmVhIHdpZHRoIChzbWFsbDogMHg0MCAuLi4gd2lkZTogMHhmZikKKworKiByZWdfMjIKKworICAgICAgICAgZHJhZyBsb2NrIHRpbWUgb3V0IChzaG9ydDogMHgxNCAuLi4gbG9uZzogMHhmZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZiA9IHRhcCBhZ2FpbiB0byByZWxlYXNlKQorCisqIHJlZ18yMworCisgICAgICAgICB0YXAgbWFrZSB0aW1lb3V0PworCisqIHJlZ18yNAorCisgICAgICAgICB0YXAgcmVsZWFzZSB0aW1lb3V0PworCisqIHJlZ18yNQorCisgICAgICAgICBzbWFydCBlZGdlIGN1cnNvciBzcGVlZCAoMHgwMiA9IHNsb3csIDB4MDMgPSBtZWRpdW0sIDB4MDQgPSBmYXN0KQorCisqIHJlZ18yNgorCisgICAgICAgICBzbWFydCBlZGdlIGFjdGl2YXRpb24gYXJlYSB3aWR0aD8KKworCis0LjIgTmF0aXZlIHJlbGF0aXZlIG1vZGUgNCBieXRlIHBhY2tldCBmb3JtYXQKKyAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitieXRlIDA6CisgICBiaXQgICA3ICAgNiAgIDUgICA0ICAgMyAgIDIgICAxICAgMAorICAgICAgICAgYyAgIGMgIHAyICBwMSAgIDEgICBNICAgUiAgIEwKKworICAgICAgICAgTCwgUiwgTSA9IDEgd2hlbiBMZWZ0LCBSaWdodCwgTWlkZGxlIG1vdXNlIGJ1dHRvbiBwcmVzc2VkCisgICAgICAgICAgICBzb21lIG1vZGVscyBoYXZlIE0gYXMgYnl0ZSAzIG9kZCBwYXJpdHkgYml0CisgICAgICAgICB3aGVuIHBhcml0eSBjaGVja2luZyBpcyBlbmFibGVkIChyZWdfMTEsIFAgPSAxKToKKyAgICAgICAgICAgIHAxLi5wMiA9IGJ5dGUgMSBhbmQgMiBvZGQgcGFyaXR5IGJpdAorICAgICAgICAgYyA9IDEgd2hlbiBjb3JuZXIgdGFwIGRldGVjdGVkCisKK2J5dGUgMToKKyAgIGJpdCAgIDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwCisgICAgICAgIGR4NyBkeDYgZHg1IGR4NCBkeDMgZHgyIGR4MSBkeDAKKworICAgICAgICAgZHg3Li5keDAgPSB4IG1vdmVtZW50OyAgIHBvc2l0aXZlID0gcmlnaHQsIG5lZ2F0aXZlID0gbGVmdAorICAgICAgICAgYnl0ZSAxID0gMHhmMCB3aGVuIGNvcm5lciB0YXAgZGV0ZWN0ZWQKKworYnl0ZSAyOgorICAgYml0ICAgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAKKyAgICAgICAgZHk3IGR5NiBkeTUgZHk0IGR5MyBkeTIgZHkxIGR5MAorCisgICAgICAgICBkeTcuLmR5MCA9IHkgbW92ZW1lbnQ7ICAgcG9zaXRpdmUgPSB1cCwgICAgbmVnYXRpdmUgPSBkb3duCisKK2J5dGUgMzoKKyAgIHBhcml0eSBjaGVja2luZyBlbmFibGVkIChyZWdfMTEsIFAgPSAxKToKKworICAgICAgYml0ICAgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAKKyAgICAgICAgICAgIHcgICBoICBuMSAgbjAgIGRzMyBkczIgZHMxIGRzMAorCisgICAgICAgICAgICBub3JtYWxseToKKyAgICAgICAgICAgICAgIGRzMy4uZHMwID0gc2Nyb2xsIHdoZWVsIGFtb3VudCBhbmQgZGlyZWN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aXZlID0gZG93biBvciBsZWZ0CisgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZ2F0aXZlID0gdXAgb3IgcmlnaHQKKyAgICAgICAgICAgIHdoZW4gY29ybmVyIHRhcCBkZXRlY3RlZDoKKyAgICAgICAgICAgICAgIGRzMCA9IDEgd2hlbiB0b3AgcmlnaHQgY29ybmVyIHRhcHBlZAorICAgICAgICAgICAgICAgZHMxID0gMSB3aGVuIGJvdHRvbSByaWdodCBjb3JuZXIgdGFwcGVkCisgICAgICAgICAgICAgICBkczIgPSAxIHdoZW4gYm90dG9tIGxlZnQgY29ybmVyIHRhcHBlZAorICAgICAgICAgICAgICAgZHMzID0gMSB3aGVuIHRvcCBsZWZ0IGNvcm5lciB0YXBwZWQKKyAgICAgICAgICAgIG4xLi5uMCA9IG51bWJlciBvZiBmaW5nZXJzIG9uIHRvdWNocGFkCisgICAgICAgICAgICAgICBvbmx5IG1vZGVscyB3aXRoIGZpcm13YXJlIDIueCByZXBvcnQgdGhpcywgbW9kZWxzIHdpdGgKKyAgICAgICAgICAgICAgIGZpcm13YXJlIDEueCBzZWVtIHRvIG1hcCBvbmUsIHR3byBhbmQgdGhyZWUgZmluZ2VyIHRhcHMKKyAgICAgICAgICAgICAgIGRpcmVjdGx5IHRvIEwsIE0gYW5kIFIgbW91c2UgYnV0dG9ucworICAgICAgICAgICAgaCA9IDEgd2hlbiBob3Jpem9udGFsIHNjcm9sbCBhY3Rpb24KKyAgICAgICAgICAgIHcgPSAxIHdoZW4gd2lkZSBmaW5nZXIgdG91Y2g/CisKKyAgIG90aGVyd2lzZSAocmVnXzExLCBQID0gMCk6CisKKyAgICAgIGJpdCAgIDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwCisgICAgICAgICAgIGRzNyBkczYgZHM1IGRzNCBkczMgZHMyIGRzMSBkczAKKworICAgICAgICAgICAgZHM3Li5kczAgPSB2ZXJ0aWNhbCBzY3JvbGwgYW1vdW50IGFuZCBkaXJlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgbmVnYXRpdmUgPSB1cAorICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGl2ZSA9IGRvd24KKworCis0LjMgTmF0aXZlIGFic29sdXRlIG1vZGUgNCBieXRlIHBhY2tldCBmb3JtYXQKKyAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitFRjAxMyBhbmQgRUYwMTkgaGF2ZSBhIHNwZWNpYWwgYmVoYXZpb3VyIChkdWUgdG8gYSBidWcgaW4gdGhlIGZpcm13YXJlPyksIGFuZAord2hlbiAxIGZpbmdlciBpcyB0b3VjaGluZywgdGhlIGZpcnN0IDIgcG9zaXRpb24gcmVwb3J0cyBtdXN0IGJlIGRpc2NhcmRlZC4KK1RoaXMgY291bnRpbmcgaXMgcmVzZXQgd2hlbmV2ZXIgYSBkaWZmZXJlbnQgbnVtYmVyIG9mIGZpbmdlcnMgaXMgcmVwb3J0ZWQuCisKK2J5dGUgMDoKKyAgIGZpcm13YXJlIHZlcnNpb24gMS54OgorCisgICAgICBiaXQgICA3ICAgNiAgIDUgICA0ICAgMyAgIDIgICAxICAgMAorICAgICAgICAgICAgRCAgIFUgIHAxICBwMiAgIDEgIHAzICAgUiAgIEwKKworICAgICAgICAgICAgTCwgUiA9IDEgd2hlbiBMZWZ0LCBSaWdodCBtb3VzZSBidXR0b24gcHJlc3NlZAorICAgICAgICAgICAgcDEuLnAzID0gYnl0ZSAxLi4zIG9kZCBwYXJpdHkgYml0CisgICAgICAgICAgICBELCBVID0gMSB3aGVuIHJvY2tlciBzd2l0Y2ggcHJlc3NlZCBVcCwgRG93bgorCisgICBmaXJtd2FyZSB2ZXJzaW9uIDIueDoKKworICAgICAgYml0ICAgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAKKyAgICAgICAgICAgbjEgIG4wICBwMiAgcDEgICAxICBwMyAgIFIgICBMCisKKyAgICAgICAgICAgIEwsIFIgPSAxIHdoZW4gTGVmdCwgUmlnaHQgbW91c2UgYnV0dG9uIHByZXNzZWQKKyAgICAgICAgICAgIHAxLi5wMyA9IGJ5dGUgMS4uMyBvZGQgcGFyaXR5IGJpdAorICAgICAgICAgICAgbjEuLm4wID0gbnVtYmVyIG9mIGZpbmdlcnMgb24gdG91Y2hwYWQKKworYnl0ZSAxOgorICAgZmlybXdhcmUgdmVyc2lvbiAxLng6CisKKyAgICAgIGJpdCAgIDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwCisgICAgICAgICAgICBmICAgMCAgdGggIHR3ICB4OSAgeDggIHk5ICB5OAorCisgICAgICAgICAgICB0dyA9IDEgd2hlbiB0d28gZmluZ2VyIHRvdWNoCisgICAgICAgICAgICB0aCA9IDEgd2hlbiB0aHJlZSBmaW5nZXIgdG91Y2gKKyAgICAgICAgICAgIGYgID0gMSB3aGVuIGZpbmdlciB0b3VjaAorCisgICBmaXJtd2FyZSB2ZXJzaW9uIDIueDoKKworICAgICAgYml0ICAgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAKKyAgICAgICAgICAgIC4gICAuICAgLiAgIC4gIHg5ICB4OCAgeTkgIHk4CisKK2J5dGUgMjoKKyAgIGJpdCAgIDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwCisgICAgICAgIHg3ICB4NiAgeDUgIHg0ICB4MyAgeDIgIHgxICB4MAorCisgICAgICAgICB4OS4ueDAgPSBhYnNvbHV0ZSB4IHZhbHVlIChob3Jpem9udGFsKQorCitieXRlIDM6CisgICBiaXQgICA3ICAgNiAgIDUgICA0ICAgMyAgIDIgICAxICAgMAorICAgICAgICB5NyAgeTYgIHk1ICB5NCAgeTMgIHkyICB5MSAgeTAKKworICAgICAgICAgeTkuLnkwID0gYWJzb2x1dGUgeSB2YWx1ZSAodmVydGljYWwpCisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworCis1LiBIYXJkd2FyZSB2ZXJzaW9uIDIKKyAgID09PT09PT09PT09PT09PT09PQorCisKKzUuMSBSZWdpc3RlcnMKKyAgICB+fn5+fn5+fn4KKworQnkgZWNob2luZyBhIGhleGFkZWNpbWFsIHZhbHVlIHRvIGEgcmVnaXN0ZXIgaXQgY29udGVudHMgY2FuIGJlIGFsdGVyZWQuCisKK0ZvciBleGFtcGxlOgorCisgICBlY2hvIC1uIDB4NTYgPiByZWdfMTAKKworKiByZWdfMTAKKworICAgYml0ICAgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAKKyAgICAgICAgIDAgICAxICAgMCAgIDEgICAwICAgMSAgIEQgICAwCisKKyAgICAgICAgIEQ6IDEgPSBlbmFibGUgZHJhZyBhbmQgZHJvcAorCisqIHJlZ18xMQorCisgICBiaXQgICA3ICAgNiAgIDUgICA0ICAgMyAgIDIgICAxICAgMAorICAgICAgICAgMSAgIDAgICAwICAgMCAgIFMgICAwICAgMSAgIDAKKworICAgICAgICAgUzogMSA9IGVuYWJsZSB2ZXJ0aWNhbCBzY3JvbGwKKworKiByZWdfMjEKKworICAgICAgICAgdW5rbm93biAoMHgwMCkKKworKiByZWdfMjIKKworICAgICAgICAgZHJhZyBhbmQgZHJvcCByZWxlYXNlIHRpbWUgb3V0IChzaG9ydDogMHg3MCAuLi4gbG9uZyAweDdlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmID0gbmV2ZXIgaS5lLiB0YXAgYWdhaW4gdG8gcmVsZWFzZSkKKworCis1LjIgTmF0aXZlIGFic29sdXRlIG1vZGUgNiBieXRlIHBhY2tldCBmb3JtYXQKKyAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorNS4yLjEgUGFyaXR5IGNoZWNraW5nIGFuZCBwYWNrZXQgcmUtc3luY2hyb25pemF0aW9uCitUaGVyZSBpcyBubyBwYXJpdHkgY2hlY2tpbmcsIGhvd2V2ZXIgc29tZSBjb25zaXN0ZW5jeSBjaGVja3MgY2FuIGJlIHBlcmZvcm1lZC4KKworRm9yIGluc3RhbmNlIGZvciBFRjExMzoKKyAgICAgICAgU0ExPSBwYWNrZXRbMF07CisgICAgICAgIEExID0gcGFja2V0WzFdOworICAgICAgICBCMSA9IHBhY2tldFsyXTsKKyAgICAgICAgU0IxPSBwYWNrZXRbM107CisgICAgICAgIEMxID0gcGFja2V0WzRdOworICAgICAgICBEMSA9IHBhY2tldFs1XTsKKyAgICAgICAgaWYoICgoKFNBMSAmIDB4M0MpICE9IDB4M0MpICYmICgoU0ExICYgMHhDMCkgIT0gMHg4MCkpIHx8IC8vIGNoZWNrIEJ5dGUgMQorICAgICAgICAgICAgKCgoU0ExICYgMHgwQykgIT0gMHgwQykgJiYgKChTQTEgJiAweEMwKSA9PSAweDgwKSkgfHwgLy8gY2hlY2sgQnl0ZSAxIChvbmUgZmluZ2VyIHByZXNzZWQpCisgICAgICAgICAgICAoKChTQTEgJiAweEMwKSAhPSAweDgwKSAmJiAoKCBBMSAmIDB4RjApICE9IDB4MDApKSB8fCAvLyBjaGVjayBCeXRlIDIKKyAgICAgICAgICAgICgoKFNCMSAmIDB4M0UpICE9IDB4MzgpICYmICgoU0ExICYgMHhDMCkgIT0gMHg4MCkpIHx8IC8vIGNoZWNrIEJ5dGUgNAorICAgICAgICAgICAgKCgoU0IxICYgMHgwRSkgIT0gMHgwOCkgJiYgKChTQTEgJiAweEMwKSA9PSAweDgwKSkgfHwgLy8gY2hlY2sgQnl0ZSA0IChvbmUgZmluZ2VyIHByZXNzZWQpCisgICAgICAgICAgICAoKChTQTEgJiAweEMwKSAhPSAweDgwKSAmJiAoKCBDMSAmIDB4RjApICE9IDB4MDApKSAgKSAvLyBjaGVjayBCeXRlIDUKKwkJLy8gZXJyb3IgZGV0ZWN0ZWQKKworRm9yIGFsbCB0aGUgb3RoZXIgb25lcywgdGhlcmUgYXJlIGp1c3QgYSBmZXcgY29uc3RhbnQgYml0czoKKyAgICAgICAgaWYoICgocGFja2V0WzBdICYgMHgwQykgIT0gMHgwNCkgfHwKKyAgICAgICAgICAgICgocGFja2V0WzNdICYgMHgwZikgIT0gMHgwMikgKQorCQkvLyBlcnJvciBkZXRlY3RlZAorCisKK0luIGNhc2UgYW4gZXJyb3IgaXMgZGV0ZWN0ZWQsIGFsbCB0aGUgcGFja2V0cyBhcmUgc2hpZnRlZCBieSBvbmUgKGFuZCBwYWNrZXRbMF0gaXMgZGlzY2FyZGVkKS4KKworNS4yLjIgT25lL1RocmVlIGZpbmdlciB0b3VjaAorICAgICAgfn5+fn5+fn5+fn5+fn5+fgorCitieXRlIDA6CisKKyAgIGJpdCAgIDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwCisJIG4xICBuMCAgdzMgIHcyICAgLiAgIC4gICBSICAgTAorCisgICAgICAgICBMLCBSID0gMSB3aGVuIExlZnQsIFJpZ2h0IG1vdXNlIGJ1dHRvbiBwcmVzc2VkCisgICAgICAgICBuMS4ubjAgPSBudW1iZXIgb2YgZmluZ2VycyBvbiB0b3VjaHBhZAorCitieXRlIDE6CisKKyAgIGJpdCAgIDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwCisJIHA3ICBwNiAgcDUgIHA0IHgxMSB4MTAgeDkgIHg4CisKK2J5dGUgMjoKKworICAgYml0ICAgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAKKwkgeDcgIHg2ICB4NSAgeDQgIHgzICB4MiAgeDEgIHgwCisKKyAgICAgICAgIHgxMS4ueDAgPSBhYnNvbHV0ZSB4IHZhbHVlIChob3Jpem9udGFsKQorCitieXRlIDM6CisKKyAgIGJpdCAgIDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwCisJIG40ICB2ZiAgdzEgIHcwICAgLiAgIC4gICAuICBiMgorCisJIG40ID0gc2V0IGlmIG1vcmUgdGhhbiAzIGZpbmdlcnMgKG9ubHkgaW4gMyBmaW5nZXJzIG1vZGUpCisJIHZmID0gYSBraW5kIG9mIGZsYWcgPyAob25seSBvbiBFRjEyMywgMCB3aGVuIGZpbmdlciBpcyBvdmVyIG9uZQorCSAgICAgIG9mIHRoZSBidXR0b25zLCAxIG90aGVyd2lzZSkKKwkgdzMuLncwID0gd2lkdGggb2YgdGhlIGZpbmdlciB0b3VjaCAobm90IEVGMTEzKQorCSBiMiAob24gRUYxMTMgb25seSwgMCBvdGhlcndpc2UpLCBiMi5SLkwgaW5kaWNhdGVzIG9uZSBidXR0b24gcHJlc3NlZDoKKwkJMCA9IG5vbmUKKwkJMSA9IExlZnQKKwkJMiA9IFJpZ2h0CisJCTMgPSBNaWRkbGUgKExlZnQgYW5kIFJpZ2h0KQorCQk0ID0gRm9yd2FyZAorCQk1ID0gQmFjaworCQk2ID0gQW5vdGhlciBvbmUKKwkJNyA9IEFub3RoZXIgb25lCisKK2J5dGUgNDoKKworICAgYml0ICAgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAKKyAgICAgICAgcDMgIHAxICBwMiAgcDAgIHkxMSB5MTAgeTkgIHk4CisKKwkgcDcuLnAwID0gcHJlc3N1cmUgKG5vdCBFRjExMykKKworYnl0ZSA1OgorCisgICBiaXQgICA3ICAgNiAgIDUgICA0ICAgMyAgIDIgICAxICAgMAorICAgICAgICB5NyAgeTYgIHk1ICB5NCAgeTMgIHkyICB5MSAgeTAKKworICAgICAgICAgeTExLi55MCA9IGFic29sdXRlIHkgdmFsdWUgKHZlcnRpY2FsKQorCisKKzUuMi4zIFR3byBmaW5nZXIgdG91Y2gKKyAgICAgIH5+fn5+fn5+fn5+fn5+fn4KKworTm90ZSB0aGF0IHRoZSB0d28gcGFpcnMgb2YgY29vcmRpbmF0ZXMgYXJlIG5vdCBleGFjdGx5IHRoZSBjb29yZGluYXRlcyBvZiB0aGUKK3R3byBmaW5nZXJzLCBidXQgb25seSB0aGUgcGFpciBvZiB0aGUgbG93ZXItbGVmdCBhbmQgdXBwZXItcmlnaHQgY29vcmRpbmF0ZXMuCitTbyB0aGUgYWN0dWFsIGZpbmdlcnMgbWlnaHQgYmUgc2l0dWF0ZWQgb24gdGhlIG90aGVyIGRpYWdvbmFsIG9mIHRoZSBzcXVhcmUKK2RlZmluZWQgYnkgdGhlc2UgdHdvIHBvaW50cy4KKworYnl0ZSAwOgorCisgICBiaXQgICA3ICAgNiAgIDUgICA0ICAgMyAgIDIgICAxICAgMAorICAgICAgICBuMSAgbjAgIGF5OCBheDggIC4gICAuICAgUiAgIEwKKworICAgICAgICAgTCwgUiA9IDEgd2hlbiBMZWZ0LCBSaWdodCBtb3VzZSBidXR0b24gcHJlc3NlZAorICAgICAgICAgbjEuLm4wID0gbnVtYmVyIG9mIGZpbmdlcnMgb24gdG91Y2hwYWQKKworYnl0ZSAxOgorCisgICBiaXQgICA3ICAgNiAgIDUgICA0ICAgMyAgIDIgICAxICAgMAorICAgICAgICBheDcgYXg2IGF4NSBheDQgYXgzIGF4MiBheDEgYXgwCisKKwkgYXg4Li5heDAgPSBsb3dlci1sZWZ0IGZpbmdlciBhYnNvbHV0ZSB4IHZhbHVlCisKK2J5dGUgMjoKKworICAgYml0ICAgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAKKyAgICAgICAgYXk3IGF5NiBheTUgYXk0IGF5MyBheTIgYXkxIGF5MAorCisJIGF5OC4uYXkwID0gbG93ZXItbGVmdCBmaW5nZXIgYWJzb2x1dGUgeSB2YWx1ZQorCitieXRlIDM6CisKKyAgIGJpdCAgIDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwCisgICAgICAgICAuICAgLiAgYnk4IGJ4OCAgLiAgIC4gICAuICAgLgorCitieXRlIDQ6CisKKyAgIGJpdCAgIDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwCisgICAgICAgIGJ4NyBieDYgYng1IGJ4NCBieDMgYngyIGJ4MSBieDAKKworICAgICAgICAgYng4Li5ieDAgPSB1cHBlci1yaWdodCBmaW5nZXIgYWJzb2x1dGUgeCB2YWx1ZQorCitieXRlIDU6CisKKyAgIGJpdCAgIDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwCisgICAgICAgIGJ5NyBieTggYnk1IGJ5NCBieTMgYnkyIGJ5MSBieTAKKworICAgICAgICAgYnk4Li5ieTAgPSB1cHBlci1yaWdodCBmaW5nZXIgYWJzb2x1dGUgeSB2YWx1ZQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCis2LiBIYXJkd2FyZSB2ZXJzaW9uIDMKKyAgID09PT09PT09PT09PT09PT09PQorCis2LjEgUmVnaXN0ZXJzCisgICAgfn5+fn5+fn5+CisqIHJlZ18xMAorCisgICBiaXQgICA3ICAgNiAgIDUgICA0ICAgMyAgIDIgICAxICAgMAorICAgICAgICAgMCAgIDAgICAwICAgMCAgIFIgICBGICAgVCAgIEEKKworICAgICAgICAgQTogMSA9IGVuYWJsZSBhYnNvbHV0ZSB0cmFja2luZworICAgICAgICAgVDogMSA9IGVuYWJsZSB0d28gZmluZ2VyIG1vZGUgYXV0byBjb3JyZWN0CisgICAgICAgICBGOiAxID0gZGlzYWJsZSBBQlMgUG9zaXRpb24gRmlsdGVyCisgICAgICAgICBSOiAxID0gZW5hYmxlIHJlYWwgaGFyZHdhcmUgcmVzb2x1dGlvbgorCis2LjIgTmF0aXZlIGFic29sdXRlIG1vZGUgNiBieXRlIHBhY2tldCBmb3JtYXQKKyAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorMSBhbmQgMyBmaW5nZXIgdG91Y2ggc2hhcmVzIHRoZSBzYW1lIDYtYnl0ZSBwYWNrZXQgZm9ybWF0LCBleGNlcHQgdGhhdAorMyBmaW5nZXIgdG91Y2ggb25seSByZXBvcnRzIHRoZSBwb3NpdGlvbiBvZiB0aGUgY2VudGVyIG9mIGFsbCB0aHJlZSBmaW5nZXJzLgorCitGaXJtd2FyZSB3b3VsZCBzZW5kIDEyIGJ5dGVzIG9mIGRhdGEgZm9yIDIgZmluZ2VyIHRvdWNoLgorCitOb3RlIG9uIGRlYm91bmNlOgorSW4gY2FzZSB0aGUgYm94IGhhcyB1bnN0YWJsZSBwb3dlciBzdXBwbHkgb3Igb3RoZXIgZWxlY3RyaWNpdHkgaXNzdWVzLCBvcgord2hlbiBudW1iZXIgb2YgZmluZ2VyIGNoYW5nZXMsIEYvVyB3b3VsZCBzZW5kICJkZWJvdW5jZSBwYWNrZXQiIHRvIGluZm9ybQorZHJpdmVyIHRoYXQgdGhlIGhhcmR3YXJlIGlzIGluIGRlYm91bmNlIHN0YXR1cy4KK1RoZSBkZWJvdWNlIHBhY2tldCBoYXMgdGhlIGZvbGxvd2luZyBzaWduYXR1cmU6CisgICAgYnl0ZSAwOiAweGM0CisgICAgYnl0ZSAxOiAweGZmCisgICAgYnl0ZSAyOiAweGZmCisgICAgYnl0ZSAzOiAweDAyCisgICAgYnl0ZSA0OiAweGZmCisgICAgYnl0ZSA1OiAweGZmCitXaGVuIHdlIGVuY291bnRlciB0aGlzIGtpbmQgb2YgcGFja2V0LCB3ZSBqdXN0IGlnbm9yZSBpdC4KKworNi4yLjEgT25lL1RocmVlIGZpbmdlciB0b3VjaAorICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitieXRlIDA6CisKKyAgIGJpdCAgIDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwCisgICAgICAgIG4xICBuMCAgdzMgIHcyICAgMCAgIDEgICBSICAgTAorCisgICAgICAgIEwsIFIgPSAxIHdoZW4gTGVmdCwgUmlnaHQgbW91c2UgYnV0dG9uIHByZXNzZWQKKyAgICAgICAgbjEuLm4wID0gbnVtYmVyIG9mIGZpbmdlcnMgb24gdG91Y2hwYWQKKworYnl0ZSAxOgorCisgICBiaXQgICA3ICAgNiAgIDUgICA0ICAgMyAgIDIgICAxICAgMAorICAgICAgICBwNyAgcDYgIHA1ICBwNCB4MTEgeDEwICB4OSAgeDgKKworYnl0ZSAyOgorCisgICBiaXQgICA3ICAgNiAgIDUgICA0ICAgMyAgIDIgICAxICAgMAorICAgICAgICB4NyAgeDYgIHg1ICB4NCAgeDMgIHgyICB4MSAgeDAKKworICAgICAgICB4MTEuLngwID0gYWJzb2x1dGUgeCB2YWx1ZSAoaG9yaXpvbnRhbCkKKworYnl0ZSAzOgorCisgICBiaXQgICA3ICAgNiAgIDUgICA0ICAgMyAgIDIgICAxICAgMAorICAgICAgICAgMCAgIDAgIHcxICB3MCAgIDAgICAwICAgMSAgIDAKKworICAgICAgICAgdzMuLncwID0gd2lkdGggb2YgdGhlIGZpbmdlciB0b3VjaAorCitieXRlIDQ6CisKKyAgIGJpdCAgIDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwCisgICAgICAgIHAzICBwMSAgcDIgIHAwICB5MTEgeTEwIHk5ICB5OAorCisgICAgICAgIHA3Li5wMCA9IHByZXNzdXJlCisKK2J5dGUgNToKKworICAgYml0ICAgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAKKyAgICAgICAgeTcgIHk2ICB5NSAgeTQgIHkzICB5MiAgeTEgIHkwCisKKyAgICAgICAgeTExLi55MCA9IGFic29sdXRlIHkgdmFsdWUgKHZlcnRpY2FsKQorCis2LjIuMiBUd28gZmluZ2VyIHRvdWNoCisgICAgICB+fn5+fn5+fn5+fn5+fn5+CisKK1RoZSBwYWNrZXQgZm9ybWF0IGlzIGV4YWN0bHkgdGhlIHNhbWUgZm9yIHR3byBmaW5nZXIgdG91Y2gsIGV4Y2VwdCB0aGUgaGFyZHdhcmUKK3NlbmRzIHR3byA2IGJ5dGUgcGFja2V0cy4gVGhlIGZpcnN0IHBhY2tldCBjb250YWlucyBkYXRhIGZvciB0aGUgZmlyc3QgZmluZ2VyLAordGhlIHNlY29uZCBwYWNrZXQgaGFzIGRhdGEgZm9yIHRoZSBzZWNvbmQgZmluZ2VyLiBTbyBmb3IgdHdvIGZpbmdlciB0b3VjaCBhCit0b3RhbCBvZiAxMiBieXRlcyBhcmUgc2VudC4KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworNy4gSGFyZHdhcmUgdmVyc2lvbiA0CisgICA9PT09PT09PT09PT09PT09PT0KKworNy4xIFJlZ2lzdGVycworICAgIH5+fn5+fn5+fgorKiByZWdfMDcKKworICAgYml0ICAgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAKKyAgICAgICAgIDAgICAwICAgMCAgIDAgICAwICAgMCAgIDAgICBBCisKKyAgICAgICAgIEE6IDEgPSBlbmFibGUgYWJzb2x1dGUgdHJhY2tpbmcKKworNy4yIE5hdGl2ZSBhYnNvbHV0ZSBtb2RlIDYgYnl0ZSBwYWNrZXQgZm9ybWF0CisgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK3Y0IGhhcmR3YXJlIGlzIGEgdHJ1ZSBtdWx0aXRvdWNoIHRvdWNocGFkLCBjYXBhYmxlIG9mIHRyYWNraW5nIHVwIHRvIDUgZmluZ2Vycy4KK1VuZm9ydHVuYXRlbHksIGR1ZSB0byBQUy8yJ3MgbGltaXRlZCBiYW5kd2lkdGgsIGl0cyBwYWNrZXQgZm9ybWF0IGlzIHJhdGhlcgorY29tcGxleC4KKworV2hlbmV2ZXIgdGhlIG51bWJlcnMgb3IgaWRlbnRpdGllcyBvZiB0aGUgZmluZ2VycyBjaGFuZ2VzLCB0aGUgaGFyZHdhcmUgc2VuZHMgYQorc3RhdHVzIHBhY2tldCB0byBpbmRpY2F0ZSBob3cgbWFueSBhbmQgd2hpY2ggZmluZ2VycyBpcyBvbiB0b3VjaHBhZCwgZm9sbG93ZWQgYnkKK2hlYWQgcGFja2V0cyBvciBtb3Rpb24gcGFja2V0cy4gQSBoZWFkIHBhY2tldCBjb250YWlucyBkYXRhIG9mIGZpbmdlciBpZCwgZmluZ2VyCitwb3NpdGlvbiAoYWJzb2x1dGUgeCwgeSB2YWx1ZXMpLCB3aWR0aCwgYW5kIHByZXNzdXJlLiBBIG1vdGlvbiBwYWNrZXQgY29udGFpbnMKK3R3byBmaW5nZXJzJyBwb3NpdGlvbiBkZWx0YS4KKworRm9yIGV4YW1wbGUsIHdoZW4gc3RhdHVzIHBhY2tldCB0ZWxscyB0aGVyZSBhcmUgMiBmaW5nZXJzIG9uIHRvdWNocGFkLCB0aGVuIHdlCitjYW4gZXhwZWN0IHR3byBmb2xsb3dpbmcgaGVhZCBwYWNrZXRzLiBJZiB0aGUgZmluZ2VyIHN0YXR1cyBkb2Vzbid0IGNoYW5nZSwKK3RoZSBmb2xsb3dpbmcgcGFja2V0cyB3b3VsZCBiZSBtb3Rpb24gcGFja2V0cywgb25seSBzZW5kaW5nIGRlbHRhIG9mIGZpbmdlcgorcG9zaXRpb24sIHVudGlsIHdlIHJlY2VpdmUgYSBzdGF0dXMgcGFja2V0LgorCitPbmUgZXhjZXB0aW9uIGlzIG9uZSBmaW5nZXIgdG91Y2guIHdoZW4gYSBzdGF0dXMgcGFja2V0IHRlbGxzIHVzIHRoZXJlIGlzIG9ubHkKK29uZSBmaW5nZXIsIHRoZSBoYXJkd2FyZSB3b3VsZCBqdXN0IHNlbmQgaGVhZCBwYWNrZXRzIGFmdGVyd2FyZHMuCisKKzcuMi4xIFN0YXR1cyBwYWNrZXQKKyAgICAgIH5+fn5+fn5+fn5+fn4KKworYnl0ZSAwOgorCisgICBiaXQgICA3ICAgNiAgIDUgICA0ICAgMyAgIDIgICAxICAgMAorICAgICAgICAgLiAgIC4gICAuICAgLiAgIDAgICAxICAgUiAgIEwKKworICAgICAgICAgTCwgUiA9IDEgd2hlbiBMZWZ0LCBSaWdodCBtb3VzZSBidXR0b24gcHJlc3NlZAorCitieXRlIDE6CisKKyAgIGJpdCAgIDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwCisgICAgICAgICAuICAgLiAgIC4gZnQ0IGZ0MyBmdDIgZnQxIGZ0MAorCisgICAgICAgICBmdDQgZnQzIGZ0MiBmdDEgZnQwIGZ0biA9IDEgd2hlbiBmaW5nZXIgbiBpcyBvbiB0b3VjaHBhZAorCitieXRlIDI6IG5vdCB1c2VkCisKK2J5dGUgMzoKKworICAgYml0ICAgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAKKyAgICAgICAgIC4gICAuICAgLiAgIDEgICAwICAgMCAgIDAgICAwCisKKyAgICAgICAgIGNvbnN0YW50IGJpdHMKKworYnl0ZSA0OgorCisgICBiaXQgICA3ICAgNiAgIDUgICA0ICAgMyAgIDIgICAxICAgMAorICAgICAgICAgcCAgIC4gICAuICAgLiAgIC4gICAuICAgLiAgIC4KKworICAgICAgICAgcCA9IDEgZm9yIHBhbG0KKworYnl0ZSA1OiBub3QgdXNlZAorCis3LjIuMiBIZWFkIHBhY2tldAorICAgICAgfn5+fn5+fn5+fn4KKworYnl0ZSAwOgorCisgICBiaXQgICA3ICAgNiAgIDUgICA0ICAgMyAgIDIgICAxICAgMAorICAgICAgICB3MyAgdzIgIHcxICB3MCAgIDAgICAxICAgUiAgIEwKKworICAgICAgICBMLCBSID0gMSB3aGVuIExlZnQsIFJpZ2h0IG1vdXNlIGJ1dHRvbiBwcmVzc2VkCisgICAgICAgIHczLi53MCA9IGZpbmdlciB3aWR0aCAoc3BhbnMgaG93IG1hbnkgdHJhY2UgbGluZXMpCisKK2J5dGUgMToKKworICAgYml0ICAgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAKKyAgICAgICAgcDcgIHA2ICBwNSAgcDQgeDExIHgxMCAgeDkgIHg4CisKK2J5dGUgMjoKKworICAgYml0ICAgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAKKyAgICAgICAgeDcgIHg2ICB4NSAgeDQgIHgzICB4MiAgeDEgIHgwCisKKyAgICAgICAgeDExLi54MCA9IGFic29sdXRlIHggdmFsdWUgKGhvcml6b250YWwpCisKK2J5dGUgMzoKKworICAgYml0ICAgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAKKyAgICAgICBpZDIgaWQxIGlkMCAgIDEgICAwICAgMCAgIDAgICAxCisKKyAgICAgICBpZDIuLmlkMCA9IGZpbmdlciBpZAorCitieXRlIDQ6CisKKyAgIGJpdCAgIDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwCisgICAgICAgIHAzICBwMSAgcDIgIHAwICB5MTEgeTEwIHk5ICB5OAorCisgICAgICAgIHA3Li5wMCA9IHByZXNzdXJlCisKK2J5dGUgNToKKworICAgYml0ICAgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAKKyAgICAgICAgeTcgIHk2ICB5NSAgeTQgIHkzICB5MiAgeTEgIHkwCisKKyAgICAgICAgeTExLi55MCA9IGFic29sdXRlIHkgdmFsdWUgKHZlcnRpY2FsKQorCis3LjIuMyBNb3Rpb24gcGFja2V0CisgICAgICB+fn5+fn5+fn5+fn5+CisKK2J5dGUgMDoKKworICAgYml0ICAgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAKKyAgICAgICBpZDIgaWQxIGlkMCAgIHcgICAwICAgMSAgIFIgICBMCisKKyAgICAgICBMLCBSID0gMSB3aGVuIExlZnQsIFJpZ2h0IG1vdXNlIGJ1dHRvbiBwcmVzc2VkCisgICAgICAgaWQyLi5pZDAgPSBmaW5nZXIgaWQKKyAgICAgICB3ID0gMSB3aGVuIGRlbHRhIG92ZXJmbG93cyAoPiAxMjcgb3IgPCAtMTI4KSwgaW4gdGhpcyBjYXNlCisgICAgICAgZmlybXdhcmUgc2VuZHMgdXMgKGRlbHRhIHggLyA1KSBhbmQgKGRlbHRhIHkgIC8gNSkKKworYnl0ZSAxOgorCisgICBiaXQgICA3ICAgNiAgIDUgICA0ICAgMyAgIDIgICAxICAgMAorICAgICAgICB4NyAgeDYgIHg1ICB4NCAgeDMgIHgyICB4MSAgeDAKKworICAgICAgICB4Ny4ueDAgPSBkZWx0YSB4ICh0d28ncyBjb21wbGVtZW50KQorCitieXRlIDI6CisKKyAgIGJpdCAgIDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwCisgICAgICAgIHk3ICB5NiAgeTUgIHk0ICB5MyAgeTIgIHkxICB5MAorCisgICAgICAgIHk3Li55MCA9IGRlbHRhIHkgKHR3bydzIGNvbXBsZW1lbnQpCisKK2J5dGUgMzoKKworICAgYml0ICAgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAKKyAgICAgICBpZDIgaWQxIGlkMCAgIDEgICAwICAgMCAgIDEgICAwCisKKyAgICAgICBpZDIuLmlkMCA9IGZpbmdlciBpZAorCitieXRlIDQ6CisKKyAgIGJpdCAgIDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwCisgICAgICAgIHg3ICB4NiAgeDUgIHg0ICB4MyAgeDIgIHgxICB4MAorCisgICAgICAgIHg3Li54MCA9IGRlbHRhIHggKHR3bydzIGNvbXBsZW1lbnQpCisKK2J5dGUgNToKKworICAgYml0ICAgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAKKyAgICAgICAgeTcgIHk2ICB5NSAgeTQgIHkzICB5MiAgeTEgIHkwCisKKyAgICAgICAgeTcuLnkwID0gZGVsdGEgeSAodHdvJ3MgY29tcGxlbWVudCkKKworICAgICAgICBieXRlIDAgfiAyIGZvciBvbmUgZmluZ2VyCisgICAgICAgIGJ5dGUgMyB+IDUgZm9yIGFub3RoZXIKKworCis4LiBUcmFja3BvaW50IChmb3IgSGFyZHdhcmUgdmVyc2lvbiAzIGFuZCA0KQorICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzguMSBSZWdpc3RlcnMKKyAgICB+fn5+fn5+fn4KK05vIHNwZWNpYWwgcmVnaXN0ZXJzIGhhdmUgYmVlbiBpZGVudGlmaWVkLgorCis4LjIgTmF0aXZlIHJlbGF0aXZlIG1vZGUgNiBieXRlIHBhY2tldCBmb3JtYXQKKyAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorOC4yLjEgU3RhdHVzIFBhY2tldAorICAgICAgfn5+fn5+fn5+fn5+fgorCitieXRlIDA6CisgICBiaXQgICA3ICAgNiAgIDUgICA0ICAgMyAgIDIgICAxICAgMAorICAgICAgICAgMCAgIDAgIHN4ICBzeSAgIDAgICBNICAgUiAgIEwKK2J5dGUgMToKKyAgIGJpdCAgIDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwCisgICAgICAgfnN4ICAgMCAgIDAgICAwICAgMCAgIDAgICAwICAgMAorYnl0ZSAyOgorICAgYml0ICAgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAKKyAgICAgICB+c3kgICAwICAgMCAgIDAgICAwICAgMCAgIDAgICAwCitieXRlIDM6CisgICBiaXQgICA3ICAgNiAgIDUgICA0ICAgMyAgIDIgICAxICAgMAorICAgICAgICAgMCAgIDAgfnN5IH5zeCAgIDAgICAxICAgMSAgIDAKK2J5dGUgNDoKKyAgIGJpdCAgIDcgICA2ICAgNSAgIDQgICAzICAgMiAgIDEgICAwCisgICAgICAgIHg3ICB4NiAgeDUgIHg0ICB4MyAgeDIgIHgxICB4MAorYnl0ZSA1OgorICAgYml0ICAgNyAgIDYgICA1ICAgNCAgIDMgICAyICAgMSAgIDAKKyAgICAgICAgeTcgIHk2ICB5NSAgeTQgIHkzICB5MiAgeTEgIHkwCisKKworICAgICAgICAgeCBhbmQgeSBhcmUgd3JpdHRlbiBpbiB0d28ncyBjb21wbGVtZW50IHNwcmVhZAorICAgICAgICAgICAgIG92ZXIgOSBiaXRzIHdpdGggc3gvc3kgdGhlIHJlbGF0aXZlIHRvcCBiaXQgYW5kCisgICAgICAgICAgICAgeDcuLngwIGFuZCB5Ny4ueTAgdGhlIGxvd2VyIGJpdHMuCisJIH5zeCBpcyB0aGUgaW52ZXJzZSBvZiBzeCwgfnN5IGlzIHRoZSBpbnZlcnNlIG9mIHN5LgorICAgICAgICAgVGhlIHNpZ24gb2YgeSBpcyBvcHBvc2l0ZSB0byB3aGF0IHRoZSBpbnB1dCBkcml2ZXIKKyAgICAgICAgICAgICBleHBlY3RzIGZvciBhIHJlbGF0aXZlIG1vdmVtZW50CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lucHV0L2V2ZW50LWNvZGVzLnR4dCBiL0RvY3VtZW50YXRpb24vaW5wdXQvZXZlbnQtY29kZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmMGY1Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lucHV0L2V2ZW50LWNvZGVzLnR4dApAQCAtMCwwICsxLDM0OCBAQAorVGhlIGlucHV0IHByb3RvY29sIHVzZXMgYSBtYXAgb2YgdHlwZXMgYW5kIGNvZGVzIHRvIGV4cHJlc3MgaW5wdXQgZGV2aWNlIHZhbHVlcwordG8gdXNlcnNwYWNlLiBUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgdHlwZXMgYW5kIGNvZGVzIGFuZCBob3cgYW5kIHdoZW4gdGhleQorbWF5IGJlIHVzZWQuCisKK0Egc2luZ2xlIGhhcmR3YXJlIGV2ZW50IGdlbmVyYXRlcyBtdWx0aXBsZSBpbnB1dCBldmVudHMuIEVhY2ggaW5wdXQgZXZlbnQKK2NvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgYSBzaW5nbGUgZGF0YSBpdGVtLiBBIHNwZWNpYWwgZXZlbnQgdHlwZSwgRVZfU1lOLCBpcwordXNlZCB0byBzZXBhcmF0ZSBpbnB1dCBldmVudHMgaW50byBwYWNrZXRzIG9mIGlucHV0IGRhdGEgY2hhbmdlcyBvY2N1cnJpbmcgYXQKK3RoZSBzYW1lIG1vbWVudCBpbiB0aW1lLiBJbiB0aGUgZm9sbG93aW5nLCB0aGUgdGVybSAiZXZlbnQiIHJlZmVycyB0byBhIHNpbmdsZQoraW5wdXQgZXZlbnQgZW5jb21wYXNzaW5nIGEgdHlwZSwgY29kZSwgYW5kIHZhbHVlLgorCitUaGUgaW5wdXQgcHJvdG9jb2wgaXMgYSBzdGF0ZWZ1bCBwcm90b2NvbC4gRXZlbnRzIGFyZSBlbWl0dGVkIG9ubHkgd2hlbiB2YWx1ZXMKK29mIGV2ZW50IGNvZGVzIGhhdmUgY2hhbmdlZC4gSG93ZXZlciwgdGhlIHN0YXRlIGlzIG1haW50YWluZWQgd2l0aGluIHRoZSBMaW51eAoraW5wdXQgc3Vic3lzdGVtOyBkcml2ZXJzIGRvIG5vdCBuZWVkIHRvIG1haW50YWluIHRoZSBzdGF0ZSBhbmQgbWF5IGF0dGVtcHQgdG8KK2VtaXQgdW5jaGFuZ2VkIHZhbHVlcyB3aXRob3V0IGhhcm0uIFVzZXJzcGFjZSBtYXkgb2J0YWluIHRoZSBjdXJyZW50IHN0YXRlIG9mCitldmVudCBjb2RlIHZhbHVlcyB1c2luZyB0aGUgRVZJT0NHKiBpb2N0bHMgZGVmaW5lZCBpbiBsaW51eC9pbnB1dC5oLiBUaGUgZXZlbnQKK3JlcG9ydHMgc3VwcG9ydGVkIGJ5IGEgZGV2aWNlIGFyZSBhbHNvIHByb3ZpZGVkIGJ5IHN5c2ZzIGluCitjbGFzcy9pbnB1dC9ldmVudCovZGV2aWNlL2NhcGFiaWxpdGllcy8sIGFuZCB0aGUgcHJvcGVydGllcyBvZiBhIGRldmljZSBhcmUKK3Byb3ZpZGVkIGluIGNsYXNzL2lucHV0L2V2ZW50Ki9kZXZpY2UvcHJvcGVydGllcy4KKworRXZlbnQgdHlwZXM6Cis9PT09PT09PT09PQorRXZlbnQgdHlwZXMgYXJlIGdyb3VwaW5ncyBvZiBjb2RlcyB1bmRlciBhIGxvZ2ljYWwgaW5wdXQgY29uc3RydWN0LiBFYWNoCit0eXBlIGhhcyBhIHNldCBvZiBhcHBsaWNhYmxlIGNvZGVzIHRvIGJlIHVzZWQgaW4gZ2VuZXJhdGluZyBldmVudHMuIFNlZSB0aGUKK0NvZGVzIHNlY3Rpb24gZm9yIGRldGFpbHMgb24gdmFsaWQgY29kZXMgZm9yIGVhY2ggdHlwZS4KKworKiBFVl9TWU46CisgIC0gVXNlZCBhcyBtYXJrZXJzIHRvIHNlcGFyYXRlIGV2ZW50cy4gRXZlbnRzIG1heSBiZSBzZXBhcmF0ZWQgaW4gdGltZSBvciBpbgorICAgIHNwYWNlLCBzdWNoIGFzIHdpdGggdGhlIG11bHRpdG91Y2ggcHJvdG9jb2wuCisKKyogRVZfS0VZOgorICAtIFVzZWQgdG8gZGVzY3JpYmUgc3RhdGUgY2hhbmdlcyBvZiBrZXlib2FyZHMsIGJ1dHRvbnMsIG9yIG90aGVyIGtleS1saWtlCisgICAgZGV2aWNlcy4KKworKiBFVl9SRUw6CisgIC0gVXNlZCB0byBkZXNjcmliZSByZWxhdGl2ZSBheGlzIHZhbHVlIGNoYW5nZXMsIGUuZy4gbW92aW5nIHRoZSBtb3VzZSA1IHVuaXRzCisgICAgdG8gdGhlIGxlZnQuCisKKyogRVZfQUJTOgorICAtIFVzZWQgdG8gZGVzY3JpYmUgYWJzb2x1dGUgYXhpcyB2YWx1ZSBjaGFuZ2VzLCBlLmcuIGRlc2NyaWJpbmcgdGhlCisgICAgY29vcmRpbmF0ZXMgb2YgYSB0b3VjaCBvbiBhIHRvdWNoc2NyZWVuLgorCisqIEVWX01TQzoKKyAgLSBVc2VkIHRvIGRlc2NyaWJlIG1pc2NlbGxhbmVvdXMgaW5wdXQgZGF0YSB0aGF0IGRvIG5vdCBmaXQgaW50byBvdGhlciB0eXBlcy4KKworKiBFVl9TVzoKKyAgLSBVc2VkIHRvIGRlc2NyaWJlIGJpbmFyeSBzdGF0ZSBpbnB1dCBzd2l0Y2hlcy4KKworKiBFVl9MRUQ6CisgIC0gVXNlZCB0byB0dXJuIExFRHMgb24gZGV2aWNlcyBvbiBhbmQgb2ZmLgorCisqIEVWX1NORDoKKyAgLSBVc2VkIHRvIG91dHB1dCBzb3VuZCB0byBkZXZpY2VzLgorCisqIEVWX1JFUDoKKyAgLSBVc2VkIGZvciBhdXRvcmVwZWF0aW5nIGRldmljZXMuCisKKyogRVZfRkY6CisgIC0gVXNlZCB0byBzZW5kIGZvcmNlIGZlZWRiYWNrIGNvbW1hbmRzIHRvIGFuIGlucHV0IGRldmljZS4KKworKiBFVl9QV1I6CisgIC0gQSBzcGVjaWFsIHR5cGUgZm9yIHBvd2VyIGJ1dHRvbiBhbmQgc3dpdGNoIGlucHV0LgorCisqIEVWX0ZGX1NUQVRVUzoKKyAgLSBVc2VkIHRvIHJlY2VpdmUgZm9yY2UgZmVlZGJhY2sgZGV2aWNlIHN0YXR1cy4KKworRXZlbnQgY29kZXM6Cis9PT09PT09PT09PQorRXZlbnQgY29kZXMgZGVmaW5lIHRoZSBwcmVjaXNlIHR5cGUgb2YgZXZlbnQuCisKK0VWX1NZTjoKKy0tLS0tLS0tLS0KK0VWX1NZTiBldmVudCB2YWx1ZXMgYXJlIHVuZGVmaW5lZC4gVGhlaXIgdXNhZ2UgaXMgZGVmaW5lZCBvbmx5IGJ5IHdoZW4gdGhleSBhcmUKK3NlbnQgaW4gdGhlIGV2ZGV2IGV2ZW50IHN0cmVhbS4KKworKiBTWU5fUkVQT1JUOgorICAtIFVzZWQgdG8gc3luY2hyb25pemUgYW5kIHNlcGFyYXRlIGV2ZW50cyBpbnRvIHBhY2tldHMgb2YgaW5wdXQgZGF0YSBjaGFuZ2VzCisgICAgb2NjdXJyaW5nIGF0IHRoZSBzYW1lIG1vbWVudCBpbiB0aW1lLiBGb3IgZXhhbXBsZSwgbW90aW9uIG9mIGEgbW91c2UgbWF5IHNldAorICAgIHRoZSBSRUxfWCBhbmQgUkVMX1kgdmFsdWVzIGZvciBvbmUgbW90aW9uLCB0aGVuIGVtaXQgYSBTWU5fUkVQT1JULiBUaGUgbmV4dAorICAgIG1vdGlvbiB3aWxsIGVtaXQgbW9yZSBSRUxfWCBhbmQgUkVMX1kgdmFsdWVzIGFuZCBzZW5kIGFub3RoZXIgU1lOX1JFUE9SVC4KKworKiBTWU5fQ09ORklHOgorICAtIFRCRAorCisqIFNZTl9NVF9SRVBPUlQ6CisgIC0gVXNlZCB0byBzeW5jaHJvbml6ZSBhbmQgc2VwYXJhdGUgdG91Y2ggZXZlbnRzLiBTZWUgdGhlCisgICAgbXVsdGktdG91Y2gtcHJvdG9jb2wudHh0IGRvY3VtZW50IGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisqIFNZTl9EUk9QUEVEOgorICAtIFVzZWQgdG8gaW5kaWNhdGUgYnVmZmVyIG92ZXJydW4gaW4gdGhlIGV2ZGV2IGNsaWVudCdzIGV2ZW50IHF1ZXVlLgorICAgIENsaWVudCBzaG91bGQgaWdub3JlIGFsbCBldmVudHMgdXAgdG8gYW5kIGluY2x1ZGluZyBuZXh0IFNZTl9SRVBPUlQKKyAgICBldmVudCBhbmQgcXVlcnkgdGhlIGRldmljZSAodXNpbmcgRVZJT0NHKiBpb2N0bHMpIHRvIG9idGFpbiBpdHMKKyAgICBjdXJyZW50IHN0YXRlLgorCitFVl9LRVk6CistLS0tLS0tLS0tCitFVl9LRVkgZXZlbnRzIHRha2UgdGhlIGZvcm0gS0VZXzxuYW1lPiBvciBCVE5fPG5hbWU+LiBGb3IgZXhhbXBsZSwgS0VZX0EgaXMgdXNlZAordG8gcmVwcmVzZW50IHRoZSAnQScga2V5IG9uIGEga2V5Ym9hcmQuIFdoZW4gYSBrZXkgaXMgZGVwcmVzc2VkLCBhbiBldmVudCB3aXRoCit0aGUga2V5J3MgY29kZSBpcyBlbWl0dGVkIHdpdGggdmFsdWUgMS4gV2hlbiB0aGUga2V5IGlzIHJlbGVhc2VkLCBhbiBldmVudCBpcworZW1pdHRlZCB3aXRoIHZhbHVlIDAuIFNvbWUgaGFyZHdhcmUgc2VuZCBldmVudHMgd2hlbiBhIGtleSBpcyByZXBlYXRlZC4gVGhlc2UKK2V2ZW50cyBoYXZlIGEgdmFsdWUgb2YgMi4gSW4gZ2VuZXJhbCwgS0VZXzxuYW1lPiBpcyB1c2VkIGZvciBrZXlib2FyZCBrZXlzLCBhbmQKK0JUTl88bmFtZT4gaXMgdXNlZCBmb3Igb3RoZXIgdHlwZXMgb2YgbW9tZW50YXJ5IHN3aXRjaCBldmVudHMuCisKK0EgZmV3IEVWX0tFWSBjb2RlcyBoYXZlIHNwZWNpYWwgbWVhbmluZ3M6CisKKyogQlROX1RPT0xfPG5hbWU+OgorICAtIFRoZXNlIGNvZGVzIGFyZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggaW5wdXQgdHJhY2twYWRzLCB0YWJsZXRzLCBhbmQKKyAgICB0b3VjaHNjcmVlbnMuIFRoZXNlIGRldmljZXMgbWF5IGJlIHVzZWQgd2l0aCBmaW5nZXJzLCBwZW5zLCBvciBvdGhlciB0b29scy4KKyAgICBXaGVuIGFuIGV2ZW50IG9jY3VycyBhbmQgYSB0b29sIGlzIHVzZWQsIHRoZSBjb3JyZXNwb25kaW5nIEJUTl9UT09MXzxuYW1lPgorICAgIGNvZGUgc2hvdWxkIGJlIHNldCB0byBhIHZhbHVlIG9mIDEuIFdoZW4gdGhlIHRvb2wgaXMgbm8gbG9uZ2VyIGludGVyYWN0aW5nCisgICAgd2l0aCB0aGUgaW5wdXQgZGV2aWNlLCB0aGUgQlROX1RPT0xfPG5hbWU+IGNvZGUgc2hvdWxkIGJlIHJlc2V0IHRvIDAuIEFsbAorICAgIHRyYWNrcGFkcywgdGFibGV0cywgYW5kIHRvdWNoc2NyZWVucyBzaG91bGQgdXNlIGF0IGxlYXN0IG9uZSBCVE5fVE9PTF88bmFtZT4KKyAgICBjb2RlIHdoZW4gZXZlbnRzIGFyZSBnZW5lcmF0ZWQuCisKKyogQlROX1RPVUNIOgorICAgIEJUTl9UT1VDSCBpcyB1c2VkIGZvciB0b3VjaCBjb250YWN0LiBXaGlsZSBhbiBpbnB1dCB0b29sIGlzIGRldGVybWluZWQgdG8gYmUKKyAgICB3aXRoaW4gbWVhbmluZ2Z1bCBwaHlzaWNhbCBjb250YWN0LCB0aGUgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eSBtdXN0IGJlIHNldAorICAgIHRvIDEuIE1lYW5pbmdmdWwgcGh5c2ljYWwgY29udGFjdCBtYXkgbWVhbiBhbnkgY29udGFjdCwgb3IgaXQgbWF5IG1lYW4KKyAgICBjb250YWN0IGNvbmRpdGlvbmVkIGJ5IGFuIGltcGxlbWVudGF0aW9uIGRlZmluZWQgcHJvcGVydHkuIEZvciBleGFtcGxlLCBhCisgICAgdG91Y2hwYWQgbWF5IHNldCB0aGUgdmFsdWUgdG8gMSBvbmx5IHdoZW4gdGhlIHRvdWNoIHByZXNzdXJlIHJpc2VzIGFib3ZlIGEKKyAgICBjZXJ0YWluIHZhbHVlLiBCVE5fVE9VQ0ggbWF5IGJlIGNvbWJpbmVkIHdpdGggQlROX1RPT0xfPG5hbWU+IGNvZGVzLiBGb3IKKyAgICBleGFtcGxlLCBhIHBlbiB0YWJsZXQgbWF5IHNldCBCVE5fVE9PTF9QRU4gdG8gMSBhbmQgQlROX1RPVUNIIHRvIDAgd2hpbGUgdGhlCisgICAgcGVuIGlzIGhvdmVyaW5nIG92ZXIgYnV0IG5vdCB0b3VjaGluZyB0aGUgdGFibGV0IHN1cmZhY2UuCisKK05vdGU6IEZvciBhcHByb3ByaWF0ZSBmdW5jdGlvbiBvZiB0aGUgbGVnYWN5IG1vdXNlZGV2IGVtdWxhdGlvbiBkcml2ZXIsCitCVE5fVE9VQ0ggbXVzdCBiZSB0aGUgZmlyc3QgZXZkZXYgY29kZSBlbWl0dGVkIGluIGEgc3luY2hyb25pemF0aW9uIGZyYW1lLgorCitOb3RlOiBIaXN0b3JpY2FsbHkgYSB0b3VjaCBkZXZpY2Ugd2l0aCBCVE5fVE9PTF9GSU5HRVIgYW5kIEJUTl9UT1VDSCB3YXMKK2ludGVycHJldGVkIGFzIGEgdG91Y2hwYWQgYnkgdXNlcnNwYWNlLCB3aGlsZSBhIHNpbWlsYXIgZGV2aWNlIHdpdGhvdXQKK0JUTl9UT09MX0ZJTkdFUiB3YXMgaW50ZXJwcmV0ZWQgYXMgYSB0b3VjaHNjcmVlbi4gRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5Cit3aXRoIGN1cnJlbnQgdXNlcnNwYWNlIGl0IGlzIHJlY29tbWVuZGVkIHRvIGZvbGxvdyB0aGlzIGRpc3RpbmN0aW9uLiBJbiB0aGUKK2Z1dHVyZSwgdGhpcyBkaXN0aW5jdGlvbiB3aWxsIGJlIGRlcHJlY2F0ZWQgYW5kIHRoZSBkZXZpY2UgcHJvcGVydGllcyBpb2N0bAorRVZJT0NHUFJPUCwgZGVmaW5lZCBpbiBsaW51eC9pbnB1dC5oLCB3aWxsIGJlIHVzZWQgdG8gY29udmV5IHRoZSBkZXZpY2UgdHlwZS4KKworKiBCVE5fVE9PTF9GSU5HRVIsIEJUTl9UT09MX0RPVUJMRVRBUCwgQlROX1RPT0xfVFJJUExFVEFQLCBCVE5fVE9PTF9RVUFEVEFQOgorICAtIFRoZXNlIGNvZGVzIGRlbm90ZSBvbmUsIHR3bywgdGhyZWUsIGFuZCBmb3VyIGZpbmdlciBpbnRlcmFjdGlvbiBvbiBhCisgICAgdHJhY2twYWQgb3IgdG91Y2hzY3JlZW4uIEZvciBleGFtcGxlLCBpZiB0aGUgdXNlciB1c2VzIHR3byBmaW5nZXJzIGFuZCBtb3ZlcworICAgIHRoZW0gb24gdGhlIHRvdWNocGFkIGluIGFuIGVmZm9ydCB0byBzY3JvbGwgY29udGVudCBvbiBzY3JlZW4sCisgICAgQlROX1RPT0xfRE9VQkxFVEFQIHNob3VsZCBiZSBzZXQgdG8gdmFsdWUgMSBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBtb3Rpb24uCisgICAgTm90ZSB0aGF0IGFsbCBCVE5fVE9PTF88bmFtZT4gY29kZXMgYW5kIHRoZSBCVE5fVE9VQ0ggY29kZSBhcmUgb3J0aG9nb25hbCBpbgorICAgIHB1cnBvc2UuIEEgdHJhY2twYWQgZXZlbnQgZ2VuZXJhdGVkIGJ5IGZpbmdlciB0b3VjaGVzIHNob3VsZCBnZW5lcmF0ZSBldmVudHMKKyAgICBmb3Igb25lIGNvZGUgZnJvbSBlYWNoIGdyb3VwLiBBdCBtb3N0IG9ubHkgb25lIG9mIHRoZXNlIEJUTl9UT09MXzxuYW1lPgorICAgIGNvZGVzIHNob3VsZCBoYXZlIGEgdmFsdWUgb2YgMSBkdXJpbmcgYW55IHN5bmNocm9uaXphdGlvbiBmcmFtZS4KKworTm90ZTogSGlzdG9yaWNhbGx5IHNvbWUgZHJpdmVycyBlbWl0dGVkIG11bHRpcGxlIG9mIHRoZSBmaW5nZXIgY291bnQgY29kZXMgd2l0aAorYSB2YWx1ZSBvZiAxIGluIHRoZSBzYW1lIHN5bmNocm9uaXphdGlvbiBmcmFtZS4gVGhpcyB1c2FnZSBpcyBkZXByZWNhdGVkLgorCitOb3RlOiBJbiBtdWx0aXRvdWNoIGRyaXZlcnMsIHRoZSBpbnB1dF9tdF9yZXBvcnRfZmluZ2VyX2NvdW50KCkgZnVuY3Rpb24gc2hvdWxkCitiZSB1c2VkIHRvIGVtaXQgdGhlc2UgY29kZXMuIFBsZWFzZSBzZWUgbXVsdGktdG91Y2gtcHJvdG9jb2wudHh0IGZvciBkZXRhaWxzLgorCitFVl9SRUw6CistLS0tLS0tLS0tCitFVl9SRUwgZXZlbnRzIGRlc2NyaWJlIHJlbGF0aXZlIGNoYW5nZXMgaW4gYSBwcm9wZXJ0eS4gRm9yIGV4YW1wbGUsIGEgbW91c2UgbWF5Cittb3ZlIHRvIHRoZSBsZWZ0IGJ5IGEgY2VydGFpbiBudW1iZXIgb2YgdW5pdHMsIGJ1dCBpdHMgYWJzb2x1dGUgcG9zaXRpb24gaW4KK3NwYWNlIGlzIHVua25vd24uIElmIHRoZSBhYnNvbHV0ZSBwb3NpdGlvbiBpcyBrbm93biwgRVZfQUJTIGNvZGVzIHNob3VsZCBiZSB1c2VkCitpbnN0ZWFkIG9mIEVWX1JFTCBjb2Rlcy4KKworQSBmZXcgRVZfUkVMIGNvZGVzIGhhdmUgc3BlY2lhbCBtZWFuaW5nczoKKworKiBSRUxfV0hFRUwsIFJFTF9IV0hFRUw6CisgIC0gVGhlc2UgY29kZXMgYXJlIHVzZWQgZm9yIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHNjcm9sbCB3aGVlbHMsCisgICAgcmVzcGVjdGl2ZWx5LgorCitFVl9BQlM6CistLS0tLS0tLS0tCitFVl9BQlMgZXZlbnRzIGRlc2NyaWJlIGFic29sdXRlIGNoYW5nZXMgaW4gYSBwcm9wZXJ0eS4gRm9yIGV4YW1wbGUsIGEgdG91Y2hwYWQKK21heSBlbWl0IGNvb3JkaW5hdGVzIGZvciBhIHRvdWNoIGxvY2F0aW9uLgorCitBIGZldyBFVl9BQlMgY29kZXMgaGF2ZSBzcGVjaWFsIG1lYW5pbmdzOgorCisqIEFCU19ESVNUQU5DRToKKyAgLSBVc2VkIHRvIGRlc2NyaWJlIHRoZSBkaXN0YW5jZSBvZiBhIHRvb2wgZnJvbSBhbiBpbnRlcmFjdGlvbiBzdXJmYWNlLiBUaGlzCisgICAgZXZlbnQgc2hvdWxkIG9ubHkgYmUgZW1pdHRlZCB3aGlsZSB0aGUgdG9vbCBpcyBob3ZlcmluZywgbWVhbmluZyBpbiBjbG9zZQorICAgIHByb3hpbWl0eSBvZiB0aGUgZGV2aWNlIGFuZCB3aGlsZSB0aGUgdmFsdWUgb2YgdGhlIEJUTl9UT1VDSCBjb2RlIGlzIDAuIElmCisgICAgdGhlIGlucHV0IGRldmljZSBtYXkgYmUgdXNlZCBmcmVlbHkgaW4gdGhyZWUgZGltZW5zaW9ucywgY29uc2lkZXIgQUJTX1oKKyAgICBpbnN0ZWFkLgorCisqIEFCU19NVF88bmFtZT46CisgIC0gVXNlZCB0byBkZXNjcmliZSBtdWx0aXRvdWNoIGlucHV0IGV2ZW50cy4gUGxlYXNlIHNlZQorICAgIG11bHRpLXRvdWNoLXByb3RvY29sLnR4dCBmb3IgZGV0YWlscy4KKworRVZfU1c6CistLS0tLS0tLS0tCitFVl9TVyBldmVudHMgZGVzY3JpYmUgc3RhdGVmdWwgYmluYXJ5IHN3aXRjaGVzLiBGb3IgZXhhbXBsZSwgdGhlIFNXX0xJRCBjb2RlIGlzCit1c2VkIHRvIGRlbm90ZSB3aGVuIGEgbGFwdG9wIGxpZCBpcyBjbG9zZWQuCisKK1Vwb24gYmluZGluZyB0byBhIGRldmljZSBvciByZXN1bWluZyBmcm9tIHN1c3BlbmQsIGEgZHJpdmVyIG11c3QgcmVwb3J0Cit0aGUgY3VycmVudCBzd2l0Y2ggc3RhdGUuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBkZXZpY2UsIGtlcm5lbCwgYW5kIHVzZXJzcGFjZQorc3RhdGUgaXMgaW4gc3luYy4KKworVXBvbiByZXN1bWUsIGlmIHRoZSBzd2l0Y2ggc3RhdGUgaXMgdGhlIHNhbWUgYXMgYmVmb3JlIHN1c3BlbmQsIHRoZW4gdGhlIGlucHV0CitzdWJzeXN0ZW0gd2lsbCBmaWx0ZXIgb3V0IHRoZSBkdXBsaWNhdGUgc3dpdGNoIHN0YXRlIHJlcG9ydHMuIFRoZSBkcml2ZXIgZG9lcworbm90IG5lZWQgdG8ga2VlcCB0aGUgc3RhdGUgb2YgdGhlIHN3aXRjaCBhdCBhbnkgdGltZS4KKworRVZfTVNDOgorLS0tLS0tLS0tLQorRVZfTVNDIGV2ZW50cyBhcmUgdXNlZCBmb3IgaW5wdXQgYW5kIG91dHB1dCBldmVudHMgdGhhdCBkbyBub3QgZmFsbCB1bmRlciBvdGhlcgorY2F0ZWdvcmllcy4KKworQSBmZXcgRVZfTVNDIGNvZGVzIGhhdmUgc3BlY2lhbCBtZWFuaW5nOgorCisqIE1TQ19USU1FU1RBTVA6CisgIC0gVXNlZCB0byByZXBvcnQgdGhlIG51bWJlciBvZiBtaWNyb3NlY29uZHMgc2luY2UgdGhlIGxhc3QgcmVzZXQuIFRoaXMgZXZlbnQKKyAgICBzaG91bGQgYmUgY29kZWQgYXMgYW4gdWludDMyIHZhbHVlLCB3aGljaCBpcyBhbGxvd2VkIHRvIHdyYXAgYXJvdW5kIHdpdGgKKyAgICBubyBzcGVjaWFsIGNvbnNlcXVlbmNlLiBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlIHRpbWUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3bworICAgIGNvbnNlY3V0aXZlIGV2ZW50cyBpcyByZWxpYWJsZSBvbiBhIHJlYXNvbmFibGUgdGltZSBzY2FsZSAoaG91cnMpLgorICAgIEEgcmVzZXQgdG8gemVybyBjYW4gaGFwcGVuLCBpbiB3aGljaCBjYXNlIHRoZSB0aW1lIHNpbmNlIHRoZSBsYXN0IGV2ZW50IGlzCisgICAgdW5rbm93bi4gIElmIHRoZSBkZXZpY2UgZG9lcyBub3QgcHJvdmlkZSB0aGlzIGluZm9ybWF0aW9uLCB0aGUgZHJpdmVyIG11c3QKKyAgICBub3QgcHJvdmlkZSBpdCB0byB1c2VyIHNwYWNlLgorCitFVl9MRUQ6CistLS0tLS0tLS0tCitFVl9MRUQgZXZlbnRzIGFyZSB1c2VkIGZvciBpbnB1dCBhbmQgb3V0cHV0IHRvIHNldCBhbmQgcXVlcnkgdGhlIHN0YXRlIG9mCit2YXJpb3VzIExFRHMgb24gZGV2aWNlcy4KKworRVZfUkVQOgorLS0tLS0tLS0tLQorRVZfUkVQIGV2ZW50cyBhcmUgdXNlZCBmb3Igc3BlY2lmeWluZyBhdXRvcmVwZWF0aW5nIGV2ZW50cy4KKworRVZfU05EOgorLS0tLS0tLS0tLQorRVZfU05EIGV2ZW50cyBhcmUgdXNlZCBmb3Igc2VuZGluZyBzb3VuZCBjb21tYW5kcyB0byBzaW1wbGUgc291bmQgb3V0cHV0CitkZXZpY2VzLgorCitFVl9GRjoKKy0tLS0tLS0tLS0KK0VWX0ZGIGV2ZW50cyBhcmUgdXNlZCB0byBpbml0aWFsaXplIGEgZm9yY2UgZmVlZGJhY2sgY2FwYWJsZSBkZXZpY2UgYW5kIHRvIGNhdXNlCitzdWNoIGRldmljZSB0byBmZWVkYmFjay4KKworRVZfUFdSOgorLS0tLS0tLS0tLQorRVZfUFdSIGV2ZW50cyBhcmUgYSBzcGVjaWFsIHR5cGUgb2YgZXZlbnQgdXNlZCBzcGVjaWZpY2FsbHkgZm9yIHBvd2VyCittYW5hZ2VtZW50LiBJdHMgdXNhZ2UgaXMgbm90IHdlbGwgZGVmaW5lZC4gVG8gYmUgYWRkcmVzc2VkIGxhdGVyLgorCitEZXZpY2UgcHJvcGVydGllczoKKz09PT09PT09PT09PT09PT09CitOb3JtYWxseSwgdXNlcnNwYWNlIHNldHMgdXAgYW4gaW5wdXQgZGV2aWNlIGJhc2VkIG9uIHRoZSBkYXRhIGl0IGVtaXRzLAoraS5lLiwgdGhlIGV2ZW50IHR5cGVzLiBJbiB0aGUgY2FzZSBvZiB0d28gZGV2aWNlcyBlbWl0dGluZyB0aGUgc2FtZSBldmVudAordHlwZXMsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gY2FuIGJlIHByb3ZpZGVkIGluIHRoZSBmb3JtIG9mIGRldmljZQorcHJvcGVydGllcy4KKworSU5QVVRfUFJPUF9ESVJFQ1QgKyBJTlBVVF9QUk9QX1BPSU5URVI6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIElOUFVUX1BST1BfRElSRUNUIHByb3BlcnR5IGluZGljYXRlcyB0aGF0IGRldmljZSBjb29yZGluYXRlcyBzaG91bGQgYmUKK2RpcmVjdGx5IG1hcHBlZCB0byBzY3JlZW4gY29vcmRpbmF0ZXMgKG5vdCB0YWtpbmcgaW50byBhY2NvdW50IHRyaXZpYWwKK3RyYW5zZm9ybWF0aW9ucywgc3VjaCBhcyBzY2FsaW5nLCBmbGlwcGluZyBhbmQgcm90YXRpbmcpLiBOb24tZGlyZWN0IGlucHV0CitkZXZpY2VzIHJlcXVpcmUgbm9uLXRyaXZpYWwgdHJhbnNmb3JtYXRpb24sIHN1Y2ggYXMgYWJzb2x1dGUgdG8gcmVsYXRpdmUKK3RyYW5zZm9ybWF0aW9uIGZvciB0b3VjaHBhZHMuIFR5cGljYWwgZGlyZWN0IGlucHV0IGRldmljZXM6IHRvdWNoc2NyZWVucywKK2RyYXdpbmcgdGFibGV0czsgbm9uLWRpcmVjdCBkZXZpY2VzOiB0b3VjaHBhZHMsIG1pY2UuCisKK1RoZSBJTlBVVF9QUk9QX1BPSU5URVIgcHJvcGVydHkgaW5kaWNhdGVzIHRoYXQgdGhlIGRldmljZSBpcyBub3QgdHJhbnNwb3NlZAorb24gdGhlIHNjcmVlbiBhbmQgdGh1cyByZXF1aXJlcyB1c2Ugb2YgYW4gb24tc2NyZWVuIHBvaW50ZXIgdG8gdHJhY2UgdXNlcidzCittb3ZlbWVudHMuICBUeXBpY2FsIHBvaW50ZXIgZGV2aWNlczogdG91Y2hwYWRzLCB0YWJsZXRzLCBtaWNlOyBub24tcG9pbnRlcgorZGV2aWNlOiB0b3VjaHNjcmVlbi4KKworSWYgbmVpdGhlciBJTlBVVF9QUk9QX0RJUkVDVCBvciBJTlBVVF9QUk9QX1BPSU5URVIgYXJlIHNldCwgdGhlIHByb3BlcnR5IGlzCitjb25zaWRlcmVkIHVuZGVmaW5lZCBhbmQgdGhlIGRldmljZSB0eXBlIHNob3VsZCBiZSBkZWR1Y2VkIGluIHRoZQordHJhZGl0aW9uYWwgd2F5LCB1c2luZyBlbWl0dGVkIGV2ZW50IHR5cGVzLgorCitJTlBVVF9QUk9QX0JVVFRPTlBBRDoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCitGb3IgdG91Y2hwYWRzIHdoZXJlIHRoZSBidXR0b24gaXMgcGxhY2VkIGJlbmVhdGggdGhlIHN1cmZhY2UsIHN1Y2ggdGhhdAorcHJlc3NpbmcgZG93biBvbiB0aGUgcGFkIGNhdXNlcyBhIGJ1dHRvbiBjbGljaywgdGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUKK3NldC4gQ29tbW9uIGluIGNsaWNrcGFkIG5vdGVib29rcyBhbmQgbWFjYm9va3MgZnJvbSAyMDA5IGFuZCBvbndhcmRzLgorCitPcmlnaW5hbGx5LCB0aGUgYnV0dG9ucGFkIHByb3BlcnR5IHdhcyBjb2RlZCBpbnRvIHRoZSBiY201OTc0IGRyaXZlcgordmVyc2lvbiBmaWVsZCB1bmRlciB0aGUgbmFtZSBpbnRlZ3JhdGVkIGJ1dHRvbi4gRm9yIGJhY2t3YXJkcworY29tcGF0aWJpbGl0eSwgYm90aCBtZXRob2RzIG5lZWQgdG8gYmUgY2hlY2tlZCBpbiB1c2Vyc3BhY2UuCisKK0lOUFVUX1BST1BfU0VNSV9NVDoKKy0tLS0tLS0tLS0tLS0tLS0tLQorU29tZSB0b3VjaHBhZHMsIG1vc3QgY29tbW9uIGJldHdlZW4gMjAwOCBhbmQgMjAxMSwgY2FuIGRldGVjdCB0aGUgcHJlc2VuY2UKK29mIG11bHRpcGxlIGNvbnRhY3RzIHdpdGhvdXQgcmVzb2x2aW5nIHRoZSBpbmRpdmlkdWFsIHBvc2l0aW9uczsgb25seSB0aGUKK251bWJlciBvZiBjb250YWN0cyBhbmQgYSByZWN0YW5ndWxhciBzaGFwZSBpcyBrbm93bi4gRm9yIHN1Y2gKK3RvdWNocGFkcywgdGhlIHNlbWktbXQgcHJvcGVydHkgc2hvdWxkIGJlIHNldC4KKworRGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UsIHRoZSByZWN0YW5nbGUgbWF5IGVuY2xvc2UgYWxsIHRvdWNoZXMsIGxpa2UgYQorYm91bmRpbmcgYm94LCBvciBqdXN0IHNvbWUgb2YgdGhlbSwgZm9yIGluc3RhbmNlIHRoZSB0d28gbW9zdCByZWNlbnQKK3RvdWNoZXMuIFRoZSBkaXZlcnNpdHkgbWFrZXMgdGhlIHJlY3RhbmdsZSBvZiBsaW1pdGVkIHVzZSwgYnV0IHNvbWUKK2dlc3R1cmVzIGNhbiBub3JtYWxseSBiZSBleHRyYWN0ZWQgZnJvbSBpdC4KKworSWYgSU5QVVRfUFJPUF9TRU1JX01UIGlzIG5vdCBzZXQsIHRoZSBkZXZpY2UgaXMgYXNzdW1lZCB0byBiZSBhIHRydWUgTVQKK2RldmljZS4KKworSU5QVVRfUFJPUF9UT1BCVVRUT05QQUQ6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU29tZSBsYXB0b3BzLCBtb3N0IG5vdGFibHkgdGhlIExlbm92byAqNDAgc2VyaWVzIHByb3ZpZGUgYSB0cmFja3N0aWNrCitkZXZpY2UgYnV0IGRvIG5vdCBoYXZlIHBoeXNpY2FsIGJ1dHRvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSB0cmFja3N0aWNrCitkZXZpY2UuIEluc3RlYWQsIHRoZSB0b3AgYXJlYSBvZiB0aGUgdG91Y2hwYWQgaXMgbWFya2VkIHRvIHNob3cKK3Zpc3VhbC9oYXB0aWMgYXJlYXMgZm9yIGxlZnQsIG1pZGRsZSwgcmlnaHQgYnV0dG9ucyBpbnRlbmRlZCB0byBiZSB1c2VkCit3aXRoIHRoZSB0cmFja3N0aWNrLgorCitJZiBJTlBVVF9QUk9QX1RPUEJVVFRPTlBBRCBpcyBzZXQsIHVzZXJzcGFjZSBzaG91bGQgZW11bGF0ZSBidXR0b25zCithY2NvcmRpbmdseS4gVGhpcyBwcm9wZXJ0eSBkb2VzIG5vdCBhZmZlY3Qga2VybmVsIGJlaGF2aW9yLgorVGhlIGtlcm5lbCBkb2VzIG5vdCBwcm92aWRlIGJ1dHRvbiBlbXVsYXRpb24gZm9yIHN1Y2ggZGV2aWNlcyBidXQgdHJlYXRzCit0aGVtIGFzIGFueSBvdGhlciBJTlBVVF9QUk9QX0JVVFRPTlBBRCBkZXZpY2UuCisKK0lOUFVUX1BST1BfQUNDRUxFUk9NRVRFUgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRGlyZWN0aW9uYWwgYXhlcyBvbiB0aGlzIGRldmljZSAoYWJzb2x1dGUgYW5kL29yIHJlbGF0aXZlIHgsIHksIHopIHJlcHJlc2VudAorYWNjZWxlcm9tZXRlciBkYXRhLiBBbGwgb3RoZXIgYXhlcyByZXRhaW4gdGhlaXIgbWVhbmluZy4gQSBkZXZpY2UgbXVzdCBub3QgbWl4CityZWd1bGFyIGRpcmVjdGlvbmFsIGF4ZXMgYW5kIGFjY2VsZXJvbWV0ZXIgYXhlcyBvbiB0aGUgc2FtZSBldmVudCBub2RlLgorCitHdWlkZWxpbmVzOgorPT09PT09PT09PQorVGhlIGd1aWRlbGluZXMgYmVsb3cgZW5zdXJlIHByb3BlciBzaW5nbGUtdG91Y2ggYW5kIG11bHRpLWZpbmdlciBmdW5jdGlvbmFsaXR5LgorRm9yIG11bHRpLXRvdWNoIGZ1bmN0aW9uYWxpdHksIHNlZSB0aGUgbXVsdGktdG91Y2gtcHJvdG9jb2wudHh0IGRvY3VtZW50IGZvcgorbW9yZSBpbmZvcm1hdGlvbi4KKworTWljZToKKy0tLS0tLS0tLS0KK1JFTF97WCxZfSBtdXN0IGJlIHJlcG9ydGVkIHdoZW4gdGhlIG1vdXNlIG1vdmVzLiBCVE5fTEVGVCBtdXN0IGJlIHVzZWQgdG8gcmVwb3J0Cit0aGUgcHJpbWFyeSBidXR0b24gcHJlc3MuIEJUTl97TUlERExFLFJJR0hULDQsNSxldGMufSBzaG91bGQgYmUgdXNlZCB0byByZXBvcnQKK2Z1cnRoZXIgYnV0dG9ucyBvZiB0aGUgZGV2aWNlLiBSRUxfV0hFRUwgYW5kIFJFTF9IV0hFRUwgc2hvdWxkIGJlIHVzZWQgdG8gcmVwb3J0CitzY3JvbGwgd2hlZWwgZXZlbnRzIHdoZXJlIGF2YWlsYWJsZS4KKworVG91Y2hzY3JlZW5zOgorLS0tLS0tLS0tLQorQUJTX3tYLFl9IG11c3QgYmUgcmVwb3J0ZWQgd2l0aCB0aGUgbG9jYXRpb24gb2YgdGhlIHRvdWNoLiBCVE5fVE9VQ0ggbXVzdCBiZQordXNlZCB0byByZXBvcnQgd2hlbiBhIHRvdWNoIGlzIGFjdGl2ZSBvbiB0aGUgc2NyZWVuLgorQlROX3tNT1VTRSxMRUZULE1JRERMRSxSSUdIVH0gbXVzdCBub3QgYmUgcmVwb3J0ZWQgYXMgdGhlIHJlc3VsdCBvZiB0b3VjaAorY29udGFjdC4gQlROX1RPT0xfPG5hbWU+IGV2ZW50cyBzaG91bGQgYmUgcmVwb3J0ZWQgd2hlcmUgcG9zc2libGUuCisKK0ZvciBuZXcgaGFyZHdhcmUsIElOUFVUX1BST1BfRElSRUNUIHNob3VsZCBiZSBzZXQuCisKK1RyYWNrcGFkczoKKy0tLS0tLS0tLS0KK0xlZ2FjeSB0cmFja3BhZHMgdGhhdCBvbmx5IHByb3ZpZGUgcmVsYXRpdmUgcG9zaXRpb24gaW5mb3JtYXRpb24gbXVzdCByZXBvcnQKK2V2ZW50cyBsaWtlIG1pY2UgZGVzY3JpYmVkIGFib3ZlLgorCitUcmFja3BhZHMgdGhhdCBwcm92aWRlIGFic29sdXRlIHRvdWNoIHBvc2l0aW9uIG11c3QgcmVwb3J0IEFCU197WCxZfSBmb3IgdGhlCitsb2NhdGlvbiBvZiB0aGUgdG91Y2guIEJUTl9UT1VDSCBzaG91bGQgYmUgdXNlZCB0byByZXBvcnQgd2hlbiBhIHRvdWNoIGlzIGFjdGl2ZQorb24gdGhlIHRyYWNrcGFkLiBXaGVyZSBtdWx0aS1maW5nZXIgc3VwcG9ydCBpcyBhdmFpbGFibGUsIEJUTl9UT09MXzxuYW1lPiBzaG91bGQKK2JlIHVzZWQgdG8gcmVwb3J0IHRoZSBudW1iZXIgb2YgdG91Y2hlcyBhY3RpdmUgb24gdGhlIHRyYWNrcGFkLgorCitGb3IgbmV3IGhhcmR3YXJlLCBJTlBVVF9QUk9QX1BPSU5URVIgc2hvdWxkIGJlIHNldC4KKworVGFibGV0czoKKy0tLS0tLS0tLS0KK0JUTl9UT09MXzxuYW1lPiBldmVudHMgbXVzdCBiZSByZXBvcnRlZCB3aGVuIGEgc3R5bHVzIG9yIG90aGVyIHRvb2wgaXMgYWN0aXZlIG9uCit0aGUgdGFibGV0LiBBQlNfe1gsWX0gbXVzdCBiZSByZXBvcnRlZCB3aXRoIHRoZSBsb2NhdGlvbiBvZiB0aGUgdG9vbC4gQlROX1RPVUNICitzaG91bGQgYmUgdXNlZCB0byByZXBvcnQgd2hlbiB0aGUgdG9vbCBpcyBpbiBjb250YWN0IHdpdGggdGhlIHRhYmxldC4KK0JUTl97U1RZTFVTLFNUWUxVUzJ9IHNob3VsZCBiZSB1c2VkIHRvIHJlcG9ydCBidXR0b25zIG9uIHRoZSB0b29sIGl0c2VsZi4gQW55CitidXR0b24gbWF5IGJlIHVzZWQgZm9yIGJ1dHRvbnMgb24gdGhlIHRhYmxldCBleGNlcHQgQlROX3tNT1VTRSxMRUZUfS4KK0JUTl97MCwxLDIsZXRjfSBhcmUgZ29vZCBnZW5lcmljIGNvZGVzIGZvciB1bmxhYmVsZWQgYnV0dG9ucy4gRG8gbm90IHVzZQorbWVhbmluZ2Z1bCBidXR0b25zLCBsaWtlIEJUTl9GT1JXQVJELCB1bmxlc3MgdGhlIGJ1dHRvbiBpcyBsYWJlbGVkIGZvciB0aGF0CitwdXJwb3NlIG9uIHRoZSBkZXZpY2UuCisKK0ZvciBuZXcgaGFyZHdhcmUsIGJvdGggSU5QVVRfUFJPUF9ESVJFQ1QgYW5kIElOUFVUX1BST1BfUE9JTlRFUiBzaG91bGQgYmUgc2V0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pbnB1dC9mZi50eHQgYi9Eb2N1bWVudGF0aW9uL2lucHV0L2ZmLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzg2N2JmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9mZi50eHQKQEAgLTAsMCArMSwyMjEgQEAKK0ZvcmNlIGZlZWRiYWNrIGZvciBMaW51eC4KK0J5IEpvaGFubiBEZW5ldXggPGpvaGFubi5kZW5ldXhAZ21haWwuY29tPiBvbiAyMDAxLzA0LzIyLgorVXBkYXRlZCBieSBBbnNzaSBIYW5udWxhIDxhbnNzaS5oYW5udWxhQGdtYWlsLmNvbT4gb24gMjAwNi8wNC8wOS4KK1lvdSBtYXkgcmVkaXN0cmlidXRlIHRoaXMgZmlsZS4gUGxlYXNlIHJlbWVtYmVyIHRvIGluY2x1ZGUgc2hhcGUuZmlnIGFuZAoraW50ZXJhY3RpdmUuZmlnIGFzIHdlbGwuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzEuIEludHJvZHVjdGlvbgorfn5+fn5+fn5+fn5+fn5+CitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyBob3cgdG8gdXNlIGZvcmNlIGZlZWRiYWNrIGRldmljZXMgdW5kZXIgTGludXguIFRoZQorZ29hbCBpcyBub3QgdG8gc3VwcG9ydCB0aGVzZSBkZXZpY2VzIGFzIGlmIHRoZXkgd2VyZSBzaW1wbGUgaW5wdXQtb25seSBkZXZpY2VzCisoYXMgaXQgaXMgYWxyZWFkeSB0aGUgY2FzZSksIGJ1dCB0byByZWFsbHkgZW5hYmxlIHRoZSByZW5kZXJpbmcgb2YgZm9yY2UKK2VmZmVjdHMuCitUaGlzIGRvY3VtZW50IG9ubHkgZGVzY3JpYmVzIHRoZSBmb3JjZSBmZWVkYmFjayBwYXJ0IG9mIHRoZSBMaW51eCBpbnB1dAoraW50ZXJmYWNlLiBQbGVhc2UgcmVhZCBqb3lzdGljay50eHQgYW5kIGlucHV0LnR4dCBiZWZvcmUgcmVhZGluZyBmdXJ0aGVyIHRoaXMKK2RvY3VtZW50LgorCisyLiBJbnN0cnVjdGlvbnMgdG8gdGhlIHVzZXIKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorVG8gZW5hYmxlIGZvcmNlIGZlZWRiYWNrLCB5b3UgaGF2ZSB0bzoKKworMS4gaGF2ZSB5b3VyIGtlcm5lbCBjb25maWd1cmVkIHdpdGggZXZkZXYgYW5kIGEgZHJpdmVyIHRoYXQgc3VwcG9ydHMgeW91cgorICAgZGV2aWNlLgorMi4gbWFrZSBzdXJlIGV2ZGV2IG1vZHVsZSBpcyBsb2FkZWQgYW5kIC9kZXYvaW5wdXQvZXZlbnQqIGRldmljZSBmaWxlcyBhcmUKKyAgIGNyZWF0ZWQuCisKK0JlZm9yZSB5b3Ugc3RhcnQsIGxldCBtZSBXQVJOIHlvdSB0aGF0IHNvbWUgZGV2aWNlcyBzaGFrZSB2aW9sZW50bHkgZHVyaW5nIHRoZQoraW5pdGlhbGlzYXRpb24gcGhhc2UuIFRoaXMgaGFwcGVucyBmb3IgZXhhbXBsZSB3aXRoIG15ICJBVkIgVG9wIFNob3QgUGVnYXN1cyIuCitUbyBzdG9wIHRoaXMgYW5ub3lpbmcgYmVoYXZpb3VyLCBtb3ZlIHlvdSBqb3lzdGljayB0byBpdHMgbGltaXRzLiBBbnl3YXksIHlvdQorc2hvdWxkIGtlZXAgYSBoYW5kIG9uIHlvdXIgZGV2aWNlLCBpbiBvcmRlciB0byBhdm9pZCBpdCB0byBicmVhayBkb3duIGlmCitzb21ldGhpbmcgZ29lcyB3cm9uZy4KKworSWYgeW91IGhhdmUgYSBzZXJpYWwgaWZvcmNlIGRldmljZSwgeW91IG5lZWQgdG8gc3RhcnQgaW5wdXRhdHRhY2guIFNlZQoram95c3RpY2sudHh0IGZvciBkZXRhaWxzLgorCisyLjEgRG9lcyBpdCB3b3JrID8KK35+fn5+fn5+fn5+fn5+fn5+fgorVGhlcmUgaXMgYW4gdXRpbGl0eSBjYWxsZWQgZmZ0ZXN0IHRoYXQgd2lsbCBhbGxvdyB5b3UgdG8gdGVzdCB0aGUgZHJpdmVyLgorJSBmZnRlc3QgL2Rldi9pbnB1dC9ldmVudFhYCisKKzMuIEluc3RydWN0aW9ucyB0byB0aGUgZGV2ZWxvcGVyCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK0FsbCBpbnRlcmFjdGlvbnMgYXJlIGRvbmUgdXNpbmcgdGhlIGV2ZW50IEFQSS4gVGhhdCBpcywgeW91IGNhbiB1c2UgaW9jdGwoKQorYW5kIHdyaXRlKCkgb24gL2Rldi9pbnB1dC9ldmVudFhYLgorVGhpcyBpbmZvcm1hdGlvbiBpcyBzdWJqZWN0IHRvIGNoYW5nZS4KKworMy4xIFF1ZXJ5aW5nIGRldmljZSBjYXBhYmlsaXRpZXMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisjaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKworI2RlZmluZSBCSVRTX1RPX0xPTkdTKHgpIFwKKwkoKCh4KSArIDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcpIC0gMSkgLyAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZykpKQordW5zaWduZWQgbG9uZyBmZWF0dXJlc1tCSVRTX1RPX0xPTkdTKEZGX0NOVCldOworaW50IGlvY3RsKGludCBmaWxlX2Rlc2NyaXB0b3IsIGludCByZXF1ZXN0LCB1bnNpZ25lZCBsb25nICpmZWF0dXJlcyk7CisKKyJyZXF1ZXN0IiBtdXN0IGJlIEVWSU9DR0JJVChFVl9GRiwgc2l6ZSBvZiBmZWF0dXJlcyBhcnJheSBpbiBieXRlcyApCisKK1JldHVybnMgdGhlIGZlYXR1cmVzIHN1cHBvcnRlZCBieSB0aGUgZGV2aWNlLiBmZWF0dXJlcyBpcyBhIGJpdGZpZWxkIHdpdGggdGhlCitmb2xsb3dpbmcgYml0czoKKy0gRkZfQ09OU1RBTlQJY2FuIHJlbmRlciBjb25zdGFudCBmb3JjZSBlZmZlY3RzCistIEZGX1BFUklPRElDCWNhbiByZW5kZXIgcGVyaW9kaWMgZWZmZWN0cyB3aXRoIHRoZSBmb2xsb3dpbmcgd2F2ZWZvcm1zOgorICAtIEZGX1NRVUFSRQkgIHNxdWFyZSB3YXZlZm9ybQorICAtIEZGX1RSSUFOR0xFCSAgdHJpYW5nbGUgd2F2ZWZvcm0KKyAgLSBGRl9TSU5FCSAgc2luZSB3YXZlZm9ybQorICAtIEZGX1NBV19VUAkgIHNhd3Rvb3RoIHVwIHdhdmVmb3JtCisgIC0gRkZfU0FXX0RPV04JICBzYXd0b290aCBkb3duIHdhdmVmb3JtCisgIC0gRkZfQ1VTVE9NCSAgY3VzdG9tIHdhdmVmb3JtCistIEZGX1JBTVAgICAgICAgY2FuIHJlbmRlciByYW1wIGVmZmVjdHMKKy0gRkZfU1BSSU5HCWNhbiBzaW11bGF0ZSB0aGUgcHJlc2VuY2Ugb2YgYSBzcHJpbmcKKy0gRkZfRlJJQ1RJT04JY2FuIHNpbXVsYXRlIGZyaWN0aW9uCistIEZGX0RBTVBFUgljYW4gc2ltdWxhdGUgZGFtcGVyIGVmZmVjdHMKKy0gRkZfUlVNQkxFCXJ1bWJsZSBlZmZlY3RzCistIEZGX0lORVJUSUEgICAgY2FuIHNpbXVsYXRlIGluZXJ0aWEKKy0gRkZfR0FJTglnYWluIGlzIGFkanVzdGFibGUKKy0gRkZfQVVUT0NFTlRFUglhdXRvY2VudGVyIGlzIGFkanVzdGFibGUKKworTm90ZTogSW4gbW9zdCBjYXNlcyB5b3Ugc2hvdWxkIHVzZSBGRl9QRVJJT0RJQyBpbnN0ZWFkIG9mIEZGX1JVTUJMRS4gQWxsCisgICAgICBkZXZpY2VzIHRoYXQgc3VwcG9ydCBGRl9SVU1CTEUgc3VwcG9ydCBGRl9QRVJJT0RJQyAoc3F1YXJlLCB0cmlhbmdsZSwKKyAgICAgIHNpbmUpIGFuZCB0aGUgb3RoZXIgd2F5IGFyb3VuZC4KKworTm90ZTogVGhlIGV4YWN0IHN5bnRheCBGRl9DVVNUT00gaXMgdW5kZWZpbmVkIGZvciB0aGUgdGltZSBiZWluZyBhcyBubyBkcml2ZXIKKyAgICAgIHN1cHBvcnRzIGl0IHlldC4KKworCitpbnQgaW9jdGwoaW50IGZkLCBFVklPQ0dFRkZFQ1RTLCBpbnQgKm4pOworCitSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWZmZWN0cyB0aGUgZGV2aWNlIGNhbiBrZWVwIGluIGl0cyBtZW1vcnkuCisKKzMuMiBVcGxvYWRpbmcgZWZmZWN0cyB0byB0aGUgZGV2aWNlCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorI2luY2x1ZGUgPGxpbnV4L2lucHV0Lmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisKK2ludCBpb2N0bChpbnQgZmlsZV9kZXNjcmlwdG9yLCBpbnQgcmVxdWVzdCwgc3RydWN0IGZmX2VmZmVjdCAqZWZmZWN0KTsKKworInJlcXVlc3QiIG11c3QgYmUgRVZJT0NTRkYuCisKKyJlZmZlY3QiIHBvaW50cyB0byBhIHN0cnVjdHVyZSBkZXNjcmliaW5nIHRoZSBlZmZlY3QgdG8gdXBsb2FkLiBUaGUgZWZmZWN0IGlzCit1cGxvYWRlZCwgYnV0IG5vdCBwbGF5ZWQuCitUaGUgY29udGVudCBvZiBlZmZlY3QgbWF5IGJlIG1vZGlmaWVkLiBJbiBwYXJ0aWN1bGFyLCBpdHMgZmllbGQgImlkIiBpcyBzZXQKK3RvIHRoZSB1bmlxdWUgaWQgYXNzaWduZWQgYnkgdGhlIGRyaXZlci4gVGhpcyBkYXRhIGlzIHJlcXVpcmVkIGZvciBwZXJmb3JtaW5nCitzb21lIG9wZXJhdGlvbnMgKHJlbW92aW5nIGFuIGVmZmVjdCwgY29udHJvbGxpbmcgdGhlIHBsYXliYWNrKS4KK1RoaXMgaWYgZmllbGQgbXVzdCBiZSBzZXQgdG8gLTEgYnkgdGhlIHVzZXIgaW4gb3JkZXIgdG8gdGVsbCB0aGUgZHJpdmVyIHRvCithbGxvY2F0ZSBhIG5ldyBlZmZlY3QuCisKK0VmZmVjdHMgYXJlIGZpbGUgZGVzY3JpcHRvciBzcGVjaWZpYy4KKworU2VlIDxsaW51eC9pbnB1dC5oPiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZmZfZWZmZWN0IHN0cnVjdC4gWW91IHNob3VsZCBhbHNvCitmaW5kIGhlbHAgaW4gYSBmZXcgc2tldGNoZXMsIGNvbnRhaW5lZCBpbiBmaWxlcyBzaGFwZS5maWcgYW5kIGludGVyYWN0aXZlLmZpZy4KK1lvdSBuZWVkIHhmaWcgdG8gdmlzdWFsaXplIHRoZXNlIGZpbGVzLgorCiszLjMgUmVtb3ZpbmcgYW4gZWZmZWN0IGZyb20gdGhlIGRldmljZQorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK2ludCBpb2N0bChpbnQgZmQsIEVWSU9DUk1GRiwgZWZmZWN0LmlkKTsKKworVGhpcyBtYWtlcyByb29tIGZvciBuZXcgZWZmZWN0cyBpbiB0aGUgZGV2aWNlJ3MgbWVtb3J5LiBOb3RlIHRoYXQgdGhpcyBhbHNvCitzdG9wcyB0aGUgZWZmZWN0IGlmIGl0IHdhcyBwbGF5aW5nLgorCiszLjQgQ29udHJvbGxpbmcgdGhlIHBsYXliYWNrIG9mIGVmZmVjdHMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorQ29udHJvbCBvZiBwbGF5aW5nIGlzIGRvbmUgd2l0aCB3cml0ZSgpLiBCZWxvdyBpcyBhbiBleGFtcGxlOgorCisjaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworCXN0cnVjdCBpbnB1dF9ldmVudCBwbGF5OworCXN0cnVjdCBpbnB1dF9ldmVudCBzdG9wOworCXN0cnVjdCBmZl9lZmZlY3QgZWZmZWN0OworCWludCBmZDsKKy4uLgorCWZkID0gb3BlbigiL2Rldi9pbnB1dC9ldmVudFhYIiwgT19SRFdSKTsKKy4uLgorCS8qIFBsYXkgdGhyZWUgdGltZXMgKi8KKwlwbGF5LnR5cGUgPSBFVl9GRjsKKwlwbGF5LmNvZGUgPSBlZmZlY3QuaWQ7CisJcGxheS52YWx1ZSA9IDM7CisKKwl3cml0ZShmZCwgKGNvbnN0IHZvaWQqKSAmcGxheSwgc2l6ZW9mKHBsYXkpKTsKKy4uLgorCS8qIFN0b3AgYW4gZWZmZWN0ICovCisJc3RvcC50eXBlID0gRVZfRkY7CisJc3RvcC5jb2RlID0gZWZmZWN0LmlkOworCXN0b3AudmFsdWUgPSAwOworCisJd3JpdGUoZmQsIChjb25zdCB2b2lkKikgJnBsYXksIHNpemVvZihzdG9wKSk7CisKKzMuNSBTZXR0aW5nIHRoZSBnYWluCit+fn5+fn5+fn5+fn5+fn5+fn5+fgorTm90IGFsbCBkZXZpY2VzIGhhdmUgdGhlIHNhbWUgc3RyZW5ndGguIFRoZXJlZm9yZSwgdXNlcnMgc2hvdWxkIHNldCBhIGdhaW4KK2ZhY3RvciBkZXBlbmRpbmcgb24gaG93IHN0cm9uZyB0aGV5IHdhbnQgZWZmZWN0cyB0byBiZS4gVGhpcyBzZXR0aW5nIGlzCitwZXJzaXN0ZW50IGFjcm9zcyBhY2Nlc3MgdG8gdGhlIGRyaXZlci4KKworLyogU2V0IHRoZSBnYWluIG9mIHRoZSBkZXZpY2UKK2ludCBnYWluOwkJLyogYmV0d2VlbiAwIGFuZCAxMDAgKi8KK3N0cnVjdCBpbnB1dF9ldmVudCBpZTsJLyogc3RydWN0dXJlIHVzZWQgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgZHJpdmVyICovCisKK2llLnR5cGUgPSBFVl9GRjsKK2llLmNvZGUgPSBGRl9HQUlOOworaWUudmFsdWUgPSAweEZGRkZVTCAqIGdhaW4gLyAxMDA7CisKK2lmICh3cml0ZShmZCwgJmllLCBzaXplb2YoaWUpKSA9PSAtMSkKKwlwZXJyb3IoInNldCBnYWluIik7CisKKzMuNiBFbmFibGluZy9EaXNhYmxpbmcgYXV0b2NlbnRlcgorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitUaGUgYXV0b2NlbnRlciBmZWF0dXJlIHF1aXRlIGRpc3R1cmJzIHRoZSByZW5kZXJpbmcgb2YgZWZmZWN0cyBpbiBteSBvcGluaW9uLAorYW5kIEkgdGhpbmsgaXQgc2hvdWxkIGJlIGFuIGVmZmVjdCwgd2hpY2ggY29tcHV0YXRpb24gZGVwZW5kcyBvbiB0aGUgZ2FtZQordHlwZS4gQnV0IHlvdSBjYW4gZW5hYmxlIGl0IGlmIHlvdSB3YW50LgorCitpbnQgYXV0b2NlbnRlcjsJCS8qIGJldHdlZW4gMCBhbmQgMTAwICovCitzdHJ1Y3QgaW5wdXRfZXZlbnQgaWU7CisKK2llLnR5cGUgPSBFVl9GRjsKK2llLmNvZGUgPSBGRl9BVVRPQ0VOVEVSOworaWUudmFsdWUgPSAweEZGRkZVTCAqIGF1dG9jZW50ZXIgLyAxMDA7CisKK2lmICh3cml0ZShmZCwgJmllLCBzaXplb2YoaWUpKSA9PSAtMSkKKwlwZXJyb3IoInNldCBhdXRvLWNlbnRlciIpOworCitBIHZhbHVlIG9mIDAgbWVhbnMgIm5vIGF1dG8tY2VudGVyIi4KKworMy43IER5bmFtaWMgdXBkYXRlIG9mIGFuIGVmZmVjdAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorUHJvY2VlZCBhcyBpZiB5b3Ugd2FudGVkIHRvIHVwbG9hZCBhIG5ldyBlZmZlY3QsIGV4Y2VwdCB0aGF0IGluc3RlYWQgb2YKK3NldHRpbmcgdGhlIGlkIGZpZWxkIHRvIC0xLCB5b3Ugc2V0IGl0IHRvIHRoZSB3YW50ZWQgZWZmZWN0IGlkLgorTm9ybWFsbHksIHRoZSBlZmZlY3QgaXMgbm90IHN0b3BwZWQgYW5kIHJlc3RhcnRlZC4gSG93ZXZlciwgZGVwZW5kaW5nIG9uIHRoZQordHlwZSBvZiBkZXZpY2UsIG5vdCBhbGwgcGFyYW1ldGVycyBjYW4gYmUgZHluYW1pY2FsbHkgdXBkYXRlZC4gRm9yIGV4YW1wbGUsCit0aGUgZGlyZWN0aW9uIG9mIGFuIGVmZmVjdCBjYW5ub3QgYmUgdXBkYXRlZCB3aXRoIGlmb3JjZSBkZXZpY2VzLiBJbiB0aGlzCitjYXNlLCB0aGUgZHJpdmVyIHN0b3BzIHRoZSBlZmZlY3QsIHVwLWxvYWQgaXQsIGFuZCByZXN0YXJ0IGl0LgorCitUaGVyZWZvcmUgaXQgaXMgcmVjb21tZW5kZWQgdG8gZHluYW1pY2FsbHkgY2hhbmdlIGRpcmVjdGlvbiB3aGlsZSB0aGUgZWZmZWN0CitpcyBwbGF5aW5nIG9ubHkgd2hlbiBpdCBpcyBvayB0byByZXN0YXJ0IHRoZSBlZmZlY3Qgd2l0aCBhIHJlcGxheSBjb3VudCBvZiAxLgorCiszLjggSW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0YXR1cyBvZiBlZmZlY3RzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitFdmVyeSB0aW1lIHRoZSBzdGF0dXMgb2YgYW4gZWZmZWN0IGlzIGNoYW5nZWQsIGFuIGV2ZW50IGlzIHNlbnQuIFRoZSB2YWx1ZXMKK2FuZCBtZWFuaW5ncyBvZiB0aGUgZmllbGRzIG9mIHRoZSBldmVudCBhcmUgYXMgZm9sbG93czoKKworc3RydWN0IGlucHV0X2V2ZW50IHsKKy8qIFdoZW4gdGhlIHN0YXR1cyBvZiB0aGUgZWZmZWN0IGNoYW5nZWQgKi8KKwlzdHJ1Y3QgdGltZXZhbCB0aW1lOworCisvKiBTZXQgdG8gRVZfRkZfU1RBVFVTICovCisJdW5zaWduZWQgc2hvcnQgdHlwZTsKKworLyogQ29udGFpbnMgdGhlIGlkIG9mIHRoZSBlZmZlY3QgKi8KKwl1bnNpZ25lZCBzaG9ydCBjb2RlOworCisvKiBJbmRpY2F0ZXMgdGhlIHN0YXR1cyAqLworCXVuc2lnbmVkIGludCB2YWx1ZTsKK307CisKK0ZGX1NUQVRVU19TVE9QUEVECVRoZSBlZmZlY3Qgc3RvcHBlZCBwbGF5aW5nCitGRl9TVEFUVVNfUExBWUlORwlUaGUgZWZmZWN0IHN0YXJ0ZWQgdG8gcGxheQorCitOT1RFOiBTdGF0dXMgZmVlZGJhY2sgaXMgb25seSBzdXBwb3J0ZWQgYnkgaWZvcmNlIGRyaXZlci4gSWYgeW91IGhhdmUKKyAgICAgIGEgcmVhbGx5IGdvb2QgcmVhc29uIHRvIHVzZSB0aGlzLCBwbGVhc2UgY29udGFjdAorICAgICAgbGludXgtam95c3RpY2tAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6IG9yIGFuc3NpLmhhbm51bGFAZ21haWwuY29tCisgICAgICBzbyB0aGF0IHN1cHBvcnQgZm9yIGl0IGNhbiBiZSBhZGRlZCB0byB0aGUgcmVzdCBvZiB0aGUgZHJpdmVycy4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pbnB1dC9nYW1lcGFkLnR4dCBiL0RvY3VtZW50YXRpb24vaW5wdXQvZ2FtZXBhZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y2ZDhhNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaW5wdXQvZ2FtZXBhZC50eHQKQEAgLTAsMCArMSwxNTkgQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW51eCBHYW1lcGFkIEFQSQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisxLiBJbnRybworfn5+fn5+fn4KK0xpbnV4IHByb3ZpZGVzIG1hbnkgZGlmZmVyZW50IGlucHV0IGRyaXZlcnMgZm9yIGdhbWVwYWQgaGFyZHdhcmUuIFRvIGF2b2lkCitoYXZpbmcgdXNlci1zcGFjZSBkZWFsIHdpdGggZGlmZmVyZW50IGJ1dHRvbi1tYXBwaW5ncyBmb3IgZWFjaCBnYW1lcGFkLCB0aGlzCitkb2N1bWVudCBkZWZpbmVzIGhvdyBnYW1lcGFkcyBhcmUgc3VwcG9zZWQgdG8gcmVwb3J0IHRoZWlyIGRhdGEuCisKKzIuIEdlb21ldHJ5Cit+fn5+fn5+fn5+fgorQXMgImdhbWVwYWQiIHdlIGRlZmluZSBkZXZpY2VzIHdoaWNoIHJvdWdobHkgbG9vayBsaWtlIHRoaXM6CisKKyAgICAgICAgICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX18gICAgICAgICAgICAgIF9fCisgICAgICAgICAgIC8gW19fWkxfX10gICAgICAgICAgW19fWlJfX10gXCAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAvIFtfXyBUTCBfX10gICAgICAgIFtfXyBUUiBfX10gXCAgICAgICAgICAgICAgfCBGcm9udCBUcmlnZ2VycworICAgICAgIF9fL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXF9fICAgICAgICAgX198CisgICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8gICBcICAgICAgICAgIHwKKyAgICAgLyAgICAgIC9cICAgICAgICAgICBfXyAgICAgICAgICAgICAoTikgICBcICAgICAgICAgfAorICAgIC8gICAgICAgfHwgICAgICBfXyAgfE1PfCAgX18gICAgIF8gICAgICAgXyBcICAgICAgICB8IE1haW4gUGFkCisgICB8ICAgIDw9PT1EUD09PT4gfFNFfCAgICAgIHxTVHwgICAoVykgLXwtIChFKSB8ICAgICAgIHwKKyAgICBcICAgICAgIHx8ICAgIF9fXyAgICAgICAgICBfX18gICAgICAgXyAgICAgLyAgICAgICAgfAorICAgIC9cICAgICAgXC8gICAvICAgXCAgICAgICAgLyAgIFwgICAgIChTKSAgIC9cICAgICAgX198CisgICAvICBcX19fX19fX18gfCBMUyAgfCBfX19fIHwgIFJTIHwgX19fX19fX18vICBcICAgICAgIHwKKyAgfCAgICAgICAgIC8gIFwgXF9fXy8gLyAgICBcIFxfX18vIC8gIFwgICAgICAgICB8ICAgICAgfCBDb250cm9sIFN0aWNrcworICB8ICAgICAgICAvICAgIFxfX19fXy8gICAgICBcX19fX18vICAgIFwgICAgICAgIHwgICAgX198CisgIHwgICAgICAgLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgICAgICAgfAorICAgXF9fX19fLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX19fLworCisgICAgICAgfF9fX19fX19ffF9fX19fX3wgICAgfF9fX19fX3xfX19fX19fX19fX3wKKyAgICAgICAgIEQtUGFkICAgIExlZnQgICAgICAgUmlnaHQgICBBY3Rpb24gUGFkCisgICAgICAgICAgICAgICAgIFN0aWNrICAgICAgIFN0aWNrCisKKyAgICAgICAgICAgICAgICAgICB8X19fX19fX19fX19fX3wKKyAgICAgICAgICAgICAgICAgICAgICBNZW51IFBhZAorCitNb3N0IGdhbWVwYWRzIGhhdmUgdGhlIGZvbGxvd2luZyBmZWF0dXJlczoKKyAgLSBBY3Rpb24tUGFkCisgICAgNCBidXR0b25zIGluIGRpYW1vbmRzLXNoYXBlIChvbiB0aGUgcmlnaHQgc2lkZSkuIFRoZSBidXR0b25zIGFyZQorICAgIGRpZmZlcmVudGx5IGxhYmVsZWQgb24gbW9zdCBkZXZpY2VzIHNvIHdlIGRlZmluZSB0aGVtIGFzIE5PUlRILAorICAgIFNPVVRILCBXRVNUIGFuZCBFQVNULgorICAtIEQtUGFkIChEaXJlY3Rpb24tcGFkKQorICAgIDQgYnV0dG9ucyAob24gdGhlIGxlZnQgc2lkZSkgdGhhdCBwb2ludCB1cCwgZG93biwgbGVmdCBhbmQgcmlnaHQuCisgIC0gTWVudS1QYWQKKyAgICBEaWZmZXJlbnQgY29uc3RlbGxhdGlvbnMsIGJ1dCBtb3N0LXRpbWVzIDIgYnV0dG9uczogU0VMRUNUIC0gU1RBUlQKKyAgICBGdXJ0aGVybW9yZSwgbWFueSBnYW1lcGFkcyBoYXZlIGEgZmFuY3kgYnJhbmRlZCBidXR0b24gdGhhdCBpcyB1c2VkIGFzCisgICAgc3BlY2lhbCBzeXN0ZW0tYnV0dG9uLiBJdCBvZnRlbiBsb29rcyBkaWZmZXJlbnQgdG8gdGhlIG90aGVyIGJ1dHRvbnMgYW5kCisgICAgaXMgdXNlZCB0byBwb3AgdXAgc3lzdGVtLW1lbnVzIG9yIHN5c3RlbS1zZXR0aW5ncy4KKyAgLSBBbmFsb2ctU3RpY2tzCisgICAgQW5hbG9nLXN0aWNrcyBwcm92aWRlIGZyZWVseSBtb3ZlYWJsZSBzdGlja3MgdG8gY29udHJvbCBkaXJlY3Rpb25zLiBOb3QKKyAgICBhbGwgZGV2aWNlcyBoYXZlIGJvdGggb3IgYW55LCBidXQgdGhleSBhcmUgcHJlc2VudCBhdCBtb3N0IHRpbWVzLgorICAgIEFuYWxvZy1zdGlja3MgbWF5IGFsc28gcHJvdmlkZSBhIGRpZ2l0YWwgYnV0dG9uIGlmIHlvdSBwcmVzcyB0aGVtLgorICAtIFRyaWdnZXJzCisgICAgVHJpZ2dlcnMgYXJlIGxvY2F0ZWQgb24gdGhlIHVwcGVyLXNpZGUgb2YgdGhlIHBhZCBpbiB2ZXJ0aWNhbCBkaXJlY3Rpb24uCisgICAgTm90IGFsbCBkZXZpY2VzIHByb3ZpZGUgdGhlbSwgYnV0IHRoZSB1cHBlciBidXR0b25zIGFyZSBub3JtYWxseSBuYW1lZAorICAgIExlZnQtIGFuZCBSaWdodC1UcmlnZ2VycywgdGhlIGxvd2VyIGJ1dHRvbnMgWi1MZWZ0IGFuZCBaLVJpZ2h0LgorICAtIFJ1bWJsZQorICAgIE1hbnkgZGV2aWNlcyBwcm92aWRlIGZvcmNlLWZlZWRiYWNrIGZlYXR1cmVzLiBCdXQgYXJlIG1vc3RseSBqdXN0CisgICAgc2ltcGxlIHJ1bWJsZSBtb3RvcnMuCisKKzMuIERldGVjdGlvbgorfn5+fn5+fn5+fn5+CitBbGwgZ2FtZXBhZHMgdGhhdCBmb2xsb3cgdGhlIHByb3RvY29sIGRlc2NyaWJlZCBoZXJlIG1hcCBCVE5fR0FNRVBBRC4gVGhpcyBpcworYW4gYWxpYXMgZm9yIEJUTl9TT1VUSC9CVE5fQS4gSXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgYSBnYW1lcGFkIGFzIHN1Y2guCitIb3dldmVyLCBub3QgYWxsIGdhbWVwYWRzIHByb3ZpZGUgYWxsIGZlYXR1cmVzLCBzbyB5b3UgbmVlZCB0byB0ZXN0IGZvciBhbGwKK2ZlYXR1cmVzIHRoYXQgeW91IG5lZWQsIGZpcnN0LiBIb3cgZWFjaCBmZWF0dXJlIGlzIG1hcHBlZCBpcyBkZXNjcmliZWQgYmVsb3cuCisKK0xlZ2FjeSBkcml2ZXJzIG9mdGVuIGRvbid0IGNvbXBseSB0byB0aGVzZSBydWxlcy4gQXMgd2UgY2Fubm90IGNoYW5nZSB0aGVtCitmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgcmVhc29ucywgeW91IG5lZWQgdG8gcHJvdmlkZSBmaXh1cCBtYXBwaW5ncyBpbgordXNlci1zcGFjZSB5b3Vyc2VsZi4gU29tZSBvZiB0aGVtIG1pZ2h0IGFsc28gcHJvdmlkZSBtb2R1bGUtb3B0aW9ucyB0aGF0CitjaGFuZ2UgdGhlIG1hcHBpbmdzIHNvIHlvdSBjYW4gYWR2aXNlIHVzZXJzIHRvIHNldCB0aGVzZS4KKworQWxsIG5ldyBnYW1lcGFkcyBhcmUgc3VwcG9zZWQgdG8gY29tcGx5IHdpdGggdGhpcyBtYXBwaW5nLiBQbGVhc2UgcmVwb3J0IGFueQorYnVncywgaWYgdGhleSBkb24ndC4KKworVGhlcmUgYXJlIGEgbG90IG9mIGxlc3MtZmVhdHVyZWQvbGVzcy1wb3dlcmZ1bCBkZXZpY2VzIG91dCB0aGVyZSwgd2hpY2ggcmUtdXNlCit0aGUgYnV0dG9ucyBmcm9tIHRoaXMgcHJvdG9jb2wuIEhvd2V2ZXIsIHRoZXkgdHJ5IHRvIGRvIHRoaXMgaW4gYSBjb21wYXRpYmxlCitmYXNoaW9uLiBGb3IgZXhhbXBsZSwgdGhlICJOaW50ZW5kbyBXaWkgTnVuY2h1ayIgcHJvdmlkZXMgdHdvIHRyaWdnZXIgYnV0dG9ucworYW5kIG9uZSBhbmFsb2cgc3RpY2suIEl0IHJlcG9ydHMgdGhlbSBhcyBpZiBpdCB3ZXJlIGEgZ2FtZXBhZCB3aXRoIG9ubHkgb25lCithbmFsb2cgc3RpY2sgYW5kIHR3byB0cmlnZ2VyIGJ1dHRvbnMgb24gdGhlIHJpZ2h0IHNpZGUuCitCdXQgdGhhdCBtZWFucywgdGhhdCBpZiB5b3Ugb25seSBzdXBwb3J0ICJyZWFsIiBnYW1lcGFkcywgeW91IG11c3QgdGVzdAorZGV2aWNlcyBmb3IgX2FsbF8gcmVwb3J0ZWQgZXZlbnRzIHRoYXQgeW91IG5lZWQuIE90aGVyd2lzZSwgeW91IHdpbGwgYWxzbyBnZXQKK2RldmljZXMgdGhhdCByZXBvcnQgYSBzbWFsbCBzdWJzZXQgb2YgdGhlIGV2ZW50cy4KKworTm8gb3RoZXIgZGV2aWNlcywgdGhhdCBkbyBub3QgbG9vay9mZWVsIGxpa2UgYSBnYW1lcGFkLCBzaGFsbCByZXBvcnQgdGhlc2UKK2V2ZW50cy4KKworNC4gRXZlbnRzCit+fn5+fn5+fn4KK0dhbWVwYWRzIHJlcG9ydCB0aGUgZm9sbG93aW5nIGV2ZW50czoKKworQWN0aW9uLVBhZDoKKyAgRXZlcnkgZ2FtZXBhZCBkZXZpY2UgaGFzIGF0IGxlYXN0IDIgYWN0aW9uIGJ1dHRvbnMuIFRoaXMgbWVhbnMsIHRoYXQgZXZlcnkKKyAgZGV2aWNlIHJlcG9ydHMgQlROX1NPVVRIICh3aGljaCBCVE5fR0FNRVBBRCBpcyBhbiBhbGlhcyBmb3IpLiBSZWdhcmRsZXNzCisgIG9mIHRoZSBsYWJlbHMgb24gdGhlIGJ1dHRvbnMsIHRoZSBjb2RlcyBhcmUgc2VudCBhY2NvcmRpbmcgdG8gdGhlCisgIHBoeXNpY2FsIHBvc2l0aW9uIG9mIHRoZSBidXR0b25zLgorICBQbGVhc2Ugbm90ZSB0aGF0IDItIGFuZCAzLWJ1dHRvbiBwYWRzIGFyZSBmYWlybHkgcmFyZSBhbmQgb2xkLiBZb3UgbWlnaHQKKyAgd2FudCB0byBmaWx0ZXIgZ2FtZXBhZHMgdGhhdCBkbyBub3QgcmVwb3J0IGFsbCBmb3VyLgorICAgIDItQnV0dG9uIFBhZDoKKyAgICAgIElmIG9ubHkgMiBhY3Rpb24tYnV0dG9ucyBhcmUgcHJlc2VudCwgdGhleSBhcmUgcmVwb3J0ZWQgYXMgQlROX1NPVVRIIGFuZAorICAgICAgQlROX0VBU1QuIEZvciB2ZXJ0aWNhbCBsYXlvdXRzLCB0aGUgdXBwZXIgYnV0dG9uIGlzIEJUTl9FQVNULiBGb3IKKyAgICAgIGhvcml6b250YWwgbGF5b3V0cywgdGhlIGJ1dHRvbiBtb3JlIG9uIHRoZSByaWdodCBpcyBCVE5fRUFTVC4KKyAgICAzLUJ1dHRvbiBQYWQ6CisgICAgICBJZiBvbmx5IDMgYWN0aW9uLWJ1dHRvbnMgYXJlIHByZXNlbnQsIHRoZXkgYXJlIHJlcG9ydGVkIGFzIChmcm9tIGxlZnQKKyAgICAgIHRvIHJpZ2h0KTogQlROX1dFU1QsIEJUTl9TT1VUSCwgQlROX0VBU1QKKyAgICAgIElmIHRoZSBidXR0b25zIGFyZSBhbGlnbmVkIHBlcmZlY3RseSB2ZXJ0aWNhbGx5LCB0aGV5IGFyZSByZXBvcnRlZCBhcworICAgICAgKGZyb20gdG9wIGRvd24pOiBCVE5fV0VTVCwgQlROX1NPVVRILCBCVE5fRUFTVAorICAgIDQtQnV0dG9uIFBhZDoKKyAgICAgIElmIGFsbCA0IGFjdGlvbi1idXR0b25zIGFyZSBwcmVzZW50LCB0aGV5IGNhbiBiZSBhbGlnbmVkIGluIHR3bworICAgICAgZGlmZmVyZW50IGZvcm1hdGlvbnMuIElmIGRpYW1vbmQtc2hhcGVkLCB0aGV5IGFyZSByZXBvcnRlZCBhcyBCVE5fTk9SVEgsCisgICAgICBCVE5fV0VTVCwgQlROX1NPVVRILCBCVE5fRUFTVCBhY2NvcmRpbmcgdG8gdGhlaXIgcGh5c2ljYWwgbG9jYXRpb24uCisgICAgICBJZiByZWN0YW5ndWxhci1zaGFwZWQsIHRoZSB1cHBlci1sZWZ0IGJ1dHRvbiBpcyBCVE5fTk9SVEgsIGxvd2VyLWxlZnQKKyAgICAgIGlzIEJUTl9XRVNULCBsb3dlci1yaWdodCBpcyBCVE5fU09VVEggYW5kIHVwcGVyLXJpZ2h0IGlzIEJUTl9FQVNULgorCitELVBhZDoKKyAgRXZlcnkgZ2FtZXBhZCBwcm92aWRlcyBhIEQtUGFkIHdpdGggZm91ciBkaXJlY3Rpb25zOiBVcCwgRG93biwgTGVmdCwgUmlnaHQKKyAgU29tZSBvZiB0aGVzZSBhcmUgYXZhaWxhYmxlIGFzIGRpZ2l0YWwgYnV0dG9ucywgc29tZSBhcyBhbmFsb2cgYnV0dG9ucy4gU29tZQorICBtYXkgZXZlbiByZXBvcnQgYm90aC4gVGhlIGtlcm5lbCBkb2VzIG5vdCBjb252ZXJ0IGJldHdlZW4gdGhlc2Ugc28KKyAgYXBwbGljYXRpb25zIHNob3VsZCBzdXBwb3J0IGJvdGggYW5kIGNob29zZSB3aGF0IGlzIG1vcmUgYXBwcm9wcmlhdGUgaWYKKyAgYm90aCBhcmUgcmVwb3J0ZWQuCisgICAgRGlnaXRhbCBidXR0b25zIGFyZSByZXBvcnRlZCBhczoKKyAgICAgIEJUTl9EUEFEXyoKKyAgICBBbmFsb2cgYnV0dG9ucyBhcmUgcmVwb3J0ZWQgYXM6CisgICAgICBBQlNfSEFUMFggYW5kIEFCU19IQVQwWQorICAgICAgKGZvciBBQlMgdmFsdWVzIG5lZ2F0aXZlIGlzIGxlZnQvdXAsIHBvc2l0aXZlIGlzIHJpZ2h0L2Rvd24pCisKK0FuYWxvZy1TdGlja3M6CisgIFRoZSBsZWZ0IGFuYWxvZy1zdGljayBpcyByZXBvcnRlZCBhcyBBQlNfWCwgQUJTX1kuIFRoZSByaWdodCBhbmFsb2cgc3RpY2sgaXMKKyAgcmVwb3J0ZWQgYXMgQUJTX1JYLCBBQlNfUlkuIFplcm8sIG9uZSBvciB0d28gc3RpY2tzIG1heSBiZSBwcmVzZW50LgorICBJZiBhbmFsb2ctc3RpY2tzIHByb3ZpZGUgZGlnaXRhbCBidXR0b25zLCB0aGV5IGFyZSBtYXBwZWQgYWNjb3JkaW5nbHkgYXMKKyAgQlROX1RIVU1CTCAoZmlyc3QvbGVmdCkgYW5kIEJUTl9USFVNQlIgKHNlY29uZC9yaWdodCkuCisgICAgKGZvciBBQlMgdmFsdWVzIG5lZ2F0aXZlIGlzIGxlZnQvdXAsIHBvc2l0aXZlIGlzIHJpZ2h0L2Rvd24pCisKK1RyaWdnZXJzOgorICBUcmlnZ2VyIGJ1dHRvbnMgY2FuIGJlIGF2YWlsYWJsZSBhcyBkaWdpdGFsIG9yIGFuYWxvZyBidXR0b25zIG9yIGJvdGguIFVzZXItCisgIHNwYWNlIG11c3QgY29ycmVjdGx5IGRlYWwgd2l0aCBhbnkgc2l0dWF0aW9uIGFuZCBjaG9vc2UgdGhlIG1vc3QgYXBwcm9wcmlhdGUKKyAgbW9kZS4KKyAgVXBwZXIgdHJpZ2dlciBidXR0b25zIGFyZSByZXBvcnRlZCBhcyBCVE5fVFIgb3IgQUJTX0hBVDFYIChyaWdodCkgYW5kIEJUTl9UTAorICBvciBBQlNfSEFUMVkgKGxlZnQpLiBMb3dlciB0cmlnZ2VyIGJ1dHRvbnMgYXJlIHJlcG9ydGVkIGFzIEJUTl9UUjIgb3IKKyAgQUJTX0hBVDJYIChyaWdodC9aUikgYW5kIEJUTl9UTDIgb3IgQUJTX0hBVDJZIChsZWZ0L1pMKS4KKyAgSWYgb25seSBvbmUgdHJpZ2dlci1idXR0b24gY29tYmluYXRpb24gaXMgcHJlc2VudCAodXBwZXIrbG93ZXIpLCB0aGV5IGFyZQorICByZXBvcnRlZCBhcyAicmlnaHQiIHRyaWdnZXJzIChCVE5fVFIvQUJTX0hBVDFYKS4KKyAgICAoQUJTIHRyaWdnZXIgdmFsdWVzIHN0YXJ0IGF0IDAsIHByZXNzdXJlIGlzIHJlcG9ydGVkIGFzIHBvc2l0aXZlIHZhbHVlcykKKworTWVudS1QYWQ6CisgIE1lbnUgYnV0dG9ucyBhcmUgYWx3YXlzIGRpZ2l0YWwgYW5kIGFyZSBtYXBwZWQgYWNjb3JkaW5nIHRvIHRoZWlyIGxvY2F0aW9uCisgIGluc3RlYWQgb2YgdGhlaXIgbGFiZWxzLiBUaGF0IGlzOgorICAgIDEtYnV0dG9uIFBhZDogTWFwcGVkIGFzIEJUTl9TVEFSVAorICAgIDItYnV0dG9uIFBhZDogTGVmdCBidXR0b24gbWFwcGVkIGFzIEJUTl9TRUxFQ1QsIHJpZ2h0IGJ1dHRvbiBtYXBwZWQgYXMKKyAgICAgICAgICAgICAgICAgIEJUTl9TVEFSVAorICBNYW55IHBhZHMgYWxzbyBoYXZlIGEgdGhpcmQgYnV0dG9uIHdoaWNoIGlzIGJyYW5kZWQgb3IgaGFzIGEgc3BlY2lhbCBzeW1ib2wKKyAgYW5kIG1lYW5pbmcuIFN1Y2ggYnV0dG9ucyBhcmUgbWFwcGVkIGFzIEJUTl9NT0RFLiBFeGFtcGxlcyBhcmUgdGhlIE5pbnRlbmRvCisgICJIT01FIiBidXR0b24sIHRoZSBYQm94ICJYIi1idXR0b24gb3IgU29ueSAiUFMiIGJ1dHRvbi4KKworUnVtYmxlOgorICBSdW1ibGUgaXMgYWR2ZXJ0aXNlZCBhcyBGRl9SVU1CTEUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgV3JpdHRlbiAyMDEzIGJ5IERhdmlkIEhlcnJtYW5uIDxkaC5oZXJybWFubkBnbWFpbC5jb20+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lucHV0L2dhbWVwb3J0LXByb2dyYW1taW5nLnR4dCBiL0RvY3VtZW50YXRpb24vaW5wdXQvZ2FtZXBvcnQtcHJvZ3JhbW1pbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzYTc0ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lucHV0L2dhbWVwb3J0LXByb2dyYW1taW5nLnR4dApAQCAtMCwwICsxLDE4NyBAQAorUHJvZ3JhbW1pbmcgZ2FtZXBvcnQgZHJpdmVycworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisxLiBBIGJhc2ljIGNsYXNzaWMgZ2FtZXBvcnQKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitJZiB0aGUgZ2FtZXBvcnQgZG9lc24ndCBwcm92aWRlIG1vcmUgdGhhbiB0aGUgaW5iKCkvb3V0YigpIGZ1bmN0aW9uYWxpdHksCit0aGUgY29kZSBuZWVkZWQgdG8gcmVnaXN0ZXIgaXQgd2l0aCB0aGUgam95c3RpY2sgZHJpdmVycyBpcyBzaW1wbGU6CisKKwlzdHJ1Y3QgZ2FtZXBvcnQgZ2FtZXBvcnQ7CisKKwlnYW1lcG9ydC5pbyA9IE1ZX0lPX0FERFJFU1M7CisJZ2FtZXBvcnRfcmVnaXN0ZXJfcG9ydCgmZ2FtZXBvcnQpOworCitNYWtlIHN1cmUgc3RydWN0IGdhbWVwb3J0IGlzIGluaXRpYWxpemVkIHRvIDAgaW4gYWxsIG90aGVyIGZpZWxkcy4gVGhlCitnYW1lcG9ydCBnZW5lcmljIGNvZGUgd2lsbCB0YWtlIGNhcmUgb2YgdGhlIHJlc3QuCisKK0lmIHlvdXIgaGFyZHdhcmUgc3VwcG9ydHMgbW9yZSB0aGFuIG9uZSBpbyBhZGRyZXNzLCBhbmQgeW91ciBkcml2ZXIgY2FuCitjaG9vc2Ugd2hpY2ggb25lIHRvIHByb2dyYW0gdGhlIGhhcmR3YXJlIHRvLCBzdGFydGluZyBmcm9tIHRoZSBtb3JlIGV4b3RpYworYWRkcmVzc2VzIGlzIHByZWZlcnJlZCwgYmVjYXVzZSB0aGUgbGlrZWxpaG9vZCBvZiBjbGFzaGluZyB3aXRoIHRoZSBzdGFuZGFyZAorMHgyMDEgYWRkcmVzcyBpcyBzbWFsbGVyLgorCitFZy4gaWYgeW91ciBkcml2ZXIgc3VwcG9ydHMgYWRkcmVzc2VzIDB4MjAwLCAweDIwOCwgMHgyMTAgYW5kIDB4MjE4LCB0aGVuCisweDIxOCB3b3VsZCBiZSB0aGUgYWRkcmVzcyBvZiBmaXJzdCBjaG9pY2UuCisKK0lmIHlvdXIgaGFyZHdhcmUgc3VwcG9ydHMgYSBnYW1lcG9ydCBhZGRyZXNzIHRoYXQgaXMgbm90IG1hcHBlZCB0byBJU0EgaW8KK3NwYWNlIChpcyBhYm92ZSAweDEwMDApLCB1c2UgdGhhdCBvbmUsIGFuZCBkb24ndCBtYXAgdGhlIElTQSBtaXJyb3IuCisKK0Fsc28sIGFsd2F5cyByZXF1ZXN0X3JlZ2lvbigpIG9uIHRoZSB3aG9sZSBpbyBzcGFjZSBvY2N1cGllZCBieSB0aGUKK2dhbWVwb3J0LiBBbHRob3VnaCBvbmx5IG9uZSBpb3BvcnQgaXMgcmVhbGx5IHVzZWQsIHRoZSBnYW1lcG9ydCB1c3VhbGx5CitvY2N1cGllcyBmcm9tIG9uZSB0byBzaXh0ZWVuIGFkZHJlc3NlcyBpbiB0aGUgaW8gc3BhY2UuCisKK1BsZWFzZSBhbHNvIGNvbnNpZGVyIGVuYWJsaW5nIHRoZSBnYW1lcG9ydCBvbiB0aGUgY2FyZCBpbiB0aGUgLT5vcGVuKCkKK2NhbGxiYWNrIGlmIHRoZSBpbyBpcyBtYXBwZWQgdG8gSVNBIHNwYWNlIC0gdGhpcyB3YXkgaXQnbGwgb2NjdXB5IHRoZSBpbworc3BhY2Ugb25seSB3aGVuIHNvbWV0aGluZyByZWFsbHkgaXMgdXNpbmcgaXQuIERpc2FibGUgaXQgYWdhaW4gaW4gdGhlCistPmNsb3NlKCkgY2FsbGJhY2suIFlvdSBhbHNvIGNhbiBzZWxlY3QgdGhlIGlvIGFkZHJlc3MgaW4gdGhlIC0+b3BlbigpCitjYWxsYmFjaywgc28gdGhhdCBpdCBkb2Vzbid0IGZhaWwgaWYgc29tZSBvZiB0aGUgcG9zc2libGUgYWRkcmVzc2VzIGFyZQorYWxyZWFkeSBvY2N1cGllZCBieSBvdGhlciBnYW1lcG9ydHMuCisKKzIuIE1lbW9yeSBtYXBwZWQgZ2FtZXBvcnQKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworV2hlbiBhIGdhbWVwb3J0IGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIE1NSU8sIHRoaXMgd2F5IGlzIHByZWZlcnJlZCwgYmVjYXVzZQoraXQgaXMgZmFzdGVyLCBhbGxvd2luZyBtb3JlIHJlYWRzIHBlciBzZWNvbmQuIFJlZ2lzdGVyaW5nIHN1Y2ggYSBnYW1lcG9ydAoraXNuJ3QgYXMgZWFzeSBhcyBhIGJhc2ljIElPIG9uZSwgYnV0IG5vdCBzbyBtdWNoIGNvbXBsZXg6CisKKwlzdHJ1Y3QgZ2FtZXBvcnQgZ2FtZXBvcnQ7CisKKwl2b2lkIG15X3RyaWdnZXIoc3RydWN0IGdhbWVwb3J0ICpnYW1lcG9ydCkKKwl7CisJCW15X21taW8gPSAweGZmOworCX0KKworCXVuc2lnbmVkIGNoYXIgbXlfcmVhZChzdHJ1Y3QgZ2FtZXBvcnQgKmdhbWVwb3J0KQorCXsKKwkJcmV0dXJuIG15X21taW87CQorCX0KKworCWdhbWVwb3J0LnJlYWQgPSBteV9yZWFkOworCWdhbWVwb3J0LnRyaWdnZXIgPSBteV90cmlnZ2VyOworCWdhbWVwb3J0X3JlZ2lzdGVyX3BvcnQoJmdhbWVwb3J0KTsKKworMy4gQ29va2VkIG1vZGUgZ2FtZXBvcnQKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1RoZXJlIGFyZSBnYW1lcG9ydHMgdGhhdCBjYW4gcmVwb3J0IHRoZSBheGlzIHZhbHVlcyBhcyBudW1iZXJzLCB0aGF0IG1lYW5zCit0aGUgZHJpdmVyIGRvZXNuJ3QgaGF2ZSB0byBtZWFzdXJlIHRoZW0gdGhlIG9sZCB3YXkgLSBhbiBBREMgaXMgYnVpbHQgaW50bwordGhlIGdhbWVwb3J0LiBUbyByZWdpc3RlciBhIGNvb2tlZCBnYW1lcG9ydDoKKworCXN0cnVjdCBnYW1lcG9ydCBnYW1lcG9ydDsKKworCWludCBteV9jb29rZWRfcmVhZChzdHJ1Y3QgZ2FtZXBvcnQgKmdhbWVwb3J0LCBpbnQgKmF4ZXMsIGludCAqYnV0dG9ucykKKwl7CisJCWludCBpOworCisJCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspCisJCQlheGVzW2ldID0gbXlfbW1pb1tpXTsKKwkJYnV0dG9uc1tpXSA9IG15X21taW9bNF07CisJfQorCisJaW50IG15X29wZW4oc3RydWN0IGdhbWVwb3J0ICpnYW1lcG9ydCwgaW50IG1vZGUpCisJeworCQlyZXR1cm4gLShtb2RlICE9IEdBTUVQT1JUX01PREVfQ09PS0VEKTsKKwl9CisKKwlnYW1lcG9ydC5jb29rZWRfcmVhZCA9IG15X2Nvb2tlZF9yZWFkOworCWdhbWVwb3J0Lm9wZW4gPSBteV9vcGVuOworCWdhbWVwb3J0LmZ1enogPSA4OworCWdhbWVwb3J0X3JlZ2lzdGVyX3BvcnQoJmdhbWVwb3J0KTsKKworVGhlIG9ubHkgY29uZnVzaW5nIHRoaW5nIGhlcmUgaXMgdGhlIGZ1enogdmFsdWUuIEJlc3QgZGV0ZXJtaW5lZCBieQorZXhwZXJpbWVudGF0aW9uLCBpdCBpcyB0aGUgYW1vdW50IG9mIG5vaXNlIGluIHRoZSBBREMgZGF0YS4gUGVyZmVjdAorZ2FtZXBvcnRzIGNhbiBzZXQgdGhpcyB0byB6ZXJvLCBtb3N0IGNvbW1vbiBoYXZlIGZ1enogYmV0d2VlbiA4IGFuZCAzMi4KK1NlZSBhbmFsb2cuYyBhbmQgaW5wdXQuYyBmb3IgaGFuZGxpbmcgb2YgZnV6eiAtIHRoZSBmdXp6IHZhbHVlIGRldGVybWluZXMKK3RoZSBzaXplIG9mIGEgZ2F1c3NpYW4gZmlsdGVyIHdpbmRvdyB0aGF0IGlzIHVzZWQgdG8gZWxpbWluYXRlIHRoZSBub2lzZQoraW4gdGhlIGRhdGEuCisKKzQuIE1vcmUgY29tcGxleCBnYW1lcG9ydHMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworR2FtZXBvcnRzIGNhbiBzdXBwb3J0IGJvdGggcmF3IGFuZCBjb29rZWQgbW9kZXMuIEluIHRoYXQgY2FzZSBjb21iaW5lIGVpdGhlcgorZXhhbXBsZXMgMSsyIG9yIDErMy4gR2FtZXBvcnRzIGNhbiBzdXBwb3J0IGludGVybmFsIGNhbGlicmF0aW9uIC0gc2VlIGJlbG93LAorYW5kIGFsc28gbGlnaHRuaW5nLmMgYW5kIGFuYWxvZy5jIG9uIGhvdyB0aGF0IHdvcmtzLiBJZiB5b3VyIGRyaXZlciBzdXBwb3J0cworbW9yZSB0aGFuIG9uZSBnYW1lcG9ydCBpbnN0YW5jZSBzaW11bHRhbmVvdXNseSwgdXNlIHRoZSAtPnByaXZhdGUgbWVtYmVyIG9mCit0aGUgZ2FtZXBvcnQgc3RydWN0IHRvIHBvaW50IHRvIHlvdXIgZGF0YS4KKworNS4gVW5yZWdpc3RlcmluZyBhIGdhbWVwb3J0Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworU2ltcGxlOgorCitnYW1lcG9ydF91bnJlZ2lzdGVyX3BvcnQoJmdhbWVwb3J0KTsKKworNi4gVGhlIGdhbWVwb3J0IHN0cnVjdHVyZQorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitzdHJ1Y3QgZ2FtZXBvcnQgeworCisJdm9pZCAqcHJpdmF0ZTsKKworQSBwcml2YXRlIHBvaW50ZXIgZm9yIGZyZWUgdXNlIGluIHRoZSBnYW1lcG9ydCBkcml2ZXIuIChOb3QgdGhlIGpveXN0aWNrCitkcml2ZXIhKQorCisJaW50IG51bWJlcjsKKworTnVtYmVyIGFzc2lnbmVkIHRvIHRoZSBnYW1lcG9ydCB3aGVuIHJlZ2lzdGVyZWQuIEluZm9ybWF0aW9uYWwgcHVycG9zZSBvbmx5LgorCisJaW50IGlvOworCitJL08gYWRkcmVzcyBmb3IgdXNlIHdpdGggcmF3IG1vZGUuIFlvdSBoYXZlIHRvIGVpdGhlciBzZXQgdGhpcywgb3IgLT5yZWFkKCkKK3RvIHNvbWUgdmFsdWUgaWYgeW91ciBnYW1lcG9ydCBzdXBwb3J0cyByYXcgbW9kZS4KKworCWludCBzcGVlZDsKKworUmF3IG1vZGUgc3BlZWQgb2YgdGhlIGdhbWVwb3J0IHJlYWRzIGluIHRob3VzYW5kcyBvZiByZWFkcyBwZXIgc2Vjb25kLgorCisJaW50IGZ1eno7CisKK0lmIHRoZSBnYW1lcG9ydCBzdXBwb3J0cyBjb29rZWQgbW9kZSwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIGEgdmFsdWUgdGhhdAorcmVwcmVzZW50cyB0aGUgYW1vdW50IG9mIG5vaXNlIGluIHRoZSBkYXRhLiBTZWUgc2VjdGlvbiAzLgorCisJdm9pZCAoKnRyaWdnZXIpKHN0cnVjdCBnYW1lcG9ydCAqKTsKKworVHJpZ2dlci4gVGhpcyBmdW5jdGlvbiBzaG91bGQgdHJpZ2dlciB0aGUgbnM1NTggb25lc2hvdHMuIElmIHNldCB0byBOVUxMLAorb3V0YigweGZmLCBpbykgd2lsbCBiZSB1c2VkLgorCisJdW5zaWduZWQgY2hhciAoKnJlYWQpKHN0cnVjdCBnYW1lcG9ydCAqKTsKKworUmVhZCB0aGUgYnV0dG9ucyBhbmQgbnM1NTggb25lc2hvdCBiaXRzLiBJZiBzZXQgdG8gTlVMTCwgaW5iKGlvKSB3aWxsIGJlCit1c2VkIGluc3RlYWQuCisKKwlpbnQgKCpjb29rZWRfcmVhZCkoc3RydWN0IGdhbWVwb3J0ICosIGludCAqYXhlcywgaW50ICpidXR0b25zKTsJCisKK0lmIHRoZSBnYW1lcG9ydCBzdXBwb3J0cyBjb29rZWQgbW9kZSwgaXQgc2hvdWxkIHBvaW50IHRoaXMgdG8gaXRzIGNvb2tlZAorcmVhZCBmdW5jdGlvbi4gSXQgc2hvdWxkIGZpbGwgYXhlc1swLi4zXSB3aXRoIGZvdXIgdmFsdWVzIG9mIHRoZSBqb3lzdGljayBheGVzCithbmQgYnV0dG9uc1swXSB3aXRoIGZvdXIgYml0cyByZXByZXNlbnRpbmcgdGhlIGJ1dHRvbnMuCisKKwlpbnQgKCpjYWxpYnJhdGUpKHN0cnVjdCBnYW1lcG9ydCAqLCBpbnQgKmF4ZXMsIGludCAqbWF4KTsgCisKK0Z1bmN0aW9uIGZvciBjYWxpYnJhdGluZyB0aGUgQURDIGhhcmR3YXJlLiBXaGVuIGNhbGxlZCwgYXhlc1swLi4zXSBzaG91bGQgYmUKK3ByZS1maWxsZWQgYnkgY29va2VkIGRhdGEgYnkgdGhlIGNhbGxlciwgbWF4WzAuLjNdIHNob3VsZCBiZSBwcmUtZmlsbGVkIHdpdGgKK2V4cGVjdGVkIG1heGltdW1zIGZvciBlYWNoIGF4aXMuIFRoZSBjYWxpYnJhdGUoKSBmdW5jdGlvbiBzaG91bGQgc2V0IHRoZQorc2Vuc2l0aXZpdHkgb2YgdGhlIEFEQyBoYXJkd2FyZSBzbyB0aGF0IHRoZSBtYXhpbXVtcyBmaXQgaW4gaXRzIHJhbmdlIGFuZAorcmVjb21wdXRlIHRoZSBheGVzW10gdmFsdWVzIHRvIG1hdGNoIHRoZSBuZXcgc2Vuc2l0aXZpdHkgb3IgcmUtcmVhZCB0aGVtIGZyb20KK3RoZSBoYXJkd2FyZSBzbyB0aGF0IHRoZXkgZ2l2ZSB2YWxpZCB2YWx1ZXMuIAorCisJaW50ICgqb3Blbikoc3RydWN0IGdhbWVwb3J0ICosIGludCBtb2RlKTsKKworT3BlbigpIHNlcnZlcyB0d28gcHVycG9zZXMuIEZpcnN0IGEgZHJpdmVyIGVpdGhlciBvcGVucyB0aGUgcG9ydCBpbiByYXcgb3IKK2luIGNvb2tlZCBtb2RlLCB0aGUgb3BlbigpIGNhbGxiYWNrIGNhbiBkZWNpZGUgd2hpY2ggbW9kZXMgYXJlIHN1cHBvcnRlZC4KK1NlY29uZCwgcmVzb3VyY2UgYWxsb2NhdGlvbiBjYW4gaGFwcGVuIGhlcmUuIFRoZSBwb3J0IGNhbiBhbHNvIGJlIGVuYWJsZWQKK2hlcmUuIFByaW9yIHRvIHRoaXMgY2FsbCwgb3RoZXIgZmllbGRzIG9mIHRoZSBnYW1lcG9ydCBzdHJ1Y3QgKG5hbWVseSB0aGUgaW8KK21lbWJlcikgbmVlZCBub3QgdG8gYmUgdmFsaWQuCisKKwl2b2lkICgqY2xvc2UpKHN0cnVjdCBnYW1lcG9ydCAqKTsKKworQ2xvc2UoKSBzaG91bGQgZnJlZSB0aGUgcmVzb3VyY2VzIGFsbG9jYXRlZCBieSBvcGVuLCBwb3NzaWJseSBkaXNhYmxpbmcgdGhlCitnYW1lcG9ydC4KKworCXN0cnVjdCBnYW1lcG9ydF9kZXYgKmRldjsKKwlzdHJ1Y3QgZ2FtZXBvcnQgKm5leHQ7CisKK0ZvciBpbnRlcm5hbCB1c2UgYnkgdGhlIGdhbWVwb3J0IGxheWVyLgorCit9OworCitFbmpveSEKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW5wdXQvZ3Bpby10aWx0LnR4dCBiL0RvY3VtZW50YXRpb24vaW5wdXQvZ3Bpby10aWx0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2RmZDliCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9ncGlvLXRpbHQudHh0CkBAIC0wLDAgKzEsMTAzIEBACitEcml2ZXIgZm9yIHRpbHQtc3dpdGNoZXMgY29ubmVjdGVkIHZpYSBHUElPcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworR2VuZXJpYyBkcml2ZXIgdG8gcmVhZCBkYXRhIGZyb20gdGlsdCBzd2l0Y2hlcyBjb25uZWN0ZWQgdmlhIGdwaW9zLgorT3JpZW50YXRpb24gY2FuIGJlIHByb3ZpZGVkIGJ5IG9uZSBvciBtb3JlIHRoYW4gb25lIHRpbHQgc3dpdGNoZXMsCitpLmUuIGVhY2ggdGlsdCBzd2l0Y2ggcHJvdmlkaW5nIG9uZSBheGlzLCBhbmQgdGhlIG51bWJlciBvZiBheGVzCitpcyBhbHNvIG5vdCBsaW1pdGVkLgorCisKK0RhdGEgc3RydWN0dXJlczoKKy0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGFycmF5IG9mIHN0cnVjdCBncGlvIGluIHRoZSBncGlvcyBmaWVsZCBpcyB1c2VkIHRvIGxpc3QgdGhlIGdwaW9zCit0aGF0IHJlcHJlc2VudCB0aGUgY3VycmVudCB0aWx0IHN0YXRlLgorCitUaGUgYXJyYXkgb2Ygc3RydWN0IGdwaW9fdGlsdF9heGlzIGRlc2NyaWJlcyB0aGUgYXhlcyB0aGF0IGFyZSByZXBvcnRlZAordG8gdGhlIGlucHV0IHN5c3RlbS4gVGhlIHZhbHVlcyBzZXQgdGhlcmVpbiBhcmUgdXNlZCBmb3IgdGhlCitpbnB1dF9zZXRfYWJzX3BhcmFtcyBjYWxscyBuZWVkZWQgdG8gaW5pdCB0aGUgYXhlcy4KKworVGhlIGFycmF5IG9mIHN0cnVjdCBncGlvX3RpbHRfc3RhdGUgbWFwcyBncGlvIHN0YXRlcyB0byB0aGUgY29ycmVzcG9uZGluZwordmFsdWVzIHRvIHJlcG9ydC4gVGhlIGdwaW8gc3RhdGUgaXMgcmVwcmVzZW50ZWQgYXMgYSBiaXRmaWVsZCB3aGVyZSB0aGUKK2JpdC1pbmRleCBjb3JyZXNwb25kcyB0byB0aGUgaW5kZXggb2YgdGhlIGdwaW8gaW4gdGhlIHN0cnVjdCBncGlvIGFycmF5LgorSW4gdGhlIHNhbWUgbWFubmVyIHRoZSB2YWx1ZXMgc3RvcmVkIGluIHRoZSBheGVzIGFycmF5IGNvcnJlc3BvbmQgdG8KK3RoZSBlbGVtZW50cyBvZiB0aGUgZ3Bpb190aWx0X2F4aXMtYXJyYXkuCisKKworRXhhbXBsZToKKy0tLS0tLS0tCisKK0V4YW1wbGUgY29uZmlndXJhdGlvbiBmb3IgYSBzaW5nbGUgVFMxMDAzIHRpbHQgc3dpdGNoIHRoYXQgcm90YXRlcyBhcm91bmQKK29uZSBheGlzIGluIDQgc3RlcHMgYW5kIGVtaXRzIHRoZSBjdXJyZW50IHRpbHQgdmlhIHR3byBHUElPcy4KKworc3RhdGljIGludCBzZzA2MF90aWx0X2VuYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYpIHsKKwkvKiBjb2RlIHRvIGVuYWJsZSB0aGUgc2Vuc29ycyAqLworfTsKKworc3RhdGljIHZvaWQgc2cwNjBfdGlsdF9kaXNhYmxlKHN0cnVjdCBkZXZpY2UgKmRldikgeworCS8qIGNvZGUgdG8gZGlzYWJsZSB0aGUgc2Vuc29ycyAqLworfTsKKworc3RhdGljIHN0cnVjdCBncGlvIHNnMDYwX3RpbHRfZ3Bpb3NbXSA9IHsKKwl7IFNHMDYwX1RJTFRfR1BJT19TRU5TT1IxLCBHUElPRl9JTiwgInRpbHRfc2Vuc29yMSIgfSwKKwl7IFNHMDYwX1RJTFRfR1BJT19TRU5TT1IyLCBHUElPRl9JTiwgInRpbHRfc2Vuc29yMiIgfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZ3Bpb190aWx0X3N0YXRlIHNnMDYwX3RpbHRfc3RhdGVzW10gPSB7CisJeworCQkuZ3Bpb3MgPSAoMCA8PCAxKSB8ICgwIDw8IDApLAorCQkuYXhlcyA9IChpbnRbXSkgeworCQkJMCwKKwkJfSwKKwl9LCB7CisJCS5ncGlvcyA9ICgwIDw8IDEpIHwgKDEgPDwgMCksCisJCS5heGVzID0gKGludFtdKSB7CisJCQkxLCAvKiA5MCBkZWdyZWVzICovCisJCX0sCisJfSwgeworCQkuZ3Bpb3MgPSAoMSA8PCAxKSB8ICgxIDw8IDApLAorCQkuYXhlcyA9IChpbnRbXSkgeworCQkJMiwgLyogMTgwIGRlZ3JlZXMgKi8KKwkJfSwKKwl9LCB7CisJCS5ncGlvcyA9ICgxIDw8IDEpIHwgKDAgPDwgMCksCisJCS5heGVzID0gKGludFtdKSB7CisJCQkzLCAvKiAyNzAgZGVncmVlcyAqLworCQl9LAorCX0sCit9OworCitzdGF0aWMgc3RydWN0IGdwaW9fdGlsdF9heGlzIHNnMDYwX3RpbHRfYXhlc1tdID0geworCXsKKwkJLmF4aXMgPSBBQlNfUlksCisJCS5taW4gPSAwLAorCQkubWF4ID0gMywKKwkJLmZ1enogPSAwLAorCQkuZmxhdCA9IDAsCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZ3Bpb190aWx0X3BsYXRmb3JtX2RhdGEgc2cwNjBfdGlsdF9wZGF0YT0geworCS5ncGlvcyA9IHNnMDYwX3RpbHRfZ3Bpb3MsCisJLm5yX2dwaW9zID0gQVJSQVlfU0laRShzZzA2MF90aWx0X2dwaW9zKSwKKworCS5heGVzID0gc2cwNjBfdGlsdF9heGVzLAorCS5ucl9heGVzID0gQVJSQVlfU0laRShzZzA2MF90aWx0X2F4ZXMpLAorCisJLnN0YXRlcyA9IHNnMDYwX3RpbHRfc3RhdGVzLAorCS5ucl9zdGF0ZXMgPSBBUlJBWV9TSVpFKHNnMDYwX3RpbHRfc3RhdGVzKSwKKworCS5kZWJvdW5jZV9pbnRlcnZhbCA9IDEwMCwKKworCS5wb2xsX2ludGVydmFsID0gMTAwMCwKKwkuZW5hYmxlID0gc2cwNjBfdGlsdF9lbmFibGUsCisJLmRpc2FibGUgPSBzZzA2MF90aWx0X2Rpc2FibGUsCit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBzZzA2MF9kZXZpY2VfdGlsdCA9IHsKKwkubmFtZSA9ICJncGlvLXRpbHQtcG9sbGVkIiwKKwkuaWQgPSAtMSwKKwkuZGV2ID0geworCQkucGxhdGZvcm1fZGF0YSA9ICZzZzA2MF90aWx0X3BkYXRhLAorCX0sCit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pbnB1dC9pZm9yY2UtcHJvdG9jb2wudHh0IGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9pZm9yY2UtcHJvdG9jb2wudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2Mjg3MTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lucHV0L2lmb3JjZS1wcm90b2NvbC50eHQKQEAgLTAsMCArMSwyNTggQEAKKyoqIEludHJvZHVjdGlvbgorVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgd2hhdCBJIG1hbmFnZWQgdG8gZGlzY292ZXIgYWJvdXQgdGhlIHByb3RvY29sIHVzZWQgdG8KK3NwZWNpZnkgZm9yY2UgZWZmZWN0cyB0byBJLUZvcmNlIDIuMCBkZXZpY2VzLiAgTm9uZSBvZiB0aGlzIGluZm9ybWF0aW9uIGNvbWVzCitmcm9tIEltbWVyc2UuIFRoYXQncyB3aHkgeW91IHNob3VsZCBub3QgdHJ1c3Qgd2hhdCBpcyB3cml0dGVuIGluIHRoaXMKK2RvY3VtZW50LiBUaGlzIGRvY3VtZW50IGlzIGludGVuZGVkIHRvIGhlbHAgdW5kZXJzdGFuZGluZyB0aGUgcHJvdG9jb2wuCitUaGlzIGlzIG5vdCBhIHJlZmVyZW5jZS4gQ29tbWVudHMgYW5kIGNvcnJlY3Rpb25zIGFyZSB3ZWxjb21lLiAgVG8gY29udGFjdCBtZSwKK3NlbmQgYW4gZW1haWwgdG86IGpvaGFubi5kZW5ldXhAZ21haWwuY29tCisKKyoqIFdBUk5JTkcgKioKK0kgc2hhbGwgbm90IGJlIGhlbGQgcmVzcG9uc2libGUgZm9yIGFueSBkYW1hZ2Ugb3IgaGFybSBjYXVzZWQgaWYgeW91IHRyeSB0bworc2VuZCBkYXRhIHRvIHlvdXIgSS1Gb3JjZSBkZXZpY2UgYmFzZWQgb24gd2hhdCB5b3UgcmVhZCBpbiB0aGlzIGRvY3VtZW50LgorCisqKiBQcmVsaW1pbmFyeSBOb3RlczoKK0FsbCB2YWx1ZXMgYXJlIGhleGFkZWNpbWFsIHdpdGggYmlnLWVuZGlhbiBlbmNvZGluZyAobXNiIG9uIHRoZSBsZWZ0KS4gQmV3YXJlLAordmFsdWVzIGluc2lkZSBwYWNrZXRzIGFyZSBlbmNvZGVkIHVzaW5nIGxpdHRsZS1lbmRpYW4uICBCeXRlcyB3aG9zZSByb2xlcyBhcmUKK3Vua25vd24gYXJlIG1hcmtlZCA/Pz8gIEluZm9ybWF0aW9uIHRoYXQgbmVlZHMgZGVlcGVyIGluc3BlY3Rpb24gaXMgbWFya2VkICg/KQorCisqKiBHZW5lcmFsIGZvcm0gb2YgYSBwYWNrZXQgKioKK1RoaXMgaXMgaG93IHBhY2tldHMgbG9vayB3aGVuIHRoZSBkZXZpY2UgdXNlcyB0aGUgcnMyMzIgdG8gY29tbXVuaWNhdGUuCisyQiBPUCBMRU4gREFUQSBDUworQ1MgaXMgdGhlIGNoZWNrc3VtLiBJdCBpcyBlcXVhbCB0byB0aGUgZXhjbHVzaXZlIG9yIG9mIGFsbCBieXRlcy4KKworV2hlbiB1c2luZyBVU0I6CitPUCBEQVRBCitUaGUgMkIsIExFTiBhbmQgQ1MgZmllbGRzIGhhdmUgZGlzYXBwZWFyZWQsIHByb2JhYmx5IGJlY2F1c2UgVVNCIGhhbmRsZXMgZnJhbWVzIGFuZAorZGF0YSBjb3JydXB0aW9uIGlzIGhhbmRsZWQgb3IgdW5zaWduaWZpY2FudC4KKworRmlyc3QsIEkgZGVzY3JpYmUgZWZmZWN0cyB0aGF0IGFyZSBzZW50IGJ5IHRoZSBkZXZpY2UgdG8gdGhlIGNvbXB1dGVyCisKKyoqIERldmljZSBpbnB1dCBzdGF0ZQorVGhpcyBwYWNrZXQgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGUgc3RhdGUgb2YgZWFjaCBidXR0b24gYW5kIHRoZSB2YWx1ZSBvZiBlYWNoCitheGlzCitPUD0gMDEgZm9yIGEgam95c3RpY2ssIDAzIGZvciBhIHdoZWVsCitMRU49IFZhcmllcyBmcm9tIGRldmljZSB0byBkZXZpY2UKKzAwIFgtQXhpcyBsc2IKKzAxIFgtQXhpcyBtc2IKKzAyIFktQXhpcyBsc2IsIG9yIGdhcyBwZWRhbCBmb3IgYSB3aGVlbAorMDMgWS1BeGlzIG1zYiwgb3IgYnJha2UgcGVkYWwgZm9yIGEgd2hlZWwKKzA0IFRocm90dGxlCiswNSBCdXR0b25zCiswNiBMb3dlciA0IGJpdHM6IEJ1dHRvbnMKKyAgIFVwcGVyIDQgYml0czogSGF0CiswNyBSdWRkZXIKKworKiogRGV2aWNlIGVmZmVjdHMgc3RhdGVzCitPUD0gMDIKK0xFTj0gVmFyaWVzCiswMCA/IEJpdCAxIChWYWx1ZSAyKSBpcyB0aGUgdmFsdWUgb2YgdGhlIGRlYWRtYW4gc3dpdGNoCiswMSBCaXQgOCBpcyBzZXQgaWYgdGhlIGVmZmVjdCBpcyBwbGF5aW5nLiBCaXRzIDAgdG8gNyBhcmUgdGhlIGVmZmVjdCBpZC4KKzAyID8/CiswMyBBZGRyZXNzIG9mIHBhcmFtZXRlciBibG9jayBjaGFuZ2VkIChsc2IpCiswNCBBZGRyZXNzIG9mIHBhcmFtZXRlciBibG9jayBjaGFuZ2VkIChtc2IpCiswNSBBZGRyZXNzIG9mIHNlY29uZCBwYXJhbWV0ZXIgYmxvY2sgY2hhbmdlZCAobHNiKQorLi4uIGRlcGVuZGluZyBvbiB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlciBibG9ja3MgdXBkYXRlZAorCisqKiBGb3JjZSBlZmZlY3QgKioKK09QPSAgMDEKK0xFTj0gMGUKKzAwIENoYW5uZWwgKHdoZW4gcGxheWluZyBzZXZlcmFsIGVmZmVjdHMgYXQgdGhlIHNhbWUgdGltZSwgZWFjaCBtdXN0IGJlIGFzc2lnbmVkIGEgY2hhbm5lbCkKKzAxIFdhdmUgZm9ybQorCVZhbCAwMCBDb25zdGFudAorCVZhbCAyMCBTcXVhcmUKKwlWYWwgMjEgVHJpYW5nbGUKKwlWYWwgMjIgU2luZQorCVZhbCAyMyBTYXd0b290aCB1cAorCVZhbCAyNCBTYXd0b290aCBkb3duCisJVmFsIDQwIFNwcmluZyAoRm9yY2UgPSBmKHBvcykpCisJVmFsIDQxIEZyaWN0aW9uIChGb3JjZSA9IGYodmVsb2NpdHkpKSBhbmQgSW5lcnRpYSAoRm9yY2UgPSBmKGFjY2VsZXJhdGlvbikpCisKKworMDIgQXhlcyBhZmZlY3RlZCBhbmQgdHJpZ2dlcgorCUJpdHMgNC03OiBWYWwgMiA9IGVmZmVjdCBhbG9uZyBvbmUgYXhpcy4gQnl0ZSAwNSBpbmRpY2F0ZXMgZGlyZWN0aW9uCisJICAgICAgICAgIFZhbCA0ID0gWCBheGlzIG9ubHkuIEJ5dGUgMDUgbXVzdCBjb250YWluIDVhCisJICAgICAgICAgIFZhbCA4ID0gWSBheGlzIG9ubHkuIEJ5dGUgMDUgbXVzdCBjb250YWluIGI0CisJICAgICAgICAgIFZhbCBjID0gWCBhbmQgWSBheGVzLiBCeXRlcyAwNSBtdXN0IGNvbnRhaW4gNjAKKwlCaXRzIDAtMzogVmFsIDAgPSBObyB0cmlnZ2VyCisJICAgICAgICAgIFZhbCB4KzEgPSBCdXR0b24geCB0cmlnZ2VycyB0aGUgZWZmZWN0CisJV2hlbiB0aGUgd2hvbGUgYnl0ZSBpcyAwLCBjYW5jZWwgdGhlIHByZXZpb3VzbHkgc2V0IHRyaWdnZXIKKworMDMtMDQgRHVyYXRpb24gb2YgZWZmZWN0IChsaXR0bGUgZW5kaWFuIGVuY29kaW5nLCBpbiBtcykKKworMDUgRGlyZWN0aW9uIG9mIGVmZmVjdCwgaWYgYXBwbGljYWJsZS4gRWxzZSwgc2VlIDAyIGZvciB2YWx1ZSB0byBhc3NpZ24uCisKKzA2LTA3IE1pbmltdW0gdGltZSBiZXR3ZWVuIHRyaWdnZXJpbmcuCisKKzA4LTA5IEFkZHJlc3Mgb2YgcGVyaW9kaWNpdHkgb3IgbWFnbml0dWRlIHBhcmFtZXRlcnMKKzBhLTBiIEFkZHJlc3Mgb2YgYXR0YWNrIGFuZCBmYWRlIHBhcmFtZXRlcnMsIG9yIGZmZmYgaWYgbm9uZS4KKypvcioKKzA4LTA5IEFkZHJlc3Mgb2YgaW50ZXJhY3RpdmUgcGFyYW1ldGVycyBmb3IgWC1heGlzLCBvciBmZmZmIGlmIG5vdCBhcHBsaWNhYmxlCiswYS0wYiBBZGRyZXNzIG9mIGludGVyYWN0aXZlIHBhcmFtZXRlcnMgZm9yIFktYXhpcywgb3IgZmZmZiBpZiBub3QgYXBwbGljYWJsZQorCiswYy0wZCBEZWxheSBiZWZvcmUgZXhlY3V0aW9uIG9mIGVmZmVjdCAobGl0dGxlIGVuZGlhbiBlbmNvZGluZywgaW4gbXMpCisKKworKiogVGltZSBiYXNlZCBwYXJhbWV0ZXJzICoqCisKKyoqKiBBdHRhY2sgYW5kIGZhZGUgKioqCitPUD0gIDAyCitMRU49IDA4CiswMC0wMSBBZGRyZXNzIHdoZXJlIHRvIHN0b3JlIHRoZSBwYXJhbWV0ZXJzCiswMi0wMyBEdXJhdGlvbiBvZiBhdHRhY2sgKGxpdHRsZSBlbmRpYW4gZW5jb2RpbmcsIGluIG1zKQorMDQgTGV2ZWwgYXQgZW5kIG9mIGF0dGFjay4gU2lnbmVkIGJ5dGUuCiswNS0wNiBEdXJhdGlvbiBvZiBmYWRlLgorMDcgTGV2ZWwgYXQgZW5kIG9mIGZhZGUuCisKKyoqKiBNYWduaXR1ZGUgKioqCitPUD0gIDAzCitMRU49IDAzCiswMC0wMSBBZGRyZXNzCiswMiBMZXZlbC4gU2lnbmVkIGJ5dGUuCisKKyoqKiBQZXJpb2RpY2l0eSAqKioKK09QPSAgMDQKK0xFTj0gMDcKKzAwLTAxIEFkZHJlc3MKKzAyIE1hZ25pdHVkZS4gU2lnbmVkIGJ5dGUuCiswMyBPZmZzZXQuIFNpZ25lZCBieXRlLgorMDQgUGhhc2UuIFZhbCAwMCA9IDAgZGVnLCBWYWwgNDAgPSA5MCBkZWdzLgorMDUtMDYgUGVyaW9kIChsaXR0bGUgZW5kaWFuIGVuY29kaW5nLCBpbiBtcykKKworKiogSW50ZXJhY3RpdmUgcGFyYW1ldGVycyAqKgorT1A9ICAwNQorTEVOPSAwYQorMDAtMDEgQWRkcmVzcworMDIgUG9zaXRpdmUgQ29lZmYKKzAzIE5lZ2F0aXZlIENvZWZmCiswNCswNSBPZmZzZXQgKGNlbnRlcikKKzA2KzA3IERlYWQgYmFuZCAoVmFsIDAxRjQgPSA1MDAwIChkZWNpbWFsKSkKKzA4IFBvc2l0aXZlIHNhdHVyYXRpb24gKFZhbCAwYSA9IDEwMDAgKGRlY2ltYWwpIFZhbCA2NCA9IDEwMDAwIChkZWNpbWFsKSkKKzA5IE5lZ2F0aXZlIHNhdHVyYXRpb24KKworVGhlIGVuY29kaW5nIGlzIGEgYml0IGZ1bm55IGhlcmU6IEZvciBjb2VmZnMsIHRoZXNlIGFyZSBzaWduZWQgdmFsdWVzLiBUaGUKK21heGltdW0gdmFsdWUgaXMgNjQgKDEwMCBkZWNpbWFsKSwgdGhlIG1pbiBpcyA5Yy4KK0ZvciB0aGUgb2Zmc2V0LCB0aGUgbWluaW11bSB2YWx1ZSBpcyBGRTBDLCB0aGUgbWF4aW11bSB2YWx1ZSBpcyAwMUY0LgorRm9yIHRoZSBkZWFkYmFuZCwgdGhlIG1pbmltdW0gdmFsdWUgaXMgMCwgdGhlIG1heCBpcyAwM0U4LgorCisqKiBDb250cm9scyAqKgorT1A9ICA0MQorTEVOPSAwMworMDAgQ2hhbm5lbAorMDEgU3RhcnQvU3RvcAorCVZhbCAwMDogU3RvcAorCVZhbCAwMTogU3RhcnQgYW5kIHBsYXkgb25jZS4KKwlWYWwgNDE6IFN0YXJ0IGFuZCBwbGF5IG4gdGltZXMgKFNlZSBieXRlIDAyIGJlbG93KQorMDIgTnVtYmVyIG9mIGl0ZXJhdGlvbnMgbi4KKworKiogSW5pdCAqKgorCisqKiogUXVlcnlpbmcgZmVhdHVyZXMgKioqCitPUD0gIGZmCitRdWVyeSBjb21tYW5kLiBMZW5ndGggdmFyaWVzIGFjY29yZGluZyB0byB0aGUgcXVlcnkgdHlwZS4KK1RoZSBnZW5lcmFsIGZvcm1hdCBvZiB0aGlzIHBhY2tldCBpczoKK2ZmIDAxIFFVRVJZIFtJTkRFWF0gQ0hFQ0tTVU0KK3Jlc3BvbnNlcyBhcmUgb2YgdGhlIHNhbWUgZm9ybToKK0ZGIExFTiBRVUVSWSBWQUxVRV9RVUVSSUVEIENIRUNLU1VNMgord2hlcmUgTEVOID0gMSArIGxlbmd0aChWQUxVRV9RVUVSSUVEKQorCisqKioqIFF1ZXJ5IHJhbSBzaXplICoqKioKK1FVRVJZID0gNDIgKCdCJ3VmZmVyIHNpemUpCitUaGUgZGV2aWNlIHNob3VsZCByZXBseSB3aXRoIHRoZSBzYW1lIHBhY2tldCBwbHVzIHR3byBhZGRpdGlvbmFsIGJ5dGVzCitjb250YWluaW5nIHRoZSBzaXplIG9mIHRoZSBtZW1vcnk6CitmZiAwMyA0MiAwMyBlOCBDUyB3b3VsZCBtZWFuIHRoYXQgdGhlIGRldmljZSBoYXMgMTAwMCBieXRlcyBvZiByYW0gYXZhaWxhYmxlLgorCisqKioqIFF1ZXJ5IG51bWJlciBvZiBlZmZlY3RzICoqKioKK1FVRVJZID0gNGUgKCdOJ3VtYmVyIG9mIGVmZmVjdHMpCitUaGUgZGV2aWNlIHNob3VsZCByZXNwb25kIGJ5IHNlbmRpbmcgdGhlIG51bWJlciBvZiBlZmZlY3RzIHRoYXQgY2FuIGJlIHBsYXllZAorYXQgdGhlIHNhbWUgdGltZSAob25lIGJ5dGUpCitmZiAwMiA0ZSAxNCBDUyB3b3VsZCBzdGFuZCBmb3IgMjAgZWZmZWN0cy4KKworKioqKiBWZW5kb3IncyBpZCAqKioqCitRVUVSWSA9IDRkICgnTSdhbnVmYWN0dXJlcikKK1F1ZXJ5IHRoZSB2ZW5kb3JzJ2lkICgyIGJ5dGVzKQorCisqKioqIFByb2R1Y3QgaWQgKioqKioKK1FVRVJZID0gNTAgKCdQJ3JvZHVjdCkKK1F1ZXJ5IHRoZSBwcm9kdWN0IGlkICgyIGJ5dGVzKQorCisqKioqIE9wZW4gZGV2aWNlICoqKioKK1FVRVJZID0gNGYgKCdPJ3BlbikKK05vIGRhdGEgcmV0dXJuZWQuCisKKyoqKiogQ2xvc2UgZGV2aWNlICoqKioqCitRVUVSWSA9IDQzICgnQycpbG9zZQorTm8gZGF0YSByZXR1cm5lZC4KKworKioqKiBRdWVyeSBlZmZlY3QgKioqKgorUVVFUlkgPSA0NSAoJ0UnKQorU2VuZCBlZmZlY3QgdHlwZS4KK1JldHVybnMgbm9uemVybyBpZiBzdXBwb3J0ZWQgKDIgYnl0ZXMpCisKKyoqKiogRmlybXdhcmUgVmVyc2lvbiAqKioqCitRVUVSWSA9IDU2ICgnVidlcnNpb24pCitTZW5kcyBiYWNrIDMgYnl0ZXMgLSBtYWpvciwgbWlub3IsIHN1Ym1pbm9yCisKKyoqKiBJbml0aWFsaXNhdGlvbiBvZiB0aGUgZGV2aWNlICoqKgorCisqKioqIFNldCBDb250cm9sICoqKioKKyEhISBEZXZpY2UgZGVwZW5kZW50LCBjYW4gYmUgZGlmZmVyZW50IG9uIGRpZmZlcmVudCBtb2RlbHMgISEhCitPUD0gIDQwIDxpZHg+IDx2YWw+IFs8dmFsPl0KK0xFTj0gMiBvciAzCiswMCBJZHgKKyAgIElkeCAwMCBTZXQgZGVhZCB6b25lICgwLi4yMDQ4KQorICAgSWR4IDAxIElnbm9yZSBEZWFkbWFuIHNlbnNvciAoMC4uMSkKKyAgIElkeCAwMiBFbmFibGUgY29tbSB3YXRjaGRvZyAoMC4uMSkKKyAgIElkeCAwMyBTZXQgdGhlIHN0cmVuZ3RoIG9mIHRoZSBzcHJpbmcgKDAuLjEwMCkKKyAgIElkeCAwNCBFbmFibGUgb3IgZGlzYWJsZSB0aGUgc3ByaW5nICgwLzEpCisgICBJZHggMDUgU2V0IGF4aXMgc2F0dXJhdGlvbiB0aHJlc2hvbGQgKDAuLjIwNDgpCisKKyoqKiogU2V0IEVmZmVjdCBTdGF0ZSAqKioqCitPUD0gIDQyIDx2YWw+CitMRU49IDEKKzAwIFN0YXRlCisgICBCaXQgMyBQYXVzZSBmb3JjZSBmZWVkYmFjaworICAgQml0IDIgRW5hYmxlIGZvcmNlIGZlZWRiYWNrCisgICBCaXQgMCBTdG9wIGFsbCBlZmZlY3RzCisKKyoqKiogU2V0IG92ZXJhbGwgZ2FpbiAqKioqCitPUD0gIDQzIDx2YWw+CitMRU49IDEKKzAwIEdhaW4KKyAgIFZhbCAwMCA9IDAlCisgICBWYWwgNDAgPSA1MCUKKyAgIFZhbCA4MCA9IDEwMCUKKworKiogUGFyYW1ldGVyIG1lbW9yeSAqKgorCitFYWNoIGRldmljZSBoYXMgYSBjZXJ0YWluIGFtb3VudCBvZiBtZW1vcnkgdG8gc3RvcmUgcGFyYW1ldGVycyBvZiBlZmZlY3RzLgorVGhlIGFtb3VudCBvZiBSQU0gbWF5IHZhcnksIEkgZW5jb3VudGVyZWQgdmFsdWVzIGZyb20gMjAwIHRvIDEwMDAgYnl0ZXMuIEJlbG93CitpcyB0aGUgYW1vdW50IG9mIG1lbW9yeSBhcHBhcmVudGx5IG5lZWRlZCBmb3IgZXZlcnkgc2V0IG9mIHBhcmFtZXRlcnM6CisgLSBwZXJpb2QgOiAwYworIC0gbWFnbml0dWRlIDogMDIKKyAtIGF0dGFjayBhbmQgZmFkZSA6IDBlCisgLSBpbnRlcmFjdGl2ZSA6IDA4CisKKyoqIEFwcGVuZGl4OiBIb3cgdG8gc3R1ZHkgdGhlIHByb3RvY29sID8gKioKKworMS4gR2VuZXJhdGUgZWZmZWN0cyB1c2luZyB0aGUgZm9yY2UgZWRpdG9yIHByb3ZpZGVkIHdpdGggdGhlIERpcmVjdFggU0RLLCBvciAKK3VzZSBJbW1lcnNpb24gU3R1ZGlvIChmcmVlbHkgYXZhaWxhYmxlIGF0IHRoZWlyIHdlYiBzaXRlIGluIHRoZSBkZXZlbG9wZXIgc2VjdGlvbjogCit3d3cuaW1tZXJzaW9uLmNvbSkKKzIuIFN0YXJ0IGEgc29mdCBzcHlpbmcgUlMyMzIgb3IgVVNCIChkZXBlbmRpbmcgb24gd2hlcmUgeW91IGNvbm5lY3RlZCB5b3VyIAoram95c3RpY2svd2hlZWwpLiBJIHVzZWQgQ29tUG9ydFNweSBmcm9tIGZDb2RlciAoYWxwaGEgdmVyc2lvbiEpCiszLiBQbGF5IHRoZSBlZmZlY3QsIGFuZCB3YXRjaCB3aGF0IGhhcHBlbnMgb24gdGhlIHNweSBzY3JlZW4uCisKK0EgZmV3IHdvcmRzIGFib3V0IENvbVBvcnRTcHk6CitBdCBmaXJzdCBnbGFuY2UsIHRoaXMgc29mdHdhcmUgc2VlbXMsIGh1bSwgd2VsbC4uLiBidWdneS4gSW4gZmFjdCwgZGF0YSBhcHBlYXIgd2l0aCBhCitmZXcgc2Vjb25kcyBsYXRlbmN5LiBQZXJzb25hbGx5LCBJIHJlc3RhcnQgaXQgZXZlcnkgdGltZSBJIHBsYXkgYW4gZWZmZWN0LgorUmVtZW1iZXIgaXQncyBmcmVlIChhcyBpbiBmcmVlIGJlZXIpIGFuZCBhbHBoYSEKKworKiogVVJMUyAqKgorQ2hlY2sgd3d3LmltbWVyc2UuY29tIGZvciBJbW1lcnNpb24gU3R1ZGlvLCBhbmQgd3d3LmZjb2Rlci5jb20gZm9yIENvbVBvcnRTcHkuCisKKyoqIEF1dGhvciBvZiB0aGlzIGRvY3VtZW50ICoqCitKb2hhbm4gRGVuZXV4IDxqb2hhbm4uZGVuZXV4QGdtYWlsLmNvbT4KK0hvbWUgcGFnZSBhdCBodHRwOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8qL2h0dHA6Ly93d3cuZXNpbC51bml2LW1ycy5mcgorCitBZGRpdGlvbnMgYnkgVm9qdGVjaCBQYXZsaWsuCisKK0ktRm9yY2UgaXMgdHJhZGVtYXJrIG9mIEltbWVyc2lvbiBDb3JwLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pbnB1dC9pbnB1dC1wcm9ncmFtbWluZy50eHQgYi9Eb2N1bWVudGF0aW9uL2lucHV0L2lucHV0LXByb2dyYW1taW5nLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjhiOWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9pbnB1dC1wcm9ncmFtbWluZy50eHQKQEAgLTAsMCArMSwzMDIgQEAKK1Byb2dyYW1taW5nIGlucHV0IGRyaXZlcnMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworMS4gQ3JlYXRpbmcgYW4gaW5wdXQgZGV2aWNlIGRyaXZlcgorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisxLjAgVGhlIHNpbXBsZXN0IGV4YW1wbGUKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitIZXJlIGNvbWVzIGEgdmVyeSBzaW1wbGUgZXhhbXBsZSBvZiBhbiBpbnB1dCBkZXZpY2UgZHJpdmVyLiBUaGUgZGV2aWNlIGhhcworanVzdCBvbmUgYnV0dG9uIGFuZCB0aGUgYnV0dG9uIGlzIGFjY2Vzc2libGUgYXQgaS9vIHBvcnQgQlVUVE9OX1BPUlQuIFdoZW4KK3ByZXNzZWQgb3IgcmVsZWFzZWQgYSBCVVRUT05fSVJRIGhhcHBlbnMuIFRoZSBkcml2ZXIgY291bGQgbG9vayBsaWtlOgorCisjaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisKKyNpbmNsdWRlIDxhc20vaXJxLmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisKK3N0YXRpYyBzdHJ1Y3QgaW5wdXRfZGV2ICpidXR0b25fZGV2OworCitzdGF0aWMgaXJxcmV0dXJuX3QgYnV0dG9uX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkdW1teSkKK3sKKwlpbnB1dF9yZXBvcnRfa2V5KGJ1dHRvbl9kZXYsIEJUTl8wLCBpbmIoQlVUVE9OX1BPUlQpICYgMSk7CisJaW5wdXRfc3luYyhidXR0b25fZGV2KTsKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKK3N0YXRpYyBpbnQgX19pbml0IGJ1dHRvbl9pbml0KHZvaWQpCit7CisJaW50IGVycm9yOworCisJaWYgKHJlcXVlc3RfaXJxKEJVVFRPTl9JUlEsIGJ1dHRvbl9pbnRlcnJ1cHQsIDAsICJidXR0b24iLCBOVUxMKSkgeworICAgICAgICAgICAgICAgIHByaW50ayhLRVJOX0VSUiAiYnV0dG9uLmM6IENhbid0IGFsbG9jYXRlIGlycSAlZFxuIiwgYnV0dG9uX2lycSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC1FQlVTWTsKKyAgICAgICAgfQorCisJYnV0dG9uX2RldiA9IGlucHV0X2FsbG9jYXRlX2RldmljZSgpOworCWlmICghYnV0dG9uX2RldikgeworCQlwcmludGsoS0VSTl9FUlIgImJ1dHRvbi5jOiBOb3QgZW5vdWdoIG1lbW9yeVxuIik7CisJCWVycm9yID0gLUVOT01FTTsKKwkJZ290byBlcnJfZnJlZV9pcnE7CisJfQorCisJYnV0dG9uX2Rldi0+ZXZiaXRbMF0gPSBCSVRfTUFTSyhFVl9LRVkpOworCWJ1dHRvbl9kZXYtPmtleWJpdFtCSVRfV09SRChCVE5fMCldID0gQklUX01BU0soQlROXzApOworCisJZXJyb3IgPSBpbnB1dF9yZWdpc3Rlcl9kZXZpY2UoYnV0dG9uX2Rldik7CisJaWYgKGVycm9yKSB7CisJCXByaW50ayhLRVJOX0VSUiAiYnV0dG9uLmM6IEZhaWxlZCB0byByZWdpc3RlciBkZXZpY2VcbiIpOworCQlnb3RvIGVycl9mcmVlX2RldjsKKwl9CisKKwlyZXR1cm4gMDsKKworIGVycl9mcmVlX2RldjoKKwlpbnB1dF9mcmVlX2RldmljZShidXR0b25fZGV2KTsKKyBlcnJfZnJlZV9pcnE6CisJZnJlZV9pcnEoQlVUVE9OX0lSUSwgYnV0dG9uX2ludGVycnVwdCk7CisJcmV0dXJuIGVycm9yOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgYnV0dG9uX2V4aXQodm9pZCkKK3sKKyAgICAgICAgaW5wdXRfdW5yZWdpc3Rlcl9kZXZpY2UoYnV0dG9uX2Rldik7CisJZnJlZV9pcnEoQlVUVE9OX0lSUSwgYnV0dG9uX2ludGVycnVwdCk7Cit9CisKK21vZHVsZV9pbml0KGJ1dHRvbl9pbml0KTsKK21vZHVsZV9leGl0KGJ1dHRvbl9leGl0KTsKKworMS4xIFdoYXQgdGhlIGV4YW1wbGUgZG9lcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitGaXJzdCBpdCBoYXMgdG8gaW5jbHVkZSB0aGUgPGxpbnV4L2lucHV0Lmg+IGZpbGUsIHdoaWNoIGludGVyZmFjZXMgdG8gdGhlCitpbnB1dCBzdWJzeXN0ZW0uIFRoaXMgcHJvdmlkZXMgYWxsIHRoZSBkZWZpbml0aW9ucyBuZWVkZWQuCisKK0luIHRoZSBfaW5pdCBmdW5jdGlvbiwgd2hpY2ggaXMgY2FsbGVkIGVpdGhlciB1cG9uIG1vZHVsZSBsb2FkIG9yIHdoZW4KK2Jvb3RpbmcgdGhlIGtlcm5lbCwgaXQgZ3JhYnMgdGhlIHJlcXVpcmVkIHJlc291cmNlcyAoaXQgc2hvdWxkIGFsc28gY2hlY2sKK2ZvciB0aGUgcHJlc2VuY2Ugb2YgdGhlIGRldmljZSkuCisKK1RoZW4gaXQgYWxsb2NhdGVzIGEgbmV3IGlucHV0IGRldmljZSBzdHJ1Y3R1cmUgd2l0aCBpbnB1dF9hbGxvY2F0ZV9kZXZpY2UoKQorYW5kIHNldHMgdXAgaW5wdXQgYml0ZmllbGRzLiBUaGlzIHdheSB0aGUgZGV2aWNlIGRyaXZlciB0ZWxscyB0aGUgb3RoZXIKK3BhcnRzIG9mIHRoZSBpbnB1dCBzeXN0ZW1zIHdoYXQgaXQgaXMgLSB3aGF0IGV2ZW50cyBjYW4gYmUgZ2VuZXJhdGVkIG9yCithY2NlcHRlZCBieSB0aGlzIGlucHV0IGRldmljZS4gT3VyIGV4YW1wbGUgZGV2aWNlIGNhbiBvbmx5IGdlbmVyYXRlIEVWX0tFWQordHlwZSBldmVudHMsIGFuZCBmcm9tIHRob3NlIG9ubHkgQlROXzAgZXZlbnQgY29kZS4gVGh1cyB3ZSBvbmx5IHNldCB0aGVzZQordHdvIGJpdHMuIFdlIGNvdWxkIGhhdmUgdXNlZAorCisJc2V0X2JpdChFVl9LRVksIGJ1dHRvbl9kZXYuZXZiaXQpOworCXNldF9iaXQoQlROXzAsIGJ1dHRvbl9kZXYua2V5Yml0KTsKKworYXMgd2VsbCwgYnV0IHdpdGggbW9yZSB0aGFuIHNpbmdsZSBiaXRzIHRoZSBmaXJzdCBhcHByb2FjaCB0ZW5kcyB0byBiZQorc2hvcnRlci4KKworVGhlbiB0aGUgZXhhbXBsZSBkcml2ZXIgcmVnaXN0ZXJzIHRoZSBpbnB1dCBkZXZpY2Ugc3RydWN0dXJlIGJ5IGNhbGxpbmcKKworCWlucHV0X3JlZ2lzdGVyX2RldmljZSgmYnV0dG9uX2Rldik7CisKK1RoaXMgYWRkcyB0aGUgYnV0dG9uX2RldiBzdHJ1Y3R1cmUgdG8gbGlua2VkIGxpc3RzIG9mIHRoZSBpbnB1dCBkcml2ZXIgYW5kCitjYWxscyBkZXZpY2UgaGFuZGxlciBtb2R1bGVzIF9jb25uZWN0IGZ1bmN0aW9ucyB0byB0ZWxsIHRoZW0gYSBuZXcgaW5wdXQKK2RldmljZSBoYXMgYXBwZWFyZWQuIGlucHV0X3JlZ2lzdGVyX2RldmljZSgpIG1heSBzbGVlcCBhbmQgdGhlcmVmb3JlIG11c3QKK25vdCBiZSBjYWxsZWQgZnJvbSBhbiBpbnRlcnJ1cHQgb3Igd2l0aCBhIHNwaW5sb2NrIGhlbGQuCisKK1doaWxlIGluIHVzZSwgdGhlIG9ubHkgdXNlZCBmdW5jdGlvbiBvZiB0aGUgZHJpdmVyIGlzCisKKwlidXR0b25faW50ZXJydXB0KCkKKword2hpY2ggdXBvbiBldmVyeSBpbnRlcnJ1cHQgZnJvbSB0aGUgYnV0dG9uIGNoZWNrcyBpdHMgc3RhdGUgYW5kIHJlcG9ydHMgaXQKK3ZpYSB0aGUKKworCWlucHV0X3JlcG9ydF9rZXkoKQorCitjYWxsIHRvIHRoZSBpbnB1dCBzeXN0ZW0uIFRoZXJlIGlzIG5vIG5lZWQgdG8gY2hlY2sgd2hldGhlciB0aGUgaW50ZXJydXB0Cityb3V0aW5lIGlzbid0IHJlcG9ydGluZyB0d28gc2FtZSB2YWx1ZSBldmVudHMgKHByZXNzLCBwcmVzcyBmb3IgZXhhbXBsZSkgdG8KK3RoZSBpbnB1dCBzeXN0ZW0sIGJlY2F1c2UgdGhlIGlucHV0X3JlcG9ydF8qIGZ1bmN0aW9ucyBjaGVjayB0aGF0Cit0aGVtc2VsdmVzLgorCitUaGVuIHRoZXJlIGlzIHRoZQorCisJaW5wdXRfc3luYygpCisKK2NhbGwgdG8gdGVsbCB0aG9zZSB3aG8gcmVjZWl2ZSB0aGUgZXZlbnRzIHRoYXQgd2UndmUgc2VudCBhIGNvbXBsZXRlIHJlcG9ydC4KK1RoaXMgZG9lc24ndCBzZWVtIGltcG9ydGFudCBpbiB0aGUgb25lIGJ1dHRvbiBjYXNlLCBidXQgaXMgcXVpdGUgaW1wb3J0YW50Citmb3IgZm9yIGV4YW1wbGUgbW91c2UgbW92ZW1lbnQsIHdoZXJlIHlvdSBkb24ndCB3YW50IHRoZSBYIGFuZCBZIHZhbHVlcwordG8gYmUgaW50ZXJwcmV0ZWQgc2VwYXJhdGVseSwgYmVjYXVzZSB0aGF0J2QgcmVzdWx0IGluIGEgZGlmZmVyZW50IG1vdmVtZW50LgorCisxLjIgZGV2LT5vcGVuKCkgYW5kIGRldi0+Y2xvc2UoKQorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworSW4gY2FzZSB0aGUgZHJpdmVyIGhhcyB0byByZXBlYXRlZGx5IHBvbGwgdGhlIGRldmljZSwgYmVjYXVzZSBpdCBkb2Vzbid0CitoYXZlIGFuIGludGVycnVwdCBjb21pbmcgZnJvbSBpdCBhbmQgdGhlIHBvbGxpbmcgaXMgdG9vIGV4cGVuc2l2ZSB0byBiZSBkb25lCithbGwgdGhlIHRpbWUsIG9yIGlmIHRoZSBkZXZpY2UgdXNlcyBhIHZhbHVhYmxlIHJlc291cmNlIChlZy4gaW50ZXJydXB0KSwgaXQKK2NhbiB1c2UgdGhlIG9wZW4gYW5kIGNsb3NlIGNhbGxiYWNrIHRvIGtub3cgd2hlbiBpdCBjYW4gc3RvcCBwb2xsaW5nIG9yCityZWxlYXNlIHRoZSBpbnRlcnJ1cHQgYW5kIHdoZW4gaXQgbXVzdCByZXN1bWUgcG9sbGluZyBvciBncmFiIHRoZSBpbnRlcnJ1cHQKK2FnYWluLiBUbyBkbyB0aGF0LCB3ZSB3b3VsZCBhZGQgdGhpcyB0byBvdXIgZXhhbXBsZSBkcml2ZXI6CisKK3N0YXRpYyBpbnQgYnV0dG9uX29wZW4oc3RydWN0IGlucHV0X2RldiAqZGV2KQoreworCWlmIChyZXF1ZXN0X2lycShCVVRUT05fSVJRLCBidXR0b25faW50ZXJydXB0LCAwLCAiYnV0dG9uIiwgTlVMTCkpIHsKKyAgICAgICAgICAgICAgICBwcmludGsoS0VSTl9FUlIgImJ1dHRvbi5jOiBDYW4ndCBhbGxvY2F0ZSBpcnEgJWRcbiIsIGJ1dHRvbl9pcnEpOworICAgICAgICAgICAgICAgIHJldHVybiAtRUJVU1k7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgYnV0dG9uX2Nsb3NlKHN0cnVjdCBpbnB1dF9kZXYgKmRldikKK3sKKyAgICAgICAgZnJlZV9pcnEoSVJRX0FNSUdBX1ZFUlRCLCBidXR0b25faW50ZXJydXB0KTsKK30KKworc3RhdGljIGludCBfX2luaXQgYnV0dG9uX2luaXQodm9pZCkKK3sKKwkuLi4KKwlidXR0b25fZGV2LT5vcGVuID0gYnV0dG9uX29wZW47CisJYnV0dG9uX2Rldi0+Y2xvc2UgPSBidXR0b25fY2xvc2U7CisJLi4uCit9CisKK05vdGUgdGhhdCBpbnB1dCBjb3JlIGtlZXBzIHRyYWNrIG9mIG51bWJlciBvZiB1c2VycyBmb3IgdGhlIGRldmljZSBhbmQKK21ha2VzIHN1cmUgdGhhdCBkZXYtPm9wZW4oKSBpcyBjYWxsZWQgb25seSB3aGVuIHRoZSBmaXJzdCB1c2VyIGNvbm5lY3RzCit0byB0aGUgZGV2aWNlIGFuZCB0aGF0IGRldi0+Y2xvc2UoKSBpcyBjYWxsZWQgd2hlbiB0aGUgdmVyeSBsYXN0IHVzZXIKK2Rpc2Nvbm5lY3RzLiBDYWxscyB0byBib3RoIGNhbGxiYWNrcyBhcmUgc2VyaWFsaXplZC4KKworVGhlIG9wZW4oKSBjYWxsYmFjayBzaG91bGQgcmV0dXJuIGEgMCBpbiBjYXNlIG9mIHN1Y2Nlc3Mgb3IgYW55IG5vbnplcm8gdmFsdWUKK2luIGNhc2Ugb2YgZmFpbHVyZS4gVGhlIGNsb3NlKCkgY2FsbGJhY2sgKHdoaWNoIGlzIHZvaWQpIG11c3QgYWx3YXlzIHN1Y2NlZWQuCisKKzEuMyBCYXNpYyBldmVudCB0eXBlcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1RoZSBtb3N0IHNpbXBsZSBldmVudCB0eXBlIGlzIEVWX0tFWSwgd2hpY2ggaXMgdXNlZCBmb3Iga2V5cyBhbmQgYnV0dG9ucy4KK0l0J3MgcmVwb3J0ZWQgdG8gdGhlIGlucHV0IHN5c3RlbSB2aWE6CisKKwlpbnB1dF9yZXBvcnRfa2V5KHN0cnVjdCBpbnB1dF9kZXYgKmRldiwgaW50IGNvZGUsIGludCB2YWx1ZSkKKworU2VlIGxpbnV4L2lucHV0LmggZm9yIHRoZSBhbGxvd2FibGUgdmFsdWVzIG9mIGNvZGUgKGZyb20gMCB0byBLRVlfTUFYKS4KK1ZhbHVlIGlzIGludGVycHJldGVkIGFzIGEgdHJ1dGggdmFsdWUsIGllIGFueSBub256ZXJvIHZhbHVlIG1lYW5zIGtleQorcHJlc3NlZCwgemVybyB2YWx1ZSBtZWFucyBrZXkgcmVsZWFzZWQuIFRoZSBpbnB1dCBjb2RlIGdlbmVyYXRlcyBldmVudHMgb25seQoraW4gY2FzZSB0aGUgdmFsdWUgaXMgZGlmZmVyZW50IGZyb20gYmVmb3JlLgorCitJbiBhZGRpdGlvbiB0byBFVl9LRVksIHRoZXJlIGFyZSB0d28gbW9yZSBiYXNpYyBldmVudCB0eXBlczogRVZfUkVMIGFuZAorRVZfQUJTLiBUaGV5IGFyZSB1c2VkIGZvciByZWxhdGl2ZSBhbmQgYWJzb2x1dGUgdmFsdWVzIHN1cHBsaWVkIGJ5IHRoZQorZGV2aWNlLiBBIHJlbGF0aXZlIHZhbHVlIG1heSBiZSBmb3IgZXhhbXBsZSBhIG1vdXNlIG1vdmVtZW50IGluIHRoZSBYIGF4aXMuCitUaGUgbW91c2UgcmVwb3J0cyBpdCBhcyBhIHJlbGF0aXZlIGRpZmZlcmVuY2UgZnJvbSB0aGUgbGFzdCBwb3NpdGlvbiwKK2JlY2F1c2UgaXQgZG9lc24ndCBoYXZlIGFueSBhYnNvbHV0ZSBjb29yZGluYXRlIHN5c3RlbSB0byB3b3JrIGluLiBBYnNvbHV0ZQorZXZlbnRzIGFyZSBuYW1lbHkgZm9yIGpveXN0aWNrcyBhbmQgZGlnaXRpemVycyAtIGRldmljZXMgdGhhdCBkbyB3b3JrIGluIGFuCithYnNvbHV0ZSBjb29yZGluYXRlIHN5c3RlbXMuCisKK0hhdmluZyB0aGUgZGV2aWNlIHJlcG9ydCBFVl9SRUwgYnV0dG9ucyBpcyBhcyBzaW1wbGUgYXMgd2l0aCBFVl9LRVksIHNpbXBseQorc2V0IHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgYW5kIGNhbGwgdGhlCisKKwlpbnB1dF9yZXBvcnRfcmVsKHN0cnVjdCBpbnB1dF9kZXYgKmRldiwgaW50IGNvZGUsIGludCB2YWx1ZSkKKworZnVuY3Rpb24uIEV2ZW50cyBhcmUgZ2VuZXJhdGVkIG9ubHkgZm9yIG5vbnplcm8gdmFsdWUuCisKK0hvd2V2ZXIgRVZfQUJTIHJlcXVpcmVzIGEgbGl0dGxlIHNwZWNpYWwgY2FyZS4gQmVmb3JlIGNhbGxpbmcKK2lucHV0X3JlZ2lzdGVyX2RldmljZSwgeW91IGhhdmUgdG8gZmlsbCBhZGRpdGlvbmFsIGZpZWxkcyBpbiB0aGUgaW5wdXRfZGV2CitzdHJ1Y3QgZm9yIGVhY2ggYWJzb2x1dGUgYXhpcyB5b3VyIGRldmljZSBoYXMuIElmIG91ciBidXR0b24gZGV2aWNlIGhhZCBhbHNvCit0aGUgQUJTX1ggYXhpczoKKworCWJ1dHRvbl9kZXYuYWJzbWluW0FCU19YXSA9IDA7CisJYnV0dG9uX2Rldi5hYnNtYXhbQUJTX1hdID0gMjU1OworCWJ1dHRvbl9kZXYuYWJzZnV6eltBQlNfWF0gPSA0OworCWJ1dHRvbl9kZXYuYWJzZmxhdFtBQlNfWF0gPSA4OworCitPciwgeW91IGNhbiBqdXN0IHNheToKKworCWlucHV0X3NldF9hYnNfcGFyYW1zKGJ1dHRvbl9kZXYsIEFCU19YLCAwLCAyNTUsIDQsIDgpOworCitUaGlzIHNldHRpbmcgd291bGQgYmUgYXBwcm9wcmlhdGUgZm9yIGEgam95c3RpY2sgWCBheGlzLCB3aXRoIHRoZSBtaW5pbXVtIG9mCiswLCBtYXhpbXVtIG9mIDI1NSAod2hpY2ggdGhlIGpveXN0aWNrICptdXN0KiBiZSBhYmxlIHRvIHJlYWNoLCBubyBwcm9ibGVtIGlmCitpdCBzb21ldGltZXMgcmVwb3J0cyBtb3JlLCBidXQgaXQgbXVzdCBiZSBhYmxlIHRvIGFsd2F5cyByZWFjaCB0aGUgbWluIGFuZAorbWF4IHZhbHVlcyksIHdpdGggbm9pc2UgaW4gdGhlIGRhdGEgdXAgdG8gKy0gNCwgYW5kIHdpdGggYSBjZW50ZXIgZmxhdAorcG9zaXRpb24gb2Ygc2l6ZSA4LgorCitJZiB5b3UgZG9uJ3QgbmVlZCBhYnNmdXp6IGFuZCBhYnNmbGF0LCB5b3UgY2FuIHNldCB0aGVtIHRvIHplcm8sIHdoaWNoIG1lYW4KK3RoYXQgdGhlIHRoaW5nIGlzIHByZWNpc2UgYW5kIGFsd2F5cyByZXR1cm5zIHRvIGV4YWN0bHkgdGhlIGNlbnRlciBwb3NpdGlvbgorKGlmIGl0IGhhcyBhbnkpLgorCisxLjQgQklUU19UT19MT05HUygpLCBCSVRfV09SRCgpLCBCSVRfTUFTSygpCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitUaGVzZSB0aHJlZSBtYWNyb3MgZnJvbSBiaXRvcHMuaCBoZWxwIHNvbWUgYml0ZmllbGQgY29tcHV0YXRpb25zOgorCisJQklUU19UT19MT05HUyh4KSAtIHJldHVybnMgdGhlIGxlbmd0aCBvZiBhIGJpdGZpZWxkIGFycmF5IGluIGxvbmdzIGZvcgorCQkJICAgeCBiaXRzCisJQklUX1dPUkQoeCkJIC0gcmV0dXJucyB0aGUgaW5kZXggaW4gdGhlIGFycmF5IGluIGxvbmdzIGZvciBiaXQgeAorCUJJVF9NQVNLKHgpCSAtIHJldHVybnMgdGhlIGluZGV4IGluIGEgbG9uZyBmb3IgYml0IHgKKworMS41IFRoZSBpZCogYW5kIG5hbWUgZmllbGRzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitUaGUgZGV2LT5uYW1lIHNob3VsZCBiZSBzZXQgYmVmb3JlIHJlZ2lzdGVyaW5nIHRoZSBpbnB1dCBkZXZpY2UgYnkgdGhlIGlucHV0CitkZXZpY2UgZHJpdmVyLiBJdCdzIGEgc3RyaW5nIGxpa2UgJ0dlbmVyaWMgYnV0dG9uIGRldmljZScgY29udGFpbmluZyBhCit1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhlIGRldmljZS4KKworVGhlIGlkKiBmaWVsZHMgY29udGFpbiB0aGUgYnVzIElEIChQQ0ksIFVTQiwgLi4uKSwgdmVuZG9yIElEIGFuZCBkZXZpY2UgSUQKK29mIHRoZSBkZXZpY2UuIFRoZSBidXMgSURzIGFyZSBkZWZpbmVkIGluIGlucHV0LmguIFRoZSB2ZW5kb3IgYW5kIGRldmljZSBpZHMKK2FyZSBkZWZpbmVkIGluIHBjaV9pZHMuaCwgdXNiX2lkcy5oIGFuZCBzaW1pbGFyIGluY2x1ZGUgZmlsZXMuIFRoZXNlIGZpZWxkcworc2hvdWxkIGJlIHNldCBieSB0aGUgaW5wdXQgZGV2aWNlIGRyaXZlciBiZWZvcmUgcmVnaXN0ZXJpbmcgaXQuCisKK1RoZSBpZHR5cGUgZmllbGQgY2FuIGJlIHVzZWQgZm9yIHNwZWNpZmljIGluZm9ybWF0aW9uIGZvciB0aGUgaW5wdXQgZGV2aWNlCitkcml2ZXIuCisKK1RoZSBpZCBhbmQgbmFtZSBmaWVsZHMgY2FuIGJlIHBhc3NlZCB0byB1c2VybGFuZCB2aWEgdGhlIGV2ZGV2IGludGVyZmFjZS4KKworMS42IFRoZSBrZXljb2RlLCBrZXljb2RlbWF4LCBrZXljb2Rlc2l6ZSBmaWVsZHMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitUaGVzZSB0aHJlZSBmaWVsZHMgc2hvdWxkIGJlIHVzZWQgYnkgaW5wdXQgZGV2aWNlcyB0aGF0IGhhdmUgZGVuc2Uga2V5bWFwcy4KK1RoZSBrZXljb2RlIGlzIGFuIGFycmF5IHVzZWQgdG8gbWFwIGZyb20gc2NhbmNvZGVzIHRvIGlucHV0IHN5c3RlbSBrZXljb2Rlcy4KK1RoZSBrZXljb2RlIG1heCBzaG91bGQgY29udGFpbiB0aGUgc2l6ZSBvZiB0aGUgYXJyYXkgYW5kIGtleWNvZGVzaXplIHRoZQorc2l6ZSBvZiBlYWNoIGVudHJ5IGluIGl0IChpbiBieXRlcykuCisKK1VzZXJzcGFjZSBjYW4gcXVlcnkgYW5kIGFsdGVyIGN1cnJlbnQgc2NhbmNvZGUgdG8ga2V5Y29kZSBtYXBwaW5ncyB1c2luZworRVZJT0NHS0VZQ09ERSBhbmQgRVZJT0NTS0VZQ09ERSBpb2N0bHMgb24gY29ycmVzcG9uZGluZyBldmRldiBpbnRlcmZhY2UuCitXaGVuIGEgZGV2aWNlIGhhcyBhbGwgMyBhZm9yZW1lbnRpb25lZCBmaWVsZHMgZmlsbGVkIGluLCB0aGUgZHJpdmVyIG1heQorcmVseSBvbiBrZXJuZWwncyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHNldHRpbmcgYW5kIHF1ZXJ5aW5nIGtleWNvZGUKK21hcHBpbmdzLgorCisxLjcgZGV2LT5nZXRrZXljb2RlKCkgYW5kIGRldi0+c2V0a2V5Y29kZSgpCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK2dldGtleWNvZGUoKSBhbmQgc2V0a2V5Y29kZSgpIGNhbGxiYWNrcyBhbGxvdyBkcml2ZXJzIHRvIG92ZXJyaWRlIGRlZmF1bHQKK2tleWNvZGUva2V5Y29kZXNpemUva2V5Y29kZW1heCBtYXBwaW5nIG1lY2hhbmlzbSBwcm92aWRlZCBieSBpbnB1dCBjb3JlCithbmQgaW1wbGVtZW50IHNwYXJzZSBrZXljb2RlIG1hcHMuCisKKzEuOCBLZXkgYXV0b3JlcGVhdAorfn5+fn5+fn5+fn5+fn5+fn5+CisKKy4uLiBpcyBzaW1wbGUuIEl0IGlzIGhhbmRsZWQgYnkgdGhlIGlucHV0LmMgbW9kdWxlLiBIYXJkd2FyZSBhdXRvcmVwZWF0IGlzCitub3QgdXNlZCwgYmVjYXVzZSBpdCdzIG5vdCBwcmVzZW50IGluIG1hbnkgZGV2aWNlcyBhbmQgZXZlbiB3aGVyZSBpdCBpcworcHJlc2VudCwgaXQgaXMgYnJva2VuIHNvbWV0aW1lcyAoYXQga2V5Ym9hcmRzOiBUb3NoaWJhIG5vdGVib29rcykuIFRvIGVuYWJsZQorYXV0b3JlcGVhdCBmb3IgeW91ciBkZXZpY2UsIGp1c3Qgc2V0IEVWX1JFUCBpbiBkZXYtPmV2Yml0LiBBbGwgd2lsbCBiZQoraGFuZGxlZCBieSB0aGUgaW5wdXQgc3lzdGVtLgorCisxLjkgT3RoZXIgZXZlbnQgdHlwZXMsIGhhbmRsaW5nIG91dHB1dCBldmVudHMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitUaGUgb3RoZXIgZXZlbnQgdHlwZXMgdXAgdG8gbm93IGFyZToKKworRVZfTEVEIC0gdXNlZCBmb3IgdGhlIGtleWJvYXJkIExFRHMuCitFVl9TTkQgLSB1c2VkIGZvciBrZXlib2FyZCBiZWVwcy4KKworVGhleSBhcmUgdmVyeSBzaW1pbGFyIHRvIGZvciBleGFtcGxlIGtleSBldmVudHMsIGJ1dCB0aGV5IGdvIGluIHRoZSBvdGhlcgorZGlyZWN0aW9uIC0gZnJvbSB0aGUgc3lzdGVtIHRvIHRoZSBpbnB1dCBkZXZpY2UgZHJpdmVyLiBJZiB5b3VyIGlucHV0IGRldmljZQorZHJpdmVyIGNhbiBoYW5kbGUgdGhlc2UgZXZlbnRzLCBpdCBoYXMgdG8gc2V0IHRoZSByZXNwZWN0aXZlIGJpdHMgaW4gZXZiaXQsCisqYW5kKiBhbHNvIHRoZSBjYWxsYmFjayByb3V0aW5lOgorCisJYnV0dG9uX2Rldi0+ZXZlbnQgPSBidXR0b25fZXZlbnQ7CisKK2ludCBidXR0b25fZXZlbnQoc3RydWN0IGlucHV0X2RldiAqZGV2LCB1bnNpZ25lZCBpbnQgdHlwZSwgdW5zaWduZWQgaW50IGNvZGUsIGludCB2YWx1ZSk7Cit7CisJaWYgKHR5cGUgPT0gRVZfU05EICYmIGNvZGUgPT0gU05EX0JFTEwpIHsKKwkJb3V0Yih2YWx1ZSwgQlVUVE9OX0JFTEwpOworCQlyZXR1cm4gMDsKKwl9CisJcmV0dXJuIC0xOworfQorCitUaGlzIGNhbGxiYWNrIHJvdXRpbmUgY2FuIGJlIGNhbGxlZCBmcm9tIGFuIGludGVycnVwdCBvciBhIEJIIChhbHRob3VnaCB0aGF0Citpc24ndCBhIHJ1bGUpLCBhbmQgdGh1cyBtdXN0IG5vdCBzbGVlcCwgYW5kIG11c3Qgbm90IHRha2UgdG9vIGxvbmcgdG8gZmluaXNoLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pbnB1dC9pbnB1dC50eHQgYi9Eb2N1bWVudGF0aW9uL2lucHV0L2lucHV0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWNmZGRiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9pbnB1dC50eHQKQEAgLTAsMCArMSwyOTAgQEAKKwkJCSAgTGludXggSW5wdXQgZHJpdmVycyB2MS4wCisJICAgICAgIChjKSAxOTk5LTIwMDEgVm9qdGVjaCBQYXZsaWsgPHZvanRlY2hAdWN3LmN6PgorCQkJICAgICBTcG9uc29yZWQgYnkgU3VTRQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiswLiBEaXNjbGFpbWVyCit+fn5+fn5+fn5+fn5+CisgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cit1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQorU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKQorYW55IGxhdGVyIHZlcnNpb24uCisKKyAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkKK29yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKK21vcmUgZGV0YWlscy4KKworICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZword2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkKK1RlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisKKyAgU2hvdWxkIHlvdSBuZWVkIHRvIGNvbnRhY3QgbWUsIHRoZSBhdXRob3IsIHlvdSBjYW4gZG8gc28gZWl0aGVyIGJ5IGUtbWFpbAorLSBtYWlsIHlvdXIgbWVzc2FnZSB0byA8dm9qdGVjaEB1Y3cuY3o+LCBvciBieSBwYXBlciBtYWlsOiBWb2p0ZWNoIFBhdmxpaywKK1NpbXVua292YSAxNTk0LCBQcmFndWUgOCwgMTgyIDAwIEN6ZWNoIFJlcHVibGljCisKKyAgRm9yIHlvdXIgY29udmVuaWVuY2UsIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgaXMgaW5jbHVkZWQKK2luIHRoZSBwYWNrYWdlOiBTZWUgdGhlIGZpbGUgQ09QWUlORy4KKworMS4gSW50cm9kdWN0aW9uCit+fn5+fn5+fn5+fn5+fn4KKyAgVGhpcyBpcyBhIGNvbGxlY3Rpb24gb2YgZHJpdmVycyB0aGF0IGlzIGRlc2lnbmVkIHRvIHN1cHBvcnQgYWxsIGlucHV0CitkZXZpY2VzIHVuZGVyIExpbnV4LiBXaGlsZSBpdCBpcyBjdXJyZW50bHkgdXNlZCBvbmx5IG9uIGZvciBVU0IgaW5wdXQKK2RldmljZXMsIGZ1dHVyZSB1c2UgKHNheSAyLjUvMi42KSBpcyBleHBlY3RlZCB0byBleHBhbmQgdG8gcmVwbGFjZQorbW9zdCBvZiB0aGUgZXhpc3RpbmcgaW5wdXQgc3lzdGVtLCB3aGljaCBpcyB3aHkgaXQgbGl2ZXMgaW4KK2RyaXZlcnMvaW5wdXQvIGluc3RlYWQgb2YgZHJpdmVycy91c2IvLgorCisgIFRoZSBjZW50cmUgb2YgdGhlIGlucHV0IGRyaXZlcnMgaXMgdGhlIGlucHV0IG1vZHVsZSwgd2hpY2ggbXVzdCBiZQorbG9hZGVkIGJlZm9yZSBhbnkgb3RoZXIgb2YgdGhlIGlucHV0IG1vZHVsZXMgLSBpdCBzZXJ2ZXMgYXMgYSB3YXkgb2YKK2NvbW11bmljYXRpb24gYmV0d2VlbiB0d28gZ3JvdXBzIG9mIG1vZHVsZXM6CisKKzEuMSBEZXZpY2UgZHJpdmVycworfn5+fn5+fn5+fn5+fn5+fn5+CisgIFRoZXNlIG1vZHVsZXMgdGFsayB0byB0aGUgaGFyZHdhcmUgKGZvciBleGFtcGxlIHZpYSBVU0IpLCBhbmQgcHJvdmlkZQorZXZlbnRzIChrZXlzdHJva2VzLCBtb3VzZSBtb3ZlbWVudHMpIHRvIHRoZSBpbnB1dCBtb2R1bGUuCisKKzEuMiBFdmVudCBoYW5kbGVycworfn5+fn5+fn5+fn5+fn5+fn5+CisgIFRoZXNlIG1vZHVsZXMgZ2V0IGV2ZW50cyBmcm9tIGlucHV0IGFuZCBwYXNzIHRoZW0gd2hlcmUgbmVlZGVkIHZpYQordmFyaW91cyBpbnRlcmZhY2VzIC0ga2V5c3Ryb2tlcyB0byB0aGUga2VybmVsLCBtb3VzZSBtb3ZlbWVudHMgdmlhIGEKK3NpbXVsYXRlZCBQUy8yIGludGVyZmFjZSB0byBHUE0gYW5kIFggYW5kIHNvIG9uLgorCisyLiBTaW1wbGUgVXNhZ2UKK35+fn5+fn5+fn5+fn5+fgorICBGb3IgdGhlIG1vc3QgdXN1YWwgY29uZmlndXJhdGlvbiwgd2l0aCBvbmUgVVNCIG1vdXNlIGFuZCBvbmUgVVNCIGtleWJvYXJkLAoreW91J2xsIGhhdmUgdG8gbG9hZCB0aGUgZm9sbG93aW5nIG1vZHVsZXMgKG9yIGhhdmUgdGhlbSBidWlsdCBpbiB0byB0aGUKK2tlcm5lbCk6CisKKwlpbnB1dAorCW1vdXNlZGV2CisJa2V5YmRldgorCXVzYmNvcmUKKwl1aGNpX2hjZCBvciBvaGNpX2hjZCBvciBlaGNpX2hjZAorCXVzYmhpZAorCisgIEFmdGVyIHRoaXMsIHRoZSBVU0Iga2V5Ym9hcmQgd2lsbCB3b3JrIHN0cmFpZ2h0IGF3YXksIGFuZCB0aGUgVVNCIG1vdXNlCit3aWxsIGJlIGF2YWlsYWJsZSBhcyBhIGNoYXJhY3RlciBkZXZpY2Ugb24gbWFqb3IgMTMsIG1pbm9yIDYzOgorCisJY3J3LXItLXItLSAgIDEgcm9vdCAgICAgcm9vdCAgICAgIDEzLCAgNjMgTWFyIDI4IDIyOjQ1IG1pY2UKKworICBUaGlzIGRldmljZSBoYXMgdG8gYmUgY3JlYXRlZC4KKyAgVGhlIGNvbW1hbmRzIHRvIGNyZWF0ZSBpdCBieSBoYW5kIGFyZToKKworCWNkIC9kZXYKKwlta2RpciBpbnB1dAorCW1rbm9kIGlucHV0L21pY2UgYyAxMyA2MworCisgIEFmdGVyIHRoYXQgeW91IGhhdmUgdG8gcG9pbnQgR1BNICh0aGUgdGV4dG1vZGUgbW91c2UgY3V0JnBhc3RlIHRvb2wpIGFuZAorWEZyZWUgdG8gdGhpcyBkZXZpY2UgdG8gdXNlIGl0IC0gR1BNIHNob3VsZCBiZSBjYWxsZWQgbGlrZToKKworCWdwbSAtdCBwczIgLW0gL2Rldi9pbnB1dC9taWNlCisKKyAgQW5kIGluIFg6CisKKwlTZWN0aW9uICJQb2ludGVyIgorCSAgICBQcm90b2NvbCAgICAiSW1QUy8yIgorCSAgICBEZXZpY2UgICAgICAiL2Rldi9pbnB1dC9taWNlIgorCSAgICBaQXhpc01hcHBpbmcgNCA1CisJRW5kU2VjdGlvbgorCisgIFdoZW4geW91IGRvIGFsbCBvZiB0aGUgYWJvdmUsIHlvdSBjYW4gdXNlIHlvdXIgVVNCIG1vdXNlIGFuZCBrZXlib2FyZC4KKworMy4gRGV0YWlsZWQgRGVzY3JpcHRpb24KK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiszLjEgRGV2aWNlIGRyaXZlcnMKK35+fn5+fn5+fn5+fn5+fn5+fgorICBEZXZpY2UgZHJpdmVycyBhcmUgdGhlIG1vZHVsZXMgdGhhdCBnZW5lcmF0ZSBldmVudHMuIFRoZSBldmVudHMgYXJlCitob3dldmVyIG5vdCB1c2VmdWwgd2l0aG91dCBiZWluZyBoYW5kbGVkLCBzbyB5b3UgYWxzbyB3aWxsIG5lZWQgdG8gdXNlIHNvbWUKK29mIHRoZSBtb2R1bGVzIGZyb20gc2VjdGlvbiAzLjIuCisKKzMuMS4xIHVzYmhpZAorfn5+fn5+fn5+fn5+CisgIHVzYmhpZCBpcyB0aGUgbGFyZ2VzdCBhbmQgbW9zdCBjb21wbGV4IGRyaXZlciBvZiB0aGUgd2hvbGUgc3VpdGUuIEl0CitoYW5kbGVzIGFsbCBISUQgZGV2aWNlcywgYW5kIGJlY2F1c2UgdGhlcmUgaXMgYSB2ZXJ5IHdpZGUgdmFyaWV0eSBvZiB0aGVtLAorYW5kIGJlY2F1c2UgdGhlIFVTQiBISUQgc3BlY2lmaWNhdGlvbiBpc24ndCBzaW1wbGUsIGl0IG5lZWRzIHRvIGJlIHRoaXMgYmlnLgorCisgIEN1cnJlbnRseSwgaXQgaGFuZGxlcyBVU0IgbWljZSwgam95c3RpY2tzLCBnYW1lcGFkcywgc3RlZXJpbmcgd2hlZWxzCitrZXlib2FyZHMsIHRyYWNrYmFsbHMgYW5kIGRpZ2l0aXplcnMuCisKKyBIb3dldmVyLCBVU0IgdXNlcyBISUQgYWxzbyBmb3IgbW9uaXRvciBjb250cm9scywgc3BlYWtlciBjb250cm9scywgVVBTcywKK0xDRHMgYW5kIG1hbnkgb3RoZXIgcHVycG9zZXMuCisKKyBUaGUgbW9uaXRvciBhbmQgc3BlYWtlciBjb250cm9scyBzaG91bGQgYmUgZWFzeSB0byBhZGQgdG8gdGhlIGhpZC9pbnB1dAoraW50ZXJmYWNlLCBidXQgZm9yIHRoZSBVUFNzIGFuZCBMQ0RzIGl0IGRvZXNuJ3QgbWFrZSBtdWNoIHNlbnNlLiBGb3IgdGhpcywKK3RoZSBoaWRkZXYgaW50ZXJmYWNlIHdhcyBkZXNpZ25lZC4gU2VlIERvY3VtZW50YXRpb24vaGlkL2hpZGRldi50eHQKK2ZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGl0LgorCisgIFRoZSB1c2FnZSBvZiB0aGUgdXNiaGlkIG1vZHVsZSBpcyB2ZXJ5IHNpbXBsZSwgaXQgdGFrZXMgbm8gcGFyYW1ldGVycywKK2RldGVjdHMgZXZlcnl0aGluZyBhdXRvbWF0aWNhbGx5IGFuZCB3aGVuIGEgSElEIGRldmljZSBpcyBpbnNlcnRlZCwgaXQKK2RldGVjdHMgaXQgYXBwcm9wcmlhdGVseS4KKworICBIb3dldmVyLCBiZWNhdXNlIHRoZSBkZXZpY2VzIHZhcnkgd2lsZGx5LCB5b3UgbWlnaHQgaGFwcGVuIHRvIGhhdmUgYQorZGV2aWNlIHRoYXQgZG9lc24ndCB3b3JrIHdlbGwuIEluIHRoYXQgY2FzZSAjZGVmaW5lIERFQlVHIGF0IHRoZSBiZWdpbm5pbmcKK29mIGhpZC1jb3JlLmMgYW5kIHNlbmQgbWUgdGhlIHN5c2xvZyB0cmFjZXMuCisKKzMuMS4yIHVzYm1vdXNlCit+fn5+fn5+fn5+fn5+fgorICBGb3IgZW1iZWRkZWQgc3lzdGVtcywgZm9yIG1pY2Ugd2l0aCBicm9rZW4gSElEIGRlc2NyaXB0b3JzIGFuZCBqdXN0IGFueQorb3RoZXIgdXNlIHdoZW4gdGhlIGJpZyB1c2JoaWQgd291bGRuJ3QgYmUgYSBnb29kIGNob2ljZSwgdGhlcmUgaXMgdGhlCit1c2Jtb3VzZSBkcml2ZXIuIEl0IGhhbmRsZXMgVVNCIG1pY2Ugb25seS4gSXQgdXNlcyBhIHNpbXBsZXIgSElEQlAKK3Byb3RvY29sLiBUaGlzIGFsc28gbWVhbnMgdGhlIG1pY2UgbXVzdCBzdXBwb3J0IHRoaXMgc2ltcGxlciBwcm90b2NvbC4gTm90CithbGwgZG8uIElmIHlvdSBkb24ndCBoYXZlIGFueSBzdHJvbmcgcmVhc29uIHRvIHVzZSB0aGlzIG1vZHVsZSwgdXNlIHVzYmhpZAoraW5zdGVhZC4KKworMy4xLjMgdXNia2JkCit+fn5+fn5+fn5+fn4KKyAgTXVjaCBsaWtlIHVzYm1vdXNlLCB0aGlzIG1vZHVsZSB0YWxrcyB0byBrZXlib2FyZHMgd2l0aCBhIHNpbXBsaWZpZWQKK0hJREJQIHByb3RvY29sLiBJdCdzIHNtYWxsZXIsIGJ1dCBkb2Vzbid0IHN1cHBvcnQgYW55IGV4dHJhIHNwZWNpYWwga2V5cy4KK1VzZSB1c2JoaWQgaW5zdGVhZCBpZiB0aGVyZSBpc24ndCBhbnkgc3BlY2lhbCByZWFzb24gdG8gdXNlIHRoaXMuCisKKzMuMS40IHdhY29tCit+fn5+fn5+fn5+fgorICBUaGlzIGlzIGEgZHJpdmVyIGZvciBXYWNvbSBHcmFwaGlyZSBhbmQgSW50dW9zIHRhYmxldHMuIE5vdCBmb3IgV2Fjb20KK1BlblBhcnRuZXIsIHRoYXQgb25lIGlzIGhhbmRsZWQgYnkgdGhlIEhJRCBkcml2ZXIuIEFsdGhvdWdoIHRoZSBJbnR1b3MgYW5kCitHcmFwaGlyZSB0YWJsZXRzIGNsYWltIHRoYXQgdGhleSBhcmUgSElEIHRhYmxldHMgYXMgd2VsbCwgdGhleSBhcmUgbm90IGFuZAordGh1cyBuZWVkIHRoaXMgc3BlY2lmaWMgZHJpdmVyLgorCiszLjEuNSBpZm9yY2UKK35+fn5+fn5+fn5+fgorICBBIGRyaXZlciBmb3IgSS1Gb3JjZSBqb3lzdGlja3MgYW5kIHdoZWVscywgYm90aCBvdmVyIFVTQiBhbmQgUlMyMzIuIAorSXQgaW5jbHVkZXMgRm9yY2VGZWVkYmFjayBzdXBwb3J0IG5vdywgZXZlbiB0aG91Z2ggSW1tZXJzaW9uCitDb3JwLiBjb25zaWRlcnMgdGhlIHByb3RvY29sIGEgdHJhZGUgc2VjcmV0IGFuZCB3b24ndCBkaXNjbG9zZSBhIHdvcmQKK2Fib3V0IGl0LiAKKworMy4yIEV2ZW50IGhhbmRsZXJzCit+fn5+fn5+fn5+fn5+fn5+fn4KKyAgRXZlbnQgaGFuZGxlcnMgZGlzdHJpYnV0ZSB0aGUgZXZlbnRzIGZyb20gdGhlIGRldmljZXMgdG8gdXNlcmxhbmQgYW5kCitrZXJuZWwsIGFzIG5lZWRlZC4KKworMy4yLjEga2V5YmRldgorfn5+fn5+fn5+fn5+fgorICBrZXliZGV2IGlzIGN1cnJlbnRseSBhIHJhdGhlciB1Z2x5IGhhY2sgdGhhdCB0cmFuc2xhdGVzIHRoZSBpbnB1dAorZXZlbnRzIGludG8gYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGtleWJvYXJkIHJhdyBtb2RlIChYbGF0ZWQgQVQgU2V0MiBvbgoreDg2KSwgYW5kIHBhc3NlcyB0aGVtIGludG8gdGhlIGhhbmRsZV9zY2FuY29kZSBmdW5jdGlvbiBvZiB0aGUKK2tleWJvYXJkLmMgbW9kdWxlLiBUaGlzIHdvcmtzIHdlbGwgZW5vdWdoIG9uIGFsbCBhcmNoaXRlY3R1cmVzIHRoYXQKK2tleWJkZXYgY2FuIGdlbmVyYXRlIHJhd21vZGUgb24sIG90aGVyIGFyY2hpdGVjdHVyZXMgY2FuIGJlIGFkZGVkIHRvCitpdC4KKworICBUaGUgcmlnaHQgd2F5IHdvdWxkIGJlIHRvIHBhc3MgdGhlIGV2ZW50cyB0byBrZXlib2FyZC5jIGRpcmVjdGx5LAorYmVzdCBpZiBrZXlib2FyZC5jIHdvdWxkIGl0c2VsZiBiZSBhbiBldmVudCBoYW5kbGVyLiBUaGlzIGlzIGRvbmUgaW4KK3RoZSBpbnB1dCBwYXRjaCwgYXZhaWxhYmxlIG9uIHRoZSB3ZWJwYWdlIG1lbnRpb25lZCBiZWxvdy4gCisKKzMuMi4yIG1vdXNlZGV2Cit+fn5+fn5+fn5+fn5+fgorICBtb3VzZWRldiBpcyBhbHNvIGEgaGFjayB0byBtYWtlIHByb2dyYW1zIHRoYXQgdXNlIG1vdXNlIGlucHV0Cit3b3JrLiBJdCB0YWtlcyBldmVudHMgZnJvbSBlaXRoZXIgbWljZSBvciBkaWdpdGl6ZXJzL3RhYmxldHMgYW5kIG1ha2VzCithIFBTLzItc3R5bGUgKGEgbGEgL2Rldi9wc2F1eCkgbW91c2UgZGV2aWNlIGF2YWlsYWJsZSB0byB0aGUKK3VzZXJsYW5kLiBJZGVhbGx5LCB0aGUgcHJvZ3JhbXMgY291bGQgdXNlIGEgbW9yZSByZWFzb25hYmxlIGludGVyZmFjZSwKK2ZvciBleGFtcGxlIGV2ZGV2CisKKyAgTW91c2VkZXYgZGV2aWNlcyBpbiAvZGV2L2lucHV0IChhcyBzaG93biBhYm92ZSkgYXJlOgorCisJY3J3LXItLXItLSAgIDEgcm9vdCAgICAgcm9vdCAgICAgIDEzLCAgMzIgTWFyIDI4IDIyOjQ1IG1vdXNlMAorCWNydy1yLS1yLS0gICAxIHJvb3QgICAgIHJvb3QgICAgICAxMywgIDMzIE1hciAyOSAwMDo0MSBtb3VzZTEKKwljcnctci0tci0tICAgMSByb290ICAgICByb290ICAgICAgMTMsICAzNCBNYXIgMjkgMDA6NDEgbW91c2UyCisJY3J3LXItLXItLSAgIDEgcm9vdCAgICAgcm9vdCAgICAgIDEzLCAgMzUgQXByICAxIDEwOjUwIG1vdXNlMworCS4uLgorCS4uLgorCWNydy1yLS1yLS0gICAxIHJvb3QgICAgIHJvb3QgICAgICAxMywgIDYyIEFwciAgMSAxMDo1MCBtb3VzZTMwCisJY3J3LXItLXItLSAgIDEgcm9vdCAgICAgcm9vdCAgICAgIDEzLCAgNjMgQXByICAxIDEwOjUwIG1pY2UKKworRWFjaCAnbW91c2UnIGRldmljZSBpcyBhc3NpZ25lZCB0byBhIHNpbmdsZSBtb3VzZSBvciBkaWdpdGl6ZXIsIGV4Y2VwdAordGhlIGxhc3Qgb25lIC0gJ21pY2UnLiBUaGlzIHNpbmdsZSBjaGFyYWN0ZXIgZGV2aWNlIGlzIHNoYXJlZCBieSBhbGwKK21pY2UgYW5kIGRpZ2l0aXplcnMsIGFuZCBldmVuIGlmIG5vbmUgYXJlIGNvbm5lY3RlZCwgdGhlIGRldmljZSBpcworcHJlc2VudC4gIFRoaXMgaXMgdXNlZnVsIGZvciBob3RwbHVnZ2luZyBVU0IgbWljZSwgc28gdGhhdCBwcm9ncmFtcworY2FuIG9wZW4gdGhlIGRldmljZSBldmVuIHdoZW4gbm8gbWljZSBhcmUgcHJlc2VudC4KKworICBDT05GSUdfSU5QVVRfTU9VU0VERVZfU0NSRUVOX1tYWV0gaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGFyZQordGhlIHNpemUgb2YgeW91ciBzY3JlZW4gKGluIHBpeGVscykgaW4gWEZyZWU4Ni4gVGhpcyBpcyBuZWVkZWQgaWYgeW91Cit3YW50IHRvIHVzZSB5b3VyIGRpZ2l0aXplciBpbiBYLCBiZWNhdXNlIGl0cyBtb3ZlbWVudCBpcyBzZW50IHRvIFgKK3ZpYSBhIHZpcnR1YWwgUFMvMiBtb3VzZSBhbmQgdGh1cyBuZWVkcyB0byBiZSBzY2FsZWQKK2FjY29yZGluZ2x5LiBUaGVzZSB2YWx1ZXMgd29uJ3QgYmUgdXNlZCBpZiB5b3UgdXNlIGEgbW91c2Ugb25seS4KKworICBNb3VzZWRldiB3aWxsIGdlbmVyYXRlIGVpdGhlciBQUy8yLCBJbVBTLzIgKE1pY3Jvc29mdCBJbnRlbGxpTW91c2UpIG9yCitFeHBsb3JlclBTLzIgKEludGVsbGlNb3VzZSBFeHBsb3JlcikgcHJvdG9jb2xzLCBkZXBlbmRpbmcgb24gd2hhdCB0aGUKK3Byb2dyYW0gcmVhZGluZyB0aGUgZGF0YSB3aXNoZXMuIFlvdSBjYW4gc2V0IEdQTSBhbmQgWCB0byBhbnkgb2YKK3RoZXNlLiBZb3UnbGwgbmVlZCBJbVBTLzIgaWYgeW91IHdhbnQgdG8gbWFrZSB1c2Ugb2YgYSB3aGVlbCBvbiBhIFVTQgorbW91c2UgYW5kIEV4cGxvcmVyUFMvMiBpZiB5b3Ugd2FudCB0byB1c2UgZXh0cmEgKHVwIHRvIDUpIGJ1dHRvbnMuIAorCiszLjIuMyBqb3lkZXYKK35+fn5+fn5+fn5+fgorICBKb3lkZXYgaW1wbGVtZW50cyB2MC54IGFuZCB2MS54IExpbnV4IGpveXN0aWNrIGFwaSwgbXVjaCBsaWtlCitkcml2ZXJzL2NoYXIvam95c3RpY2svam95c3RpY2suYyB1c2VkIHRvIGluIGVhcmxpZXIgdmVyc2lvbnMuIFNlZQoram95c3RpY2stYXBpLnR4dCBpbiB0aGUgRG9jdW1lbnRhdGlvbiBzdWJkaXJlY3RvcnkgZm9yIGRldGFpbHMuICBBcworc29vbiBhcyBhbnkgam95c3RpY2sgaXMgY29ubmVjdGVkLCBpdCBjYW4gYmUgYWNjZXNzZWQgaW4gL2Rldi9pbnB1dAorb246IAorCisJY3J3LXItLXItLSAgIDEgcm9vdCAgICAgcm9vdCAgICAgIDEzLCAgIDAgQXByICAxIDEwOjUwIGpzMAorCWNydy1yLS1yLS0gICAxIHJvb3QgICAgIHJvb3QgICAgICAxMywgICAxIEFwciAgMSAxMDo1MCBqczEKKwljcnctci0tci0tICAgMSByb290ICAgICByb290ICAgICAgMTMsICAgMiBBcHIgIDEgMTA6NTAganMyCisJY3J3LXItLXItLSAgIDEgcm9vdCAgICAgcm9vdCAgICAgIDEzLCAgIDMgQXByICAxIDEwOjUwIGpzMworCS4uLgorCitBbmQgc28gb24gdXAgdG8ganMzMS4KKworMy4yLjQgZXZkZXYKK35+fn5+fn5+fn5+CisgIGV2ZGV2IGlzIHRoZSBnZW5lcmljIGlucHV0IGV2ZW50IGludGVyZmFjZS4gSXQgcGFzc2VzIHRoZSBldmVudHMKK2dlbmVyYXRlZCBpbiB0aGUga2VybmVsIHN0cmFpZ2h0IHRvIHRoZSBwcm9ncmFtLCB3aXRoIHRpbWVzdGFtcHMuIFRoZQorQVBJIGlzIHN0aWxsIGV2b2x2aW5nLCBidXQgc2hvdWxkIGJlIHVzYWJsZSBub3cuIEl0J3MgZGVzY3JpYmVkIGluCitzZWN0aW9uIDUuIAorCisgIFRoaXMgc2hvdWxkIGJlIHRoZSB3YXkgZm9yIEdQTSBhbmQgWCB0byBnZXQga2V5Ym9hcmQgYW5kIG1vdXNlCitldmVudHMuIEl0IGFsbG93cyBmb3IgbXVsdGloZWFkIGluIFggd2l0aG91dCBhbnkgc3BlY2lmaWMgbXVsdGloZWFkCitrZXJuZWwgc3VwcG9ydC4gVGhlIGV2ZW50IGNvZGVzIGFyZSB0aGUgc2FtZSBvbiBhbGwgYXJjaGl0ZWN0dXJlcyBhbmQKK2FyZSBoYXJkd2FyZSBpbmRlcGVuZGVudC4KKworICBUaGUgZGV2aWNlcyBhcmUgaW4gL2Rldi9pbnB1dDoKKworCWNydy1yLS1yLS0gICAxIHJvb3QgICAgIHJvb3QgICAgICAxMywgIDY0IEFwciAgMSAxMDo0OSBldmVudDAKKwljcnctci0tci0tICAgMSByb290ICAgICByb290ICAgICAgMTMsICA2NSBBcHIgIDEgMTA6NTAgZXZlbnQxCisJY3J3LXItLXItLSAgIDEgcm9vdCAgICAgcm9vdCAgICAgIDEzLCAgNjYgQXByICAxIDEwOjUwIGV2ZW50MgorCWNydy1yLS1yLS0gICAxIHJvb3QgICAgIHJvb3QgICAgICAxMywgIDY3IEFwciAgMSAxMDo1MCBldmVudDMKKwkuLi4KKworQW5kIHNvIG9uIHVwIHRvIGV2ZW50MzEuCisKKzQuIFZlcmlmeWluZyBpZiBpdCB3b3Jrcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisgIFR5cGluZyBhIGNvdXBsZSBrZXlzIG9uIHRoZSBrZXlib2FyZCBzaG91bGQgYmUgZW5vdWdoIHRvIGNoZWNrIHRoYXQKK2EgVVNCIGtleWJvYXJkIHdvcmtzIGFuZCBpcyBjb3JyZWN0bHkgY29ubmVjdGVkIHRvIHRoZSBrZXJuZWwga2V5Ym9hcmQKK2RyaXZlci4gCisKKyAgRG9pbmcgYSAiY2F0IC9kZXYvaW5wdXQvbW91c2UwIiAoYywgMTMsIDMyKSB3aWxsIHZlcmlmeSB0aGF0IGEgbW91c2UKK2lzIGFsc28gZW11bGF0ZWQ7IGNoYXJhY3RlcnMgc2hvdWxkIGFwcGVhciBpZiB5b3UgbW92ZSBpdC4KKworICBZb3UgY2FuIHRlc3QgdGhlIGpveXN0aWNrIGVtdWxhdGlvbiB3aXRoIHRoZSAnanN0ZXN0JyB1dGlsaXR5LAorYXZhaWxhYmxlIGluIHRoZSBqb3lzdGljayBwYWNrYWdlIChzZWUgRG9jdW1lbnRhdGlvbi9pbnB1dC9qb3lzdGljay50eHQpLgorCisgIFlvdSBjYW4gdGVzdCB0aGUgZXZlbnQgZGV2aWNlcyB3aXRoIHRoZSAnZXZ0ZXN0JyB1dGlsaXR5IGF2YWlsYWJsZQoraW4gdGhlIExpbnV4Q29uc29sZSBwcm9qZWN0IENWUyBhcmNoaXZlIChzZWUgdGhlIFVSTCBiZWxvdykuCisKKzUuIEV2ZW50IGludGVyZmFjZQorfn5+fn5+fn5+fn5+fn5+fn5+CisgIFNob3VsZCB5b3Ugd2FudCB0byBhZGQgZXZlbnQgZGV2aWNlIHN1cHBvcnQgaW50byBhbnkgYXBwbGljYXRpb24gKFgsIGdwbSwKK3N2Z2FsaWIgLi4uKSBJIDx2b2p0ZWNoQHVjdy5jej4gd2lsbCBiZSBoYXBweSB0byBwcm92aWRlIHlvdSBhbnkgaGVscCBJCitjYW4uIEhlcmUgZ29lcyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoaW5ncywgd2hpY2ggaXMgZ29pbmcKK3RvIGJlIGV4dGVuZGVkLCBidXQgbm90IGNoYW5nZWQgaW5jb21wYXRpYmx5IGFzIHRpbWUgZ29lczoKKworICBZb3UgY2FuIHVzZSBibG9ja2luZyBhbmQgbm9uYmxvY2tpbmcgcmVhZHMsIGFsc28gc2VsZWN0KCkgb24gdGhlCisvZGV2L2lucHV0L2V2ZW50WCBkZXZpY2VzLCBhbmQgeW91J2xsIGFsd2F5cyBnZXQgYSB3aG9sZSBudW1iZXIgb2YgaW5wdXQKK2V2ZW50cyBvbiBhIHJlYWQuIFRoZWlyIGxheW91dCBpczoKKworc3RydWN0IGlucHV0X2V2ZW50IHsKKwlzdHJ1Y3QgdGltZXZhbCB0aW1lOworCXVuc2lnbmVkIHNob3J0IHR5cGU7CisJdW5zaWduZWQgc2hvcnQgY29kZTsKKwl1bnNpZ25lZCBpbnQgdmFsdWU7Cit9OworCisgICd0aW1lJyBpcyB0aGUgdGltZXN0YW1wLCBpdCByZXR1cm5zIHRoZSB0aW1lIGF0IHdoaWNoIHRoZSBldmVudCBoYXBwZW5lZC4KK1R5cGUgaXMgZm9yIGV4YW1wbGUgRVZfUkVMIGZvciByZWxhdGl2ZSBtb21lbnQsIEVWX0tFWSBmb3IgYSBrZXlwcmVzcyBvcgorcmVsZWFzZS4gTW9yZSB0eXBlcyBhcmUgZGVmaW5lZCBpbiBpbmNsdWRlL2xpbnV4L2lucHV0LmguCisKKyAgJ2NvZGUnIGlzIGV2ZW50IGNvZGUsIGZvciBleGFtcGxlIFJFTF9YIG9yIEtFWV9CQUNLU1BBQ0UsIGFnYWluIGEgY29tcGxldGUKK2xpc3QgaXMgaW4gaW5jbHVkZS9saW51eC9pbnB1dC5oLgorCisgICd2YWx1ZScgaXMgdGhlIHZhbHVlIHRoZSBldmVudCBjYXJyaWVzLiBFaXRoZXIgYSByZWxhdGl2ZSBjaGFuZ2UgZm9yCitFVl9SRUwsIGFic29sdXRlIG5ldyB2YWx1ZSBmb3IgRVZfQUJTIChqb3lzdGlja3MgLi4uKSwgb3IgMCBmb3IgRVZfS0VZIGZvcgorcmVsZWFzZSwgMSBmb3Iga2V5cHJlc3MgYW5kIDIgZm9yIGF1dG9yZXBlYXQuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW5wdXQvaW50ZXJhY3RpdmUuZmlnIGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9pbnRlcmFjdGl2ZS5maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU3ZGUzOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaW5wdXQvaW50ZXJhY3RpdmUuZmlnCkBAIC0wLDAgKzEsNDIgQEAKKyNGSUcgMy4yCitMYW5kc2NhcGUKK0NlbnRlcgorSW5jaGVzCitMZXR0ZXIgIAorMTAwLjAwCitTaW5nbGUKKy0yCisxMjAwIDIKKzIgMSAwIDIgMCA3IDUwIDAgLTEgNi4wMDAgMCAwIC0xIDAgMCA2CisJIDEyMDAgMzYwMCAxODAwIDM2MDAgMjQwMCA0ODAwIDMwMDAgNDgwMCA0MjAwIDU3MDAgNDgwMCA1NzAwCisyIDIgMCAxIDAgNyA1MCAwIC0xIDQuMDAwIDAgMCAtMSAwIDAgNQorCSAxMjAwIDMxNTAgNDgwMCAzMTUwIDQ4MDAgNjMwMCAxMjAwIDYzMDAgMTIwMCAzMTUwCisyIDEgMCAxIDAgNyA1MCAwIC0xIDQuMDAwIDAgMCAtMSAwIDAgMgorCSAxMjAwIDQ4MDAgNDgwMCA0ODAwCisyIDEgMSAxIDAgNyA1MCAwIC0xIDQuMDAwIDAgMCAtMSAwIDAgNAorCSAyNDAwIDQ4MDAgMjQwMCA2NTI1IDE5NTAgNzEyNSAxOTUwIDc4MDAKKzIgMSAxIDEgMCA3IDUwIDAgLTEgNC4wMDAgMCAwIC0xIDAgMCA0CisJIDMwMDAgNDgwMCAzMDAwIDY1MjUgMzYwMCA3MTI1IDM2MDAgNzgwMAorMiAxIDAgMSAwIDcgNTAgMCAtMSA0LjAwMCAwIDAgLTEgMCAxIDMKKwkwIDAgMS4wMCA2MC4wMCAxMjAuMDAKKwkgMzgyNSA1NDAwIDQxMjUgNTEwMCA1NDAwIDUxMDAKKzIgMSAwIDEgMCA3IDUwIDAgLTEgNC4wMDAgMCAwIC0xIDAgMSAzCisJMCAwIDEuMDAgNjAuMDAgMTIwLjAwCisJIDIxMDAgNDIwMCAyNDAwIDM5MDAgNTQwMCAzOTAwCisyIDEgMSAxIDAgNyA1MCAwIC0xIDQuMDAwIDAgMCAtMSAwIDAgMgorCSA0ODAwIDU3MDAgNTQwMCA1NzAwCisyIDEgMSAxIDAgNyA1MCAwIC0xIDQuMDAwIDAgMCAtMSAwIDAgMgorCSAxODAwIDM2MDAgNTQwMCAzNjAwCisyIDEgMCAxIDAgNyA1MCAwIC0xIDQuMDAwIDAgMCAtMSAwIDEgMworCTAgMCAxLjAwIDYwLjAwIDEyMC4wMAorCSAyNzAwIDQ4MDAgMjcwMCA0NDI1IDU0MDAgNDQyNQorMiAxIDAgMSAwIDcgNTAgMCAtMSA0LjAwMCAwIDAgLTEgMSAxIDIKKwkwIDAgMS4wMCA2MC4wMCAxMjAuMDAKKwkwIDAgMS4wMCA2MC4wMCAxMjAuMDAKKwkgMTk1MCA3ODAwIDM2MDAgNzgwMAorNCAxIDAgNTAgMCAwIDEyIDAuMDAwMCA0IDEzNSA4MTAgMjc3NSA3NzI1IERlYWQgYmFuZFwwMDEKKzQgMCAwIDUwIDAgMCAxMiAwLjAwMDAgNCAxODAgMTE1NSA1NDAwIDU3MDAgcmlnaHQgc2F0dXJhdGlvblwwMDEKKzQgMCAwIDUwIDAgMCAxMiAwLjAwMDAgNCAxMzUgMTA2NSA1NDAwIDM2MDAgbGVmdCBzYXR1cmF0aW9uXDAwMQorNCAwIDAgNTAgMCAwIDEyIDAuMDAwMCA0IDE4MCAyNTA1IDU0MDAgMzkwMCBsZWZ0IGNvZWZmICggcG9zaXRpdmUgaW4gdGhhdCBjYXNlIClcMDAxCis0IDAgMCA1MCAwIDAgMTIgMC4wMDAwIDQgMTgwIDI2NDAgNTQ3NSA1MTAwIHJpZ2h0IGNvZWZmICggbmVnYXRpdmUgaW4gdGhhdCBjYXNlIClcMDAxCis0IDAgMCA1MCAwIDAgMTIgMC4wMDAwIDQgMTA1IDQ4MCA1NDAwIDQ0MjUgY2VudGVyXDAwMQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pbnB1dC9qb3lzdGljay1hcGkudHh0IGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9qb3lzdGljay1hcGkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0M2IxOGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lucHV0L2pveXN0aWNrLWFwaS50eHQKQEAgLTAsMCArMSwzMTQgQEAKKwkJICAgICAgSm95c3RpY2sgQVBJIERvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgLSotVGV4dC0qLQorCisJCSAgICAgICAgUmFnbmFyIEhvamxhbmQgRXNwaW5vc2EKKwkJCSAgPHJhZ25hckBtYWN1bGEubmV0PgorCisJCQkgICAgICA3IEF1ZyAxOTk4CisKKzEuIEluaXRpYWxpemF0aW9uCit+fn5+fn5+fn5+fn5+fn5+fgorCitPcGVuIHRoZSBqb3lzdGljayBkZXZpY2UgZm9sbG93aW5nIHRoZSB1c3VhbCBzZW1hbnRpY3MgKHRoYXQgaXMsIHdpdGggb3BlbikuCitTaW5jZSB0aGUgZHJpdmVyIG5vdyByZXBvcnRzIGV2ZW50cyBpbnN0ZWFkIG9mIHBvbGxpbmcgZm9yIGNoYW5nZXMsCitpbW1lZGlhdGVseSBhZnRlciB0aGUgb3BlbiBpdCB3aWxsIGlzc3VlIGEgc2VyaWVzIG9mIHN5bnRoZXRpYyBldmVudHMKKyhKU19FVkVOVF9JTklUKSB0aGF0IHlvdSBjYW4gcmVhZCB0byBjaGVjayB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUKK2pveXN0aWNrLgorCitCeSBkZWZhdWx0LCB0aGUgZGV2aWNlIGlzIG9wZW5lZCBpbiBibG9ja2luZyBtb2RlLgorCisJaW50IGZkID0gb3BlbiAoIi9kZXYvaW5wdXQvanMwIiwgT19SRE9OTFkpOworCisKKzIuIEV2ZW50IFJlYWRpbmcKK35+fn5+fn5+fn5+fn5+fn4KKworCXN0cnVjdCBqc19ldmVudCBlOworCXJlYWQgKGZkLCAmZSwgc2l6ZW9mKGUpKTsKKword2hlcmUganNfZXZlbnQgaXMgZGVmaW5lZCBhcworCisJc3RydWN0IGpzX2V2ZW50IHsKKwkJX191MzIgdGltZTsgICAgIC8qIGV2ZW50IHRpbWVzdGFtcCBpbiBtaWxsaXNlY29uZHMgKi8KKwkJX19zMTYgdmFsdWU7ICAgIC8qIHZhbHVlICovCisJCV9fdTggdHlwZTsgICAgICAvKiBldmVudCB0eXBlICovCisJCV9fdTggbnVtYmVyOyAgICAvKiBheGlzL2J1dHRvbiBudW1iZXIgKi8KKwl9OworCitJZiB0aGUgcmVhZCBpcyBzdWNjZXNzZnVsLCBpdCB3aWxsIHJldHVybiBzaXplb2YoZSksIHVubGVzcyB5b3Ugd2FudGVkIHRvIHJlYWQKK21vcmUgdGhhbiBvbmUgZXZlbnQgcGVyIHJlYWQgYXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xLgorCisKKzIuMSBqc19ldmVudC50eXBlCit+fn5+fn5+fn5+fn5+fn5+fgorCitUaGUgcG9zc2libGUgdmFsdWVzIG9mIGBgdHlwZScnIGFyZQorCisJI2RlZmluZSBKU19FVkVOVF9CVVRUT04gICAgICAgICAweDAxICAgIC8qIGJ1dHRvbiBwcmVzc2VkL3JlbGVhc2VkICovCisJI2RlZmluZSBKU19FVkVOVF9BWElTICAgICAgICAgICAweDAyICAgIC8qIGpveXN0aWNrIG1vdmVkICovCisJI2RlZmluZSBKU19FVkVOVF9JTklUICAgICAgICAgICAweDgwICAgIC8qIGluaXRpYWwgc3RhdGUgb2YgZGV2aWNlICovCisKK0FzIG1lbnRpb25lZCBhYm92ZSwgdGhlIGRyaXZlciB3aWxsIGlzc3VlIHN5bnRoZXRpYyBKU19FVkVOVF9JTklUIE9SZWQKK2V2ZW50cyBvbiBvcGVuLiBUaGF0IGlzLCBpZiBpdCdzIGlzc3VpbmcgYSBJTklUIEJVVFRPTiBldmVudCwgdGhlCitjdXJyZW50IHR5cGUgdmFsdWUgd2lsbCBiZQorCisJaW50IHR5cGUgPSBKU19FVkVOVF9CVVRUT04gfCBKU19FVkVOVF9JTklUOwkvKiAweDgxICovCisKK0lmIHlvdSBjaG9vc2Ugbm90IHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBzeW50aGV0aWMgb3IgcmVhbCBldmVudHMKK3lvdSBjYW4gdHVybiBvZmYgdGhlIEpTX0VWRU5UX0lOSVQgYml0cworCisJdHlwZSAmPSB+SlNfRVZFTlRfSU5JVDsJCQkJLyogMHgwMSAqLworCisKKzIuMiBqc19ldmVudC5udW1iZXIKK35+fn5+fn5+fn5+fn5+fn5+fn4KKworVGhlIHZhbHVlcyBvZiBgYG51bWJlcicnIGNvcnJlc3BvbmQgdG8gdGhlIGF4aXMgb3IgYnV0dG9uIHRoYXQKK2dlbmVyYXRlZCB0aGUgZXZlbnQuIE5vdGUgdGhhdCB0aGV5IGNhcnJ5IHNlcGFyYXRlIG51bWVyYXRpb24gKHRoYXQKK2lzLCB5b3UgaGF2ZSBib3RoIGFuIGF4aXMgMCBhbmQgYSBidXR0b24gMCkuIEdlbmVyYWxseSwKKworCQkJbnVtYmVyCisJMXN0IEF4aXMgWAkwCisJMXN0IEF4aXMgWQkxCisJMm5kIEF4aXMgWAkyCisJMm5kIEF4aXMgWQkzCisJLi4uYW5kIHNvIG9uCisKK0hhdHMgdmFyeSBmcm9tIG9uZSBqb3lzdGljayB0eXBlIHRvIGFub3RoZXIuIFNvbWUgY2FuIGJlIG1vdmVkIGluIDgKK2RpcmVjdGlvbnMsIHNvbWUgb25seSBpbiA0LCBUaGUgZHJpdmVyLCBob3dldmVyLCBhbHdheXMgcmVwb3J0cyBhIGhhdCBhcyB0d28KK2luZGVwZW5kZW50IGF4aXMsIGV2ZW4gaWYgdGhlIGhhcmR3YXJlIGRvZXNuJ3QgYWxsb3cgaW5kZXBlbmRlbnQgbW92ZW1lbnQuCisKKworMi4zIGpzX2V2ZW50LnZhbHVlCit+fn5+fn5+fn5+fn5+fn5+fn4KKworRm9yIGFuIGF4aXMsIGBgdmFsdWUnJyBpcyBhIHNpZ25lZCBpbnRlZ2VyIGJldHdlZW4gLTMyNzY3IGFuZCArMzI3NjcKK3JlcHJlc2VudGluZyB0aGUgcG9zaXRpb24gb2YgdGhlIGpveXN0aWNrIGFsb25nIHRoYXQgYXhpcy4gSWYgeW91Citkb24ndCByZWFkIGEgMCB3aGVuIHRoZSBqb3lzdGljayBpcyBgZGVhZCcsIG9yIGlmIGl0IGRvZXNuJ3Qgc3BhbiB0aGUKK2Z1bGwgcmFuZ2UsIHlvdSBzaG91bGQgcmVjYWxpYnJhdGUgaXQgKHdpdGgsIGZvciBleGFtcGxlLCBqc2NhbCkuCisKK0ZvciBhIGJ1dHRvbiwgYGB2YWx1ZScnIGZvciBhIHByZXNzIGJ1dHRvbiBldmVudCBpcyAxIGFuZCBmb3IgYSByZWxlYXNlCitidXR0b24gZXZlbnQgaXMgMC4KKworVGhvdWdoIHRoaXMKKworCWlmIChqc19ldmVudC50eXBlID09IEpTX0VWRU5UX0JVVFRPTikgeworCQlidXR0b25zX3N0YXRlIF49ICgxIDw8IGpzX2V2ZW50Lm51bWJlcik7CisJfQorCittYXkgd29yayB3ZWxsIGlmIHlvdSBoYW5kbGUgSlNfRVZFTlRfSU5JVCBldmVudHMgc2VwYXJhdGVseSwKKworCWlmICgoanNfZXZlbnQudHlwZSAmIH5KU19FVkVOVF9JTklUKSA9PSBKU19FVkVOVF9CVVRUT04pIHsKKwkJaWYgKGpzX2V2ZW50LnZhbHVlKQorCQkJYnV0dG9uc19zdGF0ZSB8PSAoMSA8PCBqc19ldmVudC5udW1iZXIpOworCQllbHNlCisJCQlidXR0b25zX3N0YXRlICY9IH4oMSA8PCBqc19ldmVudC5udW1iZXIpOworCX0KKworaXMgbXVjaCBzYWZlciBzaW5jZSBpdCBjYW4ndCBsb3NlIHN5bmMgd2l0aCB0aGUgZHJpdmVyLiBBcyB5b3Ugd291bGQKK2hhdmUgdG8gd3JpdGUgYSBzZXBhcmF0ZSBoYW5kbGVyIGZvciBKU19FVkVOVF9JTklUIGV2ZW50cyBpbiB0aGUgZmlyc3QKK3NuaXBwZXQsIHRoaXMgZW5kcyB1cCBiZWluZyBzaG9ydGVyLgorCisKKzIuNCBqc19ldmVudC50aW1lCit+fn5+fn5+fn5+fn5+fn5+fgorCitUaGUgdGltZSBhbiBldmVudCB3YXMgZ2VuZXJhdGVkIGlzIHN0b3JlZCBpbiBgYGpzX2V2ZW50LnRpbWUnJy4gSXQncyBhIHRpbWUKK2luIG1pbGxpc2Vjb25kcyBzaW5jZSAuLi4gd2VsbCwgc2luY2Ugc29tZXRpbWUgaW4gdGhlIHBhc3QuICBUaGlzIGVhc2VzIHRoZQordGFzayBvZiBkZXRlY3RpbmcgZG91YmxlIGNsaWNrcywgZmlndXJpbmcgb3V0IGlmIG1vdmVtZW50IG9mIGF4aXMgYW5kIGJ1dHRvbgorcHJlc3NlcyBoYXBwZW5lZCBhdCB0aGUgc2FtZSB0aW1lLCBhbmQgc2ltaWxhci4KKworCiszLiBSZWFkaW5nCit+fn5+fn5+fn5+CisKK0lmIHlvdSBvcGVuIHRoZSBkZXZpY2UgaW4gYmxvY2tpbmcgbW9kZSwgYSByZWFkIHdpbGwgYmxvY2sgKHRoYXQgaXMsCit3YWl0KSBmb3JldmVyIHVudGlsIGFuIGV2ZW50IGlzIGdlbmVyYXRlZCBhbmQgZWZmZWN0aXZlbHkgcmVhZC4gVGhlcmUKK2FyZSB0d28gYWx0ZXJuYXRpdmVzIGlmIHlvdSBjYW4ndCBhZmZvcmQgdG8gd2FpdCBmb3JldmVyICh3aGljaCBpcywKK2FkbWl0dGVkbHksIGEgbG9uZyB0aW1lOykKKworCWEpIHVzZSBzZWxlY3QgdG8gd2FpdCB1bnRpbCB0aGVyZSdzIGRhdGEgdG8gYmUgcmVhZCBvbiBmZCwgb3IKKwkgICB1bnRpbCBpdCB0aW1lb3V0cy4gVGhlcmUncyBhIGdvb2QgZXhhbXBsZSBvbiB0aGUgc2VsZWN0KDIpCisJICAgbWFuIHBhZ2UuCisKKwliKSBvcGVuIHRoZSBkZXZpY2UgaW4gbm9uLWJsb2NraW5nIG1vZGUgKE9fTk9OQkxPQ0spCisKKworMy4xIE9fTk9OQkxPQ0sKK35+fn5+fn5+fn5+fn5+CisKK0lmIHJlYWQgcmV0dXJucyAtMSB3aGVuIHJlYWRpbmcgaW4gT19OT05CTE9DSyBtb2RlLCB0aGlzIGlzbid0CituZWNlc3NhcmlseSBhICJyZWFsIiBlcnJvciAoY2hlY2sgZXJybm8oMykpOyBpdCBjYW4ganVzdCBtZWFuIHRoZXJlCithcmUgbm8gZXZlbnRzIHBlbmRpbmcgdG8gYmUgcmVhZCBvbiB0aGUgZHJpdmVyIHF1ZXVlLiBZb3Ugc2hvdWxkIHJlYWQKK2FsbCBldmVudHMgb24gdGhlIHF1ZXVlICh0aGF0IGlzLCB1bnRpbCB5b3UgZ2V0IGEgLTEpLgorCitGb3IgZXhhbXBsZSwKKworCXdoaWxlICgxKSB7CisJCXdoaWxlIChyZWFkIChmZCwgJmUsIHNpemVvZihlKSkgPiAwKSB7CisJCQlwcm9jZXNzX2V2ZW50IChlKTsKKwkJfQorCQkvKiBFQUdBSU4gaXMgcmV0dXJuZWQgd2hlbiB0aGUgcXVldWUgaXMgZW1wdHkgKi8KKwkJaWYgKGVycm5vICE9IEVBR0FJTikgeworCQkJLyogZXJyb3IgKi8KKwkJfQorCQkvKiBkbyBzb21ldGhpbmcgaW50ZXJlc3Rpbmcgd2l0aCBwcm9jZXNzZWQgZXZlbnRzICovCisJfQorCitPbmUgcmVhc29uIGZvciBlbXB0eWluZyB0aGUgcXVldWUgaXMgdGhhdCBpZiBpdCBnZXRzIGZ1bGwgeW91J2xsIHN0YXJ0CittaXNzaW5nIGV2ZW50cyBzaW5jZSB0aGUgcXVldWUgaXMgZmluaXRlLCBhbmQgb2xkZXIgZXZlbnRzIHdpbGwgZ2V0CitvdmVyd3JpdHRlbi4KKworVGhlIG90aGVyIHJlYXNvbiBpcyB0aGF0IHlvdSB3YW50IHRvIGtub3cgYWxsIHdoYXQgaGFwcGVuZWQsIGFuZCBub3QKK2RlbGF5IHRoZSBwcm9jZXNzaW5nIHRpbGwgbGF0ZXIuCisKK1doeSBjYW4gZ2V0IHRoZSBxdWV1ZSBmdWxsPyBCZWNhdXNlIHlvdSBkb24ndCBlbXB0eSB0aGUgcXVldWUgYXMKK21lbnRpb25lZCwgb3IgYmVjYXVzZSB0b28gbXVjaCB0aW1lIGVsYXBzZXMgZnJvbSBvbmUgcmVhZCB0byBhbm90aGVyCithbmQgdG9vIG1hbnkgZXZlbnRzIHRvIHN0b3JlIGluIHRoZSBxdWV1ZSBnZXQgZ2VuZXJhdGVkLiBOb3RlIHRoYXQKK2hpZ2ggc3lzdGVtIGxvYWQgbWF5IGNvbnRyaWJ1dGUgdG8gc3BhY2UgdGhvc2UgcmVhZHMgZXZlbiBtb3JlLgorCitJZiB0aW1lIGJldHdlZW4gcmVhZHMgaXMgZW5vdWdoIHRvIGZpbGwgdGhlIHF1ZXVlIGFuZCBsb3NlIGFuIGV2ZW50LAordGhlIGRyaXZlciB3aWxsIHN3aXRjaCB0byBzdGFydHVwIG1vZGUgYW5kIG5leHQgdGltZSB5b3UgcmVhZCBpdCwKK3N5bnRoZXRpYyBldmVudHMgKEpTX0VWRU5UX0lOSVQpIHdpbGwgYmUgZ2VuZXJhdGVkIHRvIGluZm9ybSB5b3Ugb2YKK3RoZSBhY3R1YWwgc3RhdGUgb2YgdGhlIGpveXN0aWNrLgorCitbQXMgZm9yIHZlcnNpb24gMS4yLjgsIHRoZSBxdWV1ZSBpcyBjaXJjdWxhciBhbmQgYWJsZSB0byBob2xkIDY0CisgZXZlbnRzLiBZb3UgY2FuIGluY3JlbWVudCB0aGlzIHNpemUgYnVtcGluZyB1cCBKU19CVUZGX1NJWkUgaW4KKyBqb3lzdGljay5oIGFuZCByZWNvbXBpbGluZyB0aGUgZHJpdmVyLl0KKworCitJbiB0aGUgYWJvdmUgY29kZSwgeW91IG1pZ2h0IGFzIHdlbGwgd2FudCB0byByZWFkIG1vcmUgdGhhbiBvbmUgZXZlbnQKK2F0IGEgdGltZSB1c2luZyB0aGUgdHlwaWNhbCByZWFkKDIpIGZ1bmN0aW9uYWxpdHkuIEZvciB0aGF0LCB5b3Ugd291bGQKK3JlcGxhY2UgdGhlIHJlYWQgYWJvdmUgd2l0aCBzb21ldGhpbmcgbGlrZQorCisJc3RydWN0IGpzX2V2ZW50IG15YnVmZmVyWzB4ZmZdOworCWludCBpID0gcmVhZCAoZmQsIG15YnVmZmVyLCBzaXplb2YobXlidWZmZXIpKTsKKworSW4gdGhpcyBjYXNlLCByZWFkIHdvdWxkIHJldHVybiAtMSBpZiB0aGUgcXVldWUgd2FzIGVtcHR5LCBvciBzb21lCitvdGhlciB2YWx1ZSBpbiB3aGljaCB0aGUgbnVtYmVyIG9mIGV2ZW50cyByZWFkIHdvdWxkIGJlIGkgLworc2l6ZW9mKGpzX2V2ZW50KSAgQWdhaW4sIGlmIHRoZSBidWZmZXIgd2FzIGZ1bGwsIGl0J3MgYSBnb29kIGlkZWEgdG8KK3Byb2Nlc3MgdGhlIGV2ZW50cyBhbmQga2VlcCByZWFkaW5nIGl0IHVudGlsIHlvdSBlbXB0eSB0aGUgZHJpdmVyIHF1ZXVlLgorCisKKzQuIElPQ1RMcworfn5+fn5+fn5+CisKK1RoZSBqb3lzdGljayBkcml2ZXIgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGlvY3RsKDIpIG9wZXJhdGlvbnMuCisKKwkJCQkvKiBmdW5jdGlvbgkJCTNyZCBhcmcgICovCisJI2RlZmluZSBKU0lPQ0dBWEVTCS8qIGdldCBudW1iZXIgb2YgYXhlcwkJY2hhcgkgKi8KKwkjZGVmaW5lIEpTSU9DR0JVVFRPTlMJLyogZ2V0IG51bWJlciBvZiBidXR0b25zCWNoYXIJICovCisJI2RlZmluZSBKU0lPQ0dWRVJTSU9OCS8qIGdldCBkcml2ZXIgdmVyc2lvbgkJaW50CSAqLworCSNkZWZpbmUgSlNJT0NHTkFNRShsZW4pIC8qIGdldCBpZGVudGlmaWVyIHN0cmluZwljaGFyCSAqLworCSNkZWZpbmUgSlNJT0NTQ09SUgkvKiBzZXQgY29ycmVjdGlvbiB2YWx1ZXMJJmpzX2NvcnIgKi8KKwkjZGVmaW5lIEpTSU9DR0NPUlIJLyogZ2V0IGNvcnJlY3Rpb24gdmFsdWVzCSZqc19jb3JyICovCisKK0ZvciBleGFtcGxlLCB0byByZWFkIHRoZSBudW1iZXIgb2YgYXhlcworCisJY2hhciBudW1iZXJfb2ZfYXhlczsKKwlpb2N0bCAoZmQsIEpTSU9DR0FYRVMsICZudW1iZXJfb2ZfYXhlcyk7CisKKworNC4xIEpTSU9HQ1ZFUlNJT04KK35+fn5+fn5+fn5+fn5+fn5+CisKK0pTSU9HQ1ZFUlNJT04gaXMgYSBnb29kIHdheSB0byBjaGVjayBpbiBydW4tdGltZSB3aGV0aGVyIHRoZSBydW5uaW5nCitkcml2ZXIgaXMgMS4wKyBhbmQgc3VwcG9ydHMgdGhlIGV2ZW50IGludGVyZmFjZS4gSWYgaXQgaXMgbm90LCB0aGUKK0lPQ1RMIHdpbGwgZmFpbC4gRm9yIGEgY29tcGlsZS10aW1lIGRlY2lzaW9uLCB5b3UgY2FuIHRlc3QgdGhlCitKU19WRVJTSU9OIHN5bWJvbAorCisJI2lmZGVmIEpTX1ZFUlNJT04KKwkjaWYgSlNfVkVSU0lPTiA+IDB4c29tZXRoaW5nCisKKworNC4yIEpTSU9DR05BTUUKK35+fn5+fn5+fn5+fn5+CisKK0pTSU9DR05BTUUobGVuKSBhbGxvd3MgeW91IHRvIGdldCB0aGUgbmFtZSBzdHJpbmcgb2YgdGhlIGpveXN0aWNrIC0gdGhlIHNhbWUKK2FzIGlzIGJlaW5nIHByaW50ZWQgYXQgYm9vdCB0aW1lLiBUaGUgJ2xlbicgYXJndW1lbnQgaXMgdGhlIGxlbmd0aCBvZiB0aGUKK2J1ZmZlciBwcm92aWRlZCBieSB0aGUgYXBwbGljYXRpb24gYXNraW5nIGZvciB0aGUgbmFtZS4gSXQgaXMgdXNlZCB0byBhdm9pZAorcG9zc2libGUgb3ZlcnJ1biBzaG91bGQgdGhlIG5hbWUgYmUgdG9vIGxvbmcuCisKKwljaGFyIG5hbWVbMTI4XTsKKwlpZiAoaW9jdGwoZmQsIEpTSU9DR05BTUUoc2l6ZW9mKG5hbWUpKSwgbmFtZSkgPCAwKQorCQlzdHJuY3B5KG5hbWUsICJVbmtub3duIiwgc2l6ZW9mKG5hbWUpKTsKKwlwcmludGYoIk5hbWU6ICVzXG4iLCBuYW1lKTsKKworCis0LjMgSlNJT0NbU0ddQ09SUgorfn5+fn5+fn5+fn5+fn5+fn4KKworRm9yIHVzYWdlIG9uIEpTSU9DW1NHXUNPUlIgSSBzdWdnZXN0IHlvdSB0byBsb29rIGludG8ganNjYWwuYyAgVGhleSBhcmUKK25vdCBuZWVkZWQgaW4gYSBub3JtYWwgcHJvZ3JhbSwgb25seSBpbiBqb3lzdGljayBjYWxpYnJhdGlvbiBzb2Z0d2FyZQorc3VjaCBhcyBqc2NhbCBvciBrY21qb3kuIFRoZXNlIElPQ1RMcyBhbmQgZGF0YSB0eXBlcyBhcmVuJ3QgY29uc2lkZXJlZAordG8gYmUgaW4gdGhlIHN0YWJsZSBwYXJ0IG9mIHRoZSBBUEksIGFuZCB0aGVyZWZvcmUgbWF5IGNoYW5nZSB3aXRob3V0Cit3YXJuaW5nIGluIGZvbGxvd2luZyByZWxlYXNlcyBvZiB0aGUgZHJpdmVyLgorCitCb3RoIEpTSU9DU0NPUlIgYW5kIEpTSU9DR0NPUlIgZXhwZWN0ICZqc19jb3JyIHRvIGJlIGFibGUgdG8gaG9sZAoraW5mb3JtYXRpb24gZm9yIGFsbCBheGlzLiBUaGF0IGlzLCBzdHJ1Y3QganNfY29yciBjb3JyW01BWF9BWElTXTsKKworc3RydWN0IGpzX2NvcnIgaXMgZGVmaW5lZCBhcworCisJc3RydWN0IGpzX2NvcnIgeworCQlfX3MzMiBjb2VmWzhdOworCQlfX3UxNiBwcmVjOworCQlfX3UxNiB0eXBlOworCX07CisKK2FuZCBgYHR5cGUnJworCisJI2RlZmluZSBKU19DT1JSX05PTkUgICAgICAgICAgICAweDAwICAgIC8qIHJldHVybnMgcmF3IHZhbHVlcyAqLworCSNkZWZpbmUgSlNfQ09SUl9CUk9LRU4gICAgICAgICAgMHgwMSAgICAvKiBicm9rZW4gbGluZSAqLworCisKKzUuIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworVGhlIDAueCBqb3lzdGljayBkcml2ZXIgQVBJIGlzIHF1aXRlIGxpbWl0ZWQgYW5kIGl0cyB1c2FnZSBpcyBkZXByZWNhdGVkLgorVGhlIGRyaXZlciBvZmZlcnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhvdWdoLiBIZXJlJ3MgYSBxdWljayBzdW1tYXJ5OgorCisJc3RydWN0IEpTX0RBVEFfVFlQRSBqczsKKwl3aGlsZSAoMSkgeworCQlpZiAocmVhZCAoZmQsICZqcywgSlNfUkVUVVJOKSAhPSBKU19SRVRVUk4pIHsKKwkJCS8qIGVycm9yICovCisJCX0KKwkJdXNsZWVwICgxMDAwKTsKKwl9CisKK0FzIHlvdSBjYW4gZmlndXJlIG91dCBmcm9tIHRoZSBleGFtcGxlLCB0aGUgcmVhZCByZXR1cm5zIGltbWVkaWF0ZWx5LAord2l0aCB0aGUgYWN0dWFsIHN0YXRlIG9mIHRoZSBqb3lzdGljay4KKworCXN0cnVjdCBKU19EQVRBX1RZUEUgeworCQlpbnQgYnV0dG9uczsgICAgLyogaW1tZWRpYXRlIGJ1dHRvbiBzdGF0ZSAqLworCQlpbnQgeDsgICAgICAgICAgLyogaW1tZWRpYXRlIHggYXhpcyB2YWx1ZSAqLworCQlpbnQgeTsgICAgICAgICAgLyogaW1tZWRpYXRlIHkgYXhpcyB2YWx1ZSAqLworCX07CisKK2FuZCBKU19SRVRVUk4gaXMgZGVmaW5lZCBhcworCisJI2RlZmluZSBKU19SRVRVUk4gICAgICAgc2l6ZW9mKHN0cnVjdCBKU19EQVRBX1RZUEUpCisKK1RvIHRlc3QgdGhlIHN0YXRlIG9mIHRoZSBidXR0b25zLAorCisJZmlyc3RfYnV0dG9uX3N0YXRlICA9IGpzLmJ1dHRvbnMgJiAxOworCXNlY29uZF9idXR0b25fc3RhdGUgPSBqcy5idXR0b25zICYgMjsKKworVGhlIGF4aXMgdmFsdWVzIGRvIG5vdCBoYXZlIGEgZGVmaW5lZCByYW5nZSBpbiB0aGUgb3JpZ2luYWwgMC54IGRyaXZlciwKK2V4Y2VwdCBmb3IgdGhhdCB0aGUgdmFsdWVzIGFyZSBub24tbmVnYXRpdmUuIFRoZSAxLjIuOCsgZHJpdmVycyB1c2UgYQorZml4ZWQgcmFuZ2UgZm9yIHJlcG9ydGluZyB0aGUgdmFsdWVzLCAxIGJlaW5nIHRoZSBtaW5pbXVtLCAxMjggdGhlCitjZW50ZXIsIGFuZCAyNTUgbWF4aW11bSB2YWx1ZS4KKworVGhlIHYwLjguMC4yIGRyaXZlciBhbHNvIGhhZCBhbiBpbnRlcmZhY2UgZm9yICdkaWdpdGFsIGpveXN0aWNrcycsIChub3cKK2NhbGxlZCBNdWx0aXN5c3RlbSBqb3lzdGlja3MgaW4gdGhpcyBkcml2ZXIpLCB1bmRlciAvZGV2L2Rqc1guIFRoaXMgZHJpdmVyCitkb2Vzbid0IHRyeSB0byBiZSBjb21wYXRpYmxlIHdpdGggdGhhdCBpbnRlcmZhY2UuCisKKworNi4gRmluYWwgTm90ZXMKK35+fn5+fn5+fn5+fn5+CisKK19fX18vfAlDb21tZW50cywgYWRkaXRpb25zLCBhbmQgc3BlY2lhbGx5IGNvcnJlY3Rpb25zIGFyZSB3ZWxjb21lLgorXCBvLk98CURvY3VtZW50YXRpb24gdmFsaWQgZm9yIGF0IGxlYXN0IHZlcnNpb24gMS4yLjggb2YgdGhlIGpveXN0aWNrCisgPShfKT0JZHJpdmVyIGFuZCBhcyB1c3VhbCwgdGhlIHVsdGltYXRlIHNvdXJjZSBmb3IgZG9jdW1lbnRhdGlvbiBpcworICAgVQl0byAiVXNlIFRoZSBTb3VyY2UgTHVrZSIgb3IsIGF0IHlvdXIgY29udmVuaWVuY2UsIFZvanRlY2ggOykKKworCQkJCQktIFJhZ25hcgorRU9GCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lucHV0L2pveXN0aWNrLXBhcnBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9qb3lzdGljay1wYXJwb3J0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Njg3MGM3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9qb3lzdGljay1wYXJwb3J0LnR4dApAQCAtMCwwICsxLDU0MiBAQAorCQkgICAgTGludXggSm95c3RpY2sgcGFycG9ydCBkcml2ZXJzIHYyLjAKKwkgICAgICAgKGMpIDE5OTgtMjAwMCBWb2p0ZWNoIFBhdmxpayA8dm9qdGVjaEB1Y3cuY3o+CisJICAgICAgIChjKSAxOTk4IEFuZHJlZSBCb3JybWFubiA8YS5ib3JybWFubkB0dS1icy5kZT4KKwkJCSAgICAgU3BvbnNvcmVkIGJ5IFN1U0UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworMC4gRGlzY2xhaW1lcgorfn5+fn5+fn5+fn5+fgorICBBbnkgaW5mb3JtYXRpb24gaW4gdGhpcyBmaWxlIGlzIHByb3ZpZGVkIGFzLWlzLCB3aXRob3V0IGFueSBndWFyYW50ZWUgdGhhdAoraXQgd2lsbCBiZSB0cnVlLiBTbywgdXNlIGl0IGF0IHlvdXIgb3duIHJpc2suIFRoZSBwb3NzaWJsZSBkYW1hZ2VzIHRoYXQgY2FuCitoYXBwZW4gaW5jbHVkZSBidXJuaW5nIHlvdXIgcGFyYWxsZWwgcG9ydCwgYW5kL29yIHRoZSBzdGlja3MgYW5kIGpveXN0aWNrCithbmQgbWF5YmUgZXZlbiBtb3JlLiBMaWtlIHdoZW4gYSBsaWdodG5pbmcga2lsbHMgeW91IGl0IGlzIG5vdCBvdXIgcHJvYmxlbS4KKworMS4gSW50cm8KK35+fn5+fn5+CisgIFRoZSBqb3lzdGljayBwYXJwb3J0IGRyaXZlcnMgYXJlIHVzZWQgZm9yIGpveXN0aWNrcyBhbmQgZ2FtZXBhZHMgbm90CitvcmlnaW5hbGx5IGRlc2lnbmVkIGZvciBQQ3MgYW5kIG90aGVyIGNvbXB1dGVycyBMaW51eCBydW5zIG9uLiBCZWNhdXNlIG9mCit0aGF0LCBQQ3MgdXN1YWxseSBsYWNrIHRoZSByaWdodCBwb3J0cyB0byBjb25uZWN0IHRoZXNlIGRldmljZXMgdG8uIFBhcmFsbGVsCitwb3J0LCBiZWNhdXNlIG9mIGl0cyBhYmlsaXR5IHRvIGNoYW5nZSBzaW5nbGUgYml0cyBhdCB3aWxsLCBhbmQgcHJvdmlkaW5nCitib3RoIG91dHB1dCBhbmQgaW5wdXQgYml0cyBpcyB0aGUgbW9zdCBzdWl0YWJsZSBwb3J0IG9uIHRoZSBQQyBmb3IKK2Nvbm5lY3Rpbmcgc3VjaCBkZXZpY2VzLgorCisyLiBEZXZpY2VzIHN1cHBvcnRlZAorfn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgTWFueSBjb25zb2xlIGFuZCA4LWJpdCBjb21wdXRlciBnYW1lcGFkcyBhbmQgam95c3RpY2tzIGFyZSBzdXBwb3J0ZWQuIFRoZQorZm9sbG93aW5nIHN1YnNlY3Rpb25zIGRpc2N1c3MgdXNhZ2Ugb2YgZWFjaC4KKworMi4xIE5FUyBhbmQgU05FUworfn5+fn5+fn5+fn5+fn5+fgorICBUaGUgTmludGVuZG8gRW50ZXJ0YWlubWVudCBTeXN0ZW0gYW5kIFN1cGVyIE5pbnRlbmRvIEVudGVydGFpbm1lbnQgU3lzdGVtCitnYW1lcGFkcyBhcmUgd2lkZWx5IGF2YWlsYWJsZSwgYW5kIGVhc3kgdG8gZ2V0LiBBbHNvLCB0aGV5IGFyZSBxdWl0ZSBlYXN5IHRvCitjb25uZWN0IHRvIGEgUEMsIGFuZCBkb24ndCBuZWVkIG11Y2ggcHJvY2Vzc2luZyBzcGVlZCAoMTA4IHVzIGZvciBORVMgYW5kCisxNjUgdXMgZm9yIFNORVMsIGNvbXBhcmVkIHRvIGFib3V0IDEwMDAgdXMgZm9yIFBDIGdhbWVwYWRzKSB0byBjb21tdW5pY2F0ZQord2l0aCB0aGVtLgorCisgIEFsbCBORVMgYW5kIFNORVMgdXNlIHRoZSBzYW1lIHN5bmNocm9ub3VzIHNlcmlhbCBwcm90b2NvbCwgY2xvY2tlZCBmcm9tCit0aGUgY29tcHV0ZXIncyBzaWRlIChhbmQgdGh1cyB0aW1pbmcgaW5zZW5zaXRpdmUpLiBUbyBhbGxvdyB1cCB0byA1IE5FUworYW5kL29yIFNORVMgZ2FtZXBhZHMgYW5kL29yIFNORVMgbWljZSBjb25uZWN0ZWQgdG8gdGhlIHBhcmFsbGVsIHBvcnQgYXQgb25jZSwKK3RoZSBvdXRwdXQgbGluZXMgb2YgdGhlIHBhcmFsbGVsIHBvcnQgYXJlIHNoYXJlZCwgd2hpbGUgb25lIG9mIDUgYXZhaWxhYmxlCitpbnB1dCBsaW5lcyBpcyBhc3NpZ25lZCB0byBlYWNoIGdhbWVwYWQuCisKKyAgVGhpcyBwcm90b2NvbCBpcyBoYW5kbGVkIGJ5IHRoZSBnYW1lY29uLmMgZHJpdmVyLCBzbyB0aGF0J3MgdGhlIG9uZQoreW91J2xsIHVzZSBmb3IgTkVTLCBTTkVTIGdhbWVwYWRzIGFuZCBTTkVTIG1pY2UuCisKKyAgVGhlIG1haW4gcHJvYmxlbSB3aXRoIFBDIHBhcmFsbGVsIHBvcnRzIGlzIHRoYXQgdGhleSBkb24ndCBoYXZlICs1ViBwb3dlcgorc291cmNlIG9uIGFueSBvZiB0aGVpciBwaW5zLiBTbywgaWYgeW91IHdhbnQgYSByZWxpYWJsZSBzb3VyY2Ugb2YgcG93ZXIKK2ZvciB5b3VyIHBhZHMsIHVzZSBlaXRoZXIga2V5Ym9hcmQgb3Igam95c3RpY2sgcG9ydCwgYW5kIG1ha2UgYSBwYXNzLXRocm91Z2gKK2NhYmxlLiBZb3UgY2FuIGFsc28gcHVsbCB0aGUgcG93ZXIgZGlyZWN0bHkgZnJvbSB0aGUgcG93ZXIgc3VwcGx5ICh0aGUgcmVkCit3aXJlIGlzICs1VikuCisKKyAgSWYgeW91IHdhbnQgdG8gdXNlIHRoZSBwYXJhbGxlbCBwb3J0IG9ubHksIHlvdSBjYW4gdGFrZSB0aGUgcG93ZXIgaXMgZnJvbQorc29tZSBkYXRhIHBpbi4gRm9yIG1vc3QgZ2FtZXBhZCBhbmQgcGFycG9ydCBpbXBsZW1lbnRhdGlvbnMgb25seSBvbmUgcGluIGlzCituZWVkZWQsIGFuZCBJJ2QgcmVjb21tZW5kIHBpbiA5IGZvciB0aGF0LCB0aGUgaGlnaGVzdCBkYXRhIGJpdC4gT24gdGhlIG90aGVyCitoYW5kLCBpZiB5b3UgYXJlIG5vdCBwbGFubmluZyB0byB1c2UgYW55dGhpbmcgZWxzZSB0aGFuIE5FUyAvIFNORVMgb24gdGhlCitwb3J0LCBhbnl0aGluZyBiZXR3ZWVuIGFuZCBpbmNsdWRpbmcgcGluIDQgYW5kIHBpbiA5IHdpbGwgd29yay4KKworKHBpbiA5KSAtLS0tLT4gUG93ZXIKKworICBVbmZvcnR1bmF0ZWx5LCB0aGVyZSBhcmUgcGFkcyB0aGF0IG5lZWQgYSBsb3QgbW9yZSBvZiBwb3dlciwgYW5kIHBhcmFsbGVsCitwb3J0cyB0aGF0IGNhbid0IGdpdmUgbXVjaCBjdXJyZW50IHRocm91Z2ggdGhlIGRhdGEgcGlucy4gSWYgdGhpcyBpcyB5b3VyCitjYXNlLCB5b3UnbGwgbmVlZCB0byB1c2UgZGlvZGVzIChhcyBhIHByZXZlbnRpb24gb2YgZGVzdHJveWluZyB5b3VyIHBhcmFsbGVsCitwb3J0KSwgYW5kIGNvbWJpbmUgdGhlIGN1cnJlbnRzIG9mIHR3byBvciBtb3JlIGRhdGEgYml0cyB0b2dldGhlci4KKworCSAgIERpb2RlcworKHBpbiA5KSAtLS0tfD58LS0tLS0tLSstLS0tLS0+IFBvd2VyCisJCSAgICAgIHwKKyhwaW4gOCkgLS0tLXw+fC0tLS0tLS0rCisJCSAgICAgIHwKKyhwaW4gNykgLS0tLXw+fC0tLS0tLS0rCisJCSAgICAgIHwKKyA8YW5kIHNvIG9uPiAgICAgICAgICA6CisJCSAgICAgIHwKKyhwaW4gNCkgLS0tLXw+fC0tLS0tLS0rCisKKyAgR3JvdW5kIGlzIHF1aXRlIGVhc3kuIE9uIFBDJ3MgcGFyYWxsZWwgcG9ydCB0aGUgZ3JvdW5kIGlzIG9uIGFueSBvZiB0aGUKK3BpbnMgZnJvbSBwaW4gMTggdG8gcGluIDI1LiBTbyB1c2UgYW55IHBpbiBvZiB0aGVzZSB5b3UgbGlrZSBmb3IgdGhlIGdyb3VuZC4KKworKHBpbiAxOCkgLS0tLS0+IEdyb3VuZAorCisgIE5FUyBhbmQgU05FUyBwYWRzIGhhdmUgdHdvIGlucHV0IGJpdHMsIENsb2NrIGFuZCBMYXRjaCwgd2hpY2ggZHJpdmUgdGhlCitzZXJpYWwgdHJhbnNmZXIuIFRoZXNlIGFyZSBjb25uZWN0ZWQgdG8gcGlucyAyIGFuZCAzIG9mIHRoZSBwYXJhbGxlbCBwb3J0LAorcmVzcGVjdGl2ZWx5LgorCisocGluIDIpIC0tLS0tPiBDbG9jaworKHBpbiAzKSAtLS0tLT4gTGF0Y2gKKworICBBbmQgdGhlIGxhc3QgdGhpbmcgaXMgdGhlIE5FUyAvIFNORVMgZGF0YSB3aXJlLiBPbmx5IHRoYXQgaXNuJ3Qgc2hhcmVkIGFuZAorZWFjaCBwYWQgbmVlZHMgaXRzIG93biBkYXRhIHBpbi4gVGhlIHBhcmFsbGVsIHBvcnQgcGlucyBhcmU6CisKKyhwaW4gMTApIC0tLS0tPiBQYWQgMSBkYXRhCisocGluIDExKSAtLS0tLT4gUGFkIDIgZGF0YQorKHBpbiAxMikgLS0tLS0+IFBhZCAzIGRhdGEKKyhwaW4gMTMpIC0tLS0tPiBQYWQgNCBkYXRhCisocGluIDE1KSAtLS0tLT4gUGFkIDUgZGF0YQorCisgIE5vdGUgdGhhdCBwaW4gMTQgaXMgbm90IHVzZWQsIHNpbmNlIGl0IGlzIG5vdCBhbiBpbnB1dCBwaW4gb24gdGhlIHBhcmFsbGVsCitwb3J0LgorCisgIFRoaXMgaXMgZXZlcnl0aGluZyB5b3UgbmVlZCBvbiB0aGUgUEMncyBzaWRlIG9mIHRoZSBjb25uZWN0aW9uLCBub3cgb24gdG8KK3RoZSBnYW1lcGFkcyBzaWRlLiBUaGUgTkVTIGFuZCBTTkVTIGhhdmUgZGlmZmVyZW50IGNvbm5lY3RvcnMuIEFsc28sIHRoZXJlCithcmUgcXVpdGUgYSBsb3Qgb2YgTkVTIGNsb25lcywgYW5kIGJlY2F1c2UgTmludGVuZG8gdXNlZCBwcm9wcmlldGFyeQorY29ubmVjdG9ycyBmb3IgdGhlaXIgbWFjaGluZXMsIHRoZSBjbG9uZXJzIGNvdWxkbid0IGFuZCB1c2VkIHN0YW5kYXJkIEQtQ2Fubm9uCitjb25uZWN0b3JzLiBBbnl3YXksIGlmIHlvdSd2ZSBnb3QgYSBnYW1lcGFkLCBhbmQgaXQgaGFzIGJ1dHRvbnMgQSwgQiwgVHVyYm8KK0EsIFR1cmJvIEIsIFNlbGVjdCBhbmQgU3RhcnQsIGFuZCBpcyBjb25uZWN0ZWQgdGhyb3VnaCA1IHdpcmVzLCB0aGVuIGl0IGlzCitlaXRoZXIgYSBORVMgb3IgTkVTIGNsb25lIGFuZCB3aWxsIHdvcmsgd2l0aCB0aGlzIGNvbm5lY3Rpb24uIFNORVMgZ2FtZXBhZHMKK2Fsc28gdXNlIDUgd2lyZXMsIGJ1dCBoYXZlIG1vcmUgYnV0dG9ucy4gVGhleSB3aWxsIHdvcmsgYXMgd2VsbCwgb2YgY291cnNlLgorCitQaW5vdXQgZm9yIE5FUyBnYW1lcGFkcyAgICAgICAgICAgICAgICAgUGlub3V0IGZvciBTTkVTIGdhbWVwYWRzIGFuZCBtaWNlCisKKwkgICArLS0tLT4gUG93ZXIgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXAorCSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgNyB8IG8gIG8gIG8gIG8gfCAgeCAgeCAgbyAgfCAxCisgNSArLS0tLS0tLS0tKyAgNyAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vCisgICB8IHggIHggIG8gICBcICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwgIHwgIHwgICAgICAgICAgfAorICAgfCBvICBvICBvICBvIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8ICB8ICB8ICAgICAgICAgICstPiBHcm91bmQKKyA0ICstLS0tLS0tLS0tLS0rIDEgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfCAgfCAgKy0tLS0tLS0tLS0tLT4gRGF0YQorICAgICB8ICB8ICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8ICArLS0tLS0tLS0tLS0tLS0tPiBMYXRjaAorICAgICB8ICB8ICB8ICArLT4gR3JvdW5kICAgICAgICAgICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0tLS0tPiBDbG9jaworICAgICB8ICB8ICArLS0tLT4gQ2xvY2sgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiBQb3dlcgorICAgICB8ICArLS0tLS0tLT4gTGF0Y2gKKyAgICAgKy0tLS0tLS0tLS0+IERhdGEKKworUGlub3V0IGZvciBORVMgY2xvbmUgKGRiOSkgZ2FtZXBhZHMgICAgIFBpbm91dCBmb3IgTkVTIGNsb25lIChkYjE1KSBnYW1lcGFkcworCisJKy0tLS0tLS0tLT4gQ2xvY2sgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLT4gRGF0YQorCXwgKy0tLS0tLS0+IExhdGNoICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICstLS0+IEdyb3VuZAorCXwgfCArLS0tLS0+IERhdGEgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwKKwl8IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX19fX19fX19fX19fX19fX18KKyAgICBfX19fX19fX19fX19fICAgICAgICAgICAgICAgICAgICAgICAgOCBcIG8geCB4IHggeCB4IHggbyAvIDEKKyAgNSBcIHggbyBvIG8geCAvIDEgICAgICAgICAgICAgICAgICAgICAgICAgXCBvIHggeCBvIHggeCBvIC8KKyAgICAgXCB4IG8geCBvIC8gICAgICAgICAgICAgICAgICAgICAgICAgIDE1IGB+fn5+fn5+fn5+fn5+JyA5CisgICAgOSBgfn5+fn5+ficgNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCAgICAgfAorCSB8ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCAgICAgKy0tLS0+IENsb2NrCisJIHwgICArLS0tLT4gUG93ZXIgICAgICAgICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLT4gTGF0Y2gKKwkgKy0tLS0tLS0tPiBHcm91bmQgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tPiBQb3dlcgorCisyLjIgTXVsdGlzeXN0ZW0gam95c3RpY2tzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisgIEluIHRoZSBlcmEgb2YgOC1iaXQgbWFjaGluZXMsIHRoZXJlIHdhcyBzb21ldGhpbmcgbGlrZSBkZS1mYWN0byBzdGFuZGFyZAorZm9yIGpveXN0aWNrIHBvcnRzLiBUaGV5IHdlcmUgYWxsIGRpZ2l0YWwsIGFuZCBhbGwgdXNlZCBELUNhbm5vbiA5IHBpbgorY29ubmVjdG9ycyAoZGI5KS4gQmVjYXVzZSBvZiB0aGF0LCBhIHNpbmdsZSBqb3lzdGljayBjb3VsZCBiZSB1c2VkIHdpdGhvdXQKK2hhc3NsZSBvbiBBdGFyaSAoMTMwLCA4MDBYRSwgODAwWEwsIDI2MDAsIDcyMDApLCBBbWlnYSwgQ29tbW9kb3JlIEM2NCwKK0Ftc3RyYWQgQ1BDLCBTaW5jbGFpciBaWCBTcGVjdHJ1bSBhbmQgbWFueSBvdGhlciBtYWNoaW5lcy4gVGhhdCdzIHdoeSB0aGVzZQoram95c3RpY2tzIGFyZSBjYWxsZWQgIk11bHRpc3lzdGVtIi4KKworICBOb3cgdGhlaXIgcGlub3V0OgorCisgICAgICArLS0tLS0tLS0tPiBSaWdodAorICAgICAgfCArLS0tLS0tLT4gTGVmdAorICAgICAgfCB8ICstLS0tLT4gRG93bgorICAgICAgfCB8IHwgKy0tLT4gVXAKKyAgICAgIHwgfCB8IHwKKyAgX19fX19fX19fX19fXworNSBcIHggbyBvIG8gbyAvIDEKKyAgIFwgeCBvIHggbyAvCisgIDkgYH5+fn5+fn4nIDYKKyAgICAgICB8ICAgfAorICAgICAgIHwgICArLS0tLT4gQnV0dG9uCisgICAgICAgKy0tLS0tLS0tPiBHcm91bmQKKworICBIb3dldmVyLCBhcyB0aW1lIHBhc3NlZCwgZXh0ZW5zaW9ucyB0byB0aGlzIHN0YW5kYXJkIGRldmVsb3BlZCwgYW5kIHRoZXNlCit3ZXJlIG5vdCBjb21wYXRpYmxlIHdpdGggZWFjaCBvdGhlcjoKKworCisJQXRhcmkgMTMwLCA4MDAvWEwvWEUJCSAgIE1TWAorCisJCQkJCSArLS0tLS0tLS0tLS0+IFBvd2VyCisgICAgICArLS0tLS0tLS0tPiBSaWdodCAgICAgICAgICAgICAgICAgIHwgKy0tLS0tLS0tLT4gUmlnaHQKKyAgICAgIHwgKy0tLS0tLS0+IExlZnQgICAgICAgICAgICAgICAgICAgfCB8ICstLS0tLS0tPiBMZWZ0CisgICAgICB8IHwgKy0tLS0tPiBEb3duICAgICAgICAgICAgICAgICAgIHwgfCB8ICstLS0tLT4gRG93bgorICAgICAgfCB8IHwgKy0tLT4gVXAgICAgICAgICAgICAgICAgICAgICB8IHwgfCB8ICstLS0+IFVwCisgICAgICB8IHwgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCB8IHwgfAorICBfX19fX19fX19fX19fICAgICAgICAgICAgICAgICAgICAgICAgX19fX19fX19fX19fXworNSBcIHggbyBvIG8gbyAvIDEgICAgICAgICAgICAgICAgICAgIDUgXCBvIG8gbyBvIG8gLyAxCisgICBcIHggbyBvIG8gLyAgICAgICAgICAgICAgICAgICAgICAgICAgXCBvIG8gbyBvIC8KKyAgOSBgfn5+fn5+ficgNiAgICAgICAgICAgICAgICAgICAgICAgIDkgYH5+fn5+fn4nIDYKKyAgICAgICB8IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCB8IHwKKyAgICAgICB8IHwgKy0tLS0+IEJ1dHRvbiAgICAgICAgICAgICAgICAgIHwgfCB8ICstLS0tPiBCdXR0b24gMQorICAgICAgIHwgKy0tLS0tLT4gUG93ZXIgICAgICAgICAgICAgICAgICAgfCB8ICstLS0tLS0+IEJ1dHRvbiAyCisgICAgICAgKy0tLS0tLS0tPiBHcm91bmQgICAgICAgICAgICAgICAgICB8ICstLS0tLS0tLT4gT3V0cHV0IDMKKwkJCQkJICArLS0tLS0tLS0tLT4gR3JvdW5kCisKKwlBbXN0cmFkIENQQwkJCSAgIENvbW1vZG9yZSBDNjQKKworCQkJCQkgKy0tLS0tLS0tLS0tPiBBbmFsb2cgWQorICAgICAgKy0tLS0tLS0tLT4gUmlnaHQgICAgICAgICAgICAgICAgICB8ICstLS0tLS0tLS0+IFJpZ2h0CisgICAgICB8ICstLS0tLS0tPiBMZWZ0ICAgICAgICAgICAgICAgICAgIHwgfCArLS0tLS0tLT4gTGVmdAorICAgICAgfCB8ICstLS0tLT4gRG93biAgICAgICAgICAgICAgICAgICB8IHwgfCArLS0tLS0+IERvd24KKyAgICAgIHwgfCB8ICstLS0+IFVwICAgICAgICAgICAgICAgICAgICAgfCB8IHwgfCArLS0tPiBVcAorICAgICAgfCB8IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgfCB8IHwKKyAgX19fX19fX19fX19fXyAgICAgICAgICAgICAgICAgICAgICAgIF9fX19fX19fX19fX18KKzUgXCB4IG8gbyBvIG8gLyAxICAgICAgICAgICAgICAgICAgICA1IFwgbyBvIG8gbyBvIC8gMQorICAgXCB4IG8gbyBvIC8gICAgICAgICAgICAgICAgICAgICAgICAgIFwgbyBvIG8gbyAvCisgIDkgYH5+fn5+fn4nIDYgICAgICAgICAgICAgICAgICAgICAgICA5IGB+fn5+fn5+JyA2CisgICAgICAgfCB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgfCB8CisgICAgICAgfCB8ICstLS0tPiBCdXR0b24gMSAgICAgICAgICAgICAgICB8IHwgfCArLS0tLT4gQnV0dG9uCisgICAgICAgfCArLS0tLS0tPiBCdXR0b24gMiAgICAgICAgICAgICAgICB8IHwgKy0tLS0tLT4gUG93ZXIKKyAgICAgICArLS0tLS0tLS0+IEdyb3VuZCAgICAgICAgICAgICAgICAgIHwgKy0tLS0tLS0tPiBHcm91bmQKKwkJCQkJICArLS0tLS0tLS0tLT4gQW5hbG9nIFgKKworCVNpbmNsYWlyIFNwZWN0cnVtICsyQS8rMyAgICAgICAgICAgQW1pZ2EgMTIwMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICstLS0tLS0tLS0tLT4gVXAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0+IEJ1dHRvbiAzCisgICAgfCArLS0tLS0tLS0tPiBGaXJlICAgICAgICAgICAgICAgICAgIHwgKy0tLS0tLS0tLT4gUmlnaHQKKyAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICstLS0tLS0tPiBMZWZ0CisgICAgfCB8ICAgKy0tLS0tPiBHcm91bmQgICAgICAgICAgICAgICAgIHwgfCB8ICstLS0tLT4gRG93bgorICAgIHwgfCAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwgfCB8ICstLS0+IFVwCisgICAgfCB8ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCB8IHwgfAorICBfX19fX19fX19fX19fICAgICAgICAgICAgICAgICAgICAgICAgX19fX19fX19fX19fXworNSBcIG8gbyB4IG8geCAvIDEgICAgICAgICAgICAgICAgICAgIDUgXCBvIG8gbyBvIG8gLyAxCisgICBcIG8gbyBvIG8gLyAgICAgICAgICAgICAgICAgICAgICAgICAgXCBvIG8gbyBvIC8KKyAgOSBgfn5+fn5+ficgNiAgICAgICAgICAgICAgICAgICAgICAgIDkgYH5+fn5+fn4nIDYKKyAgICAgfCB8IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCB8IHwKKyAgICAgfCB8IHwgKy0tLS0+IFJpZ2h0ICAgICAgICAgICAgICAgICAgIHwgfCB8ICstLS0tPiBCdXR0b24gMQorICAgICB8IHwgKy0tLS0tLT4gTGVmdCAgICAgICAgICAgICAgICAgICAgfCB8ICstLS0tLS0+IFBvd2VyCisgICAgIHwgKy0tLS0tLS0tPiBHcm91bmQgICAgICAgICAgICAgICAgICB8ICstLS0tLS0tLT4gR3JvdW5kCisgICAgICstLS0tLS0tLS0tPiBEb3duICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLT4gQnV0dG9uIDIKKworICBBbmQgdGhlcmUgd2VyZSBtYW55IG90aGVycy4KKworMi4yLjEgTXVsdGlzeXN0ZW0gam95c3RpY2tzIHVzaW5nIGRiOS5jCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgRm9yIHRoZSBNdWx0aXN5c3RlbSBqb3lzdGlja3MsIGFuZCB0aGVpciBkZXJpdmF0aXZlcywgdGhlIGRiOS5jIGRyaXZlcgord2FzIHdyaXR0ZW4uIEl0IGFsbG93cyBvbmx5IG9uZSBqb3lzdGljayAvIGdhbWVwYWQgcGVyIHBhcmFsbGVsIHBvcnQsIGJ1dAordGhlIGludGVyZmFjZSBpcyBlYXN5IHRvIGJ1aWxkIGFuZCB3b3JrcyB3aXRoIGFsbW9zdCBhbnl0aGluZy4KKworICBGb3IgdGhlIGJhc2ljIDEtYnV0dG9uIE11bHRpc3lzdGVtIGpveXN0aWNrIHlvdSBjb25uZWN0IGl0cyB3aXJlcyB0byB0aGUKK3BhcmFsbGVsIHBvcnQgbGlrZSB0aGlzOgorCisocGluICAxKSAtLS0tLT4gUG93ZXIKKyhwaW4gMTgpIC0tLS0tPiBHcm91bmQKKworKHBpbiAgMikgLS0tLS0+IFVwCisocGluICAzKSAtLS0tLT4gRG93bgorKHBpbiAgNCkgLS0tLS0+IExlZnQKKyhwaW4gIDUpIC0tLS0tPiBSaWdodAorKHBpbiAgNikgLS0tLS0+IEJ1dHRvbiAxCisKKyAgSG93ZXZlciwgaWYgdGhlIGpveXN0aWNrIGlzIHN3aXRjaCBiYXNlZCAoZWcuIGNsaWNrcyB3aGVuIHlvdSBtb3ZlIGl0KSwKK3lvdSBtaWdodCBvciBtaWdodCBub3QsIGRlcGVuZGluZyBvbiB5b3VyIHBhcmFsbGVsIHBvcnQsIG5lZWQgMTAga09obSBwdWxsdXAKK3Jlc2lzdG9ycyBvbiBlYWNoIG9mIHRoZSBkaXJlY3Rpb24gYW5kIGJ1dHRvbiBzaWduYWxzLCBsaWtlIHRoaXM6CisKKyhwaW4gMikgLS0tLS0tLS0tLS0tKy0tLS0tLT4gVXAKKwkgIFJlc2lzdG9yICB8CisocGluIDEpIC0tWzEwa09obV0tLSsKKworICBUcnkgd2l0aG91dCwgYW5kIGlmIGl0IGRvZXNuJ3Qgd29yaywgYWRkIHRoZW0uIEZvciBUVEwgYmFzZWQgam95c3RpY2tzIC8KK2dhbWVwYWRzIHRoZSBwdWxsdXBzIGFyZSBub3QgbmVlZGVkLgorCisgIEZvciBqb3lzdGlja3Mgd2l0aCB0d28gYnV0dG9ucyB5b3UgY29ubmVjdCB0aGUgc2Vjb25kIGJ1dHRvbiB0byBwaW4gNyBvbgordGhlIHBhcmFsbGVsIHBvcnQuCisKKyhwaW4gNykgLS0tLS0+IEJ1dHRvbiAyCisKKyAgQW5kIHRoYXQncyBpdC4KKworICBPbiBhIHNpZGUgbm90ZSwgaWYgeW91IGhhdmUgYWxyZWFkeSBidWlsdCBhIGRpZmZlcmVudCBhZGFwdGVyIGZvciB1c2Ugd2l0aAordGhlIGRpZ2l0YWwgam95c3RpY2sgZHJpdmVyIDAuOC4wLjIsIHRoaXMgaXMgYWxzbyBzdXBwb3J0ZWQgYnkgdGhlIGRiOS5jCitkcml2ZXIsIGFzIGRldmljZSB0eXBlIDguIChTZWUgc2VjdGlvbiAzLjIpCisKKzIuMi4yIE11bHRpc3lzdGVtIGpveXN0aWNrcyB1c2luZyBnYW1lY29uLmMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgRm9yIHNvbWUgcGVvcGxlIGp1c3Qgb25lIGpveXN0aWNrIHBlciBwYXJhbGxlbCBwb3J0IGlzIG5vdCBlbm91Z2gsIGFuZC9vcgord2FudCB0byB1c2UgdGhlbSBvbiBvbmUgcGFyYWxsZWwgcG9ydCB0b2dldGhlciB3aXRoIE5FUy9TTkVTL1BTWCBwYWRzLiBUaGlzIGlzCitwb3NzaWJsZSB1c2luZyB0aGUgZ2FtZWNvbi5jLiBJdCBzdXBwb3J0cyB1cCB0byA1IGRldmljZXMgb2YgdGhlIGFib3ZlIHR5cGVzLAoraW5jbHVkaW5nIDEgYW5kIDIgYnV0dG9ucyBNdWx0aXN5c3RlbSBqb3lzdGlja3MuCisKKyAgSG93ZXZlciwgdGhlcmUgaXMgbm90aGluZyBmb3IgZnJlZS4gVG8gYWxsb3cgbW9yZSBzdGlja3MgdG8gYmUgdXNlZCBhdAorb25jZSwgeW91IG5lZWQgdGhlIHN0aWNrcyB0byBiZSBwdXJlbHkgc3dpdGNoIGJhc2VkICh0aGF0IGlzIG5vbi1UVEwpLCBhbmQKK25vdCB0byBuZWVkIHBvd2VyLiBKdXN0IGEgcGxhaW4gc2ltcGxlIHNpeCBzd2l0Y2hlcyBpbnNpZGUuIElmIHlvdXIKK2pveXN0aWNrIGNhbiBkbyBtb3JlIChlZy4gdHVyYm9maXJlKSB5b3UnbGwgbmVlZCB0byBkaXNhYmxlIGl0IHRvdGFsbHkgZmlyc3QKK2lmIHlvdSB3YW50IHRvIHVzZSBnYW1lY29uLmMuCisKKyAgQWxzbywgdGhlIGNvbm5lY3Rpb24gaXMgYSBiaXQgbW9yZSBjb21wbGV4LiBZb3UnbGwgbmVlZCBhIGJ1bmNoIG9mIGRpb2RlcywKK2FuZCBvbmUgcHVsbHVwIHJlc2lzdG9yLiBGaXJzdCwgeW91IGNvbm5lY3QgdGhlIERpcmVjdGlvbnMgYW5kIHRoZSBidXR0b24KK3RoZSBzYW1lIGFzIGZvciBkYjksIGhvd2V2ZXIgd2l0aCB0aGUgZGlvZGVzIGJldHdlZW4uCisKKwkgICAgRGlvZGVzCisocGluIDIpIC0tLS0tfDx8LS0tLT4gVXAKKyhwaW4gMykgLS0tLS18PHwtLS0tPiBEb3duCisocGluIDQpIC0tLS0tfDx8LS0tLT4gTGVmdAorKHBpbiA1KSAtLS0tLXw8fC0tLS0+IFJpZ2h0CisocGluIDYpIC0tLS0tfDx8LS0tLT4gQnV0dG9uIDEKKworICBGb3IgdHdvIGJ1dHRvbiBzdGlja3MgeW91IGFsc28gY29ubmVjdCB0aGUgb3RoZXIgYnV0dG9uLgorCisocGluIDcpIC0tLS0tfDx8LS0tLT4gQnV0dG9uIDIKKworICBBbmQgZmluYWxseSwgeW91IGNvbm5lY3QgdGhlIEdyb3VuZCB3aXJlIG9mIHRoZSBqb3lzdGljaywgbGlrZSBkb25lIGluCit0aGlzIGxpdHRsZSBzY2hlbWF0aWMgdG8gUG93ZXIgYW5kIERhdGEgb24gdGhlIHBhcmFsbGVsIHBvcnQsIGFzIGRlc2NyaWJlZAorZm9yIHRoZSBORVMgLyBTTkVTIHBhZHMgaW4gc2VjdGlvbiAyLjEgb2YgdGhpcyBmaWxlIC0gdGhhdCBpcywgb25lIGRhdGEgcGluCitmb3IgZWFjaCBqb3lzdGljay4gVGhlIHBvd2VyIHNvdXJjZSBpcyBzaGFyZWQuCisKK0RhdGEgICAgLS0tLS0tLS0tLS0tKy0tLS0tPiBHcm91bmQKKwkgIFJlc2lzdG9yICB8CitQb3dlciAgIC0tWzEwa09obV0tLSsKKworICBBbmQgdGhhdCdzIGFsbCwgaGVyZSB3ZSBnbyEKKworMi4yLjMgTXVsdGlzeXN0ZW0gam95c3RpY2tzIHVzaW5nIHR1cmJvZ3JhZnguYworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorICBUaGUgVHVyYm9HcmFGWCBpbnRlcmZhY2UsIGRlc2lnbmVkIGJ5CisKKwlTdGVmZmVuIFNjaHdlbmtlIDxzY2h3ZW5rZUBidXJnLWhhbGxlLmRlPgorCisgIGFsbG93cyB1cCB0byA3IE11bHRpc3lzdGVtIGpveXN0aWNrcyBjb25uZWN0ZWQgdG8gdGhlIHBhcmFsbGVsIHBvcnQuIEluCitTdGVmZmVuJ3MgdmVyc2lvbiwgdGhlcmUgaXMgc3VwcG9ydCBmb3IgdXAgdG8gNSBidXR0b25zIHBlciBqb3lzdGljay4gIEhvd2V2ZXIsCitzaW5jZSB0aGlzIGRvZXNuJ3Qgd29yayByZWxpYWJseSBvbiBhbGwgcGFyYWxsZWwgcG9ydHMsIHRoZSB0dXJib2dyYWZ4LmMgZHJpdmVyCitzdXBwb3J0cyBvbmx5IG9uZSBidXR0b24gcGVyIGpveXN0aWNrLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gYnVpbGQgdGhlCitpbnRlcmZhY2UsIHNlZQorCisJaHR0cDovL3d3dzIuYnVyZy1oYWxsZS5kZS9+c2Nod2Vua2UvcGFycG9ydC5odG1sCisKKzIuMyBTb255IFBsYXlzdGF0aW9uCit+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisgIFRoZSBQU1ggY29udHJvbGxlciBpcyBzdXBwb3J0ZWQgYnkgdGhlIGdhbWVjb24uYy4gUGlub3V0IG9mIHRoZSBQU1gKK2NvbnRyb2xsZXIgKGNvbXBhdGlibGUgd2l0aCBEaXJlY3RQYWRQcm8pOgorCisgICstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSsKKzkgfCBvICBvICBvIHwgbyAgbyAgbyB8IG8gIG8gIG8gfCAxICAgICAgICAgICAgICAgcGFyYWxsZWwKKyAgIFxfX19fX19fX3xfX19fX19fX198X19fX19fX18vICAgICAgICAgICAgICAgICAgcG9ydCBwaW5zCisgICAgfCAgfCAgICAgIHwgIHwgIHwgICB8CisgICAgfCAgfCAgICAgIHwgIHwgIHwgICArLS0tLS0tLS0+ICBDbG9jayAgICAtLS0gICg0KQorICAgIHwgIHwgICAgICB8ICB8ICArLS0tLS0tLS0tLS0tPiAgU2VsZWN0ICAgLS0tICAoMykKKyAgICB8ICB8ICAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLT4gIFBvd2VyICAgIC0tLSAgKDUtOSkKKyAgICB8ICB8ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLT4gIEdyb3VuZCAgIC0tLSAgKDE4LTI1KQorICAgIHwgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiAgQ29tbWFuZCAgLS0tICAoMikKKyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4gIERhdGEgICAgIC0tLSAgKG9uZSBvZiAxMCwxMSwxMiwxMywxNSkKKworICBUaGUgZHJpdmVyIHN1cHBvcnRzIHRoZXNlIGNvbnRyb2xsZXJzOgorCisgKiBTdGFuZGFyZCBQU1ggUGFkCisgKiBOZWdDb24gUFNYIFBhZAorICogQW5hbG9nIFBTWCBQYWQgKHJlZCBtb2RlKQorICogQW5hbG9nIFBTWCBQYWQgKGdyZWVuIG1vZGUpCisgKiBQU1ggUnVtYmxlIFBhZAorICogUFNYIEREUiBQYWQKKworMi40IFNlZ2EKK35+fn5+fn5+CisgIEFsbCB0aGUgU2VnYSBjb250cm9sbGVycyBhcmUgbW9yZSBvciBsZXNzIGJhc2VkIG9uIHRoZSBzdGFuZGFyZCAyLWJ1dHRvbgorTXVsdGlzeXN0ZW0gam95c3RpY2suIEhvd2V2ZXIsIHNpbmNlIHRoZXkgZG9uJ3QgdXNlIHN3aXRjaGVzIGFuZCB1c2UgVFRMCitsb2dpYywgdGhlIG9ubHkgZHJpdmVyIHVzYWJsZSB3aXRoIHRoZW0gaXMgdGhlIGRiOS5jIGRyaXZlci4KKworMi40LjEgU2VnYSBNYXN0ZXIgU3lzdGVtCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgVGhlIFNNUyBnYW1lcGFkcyBhcmUgYWxtb3N0IGV4YWN0bHkgdGhlIHNhbWUgYXMgbm9ybWFsIDItYnV0dG9uCitNdWx0aXN5c3RlbSBqb3lzdGlja3MuIFNldCB0aGUgZHJpdmVyIHRvIE11bHRpMiBtb2RlLCB1c2UgdGhlIGNvcnJlc3BvbmRpbmcKK3BhcmFsbGVsIHBvcnQgcGlucywgYW5kIHRoZSBmb2xsb3dpbmcgc2NoZW1hdGljOgorCisgICAgKy0tLS0tLS0tLS0tPiBQb3dlcgorICAgIHwgKy0tLS0tLS0tLT4gUmlnaHQKKyAgICB8IHwgKy0tLS0tLS0+IExlZnQKKyAgICB8IHwgfCArLS0tLS0+IERvd24KKyAgICB8IHwgfCB8ICstLS0+IFVwCisgICAgfCB8IHwgfCB8CisgIF9fX19fX19fX19fX18KKzUgXCBvIG8gbyBvIG8gLyAxCisgICBcIG8gbyB4IG8gLworICA5IGB+fn5+fn5+JyA2CisgICAgIHwgfCAgIHwKKyAgICAgfCB8ICAgKy0tLS0+IEJ1dHRvbiAxCisgICAgIHwgKy0tLS0tLS0tPiBHcm91bmQKKyAgICAgKy0tLS0tLS0tLS0+IEJ1dHRvbiAyCisKKzIuNC4yIFNlZ2EgR2VuZXNpcyBha2EgTWVnYURyaXZlCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorICBUaGUgU2VnYSBHZW5lc2lzIChpbiBFdXJvcGUgc29sZCBhcyBTZWdhIE1lZ2FEcml2ZSkgcGFkcyBhcmUgYW4gZXh0ZW5zaW9uCit0byB0aGUgU2VnYSBNYXN0ZXIgU3lzdGVtIHBhZHMuIFRoZXkgdXNlIG1vcmUgYnV0dG9ucyAoMysxLCA1KzEsIDYrMSkuICBVc2UKK3RoZSBmb2xsb3dpbmcgc2NoZW1hdGljOgorCisgICAgKy0tLS0tLS0tLS0tPiBQb3dlcgorICAgIHwgKy0tLS0tLS0tLT4gUmlnaHQKKyAgICB8IHwgKy0tLS0tLS0+IExlZnQKKyAgICB8IHwgfCArLS0tLS0+IERvd24KKyAgICB8IHwgfCB8ICstLS0+IFVwCisgICAgfCB8IHwgfCB8CisgIF9fX19fX19fX19fX18KKzUgXCBvIG8gbyBvIG8gLyAxCisgICBcIG8gbyBvIG8gLworICA5IGB+fn5+fn5+JyA2CisgICAgIHwgfCB8IHwKKyAgICAgfCB8IHwgKy0tLS0+IEJ1dHRvbiAxCisgICAgIHwgfCArLS0tLS0tPiBTZWxlY3QKKyAgICAgfCArLS0tLS0tLS0+IEdyb3VuZAorICAgICArLS0tLS0tLS0tLT4gQnV0dG9uIDIKKworICBUaGUgU2VsZWN0IHBpbiBnb2VzIHRvIHBpbiAxNCBvbiB0aGUgcGFyYWxsZWwgcG9ydC4KKworKHBpbiAxNCkgLS0tLS0+IFNlbGVjdAorCisgIFRoZSByZXN0IGlzIHRoZSBzYW1lIGFzIGZvciBNdWx0aTIgam95c3RpY2tzIHVzaW5nIGRiOS5jCisKKzIuNC4zIFNlZ2EgU2F0dXJuCit+fn5+fn5+fn5+fn5+fn5+fgorICBTZWdhIFNhdHVybiBoYXMgZWlnaHQgYnV0dG9ucywgYW5kIHRvIHRyYW5zZmVyIHRoYXQsIHdpdGhvdXQgaGFja3MgbGlrZQorR2VuZXNpcyA2IHBhZHMgdXNlLCBpdCBuZWVkcyBvbmUgbW9yZSBzZWxlY3QgcGluLiBBbnl3YXksIGl0IGlzIHN0aWxsCitoYW5kbGVkIGJ5IHRoZSBkYjkuYyBkcml2ZXIuIEl0cyBwaW5vdXQgaXMgdmVyeSBkaWZmZXJlbnQgZnJvbSBhbnl0aGluZworZWxzZS4gIFVzZSB0aGlzIHNjaGVtYXRpYzoKKworICAgICstLS0tLS0tLS0tLT4gU2VsZWN0IDEKKyAgICB8ICstLS0tLS0tLS0+IFBvd2VyCisgICAgfCB8ICstLS0tLS0tPiBVcAorICAgIHwgfCB8ICstLS0tLT4gRG93bgorICAgIHwgfCB8IHwgKy0tLT4gR3JvdW5kCisgICAgfCB8IHwgfCB8CisgIF9fX19fX19fX19fX18KKzUgXCBvIG8gbyBvIG8gLyAxCisgICBcIG8gbyBvIG8gLworICA5IGB+fn5+fn5+JyA2CisgICAgIHwgfCB8IHwKKyAgICAgfCB8IHwgKy0tLS0+IFNlbGVjdCAyCisgICAgIHwgfCArLS0tLS0tPiBSaWdodAorICAgICB8ICstLS0tLS0tLT4gTGVmdAorICAgICArLS0tLS0tLS0tLT4gUG93ZXIKKworICBTZWxlY3QgMSBpcyBwaW4gMTQgb24gdGhlIHBhcmFsbGVsIHBvcnQsIFNlbGVjdCAyIGlzIHBpbiAxNiBvbiB0aGUKK3BhcmFsbGVsIHBvcnQuCisKKyhwaW4gMTQpIC0tLS0tPiBTZWxlY3QgMQorKHBpbiAxNikgLS0tLS0+IFNlbGVjdCAyCisKKyAgVGhlIG90aGVyIHBpbnMgKFVwLCBEb3duLCBSaWdodCwgTGVmdCwgUG93ZXIsIEdyb3VuZCkgYXJlIHRoZSBzYW1lIGFzIGZvcgorTXVsdGkgam95c3RpY2tzIHVzaW5nIGRiOS5jCisKKzMuIFRoZSBkcml2ZXJzCit+fn5+fn5+fn5+fn5+fgorICBUaGVyZSBhcmUgdGhyZWUgZHJpdmVycyBmb3IgdGhlIHBhcmFsbGVsIHBvcnQgaW50ZXJmYWNlcy4gRWFjaCwgYXMKK2Rlc2NyaWJlZCBhYm92ZSwgYWxsb3dzIHRvIGNvbm5lY3QgYSBkaWZmZXJlbnQgZ3JvdXAgb2Ygam95c3RpY2tzIGFuZCBwYWRzLgorSGVyZSBhcmUgZGVzY3JpYmVkIHRoZWlyIGNvbW1hbmQgbGluZXM6CisKKzMuMSBnYW1lY29uLmMKK35+fn5+fn5+fn5+fn4KKyAgVXNpbmcgZ2FtZWNvbi5jIHlvdSBjYW4gY29ubmVjdCB1cCB0byBmaXZlIGRldmljZXMgdG8gb25lIHBhcmFsbGVsIHBvcnQuIEl0Cit1c2VzIHRoZSBmb2xsb3dpbmcga2VybmVsL21vZHVsZSBjb21tYW5kIGxpbmU6CisKKwlnYW1lY29uLm1hcD1wb3J0LHBhZDEscGFkMixwYWQzLHBhZDQscGFkNQorCisgIFdoZXJlICdwb3J0JyB0aGUgbnVtYmVyIG9mIHRoZSBwYXJwb3J0IGludGVyZmFjZSAoZWcuIDAgZm9yIHBhcnBvcnQwKS4KKworICBBbmQgJ3BhZDEnIHRvICdwYWQ1JyBhcmUgcGFkIHR5cGVzIGNvbm5lY3RlZCB0byBkaWZmZXJlbnQgZGF0YSBpbnB1dCBwaW5zCisoMTAsMTEsMTIsMTMsMTUpLCBhcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAyLjEgb2YgdGhpcyBmaWxlLgorCisgIFRoZSB0eXBlcyBhcmU6CisKKwlUeXBlIHwgSm95c3RpY2svUGFkCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkgIDAgIHwgTm9uZQorCSAgMSAgfCBTTkVTIHBhZAorCSAgMiAgfCBORVMgcGFkCisJICA0ICB8IE11bHRpc3lzdGVtIDEtYnV0dG9uIGpveXN0aWNrCisJICA1ICB8IE11bHRpc3lzdGVtIDItYnV0dG9uIGpveXN0aWNrCisJICA2ICB8IE42NCBwYWQKKwkgIDcgIHwgU29ueSBQU1ggY29udHJvbGxlcgorCSAgOCAgfCBTb255IFBTWCBERFIgY29udHJvbGxlcgorCSAgOSAgfCBTTkVTIG1vdXNlCisKKyAgVGhlIGV4YWN0IHR5cGUgb2YgdGhlIFBTWCBjb250cm9sbGVyIHR5cGUgaXMgYXV0b3Byb2JlZCB3aGVuIHVzZWQsIHNvCitob3Qgc3dhcHBpbmcgc2hvdWxkIHdvcmsgKGJ1dCBpcyBub3QgcmVjb21tZW5kZWQpLgorCisgIFNob3VsZCB5b3Ugd2FudCB0byB1c2UgbW9yZSB0aGFuIG9uZSBvZiBwYXJhbGxlbCBwb3J0cyBhdCBvbmNlLCB5b3UgY2FuIHVzZQorZ2FtZWNvbi5tYXAyIGFuZCBnYW1lY29uLm1hcDMgYXMgYWRkaXRpb25hbCBjb21tYW5kIGxpbmUgcGFyYW1ldGVycyBmb3IgdHdvCittb3JlIHBhcmFsbGVsIHBvcnRzLgorCisgIFRoZXJlIGFyZSB0d28gb3B0aW9ucyBzcGVjaWZpYyB0byBQU1ggZHJpdmVyIHBvcnRpb24uICBnYW1lY29uLnBzeF9kZWxheSBzZXRzCit0aGUgY29tbWFuZCBkZWxheSB3aGVuIHRhbGtpbmcgdG8gdGhlIGNvbnRyb2xsZXJzLiBUaGUgZGVmYXVsdCBvZiAyNSBzaG91bGQKK3dvcmsgYnV0IHlvdSBjYW4gdHJ5IGxvd2VyaW5nIGl0IGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuIElmIHlvdXIgcGFkcyBkb24ndAorcmVzcG9uZCB0cnkgcmFpc2luZyBpdCB1bnRpbCB0aGV5IHdvcmsuIFNldHRpbmcgdGhlIHR5cGUgdG8gOCBhbGxvd3MgdGhlCitkcml2ZXIgdG8gYmUgdXNlZCB3aXRoIERhbmNlIERhbmNlIFJldm9sdXRpb24gb3Igc2ltaWxhciBnYW1lcy4gQXJyb3cga2V5cyBhcmUKK3JlZ2lzdGVyZWQgYXMga2V5IHByZXNzZXMgaW5zdGVhZCBvZiBYIGFuZCBZIGF4ZXMuCisKKzMuMiBkYjkuYworfn5+fn5+fn5+CisgIEFwYXJ0IGZyb20gbWFraW5nIGFuIGludGVyZmFjZSwgdGhlcmUgaXMgbm90aGluZyBkaWZmaWN1bHQgb24gdXNpbmcgdGhlCitkYjkuYyBkcml2ZXIuIEl0IHVzZXMgdGhlIGZvbGxvd2luZyBrZXJuZWwvbW9kdWxlIGNvbW1hbmQgbGluZToKKworCWRiOS5kZXY9cG9ydCx0eXBlCisKKyAgV2hlcmUgJ3BvcnQnIGlzIHRoZSBudW1iZXIgb2YgdGhlIHBhcnBvcnQgaW50ZXJmYWNlIChlZy4gMCBmb3IgcGFycG9ydDApLgorCisgIENhdmVhdCBoZXJlOiBUaGlzIGRyaXZlciBvbmx5IHdvcmtzIG9uIGJpZGlyZWN0aW9uYWwgcGFyYWxsZWwgcG9ydHMuIElmCit5b3VyIHBhcmFsbGVsIHBvcnQgaXMgcmVjZW50IGVub3VnaCwgeW91IHNob3VsZCBoYXZlIG5vIHRyb3VibGUgd2l0aCB0aGlzLgorT2xkIHBhcmFsbGVsIHBvcnRzIG1heSBub3QgaGF2ZSB0aGlzIGZlYXR1cmUuCisKKyAgJ1R5cGUnIGlzIHRoZSB0eXBlIG9mIGpveXN0aWNrIG9yIHBhZCBhdHRhY2hlZDoKKworCVR5cGUgfCBKb3lzdGljay9QYWQKKwktLS0tLS0tLS0tLS0tLS0tLS0tLQorCSAgMCAgfCBOb25lCisJICAxICB8IE11bHRpc3lzdGVtIDEtYnV0dG9uIGpveXN0aWNrCisJICAyICB8IE11bHRpc3lzdGVtIDItYnV0dG9uIGpveXN0aWNrCisJICAzICB8IEdlbmVzaXMgcGFkICgzKzEgYnV0dG9ucykKKwkgIDUgIHwgR2VuZXNpcyBwYWQgKDUrMSBidXR0b25zKQorCSAgNiAgfCBHZW5lc2lzIHBhZCAoNisyIGJ1dHRvbnMpCisJICA3ICB8IFNhdHVybiBwYWQgKDggYnV0dG9ucykKKwkgIDggIHwgTXVsdGlzeXN0ZW0gMS1idXR0b24gam95c3RpY2sgKHYwLjguMC4yIHBpbi1vdXQpCisJICA5ICB8IFR3byBNdWx0aXN5c3RlbSAxLWJ1dHRvbiBqb3lzdGlja3MgKHYwLjguMC4yIHBpbi1vdXQpIAorCSAxMCAgfCBBbWlnYSBDRDMyIHBhZAorCisgIFNob3VsZCB5b3Ugd2FudCB0byB1c2UgbW9yZSB0aGFuIG9uZSBvZiB0aGVzZSBqb3lzdGlja3MvcGFkcyBhdCBvbmNlLCB5b3UKK2NhbiB1c2UgZGI5LmRldjIgYW5kIGRiOS5kZXYzIGFzIGFkZGl0aW9uYWwgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMgZm9yIHR3bworbW9yZSBqb3lzdGlja3MvcGFkcy4KKworMy4zIHR1cmJvZ3JhZnguYworfn5+fn5+fn5+fn5+fn5+fgorICBUaGUgdHVyYm9ncmFmeC5jIGRyaXZlciB1c2VzIGEgdmVyeSBzaW1wbGUga2VybmVsL21vZHVsZSBjb21tYW5kIGxpbmU6CisKKwl0dXJib2dyYWZ4Lm1hcD1wb3J0LGpzMSxqczIsanMzLGpzNCxqczUsanM2LGpzNworCisgIFdoZXJlICdwb3J0JyBpcyB0aGUgbnVtYmVyIG9mIHRoZSBwYXJwb3J0IGludGVyZmFjZSAoZWcuIDAgZm9yIHBhcnBvcnQwKS4KKworICAnanNYJyBpcyB0aGUgbnVtYmVyIG9mIGJ1dHRvbnMgdGhlIE11bHRpc3lzdGVtIGpveXN0aWNrcyBjb25uZWN0ZWQgdG8gdGhlCitpbnRlcmZhY2UgcG9ydHMgMS03IGhhdmUuIEZvciBhIHN0YW5kYXJkIG11bHRpc3lzdGVtIGpveXN0aWNrLCB0aGlzIGlzIDEuCisKKyAgU2hvdWxkIHlvdSB3YW50IHRvIHVzZSBtb3JlIHRoYW4gb25lIG9mIHRoZXNlIGludGVyZmFjZXMgYXQgb25jZSwgeW91IGNhbgordXNlIHR1cmJvZ3JhZngubWFwMiBhbmQgdHVyYm9ncmFmeC5tYXAzIGFzIGFkZGl0aW9uYWwgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMKK2ZvciB0d28gbW9yZSBpbnRlcmZhY2VzLgorCiszLjQgUEMgcGFyYWxsZWwgcG9ydCBwaW5vdXQKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkgIC4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorICAgQXQgdGhlIFBDOiAgICAgXCAxMyAxMiAxMSAxMCAgOSAgOCAgNyAgNiAgNSAgNCAgMyAgMiAgMSAvCisgICAgICAgICAgICAgICAgICAgXCAgMjUgMjQgMjMgMjIgMjEgMjAgMTkgMTggMTcgMTYgMTUgMTQgLworICAgICAgICAgICAgICAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKwkgIFBpbiB8IE5hbWUgICAgfCBEZXNjcmlwdGlvbgorCX5+fn5+fnx+fn5+fn5+fn58fn5+fn5+fn5+fgorCSAgICAxIHwgL1NUUk9CRSB8IFN0cm9iZQorCSAgMi05IHwgRDAtRDcgICB8IERhdGEgQml0IDAtNworCSAgIDEwIHwgL0FDSyAgICB8IEFja25vd2xlZGdlCisJICAgMTEgfCBCVVNZICAgIHwgQnVzeQorCSAgIDEyIHwgUEUgICAgICB8IFBhcGVyIEVuZAorCSAgIDEzIHwgU0VMSU4gICB8IFNlbGVjdCBJbgorCSAgIDE0IHwgL0FVVE9GRCB8IEF1dG9mZWVkCisJICAgMTUgfCAvRVJST1IgIHwgRXJyb3IKKwkgICAxNiB8IC9JTklUICAgfCBJbml0aWFsaXplCisJICAgMTcgfCAvU0VMICAgIHwgU2VsZWN0CisJMTgtMjUgfCBHTkQgICAgIHwgU2lnbmFsIEdyb3VuZAorCiszLjUgRW5kCit+fn5+fn5+CisgIFRoYXQncyBhbGwsIGZvbGtzISBIYXZlIGZ1biEKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW5wdXQvam95c3RpY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9qb3lzdGljay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQwMjdkYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaW5wdXQvam95c3RpY2sudHh0CkBAIC0wLDAgKzEsNTg2IEBACisJCSAgICAgICBMaW51eCBKb3lzdGljayBkcml2ZXIgdjIuMC4wCisJICAgICAgIChjKSAxOTk2LTIwMDAgVm9qdGVjaCBQYXZsaWsgPHZvanRlY2hAdWN3LmN6PgorCQkJICAgICBTcG9uc29yZWQgYnkgU3VTRQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiswLiBEaXNjbGFpbWVyCit+fn5+fn5+fn5+fn5+CisgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cit1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQorU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKQorYW55IGxhdGVyIHZlcnNpb24uCisKKyAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkKK29yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKK21vcmUgZGV0YWlscy4KKworICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZword2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkKK1RlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisKKyAgU2hvdWxkIHlvdSBuZWVkIHRvIGNvbnRhY3QgbWUsIHRoZSBhdXRob3IsIHlvdSBjYW4gZG8gc28gZWl0aGVyIGJ5IGUtbWFpbAorLSBtYWlsIHlvdXIgbWVzc2FnZSB0byA8dm9qdGVjaEB1Y3cuY3o+LCBvciBieSBwYXBlciBtYWlsOiBWb2p0ZWNoIFBhdmxpaywKK1NpbXVua292YSAxNTk0LCBQcmFndWUgOCwgMTgyIDAwIEN6ZWNoIFJlcHVibGljCisKKyAgRm9yIHlvdXIgY29udmVuaWVuY2UsIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgaXMgaW5jbHVkZWQKK2luIHRoZSBwYWNrYWdlOiBTZWUgdGhlIGZpbGUgQ09QWUlORy4KKworMS4gSW50cm8KK35+fn5+fn5+CisgIFRoZSBqb3lzdGljayBkcml2ZXIgZm9yIExpbnV4IHByb3ZpZGVzIHN1cHBvcnQgZm9yIGEgdmFyaWV0eSBvZiBqb3lzdGlja3MKK2FuZCBzaW1pbGFyIGRldmljZXMuIEl0IGlzIGJhc2VkIG9uIGEgbGFyZ2VyIHByb2plY3QgYWltaW5nIHRvIHN1cHBvcnQgYWxsCitpbnB1dCBkZXZpY2VzIGluIExpbnV4LgorCisgIFNob3VsZCB5b3UgZW5jb3VudGVyIGFueSBwcm9ibGVtcyB3aGlsZSB1c2luZyB0aGUgZHJpdmVyLCBvciBqb3lzdGlja3MKK3RoaXMgZHJpdmVyIGNhbid0IG1ha2UgY29tcGxldGUgdXNlIG9mLCBJJ20gdmVyeSBpbnRlcmVzdGVkIGluIGhlYXJpbmcgYWJvdXQKK3RoZW0uIEJ1ZyByZXBvcnRzIGFuZCBzdWNjZXNzIHN0b3JpZXMgYXJlIGFsc28gd2VsY29tZS4KKworICBUaGUgaW5wdXQgcHJvamVjdCB3ZWJzaXRlIGlzIGF0OgorCisJaHR0cDovL2F0cmV5Lmthcmxpbi5tZmYuY3VuaS5jei9+dm9qdGVjaC9pbnB1dC8KKworICBUaGVyZSBpcyBhbHNvIGEgbWFpbGluZyBsaXN0IGZvciB0aGUgZHJpdmVyIGF0OgorCisJbGlzdHByb2NAYXRyZXkua2FybGluLm1mZi5jdW5pLmN6CisKK3NlbmQgInN1YnNjcmliZSBsaW51eC1qb3lzdGljayBZb3VyIE5hbWUiIHRvIHN1YnNjcmliZSB0byBpdC4KKworMi4gVXNhZ2UKK35+fn5+fn5+CisgIEZvciBiYXNpYyB1c2FnZSB5b3UganVzdCBjaG9vc2UgdGhlIHJpZ2h0IG9wdGlvbnMgaW4ga2VybmVsIGNvbmZpZyBhbmQKK3lvdSBzaG91bGQgYmUgc2V0LgorCisyLjEgaW5wdXR1dGlscworfn5+fn5+fn5+fn5+fn4KK0ZvciB0ZXN0aW5nIGFuZCBvdGhlciBwdXJwb3NlcyAoZm9yIGV4YW1wbGUgc2VyaWFsIGRldmljZXMpLCBhIHNldCBvZgordXRpbGl0aWVzIGlzIGF2YWlsYWJsZSBhdCB0aGUgYWJvdmVtZW50aW9uZWQgd2Vic2l0ZS4gSSBzdWdnZXN0IHlvdSBkb3dubG9hZAorYW5kIGluc3RhbGwgaXQgYmVmb3JlIGdvaW5nIG9uLgorCisyLjIgRGV2aWNlIG5vZGVzCit+fn5+fn5+fn5+fn5+fn5+CitGb3IgYXBwbGljYXRpb25zIHRvIGJlIGFibGUgdG8gdXNlIHRoZSBqb3lzdGlja3MsCit5b3UnbGwgaGF2ZSB0byBtYW51YWxseSBjcmVhdGUgdGhlc2Ugbm9kZXMgaW4gL2RldjoKKworY2QgL2Rldgorcm0ganMqCitta2RpciBpbnB1dAorbWtub2QgaW5wdXQvanMwIGMgMTMgMAorbWtub2QgaW5wdXQvanMxIGMgMTMgMQorbWtub2QgaW5wdXQvanMyIGMgMTMgMgorbWtub2QgaW5wdXQvanMzIGMgMTMgMworbG4gLXMgaW5wdXQvanMwIGpzMAorbG4gLXMgaW5wdXQvanMxIGpzMQorbG4gLXMgaW5wdXQvanMyIGpzMgorbG4gLXMgaW5wdXQvanMzIGpzMworCitGb3IgdGVzdGluZyB3aXRoIGlucHV0dXRpbHMgaXQncyBhbHNvIGNvbnZlbmllbnQgdG8gY3JlYXRlIHRoZXNlOgorCitta25vZCBpbnB1dC9ldmVudDAgYyAxMyA2NAorbWtub2QgaW5wdXQvZXZlbnQxIGMgMTMgNjUKK21rbm9kIGlucHV0L2V2ZW50MiBjIDEzIDY2Citta25vZCBpbnB1dC9ldmVudDMgYyAxMyA2NworCisyLjQgTW9kdWxlcyBuZWVkZWQgCit+fn5+fn5+fn5+fn5+fn5+fn4KKyAgRm9yIGFsbCBqb3lzdGljayBkcml2ZXJzIHRvIGZ1bmN0aW9uLCB5b3UnbGwgbmVlZCB0aGUgdXNlcmxhbmQgaW50ZXJmYWNlCittb2R1bGUgaW4ga2VybmVsLCBlaXRoZXIgbG9hZGVkIG9yIGNvbXBpbGVkIGluOgorCisJbW9kcHJvYmUgam95ZGV2CisKKyAgRm9yIGdhbWVwb3J0IGpveXN0aWNrcywgeW91J2xsIGhhdmUgdG8gbG9hZCB0aGUgZ2FtZXBvcnQgZHJpdmVyIGFzIHdlbGw7CisKKwltb2Rwcm9iZSBuczU1OAorCisgIEFuZCBmb3Igc2VyaWFsIHBvcnQgam95c3RpY2tzLCB5b3UnbGwgbmVlZCB0aGUgc2VyaWFsIGlucHV0IGxpbmUKK2Rpc2NpcGxpbmUgbW9kdWxlIGxvYWRlZCBhbmQgdGhlIGlucHV0YXR0YWNoIHV0aWxpdHkgc3RhcnRlZDoKKworCW1vZHByb2JlIHNlcnBvcnQKKwlpbnB1dGF0dGFjaCAteHh4IC9kZXYvdHRzL1ggJgorCisgIEluIGFkZGl0aW9uIHRvIHRoYXQsIHlvdSdsbCBuZWVkIHRoZSBqb3lzdGljayBkcml2ZXIgbW9kdWxlIGl0c2VsZiwgbW9zdAordXN1YWxseSB5b3UnbGwgaGF2ZSBhbiBhbmFsb2cgam95c3RpY2s6CisKKwltb2Rwcm9iZSBhbmFsb2cKKwkKKyAgRm9yIGF1dG9tYXRpYyBtb2R1bGUgbG9hZGluZywgc29tZXRoaW5nIGxpa2UgdGhpcyBtaWdodCB3b3JrIC0gdGFpbG9yIHRvCit5b3VyIG5lZWRzOgorCisJYWxpYXMgdHR5LWxkaXNjLTIgc2VycG9ydAorCWFsaWFzIGNoYXItbWFqb3ItMTMgaW5wdXQKKwlhYm92ZSBpbnB1dCBqb3lkZXYgbnM1NTggYW5hbG9nCisJb3B0aW9ucyBhbmFsb2cgbWFwPWdhbWVwYWQsbm9uZSwyYnRuCisKKzIuNSBWZXJpZnlpbmcgdGhhdCBpdCB3b3Jrcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisgIEZvciB0ZXN0aW5nIHRoZSBqb3lzdGljayBkcml2ZXIgZnVuY3Rpb25hbGl0eSwgdGhlcmUgaXMgdGhlIGpzdGVzdAorcHJvZ3JhbSBpbiB0aGUgdXRpbGl0aWVzIHBhY2thZ2UuIFlvdSBydW4gaXQgYnkgdHlwaW5nOgorCisJanN0ZXN0IC9kZXYvaW5wdXQvanMwCisKKyAgQW5kIGl0IHNob3VsZCBzaG93IGEgbGluZSB3aXRoIHRoZSBqb3lzdGljayB2YWx1ZXMsIHdoaWNoIHVwZGF0ZSBhcyB5b3UKK21vdmUgdGhlIHN0aWNrLCBhbmQgcHJlc3MgaXRzIGJ1dHRvbnMuIFRoZSBheGVzIHNob3VsZCBhbGwgYmUgemVybyB3aGVuIHRoZQoram95c3RpY2sgaXMgaW4gdGhlIGNlbnRlciBwb3NpdGlvbi4gVGhleSBzaG91bGQgbm90IGppdHRlciBieSB0aGVtc2VsdmVzIHRvCitvdGhlciBjbG9zZSB2YWx1ZXMsIGFuZCB0aGV5IGFsc28gc2hvdWxkIGJlIHN0ZWFkeSBpbiBhbnkgb3RoZXIgcG9zaXRpb24gb2YKK3RoZSBzdGljay4gVGhleSBzaG91bGQgaGF2ZSB0aGUgZnVsbCByYW5nZSBmcm9tIC0zMjc2NyB0byAzMjc2Ny4gSWYgYWxsIHRoaXMKK2lzIG1ldCwgdGhlbiBpdCdzIGFsbCBmaW5lLCBhbmQgeW91IGNhbiBwbGF5IHRoZSBnYW1lcy4gOikKKworICBJZiBpdCdzIG5vdCwgdGhlbiB0aGVyZSBtaWdodCBiZSBhIHByb2JsZW0uIFRyeSB0byBjYWxpYnJhdGUgdGhlIGpveXN0aWNrLAorYW5kIGlmIGl0IHN0aWxsIGRvZXNuJ3Qgd29yaywgcmVhZCB0aGUgZHJpdmVycyBzZWN0aW9uIG9mIHRoaXMgZmlsZSwgdGhlCit0cm91Ymxlc2hvb3Rpbmcgc2VjdGlvbiwgYW5kIHRoZSBGQVEuCisKKzIuNi4gQ2FsaWJyYXRpb24KK35+fn5+fn5+fn5+fn5+fn4KKyAgRm9yIG1vc3Qgam95c3RpY2tzIHlvdSB3b24ndCBuZWVkIGFueSBtYW51YWwgY2FsaWJyYXRpb24sIHNpbmNlIHRoZQoram95c3RpY2sgc2hvdWxkIGJlIGF1dG9jYWxpYnJhdGVkIGJ5IHRoZSBkcml2ZXIgYXV0b21hZ2ljYWxseS4gSG93ZXZlciwgd2l0aAorc29tZSBhbmFsb2cgam95c3RpY2tzLCB0aGF0IGVpdGhlciBkbyBub3QgdXNlIGxpbmVhciByZXNpc3RvcnMsIG9yIGlmIHlvdQord2FudCBiZXR0ZXIgcHJlY2lzaW9uLCB5b3UgY2FuIHVzZSB0aGUganNjYWwgcHJvZ3JhbQorCisJanNjYWwgLWMgL2Rldi9pbnB1dC9qczAKKworIGluY2x1ZGVkIGluIHRoZSBqb3lzdGljayBwYWNrYWdlIHRvIHNldCBiZXR0ZXIgY29ycmVjdGlvbiBjb2VmZmljaWVudHMgdGhhbgord2hhdCB0aGUgZHJpdmVyIHdvdWxkIGNob29zZSBpdHNlbGYuCisKKyAgQWZ0ZXIgY2FsaWJyYXRpbmcgdGhlIGpveXN0aWNrIHlvdSBjYW4gdmVyaWZ5IGlmIHlvdSBsaWtlIHRoZSBuZXcKK2NhbGlicmF0aW9uIHVzaW5nIHRoZSBqc3Rlc3QgY29tbWFuZCwgYW5kIGlmIHlvdSBkbywgeW91IHRoZW4gY2FuIHNhdmUgdGhlCitjb3JyZWN0aW9uIGNvZWZmaWNpZW50cyBpbnRvIGEgZmlsZQorCisJanNjYWwgLXAgL2Rldi9pbnB1dC9qczAgPiAvZXRjL2pveXN0aWNrLmNhbAorCisgIEFuZCBhZGQgYSBsaW5lIHRvIHlvdXIgcmMgc2NyaXB0IGV4ZWN1dGluZyB0aGF0IGZpbGUKKworCXNvdXJjZSAvZXRjL2pveXN0aWNrLmNhbAorCisgIFRoaXMgd2F5LCBhZnRlciB0aGUgbmV4dCByZWJvb3QgeW91ciBqb3lzdGljayB3aWxsIHJlbWFpbiBjYWxpYnJhdGVkLiBZb3UKK2NhbiBhbHNvIGFkZCB0aGUganNjYWwgLXAgbGluZSB0byB5b3VyIHNodXRkb3duIHNjcmlwdC4KKworCiszLiBIVyBzcGVjaWZpYyBkcml2ZXIgaW5mb3JtYXRpb24KK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorSW4gdGhpcyBzZWN0aW9uIGVhY2ggb2YgdGhlIHNlcGFyYXRlIGhhcmR3YXJlIHNwZWNpZmljIGRyaXZlcnMgaXMgZGVzY3JpYmVkLgorCiszLjEgQW5hbG9nIGpveXN0aWNrcworfn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgVGhlIGFuYWxvZy5jIHVzZXMgdGhlIHN0YW5kYXJkIGFuYWxvZyBpbnB1dHMgb2YgdGhlIGdhbWVwb3J0LCBhbmQgdGh1cworc3VwcG9ydHMgYWxsIHN0YW5kYXJkIGpveXN0aWNrcyBhbmQgZ2FtZXBhZHMuIEl0IHVzZXMgYSB2ZXJ5IGFkdmFuY2VkCityb3V0aW5lIGZvciB0aGlzLCBhbGxvd2luZyBmb3IgZGF0YSBwcmVjaXNpb24gdGhhdCBjYW4ndCBiZSBmb3VuZCBvbiBhbnkKK290aGVyIHN5c3RlbS4KKworICBJdCBhbHNvIHN1cHBvcnRzIGV4dGVuc2lvbnMgbGlrZSBhZGRpdGlvbmFsIGhhdHMgYW5kIGJ1dHRvbnMgY29tcGF0aWJsZQord2l0aCBDSCBGbGlnaHRzdGljayBQcm8sIFRocnVzdE1hc3RlciBGQ1Mgb3IgNiBhbmQgOCBidXR0b24gZ2FtZXBhZHMuIFNhaXRlaworQ3lib3JnICdkaWdpdGFsJyBqb3lzdGlja3MgYXJlIGFsc28gc3VwcG9ydGVkIGJ5IHRoaXMgZHJpdmVyLCBiZWNhdXNlCit0aGV5J3JlIGJhc2ljYWxseSBzb3VwZWQgdXAgQ0hGIHN0aWNrcy4KKworICBIb3dldmVyIHRoZSBvbmx5IHR5cGVzIHRoYXQgY2FuIGJlIGF1dG9kZXRlY3RlZCBhcmU6CisKKyogMi1heGlzLCA0LWJ1dHRvbiBqb3lzdGljaworKiAzLWF4aXMsIDQtYnV0dG9uIGpveXN0aWNrCisqIDQtYXhpcywgNC1idXR0b24gam95c3RpY2sKKyogU2FpdGVrIEN5Ym9yZyAnZGlnaXRhbCcgam95c3RpY2tzCisKKyAgRm9yIG90aGVyIGpveXN0aWNrIHR5cGVzIChtb3JlL2xlc3MgYXhlcywgaGF0cywgYW5kIGJ1dHRvbnMpIHN1cHBvcnQKK3lvdSdsbCBuZWVkIHRvIHNwZWNpZnkgdGhlIHR5cGVzIGVpdGhlciBvbiB0aGUga2VybmVsIGNvbW1hbmQgbGluZSBvciBvbiB0aGUKK21vZHVsZSBjb21tYW5kIGxpbmUsIHdoZW4gaW5zZXJ0aW5nIGFuYWxvZyBpbnRvIHRoZSBrZXJuZWwuIFRoZQorcGFyYW1ldGVycyBhcmU6CisKKwlhbmFsb2cubWFwPTx0eXBlMT4sPHR5cGUyPiw8dHlwZTM+LC4uLi4KKworICAndHlwZScgaXMgdHlwZSBvZiB0aGUgam95c3RpY2sgZnJvbSB0aGUgdGFibGUgYmVsb3csIGRlZmluaW5nIGpveXN0aWNrcworcHJlc2VudCBvbiBnYW1lcG9ydHMgaW4gdGhlIHN5c3RlbSwgc3RhcnRpbmcgd2l0aCBnYW1lcG9ydDAsIHNlY29uZCAndHlwZScKK2VudHJ5IGRlZmluaW5nIGpveXN0aWNrIG9uIGdhbWVwb3J0MSBhbmQgc28gb24uCisKKwlUeXBlICAgICB8IE1lYW5pbmcKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCW5vbmUgICAgIHwgTm8gYW5hbG9nIGpveXN0aWNrIG9uIHRoYXQgcG9ydAorCWF1dG8gICAgIHwgQXV0b2RldGVjdCBqb3lzdGljaworCTJidG4gICAgIHwgMi1idXR0b24gbi1heGlzIGpveXN0aWNrCisJeS1qb3kgICAgfCBUd28gMi1idXR0b24gMi1heGlzIGpveXN0aWNrcyBvbiBhbiBZLWNhYmxlCisJeS1wYWQgICAgfCBUd28gMi1idXR0b24gMi1heGlzIGdhbWVwYWRzIG9uIGFuIFktY2FibGUKKwlmY3MgICAgICB8IFRocnVzdG1hc3RlciBGQ1MgY29tcGF0aWJsZSBqb3lzdGljaworCWNoZiAgICAgIHwgSm95c3RpY2sgd2l0aCBhIENIIEZsaWdodHN0aWNrIGNvbXBhdGlibGUgaGF0CisJZnVsbGNoZiAgfCBDSCBGbGlnaHRzdGljayBjb21wYXRpYmxlIHdpdGggdHdvIGhhdHMgYW5kIDYgYnV0dG9ucworCWdhbWVwYWQgIHwgNC82LWJ1dHRvbiBuLWF4aXMgZ2FtZXBhZAorCWdhbWVwYWQ4IHwgOC1idXR0b24gMi1heGlzIGdhbWVwYWQKKworICBJbiBjYXNlIHlvdXIgam95c3RpY2sgZG9lc24ndCBmaXQgaW4gYW55IG9mIHRoZSBhYm92ZSBjYXRlZ29yaWVzLCB5b3UgY2FuCitzcGVjaWZ5IHRoZSB0eXBlIGFzIGEgbnVtYmVyIGJ5IGNvbWJpbmluZyB0aGUgYml0cyBpbiB0aGUgdGFibGUgYmVsb3cuIFRoaXMKK2lzIG5vdCByZWNvbW1lbmRlZCB1bmxlc3MgeW91IHJlYWxseSBrbm93IHdoYXQgYXJlIHlvdSBkb2luZy4gSXQncyBub3QKK2Rhbmdlcm91cywgYnV0IG5vdCBzaW1wbGUgZWl0aGVyLgorCisJQml0IHwgTWVhbmluZworCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJIDAgIHwgQXhpcyBYMQorCSAxICB8IEF4aXMgWTEKKwkgMiAgfCBBeGlzIFgyCisJIDMgIHwgQXhpcyBZMgorCSA0ICB8IEJ1dHRvbiBBCisJIDUgIHwgQnV0dG9uIEIKKwkgNiAgfCBCdXR0b24gQworCSA3ICB8IEJ1dHRvbiBECisJIDggIHwgQ0hGIEJ1dHRvbnMgWCBhbmQgWQorCSA5ICB8IENIRiBIYXQgMQorCTEwICB8IENIRiBIYXQgMgorCTExICB8IEZDUyBIYXQKKwkxMiAgfCBQYWQgQnV0dG9uIFgKKwkxMyAgfCBQYWQgQnV0dG9uIFkKKwkxNCAgfCBQYWQgQnV0dG9uIFUKKwkxNSAgfCBQYWQgQnV0dG9uIFYKKwkxNiAgfCBTYWl0ZWsgRjEtRjQgQnV0dG9ucworCTE3ICB8IFNhaXRlayBEaWdpdGFsIE1vZGUKKwkxOSAgfCBHYW1lUGFkCisJMjAgIHwgSm95MiBBeGlzIFgxCisJMjEgIHwgSm95MiBBeGlzIFkxCisJMjIgIHwgSm95MiBBeGlzIFgyCisJMjMgIHwgSm95MiBBeGlzIFkyCisJMjQgIHwgSm95MiBCdXR0b24gQQorCTI1ICB8IEpveTIgQnV0dG9uIEIKKwkyNiAgfCBKb3kyIEJ1dHRvbiBDCisJMjcgIHwgSm95MiBCdXR0b24gRAorCTMxICB8IEpveTIgR2FtZVBhZAorCiszLjIgTWljcm9zb2Z0IFNpZGVXaW5kZXIgam95c3RpY2tzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisgIE1pY3Jvc29mdCAnRGlnaXRhbCBPdmVyZHJpdmUnIHByb3RvY29sIGlzIHN1cHBvcnRlZCBieSB0aGUgc2lkZXdpbmRlci5jCittb2R1bGUuIEFsbCBjdXJyZW50bHkgc3VwcG9ydGVkIGpveXN0aWNrczoKKworKiBNaWNyb3NvZnQgU2lkZVdpbmRlciAzRCBQcm8KKyogTWljcm9zb2Z0IFNpZGVXaW5kZXIgRm9yY2UgRmVlZGJhY2sgUHJvCisqIE1pY3Jvc29mdCBTaWRlV2luZGVyIEZvcmNlIEZlZWRiYWNrIFdoZWVsCisqIE1pY3Jvc29mdCBTaWRlV2luZGVyIEZyZWVTdHlsZSBQcm8gCisqIE1pY3Jvc29mdCBTaWRlV2luZGVyIEdhbWVQYWQgKHVwIHRvIGZvdXIsIGNoYWluZWQpCisqIE1pY3Jvc29mdCBTaWRlV2luZGVyIFByZWNpc2lvbiBQcm8gCisqIE1pY3Jvc29mdCBTaWRlV2luZGVyIFByZWNpc2lvbiBQcm8gVVNCIAorCisgIGFyZSBhdXRvZGV0ZWN0ZWQsIGFuZCB0aHVzIG5vIG1vZHVsZSBwYXJhbWV0ZXJzIGFyZSBuZWVkZWQuCisKKyAgVGhlcmUgaXMgb25lIGNhdmVhdCB3aXRoIHRoZSAzRCBQcm8uIFRoZXJlIGFyZSA5IGJ1dHRvbnMgcmVwb3J0ZWQsCithbHRob3VnaCB0aGUgam95c3RpY2sgaGFzIG9ubHkgOC4gVGhlIDl0aCBidXR0b24gaXMgdGhlIG1vZGUgc3dpdGNoIG9uIHRoZQorcmVhciBzaWRlIG9mIHRoZSBqb3lzdGljay4gSG93ZXZlciwgbW92aW5nIGl0LCB5b3UnbGwgcmVzZXQgdGhlIGpveXN0aWNrLAorYW5kIG1ha2UgaXQgdW5yZXNwb25zaXZlIGZvciBhYm91dCBhIG9uZSB0aGlyZCBvZiBhIHNlY29uZC4gRnVydGhlcm1vcmUsIHRoZQoram95c3RpY2sgd2lsbCBhbHNvIHJlLWNlbnRlciBpdHNlbGYsIHRha2luZyB0aGUgcG9zaXRpb24gaXQgd2FzIGluIGR1cmluZwordGhpcyB0aW1lIGFzIGEgbmV3IGNlbnRlciBwb3NpdGlvbi4gVXNlIGl0IGlmIHlvdSB3YW50LCBidXQgdGhpbmsgZmlyc3QuCisKKyAgVGhlIFNpZGVXaW5kZXIgU3RhbmRhcmQgaXMgbm90IGEgZGlnaXRhbCBqb3lzdGljaywgYW5kIHRodXMgaXMgc3VwcG9ydGVkCitieSB0aGUgYW5hbG9nIGRyaXZlciBkZXNjcmliZWQgYWJvdmUuIAorCiszLjMgTG9naXRlY2ggQURJIGRldmljZXMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorICBMb2dpdGVjaCBBREkgcHJvdG9jb2wgaXMgc3VwcG9ydGVkIGJ5IHRoZSBhZGkuYyBtb2R1bGUuIEl0IHNob3VsZCBzdXBwb3J0CithbnkgTG9naXRlY2ggZGV2aWNlIHVzaW5nIHRoaXMgcHJvdG9jb2wuIFRoaXMgaW5jbHVkZXMsIGJ1dCBpcyBub3QgbGltaXRlZAordG86CisKKyogTG9naXRlY2ggQ3liZXJNYW4gMgorKiBMb2dpdGVjaCBUaHVuZGVyUGFkIERpZ2l0YWwKKyogTG9naXRlY2ggV2luZ01hbiBFeHRyZW1lIERpZ2l0YWwKKyogTG9naXRlY2ggV2luZ01hbiBGb3JtdWxhCisqIExvZ2l0ZWNoIFdpbmdNYW4gSW50ZXJjZXB0b3IKKyogTG9naXRlY2ggV2luZ01hbiBHYW1lUGFkCisqIExvZ2l0ZWNoIFdpbmdNYW4gR2FtZVBhZCBVU0IKKyogTG9naXRlY2ggV2luZ01hbiBHYW1lUGFkIEV4dHJlbWUKKyogTG9naXRlY2ggV2luZ01hbiBFeHRyZW1lIERpZ2l0YWwgM0QKKworICBBREkgZGV2aWNlcyBhcmUgYXV0b2RldGVjdGVkLCBhbmQgdGhlIGRyaXZlciBzdXBwb3J0cyB1cCB0byB0d28gKGFueQorY29tYmluYXRpb24gb2YpIGRldmljZXMgb24gYSBzaW5nbGUgZ2FtZXBvcnQsIHVzaW5nIGFuIFktY2FibGUgb3IgY2hhaW5lZAordG9nZXRoZXIuCisKKyAgTG9naXRlY2ggV2luZ01hbiBKb3lzdGljaywgTG9naXRlY2ggV2luZ01hbiBBdHRhY2ssIExvZ2l0ZWNoIFdpbmdNYW4KK0V4dHJlbWUgYW5kIExvZ2l0ZWNoIFdpbmdNYW4gVGh1bmRlclBhZCBhcmUgbm90IGRpZ2l0YWwgam95c3RpY2tzIGFuZCBhcmUKK2hhbmRsZWQgYnkgdGhlIGFuYWxvZyBkcml2ZXIgZGVzY3JpYmVkIGFib3ZlLiBMb2dpdGVjaCBXaW5nTWFuIFdhcnJpb3IgYW5kCitMb2dpdGVjaCBNYWdlbGxhbiBhcmUgc3VwcG9ydGVkIGJ5IHNlcmlhbCBkcml2ZXJzIGRlc2NyaWJlZCBiZWxvdy4gIExvZ2l0ZWNoCitXaW5nTWFuIEZvcmNlIGFuZCBMb2dpdGVjaCBXaW5nTWFuIEZvcm11bGEgRm9yY2UgYXJlIHN1cHBvcnRlZCBieSB0aGUKK0ktRm9yY2UgZHJpdmVyIGRlc2NyaWJlZCBiZWxvdy4gTG9naXRlY2ggQ3liZXJNYW4gaXMgbm90IHN1cHBvcnRlZCB5ZXQuCisKKzMuNCBHcmF2aXMgR3JJUAorfn5+fn5+fn5+fn5+fn5+CisgIEdyYXZpcyBHcklQIHByb3RvY29sIGlzIHN1cHBvcnRlZCBieSB0aGUgZ3JpcC5jIG1vZHVsZS4gSXQgY3VycmVudGx5CitzdXBwb3J0czoKKworKiBHcmF2aXMgR2FtZVBhZCBQcm8KKyogR3JhdmlzIEJsYWNrSGF3ayBEaWdpdGFsCisqIEdyYXZpcyBYdGVybWluYXRvcgorKiBHcmF2aXMgWHRlcm1pbmF0b3IgRHVhbENvbnRyb2wKKworICBBbGwgdGhlc2UgZGV2aWNlcyBhcmUgYXV0b2RldGVjdGVkLCBhbmQgeW91IGNhbiBldmVuIHVzZSBhbnkgY29tYmluYXRpb24KK29mIHVwIHRvIHR3byBvZiB0aGVzZSBwYWRzIGVpdGhlciBjaGFpbmVkIHRvZ2V0aGVyIG9yIHVzaW5nIGFuIFktY2FibGUgb24gYQorc2luZ2xlIGdhbWVwb3J0LgorCitHcklQIE11bHRpUG9ydCBpc24ndCBzdXBwb3J0ZWQgeWV0LiBHcmF2aXMgU3RpbmdlciBpcyBhIHNlcmlhbCBkZXZpY2UgYW5kIGlzCitzdXBwb3J0ZWQgYnkgdGhlIHN0aW5nZXIgZHJpdmVyLiBPdGhlciBHcmF2aXMgam95c3RpY2tzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlCithbmFsb2cgZHJpdmVyLgorCiszLjUgRlBHYW1pbmcgQTNEIGFuZCBNYWRDYXR6IEEzRAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgVGhlIEFzc2Fzc2luIDNEIHByb3RvY29sIGNyZWF0ZWQgYnkgRlBHYW1pbmcsIGlzIHVzZWQgYm90aCBieSBGUEdhbWluZwordGhlbXNlbHZlcyBhbmQgaXMgbGljZW5zZWQgdG8gTWFkQ2F0ei4gQTNEIGRldmljZXMgYXJlIHN1cHBvcnRlZCBieSB0aGUKK2EzZC5jIG1vZHVsZS4gSXQgY3VycmVudGx5IHN1cHBvcnRzOgorCisqIEZQR2FtaW5nIEFzc2Fzc2luIDNECisqIE1hZENhdHogUGFudGhlcgorKiBNYWRDYXR6IFBhbnRoZXIgWEwKKworICBBbGwgdGhlc2UgZGV2aWNlcyBhcmUgYXV0b2RldGVjdGVkLiBCZWNhdXNlIHRoZSBBc3Nhc3NpbiAzRCBhbmQgdGhlIFBhbnRoZXIKK2FsbG93IGNvbm5lY3RpbmcgYW5hbG9nIGpveXN0aWNrcyB0byB0aGVtLCB5b3UnbGwgbmVlZCB0byBsb2FkIHRoZSBhbmFsb2cKK2RyaXZlciBhcyB3ZWxsIHRvIGhhbmRsZSB0aGUgYXR0YWNoZWQgam95c3RpY2tzLgorCisgIFRoZSB0cmFja2JhbGwgc2hvdWxkIHdvcmsgd2l0aCBVU0IgbW91c2VkZXYgbW9kdWxlIGFzIGEgbm9ybWFsIG1vdXNlLiBTZWUKK3RoZSBVU0IgZG9jdW1lbnRhdGlvbiBmb3IgaG93IHRvIHNldHVwIGFuIFVTQiBtb3VzZS4KKworMy42IFRocnVzdE1hc3RlciBEaXJlY3RDb25uZWN0IChCU1ApCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgVGhlIFRNIERpcmVjdENvbm5lY3QgKEJTUCkgcHJvdG9jb2wgaXMgc3VwcG9ydGVkIGJ5IHRoZSB0bWRjLmMKK21vZHVsZS4gVGhpcyBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvOgorCisqIFRocnVzdE1hc3RlciBNaWxsZW5uaXVtIDNEIEludGVyY2VwdG9yCisqIFRocnVzdE1hc3RlciAzRCBSYWdlIFBhZAorKiBUaHJ1c3RNYXN0ZXIgRnVzaW9uIERpZ2l0YWwgR2FtZSBQYWQKKworICBEZXZpY2VzIG5vdCBkaXJlY3RseSBzdXBwb3J0ZWQsIGJ1dCBob3BlZnVsbHkgd29ya2luZyBhcmU6CisKKyogVGhydXN0TWFzdGVyIEZyYWdNYXN0ZXIKKyogVGhydXN0TWFzdGVyIEF0dGFjayBUaHJvdHRsZQorCisgIElmIHlvdSBoYXZlIG9uZSBvZiB0aGVzZSwgY29udGFjdCBtZS4KKworICBUTURDIGRldmljZXMgYXJlIGF1dG9kZXRlY3RlZCwgYW5kIHRodXMgbm8gcGFyYW1ldGVycyB0byB0aGUgbW9kdWxlCithcmUgbmVlZGVkLiBVcCB0byB0d28gVE1EQyBkZXZpY2VzIGNhbiBiZSBjb25uZWN0ZWQgdG8gb25lIGdhbWVwb3J0LCB1c2luZworYW4gWS1jYWJsZS4KKworMy43IENyZWF0aXZlIExhYnMgQmxhc3Rlcgorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorICBUaGUgQmxhc3RlciBwcm90b2NvbCBpcyBzdXBwb3J0ZWQgYnkgdGhlIGNvYnJhLmMgbW9kdWxlLiBJdCBzdXBwb3J0cyBvbmx5Cit0aGU6CisKKyogQ3JlYXRpdmUgQmxhc3RlciBHYW1lUGFkIENvYnJhCisKKyAgVXAgdG8gdHdvIG9mIHRoZXNlIGNhbiBiZSB1c2VkIG9uIGEgc2luZ2xlIGdhbWVwb3J0LCB1c2luZyBhbiBZLWNhYmxlLgorCiszLjggR2VuaXVzIERpZ2l0YWwgam95c3RpY2tzIAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorICBUaGUgR2VuaXVzIGRpZ2l0YWxseSBjb21tdW5pY2F0aW5nIGpveXN0aWNrcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBnZjJrLmMKK21vZHVsZS4gVGhpcyBpbmNsdWRlczoKKworKiBHZW5pdXMgRmxpZ2h0MjAwMCBGLTIzIGpveXN0aWNrIAorKiBHZW5pdXMgRmxpZ2h0MjAwMCBGLTMxIGpveXN0aWNrIAorKiBHZW5pdXMgRy0wOUQgZ2FtZXBhZAorCisgIE90aGVyIEdlbml1cyBkaWdpdGFsIGpveXN0aWNrcyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQsIGJ1dCBzdXBwb3J0IGNhbiBiZQorYWRkZWQgZmFpcmx5IGVhc2lseS4KKworMy45IEludGVyQWN0IERpZ2l0YWwgam95c3RpY2tzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgVGhlIEludGVyQWN0IGRpZ2l0YWxseSBjb21tdW5pY2F0aW5nIGpveXN0aWNrcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZQoraW50ZXJhY3QuYyBtb2R1bGUuIFRoaXMgaW5jbHVkZXM6CisKKyogSW50ZXJBY3QgSGFtbWVySGVhZC9GWCBnYW1lcGFkCisqIEludGVyQWN0IFByb1BhZDggZ2FtZXBhZCAKKworICBPdGhlciBJbnRlckFjdCBkaWdpdGFsIGpveXN0aWNrcyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQsIGJ1dCBzdXBwb3J0IGNhbiBiZSAKK2FkZGVkIGZhaXJseSBlYXNpbHkuCisKKzMuMTAgUERQSSBMaWdodG5pbmcgNCBnYW1lY2FyZHMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgUERQSSBMaWdodG5pbmcgNCBnYW1lY2FyZHMgYXJlIHN1cHBvcnRlZCBieSB0aGUgbGlnaHRuaW5nLmMgbW9kdWxlLgorT25jZSB0aGUgbW9kdWxlIGlzIGxvYWRlZCwgdGhlIGFuYWxvZyBkcml2ZXIgY2FuIGJlIHVzZWQgdG8gaGFuZGxlIHRoZQoram95c3RpY2tzLiBEaWdpdGFsbHkgY29tbXVuaWNhdGluZyBqb3lzdGljayB3aWxsIHdvcmsgb25seSBvbiBwb3J0IDAsIHdoaWxlCit1c2luZyBZLWNhYmxlcywgeW91IGNhbiBjb25uZWN0IHVwIHRvIDggYW5hbG9nIGpveXN0aWNrcyB0byBhIHNpbmdsZSBMNAorY2FyZCwgMTYgaW4gY2FzZSB5b3UgaGF2ZSB0d28gaW4geW91ciBzeXN0ZW0uCisKKzMuMTEgVHJpZGVudCA0RFdhdmUgLyBBdXJlYWwgVm9ydGV4Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorICBTb3VuZGNhcmRzIHdpdGggYSBUcmlkZW50IDREV2F2ZSBEWC9OWCBvciBBdXJlYWwgVm9ydGV4L1ZvcnRleDIgY2hpcHNldHMKK3Byb3ZpZGUgYW4gIkVuaGFuY2VkIEdhbWUgUG9ydCIgbW9kZSB3aGVyZSB0aGUgc291bmRjYXJkIGhhbmRsZXMgcG9sbGluZyB0aGUKK2pveXN0aWNrLiAgVGhpcyBtb2RlIGlzIHN1cHBvcnRlZCBieSB0aGUgcGNpZ2FtZS5jIG1vZHVsZS4gT25jZSBsb2FkZWQgdGhlCithbmFsb2cgZHJpdmVyIGNhbiB1c2UgdGhlIGVuaGFuY2VkIGZlYXR1cmVzIG9mIHRoZXNlIGdhbWVwb3J0cy4uCisKKzMuMTMgQ3J5c3RhbCBTb3VuZEZ1c2lvbgorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisgIFNvdW5kY2FyZHMgd2l0aCBDcnlzdGFsIFNvdW5kRnVzaW9uIGNoaXBzZXRzIHByb3ZpZGUgYW4gIkVuaGFuY2VkIEdhbWUKK1BvcnQiLCBtdWNoIGxpa2UgdGhlIDREV2F2ZSBvciBWb3J0ZXggYWJvdmUuIFRoaXMsIGFuZCBhbHNvIHRoZSBub3JtYWwgbW9kZQorZm9yIHRoZSBwb3J0IG9mIHRoZSBTb3VuZEZ1c2lvbiBpcyBzdXBwb3J0ZWQgYnkgdGhlIGNzNDYxeC5jIG1vZHVsZS4KKworMy4xNCBTb3VuZEJsYXN0ZXIgTGl2ZSEKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorICBUaGUgTGl2ZSEgaGFzIGEgc3BlY2lhbCBQQ0kgZ2FtZXBvcnQsIHdoaWNoLCBhbHRob3VnaCBpdCBkb2Vzbid0IHByb3ZpZGUKK2FueSAiRW5oYW5jZWQiIHN0dWZmIGxpa2UgNERXYXZlIGFuZCBmcmllbmRzLCBpcyBxdWl0ZSBhIGJpdCBmYXN0ZXIgdGhhbgoraXRzIElTQSBjb3VudGVycGFydHMuIEl0IGFsc28gcmVxdWlyZXMgc3BlY2lhbCBzdXBwb3J0LCBoZW5jZSB0aGUKK2VtdTEwazEtZ3AuYyBtb2R1bGUgZm9yIGl0IGluc3RlYWQgb2YgdGhlIG5vcm1hbCBuczU1OC5jIG9uZS4KKworMy4xNSBTb3VuZEJsYXN0ZXIgNjQgYW5kIDEyOCAtIEVTMTM3MCBhbmQgRVMxMzcxLCBFU1MgU29sbzEgYW5kIFMzIFNvbmljVmliZXMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisgIFRoZXNlIFBDSSBzb3VuZGNhcmRzIGhhdmUgc3BlY2lmaWMgZ2FtZXBvcnRzLiBUaGV5IGFyZSBoYW5kbGVkIGJ5IHRoZQorc291bmQgZHJpdmVycyB0aGVtc2VsdmVzLiBNYWtlIHN1cmUgeW91IHNlbGVjdCBnYW1lcG9ydCBzdXBwb3J0IGluIHRoZQoram95c3RpY2sgbWVudSBhbmQgc291bmQgY2FyZCBzdXBwb3J0IGluIHRoZSBzb3VuZCBtZW51IGZvciB5b3VyIGFwcHJvcHJpYXRlCitjYXJkLgorCiszLjE2IEFtaWdhCit+fn5+fn5+fn5+CisgIEFtaWdhIGpveXN0aWNrcywgY29ubmVjdGVkIHRvIGFuIEFtaWdhLCBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBhbWlqb3kuYworZHJpdmVyLiBTaW5jZSB0aGV5IGNhbid0IGJlIGF1dG9kZXRlY3RlZCwgdGhlIGRyaXZlciBoYXMgYSBjb21tYW5kIGxpbmUuCisKKwlhbWlqb3kubWFwPTxhPiw8Yj4KKworICBhIGFuZCBiIGRlZmluZSB0aGUgam95c3RpY2tzIGNvbm5lY3RlZCB0byB0aGUgSk9ZMERBVCBhbmQgSk9ZMURBVCBwb3J0cyBvZgordGhlIEFtaWdhLgorCisJVmFsdWUgfCBKb3lzdGljayB0eXBlCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICAwICAgfCBOb25lCisJICAxICAgfCAxLWJ1dHRvbiBkaWdpdGFsIGpveXN0aWNrCisKKyAgTm8gbW9yZSBqb3lzdGljayB0eXBlcyBhcmUgc3VwcG9ydGVkIG5vdywgYnV0IHRoYXQgc2hvdWxkIGNoYW5nZSBpbiB0aGUKK2Z1dHVyZSBpZiBJIGdldCBhbiBBbWlnYSBpbiB0aGUgcmVhY2ggb2YgbXkgZmluZ2Vycy4KKworMy4xNyBHYW1lIGNvbnNvbGUgYW5kIDgtYml0IHBhZHMgYW5kIGpveXN0aWNrcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorU2VlIGpveXN0aWNrLXBhcnBvcnQudHh0IGZvciBtb3JlIGluZm8uCisKKzMuMTggU3BhY2VUZWMvTGFiVGVjIGRldmljZXMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgU3BhY2VUZWMgc2VyaWFsIGRldmljZXMgY29tbXVuaWNhdGUgdXNpbmcgdGhlIFNwYWNlV2FyZSBwcm90b2NvbC4gSXQgaXMKK3N1cHBvcnRlZCBieSB0aGUgc3BhY2VvcmIuYyBhbmQgc3BhY2ViYWxsLmMgZHJpdmVycy4gVGhlIGRldmljZXMgY3VycmVudGx5CitzdXBwb3J0ZWQgYnkgc3BhY2VvcmIuYyBhcmU6CisKKyogU3BhY2VUZWMgU3BhY2VCYWxsIEF2ZW5nZXIKKyogU3BhY2VUZWMgU3BhY2VPcmIgMzYwCisKK0RldmljZXMgY3VycmVudGx5IHN1cHBvcnRlZCBieSBzcGFjZWJhbGwuYyBhcmU6CisKKyogU3BhY2VUZWMgU3BhY2VCYWxsIDQwMDAgRkxYCisKKyAgSW4gYWRkaXRpb24gdG8gaGF2aW5nIHRoZSBzcGFjZW9yYi9zcGFjZWJhbGwgYW5kIHNlcnBvcnQgbW9kdWxlcyBpbiB0aGUKK2tlcm5lbCwgeW91IGFsc28gbmVlZCB0byBhdHRhY2ggYSBzZXJpYWwgcG9ydCB0byBpdC4gdG8gZG8gdGhhdCwgcnVuIHRoZQoraW5wdXRhdHRhY2ggcHJvZ3JhbToKKworCWlucHV0YXR0YWNoIC0tc3BhY2VvcmIgL2Rldi90dHMveCAmCitvcgorCWlucHV0YXR0YWNoIC0tc3BhY2ViYWxsIC9kZXYvdHRzL3ggJgorCit3aGVyZSAvZGV2L3R0cy94IGlzIHRoZSBzZXJpYWwgcG9ydCB3aGljaCB0aGUgZGV2aWNlIGlzIGNvbm5lY3RlZCB0by4gQWZ0ZXIKK2RvaW5nIHRoaXMsIHRoZSBkZXZpY2Ugd2lsbCBiZSByZXBvcnRlZCBhbmQgd2lsbCBzdGFydCB3b3JraW5nLgorCisgIFRoZXJlIGlzIG9uZSBjYXZlYXQgd2l0aCB0aGUgU3BhY2VPcmIuIFRoZSBidXR0b24gIzYsIHRoZSBvbiB0aGUgYm90dG9tCitzaWRlIG9mIHRoZSBvcmIsIGFsdGhvdWdoIHJlcG9ydGVkIGFzIGFuIG9yZGluYXJ5IGJ1dHRvbiwgY2F1c2VzIGludGVybmFsCityZWNlbnRlcmluZyBvZiB0aGUgc3BhY2VvcmIsIG1vdmluZyB0aGUgemVybyBwb2ludCB0byB0aGUgcG9zaXRpb24gaW4gd2hpY2gKK3RoZSBiYWxsIGlzIGF0IHRoZSBtb21lbnQgb2YgcHJlc3NpbmcgdGhlIGJ1dHRvbi4gU28sIHRoaW5rIGZpcnN0IGJlZm9yZQoreW91IGJpbmQgaXQgdG8gc29tZSBvdGhlciBmdW5jdGlvbi4KKworU3BhY2VUZWMgU3BhY2VCYWxsIDIwMDMgRkxYIGFuZCAzMDAzIEZMWCBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuIAorCiszLjE5IExvZ2l0ZWNoIFNXSUZUIGRldmljZXMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorICBUaGUgU1dJRlQgc2VyaWFsIHByb3RvY29sIGlzIHN1cHBvcnRlZCBieSB0aGUgd2Fycmlvci5jIG1vZHVsZS4gSXQKK2N1cnJlbnRseSBzdXBwb3J0cyBvbmx5IHRoZToKKworKiBMb2dpdGVjaCBXaW5nTWFuIFdhcnJpb3IKKworYnV0IGluIHRoZSBmdXR1cmUsIExvZ2l0ZWNoIEN5YmVyTWFuICh0aGUgb3JpZ2luYWwgb25lLCBub3QgQ00yKSBjb3VsZCBiZQorc3VwcG9ydGVkIGFzIHdlbGwuIFRvIHVzZSB0aGUgbW9kdWxlLCB5b3UgbmVlZCB0byBydW4gaW5wdXRhdHRhY2ggYWZ0ZXIgeW91CitpbnNlcnQvY29tcGlsZSB0aGUgbW9kdWxlIGludG8geW91ciBrZXJuZWw6CisKKwlpbnB1dGF0dGFjaCAtLXdhcnJpb3IgL2Rldi90dHMveCAmCisKKy9kZXYvdHRzL3ggaXMgdGhlIHNlcmlhbCBwb3J0IHlvdXIgV2FycmlvciBpcyBhdHRhY2hlZCB0by4KKworMy4yMCBNYWdlbGxhbiAvIFNwYWNlIE1vdXNlCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgVGhlIE1hZ2VsbGFuIChvciBTcGFjZSBNb3VzZSksIG1hbnVmYWN0dXJlZCBieSBMb2dpQ2FkM2QgKGZvcm1lcmx5IFNwYWNlCitTeXN0ZW1zKSwgZm9yIG1hbnkgb3RoZXIgY29tcGFuaWVzIChMb2dpdGVjaCwgSFAsIC4uLikgaXMgc3VwcG9ydGVkIGJ5IHRoZQoram95LW1hZ2VsbGFuIG1vZHVsZS4gSXQgY3VycmVudGx5IHN1cHBvcnRzIG9ubHkgdGhlOgorCisqIE1hZ2VsbGFuIDNECisqIFNwYWNlIE1vdXNlCisKK21vZGVscywgdGhlIGFkZGl0aW9uYWwgYnV0dG9ucyBvbiB0aGUgJ1BsdXMnIHZlcnNpb25zIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4KKworICBUbyB1c2UgaXQsIHlvdSBuZWVkIHRvIGF0dGFjaCB0aGUgc2VyaWFsIHBvcnQgdG8gdGhlIGRyaXZlciB1c2luZyB0aGUKKworCWlucHV0YXR0YWNoIC0tbWFnZWxsYW4gL2Rldi90dHMveCAmCisKK2NvbW1hbmQuIEFmdGVyIHRoYXQgdGhlIE1hZ2VsbGFuIHdpbGwgYmUgZGV0ZWN0ZWQsIGluaXRpYWxpemVkLCB3aWxsIGJlZXAsCithbmQgdGhlIC9kZXYvaW5wdXQvanNYIGRldmljZSBzaG91bGQgYmVjb21lIHVzYWJsZS4KKworMy4yMSBJLUZvcmNlIGRldmljZXMgCit+fn5+fn5+fn5+fn5+fn5+fn5+fgorICBBbGwgSS1Gb3JjZSBkZXZpY2VzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIGlmb3JjZSBtb2R1bGUuIFRoaXMgaW5jbHVkZXM6CisKKyogQVZCIE1hZyBUdXJibyBGb3JjZQorKiBBVkIgVG9wIFNob3QgUGVnYXN1cworKiBBVkIgVG9wIFNob3QgRm9yY2UgRmVlZGJhY2sgUmFjaW5nIFdoZWVsCisqIExvZ2l0ZWNoIFdpbmdNYW4gRm9yY2UKKyogTG9naXRlY2ggV2luZ01hbiBGb3JjZSBXaGVlbCAKKyogR3VpbGxlbW90IFJhY2UgTGVhZGVyIEZvcmNlIEZlZWRiYWNrCisqIEd1aWxsZW1vdCBGb3JjZSBGZWVkYmFjayBSYWNpbmcgV2hlZWwKKyogVGhydXN0bWFzdGVyIE1vdG9yIFNwb3J0IEdUCisKKyAgVG8gdXNlIGl0LCB5b3UgbmVlZCB0byBhdHRhY2ggdGhlIHNlcmlhbCBwb3J0IHRvIHRoZSBkcml2ZXIgdXNpbmcgdGhlCisKKwlpbnB1dGF0dGFjaCAtLWlmb3JjZSAvZGV2L3R0cy94ICYKKworY29tbWFuZC4gQWZ0ZXIgdGhhdCB0aGUgSS1Gb3JjZSBkZXZpY2Ugd2lsbCBiZSBkZXRlY3RlZCwgYW5kIHRoZQorL2Rldi9pbnB1dC9qc1ggZGV2aWNlIHNob3VsZCBiZWNvbWUgdXNhYmxlLgorCisgIEluIGNhc2UgeW91J3JlIHVzaW5nIHRoZSBkZXZpY2UgdmlhIHRoZSBVU0IgcG9ydCwgdGhlIGlucHV0YXR0YWNoIGNvbW1hbmQKK2lzbid0IG5lZWRlZC4KKworICBUaGUgSS1Gb3JjZSBkcml2ZXIgbm93IHN1cHBvcnRzIGZvcmNlIGZlZWRiYWNrIHZpYSB0aGUgZXZlbnQgaW50ZXJmYWNlLgorCisgIFBsZWFzZSBub3RlIHRoYXQgTG9naXRlY2ggV2luZ01hbiAqM0QgZGV2aWNlcyBhcmUgX25vdF8gc3VwcG9ydGVkIGJ5IHRoaXMKK21vZHVsZSwgcmF0aGVyIGJ5IGhpZC4gRm9yY2UgZmVlZGJhY2sgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhvc2UgZGV2aWNlcy4KK0xvZ2l0ZWNoIGdhbWVwYWRzIGFyZSBhbHNvIGhpZCBkZXZpY2VzLgorCiszLjIyIEdyYXZpcyBTdGluZ2VyIGdhbWVwYWQgCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgVGhlIEdyYXZpcyBTdGluZ2VyIHNlcmlhbCBwb3J0IGdhbWVwYWQsIGRlc2lnbmVkIGZvciB1c2Ugd2l0aCBsYXB0b3AKK2NvbXB1dGVycywgaXMgc3VwcG9ydGVkIGJ5IHRoZSBzdGluZ2VyLmMgbW9kdWxlLiBUbyB1c2UgaXQsIGF0dGFjaCB0aGUKK3NlcmlhbCBwb3J0IHRvIHRoZSBkcml2ZXIgdXNpbmc6CisKKyAgICAgICAgaW5wdXRhdHRhY2ggLS1zdGluZ2VyIC9kZXYvdHR5L3ggJgorCit3aGVyZSB4IGlzIHRoZSBudW1iZXIgb2YgdGhlIHNlcmlhbCBwb3J0LgorCis0LiBUcm91Ymxlc2hvb3RpbmcKK35+fn5+fn5+fn5+fn5+fn5+fgorICBUaGVyZSBpcyBxdWl0ZSBhIGhpZ2ggcHJvYmFiaWxpdHkgdGhhdCB5b3UgcnVuIGludG8gc29tZSBwcm9ibGVtcy4gRm9yCit0ZXN0aW5nIHdoZXRoZXIgdGhlIGRyaXZlciB3b3JrcywgaWYgaW4gZG91YnQsIHVzZSB0aGUganN0ZXN0IHV0aWxpdHkgaW4KK3NvbWUgb2YgaXRzIG1vZGVzLiBUaGUgbW9zdCB1c2VmdWwgbW9kZXMgYXJlICJub3JtYWwiIC0gZm9yIHRoZSAxLngKK2ludGVyZmFjZSwgYW5kICJvbGQiIGZvciB0aGUgIjAueCIgaW50ZXJmYWNlLiBZb3UgcnVuIGl0IGJ5IHR5cGluZzoKKworCWpzdGVzdCAtLW5vcm1hbCAvZGV2L2lucHV0L2pzMAorCWpzdGVzdCAtLW9sZCAgICAvZGV2L2lucHV0L2pzMAorCisgIEFkZGl0aW9uYWxseSB5b3UgY2FuIGRvIGEgdGVzdCB3aXRoIHRoZSBldnRlc3QgdXRpbGl0eToKKworCWV2dGVzdCAvZGV2L2lucHV0L2V2ZW50MAorCisgIE9oLCBhbmQgcmVhZCB0aGUgRkFRISA6KQorCis1LiBGQVEKK35+fn5+fgorUTogUnVubmluZyAnanN0ZXN0IC9kZXYvaW5wdXQvanMwJyByZXN1bHRzIGluICJGaWxlIG5vdCBmb3VuZCIgZXJyb3IuIFdoYXQncyB0aGUKKyAgIGNhdXNlPworQTogVGhlIGRldmljZSBmaWxlcyBkb24ndCBleGlzdC4gQ3JlYXRlIHRoZW0gKHNlZSBzZWN0aW9uIDIuMikuCisKK1E6IElzIGl0IHBvc3NpYmxlIHRvIGNvbm5lY3QgbXkgb2xkIEF0YXJpL0NvbW1vZG9yZS9BbWlnYS9jb25zb2xlIGpveXN0aWNrCisgICBvciBwYWQgdGhhdCB1c2VzIGEgOS1waW4gRC10eXBlIGNhbm5vbiBjb25uZWN0b3IgdG8gdGhlIHNlcmlhbCBwb3J0IG9mIG15CisgICBQQz8KK0E6IFllcywgaXQgaXMgcG9zc2libGUsIGJ1dCBpdCdsbCBidXJuIHlvdXIgc2VyaWFsIHBvcnQgb3IgdGhlIHBhZC4gSXQKKyAgIHdvbid0IHdvcmssIG9mIGNvdXJzZS4KKworUTogTXkgam95c3RpY2sgZG9lc24ndCB3b3JrIHdpdGggUXVha2UgLyBRdWFrZSAyLiBXaGF0J3MgdGhlIGNhdXNlPworQTogUXVha2UgLyBRdWFrZSAyIGRvbid0IHN1cHBvcnQgam95c3RpY2suIFVzZSBqb3kya2V5IHRvIHNpbXVsYXRlIGtleXByZXNzZXMKKyAgIGZvciB0aGVtLgorCis2LiBQcm9ncmFtbWluZyBJbnRlcmZhY2UKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorICBUaGUgMS4wIGRyaXZlciB1c2VzIGEgbmV3LCBldmVudCBiYXNlZCBhcHByb2FjaCB0byB0aGUgam95c3RpY2sgZHJpdmVyLgorSW5zdGVhZCBvZiB0aGUgdXNlciBwcm9ncmFtIHBvbGxpbmcgZm9yIHRoZSBqb3lzdGljayB2YWx1ZXMsIHRoZSBqb3lzdGljaworZHJpdmVyIG5vdyByZXBvcnRzIG9ubHkgYW55IGNoYW5nZXMgb2YgaXRzIHN0YXRlLiBTZWUgam95c3RpY2stYXBpLnR4dCwKK2pveXN0aWNrLmggYW5kIGpzdGVzdC5jIGluY2x1ZGVkIGluIHRoZSBqb3lzdGljayBwYWNrYWdlIGZvciBtb3JlCitpbmZvcm1hdGlvbi4gVGhlIGpveXN0aWNrIGRldmljZSBjYW4gYmUgdXNlZCBpbiBlaXRoZXIgYmxvY2tpbmcgb3IKK25vbmJsb2NraW5nIG1vZGUgYW5kIHN1cHBvcnRzIHNlbGVjdCgpIGNhbGxzLgorCisgIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRoZSBvbGQgKHYwLngpIGludGVyZmFjZSBpcyBzdGlsbCBpbmNsdWRlZC4KK0FueSBjYWxsIHRvIHRoZSBqb3lzdGljayBkcml2ZXIgdXNpbmcgdGhlIG9sZCBpbnRlcmZhY2Ugd2lsbCByZXR1cm4gdmFsdWVzCit0aGF0IGFyZSBjb21wYXRpYmxlIHRvIHRoZSBvbGQgaW50ZXJmYWNlLiAgVGhpcyBpbnRlcmZhY2UgaXMgc3RpbGwgbGltaXRlZAordG8gMiBheGVzLCBhbmQgYXBwbGljYXRpb25zIHVzaW5nIGl0IHVzdWFsbHkgZGVjb2RlIG9ubHkgMiBidXR0b25zLCBhbHRob3VnaAordGhlIGRyaXZlciBwcm92aWRlcyB1cCB0byAzMi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW5wdXQvbXVsdGktdG91Y2gtcHJvdG9jb2wudHh0IGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9tdWx0aS10b3VjaC1wcm90b2NvbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzUxZjExNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaW5wdXQvbXVsdGktdG91Y2gtcHJvdG9jb2wudHh0CkBAIC0wLDAgKzEsNDE4IEBACitNdWx0aS10b3VjaCAoTVQpIFByb3RvY29sCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAJSGVucmlrIFJ5ZGJlcmcgPHJ5ZGJlcmdAZXVyb21haWwuc2U+CisKKworSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0KKworSW4gb3JkZXIgdG8gdXRpbGl6ZSB0aGUgZnVsbCBwb3dlciBvZiB0aGUgbmV3IG11bHRpLXRvdWNoIGFuZCBtdWx0aS11c2VyCitkZXZpY2VzLCBhIHdheSB0byByZXBvcnQgZGV0YWlsZWQgZGF0YSBmcm9tIG11bHRpcGxlIGNvbnRhY3RzLCBpLmUuLAorb2JqZWN0cyBpbiBkaXJlY3QgY29udGFjdCB3aXRoIHRoZSBkZXZpY2Ugc3VyZmFjZSwgaXMgbmVlZGVkLiAgVGhpcworZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBtdWx0aS10b3VjaCAoTVQpIHByb3RvY29sIHdoaWNoIGFsbG93cyBrZXJuZWwKK2RyaXZlcnMgdG8gcmVwb3J0IGRldGFpbHMgZm9yIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgY29udGFjdHMuCisKK1RoZSBwcm90b2NvbCBpcyBkaXZpZGVkIGludG8gdHdvIHR5cGVzLCBkZXBlbmRpbmcgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUKK2hhcmR3YXJlLiBGb3IgZGV2aWNlcyBoYW5kbGluZyBhbm9ueW1vdXMgY29udGFjdHMgKHR5cGUgQSksIHRoZSBwcm90b2NvbAorZGVzY3JpYmVzIGhvdyB0byBzZW5kIHRoZSByYXcgZGF0YSBmb3IgYWxsIGNvbnRhY3RzIHRvIHRoZSByZWNlaXZlci4gRm9yCitkZXZpY2VzIGNhcGFibGUgb2YgdHJhY2tpbmcgaWRlbnRpZmlhYmxlIGNvbnRhY3RzICh0eXBlIEIpLCB0aGUgcHJvdG9jb2wKK2Rlc2NyaWJlcyBob3cgdG8gc2VuZCB1cGRhdGVzIGZvciBpbmRpdmlkdWFsIGNvbnRhY3RzIHZpYSBldmVudCBzbG90cy4KKworCitQcm90b2NvbCBVc2FnZQorLS0tLS0tLS0tLS0tLS0KKworQ29udGFjdCBkZXRhaWxzIGFyZSBzZW50IHNlcXVlbnRpYWxseSBhcyBzZXBhcmF0ZSBwYWNrZXRzIG9mIEFCU19NVAorZXZlbnRzLiBPbmx5IHRoZSBBQlNfTVQgZXZlbnRzIGFyZSByZWNvZ25pemVkIGFzIHBhcnQgb2YgYSBjb250YWN0CitwYWNrZXQuIFNpbmNlIHRoZXNlIGV2ZW50cyBhcmUgaWdub3JlZCBieSBjdXJyZW50IHNpbmdsZS10b3VjaCAoU1QpCithcHBsaWNhdGlvbnMsIHRoZSBNVCBwcm90b2NvbCBjYW4gYmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mIHRoZSBTVCBwcm90b2NvbAoraW4gYW4gZXhpc3RpbmcgZHJpdmVyLgorCitEcml2ZXJzIGZvciB0eXBlIEEgZGV2aWNlcyBzZXBhcmF0ZSBjb250YWN0IHBhY2tldHMgYnkgY2FsbGluZworaW5wdXRfbXRfc3luYygpIGF0IHRoZSBlbmQgb2YgZWFjaCBwYWNrZXQuIFRoaXMgZ2VuZXJhdGVzIGEgU1lOX01UX1JFUE9SVAorZXZlbnQsIHdoaWNoIGluc3RydWN0cyB0aGUgcmVjZWl2ZXIgdG8gYWNjZXB0IHRoZSBkYXRhIGZvciB0aGUgY3VycmVudAorY29udGFjdCBhbmQgcHJlcGFyZSB0byByZWNlaXZlIGFub3RoZXIuCisKK0RyaXZlcnMgZm9yIHR5cGUgQiBkZXZpY2VzIHNlcGFyYXRlIGNvbnRhY3QgcGFja2V0cyBieSBjYWxsaW5nCitpbnB1dF9tdF9zbG90KCksIHdpdGggYSBzbG90IGFzIGFyZ3VtZW50LCBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggcGFja2V0LgorVGhpcyBnZW5lcmF0ZXMgYW4gQUJTX01UX1NMT1QgZXZlbnQsIHdoaWNoIGluc3RydWN0cyB0aGUgcmVjZWl2ZXIgdG8KK3ByZXBhcmUgZm9yIHVwZGF0ZXMgb2YgdGhlIGdpdmVuIHNsb3QuCisKK0FsbCBkcml2ZXJzIG1hcmsgdGhlIGVuZCBvZiBhIG11bHRpLXRvdWNoIHRyYW5zZmVyIGJ5IGNhbGxpbmcgdGhlIHVzdWFsCitpbnB1dF9zeW5jKCkgZnVuY3Rpb24uIFRoaXMgaW5zdHJ1Y3RzIHRoZSByZWNlaXZlciB0byBhY3QgdXBvbiBldmVudHMKK2FjY3VtdWxhdGVkIHNpbmNlIGxhc3QgRVZfU1lOL1NZTl9SRVBPUlQgYW5kIHByZXBhcmUgdG8gcmVjZWl2ZSBhIG5ldyBzZXQKK29mIGV2ZW50cy9wYWNrZXRzLgorCitUaGUgbWFpbiBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHN0YXRlbGVzcyB0eXBlIEEgcHJvdG9jb2wgYW5kIHRoZSBzdGF0ZWZ1bAordHlwZSBCIHNsb3QgcHJvdG9jb2wgbGllcyBpbiB0aGUgdXNhZ2Ugb2YgaWRlbnRpZmlhYmxlIGNvbnRhY3RzIHRvIHJlZHVjZQordGhlIGFtb3VudCBvZiBkYXRhIHNlbnQgdG8gdXNlcnNwYWNlLiBUaGUgc2xvdCBwcm90b2NvbCByZXF1aXJlcyB0aGUgdXNlIG9mCit0aGUgQUJTX01UX1RSQUNLSU5HX0lELCBlaXRoZXIgcHJvdmlkZWQgYnkgdGhlIGhhcmR3YXJlIG9yIGNvbXB1dGVkIGZyb20KK3RoZSByYXcgZGF0YSBbNV0uCisKK0ZvciB0eXBlIEEgZGV2aWNlcywgdGhlIGtlcm5lbCBkcml2ZXIgc2hvdWxkIGdlbmVyYXRlIGFuIGFyYml0cmFyeQorZW51bWVyYXRpb24gb2YgdGhlIGZ1bGwgc2V0IG9mIGFub255bW91cyBjb250YWN0cyBjdXJyZW50bHkgb24gdGhlCitzdXJmYWNlLiBUaGUgb3JkZXIgaW4gd2hpY2ggdGhlIHBhY2tldHMgYXBwZWFyIGluIHRoZSBldmVudCBzdHJlYW0gaXMgbm90CitpbXBvcnRhbnQuICBFdmVudCBmaWx0ZXJpbmcgYW5kIGZpbmdlciB0cmFja2luZyBpcyBsZWZ0IHRvIHVzZXIgc3BhY2UgWzNdLgorCitGb3IgdHlwZSBCIGRldmljZXMsIHRoZSBrZXJuZWwgZHJpdmVyIHNob3VsZCBhc3NvY2lhdGUgYSBzbG90IHdpdGggZWFjaAoraWRlbnRpZmllZCBjb250YWN0LCBhbmQgdXNlIHRoYXQgc2xvdCB0byBwcm9wYWdhdGUgY2hhbmdlcyBmb3IgdGhlIGNvbnRhY3QuCitDcmVhdGlvbiwgcmVwbGFjZW1lbnQgYW5kIGRlc3RydWN0aW9uIG9mIGNvbnRhY3RzIGlzIGFjaGlldmVkIGJ5IG1vZGlmeWluZwordGhlIEFCU19NVF9UUkFDS0lOR19JRCBvZiB0aGUgYXNzb2NpYXRlZCBzbG90LiAgQSBub24tbmVnYXRpdmUgdHJhY2tpbmcgaWQKK2lzIGludGVycHJldGVkIGFzIGEgY29udGFjdCwgYW5kIHRoZSB2YWx1ZSAtMSBkZW5vdGVzIGFuIHVudXNlZCBzbG90LiAgQQordHJhY2tpbmcgaWQgbm90IHByZXZpb3VzbHkgcHJlc2VudCBpcyBjb25zaWRlcmVkIG5ldywgYW5kIGEgdHJhY2tpbmcgaWQgbm8KK2xvbmdlciBwcmVzZW50IGlzIGNvbnNpZGVyZWQgcmVtb3ZlZC4gIFNpbmNlIG9ubHkgY2hhbmdlcyBhcmUgcHJvcGFnYXRlZCwKK3RoZSBmdWxsIHN0YXRlIG9mIGVhY2ggaW5pdGlhdGVkIGNvbnRhY3QgaGFzIHRvIHJlc2lkZSBpbiB0aGUgcmVjZWl2aW5nCitlbmQuICBVcG9uIHJlY2VpdmluZyBhbiBNVCBldmVudCwgb25lIHNpbXBseSB1cGRhdGVzIHRoZSBhcHByb3ByaWF0ZQorYXR0cmlidXRlIG9mIHRoZSBjdXJyZW50IHNsb3QuCisKK1NvbWUgZGV2aWNlcyBpZGVudGlmeSBhbmQvb3IgdHJhY2sgbW9yZSBjb250YWN0cyB0aGFuIHRoZXkgY2FuIHJlcG9ydCB0byB0aGUKK2RyaXZlci4gIEEgZHJpdmVyIGZvciBzdWNoIGEgZGV2aWNlIHNob3VsZCBhc3NvY2lhdGUgb25lIHR5cGUgQiBzbG90IHdpdGggZWFjaAorY29udGFjdCB0aGF0IGlzIHJlcG9ydGVkIGJ5IHRoZSBoYXJkd2FyZS4gIFdoZW5ldmVyIHRoZSBpZGVudGl0eSBvZiB0aGUKK2NvbnRhY3QgYXNzb2NpYXRlZCB3aXRoIGEgc2xvdCBjaGFuZ2VzLCB0aGUgZHJpdmVyIHNob3VsZCBpbnZhbGlkYXRlIHRoYXQKK3Nsb3QgYnkgY2hhbmdpbmcgaXRzIEFCU19NVF9UUkFDS0lOR19JRC4gIElmIHRoZSBoYXJkd2FyZSBzaWduYWxzIHRoYXQgaXQgaXMKK3RyYWNraW5nIG1vcmUgY29udGFjdHMgdGhhbiBpdCBpcyBjdXJyZW50bHkgcmVwb3J0aW5nLCB0aGUgZHJpdmVyIHNob3VsZCB1c2UKK2EgQlROX1RPT0xfKlRBUCBldmVudCB0byBpbmZvcm0gdXNlcnNwYWNlIG9mIHRoZSB0b3RhbCBudW1iZXIgb2YgY29udGFjdHMKK2JlaW5nIHRyYWNrZWQgYnkgdGhlIGhhcmR3YXJlIGF0IHRoYXQgbW9tZW50LiAgVGhlIGRyaXZlciBzaG91bGQgZG8gdGhpcyBieQorZXhwbGljaXRseSBzZW5kaW5nIHRoZSBjb3JyZXNwb25kaW5nIEJUTl9UT09MXypUQVAgZXZlbnQgYW5kIHNldHRpbmcKK3VzZV9jb3VudCB0byBmYWxzZSB3aGVuIGNhbGxpbmcgaW5wdXRfbXRfcmVwb3J0X3BvaW50ZXJfZW11bGF0aW9uKCkuCitUaGUgZHJpdmVyIHNob3VsZCBvbmx5IGFkdmVydGlzZSBhcyBtYW55IHNsb3RzIGFzIHRoZSBoYXJkd2FyZSBjYW4gcmVwb3J0LgorVXNlcnNwYWNlIGNhbiBkZXRlY3QgdGhhdCBhIGRyaXZlciBjYW4gcmVwb3J0IG1vcmUgdG90YWwgY29udGFjdHMgdGhhbiBzbG90cworYnkgbm90aW5nIHRoYXQgdGhlIGxhcmdlc3Qgc3VwcG9ydGVkIEJUTl9UT09MXypUQVAgZXZlbnQgaXMgbGFyZ2VyIHRoYW4gdGhlCit0b3RhbCBudW1iZXIgb2YgdHlwZSBCIHNsb3RzIHJlcG9ydGVkIGluIHRoZSBhYnNpbmZvIGZvciB0aGUgQUJTX01UX1NMT1QgYXhpcy4KKworVGhlIG1pbmltdW0gdmFsdWUgb2YgdGhlIEFCU19NVF9TTE9UIGF4aXMgbXVzdCBiZSAwLgorCitQcm90b2NvbCBFeGFtcGxlIEEKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitIZXJlIGlzIHdoYXQgYSBtaW5pbWFsIGV2ZW50IHNlcXVlbmNlIGZvciBhIHR3by1jb250YWN0IHRvdWNoIHdvdWxkIGxvb2sKK2xpa2UgZm9yIGEgdHlwZSBBIGRldmljZToKKworICAgQUJTX01UX1BPU0lUSU9OX1ggeFswXQorICAgQUJTX01UX1BPU0lUSU9OX1kgeVswXQorICAgU1lOX01UX1JFUE9SVAorICAgQUJTX01UX1BPU0lUSU9OX1ggeFsxXQorICAgQUJTX01UX1BPU0lUSU9OX1kgeVsxXQorICAgU1lOX01UX1JFUE9SVAorICAgU1lOX1JFUE9SVAorCitUaGUgc2VxdWVuY2UgYWZ0ZXIgbW92aW5nIG9uZSBvZiB0aGUgY29udGFjdHMgbG9va3MgZXhhY3RseSB0aGUgc2FtZTsgdGhlCityYXcgZGF0YSBmb3IgYWxsIHByZXNlbnQgY29udGFjdHMgYXJlIHNlbnQgYmV0d2VlbiBldmVyeSBzeW5jaHJvbml6YXRpb24KK3dpdGggU1lOX1JFUE9SVC4KKworSGVyZSBpcyB0aGUgc2VxdWVuY2UgYWZ0ZXIgbGlmdGluZyB0aGUgZmlyc3QgY29udGFjdDoKKworICAgQUJTX01UX1BPU0lUSU9OX1ggeFsxXQorICAgQUJTX01UX1BPU0lUSU9OX1kgeVsxXQorICAgU1lOX01UX1JFUE9SVAorICAgU1lOX1JFUE9SVAorCitBbmQgaGVyZSBpcyB0aGUgc2VxdWVuY2UgYWZ0ZXIgbGlmdGluZyB0aGUgc2Vjb25kIGNvbnRhY3Q6CisKKyAgIFNZTl9NVF9SRVBPUlQKKyAgIFNZTl9SRVBPUlQKKworSWYgdGhlIGRyaXZlciByZXBvcnRzIG9uZSBvZiBCVE5fVE9VQ0ggb3IgQUJTX1BSRVNTVVJFIGluIGFkZGl0aW9uIHRvIHRoZQorQUJTX01UIGV2ZW50cywgdGhlIGxhc3QgU1lOX01UX1JFUE9SVCBldmVudCBtYXkgYmUgb21pdHRlZC4gT3RoZXJ3aXNlLCB0aGUKK2xhc3QgU1lOX1JFUE9SVCB3aWxsIGJlIGRyb3BwZWQgYnkgdGhlIGlucHV0IGNvcmUsIHJlc3VsdGluZyBpbiBubworemVyby1jb250YWN0IGV2ZW50IHJlYWNoaW5nIHVzZXJsYW5kLgorCisKK1Byb3RvY29sIEV4YW1wbGUgQgorLS0tLS0tLS0tLS0tLS0tLS0tCisKK0hlcmUgaXMgd2hhdCBhIG1pbmltYWwgZXZlbnQgc2VxdWVuY2UgZm9yIGEgdHdvLWNvbnRhY3QgdG91Y2ggd291bGQgbG9vaworbGlrZSBmb3IgYSB0eXBlIEIgZGV2aWNlOgorCisgICBBQlNfTVRfU0xPVCAwCisgICBBQlNfTVRfVFJBQ0tJTkdfSUQgNDUKKyAgIEFCU19NVF9QT1NJVElPTl9YIHhbMF0KKyAgIEFCU19NVF9QT1NJVElPTl9ZIHlbMF0KKyAgIEFCU19NVF9TTE9UIDEKKyAgIEFCU19NVF9UUkFDS0lOR19JRCA0NgorICAgQUJTX01UX1BPU0lUSU9OX1ggeFsxXQorICAgQUJTX01UX1BPU0lUSU9OX1kgeVsxXQorICAgU1lOX1JFUE9SVAorCitIZXJlIGlzIHRoZSBzZXF1ZW5jZSBhZnRlciBtb3ZpbmcgY29udGFjdCA0NSBpbiB0aGUgeCBkaXJlY3Rpb246CisKKyAgIEFCU19NVF9TTE9UIDAKKyAgIEFCU19NVF9QT1NJVElPTl9YIHhbMF0KKyAgIFNZTl9SRVBPUlQKKworSGVyZSBpcyB0aGUgc2VxdWVuY2UgYWZ0ZXIgbGlmdGluZyB0aGUgY29udGFjdCBpbiBzbG90IDA6CisKKyAgIEFCU19NVF9UUkFDS0lOR19JRCAtMQorICAgU1lOX1JFUE9SVAorCitUaGUgc2xvdCBiZWluZyBtb2RpZmllZCBpcyBhbHJlYWR5IDAsIHNvIHRoZSBBQlNfTVRfU0xPVCBpcyBvbWl0dGVkLiAgVGhlCittZXNzYWdlIHJlbW92ZXMgdGhlIGFzc29jaWF0aW9uIG9mIHNsb3QgMCB3aXRoIGNvbnRhY3QgNDUsIHRoZXJlYnkKK2Rlc3Ryb3lpbmcgY29udGFjdCA0NSBhbmQgZnJlZWluZyBzbG90IDAgdG8gYmUgcmV1c2VkIGZvciBhbm90aGVyIGNvbnRhY3QuCisKK0ZpbmFsbHksIGhlcmUgaXMgdGhlIHNlcXVlbmNlIGFmdGVyIGxpZnRpbmcgdGhlIHNlY29uZCBjb250YWN0OgorCisgICBBQlNfTVRfU0xPVCAxCisgICBBQlNfTVRfVFJBQ0tJTkdfSUQgLTEKKyAgIFNZTl9SRVBPUlQKKworCitFdmVudCBVc2FnZQorLS0tLS0tLS0tLS0KKworQSBzZXQgb2YgQUJTX01UIGV2ZW50cyB3aXRoIHRoZSBkZXNpcmVkIHByb3BlcnRpZXMgaXMgZGVmaW5lZC4gVGhlIGV2ZW50cworYXJlIGRpdmlkZWQgaW50byBjYXRlZ29yaWVzLCB0byBhbGxvdyBmb3IgcGFydGlhbCBpbXBsZW1lbnRhdGlvbi4gIFRoZQorbWluaW11bSBzZXQgY29uc2lzdHMgb2YgQUJTX01UX1BPU0lUSU9OX1ggYW5kIEFCU19NVF9QT1NJVElPTl9ZLCB3aGljaAorYWxsb3dzIGZvciBtdWx0aXBsZSBjb250YWN0cyB0byBiZSB0cmFja2VkLiAgSWYgdGhlIGRldmljZSBzdXBwb3J0cyBpdCwgdGhlCitBQlNfTVRfVE9VQ0hfTUFKT1IgYW5kIEFCU19NVF9XSURUSF9NQUpPUiBtYXkgYmUgdXNlZCB0byBwcm92aWRlIHRoZSBzaXplCitvZiB0aGUgY29udGFjdCBhcmVhIGFuZCBhcHByb2FjaGluZyB0b29sLCByZXNwZWN0aXZlbHkuCisKK1RoZSBUT1VDSCBhbmQgV0lEVEggcGFyYW1ldGVycyBoYXZlIGEgZ2VvbWV0cmljYWwgaW50ZXJwcmV0YXRpb247IGltYWdpbmUKK2xvb2tpbmcgdGhyb3VnaCBhIHdpbmRvdyBhdCBzb21lb25lIGdlbnRseSBob2xkaW5nIGEgZmluZ2VyIGFnYWluc3QgdGhlCitnbGFzcy4gIFlvdSB3aWxsIHNlZSB0d28gcmVnaW9ucywgb25lIGlubmVyIHJlZ2lvbiBjb25zaXN0aW5nIG9mIHRoZSBwYXJ0CitvZiB0aGUgZmluZ2VyIGFjdHVhbGx5IHRvdWNoaW5nIHRoZSBnbGFzcywgYW5kIG9uZSBvdXRlciByZWdpb24gZm9ybWVkIGJ5Cit0aGUgcGVyaW1ldGVyIG9mIHRoZSBmaW5nZXIuIFRoZSBjZW50ZXIgb2YgdGhlIHRvdWNoaW5nIHJlZ2lvbiAoYSkgaXMKK0FCU19NVF9QT1NJVElPTl9YL1kgYW5kIHRoZSBjZW50ZXIgb2YgdGhlIGFwcHJvYWNoaW5nIGZpbmdlciAoYikgaXMKK0FCU19NVF9UT09MX1gvWS4gVGhlIHRvdWNoIGRpYW1ldGVyIGlzIEFCU19NVF9UT1VDSF9NQUpPUiBhbmQgdGhlIGZpbmdlcgorZGlhbWV0ZXIgaXMgQUJTX01UX1dJRFRIX01BSk9SLiBOb3cgaW1hZ2luZSB0aGUgcGVyc29uIHByZXNzaW5nIHRoZSBmaW5nZXIKK2hhcmRlciBhZ2FpbnN0IHRoZSBnbGFzcy4gVGhlIHRvdWNoIHJlZ2lvbiB3aWxsIGluY3JlYXNlLCBhbmQgaW4gZ2VuZXJhbCwKK3RoZSByYXRpbyBBQlNfTVRfVE9VQ0hfTUFKT1IgLyBBQlNfTVRfV0lEVEhfTUFKT1IsIHdoaWNoIGlzIGFsd2F5cyBzbWFsbGVyCit0aGFuIHVuaXR5LCBpcyByZWxhdGVkIHRvIHRoZSBjb250YWN0IHByZXNzdXJlLiBGb3IgcHJlc3N1cmUtYmFzZWQgZGV2aWNlcywKK0FCU19NVF9QUkVTU1VSRSBtYXkgYmUgdXNlZCB0byBwcm92aWRlIHRoZSBwcmVzc3VyZSBvbiB0aGUgY29udGFjdCBhcmVhCitpbnN0ZWFkLiBEZXZpY2VzIGNhcGFibGUgb2YgY29udGFjdCBob3ZlcmluZyBjYW4gdXNlIEFCU19NVF9ESVNUQU5DRSB0bworaW5kaWNhdGUgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGNvbnRhY3QgYW5kIHRoZSBzdXJmYWNlLgorCisKKwkgIExpbnV4IE1UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbjgKKyAgICAgICAgIF9fX19fX19fX18gICAgICAgICAgICAgICAgICAgICBfX19fX19fX19fX19fX19fX19fX19fXworICAgICAgICAvICAgICAgICAgIFwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgIC8gICAgICAgICAgICBcICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgLyAgICAgX19fXyAgICAgXCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAvICAgICAvICAgIFwgICAgIFwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICBcICAgICBcICBhICBcICAgICBcICAgICAgICAgICAgICAgfCAgICAgICBhICAgICAgICAgICAgICAgfAorICAgICAgXCAgICAgXF9fX18vICAgICAgXCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgIFwgICAgICAgICAgICAgICAgIFwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICBcICAgICAgICBiICAgICAgICBcICAgICAgICAgICAgfCAgICAgICAgICAgYiAgICAgICAgICAgfAorICAgICAgICAgXCAgICAgICAgICAgICAgICAgXCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgIFwgICAgICAgICAgICAgICAgIFwgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICBcICAgICAgICAgICAgICAgICBcICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgXCAgICAgICAgICAgICAgICAvICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgIFwgICAgICAgICAgICAgIC8gICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICBcICAgICAgICAgICAgLyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgXF9fX19fX19fX18vICAgICAgICAgICAgfF9fX19fX19fX19fX19fX19fX19fX19ffAorCisKK0luIGFkZGl0aW9uIHRvIHRoZSBNQUpPUiBwYXJhbWV0ZXJzLCB0aGUgb3ZhbCBzaGFwZSBvZiB0aGUgdG91Y2ggYW5kIGZpbmdlcgorcmVnaW9ucyBjYW4gYmUgZGVzY3JpYmVkIGJ5IGFkZGluZyB0aGUgTUlOT1IgcGFyYW1ldGVycywgc3VjaCB0aGF0IE1BSk9SCithbmQgTUlOT1IgYXJlIHRoZSBtYWpvciBhbmQgbWlub3IgYXhpcyBvZiBhbiBlbGxpcHNlLiBUaGUgb3JpZW50YXRpb24gb2YKK3RoZSB0b3VjaCBlbGxpcHNlIGNhbiBiZSBkZXNjcmliZWQgd2l0aCB0aGUgT1JJRU5UQVRJT04gcGFyYW1ldGVyLCBhbmQgdGhlCitkaXJlY3Rpb24gb2YgdGhlIGZpbmdlciBlbGxpcHNlIGlzIGdpdmVuIGJ5IHRoZSB2ZWN0b3IgKGEgLSBiKS4KKworRm9yIHR5cGUgQSBkZXZpY2VzLCBmdXJ0aGVyIHNwZWNpZmljYXRpb24gb2YgdGhlIHRvdWNoIHNoYXBlIGlzIHBvc3NpYmxlCit2aWEgQUJTX01UX0JMT0JfSUQuCisKK1RoZSBBQlNfTVRfVE9PTF9UWVBFIG1heSBiZSB1c2VkIHRvIHNwZWNpZnkgd2hldGhlciB0aGUgdG91Y2hpbmcgdG9vbCBpcyBhCitmaW5nZXIgb3IgYSBwZW4gb3Igc29tZXRoaW5nIGVsc2UuIEZpbmFsbHksIHRoZSBBQlNfTVRfVFJBQ0tJTkdfSUQgZXZlbnQKK21heSBiZSB1c2VkIHRvIHRyYWNrIGlkZW50aWZpZWQgY29udGFjdHMgb3ZlciB0aW1lIFs1XS4KKworSW4gdGhlIHR5cGUgQiBwcm90b2NvbCwgQUJTX01UX1RPT0xfVFlQRSBhbmQgQUJTX01UX1RSQUNLSU5HX0lEIGFyZQoraW1wbGljaXRseSBoYW5kbGVkIGJ5IGlucHV0IGNvcmU7IGRyaXZlcnMgc2hvdWxkIGluc3RlYWQgY2FsbAoraW5wdXRfbXRfcmVwb3J0X3Nsb3Rfc3RhdGUoKS4KKworCitFdmVudCBTZW1hbnRpY3MKKy0tLS0tLS0tLS0tLS0tLQorCitBQlNfTVRfVE9VQ0hfTUFKT1IKKworVGhlIGxlbmd0aCBvZiB0aGUgbWFqb3IgYXhpcyBvZiB0aGUgY29udGFjdC4gVGhlIGxlbmd0aCBzaG91bGQgYmUgZ2l2ZW4gaW4KK3N1cmZhY2UgdW5pdHMuIElmIHRoZSBzdXJmYWNlIGhhcyBhbiBYIHRpbWVzIFkgcmVzb2x1dGlvbiwgdGhlIGxhcmdlc3QKK3Bvc3NpYmxlIHZhbHVlIG9mIEFCU19NVF9UT1VDSF9NQUpPUiBpcyBzcXJ0KFheMiArIFleMiksIHRoZSBkaWFnb25hbCBbNF0uCisKK0FCU19NVF9UT1VDSF9NSU5PUgorCitUaGUgbGVuZ3RoLCBpbiBzdXJmYWNlIHVuaXRzLCBvZiB0aGUgbWlub3IgYXhpcyBvZiB0aGUgY29udGFjdC4gSWYgdGhlCitjb250YWN0IGlzIGNpcmN1bGFyLCB0aGlzIGV2ZW50IGNhbiBiZSBvbWl0dGVkIFs0XS4KKworQUJTX01UX1dJRFRIX01BSk9SCisKK1RoZSBsZW5ndGgsIGluIHN1cmZhY2UgdW5pdHMsIG9mIHRoZSBtYWpvciBheGlzIG9mIHRoZSBhcHByb2FjaGluZwordG9vbC4gVGhpcyBzaG91bGQgYmUgdW5kZXJzdG9vZCBhcyB0aGUgc2l6ZSBvZiB0aGUgdG9vbCBpdHNlbGYuIFRoZQorb3JpZW50YXRpb24gb2YgdGhlIGNvbnRhY3QgYW5kIHRoZSBhcHByb2FjaGluZyB0b29sIGFyZSBhc3N1bWVkIHRvIGJlIHRoZQorc2FtZSBbNF0uCisKK0FCU19NVF9XSURUSF9NSU5PUgorCitUaGUgbGVuZ3RoLCBpbiBzdXJmYWNlIHVuaXRzLCBvZiB0aGUgbWlub3IgYXhpcyBvZiB0aGUgYXBwcm9hY2hpbmcKK3Rvb2wuIE9taXQgaWYgY2lyY3VsYXIgWzRdLgorCitUaGUgYWJvdmUgZm91ciB2YWx1ZXMgY2FuIGJlIHVzZWQgdG8gZGVyaXZlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQKK3RoZSBjb250YWN0LiBUaGUgcmF0aW8gQUJTX01UX1RPVUNIX01BSk9SIC8gQUJTX01UX1dJRFRIX01BSk9SIGFwcHJveGltYXRlcwordGhlIG5vdGlvbiBvZiBwcmVzc3VyZS4gVGhlIGZpbmdlcnMgb2YgdGhlIGhhbmQgYW5kIHRoZSBwYWxtIGFsbCBoYXZlCitkaWZmZXJlbnQgY2hhcmFjdGVyaXN0aWMgd2lkdGhzLgorCitBQlNfTVRfUFJFU1NVUkUKKworVGhlIHByZXNzdXJlLCBpbiBhcmJpdHJhcnkgdW5pdHMsIG9uIHRoZSBjb250YWN0IGFyZWEuIE1heSBiZSB1c2VkIGluc3RlYWQKK29mIFRPVUNIIGFuZCBXSURUSCBmb3IgcHJlc3N1cmUtYmFzZWQgZGV2aWNlcyBvciBhbnkgZGV2aWNlIHdpdGggYSBzcGF0aWFsCitzaWduYWwgaW50ZW5zaXR5IGRpc3RyaWJ1dGlvbi4KKworQUJTX01UX0RJU1RBTkNFCisKK1RoZSBkaXN0YW5jZSwgaW4gc3VyZmFjZSB1bml0cywgYmV0d2VlbiB0aGUgY29udGFjdCBhbmQgdGhlIHN1cmZhY2UuIFplcm8KK2Rpc3RhbmNlIG1lYW5zIHRoZSBjb250YWN0IGlzIHRvdWNoaW5nIHRoZSBzdXJmYWNlLiBBIHBvc2l0aXZlIG51bWJlciBtZWFucwordGhlIGNvbnRhY3QgaXMgaG92ZXJpbmcgYWJvdmUgdGhlIHN1cmZhY2UuCisKK0FCU19NVF9PUklFTlRBVElPTgorCitUaGUgb3JpZW50YXRpb24gb2YgdGhlIHRvdWNoaW5nIGVsbGlwc2UuIFRoZSB2YWx1ZSBzaG91bGQgZGVzY3JpYmUgYSBzaWduZWQKK3F1YXJ0ZXIgb2YgYSByZXZvbHV0aW9uIGNsb2Nrd2lzZSBhcm91bmQgdGhlIHRvdWNoIGNlbnRlci4gVGhlIHNpZ25lZCB2YWx1ZQorcmFuZ2UgaXMgYXJiaXRyYXJ5LCBidXQgemVybyBzaG91bGQgYmUgcmV0dXJuZWQgZm9yIGFuIGVsbGlwc2UgYWxpZ25lZCB3aXRoCit0aGUgWSBheGlzIG9mIHRoZSBzdXJmYWNlLCBhIG5lZ2F0aXZlIHZhbHVlIHdoZW4gdGhlIGVsbGlwc2UgaXMgdHVybmVkIHRvCit0aGUgbGVmdCwgYW5kIGEgcG9zaXRpdmUgdmFsdWUgd2hlbiB0aGUgZWxsaXBzZSBpcyB0dXJuZWQgdG8gdGhlCityaWdodC4gV2hlbiBjb21wbGV0ZWx5IGFsaWduZWQgd2l0aCB0aGUgWCBheGlzLCB0aGUgcmFuZ2UgbWF4IHNob3VsZCBiZQorcmV0dXJuZWQuCisKK1RvdWNoIGVsbGlwc2lzIGFyZSBzeW1tZXRyaWNhbCBieSBkZWZhdWx0LiBGb3IgZGV2aWNlcyBjYXBhYmxlIG9mIHRydWUgMzYwCitkZWdyZWUgb3JpZW50YXRpb24sIHRoZSByZXBvcnRlZCBvcmllbnRhdGlvbiBtdXN0IGV4Y2VlZCB0aGUgcmFuZ2UgbWF4IHRvCitpbmRpY2F0ZSBtb3JlIHRoYW4gYSBxdWFydGVyIG9mIGEgcmV2b2x1dGlvbi4gRm9yIGFuIHVwc2lkZS1kb3duIGZpbmdlciwKK3JhbmdlIG1heCAqIDIgc2hvdWxkIGJlIHJldHVybmVkLgorCitPcmllbnRhdGlvbiBjYW4gYmUgb21pdHRlZCBpZiB0aGUgdG91Y2ggYXJlYSBpcyBjaXJjdWxhciwgb3IgaWYgdGhlCitpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBrZXJuZWwgZHJpdmVyLiBQYXJ0aWFsIG9yaWVudGF0aW9uCitzdXBwb3J0IGlzIHBvc3NpYmxlIGlmIHRoZSBkZXZpY2UgY2FuIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIHR3byBheGlzLCBidXQKK25vdCAodW5pcXVlbHkpIGFueSB2YWx1ZXMgaW4gYmV0d2Vlbi4gSW4gc3VjaCBjYXNlcywgdGhlIHJhbmdlIG9mCitBQlNfTVRfT1JJRU5UQVRJT04gc2hvdWxkIGJlIFswLCAxXSBbNF0uCisKK0FCU19NVF9QT1NJVElPTl9YCisKK1RoZSBzdXJmYWNlIFggY29vcmRpbmF0ZSBvZiB0aGUgY2VudGVyIG9mIHRoZSB0b3VjaGluZyBlbGxpcHNlLgorCitBQlNfTVRfUE9TSVRJT05fWQorCitUaGUgc3VyZmFjZSBZIGNvb3JkaW5hdGUgb2YgdGhlIGNlbnRlciBvZiB0aGUgdG91Y2hpbmcgZWxsaXBzZS4KKworQUJTX01UX1RPT0xfWAorCitUaGUgc3VyZmFjZSBYIGNvb3JkaW5hdGUgb2YgdGhlIGNlbnRlciBvZiB0aGUgYXBwcm9hY2hpbmcgdG9vbC4gT21pdCBpZgordGhlIGRldmljZSBjYW5ub3QgZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgaW50ZW5kZWQgdG91Y2ggcG9pbnQgYW5kIHRoZQordG9vbCBpdHNlbGYuCisKK0FCU19NVF9UT09MX1kKKworVGhlIHN1cmZhY2UgWSBjb29yZGluYXRlIG9mIHRoZSBjZW50ZXIgb2YgdGhlIGFwcHJvYWNoaW5nIHRvb2wuIE9taXQgaWYgdGhlCitkZXZpY2UgY2Fubm90IGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIGludGVuZGVkIHRvdWNoIHBvaW50IGFuZCB0aGUgdG9vbAoraXRzZWxmLgorCitUaGUgZm91ciBwb3NpdGlvbiB2YWx1ZXMgY2FuIGJlIHVzZWQgdG8gc2VwYXJhdGUgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b3VjaAorZnJvbSB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2wuIElmIGJvdGggcG9zaXRpb25zIGFyZSBwcmVzZW50LCB0aGUgbWFqb3IKK3Rvb2wgYXhpcyBwb2ludHMgdG93YXJkcyB0aGUgdG91Y2ggcG9pbnQgWzFdLiBPdGhlcndpc2UsIHRoZSB0b29sIGF4ZXMgYXJlCithbGlnbmVkIHdpdGggdGhlIHRvdWNoIGF4ZXMuCisKK0FCU19NVF9UT09MX1RZUEUKKworVGhlIHR5cGUgb2YgYXBwcm9hY2hpbmcgdG9vbC4gQSBsb3Qgb2Yga2VybmVsIGRyaXZlcnMgY2Fubm90IGRpc3Rpbmd1aXNoCitiZXR3ZWVuIGRpZmZlcmVudCB0b29sIHR5cGVzLCBzdWNoIGFzIGEgZmluZ2VyIG9yIGEgcGVuLiBJbiBzdWNoIGNhc2VzLCB0aGUKK2V2ZW50IHNob3VsZCBiZSBvbWl0dGVkLiBUaGUgcHJvdG9jb2wgY3VycmVudGx5IHN1cHBvcnRzIE1UX1RPT0xfRklOR0VSLAorTVRfVE9PTF9QRU4sIGFuZCBNVF9UT09MX1BBTE0gWzJdLiBGb3IgdHlwZSBCIGRldmljZXMsIHRoaXMgZXZlbnQgaXMgaGFuZGxlZAorYnkgaW5wdXQgY29yZTsgZHJpdmVycyBzaG91bGQgaW5zdGVhZCB1c2UgaW5wdXRfbXRfcmVwb3J0X3Nsb3Rfc3RhdGUoKS4KK0EgY29udGFjdCdzIEFCU19NVF9UT09MX1RZUEUgbWF5IGNoYW5nZSBvdmVyIHRpbWUgd2hpbGUgc3RpbGwgdG91Y2hpbmcgdGhlCitkZXZpY2UsIGJlY2F1c2UgdGhlIGZpcm13YXJlIG1heSBub3QgYmUgYWJsZSB0byBkZXRlcm1pbmUgd2hpY2ggdG9vbCBpcyBiZWluZwordXNlZCB3aGVuIGl0IGZpcnN0IGFwcGVhcnMuCisKK0FCU19NVF9CTE9CX0lECisKK1RoZSBCTE9CX0lEIGdyb3VwcyBzZXZlcmFsIHBhY2tldHMgdG9nZXRoZXIgaW50byBvbmUgYXJiaXRyYXJpbHkgc2hhcGVkCitjb250YWN0LiBUaGUgc2VxdWVuY2Ugb2YgcG9pbnRzIGZvcm1zIGEgcG9seWdvbiB3aGljaCBkZWZpbmVzIHRoZSBzaGFwZSBvZgordGhlIGNvbnRhY3QuIFRoaXMgaXMgYSBsb3ctbGV2ZWwgYW5vbnltb3VzIGdyb3VwaW5nIGZvciB0eXBlIEEgZGV2aWNlcywgYW5kCitzaG91bGQgbm90IGJlIGNvbmZ1c2VkIHdpdGggdGhlIGhpZ2gtbGV2ZWwgdHJhY2tpbmdJRCBbNV0uIE1vc3QgdHlwZSBBCitkZXZpY2VzIGRvIG5vdCBoYXZlIGJsb2IgY2FwYWJpbGl0eSwgc28gZHJpdmVycyBjYW4gc2FmZWx5IG9taXQgdGhpcyBldmVudC4KKworQUJTX01UX1RSQUNLSU5HX0lECisKK1RoZSBUUkFDS0lOR19JRCBpZGVudGlmaWVzIGFuIGluaXRpYXRlZCBjb250YWN0IHRocm91Z2hvdXQgaXRzIGxpZmUgY3ljbGUKK1s1XS4gVGhlIHZhbHVlIHJhbmdlIG9mIHRoZSBUUkFDS0lOR19JRCBzaG91bGQgYmUgbGFyZ2UgZW5vdWdoIHRvIGVuc3VyZQordW5pcXVlIGlkZW50aWZpY2F0aW9uIG9mIGEgY29udGFjdCBtYWludGFpbmVkIG92ZXIgYW4gZXh0ZW5kZWQgcGVyaW9kIG9mCit0aW1lLiBGb3IgdHlwZSBCIGRldmljZXMsIHRoaXMgZXZlbnQgaXMgaGFuZGxlZCBieSBpbnB1dCBjb3JlOyBkcml2ZXJzCitzaG91bGQgaW5zdGVhZCB1c2UgaW5wdXRfbXRfcmVwb3J0X3Nsb3Rfc3RhdGUoKS4KKworCitFdmVudCBDb21wdXRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZsb3JhIG9mIGRpZmZlcmVudCBoYXJkd2FyZSB1bmF2b2lkYWJseSBsZWFkcyB0byBzb21lIGRldmljZXMgZml0dGluZworYmV0dGVyIHRvIHRoZSBNVCBwcm90b2NvbCB0aGFuIG90aGVycy4gVG8gc2ltcGxpZnkgYW5kIHVuaWZ5IHRoZSBtYXBwaW5nLAordGhpcyBzZWN0aW9uIGdpdmVzIHJlY2lwZXMgZm9yIGhvdyB0byBjb21wdXRlIGNlcnRhaW4gZXZlbnRzLgorCitGb3IgZGV2aWNlcyByZXBvcnRpbmcgY29udGFjdHMgYXMgcmVjdGFuZ3VsYXIgc2hhcGVzLCBzaWduZWQgb3JpZW50YXRpb24KK2Nhbm5vdCBiZSBvYnRhaW5lZC4gQXNzdW1pbmcgWCBhbmQgWSBhcmUgdGhlIGxlbmd0aHMgb2YgdGhlIHNpZGVzIG9mIHRoZQordG91Y2hpbmcgcmVjdGFuZ2xlLCBoZXJlIGlzIGEgc2ltcGxlIGZvcm11bGEgdGhhdCByZXRhaW5zIHRoZSBtb3N0CitpbmZvcm1hdGlvbiBwb3NzaWJsZToKKworICAgQUJTX01UX1RPVUNIX01BSk9SIDo9IG1heChYLCBZKQorICAgQUJTX01UX1RPVUNIX01JTk9SIDo9IG1pbihYLCBZKQorICAgQUJTX01UX09SSUVOVEFUSU9OIDo9IGJvb2woWCA+IFkpCisKK1RoZSByYW5nZSBvZiBBQlNfTVRfT1JJRU5UQVRJT04gc2hvdWxkIGJlIHNldCB0byBbMCwgMV0sIHRvIGluZGljYXRlIHRoYXQKK3RoZSBkZXZpY2UgY2FuIGRpc3Rpbmd1aXNoIGJldHdlZW4gYSBmaW5nZXIgYWxvbmcgdGhlIFkgYXhpcyAoMCkgYW5kIGEKK2ZpbmdlciBhbG9uZyB0aGUgWCBheGlzICgxKS4KKworRm9yIHdpbjggZGV2aWNlcyB3aXRoIGJvdGggVCBhbmQgQyBjb29yZGluYXRlcywgdGhlIHBvc2l0aW9uIG1hcHBpbmcgaXMKKworICAgQUJTX01UX1BPU0lUSU9OX1ggOj0gVF9YCisgICBBQlNfTVRfUE9TSVRJT05fWSA6PSBUX1kKKyAgIEFCU19NVF9UT09MX1ggOj0gQ19YCisgICBBQlNfTVRfVE9PTF9ZIDo9IENfWQorCitVbmZvcnR1bmF0ZWx5LCB0aGVyZSBpcyBub3QgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHNwZWNpZnkgYm90aCB0aGUgdG91Y2hpbmcKK2VsbGlwc2UgYW5kIHRoZSB0b29sIGVsbGlwc2UsIHNvIG9uZSBoYXMgdG8gcmVzb3J0IHRvIGFwcHJveGltYXRpb25zLiAgT25lCitzaW1wbGUgc2NoZW1lLCB3aGljaCBpcyBjb21wYXRpYmxlIHdpdGggZWFybGllciB1c2FnZSwgaXM6CisKKyAgIEFCU19NVF9UT1VDSF9NQUpPUiA6PSBtaW4oWCwgWSkKKyAgIEFCU19NVF9UT1VDSF9NSU5PUiA6PSA8bm90IHVzZWQ+CisgICBBQlNfTVRfT1JJRU5UQVRJT04gOj0gPG5vdCB1c2VkPgorICAgQUJTX01UX1dJRFRIX01BSk9SIDo9IG1pbihYLCBZKSArIGRpc3RhbmNlKFQsIEMpCisgICBBQlNfTVRfV0lEVEhfTUlOT1IgOj0gbWluKFgsIFkpCisKK1JhdGlvbmFsZTogV2UgaGF2ZSBubyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3JpZW50YXRpb24gb2YgdGhlIHRvdWNoaW5nCitlbGxpcHNlLCBzbyBhcHByb3hpbWF0ZSBpdCB3aXRoIGFuIGluc2NyaWJlZCBjaXJjbGUgaW5zdGVhZC4gVGhlIHRvb2wKK2VsbGlwc2Ugc2hvdWxkIGFsaWduIHdpdGggdGhlIHZlY3RvciAoVCAtIEMpLCBzbyB0aGUgZGlhbWV0ZXIgbXVzdAoraW5jcmVhc2Ugd2l0aCBkaXN0YW5jZShULCBDKS4gRmluYWxseSwgYXNzdW1lIHRoYXQgdGhlIHRvdWNoIGRpYW1ldGVyIGlzCitlcXVhbCB0byB0aGUgdG9vbCB0aGlja25lc3MsIGFuZCB3ZSBhcnJpdmUgYXQgdGhlIGZvcm11bGFzIGFib3ZlLgorCitGaW5nZXIgVHJhY2tpbmcKKy0tLS0tLS0tLS0tLS0tLQorCitUaGUgcHJvY2VzcyBvZiBmaW5nZXIgdHJhY2tpbmcsIGkuZS4sIHRvIGFzc2lnbiBhIHVuaXF1ZSB0cmFja2luZ0lEIHRvIGVhY2gKK2luaXRpYXRlZCBjb250YWN0IG9uIHRoZSBzdXJmYWNlLCBpcyBhIEV1Y2xpZGlhbiBCaXBhcnRpdGUgTWF0Y2hpbmcKK3Byb2JsZW0uICBBdCBlYWNoIGV2ZW50IHN5bmNocm9uaXphdGlvbiwgdGhlIHNldCBvZiBhY3R1YWwgY29udGFjdHMgaXMKK21hdGNoZWQgdG8gdGhlIHNldCBvZiBjb250YWN0cyBmcm9tIHRoZSBwcmV2aW91cyBzeW5jaHJvbml6YXRpb24uIEEgZnVsbAoraW1wbGVtZW50YXRpb24gY2FuIGJlIGZvdW5kIGluIFszXS4KKworCitHZXN0dXJlcworLS0tLS0tLS0KKworSW4gdGhlIHNwZWNpZmljIGFwcGxpY2F0aW9uIG9mIGNyZWF0aW5nIGdlc3R1cmUgZXZlbnRzLCB0aGUgVE9VQ0ggYW5kIFdJRFRICitwYXJhbWV0ZXJzIGNhbiBiZSB1c2VkIHRvLCBlLmcuLCBhcHByb3hpbWF0ZSBmaW5nZXIgcHJlc3N1cmUgb3IgZGlzdGluZ3Vpc2gKK2JldHdlZW4gaW5kZXggZmluZ2VyIGFuZCB0aHVtYi4gV2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlIE1JTk9SIHBhcmFtZXRlcnMsCitvbmUgY2FuIGFsc28gZGlzdGluZ3Vpc2ggYmV0d2VlbiBhIHN3ZWVwaW5nIGZpbmdlciBhbmQgYSBwb2ludGluZyBmaW5nZXIsCithbmQgd2l0aCBPUklFTlRBVElPTiwgb25lIGNhbiBkZXRlY3QgdHdpc3Rpbmcgb2YgZmluZ2Vycy4KKworCitOb3RlcworLS0tLS0KKworSW4gb3JkZXIgdG8gc3RheSBjb21wYXRpYmxlIHdpdGggZXhpc3RpbmcgYXBwbGljYXRpb25zLCB0aGUgZGF0YSByZXBvcnRlZAoraW4gYSBmaW5nZXIgcGFja2V0IG11c3Qgbm90IGJlIHJlY29nbml6ZWQgYXMgc2luZ2xlLXRvdWNoIGV2ZW50cy4KKworRm9yIHR5cGUgQSBkZXZpY2VzLCBhbGwgZmluZ2VyIGRhdGEgYnlwYXNzZXMgaW5wdXQgZmlsdGVyaW5nLCBzaW5jZQorc3Vic2VxdWVudCBldmVudHMgb2YgdGhlIHNhbWUgdHlwZSByZWZlciB0byBkaWZmZXJlbnQgZmluZ2Vycy4KKworRm9yIGV4YW1wbGUgdXNhZ2Ugb2YgdGhlIHR5cGUgQSBwcm90b2NvbCwgc2VlIHRoZSBiY201OTc0IGRyaXZlci4gRm9yCitleGFtcGxlIHVzYWdlIG9mIHRoZSB0eXBlIEIgcHJvdG9jb2wsIHNlZSB0aGUgaGlkLWVnYWxheCBkcml2ZXIuCisKK1sxXSBBbHNvLCB0aGUgZGlmZmVyZW5jZSAoVE9PTF9YIC0gUE9TSVRJT05fWCkgY2FuIGJlIHVzZWQgdG8gbW9kZWwgdGlsdC4KK1syXSBUaGUgbGlzdCBjYW4gb2YgY291cnNlIGJlIGV4dGVuZGVkLgorWzNdIFRoZSBtdGRldiBwcm9qZWN0OiBodHRwOi8vYml0bWF0aC5vcmcvY29kZS9tdGRldi8uCitbNF0gU2VlIHRoZSBzZWN0aW9uIG9uIGV2ZW50IGNvbXB1dGF0aW9uLgorWzVdIFNlZSB0aGUgc2VjdGlvbiBvbiBmaW5nZXIgdHJhY2tpbmcuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lucHV0L25vdGlmaWVyLnR4dCBiL0RvY3VtZW50YXRpb24vaW5wdXQvbm90aWZpZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1MTcyY2EKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lucHV0L25vdGlmaWVyLnR4dApAQCAtMCwwICsxLDUyIEBACitLZXlib2FyZCBub3RpZmllcgorCitPbmUgY2FuIHVzZSByZWdpc3Rlcl9rZXlib2FyZF9ub3RpZmllciB0byBnZXQgY2FsbGVkIGJhY2sgb24ga2V5Ym9hcmQKK2V2ZW50cyAoc2VlIGtiZF9rZXljb2RlKCkgZnVuY3Rpb24gZm9yIGRldGFpbHMpLiAgVGhlIHBhc3NlZCBzdHJ1Y3R1cmUgaXMKK2tleWJvYXJkX25vdGlmaWVyX3BhcmFtOgorCistICd2YycgYWx3YXlzIHByb3ZpZGUgdGhlIFZDIGZvciB3aGljaCB0aGUga2V5Ym9hcmQgZXZlbnQgYXBwbGllczsKKy0gJ2Rvd24nIGlzIDEgZm9yIGEga2V5IHByZXNzIGV2ZW50LCAwIGZvciBhIGtleSByZWxlYXNlOworLSAnc2hpZnQnIGlzIHRoZSBjdXJyZW50IG1vZGlmaWVyIHN0YXRlLCBtYXNrIGJpdCBpbmRleGVzIGFyZSBLR18qOworLSAndmFsdWUnIGRlcGVuZHMgb24gdGhlIHR5cGUgb2YgZXZlbnQuCisKKy0gS0JEX0tFWUNPREUgZXZlbnRzIGFyZSBhbHdheXMgc2VudCBiZWZvcmUgb3RoZXIgZXZlbnRzLCB2YWx1ZSBpcyB0aGUga2V5Y29kZS4KKy0gS0JEX1VOQk9VTkRfS0VZQ09ERSBldmVudHMgYXJlIHNlbnQgaWYgdGhlIGtleWNvZGUgaXMgbm90IGJvdW5kIHRvIGEga2V5c3ltLgorICB2YWx1ZSBpcyB0aGUga2V5Y29kZS4KKy0gS0JEX1VOSUNPREUgZXZlbnRzIGFyZSBzZW50IGlmIHRoZSBrZXljb2RlIC0+IGtleXN5bSB0cmFuc2xhdGlvbiBwcm9kdWNlZCBhCisgIHVuaWNvZGUgY2hhcmFjdGVyLiB2YWx1ZSBpcyB0aGUgdW5pY29kZSB2YWx1ZS4KKy0gS0JEX0tFWVNZTSBldmVudHMgYXJlIHNlbnQgaWYgdGhlIGtleWNvZGUgLT4ga2V5c3ltIHRyYW5zbGF0aW9uIHByb2R1Y2VkIGEKKyAgbm9uLXVuaWNvZGUgY2hhcmFjdGVyLiB2YWx1ZSBpcyB0aGUga2V5c3ltLgorLSBLQkRfUE9TVF9LRVlTWU0gZXZlbnRzIGFyZSBzZW50IGFmdGVyIHRoZSB0cmVhdG1lbnQgb2Ygbm9uLXVuaWNvZGUga2V5c3ltcy4KKyAgVGhhdCBwZXJtaXRzIG9uZSB0byBpbnNwZWN0IHRoZSByZXN1bHRpbmcgTEVEcyBmb3IgaW5zdGFuY2UuCisKK0ZvciBlYWNoIGtpbmQgb2YgZXZlbnQgYnV0IHRoZSBsYXN0LCB0aGUgY2FsbGJhY2sgbWF5IHJldHVybiBOT1RJRllfU1RPUCBpbgorb3JkZXIgdG8gImVhdCIgdGhlIGV2ZW50OiB0aGUgbm90aWZ5IGxvb3AgaXMgc3RvcHBlZCBhbmQgdGhlIGtleWJvYXJkIGV2ZW50IGlzCitkcm9wcGVkLgorCitJbiBhIHJvdWdoIEMgc25pcHBldCwgd2UgaGF2ZToKKwora2JkX2tleWNvZGUoa2V5Y29kZSkgeworCS4uLgorCXBhcmFtcy52YWx1ZSA9IGtleWNvZGU7CisJaWYgKG5vdGlmaWVyX2NhbGxfY2hhaW4oS0JEX0tFWUNPREUsJnBhcmFtcykgPT0gTk9USUZZX1NUT1ApCisJICAgIHx8ICFib3VuZCkgeworCQlub3RpZmllcl9jYWxsX2NoYWluKEtCRF9VTkJPVU5EX0tFWUNPREUsJnBhcmFtcyk7CisJCXJldHVybjsKKwl9CisKKwlpZiAodW5pY29kZSkgeworCQlwYXJhbS52YWx1ZSA9IHVuaWNvZGU7CisJCWlmIChub3RpZmllcl9jYWxsX2NoYWluKEtCRF9VTklDT0RFLCZwYXJhbXMpID09IE5PVElGWV9TVE9QKQorCQkJcmV0dXJuOworCQllbWl0IHVuaWNvZGU7CisJCXJldHVybjsKKwl9CisKKwlwYXJhbXMudmFsdWUgPSBrZXlzeW07CisJaWYgKG5vdGlmaWVyX2NhbGxfY2hhaW4oS0JEX0tFWVNZTSwmcGFyYW1zKSA9PSBOT1RJRllfU1RPUCkKKwkJcmV0dXJuOworCWFwcGx5IGtleXN5bTsKKwlub3RpZmllcl9jYWxsX2NoYWluKEtCRF9QT1NUX0tFWVNZTSwmcGFyYW1zKTsKK30KKworTk9URTogVGhpcyBub3RpZmllciBpcyB1c3VhbGx5IGNhbGxlZCBmcm9tIGludGVycnVwdCBjb250ZXh0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pbnB1dC9udHJpZy50eHQgYi9Eb2N1bWVudGF0aW9uL2lucHV0L250cmlnLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTFmZDk4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9udHJpZy50eHQKQEAgLTAsMCArMSwxMjYgQEAKK04tVHJpZyB0b3VjaHNjcmVlbiBEcml2ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMCBSYWZpIFJ1YmluIDxyYWZpQHNlYXMudXBlbm4uZWR1PgorCUNvcHlyaWdodCAoYykgMjAwOS0yMDEwIFN0ZXBoYW5lIENoYXR0eQorCitUaGlzIGRyaXZlciBwcm92aWRlcyBzdXBwb3J0IGZvciBOLVRyaWcgcGVuIGFuZCBtdWx0aS10b3VjaCBzZW5zb3JzLiAgU2luZ2xlCithbmQgbXVsdGktdG91Y2ggZXZlbnRzIGFyZSB0cmFuc2xhdGVkIHRvIHRoZSBhcHByb3ByaWF0ZSBwcm90b2NvbHMgZm9yCit0aGUgaGlkIGFuZCBpbnB1dCBzeXN0ZW1zLiAgUGVuIGV2ZW50cyBhcmUgc3VmZmljaWVudGx5IGhpZCBjb21wbGlhbnQgYW5kCithcmUgbGVmdCB0byB0aGUgaGlkIGNvcmUuICBUaGUgZHJpdmVyIGFsc28gcHJvdmlkZXMgYWRkaXRpb25hbCBmaWx0ZXJpbmcKK2FuZCB1dGlsaXR5IGZ1bmN0aW9ucyBhY2Nlc3NpYmxlIHdpdGggc3lzZnMgYW5kIG1vZHVsZSBwYXJhbWV0ZXJzLgorCitUaGlzIGRyaXZlciBoYXMgYmVlbiByZXBvcnRlZCB0byB3b3JrIHByb3Blcmx5IHdpdGggbXVsdGlwbGUgTi1UcmlnIGRldmljZXMKK2F0dGFjaGVkLgorCisKK1BhcmFtZXRlcnMKKy0tLS0tLS0tLS0KKworTm90ZTogdmFsdWVzIHNldCBhdCBsb2FkIHRpbWUgYXJlIGdsb2JhbCBhbmQgd2lsbCBhcHBseSB0byBhbGwgYXBwbGljYWJsZQorZGV2aWNlcy4gIEFkanVzdGluZyBwYXJhbWV0ZXJzIHdpdGggc3lzZnMgd2lsbCBvdmVycmlkZSB0aGUgbG9hZCB0aW1lIHZhbHVlcywKK2J1dCBvbmx5IGZvciB0aGF0IG9uZSBkZXZpY2UuCisKK1RoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBhcmUgdXNlZCB0byBjb25maWd1cmUgZmlsdGVycyB0byByZWR1Y2Ugbm9pc2U6CisKK2FjdGl2YXRlX3NsYWNrCQludW1iZXIgb2YgZmluZ2VycyB0byBpZ25vcmUgYmVmb3JlIHByb2Nlc3NpbmcgZXZlbnRzCisKK2FjdGl2YXRpb25faGVpZ2h0CXNpemUgdGhyZXNob2xkIHRvIGFjdGl2YXRlIGltbWVkaWF0ZWx5CithY3RpdmF0aW9uX3dpZHRoCisKK21pbl9oZWlnaHQJCXNpemUgdGhyZXNob2xkIGJlbGxvdyB3aGljaCBmaW5nZXJzIGFyZSBpZ25vcmVkCittaW5fd2lkdGgJCWJvdGggdG8gZGVjaWRlIGFjdGl2YXRpb24gYW5kIGR1cmluZyBhY3Rpdml0eQorCitkZWFjdGl2YXRlX3NsYWNrCXRoZSBudW1iZXIgb2YgIm5vIGNvbnRhY3QiIGZyYW1lcyB0byBpZ25vcmUgYmVmb3JlCisJCQlwcm9wYWdhdGluZyB0aGUgZW5kIG9mIGFjdGl2aXR5IGV2ZW50cworCitXaGVuIHRoZSBsYXN0IGZpbmdlciBpcyByZW1vdmVkIGZyb20gdGhlIGRldmljZSwgaXQgc2VuZHMgYSBudW1iZXIgb2YgZW1wdHkKK2ZyYW1lcy4gIEJ5IGhvbGRpbmcgb2ZmIG9uIGRlYWN0aXZhdGlvbiBmb3IgYSBmZXcgZnJhbWVzIHdlIGNhbiB0b2xlcmF0ZSBmYWxzZQorZXJyb25lb3VzIGRpc2Nvbm5lY3RzLCB3aGVyZSB0aGUgc2Vuc29yIG1heSBtaXN0YWtlbmx5IG5vdCBkZXRlY3QgYSBmaW5nZXIgdGhhdAoraXMgc3RpbGwgcHJlc2VudC4gIFRodXMgZGVhY3RpdmF0ZV9zbGFjayBhZGRyZXNzZXMgcHJvYmxlbXMgd2hlcmUgYSB1c2VycyBtaWdodAorc2VlIGJyZWFrcyBpbiBsaW5lcyBkdXJpbmcgZHJhd2luZywgb3IgZHJvcCBhbiBvYmplY3QgZHVyaW5nIGEgbG9uZyBkcmFnLgorCisKK0FkZGl0aW9uYWwgc3lzZnMgaXRlbXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlc2Ugbm9kZXMganVzdCBwcm92aWRlIGVhc3kgYWNjZXNzIHRvIHRoZSByYW5nZXMgcmVwb3J0ZWQgYnkgdGhlIGRldmljZS4KK3NlbnNvcl9sb2dpY2FsX2hlaWdodAl0aGUgcmFuZ2UgZm9yIHBvc2l0aW9ucyByZXBvcnRlZCBkdXJpbmcgYWN0aXZpdHkKK3NlbnNvcl9sb2dpY2FsX3dpZHRoCisKK3NlbnNvcl9waHlzaWNhbF9oZWlnaHQJaW50ZXJuYWwgcmFuZ2VzIG5vdCB1c2VkIGZvciBub3JtYWwgZXZlbnRzIGJ1dAorc2Vuc29yX3BoeXNpY2FsX3dpZHRoCXVzZWZ1bCBmb3IgdHVuaW5nCisKK0FsbCBOLVRyaWcgZGV2aWNlcyB3aXRoIHByb2R1Y3QgaWQgb2YgMSByZXBvcnQgZXZlbnRzIGluIHRoZSByYW5nZXMgb2YKK1g6IDAtOTYwMAorWTogMC03MjAwCitIb3dldmVyIG5vdCBhbGwgb2YgdGhlc2UgZGV2aWNlcyBoYXZlIHRoZSBzYW1lIHBoeXNpY2FsIGRpbWVuc2lvbnMuICBNb3N0CitzZWVtIHRvIGJlIDEyIiBzZW5zb3JzIChEZWxsIExhdGl0dWRlIFhUIGFuZCBYVDIgYW5kIHRoZSBIUCBUWDIpLCBhbmQKK2F0IGxlYXN0IG9uZSBtb2RlbCAoRGVsbCBTdHVkaW8gMTcpIGhhcyBhIDE3IiBzZW5zb3IuICBUaGUgcmF0aW8gb2YgcGh5c2ljYWwKK3RvIGxvZ2ljYWwgc2l6ZXMgaXMgdXNlZCB0byBhZGp1c3QgdGhlIHNpemUgYmFzZWQgZmlsdGVyIHBhcmFtZXRlcnMuCisKKworRmlsdGVyaW5nCistLS0tLS0tLS0KKworV2l0aCB0aGUgcmVsZWFzZSBvZiB0aGUgZWFybHkgbXVsdGktdG91Y2ggZmlybXdhcmVzIGl0IGJlY2FtZSBpbmNyZWFzaW5nbHkKK29idmlvdXMgdGhhdCB0aGVzZSBzZW5zb3JzIHdlcmUgcHJvbmUgdG8gZXJyb25lb3VzIGV2ZW50cy4gIFVzZXJzIHJlcG9ydGVkCitzZWVpbmcgYm90aCBpbmFwcHJvcHJpYXRlbHkgZHJvcHBlZCBjb250YWN0IGFuZCBnaG9zdHMsIGNvbnRhY3RzIHJlcG9ydGVkCit3aGVyZSBubyBmaW5nZXIgd2FzIGFjdHVhbGx5IHRvdWNoaW5nIHRoZSBzY3JlZW4uCisKK0RlYWN0aXZhdGlvbiBzbGFjayBoZWxwcyBwcmV2ZW50IGRyb3BwZWQgY29udGFjdCBmb3Igc2luZ2xlIHRvdWNoIHVzZSwgYnV0IGRvZXMKK25vdCBhZGRyZXNzIHRoZSBwcm9ibGVtIG9mIGRyb3BwaW5nIG9uZSBvZiBtb3JlIGNvbnRhY3RzIHdoaWxlIG90aGVyIGNvbnRhY3RzCithcmUgc3RpbGwgYWN0aXZlLiAgRHJvcHMgaW4gdGhlIG11bHRpLXRvdWNoIGNvbnRleHQgcmVxdWlyZSBhZGRpdGlvbmFsCitwcm9jZXNzaW5nIGFuZCBzaG91bGQgYmUgaGFuZGxlZCBpbiB0YW5kZW0gd2l0aCB0YWNraW5nLgorCitBcyBvYnNlcnZlZCBnaG9zdCBjb250YWN0cyBhcmUgc2ltaWxhciB0byBhY3R1YWwgdXNlIG9mIHRoZSBzZW5zb3IsIGJ1dCB0aGV5CitzZWVtIHRvIGhhdmUgZGlmZmVyZW50IHByb2ZpbGVzLiAgR2hvc3QgYWN0aXZpdHkgdHlwaWNhbGx5IHNob3dzIHVwIGFzIHNtYWxsCitzaG9ydCBsaXZlZCB0b3VjaGVzLiAgQXMgc3VjaCwgSSBhc3N1bWUgdGhhdCB0aGUgbG9uZ2VyIHRoZSBjb250aW51b3VzIHN0cmVhbQorb2YgZXZlbnRzIHRoZSBtb3JlIGxpa2VseSB0aG9zZSBldmVudHMgYXJlIGZyb20gYSByZWFsIGNvbnRhY3QsIGFuZCB0aGF0IHRoZQorbGFyZ2VyIHRoZSBzaXplIG9mIGVhY2ggY29udGFjdCB0aGUgbW9yZSBsaWtlbHkgaXQgaXMgcmVhbC4gIEJhbGFuY2luZyB0aGUKK2dvYWxzIG9mIHByZXZlbnRpbmcgZ2hvc3RzIGFuZCBhY2NlcHRpbmcgcmVhbCBldmVudHMgcXVpY2tseSAodG8gbWluaW1pemUKK3VzZXIgb2JzZXJ2YWJsZSBsYXRlbmN5KSwgdGhlIGZpbHRlciBhY2N1bXVsYXRlcyBjb25maWRlbmNlIGZvciBpbmNvbWluZworZXZlbnRzIHVudGlsIGl0IGhpdHMgdGhyZXNob2xkcyBhbmQgYmVnaW5zIHByb3BhZ2F0aW5nLiAgSW4gdGhlIGludGVyZXN0IGluCittaW5pbWl6aW5nIHN0b3JlZCBzdGF0ZSBhcyB3ZWxsIGFzIHRoZSBjb3N0IG9mIG9wZXJhdGlvbnMgdG8gbWFrZSBhIGRlY2lzaW9uLAorSSd2ZSBrZXB0IHRoYXQgZGVjaXNpb24gc2ltcGxlLgorCitUaW1lIGlzIG1lYXN1cmVkIGluIHRlcm1zIG9mIHRoZSBudW1iZXIgb2YgZmluZ2VycyByZXBvcnRlZCwgbm90IGZyYW1lcyBzaW5jZQordGhlIHByb2JhYmlsaXR5IG9mIG11bHRpcGxlIHNpbXVsdGFuZW91cyBnaG9zdHMgaXMgZXhwZWN0ZWQgdG8gZHJvcCBvZmYKK2RyYW1hdGljYWxseSB3aXRoIGluY3JlYXNpbmcgbnVtYmVycy4gIFJhdGhlciB0aGFuIGFjY3VtdWxhdGUgd2VpZ2h0IGFzIGEKK2Z1bmN0aW9uIG9mIHNpemUsIEkganVzdCB1c2UgaXQgYXMgYSBiaW5hcnkgdGhyZXNob2xkLiAgQSBzdWZmaWNpZW50bHkgbGFyZ2UKK2NvbnRhY3QgaW1tZWRpYXRlbHkgb3ZlcnJpZGVzIHRoZSB3YWl0aW5nIHBlcmlvZCBhbmQgbGVhZHMgdG8gYWN0aXZhdGlvbi4KKworU2V0dGluZyB0aGUgYWN0aXZhdGlvbiBzaXplIHRocmVzaG9sZHMgdG8gbGFyZ2UgdmFsdWVzIHdpbGwgcmVzdWx0IGluIGRlY2lkaW5nCitwcmltYXJpbHkgb24gYWN0aXZhdGlvbiBzbGFjay4gIElmIHlvdSBzZWUgbG9uZ2VyIGxpdmVkIGdob3N0cywgdHVybmluZyB1cCB0aGUKK2FjdGl2YXRpb24gc2xhY2sgd2hpbGUgcmVkdWNpbmcgdGhlIHNpemUgdGhyZXNob2xkcyBtYXkgc3VmZmljZSB0byBlbGltaW5hdGUKK3RoZSBnaG9zdHMgd2hpbGUga2VlcGluZyB0aGUgc2NyZWVuIHF1aXRlIHJlc3BvbnNpdmUgdG8gZmlybSB0YXBzLgorCitDb250YWN0cyBjb250aW51ZSB0byBiZSBmaWx0ZXJlZCB3aXRoIG1pbl9oZWlnaHQgYW5kIG1pbl93aWR0aCBldmVuIGFmdGVyCit0aGUgaW5pdGlhbCBhY3RpdmF0aW9uIGZpbHRlciBpcyBzYXRpc2ZpZWQuICBUaGUgaW50ZW50IGlzIHRvIHByb3ZpZGUKK2EgbWVjaGFuaXNtIGZvciBmaWx0ZXJpbmcgb3V0IGdob3N0cyBpbiB0aGUgZm9ybSBvZiBhbiBleHRyYSBmaW5nZXIgd2hpbGUKK3lvdSBhY3R1YWxseSBhcmUgdXNpbmcgdGhlIHNjcmVlbi4gIEluIHByYWN0aWNlIHRoaXMgc29ydCBvZiBnaG9zdCBoYXMKK2JlZW4gZmFyIGxlc3MgcHJvYmxlbWF0aWMgb3IgcmVsYXRpdmVseSByYXJlIGFuZCBJJ3ZlIGxlZnQgdGhlIGRlZmF1bHRzCitzZXQgdG8gMCBmb3IgYm90aCBwYXJhbWV0ZXJzLCBlZmZlY3RpdmVseSB0dXJuaW5nIG9mZiB0aGF0IGZpbHRlci4KKworSSBkb24ndCBrbm93IHdoYXQgdGhlIG9wdGltYWwgdmFsdWVzIGFyZSBmb3IgdGhlc2UgZmlsdGVycy4gIElmIHRoZSBkZWZhdWx0cworZG9uJ3Qgd29yayBmb3IgeW91LCBwbGVhc2UgcGxheSB3aXRoIHRoZSBwYXJhbWV0ZXJzLiAgSWYgeW91IGRvIGZpbmQgb3RoZXIKK3ZhbHVlcyBtb3JlIGNvbWZvcnRhYmxlLCBJIHdvdWxkIGFwcHJlY2lhdGUgZmVlZGJhY2suCisKK1RoZSBjYWxpYnJhdGlvbiBvZiB0aGVzZSBkZXZpY2VzIGRvZXMgZHJpZnQgb3ZlciB0aW1lLiAgSWYgZ2hvc3RzIG9yIGNvbnRhY3QKK2Ryb3BwaW5nIHdvcnNlbiBhbmQgaW50ZXJmZXJlIHdpdGggdGhlIG5vcm1hbCB1c2FnZSBvZiB5b3VyIGRldmljZSwgdHJ5CityZWNhbGlicmF0aW5nIGl0LgorCisKK0NhbGlicmF0aW9uCistLS0tLS0tLS0tLQorCitUaGUgTi1UcmlnIHdpbmRvd3MgdG9vbHMgcHJvdmlkZSBjYWxpYnJhdGlvbiBhbmQgdGVzdGluZyByb3V0aW5lcy4gIEFsc28gYW4KK3Vub2ZmaWNpYWwgdW5zdXBwb3J0ZWQgc2V0IG9mIHVzZXIgc3BhY2UgdG9vbHMgaW5jbHVkaW5nIGEgY2FsaWJyYXRvciBpcworYXZhaWxhYmxlIGF0OgoraHR0cDovL2NvZGUubGF1bmNocGFkLm5ldC9+cmFmaS1zZWFzLytqdW5rL250cmlnX2NhbGliCisKKworVHJhY2tpbmcKKy0tLS0tLS0tCisKK0FzIG9mIHlldCwgYWxsIHRlc3RlZCBOLVRyaWcgZmlybXdhcmVzIGRvIG5vdCB0cmFjayBmaW5nZXJzLiAgV2hlbiBtdWx0aXBsZQorY29udGFjdHMgYXJlIGFjdGl2ZSB0aGV5IHNlZW0gdG8gYmUgc29ydGVkIHByaW1hcmlseSBieSBZIHBvc2l0aW9uLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pbnB1dC9yb3RhcnktZW5jb2Rlci50eHQgYi9Eb2N1bWVudGF0aW9uL2lucHV0L3JvdGFyeS1lbmNvZGVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmE3NGYwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pbnB1dC9yb3RhcnktZW5jb2Rlci50eHQKQEAgLTAsMCArMSwxMjYgQEAKK3JvdGFyeS1lbmNvZGVyIC0gYSBnZW5lcmljIGRyaXZlciBmb3IgR1BJTyBjb25uZWN0ZWQgZGV2aWNlcworRGFuaWVsIE1hY2sgPGRhbmllbEBjYWlhcS5kZT4sIEZlYiAyMDA5CisKKzAuIEZ1bmN0aW9uCistLS0tLS0tLS0tLQorCitSb3RhcnkgZW5jb2RlcnMgYXJlIGRldmljZXMgd2hpY2ggYXJlIGNvbm5lY3RlZCB0byB0aGUgQ1BVIG9yIG90aGVyCitwZXJpcGhlcmFscyB3aXRoIHR3byB3aXJlcy4gVGhlIG91dHB1dHMgYXJlIHBoYXNlLXNoaWZ0ZWQgYnkgOTAgZGVncmVlcworYW5kIGJ5IHRyaWdnZXJpbmcgb24gZmFsbGluZyBhbmQgcmlzaW5nIGVkZ2VzLCB0aGUgdHVybiBkaXJlY3Rpb24gY2FuCitiZSBkZXRlcm1pbmVkLgorCitTb21lIGVuY29kZXJzIGhhdmUgYm90aCBvdXRwdXRzIGxvdyBpbiBzdGFibGUgc3RhdGVzLCBvdGhlcnMgYWxzbyBoYXZlCithIHN0YWJsZSBzdGF0ZSB3aXRoIGJvdGggb3V0cHV0cyBoaWdoIChoYWxmLXBlcmlvZCBtb2RlKSBhbmQgc29tZSBoYXZlCithIHN0YWJsZSBzdGF0ZSBpbiBhbGwgc3RlcHMgKHF1YXJ0ZXItcGVyaW9kIG1vZGUpLgorCitUaGUgcGhhc2UgZGlhZ3JhbSBvZiB0aGVzZSB0d28gb3V0cHV0cyBsb29rIGxpa2UgdGhpczoKKworICAgICAgICAgICAgICAgICAgX19fX18gICAgICAgX19fX18gICAgICAgX19fX18KKyAgICAgICAgICAgICAgICAgfCAgICAgfCAgICAgfCAgICAgfCAgICAgfCAgICAgfAorICBDaGFubmVsIEEgIF9fX198ICAgICB8X19fX198ICAgICB8X19fX198ICAgICB8X19fXworCisgICAgICAgICAgICAgICAgIDogIDogIDogIDogIDogIDogIDogIDogIDogIDogIDogIDoKKyAgICAgICAgICAgIF9fICAgICAgIF9fX19fICAgICAgIF9fX19fICAgICAgIF9fX19fCisgICAgICAgICAgICAgIHwgICAgIHwgICAgIHwgICAgIHwgICAgIHwgICAgIHwgICAgIHwKKyAgQ2hhbm5lbCBCICAgfF9fX19ffCAgICAgfF9fX19ffCAgICAgfF9fX19ffCAgICAgfF9fCisKKyAgICAgICAgICAgICAgICAgOiAgOiAgOiAgOiAgOiAgOiAgOiAgOiAgOiAgOiAgOiAgOgorICBFdmVudCAgICAgICAgICBhICBiICBjICBkICBhICBiICBjICBkICBhICBiICBjICBkCisKKyAgICAgICAgICAgICAgICB8PC0tLS0tLS0tPnwKKwkgICAgICAgICAgb25lIHN0ZXAKKworICAgICAgICAgICAgICAgIHw8LS0+fAorCSAgICAgICAgICBvbmUgc3RlcCAoaGFsZi1wZXJpb2QgbW9kZSkKKworICAgICAgICAgICAgICAgIHw8PnwKKwkgICAgICAgICAgb25lIHN0ZXAgKHF1YXJ0ZXItcGVyaW9kIG1vZGUpCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlCisJaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUm90YXJ5X2VuY29kZXIKKworCisxLiBFdmVudHMgLyBzdGF0ZSBtYWNoaW5lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0luIGhhbGYtcGVyaW9kIG1vZGUsIHN0YXRlIGEpIGFuZCBjKSBhYm92ZSBhcmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlCityb3RhdGlvbmFsIGRpcmVjdGlvbiBiYXNlZCBvbiB0aGUgbGFzdCBzdGFibGUgc3RhdGUuIEV2ZW50cyBhcmUgcmVwb3J0ZWQgaW4KK3N0YXRlcyBiKSBhbmQgZCkgZ2l2ZW4gdGhhdCB0aGUgbmV3IHN0YWJsZSBzdGF0ZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgbGFzdAorKGkuZS4gdGhlIHJvdGF0aW9uIHdhcyBub3QgcmV2ZXJzZWQgaGFsZi13YXkpLgorCitPdGhlcndpc2UsIHRoZSBmb2xsb3dpbmcgYXBwbHk6CisKK2EpIFJpc2luZyBlZGdlIG9uIGNoYW5uZWwgQSwgY2hhbm5lbCBCIGluIGxvdyBzdGF0ZQorCVRoaXMgc3RhdGUgaXMgdXNlZCB0byByZWNvZ25pemUgYSBjbG9ja3dpc2UgdHVybgorCitiKSBSaXNpbmcgZWRnZSBvbiBjaGFubmVsIEIsIGNoYW5uZWwgQSBpbiBoaWdoIHN0YXRlCisJV2hlbiBlbnRlcmluZyB0aGlzIHN0YXRlLCB0aGUgZW5jb2RlciBpcyBwdXQgaW50byAnYXJtZWQnIHN0YXRlLAorCW1lYW5pbmcgdGhhdCB0aGVyZSBpdCBoYXMgc2VlbiBoYWxmIHRoZSB3YXkgb2YgYSBvbmUtc3RlcCB0cmFuc2l0aW9uLgorCitjKSBGYWxsaW5nIGVkZ2Ugb24gY2hhbm5lbCBBLCBjaGFubmVsIEIgaW4gaGlnaCBzdGF0ZQorCVRoaXMgc3RhdGUgaXMgdXNlZCB0byByZWNvZ25pemUgYSBjb3VudGVyLWNsb2Nrd2lzZSB0dXJuCisKK2QpIEZhbGxpbmcgZWRnZSBvbiBjaGFubmVsIEIsIGNoYW5uZWwgQSBpbiBsb3cgc3RhdGUKKwlQYXJraW5nIHBvc2l0aW9uLiBJZiB0aGUgZW5jb2RlciBlbnRlcnMgdGhpcyBzdGF0ZSwgYSBmdWxsIHRyYW5zaXRpb24KKwlzaG91bGQgaGF2ZSBoYXBwZW5lZCwgdW5sZXNzIGl0IGZsaXBwZWQgYmFjayBvbiBoYWxmIHRoZSB3YXkuIFRoZQorCSdhcm1lZCcgc3RhdGUgdGVsbHMgdXMgYWJvdXQgdGhhdC4KKworMi4gUGxhdGZvcm0gcmVxdWlyZW1lbnRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQXMgdGhlcmUgaXMgbm8gaGFyZHdhcmUgZGVwZW5kZW50IGNhbGwgaW4gdGhpcyBkcml2ZXIsIHRoZSBwbGF0Zm9ybSBpdCBpcwordXNlZCB3aXRoIG11c3Qgc3VwcG9ydCBncGlvbGliLiBBbm90aGVyIHJlcXVpcmVtZW50IGlzIHRoYXQgSVJRcyBtdXN0IGJlCithYmxlIHRvIGZpcmUgb24gYm90aCBlZGdlcy4KKworCiszLiBCb2FyZCBpbnRlZ3JhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVG8gdXNlIHRoaXMgZHJpdmVyIGluIHlvdXIgc3lzdGVtLCByZWdpc3RlciBhIHBsYXRmb3JtX2RldmljZSB3aXRoIHRoZQorbmFtZSAncm90YXJ5LWVuY29kZXInIGFuZCBhc3NvY2lhdGUgdGhlIElSUXMgYW5kIHNvbWUgc3BlY2lmaWMgcGxhdGZvcm0KK2RhdGEgd2l0aCBpdC4KKworc3RydWN0IHJvdGFyeV9lbmNvZGVyX3BsYXRmb3JtX2RhdGEgaXMgZGVjbGFyZWQgaW4KK2luY2x1ZGUvbGludXgvcm90YXJ5LWVuY29kZXIuaCBhbmQgbmVlZHMgdG8gYmUgZmlsbGVkIHdpdGggdGhlIG51bWJlciBvZgorc3RlcHMgdGhlIGVuY29kZXIgaGFzIGFuZCBjYW4gY2FycnkgaW5mb3JtYXRpb24gYWJvdXQgZXh0ZXJuYWxseSBpbnZlcnRlZAorc2lnbmFscyAoYmVjYXVzZSBvZiBhbiBpbnZlcnRpbmcgYnVmZmVyIG9yIG90aGVyIHJlYXNvbnMpLiBUaGUgZW5jb2RlcgorY2FuIGJlIHNldCB1cCB0byBkZWxpdmVyIGlucHV0IGluZm9ybWF0aW9uIGFzIGVpdGhlciBhbiBhYnNvbHV0ZSBvciByZWxhdGl2ZQorYXhlcy4gRm9yIHJlbGF0aXZlIGF4ZXMgdGhlIGlucHV0IGV2ZW50IHJldHVybnMgKy8tMSBmb3IgZWFjaCBzdGVwLiBGb3IKK2Fic29sdXRlIGF4ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBlbmNvZGVyIGNhbiBlaXRoZXIgcm9sbCBvdmVyIGJldHdlZW4gemVybworYW5kIHRoZSBudW1iZXIgb2Ygc3RlcHMgb3Igd2lsbCBjbGFtcCBhdCB0aGUgbWF4aW11bSBhbmQgemVybyBkZXBlbmRpbmcgb24KK3RoZSBjb25maWd1cmF0aW9uLgorCitCZWNhdXNlIEdQSU8gdG8gSVJRIG1hcHBpbmcgaXMgcGxhdGZvcm0gc3BlY2lmaWMsIHRoaXMgaW5mb3JtYXRpb24gbXVzdAorYmUgZ2l2ZW4gaW4gc2VwYXJhdGVseSB0byB0aGUgZHJpdmVyLiBTZWUgdGhlIGV4YW1wbGUgYmVsb3cuCisKKy0tLS0tLS0tLTxzbmlwPi0tLS0tLS0tLQorCisvKiBib2FyZCBzdXBwb3J0IGZpbGUgZXhhbXBsZSAqLworCisjaW5jbHVkZSA8bGludXgvaW5wdXQuaD4KKyNpbmNsdWRlIDxsaW51eC9yb3RhcnlfZW5jb2Rlci5oPgorCisjZGVmaW5lIEdQSU9fUk9UQVJZX0EgMQorI2RlZmluZSBHUElPX1JPVEFSWV9CIDIKKworc3RhdGljIHN0cnVjdCByb3RhcnlfZW5jb2Rlcl9wbGF0Zm9ybV9kYXRhIG15X3JvdGFyeV9lbmNvZGVyX2luZm8gPSB7CisJLnN0ZXBzCQk9IDI0LAorCS5heGlzCQk9IEFCU19YLAorCS5yZWxhdGl2ZV9heGlzCT0gZmFsc2UsCisJLnJvbGxvdmVyCT0gZmFsc2UsCisJLmdwaW9fYQkJPSBHUElPX1JPVEFSWV9BLAorCS5ncGlvX2IJCT0gR1BJT19ST1RBUllfQiwKKwkuaW52ZXJ0ZWRfYQk9IDAsCisJLmludmVydGVkX2IJPSAwLAorCS5oYWxmX3BlcmlvZAk9IGZhbHNlLAorCS53YWtldXBfc291cmNlCT0gZmFsc2UsCit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSByb3RhcnlfZW5jb2Rlcl9kZXZpY2UgPSB7CisJLm5hbWUJCT0gInJvdGFyeS1lbmNvZGVyIiwKKwkuaWQJCT0gMCwKKwkuZGV2CQk9IHsKKwkJLnBsYXRmb3JtX2RhdGEgPSAmbXlfcm90YXJ5X2VuY29kZXJfaW5mbywKKwl9Cit9OworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lucHV0L3NlbnRlbGljLnR4dCBiL0RvY3VtZW50YXRpb24vaW5wdXQvc2VudGVsaWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MjUxZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lucHV0L3NlbnRlbGljLnR4dApAQCAtMCwwICsxLDg3MyBAQAorQ29weXJpZ2h0IChDKSAyMDAyLTIwMTEgU2VudGVsaWMgQ29ycG9yYXRpb24uCitMYXN0IHVwZGF0ZTogRGVjLTA3LTIwMTEKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqIEZpbmdlciBTZW5zaW5nIFBhZCBJbnRlbGxpbW91c2UgTW9kZShzY3JvbGxpbmcgd2hlZWwsIDR0aCBhbmQgNXRoIGJ1dHRvbnMpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0EpIE1TSUQgNDogU2Nyb2xsaW5nIHdoZWVsIG1vZGUgcGx1cyBGb3J3YXJkIHBhZ2UoNHRoIGJ1dHRvbikgYW5kIEJhY2t3YXJkCisgICBwYWdlICg1dGggYnV0dG9uKQorQDEuIFNldCBzYW1wbGUgcmF0ZSB0byAyMDA7CitAMi4gU2V0IHNhbXBsZSByYXRlIHRvIDIwMDsKK0AzLiBTZXQgc2FtcGxlIHJhdGUgdG8gODA7CitANC4gSXNzdWluZyB0aGUgIkdldCBkZXZpY2UgSUQiIGNvbW1hbmQgKDB4RjIpIGFuZCB3YWl0cyBmb3IgdGhlIHJlc3BvbnNlOworQDUuIEZTUCB3aWxsIHJlc3BvbmQgMHgwNC4KKworUGFja2V0IDEKKyAgIEJpdCA3IDYgNSA0IDMgMiAxIDAgICAgICAgNyA2IDUgNCAzIDIgMSAwICAgICAgNyA2IDUgNCAzIDIgMSAwICAgICAgNyA2IDUgNCAzIDIgMSAwCitCWVRFICB8LS0tLS0tLS0tLS0tLS0tfEJZVEUgfC0tLS0tLS0tLS0tLS0tLXxCWVRFfC0tLS0tLS0tLS0tLS0tLXxCWVRFfC0tLS0tLS0tLS0tLS0tLXwKKyAgMSAgIHxZfFh8eXx4fDF8TXxSfEx8ICAyICB8WHxYfFh8WHxYfFh8WHxYfCAgMyB8WXxZfFl8WXxZfFl8WXxZfCAgNCB8IHwgfEJ8RnxXfFd8V3xXfAorICAgICAgfC0tLS0tLS0tLS0tLS0tLXwgICAgIHwtLS0tLS0tLS0tLS0tLS18ICAgIHwtLS0tLS0tLS0tLS0tLS18ICAgIHwtLS0tLS0tLS0tLS0tLS18CisKK0J5dGUgMTogQml0NyA9PiBZIG92ZXJmbG93CisgICAgICAgIEJpdDYgPT4gWCBvdmVyZmxvdworICAgICAgICBCaXQ1ID0+IFkgc2lnbiBiaXQKKyAgICAgICAgQml0NCA9PiBYIHNpZ24gYml0CisgICAgICAgIEJpdDMgPT4gMQorICAgICAgICBCaXQyID0+IE1pZGRsZSBCdXR0b24sIDEgaXMgcHJlc3NlZCwgMCBpcyBub3QgcHJlc3NlZC4KKyAgICAgICAgQml0MSA9PiBSaWdodCBCdXR0b24sIDEgaXMgcHJlc3NlZCwgMCBpcyBub3QgcHJlc3NlZC4KKyAgICAgICAgQml0MCA9PiBMZWZ0IEJ1dHRvbiwgMSBpcyBwcmVzc2VkLCAwIGlzIG5vdCBwcmVzc2VkLgorQnl0ZSAyOiBYIE1vdmVtZW50KDktYml0IDIncyBjb21wbGVtZW50IGludGVnZXJzKQorQnl0ZSAzOiBZIE1vdmVtZW50KDktYml0IDIncyBjb21wbGVtZW50IGludGVnZXJzKQorQnl0ZSA0OiBCaXQzfkJpdDAgPT4gdGhlIHNjcm9sbGluZyB3aGVlbCdzIG1vdmVtZW50IHNpbmNlIHRoZSBsYXN0IGRhdGEgcmVwb3J0LgorICAgICAgICAgICAgICAgICAgICAgdmFsaWQgdmFsdWVzLCAtOCB+ICs3CisgICAgICAgIEJpdDQgPT4gMSA9IDR0aCBtb3VzZSBidXR0b24gaXMgcHJlc3NlZCwgRm9yd2FyZCBvbmUgcGFnZS4KKyAgICAgICAgICAgICAgICAwID0gNHRoIG1vdXNlIGJ1dHRvbiBpcyBub3QgcHJlc3NlZC4KKyAgICAgICAgQml0NSA9PiAxID0gNXRoIG1vdXNlIGJ1dHRvbiBpcyBwcmVzc2VkLCBCYWNrd2FyZCBvbmUgcGFnZS4KKyAgICAgICAgICAgICAgICAwID0gNXRoIG1vdXNlIGJ1dHRvbiBpcyBub3QgcHJlc3NlZC4KKworQikgTVNJRCA2OiBIb3Jpem9udGFsIGFuZCBWZXJ0aWNhbCBzY3JvbGxpbmcuCitAIFNldCBiaXQgMSBpbiByZWdpc3RlciAweDQwIHRvIDEKKworIyBGU1AgcmVwbGFjZXMgc2Nyb2xsaW5nIHdoZWVsJ3MgbW92ZW1lbnQgYXMgNCBiaXRzIHRvIHNob3cgaG9yaXpvbnRhbCBhbmQKKyAgdmVydGljYWwgc2Nyb2xsaW5nLgorCitQYWNrZXQgMQorICAgQml0IDcgNiA1IDQgMyAyIDEgMCAgICAgICA3IDYgNSA0IDMgMiAxIDAgICAgICA3IDYgNSA0IDMgMiAxIDAgICAgICA3IDYgNSA0IDMgMiAxIDAKK0JZVEUgIHwtLS0tLS0tLS0tLS0tLS18QllURSB8LS0tLS0tLS0tLS0tLS0tfEJZVEV8LS0tLS0tLS0tLS0tLS0tfEJZVEV8LS0tLS0tLS0tLS0tLS0tfAorICAxICAgfFl8WHx5fHh8MXxNfFJ8THwgIDIgIHxYfFh8WHxYfFh8WHxYfFh8ICAzIHxZfFl8WXxZfFl8WXxZfFl8ICA0IHwgfCB8QnxGfHJ8bHx1fGR8CisgICAgICB8LS0tLS0tLS0tLS0tLS0tfCAgICAgfC0tLS0tLS0tLS0tLS0tLXwgICAgfC0tLS0tLS0tLS0tLS0tLXwgICAgfC0tLS0tLS0tLS0tLS0tLXwKKworQnl0ZSAxOiBCaXQ3ID0+IFkgb3ZlcmZsb3cKKyAgICAgICAgQml0NiA9PiBYIG92ZXJmbG93CisgICAgICAgIEJpdDUgPT4gWSBzaWduIGJpdAorICAgICAgICBCaXQ0ID0+IFggc2lnbiBiaXQKKyAgICAgICAgQml0MyA9PiAxCisgICAgICAgIEJpdDIgPT4gTWlkZGxlIEJ1dHRvbiwgMSBpcyBwcmVzc2VkLCAwIGlzIG5vdCBwcmVzc2VkLgorICAgICAgICBCaXQxID0+IFJpZ2h0IEJ1dHRvbiwgMSBpcyBwcmVzc2VkLCAwIGlzIG5vdCBwcmVzc2VkLgorICAgICAgICBCaXQwID0+IExlZnQgQnV0dG9uLCAxIGlzIHByZXNzZWQsIDAgaXMgbm90IHByZXNzZWQuCitCeXRlIDI6IFggTW92ZW1lbnQoOS1iaXQgMidzIGNvbXBsZW1lbnQgaW50ZWdlcnMpCitCeXRlIDM6IFkgTW92ZW1lbnQoOS1iaXQgMidzIGNvbXBsZW1lbnQgaW50ZWdlcnMpCitCeXRlIDQ6IEJpdDAgPT4gdGhlIFZlcnRpY2FsIHNjcm9sbGluZyBtb3ZlbWVudCBkb3dud2FyZC4KKwlCaXQxID0+IHRoZSBWZXJ0aWNhbCBzY3JvbGxpbmcgbW92ZW1lbnQgdXB3YXJkLgorCUJpdDIgPT4gdGhlIEhvcml6b250YWwgc2Nyb2xsaW5nIG1vdmVtZW50IGxlZnR3YXJkLgorCUJpdDMgPT4gdGhlIEhvcml6b250YWwgc2Nyb2xsaW5nIG1vdmVtZW50IHJpZ2h0d2FyZC4KKyAgICAgICAgQml0NCA9PiAxID0gNHRoIG1vdXNlIGJ1dHRvbiBpcyBwcmVzc2VkLCBGb3J3YXJkIG9uZSBwYWdlLgorICAgICAgICAgICAgICAgIDAgPSA0dGggbW91c2UgYnV0dG9uIGlzIG5vdCBwcmVzc2VkLgorICAgICAgICBCaXQ1ID0+IDEgPSA1dGggbW91c2UgYnV0dG9uIGlzIHByZXNzZWQsIEJhY2t3YXJkIG9uZSBwYWdlLgorICAgICAgICAgICAgICAgIDAgPSA1dGggbW91c2UgYnV0dG9uIGlzIG5vdCBwcmVzc2VkLgorCitDKSBNU0lEIDc6CisjIEZTUCB1c2VzIDIgcGFja2V0cyAoOCBCeXRlcykgdG8gcmVwcmVzZW50IEFic29sdXRlIFBvc2l0aW9uLgorICBzbyB3ZSBoYXZlIFBBQ0tFVCBOVU1CRVIgdG8gaWRlbnRpZnkgcGFja2V0cy4KKyAgSWYgUEFDS0VUIE5VTUJFUiBpcyAwLCB0aGUgcGFja2V0IGlzIFBhY2tldCAxLgorICBJZiBQQUNLRVQgTlVNQkVSIGlzIDEsIHRoZSBwYWNrZXQgaXMgUGFja2V0IDIuCisgIFBsZWFzZSBjb3VudCB0aGlzIG51bWJlciBpbiBwcm9ncmFtLgorCisjIE1TSUQ2IHNwZWNpYWwgcGFja2V0IHdpbGwgYmUgZW5hYmxlIGF0IHRoZSBzYW1lIHRpbWUgd2hlbiBlbmFibGUgTVNJRCA3LgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyogQWJzb2x1dGUgcG9zaXRpb24gZm9yIFNUTDM4ODYtRzAuCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0AgU2V0IGJpdCAyIG9yIDMgaW4gcmVnaXN0ZXIgMHg0MCB0byAxCitAIFNldCBiaXQgNiBpbiByZWdpc3RlciAweDQwIHRvIDEKKworUGFja2V0IDEgKEFCU09MVVRFIFBPU0lUSU9OKQorICAgQml0IDcgNiA1IDQgMyAyIDEgMCAgICAgICA3IDYgNSA0IDMgMiAxIDAgICAgICA3IDYgNSA0IDMgMiAxIDAgICAgICA3IDYgNSA0IDMgMiAxIDAKK0JZVEUgIHwtLS0tLS0tLS0tLS0tLS18QllURSB8LS0tLS0tLS0tLS0tLS0tfEJZVEV8LS0tLS0tLS0tLS0tLS0tfEJZVEV8LS0tLS0tLS0tLS0tLS0tfAorICAxICAgfDB8MXxWfDF8MXxNfFJ8THwgIDIgIHxYfFh8WHxYfFh8WHxYfFh8ICAzIHxZfFl8WXxZfFl8WXxZfFl8ICA0IHxyfGx8ZHx1fFh8WHxZfFl8CisgICAgICB8LS0tLS0tLS0tLS0tLS0tfCAgICAgfC0tLS0tLS0tLS0tLS0tLXwgICAgfC0tLS0tLS0tLS0tLS0tLXwgICAgfC0tLS0tLS0tLS0tLS0tLXwKKworQnl0ZSAxOiBCaXQ3fkJpdDYgPT4gMDAsIE5vcm1hbCBkYXRhIHBhY2tldAorICAgICAgICAgICAgICAgICAgPT4gMDEsIEFic29sdXRlIGNvb3JkaW5hdGlvbiBwYWNrZXQKKyAgICAgICAgICAgICAgICAgID0+IDEwLCBOb3RpZnkgcGFja2V0CisgICAgICAgIEJpdDUgPT4gdmFsaWQgYml0CisgICAgICAgIEJpdDQgPT4gMQorICAgICAgICBCaXQzID0+IDEKKyAgICAgICAgQml0MiA9PiBNaWRkbGUgQnV0dG9uLCAxIGlzIHByZXNzZWQsIDAgaXMgbm90IHByZXNzZWQuCisgICAgICAgIEJpdDEgPT4gUmlnaHQgQnV0dG9uLCAxIGlzIHByZXNzZWQsIDAgaXMgbm90IHByZXNzZWQuCisgICAgICAgIEJpdDAgPT4gTGVmdCBCdXR0b24sIDEgaXMgcHJlc3NlZCwgMCBpcyBub3QgcHJlc3NlZC4KK0J5dGUgMjogWCBjb29yZGluYXRlICh4cG9zWzk6Ml0pCitCeXRlIDM6IFkgY29vcmRpbmF0ZSAoeXBvc1s5OjJdKQorQnl0ZSA0OiBCaXQxfkJpdDAgPT4gWSBjb29yZGluYXRlICh4cG9zWzE6MF0pCisgICAgICAgIEJpdDN+Qml0MiA9PiBYIGNvb3JkaW5hdGUgKHlwb3NbMTowXSkKKyAgICAgICAgQml0NCA9PiBzY3JvbGwgdXAKKyAgICAgICAgQml0NSA9PiBzY3JvbGwgZG93bgorICAgICAgICBCaXQ2ID0+IHNjcm9sbCBsZWZ0CisgICAgICAgIEJpdDcgPT4gc2Nyb2xsIHJpZ2h0CisKK05vdGlmeSBQYWNrZXQgZm9yIEcwCisgICBCaXQgNyA2IDUgNCAzIDIgMSAwICAgICAgIDcgNiA1IDQgMyAyIDEgMCAgICAgIDcgNiA1IDQgMyAyIDEgMCAgICAgIDcgNiA1IDQgMyAyIDEgMAorQllURSAgfC0tLS0tLS0tLS0tLS0tLXxCWVRFIHwtLS0tLS0tLS0tLS0tLS18QllURXwtLS0tLS0tLS0tLS0tLS18QllURXwtLS0tLS0tLS0tLS0tLS18CisgIDEgICB8MXwwfDB8MXwxfE18UnxMfCAgMiAgfEN8Q3xDfEN8Q3xDfEN8Q3wgIDMgfE18TXxNfE18TXxNfE18TXwgIDQgfDB8MHwwfDB8MHwwfDB8MHwKKyAgICAgIHwtLS0tLS0tLS0tLS0tLS18ICAgICB8LS0tLS0tLS0tLS0tLS0tfCAgICB8LS0tLS0tLS0tLS0tLS0tfCAgICB8LS0tLS0tLS0tLS0tLS0tfAorCitCeXRlIDE6IEJpdDd+Qml0NiA9PiAwMCwgTm9ybWFsIGRhdGEgcGFja2V0CisgICAgICAgICAgICAgICAgICA9PiAwMSwgQWJzb2x1dGUgY29vcmRpbmF0aW9uIHBhY2tldAorICAgICAgICAgICAgICAgICAgPT4gMTAsIE5vdGlmeSBwYWNrZXQKKyAgICAgICAgQml0NSA9PiAwCisgICAgICAgIEJpdDQgPT4gMQorICAgICAgICBCaXQzID0+IDEKKyAgICAgICAgQml0MiA9PiBNaWRkbGUgQnV0dG9uLCAxIGlzIHByZXNzZWQsIDAgaXMgbm90IHByZXNzZWQuCisgICAgICAgIEJpdDEgPT4gUmlnaHQgQnV0dG9uLCAxIGlzIHByZXNzZWQsIDAgaXMgbm90IHByZXNzZWQuCisgICAgICAgIEJpdDAgPT4gTGVmdCBCdXR0b24sIDEgaXMgcHJlc3NlZCwgMCBpcyBub3QgcHJlc3NlZC4KK0J5dGUgMjogTWVzc2FnZSBUeXBlID0+IDB4NUEgKEVuYWJsZS9EaXNhYmxlIHN0YXR1cyBwYWNrZXQpCisgICAgICAgIE1vZGUgVHlwZSA9PiAweEE1IChOb3JtYWwvSWNvbiBtb2RlIHN0YXR1cykKK0J5dGUgMzogTWVzc2FnZSBUeXBlID0+IDB4MDAgKERpc2FibGVkKQorICAgICAgICAgICAgICAgICAgICAgPT4gMHgwMSAoRW5hYmxlZCkKKyAgICAgICAgTW9kZSBUeXBlICAgID0+IDB4MDAgKE5vcm1hbCkKKyAgICAgICAgICAgICAgICAgICAgID0+IDB4MDEgKEljb24pCitCeXRlIDQ6IEJpdDd+Qml0MCA9PiBEb24ndCBDYXJlCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKiBBYnNvbHV0ZSBwb3NpdGlvbiBmb3IgU1RMMzg4OC1BeC4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUGFja2V0IDEgKEFCU09MVVRFIFBPU0lUSU9OKQorICAgQml0IDcgNiA1IDQgMyAyIDEgMCAgICAgICA3IDYgNSA0IDMgMiAxIDAgICAgICA3IDYgNSA0IDMgMiAxIDAgICAgICA3IDYgNSA0IDMgMiAxIDAKK0JZVEUgIHwtLS0tLS0tLS0tLS0tLS18QllURSB8LS0tLS0tLS0tLS0tLS0tfEJZVEV8LS0tLS0tLS0tLS0tLS0tfEJZVEV8LS0tLS0tLS0tLS0tLS0tfAorICAxICAgfDB8MXxWfEF8MXxMfDB8MXwgIDIgIHxYfFh8WHxYfFh8WHxYfFh8ICAzIHxZfFl8WXxZfFl8WXxZfFl8ICA0IHx4fHh8eXx5fFh8WHxZfFl8CisgICAgICB8LS0tLS0tLS0tLS0tLS0tfCAgICAgfC0tLS0tLS0tLS0tLS0tLXwgICAgfC0tLS0tLS0tLS0tLS0tLXwgICAgfC0tLS0tLS0tLS0tLS0tLXwKKworQnl0ZSAxOiBCaXQ3fkJpdDYgPT4gMDAsIE5vcm1hbCBkYXRhIHBhY2tldAorICAgICAgICAgICAgICAgICAgPT4gMDEsIEFic29sdXRlIGNvb3JkaW5hdGlvbiBwYWNrZXQKKyAgICAgICAgICAgICAgICAgID0+IDEwLCBOb3RpZnkgcGFja2V0CisgICAgICAgICAgICAgICAgICA9PiAxMSwgTm9ybWFsIGRhdGEgcGFja2V0IHdpdGggb24tcGFkIGNsaWNrCisgICAgICAgIEJpdDUgPT4gVmFsaWQgYml0LCAwIG1lYW5zIHRoYXQgdGhlIGNvb3JkaW5hdGUgaXMgaW52YWxpZCBvciBmaW5nZXIgdXAuCisgICAgICAgICAgICAgICAgV2hlbiBib3RoIGZpbmdlcnMgYXJlIHVwLCB0aGUgbGFzdCB0d28gcmVwb3J0cyBoYXZlIHplcm8gdmFsaWQKKyAgICAgICAgICAgICAgICBiaXQuCisgICAgICAgIEJpdDQgPT4gYXJjCisgICAgICAgIEJpdDMgPT4gMQorICAgICAgICBCaXQyID0+IExlZnQgQnV0dG9uLCAxIGlzIHByZXNzZWQsIDAgaXMgcmVsZWFzZWQuCisgICAgICAgIEJpdDEgPT4gMAorICAgICAgICBCaXQwID0+IDEKK0J5dGUgMjogWCBjb29yZGluYXRlICh4cG9zWzk6Ml0pCitCeXRlIDM6IFkgY29vcmRpbmF0ZSAoeXBvc1s5OjJdKQorQnl0ZSA0OiBCaXQxfkJpdDAgPT4gWSBjb29yZGluYXRlICh4cG9zWzE6MF0pCisgICAgICAgIEJpdDN+Qml0MiA9PiBYIGNvb3JkaW5hdGUgKHlwb3NbMTowXSkKKyAgICAgICAgQml0NX5CaXQ0ID0+IHkxX2cKKyAgICAgICAgQml0N35CaXQ2ID0+IHgxX2cKKworUGFja2V0IDIgKEFCU09MVVRFIFBPU0lUSU9OKQorICAgQml0IDcgNiA1IDQgMyAyIDEgMCAgICAgICA3IDYgNSA0IDMgMiAxIDAgICAgICA3IDYgNSA0IDMgMiAxIDAgICAgICA3IDYgNSA0IDMgMiAxIDAKK0JZVEUgIHwtLS0tLS0tLS0tLS0tLS18QllURSB8LS0tLS0tLS0tLS0tLS0tfEJZVEV8LS0tLS0tLS0tLS0tLS0tfEJZVEV8LS0tLS0tLS0tLS0tLS0tfAorICAxICAgfDB8MXxWfEF8MXxSfDF8MHwgIDIgIHxYfFh8WHxYfFh8WHxYfFh8ICAzIHxZfFl8WXxZfFl8WXxZfFl8ICA0IHx4fHh8eXx5fFh8WHxZfFl8CisgICAgICB8LS0tLS0tLS0tLS0tLS0tfCAgICAgfC0tLS0tLS0tLS0tLS0tLXwgICAgfC0tLS0tLS0tLS0tLS0tLXwgICAgfC0tLS0tLS0tLS0tLS0tLXwKKworQnl0ZSAxOiBCaXQ3fkJpdDYgPT4gMDAsIE5vcm1hbCBkYXRhIHBhY2tldAorICAgICAgICAgICAgICAgICAgPT4gMDEsIEFic29sdXRlIGNvb3JkaW5hdGVzIHBhY2tldAorICAgICAgICAgICAgICAgICAgPT4gMTAsIE5vdGlmeSBwYWNrZXQKKyAgICAgICAgICAgICAgICAgID0+IDExLCBOb3JtYWwgZGF0YSBwYWNrZXQgd2l0aCBvbi1wYWQgY2xpY2sKKyAgICAgICAgQml0NSA9PiBWYWxpZCBiaXQsIDAgbWVhbnMgdGhhdCB0aGUgY29vcmRpbmF0ZSBpcyBpbnZhbGlkIG9yIGZpbmdlciB1cC4KKyAgICAgICAgICAgICAgICBXaGVuIGJvdGggZmluZ2VycyBhcmUgdXAsIHRoZSBsYXN0IHR3byByZXBvcnRzIGhhdmUgemVybyB2YWxpZAorICAgICAgICAgICAgICAgIGJpdC4KKyAgICAgICAgQml0NCA9PiBhcmMKKyAgICAgICAgQml0MyA9PiAxCisgICAgICAgIEJpdDIgPT4gUmlnaHQgQnV0dG9uLCAxIGlzIHByZXNzZWQsIDAgaXMgcmVsZWFzZWQuCisgICAgICAgIEJpdDEgPT4gMQorICAgICAgICBCaXQwID0+IDAKK0J5dGUgMjogWCBjb29yZGluYXRlICh4cG9zWzk6Ml0pCitCeXRlIDM6IFkgY29vcmRpbmF0ZSAoeXBvc1s5OjJdKQorQnl0ZSA0OiBCaXQxfkJpdDAgPT4gWSBjb29yZGluYXRlICh4cG9zWzE6MF0pCisgICAgICAgIEJpdDN+Qml0MiA9PiBYIGNvb3JkaW5hdGUgKHlwb3NbMTowXSkKKyAgICAgICAgQml0NX5CaXQ0ID0+IHkyX2cKKyAgICAgICAgQml0N35CaXQ2ID0+IHgyX2cKKworTm90aWZ5IFBhY2tldCBmb3IgU1RMMzg4OC1BeAorICAgQml0IDcgNiA1IDQgMyAyIDEgMCAgICAgICA3IDYgNSA0IDMgMiAxIDAgICAgICA3IDYgNSA0IDMgMiAxIDAgICAgICA3IDYgNSA0IDMgMiAxIDAKK0JZVEUgIHwtLS0tLS0tLS0tLS0tLS18QllURSB8LS0tLS0tLS0tLS0tLS0tfEJZVEV8LS0tLS0tLS0tLS0tLS0tfEJZVEV8LS0tLS0tLS0tLS0tLS0tfAorICAxICAgfDF8MHwxfFB8MXxNfFJ8THwgIDIgIHxDfEN8Q3xDfEN8Q3xDfEN8ICAzIHwwfDB8RnxGfDB8MHwwfGl8ICA0IHxyfGx8ZHx1fDB8MHwwfDB8CisgICAgICB8LS0tLS0tLS0tLS0tLS0tfCAgICAgfC0tLS0tLS0tLS0tLS0tLXwgICAgfC0tLS0tLS0tLS0tLS0tLXwgICAgfC0tLS0tLS0tLS0tLS0tLXwKKworQnl0ZSAxOiBCaXQ3fkJpdDYgPT4gMDAsIE5vcm1hbCBkYXRhIHBhY2tldAorICAgICAgICAgICAgICAgICAgPT4gMDEsIEFic29sdXRlIGNvb3JkaW5hdGVzIHBhY2tldAorICAgICAgICAgICAgICAgICAgPT4gMTAsIE5vdGlmeSBwYWNrZXQKKyAgICAgICAgICAgICAgICAgID0+IDExLCBOb3JtYWwgZGF0YSBwYWNrZXQgd2l0aCBvbi1wYWQgY2xpY2sKKyAgICAgICAgQml0NSA9PiAxCisgICAgICAgIEJpdDQgPT4gd2hlbiBpbiBhYnNvbHV0ZSBjb29yZGluYXRlcyBtb2RlICh2YWxpZCB3aGVuIEVOX1BLVF9HTyBpcyAxKToKKyAgICAgICAgICAgICAgICAwOiBsZWZ0IGJ1dHRvbiBpcyBnZW5lcmF0ZWQgYnkgdGhlIG9uLXBhZCBjb21tYW5kCisgICAgICAgICAgICAgICAgMTogbGVmdCBidXR0b24gaXMgZ2VuZXJhdGVkIGJ5IHRoZSBleHRlcm5hbCBidXR0b24KKyAgICAgICAgQml0MyA9PiAxCisgICAgICAgIEJpdDIgPT4gTWlkZGxlIEJ1dHRvbiwgMSBpcyBwcmVzc2VkLCAwIGlzIG5vdCBwcmVzc2VkLgorICAgICAgICBCaXQxID0+IFJpZ2h0IEJ1dHRvbiwgMSBpcyBwcmVzc2VkLCAwIGlzIG5vdCBwcmVzc2VkLgorICAgICAgICBCaXQwID0+IExlZnQgQnV0dG9uLCAxIGlzIHByZXNzZWQsIDAgaXMgbm90IHByZXNzZWQuCitCeXRlIDI6IE1lc3NhZ2UgVHlwZSA9PiAweEI3IChNdWx0aSBGaW5nZXIsIE11bHRpIENvb3JkaW5hdGUgbW9kZSkKK0J5dGUgMzogQml0N35CaXQ2ID0+IERvbid0IGNhcmUKKyAgICAgICAgQml0NX5CaXQ0ID0+IE51bWJlciBvZiBmaW5nZXJzCisgICAgICAgIEJpdDN+Qml0MSA9PiBSZXNlcnZlZAorICAgICAgICBCaXQwID0+IDE6IGVudGVyIGdlc3R1cmUgbW9kZTsgMDogbGVhdmluZyBnZXN0dXJlIG1vZGUKK0J5dGUgNDogQml0NyA9PiBzY3JvbGwgcmlnaHQgYnV0dG9uCisgICAgICAgIEJpdDYgPT4gc2Nyb2xsIGxlZnQgYnV0dG9uCisgICAgICAgIEJpdDUgPT4gc2Nyb2xsIGRvd24gYnV0dG9uCisgICAgICAgIEJpdDQgPT4gc2Nyb2xsIHVwIGJ1dHRvbgorICAgICAgICAgICAgKiBOb3RlIHRoYXQgaWYgZ2VzdHVyZSBhbmQgYWRkaXRpb25hbCBidXR0b24gKEJpdDR+Qml0NykKKyAgICAgICAgICAgICAgaGFwcGVuIGF0IHRoZSBzYW1lIHRpbWUsIHRoZSBidXR0b24gaW5mb3JtYXRpb24gd2lsbCBub3QKKyAgICAgICAgICAgICAgYmUgc2VudC4KKyAgICAgICAgQml0M35CaXQwID0+IFJlc2VydmVkCisKK1NhbXBsZSBzZXF1ZW5jZSBvZiBNdWx0aS1maW5nZXIsIE11bHRpLWNvb3JkaW5hdGUgbW9kZToKKworCW5vdGlmeSBwYWNrZXQgKHZhbGlkIGJpdCA9PSAxKSwgYWJzIHBrdCAxLCBhYnMgcGt0IDIsIGFicyBwa3QgMSwKKwlhYnMgcGt0IDIsIC4uLiwgbm90aWZ5IHBhY2tldCAodmFsaWQgYml0ID09IDApCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKiBBYnNvbHV0ZSBwb3NpdGlvbiBmb3IgU1RMMzg4OC1CMC4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUGFja2V0IDEoQUJTT0xVVEUgUE9TSVRJT04pCisgICBCaXQgNyA2IDUgNCAzIDIgMSAwICAgICAgIDcgNiA1IDQgMyAyIDEgMCAgICAgIDcgNiA1IDQgMyAyIDEgMCAgICAgIDcgNiA1IDQgMyAyIDEgMAorQllURSAgfC0tLS0tLS0tLS0tLS0tLXxCWVRFIHwtLS0tLS0tLS0tLS0tLS18QllURXwtLS0tLS0tLS0tLS0tLS18QllURXwtLS0tLS0tLS0tLS0tLS18CisgIDEgICB8MHwxfFZ8RnwxfDB8UnxMfCAgMiAgfFh8WHxYfFh8WHxYfFh8WHwgIDMgfFl8WXxZfFl8WXxZfFl8WXwgIDQgfHJ8bHx1fGR8WHxYfFl8WXwKKyAgICAgIHwtLS0tLS0tLS0tLS0tLS18ICAgICB8LS0tLS0tLS0tLS0tLS0tfCAgICB8LS0tLS0tLS0tLS0tLS0tfCAgICB8LS0tLS0tLS0tLS0tLS0tfAorCitCeXRlIDE6IEJpdDd+Qml0NiA9PiAwMCwgTm9ybWFsIGRhdGEgcGFja2V0CisgICAgICAgICAgICAgICAgICA9PiAwMSwgQWJzb2x1dGUgY29vcmRpbmF0ZXMgcGFja2V0CisgICAgICAgICAgICAgICAgICA9PiAxMCwgTm90aWZ5IHBhY2tldAorICAgICAgICAgICAgICAgICAgPT4gMTEsIE5vcm1hbCBkYXRhIHBhY2tldCB3aXRoIG9uLXBhZCBjbGljaworICAgICAgICBCaXQ1ID0+IFZhbGlkIGJpdCwgMCBtZWFucyB0aGF0IHRoZSBjb29yZGluYXRlIGlzIGludmFsaWQgb3IgZmluZ2VyIHVwLgorICAgICAgICAgICAgICAgIFdoZW4gYm90aCBmaW5nZXJzIGFyZSB1cCwgdGhlIGxhc3QgdHdvIHJlcG9ydHMgaGF2ZSB6ZXJvIHZhbGlkCisgICAgICAgICAgICAgICAgYml0LgorICAgICAgICBCaXQ0ID0+IGZpbmdlciB1cC9kb3duIGluZm9ybWF0aW9uLiAxOiBmaW5nZXIgZG93biwgMDogZmluZ2VyIHVwLgorICAgICAgICBCaXQzID0+IDEKKyAgICAgICAgQml0MiA9PiBmaW5nZXIgaW5kZXgsIDAgaXMgdGhlIGZpcnN0IGZpbmdlciwgMSBpcyB0aGUgc2Vjb25kIGZpbmdlci4KKyAgICAgICAgQml0MSA9PiBSaWdodCBCdXR0b24sIDEgaXMgcHJlc3NlZCwgMCBpcyBub3QgcHJlc3NlZC4KKyAgICAgICAgQml0MCA9PiBMZWZ0IEJ1dHRvbiwgMSBpcyBwcmVzc2VkLCAwIGlzIG5vdCBwcmVzc2VkLgorQnl0ZSAyOiBYIGNvb3JkaW5hdGUgKHhwb3NbOToyXSkKK0J5dGUgMzogWSBjb29yZGluYXRlICh5cG9zWzk6Ml0pCitCeXRlIDQ6IEJpdDF+Qml0MCA9PiBZIGNvb3JkaW5hdGUgKHhwb3NbMTowXSkKKyAgICAgICAgQml0M35CaXQyID0+IFggY29vcmRpbmF0ZSAoeXBvc1sxOjBdKQorICAgICAgICBCaXQ0ID0+IHNjcm9sbCBkb3duIGJ1dHRvbgorICAgICAgICBCaXQ1ID0+IHNjcm9sbCB1cCBidXR0b24KKyAgICAgICAgQml0NiA9PiBzY3JvbGwgbGVmdCBidXR0b24KKyAgICAgICAgQml0NyA9PiBzY3JvbGwgcmlnaHQgYnV0dG9uCisKK1BhY2tldCAyIChBQlNPTFVURSBQT1NJVElPTikKKyAgIEJpdCA3IDYgNSA0IDMgMiAxIDAgICAgICAgNyA2IDUgNCAzIDIgMSAwICAgICAgNyA2IDUgNCAzIDIgMSAwICAgICAgNyA2IDUgNCAzIDIgMSAwCitCWVRFICB8LS0tLS0tLS0tLS0tLS0tfEJZVEUgfC0tLS0tLS0tLS0tLS0tLXxCWVRFfC0tLS0tLS0tLS0tLS0tLXxCWVRFfC0tLS0tLS0tLS0tLS0tLXwKKyAgMSAgIHwwfDF8VnxGfDF8MXxSfEx8ICAyICB8WHxYfFh8WHxYfFh8WHxYfCAgMyB8WXxZfFl8WXxZfFl8WXxZfCAgNCB8cnxsfHV8ZHxYfFh8WXxZfAorICAgICAgfC0tLS0tLS0tLS0tLS0tLXwgICAgIHwtLS0tLS0tLS0tLS0tLS18ICAgIHwtLS0tLS0tLS0tLS0tLS18ICAgIHwtLS0tLS0tLS0tLS0tLS18CisKK0J5dGUgMTogQml0N35CaXQ2ID0+IDAwLCBOb3JtYWwgZGF0YSBwYWNrZXQKKyAgICAgICAgICAgICAgICAgID0+IDAxLCBBYnNvbHV0ZSBjb29yZGluYXRpb24gcGFja2V0CisgICAgICAgICAgICAgICAgICA9PiAxMCwgTm90aWZ5IHBhY2tldAorICAgICAgICAgICAgICAgICAgPT4gMTEsIE5vcm1hbCBkYXRhIHBhY2tldCB3aXRoIG9uLXBhZCBjbGljaworICAgICAgICBCaXQ1ID0+IFZhbGlkIGJpdCwgMCBtZWFucyB0aGF0IHRoZSBjb29yZGluYXRlIGlzIGludmFsaWQgb3IgZmluZ2VyIHVwLgorICAgICAgICAgICAgICAgIFdoZW4gYm90aCBmaW5nZXJzIGFyZSB1cCwgdGhlIGxhc3QgdHdvIHJlcG9ydHMgaGF2ZSB6ZXJvIHZhbGlkCisgICAgICAgICAgICAgICAgYml0LgorICAgICAgICBCaXQ0ID0+IGZpbmdlciB1cC9kb3duIGluZm9ybWF0aW9uLiAxOiBmaW5nZXIgZG93biwgMDogZmluZ2VyIHVwLgorICAgICAgICBCaXQzID0+IDEKKyAgICAgICAgQml0MiA9PiBmaW5nZXIgaW5kZXgsIDAgaXMgdGhlIGZpcnN0IGZpbmdlciwgMSBpcyB0aGUgc2Vjb25kIGZpbmdlci4KKyAgICAgICAgQml0MSA9PiBSaWdodCBCdXR0b24sIDEgaXMgcHJlc3NlZCwgMCBpcyBub3QgcHJlc3NlZC4KKyAgICAgICAgQml0MCA9PiBMZWZ0IEJ1dHRvbiwgMSBpcyBwcmVzc2VkLCAwIGlzIG5vdCBwcmVzc2VkLgorQnl0ZSAyOiBYIGNvb3JkaW5hdGUgKHhwb3NbOToyXSkKK0J5dGUgMzogWSBjb29yZGluYXRlICh5cG9zWzk6Ml0pCitCeXRlIDQ6IEJpdDF+Qml0MCA9PiBZIGNvb3JkaW5hdGUgKHhwb3NbMTowXSkKKyAgICAgICAgQml0M35CaXQyID0+IFggY29vcmRpbmF0ZSAoeXBvc1sxOjBdKQorICAgICAgICBCaXQ0ID0+IHNjcm9sbCBkb3duIGJ1dHRvbgorICAgICAgICBCaXQ1ID0+IHNjcm9sbCB1cCBidXR0b24KKyAgICAgICAgQml0NiA9PiBzY3JvbGwgbGVmdCBidXR0b24KKyAgICAgICAgQml0NyA9PiBzY3JvbGwgcmlnaHQgYnV0dG9uCisKK05vdGlmeSBQYWNrZXQgZm9yIFNUTDM4ODgtQjAKKyAgIEJpdCA3IDYgNSA0IDMgMiAxIDAgICAgICAgNyA2IDUgNCAzIDIgMSAwICAgICAgNyA2IDUgNCAzIDIgMSAwICAgICAgNyA2IDUgNCAzIDIgMSAwCitCWVRFICB8LS0tLS0tLS0tLS0tLS0tfEJZVEUgfC0tLS0tLS0tLS0tLS0tLXxCWVRFfC0tLS0tLS0tLS0tLS0tLXxCWVRFfC0tLS0tLS0tLS0tLS0tLXwKKyAgMSAgIHwxfDB8MXxQfDF8TXxSfEx8ICAyICB8Q3xDfEN8Q3xDfEN8Q3xDfCAgMyB8MHwwfEZ8RnwwfDB8MHxpfCAgNCB8cnxsfHV8ZHwwfDB8MHwwfAorICAgICAgfC0tLS0tLS0tLS0tLS0tLXwgICAgIHwtLS0tLS0tLS0tLS0tLS18ICAgIHwtLS0tLS0tLS0tLS0tLS18ICAgIHwtLS0tLS0tLS0tLS0tLS18CisKK0J5dGUgMTogQml0N35CaXQ2ID0+IDAwLCBOb3JtYWwgZGF0YSBwYWNrZXQKKyAgICAgICAgICAgICAgICAgID0+IDAxLCBBYnNvbHV0ZSBjb29yZGluYXRpb24gcGFja2V0CisgICAgICAgICAgICAgICAgICA9PiAxMCwgTm90aWZ5IHBhY2tldAorICAgICAgICAgICAgICAgICAgPT4gMTEsIE5vcm1hbCBkYXRhIHBhY2tldCB3aXRoIG9uLXBhZCBjbGljaworICAgICAgICBCaXQ1ID0+IDEKKyAgICAgICAgQml0NCA9PiB3aGVuIGluIGFic29sdXRlIGNvb3JkaW5hdGVzIG1vZGUgKHZhbGlkIHdoZW4gRU5fUEtUX0dPIGlzIDEpOgorICAgICAgICAgICAgICAgIDA6IGxlZnQgYnV0dG9uIGlzIGdlbmVyYXRlZCBieSB0aGUgb24tcGFkIGNvbW1hbmQKKyAgICAgICAgICAgICAgICAxOiBsZWZ0IGJ1dHRvbiBpcyBnZW5lcmF0ZWQgYnkgdGhlIGV4dGVybmFsIGJ1dHRvbgorICAgICAgICBCaXQzID0+IDEKKyAgICAgICAgQml0MiA9PiBNaWRkbGUgQnV0dG9uLCAxIGlzIHByZXNzZWQsIDAgaXMgbm90IHByZXNzZWQuCisgICAgICAgIEJpdDEgPT4gUmlnaHQgQnV0dG9uLCAxIGlzIHByZXNzZWQsIDAgaXMgbm90IHByZXNzZWQuCisgICAgICAgIEJpdDAgPT4gTGVmdCBCdXR0b24sIDEgaXMgcHJlc3NlZCwgMCBpcyBub3QgcHJlc3NlZC4KK0J5dGUgMjogTWVzc2FnZSBUeXBlID0+IDB4QjcgKE11bHRpIEZpbmdlciwgTXVsdGkgQ29vcmRpbmF0ZSBtb2RlKQorQnl0ZSAzOiBCaXQ3fkJpdDYgPT4gRG9uJ3QgY2FyZQorICAgICAgICBCaXQ1fkJpdDQgPT4gTnVtYmVyIG9mIGZpbmdlcnMKKyAgICAgICAgQml0M35CaXQxID0+IFJlc2VydmVkCisgICAgICAgIEJpdDAgPT4gMTogZW50ZXIgZ2VzdHVyZSBtb2RlOyAwOiBsZWF2aW5nIGdlc3R1cmUgbW9kZQorQnl0ZSA0OiBCaXQ3ID0+IHNjcm9sbCByaWdodCBidXR0b24KKyAgICAgICAgQml0NiA9PiBzY3JvbGwgbGVmdCBidXR0b24KKyAgICAgICAgQml0NSA9PiBzY3JvbGwgdXAgYnV0dG9uCisgICAgICAgIEJpdDQgPT4gc2Nyb2xsIGRvd24gYnV0dG9uCisgICAgICAgICAgICAqIE5vdGUgdGhhdCBpZiBnZXN0dXJlIGFuZCBhZGRpdGlvbmFsIGJ1dHRvbihCaXQ0fkJpdDcpCisgICAgICAgICAgICAgIGhhcHBlbiBhdCB0aGUgc2FtZSB0aW1lLCB0aGUgYnV0dG9uIGluZm9ybWF0aW9uIHdpbGwgbm90CisgICAgICAgICAgICAgIGJlIHNlbnQuCisgICAgICAgIEJpdDN+Qml0MCA9PiBSZXNlcnZlZAorCitTYW1wbGUgc2VxdWVuY2Ugb2YgTXVsdGktZmluZ2VyLCBNdWx0aS1jb29yZGluYXRlIG1vZGU6CisKKwlub3RpZnkgcGFja2V0ICh2YWxpZCBiaXQgPT0gMSksIGFicyBwa3QgMSwgYWJzIHBrdCAyLCBhYnMgcGt0IDEsCisJYWJzIHBrdCAyLCAuLi4sIG5vdGlmeSBwYWNrZXQgKHZhbGlkIGJpdCA9PSAwKQorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyogQWJzb2x1dGUgcG9zaXRpb24gZm9yIFNUTDM4ODgtQ3ggYW5kIFNUTDM4ODgtRHguCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1NpbmdsZSBGaW5nZXIsIEFic29sdXRlIENvb3JkaW5hdGUgTW9kZSAoU0ZBQykKKyAgIEJpdCA3IDYgNSA0IDMgMiAxIDAgICAgICAgNyA2IDUgNCAzIDIgMSAwICAgICAgNyA2IDUgNCAzIDIgMSAwICAgICAgNyA2IDUgNCAzIDIgMSAwCitCWVRFICB8LS0tLS0tLS0tLS0tLS0tfEJZVEUgfC0tLS0tLS0tLS0tLS0tLXxCWVRFfC0tLS0tLS0tLS0tLS0tLXxCWVRFfC0tLS0tLS0tLS0tLS0tLXwKKyAgMSAgIHwwfDF8MHxQfDF8TXxSfEx8ICAyICB8WHxYfFh8WHxYfFh8WHxYfCAgMyB8WXxZfFl8WXxZfFl8WXxZfCAgNCB8cnxsfEJ8RnxYfFh8WXxZfAorICAgICAgfC0tLS0tLS0tLS0tLS0tLXwgICAgIHwtLS0tLS0tLS0tLS0tLS18ICAgIHwtLS0tLS0tLS0tLS0tLS18ICAgIHwtLS0tLS0tLS0tLS0tLS18CisKK0J5dGUgMTogQml0N35CaXQ2ID0+IDAwLCBOb3JtYWwgZGF0YSBwYWNrZXQKKyAgICAgICAgICAgICAgICAgID0+IDAxLCBBYnNvbHV0ZSBjb29yZGluYXRlcyBwYWNrZXQKKyAgICAgICAgICAgICAgICAgID0+IDEwLCBOb3RpZnkgcGFja2V0CisJQml0NSA9PiBDb29yZGluYXRlIG1vZGUoYWx3YXlzIDAgaW4gU0ZBQyBtb2RlKToKKwkJMDogc2luZ2xlLWZpbmdlciBhYnNvbHV0ZSBjb29yZGluYXRlcyAoU0ZBQykgbW9kZQorCQkxOiBtdWx0aS1maW5nZXIsIG11bHRpcGxlIGNvb3JkaW5hdGVzIChNRk1DKSBtb2RlCisJQml0NCA9PiAwOiBUaGUgTEVGVCBidXR0b24gaXMgZ2VuZXJhdGVkIGJ5IG9uLXBhZCBjb21tYW5kIChPUEMpCisJCTE6IFRoZSBMRUZUIGJ1dHRvbiBpcyBnZW5lcmF0ZWQgYnkgZXh0ZXJuYWwgYnV0dG9uCisJCURlZmF1bHQgaXMgMSBldmVuIGlmIHRoZSBMRUZUIGJ1dHRvbiBpcyBub3QgcHJlc3NlZC4KKwlCaXQzID0+IEFsd2F5cyAxLCBhcyBzcGVjaWZpZWQgYnkgUFMvMiBwcm90b2NvbC4KKwlCaXQyID0+IE1pZGRsZSBCdXR0b24sIDEgaXMgcHJlc3NlZCwgMCBpcyBub3QgcHJlc3NlZC4KKwlCaXQxID0+IFJpZ2h0IEJ1dHRvbiwgMSBpcyBwcmVzc2VkLCAwIGlzIG5vdCBwcmVzc2VkLgorCUJpdDAgPT4gTGVmdCBCdXR0b24sIDEgaXMgcHJlc3NlZCwgMCBpcyBub3QgcHJlc3NlZC4KK0J5dGUgMjogWCBjb29yZGluYXRlICh4cG9zWzk6Ml0pCitCeXRlIDM6IFkgY29vcmRpbmF0ZSAoeXBvc1s5OjJdKQorQnl0ZSA0OiBCaXQxfkJpdDAgPT4gWSBjb29yZGluYXRlICh4cG9zWzE6MF0pCisJQml0M35CaXQyID0+IFggY29vcmRpbmF0ZSAoeXBvc1sxOjBdKQorCUJpdDQgPT4gNHRoIG1vdXNlIGJ1dHRvbihmb3J3YXJkIG9uZSBwYWdlKQorCUJpdDUgPT4gNXRoIG1vdXNlIGJ1dHRvbihiYWNrd2FyZCBvbmUgcGFnZSkKKwlCaXQ2ID0+IHNjcm9sbCBsZWZ0IGJ1dHRvbgorCUJpdDcgPT4gc2Nyb2xsIHJpZ2h0IGJ1dHRvbgorCitNdWx0aSBGaW5nZXIsIE11bHRpcGxlIENvb3JkaW5hdGVzIE1vZGUgKE1GTUMpOgorICAgQml0IDcgNiA1IDQgMyAyIDEgMCAgICAgICA3IDYgNSA0IDMgMiAxIDAgICAgICA3IDYgNSA0IDMgMiAxIDAgICAgICA3IDYgNSA0IDMgMiAxIDAKK0JZVEUgIHwtLS0tLS0tLS0tLS0tLS18QllURSB8LS0tLS0tLS0tLS0tLS0tfEJZVEV8LS0tLS0tLS0tLS0tLS0tfEJZVEV8LS0tLS0tLS0tLS0tLS0tfAorICAxICAgfDB8MXwxfFB8MXxGfFJ8THwgIDIgIHxYfFh8WHxYfFh8WHxYfFh8ICAzIHxZfFl8WXxZfFl8WXxZfFl8ICA0IHxyfGx8QnxGfFh8WHxZfFl8CisgICAgICB8LS0tLS0tLS0tLS0tLS0tfCAgICAgfC0tLS0tLS0tLS0tLS0tLXwgICAgfC0tLS0tLS0tLS0tLS0tLXwgICAgfC0tLS0tLS0tLS0tLS0tLXwKKworQnl0ZSAxOiBCaXQ3fkJpdDYgPT4gMDAsIE5vcm1hbCBkYXRhIHBhY2tldAorICAgICAgICAgICAgICAgICAgPT4gMDEsIEFic29sdXRlIGNvb3JkaW5hdGlvbiBwYWNrZXQKKyAgICAgICAgICAgICAgICAgID0+IDEwLCBOb3RpZnkgcGFja2V0CisJQml0NSA9PiBDb29yZGluYXRlIG1vZGUgKGFsd2F5cyAxIGluIE1GTUMgbW9kZSk6CisJCTA6IHNpbmdsZS1maW5nZXIgYWJzb2x1dGUgY29vcmRpbmF0ZXMgKFNGQUMpIG1vZGUKKwkJMTogbXVsdGktZmluZ2VyLCBtdWx0aXBsZSBjb29yZGluYXRlcyAoTUZNQykgbW9kZQorCUJpdDQgPT4gMDogVGhlIExFRlQgYnV0dG9uIGlzIGdlbmVyYXRlZCBieSBvbi1wYWQgY29tbWFuZCAoT1BDKQorCQkxOiBUaGUgTEVGVCBidXR0b24gaXMgZ2VuZXJhdGVkIGJ5IGV4dGVybmFsIGJ1dHRvbgorCQlEZWZhdWx0IGlzIDEgZXZlbiBpZiB0aGUgTEVGVCBidXR0b24gaXMgbm90IHByZXNzZWQuCisJQml0MyA9PiBBbHdheXMgMSwgYXMgc3BlY2lmaWVkIGJ5IFBTLzIgcHJvdG9jb2wuCisJQml0MiA9PiBGaW5nZXIgaW5kZXgsIDAgaXMgdGhlIGZpcnN0IGZpbmdlciwgMSBpcyB0aGUgc2Vjb25kIGZpbmdlci4KKwkJSWYgYml0IDEgYW5kIDAgYXJlIGFsbCAxIGFuZCBiaXQgNCBpcyAwLCB0aGUgbWlkZGxlIGV4dGVybmFsCisJCWJ1dHRvbiBpcyBwcmVzc2VkLgorCUJpdDEgPT4gUmlnaHQgQnV0dG9uLCAxIGlzIHByZXNzZWQsIDAgaXMgbm90IHByZXNzZWQuCisJQml0MCA9PiBMZWZ0IEJ1dHRvbiwgMSBpcyBwcmVzc2VkLCAwIGlzIG5vdCBwcmVzc2VkLgorQnl0ZSAyOiBYIGNvb3JkaW5hdGUgKHhwb3NbOToyXSkKK0J5dGUgMzogWSBjb29yZGluYXRlICh5cG9zWzk6Ml0pCitCeXRlIDQ6IEJpdDF+Qml0MCA9PiBZIGNvb3JkaW5hdGUgKHhwb3NbMTowXSkKKwlCaXQzfkJpdDIgPT4gWCBjb29yZGluYXRlICh5cG9zWzE6MF0pCisJQml0NCA9PiA0dGggbW91c2UgYnV0dG9uKGZvcndhcmQgb25lIHBhZ2UpCisJQml0NSA9PiA1dGggbW91c2UgYnV0dG9uKGJhY2t3YXJkIG9uZSBwYWdlKQorCUJpdDYgPT4gc2Nyb2xsIGxlZnQgYnV0dG9uCisJQml0NyA9PiBzY3JvbGwgcmlnaHQgYnV0dG9uCisKKyAgV2hlbiBvbmUgb2YgdGhlIHR3byBmaW5nZXJzIGlzIHVwLCB0aGUgZGV2aWNlIHdpbGwgb3V0cHV0IGZvdXIgY29uc2VjdXRpdmUKK01GTUMjMCByZXBvcnQgcGFja2V0cyB3aXRoIHplcm8gWCBhbmQgWSB0byByZXByZXNlbnQgMXN0IGZpbmdlciBpcyB1cCBvcgorZm91ciBjb25zZWN1dGl2ZSBNRk1DIzEgcmVwb3J0IHBhY2tldHMgd2l0aCB6ZXJvIFggYW5kIFkgdG8gcmVwcmVzZW50IHRoYXQKK3RoZSAybmQgZmluZ2VyIGlzIHVwLiAgT24gdGhlIG90aGVyIGhhbmQsIGlmIGJvdGggZmluZ2VycyBhcmUgdXAsIHRoZSBkZXZpY2UKK3dpbGwgb3V0cHV0IGZvdXIgY29uc2VjdXRpdmUgc2luZ2xlLWZpbmdlciwgYWJzb2x1dGUgY29vcmRpbmF0ZShTRkFDKSBwYWNrZXRzCit3aXRoIHplcm8gWCBhbmQgWS4KKworTm90aWZ5IFBhY2tldCBmb3IgU1RMMzg4OC1DeC9EeAorICAgQml0IDcgNiA1IDQgMyAyIDEgMCAgICAgICA3IDYgNSA0IDMgMiAxIDAgICAgICA3IDYgNSA0IDMgMiAxIDAgICAgICA3IDYgNSA0IDMgMiAxIDAKK0JZVEUgIHwtLS0tLS0tLS0tLS0tLS18QllURSB8LS0tLS0tLS0tLS0tLS0tfEJZVEV8LS0tLS0tLS0tLS0tLS0tfEJZVEV8LS0tLS0tLS0tLS0tLS0tfAorICAxICAgfDF8MHwwfFB8MXxNfFJ8THwgIDIgIHxDfEN8Q3xDfEN8Q3xDfEN8ICAzIHwwfDB8RnxGfDB8MHwwfGl8ICA0IHxyfGx8dXxkfDB8MHwwfDB8CisgICAgICB8LS0tLS0tLS0tLS0tLS0tfCAgICAgfC0tLS0tLS0tLS0tLS0tLXwgICAgfC0tLS0tLS0tLS0tLS0tLXwgICAgfC0tLS0tLS0tLS0tLS0tLXwKKworQnl0ZSAxOiBCaXQ3fkJpdDYgPT4gMDAsIE5vcm1hbCBkYXRhIHBhY2tldAorICAgICAgICAgICAgICAgICAgPT4gMDEsIEFic29sdXRlIGNvb3JkaW5hdGVzIHBhY2tldAorICAgICAgICAgICAgICAgICAgPT4gMTAsIE5vdGlmeSBwYWNrZXQKKwlCaXQ1ID0+IEFsd2F5cyAwCisJQml0NCA9PiAwOiBUaGUgTEVGVCBidXR0b24gaXMgZ2VuZXJhdGVkIGJ5IG9uLXBhZCBjb21tYW5kKE9QQykKKwkJMTogVGhlIExFRlQgYnV0dG9uIGlzIGdlbmVyYXRlZCBieSBleHRlcm5hbCBidXR0b24KKwkJRGVmYXVsdCBpcyAxIGV2ZW4gaWYgdGhlIExFRlQgYnV0dG9uIGlzIG5vdCBwcmVzc2VkLgorCUJpdDMgPT4gMQorCUJpdDIgPT4gTWlkZGxlIEJ1dHRvbiwgMSBpcyBwcmVzc2VkLCAwIGlzIG5vdCBwcmVzc2VkLgorCUJpdDEgPT4gUmlnaHQgQnV0dG9uLCAxIGlzIHByZXNzZWQsIDAgaXMgbm90IHByZXNzZWQuCisJQml0MCA9PiBMZWZ0IEJ1dHRvbiwgMSBpcyBwcmVzc2VkLCAwIGlzIG5vdCBwcmVzc2VkLgorQnl0ZSAyOiBNZXNzYWdlIHR5cGU6CisJMHhiYSA9PiBnZXN0dXJlIGluZm9ybWF0aW9uCisJMHhjMCA9PiBvbmUgZmluZ2VyIGhvbGQtcm90YXRpbmcgZ2VzdHVyZQorQnl0ZSAzOiBUaGUgZmlyc3QgcGFyYW1ldGVyIGZvciB0aGUgcmVjZWl2ZWQgbWVzc2FnZToKKwkweGJhID0+IGdlc3R1cmUgSUQgKHJlZmVyIHRvIHRoZSAnR2VzdHVyZSBJRCcgc2VjdGlvbikKKwkweGMwID0+IHJlZ2lvbiBJRAorQnl0ZSA0OiBUaGUgc2Vjb25kIHBhcmFtZXRlciBmb3IgdGhlIHJlY2VpdmVkIG1lc3NhZ2U6CisJMHhiYSA9PiBOL0EKKwkweGMwID0+IGZpbmdlciB1cC9kb3duIGluZm9ybWF0aW9uCisKK1NhbXBsZSBzZXF1ZW5jZSBvZiBNdWx0aS1maW5nZXIsIE11bHRpLWNvb3JkaW5hdGVzIG1vZGU6CisKKwlub3RpZnkgcGFja2V0ICh2YWxpZCBiaXQgPT0gMSksIE1GTUMgcGFja2V0IDEgKGJ5dGUgMSwgYml0IDIgPT0gMCksCisJTUZNQyBwYWNrZXQgMiAoYnl0ZSAxLCBiaXQgMiA9PSAxKSwgTUZNQyBwYWNrZXQgMSwgTUZNQyBwYWNrZXQgMiwKKwkuLi4sIG5vdGlmeSBwYWNrZXQgKHZhbGlkIGJpdCA9PSAwKQorCisJVGhhdCBpcywgd2hlbiB0aGUgZGV2aWNlIGlzIGluIE1GTUMgbW9kZSwgdGhlIGhvc3Qgd2lsbCByZWNlaXZlCisJaW50ZXJsZWF2ZWQgYWJzb2x1dGUgY29vcmRpbmF0ZSBwYWNrZXRzIGZvciBlYWNoIGZpbmdlci4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqIEZTUCBFbmFibGUvRGlzYWJsZSBwYWNrZXQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgQml0IDcgNiA1IDQgMyAyIDEgMCAgICAgICA3IDYgNSA0IDMgMiAxIDAgICAgICA3IDYgNSA0IDMgMiAxIDAgICAgICA3IDYgNSA0IDMgMiAxIDAKK0JZVEUgIHwtLS0tLS0tLS0tLS0tLS18QllURSB8LS0tLS0tLS0tLS0tLS0tfEJZVEV8LS0tLS0tLS0tLS0tLS0tfEJZVEV8LS0tLS0tLS0tLS0tLS0tfAorICAxICAgfFl8WHwwfDB8MXxNfFJ8THwgIDIgIHwwfDF8MHwxfDF8MHwxfEV8ICAzIHwgfCB8IHwgfCB8IHwgfCB8ICA0IHwgfCB8IHwgfCB8IHwgfCB8CisgICAgICB8LS0tLS0tLS0tLS0tLS0tfCAgICAgfC0tLS0tLS0tLS0tLS0tLXwgICAgfC0tLS0tLS0tLS0tLS0tLXwgICAgfC0tLS0tLS0tLS0tLS0tLXwKKworRlNQIHdpbGwgc2VuZCBvdXQgZW5hYmxlL2Rpc2FibGUgcGFja2V0IHdoZW4gRlNQIHJlY2VpdmUgUFMvMiBlbmFibGUvZGlzYWJsZQorY29tbWFuZC4gSG9zdCB3aWxsIHJlY2VpdmUgdGhlIHBhY2tldCB3aGljaCBNaWRkbGUsIFJpZ2h0LCBMZWZ0IGJ1dHRvbiB3aWxsCitiZSBzZXQuIFRoZSBwYWNrZXQgb25seSB1c2UgYnl0ZSAwIGFuZCBieXRlIDEgYXMgYSBwYXR0ZXJuIG9mIG9yaWdpbmFsIHBhY2tldC4KK0lnbm9yZSB0aGUgb3RoZXIgYnl0ZXMgb2YgdGhlIHBhY2tldC4KKworQnl0ZSAxOiBCaXQ3ID0+IDAsIFkgb3ZlcmZsb3cKKyAgICAgICAgQml0NiA9PiAwLCBYIG92ZXJmbG93CisJQml0NSA9PiAwLCBZIHNpZ24gYml0CisgICAgICAgIEJpdDQgPT4gMCwgWCBzaWduIGJpdAorCUJpdDMgPT4gMQorCUJpdDIgPT4gMSwgTWlkZGxlIEJ1dHRvbgorICAgICAgICBCaXQxID0+IDEsIFJpZ2h0IEJ1dHRvbgorICAgICAgICBCaXQwID0+IDEsIExlZnQgQnV0dG9uCitCeXRlIDI6IEJpdDd+MSA9PiAoMDEwMTEwMWIpCisgICAgICAgIEJpdDAgPT4gMSA9IEVuYWJsZQorCQkwID0gRGlzYWJsZQorQnl0ZSAzOiBEb24ndCBjYXJlCitCeXRlIDQ6IERvbid0IGNhcmUgKE1PVVNFIElEIDMsIDQpCitCeXRlIDV+ODogRG9uJ3QgY2FyZSAoQWJzb2x1dGUgcGFja2V0KQorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyogUFMvMiBDb21tYW5kIFNldAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZTUCBzdXBwb3J0cyBiYXNpYyBQUy8yIGNvbW1hbmRpbmcgc2V0IGFuZCBtb2RlcywgcmVmZXIgdG8gZm9sbG93aW5nIFVSTCBmb3IKK2RldGFpbHMgYWJvdXQgUFMvMiBjb21tYW5kczoKKworaHR0cDovL3d3dy5jb21wdXRlci1lbmdpbmVlcmluZy5vcmcvcHMybW91c2UvCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKiBQcm9ncmFtbWluZyBTZXF1ZW5jZSBmb3IgRGV0ZXJtaW5pbmcgUGFja2V0IFBhcnNpbmcgRmxvdworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisxLiBJZGVudGlmeSBGU1AgYnkgcmVhZGluZyBkZXZpY2UgSUQoMHgwMCkgYW5kIHZlcnNpb24oMHgwMSkgcmVnaXN0ZXIKKworMmEuIEZvciBGU1AgdmVyc2lvbiA8IFNUTDM4ODggQ3gsIGRldGVybWluZSBudW1iZXIgb2YgYnV0dG9ucyBieSByZWFkaW5nCisgICAgdGhlICd0ZXN0IG1vZGUgc3RhdHVzJyAoMHgyMCkgcmVnaXN0ZXI6CisKKwlidXR0b25zID0gcmVnWzB4MjBdICYgMHgzMAorCisJaWYgYnV0dG9ucyA9PSAweDMwIG9yIGJ1dHRvbnMgPT0gMHgyMDoKKwkJIyB0d28vZm91ciBidXR0b25zCisJCVJlZmVyIHRvICdGaW5nZXIgU2Vuc2luZyBQYWQgUFMvMiBNb3VzZSBJbnRlbGxpbW91c2UnCisJCXNlY3Rpb24gQSBmb3IgcGFja2V0IHBhcnNpbmcgZGV0YWlsKGlnbm9yZSBieXRlIDQsIGJpdCB+IDcpCisJZWxpZiBidXR0b25zID09IDB4MTA6CisJCSMgNiBidXR0b25zCisJCVJlZmVyIHRvICdGaW5nZXIgU2Vuc2luZyBQYWQgUFMvMiBNb3VzZSBJbnRlbGxpbW91c2UnCisJCXNlY3Rpb24gQiBmb3IgcGFja2V0IHBhcnNpbmcgZGV0YWlsCisJZWxpZiBidXR0b25zID09IDB4MDA6CisJCSMgNiBidXR0b25zCisJCVJlZmVyIHRvICdGaW5nZXIgU2Vuc2luZyBQYWQgUFMvMiBNb3VzZSBJbnRlbGxpbW91c2UnCisJCXNlY3Rpb24gQSBmb3IgcGFja2V0IHBhcnNpbmcgZGV0YWlsCisKKzJiLiBGb3IgRlNQIHZlcnNpb24gPj0gU1RMMzg4OCBDeDoKKwlSZWZlciB0byAnRmluZ2VyIFNlbnNpbmcgUGFkIFBTLzIgTW91c2UgSW50ZWxsaW1vdXNlJworCXNlY3Rpb24gQSBmb3IgcGFja2V0IHBhcnNpbmcgZGV0YWlsIChpZ25vcmUgYnl0ZSA0LCBiaXQgfiA3KQorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyogUHJvZ3JhbW1pbmcgU2VxdWVuY2UgZm9yIFJlZ2lzdGVyIFJlYWRpbmcvV3JpdGluZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlZ2lzdGVyIGludmVyc2lvbiByZXF1aXJlbWVudDoKKworICBGb2xsb3dpbmcgdmFsdWVzIG5lZWRlZCB0byBiZSBpbnZlcnRlZCh0aGUgJ34nIG9wZXJhdG9yIGluIEMpIGJlZm9yZSBiZWluZworc2VudCB0byBGU1A6CisKKwkweGU4LCAweGU5LCAweGVlLCAweGYyLCAweGYzIGFuZCAweGZmLgorCitSZWdpc3RlciBzd2FwcGluZyByZXF1aXJlbWVudDoKKworICBGb2xsb3dpbmcgdmFsdWVzIG5lZWRlZCB0byBoYXZlIHRoZWlyIGhpZ2hlciA0IGJpdHMgYW5kIGxvd2VyIDQgYml0cyBiZWluZworc3dhcHBlZCBiZWZvcmUgYmVpbmcgc2VudCB0byBGU1A6CisKKwkxMCwgMjAsIDQwLCA2MCwgODAsIDEwMCBhbmQgMjAwLgorCitSZWdpc3RlciByZWFkaW5nIHNlcXVlbmNlOgorCisJMS4gc2VuZCAweGYzIFBTLzIgY29tbWFuZCB0byBGU1A7CisKKwkyLiBzZW5kIDB4NjYgUFMvMiBjb21tYW5kIHRvIEZTUDsKKworCTMuIHNlbmQgMHg4OCBQUy8yIGNvbW1hbmQgdG8gRlNQOworCisJNC4gc2VuZCAweGYzIFBTLzIgY29tbWFuZCB0byBGU1A7CisKKwk1LiBpZiB0aGUgcmVnaXN0ZXIgYWRkcmVzcyBiZWluZyB0byByZWFkIGlzIG5vdCByZXF1aXJlZCB0byBiZQorCWludmVydGVkKHJlZmVyIHRvIHRoZSAnUmVnaXN0ZXIgaW52ZXJzaW9uIHJlcXVpcmVtZW50JyBzZWN0aW9uKSwKKwlnb3RvIHN0ZXAgNgorCisJNWEuIHNlbmQgMHg2OCBQUy8yIGNvbW1hbmQgdG8gRlNQOworCisJNWIuIHNlbmQgdGhlIGludmVydGVkIHJlZ2lzdGVyIGFkZHJlc3MgdG8gRlNQIGFuZCBnb3RvIHN0ZXAgODsKKworCTYuIGlmIHRoZSByZWdpc3RlciBhZGRyZXNzIGJlaW5nIHRvIHJlYWQgaXMgbm90IHJlcXVpcmVkIHRvIGJlCisJc3dhcHBlZChyZWZlciB0byB0aGUgJ1JlZ2lzdGVyIHN3YXBwaW5nIHJlcXVpcmVtZW50JyBzZWN0aW9uKSwKKwlnb3RvIHN0ZXAgNworCisJNmEuIHNlbmQgMHhjYyBQUy8yIGNvbW1hbmQgdG8gRlNQOworCisJNmIuIHNlbmQgdGhlIHN3YXBwZWQgcmVnaXN0ZXIgYWRkcmVzcyB0byBGU1AgYW5kIGdvdG8gc3RlcCA4OworCisJNy4gc2VuZCAweDY2IFBTLzIgY29tbWFuZCB0byBGU1A7CisKKwk3YS4gc2VuZCB0aGUgb3JpZ2luYWwgcmVnaXN0ZXIgYWRkcmVzcyB0byBGU1AgYW5kIGdvdG8gc3RlcCA4OworCisJOC4gc2VuZCAweGU5KHN0YXR1cyByZXF1ZXN0KSBQUy8yIGNvbW1hbmQgdG8gRlNQOworCisJOS4gdGhlIDR0aCBieXRlIG9mIHRoZSByZXNwb25zZSByZWFkIGZyb20gRlNQIHNob3VsZCBiZSB0aGUKKwlyZXF1ZXN0ZWQgcmVnaXN0ZXIgdmFsdWUoPz8gaW5kaWNhdGVzIGRvbid0IGNhcmUgYnl0ZSk6CisKKwkJaG9zdDogMHhlOQorCQkzODg4OiAweGZhICg/PykgKD8/KSAodmFsKQorCisJKiBOb3RlIHRoYXQgc2luY2UgdGhlIEN4IHJlbGVhc2UsIHRoZSBoYXJkd2FyZSB3aWxsIHJldHVybiAxJ3MKKwljb21wbGVtZW50IG9mIHRoZSByZWdpc3RlciB2YWx1ZSBhdCB0aGUgM3JkIGJ5dGUgb2Ygc3RhdHVzIHJlcXVlc3QKKwlyZXN1bHQ6CisKKwkJaG9zdDogMHhlOQorCQkzODg4OiAweGZhICg/PykgKH52YWwpICh2YWwpCisKK1JlZ2lzdGVyIHdyaXRpbmcgc2VxdWVuY2U6CisKKwkxLiBzZW5kIDB4ZjMgUFMvMiBjb21tYW5kIHRvIEZTUDsKKworCTIuIGlmIHRoZSByZWdpc3RlciBhZGRyZXNzIGJlaW5nIHRvIHdyaXRlIGlzIG5vdCByZXF1aXJlZCB0byBiZQorCWludmVydGVkKHJlZmVyIHRvIHRoZSAnUmVnaXN0ZXIgaW52ZXJzaW9uIHJlcXVpcmVtZW50JyBzZWN0aW9uKSwKKwlnb3RvIHN0ZXAgMworCisJMmEuIHNlbmQgMHg3NCBQUy8yIGNvbW1hbmQgdG8gRlNQOworCisJMmIuIHNlbmQgdGhlIGludmVydGVkIHJlZ2lzdGVyIGFkZHJlc3MgdG8gRlNQIGFuZCBnb3RvIHN0ZXAgNTsKKworCTMuIGlmIHRoZSByZWdpc3RlciBhZGRyZXNzIGJlaW5nIHRvIHdyaXRlIGlzIG5vdCByZXF1aXJlZCB0byBiZQorCXN3YXBwZWQocmVmZXIgdG8gdGhlICdSZWdpc3RlciBzd2FwcGluZyByZXF1aXJlbWVudCcgc2VjdGlvbiksCisJZ290byBzdGVwIDQKKworCTNhLiBzZW5kIDB4NzcgUFMvMiBjb21tYW5kIHRvIEZTUDsKKworCTNiLiBzZW5kIHRoZSBzd2FwcGVkIHJlZ2lzdGVyIGFkZHJlc3MgdG8gRlNQIGFuZCBnb3RvIHN0ZXAgNTsKKworCTQuIHNlbmQgMHg1NSBQUy8yIGNvbW1hbmQgdG8gRlNQOworCisJNGEuIHNlbmQgdGhlIHJlZ2lzdGVyIGFkZHJlc3MgdG8gRlNQIGFuZCBnb3RvIHN0ZXAgNTsKKworCTUuIHNlbmQgMHhmMyBQUy8yIGNvbW1hbmQgdG8gRlNQOworCisJNi4gaWYgdGhlIHJlZ2lzdGVyIHZhbHVlIGJlaW5nIHRvIHdyaXRlIGlzIG5vdCByZXF1aXJlZCB0byBiZQorCWludmVydGVkKHJlZmVyIHRvIHRoZSAnUmVnaXN0ZXIgaW52ZXJzaW9uIHJlcXVpcmVtZW50JyBzZWN0aW9uKSwKKwlnb3RvIHN0ZXAgNworCisJNmEuIHNlbmQgMHg0NyBQUy8yIGNvbW1hbmQgdG8gRlNQOworCisJNmIuIHNlbmQgdGhlIGludmVydGVkIHJlZ2lzdGVyIHZhbHVlIHRvIEZTUCBhbmQgZ290byBzdGVwIDk7CisKKwk3LiBpZiB0aGUgcmVnaXN0ZXIgdmFsdWUgYmVpbmcgdG8gd3JpdGUgaXMgbm90IHJlcXVpcmVkIHRvIGJlCisJc3dhcHBlZChyZWZlciB0byB0aGUgJ1JlZ2lzdGVyIHN3YXBwaW5nIHJlcXVpcmVtZW50JyBzZWN0aW9uKSwKKwlnb3RvIHN0ZXAgOAorCisJN2EuIHNlbmQgMHg0NCBQUy8yIGNvbW1hbmQgdG8gRlNQOworCisJN2IuIHNlbmQgdGhlIHN3YXBwZWQgcmVnaXN0ZXIgdmFsdWUgdG8gRlNQIGFuZCBnb3RvIHN0ZXAgOTsKKworCTguIHNlbmQgMHgzMyBQUy8yIGNvbW1hbmQgdG8gRlNQOworCisJOGEuIHNlbmQgdGhlIHJlZ2lzdGVyIHZhbHVlIHRvIEZTUDsKKworCTkuIHRoZSByZWdpc3RlciB3cml0aW5nIHNlcXVlbmNlIGlzIGNvbXBsZXRlZC4KKworCSogTm90ZSB0aGF0IHNpbmNlIHRoZSBDeCByZWxlYXNlLCB0aGUgaGFyZHdhcmUgd2lsbCByZXR1cm4gMSdzCisJY29tcGxlbWVudCBvZiB0aGUgcmVnaXN0ZXIgdmFsdWUgYXQgdGhlIDNyZCBieXRlIG9mIHN0YXR1cyByZXF1ZXN0CisJcmVzdWx0LiBIb3N0IGNhbiBvcHRpb25hbGx5IHNlbmQgYW5vdGhlciAweGU5IChzdGF0dXMgcmVxdWVzdCkgUFMvMgorCWNvbW1hbmQgdG8gRlNQIGF0IHRoZSBlbmQgb2YgcmVnaXN0ZXIgd3JpdGluZyB0byB2ZXJpZnkgdGhhdCB0aGUKKwlyZWdpc3RlciB3cml0aW5nIG9wZXJhdGlvbiBpcyBzdWNjZXNzZnVsICg/PyBpbmRpY2F0ZXMgZG9uJ3QgY2FyZQorCWJ5dGUpOgorCisJCWhvc3Q6IDB4ZTkKKwkJMzg4ODogMHhmYSAoPz8pICh+dmFsKSAodmFsKQorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyogUHJvZ3JhbW1pbmcgU2VxdWVuY2UgZm9yIFBhZ2UgUmVnaXN0ZXIgUmVhZGluZy9Xcml0aW5nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICBJbiBvcmRlciB0byBvdmVyY29tZSB0aGUgbGltaXRhdGlvbiBvZiBtYXhpbXVtIG51bWJlciBvZiByZWdpc3RlcnMKK3N1cHBvcnRlZCwgdGhlIGhhcmR3YXJlIHNlcGFyYXRlcyByZWdpc3RlciBpbnRvIGRpZmZlcmVudCBncm91cHMgY2FsbGVkCisncGFnZXMuJyBFYWNoIHBhZ2UgaXMgYWJsZSB0byBpbmNsdWRlIHVwIHRvIDI1NSByZWdpc3RlcnMuCisKKyAgVGhlIGRlZmF1bHQgcGFnZSBhZnRlciBwb3dlciB1cCBpcyAweDgyOyB0aGVyZWZvcmUsIGlmIG9uZSBoYXMgdG8gZ2V0CithY2Nlc3MgdG8gcmVnaXN0ZXIgMHg4MzAxLCBvbmUgaGFzIHRvIHVzZSBmb2xsb3dpbmcgc2VxdWVuY2UgdG8gc3dpdGNoCit0byBwYWdlIDB4ODMsIHRoZW4gc3RhcnQgcmVhZGluZy93cml0aW5nIGZyb20vdG8gb2Zmc2V0IDB4MDEgYnkgdXNpbmcKK3RoZSByZWdpc3RlciByZWFkL3dyaXRlIHNlcXVlbmNlIGRlc2NyaWJlZCBpbiBwcmV2aW91cyBzZWN0aW9uLgorCitQYWdlIHJlZ2lzdGVyIHJlYWRpbmcgc2VxdWVuY2U6CisKKwkxLiBzZW5kIDB4ZjMgUFMvMiBjb21tYW5kIHRvIEZTUDsKKworCTIuIHNlbmQgMHg2NiBQUy8yIGNvbW1hbmQgdG8gRlNQOworCisJMy4gc2VuZCAweDg4IFBTLzIgY29tbWFuZCB0byBGU1A7CisKKwk0LiBzZW5kIDB4ZjMgUFMvMiBjb21tYW5kIHRvIEZTUDsKKworCTUuIHNlbmQgMHg4MyBQUy8yIGNvbW1hbmQgdG8gRlNQOworCisJNi4gc2VuZCAweDg4IFBTLzIgY29tbWFuZCB0byBGU1A7CisKKwk3LiBzZW5kIDB4ZTkoc3RhdHVzIHJlcXVlc3QpIFBTLzIgY29tbWFuZCB0byBGU1A7CisKKwk4LiB0aGUgcmVzcG9uc2UgcmVhZCBmcm9tIEZTUCBzaG91bGQgYmUgdGhlIHJlcXVlc3RlZCBwYWdlIHZhbHVlLgorCitQYWdlIHJlZ2lzdGVyIHdyaXRpbmcgc2VxdWVuY2U6CisKKwkxLiBzZW5kIDB4ZjMgUFMvMiBjb21tYW5kIHRvIEZTUDsKKworCTIuIHNlbmQgMHgzOCBQUy8yIGNvbW1hbmQgdG8gRlNQOworCisJMy4gc2VuZCAweDg4IFBTLzIgY29tbWFuZCB0byBGU1A7CisKKwk0LiBzZW5kIDB4ZjMgUFMvMiBjb21tYW5kIHRvIEZTUDsKKworCTUuIGlmIHRoZSBwYWdlIGFkZHJlc3MgYmVpbmcgd3JpdHRlbiBpcyBub3QgcmVxdWlyZWQgdG8gYmUKKwlpbnZlcnRlZChyZWZlciB0byB0aGUgJ1JlZ2lzdGVyIGludmVyc2lvbiByZXF1aXJlbWVudCcgc2VjdGlvbiksCisJZ290byBzdGVwIDYKKworCTVhLiBzZW5kIDB4NDcgUFMvMiBjb21tYW5kIHRvIEZTUDsKKworCTViLiBzZW5kIHRoZSBpbnZlcnRlZCBwYWdlIGFkZHJlc3MgdG8gRlNQIGFuZCBnb3RvIHN0ZXAgOTsKKworCTYuIGlmIHRoZSBwYWdlIGFkZHJlc3MgYmVpbmcgd3JpdHRlbiBpcyBub3QgcmVxdWlyZWQgdG8gYmUKKwlzd2FwcGVkKHJlZmVyIHRvIHRoZSAnUmVnaXN0ZXIgc3dhcHBpbmcgcmVxdWlyZW1lbnQnIHNlY3Rpb24pLAorCWdvdG8gc3RlcCA3CisKKwk2YS4gc2VuZCAweDQ0IFBTLzIgY29tbWFuZCB0byBGU1A7CisKKwk2Yi4gc2VuZCB0aGUgc3dhcHBlZCBwYWdlIGFkZHJlc3MgdG8gRlNQIGFuZCBnb3RvIHN0ZXAgOTsKKworCTcuIHNlbmQgMHgzMyBQUy8yIGNvbW1hbmQgdG8gRlNQOworCisJOC4gc2VuZCB0aGUgcGFnZSBhZGRyZXNzIHRvIEZTUDsKKworCTkuIHRoZSBwYWdlIHJlZ2lzdGVyIHdyaXRpbmcgc2VxdWVuY2UgaXMgY29tcGxldGVkLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyogR2VzdHVyZSBJRAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgVW5saWtlIG90aGVyIGRldmljZXMgd2hpY2ggc2VuZHMgbXVsdGlwbGUgZmluZ2VycycgY29vcmRpbmF0ZXMgdG8gaG9zdCwKK0ZTUCBwcm9jZXNzZXMgbXVsdGlwbGUgZmluZ2VycycgY29vcmRpbmF0ZXMgaW50ZXJuYWxseSBhbmQgY29udmVydCB0aGVtCitpbnRvIGEgOCBiaXRzIGludGVnZXIsIG5hbWVseSAnR2VzdHVyZSBJRC4nICBGb2xsb3dpbmcgaXMgYSBsaXN0IG9mCitzdXBwb3J0ZWQgZ2VzdHVyZSBJRHM6CisKKwlJRAlEZXNjcmlwdGlvbgorCTB4ODYJMiBmaW5nZXIgc3RyYWlnaHQgdXAKKwkweDgyCTIgZmluZ2VyIHN0cmFpZ2h0IGRvd24KKwkweDgwCTIgZmluZ2VyIHN0cmFpZ2h0IHJpZ2h0CisJMHg4NAkyIGZpbmdlciBzdHJhaWdodCBsZWZ0CisJMHg4ZgkyIGZpbmdlciB6b29tIGluCisJMHg4YgkyIGZpbmdlciB6b29tIG91dAorCTB4YzAJMiBmaW5nZXIgY3VydmUsIGNvdW50ZXIgY2xvY2t3aXNlCisJMHhjNAkyIGZpbmdlciBjdXJ2ZSwgY2xvY2t3aXNlCisJMHgyZQkzIGZpbmdlciBzdHJhaWdodCB1cAorCTB4MmEJMyBmaW5nZXIgc3RyYWlnaHQgZG93bgorCTB4MjgJMyBmaW5nZXIgc3RyYWlnaHQgcmlnaHQKKwkweDJjCTMgZmluZ2VyIHN0cmFpZ2h0IGxlZnQKKwkweDM4CXBhbG0KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisqIFJlZ2lzdGVyIExpc3RpbmcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgIFJlZ2lzdGVycyBhcmUgcmVwcmVzZW50ZWQgaW4gMTYgYml0cyB2YWx1ZXMuIFRoZSBoaWdoZXIgOCBiaXRzIHJlcHJlc2VudAordGhlIHBhZ2UgYWRkcmVzcyBhbmQgdGhlIGxvd2VyIDggYml0cyByZXByZXNlbnQgdGhlIHJlbGF0aXZlIG9mZnNldCB3aXRoaW4KK3RoYXQgcGFydGljdWxhciBwYWdlLiAgUmVmZXIgdG8gdGhlICdQcm9ncmFtbWluZyBTZXF1ZW5jZSBmb3IgUGFnZSBSZWdpc3RlcgorUmVhZGluZy9Xcml0aW5nJyBzZWN0aW9uIGZvciBpbnN0cnVjdGlvbnMgb24gaG93IHRvIGNoYW5nZSBjdXJyZW50IHBhZ2UKK2FkZHJlc3MuCisKK29mZnNldAl3aWR0aAkJZGVmYXVsdAlyL3cJbmFtZQorMHg4MjAwCWJpdDd+Yml0MAkweDAxCVJPCWRldmljZSBJRAorCisweDgyMDEJYml0N35iaXQwCQlSVwl2ZXJzaW9uIElECisJCQkJCTB4YzE6IFNUTDM4ODggQXgKKwkJCQkJMHhkMCB+IDB4ZDI6IFNUTDM4ODggQngKKwkJCQkJMHhlMCB+IDB4ZTE6IFNUTDM4ODggQ3gKKwkJCQkJMHhlMiB+IDB4ZTM6IFNUTDM4ODggRHgKKworMHg4MjAyCWJpdDd+Yml0MAkweDAxCVJPCXZlbmRvciBJRAorCisweDgyMDMJYml0N35iaXQwCTB4MDEJUk8JcHJvZHVjdCBJRAorCisweDgyMDQJYml0M35iaXQwCTB4MDEJUlcJcmV2aXNpb24gSUQKKworMHg4MjBiCQkJCQl0ZXN0IG1vZGUgc3RhdHVzIDEKKwliaXQzCQkxCVJPCTA6IHJvdGF0ZSAxODAgZGVncmVlCisJCQkJCTE6IG5vIHJvdGF0aW9uCisJCQkJCSpvbmx5IHN1cHBvcnRlZCBieSBIL1cgcHJpb3IgdG8gQ3gKKworMHg4MjBmCQkJCQlyZWdpc3RlciBmaWxlIHBhZ2UgY29udHJvbAorCWJpdDIJCTAJUlcJMTogcm90YXRlIDE4MCBkZWdyZWUKKwkJCQkJMDogbm8gcm90YXRpb24KKwkJCQkJKnN1cHBvcnRlZCBzaW5jZSBDeAorCisJYml0MAkJMAlSVwkxIHRvIGVuYWJsZSBwYWdlIDEgcmVnaXN0ZXIgZmlsZXMKKwkJCQkJKm9ubHkgc3VwcG9ydGVkIGJ5IEgvVyBwcmlvciB0byBDeAorCisweDgyMTAJCQkJUlcJc3lzdGVtIGNvbnRyb2wgMQorCWJpdDAJCTEJUlcJUmVzZXJ2ZWQsIG11c3QgYmUgMQorCWJpdDEJCTAJUlcJUmVzZXJ2ZWQsIG11c3QgYmUgMAorCWJpdDQJCTAJUlcJUmVzZXJ2ZWQsIG11c3QgYmUgMAorCWJpdDUJCTEJUlcJcmVnaXN0ZXIgY2xvY2sgZ2F0aW5nIGVuYWJsZQorCQkJCQkwOiByZWFkIG9ubHksIDE6IHJlYWQvd3JpdGUgZW5hYmxlCisJKE5vdGUgdGhhdCBmb2xsb3dpbmcgcmVnaXN0ZXJzIGRvZXMgbm90IHJlcXVpcmUgY2xvY2sgZ2F0aW5nIGJlaW5nCisJZW5hYmxlZCBwcmlvciB0byB3cml0ZTogMDUgMDYgMDcgMDggMDkgMGMgMGYgMTAgMTEgMTIgMTYgMTcgMTggMjMgMmUKKwk0MCA0MSA0MiA0My4gIEluIGFkZGl0aW9uIHRvIHRoYXQsIHRoaXMgYml0IG11c3QgYmUgMSB3aGVuIGdlc3R1cmUKKwltb2RlIGlzIGVuYWJsZWQpCisKKzB4ODIyMAkJCQkJdGVzdCBtb2RlIHN0YXR1cworCWJpdDV+Yml0NAkJUk8JbnVtYmVyIG9mIGJ1dHRvbnMKKwkJCQkJMTEgPT4gMiwgbGJ0bi9yYnRuCisJCQkJCTEwID0+IDQsIGxidG4vcmJ0bi9zY3J1L3NjcmQKKwkJCQkJMDEgPT4gNiwgbGJ0bi9yYnRuL3NjcnUvc2NyZC9zY3JsL3NjcnIKKwkJCQkJMDAgPT4gNiwgbGJ0bi9yYnRuL3NjcnUvc2NyZC9mYnRuL2JidG4KKwkJCQkJKm9ubHkgc3VwcG9ydGVkIGJ5IEgvVyBwcmlvciB0byBDeAorCisweDgyMzEJCQkJUlcJb24tcGFkIGNvbW1hbmQgZGV0ZWN0aW9uCisJYml0NwkJMAlSVwlvbi1wYWQgY29tbWFuZCBsZWZ0IGJ1dHRvbiBkb3duIHRhZworCQkJCQllbmFibGUKKwkJCQkJMDogZGlzYWJsZSwgMTogZW5hYmxlCisJCQkJCSpvbmx5IHN1cHBvcnRlZCBieSBIL1cgcHJpb3IgdG8gQ3gKKworMHg4MjM0CQkJCVJXCW9uLXBhZCBjb21tYW5kIGNvbnRyb2wgNQorCWJpdDR+Yml0MAkweDA1CVJXCVhMTyBpbiAwcy80LzEsIHNvIDAzaCA9IDAwMTAuMWIgPSAyLjUKKwkoTm90ZSB0aGF0IHBvc2l0aW9uIHVuaXQgaXMgaW4gMC41IHNjYW5saW5lKQorCQkJCQkqb25seSBzdXBwb3J0ZWQgYnkgSC9XIHByaW9yIHRvIEN4CisKKwliaXQ3CQkwCVJXCW9uLXBhZCB0YXAgem9uZSBlbmFibGUKKwkJCQkJMDogZGlzYWJsZSwgMTogZW5hYmxlCisJCQkJCSpvbmx5IHN1cHBvcnRlZCBieSBIL1cgcHJpb3IgdG8gQ3gKKworMHg4MjM1CQkJCVJXCW9uLXBhZCBjb21tYW5kIGNvbnRyb2wgNgorCWJpdDR+Yml0MAkweDFkCVJXCVhISSBpbiAwcy80LzEsIHNvIDE5aCA9IDExMDAuMWIgPSAxMi41CisJKE5vdGUgdGhhdCBwb3NpdGlvbiB1bml0IGlzIGluIDAuNSBzY2FubGluZSkKKwkJCQkJKm9ubHkgc3VwcG9ydGVkIGJ5IEgvVyBwcmlvciB0byBDeAorCisweDgyMzYJCQkJUlcJb24tcGFkIGNvbW1hbmQgY29udHJvbCA3CisJYml0NH5iaXQwCTB4MDQJUlcJWUxPIGluIDBzLzQvMSwgc28gMDNoID0gMDAxMC4xYiA9IDIuNQorCShOb3RlIHRoYXQgcG9zaXRpb24gdW5pdCBpcyBpbiAwLjUgc2NhbmxpbmUpCisJCQkJCSpvbmx5IHN1cHBvcnRlZCBieSBIL1cgcHJpb3IgdG8gQ3gKKworMHg4MjM3CQkJCVJXCW9uLXBhZCBjb21tYW5kIGNvbnRyb2wgOAorCWJpdDR+Yml0MAkweDEzCVJXCVlISSBpbiAwcy80LzEsIHNvIDExaCA9IDEwMDAuMWIgPSA4LjUKKwkoTm90ZSB0aGF0IHBvc2l0aW9uIHVuaXQgaXMgaW4gMC41IHNjYW5saW5lKQorCQkJCQkqb25seSBzdXBwb3J0ZWQgYnkgSC9XIHByaW9yIHRvIEN4CisKKzB4ODI0MAkJCQlSVwlzeXN0ZW0gY29udHJvbCA1CisJYml0MQkJMAlSVwlGU1AgSW50ZWxsaW1vdXNlIG1vZGUgZW5hYmxlCisJCQkJCTA6IGRpc2FibGUsIDE6IGVuYWJsZQorCQkJCQkqb25seSBzdXBwb3J0ZWQgYnkgSC9XIHByaW9yIHRvIEN4CisKKwliaXQyCQkwCVJXCW1vdmVtZW50ICsgYWJzLiBjb29yZGluYXRlIG1vZGUgZW5hYmxlCisJCQkJCTA6IGRpc2FibGUsIDE6IGVuYWJsZQorCShOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBoYXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgYml0IDEgZXZlbiB3aGVuCisJYml0IDEgaXMgbm90IHNldC4gSG93ZXZlciwgdGhlIGZvcm1hdCBpcyBkaWZmZXJlbnQgZnJvbSB0aGF0IG9mIGJpdCAxLgorCUluIGFkZGl0aW9uLCB3aGVuIGJpdCAxIGFuZCBiaXQgMiBhcmUgc2V0IGF0IHRoZSBzYW1lIHRpbWUsIGJpdCAyIHdpbGwKKwlvdmVycmlkZSBiaXQgMS4pCisJCQkJCSpvbmx5IHN1cHBvcnRlZCBieSBIL1cgcHJpb3IgdG8gQ3gKKworCWJpdDMJCTAJUlcJYWJzLiBjb29yZGluYXRlIG9ubHkgbW9kZSBlbmFibGUKKwkJCQkJMDogZGlzYWJsZSwgMTogZW5hYmxlCisJKE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGhhcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiBiaXQgMSBldmVuIHdoZW4KKwliaXQgMSBpcyBub3Qgc2V0LiBIb3dldmVyLCB0aGUgZm9ybWF0IGlzIGRpZmZlcmVudCBmcm9tIHRoYXQgb2YgYml0IDEuCisJSW4gYWRkaXRpb24sIHdoZW4gYml0IDEsIGJpdCAyIGFuZCBiaXQgMyBhcmUgc2V0IGF0IHRoZSBzYW1lIHRpbWUsCisJYml0IDMgd2lsbCBvdmVycmlkZSBiaXQgMSBhbmQgMi4pCisJCQkJCSpvbmx5IHN1cHBvcnRlZCBieSBIL1cgcHJpb3IgdG8gQ3gKKworCWJpdDUJCTAJUlcJYXV0byBzd2l0Y2ggZW5hYmxlCisJCQkJCTA6IGRpc2FibGUsIDE6IGVuYWJsZQorCQkJCQkqb25seSBzdXBwb3J0ZWQgYnkgSC9XIHByaW9yIHRvIEN4CisKKwliaXQ2CQkwCVJXCUcwIGFicy4gKyBub3RpZnkgcGFja2V0IGZvcm1hdCBlbmFibGUKKwkJCQkJMDogZGlzYWJsZSwgMTogZW5hYmxlCisJKE5vdGUgdGhhdCB0aGUgYWJzb2x1dGUvcmVsYXRpdmUgY29vcmRpbmF0ZSBvdXRwdXQgc3RpbGwgZGVwZW5kcyBvbgorCWJpdCAyIGFuZCAzLiAgVGhhdCBpcywgaWYgYW55IG9mIHRob3NlIGJpdCBpcyAxLCBob3N0IHdpbGwgcmVjZWl2ZQorCWFic29sdXRlIGNvb3JkaW5hdGVzOyBvdGhlcndpc2UsIGhvc3Qgb25seSByZWNlaXZlcyBwYWNrZXRzIHdpdGgKKwlyZWxhdGl2ZSBjb29yZGluYXRlLikKKwkJCQkJKm9ubHkgc3VwcG9ydGVkIGJ5IEgvVyBwcmlvciB0byBDeAorCisJYml0NwkJMAlSVwlFTl9QUzJfRjI6IFBTLzIgZ2VzdHVyZSBtb2RlIDJuZAorCQkJCQlmaW5nZXIgcGFja2V0IGVuYWJsZQorCQkJCQkwOiBkaXNhYmxlLCAxOiBlbmFibGUKKwkJCQkJKm9ubHkgc3VwcG9ydGVkIGJ5IEgvVyBwcmlvciB0byBDeAorCisweDgyNDMJCQkJUlcJb24tcGFkIGNvbnRyb2wKKwliaXQwCQkwCVJXCW9uLXBhZCBjb250cm9sIGVuYWJsZQorCQkJCQkwOiBkaXNhYmxlLCAxOiBlbmFibGUKKwkoTm90ZSB0aGF0IGlmIHRoaXMgYml0IGlzIGNsZWFyZWQsIGJpdCAzLzUgd2lsbCBiZSBpbmVmZmVjdGl2ZSkKKwkJCQkJKm9ubHkgc3VwcG9ydGVkIGJ5IEgvVyBwcmlvciB0byBDeAorCisJYml0MwkJMAlSVwlvbi1wYWQgZml4IHZlcnRpY2FsIHNjcm9sbGluZyBlbmFibGUKKwkJCQkJMDogZGlzYWJsZSwgMTogZW5hYmxlCisJCQkJCSpvbmx5IHN1cHBvcnRlZCBieSBIL1cgcHJpb3IgdG8gQ3gKKworCWJpdDUJCTAJUlcJb24tcGFkIGZpeCBob3Jpem9udGFsIHNjcm9sbGluZyBlbmFibGUKKwkJCQkJMDogZGlzYWJsZSwgMTogZW5hYmxlCisJCQkJCSpvbmx5IHN1cHBvcnRlZCBieSBIL1cgcHJpb3IgdG8gQ3gKKworMHg4MjkwCQkJCVJXCXNvZnR3YXJlIGNvbnRyb2wgcmVnaXN0ZXIgMQorCWJpdDAJCTAJUlcJYWJzb2x1dGUgY29vcmRpbmF0aW9uIG1vZGUKKwkJCQkJMDogZGlzYWJsZSwgMTogZW5hYmxlCisJCQkJCSpzdXBwb3J0ZWQgc2luY2UgQ3gKKworCWJpdDEJCTAJUlcJZ2VzdHVyZSBJRCBvdXRwdXQKKwkJCQkJMDogZGlzYWJsZSwgMTogZW5hYmxlCisJCQkJCSpzdXBwb3J0ZWQgc2luY2UgQ3gKKworCWJpdDIJCTAJUlcJdHdvIGZpbmdlcnMnIGNvb3JkaW5hdGVzIG91dHB1dAorCQkJCQkwOiBkaXNhYmxlLCAxOiBlbmFibGUKKwkJCQkJKnN1cHBvcnRlZCBzaW5jZSBDeAorCisJYml0MwkJMAlSVwlmaW5nZXIgdXAgb25lIHBhY2tldCBvdXRwdXQKKwkJCQkJMDogZGlzYWJsZSwgMTogZW5hYmxlCisJCQkJCSpzdXBwb3J0ZWQgc2luY2UgQ3gKKworCWJpdDQJCTAJUlcJYWJzb2x1dGUgY29vcmRpbmF0aW9uIGNvbnRpbnVvdXMgbW9kZQorCQkJCQkwOiBkaXNhYmxlLCAxOiBlbmFibGUKKwkJCQkJKnN1cHBvcnRlZCBzaW5jZSBDeAorCisJYml0Nn5iaXQ1CTAwCVJXCWdlc3R1cmUgZ3JvdXAgc2VsZWN0aW9uCisJCQkJCTAwOiBiYXNpYworCQkJCQkwMTogc3VpdGUKKwkJCQkJMTA6IHN1aXRlIHBybworCQkJCQkxMTogYWR2YW5jZWQKKwkJCQkJKnN1cHBvcnRlZCBzaW5jZSBDeAorCisJYml0NwkJMAlSVwlCeCBwYWNrZXQgb3V0cHV0IGNvbXBhdGlibGUgbW9kZQorCQkJCQkwOiBkaXNhYmxlLCAxOiBlbmFibGUJCQkJCSpzdXBwb3J0ZWQgc2luY2UgQ3gKKwkJCQkJKnN1cHBvcnRlZCBzaW5jZSBDeAorCisKKzB4ODMzZAkJCQlSVwlvbi1wYWQgY29tbWFuZCBjb250cm9sIDEKKwliaXQ3CQkxCVJXCW9uLXBhZCBjb21tYW5kIGRldGVjdGlvbiBlbmFibGUKKwkJCQkJMDogZGlzYWJsZSwgMTogZW5hYmxlCisJCQkJCSpzdXBwb3J0ZWQgc2luY2UgQ3gKKworMHg4MzNlCQkJCVJXCW9uLXBhZCBjb21tYW5kIGRldGVjdGlvbgorCWJpdDcJCTAJUlcJb24tcGFkIGNvbW1hbmQgbGVmdCBidXR0b24gZG93biB0YWcKKwkJCQkJZW5hYmxlLiBXb3JrcyBvbmx5IGluIEgvVyBiYXNlZCBQUy8yCisJCQkJCWRhdGEgcGFja2V0IG1vZGUuCisJCQkJCTA6IGRpc2FibGUsIDE6IGVuYWJsZQorCQkJCQkqc3VwcG9ydGVkIHNpbmNlIEN4CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lucHV0L3NoYXBlLmZpZyBiL0RvY3VtZW50YXRpb24vaW5wdXQvc2hhcGUuZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMmJmZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lucHV0L3NoYXBlLmZpZwpAQCAtMCwwICsxLDY1IEBACisjRklHIDMuMgorTGFuZHNjYXBlCitDZW50ZXIKK0luY2hlcworTGV0dGVyICAKKzEwMC4wMAorU2luZ2xlCistMgorMTIwMCAyCisyIDEgMCAyIDAgNyA1MCAwIC0xIDAuMDAwIDAgMCAtMSAwIDAgNgorCSA0MjAwIDM2MDAgNDIwMCAzMDc1IDQ5NTAgMjMyNSA3NDI1IDIzMjUgODI1MCAzMTUwIDgyNTAgMzYwMAorMiAxIDEgMSAwIDcgNTAgMCAtMSA0LjAwMCAwIDAgLTEgMCAwIDIKKwkgNDIwMCAzNjc1IDQyMDAgNTQwMAorMiAxIDEgMSAwIDcgNTAgMCAtMSA0LjAwMCAwIDAgLTEgMCAwIDIKKwkgODI1MCAzNjc1IDgyNTAgNTQwMAorMiAxIDAgMSAwIDcgNTAgMCAtMSA0LjAwMCAwIDAgLTEgMCAwIDIKKwkgMzY3NSAzNjAwIDg3MDAgMzYwMAorMiAxIDEgMSAwIDcgNTAgMCAtMSA0LjAwMCAwIDAgLTEgMCAwIDIKKwkgODc3NSAzNjAwIDEwMjAwIDM2MDAKKzIgMSAxIDEgMCA3IDUwIDAgLTEgNC4wMDAgMCAwIC0xIDAgMCAyCisJIDgzMjUgMzE1MCA5MDc1IDMxNTAKKzIgMSAxIDEgMCA3IDUwIDAgLTEgNC4wMDAgMCAwIC0xIDAgMCAyCisJIDc1MDAgMjMyNSAxMDIwMCAyMzI1CisyIDEgMSAxIDAgNyA1MCAwIC0xIDQuMDAwIDAgMCAtMSAwIDAgMgorCSAzNjAwIDM2MDAgMzAwMCAzNjAwCisyIDEgMSAxIDAgNyA1MCAwIC0xIDQuMDAwIDAgMCAtMSAwIDAgMgorCSA0MTI1IDMwNzUgMzAwMCAzMDc1CisyIDEgMCAxIDAgNyA1MCAwIC0xIDQuMDAwIDAgMCAtMSAxIDEgMgorCTAgMCAxLjAwIDYwLjAwIDEyMC4wMAorCTAgMCAxLjAwIDYwLjAwIDEyMC4wMAorCSA0MjAwIDU0MDAgODE3NSA1NDAwCisyIDEgMCAxIDAgNyA1MCAwIC0xIDQuMDAwIDAgMCAtMSAxIDEgMgorCTAgMCAxLjAwIDYwLjAwIDEyMC4wMAorCTAgMCAxLjAwIDYwLjAwIDEyMC4wMAorCSAxMDEyNSAyMzI1IDEwMTI1IDM2MDAKKzIgMSAwIDEgMCA3IDUwIDAgLTEgNC4wMDAgMCAwIC0xIDEgMSAyCisJMCAwIDEuMDAgNjAuMDAgMTIwLjAwCisJMCAwIDEuMDAgNjAuMDAgMTIwLjAwCisJIDMwMDAgMzE1MCAzMDAwIDM2MDAKKzIgMSAwIDEgMCA3IDUwIDAgLTEgNC4wMDAgMCAwIC0xIDEgMSAyCisJMCAwIDEuMDAgNjAuMDAgMTIwLjAwCisJMCAwIDEuMDAgNjAuMDAgMTIwLjAwCisJIDkwNzUgMzE1MCA5MDc1IDM2MDAKKzIgMSAxIDEgMCA3IDUwIDAgLTEgNC4wMDAgMCAwIC0xIDAgMCAyCisJIDQ5NTAgMjMyNSA0OTUwIDEyMDAKKzIgMSAxIDEgMCA3IDUwIDAgLTEgNC4wMDAgMCAwIC0xIDAgMCAyCisJIDc0MjUgMjMyNSA3NDI1IDEyMDAKKzIgMSAxIDEgMCA3IDUwIDAgLTEgNC4wMDAgMCAwIC0xIDAgMCA0CisJIDQyMDAgMzA3NSA0MjAwIDI0MDAgMzYwMCAxODAwIDM2MDAgMTIwMAorMiAxIDEgMSAwIDcgNTAgMCAtMSA0LjAwMCAwIDAgLTEgMCAwIDQKKwkgODI1MCAzMTUwIDgyNTAgMjQ3NSA4Nzc1IDE5NTAgODc3NSAxMjAwCisyIDEgMCAxIDAgNyA1MCAwIC0xIDQuMDAwIDAgMCAtMSAxIDEgMgorCTAgMCAxLjAwIDYwLjAwIDEyMC4wMAorCTAgMCAxLjAwIDYwLjAwIDEyMC4wMAorCSAzNjAwIDEyNzUgNDk1MCAxMjc1CisyIDEgMCAxIDAgNyA1MCAwIC0xIDQuMDAwIDAgMCAtMSAxIDEgMgorCTAgMCAxLjAwIDYwLjAwIDEyMC4wMAorCTAgMCAxLjAwIDYwLjAwIDEyMC4wMAorCSA3NDI1IDEyNzUgODcwMCAxMjc1Cis0IDEgMCA1MCAwIDAgMTIgMC4wMDAwIDQgMTM1IDExNDAgNjA3NSA1MzI1IEVmZmVjdCBkdXJhdGlvblwwMDEKKzQgMCAwIDUwIDAgMCAxMiAwLjAwMDAgNCAxODAgMTMwNSAxMDIwMCAzMDAwIEVmZmVjdCBtYWduaXR1ZGVcMDAxCis0IDAgMCA1MCAwIDAgMTIgMC4wMDAwIDQgMTM1IDc4MCA5MTUwIDM0NTAgRmFkZSBsZXZlbFwwMDEKKzQgMSAwIDUwIDAgMCAxMiAwLjAwMDAgNCAxODAgMTAzNSA0Mjc1IDEyMDAgQXR0YWNrIGxlbmd0aFwwMDEKKzQgMSAwIDUwIDAgMCAxMiAwLjAwMDAgNCAxODAgODg1IDgxNzUgMTIwMCBGYWRlIGxlbmd0aFwwMDEKKzQgMiAwIDUwIDAgMCAxMiAwLjAwMDAgNCAxMzUgOTMwIDI5MjUgMzM3NSBBdHRhY2sgbGV2ZWxcMDAxCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lucHV0L3VzZXJpby50eHQgYi9Eb2N1bWVudGF0aW9uL2lucHV0L3VzZXJpby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg4MGMwZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaW5wdXQvdXNlcmlvLnR4dApAQCAtMCwwICsxLDcwIEBACisJCQkgICAgICBUaGUgdXNlcmlvIFByb3RvY29sCisJICAgICAoYykgMjAxNSBTdGVwaGVuIENoYW5kbGVyIFBhdWwgPHRoYXRzbHl1ZGVAZ21haWwuY29tPgorCQkJICAgICAgU3BvbnNvcmVkIGJ5IFJlZCBIYXQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzEuIEludHJvZHVjdGlvbgorfn5+fn5+fn5+fn5+fn5+CisgIFRoaXMgbW9kdWxlIGlzIGludGVuZGVkIHRvIHRyeSB0byBtYWtlIHRoZSBsaXZlcyBvZiBpbnB1dCBkcml2ZXIgZGV2ZWxvcGVycworZWFzaWVyIGJ5IGFsbG93aW5nIHRoZW0gdG8gdGVzdCB2YXJpb3VzIHNlcmlvIGRldmljZXMgKG1haW5seSB0aGUgdmFyaW91cwordG91Y2hwYWRzIGZvdW5kIG9uIGxhcHRvcHMpIHdpdGhvdXQgaGF2aW5nIHRvIGhhdmUgdGhlIHBoeXNpY2FsIGRldmljZSBpbiBmcm9udAorb2YgdGhlbS4gdXNlcmlvIGFjY29tcGxpc2hlcyB0aGlzIGJ5IGFsbG93aW5nIGFueSBwcml2aWxlZ2VkIHVzZXJzcGFjZSBwcm9ncmFtCit0byBkaXJlY3RseSBpbnRlcmFjdCB3aXRoIHRoZSBrZXJuZWwncyBzZXJpbyBkcml2ZXIgYW5kIGNvbnRyb2wgYSB2aXJ0dWFsIHNlcmlvCitwb3J0IGZyb20gdGhlcmUuCisKKzIuIFVzYWdlIG92ZXJ2aWV3Cit+fn5+fn5+fn5+fn5+fn5+fgorICBJbiBvcmRlciB0byBpbnRlcmFjdCB3aXRoIHRoZSB1c2VyaW8ga2VybmVsIG1vZHVsZSwgb25lIHNpbXBseSBvcGVucyB0aGUKKy9kZXYvdXNlcmlvIGNoYXJhY3RlciBkZXZpY2UgaW4gdGhlaXIgYXBwbGljYXRpb25zLiBDb21tYW5kcyBhcmUgc2VudCB0byB0aGUKK2tlcm5lbCBtb2R1bGUgYnkgd3JpdGluZyB0byB0aGUgZGV2aWNlLCBhbmQgYW55IGRhdGEgcmVjZWl2ZWQgZnJvbSB0aGUgc2VyaW8KK2RyaXZlciBpcyByZWFkIGFzLWlzIGZyb20gdGhlIC9kZXYvdXNlcmlvIGRldmljZS4gQWxsIG9mIHRoZSBzdHJ1Y3R1cmVzIGFuZAorbWFjcm9zIHlvdSBuZWVkIHRvIGludGVyYWN0IHdpdGggdGhlIGRldmljZSBhcmUgZGVmaW5lZCBpbiA8bGludXgvdXNlcmlvLmg+IGFuZAorPGxpbnV4L3NlcmlvLmg+LgorCiszLiBDb21tYW5kIFN0cnVjdHVyZQorfn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgVGhlIHN0cnVjdCB1c2VkIGZvciBzZW5kaW5nIGNvbW1hbmRzIHRvIC9kZXYvdXNlcmlvIGlzIGFzIGZvbGxvd3M6CisKKwlzdHJ1Y3QgdXNlcmlvX2NtZCB7CisJCV9fdTggdHlwZTsKKwkJX191OCBkYXRhOworCX07CisKKyAgInR5cGUiIGRlc2NyaWJlcyB0aGUgdHlwZSBvZiBjb21tYW5kIHRoYXQgaXMgYmVpbmcgc2VudC4gVGhpcyBjYW4gYmUgYW55IG9uZQorb2YgdGhlIFVTRVJJT19DTUQgbWFjcm9zIGRlZmluZWQgaW4gPGxpbnV4L3VzZXJpby5oPi4gImRhdGEiIGlzIHRoZSBhcmd1bWVudAordGhhdCBnb2VzIGFsb25nIHdpdGggdGhlIGNvbW1hbmQuIEluIHRoZSBldmVudCB0aGF0IHRoZSBjb21tYW5kIGRvZXNuJ3QgaGF2ZSBhbgorYXJndW1lbnQsIHRoaXMgZmllbGQgY2FuIGJlIGxlZnQgdW50b3VjaGVkIGFuZCB3aWxsIGJlIGlnbm9yZWQgYnkgdGhlIGtlcm5lbC4KK0VhY2ggY29tbWFuZCBzaG91bGQgYmUgc2VudCBieSB3cml0aW5nIHRoZSBzdHJ1Y3QgZGlyZWN0bHkgdG8gdGhlIGNoYXJhY3RlcgorZGV2aWNlLiBJbiB0aGUgZXZlbnQgdGhhdCB0aGUgY29tbWFuZCB5b3Ugc2VuZCBpcyBpbnZhbGlkLCBhbiBlcnJvciB3aWxsIGJlCityZXR1cm5lZCBieSB0aGUgY2hhcmFjdGVyIGRldmljZSBhbmQgYSBtb3JlIGRlc2NyaXB0aXZlIGVycm9yIHdpbGwgYmUgcHJpbnRlZAordG8gdGhlIGtlcm5lbCBsb2cuIE9ubHkgb25lIGNvbW1hbmQgY2FuIGJlIHNlbnQgYXQgYSB0aW1lLCBhbnkgYWRkaXRpb25hbCBkYXRhCit3cml0dGVuIHRvIHRoZSBjaGFyYWN0ZXIgZGV2aWNlIGFmdGVyIHRoZSBpbml0aWFsIGNvbW1hbmQgd2lsbCBiZSBpZ25vcmVkLgorICBUbyBjbG9zZSB0aGUgdmlydHVhbCBzZXJpbyBwb3J0LCBqdXN0IGNsb3NlIC9kZXYvdXNlcmlvLgorCis0LiBDb21tYW5kcworfn5+fn5+fn5+fn4KKworNC4xIFVTRVJJT19DTURfUkVHSVNURVIKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisgIFJlZ2lzdGVycyB0aGUgcG9ydCB3aXRoIHRoZSBzZXJpbyBkcml2ZXIgYW5kIGJlZ2lucyB0cmFuc21pdHRpbmcgZGF0YSBiYWNrIGFuZAorZm9ydGguIFJlZ2lzdHJhdGlvbiBjYW4gb25seSBiZSBwZXJmb3JtZWQgb25jZSBhIHBvcnQgdHlwZSBpcyBzZXQgd2l0aAorVVNFUklPX0NNRF9TRVRfUE9SVF9UWVBFLiBIYXMgbm8gYXJndW1lbnQuCisKKzQuMiBVU0VSSU9fQ01EX1NFVF9QT1JUX1RZUEUKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgU2V0cyB0aGUgdHlwZSBvZiBwb3J0IHdlJ3JlIGVtdWxhdGluZywgd2hlcmUgImRhdGEiIGlzIHRoZSBwb3J0IHR5cGUgYmVpbmcKK3NldC4gQ2FuIGJlIGFueSBvZiB0aGUgbWFjcm9zIGZyb20gPGxpbnV4L3NlcmlvLmg+LiBGb3IgZXhhbXBsZTogU0VSSU9fODA0Mgord291bGQgc2V0IHRoZSBwb3J0IHR5cGUgdG8gYmUgYSBub3JtYWwgUFMvMiBwb3J0LgorCis0LjMgVVNFUklPX0NNRF9TRU5EX0lOVEVSUlVQVAorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgU2VuZHMgYW4gaW50ZXJydXB0IHRocm91Z2ggdGhlIHZpcnR1YWwgc2VyaW8gcG9ydCB0byB0aGUgc2VyaW8gZHJpdmVyLCB3aGVyZQorImRhdGEiIGlzIHRoZSBpbnRlcnJ1cHQgZGF0YSBiZWluZyBzZW50LgorCis1LiBVc2Vyc3BhY2UgdG9vbHMKK35+fn5+fn5+fn5+fn5+fn5+fgorICBUaGUgdXNlcmlvIHVzZXJzcGFjZSB0b29scyBhcmUgYWJsZSB0byByZWNvcmQgUFMvMiBkZXZpY2VzIHVzaW5nIHNvbWUgb2YgdGhlCitkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZnJvbSBpODA0MiwgYW5kIHBsYXkgYmFjayB0aGUgZGV2aWNlcyBvbiAvZGV2L3VzZXJpby4gVGhlCitsYXRlc3QgdmVyc2lvbiBvZiB0aGVzZSB0b29scyBjYW4gYmUgZm91bmQgYXQ6CisKKwlodHRwczovL2dpdGh1Yi5jb20vTHl1ZGUvcHMyZW11CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lucHV0L3dhbGtlcmEwNzAxLnR4dCBiL0RvY3VtZW50YXRpb24vaW5wdXQvd2Fsa2VyYTA3MDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5ZTNhYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lucHV0L3dhbGtlcmEwNzAxLnR4dApAQCAtMCwwICsxLDEwOSBAQAorCitXYWxrZXJhIFdLLTA3MDEgdHJhbnNtaXR0ZXIgaXMgc3VwcGxpZWQgd2l0aCBhIHJlYWR5IHRvIGZseSBXYWxrZXJhCitoZWxpY29wdGVycyBzdWNoIGFzIEhNMzYsIEhNMzcsIEhNNjAuIFRoZSB3YWxrZXJhMDcwMSBtb2R1bGUgZW5hYmxlcyB0byB1c2UKK3RoaXMgdHJhbnNtaXR0ZXIgYXMgam95c3RpY2sKKworRGV2ZWwgaG9tZXBhZ2UgYW5kIGRvd25sb2FkOgoraHR0cDovL3p1Yi5mZWkudHVrZS5zay93YWxrZXJhLXdrMDcwMS8KKworb3IgdXNlIGNvZ2l0bzoKK2NnLWNsb25lIGh0dHA6Ly96dWIuZmVpLnR1a2Uuc2svR0lUL3dhbGtlcmEwNzAxLWpveXN0aWNrCisKKworQ29ubmVjdGluZyB0byBQQzoKKworQXQgYmFjayBzaWRlIG9mIHRyYW5zbWl0dGVyIFMtdmlkZW8gY29ubmVjdG9yIGNhbiBiZSBmb3VuZC4gTW9kdWxhdGlvbgorcHVsc2VzIGZyb20gcHJvY2Vzc29yIHRvIEhGIHBhcnQgY2FuIGJlIGZvdW5kIGF0IHBpbiAyIG9mIHRoaXMgY29ubmVjdG9yLAorcGluIDMgaXMgR05ELiBCZXR3ZWVuIHBpbiAzIGFuZCBDUFUgNWs2IHJlc2lzdG9yIGNhbiBiZSBmb3VuZC4gVG8gZ2V0Cittb2R1bGF0aW9uIHB1bHNlcyB0byBQQywgc2lnbmFsIHB1bHNlcyBtdXN0IGJlIGFtcGxpZmllZC4KKworQ2FibGU6ICh3YWxrZXJhIFRYIHRvIHBhcnBvcnQpCisKK1dhbGtlcmEgV0stMDcwMSBUWCBTLVZJREVPIGNvbm5lY3RvcjoKKyAoYmFjayBzaWRlIG9mIFRYKQorICAgICBfXyAgIF9fICAgICAgICAgICAgICBTLXZpZGVvOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5vbjI1CisgICAgLyAgfF98ICBcICAgICAgICAgICAgIHBpbiAyIChzaWduYWwpICAgICAgICAgICAgICBOUE4gICAgICAgICAgIHBhcnBvcnQKKyAgIC8gTyA0IDMgTyBcICAgICAgICAgICAgcGluIDMgKEdORCkgICAgICAgIExFRCAgICAgICAgX19fX19fX19fX19fX19fXyAgMTAgQUNLCisgICggTyAyICAgMSBPICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQworICAgXCAgIF9fXyAgIC8gICAgICAyIF9fX19fX19fX19fX19fX19fX19fX19fX3xcfF9fX19ffC8KKyAgICB8IFtfX19dIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8L3wgICBCIHxcCisgICAgIC0tLS0tLS0gICAgICAgIDMgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3xfX19fX19fX19fX19fX19fIDI1IEdORAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUKKworCitJIHVzZSBncmVlbiBMRUQgYW5kIEJDMTA5IE5QTiB0cmFuc2lzdG9yLgorCitTb2Z0d2FyZToKKworQnVpbGQga2VybmVsIHdpdGggd2Fsa2VyYTA3MDEgbW9kdWxlLiBNb2R1bGUgd2Fsa2VyYTA3MDEgbmVlZCBleGNsdXNpdmUKK2FjY2VzcyB0byBwYXJwb3J0LCBtb2R1bGVzIGxpa2UgbHAgbXVzdCBiZSB1bmxvYWRlZCBiZWZvcmUgbG9hZGluZword2Fsa2VyYTA3MDEgbW9kdWxlLCBjaGVjayBkbWVzZyBmb3IgZXJyb3IgbWVzc2FnZXMuIENvbm5lY3QgVFggdG8gUEMgYnkKK2NhYmxlIGFuZCBydW4ganN0ZXN0IC9kZXYvaW5wdXQvanMwIHRvIHNlZSB2YWx1ZXMgZnJvbSBUWC4gSWYgbm8gdmFsdWUgY2FuCitiZSBjaGFuZ2VkIGJ5IFRYICJqb3lzdGljayIsIGNoZWNrIG91dHB1dCBmcm9tIC9wcm9jL2ludGVycnVwdHMuIFZhbHVlIGZvcgorKHVzdWFsbHkgaXJxNykgcGFycG9ydCBtdXN0IGluY3JlYXNlIGlmIFRYIGlzIG9uLgorCisKKworVGVjaG5pY2FsIGRldGFpbHM6CisKK0RyaXZlciB1c2UgaW50ZXJydXB0IGZyb20gcGFycG9ydCBBQ0sgaW5wdXQgYml0IHRvIG1lYXN1cmUgcHVsc2UgbGVuZ3RoCit1c2luZyBocnRpbWVycy4KKworRnJhbWUgZm9ybWF0OgorQmFzZWQgb24gd2Fsa2VyYSBXSy0wNzAxIFBDTSBGb3JtYXQgZGVzY3JpcHRpb24gYnkgU2hhdWwgRWl6aWtvdmljaC4KKyhkb3dubG9hZGVkIGZyb20gaHR0cDovL3d3dy5zbWFydHByb3BvcGx1cy5jb20vRG9jcy9XYWxrZXJhX1drLTA3MDFfUENNLnBkZikKKworU2lnbmFsIHB1bHNlczoKKyAgICAgICAgICAgICAgICAgICAoQU5BTE9HKQorICAgIFNZTkMgICAgICBCSU4gICBPQ1QKKyAgKy0tLS0tLS0tLSsgICAgICArLS0tLS0tKworICB8ICAgICAgICAgfCAgICAgIHwgICAgICB8CistLSsgICAgICAgICArLS0tLS0tKyAgICAgICstLS0KKworRnJhbWU6CisgU1lOQyAsIEJJTjEsIE9DVDEsIEJJTjIsIE9DVDIgLi4uIEJJTjI0LCBPQ1QyNCwgQklOMjUsIG5leHQgZnJhbWUgU1lOQyAuLgorCitwdWxzZSBsZW5ndGg6CisgICBCaW5hcnkgdmFsdWVzOgkJQW5hbG9nIG9jdGFsIHZhbHVlczoKKworICAgMjg4IHVTIEJpbmFyeSAwCQkzMTggdVMgICAgICAgMDAwCisgICA0MzggdVMgQmluYXJ5IDEJCTM5OCB1UyAgICAgICAwMDEKKwkJCQk0NzggdVMgICAgICAgMDEwCisJCQkJNTU4IHVTICAgICAgIDAxMQorCQkJCTYzOCB1UyAgICAgICAxMDAKKyAgMTMwNiB1UyBTWU5DCQkJNzE4IHVTICAgICAgIDEwMQorCQkJCTc5OCB1UyAgICAgICAxMTAKKwkJCQk4NzggdVMgICAgICAgMTExCisKKzI0IGJpbitvY3QgdmFsdWVzICsgMSBiaW4gdmFsdWUgPSAyNCo0KzEgYml0cyAgPSA5NyBiaXRzCisKKyhXYXJuaW5nLCBwdWxzZXMgb24gQUNLIGFyZSBpbnZlcnRlZCBieSB0cmFuc2lzdG9yLCBpcnEgaXMgcmFpc2VkIHVwIG9uIHN5bmMKK3RvIGJpbiBjaGFuZ2Ugb3Igb2N0YWwgdmFsdWUgdG8gYmluIGNoYW5nZSkuCisKK0JpbmFyeSBkYXRhIHJlcHJlc2VudGF0aW9uczoKKworT25lIGJpbmFyeSBhbmQgb2N0YWwgdmFsdWUgY2FuIGJlIGdyb3VwZWQgdG8gbmliYmxlLiAyNCBuaWJibGVzICsgb25lIGJpbmFyeQordmFsdWVzIGNhbiBiZSBzYW1wbGVkIGJldHdlZW4gc3luYyBwdWxzZXMuCisKK1ZhbHVlcyBmb3IgZmlyc3QgZm91ciBjaGFubmVscyAoYW5hbG9nIGpveXN0aWNrIHZhbHVlcykgY2FuIGJlIGZvdW5kIGluCitmaXJzdCAxMCBuaWJibGVzLiBBbmFsb2cgdmFsdWUgaXMgcmVwcmVzZW50ZWQgYnkgb25lIHNpZ24gYml0IGFuZCA5IGJpdAorYWJzb2x1dGUgYmluYXJ5IHZhbHVlLiAoMTAgYml0cyBwZXIgY2hhbm5lbCkuIE5leHQgbmliYmxlIGlzIGNoZWNrc3VtIGZvcgorZmlyc3QgdGVuIG5pYmJsZXMuCisKK05leHQgbmliYmxlcyAxMiAuLiAyMSByZXByZXNlbnRzIGZvdXIgY2hhbm5lbHMgKG5vdCBhbGwgY2hhbm5lbHMgY2FuIGJlCitkaXJlY3RseSBjb250cm9sbGVkIGZyb20gVFgpLiBCaW5hcnkgcmVwcmVzZW50YXRpb25zIGFyZSB0aGUgc2FtZSBhcyBpbiBmaXJzdAorZm91ciBjaGFubmVscy4gSW4gbmliYmxlcyAyMiBhbmQgMjMgaXMgYSBzcGVjaWFsIG1hZ2ljIG51bWJlci4gTmliYmxlIDI0IGlzCitjaGVja3N1bSBmb3IgbmliYmxlcyAxMi4uMjMuCisKK0FmdGVyIGxhc3Qgb2N0YWwgdmFsdWUgZm9yIG5pYmJsZSAyNCBhbmQgbmV4dCBzeW5jIHB1bHNlIG9uZSBhZGRpdGlvbmFsCitiaW5hcnkgdmFsdWUgY2FuIGJlIHNhbXBsZWQuIFRoaXMgYml0IGFuZCBtYWdpYyBudW1iZXIgaXMgbm90IHVzZWQgaW4KK3NvZnR3YXJlIGRyaXZlci4gU29tZSBkZXRhaWxzIGFib3V0IHRoaXMgbWFnaWMgbnVtYmVycyBjYW4gYmUgZm91bmQgaW4KK1dhbGtlcmFfV2stMDcwMV9QQ00ucGRmLgorCitDaGVja3N1bSBjYWxjdWxhdGlvbjoKKworU3VtbWFyeSBvZiBvY3RhbCB2YWx1ZXMgaW4gbmliYmxlcyBtdXN0IGJlIHNhbWUgYXMgb2N0YWwgdmFsdWUgaW4gY2hlY2tzdW0KK25pYmJsZSAob25seSBmaXJzdCAzIGJpdHMgYXJlIHVzZWQpLiBCaW5hcnkgdmFsdWUgZm9yIGNoZWNrc3VtIG5pYmJsZSBpcworY2FsY3VsYXRlZCBieSBzdW0gb2YgYmluYXJ5IHZhbHVlcyBpbiBjaGVja2VkIG5pYmJsZXMgKyBzdW0gb2Ygb2N0YWwgdmFsdWVzCitpbiBjaGVja2VkIG5pYmJsZXMgZGl2aWRlZCBieSA4LiBPbmx5IGJpdCAwIG9mIHRoaXMgc3VtIGlzIHVzZWQuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW5wdXQveHBhZC50eHQgYi9Eb2N1bWVudGF0aW9uL2lucHV0L3hwYWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxYjIzZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lucHV0L3hwYWQudHh0CkBAIC0wLDAgKzEsMjI2IEBACit4cGFkIC0gTGludXggVVNCIGRyaXZlciBmb3IgWGJveCBjb21wYXRpYmxlIGNvbnRyb2xsZXJzCisKK1RoaXMgZHJpdmVyIGV4cG9zZXMgYWxsIGZpcnN0LXBhcnR5IGFuZCB0aGlyZC1wYXJ0eSBYYm94IGNvbXBhdGlibGUKK2NvbnRyb2xsZXJzLiBJdCBoYXMgYSBsb25nIGhpc3RvcnkgYW5kIGhhcyBlbmpveWVkIGNvbnNpZGVyYWJsZSB1c2FnZQorYXMgV2luZG93J3MgeGlucHV0IGxpYnJhcnkgY2F1c2VkIG1vc3QgUEMgZ2FtZXMgdG8gZm9jdXMgb24gWGJveAorY29udHJvbGxlciBjb21wYXRpYmlsaXR5LgorCitEdWUgdG8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgYWxsIGJ1dHRvbnMgYXJlIHJlcG9ydGVkIGFzIGRpZ2l0YWwuCitUaGlzIG9ubHkgZWZmZWN0cyBPcmlnaW5hbCBYYm94IGNvbnRyb2xsZXJzLiBBbGwgbGF0ZXIgY29udHJvbGxlciBtb2RlbHMKK2hhdmUgb25seSBkaWdpdGFsIGZhY2UgYnV0dG9ucy4KKworUnVtYmxlIGlzIHN1cHBvcnRlZCBvbiBzb21lIG1vZGVscyBvZiBYYm94IDM2MCBjb250cm9sbGVycyBidXQgbm90IG9mCitPcmlnaW5hbCBYYm94IGNvbnRyb2xsZXJzIG5vciBvbiBYYm94IE9uZSBjb250cm9sbGVycy4gQXMgb2Ygd3JpdGluZwordGhlIFhib3ggT25lJ3MgcnVtYmxlIHByb3RvY29sIGhhcyBub3QgYmVlbiByZXZlcnNlIGVuZ2luZWVyZWQgYnV0IGluCit0aGUgZnV0dXJlIGNvdWxkIGJlIHN1cHBvcnRlZC4KKworCiswLiBOb3RlcworLS0tLS0tLS0KK1RoZSBudW1iZXIgb2YgYnV0dG9ucy9heGVzIHJlcG9ydGVkIHZhcmllcyBiYXNlZCBvbiAzIHRoaW5nczoKKy0gaWYgeW91IGFyZSB1c2luZyBhIGtub3duIGNvbnRyb2xsZXIKKy0gaWYgeW91IGFyZSB1c2luZyBhIGtub3duIGRhbmNlIHBhZAorLSBpZiB1c2luZyBhbiB1bmtub3duIGRldmljZSAob25lIG5vdCBsaXN0ZWQgYmVsb3cpLCB3aGF0IHlvdSBzZXQgaW4gdGhlCisgIG1vZHVsZSBjb25maWd1cmF0aW9uIGZvciAiTWFwIEQtUEFEIHRvIGJ1dHRvbnMgcmF0aGVyIHRoYW4gYXhlcyBmb3IgdW5rbm93bgorICBwYWRzIiAobW9kdWxlIG9wdGlvbiBkcGFkX3RvX2J1dHRvbnMpCisKK0lmIHlvdSBzZXQgZHBhZF90b19idXR0b25zIHRvIE4gYW5kIHlvdSBhcmUgdXNpbmcgYW4gdW5rbm93biBkZXZpY2UKK3RoZSBkcml2ZXIgd2lsbCBtYXAgdGhlIGRpcmVjdGlvbmFsIHBhZCB0byBheGVzIChYL1kpLgorSWYgeW91IHNhaWQgWSBpdCB3aWxsIG1hcCB0aGUgZC1wYWQgdG8gYnV0dG9ucywgd2hpY2ggaXMgbmVlZGVkIGZvciBkYW5jZQorc3R5bGUgZ2FtZXMgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGUgZGVmYXVsdCBpcyBZLgorCitkcGFkX3RvX2J1dHRvbnMgaGFzIG5vIGVmZmVjdCBmb3Iga25vd24gcGFkcy4gQSBlcnJvbmVvdXMgY29tbWl0IG1lc3NhZ2UKK2NsYWltZWQgZHBhZF90b19idXR0b25zIGNvdWxkIGJlIHVzZWQgdG8gZm9yY2UgYmVoYXZpb3Igb24ga25vd24gZGV2aWNlcy4KK1RoaXMgaXMgbm90IHRydWUuIEJvdGggZHBhZF90b19idXR0b25zIGFuZCB0cmlnZ2Vyc190b19idXR0b25zIG9ubHkgYWZmZWN0Cit1bmtub3duIGNvbnRyb2xsZXJzLgorCisKKzAuMSBOb3JtYWwgQ29udHJvbGxlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1dpdGggYSBub3JtYWwgY29udHJvbGxlciwgdGhlIGRpcmVjdGlvbmFsIHBhZCBpcyBtYXBwZWQgdG8gaXRzIG93biBYL1kgYXhlcy4KK1RoZSBqc3Rlc3QtcHJvZ3JhbSBmcm9tIGpveXN0aWNrLTEuMi4xNSAoanN0ZXN0LXZlcnNpb24gMi4xLjApIHdpbGwgcmVwb3J0IDgKK2F4ZXMgYW5kIDEwIGJ1dHRvbnMuCisKK0FsbCA4IGF4ZXMgd29yaywgdGhvdWdoIHRoZXkgYWxsIGhhdmUgdGhlIHNhbWUgcmFuZ2UgKC0zMjc2OC4uMzI3NjcpCithbmQgdGhlIHplcm8tc2V0dGluZyBpcyBub3QgY29ycmVjdCBmb3IgdGhlIHRyaWdnZXJzIChJIGRvbid0IGtub3cgaWYgdGhhdAoraXMgc29tZSBsaW1pdGF0aW9uIG9mIGpzdGVzdCwgc2luY2UgdGhlIGlucHV0IGRldmljZSBzZXR1cCBzaG91bGQgYmUgZmluZS4gSQorZGlkbid0IGhhdmUgYSBsb29rIGF0IGpzdGVzdCBpdHNlbGYgeWV0KS4KKworQWxsIG9mIHRoZSAxMCBidXR0b25zIHdvcmsgKGluIGRpZ2l0YWwgbW9kZSkuIFRoZSBzaXggYnV0dG9ucyBvbiB0aGUKK3JpZ2h0IHNpZGUgKEEsIEIsIFgsIFksIGJsYWNrLCB3aGl0ZSkgYXJlIHNhaWQgdG8gYmUgImFuYWxvZyIgYW5kCityZXBvcnQgdGhlaXIgdmFsdWVzIGFzIDggYml0IHVuc2lnbmVkLCBub3Qgc3VyZSB3aGF0IHRoaXMgaXMgZ29vZCBmb3IuCisKK0kgdGVzdGVkIHRoZSBjb250cm9sbGVyIHdpdGggcXVha2UzLCBhbmQgY29uZmlndXJhdGlvbiBhbmQKK2luIGdhbWUgZnVuY3Rpb25hbGl0eSB3ZXJlIE9LLiBIb3dldmVyLCBJIGZpbmQgaXQgcmF0aGVyIGRpZmZpY3VsdCB0bworcGxheSBmaXJzdCBwZXJzb24gc2hvb3RlcnMgd2l0aCBhIHBhZC4gWW91ciBtaWxlYWdlIG1heSB2YXJ5LgorCisKKzAuMiBYYm94IERhbmNlIFBhZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KK1doZW4gdXNpbmcgYSBrbm93biBkYW5jZSBwYWQsIGpzdGVzdCB3aWxsIHJlcG9ydCA2IGF4ZXMgYW5kIDE0IGJ1dHRvbnMuCisKK0ZvciBkYW5jZSBzdHlsZSBwYWRzIChsaWtlIHRoZSByZWRvY3RhbmUgcGFkKSBzZXZlcmFsIGNoYW5nZXMKK2hhdmUgYmVlbiBtYWRlLiAgVGhlIG9sZCBkcml2ZXIgd291bGQgbWFwIHRoZSBkLXBhZCB0byBheGVzLCByZXN1bHRpbmcKK2luIHRoZSBkcml2ZXIgYmVpbmcgdW5hYmxlIHRvIHJlcG9ydCB3aGVuIHRoZSB1c2VyIHdhcyBwcmVzc2luZyBib3RoCitsZWZ0K3JpZ2h0IG9yIHVwK2Rvd24sIG1ha2luZyBERFIgc3R5bGUgZ2FtZXMgdW5wbGF5YWJsZS4KKworS25vd24gZGFuY2UgcGFkcyBhdXRvbWF0aWNhbGx5IG1hcCB0aGUgZC1wYWQgdG8gYnV0dG9ucyBhbmQgd2lsbCB3b3JrCitjb3JyZWN0bHkgb3V0IG9mIHRoZSBib3guCisKK0lmIHlvdXIgZGFuY2UgcGFkIGlzIHJlY29nbml6ZWQgYnkgdGhlIGRyaXZlciBidXQgaXMgdXNpbmcgYXhlcyBpbnN0ZWFkCitvZiBidXR0b25zLCBzZWUgc2VjdGlvbiAwLjMgLSBVbmtub3duIENvbnRyb2xsZXJzCisKK0kndmUgdGVzdGVkIHRoaXMgd2l0aCBTdGVwbWFuaWEsIGFuZCBpdCB3b3JrcyBxdWl0ZSB3ZWxsLgorCisKKzAuMyBVbmtub3duIENvbnRyb2xsZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJZiB5b3UgaGF2ZSBhbiB1bmtub3duIHhib3ggY29udHJvbGxlciwgaXQgc2hvdWxkIHdvcmsganVzdCBmaW5lIHdpdGgKK3RoZSBkZWZhdWx0IHNldHRpbmdzLgorCitIT1dFVkVSIGlmIHlvdSBoYXZlIGFuIHVua25vd24gZGFuY2UgcGFkIG5vdCBsaXN0ZWQgYmVsb3csIGl0IHdpbGwgbm90Cit3b3JrIFVOTEVTUyB5b3Ugc2V0ICJkcGFkX3RvX2J1dHRvbnMiIHRvIDEgaW4gdGhlIG1vZHVsZSBjb25maWd1cmF0aW9uLgorCitQTEVBU0UsIGlmIHlvdSBoYXZlIGFuIHVua25vd24gY29udHJvbGxlciwgZW1haWwgRG9tIDxiaW5hcnkxMjMwQHlhaG9vLmNvbT4gd2l0aAorYSBkdW1wIGZyb20gL3Byb2MvYnVzL3VzYiBhbmQgYSBkZXNjcmlwdGlvbiBvZiB0aGUgcGFkIChtYW51ZmFjdHVyZXIsIGNvdW50cnksCit3aGV0aGVyIGl0IGlzIGEgZGFuY2UgcGFkIG9yIG5vcm1hbCBjb250cm9sbGVyKSBzbyB0aGF0IHdlIGNhbiBhZGQgeW91ciBwYWQKK3RvIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBkZXZpY2VzLCBlbnN1cmluZyB0aGF0IGl0IHdpbGwgd29yayBvdXQgb2YgdGhlCitib3ggaW4gdGhlIGZ1dHVyZS4KKworCisxLiBVU0IgYWRhcHRlcnMKKy0tLS0tLS0tLS0tLS0tCitBbGwgZ2VuZXJhdGlvbnMgb2YgWGJveCBjb250cm9sbGVycyBzcGVhayBVU0Igb3ZlciB0aGUgd2lyZS4KKy0gT3JpZ2luYWwgWGJveCBjb250cm9sbGVycyB1c2UgYSBwcm9wcmlldGFyeSBjb25uZWN0b3IgYW5kIHJlcXVpcmUgYWRhcHRlcnMuCistIFdpcmVsZXNzIFhib3ggMzYwIGNvbnRyb2xsZXJzIHJlcXVpcmUgYSAnWGJveCAzNjAgV2lyZWxlc3MgR2FtaW5nIFJlY2VpdmVyCisgIGZvciBXaW5kb3dzJworLSBXaXJlZCBYYm94IDM2MCBjb250cm9sbGVycyB1c2Ugc3RhbmRhcmQgVVNCIGNvbm5lY3RvcnMuCistIFhib3ggT25lIGNvbnRyb2xsZXJzIGNhbiBiZSB3aXJlbGVzcyBidXQgc3BlYWsgV2ktRmkgRGlyZWN0IGFuZCBhcmUgbm90CisgIHlldCBzdXBwb3J0ZWQuCistIFhib3ggT25lIGNvbnRyb2xsZXJzIGNhbiBiZSB3aXJlZCBhbmQgdXNlIHN0YW5kYXJkIE1pY3JvLVVTQiBjb25uZWN0b3JzLgorCisKKworMS4xIE9yaWdpbmFsIFhib3ggVVNCIGFkYXB0ZXJzCistLS0tLS0tLS0tLS0tLQorVXNpbmcgdGhpcyBkcml2ZXIgd2l0aCBhbiBPcmlnaW5hbCBYYm94IGNvbnRyb2xsZXIgcmVxdWlyZXMgYW4KK2FkYXB0ZXIgY2FibGUgdG8gYnJlYWsgb3V0IHRoZSBwcm9wcmlldGFyeSBjb25uZWN0b3IncyBwaW5zIHRvIFVTQi4KK1lvdSBjYW4gYnV5IHRoZXNlIG9ubGluZSBmYWlybHkgY2hlYXAsIG9yIGJ1aWxkIHlvdXIgb3duLgorCitTdWNoIGEgY2FibGUgaXMgcHJldHR5IGVhc3kgdG8gYnVpbGQuIFRoZSBDb250cm9sbGVyIGl0c2VsZiBpcyBhIFVTQgorY29tcG91bmQgZGV2aWNlIChhIGh1YiB3aXRoIHRocmVlIHBvcnRzIGZvciB0d28gZXhwYW5zaW9uIHNsb3RzIGFuZAordGhlIGNvbnRyb2xsZXIgZGV2aWNlKSB3aXRoIHRoZSBvbmx5IGRpZmZlcmVuY2UgaW4gYSBub25zdGFuZGFyZCBjb25uZWN0b3IKKyg1IHBpbnMgdnMuIDQgb24gc3RhbmRhcmQgVVNCIDEuMCBjb25uZWN0b3JzKS4KKworWW91IGp1c3QgbmVlZCB0byBzb2xkZXIgYSBVU0IgY29ubmVjdG9yIG9udG8gdGhlIGNhYmxlIGFuZCBrZWVwIHRoZQoreWVsbG93IHdpcmUgdW5jb25uZWN0ZWQuIFRoZSBvdGhlciBwaW5zIGhhdmUgdGhlIHNhbWUgb3JkZXIgb24gYm90aAorY29ubmVjdG9ycyBzbyB0aGVyZSBpcyBubyBtYWdpYyB0byBpdC4gRGV0YWlsZWQgaW5mbyBvbiB0aGVzZSBtYXR0ZXJzCitjYW4gYmUgZm91bmQgb24gdGhlIG5ldCAoWzFdLCBbMl0sIFszXSkuCisKK1RoYW5rcyB0byB0aGUgdHJpcCBzcGxpdHRlciBmb3VuZCBvbiB0aGUgY2FibGUgeW91IGRvbid0IGV2ZW4gbmVlZCB0byBjdXQgdGhlCitvcmlnaW5hbCBvbmUuIFlvdSBjYW4gYnV5IGFuIGV4dGVuc2lvbiBjYWJsZSBhbmQgY3V0IHRoYXQgaW5zdGVhZC4gVGhhdCB3YXksCit5b3UgY2FuIHN0aWxsIHVzZSB0aGUgY29udHJvbGxlciB3aXRoIHlvdXIgWC1Cb3gsIGlmIHlvdSBoYXZlIG9uZSA7KQorCisKKworMi4gRHJpdmVyIEluc3RhbGxhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPbmNlIHlvdSBoYXZlIHRoZSBhZGFwdGVyIGNhYmxlLCBpZiBuZWVkZWQsIGFuZCB0aGUgY29udHJvbGxlciBjb25uZWN0ZWQKK3RoZSB4cGFkIG1vZHVsZSBzaG91bGQgYmUgYXV0byBsb2FkZWQuIFRvIGNvbmZpcm0geW91IGNhbiBjYXQKKy9wcm9jL2J1cy91c2IvZGV2aWNlcy4gVGhlcmUgc2hvdWxkIGJlIGFuIGVudHJ5IGxpa2UgdGhlIG9uZSBhdCB0aGUgZW5kIFs0XS4KKworCisKKzMuIFN1cHBvcnRlZCBDb250cm9sbGVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitGb3IgYSBmdWxsIGxpc3Qgb2Ygc3VwcG9ydGVkIGNvbnRyb2xsZXJzIGFuZCBhc3NvY2lhdGVkIHZlbmRvciBhbmQgcHJvZHVjdAorSURzIHNlZSB0aGUgeHBhZF9kZXZpY2VbXSBhcnJheVs2XS4KKworQXMgb2YgdGhlIGhpc3RvcmljIHZlcnNpb24gMC4wLjYgKDIwMDYtMTAtMTApIHRoZSBmb2xsb3dpbmcgZGV2aWNlcword2VyZSBzdXBwb3J0ZWQ6Cisgb3JpZ2luYWwgTWljcm9zb2Z0IFhCT1ggY29udHJvbGxlciAoVVMpLCAgICB2ZW5kb3I9MHgwNDVlLCBwcm9kdWN0PTB4MDIwMgorIHNtYWxsZXIgIE1pY3Jvc29mdCBYQk9YIGNvbnRyb2xsZXIgKFVTKSwgICAgdmVuZG9yPTB4MDQ1ZSwgcHJvZHVjdD0weDAyODkKKyBvcmlnaW5hbCBNaWNyb3NvZnQgWEJPWCBjb250cm9sbGVyIChKYXBhbiksIHZlbmRvcj0weDA0NWUsIHByb2R1Y3Q9MHgwMjg1CisgSW50ZXJBY3QgUG93ZXJQYWQgUHJvIChHZXJtYW55KSwgICAgICAgICAgICB2ZW5kb3I9MHgwNWZkLCBwcm9kdWN0PTB4MTA3YQorIFJlZE9jdGFuZSBYYm94IERhbmNlIFBhZCAoVVMpLCAgICAgICAgICAgICAgdmVuZG9yPTB4MGMxMiwgcHJvZHVjdD0weDg4MDkKKworVW5yZWNvZ25pemVkIG1vZGVscyBvZiBYYm94IGNvbnRyb2xsZXJzIHNob3VsZCBmdW5jdGlvbiBhcyBHZW5lcmljCitYYm94IGNvbnRyb2xsZXJzLiBVbnJlY29nbml6ZWQgRGFuY2UgUGFkIGNvbnRyb2xsZXJzIHJlcXVpcmUgc2V0dGluZwordGhlIG1vZHVsZSBvcHRpb24gJ2RwYWRfdG9fYnV0dG9ucycuCisKK0lmIHlvdSBoYXZlIGFuIHVucmVjb2duaXplZCBjb250cm9sbGVyIHBsZWFzZSBzZWUgMC4zIC0gVW5rbm93biBDb250cm9sbGVycworCisKKzQuIE1hbnVhbCBUZXN0aW5nCistLS0tLS0tLS0tLS0tLS0tLQorVG8gdGVzdCB0aGlzIGRyaXZlcidzIGZ1bmN0aW9uYWxpdHkgeW91IG1heSB1c2UgJ2pzdGVzdCcuCisKK0ZvciBleGFtcGxlOgorPiBtb2Rwcm9iZSB4cGFkCis+IG1vZHByb2JlIGpveWRldgorPiBqc3Rlc3QgL2Rldi9qczAKKworSWYgeW91J3JlIHVzaW5nIGEgbm9ybWFsIGNvbnRyb2xsZXIsIHRoZXJlIHNob3VsZCBiZSBhIHNpbmdsZSBsaW5lIHNob3dpbmcKKzE4IGlucHV0cyAoOCBheGVzLCAxMCBidXR0b25zKSwgYW5kIGl0cyB2YWx1ZXMgc2hvdWxkIGNoYW5nZSBpZiB5b3UgbW92ZQordGhlIHN0aWNrcyBhbmQgcHVzaCB0aGUgYnV0dG9ucy4gIElmIHlvdSdyZSB1c2luZyBhIGRhbmNlIHBhZCwgaXQgc2hvdWxkCitzaG93IDIwIGlucHV0cyAoNiBheGVzLCAxNCBidXR0b25zKS4KKworSXQgd29ya3M/IFZvaWxhLCB5b3UncmUgZG9uZSA7KQorCisKKworNS4gVGhhbmtzCistLS0tLS0tLS0KKworSSBoYXZlIHRvIHRoYW5rIElUTyBUYWtheXVraSBmb3IgdGhlIGRldGFpbGVkIGluZm8gb24gaGlzIHNpdGUKKyBodHRwOi8vZXVjLmpwL3BlcmlwaHMveGJveC1jb250cm9sbGVyLmphLmh0bWwuCisgCitIaXMgdXNlZnVsIGluZm8gYW5kIGJvdGggdGhlIHVzYi1za2VsZXRvbiBhcyB3ZWxsIGFzIHRoZSBpZm9yY2UgaW5wdXQgZHJpdmVyCisoR3JlZyBLcm9haC1IYXJ0bWFubjsgVm9qdGVjaCBQYXZsaWspIGhlbHBlZCBhIGxvdCBpbiByYXBpZCBwcm90b3R5cGluZwordGhlIGJhc2ljIGZ1bmN0aW9uYWxpdHkuCisKKworCis2LiBSZWZlcmVuY2VzCistLS0tLS0tLS0tLS0tCisKK1sxXTogaHR0cDovL2V1Yy5qcC9wZXJpcGhzL3hib3gtY29udHJvbGxlci5qYS5odG1sIChJVE8gVGFrYXl1a2kpCitbMl06IGh0dHA6Ly94cGFkLnhib3gtc2NlbmUuY29tLworWzNdOiBodHRwOi8vd3d3Lm1hcmtvc3dlYi5jb20vd3d3L3hib3hoYWNrei5jb20vCitbNF06IC9wcm9jL2J1cy91c2IvZGV2aWNlcyAtIGR1bXAgZnJvbSBJbnRlckFjdCBQb3dlclBhZCBQcm8gKEdlcm1hbnkpOgorCitUOiAgQnVzPTAxIExldj0wMyBQcm50PTA0IFBvcnQ9MDAgQ250PTAxIERldiM9ICA1IFNwZD0xMiAgTXhDaD0gMAorRDogIFZlcj0gMS4xMCBDbHM9MDAoPmlmYyApIFN1Yj0wMCBQcm90PTAwIE14UFM9MzIgI0NmZ3M9ICAxCitQOiAgVmVuZG9yPTA1ZmQgUHJvZElEPTEwN2EgUmV2PSAxLjAwCitDOiogI0lmcz0gMSBDZmcjPSAxIEF0cj04MCBNeFB3cj0xMDBtQQorSTogIElmIz0gMCBBbHQ9IDAgI0VQcz0gMiBDbHM9NTgodW5rLiApIFN1Yj00MiBQcm90PTAwIERyaXZlcj0obm9uZSkKK0U6ICBBZD04MShJKSBBdHI9MDMoSW50LikgTXhQUz0gIDMyIEl2bD0gMTBtcworRTogIEFkPTAyKE8pIEF0cj0wMyhJbnQuKSBNeFBTPSAgMzIgSXZsPSAxMG1zCisKK1s1XTogL3Byb2MvYnVzL3VzYi9kZXZpY2VzIC0gZHVtcCBmcm9tIFJlZG9jdGFuZSBYYm94IERhbmNlIFBhZCAoVVMpOgorCitUOiAgQnVzPTAxIExldj0wMiBQcm50PTA5IFBvcnQ9MDAgQ250PTAxIERldiM9IDEwIFNwZD0xMiAgTXhDaD0gMAorRDogIFZlcj0gMS4xMCBDbHM9MDAoPmlmYyApIFN1Yj0wMCBQcm90PTAwIE14UFM9IDggI0NmZ3M9ICAxCitQOiAgVmVuZG9yPTBjMTIgUHJvZElEPTg4MDkgUmV2PSAwLjAxCitTOiAgUHJvZHVjdD1YQk9YIEREUgorQzoqICNJZnM9IDEgQ2ZnIz0gMSBBdHI9ODAgTXhQd3I9MTAwbUEKK0k6ICBJZiM9IDAgQWx0PSAwICNFUHM9IDIgQ2xzPTU4KHVuay4gKSBTdWI9NDIgUHJvdD0wMCBEcml2ZXI9eHBhZAorRTogIEFkPTgyKEkpIEF0cj0wMyhJbnQuKSBNeFBTPSAgMzIgSXZsPTRtcworRTogIEFkPTAyKE8pIEF0cj0wMyhJbnQuKSBNeFBTPSAgMzIgSXZsPTRtcworCitbNl06IGh0dHA6Ly9seHIuZnJlZS1lbGVjdHJvbnMuY29tL2lkZW50P2k9eHBhZF9kZXZpY2UKKworCisKKzcuIEhpc3RvcmljIEVkaXRzCistLS0tLS0tLS0tLS0tLS0tLQorTWFya28gRnJpZWRlbWFubiA8bWZyQGJteC1jaGVtbml0ei5kZT4KKzIwMDItMDctMTYKKyAtIG9yaWdpbmFsIGRvYworCitEb21pbmljIENlcnF1ZXR0aSA8YmluYXJ5MTIzMEB5YWhvby5jb20+CisyMDA1LTAzLTE5CisgLSBhZGRlZCBzdHVmZiBmb3IgZGFuY2UgcGFkcywgbmV3IGQtcGFkLT5heGVzIG1hcHBpbmdzCisKK0xhdGVyIGNoYW5nZXMgbWF5IGJlIHZpZXdlZCB3aXRoICdnaXQgbG9nIERvY3VtZW50YXRpb24vaW5wdXQveHBhZC50eHQnCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lucHV0L3llYWxpbmsudHh0IGIvRG9jdW1lbnRhdGlvbi9pbnB1dC95ZWFsaW5rLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Mjc3Yjc2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pbnB1dC95ZWFsaW5rLnR4dApAQCAtMCwwICsxLDIxNiBAQAorRHJpdmVyIGRvY3VtZW50YXRpb24gZm9yIHllYWxpbmsgdXNiLXAxayBwaG9uZXMKKworMC4gU3RhdHVzCit+fn5+fn5+fn4KK1RoZSBwMWsgaXMgYSByZWxhdGl2ZWx5IGNoZWFwIHVzYiAxLjEgcGhvbmUgd2l0aDoKKyAgLSBrZXlib2FyZAkJZnVsbCBzdXBwb3J0LCB5ZWFsaW5rLmtvIC8gaW5wdXQgZXZlbnQgQVBJCisgIC0gTENECQkJZnVsbCBzdXBwb3J0LCB5ZWFsaW5rLmtvIC8gc3lzZnMgQVBJCisgIC0gTEVECQkJZnVsbCBzdXBwb3J0LCB5ZWFsaW5rLmtvIC8gc3lzZnMgQVBJCisgIC0gZGlhbHRvbmUJCWZ1bGwgc3VwcG9ydCwgeWVhbGluay5rbyAvIHN5c2ZzIEFQSQorICAtIHJpbmd0b25lCQlmdWxsIHN1cHBvcnQsIHllYWxpbmsua28gLyBzeXNmcyBBUEkKKyAgLSBhdWRpbyBwbGF5YmFjayAgIAlmdWxsIHN1cHBvcnQsIHNuZF91c2JfYXVkaW8ua28gLyBhbHNhIEFQSQorICAtIGF1ZGlvIHJlY29yZCAgICAgCWZ1bGwgc3VwcG9ydCwgc25kX3VzYl9hdWRpby5rbyAvIGFsc2EgQVBJCisKK0ZvciB2ZW5kb3IgZG9jdW1lbnRhdGlvbiBzZWUgaHR0cDovL3d3dy55ZWFsaW5rLmNvbQorCisKKzEuIENvbXBpbGF0aW9uIChzdGFuZCBhbG9uZSB2ZXJzaW9uKQorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitDdXJyZW50bHkgb25seSBrZXJuZWwgMi42LngueSB2ZXJzaW9ucyBhcmUgc3VwcG9ydGVkLgorSW4gb3JkZXIgdG8gYnVpbGQgdGhlIHllYWxpbmsua28gbW9kdWxlIGRvCisKKyAgbWFrZQorCitJZiB5b3UgZW5jb3VudGVyIHByb2JsZW1zIHBsZWFzZSBjaGVjayBpZiBpbiB0aGUgTUFLRV9PUFRTIHZhcmlhYmxlIGluCit0aGUgTWFrZWZpbGUgaXMgcG9pbnRpbmcgdG8gdGhlIGxvY2F0aW9uIHdoZXJlIHlvdXIga2VybmVsIHNvdXJjZXMKK2FyZSBsb2NhdGVkLCBkZWZhdWx0IC91c3Ivc3JjL2xpbnV4LgorCisKKzEuMSBUcm91Ymxlc2hvb3RpbmcKK35+fn5+fn5+fn5+fn5+fn5+fn4KK1E6IE1vZHVsZSB5ZWFsaW5rIGNvbXBpbGVkIGFuZCBpbnN0YWxsZWQgd2l0aG91dCBhbnkgcHJvYmxlbSBidXQgcGhvbmUKKyAgIGlzIG5vdCBpbml0aWFsaXplZCBhbmQgZG9lcyBub3QgcmVhY3QgdG8gYW55IGFjdGlvbnMuCitBOiBJZiB5b3Ugc2VlIHNvbWV0aGluZyBsaWtlOgorICAgaGlkZGV2MDogVVNCIEhJRCB2MS4wMCBEZXZpY2UgW1llYWxpbmsgTmV0d29yayBUZWNobm9sb2d5IEx0ZC4gVk9JUCBVU0IgUGhvbmUKKyAgIGluIGRtZXNnLCBpdCBtZWFucyB0aGF0IHRoZSBoaWQgZHJpdmVyIGhhcyBncmFiYmVkIHRoZSBkZXZpY2UgZmlyc3QuIFRyeSB0bworICAgbG9hZCBtb2R1bGUgeWVhbGluayBiZWZvcmUgYW55IG90aGVyIHVzYiBoaWQgZHJpdmVyLiBQbGVhc2Ugc2VlIHRoZQorICAgaW5zdHJ1Y3Rpb25zIHByb3ZpZGVkIGJ5IHlvdXIgZGlzdHJpYnV0aW9uIG9uIG1vZHVsZSBjb25maWd1cmF0aW9uLgorCitROiBQaG9uZSBpcyB3b3JraW5nIG5vdyAoZGlzcGxheXMgdmVyc2lvbiBhbmQgYWNjZXB0cyBrZXlwYWQgaW5wdXQpIGJ1dCBJIGNhbid0CisgICBmaW5kIHRoZSBzeXNmcyBmaWxlcy4KK0E6IFRoZSBzeXNmcyBmaWxlcyBhcmUgbG9jYXRlZCBvbiB0aGUgcGFydGljdWxhciB1c2IgZW5kcG9pbnQuIE9uIG1vc3QKKyAgIGRpc3RyaWJ1dGlvbnMgeW91IGNhbiBkbzogImZpbmQgL3N5cy8gLW5hbWUgZ2V0X2ljb25zIiBmb3IgYSBoaW50LgorCisKKzIuIGtleWJvYXJkIGZlYXR1cmVzCit+fn5+fn5+fn5+fn5+fn5+fn5+fgorVGhlIGN1cnJlbnQgbWFwcGluZyBpbiB0aGUga2VybmVsIGlzIHByb3ZpZGVkIGJ5IHRoZSBtYXBfcDFrX3RvX2tleQorZnVuY3Rpb246CisKKyAgIFBoeXNpY2FsIFVTQi1QMUsgYnV0dG9uIGxheW91dAlpbnB1dCBldmVudHMKKworCisgICAgICAgICAgICAgIHVwCQkJICAgICB1cAorICAgICAgICBJTiAgICAgICAgICAgT1VUCQlsZWZ0LAlyaWdodAorICAgICAgICAgICAgIGRvd24JCQkgICAgZG93bgorCisgICAgICBwaWNrdXAgICBDICAgIGhhbmd1cAkJZW50ZXIsIGJhY2tzcGFjZSwgZXNjYXBlCisgICAgICAgIDEgICAgICAyICAgICAgMwkJCTEsIDIsIDMKKyAgICAgICAgNCAgICAgIDUgICAgICA2CQkJNCwgNSwgNiwKKyAgICAgICAgNyAgICAgIDggICAgICA5CQkJNywgOCwgOSwKKyAgICAgICAgKiAgICAgIDAgICAgICAjCQkJKiwgMCwgIywKKworICBUaGUgInVwIiBhbmQgImRvd24iIGtleXMsIGFyZSBzeW1ib2xpc2VkIGJ5IGFycm93cyBvbiB0aGUgYnV0dG9uLgorICBUaGUgInBpY2t1cCIgYW5kICJoYW5ndXAiIGtleXMgYXJlIHN5bWJvbGlzZWQgYnkgYSBncmVlbiBhbmQgcmVkIHBob25lCisgIG9uIHRoZSBidXR0b24uCisKKworMy4gTENEIGZlYXR1cmVzCit+fn5+fn5+fn5+fn5+fn4KK1RoZSBMQ0QgaXMgZGl2aWRlZCBhbmQgb3JnYW5pc2VkIGFzIGEgMyBsaW5lIGRpc3BsYXk6CisKKyAgICB8W10gICBbXVtdICAgW11bXSAgIFtdW10gICBpbiAgIHxbXVtdCisgICAgfFtdIE0gW11bXSBEIFtdW10gOiBbXVtdICAgb3V0ICB8W11bXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmUKKworICAgIE5FVyBSRVAgICAgICAgICBTVSBNTyBUVSBXRSBUSCBGUiBTQQorCisgICAgW10gW10gW10gW10gW10gW10gW10gW10gW10gW10gW10gW10KKyAgICBbXSBbXSBbXSBbXSBbXSBbXSBbXSBbXSBbXSBbXSBbXSBbXQorCisKK0xpbmUgMQlGb3JtYXQgKHNlZSBiZWxvdykJOiAxOC5lOC5NOC44OC4uLjE4OAorCUljb24gbmFtZXMJCTogICBNICBEICA6ICBJTiBPVVQgU1RPUkUKK0xpbmUgMiAgRm9ybWF0CQkJOiAuLi4uLi4uLi4KKwlJY29uIG5hbWUJCTogTkVXIFJFUCBTVSBNTyBUVSBXRSBUSCBGUiBTQQorTGluZSAzICBGb3JtYXQJCQk6IDg4ODg4ODg4ODg4OAorCisKK0Zvcm1hdCBkZXNjcmlwdGlvbjoKKyAgRnJvbSBhIHVzZXJzcGFjZSBwZXJzcGVjdGl2ZSB0aGUgd29ybGQgaXMgc2VwYXJhdGVkIGludG8gImRpZ2l0cyIgYW5kICJpY29ucyIuCisgIEEgZGlnaXQgY2FuIGhhdmUgYSBjaGFyYWN0ZXIgc2V0LCBhbiBpY29uIGNhbiBvbmx5IGJlIE9OIG9yIE9GRi4KKworICBGb3JtYXQgc3BlY2lmaWVyCisgICAgJzgnIDogIEdlbmVyaWMgNyBzZWdtZW50IGRpZ2l0IHdpdGggaW5kaXZpZHVhbCBhZGRyZXNzYWJsZSBzZWdtZW50cworCisgICAgUmVkdWNlZCBjYXBhYmlsaXR5IDcgc2VnbWVudCBkaWdpdCwgd2hlbiBzZWdtZW50cyBhcmUgaGFyZCB3aXJlZCB0b2dldGhlci4KKyAgICAnMScgOiAyIHNlZ21lbnRzIGRpZ2l0IG9ubHkgYWJsZSB0byBwcm9kdWNlIGEgMS4KKyAgICAnZScgOiBNb3N0IHNpZ25pZmljYW50IGRheSBvZiB0aGUgbW9udGggZGlnaXQsCisgICAgICAgICAgYWJsZSB0byBwcm9kdWNlIGF0IGxlYXN0IDEgMiAzLgorICAgICdNJyA6IE1vc3Qgc2lnbmlmaWNhbnQgbWludXRlIGRpZ2l0LAorICAgICAgICAgIGFibGUgdG8gcHJvZHVjZSBhdCBsZWFzdCAwIDEgMiAzIDQgNS4KKworICAgIEljb25zIG9yIHBpY3RvZ3JhbXM6CisgICAgJy4nIDogRm9yIGV4YW1wbGUgbGlrZSBBTSwgUE0sIFNVLCBhICdkb3QnIC4uIG9yIG90aGVyIHNpbmdsZSBzZWdtZW50CisJICBlbGVtZW50cy4KKworCis0LiBEcml2ZXIgdXNhZ2UKK35+fn5+fn5+fn5+fn5+fgorRm9yIHVzZXJsYW5kIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlcyBhcmUgYXZhaWxhYmxlIHVzaW5nIHRoZSBzeXNmcyBpbnRlcmZhY2U6CisgIC9zeXMvLi4uLworICAgICAgICAgICBsaW5lMQlSZWFkL1dyaXRlLCBsY2QgbGluZTEKKyAgICAgICAgICAgbGluZTIJUmVhZC9Xcml0ZSwgbGNkIGxpbmUyCisgICAgICAgICAgIGxpbmUzCVJlYWQvV3JpdGUsIGxjZCBsaW5lMworCisJICAgZ2V0X2ljb25zICAgIFJlYWQsIHJldHVybnMgYSBzZXQgb2YgYXZhaWxhYmxlIGljb25zLgorCSAgIGhpZGVfaWNvbiAgICBXcml0ZSwgaGlkZSB0aGUgZWxlbWVudCBieSB3cml0aW5nIHRoZSBpY29uIG5hbWUuCisJICAgc2hvd19pY29uICAgIFdyaXRlLCBkaXNwbGF5IHRoZSBlbGVtZW50IGJ5IHdyaXRpbmcgdGhlIGljb24gbmFtZS4KKworCSAgIG1hcF9zZWc3CVJlYWQvV3JpdGUsIHRoZSA3IHNlZ21lbnRzIGNoYXIgc2V0LCBjb21tb24gZm9yIGFsbAorCSAgIAkJeWVhbGluayBwaG9uZXMuIChzZWUgbWFwX3RvXzdzZWdtZW50LmgpCisKKwkgICByaW5ndG9uZQlXcml0ZSwgdXBsb2FkIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBhIHJpbmd0b25lLAorCSAgIAkJc2VlIHllYWxpbmsuYy4gc3RhdHVzIEVYUEVSSU1FTlRBTCBkdWUgdG8gcG90ZW50aWFsCisJCQlyYWNlcyBiZXR3ZWVuIGFzeW5jLiBhbmQgc3luYyB1c2IgY2FsbHMuCisKKworNC4xIGxpbmVYCit+fn5+fn5+fn4KK1JlYWRpbmcgL3N5cy8uLi9saW5lWCB3aWxsIHJldHVybiB0aGUgZm9ybWF0IHN0cmluZyB3aXRoIGl0cyBjdXJyZW50IHZhbHVlOgorCisgIEV4YW1wbGU6CisgIGNhdCAuL2xpbmUzCisgIDg4ODg4ODg4ODg4OAorICBMaW51eCBSb2NrcyEKKworV3JpdGluZyB0byAvc3lzLy4uL2xpbmVYIHdpbGwgc2V0IHRoZSBjb3JyZXNwb25kaW5nIExDRCBsaW5lLgorIC0gRXhjZXNzIGNoYXJhY3RlcnMgYXJlIGlnbm9yZWQuCisgLSBJZiBsZXNzIGNoYXJhY3RlcnMgYXJlIHdyaXR0ZW4gdGhhbiBhbGxvd2VkLCB0aGUgcmVtYWluaW5nIGRpZ2l0cyBhcmUKKyAgIHVuY2hhbmdlZC4KKyAtIFRoZSB0YWIgJ1x0J2FuZCAnXG4nIGNoYXIgZG9lcyBub3Qgb3ZlcndyaXRlIHRoZSBvcmlnaW5hbCBjb250ZW50LgorIC0gV3JpdGluZyBhIHNwYWNlIHRvIGFuIGljb24gd2lsbCBhbHdheXMgaGlkZSBpdHMgY29udGVudC4KKworICBFeGFtcGxlOgorICBkYXRlICsiJW0uJWUuJWs6JU0iICB8IHNlZCAncy9eMC8gLycgPiAuL2xpbmUxCisKKyAgV2lsbCB1cGRhdGUgdGhlIExDRCB3aXRoIHRoZSBjdXJyZW50IGRhdGUgJiB0aW1lLgorCisKKzQuMiBnZXRfaWNvbnMKK35+fn5+fn5+fn5+fn4KK1JlYWRpbmcgd2lsbCByZXR1cm4gYWxsIGF2YWlsYWJsZSBpY29uIG5hbWVzIGFuZCBpdHMgY3VycmVudCBzZXR0aW5nczoKKworICBjYXQgLi9nZXRfaWNvbnMKKyAgb24gTQorICBvbiBECisgIG9uIDoKKyAgICAgSU4KKyAgICAgT1VUCisgICAgIFNUT1JFCisgICAgIE5FVworICAgICBSRVAKKyAgICAgU1UKKyAgICAgTU8KKyAgICAgVFUKKyAgICAgV0UKKyAgICAgVEgKKyAgICAgRlIKKyAgICAgU0EKKyAgICAgTEVECisgICAgIERJQUxUT05FCisgICAgIFJJTkdUT05FCisKKworNC4zIHNob3cvaGlkZSBpY29ucworfn5+fn5+fn5+fn5+fn5+fn5+fgorV3JpdGluZyB0byB0aGVzZSBmaWxlcyB3aWxsIHVwZGF0ZSB0aGUgc3RhdGUgb2YgdGhlIGljb24uCitPbmx5IG9uZSBpY29uIGF0IGEgdGltZSBjYW4gYmUgdXBkYXRlZC4KKworSWYgYW4gaWNvbiBpcyBhbHNvIG9uIGEgLi9saW5lWCB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpcwordXBkYXRlZCB3aXRoIHRoZSBmaXJzdCBsZXR0ZXIgb2YgdGhlIGljb24uCisKKyAgRXhhbXBsZSAtIGxpZ2h0IHVwIHRoZSBzdG9yZSBpY29uOgorICBlY2hvIC1uICJTVE9SRSIgPiAuL3Nob3dfaWNvbgorCisgIGNhdCAuL2xpbmUxCisgIDE4LmU4Lk04Ljg4Li4uMTg4CisgICAgICAgICAgICAgICBTCisKKyAgRXhhbXBsZSAtIHNvdW5kIHRoZSByaW5ndG9uZSBmb3IgMTAgc2Vjb25kczoKKyAgZWNobyAtbiBSSU5HVE9ORSA+IC9zeXMvLi4uLi9zaG93X2ljb24KKyAgc2xlZXAgMTAKKyAgZWNobyAtbiBSSU5HVE9ORSA+IC9zeXMvLi4uLi9oaWRlX2ljb24KKworCis1LiBTb3VuZCBmZWF0dXJlcworfn5+fn5+fn5+fn5+fn5+fn4KK1NvdW5kIGlzIHN1cHBvcnRlZCBieSB0aGUgQUxTQSBkcml2ZXI6IHNuZF91c2JfYXVkaW8KKworT25lIDE2LWJpdCBjaGFubmVsIHdpdGggc2FtcGxlIGFuZCBwbGF5YmFjayByYXRlcyBvZiA4MDAwIEh6IGlzIHRoZSBwcmFjdGljYWwKK2xpbWl0IG9mIHRoZSBkZXZpY2UuCisKKyAgRXhhbXBsZSAtIHJlY29yZGluZyB0ZXN0OgorICBhcmVjb3JkIC12IC1kIDEwIC1yIDgwMDAgLWYgUzE2X0xFIC10IHdhdiAgZm9vYmFyLndhdgorCisgIEV4YW1wbGUgLSBwbGF5YmFjayB0ZXN0OgorICBhcGxheSBmb29iYXIud2F2CisKKworNi4gQ3JlZGl0cyAmIEFja25vd2xlZGdtZW50cworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorICAtIE9saXZpZXIgVmFuZG9ycGUsIGZvciBzdGFydGluZyB0aGUgdXNiYjJrLWFwaSBwcm9qZWN0IGRvaW5nIG11Y2ggb2YKKwl0aGUgcmV2ZXJzZSBlbmdpbmVlcmluZy4KKyAgLSBNYXJ0aW4gRGllaGwsIGZvciBwb2ludGluZyBvdXQgaG93IHRvIGhhbmRsZSBVU0IgbWVtb3J5IGFsbG9jYXRpb24uCisgIC0gRG1pdHJ5IFRvcm9raG92LCBmb3IgdGhlIG51bWVyb3VzIGNvZGUgcmV2aWV3cyBhbmQgc3VnZ2VzdGlvbnMuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW50ZWxfdHh0LnR4dCBiL0RvY3VtZW50YXRpb24vaW50ZWxfdHh0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWQ4OWM1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pbnRlbF90eHQudHh0CkBAIC0wLDAgKzEsMjEwIEBACitJbnRlbChSKSBUWFQgT3ZlcnZpZXc6Cis9PT09PT09PT09PT09PT09PT09PT0KKworSW50ZWwncyB0ZWNobm9sb2d5IGZvciBzYWZlciBjb21wdXRpbmcsIEludGVsKFIpIFRydXN0ZWQgRXhlY3V0aW9uCitUZWNobm9sb2d5IChJbnRlbChSKSBUWFQpLCBkZWZpbmVzIHBsYXRmb3JtLWxldmVsIGVuaGFuY2VtZW50cyB0aGF0Citwcm92aWRlIHRoZSBidWlsZGluZyBibG9ja3MgZm9yIGNyZWF0aW5nIHRydXN0ZWQgcGxhdGZvcm1zLgorCitJbnRlbCBUWFQgd2FzIGZvcm1lcmx5IGtub3duIGJ5IHRoZSBjb2RlIG5hbWUgTGFHcmFuZGUgVGVjaG5vbG9neSAoTFQpLgorCitJbnRlbCBUWFQgaW4gQnJpZWY6CitvICBQcm92aWRlcyBkeW5hbWljIHJvb3Qgb2YgdHJ1c3QgZm9yIG1lYXN1cmVtZW50IChEUlRNKQorbyAgRGF0YSBwcm90ZWN0aW9uIGluIGNhc2Ugb2YgaW1wcm9wZXIgc2h1dGRvd24KK28gIE1lYXN1cmVtZW50IGFuZCB2ZXJpZmljYXRpb24gb2YgbGF1bmNoZWQgZW52aXJvbm1lbnQKKworSW50ZWwgVFhUIGlzIHBhcnQgb2YgdGhlIHZQcm8oVE0pIGJyYW5kIGFuZCBpcyBhbHNvIGF2YWlsYWJsZSBzb21lCitub24tdlBybyBzeXN0ZW1zLiAgSXQgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBvbiBkZXNrdG9wIHN5c3RlbXMKK2Jhc2VkIG9uIHRoZSBRMzUsIFgzOCwgUTQ1LCBhbmQgUTQzIEV4cHJlc3MgY2hpcHNldHMgKGUuZy4gRGVsbAorT3B0aXBsZXggNzU1LCBIUCBkYzc4MDAsIGV0Yy4pIGFuZCBtb2JpbGUgc3lzdGVtcyBiYXNlZCBvbiB0aGUgR000NSwKK1BNNDUsIGFuZCBHUzQ1IEV4cHJlc3MgY2hpcHNldHMuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5pbnRlbC5jb20vdGVjaG5vbG9neS9zZWN1cml0eS8uCitUaGlzIHNpdGUgYWxzbyBoYXMgYSBsaW5rIHRvIHRoZSBJbnRlbCBUWFQgTUxFIERldmVsb3BlcnMgTWFudWFsLAord2hpY2ggaGFzIGJlZW4gdXBkYXRlZCBmb3IgdGhlIG5ldyByZWxlYXNlZCBwbGF0Zm9ybXMuCisKK0ludGVsIFRYVCBoYXMgYmVlbiBwcmVzZW50ZWQgYXQgdmFyaW91cyBldmVudHMgb3ZlciB0aGUgcGFzdCBmZXcKK3llYXJzLCBzb21lIG9mIHdoaWNoIGFyZToKKyAgICAgIExpbnV4VEFHIDIwMDg6CisgICAgICAgICAgaHR0cDovL3d3dy5saW51eHRhZy5vcmcvMjAwOC9lbi9jb25mL2V2ZW50cy92cC1kb25uZXJzdGFnLmh0bWwKKyAgICAgIFRSVVNUMjAwODoKKyAgICAgICAgICBodHRwOi8vd3d3LnRydXN0LWNvbmZlcmVuY2UuZXUvZG93bmxvYWRzL0tleW5vdGUtU3BlYWtlcnMvCisgICAgICAgICAgM19EYXZpZC1HcmF3cm9ja19UaGUtRnJvbnQtRG9vci1vZi1UcnVzdGVkLUNvbXB1dGluZy5wZGYKKyAgICAgIElERiwgU2hhbmdoYWk6CisgICAgICAgICAgaHR0cDovL3d3dy5wcmNpZGYuY29tLmNuL2luZGV4X2VuLmh0bWwKKyAgICAgIElERnMgMjAwNiwgMjAwNyAoSSdtIG5vdCBzdXJlIGlmL3doZXJlIHRoZXkgYXJlIG9ubGluZSkKKworVHJ1c3RlZCBCb290IFByb2plY3QgT3ZlcnZpZXc6Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUcnVzdGVkIEJvb3QgKHRib290KSBpcyBhbiBvcGVuIHNvdXJjZSwgcHJlLWtlcm5lbC9WTU0gbW9kdWxlIHRoYXQKK3VzZXMgSW50ZWwgVFhUIHRvIHBlcmZvcm0gYSBtZWFzdXJlZCBhbmQgdmVyaWZpZWQgbGF1bmNoIG9mIGFuIE9TCitrZXJuZWwvVk1NLgorCitJdCBpcyBob3N0ZWQgb24gU291cmNlRm9yZ2UgYXQgaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy90Ym9vdC4KK1RoZSBtZXJjdXJpYWwgc291cmNlIHJlcG8gaXMgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuYnVnaG9zdC5vcmcvCityZXBvcy5oZy90Ym9vdC5oZy4KKworVGJvb3QgY3VycmVudGx5IHN1cHBvcnRzIGxhdW5jaGluZyBYZW4gKG9wZW4gc291cmNlIFZNTS9oeXBlcnZpc29yCit3LyBUWFQgc3VwcG9ydCBzaW5jZSB2My4yKSwgYW5kIG5vdyBMaW51eCBrZXJuZWxzLgorCisKK1ZhbHVlIFByb3Bvc2l0aW9uIGZvciBMaW51eCBvciAiV2h5IHNob3VsZCB5b3UgY2FyZT8iCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitXaGlsZSB0aGVyZSBhcmUgbWFueSBwcm9kdWN0cyBhbmQgdGVjaG5vbG9naWVzIHRoYXQgYXR0ZW1wdCB0bworbWVhc3VyZSBvciBwcm90ZWN0IHRoZSBpbnRlZ3JpdHkgb2YgYSBydW5uaW5nIGtlcm5lbCwgdGhleSBhbGwKK2Fzc3VtZSB0aGUga2VybmVsIGlzICJnb29kIiB0byBiZWdpbiB3aXRoLiAgVGhlIEludGVncml0eQorTWVhc3VyZW1lbnQgQXJjaGl0ZWN0dXJlIChJTUEpIGFuZCBMaW51eCBJbnRlZ3JpdHkgTW9kdWxlIGludGVyZmFjZQorYXJlIGV4YW1wbGVzIG9mIHN1Y2ggc29sdXRpb25zLgorCitUbyBnZXQgdHJ1c3QgaW4gdGhlIGluaXRpYWwga2VybmVsIHdpdGhvdXQgdXNpbmcgSW50ZWwgVFhULCBhCitzdGF0aWMgcm9vdCBvZiB0cnVzdCBtdXN0IGJlIHVzZWQuICBUaGlzIGJhc2VzIHRydXN0IGluIEJJT1MKK3N0YXJ0aW5nIGF0IHN5c3RlbSByZXNldCBhbmQgcmVxdWlyZXMgbWVhc3VyZW1lbnQgb2YgYWxsIGNvZGUKK2V4ZWN1dGVkIGJldHdlZW4gc3lzdGVtIHJlc2V0IHRocm91Z2ggdGhlIGNvbXBsZXRpb24gb2YgdGhlIGtlcm5lbAorYm9vdCBhcyB3ZWxsIGFzIGRhdGEgb2JqZWN0cyB1c2VkIGJ5IHRoYXQgY29kZS4gIEluIHRoZSBjYXNlIG9mIGEKK0xpbnV4IGtlcm5lbCwgdGhpcyBtZWFucyBhbGwgb2YgQklPUywgYW55IG9wdGlvbiBST01zLCB0aGUKK2Jvb3Rsb2FkZXIgYW5kIHRoZSBib290IGNvbmZpZy4gIEluIHByYWN0aWNlLCB0aGlzIGlzIGEgbG90IG9mCitjb2RlL2RhdGEsIG11Y2ggb2Ygd2hpY2ggaXMgc3ViamVjdCB0byBjaGFuZ2UgZnJvbSBib290IHRvIGJvb3QKKyhlLmcuIGNoYW5naW5nIE5JQ3MgbWF5IGNoYW5nZSBvcHRpb24gUk9NcykuICBXaXRob3V0IHJlZmVyZW5jZQoraGFzaGVzLCB0aGVzZSBtZWFzdXJlbWVudCBjaGFuZ2VzIGFyZSBkaWZmaWN1bHQgdG8gYXNzZXNzIG9yCitjb25maXJtIGFzIGJlbmlnbi4gIFRoaXMgcHJvY2VzcyBhbHNvIGRvZXMgbm90IHByb3ZpZGUgRE1BCitwcm90ZWN0aW9uLCBtZW1vcnkgY29uZmlndXJhdGlvbi9hbGlhcyBjaGVja3MgYW5kIGxvY2tzLCBjcmFzaAorcHJvdGVjdGlvbiwgb3IgcG9saWN5IHN1cHBvcnQuCisKK0J5IHVzaW5nIHRoZSBoYXJkd2FyZS1iYXNlZCByb290IG9mIHRydXN0IHRoYXQgSW50ZWwgVFhUIHByb3ZpZGVzLAorbWFueSBvZiB0aGVzZSBpc3N1ZXMgY2FuIGJlIG1pdGlnYXRlZC4gIFNwZWNpZmljYWxseTogbWFueQorcHJlLWxhdW5jaCBjb21wb25lbnRzIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHRydXN0IGNoYWluLCBETUEKK3Byb3RlY3Rpb24gaXMgcHJvdmlkZWQgdG8gYWxsIGxhdW5jaGVkIGNvbXBvbmVudHMsIGEgbGFyZ2UgbnVtYmVyCitvZiBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIGNoZWNrcyBhcmUgcGVyZm9ybWVkIGFuZCB2YWx1ZXMgbG9ja2VkLAorcHJvdGVjdGlvbiBpcyBwcm92aWRlZCBmb3IgYW55IGRhdGEgaW4gdGhlIGV2ZW50IG9mIGFuIGltcHJvcGVyCitzaHV0ZG93biwgYW5kIHRoZXJlIGlzIHN1cHBvcnQgZm9yIHBvbGljeS1iYXNlZCBleGVjdXRpb24vdmVyaWZpY2F0aW9uLgorVGhpcyBwcm92aWRlcyBhIG1vcmUgc3RhYmxlIG1lYXN1cmVtZW50IGFuZCBhIGhpZ2hlciBhc3N1cmFuY2Ugb2YKK3N5c3RlbSBjb25maWd1cmF0aW9uIGFuZCBpbml0aWFsIHN0YXRlIHRoYW4gd291bGQgYmUgb3RoZXJ3aXNlCitwb3NzaWJsZS4gIFNpbmNlIHRoZSB0Ym9vdCBwcm9qZWN0IGlzIG9wZW4gc291cmNlLCBzb3VyY2UgY29kZSBmb3IKK2FsbW9zdCBhbGwgcGFydHMgb2YgdGhlIHRydXN0IGNoYWluIGlzIGF2YWlsYWJsZSAoZXhjZXB0aW5nIFNNTSBhbmQKK0ludGVsLXByb3ZpZGVkIGZpcm13YXJlKS4KKworSG93IERvZXMgaXQgV29yaz8KKz09PT09PT09PT09PT09PT09CisKK28gIFRib290IGlzIGFuIGV4ZWN1dGFibGUgdGhhdCBpcyBsYXVuY2hlZCBieSB0aGUgYm9vdGxvYWRlciBhcworICAgdGhlICJrZXJuZWwiICh0aGUgYmluYXJ5IHRoZSBib290bG9hZGVyIGV4ZWN1dGVzKS4KK28gIEl0IHBlcmZvcm1zIGFsbCBvZiB0aGUgd29yayBuZWNlc3NhcnkgdG8gZGV0ZXJtaW5lIGlmIHRoZQorICAgcGxhdGZvcm0gc3VwcG9ydHMgSW50ZWwgVFhUIGFuZCwgaWYgc28sIGV4ZWN1dGVzIHRoZSBHRVRTRUNbU0VOVEVSXQorICAgcHJvY2Vzc29yIGluc3RydWN0aW9uIHRoYXQgaW5pdGlhdGVzIHRoZSBkeW5hbWljIHJvb3Qgb2YgdHJ1c3QuCisgICAtICBJZiB0Ym9vdCBkZXRlcm1pbmVzIHRoYXQgdGhlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IEludGVsIFRYVAorICAgICAgb3IgaXMgbm90IGNvbmZpZ3VyZWQgY29ycmVjdGx5IChlLmcuIHRoZSBTSU5JVCBBQyBNb2R1bGUgd2FzCisgICAgICBpbmNvcnJlY3QpLCBpdCB3aWxsIGRpcmVjdGx5IGxhdW5jaCB0aGUga2VybmVsIHdpdGggbm8gY2hhbmdlcworICAgICAgdG8gYW55IHN0YXRlLgorICAgLSAgVGJvb3Qgd2lsbCBvdXRwdXQgdmFyaW91cyBpbmZvcm1hdGlvbiBhYm91dCBpdHMgcHJvZ3Jlc3MgdG8gdGhlCisgICAgICB0ZXJtaW5hbCwgc2VyaWFsIHBvcnQsIGFuZC9vciBhbiBpbi1tZW1vcnkgbG9nOyB0aGUgb3V0cHV0CisgICAgICBsb2NhdGlvbnMgY2FuIGJlIGNvbmZpZ3VyZWQgd2l0aCBhIGNvbW1hbmQgbGluZSBzd2l0Y2guCitvICBUaGUgR0VUU0VDW1NFTlRFUl0gaW5zdHJ1Y3Rpb24gd2lsbCByZXR1cm4gY29udHJvbCB0byB0Ym9vdCBhbmQKKyAgIHRib290IHRoZW4gdmVyaWZpZXMgY2VydGFpbiBhc3BlY3RzIG9mIHRoZSBlbnZpcm9ubWVudCAoZS5nLiBUUE0gTlYKKyAgIGxvY2ssIGU4MjAgdGFibGUgZG9lcyBub3QgaGF2ZSBpbnZhbGlkIGVudHJpZXMsIGV0Yy4pLgorbyAgSXQgd2lsbCB3YWtlIHRoZSBBUHMgZnJvbSB0aGUgc3BlY2lhbCBzbGVlcCBzdGF0ZSB0aGUgR0VUU0VDW1NFTlRFUl0KKyAgIGluc3RydWN0aW9uIGhhZCBwdXQgdGhlbSBpbiBhbmQgcGxhY2UgdGhlbSBpbnRvIGEgd2FpdC1mb3ItU0lQSQorICAgc3RhdGUuCisgICAtICBCZWNhdXNlIHRoZSBwcm9jZXNzb3JzIHdpbGwgbm90IHJlc3BvbmQgdG8gYW4gSU5JVCBvciBTSVBJIHdoZW4KKyAgICAgIGluIHRoZSBUWFQgZW52aXJvbm1lbnQsIGl0IGlzIG5lY2Vzc2FyeSB0byBjcmVhdGUgYSBzbWFsbCBWVC14CisgICAgICBndWVzdCBmb3IgdGhlIEFQcy4gIFdoZW4gdGhleSBydW4gaW4gdGhpcyBndWVzdCwgdGhleSB3aWxsCisgICAgICBzaW1wbHkgd2FpdCBmb3IgdGhlIElOSVQtU0lQSS1TSVBJIHNlcXVlbmNlLCB3aGljaCB3aWxsIGNhdXNlCisgICAgICBWTUVYSVRzLCBhbmQgdGhlbiBkaXNhYmxlIFZUIGFuZCBqdW1wIHRvIHRoZSBTSVBJIHZlY3Rvci4gIFRoaXMKKyAgICAgIGFwcHJvYWNoIHNlZW1lZCBsaWtlIGEgYmV0dGVyIGNob2ljZSB0aGFuIGhhdmluZyB0byBpbnNlcnQKKyAgICAgIHNwZWNpYWwgY29kZSBpbnRvIHRoZSBrZXJuZWwncyBNUCB3YWtldXAgc2VxdWVuY2UuCitvICBUYm9vdCB0aGVuIGFwcGxpZXMgYW4gKG9wdGlvbmFsKSB1c2VyLWRlZmluZWQgbGF1bmNoIHBvbGljeSB0bworICAgdmVyaWZ5IHRoZSBrZXJuZWwgYW5kIGluaXRyZC4KKyAgIC0gIFRoaXMgcG9saWN5IGlzIHJvb3RlZCBpbiBUUE0gTlYgYW5kIGlzIGRlc2NyaWJlZCBpbiB0aGUgdGJvb3QKKyAgICAgIHByb2plY3QuICBUaGUgdGJvb3QgcHJvamVjdCBhbHNvIGNvbnRhaW5zIGNvZGUgZm9yIHRvb2xzIHRvCisgICAgICBjcmVhdGUgYW5kIHByb3Zpc2lvbiB0aGUgcG9saWN5LgorICAgLSAgUG9saWNpZXMgYXJlIGNvbXBsZXRlbHkgdW5kZXIgdXNlciBjb250cm9sIGFuZCBpZiBub3QgcHJlc2VudAorICAgICAgdGhlbiBhbnkga2VybmVsIHdpbGwgYmUgbGF1bmNoZWQuCisgICAtICBQb2xpY3kgYWN0aW9uIGlzIGZsZXhpYmxlIGFuZCBjYW4gaW5jbHVkZSBoYWx0aW5nIG9uIGZhaWx1cmVzCisgICAgICBvciBzaW1wbHkgbG9nZ2luZyB0aGVtIGFuZCBjb250aW51aW5nLgorbyAgVGJvb3QgYWRqdXN0cyB0aGUgZTgyMCB0YWJsZSBwcm92aWRlZCBieSB0aGUgYm9vdGxvYWRlciB0byByZXNlcnZlCisgICBpdHMgb3duIGxvY2F0aW9uIGluIG1lbW9yeSBhcyB3ZWxsIGFzIHRvIHJlc2VydmUgY2VydGFpbiBvdGhlcgorICAgVFhULXJlbGF0ZWQgcmVnaW9ucy4KK28gIEFzIHBhcnQgb2YgaXRzIGxhdW5jaCwgdGJvb3QgRE1BIHByb3RlY3RzIGFsbCBvZiBSQU0gKHVzaW5nIHRoZQorICAgVlQtZCBQTVJzKS4gIFRodXMsIHRoZSBrZXJuZWwgbXVzdCBiZSBib290ZWQgd2l0aCAnaW50ZWxfaW9tbXU9b24nCisgICBpbiBvcmRlciB0byByZW1vdmUgdGhpcyBibGFua2V0IHByb3RlY3Rpb24gYW5kIHVzZSBWVC1kJ3MKKyAgIHBhZ2UtbGV2ZWwgcHJvdGVjdGlvbi4KK28gIFRib290IHdpbGwgcG9wdWxhdGUgYSBzaGFyZWQgcGFnZSB3aXRoIHNvbWUgZGF0YSBhYm91dCBpdHNlbGYgYW5kCisgICBwYXNzIHRoaXMgdG8gdGhlIExpbnV4IGtlcm5lbCBhcyBpdCB0cmFuc2ZlcnMgY29udHJvbC4KKyAgIC0gIFRoZSBsb2NhdGlvbiBvZiB0aGUgc2hhcmVkIHBhZ2UgaXMgcGFzc2VkIHZpYSB0aGUgYm9vdF9wYXJhbXMKKyAgICAgIHN0cnVjdCBhcyBhIHBoeXNpY2FsIGFkZHJlc3MuCitvICBUaGUga2VybmVsIHdpbGwgbG9vayBmb3IgdGhlIHRib290IHNoYXJlZCBwYWdlIGFkZHJlc3MgYW5kLCBpZiBpdAorICAgZXhpc3RzLCBtYXAgaXQuCitvICBBcyBvbmUgb2YgdGhlIGNoZWNrcy9wcm90ZWN0aW9ucyBwcm92aWRlZCBieSBUWFQsIGl0IG1ha2VzIGEgY29weQorICAgb2YgdGhlIFZULWQgRE1BUnMgaW4gYSBETUEtcHJvdGVjdGVkIHJlZ2lvbiBvZiBtZW1vcnkgYW5kIHZlcmlmaWVzCisgICB0aGVtIGZvciBjb3JyZWN0bmVzcy4gIFRoZSBWVC1kIGNvZGUgd2lsbCBkZXRlY3QgaWYgdGhlIGtlcm5lbCB3YXMKKyAgIGxhdW5jaGVkIHdpdGggdGJvb3QgYW5kIHVzZSB0aGlzIGNvcHkgaW5zdGVhZCBvZiB0aGUgb25lIGluIHRoZQorICAgQUNQSSB0YWJsZS4KK28gIEF0IHRoaXMgcG9pbnQsIHRib290IGFuZCBUWFQgYXJlIG91dCBvZiB0aGUgcGljdHVyZSB1bnRpbCBhCisgICBzaHV0ZG93biAoUzxuPikKK28gIEluIG9yZGVyIHRvIHB1dCBhIHN5c3RlbSBpbnRvIGFueSBvZiB0aGUgc2xlZXAgc3RhdGVzIGFmdGVyIGEgVFhUCisgICBsYXVuY2gsIFRYVCBtdXN0IGZpcnN0IGJlIGV4aXRlZC4gIFRoaXMgaXMgdG8gcHJldmVudCBhdHRhY2tzIHRoYXQKKyAgIGF0dGVtcHQgdG8gY3Jhc2ggdGhlIHN5c3RlbSB0byBnYWluIGNvbnRyb2wgb24gcmVib290IGFuZCBzdGVhbAorICAgZGF0YSBsZWZ0IGluIG1lbW9yeS4KKyAgIC0gIFRoZSBrZXJuZWwgd2lsbCBwZXJmb3JtIGFsbCBvZiBpdHMgc2xlZXAgcHJlcGFyYXRpb24gYW5kCisgICAgICBwb3B1bGF0ZSB0aGUgc2hhcmVkIHBhZ2Ugd2l0aCB0aGUgQUNQSSBkYXRhIG5lZWRlZCB0byBwdXQgdGhlCisgICAgICBwbGF0Zm9ybSBpbiB0aGUgZGVzaXJlZCBzbGVlcCBzdGF0ZS4KKyAgIC0gIFRoZW4gdGhlIGtlcm5lbCBqdW1wcyBpbnRvIHRib290IHZpYSB0aGUgdmVjdG9yIHNwZWNpZmllZCBpbiB0aGUKKyAgICAgIHNoYXJlZCBwYWdlLgorICAgLSAgVGJvb3Qgd2lsbCBjbGVhbiB1cCB0aGUgZW52aXJvbm1lbnQgYW5kIGRpc2FibGUgVFhULCB0aGVuIHVzZSB0aGUKKyAgICAgIGtlcm5lbC1wcm92aWRlZCBBQ1BJIGluZm9ybWF0aW9uIHRvIGFjdHVhbGx5IHBsYWNlIHRoZSBwbGF0Zm9ybQorICAgICAgaW50byB0aGUgZGVzaXJlZCBzbGVlcCBzdGF0ZS4KKyAgIC0gIEluIHRoZSBjYXNlIG9mIFMzLCB0Ym9vdCB3aWxsIGFsc28gcmVnaXN0ZXIgaXRzZWxmIGFzIHRoZSByZXN1bWUKKyAgICAgIHZlY3Rvci4gIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgaXQgbXVzdCByZS1lc3RhYmxpc2ggdGhlCisgICAgICBtZWFzdXJlZCBlbnZpcm9ubWVudCB1cG9uIHJlc3VtZS4gIE9uY2UgdGhlIFRYVCBlbnZpcm9ubWVudAorICAgICAgaGFzIGJlZW4gcmVzdG9yZWQsIGl0IHdpbGwgcmVzdG9yZSB0aGUgVFBNIFBDUnMgYW5kIHRoZW4KKyAgICAgIHRyYW5zZmVyIGNvbnRyb2wgYmFjayB0byB0aGUga2VybmVsJ3MgUzMgcmVzdW1lIHZlY3Rvci4KKyAgICAgIEluIG9yZGVyIHRvIHByZXNlcnZlIHN5c3RlbSBpbnRlZ3JpdHkgYWNyb3NzIFMzLCB0aGUga2VybmVsCisgICAgICBwcm92aWRlcyB0Ym9vdCB3aXRoIGEgc2V0IG9mIG1lbW9yeSByYW5nZXMgKFJBTSBhbmQgUkVTRVJWRURfS0VSTgorICAgICAgaW4gdGhlIGU4MjAgdGFibGUsIGJ1dCBub3QgYW55IG1lbW9yeSB0aGF0IEJJT1MgbWlnaHQgYWx0ZXIgb3ZlcgorICAgICAgdGhlIFMzIHRyYW5zaXRpb24pIHRoYXQgdGJvb3Qgd2lsbCBjYWxjdWxhdGUgYSBNQUMgKG1lc3NhZ2UKKyAgICAgIGF1dGhlbnRpY2F0aW9uIGNvZGUpIG92ZXIgYW5kIHRoZW4gc2VhbCB3aXRoIHRoZSBUUE0uIE9uIHJlc3VtZQorICAgICAgYW5kIG9uY2UgdGhlIG1lYXN1cmVkIGVudmlyb25tZW50IGhhcyBiZWVuIHJlLWVzdGFibGlzaGVkLCB0Ym9vdAorICAgICAgd2lsbCByZS1jYWxjdWxhdGUgdGhlIE1BQyBhbmQgdmVyaWZ5IGl0IGFnYWluc3QgdGhlIHNlYWxlZCB2YWx1ZS4KKyAgICAgIFRib290J3MgcG9saWN5IGRldGVybWluZXMgd2hhdCBoYXBwZW5zIGlmIHRoZSB2ZXJpZmljYXRpb24gZmFpbHMuCisgICAgICBOb3RlIHRoYXQgdGhlIGMvcyAxOTQgb2YgdGJvb3Qgd2hpY2ggaGFzIHRoZSBuZXcgTUFDIGNvZGUgc3VwcG9ydHMKKyAgICAgIHRoaXMuCisKK1RoYXQncyBwcmV0dHkgbXVjaCBpdCBmb3IgVFhUIHN1cHBvcnQuCisKKworQ29uZmlndXJpbmcgdGhlIFN5c3RlbToKKz09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBjb2RlIHdvcmtzIHdpdGggMzJiaXQsIDMyYml0IFBBRSwgYW5kIDY0Yml0ICh4ODZfNjQpIGtlcm5lbHMuCisKK0luIEJJT1MsIHRoZSB1c2VyIG11c3QgZW5hYmxlOiAgVFBNLCBUWFQsIFZULXgsIFZULWQuICBOb3QgYWxsIEJJT1NlcworYWxsb3cgdGhlc2UgdG8gYmUgaW5kaXZpZHVhbGx5IGVuYWJsZWQvZGlzYWJsZWQgYW5kIHRoZSBzY3JlZW5zIGluCit3aGljaCB0byBmaW5kIHRoZW0gYXJlIEJJT1Mtc3BlY2lmaWMuCisKK2dydWIuY29uZiBuZWVkcyB0byBiZSBtb2RpZmllZCBhcyBmb2xsb3dzOgorICAgICAgICB0aXRsZSBMaW51eCAyLjYuMjktdGlwIHcvIHRib290CisgICAgICAgICAgcm9vdCAoaGQwLDApCisgICAgICAgICAgICAgICAga2VybmVsIC90Ym9vdC5neiBsb2dnaW5nPXNlcmlhbCx2Z2EsbWVtb3J5CisgICAgICAgICAgICAgICAgbW9kdWxlIC92bWxpbnV6LTIuNi4yOS10aXAgaW50ZWxfaW9tbXU9b24gcm8KKyAgICAgICAgICAgICAgICAgICAgICAgcm9vdD1MQUJFTD0vIHJoZ2IgY29uc29sZT10dHlTMCwxMTUyMDAgMworICAgICAgICAgICAgICAgIG1vZHVsZSAvaW5pdHJkLTIuNi4yOS10aXAuaW1nCisgICAgICAgICAgICAgICAgbW9kdWxlIC9RMzVfU0lOSVRfMTcuQklOCisKK1RoZSBrZXJuZWwgb3B0aW9uIGZvciBlbmFibGluZyBJbnRlbCBUWFQgc3VwcG9ydCBpcyBmb3VuZCB1bmRlciB0aGUKK1NlY3VyaXR5IHRvcC1sZXZlbCBtZW51IGFuZCBpcyBjYWxsZWQgIkVuYWJsZSBJbnRlbChSKSBUcnVzdGVkCitFeGVjdXRpb24gVGVjaG5vbG9neSAoVFhUKSIuICBJdCBpcyBjb25zaWRlcmVkIEVYUEVSSU1FTlRBTCBhbmQKK2RlcGVuZHMgb24gdGhlIGdlbmVyaWMgeDg2IHN1cHBvcnQgKHRvIGFsbG93IG1heGltdW0gZmxleGliaWxpdHkgaW4KK2tlcm5lbCBidWlsZCBvcHRpb25zKSwgc2luY2UgdGhlIHRib290IGNvZGUgd2lsbCBkZXRlY3Qgd2hldGhlciB0aGUKK3BsYXRmb3JtIGFjdHVhbGx5IHN1cHBvcnRzIEludGVsIFRYVCBhbmQgdGh1cyB3aGV0aGVyIGFueSBvZiB0aGUKK2tlcm5lbCBjb2RlIGlzIGV4ZWN1dGVkLgorCitUaGUgUTM1X1NJTklUXzE3LkJJTiBmaWxlIGlzIHdoYXQgSW50ZWwgVFhUIHJlZmVycyB0byBhcyBhbgorQXV0aGVudGljYXRlZCBDb2RlIE1vZHVsZS4gIEl0IGlzIHNwZWNpZmljIHRvIHRoZSBjaGlwc2V0IGluIHRoZQorc3lzdGVtIGFuZCBjYW4gYWxzbyBiZSBmb3VuZCBvbiB0aGUgVHJ1c3RlZCBCb290IHNpdGUuICBJdCBpcyBhbgorKHVuZW5jcnlwdGVkKSBtb2R1bGUgc2lnbmVkIGJ5IEludGVsIHRoYXQgaXMgdXNlZCBhcyBwYXJ0IG9mIHRoZQorRFJUTSBwcm9jZXNzIHRvIHZlcmlmeSBhbmQgY29uZmlndXJlIHRoZSBzeXN0ZW0uICBJdCBpcyBzaWduZWQKK2JlY2F1c2UgaXQgb3BlcmF0ZXMgYXQgYSBoaWdoZXIgcHJpdmlsZWdlIGxldmVsIGluIHRoZSBzeXN0ZW0gdGhhbgorYW55IG90aGVyIG1hY3JvY29kZSBhbmQgaXRzIGNvcnJlY3Qgb3BlcmF0aW9uIGlzIGNyaXRpY2FsIHRvIHRoZQorZXN0YWJsaXNobWVudCBvZiB0aGUgRFJUTS4gIFRoZSBwcm9jZXNzIGZvciBkZXRlcm1pbmluZyB0aGUgY29ycmVjdAorU0lOSVQgQUNNIGZvciBhIHN5c3RlbSBpcyBkb2N1bWVudGVkIGluIHRoZSBTSU5JVC1ndWlkZS50eHQgZmlsZQordGhhdCBpcyBvbiB0aGUgdGJvb3QgU291cmNlRm9yZ2Ugc2l0ZSB1bmRlciB0aGUgU0lOSVQgQUNNIGRvd25sb2Fkcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW8tbWFwcGluZy50eHQgYi9Eb2N1bWVudGF0aW9uL2lvLW1hcHBpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjYTc4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lvLW1hcHBpbmcudHh0CkBAIC0wLDAgKzEsODIgQEAKK1RoZSBpb19tYXBwaW5nIGZ1bmN0aW9ucyBpbiBsaW51eC9pby1tYXBwaW5nLmggcHJvdmlkZSBhbiBhYnN0cmFjdGlvbiBmb3IKK2VmZmljaWVudGx5IG1hcHBpbmcgc21hbGwgcmVnaW9ucyBvZiBhbiBJL08gZGV2aWNlIHRvIHRoZSBDUFUuIFRoZSBpbml0aWFsCit1c2FnZSBpcyB0byBzdXBwb3J0IHRoZSBsYXJnZSBncmFwaGljcyBhcGVydHVyZSBvbiAzMi1iaXQgcHJvY2Vzc29ycyB3aGVyZQoraW9yZW1hcF93YyBjYW5ub3QgYmUgdXNlZCB0byBzdGF0aWNhbGx5IG1hcCB0aGUgZW50aXJlIGFwZXJ0dXJlIHRvIHRoZSBDUFUKK2FzIGl0IHdvdWxkIGNvbnN1bWUgdG9vIG11Y2ggb2YgdGhlIGtlcm5lbCBhZGRyZXNzIHNwYWNlLgorCitBIG1hcHBpbmcgb2JqZWN0IGlzIGNyZWF0ZWQgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiB1c2luZworCisJc3RydWN0IGlvX21hcHBpbmcgKmlvX21hcHBpbmdfY3JlYXRlX3djKHVuc2lnbmVkIGxvbmcgYmFzZSwKKwkJCQkJCXVuc2lnbmVkIGxvbmcgc2l6ZSkKKworCQknYmFzZScgaXMgdGhlIGJ1cyBhZGRyZXNzIG9mIHRoZSByZWdpb24gdG8gYmUgbWFkZQorCQltYXBwYWJsZSwgd2hpbGUgJ3NpemUnIGluZGljYXRlcyBob3cgbGFyZ2UgYSBtYXBwaW5nIHJlZ2lvbiB0bworCQllbmFibGUuIEJvdGggYXJlIGluIGJ5dGVzLgorCisJCVRoaXMgX3djIHZhcmlhbnQgcHJvdmlkZXMgYSBtYXBwaW5nIHdoaWNoIG1heSBvbmx5IGJlIHVzZWQKKwkJd2l0aCB0aGUgaW9fbWFwcGluZ19tYXBfYXRvbWljX3djIG9yIGlvX21hcHBpbmdfbWFwX3djLgorCitXaXRoIHRoaXMgbWFwcGluZyBvYmplY3QsIGluZGl2aWR1YWwgcGFnZXMgY2FuIGJlIG1hcHBlZCBlaXRoZXIgYXRvbWljYWxseQorb3Igbm90LCBkZXBlbmRpbmcgb24gdGhlIG5lY2Vzc2FyeSBzY2hlZHVsaW5nIGVudmlyb25tZW50LiBPZiBjb3Vyc2UsIGF0b21pYworbWFwcyBhcmUgbW9yZSBlZmZpY2llbnQ6CisKKwl2b2lkICppb19tYXBwaW5nX21hcF9hdG9taWNfd2Moc3RydWN0IGlvX21hcHBpbmcgKm1hcHBpbmcsCisJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQorCisJCSdvZmZzZXQnIGlzIHRoZSBvZmZzZXQgd2l0aGluIHRoZSBkZWZpbmVkIG1hcHBpbmcgcmVnaW9uLgorCQlBY2Nlc3NpbmcgYWRkcmVzc2VzIGJleW9uZCB0aGUgcmVnaW9uIHNwZWNpZmllZCBpbiB0aGUKKwkJY3JlYXRpb24gZnVuY3Rpb24geWllbGRzIHVuZGVmaW5lZCByZXN1bHRzLiBVc2luZyBhbiBvZmZzZXQKKwkJd2hpY2ggaXMgbm90IHBhZ2UgYWxpZ25lZCB5aWVsZHMgYW4gdW5kZWZpbmVkIHJlc3VsdC4gVGhlCisJCXJldHVybiB2YWx1ZSBwb2ludHMgdG8gYSBzaW5nbGUgcGFnZSBpbiBDUFUgYWRkcmVzcyBzcGFjZS4KKworCQlUaGlzIF93YyB2YXJpYW50IHJldHVybnMgYSB3cml0ZS1jb21iaW5pbmcgbWFwIHRvIHRoZQorCQlwYWdlIGFuZCBtYXkgb25seSBiZSB1c2VkIHdpdGggbWFwcGluZ3MgY3JlYXRlZCBieQorCQlpb19tYXBwaW5nX2NyZWF0ZV93YworCisJCU5vdGUgdGhhdCB0aGUgdGFzayBtYXkgbm90IHNsZWVwIHdoaWxlIGhvbGRpbmcgdGhpcyBwYWdlCisJCW1hcHBlZC4KKworCXZvaWQgaW9fbWFwcGluZ191bm1hcF9hdG9taWModm9pZCAqdmFkZHIpCisKKwkJJ3ZhZGRyJyBtdXN0IGJlIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgbGFzdAorCQlpb19tYXBwaW5nX21hcF9hdG9taWNfd2MgY2FsbC4gVGhpcyB1bm1hcHMgdGhlIHNwZWNpZmllZAorCQlwYWdlIGFuZCBhbGxvd3MgdGhlIHRhc2sgdG8gc2xlZXAgb25jZSBhZ2Fpbi4KKworSWYgeW91IG5lZWQgdG8gc2xlZXAgd2hpbGUgaG9sZGluZyB0aGUgbG9jaywgeW91IGNhbiB1c2UgdGhlIG5vbi1hdG9taWMKK3ZhcmlhbnQsIGFsdGhvdWdoIHRoZXkgbWF5IGJlIHNpZ25pZmljYW50bHkgc2xvd2VyLgorCisJdm9pZCAqaW9fbWFwcGluZ19tYXBfd2Moc3RydWN0IGlvX21hcHBpbmcgKm1hcHBpbmcsCisJCQkJdW5zaWduZWQgbG9uZyBvZmZzZXQpCisKKwkJVGhpcyB3b3JrcyBsaWtlIGlvX21hcHBpbmdfbWFwX2F0b21pY193YyBleGNlcHQgaXQgYWxsb3dzCisJCXRoZSB0YXNrIHRvIHNsZWVwIHdoaWxlIGhvbGRpbmcgdGhlIHBhZ2UgbWFwcGVkLgorCisJdm9pZCBpb19tYXBwaW5nX3VubWFwKHZvaWQgKnZhZGRyKQorCisJCVRoaXMgd29ya3MgbGlrZSBpb19tYXBwaW5nX3VubWFwX2F0b21pYywgZXhjZXB0IGl0IGlzIHVzZWQKKwkJZm9yIHBhZ2VzIG1hcHBlZCB3aXRoIGlvX21hcHBpbmdfbWFwX3djLgorCitBdCBkcml2ZXIgY2xvc2UgdGltZSwgdGhlIGlvX21hcHBpbmcgb2JqZWN0IG11c3QgYmUgZnJlZWQ6CisKKwl2b2lkIGlvX21hcHBpbmdfZnJlZShzdHJ1Y3QgaW9fbWFwcGluZyAqbWFwcGluZykKKworQ3VycmVudCBJbXBsZW1lbnRhdGlvbjoKKworVGhlIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlc2UgZnVuY3Rpb25zIHVzZXMgZXhpc3RpbmcgbWFwcGluZworbWVjaGFuaXNtcyBhbmQgc28gcHJvdmlkZXMgb25seSBhbiBhYnN0cmFjdGlvbiBsYXllciBhbmQgbm8gbmV3CitmdW5jdGlvbmFsaXR5LgorCitPbiA2NC1iaXQgcHJvY2Vzc29ycywgaW9fbWFwcGluZ19jcmVhdGVfd2MgY2FsbHMgaW9yZW1hcF93YyBmb3IgdGhlIHdob2xlCityYW5nZSwgY3JlYXRpbmcgYSBwZXJtYW5lbnQga2VybmVsLXZpc2libGUgbWFwcGluZyB0byB0aGUgcmVzb3VyY2UuIFRoZQorbWFwX2F0b21pYyBhbmQgbWFwIGZ1bmN0aW9ucyBhZGQgdGhlIHJlcXVlc3RlZCBvZmZzZXQgdG8gdGhlIGJhc2Ugb2YgdGhlCit2aXJ0dWFsIGFkZHJlc3MgcmV0dXJuZWQgYnkgaW9yZW1hcF93Yy4KKworT24gMzItYml0IHByb2Nlc3NvcnMgd2l0aCBISUdITUVNIGRlZmluZWQsIGlvX21hcHBpbmdfbWFwX2F0b21pY193YyB1c2VzCitrbWFwX2F0b21pY19wZm4gdG8gbWFwIHRoZSBzcGVjaWZpZWQgcGFnZSBpbiBhbiBhdG9taWMgZmFzaGlvbjsKK2ttYXBfYXRvbWljX3BmbiBpc24ndCByZWFsbHkgc3VwcG9zZWQgdG8gYmUgdXNlZCB3aXRoIGRldmljZSBwYWdlcywgYnV0IGl0Citwcm92aWRlcyBhbiBlZmZpY2llbnQgbWFwcGluZyBmb3IgdGhpcyB1c2FnZS4KKworT24gMzItYml0IHByb2Nlc3NvcnMgd2l0aG91dCBISUdITUVNIGRlZmluZWQsIGlvX21hcHBpbmdfbWFwX2F0b21pY193YyBhbmQKK2lvX21hcHBpbmdfbWFwX3djIGJvdGggdXNlIGlvcmVtYXBfd2MsIGEgdGVycmlibHkgaW5lZmZpY2llbnQgZnVuY3Rpb24gd2hpY2gKK3BlcmZvcm1zIGFuIElQSSB0byBpbmZvcm0gYWxsIHByb2Nlc3NvcnMgYWJvdXQgdGhlIG5ldyBtYXBwaW5nLiBUaGlzIHJlc3VsdHMKK2luIGEgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgcGVuYWx0eS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW9fb3JkZXJpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9pb19vcmRlcmluZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZhYWU2ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaW9fb3JkZXJpbmcudHh0CkBAIC0wLDAgKzEsNDcgQEAKK09uIHNvbWUgcGxhdGZvcm1zLCBzby1jYWxsZWQgbWVtb3J5LW1hcHBlZCBJL08gaXMgd2Vha2x5IG9yZGVyZWQuICBPbiBzdWNoCitwbGF0Zm9ybXMsIGRyaXZlciB3cml0ZXJzIGFyZSByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhhdCBJL08gd3JpdGVzIHRvCittZW1vcnktbWFwcGVkIGFkZHJlc3NlcyBvbiB0aGVpciBkZXZpY2UgYXJyaXZlIGluIHRoZSBvcmRlciBpbnRlbmRlZC4gIFRoaXMgaXMKK3R5cGljYWxseSBkb25lIGJ5IHJlYWRpbmcgYSAnc2FmZScgZGV2aWNlIG9yIGJyaWRnZSByZWdpc3RlciwgY2F1c2luZyB0aGUgSS9PCitjaGlwc2V0IHRvIGZsdXNoIHBlbmRpbmcgd3JpdGVzIHRvIHRoZSBkZXZpY2UgYmVmb3JlIGFueSByZWFkcyBhcmUgcG9zdGVkLiAgQQorZHJpdmVyIHdvdWxkIHVzdWFsbHkgdXNlIHRoaXMgdGVjaG5pcXVlIGltbWVkaWF0ZWx5IHByaW9yIHRvIHRoZSBleGl0IG9mIGEKK2NyaXRpY2FsIHNlY3Rpb24gb2YgY29kZSBwcm90ZWN0ZWQgYnkgc3BpbmxvY2tzLiAgVGhpcyB3b3VsZCBlbnN1cmUgdGhhdAorc3Vic2VxdWVudCB3cml0ZXMgdG8gSS9PIHNwYWNlIGFycml2ZWQgb25seSBhZnRlciBhbGwgcHJpb3Igd3JpdGVzIChtdWNoIGxpa2UgYQorbWVtb3J5IGJhcnJpZXIgb3AsIG1iKCksIG9ubHkgd2l0aCByZXNwZWN0IHRvIEkvTykuCisKK0EgbW9yZSBjb25jcmV0ZSBleGFtcGxlIGZyb20gYSBoeXBvdGhldGljYWwgZGV2aWNlIGRyaXZlcjoKKworICAgICAgICAuLi4KK0NQVSBBOiAgc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9sb2NrLCBmbGFncykKK0NQVSBBOiAgdmFsID0gcmVhZGwobXlfc3RhdHVzKTsKK0NQVSBBOiAgLi4uCitDUFUgQTogIHdyaXRlbChuZXd2YWwsIHJpbmdfcHRyKTsKK0NQVSBBOiAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X2xvY2ssIGZsYWdzKQorICAgICAgICAuLi4KK0NQVSBCOiAgc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9sb2NrLCBmbGFncykKK0NQVSBCOiAgdmFsID0gcmVhZGwobXlfc3RhdHVzKTsKK0NQVSBCOiAgLi4uCitDUFUgQjogIHdyaXRlbChuZXd2YWwyLCByaW5nX3B0cik7CitDUFUgQjogIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9sb2NrLCBmbGFncykKKyAgICAgICAgLi4uCisKK0luIHRoZSBjYXNlIGFib3ZlLCB0aGUgZGV2aWNlIG1heSByZWNlaXZlIG5ld3ZhbDIgYmVmb3JlIGl0IHJlY2VpdmVzIG5ld3ZhbCwKK3doaWNoIGNvdWxkIGNhdXNlIHByb2JsZW1zLiAgRml4aW5nIGl0IGlzIGVhc3kgZW5vdWdoIHRob3VnaDoKKworICAgICAgICAuLi4KK0NQVSBBOiAgc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9sb2NrLCBmbGFncykKK0NQVSBBOiAgdmFsID0gcmVhZGwobXlfc3RhdHVzKTsKK0NQVSBBOiAgLi4uCitDUFUgQTogIHdyaXRlbChuZXd2YWwsIHJpbmdfcHRyKTsKK0NQVSBBOiAgKHZvaWQpcmVhZGwoc2FmZV9yZWdpc3Rlcik7IC8qIG1heWJlIGEgY29uZmlnIHJlZ2lzdGVyPyAqLworQ1BVIEE6ICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfbG9jaywgZmxhZ3MpCisgICAgICAgIC4uLgorQ1BVIEI6ICBzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X2xvY2ssIGZsYWdzKQorQ1BVIEI6ICB2YWwgPSByZWFkbChteV9zdGF0dXMpOworQ1BVIEI6ICAuLi4KK0NQVSBCOiAgd3JpdGVsKG5ld3ZhbDIsIHJpbmdfcHRyKTsKK0NQVSBCOiAgKHZvaWQpcmVhZGwoc2FmZV9yZWdpc3Rlcik7IC8qIG1heWJlIGEgY29uZmlnIHJlZ2lzdGVyPyAqLworQ1BVIEI6ICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfbG9jaywgZmxhZ3MpCisKK0hlcmUsIHRoZSByZWFkcyBmcm9tIHNhZmVfcmVnaXN0ZXIgd2lsbCBjYXVzZSB0aGUgSS9PIGNoaXBzZXQgdG8gZmx1c2ggYW55CitwZW5kaW5nIHdyaXRlcyBiZWZvcmUgYWN0dWFsbHkgcG9zdGluZyB0aGUgcmVhZCB0byB0aGUgY2hpcHNldCwgcHJldmVudGluZworcG9zc2libGUgZGF0YSBjb3JydXB0aW9uLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pb2N0bC8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vaW9jdGwvMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFhOTI1NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaW9jdGwvMDAtSU5ERVgKQEAgLTAsMCArMSwxMiBAQAorMDAtSU5ERVgKKwktIHRoaXMgZmlsZQorYm90Y2hpbmctdXAtaW9jdGxzLnR4dAorCS0gaG93IHRvIGF2b2lkIGJvdGNoaW5nIHVwIGlvY3RscworY2Ryb20udHh0CisJLSBzdW1tYXJ5IG9mIENEUk9NIGlvY3RsIGNhbGxzCitoZGlvLnR4dAorCS0gc3VtbWFyeSBvZiBIRElPXyBpb2N0bCBjYWxscworaW9jdGwtZGVjb2RpbmcudHh0CisJLSBob3cgdG8gZGVjb2RlIHRoZSBiaXRzIG9mIGFuIElPQ1RMIGNvZGUKK2lvY3RsLW51bWJlci50eHQKKwktIGhvdyB0byBpbXBsZW1lbnQgYW5kIHJlZ2lzdGVyIGRldmljZS9kcml2ZXIgaW9jdGwgY2FsbHMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW9jdGwvYm90Y2hpbmctdXAtaW9jdGxzLnR4dCBiL0RvY3VtZW50YXRpb24vaW9jdGwvYm90Y2hpbmctdXAtaW9jdGxzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWZlNzhjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pb2N0bC9ib3RjaGluZy11cC1pb2N0bHMudHh0CkBAIC0wLDAgKzEsMjE5IEBACisoSG93IHRvIGF2b2lkKSBCb3RjaGluZyB1cCBpb2N0bHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGcm9tOiBodHRwOi8vYmxvZy5mZndsbC5jaC8yMDEzLzExL2JvdGNoaW5nLXVwLWlvY3Rscy5odG1sCisKK0J5OiBEYW5pZWwgVmV0dGVyLCBDb3B5cmlnaHQgwqkgMjAxMyBJbnRlbCBDb3Jwb3JhdGlvbgorCitPbmUgY2xlYXIgaW5zaWdodCBrZXJuZWwgZ3JhcGhpY3MgaGFja2VycyBnYWluZWQgaW4gdGhlIHBhc3QgZmV3IHllYXJzIGlzIHRoYXQKK3RyeWluZyB0byBjb21lIHVwIHdpdGggYSB1bmlmaWVkIGludGVyZmFjZSB0byBtYW5hZ2UgdGhlIGV4ZWN1dGlvbiB1bml0cyBhbmQKK21lbW9yeSBvbiBjb21wbGV0ZWx5IGRpZmZlcmVudCBHUFVzIGlzIGEgZnV0aWxlIGVmZm9ydC4gU28gbm93YWRheXMgZXZlcnkKK2RyaXZlciBoYXMgaXRzIG93biBzZXQgb2YgaW9jdGxzIHRvIGFsbG9jYXRlIG1lbW9yeSBhbmQgc3VibWl0IHdvcmsgdG8gdGhlIEdQVS4KK1doaWNoIGlzIG5pY2UsIHNpbmNlIHRoZXJlJ3Mgbm8gbW9yZSBpbnNhbml0eSBpbiB0aGUgZm9ybSBvZiBmYWtlLWdlbmVyaWMsIGJ1dAorYWN0dWFsbHkgb25seSB1c2VkIG9uY2UgaW50ZXJmYWNlcy4gQnV0IHRoZSBjbGVhciBkb3duc2lkZSBpcyB0aGF0IHRoZXJlJ3MgbXVjaAorbW9yZSBwb3RlbnRpYWwgdG8gc2NyZXcgdGhpbmdzIHVwLgorCitUbyBhdm9pZCByZXBlYXRpbmcgYWxsIHRoZSBzYW1lIG1pc3Rha2VzIGFnYWluIEkndmUgd3JpdHRlbiB1cCBzb21lIG9mIHRoZQorbGVzc29ucyBsZWFybmVkIHdoaWxlIGJvdGNoaW5nIHRoZSBqb2IgZm9yIHRoZSBkcm0vaTkxNSBkcml2ZXIuIE1vc3Qgb2YgdGhlc2UKK29ubHkgY292ZXIgdGVjaG5pY2FsaXRpZXMgYW5kIG5vdCB0aGUgYmlnLXBpY3R1cmUgaXNzdWVzIGxpa2Ugd2hhdCB0aGUgY29tbWFuZAorc3VibWlzc2lvbiBpb2N0bCBleGFjdGx5IHNob3VsZCBsb29rIGxpa2UuIExlYXJuaW5nIHRoZXNlIGxlc3NvbnMgaXMgcHJvYmFibHkKK3NvbWV0aGluZyBldmVyeSBHUFUgZHJpdmVyIGhhcyB0byBkbyBvbiBpdHMgb3duLgorCisKK1ByZXJlcXVpc2l0ZXMKKy0tLS0tLS0tLS0tLS0KKworRmlyc3QgdGhlIHByZXJlcXVpc2l0ZXMuIFdpdGhvdXQgdGhlc2UgeW91IGhhdmUgYWxyZWFkeSBmYWlsZWQsIGJlY2F1c2UgeW91Cit3aWxsIG5lZWQgdG8gYWRkIGEgYSAzMi1iaXQgY29tcGF0IGxheWVyOgorCisgKiBPbmx5IHVzZSBmaXhlZCBzaXplZCBpbnRlZ2Vycy4gVG8gYXZvaWQgY29uZmxpY3RzIHdpdGggdHlwZWRlZnMgaW4gdXNlcnNwYWNlCisgICB0aGUga2VybmVsIGhhcyBzcGVjaWFsIHR5cGVzIGxpa2UgX191MzIsIF9fczY0LiBVc2UgdGhlbS4KKworICogQWxpZ24gZXZlcnl0aGluZyB0byB0aGUgbmF0dXJhbCBzaXplIGFuZCB1c2UgZXhwbGljaXQgcGFkZGluZy4gMzItYml0CisgICBwbGF0Zm9ybXMgZG9uJ3QgbmVjZXNzYXJpbHkgYWxpZ24gNjQtYml0IHZhbHVlcyB0byA2NC1iaXQgYm91bmRhcmllcywgYnV0CisgICA2NC1iaXQgcGxhdGZvcm1zIGRvLiBTbyB3ZSBhbHdheXMgbmVlZCBwYWRkaW5nIHRvIHRoZSBuYXR1cmFsIHNpemUgdG8gZ2V0CisgICB0aGlzIHJpZ2h0LgorCisgKiBQYWQgdGhlIGVudGlyZSBzdHJ1Y3QgdG8gYSBtdWx0aXBsZSBvZiA2NC1iaXRzIC0gdGhlIHN0cnVjdHVyZSBzaXplIHdpbGwKKyAgIG90aGVyd2lzZSBkaWZmZXIgb24gMzItYml0IHZlcnN1cyA2NC1iaXQuIEhhdmluZyBhIGRpZmZlcmVudCBzdHJ1Y3R1cmUgc2l6ZQorICAgaHVydHMgd2hlbiBwYXNzaW5nIGFycmF5cyBvZiBzdHJ1Y3R1cmVzIHRvIHRoZSBrZXJuZWwsIG9yIGlmIHRoZSBrZXJuZWwKKyAgIGNoZWNrcyB0aGUgc3RydWN0dXJlIHNpemUsIHdoaWNoIGUuZy4gdGhlIGRybSBjb3JlIGRvZXMuCisKKyAqIFBvaW50ZXJzIGFyZSBfX3U2NCwgY2FzdCBmcm9tL3RvIGEgdWludHBydF90IG9uIHRoZSB1c2Vyc3BhY2Ugc2lkZSBhbmQKKyAgIGZyb20vdG8gYSB2b2lkIF9fdXNlciAqIGluIHRoZSBrZXJuZWwuIFRyeSByZWFsbHkgaGFyZCBub3QgdG8gZGVsYXkgdGhpcworICAgY29udmVyc2lvbiBvciB3b3JzZSwgZmlkZGxlIHRoZSByYXcgX191NjQgdGhyb3VnaCB5b3VyIGNvZGUgc2luY2UgdGhhdAorICAgZGltaW5pc2hlcyB0aGUgY2hlY2tpbmcgdG9vbHMgbGlrZSBzcGFyc2UgY2FuIHByb3ZpZGUuCisKKworQmFzaWNzCistLS0tLS0KKworV2l0aCB0aGUgam95cyBvZiB3cml0aW5nIGEgY29tcGF0IGxheWVyIGF2b2lkZWQgd2UgY2FuIHRha2UgYSBsb29rIGF0IHRoZSBiYXNpYworZnVtYmxlcy4gTmVnbGVjdGluZyB0aGVzZSB3aWxsIG1ha2UgYmFja3dhcmQgYW5kIGZvcndhcmQgY29tcGF0aWJpbGl0eSBhIHJlYWwKK3BhaW4uIEFuZCBzaW5jZSBnZXR0aW5nIHRoaW5ncyB3cm9uZyBvbiB0aGUgZmlyc3QgYXR0ZW1wdCBpcyBndWFyYW50ZWVkIHlvdQord2lsbCBoYXZlIGEgc2Vjb25kIGl0ZXJhdGlvbiBvciBhdCBsZWFzdCBhbiBleHRlbnNpb24gZm9yIGFueSBnaXZlbiBpbnRlcmZhY2UuCisKKyAqIEhhdmUgYSBjbGVhciB3YXkgZm9yIHVzZXJzcGFjZSB0byBmaWd1cmUgb3V0IHdoZXRoZXIgeW91ciBuZXcgaW9jdGwgb3IgaW9jdGwKKyAgIGV4dGVuc2lvbiBpcyBzdXBwb3J0ZWQgb24gYSBnaXZlbiBrZXJuZWwuIElmIHlvdSBjYW4ndCByZWx5IG9uIG9sZCBrZXJuZWxzCisgICByZWplY3RpbmcgdGhlIG5ldyBmbGFncy9tb2RlcyBvciBpb2N0bHMgKHNpbmNlIGRvaW5nIHRoYXQgd2FzIGJvdGNoZWQgaW4gdGhlCisgICBwYXN0KSB0aGVuIHlvdSBuZWVkIGEgZHJpdmVyIGZlYXR1cmUgZmxhZyBvciByZXZpc2lvbiBudW1iZXIgc29tZXdoZXJlLgorCisgKiBIYXZlIGEgcGxhbiBmb3IgZXh0ZW5kaW5nIGlvY3RscyB3aXRoIG5ldyBmbGFncyBvciBuZXcgZmllbGRzIGF0IHRoZSBlbmQgb2YKKyAgIHRoZSBzdHJ1Y3R1cmUuIFRoZSBkcm0gY29yZSBjaGVja3MgdGhlIHBhc3NlZC1pbiBzaXplIGZvciBlYWNoIGlvY3RsIGNhbGwKKyAgIGFuZCB6ZXJvLWV4dGVuZHMgYW55IG1pc21hdGNoZXMgYmV0d2VlbiBrZXJuZWwgYW5kIHVzZXJzcGFjZS4gVGhhdCBoZWxwcywKKyAgIGJ1dCBpc24ndCBhIGNvbXBsZXRlIHNvbHV0aW9uIHNpbmNlIG5ld2VyIHVzZXJzcGFjZSBvbiBvbGRlciBrZXJuZWxzIHdvbid0CisgICBub3RpY2UgdGhhdCB0aGUgbmV3bHkgYWRkZWQgZmllbGRzIGF0IHRoZSBlbmQgZ2V0IGlnbm9yZWQuIFNvIHRoaXMgc3RpbGwKKyAgIG5lZWRzIGEgbmV3IGRyaXZlciBmZWF0dXJlIGZsYWdzLgorCisgKiBDaGVjayBhbGwgdW51c2VkIGZpZWxkcyBhbmQgZmxhZ3MgYW5kIGFsbCB0aGUgcGFkZGluZyBmb3Igd2hldGhlciBpdCdzIDAsCisgICBhbmQgcmVqZWN0IHRoZSBpb2N0bCBpZiB0aGF0J3Mgbm90IHRoZSBjYXNlLiBPdGhlcndpc2UgeW91ciBuaWNlIHBsYW4gZm9yCisgICBmdXR1cmUgZXh0ZW5zaW9ucyBpcyBnb2luZyByaWdodCBkb3duIHRoZSBndXR0ZXJzIHNpbmNlIHNvbWVvbmUgd2lsbCBzdWJtaXQKKyAgIGFuIGlvY3RsIHN0cnVjdCB3aXRoIHJhbmRvbSBzdGFjayBnYXJiYWdlIGluIHRoZSB5ZXQgdW51c2VkIHBhcnRzLiBXaGljaAorICAgdGhlbiBiYWtlcyBpbiB0aGUgQUJJIHRoYXQgdGhvc2UgZmllbGRzIGNhbiBuZXZlciBiZSB1c2VkIGZvciBhbnl0aGluZyBlbHNlCisgICBidXQgZ2FyYmFnZS4KKworICogSGF2ZSBzaW1wbGUgdGVzdGNhc2VzIGZvciBhbGwgb2YgdGhlIGFib3ZlLgorCisKK0Z1biB3aXRoIEVycm9yIFBhdGhzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOb3dhZGF5cyB3ZSBkb24ndCBoYXZlIGFueSBleGN1c2UgbGVmdCBhbnkgbW9yZSBmb3IgZHJtIGRyaXZlcnMgYmVpbmcgbmVhdAorbGl0dGxlIHJvb3QgZXhwbG9pdHMuIFRoaXMgbWVhbnMgd2UgYm90aCBuZWVkIGZ1bGwgaW5wdXQgdmFsaWRhdGlvbiBhbmQgc29saWQKK2Vycm9yIGhhbmRsaW5nIHBhdGhzIC0gR1BVcyB3aWxsIGRpZSBldmVudHVhbGx5IGluIHRoZSBvZGRtb3N0IGNvcm5lciBjYXNlcworYW55d2F5OgorCisgKiBUaGUgaW9jdGwgbXVzdCBjaGVjayBmb3IgYXJyYXkgb3ZlcmZsb3dzLiBBbHNvIGl0IG5lZWRzIHRvIGNoZWNrIGZvcgorICAgb3Zlci91bmRlcmZsb3dzIGFuZCBjbGFtcGluZyBpc3N1ZXMgb2YgaW50ZWdlciB2YWx1ZXMgaW4gZ2VuZXJhbC4gVGhlIHVzdWFsCisgICBleGFtcGxlIGlzIHNwcml0ZSBwb3NpdGlvbmluZyB2YWx1ZXMgZmVkIGRpcmVjdGx5IGludG8gdGhlIGhhcmR3YXJlIHdpdGggdGhlCisgICBoYXJkd2FyZSBqdXN0IGhhdmluZyAxMiBiaXRzIG9yIHNvLiBXb3JrcyBuaWNlbHkgdW50aWwgc29tZSBvZGQgZGlzcGxheQorICAgc2VydmVyIGRvZXNuJ3QgYm90aGVyIHdpdGggY2xhbXBpbmcgaXRzZWxmIGFuZCB0aGUgY3Vyc29yIHdyYXBzIGFyb3VuZCB0aGUKKyAgIHNjcmVlbi4KKworICogSGF2ZSBzaW1wbGUgdGVzdGNhc2VzIGZvciBldmVyeSBpbnB1dCB2YWxpZGF0aW9uIGZhaWx1cmUgY2FzZSBpbiB5b3VyIGlvY3RsLgorICAgQ2hlY2sgdGhhdCB0aGUgZXJyb3IgY29kZSBtYXRjaGVzIHlvdXIgZXhwZWN0YXRpb25zLiBBbmQgZmluYWxseSBtYWtlIHN1cmUKKyAgIHRoYXQgeW91IG9ubHkgdGVzdCBmb3Igb25lIHNpbmdsZSBlcnJvciBwYXRoIGluIGVhY2ggc3VidGVzdCBieSBzdWJtaXR0aW5nCisgICBvdGhlcndpc2UgcGVyZmVjdGx5IHZhbGlkIGRhdGEuIFdpdGhvdXQgdGhpcyBhbiBlYXJsaWVyIGNoZWNrIG1pZ2h0IHJlamVjdAorICAgdGhlIGlvY3RsIGFscmVhZHkgYW5kIHNoYWRvdyB0aGUgY29kZXBhdGggeW91IGFjdHVhbGx5IHdhbnQgdG8gdGVzdCwgaGlkaW5nCisgICBidWdzIGFuZCByZWdyZXNzaW9ucy4KKworICogTWFrZSBhbGwgeW91ciBpb2N0bHMgcmVzdGFydGFibGUuIEZpcnN0IFggcmVhbGx5IGxvdmVzIHNpZ25hbHMgYW5kIHNlY29uZAorICAgdGhpcyB3aWxsIGFsbG93IHlvdSB0byB0ZXN0IDkwJSBvZiBhbGwgZXJyb3IgaGFuZGxpbmcgcGF0aHMgYnkganVzdAorICAgaW50ZXJydXB0aW5nIHlvdXIgbWFpbiB0ZXN0IHN1aXRlIGNvbnN0YW50bHkgd2l0aCBzaWduYWxzLiBUaGFua3MgdG8gWCdzCisgICBsb3ZlIGZvciBzaWduYWwgeW91J2xsIGdldCBhbiBleGNlbGxlbnQgYmFzZSBjb3ZlcmFnZSBvZiBhbGwgeW91ciBlcnJvcgorICAgcGF0aHMgcHJldHR5IG11Y2ggZm9yIGZyZWUgZm9yIGdyYXBoaWNzIGRyaXZlcnMuIEFsc28sIGJlIGNvbnNpc3RlbnQgd2l0aAorICAgaG93IHlvdSBoYW5kbGUgaW9jdGwgcmVzdGFydGluZyAtIGUuZy4gZHJtIGhhcyBhIHRpbnkgZHJtSW9jdGwgaGVscGVyIGluIGl0cworICAgdXNlcnNwYWNlIGxpYnJhcnkuIFRoZSBpOTE1IGRyaXZlciBib3RjaGVkIHRoaXMgd2l0aCB0aGUgc2V0X3RpbGluZyBpb2N0bCwKKyAgIG5vdyB3ZSdyZSBzdHVjayBmb3JldmVyIHdpdGggc29tZSBhcmNhbmUgc2VtYW50aWNzIGluIGJvdGggdGhlIGtlcm5lbCBhbmQKKyAgIHVzZXJzcGFjZS4KKworICogSWYgeW91IGNhbid0IG1ha2UgYSBnaXZlbiBjb2RlcGF0aCByZXN0YXJ0YWJsZSBtYWtlIGEgc3R1Y2sgdGFzayBhdCBsZWFzdAorICAga2lsbGFibGUuIEdQVXMganVzdCBkaWUgYW5kIHlvdXIgdXNlcnMgd29uJ3QgbGlrZSB5b3UgbW9yZSBpZiB5b3UgaGFuZyB0aGVpcgorICAgZW50aXJlIGJveCAoYnkgbWVhbnMgb2YgYW4gdW5raWxsYWJsZSBYIHByb2Nlc3MpLiBJZiB0aGUgc3RhdGUgcmVjb3ZlcnkgaXMKKyAgIHN0aWxsIHRvbyB0cmlja3kgaGF2ZSBhIHRpbWVvdXQgb3IgaGFuZ2NoZWNrIHNhZmV0eSBuZXQgYXMgYSBsYXN0LWRpdGNoCisgICBlZmZvcnQgaW4gY2FzZSB0aGUgaGFyZHdhcmUgaGFzIGdvbmUgYmFuYW5hcy4KKworICogSGF2ZSB0ZXN0Y2FzZXMgZm9yIHRoZSByZWFsbHkgdHJpY2t5IGNvcm5lciBjYXNlcyBpbiB5b3VyIGVycm9yIHJlY292ZXJ5IGNvZGUKKyAgIC0gaXQncyB3YXkgdG9vIGVhc3kgdG8gY3JlYXRlIGEgZGVhZGxvY2sgYmV0d2VlbiB5b3VyIGhhbmdjaGVjayBjb2RlIGFuZAorICAgd2FpdGVycy4KKworCitUaW1lLCBXYWl0aW5nIGFuZCBNaXNzaW5nIGl0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0dQVXMgZG8gbW9zdCBldmVyeXRoaW5nIGFzeW5jaHJvbm91c2x5LCBzbyB3ZSBoYXZlIGEgbmVlZCB0byB0aW1lIG9wZXJhdGlvbnMgYW5kCit3YWl0IGZvciBvdXN0YW5kaW5nIG9uZXMuIFRoaXMgaXMgcmVhbGx5IHRyaWNreSBidXNpbmVzczsgYXQgdGhlIG1vbWVudCBub25lIG9mCit0aGUgaW9jdGxzIHN1cHBvcnRlZCBieSB0aGUgZHJtL2k5MTUgZ2V0IHRoaXMgZnVsbHkgcmlnaHQsIHdoaWNoIG1lYW5zIHRoZXJlJ3MKK3N0aWxsIHRvbnMgbW9yZSBsZXNzb25zIHRvIGxlYXJuIGhlcmUuCisKKyAqIFVzZSBDTE9DS19NT05PVE9OSUMgYXMgeW91ciByZWZlcmVuY2UgdGltZSwgYWx3YXlzLiBJdCdzIHdoYXQgYWxzYSwgZHJtIGFuZAorICAgdjRsIHVzZSBieSBkZWZhdWx0IG5vd2FkYXlzLiBCdXQgbGV0IHVzZXJzcGFjZSBrbm93IHdoaWNoIHRpbWVzdGFtcHMgYXJlCisgICBkZXJpdmVkIGZyb20gZGlmZmVyZW50IGNsb2NrIGRvbWFpbnMgbGlrZSB5b3VyIG1haW4gc3lzdGVtIGNsb2NrIChwcm92aWRlZAorICAgYnkgdGhlIGtlcm5lbCkgb3Igc29tZSBpbmRlcGVuZGVudCBoYXJkd2FyZSBjb3VudGVyIHNvbWV3aGVyZSBlbHNlLiBDbG9ja3MKKyAgIHdpbGwgbWlzbWF0Y2ggaWYgeW91IGxvb2sgY2xvc2UgZW5vdWdoLCBidXQgaWYgcGVyZm9ybWFuY2UgbWVhc3VyaW5nIHRvb2xzCisgICBoYXZlIHRoaXMgaW5mb3JtYXRpb24gdGhleSBjYW4gYXQgbGVhc3QgY29tcGVuc2F0ZS4gSWYgeW91ciB1c2Vyc3BhY2UgY2FuCisgICBnZXQgYXQgdGhlIHJhdyB2YWx1ZXMgb2Ygc29tZSBjbG9ja3MgKGUuZy4gdGhyb3VnaCBpbi1jb21tYW5kLXN0cmVhbQorICAgcGVyZm9ybWFuY2UgY291bnRlciBzYW1wbGluZyBpbnN0cnVjdGlvbnMpIGNvbnNpZGVyIGV4cG9zaW5nIHRob3NlIGFsc28uCisKKyAqIFVzZSBfX3M2NCBzZWNvbmRzIHBsdXMgX191NjQgbmFub3NlY29uZHMgdG8gc3BlY2lmeSB0aW1lLiBJdCdzIG5vdCB0aGUgbW9zdAorICAgY29udmVuaWVudCB0aW1lIHNwZWNpZmljYXRpb24sIGJ1dCBpdCdzIG1vc3RseSB0aGUgc3RhbmRhcmQuCisKKyAqIENoZWNrIHRoYXQgaW5wdXQgdGltZSB2YWx1ZXMgYXJlIG5vcm1hbGl6ZWQgYW5kIHJlamVjdCB0aGVtIGlmIG5vdC4gTm90ZQorICAgdGhhdCB0aGUga2VybmVsIG5hdGl2ZSBzdHJ1Y3Qga3RpbWUgaGFzIGEgc2lnbmVkIGludGVnZXIgZm9yIGJvdGggc2Vjb25kcworICAgYW5kIG5hbm9zZWNvbmRzLCBzbyBiZXdhcmUgaGVyZS4KKworICogRm9yIHRpbWVvdXRzLCB1c2UgYWJzb2x1dGUgdGltZXMuIElmIHlvdSdyZSBhIGdvb2QgZmVsbG93IGFuZCBtYWRlIHlvdXIKKyAgIGlvY3RsIHJlc3RhcnRhYmxlIHJlbGF0aXZlIHRpbWVvdXRzIHRlbmQgdG8gYmUgdG9vIGNvYXJzZSBhbmQgY2FuCisgICBpbmRlZmluaXRlbHkgZXh0ZW5kIHlvdXIgd2FpdCB0aW1lIGR1ZSB0byByb3VuZGluZyBvbiBlYWNoIHJlc3RhcnQuCisgICBFc3BlY2lhbGx5IGlmIHlvdXIgcmVmZXJlbmNlIGNsb2NrIGlzIHNvbWV0aGluZyByZWFsbHkgc2xvdyBsaWtlIHRoZSBkaXNwbGF5CisgICBmcmFtZSBjb3VudGVyLiBXaXRoIGEgc3BlYyBsYXl3ZXIgaGF0IG9uIHRoaXMgaXNuJ3QgYSBidWcgc2luY2UgdGltZW91dHMgY2FuCisgICBhbHdheXMgYmUgZXh0ZW5kZWQgLSBidXQgdXNlcnMgd2lsbCBzdXJlbHkgaGF0ZSB5b3UgaWYgdGhlaXIgbmVhdCBhbmltYXRpb25zCisgICBzdGFydHMgdG8gc3R1dHRlciBkdWUgdG8gdGhpcy4KKworICogQ29uc2lkZXIgZGl0Y2hpbmcgYW55IHN5bmNocm9ub3VzIHdhaXQgaW9jdGxzIHdpdGggdGltZW91dHMgYW5kIGp1c3QgZGVsaXZlcgorICAgYW4gYXN5bmNocm9ub3VzIGV2ZW50IG9uIGEgcG9sbGFibGUgZmlsZSBkZXNjcmlwdG9yLiBJdCBmaXRzIG11Y2ggYmV0dGVyCisgICBpbnRvIGV2ZW50IGRyaXZlbiBhcHBsaWNhdGlvbnMnIG1haW4gbG9vcC4KKworICogSGF2ZSB0ZXN0Y2FzZXMgZm9yIGNvcm5lci1jYXNlcywgZXNwZWNpYWxseSB3aGV0aGVyIHRoZSByZXR1cm4gdmFsdWVzIGZvcgorICAgYWxyZWFkeS1jb21wbGV0ZWQgZXZlbnRzLCBzdWNjZXNzZnVsIHdhaXRzIGFuZCB0aW1lZC1vdXQgd2FpdHMgYXJlIGFsbCBzYW5lCisgICBhbmQgc3VpdGluZyB0byB5b3VyIG5lZWRzLgorCisKK0xlYWtpbmcgUmVzb3VyY2VzLCBOb3QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSBmdWxsLWJsb3duIGRybSBkcml2ZXIgZXNzZW50aWFsbHkgaW1wbGVtZW50cyBhIGxpdHRsZSBPUywgYnV0IHNwZWNpYWxpemVkIHRvCit0aGUgZ2l2ZW4gR1BVIHBsYXRmb3Jtcy4gVGhpcyBtZWFucyBhIGRyaXZlciBuZWVkcyB0byBleHBvc2UgdG9ucyBvZiBoYW5kbGVzCitmb3IgZGlmZmVyZW50IG9iamVjdHMgYW5kIG90aGVyIHJlc291cmNlcyB0byB1c2Vyc3BhY2UuIERvaW5nIHRoYXQgcmlnaHQKK2VudGFpbHMgaXRzIG93biBsaXR0bGUgc2V0IG9mIHBpdGZhbGxzOgorCisgKiBBbHdheXMgYXR0YWNoIHRoZSBsaWZldGltZSBvZiB5b3VyIGR5bmFtaWNhbGx5IGNyZWF0ZWQgcmVzb3VyY2VzIHRvIHRoZQorICAgbGlmZXRpbWUgb2YgYSBmaWxlIGRlc2NyaXB0b3IuIENvbnNpZGVyIHVzaW5nIGEgMToxIG1hcHBpbmcgaWYgeW91ciByZXNvdXJjZQorICAgbmVlZHMgdG8gYmUgc2hhcmVkIGFjcm9zcyBwcm9jZXNzZXMgLSAgZmQtcGFzc2luZyBvdmVyIHVuaXggZG9tYWluIHNvY2tldHMKKyAgIGFsc28gc2ltcGxpZmllcyBsaWZldGltZSBtYW5hZ2VtZW50IGZvciB1c2Vyc3BhY2UuCisKKyAqIEFsd2F5cyBoYXZlIE9fQ0xPRVhFQyBzdXBwb3J0LgorCisgKiBFbnN1cmUgdGhhdCB5b3UgaGF2ZSBzdWZmaWNpZW50IGluc3VsYXRpb24gYmV0d2VlbiBkaWZmZXJlbnQgY2xpZW50cy4gQnkKKyAgIGRlZmF1bHQgcGljayBhIHByaXZhdGUgcGVyLWZkIG5hbWVzcGFjZSB3aGljaCBmb3JjZXMgYW55IHNoYXJpbmcgdG8gYmUgZG9uZQorICAgZXhwbGljdGx5LiBPbmx5IGdvIHdpdGggYSBtb3JlIGdsb2JhbCBwZXItZGV2aWNlIG5hbWVzcGFjZSBpZiB0aGUgb2JqZWN0cworICAgYXJlIHRydWx5IGRldmljZS11bmlxdWUuIE9uZSBjb3VudGVyZXhhbXBsZSBpbiB0aGUgZHJtIG1vZGVzZXQgaW50ZXJmYWNlcyBpcworICAgdGhhdCB0aGUgcGVyLWRldmljZSBtb2Rlc2V0IG9iamVjdHMgbGlrZSBjb25uZWN0b3JzIHNoYXJlIGEgbmFtZXNwYWNlIHdpdGgKKyAgIGZyYW1lYnVmZmVyIG9iamVjdHMsIHdoaWNoIG1vc3RseSBhcmUgbm90IHNoYXJlZCBhdCBhbGwuIEEgc2VwYXJhdGUKKyAgIG5hbWVzcGFjZSwgcHJpdmF0ZSBieSBkZWZhdWx0LCBmb3IgZnJhbWVidWZmZXJzIHdvdWxkIGhhdmUgYmVlbiBtb3JlCisgICBzdWl0YWJsZS4KKworICogVGhpbmsgYWJvdXQgdW5pcXVlbmVzcyByZXF1aXJlbWVudHMgZm9yIHVzZXJzcGFjZSBoYW5kbGVzLiBFLmcuIGZvciBtb3N0IGRybQorICAgZHJpdmVycyBpdCdzIGEgdXNlcnNwYWNlIGJ1ZyB0byBzdWJtaXQgdGhlIHNhbWUgb2JqZWN0IHR3aWNlIGluIHRoZSBzYW1lCisgICBjb21tYW5kIHN1Ym1pc3Npb24gaW9jdGwuIEJ1dCB0aGVuIGlmIG9iamVjdHMgYXJlIHNoYXJlYWJsZSB1c2Vyc3BhY2UgbmVlZHMKKyAgIHRvIGtub3cgd2hldGhlciBpdCBoYXMgc2VlbiBhbiBpbXBvcnRlZCBvYmplY3QgZnJvbSBhIGRpZmZlcmVudCBwcm9jZXNzCisgICBhbHJlYWR5IG9yIG5vdC4gSSBoYXZlbid0IHRyaWVkIHRoaXMgbXlzZWxmIHlldCBkdWUgdG8gbGFjayBvZiBhIG5ldyBjbGFzcworICAgb2Ygb2JqZWN0cywgYnV0IGNvbnNpZGVyIHVzaW5nIGlub2RlIG51bWJlcnMgb24geW91ciBzaGFyZWQgZmlsZSBkZXNjcmlwdG9ycworICAgYXMgdW5pcXVlIGlkZW50aWZpZXJzIC0gaXQncyBob3cgcmVhbCBmaWxlcyBhcmUgdG9sZCBhcGFydCwgdG9vLgorICAgVW5mb3J0dW5hdGVseSB0aGlzIHJlcXVpcmVzIGEgZnVsbC1ibG93biB2aXJ0dWFsIGZpbGVzeXN0ZW0gaW4gdGhlIGtlcm5lbC4KKworCitMYXN0LCBidXQgbm90IExlYXN0CistLS0tLS0tLS0tLS0tLS0tLS0tCisKK05vdCBldmVyeSBwcm9ibGVtIG5lZWRzIGEgbmV3IGlvY3RsOgorCisgKiBUaGluayBoYXJkIHdoZXRoZXIgeW91IHJlYWxseSB3YW50IGEgZHJpdmVyLXByaXZhdGUgaW50ZXJmYWNlLiBPZiBjb3Vyc2UKKyAgIGl0J3MgbXVjaCBxdWlja2VyIHRvIHB1c2ggYSBkcml2ZXItcHJpdmF0ZSBpbnRlcmZhY2UgdGhhbiBlbmdhZ2luZyBpbgorICAgbGVuZ3RoeSBkaXNjdXNzaW9ucyBmb3IgYSBtb3JlIGdlbmVyaWMgc29sdXRpb24uIEFuZCBvY2Nhc2lvbmFsbHkgZG9pbmcgYQorICAgcHJpdmF0ZSBpbnRlcmZhY2UgdG8gc3BlYXJoZWFkIGEgbmV3IGNvbmNlcHQgaXMgd2hhdCdzIHJlcXVpcmVkLiBCdXQgaW4gdGhlCisgICBlbmQsIG9uY2UgdGhlIGdlbmVyaWMgaW50ZXJmYWNlIGNvbWVzIGFyb3VuZCB5b3UnbGwgZW5kIHVwIG1haW50YWluZXIgdHdvCisgICBpbnRlcmZhY2VzLiBJbmRlZmluaXRlbHkuCisKKyAqIENvbnNpZGVyIG90aGVyIGludGVyZmFjZXMgdGhhbiBpb2N0bHMuIEEgc3lzZnMgYXR0cmlidXRlIGlzIG11Y2ggYmV0dGVyIGZvcgorICAgcGVyLWRldmljZSBzZXR0aW5ncywgb3IgZm9yIGNoaWxkIG9iamVjdHMgd2l0aCBmYWlybHkgc3RhdGljIGxpZmV0aW1lcyAobGlrZQorICAgb3V0cHV0IGNvbm5lY3RvcnMgaW4gZHJtIHdpdGggYWxsIHRoZSBkZXRlY3Rpb24gb3ZlcnJpZGUgYXR0cmlidXRlcykuIE9yCisgICBtYXliZSBvbmx5IHlvdXIgdGVzdHN1aXRlIG5lZWRzIHRoaXMgaW50ZXJmYWNlLCBhbmQgdGhlbiBkZWJ1Z2ZzIHdpdGggaXRzCisgICBkaXNjbGFpbWVyIG9mIG5vdCBoYXZpbmcgYSBzdGFibGUgQUJJIHdvdWxkIGJlIGJldHRlci4KKworRmluYWxseSwgdGhlIG5hbWUgb2YgdGhlIGdhbWUgaXMgdG8gZ2V0IGl0IHJpZ2h0IG9uIHRoZSBmaXJzdCBhdHRlbXB0LCBzaW5jZSBpZgoreW91ciBkcml2ZXIgcHJvdmVzIHBvcHVsYXIgYW5kIHlvdXIgaGFyZHdhcmUgcGxhdGZvcm1zIGxvbmctbGl2ZWQgdGhlbiB5b3UnbGwKK2JlIHN0dWNrIHdpdGggYSBnaXZlbiBpb2N0bCBlc3NlbnRpYWxseSBmb3JldmVyLiBZb3UgY2FuIHRyeSB0byBkZXByZWNhdGUKK2hvcnJpYmxlIGlvY3RscyBvbiBuZXdlciBpdGVyYXRpb25zIG9mIHlvdXIgaGFyZHdhcmUsIGJ1dCBnZW5lcmFsbHkgaXQgdGFrZXMKK3llYXJzIHRvIGFjY29tcGxpc2ggdGhpcy4gQW5kIHRoZW4gYWdhaW4geWVhcnMgdW50aWwgdGhlIGxhc3QgdXNlciBhYmxlIHRvCitjb21wbGFpbiBhYm91dCByZWdyZXNzaW9ucyBkaXNhcHBlYXJzLCB0b28uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lvY3RsL2Nkcm9tLnR4dCBiL0RvY3VtZW50YXRpb24vaW9jdGwvY2Ryb20udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZGY4MWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lvY3RsL2Nkcm9tLnR4dApAQCAtMCwwICsxLDk2NiBAQAorCQlTdW1tYXJ5IG9mIENEUk9NIGlvY3RsIGNhbGxzLgorCQk9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKwkJRWR3YXJkIEEuIEZhbGsgPGVmYWxrQGdvb2dsZS5jb20+CisKKwkJTm92ZW1iZXIsIDIwMDQKKworVGhpcyBkb2N1bWVudCBhdHRlbXB0cyB0byBkZXNjcmliZSB0aGUgaW9jdGwoMikgY2FsbHMgc3VwcG9ydGVkIGJ5Cit0aGUgQ0RST00gbGF5ZXIuICBUaGVzZSBhcmUgYnktYW5kLWxhcmdlIGltcGxlbWVudGVkIChhcyBvZiBMaW51eCAyLjYpCitpbiBkcml2ZXJzL2Nkcm9tL2Nkcm9tLmMgYW5kIGRyaXZlcnMvYmxvY2svc2NzaV9pb2N0bC5jCisKK2lvY3RsIHZhbHVlcyBhcmUgbGlzdGVkIGluIDxsaW51eC9jZHJvbS5oPi4gIEFzIG9mIHRoaXMgd3JpdGluZywgdGhleQorYXJlIGFzIGZvbGxvd3M6CisKKwlDRFJPTVBBVVNFCQlQYXVzZSBBdWRpbyBPcGVyYXRpb24KKwlDRFJPTVJFU1VNRQkJUmVzdW1lIHBhdXNlZCBBdWRpbyBPcGVyYXRpb24KKwlDRFJPTVBMQVlNU0YJCVBsYXkgQXVkaW8gTVNGIChzdHJ1Y3QgY2Ryb21fbXNmKQorCUNEUk9NUExBWVRSS0lORAkJUGxheSBBdWRpbyBUcmFjay9pbmRleCAoc3RydWN0IGNkcm9tX3RpKQorCUNEUk9NUkVBRFRPQ0hEUgkJUmVhZCBUT0MgaGVhZGVyIChzdHJ1Y3QgY2Ryb21fdG9jaGRyKQorCUNEUk9NUkVBRFRPQ0VOVFJZCVJlYWQgVE9DIGVudHJ5IChzdHJ1Y3QgY2Ryb21fdG9jZW50cnkpCisJQ0RST01TVE9QCQlTdG9wIHRoZSBjZHJvbSBkcml2ZQorCUNEUk9NU1RBUlQJCVN0YXJ0IHRoZSBjZHJvbSBkcml2ZQorCUNEUk9NRUpFQ1QJCUVqZWN0cyB0aGUgY2Ryb20gbWVkaWEKKwlDRFJPTVZPTENUUkwJCUNvbnRyb2wgb3V0cHV0IHZvbHVtZSAoc3RydWN0IGNkcm9tX3ZvbGN0cmwpCisJQ0RST01TVUJDSE5MCQlSZWFkIHN1YmNoYW5uZWwgZGF0YSAoc3RydWN0IGNkcm9tX3N1YmNobmwpCisJQ0RST01SRUFETU9ERTIJCVJlYWQgQ0RST00gbW9kZSAyIGRhdGEgKDIzMzYgQnl0ZXMpCisJCQkJCSAgIChzdHJ1Y3QgY2Ryb21fcmVhZCkKKwlDRFJPTVJFQURNT0RFMQkJUmVhZCBDRFJPTSBtb2RlIDEgZGF0YSAoMjA0OCBCeXRlcykKKwkJCQkJICAgKHN0cnVjdCBjZHJvbV9yZWFkKQorCUNEUk9NUkVBREFVRElPCQkoc3RydWN0IGNkcm9tX3JlYWRfYXVkaW8pCisJQ0RST01FSkVDVF9TVwkJZW5hYmxlKDEpL2Rpc2FibGUoMCkgYXV0by1lamVjdGluZworCUNEUk9NTVVMVElTRVNTSU9OCU9idGFpbiB0aGUgc3RhcnQtb2YtbGFzdC1zZXNzaW9uCisJCQkJICBhZGRyZXNzIG9mIG11bHRpIHNlc3Npb24gZGlza3MKKwkJCQkgIChzdHJ1Y3QgY2Ryb21fbXVsdGlzZXNzaW9uKQorCUNEUk9NX0dFVF9NQ04JCU9idGFpbiB0aGUgIlVuaXZlcnNhbCBQcm9kdWN0IENvZGUiCisJCQkJICAgaWYgYXZhaWxhYmxlIChzdHJ1Y3QgY2Ryb21fbWNuKQorCUNEUk9NX0dFVF9VUEMJCURlcHJlY2F0ZWQsIHVzZSBDRFJPTV9HRVRfTUNOIGluc3RlYWQuCisJQ0RST01SRVNFVAkJaGFyZC1yZXNldCB0aGUgZHJpdmUKKwlDRFJPTVZPTFJFQUQJCUdldCB0aGUgZHJpdmUncyB2b2x1bWUgc2V0dGluZworCQkJCQkgIChzdHJ1Y3QgY2Ryb21fdm9sY3RybCkKKwlDRFJPTVJFQURSQVcJCXJlYWQgZGF0YSBpbiByYXcgbW9kZSAoMjM1MiBCeXRlcykKKwkJCQkJICAgKHN0cnVjdCBjZHJvbV9yZWFkKQorCUNEUk9NUkVBRENPT0tFRAkJcmVhZCBkYXRhIGluIGNvb2tlZCBtb2RlCisJQ0RST01TRUVLCQlzZWVrIG1zZiBhZGRyZXNzCisJQ0RST01QTEFZQkxLCQlzY3NpLWNkIG9ubHksIChzdHJ1Y3QgY2Ryb21fYmxrKQorCUNEUk9NUkVBREFMTAkJcmVhZCBhbGwgMjY0NiBieXRlcworCUNEUk9NR0VUU1BJTkRPV04JcmV0dXJuIDQtYml0IHNwaW5kb3duIHZhbHVlCisJQ0RST01TRVRTUElORE9XTglzZXQgNC1iaXQgc3BpbmRvd24gdmFsdWUKKwlDRFJPTUNMT1NFVFJBWQkJcGVuZGFudCBvZiBDRFJPTUVKRUNUCisJQ0RST01fU0VUX09QVElPTlMJU2V0IGJlaGF2aW9yIG9wdGlvbnMKKwlDRFJPTV9DTEVBUl9PUFRJT05TCUNsZWFyIGJlaGF2aW9yIG9wdGlvbnMKKwlDRFJPTV9TRUxFQ1RfU1BFRUQJU2V0IHRoZSBDRC1ST00gc3BlZWQKKwlDRFJPTV9TRUxFQ1RfRElTQwlTZWxlY3QgZGlzYyAoZm9yIGp1a2UtYm94ZXMpCisJQ0RST01fTUVESUFfQ0hBTkdFRAlDaGVjayBpcyBtZWRpYSBjaGFuZ2VkCisJQ0RST01fRFJJVkVfU1RBVFVTCUdldCB0cmF5IHBvc2l0aW9uLCBldGMuCisJQ0RST01fRElTQ19TVEFUVVMJR2V0IGRpc2MgdHlwZSwgZXRjLgorCUNEUk9NX0NIQU5HRVJfTlNMT1RTCUdldCBudW1iZXIgb2Ygc2xvdHMKKwlDRFJPTV9MT0NLRE9PUgkJbG9jayBvciB1bmxvY2sgZG9vcgorCUNEUk9NX0RFQlVHCQlUdXJuIGRlYnVnIG1lc3NhZ2VzIG9uL29mZgorCUNEUk9NX0dFVF9DQVBBQklMSVRZCWdldCBjYXBhYmlsaXRpZXMKKwlDRFJPTUFVRElPQlVGU0laCXNldCB0aGUgYXVkaW8gYnVmZmVyIHNpemUKKwlEVkRfUkVBRF9TVFJVQ1QJCVJlYWQgc3RydWN0dXJlCisJRFZEX1dSSVRFX1NUUlVDVAlXcml0ZSBzdHJ1Y3R1cmUKKwlEVkRfQVVUSAkJQXV0aGVudGljYXRpb24KKwlDRFJPTV9TRU5EX1BBQ0tFVAlzZW5kIGEgcGFja2V0IHRvIHRoZSBkcml2ZQorCUNEUk9NX05FWFRfV1JJVEFCTEUJZ2V0IG5leHQgd3JpdGFibGUgYmxvY2sKKwlDRFJPTV9MQVNUX1dSSVRURU4JZ2V0IGxhc3QgYmxvY2sgd3JpdHRlbiBvbiBkaXNjCisKKworVGhlIGluZm9ybWF0aW9uIHRoYXQgZm9sbG93cyB3YXMgZGV0ZXJtaW5lZCBmcm9tIHJlYWRpbmcga2VybmVsIHNvdXJjZQorY29kZS4gIEl0IGlzIGxpa2VseSB0aGF0IHNvbWUgY29ycmVjdGlvbnMgd2lsbCBiZSBtYWRlIG92ZXIgdGltZS4KKworCisKKworCisKKworR2VuZXJhbDoKKworCVVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLCBhbGwgaW9jdGwgY2FsbHMgcmV0dXJuIDAgb24gc3VjY2VzcworCWFuZCAtMSB3aXRoIGVycm5vIHNldCB0byBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBvbiBlcnJvci4gIChTb21lCisJaW9jdGxzIHJldHVybiBub24tbmVnYXRpdmUgZGF0YSB2YWx1ZXMuKQorCisJVW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQsIGFsbCBpb2N0bCBjYWxscyByZXR1cm4gLTEgYW5kIHNldAorCWVycm5vIHRvIEVGQVVMVCBvbiBhIGZhaWxlZCBhdHRlbXB0IHRvIGNvcHkgZGF0YSB0byBvciBmcm9tIHVzZXIKKwlhZGRyZXNzIHNwYWNlLgorCisJSW5kaXZpZHVhbCBkcml2ZXJzIG1heSByZXR1cm4gZXJyb3IgY29kZXMgbm90IGxpc3RlZCBoZXJlLgorCisJVW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQsIGFsbCBkYXRhIHN0cnVjdHVyZXMgYW5kIGNvbnN0YW50cworCWFyZSBkZWZpbmVkIGluIDxsaW51eC9jZHJvbS5oPgorCisKKworCitDRFJPTVBBVVNFCQkJUGF1c2UgQXVkaW8gT3BlcmF0aW9uCisKKwl1c2FnZToKKworCSAgaW9jdGwoZmQsIENEUk9NUEFVU0UsIDApOworCisJaW5wdXRzOgkJbm9uZQorCisJb3V0cHV0czoJbm9uZQorCisJZXJyb3IgcmV0dXJuOgorCSAgRU5PU1lTCWNkIGRyaXZlIG5vdCBhdWRpby1jYXBhYmxlLgorCisKK0NEUk9NUkVTVU1FCQkJUmVzdW1lIHBhdXNlZCBBdWRpbyBPcGVyYXRpb24KKworCXVzYWdlOgorCisJICBpb2N0bChmZCwgQ0RST01SRVNVTUUsIDApOworCisJaW5wdXRzOgkJbm9uZQorCisJb3V0cHV0czoJbm9uZQorCisJZXJyb3IgcmV0dXJuOgorCSAgRU5PU1lTCWNkIGRyaXZlIG5vdCBhdWRpby1jYXBhYmxlLgorCisKK0NEUk9NUExBWU1TRgkJCVBsYXkgQXVkaW8gTVNGIChzdHJ1Y3QgY2Ryb21fbXNmKQorCisJdXNhZ2U6CisKKwkgIHN0cnVjdCBjZHJvbV9tc2YgbXNmOworCSAgaW9jdGwoZmQsIENEUk9NUExBWU1TRiwgJm1zZik7CisKKwlpbnB1dHM6CisJICBjZHJvbV9tc2Ygc3RydWN0dXJlLCBkZXNjcmliaW5nIGEgc2VnbWVudCBvZiBtdXNpYyB0byBwbGF5CisKKwlvdXRwdXRzOglub25lCisKKwllcnJvciByZXR1cm46CisJICBFTk9TWVMJY2QgZHJpdmUgbm90IGF1ZGlvLWNhcGFibGUuCisKKwlub3RlczoKKwkgIE1TRiBzdGFuZHMgZm9yIG1pbnV0ZXMtc2Vjb25kcy1mcmFtZXMKKwkgIExCQSBzdGFuZHMgZm9yIGxvZ2ljYWwgYmxvY2sgYWRkcmVzcworCisJICBTZWdtZW50IGlzIGRlc2NyaWJlZCBhcyBzdGFydCBhbmQgZW5kIHRpbWVzLCB3aGVyZSBlYWNoIHRpbWUKKwkgIGlzIGRlc2NyaWJlZCBhcyBtaW51dGVzOnNlY29uZHM6ZnJhbWVzLiAgQSBmcmFtZSBpcyAxLzc1IG9mCisJICBhIHNlY29uZC4KKworCitDRFJPTVBMQVlUUktJTkQJCQlQbGF5IEF1ZGlvIFRyYWNrL2luZGV4IChzdHJ1Y3QgY2Ryb21fdGkpCisKKwl1c2FnZToKKworCSAgc3RydWN0IGNkcm9tX3RpIHRpOworCSAgaW9jdGwoZmQsIENEUk9NUExBWVRSS0lORCwgJnRpKTsKKworCWlucHV0czoKKwkgIGNkcm9tX3RpIHN0cnVjdHVyZSwgZGVzY3JpYmluZyBhIHNlZ21lbnQgb2YgbXVzaWMgdG8gcGxheQorCisJb3V0cHV0czoJbm9uZQorCisJZXJyb3IgcmV0dXJuOgorCSAgRU5PU1lTCWNkIGRyaXZlIG5vdCBhdWRpby1jYXBhYmxlLgorCisJbm90ZXM6CisJICBTZWdtZW50IGlzIGRlc2NyaWJlZCBhcyBzdGFydCBhbmQgZW5kIHRpbWVzLCB3aGVyZSBlYWNoIHRpbWUKKwkgIGlzIGRlc2NyaWJlZCBhcyBhIHRyYWNrIGFuZCBhbiBpbmRleC4KKworCisKK0NEUk9NUkVBRFRPQ0hEUgkJCVJlYWQgVE9DIGhlYWRlciAoc3RydWN0IGNkcm9tX3RvY2hkcikKKworCXVzYWdlOgorCisJICBjZHJvbV90b2NoZHIgaGVhZGVyOworCSAgaW9jdGwoZmQsIENEUk9NUkVBRFRPQ0hEUiwgJmhlYWRlcik7CisKKwlpbnB1dHM6CisJICBjZHJvbV90b2NoZHIgc3RydWN0dXJlCisKKwlvdXRwdXRzOgorCSAgY2Ryb21fdG9jaGRyIHN0cnVjdHVyZQorCisJZXJyb3IgcmV0dXJuOgorCSAgRU5PU1lTCWNkIGRyaXZlIG5vdCBhdWRpby1jYXBhYmxlLgorCisKKworQ0RST01SRUFEVE9DRU5UUlkJCVJlYWQgVE9DIGVudHJ5IChzdHJ1Y3QgY2Ryb21fdG9jZW50cnkpCisKKwl1c2FnZToKKworCSAgc3RydWN0IGNkcm9tX3RvY2VudHJ5IGVudHJ5OworCSAgaW9jdGwoZmQsIENEUk9NUkVBRFRPQ0VOVFJZLCAmZW50cnkpOworCisJaW5wdXRzOgorCSAgY2Ryb21fdG9jZW50cnkgc3RydWN0dXJlCisKKwlvdXRwdXRzOgorCSAgY2Ryb21fdG9jZW50cnkgc3RydWN0dXJlCisKKwllcnJvciByZXR1cm46CisJICBFTk9TWVMJY2QgZHJpdmUgbm90IGF1ZGlvLWNhcGFibGUuCisJICBFSU5WQUwJZW50cnkuY2R0ZV9mb3JtYXQgbm90IENEUk9NX01TRiBvciBDRFJPTV9MQkEKKwkgIEVJTlZBTAlyZXF1ZXN0ZWQgdHJhY2sgb3V0IG9mIGJvdW5kcworCSAgRUlPCQlJL08gZXJyb3IgcmVhZGluZyBUT0MKKworCW5vdGVzOgorCSAgVE9DIHN0YW5kcyBmb3IgVGFibGUgT2YgQ29udGVudHMKKwkgIE1TRiBzdGFuZHMgZm9yIG1pbnV0ZXMtc2Vjb25kcy1mcmFtZXMKKwkgIExCQSBzdGFuZHMgZm9yIGxvZ2ljYWwgYmxvY2sgYWRkcmVzcworCisKKworQ0RST01TVE9QCQkJU3RvcCB0aGUgY2Ryb20gZHJpdmUKKworCXVzYWdlOgorCisJICBpb2N0bChmZCwgQ0RST01TVE9QLCAwKTsKKworCWlucHV0czoJCW5vbmUKKworCW91dHB1dHM6CW5vbmUKKworCWVycm9yIHJldHVybjoKKwkgIEVOT1NZUwljZCBkcml2ZSBub3QgYXVkaW8tY2FwYWJsZS4KKworCW5vdGVzOgorCSAgRXhhY3QgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBpb2N0bCBkZXBlbmRzIG9uIHRoZSBkZXZpY2UsCisJICBidXQgbW9zdCBzZWVtIHRvIHNwaW4gdGhlIGRyaXZlIGRvd24uCisKKworQ0RST01TVEFSVAkJCVN0YXJ0IHRoZSBjZHJvbSBkcml2ZQorCisJdXNhZ2U6CisKKwkgIGlvY3RsKGZkLCBDRFJPTVNUQVJULCAwKTsKKworCWlucHV0czoJCW5vbmUKKworCW91dHB1dHM6CW5vbmUKKworCWVycm9yIHJldHVybjoKKwkgIEVOT1NZUwljZCBkcml2ZSBub3QgYXVkaW8tY2FwYWJsZS4KKworCW5vdGVzOgorCSAgRXhhY3QgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBpb2N0bCBkZXBlbmRzIG9uIHRoZSBkZXZpY2UsCisJICBidXQgbW9zdCBzZWVtIHRvIHNwaW4gdGhlIGRyaXZlIHVwIGFuZC9vciBjbG9zZSB0aGUgdHJheS4KKwkgIE90aGVyIGRldmljZXMgaWdub3JlIHRoZSBpb2N0bCBjb21wbGV0ZWx5LgorCisKK0NEUk9NRUpFQ1QJCQlFamVjdHMgdGhlIGNkcm9tIG1lZGlhCisKKwl1c2FnZToKKworCSAgaW9jdGwoZmQsIENEUk9NRUpFQ1QsIDApOworCisJaW5wdXRzOgkJbm9uZQorCisJb3V0cHV0czoJbm9uZQorCisJZXJyb3IgcmV0dXJuczoKKwkgIEVOT1NZUwljZCBkcml2ZSBub3QgY2FwYWJsZSBvZiBlamVjdGluZworCSAgRUJVU1kJCW90aGVyIHByb2Nlc3NlcyBhcmUgYWNjZXNzaW5nIGRyaXZlLCBvciBkb29yIGlzIGxvY2tlZAorCisJbm90ZXM6CisJICBTZWUgQ0RST01fTE9DS0RPT1IsIGJlbG93LgorCisKKworQ0RST01DTE9TRVRSQVkJCQlwZW5kYW50IG9mIENEUk9NRUpFQ1QKKworCXVzYWdlOgorCisJICBpb2N0bChmZCwgQ0RST01DTE9TRVRSQVksIDApOworCisJaW5wdXRzOgkJbm9uZQorCisJb3V0cHV0czoJbm9uZQorCisJZXJyb3IgcmV0dXJuczoKKwkgIEVOT1NZUwljZCBkcml2ZSBub3QgY2FwYWJsZSBvZiBjbG9zaW5nIHRoZSB0cmF5CisJICBFQlVTWQkJb3RoZXIgcHJvY2Vzc2VzIGFyZSBhY2Nlc3NpbmcgZHJpdmUsIG9yIGRvb3IgaXMgbG9ja2VkCisKKwlub3RlczoKKwkgIFNlZSBDRFJPTV9MT0NLRE9PUiwgYmVsb3cuCisKKworCitDRFJPTVZPTENUUkwJCQlDb250cm9sIG91dHB1dCB2b2x1bWUgKHN0cnVjdCBjZHJvbV92b2xjdHJsKQorCisJdXNhZ2U6CisKKwkgIHN0cnVjdCBjZHJvbV92b2xjdHJsIHZvbHVtZTsKKwkgIGlvY3RsKGZkLCBDRFJPTVZPTENUUkwsICZ2b2x1bWUpOworCisJaW5wdXRzOgorCSAgY2Ryb21fdm9sY3RybCBzdHJ1Y3R1cmUgY29udGFpbmluZyB2b2x1bWVzIGZvciB1cCB0byA0CisJICBjaGFubmVscy4KKworCW91dHB1dHM6CW5vbmUKKworCWVycm9yIHJldHVybjoKKwkgIEVOT1NZUwljZCBkcml2ZSBub3QgYXVkaW8tY2FwYWJsZS4KKworCisKK0NEUk9NVk9MUkVBRAkJCUdldCB0aGUgZHJpdmUncyB2b2x1bWUgc2V0dGluZworCQkJCQkgIChzdHJ1Y3QgY2Ryb21fdm9sY3RybCkKKworCXVzYWdlOgorCisJICBzdHJ1Y3QgY2Ryb21fdm9sY3RybCB2b2x1bWU7CisJICBpb2N0bChmZCwgQ0RST01WT0xSRUFELCAmdm9sdW1lKTsKKworCWlucHV0czoJCW5vbmUKKworCW91dHB1dHM6CisJICBUaGUgY3VycmVudCB2b2x1bWUgc2V0dGluZ3MuCisKKwllcnJvciByZXR1cm46CisJICBFTk9TWVMJY2QgZHJpdmUgbm90IGF1ZGlvLWNhcGFibGUuCisKKworCitDRFJPTVNVQkNITkwJCQlSZWFkIHN1YmNoYW5uZWwgZGF0YSAoc3RydWN0IGNkcm9tX3N1YmNobmwpCisKKwl1c2FnZToKKworCSAgc3RydWN0IGNkcm9tX3N1YmNobmwgcTsKKwkgIGlvY3RsKGZkLCBDRFJPTVNVQkNITkwsICZxKTsKKworCWlucHV0czoKKwkgIGNkcm9tX3N1YmNobmwgc3RydWN0dXJlCisKKwlvdXRwdXRzOgorCSAgY2Ryb21fc3ViY2hubCBzdHJ1Y3R1cmUKKworCWVycm9yIHJldHVybjoKKwkgIEVOT1NZUwljZCBkcml2ZSBub3QgYXVkaW8tY2FwYWJsZS4KKwkgIEVJTlZBTAlmb3JtYXQgbm90IENEUk9NX01TRiBvciBDRFJPTV9MQkEKKworCW5vdGVzOgorCSAgRm9ybWF0IGlzIGNvbnZlcnRlZCB0byBDRFJPTV9NU0Ygb24gcmV0dXJuCisKKworCitDRFJPTVJFQURSQVcJCQlyZWFkIGRhdGEgaW4gcmF3IG1vZGUgKDIzNTIgQnl0ZXMpCisJCQkJCSAgIChzdHJ1Y3QgY2Ryb21fcmVhZCkKKworCXVzYWdlOgorCisJICB1bmlvbiB7CisJICAgIHN0cnVjdCBjZHJvbV9tc2YgbXNmOwkJLyogaW5wdXQgKi8KKwkgICAgY2hhciBidWZmZXJbQ0RfRlJBTUVTSVpFX1JBV107CS8qIHJldHVybiAqLworCSAgfSBhcmc7CisJICBpb2N0bChmZCwgQ0RST01SRUFEUkFXLCAmYXJnKTsKKworCWlucHV0czoKKwkgIGNkcm9tX21zZiBzdHJ1Y3R1cmUgaW5kaWNhdGluZyBhbiBhZGRyZXNzIHRvIHJlYWQuCisJICBPbmx5IHRoZSBzdGFydCB2YWx1ZXMgYXJlIHNpZ25pZmljYW50LgorCisJb3V0cHV0czoKKwkgIERhdGEgd3JpdHRlbiB0byBhZGRyZXNzIHByb3ZpZGVkIGJ5IHVzZXIuCisKKwllcnJvciByZXR1cm46CisJICBFSU5WQUwJYWRkcmVzcyBsZXNzIHRoYW4gMCwgb3IgbXNmIGxlc3MgdGhhbiAwOjI6MAorCSAgRU5PTUVNCW91dCBvZiBtZW1vcnkKKworCW5vdGVzOgorCSAgQXMgb2YgMi42LjguMSwgY29tbWVudHMgaW4gPGxpbnV4L2Nkcm9tLmg+IGluZGljYXRlIHRoYXQgdGhpcworCSAgaW9jdGwgYWNjZXB0cyBhIGNkcm9tX3JlYWQgc3RydWN0dXJlLCBidXQgYWN0dWFsIHNvdXJjZSBjb2RlCisJICByZWFkcyBhIGNkcm9tX21zZiBzdHJ1Y3R1cmUgYW5kIHdyaXRlcyBhIGJ1ZmZlciBvZiBkYXRhIHRvCisJICB0aGUgc2FtZSBhZGRyZXNzLgorCisJICBNU0YgdmFsdWVzIGFyZSBjb252ZXJ0ZWQgdG8gTEJBIHZhbHVlcyB2aWEgdGhpcyBmb3JtdWxhOgorCisJICAgIGxiYSA9ICgoKG0gKiBDRF9TRUNTKSArIHMpICogQ0RfRlJBTUVTICsgZikgLSBDRF9NU0ZfT0ZGU0VUOworCisKKworCitDRFJPTVJFQURNT0RFMQkJCVJlYWQgQ0RST00gbW9kZSAxIGRhdGEgKDIwNDggQnl0ZXMpCisJCQkJCSAgIChzdHJ1Y3QgY2Ryb21fcmVhZCkKKworCW5vdGVzOgorCSAgSWRlbnRpY2FsIHRvIENEUk9NUkVBRFJBVyBleGNlcHQgdGhhdCBibG9jayBzaXplIGlzCisJICBDRF9GUkFNRVNJWkUgKDIwNDgpIGJ5dGVzCisKKworCitDRFJPTVJFQURNT0RFMgkJCVJlYWQgQ0RST00gbW9kZSAyIGRhdGEgKDIzMzYgQnl0ZXMpCisJCQkJCSAgIChzdHJ1Y3QgY2Ryb21fcmVhZCkKKworCW5vdGVzOgorCSAgSWRlbnRpY2FsIHRvIENEUk9NUkVBRFJBVyBleGNlcHQgdGhhdCBibG9jayBzaXplIGlzCisJICBDRF9GUkFNRVNJWkVfUkFXMCAoMjMzNikgYnl0ZXMKKworCisKK0NEUk9NUkVBREFVRElPCQkJKHN0cnVjdCBjZHJvbV9yZWFkX2F1ZGlvKQorCisJdXNhZ2U6CisKKwkgIHN0cnVjdCBjZHJvbV9yZWFkX2F1ZGlvIHJhOworCSAgaW9jdGwoZmQsIENEUk9NUkVBREFVRElPLCAmcmEpOworCisJaW5wdXRzOgorCSAgY2Ryb21fcmVhZF9hdWRpbyBzdHJ1Y3R1cmUgY29udGFpbmluZyByZWFkIHN0YXJ0CisJICBwb2ludCBhbmQgbGVuZ3RoCisKKwlvdXRwdXRzOgorCSAgYXVkaW8gZGF0YSwgcmV0dXJuZWQgdG8gYnVmZmVyIGluZGljYXRlZCBieSByYQorCisJZXJyb3IgcmV0dXJuOgorCSAgRUlOVkFMCWZvcm1hdCBub3QgQ0RST01fTVNGIG9yIENEUk9NX0xCQQorCSAgRUlOVkFMCW5mcmFtZXMgbm90IGluIHJhbmdlIFsxIDc1XQorCSAgRU5YSU8JCWRyaXZlIGhhcyBubyBxdWV1ZSAocHJvYmFibHkgbWVhbnMgaW52YWxpZCBmZCkKKwkgIEVOT01FTQlvdXQgb2YgbWVtb3J5CisKKworQ0RST01FSkVDVF9TVwkJCWVuYWJsZSgxKS9kaXNhYmxlKDApIGF1dG8tZWplY3RpbmcKKworCXVzYWdlOgorCisJICBpbnQgdmFsOworCSAgaW9jdGwoZmQsIENEUk9NRUpFQ1RfU1csIHZhbCk7CisKKwlpbnB1dHM6CisJICBGbGFnIHNwZWNpZnlpbmcgYXV0by1lamVjdCBmbGFnLgorCisJb3V0cHV0czoJbm9uZQorCisJZXJyb3IgcmV0dXJuOgorCSAgRU5PU1lTCURyaXZlIGlzIG5vdCBjYXBhYmxlIG9mIGVqZWN0aW5nLgorCSAgRUJVU1kJCURvb3IgaXMgbG9ja2VkCisKKworCisKK0NEUk9NTVVMVElTRVNTSU9OCQlPYnRhaW4gdGhlIHN0YXJ0LW9mLWxhc3Qtc2Vzc2lvbgorCQkJCSAgYWRkcmVzcyBvZiBtdWx0aSBzZXNzaW9uIGRpc2tzCisJCQkJICAoc3RydWN0IGNkcm9tX211bHRpc2Vzc2lvbikKKwl1c2FnZToKKworCSAgc3RydWN0IGNkcm9tX211bHRpc2Vzc2lvbiBtc19pbmZvOworCSAgaW9jdGwoZmQsIENEUk9NTVVMVElTRVNTSU9OLCAmbXNfaW5mbyk7CisKKwlpbnB1dHM6CisJICBjZHJvbV9tdWx0aXNlc3Npb24gc3RydWN0dXJlIGNvbnRhaW5pbmcgZGVzaXJlZAorCSAgZm9ybWF0LgorCisJb3V0cHV0czoKKwkgIGNkcm9tX211bHRpc2Vzc2lvbiBzdHJ1Y3R1cmUgaXMgZmlsbGVkIHdpdGggbGFzdF9zZXNzaW9uCisJICBpbmZvcm1hdGlvbi4KKworCWVycm9yIHJldHVybjoKKwkgIEVJTlZBTAlmb3JtYXQgbm90IENEUk9NX01TRiBvciBDRFJPTV9MQkEKKworCitDRFJPTV9HRVRfTUNOCQkJT2J0YWluIHRoZSAiVW5pdmVyc2FsIFByb2R1Y3QgQ29kZSIKKwkJCQkgICBpZiBhdmFpbGFibGUgKHN0cnVjdCBjZHJvbV9tY24pCisKKwl1c2FnZToKKworCSAgc3RydWN0IGNkcm9tX21jbiBtY247CisJICBpb2N0bChmZCwgQ0RST01fR0VUX01DTiwgJm1jbik7CisKKwlpbnB1dHM6CQlub25lCisKKwlvdXRwdXRzOgorCSAgVW5pdmVyc2FsIFByb2R1Y3QgQ29kZQorCisJZXJyb3IgcmV0dXJuOgorCSAgRU5PU1lTCURyaXZlIGlzIG5vdCBjYXBhYmxlIG9mIHJlYWRpbmcgTUNOIGRhdGEuCisKKwlub3RlczoKKwkgIFNvdXJjZSBjb2RlIGNvbW1lbnRzIHN0YXRlOgorCisJICAgIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQsIGFsdGhvdWdoIHZlcnkgZmV3CisJICAgIGF1ZGlvIGRpc2NzIGdpdmUgVW5pdmVyc2FsIFByb2R1Y3QgQ29kZSBpbmZvcm1hdGlvbiwgd2hpY2gKKwkgICAgc2hvdWxkIGp1c3QgYmUgdGhlIE1lZGl1bSBDYXRhbG9nIE51bWJlciBvbiB0aGUgYm94LiAgTm90ZSwKKwkgICAgdGhhdCB0aGUgd2F5IHRoZSBjb2RlIGlzIHdyaXR0ZW4gb24gdGhlIENEIGlzIC9ub3QvIHVuaWZvcm0KKwkgICAgYWNyb3NzIGFsbCBkaXNjcyEKKworCisKKworQ0RST01fR0VUX1VQQwkJCUNEUk9NX0dFVF9NQ04gIChkZXByZWNhdGVkKQorCisJTm90IGltcGxlbWVudGVkLCBhcyBvZiAyLjYuOC4xCisKKworCitDRFJPTVJFU0VUCQkJaGFyZC1yZXNldCB0aGUgZHJpdmUKKworCXVzYWdlOgorCisJICBpb2N0bChmZCwgQ0RST01SRVNFVCwgMCk7CisKKwlpbnB1dHM6CQlub25lCisKKwlvdXRwdXRzOglub25lCisKKwllcnJvciByZXR1cm46CisJICBFQUNDRVMJQWNjZXNzIGRlbmllZDogIHJlcXVpcmVzIENBUF9TWVNfQURNSU4KKwkgIEVOT1NZUwlEcml2ZSBpcyBub3QgY2FwYWJsZSBvZiByZXNldHRpbmcuCisKKworCisKK0NEUk9NUkVBRENPT0tFRAkJCXJlYWQgZGF0YSBpbiBjb29rZWQgbW9kZQorCisJdXNhZ2U6CisKKwkgIHU4IGJ1ZmZlcltDRF9GUkFNRVNJWkVdCisJICBpb2N0bChmZCwgQ0RST01SRUFEQ09PS0VELCBidWZmZXIpOworCisJaW5wdXRzOgkJbm9uZQorCisJb3V0cHV0czoKKwkgIDIwNDggYnl0ZXMgb2YgZGF0YSwgImNvb2tlZCIgbW9kZS4KKworCW5vdGVzOgorCSAgTm90IGltcGxlbWVudGVkIG9uIGFsbCBkcml2ZXMuCisKKworCisKK0NEUk9NUkVBREFMTAkJCXJlYWQgYWxsIDI2NDYgYnl0ZXMKKworCVNhbWUgYXMgQ0RST01SRUFEQ09PS0VELCBidXQgcmVhZHMgMjY0NiBieXRlcy4KKworCisKK0NEUk9NU0VFSwkJCXNlZWsgbXNmIGFkZHJlc3MKKworCXVzYWdlOgorCisJICBzdHJ1Y3QgY2Ryb21fbXNmIG1zZjsKKwkgIGlvY3RsKGZkLCBDRFJPTVNFRUssICZtc2YpOworCisJaW5wdXRzOgorCSAgTVNGIGFkZHJlc3MgdG8gc2VlayB0by4KKworCW91dHB1dHM6CW5vbmUKKworCisKK0NEUk9NUExBWUJMSwkJCXNjc2ktY2Qgb25seSwgKHN0cnVjdCBjZHJvbV9ibGspCisKKwl1c2FnZToKKworCSAgc3RydWN0IGNkcm9tX2JsayBibGs7CisJICBpb2N0bChmZCwgQ0RST01QTEFZQkxLLCAmYmxrKTsKKworCWlucHV0czoKKwkgIFJlZ2lvbiB0byBwbGF5CisKKwlvdXRwdXRzOglub25lCisKKworCitDRFJPTUdFVFNQSU5ET1dOCisKKwl1c2FnZToKKworCSAgY2hhciBzcGluZG93bjsKKwkgIGlvY3RsKGZkLCBDRFJPTUdFVFNQSU5ET1dOLCAmc3BpbmRvd24pOworCisJaW5wdXRzOgkJbm9uZQorCisJb3V0cHV0czoKKwkgIFRoZSB2YWx1ZSBvZiB0aGUgY3VycmVudCA0LWJpdCBzcGluZG93biB2YWx1ZS4KKworCisKKworQ0RST01TRVRTUElORE9XTgorCisJdXNhZ2U6CisKKwkgIGNoYXIgc3BpbmRvd24KKwkgIGlvY3RsKGZkLCBDRFJPTVNFVFNQSU5ET1dOLCAmc3BpbmRvd24pOworCisJaW5wdXRzOgorCSAgNC1iaXQgdmFsdWUgdXNlZCB0byBjb250cm9sIHNwaW5kb3duIChUT0RPOiBtb3JlIGRldGFpbCBoZXJlKQorCisJb3V0cHV0czoJbm9uZQorCisKKworCisKK0NEUk9NX1NFVF9PUFRJT05TCQlTZXQgYmVoYXZpb3Igb3B0aW9ucworCisJdXNhZ2U6CisKKwkgIGludCBvcHRpb25zOworCSAgaW9jdGwoZmQsIENEUk9NX1NFVF9PUFRJT05TLCBvcHRpb25zKTsKKworCWlucHV0czoKKwkgIE5ldyB2YWx1ZXMgZm9yIGRyaXZlIG9wdGlvbnMuICBUaGUgbG9naWNhbCAnb3InIG9mOgorCSAgICBDRE9fQVVUT19DTE9TRQljbG9zZSB0cmF5IG9uIGZpcnN0IG9wZW4oMikKKwkgICAgQ0RPX0FVVE9fRUpFQ1QJb3BlbiB0cmF5IG9uIGxhc3QgcmVsZWFzZQorCSAgICBDRE9fVVNFX0ZGTEFHUwl1c2UgT19OT05CTE9DSyBpbmZvcm1hdGlvbiBvbiBvcGVuCisJICAgIENET19MT0NLCQlsb2NrIHRyYXkgb24gb3BlbiBmaWxlcworCSAgICBDRE9fQ0hFQ0tfVFlQRQljaGVjayB0eXBlIG9uIG9wZW4gZm9yIGRhdGEKKworCW91dHB1dHM6CisJICBSZXR1cm5zIHRoZSByZXN1bHRpbmcgb3B0aW9ucyBzZXR0aW5ncyBpbiB0aGUKKwkgIGlvY3RsIHJldHVybiB2YWx1ZS4gIFJldHVybnMgLTEgb24gZXJyb3IuCisKKwllcnJvciByZXR1cm46CisJICBFTk9TWVMJc2VsZWN0ZWQgb3B0aW9uKHMpIG5vdCBzdXBwb3J0ZWQgYnkgZHJpdmUuCisKKworCisKK0NEUk9NX0NMRUFSX09QVElPTlMJCUNsZWFyIGJlaGF2aW9yIG9wdGlvbnMKKworCVNhbWUgYXMgQ0RST01fU0VUX09QVElPTlMsIGV4Y2VwdCB0aGF0IHNlbGVjdGVkIG9wdGlvbnMgYXJlCisJdHVybmVkIG9mZi4KKworCisKK0NEUk9NX1NFTEVDVF9TUEVFRAkJU2V0IHRoZSBDRC1ST00gc3BlZWQKKworCXVzYWdlOgorCisJICBpbnQgc3BlZWQ7CisJICBpb2N0bChmZCwgQ0RST01fU0VMRUNUX1NQRUVELCBzcGVlZCk7CisKKwlpbnB1dHM6CisJICBOZXcgZHJpdmUgc3BlZWQuCisKKwlvdXRwdXRzOglub25lCisKKwllcnJvciByZXR1cm46CisJICBFTk9TWVMJc3BlZWQgc2VsZWN0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgZHJpdmUuCisKKworCitDRFJPTV9TRUxFQ1RfRElTQwkJU2VsZWN0IGRpc2MgKGZvciBqdWtlLWJveGVzKQorCisJdXNhZ2U6CisKKwkgIGludCBkaXNrOworCSAgaW9jdGwoZmQsIENEUk9NX1NFTEVDVF9ESVNDLCBkaXNrKTsKKworCWlucHV0czoKKwkgIERpc2sgdG8gbG9hZCBpbnRvIGRyaXZlLgorCisJb3V0cHV0czoJbm9uZQorCisJZXJyb3IgcmV0dXJuOgorCSAgRUlOVkFMCURpc2sgbnVtYmVyIGJleW9uZCBjYXBhY2l0eSBvZiBkcml2ZQorCisKKworQ0RST01fTUVESUFfQ0hBTkdFRAkJQ2hlY2sgaXMgbWVkaWEgY2hhbmdlZAorCisJdXNhZ2U6CisKKwkgIGludCBzbG90OworCSAgaW9jdGwoZmQsIENEUk9NX01FRElBX0NIQU5HRUQsIHNsb3QpOworCisJaW5wdXRzOgorCSAgU2xvdCBudW1iZXIgdG8gYmUgdGVzdGVkLCBhbHdheXMgemVybyBleGNlcHQgZm9yIGp1a2Vib3hlcy4KKwkgIE1heSBhbHNvIGJlIHNwZWNpYWwgdmFsdWVzIENEU0xfTk9ORSBvciBDRFNMX0NVUlJFTlQKKworCW91dHB1dHM6CisJICBJb2N0bCByZXR1cm4gdmFsdWUgaXMgMCBvciAxIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBtZWRpYQorCSAgaGFzIGJlZW4gY2hhbmdlZCwgb3IgLTEgb24gZXJyb3IuCisKKwllcnJvciByZXR1cm5zOgorCSAgRU5PU1lTCURyaXZlIGNhbid0IGRldGVjdCBtZWRpYSBjaGFuZ2UKKwkgIEVJTlZBTAlTbG90IG51bWJlciBiZXlvbmQgY2FwYWNpdHkgb2YgZHJpdmUKKwkgIEVOT01FTQlPdXQgb2YgbWVtb3J5CisKKworCitDRFJPTV9EUklWRV9TVEFUVVMJCUdldCB0cmF5IHBvc2l0aW9uLCBldGMuCisKKwl1c2FnZToKKworCSAgaW50IHNsb3Q7CisJICBpb2N0bChmZCwgQ0RST01fRFJJVkVfU1RBVFVTLCBzbG90KTsKKworCWlucHV0czoKKwkgIFNsb3QgbnVtYmVyIHRvIGJlIHRlc3RlZCwgYWx3YXlzIHplcm8gZXhjZXB0IGZvciBqdWtlYm94ZXMuCisJICBNYXkgYWxzbyBiZSBzcGVjaWFsIHZhbHVlcyBDRFNMX05PTkUgb3IgQ0RTTF9DVVJSRU5UCisKKwlvdXRwdXRzOgorCSAgSW9jdGwgcmV0dXJuIHZhbHVlIHdpbGwgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzCisJICBmcm9tIDxsaW51eC9jZHJvbS5oPjoKKworCSAgICBDRFNfTk9fSU5GTwkJSW5mb3JtYXRpb24gbm90IGF2YWlsYWJsZS4KKwkgICAgQ0RTX05PX0RJU0MKKwkgICAgQ0RTX1RSQVlfT1BFTgorCSAgICBDRFNfRFJJVkVfTk9UX1JFQURZCisJICAgIENEU19ESVNDX09LCisJICAgIC0xCQkJZXJyb3IKKworCWVycm9yIHJldHVybnM6CisJICBFTk9TWVMJRHJpdmUgY2FuJ3QgZGV0ZWN0IGRyaXZlIHN0YXR1cworCSAgRUlOVkFMCVNsb3QgbnVtYmVyIGJleW9uZCBjYXBhY2l0eSBvZiBkcml2ZQorCSAgRU5PTUVNCU91dCBvZiBtZW1vcnkKKworCisKKworQ0RST01fRElTQ19TVEFUVVMJCUdldCBkaXNjIHR5cGUsIGV0Yy4KKworCXVzYWdlOgorCisJICBpb2N0bChmZCwgQ0RST01fRElTQ19TVEFUVVMsIDApOworCisJaW5wdXRzOgkJbm9uZQorCisJb3V0cHV0czoKKwkgIElvY3RsIHJldHVybiB2YWx1ZSB3aWxsIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlcworCSAgZnJvbSA8bGludXgvY2Ryb20uaD46CisJICAgIENEU19OT19JTkZPCisJICAgIENEU19BVURJTworCSAgICBDRFNfTUlYRUQKKwkgICAgQ0RTX1hBXzJfMgorCSAgICBDRFNfWEFfMl8xCisJICAgIENEU19EQVRBXzEKKworCWVycm9yIHJldHVybnM6CW5vbmUgYXQgcHJlc2VudAorCisJbm90ZXM6CisJICBTb3VyY2UgY29kZSBjb21tZW50cyBzdGF0ZToKKworCSAgICBPaywgdGhpcyBpcyB3aGVyZSBwcm9ibGVtcyBzdGFydC4gIFRoZSBjdXJyZW50IGludGVyZmFjZSBmb3IKKwkgICAgdGhlIENEUk9NX0RJU0NfU1RBVFVTIGlvY3RsIGlzIGZsYXdlZC4gIEl0IG1ha2VzIHRoZSBmYWxzZQorCSAgICBhc3N1bXB0aW9uIHRoYXQgQ0RzIGFyZSBhbGwgQ0RTX0RBVEFfMSBvciBhbGwgQ0RTX0FVRElPLCBldGMuCisJICAgIFVuZm9ydHVuYXRlbHksIHdoaWxlIHRoaXMgaXMgb2Z0ZW4gdGhlIGNhc2UsIGl0IGlzIGFsc28KKwkgICAgdmVyeSBjb21tb24gZm9yIENEcyB0byBoYXZlIHNvbWUgdHJhY2tzIHdpdGggZGF0YSwgYW5kIHNvbWUKKwkgICAgdHJhY2tzIHdpdGggYXVkaW8uCUp1c3QgYmVjYXVzZSBJIGZlZWwgbGlrZSBpdCwgSSBkZWNsYXJlCisJICAgIHRoZSBmb2xsb3dpbmcgdG8gYmUgdGhlIGJlc3Qgd2F5IHRvIGNvcGUuICBJZiB0aGUgQ0QgaGFzCisJICAgIEFOWSBkYXRhIHRyYWNrcyBvbiBpdCwgaXQgd2lsbCBiZSByZXR1cm5lZCBhcyBhIGRhdGEgQ0QuCisJICAgIElmIGl0IGhhcyBhbnkgWEEgdHJhY2tzLCBJIHdpbGwgcmV0dXJuIGl0IGFzIHRoYXQuCU5vdyBJCisJICAgIGNvdWxkIHNpbXBsaWZ5IHRoaXMgaW50ZXJmYWNlIGJ5IGNvbWJpbmluZyB0aGVzZSByZXR1cm5zIHdpdGgKKwkgICAgdGhlIGFib3ZlLCBidXQgdGhpcyBtb3JlIGNsZWFybHkgZGVtb25zdHJhdGVzIHRoZSBwcm9ibGVtCisJICAgIHdpdGggdGhlIGN1cnJlbnQgaW50ZXJmYWNlLiAgVG9vIGJhZCB0aGlzIHdhc24ndCBkZXNpZ25lZAorCSAgICB0byB1c2UgYml0bWFza3MuLi4JICAgICAgIC1FcmlrCisKKwkgICAgV2VsbCwgbm93IHdlIGhhdmUgdGhlIG9wdGlvbiBDRFNfTUlYRUQ6IGEgbWl4ZWQtdHlwZSBDRC4KKwkgICAgVXNlciBsZXZlbCBwcm9ncmFtbWVycyBtaWdodCBmZWVsIHRoZSBpb2N0bCBpcyBub3QgdmVyeQorCSAgICB1c2VmdWwuCisJCQktLS1kYXZpZAorCisKKworCitDRFJPTV9DSEFOR0VSX05TTE9UUwkJR2V0IG51bWJlciBvZiBzbG90cworCisJdXNhZ2U6CisKKwkgIGlvY3RsKGZkLCBDRFJPTV9DSEFOR0VSX05TTE9UUywgMCk7CisKKwlpbnB1dHM6CQlub25lCisKKwlvdXRwdXRzOgorCSAgVGhlIGlvY3RsIHJldHVybiB2YWx1ZSB3aWxsIGJlIHRoZSBudW1iZXIgb2Ygc2xvdHMgaW4gYQorCSAgQ0QgY2hhbmdlci4gIFR5cGljYWxseSAxIGZvciBub24tbXVsdGktZGlzayBkZXZpY2VzLgorCisJZXJyb3IgcmV0dXJuczoJbm9uZQorCisKKworQ0RST01fTE9DS0RPT1IJCQlsb2NrIG9yIHVubG9jayBkb29yCisKKwl1c2FnZToKKworCSAgaW50IGxvY2s7CisJICBpb2N0bChmZCwgQ0RST01fTE9DS0RPT1IsIGxvY2spOworCisJaW5wdXRzOgorCSAgRG9vciBsb2NrIGZsYWcsIDE9bG9jaywgMD11bmxvY2sKKworCW91dHB1dHM6CW5vbmUKKworCWVycm9yIHJldHVybnM6CisJICBFRFJJVkVfQ0FOVF9ET19USElTCURvb3IgbG9jayBmdW5jdGlvbiBub3Qgc3VwcG9ydGVkLgorCSAgRUJVU1kJCQlBdHRlbXB0IHRvIHVubG9jayB3aGVuIG11bHRpcGxlIHVzZXJzCisJICAJCQloYXZlIHRoZSBkcml2ZSBvcGVuIGFuZCBub3QgQ0FQX1NZU19BRE1JTgorCisJbm90ZXM6CisJICBBcyBvZiAyLjYuOC4xLCB0aGUgbG9jayBmbGFnIGlzIGEgZ2xvYmFsIGxvY2ssIG1lYW5pbmcgdGhhdAorCSAgYWxsIENEIGRyaXZlcyB3aWxsIGJlIGxvY2tlZCBvciB1bmxvY2tlZCB0b2dldGhlci4gIFRoaXMgaXMKKwkgIHByb2JhYmx5IGEgYnVnLgorCisJICBUaGUgRURSSVZFX0NBTlRfRE9fVEhJUyB2YWx1ZSBpcyBkZWZpbmVkIGluIDxsaW51eC9jZHJvbS5oPgorCSAgYW5kIGlzIGN1cnJlbnRseSAoMi42LjguMSkgdGhlIHNhbWUgYXMgRU9QTk9UU1VQUAorCisKKworQ0RST01fREVCVUcJCQlUdXJuIGRlYnVnIG1lc3NhZ2VzIG9uL29mZgorCisJdXNhZ2U6CisKKwkgIGludCBkZWJ1ZzsKKwkgIGlvY3RsKGZkLCBDRFJPTV9ERUJVRywgZGVidWcpOworCisJaW5wdXRzOgorCSAgQ2Ryb20gZGVidWcgZmxhZywgMD1kaXNhYmxlLCAxPWVuYWJsZQorCisJb3V0cHV0czoKKwkgIFRoZSBpb2N0bCByZXR1cm4gdmFsdWUgd2lsbCBiZSB0aGUgbmV3IGRlYnVnIGZsYWcuCisKKwllcnJvciByZXR1cm46CisJICBFQUNDRVMJQWNjZXNzIGRlbmllZDogIHJlcXVpcmVzIENBUF9TWVNfQURNSU4KKworCisKK0NEUk9NX0dFVF9DQVBBQklMSVRZCQlnZXQgY2FwYWJpbGl0aWVzCisKKwl1c2FnZToKKworCSAgaW9jdGwoZmQsIENEUk9NX0dFVF9DQVBBQklMSVRZLCAwKTsKKworCWlucHV0czoJCW5vbmUKKworCW91dHB1dHM6CisJICBUaGUgaW9jdGwgcmV0dXJuIHZhbHVlIGlzIHRoZSBjdXJyZW50IGRldmljZSBjYXBhYmlsaXR5CisJICBmbGFncy4gIFNlZSBDRENfQ0xPU0VfVFJBWSwgQ0RDX09QRU5fVFJBWSwgZXRjLgorCisKKworQ0RST01BVURJT0JVRlNJWgkJc2V0IHRoZSBhdWRpbyBidWZmZXIgc2l6ZQorCisJdXNhZ2U6CisKKwkgIGludCBhcmc7CisJICBpb2N0bChmZCwgQ0RST01BVURJT0JVRlNJWiwgdmFsKTsKKworCWlucHV0czoKKwkgIE5ldyBhdWRpbyBidWZmZXIgc2l6ZQorCisJb3V0cHV0czoKKwkgIFRoZSBpb2N0bCByZXR1cm4gdmFsdWUgaXMgdGhlIG5ldyBhdWRpbyBidWZmZXIgc2l6ZSwgb3IgLTEKKwkgIG9uIGVycm9yLgorCisJZXJyb3IgcmV0dXJuOgorCSAgRU5PU1lTCU5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIuCisKKwlub3RlczoKKwkgIE5vdCBzdXBwb3J0ZWQgYnkgYWxsIGRyaXZlcnMuCisKKworCitEVkRfUkVBRF9TVFJVQ1QJCQlSZWFkIHN0cnVjdHVyZQorCisJdXNhZ2U6CisKKwkgIGR2ZF9zdHJ1Y3QgczsKKwkgIGlvY3RsKGZkLCBEVkRfUkVBRF9TVFJVQ1QsICZzKTsKKworCWlucHV0czoKKwkgIGR2ZF9zdHJ1Y3Qgc3RydWN0dXJlLCBjb250YWluaW5nOgorCSAgICB0eXBlCQlzcGVjaWZpZXMgdGhlIGluZm9ybWF0aW9uIGRlc2lyZWQsIG9uZSBvZgorCSAgICAJCQlEVkRfU1RSVUNUX1BIWVNJQ0FMLCBEVkRfU1RSVUNUX0NPUFlSSUdIVCwKKwkJCQlEVkRfU1RSVUNUX0RJU0NLRVksIERWRF9TVFJVQ1RfQkNBLAorCQkJCURWRF9TVFJVQ1RfTUFOVUZBQ1QKKwkgICAgcGh5c2ljYWwubGF5ZXJfbnVtCWRlc2lyZWQgbGF5ZXIsIGluZGV4ZWQgZnJvbSAwCisJICAgIGNvcHlyaWdodC5sYXllcl9udW0JZGVzaXJlZCBsYXllciwgaW5kZXhlZCBmcm9tIDAKKwkgICAgZGlzY2tleS5hZ2lkCisKKwlvdXRwdXRzOgorCSAgZHZkX3N0cnVjdCBzdHJ1Y3R1cmUsIGNvbnRhaW5pbmc6CisJICAgIHBoeXNpY2FsCQlmb3IgdHlwZSA9PSBEVkRfU1RSVUNUX1BIWVNJQ0FMCisJICAgIGNvcHlyaWdodAkJZm9yIHR5cGUgPT0gRFZEX1NUUlVDVF9DT1BZUklHSFQKKwkgICAgZGlzY2tleS52YWx1ZQlmb3IgdHlwZSA9PSBEVkRfU1RSVUNUX0RJU0NLRVkKKwkgICAgYmNhLntsZW4sdmFsdWV9CWZvciB0eXBlID09IERWRF9TVFJVQ1RfQkNBCisJICAgIG1hbnVmYWN0LntsZW4sdmFsdX0JZm9yIHR5cGUgPT0gRFZEX1NUUlVDVF9NQU5VRkFDVAorCisJZXJyb3IgcmV0dXJuczoKKwkgIEVJTlZBTAlwaHlzaWNhbC5sYXllcl9udW0gZXhjZWVkcyBudW1iZXIgb2YgbGF5ZXJzCisJICBFSU8JCVJlY2VpdmVkIGludmFsaWQgcmVzcG9uc2UgZnJvbSBkcml2ZQorCisKKworRFZEX1dSSVRFX1NUUlVDVAkJV3JpdGUgc3RydWN0dXJlCisKKwlOb3QgaW1wbGVtZW50ZWQsIGFzIG9mIDIuNi44LjEKKworCisKK0RWRF9BVVRICQkJQXV0aGVudGljYXRpb24KKworCXVzYWdlOgorCisJICBkdmRfYXV0aGluZm8gYWk7CisJICBpb2N0bChmZCwgRFZEX0FVVEgsICZhaSk7CisKKwlpbnB1dHM6CisJICBkdmRfYXV0aGluZm8gc3RydWN0dXJlLiAgU2VlIDxsaW51eC9jZHJvbS5oPgorCisJb3V0cHV0czoKKwkgIGR2ZF9hdXRoaW5mbyBzdHJ1Y3R1cmUuCisKKwllcnJvciByZXR1cm46CisJICBFTk9UVFkJYWkudHlwZSBub3QgcmVjb2duaXplZC4KKworCisKK0NEUk9NX1NFTkRfUEFDS0VUCQlzZW5kIGEgcGFja2V0IHRvIHRoZSBkcml2ZQorCisJdXNhZ2U6CisKKwkgIHN0cnVjdCBjZHJvbV9nZW5lcmljX2NvbW1hbmQgY2djOworCSAgaW9jdGwoZmQsIENEUk9NX1NFTkRfUEFDS0VULCAmY2djKTsKKworCWlucHV0czoKKwkgIGNkcm9tX2dlbmVyaWNfY29tbWFuZCBzdHJ1Y3R1cmUgY29udGFpbmluZyB0aGUgcGFja2V0IHRvIHNlbmQuCisKKwlvdXRwdXRzOglub25lCisJICBjZHJvbV9nZW5lcmljX2NvbW1hbmQgc3RydWN0dXJlIGNvbnRhaW5pbmcgcmVzdWx0cy4KKworCWVycm9yIHJldHVybjoKKwkgIEVJTwkJY29tbWFuZCBmYWlsZWQuCisJICBFUEVSTQkJT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQsIGVpdGhlciBiZWNhdXNlIGEKKwkJCXdyaXRlIGNvbW1hbmQgd2FzIGF0dGVtcHRlZCBvbiBhIGRyaXZlIHdoaWNoCisJCQlpcyBvcGVuZWQgcmVhZC1vbmx5LCBvciBiZWNhdXNlIHRoZSBjb21tYW5kCisJCQlyZXF1aXJlcyBDQVBfU1lTX1JBV0lPCisJICBFSU5WQUwJY2djLmRhdGFfZGlyZWN0aW9uIG5vdCBzZXQKKworCisKK0NEUk9NX05FWFRfV1JJVEFCTEUJCWdldCBuZXh0IHdyaXRhYmxlIGJsb2NrCisKKwl1c2FnZToKKworCSAgbG9uZyBuZXh0OworCSAgaW9jdGwoZmQsIENEUk9NX05FWFRfV1JJVEFCTEUsICZuZXh0KTsKKworCWlucHV0czoJCW5vbmUKKworCW91dHB1dHM6CisJICBUaGUgbmV4dCB3cml0YWJsZSBibG9jay4KKworCW5vdGVzOgorCSAgSWYgdGhlIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgaW9jdGwgZGlyZWN0bHksIHRoZQorCSAgaW9jdGwgd2lsbCByZXR1cm4gQ0RST01fTEFTVF9XUklUVEVOICsgNy4KKworCisKK0NEUk9NX0xBU1RfV1JJVFRFTgkJZ2V0IGxhc3QgYmxvY2sgd3JpdHRlbiBvbiBkaXNjCisKKwl1c2FnZToKKworCSAgbG9uZyBsYXN0OworCSAgaW9jdGwoZmQsIENEUk9NX0xBU1RfV1JJVFRFTiwgJmxhc3QpOworCisJaW5wdXRzOgkJbm9uZQorCisJb3V0cHV0czoKKwkgIFRoZSBsYXN0IGJsb2NrIHdyaXR0ZW4gb24gZGlzYworCisJbm90ZXM6CisJICBJZiB0aGUgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBpb2N0bCBkaXJlY3RseSwgdGhlCisJICByZXN1bHQgaXMgZGVyaXZlZCBmcm9tIHRoZSBkaXNjJ3MgdGFibGUgb2YgY29udGVudHMuICBJZiB0aGUKKwkgIHRhYmxlIG9mIGNvbnRlbnRzIGNhbid0IGJlIHJlYWQsIHRoaXMgaW9jdGwgcmV0dXJucyBhbgorCSAgZXJyb3IuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lvY3RsL2hkaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9pb2N0bC9oZGlvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGViOThjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pb2N0bC9oZGlvLnR4dApAQCAtMCwwICsxLDEwNzEgQEAKKwkJU3VtbWFyeSBvZiBIRElPXyBpb2N0bCBjYWxscy4KKwkJPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisJCUVkd2FyZCBBLiBGYWxrIDxlZmFsa0Bnb29nbGUuY29tPgorCisJCU5vdmVtYmVyLCAyMDA0CisKK1RoaXMgZG9jdW1lbnQgYXR0ZW1wdHMgdG8gZGVzY3JpYmUgdGhlIGlvY3RsKDIpIGNhbGxzIHN1cHBvcnRlZCBieQordGhlIEhEL0lERSBsYXllci4gIFRoZXNlIGFyZSBieS1hbmQtbGFyZ2UgaW1wbGVtZW50ZWQgKGFzIG9mIExpbnV4IDIuNikKK2luIGRyaXZlcnMvaWRlL2lkZS5jIGFuZCBkcml2ZXJzL2Jsb2NrL3Njc2lfaW9jdGwuYworCitpb2N0bCB2YWx1ZXMgYXJlIGxpc3RlZCBpbiA8bGludXgvaGRyZWcuaD4uICBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoZXkKK2FyZSBhcyBmb2xsb3dzOgorCisgICAgaW9jdGxzIHRoYXQgcGFzcyBhcmd1bWVudCBwb2ludGVycyB0byB1c2VyIHNwYWNlOgorCisJSERJT19HRVRHRU8JCWdldCBkZXZpY2UgZ2VvbWV0cnkKKwlIRElPX0dFVF9VTk1BU0tJTlRSCWdldCBjdXJyZW50IHVubWFzayBzZXR0aW5nCisJSERJT19HRVRfTVVMVENPVU5UCWdldCBjdXJyZW50IElERSBibG9ja21vZGUgc2V0dGluZworCUhESU9fR0VUX1FETUEJCWdldCB1c2UtcWRtYSBmbGFnCisJSERJT19TRVRfWEZFUgkJc2V0IHRyYW5zZmVyIHJhdGUgdmlhIHByb2MKKwlIRElPX09CU09MRVRFX0lERU5USVRZCU9CU09MRVRFLCBETyBOT1QgVVNFCisJSERJT19HRVRfS0VFUFNFVFRJTkdTCWdldCBrZWVwLXNldHRpbmdzLW9uLXJlc2V0IGZsYWcKKwlIRElPX0dFVF8zMkJJVAkJZ2V0IGN1cnJlbnQgaW9fMzJiaXQgc2V0dGluZworCUhESU9fR0VUX05PV0VSUgkJZ2V0IGlnbm9yZS13cml0ZS1lcnJvciBmbGFnCisJSERJT19HRVRfRE1BCQlnZXQgdXNlLWRtYSBmbGFnCisJSERJT19HRVRfTklDRQkJZ2V0IG5pY2UgZmxhZ3MKKwlIRElPX0dFVF9JREVOVElUWQlnZXQgSURFIGlkZW50aWZpY2F0aW9uIGluZm8KKwlIRElPX0dFVF9XQ0FDSEUJCWdldCB3cml0ZSBjYWNoZSBtb2RlIG9ufG9mZgorCUhESU9fR0VUX0FDT1VTVElDCWdldCBhY291c3RpYyB2YWx1ZQorCUhESU9fR0VUX0FERFJFU1MJZ2V0IHNlY3RvciBhZGRyZXNzaW5nIG1vZGUKKwlIRElPX0dFVF9CVVNTVEFURQlnZXQgdGhlIGJ1cyBzdGF0ZSBvZiB0aGUgaHdpZgorCUhESU9fVFJJU1RBVEVfSFdJRglleGVjdXRlIGEgY2hhbm5lbCB0cmlzdGF0ZQorCUhESU9fRFJJVkVfUkVTRVQJZXhlY3V0ZSBhIGRldmljZSByZXNldAorCUhESU9fRFJJVkVfVEFTS0ZJTEUJZXhlY3V0ZSByYXcgdGFza2ZpbGUKKwlIRElPX0RSSVZFX1RBU0sJCWV4ZWN1dGUgdGFzayBhbmQgc3BlY2lhbCBkcml2ZSBjb21tYW5kCisJSERJT19EUklWRV9DTUQJCWV4ZWN1dGUgYSBzcGVjaWFsIGRyaXZlIGNvbW1hbmQKKwlIRElPX0RSSVZFX0NNRF9BRUIJSERJT19EUklWRV9UQVNLCisKKyAgICBpb2N0bHMgdGhhdCBwYXNzIG5vbi1wb2ludGVyIHZhbHVlczoKKworCUhESU9fU0VUX01VTFRDT1VOVAljaGFuZ2UgSURFIGJsb2NrbW9kZQorCUhESU9fU0VUX1VOTUFTS0lOVFIJcGVybWl0IG90aGVyIGlycXMgZHVyaW5nIEkvTworCUhESU9fU0VUX0tFRVBTRVRUSU5HUwlrZWVwIGlvY3RsIHNldHRpbmdzIG9uIHJlc2V0CisJSERJT19TRVRfMzJCSVQJCWNoYW5nZSBpb18zMmJpdCBmbGFncworCUhESU9fU0VUX05PV0VSUgkJY2hhbmdlIGlnbm9yZS13cml0ZS1lcnJvciBmbGFnCisJSERJT19TRVRfRE1BCQljaGFuZ2UgdXNlLWRtYSBmbGFnCisJSERJT19TRVRfUElPX01PREUJcmVjb25maWcgaW50ZXJmYWNlIHRvIG5ldyBzcGVlZAorCUhESU9fU0NBTl9IV0lGCQlyZWdpc3RlciBhbmQgKHJlKXNjYW4gaW50ZXJmYWNlCisJSERJT19TRVRfTklDRQkJc2V0IG5pY2UgZmxhZ3MKKwlIRElPX1VOUkVHSVNURVJfSFdJRgl1bnJlZ2lzdGVyIGludGVyZmFjZQorCUhESU9fU0VUX1dDQUNIRQkJY2hhbmdlIHdyaXRlIGNhY2hlIGVuYWJsZS1kaXNhYmxlCisJSERJT19TRVRfQUNPVVNUSUMJY2hhbmdlIGFjb3VzdGljIGJlaGF2aW9yCisJSERJT19TRVRfQlVTU1RBVEUJc2V0IHRoZSBidXMgc3RhdGUgb2YgdGhlIGh3aWYKKwlIRElPX1NFVF9RRE1BCQljaGFuZ2UgdXNlLXFkbWEgZmxhZworCUhESU9fU0VUX0FERFJFU1MJY2hhbmdlIGxiYSBhZGRyZXNzaW5nIG1vZGVzCisKKwlIRElPX1NFVF9JREVfU0NTSQlTZXQgc2NzaSBlbXVsYXRpb24gbW9kZSBvbi9vZmYKKwlIRElPX1NFVF9TQ1NJX0lERQlub3QgaW1wbGVtZW50ZWQgeWV0CisKKworVGhlIGluZm9ybWF0aW9uIHRoYXQgZm9sbG93cyB3YXMgZGV0ZXJtaW5lZCBmcm9tIHJlYWRpbmcga2VybmVsIHNvdXJjZQorY29kZS4gIEl0IGlzIGxpa2VseSB0aGF0IHNvbWUgY29ycmVjdGlvbnMgd2lsbCBiZSBtYWRlIG92ZXIgdGltZS4KKworCisKKworCisKKworR2VuZXJhbDoKKworCVVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLCBhbGwgaW9jdGwgY2FsbHMgcmV0dXJuIDAgb24gc3VjY2VzcworCWFuZCAtMSB3aXRoIGVycm5vIHNldCB0byBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBvbiBlcnJvci4KKworCVVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLCBhbGwgaW9jdGwgY2FsbHMgcmV0dXJuIC0xIGFuZCBzZXQKKwllcnJubyB0byBFRkFVTFQgb24gYSBmYWlsZWQgYXR0ZW1wdCB0byBjb3B5IGRhdGEgdG8gb3IgZnJvbSB1c2VyCisJYWRkcmVzcyBzcGFjZS4KKworCVVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLCBhbGwgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBjb25zdGFudHMKKwlhcmUgZGVmaW5lZCBpbiA8bGludXgvaGRyZWcuaD4KKworCisKK0hESU9fR0VUR0VPCQkJZ2V0IGRldmljZSBnZW9tZXRyeQorCisJdXNhZ2U6CisKKwkgIHN0cnVjdCBoZF9nZW9tZXRyeSBnZW9tOworCSAgaW9jdGwoZmQsIEhESU9fR0VUR0VPLCAmZ2VvbSk7CisKKworCWlucHV0czoJCW5vbmUKKworCW91dHB1dHM6CisKKwkgIGhkX2dlb21ldHJ5IHN0cnVjdHVyZSBjb250YWluaW5nOgorCisJICAgIGhlYWRzCW51bWJlciBvZiBoZWFkcworCSAgICBzZWN0b3JzCW51bWJlciBvZiBzZWN0b3JzL3RyYWNrCisJICAgIGN5bGluZGVycwludW1iZXIgb2YgY3lsaW5kZXJzLCBtb2QgNjU1MzYKKwkgICAgc3RhcnQJc3RhcnRpbmcgc2VjdG9yIG9mIHRoaXMgcGFydGl0aW9uLgorCisKKwllcnJvciByZXR1cm5zOgorCSAgRUlOVkFMCWlmIHRoZSBkZXZpY2UgaXMgbm90IGEgZGlzayBkcml2ZSBvciBmbG9wcHkgZHJpdmUsCisJICAJCW9yIGlmIHRoZSB1c2VyIHBhc3NlcyBhIG51bGwgcG9pbnRlcgorCisKKwlub3RlczoKKworCSAgTm90IHBhcnRpY3VsYXJseSB1c2VmdWwgd2l0aCBtb2Rlcm4gZGlzayBkcml2ZXMsIHdob3NlIGdlb21ldHJ5CisJICBpcyBhIHBvbGl0ZSBmaWN0aW9uIGFueXdheS4gIE1vZGVybiBkcml2ZXMgYXJlIGFkZHJlc3NlZAorCSAgcHVyZWx5IGJ5IHNlY3RvciBudW1iZXIgbm93YWRheXMgKGxiYSBhZGRyZXNzaW5nKSwgYW5kIHRoZQorCSAgZHJpdmUgZ2VvbWV0cnkgaXMgYW4gYWJzdHJhY3Rpb24gd2hpY2ggaXMgYWN0dWFsbHkgc3ViamVjdAorCSAgdG8gY2hhbmdlLiAgQ3VycmVudGx5IChhcyBvZiBOb3YgMjAwNCksIHRoZSBnZW9tZXRyeSB2YWx1ZXMKKwkgIGFyZSB0aGUgImJpb3MiIHZhbHVlcyAtLSBwcmVzdW1hYmx5IHRoZSB2YWx1ZXMgdGhlIGRyaXZlIGhhZAorCSAgd2hlbiBMaW51eCBmaXJzdCBib290ZWQuCisKKwkgIEluIGFkZGl0aW9uLCB0aGUgY3lsaW5kZXJzIGZpZWxkIG9mIHRoZSBoZF9nZW9tZXRyeSBpcyBhbgorCSAgdW5zaWduZWQgc2hvcnQsIG1lYW5pbmcgdGhhdCBvbiBtb3N0IGFyY2hpdGVjdHVyZXMsIHRoaXMKKwkgIGlvY3RsIHdpbGwgbm90IHJldHVybiBhIG1lYW5pbmdmdWwgdmFsdWUgb24gZHJpdmVzIHdpdGggbW9yZQorCSAgdGhhbiA2NTUzNSB0cmFja3MuCisKKwkgIFRoZSBzdGFydCBmaWVsZCBpcyB1bnNpZ25lZCBsb25nLCBtZWFuaW5nIHRoYXQgaXQgd2lsbCBub3QKKwkgIGNvbnRhaW4gYSBtZWFuaW5nZnVsIHZhbHVlIGZvciBkaXNrcyBvdmVyIDIxOSBHYiBpbiBzaXplLgorCisKKworCitIRElPX0dFVF9VTk1BU0tJTlRSCQlnZXQgY3VycmVudCB1bm1hc2sgc2V0dGluZworCisJdXNhZ2U6CisKKwkgIGxvbmcgdmFsOworCSAgaW9jdGwoZmQsIEhESU9fR0VUX1VOTUFTS0lOVFIsICZ2YWwpOworCisJaW5wdXRzOgkJbm9uZQorCisJb3V0cHV0czoKKwkgIFRoZSB2YWx1ZSBvZiB0aGUgZHJpdmUncyBjdXJyZW50IHVubWFzayBzZXR0aW5nCisKKworCitIRElPX1NFVF9VTk1BU0tJTlRSCQlwZXJtaXQgb3RoZXIgaXJxcyBkdXJpbmcgSS9PCisKKwl1c2FnZToKKworCSAgdW5zaWduZWQgbG9uZyB2YWw7CisJICBpb2N0bChmZCwgSERJT19TRVRfVU5NQVNLSU5UUiwgdmFsKTsKKworCWlucHV0czoKKwkgIE5ldyB2YWx1ZSBmb3IgdW5tYXNrIGZsYWcKKworCW91dHB1dHM6CW5vbmUKKworCWVycm9yIHJldHVybjoKKwkgIEVJTlZBTAkoYmRldiAhPSBiZGV2LT5iZF9jb250YWlucykgKG5vdCBzdXJlIHdoYXQgdGhpcyBtZWFucykKKwkgIEVBQ0NFUwlBY2Nlc3MgZGVuaWVkOiAgcmVxdWlyZXMgQ0FQX1NZU19BRE1JTgorCSAgRUlOVkFMCXZhbHVlIG91dCBvZiByYW5nZSBbMCAxXQorCSAgRUJVU1kJCUNvbnRyb2xsZXIgYnVzeQorCisKKworCitIRElPX0dFVF9NVUxUQ09VTlQJCWdldCBjdXJyZW50IElERSBibG9ja21vZGUgc2V0dGluZworCisJdXNhZ2U6CisKKwkgIGxvbmcgdmFsOworCSAgaW9jdGwoZmQsIEhESU9fR0VUX01VTFRDT1VOVCwgJnZhbCk7CisKKwlpbnB1dHM6CQlub25lCisKKwlvdXRwdXRzOgorCSAgVGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50IElERSBibG9jayBtb2RlIHNldHRpbmcuICBUaGlzCisJICBjb250cm9scyBob3cgbWFueSBzZWN0b3JzIHRoZSBkcml2ZSB3aWxsIHRyYW5zZmVyIHBlcgorCSAgaW50ZXJydXB0LgorCisKKworSERJT19TRVRfTVVMVENPVU5UCQljaGFuZ2UgSURFIGJsb2NrbW9kZQorCisJdXNhZ2U6CisKKwkgIGludCB2YWw7CisJICBpb2N0bChmZCwgSERJT19TRVRfTVVMVENPVU5ULCB2YWwpOworCisJaW5wdXRzOgorCSAgTmV3IHZhbHVlIGZvciBJREUgYmxvY2sgbW9kZSBzZXR0aW5nLiAgVGhpcyBjb250cm9scyBob3cgbWFueQorCSAgc2VjdG9ycyB0aGUgZHJpdmUgd2lsbCB0cmFuc2ZlciBwZXIgaW50ZXJydXB0LgorCisJb3V0cHV0czoJbm9uZQorCisJZXJyb3IgcmV0dXJuOgorCSAgRUlOVkFMCShiZGV2ICE9IGJkZXYtPmJkX2NvbnRhaW5zKSAobm90IHN1cmUgd2hhdCB0aGlzIG1lYW5zKQorCSAgRUFDQ0VTCUFjY2VzcyBkZW5pZWQ6ICByZXF1aXJlcyBDQVBfU1lTX0FETUlOCisJICBFSU5WQUwJdmFsdWUgb3V0IG9mIHJhbmdlIHN1cHBvcnRlZCBieSBkaXNrLgorCSAgRUJVU1kJCUNvbnRyb2xsZXIgYnVzeSBvciBibG9ja21vZGUgYWxyZWFkeSBzZXQuCisJICBFSU8JCURyaXZlIGRpZCBub3QgYWNjZXB0IG5ldyBibG9jayBtb2RlLgorCisJbm90ZXM6CisKKwkgIFNvdXJjZSBjb2RlIGNvbW1lbnRzIHJlYWQ6CisKKwkgICAgVGhpcyBpcyB0aWdodGx5IHdvdmVuIGludG8gdGhlIGRyaXZlci0+ZG9fc3BlY2lhbCBjYW5ub3QKKwkgICAgdG91Y2guICBET04nVCBkbyBpdCBhZ2FpbiB1bnRpbCBhIHRvdGFsIHBlcnNvbmFsaXR5IHJld3JpdGUKKwkgICAgaXMgY29tbWl0dGVkLgorCisJICBJZiBibG9ja21vZGUgaGFzIGFscmVhZHkgYmVlbiBzZXQsIHRoaXMgaW9jdGwgd2lsbCBmYWlsIHdpdGgKKwkgIEVCVVNZCisKKworCitIRElPX0dFVF9RRE1BCQkJZ2V0IHVzZS1xZG1hIGZsYWcKKworCU5vdCBpbXBsZW1lbnRlZCwgYXMgb2YgMi42LjguMQorCisKKworSERJT19TRVRfWEZFUgkJCXNldCB0cmFuc2ZlciByYXRlIHZpYSBwcm9jCisKKwlOb3QgaW1wbGVtZW50ZWQsIGFzIG9mIDIuNi44LjEKKworCisKK0hESU9fT0JTT0xFVEVfSURFTlRJVFkJCU9CU09MRVRFLCBETyBOT1QgVVNFCisKKwlTYW1lIGFzIEhESU9fR0VUX0lERU5USVRZIChzZWUgYmVsb3cpLCBleGNlcHQgdGhhdCBpdCBvbmx5CisJcmV0dXJucyB0aGUgZmlyc3QgMTQyIGJ5dGVzIG9mIGRyaXZlIGlkZW50aXR5IGluZm9ybWF0aW9uLgorCisKKworSERJT19HRVRfSURFTlRJVFkJCWdldCBJREUgaWRlbnRpZmljYXRpb24gaW5mbworCisJdXNhZ2U6CisKKwkgIHVuc2lnbmVkIGNoYXIgaWRlbnRpdHlbNTEyXTsKKwkgIGlvY3RsKGZkLCBIRElPX0dFVF9JREVOVElUWSwgaWRlbnRpdHkpOworCisJaW5wdXRzOgkJbm9uZQorCisJb3V0cHV0czoKKworCSAgQVRBIGRyaXZlIGlkZW50aXR5IGluZm9ybWF0aW9uLiAgRm9yIGZ1bGwgZGVzY3JpcHRpb24sIHNlZQorCSAgdGhlIElERU5USUZZIERFVklDRSBhbmQgSURFTlRJRlkgUEFDS0VUIERFVklDRSBjb21tYW5kcyBpbgorCSAgdGhlIEFUQSBzcGVjaWZpY2F0aW9uLgorCisJZXJyb3IgcmV0dXJuczoKKwkgIEVJTlZBTAkoYmRldiAhPSBiZGV2LT5iZF9jb250YWlucykgKG5vdCBzdXJlIHdoYXQgdGhpcyBtZWFucykKKwkgIEVOT01TRwlJREVOVElGWSBERVZJQ0UgaW5mb3JtYXRpb24gbm90IGF2YWlsYWJsZQorCisJbm90ZXM6CisKKwkgIFJldHVybnMgaW5mb3JtYXRpb24gdGhhdCB3YXMgb2J0YWluZWQgd2hlbiB0aGUgZHJpdmUgd2FzCisJICBwcm9iZWQuICBTb21lIG9mIHRoaXMgaW5mb3JtYXRpb24gaXMgc3ViamVjdCB0byBjaGFuZ2UsIGFuZAorCSAgdGhpcyBpb2N0bCBkb2VzIG5vdCByZS1wcm9iZSB0aGUgZHJpdmUgdG8gdXBkYXRlIHRoZQorCSAgaW5mb3JtYXRpb24uCisKKwkgIFRoaXMgaW5mb3JtYXRpb24gaXMgYWxzbyBhdmFpbGFibGUgZnJvbSAvcHJvYy9pZGUvaGRYL2lkZW50aWZ5CisKKworCitIRElPX0dFVF9LRUVQU0VUVElOR1MJCWdldCBrZWVwLXNldHRpbmdzLW9uLXJlc2V0IGZsYWcKKworCXVzYWdlOgorCisJICBsb25nIHZhbDsKKwkgIGlvY3RsKGZkLCBIRElPX0dFVF9LRUVQU0VUVElOR1MsICZ2YWwpOworCisJaW5wdXRzOgkJbm9uZQorCisJb3V0cHV0czoKKwkgIFRoZSB2YWx1ZSBvZiB0aGUgY3VycmVudCAia2VlcCBzZXR0aW5ncyIgZmxhZworCisJbm90ZXM6CisKKwkgIFdoZW4gc2V0LCBpbmRpY2F0ZXMgdGhhdCBrZXJuZWwgc2hvdWxkIHJlc3RvcmUgc2V0dGluZ3MKKwkgIGFmdGVyIGEgZHJpdmUgcmVzZXQuCisKKworCitIRElPX1NFVF9LRUVQU0VUVElOR1MJCWtlZXAgaW9jdGwgc2V0dGluZ3Mgb24gcmVzZXQKKworCXVzYWdlOgorCisJICBsb25nIHZhbDsKKwkgIGlvY3RsKGZkLCBIRElPX1NFVF9LRUVQU0VUVElOR1MsIHZhbCk7CisKKwlpbnB1dHM6CisJICBOZXcgdmFsdWUgZm9yIGtlZXBfc2V0dGluZ3MgZmxhZworCisJb3V0cHV0czoJbm9uZQorCisJZXJyb3IgcmV0dXJuOgorCSAgRUlOVkFMCShiZGV2ICE9IGJkZXYtPmJkX2NvbnRhaW5zKSAobm90IHN1cmUgd2hhdCB0aGlzIG1lYW5zKQorCSAgRUFDQ0VTCUFjY2VzcyBkZW5pZWQ6ICByZXF1aXJlcyBDQVBfU1lTX0FETUlOCisJICBFSU5WQUwJdmFsdWUgb3V0IG9mIHJhbmdlIFswIDFdCisJICBFQlVTWQkJQ29udHJvbGxlciBidXN5CisKKworCitIRElPX0dFVF8zMkJJVAkJCWdldCBjdXJyZW50IGlvXzMyYml0IHNldHRpbmcKKworCXVzYWdlOgorCisJICBsb25nIHZhbDsKKwkgIGlvY3RsKGZkLCBIRElPX0dFVF8zMkJJVCwgJnZhbCk7CisKKwlpbnB1dHM6CQlub25lCisKKwlvdXRwdXRzOgorCSAgVGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50IGlvXzMyYml0IHNldHRpbmcKKworCW5vdGVzOgorCisJICAwPTE2LWJpdCwgMT0zMi1iaXQsIDIsMyA9IDMyYml0K3N5bmMKKworCisKK0hESU9fR0VUX05PV0VSUgkJCWdldCBpZ25vcmUtd3JpdGUtZXJyb3IgZmxhZworCisJdXNhZ2U6CisKKwkgIGxvbmcgdmFsOworCSAgaW9jdGwoZmQsIEhESU9fR0VUX05PV0VSUiwgJnZhbCk7CisKKwlpbnB1dHM6CQlub25lCisKKwlvdXRwdXRzOgorCSAgVGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50IGlnbm9yZS13cml0ZS1lcnJvciBmbGFnCisKKworCitIRElPX0dFVF9ETUEJCQlnZXQgdXNlLWRtYSBmbGFnCisKKwl1c2FnZToKKworCSAgbG9uZyB2YWw7CisJICBpb2N0bChmZCwgSERJT19HRVRfRE1BLCAmdmFsKTsKKworCWlucHV0czoJCW5vbmUKKworCW91dHB1dHM6CisJICBUaGUgdmFsdWUgb2YgdGhlIGN1cnJlbnQgdXNlLWRtYSBmbGFnCisKKworCitIRElPX0dFVF9OSUNFCQkJZ2V0IG5pY2UgZmxhZ3MKKworCXVzYWdlOgorCisJICBsb25nIG5pY2U7CisJICBpb2N0bChmZCwgSERJT19HRVRfTklDRSwgJm5pY2UpOworCisJaW5wdXRzOgkJbm9uZQorCisJb3V0cHV0czoKKworCSAgVGhlIGRyaXZlJ3MgIm5pY2UiIHZhbHVlcy4KKworCW5vdGVzOgorCisJICBQZXItZHJpdmUgZmxhZ3Mgd2hpY2ggZGV0ZXJtaW5lIHdoZW4gdGhlIHN5c3RlbSB3aWxsIGdpdmUgbW9yZQorCSAgYmFuZHdpZHRoIHRvIG90aGVyIGRldmljZXMgc2hhcmluZyB0aGUgc2FtZSBJREUgYnVzLgorCSAgU2VlIDxsaW51eC9oZHJlZy5oPiwgbmVhciBzeW1ib2wgSURFX05JQ0VfRFNDX09WRVJMQVAuCisKKworCisKK0hESU9fU0VUX05JQ0UJCQlzZXQgbmljZSBmbGFncworCisJdXNhZ2U6CisKKwkgIHVuc2lnbmVkIGxvbmcgbmljZTsKKwkgIC4uLgorCSAgaW9jdGwoZmQsIEhESU9fU0VUX05JQ0UsIG5pY2UpOworCisJaW5wdXRzOgorCSAgYml0bWFzayBvZiBuaWNlIGZsYWdzLgorCisJb3V0cHV0czoJbm9uZQorCisJZXJyb3IgcmV0dXJuczoKKwkgIEVBQ0NFUwlBY2Nlc3MgZGVuaWVkOiAgcmVxdWlyZXMgQ0FQX1NZU19BRE1JTgorCSAgRVBFUk0JCUZsYWdzIG90aGVyIHRoYW4gRFNDX09WRVJMQVAgYW5kIE5JQ0VfMSBzZXQuCisJICBFUEVSTQkJRFNDX09WRVJMQVAgc3BlY2lmaWVkIGJ1dCBub3Qgc3VwcG9ydGVkIGJ5IGRyaXZlCisKKwlub3RlczoKKworCSAgVGhpcyBpb2N0bCBzZXRzIHRoZSBEU0NfT1ZFUkxBUCBhbmQgTklDRV8xIGZsYWdzIGZyb20gdmFsdWVzCisJICBwcm92aWRlZCBieSB0aGUgdXNlci4KKworCSAgTmljZSBmbGFncyBhcmUgbGlzdGVkIGluIDxsaW51eC9oZHJlZy5oPiwgc3RhcnRpbmcgd2l0aAorCSAgSURFX05JQ0VfRFNDX09WRVJMQVAuICBUaGVzZSB2YWx1ZXMgcmVwcmVzZW50IHNoaWZ0cy4KKworCisKKworCitIRElPX0dFVF9XQ0FDSEUJCQlnZXQgd3JpdGUgY2FjaGUgbW9kZSBvbnxvZmYKKworCXVzYWdlOgorCisJICBsb25nIHZhbDsKKwkgIGlvY3RsKGZkLCBIRElPX0dFVF9XQ0FDSEUsICZ2YWwpOworCisJaW5wdXRzOgkJbm9uZQorCisJb3V0cHV0czoKKwkgIFRoZSB2YWx1ZSBvZiB0aGUgY3VycmVudCB3cml0ZSBjYWNoZSBtb2RlCisKKworCitIRElPX0dFVF9BQ09VU1RJQwkJZ2V0IGFjb3VzdGljIHZhbHVlCisKKwl1c2FnZToKKworCSAgbG9uZyB2YWw7CisJICBpb2N0bChmZCwgSERJT19HRVRfQUNPVVNUSUMsICZ2YWwpOworCisJaW5wdXRzOgkJbm9uZQorCisJb3V0cHV0czoKKwkgIFRoZSB2YWx1ZSBvZiB0aGUgY3VycmVudCBhY291c3RpYyBzZXR0aW5ncworCisJbm90ZXM6CisKKwkgIFNlZSBIRElPX1NFVF9BQ09VU1RJQworCisKKworSERJT19HRVRfQUREUkVTUworCisJdXNhZ2U6CisKKwkgIGxvbmcgdmFsOworCSAgaW9jdGwoZmQsIEhESU9fR0VUX0FERFJFU1MsICZ2YWwpOworCisJaW5wdXRzOgkJbm9uZQorCisJb3V0cHV0czoKKwkgIFRoZSB2YWx1ZSBvZiB0aGUgY3VycmVudCBhZGRyZXNzaW5nIG1vZGU6CisJICAgIDAgPSAyOC1iaXQKKwkgICAgMSA9IDQ4LWJpdAorCSAgICAyID0gNDgtYml0IGRvaW5nIDI4LWJpdAorCSAgICAzID0gNjQtYml0CisKKworCitIRElPX0dFVF9CVVNTVEFURQkJZ2V0IHRoZSBidXMgc3RhdGUgb2YgdGhlIGh3aWYKKworCXVzYWdlOgorCisJICBsb25nIHN0YXRlOworCSAgaW9jdGwoZmQsIEhESU9fU0NBTl9IV0lGLCAmc3RhdGUpOworCisJaW5wdXRzOgkJbm9uZQorCisJb3V0cHV0czoKKwkgIEN1cnJlbnQgcG93ZXIgc3RhdGUgb2YgdGhlIElERSBidXMuICBPbmUgb2YgQlVTU1RBVEVfT0ZGLAorCSAgQlVTU1RBVEVfT04sIG9yIEJVU1NUQVRFX1RSSVNUQVRFCisKKwllcnJvciByZXR1cm5zOgorCSAgRUFDQ0VTCUFjY2VzcyBkZW5pZWQ6ICByZXF1aXJlcyBDQVBfU1lTX0FETUlOCisKKworCisKK0hESU9fU0VUX0JVU1NUQVRFCQlzZXQgdGhlIGJ1cyBzdGF0ZSBvZiB0aGUgaHdpZgorCisJdXNhZ2U6CisKKwkgIGludCBzdGF0ZTsKKwkgIC4uLgorCSAgaW9jdGwoZmQsIEhESU9fU0NBTl9IV0lGLCBzdGF0ZSk7CisKKwlpbnB1dHM6CisJICBEZXNpcmVkIElERSBwb3dlciBzdGF0ZS4gIE9uZSBvZiBCVVNTVEFURV9PRkYsIEJVU1NUQVRFX09OLAorCSAgb3IgQlVTU1RBVEVfVFJJU1RBVEUKKworCW91dHB1dHM6CW5vbmUKKworCWVycm9yIHJldHVybnM6CisJICBFQUNDRVMJQWNjZXNzIGRlbmllZDogIHJlcXVpcmVzIENBUF9TWVNfUkFXSU8KKwkgIEVPUE5PVFNVUFAJSGFyZHdhcmUgaW50ZXJmYWNlIGRvZXMgbm90IHN1cHBvcnQgYnVzIHBvd2VyIGNvbnRyb2wKKworCisKKworSERJT19UUklTVEFURV9IV0lGCQlleGVjdXRlIGEgY2hhbm5lbCB0cmlzdGF0ZQorCisJTm90IGltcGxlbWVudGVkLCBhcyBvZiAyLjYuOC4xLiAgU2VlIEhESU9fU0VUX0JVU1NUQVRFCisKKworCitIRElPX0RSSVZFX1JFU0VUCQlleGVjdXRlIGEgZGV2aWNlIHJlc2V0CisKKwl1c2FnZToKKworCSAgaW50IGFyZ3NbM10KKwkgIC4uLgorCSAgaW9jdGwoZmQsIEhESU9fRFJJVkVfUkVTRVQsIGFyZ3MpOworCisJaW5wdXRzOgkJbm9uZQorCisJb3V0cHV0czoJbm9uZQorCisJZXJyb3IgcmV0dXJuczoKKwkgIEVBQ0NFUwlBY2Nlc3MgZGVuaWVkOiAgcmVxdWlyZXMgQ0FQX1NZU19BRE1JTgorCSAgRU5YSU8JCU5vIHN1Y2ggZGV2aWNlOglwaHkgZGVhZCBvciBjdGxfYWRkciA9PSAwCisJICBFSU8JCUkvTyBlcnJvcjoJcmVzZXQgdGltZWQgb3V0IG9yIGhhcmR3YXJlIGVycm9yCisKKwlub3RlczoKKworCSAgRXhlY3V0ZSBhIHJlc2V0IG9uIHRoZSBkZXZpY2UgYXMgc29vbiBhcyB0aGUgY3VycmVudCBJTworCSAgb3BlcmF0aW9uIGhhcyBjb21wbGV0ZWQuCisKKwkgIEV4ZWN1dGVzIGFuIEFUQVBJIHNvZnQgcmVzZXQgaWYgYXBwbGljYWJsZSwgb3RoZXJ3aXNlCisJICBleGVjdXRlcyBhbiBBVEEgc29mdCByZXNldCBvbiB0aGUgY29udHJvbGxlci4KKworCisKK0hESU9fRFJJVkVfVEFTS0ZJTEUJCWV4ZWN1dGUgcmF3IHRhc2tmaWxlCisKKwlOb3RlOiAgSWYgeW91IGRvbid0IGhhdmUgYSBjb3B5IG9mIHRoZSBBTlNJIEFUQSBzcGVjaWZpY2F0aW9uCisJaGFuZHksIHlvdSBzaG91bGQgcHJvYmFibHkgaWdub3JlIHRoaXMgaW9jdGwuCisKKwlFeGVjdXRlIGFuIEFUQSBkaXNrIGNvbW1hbmQgZGlyZWN0bHkgYnkgd3JpdGluZyB0aGUgInRhc2tmaWxlIgorCXJlZ2lzdGVycyBvZiB0aGUgZHJpdmUuICBSZXF1aXJlcyBBRE1JTiBhbmQgUkFXSU8gYWNjZXNzCisJcHJpdmlsZWdlcy4KKworCXVzYWdlOgorCisJICBzdHJ1Y3QgeworCSAgICBpZGVfdGFza19yZXF1ZXN0X3QgcmVxX3Rhc2s7CisJICAgIHU4IG91dGJ1ZltPVVRQVVRfU0laRV07CisJICAgIHU4IGluYnVmW0lOUFVUX1NJWkVdOworCSAgfSB0YXNrOworCSAgbWVtc2V0KCZ0YXNrLnJlcV90YXNrLCAwLCBzaXplb2YodGFzay5yZXFfdGFzaykpOworCSAgdGFzay5yZXFfdGFzay5vdXRfc2l6ZSA9IHNpemVvZih0YXNrLm91dGJ1Zik7CisJICB0YXNrLnJlcV90YXNrLmluX3NpemUgPSBzaXplb2YodGFzay5pbmJ1Zik7CisJICAuLi4KKwkgIGlvY3RsKGZkLCBIRElPX0RSSVZFX1RBU0tGSUxFLCAmdGFzayk7CisJICAuLi4KKworCWlucHV0czoKKworCSAgKFNlZSBiZWxvdyBmb3IgZGV0YWlscyBvbiBtZW1vcnkgYXJlYSBwYXNzZWQgdG8gaW9jdGwuKQorCisJICBpb19wb3J0c1s4XQl2YWx1ZXMgdG8gYmUgd3JpdHRlbiB0byB0YXNrZmlsZSByZWdpc3RlcnMKKwkgIGhvYl9wb3J0c1s4XQloaWdoLW9yZGVyIGJ5dGVzLCBmb3IgZXh0ZW5kZWQgY29tbWFuZHMuCisJICBvdXRfZmxhZ3MJZmxhZ3MgaW5kaWNhdGluZyB3aGljaCByZWdpc3RlcnMgYXJlIHZhbGlkCisJICBpbl9mbGFncwlmbGFncyBpbmRpY2F0aW5nIHdoaWNoIHJlZ2lzdGVycyBzaG91bGQgYmUgcmV0dXJuZWQKKwkgIGRhdGFfcGhhc2UJc2VlIGJlbG93CisJICByZXFfY21kCWNvbW1hbmQgdHlwZSB0byBiZSBleGVjdXRlZAorCSAgb3V0X3NpemUJc2l6ZSBvZiBvdXRwdXQgYnVmZmVyCisJICBvdXRidWYJYnVmZmVyIG9mIGRhdGEgdG8gYmUgdHJhbnNtaXR0ZWQgdG8gZGlzaworCSAgaW5idWYJCWJ1ZmZlciBvZiBkYXRhIHRvIGJlIHJlY2VpdmVkIGZyb20gZGlzayAoc2VlIFsxXSkKKworCW91dHB1dHM6CisKKwkgIGlvX3BvcnRzW10JdmFsdWVzIHJldHVybmVkIGluIHRoZSB0YXNrZmlsZSByZWdpc3RlcnMKKwkgIGhvYl9wb3J0c1tdCWhpZ2gtb3JkZXIgYnl0ZXMsIGZvciBleHRlbmRlZCBjb21tYW5kcy4KKwkgIG91dF9mbGFncwlmbGFncyBpbmRpY2F0aW5nIHdoaWNoIHJlZ2lzdGVycyBhcmUgdmFsaWQgKHNlZSBbMl0pCisJICBpbl9mbGFncwlmbGFncyBpbmRpY2F0aW5nIHdoaWNoIHJlZ2lzdGVycyBzaG91bGQgYmUgcmV0dXJuZWQKKwkgIG91dGJ1ZglidWZmZXIgb2YgZGF0YSB0byBiZSB0cmFuc21pdHRlZCB0byBkaXNrIChzZWUgWzFdKQorCSAgaW5idWYJCWJ1ZmZlciBvZiBkYXRhIHRvIGJlIHJlY2VpdmVkIGZyb20gZGlzaworCisJZXJyb3IgcmV0dXJuczoKKwkgIEVBQ0NFUwlDQVBfU1lTX0FETUlOIG9yIENBUF9TWVNfUkFXSU8gcHJpdmlsZWdlIG5vdCBzZXQuCisJICBFTk9NU0cJRGV2aWNlIGlzIG5vdCBhIGRpc2sgZHJpdmUuCisJICBFTk9NRU0JVW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGFzaworCSAgRUZBVUxUCXJlcV9jbWQgPT0gVEFTS0ZJTEVfSU5fT1VUIChub3QgaW1wbGVtZW50ZWQgYXMgb2YgMi42LjgpCisJICBFUEVSTQkJcmVxX2NtZCA9PSBUQVNLRklMRV9NVUxUSV9PVVQgYW5kIGRyaXZlCisJICAJCW11bHRpLWNvdW50IG5vdCB5ZXQgc2V0LgorCSAgRUlPCQlEcml2ZSBmYWlsZWQgdGhlIGNvbW1hbmQuCisKKwlub3RlczoKKworCSAgWzFdIFJFQUQgVEhFIEZPTExPV0lORyBOT1RFUyAqQ0FSRUZVTExZKi4gIFRISVMgSU9DVEwgSVMKKwkgIEZVTEwgT0YgR09UQ0hBUy4gIEV4dHJlbWUgY2F1dGlvbiBzaG91bGQgYmUgdXNlZCB3aXRoIHVzaW5nCisJICB0aGlzIGlvY3RsLiAgQSBtaXN0YWtlIGNhbiBlYXNpbHkgY29ycnVwdCBkYXRhIG9yIGhhbmcgdGhlCisJICBzeXN0ZW0uCisKKwkgIFsyXSBCb3RoIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGJ1ZmZlcnMgYXJlIGNvcGllZCBmcm9tIHRoZQorCSAgdXNlciBhbmQgd3JpdHRlbiBiYWNrIHRvIHRoZSB1c2VyLCBldmVuIHdoZW4gbm90IHVzZWQuCisKKwkgIFszXSBJZiBvbmUgb3IgbW9yZSBiaXRzIGFyZSBzZXQgaW4gb3V0X2ZsYWdzIGFuZCBpbl9mbGFncyBpcworCSAgemVybywgdGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIHVzZWQgZm9yIGluX2ZsYWdzLmFsbCBhbmQKKwkgIHdyaXR0ZW4gYmFjayBpbnRvIGluX2ZsYWdzIG9uIGNvbXBsZXRpb24uCisKKwkgICAqIElERV9UQVNLRklMRV9TVERfSU5fRkxBR1MgfCAoSURFX0hPQl9TVERfSU5fRkxBR1MgPDwgOCkKKwkgICAgIGlmIExCQTQ4IGFkZHJlc3NpbmcgaXMgZW5hYmxlZCBmb3IgdGhlIGRyaXZlCisJICAgKiBJREVfVEFTS0ZJTEVfU1REX0lOX0ZMQUdTCisJICAgICBpZiBDSFMvTEJBMjgKKworCSAgVGhlIGFzc29jaWF0aW9uIGJldHdlZW4gaW5fZmxhZ3MuYWxsIGFuZCBlYWNoIGVuYWJsZQorCSAgYml0ZmllbGQgZmxpcHMgZGVwZW5kaW5nIG9uIGVuZGlhbm5lc3M7IGZvcnR1bmF0ZWx5LCBUQVNLRklMRQorCSAgb25seSB1c2VzIGluZmxhZ3MuYi5kYXRhIGJpdCBhbmQgaWdub3JlcyBhbGwgb3RoZXIgYml0cy4KKwkgIFRoZSBlbmQgcmVzdWx0IGlzIHRoYXQsIG9uIGFueSBlbmRpYW4gbWFjaGluZXMsIGl0IGhhcyBubworCSAgZWZmZWN0IG90aGVyIHRoYW4gbW9kaWZ5aW5nIGluX2ZsYWdzIG9uIGNvbXBsZXRpb24uCisKKwkgIFs0XSBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBTRUxFQ1QgaXMgKDB4YTB8REVWX2JpdHxMQkFfYml0KQorCSAgZXhjZXB0IGZvciBmb3VyIGRyaXZlcyBwZXIgcG9ydCBjaGlwc2V0cy4gIEZvciBmb3VyIGRyaXZlcworCSAgcGVyIHBvcnQgY2hpcHNldHMsIGl0J3MgKDB4YTB8REVWX2JpdHxMQkFfYml0KSBmb3IgdGhlIGZpcnN0CisJICBwYWlyIGFuZCAoMHg4MHxERVZfYml0fExCQV9iaXQpIGZvciB0aGUgc2Vjb25kIHBhaXIuCisKKwkgIFs1XSBUaGUgYXJndW1lbnQgdG8gdGhlIGlvY3RsIGlzIGEgcG9pbnRlciB0byBhIHJlZ2lvbiBvZgorCSAgbWVtb3J5IGNvbnRhaW5pbmcgYSBpZGVfdGFza19yZXF1ZXN0X3Qgc3RydWN0dXJlLCBmb2xsb3dlZAorCSAgYnkgYW4gb3B0aW9uYWwgYnVmZmVyIG9mIGRhdGEgdG8gYmUgdHJhbnNtaXR0ZWQgdG8gdGhlCisJICBkcml2ZSwgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgYnVmZmVyIHRvIHJlY2VpdmUgZGF0YSBmcm9tCisJICB0aGUgZHJpdmUuCisKKwkgIENvbW1hbmQgaXMgcGFzc2VkIHRvIHRoZSBkaXNrIGRyaXZlIHZpYSB0aGUgaWRlX3Rhc2tfcmVxdWVzdF90CisJICBzdHJ1Y3R1cmUsIHdoaWNoIGNvbnRhaW5zIHRoZXNlIGZpZWxkczoKKworCSAgICBpb19wb3J0c1s4XQkJdmFsdWVzIGZvciB0aGUgdGFza2ZpbGUgcmVnaXN0ZXJzCisJICAgIGhvYl9wb3J0c1s4XQloaWdoLW9yZGVyIGJ5dGVzLCBmb3IgZXh0ZW5kZWQgY29tbWFuZHMKKwkgICAgb3V0X2ZsYWdzCQlmbGFncyBpbmRpY2F0aW5nIHdoaWNoIGVudHJpZXMgaW4gdGhlCisJICAgIAkJCWlvX3BvcnRzW10gYW5kIGhvYl9wb3J0c1tdIGFycmF5cworCQkJCWNvbnRhaW4gdmFsaWQgdmFsdWVzLiAgVHlwZSBpZGVfcmVnX3ZhbGlkX3QuCisJICAgIGluX2ZsYWdzCQlmbGFncyBpbmRpY2F0aW5nIHdoaWNoIGVudHJpZXMgaW4gdGhlCisJICAgIAkJCWlvX3BvcnRzW10gYW5kIGhvYl9wb3J0c1tdIGFycmF5cworCQkJCWFyZSBleHBlY3RlZCB0byBjb250YWluIHZhbGlkIHZhbHVlcworCQkJCW9uIHJldHVybi4KKwkgICAgZGF0YV9waGFzZQkJU2VlIGJlbG93CisJICAgIHJlcV9jbWQJCUNvbW1hbmQgdHlwZSwgc2VlIGJlbG93CisJICAgIG91dF9zaXplCQlvdXRwdXQgKHVzZXItPmRyaXZlKSBidWZmZXIgc2l6ZSwgYnl0ZXMKKwkgICAgaW5fc2l6ZQkJaW5wdXQgKGRyaXZlLT51c2VyKSBidWZmZXIgc2l6ZSwgYnl0ZXMKKworCSAgV2hlbiBvdXRfZmxhZ3MgaXMgemVybywgdGhlIGZvbGxvd2luZyByZWdpc3RlcnMgYXJlIGxvYWRlZC4KKworCSAgICBIT0JfRkVBVFVSRQkJSWYgdGhlIGRyaXZlIHN1cHBvcnRzIExCQTQ4CisJICAgIEhPQl9OU0VDVE9SCQlJZiB0aGUgZHJpdmUgc3VwcG9ydHMgTEJBNDgKKwkgICAgSE9CX1NFQ1RPUgkJSWYgdGhlIGRyaXZlIHN1cHBvcnRzIExCQTQ4CisJICAgIEhPQl9MQ1lMCQlJZiB0aGUgZHJpdmUgc3VwcG9ydHMgTEJBNDgKKwkgICAgSE9CX0hDWUwJCUlmIHRoZSBkcml2ZSBzdXBwb3J0cyBMQkE0OAorCSAgICBGRUFUVVJFCisJICAgIE5TRUNUT1IKKwkgICAgU0VDVE9SCisJICAgIExDWUwKKwkgICAgSENZTAorCSAgICBTRUxFQ1QJCUZpcnN0LCBtYXNrZWQgd2l0aCAweEUwIGlmIExCQTQ4LCAweEVGCisJCQkJb3RoZXJ3aXNlOyB0aGVuLCBvcidlZCB3aXRoIHRoZSBkZWZhdWx0CisJCQkJdmFsdWUgb2YgU0VMRUNULgorCisJICBJZiBhbnkgYml0IGluIG91dF9mbGFncyBpcyBzZXQsIHRoZSBmb2xsb3dpbmcgcmVnaXN0ZXJzIGFyZSBsb2FkZWQuCisKKwkgICAgSE9CX0RBVEEJCUlmIG91dF9mbGFncy5iLmRhdGEgaXMgc2V0LiAgSE9CX0RBVEEgd2lsbAorCQkJCXRyYXZlbCBvbiBERDgtREQxNSBvbiBsaXR0bGUgZW5kaWFuIG1hY2hpbmVzCisJCQkJYW5kIG9uIEREMC1ERDcgb24gYmlnIGVuZGlhbiBtYWNoaW5lcy4KKwkgICAgREFUQQkJSWYgb3V0X2ZsYWdzLmIuZGF0YSBpcyBzZXQuICBEQVRBIHdpbGwKKwkJCQl0cmF2ZWwgb24gREQwLURENyBvbiBsaXR0bGUgZW5kaWFuIG1hY2hpbmVzCisJCQkJYW5kIG9uIEREOC1ERDE1IG9uIGJpZyBlbmRpYW4gbWFjaGluZXMuCisJICAgIEhPQl9OU0VDVE9SCQlJZiBvdXRfZmxhZ3MuYi5uc2VjdG9yX2hvYiBpcyBzZXQKKwkgICAgSE9CX1NFQ1RPUgkJSWYgb3V0X2ZsYWdzLmIuc2VjdG9yX2hvYiBpcyBzZXQKKwkgICAgSE9CX0xDWUwJCUlmIG91dF9mbGFncy5iLmxjeWxfaG9iIGlzIHNldAorCSAgICBIT0JfSENZTAkJSWYgb3V0X2ZsYWdzLmIuaGN5bF9ob2IgaXMgc2V0CisJICAgIEZFQVRVUkUJCUlmIG91dF9mbGFncy5iLmZlYXR1cmUgaXMgc2V0CisJICAgIE5TRUNUT1IJCUlmIG91dF9mbGFncy5iLm5zZWN0b3IgaXMgc2V0CisJICAgIFNFQ1RPUgkJSWYgb3V0X2ZsYWdzLmIuc2VjdG9yIGlzIHNldAorCSAgICBMQ1lMCQlJZiBvdXRfZmxhZ3MuYi5sY3lsIGlzIHNldAorCSAgICBIQ1lMCQlJZiBvdXRfZmxhZ3MuYi5oY3lsIGlzIHNldAorCSAgICBTRUxFQ1QJCU9yJ2VkIHdpdGggdGhlIGRlZmF1bHQgdmFsdWUgb2YgU0VMRUNUIGFuZAorCQkJCWxvYWRlZCByZWdhcmRsZXNzIG9mIG91dF9mbGFncy5iLnNlbGVjdC4KKworCSAgVGFza2ZpbGUgcmVnaXN0ZXJzIGFyZSByZWFkIGJhY2sgZnJvbSB0aGUgZHJpdmUgaW50bworCSAge2lvfGhvYn1fcG9ydHNbXSBhZnRlciB0aGUgY29tbWFuZCBjb21wbGV0ZXMgaWZmIG9uZSBvZiB0aGUKKwkgIGZvbGxvd2luZyBjb25kaXRpb25zIGlzIG1ldDsgb3RoZXJ3aXNlLCB0aGUgb3JpZ2luYWwgdmFsdWVzCisJICB3aWxsIGJlIHdyaXR0ZW4gYmFjaywgdW5jaGFuZ2VkLgorCisJICAgIDEuIFRoZSBkcml2ZSBmYWlscyB0aGUgY29tbWFuZCAoRUlPKS4KKwkgICAgMi4gT25lIG9yIG1vcmUgdGhhbiBvbmUgYml0cyBhcmUgc2V0IGluIG91dF9mbGFncy4KKwkgICAgMy4gVGhlIHJlcXVlc3RlZCBkYXRhX3BoYXNlIGlzIFRBU0tGSUxFX05PX0RBVEEuCisKKwkgICAgSE9CX0RBVEEJCUlmIGluX2ZsYWdzLmIuZGF0YSBpcyBzZXQuICBJdCB3aWxsIGNvbnRhaW4KKwkJCQlERDgtREQxNSBvbiBsaXR0bGUgZW5kaWFuIG1hY2hpbmVzIGFuZAorCQkJCUREMC1ERDcgb24gYmlnIGVuZGlhbiBtYWNoaW5lcy4KKwkgICAgREFUQQkJSWYgaW5fZmxhZ3MuYi5kYXRhIGlzIHNldC4gIEl0IHdpbGwgY29udGFpbgorCQkJCUREMC1ERDcgb24gbGl0dGxlIGVuZGlhbiBtYWNoaW5lcyBhbmQKKwkJCQlERDgtREQxNSBvbiBiaWcgZW5kaWFuIG1hY2hpbmVzLgorCSAgICBIT0JfRkVBVFVSRQkJSWYgdGhlIGRyaXZlIHN1cHBvcnRzIExCQTQ4CisJICAgIEhPQl9OU0VDVE9SCQlJZiB0aGUgZHJpdmUgc3VwcG9ydHMgTEJBNDgKKwkgICAgSE9CX1NFQ1RPUgkJSWYgdGhlIGRyaXZlIHN1cHBvcnRzIExCQTQ4CisJICAgIEhPQl9MQ1lMCQlJZiB0aGUgZHJpdmUgc3VwcG9ydHMgTEJBNDgKKwkgICAgSE9CX0hDWUwJCUlmIHRoZSBkcml2ZSBzdXBwb3J0cyBMQkE0OAorCSAgICBOU0VDVE9SCisJICAgIFNFQ1RPUgorCSAgICBMQ1lMCisJICAgIEhDWUwKKworCSAgVGhlIGRhdGFfcGhhc2UgZmllbGQgZGVzY3JpYmVzIHRoZSBkYXRhIHRyYW5zZmVyIHRvIGJlCisJICBwZXJmb3JtZWQuICBWYWx1ZSBpcyBvbmUgb2Y6CisKKwkgICAgVEFTS0ZJTEVfSU4KKwkgICAgVEFTS0ZJTEVfTVVMVElfSU4KKwkgICAgVEFTS0ZJTEVfT1VUCisJICAgIFRBU0tGSUxFX01VTFRJX09VVAorCSAgICBUQVNLRklMRV9JTl9PVVQKKwkgICAgVEFTS0ZJTEVfSU5fRE1BCisJICAgIFRBU0tGSUxFX0lOX0RNQVEJCT09IElOX0RNQSAocXVldWVpbmcgbm90IHN1cHBvcnRlZCkKKwkgICAgVEFTS0ZJTEVfT1VUX0RNQQorCSAgICBUQVNLRklMRV9PVVRfRE1BUQkJPT0gT1VUX0RNQSAocXVldWVpbmcgbm90IHN1cHBvcnRlZCkKKwkgICAgVEFTS0ZJTEVfUF9JTgkJdW5pbXBsZW1lbnRlZAorCSAgICBUQVNLRklMRV9QX0lOX0RNQQkJdW5pbXBsZW1lbnRlZAorCSAgICBUQVNLRklMRV9QX0lOX0RNQVEJCXVuaW1wbGVtZW50ZWQKKwkgICAgVEFTS0ZJTEVfUF9PVVQJCXVuaW1wbGVtZW50ZWQKKwkgICAgVEFTS0ZJTEVfUF9PVVRfRE1BCQl1bmltcGxlbWVudGVkCisJICAgIFRBU0tGSUxFX1BfT1VUX0RNQVEJCXVuaW1wbGVtZW50ZWQKKworCSAgVGhlIHJlcV9jbWQgZmllbGQgY2xhc3NpZmllcyB0aGUgY29tbWFuZCB0eXBlLiAgSXQgbWF5IGJlCisJICBvbmUgb2Y6CisKKwkgICAgSURFX0RSSVZFX1RBU0tfTk9fREFUQQorCSAgICBJREVfRFJJVkVfVEFTS19TRVRfWEZFUgl1bmltcGxlbWVudGVkCisJICAgIElERV9EUklWRV9UQVNLX0lOCisJICAgIElERV9EUklWRV9UQVNLX09VVAkJdW5pbXBsZW1lbnRlZAorCSAgICBJREVfRFJJVkVfVEFTS19SQVdfV1JJVEUKKworCSAgWzZdIERvIG5vdCBhY2Nlc3Mge2lufG91dH1fZmxhZ3MtPmFsbCBleGNlcHQgZm9yIHJlc2V0dGluZworCSAgYWxsIHRoZSBiaXRzLiAgQWx3YXlzIGFjY2VzcyBpbmRpdmlkdWFsIGJpdCBmaWVsZHMuICAtPmFsbAorCSAgdmFsdWUgd2lsbCBmbGlwIGRlcGVuZGluZyBvbiBlbmRpYW5uZXNzLiAgRm9yIHRoZSBzYW1lCisJICByZWFzb24sIGRvIG5vdCB1c2UgSURFX3tUQVNLRklMRXxIT0J9X1NURF97T1VUfElOfV9GTEFHUworCSAgY29uc3RhbnRzIGRlZmluZWQgaW4gaGRyZWcuaC4KKworCisKK0hESU9fRFJJVkVfQ01ECQkJZXhlY3V0ZSBhIHNwZWNpYWwgZHJpdmUgY29tbWFuZAorCisJTm90ZTogIElmIHlvdSBkb24ndCBoYXZlIGEgY29weSBvZiB0aGUgQU5TSSBBVEEgc3BlY2lmaWNhdGlvbgorCWhhbmR5LCB5b3Ugc2hvdWxkIHByb2JhYmx5IGlnbm9yZSB0aGlzIGlvY3RsLgorCisJdXNhZ2U6CisKKwkgIHU4IGFyZ3NbNCtYRkVSX1NJWkVdOworCSAgLi4uCisJICBpb2N0bChmZCwgSERJT19EUklWRV9DTUQsIGFyZ3MpOworCisJaW5wdXRzOgorCisJICBDb21tYW5kcyBvdGhlciB0aGFuIFdJTl9TTUFSVAorCSAgICBhcmdzWzBdCUNPTU1BTkQKKwkgICAgYXJnc1sxXQlOU0VDVE9SCisJICAgIGFyZ3NbMl0JRkVBVFVSRQorCSAgICBhcmdzWzNdCU5TRUNUT1IKKworCSAgV0lOX1NNQVJUCisJICAgIGFyZ3NbMF0JQ09NTUFORAorCSAgICBhcmdzWzFdCVNFQ1RPUgorCSAgICBhcmdzWzJdCUZFQVRVUkUKKwkgICAgYXJnc1szXQlOU0VDVE9SCisKKwlvdXRwdXRzOgorCisJICBhcmdzW10gYnVmZmVyIGlzIGZpbGxlZCB3aXRoIHJlZ2lzdGVyIHZhbHVlcyBmb2xsb3dlZCBieSBhbnkKKwkgIGRhdGEgcmV0dXJuZWQgYnkgdGhlIGRpc2suCisJICAgIGFyZ3NbMF0Jc3RhdHVzCisJICAgIGFyZ3NbMV0JZXJyb3IKKwkgICAgYXJnc1syXQlOU0VDVE9SCisJICAgIGFyZ3NbM10JdW5kZWZpbmVkCisJICAgIGFyZ3NbNCtdCU5TRUNUT1IgKiA1MTIgYnl0ZXMgb2YgZGF0YSByZXR1cm5lZCBieSB0aGUgY29tbWFuZC4KKworCWVycm9yIHJldHVybnM6CisJICBFQUNDRVMJQWNjZXNzIGRlbmllZDogIHJlcXVpcmVzIENBUF9TWVNfUkFXSU8KKwkgIEVOT01FTQlVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciB0YXNrCisJICBFSU8JCURyaXZlIHJlcG9ydHMgZXJyb3IKKworCW5vdGVzOgorCisJICBbMV0gRm9yIGNvbW1hbmRzIG90aGVyIHRoYW4gV0lOX1NNQVJULCBhcmdzWzFdIHNob3VsZCBlcXVhbAorCSAgYXJnc1szXS4gIFNFQ1RPUiwgTENZTCBhbmQgSENZTCBhcmUgdW5kZWZpbmVkLiAgRm9yCisJICBXSU5fU01BUlQsIDB4NGYgYW5kIDB4YzIgYXJlIGxvYWRlZCBpbnRvIExDWUwgYW5kIEhDWUwKKwkgIHJlc3BlY3RpdmVseS4gIEluIGJvdGggY2FzZXMgU0VMRUNUIHdpbGwgY29udGFpbiB0aGUgZGVmYXVsdAorCSAgdmFsdWUgZm9yIHRoZSBkcml2ZS4gIFBsZWFzZSByZWZlciB0byBIRElPX0RSSVZFX1RBU0tGSUxFCisJICBub3RlcyBmb3IgdGhlIGRlZmF1bHQgdmFsdWUgb2YgU0VMRUNULgorCisJICBbMl0gSWYgTlNFQ1RPUiB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gemVybyBhbmQgdGhlIGRyaXZlIHNldHMKKwkgIERSUSB3aGVuIGludGVycnVwdGluZyBmb3IgdGhlIGNvbW1hbmQsIE5TRUNUT1IgKiA1MTIgYnl0ZXMKKwkgIGFyZSByZWFkIGZyb20gdGhlIGRldmljZSBpbnRvIHRoZSBhcmVhIGZvbGxvd2luZyBOU0VDVE9SLgorCSAgSW4gdGhlIGFib3ZlIGV4YW1wbGUsIHRoZSBhcmVhIHdvdWxkIGJlCisJICBhcmdzWzQuLjQrWEZFUl9TSVpFXS4gIDE2Yml0IFBJTyBpcyB1c2VkIHJlZ2FyZGxlc3Mgb2YKKwkgIEhESU9fU0VUXzMyQklUIHNldHRpbmcuCisKKwkgIFszXSBJZiBDT01NQU5EID09IFdJTl9TRVRGRUFUVVJFUyAmJiBGRUFUVVJFID09IFNFVEZFQVRVUkVTX1hGRVIKKwkgICYmIE5TRUNUT1IgPj0gWEZFUl9TV19ETUFfMCAmJiB0aGUgZHJpdmUgc3VwcG9ydHMgYW55IERNQQorCSAgbW9kZSwgSURFIGRyaXZlciB3aWxsIHRyeSB0byB0dW5lIHRoZSB0cmFuc2ZlciBtb2RlIG9mIHRoZQorCSAgZHJpdmUgYWNjb3JkaW5nbHkuCisKKworCitIRElPX0RSSVZFX1RBU0sJCQlleGVjdXRlIHRhc2sgYW5kIHNwZWNpYWwgZHJpdmUgY29tbWFuZAorCisJTm90ZTogIElmIHlvdSBkb24ndCBoYXZlIGEgY29weSBvZiB0aGUgQU5TSSBBVEEgc3BlY2lmaWNhdGlvbgorCWhhbmR5LCB5b3Ugc2hvdWxkIHByb2JhYmx5IGlnbm9yZSB0aGlzIGlvY3RsLgorCisJdXNhZ2U6CisKKwkgIHU4IGFyZ3NbN107CisJICAuLi4KKwkgIGlvY3RsKGZkLCBIRElPX0RSSVZFX1RBU0ssIGFyZ3MpOworCisJaW5wdXRzOgorCisJICBUYXNrZmlsZSByZWdpc3RlciB2YWx1ZXM6CisJICAgIGFyZ3NbMF0JQ09NTUFORAorCSAgICBhcmdzWzFdCUZFQVRVUkUKKwkgICAgYXJnc1syXQlOU0VDVE9SCisJICAgIGFyZ3NbM10JU0VDVE9SCisJICAgIGFyZ3NbNF0JTENZTAorCSAgICBhcmdzWzVdCUhDWUwKKwkgICAgYXJnc1s2XQlTRUxFQ1QKKworCW91dHB1dHM6CisKKwkgIFRhc2tmaWxlIHJlZ2lzdGVyIHZhbHVlczoKKwkgICAgYXJnc1swXQlzdGF0dXMKKwkgICAgYXJnc1sxXQllcnJvcgorCSAgICBhcmdzWzJdCU5TRUNUT1IKKwkgICAgYXJnc1szXQlTRUNUT1IKKwkgICAgYXJnc1s0XQlMQ1lMCisJICAgIGFyZ3NbNV0JSENZTAorCSAgICBhcmdzWzZdCVNFTEVDVAorCisJZXJyb3IgcmV0dXJuczoKKwkgIEVBQ0NFUwlBY2Nlc3MgZGVuaWVkOiAgcmVxdWlyZXMgQ0FQX1NZU19SQVdJTworCSAgRU5PTUVNCVVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRhc2sKKwkgIEVOT01TRwlEZXZpY2UgaXMgbm90IGEgZGlzayBkcml2ZS4KKwkgIEVJTwkJRHJpdmUgZmFpbGVkIHRoZSBjb21tYW5kLgorCisJbm90ZXM6CisKKwkgIFsxXSBERVYgYml0ICgweDEwKSBvZiBTRUxFQ1QgcmVnaXN0ZXIgaXMgaWdub3JlZCBhbmQgdGhlCisJICBhcHByb3ByaWF0ZSB2YWx1ZSBmb3IgdGhlIGRyaXZlIGlzIHVzZWQuICBBbGwgb3RoZXIgYml0cworCSAgYXJlIHVzZWQgdW5hbHRlcmVkLgorCisKKworSERJT19EUklWRV9DTURfQUVCCQlIRElPX0RSSVZFX1RBU0sKKworCU5vdCBpbXBsZW1lbnRlZCwgYXMgb2YgMi42LjguMQorCisKKworSERJT19TRVRfMzJCSVQJCQljaGFuZ2UgaW9fMzJiaXQgZmxhZ3MKKworCXVzYWdlOgorCisJICBpbnQgdmFsOworCSAgaW9jdGwoZmQsIEhESU9fU0VUXzMyQklULCB2YWwpOworCisJaW5wdXRzOgorCSAgTmV3IHZhbHVlIGZvciBpb18zMmJpdCBmbGFnCisKKwlvdXRwdXRzOglub25lCisKKwllcnJvciByZXR1cm46CisJICBFSU5WQUwJKGJkZXYgIT0gYmRldi0+YmRfY29udGFpbnMpIChub3Qgc3VyZSB3aGF0IHRoaXMgbWVhbnMpCisJICBFQUNDRVMJQWNjZXNzIGRlbmllZDogIHJlcXVpcmVzIENBUF9TWVNfQURNSU4KKwkgIEVJTlZBTAl2YWx1ZSBvdXQgb2YgcmFuZ2UgWzAgM10KKwkgIEVCVVNZCQlDb250cm9sbGVyIGJ1c3kKKworCisKKworSERJT19TRVRfTk9XRVJSCQkJY2hhbmdlIGlnbm9yZS13cml0ZS1lcnJvciBmbGFnCisKKwl1c2FnZToKKworCSAgaW50IHZhbDsKKwkgIGlvY3RsKGZkLCBIRElPX1NFVF9OT1dFUlIsIHZhbCk7CisKKwlpbnB1dHM6CisJICBOZXcgdmFsdWUgZm9yIGlnbm9yZS13cml0ZS1lcnJvciBmbGFnLiAgVXNlZCBmb3IgaWdub3JpbmcKKwkgIFdSRVJSX1NUQVQKKworCW91dHB1dHM6CW5vbmUKKworCWVycm9yIHJldHVybjoKKwkgIEVJTlZBTAkoYmRldiAhPSBiZGV2LT5iZF9jb250YWlucykgKG5vdCBzdXJlIHdoYXQgdGhpcyBtZWFucykKKwkgIEVBQ0NFUwlBY2Nlc3MgZGVuaWVkOiAgcmVxdWlyZXMgQ0FQX1NZU19BRE1JTgorCSAgRUlOVkFMCXZhbHVlIG91dCBvZiByYW5nZSBbMCAxXQorCSAgRUJVU1kJCUNvbnRyb2xsZXIgYnVzeQorCisKKworSERJT19TRVRfRE1BCQkJY2hhbmdlIHVzZS1kbWEgZmxhZworCisJdXNhZ2U6CisKKwkgIGxvbmcgdmFsOworCSAgaW9jdGwoZmQsIEhESU9fU0VUX0RNQSwgdmFsKTsKKworCWlucHV0czoKKwkgIE5ldyB2YWx1ZSBmb3IgdXNlLWRtYSBmbGFnCisKKwlvdXRwdXRzOglub25lCisKKwllcnJvciByZXR1cm46CisJICBFSU5WQUwJKGJkZXYgIT0gYmRldi0+YmRfY29udGFpbnMpIChub3Qgc3VyZSB3aGF0IHRoaXMgbWVhbnMpCisJICBFQUNDRVMJQWNjZXNzIGRlbmllZDogIHJlcXVpcmVzIENBUF9TWVNfQURNSU4KKwkgIEVJTlZBTAl2YWx1ZSBvdXQgb2YgcmFuZ2UgWzAgMV0KKwkgIEVCVVNZCQlDb250cm9sbGVyIGJ1c3kKKworCisKK0hESU9fU0VUX1BJT19NT0RFCQlyZWNvbmZpZyBpbnRlcmZhY2UgdG8gbmV3IHNwZWVkCisKKwl1c2FnZToKKworCSAgbG9uZyB2YWw7CisJICBpb2N0bChmZCwgSERJT19TRVRfUElPX01PREUsIHZhbCk7CisKKwlpbnB1dHM6CisJICBOZXcgaW50ZXJmYWNlIHNwZWVkLgorCisJb3V0cHV0czoJbm9uZQorCisJZXJyb3IgcmV0dXJuOgorCSAgRUlOVkFMCShiZGV2ICE9IGJkZXYtPmJkX2NvbnRhaW5zKSAobm90IHN1cmUgd2hhdCB0aGlzIG1lYW5zKQorCSAgRUFDQ0VTCUFjY2VzcyBkZW5pZWQ6ICByZXF1aXJlcyBDQVBfU1lTX0FETUlOCisJICBFSU5WQUwJdmFsdWUgb3V0IG9mIHJhbmdlIFswIDI1NV0KKwkgIEVCVVNZCQlDb250cm9sbGVyIGJ1c3kKKworCisKK0hESU9fU0NBTl9IV0lGCQkJcmVnaXN0ZXIgYW5kIChyZSlzY2FuIGludGVyZmFjZQorCisJdXNhZ2U6CisKKwkgIGludCBhcmdzWzNdCisJICAuLi4KKwkgIGlvY3RsKGZkLCBIRElPX1NDQU5fSFdJRiwgYXJncyk7CisKKwlpbnB1dHM6CisJICBhcmdzWzBdCWlvIGFkZHJlc3MgdG8gcHJvYmUKKwkgIGFyZ3NbMV0JY29udHJvbCBhZGRyZXNzIHRvIHByb2JlCisJICBhcmdzWzJdCWlycSBudW1iZXIKKworCW91dHB1dHM6CW5vbmUKKworCWVycm9yIHJldHVybnM6CisJICBFQUNDRVMJQWNjZXNzIGRlbmllZDogIHJlcXVpcmVzIENBUF9TWVNfUkFXSU8KKwkgIEVJTwkJUHJvYmUgZmFpbGVkLgorCisJbm90ZXM6CisKKwkgIFRoaXMgaW9jdGwgaW5pdGlhbGl6ZXMgdGhlIGFkZHJlc3NlcyBhbmQgaXJxIGZvciBhIGRpc2sKKwkgIGNvbnRyb2xsZXIsIHByb2JlcyBmb3IgZHJpdmVzLCBhbmQgY3JlYXRlcyAvcHJvYy9pZGUKKwkgIGludGVyZmFjZXMgYXMgYXBwcm9wcmlhdGUuCisKKworCitIRElPX1VOUkVHSVNURVJfSFdJRgkJdW5yZWdpc3RlciBpbnRlcmZhY2UKKworCXVzYWdlOgorCisJICBpbnQgaW5kZXg7CisJICBpb2N0bChmZCwgSERJT19VTlJFR0lTVEVSX0hXSUYsIGluZGV4KTsKKworCWlucHV0czoKKwkgIGluZGV4CQlpbmRleCBvZiBoYXJkd2FyZSBpbnRlcmZhY2UgdG8gdW5yZWdpc3RlcgorCisJb3V0cHV0czoJbm9uZQorCisJZXJyb3IgcmV0dXJuczoKKwkgIEVBQ0NFUwlBY2Nlc3MgZGVuaWVkOiAgcmVxdWlyZXMgQ0FQX1NZU19SQVdJTworCisJbm90ZXM6CisKKwkgIFRoaXMgaW9jdGwgcmVtb3ZlcyBhIGhhcmR3YXJlIGludGVyZmFjZSBmcm9tIHRoZSBrZXJuZWwuCisKKwkgIEN1cnJlbnRseSAoMi42LjgpIHRoaXMgaW9jdGwgc2lsZW50bHkgZmFpbHMgaWYgYW55IGRyaXZlIG9uCisJICB0aGUgaW50ZXJmYWNlIGlzIGJ1c3kuCisKKworCitIRElPX1NFVF9XQ0FDSEUJCQljaGFuZ2Ugd3JpdGUgY2FjaGUgZW5hYmxlLWRpc2FibGUKKworCXVzYWdlOgorCisJICBpbnQgdmFsOworCSAgaW9jdGwoZmQsIEhESU9fU0VUX1dDQUNIRSwgdmFsKTsKKworCWlucHV0czoKKwkgIE5ldyB2YWx1ZSBmb3Igd3JpdGUgY2FjaGUgZW5hYmxlCisKKwlvdXRwdXRzOglub25lCisKKwllcnJvciByZXR1cm46CisJICBFSU5WQUwJKGJkZXYgIT0gYmRldi0+YmRfY29udGFpbnMpIChub3Qgc3VyZSB3aGF0IHRoaXMgbWVhbnMpCisJICBFQUNDRVMJQWNjZXNzIGRlbmllZDogIHJlcXVpcmVzIENBUF9TWVNfQURNSU4KKwkgIEVJTlZBTAl2YWx1ZSBvdXQgb2YgcmFuZ2UgWzAgMV0KKwkgIEVCVVNZCQlDb250cm9sbGVyIGJ1c3kKKworCisKK0hESU9fU0VUX0FDT1VTVElDCQljaGFuZ2UgYWNvdXN0aWMgYmVoYXZpb3IKKworCXVzYWdlOgorCisJICBpbnQgdmFsOworCSAgaW9jdGwoZmQsIEhESU9fU0VUX0FDT1VTVElDLCB2YWwpOworCisJaW5wdXRzOgorCSAgTmV3IHZhbHVlIGZvciBkcml2ZSBhY291c3RpYyBzZXR0aW5ncworCisJb3V0cHV0czoJbm9uZQorCisJZXJyb3IgcmV0dXJuOgorCSAgRUlOVkFMCShiZGV2ICE9IGJkZXYtPmJkX2NvbnRhaW5zKSAobm90IHN1cmUgd2hhdCB0aGlzIG1lYW5zKQorCSAgRUFDQ0VTCUFjY2VzcyBkZW5pZWQ6ICByZXF1aXJlcyBDQVBfU1lTX0FETUlOCisJICBFSU5WQUwJdmFsdWUgb3V0IG9mIHJhbmdlIFswIDI1NF0KKwkgIEVCVVNZCQlDb250cm9sbGVyIGJ1c3kKKworCisKK0hESU9fU0VUX1FETUEJCQljaGFuZ2UgdXNlLXFkbWEgZmxhZworCisJTm90IGltcGxlbWVudGVkLCBhcyBvZiAyLjYuOC4xCisKKworCitIRElPX1NFVF9BRERSRVNTCQljaGFuZ2UgbGJhIGFkZHJlc3NpbmcgbW9kZXMKKworCXVzYWdlOgorCisJICBpbnQgdmFsOworCSAgaW9jdGwoZmQsIEhESU9fU0VUX0FERFJFU1MsIHZhbCk7CisKKwlpbnB1dHM6CisJICBOZXcgdmFsdWUgZm9yIGFkZHJlc3NpbmcgbW9kZQorCSAgICAwID0gMjgtYml0CisJICAgIDEgPSA0OC1iaXQKKwkgICAgMiA9IDQ4LWJpdCBkb2luZyAyOC1iaXQKKworCW91dHB1dHM6CW5vbmUKKworCWVycm9yIHJldHVybjoKKwkgIEVJTlZBTAkoYmRldiAhPSBiZGV2LT5iZF9jb250YWlucykgKG5vdCBzdXJlIHdoYXQgdGhpcyBtZWFucykKKwkgIEVBQ0NFUwlBY2Nlc3MgZGVuaWVkOiAgcmVxdWlyZXMgQ0FQX1NZU19BRE1JTgorCSAgRUlOVkFMCXZhbHVlIG91dCBvZiByYW5nZSBbMCAyXQorCSAgRUJVU1kJCUNvbnRyb2xsZXIgYnVzeQorCSAgRUlPCQlEcml2ZSBkb2VzIG5vdCBzdXBwb3J0IGxiYTQ4IG1vZGUuCisKKworSERJT19TRVRfSURFX1NDU0kKKworCXVzYWdlOgorCisJICBsb25nIHZhbDsKKwkgIGlvY3RsKGZkLCBIRElPX1NFVF9JREVfU0NTSSwgdmFsKTsKKworCWlucHV0czoKKwkgIE5ldyB2YWx1ZSBmb3Igc2NzaSBlbXVsYXRpb24gbW9kZSAoPykKKworCW91dHB1dHM6CW5vbmUKKworCWVycm9yIHJldHVybjoKKwkgIEVJTlZBTAkoYmRldiAhPSBiZGV2LT5iZF9jb250YWlucykgKG5vdCBzdXJlIHdoYXQgdGhpcyBtZWFucykKKwkgIEVBQ0NFUwlBY2Nlc3MgZGVuaWVkOiAgcmVxdWlyZXMgQ0FQX1NZU19BRE1JTgorCSAgRUlOVkFMCXZhbHVlIG91dCBvZiByYW5nZSBbMCAxXQorCSAgRUJVU1kJCUNvbnRyb2xsZXIgYnVzeQorCisKKworSERJT19TRVRfU0NTSV9JREUKKworCU5vdCBpbXBsZW1lbnRlZCwgYXMgb2YgMi42LjguMQorCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW9jdGwvaW9jdGwtZGVjb2RpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9pb2N0bC9pb2N0bC1kZWNvZGluZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM1ZWZiMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaW9jdGwvaW9jdGwtZGVjb2RpbmcudHh0CkBAIC0wLDAgKzEsMjQgQEAKK1RvIGRlY29kZSBhIGhleCBJT0NUTCBjb2RlOgorCitNb3N0IGFyY2hpdGVjdHVyZXMgdXNlIHRoaXMgZ2VuZXJpYyBmb3JtYXQsIGJ1dCBjaGVjaworaW5jbHVkZS9BUkNIL2lvY3RsLmggZm9yIHNwZWNpZmljcywgZS5nLiBwb3dlcnBjCit1c2VzIDMgYml0cyB0byBlbmNvZGUgcmVhZC93cml0ZSBhbmQgMTMgYml0cyBmb3Igc2l6ZS4KKworIGJpdHMgICAgbWVhbmluZworIDMxLTMwCTAwIC0gbm8gcGFyYW1ldGVyczogdXNlcyBfSU8gbWFjcm8KKwkxMCAtIHJlYWQ6IF9JT1IKKwkwMSAtIHdyaXRlOiBfSU9XCisJMTEgLSByZWFkL3dyaXRlOiBfSU9XUgorCisgMjktMTYJc2l6ZSBvZiBhcmd1bWVudHMKKworIDE1LTgJYXNjaWkgY2hhcmFjdGVyIHN1cHBvc2VkbHkKKwl1bmlxdWUgdG8gZWFjaCBkcml2ZXIKKworIDctMAlmdW5jdGlvbiAjCisKKworU28gZm9yIGV4YW1wbGUgMHg4MjE4NzIwMSBpcyBhIHJlYWQgd2l0aCBhcmcgbGVuZ3RoIG9mIDB4MjE4LAorY2hhcmFjdGVyICdyJyBmdW5jdGlvbiAxLiBHcmVwcGluZyB0aGUgc291cmNlIHJldmVhbHMgdGhpcyBpczoKKworI2RlZmluZSBWRkFUX0lPQ1RMX1JFQURESVJfQk9USCAgICAgICAgIF9JT1IoJ3InLCAxLCBzdHJ1Y3QgZGlyZW50IFsyXSkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW9jdGwvaW9jdGwtbnVtYmVyLnR4dCBiL0RvY3VtZW50YXRpb24vaW9jdGwvaW9jdGwtbnVtYmVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTI2MWEzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pb2N0bC9pb2N0bC1udW1iZXIudHh0CkBAIC0wLDAgKzEsMzQwIEBACitJb2N0bCBOdW1iZXJzCisxOSBPY3RvYmVyIDE5OTkKK01pY2hhZWwgRWxpemFiZXRoIENoYXN0YWluCis8bWVjQHNob3V0Lm5ldD4KKworSWYgeW91IGFyZSBhZGRpbmcgbmV3IGlvY3RsJ3MgdG8gdGhlIGtlcm5lbCwgeW91IHNob3VsZCB1c2UgdGhlIF9JTworbWFjcm9zIGRlZmluZWQgaW4gPGxpbnV4L2lvY3RsLmg+OgorCisgICAgX0lPICAgIGFuIGlvY3RsIHdpdGggbm8gcGFyYW1ldGVycworICAgIF9JT1cgICBhbiBpb2N0bCB3aXRoIHdyaXRlIHBhcmFtZXRlcnMgKGNvcHlfZnJvbV91c2VyKQorICAgIF9JT1IgICBhbiBpb2N0bCB3aXRoIHJlYWQgcGFyYW1ldGVycyAgKGNvcHlfdG9fdXNlcikKKyAgICBfSU9XUiAgYW4gaW9jdGwgd2l0aCBib3RoIHdyaXRlIGFuZCByZWFkIHBhcmFtZXRlcnMuCisKKydXcml0ZScgYW5kICdyZWFkJyBhcmUgZnJvbSB0aGUgdXNlcidzIHBvaW50IG9mIHZpZXcsIGp1c3QgbGlrZSB0aGUKK3N5c3RlbSBjYWxscyAnd3JpdGUnIGFuZCAncmVhZCcuICBGb3IgZXhhbXBsZSwgYSBTRVRfRk9PIGlvY3RsIHdvdWxkCitiZSBfSU9XLCBhbHRob3VnaCB0aGUga2VybmVsIHdvdWxkIGFjdHVhbGx5IHJlYWQgZGF0YSBmcm9tIHVzZXIgc3BhY2U7CithIEdFVF9GT08gaW9jdGwgd291bGQgYmUgX0lPUiwgYWx0aG91Z2ggdGhlIGtlcm5lbCB3b3VsZCBhY3R1YWxseSB3cml0ZQorZGF0YSB0byB1c2VyIHNwYWNlLgorCitUaGUgZmlyc3QgYXJndW1lbnQgdG8gX0lPLCBfSU9XLCBfSU9SLCBvciBfSU9XUiBpcyBhbiBpZGVudGlmeWluZyBsZXR0ZXIKK29yIG51bWJlciBmcm9tIHRoZSB0YWJsZSBiZWxvdy4gIEJlY2F1c2Ugb2YgdGhlIGxhcmdlIG51bWJlciBvZiBkcml2ZXJzLAorbWFueSBkcml2ZXJzIHNoYXJlIGEgcGFydGlhbCBsZXR0ZXIgd2l0aCBvdGhlciBkcml2ZXJzLgorCitJZiB5b3UgYXJlIHdyaXRpbmcgYSBkcml2ZXIgZm9yIGEgbmV3IGRldmljZSBhbmQgbmVlZCBhIGxldHRlciwgcGljayBhbgordW51c2VkIGJsb2NrIHdpdGggZW5vdWdoIHJvb20gZm9yIGV4cGFuc2lvbjogMzIgdG8gMjU2IGlvY3RsIGNvbW1hbmRzLgorWW91IGNhbiByZWdpc3RlciB0aGUgYmxvY2sgYnkgcGF0Y2hpbmcgdGhpcyBmaWxlIGFuZCBzdWJtaXR0aW5nIHRoZQorcGF0Y2ggdG8gTGludXMgVG9ydmFsZHMuICBPciB5b3UgY2FuIGUtbWFpbCBtZSBhdCA8bWVjQHNob3V0Lm5ldD4gYW5kCitJJ2xsIHJlZ2lzdGVyIG9uZSBmb3IgeW91LgorCitUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIF9JTywgX0lPVywgX0lPUiwgb3IgX0lPV1IgaXMgYSBzZXF1ZW5jZSBudW1iZXIKK3RvIGRpc3Rpbmd1aXNoIGlvY3RscyBmcm9tIGVhY2ggb3RoZXIuICBUaGUgdGhpcmQgYXJndW1lbnQgdG8gX0lPVywKK19JT1IsIG9yIF9JT1dSIGlzIHRoZSB0eXBlIG9mIHRoZSBkYXRhIGdvaW5nIGludG8gdGhlIGtlcm5lbCBvciBjb21pbmcKK291dCBvZiB0aGUga2VybmVsIChlLmcuICAnaW50JyBvciAnc3RydWN0IGZvbycpLiAgTk9URSEgIERvIE5PVCB1c2UKK3NpemVvZihhcmcpIGFzIHRoZSB0aGlyZCBhcmd1bWVudCBhcyB0aGlzIHJlc3VsdHMgaW4geW91ciBpb2N0bCB0aGlua2luZworaXQgcGFzc2VzIGFuIGFyZ3VtZW50IG9mIHR5cGUgc2l6ZV90LgorCitTb21lIGRldmljZXMgdXNlIHRoZWlyIG1ham9yIG51bWJlciBhcyB0aGUgaWRlbnRpZmllcjsgdGhpcyBpcyBPSywgYXMKK2xvbmcgYXMgaXQgaXMgdW5pcXVlLiAgU29tZSBkZXZpY2VzIGFyZSBpcnJlZ3VsYXIgYW5kIGRvbid0IGZvbGxvdyBhbnkKK2NvbnZlbnRpb24gYXQgYWxsLgorCitGb2xsb3dpbmcgdGhpcyBjb252ZW50aW9uIGlzIGdvb2QgYmVjYXVzZToKKworKDEpIEtlZXBpbmcgdGhlIGlvY3RsJ3MgZ2xvYmFsbHkgdW5pcXVlIGhlbHBzIGVycm9yIGNoZWNraW5nOgorICAgIGlmIGEgcHJvZ3JhbSBjYWxscyBhbiBpb2N0bCBvbiB0aGUgd3JvbmcgZGV2aWNlLCBpdCB3aWxsIGdldCBhbgorICAgIGVycm9yIHJhdGhlciB0aGFuIHNvbWUgdW5leHBlY3RlZCBiZWhhdmlvdXIuCisKKygyKSBUaGUgJ3N0cmFjZScgYnVpbGQgcHJvY2VkdXJlIGF1dG9tYXRpY2FsbHkgZmluZHMgaW9jdGwgbnVtYmVycworICAgIGRlZmluZWQgd2l0aCBfSU8sIF9JT1csIF9JT1IsIG9yIF9JT1dSLgorCisoMykgJ3N0cmFjZScgY2FuIGRlY29kZSBudW1iZXJzIGJhY2sgaW50byB1c2VmdWwgbmFtZXMgd2hlbiB0aGUKKyAgICBudW1iZXJzIGFyZSB1bmlxdWUuCisKKyg0KSBQZW9wbGUgbG9va2luZyBmb3IgaW9jdGxzIGNhbiBncmVwIGZvciB0aGVtIG1vcmUgZWFzaWx5IHdoZW4KKyAgICB0aGlzIGNvbnZlbnRpb24gaXMgdXNlZCB0byBkZWZpbmUgdGhlIGlvY3RsIG51bWJlcnMuCisKKyg1KSBXaGVuIGZvbGxvd2luZyB0aGUgY29udmVudGlvbiwgdGhlIGRyaXZlciBjb2RlIGNhbiB1c2UgZ2VuZXJpYworICAgIGNvZGUgdG8gY29weSB0aGUgcGFyYW1ldGVycyBiZXR3ZWVuIHVzZXIgYW5kIGtlcm5lbCBzcGFjZS4KKworVGhpcyB0YWJsZSBsaXN0cyBpb2N0bHMgdmlzaWJsZSBmcm9tIHVzZXIgbGFuZCBmb3IgTGludXgveDg2LiAgSXQgY29udGFpbnMKK21vc3QgZHJpdmVycyB1cCB0byAyLjYuMzEsIGJ1dCBJIGtub3cgSSBhbSBtaXNzaW5nIHNvbWUuICBUaGVyZSBoYXMgYmVlbgorbm8gYXR0ZW1wdCB0byBsaXN0IG5vbi1YODYgYXJjaGl0ZWN0dXJlcyBvciBpb2N0bHMgZnJvbSBkcml2ZXJzL3N0YWdpbmcvLgorCitDb2RlICBTZXEjKGhleCkJSW5jbHVkZSBGaWxlCQlDb21tZW50cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzB4MDAJMDAtMUYJbGludXgvZnMuaAkJY29uZmxpY3QhCisweDAwCTAwLTFGCXNjc2kvc2NzaV9pb2N0bC5oCWNvbmZsaWN0IQorMHgwMAkwMC0xRglsaW51eC9mYi5oCQljb25mbGljdCEKKzB4MDAJMDAtMUYJbGludXgvd2F2ZWZyb250LmgJY29uZmxpY3QhCisweDAyCWFsbAlsaW51eC9mZC5oCisweDAzCWFsbAlsaW51eC9oZHJlZy5oCisweDA0CUQyLURDCWxpbnV4L3Vtc2Rvc19mcy5oCURlYWQgc2luY2UgMi42LjExLCBidXQgZG9uJ3QgcmV1c2UgdGhlc2UuCisweDA2CWFsbAlsaW51eC9scC5oCisweDA5CWFsbAlsaW51eC9yYWlkL21kX3UuaAorMHgxMAkwMC0wRglkcml2ZXJzL2NoYXIvczM5MC92bWNwLmgKKzB4MTAJMTAtMUYJYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9zY2xwX2N0bC5oCisweDEwCTIwLTJGCWFyY2gvczM5MC9pbmNsdWRlL3VhcGkvYXNtL2h5cGZzLmgKKzB4MTIJYWxsCWxpbnV4L2ZzLmgKKwkJbGludXgvYmxrcGcuaAorMHgxYglhbGwJSW5maW5pQmFuZCBTdWJzeXN0ZW0JPGh0dHA6Ly9pbmZpbmliYW5kLnNvdXJjZWZvcmdlLm5ldC8+CisweDIwCWFsbAlkcml2ZXJzL2Nkcm9tL2NtMjA2LmgKKzB4MjIJYWxsCXNjc2kvc2cuaAorJyMnCTAwLTNGCUlFRUUgMTM5NCBTdWJzeXN0ZW0JQmxvY2sgZm9yIHRoZSBlbnRpcmUgc3Vic3lzdGVtCisnJCcJMDAtMEYJbGludXgvcGVyZl9jb3VudGVyLmgsIGxpbnV4L3BlcmZfZXZlbnQuaAorJyUnCTAwLTBGCWluY2x1ZGUvdWFwaS9saW51eC9zdG0uaAorCQkJCQlTeXN0ZW0gVHJhY2UgTW9kdWxlIHN1YnN5c3RlbQorCQkJCQk8bWFpbHRvOmFsZXhhbmRlci5zaGlzaGtpbkBsaW51eC5pbnRlbC5jb20+CisnJicJMDAtMDcJZHJpdmVycy9maXJld2lyZS9ub3N5LXVzZXIuaAorJzEnCTAwLTFGCTxsaW51eC90aW1lcHBzLmg+CVBQUyBraXQgZnJvbSBVbHJpY2ggV2luZGwKKwkJCQkJPGZ0cDovL2Z0cC5kZS5rZXJuZWwub3JnL3B1Yi9saW51eC9kYWVtb25zL250cC9QUFMvPgorJzInCTAxLTA0CWxpbnV4L2kyby5oCisnMycJMDAtMEYJZHJpdmVycy9zMzkwL2NoYXIvcmF3MzI3MC5oCWNvbmZsaWN0IQorJzMnCTAwLTFGCWxpbnV4L3N1c3BlbmRfaW9jdGxzLmgJY29uZmxpY3QhCisJCWFuZCBrZXJuZWwvcG93ZXIvdXNlci5jCisnOCcJYWxsCQkJCVNOUDgwMjMgYWR2YW5jZWQgTklDIGNhcmQKKwkJCQkJPG1haWx0bzptY3JAc29saWR1bS5jb20+CisnOycJNjQtN0YJbGludXgvdmZpby5oCisnQCcJMDAtMEYJbGludXgvcmFkZW9uZmIuaAljb25mbGljdCEKKydAJwkwMC0wRglkcml2ZXJzL3ZpZGVvL2F0eS9hdHkxMjhmYi5jCWNvbmZsaWN0IQorJ0EnCTAwLTFGCWxpbnV4L2FwbV9iaW9zLmgJY29uZmxpY3QhCisnQScJMDAtMEYJbGludXgvYWdwZ2FydC5oCQljb25mbGljdCEKKwkJYW5kIGRyaXZlcnMvY2hhci9hZ3AvY29tcGF0X2lvY3RsLmgKKydBJwkwMC03Rglzb3VuZC9hc291bmQuaAkJY29uZmxpY3QhCisnQicJMDAtMUYJbGludXgvY2Npc3NfaW9jdGwuaAljb25mbGljdCEKKydCJwkwMC0wRglpbmNsdWRlL2xpbnV4L3BtdS5oCWNvbmZsaWN0IQorJ0InCUMwLUZGCQkJCWFkdmFuY2VkIGJidXMKKwkJCQkJPG1haWx0bzptYWFzc2VuQHVuaS1mcmVpYnVyZy5kZT4KKydDJwlhbGwJbGludXgvc291bmRjYXJkLmgJY29uZmxpY3QhCisnQycJMDEtMkYJbGludXgvY2FwaS5oCQljb25mbGljdCEKKydDJwlGMC1GRglkcml2ZXJzL25ldC93YW4vY29zYS5oCWNvbmZsaWN0IQorJ0QnCWFsbAlhcmNoL3MzOTAvaW5jbHVkZS9hc20vZGFzZC5oCisnRCcJNDAtNUYJZHJpdmVycy9zY3NpL2RwdC9kdHBpX2lvY3RsLmgKKydEJwkwNQlkcml2ZXJzL3Njc2kvcG1jcmFpZC5oCisnRScJYWxsCWxpbnV4L2lucHV0LmgJCWNvbmZsaWN0IQorJ0UnCTAwLTBGCXhlbi9ldnRjaG4uaAkJY29uZmxpY3QhCisnRicJYWxsCWxpbnV4L2ZiLmgJCWNvbmZsaWN0IQorJ0YnCTAxLTAyCWRyaXZlcnMvc2NzaS9wbWNyYWlkLmgJY29uZmxpY3QhCisnRicJMjAJZHJpdmVycy92aWRlby9mc2wtZGl1LWZiLmgJY29uZmxpY3QhCisnRicJMjAJZHJpdmVycy92aWRlby9pbnRlbGZiL2ludGVsZmIuaAljb25mbGljdCEKKydGJwkyMAlsaW51eC9pdnR2ZmIuaAkJY29uZmxpY3QhCisnRicJMjAJbGludXgvbWF0cm94ZmIuaAljb25mbGljdCEKKydGJwkyMAlkcml2ZXJzL3ZpZGVvL2F0eS9hdHlmYl9iYXNlLmMJY29uZmxpY3QhCisnRicJMDAtMEYJdmlkZW8vZGE4eHgtZmIuaAljb25mbGljdCEKKydGJwk4MC04RglsaW51eC9hcmNmYi5oCQljb25mbGljdCEKKydGJwlERAl2aWRlby9zc3RmYi5oCQljb25mbGljdCEKKydHJwkwMC0zRglkcml2ZXJzL21pc2Mvc2dpLWdydS9ncnVsaWIuaAljb25mbGljdCEKKydHJwkwMC0wRglsaW51eC9naWdhc2V0X2Rldi5oCWNvbmZsaWN0IQorJ0gnCTAwLTdGCWxpbnV4L2hpZGRldi5oCQljb25mbGljdCEKKydIJwkwMC0wRglsaW51eC9oaWRyYXcuaAkJY29uZmxpY3QhCisnSCcJMDEJbGludXgvbWVpLmgJCWNvbmZsaWN0IQorJ0gnCTAyCWxpbnV4L21laS5oCQljb25mbGljdCEKKydIJwkwMwlsaW51eC9tZWkuaAkJY29uZmxpY3QhCisnSCcJMDAtMEYJc291bmQvYXNvdW5kLmgJCWNvbmZsaWN0IQorJ0gnCTIwLTQwCXNvdW5kL2Fzb3VuZF9mbS5oCWNvbmZsaWN0IQorJ0gnCTgwLThGCXNvdW5kL3NmbnRfaW5mby5oCWNvbmZsaWN0IQorJ0gnCTEwLThGCXNvdW5kL2VtdTEwazEuaAkJY29uZmxpY3QhCisnSCcJMTAtMUYJc291bmQvc2IxNl9jc3AuaAljb25mbGljdCEKKydIJwkxMC0xRglzb3VuZC9oZGFfaHdkZXAuaAljb25mbGljdCEKKydIJwk0MC00Rglzb3VuZC9oZHNwbS5oCQljb25mbGljdCEKKydIJwk0MC00Rglzb3VuZC9oZHNwLmgJCWNvbmZsaWN0IQorJ0gnCTkwCXNvdW5kL3VzYi91c3gyeS91c2Jfc3RyZWFtLmgKKydIJwlBMAl1YXBpL2xpbnV4L3VzYi9jZGMtd2RtLmgKKydIJwlDMC1GMAluZXQvYmx1ZXRvb3RoL2hjaS5oCWNvbmZsaWN0IQorJ0gnCUMwLURGCW5ldC9ibHVldG9vdGgvaGlkcC9oaWRwLmgJY29uZmxpY3QhCisnSCcJQzAtREYJbmV0L2JsdWV0b290aC9jbXRwL2NtdHAuaAljb25mbGljdCEKKydIJwlDMC1ERgluZXQvYmx1ZXRvb3RoL2JuZXAvYm5lcC5oCWNvbmZsaWN0IQorJ0gnCUYxCWxpbnV4L2hpZC1yb2NjYXQuaAk8bWFpbHRvOmVyYXpvcl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisnSCcJRjgtRkEJc291bmQvZmlyZXdpcmUuaAorJ0knCWFsbAlsaW51eC9pc2RuLmgJCWNvbmZsaWN0IQorJ0knCTAwLTBGCWRyaXZlcnMvaXNkbi9kaXZlcnQvaXNkbl9kaXZlcnQuaAljb25mbGljdCEKKydJJwk0MC00RglsaW51eC9tSVNETmlmLmgJCWNvbmZsaWN0IQorJ0onCTAwLTFGCWRyaXZlcnMvc2NzaS9nZHRoX2lvY3RsLmgKKydLJwlhbGwJbGludXgva2QuaAorJ0wnCTAwLTFGCWxpbnV4L2xvb3AuaAkJY29uZmxpY3QhCisnTCcJMTAtMUYJZHJpdmVycy9zY3NpL21wdDJzYXMvbXB0MnNhc19jdGwuaAljb25mbGljdCEKKydMJwkyMC0yRglsaW51eC9saWdodG52bS5oCisnTCcJRTAtRkYJbGludXgvcHBkZC5oCQllbmNyeXB0ZWQgZGlzayBkZXZpY2UgZHJpdmVyCisJCQkJCTxodHRwOi8vbGludXgwMS5nd2RnLmRlL35hbGF0aGFtL3BwZGQuaHRtbD4KKydNJwlhbGwJbGludXgvc291bmRjYXJkLmgJY29uZmxpY3QhCisnTScJMDEtMTYJbXRkL210ZC1hYmkuaAkJY29uZmxpY3QhCisJCWFuZCBkcml2ZXJzL210ZC9tdGRjaGFyLmMKKydNJwkwMS0wMwlkcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzLmgKKydNJwkwMC0wRglkcml2ZXJzL3ZpZGVvL2ZzbC1kaXUtZmIuaAljb25mbGljdCEKKydOJwkwMC0xRglkcml2ZXJzL3VzYi9zY2FubmVyLmgKKydOJwk0MC03Rglkcml2ZXJzL2Jsb2NrL252bWUuYworJ08nICAgICAwMC0wNiAgIG10ZC91YmktdXNlci5oCQlVQkkKKydQJwlhbGwJbGludXgvc291bmRjYXJkLmgJY29uZmxpY3QhCisnUCcJNjAtNkYJc291bmQvc3NjYXBlX2lvY3RsLmgJY29uZmxpY3QhCisnUCcJMDAtMEYJZHJpdmVycy91c2IvY2xhc3MvdXNibHAuYwljb25mbGljdCEKKydRJwlhbGwJbGludXgvc291bmRjYXJkLmgKKydSJwkwMC0xRglsaW51eC9yYW5kb20uaAkJY29uZmxpY3QhCisnUicJMDEJbGludXgvcmZraWxsLmgJCWNvbmZsaWN0IQorJ1InCUMwLURGCW5ldC9ibHVldG9vdGgvcmZjb21tLmgKKydTJwlhbGwJbGludXgvY2Ryb20uaAkJY29uZmxpY3QhCisnUycJODAtODEJc2NzaS9zY3NpX2lvY3RsLmgJY29uZmxpY3QhCisnUycJODItRkYJc2NzaS9zY3NpLmgJCWNvbmZsaWN0IQorJ1MnCTAwLTdGCXNvdW5kL2FzZXF1ZW5jZXIuaAljb25mbGljdCEKKydUJwlhbGwJbGludXgvc291bmRjYXJkLmgJY29uZmxpY3QhCisnVCcJMDAtQUYJc291bmQvYXNvdW5kLmgJCWNvbmZsaWN0IQorJ1QnCWFsbAlhcmNoL3g4Ni9pbmNsdWRlL2FzbS9pb2N0bHMuaAljb25mbGljdCEKKydUJwlDMC1ERglsaW51eC9pZl90dW4uaAkJY29uZmxpY3QhCisnVScJYWxsCXNvdW5kL2Fzb3VuZC5oCQljb25mbGljdCEKKydVJwkwMC1DRglsaW51eC91aW5wdXQuaAkJY29uZmxpY3QhCisnVScJMDAtRUYJbGludXgvdXNiZGV2aWNlX2ZzLmgKKydVJwlDMC1DRglkcml2ZXJzL2JsdWV0b290aC9oY2lfdWFydC5oCisnVicJYWxsCWxpbnV4L3Z0LmgJCWNvbmZsaWN0IQorJ1YnCWFsbAlsaW51eC92aWRlb2RldjIuaAljb25mbGljdCEKKydWJwlDMAlsaW51eC9pdnR2ZmIuaAkJY29uZmxpY3QhCisnVicJQzAJbGludXgvaXZ0di5oCQljb25mbGljdCEKKydWJwlDMAltZWRpYS9kYXZpbmNpL3ZwZmVfY2FwdHVyZS5oCWNvbmZsaWN0IQorJ1YnCUMwCW1lZGlhL3NpNDcxMy5oCQljb25mbGljdCEKKydXJwkwMC0xRglsaW51eC93YXRjaGRvZy5oCWNvbmZsaWN0IQorJ1cnCTAwLTFGCWxpbnV4L3dhbnJvdXRlci5oCWNvbmZsaWN0IQkJKHByZSAzLjkpCisnVycJMDAtM0YJc291bmQvYXNvdW5kLmgJCWNvbmZsaWN0IQorJ1gnCWFsbAlmcy94ZnMveGZzX2ZzLmgJCWNvbmZsaWN0IQorCQlhbmQgZnMveGZzL2xpbnV4LTIuNi94ZnNfaW9jdGwzMi5oCisJCWFuZCBpbmNsdWRlL2xpbnV4L2ZhbGxvYy5oCisJCWFuZCBsaW51eC9mcy5oCisnWCcJYWxsCWZzL29jZnMyL29jZnNfZnMuaAljb25mbGljdCEKKydYJwkwMQlsaW51eC9wa3RjZHZkLmgJCWNvbmZsaWN0IQorJ1knCWFsbAlsaW51eC9jeWNsYWRlcy5oCisnWicJMTQtMTUJZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRjdGwuaAorJ1snCTAwLTA3CWxpbnV4L3VzYi90bWMuaAkJVVNCIFRlc3QgYW5kIE1lYXN1cmVtZW50IERldmljZXMKKwkJCQkJPG1haWx0bzpncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KKydhJwlhbGwJbGludXgvYXRtKi5oLCBsaW51eC9zb25ldC5oCUFUTSBvbiBsaW51eAorCQkJCQk8aHR0cDovL2xyY3d3dy5lcGZsLmNoLz4KKydhJwkwMC0wRglkcml2ZXJzL2NyeXB0by9xYXQvcWF0X2NvbW1vbi9hZGZfY2ZnX2NvbW1vbi5oCWNvbmZsaWN0ISBxYXQgZHJpdmVyCisnYicJMDAtRkYJCQkJY29uZmxpY3QhIGJpdDMgdm1lIGhvc3QgYnJpZGdlCisJCQkJCTxtYWlsdG86bmF0YWxpYUBuaWtoZWZrLm5pa2hlZi5ubD4KKydjJwlhbGwJbGludXgvY200MDAwX2NzLmgJY29uZmxpY3QhCisnYycJMDAtN0YJbGludXgvY29tc3RhdHMuaAljb25mbGljdCEKKydjJwkwMC03RglsaW51eC9jb2RhLmgJCWNvbmZsaWN0IQorJ2MnCTAwLTFGCWxpbnV4L2NoaW8uaAkJY29uZmxpY3QhCisnYycJODAtOUYJYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2Noc2MuaAljb25mbGljdCEKKydjJwlBMC1BRiAgIGFyY2gveDg2L2luY2x1ZGUvYXNtL21zci5oCWNvbmZsaWN0IQorJ2QnCTAwLUZGCWxpbnV4L2NoYXIvZHJtL2RybS9oCWNvbmZsaWN0IQorJ2QnCTAyLTQwCXBjbWNpYS9kcy5oCQljb25mbGljdCEKKydkJwlGMC1GRglsaW51eC9kaWdpMS5oCisnZScJYWxsCWxpbnV4L2RpZ2kxLmgJCWNvbmZsaWN0IQorJ2UnCTAwLTFGCWRyaXZlcnMvbmV0L2lyZGEvaXJ0dHktc2lyLmgJY29uZmxpY3QhCisnZicJMDAtMUYJbGludXgvZXh0Ml9mcy5oCQljb25mbGljdCEKKydmJwkwMC0xRglsaW51eC9leHQzX2ZzLmgJCWNvbmZsaWN0IQorJ2YnCTAwLTBGCWZzL2pmcy9qZnNfZGlub2RlLmgJY29uZmxpY3QhCisnZicJMDAtMEYJZnMvZXh0NC9leHQ0LmgJCWNvbmZsaWN0IQorJ2YnCTAwLTBGCWxpbnV4L2ZzLmgJCWNvbmZsaWN0IQorJ2YnCTAwLTBGCWZzL29jZnMyL29jZnMyX2ZzLmgJY29uZmxpY3QhCisnZycJMDAtMEYJbGludXgvdXNiL2dhZGdldGZzLmgKKydnJwkyMC0yRglsaW51eC91c2IvZ19wcmludGVyLmgKKydoJwkwMC03RgkJCQljb25mbGljdCEgQ2hhcm9uIGZpbGVzeXN0ZW0KKwkJCQkJPG1haWx0bzp6YXBtYW5AaW50ZXJsYW4ubmV0PgorJ2gnCTAwLTFGCWxpbnV4L2hwZXQuaAkJY29uZmxpY3QhCisnaCcJODAtOEYJZnMvaGZzcGx1cy9pb2N0bC5jCisnaScJMDAtM0YJbGludXgvaTJvLWRldi5oCQljb25mbGljdCEKKydpJwkwQi0xRglsaW51eC9pcG1pLmgJCWNvbmZsaWN0IQorJ2knCTgwLThGCWxpbnV4L2k4ay5oCisnaicJMDAtM0YJbGludXgvam95c3RpY2suaAorJ2snCTAwLTBGCWxpbnV4L3NwaS9zcGlkZXYuaAljb25mbGljdCEKKydrJwkwMC0wNQl2aWRlby9reXJvLmgJCWNvbmZsaWN0IQorJ2snCTEwLTE3CWxpbnV4L2hzaS9oc2lfY2hhci5oCUhTSSBjaGFyYWN0ZXIgZGV2aWNlCisnbCcJMDAtM0YJbGludXgvdGNmc19mcy5oCQl0cmFuc3BhcmVudCBjcnlwdG9ncmFwaGljIGZpbGUgc3lzdGVtCisJCQkJCTxodHRwOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8qL2h0dHA6Ly9taWtvbm9zLmRpYS51bmlzYS5pdC90Y2ZzPgorJ2wnCTQwLTdGCWxpbnV4L3VkZl9mc19pLmgJaW4gZGV2ZWxvcG1lbnQ6CisJCQkJCTxodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpbnV4LXVkZi8+CisnbScJMDAtMDkJbGludXgvbW10aW1lci5oCQljb25mbGljdCEKKydtJwlhbGwJbGludXgvbXRpby5oCQljb25mbGljdCEKKydtJwlhbGwJbGludXgvc291bmRjYXJkLmgJY29uZmxpY3QhCisnbScJYWxsCWxpbnV4L3N5bmNsaW5rLmgJY29uZmxpY3QhCisnbScJMDAtMTkJZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRjdGwuaAljb25mbGljdCEKKydtJwkwMAlkcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfaW9jdGwuaAljb25mbGljdCEKKydtJwkwMC0xRgluZXQvaXJkYS9pcm1vZC5oCWNvbmZsaWN0IQorJ24nCTAwLTdGCWxpbnV4L25jcF9mcy5oIGFuZCBmcy9uY3Bmcy9pb2N0bC5jCisnbicJODAtOEYJbGludXgvbmlsZnMyX2ZzLmgJTklMRlMyCisnbicJRTAtRkYJbGludXgvbWF0cm94ZmIuaAltYXRyb3hmYgorJ28nCTAwLTFGCWZzL29jZnMyL29jZnMyX2ZzLmgJT0NGUzIKKydvJyAgICAgMDAtMDMgICBtdGQvdWJpLXVzZXIuaAkJY29uZmxpY3QhIChPQ0ZTMiBhbmQgVUJJIG92ZXJsYXBzKQorJ28nICAgICA0MC00MSAgIG10ZC91YmktdXNlci5oCQlVQkkKKydvJyAgICAgMDEtQTEgICBsaW51eC9kdmIvKi5oCQlEVkIKKydwJwkwMC0wRglsaW51eC9waGFudG9tLmgJCWNvbmZsaWN0ISAoT3BlbkhhcHRpY3MgbmVlZHMgdGhpcykKKydwJwkwMC0xRglsaW51eC9ydGMuaAkJY29uZmxpY3QhCisncCcJMDAtM0YJbGludXgvbWMxNDY4MThydGMuaAljb25mbGljdCEKKydwJwk0MC03RglsaW51eC9udnJhbS5oCisncCcJODAtOUYJbGludXgvcHBkZXYuaAkJdXNlci1zcGFjZSBwYXJwb3J0CisJCQkJCTxtYWlsdG86dGltQGN5YmVyZWxrLm5ldD4KKydwJwlBMS1BNQlsaW51eC9wcHMuaAkJTGludXhQUFMKKwkJCQkJPG1haWx0bzpnaW9tZXR0aUBsaW51eC5pdD4KKydxJwkwMC0xRglsaW51eC9zZXJpby5oCisncScJODAtRkYJbGludXgvdGVsZXBob255LmgJSW50ZXJuZXQgUGhvbmVKQUNLLCBJbnRlcm5ldCBMaW5lSkFDSworCQlsaW51eC9peGp1c2VyLmgJCTxodHRwOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8qL2h0dHA6Ly93d3cucXVpY2tuZXQubmV0PgorJ3InCTAwLTFGCWxpbnV4L21zZG9zX2ZzLmggYW5kIGZzL2ZhdC9kaXIuYworJ3MnCWFsbAlsaW51eC9jZGsuaAorJ3QnCTAwLTdGCWxpbnV4L3BwcC1pb2N0bC5oCisndCcJODAtOEYJbGludXgvaXNkbl9wcHAuaAorJ3QnCTkwLTkxCWxpbnV4L3Rvc2hpYmEuaAkJdG9zaGliYSBhbmQgdG9zaGliYV9hY3BpIFNNTQorJ3UnCTAwLTFGCWxpbnV4L3NtYl9mcy5oCQlnb25lCisndScJMjAtM0YJbGludXgvdXZjdmlkZW8uaAlVU0IgdmlkZW8gY2xhc3MgaG9zdCBkcml2ZXIKKyd2JwkwMC0xRglsaW51eC9leHQyX2ZzLmgJCWNvbmZsaWN0IQorJ3YnCTAwLTFGCWxpbnV4L2ZzLmgJCWNvbmZsaWN0IQorJ3YnCTAwLTBGCWxpbnV4L3NvbnlwaS5oCQljb25mbGljdCEKKyd2JwlDMC1GRglsaW51eC9tZXllLmgJCWNvbmZsaWN0IQorJ3cnCWFsbAkJCQlDRVJOIFNDSSBkcml2ZXIKKyd5JwkwMC0xRgkJCQlwYWNrZXQgYmFzZWQgdXNlciBsZXZlbCBjb21tdW5pY2F0aW9ucworCQkJCQk8bWFpbHRvOnphcG1hbkBpbnRlcmxhbi5uZXQ+CisneicJMDAtM0YJCQkJQ0FOIGJ1cyBjYXJkCWNvbmZsaWN0IQorCQkJCQk8bWFpbHRvOmhkc3RpY2hAY29ubmVjdHUudWxtLmNpcmN1bGFyLmRlPgorJ3onCTQwLTdGCQkJCUNBTiBidXMgY2FyZAljb25mbGljdCEKKwkJCQkJPG1haWx0bzpvZUBwb3J0LmRlPgorJ3onCTEwLTRGCWRyaXZlcnMvczM5MC9jcnlwdG8vemNyeXB0X2FwaS5oCWNvbmZsaWN0IQorJ3wnCTAwLTdGCWxpbnV4L21lZGlhLmgKKzB4ODAJMDAtMUYJbGludXgvZmIuaAorMHg4OQkwMC0wNglhcmNoL3g4Ni9pbmNsdWRlL2FzbS9zb2NraW9zLmgKKzB4ODkJMEItREYJbGludXgvc29ja2lvcy5oCisweDg5CUUwLUVGCWxpbnV4L3NvY2tpb3MuaAkJU0lPQ1BST1RPUFJJVkFURSByYW5nZQorMHg4OQlFMC1FRglsaW51eC9kbi5oCQlQUk9UT1BSSVZBVEUgcmFuZ2UKKzB4ODkJRjAtRkYJbGludXgvc29ja2lvcy5oCQlTSU9DREVWUFJJVkFURSByYW5nZQorMHg4QglhbGwJbGludXgvd2lyZWxlc3MuaAorMHg4QwkwMC0zRgkJCQlXaU5SQURpTyBkcml2ZXIKKwkJCQkJPGh0dHA6Ly93d3cud2lucmFkaW8uY29tLmF1Lz4KKzB4OTAJMDAJZHJpdmVycy9jZHJvbS9zYnBjZC5oCisweDkyCTAwLTBGCWRyaXZlcnMvdXNiL21vbi9tb25fYmluLmMKKzB4OTMJNjAtN0YJbGludXgvYXV0b19mcy5oCisweDk0CWFsbAlmcy9idHJmcy9pb2N0bC5oCisweDk3CTAwLTdGCWZzL2NlcGgvaW9jdGwuaAkJQ2VwaCBmaWxlIHN5c3RlbQorMHg5OQkwMC0wRgkJCQk1MzctQWRkaW5ib2FyZCBkcml2ZXIKKwkJCQkJPG1haWx0bzpidWtAYnVrcy5pcG4uZGU+CisweEEwCWFsbAlsaW51eC9zZHAvc2RwLmgJCUluZHVzdHJpYWwgRGV2aWNlIFByb2plY3QKKwkJCQkJPG1haWx0bzprZW5qaUBiaXRnYXRlLmNvbT4KKzB4QTIJMDAtMEYJYXJjaC90aWxlL2luY2x1ZGUvYXNtL2hhcmR3YWxsLmgKKzB4QTMJODAtOEYJUG9ydCBBQ0wJCWluIGRldmVsb3BtZW50OgorCQkJCQk8bWFpbHRvOnRsZXdpc0BtaW5kc3ByaW5nLmNvbT4KKzB4QTMJOTAtOUYJbGludXgvZHRsay5oCisweEFBCTAwLTNGCWxpbnV4L3VhcGkvbGludXgvdXNlcmZhdWx0ZmQuaAorMHhBQgkwMC0xRglsaW51eC9uYmQuaAorMHhBQwkwMC0xRglsaW51eC9yYXcuaAorMHhBRAkwMAlOZXRmaWx0ZXIgZGV2aWNlCWluIGRldmVsb3BtZW50OgorCQkJCQk8bWFpbHRvOnJ1c3R5QHJ1c3Rjb3JwLmNvbS5hdT4KKzB4QUUJYWxsCWxpbnV4L2t2bS5oCQlLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lCisJCQkJCTxtYWlsdG86a3ZtQHZnZXIua2VybmVsLm9yZz4KKzB4QUYJMDAtMUYJbGludXgvZnNsX2h5cGVydmlzb3IuaAlGcmVlc2NhbGUgaHlwZXJ2aXNvcgorMHhCMAlhbGwJUkFUSU8gZGV2aWNlcwkJaW4gZGV2ZWxvcG1lbnQ6CisJCQkJCTxtYWlsdG86dmdvQHJhdGlvLmRlPgorMHhCMQkwMC0xRglQUFBvWAkJCTxtYWlsdG86bW9zdHJvd3NAc3R5eC51d2F0ZXJsb28uY2E+CisweEIzCTAwCWxpbnV4L21tYy9pb2N0bC5oCisweEMwCTAwLTBGCWxpbnV4L3VzYi9pb3dhcnJpb3IuaAorMHhDQQkwMC0wRgl1YXBpL21pc2MvY3hsLmgKKzB4Q0EJODAtOEYJdWFwaS9zY3NpL2N4bGZsYXNoX2lvY3RsLmgKKzB4Q0IJMDAtMUYJQ0JNIHNlcmlhbCBJRUMgYnVzCWluIGRldmVsb3BtZW50OgorCQkJCQk8bWFpbHRvOm1pY2hhZWwua2xlaW5AcHVmZmluLmxiLnNodXR0bGUuZGU+CisweENECTAxCWxpbnV4L3JlaXNlcmZzX2ZzLmgKKzB4Q0YJMDIJZnMvY2lmcy9pb2N0bC5jCisweERCCTAwLTBGCWRyaXZlcnMvY2hhci9td2F2ZS9td2F2ZXB1Yi5oCisweERECTAwLTNGCVpGQ1AgZGV2aWNlIGRyaXZlcglzZWUgZHJpdmVycy9zMzkwL3Njc2kvCisJCQkJCTxtYWlsdG86YWhlcnJtYW5AZGUuaWJtLmNvbT4KKzB4RTUJMDAtM0YJbGludXgvZnVzZS5oCisweEVDCTAwLTAxCWRyaXZlcnMvcGxhdGZvcm0vY2hyb21lL2Nyb3NfZWNfZGV2LmgJQ2hyb21lT1MgRUMgZHJpdmVyCisweEYzCTAwLTNGCWRyaXZlcnMvdXNiL21pc2Mvc2lzdXNidmdhL3Npc3VzYi5oCXNpc2ZiIChpbiBkZXZlbG9wbWVudCkKKwkJCQkJPG1haWx0bzp0aG9tYXNAd2luaXNjaGhvZmVyLm5ldD4KKzB4RjQJMDAtMUYJdmlkZW8vbWJ4ZmIuaAkJbWJ4ZmIKKwkJCQkJPG1haWx0bzpyYXBoQDhkLmNvbT4KKzB4RjYJYWxsCUxUVG5nCQkJTGludXggVHJhY2UgVG9vbGtpdCBOZXh0IEdlbmVyYXRpb24KKwkJCQkJPG1haWx0bzptYXRoaWV1LmRlc25veWVyc0BlZmZpY2lvcy5jb20+CisweEZECWFsbAlsaW51eC9kbS1pb2N0bC5oCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lvc3RhdHMudHh0IGIvRG9jdW1lbnRhdGlvbi9pb3N0YXRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWY2OTRmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pb3N0YXRzLnR4dApAQCAtMCwwICsxLDE2NCBAQAorSS9PIHN0YXRpc3RpY3MgZmllbGRzCistLS0tLS0tLS0tLS0tLS0KKworU2luY2UgMi40LjIwIChhbmQgc29tZSB2ZXJzaW9ucyBiZWZvcmUsIHdpdGggcGF0Y2hlcyksIGFuZCAyLjUuNDUsCittb3JlIGV4dGVuc2l2ZSBkaXNrIHN0YXRpc3RpY3MgaGF2ZSBiZWVuIGludHJvZHVjZWQgdG8gaGVscCBtZWFzdXJlIGRpc2sKK2FjdGl2aXR5LiBUb29scyBzdWNoIGFzIHNhciBhbmQgaW9zdGF0IHR5cGljYWxseSBpbnRlcnByZXQgdGhlc2UgYW5kIGRvCit0aGUgd29yayBmb3IgeW91LCBidXQgaW4gY2FzZSB5b3UgYXJlIGludGVyZXN0ZWQgaW4gY3JlYXRpbmcgeW91ciBvd24KK3Rvb2xzLCB0aGUgZmllbGRzIGFyZSBleHBsYWluZWQgaGVyZS4KKworSW4gMi40IG5vdywgdGhlIGluZm9ybWF0aW9uIGlzIGZvdW5kIGFzIGFkZGl0aW9uYWwgZmllbGRzIGluCisvcHJvYy9wYXJ0aXRpb25zLiAgSW4gMi42LCB0aGUgc2FtZSBpbmZvcm1hdGlvbiBpcyBmb3VuZCBpbiB0d28KK3BsYWNlczogb25lIGlzIGluIHRoZSBmaWxlIC9wcm9jL2Rpc2tzdGF0cywgYW5kIHRoZSBvdGhlciBpcyB3aXRoaW4KK3RoZSBzeXNmcyBmaWxlIHN5c3RlbSwgd2hpY2ggbXVzdCBiZSBtb3VudGVkIGluIG9yZGVyIHRvIG9idGFpbgordGhlIGluZm9ybWF0aW9uLiBUaHJvdWdob3V0IHRoaXMgZG9jdW1lbnQgd2UnbGwgYXNzdW1lIHRoYXQgc3lzZnMKK2lzIG1vdW50ZWQgb24gL3N5cywgYWx0aG91Z2ggb2YgY291cnNlIGl0IG1heSBiZSBtb3VudGVkIGFueXdoZXJlLgorQm90aCAvcHJvYy9kaXNrc3RhdHMgYW5kIHN5c2ZzIHVzZSB0aGUgc2FtZSBzb3VyY2UgZm9yIHRoZSBpbmZvcm1hdGlvbgorYW5kIHNvIHNob3VsZCBub3QgZGlmZmVyLgorCitIZXJlIGFyZSBleGFtcGxlcyBvZiB0aGVzZSBkaWZmZXJlbnQgZm9ybWF0czoKKworMi40OgorICAgMyAgICAgMCAgIDM5MDgyNjgwIGhkYSA0NDYyMTYgNzg0OTI2IDk1NTA2ODggNDM4MjMxMCA0MjQ4NDcgMzEyNzI2IDU5MjIwNTIgMTkzMTAzODAgMCAzMzc2MzQwIDIzNzA1MTYwCisgICAzICAgICAxICAgIDkyMjEyNzggaGRhMSAzNTQ4NiAwIDM1NDk2IDM4MDMwIDAgMCAwIDAgMCAzODAzMCAzODAzMAorCisKKzIuNiBzeXNmczoKKyAgIDQ0NjIxNiA3ODQ5MjYgOTU1MDY4OCA0MzgyMzEwIDQyNDg0NyAzMTI3MjYgNTkyMjA1MiAxOTMxMDM4MCAwIDMzNzYzNDAgMjM3MDUxNjAKKyAgIDM1NDg2ICAgIDM4MDMwICAgIDM4MDMwICAgIDM4MDMwCisKKzIuNiBkaXNrc3RhdHM6CisgICAzICAgIDAgICBoZGEgNDQ2MjE2IDc4NDkyNiA5NTUwNjg4IDQzODIzMTAgNDI0ODQ3IDMxMjcyNiA1OTIyMDUyIDE5MzEwMzgwIDAgMzM3NjM0MCAyMzcwNTE2MAorICAgMyAgICAxICAgaGRhMSAzNTQ4NiAzODAzMCAzODAzMCAzODAzMAorCitPbiAyLjQgeW91IG1pZ2h0IGV4ZWN1dGUgImdyZXAgJ2hkYSAnIC9wcm9jL3BhcnRpdGlvbnMiLiBPbiAyLjYsIHlvdSBoYXZlCithIGNob2ljZSBvZiAiY2F0IC9zeXMvYmxvY2svaGRhL3N0YXQiIG9yICJncmVwICdoZGEgJyAvcHJvYy9kaXNrc3RhdHMiLgorVGhlIGFkdmFudGFnZSBvZiBvbmUgb3ZlciB0aGUgb3RoZXIgaXMgdGhhdCB0aGUgc3lzZnMgY2hvaWNlIHdvcmtzIHdlbGwKK2lmIHlvdSBhcmUgd2F0Y2hpbmcgYSBrbm93biwgc21hbGwgc2V0IG9mIGRpc2tzLiAgL3Byb2MvZGlza3N0YXRzIG1heQorYmUgYSBiZXR0ZXIgY2hvaWNlIGlmIHlvdSBhcmUgd2F0Y2hpbmcgYSBsYXJnZSBudW1iZXIgb2YgZGlza3MgYmVjYXVzZQoreW91J2xsIGF2b2lkIHRoZSBvdmVyaGVhZCBvZiA1MCwgMTAwLCBvciA1MDAgb3IgbW9yZSBvcGVucy9jbG9zZXMgd2l0aAorZWFjaCBzbmFwc2hvdCBvZiB5b3VyIGRpc2sgc3RhdGlzdGljcy4KKworSW4gMi40LCB0aGUgc3RhdGlzdGljcyBmaWVsZHMgYXJlIHRob3NlIGFmdGVyIHRoZSBkZXZpY2UgbmFtZS4gSW4KK3RoZSBhYm92ZSBleGFtcGxlLCB0aGUgZmlyc3QgZmllbGQgb2Ygc3RhdGlzdGljcyB3b3VsZCBiZSA0NDYyMTYuCitCeSBjb250cmFzdCwgaW4gMi42IGlmIHlvdSBsb29rIGF0IC9zeXMvYmxvY2svaGRhL3N0YXQsIHlvdSdsbAorZmluZCBqdXN0IHRoZSBlbGV2ZW4gZmllbGRzLCBiZWdpbm5pbmcgd2l0aCA0NDYyMTYuICBJZiB5b3UgbG9vayBhdAorL3Byb2MvZGlza3N0YXRzLCB0aGUgZWxldmVuIGZpZWxkcyB3aWxsIGJlIHByZWNlZGVkIGJ5IHRoZSBtYWpvciBhbmQKK21pbm9yIGRldmljZSBudW1iZXJzLCBhbmQgZGV2aWNlIG5hbWUuICBFYWNoIG9mIHRoZXNlIGZvcm1hdHMgcHJvdmlkZXMKK2VsZXZlbiBmaWVsZHMgb2Ygc3RhdGlzdGljcywgZWFjaCBtZWFuaW5nIGV4YWN0bHkgdGhlIHNhbWUgdGhpbmdzLgorQWxsIGZpZWxkcyBleGNlcHQgZmllbGQgOSBhcmUgY3VtdWxhdGl2ZSBzaW5jZSBib290LiAgRmllbGQgOSBzaG91bGQKK2dvIHRvIHplcm8gYXMgSS9PcyBjb21wbGV0ZTsgYWxsIG90aGVycyBvbmx5IGluY3JlYXNlICh1bmxlc3MgdGhleQorb3ZlcmZsb3cgYW5kIHdyYXApLiAgWWVzLCB0aGVzZSBhcmUgKDMyLWJpdCBvciA2NC1iaXQpIHVuc2lnbmVkIGxvbmcKKyhuYXRpdmUgd29yZCBzaXplKSBudW1iZXJzLCBhbmQgb24gYSB2ZXJ5IGJ1c3kgb3IgbG9uZy1saXZlZCBzeXN0ZW0gdGhleQorbWF5IHdyYXAuIEFwcGxpY2F0aW9ucyBzaG91bGQgYmUgcHJlcGFyZWQgdG8gZGVhbCB3aXRoIHRoYXQ7IHVubGVzcworeW91ciBvYnNlcnZhdGlvbnMgYXJlIG1lYXN1cmVkIGluIGxhcmdlIG51bWJlcnMgb2YgbWludXRlcyBvciBob3VycywKK3RoZXkgc2hvdWxkIG5vdCB3cmFwIHR3aWNlIGJlZm9yZSB5b3Ugbm90aWNlIHRoZW0uCisKK0VhY2ggc2V0IG9mIHN0YXRzIG9ubHkgYXBwbGllcyB0byB0aGUgaW5kaWNhdGVkIGRldmljZTsgaWYgeW91IHdhbnQKK3N5c3RlbS13aWRlIHN0YXRzIHlvdSdsbCBoYXZlIHRvIGZpbmQgYWxsIHRoZSBkZXZpY2VzIGFuZCBzdW0gdGhlbSBhbGwgdXAuCisKK0ZpZWxkICAxIC0tICMgb2YgcmVhZHMgY29tcGxldGVkCisgICAgVGhpcyBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIHJlYWRzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCitGaWVsZCAgMiAtLSAjIG9mIHJlYWRzIG1lcmdlZCwgZmllbGQgNiAtLSAjIG9mIHdyaXRlcyBtZXJnZWQKKyAgICBSZWFkcyBhbmQgd3JpdGVzIHdoaWNoIGFyZSBhZGphY2VudCB0byBlYWNoIG90aGVyIG1heSBiZSBtZXJnZWQgZm9yCisgICAgZWZmaWNpZW5jeS4gIFRodXMgdHdvIDRLIHJlYWRzIG1heSBiZWNvbWUgb25lIDhLIHJlYWQgYmVmb3JlIGl0IGlzCisgICAgdWx0aW1hdGVseSBoYW5kZWQgdG8gdGhlIGRpc2ssIGFuZCBzbyBpdCB3aWxsIGJlIGNvdW50ZWQgKGFuZCBxdWV1ZWQpCisgICAgYXMgb25seSBvbmUgSS9PLiAgVGhpcyBmaWVsZCBsZXRzIHlvdSBrbm93IGhvdyBvZnRlbiB0aGlzIHdhcyBkb25lLgorRmllbGQgIDMgLS0gIyBvZiBzZWN0b3JzIHJlYWQKKyAgICBUaGlzIGlzIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2VjdG9ycyByZWFkIHN1Y2Nlc3NmdWxseS4KK0ZpZWxkICA0IC0tICMgb2YgbWlsbGlzZWNvbmRzIHNwZW50IHJlYWRpbmcKKyAgICBUaGlzIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNwZW50IGJ5IGFsbCByZWFkcyAoYXMKKyAgICBtZWFzdXJlZCBmcm9tIF9fbWFrZV9yZXF1ZXN0KCkgdG8gZW5kX3RoYXRfcmVxdWVzdF9sYXN0KCkpLgorRmllbGQgIDUgLS0gIyBvZiB3cml0ZXMgY29tcGxldGVkCisgICAgVGhpcyBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIHdyaXRlcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgorRmllbGQgIDYgLS0gIyBvZiB3cml0ZXMgbWVyZ2VkCisgICAgU2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBmaWVsZCAyLgorRmllbGQgIDcgLS0gIyBvZiBzZWN0b3JzIHdyaXR0ZW4KKyAgICBUaGlzIGlzIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2VjdG9ycyB3cml0dGVuIHN1Y2Nlc3NmdWxseS4KK0ZpZWxkICA4IC0tICMgb2YgbWlsbGlzZWNvbmRzIHNwZW50IHdyaXRpbmcKKyAgICBUaGlzIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNwZW50IGJ5IGFsbCB3cml0ZXMgKGFzCisgICAgbWVhc3VyZWQgZnJvbSBfX21ha2VfcmVxdWVzdCgpIHRvIGVuZF90aGF0X3JlcXVlc3RfbGFzdCgpKS4KK0ZpZWxkICA5IC0tICMgb2YgSS9PcyBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MKKyAgICBUaGUgb25seSBmaWVsZCB0aGF0IHNob3VsZCBnbyB0byB6ZXJvLiBJbmNyZW1lbnRlZCBhcyByZXF1ZXN0cyBhcmUKKyAgICBnaXZlbiB0byBhcHByb3ByaWF0ZSBzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSBhbmQgZGVjcmVtZW50ZWQgYXMgdGhleSBmaW5pc2guCitGaWVsZCAxMCAtLSAjIG9mIG1pbGxpc2Vjb25kcyBzcGVudCBkb2luZyBJL09zCisgICAgVGhpcyBmaWVsZCBpbmNyZWFzZXMgc28gbG9uZyBhcyBmaWVsZCA5IGlzIG5vbnplcm8uCitGaWVsZCAxMSAtLSB3ZWlnaHRlZCAjIG9mIG1pbGxpc2Vjb25kcyBzcGVudCBkb2luZyBJL09zCisgICAgVGhpcyBmaWVsZCBpcyBpbmNyZW1lbnRlZCBhdCBlYWNoIEkvTyBzdGFydCwgSS9PIGNvbXBsZXRpb24sIEkvTworICAgIG1lcmdlLCBvciByZWFkIG9mIHRoZXNlIHN0YXRzIGJ5IHRoZSBudW1iZXIgb2YgSS9PcyBpbiBwcm9ncmVzcworICAgIChmaWVsZCA5KSB0aW1lcyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzcGVudCBkb2luZyBJL08gc2luY2UgdGhlCisgICAgbGFzdCB1cGRhdGUgb2YgdGhpcyBmaWVsZC4gIFRoaXMgY2FuIHByb3ZpZGUgYW4gZWFzeSBtZWFzdXJlIG9mIGJvdGgKKyAgICBJL08gY29tcGxldGlvbiB0aW1lIGFuZCB0aGUgYmFja2xvZyB0aGF0IG1heSBiZSBhY2N1bXVsYXRpbmcuCisKKworVG8gYXZvaWQgaW50cm9kdWNpbmcgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MsIG5vIGxvY2tzIGFyZSBoZWxkIHdoaWxlCittb2RpZnlpbmcgdGhlc2UgY291bnRlcnMuICBUaGlzIGltcGxpZXMgdGhhdCBtaW5vciBpbmFjY3VyYWNpZXMgbWF5IGJlCitpbnRyb2R1Y2VkIHdoZW4gY2hhbmdlcyBjb2xsaWRlLCBzbyAoZm9yIGluc3RhbmNlKSBhZGRpbmcgdXAgYWxsIHRoZQorcmVhZCBJL09zIGlzc3VlZCBwZXIgcGFydGl0aW9uIHNob3VsZCBlcXVhbCB0aG9zZSBtYWRlIHRvIHRoZSBkaXNrcyAuLi4KK2J1dCBkdWUgdG8gdGhlIGxhY2sgb2YgbG9ja2luZyBpdCBtYXkgb25seSBiZSB2ZXJ5IGNsb3NlLgorCitJbiAyLjYsIHRoZXJlIGFyZSBjb3VudGVycyBmb3IgZWFjaCBDUFUsIHdoaWNoIG1ha2UgdGhlIGxhY2sgb2YgbG9ja2luZworYWxtb3N0IGEgbm9uLWlzc3VlLiAgV2hlbiB0aGUgc3RhdGlzdGljcyBhcmUgcmVhZCwgdGhlIHBlci1DUFUgY291bnRlcnMKK2FyZSBzdW1tZWQgKHBvc3NpYmx5IG92ZXJmbG93aW5nIHRoZSB1bnNpZ25lZCBsb25nIHZhcmlhYmxlIHRoZXkgYXJlCitzdW1tZWQgdG8pIGFuZCB0aGUgcmVzdWx0IGdpdmVuIHRvIHRoZSB1c2VyLiAgVGhlcmUgaXMgbm8gY29udmVuaWVudAordXNlciBpbnRlcmZhY2UgZm9yIGFjY2Vzc2luZyB0aGUgcGVyLUNQVSBjb3VudGVycyB0aGVtc2VsdmVzLgorCitEaXNrcyB2cyBQYXJ0aXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXJlIHdlcmUgc2lnbmlmaWNhbnQgY2hhbmdlcyBiZXR3ZWVuIDIuNCBhbmQgMi42IGluIHRoZSBJL08gc3Vic3lzdGVtLgorQXMgYSByZXN1bHQsIHNvbWUgc3RhdGlzdGljIGluZm9ybWF0aW9uIGRpc2FwcGVhcmVkLiBUaGUgdHJhbnNsYXRpb24gZnJvbQorYSBkaXNrIGFkZHJlc3MgcmVsYXRpdmUgdG8gYSBwYXJ0aXRpb24gdG8gdGhlIGRpc2sgYWRkcmVzcyByZWxhdGl2ZSB0bwordGhlIGhvc3QgZGlzayBoYXBwZW5zIG11Y2ggZWFybGllci4gIEFsbCBtZXJnZXMgYW5kIHRpbWluZ3Mgbm93IGhhcHBlbgorYXQgdGhlIGRpc2sgbGV2ZWwgcmF0aGVyIHRoYW4gYXQgYm90aCB0aGUgZGlzayBhbmQgcGFydGl0aW9uIGxldmVsIGFzCitpbiAyLjQuICBDb25zZXF1ZW50bHksIHlvdSdsbCBzZWUgYSBkaWZmZXJlbnQgc3RhdGlzdGljcyBvdXRwdXQgb24gMi42IGZvcgorcGFydGl0aW9ucyBmcm9tIHRoYXQgZm9yIGRpc2tzLiAgVGhlcmUgYXJlIG9ubHkgKmZvdXIqIGZpZWxkcyBhdmFpbGFibGUKK2ZvciBwYXJ0aXRpb25zIG9uIDIuNiBtYWNoaW5lcy4gIFRoaXMgaXMgcmVmbGVjdGVkIGluIHRoZSBleGFtcGxlcyBhYm92ZS4KKworRmllbGQgIDEgLS0gIyBvZiByZWFkcyBpc3N1ZWQKKyAgICBUaGlzIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgcmVhZHMgaXNzdWVkIHRvIHRoaXMgcGFydGl0aW9uLgorRmllbGQgIDIgLS0gIyBvZiBzZWN0b3JzIHJlYWQKKyAgICBUaGlzIGlzIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2VjdG9ycyByZXF1ZXN0ZWQgdG8gYmUgcmVhZCBmcm9tIHRoaXMKKyAgICBwYXJ0aXRpb24uCitGaWVsZCAgMyAtLSAjIG9mIHdyaXRlcyBpc3N1ZWQKKyAgICBUaGlzIGlzIHRoZSB0b3RhbCBudW1iZXIgb2Ygd3JpdGVzIGlzc3VlZCB0byB0aGlzIHBhcnRpdGlvbi4KK0ZpZWxkICA0IC0tICMgb2Ygc2VjdG9ycyB3cml0dGVuCisgICAgVGhpcyBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIHNlY3RvcnMgcmVxdWVzdGVkIHRvIGJlIHdyaXR0ZW4gdG8KKyAgICB0aGlzIHBhcnRpdGlvbi4KKworTm90ZSB0aGF0IHNpbmNlIHRoZSBhZGRyZXNzIGlzIHRyYW5zbGF0ZWQgdG8gYSBkaXNrLXJlbGF0aXZlIG9uZSwgYW5kIG5vCityZWNvcmQgb2YgdGhlIHBhcnRpdGlvbi1yZWxhdGl2ZSBhZGRyZXNzIGlzIGtlcHQsIHRoZSBzdWJzZXF1ZW50IHN1Y2Nlc3MKK29yIGZhaWx1cmUgb2YgdGhlIHJlYWQgY2Fubm90IGJlIGF0dHJpYnV0ZWQgdG8gdGhlIHBhcnRpdGlvbi4gIEluIG90aGVyCit3b3JkcywgdGhlIG51bWJlciBvZiByZWFkcyBmb3IgcGFydGl0aW9ucyBpcyBjb3VudGVkIHNsaWdodGx5IGJlZm9yZSB0aW1lCitvZiBxdWV1aW5nIGZvciBwYXJ0aXRpb25zLCBhbmQgYXQgY29tcGxldGlvbiBmb3Igd2hvbGUgZGlza3MuICBUaGlzIGlzCithIHN1YnRsZSBkaXN0aW5jdGlvbiB0aGF0IGlzIHByb2JhYmx5IHVuaW50ZXJlc3RpbmcgZm9yIG1vc3QgY2FzZXMuCisKK01vcmUgc2lnbmlmaWNhbnQgaXMgdGhlIGVycm9yIGluZHVjZWQgYnkgY291bnRpbmcgdGhlIG51bWJlcnMgb2YKK3JlYWRzL3dyaXRlcyBiZWZvcmUgbWVyZ2VzIGZvciBwYXJ0aXRpb25zIGFuZCBhZnRlciBmb3IgZGlza3MuIFNpbmNlIGEKK3R5cGljYWwgd29ya2xvYWQgdXN1YWxseSBjb250YWlucyBhIGxvdCBvZiBzdWNjZXNzaXZlIGFuZCBhZGphY2VudCByZXF1ZXN0cywKK3RoZSBudW1iZXIgb2YgcmVhZHMvd3JpdGVzIGlzc3VlZCBjYW4gYmUgc2V2ZXJhbCB0aW1lcyBoaWdoZXIgdGhhbiB0aGUKK251bWJlciBvZiByZWFkcy93cml0ZXMgY29tcGxldGVkLgorCitJbiAyLjYuMjUsIHRoZSBmdWxsIHN0YXRpc3RpYyBzZXQgaXMgYWdhaW4gYXZhaWxhYmxlIGZvciBwYXJ0aXRpb25zIGFuZAorZGlzayBhbmQgcGFydGl0aW9uIHN0YXRpc3RpY3MgYXJlIGNvbnNpc3RlbnQgYWdhaW4uIFNpbmNlIHdlIHN0aWxsIGRvbid0CitrZWVwIHJlY29yZCBvZiB0aGUgcGFydGl0aW9uLXJlbGF0aXZlIGFkZHJlc3MsIGFuIG9wZXJhdGlvbiBpcyBhdHRyaWJ1dGVkIHRvCit0aGUgcGFydGl0aW9uIHdoaWNoIGNvbnRhaW5zIHRoZSBmaXJzdCBzZWN0b3Igb2YgdGhlIHJlcXVlc3QgYWZ0ZXIgdGhlCitldmVudHVhbCBtZXJnZXMuIEFzIHJlcXVlc3RzIGNhbiBiZSBtZXJnZWQgYWNyb3NzIHBhcnRpdGlvbiwgdGhpcyBjb3VsZCBsZWFkCit0byBzb21lIChwcm9iYWJseSBpbnNpZ25pZmljYW50KSBpbmFjY3VyYWN5LgorCitBZGRpdGlvbmFsIG5vdGVzCistLS0tLS0tLS0tLS0tLS0tCisKK0luIDIuNiwgc3lzZnMgaXMgbm90IG1vdW50ZWQgYnkgZGVmYXVsdC4gIElmIHlvdXIgZGlzdHJpYnV0aW9uIG9mCitMaW51eCBoYXNuJ3QgYWRkZWQgaXQgYWxyZWFkeSwgaGVyZSdzIHRoZSBsaW5lIHlvdSdsbCB3YW50IHRvIGFkZCB0bworeW91ciAvZXRjL2ZzdGFiOgorCitub25lIC9zeXMgc3lzZnMgZGVmYXVsdHMgMCAwCisKKworSW4gMi42LCBhbGwgZGlzayBzdGF0aXN0aWNzIHdlcmUgcmVtb3ZlZCBmcm9tIC9wcm9jL3N0YXQuICBJbiAyLjQsIHRoZXkKK2FwcGVhciBpbiBib3RoIC9wcm9jL3BhcnRpdGlvbnMgYW5kIC9wcm9jL3N0YXQsIGFsdGhvdWdoIHRoZSBvbmVzIGluCisvcHJvYy9zdGF0IHRha2UgYSB2ZXJ5IGRpZmZlcmVudCBmb3JtYXQgZnJvbSB0aG9zZSBpbiAvcHJvYy9wYXJ0aXRpb25zCisoc2VlIHByb2MoNSksIGlmIHlvdXIgc3lzdGVtIGhhcyBpdC4pCisKKy0tIHJpY2tsaW5kQHVzLmlibS5jb20KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaXJxZmxhZ3MtdHJhY2luZy50eHQgYi9Eb2N1bWVudGF0aW9uL2lycWZsYWdzLXRyYWNpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZGEwNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lycWZsYWdzLXRyYWNpbmcudHh0CkBAIC0wLDAgKzEsNTAgQEAKK0lSUS1mbGFncyBzdGF0ZSB0cmFjaW5nCisKK3N0YXJ0ZWQgYnkgSW5nbyBNb2xuYXIgPG1pbmdvQHJlZGhhdC5jb20+CisKK3RoZSAiaXJxLWZsYWdzIHRyYWNpbmciIGZlYXR1cmUgInRyYWNlcyIgaGFyZGlycSBhbmQgc29mdGlycSBzdGF0ZSwgaW4KK3RoYXQgaXQgZ2l2ZXMgaW50ZXJlc3RlZCBzdWJzeXN0ZW1zIGFuIG9wcG9ydHVuaXR5IHRvIGJlIG5vdGlmaWVkIG9mCitldmVyeSBoYXJkaXJxcy1vZmYvaGFyZGlycXMtb24sIHNvZnRpcnFzLW9mZi9zb2Z0aXJxcy1vbiBldmVudCB0aGF0CitoYXBwZW5zIGluIHRoZSBrZXJuZWwuCisKK0NPTkZJR19UUkFDRV9JUlFGTEFHU19TVVBQT1JUIGlzIG5lZWRlZCBmb3IgQ09ORklHX1BST1ZFX1NQSU5fTE9DS0lORworYW5kIENPTkZJR19QUk9WRV9SV19MT0NLSU5HIHRvIGJlIG9mZmVyZWQgYnkgdGhlIGdlbmVyaWMgbG9jayBkZWJ1Z2dpbmcKK2NvZGUuIE90aGVyd2lzZSBvbmx5IENPTkZJR19QUk9WRV9NVVRFWF9MT0NLSU5HIGFuZAorQ09ORklHX1BST1ZFX1JXU0VNX0xPQ0tJTkcgd2lsbCBiZSBvZmZlcmVkIG9uIGFuIGFyY2hpdGVjdHVyZSAtIHRoZXNlCithcmUgbG9ja2luZyBBUElzIHRoYXQgYXJlIG5vdCB1c2VkIGluIElSUSBjb250ZXh0LiAodGhlIG9uZSBleGNlcHRpb24KK2ZvciByd3NlbXMgaXMgd29ya2VkIGFyb3VuZCkKKworYXJjaGl0ZWN0dXJlIHN1cHBvcnQgZm9yIHRoaXMgaXMgY2VydGFpbmx5IG5vdCBpbiB0aGUgInRyaXZpYWwiCitjYXRlZ29yeSwgYmVjYXVzZSBsb3RzIG9mIGxvd2xldmVsIGFzc2VtYmx5IGNvZGUgZGVhbCB3aXRoIGlycS1mbGFncworc3RhdGUgY2hhbmdlcy4gQnV0IGFuIGFyY2hpdGVjdHVyZSBjYW4gYmUgaXJxLWZsYWdzLXRyYWNpbmcgZW5hYmxlZCBpbiBhCityYXRoZXIgc3RyYWlnaHRmb3J3YXJkIGFuZCByaXNrLWZyZWUgbWFubmVyLgorCitBcmNoaXRlY3R1cmVzIHRoYXQgd2FudCB0byBzdXBwb3J0IHRoaXMgbmVlZCB0byBkbyBhIGNvdXBsZSBvZgorY29kZS1vcmdhbml6YXRpb25hbCBjaGFuZ2VzIGZpcnN0OgorCistIGFkZCBhbmQgZW5hYmxlIFRSQUNFX0lSUUZMQUdTX1NVUFBPUlQgaW4gdGhlaXIgYXJjaCBsZXZlbCBLY29uZmlnIGZpbGUKKworYW5kIHRoZW4gYSBjb3VwbGUgb2YgZnVuY3Rpb25hbCBjaGFuZ2VzIGFyZSBuZWVkZWQgYXMgd2VsbCB0byBpbXBsZW1lbnQKK2lycS1mbGFncy10cmFjaW5nIHN1cHBvcnQ6CisKKy0gaW4gbG93bGV2ZWwgZW50cnkgY29kZSBhZGQgKGJ1aWxkLWNvbmRpdGlvbmFsKSBjYWxscyB0byB0aGUKKyAgdHJhY2VfaGFyZGlycXNfb2ZmKCkvdHJhY2VfaGFyZGlycXNfb24oKSBmdW5jdGlvbnMuIFRoZSBsb2NrIHZhbGlkYXRvcgorICBjbG9zZWx5IGd1YXJkcyB3aGV0aGVyIHRoZSAncmVhbCcgaXJxLWZsYWdzIG1hdGNoZXMgdGhlICd2aXJ0dWFsJworICBpcnEtZmxhZ3Mgc3RhdGUsIGFuZCBjb21wbGFpbnMgbG91ZGx5IChhbmQgdHVybnMgaXRzZWxmIG9mZikgaWYgdGhlCisgIHR3byBkbyBub3QgbWF0Y2guIFVzdWFsbHkgbW9zdCBvZiB0aGUgdGltZSBmb3IgYXJjaCBzdXBwb3J0IGZvcgorICBpcnEtZmxhZ3MtdHJhY2luZyBpcyBzcGVudCBpbiB0aGlzIHN0YXRlOiBsb29rIGF0IHRoZSBsb2NrZGVwCisgIGNvbXBsYWludCwgdHJ5IHRvIGZpZ3VyZSBvdXQgdGhlIGFzc2VtYmx5IGNvZGUgd2UgZGlkIG5vdCBjb3ZlciB5ZXQsCisgIGZpeCBhbmQgcmVwZWF0LiBPbmNlIHRoZSBzeXN0ZW0gaGFzIGJvb3RlZCB1cCBhbmQgd29ya3Mgd2l0aG91dCBhCisgIGxvY2tkZXAgY29tcGxhaW50IGluIHRoZSBpcnEtZmxhZ3MtdHJhY2luZyBmdW5jdGlvbnMgYXJjaCBzdXBwb3J0IGlzCisgIGNvbXBsZXRlLgorLSBpZiB0aGUgYXJjaGl0ZWN0dXJlIGhhcyBub24tbWFza2FibGUgaW50ZXJydXB0cyB0aGVuIHRob3NlIG5lZWQgdG8gYmUKKyAgZXhjbHVkZWQgZnJvbSB0aGUgaXJxLXRyYWNpbmcgW2FuZCBsb2NrIHZhbGlkYXRpb25dIG1lY2hhbmlzbSB2aWEKKyAgbG9ja2RlcF9vZmYoKS9sb2NrZGVwX29uKCkuCisKK2luIGdlbmVyYWwgdGhlcmUgaXMgbm8gcmlzayBmcm9tIGhhdmluZyBhbiBpbmNvbXBsZXRlIGlycS1mbGFncy10cmFjaW5nCitpbXBsZW1lbnRhdGlvbiBpbiBhbiBhcmNoaXRlY3R1cmU6IGxvY2tkZXAgd2lsbCBkZXRlY3QgdGhhdCBhbmQgd2lsbAordHVybiBpdHNlbGYgb2ZmLiBJLmUuIHRoZSBsb2NrIHZhbGlkYXRvciB3aWxsIHN0aWxsIGJlIHJlbGlhYmxlLiBUaGVyZQorc2hvdWxkIGJlIG5vIGNyYXNoZXMgZHVlIHRvIGlycS10cmFjaW5nIGJ1Z3MuIChleGNlcHQgaWYgdGhlIGFzc2VtYmx5CitjaGFuZ2VzIGJyZWFrIG90aGVyIGNvZGUgYnkgbW9kaWZ5aW5nIGNvbmRpdGlvbnMgb3IgcmVnaXN0ZXJzIHRoYXQKK3Nob3VsZG4ndCBiZSkKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pc2FwbnAudHh0IGIvRG9jdW1lbnRhdGlvbi9pc2FwbnAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwMGQxYjUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lzYXBucC50eHQKQEAgLTAsMCArMSwxNCBAQAorSVNBIFBsdWcgJiBQbGF5IHN1cHBvcnQgYnkgSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBzdXNlLmN6PgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbnRlcmZhY2UgL3Byb2MvaXNhcG5wCis9PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBpbnRlcmZhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2VlIHBucC50eHQgZm9yIG1vcmUgZGV0YWlscy4KKworSW50ZXJmYWNlIC9wcm9jL2J1cy9pc2FwbnAKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgZGlyZWN0b3J5IGFsbG93cyBhY2Nlc3MgdG8gSVNBIFBuUCBjYXJkcyBhbmQgbG9naWNhbCBkZXZpY2VzLgorVGhlIHJlZ3VsYXIgZmlsZXMgY29udGFpbiB0aGUgY29udGVudHMgb2YgSVNBIFBuUCByZWdpc3RlcnMgZm9yCithIGxvZ2ljYWwgZGV2aWNlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pc2RuLzAwLUlOREVYIGIvRG9jdW1lbnRhdGlvbi9pc2RuLzAwLUlOREVYCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4N2UzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lzZG4vMDAtSU5ERVgKQEAgLTAsMCArMSw1MCBAQAorMDAtSU5ERVgKKwktIHRoaXMgZmlsZSAoaW5mbyBvbiBJU0ROIGltcGxlbWVudGF0aW9uIGZvciBMaW51eCkKK0NSRURJVFMKKwktIGxpc3Qgb2YgdGhlIGtpbmQgZm9sa3MgdGhhdCBicm91Z2h0IHlvdSB0aGlzIHN0dWZmLgorSGlTYXguY2VydAorCS0gaW5mb3JtYXRpb24gYWJvdXQgdGhlIElUVSBhcHByb3ZhbCBjZXJ0aWZpY2F0aW9uIG9mIHRoZSBIaVNheCBkcml2ZXIuCitJTlRFUkZBQ0UKKwktIGRlc2NyaXB0aW9uIG9mIGlzZG40bGludXggTGluayBMZXZlbCBhbmQgSGFyZHdhcmUgTGV2ZWwgaW50ZXJmYWNlcy4KK0lOVEVSRkFDRS5mYXgKKwktIGRlc2NyaXB0aW9uIG9mIHRoZSBmYXggc3ViaW50ZXJmYWNlIG9mIGlzZG40bGludXguCitJTlRFUkZBQ0UuQ0FQSQorCS0gZGVzY3JpcHRpb24gb2Yga2VybmVsIENBUEkgTGluayBMZXZlbCB0byBIYXJkd2FyZSBMZXZlbCBpbnRlcmZhY2UuCitSRUFETUUKKwktIGdlbmVyYWwgaW5mbyBvbiB3aGF0IHlvdSBuZWVkIGFuZCB3aGF0IHRvIGRvIGZvciBMaW51eCBJU0ROLgorUkVBRE1FLkZBUQorCS0gZ2VuZXJhbCBpbmZvIGZvciBGQVEuCitSRUFETUUuSGlTYXgKKwktIGluZm8gb24gdGhlIEhpU2F4IGRyaXZlciB3aGljaCByZXBsYWNlcyB0aGUgb2xkIHRlbGVzLgorUkVBRE1FLmFjdDIwMDAKKwktIGluZm8gb24gZHJpdmVyIGZvciBJQk0gQUNULTIwMDAgY2FyZC4KK1JFQURNRS5hdWRpbworCS0gaW5mbyBmb3IgcnVubmluZyBhdWRpbyBvdmVyIElTRE4uCitSRUFETUUuYXZtYjEKKwktIGluZm8gb24gZHJpdmVyIGZvciBBVk0tQjEgSVNETiBjYXJkLgorUkVBRE1FLmNvbmNhcAorCS0gaW5mbyBvbiAiQ09OQ0FQIiBlbmNhcHN1bGF0aW9uIHByb3RvY29sIGludGVyZmFjZSB1c2VkIGZvciBYLjI1LgorUkVBRE1FLmRpdmVyc2lvbgorCS0gaW5mbyBvbiBtb2R1bGUgZm9yIGlzZG4gZGl2ZXJzaW9uIHNlcnZpY2VzLgorUkVBRE1FLmZheAorCS0gaW5mbyBmb3IgdXNpbmcgRmF4IG92ZXIgSVNETi4KK1JFQURNRS5naWdhc2V0CisJLSBpbmZvIG9uIHRoZSBkcml2ZXJzIGZvciBTaWVtZW5zIEdpZ2FzZXQgSVNETiBhZGFwdGVycworUkVBRE1FLmhmYy1wY2kKKwktIGluZm8gb24gaGZjLXBjaSBiYXNlZCBjYXJkcy4KK1JFQURNRS5oeXNkbgorICAgICAgICAtIGluZm8gb24gZHJpdmVyIGZvciBIeXBlcmNvcGUgYWN0aXZlIEhZU0ROIGNhcmRzCitSRUFETUUuaWNuCisJLSBpbmZvIG9uIHRoZSBJQ04tSVNETi1jYXJkIGFuZCBpdHMgZHJpdmVyLgorUkVBRE1FLm1JU0ROCisJLSBpbmZvIG9uIHRoZSBNb2R1bGFyIElTRE4gc3Vic3lzdGVtIChtSVNETikKK1JFQURNRS5wY2JpdAorCS0gaW5mbyBvbiB0aGUgUENCSVQtRCBJU0ROIGFkYXB0ZXIgYW5kIGRyaXZlci4KK1JFQURNRS5zYworCS0gaW5mbyBvbiBkcml2ZXIgZm9yIFNwZWxsY2FzdGVyIGNhcmRzLgorUkVBRE1FLnN5bmNwcHAKKwktIGluZm8gb24gcnVubmluZyBTeW5jIFBQUCBvdmVyIElTRE4uCitSRUFETUUueDI1CisJLSBpbmZvIGZvciBydW5uaW5nIFguMjUgb3ZlciBJU0ROLgorc3luY1BQUC5GQVEKKwktIGZyZXF1ZW50bHkgYXNrZWQgcXVlc3Rpb25zIGFib3V0IHJ1bm5pbmcgUFBQIG92ZXIgSVNETi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaXNkbi9DUkVESVRTIGIvRG9jdW1lbnRhdGlvbi9pc2RuL0NSRURJVFMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE2NzllOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaXNkbi9DUkVESVRTCkBAIC0wLDAgKzEsNzAgQEAKKworSSB3YW50IHRvIHRoYW5rIGFsbCB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcyBwcm9qZWN0IGFuZCBlc3BlY2lhbGx5IHRvOgorKGluIGFscGhhYmV0aWNhbCBvcmRlcikKKworVGhvbWFzIEJvZ2VuZMO2cmZlciAodHNib2dlbmRAYmlnYnVnLmZyYW5rZW4uZGUpCisgIFRlc3RlciwgbG90cyBvZiBidWdmaXhlcyBhbmQgaGludHMuCisKK0FsYW4gQ294IChhbGFuQGx4b3JndWsudWt1dS5vcmcudWspCisgIEZvciBoZWxwIGdldHRpbmcgaW50byBzdGFuZGFyZC1rZXJuZWwuCisKK0hlbm5lciBFaXNlbiAoZWlzQGJhdHkuaGFuc2UuZGUpCisgIEZvciBYLjI1IGltcGxlbWVudGF0aW9uLgorCitWb2xrZXIgR8O2dHogKHZvbGtlckBvb3BzLmZyYW5rZW4uZGUpCisgIEZvciBjb250cmlidXRpb24gb2YgbWFuLXBhZ2VzLCB0aGUgaW1vbnR0eS10b29sIGFuZCBhIHBlcmZlY3QKKyAgbWFpbnRhaW5pbmcgb2YgdGhlIG1haWxpbmctbGlzdCBhdCBodWItd3VlLgorCitNYXR0aGlhcyBIZXNzbGVyIChoZXNzbGVyQGlzZG40bGludXguZGUpCisgIEZvciBjcmVhdGluZyBhbmQgbWFpbnRhaW5pbmcgdGhlIEZBUS4KKworQmVybmhhcmQgSGFpbGVyIChCZXJuaGFyZC5IYWlsZXJAbHJ6LnVuaS1tdWVuY2hlbi5kZSkKKyAgRm9yIGNyZWF0aW5nIHRoZSBGQVEsIGFuZCB0aGUgbGVhZnNpdGUgSE9XVE8uIAorCitNaWNoYWVsICdHaGFuZGknIEhlcm9sZCAobWljaGFlbEBhYmFkb25uYS5mcmFua2VuLmRlKQorICBGb3IgY29udHJpYnV0aW9uIG9mIHRoZSB2Ym94IGFuc3dlcmluZyBtYWNoaW5lLgorCitNaWNoYWVsIEhpcHAgKE1pY2hhZWwuSGlwcEBzdHVkZW50LnVuaS10dWViaW5nZW4uZGUpCisgIEZvciBoaXMgU3luYy1QUFAtY29kZS4KKworS2Fyc3RlbiBLZWlsIChrZWlsQGlzZG40bGludXguZGUpCisgIEZvciBhZGRpbmcgMVRSNi1zdXBwb3J0IHRvIHRoZSBUZWxlcy1kcml2ZXIuCisgIEZvciB0aGUgSGlTYXgtZHJpdmVyLgorCitNaWNoYWVsIEtuaWdnZSAoa25pY2tAY292ZS5oYW4uZGUpCisgIEZvciBjb250cmlidXRpbmcgdGhlIGltb24tdG9vbAorCitBbmRyZWFzIEtvb2wgKGFrb29sQEtvb2wuZi5FVW5ldC5kZSkKKyAgRm9yIGNvbnRyaWJ1dGlvbiBvZiB0aGUgaXNkbmxvZy9pc2RucmVwLXRvb2wKKworUGVkcm8gUm9xdWUgTWFycXVlcyAocm9xdWVAZGkuZmMudWwucHQpCisgIEZvciBsb3Qgb2YgbmV3IGlkZWFzIGFuZCB0aGUgcGNiaXQgZHJpdmVyLgorCitFYmVyaGFyZCBNw7Zua2ViZXJnIChlbW9lbmtlQGd3ZGcuZGUpCisgIEZvciB0ZXN0aW5nIGFuZCBoZWxwIHRvIGdldCBpbnRvIGtlcm5lbC4KKworVGhvbWFzIE5ldW1hbm4gKHRuQHJ1aHIuZGUpCisgIEZvciBoZWxwIHdpdGggQ2lzY28tU0xBUlAgYW5kIGtlZXBhbGl2ZQorCitKYW4gZGVuIE91ZGVuIChkZW5vdWRlbkBncm9vdmluLnhzNGFsbC5ubCkKKyAgRm9yIGNvbnRyaWJ1dGlvbiBvZiB0aGUgb3JpZ2luYWwgdGVsZXMtZHJpdmVyCisKK0NhcnN0ZW4gUGFldGggKGNhbGxlQGNhbGxlLmluLWJlcmxpbi5kZSkKKyAgRm9yIHRoZSBBVk0tQjEtQ0FQSTIuMCBkcml2ZXIKKworVGhvbWFzIFBmZWlmZmVyIChwZmVpZmZlckBwZHMuZGUpCisgIEZvciBWLjExMCwgZXh0ZW5kZWQgVC43MCBhbmQgSHlsYWZheCBleHRlbnNpb25zIGluIGlzZG5fdHR5LmMKKworTWF4IFJpZWdlbCAocmllZ2VsQG1heC5mcmFua2VuLmRlKQorICBGb3IgbWFraW5nIHRoZSBJQ04gaGFyZHdhcmUtZG9jdW1lbnRhdGlvbiBhbmQgdGVzdC1lcXVpcG1lbnQgYXZhaWxhYmxlLgorCitBcm1pbiBTY2hpbmRsZXIgKG1hY0BtZWx3YXJlLmRlKQorICBGb3IgdGhlIGVpY29uIGFjdGl2ZSBjYXJkIGRyaXZlci4KKworR2VyaGFyZCAnRmlkbycgU2NobmVpZGVyIChmaWRvQHd1ZmYubWF5bi5kZSkKKyAgRm9yIGhlYXZ5LWR1dHktYmV0YS10ZXN0aW5nIHdpdGggaGlzIEJCUyA7KQorCitUaG9tYXMgVWhsICh1aGxAdGhpbmsuZGUpCisgIEZvciBkaXN0cmlidXRpbmcgdGhlIGNhcmRzLgorICBGb3IgcHVzaGluZyBtZSB0byB3b3JrIDstKQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lzZG4vSGlTYXguY2VydCBiL0RvY3VtZW50YXRpb24vaXNkbi9IaVNheC5jZXJ0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyYTZmY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lzZG4vSGlTYXguY2VydApAQCAtMCwwICsxLDk2IEBACistLS0tLUJFR0lOIFBHUCBTSUdORUQgTUVTU0FHRS0tLS0tCisKK0ZpcnN0OgorCisgICAgSGlTYXggaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworSG93ZXZlciwgaWYgeW91IHdpc2ggdG8gbW9kaWZ5IHRoZSBIaVNheCBzb3VyY2VzLCBwbGVhc2Ugbm90ZSB0aGUgZm9sbG93aW5nOgorCitIaVNheCBoYXMgcGFzc2VkIHRoZSBJVFUgYXBwcm92YWwgdGVzdCBzdWl0ZSB3aXRoIEVMU0EgUXVpY2tzdGVwIElTRE4gY2FyZHMKK2FuZCBFaWNvbiBUZWNobm9sb2d5IERpdmEgMi4wMSBQQ0kgY2FyZC4KK1RoZSBjZXJ0aWZpY2F0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgdGVzdGVkIHNvZnR3YXJlCit2ZXJzaW9uIGFuZCB0aGUgdGVzdGVkIGhhcmR3YXJlLiBBbnkgY2hhbmdlcyB0byB0aGUgSGlTYXggc291cmNlIGNvZGUgbWF5Cit0aGVyZWZvcmUgYWZmZWN0IHRoZSBjZXJ0aWZpY2F0aW9uLgorCitBZGRpdGlvbmFsIElUVSBhcHByb3ZhbCB0ZXN0cyBoYXZlIGJlZW4gY2FycmllZCBvdXQgZm9yIGFsbCBnZW5lcmljIGNhcmRzCit1c2luZyBDb2xvZ25lY2hpcCBzaW5nbGUgY2hpcCBzb2x1dGlvbnMgSEZDLVMgUENJIEEgZm9yIFBDSSBjYXJkcyBhcyB3ZWxsCithcyBIRkMtUyBVU0IgYmFzZWQgVVNCIElTRE4gdGEgYWRhcHRlcnMuCitUaGVzZSB0ZXN0cyBpbmNsdWRlZCBhbGwgbGF5ZXJzIDEtMyBhbmQgYXMgd2VsbCBhbGwgZnVuY3Rpb25hbCB0ZXN0cyBmb3IgCit0aGUgbGF5ZXIgMS4gQmVjYXVzZSBhbGwgaGFyZHdhcmUgYmFzZWQgb24gdGhlc2UgY2hpcHMgYXJlIGNvbXBsZXRlIElTRE4KK3NvbHV0aW9ucyBpbiBvbmUgY2hpcCBhbGwgY2FyZHMgYW5kIFVTQi1UQXMgdXNpbmcgdGhlc2UgY2hpcHMgYXJlIHRvIGJlCityZWdhcmRlZCBhcyBhcHByb3ZlZCBmb3IgdGhvc2UgdGVzdHMuIFNvbWUgYWRkaXRpb25hbCBlbGVjdHJpY2FsIHRlc3RzCitvZiB0aGUgbGF5ZXIgMSB3aGljaCBhcmUgaW5kZXBlbmRlbnQgb2YgdGhlIGRyaXZlciBhbmQgcmVsYXRlZCB0byBhCitzcGVjaWFsIGhhcmR3YXJlIHVzZWQgd2lsbCBiZSByZWdhcmRlZCBhcyBhcHByb3ZlZCBpZiBhdCBsZWFzdCBvbmUgCitzb2x1dGlvbiBoYXMgYmVlbiB0ZXN0ZWQgaW5jbHVkaW5nIHRob3NlIGVsZWN0cmljYWwgdGVzdHMuIFNvIGlmIGNhcmRzIAorb3IgdGFzIGhhdmUgYmVlbiBjb21wbGV0ZWx5IGFwcHJvdmVkIGZvciBhbnkgb3RoZXIgb3MsIHRoZSBhcHByb3ZhbAorZm9yIHRob3NlIGVsZWN0cmljYWwgdGVzdHMgaXMgdmFsaWQgZm9yIGxpbnV4LCB0b28uCitQbGVhc2Ugc2VuZCBhbnkgcXVlc3Rpb25zIHJlZ2FyZGluZyB0aGlzIGRyaXZlcnMgb3IgYXBwcm92YWwgYWJvdXRzIHRvIAord2VybmVyQGlzZG4tZGV2ZWxvcG1lbnQuZGUgCitBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFuZCB0aGUgdHlwZSBhcHByb3ZhbCBkb2N1bWVudHMgd2lsbCBiZSBmb3VuZAorc2hvcnRseSBvbiB0aGUgQ29sb2duZWNoaXAgd2Vic2l0ZSB3d3cuY29sb2duZWNoaXAuY29tIAorCitJZiB5b3UgY2hhbmdlIHRoZSBtYWluIGZpbGVzIG9mIHRoZSBIaVNheCBJU0ROIHN0YWNrLCB0aGUgY2VydGlmaWNhdGlvbiB3aWxsCitiZWNvbWUgaW52YWxpZC4gQmVjYXVzZSBpbiBtb3N0IGNvdW50cmllcyBpdCBpcyBpbGxlZ2FsIHRvIGNvbm5lY3QKK3VuYXBwcm92ZWQgSVNETiBlcXVpcG1lbnQgdG8gdGhlIHB1YmxpYyBuZXR3b3JrLCBJIGhhdmUgdG8gZ3VhcmFudGVlIHRoYXQKK2NoYW5nZXMgaW4gSGlTYXggZG8gbm90IGFmZmVjdCB0aGUgY2VydGlmaWNhdGlvbi4KKworSW4gb3JkZXIgdG8gbWFrZSBhIHZhbGlkIGNlcnRpZmljYXRpb24gYXBwYXJlbnQgdG8gdGhlIHVzZXIsIEkgaGF2ZSBidWlsdCBpbgorc29tZSB2YWxpZGF0aW9uIGNoZWNrcyB0aGF0IGFyZSBtYWRlIGR1cmluZyB0aGUgbWFrZSBwcm9jZXNzLiBUaGUgSGlTYXggbWFpbgorZmlsZXMgYXJlIHByb3RlY3RlZCBieSBtZDUgY2hlY2tzdW1zIGFuZCB0aGUgbWQ1c3VtIGZpbGUgaXMgcGdwIHNpZ25lZCBieQorbXlzZWxmOgorCitLZXlJRCAxMDI0L0ZGOTkyRjZEIDE5OTcvMDEvMTYgS2Fyc3RlbiBLZWlsIDxra2VpbEBzdXNlLmRlPgorS2V5IGZpbmdlcnByaW50ID0gOTIgNkIgRjcgNTggRUUgODYgMjggQzggIEM0IDFBIEU2IERDIDM5IDg5IEYyIEFBCisKK09ubHkgaWYgdGhlIGNoZWNrc3VtcyBhcmUgT0ssIGFuZCB0aGUgc2lnbmF0dXJlIG9mIHRoZSBmaWxlCisiZHJpdmVycy9pc2RuL2hpc2F4L21kNXN1bXMuYXNjIiBtYXRjaCwgaXMgdGhlIGNlcnRpZmljYXRpb24gdmFsaWQ7IGEKK21lc3NhZ2UgY29uZmlybWluZyB0aGlzIGlzIHRoZW4gZGlzcGxheWVkIGR1cmluZyB0aGUgaGlzYXggaW5pdCBwcm9jZXNzLgorCitUaGUgYWZmZWN0ZWQgZmlsZXMgYXJlOgorCitkcml2ZXJzL2lzZG4vaGlzYXgvaXNhYy5jCitkcml2ZXJzL2lzZG4vaGlzYXgvaXNkbmwxLmMKK2RyaXZlcnMvaXNkbi9oaXNheC9pc2RubDIuYworZHJpdmVycy9pc2RuL2hpc2F4L2lzZG5sMy5jCitkcml2ZXJzL2lzZG4vaGlzYXgvdGVpLmMKK2RyaXZlcnMvaXNkbi9oaXNheC9jYWxsYy5jCitkcml2ZXJzL2lzZG4vaGlzYXgvbDNkc3MxLmMKK2RyaXZlcnMvaXNkbi9oaXNheC9sM18xdHI2LmMKK2RyaXZlcnMvaXNkbi9oaXNheC9jZXJ0LmMKK2RyaXZlcnMvaXNkbi9oaXNheC9lbHNhLmMKK2RyaXZlcnMvaXNkbi9oaXNheC9kaXZhLmMKK2RyaXZlcnMvaXNkbi9oaXNheC9oZmNfcGNpLmMKKworUGxlYXNlIHNlbmQgYW55IGNoYW5nZXMsIGJ1Z2ZpeGVzIGFuZCBwYXRjaGVzIHRvIG1lIHJhdGhlciB0aGFuIGltcGxlbWVudGluZwordGhlbSBkaXJlY3RseSBpbnRvIHRoZSBIaVNheCBzb3VyY2VzLgorCitUaGlzIGRvZXMgbm90IHJlZHVjZSB5b3VyIHJpZ2h0cyBncmFudGVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KK0lmIHlvdSB3aXNoIHRvIGNoYW5nZSB0aGUgc291cmNlcywgZ28gYWhlYWQ7IGJ1dCBub3RlIHRoYXQgdGhlbiB0aGUKK2NlcnRpZmljYXRpb24gaXMgaW52YWxpZCBldmVuIGlmIHlvdSB1c2Ugb25lIG9mIHRoZSBhcHByb3ZlZCBjYXJkcy4KKworSGVyZSBhcmUgdGhlIGNlcnRpZmljYXRpb24gcmVnaXN0cmF0aW9uIG51bWJlcnMgZm9yIEVMU0EgUXVpY2tzdGVwIGNhcmRzOgorR2VybWFuICAgRDEzMzM2MUogQ0VURUNPTSBJQ1QgU2VydmljZXMgR21iSCAwNjgyCitFdXJvcGVhbiBEMTMzMzYySiBDRVRFQ09NIElDVCBTZXJ2aWNlcyBHbWJIIDA2ODIKKworCitLYXJzdGVuIEtlaWwKK2tlaWxAaXNkbjRsaW51eC5kZQorCistLS0tLUJFR0lOIFBHUCBTSUdOQVRVUkUtLS0tLQorVmVyc2lvbjogMi42LjNpCitDaGFyc2V0OiBub2NvbnYKKworaVFDVkF3VUJPRkF3cVRweEh2WC9tUzl0QVFGSTJRUDlHTERLMml5L0tCaHdSZUUzRjdMZU8rdFZoZmZUVlozYQorMjBxNS96L1djSWcvcG5IMHVUa2wyVWdEWEJGWFlsNDV6SnlER05wQXBvc0lGbVQrRWRkMTRvN1ZqMXcvQkJkbgorWSs1ckJtSmYrZ3lCdTYxZGE1ZDZidjBscHltd1JhL3VtK3JpK2lsWW5aL1hQZmc1SktoZGpHU0JDSnVKQUVsTQorZDJqRmJUcnNNWXc9Cis9TE5mOQorLS0tLS1FTkQgUEdQIFNJR05BVFVSRS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lzZG4vSU5URVJGQUNFIGIvRG9jdW1lbnRhdGlvbi9pc2RuL0lOVEVSRkFDRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGYxN2U1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pc2RuL0lOVEVSRkFDRQpAQCAtMCwwICsxLDc1OSBAQAorJElkOiBJTlRFUkZBQ0UsdiAxLjE1LjguMiAyMDAxLzAzLzEzIDE2OjE3OjA3IGthaSBFeHAgJAorCitEZXNjcmlwdGlvbiBvZiB0aGUgSW50ZXJmYWNlIGJldHdlZW4gTGlua2xldmVsIGFuZCBIYXJkd2FyZWxldmVsCisgIG9mIGlzZG40bGludXg6CisKKworICBUaGUgQ29tbXVuaWNhdGlvbiBiZXR3ZWVuIExpbmtsZXZlbCAoTEwpIGFuZCBIYXJkd2FyZWxldmVsIChITCkKKyAgaXMgYmFzZWQgb24gdGhlIHN0cnVjdCBpc2RuX2lmIChkZWZpbmVkIGluIGlzZG5pZi5oKS4KKworICBBbiBITC1kcml2ZXIgY2FuIHJlZ2lzdGVyIGl0c2VsZiBhdCBMTCBieSBjYWxsaW5nIHRoZSBmdW5jdGlvbgorICByZWdpc3Rlcl9pc2RuKCkgd2l0aCBhIHBvaW50ZXIgdG8gdGhhdCBzdHJ1Y3QuIFByaW9yIHRvIHRoYXQsIGl0IGhhcworICB0byBwcmVzZXQgc29tZSBvZiB0aGUgZmllbGRzIG9mIGlzZG5faWYuIFRoZSBMTCBzZXRzIHRoZSByZXN0IG9mCisgIHRoZSBmaWVsZHMuIEFsbCBmdXJ0aGVyIGNvbW11bmljYXRpb24gaXMgZG9uZSB2aWEgY2FsbGJhY2tzIHVzaW5nCisgIHRoZSBmdW5jdGlvbi1wb2ludGVycyBkZWZpbmVkIGluIGlzZG5faWYuCisKKyAgQ2hhbmdlcy9WZXJzaW9uIG51bWJlcmluZzoKKworICBEdXJpbmcgZGV2ZWxvcG1lbnQgb2YgdGhlIElTRE4gc3Vic3lzdGVtLCBzZXZlcmFsIGNoYW5nZXMgaGF2ZSBiZWVuCisgIG1hZGUgdG8gdGhlIGludGVyZmFjZS4gQmVmb3JlIGl0IHdlbnQgaW50byBrZXJuZWwsIHRoZSBwYWNrYWdlCisgIGhhZCBhIHVuaXF1ZSB2ZXJzaW9uIG51bWJlci4gVGhlIGxhc3QgdmVyc2lvbiwgZGlzdHJpYnV0ZWQgc2VwYXJhdGVseQorICB3YXMgMC43LjQuIFdoZW4gdGhlIHN1YnN5c3RlbSB3ZW50IGludG8ga2VybmVsLCBldmVyeSBmdW5jdGlvbmFsIHVuaXQKKyAgZ290IGEgc2VwYXJhdGUgdmVyc2lvbiBudW1iZXIuIFRoZXNlIG51bWJlcnMgYXJlIHNob3duIGF0IGluaXRpYWxpemF0aW9uLAorICBzZXBhcmF0ZWQgYnkgc2xhc2hlczoKKworICAgICBjLmMvdC50L24ubi9wLnAvYS5hL3YudgorCisgIHdoZXJlCisKKyAgIGMuYyBpcyB0aGUgcmV2aXNpb24gb2YgdGhlIGNvbW1vbiBjb2RlLgorICAgdC50IGlzIHRoZSByZXZpc2lvbiBvZiB0aGUgdHR5IHJlbGF0ZWQgY29kZS4KKyAgIG4ubiBpcyB0aGUgcmV2aXNpb24gb2YgdGhlIG5ldHdvcmsgcmVsYXRlZCBjb2RlLgorICAgcC5wIGlzIHRoZSByZXZpc2lvbiBvZiB0aGUgcHBwIHJlbGF0ZWQgY29kZS4KKyAgIGEuYSBpcyB0aGUgcmV2aXNpb24gb2YgdGhlIGF1ZGlvIHJlbGF0ZWQgY29kZS4KKyAgIHYudiBpcyB0aGUgcmV2aXNpb24gb2YgdGhlIFYuMTEwIHJlbGF0ZWQgY29kZS4KKworICBDaGFuZ2VzIGluIHRoaXMgZG9jdW1lbnQgYXJlIG1hcmtlZCB3aXRoICcqKipDSEFOR0V4JyB3aGVyZSB4IHJlcHJlc2VudGluZworICB0aGUgdmVyc2lvbiBudW1iZXIuIElmIHRoYXQgbnVtYmVyIHN0YXJ0cyB3aXRoIDAsIGl0IHJlZmVycyB0byB0aGUgb2xkLAorICBzZXBhcmF0ZWx5IGRpc3RyaWJ1dGVkIHBhY2thZ2UuIElmIGl0IHN0YXJ0cyB3aXRoIG9uZSBvZiB0aGUgbGV0dGVycworICBhYm92ZSwgaXQgcmVmZXJzIHRvIHRoZSByZXZpc2lvbiBvZiB0aGUgY29ycmVzcG9uZGluZyBtb2R1bGUuIAorICAqKipDSEFOR0VJeCByZWZlcnMgdG8gdGhlIHJldmlzaW9uIG51bWJlciBvZiB0aGUgaXNkbmlmLmggIAorCisxLiBEZXNjcmlwdGlvbiBvZiB0aGUgZmllbGRzIG9mIGlzZG5faWY6CisKKyAgaW50IGNoYW5uZWxzOworCisgICAgVGhpcyBmaWVsZCBoYXMgdG8gYmUgc2V0IGJ5IHRoZSBITC1kcml2ZXIgdG8gdGhlIG51bWJlciBvZiBjaGFubmVscworICAgIHN1cHBvcnRlZCBwcmlvciB0byBjYWxsaW5nIHJlZ2lzdGVyX2lzZG4oKS4gVXBvbiByZXR1cm4gb2YgdGhlIGNhbGwsCisgICAgdGhlIExMIHB1dHMgYW4gaWQgdGhlcmUsIHdoaWNoIGhhcyB0byBiZSB1c2VkIGJ5IHRoZSBITC1kcml2ZXIgd2hlbgorICAgIGludm9raW5nIHRoZSBvdGhlciBjYWxsYmFja3MuCisKKyAgaW50IG1heGJ1ZnNpemU7CisKKyAgICAqKipDSEFOR0UwLjY6IE5ldyBzaW5jZSB0aGlzIHZlcnNpb24uCisKKyAgICBBbHNvIHRvIGJlIHByZXNldCBieSB0aGUgSEwtZHJpdmVyLiBXaXRoIHRoaXMgdmFsdWUgdGhlIEhMLWRyaXZlcgorICAgIHRlbGxzIHRoZSBMTCB0aGUgbWF4aW11bSBzaXplIG9mIGEgZGF0YS1wYWNrZXQgaXQgd2lsbCBhY2NlcHQuIAorCisgIHVuc2lnbmVkIGxvbmcgZmVhdHVyZXM7CisKKyAgICBUbyBiZSBwcmVzZXQgYnkgdGhlIEhMLWRyaXZlci4gVXNpbmcgdGhpcyBmaWVsZCwgdGhlIEhMLWRyaXZlcgorICAgIGFubm91bmNlcyB0aGUgZmVhdHVyZXMgc3VwcG9ydGVkLiBBdCB0aGUgbW9tZW50IHRoaXMgaXMgbGltaXRlZCB0bworICAgIHJlcG9ydCB0aGUgc3VwcG9ydGVkIGxheWVyMiBhbmQgbGF5ZXIzLXByb3RvY29scy4gRm9yIHNldHRpbmcgdGhpcworICAgIGZpZWxkIHRoZSBjb25zdGFudHMgSVNETl9GRUFUVVJFLi4uLCBkZWNsYXJlZCBpbiBpc2RuaWYuaCBoYXZlIHRvIGJlCisgICAgdXNlZC4KKworICAgICoqKkNIQU5HRTAuNy4xOiBUaGUgbGluZSB0eXBlICgxVFI2LCBFRFNTMSkgaGFzIHRvIGJlIHNldC4KKworICB1bnNpZ25lZCBzaG9ydCBobF9oZHJsZW47CisKKyAgICAqKipDSEFOR0UwLjcuNDogTmV3IGZpZWxkLgorCisgICAgVG8gYmUgcHJlc2V0IGJ5IHRoZSBITC1kcml2ZXIsIGlmIGl0IHN1cHBvcnRzIHNrX2J1ZmYncy4gVGhlIGRyaXZlcgorICAgIHNob3VsZCBwdXQgaGVyZSB0aGUgYW1vdW50IG9mIGFkZGl0aW9uYWwgc3BhY2UgbmVlZGVkIGluIHNrX2J1ZmYncyBmb3IKKyAgICBpdHMgaW50ZXJuYWwgcHVycG9zZXMuIERyaXZlcnMgbm90IHN1cHBvcnRpbmcgc2tfYnVmZidzIHNob3VsZCAKKyAgICBpbml0aWFsaXplIHRoaXMgZmllbGQgdG8gMC4KKworICB2b2lkICgqcmN2Y2FsbGJfc2tiKShpbnQsIGludCwgc3RydWN0IHNrX2J1ZmYgKikKKworICAgICoqKkNIQU5HRTAuNy40OiBOZXcgZmllbGQuCisKKyAgICBUaGlzIGZpZWxkIHdpbGwgYmUgc2V0IGJ5IExMLiBUaGUgSEwtZHJpdmVyIGRlbGl2ZXJzIHJlY2VpdmVkIGRhdGEtCisgICAgcGFja2V0cyBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uIFVwb24gY2FsbGluZywgdGhlIEhMLWRyaXZlciBtdXN0CisgICAgYWxyZWFkeSBoYXZlIGl0cyBwcml2YXRlIGRhdGEgcHVsbGVkIG9mZiB0aGUgaGVhZCBvZiB0aGUgc2tfYnVmZi4KKworICAgIFBhcmFtZXRlcjoKKyAgICAgIGludCAgICAgICAgICAgICAgZHJpdmVyLUlkCisgICAgICBpbnQgICAgICAgICAgICAgIENoYW5uZWwtbnVtYmVyIGxvY2FsbHkgdG8gdGhlIGRyaXZlci4gKHN0YXJ0aW5nIHdpdGggMCkKKyAgICAgIHN0cnVjdCBza19idWZmICogUG9pbnRlciB0byBza19idWZmLCBjb250YWluaW5nIHJlY2VpdmVkIGRhdGEuCisKKyAgaW50ICgqc3RhdGNhbGxiKShpc2RuX2N0cmwqKTsKKworICAgIFRoaXMgZmllbGQgd2lsbCBiZSBzZXQgYnkgTEwuIFRoaXMgZnVuY3Rpb24gaGFzIHRvIGJlIGNhbGxlZCBieSB0aGUKKyAgICBITC1kcml2ZXIgZm9yIHNpZ25hbGluZyBzdGF0dXMtY2hhbmdlcyBvciBvdGhlciBldmVudHMgdG8gdGhlIExMLgorCisgICAgUGFyYW1ldGVyOgorICAgICAgaXNkbl9jdHJsKgorCisgICAgICBUaGUgc3RydWN0IGlzZG5fY3RybCBhbHNvIGRlZmluZWQgaW4gaXNkbl9pZi4gVGhlIGV4YWN0IG1lYW5pbmdzIG9mIGl0cworICAgICAgZmllbGRzIGFyZSBkZXNjcmliZWQgdG9nZXRoZXIgd2l0aCB0aGUgZGVzY3JpcHRpb25zIG9mIHRoZSBwb3NzaWJsZQorICAgICAgZXZlbnRzLiBIZXJlIGlzIG9ubHkgYSBzaG9ydCBkZXNjcmlwdGlvbiBvZiB0aGUgZmllbGRzOgorCisgICAgICAgIGRyaXZlciAgPSBkcml2ZXIgSWQuCisgICAgICAgIGNvbW1hbmQgPSBldmVudC10eXBlLiAob25lIG9mIHRoZSBjb25zdGFudHMgSVNETl9TVEFUXy4uLikKKyAgICAgICAgYXJnICAgICA9IGRlcGVuZHMgb24gZXZlbnQtdHlwZS4KKyAgICAgICAgbnVtICAgICA9IGRlcGVuZHMgb24gZXZlbnQtdHlwZS4KKworICAgIFJldHVybnZhbHVlOgorICAgICAgMCBvbiBzdWNjZXNzLCBlbHNlIC0xCisKKyAgaW50ICgqY29tbWFuZCkoaXNkbl9jdHJsKik7CisKKyAgICBUaGlzIGZpZWxkIGhhcyB0byBiZSBwcmVzZXQgYnkgdGhlIEhMLWRyaXZlci4gSXQgcG9pbnRzIHRvIGEgZnVuY3Rpb24sCisgICAgdG8gYmUgY2FsbGVkIGJ5IExMIHRvIHBlcmZvcm0gZnVuY3Rpb25zIGxpa2UgZGlhbGluZywgQi1jaGFubmVsCisgICAgc2V0dXAsIGV0Yy4gVGhlIGV4YWN0IG1lYW5pbmcgb2YgdGhlIHBhcmFtZXRlcnMgaXMgZGVzY3JpYmVkIHdpdGggdGhlCisgICAgZGVzY3JpcHRpb25zIG9mIHRoZSBwb3NzaWJsZSBjb21tYW5kcy4KKworICAgIFBhcmFtZXRlcjoKKyAgICAgIGlzZG5fY3RybCoKKyAgICAgICAgZHJpdmVyICA9IGRyaXZlci1JZAorICAgICAgICBjb21tYW5kID0gY29tbWFuZCB0byBwZXJmb3JtLiAob25lIG9mIHRoZSBjb25zdGFudHMgSVNETl9DTURfLi4uKQorICAgICAgICBhcmcgICAgID0gZGVwZW5kcyBvbiBjb21tYW5kLgorICAgICAgICBudW0gICAgID0gZGVwZW5kcyBvbiBjb21tYW5kLgorICAgIAorICAgIFJldHVybnZhbHVlOgorICAgICAgPj0wIG9uIHN1Y2Nlc3MsIGVsc2UgZXJyb3ItY29kZSAoLUVOT0RFViBldGMuKQorCisgIGludCAoKndyaXRlYnVmX3NrYikoaW50LCBpbnQsIGludCwgc3RydWN0IHNrX2J1ZmYgKikKKworICAgICoqKkNIQU5HRTAuNy40OiBOZXcgZmllbGQuCisgICAgKioqQ0hBTkdFSS4xLjIxOiBOZXcgZmllbGQuCisKKyAgICBUaGlzIGZpZWxkIGhhcyB0byBiZSBwcmVzZXQgYnkgdGhlIEhMLWRyaXZlci4gVGhlIGdpdmVuIGZ1bmN0aW9uIHdpbGwKKyAgICBiZSBjYWxsZWQgYnkgdGhlIExMIGZvciBkZWxpdmVyaW5nIGRhdGEgdG8gYmUgc2VuZCB2aWEgQi1DaGFubmVsLgorCisgCisgICAgUGFyYW1ldGVyOgorICAgICAgaW50ICAgICAgICAgICAgICBkcml2ZXItSWQgKioqQ0hBTkdFMC43LjQ6IE5ldyBwYXJhbWV0ZXIuCisgICAgICBpbnQgICAgICAgICAgICAgIGNoYW5uZWwtbnVtYmVyIGxvY2FsbHkgdG8gdGhlIEhMLWRyaXZlci4gKHN0YXJ0cyB3aXRoIDApCisgICAgICBpbnQJICAgICAgIGFjayAqKipDaGFuZ2VJMS4yMTogTmV3IHBhcmFtZXRlcgorCQkgICAgICAgSWYgdGhpcyBpcyAhMCwgdGhlIGRyaXZlciBoYXMgdG8gc2lnbmFsIHRoZSBkZWxpdmVyeQorCQkgICAgICAgYnkgc2VuZGluZyBhbiBJU0ROX1NUQVRfQlNFTlQuIElmIHRoaXMgaXMgMCwgdGhlIGRyaXZlcgorCQkgICAgICAgTVVTVCBOT1Qgc2VuZCBhbiBJU0ROX1NUQVRfQlNFTlQuCisgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqIFBvaW50ZXIgdG8gc2tfYnVmZiBjb250YWluaW5nIGRhdGEgdG8gYmUgc2VuZCB2aWEKKyAgICAgICAgICAgICAgICAgICAgICAgQi1jaGFubmVsLgorCisgICAgUmV0dXJudmFsdWU6CisgICAgICBMZW5ndGggb2YgZGF0YSBhY2NlcHRlZCBvbiBzdWNjZXNzLCBlbHNlIGVycm9yLWNvZGUgKC1FSU5WQUwgb24KKyAgICAgIG92ZXJzaXplZCBwYWNrZXRzIGV0Yy4pCisKKyAgaW50ICgqd3JpdGVjbWQpKHVfY2hhciosIGludCwgaW50LCBpbnQsIGludCk7CisKKyAgICBUaGlzIGZpZWxkIGhhcyB0byBiZSBwcmVzZXQgYnkgdGhlIEhMLWRyaXZlci4gVGhlIGdpdmVuIGZ1bmN0aW9uIHdpbGwgYmUKKyAgICBjYWxsZWQgdG8gcGVyZm9ybSB3cml0ZS1yZXF1ZXN0cyBvbiAvZGV2L2lzZG5jdHJsIChpLmUuIHNlbmRpbmcgY29tbWFuZHMKKyAgICB0byB0aGUgY2FyZCkgVGhlIGRhdGEtZm9ybWF0IGlzIGhhcmR3YXJlLXNwZWNpZmljLiBUaGlzIGZ1bmN0aW9uIGlzCisgICAgaW50ZW5kZWQgZm9yIGRlYnVnZ2luZyBvbmx5LiBJdCBpcyBub3QgbmVjZXNzYXJ5IGZvciBub3JtYWwgb3BlcmF0aW9uCisgICAgYW5kIG5ldmVyIHdpbGwgYmUgY2FsbGVkIGJ5IHRoZSB0dHktZW11bGF0aW9uLSBvciBuZXR3b3JrLWNvZGUuIElmCisgICAgdGhpcyBmdW5jdGlvbiBpcyBub3Qgc3VwcG9ydGVkLCB0aGUgZHJpdmVyIGhhcyB0byBzZXQgTlVMTCBoZXJlLgorCisgICAgUGFyYW1ldGVyOgorICAgICAgdV9jaGFyKiBwb2ludGVyIHRvIGRhdGEuCisgICAgICBpbnQgICAgIGxlbmd0aCBvZiBkYXRhLgorICAgICAgaW50ICAgICBmbGFnOiAwID0gY2FsbCBmcm9tIHdpdGhpbiBrZXJuZWwtc3BhY2UuIChITC1kcml2ZXIgbXVzdCB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweSwgbWF5IE5PVCB1c2Ugc2NoZWR1bGUoKSkKKyAgICAgICAgICAgICAgICAgICAgMSA9IGNhbGwgZnJvbSB1c2VyLXNwYWNlLiAoSEwtZHJpdmVyIG11c3QgdXNlCisgICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHlfZnJvbWZzLCB1c2Ugb2Ygc2NoZWR1bGUoKSBhbGxvd2VkKQorICAgICAgaW50ICAgICBkcml2ZXItSWQuCisgICAgICBpbnQgICAgIGNoYW5uZWwtbnVtYmVyIGxvY2FsbHkgdG8gdGhlIEhMLWRyaXZlci4gKHN0YXJ0cyB3aXRoIDApCisKKyoqKkNIQU5HRUkxLjE0OiBUaGUgZHJpdmVyLUlkIGFuZCBjaGFubmVsLW51bWJlciBhcmUgbmV3IHNpbmNlIHRoaXMgcmV2aXNpb24uCisKKyAgICBSZXR1cm52YWx1ZToKKyAgICAgIExlbmd0aCBvZiBkYXRhIGFjY2VwdGVkIG9uIHN1Y2Nlc3MsIGVsc2UgZXJyb3ItY29kZSAoLUVJTlZBTCBldGMuKQorCisgIGludCAoKnJlYWRzdGF0KSh1X2NoYXIqLCBpbnQsIGludCwgaW50LCBpbnQpOworCisgICAgVGhpcyBmaWVsZCBoYXMgdG8gYmUgcHJlc2V0IGJ5IHRoZSBITC1kcml2ZXIuIFRoZSBnaXZlbiBmdW5jdGlvbiB3aWxsIGJlCisgICAgY2FsbGVkIHRvIHBlcmZvcm0gcmVhZC1yZXF1ZXN0cyBvbiAvZGV2L2lzZG5jdHJsIChpLmUuIHJlYWRpbmcgcmVwbGllcworICAgIGZyb20gdGhlIGNhcmQpIFRoZSBkYXRhLWZvcm1hdCBpcyBoYXJkd2FyZS1zcGVjaWZpYy4gVGhpcyBmdW5jdGlvbiBpcworICAgIGludGVuZGVkIGZvciBkZWJ1Z2dpbmcgb25seS4gSXQgaXMgbm90IG5lY2Vzc2FyeSBmb3Igbm9ybWFsIG9wZXJhdGlvbgorICAgIGFuZCBuZXZlciB3aWxsIGJlIGNhbGxlZCBieSB0aGUgdHR5LWVtdWxhdGlvbi0gb3IgbmV0d29yay1jb2RlLiBJZgorICAgIHRoaXMgZnVuY3Rpb24gaXMgbm90IHN1cHBvcnRlZCwgdGhlIGRyaXZlciBoYXMgdG8gc2V0IE5VTEwgaGVyZS4KKworICAgIFBhcmFtZXRlcjoKKyAgICAgIHVfY2hhciogcG9pbnRlciB0byBkYXRhLgorICAgICAgaW50ICAgICBsZW5ndGggb2YgZGF0YS4KKyAgICAgIGludCAgICAgZmxhZzogMCA9IGNhbGwgZnJvbSB3aXRoaW4ga2VybmVsLXNwYWNlLiAoSEwtZHJpdmVyIG11c3QgdXNlCisgICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHksIG1heSBOT1QgdXNlIHNjaGVkdWxlKCkpCisgICAgICAgICAgICAgICAgICAgIDEgPSBjYWxsIGZyb20gdXNlci1zcGFjZS4gKEhMLWRyaXZlciBtdXN0IHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5X2Zyb21mcywgdXNlIG9mIHNjaGVkdWxlKCkgYWxsb3dlZCkKKyAgICAgIGludCAgICAgZHJpdmVyLUlkLgorICAgICAgaW50ICAgICBjaGFubmVsLW51bWJlciBsb2NhbGx5IHRvIHRoZSBITC1kcml2ZXIuIChzdGFydHMgd2l0aCAwKQorCisqKipDSEFOR0VJMS4xNDogVGhlIGRyaXZlci1JZCBhbmQgY2hhbm5lbC1udW1iZXIgYXJlIG5ldyBzaW5jZSB0aGlzIHJldmlzaW9uLgorCisgICAgUmV0dXJudmFsdWU6CisgICAgICBMZW5ndGggb2YgZGF0YSBvbiBzdWNjZXNzLCBlbHNlIGVycm9yLWNvZGUgKC1FSU5WQUwgZXRjLikKKworICBjaGFyIGlkWzIwXTsKKyAgICAgICAqKipDSEFOR0UwLjc6IE5ldyBzaW5jZSB0aGlzIHZlcnNpb24uCisKKyAgIFRoaXMgc3RyaW5nIGhhcyB0byBiZSBwcmVzZXQgYnkgdGhlIEhMLWRyaXZlci4gSXRzIHB1cnBvc2UgaXMgZm9yCisgICBpZGVudGlmaWNhdGlvbiBvZiB0aGUgZHJpdmVyIGJ5IHRoZSB1c2VyLiBFZy46IGl0IGlzIHNob3duIGluIHRoZQorICAgc3RhdHVzLWluZm8gb2YgL2Rldi9pc2RuaW5mby4gRnVydGhlcm1vcmUgaXQgaXMgdXNlZCBhcyBJZCBmb3IgYmluZGluZworICAgbmV0LWludGVyZmFjZXMgdG8gYSBzcGVjaWZpYyBjaGFubmVsLiBJZiBhIHN0cmluZyBvZiBsZW5ndGggemVybyBpcworICAgZ2l2ZW4sIHVwb24gcmV0dXJuLCBpc2RuNGxpbnV4IHdpbGwgcmVwbGFjZSBpdCBieSBhIGdlbmVyaWMgbmFtZS4gKGxpbmUwLAorICAgbGluZTEgZXRjLikgSXQgaXMgcmVjb21tZW5kZWQgdG8gbWFrZSB0aGlzIHN0cmluZyBjb25maWd1cmFibGUgZHVyaW5nCisgICBtb2R1bGUtbG9hZC10aW1lLiAoY29weSBhIGdsb2JhbCB2YXJpYWJsZSB0byB0aGlzIHN0cmluZy4pIEZvciBkb2luZyB0aGF0LAorICAgbW9kdWxlcyAxLjIuOCBvciBuZXdlciBhcmUgbmVjZXNzYXJ5LgorCisyLiBEZXNjcmlwdGlvbiBvZiB0aGUgY29tbWFuZHMsIGEgSEwtZHJpdmVyIGhhcyB0byBzdXBwb3J0OgorCisgICBBbGwgY29tbWFuZHMgd2lsbCBiZSBwZXJmb3JtZWQgYnkgY2FsbGluZyB0aGUgZnVuY3Rpb24gY29tbWFuZCgpIGRlc2NyaWJlZAorICAgYWJvdmUgZnJvbSB3aXRoaW4gdGhlIExMLiBUaGUgZmllbGQgY29tbWFuZCBvZiB0aGUgc3RydWN0LXBhcmFtZXRlciB3aWxsCisgICBjb250YWluIHRoZSBkZXNpcmVkIGNvbW1hbmQsIHRoZSBmaWVsZCBkcml2ZXIgaXMgYWx3YXlzIHNldCB0byB0aGUKKyAgIGFwcHJvcHJpYXRlIGRyaXZlci1JZC4KKworICAgVW50aWwgbm93LCB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGFyZSBkZWZpbmVkOgorCisqKipDSEFOR0VJMS4zNDogVGhlIHBhcmFtZXRlciAibnVtIiBoYXMgYmVlbiByZXBsYWNlZCBieSBhIHVuaW9uICJwYXJtIiBjb250YWluaW5nCisgICAgICAgICAgICAgICAgdGhlIG9sZCAibnVtIiBhbmQgYSBuZXcgc2V0dXBfdHlwZSBzdHJ1Y3QgdXNlZCBmb3IgSVNETl9DTURfRElBTAorICAgICAgICAgICAgICAgIGFuZCBJU0ROX1NUQVRfSUNBTEwgY2FsbGJhY2suCisKKyAgIElTRE5fQ01EX0lPQ1RMOgorCisgICAgIFRoaXMgY29tbWFuZCBpcyBpbnRlbmRlZCBmb3IgcGVyZm9ybWluZyBpb2N0bC1jYWxscyBmb3IgY29uZmlndXJpbmcKKyAgICAgaGFyZHdhcmUgb3Igc2ltaWxhciBwdXJwb3NlcyAoc2V0dGluZyBwb3J0LWFkZHJlc3NlcywgbG9hZGluZyBmaXJtd2FyZQorICAgICBldGMuKSBGb3IgdGhpcyBwdXJwb3NlLCBpbiB0aGUgTEwgYWxsIGlvY3RsLWNhbGxzIHdpdGggYW4gYXJndW1lbnQKKyAgICAgPj0gSUlPQ0RSVkNUTCAoMHgxMDApIHdpbGwgYmUgaGFuZGVkIHRyYW5zcGFyZW50bHkgdG8gdGhpcworICAgICBmdW5jdGlvbiBhZnRlciBzdWJ0cmFjdGluZyAweDEwMCBhbmQgcGxhY2luZyB0aGUgcmVzdWx0IGluIGFyZy4KKyAgICAgRXhhbXBsZToKKyAgICAgICBJZiBhIHVzZXJsZXZlbC1wcm9ncmFtIGNhbGxzIGlvY3RsKDB4MTAxLC4uLikgdGhlIGZ1bmN0aW9uIGdldHMKKyAgICAgICBjYWxsZWQgd2l0aCB0aGUgZmllbGQgY29tbWFuZCBzZXQgdG8gMS4KKworICAgICBQYXJhbWV0ZXI6CisgICAgICAgZHJpdmVyICAgPSBkcml2ZXItSWQuCisgICAgICAgY29tbWFuZCAgPSBJU0ROX0NNRF9JT0NUTAorICAgICAgIGFyZyAgICAgID0gT3JpZ2luYWwgaW9jdGwtY21kIC0gSUlPQ0RSVkNUTAorICAgICAgIHBhcm0ubnVtID0gZmlyc3QgYnl0ZXMgZmlsbGVkIHdpdGggKHVuc2lnbmVkIGxvbmcpYXJnCisgICAKKyAgICAgUmV0dXJudmFsdWU6CisgICAgICAgRGVwZW5kaW5nIG9uIGRyaXZlci4KKworICAKKyAgSVNETl9DTURfRElBTDoKKworICAgIFRoaXMgY29tbWFuZCBpcyB1c2VkIHRvIHRlbGwgdGhlIEhMLWRyaXZlciBpdCBzaG91bGQgZGlhbCBhIGdpdmVuCisgICAgbnVtYmVyLgorCisgICAgUGFyYW1ldGVyOgorICAgICAgZHJpdmVyICAgICAgPSBkcml2ZXItSWQuCisgICAgICBjb21tYW5kICAgICA9IElTRE5fQ01EX0RJQUwKKyAgICAgIGFyZyAgICAgICAgID0gY2hhbm5lbC1udW1iZXIgbG9jYWxseSB0byB0aGUgZHJpdmVyLiAoc3RhcnRpbmcgd2l0aCAwKQorICAgICAgCisgICAgICBwYXJtLnNldHVwLnBob25lICA9IEFuIEFTQ0lJLVN0cmluZyBjb250YWluaW5nIHRoZSBudW1iZXIgdG8gZGlhbC4KKyAgICAgIHBhcm0uc2V0dXAuZWF6bXNuID0gQW4gQVNDSUktU3RpbmcgY29udGFpbmluZyB0aGUgb3duIEVBWiBvciBNU04uCisgICAgICBwYXJtLnNldHVwLnNpMSAgICA9IFRoZSBTZXJ2aWNlLUluZGljYXRvci4KKyAgICAgIHBhcm0uc2V0dXAuc2kyICAgID0gQWRkaXRpb25hbCBTZXJ2aWNlLUluZGljYXRvci4KKworICAgICAgICAgICAgICAgICAgICBJZiB0aGUgTGluZSBoYXMgYmVlbiBkZXNpZ25lZCBhcyBTUFYgKGEgc3BlY2lhbCBnZXJtYW4KKyAgICAgICAgICAgICAgICAgICAgZmVhdHVyZSwgbWVhbmluZyBzZW1pLWxlYXNlZC1saW5lKSB0aGUgcGhvbmUgaGFzIHRvCisgICAgICAgICAgICAgICAgICAgIHN0YXJ0IHdpdGggYW4gIlMiLgorICAgICAgKioqQ0hBTkdFMC42OiBJbiBwcmV2aW91cyB2ZXJzaW9ucyB0aGUgRUFaIGhhcyBiZWVuIGdpdmVuIGluIHRoZQorICAgICAgICAgICAgICAgICAgICBoaWdoYnl0ZSBvZiBhcmcuCisgICAgKioqQ0hBTkdFMC43LjE6IE5ldyBzaW5jZSB0aGlzIHZlcnNpb246IFNlcnZpY2VJbmRpY2F0b3IgYW5kIEFkZEluZm8uCisKKyAgSVNETl9DTURfQUNDRVBURDoKKworICAgIFdpdGggdGhpcyBjb21tYW5kLCB0aGUgSEwtZHJpdmVyIGlzIHRvbGQgdG8gYWNjZXB0IGEgRC1DaGFubmVsLXNldHVwLgorICAgIChSZXNwb25zZSB0byBhbiBpbmNvbWluZyBjYWxsKQorCisgICAgUGFyYW1ldGVyOgorICAgICAgZHJpdmVyICAgICAgPSBkcml2ZXItSWQuCisgICAgICBjb21tYW5kICAgICA9IElTRE5fQ01EX0FDQ0VQVEQKKyAgICAgIGFyZyAgICAgICAgID0gY2hhbm5lbC1udW1iZXIgbG9jYWxseSB0byB0aGUgZHJpdmVyLiAoc3RhcnRpbmcgd2l0aCAwKQorICAgICAgcGFybSAgICAgICAgPSB1bnVzZWQuCisKKyAgSVNETl9DTURfQUNDRVBUQjoKKworICAgIFdpdGggdGhpcyBjb21tYW5kLCB0aGUgSEwtZHJpdmVyIGlzIHRvbGQgdG8gcGVyZm9ybSBhIEItQ2hhbm5lbC1zZXR1cC4KKyAgICAoYWZ0ZXIgZXN0YWJsaXNoaW5nIEQtQ2hhbm5lbC1Db25uZWN0aW9uKQorCisgICAgUGFyYW1ldGVyOgorICAgICAgZHJpdmVyICAgICAgPSBkcml2ZXItSWQuCisgICAgICBjb21tYW5kICAgICA9IElTRE5fQ01EX0FDQ0VQVEIKKyAgICAgIGFyZyAgICAgICAgID0gY2hhbm5lbC1udW1iZXIgbG9jYWxseSB0byB0aGUgZHJpdmVyLiAoc3RhcnRpbmcgd2l0aCAwKQorICAgICAgcGFybSAgICAgICAgPSB1bnVzZWQuCisKKyAgSVNETl9DTURfSEFOR1VQOgorCisgICAgV2l0aCB0aGlzIGNvbW1hbmQsIHRoZSBITC1kcml2ZXIgaXMgdG9sZCB0byBoYW5ndXAgKEItQ2hhbm5lbCBpZgorICAgIGVzdGFibGlzaGVkIGZpcnN0LCB0aGVuIEQtQ2hhbm5lbCkuIFRoaXMgY29tbWFuZCBpcyBhbHNvIHVzZWQgZm9yCisgICAgYWN0aXZlbHkgcmVqZWN0aW5nIGFuIGluY29taW5nIGNhbGwuCisKKyAgICBQYXJhbWV0ZXI6CisgICAgICBkcml2ZXIgICAgICA9IGRyaXZlci1JZC4KKyAgICAgIGNvbW1hbmQgICAgID0gSVNETl9DTURfSEFOR1VQCisgICAgICBhcmcgICAgICAgICA9IGNoYW5uZWwtbnVtYmVyIGxvY2FsbHkgdG8gdGhlIGRyaXZlci4gKHN0YXJ0aW5nIHdpdGggMCkKKyAgICAgIHBhcm0gICAgICAgID0gdW51c2VkLgorCisgIElTRE5fQ01EX0NMUkVBWjoKKworICAgIFdpdGggdGhpcyBjb21tYW5kLCB0aGUgSEwtZHJpdmVyIGlzIHRvbGQgbm90IHRvIHNpZ25hbCBpbmNvbWluZworICAgIGNhbGxzIHRvIHRoZSBMTC4KKworICAgIFBhcmFtZXRlcjoKKyAgICAgIGRyaXZlciAgICAgID0gZHJpdmVyLUlkLgorICAgICAgY29tbWFuZCAgICAgPSBJU0ROX0NNRF9DTFJFQVoKKyAgICAgIGFyZyAgICAgICAgID0gY2hhbm5lbC1udW1iZXIgbG9jYWxseSB0byB0aGUgZHJpdmVyLiAoc3RhcnRpbmcgd2l0aCAwKQorICAgICAgcGFybSAgICAgICAgPSB1bnVzZWQuCisKKyAgSVNETl9DTURfU0VURUFaOgorCisgICAgV2l0aCB0aGlzIGNvbW1hbmQsIHRoZSBITC1kcml2ZXIgaXMgdG9sZCB0byBzaWduYWwgaW5jb21pbmcgY2FsbHMgZm9yCisgICAgdGhlIGdpdmVuIEVBWnMvTVNOcyB0byB0aGUgTEwuCisKKyAgICBQYXJhbWV0ZXI6CisgICAgICBkcml2ZXIgICAgICA9IGRyaXZlci1JZC4KKyAgICAgIGNvbW1hbmQgICAgID0gSVNETl9DTURfU0VURUFaCisgICAgICBhcmcgICAgICAgICA9IGNoYW5uZWwtbnVtYmVyIGxvY2FsbHkgdG8gdGhlIGRyaXZlci4gKHN0YXJ0aW5nIHdpdGggMCkKKyAgICAgIHBhcm0ubnVtICAgID0gQVNDSUktU3RyaW5nLCBjb250YWluaW5nIHRoZSBkZXNpcmVkIEVBWidzL01TTidzCisgICAgICAgICAgICAgICAgICAgIChjb21tYS1zZXBhcmF0ZWQpLiBJZiBhbiBlbXB0eSBTdHJpbmcgaXMgZ2l2ZW4sIHRoZQorICAgICAgICAgICAgICAgICAgICBITC1kcml2ZXIgc2hvdWxkIHJlc3BvbmQgdG8gQUxMIGluY29taW5nIGNhbGxzLAorICAgICAgICAgICAgICAgICAgICByZWdhcmRsZXNzIG9mIHRoZSBkZXN0aW5hdGlvbi1hZGRyZXNzLgorICAgICAgKioqQ0hBTkdFMC42OiBOZXcgc2luY2UgdGhpcyB2ZXJzaW9uIHRoZSAiZW1wdHktc3RyaW5nIi1mZWF0dXJlLgorCisgIElTRE5fQ01EX0dFVEVBWjogKGN1cnJlbnRseSB1bnVzZWQpCisKKyAgICBXaXRoIHRoaXMgY29tbWFuZCwgdGhlIEhMLWRyaXZlciBpcyB0b2xkIHRvIHJlcG9ydCB0aGUgY3VycmVudCBzZXR0aW5nCisgICAgZ2l2ZW4gd2l0aCBJU0ROX0NNRF9TRVRFQVouCisKKyAgICBQYXJhbWV0ZXI6CisgICAgICBkcml2ZXIgICAgICA9IGRyaXZlci1JZC4KKyAgICAgIGNvbW1hbmQgICAgID0gSVNETl9DTURfR0VURUFaCisgICAgICBhcmcgICAgICAgICA9IGNoYW5uZWwtbnVtYmVyIGxvY2FsbHkgdG8gdGhlIGRyaXZlci4gKHN0YXJ0aW5nIHdpdGggMCkKKyAgICAgIHBhcm0ubnVtICAgID0gQVNDSUktU3RyaW5nLCBjb250YWluaW5nIHRoZSBjdXJyZW50IEVBWidzL01TTidzCisKKyAgSVNETl9DTURfU0VUU0lMOiAoY3VycmVudGx5IHVudXNlZCkKKworICAgIFdpdGggdGhpcyBjb21tYW5kLCB0aGUgSEwtZHJpdmVyIGlzIHRvbGQgdG8gc2lnbmFsIG9ubHkgaW5jb21pbmcKKyAgICBjYWxscyB3aXRoIHRoZSBnaXZlbiBTZXJ2aWNlLUluZGljYXRvcnMuCisKKyAgICBQYXJhbWV0ZXI6CisgICAgICBkcml2ZXIgICAgICA9IGRyaXZlci1JZC4KKyAgICAgIGNvbW1hbmQgICAgID0gSVNETl9DTURfU0VUU0lMCisgICAgICBhcmcgICAgICAgICA9IGNoYW5uZWwtbnVtYmVyIGxvY2FsbHkgdG8gdGhlIGRyaXZlci4gKHN0YXJ0aW5nIHdpdGggMCkKKyAgICAgIHBhcm0ubnVtICAgID0gQVNDSUktU3RyaW5nLCBjb250YWluaW5nIHRoZSBkZXNpcmVkIFNlcnZpY2UtSW5kaWNhdG9ycy4KKworICBJU0ROX0NNRF9HRVRTSUw6IChjdXJyZW50bHkgdW51c2VkKQorCisgICAgV2l0aCB0aGlzIGNvbW1hbmQsIHRoZSBITC1kcml2ZXIgaXMgdG9sZCB0byByZXR1cm4gdGhlIGN1cnJlbnQKKyAgICBTZXJ2aWNlLUluZGljYXRvcnMgaXQgd2lsbCByZXNwb25kIHRvLgorCisgICAgUGFyYW1ldGVyOgorICAgICAgZHJpdmVyICAgICAgPSBkcml2ZXItSWQuCisgICAgICBjb21tYW5kICAgICA9IElTRE5fQ01EX1NFVFNJTAorICAgICAgYXJnICAgICAgICAgPSBjaGFubmVsLW51bWJlciBsb2NhbGx5IHRvIHRoZSBkcml2ZXIuIChzdGFydGluZyB3aXRoIDApCisgICAgICBwYXJtLm51bSAgICA9IEFTQ0lJLVN0cmluZywgY29udGFpbmluZyB0aGUgY3VycmVudCBTZXJ2aWNlLUluZGljYXRvcnMuCisKKyAgSVNETl9DTURfU0VUTDI6CisKKyAgICBXaXRoIHRoaXMgY29tbWFuZCwgdGhlIEhMLWRyaXZlciBpcyB0b2xkIHRvIHNlbGVjdCB0aGUgZ2l2ZW4gTGF5ZXItMi0KKyAgICBwcm90b2NvbC4gVGhpcyBjb21tYW5kIGlzIGlzc3VlZCBieSB0aGUgTEwgcHJpb3IgdG8gSVNETl9DTURfRElBTCBvcgorICAgIElTRE5fQ01EX0FDQ0VQVEQuCisKKworICAgIFBhcmFtZXRlcjoKKyAgICAgIGRyaXZlciAgICAgID0gZHJpdmVyLUlkLgorICAgICAgY29tbWFuZCAgICAgPSBJU0ROX0NNRF9TRVRMMgorICAgICAgYXJnICAgICAgICAgPSBjaGFubmVsLW51bWJlciBsb2NhbGx5IHRvIHRoZSBkcml2ZXIuIChzdGFydGluZyB3aXRoIDApCisgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWwgb3InZWQgd2l0aCAocHJvdG9jb2wtSWQgPDwgOCkKKyAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2wtSWQgaXMgb25lIG9mIHRoZSBjb25zdGFudHMgSVNETl9QUk9UT19MMi4uLgorICAgICAgcGFybSAgICAgICAgPSB1bnVzZWQuCisKKyAgSVNETl9DTURfR0VUTDI6IChjdXJyZW50bHkgdW51c2VkKQorCisgICAgV2l0aCB0aGlzIGNvbW1hbmQsIHRoZSBITC1kcml2ZXIgaXMgdG9sZCB0byByZXR1cm4gdGhlIGN1cnJlbnQKKyAgICBzZXR0aW5nIG9mIHRoZSBMYXllci0yLXByb3RvY29sLgorCisgICAgUGFyYW1ldGVyOgorICAgICAgZHJpdmVyICAgICAgPSBkcml2ZXItSWQuCisgICAgICBjb21tYW5kICAgICA9IElTRE5fQ01EX0dFVEwyCisgICAgICBhcmcgICAgICAgICA9IGNoYW5uZWwtbnVtYmVyIGxvY2FsbHkgdG8gdGhlIGRyaXZlci4gKHN0YXJ0aW5nIHdpdGggMCkKKyAgICAgIHBhcm0gICAgICAgID0gdW51c2VkLgorICAgIFJldHVybnZhbHVlOgorICAgICAgY3VycmVudCBwcm90b2NvbC1JZCAob25lIG9mIHRoZSBjb25zdGFudHMgSVNETl9MMl9QUk9UTykKKworICBJU0ROX0NNRF9TRVRMMzoKKworICAgIFdpdGggdGhpcyBjb21tYW5kLCB0aGUgSEwtZHJpdmVyIGlzIHRvbGQgdG8gc2VsZWN0IHRoZSBnaXZlbiBMYXllci0zLQorICAgIHByb3RvY29sLiBUaGlzIGNvbW1hbmQgaXMgaXNzdWVkIGJ5IHRoZSBMTCBwcmlvciB0byBJU0ROX0NNRF9ESUFMIG9yCisgICAgSVNETl9DTURfQUNDRVBURC4KKworCisgICAgUGFyYW1ldGVyOgorICAgICAgZHJpdmVyICAgICAgPSBkcml2ZXItSWQuCisgICAgICBjb21tYW5kICAgICA9IElTRE5fQ01EX1NFVEwzCisgICAgICBhcmcgICAgICAgICA9IGNoYW5uZWwtbnVtYmVyIGxvY2FsbHkgdG8gdGhlIGRyaXZlci4gKHN0YXJ0aW5nIHdpdGggMCkKKyAgICAgICAgICAgICAgICAgICAgbG9naWNhbCBvcidlZCB3aXRoIChwcm90b2NvbC1JZCA8PCA4KQorICAgICAgICAgICAgICAgICAgICBwcm90b2NvbC1JZCBpcyBvbmUgb2YgdGhlIGNvbnN0YW50cyBJU0ROX1BST1RPX0wzLi4uCisgICAgICBwYXJtLmZheCAgICA9IFBvaW50ZXIgdG8gVDMwX3MgZmF4IHN0cnVjdC4gKGZheCB1c2FnZSBvbmx5KQorCisgIElTRE5fQ01EX0dFVEwyOiAoY3VycmVudGx5IHVudXNlZCkKKworICAgIFdpdGggdGhpcyBjb21tYW5kLCB0aGUgSEwtZHJpdmVyIGlzIHRvbGQgdG8gcmV0dXJuIHRoZSBjdXJyZW50CisgICAgc2V0dGluZyBvZiB0aGUgTGF5ZXItMy1wcm90b2NvbC4KKworICAgIFBhcmFtZXRlcjoKKyAgICAgIGRyaXZlciAgICAgID0gZHJpdmVyLUlkLgorICAgICAgY29tbWFuZCAgICAgPSBJU0ROX0NNRF9HRVRMMworICAgICAgYXJnICAgICAgICAgPSBjaGFubmVsLW51bWJlciBsb2NhbGx5IHRvIHRoZSBkcml2ZXIuIChzdGFydGluZyB3aXRoIDApCisgICAgICBwYXJtICAgICAgICA9IHVudXNlZC4KKyAgICBSZXR1cm52YWx1ZToKKyAgICAgIGN1cnJlbnQgcHJvdG9jb2wtSWQgKG9uZSBvZiB0aGUgY29uc3RhbnRzIElTRE5fTDNfUFJPVE8pCisKKyAgSVNETl9DTURfUFJPQ0VFRDogCisKKyAgICBXaXRoIHRoaXMgY29tbWFuZCwgdGhlIEhMLWRyaXZlciBpcyB0b2xkIHRvIHByb2NlZWQgd2l0aCBhIGluY29taW5nIGNhbGwuCisKKyAgICBQYXJhbWV0ZXI6CisgICAgICBkcml2ZXIgICAgICA9IGRyaXZlci1JZC4KKyAgICAgIGNvbW1hbmQgICAgID0gSVNETl9DTURfUFJPQ0VFRAorICAgICAgYXJnICAgICAgICAgPSBjaGFubmVsLW51bWJlciBsb2NhbGx5IHRvIHRoZSBkcml2ZXIuIChzdGFydGluZyB3aXRoIDApCisgICAgICBzZXR1cC5lYXptc249IGVtcHR5IHN0cmluZyBvciBzdHJpbmcgc2VuZCBhcyB1dXMxIGluIERTUzEgd2l0aCAKKyAgICAgICAgICAgICAgICAgICAgUFJPQ0VFRCBtZXNzYWdlCisKKyAgSVNETl9DTURfQUxFUlQ6IAorCisgICAgV2l0aCB0aGlzIGNvbW1hbmQsIHRoZSBITC1kcml2ZXIgaXMgdG9sZCB0byBhbGVydCBhIHByb2NlZWRpbmcgY2FsbC4KKworICAgIFBhcmFtZXRlcjoKKyAgICAgIGRyaXZlciAgICAgID0gZHJpdmVyLUlkLgorICAgICAgY29tbWFuZCAgICAgPSBJU0ROX0NNRF9BTEVSVAorICAgICAgYXJnICAgICAgICAgPSBjaGFubmVsLW51bWJlciBsb2NhbGx5IHRvIHRoZSBkcml2ZXIuIChzdGFydGluZyB3aXRoIDApCisgICAgICBzZXR1cC5lYXptc249IGVtcHR5IHN0cmluZyBvciBzdHJpbmcgc2VuZCBhcyB1dXMxIGluIERTUzEgd2l0aCAKKyAgICAgICAgICAgICAgICAgICAgQUxFUlQgbWVzc2FnZQorCisgIElTRE5fQ01EX1JFRElSOiAKKworICAgIFdpdGggdGhpcyBjb21tYW5kLCB0aGUgSEwtZHJpdmVyIGlzIHRvbGQgdG8gcmVkaXJlY3QgYSBjYWxsIGluIHByb2NlZWRpbmcKKyAgICBvciBhbGVydGluZyBzdGF0ZS4gIAorCisgICAgUGFyYW1ldGVyOgorICAgICAgZHJpdmVyICAgICAgPSBkcml2ZXItSWQuCisgICAgICBjb21tYW5kICAgICA9IElTRE5fQ01EX1JFRElSCisgICAgICBhcmcgICAgICAgICA9IGNoYW5uZWwtbnVtYmVyIGxvY2FsbHkgdG8gdGhlIGRyaXZlci4gKHN0YXJ0aW5nIHdpdGggMCkKKyAgICAgIHNldHVwLmVhem1zbj0gZW1wdHkgc3RyaW5nIG9yIHN0cmluZyBzZW5kIGFzIHV1czEgaW4gRFNTMSBwcm90b2NvbAorICAgICAgc2V0dXAuc2NyZWVuPSBzY3JlZW5pbmcgaW5kaWNhdG9yCisgICAgICBzZXR1cC5waG9uZSA9IHJlZGlyZWN0ZWQgdG8gcGFydHkgbnVtYmVyCisKKyAgSVNETl9DTURfUFJPVF9JTzoKKworICAgIFdpdGggdGhpcyBjYWxsLCB0aGUgTEwtZHJpdmVyIGludm9rZXMgcHJvdG9jb2wgc3BlY2lmaWMgZmVhdHVyZXMgdGhyb3VnaAorICAgIHRoZSBMTC4KKyAgICBUaGUgY2FsbCBpcyBub3QgaW1wbGljaXRlbHkgYm91bmQgdG8gYSBjb25uZWN0aW9uLgorCisgICAgUGFyYW1ldGVyOgorICAgICAgZHJpdmVyICAgICAgPSBkcml2ZXItSWQKKyAgICAgIGNvbW1hbmQgICAgID0gSVNETl9DTURfUFJPVF9JTworICAgICAgYXJnICAgICAgICAgPSBUaGUgbG93ZXIgOCBCaXRzIGRlZmluZSB0aGUgYWRkcmVzc2VkIHByb3RvY29sIGFzIGRlZmluZWQKKyAgICAgICAgICAgICAgICAgICAgaW4gSVNETl9QVFlQRS4uLiwgdGhlIHVwcGVyIGJpdHMgYXJlIHVzZWQgdG8gZGlmZmVyZW50aWF0ZQorICAgICAgICAgICAgICAgICAgICB0aGUgcHJvdG9jb2wgc3BlY2lmaWMgQ01ELiAgCisgICAgICAKKyAgICAgIHBhcmEgICAgICAgID0gcHJvdG9jb2wgYW5kIGZ1bmN0aW9uIHNwZWNpZmljLiBTZWUgaXNkbmlmLmggZm9yIGRldGFpbC4KKworCisgIElTRE5fQ01EX0ZBWENNRDoKKworICAgIFdpdGggdGhpcyBjb21tYW5kIHRoZSBITC1kcml2ZXIgcmVjZWl2ZXMgYSBmYXggc3ViLWNvbW1hbmQuCisgICAgRm9yIGRldGFpbHMgcmVmZXIgdG8gSU5URVJGQUNFLmZheAorCisgICAgUGFyYW1ldGVyOgorICAgICAgZHJpdmVyICAgICAgPSBkcml2ZXItSWQuCisgICAgICBjb21tYW5kICAgICA9IElTRE5fQ01EX0ZBWENNRAorICAgICAgYXJnICAgICAgICAgPSBjaGFubmVsLW51bWJlciBsb2NhbGx5IHRvIHRoZSBkcml2ZXIuIChzdGFydGluZyB3aXRoIDApCisgICAgICBwYXJtICAgICAgICA9IHVudXNlZC4KKworCiszLiBEZXNjcmlwdGlvbiBvZiB0aGUgZXZlbnRzIHRvIGJlIHNpZ25hbGVkIGJ5IHRoZSBITC1kcml2ZXIgdG8gdGhlIExMLgorCisgIEFsbCBzdGF0dXMtY2hhbmdlcyBhcmUgc2lnbmFsZWQgdmlhIGNhbGxpbmcgdGhlIHByZXZpb3VzbHkgZGVzY3JpYmVkCisgIGZ1bmN0aW9uIHN0YXRjYWxsYigpLiBUaGUgZmllbGQgY29tbWFuZCBvZiB0aGUgc3RydWN0IGlzZG5fY21kIGhhcworICB0byBiZSBzZXQgYnkgdGhlIEhMLWRyaXZlciB3aXRoIHRoZSBhcHByb3ByaWF0ZSBTdGF0dXMtSWQgKGV2ZW50LW51bWJlcikuCisgIFRoZSBmaWVsZCBhcmcgaGFzIHRvIGJlIHNldCB0byB0aGUgY2hhbm5lbC1udW1iZXIgKGxvY2FsbHkgdG8gdGhlIGRyaXZlciwKKyAgc3RhcnRpbmcgd2l0aCAwKSB0byB3aGljaCB0aGlzIGV2ZW50IGFwcGxpZXMuIChFeGNlcHRpb246IFNUQVZBSUwtZXZlbnQpCisKKyAgVW50aWwgbm93LCB0aGUgZm9sbG93aW5nIFN0YXR1cy1JZHMgYXJlIGRlZmluZWQ6CisKKyAgSVNETl9TVEFUX0FWQUlMOgorCisgICAgV2l0aCB0aGlzIGNhbGwsIHRoZSBITC1kcml2ZXIgc2lnbmFscyB0aGUgYXZhaWxhYmlsaXR5IG9mIG5ldyBkYXRhCisgICAgZm9yIHJlYWRzdGF0KCkuIFVzZWQgb25seSBmb3IgZGVidWdnaW5nLXB1cnBvc2VzLCBzZWUgZGVzY3JpcHRpb24KKyAgICBvZiByZWFkc3RhdCgpLgorCisgICAgUGFyYW1ldGVyOgorICAgICAgZHJpdmVyICAgICAgPSBkcml2ZXItSWQKKyAgICAgIGNvbW1hbmQgICAgID0gSVNETl9TVEFUX1NUQVZBSUwKKyAgICAgIGFyZyAgICAgICAgID0gbGVuZ3RoIG9mIGF2YWlsYWJsZSBkYXRhLgorICAgICAgcGFybSAgICAgICAgPSB1bnVzZWQuCisKKyAgSVNETl9TVEFUX0lDQUxMOgorICBJU0ROX1NUQVRfSUNBTExXOgorCisgICAgV2l0aCB0aGlzIGNhbGwsIHRoZSBITC1kcml2ZXIgc2lnbmFscyBhbiBpbmNvbWluZyBjYWxsIHRvIHRoZSBMTC4KKyAgICBJZiBJQ0FMTFcgaXMgc2lnbmFsbGVkIHRoZSBpbmNvbWluZyBjYWxsIGlzIGEgd2FpdGluZyBjYWxsIHdpdGhvdXQKKyAgICBhIGF2YWlsYWJsZSBCLWNoYW4uCisKKyAgICBQYXJhbWV0ZXI6CisgICAgICBkcml2ZXIgICAgICAgICAgICA9IGRyaXZlci1JZAorICAgICAgY29tbWFuZCAgICAgICAgICAgPSBJU0ROX1NUQVRfSUNBTEwKKyAgICAgIGFyZyAgICAgICAgICAgICAgID0gY2hhbm5lbC1udW1iZXIsIGxvY2FsbHkgdG8gdGhlIGRyaXZlci4gKHN0YXJ0aW5nIHdpdGggMCkKKyAgICAgIHBhcmEuc2V0dXAucGhvbmUgID0gQ2FsbGVybnVtYmVyLgorICAgICAgcGFyYS5zZXR1cC5lYXptc24gPSBDYWxsZWROdW1iZXIuCisgICAgICBwYXJhLnNldHVwLnNpMSAgICA9IFNlcnZpY2UgSW5kaWNhdG9yLgorICAgICAgcGFyYS5zZXR1cC5zaTIgICAgPSBBZGRpdGlvbmFsIFNlcnZpY2UgSW5kaWNhdG9yLgorICAgICAgcGFyYS5zZXR1cC5wbGFuICAgPSBvY3RldCAzIGZyb20gQ2FsbGluZyBwYXJ0eSBudW1iZXIgSW5mb3JtYXRpb24gRWxlbWVudC4KKyAgICAgIHBhcmEuc2V0dXAuc2NyZWVuID0gb2N0ZXQgM2EgZnJvbSBDYWxsaW5nIHBhcnR5IG51bWJlciBJbmZvcm1hdGlvbiBFbGVtZW50LgorCisgICAgUmV0dXJuOgorICAgICAgMCAgICAgICAgICAgPSBObyBkZXZpY2UgbWF0Y2hpbmcgdGhpcyBjYWxsLgorICAgICAgMSAgICAgICAgICAgPSBBdCBsZWFzdCBvbmUgZGV2aWNlIG1hdGNoaW5nIHRoaXMgY2FsbCAoUklORyBvbiB0dHlJKS4KKyAgICAgICAgICAgICAgICAgICAgSEwtZHJpdmVyIG1heSBzZW5kIEFMRVJUSU5HIG9uIHRoZSBELWNoYW5uZWwgaW4gdGhpcyBjYXNlLgorICAgICAgMiAgICAgICAgICAgPSBDYWxsIHdpbGwgYmUgcmVqZWN0ZWQuCisgICAgICAzICAgICAgICAgICA9IEluY29taW5nIGNhbGxlZCBwYXJ0eSBudW1iZXIgaXMgY3VycmVudGx5IGluY29tcGxldGUuCisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWwgZGlnaXRzIGFyZSByZXF1aXJlZC4gCisgICAgICAgICAgICAgICAgICAgIFVzZWQgZm9yIHNpZ25hbGxpbmcgd2l0aCBQdFAgY29ubmVjdGlvbnMuCisgICAgICA0CSAgICAgICAgICA9IENhbGwgd2lsbCBiZSBoZWxkIGluIGEgcHJvY2VlZGluZyBzdGF0ZSAKKyAgICAgICAgICAgICAgICAgICAgKEhMIGRyaXZlciBzZW5kcyBQUk9DRUVESU5HKQorICAgICAgICAgICAgICAgICAgICBVc2VkIHdoZW4gYSB1c2VyIHNwYWNlIHByb2cgbmVlZHMgdGltZSB0byBpbnRlcnByZXQgYSBjYWxsCisJCSAgICBwYXJhLnNldHVwLmVhem1zbiBtYXkgYmUgZmlsbGVkIHdpdGggYW4gdXVzMSBtZXNzYWdlIG9mCisJCSAgICAzMCBvY3RldHMgbWF4aW11bS4gRW1wdHkgc3RyaW5nIGlmIG5vIHV1cy4gCisgICAgICA1ICAgICAgICAgICA9IENhbGwgd2lsbCBiZSBhY3RpdmVseSBkZWZsZWN0ZWQgdG8gYW5vdGhlciBwYXJ0eQorICAgICAgICAgICAgICAgICAgICBPbmx5IGF2YWlsYWJsZSBpbiBEU1MxL0VVUk8gcHJvdG9jb2wKKwkJICAgIHBhcmEuc2V0dXAucGhvbmUgbXVzdCBiZSBzZXQgdG8gZGVzdGluYXRpb24gcGFydHkgbnVtYmVyCisJCSAgICBwYXJhLnNldHVwLmVhem1zbiBtYXkgYmUgZmlsbGVkIHdpdGggYW4gdXVzMSBtZXNzYWdlIG9mCisJCSAgICAzMCBvY3RldHMgbWF4aW11bS4gRW1wdHkgc3RyaW5nIGlmIG5vIHV1cy4gCisgICAgICAtMSAgICAgICAgICA9IEFuIGVycm9yIGhhcHBlbmVkLiAoSW52YWxpZCBwYXJhbWV0ZXJzIGZvciBleGFtcGxlLikKKyAgVGhlIGtleXBhZCBzdXBwb3J0IG5vdyBpcyBpbmNsdWRlZCBpbiB0aGUgZGlhbCBjb21tYW5kLgkgICAgICAgIAorCisKKyAgSVNETl9TVEFUX1JVTjoKKworICAgIFdpdGggdGhpcyBjYWxsLCB0aGUgSEwtZHJpdmVyIHNpZ25hbHMgYXZhaWxhYmlsaXR5IG9mIHRoZSBJU0ROLWNhcmQuCisgICAgKGFmdGVyIGluaXRpYWxpemluZywgbG9hZGluZyBmaXJtd2FyZSkKKworICAgIFBhcmFtZXRlcjoKKyAgICAgIGRyaXZlciAgICAgID0gZHJpdmVyLUlkCisgICAgICBjb21tYW5kICAgICA9IElTRE5fU1RBVF9SVU4KKyAgICAgIGFyZyAgICAgICAgID0gdW51c2VkLgorICAgICAgcGFybSAgICAgICAgPSB1bnVzZWQuCisKKyAgSVNETl9TVEFUX1NUT1A6CisKKyAgICBXaXRoIHRoaXMgY2FsbCwgdGhlIEhMLWRyaXZlciBzaWduYWxzIHVuYXZhaWxhYmlsaXR5IG9mIHRoZSBJU0ROLWNhcmQuCisgICAgKGJlZm9yZSB1bmxvYWRpbmcsIHdoaWxlIHJlc2V0dGluZy9yZWNvbmZpZ3VyaW5nIHRoZSBjYXJkKQorCisgICAgUGFyYW1ldGVyOgorICAgICAgZHJpdmVyICAgICAgPSBkcml2ZXItSWQKKyAgICAgIGNvbW1hbmQgICAgID0gSVNETl9TVEFUX1NUT1AKKyAgICAgIGFyZyAgICAgICAgID0gdW51c2VkLgorICAgICAgcGFybSAgICAgICAgPSB1bnVzZWQuCisKKyAgSVNETl9TVEFUX0RDT05OOgorCisgICBXaXRoIHRoaXMgY2FsbCwgdGhlIEhMLWRyaXZlciBzaWduYWxzIHRoZSBzdWNjZXNzZnVsIGVzdGFibGlzaG1lbnQgb2YKKyAgIGEgRC1DaGFubmVsLWNvbm5lY3Rpb24uIChSZXNwb25zZSB0byBJU0ROX0NNRF9BQ0NFUFREIG9yIElTRE5fQ01EX0RJQUwpCisKKyAgICBQYXJhbWV0ZXI6CisgICAgICBkcml2ZXIgICAgICA9IGRyaXZlci1JZAorICAgICAgY29tbWFuZCAgICAgPSBJU0ROX1NUQVRfRENPTk4KKyAgICAgIGFyZyAgICAgICAgID0gY2hhbm5lbC1udW1iZXIsIGxvY2FsbHkgdG8gdGhlIGRyaXZlci4gKHN0YXJ0aW5nIHdpdGggMCkKKyAgICAgIHBhcm0gICAgICAgID0gdW51c2VkLgorCisgIElTRE5fU1RBVF9CQ09OTjoKKworICAgV2l0aCB0aGlzIGNhbGwsIHRoZSBITC1kcml2ZXIgc2lnbmFscyB0aGUgc3VjY2Vzc2Z1bCBlc3RhYmxpc2htZW50IG9mCisgICBhIEItQ2hhbm5lbC1jb25uZWN0aW9uLiAoUmVzcG9uc2UgdG8gSVNETl9DTURfQUNDRVBUQiBvciBiZWNhdXNlIHRoZQorICAgcmVtb3RlLXN0YXRpb24gaGFzIGluaXRpYXRlZCBlc3RhYmxpc2htZW50KQorCisgICBUaGUgSEwgZHJpdmVyIHNob3VsZCBjYWxsIHRoaXMgd2hlbiB0aGUgbG9naWNhbCBsMi9sMyBwcm90b2NvbCAKKyAgIGNvbm5lY3Rpb24gb24gdG9wIG9mIHRoZSBwaHlzaWNhbCBCLWNoYW5uZWwgaXMgZXN0YWJsaXNoZWQuCisKKyAgICBQYXJhbWV0ZXI6CisgICAgICBkcml2ZXIgICAgICA9IGRyaXZlci1JZAorICAgICAgY29tbWFuZCAgICAgPSBJU0ROX1NUQVRfQkNPTk4KKyAgICAgIGFyZyAgICAgICAgID0gY2hhbm5lbC1udW1iZXIsIGxvY2FsbHkgdG8gdGhlIGRyaXZlci4gKHN0YXJ0aW5nIHdpdGggMCkKKyAgICAgIHBhcm0ubnVtICAgID0gQVNDSUktU3RyaW5nLCBjb250YWluaW5nIHR5cGUgb2YgY29ubmVjdGlvbiAoZm9yIGFuYWxvZworCQkgICAgbW9kZW0gb25seSkuIFRoaXMgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgQ09OTkVDVCBtZXNzYWdlCisJCSAgICBlLmcuIDE0NDAwL1YuMzJiaXMKKworICBJU0ROX1NUQVRfREhVUDoKKworICAgV2l0aCB0aGlzIGNhbGwsIHRoZSBITC1kcml2ZXIgc2lnbmFscyB0aGUgc2h1dGRvd24gb2YgYQorICAgRC1DaGFubmVsLWNvbm5lY3Rpb24uIFRoaXMgY291bGQgYmUgYSByZXNwb25zZSB0byBhIHByaW9yIElTRE5fQ01EX0hBTkdVUCwKKyAgIG9yIGNhdXNlZCBieSBhIHJlbW90ZS1oYW5ndXAgb3IgaWYgdGhlIHJlbW90ZS1zdGF0aW9uIGhhcyBhY3RpdmVseQorICAgcmVqZWN0ZWQgYSBjYWxsLgorCisgICAgUGFyYW1ldGVyOgorICAgICAgZHJpdmVyICAgICAgPSBkcml2ZXItSWQKKyAgICAgIGNvbW1hbmQgICAgID0gSVNETl9TVEFUX0RIVVAKKyAgICAgIGFyZyAgICAgICAgID0gY2hhbm5lbC1udW1iZXIsIGxvY2FsbHkgdG8gdGhlIGRyaXZlci4gKHN0YXJ0aW5nIHdpdGggMCkKKyAgICAgIHBhcm0gICAgICAgID0gdW51c2VkLgorCisgIElTRE5fU1RBVF9CSFVQOgorCisgICBXaXRoIHRoaXMgY2FsbCwgdGhlIEhMLWRyaXZlciBzaWduYWxzIHRoZSBzaHV0ZG93biBvZiBhCisgICBCLUNoYW5uZWwtY29ubmVjdGlvbi4gVGhpcyBjb3VsZCBiZSBhIHJlc3BvbnNlIHRvIGEgcHJpb3IgSVNETl9DTURfSEFOR1VQLAorICAgb3IgY2F1c2VkIGJ5IGEgcmVtb3RlLWhhbmd1cC4KKworICAgVGhlIEhMIGRyaXZlciBzaG91bGQgY2FsbCB0aGlzIGFzIHNvb24gYXMgdGhlIGxvZ2ljYWwgbDIvbDMgcHJvdG9jb2wgCisgICBjb25uZWN0aW9uIG9uIHRvcCBvZiB0aGUgcGh5c2ljYWwgQi1jaGFubmVsIGlzIHJlbGVhc2VkLgorCisgICAgUGFyYW1ldGVyOgorICAgICAgZHJpdmVyICAgICAgPSBkcml2ZXItSWQKKyAgICAgIGNvbW1hbmQgICAgID0gSVNETl9TVEFUX0JIVVAKKyAgICAgIGFyZyAgICAgICAgID0gY2hhbm5lbC1udW1iZXIsIGxvY2FsbHkgdG8gdGhlIGRyaXZlci4gKHN0YXJ0aW5nIHdpdGggMCkKKyAgICAgIHBhcm0gICAgICAgID0gdW51c2VkLgorCisgIElTRE5fU1RBVF9DSU5GOgorCisgICBXaXRoIHRoaXMgY2FsbCwgdGhlIEhMLWRyaXZlciBkZWxpdmVycyBjaGFyZ2UtdW5pdCBpbmZvcm1hdGlvbiB0byB0aGUKKyAgIExMLgorCisgICAgUGFyYW1ldGVyOgorICAgICAgZHJpdmVyICAgICAgPSBkcml2ZXItSWQKKyAgICAgIGNvbW1hbmQgICAgID0gSVNETl9TVEFUX0NJTkYKKyAgICAgIGFyZyAgICAgICAgID0gY2hhbm5lbC1udW1iZXIsIGxvY2FsbHkgdG8gdGhlIGRyaXZlci4gKHN0YXJ0aW5nIHdpdGggMCkKKyAgICAgIHBhcm0ubnVtICAgID0gQVNDSUkgc3RyaW5nIGNvbnRhaW5pbmcgY2hhcmdlLXVuaXRzIChkaWdpdHMgb25seSkuCisKKyAgSVNETl9TVEFUX0xPQUQ6IChjdXJyZW50bHkgdW51c2VkKQorCisgIElTRE5fU1RBVF9VTkxPQUQ6CisKKyAgIFdpdGggdGhpcyBjYWxsLCB0aGUgSEwtZHJpdmVyIHNpZ25hbHMgdGhhdCBpdCB3aWxsIGJlIHVubG9hZGVkIG5vdy4gVGhpcworICAgdGVsbHMgdGhlIExMIHRvIHJlbGVhc2UgYWxsIGNvcnJlc3BvbmRpbmcgZGF0YS1zdHJ1Y3R1cmVzLgorCisgICAgUGFyYW1ldGVyOgorICAgICAgZHJpdmVyICAgICAgPSBkcml2ZXItSWQKKyAgICAgIGNvbW1hbmQgICAgID0gSVNETl9TVEFUX1VOTE9BRAorICAgICAgYXJnICAgICAgICAgPSB1bnVzZWQuCisgICAgICBwYXJtICAgICAgICA9IHVudXNlZC4KKworICBJU0ROX1NUQVRfQlNFTlQ6CisKKyAgICBXaXRoIHRoaXMgY2FsbCB0aGUgSEwtZHJpdmVyIHNpZ25hbHMgdGhlIGRlbGl2ZXJ5IG9mIGEgZGF0YS1wYWNrZXQuCisgICAgVGhpcyBjYWxsYmFjayBpcyB1c2VkIGJ5IHRoZSBuZXR3b3JrLWludGVyZmFjZXMgb25seSwgdHR5LUVtdWxhdGlvbgorICAgIGRvZXMgbm90IG5lZWQgdGhpcyBjYWxsLgorCisgICAgUGFyYW1ldGVyOgorICAgICAgZHJpdmVyICAgICAgPSBkcml2ZXItSWQKKyAgICAgIGNvbW1hbmQgICAgID0gSVNETl9TVEFUX0JTRU5UCisgICAgICBhcmcgICAgICAgICA9IGNoYW5uZWwtbnVtYmVyLCBsb2NhbGx5IHRvIHRoZSBkcml2ZXIuIChzdGFydGluZyB3aXRoIDApCisgICAgICBwYXJtLmxlbmd0aCA9ICoqKkNIQU5HRUkuMS4yMTogTmV3IGZpZWxkLgorCQkgICAgdGhlIGRyaXZlciBoYXMgdG8gc2V0IHRoaXMgdG8gdGhlIG9yaWdpbmFsIGxlbmd0aAorCQkgICAgb2YgdGhlIHNrYiBhdCB0aGUgdGltZSBvZiByZWNlaXZpbmcgaXQgZnJvbSB0aGUgbGlua2xldmVsLgorCisgIElTRE5fU1RBVF9OT0RDSDoKKworICAgIFdpdGggdGhpcyBjYWxsLCB0aGUgZHJpdmVyIGhhcyB0byByZXNwb25kIHRvIGEgcHJpb3IgSVNETl9DTURfRElBTCwgaWYKKyAgICBubyBELUNoYW5uZWwgaXMgYXZhaWxhYmxlLgorCisgICAgUGFyYW1ldGVyOgorICAgICAgZHJpdmVyICAgICAgPSBkcml2ZXItSWQKKyAgICAgIGNvbW1hbmQgICAgID0gSVNETl9TVEFUX05PRENICisgICAgICBhcmcgICAgICAgICA9IGNoYW5uZWwtbnVtYmVyLCBsb2NhbGx5IHRvIHRoZSBkcml2ZXIuIChzdGFydGluZyB3aXRoIDApCisgICAgICBwYXJtICAgICAgICA9IHVudXNlZC4KKworICBJU0ROX1NUQVRfQUREQ0g6IAorCisgICAgVGhpcyBjYWxsIGlzIGZvciBITC1kcml2ZXJzLCB3aGljaCBhcmUgdW5hYmxlIHRvIGNoZWNrIGNhcmQtdHlwZQorICAgIG9yIG51bWJlcnMgb2Ygc3VwcG9ydGVkIGNoYW5uZWxzIGJlZm9yZSB0aGV5IGhhdmUgbG9hZGVkIGFueSBmaXJtd2FyZQorICAgIHVzaW5nIGlvY3RsLiBUaG9zZSBITC1kcml2ZXIgc2ltcGx5IHNldCB0aGUgY2hhbm5lbC1wYXJhbWV0ZXIgdG8gYQorICAgIG1pbmltdW0gY2hhbm5lbC1udW1iZXIgd2hlbiByZWdpc3RlcmluZywgYW5kIGxhdGVyIGlmIHRoZXkga25vdworICAgIHRoZSByZWFsIGFtb3VudCwgcGVyZm9ybSB0aGlzIGNhbGwsIGFsbG9jYXRpbmcgYWRkaXRpb25hbCBjaGFubmVscy4KKworICAgIFBhcmFtZXRlcjoKKyAgICAgIGRyaXZlciAgICAgID0gZHJpdmVyLUlkCisgICAgICBjb21tYW5kICAgICA9IElTRE5fU1RBVF9BRERDSAorICAgICAgYXJnICAgICAgICAgPSBudW1iZXIgb2YgY2hhbm5lbHMgdG8gYmUgYWRkZWQuCisgICAgICBwYXJtICAgICAgICA9IHVudXNlZC4KKworICBJU0ROX1NUQVRfQ0FVU0U6CisKKyAgICBXaXRoIHRoaXMgY2FsbCwgdGhlIEhMLWRyaXZlciBkZWxpdmVycyBDQVVTRS1tZXNzYWdlcyB0byB0aGUgTEwuCisgICAgQ3VycmVudGx5IHRoZSBMTCBkb2VzIG5vdCB1c2UgdGhpcyBtZXNzYWdlcy4gVGhlaXIgY29udGVudHMgaXMgc2ltcGx5CisgICAgbG9nZ2VkIHZpYSBrZXJuZWwtbWVzc2FnZXMuIFRoZXJlZm9yZSwgY3VycmVudGx5IHRoZSBmb3JtYXQgb2YgdGhlCisgICAgbWVzc2FnZXMgaXMgY29tcGxldGVseSBmcmVlLiBIb3dldmVyIHRoZXkgc2hvdWxkIGJlIHByaW50YWJsZS4KKworICAgIFBhcmFtZXRlcjoKKyAgICAgIGRyaXZlciAgICAgID0gZHJpdmVyLUlkCisgICAgICBjb21tYW5kICAgICA9IElTRE5fU1RBVF9OT0RDSAorICAgICAgYXJnICAgICAgICAgPSBjaGFubmVsLW51bWJlciwgbG9jYWxseSB0byB0aGUgZHJpdmVyLiAoc3RhcnRpbmcgd2l0aCAwKQorICAgICAgcGFybS5udW0gICAgPSBBU0NJSSBzdHJpbmcgY29udGFpbmluZyBDQVVTRS1tZXNzYWdlLgorCisgIElTRE5fU1RBVF9ESVNQTEFZOgorCisgICAgV2l0aCB0aGlzIGNhbGwsIHRoZSBITC1kcml2ZXIgZGVsaXZlcnMgRElTUExBWS1tZXNzYWdlcyB0byB0aGUgTEwuCisgICAgQ3VycmVudGx5IHRoZSBMTCBkb2VzIG5vdCB1c2UgdGhpcyBtZXNzYWdlcy4gCisKKyAgICBQYXJhbWV0ZXI6CisgICAgICBkcml2ZXIgICAgICA9IGRyaXZlci1JZAorICAgICAgY29tbWFuZCAgICAgPSBJU0ROX1NUQVRfRElTUExBWQorICAgICAgYXJnICAgICAgICAgPSBjaGFubmVsLW51bWJlciwgbG9jYWxseSB0byB0aGUgZHJpdmVyLiAoc3RhcnRpbmcgd2l0aCAwKQorICAgICAgcGFyYS5kaXNwbGF5PSBzdHJpbmcgY29udGFpbmluZyBESVNQTEFZLW1lc3NhZ2UuCisKKyAgSVNETl9TVEFUX1BST1Q6CisKKyAgICBXaXRoIHRoaXMgY2FsbCwgdGhlIEhMLWRyaXZlciBkZWxpdmVycyBwcm90b2NvbCBzcGVjaWZpYyBpbmZvcyB0byB0aGUgTEwuCisgICAgVGhlIGNhbGwgaXMgbm90IGltcGxpY2l0ZWx5IGJvdW5kIHRvIGEgY29ubmVjdGlvbi4KKworICAgIFBhcmFtZXRlcjoKKyAgICAgIGRyaXZlciAgICAgID0gZHJpdmVyLUlkCisgICAgICBjb21tYW5kICAgICA9IElTRE5fU1RBVF9QUk9UCisgICAgICBhcmcgICAgICAgICA9IFRoZSBsb3dlciA4IEJpdHMgZGVmaW5lIHRoZSBhZGRyZXNzZWQgcHJvdG9jb2wgYXMgZGVmaW5lZAorICAgICAgICAgICAgICAgICAgICBpbiBJU0ROX1BUWVBFLi4uLCB0aGUgdXBwZXIgYml0cyBhcmUgdXNlZCB0byBkaWZmZXJlbnRpYXRlCisgICAgICAgICAgICAgICAgICAgIHRoZSBwcm90b2NvbCBzcGVjaWZpYyBTVEFULiAgCisgICAgICAKKyAgICAgIHBhcmEgICAgICAgID0gcHJvdG9jb2wgYW5kIGZ1bmN0aW9uIHNwZWNpZmljLiBTZWUgaXNkbmlmLmggZm9yIGRldGFpbC4KKworICBJU0ROX1NUQVRfRElTQ0g6CisKKyAgICBXaXRoIHRoaXMgY2FsbCwgdGhlIEhMLWRyaXZlciBzaWduYWxzIHRoZSBMTCB0byBkaXNhYmxlIG9yIGVuYWJsZSB0aGUKKyAgICB1c2Ugb2Ygc3VwcGxpZWQgY2hhbm5lbCBhbmQgZHJpdmVyLgorICAgIFRoZSBjYWxsIG1heSBiZSB1c2VkIHRvIHJlZHVjZSB0aGUgYXZhaWxhYmxlIG51bWJlciBvZiBCLWNoYW5uZWxzIGFmdGVyCisgICAgbG9hZGluZyB0aGUgZHJpdmVyLiBUaGUgTEwgaGFzIHRvIGlnbm9yZSBhIGRpc2FibGVkIGNoYW5uZWwgd2hlbiBzZWFyY2hpbmcKKyAgICBmb3IgZnJlZSBjaGFubmVscy4gVGhlIEhMIGRyaXZlciBpdHNlbGYgbmV2ZXIgZGVsaXZlcnMgU1RBVCBjYWxsYmFja3MgZm9yCisgICAgZGlzYWJsZWQgY2hhbm5lbHMuIAkgICAgCisgICAgVGhlIExMIHJldHVybnMgYSBub256ZXJvIGNvZGUgaWYgdGhlIG9wZXJhdGlvbiB3YXMgbm90IHN1Y2Nlc3NmdWwgb3IgdGhlCisgICAgc2VsZWN0ZWQgY2hhbm5lbCBpcyBhY3R1YWxseSByZWdhcmRlZCBhcyBidXN5LgorCisgICAgUGFyYW1ldGVyOgorICAgICAgZHJpdmVyICAgICAgPSBkcml2ZXItSWQKKyAgICAgIGNvbW1hbmQgICAgID0gSVNETl9TVEFUX0RJU0NICisgICAgICBhcmcgICAgICAgICA9IGNoYW5uZWwtbnVtYmVyLCBsb2NhbGx5IHRvIHRoZSBkcml2ZXIuIChzdGFydGluZyB3aXRoIDApCisgICAgICBwYXJtLm51bVswXSA9IDAgaWYgY2hhbm5lbCBzaGFsbCBiZSBkaXNhYmxlZCwgZWxzZSBlbmFibGVkLgorCisgIElTRE5fU1RBVF9MMUVSUjoKKworICAgICoqKkNIQU5HRUkxLjIxIG5ldyBzdGF0dXMgbWVzc2FnZS4KKyAgICBBIHNpZ25hbCBjYW4gYmUgc2VudCB0byB0aGUgbGlua2xldmVsIGlmIGFuIExheWVyMS1lcnJvciByZXN1bHRzIGluCisgICAgcGFja2V0LWxvc3Mgb24gcmVjZWl2ZSBvciBzZW5kLiBUaGUgZmllbGQgZXJyY29kZSBvZiB0aGUgY21kLnBhcm0KKyAgICB1bmlvbiBkZXNjcmliZXMgdGhlIGVycm9yIG1vcmUgcHJlY2lzZWx5LgorCisgICAgUGFyYW1ldGVyOgorICAgICAgZHJpdmVyICAgICAgPSBkcml2ZXItSWQKKyAgICAgIGNvbW1hbmQgICAgID0gSVNETl9TVEFUX0wxRVJSCisgICAgICBhcmcgICAgICAgICA9IGNoYW5uZWwtbnVtYmVyLCBsb2NhbGx5IHRvIHRoZSBkcml2ZXIuIChzdGFydGluZyB3aXRoIDApCisgICAgICBwYXJtLmVycmNvZGU9IElTRE5fU1RBVF9MMUVSUl9TRU5EOiAgICAgUGFja2V0IGxvc3Qgd2hpbGUgc2VuZGluZy4KKwkJICAgIElTRE5fU1RBVF9MMUVSUl9SRUNWOiAgICAgUGFja2V0IGxvc3Qgd2hpbGUgcmVjZWl2aW5nLgorICBJU0ROX1NUQVRfRkFYSU5EOgorCisgICAgV2l0aCB0aGlzIGNhbGwgdGhlIEhMLWRyaXZlciBzaWduYWxzIGEgZmF4IHN1Yi1jb21tYW5kIHRvIHRoZSBMTC4KKyAgICBGb3IgZGV0YWlscyByZWZlciB0byBJTlRFUkZBQ0UuZmF4CisKKyAgICBQYXJhbWV0ZXI6CisgICAgICBkcml2ZXIgICAgICA9IGRyaXZlci1JZC4KKyAgICAgIGNvbW1hbmQgICAgID0gSVNETl9TVEFUX0ZBWElORAorICAgICAgYXJnICAgICAgICAgPSBjaGFubmVsLW51bWJlciwgbG9jYWxseSB0byB0aGUgZHJpdmVyLiAoc3RhcnRpbmcgd2l0aCAwKQorICAgICAgcGFybSAgICAgICAgPSB1bnVzZWQuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaXNkbi9JTlRFUkZBQ0UuQ0FQSSBiL0RvY3VtZW50YXRpb24vaXNkbi9JTlRFUkZBQ0UuQ0FQSQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjg4YjVhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pc2RuL0lOVEVSRkFDRS5DQVBJCkBAIC0wLDAgKzEsMzU1IEBACitLZXJuZWwgQ0FQSSBJbnRlcmZhY2UgdG8gSGFyZHdhcmUgRHJpdmVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworMS4gT3ZlcnZpZXcKKworRnJvbSB0aGUgQ0FQSSAyLjAgc3BlY2lmaWNhdGlvbjoKK0NPTU1PTi1JU0ROLUFQSSAoQ0FQSSkgaXMgYW4gYXBwbGljYXRpb24gcHJvZ3JhbW1pbmcgaW50ZXJmYWNlIHN0YW5kYXJkIHVzZWQKK3RvIGFjY2VzcyBJU0ROIGVxdWlwbWVudCBjb25uZWN0ZWQgdG8gYmFzaWMgcmF0ZSBpbnRlcmZhY2VzIChCUkkpIGFuZCBwcmltYXJ5CityYXRlIGludGVyZmFjZXMgKFBSSSkuCisKK0tlcm5lbCBDQVBJIG9wZXJhdGVzIGFzIGEgZGlzcGF0Y2hpbmcgbGF5ZXIgYmV0d2VlbiBDQVBJIGFwcGxpY2F0aW9ucyBhbmQgQ0FQSQoraGFyZHdhcmUgZHJpdmVycy4gSGFyZHdhcmUgZHJpdmVycyByZWdpc3RlciBJU0ROIGRldmljZXMgKGNvbnRyb2xsZXJzLCBpbiBDQVBJCitsaW5nbykgd2l0aCBLZXJuZWwgQ0FQSSB0byBpbmRpY2F0ZSB0aGVpciByZWFkaW5lc3MgdG8gcHJvdmlkZSB0aGVpciBzZXJ2aWNlCit0byBDQVBJIGFwcGxpY2F0aW9ucy4gQ0FQSSBhcHBsaWNhdGlvbnMgYWxzbyByZWdpc3RlciB3aXRoIEtlcm5lbCBDQVBJLAorcmVxdWVzdGluZyBhc3NvY2lhdGlvbiB3aXRoIGEgQ0FQSSBkZXZpY2UuIEtlcm5lbCBDQVBJIHRoZW4gZGlzcGF0Y2hlcyB0aGUKK2FwcGxpY2F0aW9uIHJlZ2lzdHJhdGlvbiB0byBhbiBhdmFpbGFibGUgZGV2aWNlLCBmb3J3YXJkaW5nIGl0IHRvIHRoZQorY29ycmVzcG9uZGluZyBoYXJkd2FyZSBkcml2ZXIuIEtlcm5lbCBDQVBJIHRoZW4gZm9yd2FyZHMgQ0FQSSBtZXNzYWdlcyBpbiBib3RoCitkaXJlY3Rpb25zIGJldHdlZW4gdGhlIGFwcGxpY2F0aW9uIGFuZCB0aGUgaGFyZHdhcmUgZHJpdmVyLgorCitGb3JtYXQgYW5kIHNlbWFudGljcyBvZiBDQVBJIG1lc3NhZ2VzIGFyZSBzcGVjaWZpZWQgaW4gdGhlIENBUEkgMi4wIHN0YW5kYXJkLgorVGhpcyBzdGFuZGFyZCBpcyBmcmVlbHkgYXZhaWxhYmxlIGZyb20gaHR0cDovL3d3dy5jYXBpLm9yZy4KKworCisyLiBEcml2ZXIgYW5kIERldmljZSBSZWdpc3RyYXRpb24KKworQ0FQSSBkcml2ZXJzIG9wdGlvbmFsbHkgcmVnaXN0ZXIgdGhlbXNlbHZlcyB3aXRoIEtlcm5lbCBDQVBJIGJ5IGNhbGxpbmcgdGhlCitLZXJuZWwgQ0FQSSBmdW5jdGlvbiByZWdpc3Rlcl9jYXBpX2RyaXZlcigpIHdpdGggYSBwb2ludGVyIHRvIGEgc3RydWN0CitjYXBpX2RyaXZlci4gVGhpcyBzdHJ1Y3R1cmUgbXVzdCBiZSBmaWxsZWQgd2l0aCB0aGUgbmFtZSBhbmQgcmV2aXNpb24gb2YgdGhlCitkcml2ZXIsIGFuZCBvcHRpb25hbGx5IGEgcG9pbnRlciB0byBhIGNhbGxiYWNrIGZ1bmN0aW9uLCBhZGRfY2FyZCgpLiBUaGUKK3JlZ2lzdHJhdGlvbiBjYW4gYmUgcmV2b2tlZCBieSBjYWxsaW5nIHRoZSBmdW5jdGlvbiB1bnJlZ2lzdGVyX2NhcGlfZHJpdmVyKCkKK3dpdGggYSBwb2ludGVyIHRvIHRoZSBzYW1lIHN0cnVjdCBjYXBpX2RyaXZlci4KKworQ0FQSSBkcml2ZXJzIG11c3QgcmVnaXN0ZXIgZWFjaCBvZiB0aGUgSVNETiBkZXZpY2VzIHRoZXkgY29udHJvbCB3aXRoIEtlcm5lbAorQ0FQSSBieSBjYWxsaW5nIHRoZSBLZXJuZWwgQ0FQSSBmdW5jdGlvbiBhdHRhY2hfY2FwaV9jdHIoKSB3aXRoIGEgcG9pbnRlciB0byBhCitzdHJ1Y3QgY2FwaV9jdHIgYmVmb3JlIHRoZXkgY2FuIGJlIHVzZWQuIFRoaXMgc3RydWN0dXJlIG11c3QgYmUgZmlsbGVkIHdpdGgKK3RoZSBuYW1lcyBvZiB0aGUgZHJpdmVyIGFuZCBjb250cm9sbGVyLCBhbmQgYSBudW1iZXIgb2YgY2FsbGJhY2sgZnVuY3Rpb24KK3BvaW50ZXJzIHdoaWNoIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBLZXJuZWwgQ0FQSSBmb3IgY29tbXVuaWNhdGluZyB3aXRoIHRoZQorZHJpdmVyLiBUaGUgcmVnaXN0cmF0aW9uIGNhbiBiZSByZXZva2VkIGJ5IGNhbGxpbmcgdGhlIGZ1bmN0aW9uCitkZXRhY2hfY2FwaV9jdHIoKSB3aXRoIGEgcG9pbnRlciB0byB0aGUgc2FtZSBzdHJ1Y3QgY2FwaV9jdHIuCisKK0JlZm9yZSB0aGUgZGV2aWNlIGNhbiBiZSBhY3R1YWxseSB1c2VkLCB0aGUgZHJpdmVyIG11c3QgZmlsbCBpbiB0aGUgZGV2aWNlCitpbmZvcm1hdGlvbiBmaWVsZHMgJ21hbnUnLCAndmVyc2lvbicsICdwcm9maWxlJyBhbmQgJ3NlcmlhbCcgaW4gdGhlIGNhcGlfY3RyCitzdHJ1Y3R1cmUgb2YgdGhlIGRldmljZSwgYW5kIHNpZ25hbCBpdHMgcmVhZGluZXNzIGJ5IGNhbGxpbmcgY2FwaV9jdHJfcmVhZHkoKS4KK0Zyb20gdGhlbiBvbiwgS2VybmVsIENBUEkgbWF5IGNhbGwgdGhlIHJlZ2lzdGVyZWQgY2FsbGJhY2sgZnVuY3Rpb25zIGZvciB0aGUKK2RldmljZS4KKworSWYgdGhlIGRldmljZSBiZWNvbWVzIHVudXNhYmxlIGZvciBhbnkgcmVhc29uIChzaHV0ZG93biwgZGlzY29ubmVjdCAuLi4pLCB0aGUKK2RyaXZlciBoYXMgdG8gY2FsbCBjYXBpX2N0cl9kb3duKCkuIFRoaXMgd2lsbCBwcmV2ZW50IGZ1cnRoZXIgY2FsbHMgdG8gdGhlCitjYWxsYmFjayBmdW5jdGlvbnMgYnkgS2VybmVsIENBUEkuCisKKworMy4gQXBwbGljYXRpb24gUmVnaXN0cmF0aW9uIGFuZCBDb21tdW5pY2F0aW9uCisKK0tlcm5lbCBDQVBJIGZvcndhcmRzIHJlZ2lzdHJhdGlvbiByZXF1ZXN0cyBmcm9tIGFwcGxpY2F0aW9ucyAoY2FsbHMgdG8gQ0FQSQorb3BlcmF0aW9uIENBUElfUkVHSVNURVIpIHRvIGFuIGFwcHJvcHJpYXRlIGhhcmR3YXJlIGRyaXZlciBieSBjYWxsaW5nIGl0cworcmVnaXN0ZXJfYXBwbCgpIGNhbGxiYWNrIGZ1bmN0aW9uLiBBIHVuaXF1ZSBBcHBsaWNhdGlvbiBJRCAoQXBwbElELCB1MTYpIGlzCithbGxvY2F0ZWQgYnkgS2VybmVsIENBUEkgYW5kIHBhc3NlZCB0byByZWdpc3Rlcl9hcHBsKCkgYWxvbmcgd2l0aCB0aGUKK3BhcmFtZXRlciBzdHJ1Y3R1cmUgcHJvdmlkZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBUaGlzIGlzIGFuYWxvZ291cyB0byB0aGUKK29wZW4oKSBvcGVyYXRpb24gb24gcmVndWxhciBmaWxlcyBvciBjaGFyYWN0ZXIgZGV2aWNlcy4KKworQWZ0ZXIgYSBzdWNjZXNzZnVsIHJldHVybiBmcm9tIHJlZ2lzdGVyX2FwcGwoKSwgQ0FQSSBtZXNzYWdlcyBmcm9tIHRoZQorYXBwbGljYXRpb24gbWF5IGJlIHBhc3NlZCB0byB0aGUgZHJpdmVyIGZvciB0aGUgZGV2aWNlIHZpYSBjYWxscyB0byB0aGUKK3NlbmRfbWVzc2FnZSgpIGNhbGxiYWNrIGZ1bmN0aW9uLiBDb252ZXJzZWx5LCB0aGUgZHJpdmVyIG1heSBjYWxsIEtlcm5lbAorQ0FQSSdzIGNhcGlfY3RyX2hhbmRsZV9tZXNzYWdlKCkgZnVuY3Rpb24gdG8gcGFzcyBhIHJlY2VpdmVkIENBUEkgbWVzc2FnZSB0bworS2VybmVsIENBUEkgZm9yIGZvcndhcmRpbmcgdG8gYW4gYXBwbGljYXRpb24sIHNwZWNpZnlpbmcgaXRzIEFwcGxJRC4KKworRGVyZWdpc3RyYXRpb24gcmVxdWVzdHMgKENBUEkgb3BlcmF0aW9uIENBUElfUkVMRUFTRSkgZnJvbSBhcHBsaWNhdGlvbnMgYXJlCitmb3J3YXJkZWQgYXMgY2FsbHMgdG8gdGhlIHJlbGVhc2VfYXBwbCgpIGNhbGxiYWNrIGZ1bmN0aW9uLCBwYXNzaW5nIHRoZSBzYW1lCitBcHBsSUQgYXMgd2l0aCByZWdpc3Rlcl9hcHBsKCkuIEFmdGVyIHJldHVybiBmcm9tIHJlbGVhc2VfYXBwbCgpLCBubyBDQVBJCittZXNzYWdlcyBmb3IgdGhhdCBhcHBsaWNhdGlvbiBtYXkgYmUgcGFzc2VkIHRvIG9yIGZyb20gdGhlIGRldmljZSBhbnltb3JlLgorCisKKzQuIERhdGEgU3RydWN0dXJlcworCis0LjEgc3RydWN0IGNhcGlfZHJpdmVyCisKK1RoaXMgc3RydWN0dXJlIGRlc2NyaWJlcyBhIEtlcm5lbCBDQVBJIGRyaXZlciBpdHNlbGYuIEl0IGlzIHVzZWQgaW4gdGhlCityZWdpc3Rlcl9jYXBpX2RyaXZlcigpIGFuZCB1bnJlZ2lzdGVyX2NhcGlfZHJpdmVyKCkgZnVuY3Rpb25zLCBhbmQgY29udGFpbnMKK3RoZSBmb2xsb3dpbmcgbm9uLXByaXZhdGUgZmllbGRzLCBhbGwgdG8gYmUgc2V0IGJ5IHRoZSBkcml2ZXIgYmVmb3JlIGNhbGxpbmcKK3JlZ2lzdGVyX2NhcGlfZHJpdmVyKCk6CisKK2NoYXIgbmFtZVszMl0KKwl0aGUgbmFtZSBvZiB0aGUgZHJpdmVyLCBhcyBhIHplcm8tdGVybWluYXRlZCBBU0NJSSBzdHJpbmcKK2NoYXIgcmV2aXNpb25bMzJdCisJdGhlIHJldmlzaW9uIG51bWJlciBvZiB0aGUgZHJpdmVyLCBhcyBhIHplcm8tdGVybWluYXRlZCBBU0NJSSBzdHJpbmcKK2ludCAoKmFkZF9jYXJkKShzdHJ1Y3QgY2FwaV9kcml2ZXIgKmRyaXZlciwgY2FwaWNhcmRwYXJhbXMgKmRhdGEpCisJYSBjYWxsYmFjayBmdW5jdGlvbiBwb2ludGVyIChtYXkgYmUgTlVMTCkKKworCis0LjIgc3RydWN0IGNhcGlfY3RyCisKK1RoaXMgc3RydWN0dXJlIGRlc2NyaWJlcyBhbiBJU0ROIGRldmljZSAoY29udHJvbGxlcikgaGFuZGxlZCBieSBhIEtlcm5lbCBDQVBJCitkcml2ZXIuIEFmdGVyIHJlZ2lzdHJhdGlvbiB2aWEgdGhlIGF0dGFjaF9jYXBpX2N0cigpIGZ1bmN0aW9uIGl0IGlzIHBhc3NlZCB0bworYWxsIGNvbnRyb2xsZXIgc3BlY2lmaWMgbG93ZXIgbGF5ZXIgaW50ZXJmYWNlIGFuZCBjYWxsYmFjayBmdW5jdGlvbnMgdG8KK2lkZW50aWZ5IHRoZSBjb250cm9sbGVyIHRvIG9wZXJhdGUgb24uCisKK0l0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgbm9uLXByaXZhdGUgZmllbGRzOgorCistIHRvIGJlIHNldCBieSB0aGUgZHJpdmVyIGJlZm9yZSBjYWxsaW5nIGF0dGFjaF9jYXBpX2N0cigpOgorCitzdHJ1Y3QgbW9kdWxlICpvd25lcgorCXBvaW50ZXIgdG8gdGhlIGRyaXZlciBtb2R1bGUgb3duaW5nIHRoZSBkZXZpY2UKKwordm9pZCAqZHJpdmVyZGF0YQorCWFuIG9wYXF1ZSBwb2ludGVyIHRvIGRyaXZlciBzcGVjaWZpYyBkYXRhLCBub3QgdG91Y2hlZCBieSBLZXJuZWwgQ0FQSQorCitjaGFyIG5hbWVbMzJdCisJdGhlIG5hbWUgb2YgdGhlIGNvbnRyb2xsZXIsIGFzIGEgemVyby10ZXJtaW5hdGVkIEFTQ0lJIHN0cmluZworCitjaGFyICpkcml2ZXJfbmFtZQorCXRoZSBuYW1lIG9mIHRoZSBkcml2ZXIsIGFzIGEgemVyby10ZXJtaW5hdGVkIEFTQ0lJIHN0cmluZworCitpbnQgKCpsb2FkX2Zpcm13YXJlKShzdHJ1Y3QgY2FwaV9jdHIgKmN0cmxyLCBjYXBpbG9hZGRhdGEgKmxkYXRhKQorCShvcHRpb25hbCkgcG9pbnRlciB0byBhIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBzZW5kaW5nIGZpcm13YXJlIGFuZAorCWNvbmZpZ3VyYXRpb24gZGF0YSB0byB0aGUgZGV2aWNlCisJVGhlIGZ1bmN0aW9uIG1heSByZXR1cm4gYmVmb3JlIHRoZSBvcGVyYXRpb24gaGFzIGNvbXBsZXRlZC4KKwlDb21wbGV0aW9uIG11c3QgYmUgc2lnbmFsbGVkIGJ5IGEgY2FsbCB0byBjYXBpX2N0cl9yZWFkeSgpLgorCVJldHVybiB2YWx1ZTogMCBvbiBzdWNjZXNzLCBlcnJvciBjb2RlIG9uIGVycm9yCisJQ2FsbGVkIGluIHByb2Nlc3MgY29udGV4dC4KKwordm9pZCAoKnJlc2V0X2N0cikoc3RydWN0IGNhcGlfY3RyICpjdHJscikKKwkob3B0aW9uYWwpIHBvaW50ZXIgdG8gYSBjYWxsYmFjayBmdW5jdGlvbiBmb3Igc3RvcHBpbmcgdGhlIGRldmljZSwKKwlyZWxlYXNpbmcgYWxsIHJlZ2lzdGVyZWQgYXBwbGljYXRpb25zCisJVGhlIGZ1bmN0aW9uIG1heSByZXR1cm4gYmVmb3JlIHRoZSBvcGVyYXRpb24gaGFzIGNvbXBsZXRlZC4KKwlDb21wbGV0aW9uIG11c3QgYmUgc2lnbmFsbGVkIGJ5IGEgY2FsbCB0byBjYXBpX2N0cl9kb3duKCkuCisJQ2FsbGVkIGluIHByb2Nlc3MgY29udGV4dC4KKwordm9pZCAoKnJlZ2lzdGVyX2FwcGwpKHN0cnVjdCBjYXBpX2N0ciAqY3RybHIsIHUxNiBhcHBsaWQsCisJCQljYXBpX3JlZ2lzdGVyX3BhcmFtcyAqcnBhcmFtKQordm9pZCAoKnJlbGVhc2VfYXBwbCkoc3RydWN0IGNhcGlfY3RyICpjdHJsciwgdTE2IGFwcGxpZCkKKwlwb2ludGVycyB0byBjYWxsYmFjayBmdW5jdGlvbnMgZm9yIHJlZ2lzdHJhdGlvbiBhbmQgZGVyZWdpc3RyYXRpb24gb2YKKwlhcHBsaWNhdGlvbnMgd2l0aCB0aGUgZGV2aWNlCisJQ2FsbHMgdG8gdGhlc2UgZnVuY3Rpb25zIGFyZSBzZXJpYWxpemVkIGJ5IEtlcm5lbCBDQVBJIHNvIHRoYXQgb25seQorCW9uZSBjYWxsIHRvIGFueSBvZiB0aGVtIGlzIGFjdGl2ZSBhdCBhbnkgdGltZS4KKwordTE2ICAoKnNlbmRfbWVzc2FnZSkoc3RydWN0IGNhcGlfY3RyICpjdHJsciwgc3RydWN0IHNrX2J1ZmYgKnNrYikKKwlwb2ludGVyIHRvIGEgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHNlbmRpbmcgYSBDQVBJIG1lc3NhZ2UgdG8gdGhlCisJZGV2aWNlCisJUmV0dXJuIHZhbHVlOiBDQVBJIGVycm9yIGNvZGUKKwlJZiB0aGUgbWV0aG9kIHJldHVybnMgMCAoQ0FQSV9OT0VSUk9SKSB0aGUgZHJpdmVyIGhhcyB0YWtlbiBvd25lcnNoaXAKKwlvZiB0aGUgc2tiIGFuZCB0aGUgY2FsbGVyIG1heSBubyBsb25nZXIgYWNjZXNzIGl0LiBJZiBpdCByZXR1cm5zIGEKKwlub24temVybyAoZXJyb3IpIHZhbHVlIHRoZW4gb3duZXJzaGlwIG9mIHRoZSBza2IgcmV0dXJucyB0byB0aGUgY2FsbGVyCisJd2hvIG1heSByZXVzZSBvciBmcmVlIGl0LgorCVRoZSByZXR1cm4gdmFsdWUgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBzaWduYWwgcHJvYmxlbXMgd2l0aCByZXNwZWN0CisJdG8gYWNjZXB0aW5nIG9yIHF1ZXVlaW5nIHRoZSBtZXNzYWdlLiBFcnJvcnMgb2NjdXJyaW5nIGR1cmluZyB0aGUKKwlhY3R1YWwgcHJvY2Vzc2luZyBvZiB0aGUgbWVzc2FnZSBzaG91bGQgYmUgc2lnbmFsZWQgd2l0aCBhbgorCWFwcHJvcHJpYXRlIHJlcGx5IG1lc3NhZ2UuCisJTWF5IGJlIGNhbGxlZCBpbiBwcm9jZXNzIG9yIGludGVycnVwdCBjb250ZXh0LgorCUNhbGxzIHRvIHRoaXMgZnVuY3Rpb24gYXJlIG5vdCBzZXJpYWxpemVkIGJ5IEtlcm5lbCBDQVBJLCBpZS4gaXQgbXVzdAorCWJlIHByZXBhcmVkIHRvIGJlIHJlLWVudGVyZWQuCisKK2NoYXIgKigqcHJvY2luZm8pKHN0cnVjdCBjYXBpX2N0ciAqY3RybHIpCisJcG9pbnRlciB0byBhIGNhbGxiYWNrIGZ1bmN0aW9uIHJldHVybmluZyB0aGUgZW50cnkgZm9yIHRoZSBkZXZpY2UgaW4KKwl0aGUgQ0FQSSBjb250cm9sbGVyIGluZm8gdGFibGUsIC9wcm9jL2NhcGkvY29udHJvbGxlcgorCitjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpwcm9jX2ZvcHMKKwlwb2ludGVycyB0byBjYWxsYmFjayBmdW5jdGlvbnMgZm9yIHRoZSBkZXZpY2UncyBwcm9jIGZpbGUKKwlzeXN0ZW0gZW50cnksIC9wcm9jL2NhcGkvY29udHJvbGxlcnMvPG4+OyBwb2ludGVyIHRvIHRoZSBkZXZpY2UncworCWNhcGlfY3RyIHN0cnVjdHVyZSBpcyBhdmFpbGFibGUgZnJvbSBzdHJ1Y3QgcHJvY19kaXJfZW50cnk6OmRhdGEKKwl3aGljaCBpcyBhdmFpbGFibGUgZnJvbSBzdHJ1Y3QgaW5vZGUuCisKK05vdGU6IENhbGxiYWNrIGZ1bmN0aW9ucyBleGNlcHQgc2VuZF9tZXNzYWdlKCkgYXJlIG5ldmVyIGNhbGxlZCBpbiBpbnRlcnJ1cHQKK2NvbnRleHQuCisKKy0gdG8gYmUgZmlsbGVkIGluIGJlZm9yZSBjYWxsaW5nIGNhcGlfY3RyX3JlYWR5KCk6CisKK3U4IG1hbnVbQ0FQSV9NQU5VRkFDVFVSRVJfTEVOXQorCXZhbHVlIHRvIHJldHVybiBmb3IgQ0FQSV9HRVRfTUFOVUZBQ1RVUkVSCisKK2NhcGlfdmVyc2lvbiB2ZXJzaW9uCisJdmFsdWUgdG8gcmV0dXJuIGZvciBDQVBJX0dFVF9WRVJTSU9OCisKK2NhcGlfcHJvZmlsZSBwcm9maWxlCisJdmFsdWUgdG8gcmV0dXJuIGZvciBDQVBJX0dFVF9QUk9GSUxFCisKK3U4IHNlcmlhbFtDQVBJX1NFUklBTF9MRU5dCisJdmFsdWUgdG8gcmV0dXJuIGZvciBDQVBJX0dFVF9TRVJJQUwKKworCis0LjMgU0tCcworCitDQVBJIG1lc3NhZ2VzIGFyZSBwYXNzZWQgYmV0d2VlbiBLZXJuZWwgQ0FQSSBhbmQgdGhlIGRyaXZlciB2aWEgc2VuZF9tZXNzYWdlKCkKK2FuZCBjYXBpX2N0cl9oYW5kbGVfbWVzc2FnZSgpLCBzdG9yZWQgaW4gdGhlIGRhdGEgcG9ydGlvbiBvZiBhIHNvY2tldCBidWZmZXIKKyhza2IpLiAgRWFjaCBza2IgY29udGFpbnMgYSBzaW5nbGUgQ0FQSSBtZXNzYWdlIGNvZGVkIGFjY29yZGluZyB0byB0aGUgQ0FQSSAyLjAKK3N0YW5kYXJkLgorCitGb3IgdGhlIGRhdGEgdHJhbnNmZXIgbWVzc2FnZXMsIERBVEFfQjNfUkVRIGFuZCBEQVRBX0IzX0lORCwgdGhlIGFjdHVhbAorcGF5bG9hZCBkYXRhIGltbWVkaWF0ZWx5IGZvbGxvd3MgdGhlIENBUEkgbWVzc2FnZSBpdHNlbGYgd2l0aGluIHRoZSBzYW1lIHNrYi4KK1RoZSBEYXRhIGFuZCBEYXRhNjQgcGFyYW1ldGVycyBhcmUgbm90IHVzZWQgZm9yIHByb2Nlc3NpbmcuIFRoZSBEYXRhNjQKK3BhcmFtZXRlciBtYXkgYmUgb21pdHRlZCBieSBzZXR0aW5nIHRoZSBsZW5ndGggZmllbGQgb2YgdGhlIENBUEkgbWVzc2FnZSB0byAyMgoraW5zdGVhZCBvZiAzMC4KKworCis0LjQgVGhlIF9jbXNnIFN0cnVjdHVyZQorCisoZGVjbGFyZWQgaW4gPGxpbnV4L2lzZG4vY2FwaXV0aWwuaD4pCisKK1RoZSBfY21zZyBzdHJ1Y3R1cmUgc3RvcmVzIHRoZSBjb250ZW50cyBvZiBhIENBUEkgMi4wIG1lc3NhZ2UgaW4gYW4gZWFzaWx5CithY2Nlc3NpYmxlIGZvcm0uIEl0IGNvbnRhaW5zIG1lbWJlcnMgZm9yIGFsbCBwb3NzaWJsZSBDQVBJIDIuMCBwYXJhbWV0ZXJzLAoraW5jbHVkaW5nIHN1YnBhcmFtZXRlcnMgb2YgdGhlIEFkZGl0aW9uYWwgSW5mbyBhbmQgQiBQcm90b2NvbCBzdHJ1Y3R1cmVkCitwYXJhbWV0ZXJzLCB3aXRoIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uczoKKworKiBzZWNvbmQgQ2FsbGluZyBwYXJ0eSBudW1iZXIgKENPTk5FQ1RfSU5EKQorCisqIERhdGE2NCAoREFUQV9CM19SRVEgYW5kIERBVEFfQjNfSU5EKQorCisqIFNlbmRpbmcgY29tcGxldGUgKHN1YnBhcmFtZXRlciBvZiBBZGRpdGlvbmFsIEluZm8sIENPTk5FQ1RfUkVRIGFuZCBJTkZPX1JFUSkKKworKiBHbG9iYWwgQ29uZmlndXJhdGlvbiAoc3VicGFyYW1ldGVyIG9mIEIgUHJvdG9jb2wsIENPTk5FQ1RfUkVRLCBDT05ORUNUX1JFU1AKKyAgYW5kIFNFTEVDVF9CX1BST1RPQ09MX1JFUSkKKworT25seSB0aG9zZSBwYXJhbWV0ZXJzIGFwcGVhcmluZyBpbiB0aGUgbWVzc2FnZSB0eXBlIGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQKK2FyZSBhY3R1YWxseSB1c2VkLiBVbnVzZWQgbWVtYmVycyBzaG91bGQgYmUgc2V0IHRvIHplcm8uCisKK01lbWJlcnMgYXJlIG5hbWVkIGFmdGVyIHRoZSBDQVBJIDIuMCBzdGFuZGFyZCBuYW1lcyBvZiB0aGUgcGFyYW1ldGVycyB0aGV5CityZXByZXNlbnQuIFNlZSA8bGludXgvaXNkbi9jYXBpdXRpbC5oPiBmb3IgdGhlIGV4YWN0IHNwZWxsaW5nLiBNZW1iZXIgZGF0YQordHlwZXMgYXJlOgorCit1OCAgICAgICAgICBmb3IgQ0FQSSBwYXJhbWV0ZXJzIG9mIHR5cGUgJ2J5dGUnCisKK3UxNiAgICAgICAgIGZvciBDQVBJIHBhcmFtZXRlcnMgb2YgdHlwZSAnd29yZCcKKwordTMyICAgICAgICAgZm9yIENBUEkgcGFyYW1ldGVycyBvZiB0eXBlICdkd29yZCcKKworX2NzdHJ1Y3QgICAgZm9yIENBUEkgcGFyYW1ldGVycyBvZiB0eXBlICdzdHJ1Y3QnCisJICAgIFRoZSBtZW1iZXIgaXMgYSBwb2ludGVyIHRvIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIHBhcmFtZXRlciBpbgorCSAgICBDQVBJIGVuY29kaW5nIChsZW5ndGggKyBjb250ZW50KS4gSXQgbWF5IGFsc28gYmUgTlVMTCwgd2hpY2ggd2lsbAorCSAgICBiZSB0YWtlbiB0byByZXByZXNlbnQgYW4gZW1wdHkgKHplcm8gbGVuZ3RoKSBwYXJhbWV0ZXIuCisJICAgIFN1YnBhcmFtZXRlcnMgYXJlIHN0b3JlZCBpbiBlbmNvZGVkIGZvcm0gd2l0aGluIHRoZSBjb250ZW50IHBhcnQuCisKK19jbXN0cnVjdCAgIGFsdGVybmF0aXZlIHJlcHJlc2VudGF0aW9uIGZvciBDQVBJIHBhcmFtZXRlcnMgb2YgdHlwZSAnc3RydWN0JworCSAgICAodXNlZCBvbmx5IGZvciB0aGUgJ0FkZGl0aW9uYWwgSW5mbycgYW5kICdCIFByb3RvY29sJyBwYXJhbWV0ZXJzKQorCSAgICBUaGUgcmVwcmVzZW50YXRpb24gaXMgYSBzaW5nbGUgYnl0ZSBjb250YWluaW5nIG9uZSBvZiB0aGUgdmFsdWVzOgorCSAgICBDQVBJX0RFRkFVTFQ6IFRoZSBwYXJhbWV0ZXIgaXMgZW1wdHkvYWJzZW50LgorCSAgICBDQVBJX0NPTVBPU0U6IFRoZSBwYXJhbWV0ZXIgaXMgcHJlc2VudC4KKwkgICAgU3VicGFyYW1ldGVyIHZhbHVlcyBhcmUgc3RvcmVkIGluZGl2aWR1YWxseSBpbiB0aGUgY29ycmVzcG9uZGluZworCSAgICBfY21zZyBzdHJ1Y3R1cmUgbWVtYmVycy4KKworRnVuY3Rpb25zIGNhcGlfY21zZzJtZXNzYWdlKCkgYW5kIGNhcGlfbWVzc2FnZTJjbXNnKCkgYXJlIHByb3ZpZGVkIHRvIGNvbnZlcnQKK21lc3NhZ2VzIGJldHdlZW4gdGhlaXIgdHJhbnNwb3J0IGVuY29kaW5nIGRlc2NyaWJlZCBpbiB0aGUgQ0FQSSAyLjAgc3RhbmRhcmQKK2FuZCB0aGVpciBfY21zZyBzdHJ1Y3R1cmUgcmVwcmVzZW50YXRpb24uIE5vdGUgdGhhdCBjYXBpX2Ntc2cybWVzc2FnZSgpIGRvZXMKK25vdCBrbm93IG9yIGNoZWNrIHRoZSBzaXplIG9mIGl0cyBkZXN0aW5hdGlvbiBidWZmZXIuIFRoZSBjYWxsZXIgbXVzdCBtYWtlCitzdXJlIGl0IGlzIGJpZyBlbm91Z2ggdG8gYWNjb21tb2RhdGUgdGhlIHJlc3VsdGluZyBDQVBJIG1lc3NhZ2UuCisKKworNS4gTG93ZXIgTGF5ZXIgSW50ZXJmYWNlIEZ1bmN0aW9ucworCisoZGVjbGFyZWQgaW4gPGxpbnV4L2lzZG4vY2FwaWxsaS5oPikKKwordm9pZCByZWdpc3Rlcl9jYXBpX2RyaXZlcihzdHJ1Y3QgY2FwaV9kcml2ZXIgKmRydnIpCit2b2lkIHVucmVnaXN0ZXJfY2FwaV9kcml2ZXIoc3RydWN0IGNhcGlfZHJpdmVyICpkcnZyKQorCXJlZ2lzdGVyL3VucmVnaXN0ZXIgYSBkcml2ZXIgd2l0aCBLZXJuZWwgQ0FQSQorCitpbnQgYXR0YWNoX2NhcGlfY3RyKHN0cnVjdCBjYXBpX2N0ciAqY3RybHIpCitpbnQgZGV0YWNoX2NhcGlfY3RyKHN0cnVjdCBjYXBpX2N0ciAqY3RybHIpCisJcmVnaXN0ZXIvdW5yZWdpc3RlciBhIGRldmljZSAoY29udHJvbGxlcikgd2l0aCBLZXJuZWwgQ0FQSQorCit2b2lkIGNhcGlfY3RyX3JlYWR5KHN0cnVjdCBjYXBpX2N0ciAqY3RybHIpCit2b2lkIGNhcGlfY3RyX2Rvd24oc3RydWN0IGNhcGlfY3RyICpjdHJscikKKwlzaWduYWwgY29udHJvbGxlciByZWFkeS9ub3QgcmVhZHkKKwordm9pZCBjYXBpX2N0cl9zdXNwZW5kX291dHB1dChzdHJ1Y3QgY2FwaV9jdHIgKmN0cmxyKQordm9pZCBjYXBpX2N0cl9yZXN1bWVfb3V0cHV0KHN0cnVjdCBjYXBpX2N0ciAqY3RybHIpCisJc2lnbmFsIHN1c3BlbmQvcmVzdW1lCisKK3ZvaWQgY2FwaV9jdHJfaGFuZGxlX21lc3NhZ2Uoc3RydWN0IGNhcGlfY3RyICogY3RybHIsIHUxNiBhcHBsaWQsCisJCQkJc3RydWN0IHNrX2J1ZmYgKnNrYikKKwlwYXNzIGEgcmVjZWl2ZWQgQ0FQSSBtZXNzYWdlIHRvIEtlcm5lbCBDQVBJCisJZm9yIGZvcndhcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBhcHBsaWNhdGlvbgorCisKKzYuIEhlbHBlciBGdW5jdGlvbnMgYW5kIE1hY3JvcworCitMaWJyYXJ5IGZ1bmN0aW9ucyAoZnJvbSA8bGludXgvaXNkbi9jYXBpbGxpLmg+KToKKwordm9pZCBjYXBpbGliX25ld19uY2NpKHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsIHUxNiBhcHBsaWQsCisJCQl1MzIgbmNjaSwgdTMyIHdpbnNpemUpCit2b2lkIGNhcGlsaWJfZnJlZV9uY2NpKHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsIHUxNiBhcHBsaWQsIHUzMiBuY2NpKQordm9pZCBjYXBpbGliX3JlbGVhc2VfYXBwbChzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLCB1MTYgYXBwbGlkKQordm9pZCBjYXBpbGliX3JlbGVhc2Uoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKK3ZvaWQgY2FwaWxpYl9kYXRhX2IzX2NvbmYoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCwgdTE2IGFwcGxpZCwKKwkJCXUzMiBuY2NpLCB1MTYgbXNnaWQpCit1MTYgIGNhcGlsaWJfZGF0YV9iM19yZXEoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCwgdTE2IGFwcGxpZCwKKwkJCXUzMiBuY2NpLCB1MTYgbXNnaWQpCisKKworTWFjcm9zIHRvIGV4dHJhY3Qvc2V0IGVsZW1lbnQgdmFsdWVzIGZyb20vaW4gYSBDQVBJIG1lc3NhZ2UgaGVhZGVyCisoZnJvbSA8bGludXgvaXNkbi9jYXBpdXRpbC5oPik6CisKK0dldCBNYWNybwkJU2V0IE1hY3JvCQkJRWxlbWVudCAoVHlwZSkKKworQ0FQSU1TR19MRU4obSkJCUNBUElNU0dfU0VUTEVOKG0sIGxlbikJCVRvdGFsIExlbmd0aCAodTE2KQorQ0FQSU1TR19BUFBJRChtKQlDQVBJTVNHX1NFVEFQUElEKG0sIGFwcGxpZCkJQXBwbElEICh1MTYpCitDQVBJTVNHX0NPTU1BTkQobSkJQ0FQSU1TR19TRVRDT01NQU5EKG0sY21kKQlDb21tYW5kICh1OCkKK0NBUElNU0dfU1VCQ09NTUFORChtKQlDQVBJTVNHX1NFVFNVQkNPTU1BTkQobSwgY21kKQlTdWJjb21tYW5kICh1OCkKK0NBUElNU0dfQ01EKG0pCQktCQkJCUNvbW1hbmQqMjU2CisJCQkJCQkJKyBTdWJjb21tYW5kICh1MTYpCitDQVBJTVNHX01TR0lEKG0pCUNBUElNU0dfU0VUTVNHSUQobSwgbXNnaWQpCU1lc3NhZ2UgTnVtYmVyICh1MTYpCisKK0NBUElNU0dfQ09OVFJPTChtKQlDQVBJTVNHX1NFVENPTlRST0wobSwgY29udHIpCUNvbnRyb2xsZXIvUExDSS9OQ0NJCisJCQkJCQkJKHUzMikKK0NBUElNU0dfREFUQUxFTihtKQlDQVBJTVNHX1NFVERBVEFMRU4obSwgbGVuKQlEYXRhIExlbmd0aCAodTE2KQorCisKK0xpYnJhcnkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggX2Ntc2cgc3RydWN0dXJlcworKGZyb20gPGxpbnV4L2lzZG4vY2FwaXV0aWwuaD4pOgorCit1bnNpZ25lZCBjYXBpX2Ntc2cybWVzc2FnZShfY21zZyAqY21zZywgdTggKm1zZykKKwlBc3NlbWJsZXMgYSBDQVBJIDIuMCBtZXNzYWdlIGZyb20gdGhlIHBhcmFtZXRlcnMgaW4gKmNtc2csIHN0b3JpbmcgdGhlCisJcmVzdWx0IGluICptc2cuCisKK3Vuc2lnbmVkIGNhcGlfbWVzc2FnZTJjbXNnKF9jbXNnICpjbXNnLCB1OCAqbXNnKQorCURpc2Fzc2VtYmxlcyB0aGUgQ0FQSSAyLjAgbWVzc2FnZSBpbiAqbXNnLCBzdG9yaW5nIHRoZSBwYXJhbWV0ZXJzIGluCisJKmNtc2cuCisKK3Vuc2lnbmVkIGNhcGlfY21zZ19oZWFkZXIoX2Ntc2cgKmNtc2csIHUxNiBBcHBsSWQsIHU4IENvbW1hbmQsIHU4IFN1YmNvbW1hbmQsCisJCQkgIHUxNiBNZXNzYWdlbnVtYmVyLCB1MzIgQ29udHJvbGxlcikKKwlGaWxscyB0aGUgaGVhZGVyIHBhcnQgYW5kIGFkZHJlc3MgZmllbGQgb2YgdGhlIF9jbXNnIHN0cnVjdHVyZSAqY21zZworCXdpdGggdGhlIGdpdmVuIHZhbHVlcywgemVyb2luZyB0aGUgcmVtYWluZGVyIG9mIHRoZSBzdHJ1Y3R1cmUgc28gb25seQorCXBhcmFtZXRlcnMgd2l0aCBub24tZGVmYXVsdCB2YWx1ZXMgbmVlZCB0byBiZSBjaGFuZ2VkIGJlZm9yZSBzZW5kaW5nCisJdGhlIG1lc3NhZ2UuCisKK3ZvaWQgY2FwaV9jbXNnX2Fuc3dlcihfY21zZyAqY21zZykKKwlTZXRzIHRoZSBsb3cgYml0IG9mIHRoZSBTdWJjb21tYW5kIGZpZWxkIGluICpjbXNnLCB0aGVyZWJ5IGNvbnZlcnRpbmcKKwlfUkVRIHRvIF9DT05GIGFuZCBfSU5EIHRvIF9SRVNQLgorCitjaGFyICpjYXBpX2NtZDJzdHIodTggQ29tbWFuZCwgdTggU3ViY29tbWFuZCkKKwlSZXR1cm5zIHRoZSBDQVBJIDIuMCBtZXNzYWdlIG5hbWUgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gY29tbWFuZAorCWFuZCBzdWJjb21tYW5kIHZhbHVlcywgYXMgYSBzdGF0aWMgQVNDSUkgc3RyaW5nLiBUaGUgcmV0dXJuIHZhbHVlIG1heQorCWJlIE5VTEwgaWYgdGhlIGNvbW1hbmQvc3ViY29tbWFuZCBpcyBub3Qgb25lIG9mIHRob3NlIGRlZmluZWQgaW4gdGhlCisJQ0FQSSAyLjAgc3RhbmRhcmQuCisKKworNy4gRGVidWdnaW5nCisKK1RoZSBtb2R1bGUga2VybmVsY2FwaSBoYXMgYSBtb2R1bGUgcGFyYW1ldGVyIHNob3djYXBpbXNncyBjb250cm9sbGluZyBzb21lCitkZWJ1Z2dpbmcgb3V0cHV0IHByb2R1Y2VkIGJ5IHRoZSBtb2R1bGUuIEl0IGNhbiBvbmx5IGJlIHNldCB3aGVuIHRoZSBtb2R1bGUgaXMKK2xvYWRlZCwgdmlhIGEgcGFyYW1ldGVyICJzaG93Y2FwaW1zZ3M9PG4+IiB0byB0aGUgbW9kcHJvYmUgY29tbWFuZCwgZWl0aGVyIG9uCit0aGUgY29tbWFuZCBsaW5lIG9yIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuCisKK0lmIHRoZSBsb3dlc3QgYml0IG9mIHNob3djYXBpbXNncyBpcyBzZXQsIGtlcm5lbGNhcGkgbG9ncyBjb250cm9sbGVyIGFuZAorYXBwbGljYXRpb24gdXAgYW5kIGRvd24gZXZlbnRzLgorCitJbiBhZGRpdGlvbiwgZXZlcnkgcmVnaXN0ZXJlZCBDQVBJIGNvbnRyb2xsZXIgaGFzIGFuIGFzc29jaWF0ZWQgdHJhY2VmbGFnCitwYXJhbWV0ZXIgY29udHJvbGxpbmcgaG93IENBUEkgbWVzc2FnZXMgc2VudCBmcm9tIGFuZCB0byB0aGEgY29udHJvbGxlciBhcmUKK2xvZ2dlZC4gVGhlIHRyYWNlZmxhZyBwYXJhbWV0ZXIgaXMgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgdmFsdWUgb2YgdGhlCitzaG93Y2FwaW1zZ3MgcGFyYW1ldGVyIHdoZW4gdGhlIGNvbnRyb2xsZXIgaXMgcmVnaXN0ZXJlZCwgYnV0IGNhbiBsYXRlciBiZQorY2hhbmdlZCB2aWEgdGhlIE1BTlVGQUNUVVJFUl9SRVEgY29tbWFuZCBLQ0FQSV9DTURfVFJBQ0UuCisKK0lmIHRoZSB2YWx1ZSBvZiB0cmFjZWZsYWcgaXMgbm9uLXplcm8sIENBUEkgbWVzc2FnZXMgYXJlIGxvZ2dlZC4KK0RBVEFfQjMgbWVzc2FnZXMgYXJlIG9ubHkgbG9nZ2VkIGlmIHRoZSB2YWx1ZSBvZiB0cmFjZWZsYWcgaXMgPiAyLgorCitJZiB0aGUgbG93ZXN0IGJpdCBvZiB0cmFjZWZsYWcgaXMgc2V0LCBvbmx5IHRoZSBjb21tYW5kL3N1YmNvbW1hbmQgYW5kIG1lc3NhZ2UKK2xlbmd0aCBhcmUgbG9nZ2VkLiBPdGhlcndpc2UsIGtlcm5lbGNhcGkgbG9ncyBhIHJlYWRhYmxlIHJlcHJlc2VudGF0aW9uIG9mCit0aGUgZW50aXJlIG1lc3NhZ2UuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lzZG4vSU5URVJGQUNFLmZheCBiL0RvY3VtZW50YXRpb24vaXNkbi9JTlRFUkZBQ0UuZmF4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljOGM2ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lzZG4vSU5URVJGQUNFLmZheApAQCAtMCwwICsxLDE2MyBAQAorJElkOiBJTlRFUkZBQ0UuZmF4LHYgMS4yIDIwMDAvMDgvMDYgMDk6MjI6NTAgYXJtaW4gRXhwICQKKworCitEZXNjcmlwdGlvbiBvZiB0aGUgZmF4LXN1YmludGVyZmFjZSBiZXR3ZWVuIGxpbmtsZXZlbCBhbmQgaGFyZHdhcmVsZXZlbCBvZiAKKyAgaXNkbjRsaW51eC4gCisKKyAgVGhlIGNvbW11bmljYXRpb24gYmV0d2VlbiBsaW5rbGV2ZWwgKExMKSBhbmQgaGFyZHdhcmVsZXZlbCAoSEwpIGZvciBmYXgKKyAgaXMgYmFzZWQgb24gdGhlIHN0cnVjdCBUMzBfcyAoZGVmaW5lZCBpbiBpc2RuaWYuaCkuCisgIFRoaXMgc3RydWN0IGlzIGFsbG9jYXRlZCBpbiB0aGUgTEwuICAKKyAgSW4gb3JkZXIgdG8gdXNlIGZheCwgdGhlIExMIHByb3ZpZGVzIHRoZSBwb2ludGVyIHRvIHRoaXMgc3RydWN0IHdpdGggdGhlIAorICBjb21tYW5kIElTRE5fQ01EX1NFVEwzIChwYXJtLmZheCkuIFRoaXMgcG9pbnRlciBleHBpcmVzIGluIGNhc2Ugb2YgaGFuZ3VwIAorICBhbmQgd2hlbiBhIG5ldyBjaGFubmVsIHRvIGEgbmV3IGNvbm5lY3Rpb24gaXMgYXNzaWduZWQuIAorCisKK0RhdGEgaGFuZGxpbmc6CisgIEluIHNlbmQtbW9kZSB0aGUgSEwtZHJpdmVyIGhhcyB0byBoYW5kbGUgdGhlIDxETEU+IGNvZGVzIGFuZCB0aGUgYml0LW9yZGVyIAorICBjb252ZXJzaW9uIGJ5IGl0c2VsZi4gCisgIEluIHJlY2VpdmUtbW9kZSB0aGUgTEwtZHJpdmVyIHRha2VzIGNhcmUgb2YgdGhlIGJpdC1vcmRlciBjb252ZXJzaW9uCisgIChzcGVjaWZpZWQgYnkgK0ZCT1IpCisKK1N0cnVjdHVyZSBUMzBfcyBkZXNjcmlwdGlvbjoKKworICBUaGlzIHN0cnVjdHVyZSBzdG9yZXMgdGhlIHZhbHVlcyAoc2V0IGJ5IEFULWNvbW1hbmRzKSwgdGhlIHJlbW90ZS0KKyAgY2FwYWJpbGl0eS12YWx1ZXMgYW5kIHRoZSBjb21tYW5kLWNvZGVzIGJldHdlZW4gTEwgYW5kIEhMLgorCisgIElmIHRoZSBITC1kcml2ZXIgcmVjZWl2ZXMgSVNETl9DTURfRkFYQ01ELCBhbGwgbmVlZGVkIGluZm9ybWF0aW9uCisgIGlzIGluIHRoaXMgc3RydWN0IHNldCBieSB0aGUgTEwuCisgIFRvIHNpZ25hbCBpbmZvcm1hdGlvbiB0byB0aGUgTEwsIHRoZSBITC1kcml2ZXIgaGFzIHRvIHNldCB0aGUgCisgIHBhcmFtZXRlcnMgYW5kIHVzZSBJU0ROX1NUQVRfRkFYSU5ELgorICAoUGxlYXNlIHJlZmVyIHRvIElOVEVSRkFDRSkKKworU3RydWN0dXJlIFQzMF9zOgorCisgIEFsbCBtZW1iZXJzIGFyZSA4LWJpdCB1bnNpZ25lZCAoX191OCkKKworICAtICByZXNvbHV0aW9uICAgICAKKyAgLSAgcmF0ZQorICAtICB3aWR0aAorICAtICBsZW5ndGgKKyAgLSAgY29tcHJlc3Npb24KKyAgLSAgZWNtCisgIC0gIGJpbmFyeQorICAtICBzY2FudGltZQorICAtICBpZFtdCisgIExvY2FsIGZheG1hY2hpbmUncyBwYXJhbWV0ZXJzLCBzZXQgYnkgK0ZESVMsICtGRENTLCArRkxJRCwgLi4uCisKKyAgLSAgcl9yZXNvbHV0aW9uCisgIC0gIHJfcmF0ZQorICAtICByX3dpZHRoCisgIC0gIHJfbGVuZ3RoCisgIC0gIHJfY29tcHJlc3Npb24KKyAgLSAgcl9lY20KKyAgLSAgcl9iaW5hcnkKKyAgLSAgcl9zY2FudGltZQorICAtICByX2lkW10KKyAgUmVtb3RlIGZheG1hY2hpbmUncyBwYXJhbWV0ZXJzLiBUbyBiZSBzZXQgYnkgSEwtZHJpdmVyLgorCisgIC0gIHBoYXNlICAgICAgCisgIERlZmluZXMgdGhlIGFjdHVhbCBzdGF0ZSBvZiBmYXggY29ubmVjdGlvbi4gU2V0IGJ5IEhMIG9yIExMCisgIGRlcGVuZGluZyBvbiBwcm9ncmVzcyBhbmQgdHlwZSBvZiBjb25uZWN0aW9uLgorICBJZiB0aGUgcGhhc2UgY2hhbmdlcyBiZWNhdXNlIG9mIGFuIEFUIGNvbW1hbmQsIHRoZSBMTCBkcml2ZXIKKyAgY2hhbmdlcyB0aGlzIHZhbHVlLiBPdGhlcndpc2UgdGhlIEhMLWRyaXZlciB0YWtlcyBjYXJlIG9mIGl0LCBidXQKKyAgb25seSBuZWNlc3Nhcnkgb24gY2FsbCBlc3RhYmxpc2htZW50IChmcm9tIElETEUgdG8gUEhBU0VfQSkuCisgIChvbmUgb2YgdGhlIGNvbnN0YW50cyBJU0ROX0ZBWF9QSEFTRV9bSURMRSxBLEIsQyxELEVdKQorCisgIC0gIGRpcmVjdGlvbgorICBEZWZpbmVzIG91dGdvaW5nL3NlbmQgb3IgaW5jb21pbmcvcmVjZWl2ZSBjb25uZWN0aW9uLgorICAoSVNETl9UVFlfRkFYX0NPTk5fW0lOLE9VVF0pCisKKyAgLSAgY29kZQorICBDb21tYW5kcyBmcm9tIExMIHRvIEhMOyBwb3NzaWJsZSBjb25zdGFudHMgOiAKKyAgICAgIElTRE5fVFRZX0ZBWF9EUiAgICAgICAgc2lnbmFscyArRkRSIGNvbW1hbmQgdG8gSEwKKworICAgICAgSVNETl9UVFlfRkFYX0RUICAgICAgICBzaWduYWxzICtGRFQgY29tbWFuZCB0byBITCAKKworICAgICAgSVNETl9UVFlfRkFYX0VUICAgICAgICBzaWduYWxzICtGRVQgY29tbWFuZCB0byBITAorCisKKyAgT3RoZXIgdGhhbiB0aGF0IHRoZSAiY29kZSIgaXMgc2V0IHdpdGggdGhlIGhhbmd1cC1jb2RlIHZhbHVlIGF0CisgIHRoZSBlbmQgb2YgY29ubmVjdGlvbiBmb3IgdGhlICtGSE5HIG1lc3NhZ2UuCisgICAgICAgIAorICAtICByX2NvZGUgCisgIENvbW1hbmRzIGZyb20gSEwgdG8gTEw7IHBvc3NpYmxlIGNvbnN0YW50cyA6CisgICAgICBJU0ROX1RUWV9GQVhfQ0ZSICAgICAgIG91dHB1dCBvZiArRkNGUiBtZXNzYWdlLiAKKworICAgICAgSVNETl9UVFlfRkFYX1JJRCAgICAgICBvdXRwdXQgb2YgcmVtb3RlIElEIHNldCBpbiByX2lkW10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCtGQ1NJLytGVFNJIG9uIHNlbmQvcmVjZWl2ZSkKKworICAgICAgSVNETl9UVFlfRkFYX0RDUyAgICAgICBvdXRwdXQgb2YgK0ZEQ1MgYW5kIENPTk5FQ1QgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoaW5nIHRvIHBoYXNlIEMuCisKKyAgICAgIElTRE5fVFRZX0ZBWF9FVCAgICAgICAgc2lnbmFscyBlbmQgb2YgZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoaW5nIHRvIHBoYXNlIEQuCisKKyAgICAgIElTRE5fVFRZX0ZBWF9GQ09OICAgICAgc2lnbmFscyB0aGUgZXN0YWJsaXNoZWQsIG91dGdvaW5nIGNvbm5lY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaGluZyB0byBwaGFzZSBCLgorCisgICAgICBJU0ROX1RUWV9GQVhfRkNPTl9JICAgIHNpZ25hbHMgdGhlIGVzdGFibGlzaGVkLCBpbmNvbWluZyBjb25uZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hpbmcgdG8gcGhhc2UgQi4KKworICAgICAgSVNETl9UVFlfRkFYX0RJUyAgICAgICBvdXRwdXQgb2YgK0ZESVMgbWVzc2FnZSBhbmQgdmFsdWVzLgorCisgICAgICBJU0ROX1RUWV9GQVhfU0VOVCAgICAgIHNpZ25hbHMgdGhhdCBhbGwgZGF0YSBoYXMgYmVlbiBzZW50IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgPERMRT48RVRYPiBpcyBhY2tub3dsZWRnZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9LIG1lc3NhZ2Ugd2lsbCBiZSBzZW50LgorCisgICAgICBJU0ROX1RUWV9GQVhfUFRTICAgICAgIHNpZ25hbHMgYSBtc2ctY29uZmlybWF0aW9uIChwYWdlIHNlbnQgc3VjY2Vzc2Z1bCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGluZyBvbiBmZXQgdmFsdWU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA6IG91dHB1dCBPSyBtZXNzYWdlIChtb3JlIHBhZ2VzIGZvbGxvdykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTogc3dpdGNoaW5nIHRvIHBoYXNlIEIgKG5leHQgZG9jdW1lbnQpCisKKyAgICAgIElTRE5fVFRZX0ZBWF9UUkFJTl9PSyAgb3V0cHV0IG9mICtGRENTIGFuZCBPSyBtZXNzYWdlIChmb3IgcmVjZWl2ZSBtb2RlKS4KKworICAgICAgSVNETl9UVFlfRkFYX0VPUCAgICAgICBzaWduYWxzIGVuZCBvZiBkYXRhIGluIHJlY2VpdmUgbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoaW5nIHRvIHBoYXNlIEQuCisKKyAgICAgIElTRE5fVFRZX0ZBWF9ITkcgICAgICAgb3V0cHV0IG9mIHRoZSArRkhORyBhbmQgdmFsdWUgc2V0IGJ5IGNvZGUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9LIG1lc3NhZ2UsIHN3aXRjaGluZyB0byBwaGFzZSBFLgorCisKKyAgLSAgYmFkbGluCisgIFZhbHVlIG9mICtGQkFETElOICAKKworICAtICBiYWRtdWwKKyAgVmFsdWUgb2YgK0ZCQURNVUwKKworICAtICBib3IKKyAgVmFsdWUgb2YgK0ZCT1IKKworICAtICBmZXQKKyAgVmFsdWUgb2YgK0ZFVCBjb21tYW5kIGluIHNlbmQtbW9kZS4KKyAgU2V0IGJ5IEhMIGluIHJlY2VpdmUtbW9kZSBmb3IgK0ZFVCBtZXNzYWdlLgorCisgIC0gIHBvbGxpZFtdICAKKyAgSUQtc3RyaW5nLCBzZXQgYnkgK0ZDSUcKKworICAtICBjcQorICBWYWx1ZSBvZiArRkNRCisKKyAgLSAgY3IKKyAgVmFsdWUgb2YgK0ZDUgorCisgIC0gIGN0Y3J0eQorICBWYWx1ZSBvZiArRkNUQ1JUWQorCisgIC0gIG1pbnNwCisgIFZhbHVlIG9mICtGTUlOU1AKKworICAtICBwaGN0bworICBWYWx1ZSBvZiArRlBIQ1RPCisKKyAgLSAgcmVsCisgIFZhbHVlIG9mICtGUkVMCisKKyAgLSAgbmJjCisgIFZhbHVlIG9mICtGTkJDICgwLDEpCisgICgrRk5CQyBpcyBub3QgYSBrbm93biBjbGFzcyAyIGZheCBjb21tYW5kLCBJIGFkZGVkIHRoaXMgdG8gY2hhbmdlIHRoZQorICAgYXV0b21hdGljICJiZXN0IGNhcGFiaWxpdGllcyIgY29ubmVjdGlvbiBpbiB0aGUgZWljb24gSEwtZHJpdmVyKQorCisgIAorQXJtaW4KK21hY0BtZWx3YXJlLmRlCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaXNkbi9SRUFETUUgYi9Eb2N1bWVudGF0aW9uL2lzZG4vUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmYjE4ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lzZG4vUkVBRE1FCkBAIC0wLDAgKzEsNTk5IEBACitSRUFETUUgZm9yIHRoZSBJU0ROLXN1YnN5c3RlbQorCisxLiBQcmVmYWNlCisKKyAgMS4xIEludHJvZHVjdGlvbgorCisgIFRoaXMgUkVBRE1FIGRlc2NyaWJlcyBob3cgdG8gc2V0IHVwIGFuZCBob3cgdG8gdXNlIHRoZSBkaWZmZXJlbnQgcGFydHMKKyAgb2YgdGhlIElTRE4tc3Vic3lzdGVtLgorCisgIEZvciB1c2luZyB0aGUgSVNETi1zdWJzeXN0ZW0sIHNvbWUgYWRkaXRpb25hbCB1c2VybGV2ZWwgcHJvZ3JhbXMgYXJlCisgIG5lY2Vzc2FyeS4gVGhvc2UgcHJvZ3JhbXMgYW5kIHNvbWUgY29udHJpYnV0ZWQgdXRpbGl0aWVzIGFyZSBhdmFpbGFibGUKKyAgYXQKKworICAgZnRwLmlzZG40bGludXguZGUKKworICAgL3B1Yi9pc2RuNGxpbnV4L2lzZG40ay11dGlscy08VmVyc2lvbk51bWJlcj4udGFyLmd6CisKKworICBXZSBhbHNvIGhhdmUgc2V0IHVwIGEgbWFpbGluZy1saXN0OgorCisgICBUaGUgaXNkbjRsaW51eC1wcm9qZWN0IG9yaWdpbmF0ZXMgaW4gR2VybWFueSwgYW5kIHRoZXJlZm9yZSBieSBoaXN0b3JpY2FsCisgICByZWFzb25zLCB0aGUgbWFpbGluZy1saXN0J3MgcHJpbWFyeSBsYW5ndWFnZSBpcyBnZXJtYW4uIEhvd2V2ZXIgbWFpbHMKKyAgIHdyaXR0ZW4gaW4gZW5nbGlzaCBoYXZlIGJlZW4gd2VsY29tZSBhbGwgdGhlIHRpbWUuCisKKyAgIHRvIHN1YnNjcmliZTogd3JpdGUgYSBlbWFpbCB0byBtYWpvcmRvbW9AbGlzdHNlcnYuaXNkbjRsaW51eC5kZSwKKyAgIFN1YmplY3QgaXJyZWxldmFudCwgaW4gdGhlIG1lc3NhZ2UgYm9keToKKyAgIHN1YnNjcmliZSBpc2RuNGxpbnV4IDx5b3VyX2VtYWlsX2FkZHJlc3M+CisKKyAgIFRvIHdyaXRlIHRvIHRoZSBtYWlsaW5nLWxpc3QsIHdyaXRlIHRvIGlzZG40bGludXhAbGlzdHNlcnYuaXNkbjRsaW51eC5kZQorCisgICBUaGlzIG1haWxpbmdsaXN0IGlzIGJpZGlyZWN0aW9uYWxseSBnYXRlZCB0byB0aGUgbmV3c2dyb3VwCisKKyAgICAgZGUuYWx0LmNvbW0uaXNkbjRsaW51eAorCisgIFRoZXJlIGlzIGFsc28gYSB3ZWxsIG1haW50YWluZWQgRkFRIGluIEVuZ2xpc2ggYXZhaWxhYmxlIGF0CisgICAgIGh0dHA6Ly93d3cubWhlc3NsZXIuZGUvaTRsZmFxLworICBJdCBjYW4gYmUgdmlld2VkIG9ubGluZSwgb3IgZG93bmxvYWRlZCBpbiBzZ21sL3RleHQvaHRtbCBmb3JtYXQuCisgIFRoZSBGQVEgY2FuIGFsc28gYmUgdmlld2VkIG9ubGluZSBhdAorICAgICBodHRwOi8vd3d3LmlzZG40bGludXguZGUvZmFxLworICBvciBkb3dubG9hZGVkIGZyb20KKyAgICAgZnRwOi8vZnRwLmlzZG40bGludXguZGUvcHViL2lzZG40bGludXgvRkFRLworCisgIDEuMSBUZWNobmljYWwgZGV0YWlscworCisgIEluIHRoZSBmb2xsb3dpbmcgVGV4dCwgdGhlIHRlcm1zIE1TTiBhbmQgRUFaIGFyZSB1c2VkLgorCisgIE1TTiBpcyB0aGUgYWJicmV2aWF0aW9uIGZvciAoTSl1bHRpcGxlKFMpdWJzY3JpYmVyKE4pdW1iZXIsIGFuZCBhcHBsaWVzCisgIHRvIEV1cm8oRURTUzEpLXR5cGUgbGluZXMuIFVzdWFsbHkgaXQgaXMgc2ltcGx5IHRoZSBwaG9uZSBudW1iZXIuCisKKyAgRUFaIGlzIHRoZSBhYmJyZXZpYXRpb24gb2YgKEUpbmRnZXJhZXRlKEEpdXN3YWhsKFopaWZmZXIgYW5kCisgIGFwcGxpZXMgdG8gR2VybWFuIDFUUjYtdHlwZSBsaW5lcy4gVGhpcyBpcyBhIG9uZS1kaWdpdCBzdHJpbmcsCisgIHNpbXBseSBhcHBlbmRlZCB0byB0aGUgYmFzZSBwaG9uZSBudW1iZXIKKworICBUaGUgaW50ZXJuYWwgaGFuZGxpbmcgaXMgbmVhcmx5IGlkZW50aWNhbCwgc28gcmVwbGFjZSB0aGUgYXBwcm9wcmlhdGUKKyAgdGVybSB0byB0aGF0IG9uZSwgd2hpY2ggYXBwbGllcyB0byB5b3VyIGxvY2FsIElTRE4tZW52aXJvbm1lbnQuCisKKyAgV2hlbiB0aGUgbGluay1sZXZlbC1tb2R1bGUgaXNkbi5vIGlzIGxvYWRlZCwgaXQgc3VwcG9ydHMgdXAgdG8gMTYKKyAgbG93LWxldmVsLW1vZHVsZXMgd2l0aCB1cCB0byA2NCBjaGFubmVscy4gKFRoZSBudW1iZXIgNjQgaXMgYXJiaXRyYXJpbHkKKyAgY2hvc2VuIGFuZCBjYW4gYmUgY29uZmlndXJlZCBhdCBjb21waWxlLXRpbWUgLS1JU0ROX01BWCBpbiBpc2RuLmgpLgorICBBIGxvdy1sZXZlbC1kcml2ZXIgY2FuIHJlZ2lzdGVyIGl0c2VsZiB0aHJvdWdoIGFuIGludGVyZmFjZSAod2hpY2ggaXMKKyAgZGVmaW5lZCBpbiBpc2RuaWYuaCkgYW5kIGdldHMgYXNzaWduZWQgYSBzbG90LgorICBUaGUgZm9sbG93aW5nIGNoYXItZGV2aWNlcyBhcmUgbWFkZSBhdmFpbGFibGUgZm9yIGVhY2ggY2hhbm5lbDoKKworICBBIHJhdy1jb250cm9sLWRldmljZSB3aXRoIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgorICAgICB3cml0ZTogcmF3IEQtY2hhbm5lbC1tZXNzYWdlcyAoZm9ybWF0OiBkZXBlbmRzIG9uIGRyaXZlcikuCisgICAgIHJlYWQ6ICByYXcgRC1jaGFubmVsLW1lc3NhZ2VzIChmb3JtYXQ6IGRlcGVuZHMgb24gZHJpdmVyKS4KKyAgICAgaW9jdGw6IGRlcGVuZHMgb24gZHJpdmVyLCBpLmUuIGZvciB0aGUgSUNOLWRyaXZlciwgdGhlIGJhc2UtYWRkcmVzcyBvZgorICAgICAgICAgICAgdGhlIHBvcnRzIGFuZCB0aGUgc2hhcmVkIG1lbW9yeSBvbiB0aGUgY2FyZCBjYW4gYmUgc2V0IGFuZCByZWFkCisgICAgICAgICAgICBhbHNvIHRoZSBib290LWNvZGUgYW5kIHRoZSBwcm90b2NvbCBzb2Z0d2FyZSBjYW4gYmUgbG9hZGVkIGludG8KKyAgICAgICAgICAgIHRoZSBjYXJkLgorCisgICBPIE4gTCBZICEhISAgZm9yIGRlYnVnZ2luZyAobm8gbG9ja2luZyBhZ2FpbnN0IG90aGVyIGRldmljZXMpOgorICAgT25lIHJhdy1kYXRhLWRldmljZSB3aXRoIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgorICAgICB3cml0ZTogZGF0YSB0byBCLWNoYW5uZWwuCisgICAgIHJlYWQ6ICBkYXRhIGZyb20gQi1jaGFubmVsLgorCisgICBJbiBhZGRpdGlvbiB0aGUgZm9sbG93aW5nIGRldmljZXMgYXJlIG1hZGUgYXZhaWxhYmxlOgorCisgICAxMjggdHR5LWRldmljZXMgKDY0IGN1aXggYW5kIDY0IHR0eUl4KSB3aXRoIGludGVncmF0ZWQgbW9kZW0tZW11bGF0b3I6CisgICBUaGUgZnVuY3Rpb25hbGl0eSBpcyBhbG1vc3QgdGhlIHNhbWUgYXMgdGhhdCBvZiBhIHNlcmlhbCBkZXZpY2UKKyAgICh0aGUgbGluZS1kaXNjcyBhcmUgaGFuZGxlZCBieSB0aGUga2VybmVsKSwgd2hpY2ggbGV0cyB5b3UgcnVuCisgICBTTElQLCBDU0xJUCBhbmQgYXN5bmNocm9ub3VzIFBQUCB0aHJvdWdoIHRoZSBkZXZpY2VzLiBXZSBoYXZlIHRlc3RlZAorICAgU2V5b24sIG1pbmljb20sIENTTElQICh1cmktZGlwKSBQUFAsIG1nZXR0eSwgWENlcHQgYW5kIEh5bGFmYXguIAorCisgICBUaGUgbW9kZW0tZW11bGF0aW9uIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgIDEuMy4xIENvbW1hbmRzOgorCisgICAgICAgICAgICAgICBBVEEgICAgICBBbnN3ZXIgaW5jb21pbmcgY2FsbC4KKyAgICAgICAgICAgICAgIEFURDxOby4+IERpYWwsIHRoZSBudW1iZXIgbWF5IGNvbnRhaW46CisgICAgICAgICAgICAgICAgICAgICAgICBbMC05XSBhbmQgWywjLipXUFQtU10KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBsYXR0ZXIgYXJlIGlnbm9yZWQgdW50aWwgJ1MnLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlICdTJyBtdXN0IHByZWNlZGUgdGhlIG51bWJlciwgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBsaW5lIGlzIGEgU1BWIChHZXJtYW4gMVRSNikuCisgICAgICAgICAgICAgICBBVEUwICAgICBFY2hvIG9mZi4KKyAgICAgICAgICAgICAgIEFURTEgICAgIEVjaG8gb24gKGRlZmF1bHQpLgorICAgICAgICAgICAgICAgQVRIICAgICAgSGFuZy11cC4KKyAgICAgICAgICAgICAgIEFUSDEgICAgIE9mZiBob29rIChpZ25vcmVkKS4KKyAgICAgICAgICAgICAgIEFUSDAgICAgIEhhbmctdXAuCisgICAgICAgICAgICAgICBBVEkgICAgICBSZXR1cm4gIklTRE4gZm9yIExpbnV4Li4uIi4KKyAgICAgICAgICAgICAgIEFUSTAgICAgICAgICIKKyAgICAgICAgICAgICAgIEFUSTEgICAgICAgICIKKyAgICAgICAgICAgICAgIEFUSTIgICAgIFJlcG9ydCBvZiBsYXN0IGNvbm5lY3Rpb24uCisgICAgICAgICAgICAgICBBVE8gICAgICBPbiBsaW5lIChkYXRhIG1vZGUpLgorICAgICAgICAgICAgICAgQVRRMCAgICAgRW5hYmxlIHJlc3VsdCBjb2RlcyAoZGVmYXVsdCkuCisgICAgICAgICAgICAgICBBVFExICAgICBEaXNhYmxlIHJlc3VsdCBjb2RlcyAoZGVmYXVsdCkuCisgICAgICAgICAgICAgICBBVFN4PXkgICBTZXQgcmVnaXN0ZXIgeCB0byB5LgorICAgICAgICAgICAgICAgQVRTeD8gICAgU2hvdyBjb250ZW50cyBvZiByZWdpc3RlciB4LgorICAgICAgICAgICAgICAgQVRWMCAgICAgTnVtZXJpYyByZXNwb25zZXMuCisgICAgICAgICAgICAgICBBVFYxICAgICBFbmdsaXNoIHJlc3BvbnNlcyAoZGVmYXVsdCkuCisgICAgICAgICAgICAgICBBVFogICAgICBMb2FkIHJlZ2lzdGVycyBhbmQgRUFaL01TTiBmcm9tIFByb2ZpbGUuCisgICAgICAgICAgICAgICBBVCZCeCAgICBTZXQgU2VuZC1QYWNrZXQtc2l6ZSB0byB4IChtYXguIDQwMDApCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVhbCBwYWNrZXQtc2l6ZSBtYXkgYmUgbGltaXRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvdy1sZXZlbC1kcml2ZXIgdXNlZC4gZS5nLiB0aGUgSGlTYXgtTW9kdWxlLQorICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQgaXMgMjAwMC4gWW91IHdpbGwgZ2V0IE5PIEVycm9yLU1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB5b3Ugc2V0IGl0IHRvIGhpZ2hlciB2YWx1ZXMsIGJlY2F1c2UgYXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICB0aW1lIG9mIGdpdmluZyB0aGlzIGNvbW1hbmQgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlciBtYXkgbm90IGJlIHNlbGVjdGVkIChzZWUgIkF1dG9tYXRpYworICAgICAgICAgICAgICAgICAgICAgICAgQXNzaWdubWVudCIpIGhvd2V2ZXIgdGhlIHNpemUgb2Ygb3V0Z29pbmcgcGFja2V0cworICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBiZSBsaW1pdGVkIGNvcnJlY3RseS4KKyAgICAgICAgICAgICAgIEFUJkQwICAgIElnbm9yZSBEVFIKKyAgICAgICAgICAgICAgIEFUJkQyICAgIERUUi1sb3ctZWRnZTogSGFuZyB1cCBhbmQgcmV0dXJuIHRvCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIG1vZGUgKGRlZmF1bHQpLgorICAgICAgICAgICAgICAgQVQmRDMgICAgU2FtZSBhcyBBVCZEMiBidXQgYWxzbyByZXNldHMgYWxsIHJlZ2lzdGVycy4KKyAgICAgICAgICAgICAgIEFUJkV4ICAgIFNldCB0aGUgRUFaL01TTiBmb3IgdGhpcyBjaGFubmVsIHRvIHguCisgICAgICAgICAgICAgICBBVCZGICAgICBSZXNldCBhbGwgcmVnaXN0ZXJzIGFuZCBwcm9maWxlIHRvICJmYWN0b3J5LWRlZmF1bHRzIgorICAgICAgICAgICAgICAgQVQmTHggICAgU2V0IGxpc3Qgb2YgcGhvbmUgbnVtYmVycyB0byBsaXN0ZW4gb24uICB4IGlzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qgb2Ygd2lsZGNhcmQgcGF0dGVybnMgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoaXMgaXMgc2V0LCBpdCBoYXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBNU04gc2V0CisgICAgICAgICAgICAgICAgICAgICAgICBieSBBVCZFLgorICAgICAgICAgICAgICAgQVQmUnggICAgU2VsZWN0IFYuMTEwIGJpdHJhdGUgYWRhcHRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbW1hbmQgZW5hYmxlcyBWLjExMCBwcm90b2NvbCB3aXRoIDk2MDAgYmF1ZAorICAgICAgICAgICAgICAgICAgICAgICAgKHg9OTYwMCksIDE5MjAwIGJhdWQgKHg9MTkyMDApIG9yIDM4NDAwIGJhdWQKKyAgICAgICAgICAgICAgICAgICAgICAgICh4PTM4NDAwKS4gQSB2YWx1ZSBvZiB4PTAgZGlzYWJsZXMgVi4xMTAgc3dpdGNoaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBiYWNrIHRvIGRlZmF1bHQgWC43NS4gVGhpcyBjb21tYW5kIHNldHMgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJzOgorICAgICAgICAgICAgICAgICAgICAgICAgICBSZWcgMTQgKExheWVyLTIgcHJvdG9jb2wpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSAwOiAgICAgMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSA5NjAwOiAgNworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSAxOTIwMDogOAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSAzODQwMDogOQorICAgICAgICAgICAgICAgICAgICAgICAgICBSZWcgMTguMiA9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnIDE5IChBZGRpdGlvbmFsIFNlcnZpY2UgSW5kaWNhdG9yKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gMDogICAgICAgMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSA5NjAwOiAgMTk3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IDE5MjAwOiAxOTkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gMzg0MDA6IDE5OAorICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RlIG9uIHZhbHVlIGluIFJlZyAxOToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVyZSBpcyBfTk9fIGNvbW1vbiBjb252ZW50aW9uIGZvciAzODQwMCBiYXVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSAxOTggaXMgY2hvc2VuIGFyYml0cmFyaWx5LiBVc2VycworICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NVVNUXyBuZWdvdGlhdGUgdGhpcyB2YWx1ZSBiZWZvcmUgZXN0YWJsaXNoaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBjb25uZWN0aW9uLgorICAgICAgICAgICAgICAgQVQmU3ggICAgU2V0IHdpbmRvdy1zaXplICh4ID0gMS4uOCkgKG5vdCB5ZXQgaW1wbGVtZW50ZWQpCisgICAgICAgICAgICAgICBBVCZWICAgICBTaG93IGFsbCBzZXR0aW5ncy4KKyAgICAgICAgICAgICAgIEFUJlcwICAgIFdyaXRlIHJlZ2lzdGVycyBhbmQgRUFaL01TTiB0byBwcm9maWxlLiBTZWUgYWxzbworICAgICAgICAgICAgICAgICAgICAgICAgaXByb2ZkICg1LmMgaW4gdGhpcyBSRUFETUUpLgorICAgICAgICAgICAgICAgQVQmWDAgICAgQlRYLW1vZGUgYW5kIFQuNzAtbW9kZSBvZmYgKGRlZmF1bHQpCisgICAgICAgICAgICAgICBBVCZYMSAgICBCVFgtbW9kZSBvbi4gKFMxMy4xPTEsIFMxMy41PTAgUzE0PTAsIFMxNj03LCBTMTg9NywgUzE5PTApCisgICAgICAgICAgICAgICBBVCZYMiAgICBULjcwLW1vZGUgb24uIChTMTMuMT0xLCBTMTMuNT0xLCBTMTQ9MCwgUzE2PTcsIFMxOD03LCBTMTk9MCkKKyAgICAgICAgICAgICAgIEFUK1J4ICAgIFJlc3VtZSBhIHN1c3BlbmRlZCBjYWxsIHdpdGggQ2FsbElEIHggKHggPSAxLDIsMy4uLikKKyAgICAgICAgICAgICAgIEFUK1N4ICAgIFN1c3BlbmQgYSBjYWxsIHdpdGggQ2FsbElEIHggKHggPSAxLDIsMy4uLikKKworICAgICAgICAgICBGb3Igdm9pY2UtbW9kZSBjb21tYW5kcyByZWZlciB0byBSRUFETUUuYXVkaW8KKworICAgICAgICAgICAxLjMuMiBFc2NhcGUgc2VxdWVuY2U6CisgICAgICAgICAgICAgICBEdXJpbmcgYSBjb25uZWN0aW9uLCB0aGUgZW11bGF0aW9uIHJlYWN0cyBqdXN0IGxpa2UKKyAgICAgICAgICAgICAgIGEgbm9ybWFsIG1vZGVtIHRvIHRoZSBlc2NhcGUgc2VxdWVuY2UgPERFTEFZPisrKzxERUxBWT4uCisgICAgICAgICAgICAgICAoVGhlIGVzY2FwZSBjaGFyYWN0ZXIgLSBkZWZhdWx0ICcrJyAtIGNhbiBiZSBzZXQgaW4gdGhlCisgICAgICAgICAgICAgICByZWdpc3RlciAyKS4KKyAgICAgICAgICAgICAgIFRoZSBERUxBWSBtdXN0IGF0IGxlYXN0IGJlIDEuNSBzZWNvbmRzIGxvbmcgYW5kIGRlbGF5CisgICAgICAgICAgICAgICBiZXR3ZWVuIHRoZSBlc2NhcGUgY2hhcmFjdGVycyBtdXN0IG5vdCBleGNlZWQgMC41IHNlY29uZHMuCisKKyAgICAgICAgICAgMS4zLjMgUmVnaXN0ZXJzOgorCisgICAgICAgICAgICAgIE5yLiAgRGVmYXVsdCAgRGVzY3JpcHRpb24KKyAgICAgICAgICAgICAgMCAgICAwICAgICAgICBBbnN3ZXIgb24gcmluZyBudW1iZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vIGF1dG8tYW5zd2VyIGlmIFMwPTApLgorICAgICAgICAgICAgICAxICAgIDAgICAgICAgIENvdW50IG9mIHJpbmdzLgorICAgICAgICAgICAgICAyICAgIDQzICAgICAgIEVzY2FwZSBjaGFyYWN0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEgdmFsdWUgPj0gMTI4IGRpc2FibGVzIHRoZSBlc2NhcGUgc2VxdWVuY2UpLgorICAgICAgICAgICAgICAzICAgIDEzICAgICAgIENhcnJpYWdlIHJldHVybiBjaGFyYWN0ZXIgKEFTQ0lJKS4KKyAgICAgICAgICAgICAgNCAgICAxMCAgICAgICBMaW5lIGZlZWQgY2hhcmFjdGVyIChBU0NJSSkuCisgICAgICAgICAgICAgIDUgICAgOCAgICAgICAgQmFja3NwYWNlIGNoYXJhY3RlciAoQVNDSUkpLgorICAgICAgICAgICAgICA2ICAgIDMgICAgICAgIERlbGF5IGluIHNlY29uZHMgYmVmb3JlIGRpYWxpbmcuCisgICAgICAgICAgICAgIDcgICAgNjAgICAgICAgV2FpdCBmb3IgY2Fycmllci4KKyAgICAgICAgICAgICAgOCAgICAyICAgICAgICBQYXVzZSB0aW1lIGZvciBjb21tYSAoaWdub3JlZCkKKyAgICAgICAgICAgICAgOSAgICA2ICAgICAgICBDYXJyaWVyIGRldGVjdCB0aW1lIChpZ25vcmVkKQorICAgICAgICAgICAgIDEwICAgIDcgICAgICAgIENhcnJpZXIgbG9zcyB0byBkaXNjb25uZWN0IHRpbWUgKGlnbm9yZWQpLgorICAgICAgICAgICAgIDExICAgIDcwICAgICAgIFRvdWNoIHRvbmUgdGltaW5nIChpZ25vcmVkKS4KKyAgICAgICAgICAgICAxMiAgICA2OSAgICAgICBCaXQgY29kZWQgcmVnaXN0ZXI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQml0IDA6ICAgIDAgPSBTdXBwcmVzcyByZXNwb25zZSBtZXNzYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSA9IFNob3cgcmVzcG9uc2UgbWVzc2FnZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQml0IDE6ICAgIDAgPSBFbmdsaXNoIHJlc3BvbnNlIG1lc3NhZ2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxID0gTnVtZXJpYyByZXNwb25zZSBtZXNzYWdlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXQgMjogICAgMCA9IEVjaG8gb2ZmLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxID0gRWNobyBvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXQgMyAgICAgMCA9IERDRCBhbHdheXMgb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPSBEQ0QgZm9sbG93cyBjYXJyaWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpdCA0ICAgICAwID0gQ1RTIGZvbGxvd3MgUlRTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPSBJZ25vcmUgUlRTLCBDVFMgYWx3YXlzIG9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpdCA1ICAgICAwID0gcmV0dXJuIHRvIGNvbW1hbmQgbW9kZSBvbiBEVFIgbG93LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxID0gU2FtZSBhcyAwIGJ1dCBhbHNvIHJlc2V0cyBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIGFsc28gcmVnaXN0ZXIgMTMsIGJpdCAyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQml0IDYgICAgIDAgPSBEU1IgYWx3YXlzIG9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxID0gRFNSIG9ubHkgb24gaWYgY2hhbm5lbCBpcyBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQml0IDcgICAgIDAgPSBDaXNjby1QUFAtZmxhZy1oYWNrIG9mZiAoZGVmYXVsdCkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPSBDaXNjby1QUFAtZmxhZy1oYWNrIG9uLgorICAgICAgICAgICAgIDEzICAgMCAgICAgICAgIEJpdCBjb2RlZCByZWdpc3RlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXQgMDogICAgMCA9IFVzZSBkZWxheWVkIHR0eS1zZW5kLWFsZ29yaXRobQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxID0gRGlyZWN0IHR0eS1zZW5kLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpdCAxOiAgICAwID0gVC43MCBwcm90b2NvbCAoT25seSBmb3IgQlRYISkgb2ZmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPSBULjcwIHByb3RvY29sIChPbmx5IGZvciBCVFghKSBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpdCAyOiAgICAwID0gRG9uJ3QgaGFuZ3VwIG9uIERUUiBsb3cuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPSBIYW5ndXAgb24gRFRSIGxvdy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXQgMzogICAgMCA9IFN0YW5kYXJkIHJlc3BvbnNlIG1lc3NhZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPSBFeHRlbmRlZCByZXNwb25zZSBtZXNzYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpdCA0OiAgICAwID0gQ0FMTEVSIE5VTUJFUiBiZWZvcmUgZXZlcnkgUklORy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSA9IENBTExFUiBOVU1CRVIgYWZ0ZXIgZmlyc3QgUklORy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXQgNTogICAgMCA9IFQuNzAgZXh0ZW5kZWQgcHJvdG9jb2wgb2ZmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPSBULjcwIGV4dGVuZGVkIHByb3RvY29sIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQml0IDY6ICAgIDAgPSBTcGVjaWFsIFJVTkcgTWVzc2FnZSBvZmYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSA9IFNwZWNpYWwgUlVORyBNZXNzYWdlIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUlVORyIgaXMgZGVsaXZlcmVkIG9uIGEgdHR5SSwgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIGluY29taW5nIGNhbGwgaGFwcGVuZWQgKFJJTkcpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlbW90ZSBwYXJ0eSBodW5nIHVwIGJlZm9yZSBhbnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsIEFUQSB3YXMgZ2l2ZW4uCisJCQkgICAgQml0IDc6ICAgIDAgPSBEb24ndCBzaG93IGRpc3BsYXkgbWVzc2FnZXMgZnJvbSBuZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSA9IFNob3cgZGlzcGxheSBtZXNzYWdlcyBmcm9tIG5ldAorCQkJCSAgICAgICAgICAoUzEyIEJpdCAxIG11c3QgYmUgMCB0b28pICAgICAgCisgICAgICAgICAgICAgMTQgICAwICAgICAgICAgTGF5ZXItMiBwcm90b2NvbDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCA9IFg3NS9MQVBCIHdpdGggSS1mcmFtZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSA9IFg3NS9MQVBCIHdpdGggVUktZnJhbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgPSBYNzUvTEFQQiB3aXRoIEJVSS1mcmFtZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMyA9IEhETEMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCA9IFRyYW5zcGFyZW50IChhdWRpbykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNyA9IFYuMTEwLCA5NjAwIGJhdWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCA9IFYuMTEwLCAxOTIwMCBiYXVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkgPSBWLjExMCwgMzg0MDAgYmF1ZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwID0gQW5hbG9nIE1vZGVtIChvbmx5IGlmIGhhcmR3YXJlIHN1cHBvcnRzIHRoaXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEgPSBGYXggRzMgKG9ubHkgaWYgaGFyZHdhcmUgc3VwcG9ydHMgdGhpcykKKyAgICAgICAgICAgICAxNSAgIDAgICAgICAgICBMYXllci0zIHByb3RvY29sOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwID0gdHJhbnNwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSA9IHRyYW5zcGFyZW50IHdpdGggYXVkaW8gZmVhdHVyZXMgKGUuZy4gRFNQKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyID0gRmF4IEczIENsYXNzIDIgY29tbWFuZHMgKFMxNCBoYXMgdG8gYmUgc2V0IHRvIDExKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzID0gRmF4IEczIENsYXNzIDEgY29tbWFuZHMgKFMxNCBoYXMgdG8gYmUgc2V0IHRvIDExKQorICAgICAgICAgICAgIDE2ICAgMjUwICAgICAgIFNlbmQtUGFja2V0LXNpemUvMTYKKyAgICAgICAgICAgICAxNyAgIDggICAgICAgICBXaW5kb3ctc2l6ZSAobm90IHlldCBpbXBsZW1lbnRlZCkKKyAgICAgICAgICAgICAxOCAgIDQgICAgICAgICBCaXQgY29kZWQgcmVnaXN0ZXIsIFNlcnZpY2UtT2N0ZXQtMSB0byBhY2NlcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgdG8gYmUgdXNlZCBvbiBkaWFsb3V0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpdCAwOiAgICBTZXJ2aWNlIDEgKGF1ZGlvKSB3aGVuIHNldC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXQgMTogICAgU2VydmljZSA1IChCVFgpIHdoZW4gc2V0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpdCAyOiAgICBTZXJ2aWNlIDcgKGRhdGEpIHdoZW4gc2V0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGU6IEl0IGlzIHBvc3NpYmxlIHRvIHNldCBtb3JlIHRoYW4gb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0LiBJbiB0aGlzIGNhc2UsIG9uIGluY29taW5nIGNhbGxzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNlbGVjdGVkIHNlcnZpY2VzIGFyZSBhY2NlcHRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgaWYgdGhlIHNlcnZpY2UgaXMgImF1ZGlvIiwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5ZXItMi1wcm90b2NvbCBpcyBhdXRvbWF0aWNhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB0byA0IHJlZ2FyZGxlc3Mgb2YgdGhlIHNldHRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiByZWdpc3RlciAxNC4gT24gb3V0Z29pbmcgY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgMS1iaXQgaXMgY2hvc2VuIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0IHRoZSBvdXRnb2luZyBzZXJ2aWNlIG9jdGV0LgorICAgICAgICAgICAgIDE5ICAgMCAgICAgICAgIFNlcnZpY2UtT2N0ZXQtMgorICAgICAgICAgICAgIDIwICAgMCAgICAgICAgIEJpdCBjb2RlZCByZWdpc3RlciAocmVhZG9ubHkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VydmljZS1PY3RldC0xIG9mIGxhc3QgY2FsbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXQgbWFwcGluZyBpcyB0aGUgc2FtZSBhcyByZWdpc3RlciAxOAorICAgICAgICAgICAgIDIxICAgMCAgICAgICAgIEJpdCBjb2RlZCByZWdpc3RlciAocmVhZG9ubHkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IG9uIGluY29taW5nIGNhbGwgKGR1cmluZyBSSU5HKSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9jdGV0IDMgb2YgY2FsbGluZyBwYXJ0eSBudW1iZXIgSUUgKE51bWJlcmluZyBwbGFuKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSBzZWN0aW9uIDQuNS4xMCBvZiBJVFUgUS45MzEKKyAgICAgICAgICAgICAyMiAgIDAgICAgICAgICBCaXQgY29kZWQgcmVnaXN0ZXIgKHJlYWRvbmx5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldCBvbiBpbmNvbWluZyBjYWxsIChkdXJpbmcgUklORykgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvY3RldCAzYSBvZiBjYWxsaW5nIHBhcnR5IG51bWJlciBJRSAoU2NyZWVuaW5nIGluZm8pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHNlY3Rpb24gNC41LjEwIG9mIElUVSBRLjkzMQorICAgICAgICAgICAgIDIzICAgMCAgICAgICAgIEJpdCBjb2RlZCByZWdpc3RlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXQgMDogICAgMCA9IEFkZCBDUE4gdG8gUklORyBtZXNzYWdlIG9mZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxID0gQWRkIENQTiB0byBSSU5HIG1lc3NhZ2Ugb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXQgMTogICAgMCA9IEFkZCBDUE4gdG8gRkNPTiBtZXNzYWdlIG9mZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxID0gQWRkIENQTiB0byBGQ09OIG1lc3NhZ2Ugb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaXQgMjogICAgMCA9IEFkZCBDRE4gdG8gUklORy9GQ09OIG1lc3NhZ2Ugb2ZmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPSBBZGQgQ0ROIHRvIFJJTkcvRkNPTiBtZXNzYWdlIG9uCisKKyAgTGFzdCBidXQgbm90IGxlYXN0IGEgKGF0IHRoZSBtb21lbnQgZmFpcmx5IHByaW1pdGl2ZSkgZGV2aWNlIHRvIHJlcXVlc3QKKyAgdGhlIGxpbmUtc3RhdHVzICgvZGV2L2lzZG5pbmZvKSBpcyBtYWRlIGF2YWlsYWJsZS4KKworICBBdXRvbWF0aWMgYXNzaWdubWVudCBvZiBkZXZpY2VzIHRvIGxpbmVzOgorCisgIEFsbCBpbmFjdGl2ZSBwaHlzaWNhbCBsaW5lcyBhcmUgbGlzdGVuaW5nIHRvIGFsbCBFQVpzIGZvciBpbmNvbWluZworICBjYWxscyBhbmQgYXJlIE5PVCBhc3NpZ25lZCB0byBhIHNwZWNpZmljIHR0eSBvciBuZXR3b3JrIGludGVyZmFjZS4KKyAgV2hlbiBhbiBpbmNvbWluZyBjYWxsIGlzIGRldGVjdGVkLCB0aGUgZHJpdmVyIGxvb2tzIGZpcnN0IGZvciBhIG5ldHdvcmsKKyAgaW50ZXJmYWNlIGFuZCB0aGVuIGZvciBhbiBvcGVuZWQgdHR5IHdoaWNoOgorCisgIDEuIGlzIGNvbmZpZ3VyZWQgZm9yIHRoZSBzYW1lIEVBWi4KKyAgMi4gaGFzIHRoZSBzYW1lIHByb3RvY29sIHNldHRpbmdzIGZvciB0aGUgQi1jaGFubmVsLgorICAzLiAob25seSBmb3IgbmV0d29yayBpbnRlcmZhY2VzIGlmIHRoZSBzZWN1cml0eSBmbGFnIGlzIHNldCkKKyAgICAgY29udGFpbnMgdGhlIGNhbGxlciBudW1iZXIgaW4gaXRzIGFjY2VzcyBsaXN0LgorICA0LiBFaXRoZXIgdGhlIGNoYW5uZWwgaXMgbm90IGJvdW5kIGV4Y2x1c2l2ZWx5IHRvIGFub3RoZXIgTmV0LWludGVyZmFjZSwgb3IKKyAgICAgaXQgaXMgYm91bmQgQU5EIHRoZSBvdGhlciBjaGVja3MgYXBwbHkgdG8gZXhhY3RseSB0aGlzIGludGVyZmFjZS4KKyAgICAgKEZvciB1c2FnZSBvZiB0aGUgYmluZC1mZWF0dXJlcywgcmVmZXIgdG8gdGhlIGlzZG5jdHJsLW1hbi1wYWdlKQorCisgIE9ubHkgd2hlbiBhIG1hdGNoaW5nIGludGVyZmFjZSBvciB0dHkgaXMgZm91bmQgaXMgdGhlIGNhbGwgYWNjZXB0ZWQKKyAgYW5kIHRoZSAiY29ubmVjdGlvbiIgYmV0d2VlbiB0aGUgbG93LWxldmVsLWxheWVyIGFuZCB0aGUgbGluay1sZXZlbC1sYXllcgorICBpcyBlc3RhYmxpc2hlZCBhbmQga2VwdCB1bnRpbCB0aGUgZW5kIG9mIHRoZSBjb25uZWN0aW9uLgorICBJbiBhbGwgb3RoZXIgY2FzZXMgbm8gY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZC4gSXNkbjRsaW51eCBjYW4gYmUKKyAgY29uZmlndXJlZCB0byBlaXRoZXIgZG8gTk9USElORyBpbiB0aGlzIGNhc2UgKHdoaWNoIGlzIHVzZWZ1bCwgaWYKKyAgb3RoZXIsIGV4dGVybmFsIGRldmljZXMgd2l0aCB0aGUgc2FtZSBFQVovTVNOIGFyZSBjb25uZWN0ZWQgdG8gdGhlIGJ1cykKKyAgb3IgdG8gcmVqZWN0IHRoZSBjYWxsIGFjdGl2ZWx5LiAoaXNkbmN0cmwgYnVzcmVqZWN0IC4uLikKKworICBGb3IgYW4gb3V0Z29pbmcgY2FsbCwgdGhlIGluYWN0aXZlIHBoeXNpY2FsIGxpbmVzIGFyZSBzZWFyY2hlZC4KKyAgVGhlIGNhbGwgaXMgcGxhY2VkIG9uIHRoZSBmaXJzdCBwaHlzaWNhbCBsaW5lLCB3aGljaCBzdXBwb3J0cyB0aGUKKyAgcmVxdWVzdGVkIHByb3RvY29scyBmb3IgdGhlIEItY2hhbm5lbC4gSWYgYSBuZXQtaW50ZXJmYWNlLCBob3dldmVyCisgIGlzIHByZS1ib3VuZCB0byBhIGNoYW5uZWwsIHRoaXMgY2hhbm5lbCBpcyB1c2VkIGRpcmVjdGx5LgorCisgIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gY29uZmlndXJlIHNldmVyYWwgbmV0d29yayBpbnRlcmZhY2VzIGFuZCB0dHlzCisgIGZvciBvbmUgRUFaLCBpZiB0aGUgbmV0d29yayBpbnRlcmZhY2VzIGFyZSBzZXQgdG8gc2VjdXJlIG9wZXJhdGlvbi4KKyAgSWYgYW4gaW5jb21pbmcgY2FsbCBtYXRjaGVzIG9uZSBuZXR3b3JrIGludGVyZmFjZSwgaXQgZ2V0cyBjb25uZWN0ZWQgdG8gaXQuCisgIElmIGFub3RoZXIgaW5jb21pbmcgY2FsbCBmb3IgdGhlIHNhbWUgRUFaIGFycml2ZXMsIHdoaWNoIGRvZXMgbm90IG1hdGNoCisgIGEgbmV0d29yayBpbnRlcmZhY2UsIHRoZSBmaXJzdCB0dHkgZ2V0cyBhICJSSU5HIiBhbmQgc28gb24uCisKKzIgU3lzdGVtIHByZXJlcXVpc2l0ZXM6CisKKyAgQVRURU5USU9OIQorCisgIEFsd2F5cyB1c2UgdGhlIGxhdGVzdCBtb2R1bGUgdXRpbGl0aWVzLiBUaGUgY3VycmVudCB2ZXJzaW9uIGlzCisgIG5hbWVkIGluIERvY3VtZW50YXRpb24vQ2hhbmdlcy4gU29tZSBvbGQgdmVyc2lvbnMgb2YgaW5zbW9kCisgIGFyZSBub3QgY2FwYWJsZSBvZiBzZXR0aW5nIHRoZSBkcml2ZXItSWRzIGNvcnJlY3RseS4KKworMy4gTG93bGV2ZWwtZHJpdmVyIGNvbmZpZ3VyYXRpb24uCisKKyAgIENvbmZpZ3VyYXRpb24gZGVwZW5kcyBvbiBob3cgdGhlIGRyaXZlcnMgYXJlIGJ1aWx0LiBTZWUgdGhlCisgICBSRUFETUUuPHlvdXJEcml2ZXI+IGZvciBpbmZvcm1hdGlvbiBvbiBkcml2ZXItc3BlY2lmaWMgc2V0dXAuCisKKzQuIERldmljZS1pbm9kZXMKKworICAgVGhlIG1ham9yIGFuZCBtaW5vciBudW1iZXJzIGFuZCB0aGVpciBuYW1lcyBhcmUgZGVzY3JpYmVkIGluCisgICBEb2N1bWVudGF0aW9uL2RldmljZXMudHh0LiBUaGUgbWFqb3IgbnVtYmVycyBhcmU6CisKKyAgICAgNDMgZm9yIHRoZSBJU0ROLXR0eSdzLgorICAgICA0NCBmb3IgdGhlIElTRE4tY2FsbG91dC10dHkncy4KKyAgICAgNDUgZm9yIGNvbnRyb2wvaW5mby9kZWJ1ZyBkZXZpY2VzLgorCis1LiBBcHBsaWNhdGlvbgorCisgICBhKSBGb3Igc29tZSBjYXJkLXR5cGVzLCBmaXJtd2FyZSBoYXMgdG8gYmUgbG9hZGVkIGludG8gdGhlIGNhcmRzLCBiZWZvcmUKKyAgICAgIHByb2NlZWRpbmcgd2l0aCBkZXZpY2UtaW5kZXBlbmRlbnQgc2V0dXAuIFNlZSBSRUFETUUuPHlvdXJEcml2ZXI+CisgICAgICBmb3IgaG93IHRvIGRvIHRoYXQuCisKKyAgIGIpIElmIHlvdSBvbmx5IGludGVuZCB0byB1c2UgdHR5cywgeW91IGFyZSBuZWFybHkgcmVhZHkgbm93LgorCisgICBjKSBJZiB5b3Ugd2FudCB0byBoYXZlIHJlYWxseSBwZXJtYW5lbnQgIk1vZGVtIi1zZXR0aW5ncyBvbiBkaXNrLCB5b3UKKyAgICAgIGNhbiBzdGFydCB0aGUgZGFlbW9uIGlwcm9mZC4gR2l2ZSBpdCBhIHBhdGggdG8gYSBmaWxlIGF0IHRoZSBjb21tYW5kLQorICAgICAgbGluZS4gSXQgd2lsbCBzdG9yZSB0aGUgcHJvZmlsZS1zZXR0aW5ncyBpbiB0aGlzIGZpbGUgZXZlcnkgdGltZQorICAgICAgYW4gQVQmVzAgaXMgcGVyZm9ybWVkIG9uIGFueSBJU0ROLXR0eS4gSWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMsCisgICAgICBhbGwgcHJvZmlsZXMgYXJlIGluaXRpYWxpemVkIGZyb20gdGhpcyBmaWxlLiBJZiB5b3Ugd2FudCB0byB1bmxvYWQKKyAgICAgIGFueSBvZiB0aGUgbW9kdWxlcywga2lsbCBpcHJvZmQgZmlyc3QuCisKKyAgIGQpIEZvciBuZXR3b3JraW5nLCBjb250aW51ZTogQ3JlYXRlIGFuIGludGVyZmFjZToKKyAgICAgICBpc2RuY3RybCBhZGRpZiBpc2RuMAorCisgICBlKSBTZXQgdGhlIEVBWiAob3IgTVNOIGZvciBFdXJvLUlTRE4pOgorICAgICAgIGlzZG5jdHJsIGVheiBpc2RuMCAyCisKKyAgICAgKEZvciAxVFI2IGEgc2luZ2xlIGRpZ2l0IGlzIGFsbG93ZWQsIGZvciBFdXJvLUlTRE4gdGhlIG51bWJlciBpcyB5b3VyCisgICAgICByZWFsIE1TTiBlLmcuOiBQaG9uZS1OdW1iZXIpCisKKyAgIGYpIFNldCB0aGUgbnVtYmVyIGZvciBvdXRnb2luZyBjYWxscyBvbiB0aGUgaW50ZXJmYWNlOgorICAgICAgIGlzZG5jdHJsIGFkZHBob25lIGlzZG4wIG91dCAxMjM0NTY3CisgICAgICAgLi4uICh0aGlzIGNhbiBiZSBleGVjdXRlZCBtb3JlIHRoYW4gb25jZSwgYWxsIGFzc2lnbmVkIG51bWJlcnMgYXJlCisgICAgICAgICAgICB0cmllZCBpbiBvcmRlcikKKyAgICAgIGFuZCB0aGUgbnVtYmVyKHMpIGZvciBpbmNvbWluZyBjYWxsczoKKyAgICAgICBpc2RuY3RybCBhZGRwaG9uZSBpc2RuMCBpbiAxMjM0NTY3CisKKyAgIGcpIFNldCB0aGUgdGltZW91dCBmb3IgaGFuZy11cDoKKyAgICAgICBpc2RuY3RybCBodXB0aW1lb3V0IGlzZG4wIDx0aW1lb3V0X2luX3NlY29uZHM+CisKKyAgIGgpIGFkZGl0aW9uYWxseSB5b3UgbWF5IGFjdGl2YXRlIGNoYXJnZS1oYW5nLXVwICg9IEhhbmcgdXAgYmVmb3JlCisgICAgICBuZXh0IGNoYXJnZS1pbmZvLCB0aGlzIG9ubHkgd29ya3MsIGlmIHlvdXIgaXNkbi1wcm92aWRlciB0cmFuc21pdHMKKyAgICAgIHRoZSBjaGFyZ2UtaW5mbyBkdXJpbmcgYW5kIGFmdGVyIHRoZSBjb25uZWN0aW9uKToKKyAgICAgICBpc2RuY3RybCBjaGFyZ2VodXAgaXNkbjAgb24KKworICAgaSkgU2V0IHRoZSBkaWFsIG1vZGUgb2YgdGhlIGludGVyZmFjZToKKyAgICAgICBpc2RuY3RybCBkaWFsbW9kZSBpc2RuMCBhdXRvCisgICAgICAib2ZmIiBtZWFucyB0aGF0IHlvdSAob3IgdGhlIHN5c3RlbSkgY2Fubm90IG1ha2UgYW55IGNvbm5lY3Rpb24KKyAgICAgICAgKG5laXRoZXIgaW5jb21pbmcgb3Igb3V0Z29pbmcgY29ubmVjdGlvbnMgYXJlIHBvc3NpYmxlKS4gVXNlCisgICAgICAgIHRoaXMgaWYgeW91IHdhbnQgdG8gYmUgc3VyZSB0aGF0IG5vIGNvbm5lY3Rpb25zIHdpbGwgYmUgbWFkZS4KKyAgICAgICJhdXRvIiBtZWFucyB0aGF0IHRoZSBpbnRlcmZhY2UgaXMgaW4gYXV0by1kaWFsIG1vZGUsIGFuZCB3aWxsCisgICAgICAgIGF0dGVtcHQgdG8gbWFrZSBhIGNvbm5lY3Rpb24gd2hlbmV2ZXIgYSBuZXR3b3JrIGRhdGEgcGFja2V0IG5lZWRzCisgICAgICAgIHRoZSBpbnRlcmZhY2UncyBsaW5rLiBOb3RlIHRoYXQgdGhpcyBjYW4gY2F1c2UgdW5leHBlY3RlZCBkaWFsb3V0cywKKyAgICAgICAgYW5kIGxlYWQgdG8gYSBoaWdoIHBob25lIGJpbGwhIFNvbWUgZGFlbW9ucyBvciBvdGhlciBwYydzIHRoYXQgdXNlCisgICAgICAgIHRoaXMgaW50ZXJmYWNlIGNhbiBjYXVzZSB0aGlzLgorICAgICAgICBJbmNvbWluZyBjb25uZWN0aW9ucyBhcmUgYWxzbyBwb3NzaWJsZS4KKyAgICAgICJtYW51YWwiIGlzIGEgZGlhbCBtb2RlIGNyZWF0ZWQgdG8gcHJldmVudCB0aGUgdW5leHBlY3RlZCBkaWFsb3V0cy4KKyAgICAgICAgSW4gdGhpcyBtb2RlLCB0aGUgaW50ZXJmYWNlIHdpbGwgbmV2ZXIgbWFrZSBhbnkgY29ubmVjdGlvbnMgb24gaXRzCisgICAgICAgIG93bi4gWW91IG11c3QgZXhwbGljaXRseSBpbml0aWF0ZSBhIGNvbm5lY3Rpb24gd2l0aCAiaXNkbmN0cmwgZGlhbAorICAgICAgICBpc2RuMCIuIEhvd2V2ZXIsIGFmdGVyIGFuIGlkbGUgdGltZSBvZiBubyB0cmFmZmljIGFzIGNvbmZpZ3VyZWQgZm9yCisJdGhlIGh1cHRpbWVvdXQgdmFsdWUgd2l0aCBpc2RuY3RybCwgdGhlIGNvbm5lY3Rpb24gX3dpbGxfIGJlIGVuZGVkLgorCUlmIHlvdSBkb24ndCB3YW50IGFueSBhdXRvbWF0aWMgaGFuZ3VwLCBzZXQgdGhlIGh1cHRpbWVvdXQgdmFsdWUgdG8gMC4KKyAgICAgICAgIm1hbnVhbCIgaXMgdGhlIGRlZmF1bHQuCisKKyAgIGopIFNldHVwIHRoZSBpbnRlcmZhY2Ugd2l0aCBpZmNvbmZpZyBhcyB1c3VhbCwgYW5kIHNldCBhIHJvdXRlIHRvIGl0LgorCisgICBrKSAob3B0aW9uYWwpIElmIHlvdSBydW4gWDExIGFuZCBoYXZlIFRjbC9Uay13aXNoIHZlcnNpb24gNC4wLCB5b3UgY2FuIHVzZQorICAgICB0aGUgc2NyaXB0IHRvb2xzL3RjbHRrL2lzZG5tb24uIFlvdSBjYW4gYWRkIGFjdGlvbnMgZm9yIGxpbmUtc3RhdHVzCisgICAgIGNoYW5nZXMuIFNlZSB0aGUgY29tbWVudHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2NyaXB0IGZvciBob3cgdG8KKyAgICAgZG8gdGhhdC4gVGhlcmUgYXJlIG90aGVyIHR0eS1iYXNlZCB0b29scyBpbiB0aGUgdG9vbHMtc3ViZGlyZWN0b3J5CisgICAgIGNvbnRyaWJ1dGVkIGJ5IE1pY2hhZWwgS25pZ2dlIChpbW9uKSwgVm9sa2VyIEfDtnR6IChpbW9udHR5KSBhbmQKKyAgICAgQW5kcmVhcyBLb29sIChpc2RubW9uKS4KKworICAgbCkgRm9yIGluaXRpYWwgdGVzdGluZywgeW91IGNhbiBzZXQgdGhlIHZlcmJvc2UtbGV2ZWwgdG8gMiAoZGVmYXVsdDogMCkuCisgICAgICBUaGVuIGFsbCBpbmNvbWluZyBjYWxscyBhcmUgbG9nZ2VkLCBldmVuIGlmIHRoZXkgYXJlIG5vdCBhZGRyZXNzZWQKKyAgICAgIHRvIG9uZSBvZiB0aGUgY29uZmlndXJlZCBuZXQtaW50ZXJmYWNlczoKKyAgICAgIGlzZG5jdHJsIHZlcmJvc2UgMgorCisgIE5vdyB5b3UgYXJlIHJlYWR5ISBBIHBpbmcgdG8gdGhlIHNldCBhZGRyZXNzIHNob3VsZCBub3cgcmVzdWx0IGluIGFuCisgIGF1dG9tYXRpYyBkaWFsLW91dCAobG9vayBhdCBzeXNsb2cga2VybmVsLW1lc3NhZ2VzKS4KKyAgVGhlIHBob25lIG51bWJlcnMgYW5kIEVBWnMgY2FuIGJlIGFzc2lnbmVkIGF0IGFueSB0aW1lIHdpdGggaXNkbmN0cmwuCisgIFlvdSBjYW4gYWRkIGFzIG1hbnkgaW50ZXJmYWNlcyBhcyB5b3UgbGlrZSB3aXRoIGFkZGlmIGZvbGxvd2luZyB0aGUKKyAgZGlyZWN0aW9ucyBhYm92ZS4gT2YgY291cnNlLCB0aGVyZSBtYXkgYmUgc29tZSBsaW1pdGF0aW9ucy4gQnV0IHdlIGhhdmUKKyAgdGVzdGVkIGFzIG1hbnkgYXMgMjAgaW50ZXJmYWNlcyB3aXRob3V0IGFueSBwcm9ibGVtLiBIb3dldmVyLCBpZiB5b3UKKyAgZG9uJ3QgZ2l2ZSBhbiBpbnRlcmZhY2UgbmFtZSB0byBhZGRpZiwgdGhlICBrZXJuZWwgd2lsbCBhc3NpZ24gYSBuYW1lCisgIHdoaWNoIHN0YXJ0cyB3aXRoICJldGgiLiBUaGUgbnVtYmVyIG9mICJldGgiLWludGVyZmFjZXMgaXMgbGltaXRlZCBieQorICB0aGUga2VybmVsLgorCis1LiBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGlzZG5jdHJsOgorCisgICAiaXNkbmN0cmwgc2VjdXJlIDxJbnRlcmZhY2VOYW1lPiBvbiIKKyAgIE9ubHkgaW5jb21pbmcgY2FsbHMsIGZvciB3aGljaCB0aGUgY2FsbGVyLWlkIGlzIGxpc3RlZCBpbiB0aGUgYWNjZXNzCisgICBsaXN0IG9mIHRoZSBpbnRlcmZhY2UgYXJlIGFjY2VwdGVkLiBZb3UgY2FuIGFkZCBjYWxsZXItaWQncyBXaXRoIHRoZQorICAgY29tbWFuZCAiaXNkbmN0cmwgYWRkcGhvbmUgPEludGVyZmFjZU5hbWU+IGluIDxjYWxsZXItaWQ+IgorICAgRXVyby1JU0ROIGRvZXMgbm90IHRyYW5zbWl0IHRoZSBsZWFkaW5nICcwJyBvZiB0aGUgY2FsbGVyLWlkIGZvciBhbgorICAgaW5jb21pbmcgY2FsbCwgdGhlcmVmb3JlIHlvdSBzaG91bGQgY29uZmlndXJlIGl0IGFjY29yZGluZ2x5LgorICAgSWYgdGhlIHJlYWwgbnVtYmVyIGZvciB0aGUgZGlhbG91dCBlLmcuIGlzICIwOTMxMTIzNDU2NyIgdGhlIG51bWJlcgorICAgdG8gY29uZmlndXJlIGhlcmUgaXMgIjkzMTEyMzQ1NjciLiBUaGUgcGF0dGVybi1tYXRjaCBmdW5jdGlvbgorICAgd29ya3Mgc2ltaWxhciB0byB0aGUgc2hlbGwgbWVjaGFuaXNtLgorCisgICAgID8gICAgIG9uZSBhcmJpdHJhcnkgZGlnaXQKKyAgICAgKiAgICAgemVybyBvciBhcmJpdHJhcnkgbWFueSBkaWdpdHMKKyAgICAgWzEyM10gb25lIG9mIHRoZSBkaWdpdHMgaW4gdGhlIGxpc3QKKyAgICAgWzEtNV0gb25lIGRpZ2l0IGJldHdlZW4gJzEnIGFuZCAnNScKKyAgICAgICAgICAgYSAnXicgYXMgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiBhIGxpc3QgaW52ZXJ0cyB0aGUgbGlzdAorCisKKyAgICJpc2RuY3RybCBzZWN1cmUgPEludGVyZmFjZU5hbWU+IG9mZiIKKyAgIFN3aXRjaCBvZmYgc2VjdXJlIG9wZXJhdGlvbiAoZGVmYXVsdCkuCisKKyAgICJpc2RuY3RybCBpaHVwIDxJbnRlcmZhY2VOYW1lPiBbb258b2ZmXSIKKyAgIFN3aXRjaCB0aGUgaGFuZy11cC10aW1lciBmb3IgaW5jb21pbmcgY2FsbHMgb24gb3Igb2ZmLgorCisgICAiaXNkbmN0cmwgZWF6IDxJbnRlcmZhY2VOYW1lPiIKKyAgIFJldHVybnMgdGhlIEVBWiBvZiBhbiBpbnRlcmZhY2UuCisKKyAgICJpc2RuY3RybCBkZWxwaG9uZSA8SW50ZXJmYWNlTmFtZT4gaW58b3V0IDxudW1iZXI+IgorICAgRGVsZXRlcyBhIG51bWJlciBmcm9tIG9uZSBvZiB0aGUgYWNjZXNzLWxpc3RzIG9mIHRoZSBpbnRlcmZhY2UuCisKKyAgICJpc2RuY3RybCBkZWxpZiA8SW50ZXJmYWNlTmFtZT4iCisgICBSZW1vdmVzIHRoZSBpbnRlcmZhY2UgKGFuZCBwb3NzaWJsZSBzbGF2ZXMpIGZyb20gdGhlIGtlcm5lbC4KKyAgIChZb3UgaGF2ZSB0byB1bnJlZ2lzdGVyIGl0IHdpdGggImlmY29uZmlnIDxJbnRlcmZhY2VOYW1lPiBkb3duIiBiZWZvcmUpLgorCisgICAiaXNkbmN0cmwgY2FsbGJhY2sgPEludGVyZmFjZU5hbWU+IFtvbnxvZmZdIgorICAgU3dpdGNoZXMgYW4gaW50ZXJmYWNlIHRvIGNhbGxiYWNrLW1vZGUuIEluIHRoaXMgbW9kZSwgYW4gaW5jb21pbmcgY2FsbAorICAgd2lsbCBiZSByZWplY3RlZCBhbmQgYWZ0ZXIgdGhpcyB0aGUgcmVtb3RlLXN0YXRpb24gd2lsbCBiZSBjYWxsZWQuIElmCisgICB5b3UgdGVzdCB0aGlzIGZlYXR1cmUgYnkgdXNpbmcgcGluZywgc29tZSByb3V0ZXJzIHdpbGwgcmUtZGlhbCB2ZXJ5CisgICBxdWlja2x5LCBzbyB0aGF0IHRoZSBjYWxsYmFjayBmcm9tIGlzZG40bGludXggbWF5IG5vdCBiZSByZWNvZ25pemVkLgorICAgSW4gdGhpcyBjYXNlIHVzZSBwaW5nIHdpdGggdGhlIG9wdGlvbiAtaSA8c2VjPiB0byBpbmNyZWFzZSB0aGUgaW50ZXJ2YWwKKyAgIGJldHdlZW4gZWNoby1wYWNrZXRzLgorCisgICAiaXNkbmN0cmwgY2JkZWxheSA8SW50ZXJmYWNlTmFtZT4gW3NlY29uZHNdIgorICAgU2V0cyB0aGUgZGVsYXkgKGRlZmF1bHQgNSBzZWMpIGJldHdlZW4gYW4gaW5jb21pbmcgY2FsbCBhbmQgc3RhcnQgb2YKKyAgIGRpYWxpbmcgd2hlbiBjYWxsYmFjayBpcyBlbmFibGVkLgorCisgICAiaXNkbmN0cmwgY2JodXAgPEludGVyZmFjZU5hbWU+IFtvbnxvZmZdIgorICAgVGhpcyBlbmFibGVzIChkZWZhdWx0KSBvciBkaXNhYmxlcyBhbiBhY3RpdmUgaGFuZ3VwIChyZWplY3QpIHdoZW4gZ2V0dGluZyBhbgorICAgaW5jb21pbmcgY2FsbCBmb3IgYW4gaW50ZXJmYWNlIHdoaWNoIGlzIGNvbmZpZ3VyZWQgZm9yIGNhbGxiYWNrLgorCisgICAiaXNkbmN0cmwgZW5jYXAgPEludGVyZmFjZU5hbWU+IDxFbmNhcFR5cGU+IgorICAgU2VsZWN0cyB0aGUgdHlwZSBvZiBwYWNrZXQtZW5jYXBzdWxhdGlvbi4gVGhlIGVuY2Fwc3VsYXRpb24gY2FuIGJlIGNoYW5nZWQKKyAgIG9ubHkgd2hpbGUgYW4gaW50ZXJmYWNlIGlzIGRvd24uCisKKyAgIEF0IHRoZSBtb21lbnQgdGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIHN1cHBvcnRlZDoKKworICAgcmF3aXAgICAgKERlZmF1bHQpIFNlbGVjdHMgcmF3LUlQLWVuY2Fwc3VsYXRpb24uIFRoaXMgbWVhbnMsIE1BQy1oZWFkZXJzCisgICAgICAgICAgICBhcmUgc3RyaXBwZWQgb2ZmLgorICAgaXAgICAgICAgSVAgd2l0aCB0eXBlLWZpZWxkLiBTYW1lIGFzIElQIGJ1dCB0aGUgdHlwZS1maWVsZCBvZiB0aGUgTUFDLWhlYWRlcgorICAgICAgICAgICAgaXMgcHJlc2VydmVkLgorICAgeDI1aWZhY2UgWC4yNSBpbnRlcmZhY2UgZW5jYXBzdWxhdGlvbiAoZmlyc3QgYnl0ZSBzZW1hbnRpY3MgYXMgZGVmaW5lZCBpbgorICAgICAgICAgICAgLi4vbmV0d29ya2luZy94MjUtaWZhY2UudHh0KS4gVXNlIHRoaXMgZm9yIHJ1bm5pbmcgdGhlIGxpbnV4CisgICAgICAgICAgICBYLjI1IG5ldHdvcmsgcHJvdG9jb2wgc3RhY2sgKEFGX1gyNSBzb2NrZXRzKSBvbiB0b3Agb2YgaXNkbi4KKyAgIGNpc2NvLWggIEEgc3BlY2lhbC1tb2RlIGZvciBjb21tdW5pY2F0aW5nIHdpdGggYSBDaXNjbywgd2hpY2ggaXMgY29uZmlndXJlZAorICAgICAgICAgICAgdG8gZG8gImhkbGMiCisgICBldGhlcm5ldCBObyBzdHJpcHBpbmcuIFBhY2tldHMgYXJlIHNlbnQgd2l0aCBmdWxsIE1BQy1oZWFkZXIuCisgICAgICAgICAgICBUaGUgRXRoZXJuZXQtYWRkcmVzcyBvZiB0aGUgaW50ZXJmYWNlIGlzIGZha2VkLCBmcm9tIGl0cworICAgICAgICAgICAgSVAtYWRkcmVzczogZmM6ZmM6aTE6aTI6aTM6aTQsIHdoZXJlIGkxLTQgYXJlIHRoZSBJUC1hZGRyLi12YWx1ZXMuCisgICBzeW5jcHBwICBTeW5jaHJvbm91cyBQUFAKKworICAgdWloZGxjICAgSERMQyB3aXRoIFVJLWZyYW1lLWhlYWRlciAoZm9yIHVzZSB3aXRoIERPUyBJU1BBLCBvcHRpb24gLWgxKQorCisKKyAgIE5PVEU6ICAgIHgyNWlmYWNlIGVuY2Fwc3VsYXRpb24gaXMgY3VycmVudGx5IGV4cGVyaW1lbnRhbC4gUGxlYXNlCisgICAgICAgICAgICByZWFkIFJFQURNRS54MjUgZm9yIGZ1cnRoZXIgZGV0YWlscworCisKKyAgIFdhdGNoaW5nIHBhY2tldHMsIHVzaW5nIHN0YW5kYXJkLXRjcGR1bXAgd2lsbCBmYWlsIGZvciBhbGwgZW5jYXBzdWxhdGlvbnMKKyAgIGV4Y2VwdCBldGhlcm5ldCBiZWNhdXNlIHRjcGR1bXAgZG9lcyBub3Qga25vdyBob3cgdG8gaGFuZGxlIHBhY2tldHMKKyAgIHdpdGhvdXQgTUFDLWhlYWRlci4gQSBwYXRjaCBmb3IgdGNwZHVtcCBpcyBpbmNsdWRlZCBpbiB0aGUgdXRpbGl0eS1wYWNrYWdlCisgICBtZW50aW9uZWQgYWJvdmUuCisKKyAgICJpc2RuY3RybCBsMl9wcm90IDxJbnRlcmZhY2VOYW1lPiA8TDItUHJvdG9jb2xOYW1lPiIKKyAgIFNlbGVjdHMgYSBsYXllci0yLXByb3RvY29sLgorICAgKFdpdGggdGhlIElDTi1kcml2ZXIgYW5kIHRoZSBIaVNheC1kcml2ZXIsICJ4NzVpIiBhbmQgImhkbGMiIGlzIGF2YWlsYWJsZS4KKyAgIFdpdGggb3RoZXIgZHJpdmVycywgIng3NXVpIiwgIng3NWJ1aSIsICJ4MjVkdGUiLCAieDI1ZGNlIiBtYXkgYmUKKyAgIHBvc3NpYmxlIHRvby4gU2VlIFJFQURNRS54MjUgZm9yIHgyNSByZWxhdGVkIGwyIHByb3RvY29scy4pCisKKyAgIGlzZG5jdHJsIGwzX3Byb3QgPEludGVyZmFjZU5hbWU+IDxMMy1Qcm90b2NvbE5hbWU+CisgICBUaGUgc2FtZSBmb3IgbGF5ZXItMy4gKEF0IHRoZSBtb21lbnQgb25seSAidHJhbnMiIGlzIGFsbG93ZWQpCisKKyAgICJpc2RuY3RybCBsaXN0IDxJbnRlcmZhY2VOYW1lPiIKKyAgIFNob3dzIGFsbCBwYXJhbWV0ZXJzIG9mIGFuIGludGVyZmFjZSBhbmQgdGhlIGNoYXJnZS1pbmZvLgorICAgVHJ5ICJhbGwiIGFzIHRoZSBpbnRlcmZhY2UgbmFtZS4KKworICAgImlzZG5jdHJsIGhhbmd1cCA8SW50ZXJmYWNlTmFtZT4iCisgICBGb3JjZXMgaGFuZ3VwIG9mIGFuIGludGVyZmFjZS4KKworICAgImlzZG5jdHJsIGJpbmQgPEludGVyZmFjZU5hbWU+IDxEcml2ZXJJZD4sPENoYW5uZWxOdW1iZXI+IFtleGNsdXNpdmVdIgorICAgSWYgeW91IGFyZSB1c2luZyBtb3JlIHRoYW4gb25lIElTRE4gY2FyZCwgaXQgaXMgc29tZXRpbWVzIG5lY2Vzc2FyeSB0bworICAgZGlhbCBvdXQgdXNpbmcgYSBzcGVjaWZpYyBjYXJkIG9yIGV2ZW4gcHJlc2VydmUgYSBzcGVjaWZpYyBjaGFubmVsIGZvcgorICAgZGlhbG91dCBvZiBhIHNwZWNpZmljIG5ldC1pbnRlcmZhY2UuIFRoaXMgY2FuIGJlIGRvbmUgd2l0aCB0aGUgYWJvdmUKKyAgIGNvbW1hbmQuIFJlcGxhY2UgPERyaXZlcklkPiBieSB3aGF0ZXZlciB5b3UgYXNzaWduZWQgd2hpbGUgbG9hZGluZyB0aGUKKyAgIG1vZHVsZS4gVGhlIDxDaGFubmVsTnVtYmVyPiBpcyBjb3VudGVkIGZyb20gemVyby4gVGhlIHVwcGVyIGxpbWl0CisgICBkZXBlbmRzIG9uIHRoZSBjYXJkIHVzZWQuIEF0IHRoZSBtb21lbnQgbm8gY2FyZCBzdXBwb3J0cyBtb3JlIHRoYW4KKyAgIDIgY2hhbm5lbHMsIHNvIHRoZSB1cHBlciBsaW1pdCBpcyBvbmUuCisKKyAgICJpc2RuY3RybCB1bmJpbmQgPEludGVyZmFjZU5hbWU+IgorICAgdW5iaW5kcyBhIHByZXZpb3VzbHkgYm91bmQgaW50ZXJmYWNlLgorCisgICAiaXNkbmN0cmwgYnVzcmVqZWN0IDxEcml2ZXJJZD4gb258b2ZmIgorICAgSWYgc3dpdGNoZWQgb24sIGlzZG40bGludXggcmVwbGllcyBhIFJFSkVDVCB0byBpbmNvbWluZyBjYWxscywgaXQKKyAgIGNhbm5vdCBtYXRjaCB0byBhbnkgY29uZmlndXJlZCBpbnRlcmZhY2UuCisgICBJZiBzd2l0Y2hlZCBvZmYsIG5vdGhpbmcgaGFwcGVucyBpbiB0aGlzIGNhc2UuCisgICBZb3Ugbm9ybWFsbHkgc2hvdWxkIE5PVCBlbmFibGUgdGhpcyBmZWF0dXJlLCBpZiB0aGUgSVNETiBhZGFwdGVyIGlzIG5vdAorICAgdGhlIG9ubHkgZGV2aWNlIGNvbm5lY3RlZCB0byB0aGUgUzAtYnVzLiBPdGhlcndpc2UgaXQgY291bGQgaGFwcGVuIHRoYXQKKyAgIGlzZG40bGludXggcmVqZWN0cyBhbiBpbmNvbWluZyBjYWxsLCB3aGljaCBiZWxvbmdzIHRvIGFub3RoZXIgZGV2aWNlIG9uCisgICB0aGUgYnVzLgorCisgICAiaXNkbmN0cmwgYWRkc2xhdmUgPEludGVyZmFjZU5hbWU+IDxTbGF2ZU5hbWU+CisgICBDcmVhdGVzIGEgc2xhdmUgaW50ZXJmYWNlIGZvciBjaGFubmVsLWJ1bmRsaW5nLiBTbGF2ZSBpbnRlcmZhY2VzIGFyZQorICAgbm90IHNlZW4gYnkgdGhlIGtlcm5lbCwgYnV0IHRoZWlyIElTRE4tcGFydCBjYW4gYmUgY29uZmlndXJlZCB3aXRoCisgICBpc2RuY3RybCBhcyB1c3VhbC4gKFBob25lIG51bWJlcnMsIEVBWi9NU04sIHRpbWVvdXRzIGV0Yy4pIElmIG1vcmUKKyAgIHRoYW4gdHdvIGNoYW5uZWxzIGFyZSB0byBiZSBidW5kbGVkLCBmZWVsIGZyZWUgdG8gY3JlYXRlIGFzIG1hbnkgYXMgeW91CisgICB3YW50LiBJbnRlcmZhY2VOYW1lIG11c3QgYmUgYSByZWFsIGludGVyZmFjZSwgTk9UIGEgc2xhdmUuIFNsYXZlIGludGVyZmFjZXMKKyAgIHN0YXJ0IGRpYWxpbmcsIGlmIHRoZSBtYXN0ZXIgaW50ZXJmYWNlIHJlc3AuIHRoZSBwcmV2aW91cyBzbGF2ZSBpbnRlcmZhY2UKKyAgIGhhcyBhIGxvYWQgb2YgbW9yZSB0aGFuIDcwMDAgY3BzLiBUaGV5IGhhbmd1cCBpZiB0aGUgbG9hZCBnb2VzIHVuZGVyIDcwMDAKKyAgIGNwcywgYWNjb3JkaW5nIHRvIHRoZWlyICJodXB0aW1lb3V0Ii1wYXJhbWV0ZXIuCisKKyAgICJpc2RuY3RybCBzZGVsYXkgPEludGVyZmFjZU5hbWU+IHNlY3MuIgorICAgVGhpcyBzZXRzIHRoZSBtaW5pbXVtIHRpbWUgYW4gSW50ZXJmYWNlIGhhcyB0byBiZSBmdWxseSBsb2FkZWQsIHVudGlsCisgICBpdCBzZW5kcyBhIGRpYWwtcmVxdWVzdCB0byBpdHMgc2xhdmUuCisKKyAgICJpc2RuY3RybCBkaWFsIDxJbnRlcmZhY2VOYW1lPiIKKyAgIEZvcmNlcyBhbiBpbnRlcmZhY2UgdG8gc3RhcnQgZGlhbGluZyBldmVuIGlmIG5vIHBhY2tldHMgYXJlIHRvIGJlCisgICB0cmFuc2ZlcnJlZC4KKworICAgImlzZG5jdHJsIG1hcHBpbmcgPERyaXZlcklkPiBNU04wLE1TTjEsTVNOMiwuLi5NU045IgorICAgVGhpcyBpbnN0YWxscyBhIG1hcHBpbmcgdGFibGUgZm9yIEVBWjwtPk1TTi1tYXBwaW5nIGZvciBhIHNpbmdsZSBsaW5lLgorICAgTWlzc2luZyBNU04ncyBoYXZlIHRvIGJlIGdpdmVuIGFzICItIiBvciBjYW4gYmUgb21pdHRlZCwgaWYgYXQgdGhlIGVuZAorICAgb2YgdGhlIGNvbW1hbmRsaW5lLgorICAgV2l0aCB0aGlzIGNvbW1hbmQsIGl0J3Mgbm93IHBvc3NpYmxlIHRvIGhhdmUgYW4gaW50ZXJmYWNlIGxpc3RlbmluZyB0bworICAgbWl4ZWQgMVRSNi0gYW5kIEV1cm8tVHlwZSBsaW5lcy4gSW4gdGhpcyBjYXNlLCB0aGUgaW50ZXJmYWNlIGhhcyB0byBiZQorICAgY29uZmlndXJlZCB0byBhIDFUUjYtdHlwZSBFQVogKG9uZSBkaWdpdCkuIFRoZSBtYXBwaW5nIGlzIGFsc28gdmFsaWQKKyAgIGZvciB0dHktZW11bGF0aW9uLiBTZWVuIGZyb20gdGhlIGludGVyZmFjZS90dHktbGV2ZWwgdGhlIG1hcHBpbmcKKyAgIENBTiBiZSB1c2VkLCBob3dldmVyIGl0J3MgcG9zc2libGUgdG8gdXNlIHNpbmdsZSB0dHkncy9pbnRlcmZhY2VzIHdpdGgKKyAgIHJlYWwgTVNOJ3MgKG1vcmUgZGlnaXRzKSBhbHNvLCBpbiB3aGljaCBjYXNlIHRoZSBtYXBwaW5nIHdpbGwgYmUgaWdub3JlZC4KKyAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKworICAgWW91IGhhdmUgYSAxVFI2LXR5cGUgbGluZSB3aXRoIGJhc2UtbnIuIDEyMzQ1NjcgYW5kIGEgRXVyby1saW5lIHdpdGgKKyAgIE1TTidzIDk4NzY1NCwgOTg3NjU1IGFuZCA5ODc2NTYuIFRoZSBEcml2ZXJJZCBmb3IgdGhlIEV1cm8tbGluZSBpcyAiRVVSTyIuCisKKyAgIGlzZG5jdHJsIG1hcHBpbmcgRVVSTyAtLDk4NzY1NCw5ODc2NTUsOTg3NjU2LC0sOTg3NjU1CisgICAuLi4KKyAgIGlzZG5jdHJsIGVheiBpc2RuMCAxICAgICAgIyBsaXN0ZW4gb24gMTIzNDU2NzEoMXRyNikgYW5kIDk4NzY1NChldXJvKQorICAgLi4uCisgICBpc2RuY3RybCBlYXogaXNkbjEgNCAgICAgICMgbGlzdGVuIG9uIDEyMzQ1Njc0KDF0cjYpIG9ubHkuCisgICAuLi4KKyAgIGlzZG5jdHJsIGVheiBpc2RuMiA5ODc2NTQgIyBsaXN0ZW4gb24gOTg3NjU0KGV1cm8pIG9ubHkuCisKKyAgIFNhbWUgc2NoZW1lIGlzIHVzZWQgd2l0aCBBVCZFLi4uICBhdCB0aGUgdHR5J3MuCisKKzYuIElmIHlvdSB3YW50IHRvIHdyaXRlIGEgbmV3IGxvdy1sZXZlbC1kcml2ZXIsIHlvdSBhcmUgd2VsY29tZS4KKyAgIFRoZSBpbnRlcmZhY2UgdG8gdGhlIGxpbmstbGV2ZWwtbW9kdWxlIGlzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBJTlRFUkZBQ0UuCisgICBJZiB0aGUgaW50ZXJmYWNlIHNob3VsZCBiZSBleHBhbmRlZCBmb3IgYW55IHJlYXNvbiwgZG9uJ3QgZG8gaXQKKyAgIG9uIHlvdXIgb3duLCBzZW5kIG1lIGEgbWFpbCBjb250YWluaW5nIHRoZSBwcm9wb3NlZCBjaGFuZ2VzIGFuZAorICAgc29tZSByZWFzb25pbmcgYWJvdXQgdGhlbS4KKyAgIElmIG90aGVyIGRyaXZlcnMgd2lsbCBub3QgYmUgYWZmZWN0ZWQsIEkgd2lsbCBpbmNsdWRlIHRoZSBjaGFuZ2VzCisgICBpbiB0aGUgbmV4dCByZWxlYXNlLgorICAgRm9yIGRldmVsb3BlcnMgb25seSwgdGhlcmUgaXMgYSBzZWNvbmQgbWFpbGluZy1saXN0LiBXcml0ZSB0byBtZQorICAgKGZyaXR6QGlzZG40bGludXguZGUpLCBpZiB5b3Ugd2FudCB0byBqb2luIHRoYXQgbGlzdC4KKworSGF2ZSBmdW4hCisKKyAtRnJpdHoKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5GQVEgYi9Eb2N1bWVudGF0aW9uL2lzZG4vUkVBRE1FLkZBUQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTZmNzk0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5GQVEKQEAgLTAsMCArMSwyNiBAQAorCitUaGUgRkFRIGZvciBpc2RuNGxpbnV4Cis9PT09PT09PT09PT09PT09PT09PT09CisKK1BsZWFzZSBub3RlIHRoYXQgdGhlcmUgaXMgYSBiaWcgRkFRIGF2YWlsYWJsZSBpbiB0aGUgaXNkbjRrLXV0aWxzLgorWW91IGZpbmQgaXQgaW46CisgaXNkbjRrLXV0aWxzL0ZBUS9pNGxmYXEuc2dtbAorCitJbiBjYXNlIHlvdSBqdXN0IHdhbnQgdG8gc2VlIHRoZSBGQVEgb25saW5lLCBvciBkb3dubG9hZCB0aGUgbmV3ZXN0IHZlcnNpb24sCit5b3UgY2FuIGhhdmUgYSBsb29rIGF0IG15IHdlYnNpdGU6CitodHRwOi8vd3d3Lm1oZXNzbGVyLmRlL2k0bGZhcS8gKHZpZXcgKyBkb3dubG9hZCkKK29yOgoraHR0cDovL3d3dy5pc2RuNGxpbnV4LmRlL2ZhcS8gKHZpZXcpCisKK0FzIHRoZSBleHRlbnNpb24gdGVsbHMsIHRoZSBGQVEgaXMgaW4gU0dNTCBmb3JtYXQsIGFuZCB5b3UgY2FuIGNvbnZlcnQgaXQKK2ludG8gdGV4dC9odG1sLy4uLiBmb3JtYXQgYnkgdXNpbmcgdGhlIHNnbWwydHh0L3NnbWwyaHRtbC8uLi4gdG9vbHMuCitBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGFsc28gZG8gYSAnY29uZmlndXJlOyBtYWtlIGFsbCcgaW4gdGhlIEZBUSBkaXJlY3RvcnkuCisKKworUGxlYXNlIGhhdmUgYSBsb29rIGF0IHRoZSBGQVEgYmVmb3JlIHBvc3RpbmcgYW55dGhpbmcgaW4gdGhlIE1haWxpbmdsaXN0LAorb3IgdGhlIG5ld3Nncm91cCEKKworCitNYXR0aGlhcyBIZXNzbGVyCitoZXNzbGVyQGlzZG40bGludXguZGUKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5IaVNheCBiL0RvY3VtZW50YXRpb24vaXNkbi9SRUFETUUuSGlTYXgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFhNTczYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaXNkbi9SRUFETUUuSGlTYXgKQEAgLTAsMCArMSw2NTkgQEAKK0hpU2F4IGlzIGEgTGludXggaGFyZHdhcmUtbGV2ZWwgZHJpdmVyIGZvciBwYXNzaXZlIElTRE4gY2FyZHMgd2l0aCBTaWVtZW5zCitjaGlwc2V0IChJU0FDX1MgMjA4NS8yMDg2LzIxODYsIEhTQ1ggU0FCIDgyNTI1KS4gSXQgaXMgYmFzZWQgb24gdGhlIFRlbGVzCitkcml2ZXIgZnJvbSBKYW4gZGVuIE91ZGVuLgorSXQgaXMgbWVhbnQgdG8gYmUgdXNlZCB3aXRoIGlzZG40bGludXgsIGFuIElTRE4gbGluay1sZXZlbCBtb2R1bGUgZm9yIExpbnV4Cit3cml0dGVuIGJ5IEZyaXR6IEVsZmVydC4KKworICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorCisKK1N1cHBvcnRlZCBjYXJkcworLS0tLS0tLS0tLS0tLS0tCisKK1RlbGVzIDguMC8xNi4wLzE2LjMgYW5kIGNvbXBhdGlibGUgb25lcworVGVsZXMgMTYuM2MKK1RlbGVzIFMwL1BDTUNJQQorVGVsZXMgUENJCitUZWxlcyBTMEJveAorQ3JlYXRpeCBTMEJveAorQ3JlYXRpeCBQblAgUzAKK0NvbXBhcSBJU0ROIFMwIElTQSBjYXJkCitBVk0gQTEgKEZyaXR6LCBUZWxlZGF0IDE1MCkKK0FWTSBGcml0eiBQQ01DSUEKK0FWTSBGcml0eiBQblAKK0FWTSBGcml0eiBQQ0kKK0VMU0EgTWljcm9saW5rIFBDQy0xNiwgUENGLCBQQ0YtUHJvLCBQQ0MtOAorRUxTQSBRdWlja3N0ZXAgMTAwMAorRUxTQSBRdWlja3N0ZXAgMTAwMFBDSQorRUxTQSBRdWlja3N0ZXAgMzAwMCAoc2FtZSBzZXR0aW5ncyBhcyBRUzEwMDApCitFTFNBIFF1aWNrc3RlcCAzMDAwUENJCitFTFNBIFBDTUNJQQorSVRLIGl4MS1taWNybyBSZXYuMgorRWljb24gRGl2YSAyLjAgSVNBIGFuZCBQQ0kgKFMwIGFuZCBVIGludGVyZmFjZSwgbm8gUFJPIHZlcnNpb24pCitFaWNvbiBEaXZhIDIuMDEgSVNBIGFuZCBQQ0kKK0VpY29uIERpdmEgMi4wMiBQQ0kKK0VpY29uIERpdmEgUGljY29sYQorQVNVU0NPTSBORVRXT1JLIElOQy4gSVNETkxpbmsgMTI4SyBQQyBhZGFwdGVyIChvcmRlciBjb2RlIEktSU4xMDAtU1QtRCkKK0R5bmFsaW5rIElTNjRQSCAoT0VNIHZlcnNpb24gb2YgQVNVU0NPTSBORVRXT1JLIElOQy4gSVNETkxpbmsgMTI4SyBhZGFwdGVyKQorUENCSVQtRFAgKE9FTSB2ZXJzaW9uIG9mIEFTVVNDT00gTkVUV09SSyBJTkMuIElTRE5MaW5rKQorSEZDLTJCUzAgYmFzZWQgY2FyZHMgKFRlbGVJbnQgU0ExKQorU2VkbGJhdWVyIFNwZWVkIENhcmQgKFNwZWVkIFdpbiwgVGVsZWRhdCAxMDAsIFBDSSwgRmF4KykKK1NlZGxiYXVlciBTcGVlZCBTdGFyL1NwZWVkIFN0YXIyIChQQ01DSUEpCitTZWRsYmF1ZXIgSVNETi1Db250cm9sbGVyIFBDLzEwNAorVVNSIFNwb3J0c3RlciBpbnRlcm5hbCBUQSAoY29tcGF0aWJsZSBTdG9sbG1hbm4gdGluYS1wcCBWMykKK1VTUiBpbnRlcm5hbCBUQSBQQ0kKK2l0aCBLb21tdW5pa2F0aW9uc3RlY2huaWsgR21iSCBNSUMgMTYgSVNBIGNhcmQKK1RyYXZlcnNlIFRlY2hub2xvZ2llIE5FVGpldCBQQ0kgUzAgY2FyZCBhbmQgTkVUc3BpZGVyIFUgY2FyZAorT3Zpc2xpbmsgSVNETiBzYzEwMC1wIGNhcmQgKE5FVGpldCBkcml2ZXIpCitEci4gTmV1aGF1cyBOaWNjeSBQblAvUENJCitTaWVtZW5zIEktU3VyZiAxLjAKK1NpZW1lbnMgSS1TdXJmIDIuMCAod2l0aCBJUEFDLCB0cnkgdHlwZSAxMiBhc3VzY29tKSAKK0FDRVIgUDEwCitIU1QgU2FwaGlyCitCZXJrb20gVGVsZWtvbSBBNFQKK1NjaXRlbCBRdWFkcm8KK0dhemVsIElTRE4gY2FyZHMKK0hGQy1QQ0kgYmFzZWQgY2FyZHMKK1dpbmJvbmQgVzY2OTIgYmFzZWQgY2FyZHMKK0hGQy1TKywgSEZDLVNQL1BDTUNJQSBjYXJkcworZm9ybXVsYS1uIGVudGVybm93CitHZXJkZXMgUG93ZXIgSVNETgorCitOb3RlOiBQQ0YsIFBDRi1Qcm86IHVwIHRvIG5vdywgb25seSB0aGUgSVNETiBwYXJ0IGlzIHN1cHBvcnRlZAorICAgICAgUENDLTg6IG5vdCB0ZXN0ZWQgeWV0CisgICAgICBFaWNvbi5EaWVobCBEaXZhIFUgaW50ZXJmYWNlIG5vdCB0ZXN0ZWQKKworSWYgeW91IGtub3cgb3RoZXIgcGFzc2l2ZSBjYXJkcyB3aXRoIHRoZSBTaWVtZW5zIGNoaXBzZXQsIHBsZWFzZSBsZXQgbWUga25vdy4KK1lvdSBjYW4gY29tYmluZSBhbnkgY2FyZCwgaWYgdGhlcmUgaXMgbm8gY29uZmxpY3QgYmV0d2VlbiB0aGUgcmVzb3VyY2VzCisoaW8sIG1lbSwgaXJxKS4KKworCitDb25maWd1cmluZyB0aGUgZHJpdmVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBIaVNheCBkcml2ZXIgY2FuIGVpdGhlciBiZSBidWlsdCBkaXJlY3RseSBpbnRvIHRoZSBrZXJuZWwgb3IgYXMgYSBtb2R1bGUuCitJdCBjYW4gYmUgY29uZmlndXJlZCB1c2luZyB0aGUgY29tbWFuZCBsaW5lIGZlYXR1cmUgd2hpbGUgbG9hZGluZyB0aGUga2VybmVsCit3aXRoIExJTE8gb3IgTE9BRExJTiBvciwgaWYgYnVpbHQgYXMgYSBtb2R1bGUsIHVzaW5nIGluc21vZC9tb2Rwcm9iZSB3aXRoCitwYXJhbWV0ZXJzLgorVGhlcmUgaXMgYWxzbyBzb21lIGNvbmZpZyBuZWVkZWQgYmVmb3JlIHlvdSBjb21waWxlIHRoZSBrZXJuZWwgYW5kL29yCittb2R1bGVzLiBJdCBpcyBpbmNsdWRlZCBpbiB0aGUgbm9ybWFsICJtYWtlIFttZW51XWNvbmZpZyIgdGFyZ2V0IGF0IHRoZQora2VybmVsLiBEb24ndCBmb3JnZXQgaXQsIGVzcGVjaWFsbHkgdG8gc2VsZWN0IHRoZSByaWdodCBELWNoYW5uZWwgcHJvdG9jb2wuCisKK1BsZWFzZSBub3RlOiBJbiBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgSGlTYXggZHJpdmVyLCBhbGwgUG5QIGNhcmRzCituZWVkZWQgdG8gYmUgY29uZmlndXJlZCB3aXRoIGlzYXBucCBhbmQgd29ya2VkIG9ubHkgd2l0aCB0aGUgSGlTYXgKK2RyaXZlciB1c2VkIGFzIGEgbW9kdWxlLgorCitJbiB0aGUgY3VycmVudCB2ZXJzaW9uLCBIaVNheCB3aWxsIGF1dG9tYXRpY2FsbHkgdXNlIHRoZSBpbi1rZXJuZWwKK0lTQVBuUCBzdXBwb3J0LCBwcm92aWRlZCB5b3Ugc2VsZWN0ZWQgaXQgZHVyaW5nIGtlcm5lbCBjb25maWd1cmF0aW9uCisoQ09ORklHX0lTQVBOUCksIGlmIHlvdSBkb24ndCBnaXZlIHRoZSBpbz0sIGlycT0gY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMuCisKK1RoZSBhZmZlY3RlZCBjYXJkIHR5cGVzIGFyZTogNCw3LDEyLDE0LDE5LDI3LTMwCisKK2EpIHdoZW4gYnVpbHQgYXMgYSBtb2R1bGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaW5zbW9kL21vZHByb2JlICBoaXNheC5vIFwKKyAgaW89aW9iYXNlIGlycT1JUlEgbWVtPW1lbWJhc2UgdHlwZT1jYXJkX3R5cGUgXAorICBwcm90b2NvbD1EX2NoYW5uZWxfcHJvdG9jb2wgaWQ9aWRzdHJpbmcKKworb3IsIGlmIHNldmVyYWwgY2FyZHMgYXJlIGluc3RhbGxlZDoKKworaW5zbW9kL21vZHByb2JlIGhpc2F4Lm8gXAorICBpbz1pb2Jhc2UxLGlvYmFzZTIsLi4uIGlycT1JUlExLElSUTIsLi4uIG1lbT1tZW1iYXNlMSxtZW1iYXNlMiwuLi4gXAorICB0eXBlPWNhcmRfdHlwZTEsY2FyZF90eXBlMiwuLi4gXAorICBwcm90b2NvbD1EX2NoYW5uZWxfcHJvdG9jb2wxLERfY2hhbm5lbF9wcm90b2NvbDIsLi4uIFwKKyAgaWQ9aWRzdHJpbmcxJWlkc3RyaW5nMiAuLi4KKword2hlcmUgImlvYmFzZU4iIHJlcHJlc2VudHMgdGhlIEkvTyBiYXNlIGFkZHJlc3Mgb2YgdGhlIE50aCBjYXJkLCAibWVtYmFzZU4iCit0aGUgbWVtb3J5IGJhc2UgYWRkcmVzcyBvZiB0aGUgTnRoIGNhcmQsIGV0Yy4KKworVGhlIHJlYXNvbiBmb3IgdGhlIGRlbGltaXRlciAiJSIgYmVpbmcgdXNlZCBpbiB0aGUgaWRzdHJpbmdzIGlzIHRoYXQgIiwiCit3b24ndCB3b3JrIHdpdGggdGhlIGN1cnJlbnQgbW9kdWxlcyBwYWNrYWdlLgorCitUaGUgcGFyYW1ldGVycyBtYXkgYmUgc3BlY2lmaWVkIGluIGFueSBvcmRlci4gRm9yIGV4YW1wbGUsIHRoZSAiaW8iCitwYXJhbWV0ZXIgbWF5IHByZWNlZGUgdGhlICJpcnEiIHBhcmFtZXRlciwgb3IgdmljZSB2ZXJzYS4gSWYgc2V2ZXJhbAorY2FyZHMgYXJlIGluc3RhbGxlZCwgdGhlIG9yZGVyaW5nIHdpdGhpbiB0aGUgY29tbWEgc2VwYXJhdGVkIHBhcmFtZXRlcgorbGlzdHMgbXVzdCBvZiBjb3Vyc2UgYmUgY29uc2lzdGVudC4KKworT25seSBwYXJhbWV0ZXJzIGFwcGxpY2FibGUgdG8gdGhlIGNhcmQgdHlwZSBuZWVkIHRvIGJlIHNwZWNpZmllZC4gRm9yCitleGFtcGxlLCB0aGUgVGVsZXMgMTYuMyBjYXJkIGlzIG5vdCBtZW1vcnktbWFwcGVkLCBzbyB0aGUgIm1lbSIKK3BhcmFtZXRlciBtYXkgYmUgb21pdHRlZCBmb3IgdGhpcyBjYXJkLiBTb21ldGltZXMgaXQgbWF5IGJlIG5lY2Vzc2FyeQordG8gc3BlY2lmeSBhIGR1bW15IHBhcmFtZXRlciwgaG93ZXZlci4gVGhpcyBpcyB0aGUgY2FzZSB3aGVuIHRoZXJlIGlzCithIGNhcmQgb2YgYSBkaWZmZXJlbnQgdHlwZSBsYXRlciBpbiB0aGUgbGlzdCB0aGF0IG5lZWRzIGEgcGFyYW1ldGVyCit3aGljaCB0aGUgcHJlY2VkaW5nIGNhcmQgZG9lcyBub3QuIEZvciBpbnN0YW5jZSwgaWYgYSBUZWxlcyAxNi4wIGNhcmQKK2lzIGxpc3RlZCBhZnRlciBhIFRlbGVzIDE2LjMgY2FyZCwgYSBkdW1teSBtZW1vcnkgYmFzZSBwYXJhbWV0ZXIgb2YgMAorbXVzdCBiZSBzcGVjaWZpZWQgZm9yIHRoZSAxNi4zLiBJbnN0ZWFkIG9mIGEgZHVtbXkgdmFsdWUsIHRoZSBwYXJhbWV0ZXIKK2NhbiBhbHNvIGJlIHNraXBwZWQgYnkgc2ltcGx5IG9taXR0aW5nIHRoZSB2YWx1ZS4gRm9yIGV4YW1wbGU6CittZW09LDB4ZDAwMDAuIFNlZSBleGFtcGxlIDYgYmVsb3cuCisKK1RoZSBwYXJhbWV0ZXIgZm9yIHRoZSBELUNoYW5uZWwgcHJvdG9jb2wgbWF5IGJlIG9taXR0ZWQgaWYgeW91IHNlbGVjdGVkIHRoZQorY29ycmVjdCBvbmUgZHVyaW5nIGtlcm5lbCBjb25maWcuIFZhbGlkIHZhbHVlcyBhcmUgIjEiIGZvciBHZXJtYW4gMVRSNiwKKyIyIiBmb3IgRURTUzEgKEV1cm8gSVNETiksICIzIiBmb3IgbGVhc2VkIGxpbmVzIChubyBELUNoYW5uZWwpIGFuZCAiNCIKK2ZvciBVUyBOSTEuCitXaXRoIFVTIE5JMSB5b3UgaGF2ZSB0byBpbmNsdWRlIHlvdXIgU1BJRCBpbnRvIHRoZSBNU04gc2V0dGluZyBpbiB0aGUgZm9ybQorPE1TTj46PFNQSUQ+IGZvciBleGFtcGxlICh5b3VyIHBob25lbnVtYmVyIGlzIDEyMzQgeW91ciBTUElEIDU2NzgpOgorQVQmRTEyMzQ6NTY3OCAgICAgICAgICAgICAgICAgICAgICAgb24gdHR5SSBpbnRlcmZhY2VzCitpc2RuY3RybCBlYXogaXBwcDAgMTIzNDo1Njc4ICAgICAgICBvbiBuZXR3b3JrIGRldmljZXMKKworVGhlIENyZWF0aXgvVGVsZXMgUG5QIGNhcmRzIHVzZSBpbzE9IGFuZCBpbzI9IGluc3RlYWQgb2YgaW89IGZvciBzcGVjaWZ5aW5nCit0aGUgSS9PIGFkZHJlc3NlcyBvZiB0aGUgSVNBQyBhbmQgSFNDWCBjaGlwcywgcmVzcGVjdGl2ZWx5LgorCitDYXJkIHR5cGVzOgorCisgICAgVHlwZSAgICAgICAgICAgICAgICBSZXF1aXJlZCBwYXJhbWV0ZXJzIChpbiBhZGRpdGlvbiB0byB0eXBlIGFuZCBwcm90b2NvbCkKKworICAgIDEgICBUZWxlcyAxNi4wICAgICAgICAgICAgICAgaXJxLCBtZW0sIGlvCisgICAgMiAgIFRlbGVzICA4LjAgICAgICAgICAgICAgICBpcnEsIG1lbQorICAgIDMgICBUZWxlcyAxNi4zIChub24gUG5QKSAgICAgaXJxLCBpbworICAgIDQgICBDcmVhdGl4L1RlbGVzIFBuUCAgICAgICAgaXJxLCBpbzAgKElTQUMpLCBpbzEgKEhTQ1gpCisgICAgNSAgIEFWTSBBMSAoRnJpdHopICAgICAgICAgICBpcnEsIGlvCisgICAgNiAgIEVMU0EgUENDL1BDRiBjYXJkcyAgICAgICBpbyBvciBub3RoaW5nIGZvciBhdXRvZGV0ZWN0ICh0aGUgaW9iYXNlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZCBvbmx5IGlmIHlvdSBoYXZlIG1vcmUgdGhhbiBvbmUgRUxTQQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZCBpbiB5b3VyIFBDKQorICAgIDcgICBFTFNBIFF1aWNrc3RlcCAxMDAwICAgICAgaXJxLCBpbyAgKGZyb20gaXNhcG5wIHNldHVwKQorICAgIDggICBUZWxlcyAxNi4zIFBDTUNJQSAgICAgCSBpcnEsIGlvCisgICAgOSAgIElUSyBpeDEtbWljcm8gUmV2LjIgICAgICBpcnEsIGlvCisgICAxMCAgIEVMU0EgUENNQ0lBCQkgaXJxLCBpbyAgKHNldCB3aXRoIGNhcmQgbWFuYWdlcikKKyAgIDExICAgRWljb24uRGllaGwgRGl2YSBJU0EgUG5QIGlycSwgaW8KKyAgIDExICAgRWljb24uRGllaGwgRGl2YSBQQ0kgICAgIG5vIHBhcmFtZXRlcgorICAgMTIgICBBU1VTIENPTSBJU0ROTGluayAgICAgICAgaXJxLCBpbyAgKGZyb20gaXNhcG5wIHNldHVwKQorICAgMTMgICBIRkMtMkJTMCBiYXNlZCBjYXJkcyAgICAgaXJxLCBpbworICAgMTQgICBUZWxlcyAxNi4zYyBQblAgICAgICAgICAgaXJxLCBpbworICAgMTUgICBTZWRsYmF1ZXIgU3BlZWQgQ2FyZCAgICAgaXJxLCBpbworICAgMTUgICBTZWRsYmF1ZXIgUEMvMTA0ICAgICAgICAgaXJxLCBpbworICAgMTUgICBTZWRsYmF1ZXIgU3BlZWQgUENJCSBubyBwYXJhbWV0ZXIKKyAgIDE2ICAgVVNSIFNwb3J0c3RlciBpbnRlcm5hbCAgIGlycSwgaW8KKyAgIDE3ICAgTUlDIGNhcmQgICAgICAgICAgICAgICAgIGlycSwgaW8KKyAgIDE4ICAgRUxTQSBRdWlja3N0ZXAgMTAwMFBDSSAgIG5vIHBhcmFtZXRlcgorICAgMTkgICBDb21wYXEgSVNETiBTMCBJU0EgY2FyZCAgaXJxLCBpbzAsIGlvMSwgaW8gKGZyb20gaXNhcG5wIHNldHVwIGlvPUlPMikKKyAgIDIwICAgTkVUamV0IFBDSSBjYXJkICAgICAgICAgIG5vIHBhcmFtZXRlcgorICAgMjEgICBUZWxlcyBQQ0kgICAgICAgICAgICAgICAgbm8gcGFyYW1ldGVyCisgICAyMiAgIFNlZGxiYXVlciBTcGVlZCBTdGFyIChQQ01DSUEpIGlycSwgaW8gKHNldCB3aXRoIGNhcmQgbWFuYWdlcikKKyAgIDI0ICAgRHIuIE5ldWhhdXMgTmljY3kgUG5QICAgIGlycSwgaW8wLCBpbzEgKGZyb20gaXNhcG5wIHNldHVwKQorICAgMjQgICBEci4gTmV1aGF1cyBOaWNjeSBQQ0kgICAgbm8gcGFyYW1ldGVyCisgICAyNSAgIFRlbGVzIFMwQm94ICAgICAgICAgICAgICBpcnEsIGlvIChvZiB0aGUgdXNlZCBscHQgcG9ydCkKKyAgIDI2ICAgQVZNIEExIFBDTUNJQSAoRnJpdHohKSAgIGlycSwgaW8gKHNldCB3aXRoIGNhcmQgbWFuYWdlcikKKyAgIDI3ICAgQVZNIFBuUCAoRnJpdHohUG5QKSAgICAgIGlycSwgaW8gIChmcm9tIGlzYXBucCBzZXR1cCkKKyAgIDI3ICAgQVZNIFBDSSAoRnJpdHohUENJKSAgICAgIG5vIHBhcmFtZXRlcgorICAgMjggICBTZWRsYmF1ZXIgU3BlZWQgRmF4KyAgICAgaXJxLCBpbyAoZnJvbSBpc2FwbnAgc2V0dXApCisgICAyOQlTaWVtZW5zIEktU3VyZiAxLjAgICAgICAgaXJxLCBpbywgbWVtb3J5IChmcm9tIGlzYXBucCBzZXR1cCkgICAKKyAgIDMwCUFDRVIgUDEwICAgICAgICAgICAgICAgICBpcnEsIGlvIChmcm9tIGlzYXBucCBzZXR1cCkgICAKKyAgIDMxCUhTVCBTYXBoaXIgICAgICAgICAgICAgICBpcnEsIGlvCisgICAzMglUZWxla29tIEE0VCAgICAgICAgICAgICAgbm9uZQorICAgMzMJU2NpdGVsIFF1YWRybwkJIHN1YmNvbnRyb2xsZXIgKDQqUzAsIHN1YmN0cmwgMS4uLjQpCisgICAzNAlHYXplbCBJU0ROIGNhcmRzIChJU0EpICAgaXJxLGlvCisgICAzNAlHYXplbCBJU0ROIGNhcmRzIChQQ0kpICAgbm9uZQorICAgMzUJSEZDIDJCRFMwIFBDSSAgICAgICAgICAgIG5vbmUKKyAgIDM2CVc2NjkyIGJhc2VkIFBDSSBjYXJkcyAgICBub25lCisgICAzNwlIRkMgMkJEUzAgUyssIFNQICAgICAgICAgaXJxLGlvIAorICAgMzgJTkVUc3BpZGVyIFUgUENJIGNhcmQgICAgIG5vbmUKKyAgIDM5CUhGQyAyQkRTMCBTUC9QQ01DSUEgICAgICBpcnEsaW8gKHNldCB3aXRoIGNhcmRtZ3IpCisgICA0MCAgIGhvdHBsdWcgaW50ZXJmYWNlCisgICA0MSAgIEZvcm11bGEtbiBlbnRlcjpub3cgUENJICBub25lCisKK0F0IHRoZSBtb21lbnQgSVJRIHNoYXJpbmcgaXMgb25seSBwb3NzaWJsZSB3aXRoIFBDSSBjYXJkcy4gUGxlYXNlIG1ha2Ugc3VyZQordGhhdCB5b3VyIElSUSBpcyBmcmVlIGFuZCBlbmFibGVkIGZvciBJU0EgdXNlLgorCisKK0V4YW1wbGVzIGZvciBtb2R1bGUgbG9hZGluZworCisxLiBUZWxlcyAxNi4zLCBFdXJvIElTRE4sIEkvTyBiYXNlIDI4MCBoZXgsIElSUSAxMAorICAgbW9kcHJvYmUgaGlzYXggdHlwZT0zIHByb3RvY29sPTIgaW89MHgyODAgaXJxPTEwCisKKzIuIFRlbGVzIDE2LjAsIDFUUjYgSVNETiwgSS9PIGJhc2UgZDgwIGhleCwgSVJRIDUsIE1lbW9yeSBkMDAwMCBoZXgKKyAgIG1vZHByb2JlIGhpc2F4IHByb3RvY29sPTEgdHlwZT0xIGlvPTB4ZDgwIG1lbT0weGQwMDAwIGlycT01CisKKzMuIEZyaXR6Y2FyZCwgRXVybyBJU0ROLCBJL08gYmFzZSAzNDAgaGV4LCBJUlEgMTAgYW5kIEVMU0EgUENGLCBFdXJvIElTRE4KKyAgIG1vZHByb2JlIGhpc2F4IHR5cGU9NSw2IHByb3RvY29sPTIsMiBpbz0weDM0MCBpcnE9MTAgaWQ9RnJpdHolRWxzYQorCis0LiBBbnkgRUxTQSBQQ0MvUENGIGNhcmQsIEV1cm8gSVNETgorICAgbW9kcHJvYmUgaGlzYXggdHlwZT02IHByb3RvY29sPTIKKworNS4gVGVsZXMgMTYuMyBQblAsIEV1cm8gSVNETiwgd2l0aCBpc2FwbnAgY29uZmlndXJlZAorICAgaXNhcG5wIGNvbmZpZzogIChJTlQgMCAoSVJRIDEwIChNT0RFICtFKSkpCisgCQkgICAoSU8gMCAoQkFTRSAweDA1ODApKQorICAgICAgICAgICAgICAgICAgIChJTyAxIChCQVNFIDB4MDE4MCkpCisgICBtb2Rwcm9iZSBoaXNheCB0eXBlPTQgcHJvdG9jb2w9MiBpcnE9MTAgaW8wPTB4NTgwIGlvMT0weDE4MAorCisgICBJbiB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIEhpU2F4LCB5b3UgY2FuIGluc3RlYWQgc2ltcGx5IHVzZQorCisgICBtb2Rwcm9iZSBoaXNheCB0eXBlPTQgcHJvdG9jb2w9MgorCisgICBpZiB5b3UgY29uZmlndXJlZCB5b3VyIGtlcm5lbCBmb3IgSVNBUG5QLiBEb24ndCBydW4gaXNhcG5wIGluCisgICB0aGlzIGNhc2UhCisKKzYuIFRlbGVzIDE2LjMsIEV1cm8gSVNETiwgSS9PIGJhc2UgMjgwIGhleCwgSVJRIDEyIGFuZAorICAgVGVsZXMgMTYuMCwgMVRSNiwgSVJRIDUsIE1lbW9yeSBkMDAwMCBoZXgKKyAgIG1vZHByb2JlIGhpc2F4IHR5cGU9MywxIHByb3RvY29sPTIsMSBpbz0weDI4MCBtZW09MCwweGQwMDAwCisKKyAgIFBsZWFzZSBub3RlIHRoZSBkdW1teSAwIG1lbW9yeSBhZGRyZXNzIGZvciB0aGUgVGVsZXMgMTYuMywgdXNlZCBhcyBhCisgICBwbGFjZWhvbGRlciBhcyBkZXNjcmliZWQgYWJvdmUsIGluIHRoZSBsYXN0IGV4YW1wbGUuCisKKzcuIFRlbGVzIFBDTUNJQSwgRXVybyBJU0ROLCBJL08gYmFzZSAxODAgaGV4LCBJUlEgMTUgKGRlZmF1bHQgdmFsdWVzKQorICAgbW9kcHJvYmUgaGlzYXggdHlwZT04IHByb3RvY29sPTIgaW89MHgxODAgaXJxPTE1CisKKworYikgdXNpbmcgTElMTy9MT0FETElOLCB3aXRoIHRoZSBkcml2ZXIgY29tcGlsZWQgZGlyZWN0bHkgaW50byB0aGUga2VybmVsCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaGlzYXg9dHlwMSxkcDEscGFfMSxwYl8xLHBjXzFbLHR5cDIsZHAyLHBhXzIgLi4uIFwKKyAgICAgIHR5cG4sZHBuLHBhX24scGJfbixwY19uXVssaWRzdHJpbmcxWyxpZHN0cmluZzIsLi4uLGlkc3RyaW5nbl1dCisKK3doZXJlCisgICAgIHR5cDEgPSB0eXBlIG9mIDFzdCBjYXJkIChkZWZhdWx0IGRlcGVuZHMgb24ga2VybmVsIHNldHRpbmdzKQorICAgICBkcDEgID0gRC1DaGFubmVsIHByb3RvY29sIG9mIDFzdCBjYXJkLiAxPTFUUjYsIDI9RURTUzEsIDM9bGVhc2VkCisgICAgIHBhXzEgPSAxc3QgcGFyYW1ldGVyIChkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdGhlIGNhcmQpCisgICAgIHBiXzEgPSAybmQgcGFyYW1ldGVyICggICAgIiAgICAgIiAgICIgICAiICAgIiAgICIgICAiICApCisgICAgIHBjXzEgPSAzcmQgcGFyYW1ldGVyICggICAgIiAgICAgIiAgICIgICAiICAgIiAgICIgICAiICApCisKKyAgICAgdHlwMixkcDIscGFfMixwYl8yLHBjXzIgPSBQYXJhbWV0ZXJzIG9mIHRoZSBzZWNvbmQgY2FyZCAoZGVmYXVsdHM6IG5vbmUpCisgICAgIHR5cG4sZHBuLHBhX24scGJfbixwY19uID0gUGFyYW1ldGVycyBvZiB0aGUgbid0aCBjYXJkICh1cCB0byAxNiBjYXJkcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCkKKworICAgICBpZHN0cmluZyA9IERyaXZlciBJRCBmb3IgYWNjZXNzaW5nIHRoZSBwYXJ0aWN1bGFyIGNhcmQgd2l0aCB1dGlsaXR5CisgICAgICAgICAgICAgICAgcHJvZ3JhbXMgYW5kIGZvciBpZGVudGlmaWNhdGlvbiB3aGVuIHVzaW5nIGEgbGluZSBtb25pdG9yCisgICAgICAgICAgICAgICAgKGRlZmF1bHQ6ICJIaVNheCIpCisKKyAgICAgICAgICAgICAgICBOb3RlOiB0aGUgSUQgc3RyaW5nIG11c3Qgc3RhcnQgd2l0aCBhbiBhbHBoYWJldGljYWwgY2hhcmFjdGVyIQorCitDYXJkIHR5cGVzOgorCit0eXBlCisgICAgMSAJVGVsZXMgMTYuMCAgICAgCSAgICAgICAgcGE9aXJxICBwYj1tZW1iYXNlICBwYz1pb2Jhc2UKKyAgICAyIAlUZWxlcyAgOC4wICAgICAgICAgICAgICBwYT1pcnEgIHBiPW1lbWJhc2UKKyAgICAzIAlUZWxlcyAxNi4zICAgICAgICAgICAgICBwYT1pcnEgIHBiPWlvYmFzZQorICAgIDQgCUNyZWF0aXgvVGVsZXMgUE5QICAgICAJT05MWSBXT1JLUyBBUyBBIE1PRFVMRSAhCisgICAgNSAJQVZNIEExIChGcml0eikgICAgICAgICAgcGE9aXJxICBwYj1pb2Jhc2UKKyAgICA2IAlFTFNBIFBDQy9QQ0YgY2FyZHMgICAgICBwYT1pb2Jhc2Ugb3Igbm90aGluZyBmb3IgYXV0b2RldGVjdAorICAgIDcgICBFTFNBIFF1aWNrc3RlcCAxMDAwICAgICBPTkxZIFdPUktTIEFTIEEgTU9EVUxFICEKKyAgICA4ICAgVGVsZXMgUzAgUENNQ0lBICAgICAgICAgcGE9aXJxICBwYj1pb2Jhc2UKKyAgICA5ICAgSVRLIGl4MS1taWNybyBSZXYuMiAgICAgcGE9aXJxICBwYj1pb2Jhc2UKKyAgIDEwICAgRUxTQSBQQ01DSUEgICAgICAgICAgICAgcGE9aXJxLCBwYj1pbyAgKHNldCB3aXRoIGNhcmQgbWFuYWdlcikKKyAgIDExICAgRWljb24uRGllaGwgRGl2YSBJU0FQblAgT05MWSBXT1JLUyBBUyBBIE1PRFVMRSAhCisgICAxMSAgIEVpY29uLkRpZWhsIERpdmEgUENJICAgIG5vIHBhcmFtZXRlcgorICAgMTIgICBBU1VTIENPTSBJU0ROTGluayAgICAgICBPTkxZIFdPUktTIEFTIEEgTU9EVUxFICEKKyAgIDEzCUhGQy0yQlMwIGJhc2VkIGNhcmRzICAgIHBhPWlycSAgcGI9aW8KKyAgIDE0ICAgVGVsZXMgMTYuM2MgUG5QICAgICAgICAgT05MWSBXT1JLUyBBUyBBIE1PRFVMRSAhCisgICAxNQlTZWRsYmF1ZXIgU3BlZWQgQ2FyZCAgICBwYT1pcnEgIHBiPWlvIChTcGVlZCBXaW4gb25seSBhcyBtb2R1bGUgISkKKyAgIDE1ICAgU2VkbGJhdWVyIFBDLzEwNCAgICAgICAgcGE9aXJxICBwYj1pbworICAgMTUgICBTZWRsYmF1ZXIgU3BlZWQgUENJCW5vIHBhcmFtZXRlcgorICAgMTYgICBVU1IgU3BvcnRzdGVyIGludGVybmFsICBwYT1pcnEgIHBiPWlvCisgICAxNyAgIE1JQyBjYXJkICAgICAgICAgICAgICAgIHBhPWlycSAgcGI9aW8KKyAgIDE4ICAgRUxTQSBRdWlja3N0ZXAgMTAwMFBDSSAgbm8gcGFyYW1ldGVyCisgICAxOSAgIENvbXBhcSBJU0ROIFMwIElTQSBjYXJkIE9OTFkgV09SS1MgQVMgQSBNT0RVTEUgIQorICAgMjAgICBORVRqZXQgUENJIGNhcmQgICAgICAgICBubyBwYXJhbWV0ZXIKKyAgIDIxICAgVGVsZXMgUENJICAgICAgICAgICAgICAgbm8gcGFyYW1ldGVyCisgICAyMiAgIFNlZGxiYXVlciBTcGVlZCBTdGFyIChQQ01DSUEpICBwYT1pcnEsIHBiPWlvICAoc2V0IHdpdGggY2FyZCBtYW5hZ2VyKQorICAgMjQgICBEci4gTmV1aGF1cyBOaWNjeSBQblAgICBPTkxZIFdPUktTIEFTIEEgTU9EVUxFICEKKyAgIDI0ICAgRHIuIE5ldWhhdXMgTmljY3kgUENJICAgbm8gcGFyYW1ldGVyCisgICAyNSAgIFRlbGVzIFMwQm94ICAgICAgICAgICAgIHBhPWlycSwgcGI9aW8gKG9mIHRoZSB1c2VkIGxwdCBwb3J0KQorICAgMjYgICBBVk0gQTEgUENNQ0lBIChGcml0eiEpICBwYT1pcnEsIHBiPWlvIChzZXQgd2l0aCBjYXJkIG1hbmFnZXIpCisgICAyNyAgIEFWTSBQblAgKEZyaXR6IVBuUCkgICAgIE9OTFkgV09SS1MgQVMgQSBNT0RVTEUgIQorICAgMjcgICBBVk0gUENJIChGcml0eiFQQ0kpICAgICBubyBwYXJhbWV0ZXIKKyAgIDI4ICAgU2VkbGJhdWVyIFNwZWVkIEZheCsgICAgT05MWSBXT1JLUyBBUyBBIE1PRFVMRSAhCisgICAyOQlTaWVtZW5zIEktU3VyZiAxLjAgICAgICBPTkxZIFdPUktTIEFTIEEgTU9EVUxFICEKKyAgIDMwCUFDRVIgUDEwICAgICAgICAgICAgICAgIE9OTFkgV09SS1MgQVMgQSBNT0RVTEUgIQorICAgMzEJSFNUIFNhcGhpciAgICAgICAgICAgICAgcGE9aXJxLCBwYj1pbworICAgMzIJVGVsZWtvbSBBNFQgICAgICAgICAgICAgbm8gcGFyYW1ldGVyCisgICAzMwlTY2l0ZWwgUXVhZHJvCQlzdWJjb250cm9sbGVyICg0KlMwLCBzdWJjdHJsIDEuLi40KQorICAgMzQJR2F6ZWwgSVNETiBjYXJkcyAoSVNBKSAgcGE9aXJxLCBwYj1pbworICAgMzQJR2F6ZWwgSVNETiBjYXJkcyAoUENJKSAgbm8gcGFyYW1ldGVyCisgICAzNQlIRkMgMkJEUzAgUENJICAgICAgICAgICBubyBwYXJhbWV0ZXIKKyAgIDM2CVc2NjkyIGJhc2VkIFBDSSBjYXJkcyAgIG5vbmUKKyAgIDM3CUhGQyAyQkRTMCBTKyxTUC9QQ01DSUEgIE9OTFkgV09SS1MgQVMgQSBNT0RVTEUgIQorICAgMzgJTkVUc3BpZGVyIFUgUENJIGNhcmQgICAgbm9uZQorICAgMzkJSEZDIDJCRFMwIFNQL1BDTUNJQSAgICAgT05MWSBXT1JLUyBBUyBBIE1PRFVMRSAhCisgICA0MCAgIGhvdHBsdWcgaW50ZXJmYWNlCU9OTFkgV09SS1MgQVMgQSBNT0RVTEUgIQorICAgNDEgICBGb3JtdWxhLW4gZW50ZXI6bm93IFBDSSBub25lCisKK1J1bm5pbmcgdGhlIGRyaXZlcgorLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doZW4geW91IGluc21vZCBpc2RuLm8gYW5kIGhpc2F4Lm8gKG9yIHdpdGggdGhlIGluLWtlcm5lbCB2ZXJzaW9uLCBkdXJpbmcKK2Jvb3QgdGltZSksIGEgZmV3IGxpbmVzIHNob3VsZCBhcHBlYXIgaW4geW91ciBzeXNsb2cuIExvb2sgZm9yIHNvbWV0aGluZyBsaWtlOgorCitBcHIgMTMgMjE6MDE6NTkga2tlMDEga2VybmVsOiBIaVNheDogRHJpdmVyIGZvciBTaWVtZW5zIGNoaXAgc2V0IElTRE4gY2FyZHMKK0FwciAxMyAyMTowMTo1OSBra2UwMSBrZXJuZWw6IEhpU2F4OiBWZXJzaW9uIDIuOQorQXByIDEzIDIxOjAxOjU5IGtrZTAxIGtlcm5lbDogSGlTYXg6IFJldmlzaW9ucyAxLjE0LzEuOS8xLjEwLzEuMjUvMS44CitBcHIgMTMgMjE6MDE6NTkga2tlMDEga2VybmVsOiBIaVNheDogVG90YWwgMSBjYXJkIGRlZmluZWQKK0FwciAxMyAyMTowMTo1OSBra2UwMSBrZXJuZWw6IEhpU2F4OiBDYXJkIDEgUHJvdG9jb2wgRURTUzEgSWQ9SGlTYXgxICgwKQorQXByIDEzIDIxOjAxOjU5IGtrZTAxIGtlcm5lbDogSGlTYXg6IEVsc2EgZHJpdmVyIFJldi4gMS4xMworLi4uCitBcHIgMTMgMjE6MDE6NTkga2tlMDEga2VybmVsOiBFbHNhOiBQQ0YtUHJvIGZvdW5kIGF0IDB4MzYwIFJldi46QyBJUlEgMTAKK0FwciAxMyAyMTowMTo1OSBra2UwMSBrZXJuZWw6IEVsc2E6IHRpbWVyIE9LOyByZXNldHRpbmcgY2FyZAorQXByIDEzIDIxOjAxOjU5IGtrZTAxIGtlcm5lbDogRWxzYTogSFNDWCB2ZXJzaW9uIEE6IFYyLjEgIEI6IFYyLjEKK0FwciAxMyAyMTowMTo1OSBra2UwMSBrZXJuZWw6IEVsc2E6IElTQUMgMjA4Ni8yMTg2IFYxLjEKKy4uLgorQXByIDEzIDIxOjAxOjU5IGtrZTAxIGtlcm5lbDogSGlTYXg6IERTUzEgUmV2LiAxLjE0CitBcHIgMTMgMjE6MDE6NTkga2tlMDEga2VybmVsOiBIaVNheDogMiBjaGFubmVscyBhZGRlZAorCitUaGlzIG1lYW5zIHRoYXQgdGhlIGNhcmQgaXMgcmVhZHkgZm9yIHVzZS4KK0NhYmxpbmcgcHJvYmxlbXMgb3IgbGluZS1kb3ducyBhcmUgbm90IGRldGVjdGVkLCBhbmQgb25seSBzb21lIEVMU0EgY2FyZHMgY2FuCitkZXRlY3QgdGhlIFMwIHBvd2VyLgorCitSZW1lbWJlciB0aGF0LCBhY2NvcmRpbmcgdG8gdGhlIG5ldyBzdHJhdGVneSBmb3IgYWNjZXNzaW5nIGxvdy1sZXZlbCBkcml2ZXJzCitmcm9tIHdpdGhpbiBpc2RuNGxpbnV4LCB5b3Ugc2hvdWxkIGFsc28gZGVmaW5lIGEgZHJpdmVyIElEIHdoaWxlIGRvaW5nCitpbnNtb2Q6IFNpbXBseSBhcHBlbmQgaGlzYXhfaWQ9PFNvbWVTdHJpbmc+IHRvIHRoZSBpbnNtb2QgY29tbWFuZCBsaW5lLiBUaGlzCitzdHJpbmcgTVVTVCBOT1Qgc3RhcnQgd2l0aCBhIGRpZ2l0IG9yIGEgc21hbGwgJ3gnIQorCitBdCB0aGlzIHBvaW50IHlvdSBjYW4gcnVuIGEgJ2NhdCAvZGV2L2lzZG5jdHJsMCcgYW5kIHZpZXcgZGVidWdnaW5nIG1lc3NhZ2VzLgorCitBdCB0aGUgbW9tZW50LCBkZWJ1Z2dpbmcgbWVzc2FnZXMgYXJlIGVuYWJsZWQgd2l0aCB0aGUgaGlzYXhjdHJsIHRvb2w6CisKKyAgICBoaXNheGN0cmwgPERyaXZlcklkPiBEZWJ1Z0NtZCA8ZGVidWdnaW5nX2ZsYWdzPgorCis8RHJpdmVySWQ+IGRlZmF1bHQgaXMgSGlTYXgsIGlmIHlvdSBkaWRuJ3Qgc3BlY2lmeSBvbmUuCisKK0RlYnVnQ21kIGlzICAxICBmb3IgZ2VuZXJpYyBkZWJ1Z2dpbmcKKyAgICAgICAgICAgIDExICBmb3IgbGF5ZXIgMSBkZXZlbG9wbWVudCBkZWJ1Z2dpbmcKKyAgICAgICAgICAgIDEzICBmb3IgbGF5ZXIgMyBkZXZlbG9wbWVudCBkZWJ1Z2dpbmcKKword2hlcmUgPGRlYnVnZ2luZ19mbGFncz4gaXMgdGhlIGludGVnZXIgc3VtIG9mIHRoZSBmb2xsb3dpbmcgZGVidWdnaW5nCitvcHRpb25zIHlvdSB3aXNoIGVuYWJsZWQ6CisKK1dpdGggRGVidWdDbWQgc2V0IHRvIDE6CisKKyAgIDB4MDAwMSAgTGluay1sZXZlbCA8LS0+IGhhcmR3YXJlLWxldmVsIGNvbW11bmljYXRpb24KKyAgIDB4MDAwMiAgVG9wIHN0YXRlIG1hY2hpbmUKKyAgIDB4MDAwNCAgRC1DaGFubmVsIEZyYW1lcyBmb3IgaXNkbmxvZworICAgMHgwMDA4ICBELUNoYW5uZWwgUS45MjEKKyAgIDB4MDAxMCAgQi1DaGFubmVsIFguNzUKKyAgIDB4MDAyMCAgRC1DaGFubmVsIGwyCisgICAweDAwNDAgIEItQ2hhbm5lbCBsMgorICAgMHgwMDgwICBELUNoYW5uZWwgbGluayBzdGF0ZSBkZWJ1Z2dpbmcKKyAgIDB4MDEwMCAgQi1DaGFubmVsIGxpbmsgc3RhdGUgZGVidWdnaW5nCisgICAweDAyMDAgIFRFSSBkZWJ1ZworICAgMHgwNDAwICBMT0NLIGRlYnVnIGluIGNhbGxjLmMKKyAgIDB4MDgwMCAgTW9yZSBwYXJhbm9pZCBkZWJ1ZyBpbiBjYWxsYy5jIChub3QgZm9yIG5vcm1hbCB1c2UpCisgICAweDEwMDAgIEQtQ2hhbm5lbCBsMSBzdGF0ZSBkZWJ1Z2dpbmcKKyAgIDB4MjAwMCAgQi1DaGFubmVsIGwxIHN0YXRlIGRlYnVnZ2luZworCitXaXRoIERlYnVnQ21kIHNldCB0byAxMToKKworICAgMHgwMDAxICBXYXJuaW5ncyAoZGVmYXVsdDogb24pCisgICAweDAwMDIgIElSUSBzdGF0dXMKKyAgIDB4MDAwNCAgSVNBQworICAgMHgwMDA4ICBJU0FDIEZJRk8KKyAgIDB4MDAxMCAgSFNDWAorICAgMHgwMDIwICBIU0NYIEZJRk8gKGF0dGVudGlvbjogZnVsbCBCLUNoYW5uZWwgb3V0cHV0ISkKKyAgIDB4MDA0MCAgRC1DaGFubmVsIExBUEQgZnJhbWUgdHlwZXMKKyAgIDB4MDA4MCAgSVBBQyBkZWJ1ZworICAgMHgwMTAwICBIRkMgcmVjZWl2ZSBkZWJ1ZworICAgMHgwMjAwICBJU0FDIG1vbml0b3IgZGVidWcKKyAgIDB4MDQwMCAgRC1DaGFubmVsIGZyYW1lcyBmb3IgaXNkbmxvZyAoc2V0IHdpdGggMSAweDQgdG9vKQorICAgMHgwODAwICBELUNoYW5uZWwgbWVzc2FnZSB2ZXJib3NlCisKK1dpdGggRGVidWdDbWQgc2V0IHRvIDEzOgorCisgICAgICAgICAxICBXYXJuaW5ncyAoZGVmYXVsdDogb24pCisgICAgICAgICAyICBsMyBwcm90b2NvbCBkZXNjcmlwdG9yIGVycm9ycworICAgICAgICAgNCAgbDMgc3RhdGUgbWFjaGluZQorICAgICAgICAgOCAgY2hhcmdlIGluZm8gZGVidWdnaW5nICgxVFI2KQorCitGb3IgZXhhbXBsZSwgJ2hpc2F4Y3RybCBIaVNheCAxIDB4M2ZmJyBlbmFibGVzIGZ1bGwgZ2VuZXJpYyBkZWJ1Z2dpbmcuCisKK0JlY2F1c2Ugb2Ygc29tZSBvYnNjdXJlIHByb2JsZW1zIHdpdGggc29tZSBzd2l0Y2ggZXF1aXBtZW50LCB0aGUgZGVsYXkKK2JldHdlZW4gdGhlIENPTk5FQ1QgbWVzc2FnZSBhbmQgc2VuZGluZyB0aGUgZmlyc3QgZGF0YSBvbiB0aGUgQi1jaGFubmVsIGlzIG5vdworY29uZmlndXJhYmxlIHdpdGgKKworaGlzYXhjdHJsIDxEcml2ZXJJZD4gMiA8ZGVsYXk+Cis8ZGVsYXk+IGluIG1zIFZhbHVlIGJldHdlZW4gNTAgYW5kIDgwMCBtcyBpcyByZWNvbW1lbmRlZC4KKworRG93bmxvYWRpbmcgRmlybXdhcmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCitBdCB0aGUgbW9tZW50LCB0aGUgU2VkbGJhdWVyIHNwZWVkIGZheCsgaXMgdGhlIG9ubHkgY2FyZCwgd2hpY2gKK25lZWRzIHRvIGRvd25sb2FkIGZpcm13YXJlLgorVGhlIGZpcm13YXJlIGlzIGRvd25sb2FkZWQgd2l0aCB0aGUgaGlzYXhjdHJsIHRvb2w6CisKKyAgICBoaXNheGN0cmwgPERyaXZlcklkPiA5IDxmaXJtd2FyZV9maWxlbmFtZT4KKworPERyaXZlcklkPiBkZWZhdWx0IGlzIEhpU2F4LCBpZiB5b3UgZGlkbid0IHNwZWNpZnkgb25lLAorCit3aGVyZSA8ZmlybXdhcmVfZmlsZW5hbWU+IGlzIHRoZSBmaWxlbmFtZSBvZiB0aGUgZmlybXdhcmUgZmlsZS4KKworRm9yIGV4YW1wbGUsICdoaXNheGN0cmwgSGlTYXggOSBJU0FSLkJJTicgZG93bmxvYWRzIHRoZSBmaXJtd2FyZSBmb3IKK0lTQVIgYmFzZWQgY2FyZHMgKGxpa2UgdGhlIFNlZGxiYXVlciBzcGVlZCBmYXgrKS4KKworV2FybmluZworLS0tLS0tLQorSGlTYXggaXMgYSB3b3JrIGluIHByb2dyZXNzIGFuZCBtYXkgY3Jhc2ggeW91ciBtYWNoaW5lLgorRm9yIGNlcnRpZmljYXRpb24gbG9vayBhdCBIaVNheC5jZXJ0IGZpbGUuCisKK0xpbWl0YXRpb25zCistLS0tLS0tLS0tLQorQXQgdGhpcyB0aW1lLCBIaVNheCBvbmx5IHdvcmtzIG9uIEV1cm8gSVNETiBsaW5lcyBhbmQgR2VybWFuIDFUUjYgbGluZXMuCitGb3IgbGVhc2VkIGxpbmVzIHNlZSBhcHBlbmRpeC4KKworQnVncworLS0tLQorSWYgeW91IGZpbmQgYW55LCBwbGVhc2UgbGV0IG1lIGtub3cuCisKKworVGhhbmtzCistLS0tLS0KK1NwZWNpYWwgdGhhbmtzIHRvOgorCisgICAgICAgIEVtaWwgU3RlcGhhbiBmb3IgdGhlIG5hbWUgSGlTYXggd2hpY2ggaXMgYSBtaXggb2YgSFNDWCBhbmQgSVNBQy4KKworICAgICAgICBGcml0eiBFbGZlcnQsIEphbiBkZW4gT3VkZW4sIE1pY2hhZWwgSGlwcCwgTWljaGFlbCBXZWluLAorICAgICAgICBBbmRyZWFzIEtvb2wsIFBla2thIFNhcm5pbGEsIFNpbSBZc2tlcywgSm9oYW4gTXlycmUnZW4sCisJS2xhdXMtUGV0ZXIgTmlzY2hrZSAoSVRLIEFHKSwgQ2hyaXN0b2YgUGV0aWcsIFdlcm5lciBGZWhuIChFTFNBIEdtYkgpLAorCVZvbGtlciBTY2htaWR0CisJRWRnYXIgVG9lcm5pZyBhbmQgTWFyY3VzIE5pZW1hbm4gZm9yIHRoZSBTZWRsYmF1ZXIgZHJpdmVyCisJU3RlcGhhbiB2b24gS3Jhd2N6eW5za2kKKwlKdWVyZ2VuIFF1YWRlIGZvciB0aGUgTGVhc2VkIExpbmUgcGFydAorCUtsYXVzIExpY2h0ZW53YWxkZXIgKEtsYXVzLkxpY2h0ZW53YWxkZXJAV2ViRm9ydW0uREUpLCBmb3IgRUxTQSBQQ01DSUEgc3VwcG9ydAorCUVucmlrIEJlcmtoYW4gKGVucmlrQHN0YXJmbGVldC5pbmthLmRlKSBmb3IgUzBCT1ggc3BlY2lmaWMgc3R1ZmYKKwlUb24gdmFuIFJvc21hbGVuIGZvciBUZWxlcyBQQ0kKKwlQZXRyIE5vdmFrIDxwZXRyLm5vdmFrQGkuY3o+IGZvciBXaW5ib25kIFc2NjkyIHN1cHBvcnQKKwlXZXJuZXIgQ29ybmVsaXVzIDx3ZXJuZXJAaXNkbjRsaW51eC5kZT4gZm9yIEhGQy1QQ0ksIEhGQy1TKCsvUCkgYW5kIHN1cHBsZW1lbnRhcnkgc2VydmljZXMgc3VwcG9ydAorICAgICAgICBhbmQgbW9yZSBwZW9wbGUgd2hvIGFyZSBodW50aW5nIGJ1Z3MuIChJZiBJIGZvcmdvdCBzb21lYm9keSwgcGxlYXNlCisJc2VuZCBtZSBhIG1haWwpLgorCisgICAgICAgIEZpcm1hIEVMU0EgR21iSAorICAgICAgICBGaXJtYSBFaWNvbi5EaWVobCBHbWJICisgICAgICAgIEZpcm1hIER5bmFsaW5rIE5MCisJRmlybWEgQVNVU0NPTSBORVRXT1JLIElOQy4gVGFpd2FuCisJRmlybWEgUy51LlMuRQorCUZpcm1hIGl0aCBLb21tdW5pa2F0aW9uc3RlY2huaWsgR21iSAorCUZpcm1hIFRyYXZlcnNlIFRlY2hub2xvZ2llIEF1c3RyYWxpYQorCUZpcm1hIE1lZHVzYSBHbWJIICAod3d3Lm1lZHVzYS5kZSkuCisJRmlybWEgUXVhbnQtWCBBdXN0cmlhIGZvciBzcG9uc29yaW5nIGEgREVDIEFscGhhIGJvYXJkK0NQVQorCUZpcm1hIENvbG9nbmUgQ2hpcCBEZXNpZ25zIEdtYkgKKworICAgICAgICBNeSBnaXJsIGZyaWVuZCBhbmQgcGFydG5lciBpbiBsaWZlIFV0ZSBmb3IgaGVyIHBhdGllbmNlIHdpdGggbWUuCisKKworRW5qb3ksCisKK0thcnN0ZW4gS2VpbAora2VpbEBpc2RuNGxpbnV4LmRlCisKKworQXBwZW5kaXg6IFRlbGVzIFBDTUNJQSBkcml2ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NlZQorICAgaHR0cDovL3d3dy5saW51eC5uby90ZWxlc19jcy50eHQgCitmb3IgaW5zdHJ1Y3Rpb25zLgorCitBcHBlbmRpeDogTGludXggYW5kIElTRE4tbGVhc2VkIGxpbmVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK09yaWdpbmFsIGZyb20gSnVlcmdlbiBRdWFkZSwgbmV3IHZlcnNpb24gS0tlLgorCitBdHRlbnRpb24gTkVXIFZFUlNJT04sIHRoZSBvbGQgbGVhc2VkIGxpbmUgc3ludGF4IHdvbid0IHdvcmsgISEhCisKK1lvdSBjYW4gdXNlIEhpU2F4IHRvIGNvbm5lY3QgeW91ciBMaW51eC1Cb3ggdmlhIGFuIElTRE4gbGVhc2VkIGxpbmUKK3RvIGUuZy4gdGhlIEludGVybmV0OgorCisxLiBCdWlsZCBhIGtlcm5lbCB3aGljaCBpbmNsdWRlcyB0aGUgSGlTYXggZHJpdmVyIGVpdGhlciBhcyBhIG1vZHVsZQorICAgb3IgYXMgcGFydCBvZiB0aGUga2VybmVsLgorICAgICBjZCAvdXNyL3NyYy9saW51eAorICAgICBtYWtlIG1lbnVjb25maWcKKyAgICAgPElTRE4gc3Vic3lzdGVtIC0gSVNETiBzdXBwb3J0IC0tIEhpU2F4PgorICAgICBtYWtlIGNsZWFuOyBtYWtlIHpJbWFnZTsgbWFrZSBtb2R1bGVzOyBtYWtlIG1vZHVsZXNfaW5zdGFsbAorMi4gSW5zdGFsbCB0aGUgbmV3IGtlcm5lbAorICAgICBjcCAvdXNyL3NyYy9saW51eC9hcmNoL3g4Ni9ib290L3pJbWFnZSAvZXRjL2tlcm5lbC9saW51eC5pc2RuCisgICAgIHZpIC9ldGMvbGlsby5jb25mCisgICAgIDxhZGQgbmV3IGtlcm5lbCBpbiB0aGUgYm9vdGFibGUgaW1hZ2Ugc2VjdGlvbj4KKyAgICAgbGlsbworMy4gaW4gY2FzZSB0aGUgaGlzYXggZHJpdmVyIGlzIGEgImZpeGVkIiBwYXJ0IG9mIHRoZSBrZXJuZWwsIGNvbmZpZ3VyZQorICAgdGhlIGRyaXZlciB3aXRoIGxpbG86CisgICAgIHZpIC9ldGMvbGlsby5jb25mCisgICAgIDxhZGQgSGlTYXggZHJpdmVyIHBhcmFtZXRlciBpbiB0aGUgZ2xvYmFsIHNlY3Rpb24gKHNlZSBiZWxvdyk+CisgICAgIGxpbG8KKyAgIFlvdXIgbGlsby5jb25mIF9taWdodF8gbG9vayBsaWtlIHRoZSBmb2xsb3dpbmc6CisKKwkjIExJTE8gY29uZmlndXJhdGlvbi1maWxlCisJIyBnbG9iYWwgc2VjdGlvbgorICAgICMgdGVsZXMgMTYuMCBvbiBJUlE9NSwgTUVNPTB4ZDgwMDAsIFBPUlQ9MHhkODAKKwlhcHBlbmQ9Imhpc2F4PTEsMyw1LDB4ZDgwMDAsMHhkODAsSGlTYXgiCisgICAgIyB0ZWxlcyAxNi4zIChub24gcG5wKSBvbiBJUlE9MTUsIFBPUlQ9MHhkODAKKwkjIGFwcGVuZD0iaGlzYXg9MywzLDUsMHhkODAwMCwweGQ4MCxIaVNheCIKKwlib290PS9kZXYvc2RhCisJY29tcGFjdCAgICAgICAgIyBmYXN0ZXIsIGJ1dCB3b24ndCB3b3JrIG9uIGFsbCBzeXN0ZW1zLgorCWxpbmVhcgorCXJlYWQtb25seQorCXByb21wdAorCXRpbWVvdXQ9MTAwCisJdmdhID0gbm9ybWFsICAgICMgZm9yY2Ugc2FuZSBzdGF0ZQorCSMgTGludXggYm9vdGFibGUgcGFydGl0aW9uIGNvbmZpZyBiZWdpbnMKKwlpbWFnZSA9IC9ldGMva2VybmVsL2xpbnV4LmlzZG4KKwlyb290ID0gL2Rldi9zZGExCisJbGFiZWwgPSBsaW51eC5pc2RuCisJIworCWltYWdlID0gL2V0Yy9rZXJuZWwvbGludXgtMi4wLjMwCisJcm9vdCA9IC9kZXYvc2RhMQorCWxhYmVsID0gbGludXguc2VjdXJlCisKKyAgIEluIHRoZSBsaW5lIHN0YXJ0aW5nIHdpdGggImFwcGVuZCIgeW91IGhhdmUgdG8gYWRhcHQgdGhlIHBhcmFtZXRlcnMKKyAgIGFjY29yZGluZyB0byB5b3VyIGNhcmQgKHNlZSBhYm92ZSBpbiB0aGlzIGZpbGUpCisKKzMuIGJvb3QgdGhlIG5ldyBsaW51eC5pc2RuIGtlcm5lbAorNC4gc3RhcnQgdGhlIElTRE4gc3Vic3lzdGVtOgorICAgYSkgbG9hZCAtIGlmIG5lY2Vzc2FyeSAtIHRoZSBtb2R1bGVzIChkZXBlbmRzLCB3aGV0aGVyIHlvdSBjb21waWxlZAorICAgICAgdGhlIElTRE4gZHJpdmVyIGFzIG1vZHVsZSBvciBub3QpCisgICAgICBBY2NvcmRpbmcgdG8gdGhlIHR5cGUgb2YgY2FyZCB5b3UgaGF2ZSB0byBzcGVjaWZ5IHRoZSBuZWNlc3NhcnkKKyAgICAgIGRyaXZlciBwYXJhbWV0ZXIgKGlycSwgaW8sIG1lbSwgdHlwZSwgcHJvdG9jb2wpLgorICAgICAgRm9yIHRoZSBsZWFzZWQgbGluZSB0aGUgcHJvdG9jb2wgaXMgIjMiLiBTZWUgdGhlIHRhYmxlIGFib3ZlIGZvcgorICAgICAgdGhlIHBhcmFtZXRlcnMsIHdoaWNoIHlvdSBoYXZlIHRvIHNwZWNpZnkgZGVwZW5kaW5nIG9uIHlvdXIgY2FyZC4KKyAgIGIpIGNvbmZpZ3VyZSBpNGwKKyAgICAgIC9zYmluL2lzZG5jdHJsIGFkZGlmIGlzZG4wCisgICAgICAjIEVBWiAgMSAtLSBCMSBjaGFubmVsICAgMiAtLUIyIGNoYW5uZWwKKyAgICAgIC9zYmluL2lzZG5jdHJsIGVheiBpc2RuMCAxCisgICAgICAvc2Jpbi9pc2RuY3RybCBzZWN1cmUgaXNkbjAgb24KKyAgICAgIC9zYmluL2lzZG5jdHJsIGh1cHRpbWVvdXQgaXNkbjAgMAorICAgICAgL3NiaW4vaXNkbmN0cmwgbDJfcHJvdCBpc2RuMCBoZGxjCisgICAgICAjIEF0dGVudGlvbiB5b3UgbXVzdCBub3Qgc2V0IGFuIG91dGdvaW5nIG51bWJlciAhISEgVGhpcyB3b24ndCB3b3JrICEhIQorICAgICAgIyBUaGUgaW5jb21pbmcgbnVtYmVyIGlzIExFQVNFRDAgZm9yIHRoZSBmaXJzdCBjYXJkLCBMRUFTRUQxIGZvciB0aGUKKyAgICAgICMgc2Vjb25kIGFuZCBzbyBvbi4KKyAgICAgIC9zYmluL2lzZG5jdHJsIGFkZHBob25lIGlzZG4wIGluIExFQVNFRDAKKyAgICAgICMgSGVyZSBpcyBubyBuZWVkIHRvIGJpbmQgdGhlIGNoYW5uZWwuCisgICBjKSBpbiBjYXNlIHRoZSByZW1vdGUgcGFydG5lciBpcyBhIENJU0NPOgorICAgICAgL3NiaW4vaXNkbmN0cmwgZW5jYXAgaXNkbjAgY2lzY28taAorICAgZCkgY29uZmlndXJlIHRoZSBpbnRlcmZhY2UKKyAgICAgIC9zYmluL2lmY29uZmlnIGlzZG4wICR7TE9DQUxfSVB9IHBvaW50b3BvaW50ICR7UkVNT1RFX0lQfQorICAgZSkgc2V0IHRoZSByb3V0ZXMKKyAgICAgIC9zYmluL3JvdXRlIGFkZCAtaG9zdCAke1JFTU9URV9JUH0gaXNkbjAKKyAgICAgIC9zYmluL3JvdXRlIGFkZCBkZWZhdWx0IGd3ICR7UkVNT1RFX0lQfQorICAgZikgc3dpdGNoIHRoZSBjYXJkIGludG8gbGVhc2VkIG1vZGUgZm9yIGVhY2ggdXNlZCBCLWNoYW5uZWwKKyAgICAgIC9zYmluL2hpc2F4Y3RybCBIaVNheCA1IDEKKworUmVtYXJrczoKK2EpIFVzZSBzdGF0ZSBvZiB0aGUgYXJ0IGlzZG40ay11dGlscworCitIZXJlIGFuIGV4YW1wbGUgc2NyaXB0OgorIyEvYmluL3NoCisjIFN0YXJ0L1N0b3AgSVNETiBsZWFzZWQgbGluZSBjb25uZWN0aW9uCisKK0k0TF9BU19NT0RVTEU9eWVzCitJNExfUkVNT1RFX0lTX0NJU0NPPW5vCitJNExfTU9EVUxFX1BBUkFNUz0idHlwZT0xNiBpbz0weDI2OCBpcnE9NyAiCitJNExfREVCVUc9bm8KK0k0TF9MRUFTRURfMTI4Sz15ZXMKK0xPQ0FMX0lQPTE5Mi4xNjguMS4xCitSRU1PVEVfSVA9MTkyLjE2OC4yLjEKKworY2FzZSAiJDEiIGluCisgICAgc3RhcnQpCisJZWNobyAiU3RhcnRpbmcgSVNETiAuLi4iCisgICAgICAgIGlmIFsgJHtJNExfQVNfTU9EVUxFfSA9ICJ5ZXMiIF07IHRoZW4KKwkJZWNobyAibG9hZGluZyBtb2R1bGVzLi4uIgorCQkvc2Jpbi9tb2Rwcm9iZSBoaXNheCAke0k0TF9NT0RVTEVfUEFSQU1TfQorCWZpCisJIyBjb25maWd1cmUgaW50ZXJmYWNlCisJL3NiaW4vaXNkbmN0cmwgYWRkaWYgaXNkbjAKKwkvc2Jpbi9pc2RuY3RybCBzZWN1cmUgaXNkbjAgb24KKwlpZiBbICR7STRMX0RFQlVHfSA9ICJ5ZXMiIF07IHRoZW4KKwkJL3NiaW4vaXNkbmN0cmwgdmVyYm9zZSA3CisJCS9zYmluL2hpc2F4Y3RybCBIaVNheCAxIDB4ZmZmZgorCQkvc2Jpbi9oaXNheGN0cmwgSGlTYXggMTEgMHhmZgorCQljYXQgIC9kZXYvaXNkbmN0cmwgPi90bXAvbGVhLmxvZyAmCisJZmkKKwlpZiBbICR7STRMX1JFTU9URV9JU19DSVNDT30gPSAieWVzIiBdOyB0aGVuCisJCS9zYmluL2lzZG5jdHJsIGVuY2FwIGlzZG4wIGNpc2NvLWgKKwlmaQorCS9zYmluL2lzZG5jdHJsIGh1cHRpbWVvdXQgaXNkbjAgMAorCSMgQi1DSEFOTkVMIDEKKwkvc2Jpbi9pc2RuY3RybCBlYXogaXNkbjAgMQorCS9zYmluL2lzZG5jdHJsIGwyX3Byb3QgaXNkbjAgaGRsYworCSMgMS4gY2FyZAorCS9zYmluL2lzZG5jdHJsIGFkZHBob25lIGlzZG4wIGluIExFQVNFRDAKKyAgICAgICAgaWYgWyAke0k0TF9MRUFTRURfMTI4S30gPSAieWVzIiBdOyB0aGVuCisJCS9zYmluL2lzZG5jdHJsIGFkZHNsYXZlIGlzZG4wIGlzZG4wcworCQkvc2Jpbi9pc2RuY3RybCBzZWN1cmUgaXNkbjBzIG9uCisJCS9zYmluL2lzZG5jdHJsIGh1cHRpbWVvdXQgaXNkbjBzIDAKKwkJIyBCLUNIQU5ORUwgMgorCQkvc2Jpbi9pc2RuY3RybCBlYXogaXNkbjBzIDIKKwkJL3NiaW4vaXNkbmN0cmwgbDJfcHJvdCBpc2RuMHMgaGRsYworCQkjIDEuIGNhcmQKKwkJL3NiaW4vaXNkbmN0cmwgYWRkcGhvbmUgaXNkbjBzIGluIExFQVNFRDAKKwkJaWYgWyAke0k0TF9SRU1PVEVfSVNfQ0lTQ099ID0gInllcyIgXTsgdGhlbgorCQkJL3NiaW4vaXNkbmN0cmwgZW5jYXAgaXNkbjBzIGNpc2NvLWgKKwkJZmkKKwlmaQorCS9zYmluL2lzZG5jdHJsIGRpYWxtb2RlIGlzZG4wIG1hbnVhbAorCSMgY29uZmlndXJlIHRjcC9pcAorCS9zYmluL2lmY29uZmlnIGlzZG4wICR7TE9DQUxfSVB9IHBvaW50b3BvaW50ICR7UkVNT1RFX0lQfQorCS9zYmluL3JvdXRlIGFkZCAtaG9zdCAke1JFTU9URV9JUH0gaXNkbjAKKwkvc2Jpbi9yb3V0ZSBhZGQgZGVmYXVsdCBndyAke1JFTU9URV9JUH0KKwkjIHN3aXRjaCB0byBsZWFzZWQgbW9kZQorCSMgQi1DSEFOTkVMIDEKKwkvc2Jpbi9oaXNheGN0cmwgSGlTYXggNSAxCisgICAgICAgIGlmIFsgJHtJNExfTEVBU0VEXzEyOEt9ID0gInllcyIgXTsgdGhlbgorCQkjIEItQ0hBTk5FTCAyCisJCXNsZWVwIDEwOyAvKiBXYWl0IGZvciBtYXN0ZXIgKi8KKwkJL3NiaW4vaGlzYXhjdHJsIEhpU2F4IDUgMgorCWZpCisJOzsKKyAgICBzdG9wKQorCS9zYmluL2lmY29uZmlnIGlzZG4wIGRvd24KKwkvc2Jpbi9pc2RuY3RybCBkZWxpZiBpc2RuMAorCWlmIFsgJHtJNExfREVCVUd9ID0gInllcyIgXTsgdGhlbgorCQlraWxsYWxsIGNhdAorCWZpCisJaWYgWyAke0k0TF9BU19NT0RVTEV9ID0gInllcyIgXTsgdGhlbgorCQkvc2Jpbi9ybW1vZCBoaXNheAorCQkvc2Jpbi9ybW1vZCBpc2RuCisJCS9zYmluL3JtbW9kIHBwcAorCQkvc2Jpbi9ybW1vZCBzbGhjCisJZmkKKwk7OworICAgICopCisJZWNobyAiVXNhZ2U6ICQwIHtzdGFydHxzdG9wfSIKKwlleGl0IDEKK2VzYWMKK2V4aXQgMApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5hY3QyMDAwIGIvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5hY3QyMDAwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlNzExNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lzZG4vUkVBRE1FLmFjdDIwMDAKQEAgLTAsMCArMSwxMDQgQEAKKyRJZDogUkVBRE1FLmFjdDIwMDAsdiAxLjMgMjAwMC8wOC8wNiAwOToyMjo1MSBhcm1pbiBFeHAgJAorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgQUNUMjAwMCBkcml2ZXIgZm9yIHRoZQorSUJNIEFjdGl2ZSAyMDAwIElTRE4gY2FyZC4KKworVGhlcmUgYXJlIDMgVHlwZXMgb2YgdGhpcyBjYXJkIGF2YWlsYWJsZS4gQSBJU0EtLCBNQ0EtLCBhbmQgUENNQ0lBLUJ1cworVmVyc2lvbi4gQ3VycmVudGx5LCBvbmx5IHRoZSBJU0EtQnVzIHZlcnNpb24gb2YgdGhlIGNhcmQgaXMgc3VwcG9ydGVkLgorSG93ZXZlciBNQ0EgYW5kIFBDTUNJQSB3aWxsIGZvbGxvdyBzb29uLgorCitUaGUgSVNBLUJ1cyBWZXJzaW9uIHVzZXMgOCBJTy1wb3J0cy4gVGhlIGJhc2UgcG9ydCBhZGRyZXNzIGhhcyB0byBiZSBzZXQKK21hbnVhbGx5IHVzaW5nIHRoZSBESVAgc3dpdGNoZXMuCisKK1NldHRpbmcgdXAgdGhlIERJUCBzd2l0Y2hlcyBmb3IgdGhlIElCTSBBY3RpdmUgMjAwMCBJU0ROIGNhcmQ6CisKKwkgTm90ZTogUzUgYW5kIFM2IGFsd2F5cyBzZXQgb2ZmIQorCisgICAgIFMxICBTMiAgUzMgIFM0ICBCYXNlLXBvcnQKKyAgICAgb24gIG9uICBvbiAgb24gIDB4MDIwMCAoRmFjdG9yeSBkZWZhdWx0KQorICAgICBvZmYgb24gIG9uICBvbiAgMHgwMjQwIAorICAgICBvbiAgb2ZmIG9uICBvbiAgMHgwMjgwIAorICAgICBvZmYgb2ZmIG9uICBvbiAgMHgwMmMwIAorICAgICBvbiAgb24gIG9mZiBvbiAgMHgwMzAwIAorICAgICBvZmYgb24gIG9mZiBvbiAgMHgwMzQwIAorICAgICBvbiAgb2ZmIG9mZiBvbiAgMHgwMzgwIAorICAgICBvbiAgb24gIG9uICBvZmYgMHhjZmUwCisgICAgIG9mZiBvbiAgb24gIG9mZiAweGNmYTAgCisgICAgIG9uICBvZmYgb24gIG9mZiAweGNmNjAgCisgICAgIG9mZiBvZmYgb24gIG9mZiAweGNmMjAgCisgICAgIG9uICBvbiAgb2ZmIG9mZiAweGNlZTAgCisgICAgIG9mZiBvbiAgb2ZmIG9mZiAweGNlYTAgCisgICAgIG9uICBvZmYgb2ZmIG9mZiAweGNlNjAgCisgICAgIG9mZiBvZmYgb2ZmIG9mZiBDYXJkIGRpc2FibGVkIAorCitJUlEgaXMgY29uZmlndXJlZCBieSBzb2Z0d2FyZS4gUG9zc2libGUgdmFsdWVzIGFyZToKKworICAzLCA1LCA3LCAxMCwgMTEsIDEyLCAxNSBhbmQgbm9uZSAocG9sbGVkIG1vZGUpCisKKworVGhlIEFDVDIwMDAgZHJpdmVyIG1heSBlaXRoZXIgYmUgYnVpbHQgaW50byB0aGUga2VybmVsIG9yIGFzIGEgbW9kdWxlLgorSW5pdGlhbGl6YXRpb24gZGVwZW5kcyBvbiBob3cgdGhlIGRyaXZlciBpcyBidWlsdDoKKworRHJpdmVyIGJ1aWx0IGludG8gdGhlIGtlcm5lbDoKKworICBUaGUgQUNUMjAwMCBkcml2ZXIgY2FuIGJlIGNvbmZpZ3VyZWQgdXNpbmcgdGhlIGNvbW1hbmRsaW5lLWZlYXR1cmUgd2hpbGUKKyAgbG9hZGluZyB0aGUga2VybmVsIHdpdGggTElMTyBvciBMT0FETElOLiBJdCBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgc3ludGF4OgorCisgIGFjdDIwMDA9YixwLGlbLGlkc3RyaW5nXQorCisgIHdoZXJlCisKKyAgICBiID0gQnVzLVR5cGUgICAgICAoMT1JU0EsIDI9TUNBLCAzPVBDTUNJQSkKKyAgICBwID0gcG9ydGJhc2UgICAgICAoLTEgbWVhbnMgYXV0b3Byb2JlKQorICAgIGkgPSBJbnRlcnJ1cHQgICAgICgtMSBtZWFucyB1c2UgbmV4dCBmcmVlIElSUSwgMCBtZWFucyBwb2xsZWQgbW9kZSkKKworICBUaGUgaWRzdHJpbmcgaXMgYW4gYXJiaXRyYXJ5IHN0cmluZyB1c2VkIGZvciByZWZlcmVuY2luZyB0aGUgY2FyZAorICBieSB0aGUgYWN0Y3RybCB0b29sIGxhdGVyLgorCisgIERlZmF1bHRzIHVzZWQsIHdoZW4gbm8gcGFyYW1ldGVycyBnaXZlbiBhdCBhbGw6CisKKyAgICAxLC0xLC0xLCIiCisKKyAgd2hpY2ggbWVhbnM6IEF1dG9wcm9iZSBmb3IgYW4gSVNBIGNhcmQsIHVzZSBuZXh0IGZyZWUgSVJRLCBsZXQgdGhlCisgIElTRE4gbGlua2xldmVsIGZpbGwgdGhlIElkU3RyaW5nICh1c3VhbGx5ICJsaW5lMCIgZm9yIHRoZSBmaXJzdCBjYXJkKS4KKyAKKyAgSWYgeW91IGxpa2UgdG8gdXNlIG1vcmUgdGhhbiBvbmUgY2FyZCwgeW91IGNhbiB1c2UgdGhlIHByb2dyYW0KKyAgImFjdGN0cmwiIGZyb20gdGhlIHV0aWxpdHktcGFja2FnZSB0byBjb25maWd1cmUgYWRkaXRpb25hbCBjYXJkcy4KKworICBVc2luZyB0aGUgImFjdGN0cmwiLXV0aWxpdHksIHBvcnRiYXNlIGFuZCBpcnEgY2FuIGFsc28gYmUgY2hhbmdlZAorICBkdXJpbmcgcnVudGltZS4gVGhlIEQtY2hhbm5lbCBwcm90b2NvbCBpcyBjb25maWd1cmVkIGJ5IHRoZSAiZHByb3RvIgorICBvcHRpb24gb2YgdGhlICJhY3RjdHJsIi11dGlsaXR5IGFmdGVyIGxvYWRpbmcgdGhlIGZpcm13YXJlIGludG8gdGhlCisgIGNhcmQncyBtZW1vcnkgdXNpbmcgdGhlICJhY3RjdHJsIi11dGlsaXR5LgorCitEcml2ZXIgYnVpbHQgYXMgbW9kdWxlOgorCisgIFRoZSBtb2R1bGUgYWN0MjAwMC5vIGNhbiBiZSBjb25maWd1cmVkIGR1cmluZyBtb2Rwcm9iZSAoaW5zbW9kKSBieQorICBhcHBlbmRpbmcgaXRzIHBhcmFtZXRlcnMgdG8gdGhlIG1vZHByb2JlIHJlc3AuIGluc21vZCBjb21tYW5kbGluZS4KKyAgVGhlIGZvbGxvd2luZyBzeW50YXggaXMgYWNjZXB0ZWQ6CisKKyAgICBhY3RfYnVzPWIgYWN0X3BvcnQ9cCBhY3RfaXJxPWkgYWN0X2lkPWlkc3RyaW5nCisKKyAgd2hlcmUgYiwgcCwgaSBhbmQgaWRzdHJpbmcgaGF2ZSB0aGUgc2FtZSBtZWFuaW5ncyBhcyB0aGUgcGFyYW1ldGVycworICBkZXNjcmliZWQgZm9yIHRoZSBidWlsdGluIHZlcnNpb24gYWJvdmUuCisKKyAgVXNpbmcgdGhlICJhY3RjdHJsIi11dGlsaXR5LCB0aGUgc2FtZSBmZWF0dXJlcyBhcHBseSB0byB0aGUgbW9kdWxhcml6ZWQKKyAgdmVyc2lvbiBhcyB0byB0aGUga2VybmVsLWJ1aWx0aW4gb25lLiAoaS5lLiBsb2FkaW5nIG9mIGZpcm13YXJlIGFuZAorICBjb25maWd1cmluZyB0aGUgRC1jaGFubmVsIHByb3RvY29sKQorCitMb2FkaW5nIHRoZSBmaXJtd2FyZSBpbnRvIHRoZSBjYXJkOgorCisgIFRoZSBmaXJtd2FyZSBpcyBzdXBwbGllZCB0b2dldGhlciB3aXRoIHRoZSBpc2RuNGstdXRpbHMgcGFja2FnZS4gSXQKKyAgY2FuIGJlIGZvdW5kIGluIHRoZSBzdWJkaXJlY3RvcnkgYWN0MjAwMC9maXJtd2FyZS8KKworICBBc3N1bWluZyB5b3UgaGF2ZSBpbnN0YWxsZWQgdGhlIHV0aWxpdHktcGFja2FnZSBjb3JyZWN0bHksIHRoZSBmaXJtd2FyZQorICB3aWxsIGJlIGRvd25sb2FkZWQgaW50byB0aGUgY2FyZCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CisKKyAgICBhY3RjdHJsIC1kIGlkc3RyaW5nIGxvYWQgL2V0Yy9pc2RuL2JpcDExLmJ0bAorCisgIHdoZXJlIGlkc3RyaW5nIGlzIHRoZSBOYW1lIG9mIHRoZSBjYXJkLCBnaXZlbiBkdXJpbmcgaW5zbW9kLXRpbWUgb3IKKyAgKGZvciBrZXJuZWwtYnVpbHRpbiBkcml2ZXIpIG9uIHRoZSBrZXJuZWwgY29tbWFuZGxpbmUuIElmIG9ubHkgb25lCisgIElTRE4gY2FyZCBpcyB1c2VkLCB0aGUgLWQgaXNkc3RyaW4gbWF5IGJlIG9taXR0ZWQuCisKKyAgRm9yIGZ1cnRoZXIgZG9jdW1lbnRhdGlvbiAoYWRkaW5nIG1vcmUgSUJNIEFjdGl2ZSAyMDAwIGNhcmRzKSwgcmVmZXIgdG8KKyAgdGhlIG1hbnBhZ2UgYWN0Y3RybC44IHdoaWNoIGlzIGluY2x1ZGVkIGluIHRoZSBpc2RuNGstdXRpbHMgcGFja2FnZS4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5hdWRpbyBiL0RvY3VtZW50YXRpb24vaXNkbi9SRUFETUUuYXVkaW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGViY2ExOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaXNkbi9SRUFETUUuYXVkaW8KQEAgLTAsMCArMSwxMzggQEAKKyRJZDogUkVBRE1FLmF1ZGlvLHYgMS44IDE5OTkvMDcvMTEgMTc6MTc6MjkgYXJtaW4gRXhwICQKKworSVNETiBzdWJzeXN0ZW0gZm9yIExpbnV4LgorICBEZXNjcmlwdGlvbiBvZiBhdWRpbyBtb2RlLgorCitXaGVuIGVuYWJsZWQgZHVyaW5nIGtlcm5lbCBjb25maWd1cmF0aW9uLCB0aGUgdHR5IGVtdWxhdG9yIG9mIHRoZSBJU0ROCitzdWJzeXN0ZW0gaXMgY2FwYWJsZSBvZiBhIHJlZHVjZWQgc2V0IG9mIGNvbW1hbmRzIHRvIHN1cHBvcnQgYXVkaW8uCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgY29tbWFuZHMgc3VwcG9ydGVkIGFuZCB0aGUgZm9ybWF0IG9mCithdWRpbyBkYXRhLgorCitDb21tYW5kcyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIGF1ZGlvIG1vZGU6CisKKyAgICAgICAgQVQrRkNMQVNTPTggICAgICBFbmFibGUgYXVkaW8gbW9kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGFmZmVjdHMgdGhlIGZvbGxvd2luZyByZWdpc3RlcnM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICBTMTg6IEJpdHMgMCBhbmQgMiBhcmUgc2V0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgUzE2OiBTZXQgdG8gNDggYW5kIGFueSBmdXJ0aGVyIGNoYW5nZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXJnZXIgdmFsdWVzIGlzIGJsb2NrZWQuCisgICAgICAgIEFUK0ZDTEFTUz0wICAgICAgRGlzYWJsZSBhdWRpbyBtb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyIDE4IGlzIHNldCB0byA0LgorICAgICAgICBBVCtGQ0xBU1M9PyAgICAgIFNob3cgcG9zc2libGUgbW9kZXMuCisgICAgICAgIEFUK0ZDTEFTUz8gICAgICAgUmVwb3J0IGN1cnJlbnQgbW9kZSAoMCBvciA4KS4KKworQ29tbWFuZHMgc3VwcG9ydGVkIGluIGF1ZGlvIG1vZGU6CisKK0FsbCBhdWRpbyBtb2RlIGNvbW1hbmRzIGhhdmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgZm9ybXM6CisKKyAgICAgICAgQVQrVnh4PyAgICAgICAgICBTaG93IGN1cnJlbnQgc2V0dGluZy4KKyAgICAgICAgQVQrVnh4PT8gICAgICAgICBTaG93IHBvc3NpYmxlIHNldHRpbmdzLgorICAgICAgICBBVCtWeHg9diAgICAgICAgIFNldCBzaW1wbGUgcGFyYW1ldGVyLgorICAgICAgICBBVCtWeHg9dix2IC4uLiAgIFNldCBjb21wbGV4IHBhcmFtZXRlci4KKword2hlcmUgeHggaXMgYSB0d28tY2hhcmFjdGVyIGNvZGUgYW5kIHYgYXJlIGFscGhhbnVtZXJpY2FsIHBhcmFtZXRlcnMuCitUaGUgZm9sbG93aW5nIGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQ6CisKKyAgICAgICAgQVQrVk5IPXggICAgICAgICBBdXRvIGhhbmd1cCBzZXR0aW5nLiBOTyBFRkZFQ1QsIHN1cHBvcnRlZAorICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBjb21wYXRpYmlsaXR5IG9ubHkuCisgICAgICAgIEFUK1ZOSD8gICAgICAgICAgQWx3YXlzIHJlcG9ydGluZyAiMSIKKyAgICAgICAgQVQrVk5IPT8gICAgICAgICBBbHdheXMgcmVwb3J0aW5nICIxIgorCisgICAgICAgIEFUK1ZJUCAgICAgICAgICAgUmVzZXQgYWxsIGF1ZGlvIHBhcmFtZXRlcnMuCisKKyAgICAgICAgQVQrVkxTPXggICAgICAgICBMaW5lIHNlbGVjdC4geCBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgPSBObyBkZXZpY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAyID0gUGhvbmUgbGluZS4KKyAgICAgICAgQVQrVkxTPT8gICAgICAgICBBbHdheXMgcmVwb3J0aW5nICIwLDIiCisgICAgICAgIEFUK1ZMUz8gICAgICAgICAgU2hvdyBjdXJyZW50IGxpbmUuCisKKyAgICAgICAgQVQrVlJYICAgICAgICAgICBTdGFydCByZWNvcmRpbmcuIEVtdWxhdG9yIHJlc3BvbmRzIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICBDT05ORUNUIGFuZCBzdGFydHMgc2VuZGluZyBhdWRpbyBkYXRhIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGFwcGxpY2F0aW9uLiBTZWUgYmVsb3cgZm9yIGRhdGEgZm9ybWF0CisKKyAgICAgICAgQVQrVlNEPXgseSAgICAgICBTZXQgc2lsZW5jZS1kZXRlY3Rpb24gcGFyYW1ldGVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZSBwYXJhbWV0ZXJzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IDAgLi4uIDMxICBzZW5zaXRpdml0eSB0aHJlc2hvbGQgbGV2ZWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IDAgLCBkZWFjdGl2YXRlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSAwIC4uLiAyNTUgcmFuZ2Ugb2YgaW50ZXJ2YWwgaW4gdW5pdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgMC4xIHNlY29uZC4gKGRlZmF1bHQgNzApCisgICAgICAgIEFUK1ZTRD0/ICAgICAgICAgUmVwb3J0IHBvc3NpYmxlIHBhcmFtZXRlcnMuCisgICAgICAgIEFUK1ZTRD8gICAgICAgICAgU2hvdyBjdXJyZW50IHBhcmFtZXRlcnMuCisKKyAgICAgICAgQVQrVkREPXgseSAgICAgICBTZXQgRFRNRi1kZXRlY3Rpb24gcGFyYW1ldGVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgICBPbmx5IHBvc3NpYmxlIGlmIG9ubGluZSBhbmQgZHVyaW5nIHRoaXMgY29ubmVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZSBwYXJhbWV0ZXJzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IDAgLi4uIDE1ICBzZW5zaXRpdml0eSB0aHJlc2hvbGQgbGV2ZWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IDAgLCBJNEwgc29mdC1kZWNvZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxLTE1IHNvZnQtZGVjb2RlIG9mZiwgaGFyZHdhcmUgb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gMCAuLi4gMjU1IHRvbmUgZHVyYXRpb24gaW4gdW5pdHMgb2YgNW1zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3QgZm9yIEk0TCBzb2Z0IGRlY29kZSAoZGVmYXVsdCA4LCA0MG1zKQorICAgICAgICBBVCtWREQ9PyAgICAgICAgIFJlcG9ydCBwb3NzaWJsZSBwYXJhbWV0ZXJzLgorICAgICAgICBBVCtWREQ/ICAgICAgICAgIFNob3cgY3VycmVudCBwYXJhbWV0ZXJzLgorCisgICAgICAgIEFUK1ZTTT14ICAgICAgICAgU2VsZWN0IGF1ZGlvIGRhdGEgZm9ybWF0LgorICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlIHBhcmFtZXRlcnM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAyID0gQURQQ00tMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgMyA9IEFEUENNLTMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgPSBBRFBDTS00CisgICAgICAgICAgICAgICAgICAgICAgICAgICA1ID0gYUxBVworICAgICAgICAgICAgICAgICAgICAgICAgICAgNiA9IHVMQVcKKyAgICAgICAgQVQrVlNNPT8gICAgICAgICBTaG93IHBvc3NpYmxlIGF1ZGlvIGZvcm1hdHMuCisKKyAgICAgICAgQVQrVlRYICAgICAgICAgICBTdGFydCBhdWRpbyBwbGF5YmFjay4gRW11bGF0b3IgcmVzcG9uZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIENPTk5FQ1QgYW5kIHN0YXJ0cyBzZW5kaW5nIGF1ZGlvIGRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlZCBmcm9tIHRoZSBhcHBsaWNhdGlvbiB2aWEgcGhvbmUgbGluZS4KK0dlbmVyYWwgYmVoYXZpb3IgYW5kIGRlc2NyaXB0aW9uIG9mIGRhdGEgZm9ybWF0cy9wcm90b2NvbC4KKyAgICB3aGVuIGEgY29ubmVjdGlvbiBpcyBtYWRlOgorCisgICAgICBPbiBpbmNvbWluZyBjYWxscywgaWYgdGhlIGFwcGxpY2F0aW9uIHJlc3BvbmRzIHRvIGEgUklORworICAgICAgd2l0aCBBVEEsIGRlcGVuZGluZyBvbiB0aGUgY2FsbGluZyBzZXJ2aWNlLCB0aGUgZW11bGF0b3IKKyAgICAgIHJlc3BvbmRzIHdpdGggZWl0aGVyIENPTk5FQ1QgKGRhdGEgY2FsbCkgb3IgVkNPTiAodm9pY2UgY2FsbCkuCisgICAgICAKKyAgICAgIE9uIG91dGdvaW5nIHZvaWNlIGNhbGxzLCB0aGUgZW11bGF0b3IgcmVzcG9uZHMgd2l0aCBWQ09OCisgICAgICB1cG9uIGNvbm5lY3Rpb24gc2V0dXAuCisKKyAgQXVkaW8gcmVjb3JkaW5nLgorCisgICAgV2hlbiByZWNlaXZpbmcgYXVkaW8gZGF0YSwgYSBraW5kIG9mIGJpc3luYyBwcm90b2NvbCBpcyB1c2VkLgorICAgIFVwb24gQVQrVlJYIGNvbW1hbmQsIHRoZSBlbXVsYXRvciByZXNwb25kcyB3aXRoIENPTk5FQ1QsIGFuZAorICAgIHN0YXJ0cyBzZW5kaW5nIGF1ZGlvIGRhdGEgdG8gdGhlIGFwcGxpY2F0aW9uLiBUaGVyZSBhcmUgc2V2ZXJhbAorICAgIGVzY2FwZSBzZXF1ZW5jZXMgZGVmaW5lZCwgYWxsIHVzaW5nIERMRSAoMHgxMCkgYXMgRXNjYXBlIGNoYXI6CisKKyAgICA8RExFPjxFVFg+ICAgICAgICAgICAgICBFbmQgb2YgYXVkaW8gZGF0YS4gKGkuZS4gY2F1c2VkIGJ5IGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5ndXAgb2YgdGhlIHJlbW90ZSBzaWRlKSBFbXVsYXRvciBzdG9wcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZGluZywgcmVzcG9uZGluZyB3aXRoIFZDT04uCisgICAgPERMRT48REM0PgkJICAgIEFib3J0IHJlY29yZGluZywgKHNlbmQgYnkgYXBwbC4pIEVtdWxhdG9yCisJCQkgICAgc3RvcHMgcmVjb3JkaW5nLCBzZW5kcyBETEUsRVRYLgorICAgIDxETEU+PERMRT4gICAgICAgICAgICAgIEVzY2FwZSBzZXF1ZW5jZSBmb3IgRExFIGluIGRhdGEgc3RyZWFtLgorICAgIDxETEU+MCAgICAgICAgICAgICAgICAgIFRvdWNodG9uZSAiMCIgcmVjZWl2ZWQuCisgICAgICAgICAuLi4KKyAgICA8RExFPjkgICAgICAgICAgICAgICAgICBUb3VjaHRvbmUgIjkiIHJlY2VpdmVkLgorICAgIDxETEU+IyAgICAgICAgICAgICAgICAgIFRvdWNodG9uZSAiIyIgcmVjZWl2ZWQuCisgICAgPERMRT4qICAgICAgICAgICAgICAgICAgVG91Y2h0b25lICIqIiByZWNlaXZlZC4KKyAgICA8RExFPkEgICAgICAgICAgICAgICAgICBUb3VjaHRvbmUgIkEiIHJlY2VpdmVkLgorICAgIDxETEU+QiAgICAgICAgICAgICAgICAgIFRvdWNodG9uZSAiQiIgcmVjZWl2ZWQuCisgICAgPERMRT5DICAgICAgICAgICAgICAgICAgVG91Y2h0b25lICJDIiByZWNlaXZlZC4KKyAgICA8RExFPkQgICAgICAgICAgICAgICAgICBUb3VjaHRvbmUgIkQiIHJlY2VpdmVkLgorCisgICAgPERMRT5xICAgICAgICAgICAgICAgICAgcXVpZXQuIFNpbGVuY2UgZGV0ZWN0ZWQgYWZ0ZXIgbm9uLXNpbGVuY2UuCisgICAgPERMRT5zICAgICAgICAgICAgICAgICAgc2lsZW5jZS4gU2lsZW5jZSBkZXRlY3RlZCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0IG9mIHJlY29yZGluZy4KKworICAgIEN1cnJlbnRseSB1bnN1cHBvcnRlZCBETEUgc2VxdWVuY2VzOgorCisgICAgPERMRT5jICAgICAgICAgICAgICAgICAgRkFYIGNhbGxpbmcgdG9uZSByZWNlaXZlZC4KKyAgICA8RExFPmIgICAgICAgICAgICAgICAgICBidXN5IHRvbmUgcmVjZWl2ZWQuCisKKyAgQXVkaW8gcGxheWJhY2suCisKKyAgICBXaGVuIHNlbmRpbmcgYXVkaW8gZGF0YSwgdXBvbiBBVCtWVFggY29tbWFuZCwgZW11bGF0b3IgcmVzcG9uZHMgd2l0aAorICAgIENPTk5FQ1QsIGFuZCBzdGFydHMgdHJhbnNmZXJyaW5nIGRhdGEgZnJvbSBhcHBsaWNhdGlvbiB0byB0aGUgcGhvbmUgbGluZS4KKyAgICBUaGUgc2FtZSBETEUgc2VxdWVuY2VzIGFwcGx5IHRvIHRoaXMgbW9kZS4KKworICBGdWxsLUR1cGxleC1BdWRpbzoKKworICAgIFdoZW4gX2JvdGhfIGNvbW1hbmRzIGZvciByZWNvcmRpbmcgYW5kIHBsYXliYWNrIGFyZSBnaXZlbiBpbiBfb25lXworICAgIEFULWNvbW1hbmQtbGluZSAoaS5lLjogIkFUK1ZUWCtWUlgiKSwgZnVsbC1kdXBsZXgtbW9kZSBpcyBzZWxlY3RlZC4KKwlJbiB0aGlzIG1vZGUsIHRoZSBvbmx5IHdheSB0byBzdG9wIHJlY29yZGluZyBpcyBzZW5kaW5nIDxETEU+PERDND4KKyAgICBhbmQgdGhlIG9ubHkgd2F5IHRvIHN0b3AgcGxheWJhY2sgaXMgdG8gc2VuZCA8RExFPjxFVFg+LgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lzZG4vUkVBRE1FLmF2bWIxIGIvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5hdm1iMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTA3NTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5hdm1iMQpAQCAtMCwwICsxLDE4NyBAQAorRHJpdmVyIGZvciBhY3RpdmUgQVZNIENvbnRyb2xsZXIuCisKK1RoZSBkcml2ZXIgcHJvdmlkZXMgYSBrZXJuZWwgY2FwaTIuMCBJbnRlcmZhY2UgKGtlcm5lbGNhcGkpIGFuZAorb24gdG9wIG9mIHRoaXMgYSBVc2VyLUxldmVsLUNBUEkyLjAtaW50ZXJmYWNlIChjYXBpKQorYW5kIGEgZHJpdmVyIHRvIGNvbm5lY3QgaXNkbjRsaW51eCB3aXRoIENBUEkyLjAgKGNhcGlkcnYpLgorVGhlIGxvd2xldmVsIGludGVyZmFjZSBjYW4gYmUgdXNlZCB0byBpbXBsZW1lbnQgYSBDQVBJMi4wCithbHNvIGZvciBwYXNzaXZlIGNhcmRzIHNpbmNlIEp1bHkgMTk5OS4KKworVGhlIGF1dGhvciBjYW4gYmUgcmVhY2hlZCBhdCBjYWxsZUBjYWxsZS5pbi1iZXJsaW4uZGUuCitUaGUgY29tbWFuZCBhdm1jYXBpY3RybCBpcyBwYXJ0IG9mIHRoZSBpc2RuNGstdXRpbHMuCit0NC1maWxlcyBjYW4gYmUgZm91bmQgYXQgZnRwOi8vZnRwLmF2bS5kZS9jYXJkd2FyZS9iMS9saW51eC9maXJtd2FyZQorCitDdXJyZW50bHkgc3VwcG9ydGVkIGNhcmRzOgorCUIxIElTQSAoYWxsIHZlcnNpb25zKQorCUIxIFBDSQorCVQxL1QxQiAoSEVNQSBjYXJkKQorCU0xCisJTTIKKwlCMSBQQ01DSUEKKworSW5zdGFsbGluZworLS0tLS0tLS0tLQorCitZb3UgbmVlZCBhdCBsZWFzdCAvZGV2L2NhcGkyMCB0byBsb2FkIHRoZSBmaXJtd2FyZS4KKworbWtub2QgL2Rldi9jYXBpMjAgYyA2OCAwCitta25vZCAvZGV2L2NhcGkyMC4wMCBjIDY4IDEKK21rbm9kIC9kZXYvY2FwaTIwLjAxIGMgNjggMgorLgorLgorLgorbWtub2QgL2Rldi9jYXBpMjAuMTkgYyA2OCAyMAorCitSdW5uaW5nCistLS0tLS0tCisKK1RvIHVzZSB0aGUgY2FyZCB5b3UgbmVlZCB0aGUgdDQtZmlsZXMgdG8gZG93bmxvYWQgdGhlIGZpcm13YXJlLgorQVZNIEdtYkggcHJvdmlkZXMgc2V2ZXJhbCB0NC1maWxlcyBmb3IgdGhlIGRpZmZlcmVudCBELWNoYW5uZWwKK3Byb3RvY29scyAoYjEudDQgZm9yIEV1cm8tSVNETikuIEluc3RhbGwgdGhlc2UgZmlsZSBpbiAvbGliL2lzZG4uCisKK2lmIHlvdSBjb25maWd1cmUgYXMgbW9kdWxlcyBsb2FkIHRoZSBtb2R1bGVzIHRoaXMgd2F5OgorCitpbnNtb2QgL2xpYi9tb2R1bGVzL2N1cnJlbnQvbWlzYy9jYXBpdXRpbC5vCitpbnNtb2QgL2xpYi9tb2R1bGVzL2N1cnJlbnQvbWlzYy9iMS5vCitpbnNtb2QgL2xpYi9tb2R1bGVzL2N1cnJlbnQvbWlzYy9rZXJuZWxjYXBpLm8KK2luc21vZCAvbGliL21vZHVsZXMvY3VycmVudC9taXNjL2NhcGlkcnYubworaW5zbW9kIC9saWIvbW9kdWxlcy9jdXJyZW50L21pc2MvY2FwaS5vCisKK2lmIHlvdSBoYXZlIGFuIEIxLVBDSSBjYXJkIGxvYWQgdGhlIG1vZHVsZSBiMXBjaS5vCitpbnNtb2QgL2xpYi9tb2R1bGVzL2N1cnJlbnQvbWlzYy9iMXBjaS5vCithbmQgbG9hZCB0aGUgZmlybXdhcmUgd2l0aAorYXZtY2FwaWN0cmwgbG9hZCAvbGliL2lzZG4vYjEudDQgMQorCitpZiB5b3UgaGF2ZSBhbiBCMS1JU0EgY2FyZCBsb2FkIHRoZSBtb2R1bGUgYjFpc2EubworYW5kIGFkZCB0aGUgY2FyZCBieSBjYWxsaW5nCithdm1jYXBpY3RybCBhZGQgMHgxNTAgMTUKK2FuZCBsb2FkIHRoZSBmaXJtd2FyZSBieSBjYWxsaW5nCithdm1jYXBpY3RybCBsb2FkIC9saWIvaXNkbi9iMS50NCAxCisKK2lmIHlvdSBoYXZlIGFuIFQxLUlTQSBjYXJkIGxvYWQgdGhlIG1vZHVsZSB0MWlzYS5vCithbmQgYWRkIHRoZSBjYXJkIGJ5IGNhbGxpbmcKK2F2bWNhcGljdHJsIGFkZCAweDQ1MCAxNSBUMSAwCithbmQgbG9hZCB0aGUgZmlybXdhcmUgYnkgY2FsbGluZworYXZtY2FwaWN0cmwgbG9hZCAvbGliL2lzZG4vdDEudDQgMQorCitpZiB5b3UgaGF2ZSBhbiBQQ01DSUEgY2FyZCAoQjEvTTEvTTIpIGxvYWQgdGhlIG1vZHVsZSBiMXBjbWNpYS5vCitiZWZvcmUgeW91IGluc2VydCB0aGUgY2FyZC4KKworTGVhc2VkIExpbmVzIHdpdGggQjEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCitJbml0IGNhcmQgYW5kIGxvYWQgZmlybXdhcmUuCitGb3IgYW4gRDY0UyB1c2UgIkZWOiAxIiBhcyBwaG9uZSBudW1iZXIKK0ZvciBhbiBENjRTMiB1c2UgIkZWOiAxIiBhbmQgIkZWOiAyIiBmb3IgbXVsdGlsaW5rCitvciAiRlY6IDEsMiIgdG8gdXNlIENBUEkgY2hhbm5lbCBidW5kbGluZy4KKworL3Byb2MtSW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0tLQorCisvcHJvYy9jYXBpOgorICBkci14ci14ci14ICAgMiByb290ICAgICByb290ICAgICAgICAgICAgMCBKdWwgIDEgMTQ6MDMgLgorICBkci14ci14ci14ICA4MiByb290ICAgICByb290ICAgICAgICAgICAgMCBKdW4gMzAgMTk6MDggLi4KKyAgLXItLXItLXItLSAgIDEgcm9vdCAgICAgcm9vdCAgICAgICAgICAgIDAgSnVsICAxIDE0OjAzIGFwcGxpY2F0aW9ucworICAtci0tci0tci0tICAgMSByb290ICAgICByb290ICAgICAgICAgICAgMCBKdWwgIDEgMTQ6MDMgYXBwbHN0YXRzCisgIC1yLS1yLS1yLS0gICAxIHJvb3QgICAgIHJvb3QgICAgICAgICAgICAwIEp1bCAgMSAxNDowMyBjYXBpMjAKKyAgLXItLXItLXItLSAgIDEgcm9vdCAgICAgcm9vdCAgICAgICAgICAgIDAgSnVsICAxIDE0OjAzIGNhcGlkcnYKKyAgLXItLXItLXItLSAgIDEgcm9vdCAgICAgcm9vdCAgICAgICAgICAgIDAgSnVsICAxIDE0OjAzIGNvbnRyb2xsZXIKKyAgLXItLXItLXItLSAgIDEgcm9vdCAgICAgcm9vdCAgICAgICAgICAgIDAgSnVsICAxIDE0OjAzIGNvbnRyc3RhdHMKKyAgLXItLXItLXItLSAgIDEgcm9vdCAgICAgcm9vdCAgICAgICAgICAgIDAgSnVsICAxIDE0OjAzIGRyaXZlcgorICAtci0tci0tci0tICAgMSByb290ICAgICByb290ICAgICAgICAgICAgMCBKdWwgIDEgMTQ6MDMgbmNjaQorICAtci0tci0tci0tICAgMSByb290ICAgICByb290ICAgICAgICAgICAgMCBKdWwgIDEgMTQ6MDMgdXNlcnMKKworL3Byb2MvY2FwaS9hcHBsaWNhdGlvbnM6CisgICBhcHBsaWQgbGV2ZWwzY250IGRhdGFibGtjbnQgZGF0YWJsa2xlbiBuY2NpLWNudCByZWN2cXVldWVsZW4KKwlsZXZlbDNjbnQ6IGNhcGlfcmVnaXN0ZXIgcGFyYW1ldGVyCisJZGF0YWJsa2NudDogY2FwaV9yZWdpc3RlciBwYXJhbWV0ZXIKKwluY2NpLWNudDogY3VycmVudCBudW1iZXIgb2YgbmNjaXMgKGNvbm5lY3Rpb25zKQorCXJlY3ZxdWV1ZWxlbjogbnVtYmVyIG9mIG1lc3NhZ2VzIG9uIHJlY2VpdmUgcXVldWUKKyAgIGZvciBleGFtcGxlOgorMSAtMiAxNiAyMDQ4IDEgMAorMiAyIDcgMjA0OCAxIDAKKworL3Byb2MvY2FwaS9hcHBsc3RhdHM6CisgICBhcHBsaWQgcmVjdmN0bG1zZyBucmVjdmRhdGFtc2cgbnNlbnRjdGxtc2cgbnNlbnRkYXRhbXNnCisJcmVjdmN0bG1zZzogY2FwaSBtZXNzYWdlcyByZWNlaXZlZCB3aXRob3V0IERBVEFfQjNfSU5ECisJcmVjdmRhdGFtc2c6IGNhcGkgREFUQV9CM19JTkQgcmVjZWl2ZWQKKwlzZW50Y3RsbXNnOiBjYXBpIG1lc3NhZ2VzIHNlbnQgd2l0aG91dCBEQVRBX0IzX1JFUQorCXNlbnRkYXRhbXNnOiBjYXBpIERBVEFfQjNfUkVRIHNlbnQKKyAgIGZvciBleGFtcGxlOgorMSAyMDU3IDE2OTkgMTcyMSAxNjk5CisKKy9wcm9jL2NhcGkvY2FwaTIwOiBzdGF0aXN0aWNzIG9mIGNhcGkubyAoL2Rldi9jYXBpMjApCisgICAgbWlub3Igbm9wZW4gbnJlY3Zkcm9wbXNnIG5yZWN2Y3RsbXNnIG5yZWN2ZGF0YW1zZyBzZW50Y3RsbXNnIHNlbnRkYXRhbXNnCisJbWlub3I6IG1pbm9yIGRldmljZSBudW1iZXIgb2YgY2FwaSBkZXZpY2UKKwlub3BlbjogbnVtYmVyIG9mIGNhbGxzIHRvIGRldmljZXMgb3BlbgorCW5yZWN2ZHJvcG1zZzogY2FwaSBtZXNzYWdlcyBkcm9wcGVkIChtZXNzYWdlcyBpbiByZWN2cXVldWUgaW4gY2xvc2UpCisJbnJlY3ZjdGxtc2c6IGNhcGkgbWVzc2FnZXMgcmVjZWl2ZWQgd2l0aG91dCBEQVRBX0IzX0lORAorCW5yZWN2ZGF0YW1zZzogY2FwaSBEQVRBX0IzX0lORCByZWNlaXZlZAorCW5zZW50Y3RsbXNnOiBjYXBpIG1lc3NhZ2VzIHNlbnQgd2l0aG91dCBEQVRBX0IzX1JFUQorCW5zZW50ZGF0YW1zZzogY2FwaSBEQVRBX0IzX1JFUSBzZW50CisKKyAgIGZvciBleGFtcGxlOgorMSAyIDE4IDAgMTYgMgorCisvcHJvYy9jYXBpL2NhcGlkcnY6IHN0YXRpc3RpY3Mgb2YgY2FwaWRydi5vIChjYXBpIG1lc3NhZ2VzKQorICAgIG5yZWN2Y3RsbXNnIG5yZWN2ZGF0YW1zZyBzZW50Y3RsbXNnIHNlbnRkYXRhbXNnCisJbnJlY3ZjdGxtc2c6IGNhcGkgbWVzc2FnZXMgcmVjZWl2ZWQgd2l0aG91dCBEQVRBX0IzX0lORAorCW5yZWN2ZGF0YW1zZzogY2FwaSBEQVRBX0IzX0lORCByZWNlaXZlZAorCW5zZW50Y3RsbXNnOiBjYXBpIG1lc3NhZ2VzIHNlbnQgd2l0aG91dCBEQVRBX0IzX1JFUQorCW5zZW50ZGF0YW1zZzogY2FwaSBEQVRBX0IzX1JFUSBzZW50CisgICBmb3IgZXhhbXBsZToKKzI3ODAgMjIyNiAyMjU2IDIyMjYKKworL3Byb2MvY2FwaS9jb250cm9sbGVyOgorICAgY29udHJvbGxlciBkcml2ZXJuYW1lIHN0YXRlIGNhcmRuYW1lICAgY29udHJvbGxlcmluZm8KKyAgIGZvciBleGFtcGxlOgorMSBiMXBjaSAgICAgIHJ1bm5pbmcgIGIxcGNpLWUwMDAgICAgICAgQjEgMy4wNy0wMSAweGUwMDAgMTkKKzIgdDFpc2EgICAgICBydW5uaW5nICB0MWlzYS00NTAgICAgICAgIEIxIDMuMDctMDEgMHg0NTAgMTEgMAorMyBiMXBjbWNpYSAgIHJ1bm5pbmcgIG0yLTE1MCAgICAgICAgICAgQjEgMy4wNy0wMSAweDE1MCA1CisKKy9wcm9jL2NhcGkvY29udHJzdGF0czoKKyAgICBjb250cm9sbGVyIG5yZWN2Y3RsbXNnIG5yZWN2ZGF0YW1zZyBzZW50Y3RsbXNnIHNlbnRkYXRhbXNnCisJbnJlY3ZjdGxtc2c6IGNhcGkgbWVzc2FnZXMgcmVjZWl2ZWQgd2l0aG91dCBEQVRBX0IzX0lORAorCW5yZWN2ZGF0YW1zZzogY2FwaSBEQVRBX0IzX0lORCByZWNlaXZlZAorCW5zZW50Y3RsbXNnOiBjYXBpIG1lc3NhZ2VzIHNlbnQgd2l0aG91dCBEQVRBX0IzX1JFUQorCW5zZW50ZGF0YW1zZzogY2FwaSBEQVRBX0IzX1JFUSBzZW50CisgICBmb3IgZXhhbXBsZToKKzEgMjg0NSAyMjcyIDIzMTAgMjI3NAorMiAyIDAgMiAwCiszIDIgMCAyIDAKKworL3Byb2MvY2FwaS9kcml2ZXI6CisgICBkcml2ZXJuYW1lIG5jb250cm9sbGVyCisgICBmb3IgZXhhbXBsZToKK2IxcGNpICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKK3QxaXNhICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKK2IxcGNtY2lhICAgICAgICAgICAgICAgICAgICAgICAgIDEKK2IxaXNhICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKworL3Byb2MvY2FwaS9uY2NpOgorICAgYXBsbGlkIG5jY2kgd2luc2l6ZSBzZW5kd2luZG93CisgICBmb3IgZXhhbXBsZToKKzEgMHgxMDEwMSA4IDAKKworL3Byb2MvY2FwaS91c2Vyczoga2VybmVsbW9kdWxlcyB0aGF0IHVzZSB0aGUga2VybmVsY2FwaS4KKyAgIG5hbWUKKyAgIGZvciBleGFtcGxlOgorY2FwaWRydgorY2FwaTIwCisKK1F1ZXN0aW9ucworLS0tLS0tLS0tCitDaGVjayBvdXQgdGhlIEZBUSAoZnRwLmlzZG40bGludXguZGUpIG9yIHN1YnNjcmliZSB0byB0aGUKK2xpbnV4LWF2bWIxQGNhbGxlLmluLWJlcmxpbi5kZSBtYWlsaW5nIGxpc3QgYnkgc2VuZGluZworYSBtYWlsIHRvIG1ham9yZG9tb0BjYWxsZS5pbi1iZXJsaW4uZGUgd2l0aAorc3Vic2NyaWJlIGxpbnV4LWF2bWIxCitpbiB0aGUgYm9keS4KKworR2VybWFuIGRvY3VtZW50YXRpb24gYW5kIHNldmVyYWwgc2NyaXB0cyBjYW4gYmUgZm91bmQgYXQKK2Z0cDovL2Z0cC5hdm0uZGUvY2FyZHdhcmUvYjEvbGludXgvCisKK0J1Z3MgCistLS0tCitJZiB5b3UgZmluZCBhbnkgcGxlYXNlIGxldCBtZSBrbm93LiAKKworRW5qb3ksCisKK0NhcnN0ZW4gUGFldGggKGNhbGxlQGNhbGxlLmluLWJlcmxpbi5kZSkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaXNkbi9SRUFETUUuY29uY2FwIGIvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5jb25jYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc2ZDc0OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaXNkbi9SRUFETUUuY29uY2FwCkBAIC0wLDAgKzEsMjU5IEBACitEZXNjcmlwdGlvbiBvZiB0aGUgImNvbmNhcCIgZW5jYXBzdWxhdGlvbiBwcm90b2NvbCBpbnRlcmZhY2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgImNvbmNhcCIgaW50ZXJmYWNlIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYnkgbmV0d29yayBkZXZpY2UKK2RyaXZlcnMgdGhhdCBuZWVkIHRvIHByb2Nlc3MgYW4gZW5jYXBzdWxhdGlvbiBwcm90b2NvbC4gCitJdCBpcyBhc3N1bWVkIHRoYXQgdGhlIHByb3RvY29sIGludGVyYWN0cyB3aXRoIGEgbGludXggbmV0d29yayBkZXZpY2UgYnkKKy0gZGF0YSB0cmFuc21pc3Npb24KKy0gY29ubmVjdGlvbiBjb250cm9sIChlc3RhYmxpc2gsIHJlbGVhc2UpCitUaHVzLCB0aGUgbW5lbW9uaWM6ICJDT05uZWN0aW9uIENPTnRyb2xsaW5nIGVOQ0FQc3VsYXRpb24gUHJvdG9jb2wiLgorCitUaGlzIGlzIGN1cnJlbnRseSBvbmx5IHVzZWQgaW5zaWRlIHRoZSBpc2RuIHN1YnN5c3RlbS4gQnV0IGl0IG1pZ2h0CithbHNvIGJlIHVzZWZ1bCB0byBvdGhlciBraW5kcyBvZiBuZXR3b3JrIGRldmljZXMuIFRodXMsIGlmIHlvdSB3YW50Cit0byBzdWdnZXN0IGNoYW5nZXMgdGhhdCBpbXByb3ZlIHVzYWJpbGl0eSBvciBwZXJmb3JtYW5jZSBvZiB0aGUKK2ludGVyZmFjZSwgcGxlYXNlIGxldCBtZSBrbm93LiBJJ20gd2lsbGluZyB0byBpbmNsdWRlIHRoZW0gaW4gZnV0dXJlCityZWxlYXNlcyAoZXZlbiBpZiBJIG5lZWRlZCB0byBhZGFwdCB0aGUgY3VycmVudCBpc2RuIGNvZGUgdG8gdGhlCitjaGFuZ2VkIGludGVyZmFjZSkuCisKKworV2h5IGlzIHRoaXMgdXNlZnVsPworPT09PT09PT09PT09PT09PT09PQorCitUaGUgZW5jYXBzdWxhdGlvbiBwcm90b2NvbCB1c2VkIG9uIHRvcCBvZiBXQU4gY29ubmVjdGlvbnMgb3IgcGVybWFuZW50Citwb2ludC10by1wb2ludCBsaW5rcyBhcmUgZnJlcXVlbnRseSBjaG9zZW4gdXBvbiBiaWxhdGVyYWwgYWdyZWVtZW50LgorVGh1cywgYSBkZXZpY2UgZHJpdmVyIGZvciBhIGNlcnRhaW4gdHlwZSBvZiBoYXJkd2FyZSBtdXN0IHN1cHBvcnQKK3NldmVyYWwgZGlmZmVyZW50IGVuY2Fwc3VsYXRpb24gcHJvdG9jb2xzIGF0IG9uY2UuCisKK1RoZSBpc2RuIGRldmljZSBkcml2ZXIgZGlkIGFscmVhZHkgc3VwcG9ydCBzZXZlcmFsIGRpZmZlcmVudAorZW5jYXBzdWxhdGlvbiBwcm90b2NvbHMuIFRoZSBlbmNhcHN1bGF0aW9uIHByb3RvY29sIGlzIGNvbmZpZ3VyZWQgYnkgYQordXNlciBzcGFjZSB1dGlsaXR5IChpc2RuY3RybCkuIFRoZSBpc2RuIG5ldHdvcmsgaW50ZXJmYWNlIGNvZGUgdGhlbgordXNlcyBzZXZlcmFsIGNhc2Ugc3RhdGVtZW50cyB3aGljaCBzZWxlY3QgYXBwcm9wcmlhdGUgYWN0aW9ucworZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50bHkgY29uZmlndXJlZCBlbmNhcHN1bGF0aW9uIHByb3RvY29sLgorCitJbiBjb250cmFzdCwgTEFOIG5ldHdvcmsgaW50ZXJmYWNlcyBhbHdheXMgdXNlZCBhIHNpbmdsZSBlbmNhcHN1bGF0aW9uCitwcm90b2NvbCB3aGljaCBpcyB1bmlxdWUgdG8gdGhlIGhhcmR3YXJlIHR5cGUgb2YgdGhlIGludGVyZmFjZS4gVGhlIExBTgorZW5jYXBzdWxhdGlvbiBpcyB1c3VhbGx5IGRvbmUgYnkganVzdCBzdGlja2luZyBhIGhlYWRlciBvbiB0aGUgZGF0YS4gVGh1cywKK3RyYWRpdGlvbmFsIGxpbnV4IG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMgdXNlZCB0byBwcm9jZXNzIHRoZQorZW5jYXBzdWxhdGlvbiBwcm90b2NvbCBkaXJlY3RseSAodXN1YWxseSBieSBqdXN0IHByb3ZpZGluZyBhIGhhcmRfaGVhZGVyKCkKK21ldGhvZCBpbiB0aGUgZGV2aWNlIHN0cnVjdHVyZSkgdXNpbmcgc29tZSBoYXJkd2FyZSB0eXBlIHNwZWNpZmljIHN1cHBvcnQKK2Z1bmN0aW9ucy4gVGhpcyBpcyBzaW1wbGUsIGRpcmVjdCBhbmQgZWZmaWNpZW50LiBCdXQgaXQgZG9lc24ndCBmaXQgYWxsCit0aGUgcmVxdWlyZW1lbnRzIGZvciBjb21wbGV4IFdBTiBlbmNhcHN1bGF0aW9ucy4gCisKKworICAgVGhlIGNvbmZpZ3VyYWJpbGl0eSBvZiB0aGUgZW5jYXBzdWxhdGlvbiBwcm90b2NvbCB0byBiZSB1c2VkCisgICBtYWtlcyBpc2RuIG5ldHdvcmsgaW50ZXJmYWNlcyBtb3JlIGZsZXhpYmxlLCBidXQgYWxzbyBtdWNoIG1vcmUKKyAgIGNvbXBsZXggdGhhbiB0cmFkaXRpb25hbCBsYW4gbmV0d29yayBpbnRlcmZhY2VzLgorCisKK01hbnkgRW5jYXBzdWxhdGlvbiBwcm90b2NvbHMgdXNlZCBvbiB0b3Agb2YgV0FOIGNvbm5lY3Rpb25zIHdpbGwgbm90IGp1c3QKK3N0aWNrIGEgaGVhZGVyIG9uIHRoZSBkYXRhLiBUaGV5IGFsc28gbWlnaHQgbmVlZCB0byBzZXQgdXAgb3IgcmVsZWFzZQordGhlIFdBTiBjb25uZWN0aW9uLiBUaGV5IGFsc28gbWlnaHQgd2FudCB0byBzZW5kIG90aGVyIGRhdGEgZm9yIHRoZWlyCitwcml2YXRlIHB1cnBvc2Ugb3ZlciB0aGUgd2lyZSwgZS5nLiBwcHAgZG9lcyBhIGxvdCBvZiBsaW5rIGxldmVsCituZWdvdGlhdGlvbiBiZWZvcmUgdGhlIGZpcnN0IHBpZWNlIG9mIHVzZXIgZGF0YSBjYW4gYmUgdHJhbnNtaXR0ZWQuCitTdWNoIGVuY2Fwc3VsYXRpb24gcHJvdG9jb2xzIGZvciBXQU4gZGV2aWNlcyBhcmUgdHlwaWNhbGx5IG1vcmUgY29tcGxleAordGhhbiBlbmNhcHN1bGF0aW9uIHByb3RvY29scyBmb3IgbGFuIGRldmljZXMuIFRodXMsIG5ldHdvcmsgaW50ZXJmYWNlCitjb2RlIGZvciB0eXBpY2FsIFdBTiBkZXZpY2VzIGFsc28gdGVuZHMgdG8gYmUgbW9yZSBjb21wbGV4LgorCisKK0luIG9yZGVyIHRvIHN1cHBvcnQgTGludXgnIHgyNSBQTFAgaW1wbGVtZW50YXRpb24gb24gdG9wIG9mCitpc2RuIG5ldHdvcmsgaW50ZXJmYWNlcyBJIGNvdWxkIGhhdmUgaW50cm9kdWNlZCB5ZXQgYW5vdGhlciBicmFuY2ggdG8KK3RoZSB2YXJpb3VzIGNhc2Ugc3RhdGVtZW50cyBpbnNpZGUgZHJpdmVycy9pc2RuL2lzZG5fbmV0LmMuCitUaGlzIGV2ZW50dWFsbHkgbWFkZSBpc2RuX25ldC5jIGV2ZW4gbW9yZSBjb21wbGV4LiBJbiBhZGRpdGlvbiwgaXQgbWFkZQoraXNkbl9uZXQuYyBoYXJkZXIgdG8gbWFpbnRhaW4uIFRodXMsIGJ5IGlkZW50aWZ5aW5nIGFuIGFic3RyYWN0CitpbnRlcmZhY2UgYmV0d2VlbiB0aGUgbmV0d29yayBpbnRlcmZhY2UgY29kZSBhbmQgdGhlIGVuY2Fwc3VsYXRpb24KK3Byb3RvY29sLCBjb21wbGV4aXR5IGNvdWxkIGJlIHJlZHVjZWQgYW5kIG1haW50YWluYWJpbGl0eSBjb3VsZCBiZQoraW5jcmVhc2VkLgorCisKK0xpa2V3aXNlLCBhIHNpbWlsYXIgZW5jYXBzdWxhdGlvbiBwcm90b2NvbCB3aWxsIGZyZXF1ZW50bHkgYmUgbmVlZGVkIGJ5CitzZXZlcmFsIGRpZmZlcmVudCBpbnRlcmZhY2VzIG9mIGV2ZW4gZGlmZmVyZW50IGhhcmR3YXJlIHR5cGUsIGUuZy4gdGhlCitzeW5jaHJvbm91cyBwcHAgaW1wbGVtZW50YXRpb24gdXNlZCBieSB0aGUgaXNkbiBkcml2ZXIgYW5kIHRoZQorYXN5bmNocm9ub3VzIHBwcCBpbXBsZW1lbnRhdGlvbiB1c2VkIGJ5IHRoZSBwcHAgZHJpdmVyIGhhdmUgYSBsb3Qgb2YKK3NpbWlsYXIgY29kZSBpbiB0aGVtLiBCeSBjbGVhbmx5IHNlcGFyYXRpbmcgdGhlIGVuY2Fwc3VsYXRpb24gcHJvdG9jb2wKK2Zyb20gdGhlIGhhcmR3YXJlIHNwZWNpZmljIGludGVyZmFjZSBzdHVmZiBzdWNoIGNvZGUgY291bGQgYmUgc2hhcmVkCitiZXR0ZXIgaW4gZnV0dXJlLgorCisKK1doZW4gb3BlcmF0aW5nIG92ZXIgZGlhbC11cC1jb25uZWN0aW9ucyAoZS5nLiB0ZWxlcGhvbmUgbGluZXMgdmlhIG1vZGVtLAorbm9uLXBlcm1hbmVudCB2aXJ0dWFsIGNpcmN1aXRzIG9mIHdpZGUgYXJlYSBuZXR3b3JrcywgSVNETikgbWFueQorZW5jYXBzdWxhdGlvbiBwcm90b2NvbHMgd2lsbCBuZWVkIHRvIGNvbnRyb2wgdGhlIGNvbm5lY3Rpb24uIFRoZXJlZm9yZSwKK3NvbWUgYmFzaWMgY29ubmVjdGlvbiBjb250cm9sIHByaW1pdGl2ZXMgYXJlIHN1cHBvcnRlZC4gVGhlIHR5cGUgYW5kCitzZW1hbnRpY3Mgb2YgdGhlIGNvbm5lY3Rpb24gKGkuZSB0aGUgSVNPIGxheWVyIHdoZXJlIGNvbm5lY3Rpb24gc2VydmljZQoraXMgcHJvdmlkZWQpIGlzIG91dHNpZGUgb3VyIHNjb3BlIGFuZCBtaWdodCBiZSBkaWZmZXJlbnQgZGVwZW5kaW5nIG9uCit0aGUgZW5jYXBzdWxhdGlvbiBwcm90b2NvbCB1c2VkLCBlLmcuIGZvciBhIHBwcCBtb2R1bGUgdXNpbmcgb3VyIHNlcnZpY2UKK29uIHRvcCBvZiBhIG1vZGVtIGNvbm5lY3Rpb24gYSBjb25uZWN0X3JlcXVlc3Qgd2lsbCByZXN1bHQgaW4gZGlhbGluZworYSAoc29tZXdoZXJlIGVsc2UgY29uZmlndXJlZCkgcmVtb3RlIHBob25lIG51bWJlci4gRm9yIGFuIFgyNS1pbnRlcmZhY2UKK21vZHVsZSAoTEFQQiBzZW1hbnRpY3MsIGFzIGRlZmluZWQgaW4gRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3gyNS1pZmFjZS50eHQpCithIGNvbm5lY3RfcmVxdWVzdCB3aWxsIGFzayBmb3IgZXN0YWJsaXNoaW5nIGEgcmVsaWFibGUgbGFwYgorZGF0YWxpbmsgY29ubmVjdGlvbi4KKworCitUaGUgZW5jYXBzdWxhdGlvbiBwcm90b2NvbCBjdXJyZW50bHkgcHJvdmlkZXMgdGhlIGZvbGxvd2luZworc2VydmljZSBwcmltaXRpdmVzIHRvIHRoZSBuZXR3b3JrIGRldmljZS4KKworLSBjcmVhdGUgYSBuZXcgZW5jYXBzdWxhdGlvbiBwcm90b2NvbCBpbnN0YW5jZQorLSBkZWxldGUgZW5jYXBzdWxhdGlvbiBwcm90b2NvbCBpbnN0YW5jZSBhbmQgZnJlZSBhbGwgaXRzIHJlc291cmNlcworLSBpbml0aWFsaXplIChvcGVuKSB0aGUgZW5jYXBzdWxhdGlvbiBwcm90b2NvbCBpbnN0YW5jZSBmb3IgdXNlLgorLSBkZWFjdGl2YXRlIChjbG9zZSkgYW4gZW5jYXBzdWxhdGlvbiBwcm90b2NvbCBpbnN0YW5jZS4KKy0gcHJvY2VzcyAoeG1pdCkgZGF0YSBoYW5kZWQgZG93biBieSB1cHBlciBwcm90b2NvbCBsYXllcgorLSByZWNlaXZlIGRhdGEgZnJvbSBsb3dlciAoaGFyZHdhcmUpIGxheWVyCistIHByb2Nlc3MgY29ubmVjdCBpbmRpY2F0aW9uIGZyb20gbG93ZXIgKGhhcmR3YXJlKSBsYXllcgorLSBwcm9jZXNzIGRpc2Nvbm5lY3QgaW5kaWNhdGlvbiBmcm9tIGxvd2VyIChoYXJkd2FyZSkgbGF5ZXIKKworCitUaGUgbmV0d29yayBpbnRlcmZhY2UgZHJpdmVyIGFjY2Vzc2VzIHRob3NlIHByaW1pdGl2ZXMgdmlhIGNhbGxiYWNrcworcHJvdmlkZWQgYnkgdGhlIGVuY2Fwc3VsYXRpb24gcHJvdG9jb2wgaW5zdGFuY2Ugd2l0aGluIGEKK3N0cnVjdCBjb25jYXBfcHJvdG9fb3BzLgorCitzdHJ1Y3QgY29uY2FwX3Byb3RvX29wc3sKKworCS8qIGNyZWF0ZSBhIG5ldyBlbmNhcHN1bGF0aW9uIHByb3RvY29sIGluc3RhbmNlIG9mIHNhbWUgdHlwZSAqLworCXN0cnVjdCBjb25jYXBfcHJvdG8gKiAgKCpwcm90b19uZXcpICh2b2lkKTsKKworCS8qIGRlbGV0ZSBlbmNhcHN1bGF0aW9uIHByb3RvY29sIGluc3RhbmNlIGFuZCBmcmVlIGFsbCBpdHMgcmVzb3VyY2VzLgorCSAgIGNwcm90IG1heSBubyBsb25nZXIgYmUgcmVmZXJlbmNlZCBhZnRlciBjYWxsaW5nIHRoaXMgKi8KKwl2b2lkICgqcHJvdG9fZGVsKShzdHJ1Y3QgY29uY2FwX3Byb3RvICpjcHJvdCk7CisKKwkvKiBpbml0aWFsaXplIHRoZSBwcm90b2NvbCdzIGRhdGEuIFRvIGJlIGNhbGxlZCBhdCBpbnRlcmZhY2Ugc3RhcnR1cAorCSAgIG9yIHdoZW4gdGhlIGRldmljZSBkcml2ZXIgcmVzZXRzIHRoZSBpbnRlcmZhY2UuIEFsbCBzZXJ2aWNlcyBvZiB0aGUKKwkgICBlbmNhcHN1bGF0aW9uIHByb3RvY29sIG1heSBiZSB1c2VkIGFmdGVyIHRoaXMqLworCWludCAoKnJlc3RhcnQpKHN0cnVjdCBjb25jYXBfcHJvdG8gKmNwcm90LCAKKwkJICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAorCQkgICAgICAgc3RydWN0IGNvbmNhcF9kZXZpY2Vfb3BzICpkb3BzKTsKKworCS8qIGRlYWN0aXZhdGUgYW4gZW5jYXBzdWxhdGlvbiBwcm90b2NvbCBpbnN0YW5jZS4gVGhlIGVuY2Fwc3VsYXRpb24KKwkgICBwcm90b2NvbCBtYXkgbm90IGNhbGwgYW55ICpkb3BzIG1ldGhvZHMgYWZ0ZXIgdGhpcy4gKi8KKwlpbnQgKCpjbG9zZSkoc3RydWN0IGNvbmNhcF9wcm90byAqY3Byb3QpOworCisJLyogcHJvY2VzcyBhIGZyYW1lIGhhbmRlZCBkb3duIHRvIHVzIGJ5IHVwcGVyIGxheWVyICovCisJaW50ICgqZW5jYXBfYW5kX3htaXQpKHN0cnVjdCBjb25jYXBfcHJvdG8gKmNwcm90LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKworCS8qIHRvIGJlIGNhbGxlZCBmb3IgZWFjaCBkYXRhIGVudGl0eSByZWNlaXZlZCBmcm9tIGxvd2VyIGxheWVyKi8gCisJaW50ICgqZGF0YV9pbmQpKHN0cnVjdCBjb25jYXBfcHJvdG8gKmNwcm90LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKworCS8qIHRvIGJlIGNhbGxlZCB3aGVuIGEgY29ubmVjdGlvbiB3YXMgc2V0IHVwL2Rvd24uCisJICAgUHJvdG9jb2xzIHRoYXQgZG9uJ3QgcHJvY2VzcyB0aGVzZSBwcmltaXRpdmVzIG1pZ2h0IGZpbGwgaW4KKwkgICBkdW1teSBtZXRob2RzIGhlcmUgKi8KKwlpbnQgKCpjb25uZWN0X2luZCkoc3RydWN0IGNvbmNhcF9wcm90byAqY3Byb3QpOworCWludCAoKmRpc2Nvbm5faW5kKShzdHJ1Y3QgY29uY2FwX3Byb3RvICpjcHJvdCk7Cit9OworCisKK1RoZSBkYXRhIHN0cnVjdHVyZXMgYXJlIGRlZmluZWQgaW4gdGhlIGhlYWRlciBmaWxlIGluY2x1ZGUvbGludXgvY29uY2FwLmguCisKKworQSBOZXR3b3JrIGludGVyZmFjZSB1c2luZyBlbmNhcHN1bGF0aW9uIHByb3RvY29scyBtdXN0IGFsc28gcHJvdmlkZQorc29tZSBzZXJ2aWNlIHByaW1pdGl2ZXMgdG8gdGhlIGVuY2Fwc3VsYXRpb24gcHJvdG9jb2w6CisKKy0gcmVxdWVzdCBkYXRhIGJlaW5nIHN1Ym1pdHRlZCBieSBsb3dlciBsYXllciAoZGV2aWNlIGhhcmR3YXJlKSAKKy0gcmVxdWVzdCBhIGNvbm5lY3Rpb24gYmVpbmcgc2V0IHVwIGJ5IGxvd2VyIGxheWVyIAorLSByZXF1ZXN0IGEgY29ubmVjdGlvbiBiZWluZyByZWxlYXNlZCBieSBsb3dlciBsYXllcgorCitUaGUgZW5jYXBzdWxhdGlvbiBwcm90b2NvbCBhY2Nlc3NlcyB0aG9zZSBwcmltaXRpdmVzIHZpYSBjYWxsYmFja3MKK3Byb3ZpZGVkIGJ5IHRoZSBuZXR3b3JrIGludGVyZmFjZSB3aXRoaW4gYSBzdHJ1Y3QgY29uY2FwX2RldmljZV9vcHMuCisKK3N0cnVjdCBjb25jYXBfZGV2aWNlX29wc3sKKworCS8qIHRvIHJlcXVlc3QgZGF0YSBiZSBzdWJtaXR0ZWQgYnkgZGV2aWNlICovIAorCWludCAoKmRhdGFfcmVxKShzdHJ1Y3QgY29uY2FwX3Byb3RvICosIHN0cnVjdCBza19idWZmICopOworCisJLyogQ29udHJvbCBtZXRob2RzIG11c3QgYmUgc2V0IHRvIE5VTEwgYnkgZGV2aWNlcyB3aGljaCBkbyBub3QKKwkgICBzdXBwb3J0IGNvbm5lY3Rpb24gY29udHJvbC4gKi8KKwkvKiB0byByZXF1ZXN0IGEgY29ubmVjdGlvbiBiZSBzZXQgdXAgKi8gCisJaW50ICgqY29ubmVjdF9yZXEpKHN0cnVjdCBjb25jYXBfcHJvdG8gKik7CisKKwkvKiB0byByZXF1ZXN0IGEgY29ubmVjdGlvbiBiZSByZWxlYXNlZCAqLworCWludCAoKmRpc2Nvbm5fcmVxKShzdHJ1Y3QgY29uY2FwX3Byb3RvICopOwkKK307CisKK1RoZSBuZXR3b3JrIGludGVyZmFjZSBkb2VzIG5vdCBleHBsaWNpdGx5IHByb3ZpZGUgYSByZWNlaXZlIHNlcnZpY2UKK2JlY2F1c2UgdGhlIGVuY2Fwc3VsYXRpb24gcHJvdG9jb2wgZGlyZWN0bHkgY2FsbHMgbmV0aWZfcngoKS4gCisKKworCisKK0FuIGVuY2Fwc3VsYXRpb24gcHJvdG9jb2wgaXRzZWxmIGlzIGFjdHVhbGx5IHRoZQorc3RydWN0IGNvbmNhcF9wcm90b3sKKwlzdHJ1Y3QgbmV0X2RldmljZSAqbmV0X2RldjsJCS8qIG5ldCBkZXZpY2UgdXNpbmcgb3VyIHNlcnZpY2UgICovCisJc3RydWN0IGNvbmNhcF9kZXZpY2Vfb3BzICpkb3BzOyAvKiBjYWxsYmFja3MgcHJvdmlkZWQgYnkgZGV2aWNlICovCisgCXN0cnVjdCBjb25jYXBfcHJvdG9fb3BzICAqcG9wczsgLyogY2FsbGJhY2tzIHByb3ZpZGVkIGJ5IHVzICovCisJaW50IGZsYWdzOworCXZvaWQgKnByb3RvX2RhdGE7ICAgICAgICAgICAgICAgLyogcHJvdG9jb2wgc3BlY2lmaWMgcHJpdmF0ZSBkYXRhLCB0bworCQkJCQkgICBiZSBhY2Nlc3NlZCB2aWEgKnBvcHMgbWV0aG9kcyBvbmx5Ki8KKwkvKgorCSAgOgorCSAgd2hhdGV2ZXIgCisJICA6CisJICAqLworfTsKKworTW9zdCBvZiB0aGlzIGlzIGZpbGxlZCBpbiB3aGVuIHRoZSBkZXZpY2UgcmVxdWVzdHMgdGhlIHByb3RvY29sIHRvIAorYmUgcmVzZXQgKG9wZW5kKS4gVGhlIG5ldHdvcmsgaW50ZXJmYWNlIG11c3QgcHJvdmlkZSB0aGUgbmV0X2RldiBhbmQKK2RvcHMgcG9pbnRlcnMuIE90aGVyIGNvbmNhcF9wcm90byBtZW1iZXJzIHNob3VsZCBiZSBjb25zaWRlcmVkIHByaXZhdGUKK2RhdGEgdGhhdCBhcmUgb25seSBhY2Nlc3NlZCBieSB0aGUgcG9wcyBjYWxsYmFjayBmdW5jdGlvbnMuIExpa2V3aXNlLAorYSBjb25jYXAgcHJvdG8gc2hvdWxkIGFjY2VzcyB0aGUgbmV0d29yayBkZXZpY2UncyBwcml2YXRlIGRhdGEKK29ubHkgYnkgbWVhbnMgb2YgdGhlIGNhbGxiYWNrcyByZWZlcnJlZCB0byBieSB0aGUgZG9wcyBwb2ludGVyLgorCisKK0EgcG9zc2libGUgZXh0ZW5kZWQgZGV2aWNlIHN0cnVjdHVyZSB3aGljaCB1c2VzIHRoZSBjb25uZWN0aW9uIGNvbnRyb2xsaW5nCitlbmNhcHN1bGF0aW9uIHNlcnZpY2VzIGNvdWxkIGxvb2sgbGlrZSB0aGlzOgorCitzdHJ1Y3QgY29uY2FwX2RldmljZXsKKwlzdHJ1Y3QgbmV0X2RldmljZSBuZXRfZGV2OworCXN0cnVjdCBteV9wcml2ICAvKiBkZXZpY2UtPmxvY2FsIHN0dWZmICovCisJCQkvKiB0aGUgbXlfcHJpdiBzdHJ1Y3QgbWlnaHQgY29udGFpbiBhIAorCQkJICAgc3RydWN0IGNvbmNhcF9kZXZpY2Vfb3BzICpkb3BzOworCSAgICAgICAgICAgICAgICAgICB0byBwcm92aWRlIHRoZSBkZXZpY2Ugc3BlY2lmaWMgY2FsbGJhY2tzCisJCQkqLworCXN0cnVjdCBjb25jYXBfcHJvdG8gKmNwcm90OyAgICAgICAgLyogY2FsbGJhY2tzIHByb3ZpZGVkIGJ5IHByb3RvY29sICovCit9OworCisKKworTWlzYyBUaG91Z2h0cworPT09PT09PT09PT09PQorCitUaGUgY29uY2VwdCBvZiB0aGUgY29uY2FwIHByb3RvIG1pZ2h0IGhlbHAgdG8gcmV1c2UgcHJvdG9jb2wgY29kZSBhbmQKK3JlZHVjZSB0aGUgY29tcGxleGl0eSBvZiBjZXJ0YWluIG5ldHdvcmsgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9ucy4KK1RoZSB0cmFkZSBvZmYgaXMgdGhhdCBpdCBpbnRyb2R1Y2VzIHlldCBhbm90aGVyIHByb2NlZHVyZSBjYWxsIGxheWVyCit3aGVuIHByb2Nlc3NpbmcgdGhlIHByb3RvY29sLiBUaGlzIGhhcyBvZiBjb3Vyc2Ugc29tZSBpbXBhY3Qgb24KK3BlcmZvcm1hbmNlLiBIb3dldmVyLCB0eXBpY2FsbHkgdGhlIGNvbmNhcCBpbnRlcmZhY2Ugd2lsbCBiZSB1c2VkIGJ5CitkZXZpY2VzIGF0dGFjaGVkIHRvIHNsb3cgbGluZXMgKGxpa2UgdGVsZXBob25lLCBpc2RuLCBsZWFzZWQgc3luY2hyb25vdXMKK2xpbmVzKS4gRm9yIHN1Y2ggc2xvdyBsaW5lcywgdGhlIG92ZXJoZWFkIGlzIHByb2JhYmx5IG5lZ2xpZ2libGUuCitUaGlzIG1pZ2h0IG5vIGxvbmdlciBob2xkIGZvciBjZXJ0YWluIGhpZ2ggc3BlZWQgV0FOIGxpbmtzIChsaWtlCitBVE0pLgorCisKK0lmIGdlbmVyYWwgbGludXggbmV0d29yayBpbnRlcmZhY2VzIGV4cGxpY2l0bHkgc3VwcG9ydGVkIGNvbmNhcAorcHJvdG9jb2xzIChlLmcuIGJ5IGEgbWVtYmVyIHN0cnVjdCBjb25jYXBfcHJvdG8qIGluIHN0cnVjdCBuZXRfZGV2aWNlKQordGhlbiB0aGUgaW50ZXJmYWNlIG9mIHRoZSBzZXJ2aWNlIGZ1bmN0aW9uIGNvdWxkIGJlIGNoYW5nZWQKK2J5IHBhc3NpbmcgYSBwb2ludGVyIG9mIHR5cGUgKHN0cnVjdCBuZXRfZGV2aWNlKikgaW5zdGVhZCBvZgordHlwZSAoc3RydWN0IGNvbmNhcF9wcm90byopLiBEb2luZyBzbyB3b3VsZCBtYWtlIG1hbnkgb2YgdGhlIHNlcnZpY2UKK2Z1bmN0aW9ucyBjb21wYXRpYmxlIHRvIG5ldHdvcmsgZGV2aWNlIHN1cHBvcnQgZnVuY3Rpb25zLgorCitlLmcuIGluc3RlYWQgb2YgdGhlIGNvbmNhcCBwcm90b2NvbCdzIHNlcnZpY2UgZnVuY3Rpb24KKworICBpbnQgKCplbmNhcF9hbmRfeG1pdCkoc3RydWN0IGNvbmNhcF9wcm90byAqY3Byb3QsIHN0cnVjdCBza19idWZmICpza2IpOworCit3ZSBjb3VsZCBoYXZlCisKKyAgaW50ICgqZW5jYXBfYW5kX3htaXQpKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKworQXMgdGhpcyBpcyBjb21wYXRpYmxlIHRvIHRoZSBkZXYtPmhhcmRfc3RhcnRfeG1pdCgpIG1ldGhvZCwgdGhlIGRldmljZQorZHJpdmVyIGNvdWxkIGRpcmVjdGx5IHJlZ2lzdGVyIHRoZSBjb25jYXAgcHJvdG9jb2wncyBlbmNhcF9hbmRfeG1pdCgpCitmdW5jdGlvbiBhcyBpdHMgaGFyZF9zdGFydF94bWl0KCkgbWV0aG9kLiBUaGlzIHdvdWxkIGVsaW1pbmF0ZSBvbmUKK3Byb2NlZHVyZSBjYWxsIGxheWVyLgorCisKK1RoZSBkZXZpY2UncyBkYXRhIHJlcXVlc3QgZnVuY3Rpb24gY291bGQgYWxzbyBiZSBkZWZpbmVkIGFzCisgCisgIGludCAoKmRhdGFfcmVxKShzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7CisKK1RoaXMgbWlnaHQgZXZlbiBhbGxvdyBmb3Igc29tZSBwcm90b2NvbCBzdGFja2luZy4gQW5kIHRoZSBuZXR3b3JrCitpbnRlcmZhY2UgbWlnaHQgZXZlbiByZWdpc3RlciB0aGUgc2FtZSBkYXRhX3JlcSgpIGZ1bmN0aW9uIGRpcmVjdGx5CithcyBpdHMgaGFyZF9zdGFydF94bWl0KCkgbWV0aG9kIHdoZW4gYSB6ZXJvIGxheWVyIGVuY2Fwc3VsYXRpb24KK3Byb3RvY29sIGlzIGNvbmZpZ3VyZWQuIFRodXMsIGVsaW1pbmF0aW5nIHRoZSBwZXJmb3JtYW5jZSBwZW5hbHR5CitvZiB0aGUgY29uY2FwIGludGVyZmFjZSB3aGVuIGEgdHJpdmlhbCBjb25jYXAgcHJvdG9jb2wgaXMgdXNlZC4KK05ldmVydGhlbGVzcywgdGhlIGRldmljZSByZW1haW5zIGFibGUgdG8gc3VwcG9ydCBlbmNhcHN1bGF0aW9uCitwcm90b2NvbCBjb25maWd1cmF0aW9uLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lzZG4vUkVBRE1FLmRpdmVyc2lvbiBiL0RvY3VtZW50YXRpb24vaXNkbi9SRUFETUUuZGl2ZXJzaW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkZGNkNWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lzZG4vUkVBRE1FLmRpdmVyc2lvbgpAQCAtMCwwICsxLDEyNyBAQAorVGhlIGlzZG4gZGl2ZXJzaW9uIHNlcnZpY2VzIGFyZSBhIHN1cHBvcnRpbmcgbW9kdWxlIHdvcmtpbmcgdG9nZXRoZXIgd2l0aAordGhlIGlzZG40bGludXggYW5kIHRoZSBIaVNheCBtb2R1bGUgZm9yIHBhc3NpdmUgY2FyZHMuIAorQWN0aXZlIGNhcmRzLCBUQXMgYW5kIGNhcmRzIHVzaW5nIGEgb3duIG9yIG90aGVyIGRyaXZlciB0aGFuIHRoZSBIaVNheCAKK21vZHVsZSBuZWVkIHRvIGJlIGFkYXB0ZWQgdG8gdGhlIEhMPC0+TEwgaW50ZXJmYWNlIGRlc2NyaWJlZCBpbiBhIHNlcGFyYXRlIAorZG9jdW1lbnQuIFRoZSBkaXZlcnNpb24gc2VydmljZXMgbWF5IGJlIHVzZWQgd2l0aCBhbGwgY2FyZHMgc3VwcG9ydGVkIGJ5IAordGhlIEhpU2F4IGRyaXZlci4KK1RoZSBkaXZlcnNpb24ga2VybmVsIGludGVyZmFjZSBhbmQgY29udHJvbGxpbmcgdG9vbCBkaXZlcnRjdHJsIHdlcmUgd3JpdHRlbgorYnkgV2VybmVyIENvcm5lbGl1cyAod2VybmVyQGlzZG40bGludXguZGUgb3Igd2VybmVyQHRpdHJvLmRlKSB1bmRlciB0aGUKK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorCisgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisKK1RhYmxlIG9mIGNvbnRlbnRzCis9PT09PT09PT09PT09PT09PQorCisxLiBGZWF0dXJlcyBvZiB0aGUgaTRsIGRpdmVyc2lvbiBzZXJ2aWNlcyAKKyAgIChPciB3aGF0IGNhbiB0aGUgaTRsIGRpdmVyc2lvbiBzZXJ2aWNlcyBkbyBmb3IgbWUpCisKKzIuIFJlcXVpcmVkIGhhcmQtIGFuZCBzb2Z0d2FyZQorCiszLiBDb21waWxpbmcsIGluc3RhbGxpbmcgYW5kIGxvYWRpbmcvdW5sb2FkaW5nIHRoZSBtb2R1bGUgIAorICAgVHJhY2luZyBjYWxsaW5nIGFuZCBkaXZlcnNpb24gaW5mb3JtYXRpb24gCisKKzQuIFRyYWNpbmcgY2FsbGluZyBhbmQgZGl2ZXJzaW9uIGluZm9ybWF0aW9uCisgCis1LiBGb3JtYXQgb2YgdGhlIGRpdmVydCBkZXZpY2UgQVNDSUkgb3V0cHV0CisgCisKKzEuIEZlYXR1cmVzIG9mIHRoZSBpNGwgZGl2ZXJzaW9uIHNlcnZpY2VzIAorICAgKE9yIHdoYXQgY2FuIHRoZSBpNGwgZGl2ZXJzaW9uIHNlcnZpY2VzIGRvIGZvciBtZSkKKworICAgVGhlIGk0bCBkaXZlcnNpb24gc2VydmljZXMgb2ZmZXJzIGNhbGwgZm9yd2FyZGluZyBhbmQgbG9nZ2luZyBub3JtYWxseSAKKyAgIG9ubHkgc3VwcG9ydGVkIGJ5IGlzZG4gcGhvbmVzLiBJbmNvbWluZyBjYWxscyBtYXkgYmUgZGl2ZXJ0ZWQgCisgICB1bmNvbmRpdGlvbmFsbHkgKENGVSksIHdoZW4gbm90IHJlYWNoYWJsZSAoQ0ZOUikgb3Igb24gYnVzeSBjb25kaXRpb24gCisgICAoQ0ZCKS4gCisgICBUaGUgZGl2ZXJzaW9ucyBtYXkgYmUgaW52b2tlZCBzdGF0aWNhbGx5IGluIHRoZSBwcm92aWRlcnMgZXhjaGFuZ2UKKyAgIGFzIG5vcm1hbGx5IGRvbmUgYnkgaXNkbiBwaG9uZXMuIEluIHRoaXMgY2FzZSBhbGwgaW5jb21pbmcgY2FsbHMKKyAgIHdpdGggYSBzcGVjaWFsIChvciBhbGwpIHNlcnZpY2UgaWRlbnRpZmllcnMgYXJlIGZvcndhcmRlZCBpZiB0aGUgCisgICBmb3J3YXJkaW5nIHJlYXNvbiBpcyBtZXQuIEFjdGl2YXRlZCBzdGF0aWMgc2VydmljZXMgbWF5IGFsc28gYmUgCisgICBpbnRlcnJvZ2F0ZWQgKHF1ZXJpZWQpLgorICAgVGhlIGk0bCBkaXZlcnNpb24gc2VydmljZXMgYWRkaXRpb25hbGx5IG9mZmVycyBhIGR5bmFtaWMgdmVyc2lvbiBvZgorICAgY2FsbCBmb3J3YXJkaW5nIHdoaWNoIGlzIG5vdCBwcmVwcm9ncmFtbWVkIGluc2lkZSB0aGUgcHJvdmlkZXJzIGV4Y2hhbmdlCisgICBidXQgZHluYW1pY2FsbHkgYWN0aXZhdGVkIGJ5IGk0bC4KKyAgIEluIHRoaXMgY2FzZSBhbGwgaW5jb21pbmcgY2FsbHMgYXJlIGNoZWNrZWQgYnkgcnVsZXMgdGhhdCBtYXkgYmUKKyAgIGNvbXBhcmVkIHRvIHRoZSBtZWNoYW5pc20gb2YgaXBmd2FkbSBvciBpcGNoYWlucy4gSWYgYSBnaXZlbiBydWxlIG1hdGNoZXMKKyAgIHRoZSBjaGVja2luZyBwcm9jZXNzIGlzIGZpbmlzaGVkIGFuZCB0aGUgcnVsZSBtYXRjaGluZyB3aWxsIGJlIGFwcGxpZWQKKyAgIHRvIHRoZSBjYWxsLgorICAgVGhlIHJ1bGVzIGluY2x1ZGUgcHJpbWFyeSBhbmQgc2Vjb25kYXJ5IHNlcnZpY2UgaWRlbnRpZmllcnMsIGNhbGxlZCAKKyAgIG51bWJlciBhbmQgc3ViYWRkcmVzcywgY2FsbGVycyBudW1iZXIgYW5kIHN1YmFkZHJlc3MgYW5kIHdoZXRoZXIgdGhlIHJ1bGUKKyAgIG1hdGNoZXMgdG8gYWxsIGZpbHRlcmVkIGNhbGxzIG9yIG9ubHkgdGhvc2Ugd2hlbiBhbGwgQi1jaGFubmVsIHJlc291cmNlcworICAgYXJlIGV4aGF1c3RlZC4KKyAgIEFjdGlvbnMgdGhhdCBtYXkgYmUgaW52b2tlZCBieSBhIHJ1bGUgYXJlIGlnbm9yZSwgcHJvY2VlZCwgcmVqZWN0LCAKKyAgIGRpcmVjdCBkaXZlcnQgb3IgZGVsYXllZCBkaXZlcnQgb2YgYSBjYWxsLgorICAgQWxsIGluY29taW5nIGNhbGxzIG1hdGNoaW5nIGEgcnVsZSBleGNlcHQgdGhlIGlnbm9yZSBydWxlIGEgcmVwb3J0ZWQgYW5kCisgICBsb2dnZWQgYXMgQVNDSUkgdmlhIHRoZSBwcm9jIGZpbGVzeXN0ZW0gKC9wcm9jL25ldC9pc2RuL2RpdmVydCkuIElmIHByb2NlZWQKKyAgIGlzIHNlbGVjdGVkIHRoZSBjYWxsIHdpbGwgYmUgaGVsZCBpbiBhIHByb2NlZWRpbmcgc3RhdGUgKHdpdGhvdXQgcmluZ2luZykKKyAgIGZvciBhIGNlcnRhaW4gYW1vdW50IG9mIHRpbWUgdG8gbGV0IGFuIGV4dGVybmFsIHByb2dyYW0gb3IgY2xpZW50IGRlY2lkZQorICAgaG93IHRvIGhhbmRsZSB0aGUgY2FsbC4gCisgICAgICAgICAgICAKKworMi4gUmVxdWlyZWQgaGFyZC0gYW5kIHNvZnR3YXJlCisgICAKKyAgIEZvciB1c2luZyB0aGUgaTRsIGRpdmVyc2lvbiBzZXJ2aWNlcyB0aGUgaXNkbiBsaW5lIG11c3QgYmUgb2YgYSBFVVJPL0RTUzEKKyAgIHR5cGUuIEFkZGl0aW9uYWxseSB0aGUgaTRsIHNlcnZpY2VzIG9ubHkgd29yayB0b2dldGhlciB3aXRoIHRoZSBIaVNheCAKKyAgIGRyaXZlciBmb3IgcGFzc2l2ZSBpc2RuIGNhcmRzLiBBbGwgSGlTYXggc3VwcG9ydGVkIGNhcmRzIG1heSBiZSB1c2VkIGZvcgorICAgdGhlIGRpdmVyc2lvbiBwdXJwb3Nlcy4KKyAgIFRoZSBzdGF0aWMgZGl2ZXJzaW9uIHNlcnZpY2VzIHJlcXVpcmUgdGhlIHByb3ZpZGVyIGhhdmluZyBzdGF0aWMgc2VydmljZXMKKyAgIENGVSwgQ0ZOUiwgQ0ZCIGFjdGl2YXRlZCBvbiBhbiBNU04tbGluZS4gVGhlIHN0YXRpYyBzZXJ2aWNlcyBtYXkgbm90IGJlIAorICAgdXNlZCBvbiBhIHBvaW50LXRvLXBvaW50IGNvbm5lY3Rpb24uIEZ1cnRoZXIgdGhlIHN0YXRpYyBzZXJ2aWNlcyBhcmUgb25seQorICAgYXZhaWxhYmxlIGluIHNvbWUgY291bnRyaWVzIChmb3IgZXhhbXBsZSBnZXJtYW55KS4gQ291bnRyaWVzIHJlcXVpcmluZyB0aGUgCisgICBrZXlwYWQgcHJvdG9jb2wgZm9yIGFjdGl2YXRpbmcgc3RhdGljIGRpdmVyc2lvbnMgKGxpa2UgdGhlIG5ldGhlcmxhbmRzKSBhcmUKKyAgIG5vdCBzdXBwb3J0ZWQgYnV0IG1heSB1c2UgdGhlIHR0eSBkZXZpY2VzIGZvciB0aGlzIHB1cnBvc2UuCisgICBUaGUgZHluYW1pYyBkaXZlcnNpb24gc2VydmljZXMgbWF5IGJlIHVzZWQgaW4gYWxsIGNvdW50cmllcyBpZiB0aGUgcHJvdmlkZXIKKyAgIGVuYWJsZXMgdGhlIGZlYXR1cmUgQ0YgKGNhbGwgZm9yd2FyZGluZykuIFRoaXMgc2hvdWxkIHdvcmsgb24gYm90aCBNU04tIGFuZAorICAgcG9pbnQtdG8tcG9pbnQgbGluZXMuCisgICBUbyBhZGQgYW5kIGRlbGV0ZSBydWxlcyB0aGUgYWRkaXRpb25hbCBkaXZlcnRjdHJsIHByb2dyYW0gaXMgbmVlZGVkLiBUaGlzCisgICBwcm9ncmFtIGlzIHBhcnQgb2YgdGhlIGlzZG40a3V0aWxzIHBhY2thZ2UuICAgCisKKzMuIENvbXBpbGluZywgaW5zdGFsbGluZyBhbmQgbG9hZGluZy91bmxvYWRpbmcgdGhlIG1vZHVsZSAgCisgICBUcmFjaW5nIGNhbGxpbmcgYW5kIGRpdmVyc2lvbiBpbmZvcm1hdGlvbiAKKworCisgICBUbyBjb21waWxlIHRoZSBpNGwgY29kZSB3aXRoIGRpdmVyc2lvbiBzdXBwb3J0IHlvdSBuZWVkIHRvIHNheSB5ZXMgdG8gdGhlIAorICAgRFNTMSBkaXZlcnNpb24gc2VydmljZXMgd2hlbiBzZWxlY3RpbmcgdGhlIGk0bCBvcHRpb25zIGluIHRoZSBrZXJuZWwgCisgICBjb25maWcgKG1lbnVjb25maWcgb3IgY29uZmlnKS4KKyAgIEFmdGVyIGhhdmluZyBwcm9wZXJseSBhY3RpdmF0ZWQgYSBtYWtlIG1vZHVsZXMgYW5kIG1ha2UgbW9kdWxlc19pbnN0YWxsIGFsbAorICAgcmVxdWlyZWQgbW9kdWxlcyB3aWxsIGJlIGNvcnJlY3RseSBpbnN0YWxsZWQgaW4gdGhlIG5lZWRlZCBtb2R1bGVzIGRpcnMuCisgICBBcyB0aGUgZGl2ZXJzaW9uIHNlcnZpY2VzIGFyZSBjdXJyZW50bHkgbm90IGluY2x1ZGVkIGluIHRoZSBzY3JpcHRzIG9mIG1vc3QKKyAgIHN0YW5kYXJkIGRpc3RyaWJ1dGlvbnMgeW91IHdpbGwgaGF2ZSB0byBhZGQgYSAiaW5zbW9kIGRzczFfZGl2ZXJ0IiBhZnRlcgorICAgaGF2aW5nIGxvYWRlZCB0aGUgZ2xvYmFsIGlzZG4gbW9kdWxlLgorICAgVGhlIG1vZHVsZSBjYW4gYmUgbG9hZGVkIHdpdGhvdXQgYW55IGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzLgorICAgSWYgdGhlIG1vZHVsZSBpcyBhY3R1YWxseSBsb2FkZWQgYW5kIGFjdGl2ZSBtYXkgYmUgY2hlY2tlZCB3aXRoIGEgCisgICAiY2F0IC9wcm9jL21vZHVsZXMiIG9yICJscyAvcHJvYy9uZXQvaXNkbi9kaXZlcnQiLiBUaGUgZGl2ZXJ0IGZpbGUgaXMgCisgICBkeW5hbWljYWxseSBjcmVhdGVkIGJ5IHRoZSBkaXZlcnNpb24gbW9kdWxlIGFuZCByZW1vdmVkIHdoZW4gdGhlIG1vZHVsZSBpcworICAgdW5sb2FkZWQuCisKKworNC4gVHJhY2luZyBjYWxsaW5nIGFuZCBkaXZlcnNpb24gaW5mb3JtYXRpb24KKyAKKyAgIFlvdSBhbHNvIG1heSBwdXQgYSAiY2F0IC9wcm9jL25ldC9pc2RuL2RpdmVydCIgaW4gdGhlIGJhY2tncm91bmQgd2l0aCB0aGUKKyAgIG91dHB1dCByZWRpcmVjdGVkIHRvIGEgZmlsZS4gVGhlbiBhbGwgYWN0aW9ucyBvZiB0aGUgbW9kdWxlIGFyZSBsb2dnZWQuCisgICBUaGUgZGl2ZXJ0IGZpbGUgaW4gdGhlIHByb2Mgc3lzdGVtIG1heSBiZSBvcGVuZWQgbW9yZSB0aGFuIG9uY2UsIHNvIGluIAorICAgY29uanVuY3Rpb24gd2l0aCBpbmV0ZCBhbmQgYSBzbWFsbCByZW1vdGUgY2xpZW50IG9uIG90aGVyIG1hY2hpbmVzIGluc2lkZQorICAgeW91ciBuZXR3b3JrIGluY29taW5nIGNhbGxzIGFuZCByZWFjdGlvbnMgYnkgdGhlIG1vZHVsZSBtYXkgYmUgc2hvd24gb24gCisgICBldmVyeSBsaXN0ZW5pbmcgbWFjaGluZS4gCisgICBJZiBhIGNhbGwgaXMgcmVwb3J0ZWQgYXMgcHJvY2VlZGluZyBhbiBleHRlcm5hbCBwcm9ncmFtIG9yIGNsaWVudCBtYXkgCisgICBzcGVjaWZ5IGR1cmluZyBhIGNlcnRhaW4gYW1vdW50IG9mIHRpbWUgKG5vcm1hbGx5IDQgdG8gMTAgc2Vjb25kcykgd2hhdAorICAgdG8gZG8gd2l0aCB0aGF0IGNhbGwuICAgICAgCisgICBUbyB1bmxvYWQgdGhlIG1vZHVsZSBhbGwgb3BlbiBmaWxlcyB0byB0aGUgZGV2aWNlIGluIHRoZSBwcm9jIHN5c3RlbSBtdXN0CisgICBiZSBjbG9zZWQuIE90aGVyd2lzZSB0aGUgbW9kdWxlIChhbmQgaXNkbi5vKSBtYXkgbm90IGJlIHVubG9hZGVkLiAKKworNS4gRm9ybWF0IG9mIHRoZSBkaXZlcnQgZGV2aWNlIEFTQ0lJIG91dHB1dAorIAorICAgVG8gYmUgZG9uZSBsYXRlcgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lzZG4vUkVBRE1FLmZheCBiL0RvY3VtZW50YXRpb24vaXNkbi9SRUFETUUuZmF4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMTQ5NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lzZG4vUkVBRE1FLmZheApAQCAtMCwwICsxLDQ1IEBACisKK0ZheCB3aXRoIGlzZG40bGludXgKKz09PT09PT09PT09PT09PT09PT0KKworV2hlbiBlbmFibGVkIGR1cmluZyBrZXJuZWwgY29uZmlndXJhdGlvbiwgdGhlIHR0eSBlbXVsYXRvcgorb2YgdGhlIElTRE4gc3Vic3lzdGVtIGlzIGNhcGFibGUgb2YgdGhlIEZheCBDbGFzcyAyIGNvbW1hbmRzLgorCitUaGlzIG9ubHkgbWFrZXMgc2Vuc2UgdW5kZXIgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIDoKKworLSBZb3UgbmVlZCB0aGUgY29tbWFuZHMgYXMgZHVtbXksIGJlY2F1c2UgeW91IGFyZSB1c2luZworICBoeWxhZmF4ICh3aXRoIHBhdGNoKSBmb3IgQVZNIGNhcGkuCistIFlvdSB3YW50IHRvIHVzZSB0aGUgZmF4IGNhcGFiaWxpdGllcyBvZiB5b3VyIGlzZG4tY2FyZC4KKyAgKHN1cHBvcnRlZCBjYXJkcyBhcmUgbGlzdGVkIGJlbG93KQorCisKK05PVEU6IFRoaXMgaW1wbGVtZW50YXRpb24gZG9lcyAqbm90KiBzdXBwb3J0IGZheCB3aXRoIHBhc3NpdmUKKyAgICAgIElTRE4tY2FyZHMgKGtub3duIGFzIHNvZnRmYXgpLiBUaGUgbG93LWxldmVsIGRyaXZlciBvZgorICAgICAgdGhlIElTRE4tY2FyZCBhbmQvb3IgdGhlIGNhcmQgaXRzZWxmIG11c3Qgc3VwcG9ydCB0aGlzLgorCisKK1N1cHBvcnRlZCBJU0ROLUNhcmRzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFaWNvbiBESVZBIFNlcnZlciBCUkkvUENJCisJLSBmdWxsIHN1cHBvcnQgd2l0aCBib3RoIEItY2hhbm5lbHMuCisKK0VpY29uIERJVkEgU2VydmVyIDRCUkkvUENJCisJLSBmdWxsIHN1cHBvcnQgd2l0aCBhbGwgQi1jaGFubmVscy4KKworRWljb24gRElWQSBTZXJ2ZXIgUFJJL1BDSQorCS0gZnVsbCBzdXBwb3J0IG9uIGFtb3VudCBvZiBCLWNoYW5uZWxzCisJCWRlcGVuZGluZyBvbiBEU1BzIG9uIGJvYXJkLgorCisKKworVGhlIGNvbW1hbmQgc2V0IGlzIGtub3duIGFzIENsYXNzIDIgKG5vdCBDbGFzcyAyLjApIGFuZAorY2FuIGJlIGFjdGl2YXRlZCBieSBBVCtGQ0xBU1M9MgorCisKK1RoZSBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgbGluay1sZXZlbC1tb2R1bGUgYW5kIHRoZSBoYXJkd2FyZS1sZXZlbCBkcml2ZXIKK2lzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZXMgSU5URVJGQUNFLmZheCBhbmQgSU5URVJGQUNFLgorCitBcm1pbgorbWFjQG1lbHdhcmUuZGUKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5naWdhc2V0IGIvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5naWdhc2V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MzRjNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lzZG4vUkVBRE1FLmdpZ2FzZXQKQEAgLTAsMCArMSw0MjEgQEAKK0dpZ2FTZXQgMzA3eCBEZXZpY2UgRHJpdmVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCisxLiAgIFJlcXVpcmVtZW50cworICAgICAtLS0tLS0tLS0tLS0KKzEuMS4gSGFyZHdhcmUKKyAgICAgLS0tLS0tLS0KKyAgICAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIGNvbm5lY3Rpb24gb2YgdGhlIEdpZ2FzZXQgMzA3eC80MTd4IGZhbWlseSBvZgorICAgICBJU0ROIERFQ1QgYmFzZXMgdmlhIEdpZ2FzZXQgTTEwMSBEYXRhLCBHaWdhc2V0IE0xMDUgRGF0YSBvciBkaXJlY3QgVVNCCisgICAgIGNvbm5lY3Rpb24uIFRoZSBmb2xsb3dpbmcgZGV2aWNlcyBhcmUgcmVwb3J0ZWQgdG8gYmUgY29tcGF0aWJsZToKKworICAgICBCYXNlczoKKyAgICAgICAgU2llbWVucyBHaWdhc2V0IDMwNzAvMzA3NSBpc2RuCisgICAgICAgIFNpZW1lbnMgR2lnYXNldCA0MTcwLzQxNzUgaXNkbgorICAgICAgICBTaWVtZW5zIEdpZ2FzZXQgU1gyMDUvMjU1CisgICAgICAgIFNpZW1lbnMgR2lnYXNldCBTWDM1MworICAgICAgICBULUNvbSBTaW51cyA0NSBbQUJdIGlzZG4KKyAgICAgICAgVC1Db20gU2ludXMgNzIxWFtBXSBbU0VdCisgICAgICAgIFZveCBDaGljYWdvIDM5MCBJU0ROIChLUE4gVGVsZWNvbSkKKworICAgICBSUzIzMiBkYXRhIGJveGVzOgorICAgICAgICBTaWVtZW5zIEdpZ2FzZXQgTTEwMSBEYXRhCisgICAgICAgIFQtQ29tIFNpbnVzIDQ1IERhdGEgMQorCisgICAgIFVTQiBkYXRhIGJveGVzOgorICAgICAgICBTaWVtZW5zIEdpZ2FzZXQgTTEwNSBEYXRhCisgICAgICAgIFNpZW1lbnMgR2lnYXNldCBVU0IgQWRhcHRlciBERUNUCisgICAgICAgIFQtQ29tIFNpbnVzIDQ1IERhdGEgMgorICAgICAgICBULUNvbSBTaW51cyA3MjEgZGF0YQorICAgICAgICBDaGljYWdvIDM5MCBVU0IgKEtQTikKKworICAgICBTZWUgYWxzbyBodHRwOi8vd3d3LmVyYnplLmluZm8vc2ludXNfZ2lnYXNldC5odG0gYW5kCisgICAgICAgICAgICAgIGh0dHA6Ly9naWdhc2V0MzA3eC5zb3VyY2Vmb3JnZS5uZXQvCisKKyAgICAgV2UgaGFkIGFsc28gcmVwb3J0cyBmcm9tIHVzZXJzIG9mIEdpZ2FzZXQgTTEwNSB3aG8gY291bGQgdXNlIHRoZSBkcml2ZXJzCisgICAgIHdpdGggU1ggMTAwIGFuZCBDWCAxMDAgSVNETiBiYXNlcyAob25seSBpbiB1bmltb2RlbSBtb2RlLCBzZWUgc2VjdGlvbiAyLjUuKQorICAgICBJZiB5b3UgaGF2ZSBhbm90aGVyIGRldmljZSB0aGF0IHdvcmtzIHdpdGggb3VyIGRyaXZlciwgcGxlYXNlIGxldCB1cyBrbm93LgorCisgICAgIENoYW5jZXMgb2YgZ2V0dGluZyBhbiBVU0IgZGV2aWNlIHRvIHdvcmsgYXJlIGdvb2QgaWYgdGhlIG91dHB1dCBvZgorICAgICAgICBsc3VzYgorICAgICBhdCB0aGUgY29tbWFuZCBsaW5lIGNvbnRhaW5zIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorICAgICAgICBJRCAwNjgxOjAwMDEKKyAgICAgICAgSUQgMDY4MTowMDAyCisgICAgICAgIElEIDA2ODE6MDAwOQorICAgICAgICBJRCAwNjgxOjAwMjEKKyAgICAgICAgSUQgMDY4MTowMDIyCisKKzEuMi4gU29mdHdhcmUKKyAgICAgLS0tLS0tLS0KKyAgICAgVGhlIGRyaXZlciB3b3JrcyB3aXRoIHRoZSBLZXJuZWwgQ0FQSSBzdWJzeXN0ZW0gYXMgd2VsbCBhcyB0aGUgb2xkCisgICAgIElTRE40TGludXggc3Vic3lzdGVtLCBzbyBpdCBjYW4gYmUgdXNlZCB3aXRoIGFueSBzb2Z0d2FyZSB3aGljaCBpcyBhYmxlCisgICAgIHRvIHVzZSBDQVBJIDIuMCBvciBJU0RONExpbnV4IGZvciBJU0ROIGNvbm5lY3Rpb25zICh2b2ljZSBvciBkYXRhKS4KKworICAgICBUaGVyZSBhcmUgc29tZSB1c2VyIHNwYWNlIHRvb2xzIGF2YWlsYWJsZSBhdAorICAgICBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2dpZ2FzZXQzMDd4LworICAgICB3aGljaCBwcm92aWRlIGFjY2VzcyB0byBhZGRpdGlvbmFsIGRldmljZSBzcGVjaWZpYyBmdW5jdGlvbnMgbGlrZSBTTVMsCisgICAgIHBob25lYm9vayBvciBjYWxsIGpvdXJuYWwuCisKKworMi4gICBIb3cgdG8gdXNlIHRoZSBkcml2ZXIKKyAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyLjEuIE1vZHVsZXMKKyAgICAgLS0tLS0tLQorICAgICBGb3IgdGhlIGRldmljZXMgdG8gd29yaywgdGhlIHByb3BlciBrZXJuZWwgbW9kdWxlcyBoYXZlIHRvIGJlIGxvYWRlZC4KKyAgICAgVGhpcyBub3JtYWxseSBoYXBwZW5zIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgc3lzdGVtIGRldGVjdHMgdGhlIFVTQgorICAgICBkZXZpY2UgKGJhc2UsIE0xMDUpIG9yIHdoZW4gdGhlIGxpbmUgZGlzY2lwbGluZSBpcyBhdHRhY2hlZCAoTTEwMSkuIEl0CisgICAgIGNhbiBhbHNvIGJlIHRyaWdnZXJlZCBtYW51YWxseSB1c2luZyB0aGUgbW9kcHJvYmUoOCkgY29tbWFuZCwgZm9yIGV4YW1wbGUKKyAgICAgZm9yIHRyb3VibGVzaG9vdGluZyBvciB0byBwYXNzIG1vZHVsZSBwYXJhbWV0ZXJzLgorCisgICAgIFRoZSBtb2R1bGUgc2VyX2dpZ2FzZXQgcHJvdmlkZXMgYSBzZXJpYWwgbGluZSBkaXNjaXBsaW5lIE5fR0lHQVNFVF9NMTAxCisgICAgIHdoaWNoIHVzZXMgdGhlIHJlZ3VsYXIgc2VyaWFsIHBvcnQgZHJpdmVyIHRvIGFjY2VzcyB0aGUgZGV2aWNlLCBhbmQgbXVzdAorICAgICB0aGVyZWZvcmUgYmUgYXR0YWNoZWQgdG8gdGhlIHNlcmlhbCBkZXZpY2UgdG8gd2hpY2ggdGhlIE0xMDEgaXMgY29ubmVjdGVkLgorICAgICBUaGUgbGRhdHRhY2goOCkgY29tbWFuZCAoaW5jbHVkZWQgaW4gdXRpbC1saW51eC1uZyByZWxlYXNlIDIuMTQgb3IgbGF0ZXIpCisgICAgIGNhbiBiZSB1c2VkIGZvciB0aGF0IHB1cnBvc2UsIGZvciBleGFtcGxlOgorCWxkYXR0YWNoIEdJR0FTRVRfTTEwMSAvZGV2L3R0eVMxCisgICAgIFRoaXMgd2lsbCBvcGVuIHRoZSBkZXZpY2UgZmlsZSwgYXR0YWNoIHRoZSBsaW5lIGRpc2NpcGxpbmUgdG8gaXQsIGFuZAorICAgICB0aGVuIHNsZWVwIGluIHRoZSBiYWNrZ3JvdW5kLCBrZWVwaW5nIHRoZSBkZXZpY2Ugb3BlbiBzbyB0aGF0IHRoZSBsaW5lCisgICAgIGRpc2NpcGxpbmUgcmVtYWlucyBhY3RpdmUuIFRvIGRlYWN0aXZhdGUgaXQsIGtpbGwgdGhlIGRhZW1vbiwgZm9yIGV4YW1wbGUKKyAgICAgd2l0aAorCWtpbGxhbGwgbGRhdHRhY2gKKyAgICAgYmVmb3JlIGRpc2Nvbm5lY3RpbmcgdGhlIGRldmljZS4gVG8gaGF2ZSB0aGlzIGhhcHBlbiBhdXRvbWF0aWNhbGx5IGF0CisgICAgIHN5c3RlbSBzdGFydHVwL3NodXRkb3duIG9uIGFuIExTQiBjb21wYXRpYmxlIHN5c3RlbSwgY3JlYXRlIGFuZCBhY3RpdmF0ZQorICAgICBhbiBhcHByb3ByaWF0ZSBMU0Igc3RhcnR1cCBzY3JpcHQgL2V0Yy9pbml0LmQvZ2lnYXNldC4gKFRoZSBpbml0IG5hbWUKKyAgICAgJ2dpZ2FzZXQnIGlzIG9mZmljaWFsbHkgYXNzaWduZWQgdG8gdGhpcyBwcm9qZWN0IGJ5IExBTkFOQS4pCisgICAgIEFsdGVybmF0aXZlbHksIGp1c3QgYWRkIHRoZSAnbGRhdHRhY2gnIGNvbW1hbmQgbGluZSB0byAvZXRjL3JjLmxvY2FsLgorCisgICAgIFRoZSBtb2R1bGVzIGFjY2VwdCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6CisKKwlNb2R1bGUJIAlQYXJhbWV0ZXIgIE1lYW5pbmcKKworCWdpZ2FzZXQJIAlkZWJ1ZwkgICBkZWJ1ZyBsZXZlbCAoc2VlIHNlY3Rpb24gMy4yLikKKworCQkJc3RhcnRtb2RlICBpbml0aWFsIG9wZXJhdGlvbiBtb2RlIChzZWUgc2VjdGlvbiAyLjUuKToKKwliYXNfZ2lnYXNldCApCQkgICAxPUlTRE40bGludXgvQ0FQSSAoZGVmYXVsdCksIDA9VW5pbW9kZW0KKwlzZXJfZ2lnYXNldCApCisJdXNiX2dpZ2FzZXQgKQljaWRtb2RlICAgIGluaXRpYWwgQ2FsbC1JRCBtb2RlIHNldHRpbmcgKHNlZSBzZWN0aW9uCisJCQkJICAgMi41Lik6IDE9b24gKGRlZmF1bHQpLCAwPW9mZgorCisgICAgIERlcGVuZGluZyBvbiB5b3VyIGRpc3RyaWJ1dGlvbiB5b3UgbWF5IHdhbnQgdG8gY3JlYXRlIGEgc2VwYXJhdGUgbW9kdWxlCisgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBsaWtlIC9ldGMvbW9kcHJvYmUuZC9naWdhc2V0LmNvbmYgZm9yIHRoZXNlLgorCisyLjIuIERldmljZSBub2RlcyBmb3IgdXNlciBzcGFjZSBwcm9ncmFtcworICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgVGhlIGRldmljZSBjYW4gYmUgYWNjZXNzZWQgZnJvbSB1c2VyIHNwYWNlIChlZy4gYnkgdGhlIHVzZXIgc3BhY2UgdG9vbHMKKyAgICAgbWVudGlvbmVkIGluIDEuMi4pIHRocm91Z2ggdGhlIGRldmljZSBub2RlczoKKworICAgICAtIC9kZXYvdHR5R1MwIGZvciBNMTAxIChSUzIzMiBkYXRhIGJveGVzKQorICAgICAtIC9kZXYvdHR5R1UwIGZvciBNMTA1IChVU0IgZGF0YSBib3hlcykKKyAgICAgLSAvZGV2L3R0eUdCMCBmb3IgdGhlIGJhc2UgZHJpdmVyIChkaXJlY3QgVVNCIGNvbm5lY3Rpb24pCisKKyAgICAgSWYgeW91IGNvbm5lY3QgbW9yZSB0aGFuIG9uZSBkZXZpY2Ugb2YgYSB0eXBlLCB0aGV5IHdpbGwgZ2V0IGNvbnNlY3V0aXZlCisgICAgIGRldmljZSBub2RlcywgZWcuIC9kZXYvdHR5R1UxIGZvciBhIHNlY29uZCBNMTA1LgorCisgICAgIFlvdSBjYW4gYWxzbyBzZXQgYSAiZGVmYXVsdCBkZXZpY2UiIGZvciB0aGUgdXNlciBzcGFjZSB0b29scyB0byB1c2Ugd2hlbgorICAgICBubyBkZXZpY2Ugbm9kZSBpcyBnaXZlbiBhcyBwYXJhbWV0ZXIsIGJ5IGNyZWF0aW5nIGEgc3ltbGluayAvZGV2L3R0eUcgdG8KKyAgICAgb25lIG9mIHRoZW0sIGVnLjoKKworCWxuIC1zIC9kZXYvdHR5R0IwIC9kZXYvdHR5RworCisgICAgIFRoZSBkZXZpY2VzIGFjY2VwdCB0aGUgZm9sbG93aW5nIGRldmljZSBzcGVjaWZpYyBpb2N0bCBjYWxscworICAgICAoZGVmaW5lZCBpbiBnaWdhc2V0X2Rldi5oKToKKworICAgICBpb2N0bChpbnQgZmQsIEdJR0FTRVRfUkVESVIsIGludCAqY21kKTsKKyAgICAgSWYgY21kPT0xLCB0aGUgZGV2aWNlIGlzIHNldCB0byBiZSBjb250cm9sbGVkIGV4Y2x1c2l2ZWx5IHRocm91Z2ggdGhlCisgICAgIGNoYXJhY3RlciBkZXZpY2Ugbm9kZTsgYWNjZXNzIGZyb20gdGhlIElTRE4gc3Vic3lzdGVtIGlzIGJsb2NrZWQuCisgICAgIElmIGNtZD09MCwgdGhlIGRldmljZSBpcyBzZXQgdG8gYmUgdXNlZCBmcm9tIHRoZSBJU0ROIHN1YnN5c3RlbSBhbmQgZG9lcworICAgICBub3QgY29tbXVuaWNhdGUgdGhyb3VnaCB0aGUgY2hhcmFjdGVyIGRldmljZSBub2RlLgorCisgICAgIGlvY3RsKGludCBmZCwgR0lHQVNFVF9DT05GSUcsIGludCAqY21kKTsKKyAgICAgKHNlcl9naWdhc2V0IGFuZCB1c2JfZ2lnYXNldCBvbmx5KQorICAgICBJZiBjbWQ9PTEsIHRoZSBkZXZpY2UgaXMgc2V0IHRvIGFkYXB0ZXIgY29uZmlndXJhdGlvbiBtb2RlIHdoZXJlIGNvbW1hbmRzCisgICAgIGFyZSBpbnRlcnByZXRlZCBieSB0aGUgTTEweCBERUNUIGFkYXB0ZXIgaXRzZWxmIGluc3RlYWQgb2YgYmVpbmcKKyAgICAgZm9yd2FyZGVkIHRvIHRoZSBiYXNlIHN0YXRpb24uIEluIHRoaXMgbW9kZSwgdGhlIGRldmljZSBhY2NlcHRzIHRoZQorICAgICBjb21tYW5kcyBkZXNjcmliZWQgaW4gU2llbWVucyBkb2N1bWVudCAiQVQtS29tbWFuZG8gQWxpZ25tZW50IE0xMHggRGF0YSIKKyAgICAgZm9yIHNldHRpbmcgdGhlIG9wZXJhdGlvbiBtb2RlLCBhc3NvY2lhdGluZyB3aXRoIGEgYmFzZSBzdGF0aW9uIGFuZAorICAgICBxdWVyeWluZyBwYXJhbWV0ZXJzIGxpa2UgZmllbGQgc3RyZW5naCBhbmQgc2lnbmFsIHF1YWxpdHkuCisgICAgIE5vdGUgdGhhdCB0aGVyZSBpcyBubyBpb2N0bCBjb21tYW5kIGZvciBsZWF2aW5nIGFkYXB0ZXIgY29uZmlndXJhdGlvbgorICAgICBtb2RlIGFuZCByZXR1cm5pbmcgdG8gcmVndWxhciBvcGVyYXRpb24uIEluIG9yZGVyIHRvIGxlYXZlIGFkYXB0ZXIKKyAgICAgY29uZmlndXJhdGlvbiBtb2RlLCB3cml0ZSB0aGUgY29tbWFuZCBBVE8gdG8gdGhlIGRldmljZS4KKworICAgICBpb2N0bChpbnQgZmQsIEdJR0FTRVRfQlJLQ0hBUlMsIHVuc2lnbmVkIGNoYXIgYnJrY2hhcnNbNl0pOworICAgICAodXNiX2dpZ2FzZXQgb25seSkKKyAgICAgU2V0IHRoZSBicmVhayBjaGFyYWN0ZXJzIG9uIGFuIE0xMDUncyBpbnRlcm5hbCBzZXJpYWwgYWRhcHRlciB0byB0aGUgc2l4CisgICAgIGJ5dGVzIHN0b3JlZCBpbiBicmtjaGFyc1tdLiBVbnVzZWQgYnl0ZXMgc2hvdWxkIGJlIHNldCB0byB6ZXJvLgorCisgICAgIGlvY3RsKGludCBmZCwgR0lHQVNFVF9WRVJTSU9OLCB1bnNpZ25lZCB2ZXJzaW9uWzRdKTsKKyAgICAgUmV0cmlldmUgdmVyc2lvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBkcml2ZXIuIHZlcnNpb25bMF0gbXVzdCBiZSBzZXQgdG8KKyAgICAgb25lIG9mOgorICAgICAtIEdJR1ZFUl9EUklWRVI6IHJldHJpZXZlIGRyaXZlciB2ZXJzaW9uCisgICAgIC0gR0lHVkVSX0NPTVBBVDogcmV0cmlldmUgaW50ZXJmYWNlIGNvbXBhdGliaWxpdHkgdmVyc2lvbgorICAgICAtIEdJR1ZFUl9GV0JBU0U6IHJldHJpZXZlIHRoZSBmaXJtd2FyZSB2ZXJzaW9uIG9mIHRoZSBiYXNlCisgICAgIFVwb24gcmV0dXJuLCB2ZXJzaW9uW10gaXMgZmlsbGVkIHdpdGggdGhlIHJlcXVlc3RlZCB2ZXJzaW9uIGluZm9ybWF0aW9uLgorCisyLjMuIENBUEkKKyAgICAgLS0tLQorICAgICBJZiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIHdpdGggQ0FQSSBzdXBwb3J0IChrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24KKyAgICAgR0lHQVNFVF9DQVBJKSB0aGUgZGV2aWNlcyB3aWxsIHNob3cgdXAgYXMgQ0FQSSBjb250cm9sbGVycyBhcyBzb29uIGFzIHRoZQorICAgICBjb3JyZXNwb25kaW5nIGRyaXZlciBtb2R1bGUgaXMgbG9hZGVkLCBhbmQgY2FuIHRoZW4gYmUgdXNlZCB3aXRoIENBUEkgMi4wCisgICAgIGtlcm5lbCBhbmQgdXNlciBzcGFjZSBhcHBsaWNhdGlvbnMuIEZvciB1c2VyIHNwYWNlIGFjY2VzcywgdGhlIG1vZHVsZQorICAgICBjYXBpLmtvIG11c3QgYmUgbG9hZGVkLgorCisgICAgIExlZ2FjeSBJU0RONExpbnV4IGFwcGxpY2F0aW9ucyBhcmUgc3VwcG9ydGVkIHZpYSB0aGUgY2FwaWRydgorICAgICBjb21wYXRpYmlsaXR5IGRyaXZlci4gVGhlIGtlcm5lbCBtb2R1bGUgY2FwaWRydi5rbyBtdXN0IGJlIGxvYWRlZAorICAgICBleHBsaWNpdGx5IHdpdGggdGhlIGNvbW1hbmQKKyAgICAgICAgbW9kcHJvYmUgY2FwaWRydgorICAgICBpZiBuZWVkZWQsIGFuZCBjYW5ub3QgYmUgdW5sb2FkZWQgYWdhaW4gd2l0aG91dCB1bmxvYWRpbmcgdGhlIGRyaXZlcgorICAgICBmaXJzdC4gKFRoZXNlIGFyZSBsaW1pdGF0aW9ucyBvZiBjYXBpZHJ2LikKKworICAgICBNb3N0IGRpc3RyaWJ1dGlvbnMgaGFuZGxlIGxvYWRpbmcgYW5kIHVubG9hZGluZyBvZiB0aGUgdmFyaW91cyBDQVBJCisgICAgIG1vZHVsZXMgYXV0b21hdGljYWxseSB2aWEgdGhlIGNvbW1hbmQgY2FwaWluaXQoMSkgZnJvbSB0aGUgY2FwaTRrLXV0aWxzCisgICAgIHBhY2thZ2Ugb3IgYSBzaW1pbGFyIG1lY2hhbmlzbS4gTm90ZSB0aGF0IGNhcGlpbml0KDEpIGNhbm5vdCB1bmxvYWQgdGhlCisgICAgIEdpZ2FzZXQgZHJpdmVycyBiZWNhdXNlIGl0IGRvZXNuJ3Qgc3VwcG9ydCBtb3JlIHRoYW4gb25lIG1vZHVsZSBwZXIKKyAgICAgZHJpdmVyLgorCisyLjQuIElTRE40TGludXgKKyAgICAgLS0tLS0tLS0tLQorICAgICBJZiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIHdpdGhvdXQgQ0FQSSBzdXBwb3J0IChuYXRpdmUgSVNETjRMaW51eAorICAgICB2YXJpYW50KSwgaXQgcmVnaXN0ZXJzIHRoZSBkZXZpY2Ugd2l0aCB0aGUgbGVnYWN5IElTRE40TGludXggc3Vic3lzdGVtCisgICAgIGFmdGVyIGxvYWRpbmcgdGhlIG1vZHVsZS4gSXQgY2FuIHRoZW4gYmUgdXNlZCB3aXRoIElTRE40TGludXgKKyAgICAgYXBwbGljYXRpb25zIG9ubHkuIE1vc3QgZGlzdHJpYnV0aW9ucyBwcm92aWRlIHNvbWUgY29uZmlndXJhdGlvbiB1dGlsaXR5CisgICAgIGZvciBzZXR0aW5nIHVwIHRoYXQgc3Vic3lzdGVtLiBPdGhlcndpc2UgeW91IGNhbiB1c2Ugc29tZSBIT1dUT3MgbGlrZQorICAgICAgICAgaHR0cDovL3d3dy5saW51eGhhdmVuLmRlL2RsaHAvSE9XVE8vREUtSVNETi1IT1dUTy01Lmh0bWwKKworCisyLjUuIFVuaW1vZGVtIG1vZGUKKyAgICAgLS0tLS0tLS0tLS0tLQorICAgICBJbiB0aGlzIG1vZGUgdGhlIGRldmljZSB3b3JrcyBsaWtlIGEgbW9kZW0gY29ubmVjdGVkIHRvIGEgc2VyaWFsIHBvcnQKKyAgICAgKHRoZSAvZGV2L3R0eUdVMCwgLi4uIG1lbnRpb25lZCBhYm92ZSkgd2hpY2ggdW5kZXJzdGFuZHMgdGhlIGNvbW1hbmRzCisKKyAgICAgICAgIEFUWiAgICAgICAgICAgICAgICAgaW5pdCwgcmVzZXQKKyAgICAgICAgICAgICA9PiBPSyBvciBFUlJPUgorICAgICAgICAgQVRECisgICAgICAgICBBVERUICAgICAgICAgICAgICAgIGRpYWwKKyAgICAgICAgICAgICA9PiBPSywgQ09OTkVDVCwKKyAgICAgICAgICAgICAgICBCVVNZLAorICAgICAgICAgICAgICAgIE5PIERJQUwgVE9ORSwKKyAgICAgICAgICAgICAgICBOTyBDQVJSSUVSLAorICAgICAgICAgICAgICAgIE5PIEFOU1dFUgorICAgICAgICAgPHBhdXNlPisrKzxwYXVzZT4gICBjaGFuZ2UgdG8gY29tbWFuZCBtb2RlIHdoZW4gY29ubmVjdGVkCisgICAgICAgICBBVEggICAgICAgICAgICAgICAgIGhhbmd1cAorCisgICAgIFlvdSBjYW4gdXNlIHNvbWUgY29uZmlndXJhdGlvbiB0b29sIG9mIHlvdXIgZGlzdHJpYnV0aW9uIHRvIGNvbmZpZ3VyZSB0aGlzCisgICAgICJtb2RlbSIgb3IgY29uZmlndXJlIHBwcGQvd3ZkaWFsIG1hbnVhbGx5LiBUaGVyZSBhcmUgc29tZSBleGFtcGxlIHBwcAorICAgICBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCBjaGF0IHNjcmlwdHMgaW4gdGhlIGdpZ2FzZXQtVkVSU0lPTi9wcHAgZGlyZWN0b3J5CisgICAgIGluIHRoZSBkcml2ZXIgcGFja2FnZXMgZnJvbSBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2dpZ2FzZXQzMDd4Ly4KKyAgICAgUGxlYXNlIG5vdGUgdGhhdCB0aGUgVVNCIGRyaXZlcnMgYXJlIG5vdCBhYmxlIHRvIGNoYW5nZSB0aGUgc3RhdGUgb2YgdGhlCisgICAgIGNvbnRyb2wgbGluZXMuIFRoaXMgbWVhbnMgeW91IG11c3QgdXNlICJTdHVwaWQgTW9kZSIgaWYgeW91IGFyZSB1c2luZworICAgICB3dmRpYWwgb3IgeW91IHNob3VsZCB1c2UgdGhlIG5vY3J0c2N0cyBvcHRpb24gb2YgcHBwZC4KKyAgICAgWW91IG11c3QgYWxzbyBhc3N1cmUgdGhhdCB0aGUgcHBwX2FzeW5jIG1vZHVsZSBpcyBsb2FkZWQgd2l0aCB0aGUgcGFyYW1ldGVyCisgICAgIGZsYWdfdGltZT0wLiBZb3UgY2FuIGRvIHRoaXMgZS5nLiBieSBhZGRpbmcgYSBsaW5lIGxpa2UKKworICAgICAgICBvcHRpb25zIHBwcF9hc3luYyBmbGFnX3RpbWU9MAorCisgICAgIHRvIGFuIGFwcHJvcHJpYXRlIG1vZHVsZSBjb25maWd1cmF0aW9uIGZpbGUsIGxpa2UKKyAgICAgL2V0Yy9tb2Rwcm9iZS5kL2dpZ2FzZXQuY29uZi4KKworICAgICBVbmltb2RlbSBtb2RlIGlzIG5lZWRlZCBmb3IgbWFraW5nIHNvbWUgZGV2aWNlcyBbZS5nLiBTWDEwMF0gd29yayB3aGljaAorICAgICBkbyBub3Qgc3VwcG9ydCB0aGUgcmVndWxhciBHaWdhc2V0IGNvbW1hbmQgc2V0LiBJZiBkZWJ1ZyBvdXRwdXQgKHNlZQorICAgICBzZWN0aW9uIDMuMi4pIHNob3dzIHNvbWV0aGluZyBsaWtlIHRoaXMgd2hlbiBkaWFsaW5nOgorICAgICAgICAgQ01EIFJlY2VpdmVkOiBFUlJPUgorICAgICAgICAgQXZhaWxhYmxlIFBhcmFtczogMAorICAgICAgICAgQ29ubmVjdGlvbiBTdGF0ZTogMCwgUmVzcG9uc2U6IC0xCisgICAgICAgICBnaWdhc2V0X3Byb2Nlc3NfcmVzcG9uc2U6IHJlc3BfY29kZSAtMSBpbiBDb25TdGF0ZSAwICEKKyAgICAgICAgIFRpbWVvdXQgb2NjdXJyZWQKKyAgICAgdGhlbiBzd2l0Y2hpbmcgdG8gdW5pbW9kZW0gbW9kZSBtYXkgaGVscC4KKworICAgICBJZiB5b3UgaGF2ZSBpbnN0YWxsZWQgdGhlIGNvbW1hbmQgbGluZSB0b29sIGdpZ2Fjb250ciwgeW91IGNhbiBlbnRlcgorICAgICB1bmltb2RlbSBtb2RlIHVzaW5nCisgICAgICAgICBnaWdhY29udHIgLS1tb2RlIHVuaW1vZGVtCisgICAgIFlvdSBjYW4gc3dpdGNoIGJhY2sgdXNpbmcKKyAgICAgICAgIGdpZ2Fjb250ciAtLW1vZGUgaXNkbgorCisgICAgIFlvdSBjYW4gYWxzbyBwdXQgdGhlIGRyaXZlciBkaXJlY3RseSBpbnRvIFVuaW1vZGVtIG1vZGUgd2hlbiBpdCdzIGxvYWRlZCwKKyAgICAgYnkgcGFzc2luZyB0aGUgbW9kdWxlIHBhcmFtZXRlciBzdGFydG1vZGU9MCB0byB0aGUgaGFyZHdhcmUgc3BlY2lmaWMKKyAgICAgbW9kdWxlLCBlLmcuCisJbW9kcHJvYmUgdXNiX2dpZ2FzZXQgc3RhcnRtb2RlPTAKKyAgICAgb3IgYnkgYWRkaW5nIGEgbGluZSBsaWtlCisJb3B0aW9ucyB1c2JfZ2lnYXNldCBzdGFydG1vZGU9MAorICAgICB0byBhbiBhcHByb3ByaWF0ZSBtb2R1bGUgY29uZmlndXJhdGlvbiBmaWxlLCBsaWtlCisgICAgIC9ldGMvbW9kcHJvYmUuZC9naWdhc2V0LmNvbmYKKworMi42LiBDYWxsLUlEIChDSUQpIG1vZGUKKyAgICAgLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgIENhbGwtSURzIGFyZSBudW1iZXJzIHVzZWQgdG8gdGFnIGNvbW1hbmRzIHRvLCBhbmQgcmVzcG9uc2VzIGZyb20sIHRoZQorICAgICBHaWdhc2V0IGJhc2UgaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGUgc2ltdWx0YW5lb3VzIGhhbmRsaW5nIG9mIG11bHRpcGxlCisgICAgIElTRE4gY2FsbHMuIFRoZWlyIHVzZSBjYW4gYmUgZW5hYmxlZCAoIkNJRCBtb2RlIikgb3IgZGlzYWJsZWQgKCJVbmltb2RlbQorICAgICBtb2RlIikuIFdpdGhvdXQgQ2FsbC1JRHMgKGluIFVuaW1vZGVtIG1vZGUpLCBvbmx5IGEgdmVyeSBsaW1pdGVkIHNldCBvZgorICAgICBmdW5jdGlvbnMgaXMgYXZhaWxhYmxlLiBJdCBhbGxvd3Mgb3V0Z29pbmcgZGF0YSBjb25uZWN0aW9ucyBvbmx5LCBidXQKKyAgICAgZG9lcyBub3Qgc2lnbmFsIGluY29taW5nIGNhbGxzIG9yIG90aGVyIGJhc2UgZXZlbnRzLgorCisgICAgIERFQ1QgY29yZGxlc3MgZGF0YSBkZXZpY2VzIChNMTB4KSBwZXJtYW5lbnRseSBvY2N1cHkgdGhlIGNvcmRsZXNzCisgICAgIGNvbm5lY3Rpb24gdG8gdGhlIGJhc2Ugd2hpbGUgQ2FsbC1JRHMgYXJlIGFjdGl2YXRlZC4gQXMgdGhlIEdpZ2FzZXQKKyAgICAgYmFzZXMgb25seSBzdXBwb3J0IG9uZSBERUNUIGRhdGEgY29ubmVjdGlvbiBhdCBhIHRpbWUsIHRoaXMgcHJldmVudHMKKyAgICAgb3RoZXIgREVDVCBjb3JkbGVzcyBkYXRhIGRldmljZXMgZnJvbSBhY2Nlc3NpbmcgdGhlIGJhc2UuCisKKyAgICAgRHVyaW5nIGFjdGl2ZSBvcGVyYXRpb24sIHRoZSBkcml2ZXIgc3dpdGNoZXMgdG8gdGhlIG5lY2Vzc2FyeSBtb2RlCisgICAgIGF1dG9tYXRpY2FsbHkuIEhvd2V2ZXIsIGZvciB0aGUgcmVhc29ucyBhYm92ZSwgdGhlIG1vZGUgY2hvc2VuIHdoZW4KKyAgICAgdGhlIGRldmljZSBpcyBub3QgaW4gdXNlIChpZGxlKSBjYW4gYmUgc2VsZWN0ZWQgYnkgdGhlIHVzZXIuCisgICAgIC0gSWYgeW91IHdhbnQgdG8gcmVjZWl2ZSBpbmNvbWluZyBjYWxscywgeW91IGNhbiB1c2UgdGhlIGRlZmF1bHQKKyAgICAgICBzZXR0aW5ncyAoQ0lEIG1vZGUpLgorICAgICAtIElmIHlvdSBoYXZlIHNldmVyYWwgREVDVCBkYXRhIGRldmljZXMgKE0xMHgpIHdoaWNoIHlvdSB3YW50IHRvIHVzZQorICAgICAgIGluIHR1cm4sIHNlbGVjdCBVbmltb2RlbSBtb2RlIGJ5IHBhc3NpbmcgdGhlIHBhcmFtZXRlciAiY2lkbW9kZT0wIiB0bworICAgICAgIHRoZSBhcHByb3ByaWF0ZSBkcml2ZXIgbW9kdWxlIChzZXJfZ2lnYXNldCBvciB1c2JfZ2lnYXNldCkuCisKKyAgICAgSWYgeW91IHdhbnQgYm90aCBvZiB0aGVzZSBhdCBvbmNlLCB5b3UgYXJlIG91dCBvZiBsdWNrLgorCisgICAgIFlvdSBjYW4gYWxzbyB1c2UgdGhlIHR0eSBjbGFzcyBwYXJhbWV0ZXIgImNpZG1vZGUiIG9mIHRoZSBkZXZpY2UgdG8KKyAgICAgY2hhbmdlIGl0cyBDSUQgbW9kZSB3aGlsZSB0aGUgZHJpdmVyIGlzIGxvYWRlZCwgZWcuCisgICAgICAgIGVjaG8gMCA+IC9zeXMvY2xhc3MvdHR5L3R0eUdVMC9jaWRtb2RlCisKKzIuNy4gRGlhbGluZyBOdW1iZXJzCisgICAgIC0tLS0tLS0tLS0tLS0tLQorICAgICBUaGUgY2FsbGVkIHBhcnR5IG51bWJlciBwcm92aWRlZCBieSBhbiBhcHBsaWNhdGlvbiBmb3IgZGlhbGluZyBvdXQgbXVzdAorICAgICBiZSBhIHB1YmxpYyBuZXR3b3JrIG51bWJlciBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsIGRpYWxpbmcgcGxhbiwgd2l0aG91dAorICAgICBhbnkgZGlhbCBwcmVmaXggZm9yIGdldHRpbmcgYW4gb3V0c2lkZSBsaW5lLgorCisgICAgIEludGVybmFsIGNhbGxzIGNhbiBiZSBtYWRlIGJ5IHByb3ZpZGluZyBhbiBpbnRlcm5hbCBleHRlbnNpb24gbnVtYmVyCisgICAgIHByZWZpeGVkIHdpdGggIioqIiAodHdvIGFzdGVyaXNrcykgYXMgdGhlIGNhbGxlZCBwYXJ0eSBudW1iZXIuIFNvIHRvIGRpYWwKKyAgICAgZWcuIHRoZSBmaXJzdCByZWdpc3RlcmVkIERFQ1QgaGFuZHNldCwgZ2l2ZSAiKioxMSIgYXMgdGhlIGNhbGxlZCBwYXJ0eQorICAgICBudW1iZXIuIERpYWxpbmcgIioqKiIgKHRocmVlIGFzdGVyaXNrcykgY2FsbHMgYWxsIGV4dGVuc2lvbnMKKyAgICAgc2ltdWx0YW5lb3VzbHkgKGdsb2JhbCBjYWxsKS4KKworICAgICBUaGlzIGhvbGRzIGZvciBib3RoIENBUEkgMi4wIGFuZCBJU0RONExpbnV4IGFwcGxpY2F0aW9ucy4gVW5pbW9kZW0gbW9kZQorICAgICBkb2VzIG5vdCBzdXBwb3J0IGludGVybmFsIGNhbGxzLgorCisyLjguIFVucmVnaXN0ZXJlZCBXaXJlbGVzcyBEZXZpY2VzIChNMTAxL00xMDUpCisgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhlIHNlcl9naWdhc2V0IGFuZCB1c2JfZ2lnYXNldCBkcml2ZXJzIGlzIHRvIGFsbG93CisgICAgIHRoZSBNMTAxIGFuZCBNMTA1IHdpcmVsZXNzIGRldmljZXMgdG8gYmUgdXNlZCBhcyBJU0ROIGRldmljZXMgZm9yIElTRE4KKyAgICAgY29ubmVjdGlvbnMgdGhyb3VnaCBhIEdpZ2FzZXQgYmFzZS4gVGhlcmVmb3JlIHRoZXkgYXNzdW1lIHRoYXQgdGhlIGRldmljZQorICAgICBpcyByZWdpc3RlcmVkIHRvIGEgREVDVCBiYXNlLgorCisgICAgIElmIHRoZSBNMTAxL00xMDUgZGV2aWNlIGlzIG5vdCByZWdpc3RlcmVkIHRvIGEgYmFzZSwgaW5pdGlhbGl6YXRpb24gb2YKKyAgICAgdGhlIGRldmljZSBmYWlscywgYW5kIGEgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlIGlzIGxvZ2dlZCBieSB0aGUKKyAgICAgZHJpdmVyLiBJbiB0aGF0IHNpdHVhdGlvbiwgYSByZXN0cmljdGVkIHNldCBvZiBmdW5jdGlvbnMgaXMgYXZhaWxhYmxlCisgICAgIHdoaWNoIGluY2x1ZGVzLCBpbiBwYXJ0aWN1bGFyLCB0aG9zZSBuZWNlc3NhcnkgZm9yIHJlZ2lzdGVyaW5nIHRoZSBkZXZpY2UKKyAgICAgdG8gYSBiYXNlIG9yIGZvciBzd2l0Y2hpbmcgaXQgYmV0d2VlbiBGaXhlZCBQYXJ0IGFuZCBQb3J0YWJsZSBQYXJ0CisgICAgIG1vZGVzLiBTZWUgdGhlIGdpZ2Fjb250cig4KSBtYW5wYWdlIGZvciBkZXRhaWxzLgorCiszLiAgIFRyb3VibGVzaG9vdGluZworICAgICAtLS0tLS0tLS0tLS0tLS0KKzMuMS4gU29sdXRpb25zIHRvIGZyZXF1ZW50bHkgcmVwb3J0ZWQgcHJvYmxlbXMKKyAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgUHJvYmxlbToKKyAgICAgICAgWW91IGhhdmUgYSBzbG93IHByb3ZpZGVyIGFuZCBpc2RuNGxpbnV4IGdpdmVzIHVwIGRpYWxpbmcgdG9vIGVhcmx5LgorICAgICBTb2x1dGlvbjoKKyAgICAgICAgTG9hZCB0aGUgaXNkbiBtb2R1bGUgdXNpbmcgdGhlIGRpYWx0aW1lb3V0IG9wdGlvbi4gWW91IGNhbiBkbyB0aGlzIGUuZy4KKyAgICAgICAgYnkgYWRkaW5nIGEgbGluZSBsaWtlCisKKyAgICAgICAgICAgb3B0aW9ucyBpc2RuIGRpYWx0aW1lb3V0PTE1CisKKyAgICAgICAgdG8gL2V0Yy9tb2Rwcm9iZS5kL2dpZ2FzZXQuY29uZiBvciBhIHNpbWlsYXIgZmlsZS4KKworICAgICBQcm9ibGVtOgorICAgICAgICBUaGUgaXNkbmxvZyBwcm9ncmFtIGVtaXRzIGVycm9yIG1lc3NhZ2VzIG9yIGp1c3QgZG9lc24ndCB3b3JrLgorICAgICBTb2x1dGlvbjoKKyAgICAgICAgSXNkbmxvZyBzdXBwb3J0cyBvbmx5IHRoZSBIaVNheCBkcml2ZXIuIERvIG5vdCBhdHRlbXB0IHRvIHVzZSBpdCB3aXRoCisJb3RoZXIgZHJpdmVycyBzdWNoIGFzIEdpZ2FzZXQuCisKKyAgICAgUHJvYmxlbToKKyAgICAgICAgWW91IGhhdmUgdHdvIG9yIG1vcmUgREVDVCBkYXRhIGFkYXB0ZXJzIChNMTAxL00xMDUpIGFuZCBvbmx5IHRoZQorICAgICAgICBmaXJzdCBvbmUgeW91IHR1cm4gb24gd29ya3MuCisgICAgIFNvbHV0aW9uOgorICAgICAgICBTZWxlY3QgVW5pbW9kZW0gbW9kZSBmb3IgYWxsIERFQ1QgZGF0YSBhZGFwdGVycy4gKHNlZSBzZWN0aW9uIDIuNS4pCisKKyAgICAgUHJvYmxlbToKKwlNZXNzYWdlcyBsaWtlIHRoaXM6CisJICAgIHVzYl9naWdhc2V0IDMtMjoxLjA6IENvdWxkIG5vdCBpbml0aWFsaXplIHRoZSBkZXZpY2UuCisJYXBwZWFyIGluIHlvdXIgc3lzbG9nLgorICAgICBTb2x1dGlvbjoKKwlDaGVjayB3aGV0aGVyIHlvdXIgTTEweCB3aXJlbGVzcyBkZXZpY2UgaXMgY29ycmVjdGx5IHJlZ2lzdGVyZWQgdG8gdGhlCisJR2lnYXNldCBiYXNlLiAoc2VlIHNlY3Rpb24gMi43LikKKworMy4yLiBUZWxsaW5nIHRoZSBkcml2ZXIgdG8gcHJvdmlkZSBtb3JlIGluZm9ybWF0aW9uCisgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgQnVpbGRpbmcgdGhlIGRyaXZlciB3aXRoIHRoZSAiR2lnYXNldCBkZWJ1Z2dpbmciIGtlcm5lbCBjb25maWd1cmF0aW9uCisgICAgIG9wdGlvbiAoQ09ORklHX0dJR0FTRVRfREVCVUcpIGdpdmVzIGl0IHRoZSBhYmlsaXR5IHRvIHByb2R1Y2UgYWRkaXRpb25hbAorICAgICBpbmZvcm1hdGlvbiB1c2VmdWwgZm9yIGRlYnVnZ2luZy4KKworICAgICBZb3UgY2FuIGNvbnRyb2wgdGhlIGFtb3VudCBvZiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gdGhlIGRyaXZlciBwcm9kdWNlcyBieQorICAgICB3cml0aW5nIGFuIGFwcHJvcHJpYXRlIHZhbHVlIHRvIC9zeXMvbW9kdWxlL2dpZ2FzZXQvcGFyYW1ldGVycy9kZWJ1ZywgZS5nLgorICAgICAgICBlY2hvIDAgPiAvc3lzL21vZHVsZS9naWdhc2V0L3BhcmFtZXRlcnMvZGVidWcKKyAgICAgc3dpdGNoZXMgb2ZmIGRlYnVnZ2luZyBvdXRwdXQgY29tcGxldGVseSwKKyAgICAgICAgZWNobyAweDMwMjAyMCA+IC9zeXMvbW9kdWxlL2dpZ2FzZXQvcGFyYW1ldGVycy9kZWJ1ZworICAgICBlbmFibGVzIGEgcmVhc29uYWJsZSBzZXQgb2YgZGVidWdnaW5nIG91dHB1dCBtZXNzYWdlcy4gVGhlc2UgdmFsdWVzIGFyZQorICAgICBiaXQgcGF0dGVybnMgd2hlcmUgZXZlcnkgYml0IGNvbnRyb2xzIGEgY2VydGFpbiB0eXBlIG9mIGRlYnVnZ2luZyBvdXRwdXQuCisgICAgIFNlZSB0aGUgY29uc3RhbnRzIERFQlVHXyogaW4gdGhlIHNvdXJjZSBmaWxlIGdpZ2FzZXQuaCBmb3IgZGV0YWlscy4KKworICAgICBUaGUgaW5pdGlhbCB2YWx1ZSBjYW4gYmUgc2V0IHVzaW5nIHRoZSBkZWJ1ZyBwYXJhbWV0ZXIgd2hlbiBsb2FkaW5nIHRoZQorICAgICBtb2R1bGUgImdpZ2FzZXQiLCBlLmcuIGJ5IGFkZGluZyBhIGxpbmUKKyAgICAgICAgb3B0aW9ucyBnaWdhc2V0IGRlYnVnPTAKKyAgICAgdG8geW91ciBtb2R1bGUgY29uZmlndXJhdGlvbiBmaWxlLCBlZy4gL2V0Yy9tb2Rwcm9iZS5kL2dpZ2FzZXQuY29uZgorCisgICAgIEdlbmVyYXRlZCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kCisgICAgIC0gYXMgb3V0cHV0IG9mIHRoZSBjb21tYW5kCisgICAgICAgICBkbWVzZworICAgICAtIGluIHN5c3RlbSBsb2cgZmlsZXMgd3JpdHRlbiBieSB5b3VyIHN5c2xvZyBkYWVtb24sIHVzdWFsbHkKKyAgICAgICBpbiAvdmFyL2xvZy8sIGUuZy4gL3Zhci9sb2cvbWVzc2FnZXMuCisKKzMuMy4gUmVwb3J0aW5nIHByb2JsZW1zIGFuZCBidWdzCisgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICBJZiB5b3UgY2FuJ3Qgc29sdmUgcHJvYmxlbXMgd2l0aCB0aGUgZHJpdmVyIG9uIHlvdXIgb3duLCBmZWVsIGZyZWUgdG8KKyAgICAgdXNlIG9uZSBvZiB0aGUgZm9ydW1zLCBidWcgdHJhY2tlcnMsIG9yIG1haWxpbmcgbGlzdHMgb24KKyAgICAgICAgIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZ2lnYXNldDMwN3gKKyAgICAgb3Igd3JpdGUgYW4gZWxlY3Ryb25pYyBtYWlsIHRvIHRoZSBtYWludGFpbmVycy4KKworICAgICBUcnkgdG8gcHJvdmlkZSBhcyBtdWNoIGluZm9ybWF0aW9uIGFzIHBvc3NpYmxlLCBzdWNoIGFzCisgICAgIC0gZGlzdHJpYnV0aW9uCisgICAgIC0ga2VybmVsIHZlcnNpb24gKHVuYW1lIC1yKQorICAgICAtIGdjYyB2ZXJzaW9uIChnY2MgLS12ZXJzaW9uKQorICAgICAtIGhhcmR3YXJlIGFyY2hpdGVjdHVyZSAodW5hbWUgLW0sIC4uLikKKyAgICAgLSB0eXBlIGFuZCBmaXJtd2FyZSB2ZXJzaW9uIG9mIHlvdXIgZGV2aWNlIChiYXNlIGFuZCB3aXJlbGVzcyBtb2R1bGUsCisgICAgICAgaWYgYW55KQorICAgICAtIG91dHB1dCBvZiAibHN1c2IgLXYiIChpZiB1c2luZyBhbiBVU0IgZGV2aWNlKQorICAgICAtIGVycm9yIG1lc3NhZ2VzCisgICAgIC0gcmVsZXZhbnQgc3lzdGVtIGxvZyBtZXNzYWdlcyAoaXQgd291bGQgaGVscCBpZiB5b3UgYWN0aXZhdGUgZGVidWcKKyAgICAgICBvdXRwdXQgYXMgZGVzY3JpYmVkIGluIDMuMi4pCisKKyAgICAgRm9yIGhlbHAgd2l0aCBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gcHJvYmxlbXMgbm90IHNwZWNpZmljIHRvIG91ciBkcml2ZXIsCisgICAgIHN1Y2ggYXMgaXNkbjRsaW51eCBhbmQgbmV0d29yayBjb25maWd1cmF0aW9uIGlzc3VlcywgcGxlYXNlIHJlZmVyIHRvIHRoZQorICAgICBhcHByb3ByaWF0ZSBmb3J1bXMgYW5kIG5ld3Nncm91cHMuCisKKzMuNC4gUmVwb3J0aW5nIHByb2JsZW0gc29sdXRpb25zCisgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICBJZiB5b3Ugc29sdmVkIGEgcHJvYmxlbSB3aXRoIG91ciBkcml2ZXJzLCB3cm90ZSBzdGFydHVwIHNjcmlwdHMgZm9yIHlvdXIKKyAgICAgZGlzdHJpYnV0aW9uLCAuLi4gZmVlbCBmcmVlIHRvIGNvbnRhY3QgdXMgKHVzaW5nIG9uZSBvZiB0aGUgcGxhY2VzCisgICAgIG1lbnRpb25lZCBpbiAzLjMuKS4gV2UnZCBsaWtlIHRvIGFkZCBzY3JpcHRzLCBoaW50cywgZG9jdW1lbnRhdGlvbgorICAgICB0byB0aGUgZHJpdmVyIGFuZC9vciB0aGUgcHJvamVjdCB3ZWIgcGFnZS4KKworCis0LiAgIExpbmtzLCBvdGhlciBzb2Z0d2FyZQorICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgLSBTb3VyY2Vmb3JnZSBwcm9qZWN0IGRldmVsb3BpbmcgdGhpcyBkcml2ZXIgYW5kIGFzc29jaWF0ZWQgdG9vbHMKKyAgICAgICAgIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZ2lnYXNldDMwN3gKKyAgICAgLSBZYWhvbyEgR3JvdXAgb24gdGhlIFNpZW1lbnMgR2lnYXNldCBmYW1pbHkgb2YgZGV2aWNlcworICAgICAgICAgaHR0cDovL2RlLmdyb3Vwcy55YWhvby5jb20vZ3JvdXAvU2llbWVucy1HaWdhc2V0CisgICAgIC0gU2llbWVucyBHaWdhc2V0L1QtU2ludXMgY29tcGF0aWJpbGl0eSB0YWJsZQorICAgICAgICAgaHR0cDovL3d3dy5lcmJ6ZS5pbmZvL3NpbnVzX2dpZ2FzZXQuaHRtCisKKworNS4gICBDcmVkaXRzCisgICAgIC0tLS0tLS0KKyAgICAgVGhhbmtzIHRvCisKKyAgICAgS2Fyc3RlbiBLZWlsCisgICAgICAgIGZvciBoaXMgaGVscCB3aXRoIGlzZG40bGludXgKKyAgICAgRGV0aSBGbGllZ2wKKyAgICAgICAgZm9yIGhpcyBiYXNlIGRyaXZlciBjb2RlCisgICAgIERlbm5pcyBEaWV0cmljaAorICAgICAgICBmb3IgaGlzIGtlcm5lbCAyLjYgcGF0Y2hlcworICAgICBBbmRyZWFzIFJ1bW1lbAorICAgICAgICBmb3IgaGlzIHdvcmsgYW5kIGxvZ3MgdG8gZ2V0IHVuaW1vZGVtIG1vZGUgd29ya2luZworICAgICBBbmRyZWFzIERlZ2VydAorICAgICAgICBmb3IgaGlzIGxvZ3MgYW5kIHBhdGNoZXMgdG8gZ2V0IGN4IDEwMCB3b3JraW5nCisgICAgIERpZXRyaWNoIEZlaXN0CisgICAgICAgIGZvciBoaXMgZ2VuZXJvdXMgZG9uYXRpb24gb2Ygb25lIE0xMDUgYW5kIHR3byBNMTAxIGNvcmRsZXNzIGFkYXB0ZXJzCisgICAgIENocmlzdG9waCBTY2h3ZWVycworICAgICAgICBmb3IgaGlzIGdlbmVyb3VzIGRvbmF0aW9uIG9mIGEgTTM0IGRldmljZQorCisgICAgIGFuZCBhbGwgdGhlIG90aGVyIHBlb3BsZSB3aG8gc2VudCBsb2dzIGFuZCBvdGhlciBpbmZvcm1hdGlvbi4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5oZmMtcGNpIGIvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5oZmMtcGNpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YTRlZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2lzZG4vUkVBRE1FLmhmYy1wY2kKQEAgLTAsMCArMSw0MSBAQAorVGhlIGRyaXZlciBmb3IgdGhlIEhGQy1QQ0kgYW5kIEhGQy1QQ0ktQSBjaGlwcyBmcm9tIENDRCBtYXkgYmUgdXNlZAorZm9yIG1hbnkgT0VNIGNhcmRzIHVzaW5nIHRoaXMgY2hpcHMuCitBZGRpdGlvbmFsbHkgdGhlIGRyaXZlciBoYXMgYSBzcGVjaWFsIGZlYXR1cmUgd2hpY2ggbWFrZXMgaXQgcG9zc2libGUKK3RvIHJlYWQgdGhlIGVjaG8tY2hhbm5lbCBvZiB0aGUgaXNkbiBidXMuIFNvIGFsbCBmcmFtZXMgaW4gYm90aCBkaXJlY3Rpb25zCittYXkgYmUgbG9nZ2VkLgorV2hlbiB0aGUgZWNobyBsb2dnaW5nIGZlYXR1cmUgaXMgdXNlZCB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBCLWNoYW5uZWxzCitmb3IgYSBIRkMtUENJIGNhcmQgaXMgcmVkdWNlZCB0byAxLiBPZiBjb3Vyc2UgdGhpcyBpcyBvbmx5IHJlbGV2YW50IHRvCit0aGUgY2FyZCwgbm90IHRvIHRoZSBpc2RuIGxpbmUuCitUbyBhY3RpdmF0ZSB0aGUgZWNobyBtb2RlIHRoZSBmb2xsb3dpbmcgaW9jdGxzIG11c3QgYmUgZW50ZXJlZDoKKworaGlzYXhjdHJsIDxkcml2ZXIvY2FyZG5hbWU+IDEwIDEKKworVGhpcyByZWR1Y2VzIHRoZSBhdmFpbGFibGUgY2hhbm5lbHMgdG8gMS4gVGhlcmUgbXVzdCBub3QgYmUgb3BlbiBjb25uZWN0aW9ucwordGhyb3VnaCB0aGlzIGNhcmQgd2hlbiBlbnRlcmluZyB0aGUgY29tbWFuZC4KK0FuZCB0aGVuOgorCitoaXNheGN0cmwgPGRyaXZlci9jYXJkbmFtZT4gMTIgMQorCitUaGlzIGVuYWJsZXMgdGhlIGVjaG8gbW9kZS4gSWYgSGV4IGxvZ2dpbmcgaXMgYWN0aXZhdGVkIHRoZSBpc2RuY3RybHggCitkZXZpY2VzIHNob3cgYSBvdXRwdXQgd2l0aCBhIGxpbmUgYmVnaW5uaW5nIG9mIEhFWDogZm9yIHRoZSBwcm92aWRlcnMKK2V4Y2hhbmdlIGFuZCBFQ0hPOiBmb3IgaXNkbiBkZXZpY2VzIHNlbmRpbmcgdG8gdGhlIHByb3ZpZGVyLgorCitJZiBtb3JlIHRoYW4gb25lIEhGQy1QQ0kgY2FyZHMgYXJlIGluc3RhbGxlZCwgYSBzcGVjaWZpYyBjYXJkIG1heSBiZSBzZWxlY3RlZAorYXQgdGhlIGhpc2F4IG1vZHVsZSBsb2FkIGNvbW1hbmQgbGluZS4gU3VwcGx5IHRoZSBsb2FkIGNvbW1hbmQgd2l0aCB0aGUgZGVzaXJlZAorSU8tYWRkcmVzcyBvZiB0aGUgZGVzaXJlZCBjYXJkLiAKK0V4YW1wbGU6CitUaGVyZSB0cmVlIGNhcmRzIGluc3RhbGxlZCBpbiB5b3VyIG1hY2hpbmUgYXQgSU8tYmFzZSBhZGRyZXNzZXMgMHhkMDAwLCAweGQ0MDAgCithbmQgMHhkYzAwCitJZiB5b3Ugd2FudCB0byB1c2UgdGhlIGNhcmQgYXQgMHhkNDAwIHN0YW5kYWxvbmUgeW91IHNob3VsZCBzdXBwbHkgdGhlIGluc21vZAorb3IgZGVwbW9kIHdpdGggdHlwZT0zNSBpbz0weGQ0MDAuCitJZiB5b3Ugd2FudCB0byB1c2UgYWxsIHRocmVlIGNhcmRzLCBidXQgdGhlIG9yZGVyIG5lZWRzIHRvIGJlIGF0IDB4ZGMwMCwweGQ0MDAsCisweGQwMDAgeW91IG1heSBnaXZlIHRoZSBwYXJhbWV0ZXJzIHR5cGU9MzUsMzUsMzUgaW89MHhkYzAwLDB4ZDQwMCwweGQwMCAKK1RoZW4gdGhlIGRlc2lyZWQgY2FyZCB3aWxsIGJlIHRoZSBpbml0aWFsaXNlZCBpbiB0aGUgZGVzaXJlZCBvcmRlci4KK0lmIHRoZSBpbyBwYXJhbWV0ZXIgaXMgdXNlZCB0aGUgaW8gYWRkcmVzc2VzIG9mIGFsbCB1c2VkIGNhcmRzIHNob3VsZCBiZSAKK3N1cHBsaWVkIGVsc2UgdGhlIHBhcmFtZXRlciBpcyBhc3N1bWVkIDAgYW5kIGEgYXV0byBzZWFyY2ggZm9yIGEgZnJlZSBjYXJkIGlzCitpbnZva2VkIHdoaWNoIG1heSBub3QgZ2l2ZSB0aGUgd2FudGVkIHJlc3VsdC4gCisKK0NvbW1lbnRzIGFuZCByZXBvcnRzIHRvIHdlcm5lckBpc2RuNGxpbnV4LmRlIG9yIHdlcm5lckBpc2RuLWRldmVsb3BtZW50LmRlCisKKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lzZG4vUkVBRE1FLmh5c2RuIGIvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5oeXNkbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWNhMTFmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5oeXNkbgpAQCAtMCwwICsxLDE5NSBAQAorJElkOiBSRUFETUUuaHlzZG4sdiAxLjMuNi4xIDIwMDEvMDIvMTAgMTQ6NDE6MTkga2FpIEV4cCAkCitUaGUgaHlzZG4gZHJpdmVyIGhhcyBiZWVuIHdyaXR0ZW4gYnkKK1dlcm5lciBDb3JuZWxpdXMgKHdlcm5lckBpc2RuNGxpbnV4LmRlIG9yIHdlcm5lckB0aXRyby5kZSkKK2ZvciBIeXBlcmNvcGUgR21iSCBBYWNoZW4gR2VybWFueS4gSHlwZXJjb3BlIGFncmVlZCB0byBwdWJsaXNoIHRoaXMgZHJpdmVyCit1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCisKK1RoZSBDQVBJIDIuMC1zdXBwb3J0IHdhcyBhZGRlZCBieSBVbHJpY2ggQWxicmVjaHQgKHVhbGJyZWNodEBoeXBlcmNvcGUuZGUpCitmb3IgSHlwZXJjb3BlIEdtYkggQWFjaGVuLCBHZXJtYW55LgorCisKKyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgICBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKworVGFibGUgb2YgY29udGVudHMKKz09PT09PT09PT09PT09PT09CisKKzEuIEFib3V0IHRoZSBkcml2ZXIKKworMi4gTG9hZGluZy9VbmxvYWRpbmcgdGhlIGRyaXZlcgorCiszLiBFbnRyaWVzIGluIHRoZSAvcHJvYyBmaWxlc3lzdGVtCisKKzQuIFRoZSAvcHJvYy9uZXQvaHlzZG4vY2FyZGNvbmZYIGZpbGUKKworNS4gVGhlIC9wcm9jL25ldC9oeXNkbi9jYXJkbG9nWCBmaWxlCisKKzYuIFdoZXJlIHRvIGdldCBhZGRpdGlvbmFsIGluZm8gYW5kIGhlbHAKKworCisxLiBBYm91dCB0aGUgZHJpdmVyCisKKyAgIFRoZSBkcml2ZXJzL2lzZG4vaHlzZG4gc3ViZGlyIGNvbnRhaW5zIGEgZHJpdmVyIGZvciBIWVBFUkNPUEVzIGFjdGl2ZSAKKyAgIFBDSSBpc2RuIGNhcmRzIENoYW1wLCBFcmdvIGFuZCBNZXRyby4gVG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRoaXMgY2FyZHMKKyAgIGVuYWJsZSBJU0ROIHN1cHBvcnQgaW4gdGhlIGtlcm5lbCBjb25maWcgYW5kIHN1cHBvcnQgZm9yIEhZU0ROIGNhcmRzIGluCisgICB0aGUgYWN0aXZlIGNhcmRzIHN1Ym1lbnUuIFRoZSBkcml2ZXIgbWF5IG9ubHkgYmUgY29tcGlsZWQgYW5kIHVzZWQgaWYgCisgICBzdXBwb3J0IGZvciBsb2FkYWJsZSBtb2R1bGVzIGFuZCB0aGUgcHJvY2VzcyBmaWxlc3lzdGVtIGhhdmUgYmVlbiBlbmFibGVkLgorCisgICBUaGVzZSBjYXJkcyBwcm92aWRlIHR3byBkaWZmZXJlbnQgaW50ZXJmYWNlcyB0byB0aGUga2VybmVsLiBXaXRob3V0IHRoZQorICAgb3B0aW9uYWwgQ0FQSSAyLjAgc3VwcG9ydCwgdGhleSByZWdpc3RlciBhcyBldGhlcm5ldCBjYXJkLiBJUC1yb3V0aW5nCisgICB0byBhIElTRE4tZGVzdGluYXRpb24gaXMgcGVyZm9ybWVkIG9uIHRoZSBjYXJkIGl0c2VsZi4gQWxsIG5lY2Vzc2FyeQorICAgaGFuZGxlcnMgZm9yIHZhcmlvdXMgcHJvdG9jb2xzIGxpa2UgcHBwIGFuZCBvdGhlcnMgYXMgd2VsbCBhcyBjb25maWcgaW5mbworICAgYW5kIGZpcm13YXJlIG1heSBiZSBmZXRjaGVkIGZyb20gSHlwZXJjb3BlcyBXV1ctU2l0ZSB3d3cuaHlwZXJjb3BlLmRlLgorCisgICBXaXRoIENBUEkgMi4wIHN1cHBvcnQgZW5hYmxlZCwgdGhlIGNhcmQgY2FuIGFsc28gYmUgdXNlZCBhcyBhIENBUEkgMi4wIAorICAgY29tcGxpYW50IGRldmljZXMgd2l0aCBlaXRoZXIgQ0FQSSAyLjAgYXBwbGljYXRpb25zIAorICAgKGNoZWNrIGlzZG40ay11dGlscykgb3IgLXVzaW5nIHRoZSBjYXBpZHJ2IG1vZHVsZS0gYXMgYSByZWd1bGFyCisgICBpc2RuNGxpbnV4IGRldmljZS4gVGhpcyBpcyBkb25lIHZpYSB0aGUgc2FtZSBtZWNoYW5pc20gYXMgd2l0aCB0aGUgCisgICBhY3RpdmUgQVZNIGNhcmRzIGFuZCBpbiBmYWN0IHVzZXMgdGhlIHNhbWUgbW9kdWxlLgorICAgCisKKzIuIExvYWRpbmcvVW5sb2FkaW5nIHRoZSBkcml2ZXIKKworICAgVGhlIG1vZHVsZSBoYXMgbm8gY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMgYW5kIGF1dG8gZGV0ZWN0cyB1cCB0byAxMCBjYXJkcworICAgaW4gdGhlIGlkLXJhbmdlIDAtOS4KKyAgIElmIGEgbG9hZGVkIGRyaXZlciBzaGFsbCBiZSB1bmxvYWRlZCBhbGwgb3BlbiBmaWxlcyBpbiB0aGUgL3Byb2MvbmV0L2h5c2RuCisgICBzdWJkaXIgbmVlZCB0byBiZSBjbG9zZWQgYW5kIGFsbCBldGhlcm5ldCBpbnRlcmZhY2VzIGFsbG9jYXRlZCBieSB0aGlzIAorICAgZHJpdmVyIG11c3QgYmUgc2h1dCBkb3duLiBPdGhlcndpc2UgdGhlIG1vZHVsZSBjb3VudGVyIHdpbGwgYXZvaWQgYSBtb2R1bGUKKyAgIHVubG9hZC4KKyAgIAorICAgSWYgeW91IGFyZSB1c2luZyB0aGUgQ0FQSSAyLjAtaW50ZXJmYWNlLCBtYWtlIHN1cmUgdG8gbG9hZC9tb2Rwcm9iZSB0aGUKKyAgIGtlcm5lbGNhcGktbW9kdWxlIGZpcnN0LgorCisgICBJZiB5b3UgcGxhbiB0byB1c2UgdGhlIGNhcGlkcnYtbGluayB0byBpc2RuNGxpbnV4LCBtYWtlIHN1cmUgdG8gbG9hZAorICAgY2FwaWRydi5vIGFmdGVyIGFsbCBtb2R1bGVzIHVzaW5nIHRoaXMgZHJpdmVyIChpLmUuIGFmdGVyIGh5c2RuIGFuZAorICAgYW55IGF2bS1zcGVjaWZpYyBtb2R1bGVzKS4KKworMy4gRW50cmllcyBpbiB0aGUgL3Byb2MgZmlsZXN5c3RlbQorCisgICBXaGVuIHRoZSBtb2R1bGUgaGFzIGJlZW4gbG9hZGVkIGl0IGFkZHMgdGhlIGRpcmVjdG9yeSBoeXNkbiBpbiB0aGUgCisgICAvcHJvYy9uZXQgdHJlZS4gVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgZXhhY3RseSAyIGZpbGUgZW50cmllcyBmb3IgZWFjaCAKKyAgIGNhcmQuIE9uZSBpcyBjYWxsZWQgY2FyZGNvbmZYIGFuZCB0aGUgb3RoZXIgY2FyZGxvZ1gsIHdoZXJlIFggaXMgdGhlCisgICBjYXJkIGlkIG51bWJlciBmcm9tIDAgdG8gOS4gCisgICBUaGUgY2FyZHMgYXJlIG51bWJlcmVkIGluIHRoZSBvcmRlciBmb3VuZCBpbiB0aGUgUENJIGNvbmZpZyBkYXRhLgorCis0LiBUaGUgL3Byb2MvbmV0L2h5c2RuL2NhcmRjb25mWCBmaWxlCisKKyAgIFRoaXMgZmlsZSBtYXkgYmUgcmVhZCB0byBnZXQgYnkgZXZlcnlvbmUgdG8gZ2V0IGluZm8gYWJvdXQgdGhlIGNhcmRzIHR5cGUsIAorICAgYWN0dWFsIHN0YXRlLCBhdmFpbGFibGUgZmVhdHVyZXMgYW5kIHVzZWQgcmVzb3VyY2VzLgorICAgVGhlIGZpcnN0IDMgZW50cmllcyAoaWQsIGJ1cyBhbmQgc2xvdCkgYXJlIFBDSSBpbmZvIGZpZWxkcywgdGhlIGZvbGxvd2luZworICAgdHlwZSBmaWVsZCBnaXZlcyB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNhcmRzIHR5cGU6CisKKyAgIDQgLT4gRXJnbyBjYXJkIChzZXJ2ZXIgY2FyZCB3aXRoIDIgYi1jaGFucykKKyAgIDUgLT4gTWV0cm8gY2FyZCAoc2VydmVyIGNhcmQgd2l0aCA0IG9yIDggYi1jaGFucykKKyAgIDYgLT4gQ2hhbXAgY2FyZCAoY2xpZW50IGNhcmQgd2l0aCAyIGItY2hhbnMpICAgCisKKyAgIFRoZSBmb2xsb3dpbmcgMyBmaWVsZHMgc2hvdyB0aGUgaGFyZHdhcmUgYXNzaWdubWVudHMgZm9yIGlycSwgaW9iYXNlIGFuZCB0aGUKKyAgIGR1YWwgcG9ydGVkIG1lbW9yeSAoZHAtbWVtKS4KKyAgIFRoZSBmaWVsZHMgYi1jaGFucyBhbmQgZmF4LWNoYW5zIGFubm91bmNlIHRoZSBhdmFpbGFibGUgY2FyZCByZXNvdXJjZXMgb2YKKyAgIHRoaXMgdHlwZXMgZm9yIHRoZSB1c2VyLgorICAgVGhlIHN0YXRlIHZhcmlhYmxlIGluZGljYXRlcyB0aGUgYWN0dWFsIGRyaXZlcnMgc3RhdGUgZm9yIHRoaXMgY2FyZCB3aXRoIHRoZQorICAgZm9sbG93aW5nIGFzc2lnbm1lbnRzLgorCisgICAwIC0+IGNhcmQgaGFzIG5vdCBiZWVuIGJvb3RlZCBzaW5jZSBkcml2ZXIgbG9hZAorICAgMSAtPiBjYXJkIGJvb3RpbmcgaXMgYWN0dWFsbHkgaW4gcHJvZ2VzcworICAgMiAtPiBjYXJkIGlzIGluIGFuIGVycm9yIHN0YXRlIGR1ZSB0byBhIHByZXZpb3VzIGJvb3QgZmFpbHVyZQorICAgMyAtPiBjYXJkIGlzIGJvb3RlZCBhbmQgYWN0aXZlCisKKyAgIEFuZCB0aGUgbGFzdCBmaWVsZCAoZGV2aWNlKSBzaG93cyB0aGUgbmFtZSBvZiB0aGUgZXRoZXJuZXQgZGV2aWNlIGFzc2lnbmVkCisgICB0byB0aGlzIGNhcmQuIFVwIHRvIHRoZSBmaXJzdCBzdWNjZXNzZnVsIGJvb3QgdGhpcyBmaWVsZCBvbmx5IHNob3dzIGEgLQorICAgdG8gdGVsbCB0aGF0IG5vIG5ldCBkZXZpY2UgaGFzIGJlZW4gYWxsb2NhdGVkIHVwIHRvIG5vdy4gT25jZSBhIG5ldCBkZXZpY2UKKyAgIGhhcyBiZWVuIGFsbG9jYXRlZCBpdCByZW1haW5zIGFzc2lnbmVkIHRvIHRoaXMgY2FyZCwgZXZlbiBpZiBhIGNhcmQgaXMKKyAgIHJlYm9vdGVkIGFuZCBhbiBib290IGVycm9yIG9jY3Vycy4gCisKKyAgIFdyaXRpbmcgdG8gdGhlIGNhcmRjb25mWCBmaWxlIGJvb3RzIHRoZSBjYXJkIG9yIHRyYW5zZmVycyBjb25maWcgbGluZXMgdG8gCisgICB0aGUgY2FyZHMgZmlybXdhcmUuIFRoZSB0eXBlIG9mIGRhdGEgaXMgYXV0b21hdGljYWxseSBkZXRlY3RlZCB3aGVuIHRoZSAKKyAgIGZpcnN0IGRhdGEgaXMgd3JpdHRlbi4gT25seSByb290IGhhcyB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBmaWxlLgorICAgVGhlIGZpcm13YXJlIGJvb3QgZmlsZXMgYXJlIG5vcm1hbGx5IGNhbGxlZCBoeWNsaWVudC5wb2YgZm9yIGNsaWVudCBjYXJkcworICAgYW5kIGh5c2VydmVyLnBvZiBmb3Igc2VydmVyIGNhcmRzLgorICAgQWZ0ZXIgc3VjY2Vzc2Z1bGx5IHdyaXRpbmcgdGhlIGJvb3QgZmlsZSwgY29tcGxldGUgY29uZmlnIGZpbGVzIG9yIHNpbmdsZQorICAgY29uZmlnIGxpbmVzIG1heSBiZSBjb3BpZWQgdG8gdGhpcyBmaWxlLgorICAgSWYgYW4gZXJyb3Igb2NjdXJzIHRoZSByZXR1cm4gdmFsdWUgZ2l2ZW4gdG8gdGhlIHdyaXRpbmcgcHJvY2VzcyBoYXMgdGhlIAorICAgZm9sbG93aW5nIGFkZGl0aW9uYWwgY29kZXMgKGRlY2ltYWwpOgorCisgICAxMDAwIEFub3RoZXIgcHJvY2VzcyBpcyBjdXJyZW50bHkgYm9vdG5nIHRoZSBjYXJkCisgICAxMDAxIEludmFsaWQgZmlybXdhcmUgaGVhZGVyCisgICAxMDAyIEJvYXJkcyBkdWFsLXBvcnQgUkFNIHRlc3QgZmFpbGVkCisgICAxMDAzIEludGVybmFsIGZpcm13YXJlIGhhbmRsZXIgZXJyb3IKKyAgIDEwMDQgQm9vdCBpbWFnZSBzaXplIGludmFsaWQKKyAgIDEwMDUgRmlyc3QgYm9vdCBzdGFnZSAoYm9vdHN0cmFwIGxvYWRlcikgZmFpbGVkCisgICAxMDA2IFNlY29uZCBib290IHN0YWdlIGZhaWx1cmUKKyAgIDEwMDcgVGltZW91dCB3YWl0aW5nIGZvciBjYXJkIHJlYWR5IGR1cmluZyBib290CisgICAxMDA4IE9wZXJhdGlvbiBvbmx5IGFsbG93ZWQgaW4gYm9vdGVkIHN0YXRlCisgICAxMDA5IENvbmZpZyBsaW5lIHRvbyBsb25nIAorICAgMTAxMCBJbnZhbGlkIGNoYW5uZWwgbnVtYmVyIAorICAgMTAxMSBUaW1lb3V0IHNlbmRpbmcgY29uZmlnIGRhdGEKKworICAgQWRkaXRpb25hbCBpbmZvIGFib3V0IGVycm9yIHJlYXNvbnMgbWF5IGJlIGZldGNoZWQgZnJvbSB0aGUgbG9nIG91dHB1dC4gCisKKzUuIFRoZSAvcHJvYy9uZXQvaHlzZG4vY2FyZGxvZ1ggZmlsZQorICAgCSAgCisgICBUaGUgY2FyZGxvZ1ggZmlsZSBlbnRyeSBtYXkgYmUgb3BlbmVkIG11bHRpcGxlIGZvciByZWFkaW5nIGJ5IGV2ZXJ5b25lIHRvIAorICAgZ2V0IHRoZSBjYXJkcyBhbmQgZHJpdmVycyBsb2cgZGF0YS4gQ2FyZCBtZXNzYWdlcyBhbHdheXMgc3RhcnQgd2l0aCB0aGUKKyAgIGtleXdvcmQgTE9HLiBBbGwgb3RoZXIgbGluZXMgYXJlIG91dHB1dCBmcm9tIHRoZSBkcml2ZXIuIAorICAgVGhlIGRyaXZlciBsb2cgZGF0YSBtYXkgYmUgcmVkaXJlY3RlZCB0byB0aGUgc3lzbG9nIGJ5IHNlbGVjdGluZyB0aGUgCisgICBhcHByb3ByaWF0ZSBiaXRtYXNrLiBUaGUgY2FyZHMgbG9nIG1lc3NhZ2VzIHdpbGwgYWx3YXlzIGJlIHNlbmQgdG8gdGhpcworICAgaW50ZXJmYWNlIGJ1dCBuZXZlciB0byB0aGUgc3lzbG9nLgorCisgICBBIHJvb3QgdXNlciBtYXkgd3JpdGUgYSBkZWNpbWFsIG9yIGhleCAod2l0aCAweCkgdmFsdWUgdCB0aGlzIGZpbGUgdG8gc2VsZWN0CisgICBkZXNpcmVkIG91dHB1dCBvcHRpb25zLiBBcyBtZW50aW9uZWQgYWJvdmUgdGhlIGNhcmRzIGxvZyBkYXQgaXMgYWx3YXlzIAorICAgd3JpdHRlbiB0byB0aGUgY2FyZGxvZyBmaWxlIGluZGVwZW5kZW50IG9mIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBvbmx5IHVzZWQKKyAgIHRvIGNoZWNrIGFuZCBkZWJ1ZyB0aGUgZHJpdmVyIGl0c2VsZjoKKworICAgRm9yIGV4YW1wbGU6IAorICAgZWNobyAiMHgzNDU2MDA3OCIgPiAvcHJvYy9uZXQvaHlzZG4vY2FyZGxvZzAKKyAgIHRvIG91dHB1dCB0aGUgaGV4IGxvZyBtYXNrIDM0NTYwMDc4IGZvciBjYXJkIDAuCisgCisgICBUaGUgd3JpdHRlbiB2YWx1ZSBpcyByZWdhcmRlZCBhcyBhbiB1bnNpZ25lZCAzMi1CaXQgdmFsdWUsIGJpdCBvcmVkIGZvciAKKyAgIGRlc2lyZWQgb3V0cHV0LiBUaGUgZm9sbG93aW5nIGJpdHMgYXJlIGFscmVhZHkgYXNzaWduZWQ6CisKKyAgIDB4ODAwMDAwMDAgICBBbGwgZHJpdmVyIGxvZyBkYXRhIGlzIGFsdGVybmF0aXZlbHkgdmlhIHN5c2xvZyAKKyAgIDB4MDAwMDAwMDEgICBMb2cgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3JzCisgICAweDAwMDAwMDEwICAgRmlybXdhcmUgbG9hZCBzdGFydCBhbmQgY2xvc2UgYXJlIGxvZ2dlZAorICAgMHgwMDAwMDAyMCAgIExvZyBmaXJtd2FyZSByZWNvcmQgcGFyc2VyCisgICAweDAwMDAwMDQwICAgTG9nIGV2ZXJ5IGZpcm13YXJlIHdyaXRlIGFjdGlvbnMKKyAgIDB4MDAwMDAwODAgICBMb2cgYWxsIGNhcmQgcmVsYXRlZCBib290IG1lc3NhZ2VzCisgICAweDAwMDAwMTAwICAgT3V0cHV0IGFsbCBjb25maWcgZGF0YSBzZW50IGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMKKyAgIDB4MDAwMDAyMDAgICBPbmx5IG5vbiBjb21tZW50IGNvbmZpZyBsaW5lcyBhcmUgc2hvd24gd3RoIGNoYW5uZWwKKyAgIDB4MDAwMDA0MDAgICBBZGRpdGlvbmFsIGNvbmYgbG9nIG91dHB1dAorICAgMHgwMDAwMTAwMCAgIExvZyB0aGUgYXN5bmNocm9ub3VzIHNjaGVkdWxlciBhY3Rpb25zIChjb25maWcgYW5kIGxvZykKKyAgIDB4MDAxMDAwMDAgICBMb2cgYWxsIG9wZW4gYW5kIGNsb3NlIGFjdGlvbnMgdG8gL3Byb2MvbmV0L2h5c2RuL2NhcmQgZmlsZXMKKyAgIDB4MDAyMDAwMDAgICBMb2cgYWxsIGFjdGlvbnMgZnJvbSAvcHJvYyBmaWxlIGVudHJpZXMKKyAgIDB4MDAwMTAwMDAgICBMb2cgbmV0d29yayBpbnRlcmZhY2UgaW5pdCBhbmQgZGVpbml0CisgICAKKzYuIFdoZXJlIHRvIGdldCBhZGRpdGlvbmFsIGluZm8gYW5kIGhlbHAKKworICAgSWYgeW91IGhhdmUgYW55IHByb2JsZW1zIGNvbmNlcm5pbmcgdGhlIGRyaXZlciBvciBjb25maWd1cmF0aW9uIGNvbnRhY3QgCisgICB0aGUgSHlwZXJjb3BlIHN1cHBvcnQgdGVhbSAoc3VwcG9ydEBoeXBlcmNvcGUuZGUpIGFuZCBvciB0aGUgYXV0aG9ycworICAgV2VybmVyIENvcm5lbGl1cyAod2VybmVyQGlzZG40bGludXggb3IgY29ybmVsaXVzQHRpdHJvLmRlKSBvcgorICAgVWxyaWNoIEFsYnJlY2h0ICh1YWxicmVjaHRAaHlwZXJjb3BlLmRlKS4KKworCisKKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaXNkbi9SRUFETUUuaWNuIGIvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5pY24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNmODMzZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaXNkbi9SRUFETUUuaWNuCkBAIC0wLDAgKzEsMTQ4IEBACiskSWQ6IFJFQURNRS5pY24sdiAxLjcgMjAwMC8wOC8wNiAwOToyMjo1MSBhcm1pbiBFeHAgJAorCitZb3UgY2FuIGdldCB0aGUgSUNOLUlTRE4tY2FyZCBmcm9tOgorCitUaGlua2luZyBPYmplY3RzIFNvZnR3YXJlIEdtYkgKK1ZlcnNiYWNoZXIgUsO2dGhlIDE1OQorOTcwNzggV8O8cnpidXJnCitUZWw6ICs0OSA5MzEgMjg3Nzk1MAorRmF4OiArNDkgOTMxIDI4Nzc5NTEKKworZW1haWwgaW5mb0B0aGluay5kZQorV1dXICAgaHR0cDovd3d3LnRoaW5rLmRlCisKKworVGhlIGNhcmQgY29tbXVuaWNhdGVzIHdpdGggdGhlIFBDIGJ5IHR3byBpbnRlcmZhY2VzOgorICAxLiBBIHJhbmdlIG9mIDQgc3VjY2Vzc2l2ZSBwb3J0LWFkZHJlc3Nlcywgd2hvc2UgYmFzZSBhZGRyZXNzIGNhbiBiZSAKKyAgICAgY29uZmlndXJlZCB3aXRoIHRoZSBzd2l0Y2hlcy4KKyAgMi4gQSBtZW1vcnkgd2luZG93IHdpdGggMTZLQi0yNTZLQiBzaXplLCB3aGljaCBjYW4gYmUgc2V0dXAgaW4gMTZrIHN0ZXBzCisgICAgIG92ZXIgdGhlIHdob2xlIHJhbmdlIG9mIDE2TUIuIElzZG40bGludXggb25seSB1c2VzIGEgMTZrIHdpbmRvdy4KKyAgICAgVGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgd2luZG93IGNhbiBiZSBjb25maWd1cmVkIHdoZW4gbG9hZGluZworICAgICB0aGUgbG93bGV2ZWwtbW9kdWxlIChzZWUgUkVBRE1FKS4gSWYgdXNpbmcgbW9yZSB0aGFuIG9uZSBjYXJkLAorICAgICBhbGwgY2FyZHMgYXJlIG1hcHBlZCB0byB0aGUgc2FtZSB3aW5kb3cgYW5kIGFjdGl2YXRlZCBhcyBuZWVkZWQuCisKK1NldHRpbmcgdXAgdGhlIElPLWFkZHJlc3MgZGlwc3dpdGNoZXMgZm9yIHRoZSBJQ04tSVNETi1jYXJkOgorCisgIFR3byB0eXBlcyBvZiBjYXJkcyBleGlzdCwgb25lIHdpdGggZGlwLXN3aXRjaGVzIGFuZCBvbmUgd2l0aAorICBob29rLXN3aXRjaGVzLgorCisgIDEuIFNldHRpbmcgZm9yIHRoZSBjYXJkIHdpdGggaG9vay1zd2l0Y2hlczoKKworICAgICAoMCA9IHN3aXRjaCBjbG9zZWQsIDEgPSBzd2l0Y2ggb3BlbikKKworICAgICBTMyBTMiBTMSAgQmFzZS1hZGRyZXNzCisgICAgICAwICAwICAwICAweDMwMAorICAgICAgMCAgMCAgMSAgMHgzMTAKKyAgICAgIDAgIDEgIDAgIDB4MzIwIChEZWZhdWx0IGZvciBpc2RuNGxpbnV4KQorICAgICAgMCAgMSAgMSAgMHgzMzAKKyAgICAgIDEgIDAgIDAgIDB4MzQwCisgICAgICAxICAwICAxICAweDM1MAorICAgICAgMSAgMSAgMCAgMHgzNjAKKyAgICAgIDEgIDEgIDEgIE5PVCBBTExPV0VEIQorICAgIAorICAyLiBTZXR0aW5nIGZvciB0aGUgY2FyZCB3aXRoIGRpcC1zd2l0Y2hlczoKKworICAgICAoMCA9IHN3aXRjaCBjbG9zZWQsIDEgPSBzd2l0Y2ggb3BlbikKKworICAgICBTMSBTMiBTMyBTNCAgQmFzZS1BZGRyZXNzCisgICAgICAwICAwICAwICAwICAweDMwMAorICAgICAgMCAgMCAgMCAgMSAgMHgzMTAKKyAgICAgIDAgIDAgIDEgIDAgIDB4MzIwIChEZWZhdWx0IGZvciBpc2RuNGxpbnV4KQorICAgICAgMCAgMCAgMSAgMSAgMHgzMzAKKyAgICAgIDAgIDEgIDAgIDAgIDB4MzQwCisgICAgICAwICAxICAwICAxICAweDM1MAorICAgICAgMCAgMSAgMSAgMCAgMHgzNjAKKyAgICAgIDAgIDEgIDEgIDEgIE5PVCBBTExPV0VEIQorICAgICAgMSAgMCAgMCAgMCAgMHgzMDgKKyAgICAgIDEgIDAgIDAgIDEgIDB4MzE4CisgICAgICAxICAwICAxICAwICAweDMyOAorICAgICAgMSAgMCAgMSAgMSAgMHgzMzgKKyAgICAgIDEgIDEgIDAgIDAgIDB4MzQ4CisgICAgICAxICAxICAwICAxICAweDM1OAorICAgICAgMSAgMSAgMSAgMCAgMHgzNjgKKyAgICAgIDEgIDEgIDEgIDEgIE5PVCBBTExPV0VEIQorCitUaGUgSUNOIGRyaXZlciBtYXkgYmUgYnVpbHQgaW50byB0aGUga2VybmVsIG9yIGFzIGEgbW9kdWxlLiBJbml0aWFsaXphdGlvbgorZGVwZW5kcyBvbiBob3cgdGhlIGRyaXZlciBpcyBidWlsdDoKKworRHJpdmVyIGJ1aWx0IGludG8gdGhlIGtlcm5lbDoKKworICBUaGUgSUNOIGRyaXZlciBjYW4gYmUgY29uZmlndXJlZCB1c2luZyB0aGUgY29tbWFuZGxpbmUtZmVhdHVyZSB3aGlsZQorICBsb2FkaW5nIHRoZSBrZXJuZWwgd2l0aCBMSUxPIG9yIExPQURMSU4uIEl0IGFjY2VwdHMgdGhlIGZvbGxvd2luZyBzeW50YXg6CisKKyAgaWNuPXAsbVssaWRzdHJpbmcxWyxpZHN0cmluZzJdXQorCisgIHdoZXJlCisKKyAgICBwID0gcG9ydGJhc2UgICAgICAoZGVmYXVsdDogMHgzMjApCisgICAgbSA9IHNoYXJlZCBtZW1vcnkgKGRlZmF1bHQ6IDB4ZDAwMDApCisKKyAgV2hlbiB1c2luZyB0aGUgSUNOIGRvdWJsZSBjYXJkICg0QiksIHlvdSBNVVNUIGRlZmluZSBUV08gaWRzdHJpbmdzLgorICBpZHN0cmluZyBtdXN0IHN0YXJ0IHdpdGggYSBjaGFyYWN0ZXIhIFRoZXJlIGlzIG5vIHdheSBmb3IgdGhlIGRyaXZlcgorICB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGEgMkIgYW5kIDRCIHR5cGUgY2FyZC4gVGhlcmVmb3JlLCBieSBzdXBwbHlpbmcKKyAgVFdPIGlkc3RyaW5ncywgeW91IHRlbGwgdGhlIGRyaXZlciB0aGF0IHlvdSBoYXZlIGEgNEIgaW5zdGFsbGVkLgorICAKKyAgSWYgeW91IGxpa2UgdG8gdXNlIG1vcmUgdGhhbiBvbmUgY2FyZCwgeW91IGNhbiB1c2UgdGhlIHByb2dyYW0KKyAgImljbmN0cmwiIGZyb20gdGhlIHV0aWxpdHktcGFja2FnZSB0byBjb25maWd1cmUgYWRkaXRpb25hbCBjYXJkcy4KKyAgWW91IG5lZWQgdG8gY29uZmlndXJlIHNoYXJlZCBtZW1vcnkgb25seSBvbmNlLCBzaW5jZSB0aGUgaWNuLWRyaXZlcgorICBtYXBzIGFsbCBjYXJkcyBpbnRvIHRoZSBzYW1lIGFkZHJlc3Mtc3BhY2UuCisKKyAgVXNpbmcgdGhlICJpY25jdHJsIi11dGlsaXR5LCBwb3J0YmFzZSBhbmQgc2hhcmVkIG1lbW9yeSBjYW4gYWxzbyBiZQorICBjaGFuZ2VkIGR1cmluZyBydW50aW1lLgorCisgIFRoZSBELWNoYW5uZWwgcHJvdG9jb2wgaXMgY29uZmlndXJlZCBieSBsb2FkaW5nIGRpZmZlcmVudCBmaXJtd2FyZQorICBpbnRvIHRoZSBjYXJkJ3MgbWVtb3J5IHVzaW5nIHRoZSAiaWNuY3RybCItdXRpbGl0eS4KKworCitEcml2ZXIgYnVpbHQgYXMgbW9kdWxlOgorCisgIFRoZSBtb2R1bGUgaWNuLm8gY2FuIGJlIGNvbmZpZ3VyZWQgZHVyaW5nICJpbnNtb2QnaW5nIiBpdCBieQorICBhcHBlbmRpbmcgaXRzIHBhcmFtZXRlcnMgdG8gdGhlIGluc21vZC1jb21tYW5kbGluZS4gVGhlIGZvbGxvd2luZworICBzeW50YXggaXMgYWNjZXB0ZWQ6CisKKyAgICBwb3J0YmFzZT1wIG1lbWJhc2U9bSBpY25faWQ9aWRzdHJpbmcgW2ljbl9pZDI9aWRzdHJpbmcyXQorCisgIHdoZXJlIHAsIG0sIGlkc3RyaW5nMSBhbmQgaWRzdHJpbmcyIGhhdmUgdGhlIHNhbWUgbWVhbmluZ3MgYXMgdGhlCisgIHBhcmFtZXRlcnMgZGVzY3JpYmVkIGZvciB0aGUga2VybmVsLXZlcnNpb24gYWJvdmUuCisgICAgICAKKyAgV2hlbiB1c2luZyB0aGUgSUNOIGRvdWJsZSBjYXJkICg0QiksIHlvdSBNVVNUIGRlZmluZSBUV08gaWRzdHJpbmdzLgorICBpZHN0cmluZyBtdXN0IHN0YXJ0IHdpdGggYSBjaGFyYWN0ZXIhIFRoZXJlIGlzIG5vIHdheSBmb3IgdGhlIGRyaXZlcgorICB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGEgMkIgYW5kIDRCIHR5cGUgY2FyZC4gVGhlcmVmb3JlLCBieSBzdXBwbHlpbmcKKyAgVFdPIGlkc3RyaW5ncywgeW91IHRlbGwgdGhlIGRyaXZlciB0aGF0IHlvdSBoYXZlIGEgNEIgaW5zdGFsbGVkLgorICAKKyAgVXNpbmcgdGhlICJpY25jdHJsIi11dGlsaXR5LCB0aGUgc2FtZSBmZWF0dXJlcyBhcHBseSB0byB0aGUgbW9kdWxhcml6ZWQKKyAgdmVyc2lvbiBsaWtlIHRvIHRoZSBrZXJuZWwtYnVpbHRpbiBvbmUuCisKKyAgVGhlIEQtY2hhbm5lbCBwcm90b2NvbCBpcyBjb25maWd1cmVkIGJ5IGxvYWRpbmcgZGlmZmVyZW50IGZpcm13YXJlCisgIGludG8gdGhlIGNhcmQncyBtZW1vcnkgdXNpbmcgdGhlICJpY25jdHJsIi11dGlsaXR5LgorCitMb2FkaW5nIHRoZSBmaXJtd2FyZSBpbnRvIHRoZSBjYXJkOgorCisgIFRoZSBmaXJtd2FyZSBpcyBzdXBwbGllZCB0b2dldGhlciB3aXRoIHRoZSBpc2RuNGstdXRpbHMgcGFja2FnZS4gSXQKKyAgY2FuIGJlIGZvdW5kIGluIHRoZSBzdWJkaXJlY3RvcnkgaWNuY3RybC9maXJtd2FyZS8KKworICBUaGVyZSBhcmUgMyBmaWxlczoKKworICAgIGxvYWRwZy5iaW4gICAtIEltYWdlIG9mIHRoZSBib290c3RyYXAgbG9hZGVyLgorICAgIHBjXzF0X2NhLmJpbiAtIEltYWdlIG9mIGZpcm13YXJlIGZvciBnZXJtYW4gMVRSNiBwcm90b2NvbC4KKyAgICBwY19ldV9jYS5iaW4gLSBJbWFnZSBpZiBmaXJtd2FyZSBmb3IgRURTUzEgKEV1cm8tSVNETikgcHJvdG9jb2wuCisKKyAgQXNzdW1pbmcgeW91IGhhdmUgaW5zdGFsbGVkIHRoZSB1dGlsaXR5LXBhY2thZ2UgY29ycmVjdGx5LCB0aGUgZmlybXdhcmUKKyAgd2lsbCBiZSBkb3dubG9hZGVkIGludG8gdGhlIDJCLWNhcmQgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorCisgICAgaWNuY3RybCAtZCBJZHN0cmluZyBsb2FkIC9ldGMvaXNkbi9sb2FkcGcuYmluIC9ldGMvaXNkbi9wY19YWF9jYS5iaW4KKworICB3aGVyZSBYWCBpcyBlaXRoZXIgIjF0IiBvciAiZXUiLCBkZXBlbmRpbmcgb24gdGhlIEQtQ2hhbm5lbCBwcm90b2NvbAorICB1c2VkIG9uIHlvdXIgUzAtYnVzIGFuZCBJZHN0cmluZyBpcyB0aGUgTmFtZSBvZiB0aGUgY2FyZCwgZ2l2ZW4gZHVyaW5nCisgIGluc21vZC10aW1lIG9yIChmb3Iga2VybmVsLWJ1aWx0aW4gZHJpdmVyKSBvbiB0aGUga2VybmVsIGNvbW1hbmRsaW5lLgorCisgIFRvIGxvYWQgYSA0Qi1jYXJkLCB0aGUgc2FtZSBjb21tYW5kIGlzIHVzZWQsIGV4Y2VwdCBhIHNlY29uZCBmaXJtd2FyZQorICBmaWxlIGlzIGFwcGVuZGVkIHRvIHRoZSBjb21tYW5kbGluZSBvZiBpY25jdHJsLgorCisgIC0+IEFmdGVyIGRvd25sb2FkaW5nIGZpcm13YXJlLCB0aGUgdHdvIExFRHMgYXQgdGhlIGJhY2sgY292ZXIgb2YgdGhlIGNhcmQKKyAgICAgKElDTi00QjogNCBMRURzKSBtdXN0IGJlIGJsaW5raW5nIGludGVybWl0dGVudGx5IG5vdy4gSWYgYSBjb25uZWN0aW9uCisgICAgIGlzIHVwLCB0aGUgY29ycmVzcG9uZGluZyBsZWQgaXMgbGl0IGNvbnRpbnVvdXNseS4KKworICBGb3IgZnVydGhlciBkb2N1bWVudGF0aW9uIChhZGRpbmcgbW9yZSBJQ04tY2FyZHMpLCByZWZlciB0byB0aGUgbWFucGFnZQorICBpY25jdHJsLjggd2hpY2ggaXMgaW5jbHVkZWQgaW4gdGhlIGlzZG40ay11dGlscyBwYWNrYWdlLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lzZG4vUkVBRE1FLm1JU0ROIGIvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5tSVNETgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDhiZjkyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5tSVNETgpAQCAtMCwwICsxLDYgQEAKK21JU0ROIGlzIGEgbmV3IG1vZHVsYXIgSVNETiBkcml2ZXIsIGluIHRoZSBsb25nIHRlcm0gaXQgc2hvdWxkIHJlcGxhY2UKK3RoZSBvbGQgSTRMIGRyaXZlciBhcmNoaXRlY3R1cmUgZm9yIHBhc3NpdiBJU0ROIGNhcmRzLgorSXQgd2FzIGRlc2lnbmVkIHRvIGFsbG93IGEgYnJvYWQgcmFuZ2Ugb2YgYXBwbGljYXRpb25zIGFuZCBpbnRlcmZhY2VzCitidXQgb25seSBoYXZlIHRoZSBiYXNpYyBmdW5jdGlvbiBpbiBrZXJuZWwsIHRoZSBpbnRlcmZhY2UgdG8gdGhlIHVzZXIKK3NwYWNlIGlzIGJhc2VkIG9uIHNvY2tldHMgd2l0aCBhIG93biBhZGRyZXNzIGZhbWlseSBBRl9JU0ROLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lzZG4vUkVBRE1FLnBjYml0IGIvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5wY2JpdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTI1MDAyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5wY2JpdApAQCAtMCwwICsxLDQwIEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBSRUFETUUgZmlsZSBmb3IgdGhlIFBDQklULUQgRGV2aWNlIERyaXZlci4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgUENCSVQgaXMgYSBFdXJvIElTRE4gYWRhcHRlciBtYW51ZmFjdHVyZWQgaW4gUG9ydHVnYWwgYnkgT2N0YWwgYW5kCitkZXZlbG9wZWQgaW4gY29vcGVyYXRpb24gd2l0aCBQb3J0dWdhbCBUZWxlY29tIGFuZCBJbmVzYy4KK1RoZSBkcml2ZXIgaW50ZXJmYWNlcyB3aXRoIHRoZSBzdGFuZGFyZCBrZXJuZWwgaXNkbiBmYWNpbGl0aWVzCitvcmlnaW5hbGx5IGRldmVsb3BlZCBieSBGcml0eiBFbGZlcnQgaW4gdGhlIGlzZG40bGludXggcHJvamVjdC4KKworVGhlIGNvbW1vbiB2ZXJzaW9ucyBvZiB0aGUgcGNiaXQgYm9hcmQgcmVxdWlyZSBhIGZpcm13YXJlIHRoYXQgaXMgCitkaXN0cmlidXRlZCAoYW5kIGNvcHlyaWdodGVkKSBieSB0aGUgbWFudWZhY3R1cmVyLiBUbyBsb2FkIHRoaXMKK2Zpcm13YXJlIHlvdSBuZWVkICJwY2JpdGN0bCIgYXZhaWxhYmxlIG9uIHRoZSBzdGFuZGFyZCBpc2RuNGstdXRpbHMKK3BhY2thZ2Ugb3IgaW4gdGhlIHBjYml0IHBhY2thZ2UgYXZhaWxhYmxlIGluOgorCitmdHA6Ly9mdHAuZGkuZmMudWwucHQvcHViL3N5c3RlbXMvTGludXgvaXNkbgorCitLbm93biBMaW1pdGF0aW9uczoKKworLSBUaGUgYm9hcmQgcmVzZXQgcHJvY2VkdXJlIGlzIGF0IHRoZSBtb21lbnQgaW5jb3JyZWN0IGFuZCB3aWxsIG9ubHkKK2FsbG93IHlvdSB0byBsb2FkIHRoZSBmaXJtd2FyZSBhZnRlciBhIGhhcmQgcmVzZXQuCisKKy0gT25seSBIRExDIGluIEItY2hhbm5lbHMgaXMgc3VwcG9ydGVkIGF0IHRoZSBtb21lbnQuIFRoZXJlIGlzIG5vCitjdXJyZW50IHN1cHBvcnQgZm9yIFguMjUgaW4gQiBvciBEIGNoYW5uZWxzIG5vciBMQVBEIGluIEIKK2NoYW5uZWxzLiBUaGUgbWFpbiByZWFzb24gaXMgdGhhdCB0aGVzZSB0d28gb3RoZXIgcHJvdG9jb2wgbW9kZXMgaGF2ZSwKK3RvIG15IGtub3dsZWRnZSwgdmVyeSBsaXR0bGUgdXNlLiBJZiB5b3Ugd2FudCB0byBzZWUgdGhlbSBpbXBsZW1lbnRlZAorKmRvKiBzZW5kIG1lIGEgbWFpbC4KKworLSBUaGUgZHJpdmVyIG9mdGVuIHRyaWdnZXJzIGVycm9ycyBpbiB0aGUgYm9hcmQgdGhhdCBJIGFuZCB0aGUKK21hbnVmYWN0dXJlciBiZWxpZXZlIHRvIGJlIGNhdXNlZCBieSBidWdzIGluIHRoZSBmaXJtd2FyZS4gVGhlIGN1cnJlbnQKK3ZlcnNpb24gaW5jbHVkZXMgc2V2ZXJhbCBwcm9jZWR1cmVzIGZvciBlcnJvciByZWNvdmVyeSB0aGF0IHNob3VsZAorYWxsb3cgbm9ybWFsIG9wZXJhdGlvbi4gUGxhbnMgZm9yIHRoZSBmdXR1cmUgaW5jbHVkZSBjb29wZXJhdGlvbiB3aXRoCit0aGUgbWFudWZhY3R1cmVyIGluIG9yZGVyIHRvIHNvbHZlIHRoaXMgcHJvYmxlbS4KKworSW5mb3JtYXRpb24vaGludHMvaGVscCBjYW4gYmUgb2J0YWluZWQgaW4gdGhlIGxpbnV4IGlzZG4KK21haWxpbmcgbGlzdCAoaXNkbjRsaW51eEBsaXN0c2Vydi5pc2RuNGxpbnV4LmRlKSBvciBkaXJlY3RseSBmcm9tIG1lLgorCityZWdhcmRzLAorICBQZWRyby4KKwkJCis8cm9xdWVAZGkuZmMudWwucHQ+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lzZG4vUkVBRE1FLnNjIGIvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5zYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTUzY2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5zYwpAQCAtMCwwICsxLDI4MSBAQAorV2VsY29tZSB0byBCZXRhIFJlbGVhc2UgMiBvZiB0aGUgY29tYmluYXRpb24gSVNETiBkcml2ZXIgZm9yIFNwZWxsQ2FzdGVyJ3MKK0lTQSBJU0ROIGFkYXB0ZXJzLiBQbGVhc2Ugbm90ZSB0aGlzIHJlbGVhc2UgMiBpbmNsdWRlcyBzdXBwb3J0IGZvciB0aGUKK0RhdGFDb21tdXRlL0JSSSBhbmQgVGVsZUNvbW11dGUvQlJJIGFkYXB0ZXJzIG9ubHkgYW5kIGFueSBvdGhlciB1c2UgaXMgCitndWFyYW50ZWVkIHRvIGZhaWwuIElmIHlvdSBoYXZlIGEgRGF0YUNvbW11dGUvUFJJIGluc3RhbGxlZCBpbiB0aGUgdGVzdAorY29tcHV0ZXIsIHdlIHJlY29tbWVuZCByZW1vdmluZyBpdCBhcyBpdCB3aWxsIGJlIGRldGVjdGVkIGJ1dCB3aWxsIG5vdAorYmUgdXNhYmxlLiAgVG8gc2VlIHdoYXQgd2UgaGF2ZSBkb25lIHRvIEJldGEgUmVsZWFzZSAyLCBzZWUgc2VjdGlvbiAzLgorCitTcGVha2luZyBvZiBndWFyYW50ZWVzLCBUSElTIElTIEJFVEEgU09GVFdBUkUgYW5kIGFzIHN1Y2ggY29udGFpbnMKK2J1Z3MgYW5kIGRlZmVjdHMgZWl0aGVyIGtub3duIG9yIHVua25vd24uIFVzZSB0aGlzIHNvZnR3YXJlIGF0IHlvdXIgb3duCityaXNrLiBUaGVyZSBpcyBOTyBTVVBQT1JUIGZvciB0aGlzIHNvZnR3YXJlLiBTb21lIGhlbHAgbWF5IGJlIGF2YWlsYWJsZQordGhyb3VnaCB0aGUgd2ViIHNpdGUgb3IgdGhlIG1haWxpbmcgbGlzdCBidXQgc3VjaCBzdXBwb3J0IGlzIHRvdGFsbHkgYXQKK291ciBvd24gb3B0aW9uIGFuZCB3aXRob3V0IHdhcnJhbnR5LiBJZiB5b3UgY2hvb3NlIHRvIGFzc3VtZSBhbGwgYW5kCit0b3RhbCByaXNrIGJ5IHVzaW5nIHRoaXMgZHJpdmVyLCB3ZSBlbmNvdXJhZ2UgeW91IHRvIGpvaW4gdGhlIGJldGEKK21haWxpbmcgbGlzdC4KKworVG8gam9pbiB0aGUgTGludXggYmV0YSBtYWlsaW5nIGxpc3QsIHNlbmQgYSBtZXNzYWdlIHRvOgorbWFqb3Jkb21vQHNwZWxsY2FzdC5jb20gd2l0aCB0aGUgd29yZHMgInN1YnNjcmliZSBsaW51eC1iZXRhIiBhcyB0aGUgb25seQorY29udGVudHMgb2YgdGhlIG1lc3NhZ2UuIERvIG5vdCBpbmNsdWRlIGEgc2lnbmF0dXJlLiBJZiB5b3UgY2hvb3NlIHRvCityZW1vdmUgeW91cnNlbGYgZnJvbSB0aGlzIGxpc3QgYXQgYSBsYXRlciBkYXRlLCBzZW5kIGFub3RoZXIgbWVzc2FnZSB0bwordGhlIHNhbWUgYWRkcmVzcyB3aXRoIHRoZSB3b3JkcyAidW5zdWJzY3JpYmUgbGludXgtYmV0YSIgYXMgaXRzIG9ubHkKK2NvbnRlbnRzLgorCitUQUJMRSBPRiBDT05URU5UUworLS0tLS0tLS0tLS0tLS0tLS0KKwkxLiBJbnRyb2R1Y3Rpb24KKwkgMS4xIFdoYXQgaXMgSVNETjRMaW51eD8KKwkgMS4yIFdoYXQgaXMgZGlmZmVyZW50IGJldHdlZW4gdGhpcyBkcml2ZXIgYW5kIHByZXZpb3VzIGRyaXZlcnM/CisJIDEuMyBIb3cgZG8gSSBzZXR1cCBteSBzeXN0ZW0gd2l0aCB0aGUgY29ycmVjdCBzb2Z0d2FyZSB0byB1c2UKKwkgICAgIHRoaXMgZHJpdmVyIHJlbGVhc2U/CisJCisJMi4gQmFzaWMgT3BlcmF0aW9ucworCSAyLjEgVW5wYWNraW5nIGFuZCBpbnN0YWxsaW5nIHRoZSBkcml2ZXIKKwkgMi4yIFJlYWQgdGhlIG1hbiBwYWdlcyEhIQorCSAyLjMgSW5zdGFsbGluZyB0aGUgZHJpdmVyCisJIDIuNCBSZW1vdmluZyB0aGUgZHJpdmVyCisJIDIuNSBXaGF0IHRvIGRvIGlmIGl0IGRvZXNuJ3QgbG9hZAorCSAyLjYgSG93IHRvIHNldHVwIElTRE40TGludXggd2l0aCB0aGUgZHJpdmVyCisKKwkzLiBCZXRhIENoYW5nZSBTdW1tYXJpZXMgYW5kIE1pc2NlbGxhbmVvdXMgTm90ZXMKKworMS4gSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0tLS0KKworVGhlIHJldmlzaW9uIDIgTGludXggZHJpdmVyIGZvciBTcGVsbENhc3RlciBJU0EgSVNETiBhZGFwdGVycyBpcyBidWlsdAordXBvbiBJU0RONExpbnV4IGF2YWlsYWJsZSBzZXBhcmF0ZWx5IG9yIGFzIGluY2x1ZGVkIGluIExpbnV4IDIuMCBhbmQgbGF0ZXIuCitUaGUgZHJpdmVyIHdpbGwgc3VwcG9ydCBhIG1heGltdW0gb2YgNCBhZGFwdGVycyBpbiBhbnkgb25lIHN5c3RlbSBvZiBhbnkKK3R5cGUgaW5jbHVkaW5nIERhdGFDb21tdXRlL0JSSSwgRGF0YUNvbW11dGUvUFJJIGFuZCBUZWxlQ29tbXV0ZS9CUkkgZm9yIGEKK21heGltdW0gb2YgOTIgY2hhbm5lbHMgZm9yIGhvc3QuIFRoZSBkcml2ZXIgaXMgc3VwcGxpZWQgYXMgYSBtb2R1bGUgaW4KK3NvdXJjZSBmb3JtIGFuZCBuZWVkcyB0byBiZSBjb21wbGllZCBiZWZvcmUgaXQgY2FuIGJlIHVzZWQuIEl0IGhhcyBiZWVuCit0ZXN0ZWQgb24gTGludXggMi4wLjIwLgorCisxLjEgV2hhdCBJcyBJU0RONExpbnV4CisKK0lTRE40TGludXggaXMgYSBkcml2ZXIgYW5kIHNldCBvZiB0b29scyB1c2VkIHRvIGFjY2VzcyBhbmQgdXNlIElTRE4gZGV2aWNlcworb24gYSBMaW51eCBwbGF0Zm9ybSBpbiBhIGNvbW1vbiBhbmQgc3RhbmRhcmQgd2F5LiBJdCBzdXBwb3J0cyBIRExDIGFuZCBQUFAKK3Byb3RvY29scyBhbmQgb2ZmZXJzIGNoYW5uZWwgYnVuZGxpbmcgYW5kIE1MUFBQIHN1cHBvcnQuIFRvIHVzZSBJU0RONExpbnV4Cit5b3UgbmVlZCB0byBjb25maWd1cmUgeW91ciBrZXJuZWwgZm9yIElTRE4gc3VwcG9ydCBhbmQgZ2V0IHRoZSBJU0RONExpbnV4Cit0b29sIGtpdCBmcm9tIG91ciB3ZWIgc2l0ZS4KKworSVNETjRMaW51eCBjcmVhdGVzIGEgY2hhbm5lbCBwb29sIGZyb20gYWxsIG9mIHRoZSBhdmFpbGFibGUgSVNETiBjaGFubmVscworYW5kIHRoZXJlZm9yZSBjYW4gZnVuY3Rpb24gYWNyb3NzIGFkYXB0ZXJzLiBXaGVuIGFuIElTRE40TGludXggY29tcGxpYW50Citkcml2ZXIgKHN1Y2ggYXMgb3VycykgaXMgbG9hZGVkLCBhbGwgb2YgdGhlIGNoYW5uZWxzIGdvIGludG8gYSBwb29sIGFuZAorYXJlIHVzZWQgb24gYSBmaXJzdC1jb21lIGZpcnN0LXNlcnZlZCBiYXNpcy4gSW4gYWRkaXRpb24sIGluZGl2aWR1YWwKK2NoYW5uZWxzIGNhbiBiZSBzcGVjaWZpY2FsbHkgYm91bmQgdG8gcGFydGljdWxhciBpbnRlcmZhY2VzLgorCisxLjIgV2hhdCBpcyBkaWZmZXJlbnQgYmV0d2VlbiB0aGlzIGRyaXZlciBhbmQgcHJldmlvdXMgZHJpdmVycz8KKworVGhlIHJldmlzaW9uIDIgZHJpdmVyIGJlc2lkZXMgYWRvcHRpbmcgdGhlIElTRE40TGludXggYXJjaGl0ZWN0dXJlIGhhcyBtYW55CitzdWJ0bGUgYW5kIG5vdCBzbyBzdWJ0bGUgZnVuY3Rpb25hbCBkaWZmZXJlbmNlcyBmcm9tIHByZXZpb3VzIHJlbGVhc2VzLiBUaGVzZQoraW5jbHVkZToKKwktIE1vcmUgZWZmaWNpZW50IHNoYXJlZCBtZW1vcnkgbWFuYWdlbWVudCBjb21iaW5lZCB3aXRoIGEgc2ltcGxlcgorCSAgY29uZmlndXJhdGlvbi4gQWxsIGFkYXB0ZXJzIG5vdyB1c2Ugb25seSAxNktieXRlcyBvZiBzaGFyZWQgUkFNCisJICB2ZXJzdXMgYmV0d2VlbiAxNksgYW5kIDY0Sy4gTmV3IG1ldGhvZHMgZm9yIHVzaW5nIHRoZSBzaGFyZWQgUkFNCisJICBhbGxvdyB1cyB0byB1dGlsaXplIGFsbCBvZiB0aGUgYXZhaWxhYmxlIFJBTSBvbiB0aGUgYWRhcHRlciB0aHJvdWdoCisJICBvbmx5IG9uZSAxNksgcGFnZS4KKwktIEJldHRlciBkZXRlY3Rpb24gb2YgYXZhaWxhYmxlIHVwcGVyIG1lbW9yeS4gVGhlIHByb2Jpbmcgcm91dGluZXMKKwkgIGhhdmUgYmVlbiBpbXByb3ZlZCB0byBiZXR0ZXIgZGV0ZWN0IGF2YWlsYWJsZSBzaGFyZWQgUkFNIHBhZ2VzIGFuZAorCSAgdXNlZCBwYWdlcyBhcmUgbm93IGxvY2tlZC4KKwktIERlY3JlYXNlZCBsb2FkaW5nIHRpbWUgYW5kIGEgd2lkZXIgcmFuZ2Ugb2YgSS9PIHBvcnRzIHByb2JlZC4KKwkgIFdlIGhhdmUgc2lnbmlmaWNhbnRseSByZWR1Y2VkIHRoZSBhbW91bnQgb2YgdGltZSBpdCB0YWtlcyB0byBsb2FkCisJICB0aGUgZHJpdmVyIGFuZCBhdCB0aGUgc2FtZSB0aW1lIGRvdWJsZWQgdGhlIG51bWJlciBvZiBJL08gcG9ydHMKKwkgIHByb2JlZCBpbmNyZWFzaW5nIHRoZSBsaWtlbGlob29kIG9mIGZpbmRpbmcgYW4gYWRhcHRlci4KKwktIFdlIG5vdyBzdXBwb3J0IGFsbCBJU0EgYWRhcHRlciBtb2RlbHMgd2l0aCBhIHNpbmdsZSBkcml2ZXIgaW5zdGVhZAorCSAgb2Ygc2VwYXJhdGUgZHJpdmVycyBmb3IgZWFjaCBtb2RlbC4gVGhlIHJldmlzaW9uIDIgZHJpdmVyIHN1cHBvcnRzCisJICB0aGUgRGF0YUNvbW11dGUvQlJJLCBEYXRhQ29tbXV0ZS9QUkkgYW5kIFRlbGVDb21tdXRlL0JSSSBpbiBhbnkKKwkgIGNvbWJpbmF0aW9uIHVwIHRvIGEgbWF4aW11bSBvZiBmb3VyIGFkYXB0ZXJzIHBlciBzeXN0ZW0uCisJLSBPbiBib2FyZCBQUFAgcHJvdG9jb2wgc3VwcG9ydCBoYXMgYmVlbiByZW1vdmVkIGluIGZhdm91ciBvZiB0aGUKKwkgIHN5bmMtUFBQIHN1cHBvcnQgdXNlZCBpbiBJU0RONExpbnV4LiBUaGlzIG1lYW5zIG1vcmUgY29udHJvbCBvZgorCSAgdGhlIHByb3RvY29sIHBhcmFtZXRlcnMsIGZhc3RlciBuZWdvdGlhdGlvbiB0aW1lIGFuZCBhIG1vcmUKKwkgIGZhbWlsaWFyIGludGVyZmFjZS4KKworMS4zIEhvdyBkbyBJIHNldHVwIG15IHN5c3RlbSB3aXRoIHRoZSBjb3JyZWN0IHNvZnR3YXJlIHRvIHVzZQorICAgIHRoaXMgZHJpdmVyIHJlbGVhc2U/CisKK0JlZm9yZSB5b3UgY2FuIGNvbXBpbGUsIGluc3RhbGwgYW5kIHVzZSB0aGUgU3BlbGxDYXN0ZXIgSVNBIElTRE4gZHJpdmVyLCB5b3UKK211c3QgZW5zdXJlIHRoYXQgdGhlIGZvbGxvd2luZyBzb2Z0d2FyZSBpcyBpbnN0YWxsZWQsIGNvbmZpZ3VyZWQgYW5kIHJ1bm5pbmc6CisKKwktIExpbnV4IGtlcm5lbCAyLjAuMjAgb3IgbGF0ZXIgd2l0aCB0aGUgcmVxdWlyZWQgaW5pdCBhbmQgcHMKKwkgIHZlcnNpb25zLiBQbGVhc2Ugc2VlIHlvdXIgZGlzdHJpYnV0aW9uIHZlbmRvciBmb3IgdGhlIGNvcnJlY3QKKwkgIHV0aWxpdHkgcGFja2FnZXMuIFRoZSBsYXRlc3Qga2VybmVsIGlzIGF2YWlsYWJsZSBmcm9tCisJICBmdHA6Ly9zdW5zaXRlLnVuYy5lZHUvcHViL0xpbnV4L2tlcm5lbC92Mi4wLworCisJLSBUaGUgbGF0ZXN0IG1vZHVsZXMgcGFja2FnZSAobW9kdWxlcy0yLjAuMC50YXIuZ3opIGZyb20KKwkgIGZ0cDovL3N1bnNpdGUudW5jLmVkdS9wdWIvTGludXgva2VybmVsL21vZHVsZXMtMi4wLjAudGFyLmd6CisKKwktIFRoZSBJU0RONExpbnV4IHRvb2xzIGF2YWlsYWJsZSBmcm9tIAorCSAgZnRwOi8vZnRwLmZyYW5rZW4uZGUvcHViL2lzZG40bGludXgvdjIuMC9pc2RuNGstdXRpbHMtMi4wLnRhci5negorCSAgVGhpcyBwYWNrYWdlIG1heSBmYWlsIHRvIGNvbXBpbGUgZm9yIHlvdSBzbyB5b3UgY2FuIGFsdGVybmF0aXZlbHkKKwkgIGdldCBhIHByZS1jb21waWxlZCB2ZXJzaW9uIGZyb20KKwkgIGZ0cDovL2Z0cC5zcGVsbGNhc3QuY29tL3B1Yi9kcml2ZXJzL2lzZG40bGludXgvaXNkbjRrLWJpbi0yLjAudGFyLmd6CisKKworMi4gQmFzaWMgT3BlcmF0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLQorCisyLjEgVW5wYWNraW5nIGFuZCBpbnN0YWxsaW5nIHRoZSBkcml2ZXIKKworCTEuIEFzIHJvb3QsIGNyZWF0ZSBhIGRpcmVjdG9yeSBpbiBhIGNvbnZlbmllbnQgcGxhY2UuIFdlIHN1Z2dlc3QKKwkgICAvdXNyL3NyYy9zcGVsbGNhc3Rlci4KKwkKKwkyLiBVbnBhY2sgdGhlIGFyY2hpdmUgd2l0aCA6CisJCXRhciB4emYgc2Mtbi5ubi50YXIuZ3ogLUMgL3Vzci9zcmMvc3BlbGxjYXN0ZXIKKwkKKwkzLiBDaGFuZ2UgZGlyZWN0b3J5IHRvIC91c3Ivc3JjL3NwZWxsY2FzdGVyCisKKwk0LiBSZWFkIHRoZSBSRUFETUUgYW5kIFJFTE5PVEVTIGZpbGVzLgorCisJNS4gUnVuICdtYWtlJyBhbmQgaWYgYWxsIGdvZXMgd2VsbCwgcnVuICdtYWtlIGluc3RhbGwnLgorCisyLjIgUmVhZCB0aGUgbWFuIHBhZ2VzISEhCisKK01ha2Ugc3VyZSB5b3UgcmVhZCB0aGUgc2NjdHJsKDgpIGFuZCBzYyg0KSBtYW51YWwgcGFnZXMgYmVmb3JlIGNvbnRpbnVpbmcKK2FueSBmdXJ0aGVyLiBUeXBlICdtYW4gOCBzY2N0cmwnIGFuZCAnbWFuIDQgc2MnLgorCisyLjMgSW5zdGFsbGluZyB0aGUgZHJpdmVyCisKK1RvIGluc3RhbGwgdGhlIGRyaXZlciwgdHlwZSAnL3NiaW4vaW5zbW9kIHNjJyBhcyByb290LiBzYyg0KSBkZXRhaWxzIG9wdGlvbnMKK3lvdSBjYW4gc3BlY2lmeSBidXQgeW91IHNob3VsZG4ndCBuZWVkIHRvIHVzZSBhbnkgdW5sZXNzIHRoaXMgZG9lc24ndCB3b3JrLgorCitNYWtlIHN1cmUgdGhlIGRyaXZlciBsb2FkZWQgYW5kIGRldGVjdGVkIGFsbCBvZiB0aGUgYWRhcHRlcnMgYnkgdHlwaW5nCisnZG1lc2cnLgorCitUaGUgZHJpdmVyIGNhbiBiZSBjb25maWd1cmVkIHNvIHRoYXQgaXQgaXMgbG9hZGVkIHVwb24gc3RhcnR1cC4gIFRvIGRvIHRoaXMsIAorZWRpdCB0aGUgZmlsZSAiL2V0Yy9tb2R1bGVzLyd1bmFtZSAtZicvJ3VuYW1lIC12JyIgYW5kIGluc2VydCB0aGUgZHJpdmVyIG5hbWUKKyJzYyIgaW50byB0aGlzIGZpbGUuCisKKzIuNCBSZW1vdmluZyB0aGUgZHJpdmVyCisKK1RvIHJlbW92ZSB0aGUgZHJpdmVyLCBkZWxldGUgYW55IGludGVyZmFjZXMgdGhhdCBtYXkgZXhpc3QgKHNlZSBpc2RuY3RybCg4KQorZm9yIG1vcmUgb24gdGhpcykgYW5kIHRoZW4gdHlwZSAnL3NiaW4vcm1tb2Qgc2MnLgorCisyLjUgV2hhdCB0byBkbyBpZiBpdCBkb2Vzbid0IGxvYWQKKworSWYsIHdoZW4geW91IHRyeSB0byBpbnN0YWxsIHRoZSBkcml2ZXIsIHlvdSBnZXQgYSBtZXNzYWdlIG1lbnRpb25pbmcKKydyZWdpc3Rlcl9pc2RuJyB0aGVuIHlvdSBkbyBub3QgaGF2ZSB0aGUgSVNETjRMaW51eCBzeXN0ZW0gaW5zdGFsbGVkLiBQbGVhc2UKK21ha2Ugc3VyZSB0aGF0IElTRE4gc3VwcG9ydCBpcyBjb25maWd1cmVkIGluIHRoZSBrZXJuZWwuCisKK0lmIHlvdSBnZXQgYSBtZXNzYWdlIHRoYXQgc2F5cyAnaW5pdGlhbGl6YXRpb24gb2Ygc2MgZmFpbGVkJywgdGhlbiB0aGUKK2RyaXZlciBmYWlsZWQgdG8gZGV0ZWN0IGFuIGFkYXB0ZXIgb3IgZmFpbGVkIHRvIGZpbmQgcmVzb3VyY2VzIG5lZWRlZCBzdWNoCithcyBhIGZyZWUgSVJRIGxpbmUgb3Igc2hhcmVkIG1lbW9yeSBzZWdtZW50LiBJZiB5b3UgYXJlIHN1cmUgdGhlcmUgYXJlIGZyZWUKK3Jlc291cmNlcyBhdmFpbGFibGUsIHVzZSB0aGUgaW5zbW9kIG9wdGlvbnMgZGV0YWlsZWQgaW4gc2MoNCkgdG8gb3ZlcnJpZGUKK3RoZSBwcm9iaW5nIGZ1bmN0aW9uLiAgCisKK1Vwb24gdGVzdGluZywgdGhlIGZvbGxvd2luZyBwcm9ibGVtIHdhcyBub3RlZCwgdGhlIGRyaXZlciB3b3VsZCBsb2FkIHdpdGhvdXQKK3Byb2JsZW1zLCBidXQgdGhlIGJvYXJkIHdvdWxkIG5vdCByZXNwb25kIGJleW9uZCB0aGF0IHBvaW50LiAgV2hlbiBhIGNoZWNrIHdhcyAKK2RvbmUgd2l0aCAnY2F0IC9wcm9jL2ludGVycnVwdHMnIHRoZSBpbnRlcnJ1cHQgY291bnQgZm9yIHNjIHdhcyAwLiAgSW4gdGhlIGV2ZW50IAorb2YgdGhpcyBwcm9ibGVtLCBjaGFuZ2UgdGhlIEJJT1Mgc2V0dGluZ3Mgc28gdGhhdCB0aGUgaW50ZXJydXB0cyBpbiBxdWVzdGlvbiBhcmUKK3Jlc2VydmVkIGZvciBJU0EgdXNlIG9ubHkuICAgCisKKworMi42IEhvdyB0byBzZXR1cCBJU0RONExpbnV4IHdpdGggdGhlIGRyaXZlcgorCitUaGVyZSBhcmUgdGhyZWUgbWFpbiBjb25maWd1cmF0aW9ucyB3aGljaCB5b3UgY2FuIHVzZSB3aXRoIHRoZSBkcml2ZXI6CisKK0EpCUJhc2ljIEhETEMgY29ubmVjdGlvbgorQikJUFBQIGNvbm5lY3Rpb24KK0MpCU1MUFBQIGNvbm5lY3Rpb24KKworSXQgc2hvdWxkIGJlIG1lbnRpb25lZCBoZXJlIHRoYXQgeW91IG1heSBhbHNvIHVzZSBhIHR0eSBjb25uZWN0aW9uIGlmIHlvdQorZGVzaXJlLiBUaGUgRG9jdW1lbnRhdGlvbiBkaXJlY3Rvcnkgb2YgdGhlIGlzZG40bGludXggc3Vic3lzdGVtIG9mZmVycyBnb29kCitkb2N1bWVudGF0aW9uIG9uIHRoaXMgZmVhdHVyZS4KKworQSkgMTAgc3RlcHMgdG8gdGhlIGVzdGFibGlzaG1lbnQgb2YgYSBiYXNpYyBIRExDIGNvbm5lY3Rpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gcGxlYXNlIG9wZW4gdGhlIGlzZG4taGRsYyBmaWxlIGluIHRoZSBleGFtcGxlcyBkaXJlY3RvcnkgYW5kIGZvbGxvdyBhbG9uZy4uLgorCQorCVRoaXMgZmlsZSBpcyBhIHNjcmlwdCB1c2VkIHRvIGNvbmZpZ3VyZSBhIEJSSSBJU0ROIFRBIHRvIGVzdGFibGlzaCBhIAorCWJhc2ljIEhETEMgY29ubmVjdGlvbiBiZXR3ZWVuIGl0cyB0d28gY2hhbm5lbHMuICBUd28gbmV0d29yayAKKwlpbnRlcmZhY2VzIGFyZSBjcmVhdGVkIGFuZCB0d28gcm91dGVzIGFkZGVkIGJldHdlZW4gdGhlIGNoYW5uZWxzLgorCisJaSkgICB1c2luZyB0aGUgaXNkbmN0cmwgdXRpbGl0eSwgYWRkIGFuIGludGVyZmFjZSB3aXRoICJhZGRpZiIgYW5kIAorCSAgICAgbmFtZSBpdCAiaXNkbjAiCisJaWkpICBhZGQgdGhlIG91dGdvaW5nIGFuZCBpbmJvdW5kIHRlbGVwaG9uZSBudW1iZXJzCisJaWlpKSBzZXQgdGhlIExheWVyIDIgcHJvdG9jb2wgdG8gaGRsYworCWl2KSAgc2V0IHRoZSBlYXogb2YgdGhlIGludGVyZmFjZSB0byBiZSB0aGUgcGhvbmUgbnVtYmVyIG9mIHRoYXQgCisJICAgICBzcGVjaWZpYyBjaGFubmVsCisJdikgICB0byB0dXJuIHRoZSBjYWxsYmFjayBmZWF0dXJlcyBvZmYsIHNldCB0aGUgY2FsbGJhY2sgdG8gIm9mZiIgYW5kCisJICAgICB0aGUgY2FsbGJhY2sgZGVsYXkgKGNiZGVsYXkpIHRvIDAuCisJdmkpICB0aGUgaGFuZ3VwIHRpbWVvdXQgY2FuIGJlIHNldCB0byBhIHNwZWNpZmllZCBudW1iZXIgb2Ygc2Vjb25kcworCXZpaSkgdGhlIGhhbmd1cCB1cG9uIGluY29taW5nIGNhbGwgY2FuIGJlIHNldCBvbiBvciBvZmYgCisJdmlpaSkgdXNlIHRoZSBpZmNvbmZpZyBjb21tYW5kIHRvIGJyaW5nIHVwIHRoZSBuZXR3b3JrIGludGVyZmFjZSB3aXRoIAorCSAgICAgIGEgc3BlY2lmaWMgSVAgYWRkcmVzcyBhbmQgcG9pbnQgdG8gcG9pbnQgYWRkcmVzcworCWl4KSAgYWRkIGEgcm91dGUgdG8gdGhlIElQIGFkZHJlc3MgdGhyb3VnaCB0aGUgaXNkbjAgaW50ZXJmYWNlCisJeCkgICBhIHBpbmcgc2hvdWxkIHJlc3VsdCBpbiB0aGUgZXN0YWJsaXNobWVudCBvZiB0aGUgY29ubmVjdGlvbgorCisJCitCKSBFc3RhYmxpc2htZW50IG9mIGEgUFBQIGNvbm5lY3Rpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIHBsZWFzZSBvcGVuIHRoZSBpc2RuLXBwcCBmaWxlIGluIHRoZSBleGFtcGxlcyBkaXJlY3RvcnkgYW5kIGZvbGxvdyBhbG9uZy4uLgorCQorCVRoaXMgZmlsZSBpcyBhIHNjcmlwdCB1c2VkIHRvIGNvbmZpZ3VyZSBhIEJSSSBJU0ROIFRBIHRvIGVzdGFibGlzaCBhIAorCVBQUCBjb25uZWN0aW9uIAliZXR3ZWVuIHRoZSB0d28gY2hhbm5lbHMuICBUaGUgZmlsZSBpcyBhbG1vc3QgCisJaWRlbnRpY2FsIHRvIHRoZSBIRExDIGNvbm5lY3Rpb24gZXhhbXBsZSBleGNlcHQgdGhhdCB0aGUgcGFja2V0IAorCWVuY2Fwc3VsYXRpb24gdHlwZSBoYXMgdG8gYmUgc2V0LgorCQorCXVzZSB0aGUgc2FtZSBwcm9jZWR1cmUgYXMgaW4gdGhlIEhETEMgY29ubmVjdGlvbiBmcm9tIHN0ZXBzIGkpIHRvIAorCWlpaSkgdGhlbiwgYWZ0ZXIgdGhlIExheWVyIDIgcHJvdG9jb2wgaXMgc2V0LCBzZXQgdGhlIGVuY2Fwc3VsYXRpb24gCisJImVuY2FwIiB0byBzeW5jcHBwLiBXaXRoIHRoaXMgZG9uZSwgdGhlIHJlc3Qgb2YgdGhlIHN0ZXBzLCBpdikgdG8geCkgCisJY2FuIGJlIGZvbGxvd2VkIGZyb20gYWJvdmUuCisKKwlUaGVuLCB0aGUgaXBwcGQgKGlwcHAgZGFlbW9uKSBtdXN0IGJlIHNldHVwOgorCQorCXhpKSAgIHVzZSB0aGUgaXBwcGQgZnVuY3Rpb24gZm91bmQgaW4gL3NiaW4vaXBwcGQgdG8gc2V0IHRoZSBmb2xsb3dpbmc6CisJeGlpKSAgdGFrZSBvdXQgKG1pbnVzKSBWSiBjb21wcmVzc2lvbiBhbmQgYnNkIGNvbXByZXNzaW9uCisJeGlpaSkgc2V0IHRoZSBtcnUgc2l6ZSB0byAyMDAwCisJeGl2KSAgbGluayB0aGUgdHdvIC9kZXYgaW50ZXJmYWNlcyB0byB0aGUgZGFlbW9uCisKK05PVEU6ICBBICIqIiBpbiB0aGUgaW5ib3VuZCB0ZWxlcGhvbmUgbnVtYmVyIHNwZWNpZmllcyB0aGF0IGEgY2FsbCBjYW4gYmUgCithY2NlcHRlZCBvbiBhbnkgbnVtYmVyLgorCitDKSBFc3RhYmxpc2htZW50IG9mIGEgTUxQUFAgY29ubmVjdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBwbGVhc2Ugb3BlbiB0aGUgaXNkbi1tcHBwIGZpbGUgaW4gdGhlIGV4YW1wbGVzIGRpcmVjdG9yeSBhbmQgZm9sbG93IGFsb25nLi4uCisJCisJVGhpcyBmaWxlIGlzIGEgc2NyaXB0IHVzZWQgdG8gY29uZmlndXJlIGEgQlJJIElTRE4gVEEgdG8gYWNjZXB0IGEgCisJTXVsdGkgTGluayBQUFAgY29ubmVjdGlvbi4gCisJCisJaSkgICB1c2luZyB0aGUgaXNkbmN0cmwgdXRpbGl0eSwgYWRkIGFuIGludGVyZmFjZSB3aXRoICJhZGRpZiIgYW5kIAorCSAgICAgbmFtZSBpdCAiaXBwcDAiCisJaWkpICBhZGQgdGhlIGluYm91bmQgdGVsZXBob25lIG51bWJlcgorCWlpaSkgc2V0IHRoZSBMYXllciAyIHByb3RvY29sIHRvIGhkbGMgYW5kIHRoZSBMYXllciAzIHByb3RvY29sIHRvIAorCSAgICAgdHJhbnMgKHRyYW5zcGFyZW50KQorCWl2KSAgc2V0IHRoZSBwYWNrZXQgZW5jYXBzdWxhdGlvbiB0byBzeW5jcHBwCisJdikgICBzZXQgdGhlIGVheiBvZiB0aGUgaW50ZXJmYWNlIHRvIGJlIHRoZSBwaG9uZSBudW1iZXIgb2YgdGhhdCAKKwkgICAgIHNwZWNpZmljIGNoYW5uZWwKKwl2aSkgIHRvIHR1cm4gdGhlIGNhbGxiYWNrIGZlYXR1cmVzIG9mZiwgc2V0IHRoZSBjYWxsYmFjayB0byAib2ZmIiBhbmQKKwkgICAgIHRoZSBjYWxsYmFjayBkZWxheSAoY2JkZWxheSkgdG8gMC4KKwl2aSkgIHRoZSBoYW5ndXAgdGltZW91dCBjYW4gYmUgc2V0IHRvIGEgc3BlY2lmaWVkIG51bWJlciBvZiBzZWNvbmRzCisJdmlpKSB0aGUgaGFuZ3VwIHVwb24gaW5jb21pbmcgY2FsbCBjYW4gYmUgc2V0IG9uIG9yIG9mZiAKKwl2aWlpKSBhZGQgYSBzbGF2ZSBpbnRlcmZhY2UgYW5kIG5hbWUgaXQgImlwcHAzMiIgZm9yIGV4YW1wbGUKKwlpeCkgIHNldCB0aGUgc2ltaWxhciBwYXJhbWV0ZXJzIGZvciB0aGUgaXBwcDMyIGludGVyZmFjZQorCXgpICAgdXNlIHRoZSBpZmNvbmZpZyBjb21tYW5kIHRvIGJyaW5nLXVwIHRoZSBpcHBwMCBpbnRlcmZhY2Ugd2l0aCBhIAorCSAgICAgc3BlY2lmaWMgSVAgYWRkcmVzcyBhbmQgcG9pbnQgdG8gcG9pbnQgYWRkcmVzcworCXhpKSAgYWRkIGEgcm91dGUgdG8gdGhlIElQIGFkZHJlc3MgdGhyb3VnaCB0aGUgaXBwcDAgaW50ZXJmYWNlCisJeGlpKSB1c2UgdGhlIGlwcHBkIGZ1bmN0aW9uIGZvdW5kIGluIC9zYmluL2lwcHBkIHRvIHNldCB0aGUgZm9sbG93aW5nOgorCXhpaWkpIHRha2Ugb3V0IChtaW51cykgYnNkIGNvbXByZXNzaW9uCisJeGl2KSBzZXQgdGhlIG1ydSBzaXplIHRvIDIwMDAKKwl4dikgIGFkZCAoKykgdGhlIG11bHRpLWxpbmsgZnVuY3Rpb24gIittcCIKKwl4dmkpICBsaW5rIHRoZSB0d28gL2RldiBpbnRlcmZhY2VzIHRvIHRoZSBkYWVtb24KKworTk9URTogIFRvIHVzZSB0aGUgTUxQUFAgY29ubmVjdGlvbiB0byBkaWFsIE9VVCB0byBhIE1MUFBQIGNvbm5lY3Rpb24sIGNoYW5nZSAKK3RoZSBpbmJvdW5kIHRlbGVwaG9uZSBudW1iZXJzIHRvIHRoZSBvdXRnb2luZyB0ZWxlcGhvbmUgbnVtYmVycyBvZiB0aGUgTUxQUFAgCitob3N0LgorCisJCiszLiBCZXRhIENoYW5nZSBTdW1tYXJpZXMgYW5kIE1pc2NlbGxhbmVvdXMgTm90ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorV2hlbiB1c2luZyB0aGUgInNjY3RybCIgdXRpbGl0eSB0byB1cGxvYWQgZmlybXdhcmUgcmV2aXNpb25zIG9uIHRoZSBib2FyZCwKK3BsZWFzZSBub3RlIHRoYXQgdGhlIGJ5dGUgY291bnQgZGlzcGxheWVkIGF0IHRoZSBlbmQgb2YgdGhlIG9wZXJhdGlvbiBtYXkgYmUKK2RpZmZlcmVudCBmcm9tIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlICJkY2Jmd24ubm4uc3IiIGZpbGUuIFBsZWFzZQorZGlzcmVnYXJkIHRoZSBkaXNwbGF5ZWQgYnl0ZSBjb3VudC4KKworSXQgd2FzIG5vdGVkIHRoYXQgaW4gQmV0YSBSZWxlYXNlIDEsIHRoZSBtb2R1bGUgd291bGQgZmFpbCB0byBsb2FkIGFuZCByZXN1bHQKK2luIGEgc2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gJ2luc21vZCdlZC4gVGhpcyBwcm9ibGVtIHdhcyBjcmVhdGVkIHdoZW4gb25lIG9mCit0aGUgaXNkbjRsaW51eCBwYXJhbWV0ZXJzLCAoaXNkbl9jdHJsLCBkYXRhIGZpZWxkKSB3YXMgZmlsbGVkIGluLiBJbiBzb21lCitjYXNlcywgdGhpcyBkYXRhIGZpZWxkIHdhcyBOVUxMLCBhbmQgd2FzIGxlZnQgdW5jaGVja2VkLCBzbyB3aGVuIGl0IHdhcworcmVmZXJlbmNlZC4uLiBzZWd2LiBUaGUgYnVnIGhhcyBiZWVuIGZpeGVkIGFyb3VuZCBsaW5lIDYzLTY4IG9mIGV2ZW50LmMuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaXNkbi9SRUFETUUuc3luY3BwcCBiL0RvY3VtZW50YXRpb24vaXNkbi9SRUFETUUuc3luY3BwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2QyNjAwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS5zeW5jcHBwCkBAIC0wLDAgKzEsNTggQEAKK1NvbWUgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmb3Igc2V0dGluZyB1cCBhIHN5bmNQUFAKK2Nvbm5lY3Rpb24gdXNpbmcgbmV0d29yayBpbnRlcmZhY2VzLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1lvdSBuZWVkIG9uZSB0aGluZyBiZXNpZGUgdGhlIGlzZG40bGludXggcGFja2FnZToKKworICBhIHBhdGNoZWQgcHBwZCAuLiAoSSBjYWxsZWQgaXQgaXBwcGQgdG8gc2hvdyB0aGUgZGlmZmVyZW5jZSkKKworQ29tcGlsaW5nIGlzZG40bGludXggd2l0aCBzeW5jIFBQUDoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUbyBjb21waWxlIGlzZG40bGludXggd2l0aCB0aGUgc3luYyBQUFAgcGFydCwgeW91IGhhdmUKK3RvIGFuc3dlciB0aGUgYXBwcm9wcmlhdGUgcXVlc3Rpb24gd2hlbiBkb2luZyBhICJtYWtlIGNvbmZpZyIKK0Rvbid0IGZvcmdldCB0byBsb2FkIHRoZSBzbGhjLm8KK21vZHVsZSBiZWZvcmUgdGhlIGlzZG4ubyBtb2R1bGUsIGlmIFZKLWNvbXByZXNzaW9uIHN1cHBvcnQKK2lzIG5vdCBjb21waWxlZCBpbnRvIHlvdXIga2VybmVsLiAoZS5nIGlmIHlvdSBoYXZlIG5vIFBQUCBvcgorQ1NMSVAgaW4gdGhlIGtlcm5lbCkKKworVXNpbmcgaXNkbjRsaW51eCB3aXRoIHN5bmMgUFBQOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU3luYyBQUFAgaXMganVzdCBhbm90aGVyIGVuY2Fwc3VsYXRpb24gZm9yIGlzZG40bGludXguIFRoZQorbmFtZSB0byBlbmFibGUgc3luYyBQUFAgZW5jYXBzdWxhdGlvbiBpcyAnc3luY3BwcCcgLi4gZS5nOgorCisgIC9zYmluL2lzZG5jdHJsIGVuY2FwIGlwcHAwIHN5bmNwcHAKKworVGhlIG5hbWUgb2YgdGhlIGludGVyZmFjZSBpcyBoZXJlICdpcHBwMCcuIFlvdSBuZWVkIAorb25lIGludGVyZmFjZSB3aXRoIHRoZSBuYW1lICdpcHBwMCcgdG8gc2F0dXJhdGUgdGhlCitpcHBwZCwgd2hpY2ggY2hlY2tzIHRoZSBwcHAgdmVyc2lvbiB2aWEgdGhpcyBpbnRlcmZhY2UuCitDdXJyZW50bHksIGFsbCBkZXZpY2VzIG11c3QgaGF2ZSB0aGUgbmFtZSBpcHBwWCB3aGVyZQorJ1gnIGlzIGEgZGVjaW1hbCB2YWx1ZS4KKworVG8gc2V0IHVwIGEgUFBQIGNvbm5lY3Rpb24geW91IG5lZWQgdGhlIGlwcHBkIC4uIFlvdSBtdXN0IHN0YXJ0IAordGhlIGlwcHBkIG9uY2UgYWZ0ZXIgaW5zdGFsbGluZyB0aGUgbW9kdWxlcy4gVGhlIGlwcHBkIAorY29tbXVuaWNhdGVzIHdpdGggdGhlIGlzZG40bGludXggbGluay1sZXZlbCBkcml2ZXIgdXNpbmcgdGhlCisvZGV2L2lwcHAwIHRvIC9kZXYvaXBwcDE1IGRldmljZXMuIE9uZSBpcHBwZCBjYW4gaGFuZGxlCithbGwgZGV2aWNlcyBhdCBvbmNlLiBJZiB5b3Ugd2FudCB0byB1c2UgdHdvIFBQUCBjb25uZWN0aW9ucworYXQgdGhlIHNhbWUgdGltZSwgeW91IGhhdmUgdG8gY29ubmVjdCB0aGUgaXBwcGQgdG8gdHdvCitkZXZpY2VzIC4uIGFuZCBzbyBvbi4gCitJJ3ZlIGltcGxlbWVudGVkIG9uZSBhZGRpdGlvbmFsIG9wdGlvbiBmb3IgdGhlIGlwcHBkOgorICd1c2VpZmlwJyB3aWxsIGdldCAoaWYgc2V0IHRvIG5vdCAwLjAuMC4wKSB0aGUgSVAgYWRkcmVzcyAKKyBmb3IgdGhlIG5lZ290aWF0aW9uIGZyb20gdGhlIGF0dGFjaGVkIG5ldHdvcmstaW50ZXJmYWNlLiAKKyhhbHNvOiBpcHBwZCB3aWxsIHRyeSB0byBuZWdvdGlhdGUgcG9pbnRvcG9pbnQgSVAgYXMgcmVtb3RlIElQKQorWW91IG11c3QgZGlzYWJsZSBCU0QtY29tcHJlc3Npb24sIHRoaXMgaW1wbGVtZW50YXRpb24gY2FuJ3QKK2hhbmRsZSBjb21wcmVzc2VkIHBhY2tldHMuCisKK0NoZWNrIHRoZSBldGMvcmMuaXNkbi5zeW5jcHBwIGluIHRoZSBpc2RuNGtlcm5lbC11dGlsIHBhY2thZ2UKK2ZvciBhbiBleGFtcGxlIHNldHVwIHNjcmlwdC4KKworVG8gdXNlIHRoZSBNUFBQIHN0dWZmLCB5b3UgbXVzdCBjb25maWd1cmUgYSBzbGF2ZSBkZXZpY2UKK3dpdGggaXNkbjRsaW51eC4gTm93IGNhbGwgdGhlIGlwcHBkIHdpdGggdGhlICcrbXAnIG9wdGlvbi4KK1RvIGluY3JlYXNlIHRoZSBudW1iZXIgb2YgbGlua3MsIHlvdSBtdXN0IHVzZSB0aGUKKydhZGRsaW5rJyBvcHRpb24gb2YgdGhlIGlzZG5jdHJsIHRvb2wuIChyYy5pc2RuLnN5bmNwcHAuTVBQUCBpcworYW4gZXhhbXBsZSBzY3JpcHQpCisKK2Vuam95IGl0LAorICAgIG1pY2hhZWwKKyAgICAgCisKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS54MjUgYi9Eb2N1bWVudGF0aW9uL2lzZG4vUkVBRE1FLngyNQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTYxYTc3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9pc2RuL1JFQURNRS54MjUKQEAgLTAsMCArMSwxODQgQEAKKyAgCitYLjI1IHN1cHBvcnQgd2l0aGluIGlzZG40bGludXgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGlzIGFscGhhL2JldGEgdGVzdCBjb2RlLiBVc2UgaXQgY29tcGxldGVseSBhdCB5b3VyIG93biByaXNrLgorQXMgbmV3IHZlcnNpb25zIGFwcGVhciwgdGhlIHN0dWZmIGRlc2NyaWJlZCBoZXJlIG1pZ2h0IHN1ZGRlbmx5IGNoYW5nZQorb3IgYmVjb21lIGludmFsaWQgd2l0aG91dCBub3RpY2UuCisKK0tlZXAgaW4gbWluZDoKKworWW91IGFyZSB1c2luZyBzZXZlcmFsIG5ldyBwYXJ0cyBvZiB0aGUgMi4yLngga2VybmVsIHNlcmllcyB3aGljaAoraGF2ZSBub3QgYmVlbiB0ZXN0ZWQgaW4gYSBsYXJnZSBzY2FsZS4gVGhlcmVmb3JlLCB5b3UgbWlnaHQgZW5jb3VudGVyCittb3JlIGJ1Z3MgYXMgdXN1YWwuCisKKy0gSWYgeW91IGNvbm5lY3QgdG8gYW4gWC4yNSBuZWlnaGJvdXIgbm90IG9wZXJhdGVkIGJ5IHlvdXJzZWxmLCBBU0sgdGhlCisgIG90aGVyIHNpZGUgZmlyc3QuIEJlIHByZXBhcmVkIHRoYXQgYnVncyBpbiB0aGUgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KKyAgbWlnaHQgcmVzdWx0IGluIHByb2JsZW1zLgorCistIFRoaXMgaW1wbGVtZW50YXRpb24gaGFzIG5ldmVyIHdpcGVkIG91dCBteSB3aG9sZSBoYXJkIGRpc2sgeWV0LiBCdXQgYXMKKyAgdGhpcyBpcyBleHBlcmltZW50YWwgY29kZSwgZG9uJ3QgYmxhbWUgbWUgaWYgdGhhdCBoYXBwZW5lZCB0byB5b3UuCisgIEJhY2tpbmcgdXAgaW1wb3J0YW50IGRhdGEgd2lsbCBuZXZlciBoYXJtLgorCistIE1vbml0b3IgeW91ciBpc2RuIGNvbm5lY3Rpb25zIHdoaWxlIHVzaW5nIHRoaXMgc29mdHdhcmUuIFRoaXMgc2hvdWxkCisgIHByZXZlbnQgeW91IGZyb20gdW5kZXNpcmVkIHBob25lIGJpbGxzIGluIGNhc2Ugb2YgZHJpdmVyIHByb2JsZW1zLgorICAKKyAKKworCitIb3cgdG8gY29uZmlndXJlIHRoZSBrZXJuZWwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorIAorVGhlIElUVS1UIChmb3JtZXIgQ0NJVFQpIFguMjUgbmV0d29yayBwcm90b2NvbCBsYXllciBoYXMgYmVlbiBpbXBsZW1lbnRlZAoraW4gdGhlIExpbnV4IHNvdXJjZSB0cmVlIHNpbmNlIHZlcnNpb24gMi4xLjE2LiBUaGUgaXNkbiBzdWJzeXN0ZW0gbWlnaHQgYmUgCit1c2VmdWwgdG8gcnVuIFguMjUgb24gdG9wIG9mIElTRE4uIElmIHlvdSB3YW50IHRvIHRyeSBpdCwgc2VsZWN0CisKKyAgICJDQ0lUVCBYLjI1IFBhY2tldCBMYXllciIKKworZnJvbSB0aGUgbmV0d29ya2luZyBvcHRpb25zIGFzIHdlbGwgYXMKKworICAgIklTRE4gU3VwcG9ydCIgYW5kICJYLjI1IFBMUCBvbiBUb3Agb2YgSVNETiIKKworZnJvbSB0aGUgSVNETiBzdWJzeXN0ZW0gb3B0aW9ucyB3aGVuIHlvdSBjb25maWd1cmUgeW91ciBrZXJuZWwgZm9yCitjb21waWxhdGlvbi4gWW91IGN1cnJlbnRseSBhbHNvIG5lZWQgdG8gZW5hYmxlCisiUHJvbXB0IGZvciBkZXZlbG9wbWVudCBhbmQvb3IgaW5jb21wbGV0ZSBjb2RlL2RyaXZlcnMiIGZyb20gdGhlCisiQ29kZSBtYXR1cml0eSBsZXZlbCBvcHRpb25zIiBtZW51LiBGb3IgdGhlIHgyNXRyYWNlIHV0aWxpdHkgdG8gd29yaworeW91IGFsc28gbmVlZCB0byBlbmFibGUgIlBhY2tldCBzb2NrZXQiLgorCitGb3IgbG9jYWwgdGVzdGluZyBpdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRvIGVuYWJsZSB0aGUgaXNkbmxvb3AgZHJpdmVyCitmcm9tIHRoZSBpc2RuIHN1YnN5c3RlbSdzIGNvbmZpZ3VyYXRpb24gbWVudS4KKworRm9yIHRlc3RpbmcsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgYWxsIGlzZG4gZHJpdmVycyBhbmQgdGhlIFguMjUgUExQCitwcm90b2NvbCBhcmUgY29tcGlsZWQgYXMgbG9hZGFibGUgbW9kdWxlcy4gTGlrZSB0aGlzLCB5b3UgY2FuIHJlY292ZXIKK2Zyb20gY2VydGFpbiBlcnJvcnMgYnkgc2ltcGx5IHVubG9hZGluZyBhbmQgcmVsb2FkaW5nIHRoZSBtb2R1bGVzLgorCisKKworV2hhdCdzIGl0IGZvcj8gSG93IHRvIHVzZSBpdD8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1guMjUgb24gdG9wIG9mIGlzZG4gbWlnaHQgYmUgdXNlZnVsIHdpdGggdHdvIGRpZmZlcmVudCBzY2VuYXJpb3M6CisKKy0gWW91IG1pZ2h0IHdhbnQgdG8gYWNjZXNzIGEgcHVibGljIFguMjUgZGF0YSBuZXR3b3JrIGZyb20geW91ciBMaW51eCBib3guCisgIFlvdSBjYW4gdXNlIGk0bCBpZiB5b3Ugd2VyZSBwaHlzaWNhbGx5IGNvbm5lY3RlZCB0byB0aGUgWC4yNSBzd2l0Y2gKKyAgYnkgYW4gSVNETiBCLWNoYW5uZWwgKGxlYXNlZCBsaW5lIGFzIHdlbGwgYXMgZGlhbCB1cCBjb25uZWN0aW9uIHNob3VsZAorICB3b3JrKS4KKworICBUaGlzIGNvcnJlc3BvbmRzIHRvIElUVS1UIHJlY29tbWVuZGF0aW9uIFguMzEgQ2FzZSBBIChjaXJjdWl0LW1vZGUKKyAgYWNjZXNzIHRvIFBTUEROIFtwYWNrZXQgc3dpdGNoZWQgcHVibGljIGRhdGEgbmV0d29ya10pLgorCisgIE5PVEU6IFguMzEgYWxzbyBjb3ZlcnMgYSBDYXNlIEIgKGFjY2VzcyB0byBQU1BETiB2aWEgdmlydHVhbAorICBjaXJjdWl0IC8gcGFja2V0IG1vZGUgc2VydmljZSkuIFRoZSBsYXR0ZXIgbW9kZSAod2hpY2ggaW4gdGhlb3J5CisgIGFsc28gYWxsb3dzIHVzaW5nIHRoZSBELWNoYW5uZWwpIGlzIG5vdCBzdXBwb3J0ZWQgYnkgaXNkbjRsaW51eC4KKyAgSXQgc2hvdWxkIGhvd2V2ZXIgYmUgcG9zc2libGUgdG8gZXN0YWJsaXNoIHN1Y2ggcGFja2V0IG1vZGUgY29ubmVjdGlvbnMKKyAgd2l0aCBjZXJ0YWluIGFjdGl2ZSBpc2RuIGNhcmRzIHByb3ZpZGVkIHRoYXQgdGhlIGZpcm13YXJlIHN1cHBvcnRzIFguMzEKKyAgYW5kIHRoZSBkcml2ZXIgZXhwb3J0cyB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gdGhlIHVzZXIuIEN1cnJlbnRseSwgCisgIHRoZSBBVk0gQjEgZHJpdmVyIGlzIHRoZSBvbmx5IGRyaXZlciB3aGljaCBkb2VzIHNvLiAoSXQgc2hvdWxkIGJlCisgIHBvc3NpYmxlIHRvIGFjY2VzcyBELWNoYW5uZWwgWC4zMSB3aXRoIGFjdGl2ZSBBVk0gY2FyZHMgdXNpbmcgdGhlCisgIENBUEkgaW50ZXJmYWNlIG9mIHRoZSBBVk0tQjEgZHJpdmVyKS4KKworLSBPciB5b3UgbWlnaHQgd2FudCB0byBvcGVyYXRlIGNlcnRhaW4gSVNETiB0ZWxlc2VydmljZXMgb24geW91ciBsaW51eAorICBib3guIEEgbG90IG9mIHRob3NlIHRlbGVzZXJ2aWNlcyBydW4gb24gdG9wIG9mIHRoZSBJU08tODIwOAorICAoRFRFLURURSBtb2RlKSBuZXR3b3JrIGxheWVyIHByb3RvY29sLiBJU08tODIwOCBpcyBlc3NlbnRpYWxseSB0aGUKKyAgc2FtZSBhcyBJVFUtVCBYLjI1LgorCisgIFBvcHVsYXIgY2FuZGlkYXRlcyBvZiBzdWNoIHRlbGVzZXJ2aWNlcyBhcmUgRVVST2ZpbGUgdHJhbnNmZXIgb3IgYW55CisgIHRlbGVzZXJ2aWNlIGFwcGx5aW5nIElUVS1UIHJlY29tbWVuZGF0aW9uIFQuOTAuCisKK1RvIHVzZSB0aGUgWC4yNSBwcm90b2NvbCBvbiB0b3Agb2YgaXNkbiwganVzdCBjcmVhdGUgYW4gaXNkbiBuZXR3b3JrCitpbnRlcmZhY2UgYXMgdXN1YWwsIGNvbmZpZ3VyZSB5b3VyIG93biBhbmQvb3IgcGVlcidzIElTRE4gbnVtYmVycywKK2FuZCBjaG9vc2UgeDI1aWZhY2UgZW5jYXBzdWxhdGlvbiBieQorCisgICBpc2RuY3RybCBlbmNhcCA8aWZhY2UtbmFtZT4geDI1aWZhY2UuCisKK09uY2UgZW5jYXAgaXMgc2V0IGxpa2UgdGhpcywgdGhlIGRldmljZSBjYW4gYmUgdXNlZCBieSB0aGUgWC4yNSBwYWNrZXQgbGF5ZXIuCisKK0FsbCB0aGUgc3R1ZmYgbmVlZGVkIGZvciBYLjI1IGlzIGltcGxlbWVudGVkIGluc2lkZSB0aGUgaXNkbiBsaW5rCitsZXZlbCAobWFpbmx5IGlzZG5fbmV0LmMgYW5kIHNvbWUgbmV3IHNvdXJjZSBmaWxlcykuIFRodXMsIGl0IHNob3VsZAord29yayB3aXRoIGV2ZXJ5IGV4aXN0aW5nIEhMIGRyaXZlci4gSSB3YXMgYWJsZSB0byBzdWNjZXNzZnVsbHkgb3BlbiBYLjI1Citjb25uZWN0aW9ucyBvbiB0b3Agb2YgdGhlIGlzZG5sb29wIGRyaXZlciBhbmQgdGhlIGhpc2F4IGRyaXZlci4KKyJ4MjVpZmFjZSItZW5jYXBzdWxhdGlvbiBieXBhc3NlcyBkZW1hbmQgZGlhbGluZy4gRGlhbGluZyB3aWxsIGJlCitpbml0aWF0ZWQgd2hlbiB0aGUgdXBwZXIgKFguMjUgcGFja2V0KSBsYXllciByZXF1ZXN0cyB0aGUgbGFwYiBkYXRhbGluayB0bworYmUgZXN0YWJsaXNoZWQuIEJ1dCBoYW5ndXAgdGltZW91dCBpcyBzdGlsbCBhY3RpdmUuIFdoZW5ldmVyIGEgaGFuZ3VwCitvY2N1cnMsIGFsbCBleGlzdGluZyBYLjI1IGNvbm5lY3Rpb25zIG9uIHRoYXQgbGluayB3aWxsIGJlIGNsZWFyZWQKK0l0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSBzdWZmaWNpZW50bHkgbGFyZ2UgaGFuZ3VwLXRpbWVvdXRzIGZvciB0aGUKK2lzZG4gaW50ZXJmYWNlcy4KKworCitJbiBvcmRlciB0byBzZXQgdXAgYSBjb25mb3JtaW5nIHByb3RvY29sIHN0YWNrIHlvdSBhbHNvIG5lZWQgdG8KK3NwZWNpZnkgdGhlIHByb3BlciBsMl9wcm90IHBhcmFtZXRlcjoKKworVG8gb3BlcmF0ZSBpbiBJU08tODIwOCAgWC4yNSBEVEUtRFRFIG1vZGUsIHVzZQorCisgICBpc2RuY3RybCBsMl9wcm90IDxpZmFjZS1uYW1lPiB4NzVpCisKK1RvIGFjY2VzcyBhbiBYLjI1IG5ldHdvcmsgc3dpdGNoIHZpYSBpc2RuICh5b3VyIGxpbnV4IGJveCBpcyB0aGUgRFRFKSwgdXNlCisKKyAgIGlzZG5jdHJsIGwyX3Byb3QgPGlmYWNlLW5hbWU+IHgyNWR0ZQorCitUbyBtaW1pYyBhbiBYLjI1IG5ldHdvcmsgc3dpdGNoIChEQ0Ugc2lkZSBvZiB0aGUgY29ubmVjdGlvbiksIHVzZQorCisgICBpc2RuY3RybCBsMl9wcm90IDxpZmFjZS1uYW1lPiB4MjVkY2UKKworSG93ZXZlciwgeDI1ZHRlIG9yIHgyNWRjZSBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCBieSBhbnkgcmVhbCBITAorbGV2ZWwgZHJpdmVyLiBUaGUgbWFpbiBkaWZmZXJlbmNlIGJldHdlZW4geDc1aSBhbmQgeDI1ZHRlL2RjZSBpcyB0aGF0Cit4MjVkW3RjXWUgdXNlcyBmaXhlZCBsYXBfYiBhZGRyZXNzZXMuIFdpdGggeDc1aSwgdGhlIHNpZGUgd2hpY2gKK2luaXRpYXRlcyB0aGUgaXNkbiBjb25uZWN0aW9uIHVzZXMgdGhlIERURSdzIGxhcF9iIGFkZHJlc3Mgd2hpbGUgdGhlCitjYWxsZWQgc2lkZSB1c2VkIHRoZSBEQ0UncyBsYXBfYiBhZGRyZXNzLiBUaHVzLCBsMl9wcm90IHg3NWkgbWlnaHQKK3Byb2JhYmx5IHdvcmsgaWYgeW91IGFjY2VzcyBhIHB1YmxpYyBYLjI1IG5ldHdvcmsgYXMgbG9uZyBhcyB0aGUKK2NvcnJlc3BvbmRpbmcgaXNkbiBjb25uZWN0aW9uIGlzIHNldCB1cCBieSB5b3UuIEF0IGxlYXN0IG9uZSB0ZXN0Cit3YXMgc3VjY2Vzc2Z1bCB0byBjb25uZWN0IHZpYSBpc2RuNGxpbnV4IHRvIGFuIFguMjUgc3dpdGNoIHVzaW5nIHRoaXMKK3RyaWNrLiBBdCB0aGUgc3dpdGNoIHNpZGUsIGEgdGVybWluYWwgYWRhcHRlciBYLjIxIHdhcyB1c2VkIHRvIGNvbm5lY3QKK2l0IHRvIHRoZSBpc2RuLgorCisKK0hvdyB0byBzZXQgdXAgYSB0ZXN0IGluc3RhbGxhdGlvbj8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVG8gdGVzdCBYLjI1IG9uIHRvcCBvZiBpc2RuLCB5b3UgbmVlZCB0byBnZXQKKworLSBhIHJlY2VudCB2ZXJzaW9uIG9mIHRoZSAiaXNkbmN0cmwiIHByb2dyYW0gdGhhdCBzdXBwb3J0cyBzZXR0aW5nIHRoZSBuZXcKKyAgWC4yNSBzcGVjaWZpYyBwYXJhbWV0ZXJzLgorCistIHRoZSB4MjUtdXRpbHMtMi5YIHBhY2thZ2UgZnJvbSAKKyAgZnRwOi8vZnRwLmhlcy5pa2kuZmkvcHViL2hhbS9saW51eC9heDI1L3gyNXV0aWxzLSoKKyAgKGRvbid0IGNvbmZ1c2UgdGhlIHgyNS11dGlscyB3aXRoIHRoZSBheDI1LXV0aWxzKQorCistIGFuIGFwcGxpY2F0aW9uIHByb2dyYW0gdGhhdCB1c2VzIGxpbnV4IFBGX1gyNSBzb2NrZXRzIChzb21lIGFyZQorICBjb250YWluZWQgaW4gdGhlIHgyNS11dGlsIHBhY2thZ2UpLgorCitCZWZvcmUgY29tcGlsaW5nIHRoZSB1c2VyIGxldmVsIHV0aWxpdGllcyBtYWtlIHN1cmUgdGhhdCB0aGUgY29tcGlsZXIvCitwcmVwcm9jZXNzb3Igd2lsbCBmZXRjaCB0aGUgcHJvcGVyIGtlcm5lbCBoZWFkZXIgZmlsZXMgb2YgdGhpcyBrZXJuZWwKK3NvdXJjZSB0cmVlLiBFaXRoZXIgbWFrZSAvdXNyL2luY2x1ZGUvbGludXggYSBzeW1ib2xpYyBsaW5rIHBvaW50aW5nIHRvIAordGhpcyBrZXJuZWwncyBpbmNsdWRlL2xpbnV4IGRpcmVjdG9yeSBvciBzZXQgdGhlIGFwcHJvcHJpYXRlIGNvbXBpbGVyIGZsYWdzLgorCitXaGVuIGFsbCBkcml2ZXJzIGFuZCBpbnRlcmZhY2VzIGFyZSBsb2FkZWQgYW5kIGNvbmZpZ3VyZWQgeW91IG5lZWQgdG8KK2lmY29uZmlnIHRoZSBuZXR3b3JrIGludGVyZmFjZXMgdXAgYW5kIGFkZCBYLjI1LXJvdXRlcyB0byB0aGVtLiBVc2UKK3RoZSB1c3VhbCBpZmNvbmZpZyB0b29sLgorCitpZmNvbmZpZyA8aWZhY2UtbmFtZT4gdXAKKworQnV0IGEgc3BlY2lhbCB4MjVyb3V0ZSB0b29sIChkaXN0cmlidXRlZCB3aXRoIHRoZSB4MjUtdXRpbCBwYWNrYWdlKQoraXMgbmVlZGVkIHRvIHNldCB1cCBYLjI1IHJvdXRlcy4gSS5lLiAKKworeDI1cm91dGUgYWRkIDAxIDxpZmFjZS1uYW1lPgorCit3aWxsIGNhdXNlIGFsbCB4LjI1IGNvbm5lY3Rpb25zIHRvIHRoZSBkZXN0aW5hdGlvbiBYLjI1LWFkZHJlc3MKKyIwMSIgdG8gYmUgcm91dGVkIHRvIHlvdXIgY3JlYXRlZCBpc2RuIG5ldHdvcmsgaW50ZXJmYWNlLgorCitUaGVyZSBhcmUgY3VycmVudGx5IG5vIHJlYWwgWC4yNSBhcHBsaWNhdGlvbnMgYXZhaWxhYmxlLiBIb3dldmVyLCBmb3IKK3Rlc3RzLCB0aGUgeDI1LXV0aWxzIHBhY2thZ2UgY29udGFpbnMgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRlbG5ldAorYW5kIHRlbG5ldGQgdGhhdCB1c2VzIFguMjUgc29ja2V0cyBpbnN0ZWFkIG9mIHRjcC9pcCBzb2NrZXRzLiBZb3UgY2FuCit1c2UgdGhvc2UgZm9yIHlvdXIgZmlyc3QgdGVzdHMuIEZ1cnRoZXJtb3JlLCB5b3UgbWlnaHQgY2hlY2sKK2Z0cDovL2Z0cC5oYW1idXJnLnBvcC5kZS9wdWIvTE9DQUwvbGludXgvaTRsLWVmdC8gd2hpY2ggY29udGFpbnMgc29tZQorYWxwaGEtdGVzdCBpbXBsZW1lbnRhdGlvbiAoImVmdHA0bGludXgiKSBvZiB0aGUgRVVST2ZpbGUgdHJhbnNmZXIKK3Byb3RvY29sLgorCitUaGUgc2NyaXB0cyBkaXN0cmlidXRlZCB3aXRoIHRoZSBlZnRwNGxpbnV4IHRlc3QgcmVsZWFzZXMgbWlnaHQgYWxzbworcHJvdmlkZSB1c2VmdWwgZXhhbXBsZXMgZm9yIHNldHRpbmcgdXAgWC4yNSBvbiB0b3Agb2YgaXNkbi4KKworVGhlIHgyNS11dGlsaXR5IHBhY2thZ2UgYWxzbyBjb250YWlucyBhbiB4MjV0cmFjZSB0b29sIHRoYXQgY2FuIGJlCit1c2VkIHRvIG1vbml0b3IgWC4yNSBwYWNrZXRzIHJlY2VpdmVkIGJ5IHRoZSBuZXR3b3JrIGludGVyZmFjZXMuCitUaGUgL3Byb2MvbmV0L3gyNSogZmlsZXMgYWxzbyBjb250YWluIHVzZWZ1bCBpbmZvcm1hdGlvbi4gCisKKy0gSGVubmVyCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lzZG4vc3luY1BQUC5GQVEgYi9Eb2N1bWVudGF0aW9uL2lzZG4vc3luY1BQUC5GQVEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI1N2E0YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vaXNkbi9zeW5jUFBQLkZBUQpAQCAtMCwwICsxLDIyNCBAQAorc2ltcGxlIGlzZG40bGludXggUFBQIEZBUSAuLiB0byBiZSBjb250aW51ZWQgLi4gbm90ICdkZWJ1Z2dlZCcgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1EwMTogd2hhdCdzIHBwcGQsIGlwcHBkLCBzeW5jUFBQLCBhc3luY1BQUCA/PworUTAyOiBlcnJvciBtZXNzYWdlICJ0aGlzIHN5c3RlbSBsYWNrcyBQUFAgc3VwcG9ydCIKK1EwMzogc3RyYW5nZSBpbmZvcm1hdGlvbiB1c2luZyAnaWZjb25maWcnCitRMDQ6IE1QUFA/PyBXaGF0J3MgdGhhdCBhbmQgaG93IGNhbiBJIHVzZSBpdCAuLi4KK1EwNTogSSB0cmllZCBNUFBQIGJ1dCBpdCBkb2Vzbid0IHdvcmsgCitRMDY6IGNhbiBJIHVzZSBhc3luY2hyb25vdXMgUFBQIGVuY2Fwc3VsYXRpb24gd2l0aCBuZXR3b3JrIGRldmljZXMKK1EwNzogQSBTdW5JU0ROIG1hY2hpbmUgY2FuJ3QgY29ubmVjdCB0byBteSBpNGwgc3lzdGVtCitRMDg6IEkgd2FubmEgdGFsayB0byBzZXZlcmFsIG1hY2hpbmVzLCB3aGljaCBuZWVkIGRpZmZlcmVudCBjb25maWdzCitRMDk6IFN0YXJ0aW5nIHRoZSBpcHBwZCwgSSBnZXQgb25seSBlcnJvciBtZXNzYWdlcyBmcm9tIGk0bAorUTEwOiBJIHdhbm5hIHVzZSBkeW5hbWljIElQIGFkZHJlc3MgYXNzaWdubWVudCAKK1ExMTogSSBjYW4ndCBjb25uZWN0LiBIb3cgY2FuIEkgY2hlY2sgd2hlcmUgdGhlIHByb2JsZW0gaXMuCitRMTI6IEhvdyBjYW4gSSByZWR1Y2UgbG9naW4gZGVsYXk/IAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1EwMTogcHBwZCwgaXBwcGQsIHN5bmNQUFAsIGFzeW5jUFBQIC4uIHdoYXQgaXMgdGhhdCA/CisgICB3aGF0IHNob3VsZCBJIHVzZT8KK0E6IFRoZSBwcHBkIGlzIGZvciBhc3luY2hyb25vdXMgUFBQIC4uIGFzeW5jaHJvbm91cyBtZWFucworICAgaGVyZSwgdGhlIGZyYW1pbmcgaXMgY2hhcmFjdGVyIGJhc2VkLiAoZS5nIHdoZW4KKyAgIHVzaW5nIHR0eUkqIG9yIHR0eSogZGV2aWNlcykKKworICAgVGhlIGlwcHBkIGhhbmRsZXMgUFBQIHBhY2tldHMgY29taW5nIGluIEhETEMKKyAgIGZyYW1lcyAoYml0IGJhc2VkIHByb3RvY29sKSAuLi4gVGhlIFBQUCBkcml2ZXIKKyAgIGluIGlzZG40bGludXggcHVzaGVzIGFsbCBJUCBwYWNrZXRzIGRpcmVjdAorICAgdG8gdGhlIG5ldHdvcmsgbGF5ZXIgYW5kIGFsbCBQUFAgcHJvdG9jb2wKKyAgIGZyYW1lcyB0byB0aGUgL2Rldi9pcHBwKiBkZXZpY2UuIAorICAgU28sIHRoZSBpcHBwZCBpcyBhIHNpbXBsZSBleHRlcm5hbCBuZXR3b3JrCisgICBwcm90b2NvbCBoYW5kbGVyLgorCisgICBJZiB5b3UgbG9naW4gaW50byBhIHJlbW90ZSBtYWNoaW5lIHVzaW5nIHRoZQorICAgL2Rldi90dHlJKiBkZXZpY2VzIGFuZCB0aGVuIGVuYWJsZSBQUFAgb24gdGhlCisgICByZW1vdGUgdGVybWluYWwgc2VydmVyIC0+IHVzZSB0aGUgJ29sZCcgcHBwZAorCisgICBJZiB5b3VyIHJlbW90ZSBzaWRlIGltbWVkaWF0ZWx5IHN0YXJ0cyB0byBzZW5kCisgICBmcmFtZXMgLi4uIHlvdSBwcm9iYWJseSBjb25uZWN0IHRvIGEgCisgICBzeW5jUFBQIG1hY2hpbmUgLi4gdXNlIHRoZSBuZXR3b3JrIGRldmljZSBwYXJ0CisgICBvZiBpc2RuNGxpbnV4IHdpdGggdGhlICdzeW5jcHBwJyBlbmNhcHN1bGF0aW9uCisgICBhbmQgbWFrZSBzdXJlLCB0aGF0IHRoZSBpcHBwZCBpcyBydW5uaW5nIGFuZCAKKyAgIGNvbm5lY3RlZCB0byBhdCBsZWFzdCBvbmUgL2Rldi9pcHBwKi4gQ2hlY2sgdGhlIAorICAgaXNkbjRsaW51eCBtYW51YWwgb24gaG93IHRvIGNvbmZpZ3VyZSBhIG5ldHdvcmsgZGV2aWNlLgorCistLQorCitRMDI6IHdoZW4gSSBzdGFydCB0aGUgaXBwcGQgLi4gSSBvbmx5IGdldCB0aGUKKyAgIGVycm9yIG1lc3NhZ2UgInRoaXMgc3lzdGVtIGxhY2tzIFBQUCBzdXBwb3J0IgorQTogY2hlY2sgdGhhdCBhdCBsZWFzdCB0aGUgZGV2aWNlICdpcHBwMCcgZXhpc3RzLgorICAgKHlvdSBjYW4gY2hlY2sgdGhpcyBlLmcgd2l0aCB0aGUgcHJvZ3JhbSAnaWZjb25maWcnKQorICAgVGhlIGlwcHBkIE5FRURTIHRoaXMgZGV2aWNlIHVuZGVyIFRISVMgbmFtZSAuLiAKKyAgIElmIHRoaXMgZGV2aWNlIGRvZXNuJ3QgZXhpc3RzLCB1c2U6CisJaXNkbmN0cmwgYWRkaWYgaXBwcDAKKwlpc2RuY3RybCBlbmNhcCBpcHBwMCBzeW5jcHBwCisJLi4uIChzZWUgaXNkbjRsaW51eCBkb2MgZm9yIG1vcmUpIC4uLgorQTogTWF5YmUgeW91IGhhdmUgY29tcGlsZWQgdGhlIGlwcHBkIHdpdGggYW5vdGhlcgorICAga2VybmVsIHNvdXJjZSB0cmVlIHRoYW4gdGhlIGtlcm5lbCB5b3UgY3VycmVudGx5CisgICBydW4gLi4uIAorCistLQorCitRMDM6IHdoZW4gSSBsaXN0IHRoZSBuZXRkZXZpY2VzIHdpdGggaWZjb25maWcgSSBzZWUsIHRoYXQKKyAgIG15IElTRE4gaW50ZXJmYWNlIGhhcyBhIEhXYWRkciBhbmQgSVJRPTAgYW5kIEJhc2UgCisgICBhZGRyZXNzID0gMCAKK0E6IFRoZSBkZXZpY2UgaXMgYSBmYWtlIGV0aGVybmV0IGRldmljZSAuLiBpZ25vcmUgSVJRIGFuZCBiYXNlYWRkcgorICAgWW91IG5lZWQgdGhlIEhXYWRkciBvbmx5IGZvciBldGhlcm5ldCBlbmNhcHN1bGF0aW9uLgorICAgCistLQorCitRMDQ6IE1QUFA/PyBXaGF0J3MgdGhhdCBhbmQgaG93IGNhbiBJIHVzZSBpdCAuLi4KKworQTogTVBQUCBvciBNUCBvciBNUFAgKFdhcm5pbmc6IE1QIGlzIGFsc28gYW4gCisgICBhY3JvbnltIGZvciAnTXVsdGkgUHJvY2Vzc29yJykgc3RhbmRzIGZvcgorICAgTXVsdGkgUG9pbnQgdG8gUG9pbnQgYW5kIG1lYW5zIGJ1bmRsaW5nCisgICBvZiBzZXZlcmFsIGNoYW5uZWxzIHRvIG9uZSBsb2dpY2FsIHN0cmVhbS4KKyAgIFRvIGVuYWJsZSBNUFBQIG5lZ290aWF0aW9uIHlvdSBtdXN0IGNhbGwgdGhlCisgICBpcHBwZCB3aXRoIHRoZSAnK21wJyBvcHRpb24uIAorICAgWW91IG11c3QgYWxzbyBjb25maWd1cmUgYSBzbGF2ZSBkZXZpY2UgZm9yCisgICBldmVyeSBhZGRpdGlvbmFsIGNoYW5uZWwuIChzZWUgdGhlIGk0bCBtYW51YWwKKyAgIGZvciBtb3JlKQorICAgVG8gdXNlIGNoYW5uZWwgYnVuZGxpbmcgeW91IG11c3QgZmlyc3QgYWN0aXZhdGUKKyAgIHRoZSAnbWFzdGVyJyBvciBpbml0aWFsIGNhbGwuIE5vdyB5b3UgY2FuIGFkZCAKKyAgIHRoZSBzbGF2ZSBjaGFubmVscyB3aXRoIHRoZSBjb21tYW5kOgorICAgICAgIGlzZG5jdHJsIGFkZGxpbmsgPGRldmljZT4KKyAgIGUuZzoKKyAgICAgICBpc2RuY3RybCBhZGRsaW5rIGlwcHAwCisgICBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIG90aGVyIGVuY2Fwc3VsYXRpb25zIG9mCisgICBpc2RuNGxpbnV4ISBXaXRoIHN5bmNQUFAsIHRoZXJlIGlzIG5vIGF1dG9tYXRpYworICAgYWN0aXZhdGlvbiBvZiBzbGF2ZSBkZXZpY2VzLgorCistLQorCitRMDU6IEkgdHJpZWQgTVBQUCBidXQgaXQgZG9lc24ndCB3b3JrIC4uIHRoZSBpcHBwZAorICAgd3JpdGVzIGluIHRoZSBkZWJ1ZyBsb2cgc29tZXRoaW5nIGxpa2U6CisgICAuLiByY3ZkIFswXVtwcm90bz0weDNkXSBjMCAwMCAwMCAwMCA4MCBmZCAwMSAwMSAwMCAwYSAuLi4KKyAgIC4uIHNlbnQgWzBdW0xDUCBQcm90UmVqIGlkPTB4MiAwMCAzZCBjMCAwMCAwMCAwMCA4MCBmZCAwMSAuLi4KKworQTogeW91IGZvcmdvdCB0byBjb21waWxlIE1QUFAvUkZDMTcxNyBzdXBwb3J0IGludG8gdGhlCisgICBJU0ROIFN1YnN5c3RlbS4gUmVjb21waWxlIHdpdGggdGhpcyBvcHRpb24gZW5hYmxlZC4KKworLS0KKworUTA2OiBjYW4gSSB1c2UgYXN5bmNocm9ub3VzIFBQUCBlbmNhcHN1bGF0aW9uCisgICBvdmVyIHRoZSBuZXR3b3JrIGludGVyZmFjZSBvZiBpc2RuNGxpbnV4IC4uCisKK0E6IE5vIC4uIHRoYXQncyBub3QgcG9zc2libGUgLi4gVXNlIHRoZSBzdGFuZGFyZAorICAgUFBQIHBhY2thZ2Ugb3ZlciB0aGUgL2Rldi90dHlJKiBkZXZpY2VzLiBZb3UKKyAgIG11c3Qgbm90IHVzZSB0aGUgaXBwcGQgZm9yIHRoaXMuCisgICAKKy0tCisKK1EwNzogQSBTdW5JU0ROIG1hY2hpbmUgdHJpZXMgdG8gY29ubmVjdCBteSBpNGwgc3lzdGVtLAorICAgd2hpY2ggZG9lc24ndCB3b3JrLgorICAgQ2hlY2tpbmcgdGhlIGRlYnVnIGxvZyBJIGp1c3Qgc2F3IGdhcmJhZ2UgbGlrZToKKyEhWyAuLi4gZmlsbCBpbiB0aGUgbGluZSAuLi4gXSEhCisKK0E6IFRoZSBTdW4gdHJpZXMgdG8gdGFsayBhc3luY2hyb25vdXMgUFBQIC4uLiBpNGwKKyAgIGNhbid0IHVuZGVyc3RhbmQgdGhpcyAuLi4gdHJ5IHRvIHVzZSB0aGUgdHR5SSoKKyAgIGRldmljZXMgd2l0aCB0aGUgc3RhbmRhcmQgUFBQL3BwcGQgcGFja2FnZQorCitBOiAoZnJvbSBBbGV4YW50ZXIgU3RyYXVzczogKQorISFbIC4uLiBmaWxsIGluIG1haWwgXSEhCisKKy0tCisKK1EwODogSSB3YW5uYSB0YWxrIHRvIHJlbW90ZSBtYWNoaW5lcywgd2hpY2ggbmVlZAorICAgYSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4gVGhlIG9ubHkgd2F5CisgICBJIGZvdW5kIHRvIGRvIHRoaXMgaXMgdG8ga2lsbCB0aGUgaXBwcGQgYW5kCisgICBzdGFydCBhIG5ldyBvbmUgd2l0aCBhbm90aGVyIGNvbmZpZyB0byBjb25uZWN0CisgICB0byB0aGUgc2Vjb25kIG1hY2hpbmUuIAorCitBOiB5b3UgbXVzdCBiaW5kIGEgbmV0d29yayBpbnRlcmZhY2UgZXhwbGljaXRseSB0bworICAgYW4gaXBwcCBkZXZpY2UsIHdoZXJlIHlvdSBjYW4gY29ubmVjdCBhIChmb3IgdGhpcworICAgaW50ZXJmYWNlKSBpbmRpdmlkdWFsbHkgY29uZmlndXJlZCBpcHBwZC4KKworLS0KKworUTA5OiBXaGVuIEkgc3RhcnQgdGhlIGlwcHBkIEkgb25seSBnZXQgZXJyb3IgbWVzc2FnZXMKKyAgIGZyb20gdGhlIGk0bCBkcml2ZXIgLi4gCisKK0E6IFdoZW4gc3RhcnRpbmcsIHRoZSBpcHBwZCBjYWxscyBmdW5jdGlvbnMgd2hpY2ggbWF5IAorICAgdHJpZ2dlciBhIG5ldHdvcmsgcGFja2V0LiAoZS5nIGdldGhvc3RieW5hbWUoKSkuCisgICBXaXRob3V0IHRoZSBpcHBwZCAoYXQgdGhpcyBtb21lbnQsIGl0IGlzIG5vdAorICAgZnVsbHkgc3RhcnRlZCkgd2UgY2FuJ3QgaGFuZGxlIHRoaXMgbmV0d29yayByZXF1ZXN0LgorICAgVHJ5IHRvIGNvbmZpZ3VyZSBob3N0bmFtZXMgbmVjZXNzYXJ5IGZvciB0aGUgaXBwcGQKKyAgIGluIHlvdXIgbG9jYWwgL2V0Yy9ob3N0cyBmaWxlIG9yIGluIGEgd2F5LCB0aGF0CisgICB5b3VyIHN5c3RlbSBjYW4gcmVzb2x2ZSBpdCB3aXRob3V0IHVzaW5nIGFuCisgICBpc2RuL2lwcHAgbmV0d29yay1pbnRlcmZhY2UuCisKKy0tCisKK1ExMDogSSB3YW5uYSB1c2UgZHluYW1pYyBJUCBhZGRyZXNzIGFzc2lnbm1lbnQgLi4uIEhvdyAKKyAgIG11c3QgSSBjb25maWd1cmUgdGhlIG5ldHdvcmsgZGV2aWNlLgorCitBOiBBdCBsZWFzdCB5b3UgbXVzdCBoYXZlIGEgcm91dGUgd2hpY2ggZm9yd2FyZHMKKyAgIGEgcGFja2V0IHRvIHRoZSBpcHBwIG5ldHdvcmstaW50ZXJmYWNlIHRvIHRyaWdnZXIKKyAgIHRoZSBkaWFsLW9uLWRlbWFuZC4KKyAgIEEgZGVmYXVsdCByb3V0ZSB0byB0aGUgaXBwcC1pbnRlcmZhY2Ugd2lsbCB3b3JrLgorICAgTm93IHlvdSBtdXN0IGNob29zZSBhIGR1bW15IElQIGFkZHJlc3MgZm9yIHlvdXIKKyAgIGludGVyZmFjZS4KKyAgIElmIGZvciBzb21lIHJlYXNvbiB5b3UgY2FuJ3Qgc2V0IHRoZSBkZWZhdWx0CisgICByb3V0ZSB0byB0aGUgaXBwcCBpbnRlcmZhY2UsIHlvdSBtYXkgdGFrZSBhbnkgCisgICBhZGRyZXNzIG9mIHRoZSBzdWJuZXQgZnJvbSB3aGljaCB5b3UgZXhwZWN0IHlvdXIKKyAgIGR5bmFtaWMgSVAgbnVtYmVyIGFuZCBzZXQgYSAnbmV0d29yayByb3V0ZScgZm9yCisgICB0aGlzIHN1Ym5ldCB0byB0aGUgaXBwcCBpbnRlcmZhY2UuCisgICBUbyBhbGxvdyBvdmVycmlkaW5nIG9mIHRoZSBkdW1teSBhZGRyZXNzIHlvdQorICAgbXVzdCBjYWxsIHRoZSBpcHBwZCB3aXRoIHRoZSAnaXBjcC1hY2NlcHQtbG9jYWwnIG9wdGlvbi4KKworQTogWW91IG11c3Qga25vdywgaG93IHRoZSBpcHBwZCBnZXRzIHRoZSBhZGRyZXNzZXMgaXQgd2FubmEKKyAgIGNvbmZpZ3VyZS4gSWYgeW91IGRvbid0IGdpdmUgYW55IG9wdGlvbiwgdGhlIGlwcHBkCisgICB0cmllcyB0byBuZWdvdGlhdGUgdGhlIGxvY2FsIGhvc3QgYWRkcmVzcyEKKyAgIFdpdGggdGhlIG9wdGlvbiAnbm9pcGRlZmF1bHQnIGl0IHJlcXVlc3RzIGFuIGFkZHJlc3MKKyAgIGZyb20gdGhlIHJlbW90ZSBtYWNoaW5lLiBXaXRoICd1c2VpZmlwJyBpdCBnZXRzIHRoZQorICAgYWRkcmVzc2VzIGZyb20gdGhlIG5ldCBpbnRlcmZhY2UuIE9yIHlvdSBzZXQgdGhlIGFkZHJlc3MKKyAgIG9uIHRoZSBvcHRpb24gbGluZSB3aXRoIHRoZSA8YS5iLmMuZDplLmYuZy5oPiBvcHRpb24uCisgICBOb3RlOiB0aGUgSVAgYWRkcmVzcyBvZiB0aGUgcmVtb3RlIG1hY2hpbmUgbXVzdCBiZSBjb25maWd1cmVkCisgICBsb2NhbGx5IG9yIHRoZSByZW1vdGUgbWFjaGluZSBtdXN0IHNlbmQgaXQgaW4gYW4gSVBDUCByZXF1ZXN0LgorICAgSWYgeW91ciBzaWRlIGRvZXNuJ3Qga25vdyB0aGUgSVAgYWRkcmVzcyBhZnRlciBuZWdvdGlhdGlvbiwgaXQKKyAgIGNsb3NlcyB0aGUgY29ubmVjdGlvbiEKKyAgIFlvdSBtdXN0IGFsbG93IG92ZXJyaWRpbmcgb2YgYWRkcmVzcyB3aXRoIHRoZSAnaXBjcC1hY2NlcHQtKicKKyAgIG9wdGlvbnMsIGlmIHlvdSBoYXZlIHNldCB5b3VyIG93biBvciB0aGUgcmVtb3RlIGFkZHJlc3MgCisgICBleHBsaWNpdGx5LgorCitBOiBNYXliZSB5b3UgdHJ5IHRoZXNlIG9wdGlvbnMgLi4gZS5nOiAgIAorCisgICAgL3NiaW4vaXBwcGQgOiRSRU1PVEUgbm9pcGRlZmF1bHQgL2Rldi9pcHBwMAorCisgICB3aGVyZSBSRU1PVEUgbXVzdCBiZSB0aGUgYWRkcmVzcyBvZiB0aGUgcmVtb3RlIG1hY2hpbmUgKHRoZQorICAgbWFjaGluZSwgd2hpY2ggZ2l2ZXMgeW91IHlvdXIgYWRkcmVzcykKKworLS0KKworUTExOiBJIGNhbid0IGNvbm5lY3QuIEhvdyBjYW4gSSBjaGVjayB3aGVyZSB0aGUgcHJvYmxlbSBpcy4KKworQTogQSBnb29kIGhlbHAgbG9nIGlzIHRoZSBkZWJ1ZyBvdXRwdXQgZnJvbSB0aGUgaXBwcGQuLi4KKyAgIENoZWNrIHdoZXRoZXIgeW91IGNhbiBmaW5kIHRoZXJlOgorICAgLSBvbmx5IGEgZmV3IExDUC1jb25mLXJlcSBTRU5UIG1lc3NhZ2VzIChsZXNzIHRoZW4gMTApCisgICAgIGFuZCB0aGVuIGEgVGVybS1SRVE6CisgICAgIC0+IGNoZWNrIHdoZXRoZXIgeW91ciBJU0ROIGNhcmQgaXMgd2VsbCBjb25maWd1cmVkCisgICAgICAgIGl0IHNlZW1zLCB0aGF0IHlvdXIgbWFjaGluZSBkb2Vzbid0IGRpYWwKKyAgICAgICAgKElSUSxJTyxQcm90bywgZXRjIHByb2JsZW1zKQorICAgICAgICBDb25maWd1cmUgeW91ciBJU0ROIGNhcmQgdG8gcHJpbnQgZGVidWcgbWVzc2FnZXMgYW5kCisgICAgICAgIGNoZWNrIHRoZSAvZGV2L2lzZG5jdHJsIG91dHB1dCBuZXh0IHRpbWUuIFRoZXJlCisgICAgICAgIHlvdSBjYW4gc2VlLCB3aGV0aGVyIHRoZXJlIGlzIGFjdGl2aXR5IG9uIHRoZSBjYXJkL2xpbmUuCisgICAtIHRoZXJlIGFyZSBhdCBsZWFzdCBhIGZldyBSRUNWIG1lc3NhZ2VzIGluIHRoZSBsb2c6CisgICAgIC0+IGZpbmU6IHlvdXIgY2FyZCBpcyBkaWFsaW5nIGFuZCB5b3VyIHJlbW90ZSBtYWNoaW5lCisgICAgICAgIHRyaWVzIHRvIHRhbGsgd2l0aCB5b3UuIE1heWJlIG9ubHkgYSBtaXNzaW5nIAorICAgICAgICBhdXRoZW50aWNhdGlvbi4gQ2hlY2sgeW91ciBpcHBwZCBjb25maWd1cmF0aW9uIGFnYWluLgorICAgLSB0aGUgaXBwcGQgZXhpdHMgZm9yIHNvbWUgcmVhc29uOgorICAgICAtPiBub3QgZ29vZCAuLi4gY2hlY2sgL3Zhci9hZG0vc3lzbG9nIGFuZCAvdmFyL2FkbS9kYWVtb24uCisgICAgICAgIENvdWxkIGJlIGEgYnVnIGluIHRoZSBpcHBwZC4KKworLS0KKworUTEyOiBIb3cgY2FuIEkgcmVkdWNlIGxvZ2luIGRlbGF5PworCitBOiBMb2cgYSBsb2dpbiBzZXNzaW9uICgnZGVidWcnIGxvZykgYW5kIGNoZWNrIHdoaWNoIG9wdGlvbnMgCisgIHlvdXIgcmVtb3RlIHNpZGUgcmVqZWN0cy4gTmV4dCB0aW1lIGNvbmZpZ3VyZSB5b3VyIGlwcHBkCisgIHRvIG5vdCBuZWdvdGlhdGUgdGhlc2Ugb3B0aW9ucy4gQW5vdGhlciAnc2lkZSBlZmZlY3QnIGlzLCB0aGF0CisgIHRoaXMgaW5jcmVhc2VzIHJlZHVuZGFuY3kuIChlLmcgeW91ciByZW1vdGUgc2lkZSBpcyBidWdneSBhbmQKKyAgcmVqZWN0cyBvcHRpb25zIGluIGEgd3Jvbmcgd2F5KS4KKworCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vamFfSlAvSE9XVE8gYi9Eb2N1bWVudGF0aW9uL2phX0pQL0hPV1RPCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMGYyYmQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2phX0pQL0hPV1RPCkBAIC0wLDAgKzEsNjQ0IEBACitOT1RFOgorVGhpcyBpcyBhIHZlcnNpb24gb2YgRG9jdW1lbnRhdGlvbi9IT1dUTyB0cmFuc2xhdGVkIGludG8gSmFwYW5lc2UuCitUaGlzIGRvY3VtZW50IGlzIG1haW50YWluZWQgYnkgVHN1Z2lrYXp1IFNoaWJhdGEgPHRzaGliYXRhQGFiLmpwLm5lYy5jb20+CithbmQgdGhlIEpGIFByb2plY3QgdGVhbSA8d3d3LmxpbnV4Lm9yLmpwL0pGPi4KK0lmIHlvdSBmaW5kIGFueSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBkb2N1bWVudCBhbmQgdGhlIG9yaWdpbmFsIGZpbGUKK29yIGEgcHJvYmxlbSB3aXRoIHRoZSB0cmFuc2xhdGlvbiwKK3BsZWFzZSBjb250YWN0IHRoZSBtYWludGFpbmVyIG9mIHRoaXMgZmlsZSBvciBKRiBwcm9qZWN0LgorCitQbGVhc2UgYWxzbyBub3RlIHRoYXQgdGhlIHB1cnBvc2Ugb2YgdGhpcyBmaWxlIGlzIHRvIGJlIGVhc2llciB0byByZWFkCitmb3Igbm9uIEVuZ2xpc2ggKHJlYWQ6IEphcGFuZXNlKSBzcGVha2VycyBhbmQgaXMgbm90IGludGVuZGVkIGFzIGEKK2ZvcmsuIFNvIGlmIHlvdSBoYXZlIGFueSBjb21tZW50cyBvciB1cGRhdGVzIGZvciB0aGlzIGZpbGUsIHBsZWFzZSB0cnkKK3RvIHVwZGF0ZSB0aGUgb3JpZ2luYWwgRW5nbGlzaCBmaWxlIGZpcnN0LgorCitMYXN0IFVwZGF0ZWQ6IDIwMTMvMDcvMTkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK+OBk+OCjOOBr+OAgQorbGludXgtMy4xMC9Eb2N1bWVudGF0aW9uL0hPV1RPCivjga7lkozoqLPjgafjgZnjgIIKKwor57+76Kiz5Zuj5L2T77yaIEpGIOODl+ODreOCuOOCp+OCr+ODiCA8IGh0dHA6Ly9saW51eGpmLnNvdXJjZWZvcmdlLmpwLyA+Civnv7voqLPml6XvvJogMjAxMy83LzE5Civnv7voqLPogIXvvJogVHN1Z2lrYXp1IFNoaWJhdGEgPHRzaGliYXRhIGF0IGFiIGRvdCBqcCBkb3QgbmVjIGRvdCBjb20+CivmoKHmraPogIXvvJog5p2+5YCJ44GV44KTIDxuYmgtLW1hdHMgYXQgbmlmdHkgZG90IGNvbT4KKyAgICAgICAgIOWwj+aelyDpm4XlhbjjgZXjgpMgKE1hc2Fub3JpIEtvYmF5YXNpKSA8emFwMDMyMTYgYXQgbmlmdHkgZG90IG5lIGRvdCBqcD4KKyAgICAgICAgIOatpuS6leS8uOWFieOBleOCk+OAgTx0YWtlaSBhdCB3ZWJtYXN0ZXJzIGRvdCBnciBkb3QganA+CisgICAgICAgICDjgYvjga3jgZPjgZXjgpMgKFNlaWppIEthbmVrbykgPHNrYW5la28gYXQgYTIgZG90IG1ibiBkb3Qgb3IgZG90IGpwPgorICAgICAgICAg6YeO5Y+j44GV44KTIChLZW5qaSBOb2d1Y2hpKSA8dG9reW8yNDYgYXQgZ21haWwgZG90IGNvbT4KKyAgICAgICAgIOays+WGheOBleOCkyAoVGFrYXlvc2hpIEtvY2hpKSA8dC1rb2NoaSBhdCBicSBkb3QganAgZG90IG5lYyBkb3QgY29tPgorICAgICAgICAg5bKp5pys44GV44KTIChpd2Ftb3RvKSA8aXdhbW90by5rbiBhdCBuY29zIGRvdCBuZWMgZG90IGNvIGRvdCBqcD4KKyAgICAgICAgIOWGheeUsOOBleOCkyAoU2F0b3NoaSBVY2hpZGEpIDxzLXVjaGlkYSBhdCBhcCBkb3QganAgZG90IG5lYyBkb3QgY29tPgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitMaW51eCDjgqvjg7zjg43jg6vplovnmbrjga7jgoTjgormlrkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor44GT44KM44Gv5LiK44Gu44OI44OU44OD44KvKCBMaW51eCDjgqvjg7zjg43jg6vplovnmbrjga7jgoTjgormlrkp44Gu6YeN6KaB44Gq5LqL5p+E44KS57ay576F44GX44GfCivjg4njgq3jg6Xjg6Hjg7Pjg4jjgafjgZnjgILjgZPjgZPjgavjga8gTGludXgg44Kr44O844ON44Or6ZaL55m66ICF44Gr44Gq44KL44Gf44KB44Gu5pa55rOV44GoCitMaW51eCDjgqvjg7zjg43jg6vplovnmbrjgrPjg5/jg6Xjg4vjg4bjgqPjgajlhbHjgavmtLvli5XjgZnjgovjgoTjgormlrnjgpLlrabjgbbmlrnms5XjgYzlkKvjgb7jgozjgaYKK+OBhOOBvuOBmeOAguOCq+ODvOODjeODq+ODl+ODreOCsOODqeODn+ODs+OCsOOBq+mWouOBmeOCi+aKgOihk+eahOOBqumgheebruOBq+mWouOBmeOCi+OBk+OBqOOBr+S9leOCguWQqwor44KB44Gq44GE44KI44GG44Gr44GX44Gm44GE44G+44GZ44GM44CB44Kr44O844ON44Or6ZaL55m66ICF44Go44Gq44KL44Gf44KB44Gu5q2j44GX44GE5pa55ZCR44Gr5ZCR44GL44GGCivmiYvliqnjgZHjgavjgarjgorjgb7jgZnjgIIKKwor44KC44GX44CB44GT44Gu44OJ44Kt44Ol44Oh44Oz44OI44Gu44Gp44GT44GL44GM5Y+k44GP44Gq44Gj44Gm44GE44Gf5aC05ZCI44Gr44Gv44CB44GT44Gu44OJ44Kt44Ol44Oh44OzCivjg4jjga7mnIDlvozjgavjg6rjgrnjg4jjgZfjgZ/jg6Hjg7Pjg4bjg4rjgavjg5Hjg4Pjg4HjgpLpgIHjgaPjgabjgY/jgaDjgZXjgYTjgIIKKwor44Gv44GY44KB44GrCistLS0tLS0tLS0KKwor44GC44Gq44Gf44Gv44CATGludXgg44Kr44O844ON44Or44Gu6ZaL55m66ICF44Gr44Gq44KL5pa55rOV44KS5a2m44Gz44Gf44GE44Gu44Gn44GX44KH44GG44GL77yf44CA44GdCivjgozjgajjgoLjgYLjgarjgZ/jga/kuIrlj7jjgYvjgonjgIzjgZPjga7jg4fjg5DjgqTjgrnjga4gTGludXgg44OJ44Op44Kk44OQ44KS5pu444GP44KI44GG44Gr44CN44GoCivoqIDjgo/jgozjgabjgYTjgovjga7jgafjgZfjgofjgYbjgYvvvJ/jgIAKK+OBk+OBruaWh+abuOOBruebrueahOOBr+OAgeOBguOBquOBn+OBjOi4j+OCgOOBueOBjeaJi+mghuOBqOOAgeOCs+ODn+ODpeODi+ODhuOCo+OBqOS4gOe3kuOBq+OBhuOBvuOBj+WDjQor44GP44OS44Oz44OI44KS5pu444GN5LiL44GZ44GT44Go44Gn44CB44GC44Gq44Gf44GM55+l44KL44G544GN5YWo44Gm44Gu44GT44Go44KS5pWZ44GI44KL44GT44Go44Gn44GZ44CCCivjgb7jgZ/jgIHjgZPjga7jgrPjg5/jg6Xjg4vjg4bjgqPjgYzjgarjgZzku4rjgYbjgb7jgY/jgb7jgo/jgaPjgabjgYTjgovjga7jgYvjgajjgYTjgYbnkIbnlLHjga7kuIDpg6jjgoIKK+iqrOaYjuOBl+OCiOOBhuOBqOippuOBv+OBpuOBhOOBvuOBmeOAggorCisKK+OCq+ODvOODjeODq+OBryDlsJHph4/jga7jgqLjg7zjgq3jg4bjgq/jg4Hjg6Pkvp3lrZjpg6jliIbjgYzjgqLjgrvjg7Pjg5bjg6roqIDoqp7jgafmm7jjgYvjgozjgabjgYTjgosKK+S7peWkluOBr+Wkp+mDqOWIhuOBryBDIOiogOiqnuOBp+abuOOBi+OCjOOBpuOBhOOBvuOBmeOAgkPoqIDoqp7jgpLjgojjgY/nkIbop6PjgZfjgabjgYTjgovjgZPjgajjga/jgqvjg7wKK+ODjeODq+mWi+eZuuiAheOBq+OBr+W/heimgeOBp+OBmeOAguOCouODvOOCreODhuOCr+ODgeODo+WQkeOBkeOBruS9juODrOODmeODq+mDqOWIhuOBrumWi+eZuuOCkuOBmeOCi+OBrgor44Gn44Gq44GR44KM44Gw44CBKOOBqeOCk+OBquOCouODvOOCreODhuOCr+ODgeODo+OBp+OCginjgqLjgrvjg7Pjg5bjg6oo6Kiz5rOoOiDoqIDoqp4p44Gv5b+F6KaB44GC44KKCivjgb7jgZvjgpPjgILku6XkuIvjga7mnKzjga/jgIFDIOiogOiqnuOBruWNgeWIhuOBquefpeitmOOChOS9leW5tOOCguOBrue1jOmok+OBq+WPluOBo+OBpuS7o+OCj+OCi+OCguOBrgor44Gn44Gv44GC44KK44G+44Gb44KT44GM44CB5bCR44Gq44GP44Go44KC44Oq44OV44Kh44Os44Oz44K544Go44GX44Gm44Gv6Imv44GE5pys44Gn44GZ44CCCisgLSAiVGhlIEMgUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UiIGJ5IEtlcm5pZ2hhbiBhbmQgUml0Y2hpZSBbUHJlbnRpY2UgSGFsbF0KKyAt44CO44OX44Ot44Kw44Op44Of44Oz44Kw6KiA6Kqe77yj56ysMueJiOOAjyhCLlcuIOOCq+ODvOODi+ODj+ODsy9ELk0uIOODquODg+ODgeODvOiRlyDnn7PnlLDmmbTkuYXoqLMpIFvlhbHnq4vlh7rniYhdCisgLSAiUHJhY3RpY2FsIEMgUHJvZ3JhbW1pbmciIGJ5IFN0ZXZlIE91YWxsaW5lIFtPJ1JlaWxseV0KKyAtIOOAjkPlrp/ot7Xjg5fjg63jgrDjg6njg5/jg7PjgrDnrKwz54mI44CPKFN0ZXZlIE91YWxsaW5l6JGXIOacm+aciOW6t+WPuOebo+iosyDosLflj6Plip/oqLMpIFvjgqrjg6njgqTjg6rjg7zjgrjjg6Pjg5Hjg7NdCisgLSAiQzogIEEgUmVmZXJlbmNlIE1hbnVhbCIgYnkgSGFyYmlzb24gYW5kIFN0ZWVsZSBbUHJlbnRpY2UgSGFsbF0KKyAtIOOAjuaWsOODu+ips+iqrCBDIOiogOiqniBIJlMg44Oq44OV44Kh44Os44Oz44K544CPCisgICAgICAgKOOCteODn+ODpeOCqOODqyBQIOODj+ODvOODk+OCveODsy/jgqzjgqQgTCDjgrnjg4bjgqPjg7zjg6vlhbHokZcg5paJ6JekIOS/oeeUt+ebo+iosylb44K944OV44OI44OQ44Oz44KvXQorCivjgqvjg7zjg43jg6vjga8gR05VIEMg44GoIEdOVSDjg4Tjg7zjg6vjg4HjgqfjgqTjg7PjgpLkvb/jgaPjgabmm7jjgYvjgozjgabjgYTjgb7jgZnjgILjgqvjg7zjg43jg6sKK+OBryBJU08gQzg5IOS7leanmOOBq+a6luaLoOOBl+OBpuabuOOBj+S4gOaWueOBp+OAgeaomea6luOBq+OBr+eEoeOBhOiogOiqnuaLoeW8teOCkuWkmuOBj+S9v+OBo+OBpgor44GE44G+44GZ44CC44Kr44O844ON44Or44Gv5qiZ5rqWIEMg44Op44Kk44OW44Op44Oq44Go44Gv6Zai5L+C44GM44Gq44GE44Go44GE44Gj44Gf44CBQyDoqIDoqp7jg5Xjg6rjg7wKK+OCueOCv+ODs+ODh+OCo+ODs+OCsOeSsOWig+OBp+OBmeOAguOBneOBruOBn+OCgeOAgUMg44Gu5qiZ5rqW44Gn5L2/44GI44Gq44GE44KC44Gu44KC44GC44KK44G+44GZ44CC5Lu7CivmhI/jga4gbG9uZyBsb25nIOOBrumZpOeul+OChOa1ruWLleWwj+aVsOeCueOBr+S9v+OBiOOBvuOBm+OCk+OAggor44Go44GN44Gp44GN44CB44Kr44O844ON44Or44GM44OE44O844Or44OB44Kn44Kk44Oz44KEIEMg6KiA6Kqe5ouh5by144Gr572u44GE44Gm44GE44KL5YmN5o+Q44GM44Gp44GGCivjgarjgaPjgabjgYTjgovjga7jgYvjgo/jgYvjgorjgavjgY/jgYTjgZPjgajjgYzjgYLjgorjgIHjgb7jgZ/jgIHmrovlv7XjgarjgZPjgajjgavmsbrlrprnmoTjgarjg6rjg5XjgqEKK+ODrOODs+OCueOBr+WtmOWcqOOBl+OBvuOBm+OCk+OAguaDheWgseOCkuW+l+OCi+OBq+OBr+OAgWdjYyDjga4gaW5mbyDjg5rjg7zjgrgoIGluZm8gZ2NjICnjgpIKK+imi+OBpuOBj+OBoOOBleOBhOOAggorCivjgYLjgarjgZ/jga/ml6LlrZjjga7plovnmbrjgrPjg5/jg6Xjg4vjg4bjgqPjgajkuIDnt5LjgavkvZzmpa3jgZnjgovmlrnms5XjgpLlrabjgbzjgYbjgajjgZfjgabjgYTjgovjgZMKK+OBqOOBq+eVmeaEj+OBl+OBpuOBj+OBoOOBleOBhOOAguOBneOBruOCs+ODn+ODpeODi+ODhuOCo+OBr+OAgeOCs+ODvOODh+OCo+ODs+OCsOOAgeOCueOCv+OCpOODq+OAgQor6ZaL55m65omL6aCG44Gr44Gk44GE44Gm6auY5bqm44Gq5qiZ5rqW44KS5oyB44Gk44CB5aSa5qeY44Gq5Lq644Gu6ZuG44G+44KK44Gn44GZ44CCCivlnLDnkIbnmoTjgavliIbmlaPjgZfjgZ/lpKfopo/mqKHjgarjg4Hjg7zjg6Djgavlr77jgZfjgabjgoLjgaPjgajjgoLjgYbjgb7jgY/jgYTjgY/jgajjgo/jgYvjgaPjgZ/jgZPjgagKK+OCkuODmeODvOOCueOBq+OBl+OBquOBjOOCieOAgeOBk+OCjOOCieOBruaomea6luOBr+mVt+OBhOaZgumWk+OCkuOBi+OBkeOBpuevieOBi+OCjOOBpuOBjeOBvuOBl+OBn+OAggor44GT44KM44KJ44Gv44GN44Gh44KT44Go5paH5pu45YyW44GV44KM44Gm44GE44G+44GZ44GL44KJ44CB5LqL5YmN44Gr44GT44KM44KJ44Gu5qiZ5rqW44Gr44Gk44GE44Gm44Gn44GNCivjgovjgaDjgZHjgZ/jgY/jgZXjgpPlrabjgpPjgafjgY/jgaDjgZXjgYTjgILjgb7jgZ/nmobjgYzjgYLjgarjgZ/jgoTjgYLjgarjgZ/jga7kvJrnpL7jga7jgoTjgormlrnjgavlkIjjgo8KK+OBm+OBpuOBj+OCjOOCi+OBqOaAneOCj+OBquOBhOOBp+OBj+OBoOOBleOBhOOAggorCivms5XnmoTllY/poYwKKy0tLS0tLS0tLS0tLQorCitMaW51eCDjgqvjg7zjg43jg6vjga7jgr3jg7zjgrnjgrPjg7zjg4njga8gR1BMIOODqeOCpOOCu+ODs+OCueOBruS4i+OBp+ODquODquODvOOCueOBleOCjOOBpuOBhOOBvgor44GZ44CC44Op44Kk44K744Oz44K544Gu6Kmz57Sw44Gr44Gk44GE44Gm44Gv44CB44K944O844K544OE44Oq44O844Gu44Oh44Kk44Oz44OH44Kj44Os44Kv44OI44Oq44Gr5a2Y5ZyoCivjgZnjgovjgIFDT1BZSU5HIOOBruODleOCoeOCpOODq+OCkuimi+OBpuOBj+OBoOOBleOBhOOAguOCguOBl+ODqeOCpOOCu+ODs+OCueOBq+OBpOOBhOOBpuOBleOCieOBq+izqgor5ZWP44GM44GC44KM44Gw44CBTGludXggS2VybmVsIOODoeODvOODquODs+OCsOODquOCueODiOOBq+izquWVj+OBmeOCi+OBruOBp+OBr+OBquOBj+OAgeOBqeOBhuOBngor5rOV5b6L5a6244Gr55u46KuH44GX44Gm44GP44Gg44GV44GE44CC44Oh44O844Oq44Oz44Kw44Oq44K544OI44Gu5Lq66YGU44Gv5rOV5b6L5a6244Gn44Gv44Gq44GP44CB5rOV55qECivllY/poYzjgavjgaTjgYTjgabjga/lvbzjgonjga7lo7DmmI7jga/jgYLjgabjgavjgZnjgovjgbnjgY3jgafjga/jgYLjgorjgb7jgZvjgpPjgIIKKworR1BMIOOBq+mWouOBmeOCi+WFsemAmuOBruizquWVj+OChOWbnuetlOOBq+OBpOOBhOOBpuOBr+OAgeS7peS4i+OCkuWPgueFp+OBl+OBpuOBj+OBoOOBleOBhOOAggorCWh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtZmFxLmh0bWwKKwor44OJ44Kt44Ol44Oh44Oz44OICistLS0tLS0tLS0tLS0KKworTGludXgg44Kr44O844ON44Or44K944O844K544OE44Oq44O844Gv5bmF5bqD44GE56+E5Zuy44Gu44OJ44Kt44Ol44Oh44Oz44OI44KS5ZCr44KT44Gn44GK44KK44CB44Gd44KMCivjgonjga/jgqvjg7zjg43jg6vjgrPjg5/jg6Xjg4vjg4bjgqPjgajkvJroqbHjgZnjgovmlrnms5XjgpLlrabjgbbjga7jgavpnZ7luLjjgavosrTph43jgarjgoLjga7jgafjgZnjgIIKK+aWsOOBl+OBhOapn+iDveOBjOOCq+ODvOODjeODq+OBq+i/veWKoOOBleOCjOOCi+WgtOWQiOOAgeOBneOBruapn+iDveOBruS9v+OBhOaWueOBq+OBpOOBhOOBpuiqrOaYjuOBl+OBnwor5paw44GX44GE44OJ44Kt44Ol44Oh44Oz44OI44OV44Kh44Kk44Or44KC6L+95Yqg44GZ44KL44GT44Go44KS5Yun44KB44G+44GZ44CCCivjgqvjg7zjg43jg6vjga7lpInmm7TjgYzjgIHjgqvjg7zjg43jg6vjgYzjg6bjg7zjgrbnqbrplpPjgavlhazplovjgZfjgabjgYTjgovjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga4KK+WkieabtOOCkuW8leOBjei1t+OBk+OBmeWgtOWQiOOAgeOBneOBruWkieabtOOCkuiqrOaYjuOBmeOCi+ODnuODi+ODpeOCouODq+ODmuODvOOCuOOBruODkeODg+ODgeOChOaDheWgsQor44KS44Oe44OL44Ol44Ki44Or44Oa44O844K444Gu44Oh44Oz44OG44OKIG10ay5tYW5wYWdlc0BnbWFpbC5jb20g44Gr6YCB44KK44CBQ0Mg44KSCitsaW51eC1hcGlAdmVyLmtlcm5lbC5vcmcg44Gr6YCB44KL44GT44Go44KS5Yun44KB44G+44GZ44CCCisKK+S7peS4i+OBr+OCq+ODvOODjeODq+OCveODvOOCueODhOODquODvOOBq+WQq+OBvuOCjOOBpuOBhOOCi+iqreOCk+OBp+OBiuOBj+OBueOBjeODleOCoeOCpOODq+OBruS4gOimp+OBpwor44GZLQorCisgIFJFQURNRQorICAgIOOBk+OBruODleOCoeOCpOODq+OBryBMaW51eOOCq+ODvOODjeODq+OBruewoeWNmOOBquiDjOaZr+OBqOOCq+ODvOODjeODq+OCkuioreWumijoqLPms6gKKyAgICBjb25maWd1cmUgKeOBl+OAgeeUn+aIkCjoqLPms6ggYnVpbGQgKeOBmeOCi+OBn+OCgeOBq+W/heimgeOBquOBk+OBqOOBr+S9leOBi+OBjOabuOOBi+OCjAorICAgIOOBpuOBhOOBvuOBmeOAguOCq+ODvOODjeODq+OBq+mWouOBl+OBpuWIneOCgeOBpuOBruS6uuOBr+OBk+OBk+OBi+OCieOCueOCv+ODvOODiOOBmeOCi+OBqOiJr+OBhOOBpworICAgIOOBl+OCh+OBhuOAggorCisgIERvY3VtZW50YXRpb24vQ2hhbmdlcworICAgICDjgZPjga7jg5XjgqHjgqTjg6vjga/jgqvjg7zjg43jg6vjgpLjgYbjgb7jgY/nlJ/miJAo6Kiz5rOoIGJ1aWxkICnjgZfjgIHotbDjgonjgZvjgovjga7jgavmnIAKKyAgICAg5bCP6ZmQ44Gu44Os44OZ44Or44Gn5b+F6KaB44Gq5pWw44CF44Gu44K944OV44OI44Km44Kn44Ki44OR44OD44Kx44O844K444Gu5LiA6Kan44KS56S644GX44Gm44GECisgICAgIOOBvuOBmeOAggorCisgIERvY3VtZW50YXRpb24vQ29kaW5nU3R5bGUKKyAgICDjgZPjgozjga8gTGludXgg44Kr44O844ON44Or44Gu44Kz44O844OH44Kj44Oz44Kw44K544K/44Kk44Or44Go6IOM5pmv44Gr44GC44KL55CG55Sx44KS6KiY6L+wCisgICAg44GX44Gm44GE44G+44GZ44CC5YWo44Gm44Gu5paw44GX44GE44Kz44O844OJ44Gv44GT44Gu44OJ44Kt44Ol44Oh44Oz44OI44Gr44GC44KL44Ks44Kk44OJ44Op44Kk44OzCisgICAg44Gr5b6T44Gj44Gm44GE44KL44GT44Go44KS5pyf5b6F44GV44KM44Gm44GE44G+44GZ44CC5aSn6YOo5YiG44Gu44Oh44Oz44OG44OK44Gv44GT44KM44KJ44Gu44Or44O8CisgICAg44Or44Gr5b6T44Gj44Gm44GE44KL44KC44Gu44Gg44GR44KS5Y+X44GR5LuY44GR44CB5aSa44GP44Gu5Lq644Gv5q2j44GX44GE44K544K/44Kk44Or44Gu44Kz44O844OJCisgICAg44Gg44GR44KS44Os44OT44Ol44O844GX44G+44GZ44CCCisKKyAgRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nUGF0Y2hlcworICBEb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdEcml2ZXJzCisgICAgIOOBk+OCjOOCieOBruODleOCoeOCpOODq+OBq+OBr+OAgeOBqeOBhuOChOOBo+OBpuOBhuOBvuOBj+ODkeODg+ODgeOCkuS9nOOBo+OBpuaKleeov+OBmeOCi+OBi+OBqworICAgICDjgaTjgYTjgabpnZ7luLjjgavoqbPjgZfjgY/mm7jjgYvjgozjgabjgYrjgorjgIHku6XkuIvjgpLlkKvjgb/jgb7jgZko44GT44KM44Gg44GR44Gr6ZmQ44KJ44Gq44GECisgICAgIOOBkeOCjOOBqeOCgikKKyAgICAgICAgLSBFbWFpbCDjgavlkKvjgoDjgZPjgagKKyAgICAgICAgLSBFbWFpbCDjga7lvaLlvI8KKyAgICAgICAgLSDjgaDjgozjgavpgIHjgovjgYsKKyAgICAg44GT44KM44KJ44Gu44Or44O844Or44Gr5b6T44GI44Gw44GG44G+44GP44GE44GP44GT44Go44KS5L+d6Ki844GZ44KL44GT44Go44Gn44Gv44GC44KK44G+44Gb44KTCisgICAgIOOBjCAo44GZ44G544Gm44Gu44OR44OD44OB44Gv5YaF5a6544Go44K544K/44Kk44Or44Gr44Gk44GE44Gm57K+5p+744KS5Y+X44GR44KL44Gu44GnKeOAgQorICAgICDjg6vjg7zjg6vjgavlvpPjgo/jgarjgZHjgozjgbDplpPpgZXjgYTjgarjgY/jgYbjgb7jgY/jgYTjgYvjgarjgYTjgafjgZfjgofjgYbjgIIKKworICAgICDjgZPjga7ku5bjgavjg5Hjg4Pjg4HjgpLkvZzjgovmlrnms5XjgavjgaTjgYTjgabjga7jgojjgY/jgafjgY3jgZ/oqJjov7Djga8tCisKKwkiVGhlIFBlcmZlY3QgUGF0Y2giCisJCWh0dHA6Ly93d3cub3psYWJzLm9yZy9+YWtwbS9zdHVmZi90cHAudHh0CisJIkxpbnV4IGtlcm5lbCBwYXRjaCBzdWJtaXNzaW9uIGZvcm1hdCIKKwkJaHR0cDovL2xpbnV4Lnl5ei51cy9wYXRjaC1mb3JtYXQuaHRtbAorCisgIERvY3VtZW50YXRpb24vc3RhYmxlX2FwaV9ub25zZW5zZS50eHQKKyAgICAg44GT44Gu44OV44Kh44Kk44Or44Gv44Kr44O844ON44Or44Gu5Lit44Gr5LiN5aSJ44GuQVBJ44KS5oyB44Gf44Gq44GE44GT44Go44Gr44GX44Gf5oSP6K2Y55qE44GqCisgICAgIOaxuuaWreOBruiDjOaZr+OBq+OBguOCi+eQhueUseOBq+OBpOOBhOOBpuabuOOBi+OCjOOBpuOBhOOBvuOBmeOAguS7peS4i+OBruOCiOOBhuOBquOBk+OBqOOCkuWQqworICAgICDjgpPjgafjgYTjgb7jgZktCisgICAgICAgLSDjgrXjg5bjgrfjgrnjg4bjg6Djgajjga7plpPjgavlsaTjgpLkvZzjgovjgZPjgago44Kz44Oz44OR44OB44OT44Oq44OG44Kj44Gu44Gf44KBPykKKyAgICAgICAtIOOCquODmuODrOODvOODhuOCo+ODs+OCsOOCt+OCueODhuODoOmWk+OBruODieODqeOCpOODkOOBruenu+akjeaApworICAgICAgIC0g44Kr44O844ON44Or44K944O844K544OE44Oq44O844Gu57Sg5pep44GE5aSJ5pu044KS6YGF44KJ44Gb44KLKOOCguOBl+OBj+OBr+e0oOaXqeOBhOWkieabtAorICAgICAgICAg44KS5aao44GS44KLKQorICAgICDjgZPjga7jg4njgq3jg6Xjg6Hjg7Pjg4jjga8gTGludXgg6ZaL55m644Gu5oCd5oOz44KS55CG6Kej44GZ44KL44Gu44Gr6Z2e5bi444Gr6YeN6KaB44Gn44GZ44CCCisgICAgIOOBneOBl+OBpuOAgeS7luOBrk9T44Gn44Gu6ZaL55m66ICF44GMIExpbnV4IOOBq+enu+OCi+aZguOBq+OBqOOBpuOCgumHjeimgeOBp+OBmeOAggorCisgIERvY3VtZW50YXRpb24vU2VjdXJpdHlCdWdzCisgICAg44KC44GXIExpbnV4IOOCq+ODvOODjeODq+OBp+OCu+OCreODpeODquODhuOCo+WVj+mhjOOCkueZuuimi+OBl+OBn+OCiOOBhuOBq+aAneOBo+OBn+OCieOAgeOBkworICAgIOOBruODieOCreODpeODoeODs+ODiOOBruOCueODhuODg+ODl+OBq+W+k+OBo+OBpuOCq+ODvOODjeODq+mWi+eZuuiAheOBq+mAo+e1oeOBl+OAgeWVj+mhjOino+axuuOCkgorICAgIOaUr+aPtOOBl+OBpuOBj+OBoOOBleOBhOOAggorCisgIERvY3VtZW50YXRpb24vTWFuYWdlbWVudFN0eWxlCisgICAg44GT44Gu44OJ44Kt44Ol44Oh44Oz44OI44GvIExpbnV4IOOCq+ODvOODjeODq+OBruODoeODs+ODhuODiumBlOOBjOOBqeOBhuihjOWLleOBmeOCi+OBi+OAgQorICAgIOW9vOOCieOBruaJi+azleOBruiDjOaZr+OBq+OBguOCi+WFseacieOBleOCjOOBpuOBhOOCi+eyvuelnuOBq+OBpOOBhOOBpuiomOi/sOOBl+OBpuOBhOOBvuOBmeOAguOBkworICAgIOOCjOOBr+OCq+ODvOODjeODq+mWi+eZuuOBruWIneW/g+iAheOBquOCie+8iOOCguOBl+OBj+OBr+OAgeWNmOOBq+iIiOWRs+OBjOOBguOCi+OBoOOBkeOBruS6uuOBp+OCgu+8iQorICAgIOmHjeimgeOBp+OBmeOAguOBquOBnOOBquOCieOBk+OBruODieOCreODpeODoeODs+ODiOOBr+OAgeOCq+ODvOODjeODq+ODoeODs+ODhuODiumBlOOBrueLrOeJueOBqgorICAgIOihjOWLleOBq+OBpOOBhOOBpuOBruWkmuOBj+OBruiqpOino+OChOa3t+S5seOCkuino+a2iOOBmeOCi+OBi+OCieOBp+OBmeOAggorCisgIERvY3VtZW50YXRpb24vc3RhYmxlX2tlcm5lbF9ydWxlcy50eHQKKyAgICDjgZPjga7jg5XjgqHjgqTjg6vjga/jganjga7jgojjgYbjgasgc3RhYmxlIOOCq+ODvOODjeODq+OBruODquODquODvOOCueOBjOihjOOCj+OCjOOCi+OBi+OBruODq+ODvAorICAgIOODq+OBjOiomOi/sOOBleOCjOOBpuOBhOOBvuOBmeOAguOBneOBl+OBpuOBk+OCjOOCieOBruODquODquODvOOCueOBruS4reOBruOBqeOBk+OBi+OBp+WkieabtOOCkuWPlgorICAgIOOCiuWFpeOCjOOBpuOCguOCieOBhOOBn+OBhOWgtOWQiOOBq+S9leOCkuOBmeOCjOOBsOiJr+OBhOOBi+OBjOekuuOBleOCjOOBpuOBhOOBvuOBmeOAggorCisgIERvY3VtZW50YXRpb24va2VybmVsLWRvY3MudHh0CivjgIDjgIDjgqvjg7zjg43jg6vplovnmbrjgavku5jpmo/jgZnjgovlpJbpg6jjg4njgq3jg6Xjg6Hjg7Pjg4jjga7jg6rjgrnjg4jjgafjgZnjgILjgoLjgZfjgYLjgarjgZ/jgYwKKyAgICDmjqLjgZfjgabjgYTjgovjgoLjga7jgYzjgqvjg7zjg43jg6vlhoXjga7jg4njgq3jg6Xjg6Hjg7Pjg4jjgafjgb/jgaTjgYvjgonjgarjgYvjgaPjgZ/loLTlkIjjgIEKKyAgICDjgZPjga7jg6rjgrnjg4jjgpLjgYLjgZ/jgaPjgabjgb/jgabjgY/jgaDjgZXjgYTjgIIKKworICBEb2N1bWVudGF0aW9uL2FwcGx5aW5nLXBhdGNoZXMudHh0CisgICAg44OR44OD44OB44Go44Gv44Gq44Gr44GL44CB44OR44OD44OB44KS44Gp44GG44KE44Gj44Gm5qeY44CF44Gq44Kr44O844ON44Or44Gu6ZaL55m644OW44Op44Oz44OB44GrCisgICAg6YGp55So44GZ44KL44Gu44GL44Gr44Gk44GE44Gm5q2j56K644Gr6KiY6L+w44GX44Gf6Imv44GE5YWl6ZaA5pu444Gn44GZ44CCCisKK+OCq+ODvOODjeODq+OBr+OCveODvOOCueOCs+ODvOODieOBi+OCieiHquWLleeahOOBq+eUn+aIkOWPr+iDveOBquWkmuaVsOOBruODieOCreODpeODoeODs+ODiOOCkuiHquWIhuiHqgor6Lqr44Gn44KC44Gj44Gm44GE44G+44GZ44CC44GT44KM44Gr44Gv44Kr44O844ON44Or5YaFIEFQSSDjga7jgZnjgbnjgabjga7oqJjov7DjgoTjgIHjganjgYbmraPjgZfjgY8KK+ODreODg+OCr+OCkuOBi+OBkeOCi+OBi+OBruimj+WJh+OBjOWQq+OBvuOCjOOBvuOBmeOAguOBk+OBruODieOCreODpeODoeODs+ODiOOBrworRG9jdW1lbnRhdGlvbi9Eb2NCb29rLyDjg4fjgqPjg6zjgq/jg4jjg6rjgavkvZzjgonjgozjgIHku6XkuIvjga7jgojjgYbjgasKKwltYWtlIHBkZmRvY3MKKwltYWtlIHBzZG9jcworCW1ha2UgaHRtbGRvY3MKKwltYWtlIG1hbmRvY3MKK+OCs+ODnuODs+ODieOCkuWun+ihjOOBmeOCi+OBqOODoeOCpOODs+OCq+ODvOODjeODq+OBruOCveODvOOCueODh+OCo+ODrOOCr+ODiOODquOBi+OCiQor44Gd44KM44Ge44KM44CBUERGLCBQb3N0c2NyaXB0LCBIVE1MLCBtYW4gcGFnZSDjga7lvaLlvI/jgafnlJ/miJDjgZXjgozjgb7jgZnjgIIKKwor44Kr44O844ON44Or6ZaL55m66ICF44Gr44Gq44KL44Gr44GvCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor44KC44GX44GC44Gq44Gf44GM44CBTGludXgg44Kr44O844ON44Or6ZaL55m644Gr44Gk44GE44Gm5L2V44KC55+l44KJ44Gq44GE44Gq44KJ44Gw44CBCitLZXJuZWxOZXdiaWVzIOODl+ODreOCuOOCp+OCr+ODiOOCkuimi+OCi+OBueOBjeOBp+OBmQorCWh0dHA6Ly9rZXJuZWxuZXdiaWVzLm9yZworCivjgZPjga7jgrXjgqTjg4jjgavjga/lvbnjgavnq4vjgaTjg6Hjg7zjg6rjg7PjgrDjg6rjgrnjg4jjgYzjgYLjgorjgIHln7rmnKznmoTjgarjgqvjg7zjg43jg6vplovnmbrjgavplqIKK+OBmeOCi+OBu+OBqOOCk+OBqeOBqeOCk+OBqueorumhnuOBruizquWVj+OCguOBp+OBjeOBvuOBmSAo5pei44Gr5Zue562U44GV44KM44Gm44GE44KL44KI44GG44Gq44GT44Go44KSCivogZ7jgY/liY3jgavjgb7jgZrjga/jgqLjg7zjgqvjgqTjg5bjgpLoqr/jgbnjgabjgY/jgaDjgZXjgYQp44CCCivjgb7jgZ/jgZPjgZPjgavjga/jgIHjg6rjgqLjg6vjgr/jgqTjg6Djgafos6rllY/jgpLogZ7jgY/jgZPjgajjgYzjgafjgY3jgosgSVJDIOODgeODo+ODjeODq+OChOOAgUxpbnV4Civjgqvjg7zjg43jg6vjga7plovnmbrjgavplqLjgZfjgablrabjgbbjga7jgavkvr/liKnjgarjgZ/jgY/jgZXjgpPjga7lvbnjgavnq4vjgaTjg4njgq3jg6Xjg6Hjg7Pjg4jjgYzjgYIKK+OCiuOBvuOBmeOAggorCit3ZWIg44K144Kk44OI44Gr44Gv44CB44Kz44O844OJ44Gu5qeL5oiQ44CB44K144OW44K344K544OG44Og44CB54++5Zyo5a2Y5Zyo44GZ44KL44OX44Ot44K444Kn44Kv44OIKOODhAor44Oq44O844Gr44GC44KL44KC44Gu54Sh44GE44KC44Gu44Gu5Lih5pa5KeOBruWfuuacrOeahOOBqueuoeeQhuaDheWgseOBjOOBguOCiuOBvuOBmeOAggor44GT44GT44Gr44Gv44CB44G+44Gf44CB44Kr44O844ON44Or44Gu44Kz44Oz44OR44Kk44Or44Gu44KE44KK5pa544KE44OR44OD44OB44Gu5b2T44Gm5pa544Gq44Gp44Gu6ZaT5o6lCivnmoTjgarln7rmnKzmg4XloLHjgoLoqJjov7DjgZXjgozjgabjgYTjgb7jgZnjgIIKKwor44GC44Gq44Gf44GM44Gp44GT44GL44KJ44K544K/44O844OI44GX44Gm6Imv44GE44GL44KP44GL44KJ44Gq44GE44GM44CBTGludXgg44Kr44O844ON44Or6ZaL55m644Kz44Of44OlCivjg4vjg4bjgqPjgavlj4LliqDjgZfjgabkvZXjgYvjgZnjgovjgZPjgajjgpLjgZXjgYzjgZfjgabjgYTjgovloLTlkIjjgavjga/jgIFMaW51eCBrZXJuZWwKK0phbml0b3IncyDjg5fjg63jgrjjgqfjgq/jg4jjgavjgYTjgZHjgbDoia/jgYTjgafjgZfjgofjgYYgLQorCWh0dHA6Ly9rZXJuZWxuZXdiaWVzLm9yZy9LZXJuZWxKYW5pdG9ycwor44GT44GT44Gv44Gd44Gu44KI44GG44Gq44K544K/44O844OI44KS44GZ44KL44Gu44Gr44GG44Gj44Gm44Gk44GR44Gu5aC05omA44Gn44GZ44CC44GT44GT44Gr44Gv44CBCitMaW51eCDjgqvjg7zjg43jg6vjgr3jg7zjgrnjg4Tjg6rjg7zjga7kuK3jgavlkKvjgb7jgozjgovjgIHjgY3jgozjgYTjgavjgZfjgIHkv67mraPjgZfjgarjgZHjgozjgbDjgaoKK+OCieOBquOBhOOAgeWNmOe0lOOBquWVj+mhjOOBruODquOCueODiOOBjOiomOi/sOOBleOCjOOBpuOBhOOBvuOBmeOAguOBk+OBruODl+ODreOCuOOCp+OCr+ODiOOBq+mWouOCj+OCiwor6ZaL55m66ICF44Go5LiA57eS44Gr5L2c5qWt44GZ44KL44GT44Go44Gn44CB44GC44Gq44Gf44Gu44OR44OD44OB44KSIExpbnV444Kr44O844ON44Or44OE44Oq44O844Gr5YWlCivjgozjgovjgZ/jgoHjga7ln7rnpI7jgpLlrabjgbbjgZPjgajjgYzjgafjgY3jgIHjgZ3jgZfjgabjgoLjgZfjgYLjgarjgZ/jgYzjgb7jgaDjgqLjgqTjg4fjgqPjgqLjgpLmjIHjgaMKK+OBpuOBhOOBquOBhOWgtOWQiOOBq+OBr+OAgeasoeOBq+OChOOCi+S7leS6i+OBruaWueWQkeaAp+OBjOimi+OBiOOBpuOBj+OCi+OBi+OCguOBl+OCjOOBvuOBm+OCk+OAggorCivjgoLjgZfjgYLjgarjgZ/jgYzjgIHjgZnjgafjgavjgbLjgajjgb7jgajjgb7jgorjgrPjg7zjg4njgpLmm7jjgYTjgabjgYTjgabjgIHjgqvjg7zjg43jg6vjg4Tjg6rjg7zjgavlhaUKK+OCjOOBn+OBhOOBqOaAneOBo+OBpuOBhOOBn+OCiuOAgeOBneOCjOOBq+mWouOBmeOCi+mBqeWIh+OBquaUr+aPtOOCkuaxguOCgeOBn+OBhOWgtOWQiOOAgeOCq+ODvOODjeODqwor44Oh44Oz44K/44O844K644OX44Ot44K444Kn44Kv44OI44Gv44Gd44Gu44KI44GG44Gq55qG44GV44KT44KS5Yqp44GR44KL44Gf44KB44Gr44Gn44GN44G+44GX44Gf44CCCivjgZPjgZPjgavjga/jg6Hjg7zjg6rjg7PjgrDjg6rjgrnjg4jjgYzjgYLjgorjgIHku6XkuIvjgYvjgonlj4LnhafjgafjgY3jgb7jgZkKKwlodHRwOi8vc2VsZW5pYy5jb20vbWFpbG1hbi9saXN0aW5mby9rZXJuZWwtbWVudG9ycworCivlrp/pmpvjgasgTGludXgg44Kr44O844ON44Or44Gu44Kz44O844OJ44Gr44Gk44GE44Gm5L+u5q2j44KS5Yqg44GI44KL5YmN44Gr44CB44Gp44GG44KE44Gj44Gm44Gd44GuCivjgrPjg7zjg4njgYzli5XkvZzjgZnjgovjga7jgYvjgpLnkIbop6PjgZnjgovjgZPjgajjgYzlv4XopoHjgafjgZnjgILjgZ3jga7jgZ/jgoHjgavjga/jgIHnibnliKXjgarjg4Tjg7wKK+ODq+OBruWKqeOBkeOCkuWAn+OCiuOBpuOBp+OCguOAgeOBneOCjOOCkuebtOaOpeOCiOOBj+iqreOCgOOBk+OBqOOBjOacgOiJr+OBruaWueazleOBp+OBmSjjgbvjgajjgpPjgakKK+OBruODiOODquODg+OCreODvOOBqumDqOWIhuOBr+WNgeWIhuOBq+OCs+ODoeODs+ODiOOBl+OBpuOBguOCiuOBvuOBmeOBi+OCiSnjgILjgZ3jgYbjgYTjgYbjg4Tjg7zjg6vjgacKK+eJueOBq+OBiuOBmeOBmeOCgeOBquOBruOBr+OAgUxpbnV4IOOCr+ODreOCueODquODleOCoeODrOODs+OCueODl+ODreOCuOOCp+OCr+ODiOOBp+OBmeOAguOBk+OCjOOBr+OAgQor6Ieq5bex5Y+C54Wn5pa55byP44Gn44CB57Si5byV44GM44Gk44GE44GfIHdlYiDlvaLlvI/jgafjgIHjgr3jg7zjgrnjgrPjg7zjg4njgpLlj4LnhafjgZnjgovjgZPjgajjgYwKK+OBp+OBjeOBvuOBmeOAguOBk+OBruacgOaWsOOBrue0oOaZtOOBl+OBhOOCq+ODvOODjeODq+OCs+ODvOODieOBruODquODneOCuOODiOODquOBr+S7peS4i+OBp+imi+OBpOOBi+OCigor44G+44GZLQorCWh0dHA6Ly9seHIubGludXgubm8vK3RyZWVzCisKK+mWi+eZuuODl+ODreOCu+OCuQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTGludXgg44Kr44O844ON44Or44Gu6ZaL55m644OX44Ot44K744K544Gv54++5Zyo5bm+44Gk44GL44Gu55Ww44Gq44KL44Oh44Kk44Oz44Kr44O844ON44Or44CM44OW44Op44OzCivjg4HjgI3jgajlpJrmlbDjga7jgrXjg5bjgrfjgrnjg4bjg6Dmr47jga7jgqvjg7zjg43jg6vjg5bjg6njg7Pjg4HjgYvjgonmp4vmiJDjgZXjgozjgb7jgZnjgIIKK+OBk+OCjOOCieOBruODluODqeODs+ODgeOBqOOBry0KKyAgLSDjg6HjgqTjg7Pjga4gMy54IOOCq+ODvOODjeODq+ODhOODquODvAorICAtIDMueC55IC1zdGFibGUg44Kr44O844ON44Or44OE44Oq44O8CisgIC0gMy54IC1naXQg44Kr44O844ON44Or44OR44OD44OBCisgIC0g44K144OW44K344K544OG44Og5q+O44Gu44Kr44O844ON44Or44OE44Oq44O844Go44OR44OD44OBCisgIC0g57Wx5ZCI44OG44K544OI44Gu44Gf44KB44GuIDMueCAtbmV4dCDjgqvjg7zjg43jg6vjg4Tjg6rjg7wKKworMy54IOOCq+ODvOODjeODq+ODhOODquODvAorLS0tLS0tLS0tLS0tLS0tLS0KKworMy54IOOCq+ODvOODjeODq+OBryBMaW51cyBUb3J2YWxkcyDjgavjgojjgaPjgabjg6Hjg7Pjg4bjg4rjg7PjgrnjgZXjgozjgIFrZXJuZWwub3JnCivjga4gcHViL2xpbnV4L2tlcm5lbC92My54LyDjg4fjgqPjg6zjgq/jg4jjg6rjgavlrZjlnKjjgZfjgb7jgZnjgILjgZPjga7plovnmbrjg5fjg63jgrvjgrnjga8KK+S7peS4i+OBruOBqOOBiuOCii0KKworICAtIOaWsOOBl+OBhOOCq+ODvOODjeODq+OBjOODquODquODvOOCueOBleOCjOOBn+ebtOW+jOOBq+OAgTLpgLHplpPjga7nibnliKXmnJ/plpPjgYzoqK3jgZHjgonjgozjgIEKKyAgICDjgZPjga7mnJ/plpPkuK3jgavjgIHjg6Hjg7Pjg4bjg4rpgZTjga8gTGludXMg44Gr5aSn44GN44Gq5beu5YiG44KS6YCB44KL44GT44Go44GM44Gn44GN44G+44GZ44CCCisgICAg44GT44Gu44KI44GG44Gq5beu5YiG44Gv6YCa5bi4IC1uZXh0IOOCq+ODvOODjeODq+OBq+aVsOmAsemWk+WQq+OBvuOCjOOBpuOBjeOBn+ODkeODg+ODgeOBp+OBmeOAggorICAgIOWkp+OBjeOBquWkieabtOOBryBnaXQo44Kr44O844ON44Or44Gu44K944O844K5566h55CG44OE44O844Or44CB6Kmz57Sw44GvCisgICAgaHR0cDovL2dpdC1zY20uY29tLyDlj4LnhacpIOOCkuS9v+OBo+OBpumAgeOCi+OBruOBjOWlveOBvuOBl+OBhOOChOOCiuaWueOBp+OBmeOBjOOAgeODkeODgworICAgIOODgeODleOCoeOCpOODq+OBruW9ouW8j+OBruOBvuOBvumAgeOCi+OBruOBp+OCguWNgeWIhuOBp+OBmeOAggorCisgIC0gMumAsemWk+W+jOOAgS1yYzEg44Kr44O844ON44Or44GM44Oq44Oq44O844K544GV44KM44CB44GT44Gu5b6M44Gr44Gv44Kr44O844ON44Or5YWo5L2T44Gu5a6J5a6aCisgICAg5oCn44Gr5b2x6Z+/44KS44GC44Gf44GI44KL44KI44GG44Gq5paw5qmf6IO944Gv5ZCr44G+44Gq44GE6aGe44Gu44OR44OD44OB44GX44GL5Y+W44KK6L6844KA44GT44GoCisgICAg44Gv44Gn44GN44G+44Gb44KT44CC5paw44GX44GE44OJ44Op44Kk44OQKOOCguOBl+OBj+OBr+ODleOCoeOCpOODq+OCt+OCueODhuODoCnjga7jg5Hjg4Pjg4Hjga8KKyAgICAtcmMxIOOBruW+jOOBp+WPl+OBkeS7mOOBkeOCieOCjOOCi+OBk+OBqOOCguOBguOCi+OBk+OBqOOCkuimmuOBiOOBpuOBiuOBhOOBpuOBj+OBoOOBleOBhOOAguOBqgorICAgIOOBnOOBquOCieOAgeWkieabtOOBjOeLrOeri+OBl+OBpuOBhOOBpuOAgei/veWKoOOBleOCjOOBn+OCs+ODvOODieOBruWkluOBrumgmOWfn+OBq+W9semfv+OCkuS4juOBiAorICAgIOOBquOBhOmZkOOCiuOAgemAgOihjOOBruODquOCueOCr+OBr+eEoeOBhOOBi+OCieOBp+OBmeOAgi1yYzEg44GM44Oq44Oq44O844K544GV44KM44Gf5b6M44CBCisgICAgTGludXMg44G444OR44OD44OB44KS6YCB5LuY44GZ44KL44Gu44GrIGdpdCDjgpLkvb/jgYbjgZPjgajjgoLjgafjgY3jgb7jgZnjgYzjgIHjg5Hjg4Pjg4Hjga8KKyAgICDjg6zjg5Pjg6Xjg7zjga7jgZ/jgoHjgavjgIHjg5Hjg5bjg6rjg4Pjgq/jgarjg6Hjg7zjg6rjg7PjgrDjg6rjgrnjg4jjgbjjgoLlkIzmmYLjgavpgIHjgovlv4XopoHjgYwKKyAgICDjgYLjgorjgb7jgZnjgIIKKworICAtIOaWsOOBl+OBhCAtcmMg44GvIExpbnVzIOOBjOOAgeacgOaWsOOBriBnaXQg44OE44Oq44O844GM44OG44K544OI55uu55qE44Gn44GC44KM44Gw5Y2B5YiGCisgICAg44Gr5a6J5a6a44GX44Gf54q25oWL44Gr44GC44KL44Go5Yik5pat44GX44Gf44Go44GN44Gr44Oq44Oq44O844K544GV44KM44G+44GZ44CC55uu5qiZ44Gv5q+O6YCx5pawCisgICAg44GX44GEIC1yYyDjgqvjg7zjg43jg6vjgpLjg6rjg6rjg7zjgrnjgZnjgovjgZPjgajjgafjgZnjgIIKKworICAtIOOBk+OBruODl+ODreOCu+OCueOBr+OCq+ODvOODjeODq+OBjCDjgIzmupblgpnjgYzjgafjgY3jgZ/jgI3jgajogIPjgYjjgonjgozjgovjgb7jgafntpnntprjgZfjgb4KKyAgICDjgZnjgILjgZPjga7jg5fjg63jgrvjgrnjga/jgaDjgYTjgZ/jgYQgNumAsemWk+e2mee2muOBl+OBvuOBmeOAggorCisgIC0g5ZCE44Oq44Oq44O844K544Gn44Gu5pei55+l44Gu5b6M5oi744KK5ZWP6aGMKHJlZ3Jlc3Npb246IOOBk+OBruODquODquODvOOCueOBruS4reOBp+aWsOimjworICAgIOOBq+S9nOOCiui+vOOBvuOCjOOBn+WVj+mhjOOCkuaMh+OBmSkg44Gv44Gd44Gu6YO95bqmIExpbnV4LWtlcm5lbCDjg6Hjg7zjg6rjg7PjgrDjg6rjgrnjg4gKKyAgICDjgavmipXnqL/jgZXjgozjgb7jgZnjgILjgrTjg7zjg6vjgajjgZfjgabjga/jgIHjgqvjg7zjg43jg6vjgYwg44CM5rqW5YKZ44GM44Gn44GN44Gf44CN44Go5a6j6KiACisgICAg44GZ44KL5YmN44Gr44GT44Gu44Oq44K544OI44Gu6ZW344GV44KS44K844Ot44Gr5rib44KJ44GZ44GT44Go44Gn44GZ44GM44CB54++5a6f44Gr44Gv44CB5pWw5YCL44GuCisgICAg5b6M5oi744KK5ZWP6aGM44GM44Oq44Oq44O844K55pmC44Gr44Gf44Gz44Gf44Gz5q6L44Gj44Gm44GX44G+44GE44G+44GZ44CCCisKK0FuZHJldyBNb3J0b24g44GMIExpbnV4LWtlcm5lbCDjg6Hjg7zjg6rjg7PjgrDjg6rjgrnjg4jjgavjgqvjg7zjg43jg6vjg6rjg6rjg7zjgrnjgavjgaTjgYQKK+OBpuabuOOBhOOBn+OBk+OBqOOCkuOBk+OBk+OBp+iogOOBo+OBpuOBiuOBj+OBk+OBqOOBr+S+oeWApOOBjOOBguOCiuOBvuOBmS0KKyAg44CM44Kr44O844ON44Or44GM44GE44Gk44Oq44Oq44O844K544GV44KM44KL44GL44Gv6Kqw44KC55+l44KK44G+44Gb44KT44CC44Gq44Gc44Gq44KJ44CB44GT44KM44Gv54++CisgIOWun+OBq+iqjeitmOOBleOCjOOBn+ODkOOCsOOBrueKtuazgeOBq+OCiOOCiuODquODquODvOOCueOBleOCjOOCi+OBruOBp+OBguOCiuOAgeWJjeOCguOBo+OBpuaxuuOCgeOCiQorICDjgozjgZ/oqIjnlLvjgavjgojjgaPjgabjg6rjg6rjg7zjgrnjgZXjgozjgovjgoLjga7jgafjga/jgarjgYTjgYvjgonjgafjgZnjgILjgI0KKworMy54LnkgLXN0YWJsZSDjgqvjg7zjg43jg6vjg4Tjg6rjg7wKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCivjg5Djg7zjgrjjg6fjg7Pnlarlj7fjgYwz44Gk44Gu5pWw5a2X44Gr5YiG44GL44KM44Gm44GE44KL44Kr44O844ON44Or44GvIC1zdGFibGUg44Kr44O844ON44Or44Gn44GZ44CCCivjgZPjgozjgavjga/jgIEzLngg44Kr44O844ON44Or44Gn6KaL44Gk44GL44Gj44Gf44K744Kt44Ol44Oq44OG44Kj5ZWP6aGM44KE6YeN5aSn44Gq5b6M5oi744KK44Gr5a++CivjgZnjgovmr5TovIPnmoTlsI/jgZXjgYTph43opoHjgarkv67mraPjgYzlkKvjgb7jgozjgb7jgZnjgIIKKwor44GT44KM44Gv44CB6ZaL55m6L+Wun+mok+eahOODkOODvOOCuOODp+ODs+OBruODhuOCueODiOOBq+WNlOWKm+OBmeOCi+OBk+OBqOOBq+iIiOWRs+OBjOeEoeOBj+OAgQor5pyA5paw44Gu5a6J5a6a44GX44Gf44Kr44O844ON44Or44KS5L2/44GE44Gf44GE44Om44O844K244Gr5o6o5aWo44GZ44KL44OW44Op44Oz44OB44Gn44GZ44CCCisKK+OCguOBl+OAgTMueC55IOOCq+ODvOODjeODq+OBjOWtmOWcqOOBl+OBquOBhOWgtOWQiOOBq+OBr+OAgeeVquWPt+OBjOS4gOeVquWkp+OBjeOBhCAzLngg44GMCivmnIDmlrDjga7lronlrprniYjjgqvjg7zjg43jg6vjgafjgZnjgIIKKworMy54Lnkg44GvICJzdGFibGUiIOODgeODvOODoCA8c3RhYmxlQHZnZXIua2VybmVsLm9yZz4g44Gn44Oh44Oz44OG44GV44KM44Gm44GK44KK44CB5b+FCivopoHjgavlv5zjgZjjgabjg6rjg6rjg7zjgrnjgZXjgozjgb7jgZnjgILpgJrluLjjga7jg6rjg6rjg7zjgrnmnJ/plpPjga8gMumAsemWk+avjuOBp+OBmeOBjOOAgeW3ruOBl+i/q+OBowor44Gf5ZWP6aGM44GM44Gq44GR44KM44Gw44KC44GG5bCR44GX6ZW344GP44Gq44KL44GT44Go44KC44GC44KK44G+44GZ44CC44K744Kt44Ol44Oq44OG44Kj6Zai6YCj44Gu5ZWP6aGMCivjga7loLTlkIjjga/jgZPjgozjgavlr77jgZfjgabjgaDjgYTjgZ/jgYTjga7loLTlkIjjgIHjgZnjgZDjgavjg6rjg6rjg7zjgrnjgYzjgZXjgozjgb7jgZnjgIIKKwor44Kr44O844ON44Or44OE44Oq44O844Gr5YWl44Gj44Gm44GE44KL44CBRG9jdW1lbnRhdGlvbi9zdGFibGVfa2VybmVsX3J1bGVzLnR4dCDjg5XjgqEKK+OCpOODq+OBq+OBr+OBqeOBruOCiOOBhuOBqueorumhnuOBruWkieabtOOBjCAtc3RhYmxlIOODhOODquODvOOBq+WPl+OBkeWFpeOCjOWPr+iDveOBi+OAgeOBvuOBn+ODqgor44Oq44O844K544OX44Ot44K744K544GM44Gp44GG5YuV44GP44GL44GM6KiY6L+w44GV44KM44Gm44GE44G+44GZ44CCCisKKzMueCAtZ2l0IOODkeODg+ODgQorLS0tLS0tLS0tLS0tLS0tLS0tCisKK2dpdCDjg6rjg53jgrjjg4jjg6rjgafnrqHnkIbjgZXjgozjgabjgYTjgotMaW51cyDjga7jgqvjg7zjg43jg6vjg4Tjg6rjg7zjga7mr47ml6Xjga7jgrnjg4rjg4Pjg5cKK+OCt+ODp+ODg+ODiOOBjOOBguOCiuOBvuOBmeOAgijjgaDjgYvjgokgLWdpdCDjgajjgYTjgYblkI3liY3jgYzjgaTjgYTjgabjgYTjgb7jgZkp44CC44GT44KM44KJ44Gu44OR44ODCivjg4Hjga/jgYrjgYrjgoDjga3mr47ml6Xjg6rjg6rjg7zjgrnjgZXjgozjgabjgYrjgorjgIFMaW51cyDjga7jg4Tjg6rjg7zjga7nj77nirbjgpLooajjgZfjgb7jgZnjgILjgZMKK+OCjOOBryAtcmMg44Kr44O844ON44Or44Go5q+U44G544Gm44CB44OR44OD44OB44GM5aSn5LiI5aSr44GL44Gp44GG44GL44KC56K66KqN44GX44Gq44GE44Gn6Ieq5YuV55qECivjgavnlJ/miJDjgZXjgozjgovjga7jgafjgIHjgojjgorlrp/pqJPnmoTjgafjgZnjgIIKKwor44K144OW44K344K544OG44Og5q+O44Gu44Kr44O844ON44Or44OE44Oq44O844Go44OR44OD44OBCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK+OBneOCjOOBnuOCjOOBruOCq+ODvOODjeODq+OCteODluOCt+OCueODhuODoOOBruODoeODs+ODhuODiumBlOOBryAtLS0g44Gd44GX44Gm5aSa44GP44Gu44Kr44O844ON44OrCivjgrXjg5bjgrfjgrnjg4bjg6Djga7plovnmbrogIXpgZTjgoIgLS0tIOWQhOiHquOBruacgOaWsOOBrumWi+eZuueKtuazgeOCkuOCveODvOOCueODquODneOCuOODiOODquOBqwor5YWs6ZaL44GX44Gm44GE44G+44GZ44CC44Gd44Gu44Gf44KB44CB6Ieq5YiG44Go44Gv55Ww44Gq44KL6aCY5Z+f44Gu44Kr44O844ON44Or44Gn5L2V44GM6LW344GN44Gm44GE44KLCivjgYvjgpLku5bjga7kurrjgYzopovjgonjgozjgovjgojjgYbjgavjgarjgaPjgabjgYTjgb7jgZnjgILplovnmbrjgYzml6njgY/pgLLjgpPjgafjgYTjgovpoJjln5/jgafjga/jgIEKK+mWi+eZuuiAheOBr+iHqui6q+OBruaKleeov+OBjOOBqeOBruOCteODluOCt+OCueODhuODoOOCq+ODvOODjeODq+ODhOODquODvOOCkuWFg+OBq+OBl+OBpuOBhOOCi+OBi+izquWVjwor44GV44KM44KL44Gu44Gn44CB44Gd44Gu5oqV56i/44Go44GZ44Gn44Gr6YCy6KGM5Lit44Gu5LuW44Gu5L2c5qWt44Go44Gu6KGd56qB44GM6YG/44GR44KJ44KM44G+44GZ44CCCisKK+Wkp+mDqOWIhuOBruOBk+OCjOOCieOBruODquODneOCuOODiOODquOBryBnaXQg44OE44Oq44O844Gn44GZ44CC44GX44GL44GX44Gd44Gu5LuW44GuIFNDTSDjgoQKK3F1aWx0IOOCt+ODquODvOOCuuOBqOOBl+OBpuWFrOmWi+OBleOCjOOBpuOBhOOCi+ODkeODg+ODgeOCreODpeODvOOCguS9v+OCj+OCjOOBpuOBhOOBvuOBmeOAguOBk+OCjOOCiQor44Gu44K144OW44K344K544OG44Og44Oq44Od44K444OI44Oq44Gu44Ki44OJ44Os44K544GvIE1BSU5UQUlORVJTIOODleOCoeOCpOODq+OBq+ODquOCueODiOOBleOCjAor44Gm44GE44G+44GZ44CC44GT44KM44KJ44Gu5aSa44GP44GvIGh0dHA6Ly9naXQua2VybmVsLm9yZy8g44Gn5Y+C54Wn44GZ44KL44GT44Go44GM44Gn44GN44G+CivjgZnjgIIKKwor5o+Q5qGI44GV44KM44Gf44OR44OD44OB44GM44GT44Gu44KI44GG44Gq44K144OW44K344K544OG44Og44OE44Oq44O844Gr44Kz44Of44OD44OI44GV44KM44KL5YmN44Gr44CB44Oh44O8Civjg6rjg7PjgrDjg6rjgrnjg4jjgafkuovliY3jgavjg6zjg5Pjg6Xjg7zjgavjgYvjgZHjgonjgozjgb7jgZnvvIjku6XkuIvjga7lr77lv5zjgZnjgovjgrvjgq/jgrfjg6fjg7PjgpIKK+WPgueFp++8ieOAguOBhOOBj+OBpOOBi+OBruOCq+ODvOODjeODq+OCteODluOCt+OCueODhuODoOOBp+OBr+OAgeOBk+OBruODrOODk+ODpeODvOOBryBwYXRjaHdvcmsKK+OBqOOBhOOBhuODhOODvOODq+OBq+OCiOOBo+OBpui/vei3oeOBleOCjOOBvuOBmeOAglBhdGNod29yayDjga8gd2ViIOOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBqwor44KI44Gj44Gm44OR44OD44OB5oqV56i/44Gu6KGo56S644CB44OR44OD44OB44G444Gu44Kz44Oh44Oz44OI5LuY44GR44KE5pS56KiC44Gq44Gp44GM44Gn44GN44CB44Gd44GX44GmCivjg6Hjg7Pjg4bjg4rjga/jg5Hjg4Pjg4Hjgavlr77jgZfjgabjgIHjg6zjg5Pjg6Xjg7zkuK3jgIHlj5fku5jmuIjjgb/jgIHmi5LlkKbjgajjgYTjgYbjgojjgYbjgarjg57jg7zjgq8KK+OCkuOBpOOBkeOCi+OBk+OBqOOBjOOBp+OBjeOBvuOBmeOAguWkp+mDqOWIhuOBruOBk+OCjOOCieOBriBwYXRjaHdvcmsg44Gu44K144Kk44OI44GvCitodHRwOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvIOOBp+ODquOCueODiOOBleOCjOOBpuOBhOOBvuOBmeOAggorCivntbHlkIjjg4bjgrnjg4jjga7jgZ/jgoHjga4gMy54IC1uZXh0IOOCq+ODvOODjeODq+ODhOODquODvAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK+OCteODluOCt+OCueODhuODoOODhOODquODvOOBruabtOaWsOWGheWuueOBjOODoeOCpOODs+ODqeOCpOODs+OBriAzLngg44OE44Oq44O844Gr44Oe44O844K444GV44KMCivjgovliY3jgavjgIHjgZ3jgozjgonjga/ntbHlkIjjg4bjgrnjg4jjgZXjgozjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgILjgZPjga7nm67nmoTjga7jgZ/jgoHjgIHlrp/os6rnmoQKK+OBq+WFqOOCteODluOCt+OCueODhuODoOODhOODquODvOOBi+OCieOBu+OBvOavjuaXpeODl+ODq+OBleOCjOOBpuOBp+OBjeOCi+eJueWIpeOBquODhuOCueODiOeUqOOBruODqgor44Od44K444OI44Oq44GM5a2Y5Zyo44GX44G+44GZLQorICAgICAgIGh0dHA6Ly9naXQua2VybmVsLm9yZy8/cD1saW51eC9rZXJuZWwvZ2l0L25leHQvbGludXgtbmV4dC5naXQKKyAgICAgICBodHRwOi8vbGludXguZi1zZWlkZWwuZGUvbGludXgtbmV4dC9wbXdpa2kvCisKK+OBk+OBruOChOOCiuaWueOBq+OCiOOBo+OBpuOAgS1uZXh0IOOCq+ODvOODjeODq+OBr+asoeOBruODnuODvOOCuOapn+S8muOBp+OBqeOCk+OBquOCguOBruOBjOODoeOCpOODswor44Op44Kk44Oz44Kr44O844ON44Or44Gr44Oe44O844K444GV44KM44KL44GL44CB44GK44GK44G+44GL44Gq44Gu5bGV5pyb44KS5o+Q5L6b44GX44G+44GZ44CCLW5leHQgCivjgqvjg7zjg43jg6vjga7lrp/ooYzjg4bjgrnjg4jjgpLooYzjgYblhpLpmbrlpb3jgY3jgarjg4bjgrnjgr/jg7zjga/lpKfjgYTjgavmrZPov47jgZXjgozjgb7jgZkKKwor44OQ44Kw44Os44Od44O844OICistLS0tLS0tLS0tLS0tCisKK2J1Z3ppbGxhLmtlcm5lbC5vcmcg44GvIExpbnV4IOOCq+ODvOODjeODq+mWi+eZuuiAheOBjOOCq+ODvOODjeODq+OBruODkOOCsOOCkui/vei3oeOBmeOCiwor5aC05omA44Gn44GZ44CC44Om44O844K244Gv6KaL44Gk44GR44Gf44OQ44Kw44Gu5YWo44Gm44KS44GT44Gu44OE44O844Or44Gn5aCx5ZGK44GZ44G544GN44Gn44GZ44CCCivjganjgYYga2VybmVsIGJ1Z3ppbGxhIOOCkuS9v+OBhuOBi+OBruips+e0sOOBr+OAgeS7peS4i+OCkuWPgueFp+OBl+OBpuOBj+OBoOOBleOBhC0KKwlodHRwOi8vYnVnemlsbGEua2VybmVsLm9yZy9wYWdlLmNnaT9pZD1mYXEuaHRtbAor44Oh44Kk44Oz44Kr44O844ON44Or44K944O844K544OH44Kj44Os44Kv44OI44Oq44Gr44GC44KL44OV44Kh44Kk44OrIFJFUE9SVElORy1CVUdTIOOBr+OCq+ODvOODjQor44Or44OQ44Kw44KJ44GX44GE44KC44Gu44Gr44Gk44GE44Gm44Gp44GG44Os44Od44O844OI44GZ44KL44GL44Gu6Imv44GE44OG44Oz44OX44Os44O844OI44Gn44GC44KK44CB5ZWPCivpoYzjga7ov73ot6HjgpLliqnjgZHjgovjgZ/jgoHjgavjgqvjg7zjg43jg6vplovnmbrogIXjgavjgajjgaPjgabjganjgpPjgarmg4XloLHjgYzlv4XopoHjgarjga7jgYvjga7oqbMKK+e0sOOBjOabuOOBi+OCjOOBpuOBhOOBvuOBmeOAggorCivjg5DjgrDjg6zjg53jg7zjg4jjga7nrqHnkIYKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKwor44GC44Gq44Gf44Gu44OP44OD44Kt44Oz44Kw44Gu44K544Kt44Or44KS6KiT57e044GZ44KL5pyA6auY44Gu5pa55rOV44Gu44Gy44Go44Gk44Gr44CB5LuW5Lq644GM44Os44Od44O8Civjg4jjgZfjgZ/jg5DjgrDjgpLkv67mraPjgZnjgovjgZPjgajjgYzjgYLjgorjgb7jgZnjgILjgYLjgarjgZ/jgYzjgqvjg7zjg43jg6vjgpLjgojjgorlronlrprljJbjgZXjgZvjgosKK+OBk+OBq+WvhOS4juOBmeOCi+OBqOOBhOOBhuOBk+OBqOOBoOOBkeOBp+OBquOBj+OAgeOBguOBquOBn+OBryDnj77lrp/jga7llY/poYzjgpLkv67mraPjgZnjgovjgZPjgajjgpIKK+WtpuOBs+OAgeiHquWIhuOBruOCueOCreODq+OCguW8t+WMluOBp+OBjeOAgeOBvuOBn+S7luOBrumWi+eZuuiAheOBjOOBguOBquOBn+OBruWtmOWcqOOBq+awl+OBjOOBpOOBjQor44G+44GZ44CC44OQ44Kw44KS5L+u5q2j44GZ44KL44GT44Go44Gv44CB5aSa44GP44Gu6ZaL55m66ICF44Gu5Lit44GL44KJ6Ieq5YiG44GM5Yqf57i+44KS44GC44GS44KL5pyA5ZaECivjga7pgZPjgafjgZnjgIHjgarjgZzjgarjgonlpJrjgY/jga7kurrjga/ku5bkurrjga7jg5DjgrDjga7kv67mraPjgavmmYLplpPjgpLmtarosrvjgZnjgovjgZPjgajjgpLlpb3jgb4KK+OBquOBhOOBi+OCieOBp+OBmeOAggorCivjgZnjgafjgavjg6zjg53jg7zjg4jjgZXjgozjgZ/jg5DjgrDjga7jgZ/jgoHjgavku5XkuovjgpLjgZnjgovjgZ/jgoHjgavjga/jgIEKK2h0dHA6Ly9idWd6aWxsYS5rZXJuZWwub3JnIOOBq+ihjOOBo+OBpuOBj+OBoOOBleOBhOOAguOCguOBl+S7iuW+jOOBruODkOOCsOODrOODneODvOODiOOBqwor44Gk44GE44Gm44Ki44OJ44OQ44Kk44K544KS5Y+X44GR44Gf44GE44Gu44Gn44GC44KM44Gw44CBYnVnbWUtbmV3IOODoeODvOODquODs+OCsOODquOCueODiCjmlrDjgZcKK+OBhOODkOOCsOODrOODneODvOODiOOBoOOBkeOBjOOBk+OBk+OBq+ODoeODvOODq+OBleOCjOOCiykg44G+44Gf44GvIGJ1Z21lLWphbml0b3Ig44Oh44O844Oq44OzCivjgrDjg6rjgrnjg4goYnVnemlsbGEg44Gu5aSJ5pu05q+O44Gr44GT44GT44Gr44Oh44O844Or44GV44KM44KLKeOCkuizvOiqreOBp+OBjeOBvuOBmeOAggorCisJaHR0cDovL2xpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vYnVnbWUtbmV3CisJaHR0cDovL2xpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vYnVnbWUtamFuaXRvcnMKKwor44Oh44O844Oq44Oz44Kw44Oq44K544OICistLS0tLS0tLS0tLS0tCisKK+S4iuOBruOBhOOBj+OBpOOBi+OBruODieOCreODpeODoeODs+ODiOOBp+i/sOOBueOBpuOBhOOBvuOBmeOBjOOAgeOCs+OCouOCq+ODvOODjeODq+mWi+eZuuiAheOBruWkp+mDqOWIhgor44GvIExpbnV4IGtlcm5lbCDjg6Hjg7zjg6rjg7PjgrDjg6rjgrnjg4jjgavlj4LliqDjgZfjgabjgYTjgb7jgZnjgILjgZPjga7jg6rjgrnjg4jjga7nmbvpjLIv6ISxCivpgIDjga7mlrnms5XjgavjgaTjgYTjgabjga/ku6XkuIvjgpLlj4LnhafjgZfjgabjgY/jgaDjgZXjgYQtCisJaHR0cDovL3ZnZXIua2VybmVsLm9yZy92Z2VyLWxpc3RzLmh0bWwjbGludXgta2VybmVsCisKK+OBk+OBruODoeODvOODquODs+OCsOODquOCueODiOOBruOCouODvOOCq+OCpOODluOBryB3ZWIg5LiK44Gu5aSa5pWw44Gu5aC05omA44Gr5a2Y5Zyo44GX44G+44GZ44CC44GTCivjgozjgonjga7jgqLjg7zjgqvjgqTjg5bjgpLmjqLjgZnjgavjga/jgrXjg7zjg4Hjgqjjg7Pjgrjjg7PjgpLkvb/jgYTjgb7jgZfjgofjgYbjgILkvovjgYjjgbAtCisJaHR0cDovL2Rpci5nbWFuZS5vcmcvZ21hbmUubGludXgua2VybmVsCisKK+ODquOCueODiOOBq+aKleeov+OBmeOCi+WJjeOBq+OBmeOBp+OBq+OBneOBruipsemhjOOBjOOCouODvOOCq+OCpOODluOBq+WtmOWcqOOBmeOCi+OBi+OBqeOBhuOBi+OCkuaknOe0ogor44GZ44KL44GT44Go44KS5piv6Z2e44KE44Gj44Gm44GP44Gg44GV44GE44CC5aSa5pWw44Gu5LqL44GM44GZ44Gn44Gr6Kmz57Sw44Gr5rih44Gj44Gm6K2w6KuW44GV44KM44GmCivjgYrjgorjgIHjgqLjg7zjgqvjgqTjg5bjgavjga7jgb/oqJjpjLLjgZXjgozjgabjgYTjgb7jgZnjgIIKKwor5aSn6YOo5YiG44Gu44Kr44O844ON44Or44K144OW44K344K544OG44Og44KC6Ieq5YiG44Gu5YCL5Yil44Gu6ZaL55m644KS5a6f5pa944GZ44KL44Oh44O844Oq44Oz44Kw44Oq44K5Civjg4jjgpLmjIHjgaPjgabjgYTjgb7jgZnjgILlgIvjgIXjga7jgrDjg6vjg7zjg5fjgYzjganjgpPjgarjg6rjgrnjg4jjgpLmjIHjgaPjgabjgYTjgovjgYvjga/jgIEKK01BSU5UQUlORVJTIOODleOCoeOCpOODq+OBq+ODquOCueODiOOBjOOBguOCiuOBvuOBmeOBruOBp+WPgueFp+OBl+OBpuOBj+OBoOOBleOBhOOAggorCivlpJrjgY/jga7jg6rjgrnjg4jjga8ga2VybmVsLm9yZyDjgafjg5vjgrnjg4jjgZXjgozjgabjgYTjgb7jgZnjgILjgZPjgozjgonjga7mg4XloLHjga/ku6XkuIvjgavjgYIKK+OCiuOBvuOBmS0KKwlodHRwOi8vdmdlci5rZXJuZWwub3JnL3ZnZXItbGlzdHMuaHRtbAorCivjg6Hjg7zjg6rjg7PjgrDjg6rjgrnjg4jjgpLkvb/jgYbloLTlkIjjgIHoia/jgYTooYzli5Xnv5LmhaPjgavlvpPjgYbjgojjgYbjgavjgZfjgb7jgZfjgofjgYbjgIIKK+WwkeOBl+WuieOBo+OBveOBhOOBjOOAgeS7peS4i+OBriBVUkwg44Gv5LiK44Gu44Oq44K544OIKOOChOS7luOBruODquOCueODiCnjgafkvJroqbHjgZnjgovloLTlkIjjga4KK+OCt+ODs+ODl+ODq+OBquOCrOOCpOODieODqeOCpOODs+OCkuekuuOBl+OBpuOBhOOBvuOBmS0KKwlodHRwOi8vd3d3LmFsYmlvbi5jb20vbmV0aXF1ZXR0ZS8KKwor44KC44GX6KSH5pWw44Gu5Lq644GM44GC44Gq44Gf44Gu44Oh44O844Or44Gr6L+U5LqL44KS44GX44Gf5aC05ZCI44CBQ0M6IOOBp+WPl+OBkeOCi+S6uuOBruODquOCueODiOOBrwor44Gg44GE44G25aSa44GP44Gq44KL44Gn44GX44KH44GG44CC6Imv44GE55CG55Sx44GM44Gq44GE5aC05ZCI44CBQ0M6IOODquOCueODiOOBi+OCieiqsOOBi+OCkuWJiumZpOOCkgor44GX44Gq44GE44KI44GG44Gr44CB44G+44Gf44CB44Oh44O844Oq44Oz44Kw44Oq44K544OI44Gu44Ki44OJ44Os44K544Gg44GR44Gr44Oq44OX44Op44Kk44GZ44KL44GT44Go44GuCivjgarjgYTjgojjgYbjgavjgZfjgb7jgZfjgofjgYbjgIIx44Gk44Gv6YCB5L+h6ICF44GL44KJ44CB44KC44GGMeOBpOOBr+ODquOCueODiOOBi+OCieOBruOCiOOBhuOBq+OAgeODoeODvAor44Or44KSMuWbnuWPl+OBkeOCi+OBk+OBqOOBq+OBquOBo+OBpuOCguOBneOCjOOBq+aFo+OCjOOAgeOBl+OCg+OCjOOBn+ODoeODvOODq+ODmOODg+ODgOODvOOCkui/veWKoOOBlwor44Gm44GT44Gu54q25oWL44KS5aSJ44GI44KI44GG44Go44GX44Gq44GE44KI44GG44Gr44CC5Lq644CF44Gv44Gd44Gu44KI44GG44Gq44GT44Go44Gv5aW944G/44G+44Gb44KT44CCCisKK+S7iuOBvuOBp+OBruODoeODvOODq+OBp+OBruOChOOCiuOBqOOCiuOBqOOBneOBrumWk+OBruOBguOBquOBn+OBrueZuuiogOOBr+OBneOBruOBvuOBvuaui+OBl+OAgQorIkpvaG4gS2VybmxlaGFja2VyIHdyb3RlIC4uLjoiIOOBruihjOOCkuOBguOBquOBn+OBruODquODl+ODqeOCpOOBruWFiOmgreihjOOBq+OBl+OBpuOAgQor44Oh44O844Or44Gu5YWI6aCt44Gn44Gq44GP44CB5ZCE5byV55So6KGM44Gu6ZaT44Gr44GC44Gq44Gf44Gu6KiA44GE44Gf44GE44GT44Go44KS6L+95Yqg44GZ44KL44G544GN44GnCivjgZnjgIIKKwor44KC44GX44OR44OD44OB44KS44Oh44O844Or44Gr5LuY44GR44KL5aC05ZCI44Gv44CBRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nUGF0Y2hlcyDjgavmj5AKK+ekuuOBleOCjOOBpuOBhOOCi+OCiOOBhuOBq+OAgeOBneOCjOOBryDjg5fjg6zjg7zjg7Pjgarlj6/oqq3jg4bjgq3jgrnjg4jjgavjgZnjgovjgZPjgajjgpLlv5jjgozjgarjgYQKK+OCiOOBhuOBq+OBl+OBvuOBl+OCh+OBhuOAguOCq+ODvOODjeODq+mWi+eZuuiAheOBryDmt7vku5jjgoTlnKfnuK7jgZfjgZ/jg5Hjg4Pjg4HjgpLmibHjgYTjgZ/jgYzjgorjgb4KK+OBm+OCky0KK+W9vOOCieOBr+OBguOBquOBn+OBruODkeODg+ODgeOBruihjOavjuOBq+OCs+ODoeODs+ODiOOCkuWFpeOCjOOBn+OBhOOBruOBp+OAgeOBneOBruOBn+OCgeOBq+OBr+OBneOBhuOBmQor44KL44GX44GL44GC44KK44G+44Gb44KT44CC44GC44Gq44Gf44Gu44Oh44O844Or44OX44Ot44Kw44Op44Og44GM56m655m944KE44K/44OW44KS5Zyn57iu44GX44Gq44GE44KI44GGCivjgavnorroqo3jgZfjgZ/mlrnjgYzoia/jgYTjgafjgZnjgILmnIDliJ3jga7oia/jgYTjg4bjgrnjg4jjgajjgZfjgabjga/jgIHoh6rliIbjgavjg6Hjg7zjg6vjgpLpgIHjgaPjgaYKK+OBv+OBpuOAgeOBneOBruODkeODg+ODgeOCkuiHquWIhuOBp+W9k+OBpuOBpuOBv+OCi+OBk+OBqOOBp+OBmeOAguOCguOBl+OBneOCjOOBjOOBhuOBvuOBj+ihjOOBi+OBquOBhOOBqgor44KJ44CB44GC44Gq44Gf44Gu44Oh44O844Or44OX44Ot44Kw44Op44Og44KS55u044GX44Gm44KC44KJ44GG44GL44CB5q2j44GX44GP5YuV44GP44KI44GG44Gr5aSJ44GI44KL44G5CivjgY3jgafjgZnjgIIKKwor44Go44KK44KP44GR44CB5LuW44Gu55m76Yyy6ICF44Gr5a++44GZ44KL5bCK5pWs44KS6KGo44GZ44KI44GG44Gr44GZ44KL44GT44Go44KS6Kaa44GI44Gm44GK44GE44Gm44GP44GgCivjgZXjgYTjgIIKKwor44Kz44Of44Ol44OL44OG44Kj44Go5YWx44Gr5YON44GP44GT44GoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCivjgqvjg7zjg43jg6vjgrPjg5/jg6Xjg4vjg4bjgqPjga7jgrTjg7zjg6vjga/lj6/og73jgarjgYvjgY7jgormnIDpq5jjga7jgqvjg7zjg43jg6vjgpLmj5DkvpvjgZnjgovjgZPjgagKK+OBp+OBmeOAguOBguOBquOBn+OBjOODkeODg+ODgeOCkuWPl+OBkeWFpeOCjOOBpuOCguOCieOBhuOBn+OCgeOBq+aKleeov+OBl+OBn+WgtOWQiOOAgeOBneOCjOOBr+OAgeaKgOihkwor55qE44Oh44Oq44OD44OI44Gg44GR44GM44Os44OT44Ol44O844GV44KM44G+44GZ44CC44Gd44Gu6Zqb44CB44GC44Gq44Gf44Gv5L2V44KS5LqI5oOz44GZ44G544GN44Gn44GX44KHCivjgYbjgYs/CisgIC0g5om55YikCisgIC0g44Kz44Oh44Oz44OICisgIC0g5aSJ5pu044Gu6KaB5rGCCisgIC0g44OR44OD44OB44Gu5q2j5b2T5oCn44Gu6Ki85piO6KaB5rGCCisgIC0g5rKI6buZCisKK+aAneOBhOWHuuOBl+OBpuOBj+OBoOOBleOBhOOAgeOBk+OBk+OBr+OBguOBquOBn+OBruODkeODg+ODgeOCkuOCq+ODvOODjeODq+OBq+WFpeOCjOOCi+ipseOBp+OBmeOAguOBggor44Gq44Gf44Gv44CB44GC44Gq44Gf44Gu44OR44OD44OB44Gr5a++44GZ44KL5om55Yik44Go44Kz44Oh44Oz44OI44KS5Y+X44GR5YWl44KM44KL44G544GN44Gn44CB44Gd44KM44KJCivjgpLmioDooZPnmoTjg6zjg5njg6vjgafoqZXkvqHjgZfjgabjgIHjg5Hjg4Pjg4HjgpLlho3kvZzmiJDjgZnjgovjgYvjgIHjgarjgZzjgZ3jgozjgonjga7lpInmm7TjgpLjgZnjgbkKK+OBjeOBp+OBquOBhOOBi+OCkuaYjueiuuOBp+ewoea9lOOBqueQhueUseOBruiqrOaYjuOCkuaPkOS+m+OBl+OBpuOBj+OBoOOBleOBhOOAggor44KC44GX44CB44GC44Gq44Gf44Gu44OR44OD44OB44Gr5L2V44KC5Y+N5b+c44GM44Gq44GE5aC05ZCI44CB44Gf44G+44Gr44Gv44Oh44O844Or44Gu5bGx44Gr5Z+L44KC44KM44GmCivopovpgIPjgZXjgozjgIHjgYLjgarjgZ/jga7mipXnqL/jgYzlv5jjgozjgonjgozjgabjgZfjgb7jgYbjgZPjgajjgoLjgYLjgovjga7jgafjgIHmlbDml6XlvoXjgaPjgablho3luqYKK+aKleeov+OBl+OBpuOBj+OBoOOBleOBhOOAggorCivjgYLjgarjgZ/jgYzjgoTjgovjgbnjgY3jgafjgarjgYTjgoLjga7jga8/CisgIC0g6LOq5ZWP44Gq44GX44Gr44GC44Gq44Gf44Gu44OR44OD44OB44GM5Y+X44GR5YWl44KM44KJ44KM44KL44Go5oOz5YOP44GZ44KL44GT44GoCisgIC0g5a6I44KK44Gr5YWl44KL44GT44GoCisgIC0g44Kz44Oh44Oz44OI44KS54Sh6KaW44GZ44KL44GT44GoCisgIC0g6KaB5rGC44GV44KM44Gf5aSJ5pu044KS5L2V44KC44GX44Gq44GE44Gn44OR44OD44OB44KS5Ye644GX55u044GZ44GT44GoCisKK+WPr+iDveOBqumZkOOCiuacgOmrmOOBruaKgOihk+eahOino+axuuOCkuaxguOCgeOBpuOBhOOCi+OCs+ODn+ODpeODi+ODhuOCo+OBp+OBr+OAgeODkeODg+ODgeOBjOOBqeOBruOBjwor44KJ44GE5pyJ55uK44Gq44Gu44GL44Gr44Gk44GE44Gm44Gv5bi444Gr55Ww44Gq44KL5oSP6KaL44GM44GC44KK44G+44GZ44CC44GC44Gq44Gf44Gv5Y2U6Kq/55qE44Gn44GC44KLCivjgbnjgY3jgafjgZnjgZfjgIHjgb7jgZ/jgIHjgYLjgarjgZ/jga7jgqLjgqTjg4fjgqPjgqLjgpLjgqvjg7zjg43jg6vjgavlr77jgZfjgabjgYbjgb7jgY/lkIjjgo/jgZvjgovjgogKK+OBhuOBq+OBmeOCi+OBk+OBqOOBjOacm+OBvuOCjOOBpuOBhOOBvuOBmeOAguOCguOBl+OBj+OBr+OAgeacgOS9jumZkOOBguOBquOBn+OBruOCouOCpOODh+OCo+OCouOBjOOBneOCjAor44Gg44GR44Gu5L6h5YCk44GM44GC44KL44Go44GZ44GZ44KT44Gn6Ki85piO44GZ44KL44KI44GG44Gr44GX44Gq44GR44KM44Gw44Gq44KK44G+44Gb44KT44CCCivmraPjgZfjgYTop6PmsbrjgavlkJHjgYvjgaPjgabpgLLjgoLjgYbjgajjgYTjgYbmhI/lv5fjgYzjgYLjgovpmZDjgorjgIHplpPpgZXjgYbjgZPjgajjgYzjgYLjgaPjgabjgoLoqLEKK+WuueOBleOCjOOCi+OBk+OBqOOCkuW/mOOCjOOBquOBhOOBp+OBj+OBoOOBleOBhOOAggorCivjgYLjgarjgZ/jga7mnIDliJ3jga7jg5Hjg4Pjg4HjgavljZjjgasgMeODgOODvOOCueOCguOBruS/ruato+OCkuaxguOCgeOCi+ODquOCueODiOOBrui/lOetlOOBq+OBquOCi+OBkwor44Go44KC5pmu6YCa44Gu44GT44Go44Gn44GZ44CC44GT44KM44Gv44GC44Gq44Gf44Gu44OR44OD44OB44GM5Y+X44GR5YWl44KM44KJ44KM44Gq44GE44Go44GE44GG44GT44Go44GnCivjga8gKuOBguOCiuOBvuOBm+OCkyrjgIHjgZ3jgZfjgabjgYLjgarjgZ/oh6rouqvjgavlj43lr77jgZnjgovjgZPjgajjgpLmhI/lkbPjgZnjgovjga7jgafjgoIgKuOBguOCiuOBvgor44Gb44KTKuOAguWNmOOBq+iHquWIhuOBruODkeODg+ODgeOBq+WvvuOBl+OBpuaMh+aRmOOBleOCjOOBn+WVj+mhjOOCkuWFqOOBpuS/ruato+OBl+OBpuWGjemAgeOBmeOCjOOBsAor6Imv44GE44Gu44Gn44GZ44CCCisKKwor44Kr44O844ON44Or44Kz44Of44Ol44OL44OG44Kj44Go5LyB5qWt57WE57mU44Gu44Gh44GM44GECistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCivjgqvjg7zjg43jg6vjgrPjg5/jg6Xjg4vjg4bjgqPjga/lpKfpg6jliIbjga7kvJ3ntbHnmoTjgarkvJrnpL7jga7plovnmbrnkrDlooPjgajjga/nlbDjgaPjgZ/jgoTjgormlrnjgacKK+WLleOBhOOBpuOBhOOBvuOBmeOAguS7peS4i+OBr+WVj+mhjOOCkumBv+OBkeOCi+OBn+OCgeOBq+OBp+OBjeOCi+OBqOiJr+OBhOOBk+OBqOOBruODquOCueODiOOBp+OBmS0KKworICDjgYLjgarjgZ/jga7mj5DmoYjjgZnjgovlpInmm7TjgavjgaTjgYTjgaboqIDjgYbjgajjgY3jga7jgYbjgb7jgYToqIDjgYTmlrnvvJoKKworICAgIC0gIuOBk+OCjOOBr+ikh+aVsOOBruWVj+mhjOOCkuino+axuuOBl+OBvuOBmSIKKyAgICAtICLjgZPjgozjga8yMDAw6KGM44Gu44Kz44O844OJ44KS5YmK6Zmk44GX44G+44GZIgorICAgIC0gIuS7peS4i+OBruODkeODg+ODgeOBr+OAgeengeOBjOiogOOBiuOBhuOBqOOBl+OBpuOBhOOCi+OBk+OBqOOCkuiqrOaYjuOBmeOCi+OCguOBruOBp+OBmSIKKyAgICAtICLnp4Hjga/jgZPjgozjgpI144Gk44Gu55Ww44Gq44KL44Ki44O844Kt44OG44Kv44OB44Oj44Gn44OG44K544OI44GX44Gf44Gu44Gn44GZ44GMLi4uIgorICAgIC0gIuS7peS4i+OBr+S4gOmAo+OBruWwj+OBleOBquODkeODg+ODgee+pOOBp+OBmeOBjC4uLiIKKyAgICAtICLjgZPjgozjga/lhbjlnovnmoTjgarjg57jgrfjg7Pjgafjga7mgKfog73jgpLlkJHkuIrjgZXjgZvjgb7jgZkuLiIKKworICDjgoTjgoHjgZ/mlrnjgYzoia/jgYTmgqrjgYToqIDjgYTmlrnvvJoKKworICAgIC0g44GT44Gu44KE44KK5pa544GnIEFJWC9wdHgvU29sYXJpcyDjgafjga/jgafjgY3jgZ/jga7jgafjgIHjgafjgY3jgovjga/jgZrjgaAKKyAgICAtIOengeOBr+OBk+OCjOOCkjIw5bm044KC44Gu6ZaT44KE44Gj44Gm44GN44Gf44CB44Gg44GL44KJCisgICAgLSDjgZPjgozjga/jgIHnp4Hjga7kvJrnpL7jgYzph5HlhLLjgZHjgpLjgZnjgovjgZ/jgoHjgavlv4XopoHjgaAKKyAgICAtIOOBk+OCjOOBr+aIkeOAheOBruOCqOODs+OCv+ODvOODl+ODqeOCpOOCuuWQkeOBkeWVhuWTgeODqeOCpOODs+OBruOBn+OCgeOBp+OBguOCiworICAgIC0g44GT44KM44GvIOengeOBjOiHquWIhuOBruOCouOCpOODh+OCo+OCouOCkuiomOi/sOOBl+OBn+OAgTEwMDDjg5rjg7zjgrjjga7oqK3oqIjos4fmlpnjgafjgYLjgosKKyAgICAtIOengeOBr+OBk+OCjOOBq+OBpOOBhOOBpuOAgTbjgrHmnIjkvZzmpa3jgZfjgabjgYTjgovjgIIKKyAgICAtIOS7peS4i+OBryAuLi4g44Gr6Zai44GZ44KLNTAwMOihjOOBruODkeODg+ODgeOBp+OBmQorICAgIC0g56eB44Gv54++5Zyo44Gu44GQ44Gh44KD44GQ44Gh44KD44KS5YWo6YOo5pu444GN55u044GX44Gf44CB44Gd44KM44GM5Lul5LiL44Gn44GZLi4uCisgICAgLSDnp4Hjga/jgIbliIfjgYzjgYLjgovjgIHjgZ3jga7jgZ/jgoHjgZPjga7jg5Hjg4Pjg4Hjga/ku4rjgZnjgZDpgannlKjjgZXjgozjgovlv4XopoHjgYzjgYLjgosKKwor44Kr44O844ON44Or44Kz44Of44Ol44OL44OG44Kj44GM5aSn6YOo5YiG44Gu5Lyd57Wx55qE44Gq44K944OV44OI44Km44Kn44Ki44Ko44Oz44K444OL44Ki44Oq44Oz44Kw44Gu5Yq0Civlg43nkrDlooPjgajnlbDjgarjgovjgoLjgYbkuIDjgaTjga7ngrnjga/jgIHjgoTjgorjgajjgorjgavpoZTjgpLlkIjjgo/jgZvjgarjgYTjgajjgYTjgYbjgZPjgajjgafjgZnjgIIKK2VtYWlsIOOBqCBpcmMg44KS56ys5LiA44Gu44Kz44Of44Ol44OL44Kx44O844K344On44Oz44Gu5b2i44Go44GZ44KL5LiA44Gk44Gu5Yip54K544Gv44CB5oCn5Yil44KECivmsJHml4/jga7lt67liKXjgYzjgarjgYTjgZPjgajjgafjgZnjgIJMaW51eCDjgqvjg7zjg43jg6vjga7ogbfloLTnkrDlooPjga/lpbPmgKfjgoTlsJHmlbDmsJHml4/jgpLlj5cKK+WuueOBl+OBvuOBmeOAguOBquOBnOOBquOCieOAgWVtYWlsIOOCouODieODrOOCueOBq+OCiOOBo+OBpuOBruOBv+OBguOBquOBn+OBjOiqjeitmOOBleOCjOOCi+OBi+OCieOBpwor44GZ44CCCivlm73pmpvnmoTjgarlgbTpnaLjgYvjgonjgoLmtLvli5XpoJjln5/jgpLlnYfnrYnjgavjgZnjgovjgojjgYbjgavjgZfjgb7jgZnjgILjgarjgZzjgarjgonjgbDjgIHjgYLjgarjgZ8KK+OBr+S6uuOBruWQjeWJjeOBp+aAp+WIpeOCkuaDs+WDj+OBp+OBjeOBquOBhOOBi+OCieOBp+OBmeOAguOBguOCi+eUt+aAp+OBjCDjgqLjg7Pjg4njg6zjgqLjgajjgYTjgYblkI0KK+WJjeOBp+OAgeWls+aAp+OBruWQjeWJjeOBryDjg5Hjg4Pjg4gg44GL44KC44GX44KM44G+44Gb44KTICjoqLPms6ggQW5kcmVhIOOBr+exs+WbveOBp+OBr+Wls+aAp+OAgQor44Gd44KM5Lul5aSWKOasp+W3nuOBquOBqSnjgafjga/nlLfmgKflkI3jgajjgZfjgabkvb/jgo/jgozjgovjgZPjgajjgYzlpJrjgYTjgILlkIzmp5jjgavjgIFQYXQg44GvCitQYXRyaWNpYSAo5Li744Gr5aWz5oCn5ZCNKeOChCBQYXRyaWNrICjkuLvjgavnlLfmgKflkI0p44Gu55Wl56ewKeOAggorTGludXgg44Kr44O844ON44Or44Gu5rS75YuV44KS44GX44Gm44CB5oSP6KaL44KS6KGo5piO44GX44Gf44GT44Go44GM44GC44KL5aSn6YOo5YiG44Gu5aWz5oCn44Gv44CB5YmNCivlkJHjgY3jgarntYzpqJPjgpLjgoLjgaPjgabjgYTjgb7jgZnjgIIKKwor6KiA6JGJ44Gu5aOB44Gv6Iux6Kqe44GM5b6X5oSP44Gn44Gq44GE5LiA6YOo44Gu5Lq644Gr44Gv5ZWP6aGM44Gr44Gq44KK44G+44GZ44CCCivjg6Hjg7zjg6rjg7PjgrDjg6rjgrnjg4jjga7kuK3jgafjgY3jgaHjgpPjgajjgqLjgqTjg4fjgqPjgqLjgpLkuqTmj5vjgZnjgovjgavjga/jgIHnm7jlvZPjgYbjgb7jgY/oi7Hoqp4KK+OCkuaTjeOCjOOCi+W/heimgeOBjOOBguOCi+OBk+OBqOOCguOBguOCiuOBvuOBmeOAguOBneOBruOBn+OCgeOAgeOBguOBquOBn+OBr+iHquWIhuOBruODoeODvOODqwor44KS6YCB44KL5YmN44Gr6Iux6Kqe44Gn5oSP5ZGz44GM6YCa44GY44Gm44GE44KL44GL44KS44OB44Kn44OD44Kv44GZ44KL44GT44Go44KS44GK6Jam44KB44GX44G+44GZ44CCCisKK+WkieabtOOCkuWIhuWJsuOBmeOCiworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0xpbnV4IOOCq+ODvOODjeODq+OCs+ODn+ODpeODi+ODhuOCo+OBr+OAgeS4gOW6puOBq+Wkp+mHj+OBruOCs+ODvOODieOBruWhiuOCkuWWnOOCk+OBp+WPl+WuueOBmeOCi+OBkwor44Go44Gv44GC44KK44G+44Gb44KT44CC5aSJ5pu044Gv5q2j56K644Gr6Kqs5piO44GV44KM44KL5b+F6KaB44GM44GC44KK44CB6K2w6KuW44GV44KM44CB5bCP44GV44GE44CB5YCLCivliKXjga7pg6jliIbjgavliIblibLjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgILjgZPjgozjga/jgZPjgozjgb7jgaflpJrjgY/jga7kvJrnpL7jgYzjgoTjgormhaPjgozjgaYKK+OBjeOBn+OBk+OBqOOBqOWFqOOBj+ato+WPjeWvvuOBruOBk+OBqOOBp+OBmeOAguOBguOBquOBn+OBruODl+ODreODneODvOOCtuODq+OBr+OAgemWi+eZuuODl+ODreOCu+OCueOBruOBqAor44Gm44KC5pep44GE5q616ZqO44GL44KJ57S55LuL44GV44KM44KL44G544GN44Gn44GZ44CC44Gd44GG44GZ44KM44GwIOOBguOBquOBn+OBr+iHquWIhuOBruOChOOBo+OBpuOBhAor44KL44GT44Go44Gr44OV44Kj44O844OJ44OQ44OD44Kv44KS5b6X44KJ44KM44G+44GZ44CC44GT44KM44Gv44CB44Kz44Of44Ol44OL44OG44Kj44GL44KJ44G/44KM44Gw44CB44GCCivjgarjgZ/jgYzlvbzjgonjgajkuIDnt5LjgavjgoTjgaPjgabjgYTjgovjgojjgYbjgavmhJ/jgZjjgonjgozjgIHljZjjgavjgYLjgarjgZ/jga7mj5DmoYjjgZnjgovmqZ/og73jga4KK+OCtOODn+aNqOOBpuWgtOOBqOOBl+OBpuS9v+OBo+OBpuOBhOOCi+OBruOBp+OBr+OBquOBhOOAgeOBqOaEn+OBmOOCieOCjOOCi+OBp+OBl+OCh+OBhuOAggor44GX44GL44GX44CB5LiA5bqm44GrIDUwIOOCguOBriBlbWFpbCDjgpLjg6Hjg7zjg6rjg7PjgrDjg6rjgrnjg4jjgavpgIHjgorjgaTjgZHjgovjgojjgYbjgarjgZPjgajjga8KK+OChOOBo+OBpuOBr+OBhOOBkeOBvuOBm+OCk+OAgeOBguOBquOBn+OBruODkeODg+ODgee+pOOBr+OBhOOBpOOCguOBqeOCk+OBquaZguOBp+OCguOBneOCjOOCiOOCiuOBr+Wwj+OBlQor44GP44Gq44GR44KM44Gw44Gq44KK44G+44Gb44KT44CCCisKK+ODkeODg+ODgeOCkuWIhuWJsuOBmeOCi+eQhueUseOBr+S7peS4i+OBp+OBmS0KKworMSkg5bCP44GV44GE44OR44OD44OB44Gv44GC44Gq44Gf44Gu44OR44OD44OB44GM6YGp55So44GV44KM44KL6KaL6L6844G/44KS5aSn44GN44GP44GX44G+44GZ44CB44Kr44O8CisgICDjg43jg6vjga7kurrpgZTjga/jg5Hjg4Pjg4HjgYzmraPjgZfjgYTjgYvjganjgYbjgYvjgpLnorroqo3jgZnjgovmmYLplpPjgoTlirTlipvjgpLjgYvjgZHjgarjgYTjgYsKKyAgIOOCieOBp+OBmeOAgjXooYzjga7jg5Hjg4Pjg4Hjga/jg6Hjg7Pjg4bjg4rjgYzjgZ/jgaPjgZ8x56eS6KaL44KL44Gg44GR44Gn6YGp55So44Gn44GN44G+44GZ44CCCisgICDjgZfjgYvjgZfjgIE1MDDooYzjga7jg5Hjg4Pjg4Hjga/jgIHmraPjgZfjgYTjgZPjgajjgpLjg6zjg5Pjg6Xjg7zjgZnjgovjga7jgavmlbDmmYLplpPjgYvjgYvjgovjgYsKKyAgIOOCguOBl+OCjOOBvuOBm+OCkyjmmYLplpPjga/jg5Hjg4Pjg4Hjga7jgrXjgqTjgrrjgarjganjgavjgojjgormjIfmlbDplqLmlbDjgavmr5TkvovjgZfjgabjgYvjgYvjgooKKyAgIOOBvuOBmSkKKworICAg5bCP44GV44GE44OR44OD44OB44Gv5L2V44GL44GC44Gj44Gf44Go44GN44Gr44OH44OQ44OD44Kw44KC44Go44Gm44KC57Ch5Y2Y44Gr44Gq44KK44G+44GZ44CC44OR44ODCisgICDjg4HjgpIx5YCLMeWAi+WPluOCiumZpOOBj+OBruOBr+OAgeOBqOOBpuOCguWkp+OBjeOBquODkeODg+ODgeOCkuW9k+OBpuOBn+W+jOOBqyjjgYvjgaTjgIHkvZXjgYvjgYoKKyAgIOOBi+OBl+OBj+OBquOBo+OBn+W+jOOBpynop6PliZbjgZnjgovjga7jgavmr5TjgbnjgozjgbDjgajjgabjgoLnsKHljZjjgafjgZnjgIIKKworMikg5bCP44GV44GE44OR44OD44OB44KS6YCB44KL44Gg44GR44Gn44Gq44GP44CB6YCB44KL44G+44GI44Gr44CB5pu444GN55u044GX44Gm44CB44K344Oz44OX44Or44Gr44GZCisgICDjgoso44KC44GX44GP44Gv44CB5Y2Y44Gr6aCG55Wq44KS5aSJ44GI44KL44Gg44GR44Gn44KCKeOBk+OBqOOCguOAgeOBqOOBpuOCgumHjeimgeOBp+OBmeOAggorCivku6XkuIvjga/jgqvjg7zjg43jg6vplovnmbrogIXjga4gQWwgVmlybyDjga7jgZ/jgajjgYjoqbHjgafjgZnvvJoKKworICAgICAgICAi55Sf5b6S44Gu5pWw5a2m44Gu5a6/6aGM44KS5o6h54K544GZ44KL5YWI55Sf44Gu44GT44Go44KS6ICD44GI44Gm44G/44Gm44GP44Gg44GV44GE44CB5YWICisgICAgICAgIOeUn+OBr+eUn+W+kuOBjOino+OBq+WIsOmBlOOBmeOCi+OBvuOBp+OBruippuihjOmMr+iqpOOCkuimi+OBn+OBhOOBqOOBr+aAneOCj+OBquOBhOOBp+OBl+OChworICAgICAgICDjgYbjgILlhYjnlJ/jga/nsKHmvZTjgarmnIDpq5jjga7op6PjgpLopovjgZ/jgYTjga7jgafjgZnjgILoia/jgYTnlJ/lvpLjga/jgZPjgozjgpLnn6XjgaPjgaYKKyAgICAgICAg44GK44KK44CB44Gd44GX44Gm5pyA57WC6Kej44Gu5YmN44Gu5Lit6ZaT5L2c5qWt44KS5o+Q5Ye644GZ44KL44GT44Go44Gv5rG644GX44Gm44Gq44GE44Gu44GnCisgICAgICAgIOOBmSIKKworICAgICAgICDjgqvjg7zjg43jg6vplovnmbrjgafjgoLjgZPjgozjga/lkIzjgZjjgafjgZnjgILjg6Hjg7Pjg4bjg4rpgZTjgajjg6zjg5Pjg6Xjg7zjgqLpgZTjga/jgIEKKyAgICAgICAg5ZWP6aGM44KS6Kej5rG644GZ44KL6Kej44Gu6IOM5b6M44Gr44Gq44KL5oCd6ICD44OX44Ot44K744K544KS6KaL44Gf44GE44Go44Gv5oCd44GE44G+44Gb44KT44CCCisgICAgICAgIOW9vOOCieOBr+WNmOe0lOOBp+OBguOBluOChOOBi+OBquino+axuuaWueazleOCkuimi+OBn+OBhOOBruOBp+OBmeOAggorCivjgYLjgZbjgoTjgYvjgarop6PjgpLoqqzmmI7jgZnjgovjga7jgajjgIHjgrPjg5/jg6Xjg4vjg4bjgqPjgajlhbHjgavku5XkuovjgpLjgZfjgIHmnKrop6Pmsbrjga7ku5XkuovjgpIKK+itsOirluOBmeOCi+OBk+OBqOOBruODkOODqeODs+OCueOCkuOCreODvOODl+OBmeOCi+OBruOBr+mbo+OBl+OBhOOBi+OCguOBl+OCjOOBvuOBm+OCk+OAggor44Gn44GZ44GL44KJ44CB6ZaL55m644OX44Ot44K744K544Gu5pep5pyf5q616ZqO44Gn5pS55ZaE44Gu44Gf44KB44Gu44OV44Kj44O844OJ44OQ44OD44Kv44KS44KC44KJ44GG44KICivjgYbjgavjgZnjgovjga7jgoLoia/jgYTjgafjgZnjgYzjgIHlpInmm7TngrnjgpLlsI/jgZXjgYTpg6jliIbjgavliIblibLjgZfjgablhajkvZPjgafjga/jgb7jgaDlrozmiJDjgZcKK+OBpuOBhOOBquOBhOS7leS6i+OCkijpg6jliIbnmoTjgasp5Y+W44KK6L6844KT44Gn44KC44KJ44GI44KL44KI44GG44Gr44GZ44KL44GT44Go44KC6Imv44GE44GT44Go44Gn44GZ44CCCisKK+OBvuOBn+OAgeOBp+OBjeS4iuOBjOOBo+OBpuOBhOOBquOBhOOCguOBruOChOOAgSLlsIbmnaXnm7TjgZkiIOOCiOOBhuOBquODkeODg+ODgeOCkuOAgeacrOa1geOBq+WQq+OCgQor44Gm44KC44KJ44GG44KI44GG44Gr6YCB44Gj44Gm44KC44CB44Gd44KM44Gv5Y+X44GR5LuY44GR44KJ44KM44Gq44GE44GT44Go44KS55CG6Kej44GX44Gm44GP44Gg44GV44GE44CCCisKK+OBguOBquOBn+OBruWkieabtOOCkuato+W9k+WMluOBmeOCiworLS0tLS0tLS0tLS0tLS0tLS0tLQorCivjgYLjgarjgZ/jga7jg5Hjg4Pjg4HjgpLliIblibLjgZnjgovjga7jgajlkIzmmYLjgavjgIHjgarjgZzjgZ3jga7lpInmm7TjgpLov73liqDjgZfjgarjgZHjgozjgbDjgarjgonjgaoKK+OBhOOBi+OCkiBMaW51eCDjgrPjg5/jg6Xjg4vjg4bjgqPjgavnn6XjgonjgZvjgovjgZPjgajjga/jgajjgabjgoLph43opoHjgafjgZnjgILmlrDmqZ/og73jga/lv4XopoEKK+aAp+OBqOacieeUqOaAp+OBp+ato+W9k+WMluOBleOCjOOBquOBkeOCjOOBsOOBquOCiuOBvuOBm+OCk+OAggorCivjgYLjgarjgZ/jga7lpInmm7Tjga7oqqzmmI4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK+OBguOBquOBn+OBruODkeODg+ODgeOCkumAgeS7mOOBmeOCi+WgtOWQiOOBq+OBr+OAgeODoeODvOODq+OBruS4reOBruODhuOCreOCueODiOOBp+S9leOCkuiogOOBhuOBi+OBq+OBpAor44GE44Gm44CB54m55Yil44Gr5rOo5oSP44KS5omV44Gj44Gm44GP44Gg44GV44GE44CC44GT44Gu5oOF5aCx44Gv44OR44OD44OB44GuIENoYW5nZUxvZyDjgavkvb/jgo8KK+OCjOOAgeOBhOOBpOOCgueahuOBjOOBv+OCieOCjOOCi+OCiOOBhuOBq+S/neeuoeOBleOCjOOBvuOBmeOAguOBk+OCjOOBr+asoeOBruOCiOOBhuOBqumgheebruOCkuWQq+OCgeOAgQor44OR44OD44OB44KS5a6M5YWo44Gr6KiY6L+w44GZ44KL44G544GN44Gn44GZLQorCisgIC0g44Gq44Gc5aSJ5pu044GM5b+F6KaB44GLCisgIC0g44OR44OD44OB5YWo5L2T44Gu6Kit6KiI44Ki44OX44Ot44O844OBCisgIC0g5a6f6KOF44Gu6Kmz57SwCisgIC0g44OG44K544OI57WQ5p6cCisKK+OBk+OCjOOBq+OBpOOBhOOBpuWFqOOBpuOBjOOBqeOBruOCiOOBhuOBq+OBguOCi+OBueOBjeOBi+OBq+OBpOOBhOOBpuOBruips+e0sOOBr+OAgeS7peS4i+OBruODieOCreODpeODoQor44Oz44OI44GuIENoYW5nZUxvZyDjgrvjgq/jgrfjg6fjg7PjgpLopovjgabjgY/jgaDjgZXjgYQtCisgICJUaGUgUGVyZmVjdCBQYXRjaCIKKyAgICAgIGh0dHA6Ly93d3cub3psYWJzLm9yZy9+YWtwbS9zdHVmZi90cHAudHh0CisKK+OBk+OCjOOCieOBruOBqeOCjOOCguOBjOOAgeaZguOBq+OBr+OBqOOBpuOCguWbsOmbo+OBp+OBmeOAguOBk+OCjOOCieOBruaFo+S+i+OCkuWujOeSp+OBq+Wun+aWveOBmeOCi+OBqwor44Gv5pWw5bm044GL44GL44KL44GL44KC44GX44KM44G+44Gb44KT44CC44GT44KM44Gv57aZ57aa55qE44Gq5pS55ZaE44Gu44OX44Ot44K744K544Gn44GC44KK44CB44Gd44Gu44GfCivjgoHjgavjga/lpJrmlbDjga7lv43ogJDjgajmsbrmhI/jgpLlv4XopoHjgajjgZnjgovjgoLjga7jgafjgZnjgILjgafjgoLjgIHoq6bjgoHjgarjgYTjgafjgIHjgZPjgozjga/lj68KK+iDveOBquOBk+OBqOOBp+OBmeOAguWkmuaVsOOBruS6uuOBjOOBmeOBp+OBq+OBp+OBjeOBpuOBhOOBvuOBmeOBl+OAgeW9vOOCieOCgueahuacgOWIneOBr+OBguOBquOBn+OBqOWQjAor44GY44Go44GT44KN44GL44KJ44K544K/44O844OI44GX44Gf44Gu44Gn44GZ44GL44KJ44CCCisKK1Bhb2xvIENpYXJyb2NjaGkg44Gr5oSf6Kyd44CB5b2844Gv5b2844Gu5pu444GE44GfICJEZXZlbG9wbWVudCBQcm9jZXNzIgorKGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzk0Mzg2Lykg44K744Kv44K344On44Oz44KS44GT44Gu44OG44Kt44K544OI44Gu5Y6f5Z6L44Gr44GZ44KLCivjgZPjgajjgpLoqLHlj6/jgZfjgabjgY/jgozjgb7jgZfjgZ/jgIJSdW5keSBEdW5sYXAg44GoIEdlcnJpdCBIdWl6ZW5nYSDjga/jg6Hjg7zjg6rjg7PjgrAKK+ODquOCueODiOOBp+OChOOCi+OBueOBjeOBk+OBqOOBqOOChOOBo+OBpuOBr+OBhOOBkeOBquOBhOOBk+OBqOOBruODquOCueODiOOCkuaPkOS+m+OBl+OBpuOBj+OCjOOBvuOBl+OBn+OAggor5Lul5LiL44Gu5Lq644CF44Gu44Os44OT44Ol44O844CB44Kz44Oh44Oz44OI44CB6LKi54yu44Gr5oSf6Kyd44CCCitQYXQgTW9jaGVsLCBIYW5uYSBMaW5kZXIsIFJhbmR5IER1bmxhcCwgS2F5IFNpZXZlcnMsCitWb2p0ZWNoIFBhdmxpaywgSmFuIEthcmEsIEpvc2ggQm95ZXIsIEtlZXMgQ29vaywgQW5kcmV3IE1vcnRvbiwgQW5kaQorS2xlZW4sIFZhZGltIExvYmFub3YsIEplc3BlciBKdWhsLCBBZHJpYW4gQnVuaywgS2VyaSBIYXJyaXMsIEZyYW5zIFBvcCwKK0RhdmlkIEEuIFdoZWVsZXIsIEp1bmlvIEhhbWFubywgTWljaGFlbCBLZXJyaXNrLCDjgaggQWxleCBTaGVwYXJkCivlvbzjgonjga7mlK/mj7TjgarjgZfjgafjga/jgIHjgZPjga7jg4njgq3jg6Xjg6Hjg7Pjg4jjga/jgafjgY3jgarjgYvjgaPjgZ/jgafjgZfjgofjgYbjgIIKKworTWFpbnRhaW5lcjogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVnQGtyb2FoLmNvbT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vamFfSlAvU3VibWl0Q2hlY2tsaXN0IGIvRG9jdW1lbnRhdGlvbi9qYV9KUC9TdWJtaXRDaGVja2xpc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I1NTA3YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vamFfSlAvU3VibWl0Q2hlY2tsaXN0CkBAIC0wLDAgKzEsMTExIEBACitOT1RFOgorVGhpcyBpcyBhIHZlcnNpb24gb2YgRG9jdW1lbnRhdGlvbi9TdWJtaXRDaGVja2xpc3QgaW50byBKYXBhbmVzZS4KK1RoaXMgZG9jdW1lbnQgaXMgbWFpbnRhaW5lZCBieSBUYWtlbm9yaSBOYWdhbm8gPHQtbmFnYW5vQGFoLmpwLm5lYy5jb20+CithbmQgdGhlIEpGIFByb2plY3QgdGVhbSA8aHR0cDovL3d3dy5saW51eC5vci5qcC9KRi8+LgorSWYgeW91IGZpbmQgYW55IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIGRvY3VtZW50IGFuZCB0aGUgb3JpZ2luYWwgZmlsZQorb3IgYSBwcm9ibGVtIHdpdGggdGhlIHRyYW5zbGF0aW9uLAorcGxlYXNlIGNvbnRhY3QgdGhlIG1haW50YWluZXIgb2YgdGhpcyBmaWxlIG9yIEpGIHByb2plY3QuCisKK1BsZWFzZSBhbHNvIG5vdGUgdGhhdCB0aGUgcHVycG9zZSBvZiB0aGlzIGZpbGUgaXMgdG8gYmUgZWFzaWVyIHRvIHJlYWQKK2ZvciBub24gRW5nbGlzaCAocmVhZDogSmFwYW5lc2UpIHNwZWFrZXJzIGFuZCBpcyBub3QgaW50ZW5kZWQgYXMgYQorZm9yay4gU28gaWYgeW91IGhhdmUgYW55IGNvbW1lbnRzIG9yIHVwZGF0ZXMgb2YgdGhpcyBmaWxlLCBwbGVhc2UgdHJ5Cit0byB1cGRhdGUgdGhlIG9yaWdpbmFsIEVuZ2xpc2ggZmlsZSBmaXJzdC4KKworTGFzdCBVcGRhdGVkOiAyMDA4LzA3LzE0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CivjgZPjgozjga/jgIEKK2xpbnV4LTIuNi4yNi9Eb2N1bWVudGF0aW9uL1N1Ym1pdENoZWNrbGlzdCDjga7lkozoqLPjgafjgZnjgIIKKwor57+76Kiz5Zuj5L2T77yaIEpGIOODl+ODreOCuOOCp+OCr+ODiCA8IGh0dHA6Ly93d3cubGludXgub3IuanAvSkYvID4KK+e/u+ios+aXpe+8miAyMDA4LzA3LzE0Civnv7voqLPogIXvvJogVGFrZW5vcmkgTmFnYW5vIDx0LW5hZ2FubyBhdCBhaCBkb3QganAgZG90IG5lYyBkb3QgY29tPgor5qCh5q2j6ICF77yaIE1hc2Fub3JpIEtvYmF5YXNoaSDjgZXjgpMgPHphcDAzMjE2IGF0IG5pZnR5IGRvdCBuZSBkb3QganA+Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworTGludXgg44Kr44O844ON44Or44OR44OD44OB5oqV56i/6ICF5ZCR44GR44OB44Kn44OD44Kv44Oq44K544OICit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK+acrOabuOOBp+OBr+OAgeODkeODg+ODgeOCkuOCiOOCiue0oOaXqeOBj+WPluOCiui+vOOCk+OBp+OCguOCieOBhOOBn+OBhOmWi+eZuuiAheOBjOWun+i3teOBmeOBueOBjeWfuuacrOeahOOBquS6i+afhAor44KS44GE44GP44Gk44GL57S55LuL44GX44G+44GZ44CC44GT44GT44Gr44GC44KL5YWo44Gm44Gu5LqL5p+E44Gv44CBRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nUGF0Y2hlcwor44Gq44Gp44GuTGludXjjgqvjg7zjg43jg6vjg5Hjg4Pjg4HmipXnqL/jgavpmpvjgZfjgabjga7lv4PlvpfjgpLoo5zotrPjgZnjgovjgoLjga7jgafjgZnjgIIKKworIDE6IOWmpeW9k+OBqkNPTkZJR+OCquODl+OCt+ODp+ODs+OChOWkieabtOOBleOCjOOBn0NPTkZJR+OCquODl+OCt+ODp+ODs+OAgeOBpOOBvuOCiiA9eSwgPW0sID1uCisgICAg5YWo44Gm44Gn5q2j44GX44GP44OT44Or44OJ44Gn44GN44KL44GT44Go44KS56K66KqN44GX44Gm44GP44Gg44GV44GE44CC44Gd44Gu6Zqb44CBZ2Nj5Y+K44Gz44Oq44Oz44Kr44GMCisgICAgd2FybmluZ+OChGVycm9y44KS5Ye644GX44Gm44GE44Gq44GE44GT44Go44KC56K66KqN44GX44Gm44GP44Gg44GV44GE44CCCisKKyAyOiBhbGxub2NvbmZpZywgYWxsbW9kY29uZmlnIOOCquODl+OCt+ODp+ODs+OCkueUqOOBhOOBpuato+OBl+OBj+ODk+ODq+ODieOBp+OBjeOCi+OBk+OBqOOCkgorICAgIOeiuuiqjeOBl+OBpuOBj+OBoOOBleOBhOOAggorCisgMzog5omL6Kix44Gu44Kv44Ot44K544Kz44Oz44OR44Kk44Or44OE44O844Or44KET1NETOOBrlBMTeOBruOCiOOBhuOBquOCguOBruOCkueUqOOBhOOBpuOAgeikh+aVsOOBrgorICAgIOOCouODvOOCreODhuOCr+ODgeODo+OBq+OBiuOBhOOBpuOCguato+OBl+OBj+ODk+ODq+ODieOBp+OBjeOCi+OBk+OBqOOCkueiuuiqjeOBl+OBpuOBj+OBoOOBleOBhOOAggorCisgNDogNjRiaXTplbfjga4ndW5zaWduZWQgbG9uZyfjgpLkvb/nlKjjgZfjgabjgYTjgotwcGM2NOOBr+OAgeOCr+ODreOCueOCs+ODs+ODkeOCpOODq+OBp+OBrgorICAgIOODgeOCp+ODg+OCr+OBq+mBqeW9k+OBquOCouODvOOCreODhuOCr+ODgeODo+OBp+OBmeOAggorCisgNTog44Kr44O844ON44Or44Kz44O844OH44Kj44Oz44Kw44K544K/44Kk44Or44Gr5rqW5oug44GX44Gm44GE44KL44GL44Gp44GG44GL56K66KqN44GX44Gm44GP44Gg44GV44GEKCEpCisKKyA2OiBDT05GSUfjgqrjg5fjgrfjg6fjg7Pjga7ov73liqDjg7vlpInmm7TjgpLjgZfjgZ/loLTlkIjjgavjga/jgIFDT05GSUfjg6Hjg4vjg6Xjg7zjgYzlo4rjgozjgabjgYTjgarjgYQKKyAgICDjgZPjgajjgpLnorroqo3jgZfjgabjgY/jgaDjgZXjgYTjgIIKKworIDc6IOaWsOOBl+OBj0tjb25maWfjga7jgqrjg5fjgrfjg6fjg7PjgpLov73liqDjgZnjgovpmpvjgavjga/jgIHlv4XjgZrjgZ3jga5oZWxw44KC6KiY6L+w44GX44Gm44GP44Gg44GV44GE44CCCisKKyA4OiDpganliIfjgapLY29uZmln44Gu5L6d5a2Y6Zai5L+C44KS6ICD44GI44Gq44GM44KJ5oWO6YeN44Gr44OB44Kn44OD44Kv44GX44Gm44GP44Gg44GV44GE44CCCisgICAg44Gf44Gg44GX44CB44GT44Gu5L2c5qWt44Gv44Oe44K344Oz44KS5L2/44Gj44Gf44OG44K544OI44Gn44GN44Gh44KT44Go6KGM44GG44Gu44GM44Go44Gm44KC5Zuw6Zuj44Gn44GZ44CCCisgICAg44GG44G+44GP44KE44KL44Gr44Gv44CB6Ieq5YiG44Gu6aCt44Gn6ICD44GI44KL44GT44Go44Gn44GZ44CCCisKKyA5OiBzcGFyc2XjgpLliKnnlKjjgZfjgabjgaHjgoPjgpPjgajjgZfjgZ/jgrPjg7zjg4njg4Hjgqfjg4Pjgq/jgpLjgZfjgabjgY/jgaDjgZXjgYTjgIIKKworMTA6ICdtYWtlIGNoZWNrc3RhY2snIOOBqCAnbWFrZSBuYW1lc3BhY2VjaGVjaycg44KS5Yip55So44GX44CB5ZWP6aGM44GM55m66KaL44GV44KM44Gf44KJCisgICAg5L+u5q2j44GX44Gm44GP44Gg44GV44GE44CCJ21ha2UgY2hlY2tzdGFjaycg44Gv5piO56S655qE44Gr5ZWP6aGM44KS56S644GX44G+44Gb44KT44GM44CB44Gp44KM44GLCisgICAg77yR44Gk44Gu6Zai5pWw44GMNTEy44OQ44Kk44OI44KI44KK5aSn44GN44GE44K544K/44OD44Kv44KS5L2/44Gj44Gm44GE44KM44Gw44CB5L+u5q2j44GZ44G544GN5YCZ6KOc44GoCisgICAg44Gq44KK44G+44GZ44CCCisKKzExOiDjgrDjg63jg7zjg5Djg6vjgaprZXJuZWwgQVBJIOOCkuiqrOaYjuOBmeOCiyBrZXJuZWwtZG9jIOOCkuOCveODvOOCueOBruS4reOBq+WQq+OCgeOBpuOBj+OBoOOBleOBhOOAggorICAgICggc3RhdGlj44Gq6Zai5pWw44Gr44GK44GE44Gm44Gv5b+F6aCI44Gn44Gv44GC44KK44G+44Gb44KT44GM44CB5ZCr44KB44Gm44KC44KJ44Gj44Gm44KC57WQ5qeL44Gn44GZICkKKyAgICDjgZ3jgZfjgabjgIEnbWFrZSBodG1sZG9jcycg44KC44GX44GP44GvICdtYWtlIG1hbmRvY3MnIOOCkuWIqeeUqOOBl+OBpui/veiomOOBl+OBnworICAgIOODieOCreODpeODoeODs+ODiOOBruODgeOCp+ODg+OCr+OCkuihjOOBhOOAgeWVj+mhjOOBjOimi+OBpOOBi+OBo+OBn+WgtOWQiOOBq+OBr+S/ruato+OCkuihjOOBo+OBpuOBj+OBoOOBleOBhOOAggorCisxMjogQ09ORklHX1BSRUVNUFQsIENPTkZJR19ERUJVR19QUkVFTVBULCBDT05GSUdfREVCVUdfU0xBQiwKKyAgICBDT05GSUdfREVCVUdfUEFHRUFMTE9DLCBDT05GSUdfREVCVUdfTVVURVhFUywgQ09ORklHX0RFQlVHX1NQSU5MT0NLLAorICAgIENPTkZJR19ERUJVR19BVE9NSUNfU0xFRVAg44GT44KM44KJ5YWo44Gm44KS5ZCM5pmC44Gr5pyJ5Yq544Gr44GX44Gm5YuV5L2c56K66KqN44KSCisgICAg6KGM44Gj44Gm44GP44Gg44GV44GE44CCCisKKzEzOiBDT05GSUdfU01QLCBDT05GSUdfUFJFRU1QVCDjgpLmnInlirnjgavjgZfjgZ/loLTlkIjjgajnhKHlirnjgavjgZfjgZ/loLTlkIjjga7kuKHmlrnjgacKKyAgICDjg5Pjg6vjg4njgZfjgZ/kuIrjgIHli5XkvZznorroqo3jgpLooYzjgaPjgabjgY/jgaDjgZXjgYTjgIIKKworMTQ6IOOCguOBl+ODkeODg+ODgeOBjOODh+OCo+OCueOCr+OBrkkvT+aAp+iDveOBquOBqeOBq+W9semfv+OCkuS4juOBiOOCi+OCiOOBhuOBp+OBguOCjOOBsOOAgQorICAgICdDT05GSUdfTEJEQUYn44Kq44OX44K344On44Oz44KS5pyJ5Yq544Gr44GX44Gf5aC05ZCI44Go54Sh5Yq544Gr44GX44Gf5aC05ZCI44Gu5Lih5pa544GnCisgICAg44OG44K544OI44KS5a6f5pa944GX44Gm44G/44Gm44GP44Gg44GV44GE44CCCisKKzE1OiBsb2NrZGVw44Gu5qmf6IO944KS5YWo44Gm5pyJ5Yq544Gr44GX44Gf5LiK44Gn44CB5YWo44Gm44Gu44Kz44O844OJ44OR44K544KS6KmV5L6h44GX44Gm44GP44Gg44GV44GE44CCCisKKzE2OiAvcHJvYyDjgavmlrDjgZfjgYTjgqjjg7Pjg4jjg6rjgpLov73liqDjgZfjgZ/loLTlkIjjgavjga/jgIFEb2N1bWVudGF0aW9uLyDphY3kuIvjgasKKyAgICDlv4XjgZrjg4njgq3jg6Xjg6Hjg7Pjg4jjgpLov73liqDjgZfjgabjgY/jgaDjgZXjgYTjgIIKKworMTc6IOaWsOOBl+OBhOODluODvOODiOODkeODqeODoeODvOOCv+OCkui/veWKoOOBl+OBn+WgtOWQiOOBq+OBr+OAgQorICAgIOW/heOBmkRvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0IOOBq+iqrOaYjuOCkui/veWKoOOBl+OBpuOBj+OBoOOBleOBhOOAggorCisxODog5paw44GX44GPbW9kdWxl44Gr44OR44Op44Oh44O844K/44KS6L+95Yqg44GX44Gf5aC05ZCI44Gr44Gv44CBTU9EVUxFX1BBUk1fREVTQygp44KSCisgICAg5Yip55So44GX44Gm5b+F44Ga44Gd44Gu6Kqs5piO44KS6KiY6L+w44GX44Gm44GP44Gg44GV44GE44CCCisKKzE5OiDmlrDjgZfjgYR1c2Vyc3BhY2XjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjgpLkvZzmiJDjgZfjgZ/loLTlkIjjgavjga/jgIFEb2N1bWVudGF0aW9uL0FCSS8g44GrCisgICAgRG9jdW1lbnRhdGlvbi9BQkkvUkVBRE1FIOOCkuWPguiAg+OBq+OBl+OBpuW/heOBmuODieOCreODpeODoeODs+ODiOOCkui/veWKoOOBl+OBpuOBj+OBoOOBleOBhOOAggorCisyMDogJ21ha2UgaGVhZGVyc19jaGVjayfjgpLlrp/ooYzjgZfjgablhajjgY/llY/poYzjgYzjgarjgYTjgZPjgajjgpLnorroqo3jgZfjgabjgY/jgaDjgZXjgYTjgIIKKworMjE6IOWwkeOBquOBj+OBqOOCgnNsYWLjgqLjg63jgrHjg7zjgrfjg6fjg7PjgahwYWdl44Ki44Ot44Kx44O844K344On44Oz44Gr5aSx5pWX44GX44Gf5aC05ZCI44GuCisgICAg5oyZ5YuV44Gr44Gk44GE44Gm44CBZmF1bHQtaW5qZWN0aW9u44KS5Yip55So44GX44Gm56K66KqN44GX44Gm44GP44Gg44GV44GE44CCCisgICAgRG9jdW1lbnRhdGlvbi9mYXVsdC1pbmplY3Rpb24vIOOCkuWPgueFp+OBl+OBpuOBj+OBoOOBleOBhOOAggorCisgICAg6L+95Yqg44GX44Gf44Kz44O844OJ44GM44GL44Gq44KK44Gu6YeP44Gn44GC44Gj44Gf44Gq44KJ44Gw44CB44K144OW44K344K544OG44Og54m55pyJ44GuCisgICAgZmF1bHQtaW5qZWN0aW9u44KS6L+95Yqg44GX44Gf44G744GG44GM6Imv44GE44GL44KC44GX44KM44G+44Gb44KT44CCCisKKzIyOiDmlrDjgZ/jgavov73liqDjgZfjgZ/jgrPjg7zjg4njga/jgIFgZ2NjIC1XJ+OBp+OCs+ODs+ODkeOCpOODq+OBl+OBpuOBj+OBoOOBleOBhOOAggorICAgIOOBk+OBruOCquODl+OCt+ODp+ODs+OBr+Wkp+mHj+OBruS4jeimgeOBquODoeODg+OCu+ODvOOCuOOCkuWHuuWKm+OBl+OBvuOBmeOBjOOAgQorICAgICJ3YXJuaW5nOiBjb21wYXJpc29uIGJldHdlZW4gc2lnbmVkIGFuZCB1bnNpZ25lZCIg44Gu44KI44GG44Gq44Oh44OD44K744O844K444Gv44CBCisgICAg44OQ44Kw44KS6KaL44Gk44GR44KL44Gu44Gr5b2544Gr56uL44Gh44G+44GZ44CCCisKKzIzOiDmipXnqL/jgZfjgZ/jg5Hjg4Pjg4HjgYwgLW1tIOODkeODg+ODgeOCu+ODg+ODiOOBq+ODnuODvOOCuOOBleOCjOOBn+W+jOOAgeWFqOOBpuOBruaXouWtmOOBruODkeODg+ODgeOChAorICAgIFZNLCBWRlMg44GK44KI44Gz44Gd44Gu5LuW44Gu44K144OW44K344K544OG44Og44Gr6Zai44GZ44KL5qeY44CF44Gq5aSJ5pu044Go44CB54++5pmC54K544Gn44KC5YWx5a2YCisgICAg44Gn44GN44KL44GT44Go44KS56K66KqN44GZ44KL44OG44K544OI44KS6KGM44Gj44Gm44GP44Gg44GV44GE44CCCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2phX0pQL1N1Ym1pdHRpbmdQYXRjaGVzIGIvRG9jdW1lbnRhdGlvbi9qYV9KUC9TdWJtaXR0aW5nUGF0Y2hlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDZhZTYzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9qYV9KUC9TdWJtaXR0aW5nUGF0Y2hlcwpAQCAtMCwwICsxLDcxOSBAQAorTk9URToKK1RoaXMgaXMgYSB2ZXJzaW9uIG9mIERvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXMgaW50byBKYXBhbmVzZS4KK1RoaXMgZG9jdW1lbnQgaXMgbWFpbnRhaW5lZCBieSBLZWlpY2hpIEtJSSA8ay1rZWlpY2hpQGJ4LmpwLm5lYy5jb20+CithbmQgdGhlIEpGIFByb2plY3QgdGVhbSA8aHR0cDovL3d3dy5saW51eC5vci5qcC9KRi8+LgorSWYgeW91IGZpbmQgYW55IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIGRvY3VtZW50IGFuZCB0aGUgb3JpZ2luYWwgZmlsZQorb3IgYSBwcm9ibGVtIHdpdGggdGhlIHRyYW5zbGF0aW9uLAorcGxlYXNlIGNvbnRhY3QgdGhlIG1haW50YWluZXIgb2YgdGhpcyBmaWxlIG9yIEpGIHByb2plY3QuCisKK1BsZWFzZSBhbHNvIG5vdGUgdGhhdCB0aGUgcHVycG9zZSBvZiB0aGlzIGZpbGUgaXMgdG8gYmUgZWFzaWVyIHRvIHJlYWQKK2ZvciBub24gRW5nbGlzaCAocmVhZDogSmFwYW5lc2UpIHNwZWFrZXJzIGFuZCBpcyBub3QgaW50ZW5kZWQgYXMgYQorZm9yay4gU28gaWYgeW91IGhhdmUgYW55IGNvbW1lbnRzIG9yIHVwZGF0ZXMgb2YgdGhpcyBmaWxlLCBwbGVhc2UgdHJ5Cit0byB1cGRhdGUgdGhlIG9yaWdpbmFsIEVuZ2xpc2ggZmlsZSBmaXJzdC4KKworTGFzdCBVcGRhdGVkOiAyMDExLzA2LzA5CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK+OBk+OCjOOBr+OAgQorbGludXgtMi42LjM5L0RvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXMg44Gu5ZKM6KizCivjgafjgZnjgIIKK+e/u+ios+Wbo+S9k++8miBKRiDjg5fjg63jgrjjgqfjgq/jg4ggPCBodHRwOi8vd3d3LmxpbnV4Lm9yLmpwL0pGLyA+Civnv7voqLPml6XvvJogMjAxMS8wNi8wOQor57+76Kiz6ICF77yaIEtlaWljaGkgS2lpIDxrLWtlaWljaGkgYXQgYnggZG90IGpwIGRvdCBuZWMgZG90IGNvbT4KK+agoeato+iAhe+8miBNYXNhbmFyaSBLb2JheWFzaGkg44GV44KTIDx6YXAwMzIxNiBhdCBuaWZ0eSBkb3QgbmUgZG90IGpwPgorICAgICAgICAgTWF0c3VrdXJhIOOBleOCkyA8bmJoLS1tYXRzIGF0IG5pZnR5IGRvdCBjb20+CisgICAgICAgICBUYWtlc2hpIEhhbWFzYWtpIOOBleOCkyA8aG1hdHJqcCBhdCB1c2VycyBkb3Qgc291cmNlZm9yZ2UgZG90IGpwPgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgICAgIExpbnV4IOOCq+ODvOODjeODq+OBq+WkieabtOOCkuWKoOOBiOOCi+OBn+OCgeOBriBIb3d0bworICAgICAgICDlj4jjga8KKyAgICAgICAg44GL44GuIExpbnVzIFRvcnZhbGRzIOOBruWPluOCiuaJseOBhOiqrOaYjuabuAorCitMaW51eCDjgqvjg7zjg43jg6vjgavlpInmm7TjgpLliqDjgYjjgZ/jgYTjgajmgJ3jgaPjgabjgYTjgovlgIvkurrlj4jjga/kvJrnpL7jgavjgajjgaPjgabjgIHjg5Hjg4MKK+ODgeOBruaKleeov+OBq+mWoumAo+OBl+OBn+S7lee1hOOBv+OBq+aFo+OCjOOBpuOBhOOBquOBkeOCjOOBsOOAgeOBneOBrumBjueoi+OBr+aZguOAheOBv+OBquOBleOCk+OCkgor44GK44GY44GR44Gl44GL44Gb44KL44GT44Go44KC44GC44KK44G+44GZ44CC44GT44Gu5paH56ug44Gv44GC44Gq44Gf44Gu5aSJ5pu044KS5aSn44GE44Gr5Y+X44GR5YWl44KMCivjgabjgoLjgonjgYjjgoTjgZnjgY/jgZnjgovmj5DmoYjjgpLpm4bjgoHjgZ/jgoLjga7jgafjgZnjgIIKKwor44Kz44O844OJ44KS5oqV56i/44GZ44KL5YmN44Gr44CBRG9jdW1lbnRhdGlvbi9TdWJtaXRDaGVja2xpc3Qg44Gu6aCF55uu44Oq44K544OI44Gr55uuCivjgpLpgJrjgZfjgabjg4Hjgqfjg4Pjgq/jgZfjgabjgY/jgaDjgZXjgYTjgILjgoLjgZfjgYLjgarjgZ/jgYzjg4njg6njgqTjg5Djg7zjgpLmipXnqL/jgZfjgojjgYbjgajjgZcKK+OBpuOBhOOCi+OBquOCieOAgURvY3VtZW50YXRpb24vU3VibWl0dGluZ0RyaXZlcnMg44Gr44KC55uu44KS6YCa44GX44Gm44GP44Gg44GV44GE44CCCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCivjgrvjgq/jgrfjg6fjg7MxIOODkeODg+ODgeOBruS9nOOCiuaWueOBqOmAgeOCiuaWuQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworMSkg44CMIGRpZmYgLXVwIOOAjQorLS0tLS0tLS0tLS0tCisKK+ODkeODg+ODgeOBruS9nOaIkOOBq+OBr+OAjCBkaWZmIC11cCDjgI3lj4jjga/jgIwgZGlmZiAtdXByTiDjgI3jgpLkvb/jgaPjgabjgY/jgaDjgZXjgYTjgIIKKworTGludXgg44Kr44O844ON44Or44Gr5a++44GZ44KL5YWo44Gm44Gu5aSJ5pu044GvIGRpZmYoMSkg44Kz44Oe44Oz44OJ44Gr44KI44KL44OR44OD44OB44Gu5b2i5byP44GnCivnlJ/miJDjgZfjgabjgY/jgaDjgZXjgYTjgILjg5Hjg4Pjg4HjgpLkvZzmiJDjgZnjgovjgajjgY3jgavjga/jgIFkaWZmKDEpIOOCs+ODnuODs+ODieOBq+OAjCAtdSDjgI3lvJUKK+aVsOOCkuaMh+WumuOBl+OBpuOAgXVuaWZpZWQg5b2i5byP44Gu44OR44OD44OB44KS5L2c5oiQ44GZ44KL44GT44Go44KS56K66KqN44GX44Gm44GP44Gg44GV44GE44CC44G+44Gf44CBCivlpInmm7TjgYzjganjga4gQyDplqLmlbDjgafooYzjgo/jgozjgZ/jga7jgYvjgpLooajnpLrjgZnjgovjgIwgLXAg44CN5byV5pWw44KS5L2/44Gj44Gm44GP44Gg44GV44GE44CCCivjgZPjga7lvJXmlbDjga/nlJ/miJDjgZfjgZ/lt67liIbjgpLjgZrjgaPjgajoqq3jgb/jgoTjgZnjgY/jgZfjgabjgY/jgozjgb7jgZnjgILjg5Hjg4Pjg4Hjga8gTGludXgKK+OCq+ODvOODjeODq+OCveODvOOCueOBruS4reOBruOCteODluODh+OCo+ODrOOCr+ODiOODquOBp+OBr+OBquOBjyBMaW51eCDjgqvjg7zjg43jg6vjgr3jg7zjgrnjga7jg6vjg7zjg4gKK+ODh+OCo+ODrOOCr+ODiOODquOCkuWfuua6luOBq+OBl+OBquOBhOOBqOOBhOOBkeOBvuOBm+OCk+OAggorCisx5YCL44Gu44OV44Kh44Kk44Or44Gr44Gk44GE44Gm44Gu44OR44OD44OB44KS5L2c5oiQ44GZ44KL44Gf44KB44Gr44Gv44CB44G744Go44KT44Gp44Gu5aC05ZCI44CBCivku6XkuIvjga7kvZzmpa3jgpLooYzjgYjjgbDljYHliIbjgafjgZnjgIIKKworCVNSQ1RSRUU9IGxpbnV4LTIuNgorCU1ZRklMRT0gIGRyaXZlcnMvbmV0L215ZHJpdmVyLmMKKworCWNkICRTUkNUUkVFCisJY3AgJE1ZRklMRSAkTVlGSUxFLm9yaWcKKwl2aSAkTVlGSUxFCSMgbWFrZSB5b3VyIGNoYW5nZQorCWNkIC4uCisJZGlmZiAtdXAgJFNSQ1RSRUUvJE1ZRklMRXsub3JpZyx9ID4gL3RtcC9wYXRjaAorCivopIfmlbDjga7jg5XjgqHjgqTjg6vjgavjgaTjgYTjgabjga7jg5Hjg4Pjg4HjgpLkvZzmiJDjgZnjgovjgZ/jgoHjgavjga/jgIHntKDjga4oIHZhbmlsbGEgKeOAgeOBmQor44Gq44KP44Gh5aSJ5pu044KS5Yqg44GI44Gm44Gq44GEIExpbnV4IOOCq+ODvOODjeODq+OCkuWxlemWi+OBl+OAgeiHquWIhuOBriBMaW51eCDjgqvjg7zjg43jg6sKK+OCveODvOOCueOBqOOBruW3ruWIhuOCkueUn+aIkOOBl+OBquOBhOOBqOOBhOOBkeOBvuOBm+OCk+OAguS+i+OBiOOBsOOAgQorCisJTVlTUkM9IC9kZXZlbC9saW51eC0yLjYKKworCXRhciB4dmZ6IGxpbnV4LTIuNi4xMi50YXIuZ3oKKwltdiBsaW51eC0yLjYuMTIgbGludXgtMi42LjEyLXZhbmlsbGEKKwlkaWZmIC11cHJOIC1YIGxpbnV4LTIuNi4xMi12YW5pbGxhL0RvY3VtZW50YXRpb24vZG9udGRpZmYgXAorCQlsaW51eC0yLjYuMTItdmFuaWxsYSAkTVlTUkMgPiAvdG1wL3BhdGNoCisKK2RvbnRkaWZmIOODleOCoeOCpOODq+OBq+OBryBMaW51eCDjgqvjg7zjg43jg6vjga7jg5Pjg6vjg4njg5fjg63jgrvjgrnjga7pgY7nqIvjgafnlJ/miJDjgZXjgozjgZ8KK+ODleOCoeOCpOODq+OBruS4gOimp+OBjOOBruOBo+OBpuOBhOOBvuOBmeOAguOBneOBl+OBpuOAgeOBneOCjOOCieOBr+ODkeODg+ODgeOCkueUn+aIkOOBmeOCiyBkaWZmKDEpCivjgrPjg57jg7Pjg4njgafnhKHoppbjgZXjgozjgovjgbnjgY3jgafjgZnjgIJkb250ZGlmZiDjg5XjgqHjgqTjg6vjga8gMi42LjEyIOS7peW+jOOBruODkOODvOOCuOODpwor44Oz44GuIExpbnV4IOOCq+ODvOODjeODq+OCveODvOOCueODhOODquODvOOBq+WQq+OBvuOCjOOBpuOBhOOBvuOBmeOAguOBneOCjOOCiOOCiuWJjeOBruODkOODvOOCuOODp+ODswor44GuIExpbnV4IOOCq+ODvOODjeODq+OCveODvOOCueODhOODquODvOOBq+WvvuOBmeOCiyBkb250ZGlmZiDjg5XjgqHjgqTjg6vjga/jgIEKKzxodHRwOi8vd3d3Lnhlbm90aW1lLm5ldC9saW51eC9kb2MvZG9udGRpZmY+44GL44KJ5Y+W5b6X44GZ44KL44GT44Go44GM44Gn44GN44G+44GZ44CCCisKK+aKleeov+OBmeOCi+ODkeODg+ODgeOBruS4reOBq+mWouS/guOBruOBquOBhOS9meWIhuOBquODleOCoeOCpOODq+OBjOWQq+OBvuOCjOOBpuOBhOOBquOBhOOBk+OBqOOCkueiugor6KqN44GX44Gm44GP44Gg44GV44GE44CCZGlmZigxKSDjgrPjg57jg7Pjg4njgafnlJ/miJDjgZfjgZ/jg5Hjg4Pjg4HjgYzjgYLjgarjgZ/jga7mhI/lm7PjgZfjgZ/jgajjgYoKK+OCiuOBruOCguOBruOBp+OBguOCi+OBk+OBqOOCkueiuuiqjeOBl+OBpuOBj+OBoOOBleOBhOOAggorCivjgoLjgZfjgYLjgarjgZ/jga7jg5Hjg4Pjg4HjgYzlpJrjgY/jga7lt67liIbjgpLnlJ/jgb/lh7rjgZnjga7jgafjgYLjgozjgbDjgIHjgYLjgarjgZ/jga/jg5Hjg4Pjg4EKK+OCkuaEj+WRs+OBruOBguOCi+OBsuOBqOOBvuOBqOOBvuOCiuOBlOOBqOOBq+WIhuOBkeOBn+OBhOOBqOaAneOBhuOBi+OCguOBl+OCjOOBvuOBm+OCk+OAggor44GT44KM44Gv5LuW44Gu44Kr44O844ON44Or6ZaL55m66ICF44Gr44Go44Gj44Gm44Os44OT44Ol44O844GX44KE44GZ44GP44Gq44KL44Gu44Gn44CB44GC44Gq44Gf44GuCivjg5Hjg4Pjg4HjgpLlj5fjgZHlhaXjgozjgabjgoLjgonjgYbjgZ/jgoHjgavjga/jgajjgabjgoLph43opoHjgarjgZPjgajjgafjgZnjgILjgZPjgozjgpLoo5zliqnjgafjgY0KK+OCi+WkmuOBj+OBruOCueOCr+ODquODl+ODiOOBjOOBguOCiuOBvuOBmeOAggorCitRdWlsdDoKK2h0dHA6Ly9zYXZhbm5haC5ub25nbnUub3JnL3Byb2plY3RzL3F1aWx0CisKKzIpIOODkeODg+ODgeOBq+WvvuOBmeOCi+iqrOaYjgorCivjg5Hjg4Pjg4Hjga7kuK3jga7lpInmm7Tngrnjgavlr77jgZnjgovmioDooZPnmoTjgaroqbPntLDjgavjgaTjgYTjgaboqqzmmI7jgZfjgabjgY/jgaDjgZXjgYTjgIIKKwor6Kqs5piO44Gv44Gn44GN44KL6ZmQ44KK5YW35L2T55qE44Gr44CC44KC44Gj44Go44KC5oKq44GE6Kqs5piO44Gv44CM44OJ44Op44Kk44OQ44O8IFgg44KS5pu05paw44CN44CBCivjgIzjg4njg6njgqTjg5Djg7wgWCDjgavlr77jgZnjgovjg5DjgrDjg5XjgqPjg4Pjgq/jgrnjgI3jgYLjgovjgYTjga/jgIzjgZPjga7jg5Hjg4Pjg4Hjga/jgrXjg5bjgrfjgrkKK+ODhuODoCBYIOOBq+WvvuOBmeOCi+abtOaWsOOCkuWQq+OCk+OBp+OBhOOBvuOBmeOAguOBqeOBhuOBi+WPluOCiuWFpeOCjOOBpuOBj+OBoOOBleOBhOOAguOAjeOBquOBqeOBp+OBmeOAggorCivjg5Hjg4Pjg4Hjga7oqqzmmI7jgpIgTGludXgg44Kr44O844ON44Or44Gu44K944O844K544Kz44O844OJ44Oe44ON44K444Oh44Oz44OI44K344K544OG44Og44CMIGdpdCDjgI3jga4KK+OCs+ODn+ODg+ODiOODreOCsOOBqOOBl+OBpuewoeWNmOOBq+W8leeUqOOBp+OBjeOCi+W9ouOBp+abuOOBkeOBsOOAgeODoeODs+ODhuODiuOBi+OCieaEn+isneOBleOCjOOCi+OBp+OBl+OCh+OBhuOAggor5Lul5LiL44GuICMxNSDjgpLopovjgabjgY/jgaDjgZXjgYTjgIIKKwor6Kqs5piO44GM6ZW344GP44Gq44KK44Gg44GX44Gf44Gu44Gn44GC44KM44Gw44CB44GK44Gd44KJ44GP44Gd44KM44Gv44OR44OD44OB44KS5YiG44GR44KL5b+F6KaB44GM44GC44KLCivjgajjgYTjgYblhYblgJnjgafjgZnjgILmrKHjga4gIzMg44KS6KaL44Gm44GP44Gg44GV44GE44CCCisKK+ODkeODg+ODgSjjgrfjg6rjg7zjgrop44KSKOWGjSnmipXnqL/jgZnjgovmmYLjgIHljYHliIbjgarjg5Hjg4Pjg4Hjga7oqqzmmI7jgajjgZ3jga7jg5Hjg4Pjg4HjgYzlv4XopoHjgarnkIbnlLHjgpIKK+ODkeODg+ODgeOBq+WQq+OCgeOBpuOBj+OBoOOBleOBhOOAguOBn+OBoOOAjOOBk+OCjOOBr+ODkeODg+ODgSjjgrfjg6rjg7zjgrop44Gu44OQ44O844K444On44OzIE7jgI3jgajjgaDjgZEKK+abuOOBi+OBquOBhOOBp+OBj+OBoOOBleOBhOOAguOBneOBl+OBpuOAgeODkeODg+ODgeOCkuODnuODvOOCuOOBmeOCi+S6uuOBq+ODkeODg+ODgeOBruiqrOaYjuOCkuaOouOBleOBm+OBneOCjOOCkgor44OR44OD44OB44Gr6L+96KiY44GV44Gb44KL44Gf44KB44CB6YGO5Y6744Gu44OQ44O844K444On44Oz44Gu44OR44OD44OB44KE44Gd44Gu44OR44OD44OB44GuIFVSTCDjgpLlj4LnhafjgZnjgosKK+aJi+mWk+OCkuOBi+OBkeOBleOBm+OBquOBhOOBp+OBj+OBoOOBleOBhOOAggor44Gk44G+44KK44CB44OR44OD44OB44K344Oq44O844K644Go44Gd44Gu6Kqs5piO44Gv5LiA57eS44Gr44GC44KL44G544GN44Gn44GZ44CC44GT44KM44Gv44OR44OD44OB44KS44Oe44O844K444GZ44KLCivkurrjgIHjg6zjg5Pjg6Xjg7zjgZnjgovkurrjgIHjganjgaHjgonjga7jgZ/jgoHjgavjgoLjgarjgorjgb7jgZnjgILjg6zjg5Pjg6Xjg7zjgZnjgovkurrjga7kuK3jgavjga/jgIHjgYrjgZ3jgonjgY8KK+mBjuWOu+OBruODkOODvOOCuOODp+ODs+OBruODkeODg+ODgeOCkuWPl+OBkeWPluOBo+OBpuOCguOBhOOBquOBhOS6uuOBjOOBhOOBvuOBmeOAggorCivnmbvpjLLmuIjjgb/jga7jg5DjgrDjgqjjg7Pjg4jjg6rjgpLkv67mraPjgZnjgovjg5Hjg4Pjg4HjgafjgYLjgozjgbDjgIHjgZ3jga7jg5DjgrDjgqjjg7Pjg4jjg6rjgpLnpLrjgZnjg5DjgrAgSUQKK+OChCBVUkwg44KS5piO6KiY44GX44Gm44GP44Gg44GV44GE44CCCisKKzMpIOODkeODg+ODgeOBruWIhuWJsgorCivmhI/lkbPjga7jgYLjgovjgbLjgajjgb7jgajjgb7jgorjgZTjgajjgavlpInmm7TjgpLlgIvjgIXjga7jg5Hjg4Pjg4Hjg5XjgqHjgqTjg6vjgavliIbjgZHjgabjgY/jgaDjgZXjgYTjgIIKKwor5L6L44GI44Gw44CB44KC44GXMeOBpOOBruODieODqeOCpOODkOODvOOBq+WvvuOBmeOCi+ODkOOCsOODleOCo+ODg+OCr+OCueOBqOODkeODleOCqeODvOODnuODs+OCueW8twor5YyW44Gu5Lih5pa544Gu5aSJ5pu044KS5ZCr44KT44Gn44GE44KL44Gu44Gn44GC44KM44Gw44CB44Gd44Gu5aSJ5pu044KSMuOBpOS7peS4iuOBruODkeODg+ODgeOBq+WIhgor44GR44Gm44GP44Gg44GV44GE44CC44KC44GX5aSJ5pu0566H5omA44GrIEFQSSDjga7mm7TmlrDjgajjgIHjgZ3jga7mlrDjgZfjgYQgQVBJIOOCkuS9v+OBhuaWsOOBn+OBqgor44OJ44Op44Kk44OQ44O844GM5ZCr44G+44KM44Gm44GE44KL44Gq44KJ44CBMuOBpOOBruODkeODg+ODgeOBq+WIhuOBkeOBpuOBj+OBoOOBleOBhOOAggorCivkuIDmlrnjgafjgIHjgoLjgZfjgYLjgarjgZ/jgYzlpJrmlbDjga7jg5XjgqHjgqTjg6vjgavlr77jgZfjgabmhI/lkbPnmoTjgavlkIzjgZgx44Gk44Gu5aSJ5pu044KS5Yqg44GICivjgovjga7jgafjgYLjgozjgbDjgIHjgZ3jga7lpInmm7TjgpIx44Gk44Gu44OR44OD44OB44Gr44G+44Go44KB44Gm44GP44Gg44GV44GE44CC6KiA44GE44GL44GI44KL44Go44CBCivmhI/lkbPnmoTjgavlkIzjgZgx44Gk44Gu5aSJ5pu044GvMeOBpOOBruODkeODg+ODgeOBruS4reOBq+WQq+OBvuOCjOOBvuOBmeOAggorCivjgYLjgovjg5Hjg4Pjg4HjgYzlpInmm7TjgpLlrozntZDjgZXjgZvjgovjgZ/jgoHjgavku5bjga7jg5Hjg4Pjg4Hjgavkvp3lrZjjgZfjgabjgYTjgZ/jgajjgZfjgabjgoLjgIEKK+OBneOCjOOBr+WVj+mhjOOBguOCiuOBvuOBm+OCk+OAguODkeODg+ODgeOBruiqrOaYjuOBruS4reOBp+OAjOOBk+OBruODkeODg+ODgeOBr+ODkeODg+ODgSBYIOOBq+S+neWtmAor44GX44Gm44GE44KL44CN44Go57Ch5Y2Y44Gr5rOo5oSP5pu444GN44KS44Gk44GR44Gm44GP44Gg44GV44GE44CCCisKK+OCguOBl+ODkeODg+ODgeOCkuOCiOOCiuWwj+OBleOBquODkeODg+ODgeOBrumbhuWQiOOBq+WHnee4ruOBmeOCi+OBk+OBqOOBjOOBp+OBjeOBquOBhOOBquOCieOAgeOBvuOBmuOBrworMTXjgYvjgZ3jgZPjgonjga7jg5Hjg4Pjg4HjgpLpgIHjgorjgIHjgZ3jga7jg6zjg5Pjg6Xjg7zjgajntbHlkIjjgpLlvoXjgaPjgabkuIvjgZXjgYTjgIIKKworNCkg44OR44OD44OB44Gu44K544K/44Kk44Or44OB44Kn44OD44KvCisKK+OBguOBquOBn+OBruODkeODg+ODgeOBjOWfuuacrOeahOOBqiggTGludXgg44Kr44O844ON44Or44GuKeOCs+ODvOODh+OCo+ODs+OCsOOCueOCv+OCpOODq+OBq+mBleWPjeOBlwor44Gm44GE44Gq44GE44GL44KS44OB44Kn44OD44Kv44GX44Gm5LiL44GV44GE44CC44Gd44Gu6Kmz57Sw44KSIERvY3VtZW50YXRpb24vQ29kaW5nU3R5bGUg44GnCivopovjgaTjgZHjgovjgZPjgajjgYzjgafjgY3jgb7jgZnjgILjgrPjg7zjg4fjgqPjg7PjgrDjgrnjgr/jgqTjg6vjga7pgZXlj43jga/jg6zjg5Pjg6Xjg7zjgZnjgovkurrjga4KK+aZgumWk+OCkueEoemnhOOBq+OBmeOCi+OBoOOBkeOBquOBruOBp+OAgeaBkOOCieOBj+OBguOBquOBn+OBruODkeODg+ODgeOBr+iqreOBvuOCjOOCi+OBk+OBqOOBmeOCieOBquOBjwor5ouS5ZCm44GV44KM44KL44Gn44GX44KH44GG44CCCisKK+OBguOBquOBn+OBr+ODkeODg+ODgeOCkuaKleeov+OBmeOCi+WJjeOBq+acgOS9jumZkOODkeODg+ODgeOCueOCv+OCpOODq+ODgeOCp+ODg+OCq+ODvAorKCBzY3JpcHRzL2NoZWNrcGF0Y2gucGwgKeOCkuWIqeeUqOOBl+OBpuODkeODg+ODgeOCkuODgeOCp+ODg+OCr+OBmeOBueOBjeOBp+OBmeOAggor44KC44GX44OR44OD44OB44Gr6YGV5Y+N44GM44Gu44GT44Gj44Gm44GE44KL44Gq44KJ44Gw44CB44Gd44KM44KJ44Gu5YWo44Gm44Gr44Gk44GE44Gm44GC44Gq44Gf44Gv5q2j5b2T44GqCivnkIbnlLHjgpLnpLrjgZvjgovjgojjgYbjgavjgZfjgabjgYrjgY/lv4XopoHjgYzjgYLjgorjgb7jgZnjgIIKKworNSkg6Zu75a2Q44Oh44O844Or44Gu5a6b5YWI44Gu6YG444Gz5pa5CisKK01BSU5UQUlORVJTIOODleOCoeOCpOODq+OBqOOCveODvOOCueOCs+ODvOODieOBq+ebruOCkumAmuOBl+OBpuOBj+OBoOOBleOBhOOAguOBneOBl+OBpuOAgeOBneOBruWkiQor5pu044GM44Oh44Oz44OG44OK44Gu44GE44KL54m55a6a44Gu44K144OW44K344K544OG44Og44Gr5Yqg44GI44KJ44KM44KL44KC44Gu44Gn44GC44KL44GT44Go44GM5YiG44GLCivjgozjgbDjgIHjgZ3jga7kurrjgavpm7vlrZDjg6Hjg7zjg6vjgpLpgIHjgaPjgabjgY/jgaDjgZXjgYTjgIIKKwor44KC44GX44CB44Oh44Oz44OG44OK44GM6LyJ44Gj44Gm44GE44Gq44GL44Gj44Gf44KK44CB44Oh44Oz44OG44OK44GL44KJ44Gu5b+c562U44GM44Gq44GE44Gq44KJ44CBCitMS01MICggbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZyAp44G444OR44OD44OB44KS6YCB44Gj44Gm44GP44Gg44GV44GE44CC44G744Go44KT44GpCivjga7jgqvjg7zjg43jg6vplovnmbrogIXjga/jgZPjga7jg6Hjg7zjg6rjg7PjgrDjg6rjgrnjg4jjgavnm67jgpLpgJrjgZfjgabjgYrjgorjgIHlpInmm7Tjgavlr77jgZfjgaYKK+OCs+ODoeODs+ODiOOCkuW+l+OCi+OBk+OBqOOBjOOBp+OBjeOBvuOBmeOAggorCisxNeWAi+OCiOOCiuWkmuOBj+OBruODkeODg+ODgeOCkuWQjOaZguOBqyB2Z2VyLmtlcm5lbC5vcmcg44Gu44Oh44O844Oq44Oz44Kw44Oq44K544OI44G46YCB44KJ44GqCivjgYTjgafjgY/jgaDjgZXjgYQhISEKKworTGludXMgVG9ydmFsZHMg44GvIExpbnV4IOOCq+ODvOODjeODq+OBq+WFpeOCi+WFqOOBpuOBruWkieabtOOBq+WvvuOBmeOCi+acgOe1gueahOOBquaEj+aAneaxuuWumuiAhQor44Gn44GZ44CC6Zu75a2Q44Oh44O844Or44Ki44OJ44Os44K544GvIHRvcnZhbGRzQGxpbnV4LWZvdW5kYXRpb24ub3JnIOOBq+OBquOCiuOBvuOBmeOAguW9vOOBrwor5aSa44GP44Gu6Zu75a2Q44Oh44O844Or44KS5Y+X44GR5Y+W44Gj44Gm44GE44KL44Gf44KB44CB44Gn44GN44KL6ZmQ44KK5b2844Gr6Zu75a2Q44Oh44O844Or44KS6YCB44KL44Gu44GvCivpgb/jgZHjgovjgbnjgY3jgafjgZnjgIIKKwor44OQ44Kw44OV44Kj44OD44Kv44K544Gn44GC44Gj44Gf44KK44CB6Ieq5piO44Gq5aSJ5pu044Gn44GC44Gj44Gf44KK44CB6Kmx44GX5ZCI44GE44KS44G744Go44KT44GpCivlv4XopoHjgajjgZfjgarjgYTjg5Hjg4Pjg4Hjga8gTGludXMg44G46Zu75a2Q44Oh44O844Or44KS6YCB44KL44GLIENDIOOBl+OBquOBkeOCjOOBsOOBquOCiuOBvuOBm+OCk+OAggor6Kmx44GX5ZCI44GE44KS5b+F6KaB44Go44GX44Gf44KK44CB5piO56K644Gq44Ki44OJ44OQ44Oz44OG44O844K444GM44Gq44GE44OR44OD44OB44Gv44CB6YCa5bi444G+44GaCivjga8gTEtNTCDjgbjpgIHjgonjgozjgovjgbnjgY3jgafjgZnjgILjg5Hjg4Pjg4HjgYzorbDoq5bjgZXjgozjgZ/lvozjgavjgaDjgZHjgIHjgZ3jga7jg5Hjg4Pjg4HjgpIKK0xpbnVzIOOBuOmAgeOCi+OBueOBjeOBp+OBmeOAggorCis2KSBDQyAo44Kr44O844Oc44Oz44Kz44OU44O8KeWFiOOBrumBuOOBs+aWuQorCivnibnjgavnkIbnlLHjgYzjgarjgYTjgarjgonjgIFMS01MIOOBq+OCgiBDQyDjgZfjgabjgY/jgaDjgZXjgYTjgIIKKworTGludXMg5Lul5aSW44Gu44Kr44O844ON44Or6ZaL55m66ICF44Gv5aSJ5pu044Gr5rCX44Gl44GP5b+F6KaB44GM44GC44KK44CB44Gd44Gu57WQ5p6c44CB5b2844KJ44Gv44GdCivjga7lpInmm7Tjgavlr77jgZfjgabjgrPjg6Hjg7Pjg4jjgpLjgY/jgozjgZ/jgorjgIHjgrPjg7zjg4njgavlr77jgZfjgabjg6zjg5Pjg6Xjg7zjgoTmj5DmoYjjgpLjgY/jgowKK+OCi+OBi+OCguOBl+OCjOOBvuOBm+OCk+OAgkxLTUwg44Go44GvIExpbnV4IOOCq+ODvOODjeODq+mWi+eZuuiAheOBq+OBqOOBo+OBpuS4gOeVquS4reW/g+eahOOBquODoeODvAor44Oq44Oz44Kw44Oq44K544OI44Gn44GZ44CCVVNCIOOChOODleODrOODvOODoOODkOODg+ODleOCoeODh+ODkOOCpOOCueOChCBWRlMg44KEIFNDU0kg44K144OW44K344K544OGCivjg6Djgarjganjga7nibnlrprjga7jgrXjg5bjgrfjgrnjg4bjg6DjgavplqLjgZnjgovjg6Hjg7zjg6rjg7PjgrDjg6rjgrnjg4jjgoLjgYLjgorjgb7jgZnjgILjgYLjgarjgZ8KK+OBruWkieabtOOBq+OAgeOBr+OBo+OBjeOCiuOBqOmWoumAo+OBruOBguOCi+ODoeODvOODquODs+OCsOODquOCueODiOOBq+OBpOOBhOOBpuefpeOCiuOBn+OBkeOCjOOBsAorTUFJTlRBSU5FUlMg44OV44Kh44Kk44Or44KS5Y+C54Wn44GX44Gm44GP44Gg44GV44GE44CCCisKK1ZHRVIuS0VSTkVMLk9SRyDjgafjg5vjgrnjg4bjgqPjg7PjgrDjgZXjgozjgabjgYTjgovjg6Hjg7zjg6rjg7PjgrDjg6rjgrnjg4jjga7kuIDopqfjgYzkuIvoqJjjga4KK+OCteOCpOODiOOBq+i8ieOBo+OBpuOBhOOBvuOBmeOAggorPGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvdmdlci1saXN0cy5odG1sPgorCivjgoLjgZfjgIHlpInmm7TjgYzjg6bjg7zjgrbjg6njg7Pjg4njga7jgqvjg7zjg43jg6vjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjgavlvbHpn7/jgpLkuI7jgYgKK+OCi+OBruOBp+OBguOCjOOBsOOAgU1BTi1QQUdFUyDjga7jg6Hjg7Pjg4bjg4ooIE1BSU5UQUlORVJTIOODleOCoeOCpOODq+OBq+S4gOimpwor44GM44GC44KK44G+44GZKeOBqyBtYW4g44Oa44O844K444Gu44OR44OD44OB44KS6YCB44Gj44Gm44GP44Gg44GV44GE44CC5bCR44Gq44GP44Go44KCCivmg4XloLHjgYzjg57jg4vjg6XjgqLjg6vjg5rjg7zjgrjjga7kuK3jgavlhaXjgaPjgabjgY/jgovjgojjgYbjgavjgIHlpInmm7TjgYzotbfjgY3jgZ/jgajjgYTjgYYKK+mAmuefpeOCkumAgeOBo+OBpuOBj+OBoOOBleOBhOOAggorCivjgZ/jgajjgYjjgIHjg6Hjg7Pjg4bjg4rjgYwgIzUg44Gn5Y+N5b+c44GM44Gq44GL44Gj44Gf44Go44GX44Gm44KC44CB44Oh44Oz44OG44OK44Gu44Kz44O844OJ44Gr5aSJ5pu044KSCivliqDjgYjjgZ/jgajjgY3jgavjga/jgIHjgYTjgaTjgoLjg6Hjg7Pjg4bjg4rjgasgQ0Mg44GZ44KL44Gu44KS5b+Y44KM44Gq44GE44KI44GG44Gr44GX44Gm44GP44Gg44GV44GE44CCCisKK+Wwj+OBleOBquODkeODg+ODgeOBp+OBguOCjOOBsOOAgVRyaXZpYWwgUGF0Y2ggTW9ua2V5KOOBoeOCh+OBo+OBqOOBl+OBn+ODkeODg+ODgeOCkumbhuOCgeOBpuOBhOOCiykKKzx0cml2aWFsQGtlcm5lbC5vcmc+44GrIENDIOOBl+OBpuOCguOBhOOBhOOBp+OBmeOAguOBneOBruePvueuoeeQhuiAheOBq+OBpOOBhOOBpuOBryBNQUlOVEFJTkVSUwor44OV44Kh44Kk44Or44KS6KaL44Gm44GP44Gg44GV44GE44CC44Gh44KH44Gj44Go44GX44Gf44OR44OD44OB44Go44Gv5Lul5LiL44Gu44Or44O844Or44Gu44Gp44KM44GLMeOBpOOCkua6gOOBn+OBl+OBpgor44GE44Gq44GR44KM44Gw44Gq44KK44G+44Gb44KT44CCCisg44O744OJ44Kt44Ol44Oh44Oz44OI44Gu44K544Oa44Or44Of44K544Gu5L+u5q2jCisg44O7Z3JlcCgxKSDjgrPjg57jg7Pjg4njgavjgojjgovmpJzntKLjgpLlm7Dpm6PjgavjgZfjgabjgYTjgovjgrnjg5rjg6vjga7kv67mraMKKyDjg7vjgrPjg7Pjg5HjgqTjg6vmmYLjga7orablkYrjga7kv67mraMo54Sh6aeE44Gq6K2m5ZGK44GM5pWj5Lmx44GZ44KL44GT44Go44Gv5aW944G+44GX44GP44Gq44GE44GfCisgICDjgoHjgafjgZkpCisg44O744Kz44Oz44OR44Kk44Or5ZWP6aGM44Gu5L+u5q2jKOOBneOCjOOCieOBruS/ruato+OBjOacrOW9k+OBq+ato+OBl+OBhOWgtOWQiOOBq+mZkOOCiykKKyDjg7vlrp/ooYzmmYLjga7llY/poYzjga7kv67mraMo44Gd44KM44KJ44Gu5L+u5q2j44GM5pys5b2T44Gr5ZWP6aGM44KS5L+u5q2j44GX44Gm44GE44KL5aC05ZCI44Gr6ZmQ44KLKQorIOODu+W7g+atouS6iOWumuOBrumWouaVsOOChOODnuOCr+ODreOCkuS9v+eUqOOBl+OBpuOBhOOCi+OCs+ODvOODieOBrumZpOWOuyjkvosgY2hlY2tfcmVnaW9uICkKKyDjg7vllY/jgYTlkIjjgo/jgZvlhYjjgoTjg4njgq3jg6Xjg6Hjg7Pjg4jjga7kv67mraMKKyDjg7vnp7vmpI3mgKfjga7jgarjgYTjgrPjg7zjg4njgYvjgonnp7vmpI3mgKfjga7jgYLjgovjgrPjg7zjg4njgbjjga7nva7jgY3mj5vjgYgo5bCP44GV44GE56+E5Zuy44GnCisgICDjgYLjgozjgbDjgqLjg7zjgq3jg4bjgq/jg4Hjg6PnibnmnInjga7jgZPjgajjgafjgoLku5bjga7kurrjgYzjgrPjg5Tjg7zjgafjgY3jgb7jgZkpCisg44O75L2c6ICF44KE44Oh44Oz44OG44OK44Gr44KI44KL5L+u5q2jKOOBmeOBquOCj+OBoSBwYXRjaCBtb25rZXkg44Gu5YaN6Lui6YCB44Oi44O844OJKQorCis3KSBNSU1FIOOChOODquODs+OCr+OChOWcp+e4ruODleOCoeOCpOODq+OChOa3u+S7mOODleOCoeOCpOODq+OBp+OBr+OBquOBj+ODl+ODrOOCpOODs+ODhuOCreOCueODiOOBruOBvworCitMaW51cyDjgoTku5bjga7jgqvjg7zjg43jg6vplovnmbrogIXjga/jgYLjgarjgZ/jgYzmipXnqL/jgZfjgZ/lpInmm7TjgpLoqq3jgpPjgafjgIHjgrPjg6Hjg7Pjg4jjgafjgY0KK+OCi+W/heimgeOBjOOBguOCiuOBvuOBmeOAguOCq+ODvOODjeODq+mWi+eZuuiAheOBq+OBqOOBo+OBpuOAgeOBguOBquOBn+OBjOabuOOBhOOBn+OCs+ODvOODieOBrueJueWumuOBrgor6YOo5YiG44Gr44Kz44Oh44Oz44OI44KS44GZ44KL44Gf44KB44Gr44CB5qiZ5rqW55qE44Gq6Zu75a2Q44Oh44O844Or44Kv44Op44Kk44Ki44Oz44OI44Gn5aSJ5pu044GM5byV55SoCivjgafjgY3jgovjgZPjgajjga/ph43opoHjgafjgZnjgIIKKwor5LiK6KiY44Gu55CG55Sx44Gn44CB44GZ44G544Gm44Gu44OR44OD44OB44Gv5paH5Lit44Gr5ZCr44KB44KL5b2i5byP44Gu6Zu75a2Q44Oh44O844Or44Gn5oqV56i/44GVCivjgozjgovjgbnjgY3jgafjgZnjgILorablkYrvvJrjgYLjgarjgZ/jgYzjg5Hjg4Pjg4HjgpLjgrPjg5Tjg7wm44Oa44O844K544OI44GZ44KL6Zqb44Gr44Gv44CB44OR44ODCivjg4HjgpLmlLnmgqrjgZnjgovjgqjjg4fjgqPjgr/jg7zjga7mipjjgorov5TjgZfmqZ/og73jgavms6jmhI/jgZfjgabjgY/jgaDjgZXjgYTjgIIKKwor44OR44OD44OB44KS5Zyn57iu44Gu5pyJ54Sh44Gr6Zai44KP44KJ44GaIE1JTUUg5b2i5byP44Gn5re75LuY44GX44Gq44GE44Gn44GP44Gg44GV44GE44CC5aSa44GP44Gu44OdCivjg5Tjg6Xjg6njg7zjgarpm7vlrZDjg6Hjg7zjg6vjgq/jg6njgqTjgqLjg7Pjg4jjga8gTUlNRSDlvaLlvI/jga7mt7vku5jjg5XjgqHjgqTjg6vjgpLjg5fjg6zjg7zjg7Pjg4YKK+OCreOCueODiOOBqOOBl+OBpumAgeS/oeOBmeOCi+OBqOOBr+mZkOOCieOBquOBhOOBp+OBl+OCh+OBhuOAguOBneOBhuOBquOCi+OBqOOAgembu+WtkOODoeODvOODq+OCr+ODqQor44Kk44Ki44Oz44OI44GM44Kz44O844OJ44Gr5a++44GZ44KL44Kz44Oh44Oz44OI44KS5LuY44GR44KL44GT44Go44KS44Gn44GN44Gq44GP44GX44G+44GZ44CC44G+44Gf44CBCitNSU1FIOW9ouW8j+OBrua3u+S7mOODleOCoeOCpOODq+OBryBMaW51cyDjgavmiYvplpPjgpLlj5bjgonjgZvjgovjgZPjgajjgavjgarjgorjgIHjgZ3jga7lpInmm7TjgpIKK+WPl+OBkeWFpeOCjOOBpuOCguOCieOBhuWPr+iDveaAp+OBjOS9juOBj+OBquOBo+OBpuOBl+OBvuOBhOOBvuOBmeOAggorCivkvovlpJbvvJrjgYrkvb/jgYTjga7pm7vlrZDjg6Hjg7zjg6vjgq/jg6njgqTjgqLjg7Pjg4jjgYzjg5Hjg4Pjg4HjgpLjgoHjgaHjgoPjgY/jgaHjgoPjgavjgZnjgovjga7jgacKK+OBguOCjOOBsOOAgeiqsOOBi+OBjCBNSU1FIOW9ouW8j+OBruODkeODg+ODgeOCkuWGjemAgeOBmeOCi+OCiOOBhuaxguOCgeOCi+OBi+OCguOBl+OCjOOBvuOBm+OCk+OAggorCivkvZnoqIjjgarlpInmm7TjgpLliqDjgYjjgZrjgavjgYLjgarjgZ/jga7jg5Hjg4Pjg4HjgpLpgIHkv6HjgZnjgovjgZ/jgoHjga7pm7vlrZDjg6Hjg7zjg6vjgq/jg6njgqTjgqLjg7Pjg4jjga7oqK3lrpoKK+OBruODkuODs+ODiOOBq+OBpOOBhOOBpuOBryBEb2N1bWVudGF0aW9uL2VtYWlsLWNsaWVudHMudHh0IOOCkuWPgueFp+OBl+OBpuOBj+OBoOOBleOBhOOAggorCis4KSDpm7vlrZDjg6Hjg7zjg6vjga7jgrXjgqTjgroKKwor44OR44OD44OB44KSIExpbnVzIOOBuOmAgeOCi+OBqOOBjeOBr+W4uOOBqyAjNyDjga7miYvpoIbjgavlvpPjgaPjgabjgY/jgaDjgZXjgYTjgIIKKwor5aSn44GN44Gq44OR44OD44OB44Gv44Oh44O844Oq44Oz44Kw44Oq44K544OI44KE44Oh44Oz44OG44OK44Gr44Go44Gj44Gm5LiN6Kaq5YiH44Gn44GZ44CC44OR44OD44OB44GMCivmnKrlnKfnuK7jgacgMzAwS0Ig44KS6LaF44GI44KL44KI44GG44Gn44GC44KL44Gq44KJ44CB44Kk44Oz44K/44O844ON44OD44OI5LiK44Gu44Ki44Kv44K744K55Y+v6IO944GqCivjgrXjg7zjg5Djgavkv53lrZjjgZfjgIHkv53lrZjloLTmiYDjgpLnpLrjgZkgVVJMIOOCkuS8neOBiOOCi+OBu+OBhuOBjOmBqeWIh+OBp+OBmeOAggorCis5KSDjgqvjg7zjg43jg6vjg5Djg7zjgrjjg6fjg7Pjga7mmI7oqJgKKwor44OR44OD44OB44GM5a++6LGh44Go44GZ44KL44Kr44O844ON44Or44Gu44OQ44O844K444On44Oz44KS44OR44OD44OB44Gu5qaC6KaB44GL6Zu75a2Q44Oh44O844Or44GuCivjgrXjg5bjgrjjgqfjgq/jg4jjgavku5jjgZHjgovjgZPjgajjgYzph43opoHjgafjgZnjgIIKKwor44OR44OD44OB44GM5pyA5paw44OQ44O844K444On44Oz44Gu44Kr44O844ON44Or44Gr5q2j44GX44GP6YGp55So44Gn44GN44Gq44GR44KM44Gw44CBTGludXMg44GvCivjgZ3jga7jg5Hjg4Pjg4HjgpLmjqHnlKjjgZfjgarjgYTjgafjgZfjgofjgYbjgIIKKworMTApIOOBjOOBo+OBi+OCiuOBm+OBmuWGjeaKleeovworCivjg5Hjg4Pjg4HjgpLmipXnqL/jgZfjgZ/lvozjga/jgIHovpvmirHlvLfjgY/lvoXjgaPjgabjgYTjgabjgY/jgaDjgZXjgYTjgIJMaW51cyDjgYzjgYLjgarjgZ/jga7jg5Hjg4MKK+ODgeOCkuawl+OBq+WFpeOBo+OBpuaOoeeUqOOBmeOCjOOBsOOAgUxpbnVzIOOBjOODquODquODvOOCueOBmeOCi+asoeOBruODkOODvOOCuOODp+ODs+OBruOCq+ODvOODjeODqwor44Gu5Lit44Gn5ae/44KS6KaL44Gb44KL44Gn44GX44KH44GG44CCCisKK+OBl+OBi+OBl+OAgeODkeODg+ODgeOBjOasoeOBruODkOODvOOCuOODp+ODs+OBruOCq+ODvOODjeODq+OBq+WFpeOBo+OBpuOBhOOBquOBhOOBquOCieOAgeOBhOOBj+OBpOOCguOBrgor55CG55Sx44GM44GC44KL44Gu44Gn44GX44KH44GG44CC44Gd44Gu5Y6f5Zug44KS57We44KK6L6844G/44CB6ZaT6YGV44Gj44Gm44GE44KL44KC44Gu44KS5q2j44GX44CB5pu05pawCivjgZfjgZ/jg5Hjg4Pjg4HjgpLmipXnqL/jgZnjgovjga7jga/jgYLjgarjgZ/jga7ku5XkuovjgafjgZnjgIIKKworTGludXMg44GM44GC44Gq44Gf44Gu44OR44OD44OB44Gr5a++44GX44Gm5L2V44Gu44Kz44Oh44Oz44OI44KC44Gq44GP5LiN5o6h55So44Gr44GZ44KL44GT44Go44Gv5qW144KBCivjgabmma7pgJrjga7jgZPjgajjgafjgZnjgILjgZ3jgozjga/oh6rnhLbjgarlp7/jgafjgZnjgILjgoLjgZfjgIFMaW51cyDjgYzjgYLjgarjgZ/jga7jg5Hjg4Pjg4HjgpLlj5cKK+OBkeWPluOBo+OBpuOBhOOBquOBhOOBruOBp+OBguOCjOOBsOOAgeS7peS4i+OBrueQhueUseOBjOiAg+OBiOOCieOCjOOBvuOBmeOAggorKiDjg5Hjg4Pjg4HjgYzmnIDmlrDjg5Djg7zjgrjjg6fjg7Pjga4gTGludXgg44Kr44O844ON44Or44Gr44GN44Gh44KT44Go6YGp55So44Gn44GN44Gq44GL44Gj44GfCisqIOODkeODg+ODgeOBjCBMS01MIOOBp+WNgeWIhuOBq+itsOirluOBleOCjOOBpuOBhOOBquOBi+OBo+OBnworKiDjgrnjgr/jgqTjg6vjga7llY/poYwo44K744Kv44K344On44OzMuOCkuWPgueFpykKKyog6Zu75a2Q44Oh44O844Or44OV44Kp44O844Oe44OD44OI44Gu5ZWP6aGMKOOBk+OBruOCu+OCr+OCt+ODp+ODs+OCkuWPgueFpykKKyog44OR44OD44OB44Gr5a++44GZ44KL5oqA6KGT55qE44Gq5ZWP6aGMCisqIExpbnVzIOOBr+OBn+OBj+OBleOCk+OBrumbu+WtkOODoeODvOODq+OCkuWPl+OBkeWPluOBo+OBpuOBhOOCi+OBruOBp+OAgeOBqeOBleOBj+OBleOBq+e0m+OCjOOBpuimiworICDlpLHjgaPjgZ8KKyog5LiN5oSJ5b+r44Gr44GV44Gb44Gm44GE44KLCisKK+WIpOaWreOBp+OBjeOBquOBhOWgtOWQiOOBr+OAgUxLTUwg44Gr44Kz44Oh44Oz44OI44KS6aC844KT44Gn44GP44Gg44GV44GE44CCCisKKzExKSDjgrXjg5bjgrjjgqfjgq/jg4jjgavjgIwgUEFUQ0gg44CNCisKK0xpbnVzIOOChCBMS01MIOOBuOOBruWkp+mHj+OBrumbu+WtkOODoeODvOODq+OBruOBn+OCgeOBq+OAgeOCteODluOCuOOCp+OCr+ODiOOBruODl+ODrOODleOCo+ODg+OCr+OCueOBqwor44CMIFtQQVRDSF0g44CN44KS5LuY44GR44KL44GT44Go44GM5oWj57+S44Go44Gq44Gj44Gm44GE44G+44GZ44CC44GT44KM44Gr44KI44Gj44GmIExpbnVzIOOChOS7luOBrgor44Kr44O844ON44Or6ZaL55m66ICF44GM44OR44OD44OB44Gn44GC44KL44Gu44GL44CB5Y+I44Gv44CB5LuW44Gu6K2w6KuW44Gr6Zai44GZ44KL6Zu75a2Q44Oh44O844Or44Gn44GC44KL44GuCivjgYvjgpLjgojjgornsKHljZjjgavorZjliKXjgafjgY3jgb7jgZnjgIIKKworMTIpIOODkeODg+ODgeOBuOOBrue9suWQjQorCivoqrDjgYzkvZXjgpLjgZfjgZ/jga7jgYvjgpLov73jgYTjgYvjgZHjgoTjgZnjgY/jgZnjgovjgZ/jgoHjgasgKOeJueOBq+OAgeODkeODg+ODgeOBjOS9leS6uuOBi+OBrgor44Oh44Oz44OG44OK44KS57WM44Gm5pyA57WC55qE44GrIExpbnV4IOOCq+ODvOODjeODq+OBq+WPluOCiui+vOOBvuOCjOOCi+WgtOWQiOOBruOBn+OCgeOBqynjgIHpm7vlrZAKK+ODoeODvOODq+OBp+OChOOCiuWPluOCiuOBleOCjOOCi+ODkeODg+ODgeOBq+WvvuOBl+OBpuOAjCBzaWduLW9mZiDjgI3jgajjgYTjgYbmiYvntprjgY3jgpLlsI7lhaXjgZcKK+OBvuOBl+OBn+OAggorCivjgIwgc2lnbi1vZmYg44CN44Go44Gv44CB44OR44OD44OB44GM44GC44Gq44Gf44Gu5pu444GE44Gf44KC44Gu44Gn44GC44KL44GL44CB44GC44KL44GE44Gv44CBCivjgYLjgarjgZ/jgYzjgZ3jga7jg5Hjg4Pjg4HjgpLjgqrjg7zjg5fjg7Pjgr3jg7zjgrnjgajjgZfjgabmj5DkvpvjgZnjgovmqKnliKnjgpLkv53mjIHjgZfjgabjgYTjgovjgIEKK+OBqOOBhOOBhuiovOaYjuOCkuODkeODg+ODgeOBruiqrOaYjuOBruacq+WwvuOBq+S4gOihjOiomOi8ieOBmeOCi+OBqOOBhOOBhuOCguOBruOBp+OBmeOAggor44Or44O844Or44Gv44Go44Gm44KC5Y2Y57SU44Gn44GZ44CC5Lul5LiL44Gu6aCF55uu44KS56K66KqN44GX44Gm5LiL44GV44GE44CCCisKKyAgICAgICAg5Y6f5L2c6ICF44Gu6Ki85piO5pu4KCBEQ08gKSAxLjEKKworICAgICAgICDjgZPjga7jg5fjg63jgrjjgqfjgq/jg4jjgavlr4TkuI7jgZnjgovjgoLjga7jgajjgZfjgabjgIHku6XkuIvjga7jgZPjgajjgpLoqLzmmI7jgZnjgovjgIIKKworICAgICAgICAoYSkg5pys5a+E5LiO44Gv56eB44GM5YWo5L2T5Y+I44Gv5LiA6YOo5L2c5oiQ44GX44Gf44KC44Gu44Gn44GC44KK44CB56eB44GM44Gd44Gu44OV44Kh44KkCisgICAgICAgICAgICDjg6vkuK3jgavmmI7npLrjgZXjgozjgZ/jgqrjg7zjg5fjg7Pjgr3jg7zjgrnjg6njgqTjgrvjg7Pjgrnjga7kuIvjgaflhazplovjgZnjgovmqKnliKkKKyAgICAgICAgICAgIOOCkuaMgeOBo+OBpuOBhOOCi+OAguOCguOBl+OBj+OBr+OAgQorCisgICAgICAgIChiKSDmnKzlr4TkuI7jga/jgIHnp4HjgYznn6XjgovpmZDjgorjgIHpganliIfjgarjgqrjg7zjg5fjg7Pjgr3jg7zjgrnjg6njgqTjgrvjg7Pjgrnjgafjgqvjg5AKKyAgICAgICAgICAgIOODvOOBleOCjOOBpuOBhOOCi+aXouWtmOOBruS9nOWTgeOCkuWFg+OBq+OBl+OBpuOBhOOCi+OAguWQjOaZguOBq+OAgeengeOBr+OBneOBruODqeOCpOOCuworICAgICAgICAgICAg44Oz44K544Gu5LiL44Gn44CB56eB44GM5YWo5L2T5Y+I44Gv5LiA6YOo5L2c5oiQ44GX44Gf5L+u5q2j54mp44KS44CB44OV44Kh44Kk44Or5Lit44Gn56S6CisgICAgICAgICAgICDjgZXjgozjgovlkIzkuIDjga7jgqrjg7zjg5fjg7Pjgr3jg7zjgrnjg6njgqTjgrvjg7Pjgrnjgaco55Ww44Gq44KL44Op44Kk44K744Oz44K544Gu5LiL44GnCisgICAgICAgICAgICDmipXnqL/jgZnjgovjgZPjgajjgYzoqLHlj6/jgZXjgozjgabjgYTjgovloLTlkIjjgpLpmaTjgYTjgaYp5oqV56i/44GZ44KL5qip5Yip44KS5oyB44Gj44GmCisgICAgICAgICAgICDjgYTjgovjgILjgoLjgZfjgY/jga/jgIEKKworICAgICAgICAoYykg5pys5a+E5LiO44GvKGEp44CBKGIp44CBKGMp44KS6Ki85piO44GZ44KL56ysM+iAheOBi+OCieengeOBuOebtOaOpeaPkOS+m+OBleOCjOOBnworICAgICAgICAgICAg44KC44Gu44Gn44GC44KK44CB56eB44Gv44Gd44KM44Gr5aSJ5pu044KS5Yqg44GI44Gm44GE44Gq44GE44CCCisKKyAgICAgICAgKGQpIOengeOBr+OBk+OBruODl+ODreOCuOOCp+OCr+ODiOOBqOacrOWvhOS4juOBjOWFrOOBruOCguOBruOBp+OBguOCi+OBk+OBqOOBq+eQhuino+WPiuOBs+WQjOaEj+OBmQorICAgICAgICAgICAg44KL44CC5ZCM5pmC44Gr44CB6Zai5LiO44GX44Gf6KiY6YyyKOaKleeov+OBrumam+OBruWFqOOBpuOBruWAi+S6uuaDheWgseOBqCBzaWduLW9mZiDjgpIKKyAgICAgICAgICAgIOWQq+OCgCnjgYznhKHmnJ/pmZDjgavkv53lhajjgZXjgozjgovjgZPjgajjgajjgIHlvZPoqbLjg5fjg63jgrjjgqfjgq/jg4jlj4jjga/plqLpgKPjgZnjgosKKyAgICAgICAgICAgIOOCquODvOODl+ODs+OCveODvOOCueODqeOCpOOCu+ODs+OCueOBq+ayv+OBo+OBn+W9ouOBp+WGjemFjeW4g+OBleOCjOOCi+OBk+OBqOOBq+eQhuino+WPiuOBsworICAgICAgICAgICAg5ZCM5oSP44GZ44KL44CCCisKK+OCguOBl+OBk+OCjOOBq+WQjOaEj+OBp+OBjeOCi+OBquOCieOAgeS7peS4i+OBruOCiOOBhuOBqjHooYzjgpLov73liqDjgZfjgabjgY/jgaDjgZXjgYTjgIIKKworCVNpZ25lZC1vZmYtYnk6IFJhbmRvbSBKIERldmVsb3BlciA8cmFuZG9tQGRldmVsb3Blci5leGFtcGxlLm9yZz4KKwor5a6f5ZCN44KS5L2/44Gj44Gm44GP44Gg44GV44GE44CCKOaui+W/teOBp+OBmeOBjOOAgeWBveWQjeOChOWMv+WQjeOBq+OCiOOCi+WvhOS4juOBr+OBp+OBjeOBvuOBm+OCk+OAgikKKwor5Lq644Gr44KI44Gj44Gm44GvIHNpZ24tb2ZmIOOBrui/keOBj+OBq+i/veWKoOOBruOCv+OCsOOCkuS7mOWKoOOBl+OBpuOBhOOBvuOBmeOAguOBneOCjOOCieOBr+S7iuOBruOBqOOBk+OCjQor54Sh6KaW44GV44KM44G+44GZ44GM44CB44GC44Gq44Gf44Gv44Gd44Gu44K/44Kw44KS56S+5YaF44Gu5omL57aa44GN44Gr5Yip55So44GX44Gf44KK44CBc2lnbi1vZmYg44Gr54m55YilCivjgarmg4XloLHjgpLnpLrjgZfjgZ/jgorjgZnjgovjgZPjgajjgYzjgafjgY3jgb7jgZnjgIIKKwor44GC44Gq44Gf44GM44K144OW44K344K544OG44Og44G+44Gf44Gv44OW44Op44Oz44OB44Gu44Oh44Oz44OG44OK44Gn44GC44KM44Gw44CB5Y+X44GR5Y+W44Gj44Gf44OR44OD44OB44KS6Ieq6Lqr44GuCivjg4Tjg6rjg7zjgavjg57jg7zjgrjjgZnjgovjgZ/jgoHjgavjgIHjgo/jgZrjgYvjgavlpInmm7TjgYzlv4XopoHjgajjgarjgovloLTlkIjjgYzjgYLjgorjgb7jgZnjgILjgarjgZzjgarjgokKK+OBguOBquOBn+OBruODhOODquODvOOBruS4reOBruOCs+ODvOODieOBqOaKleeov+iAheOBruODhOODquODvOOBruS4reOBruOCs+ODvOODieOBr+WQjOS4gOOBp+OBr+OBquOBhOOBn+OCgeOBp+OBmeOAggor44KC44GX44CB44GC44Gq44Gf44GM5Y6z5a+G44Gr5LiK6KiY44Or44O844OrKGMp44Gr44GT44Gg44KP44KL44Gu44Gn44GC44KM44Gw44CB5oqV56i/6ICF44Gr5YaN5bqm5beu5YiG44KSCivjgajjgovjgojjgYbkvp3poLzjgZnjgbnjgY3jgafjgZnjgILjgZfjgYvjgZfjgIHjgZPjgozjga/mmYLplpPjgajjgqjjg43jg6vjgq7jg7zjgpLpnZ7nlJ/nlKPnmoTjgavmtarosrvjgZnjgosKK+OBk+OBqOOBq+OBquOCiuOBvuOBmeOAguODq+ODvOODqyhiKeOBr+OBguOBquOBn+OBq+OCs+ODvOODieOCkuS/ruato+OBmeOCi+aoqeWIqeOCkuS4juOBiOOBpuOBj+OCjOOBvuOBmeOAggor44GX44GL44GX44CB5oqV56i/6ICF44Gu44Kz44O844OJ44KS5L+u5q2j44GX44CB44Gd44Gu5L+u5q2j44Gr44KI44KL44OQ44Kw44KS5oqV56i/6ICF44Gr5oq844GX5LuY44GR44Gm44GX44G+44GGCivjgZPjgajjga/jgajjgabjgoLlpLHnpLzjgarjgZPjgajjgafjgZnjgILjgZPjga7llY/poYzjgpLop6PmsbrjgZnjgovjgZ/jgoHjgavjgIHmnKvlsL7jga7mipXnqL/ogIXjga4KK1NpZ25lZC1vZmYtYnkg44Go44GC44Gq44Gf44GM44Gd44Gu5pyr5bC+44Gr6L+95Yqg44GZ44KLIFNpZ25lZC1vZmYtYnkg44Gu6ZaT44Gr44CB5L+u5q2j44KSCivliqDjgYjjgZ/jgZPjgajjgpLnpLrjgZkx6KGM44KS6L+95Yqg44GZ44KL44GT44Go44GM5o6o5aWo44GV44KM44Gm44GE44G+44GZ44CCCiso44Gd44GuMeihjOOBruabuOOBjeaWueOBqynmsbrjgb7jgorjga/jgYLjgorjgb7jgZvjgpPjgYzjgIHlpKfmi6zlvKfjga7kuK3jgavpm7vlrZDjg6Hjg7zjg6vjgqLjg4njg6zjgrnjgoTmsI/lkI0KK+OBqOS/ruato+WGheWuueOCkuiomOi8ieOBmeOCi+OChOOCiuaWueOBr+ebruOBq+OBpOOBjeOChOOBmeOBj+OAgeacgOe1guautemajuOBp+OBruWkieabtOOBruiyrOS7u+OBjOOBguOBquOBn+OBqwor44GC44KL44GT44Go44KS5piO56K644Gr44GZ44KL44Gu44Gr5Y2B5YiG44Gq5pa55rOV44Gu44KI44GG44Gn44GZ44CC5L6L44GI44Gw44CBCisKKwlTaWduZWQtb2ZmLWJ5OiBSYW5kb20gSiBEZXZlbG9wZXIgPHJhbmRvbUBkZXZlbG9wZXIuZXhhbXBsZS5vcmc+CisJW2x1Y2t5QG1haW50YWluZXIuZXhhbXBsZS5vcmc6IHN0cnVjdCBmb28gbW92ZWQgZnJvbSBmb28uYyB0byBmb28uaF0KKwlTaWduZWQtb2ZmLWJ5OiBMdWNreSBLIE1haW50YWluZXIgPGx1Y2t5QG1haW50YWluZXIuZXhhbXBsZS5vcmc+CisKK+OBguOBquOBn+OBjOWuieWumueJiOOBruODluODqeODs+ODgeOCkueuoeeQhuOBl+OBpuOBiuOCiuOAgeS9nOaIkOiAheOBruOCr+ODrOOCuOODg+ODiOOAgeWkieabtOOBrui/vei3oeOAgQor5L+u5q2j44Gu44Oe44O844K444CB44Go5ZCM5pmC44Gr6Ium5oOF44GL44KJ44Gu5oqV56i/6ICF44Gu5L+d6K2344KS6KGM44GE44Gf44GE5aC05ZCI44CB44GT44Gu5oWj57+S44Gv54m544GrCivmnInnlKjjgajjgarjgorjgb7jgZnjgILjgYTjgYvjgarjgovkuovmg4XjgYzjgYLjgaPjgabjgoLjg4Hjgqfjg7Pjgrjjg63jgrDjgavlh7rjgabjgY/jgovkvZzmiJDogIXjga4KK+OCouOCpOODh+ODs+ODhuOCo+ODhuOCo+aDheWgsShGcm9tIOODmOODg+ODgCnjga/lpInmm7TjgafjgY3jgarjgYTjgZPjgajjgavms6jmhI/jgZfjgabjgY/jgaDjgZXjgYTjgIIKKwor44OQ44OD44Kv44Od44O844OI44GZ44KL5Lq644Gu44Gf44KB44Gu54m55Yil44Gq5rOo5oSP5LqL6aCF44CC6L+96Leh44KS5a655piT44Gr6KGM44GG44Gf44KB44Gr44CB44Kz44Of44OD44OICivjg6Hjg4Pjgrvjg7zjgrjjga7jg4jjg4Pjg5co44K144OW44K444Kn44Kv44OI6KGM44Gu44GZ44GQ5b6MKeOBq+ODkeODg+ODgeOBrui1t+a6kOOCkuekuuOBmeaDheWgseOCkuiomOi/sOOBmeOCiwor44GT44Go44Gv5LiA6Iis55qE44Gn5pyJ55So44Gq5oWj57+S44Gn44GZ44CC5L6L44GI44Gw44CB44GT44KM44GvIDIuNi1zdGFibGUg44OE44Oq44O844Gn44Gu5LiA5L6L44Gn44GZ44CCICAgIAorCisgICAgRGF0ZTogICBUdWUgTWF5IDEzIDE5OjEwOjMwIDIwMDggKzAwMDAKKworICAgICAgICBTQ1NJOiBsaWJpc2NzaSByZWdyZXNzaW9uIGluIDIuNi4yNTogZml4IG5vcCB0aW1lciBoYW5kbGluZworCisgICAgICAgIGNvbW1pdCA0Y2YxMDQzNTkzZGI2YTMzN2YxMGUwMDZjMjNjNjllNWZjOTNlNzIyIHVwc3RyZWFtCisKK+OBneOBl+OBpuOAgeOBk+OCjOOBryAyLjQg44OE44Oq44O844Gn44Gu5LiA5L6L44Gn44GZ44CCCisKKyAgICBEYXRlOiAgIFR1ZSBNYXkgMTMgMjI6MTI6MjcgMjAwOCArMDIwMAorCisgICAgICAgIHdpcmVsZXNzLCBhaXJvOiB3YWl0YnVzeSgpIHdvbid0IGRlbGF5CisKKyAgICAgICAgW2JhY2twb3J0IG9mIDIuNiBjb21taXQgYjdhY2JkZmJkMWYyNzdjMWViMjNmMzQ0Zjg5OWNmYTRjZDBiZjM2YV0KKwor44Gp44KT44Gq5b2i5byP44Gn44GC44KM44CB44GT44Gu5oOF5aCx44Gv44GC44Gq44Gf44Gu44OE44Oq44O844KS6L+96Leh44GZ44KL5Lq644KE44GC44Gq44Gf44Gu44OE44Oq44O844Gu44OQ44Kw44KSCivop6PmsbrjgZfjgojjgYbjgajjgZfjgabjgYTjgovkurrjgavjgajjgaPjgabkvqHlgKTjga7jgYLjgovmlK/mj7Tjgajjgarjgorjgb7jgZnjgIIKKworMTMpIOOBhOOBpCBBY2tlZC1ieTog44GoIENjOiDjgpLkvb/jgYbjga7jgYsKKwor44CMIFNpZ25lZC1vZmYtYnk6IOOAjeOCv+OCsOOBr+OBneOBrue9suWQjeiAheOBjOODkeODg+ODgeOBrumWi+eZuuOBq+mWouOCj+OBo+OBpuOBhOOBn+OBk+OBqOOChOODkeODg+ODgQor44Gu5Lyd5pKt44OR44K544Gr44GE44Gf44GT44Go44KS56S644GX44Gm44GE44G+44GZ44CCCisKK+OBguOCi+S6uuOBjOebtOaOpeODkeODg+ODgeOBrua6luWCmeOChOS9nOaIkOOBq+mWouOCj+OBo+OBpuOBhOOBquOBhOOBkeOCjOOBqeOAgeOBneOBruS6uuOBruODkeODg+ODgeOBq+WvvuOBmQor44KL5om/6KqN44KS6KiY6Yyy44GX44CB56S644GX44Gf44GE44Go44GX44G+44GZ44CC44Gd44Gu5aC05ZCI44CB44Gd44Gu5Lq644KS56S644GZ44Gu44GrIEFja2VkLWJ5OiDjgYzkvb8KK+OBiOOBvuOBmeOAgkFja2VkLWJ5OiDjga/jg5Hjg4Pjg4Hjga7jg4Hjgqfjg7Pjgrjjg63jgrDjgavjgoLov73liqDjgZXjgozjgb7jgZnjgIIKKwor44OR44OD44OB44Gu5b2x6Z+/44KS5Y+X44GR44KL44Kz44O844OJ44Gu44Oh44Oz44OG44OK44GM44OR44OD44OB44Gr6Zai44KP44Gj44Gm44GE44Gq44GL44Gj44Gf44KK44CB44OR44OD44OBCivjga7kvJ3mkq3jg5HjgrnjgavjgYTjgarjgYvjgaPjgZ/mmYLjgavjgoLjgIHjg6Hjg7Pjg4bjg4rjga8gQWNrZWQtYnk6IOOCkuOBl+OBsOOBl+OBsOWIqeeUqOOBl+OBvuOBmeOAggorCitBY2tlZC1ieTog44GvIFNpZ25lZC1vZmYtYnk6IOOBruOCiOOBhuOBq+WFrOW8j+OBquOCv+OCsOOBp+OBr+OBguOCiuOBvuOBm+OCk+OAguOBneOCjOOBr+ODoeODs+ODhuODiuOBjAor5bCR44Gq44GP44Go44KC44OR44OD44OB44KS44Os44OT44Ol44O844GX44CB5ZCM5oSP44KS56S644GX44Gm44GE44KL44Go44GE44GG6KiY6Yyy44Gn44GZ44CC44Gd44Gu44KI44GG44GqCivjgZPjgajjgYvjgonjg5Hjg4Pjg4HjgpLjg57jg7zjgrjjgZnjgovkurrjgYzjg6Hjg7Pjg4bjg4rjga7jgIzjgYbjgpPjgIHoia/jgYTjgajmgJ3jgYbjgojjgI3jgajjgYTjgYbnmbroqIDjgpIKK0Fja2VkLWJ5OiDjgbjnva7jgY3mj5vjgYjjgovjgZPjgajjgYzjgYLjgorjgb7jgZnjgIIKKworQWNrZWQtYnk6IOOBjOW/heOBmuOBl+OCguODkeODg+ODgeWFqOS9k+OBruaJv+iqjeOCkuekuuOBl+OBpuOBhOOCi+OCj+OBkeOBp+OBr+OBguOCiuOBvuOBm+OCk+OAguS+i+OBiOOBsOOAgQor44GC44KL44OR44OD44OB44GM6KSH5pWw44Gu44K144OW44K344K544OG44Og44G45b2x6Z+/44KS5LiO44GI44Gm44GK44KK44CB44Gd44Gu5Lit44GuMeOBpOOBruOCteODluOCt+OCueODhuODoAor44Gu44Oh44Oz44OG44OK44GL44KJ44GuIEFja2VkLWJ5OiDjgpLmjIHjgaPjgabjgYTjgovjgajjgZfjgb7jgZnjgILjgZ3jga7loLTlkIjjgIFBY2tlZC1ieTog44Gv6YCa5bi4CivjgZ3jga7jg6Hjg7Pjg4bjg4rjga7jgrPjg7zjg4njgavlvbHpn7/jgpLkuI7jgYjjgovkuIDpg6jliIbjgaDjgZHjgavlr77jgZnjgovmib/oqo3jgpLnpLrjgZfjgabjgYTjgb7jgZnjgIIKK+OBk+OBrueCueOBr+OAgeOBlOiHquWIhuOBp+WIpOaWreOBl+OBpuOBj+OBoOOBleOBhOOAgijjgZ3jga4gQWNrZWQtYnk6IOOBjCnnlpHjgo/jgZfjgYTloLTlkIjjga/jgIEKK+ODoeODvOODquODs+OCsOODquOCueODiOOCouODvOOCq+OCpOODluOBruS4reOBruWkp+WFg+OBruitsOirluOCkuWPgueFp+OBmeOBueOBjeOBp+OBmeOAggorCivjg5Hjg4Pjg4HjgavjgrPjg6Hjg7Pjg4jjgZnjgovmqZ/kvJrjgpLmjIHjgaPjgabjgYTjgZ/jgYzjgIHjgZ3jga7mmYLjgavjgrPjg6Hjg7Pjg4jjgZfjgarjgYvjgaPjgZ/kurrjgYzjgYTjgozjgbDjgIEKK+OBneOBruS6uuOCkuaMh+OBmeOAjENjOuOAjeOCv+OCsOOCkuS7u+aEj+OBp+i/veWKoOOBl+OBpuOCguOBi+OBvuOBhOOBvuOBm+OCk+OAguOBk+OCjOOBr+aMh+WumuOBleOCjOOBn+S6uuOBi+OCieOBrgor5piO56K644Gq44Ki44Kv44K344On44Oz44Gq44GX44Gr5LuY5LiO44Gn44GN44KL5ZSv5LiA44Gu44K/44Kw44Gn44GZ44CCCivjgZPjga7jgr/jgrDjga/jg5Hjg4Pjg4HjgavplqLlv4PjgYzjgYLjgovjgajmgJ3jgo/jgozjgovkurrpgZTjgYzjgZ3jga7jg5Hjg4Pjg4Hjga7orbDoq5bjgavlkKvjgb7jgozjgabjgYTjgZ/jgZPjgagKK+OCkuaYjuaWh+WMluOBl+OBvuOBmeOAggorCisxNCkgUmVwb3J0ZWQtYnkg44GoIFRlc3RlZC1ieTog44GoIFJldmlld2VkLWJ5OiDjga7liKnnlKgKKwor5LuW44Gu6Kqw44GL44Gr44KI44Gj44Gm5aCx5ZGK44GV44KM44Gf5ZWP6aGM44KS5L+u5q2j44GZ44KL44OR44OD44OB44Gn44GC44KM44Gw44CB5ZWP6aGM5aCx5ZGK6ICF44Go44GE44GG5a+E5LiO44KSCivjgq/jg6zjgrjjg4Pjg4jjgZnjgovjgZ/jgoHjgavjgIFSZXBvcnRlZC1ieTog44K/44Kw44KS6L+95Yqg44GZ44KL44GT44Go44KS5qSc6KiO44GX44Gm44GP44Gg44GV44GE44CCCivjgZPjgb7jgoHjgavjg5DjgrDloLHlkYrogIXjgpLjgq/jg6zjgrjjg4Pjg4jjgZfjgabjgYTjgY/jgZPjgajjgafjgIHjgYbjgb7jgY/jgYTjgZHjgbDjgZ3jga7kurrjgZ/jgaHjgYzlsIbmnaXlho3jgbMKK+OCs+ODn+ODpeODi+ODhuOCo+OBruWKm+OBqOOBquOBo+OBpuOBj+OCjOOCi+OBp+OBl+OCh+OBhuOAggor44Gf44Gg44GX44CB5aCx5ZGK6ICF44Gu6Kix5Y+v54Sh44GP44GT44Gu44K/44Kw44KS6L+95Yqg44GX44Gq44GE44KI44GG44Gr5rOo5oSP44GX44Gm44GP44Gg44GV44GE44CC54m544Gr44CBCivllY/poYzjgYzlhazjga7loLTjgafloLHlkYrjgZXjgozjgabjgYTjgarjgYvjgaPjgZ/jga7jgafjgYLjgozjgbDjgIIKKworVGVzdGVkLWJ5OiDjgr/jgrDjga/jgr/jgrDjgafmjIflrprjgZXjgozjgZ/kurrjgavjgojjgaPjgaYo44GC44KL55Kw5aKD5LiL44GnKeODkeODg+ODgeOBruODhuOCueODiOOBq+aIkOWKnwor44GX44Gm44GE44KL44GT44Go44KS56S644GX44G+44GZ44CC44GT44Gu44K/44Kw44Gv44Oh44Oz44OG44OK44Gr44OG44K544OI44GM5a6f5pa95riI44G/44Gn44GC44KL44GT44Go44KSCivnn6XjgonjgZvjgIHlsIbmnaXjga7plqLpgKPjg5Hjg4Pjg4Hjga7jg4bjgrnjg4jljZTlipvogIXjgpLopovjgaTjgZHjgovmlrnms5XjgpLmj5DkvpvjgZfjgIHjg4bjgrnjg4jlrp/mlr3ogIXjgasKK+WvvuOBmeOCi+OCr+ODrOOCuOODg+ODiOOCkuS/neiovOOBl+OBvuOBmeOAggorCitSZXZpZXdlZC1ieTog44K/44Kw44Gv44CB44Gd44KM44Go44Gv55Ww44Gq44KK44CB5LiL6KiY44Gu44Os44OT44Ol44O844Ki5a6j6KiA44Gu5LiL44Gr44Os44OT44Ol44O844GV44KM44CBCivlj5fjgZHlhaXjgozlj6/og73jgajjgb/jgarjgZXjgozjgZ/jg5Hjg4Pjg4HjgafjgYLjgovjgZPjgajjgpLnpLrjgZfjgb7jgZnjgIIKKworICAgICAgICDjg6zjg5Pjg6Xjg7zjgqLjgavjgojjgovnm6PnnaPlrqPoqIAKKworICAgICAgICDnp4Hjga8gUmV2aWV3ZWQtYnk6IOOCv+OCsOOCkuaPkOekuuOBmeOCi+OBk+OBqOOBq+OCiOOBo+OBpuOAgeS7peS4i+OBruOBk+OBqOOCkuaYjuiogOOBmeOCi+OAggorCisgICAgICAgIChhKSDnp4Hjga/jg6HjgqTjg7Pjg6njgqTjg7Pjgqvjg7zjg43jg6vjgbjjga7ntbHlkIjjgavlkJHjgZHjgIHjgZ3jga7lpqXlvZPmgKflj4rjgbPjgIzljbPlv5zmgKcKKyAgICAgICAgICAgICjoqLPms6gp44CN44KS5qSc6Ki844GX44CB5oqA6KGT55qE5YG06Z2i44GL44KJ44OR44OD44OB44KS44Os44OT44Ol44O85riI44G/44Gn44GC44KL44CCCisKKyAgICAgICAg6Kiz5rOoOgorICAgICAgICDjgIzljbPlv5zmgKfjgI3jga7ljp/mlofjga8gInJlYWRpbmVzcyLjgIIKKyAgICAgICAg44OR44OD44OB44GM5Y2B5YiG44Gq5ZOB6LOq44KS5oyB44Gj44Gm44GK44KK44CB44Oh44Kk44Oz44Op44Kk44Oz44Kr44O844ON44Or44G444Gu57Wx5ZCI44KS5Y2z5bqn44GrCisgICAgICAgIOihjOOBhuOBk+OBqOOBjOOBp+OBjeOCi+eKtuaFi+OBp+OBguOCi+OBi+OBqeOBhuOBi+OCkiAicmVhZGluZXNzIiDjgajjgYTjgYbljZjoqp7jgafooajnj74KKyAgICAgICAg44GX44Gm44GE44KL44CCCisKKyAgICAgICAgKGIpIOODkeODg+ODgeOBq+mWouOBmeOCi+OBguOCieOChuOCi+WVj+mhjOOAgeaHuOW/teOAgeOBguOCi+OBhOOBr+OAgeeWkeWVj+OBr+aKleeov+iAheOBuOS8nemBlOa4iOOBvworICAgICAgICAgICAg44Gn44GC44KL44CC56eB44Gv44Gd44KM44KJ44Gu44Kz44Oh44Oz44OI44Gr5a++44GZ44KL5oqV56i/6ICF44Gu6L+U562U44Gr5rqA6Laz44GX44Gm44GE44KL44CCCisKKyAgICAgICAgKGMpIOaKleeov+OBq+S8tOOBhOaUueiJr+OBleOCjOOCi+OCs+ODvOODieOBjOOBguOCi+S4gOaWueOBp+OAgeePvuaZgueCueOBp+OAgeengeOBrygxKeOBneOCjOOBjAorICAgICAgICAgICAg44Kr44O844ON44Or44Gr44Go44Gj44Gm5L6h5YCk44Gu44GC44KL5aSJ5pu044Gn44GC44KL44GT44Go44CB44Gd44GX44Gm44CBKDIp57Wx5ZCI44Gr6Zqb44GX44GmCisgICAgICAgICAgICDorbDoq5bjgavjgarjgorlvpfjgovjgojjgYbjgarllY/poYzjga/jgarjgYTjgoLjga7jgajnorrkv6HjgZfjgabjgYTjgovjgIIKKworICAgICAgICAoZCkg56eB44Gv44OR44OD44OB44KS44Os44OT44Ol44O844GX6YGp5YiH44Gn44GC44KL44Go56K65L+h44GX44Gm44GE44KL5LiA5pa544Gn44CB44GC44KJ44KG44KLCisgICAgICAgICAgICDnirbms4HjgavjgYrjgYTjgabjgZ3jga7lrqPoqIDjgZfjgZ/nm67nmoTjgoTmqZ/og73jgYzmraPjgZfjgY/lrp/nj77jgZnjgovjgZPjgajjgavplqLjgZfjgabjgIEKKyAgICAgICAgICAgIOOBhOOBi+OBquOCi+S/neiovOOCguOBl+OBquOBhCjnibnjgavjganjgZPjgYvjgafmmI7npLrjgZfjgarjgYTpmZDjgoop44CCCisKK1Jldmlld2QtYnkg44K/44Kw44Gv44Gd44Gu44OR44OD44OB44GM44Kr44O844ON44Or44Gr5a++44GX44Gm6YGp5YiH44Gq5L+u5q2j44Gn44GC44Gj44Gm44CB5rex5Yi744Gq5oqA6KGT55qECivllY/poYzjgpLmrovjgZfjgabjgYTjgarjgYTjgajjgYTjgYbmhI/opovjga7lrqPoqIDjgafjgZnjgILoiIjlkbPjga7jgYLjgovjg6zjg5Pjg6Xjg7zjgqLjga/oqrDjgafjgoIo44Os44OT44Ol44O8CivkvZzmpa3jgpLntYLjgYjjgZ/jgokp44OR44OD44OB44Gr5a++44GX44GmIFJldmlld2VkLWJ5IOOCv+OCsOOCkuaPkOekuuOBp+OBjeOBvuOBmeOAguOBk+OBruOCv+OCsOOBrwor44Os44OT44Ol44O844Ki44Gu5a+E5LiO44KS44Kv44Os44K444OD44OI44GZ44KL5YON44GN44CB44Os44OT44Ol44O844Gu6YCy5o2X44Gu5bqm5ZCI44GE44KS44Oh44Oz44OG44OK44GrCivnn6XjgonjgZvjgovlg43jgY3jgpLmjIHjgaHjgb7jgZnjgILjgZ3jga7jg5Hjg4Pjg4Hjga7poJjln5/jgavoqbPjgZfjgY/jgIHjgZ3jgZfjgabjgIHjgZfjgaPjgYvjgorjgajjgZfjgZ8KK+ODrOODk+ODpeODvOOCkuWun+aWveOBl+OBn+ODrOODk+ODpeODvOOCouOBq+OCiOOBo+OBpuaPkOS+m+OBleOCjOOCi+aZguOAgVJldmlld2VkLWJ5OiDjgr/jgrDjgYzjgYLjgarjgZ/jga4KK+ODkeODg+ODgeOCkuOCq+ODvOODjeODq+OBq+ODnuODvOOCuOOBmeOCi+WPr+iDveaAp+OCkumrmOOCgeOCi+OBp+OBl+OCh+OBhuOAggorCisxNSkg5qiZ5rqW55qE44Gq44OR44OD44OB44Gu44OV44Kp44O844Oe44OD44OICisKK+aomea6lueahOOBquODkeODg+ODgeOBruOCteODluOCuOOCp+OCr+ODiOOBr+S7peS4i+OBruOBqOOBiuOCiuOBp+OBmeOAggorCisgICAgU3ViamVjdDogW1BBVENIIDAwMS8xMjNdIHN1YnN5c3RlbTogc3VtbWFyeSBwaHJhc2UKKwor5qiZ5rqW55qE44Gq44OR44OD44OB44Gu44CB6Zu75a2Q44Oh44O844Or44Gu44Oc44OH44Kj44Gv5Lul5LiL44Gu6aCF55uu44KS5ZCr44KT44Gn44GE44G+44GZ44CCCisKKyAgLSDjg5Hjg4Pjg4Hjga7kvZzmiJDogIXjgpLmmI7oqJjjgZnjgovjgIwgZnJvbSDjgI3ooYwKKworICAtIOepuuihjAorCisgIC0g6Kqs5piO5pys5L2T44CC44GT44KM44Gv44GT44Gu44OR44OD44OB44KS6Kqs5piO44GZ44KL44Gf44KB44Gr54Sh5pyf6ZmQ44Gu44OB44Kn44Oz44K444Ot44KwCisgICAgKOWkieabtOWxpeattCnjgavjgrPjg5Tjg7zjgZXjgozjgb7jgZnjgIIKKworICAtIOS4iui/sOOBl+OBn+OAjCBTaWduZWQtb2ZmLWJ5OiDjgI3ooYzjgILjgZPjgozjgoLoqqzmmI7mnKzkvZPjgajlkIzjgZjjgY/jg4Hjgqfjg7MKKyAgICDjgrjjg63jgrDlhoXjgavjgrPjg5Tjg7zjgZXjgozjgb7jgZnjgIIKKworICAtIOODnuODvOOCq+ODvOihjOOBr+WNmOe0lOOBq+OAjCAtLS0g44CN44Gn44GZ44CCCisKKyAgLSDkvZnoqIjjgarjgrPjg6Hjg7Pjg4jjga/jgIHjg4Hjgqfjg7Pjgrjjg63jgrDjgavjga/kuI3pganliIfjgafjgZnjgIIKKworICAtIOWun+mam+OBruODkeODg+ODgSjlt67liIblh7rlipspCisKK+OCteODluOCuOOCp+OCr+ODiOihjOOBruODleOCqeODvOODnuODg+ODiOOBr+OAgeOCouODq+ODleOCoeODmeODg+ODiOmghuOBp+mbu+WtkOODoeODvOODq+OCkuOBqOOBpuOCggor44K944O844OI44GX44KE44GZ44GE44KC44Gu44Gr44Gq44Gj44Gm44GE44G+44GZ44CCKOOBu+OBqOOCk+OBqeOBrumbu+WtkOODoeODvOODq+OCr+ODqeOCpOOCouODs+ODiAor44Gv44K944O844OI44KS44K144Od44O844OI44GX44Gm44GE44G+44GZKeODkeODg+ODgeOBruOCteODluOCuOOCp+OCr+ODiOOBrumAo+eVquOBrzDoqbDjgoHjgafjgYIKK+OCi+OBn+OCgeOAgeaVsOWtl+OBp+OBruOCveODvOODiOOBqOOCouODq+ODleOCoeODmeODg+ODiOOBp+OBruOCveODvOODiOOBr+WQjOOBmOe1kOaenOOBq+OBquOCiuOBvuOBmeOAggorCivpm7vlrZDjg6Hjg7zjg6vjga7jgrXjg5bjgrjjgqfjgq/jg4jlhoXjga7jgrXjg5bjgrfjgrnjg4bjg6DooajoqJjjga/jgIHjg5Hjg4Pjg4HjgYzpgannlKjjgZXjgozjgosKK+WIhumHjuOBvuOBn+OBr+OCteODluOCt+OCueODhuODoOOCkuitmOWIpeOBp+OBjeOCi+OCiOOBhuOBq+OBmeOBueOBjeOBp+OBmeOAggorCivpm7vlrZDjg6Hjg7zjg6vjga7jgrXjg5bjgrjjgqfjgq/jg4jjga7jgIxzdW1tYXJ5IHBocmFzZeOAjeOBr+OBneOBruODkeODg+ODgeOBruamguimgeOCkuato+eiugor44Gr6KGo54++44GX44Gq44GR44KM44Gw44Gq44KK44G+44Gb44KT44CC44CMc3VtbWFyeSBwaHJhc2XjgI3jgpLjg5XjgqHjgqTjg6vlkI3jgavjgZfjgabjga/jgYQKK+OBkeOBvuOBm+OCk+OAguODkeODg+ODgeOCt+ODquODvOOCuuS4reOBp+OBneOCjOOBnuOCjOOBruODkeODg+ODgeOBr+WQjOOBmOOAjHN1bW1hcnkgcGhyYXNl44CN44KSCivkvb/jgaPjgabjga/jgYTjgZHjgb7jgZvjgpMo44CM44OR44OD44OB44K344Oq44O844K644CN44Go44Gv6aCG5bqP5LuY44GR44KJ44KM44Gf6Zai6YCj44Gu44GC44KL6KSH5pWw44GuCivjg5Hjg4Pjg4HnvqTjgafjgZkp44CCCisKK+OBguOBquOBn+OBrumbu+WtkOODoeODvOODq+OBruOAjHN1bW1hcnkgcGhyYXNl44CN44GM44Gd44Gu44OR44OD44OB44Gr44Go44Gj44Gm5LiW55WM44Gn5ZSv5LiA44Gu6K2Y5Yil5a2Q44GrCivjgarjgovjgojjgYbjgavlv4PjgYzjgZHjgabjgY/jgaDjgZXjgYTjgILjgIxzdW1tYXJ5IHBocmFzZeOAjeOBryBnaXQg44Gu44OB44Kn44Oz44K444Ot44Kw44Gu5Lit44G4CivjgZrjgaPjgajkvJ3mkq3jgZfjgabjgYTjgY3jgb7jgZnjgILjgIxzdW1tYXJ5IHBocmFzZeOAjeOBr+OAgemWi+eZuuiAheOBjOW+jOOBp+ODkeODg+ODgeOCkuWPgueFp+OBmeOCiwor44Gf44KB44Gr6K2w6KuW44Gu5Lit44Gn5Yip55So44GZ44KL44GL44KC44GX44KM44G+44Gb44KT44CCCivkurrjgIXjga/jgZ3jga7jg5Hjg4Pjg4HjgavplqLpgKPjgZfjgZ/orbDoq5bjgpLoqq3jgoDjgZ/jgoHjgavjgIxzdW1tYXJ5IHBocmFzZeOAjeOCkuS9v+OBo+OBpiBnb29nbGUg44GnCivmpJzntKLjgZfjgZ/jgYzjgovjgafjgZfjgofjgYbjgILjgZ3jgozjga/jgb7jgZ8y44CBM+ODtuaciOOBguOBqOOBp+OAgeS6uuOAheOBjOOAjGdpdGvjgI3jgoQKK+OAjGdpdCBsb2cgLS1vbmVsaW5l44CN44Gu44KI44GG44Gq44OE44O844Or44KS5L2/55So44GX44Gm5L2V5Y2D44KC44Gu44OR44OD44OB44Gr55uu44KS6YCa44GZ5pmC44CBCivllK/kuIDnm67jgavjgajjgb7jgovmg4XloLHjgajjgarjgovjgafjgZfjgofjgYbjgIIKKwor44GT44KM44KJ44Gu55CG55Sx44Gu44Gf44KB44CB44CMc3VtbWFyeSBwaHJhc2XjgI3jga/jgarjgZzjg5Hjg4Pjg4HjgYzlv4XopoHjgafjgYLjgovjgYvjgIHjg5Hjg4Pjg4HjgYzkvZXjgpIKK+WkieabtOOBmeOCi+OBi+OBrjLjgaTjga7mg4XloLHjgpLjgZvjgYTjgZzjgYQ3MOOAnDc15paH5a2X44Gn6KGo54++44GX44Gm44GE44Gq44GR44KM44Gw44Gq44KK44G+44Gb44KT44CCCivjgIxzdW1tYXJ5IHBocmFzZeOAjeOBr+ewoea9lOOBp+OBguOCiuiqrOaYjueahOOBp+OBguOCi+ihqOePvuOCkuebruaMh+OBl+OBpOOBpOOAgeOBhuOBvuOBjwor44G+44Go44KB44KJ44KM44Gm44GE44KL5qaC6KaB44Go44Gq44KL44G544GN44Gn44GZ44CCCisKK+OAjHN1bW1hcnkgcGhyYXNl44CN44Gv44CMU3ViamVjdDogW1BBVENIIHRhZ10gPHN1bW1hcnkgcGhyYXNlPuOAjeOBruOCiOOBhuOBq+OAgQor5aSn5ous5byn44Gn6ZaJ44GY44KJ44KM44Gf44K/44Kw44KS5o6l6aCt6L6e44Go44GX44Gm5LuY5Yqg44GX44Gm44KC44GL44G+44GE44G+44Gb44KT44CC44GT44Gu44K/44Kw44GvCivjgIxzdW1tYXJ5IHBocmFzZeOAjeOBruS4gOmDqOOBqOOBr+iAg+OBiOOBvuOBm+OCk+OBjOOAgeODkeODg+ODgeOCkuOBqeOBruOCiOOBhuOBq+WPluOCiuaJseOBhuOBueOBjeOBi+OCkgor6KGo54++44GX44G+44GZ44CCCivkuIDoiKznmoTjgavjga/jgIx2MSwgdjIsIHYz44CN44Gu44KI44GG44Gq44OQ44O844K444On44Oz5oOF5aCx44KS6KGo44GZ44K/44KwKOmBjuWOu+OBruODkeODg+ODgeOBq+WvvuOBmeOCiwor44Kz44Oh44Oz44OI44KS5Y+N5pig44GZ44KL44Gf44KB44Gr6KSH5pWw44Gu44OQ44O844K444On44Oz44Gu44OR44OD44OB44GM5oqV56i/44GV44KM44Gm44GE44KL44Gu44Gn44GC44KM44GwKeOAgQor44CMUkZD44CN44Gu44KI44GG44Gq44Kz44Oh44Oz44OI44KS6KaB5rGC44GZ44KL44K/44Kw44GM5oyZ44GS44KJ44KM44G+44GZ44CC44OR44OD44OB44K344Oq44O844K644Go44GX44GmNOOBpOOBrgor44OR44OD44OB44GM44GC44KM44Gw44CB5YCL44CF44Gu44OR44OD44OB44Gr44CMMS80LCAyLzQsIDMvNCwgNC8044CN44Gu44KI44GG44Gr55Wq5Y+344KS5LuY44GR44Gm44KCCivjgYvjgb7jgYTjgb7jgZvjgpPjgILjgZPjgozjga/plovnmbrogIXjgYzjg5Hjg4Pjg4HjgpLpgannlKjjgZnjgovpoIbnlarjgpLnorrlrp/jgavmiormj6HjgZnjgovjgZ/jgoHjgafjgZnjgIIKK+OBneOBl+OBpuOAgemWi+eZuuiAheOBjOODkeODg+ODgeOCt+ODquODvOOCuuOBruS4reOBruOBmeOBueOBpuOBruODkeODg+ODgeOCkuOCguOCieOBleOBmuODrOODk+ODpeODvOaIluOBhOOBrwor6YGp55So44GZ44KL44Gu44KS5L+d6Ki844GZ44KL44Gf44KB44Gn44GZ44CCCisKK+OCteODluOCuOOCp+OCr+ODiOOBruS+i+OCkuS6jOOBpAorCisgICAgU3ViamVjdDogW3BhdGNoIDIvNV0gZXh0MjogaW1wcm92ZSBzY2FsYWJpbGl0eSBvZiBiaXRtYXAgc2VhcmNoaW5nCisgICAgU3ViamVjdDogW1BBVENIdjIgMDAxLzIwN10geDg2OiBmaXggZWZsYWdzIHRyYWNraW5nCisKK+OAjCBmcm9tIOOAjeihjOOBr+mbu+WtkOODoeODvOODq+OBruODnOODh+OCo+OBruS4gOeVquacgOWIneOBruihjOOBp+OBquOBkeOCjOOBsOOBquOCiuOBvuOBm+OCk+OAggor44Gd44Gu5b2i5byP44Gv5Lul5LiL44Gu44Go44GK44KK44Gn44GZ44CCCisKKyAgICAgICAgRnJvbTogT3JpZ2luYWwgQXV0aG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CisKK+OAjCBmcm9tIOOAjeihjOOBr+ODgeOCp+ODs+OCuOODreOCsOOBruS4reOBp+OAgeOBneOBruODkeODg+ODgeOBruS9nOaIkOiAheOBqOOBl+OBpuOCr+ODrOOCuOODg+ODiOOBleOCjAor44Gm44GE44KL5Lq644KS54m55a6a44GZ44KL44KC44Gu44Gn44GZ44CC44CMIGZyb20g44CN6KGM44GM44GL44GR44Gm44GE44KL44Go44CB6Zu75a2Q44Oh44O844Or44Gu44OY44ODCivjg4Djg7zjga7jgIwgRnJvbTog44CN44GM44CB44OB44Kn44Oz44K444Ot44Kw44Gu5Lit44Gn44OR44OD44OB44Gu5L2c5oiQ6ICF44KS5rG65a6a44GZ44KL44Gf44KB44Gr5L2/44KPCivjgozjgovjgafjgZfjgofjgYbjgIIKKwor6Kqs5piO5pys5L2T44Gv54Sh5pyf6ZmQ44Gu44K944O844K544Gu44OB44Kn44Oz44K444Ot44Kw44Gr44Kz44Of44OD44OI44GV44KM44G+44GZ44CC44Gq44Gu44Gn44CB6Kqs5piOCivmnKzkvZPjga/jgZ3jga7jg5Hjg4Pjg4Hjgavoh7PjgaPjgZ/orbDoq5bjga7oqbPntLDjgpLlv5jjgozjgabjgYTjgovjgYLjgovnqIvluqbjga7mioDph4/jgpLmjIHjgaPjgabjgYTjgovkuroKK+OBjOOBneOBruips+e0sOOCkuaAneOBhOWHuuOBmeOBk+OBqOOBjOOBp+OBjeOCi+OCguOBruOBp+OBquOBkeOCjOOBsOOBquOCiuOBvuOBm+OCk+OAguODkeODg+ODgeOBjOWvvuWHpuOBmeOCiwor6Zqc5a6z44Gu55eH54q2KOOCq+ODvOODjeODq+ODreOCsOODoeODg+OCu+ODvOOCuOOChCBvb3BzIOODoeODg+OCu+ODvOOCuOetiSnjgpLoqJjovInjgZnjgovjgZPjgajjga/llY/poYzjgasKK+WvvuWHpuWPr+iDveOBquODkeODg+ODgeOCkuaxguOCgeOBpuOCs+ODn+ODg+ODiOODreOCsOOCkuaknOe0ouOBmeOCi+S6uuOAheOBq+OBqOOBo+OBpueJueOBq+acieeUqOOBp+OBmeOAggor44OR44OD44OB44GM44Kz44Oz44OR44Kk44Or5ZWP6aGM44KS6Kej5rG644GZ44KL44Gu44Gn44GC44KM44Gw44CB44Gd44Gu44OR44OD44OB44KS5o6i44GX44Gm44GE44KL5Lq644GM6KaL44Gk44GR44KLCivjgZPjgajjgYzjgafjgY3jgovmg4XloLHjgaDjgZHjgafljYHliIbjgafjgYLjgorjgIHjgrPjg7Pjg5HjgqTjg6vmmYLjga7lhajjgabjga7jgqjjg6njg7zjgpLlkKvjgoHjgovlv4XopoHjga8KK+OBguOCiuOBvuOBm+OCk+OAguOAjHN1bW1hcnkgcGhyYXNl44CN44Go5ZCM5qeY44Gr44CB57Ch5r2U44Gn44GC44KK6Kqs5piO55qE44Gn44GC44KL44GT44Go44GM6YeN6KaB44Gn44GZ44CCCisKK+OAjCAtLS0g44CN44Oe44O844Kr44O86KGM44Gv44OR44OD44OB5Yem55CG44OE44O844Or44Gr5a++44GX44Gm44CB44OB44Kn44Oz44K444Ot44Kw44Oh44OD44K744O844K444Gu57WC56uvCivpg6jliIbjgpLoqo3orZjjgZXjgZvjgovjgajjgYTjgYbph43opoHjgarlvbnnm67jgpLmnpzjgZ/jgZfjgb7jgZnjgIIKKwor44CMIC0tLSDjgI3jg57jg7zjgqvjg7zooYzjga7lvozjga7ov73liqDjgrPjg6Hjg7Pjg4jjga7oia/jgYTkvb/nlKjmlrnms5Xjga4x44Gk44GrIGRpZmZzdGF0IOOCs+ODnuODs+ODiQor44GM44GC44KK44G+44GZ44CCZGlmZnN0YXQg44Kz44Oe44Oz44OJ44Go44Gv5L2V44Gu44OV44Kh44Kk44Or44GM5aSJ5pu044GV44KM44CBMeODleOCoeOCpOODq+W9k+OBn+OCiuS9leihjAor6L+95Yqg44GV44KM5L2V6KGM5raI44GV44KM44Gf44GL44KS56S644GZ44KC44Gu44Gn44GZ44CCZGlmZnN0YXQg44Kz44Oe44Oz44OJ44Gv54m544Gr5aSn44GN44Gq44OR44OD44OB44GrCivjgYrjgYTjgablvbnnq4vjgaHjgb7jgZnjgILjgZ3jga7mmYLngrnjgafjgaDjgZHlj4jjga/jg6Hjg7Pjg4bjg4rjgavjgajjgaPjgabjga7jgb/plqLkv4Ljga7jgYLjgovjgrPjg6Hjg7Pjg4gKK+OBr+eEoeacn+mZkOOBq+S/neWtmOOBleOCjOOCi+ODgeOCp+ODs+OCuOODreOCsOOBq+OBqOOBo+OBpumBqeWIh+OBp+OBr+OBguOCiuOBvuOBm+OCk+OAguOBneOBruOBn+OCgeOAgeOBk+OBrgor44KI44GG44Gq44Kz44Oh44Oz44OI44KC44Oe44O844Kr44O86KGM44Gu5b6M44Gr5pu444GL44KM44KL44G544GN44Gn44GZ44CCCivjgZPjga7jgojjgYbjgarjgrPjg6Hjg7Pjg4jjga7oia/jgYTkvovjgajjgZfjgabjgIF2MSDjgaggdjIg44Gu44OQ44O844K444On44Oz6ZaT44Gn5L2V44GM5aSJ5pu044GV44KM44Gf44GL44KSCivooajjgZnjgIzjg5Hjg4Pjg4Hjga7lpInmm7TlsaXmrbTjgI3jgYzmjJnjgZLjgonjgozjgb7jgZnjgIIKKwor44CMIC0tLSDjgI3jg57jg7zjgqvjg7zooYzjga7lvozjgasgZGlmZnN0YXQg44Kz44Oe44Oz44OJ44Gu57WQ5p6c44KS5ZCr44KB44KL44Gu44Gn44GC44KM44Gw44CB44OV44Kh44Kk44OrCivlkI3jga/jgqvjg7zjg43jg6vjgr3jg7zjgrnjg4Tjg6rjg7zjga7jg4jjg4Pjg5fjg4fjgqPjg6zjgq/jg4jjg6rjgYvjgonjga7ooajoqJjjgafliJfoqJjjgZXjgozjgovjgZ/jgoHjgIHmqKrmlrnlkJEKK+OBruOCueODmuODvOOCueOCkuOBqOOCiumBjuOBjuOBquOBhOOCiOOBhuOBq+OAgWRpZmZzdGF0IOOCs+ODnuODs+ODieOBq+OCquODl+OCt+ODp+ODs+OAjCAtcCAxIC13IDcwIOOAjQor44KS5oyH5a6a44GX44Gm44GP44Gg44GV44GEKOOCpOODs+ODh+ODs+ODiOOCkuWQq+OCgeOBpuOBoeOCh+OBhuOBqTgw5YiX44Gr5ZCI44GG44Gn44GX44KH44GGKeOAggorCivpganliIfjgarjg5Hjg4Pjg4Hjga7jg5Xjgqnjg7zjg57jg4Pjg4jjga7oqbPntLDjgavjgaTjgYTjgabjga/jgrvjgq/jgrfjg6fjg7Mz44Gu5Y+C6ICD5paH54yu44KS5Y+C54Wn44GX44GmCivjgY/jgaDjgZXjgYTjgIIKKworMTYpIOOAjGdpdCBwdWxs44CN6KaB5rGC44Gu6YCB44KK5pa5KExpbnVzIOOBrumbu+WtkOODoeODvOODq+OBi+OCiSkKKwor6ZaT6YGV44Gj44Gf44OW44Op44Oz44OB44GL44KJ5byV44Gj5by144KL44Gu44KS6Ziy44GQ44Gf44KB44Gr44CBZ2l0IOODquODneOCuOODiOODquOBruOCouODieODrOOCueOBqAor44OW44Op44Oz44OB5ZCN44KS5ZCM44GY6KGM44GrMeihjOOBp+iomOi8ieOBl+OBpuOBj+OBoOOBleOBhOOAguOBneOBhuOBmeOCi+OBk+OBqOOBp+OAgTPlm57jga7pgKPntprjgq/jg6rjg4Pjgq8KK+OBp+WFqOOBpumBuOaKnuOBp+OBjeOBvuOBmeOAggorCivmraPjgZfjgYTlvaLlvI/jga/kuIvoqJjjga7pgJrjgorjgafjgZnjgIIKKworCSJQbGVhc2UgcHVsbCBmcm9tCisKKwkJZ2l0Oi8vamRlbHZhcmUucGNrLm5lcmltLm5ldC9qZGVsdmFyZS0yLjYgaTJjLWZvci1saW51cworCisJIHRvIGdldCB0aGVzZSBjaGFuZ2VzOiIKKwor44Gd44Gu57WQ5p6c44CB44Ki44OJ44Os44K544KS6Ieq5YiG6Ieq6Lqr44Gn44K/44Kk44OU44Oz44Kw44GX44Gm6ZaT6YGV44GI44KL44GT44Go44Gv44Gq44GP44Gq44KK44G+44GZKOWun+mam+OBq+OAgQor5L2V5bqm44GL6ZaT6YGV44Gj44Gf44OW44Op44Oz44OB44GL44KJ5byV44Gj5by144Gj44Gm44GN44Gm44GX44G+44GE44CB44Gd44Gu5pmC44GrIGRpZmZzdGF0IOOBrue1kOaenOOCkgor5qSc6Ki844GX44Gm6ZaT6YGV44Gj44Gm44GE44KL44GT44Go44Gr5rCX44Gl44GE44Gf44GT44Go44GM44GC44KK44G+44GZ44CC44Gp44GT44GL44KJ5L2V44KS5byV44Gj5by144KL44G544GN44GL44KSCivjgIzmjqLjgZfjgZ/jgorjgI3jgIHmraPjgZfjgYTjg5bjg6njg7Pjg4HlkI3jgYvjganjgYbjgYvjgpLph43jga3jgabjg4Hjgqfjg4Pjgq/jgZfjgZ/jgorjgZnjgovlv4XopoHjgYwKK+OBquOBj+OBquOCjOOBsOOCiOOCiuW/q+mBqeOBq+OBquOCi+OBp+OBl+OCh+OBhinjgIIKKworZGlmZnN0YXQg44Gu57WQ5p6c44KS55Sf5oiQ44GZ44KL44Gf44KB44Gr44CMIGdpdCBkaWZmIC1NIC0tc3RhdCAtLXN1bW1hcnkg44CN44KS5L2/44Gj44GmCivjgY/jgaDjgZXjgYTjgIItTSDjgqrjg5fjgrfjg6fjg7Pjga/jg5XjgqHjgqTjg6vlkI3jga7lpInmm7TjgpLmpJznn6XjgafjgY3jgIEtLXN1bW1hcnkg44Kq44OX44K344On44Oz44GvCivmlrDopo/jg5XjgqHjgqTjg6vjgIHliYrpmaTjgZXjgozjgZ/jg5XjgqHjgqTjg6vjgIHlkI3liY3jgYzlpInmm7TjgZXjgozjgZ/jg5XjgqHjgqTjg6vjga7mpoLopoHjgpLnlJ/miJDjgZfjgb7jgZnjgIIKKworLU0g44Kq44OX44K344On44OzKOODleOCoeOCpOODq+WQjeOBruWkieabtOaknOefpSnjgpLmjIflrprjgZnjgovjgajjgIFkaWZmc3RhdCDjga7ntZDmnpzjga/jgYvjgarjgooKK+eVsOOBquOBo+OBpuOBjeOBvuOBmeOAgmdpdCDjga/lpKfopo/mqKHjgarlpInmm7Qo6L+95Yqg44Go5YmK6Zmk44Gu44Oa44KiKeOCkuODleOCoeOCpOODq+WQjeOBruWkieabtOOBqAor5Yik5pat44GZ44KL44Gf44KB44Gn44GZ44CCCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor44K744Kv44K344On44OzMiAtIOODkuODs+ODiOOBqFRJUFPjgajlsI/mioAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCivjgZPjga7jgrvjgq/jgrfjg6fjg7Pjga8gTGludXgg44Kr44O844ON44Or44Gr5aSJ5pu044KS6YGp55So44GZ44KL44GT44Go44Gr6Zai5L+C44Gu44GC44KL5LiA6Iis55qE44GqCivjgIzjgYrntITmnZ/jgI3jga7lpJrjgY/jgpLovInjgZvjgabjgYTjgb7jgZnjgILniankuovjgavjga/kvovlpJbjgajjgYTjgYbjgoLjga7jgYzjgYLjgorjgb7jgZnjgILjgZfjgYsKK+OBl+S+i+WkluOCkumBqeeUqOOBmeOCi+OBq+OBr+OAgeacrOW9k+OBq+WmpeW9k+OBqueQhueUseOBjOS4jeWPr+asoOOBp+OBmeOAguOBguOBquOBn+OBr+aBkOOCieOBj+OBk+OBrgor44K744Kv44K344On44Oz44KSIExpbnVzIOOBruOCs+ODs+ODlOODpeODvOOCv+ODu+OCteOCpOOCqOODs+OCuTEwMeOBqOWRvOOBtuOBp+OBl+OCh+OBhuOAggorCisxKSBEb2N1bWVudGF0aW9uL0NvZGluZ1N0eWxl44KS5Y+C54WnCisKK+iogOOBhuOBvuOBp+OCguOBquOBj+OAgeOBguOBquOBn+OBruOCs+ODvOODieOBjOOBk+OBruOCs+ODvOODh+OCo+ODs+OCsOOCueOCv+OCpOODq+OBi+OCieOBguOBvuOCiuOBqwor44KC6YC46ISx44GX44Gm44GE44KL44Go44CB44Os44OT44Ol44O844KE44Kz44Oh44Oz44OI44Gq44GX44Gr5Y+X44GR5Y+W44Gj44Gm44KC44KJ44GI44Gq44GE44GL44KC44GXCivjgozjgb7jgZvjgpPjgIIKKwor54m5562G44GZ44G544GN5L6L5aSW44Gv44CB44Kz44O844OJ44KS44GC44KL44OV44Kh44Kk44Or44GL44KJ5Yil44Gu44OV44Kh44Kk44Or44Gr56e75YuVCivjgZnjgovjgajjgY3jgafjgZnjgILjgZPjga7loLTlkIjjgIHjgrPjg7zjg4njgpLnp7vli5XjgZnjgovjg5Hjg4Pjg4Hjgafjga/jgIHnp7vli5XjgZXjgozjgovjgrPjg7zjg4kKK+OBq+mWouOBl+OBpuenu+WLleS7peWkluOBruWkieabtOOCkuS4gOWIh+WKoOOBiOOCi+OBueOBjeOBp+OBr+OBguOCiuOBvuOBm+OCk+OAguOBk+OCjOOBq+OCiOOCiuOAgQor44Kz44O844OJ44Gu56e75YuV44Go44GC44Gq44Gf44GM6KGM44Gj44Gf44Kz44O844OJ44Gu5L+u5q2j44KS5piO56K644Gr5Yy65Yil44Gn44GN44KL44KI44GG44Gr44GqCivjgorjgb7jgZnjgILjgZPjgozjga/lrp/pmpvjgavkvZXjgYzlpInmm7TjgZXjgozjgZ/jgYvjgpLjg6zjg5Pjg6Xjg7zjgZnjgovpmpvjga7lpKfjgY3jgarliqnjgZHjgasKK+OBquOCi+OBqOOBqOOCguOBq+OAgeODhOODvOODq+OBq+OCs+ODvOODieOBruWxpeattOOCkui/vei3oeOBleOBm+OCi+OBk+OBqOOCguWuueaYk+OBq+OBquOCiuOBvuOBmeOAggorCivmipXnqL/jgZnjgovjgojjgorliY3jgavjg5Hjg4Pjg4Hjga7jgrnjgr/jgqTjg6vjg4Hjgqfjg4Pjgqvjg7woIHNjcmlwdHMvY2hlY2twYXRjaC5wbCAp44GnCivjgYLjgarjgZ/jga7jg5Hjg4Pjg4HjgpLjg4Hjgqfjg4Pjgq/jgZfjgabjgY/jgaDjgZXjgYTjgILjgZPjga7jgrnjgr/jgqTjg6vjg4Hjgqfjg4Pjgqvjg7zjga/mnIDntYLntZAKK+irluOBqOOBl+OBpuOBp+OBr+OBquOBj+OAgeaMh+aomeOBqOOBl+OBpuOBv+OCi+OBueOBjeOBp+OBmeOAguOCguOBl+OAgeOBguOBquOBn+OBruOCs+ODvOODieOBjOmBleWPjQor44Gv44GX44Gm44GE44KL44GM5L+u5q2j44GZ44KL44KI44KK6Imv44GP6KaL44GI44KL44Gu44Gn44GC44KM44Gw44CB44GK44Gd44KJ44GP44Gd44Gu44G+44G+44Gr44GZ44KLCivjga7jgYzjg5njgrnjg4jjgafjgZnjgIIKKwor44K544K/44Kk44Or44OB44Kn44OD44Kr44O844Gr44KI44KLM+autemajuOBruODrOODneODvOODiDoKKyAtIOOCqOODqeODvDog6ZaT6YGV44Gj44Gm44GE44KL5Y+v6IO95oCn44GM6auY44GECisgLSDorablkYrvvJrms6jmhI/jgZfjgabjg6zjg5Pjg6Xjg7zjgZnjgovlv4XopoHjgYzjgYLjgosKKyAtIOODgeOCp+ODg+OCr++8muiAg+aFruOBmeOCi+W/heimgeOBjOOBguOCiworCivjgYLjgarjgZ/jga/jg5Hjg4Pjg4HjgavmrovjgaPjgabjgYTjgovlhajjgabjga7pgZXlj43jgavjgaTjgYTjgabjgIHjgZ3jgozjgYzjgarjgZzlv4XopoHjgarjga7jgYvmraPlvZPjgaoKK+eQhueUseOCkuekuuOBm+OCi+OCiOOBhuOBq+OBl+OBpuOBiuOBj+W/heimgeOBjOOBguOCiuOBvuOBmeOAggorCisyKSAjaWZkZWbjga/opovoi6bjgZfjgYQKKworaWZkZWYg44GM5pWj5Lmx44GX44Gf44Kz44O844OJ44Gv44CB6Kqt44KA44Gu44KC44Oh44Oz44OG44OK44Oz44K544GZ44KL44Gu44KC6Z2i5YCS44Gn44GZ44CC44Kz44O844OJ44Gu5LitCivjgacgaWZkZWYg44KS5L2/44KP44Gq44GE44Gn44GP44Gg44GV44GE44CC5Luj44KP44KK44Gr44CB44OY44OD44OA44OV44Kh44Kk44Or44Gu5Lit44GrIGlmZGVmIOOCkuWFpeOCjOOBpuOAgQor5p2h5Lu25LuY44GN44Gn44CB44Kz44O844OJ44Gu5Lit44Gn5L2/44KP44KM44KL6Zai5pWw44KS44CMIHN0YXRpYyBpbmxpbmUg44CN6Zai5pWw44GL44Oe44Kv44Ot44Gn5a6a576p44GXCivjgabjgY/jgaDjgZXjgYTjgILlvozjga/jgrPjg7Pjg5HjgqTjg6njgYzjgIHkvZXjgoLjgZfjgarjgYTnrofmiYDjgpLmnIDpganljJbjgZfjgablj5bjgorljrvjgaPjgabjgY/jgozjgovjgacKK+OBl+OCh+OBhuOAggorCivjgb7jgZrjgYTjgrPjg7zjg4njga7nsKHljZjjgarkvosKKworCWRldiA9IGFsbG9jX2V0aGVyZGV2IChzaXplb2Yoc3RydWN0IGZ1bmt5X3ByaXZhdGUpKTsKKwlpZiAoIWRldikKKwkJcmV0dXJuIC1FTk9ERVY7CisJI2lmZGVmIENPTkZJR19ORVRfRlVOS0lORVNTCisJaW5pdF9mdW5reV9uZXQoZGV2KTsKKwkjZW5kaWYKKwor44Kv44Oq44O844Oz44Ki44OD44OX44GX44Gf44Kz44O844OJ44Gu5L6LCisKKyhpbiBoZWFkZXIpCisJI2lmbmRlZiBDT05GSUdfTkVUX0ZVTktJTkVTUworCXN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X2Z1bmt5X25ldCAoc3RydWN0IG5ldF9kZXZpY2UgKmQpIHt9CisJI2VuZGlmCisKKyhpbiB0aGUgY29kZSBpdHNlbGYpCisJZGV2ID0gYWxsb2NfZXRoZXJkZXYgKHNpemVvZihzdHJ1Y3QgZnVua3lfcHJpdmF0ZSkpOworCWlmICghZGV2KQorCQlyZXR1cm4gLUVOT0RFVjsKKwlpbml0X2Z1bmt5X25ldChkZXYpOworCiszKSDjg57jgq/jg63jgojjgorjgIwgc3RhdGljIGlubGluZSDjgI3jgpLmjqjlpagKKwor44CMIHN0YXRpYyBpbmxpbmUg44CN6Zai5pWw44Gv44Oe44Kv44Ot44KI44KK44KC44Ga44Gj44Go5o6o5aWo44GV44KM44Gm44GE44G+44GZ44CC44Gd44KM44KJ44Gv44CBCivlnovlronlhajmgKfjgYzjgYLjgorjgIHplbfjgZXjgavjgoLliLbpmZDjgYznhKHjgY/jgIHjg5Xjgqnjg7zjg57jg4Pjg4jjga7liLbpmZDjgoLjgYLjgorjgb7jgZvjgpPjgIIKK2djYyDjgavjgYrjgYTjgabjga/jgIHjg57jgq/jg63jgajlkIzjgZjjgY/jgonjgYTou73jgYTjgafjgZnjgIIKKwor44Oe44Kv44Ot44Gv44CMIHN0YXRpYyBpbmxpbmUg44CN44GM5piO44KJ44GL44Gr5LiN6YGp5YiH44Gn44GC44KL44Go5YiG44GL44KL5aC05omAKOmrmOmAn+WMluODkeOCueOBrgor44GE44GP44Gk44GL44Gu54m55a6a44Gu44Kx44O844K5KeOChOOAjCBzdGF0aWMgaW5saW5lIOOAjemWouaVsOOCkuS9v+OBhuOBk+OBqOOBjOOBp+OBjeOBquOBhOOCiOOBhuOBqgor5aC05omAKOODnuOCr+ODreOBruW8leaVsOOBruaWh+Wtl+WIl+mAo+e1kOOBruOCiOOBhuOBqinjgavjgaDjgZHkvb/jgo/jgozjgovjgbnjgY3jgafjgZnjgIIKKwor44CMIHN0YXRpYyBpbmxpbmUg44CN44Gv44CMIHN0YXRpYyBfX2lubGluZV9fIOOAjeOChOOAjCBleHRlcm4gaW5saW5lIOOAjeOChAor44CMIGV4dGVybiBfX2lubGluZV9fIOOAjeOCiOOCiuOCgumBqeWIh+OBp+OBmeOAggorCis0KSDoqK3oqIjjgavlh53jgorjgZnjgY7jgovjgaoKKwor44Gd44KM44GM5pyJ55So44Gr44Gq44KL44GL44Gp44GG44GL5YiG44GL44KJ44Gq44GE44KI44GG44Gq5LiN5piO556t44Gq5bCG5p2l44KS6KaL6LaK44GX44Gf6Kit6KiICivjgpLjgZfjgarjgYTjgafjgY/jgaDjgZXjgYTjgILjgIzjgafjgY3jgovpmZDjgornsKHljZjjgavjgIHjgZ3jgZfjgabjgIHjgZ3jgozku6XkuIrnsKHljZjjgavjgarjgokKK+OBquOBhOOCiOOBhuOBquioreioiOOCkuOBl+OBpuOBj+OBoOOBleOBhOOAguOAjQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCivjgrvjgq/jgrfjg6fjg7MzIOWPguiAg+aWh+eMrgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbmRyZXcgTW9ydG9uLCAiVGhlIHBlcmZlY3QgcGF0Y2giICh0cHApLgorICA8aHR0cDovL3d3dy5vemxhYnMub3JnL35ha3BtL3N0dWZmL3RwcC50eHQ+CisKK0plZmYgR2FyemlrLCAiTGludXgga2VybmVsIHBhdGNoIHN1Ym1pc3Npb24gZm9ybWF0Ii4KKyAgPGh0dHA6Ly9saW51eC55eXoudXMvcGF0Y2gtZm9ybWF0Lmh0bWw+CisKK0dyZWcgS3JvYWgtSGFydG1hbiwgIkhvdyB0byBwaXNzIG9mZiBhIGtlcm5lbCBzdWJzeXN0ZW0gbWFpbnRhaW5lciIuCisgIDxodHRwOi8vd3d3Lmtyb2FoLmNvbS9sb2cvMjAwNS8wMy8zMS8+CisgIDxodHRwOi8vd3d3Lmtyb2FoLmNvbS9sb2cvMjAwNS8wNy8wOC8+CisgIDxodHRwOi8vd3d3Lmtyb2FoLmNvbS9sb2cvMjAwNS8xMC8xOS8+CisgIDxodHRwOi8vd3d3Lmtyb2FoLmNvbS9sb2cvMjAwNi8wMS8xMS8+CisKK05PISEhISBObyBtb3JlIGh1Z2UgcGF0Y2ggYm9tYnMgdG8gbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZyBwZW9wbGUhCisgIDxodHRwczovL2xrbWwub3JnL2xrbWwvMjAwNS83LzExLzMzNj4KKworS2VybmVsIERvY3VtZW50YXRpb24vQ29kaW5nU3R5bGU6CisgIDxodHRwOi8vdXNlcnMuc29zZGcub3JnL35xaXlvbmcvbHhyL3NvdXJjZS9Eb2N1bWVudGF0aW9uL0NvZGluZ1N0eWxlPgorCitMaW51cyBUb3J2YWxkcydzIG1haWwgb24gdGhlIGNhbm9uaWNhbCBwYXRjaCBmb3JtYXQ6CisgIDxodHRwOi8vbGttbC5vcmcvbGttbC8yMDA1LzQvNy8xODM+CisKK0FuZGkgS2xlZW4sICJPbiBzdWJtaXR0aW5nIGtlcm5lbCBwYXRjaGVzIgorICBTb21lIHN0cmF0ZWdpZXMgdG8gZ2V0IGRpZmZpY3VsdCBvciBjb250cm92ZXJzaWFsIGNoYW5nZXMgaW4uCisgIGh0dHA6Ly9oYWxvYmF0ZXMuZGUvb24tc3VibWl0dGluZy1wYXRjaGVzLnBkZgorCistLQorCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vamFfSlAvc3RhYmxlX2FwaV9ub25zZW5zZS50eHQgYi9Eb2N1bWVudGF0aW9uL2phX0pQL3N0YWJsZV9hcGlfbm9uc2Vuc2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NTNiNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2phX0pQL3N0YWJsZV9hcGlfbm9uc2Vuc2UudHh0CkBAIC0wLDAgKzEsMjYzIEBACitOT1RFOgorVGhpcyBpcyBhIHZlcnNpb24gb2YgRG9jdW1lbnRhdGlvbi9zdGFibGVfYXBpX25vbnNlbnNlLnR4dCBpbnRvIEphcGFuZXNlLgorVGhpcyBkb2N1bWVudCBpcyBtYWludGFpbmVkIGJ5IElLRURBLCBNdW5laGlybyA8bS1pa2VkYUBkcy5qcC5uZWMuY29tPgorYW5kIHRoZSBKRiBQcm9qZWN0IHRlYW0gPGh0dHA6Ly93d3cubGludXgub3IuanAvSkYvPi4KK0lmIHlvdSBmaW5kIGFueSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBkb2N1bWVudCBhbmQgdGhlIG9yaWdpbmFsIGZpbGUKK29yIGEgcHJvYmxlbSB3aXRoIHRoZSB0cmFuc2xhdGlvbiwKK3BsZWFzZSBjb250YWN0IHRoZSBtYWludGFpbmVyIG9mIHRoaXMgZmlsZSBvciBKRiBwcm9qZWN0LgorCitQbGVhc2UgYWxzbyBub3RlIHRoYXQgdGhlIHB1cnBvc2Ugb2YgdGhpcyBmaWxlIGlzIHRvIGJlIGVhc2llciB0byByZWFkCitmb3Igbm9uIEVuZ2xpc2ggKHJlYWQ6IEphcGFuZXNlKSBzcGVha2VycyBhbmQgaXMgbm90IGludGVuZGVkIGFzIGEKK2ZvcmsuIFNvIGlmIHlvdSBoYXZlIGFueSBjb21tZW50cyBvciB1cGRhdGVzIG9mIHRoaXMgZmlsZSwgcGxlYXNlIHRyeQordG8gdXBkYXRlIHRoZSBvcmlnaW5hbCBFbmdsaXNoIGZpbGUgZmlyc3QuCisKK0xhc3QgVXBkYXRlZDogMjAwNy8wNy8xOAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor44GT44KM44Gv44CBCitsaW51eC0yLjYuMjItcmM0L0RvY3VtZW50YXRpb24vc3RhYmxlX2FwaV9ub25zZW5zZS50eHQg44Gu5ZKM6KizCivjgafjgZnjgIIKK+e/u+ios+Wbo+S9k++8miBKRiDjg5fjg63jgrjjgqfjgq/jg4ggPCBodHRwOi8vd3d3LmxpbnV4Lm9yLmpwL0pGLyA+Civnv7voqLPml6Ug77yaIDIwMDcvMDYvMTEKK+WOn+iRl+S9nOiAhTogR3JlZyBLcm9haC1IYXJ0bWFuIDwgZ3JlZyBhdCBrcm9haCBkb3QgY29tID4KK+e/u+ios+iAhSDvvJog5rGg55SwIOWul+W6gyA8IG0taWtlZGEgYXQgZHMgZG90IGpwIGRvdCBuZWMgZG90IGNvbSA+CivmoKHmraPogIUg77yaIE1hc2Fub3JpIEtvYmF5YXNoaSDjgZXjgpMgPCB6YXAwMzIxNiBhdCBuaWZ0eSBkb3QgbmUgZG90IGpwID4KKyAgICAgICAgICBTZWlqaSBLYW5la28g44GV44KTIDwgc2thbmVrbyBhdCBhMiBkb3QgbWJuIGRvdCBvciBkb3QganAgPgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKKworTGludXgg44Kr44O844ON44Or44Gu44OJ44Op44Kk44OQ44Kk44Oz44K/44O844OV44Kn44O844K5CivvvIjjgYLjgarjgZ/jga7os6rllY/jgZnjgbnjgabjgavlr77jgZnjgovlm57nrZTjgajjgZ3jga7ku5boq7jjgIXvvIkKKworR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVnIGF0IGtyb2FoIGRvdCBjb20+CisKKwor44GT44Gu5paH5pu444Gv44CB44Gq44GcIExpbnV4IOOBp+OBr+ODkOOCpOODiuODquOCq+ODvOODjeODq+OCpOODs+OCv+ODvOODleOCp+ODvOOCueOBjOWumue+qQor44GV44KM44Gm44GE44Gq44GE44Gu44GL44CB44G+44Gf44Gv44Gq44Gc5LiN5aSJ44Gu44Kr44O844ON44Or44Kk44Oz44K/44O844OV44Kn44O844K544KS5oyB44Gf44GqCivjgYTjga7jgYvjgIHjgajjgYTjgYbjgZPjgajjgpLoqqzmmI7jgZnjgovjgZ/jgoHjgavmm7jjgYvjgozjgZ/jgILjgZPjgZPjgafjga7oqbHpoYzjga/jgIzjgqvjg7zjg40KK+ODq+WGhemDqOOBruOAjeOCpOODs+OCv+ODvOODleOCp+ODvOOCueOBq+OBpOOBhOOBpuOBp+OBguOCiuOAgeODpuODvOOCtuODvOepuumWk+OBqOOBruOCpOODs+OCv+ODvAor44OV44Kn44O844K544Gn44Gv44Gq44GE44GT44Go44KS55CG6Kej44GX44Gm44G744GX44GE44CC44Kr44O844ON44Or44Go44Om44O844K244O856m66ZaT44Go44Gu44KkCivjg7Pjgr/jg7zjg5Xjgqfjg7zjgrnjgajjga/jgqLjg5fjg6rjgrHjg7zjgrfjg6fjg7Pjg5fjg63jgrDjg6njg6DjgYzkvb/nlKjjgZnjgovjgoLjga7jgafjgYLjgorjgIEKK+OBpOOBvuOCiuOCt+OCueODhuODoOOCs+ODvOODq+OBruOCpOODs+OCv+ODvOODleOCp+ODvOOCueOBjOOBk+OCjOOBq+W9k+OBn+OCi+OAguOBk+OCjOOBr+S7iuOBvuOBpwor6ZW344GN44Gr5rih44KK44CB44GL44Gk5LuK5b6M44KC44CM44G+44GV44GX44GP44CN5LiN5aSJ44Gn44GC44KL44CC56eB44Gv56K644GLIDAuOSDjgYvkvZXjgYsKK+OCiOOCiuWJjeOBruOCq+ODvOODjeODq+OCkuS9v+OBo+OBpuODk+ODq+ODieOBl+OBn+WPpOOBhOODl+ODreOCsOODqeODoOOCkuaMgeOBo+OBpuOBhOOCi+OBjOOAgeOBnQor44KM44Gv5pyA5paw44GuIDIuNiDjgqvjg7zjg43jg6vjgafjgoLjgY3jgaHjgpPjgajli5XkvZzjgZnjgovjgILjg6bjg7zjgrbjg7znqbrplpPjgajjga7jgqTjg7MKK+OCv+ODvOODleOCp+ODvOOCueOBr+OAgeODpuODvOOCtuODvOOBqOOCouODl+ODquOCseODvOOCt+ODp+ODs+ODl+ODreOCsOODqeODnuOBjOS4jeWkieaAp+OCkuS/oemgvAor44GX44Gm44KI44GE44KC44Gu44Gu5LiA44Gk44Gn44GC44KL44CCCisKKwor6KaB5peoCistLS0tCisKK+OBguOBquOBn+OBr+S4jeWkieOBruOCq+ODvOODjeODq+OCpOODs+OCv+ODvOODleOCp+ODvOOCueOBjOW/heimgeOBoOOBqOiAg+OBiOOBpuOBhOOCi+OBi+OCguOBl+OCjAor44Gq44GE44GM44CB5a6f6Zqb44Gu44Go44GT44KN44Gv44Gd44GG44Gn44Gv44Gq44GE44CC44GC44Gq44Gf44Gv5b+F6KaB44Go44GX44Gm44GE44KL44KC44Gu44GM5YiGCivjgYvjgaPjgabjgYTjgarjgYTjgILjgYLjgarjgZ/jgYzlv4XopoHjgajjgZfjgabjgYTjgovjgoLjga7jga/lronlrprjgZfjgabli5XkvZzjgZnjgovjg4njg6njgqTjg5AKK+OBp+OBguOCiuOAgeOBneOCjOOBr+ODieODqeOCpOODkOOBjOODoeOCpOODs+OBruOCq+ODvOODjeODq+ODhOODquODvOOBq+WQq+OBvuOCjOOCi+WgtOWQiOOBruOBv+W+lwor44KL44GT44Go44GM44Gn44GN44KL44CC44OJ44Op44Kk44OQ44GM44Oh44Kk44Oz44Gu44Kr44O844ON44Or44OE44Oq44O844Gr5ZCr44G+44KM44Gm44GE44KL44Go44CBCivku5bjgavjgoLlpJrjgY/jga7oia/jgYTjgZPjgajjgYzjgYLjgovjgILjgZ3jgozjga/jgIFMaW51eCDjgpLjgojjgorlvLflm7rjgafjgIHlronlrprjgarjgIHmiJAKK+eGn+OBl+OBn+OCquODmuODrOODvOODhuOCo+ODs+OCsOOCt+OCueODhuODoOOBq+OBmeOCi+OBk+OBqOOBjOOBp+OBjeOCi+OBqOOBhOOBhuOBk+OBqOOBoOOAguOBk+OCjAor44GT44Gd44CB44Gd44KC44Gd44KC44GC44Gq44Gf44GMIExpbnV4IOOCkuS9v+OBhueQhueUseOBruOBr+OBmuOBoOOAggorCisKK+OBr+OBmOOCgeOBqworLS0tLS0tLS0KKwor44Kr44O844ON44Or5YaF6YOo44Gu44Kk44Oz44K/44O844OV44Kn44O844K55aSJ5pu044KS5b+D6YWN44GX44Gq44GR44KM44Gw44Gq44KJ44Gq44GE44OJ44Op44Kk44OQCivjgpLmm7jjgY3jgZ/jgYTjgarjganjgajjgYTjgYbjga7jga/jgIHlpInjgo/jgorogIXjgaDjgZHjgaDjgILjgZPjga7kuJbnlYzjga7jgbvjgajjgpPjganjga7kurrjga/jgIEKK+OBneOBruOCiOOBhuOBquODieODqeOCpOODkOOBjOOBqeOCk+OBquOCpOODs+OCv+ODvOODleOCp+ODvOOCueOCkuS9v+OBo+OBpuOBhOOCi+OBi+OBquOBqeefpeOCieOBqgor44GE44GX44CB44Gd44KT44Gq44OJ44Op44Kk44OQ44Gu44GT44Go44Gq44Gp5YWo44GP5rCX44Gr44KC44GL44GR44Gm44GE44Gq44GE44CCCisKKwor44G+44Ga5Yid44KB44Gr44CB44Kv44Ot44O844K644K944O844K544Go44GL44CB44K944O844K544Kz44O844OJ44Gu6Zqg6JS944Go44GL44CB44OQ44Kk44OK44Oq44GuCivjgb/jgYzphY3luIPjgZXjgozjgovkvb/jgYTnianjgavjgarjgonjgarjgYTku6Pnialb6Kiz5rOoKDEpXeOBqOOBi+OAgeWun+S9k+OBr+ODkOOCpOODiuODqgor44Kz44O844OJ44Gn44Gd44KM44KS6Kqt44G/6L6844KA44Gf44KB44Gu44Op44OD44OR44O86YOo5YiG44Gu44G/44K944O844K544Kz44O844OJ44GM5YWs6ZaL44GV44KMCivjgabjgYTjgovjgajjgYvjgIHjgZ3jga7ku5bnlKjoqp7jga/kvZXjgafjgYLjgowgR1BMIOOBruS4i+OBq+OCveODvOOCueOCs+ODvOODieOBjOODquODquODvOOCuQor44GV44KM44Gm44GE44Gq44GE44Kr44O844ON44Or44OJ44Op44Kk44OQ44Gr6Zai44GZ44KL5rOV55qE44Gq5ZWP6aGM44Gr44Gk44GE44Gm44CB56eB44Gv44CM44GE44GLCivjgarjgovorbDoq5bjgoLjgI3ooYzjgYbjgaTjgoLjgorjgYzjgarjgYTjgILms5XnmoTjgarnlpHllY/jgYzjgYLjgovjga7jgarjgonjgbDjgIHjg5fjg63jgrDjg6njg54KK+OBp+OBguOCi+engeOBp+OBr+OBquOBj+OAgeW8geitt+Wjq+OBq+ebuOirh+OBl+OBpuassuOBl+OBhOOAguOBk+OBk+OBp+OBr+WNmOOBq+OAgeaKgOihk+eahOOBquWVjwor6aGM44Gr44Gk44GE44Gm6L+w44G544KL44GT44Go44Gr44GZ44KL44CC77yI5rOV55qE44Gq5ZWP6aGM44KS6Lu96KaW44GX44Gm44GE44KL44KP44GR44Gn44Gv44Gq44GE44CCCivjgZ3jgozjgonjga/lrp/pmpvjgavlrZjlnKjjgZnjgovjgZfjgIHjgYLjgarjgZ/jga/jgZ3jgozjgpLjgYTjgaTjgoLmsJfjgavjgYvjgZHjgabjgYrjgY/lv4XopoHjgYwKK+OBguOCi++8iQorCivoqLPms6goMSkKK+OAjOS9v+OBhOeJqeOBq+OBquOCieOBquOBhOS7o+eJqeOAjeOBruWOn+aWh+OBryAiYmxvYiIKKworCivjgZXjgabjgZPjgZPjgafjga/jgIHjg5DjgqTjg4rjg6rjgqvjg7zjg43jg6vjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrnjgavjgaTjgYTjgabjgajjgIHjgr3jg7zjgrnjg6wKK+ODmeODq+OBp+OBruOCpOODs+OCv+ODvOODleOCp+ODvOOCueOBruS4jeWkieaAp+OBq+OBpOOBhOOBpuOAgeOBqOOBhOOBhuS6jOOBpOOBruipsemhjOOCkuWPluOCiuS4igor44GS44KL44CC44GT44Gu5LqM44Gk44Gv5LqS44GE44Gr5L6d5a2Y44GZ44KL6Zai5L+C44Gr44GC44KL44GM44CB44G+44Ga44Gv44OQ44Kk44OK44Oq44Kk44Oz44K/44O8Civjg5Xjgqfjg7zjgrnjgavjgaTjgYTjgaborbDoq5bjgpLooYzjgYTjgoTjgaPjgaTjgZHjgabjgZfjgb7jgYrjgYbjgIIKKworCivjg5DjgqTjg4rjg6rjgqvjg7zjg43jg6vjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK+OCguOBl+OCveODvOOCueODrOODmeODq+OBp+OBruOCpOODs+OCv+ODvOODleOCp+ODvOOCueOBjOS4jeWkieOBquOCieOBsOOAgeODkOOCpOODiuODquOCpOODs+OCv+ODvAor44OV44Kn44O844K544KC5b2T54S244Gu44KI44GG44Gr5LiN5aSJ44Gn44GC44KL44CB44Go44GE44GG44Gu44Gv5q2j44GX44GE44Gg44KN44GG44GL77yf5q2j44GX44GPCivjgarjgYTjgIJMaW51eCDjgqvjg7zjg43jg6vjgavplqLjgZnjgovku6XkuIvjga7kuovlrp/jgpLogIPjgYjjgabjgb/jgabjgbvjgZfjgYTjgIIKKyAgLSDjgYLjgarjgZ/jgYzkvb/nlKjjgZnjgovvvKPjgrPjg7Pjg5HjgqTjg6njga7jg5Djg7zjgrjjg6fjg7PjgavjgojjgaPjgabjgIHjgqvjg7zjg43jg6vlhoXpg6gKKyAgICDjga7mp4vpgKDkvZPjga7phY3nva7mp4vpgKDjga/nlbDjgarjgaPjgZ/jgoLjga7jgavjgarjgovjgILjgb7jgZ/jgIHplqLmlbDjga/nlbDjgarjgaPjgZ/mlrkKKyAgICDms5Xjgafjgqvjg7zjg43jg6vjgavlkKvjgb7jgozjgovjgZPjgajjgavjgarjgovjgYvjgoLjgZfjgozjgarjgYTvvIjkvovjgYjjgbDjgqTjg7Pjg6njgqTjg7MKKyAgICDplqLmlbDjgajjgZfjgabmibHjgo/jgozjgZ/jgorjgIHmibHjgo/jgozjgarjgYvjgaPjgZ/jgorjgZnjgovvvInjgILlgIvjgIXjga7plqLmlbDjgYzjganjga4KKyAgICDjgojjgYbjgavjgrPjg7Pjg5HjgqTjg6vjgZXjgozjgovjgYvjga/jgZ3jgozjgbvjganph43opoHjgafjga/jgarjgYTjgYzjgIHmp4vpgKDkvZPjga7jg5Hjg4cKKyAgICDjgqPjg7PjgrDjgYznlbDjgarjgovjgajjgYTjgYbjga7jga/pnZ7luLjjgavph43opoHjgafjgYLjgovjgIIKKyAgLSDjgYLjgarjgZ/jgYzjgqvjg7zjg43jg6vjga7jg5Pjg6vjg4njgqrjg5fjgrfjg6fjg7PjgpLjganjga7jgojjgYbjgavoqK3lrprjgZnjgovjgYvjgavjgojjgaMKKyAgICDjgabjgIHjgqvjg7zjg43jg6vjgavjga/luoPjgYTnr4Tlm7LjgafnlbDjgarjgaPjgZ/kuovmhYvjgYzotbfjgZPjgorlvpfjgovjgIIKKyAgICAgIC0g44OH44O844K/5qeL6YCg44Gv55Ww44Gq44KL44OH44O844K/44OV44Kj44O844Or44OJ44KS5oyB44Gk44GL44KC44GX44KM44Gq44GECisgICAgICAtIOOBhOOBj+OBpOOBi+OBrumWouaVsOOBr+WFqOOBj+Wun+ijheOBleOCjOOBpuOBhOOBquOBhOeKtuaFi+OBq+OBquOCiuW+l+OCiworICAgICAgICDvvIjkvovvvJpTTVDlkJHjgZHjgafjga/jgarjgYTjg5Pjg6vjg4njgafjga/jgIHjgYTjgY/jgaTjgYvjga7jg63jg4Pjgq/jga/kuK3ouqvjgYwKKyAgICAgICAgICDjgqvjg6njgavjgrPjg7Pjg5HjgqTjg6vjgZXjgozjgovvvIkKKyAgICAgIC0g44Kr44O844ON44Or5YaF44Gu44Oh44Oi44Oq44Gv44CB55Ww44Gq44Gj44Gf5pa55rOV44Gn6YWN572u44GV44KM5b6X44KL44CC44GT44KM44Gv44OTCisgICAgICAgIOODq+ODieOCquODl+OCt+ODp+ODs+OBq+S+neWtmOOBl+OBpuOBhOOCi+OAggorICAtIExpbnV4IOOBr+anmOOAheOBqueVsOOBquOCi+ODl+ODreOCu+ODg+OCteOCouODvOOCreODhuOCr+ODgeODo+S4iuOBp+WLleS9nOOBmeOCi+OAggorICAgIOOBguOCi+OCouODvOOCreODhuOCr+ODgeODo+eUqOOBruODkOOCpOODiuODquODieODqeOCpOODkOOCkuOAgeS7luOBruOCouODvOOCreODhuOCr+ODgeODo+OBpworICAgIOato+W4uOOBq+WLleS9nOOBleOBm+OCi+aWueazleOBr+OBquOBhOOAggorCisKK+OBguOCi+eJueWumuOBruOCq+ODvOODjeODq+ioreWumuOCkuS9v+eUqOOBl+OAgeOCq+ODvOODjeODq+OCkuODk+ODq+ODieOBl+OBn+OBruOBqOato+eiuuOBq+WQjOOBmAor77yj44Kz44Oz44OR44Kk44Op44KS5L2/55So44GX44Gm5Y2Y44Gr44Kr44O844ON44Or44Oi44K444Ol44O844Or44KS44Kz44Oz44OR44Kk44Or44GZ44KL44Gg44GR44GnCivjgoLjgIHjgYLjgarjgZ/jga/jgZPjgozjgonjgYTjgY/jgaTjgoLjga7llY/poYzjgavnm7TpnaLjgZnjgovjgZPjgajjgavjgarjgovjgILjgYLjgovnibnlrprjga4KK0xpbnV4IOODh+OCo+OCueODiOODquODk+ODpeODvOOCt+ODp+ODs+OBruOAgeOBguOCi+eJueWumuOBruODquODquODvOOCueODkOODvOOCuOODp+ODs+eUqOOBq+ODogor44K444Ol44O844Or44KS5o+Q5L6b44GX44KI44GG44Go5oCd44Gj44Gf44Gg44GR44Gn44KC44CB44GT44KM44KJ44Gu5ZWP6aGM44KS5byV44GN6LW344GT44GZ44Gr44GvCivljYHliIbjgafjgYLjgovjgILjgavjgoLplqLjgo/jgonjgZogTGludXgg44OH44Kj44K544OI44Oq44OT44Ol44O844K344On44Oz44Gu5pWw44Go44CB44K1Civjg53jg7zjg4jjgZnjgovjg4fjgqPjgrnjg4jjg6rjg5Pjg6Xjg7zjgrfjg6fjg7Pjga7jg6rjg6rjg7zjgrnmlbDjgpLmjpvjgZHnrpfjgZfjgIHjgZ3jgozjgonkuIDjgaQKK+S4gOOBpOOBq+OBpOOBhOOBpuODk+ODq+ODieOCkuihjOOBo+OBn+OBqOOBl+OBn+OCieOAgeS7iuW6puOBr+ODquODquODvOOCueOBlOOBqOOBruODk+ODq+ODieOCquODlwor44K344On44Oz44Gu6YGV44GE44Go44GE44GG5oKq5aSi44Gr44GZ44GQ44GV44G+5oKp44G+44GV44KM44KL44GT44Go44Gr44Gq44KL44CC44G+44Gf44CB44OH44Kj44K5Civjg4jjg6rjg5Pjg6Xjg7zjgrfjg6fjg7Pjga7lkITjg6rjg6rjg7zjgrnjg5Djg7zjgrjjg6fjg7Pjgavjga/jgIHnlbDjgarjgovjg4/jg7zjg4njgqbjgqfjgqLvvIjjg5cKK+ODreOCu+ODg+OCteOCv+OCpOODl+OChOeoruOAheOBruOCquODl+OCt+ODp+ODs++8ieOBq+WvvuW/nOOBmeOCi+OBn+OCgeOAgeS9leeorumhnuOBi+OBruOCq+ODvOODjQor44Or44GM5ZCr44G+44KM44Gm44GE44KL44Go44GE44GG44GT44Go44KC55CG6Kej44GX44Gm5qyy44GX44GE44CC5b6T44Gj44Gm44CB44GC44KL5LiA44Gk44Gu44OqCivjg6rjg7zjgrnjg5Djg7zjgrjjg6fjg7PjgaDjgZHjga7jgZ/jgoHjgavjg6Ljgrjjg6Xjg7zjg6vjgpLkvZzmiJDjgZnjgovloLTlkIjjgafjgoLjgIHjgYLjgarjgZ/jga8KK+S9leODkOODvOOCuOODp+ODs+OCguOBruODouOCuOODpeODvOODq+OCkueUqOaEj+OBl+OBquOBkeOCjOOBsOOBquOCieOBquOBhOOAggorCisKK+S/oeOBmOOBpuassuOBl+OBhOOAguOBk+OBruOCiOOBhuOBquaWueazleOBp+OCteODneODvOODiOOCkue2muOBkeOCiOOBhuOBqOOBmeOCi+OBquOCieOAgeOBguOBquOBnwor44Gv44GE44Ga44KM5q2j5rCX44KS5aSx44GG44Gg44KN44GG44CC6YGg44GE5piU44CB56eB44Gv44Gd44KM44GM44GE44GL44Gr5Zuw6Zuj44Gq44GT44Go44GL44CB6LqrCivjgpLjgoLjgaPjgablrabjgpPjgaDjga7jgaDjg7vjg7vjg7sKKworCivkuI3lpInjga7jgqvjg7zjg43jg6vjgr3jg7zjgrnjg6zjg5njg6vjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCivjg6HjgqTjg7Pjgqvjg7zjg43jg6vjg4Tjg6rjg7zjgavlkKvjgb7jgozjgabjgYTjgarjgYQgTGludXgg44Kr44O844ON44Or44OJ44Op44Kk44OQ44KS57aZ57aaCivjgZfjgabjgrXjg53jg7zjg4jjgZfjgabjgYTjgZPjgYbjgajjgZfjgabjgYTjgovkurrjgZ/jgaHjgajjga7orbDoq5bjgavjgYrjgYTjgabjga/jgIHjgZPjgozjga/mpbUKK+OCgeOBpuOAjOW8leeBq+aAp+OBrumrmOOBhOOAjeipsemhjOOBp+OBguOCi+OAglvoqLPms6goMildCisKK+ios+azqCgyKQor44CM5byV54Gr5oCn44Gu6auY44GE44CN44Gu5Y6f5paH44GvICJ2b2xhdGlsZSLjgIIKK3ZvbGF0aWxlIOOBq+OBr+OAjOaPrueZuuaAp+OBruOAjeOAjOeIhueZuuOBl+OChOOBmeOBhOOAjeOBqOOBhOOBhuaEj+WRs+OBruS7luOAgeOAjOWkieOCj+OCigor44KE44GZ44GE44CN44CM56e744KK5rCX44Gq44CN44Go44GE44GG5oSP5ZGz44GM44GC44KL44CCCivjgIzvvIjjgZPjga7oqbHpoYzjga/vvInniIbnmbrnmoTjgavmv4DjgZfjgYToq5bkuonjgpLlt7vjgY3otbfjgZPjgZfjgYvjga3jgarjgYTjgI3jgajjgYTjgYbjgZPjgagKK+OCkuOAgeOAjO+8iOOCq+ODvOODjeODq+OBruOCveODvOOCueODrOODmeODq+OCpOODs+OCv+ODvOODleOCp+ODvOOCueOBr++8ieenu+OCjeOBhOihjOOBj+OCguOBruOBpwor44GC44KL44CN44Go44GE44GG44GT44Go44KS6YCj5oOz44GV44Gb44KLICJ2b2xhdGlsZSIg44Go44GE44GG5Y2Y6Kqe44Gn6KGo54++44GX44Gm44GE44KL44CCCisKKworTGludXgg44Kr44O844ON44Or44Gu6ZaL55m644Gv57aZ57aa55qE44Gr6YCf44GE44Oa44O844K544Gn6KGM44KP44KM44CB5rG644GX44Gm5q2p44G/44KS57ep44KBCivjgovjgZPjgajjgYzjgarjgYTjgILjgZ3jga7kuK3jgafjgqvjg7zjg43jg6vplovnmbrogIXpgZTjga/jgIHnj77nirbjga7jgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrnjgasKK+OBguOCi+ODkOOCsOOCkuimi+OBpOOBkeOAgeOCiOOCiuiJr+OBhOaWueazleOCkuiAg+OBiOWHuuOBmeOAguW9vOOCieOBr+OChOOBjOOBpuOAgeePvueKtuOBruOCpOODswor44K/44O844OV44Kn44O844K544GM44KI44KK5q2j44GX44GP5YuV5L2c44GZ44KL44KI44GG44Gr5L+u5q2j44KS6KGM44GG44CC44Gd44Gu6YGO56iL44Gn6Zai5pWw44GuCivlkI3liY3jga/lpInmm7TjgZXjgozjgovjgYvjgoLjgZfjgozjgZrjgIHmp4vpgKDkvZPjga/lpKfjgY3jgY/jgIHjgb7jgZ/jga/lsI/jgZXjgY/jgarjgovjgYvjgoLjgZcKK+OCjOOBmuOAgemWouaVsOOBruW8leaVsOOBr+aknOiojuOBl+OBquOBiuOBleOCjOOCi+OBi+OCguOBl+OCjOOBquOBhOOAguOBneOBruOCiOOBhuOBquWgtOWQiOOAgeW8lQor44GN57aa44GN5YWo44Gm44GM5q2j5bi444Gr5YuV5L2c44GZ44KL44KI44GG44CB44Kr44O844ON44Or5YaF44Gn44GT44KM44KJ44Gu44Kk44Oz44K/44O844OV44Kn44O8CivjgrnjgpLkvb/nlKjjgZfjgabjgYTjgovlgIvmiYDjgoLlhajjgablkIzmmYLjgavkv67mraPjgZXjgozjgovjgIIKKworCivlhbfkvZPnmoTjgarkvovjgajjgZfjgabjgIHjgqvjg7zjg43jg6vlhoXjga4gVVNCIOOCpOODs+OCv+ODvOODleOCp+ODvOOCueOCkuaMmeOBkuOCi+OAglVTQgor44K144OW44K344K544OG44Og44Gv44GT44KM44G+44Gn44Gr5bCR44Gq44GP44Go44KC77yT5Zue44Gu5pu444GN55u044GX44GM6KGM44KP44KM44CB44Gd44Gu57WQ5p6cCivjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrnjgYzlpInmm7TjgZXjgozjgZ/jgILjgZPjgozjgonjga7mm7jjgY3nm7TjgZfjga/jgYTjgY/jgaTjgYvjga7nlbDjgarjgaPjgZ8KK+WVj+mhjOOCkuS/ruato+OBmeOCi+OBn+OCgeOBq+ihjOOCj+OCjOOBn+OAggorICAtIOWQjOacn+eahOODh+ODvOOCv+OCueODiOODquODvOODoOOBjOmdnuWQjOacn+OBq+WkieabtOOBleOCjOOBn+OAguOBk+OCjOOBq+OCiOOCiuWkmuaVsOOBruODiQorICAgIOODqeOCpOODkOOCkuWNmOe0lOWMluOBp+OBjeOAgeWFqOOBpuOBruODieODqeOCpOODkOOBruOCueODq+ODvOODl+ODg+ODiOOBjOWQkeS4iuOBl+OBn+OAguS7igorICAgIOOChOOBu+OBqOOCk+OBqeWFqOOBpuOBriBVU0Ig44OH44OQ44Kk44K544Gv44CB6ICD44GI44KJ44KM44KL5pyA6auY44Gu6YCf5bqm44Gn5YuV5L2c44GXCisgICAg44Gm44GE44KL44CCCisgIC0gVVNCIOODieODqeOCpOODkOOBjCBVU0Ig44K144OW44K344K544OG44Og44Gu44Kz44Ki44GL44KJ6KGM44GG44CB44OH44O844K/44OR44Kx44OD44OICisgICAg55So44Gu44Oh44Oi44Oq56K65L+d5pa55rOV44GM5aSJ5pu044GV44KM44Gf44CC44GT44KM44Gr5Ly044GE44CB44GE44GP44Gk44KC44Gu5paH5pu45YyW44GVCisgICAg44KM44Gf44OH44OD44OJ44Ot44OD44Kv5p2h5Lu244KS5Zue6YG/44GZ44KL44Gf44KB44CB5YWo44Gm44GuIFVTQiDjg4njg6njgqTjg5Djga/jgojjgooKKyAgICDlpJrjgY/jga7mg4XloLHjgpIgVVNCIOOCs+OCouOBq+aPkOS+m+OBl+OBquOBkeOCjOOBsOOBquOCieOBquOBhOOCiOOBhuOBq+OBquOBo+OBpuOBhOOCi+OAggorCisKK+OBk+OBruOBp+OBjeOBlOOBqOOBr+OAgeaVsOWkmuOBj+WtmOWcqOOBmeOCi+OCr+ODreODvOOCuuOCveODvOOCueOBruOCquODmuODrOODvOODhuOCo+ODs+OCsOOCt+OCuQor44OG44Og44Go44Gv5YWo44GP5a++54Wn55qE44Gg44CC44Gd44KM44KJ44Gv6ZW35pyf44Gr5rih44KK5Y+k44GEIFVTQiDjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrkKK+OCkuODoeODs+ODhuODiuODs+OCueOBl+OBquOBkeOCjOOBsOOBquOCieOBquOBhOOAguWPpOOBhOOCpOODs+OCv+ODvOODleOCp+ODvOOCueOBjOaui+OCi+OBk+OBqOOBp+OAgQor5paw44Gf44Gq6ZaL55m66ICF44GM5YG254S25Y+k44GE44Kk44Oz44K/44O844OV44Kn44O844K544KS5L2/44GE44CB5q2j44GX44GP44Gq44GE5pa55rOV44Gn6ZaL55m6CivjgpLooYzjgaPjgabjgZfjgb7jgYblj6/og73mgKfjgYznlJ/jgZjjgovjgILjgZPjgozjgavjgojjgorjgrfjgrnjg4bjg6Djga7lronlrprmgKfjga/ljbHpmbrjgavjgZUKK+OCieOBleOCjOOCi+OBk+OBqOOBq+OBquOCi+OAggorCisKK+S4iuOBq+aMmeOBkuOBn+OBqeOBoeOCieOBruS+i+OBq+OBiuOBhOOBpuOCguOAgemWi+eZuuiAhemBlOOBr+OBneOBruWkieabtOOBjOmHjeimgeOBi+OBpOW/heimgeOBpwor44GC44KL44GT44Go44Gr5ZCI5oSP44GX44CB5q+U6LyD55qE5qW944Gr44Gd44KM44KS5a6f6KGM44GX44Gf44CC44KC44GXIExpbnV4IOOBjOOCveODvOOCueODrAor44OZ44Or44Gn44Kk44Oz44K/44O844OV44Kn44O844K544Gu5LiN5aSJ5oCn44KS5L+d6Ki844GX44Gq44GR44KM44Gw44Gq44KJ44Gq44GE44Go44GX44Gf44KJ44CB5pawCivjgZfjgYTjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrnjgpLkvZzjgovjgajlkIzmmYLjgavjgIHlj6TjgYTjgIHllY/poYzjga7jgYLjgovmlrnjgpLku4rlvozjgajjgoLjg6EKK+ODs+ODhuODiuODs+OCueOBmeOCi+OBqOOBhOOBhuS9meioiOOBquS7leS6i+OCkiBVU0Ig44Gu6ZaL55m66ICF44Gr44GV44Gb44Gq44GR44KM44Gw44Gq44KJ44GqCivjgYTjgIJMaW51eCDjga4gVVNCIOmWi+eZuuiAheOBr+OAgeiHquWIhuOBruaZgumWk+OCkuS9v+OBo+OBpuS7leS6i+OCkuOBl+OBpuOBhOOCi+OAguOCiOOBowor44Gm44CB5L6h5YCk44Gu44Gq44GE5L2Z6KiI44Gq5LuV5LqL44KS5aCx6YWs44KC44Gq44GX44Gr5a6f6KGM44GX44KN44Go6KiA44GG44GT44Go44Gv44Gn44GN44Gq44GE44CCCisKKwor44K744Kt44Ol44Oq44OG44Kj5ZWP6aGM44KC44CBTGludXgg44Gr44Go44Gj44Gm44Gv6Z2e5bi444Gr6YeN6KaB44Gn44GC44KL44CC44Gy44Go44Gf44Gz44K744KtCivjg6Xjg6rjg4bjgqPjgavplqLjgZnjgovllY/poYzjgYznmbropovjgZXjgozjgozjgbDjgIHjgZ3jgozjga/mpbXjgoHjgabnn63mnJ/plpPjga7jgYbjgaHjgavkv67mraMKK+OBleOCjOOCi+OAguOCu+OCreODpeODquODhuOCo+WVj+mhjOOBrueZuueUn+OCkumYsuOBkOOBn+OCgeOBruS/ruato+OBr+OAgeOCq+ODvOODjeODq+OBruWGhemDqOOCpAor44Oz44K/44O844OV44Kn44O844K544Gu5aSJ5pu044KS5L2V5bqm44KC5byV44GN6LW344GT44GX44Gm44GN44Gf44CC44Gd44Gu6Zqb5ZCM5pmC44Gr44CB5aSJ5pu044GVCivjgozjgZ/jgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrnjgpLkvb/nlKjjgZnjgovlhajjgabjga7jg4njg6njgqTjg5DjgoLjgb7jgZ/lpInmm7TjgZXjgozjgZ/jgILjgZPjgowKK+OBq+OCiOOCiuWVj+mhjOOBjOino+a2iOOBl+OAgeWwhuadpeWBtueEtuOBq+WVj+mhjOOBjOWGjeeZuuOBl+OBpuOBl+OBvuOCj+OBquOBhOOBk+OBqOOBjOS/neiovOOBlQor44KM44KL44CC44KC44GX5YaF6YOo44Kk44Oz44K/44O844OV44Kn44O844K544Gu5aSJ5pu044GM6Kix44GV44KM44Gq44GE44Go44GX44Gf44KJ44CB44GT44Gu44KI44GGCivjgavjgrvjgq3jg6Xjg6rjg4bjgqPllY/poYzjgpLkv67mraPjgZfjgIHlsIbmnaXlho3nmbrjgZfjgarjgYTjgZPjgajjgpLkv53oqLzjgZnjgovjgZPjgajjgarjgankuI0KK+WPr+iDveOBquOBruOBoOOAggorCisKK+OCq+ODvOODjeODq+OBruOCpOODs+OCv+ODvOODleOCp+ODvOOCueOBr+aZguOBjOe1jOOBpOOBq+OBpOOCjOOCr+ODquODvOODs+ODiuODg+ODl+OCkuWPl+OBkeOCi+OAggor6Kqw44KC5L2/44Gj44Gm44GE44Gq44GE44Kk44Oz44K/44O844OV44Kn44O844K544Gv5YmK6Zmk44GV44KM44KL44CC44GT44KM44Gr44KI44KK44CB5Y+v6IO944Gq6ZmQCivjgorjgqvjg7zjg43jg6vjgYzlsI/jgZXjgY/kv53jgZ/jgozjgIHnj77lvbnjga7lhajjgabjga7jgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrnjgYzlj6/og73jgarpmZDjgooKK+ODhuOCueODiOOBleOCjOOCi+OBk+OBqOOCkuS/neiovOOBl+OBpuOBhOOCi+OBruOBoOOAgu+8iOS9v+OCj+OCjOOBpuOBhOOBquOBhOOCpOODs+OCv+ODvOODleOCp+ODvAor44K544Gu5aal5b2T5oCn44KS44OG44K544OI44GZ44KL44GT44Go44Gv5LiN5Y+v6IO944Go6KiA44Gj44Gm44GE44GE44Gg44KN44GG77yJCisKKworCivjgZPjgozjgYvjgonkvZXjgpLjgZnjgbnjgY3jgYsKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK+OBp+OBr+OAgeOCguOBl+ODoeOCpOODs+OBruOCq+ODvOODjeODq+ODhOODquODvOOBq+WQq+OBvuOCjOOBquOBhCBMaW51eCDjgqvjg7zjg43jg6vjg4njg6njgqQKK+ODkOOBjOOBguOBo+OBn+OBqOOBl+OBpuOAgeOBguOBquOBn+OBr+OAgeOBpOOBvuOCiumWi+eZuuiAheOBr+S9leOCkuOBmeOCi+OBueOBjeOBoOOCjeOBhuOBi++8n+WFqAor44Gm44Gu44OH44Kj44K544OI44Oq44OT44Ol44O844K344On44Oz44Gu5YWo44Gm44Gu44Kr44O844ON44Or44OQ44O844K444On44Oz5ZCR44GR44Gr44OQ44Kk44OK44OqCivjga7jg4njg6njgqTjg5DjgpLkvpvntabjgZnjgovjgZPjgajjga/mgqrlpKLjgafjgYLjgorjgIHjgqvjg7zjg43jg6vjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrnjga7lpIkKK+abtOOCkui/veOBhOOBi+OBkee2muOBkeOCi+OBk+OBqOOCguOBvuOBn+mBjumFt+OBquS7leS6i+OBoOOAggorCisKK+etlOOBiOOBr+ewoeWNmOOAguOBneOBruODieODqeOCpOODkOOCkuODoeOCpOODs+OBruOCq+ODvOODjeODq+ODhOODquODvOOBq+WFpeOCjOOBpuOBl+OBvuOBiOOBsOOCiAor44GE44CC77yI44GT44GT44Gn6KiA5Y+K44GX44Gm44GE44KL44Gu44Gv44CBR1BMIOOBq+W+k+OBo+OBpuWFrOmWi+OBleOCjOOCi+ODieODqeOCpOODkOOBruOBk+OBqAor44Gg44Go44GE44GG44GT44Go44Gr5rOo5oSP44GX44Gm44G744GX44GE44CC44GC44Gq44Gf44Gu44Kz44O844OJ44GM44Gd44KM44Gr6Kmy5b2T44GX44Gq44GE44Gq44KJCivjgbDjgIHjgZXjgojjgarjgonjgILlubjpgYvjgpLnpYjjgorjgb7jgZnjgILjgZToh6rliIbjgafkvZXjgajjgYvjgZfjgabjgY/jgaDjgZXjgYTjgIJBbmRyZXcKK+OBqCBMaW51cyDjgYvjgonjga7jgrPjg6Hjg7Pjg4jvvJxBbmRyZXcg44GoIExpbnVzIOOBruOCs+ODoeODs+ODiOOBuOOBruODquODs+OCr+OCkuOBkwor44GT44Gr572u44GP77ye44KS44Gp44GG44Ge77yJ44OJ44Op44Kk44OQ44GM44Oh44Kk44Oz44OE44Oq44O844Gr5YWl44KM44Gw44CB44Kr44O844ON44Or44Gu44Kk44OzCivjgr/jg7zjg5Xjgqfjg7zjgrnjgYzlpInmm7TjgZXjgozjgZ/loLTlkIjjgIHlpInmm7TjgpLooYzjgaPjgZ/plovnmbrogIXjgavjgojjgaPjgabjg4njg6njgqTjg5DjgoIKK+S/ruato+OBleOCjOOCi+OBk+OBqOOBq+OBquOCi+OBoOOCjeOBhuOAguOBguOBquOBn+OBr+OBu+OBqOOCk+OBqeWKtOWKm+OCkuaJleOBhuOBk+OBqOOBquOBl+OBq+OAgQor5bi444Gr44OT44Or44OJ5Y+v6IO944Gn44GN44Gh44KT44Go5YuV5L2c44GZ44KL44OJ44Op44Kk44OQ44KS5omL44Gr5YWl44KM44KL44GT44Go44GM44Gn44GN44KL44CCCisKKwor44OJ44Op44Kk44OQ44KS44Oh44Kk44Oz44Gu44Kr44O844ON44Or44OE44Oq44O844Gr5YWl44KM44KL44Go44CB6Z2e5bi444Gr5aW944G+44GX44GE5Lul5LiL44Gu5Yq5CivmnpzjgYzjgYLjgovjgIIKKyAgLSDjg4njg6njgqTjg5Djga7lk4Hos6rjgYzlkJHkuIrjgZnjgovkuIDmlrnjgafjgIHvvIjlhYPjga7plovnmbrogIXjgavjgajjgaPjgabjga7vvInjg6Hjg7Pjg4YKKyAgICDjg4rjg7PjgrnjgrPjgrnjg4jjga/kuIvjgYzjgovjgIIKKyAgLSDjgYLjgarjgZ/jga7jg4njg6njgqTjg5Djgavku5bjga7plovnmbrogIXjgYzmqZ/og73jgpLov73liqDjgZfjgabjgY/jgozjgovjgIIKKyAgLSDoqrDjgYvjgYzjgYLjgarjgZ/jga7jg4njg6njgqTjg5DjgavjgYLjgovjg5DjgrDjgpLopovjgaTjgZHjgIHkv67mraPjgZfjgabjgY/jgozjgovjgIIKKyAgLSDoqrDjgYvjgYzjgYLjgarjgZ/jga7jg4njg6njgqTjg5DjgavjgYLjgovmlLnlloTngrnjgpLopovjgaTjgZHjgabjgY/jgozjgovjgIIKKyAgLSDlpJbpg6jjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrnjgYzlpInmm7TjgZXjgozjg4njg6njgqTjg5Djga7mm7TmlrDjgYzlv4XopoHjgavjgarjgaPjgZ/loLTlkIjjgIEKKyAgICDoqrDjgYvjgYzjgYLjgarjgZ/jga7ku6Pjgo/jgorjgavmm7TmlrDjgZfjgabjgY/jgozjgovjgIIKKyAgLSDjg4njg6njgqTjg5DjgpLlhaXjgozjgabjgY/jgozjgajjg4fjgqPjgrnjg4jjg63jgavpoLzjgb7jgarjgY/jgabjgoLjgIHjgZ3jga7jg4njg6njgqTjg5Djga8KKyAgICDlhajjgabjga4gTGludXgg44OH44Kj44K544OI44Oq44OT44Ol44O844K344On44Oz44Gr6Ieq5YuV55qE44Gr5ZCr44G+44KM44Gm44Oq44Oq44O844K5CisgICAg44GV44KM44KL44CCCisKKworTGludXgg44Gn44Gv44CB5LuW44Gu44Gp44Gu44Kq44Oa44Os44O844OG44Kj44Oz44Kw44K344K544OG44Og44KI44KK44KC5pWw5aSa44GP44Gu44OH44OQ44Kk44K5CivjgYzjgIzjgZ3jga7jgb7jgb7jgI3kvb/nlKjjgafjgY3jgovjgojjgYbjgavjgarjgaPjgZ/jgILjgb7jgZ8gTGludXgg44Gv44CB44Gp44Gu44Kq44Oa44Os44O8Civjg4bjgqPjg7PjgrDjgrfjgrnjg4bjg6DjgojjgorjgoLmlbDlpJrjgY/jga7jg5fjg63jgrvjg4PjgrXjgqLjg7zjgq3jg4bjgq/jg4Hjg6PkuIrjgafjgZ3jgozjgonjga4KK+ODh+ODkOOCpOOCueOCkuS9v+eUqOOBmeOCi+OBk+OBqOOBjOOBp+OBjeOCi+OCiOOBhuOBq+OCguOBquOBo+OBn+OAguOBk+OBruOCiOOBhuOBq+OAgUxpbnV4IOOBrgor6ZaL55m644Oi44OH44Or44Gv5a6f6Ki844GV44KM44Gm44GK44KK44CB5LuK5b6M44KC6ZaT6YGV44GE44Gq44GP5q2j44GX44GE5pa55ZCR44G444Go6YCy44KT44Gn44GECivjgY/jgaDjgo3jgYbjgII6KQorCisKKworLS0tLS0tCisKK+OBk+OBruaWh+abuOOBruWIneacn+OBruiNieeov+OBq+WvvuOBl+OAgVJhbmR5IER1bmxhcCwgQW5kcmV3IE1vcnRvbiwgRGF2aWQKK0Jyb3duZWxsLCBIYW5uYSBMaW5kZXIsIFJvYmVydCBMb3ZlLCBOaXNoYW50aCBBcmF2YW11ZGFuIOOBi+OCieafu+iqrQor44Go5Yqp6KiA44KS6aCC44GN44G+44GX44Gf44CC5oSf6Kyd55Sz44GX5LiK44GS44G+44GZ44CCCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vamFfSlAvc3RhYmxlX2tlcm5lbF9ydWxlcy50eHQgYi9Eb2N1bWVudGF0aW9uL2phX0pQL3N0YWJsZV9rZXJuZWxfcnVsZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkYmRhOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2phX0pQL3N0YWJsZV9rZXJuZWxfcnVsZXMudHh0CkBAIC0wLDAgKzEsODQgQEAKK05PVEU6CitUaGlzIGlzIEphcGFuZXNlIHRyYW5zbGF0ZWQgdmVyc2lvbiBvZiAiRG9jdW1lbnRhdGlvbi9zdGFibGVfa2VybmVsX3J1bGVzLnR4dCIuCitUaGlzIG9uZSBpcyBtYWludGFpbmVkIGJ5IFRzdWdpa2F6dSBTaGliYXRhIDx0c2hpYmF0YUBhYi5qcC5uZWMuY29tPgorYW5kIEpGIFByb2plY3QgdGVhbSA8d3d3LmxpbnV4Lm9yLmpwL0pGPi4KK0lmIHlvdSBmaW5kIGRpZmZlcmVuY2Ugd2l0aCBvcmlnaW5hbCBmaWxlIG9yIHByb2JsZW0gaW4gdHJhbnNsYXRpb24sCitwbGVhc2UgY29udGFjdCBtYWludGFpbmVyIG9mIHRoaXMgZmlsZSBvciBKRiBwcm9qZWN0LgorCitQbGVhc2UgYWxzbyBub3RlIHRoYXQgcHVycG9zZSBvZiB0aGlzIGZpbGUgaXMgZWFzaWVyIHRvIHJlYWQgZm9yIG5vbgorRW5nbGlzaCBuYXRpdmVzIGFuZCBkbyBubyBpbnRlbmRlZCB0byBmb3JrLiBTbywgaWYgeW91IGhhdmUgYW55Citjb21tZW50IG9yIHVwZGF0ZSBvZiB0aGlzIGZpbGUsIHBsZWFzZSB0cnkgdG8gdXBkYXRlIE9yaWdpbmFsKEVuZ2xpc2gpCitmaWxlIGF0IGZpcnN0LgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CivjgZPjgozjga/jgIEKK2xpbnV4LTIuNi4yOS9Eb2N1bWVudGF0aW9uL3N0YWJsZV9rZXJuZWxfcnVsZXMudHh0Civjga7lkozoqLPjgafjgZnjgIIKKwor57+76Kiz5Zuj5L2T77yaIEpGIOODl+ODreOCuOOCp+OCr+ODiCA8IGh0dHA6Ly93d3cubGludXgub3IuanAvSkYvID4KK+e/u+ios+aXpe+8miAyMDA5LzEvMTQKK+e/u+ios+iAhe+8miBUc3VnaWthenUgU2hpYmF0YSA8dHNoaWJhdGEgYXQgYWIgZG90IGpwIGRvdCBuZWMgZG90IGNvbT4KK+agoeato+iAhe+8miDmrabkupXkvLjlhYnjgZXjgpPjgIE8dGFrZWkgYXQgd2VibWFzdGVycyBkb3QgZ3IgZG90IGpwPgorICAgICAgICAg44GL44Gt44GT44GV44KTIChTZWlqaSBLYW5la28pIDxza2FuZWtvIGF0IGEyIGRvdCBtYm4gZG90IG9yIGRvdCBqcD4KKyAgICAgICAgIOWwj+aelyDpm4XlhbjjgZXjgpMgKE1hc2Fub3JpIEtvYmF5YXNpKSA8emFwMDMyMTYgYXQgbmlmdHkgZG90IG5lIGRvdCBqcD4KKyAgICAgICAgIOmHjuWPo+OBleOCkyAoS2VuamkgTm9ndWNoaSkgPHRva3lvMjQ2IGF0IGdtYWlsIGRvdCBjb20+CisgICAgICAgICDnpZ7lrq7kv6HlpKrpg47jgZXjgpMgPGppbiBhdCBsaWJqaW5ndSBkb3QganA+Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK+OBmuOBo+OBqOefpeOCiuOBn+OBi+OBo+OBnyBMaW51eCAyLjYgLXN0YWJsZSDjg6rjg6rjg7zjgrnjga7lhajjgaYKKworIi1zdGFibGUiIOODhOODquODvOOBq+OBqeOBruOCiOOBhuOBqueorumhnuOBruODkeODg+ODgeOBjOWPl+OBkeWFpeOCjOOCieOCjOOCi+OBi+OAgeOBqeOBruOCiOOBhuOBqgor44KC44Gu44GM5Y+X44GR5YWl44KM44KJ44KM44Gq44GE44GL44CB44Gr44Gk44GE44Gm44Gu6KaP5YmHLQorCisgLSDmmI7jgonjgYvjgavmraPjgZfjgY/jgIHjg4bjgrnjg4jjgZXjgozjgabjgYTjgovjgoLjga7jgafjgarjgZHjgozjgbDjgarjgonjgarjgYTjgIIKKyAtIOaWh+iEiCjlpInmm7TooYzjga7liY3lvowp44KS5ZCr44KB44GmIDEwMCDooYzjgojjgorlpKfjgY3jgY/jgabjga/jgYTjgZHjgarjgYTjgIIKKyAtIOOBn+OBoOS4gOWAi+OBruOBk+OBqOOBoOOBkeOCkuS/ruato+OBl+OBpuOBhOOCi+OBueOBjeOAggorIC0g55qG44KS5oKp44G+44Gb44Gm44GE44KL5pys54mp44Gu44OQ44Kw44KS5L+u5q2j44GX44Gq44GR44KM44Gw44Gq44KJ44Gq44GE44CCKCLjgZPjgozjga/jg5DjgrDjgacKKyAgIOOBguOCi+OBi+OCguOBl+OCjOOBquOBhOOBjC4uLiIg44Gu44KI44GG44Gq44KC44Gu44Gn44Gv44Gq44GEKQorIC0g44OT44Or44OJ44Ko44Op44O8KENPTkZJR19CUk9LRU7jgavjgarjgaPjgabjgYTjgovjgoLjga7jgpLpmaTjgY8pLCBvb3BzLCDjg4/jg7PjgrDjgIHjg4fjg7wKKyAgIOOCv+egtOWjiuOAgeePvuWun+OBruOCu+OCreODpeODquODhuOCo+WVj+mhjOOAgeOBneOBruS7liAi44GC44GC44CB44GT44KM44Gv44OA44Oh44Gg44GtIuOBqOOBhOOBhgorICAg44KI44GG44Gq44KC44Gu44KS5L+u5q2j44GX44Gq44GR44KM44Gw44Gq44KJ44Gq44GE44CC55+t44GP6KiA44GI44Gw44CB6YeN5aSn44Gq5ZWP6aGM44CCCisgLSDmlrDjgZfjgYQgZGV2aWNlIElEIOOBqOOCr+OCquODvOOCr+OCguWPl+OBkeWFpeOCjOOCieOCjOOCi+OAggorIC0g44Gp44Gu44KI44GG44Gr56u25ZCI54q25oWL44GM55m655Sf44GZ44KL44GL44Gu6Kqs5piO44KC5LiA57eS44Gr5pu444GL44KM44Gm44GE44Gq44GE6ZmQ44KK44CBCisgICAi55CG6KuW55qE44Gr44Gv56u25ZCI54q25oWL44Gr44Gq44KLIuOCiOOBhuOBquOCguOBruOBr+S4jeWPr+OAggorIC0g44GE44GL44Gq44KL5Lqb57Sw44Gq5L+u5q2j44KC5ZCr44KB44KL44GT44Go44Gv44Gn44GN44Gq44GE44CCKOOCueODmuODq+OBruS/ruato+OAgeepuueZveOBruOCr+ODquODvAorICAg44Oz44Ki44OD44OX44Gq44GpKQorIC0gRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nUGF0Y2hlcyDjga7opo/liYfjgavlvpPjgaPjgZ/jgoLjga7jgafjgarjgZHjgozjgbDjgarjgonjgarjgYTjgIIKKyAtIOODkeODg+ODgeiHquS9k+OBi+WQjOetieOBruS/ruato+OBjCBMaW51cyDjga7jg4Tjg6rjg7zjgavml6LjgavlrZjlnKjjgZfjgarjgZHjgozjgbDjgarjgonjgarjgYTjgIIKK+OAgCBMaW51cyDjga7jg4Tjg6rjg7zjgafjga7jgrPjg5/jg4Pjg4hJRCDjgpIgLXN0YWJsZSDjgbjjga7jg5Hjg4Pjg4HmipXnqL/jga7pmpvjgavlvJXnlKjjgZkKKyAgIOOCi+OBk+OBqOOAggorCistc3RhYmxlIOODhOODquODvOOBq+ODkeODg+ODgeOCkumAgeS7mOOBmeOCi+aJi+e2muOBjS0KKworIC0g5LiK6KiY44Gu6KaP5YmH44Gr5b6T44Gj44Gm44GE44KL44GL44KS56K66KqN44GX44Gf5b6M44Gr44CBc3RhYmxlQHZnZXIua2VybmVsLm9yZyDjgavjg5Hjg4Pjg4EKKyAgIOOCkumAgeOCi+OAggorIC0g6YCB5L+h6ICF44Gv44OR44OD44OB44GM44Kt44Ol44O844Gr5Y+X44GR5LuY44GR44KJ44KM44Gf6Zqb44Gr44GvIEFDSyDjgpLjgIHljbTkuIvjgZXjgozjgZ/loLTlkIgKKyAgIOOBq+OBryBOQUsg44KS5Y+X44GR5Y+W44KL44CC44GT44Gu5Y+N5b+c44Gv6ZaL55m66ICF44Gf44Gh44Gu44K544Kx44K444Ol44O844Or44Gr44KI44Gj44Gm44CB5pWwCisgICDml6XjgYvjgYvjgovloLTlkIjjgYzjgYLjgovjgIIKKyAtIOOCguOBl+WPl+OBkeWPluOCieOCjOOBn+OCieOAgeODkeODg+ODgeOBr+S7luOBrumWi+eZuuiAheOBn+OBoeOBqOmWoumAo+OBmeOCi+OCteODluOCt+OCueODhuODoOOBrgorICAg44Oh44Oz44OG44OK44O844Gr44KI44KL44Os44OT44Ol44O844Gu44Gf44KB44GrIC1zdGFibGUg44Kt44Ol44O844Gr6L+95Yqg44GV44KM44KL44CCCisgLSDjg5Hjg4Pjg4Hjgasgc3RhYmxlQHZnZXIua2VybmVsLm9yZyDjga7jgqLjg4njg6zjgrnjgYzku5jliqDjgZXjgozjgabjgYTjgovjgajjgY3jgavjga/jgIHjgZ3jgowKKyAgIOOBjCBMaW51cyDjga7jg4Tjg6rjg7zjgavlhaXjgovmmYLjgavoh6rli5XnmoTjgasgc3RhYmxlIOODgeODvOODoOOBqyBlbWFpbCDjgZXjgozjgovjgIIKKyAtIOOCu+OCreODpeODquODhuOCo+ODkeODg+ODgeOBr+OBk+OBruOCqOOCpOODquOCouOCuSAoc3RhYmxlQHZnZXIua2VybmVsLm9yZykg44Gr6YCB44KJ44KM44KL44G5CisgICDjgY3jgafjga/jgarjgY/jgIHku6Pjgo/jgorjgasgc2VjdXJpdHlAa2VybmVsLm9yZyDjga7jgqLjg4njg6zjgrnjgavpgIHjgonjgozjgovjgIIKKwor44Os44OT44Ol44O844K144Kk44Kv44OrLQorCisgLSAtc3RhYmxlIOODoeODs+ODhuODiuOBjOODrOODk+ODpeODvOOCteOCpOOCr+ODq+OCkuaxuuOCgeOCi+OBqOOBjeOAgeODkeODg+ODgeOBr+ODrOODk+ODpeODvOWnlAorICAg5ZOh5Lya44Go44OR44OD44OB44GM5b2x6Z+/44GZ44KL6aCY5Z+f44Gu44Oh44Oz44OG44OKKOaPkOS+m+iAheOBjOOBneOBrumgmOWfn+OBruODoeODs+ODhuODiuOBp+eEoQorICAg44GE6ZmQ44KKKeOBq+mAgeOCieOCjOOAgWxpbnV4LWtlcm5lbCDjg6Hjg7zjg6rjg7PjgrDjg6rjgrnjg4jjgatDQ+OBleOCjOOCi+OAggorIC0g44Os44OT44Ol44O85aeU5ZOh5Lya44GvIDQ45pmC6ZaT44Gu6ZaT44GrIEFDSyDjgYsgTkFLIOOCkuWHuuOBmeOAggorIC0g44KC44GX44OR44OD44OB44GM5aeU5ZOh5Lya44Gu44Oh44Oz44OQ44GL44KJ5Y205LiL44GV44KM44KL44GL44CB44Oh44Oz44OG44OK6YGU44KE44Oh44Oz44OQ44GM5rCX5LuYCisgICDjgYvjgarjgYvjgaPjgZ/llY/poYzjgYzmjIHjgaHjgYLjgYzjgorjgIFsaW51eC1rZXJuZWwg44Oh44Oz44OQ44GM44OR44OD44OB44Gr55Ww6K2w44KS5ZSx44GICisgICDjgZ/loLTlkIjjgavjga/jgIHjg5Hjg4Pjg4Hjga/jgq3jg6Xjg7zjgYvjgonliYrpmaTjgZXjgozjgovjgIIKKyAtIOODrOODk+ODpeODvOOCteOCpOOCr+ODq+OBruacgOW+jOOBq+OAgUFDSyDjgpLlj5fjgZHjgZ/jg5Hjg4Pjg4Hjga/mnIDmlrDjga4gLXN0YWJsZSDjg6rjg6rjg7wKKyAgIOOCueOBq+i/veWKoOOBleOCjOOAgeOBneOBruW+jOOBq+aWsOOBl+OBhCAtc3RhYmxlIOODquODquODvOOCueOBjOihjOOCj+OCjOOCi+OAggorIC0g44K744Kt44Ol44Oq44OG44Kj44OR44OD44OB44Gv44CB6YCa5bi444Gu44Os44OT44Ol44O844K144Kk44Kv44Or44KS6YCa44KJ44Ga44CB44K744Kt44Ol44Oq44OG44KjCisgICDjgqvjg7zjg43jg6vjg4Hjg7zjg6DjgYvjgonnm7TmjqUgLXN0YWJsZSDjg4Tjg6rjg7zjgavlj5fjgZHku5jjgZHjgonjgozjgovjgIIKKyAgIOOBk+OBruaJi+e2muOBjeOBruips+e0sOOBq+OBpOOBhOOBpuOBryBrZXJuZWwgc2VjdXJpdHkg44OB44O844Og44Gr5ZWP44GE5ZCI44KP44Gb44KL44GT44Go44CCCisKK+ODrOODk+ODpeODvOWnlOWToeS8mi0KKworIC0g44GT44Gu5aeU5ZOh5Lya44Gv44CB44GT44Gu44K/44K544Kv44Gr44Gk44GE44Gm5rS75YuV44GZ44KL5aSa44GP44Gu44Oc44Op44Oz44OG44Kj44Ki44Go44CB5bCR5pWw44GuCisgICDpnZ7jg5zjg6njg7Pjg4bjgqPjgqLjga7jgqvjg7zjg43jg6vplovnmbrogIXpgZTjgafmp4vmiJDjgZXjgozjgabjgYTjgovjgIIKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9qYXZhLnR4dCBiL0RvY3VtZW50YXRpb24vamF2YS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE4MDIwNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vamF2YS50eHQKQEAgLTAsMCArMSw0MDQgQEAKKyAgICAgICAgICAgICAgIEphdmEodG0pIEJpbmFyeSBLZXJuZWwgU3VwcG9ydCBmb3IgTGludXggdjEuMDMKKyAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTGludXggYmVhdHMgdGhlbSBBTEwhIFdoaWxlIGFsbCBvdGhlciBPUydzIGFyZSBUQUxLSU5HIGFib3V0IGRpcmVjdAorc3VwcG9ydCBvZiBKYXZhIEJpbmFyaWVzIGluIHRoZSBPUywgTGludXggaXMgZG9pbmcgaXQhCisKK1lvdSBjYW4gZXhlY3V0ZSBKYXZhIGFwcGxpY2F0aW9ucyBhbmQgSmF2YSBBcHBsZXRzIGp1c3QgbGlrZSBhbnkKK290aGVyIHByb2dyYW0gYWZ0ZXIgeW91IGhhdmUgZG9uZSB0aGUgZm9sbG93aW5nOgorCisxKSBZb3UgTVVTVCBGSVJTVCBpbnN0YWxsIHRoZSBKYXZhIERldmVsb3BlcnMgS2l0IGZvciBMaW51eC4KKyAgIFRoZSBKYXZhIG9uIExpbnV4IEhPV1RPIGdpdmVzIHRoZSBkZXRhaWxzIG9uIGdldHRpbmcgYW5kCisgICBpbnN0YWxsaW5nIHRoaXMuIFRoaXMgSE9XVE8gY2FuIGJlIGZvdW5kIGF0OgorCisJZnRwOi8vc3Vuc2l0ZS51bmMuZWR1L3B1Yi9MaW51eC9kb2NzL0hPV1RPL0phdmEtSE9XVE8KKworICAgWW91IHNob3VsZCBhbHNvIHNldCB1cCBhIHJlYXNvbmFibGUgQ0xBU1NQQVRIIGVudmlyb25tZW50CisgICB2YXJpYWJsZSB0byB1c2UgSmF2YSBhcHBsaWNhdGlvbnMgdGhhdCBtYWtlIHVzZSBvZiBhbnkKKyAgIG5vbnN0YW5kYXJkIGNsYXNzZXMgKG5vdCBpbmNsdWRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkKKyAgIGFzIHRoZSBhcHBsaWNhdGlvbiBpdHNlbGYpLgorCisyKSBZb3UgaGF2ZSB0byBjb21waWxlIEJJTkZNVF9NSVNDIGVpdGhlciBhcyBhIG1vZHVsZSBvciBpbnRvCisgICB0aGUga2VybmVsIChDT05GSUdfQklORk1UX01JU0MpIGFuZCBzZXQgaXQgdXAgcHJvcGVybHkuCisgICBJZiB5b3UgY2hvb3NlIHRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIHlvdSB3aWxsIGhhdmUKKyAgIHRvIGluc2VydCBpdCBtYW51YWxseSB3aXRoIG1vZHByb2JlL2luc21vZCwgYXMga21vZAorICAgY2Fubm90IGVhc2lseSBiZSBzdXBwb3J0ZWQgd2l0aCBiaW5mbXRfbWlzYy4gCisgICBSZWFkIHRoZSBmaWxlICdiaW5mbXRfbWlzYy50eHQnIGluIHRoaXMgZGlyZWN0b3J5IHRvIGtub3cKKyAgIG1vcmUgYWJvdXQgdGhlIGNvbmZpZ3VyYXRpb24gcHJvY2Vzcy4KKworMykgQWRkIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBpdGVtcyB0byBiaW5mbXRfbWlzYworICAgKHlvdSBzaG91bGQgcmVhbGx5IGhhdmUgcmVhZCBiaW5mbXRfbWlzYy50eHQgbm93KToKKyAgIHN1cHBvcnQgZm9yIEphdmEgYXBwbGljYXRpb25zOgorICAgICAnOkphdmE6TTo6XHhjYVx4ZmVceGJhXHhiZTo6L3Vzci9sb2NhbC9iaW4vamF2YXdyYXBwZXI6JworICAgc3VwcG9ydCBmb3IgZXhlY3V0YWJsZSBKYXIgZmlsZXM6CisgICAgICc6RXhlY3V0YWJsZUpBUjpFOjpqYXI6Oi91c3IvbG9jYWwvYmluL2phcndyYXBwZXI6JworICAgc3VwcG9ydCBmb3IgSmF2YSBBcHBsZXRzOgorICAgICAnOkFwcGxldDpFOjpodG1sOjovdXNyL2Jpbi9hcHBsZXR2aWV3ZXI6JworICAgb3IgdGhlIGZvbGxvd2luZywgaWYgeW91IHdhbnQgdG8gYmUgbW9yZSBzZWxlY3RpdmU6CisgICAgICc6QXBwbGV0Ok06OjwhLS1hcHBsZXQ6Oi91c3IvYmluL2FwcGxldHZpZXdlcjonCisKKyAgIE9mIGNvdXJzZSB5b3UgaGF2ZSB0byBmaXggdGhlIHBhdGggbmFtZXMuIFRoZSBwYXRoL2ZpbGUgbmFtZXMgZ2l2ZW4gaW4gdGhpcworICAgZG9jdW1lbnQgbWF0Y2ggdGhlIERlYmlhbiAyLjEgc3lzdGVtLiAoaS5lLiBqZGsgaW5zdGFsbGVkIGluIC91c3IsCisgICBjdXN0b20gd3JhcHBlcnMgZnJvbSB0aGlzIGRvY3VtZW50IGluIC91c3IvbG9jYWwpCisKKyAgIE5vdGUsIHRoYXQgZm9yIHRoZSBtb3JlIHNlbGVjdGl2ZSBhcHBsZXQgc3VwcG9ydCB5b3UgaGF2ZSB0byBtb2RpZnkKKyAgIGV4aXN0aW5nIGh0bWwtZmlsZXMgdG8gY29udGFpbiA8IS0tYXBwbGV0LS0+IGluIHRoZSBmaXJzdCBsaW5lCisgICAoJzwnIGhhcyB0byBiZSB0aGUgZmlyc3QgY2hhcmFjdGVyISkgdG8gbGV0IHRoaXMgd29yayEKKworICAgRm9yIHRoZSBjb21waWxlZCBKYXZhIHByb2dyYW1zIHlvdSBuZWVkIGEgd3JhcHBlciBzY3JpcHQgbGlrZSB0aGUKKyAgIGZvbGxvd2luZyAodGhpcyBpcyBiZWNhdXNlIEphdmEgaXMgYnJva2VuIGluIGNhc2Ugb2YgdGhlIGZpbGVuYW1lCisgICBoYW5kbGluZyksIGFnYWluIGZpeCB0aGUgcGF0aCBuYW1lcywgYm90aCBpbiB0aGUgc2NyaXB0IGFuZCBpbiB0aGUKKyAgIGFib3ZlIGdpdmVuIGNvbmZpZ3VyYXRpb24gc3RyaW5nLgorCisgICBZb3UsIHRvbywgbmVlZCB0aGUgbGl0dGxlIHByb2dyYW0gYWZ0ZXIgdGhlIHNjcmlwdC4gQ29tcGlsZSBsaWtlCisgICBnY2MgLU8yIC1vIGphdmFjbGFzc25hbWUgamF2YWNsYXNzbmFtZS5jCisgICBhbmQgc3RpY2sgaXQgdG8gL3Vzci9sb2NhbC9iaW4uCisKKyAgIEJvdGggdGhlIGphdmF3cmFwcGVyIHNoZWxsc2NyaXB0IGFuZCB0aGUgamF2YWNsYXNzbmFtZSBwcm9ncmFtCisgICB3ZXJlIHN1cHBsaWVkIGJ5IENvbGluIEouIFdhdHNvbiA8Y2p3NDRAY2FtLmFjLnVrPi4KKworPT09PT09PT09PT09PT09PT09PT09PSBDdXQgaGVyZSA9PT09PT09PT09PT09PT09PT09CisjIS9iaW4vYmFzaAorIyAvdXNyL2xvY2FsL2Jpbi9qYXZhd3JhcHBlciAtIHRoZSB3cmFwcGVyIGZvciBiaW5mbXRfbWlzYy9qYXZhCisKK2lmIFsgLXogIiQxIiBdOyB0aGVuCisJZXhlYyAxPiYyCisJZWNobyBVc2FnZTogJDAgY2xhc3MtZmlsZQorCWV4aXQgMQorZmkKKworQ0xBU1M9JDEKK0ZRQ0xBU1M9YC91c3IvbG9jYWwvYmluL2phdmFjbGFzc25hbWUgJDFgCitGUUNMQVNTTj1gZWNobyAkRlFDTEFTUyB8IHNlZCAtZSAncy9eLipcLlwoW14uXSpcKSQvXDEvJ2AKK0ZRQ0xBU1NQPWBlY2hvICRGUUNMQVNTIHwgc2VkIC1lICdzLVwuLS8tZycgLWUgJ3MtXlteL10qJC0tJyAtZSAncy0vW14vXSokLS0nYAorCisjIGZvciBleGFtcGxlOgorIyBDTEFTUz1UZXN0LmNsYXNzCisjIEZRQ0xBU1M9Zm9vLmJhci5UZXN0CisjIEZRQ0xBU1NOPVRlc3QKKyMgRlFDTEFTU1A9Zm9vL2JhcgorCit1bnNldCBDTEFTU0JBU0UKKworZGVjbGFyZSAtaSBMSU5LTEVWRUw9MAorCit3aGlsZSA6OyBkbworCWlmIFsgImBiYXNlbmFtZSAkQ0xBU1MgLmNsYXNzYCIgPT0gIiRGUUNMQVNTTiIgXTsgdGhlbgorCQkjIFNlZSBpZiB0aGlzIGRpcmVjdG9yeSB3b3JrcyBzdHJhaWdodCBvZmYKKwkJY2QgLUwgYGRpcm5hbWUgJENMQVNTYAorCQlDTEFTU0RJUj0kUFdECisJCWNkICRPTERQV0QKKwkJaWYgZWNobyAkQ0xBU1NESVIgfCBncmVwIC1xICIkRlFDTEFTU1AkIjsgdGhlbgorCQkJQ0xBU1NCQVNFPWBlY2hvICRDTEFTU0RJUiB8IHNlZCAtZSAicy4kRlFDTEFTU1AkLi4iYAorCQkJYnJlYWs7CisJCWZpCisJCSMgVHJ5IGRlcmVmZXJlbmNpbmcgdGhlIGRpcmVjdG9yeSBuYW1lCisJCWNkIC1QIGBkaXJuYW1lICRDTEFTU2AKKwkJQ0xBU1NESVI9JFBXRAorCQljZCAkT0xEUFdECisJCWlmIGVjaG8gJENMQVNTRElSIHwgZ3JlcCAtcSAiJEZRQ0xBU1NQJCI7IHRoZW4KKwkJCUNMQVNTQkFTRT1gZWNobyAkQ0xBU1NESVIgfCBzZWQgLWUgInMuJEZRQ0xBU1NQJC4uImAKKwkJCWJyZWFrOworCQlmaQorCQkjIElmIG5vIG90aGVyIHBvc3NpYmxlIGZpbGVuYW1lIGV4aXN0cworCQlpZiBbICEgLUwgJENMQVNTIF07IHRoZW4KKwkJCWV4ZWMgMT4mMgorCQkJZWNobyAkMDoKKwkJCWVjaG8gIiAgJENMQVNTIHNob3VsZCBiZSBpbiBhIiBcCisJCQkgICAgICJkaXJlY3RvcnkgdHJlZSBjYWxsZWQgJEZRQ0xBU1NQIgorCQkJZXhpdCAxCisJCWZpCisJZmkKKwlpZiBbICEgLUwgJENMQVNTIF07IHRoZW4gYnJlYWs7IGZpCisJIyBHbyBkb3duIG9uZSBtb3JlIGxldmVsIG9mIHN5bWJvbGljIGxpbmtzCisJbGV0IExJTktMRVZFTCs9MQorCWlmIFsgJExJTktMRVZFTCAtZ3QgNSBdOyB0aGVuCisJCWV4ZWMgMT4mMgorCQllY2hvICQwOgorCQllY2hvICIgIFRvbyBtYW55IHN5bWJvbGljIGxpbmtzIGVuY291bnRlcmVkIgorCQlleGl0IDEKKwlmaQorCUNMQVNTPWBscyAtLWNvbG9yPW5vIC1sICRDTEFTUyB8IHNlZCAtZSAncy9eLiogXChbXiBdKlwpJC9cMS8nYAorZG9uZQorCitpZiBbIC16ICIkQ0xBU1NCQVNFIiBdOyB0aGVuCisJaWYgWyAteiAiJEZRQ0xBU1NQIiBdOyB0aGVuCisJCUdPT0ROQU1FPSRGUUNMQVNTTi5jbGFzcworCWVsc2UKKwkJR09PRE5BTUU9JEZRQ0xBU1NQLyRGUUNMQVNTTi5jbGFzcworCWZpCisJZXhlYyAxPiYyCisJZWNobyAkMDoKKwllY2hvICIgICRGUUNMQVNTIHNob3VsZCBiZSBpbiBhIGZpbGUgY2FsbGVkICRHT09ETkFNRSIKKwlleGl0IDEKK2ZpCisKK2lmICEgZWNobyAkQ0xBU1NQQVRIIHwgZ3JlcCAtcSAiXlwoLio6XCkqJENMQVNTQkFTRVwoOi4qXCkqIjsgdGhlbgorCSMgY2xhc3MgaXMgbm90IGluIENMQVNTUEFUSCwgc28gcHJlcGVuZCBkaXIgb2YgY2xhc3MgdG8gQ0xBU1NQQVRICisJaWYgWyAteiAiJHtDTEFTU1BBVEh9IiBdIDsgdGhlbgorCQlleHBvcnQgQ0xBU1NQQVRIPSRDTEFTU0JBU0UKKwllbHNlCisJCWV4cG9ydCBDTEFTU1BBVEg9JENMQVNTQkFTRTokQ0xBU1NQQVRICisJZmkKK2ZpCisKK3NoaWZ0CisvdXNyL2Jpbi9qYXZhICRGUUNMQVNTICIkQCIKKz09PT09PT09PT09PT09PT09PT09PT0gQ3V0IGhlcmUgPT09PT09PT09PT09PT09PT09PQorCisKKz09PT09PT09PT09PT09PT09PT09PT0gQ3V0IGhlcmUgPT09PT09PT09PT09PT09PT09PQorLyogamF2YWNsYXNzbmFtZS5jCisgKgorICogRXh0cmFjdHMgdGhlIGNsYXNzIG5hbWUgZnJvbSBhIEphdmEgY2xhc3MgZmlsZTsgaW50ZW5kZWQgZm9yIHVzZSBpbiBhIEphdmEKKyAqIHdyYXBwZXIgb2YgdGhlIHR5cGUgc3VwcG9ydGVkIGJ5IHRoZSBiaW5mbXRfbWlzYyBvcHRpb24gaW4gdGhlIExpbnV4IGtlcm5lbC4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgQ29saW4gSi4gV2F0c29uIDxjanc0NEBjYW0uYWMudWs+LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyAqLworCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworLyogRnJvbSBTdW4ncyBKYXZhIFZNIFNwZWNpZmljYXRpb24sIGFzIHRhZyBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sLiAqLworCisjZGVmaW5lIENQX1VURjggMQorI2RlZmluZSBDUF9JTlRFR0VSIDMKKyNkZWZpbmUgQ1BfRkxPQVQgNAorI2RlZmluZSBDUF9MT05HIDUKKyNkZWZpbmUgQ1BfRE9VQkxFIDYKKyNkZWZpbmUgQ1BfQ0xBU1MgNworI2RlZmluZSBDUF9TVFJJTkcgOAorI2RlZmluZSBDUF9GSUVMRFJFRiA5CisjZGVmaW5lIENQX01FVEhPRFJFRiAxMAorI2RlZmluZSBDUF9JTlRFUkZBQ0VNRVRIT0RSRUYgMTEKKyNkZWZpbmUgQ1BfTkFNRUFORFRZUEUgMTIKKyNkZWZpbmUgQ1BfTUVUSE9ESEFORExFIDE1CisjZGVmaW5lIENQX01FVEhPRFRZUEUgMTYKKyNkZWZpbmUgQ1BfSU5WT0tFRFlOQU1JQyAxOAorCisvKiBEZWZpbmUgc29tZSBjb21tb25seSB1c2VkIGVycm9yIG1lc3NhZ2VzICovCisKKyNkZWZpbmUgc2Vla19lcnJvcigpIGVycm9yKCIlczogQ2Fubm90IHNlZWtcbiIsIHByb2dyYW0pCisjZGVmaW5lIGNvcnJ1cHRfZXJyb3IoKSBlcnJvcigiJXM6IENsYXNzIGZpbGUgY29ycnVwdFxuIiwgcHJvZ3JhbSkKKyNkZWZpbmUgZW9mX2Vycm9yKCkgZXJyb3IoIiVzOiBVbmV4cGVjdGVkIGVuZCBvZiBmaWxlXG4iLCBwcm9ncmFtKQorI2RlZmluZSB1dGY4X2Vycm9yKCkgZXJyb3IoIiVzOiBPbmx5IEFTQ0lJIDEtMjU1IHN1cHBvcnRlZFxuIiwgcHJvZ3JhbSk7CisKK2NoYXIgKnByb2dyYW07CisKK2xvbmcgKnBvb2w7CisKK3VfaW50OF90IHJlYWRfOChGSUxFICpjbGFzc2ZpbGUpOwordV9pbnQxNl90IHJlYWRfMTYoRklMRSAqY2xhc3NmaWxlKTsKK3ZvaWQgc2tpcF9jb25zdGFudChGSUxFICpjbGFzc2ZpbGUsIHVfaW50MTZfdCAqY3VyKTsKK3ZvaWQgZXJyb3IoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKKworLyogUmVhZHMgaW4gYW4gdW5zaWduZWQgOC1iaXQgaW50ZWdlci4gKi8KK3VfaW50OF90IHJlYWRfOChGSUxFICpjbGFzc2ZpbGUpCit7CisJaW50IGIgPSBmZ2V0YyhjbGFzc2ZpbGUpOworCWlmKGIgPT0gRU9GKQorCQllb2ZfZXJyb3IoKTsKKwlyZXR1cm4gKHVfaW50OF90KWI7Cit9CisKKy8qIFJlYWRzIGluIGFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyLiAqLwordV9pbnQxNl90IHJlYWRfMTYoRklMRSAqY2xhc3NmaWxlKQoreworCWludCBiMSwgYjI7CisJYjEgPSBmZ2V0YyhjbGFzc2ZpbGUpOworCWlmKGIxID09IEVPRikKKwkJZW9mX2Vycm9yKCk7CisJYjIgPSBmZ2V0YyhjbGFzc2ZpbGUpOworCWlmKGIyID09IEVPRikKKwkJZW9mX2Vycm9yKCk7CisJcmV0dXJuICh1X2ludDE2X3QpKChiMSA8PCA4KSB8IGIyKTsKK30KKworLyogUmVhZHMgaW4gYSB2YWx1ZSBmcm9tIHRoZSBjb25zdGFudCBwb29sLiAqLwordm9pZCBza2lwX2NvbnN0YW50KEZJTEUgKmNsYXNzZmlsZSwgdV9pbnQxNl90ICpjdXIpCit7CisJdV9pbnQxNl90IGxlbjsKKwlpbnQgc2Vla2VyciA9IDE7CisJcG9vbFsqY3VyXSA9IGZ0ZWxsKGNsYXNzZmlsZSk7CisJc3dpdGNoKHJlYWRfOChjbGFzc2ZpbGUpKQorCXsKKwljYXNlIENQX1VURjg6CisJCWxlbiA9IHJlYWRfMTYoY2xhc3NmaWxlKTsKKwkJc2Vla2VyciA9IGZzZWVrKGNsYXNzZmlsZSwgbGVuLCBTRUVLX0NVUik7CisJCWJyZWFrOworCWNhc2UgQ1BfQ0xBU1M6CisJY2FzZSBDUF9TVFJJTkc6CisJY2FzZSBDUF9NRVRIT0RUWVBFOgorCQlzZWVrZXJyID0gZnNlZWsoY2xhc3NmaWxlLCAyLCBTRUVLX0NVUik7CisJCWJyZWFrOworCWNhc2UgQ1BfTUVUSE9ESEFORExFOgorCQlzZWVrZXJyID0gZnNlZWsoY2xhc3NmaWxlLCAzLCBTRUVLX0NVUik7CisJCWJyZWFrOworCWNhc2UgQ1BfSU5URUdFUjoKKwljYXNlIENQX0ZMT0FUOgorCWNhc2UgQ1BfRklFTERSRUY6CisJY2FzZSBDUF9NRVRIT0RSRUY6CisJY2FzZSBDUF9JTlRFUkZBQ0VNRVRIT0RSRUY6CisJY2FzZSBDUF9OQU1FQU5EVFlQRToKKwljYXNlIENQX0lOVk9LRURZTkFNSUM6CisJCXNlZWtlcnIgPSBmc2VlayhjbGFzc2ZpbGUsIDQsIFNFRUtfQ1VSKTsKKwkJYnJlYWs7CisJY2FzZSBDUF9MT05HOgorCWNhc2UgQ1BfRE9VQkxFOgorCQlzZWVrZXJyID0gZnNlZWsoY2xhc3NmaWxlLCA4LCBTRUVLX0NVUik7CisJCSsrKCpjdXIpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQljb3JydXB0X2Vycm9yKCk7CisJfQorCWlmKHNlZWtlcnIpCisJCXNlZWtfZXJyb3IoKTsKK30KKwordm9pZCBlcnJvcihjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKK3sKKwl2YV9saXN0IGFwOworCXZhX3N0YXJ0KGFwLCBmb3JtYXQpOworCXZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcCk7CisJdmFfZW5kKGFwKTsKKwlleGl0KDEpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJRklMRSAqY2xhc3NmaWxlOworCXVfaW50MTZfdCBjcF9jb3VudCwgaSwgdGhpc19jbGFzcywgY2xhc3NpbmZvX3B0cjsKKwl1X2ludDhfdCBsZW5ndGg7CisKKwlwcm9ncmFtID0gYXJndlswXTsKKworCWlmKCFhcmd2WzFdKQorCQllcnJvcigiJXM6IE1pc3NpbmcgaW5wdXQgZmlsZVxuIiwgcHJvZ3JhbSk7CisJY2xhc3NmaWxlID0gZm9wZW4oYXJndlsxXSwgInJiIik7CisJaWYoIWNsYXNzZmlsZSkKKwkJZXJyb3IoIiVzOiBFcnJvciBvcGVuaW5nICVzXG4iLCBwcm9ncmFtLCBhcmd2WzFdKTsKKworCWlmKGZzZWVrKGNsYXNzZmlsZSwgOCwgU0VFS19TRVQpKSAgLyogc2tpcCBtYWdpYyBhbmQgdmVyc2lvbiBudW1iZXJzICovCisJCXNlZWtfZXJyb3IoKTsKKwljcF9jb3VudCA9IHJlYWRfMTYoY2xhc3NmaWxlKTsKKwlwb29sID0gY2FsbG9jKGNwX2NvdW50LCBzaXplb2YobG9uZykpOworCWlmKCFwb29sKQorCQllcnJvcigiJXM6IE91dCBvZiBtZW1vcnkgZm9yIGNvbnN0YW50IHBvb2xcbiIsIHByb2dyYW0pOworCisJZm9yKGkgPSAxOyBpIDwgY3BfY291bnQ7ICsraSkKKwkJc2tpcF9jb25zdGFudChjbGFzc2ZpbGUsICZpKTsKKwlpZihmc2VlayhjbGFzc2ZpbGUsIDIsIFNFRUtfQ1VSKSkJLyogc2tpcCBhY2Nlc3MgZmxhZ3MgKi8KKwkJc2Vla19lcnJvcigpOworCisJdGhpc19jbGFzcyA9IHJlYWRfMTYoY2xhc3NmaWxlKTsKKwlpZih0aGlzX2NsYXNzIDwgMSB8fCB0aGlzX2NsYXNzID49IGNwX2NvdW50KQorCQljb3JydXB0X2Vycm9yKCk7CisJaWYoIXBvb2xbdGhpc19jbGFzc10gfHwgcG9vbFt0aGlzX2NsYXNzXSA9PSAtMSkKKwkJY29ycnVwdF9lcnJvcigpOworCWlmKGZzZWVrKGNsYXNzZmlsZSwgcG9vbFt0aGlzX2NsYXNzXSArIDEsIFNFRUtfU0VUKSkKKwkJc2Vla19lcnJvcigpOworCisJY2xhc3NpbmZvX3B0ciA9IHJlYWRfMTYoY2xhc3NmaWxlKTsKKwlpZihjbGFzc2luZm9fcHRyIDwgMSB8fCBjbGFzc2luZm9fcHRyID49IGNwX2NvdW50KQorCQljb3JydXB0X2Vycm9yKCk7CisJaWYoIXBvb2xbY2xhc3NpbmZvX3B0cl0gfHwgcG9vbFtjbGFzc2luZm9fcHRyXSA9PSAtMSkKKwkJY29ycnVwdF9lcnJvcigpOworCWlmKGZzZWVrKGNsYXNzZmlsZSwgcG9vbFtjbGFzc2luZm9fcHRyXSArIDEsIFNFRUtfU0VUKSkKKwkJc2Vla19lcnJvcigpOworCisJbGVuZ3RoID0gcmVhZF8xNihjbGFzc2ZpbGUpOworCWZvcihpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorCXsKKwkJdV9pbnQ4X3QgeCA9IHJlYWRfOChjbGFzc2ZpbGUpOworCQlpZigoeCAmIDB4ODApIHx8ICF4KQorCQl7CisJCQlpZigoeCAmIDB4RTApID09IDB4QzApCisJCQl7CisJCQkJdV9pbnQ4X3QgeSA9IHJlYWRfOChjbGFzc2ZpbGUpOworCQkJCWlmKCh5ICYgMHhDMCkgPT0gMHg4MCkKKwkJCQl7CisJCQkJCWludCBjID0gKCh4ICYgMHgxZikgPDwgNikgKyAoeSAmIDB4M2YpOworCQkJCQlpZihjKSBwdXRjaGFyKGMpOworCQkJCQllbHNlIHV0ZjhfZXJyb3IoKTsKKwkJCQl9CisJCQkJZWxzZSB1dGY4X2Vycm9yKCk7CisJCQl9CisJCQllbHNlIHV0ZjhfZXJyb3IoKTsKKwkJfQorCQllbHNlIGlmKHggPT0gJy8nKSBwdXRjaGFyKCcuJyk7CisJCWVsc2UgcHV0Y2hhcih4KTsKKwl9CisJcHV0Y2hhcignXG4nKTsKKwlmcmVlKHBvb2wpOworCWZjbG9zZShjbGFzc2ZpbGUpOworCXJldHVybiAwOworfQorPT09PT09PT09PT09PT09PT09PT09PSBDdXQgaGVyZSA9PT09PT09PT09PT09PT09PT09CisKKworPT09PT09PT09PT09PT09PT09PT09PSBDdXQgaGVyZSA9PT09PT09PT09PT09PT09PT09CisjIS9iaW4vYmFzaAorIyAvdXNyL2xvY2FsL2phdmEvYmluL2phcndyYXBwZXIgLSB0aGUgd3JhcHBlciBmb3IgYmluZm10X21pc2MvamFyCisKK2phdmEgLWphciAkMQorPT09PT09PT09PT09PT09PT09PT09PSBDdXQgaGVyZSA9PT09PT09PT09PT09PT09PT09CisKKworTm93IHNpbXBseSBjaG1vZCAreCB0aGUgLmNsYXNzLCAuamFyIGFuZC9vciAuaHRtbCBmaWxlcyB5b3Ugd2FudCB0byBleGVjdXRlLgorVG8gYWRkIGEgSmF2YSBwcm9ncmFtIHRvIHlvdXIgcGF0aCBiZXN0IHB1dCBhIHN5bWJvbGljIGxpbmsgdG8gdGhlIG1haW4KKy5jbGFzcyBmaWxlIGludG8gL3Vzci9iaW4gKG9yIGFub3RoZXIgcGxhY2UgeW91IGxpa2UpIG9taXR0aW5nIHRoZSAuY2xhc3MKK2V4dGVuc2lvbi4gVGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBvcmlnaW5hbCAuY2xhc3MgZmlsZSB3aWxsIGJlCithZGRlZCB0byB5b3VyIENMQVNTUEFUSCBkdXJpbmcgZXhlY3V0aW9uLgorCisKK1RvIHRlc3QgeW91ciBuZXcgc2V0dXAsIGVudGVyIGluIHRoZSBmb2xsb3dpbmcgc2ltcGxlIEphdmEgYXBwLCBhbmQgbmFtZQoraXQgIkhlbGxvV29ybGQuamF2YSI6CisKKwljbGFzcyBIZWxsb1dvcmxkIHsKKwkJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgeworCQkJU3lzdGVtLm91dC5wcmludGxuKCJIZWxsbyBXb3JsZCEiKTsKKwkJfQorCX0KKworTm93IGNvbXBpbGUgdGhlIGFwcGxpY2F0aW9uIHdpdGg6CisJamF2YWMgSGVsbG9Xb3JsZC5qYXZhCisKK1NldCB0aGUgZXhlY3V0YWJsZSBwZXJtaXNzaW9ucyBvZiB0aGUgYmluYXJ5IGZpbGUsIHdpdGg6CisJY2htb2QgNzU1IEhlbGxvV29ybGQuY2xhc3MKKworQW5kIHRoZW4gZXhlY3V0ZSBpdDoKKwkuL0hlbGxvV29ybGQuY2xhc3MKKworCitUbyBleGVjdXRlIEphdmEgSmFyIGZpbGVzLCBzaW1wbGUgY2htb2QgdGhlICouamFyIGZpbGVzIHRvIGluY2x1ZGUKK3RoZSBleGVjdXRpb24gYml0LCB0aGVuIGp1c3QgZG8KKyAgICAgICAuL0FwcGxpY2F0aW9uLmphcgorCisKK1RvIGV4ZWN1dGUgSmF2YSBBcHBsZXRzLCBzaW1wbGUgY2htb2QgdGhlICouaHRtbCBmaWxlcyB0byBpbmNsdWRlCit0aGUgZXhlY3V0aW9uIGJpdCwgdGhlbiBqdXN0IGRvCisJLi9BcHBsZXQuaHRtbAorCisKK29yaWdpbmFsbHkgYnkgQnJpYW4gQS4gTGFudHosIGJyaWFuQGxhbnR6LmNvbQoraGVhdmlseSBlZGl0ZWQgZm9yIGJpbmZtdF9taXNjIGJ5IFJpY2hhcmQgR8O8bnRoZXIKK25ldyBzY3JpcHRzIGJ5IENvbGluIEouIFdhdHNvbiA8Y2p3NDRAY2FtLmFjLnVrPgorYWRkZWQgZXhlY3V0YWJsZSBKYXIgZmlsZSBzdXBwb3J0IGJ5IEt1cnQgSHV3aWcgPGt1cnRAaWt1LW5ldHouZGU+CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24va2FzYW4udHh0IGIvRG9jdW1lbnRhdGlvbi9rYXNhbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWExZTBjOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24va2FzYW4udHh0CkBAIC0wLDAgKzEsMTcyIEBACitLZXJuZWxBZGRyZXNzU2FuaXRpemVyIChLQVNBTikKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCiswLiBPdmVydmlldworPT09PT09PT09PT0KKworS2VybmVsQWRkcmVzc1NBTml0aXplciAoS0FTQU4pIGlzIGEgZHluYW1pYyBtZW1vcnkgZXJyb3IgZGV0ZWN0b3IuIEl0IHByb3ZpZGVzCithIGZhc3QgYW5kIGNvbXByZWhlbnNpdmUgc29sdXRpb24gZm9yIGZpbmRpbmcgdXNlLWFmdGVyLWZyZWUgYW5kIG91dC1vZi1ib3VuZHMKK2J1Z3MuCisKK0tBU0FOIHVzZXMgY29tcGlsZS10aW1lIGluc3RydW1lbnRhdGlvbiBmb3IgY2hlY2tpbmcgZXZlcnkgbWVtb3J5IGFjY2VzcywKK3RoZXJlZm9yZSB5b3Ugd2lsbCBuZWVkIGEgR0NDIHZlcnNpb24gNC45LjIgb3IgbGF0ZXIuIEdDQyA1LjAgb3IgbGF0ZXIgaXMKK3JlcXVpcmVkIGZvciBkZXRlY3Rpb24gb2Ygb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyB0byBzdGFjayBvciBnbG9iYWwgdmFyaWFibGVzLgorCitDdXJyZW50bHkgS0FTQU4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHg4Nl82NCBhcmNoaXRlY3R1cmUgYW5kIHJlcXVpcmVzIHRoZQora2VybmVsIHRvIGJlIGJ1aWx0IHdpdGggdGhlIFNMVUIgYWxsb2NhdG9yLgorCisxLiBVc2FnZQorPT09PT09PT0KKworVG8gZW5hYmxlIEtBU0FOIGNvbmZpZ3VyZSBrZXJuZWwgd2l0aDoKKworCSAgQ09ORklHX0tBU0FOID0geQorCithbmQgY2hvb3NlIGJldHdlZW4gQ09ORklHX0tBU0FOX09VVExJTkUgYW5kIENPTkZJR19LQVNBTl9JTkxJTkUuIE91dGxpbmUgYW5kCitpbmxpbmUgYXJlIGNvbXBpbGVyIGluc3RydW1lbnRhdGlvbiB0eXBlcy4gVGhlIGZvcm1lciBwcm9kdWNlcyBzbWFsbGVyIGJpbmFyeQordGhlIGxhdHRlciBpcyAxLjEgLSAyIHRpbWVzIGZhc3Rlci4gSW5saW5lIGluc3RydW1lbnRhdGlvbiByZXF1aXJlcyBhIEdDQwordmVyc2lvbiA1LjAgb3IgbGF0ZXIuCisKK0N1cnJlbnRseSBLQVNBTiB3b3JrcyBvbmx5IHdpdGggdGhlIFNMVUIgbWVtb3J5IGFsbG9jYXRvci4KK0ZvciBiZXR0ZXIgYnVnIGRldGVjdGlvbiBhbmQgbmljZXIgcmVwb3J0aW5nLCBlbmFibGUgQ09ORklHX1NUQUNLVFJBQ0UuCisKK1RvIGRpc2FibGUgaW5zdHJ1bWVudGF0aW9uIGZvciBzcGVjaWZpYyBmaWxlcyBvciBkaXJlY3RvcmllcywgYWRkIGEgbGluZQorc2ltaWxhciB0byB0aGUgZm9sbG93aW5nIHRvIHRoZSByZXNwZWN0aXZlIGtlcm5lbCBNYWtlZmlsZToKKworICAgICAgICBGb3IgYSBzaW5nbGUgZmlsZSAoZS5nLiBtYWluLm8pOgorICAgICAgICAgICAgICAgIEtBU0FOX1NBTklUSVpFX21haW4ubyA6PSBuCisKKyAgICAgICAgRm9yIGFsbCBmaWxlcyBpbiBvbmUgZGlyZWN0b3J5OgorICAgICAgICAgICAgICAgIEtBU0FOX1NBTklUSVpFIDo9IG4KKworMS4xIEVycm9yIHJlcG9ydHMKKz09PT09PT09PT09PT09PT09CisKK0EgdHlwaWNhbCBvdXQgb2YgYm91bmRzIGFjY2VzcyByZXBvcnQgbG9va3MgbGlrZSB0aGlzOgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0JVRzogQWRkcmVzc1Nhbml0aXplcjogb3V0IG9mIGJvdW5kcyBhY2Nlc3MgaW4ga21hbGxvY19vb2JfcmlnaHQrMHg2NS8weDc1IFt0ZXN0X2thc2FuXSBhdCBhZGRyIGZmZmY4ODAwNjkzYmM1ZDMKK1dyaXRlIG9mIHNpemUgMSBieSB0YXNrIG1vZHByb2JlLzE2ODkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitCVUcga21hbGxvYy0xMjggKE5vdCB0YWludGVkKToga2FzYW4gZXJyb3IKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Rpc2FibGluZyBsb2NrIGRlYnVnZ2luZyBkdWUgdG8ga2VybmVsIHRhaW50CitJTkZPOiBBbGxvY2F0ZWQgaW4ga21hbGxvY19vb2JfcmlnaHQrMHgzZC8weDc1IFt0ZXN0X2thc2FuXSBhZ2U9MCBjcHU9MCBwaWQ9MTY4OQorIF9fc2xhYl9hbGxvYysweDRiNC8weDRmMAorIGttZW1fY2FjaGVfYWxsb2NfdHJhY2UrMHgxMGIvMHgxOTAKKyBrbWFsbG9jX29vYl9yaWdodCsweDNkLzB4NzUgW3Rlc3Rfa2FzYW5dCisgaW5pdF9tb2R1bGUrMHg5LzB4NDcgW3Rlc3Rfa2FzYW5dCisgZG9fb25lX2luaXRjYWxsKzB4OTkvMHgyMDAKKyBsb2FkX21vZHVsZSsweDJjYjMvMHgzYjIwCisgU3lTX2Zpbml0X21vZHVsZSsweDc2LzB4ODAKKyBzeXN0ZW1fY2FsbF9mYXN0cGF0aCsweDEyLzB4MTcKK0lORk86IFNsYWIgMHhmZmZmZWEwMDAxYTRlZjAwIG9iamVjdHM9MTcgdXNlZD03IGZwPTB4ZmZmZjg4MDA2OTNiZDcyOCBmbGFncz0weDEwMDAwMDAwMDAwNDA4MAorSU5GTzogT2JqZWN0IDB4ZmZmZjg4MDA2OTNiYzU1OCBAb2Zmc2V0PTEzNjggZnA9MHhmZmZmODgwMDY5M2JjNzIwCisKK0J5dGVzIGI0IGZmZmY4ODAwNjkzYmM1NDg6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVhIDVhIDVhIDVhIDVhIDVhIDVhIDVhICAuLi4uLi4uLlpaWlpaWlpaCitPYmplY3QgZmZmZjg4MDA2OTNiYzU1ODogNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgIGtra2tra2tra2tra2tra2sKK09iamVjdCBmZmZmODgwMDY5M2JjNTY4OiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiAga2tra2tra2tra2tra2traworT2JqZWN0IGZmZmY4ODAwNjkzYmM1Nzg6IDZiIDZiIDZiIDZiIDZiIDZiIDZiIDZiIDZiIDZiIDZiIDZiIDZiIDZiIDZiIDZiICBra2tra2tra2tra2tra2trCitPYmplY3QgZmZmZjg4MDA2OTNiYzU4ODogNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgIGtra2tra2tra2tra2tra2sKK09iamVjdCBmZmZmODgwMDY5M2JjNTk4OiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiAga2tra2tra2tra2tra2traworT2JqZWN0IGZmZmY4ODAwNjkzYmM1YTg6IDZiIDZiIDZiIDZiIDZiIDZiIDZiIDZiIDZiIDZiIDZiIDZiIDZiIDZiIDZiIDZiICBra2tra2tra2tra2tra2trCitPYmplY3QgZmZmZjg4MDA2OTNiYzViODogNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgNmIgIGtra2tra2tra2tra2tra2sKK09iamVjdCBmZmZmODgwMDY5M2JjNWM4OiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiA2YiBhNSAga2tra2tra2tra2tra2trLgorUmVkem9uZSBmZmZmODgwMDY5M2JjNWQ4OiBjYyBjYyBjYyBjYyBjYyBjYyBjYyBjYyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uLi4uLi4KK1BhZGRpbmcgZmZmZjg4MDA2OTNiYzcxODogNWEgNWEgNWEgNWEgNWEgNWEgNWEgNWEgICAgICAgICAgICAgICAgICAgICAgICAgIFpaWlpaWlpaCitDUFU6IDAgUElEOiAxNjg5IENvbW06IG1vZHByb2JlIFRhaW50ZWQ6IEcgICAgQiAgICAgICAgICAzLjE4LjAtcmMxLW1tMSsgIzk4CitIYXJkd2FyZSBuYW1lOiBRRU1VIFN0YW5kYXJkIFBDIChpNDQwRlggKyBQSUlYLCAxOTk2KSwgQklPUyByZWwtMS43LjUtMC1nZTUxNDg4Yy0yMDE0MDYwMl8xNjQ2MTItbmlsc3Nvbi5ob21lLmtyYXhlbC5vcmcgMDQvMDEvMjAxNAorIGZmZmY4ODAwNjkzYmMwMDAgMDAwMDAwMDAwMDAwMDAwMCBmZmZmODgwMDY5M2JjNTU4IGZmZmY4ODAwNjkyM2JiNzgKKyBmZmZmZmZmZjgxY2M2OGFlIDAwMDAwMDAwMDAwMDAwZjMgZmZmZjg4MDA2ZDQwNzYwMCBmZmZmODgwMDY5MjNiYmE4CisgZmZmZmZmZmY4MTFmZDg0OCBmZmZmODgwMDZkNDA3NjAwIGZmZmZlYTAwMDFhNGVmMDAgZmZmZjg4MDA2OTNiYzU1OAorQ2FsbCBUcmFjZToKKyBbPGZmZmZmZmZmODFjYzY4YWU+XSBkdW1wX3N0YWNrKzB4NDYvMHg1OAorIFs8ZmZmZmZmZmY4MTFmZDg0OD5dIHByaW50X3RyYWlsZXIrMHhmOC8weDE2MAorIFs8ZmZmZmZmZmZhMDAwMjZhNz5dID8ga21lbV9jYWNoZV9vb2IrMHhjMy8weGMzIFt0ZXN0X2thc2FuXQorIFs8ZmZmZmZmZmY4MTFmZjBmNT5dIG9iamVjdF9lcnIrMHgzNS8weDQwCisgWzxmZmZmZmZmZmEwMDAyMDY1Pl0gPyBrbWFsbG9jX29vYl9yaWdodCsweDY1LzB4NzUgW3Rlc3Rfa2FzYW5dCisgWzxmZmZmZmZmZjgxMjBiOWZhPl0ga2FzYW5fcmVwb3J0X2Vycm9yKzB4MzhhLzB4M2YwCisgWzxmZmZmZmZmZjgxMjBhNzlmPl0gPyBrYXNhbl9wb2lzb25fc2hhZG93KzB4MmYvMHg0MAorIFs8ZmZmZmZmZmY4MTIwYjM0ND5dID8ga2FzYW5fdW5wb2lzb25fc2hhZG93KzB4MTQvMHg0MAorIFs8ZmZmZmZmZmY4MTIwYTc5Zj5dID8ga2FzYW5fcG9pc29uX3NoYWRvdysweDJmLzB4NDAKKyBbPGZmZmZmZmZmYTAwMDI2YTc+XSA/IGttZW1fY2FjaGVfb29iKzB4YzMvMHhjMyBbdGVzdF9rYXNhbl0KKyBbPGZmZmZmZmZmODEyMGE5OTU+XSBfX2FzYW5fc3RvcmUxKzB4NzUvMHhiMAorIFs8ZmZmZmZmZmZhMDAwMjYwMT5dID8ga21lbV9jYWNoZV9vb2IrMHgxZC8weGMzIFt0ZXN0X2thc2FuXQorIFs8ZmZmZmZmZmZhMDAwMjA2NT5dID8ga21hbGxvY19vb2JfcmlnaHQrMHg2NS8weDc1IFt0ZXN0X2thc2FuXQorIFs8ZmZmZmZmZmZhMDAwMjA2NT5dIGttYWxsb2Nfb29iX3JpZ2h0KzB4NjUvMHg3NSBbdGVzdF9rYXNhbl0KKyBbPGZmZmZmZmZmYTAwMDI2YjA+XSBpbml0X21vZHVsZSsweDkvMHg0NyBbdGVzdF9rYXNhbl0KKyBbPGZmZmZmZmZmODEwMDAyZDk+XSBkb19vbmVfaW5pdGNhbGwrMHg5OS8weDIwMAorIFs8ZmZmZmZmZmY4MTFlNGU1Yz5dID8gX192dW5tYXArMHhlYy8weDE2MAorIFs8ZmZmZmZmZmY4MTExNGY2Mz5dIGxvYWRfbW9kdWxlKzB4MmNiMy8weDNiMjAKKyBbPGZmZmZmZmZmODExMGZkNzA+XSA/IG1fc2hvdysweDI0MC8weDI0MAorIFs8ZmZmZmZmZmY4MTExNWYwNj5dIFN5U19maW5pdF9tb2R1bGUrMHg3Ni8weDgwCisgWzxmZmZmZmZmZjgxY2QzMTI5Pl0gc3lzdGVtX2NhbGxfZmFzdHBhdGgrMHgxMi8weDE3CitNZW1vcnkgc3RhdGUgYXJvdW5kIHRoZSBidWdneSBhZGRyZXNzOgorIGZmZmY4ODAwNjkzYmMzMDA6IGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjCisgZmZmZjg4MDA2OTNiYzM4MDogZmMgZmMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgZmMKKyBmZmZmODgwMDY5M2JjNDAwOiBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYworIGZmZmY4ODAwNjkzYmM0ODA6IGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjCisgZmZmZjg4MDA2OTNiYzUwMDogZmMgZmMgZmMgZmMgZmMgZmMgZmMgZmMgZmMgZmMgZmMgMDAgMDAgMDAgMDAgMDAKKz5mZmZmODgwMDY5M2JjNTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMyBmYyBmYyBmYyBmYyBmYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKyBmZmZmODgwMDY5M2JjNjAwOiBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYworIGZmZmY4ODAwNjkzYmM2ODA6IGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjCisgZmZmZjg4MDA2OTNiYzcwMDogZmMgZmMgZmMgZmMgZmIgZmIgZmIgZmIgZmIgZmIgZmIgZmIgZmIgZmIgZmIgZmIKKyBmZmZmODgwMDY5M2JjNzgwOiBmYiBmYiBmYiBmYiBmYiBmYiBmYiBmYiBmYiBmYiBmYiBmYiBmYiBmYiBmYiBmYgorIGZmZmY4ODAwNjkzYmM4MDA6IGZiIGZiIGZiIGZiIGZiIGZiIGZiIGZiIGZiIGZiIGZiIGZiIGZiIGZiIGZiIGZiCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGhlYWRlciBvZiB0aGUgcmVwb3J0IGRpc2NyaWJlIHdoYXQga2luZCBvZiBidWcgaGFwcGVuZWQgYW5kIHdoYXQga2luZCBvZgorYWNjZXNzIGNhdXNlZCBpdC4gSXQncyBmb2xsb3dlZCBieSB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGFjY2Vzc2VkIHNsdWIgb2JqZWN0Cisoc2VlICdTTFVCIERlYnVnIG91dHB1dCcgc2VjdGlvbiBpbiBEb2N1bWVudGF0aW9uL3ZtL3NsdWIudHh0IGZvciBkZXRhaWxzKSBhbmQKK3RoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYWNjZXNzZWQgbWVtb3J5IHBhZ2UuCisKK0luIHRoZSBsYXN0IHNlY3Rpb24gdGhlIHJlcG9ydCBzaG93cyBtZW1vcnkgc3RhdGUgYXJvdW5kIHRoZSBhY2Nlc3NlZCBhZGRyZXNzLgorUmVhZGluZyB0aGlzIHBhcnQgcmVxdWlyZXMgc29tZSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBLQVNBTiB3b3Jrcy4KKworVGhlIHN0YXRlIG9mIGVhY2ggOCBhbGlnbmVkIGJ5dGVzIG9mIG1lbW9yeSBpcyBlbmNvZGVkIGluIG9uZSBzaGFkb3cgYnl0ZS4KK1Rob3NlIDggYnl0ZXMgY2FuIGJlIGFjY2Vzc2libGUsIHBhcnRpYWxseSBhY2Nlc3NpYmxlLCBmcmVlZCBvciBiZSBhIHJlZHpvbmUuCitXZSB1c2UgdGhlIGZvbGxvd2luZyBlbmNvZGluZyBmb3IgZWFjaCBzaGFkb3cgYnl0ZTogMCBtZWFucyB0aGF0IGFsbCA4IGJ5dGVzCitvZiB0aGUgY29ycmVzcG9uZGluZyBtZW1vcnkgcmVnaW9uIGFyZSBhY2Nlc3NpYmxlOyBudW1iZXIgTiAoMSA8PSBOIDw9IDcpIG1lYW5zCit0aGF0IHRoZSBmaXJzdCBOIGJ5dGVzIGFyZSBhY2Nlc3NpYmxlLCBhbmQgb3RoZXIgKDggLSBOKSBieXRlcyBhcmUgbm90OworYW55IG5lZ2F0aXZlIHZhbHVlIGluZGljYXRlcyB0aGF0IHRoZSBlbnRpcmUgOC1ieXRlIHdvcmQgaXMgaW5hY2Nlc3NpYmxlLgorV2UgdXNlIGRpZmZlcmVudCBuZWdhdGl2ZSB2YWx1ZXMgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBkaWZmZXJlbnQga2luZHMgb2YKK2luYWNjZXNzaWJsZSBtZW1vcnkgbGlrZSByZWR6b25lcyBvciBmcmVlZCBtZW1vcnkgKHNlZSBtbS9rYXNhbi9rYXNhbi5oKS4KKworSW4gdGhlIHJlcG9ydCBhYm92ZSB0aGUgYXJyb3dzIHBvaW50IHRvIHRoZSBzaGFkb3cgYnl0ZSAwMywgd2hpY2ggbWVhbnMgdGhhdAordGhlIGFjY2Vzc2VkIGFkZHJlc3MgaXMgcGFydGlhbGx5IGFjY2Vzc2libGUuCisKKworMi4gSW1wbGVtZW50YXRpb24gZGV0YWlscworPT09PT09PT09PT09PT09PT09PT09PT09PQorCitGcm9tIGEgaGlnaCBsZXZlbCwgb3VyIGFwcHJvYWNoIHRvIG1lbW9yeSBlcnJvciBkZXRlY3Rpb24gaXMgc2ltaWxhciB0byB0aGF0CitvZiBrbWVtY2hlY2s6IHVzZSBzaGFkb3cgbWVtb3J5IHRvIHJlY29yZCB3aGV0aGVyIGVhY2ggYnl0ZSBvZiBtZW1vcnkgaXMgc2FmZQordG8gYWNjZXNzLCBhbmQgdXNlIGNvbXBpbGUtdGltZSBpbnN0cnVtZW50YXRpb24gdG8gY2hlY2sgc2hhZG93IG1lbW9yeSBvbiBlYWNoCittZW1vcnkgYWNjZXNzLgorCitBZGRyZXNzU2FuaXRpemVyIGRlZGljYXRlcyAxLzggb2Yga2VybmVsIG1lbW9yeSB0byBpdHMgc2hhZG93IG1lbW9yeQorKGUuZy4gMTZUQiB0byBjb3ZlciAxMjhUQiBvbiB4ODZfNjQpIGFuZCB1c2VzIGRpcmVjdCBtYXBwaW5nIHdpdGggYSBzY2FsZSBhbmQKK29mZnNldCB0byB0cmFuc2xhdGUgYSBtZW1vcnkgYWRkcmVzcyB0byBpdHMgY29ycmVzcG9uZGluZyBzaGFkb3cgYWRkcmVzcy4KKworSGVyZSBpcyB0aGUgZnVuY3Rpb24gd2hpY2ggdHJhbnNsYXRlcyBhbiBhZGRyZXNzIHRvIGl0cyBjb3JyZXNwb25kaW5nIHNoYWRvdworYWRkcmVzczoKKworc3RhdGljIGlubGluZSB2b2lkICprYXNhbl9tZW1fdG9fc2hhZG93KGNvbnN0IHZvaWQgKmFkZHIpCit7CisJcmV0dXJuICgodW5zaWduZWQgbG9uZylhZGRyID4+IEtBU0FOX1NIQURPV19TQ0FMRV9TSElGVCkKKwkJKyBLQVNBTl9TSEFET1dfT0ZGU0VUOworfQorCit3aGVyZSBLQVNBTl9TSEFET1dfU0NBTEVfU0hJRlQgPSAzLgorCitDb21waWxlLXRpbWUgaW5zdHJ1bWVudGF0aW9uIHVzZWQgZm9yIGNoZWNraW5nIG1lbW9yeSBhY2Nlc3Nlcy4gQ29tcGlsZXIgaW5zZXJ0cworZnVuY3Rpb24gY2FsbHMgKF9fYXNhbl9sb2FkKihhZGRyKSwgX19hc2FuX3N0b3JlKihhZGRyKSkgYmVmb3JlIGVhY2ggbWVtb3J5CithY2Nlc3Mgb2Ygc2l6ZSAxLCAyLCA0LCA4IG9yIDE2LiBUaGVzZSBmdW5jdGlvbnMgY2hlY2sgd2hldGhlciBtZW1vcnkgYWNjZXNzIGlzCit2YWxpZCBvciBub3QgYnkgY2hlY2tpbmcgY29ycmVzcG9uZGluZyBzaGFkb3cgbWVtb3J5LgorCitHQ0MgNS4wIGhhcyBwb3NzaWJpbGl0eSB0byBwZXJmb3JtIGlubGluZSBpbnN0cnVtZW50YXRpb24uIEluc3RlYWQgb2YgbWFraW5nCitmdW5jdGlvbiBjYWxscyBHQ0MgZGlyZWN0bHkgaW5zZXJ0cyB0aGUgY29kZSB0byBjaGVjayB0aGUgc2hhZG93IG1lbW9yeS4KK1RoaXMgb3B0aW9uIHNpZ25pZmljYW50bHkgZW5sYXJnZXMga2VybmVsIGJ1dCBpdCBnaXZlcyB4MS4xLXgyIHBlcmZvcm1hbmNlCitib29zdCBvdmVyIG91dGxpbmUgaW5zdHJ1bWVudGVkIGtlcm5lbC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24va2J1aWxkLzAwLUlOREVYIGIvRG9jdW1lbnRhdGlvbi9rYnVpbGQvMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM1ZTZhYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24va2J1aWxkLzAwLUlOREVYCkBAIC0wLDAgKzEsMTQgQEAKKzAwLUlOREVYCisJLSB0aGlzIGZpbGU6IGluZm8gb24gdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzCitoZWFkZXJzX2luc3RhbGwudHh0CisJLSBob3cgdG8gZXhwb3J0IExpbnV4IGhlYWRlcnMgZm9yIHVzZSBieSB1c2Vyc3BhY2UKK2tidWlsZC50eHQKKwktIGRldmVsb3BlciBpbmZvcm1hdGlvbiBvbiBrYnVpbGQKK2tjb25maWcudHh0CisJLSB1c2FnZSBoZWxwIGZvciBtYWtlICpjb25maWcKK2tjb25maWctbGFuZ3VhZ2UudHh0CisJLSBzcGVjaWZpY2F0aW9uIG9mIENvbmZpZyBMYW5ndWFnZSwgdGhlIGxhbmd1YWdlIGluIEtjb25maWcgZmlsZXMKK21ha2VmaWxlcy50eHQKKwktIGRldmVsb3BlciBpbmZvcm1hdGlvbiBmb3IgbGludXgga2VybmVsIG1ha2VmaWxlcworbW9kdWxlcy50eHQKKwktIGhvdyB0byBidWlsZCBtb2R1bGVzIGFuZCB0byBpbnN0YWxsIHRoZW0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24va2J1aWxkL0tjb25maWcucmVjdXJzaW9uLWlzc3VlLTAxIGIvRG9jdW1lbnRhdGlvbi9rYnVpbGQvS2NvbmZpZy5yZWN1cnNpb24taXNzdWUtMDEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg4NzdkYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24va2J1aWxkL0tjb25maWcucmVjdXJzaW9uLWlzc3VlLTAxCkBAIC0wLDAgKzEsNTcgQEAKKyMgU2ltcGxlIEtjb25maWcgcmVjdXJzaXZlIGlzc3VlCisjIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorIworIyBUZXN0IHdpdGg6CisjCisjIG1ha2UgS0JVSUxEX0tDT05GSUc9RG9jdW1lbnRhdGlvbi9rYnVpbGQvS2NvbmZpZy5yZWN1cnNpb24taXNzdWUtMDEgYWxsbm9jb25maWcKKyMKKyMgVGhpcyBLY29uZmlnIGZpbGUgaGFzIGEgc2ltcGxlIHJlY3Vyc2l2ZSBkZXBlbmRlbmN5IGlzc3VlLiBJbiBvcmRlciB0bworIyB1bmRlcnN0YW5kIHdoeSB0aGlzIHJlY3Vyc2l2ZSBkZXBlbmRlbmN5IGlzc3VlIG9jY3VycyBsZXRzIGNvbnNpZGVyIHdoYXQKKyMgS2NvbmZpZyBuZWVkcyB0byBhZGRyZXNzLiBXZSBpdGVyYXRlIG92ZXIgd2hhdCBLY29uZmlnIG5lZWRzIHRvIGFkZHJlc3MKKyMgYnkgc3RlcHBpbmcgdGhyb3VnaCB0aGUgcXVlc3Rpb25zIGl0IG5lZWRzIHRvIGFkZHJlc3Mgc2VxdWVudGlhbGx5LgorIworIyAgKiBXaGF0IHZhbHVlcyBhcmUgcG9zc2libGUgZm9yIENPUkU/CisjCisjIENPUkVfQkVMTF9BX0FEVkFOQ0VEIHNlbGVjdHMgQ09SRSwgd2hpY2ggbWVhbnMgdGhhdCBpdCBpbmZsdWVuY2VzIHRoZSB2YWx1ZXMKKyMgdGhhdCBhcmUgcG9zc2libGUgZm9yIENPUkUuIFNvIGZvciBleGFtcGxlIGlmIENPUkVfQkVMTF9BX0FEVkFOQ0VEIGlzICd5JywKKyMgQ09SRSBtdXN0IGJlICd5JyB0b28uCisjCisjICAqIFdoYXQgaW5mbHVlbmNlcyBDT1JFX0JFTExfQV9BRFZBTkNFRCA/CisjCisjIEFzIHRoZSBuYW1lIGltcGxpZXMgQ09SRV9CRUxMX0FfQURWQU5DRUQgaXMgYW4gYWR2YW5jZWQgZmVhdHVyZSBvZgorIyBDT1JFX0JFTExfQSBzbyBuYXR1cmFsbHkgaXQgZGVwZW5kcyBvbiBDT1JFX0JFTExfQS4gU28gaWYgQ09SRV9CRUxMX0EgaXMgJ3knCisjIHdlIGtub3cgQ09SRV9CRUxMX0FfQURWQU5DRUQgY2FuIGJlICd5JyB0b28uCisjCisjICAgKiBXaGF0IGluZmx1ZW5jZXMgQ09SRV9CRUxMX0EgPworIworIyBDT1JFX0JFTExfQSBkZXBlbmRzIG9uIENPUkUsIHNvIENPUkUgaW5mbHVlbmNlcyBDT1JFX0JFTExfQS4KKyMKKyMgQnV0IHRoYXQgaXMgYSBwcm9ibGVtLCBiZWNhdXNlIHRoaXMgbWVhbnMgdGhhdCBpbiBvcmRlciB0byBkZXRlcm1pbmUKKyMgd2hhdCB2YWx1ZXMgYXJlIHBvc3NpYmxlIGZvciBDT1JFIHdlIGVuZGVkIHVwIG5lZWRpbmcgdG8gYWRkcmVzcyBxdWVzdGlvbnMKKyMgcmVnYXJkaW5nIHBvc3NpYmxlIHZhbHVlcyBvZiBDT1JFIGl0c2VsZiBhZ2Fpbi4gQW5zd2VyaW5nIHRoZSBvcmlnaW5hbAorIyBxdWVzdGlvbiBvZiB3aGF0IGFyZSB0aGUgcG9zc2libGUgdmFsdWVzIG9mIENPUkUgd291bGQgbWFrZSB0aGUga2NvbmZpZworIyB0b29scyBydW4gaW4gYSBsb29wLiBXaGVuIHRoaXMgaGFwcGVucyBLY29uZmlnIGV4aXRzIGFuZCBjb21wbGFpbnMgYWJvdXQKKyMgdGhlICJyZWN1cnNpdmUgZGVwZW5kZW5jeSBkZXRlY3RlZCIgZXJyb3IuCisjCisjIFJlYWRpbmcgdGhlIERvY3VtZW50YXRpb24va2J1aWxkL0tjb25maWcucmVjdXJzaW9uLWlzc3VlLTAxIGZpbGUgaXQgbWF5IGJlCisjIG9idmlvdXMgdGhhdCBhbiBlYXN5IHRvIHNvbHV0aW9uIHRvIHRoaXMgcHJvYmxlbSBzaG91bGQganVzdCBiZSB0aGUgcmVtb3ZhbAorIyBvZiB0aGUgInNlbGVjdCBDT1JFIiBmcm9tIENPUkVfQkVMTF9BX0FEVkFOQ0VEIGFzIHRoYXQgaXMgaW1wbGljaXQgYWxyZWFkeQorIyBzaW5jZSBDT1JFX0JFTExfQSBkZXBlbmRzIG9uIENPUkUuIFJlY3Vyc2l2ZSBkZXBlbmRlbmN5IGlzc3VlcyBhcmUgbm90IGFsd2F5cworIyBzbyB0cml2aWFsIHRvIHJlc29sdmUsIHdlIHByb3ZpZGUgYW5vdGhlciBleGFtcGxlIGJlbG93IG9mIHByYWN0aWNhbAorIyBpbXBsaWNhdGlvbnMgb2YgdGhpcyByZWN1cnNpdmUgaXNzdWUgd2hlcmUgdGhlIHNvbHV0aW9uIGlzIHBlcmhhcHMgbm90IHNvCisjIGVhc3kgdG8gdW5kZXJzdGFuZC4gTm90ZSB0aGF0IG1hdGNoaW5nIHNlbWFudGljcyBvbiB0aGUgZGVwZW5kZW5jeSBvbgorIyBDT1JFIGFsc28gY29uc2lzdCBvZiBhIHNvbHV0aW9uIHRvIHRoaXMgcmVjdXJzaXZlIHByb2JsZW0uCisKK21haW5tZW51ICJTaW1wbGUgZXhhbXBsZSB0byBkZW1vIGtjb25maWcgcmVjdXJzaXZlIGRlcGVuZGVuY3kgaXNzdWUiCisKK2NvbmZpZyBDT1JFCisJdHJpc3RhdGUKKworY29uZmlnIENPUkVfQkVMTF9BCisJdHJpc3RhdGUKKwlkZXBlbmRzIG9uIENPUkUKKworY29uZmlnIENPUkVfQkVMTF9BX0FEVkFOQ0VECisJdHJpc3RhdGUKKwlkZXBlbmRzIG9uIENPUkVfQkVMTF9BCisJc2VsZWN0IENPUkUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24va2J1aWxkL0tjb25maWcucmVjdXJzaW9uLWlzc3VlLTAyIGIvRG9jdW1lbnRhdGlvbi9rYnVpbGQvS2NvbmZpZy5yZWN1cnNpb24taXNzdWUtMDIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjlmZDU2YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24va2J1aWxkL0tjb25maWcucmVjdXJzaW9uLWlzc3VlLTAyCkBAIC0wLDAgKzEsNjMgQEAKKyMgQ3VtdWxhdGl2ZSBLY29uZmlnIHJlY3Vyc2l2ZSBpc3N1ZQorIyB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisjCisjIFRlc3Qgd2l0aDoKKyMKKyMgbWFrZSBLQlVJTERfS0NPTkZJRz1Eb2N1bWVudGF0aW9uL2tidWlsZC9LY29uZmlnLnJlY3Vyc2lvbi1pc3N1ZS0wMiBhbGxub2NvbmZpZworIworIyBUaGUgcmVjdXJzaXZlIGxpbWl0YXRpb25zIHdpdGggS2NvbmZpZyBoYXMgc29tZSBub24gaW50dWl0aXZlIGltcGxpY2F0aW9ucyBvbgorIyBrY29uZmlnIHNlbWF0aWNzIHdoaWNoIGFyZSBkb2N1bWVudGVkIGhlcmUuIE9uZSBrbm93biBwcmFjdGljYWwgaW1wbGljYXRpb24KKyMgb2YgdGhlIHJlY3Vyc2l2ZSBsaW1pdGF0aW9uIGlzIHRoYXQgZHJpdmVycyBjYW5ub3QgbmVnYXRlIGZlYXR1cmVzIGZyb20gb3RoZXIKKyMgZHJpdmVycyBpZiB0aGV5IHNoYXJlIGEgY29tbW9uIGNvcmUgcmVxdWlyZW1lbnQgYW5kIHVzZSBkaXNqb2ludCBzZW1hbnRpY3MgdG8KKyMgYW5ub3RhdGUgdGhvc2UgcmVxdWlyZW1lbnRzLCBpZSwgc29tZSBkcml2ZXJzIHVzZSAiZGVwZW5kcyBvbiIgd2hpbGUgb3RoZXJzCisjIHVzZSAic2VsZWN0Ii4gRm9yIGluc3RhbmNlIGl0IG1lYW5zIGlmIGEgZHJpdmVyIEEgYW5kIGRyaXZlciBCIHNoYXJlIHRoZSBzYW1lCisjIGNvcmUgcmVxdWlyZW1lbnQsIGFuZCBvbmUgdXNlcyAic2VsZWN0IiB3aGlsZSB0aGUgb3RoZXIgdXNlcyAiZGVwZW5kcyBvbiIgdG8KKyMgYW5ub3RhdGUgdGhpcywgYWxsIGZlYXR1cmVzIHRoYXQgZHJpdmVyIEEgc2VsZWN0cyBjYW5ub3Qgbm93IGJlIG5lZ2F0ZWQgYnkKKyMgZHJpdmVyIEIuCisjCisjIEEgcGVyaGFwcyBub3Qgc28gb2J2aW91cyBpbXBsaWNhdGlvbiBvZiB0aGlzIGlzIHRoYXQsIGlmIHNlbWFudGljcyBvbiB0aGVzZQorIyBjb3JlIHJlcXVpcmVtZW50cyBhcmUgbm90IGNhcmVmdWxseSBzeW5jZWQsIGFzIGRyaXZlcnMgZXZvbHZlIGZlYXR1cmVzCisjIHRoZXkgc2VsZWN0IG9yIGRlcGVuZCBvbiBlbmQgdXAgYmVjb21pbmcgc2hhcmVkIHJlcXVpcmVtZW50cyB3aGljaCBjYW5ub3QgYmUKKyMgbmVnYXRlZCBieSBvdGhlciBkcml2ZXJzLgorIworIyBUaGUgZXhhbXBsZSBwcm92aWRlZCBpbiBEb2N1bWVudGF0aW9uL2tidWlsZC9LY29uZmlnLnJlY3Vyc2lvbi1pc3N1ZS0wMgorIyBkZXNjcmliZXMgYSBzaW1wbGUgZHJpdmVyIGNvcmUgbGF5b3V0IG9mIGV4YW1wbGUgZmVhdHVyZXMgYSBrZXJuZWwgbWlnaHQKKyMgaGF2ZS4gTGV0J3MgYXNzdW1lIHdlIGhhdmUgc29tZSBDT1JFIGZ1bmN0aW9uYWxpdHksIHRoZW4gdGhlIGtlcm5lbCBoYXMgYQorIyBzZXJpZXMgb2YgYmVsbHMgYW5kIHdoaXN0bGVzIGl0IGRlc2lyZXMgdG8gaW1wbGVtZW50LCBpdHMgbm90IHNvIGFkdmFuY2VkIHNvCisjIGl0IG9ubHkgc3VwcG9ydHMgYmVsbHMgYXQgdGhpcyB0aW1lOiBDT1JFX0JFTExfQSBhbmQgQ09SRV9CRUxMX0IuIElmCisjIENPUkVfQkVMTF9BIGhhcyBzb21lIGFkdmFuY2VkIGZlYXR1cmUgQ09SRV9CRUxMX0FfQURWQU5DRUQgd2hpY2ggc2VsZWN0cworIyBDT1JFX0JFTExfQSB0aGVuIENPUkVfQkVMTF9BIGVuZHMgdXAgYmVjb21pbmcgYSBjb21tb24gQkVMTCBmZWF0dXJlIHdoaWNoCisjIG90aGVyIGJlbGxzIGluIHRoZSBzeXN0ZW0gY2Fubm90IG5lZ2F0ZS4gVGhlIHJlYXNvbiBmb3IgdGhpcyBpc3N1ZSBpcworIyBkdWUgdG8gdGhlIGRpc2pvaW50IHVzZSBvZiBzZW1hbnRpY3Mgb24gZXhwcmVzc2luZyBlYWNoIGJlbGwncyByZWxhdGlvbnNoaXAKKyMgd2l0aCBDT1JFLCBvbmUgdXNlcyAiZGVwZW5kcyBvbiIgd2hpbGUgdGhlIG90aGVyIHVzZXMgInNlbGVjdCIuIEFub3RoZXIKKyMgbW9yZSBpbXBvcnRhbnQgcmVhc29uIGlzIHRoYXQga2NvbmZpZyBkb2VzIG5vdCBjaGVjayBmb3IgZGVwZW5kZW5jaWVzIGxpc3RlZAorIyB1bmRlciAnc2VsZWN0JyBmb3IgYSBzeW1ib2wsIHdoZW4gc3VjaCBzeW1ib2xzIGFyZSBzZWxlY3RlZCBrY29uZmlnIHRoZW0KKyMgYXMgbWFuZGF0b3J5IHJlcXVpcmVkIHN5bWJvbHMuIEZvciBtb3JlIGRldGFpbHMgb24gdGhlIGhlYXZ5IGhhbmRlZCBuYXR1cmUKKyMgb2Ygc2VsZWN0IHJlZmVyIHRvIERvY3VtZW50YXRpb24va2J1aWxkL0tjb25maWcuc2VsZWN0LWJyZWFrCisjCisjIFRvIGZpeCB0aGlzIHRoZSAiZGVwZW5kcyBvbiBDT1JFIiBtdXN0IGJlIGNoYW5nZWQgdG8gInNlbGVjdCBDT1JFIiwgb3IgdGhlCisjICJzZWxlY3QgQ09SRSIgbXVzdCBiZSBjaGFuZ2VkIHRvICJkZXBlbmRzIG9uIENPUkUiLgorIworIyBGb3IgYW4gZXhhbXBsZSByZWFsIHdvcmxkIHNjZW5hcmlvIGlzc3VlIHJlZmVyIHRvIHRoZSBhdHRlbXB0IHRvIHJlbW92ZQorIyAic2VsZWN0IEZXX0xPQURFUiIgWzBdLCBpbiB0aGUgZW5kIHRoZSBzaW1wbGUgYWx0ZXJuYXRpdmUgc29sdXRpb24gdG8gdGhpcworIyBwcm9ibGVtIGNvbnNpc3RlZCBvbiBtYXRjaGluZyBzZW1hbnRpY3Mgd2l0aCBuZXdseSBpbnRyb2R1Y2VkIGZlYXR1cmVzLgorIworIyBbMF0gaHR0cDovL2xrbWwua2VybmVsLm9yZy9yLzE0MzIyNDExNDktODc2Mi0xLWdpdC1zZW5kLWVtYWlsLW1jZ3JvZkBkby1ub3QtcGFuaWMuY29tCisKK21haW5tZW51ICJTaW1wbGUgZXhhbXBsZSB0byBkZW1vIGN1bXVsYXRpdmUga2NvbmZpZyByZWN1cnNpdmUgZGVwZW5kZW5jeSBpbXBsaWNhdGlvbiIKKworY29uZmlnIENPUkUKKwl0cmlzdGF0ZQorCitjb25maWcgQ09SRV9CRUxMX0EKKwl0cmlzdGF0ZQorCWRlcGVuZHMgb24gQ09SRQorCitjb25maWcgQ09SRV9CRUxMX0FfQURWQU5DRUQKKwl0cmlzdGF0ZQorCXNlbGVjdCBDT1JFX0JFTExfQQorCitjb25maWcgQ09SRV9CRUxMX0IKKwl0cmlzdGF0ZQorCWRlcGVuZHMgb24gIUNPUkVfQkVMTF9BCisJc2VsZWN0IENPUkUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24va2J1aWxkL0tjb25maWcuc2VsZWN0LWJyZWFrIGIvRG9jdW1lbnRhdGlvbi9rYnVpbGQvS2NvbmZpZy5zZWxlY3QtYnJlYWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY1Y2ViMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24va2J1aWxkL0tjb25maWcuc2VsZWN0LWJyZWFrCkBAIC0wLDAgKzEsMzMgQEAKKyMgU2VsZWN0IGJyb2tlbiBkZXBlbmRlbmN5IGlzc3VlCisjIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorIworIyBUZXN0IHdpdGg6CisjCisjIG1ha2UgS0JVSUxEX0tDT05GSUc9RG9jdW1lbnRhdGlvbi9rYnVpbGQvS2NvbmZpZy5zZWxlY3QtYnJlYWsgbWVudWNvbmZpZworIworIyBrY29uZmlnIHdpbGwgbm90IGNvbXBsYWluIGFuZCBlbmFibGUgdGhpcyBsYXlvdXQgZm9yIGNvbmZpZ3VyYXRpb24uIFRoaXMgaXMKKyMgY3VycmVudGx5IGEgZmVhdHVyZSBvZiBrY29uZmlnLCBnaXZlbiBzZWxlY3Qgd2FzIGRlc2lnbmVkIHRvIGJlIGhlYXZ5IGhhbmRlZC4KKyMgS2NvbmZpZyBjdXJyZW50bHkgZG9lcyBub3QgY2hlY2sgdGhlIGxpc3Qgb2Ygc3ltYm9scyBsaXN0ZWQgb24gYSBzeW1ib2wncworIyAic2VsZWN0IiBsaXN0LCB0aGlzIGlzIGRvbmUgb24gcHVycG9zZSB0byBoZWxwIGxvYWQgYSBzZXQgb2Yga25vd24gcmVxdWlyZWQKKyMgc3ltYm9scy4gQmVjYXVzZSBvZiB0aGlzIHVzZSBvZiBzZWxlY3Qgc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXV0aW9uLiBBbgorIyBleGFtcGxlIG9mIHRoaXMgaXNzdWUgaXMgYmVsb3cuCisjCisjIFRoZSBvcHRpb24gQiBhbmQgQyBhcmUgY2xlYXJseSBjb250cmFkaWN0aW5nIHdpdGggcmVzcGVjdCB0byBBLgorIyBIb3dldmVyLCB3aGVuIEEgaXMgc2V0LCBDIGNhbiBiZSBzZXQgYXMgd2VsbCBiZWNhdXNlIEtjb25maWcgZG9lcyBub3QKKyMgdmlzaXQgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGUgc2VsZWN0IHRhcmdldCAoaW4gdGhpcyBjYXNlIEIpLiAgQW5kIHNpbmNlCisjIEtjb25maWcgZG9lcyBub3QgdmlzaXQgdGhlIGRlcGVuZGVuY2llcywgaXQgYnJlYWtzIHRoZSBkZXBlbmRlbmNpZXMgb2YgQgorIyAoIUEpLgorCittYWlubWVudSAiU2ltcGxlIGV4YW1wbGUgdG8gZGVtbyBrY29uZmlnIHNlbGVjdCBicm9rZW4gZGVwZW5kZW5jeSBpc3N1ZSIKKworY29uZmlnIEEKKwlib29sICJDT05GSUcgQSIKKworY29uZmlnIEIKKwlib29sICJDT05GSUcgQiIKKwlkZXBlbmRzIG9uICFBCisKK2NvbmZpZyBDCisJYm9vbCAiQ09ORklHIEMiCisJZGVwZW5kcyBvbiBBCisJc2VsZWN0IEIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24va2J1aWxkL2hlYWRlcnNfaW5zdGFsbC50eHQgYi9Eb2N1bWVudGF0aW9uL2tidWlsZC9oZWFkZXJzX2luc3RhbGwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMTUzYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2tidWlsZC9oZWFkZXJzX2luc3RhbGwudHh0CkBAIC0wLDAgKzEsNTAgQEAKK0V4cG9ydGluZyBrZXJuZWwgaGVhZGVycyBmb3IgdXNlIGJ5IHVzZXJzcGFjZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSAibWFrZSBoZWFkZXJzX2luc3RhbGwiIGNvbW1hbmQgZXhwb3J0cyB0aGUga2VybmVsJ3MgaGVhZGVyIGZpbGVzIGluIGEKK2Zvcm0gc3VpdGFibGUgZm9yIHVzZSBieSB1c2Vyc3BhY2UgcHJvZ3JhbXMuCisKK1RoZSBsaW51eCBrZXJuZWwncyBleHBvcnRlZCBoZWFkZXIgZmlsZXMgZGVzY3JpYmUgdGhlIEFQSSBmb3IgdXNlciBzcGFjZQorcHJvZ3JhbXMgYXR0ZW1wdGluZyB0byB1c2Uga2VybmVsIHNlcnZpY2VzLiAgVGhlc2Uga2VybmVsIGhlYWRlciBmaWxlcyBhcmUKK3VzZWQgYnkgdGhlIHN5c3RlbSdzIEMgbGlicmFyeSAoc3VjaCBhcyBnbGliYyBvciB1Q2xpYmMpIHRvIGRlZmluZSBhdmFpbGFibGUKK3N5c3RlbSBjYWxscywgYXMgd2VsbCBhcyBjb25zdGFudHMgYW5kIHN0cnVjdHVyZXMgdG8gYmUgdXNlZCB3aXRoIHRoZXNlCitzeXN0ZW0gY2FsbHMuICBUaGUgQyBsaWJyYXJ5J3MgaGVhZGVyIGZpbGVzIGluY2x1ZGUgdGhlIGtlcm5lbCBoZWFkZXIgZmlsZXMKK2Zyb20gdGhlICJsaW51eCIgc3ViZGlyZWN0b3J5LiAgVGhlIHN5c3RlbSdzIGxpYmMgaGVhZGVycyBhcmUgdXN1YWxseQoraW5zdGFsbGVkIGF0IHRoZSBkZWZhdWx0IGxvY2F0aW9uIC91c3IvaW5jbHVkZSBhbmQgdGhlIGtlcm5lbCBoZWFkZXJzIGluCitzdWJkaXJlY3RvcmllcyB1bmRlciB0aGF0IChtb3N0IG5vdGFibHkgL3Vzci9pbmNsdWRlL2xpbnV4IGFuZAorL3Vzci9pbmNsdWRlL2FzbSkuCisKK0tlcm5lbCBoZWFkZXJzIGFyZSBiYWNrd2FyZHMgY29tcGF0aWJsZSwgYnV0IG5vdCBmb3J3YXJkcyBjb21wYXRpYmxlLiAgVGhpcworbWVhbnMgdGhhdCBhIHByb2dyYW0gYnVpbHQgYWdhaW5zdCBhIEMgbGlicmFyeSB1c2luZyBvbGRlciBrZXJuZWwgaGVhZGVycworc2hvdWxkIHJ1biBvbiBhIG5ld2VyIGtlcm5lbCAoYWx0aG91Z2ggaXQgbWF5IG5vdCBoYXZlIGFjY2VzcyB0byBuZXcKK2ZlYXR1cmVzKSwgYnV0IGEgcHJvZ3JhbSBidWlsdCBhZ2FpbnN0IG5ld2VyIGtlcm5lbCBoZWFkZXJzIG1heSBub3Qgd29yayBvbiBhbgorb2xkZXIga2VybmVsLgorCitUaGUgIm1ha2UgaGVhZGVyc19pbnN0YWxsIiBjb21tYW5kIGNhbiBiZSBydW4gaW4gdGhlIHRvcCBsZXZlbCBkaXJlY3Rvcnkgb2YgdGhlCitrZXJuZWwgc291cmNlIGNvZGUgKG9yIHVzaW5nIGEgc3RhbmRhcmQgb3V0LW9mLXRyZWUgYnVpbGQpLiAgSXQgdGFrZXMgdHdvCitvcHRpb25hbCBhcmd1bWVudHM6CisKKyAgbWFrZSBoZWFkZXJzX2luc3RhbGwgQVJDSD1pMzg2IElOU1RBTExfSERSX1BBVEg9L3VzcgorCitBUkNIIGluZGljYXRlcyB3aGljaCBhcmNoaXRlY3R1cmUgdG8gcHJvZHVjZSBoZWFkZXJzIGZvciwgYW5kIGRlZmF1bHRzIHRvIHRoZQorY3VycmVudCBhcmNoaXRlY3R1cmUuICBUaGUgbGludXgvYXNtIGRpcmVjdG9yeSBvZiB0aGUgZXhwb3J0ZWQga2VybmVsIGhlYWRlcnMKK2lzIHBsYXRmb3JtLXNwZWNpZmljLCB0byBzZWUgYSBjb21wbGV0ZSBsaXN0IG9mIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzIHVzZQordGhlIGNvbW1hbmQ6CisKKyAgbHMgLWQgaW5jbHVkZS9hc20tKiB8IHNlZCAncy8uKi0vLycKKworSU5TVEFMTF9IRFJfUEFUSCBpbmRpY2F0ZXMgd2hlcmUgdG8gaW5zdGFsbCB0aGUgaGVhZGVycy4gSXQgZGVmYXVsdHMgdG8KKyIuL3VzciIuCisKK0FuICdpbmNsdWRlJyBkaXJlY3RvcnkgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGluc2lkZSBJTlNUQUxMX0hEUl9QQVRIIGFuZAoraGVhZGVycyBhcmUgaW5zdGFsbGVkIGluICdJTlNUQUxMX0hEUl9QQVRIL2luY2x1ZGUnLgorCitUaGUgY29tbWFuZCAibWFrZSBoZWFkZXJzX2luc3RhbGxfYWxsIiBleHBvcnRzIGhlYWRlcnMgZm9yIGFsbCBhcmNoaXRlY3R1cmVzCitzaW11bHRhbmVvdXNseS4gIChUaGlzIGlzIG1vc3RseSBvZiBpbnRlcmVzdCB0byBkaXN0cmlidXRpb24gbWFpbnRhaW5lcnMsCit3aG8gY3JlYXRlIGFuIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCB0YXJiYWxsIGZyb20gdGhlIHJlc3VsdGluZyBpbmNsdWRlCitkaXJlY3RvcnkuKSAgWW91IGFsc28gY2FuIHVzZSBIRFJfQVJDSF9MSVNUIHRvIHNwZWNpZnkgbGlzdCBvZiBhcmNoaXRlY3R1cmVzLgorUmVtZW1iZXIgdG8gcHJvdmlkZSB0aGUgYXBwcm9wcmlhdGUgbGludXgvYXNtIGRpcmVjdG9yeSB2aWEgIm12IiBvciAibG4gLXMiCitiZWZvcmUgYnVpbGRpbmcgYSBDIGxpYnJhcnkgd2l0aCBoZWFkZXJzIGV4cG9ydGVkIHRoaXMgd2F5LgorCitUaGUga2VybmVsIGhlYWRlciBleHBvcnQgaW5mcmFzdHJ1Y3R1cmUgaXMgbWFpbnRhaW5lZCBieSBEYXZpZCBXb29kaG91c2UKKzxkd213MkBpbmZyYWRlYWQub3JnPi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24va2J1aWxkL2tidWlsZC50eHQgYi9Eb2N1bWVudGF0aW9uL2tidWlsZC9rYnVpbGQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmZjZhNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2tidWlsZC9rYnVpbGQudHh0CkBAIC0wLDAgKzEsMjQwIEBACitPdXRwdXQgZmlsZXMKKworbW9kdWxlcy5vcmRlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgZmlsZSByZWNvcmRzIHRoZSBvcmRlciBpbiB3aGljaCBtb2R1bGVzIGFwcGVhciBpbiBNYWtlZmlsZXMuIFRoaXMKK2lzIHVzZWQgYnkgbW9kcHJvYmUgdG8gZGV0ZXJtaW5pc3RpY2FsbHkgcmVzb2x2ZSBhbGlhc2VzIHRoYXQgbWF0Y2gKK211bHRpcGxlIG1vZHVsZXMuCisKK21vZHVsZXMuYnVpbHRpbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgZmlsZSBsaXN0cyBhbGwgbW9kdWxlcyB0aGF0IGFyZSBidWlsdCBpbnRvIHRoZSBrZXJuZWwuIFRoaXMgaXMgdXNlZAorYnkgbW9kcHJvYmUgdG8gbm90IGZhaWwgd2hlbiB0cnlpbmcgdG8gbG9hZCBzb21ldGhpbmcgYnVpbHRpbi4KKworCitFbnZpcm9ubWVudCB2YXJpYWJsZXMKKworS0NQUEZMQUdTCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQWRkaXRpb25hbCBvcHRpb25zIHRvIHBhc3Mgd2hlbiBwcmVwcm9jZXNzaW5nLiBUaGUgcHJlcHJvY2Vzc2luZyBvcHRpb25zCit3aWxsIGJlIHVzZWQgaW4gYWxsIGNhc2VzIHdoZXJlIGtidWlsZCBkb2VzIHByZXByb2Nlc3NpbmcgaW5jbHVkaW5nCitidWlsZGluZyBDIGZpbGVzIGFuZCBhc3NlbWJsZXIgZmlsZXMuCisKK0tBRkxBR1MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBZGRpdGlvbmFsIG9wdGlvbnMgdG8gdGhlIGFzc2VtYmxlciAoZm9yIGJ1aWx0LWluIGFuZCBtb2R1bGVzKS4KKworQUZMQUdTX01PRFVMRQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FkZGl0aW9uYWwgbW9kdWxlIHNwZWNpZmljIG9wdGlvbnMgdG8gdXNlIGZvciAkKEFTKS4KKworQUZMQUdTX0tFUk5FTAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FkZGl0aW9uYWwgb3B0aW9ucyBmb3IgJChBUykgd2hlbiB1c2VkIGZvciBhc3NlbWJsZXIKK2NvZGUgZm9yIGNvZGUgdGhhdCBpcyBjb21waWxlZCBhcyBidWlsdC1pbi4KKworS0NGTEFHUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FkZGl0aW9uYWwgb3B0aW9ucyB0byB0aGUgQyBjb21waWxlciAoZm9yIGJ1aWx0LWluIGFuZCBtb2R1bGVzKS4KKworQ0ZMQUdTX0tFUk5FTAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FkZGl0aW9uYWwgb3B0aW9ucyBmb3IgJChDQykgd2hlbiB1c2VkIHRvIGNvbXBpbGUKK2NvZGUgdGhhdCBpcyBjb21waWxlZCBhcyBidWlsdC1pbi4KKworQ0ZMQUdTX01PRFVMRQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FkZGl0aW9uYWwgbW9kdWxlIHNwZWNpZmljIG9wdGlvbnMgdG8gdXNlIGZvciAkKENDKS4KKworTERGTEFHU19NT0RVTEUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBZGRpdGlvbmFsIG9wdGlvbnMgdXNlZCBmb3IgJChMRCkgd2hlbiBsaW5raW5nIG1vZHVsZXMuCisKK0xERkxBR1Nfdm1saW51eAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FkZGl0aW9uYWwgb3B0aW9ucyBwYXNzZWQgdG8gZmluYWwgbGluayBvZiB2bWxpbnV4LgorCitLQlVJTERfVkVSQk9TRQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1NldCB0aGUga2J1aWxkIHZlcmJvc2l0eS4gQ2FuIGJlIGFzc2lnbmVkIHNhbWUgdmFsdWVzIGFzICJWPS4uLiIuCitTZWUgbWFrZSBoZWxwIGZvciB0aGUgZnVsbCBsaXN0LgorU2V0dGluZyAiVj0uLi4iIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBLQlVJTERfVkVSQk9TRS4KKworS0JVSUxEX0VYVE1PRAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1NldCB0aGUgZGlyZWN0b3J5IHRvIGxvb2sgZm9yIHRoZSBrZXJuZWwgc291cmNlIHdoZW4gYnVpbGRpbmcgZXh0ZXJuYWwKK21vZHVsZXMuCitUaGUgZGlyZWN0b3J5IGNhbiBiZSBzcGVjaWZpZWQgaW4gc2V2ZXJhbCB3YXlzOgorMSkgVXNlICJNPS4uLiIgb24gdGhlIGNvbW1hbmQgbGluZQorMikgRW52aXJvbm1lbnQgdmFyaWFibGUgS0JVSUxEX0VYVE1PRAorMykgRW52aXJvbm1lbnQgdmFyaWFibGUgU1VCRElSUworVGhlIHBvc3NpYmlsaXRpZXMgYXJlIGxpc3RlZCBpbiB0aGUgb3JkZXIgdGhleSB0YWtlIHByZWNlZGVuY2UuCitVc2luZyAiTT0uLi4iIHdpbGwgYWx3YXlzIG92ZXJyaWRlIHRoZSBvdGhlcnMuCisKK0tCVUlMRF9PVVRQVVQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTcGVjaWZ5IHRoZSBvdXRwdXQgZGlyZWN0b3J5IHdoZW4gYnVpbGRpbmcgdGhlIGtlcm5lbC4KK1RoZSBvdXRwdXQgZGlyZWN0b3J5IGNhbiBhbHNvIGJlIHNwZWNpZmllZCB1c2luZyAiTz0uLi4iLgorU2V0dGluZyAiTz0uLi4iIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBLQlVJTERfT1VUUFVULgorCitLQlVJTERfREVCQVJDSAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0ZvciB0aGUgZGViLXBrZyB0YXJnZXQsIGFsbG93cyBvdmVycmlkaW5nIHRoZSBub3JtYWwgaGV1cmlzdGljcyBkZXBsb3llZCBieQorZGViLXBrZy4gTm9ybWFsbHkgZGViLXBrZyBhdHRlbXB0cyB0byBndWVzcyB0aGUgcmlnaHQgYXJjaGl0ZWN0dXJlIGJhc2VkIG9uCit0aGUgVVRTX01BQ0hJTkUgdmFyaWFibGUsIGFuZCBvbiBzb21lIGFyY2hpdGVjdHVyZXMgYWxzbyB0aGUga2VybmVsIGNvbmZpZy4KK1RoZSB2YWx1ZSBvZiBLQlVJTERfREVCQVJDSCBpcyBhc3N1bWVkIChub3QgY2hlY2tlZCkgdG8gYmUgYSB2YWxpZCBEZWJpYW4KK2FyY2hpdGVjdHVyZS4KKworQVJDSAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1NldCBBUkNIIHRvIHRoZSBhcmNoaXRlY3R1cmUgdG8gYmUgYnVpbHQuCitJbiBtb3N0IGNhc2VzIHRoZSBuYW1lIG9mIHRoZSBhcmNoaXRlY3R1cmUgaXMgdGhlIHNhbWUgYXMgdGhlCitkaXJlY3RvcnkgbmFtZSBmb3VuZCBpbiB0aGUgYXJjaC8gZGlyZWN0b3J5LgorQnV0IHNvbWUgYXJjaGl0ZWN0dXJlcyBzdWNoIGFzIHg4NiBhbmQgc3BhcmMgaGF2ZSBhbGlhc2VzLgoreDg2OiBpMzg2IGZvciAzMiBiaXQsIHg4Nl82NCBmb3IgNjQgYml0CitzcGFyYzogc3BhcmMgZm9yIDMyIGJpdCwgc3BhcmM2NCBmb3IgNjQgYml0CisKK0NST1NTX0NPTVBJTEUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTcGVjaWZ5IGFuIG9wdGlvbmFsIGZpeGVkIHBhcnQgb2YgdGhlIGJpbnV0aWxzIGZpbGVuYW1lLgorQ1JPU1NfQ09NUElMRSBjYW4gYmUgYSBwYXJ0IG9mIHRoZSBmaWxlbmFtZSBvciB0aGUgZnVsbCBwYXRoLgorCitDUk9TU19DT01QSUxFIGlzIGFsc28gdXNlZCBmb3IgY2NhY2hlIGluIHNvbWUgc2V0dXBzLgorCitDRgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FkZGl0aW9uYWwgb3B0aW9ucyBmb3Igc3BhcnNlLgorQ0YgaXMgb2Z0ZW4gdXNlZCBvbiB0aGUgY29tbWFuZC1saW5lIGxpa2UgdGhpczoKKworICAgIG1ha2UgQ0Y9LVdiaXR3aXNlIEM9MgorCitJTlNUQUxMX1BBVEgKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJTlNUQUxMX1BBVEggc3BlY2lmaWVzIHdoZXJlIHRvIHBsYWNlIHRoZSB1cGRhdGVkIGtlcm5lbCBhbmQgc3lzdGVtIG1hcAoraW1hZ2VzLiBEZWZhdWx0IGlzIC9ib290LCBidXQgeW91IGNhbiBzZXQgaXQgdG8gb3RoZXIgdmFsdWVzLgorCitJTlNUQUxMS0VSTkVMCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSW5zdGFsbCBzY3JpcHQgY2FsbGVkIHdoZW4gdXNpbmcgIm1ha2UgaW5zdGFsbCIuCitUaGUgZGVmYXVsdCBuYW1lIGlzICJpbnN0YWxsa2VybmVsIi4KKworVGhlIHNjcmlwdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgYXJndW1lbnRzOgorICAgICQxIC0ga2VybmVsIHZlcnNpb24KKyAgICAkMiAtIGtlcm5lbCBpbWFnZSBmaWxlCisgICAgJDMgLSBrZXJuZWwgbWFwIGZpbGUKKyAgICAkNCAtIGRlZmF1bHQgaW5zdGFsbCBwYXRoICh1c2Ugcm9vdCBkaXJlY3RvcnkgaWYgYmxhbmspCisKK1RoZSBpbXBsZW1lbnRhdGlvbiBvZiAibWFrZSBpbnN0YWxsIiBpcyBhcmNoaXRlY3R1cmUgc3BlY2lmaWMKK2FuZCBpdCBtYXkgZGlmZmVyIGZyb20gdGhlIGFib3ZlLgorCitJTlNUQUxMS0VSTkVMIGlzIHByb3ZpZGVkIHRvIGVuYWJsZSB0aGUgcG9zc2liaWxpdHkgdG8KK3NwZWNpZnkgYSBjdXN0b20gaW5zdGFsbGVyIHdoZW4gY3Jvc3MgY29tcGlsaW5nIGEga2VybmVsLgorCitNT0RMSUIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTcGVjaWZ5IHdoZXJlIHRvIGluc3RhbGwgbW9kdWxlcy4KK1RoZSBkZWZhdWx0IHZhbHVlIGlzOgorCisgICAgICQoSU5TVEFMTF9NT0RfUEFUSCkvbGliL21vZHVsZXMvJChLRVJORUxSRUxFQVNFKQorCitUaGUgdmFsdWUgY2FuIGJlIG92ZXJyaWRkZW4gaW4gd2hpY2ggY2FzZSB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBpZ25vcmVkLgorCitJTlNUQUxMX01PRF9QQVRICistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSU5TVEFMTF9NT0RfUEFUSCBzcGVjaWZpZXMgYSBwcmVmaXggdG8gTU9ETElCIGZvciBtb2R1bGUgZGlyZWN0b3J5CityZWxvY2F0aW9ucyByZXF1aXJlZCBieSBidWlsZCByb290cy4gIFRoaXMgaXMgbm90IGRlZmluZWQgaW4gdGhlCittYWtlZmlsZSBidXQgdGhlIGFyZ3VtZW50IGNhbiBiZSBwYXNzZWQgdG8gbWFrZSBpZiBuZWVkZWQuCisKK0lOU1RBTExfTU9EX1NUUklQCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSU5TVEFMTF9NT0RfU1RSSVAsIGlmIGRlZmluZWQsIHdpbGwgY2F1c2UgbW9kdWxlcyB0byBiZQorc3RyaXBwZWQgYWZ0ZXIgdGhleSBhcmUgaW5zdGFsbGVkLiAgSWYgSU5TVEFMTF9NT0RfU1RSSVAgaXMgJzEnLCB0aGVuCit0aGUgZGVmYXVsdCBvcHRpb24gLS1zdHJpcC1kZWJ1ZyB3aWxsIGJlIHVzZWQuICBPdGhlcndpc2UsCitJTlNUQUxMX01PRF9TVFJJUCB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMgdGhlIG9wdGlvbnMgdG8gdGhlIHN0cmlwIGNvbW1hbmQuCisKK0lOU1RBTExfRldfUEFUSAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0lOU1RBTExfRldfUEFUSCBzcGVjaWZpZXMgd2hlcmUgdG8gaW5zdGFsbCB0aGUgZmlybXdhcmUgYmxvYnMuCitUaGUgZGVmYXVsdCB2YWx1ZSBpczoKKworICAgICQoSU5TVEFMTF9NT0RfUEFUSCkvbGliL2Zpcm13YXJlCisKK1RoZSB2YWx1ZSBjYW4gYmUgb3ZlcnJpZGRlbiBpbiB3aGljaCBjYXNlIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGlnbm9yZWQuCisKK0lOU1RBTExfSERSX1BBVEgKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJTlNUQUxMX0hEUl9QQVRIIHNwZWNpZmllcyB3aGVyZSB0byBpbnN0YWxsIHVzZXIgc3BhY2UgaGVhZGVycyB3aGVuCitleGVjdXRpbmcgIm1ha2UgaGVhZGVyc18qIi4KK1RoZSBkZWZhdWx0IHZhbHVlIGlzOgorCisgICAgJChvYmp0cmVlKS91c3IKKworJChvYmp0cmVlKSBpcyB0aGUgZGlyZWN0b3J5IHdoZXJlIG91dHB1dCBmaWxlcyBhcmUgc2F2ZWQuCitUaGUgb3V0cHV0IGRpcmVjdG9yeSBpcyBvZnRlbiBzZXQgdXNpbmcgIk89Li4uIiBvbiB0aGUgY29tbWFuZGxpbmUuCisKK1RoZSB2YWx1ZSBjYW4gYmUgb3ZlcnJpZGRlbiBpbiB3aGljaCBjYXNlIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGlnbm9yZWQuCisKK0tCVUlMRF9TSUdOX1BJTgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgdmFyaWFibGUgYWxsb3dzIGEgcGFzc3BocmFzZSBvciBQSU4gdG8gYmUgcGFzc2VkIHRvIHRoZSBzaWduLWZpbGUKK3V0aWxpdHkgd2hlbiBzaWduaW5nIGtlcm5lbCBtb2R1bGVzLCBpZiB0aGUgcHJpdmF0ZSBrZXkgcmVxdWlyZXMgc3VjaC4KKworS0JVSUxEX01PRFBPU1RfV0FSTgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0tCVUlMRF9NT0RQT1NUX1dBUk4gY2FuIGJlIHNldCB0byBhdm9pZCBlcnJvcnMgaW4gY2FzZSBvZiB1bmRlZmluZWQKK3N5bWJvbHMgaW4gdGhlIGZpbmFsIG1vZHVsZSBsaW5raW5nIHN0YWdlLiBJdCBjaGFuZ2VzIHN1Y2ggZXJyb3JzCitpbnRvIHdhcm5pbmdzLgorCitLQlVJTERfTU9EUE9TVF9OT0ZJTkFMCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorS0JVSUxEX01PRFBPU1RfTk9GSU5BTCBjYW4gYmUgc2V0IHRvIHNraXAgdGhlIGZpbmFsIGxpbmsgb2YgbW9kdWxlcy4KK1RoaXMgaXMgc29sZWx5IHVzZWZ1bCB0byBzcGVlZCB1cCB0ZXN0IGNvbXBpbGVzLgorCitLQlVJTERfRVhUUkFfU1lNQk9MUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0ZvciBtb2R1bGVzIHRoYXQgdXNlIHN5bWJvbHMgZnJvbSBvdGhlciBtb2R1bGVzLgorU2VlIG1vcmUgZGV0YWlscyBpbiBtb2R1bGVzLnR4dC4KKworQUxMU09VUkNFX0FSQ0hTCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRm9yIHRhZ3MvVEFHUy9jc2NvcGUgdGFyZ2V0cywgeW91IGNhbiBzcGVjaWZ5IG1vcmUgdGhhbiBvbmUgYXJjaAordG8gYmUgaW5jbHVkZWQgaW4gdGhlIGRhdGFiYXNlcywgc2VwYXJhdGVkIGJ5IGJsYW5rIHNwYWNlLiBFLmcuOgorCisgICAgJCBtYWtlIEFMTFNPVVJDRV9BUkNIUz0ieDg2IG1pcHMgYXJtIiB0YWdzCisKK1RvIGdldCBhbGwgYXZhaWxhYmxlIGFyY2hzIHlvdSBjYW4gYWxzbyBzcGVjaWZ5IGFsbC4gRS5nLjoKKworICAgICQgbWFrZSBBTExTT1VSQ0VfQVJDSFM9YWxsIHRhZ3MKKworS0JVSUxEX0VOQUJMRV9FWFRSQV9HQ0NfQ0hFQ0tTCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSWYgZW5hYmxlZCBvdmVyIHRoZSBtYWtlIGNvbW1hbmQgbGluZSB3aXRoICJXPTEiLCBpdCB0dXJucyBvbiBhZGRpdGlvbmFsCitnY2MgLVcuLi4gb3B0aW9ucyBmb3IgbW9yZSBleHRlbnNpdmUgYnVpbGQtdGltZSBjaGVja2luZy4KKworS0JVSUxEX0JVSUxEX1RJTUVTVEFNUAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1NldHRpbmcgdGhpcyB0byBhIGRhdGUgc3RyaW5nIG92ZXJyaWRlcyB0aGUgdGltZXN0YW1wIHVzZWQgaW4gdGhlCitVVFNfVkVSU0lPTiBkZWZpbml0aW9uICh1bmFtZSAtdiBpbiB0aGUgcnVubmluZyBrZXJuZWwpLiBUaGUgdmFsdWUgaGFzIHRvCitiZSBhIHN0cmluZyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gZGF0ZSAtZC4gVGhlIGRlZmF1bHQgdmFsdWUKK2lzIHRoZSBvdXRwdXQgb2YgdGhlIGRhdGUgY29tbWFuZCBhdCBvbmUgcG9pbnQgZHVyaW5nIGJ1aWxkLgorCitLQlVJTERfQlVJTERfVVNFUiwgS0JVSUxEX0JVSUxEX0hPU1QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGVzZSB0d28gdmFyaWFibGVzIGFsbG93IHRvIG92ZXJyaWRlIHRoZSB1c2VyQGhvc3Qgc3RyaW5nIGRpc3BsYXllZCBkdXJpbmcKK2Jvb3QgYW5kIGluIC9wcm9jL3ZlcnNpb24uIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmRzCit3aG9hbWkgYW5kIGhvc3QsIHJlc3BlY3RpdmVseS4KKworS0JVSUxEX0xEUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBsaW5rZXIgc2NyaXB0IHdpdGggZnVsbCBwYXRoLiBBc3NpZ25lZCBieSB0aGUgdG9wLWxldmVsIE1ha2VmaWxlLgorCitLQlVJTERfVk1MSU5VWF9JTklUCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQWxsIG9iamVjdCBmaWxlcyBmb3IgdGhlIGluaXQgKGZpcnN0KSBwYXJ0IG9mIHZtbGludXguCitGaWxlcyBzcGVjaWZpZWQgd2l0aCBLQlVJTERfVk1MSU5VWF9JTklUIGFyZSBsaW5rZWQgZmlyc3QuCisKK0tCVUlMRF9WTUxJTlVYX01BSU4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBbGwgb2JqZWN0IGZpbGVzIGZvciB0aGUgbWFpbiBwYXJ0IG9mIHZtbGludXguCitLQlVJTERfVk1MSU5VWF9JTklUIGFuZCBLQlVJTERfVk1MSU5VWF9NQUlOIHRvZ2V0aGVyIHNwZWNpZnkKK2FsbCB0aGUgb2JqZWN0IGZpbGVzIHVzZWQgdG8gbGluayB2bWxpbnV4LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9rYnVpbGQva2NvbmZpZy1sYW5ndWFnZS50eHQgYi9Eb2N1bWVudGF0aW9uL2tidWlsZC9rY29uZmlnLWxhbmd1YWdlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTI4NTZkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9rYnVpbGQva2NvbmZpZy1sYW5ndWFnZS50eHQKQEAgLTAsMCArMSw1NTYgQEAKK0ludHJvZHVjdGlvbgorLS0tLS0tLS0tLS0tCisKK1RoZSBjb25maWd1cmF0aW9uIGRhdGFiYXNlIGlzIGEgY29sbGVjdGlvbiBvZiBjb25maWd1cmF0aW9uIG9wdGlvbnMKK29yZ2FuaXplZCBpbiBhIHRyZWUgc3RydWN0dXJlOgorCisJKy0gQ29kZSBtYXR1cml0eSBsZXZlbCBvcHRpb25zCisJfCAgKy0gUHJvbXB0IGZvciBkZXZlbG9wbWVudCBhbmQvb3IgaW5jb21wbGV0ZSBjb2RlL2RyaXZlcnMKKwkrLSBHZW5lcmFsIHNldHVwCisJfCAgKy0gTmV0d29ya2luZyBzdXBwb3J0CisJfCAgKy0gU3lzdGVtIFYgSVBDCisJfCAgKy0gQlNEIFByb2Nlc3MgQWNjb3VudGluZworCXwgICstIFN5c2N0bCBzdXBwb3J0CisJKy0gTG9hZGFibGUgbW9kdWxlIHN1cHBvcnQKKwl8ICArLSBFbmFibGUgbG9hZGFibGUgbW9kdWxlIHN1cHBvcnQKKwl8ICAgICArLSBTZXQgdmVyc2lvbiBpbmZvcm1hdGlvbiBvbiBhbGwgbW9kdWxlIHN5bWJvbHMKKwl8ICAgICArLSBLZXJuZWwgbW9kdWxlIGxvYWRlcgorCSstIC4uLgorCitFdmVyeSBlbnRyeSBoYXMgaXRzIG93biBkZXBlbmRlbmNpZXMuIFRoZXNlIGRlcGVuZGVuY2llcyBhcmUgdXNlZAordG8gZGV0ZXJtaW5lIHRoZSB2aXNpYmlsaXR5IG9mIGFuIGVudHJ5LiBBbnkgY2hpbGQgZW50cnkgaXMgb25seQordmlzaWJsZSBpZiBpdHMgcGFyZW50IGVudHJ5IGlzIGFsc28gdmlzaWJsZS4KKworTWVudSBlbnRyaWVzCistLS0tLS0tLS0tLS0KKworTW9zdCBlbnRyaWVzIGRlZmluZSBhIGNvbmZpZyBvcHRpb247IGFsbCBvdGhlciBlbnRyaWVzIGhlbHAgdG8gb3JnYW5pemUKK3RoZW0uIEEgc2luZ2xlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGRlZmluZWQgbGlrZSB0aGlzOgorCitjb25maWcgTU9EVkVSU0lPTlMKKwlib29sICJTZXQgdmVyc2lvbiBpbmZvcm1hdGlvbiBvbiBhbGwgbW9kdWxlIHN5bWJvbHMiCisJZGVwZW5kcyBvbiBNT0RVTEVTCisJaGVscAorCSAgVXN1YWxseSwgbW9kdWxlcyBoYXZlIHRvIGJlIHJlY29tcGlsZWQgd2hlbmV2ZXIgeW91IHN3aXRjaCB0byBhIG5ldworCSAga2VybmVsLiAgLi4uCisKK0V2ZXJ5IGxpbmUgc3RhcnRzIHdpdGggYSBrZXkgd29yZCBhbmQgY2FuIGJlIGZvbGxvd2VkIGJ5IG11bHRpcGxlCithcmd1bWVudHMuICAiY29uZmlnIiBzdGFydHMgYSBuZXcgY29uZmlnIGVudHJ5LiBUaGUgZm9sbG93aW5nIGxpbmVzCitkZWZpbmUgYXR0cmlidXRlcyBmb3IgdGhpcyBjb25maWcgb3B0aW9uLiBBdHRyaWJ1dGVzIGNhbiBiZSB0aGUgdHlwZSBvZgordGhlIGNvbmZpZyBvcHRpb24sIGlucHV0IHByb21wdCwgZGVwZW5kZW5jaWVzLCBoZWxwIHRleHQgYW5kIGRlZmF1bHQKK3ZhbHVlcy4gQSBjb25maWcgb3B0aW9uIGNhbiBiZSBkZWZpbmVkIG11bHRpcGxlIHRpbWVzIHdpdGggdGhlIHNhbWUKK25hbWUsIGJ1dCBldmVyeSBkZWZpbml0aW9uIGNhbiBoYXZlIG9ubHkgYSBzaW5nbGUgaW5wdXQgcHJvbXB0IGFuZCB0aGUKK3R5cGUgbXVzdCBub3QgY29uZmxpY3QuCisKK01lbnUgYXR0cmlidXRlcworLS0tLS0tLS0tLS0tLS0tCisKK0EgbWVudSBlbnRyeSBjYW4gaGF2ZSBhIG51bWJlciBvZiBhdHRyaWJ1dGVzLiBOb3QgYWxsIG9mIHRoZW0gYXJlCithcHBsaWNhYmxlIGV2ZXJ5d2hlcmUgKHNlZSBzeW50YXgpLgorCistIHR5cGUgZGVmaW5pdGlvbjogImJvb2wiLyJ0cmlzdGF0ZSIvInN0cmluZyIvImhleCIvImludCIKKyAgRXZlcnkgY29uZmlnIG9wdGlvbiBtdXN0IGhhdmUgYSB0eXBlLiBUaGVyZSBhcmUgb25seSB0d28gYmFzaWMgdHlwZXM6CisgIHRyaXN0YXRlIGFuZCBzdHJpbmc7IHRoZSBvdGhlciB0eXBlcyBhcmUgYmFzZWQgb24gdGhlc2UgdHdvLiBUaGUgdHlwZQorICBkZWZpbml0aW9uIG9wdGlvbmFsbHkgYWNjZXB0cyBhbiBpbnB1dCBwcm9tcHQsIHNvIHRoZXNlIHR3byBleGFtcGxlcworICBhcmUgZXF1aXZhbGVudDoKKworCWJvb2wgIk5ldHdvcmtpbmcgc3VwcG9ydCIKKyAgYW5kCisJYm9vbAorCXByb21wdCAiTmV0d29ya2luZyBzdXBwb3J0IgorCistIGlucHV0IHByb21wdDogInByb21wdCIgPHByb21wdD4gWyJpZiIgPGV4cHI+XQorICBFdmVyeSBtZW51IGVudHJ5IGNhbiBoYXZlIGF0IG1vc3Qgb25lIHByb21wdCwgd2hpY2ggaXMgdXNlZCB0byBkaXNwbGF5CisgIHRvIHRoZSB1c2VyLiBPcHRpb25hbGx5IGRlcGVuZGVuY2llcyBvbmx5IGZvciB0aGlzIHByb21wdCBjYW4gYmUgYWRkZWQKKyAgd2l0aCAiaWYiLgorCistIGRlZmF1bHQgdmFsdWU6ICJkZWZhdWx0IiA8ZXhwcj4gWyJpZiIgPGV4cHI+XQorICBBIGNvbmZpZyBvcHRpb24gY2FuIGhhdmUgYW55IG51bWJlciBvZiBkZWZhdWx0IHZhbHVlcy4gSWYgbXVsdGlwbGUKKyAgZGVmYXVsdCB2YWx1ZXMgYXJlIHZpc2libGUsIG9ubHkgdGhlIGZpcnN0IGRlZmluZWQgb25lIGlzIGFjdGl2ZS4KKyAgRGVmYXVsdCB2YWx1ZXMgYXJlIG5vdCBsaW1pdGVkIHRvIHRoZSBtZW51IGVudHJ5IHdoZXJlIHRoZXkgYXJlCisgIGRlZmluZWQuIFRoaXMgbWVhbnMgdGhlIGRlZmF1bHQgY2FuIGJlIGRlZmluZWQgc29tZXdoZXJlIGVsc2Ugb3IgYmUKKyAgb3ZlcnJpZGRlbiBieSBhbiBlYXJsaWVyIGRlZmluaXRpb24uCisgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIG9ubHkgYXNzaWduZWQgdG8gdGhlIGNvbmZpZyBzeW1ib2wgaWYgbm8gb3RoZXIKKyAgdmFsdWUgd2FzIHNldCBieSB0aGUgdXNlciAodmlhIHRoZSBpbnB1dCBwcm9tcHQgYWJvdmUpLiBJZiBhbiBpbnB1dAorICBwcm9tcHQgaXMgdmlzaWJsZSB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBwcmVzZW50ZWQgdG8gdGhlIHVzZXIgYW5kIGNhbgorICBiZSBvdmVycmlkZGVuIGJ5IGhpbS4KKyAgT3B0aW9uYWxseSwgZGVwZW5kZW5jaWVzIG9ubHkgZm9yIHRoaXMgZGVmYXVsdCB2YWx1ZSBjYW4gYmUgYWRkZWQgd2l0aAorICAiaWYiLgorCistIHR5cGUgZGVmaW5pdGlvbiArIGRlZmF1bHQgdmFsdWU6CisJImRlZl9ib29sIi8iZGVmX3RyaXN0YXRlIiA8ZXhwcj4gWyJpZiIgPGV4cHI+XQorICBUaGlzIGlzIGEgc2hvcnRoYW5kIG5vdGF0aW9uIGZvciBhIHR5cGUgZGVmaW5pdGlvbiBwbHVzIGEgdmFsdWUuCisgIE9wdGlvbmFsbHkgZGVwZW5kZW5jaWVzIGZvciB0aGlzIGRlZmF1bHQgdmFsdWUgY2FuIGJlIGFkZGVkIHdpdGggImlmIi4KKworLSBkZXBlbmRlbmNpZXM6ICJkZXBlbmRzIG9uIiA8ZXhwcj4KKyAgVGhpcyBkZWZpbmVzIGEgZGVwZW5kZW5jeSBmb3IgdGhpcyBtZW51IGVudHJ5LiBJZiBtdWx0aXBsZQorICBkZXBlbmRlbmNpZXMgYXJlIGRlZmluZWQsIHRoZXkgYXJlIGNvbm5lY3RlZCB3aXRoICcmJicuIERlcGVuZGVuY2llcworICBhcmUgYXBwbGllZCB0byBhbGwgb3RoZXIgb3B0aW9ucyB3aXRoaW4gdGhpcyBtZW51IGVudHJ5ICh3aGljaCBhbHNvCisgIGFjY2VwdCBhbiAiaWYiIGV4cHJlc3Npb24pLCBzbyB0aGVzZSB0d28gZXhhbXBsZXMgYXJlIGVxdWl2YWxlbnQ6CisKKwlib29sICJmb28iIGlmIEJBUgorCWRlZmF1bHQgeSBpZiBCQVIKKyAgYW5kCisJZGVwZW5kcyBvbiBCQVIKKwlib29sICJmb28iCisJZGVmYXVsdCB5CisKKy0gcmV2ZXJzZSBkZXBlbmRlbmNpZXM6ICJzZWxlY3QiIDxzeW1ib2w+IFsiaWYiIDxleHByPl0KKyAgV2hpbGUgbm9ybWFsIGRlcGVuZGVuY2llcyByZWR1Y2UgdGhlIHVwcGVyIGxpbWl0IG9mIGEgc3ltYm9sIChzZWUKKyAgYmVsb3cpLCByZXZlcnNlIGRlcGVuZGVuY2llcyBjYW4gYmUgdXNlZCB0byBmb3JjZSBhIGxvd2VyIGxpbWl0IG9mCisgIGFub3RoZXIgc3ltYm9sLiBUaGUgdmFsdWUgb2YgdGhlIGN1cnJlbnQgbWVudSBzeW1ib2wgaXMgdXNlZCBhcyB0aGUKKyAgbWluaW1hbCB2YWx1ZSA8c3ltYm9sPiBjYW4gYmUgc2V0IHRvLiBJZiA8c3ltYm9sPiBpcyBzZWxlY3RlZCBtdWx0aXBsZQorICB0aW1lcywgdGhlIGxpbWl0IGlzIHNldCB0byB0aGUgbGFyZ2VzdCBzZWxlY3Rpb24uCisgIFJldmVyc2UgZGVwZW5kZW5jaWVzIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBib29sZWFuIG9yIHRyaXN0YXRlCisgIHN5bWJvbHMuCisgIE5vdGU6CisJc2VsZWN0IHNob3VsZCBiZSB1c2VkIHdpdGggY2FyZS4gc2VsZWN0IHdpbGwgZm9yY2UKKwlhIHN5bWJvbCB0byBhIHZhbHVlIHdpdGhvdXQgdmlzaXRpbmcgdGhlIGRlcGVuZGVuY2llcy4KKwlCeSBhYnVzaW5nIHNlbGVjdCB5b3UgYXJlIGFibGUgdG8gc2VsZWN0IGEgc3ltYm9sIEZPTyBldmVuCisJaWYgRk9PIGRlcGVuZHMgb24gQkFSIHRoYXQgaXMgbm90IHNldC4KKwlJbiBnZW5lcmFsIHVzZSBzZWxlY3Qgb25seSBmb3Igbm9uLXZpc2libGUgc3ltYm9scworCShubyBwcm9tcHRzIGFueXdoZXJlKSBhbmQgZm9yIHN5bWJvbHMgd2l0aCBubyBkZXBlbmRlbmNpZXMuCisJVGhhdCB3aWxsIGxpbWl0IHRoZSB1c2VmdWxuZXNzIGJ1dCBvbiB0aGUgb3RoZXIgaGFuZCBhdm9pZAorCXRoZSBpbGxlZ2FsIGNvbmZpZ3VyYXRpb25zIGFsbCBvdmVyLgorCistIGxpbWl0aW5nIG1lbnUgZGlzcGxheTogInZpc2libGUgaWYiIDxleHByPgorICBUaGlzIGF0dHJpYnV0ZSBpcyBvbmx5IGFwcGxpY2FibGUgdG8gbWVudSBibG9ja3MsIGlmIHRoZSBjb25kaXRpb24gaXMKKyAgZmFsc2UsIHRoZSBtZW51IGJsb2NrIGlzIG5vdCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgKHRoZSBzeW1ib2xzCisgIGNvbnRhaW5lZCB0aGVyZSBjYW4gc3RpbGwgYmUgc2VsZWN0ZWQgYnkgb3RoZXIgc3ltYm9scywgdGhvdWdoKS4gSXQgaXMKKyAgc2ltaWxhciB0byBhIGNvbmRpdGlvbmFsICJwcm9tcHQiIGF0dHJpYnV0ZSBmb3IgaW5kaXZpZHVhbCBtZW51CisgIGVudHJpZXMuIERlZmF1bHQgdmFsdWUgb2YgInZpc2libGUiIGlzIHRydWUuCisKKy0gbnVtZXJpY2FsIHJhbmdlczogInJhbmdlIiA8c3ltYm9sPiA8c3ltYm9sPiBbImlmIiA8ZXhwcj5dCisgIFRoaXMgYWxsb3dzIHRvIGxpbWl0IHRoZSByYW5nZSBvZiBwb3NzaWJsZSBpbnB1dCB2YWx1ZXMgZm9yIGludAorICBhbmQgaGV4IHN5bWJvbHMuIFRoZSB1c2VyIGNhbiBvbmx5IGlucHV0IGEgdmFsdWUgd2hpY2ggaXMgbGFyZ2VyIHRoYW4KKyAgb3IgZXF1YWwgdG8gdGhlIGZpcnN0IHN5bWJvbCBhbmQgc21hbGxlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBzZWNvbmQKKyAgc3ltYm9sLgorCistIGhlbHAgdGV4dDogImhlbHAiIG9yICItLS1oZWxwLS0tIgorICBUaGlzIGRlZmluZXMgYSBoZWxwIHRleHQuIFRoZSBlbmQgb2YgdGhlIGhlbHAgdGV4dCBpcyBkZXRlcm1pbmVkIGJ5CisgIHRoZSBpbmRlbnRhdGlvbiBsZXZlbCwgdGhpcyBtZWFucyBpdCBlbmRzIGF0IHRoZSBmaXJzdCBsaW5lIHdoaWNoIGhhcworICBhIHNtYWxsZXIgaW5kZW50YXRpb24gdGhhbiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgaGVscCB0ZXh0LgorICAiLS0taGVscC0tLSIgYW5kICJoZWxwIiBkbyBub3QgZGlmZmVyIGluIGJlaGF2aW91ciwgIi0tLWhlbHAtLS0iIGlzCisgIHVzZWQgdG8gaGVscCB2aXN1YWxseSBzZXBhcmF0ZSBjb25maWd1cmF0aW9uIGxvZ2ljIGZyb20gaGVscCB3aXRoaW4KKyAgdGhlIGZpbGUgYXMgYW4gYWlkIHRvIGRldmVsb3BlcnMuCisKKy0gbWlzYyBvcHRpb25zOiAib3B0aW9uIiA8c3ltYm9sPls9PHZhbHVlPl0KKyAgVmFyaW91cyBsZXNzIGNvbW1vbiBvcHRpb25zIGNhbiBiZSBkZWZpbmVkIHZpYSB0aGlzIG9wdGlvbiBzeW50YXgsCisgIHdoaWNoIGNhbiBtb2RpZnkgdGhlIGJlaGF2aW91ciBvZiB0aGUgbWVudSBlbnRyeSBhbmQgaXRzIGNvbmZpZworICBzeW1ib2wuIFRoZXNlIG9wdGlvbnMgYXJlIGN1cnJlbnRseSBwb3NzaWJsZToKKworICAtICJkZWZjb25maWdfbGlzdCIKKyAgICBUaGlzIGRlY2xhcmVzIGEgbGlzdCBvZiBkZWZhdWx0IGVudHJpZXMgd2hpY2ggY2FuIGJlIHVzZWQgd2hlbgorICAgIGxvb2tpbmcgZm9yIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gKHdoaWNoIGlzIHVzZWQgd2hlbiB0aGUgbWFpbgorICAgIC5jb25maWcgZG9lc24ndCBleGlzdHMgeWV0LikKKworICAtICJtb2R1bGVzIgorICAgIFRoaXMgZGVjbGFyZXMgdGhlIHN5bWJvbCB0byBiZSB1c2VkIGFzIHRoZSBNT0RVTEVTIHN5bWJvbCwgd2hpY2gKKyAgICBlbmFibGVzIHRoZSB0aGlyZCBtb2R1bGFyIHN0YXRlIGZvciBhbGwgY29uZmlnIHN5bWJvbHMuCisgICAgQXQgbW9zdCBvbmUgc3ltYm9sIG1heSBoYXZlIHRoZSAibW9kdWxlcyIgb3B0aW9uIHNldC4KKworICAtICJlbnYiPTx2YWx1ZT4KKyAgICBUaGlzIGltcG9ydHMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGludG8gS2NvbmZpZy4gSXQgYmVoYXZlcyBsaWtlCisgICAgYSBkZWZhdWx0LCBleGNlcHQgdGhhdCB0aGUgdmFsdWUgY29tZXMgZnJvbSB0aGUgZW52aXJvbm1lbnQsIHRoaXMKKyAgICBhbHNvIG1lYW5zIHRoYXQgdGhlIGJlaGF2aW91ciB3aGVuIG1peGluZyBpdCB3aXRoIG5vcm1hbCBkZWZhdWx0cyBpcworICAgIHVuZGVmaW5lZCBhdCB0aGlzIHBvaW50LiBUaGUgc3ltYm9sIGlzIGN1cnJlbnRseSBub3QgZXhwb3J0ZWQgYmFjaworICAgIHRvIHRoZSBidWlsZCBlbnZpcm9ubWVudCAoaWYgdGhpcyBpcyBkZXNpcmVkLCBpdCBjYW4gYmUgZG9uZSB2aWEKKyAgICBhbm90aGVyIHN5bWJvbCkuCisKKyAgLSAiYWxsbm9jb25maWdfeSIKKyAgICBUaGlzIGRlY2xhcmVzIHRoZSBzeW1ib2wgYXMgb25lIHRoYXQgc2hvdWxkIGhhdmUgdGhlIHZhbHVlIHkgd2hlbgorICAgIHVzaW5nICJhbGxub2NvbmZpZyIuIFVzZWQgZm9yIHN5bWJvbHMgdGhhdCBoaWRlIG90aGVyIHN5bWJvbHMuCisKK01lbnUgZGVwZW5kZW5jaWVzCistLS0tLS0tLS0tLS0tLS0tLQorCitEZXBlbmRlbmNpZXMgZGVmaW5lIHRoZSB2aXNpYmlsaXR5IG9mIGEgbWVudSBlbnRyeSBhbmQgY2FuIGFsc28gcmVkdWNlCit0aGUgaW5wdXQgcmFuZ2Ugb2YgdHJpc3RhdGUgc3ltYm9scy4gVGhlIHRyaXN0YXRlIGxvZ2ljIHVzZWQgaW4gdGhlCitleHByZXNzaW9ucyB1c2VzIG9uZSBtb3JlIHN0YXRlIHRoYW4gbm9ybWFsIGJvb2xlYW4gbG9naWMgdG8gZXhwcmVzcyB0aGUKK21vZHVsZSBzdGF0ZS4gRGVwZW5kZW5jeSBleHByZXNzaW9ucyBoYXZlIHRoZSBmb2xsb3dpbmcgc3ludGF4OgorCis8ZXhwcj4gOjo9IDxzeW1ib2w+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMSkKKyAgICAgICAgICAgPHN5bWJvbD4gJz0nIDxzeW1ib2w+ICAgICAgICAgICAgICAgICgyKQorICAgICAgICAgICA8c3ltYm9sPiAnIT0nIDxzeW1ib2w+ICAgICAgICAgICAgICAgKDMpCisgICAgICAgICAgICcoJyA8ZXhwcj4gJyknICAgICAgICAgICAgICAgICAgICAgICAoNCkKKyAgICAgICAgICAgJyEnIDxleHByPiAgICAgICAgICAgICAgICAgICAgICAgICAgICg1KQorICAgICAgICAgICA8ZXhwcj4gJyYmJyA8ZXhwcj4gICAgICAgICAgICAgICAgICAgKDYpCisgICAgICAgICAgIDxleHByPiAnfHwnIDxleHByPiAgICAgICAgICAgICAgICAgICAoNykKKworRXhwcmVzc2lvbnMgYXJlIGxpc3RlZCBpbiBkZWNyZWFzaW5nIG9yZGVyIG9mIHByZWNlZGVuY2UuIAorCisoMSkgQ29udmVydCB0aGUgc3ltYm9sIGludG8gYW4gZXhwcmVzc2lvbi4gQm9vbGVhbiBhbmQgdHJpc3RhdGUgc3ltYm9scworICAgIGFyZSBzaW1wbHkgY29udmVydGVkIGludG8gdGhlIHJlc3BlY3RpdmUgZXhwcmVzc2lvbiB2YWx1ZXMuIEFsbAorICAgIG90aGVyIHN5bWJvbCB0eXBlcyByZXN1bHQgaW4gJ24nLgorKDIpIElmIHRoZSB2YWx1ZXMgb2YgYm90aCBzeW1ib2xzIGFyZSBlcXVhbCwgaXQgcmV0dXJucyAneScsCisgICAgb3RoZXJ3aXNlICduJy4KKygzKSBJZiB0aGUgdmFsdWVzIG9mIGJvdGggc3ltYm9scyBhcmUgZXF1YWwsIGl0IHJldHVybnMgJ24nLAorICAgIG90aGVyd2lzZSAneScuCisoNCkgUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24uIFVzZWQgdG8gb3ZlcnJpZGUgcHJlY2VkZW5jZS4KKyg1KSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgKDItL2V4cHIvKS4KKyg2KSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgbWluKC9leHByLywgL2V4cHIvKS4KKyg3KSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgbWF4KC9leHByLywgL2V4cHIvKS4KKworQW4gZXhwcmVzc2lvbiBjYW4gaGF2ZSBhIHZhbHVlIG9mICduJywgJ20nIG9yICd5JyAob3IgMCwgMSwgMgorcmVzcGVjdGl2ZWx5IGZvciBjYWxjdWxhdGlvbnMpLiBBIG1lbnUgZW50cnkgYmVjb21lcyB2aXNpYmxlIHdoZW4gaXRzCitleHByZXNzaW9uIGV2YWx1YXRlcyB0byAnbScgb3IgJ3knLgorCitUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIHN5bWJvbHM6IGNvbnN0YW50IGFuZCBub24tY29uc3RhbnQgc3ltYm9scy4KK05vbi1jb25zdGFudCBzeW1ib2xzIGFyZSB0aGUgbW9zdCBjb21tb24gb25lcyBhbmQgYXJlIGRlZmluZWQgd2l0aCB0aGUKKydjb25maWcnIHN0YXRlbWVudC4gTm9uLWNvbnN0YW50IHN5bWJvbHMgY29uc2lzdCBlbnRpcmVseSBvZiBhbHBoYW51bWVyaWMKK2NoYXJhY3RlcnMgb3IgdW5kZXJzY29yZXMuCitDb25zdGFudCBzeW1ib2xzIGFyZSBvbmx5IHBhcnQgb2YgZXhwcmVzc2lvbnMuIENvbnN0YW50IHN5bWJvbHMgYXJlCithbHdheXMgc3Vycm91bmRlZCBieSBzaW5nbGUgb3IgZG91YmxlIHF1b3Rlcy4gV2l0aGluIHRoZSBxdW90ZSwgYW55CitvdGhlciBjaGFyYWN0ZXIgaXMgYWxsb3dlZCBhbmQgdGhlIHF1b3RlcyBjYW4gYmUgZXNjYXBlZCB1c2luZyAnXCcuCisKK01lbnUgc3RydWN0dXJlCistLS0tLS0tLS0tLS0tLQorCitUaGUgcG9zaXRpb24gb2YgYSBtZW51IGVudHJ5IGluIHRoZSB0cmVlIGlzIGRldGVybWluZWQgaW4gdHdvIHdheXMuIEZpcnN0CitpdCBjYW4gYmUgc3BlY2lmaWVkIGV4cGxpY2l0bHk6CisKK21lbnUgIk5ldHdvcmsgZGV2aWNlIHN1cHBvcnQiCisJZGVwZW5kcyBvbiBORVQKKworY29uZmlnIE5FVERFVklDRVMKKwkuLi4KKworZW5kbWVudQorCitBbGwgZW50cmllcyB3aXRoaW4gdGhlICJtZW51IiAuLi4gImVuZG1lbnUiIGJsb2NrIGJlY29tZSBhIHN1Ym1lbnUgb2YKKyJOZXR3b3JrIGRldmljZSBzdXBwb3J0Ii4gQWxsIHN1YmVudHJpZXMgaW5oZXJpdCB0aGUgZGVwZW5kZW5jaWVzIGZyb20KK3RoZSBtZW51IGVudHJ5LCBlLmcuIHRoaXMgbWVhbnMgdGhlIGRlcGVuZGVuY3kgIk5FVCIgaXMgYWRkZWQgdG8gdGhlCitkZXBlbmRlbmN5IGxpc3Qgb2YgdGhlIGNvbmZpZyBvcHRpb24gTkVUREVWSUNFUy4KKworVGhlIG90aGVyIHdheSB0byBnZW5lcmF0ZSB0aGUgbWVudSBzdHJ1Y3R1cmUgaXMgZG9uZSBieSBhbmFseXppbmcgdGhlCitkZXBlbmRlbmNpZXMuIElmIGEgbWVudSBlbnRyeSBzb21laG93IGRlcGVuZHMgb24gdGhlIHByZXZpb3VzIGVudHJ5LCBpdAorY2FuIGJlIG1hZGUgYSBzdWJtZW51IG9mIGl0LiBGaXJzdCwgdGhlIHByZXZpb3VzIChwYXJlbnQpIHN5bWJvbCBtdXN0CitiZSBwYXJ0IG9mIHRoZSBkZXBlbmRlbmN5IGxpc3QgYW5kIHRoZW4gb25lIG9mIHRoZXNlIHR3byBjb25kaXRpb25zCittdXN0IGJlIHRydWU6CistIHRoZSBjaGlsZCBlbnRyeSBtdXN0IGJlY29tZSBpbnZpc2libGUsIGlmIHRoZSBwYXJlbnQgaXMgc2V0IHRvICduJworLSB0aGUgY2hpbGQgZW50cnkgbXVzdCBvbmx5IGJlIHZpc2libGUsIGlmIHRoZSBwYXJlbnQgaXMgdmlzaWJsZQorCitjb25maWcgTU9EVUxFUworCWJvb2wgIkVuYWJsZSBsb2FkYWJsZSBtb2R1bGUgc3VwcG9ydCIKKworY29uZmlnIE1PRFZFUlNJT05TCisJYm9vbCAiU2V0IHZlcnNpb24gaW5mb3JtYXRpb24gb24gYWxsIG1vZHVsZSBzeW1ib2xzIgorCWRlcGVuZHMgb24gTU9EVUxFUworCitjb21tZW50ICJtb2R1bGUgc3VwcG9ydCBkaXNhYmxlZCIKKwlkZXBlbmRzIG9uICFNT0RVTEVTCisKK01PRFZFUlNJT05TIGRpcmVjdGx5IGRlcGVuZHMgb24gTU9EVUxFUywgdGhpcyBtZWFucyBpdCdzIG9ubHkgdmlzaWJsZSBpZgorTU9EVUxFUyBpcyBkaWZmZXJlbnQgZnJvbSAnbicuIFRoZSBjb21tZW50IG9uIHRoZSBvdGhlciBoYW5kIGlzIGFsd2F5cwordmlzaWJsZSB3aGVuIE1PRFVMRVMgaXMgdmlzaWJsZSAodGhlIChlbXB0eSkgZGVwZW5kZW5jeSBvZiBNT0RVTEVTIGlzCithbHNvIHBhcnQgb2YgdGhlIGNvbW1lbnQgZGVwZW5kZW5jaWVzKS4KKworCitLY29uZmlnIHN5bnRheAorLS0tLS0tLS0tLS0tLS0KKworVGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBkZXNjcmliZXMgYSBzZXJpZXMgb2YgbWVudSBlbnRyaWVzLCB3aGVyZSBldmVyeQorbGluZSBzdGFydHMgd2l0aCBhIGtleXdvcmQgKGV4Y2VwdCBoZWxwIHRleHRzKS4gVGhlIGZvbGxvd2luZyBrZXl3b3JkcworZW5kIGEgbWVudSBlbnRyeToKKy0gY29uZmlnCistIG1lbnVjb25maWcKKy0gY2hvaWNlL2VuZGNob2ljZQorLSBjb21tZW50CistIG1lbnUvZW5kbWVudQorLSBpZi9lbmRpZgorLSBzb3VyY2UKK1RoZSBmaXJzdCBmaXZlIGFsc28gc3RhcnQgdGhlIGRlZmluaXRpb24gb2YgYSBtZW51IGVudHJ5LgorCitjb25maWc6CisKKwkiY29uZmlnIiA8c3ltYm9sPgorCTxjb25maWcgb3B0aW9ucz4KKworVGhpcyBkZWZpbmVzIGEgY29uZmlnIHN5bWJvbCA8c3ltYm9sPiBhbmQgYWNjZXB0cyBhbnkgb2YgYWJvdmUKK2F0dHJpYnV0ZXMgYXMgb3B0aW9ucy4KKworbWVudWNvbmZpZzoKKwkibWVudWNvbmZpZyIgPHN5bWJvbD4KKwk8Y29uZmlnIG9wdGlvbnM+CisKK1RoaXMgaXMgc2ltaWxhciB0byB0aGUgc2ltcGxlIGNvbmZpZyBlbnRyeSBhYm92ZSwgYnV0IGl0IGFsc28gZ2l2ZXMgYQoraGludCB0byBmcm9udCBlbmRzLCB0aGF0IGFsbCBzdWJvcHRpb25zIHNob3VsZCBiZSBkaXNwbGF5ZWQgYXMgYQorc2VwYXJhdGUgbGlzdCBvZiBvcHRpb25zLgorCitjaG9pY2VzOgorCisJImNob2ljZSIgW3N5bWJvbF0KKwk8Y2hvaWNlIG9wdGlvbnM+CisJPGNob2ljZSBibG9jaz4KKwkiZW5kY2hvaWNlIgorCitUaGlzIGRlZmluZXMgYSBjaG9pY2UgZ3JvdXAgYW5kIGFjY2VwdHMgYW55IG9mIHRoZSBhYm92ZSBhdHRyaWJ1dGVzIGFzCitvcHRpb25zLiBBIGNob2ljZSBjYW4gb25seSBiZSBvZiB0eXBlIGJvb2wgb3IgdHJpc3RhdGUsIHdoaWxlIGEgYm9vbGVhbgorY2hvaWNlIG9ubHkgYWxsb3dzIGEgc2luZ2xlIGNvbmZpZyBlbnRyeSB0byBiZSBzZWxlY3RlZCwgYSB0cmlzdGF0ZQorY2hvaWNlIGFsc28gYWxsb3dzIGFueSBudW1iZXIgb2YgY29uZmlnIGVudHJpZXMgdG8gYmUgc2V0IHRvICdtJy4gVGhpcworY2FuIGJlIHVzZWQgaWYgbXVsdGlwbGUgZHJpdmVycyBmb3IgYSBzaW5nbGUgaGFyZHdhcmUgZXhpc3RzIGFuZCBvbmx5IGEKK3NpbmdsZSBkcml2ZXIgY2FuIGJlIGNvbXBpbGVkL2xvYWRlZCBpbnRvIHRoZSBrZXJuZWwsIGJ1dCBhbGwgZHJpdmVycworY2FuIGJlIGNvbXBpbGVkIGFzIG1vZHVsZXMuCitBIGNob2ljZSBhY2NlcHRzIGFub3RoZXIgb3B0aW9uICJvcHRpb25hbCIsIHdoaWNoIGFsbG93cyB0byBzZXQgdGhlCitjaG9pY2UgdG8gJ24nIGFuZCBubyBlbnRyeSBuZWVkcyB0byBiZSBzZWxlY3RlZC4KK0lmIG5vIFtzeW1ib2xdIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGNob2ljZSwgdGhlbiB5b3UgY2FuIG5vdCBoYXZlIG11bHRpcGxlCitkZWZpbml0aW9ucyBvZiB0aGF0IGNob2ljZS4gSWYgYSBbc3ltYm9sXSBpcyBhc3NvY2lhdGVkIHRvIHRoZSBjaG9pY2UsCit0aGVuIHlvdSBtYXkgZGVmaW5lIHRoZSBzYW1lIGNob2ljZSAoaWUuIHdpdGggdGhlIHNhbWUgZW50cmllcykgaW4gYW5vdGhlcgorcGxhY2UuCisKK2NvbW1lbnQ6CisKKwkiY29tbWVudCIgPHByb21wdD4KKwk8Y29tbWVudCBvcHRpb25zPgorCitUaGlzIGRlZmluZXMgYSBjb21tZW50IHdoaWNoIGlzIGRpc3BsYXllZCB0byB0aGUgdXNlciBkdXJpbmcgdGhlCitjb25maWd1cmF0aW9uIHByb2Nlc3MgYW5kIGlzIGFsc28gZWNob2VkIHRvIHRoZSBvdXRwdXQgZmlsZXMuIFRoZSBvbmx5Citwb3NzaWJsZSBvcHRpb25zIGFyZSBkZXBlbmRlbmNpZXMuCisKK21lbnU6CisKKwkibWVudSIgPHByb21wdD4KKwk8bWVudSBvcHRpb25zPgorCTxtZW51IGJsb2NrPgorCSJlbmRtZW51IgorCitUaGlzIGRlZmluZXMgYSBtZW51IGJsb2NrLCBzZWUgIk1lbnUgc3RydWN0dXJlIiBhYm92ZSBmb3IgbW9yZQoraW5mb3JtYXRpb24uIFRoZSBvbmx5IHBvc3NpYmxlIG9wdGlvbnMgYXJlIGRlcGVuZGVuY2llcyBhbmQgInZpc2libGUiCithdHRyaWJ1dGVzLgorCitpZjoKKworCSJpZiIgPGV4cHI+CisJPGlmIGJsb2NrPgorCSJlbmRpZiIKKworVGhpcyBkZWZpbmVzIGFuIGlmIGJsb2NrLiBUaGUgZGVwZW5kZW5jeSBleHByZXNzaW9uIDxleHByPiBpcyBhcHBlbmRlZAordG8gYWxsIGVuY2xvc2VkIG1lbnUgZW50cmllcy4KKworc291cmNlOgorCisJInNvdXJjZSIgPHByb21wdD4KKworVGhpcyByZWFkcyB0aGUgc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24gZmlsZS4gVGhpcyBmaWxlIGlzIGFsd2F5cyBwYXJzZWQuCisKK21haW5tZW51OgorCisJIm1haW5tZW51IiA8cHJvbXB0PgorCitUaGlzIHNldHMgdGhlIGNvbmZpZyBwcm9ncmFtJ3MgdGl0bGUgYmFyIGlmIHRoZSBjb25maWcgcHJvZ3JhbSBjaG9vc2VzCit0byB1c2UgaXQuIEl0IHNob3VsZCBiZSBwbGFjZWQgYXQgdGhlIHRvcCBvZiB0aGUgY29uZmlndXJhdGlvbiwgYmVmb3JlIGFueQorb3RoZXIgc3RhdGVtZW50LgorCisKK0tjb25maWcgaGludHMKKy0tLS0tLS0tLS0tLS0KK1RoaXMgaXMgYSBjb2xsZWN0aW9uIG9mIEtjb25maWcgdGlwcywgbW9zdCBvZiB3aGljaCBhcmVuJ3Qgb2J2aW91cyBhdAorZmlyc3QgZ2xhbmNlIGFuZCBtb3N0IG9mIHdoaWNoIGhhdmUgYmVjb21lIGlkaW9tcyBpbiBzZXZlcmFsIEtjb25maWcKK2ZpbGVzLgorCitBZGRpbmcgY29tbW9uIGZlYXR1cmVzIGFuZCBtYWtlIHRoZSB1c2FnZSBjb25maWd1cmFibGUKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorSXQgaXMgYSBjb21tb24gaWRpb20gdG8gaW1wbGVtZW50IGEgZmVhdHVyZS9mdW5jdGlvbmFsaXR5IHRoYXQgYXJlCityZWxldmFudCBmb3Igc29tZSBhcmNoaXRlY3R1cmVzIGJ1dCBub3QgYWxsLgorVGhlIHJlY29tbWVuZGVkIHdheSB0byBkbyBzbyBpcyB0byB1c2UgYSBjb25maWcgdmFyaWFibGUgbmFtZWQgSEFWRV8qCit0aGF0IGlzIGRlZmluZWQgaW4gYSBjb21tb24gS2NvbmZpZyBmaWxlIGFuZCBzZWxlY3RlZCBieSB0aGUgcmVsZXZhbnQKK2FyY2hpdGVjdHVyZXMuCitBbiBleGFtcGxlIGlzIHRoZSBnZW5lcmljIElPTUFQIGZ1bmN0aW9uYWxpdHkuCisKK1dlIHdvdWxkIGluIGxpYi9LY29uZmlnIHNlZToKKworIyBHZW5lcmljIElPTUFQIGlzIHVzZWQgdG8gLi4uCitjb25maWcgSEFWRV9HRU5FUklDX0lPTUFQCisKK2NvbmZpZyBHRU5FUklDX0lPTUFQCisJZGVwZW5kcyBvbiBIQVZFX0dFTkVSSUNfSU9NQVAgJiYgRk9PCisKK0FuZCBpbiBsaWIvTWFrZWZpbGUgd2Ugd291bGQgc2VlOgorb2JqLSQoQ09ORklHX0dFTkVSSUNfSU9NQVApICs9IGlvbWFwLm8KKworRm9yIGVhY2ggYXJjaGl0ZWN0dXJlIHVzaW5nIHRoZSBnZW5lcmljIElPTUFQIGZ1bmN0aW9uYWxpdHkgd2Ugd291bGQgc2VlOgorCitjb25maWcgWDg2CisJc2VsZWN0IC4uLgorCXNlbGVjdCBIQVZFX0dFTkVSSUNfSU9NQVAKKwlzZWxlY3QgLi4uCisKK05vdGU6IHdlIHVzZSB0aGUgZXhpc3RpbmcgY29uZmlnIG9wdGlvbiBhbmQgYXZvaWQgY3JlYXRpbmcgYSBuZXcKK2NvbmZpZyB2YXJpYWJsZSB0byBzZWxlY3QgSEFWRV9HRU5FUklDX0lPTUFQLgorCitOb3RlOiB0aGUgdXNlIG9mIHRoZSBpbnRlcm5hbCBjb25maWcgdmFyaWFibGUgSEFWRV9HRU5FUklDX0lPTUFQLCBpdCBpcworaW50cm9kdWNlZCB0byBvdmVyY29tZSB0aGUgbGltaXRhdGlvbiBvZiBzZWxlY3Qgd2hpY2ggd2lsbCBmb3JjZSBhCitjb25maWcgb3B0aW9uIHRvICd5JyBubyBtYXR0ZXIgdGhlIGRlcGVuZGVuY2llcy4KK1RoZSBkZXBlbmRlbmNpZXMgYXJlIG1vdmVkIHRvIHRoZSBzeW1ib2wgR0VORVJJQ19JT01BUCBhbmQgd2UgYXZvaWQgdGhlCitzaXR1YXRpb24gd2hlcmUgc2VsZWN0IGZvcmNlcyBhIHN5bWJvbCBlcXVhbHMgdG8gJ3knLgorCitCdWlsZCBhcyBtb2R1bGUgb25seQorfn5+fn5+fn5+fn5+fn5+fn5+fn4KK1RvIHJlc3RyaWN0IGEgY29tcG9uZW50IGJ1aWxkIHRvIG1vZHVsZS1vbmx5LCBxdWFsaWZ5IGl0cyBjb25maWcgc3ltYm9sCit3aXRoICJkZXBlbmRzIG9uIG0iLiAgRS5nLjoKKworY29uZmlnIEZPTworCWRlcGVuZHMgb24gQkFSICYmIG0KKworbGltaXRzIEZPTyB0byBtb2R1bGUgKD1tKSBvciBkaXNhYmxlZCAoPW4pLgorCitLY29uZmlnIHJlY3Vyc2l2ZSBkZXBlbmRlbmN5IGxpbWl0YXRpb25zCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0lmIHlvdSd2ZSBoaXQgdGhlIEtjb25maWcgZXJyb3I6ICJyZWN1cnNpdmUgZGVwZW5kZW5jeSBkZXRlY3RlZCIgeW91J3ZlIHJ1bgoraW50byBhIHJlY3Vyc2l2ZSBkZXBlbmRlbmN5IGlzc3VlIHdpdGggS2NvbmZpZywgYSByZWN1cnNpdmUgZGVwZW5kZW5jeSBjYW4gYmUKK3N1bW1hcml6ZWQgYXMgYSBjaXJjdWxhciBkZXBlbmRlbmN5LiBUaGUga2NvbmZpZyB0b29scyBuZWVkIHRvIGVuc3VyZSB0aGF0CitLY29uZmlnIGZpbGVzIGNvbXBseSB3aXRoIHNwZWNpZmllZCBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gSW4gb3JkZXIgdG8gZG8KK3RoYXQga2NvbmZpZyBtdXN0IGRldGVybWluZSB0aGUgdmFsdWVzIHRoYXQgYXJlIHBvc3NpYmxlIGZvciBhbGwgS2NvbmZpZworc3ltYm9scywgdGhpcyBpcyBjdXJyZW50bHkgbm90IHBvc3NpYmxlIGlmIHRoZXJlIGlzIGEgY2lyY3VsYXIgcmVsYXRpb24KK2JldHdlZW4gdHdvIG9yIG1vcmUgS2NvbmZpZyBzeW1ib2xzLiBGb3IgbW9yZSBkZXRhaWxzIHJlZmVyIHRvIHRoZSAiU2ltcGxlCitLY29uZmlnIHJlY3Vyc2l2ZSBpc3N1ZSIgc3Vic2VjdGlvbiBiZWxvdy4gS2NvbmZpZyBkb2VzIG5vdCBkbyByZWN1cnNpdmUKK2RlcGVuZGVuY3kgcmVzb2x1dGlvbjsgdGhpcyBoYXMgYSBmZXcgaW1wbGljYXRpb25zIGZvciBLY29uZmlnIGZpbGUgd3JpdGVycy4KK1dlJ2xsIGZpcnN0IGV4cGxhaW4gd2h5IHRoaXMgaXNzdWVzIGV4aXN0cyBhbmQgdGhlbiBwcm92aWRlIGFuIGV4YW1wbGUKK3RlY2huaWNhbCBsaW1pdGF0aW9uIHdoaWNoIHRoaXMgYnJpbmdzIHVwb24gS2NvbmZpZyBkZXZlbG9wZXJzLiBFYWdlcgorZGV2ZWxvcGVycyB3aXNoaW5nIHRvIHRyeSB0byBhZGRyZXNzIHRoaXMgbGltaXRhdGlvbiBzaG91bGQgcmVhZCB0aGUgbmV4dAorc3Vic2VjdGlvbnMuCisKK1NpbXBsZSBLY29uZmlnIHJlY3Vyc2l2ZSBpc3N1ZQorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1JlYWQ6IERvY3VtZW50YXRpb24va2J1aWxkL0tjb25maWcucmVjdXJzaW9uLWlzc3VlLTAxCisKK1Rlc3Qgd2l0aDoKKworbWFrZSBLQlVJTERfS0NPTkZJRz1Eb2N1bWVudGF0aW9uL2tidWlsZC9LY29uZmlnLnJlY3Vyc2lvbi1pc3N1ZS0wMSBhbGxub2NvbmZpZworCitDdW11bGF0aXZlIEtjb25maWcgcmVjdXJzaXZlIGlzc3VlCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1JlYWQ6IERvY3VtZW50YXRpb24va2J1aWxkL0tjb25maWcucmVjdXJzaW9uLWlzc3VlLTAyCisKK1Rlc3Qgd2l0aDoKKworbWFrZSBLQlVJTERfS0NPTkZJRz1Eb2N1bWVudGF0aW9uL2tidWlsZC9LY29uZmlnLnJlY3Vyc2lvbi1pc3N1ZS0wMiBhbGxub2NvbmZpZworCitQcmFjdGljYWwgc29sdXRpb25zIHRvIGtjb25maWcgcmVjdXJzaXZlIGlzc3VlCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0RldmVsb3BlcnMgd2hvIHJ1biBpbnRvIHRoZSByZWN1cnNpdmUgS2NvbmZpZyBpc3N1ZSBoYXZlIHRocmVlIG9wdGlvbnMKK2F0IHRoZWlyIGRpc3Bvc2FsLiBXZSBkb2N1bWVudCB0aGVtIGJlbG93IGFuZCBhbHNvIHByb3ZpZGUgYSBsaXN0IG9mCitoaXN0b3JpY2FsIGlzc3VlcyByZXNvbHZlZCB0aHJvdWdoIHRoZXNlIGRpZmZlcmVudCBzb2x1dGlvbnMuCisKKyAgYSkgUmVtb3ZlIGFueSBzdXBlcmZsdW91cyAic2VsZWN0IEZPTyIgb3IgImRlcGVuZHMgb24gRk9PIgorICBiKSBNYXRjaCBkZXBlbmRlbmN5IHNlbWFudGljczoKKwliMSkgU3dhcCBhbGwgInNlbGVjdCBGT08iIHRvICJkZXBlbmRzIG9uIEZPTyIgb3IsCisJYjIpIFN3YXAgYWxsICJkZXBlbmRzIG9uIEZPTyIgdG8gInNlbGVjdCBGT08iCisKK1RoZSByZXNvbHV0aW9uIHRvIGEpIGNhbiBiZSB0ZXN0ZWQgd2l0aCB0aGUgc2FtcGxlIEtjb25maWcgZmlsZQorRG9jdW1lbnRhdGlvbi9rYnVpbGQvS2NvbmZpZy5yZWN1cnNpb24taXNzdWUtMDEgdGhyb3VnaCB0aGUgcmVtb3ZhbAorb2YgdGhlICJzZWxlY3QgQ09SRSIgZnJvbSBDT1JFX0JFTExfQV9BRFZBTkNFRCBhcyB0aGF0IGlzIGltcGxpY2l0IGFscmVhZHkKK3NpbmNlIENPUkVfQkVMTF9BIGRlcGVuZHMgb24gQ09SRS4gQXQgdGltZXMgaXQgbWF5IG5vdCBiZSBwb3NzaWJsZSB0byByZW1vdmUKK3NvbWUgZGVwZW5kZW5jeSBjcml0ZXJpYSwgZm9yIHN1Y2ggY2FzZXMgeW91IGNhbiB3b3JrIHdpdGggc29sdXRpb24gYikuCisKK1RoZSB0d28gZGlmZmVyZW50IHJlc29sdXRpb25zIGZvciBiKSBjYW4gYmUgdGVzdGVkIGluIHRoZSBzYW1wbGUgS2NvbmZpZyBmaWxlCitEb2N1bWVudGF0aW9uL2tidWlsZC9LY29uZmlnLnJlY3Vyc2lvbi1pc3N1ZS0wMi4KKworQmVsb3cgaXMgYSBsaXN0IG9mIGV4YW1wbGVzIG9mIHByaW9yIGZpeGVzIGZvciB0aGVzZSB0eXBlcyBvZiByZWN1cnNpdmUgaXNzdWVzOworYWxsIGVycm9ycyBhcHBlYXIgdG8gaW52b2x2ZSBvbmUgb3IgbW9yZSBzZWxlY3QncyBhbmQgb25lIG9yIG1vcmUgImRlcGVuZHMgb24iLgorCitjb21taXQgICAgICAgICAgZml4Cis9PT09PT0gICAgICAgICAgPT09CiswNmI3MThjMDEyMDggICAgc2VsZWN0IEEgLT4gZGVwZW5kcyBvbiBBCitjMjJlYWNmZTgyZjkgICAgZGVwZW5kcyBvbiBBIC0+IGRlcGVuZHMgb24gQgorNmE5MWU4NTQ0NDJjICAgIHNlbGVjdCBBIC0+IGRlcGVuZHMgb24gQQorMTE4YzU2NWE4ZjJlICAgIHNlbGVjdCBBIC0+IHNlbGVjdCBCCitmMDA0ZTU1OTQ3MDUgICAgc2VsZWN0IEEgLT4gZGVwZW5kcyBvbiBBCitjNzg2MWYzN2I0YzYgICAgZGVwZW5kcyBvbiBBIC0+IChudWxsKQorODBjNjk5MTVlNWZiICAgIHNlbGVjdCBBIC0+IChudWxsKSAgICAgICAgICAgICAgKDEpCitjMjIxOGUyNmMwZDAgICAgc2VsZWN0IEEgLT4gZGVwZW5kcyBvbiBBICAgICAgICAoMSkKK2Q2YWU5OWQwNGUxYyAgICBzZWxlY3QgQSAtPiBkZXBlbmRzIG9uIEEKKzk1Y2ExOWNmOGNiZiAgICBzZWxlY3QgQSAtPiBkZXBlbmRzIG9uIEEKKzhmMDU3ZDdiY2E1NCAgICBkZXBlbmRzIG9uIEEgLT4gKG51bGwpCis4ZjA1N2Q3YmNhNTQgICAgZGVwZW5kcyBvbiBBIC0+IHNlbGVjdCBBCithMDcwMWYwNDg0NmUgICAgc2VsZWN0IEEgLT4gZGVwZW5kcyBvbiBBCiswYzhiOTJmN2YyNTkgICAgZGVwZW5kcyBvbiBBIC0+IChudWxsKQorZTRlOWUwNTQwOTI4ICAgIHNlbGVjdCBBIC0+IGRlcGVuZHMgb24gQSAgICAgICAgKDIpCis3NDUzZWE4ODZlODcgICAgZGVwZW5kcyBvbiBBID4gKG51bGwpICAgICAgICAgICAoMSkKKzdiMWZmZjdlNGZkZiAgICBzZWxlY3QgQSAtPiBkZXBlbmRzIG9uIEEKKzg2Yzc0N2QyYTRmMCAgICBzZWxlY3QgQSAtPiBkZXBlbmRzIG9uIEEKK2Q5ZjlhYjUxZTU1ZSAgICBzZWxlY3QgQSAtPiBkZXBlbmRzIG9uIEEKKzBjNTFhNGQ4YWJkNiAgICBkZXBlbmRzIG9uIEEgLT4gc2VsZWN0IEEgICAgICAgICgzKQorZTk4MDYyZWQ2ZGM0ICAgIHNlbGVjdCBBIC0+IGRlcGVuZHMgb24gQSAgICAgICAgKDMpCis5MWU1ZDI4NGE3ZjEgICAgc2VsZWN0IEEgLT4gKG51bGwpCisKKygxKSBQYXJ0aWFsIChvciBubykgcXVvdGUgb2YgZXJyb3IuCisoMikgVGhhdCBzZWVtcyB0byBiZSB0aGUgZ2lzdCBvZiB0aGF0IGZpeC4KKygzKSBTYW1lIGVycm9yLgorCitGdXR1cmUga2NvbmZpZyB3b3JrCit+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1dvcmsgb24ga2NvbmZpZyBpcyB3ZWxjb21lZCBvbiBib3RoIGFyZWFzIG9mIGNsYXJpZnlpbmcgc2VtYW50aWNzIGFuZCBvbgorZXZhbHVhdGluZyB0aGUgdXNlIG9mIGEgZnVsbCBTQVQgc29sdmVyIGZvciBpdC4gQSBmdWxsIFNBVCBzb2x2ZXIgY2FuIGJlCitkZXNpcmFibGUgdG8gZW5hYmxlIG1vcmUgY29tcGxleCBkZXBlbmRlbmN5IG1hcHBpbmdzIGFuZCAvIG9yIHF1ZXJpZXMsCitmb3IgaW5zdGFuY2Ugb24gcG9zc2libGUgdXNlIGNhc2UgZm9yIGEgU0FUIHNvbHZlciBjb3VsZCBiZSB0aGF0IG9mIGhhbmRsaW5nCit0aGUgY3VycmVudCBrbm93biByZWN1cnNpdmUgZGVwZW5kZW5jeSBpc3N1ZXMuIEl0IGlzIG5vdCBrbm93biBpZiB0aGlzIHdvdWxkCithZGRyZXNzIHN1Y2ggaXNzdWVzIGJ1dCBzdWNoIGV2YWx1YXRpb24gaXMgZGVzaXJhYmxlLiBJZiBzdXBwb3J0IGZvciBhIGZ1bGwgU0FUCitzb2x2ZXIgcHJvdmVzIHRvbyBjb21wbGV4IG9yIHRoYXQgaXQgY2Fubm90IGFkZHJlc3MgcmVjdXJzaXZlIGRlcGVuZGVuY3kgaXNzdWVzCitLY29uZmlnIHNob3VsZCBoYXZlIGF0IGxlYXN0IGNsZWFyIGFuZCB3ZWxsIGRlZmluZWQgc2VtYW50aWNzIHdoaWNoIGFsc28KK2FkZHJlc3NlcyBhbmQgZG9jdW1lbnRzIGxpbWl0YXRpb25zIG9yIHJlcXVpcmVtZW50cyBzdWNoIGFzIHRoZSBvbmVzIGRlYWxpbmcKK3dpdGggcmVjdXJzaXZlIGRlcGVuZGVuY2llcy4KKworRnVydGhlciB3b3JrIG9uIGJvdGggb2YgdGhlc2UgYXJlYXMgaXMgd2VsY29tZWQgb24gS2NvbmZpZy4gV2UgZWxhYm9yYXRlCitvbiBib3RoIG9mIHRoZXNlIGluIHRoZSBuZXh0IHR3byBzdWJzZWN0aW9ucy4KKworU2VtYW50aWNzIG9mIEtjb25maWcKK35+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1RoZSB1c2Ugb2YgS2NvbmZpZyBpcyBicm9hZCwgTGludXggaXMgbm93IG9ubHkgb25lIG9mIEtjb25maWcncyB1c2VyczoKK29uZSBzdHVkeSBoYXMgY29tcGxldGVkIGEgYnJvYWQgYW5hbHlzaXMgb2YgS2NvbmZpZyB1c2UgaW4gMTIgcHJvamVjdHMgWzBdLgorRGVzcGl0ZSBpdHMgd2lkZXNwcmVhZCB1c2UsIGFuZCBhbHRob3VnaCB0aGlzIGRvY3VtZW50IGRvZXMgYSByZWFzb25hYmxlIGpvYgoraW4gZG9jdW1lbnRpbmcgYmFzaWMgS2NvbmZpZyBzeW50YXggYSBtb3JlIHByZWNpc2UgZGVmaW5pdGlvbiBvZiBLY29uZmlnCitzZW1hbnRpY3MgaXMgd2VsY29tZWQuIE9uZSBwcm9qZWN0IGRlZHVjZWQgS2NvbmZpZyBzZW1hbnRpY3MgdGhyb3VnaAordGhlIHVzZSBvZiB0aGUgeGNvbmZpZyBjb25maWd1cmF0b3IgWzFdLiBXb3JrIHNob3VsZCBiZSBkb25lIHRvIGNvbmZpcm0gaWYKK3RoZSBkZWR1Y2VkIHNlbWFudGljcyBtYXRjaGVzIG91ciBpbnRlbmRlZCBLY29uZmlnIGRlc2lnbiBnb2Fscy4KKworSGF2aW5nIHdlbGwgZGVmaW5lZCBzZW1hbnRpY3MgY2FuIGJlIHVzZWZ1bCBmb3IgdG9vbHMgZm9yIHByYWN0aWNhbAorZXZhbHVhdGlvbiBvZiBkZXBlbmVuY2llcywgZm9yIGluc3RhbmNlIG9uZSBzdWNoIHVzZSBrbm93biBjYXNlIHdhcyB3b3JrIHRvCitleHByZXNzIGluIGJvb2xlYW4gYWJzdHJhY3Rpb24gb2YgdGhlIGluZmVycmVkIHNlbWFudGljcyBvZiBLY29uZmlnIHRvCit0cmFuc2xhdGUgS2NvbmZpZyBsb2dpYyBpbnRvIGJvb2xlYW4gZm9ybXVsYXMgYW5kIHJ1biBhIFNBVCBzb2x2ZXIgb24gdGhpcyB0bworZmluZCBkZWFkIGNvZGUgLyBmZWF0dXJlcyAoYWx3YXlzIGluYWN0aXZlKSwgMTE0IGRlYWQgZmVhdHVyZXMgd2VyZSBmb3VuZCBpbgorTGludXggdXNpbmcgdGhpcyBtZXRob2RvbG9neSBbMV0gKFNlY3Rpb24gODogVGhyZWF0cyB0byB2YWxpZGl0eSkuCisKK0NvbmZpcm1pbmcgdGhpcyBjb3VsZCBwcm92ZSB1c2VmdWwgYXMgS2NvbmZpZyBzdGFuZHMgYXMgb25lIG9mIHRoZSB0aGUgbGVhZGluZworaW5kdXN0cmlhbCB2YXJpYWJpbGl0eSBtb2RlbGluZyBsYW5ndWFnZXMgWzFdIFsyXS4gSXRzIHN0dWR5IHdvdWxkIGhlbHAKK2V2YWx1YXRlIHByYWN0aWNhbCB1c2VzIG9mIHN1Y2ggbGFuZ3VhZ2VzLCB0aGVpciB1c2Ugd2FzIG9ubHkgdGhlb3JldGljYWwKK2FuZCByZWFsIHdvcmxkIHJlcXVpcmVtZW50cyB3ZXJlIG5vdCB3ZWxsIHVuZGVyc3Rvb2QuIEFzIGl0IHN0YW5kcyB0aG91Z2gKK29ubHkgcmV2ZXJzZSBlbmdpbmVlcmluZyB0ZWNobmlxdWVzIGhhdmUgYmVlbiB1c2VkIHRvIGRlZHVjZSBzZW1hbnRpY3MgZnJvbQordmFyaWFiaWxpdHkgbW9kZWxpbmcgbGFuZ3VhZ2VzIHN1Y2ggYXMgS2NvbmZpZyBbM10uCisKK1swXSBodHRwOi8vd3d3LmVuZy51d2F0ZXJsb28uY2EvfnNoc2hlL2tjb25maWdfc2VtYW50aWNzLnBkZgorWzFdIGh0dHA6Ly9nc2QudXdhdGVybG9vLmNhL3NpdGVzL2RlZmF1bHQvZmlsZXMvdm0tMjAxMy1iZXJnZXIucGRmCitbMl0gaHR0cDovL2dzZC51d2F0ZXJsb28uY2Evc2l0ZXMvZGVmYXVsdC9maWxlcy9hc2UyNDEtYmVyZ2VyXzAucGRmCitbM10gaHR0cDovL2dzZC51d2F0ZXJsb28uY2Evc2l0ZXMvZGVmYXVsdC9maWxlcy9pY3NlMjAxMS5wZGYKKworRnVsbCBTQVQgc29sdmVyIGZvciBLY29uZmlnCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworQWx0aG91Z2ggU0FUIHNvbHZlcnMgWzBdIGhhdmVuJ3QgeWV0IGJlZW4gdXNlZCBieSBLY29uZmlnIGRpcmVjdGx5LCBhcyBub3RlZCBpbgordGhlIHByZXZpb3VzIHN1YnNlY3Rpb24sIHdvcmsgaGFzIGJlZW4gZG9uZSBob3dldmVyIHRvIGV4cHJlc3MgaW4gYm9vbGVhbgorYWJzdHJhY3Rpb24gdGhlIGluZmVycmVkIHNlbWFudGljcyBvZiBLY29uZmlnIHRvIHRyYW5zbGF0ZSBLY29uZmlnIGxvZ2ljIGludG8KK2Jvb2xlYW4gZm9ybXVsYXMgYW5kIHJ1biBhIFNBVCBzb2x2ZXIgb24gaXQgWzFdLiBBbm90aGVyIGtub3duIHJlbGF0ZWQgcHJvamVjdAoraXMgQ0FET1MgWzJdIChmb3JtZXIgVkFNT1MgWzNdKSBhbmQgdGhlIHRvb2xzLCBtYWlubHkgdW5kZXJ0YWtlciBbNF0sIHdoaWNoIGhhcworYmVlbiBpbnRyb2R1Y2VkIGZpcnN0IHdpdGggWzVdLiAgVGhlIGJhc2ljIGNvbmNlcHQgb2YgdW5kZXJ0YWtlciBpcyB0byBleHJhY3QKK3ZhcmlhYmlsaXR5IG1vZGVscyBmcm9tIEtjb25maWcsIGFuZCBwdXQgdGhlbSB0b2dldGhlciB3aXRoIGEgcHJvcG9zaXRpb25hbAorZm9ybXVsYSBleHRyYWN0ZWQgZnJvbSBDUFAgI2lmZGVmcyBhbmQgYnVpbGQtcnVsZXMgaW50byBhIFNBVCBzb2x2ZXIgaW4gb3JkZXIKK3RvIGZpbmQgZGVhZCBjb2RlLCBkZWFkIGZpbGVzLCBhbmQgZGVhZCBzeW1ib2xzLiBJZiB1c2luZyBhIFNBVCBzb2x2ZXIgaXMKK2Rlc2lyYWJsZSBvbiBLY29uZmlnIG9uZSBhcHByb2FjaCB3b3VsZCBiZSB0byBldmFsdWF0ZSByZXB1cnBvc2luZyBzdWNoIGVmZm9ydHMKK3NvbWVob3cgb24gS2NvbmZpZy4gVGhlcmUgaXMgZW5vdWdoIGludGVyZXN0IGZyb20gbWVudG9ycyBvZiBleGlzdGluZyBwcm9qZWN0cwordG8gbm90IG9ubHkgaGVscCBhZHZpc2UgaG93IHRvIGludGVncmF0ZSB0aGlzIHdvcmsgdXBzdHJlYW0gYnV0IGFsc28gaGVscAorbWFpbnRhaW4gaXQgbG9uZyB0ZXJtLiBJbnRlcmVzdGVkIGRldmVsb3BlcnMgc2hvdWxkIHZpc2l0OgorCitodHRwOi8va2VybmVsbmV3Ymllcy5vcmcvS2VybmVsUHJvamVjdHMva2NvbmZpZy1zYXQKKworWzBdIGh0dHA6Ly93d3cuY3MuY29ybmVsbC5lZHUvfnNhYmhhci9jaGFwdGVycy9TQVRTb2x2ZXJzLUtSLUhhbmRib29rLnBkZgorWzFdIGh0dHA6Ly9nc2QudXdhdGVybG9vLmNhL3NpdGVzL2RlZmF1bHQvZmlsZXMvdm0tMjAxMy1iZXJnZXIucGRmCitbMl0gaHR0cHM6Ly9jYWRvcy5jcy5mYXUuZGUKK1szXSBodHRwczovL3ZhbW9zLmNzLmZhdS5kZQorWzRdIGh0dHBzOi8vdW5kZXJ0YWtlci5jcy5mYXUuZGUKK1s1XSBodHRwczovL3d3dzQuY3MuZmF1LmRlL1B1YmxpY2F0aW9ucy8yMDExL3RhcnRsZXJfMTFfZXVyb3N5cy5wZGYKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24va2J1aWxkL2tjb25maWcudHh0IGIvRG9jdW1lbnRhdGlvbi9rYnVpbGQva2NvbmZpZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJjOTljMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24va2J1aWxkL2tjb25maWcudHh0CkBAIC0wLDAgKzEsMjM3IEBACitUaGlzIGZpbGUgY29udGFpbnMgc29tZSBhc3Npc3RhbmNlIGZvciB1c2luZyAibWFrZSAqY29uZmlnIi4KKworVXNlICJtYWtlIGhlbHAiIHRvIGxpc3QgYWxsIG9mIHRoZSBwb3NzaWJsZSBjb25maWd1cmF0aW9uIHRhcmdldHMuCisKK1RoZSB4Y29uZmlnICgncWNvbmYnKSBhbmQgbWVudWNvbmZpZyAoJ21jb25mJykgcHJvZ3JhbXMgYWxzbworaGF2ZSBlbWJlZGRlZCBoZWxwIHRleHQuICBCZSBzdXJlIHRvIGNoZWNrIGl0IGZvciBuYXZpZ2F0aW9uLAorc2VhcmNoLCBhbmQgb3RoZXIgZ2VuZXJhbCBoZWxwIHRleHQuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0dlbmVyYWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05ldyBrZXJuZWwgcmVsZWFzZXMgb2Z0ZW4gaW50cm9kdWNlIG5ldyBjb25maWcgc3ltYm9scy4gIE9mdGVuIG1vcmUKK2ltcG9ydGFudCwgbmV3IGtlcm5lbCByZWxlYXNlcyBtYXkgcmVuYW1lIGNvbmZpZyBzeW1ib2xzLiAgV2hlbgordGhpcyBoYXBwZW5zLCB1c2luZyBhIHByZXZpb3VzbHkgd29ya2luZyAuY29uZmlnIGZpbGUgYW5kIHJ1bm5pbmcKKyJtYWtlIG9sZGNvbmZpZyIgd29uJ3QgbmVjZXNzYXJpbHkgcHJvZHVjZSBhIHdvcmtpbmcgbmV3IGtlcm5lbAorZm9yIHlvdSwgc28geW91IG1heSBmaW5kIHRoYXQgeW91IG5lZWQgdG8gc2VlIHdoYXQgTkVXIGtlcm5lbAorc3ltYm9scyBoYXZlIGJlZW4gaW50cm9kdWNlZC4KKworVG8gc2VlIGEgbGlzdCBvZiBuZXcgY29uZmlnIHN5bWJvbHMgd2hlbiB1c2luZyAibWFrZSBvbGRjb25maWciLCB1c2UKKworCWNwIHVzZXIvc29tZS9vbGQuY29uZmlnIC5jb25maWcKKwltYWtlIGxpc3RuZXdjb25maWcKKworYW5kIHRoZSBjb25maWcgcHJvZ3JhbSB3aWxsIGxpc3QgYW55IG5ldyBzeW1ib2xzLCBvbmUgcGVyIGxpbmUuCisKKwlzY3JpcHRzL2RpZmZjb25maWcgLmNvbmZpZy5vbGQgLmNvbmZpZyB8IGxlc3MKKworX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworRW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciAnKmNvbmZpZycKKworS0NPTkZJR19DT05GSUcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGlzIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYSBkZWZhdWx0IGtlcm5lbCBjb25maWcKK2ZpbGUgbmFtZSB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBuYW1lIG9mICIuY29uZmlnIi4KKworS0NPTkZJR19PVkVSV1JJVEVDT05GSUcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJZiB5b3Ugc2V0IEtDT05GSUdfT1ZFUldSSVRFQ09ORklHIGluIHRoZSBlbnZpcm9ubWVudCwgS2NvbmZpZyB3aWxsIG5vdAorYnJlYWsgc3ltbGlua3Mgd2hlbiAuY29uZmlnIGlzIGEgc3ltbGluayB0byBzb21ld2hlcmUgZWxzZS4KKworQ09ORklHXworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0lmIHlvdSBzZXQgQ09ORklHXyBpbiB0aGUgZW52aXJvbm1lbnQsIEtjb25maWcgd2lsbCBwcmVmaXggYWxsIHN5bWJvbHMKK3dpdGggaXRzIHZhbHVlIHdoZW4gc2F2aW5nIHRoZSBjb25maWd1cmF0aW9uLCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBkZWZhdWx0LAorIkNPTkZJR18iLgorCitfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCitFbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yICd7YWxseWVzL2FsbG1vZC9hbGxuby9yYW5kfWNvbmZpZycKKworS0NPTkZJR19BTExDT05GSUcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisocGFydGlhbGx5IGJhc2VkIG9uIGxrbWwgZW1haWwgZnJvbS9ieSBSb2IgTGFuZGxleSwgcmU6IG1pbmljb25maWcpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIGFsbHllc2NvbmZpZy9hbGxtb2Rjb25maWcvYWxsbm9jb25maWcvcmFuZGNvbmZpZyB2YXJpYW50cyBjYW4gYWxzbwordXNlIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBLQ09ORklHX0FMTENPTkZJRyBhcyBhIGZsYWcgb3IgYSBmaWxlbmFtZQordGhhdCBjb250YWlucyBjb25maWcgc3ltYm9scyB0aGF0IHRoZSB1c2VyIHJlcXVpcmVzIHRvIGJlIHNldCB0byBhCitzcGVjaWZpYyB2YWx1ZS4gIElmIEtDT05GSUdfQUxMQ09ORklHIGlzIHVzZWQgd2l0aG91dCBhIGZpbGVuYW1lIHdoZXJlCitLQ09ORklHX0FMTENPTkZJRyA9PSAiIiBvciBLQ09ORklHX0FMTENPTkZJRyA9PSAiMSIsICJtYWtlICpjb25maWciCitjaGVja3MgZm9yIGEgZmlsZSBuYW1lZCAiYWxse3llcy9tb2Qvbm8vZGVmL3JhbmRvbX0uY29uZmlnIgorKGNvcnJlc3BvbmRpbmcgdG8gdGhlICpjb25maWcgY29tbWFuZCB0aGF0IHdhcyB1c2VkKSBmb3Igc3ltYm9sIHZhbHVlcwordGhhdCBhcmUgdG8gYmUgZm9yY2VkLiAgSWYgdGhpcyBmaWxlIGlzIG5vdCBmb3VuZCwgaXQgY2hlY2tzIGZvciBhCitmaWxlIG5hbWVkICJhbGwuY29uZmlnIiB0byBjb250YWluIGZvcmNlZCB2YWx1ZXMuCisKK1RoaXMgZW5hYmxlcyB5b3UgdG8gY3JlYXRlICJtaW5pYXR1cmUiIGNvbmZpZyAobWluaWNvbmZpZykgb3IgY3VzdG9tCitjb25maWcgZmlsZXMgY29udGFpbmluZyBqdXN0IHRoZSBjb25maWcgc3ltYm9scyB0aGF0IHlvdSBhcmUgaW50ZXJlc3RlZAoraW4uICBUaGVuIHRoZSBrZXJuZWwgY29uZmlnIHN5c3RlbSBnZW5lcmF0ZXMgdGhlIGZ1bGwgLmNvbmZpZyBmaWxlLAoraW5jbHVkaW5nIHN5bWJvbHMgb2YgeW91ciBtaW5pY29uZmlnIGZpbGUuCisKK1RoaXMgJ0tDT05GSUdfQUxMQ09ORklHJyBmaWxlIGlzIGEgY29uZmlnIGZpbGUgd2hpY2ggY29udGFpbnMKKyh1c3VhbGx5IGEgc3Vic2V0IG9mIGFsbCkgcHJlc2V0IGNvbmZpZyBzeW1ib2xzLiAgVGhlc2UgdmFyaWFibGUKK3NldHRpbmdzIGFyZSBzdGlsbCBzdWJqZWN0IHRvIG5vcm1hbCBkZXBlbmRlbmN5IGNoZWNrcy4KKworRXhhbXBsZXM6CisJS0NPTkZJR19BTExDT05GSUc9Y3VzdG9tLW5vdGVib29rLmNvbmZpZyBtYWtlIGFsbG5vY29uZmlnCitvcgorCUtDT05GSUdfQUxMQ09ORklHPW1pbmkuY29uZmlnIG1ha2UgYWxsbm9jb25maWcKK29yCisJbWFrZSBLQ09ORklHX0FMTENPTkZJRz1taW5pLmNvbmZpZyBhbGxub2NvbmZpZworCitUaGVzZSBleGFtcGxlcyB3aWxsIGRpc2FibGUgbW9zdCBvcHRpb25zIChhbGxub2NvbmZpZykgYnV0IGVuYWJsZSBvcgorZGlzYWJsZSB0aGUgb3B0aW9ucyB0aGF0IGFyZSBleHBsaWNpdGx5IGxpc3RlZCBpbiB0aGUgc3BlY2lmaWVkCittaW5pLWNvbmZpZyBmaWxlcy4KKworX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworRW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciAncmFuZGNvbmZpZycKKworS0NPTkZJR19TRUVECistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorWW91IGNhbiBzZXQgdGhpcyB0byB0aGUgaW50ZWdlciB2YWx1ZSB1c2VkIHRvIHNlZWQgdGhlIFJORywgaWYgeW91IHdhbnQKK3RvIHNvbWVob3cgZGVidWcgdGhlIGJlaGF2aW91ciBvZiB0aGUga2NvbmZpZyBwYXJzZXIvZnJvbnRlbmRzLgorSWYgbm90IHNldCwgdGhlIGN1cnJlbnQgdGltZSB3aWxsIGJlIHVzZWQuCisKK0tDT05GSUdfUFJPQkFCSUxJVFkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGlzIHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIHNrZXcgdGhlIHByb2JhYmlsaXRpZXMuIFRoaXMgdmFyaWFibGUgY2FuCitiZSB1bnNldCBvciBlbXB0eSwgb3Igc2V0IHRvIHRocmVlIGRpZmZlcmVudCBmb3JtYXRzOgorCUtDT05GSUdfUFJPQkFCSUxJVFkgICAgIHk6biBzcGxpdCAgICAgICAgICAgeTptOm4gc3BsaXQKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCXVuc2V0IG9yIGVtcHR5ICAgICAgICAgIDUwICA6IDUwICAgICAgICAgICAgMzMgIDogMzMgIDogMzQKKwlOICAgICAgICAgICAgICAgICAgICAgICAgTiAgOiAxMDAtTiAgICAgICAgIE4vMiA6IE4vMiA6IDEwMC1OCisgICAgWzFdIE46TSAgICAgICAgICAgICAgICAgICAgIE4rTSA6IDEwMC0oTitNKSAgICAgIE4gIDogIE0gIDogMTAwLShOK00pCisgICAgWzJdIE46TTpMICAgICAgICAgICAgICAgICAgICBOICA6IDEwMC1OICAgICAgICAgIE0gIDogIEwgIDogMTAwLShNK0wpCisKK3doZXJlIE4sIE0gYW5kIEwgYXJlIGludGVnZXJzIChpbiBiYXNlIDEwKSBpbiB0aGUgcmFuZ2UgWzAsMTAwXSwgYW5kIHNvCit0aGF0OgorICAgIFsxXSBOK00gaXMgaW4gdGhlIHJhbmdlIFswLDEwMF0KKyAgICBbMl0gTStMIGlzIGluIHRoZSByYW5nZSBbMCwxMDBdCisKK0V4YW1wbGVzOgorCUtDT05GSUdfUFJPQkFCSUxJVFk9MTAKKwkJMTAlIG9mIGJvb2xlYW5zIHdpbGwgYmUgc2V0IHRvICd5JywgOTAlIHRvICduJworCQk1JSBvZiB0cmlzdGF0ZXMgd2lsbCBiZSBzZXQgdG8gJ3knLCA1JSB0byAnbScsIDkwJSB0byAnbicKKwlLQ09ORklHX1BST0JBQklMSVRZPTE1OjI1CisJCTQwJSBvZiBib29sZWFucyB3aWxsIGJlIHNldCB0byAneScsIDYwJSB0byAnbicKKwkJMTUlIG9mIHRyaXN0YXRlcyB3aWxsIGJlIHNldCB0byAneScsIDI1JSB0byAnbScsIDYwJSB0byAnbicKKwlLQ09ORklHX1BST0JBQklMSVRZPTEwOjE1OjE1CisJCTEwJSBvZiBib29sZWFucyB3aWxsIGJlIHNldCB0byAneScsIDkwJSB0byAnbicKKwkJMTUlIG9mIHRyaXN0YXRlcyB3aWxsIGJlIHNldCB0byAneScsIDE1JSB0byAnbScsIDcwJSB0byAnbicKKworX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworRW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciAnc2lsZW50b2xkY29uZmlnJworCitLQ09ORklHX05PU0lMRU5UVVBEQVRFCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSWYgdGhpcyB2YXJpYWJsZSBoYXMgYSBub24tYmxhbmsgdmFsdWUsIGl0IHByZXZlbnRzIHNpbGVudCBrZXJuZWwKK2NvbmZpZyB1cGRhdGVzIChyZXF1aXJlcyBleHBsaWNpdCB1cGRhdGVzKS4KKworS0NPTkZJR19BVVRPQ09ORklHCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYW4gYmUgc2V0IHRvIHNwZWNpZnkgdGhlIHBhdGggJiBuYW1lIG9mIHRoZQorImF1dG8uY29uZiIgZmlsZS4gIEl0cyBkZWZhdWx0IHZhbHVlIGlzICJpbmNsdWRlL2NvbmZpZy9hdXRvLmNvbmYiLgorCitLQ09ORklHX1RSSVNUQVRFCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYW4gYmUgc2V0IHRvIHNwZWNpZnkgdGhlIHBhdGggJiBuYW1lIG9mIHRoZQorInRyaXN0YXRlLmNvbmYiIGZpbGUuICBJdHMgZGVmYXVsdCB2YWx1ZSBpcyAiaW5jbHVkZS9jb25maWcvdHJpc3RhdGUuY29uZiIuCisKK0tDT05GSUdfQVVUT0hFQURFUgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgZW52aXJvbm1lbnQgdmFyaWFibGUgY2FuIGJlIHNldCB0byBzcGVjaWZ5IHRoZSBwYXRoICYgbmFtZSBvZiB0aGUKKyJhdXRvY29uZi5oIiAoaGVhZGVyKSBmaWxlLgorSXRzIGRlZmF1bHQgdmFsdWUgaXMgImluY2x1ZGUvZ2VuZXJhdGVkL2F1dG9jb25mLmgiLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK21lbnVjb25maWcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NFQVJDSElORyBmb3IgQ09ORklHIHN5bWJvbHMKKworU2VhcmNoaW5nIGluIG1lbnVjb25maWc6CisKKwlUaGUgU2VhcmNoIGZ1bmN0aW9uIHNlYXJjaGVzIGZvciBrZXJuZWwgY29uZmlndXJhdGlvbiBzeW1ib2wKKwluYW1lcywgc28geW91IGhhdmUgdG8ga25vdyBzb21ldGhpbmcgY2xvc2UgdG8gd2hhdCB5b3UgYXJlCisJbG9va2luZyBmb3IuCisKKwlFeGFtcGxlOgorCQkvaG90cGx1ZworCQlUaGlzIGxpc3RzIGFsbCBjb25maWcgc3ltYm9scyB0aGF0IGNvbnRhaW4gImhvdHBsdWciLAorCQllLmcuLCBIT1RQTFVHX0NQVSwgTUVNT1JZX0hPVFBMVUcuCisKKwlGb3Igc2VhcmNoIGhlbHAsIGVudGVyIC8gZm9sbG93ZWQgVEFCLVRBQi1UQUIgKHRvIGhpZ2hsaWdodAorCTxIZWxwPikgYW5kIEVudGVyLiAgVGhpcyB3aWxsIHRlbGwgeW91IHRoYXQgeW91IGNhbiBhbHNvIHVzZQorCXJlZ3VsYXIgZXhwcmVzc2lvbnMgKHJlZ2V4ZXMpIGluIHRoZSBzZWFyY2ggc3RyaW5nLCBzbyBpZiB5b3UKKwlhcmUgbm90IGludGVyZXN0ZWQgaW4gTUVNT1JZX0hPVFBMVUcsIHlvdSBjb3VsZCB0cnkKKworCQkvXmhvdHBsdWcKKworCVdoZW4gc2VhcmNoaW5nLCBzeW1ib2xzIGFyZSBzb3J0ZWQgdGh1czoKKwkgIC0gZmlyc3QsIGV4YWN0IG1hdGNoZXMsIHNvcnRlZCBhbHBoYWJldGljYWxseSAoYW4gZXhhY3QgbWF0Y2gKKwkgICAgaXMgd2hlbiB0aGUgc2VhcmNoIG1hdGNoZXMgdGhlIGNvbXBsZXRlIHN5bWJvbCBuYW1lKTsKKwkgIC0gdGhlbiwgb3RoZXIgbWF0Y2hlcywgc29ydGVkIGFscGhhYmV0aWNhbGx5LgorCUZvciBleGFtcGxlOiBeQVRILksgbWF0Y2hlczoKKwkgICAgQVRINUsgQVRIOUsgQVRINUtfQUhCIEFUSDVLX0RFQlVHIFsuLi5dIEFUSDZLTCBBVEg2S0xfREVCVUcKKwkgICAgWy4uLl0gQVRIOUtfQUhCIEFUSDlLX0JUQ09FWF9TVVBQT1JUIEFUSDlLX0NPTU1PTiBbLi4uXQorCW9mIHdoaWNoIG9ubHkgQVRINUsgYW5kIEFUSDlLIG1hdGNoIGV4YWN0bHkgYW5kIHNvIGFyZSBzb3J0ZWQKKwlmaXJzdCAoYW5kIGluIGFscGhhYmV0aWNhbCBvcmRlciksIHRoZW4gY29tZSBhbGwgb3RoZXIgc3ltYm9scywKKwlzb3J0ZWQgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLgorCitfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCitVc2VyIGludGVyZmFjZSBvcHRpb25zIGZvciAnbWVudWNvbmZpZycKKworTUVOVUNPTkZJR19DT0xPUgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0l0IGlzIHBvc3NpYmxlIHRvIHNlbGVjdCBkaWZmZXJlbnQgY29sb3IgdGhlbWVzIHVzaW5nIHRoZSB2YXJpYWJsZQorTUVOVUNPTkZJR19DT0xPUi4gIFRvIHNlbGVjdCBhIHRoZW1lIHVzZToKKworCW1ha2UgTUVOVUNPTkZJR19DT0xPUj08dGhlbWU+IG1lbnVjb25maWcKKworQXZhaWxhYmxlIHRoZW1lcyBhcmU6CisgIG1vbm8gICAgICAgPT4gc2VsZWN0cyBjb2xvcnMgc3VpdGFibGUgZm9yIG1vbm9jaHJvbWUgZGlzcGxheXMKKyAgYmxhY2tiZyAgICA9PiBzZWxlY3RzIGEgY29sb3Igc2NoZW1lIHdpdGggYmxhY2sgYmFja2dyb3VuZAorICBjbGFzc2ljICAgID0+IHRoZW1lIHdpdGggYmx1ZSBiYWNrZ3JvdW5kLiBUaGUgY2xhc3NpYyBsb29rCisgIGJsdWV0aXRsZSAgPT4gYSBMQ0QgZnJpZW5kbHkgdmVyc2lvbiBvZiBjbGFzc2ljLiAoZGVmYXVsdCkKKworTUVOVUNPTkZJR19NT0RFCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhpcyBtb2RlIHNob3dzIGFsbCBzdWItbWVudXMgaW4gb25lIGxhcmdlIHRyZWUuCisKK0V4YW1wbGU6CisJbWFrZSBNRU5VQ09ORklHX01PREU9c2luZ2xlX21lbnUgbWVudWNvbmZpZworCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3hjb25maWcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NlYXJjaGluZyBpbiB4Y29uZmlnOgorCisJVGhlIFNlYXJjaCBmdW5jdGlvbiBzZWFyY2hlcyBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24gc3ltYm9sCisJbmFtZXMsIHNvIHlvdSBoYXZlIHRvIGtub3cgc29tZXRoaW5nIGNsb3NlIHRvIHdoYXQgeW91IGFyZQorCWxvb2tpbmcgZm9yLgorCisJRXhhbXBsZToKKwkJQ3RybC1GIGhvdHBsdWcKKwlvcgorCQlNZW51OiBGaWxlLCBTZWFyY2gsIGhvdHBsdWcKKworCWxpc3RzIGFsbCBjb25maWcgc3ltYm9sIGVudHJpZXMgdGhhdCBjb250YWluICJob3RwbHVnIiBpbgorCXRoZSBzeW1ib2wgbmFtZS4gIEluIHRoaXMgU2VhcmNoIGRpYWxvZywgeW91IG1heSBjaGFuZ2UgdGhlCisJY29uZmlnIHNldHRpbmcgZm9yIGFueSBvZiB0aGUgZW50cmllcyB0aGF0IGFyZSBub3QgZ3JheWVkIG91dC4KKwlZb3UgY2FuIGFsc28gZW50ZXIgYSBkaWZmZXJlbnQgc2VhcmNoIHN0cmluZyB3aXRob3V0IGhhdmluZworCXRvIHJldHVybiB0byB0aGUgbWFpbiBtZW51LgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2djb25maWcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NlYXJjaGluZyBpbiBnY29uZmlnOgorCisJTm9uZSAoZ2NvbmZpZyBpc24ndCBtYWludGFpbmVkIGFzIHdlbGwgYXMgeGNvbmZpZyBvciBtZW51Y29uZmlnKTsKKwlob3dldmVyLCBnY29uZmlnIGRvZXMgaGF2ZSBhIGZldyBtb3JlIHZpZXdpbmcgY2hvaWNlcyB0aGFuCisJeGNvbmZpZyBkb2VzLgorCisjIyMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24va2J1aWxkL21ha2VmaWxlcy50eHQgYi9Eb2N1bWVudGF0aW9uL2tidWlsZC9tYWtlZmlsZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzZjg4OGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2tidWlsZC9tYWtlZmlsZXMudHh0CkBAIC0wLDAgKzEsMTQxOCBAQAorTGludXggS2VybmVsIE1ha2VmaWxlcworCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgTGludXgga2VybmVsIE1ha2VmaWxlcy4KKworPT09IFRhYmxlIG9mIENvbnRlbnRzCisKKwk9PT0gMSBPdmVydmlldworCT09PSAyIFdobyBkb2VzIHdoYXQKKwk9PT0gMyBUaGUga2J1aWxkIGZpbGVzCisJICAgLS0tIDMuMSBHb2FsIGRlZmluaXRpb25zCisJICAgLS0tIDMuMiBCdWlsdC1pbiBvYmplY3QgZ29hbHMgLSBvYmoteQorCSAgIC0tLSAzLjMgTG9hZGFibGUgbW9kdWxlIGdvYWxzIC0gb2JqLW0KKwkgICAtLS0gMy40IE9iamVjdHMgd2hpY2ggZXhwb3J0IHN5bWJvbHMKKwkgICAtLS0gMy41IExpYnJhcnkgZmlsZSBnb2FscyAtIGxpYi15CisJICAgLS0tIDMuNiBEZXNjZW5kaW5nIGRvd24gaW4gZGlyZWN0b3JpZXMKKwkgICAtLS0gMy43IENvbXBpbGF0aW9uIGZsYWdzCisJICAgLS0tIDMuOCBDb21tYW5kIGxpbmUgZGVwZW5kZW5jeQorCSAgIC0tLSAzLjkgRGVwZW5kZW5jeSB0cmFja2luZworCSAgIC0tLSAzLjEwIFNwZWNpYWwgUnVsZXMKKwkgICAtLS0gMy4xMSAkKENDKSBzdXBwb3J0IGZ1bmN0aW9ucworCSAgIC0tLSAzLjEyICQoTEQpIHN1cHBvcnQgZnVuY3Rpb25zCisKKwk9PT0gNCBIb3N0IFByb2dyYW0gc3VwcG9ydAorCSAgIC0tLSA0LjEgU2ltcGxlIEhvc3QgUHJvZ3JhbQorCSAgIC0tLSA0LjIgQ29tcG9zaXRlIEhvc3QgUHJvZ3JhbXMKKwkgICAtLS0gNC4zIFVzaW5nIEMrKyBmb3IgaG9zdCBwcm9ncmFtcworCSAgIC0tLSA0LjQgQ29udHJvbGxpbmcgY29tcGlsZXIgb3B0aW9ucyBmb3IgaG9zdCBwcm9ncmFtcworCSAgIC0tLSA0LjUgV2hlbiBob3N0IHByb2dyYW1zIGFyZSBhY3R1YWxseSBidWlsdAorCSAgIC0tLSA0LjYgVXNpbmcgaG9zdHByb2dzLSQoQ09ORklHX0ZPTykKKworCT09PSA1IEtidWlsZCBjbGVhbiBpbmZyYXN0cnVjdHVyZQorCisJPT09IDYgQXJjaGl0ZWN0dXJlIE1ha2VmaWxlcworCSAgIC0tLSA2LjEgU2V0IHZhcmlhYmxlcyB0byB0d2VhayB0aGUgYnVpbGQgdG8gdGhlIGFyY2hpdGVjdHVyZQorCSAgIC0tLSA2LjIgQWRkIHByZXJlcXVpc2l0ZXMgdG8gYXJjaGhlYWRlcnM6CisJICAgLS0tIDYuMyBBZGQgcHJlcmVxdWlzaXRlcyB0byBhcmNocHJlcGFyZToKKwkgICAtLS0gNi40IExpc3QgZGlyZWN0b3JpZXMgdG8gdmlzaXQgd2hlbiBkZXNjZW5kaW5nCisJICAgLS0tIDYuNSBBcmNoaXRlY3R1cmUtc3BlY2lmaWMgYm9vdCBpbWFnZXMKKwkgICAtLS0gNi42IEJ1aWxkaW5nIG5vbi1rYnVpbGQgdGFyZ2V0cworCSAgIC0tLSA2LjcgQ29tbWFuZHMgdXNlZnVsIGZvciBidWlsZGluZyBhIGJvb3QgaW1hZ2UKKwkgICAtLS0gNi44IEN1c3RvbSBrYnVpbGQgY29tbWFuZHMKKwkgICAtLS0gNi45IFByZXByb2Nlc3NpbmcgbGlua2VyIHNjcmlwdHMKKwkgICAtLS0gNi4xMCBHZW5lcmljIGhlYWRlciBmaWxlcworCisJPT09IDcgS2J1aWxkIHN5bnRheCBmb3IgZXhwb3J0ZWQgaGVhZGVycworCQktLS0gNy4xIGhlYWRlci15CisJCS0tLSA3LjIgZ2VuaGRyLXkKKwkJLS0tIDcuMyBkZXN0aW5hdGlvbi15CisJCS0tLSA3LjQgZ2VuZXJpYy15CisKKwk9PT0gOCBLYnVpbGQgVmFyaWFibGVzCisJPT09IDkgTWFrZWZpbGUgbGFuZ3VhZ2UKKwk9PT0gMTAgQ3JlZGl0cworCT09PSAxMSBUT0RPCisKKz09PSAxIE92ZXJ2aWV3CisKK1RoZSBNYWtlZmlsZXMgaGF2ZSBmaXZlIHBhcnRzOgorCisJTWFrZWZpbGUJCXRoZSB0b3AgTWFrZWZpbGUuCisJLmNvbmZpZwkJCXRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlLgorCWFyY2gvJChBUkNIKS9NYWtlZmlsZQl0aGUgYXJjaCBNYWtlZmlsZS4KKwlzY3JpcHRzL01ha2VmaWxlLioJY29tbW9uIHJ1bGVzIGV0Yy4gZm9yIGFsbCBrYnVpbGQgTWFrZWZpbGVzLgorCWtidWlsZCBNYWtlZmlsZXMJdGhlcmUgYXJlIGFib3V0IDUwMCBvZiB0aGVzZS4KKworVGhlIHRvcCBNYWtlZmlsZSByZWFkcyB0aGUgLmNvbmZpZyBmaWxlLCB3aGljaCBjb21lcyBmcm9tIHRoZSBrZXJuZWwKK2NvbmZpZ3VyYXRpb24gcHJvY2Vzcy4KKworVGhlIHRvcCBNYWtlZmlsZSBpcyByZXNwb25zaWJsZSBmb3IgYnVpbGRpbmcgdHdvIG1ham9yIHByb2R1Y3RzOiB2bWxpbnV4CisodGhlIHJlc2lkZW50IGtlcm5lbCBpbWFnZSkgYW5kIG1vZHVsZXMgKGFueSBtb2R1bGUgZmlsZXMpLgorSXQgYnVpbGRzIHRoZXNlIGdvYWxzIGJ5IHJlY3Vyc2l2ZWx5IGRlc2NlbmRpbmcgaW50byB0aGUgc3ViZGlyZWN0b3JpZXMgb2YKK3RoZSBrZXJuZWwgc291cmNlIHRyZWUuCitUaGUgbGlzdCBvZiBzdWJkaXJlY3RvcmllcyB3aGljaCBhcmUgdmlzaXRlZCBkZXBlbmRzIHVwb24gdGhlIGtlcm5lbAorY29uZmlndXJhdGlvbi4gVGhlIHRvcCBNYWtlZmlsZSB0ZXh0dWFsbHkgaW5jbHVkZXMgYW4gYXJjaCBNYWtlZmlsZQord2l0aCB0aGUgbmFtZSBhcmNoLyQoQVJDSCkvTWFrZWZpbGUuIFRoZSBhcmNoIE1ha2VmaWxlIHN1cHBsaWVzCithcmNoaXRlY3R1cmUtc3BlY2lmaWMgaW5mb3JtYXRpb24gdG8gdGhlIHRvcCBNYWtlZmlsZS4KKworRWFjaCBzdWJkaXJlY3RvcnkgaGFzIGEga2J1aWxkIE1ha2VmaWxlIHdoaWNoIGNhcnJpZXMgb3V0IHRoZSBjb21tYW5kcworcGFzc2VkIGRvd24gZnJvbSBhYm92ZS4gVGhlIGtidWlsZCBNYWtlZmlsZSB1c2VzIGluZm9ybWF0aW9uIGZyb20gdGhlCisuY29uZmlnIGZpbGUgdG8gY29uc3RydWN0IHZhcmlvdXMgZmlsZSBsaXN0cyB1c2VkIGJ5IGtidWlsZCB0byBidWlsZAorYW55IGJ1aWx0LWluIG9yIG1vZHVsYXIgdGFyZ2V0cy4KKworc2NyaXB0cy9NYWtlZmlsZS4qIGNvbnRhaW5zIGFsbCB0aGUgZGVmaW5pdGlvbnMvcnVsZXMgZXRjLiB0aGF0CithcmUgdXNlZCB0byBidWlsZCB0aGUga2VybmVsIGJhc2VkIG9uIHRoZSBrYnVpbGQgbWFrZWZpbGVzLgorCisKKz09PSAyIFdobyBkb2VzIHdoYXQKKworUGVvcGxlIGhhdmUgZm91ciBkaWZmZXJlbnQgcmVsYXRpb25zaGlwcyB3aXRoIHRoZSBrZXJuZWwgTWFrZWZpbGVzLgorCisqVXNlcnMqIGFyZSBwZW9wbGUgd2hvIGJ1aWxkIGtlcm5lbHMuICBUaGVzZSBwZW9wbGUgdHlwZSBjb21tYW5kcyBzdWNoIGFzCisibWFrZSBtZW51Y29uZmlnIiBvciAibWFrZSIuICBUaGV5IHVzdWFsbHkgZG8gbm90IHJlYWQgb3IgZWRpdAorYW55IGtlcm5lbCBNYWtlZmlsZXMgKG9yIGFueSBvdGhlciBzb3VyY2UgZmlsZXMpLgorCisqTm9ybWFsIGRldmVsb3BlcnMqIGFyZSBwZW9wbGUgd2hvIHdvcmsgb24gZmVhdHVyZXMgc3VjaCBhcyBkZXZpY2UKK2RyaXZlcnMsIGZpbGUgc3lzdGVtcywgYW5kIG5ldHdvcmsgcHJvdG9jb2xzLiAgVGhlc2UgcGVvcGxlIG5lZWQgdG8KK21haW50YWluIHRoZSBrYnVpbGQgTWFrZWZpbGVzIGZvciB0aGUgc3Vic3lzdGVtIHRoZXkgYXJlCit3b3JraW5nIG9uLiAgSW4gb3JkZXIgdG8gZG8gdGhpcyBlZmZlY3RpdmVseSwgdGhleSBuZWVkIHNvbWUgb3ZlcmFsbAora25vd2xlZGdlIGFib3V0IHRoZSBrZXJuZWwgTWFrZWZpbGVzLCBwbHVzIGRldGFpbGVkIGtub3dsZWRnZSBhYm91dCB0aGUKK3B1YmxpYyBpbnRlcmZhY2UgZm9yIGtidWlsZC4KKworKkFyY2ggZGV2ZWxvcGVycyogYXJlIHBlb3BsZSB3aG8gd29yayBvbiBhbiBlbnRpcmUgYXJjaGl0ZWN0dXJlLCBzdWNoCithcyBzcGFyYyBvciBpYTY0LiAgQXJjaCBkZXZlbG9wZXJzIG5lZWQgdG8ga25vdyBhYm91dCB0aGUgYXJjaCBNYWtlZmlsZQorYXMgd2VsbCBhcyBrYnVpbGQgTWFrZWZpbGVzLgorCisqS2J1aWxkIGRldmVsb3BlcnMqIGFyZSBwZW9wbGUgd2hvIHdvcmsgb24gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0gaXRzZWxmLgorVGhlc2UgcGVvcGxlIG5lZWQgdG8ga25vdyBhYm91dCBhbGwgYXNwZWN0cyBvZiB0aGUga2VybmVsIE1ha2VmaWxlcy4KKworVGhpcyBkb2N1bWVudCBpcyBhaW1lZCB0b3dhcmRzIG5vcm1hbCBkZXZlbG9wZXJzIGFuZCBhcmNoIGRldmVsb3BlcnMuCisKKworPT09IDMgVGhlIGtidWlsZCBmaWxlcworCitNb3N0IE1ha2VmaWxlcyB3aXRoaW4gdGhlIGtlcm5lbCBhcmUga2J1aWxkIE1ha2VmaWxlcyB0aGF0IHVzZSB0aGUKK2tidWlsZCBpbmZyYXN0cnVjdHVyZS4gVGhpcyBjaGFwdGVyIGludHJvZHVjZXMgdGhlIHN5bnRheCB1c2VkIGluIHRoZQora2J1aWxkIG1ha2VmaWxlcy4KK1RoZSBwcmVmZXJyZWQgbmFtZSBmb3IgdGhlIGtidWlsZCBmaWxlcyBhcmUgJ01ha2VmaWxlJyBidXQgJ0tidWlsZCcgY2FuCitiZSB1c2VkIGFuZCBpZiBib3RoIGEgJ01ha2VmaWxlJyBhbmQgYSAnS2J1aWxkJyBmaWxlIGV4aXN0cywgdGhlbiB0aGUgJ0tidWlsZCcKK2ZpbGUgd2lsbCBiZSB1c2VkLgorCitTZWN0aW9uIDMuMSAiR29hbCBkZWZpbml0aW9ucyIgaXMgYSBxdWljayBpbnRybywgZnVydGhlciBjaGFwdGVycyBwcm92aWRlCittb3JlIGRldGFpbHMsIHdpdGggcmVhbCBleGFtcGxlcy4KKworLS0tIDMuMSBHb2FsIGRlZmluaXRpb25zCisKKwlHb2FsIGRlZmluaXRpb25zIGFyZSB0aGUgbWFpbiBwYXJ0IChoZWFydCkgb2YgdGhlIGtidWlsZCBNYWtlZmlsZS4KKwlUaGVzZSBsaW5lcyBkZWZpbmUgdGhlIGZpbGVzIHRvIGJlIGJ1aWx0LCBhbnkgc3BlY2lhbCBjb21waWxhdGlvbgorCW9wdGlvbnMsIGFuZCBhbnkgc3ViZGlyZWN0b3JpZXMgdG8gYmUgZW50ZXJlZCByZWN1cnNpdmVseS4KKworCVRoZSBtb3N0IHNpbXBsZSBrYnVpbGQgbWFrZWZpbGUgY29udGFpbnMgb25lIGxpbmU6CisKKwlFeGFtcGxlOgorCQlvYmoteSArPSBmb28ubworCisJVGhpcyB0ZWxscyBrYnVpbGQgdGhhdCB0aGVyZSBpcyBvbmUgb2JqZWN0IGluIHRoYXQgZGlyZWN0b3J5LCBuYW1lZAorCWZvby5vLiBmb28ubyB3aWxsIGJlIGJ1aWx0IGZyb20gZm9vLmMgb3IgZm9vLlMuCisKKwlJZiBmb28ubyBzaGFsbCBiZSBidWlsdCBhcyBhIG1vZHVsZSwgdGhlIHZhcmlhYmxlIG9iai1tIGlzIHVzZWQuCisJVGhlcmVmb3JlIHRoZSBmb2xsb3dpbmcgcGF0dGVybiBpcyBvZnRlbiB1c2VkOgorCisJRXhhbXBsZToKKwkJb2JqLSQoQ09ORklHX0ZPTykgKz0gZm9vLm8KKworCSQoQ09ORklHX0ZPTykgZXZhbHVhdGVzIHRvIGVpdGhlciB5IChmb3IgYnVpbHQtaW4pIG9yIG0gKGZvciBtb2R1bGUpLgorCUlmIENPTkZJR19GT08gaXMgbmVpdGhlciB5IG5vciBtLCB0aGVuIHRoZSBmaWxlIHdpbGwgbm90IGJlIGNvbXBpbGVkCisJbm9yIGxpbmtlZC4KKworLS0tIDMuMiBCdWlsdC1pbiBvYmplY3QgZ29hbHMgLSBvYmoteQorCisJVGhlIGtidWlsZCBNYWtlZmlsZSBzcGVjaWZpZXMgb2JqZWN0IGZpbGVzIGZvciB2bWxpbnV4CisJaW4gdGhlICQob2JqLXkpIGxpc3RzLiAgVGhlc2UgbGlzdHMgZGVwZW5kIG9uIHRoZSBrZXJuZWwKKwljb25maWd1cmF0aW9uLgorCisJS2J1aWxkIGNvbXBpbGVzIGFsbCB0aGUgJChvYmoteSkgZmlsZXMuICBJdCB0aGVuIGNhbGxzCisJIiQoTEQpIC1yIiB0byBtZXJnZSB0aGVzZSBmaWxlcyBpbnRvIG9uZSBidWlsdC1pbi5vIGZpbGUuCisJYnVpbHQtaW4ubyBpcyBsYXRlciBsaW5rZWQgaW50byB2bWxpbnV4IGJ5IHRoZSBwYXJlbnQgTWFrZWZpbGUuCisKKwlUaGUgb3JkZXIgb2YgZmlsZXMgaW4gJChvYmoteSkgaXMgc2lnbmlmaWNhbnQuICBEdXBsaWNhdGVzIGluCisJdGhlIGxpc3RzIGFyZSBhbGxvd2VkOiB0aGUgZmlyc3QgaW5zdGFuY2Ugd2lsbCBiZSBsaW5rZWQgaW50bworCWJ1aWx0LWluLm8gYW5kIHN1Y2NlZWRpbmcgaW5zdGFuY2VzIHdpbGwgYmUgaWdub3JlZC4KKworCUxpbmsgb3JkZXIgaXMgc2lnbmlmaWNhbnQsIGJlY2F1c2UgY2VydGFpbiBmdW5jdGlvbnMKKwkobW9kdWxlX2luaXQoKSAvIF9faW5pdGNhbGwpIHdpbGwgYmUgY2FsbGVkIGR1cmluZyBib290IGluIHRoZQorCW9yZGVyIHRoZXkgYXBwZWFyLiBTbyBrZWVwIGluIG1pbmQgdGhhdCBjaGFuZ2luZyB0aGUgbGluaworCW9yZGVyIG1heSBlLmcuIGNoYW5nZSB0aGUgb3JkZXIgaW4gd2hpY2ggeW91ciBTQ1NJCisJY29udHJvbGxlcnMgYXJlIGRldGVjdGVkLCBhbmQgdGh1cyB5b3VyIGRpc2tzIGFyZSByZW51bWJlcmVkLgorCisJRXhhbXBsZToKKwkJI2RyaXZlcnMvaXNkbi9pNGwvTWFrZWZpbGUKKwkJIyBNYWtlZmlsZSBmb3IgdGhlIGtlcm5lbCBJU0ROIHN1YnN5c3RlbSBhbmQgZGV2aWNlIGRyaXZlcnMuCisJCSMgRWFjaCBjb25maWd1cmF0aW9uIG9wdGlvbiBlbmFibGVzIGEgbGlzdCBvZiBmaWxlcy4KKwkJb2JqLSQoQ09ORklHX0lTRE5fSTRMKSAgICAgICAgICs9IGlzZG4ubworCQlvYmotJChDT05GSUdfSVNETl9QUFBfQlNEQ09NUCkgKz0gaXNkbl9ic2Rjb21wLm8KKworLS0tIDMuMyBMb2FkYWJsZSBtb2R1bGUgZ29hbHMgLSBvYmotbQorCisJJChvYmotbSkgc3BlY2lmaWVzIG9iamVjdCBmaWxlcyB3aGljaCBhcmUgYnVpbHQgYXMgbG9hZGFibGUKKwlrZXJuZWwgbW9kdWxlcy4KKworCUEgbW9kdWxlIG1heSBiZSBidWlsdCBmcm9tIG9uZSBzb3VyY2UgZmlsZSBvciBzZXZlcmFsIHNvdXJjZQorCWZpbGVzLiBJbiB0aGUgY2FzZSBvZiBvbmUgc291cmNlIGZpbGUsIHRoZSBrYnVpbGQgbWFrZWZpbGUKKwlzaW1wbHkgYWRkcyB0aGUgZmlsZSB0byAkKG9iai1tKS4KKworCUV4YW1wbGU6CisJCSNkcml2ZXJzL2lzZG4vaTRsL01ha2VmaWxlCisJCW9iai0kKENPTkZJR19JU0ROX1BQUF9CU0RDT01QKSArPSBpc2RuX2JzZGNvbXAubworCisJTm90ZTogSW4gdGhpcyBleGFtcGxlICQoQ09ORklHX0lTRE5fUFBQX0JTRENPTVApIGV2YWx1YXRlcyB0byAnbScKKworCUlmIGEga2VybmVsIG1vZHVsZSBpcyBidWlsdCBmcm9tIHNldmVyYWwgc291cmNlIGZpbGVzLCB5b3Ugc3BlY2lmeQorCXRoYXQgeW91IHdhbnQgdG8gYnVpbGQgYSBtb2R1bGUgaW4gdGhlIHNhbWUgd2F5IGFzIGFib3ZlOyBob3dldmVyLAorCWtidWlsZCBuZWVkcyB0byBrbm93IHdoaWNoIG9iamVjdCBmaWxlcyB5b3Ugd2FudCB0byBidWlsZCB5b3VyCisJbW9kdWxlIGZyb20sIHNvIHlvdSBoYXZlIHRvIHRlbGwgaXQgYnkgc2V0dGluZyBhICQoPG1vZHVsZV9uYW1lPi15KQorCXZhcmlhYmxlLgorCisJRXhhbXBsZToKKwkJI2RyaXZlcnMvaXNkbi9pNGwvTWFrZWZpbGUKKwkJb2JqLSQoQ09ORklHX0lTRE5fSTRMKSArPSBpc2RuLm8KKwkJaXNkbi15IDo9IGlzZG5fbmV0X2xpYi5vIGlzZG5fdjExMC5vIGlzZG5fY29tbW9uLm8KKworCUluIHRoaXMgZXhhbXBsZSwgdGhlIG1vZHVsZSBuYW1lIHdpbGwgYmUgaXNkbi5vLiBLYnVpbGQgd2lsbAorCWNvbXBpbGUgdGhlIG9iamVjdHMgbGlzdGVkIGluICQoaXNkbi15KSBhbmQgdGhlbiBydW4KKwkiJChMRCkgLXIiIG9uIHRoZSBsaXN0IG9mIHRoZXNlIGZpbGVzIHRvIGdlbmVyYXRlIGlzZG4uby4KKworCUR1ZSB0byBrYnVpbGQgcmVjb2duaXppbmcgJCg8bW9kdWxlX25hbWU+LXkpIGZvciBjb21wb3NpdGUgb2JqZWN0cywKKwl5b3UgY2FuIHVzZSB0aGUgdmFsdWUgb2YgYSBDT05GSUdfIHN5bWJvbCB0byBvcHRpb25hbGx5IGluY2x1ZGUgYW4KKwlvYmplY3QgZmlsZSBhcyBwYXJ0IG9mIGEgY29tcG9zaXRlIG9iamVjdC4KKworCUV4YW1wbGU6CisJCSNmcy9leHQyL01ha2VmaWxlCisJICAgICAgICBvYmotJChDT05GSUdfRVhUMl9GUykgKz0gZXh0Mi5vCisJCWV4dDIteSA6PSBiYWxsb2MubyBkaXIubyBmaWxlLm8gaWFsbG9jLm8gaW5vZGUubyBpb2N0bC5vIFwKKwkJCSAgbmFtZWkubyBzdXBlci5vIHN5bWxpbmsubworCSAgICAgICAgZXh0Mi0kKENPTkZJR19FWFQyX0ZTX1hBVFRSKSArPSB4YXR0ci5vIHhhdHRyX3VzZXIubyBcCisJCQkJCQl4YXR0cl90cnVzdGVkLm8KKworCUluIHRoaXMgZXhhbXBsZSwgeGF0dHIubywgeGF0dHJfdXNlci5vIGFuZCB4YXR0cl90cnVzdGVkLm8gYXJlIG9ubHkKKwlwYXJ0IG9mIHRoZSBjb21wb3NpdGUgb2JqZWN0IGV4dDIubyBpZiAkKENPTkZJR19FWFQyX0ZTX1hBVFRSKQorCWV2YWx1YXRlcyB0byAneScuCisKKwlOb3RlOiBPZiBjb3Vyc2UsIHdoZW4geW91IGFyZSBidWlsZGluZyBvYmplY3RzIGludG8gdGhlIGtlcm5lbCwKKwl0aGUgc3ludGF4IGFib3ZlIHdpbGwgYWxzbyB3b3JrLiBTbywgaWYgeW91IGhhdmUgQ09ORklHX0VYVDJfRlM9eSwKKwlrYnVpbGQgd2lsbCBidWlsZCBhbiBleHQyLm8gZmlsZSBmb3IgeW91IG91dCBvZiB0aGUgaW5kaXZpZHVhbAorCXBhcnRzIGFuZCB0aGVuIGxpbmsgdGhpcyBpbnRvIGJ1aWx0LWluLm8sIGFzIHlvdSB3b3VsZCBleHBlY3QuCisKKy0tLSAzLjQgT2JqZWN0cyB3aGljaCBleHBvcnQgc3ltYm9scworCisJTm8gc3BlY2lhbCBub3RhdGlvbiBpcyByZXF1aXJlZCBpbiB0aGUgbWFrZWZpbGVzIGZvcgorCW1vZHVsZXMgZXhwb3J0aW5nIHN5bWJvbHMuCisKKy0tLSAzLjUgTGlicmFyeSBmaWxlIGdvYWxzIC0gbGliLXkKKworCU9iamVjdHMgbGlzdGVkIHdpdGggb2JqLSogYXJlIHVzZWQgZm9yIG1vZHVsZXMsIG9yCisJY29tYmluZWQgaW4gYSBidWlsdC1pbi5vIGZvciB0aGF0IHNwZWNpZmljIGRpcmVjdG9yeS4KKwlUaGVyZSBpcyBhbHNvIHRoZSBwb3NzaWJpbGl0eSB0byBsaXN0IG9iamVjdHMgdGhhdCB3aWxsCisJYmUgaW5jbHVkZWQgaW4gYSBsaWJyYXJ5LCBsaWIuYS4KKwlBbGwgb2JqZWN0cyBsaXN0ZWQgd2l0aCBsaWIteSBhcmUgY29tYmluZWQgaW4gYSBzaW5nbGUKKwlsaWJyYXJ5IGZvciB0aGF0IGRpcmVjdG9yeS4KKwlPYmplY3RzIHRoYXQgYXJlIGxpc3RlZCBpbiBvYmoteSBhbmQgYWRkaXRpb25hbGx5IGxpc3RlZCBpbgorCWxpYi15IHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5LCBzaW5jZSB0aGV5IHdpbGwKKwliZSBhY2Nlc3NpYmxlIGFueXdheS4KKwlGb3IgY29uc2lzdGVuY3ksIG9iamVjdHMgbGlzdGVkIGluIGxpYi1tIHdpbGwgYmUgaW5jbHVkZWQgaW4gbGliLmEuCisKKwlOb3RlIHRoYXQgdGhlIHNhbWUga2J1aWxkIG1ha2VmaWxlIG1heSBsaXN0IGZpbGVzIHRvIGJlIGJ1aWx0LWluCisJYW5kIHRvIGJlIHBhcnQgb2YgYSBsaWJyYXJ5LiBUaGVyZWZvcmUgdGhlIHNhbWUgZGlyZWN0b3J5CisJbWF5IGNvbnRhaW4gYm90aCBhIGJ1aWx0LWluLm8gYW5kIGEgbGliLmEgZmlsZS4KKworCUV4YW1wbGU6CisJCSNhcmNoL3g4Ni9saWIvTWFrZWZpbGUKKwkJbGliLXkgICAgOj0gZGVsYXkubworCisJVGhpcyB3aWxsIGNyZWF0ZSBhIGxpYnJhcnkgbGliLmEgYmFzZWQgb24gZGVsYXkuby4gRm9yIGtidWlsZCB0bworCWFjdHVhbGx5IHJlY29nbml6ZSB0aGF0IHRoZXJlIGlzIGEgbGliLmEgYmVpbmcgYnVpbHQsIHRoZSBkaXJlY3RvcnkKKwlzaGFsbCBiZSBsaXN0ZWQgaW4gbGlicy15LgorCVNlZSBhbHNvICI2LjQgTGlzdCBkaXJlY3RvcmllcyB0byB2aXNpdCB3aGVuIGRlc2NlbmRpbmciLgorCisJVXNlIG9mIGxpYi15IGlzIG5vcm1hbGx5IHJlc3RyaWN0ZWQgdG8gbGliLyBhbmQgYXJjaC8qL2xpYi4KKworLS0tIDMuNiBEZXNjZW5kaW5nIGRvd24gaW4gZGlyZWN0b3JpZXMKKworCUEgTWFrZWZpbGUgaXMgb25seSByZXNwb25zaWJsZSBmb3IgYnVpbGRpbmcgb2JqZWN0cyBpbiBpdHMgb3duCisJZGlyZWN0b3J5LiBGaWxlcyBpbiBzdWJkaXJlY3RvcmllcyBzaG91bGQgYmUgdGFrZW4gY2FyZSBvZiBieQorCU1ha2VmaWxlcyBpbiB0aGVzZSBzdWJkaXJzLiBUaGUgYnVpbGQgc3lzdGVtIHdpbGwgYXV0b21hdGljYWxseQorCWludm9rZSBtYWtlIHJlY3Vyc2l2ZWx5IGluIHN1YmRpcmVjdG9yaWVzLCBwcm92aWRlZCB5b3UgbGV0IGl0IGtub3cgb2YKKwl0aGVtLgorCisJVG8gZG8gc28sIG9iai15IGFuZCBvYmotbSBhcmUgdXNlZC4KKwlleHQyIGxpdmVzIGluIGEgc2VwYXJhdGUgZGlyZWN0b3J5LCBhbmQgdGhlIE1ha2VmaWxlIHByZXNlbnQgaW4gZnMvCisJdGVsbHMga2J1aWxkIHRvIGRlc2NlbmQgZG93biB1c2luZyB0aGUgZm9sbG93aW5nIGFzc2lnbm1lbnQuCisKKwlFeGFtcGxlOgorCQkjZnMvTWFrZWZpbGUKKwkJb2JqLSQoQ09ORklHX0VYVDJfRlMpICs9IGV4dDIvCisKKwlJZiBDT05GSUdfRVhUMl9GUyBpcyBzZXQgdG8gZWl0aGVyICd5JyAoYnVpbHQtaW4pIG9yICdtJyAobW9kdWxhcikKKwl0aGUgY29ycmVzcG9uZGluZyBvYmotIHZhcmlhYmxlIHdpbGwgYmUgc2V0LCBhbmQga2J1aWxkIHdpbGwgZGVzY2VuZAorCWRvd24gaW4gdGhlIGV4dDIgZGlyZWN0b3J5LgorCUtidWlsZCBvbmx5IHVzZXMgdGhpcyBpbmZvcm1hdGlvbiB0byBkZWNpZGUgdGhhdCBpdCBuZWVkcyB0byB2aXNpdAorCXRoZSBkaXJlY3RvcnksIGl0IGlzIHRoZSBNYWtlZmlsZSBpbiB0aGUgc3ViZGlyZWN0b3J5IHRoYXQKKwlzcGVjaWZpZXMgd2hhdCBpcyBtb2R1bGFyIGFuZCB3aGF0IGlzIGJ1aWx0LWluLgorCisJSXQgaXMgZ29vZCBwcmFjdGljZSB0byB1c2UgYSBDT05GSUdfIHZhcmlhYmxlIHdoZW4gYXNzaWduaW5nIGRpcmVjdG9yeQorCW5hbWVzLiBUaGlzIGFsbG93cyBrYnVpbGQgdG8gdG90YWxseSBza2lwIHRoZSBkaXJlY3RvcnkgaWYgdGhlCisJY29ycmVzcG9uZGluZyBDT05GSUdfIG9wdGlvbiBpcyBuZWl0aGVyICd5JyBub3IgJ20nLgorCistLS0gMy43IENvbXBpbGF0aW9uIGZsYWdzCisKKyAgICBjY2ZsYWdzLXksIGFzZmxhZ3MteSBhbmQgbGRmbGFncy15CisJVGhlc2UgdGhyZWUgZmxhZ3MgYXBwbHkgb25seSB0byB0aGUga2J1aWxkIG1ha2VmaWxlIGluIHdoaWNoIHRoZXkKKwlhcmUgYXNzaWduZWQuIFRoZXkgYXJlIHVzZWQgZm9yIGFsbCB0aGUgbm9ybWFsIGNjLCBhcyBhbmQgbGQKKwlpbnZvY2F0aW9ucyBoYXBwZW5pbmcgZHVyaW5nIGEgcmVjdXJzaXZlIGJ1aWxkLgorCU5vdGU6IEZsYWdzIHdpdGggdGhlIHNhbWUgYmVoYXZpb3VyIHdlcmUgcHJldmlvdXNseSBuYW1lZDoKKwlFWFRSQV9DRkxBR1MsIEVYVFJBX0FGTEFHUyBhbmQgRVhUUkFfTERGTEFHUy4KKwlUaGV5IGFyZSBzdGlsbCBzdXBwb3J0ZWQgYnV0IHRoZWlyIHVzYWdlIGlzIGRlcHJlY2F0ZWQuCisKKwljY2ZsYWdzLXkgc3BlY2lmaWVzIG9wdGlvbnMgZm9yIGNvbXBpbGluZyB3aXRoICQoQ0MpLgorCisJRXhhbXBsZToKKwkJIyBkcml2ZXJzL2FjcGkvTWFrZWZpbGUKKwkJY2NmbGFncy15IDo9IC1PcworCQljY2ZsYWdzLSQoQ09ORklHX0FDUElfREVCVUcpICs9IC1EQUNQSV9ERUJVR19PVVRQVVQKKworCVRoaXMgdmFyaWFibGUgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIHRvcCBNYWtlZmlsZSBvd25zIHRoZQorCXZhcmlhYmxlICQoS0JVSUxEX0NGTEFHUykgYW5kIHVzZXMgaXQgZm9yIGNvbXBpbGF0aW9uIGZsYWdzIGZvciB0aGUKKwllbnRpcmUgdHJlZS4KKworCWFzZmxhZ3MteSBzcGVjaWZpZXMgb3B0aW9ucyBmb3IgYXNzZW1ibGluZyB3aXRoICQoQVMpLgorCisJRXhhbXBsZToKKwkJI2FyY2gvc3BhcmMva2VybmVsL01ha2VmaWxlCisJCWFzZmxhZ3MteSA6PSAtYW5zaQorCisJbGRmbGFncy15IHNwZWNpZmllcyBvcHRpb25zIGZvciBsaW5raW5nIHdpdGggJChMRCkuCisKKwlFeGFtcGxlOgorCQkjYXJjaC9jcmlzL2Jvb3QvY29tcHJlc3NlZC9NYWtlZmlsZQorCQlsZGZsYWdzLXkgKz0gLVQgJChzcmN0cmVlKS8kKHNyYykvZGVjb21wcmVzc18kKGFyY2gteSkubGRzCisKKyAgICBzdWJkaXItY2NmbGFncy15LCBzdWJkaXItYXNmbGFncy15CisJVGhlIHR3byBmbGFncyBsaXN0ZWQgYWJvdmUgYXJlIHNpbWlsYXIgdG8gY2NmbGFncy15IGFuZCBhc2ZsYWdzLXkuCisJVGhlIGRpZmZlcmVuY2UgaXMgdGhhdCB0aGUgc3ViZGlyLSB2YXJpYW50cyBoYXZlIGVmZmVjdCBmb3IgdGhlIGtidWlsZAorCWZpbGUgd2hlcmUgdGhleSBhcmUgcHJlc2VudCBhbmQgYWxsIHN1YmRpcmVjdG9yaWVzLgorCU9wdGlvbnMgc3BlY2lmaWVkIHVzaW5nIHN1YmRpci0qIGFyZSBhZGRlZCB0byB0aGUgY29tbWFuZGxpbmUgYmVmb3JlCisJdGhlIG9wdGlvbnMgc3BlY2lmaWVkIHVzaW5nIHRoZSBub24tc3ViZGlyIHZhcmlhbnRzLgorCisJRXhhbXBsZToKKwkJc3ViZGlyLWNjZmxhZ3MteSA6PSAtV2Vycm9yCisKKyAgICBDRkxBR1NfJEAsIEFGTEFHU18kQAorCisJQ0ZMQUdTXyRAIGFuZCBBRkxBR1NfJEAgb25seSBhcHBseSB0byBjb21tYW5kcyBpbiBjdXJyZW50CisJa2J1aWxkIG1ha2VmaWxlLgorCisJJChDRkxBR1NfJEApIHNwZWNpZmllcyBwZXItZmlsZSBvcHRpb25zIGZvciAkKENDKS4gIFRoZSAkQAorCXBhcnQgaGFzIGEgbGl0ZXJhbCB2YWx1ZSB3aGljaCBzcGVjaWZpZXMgdGhlIGZpbGUgdGhhdCBpdCBpcyBmb3IuCisKKwlFeGFtcGxlOgorCQkjIGRyaXZlcnMvc2NzaS9NYWtlZmlsZQorCQlDRkxBR1NfYWhhMTUyeC5vID0gICAtREFIQTE1MlhfU1RBVCAtREFVVE9DT05GCisJCUNGTEFHU19nZHRoLm8gICAgPSAjIC1EREVCVUdfR0RUSD0yIC1EX19TRVJJQUxfXyAtRF9fQ09NMl9fIFwKKwkJCQkgICAgIC1ER0RUSF9TVEFUSVNUSUNTCisKKwlUaGVzZSB0d28gbGluZXMgc3BlY2lmeSBjb21waWxhdGlvbiBmbGFncyBmb3IgYWhhMTUyeC5vIGFuZCBnZHRoLm8uCisKKwkkKEFGTEFHU18kQCkgaXMgYSBzaW1pbGFyIGZlYXR1cmUgZm9yIHNvdXJjZSBmaWxlcyBpbiBhc3NlbWJseQorCWxhbmd1YWdlcy4KKworCUV4YW1wbGU6CisJCSMgYXJjaC9hcm0va2VybmVsL01ha2VmaWxlCisJCUFGTEFHU19oZWFkLm8gICAgICAgIDo9IC1EVEVYVF9PRkZTRVQ9JChURVhUX09GRlNFVCkKKwkJQUZMQUdTX2NydW5jaC1iaXRzLm8gOj0gLVdhLC1tY3B1PWVwOTMxMgorCQlBRkxBR1NfaXdtbXh0Lm8gICAgICA6PSAtV2EsLW1jcHU9aXdtbXh0CisKKworLS0tIDMuOSBEZXBlbmRlbmN5IHRyYWNraW5nCisKKwlLYnVpbGQgdHJhY2tzIGRlcGVuZGVuY2llcyBvbiB0aGUgZm9sbG93aW5nOgorCTEpIEFsbCBwcmVyZXF1aXNpdGUgZmlsZXMgKGJvdGggKi5jIGFuZCAqLmgpCisJMikgQ09ORklHXyBvcHRpb25zIHVzZWQgaW4gYWxsIHByZXJlcXVpc2l0ZSBmaWxlcworCTMpIENvbW1hbmQtbGluZSB1c2VkIHRvIGNvbXBpbGUgdGFyZ2V0CisKKwlUaHVzLCBpZiB5b3UgY2hhbmdlIGFuIG9wdGlvbiB0byAkKENDKSBhbGwgYWZmZWN0ZWQgZmlsZXMgd2lsbAorCWJlIHJlLWNvbXBpbGVkLgorCistLS0gMy4xMCBTcGVjaWFsIFJ1bGVzCisKKwlTcGVjaWFsIHJ1bGVzIGFyZSB1c2VkIHdoZW4gdGhlIGtidWlsZCBpbmZyYXN0cnVjdHVyZSBkb2VzCisJbm90IHByb3ZpZGUgdGhlIHJlcXVpcmVkIHN1cHBvcnQuIEEgdHlwaWNhbCBleGFtcGxlIGlzCisJaGVhZGVyIGZpbGVzIGdlbmVyYXRlZCBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuCisJQW5vdGhlciBleGFtcGxlIGFyZSB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIE1ha2VmaWxlcyB3aGljaAorCW5lZWQgc3BlY2lhbCBydWxlcyB0byBwcmVwYXJlIGJvb3QgaW1hZ2VzIGV0Yy4KKworCVNwZWNpYWwgcnVsZXMgYXJlIHdyaXR0ZW4gYXMgbm9ybWFsIE1ha2UgcnVsZXMuCisJS2J1aWxkIGlzIG5vdCBleGVjdXRpbmcgaW4gdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgTWFrZWZpbGUgaXMKKwlsb2NhdGVkLCBzbyBhbGwgc3BlY2lhbCBydWxlcyBzaGFsbCBwcm92aWRlIGEgcmVsYXRpdmUKKwlwYXRoIHRvIHByZXJlcXVpc2l0ZSBmaWxlcyBhbmQgdGFyZ2V0IGZpbGVzLgorCisJVHdvIHZhcmlhYmxlcyBhcmUgdXNlZCB3aGVuIGRlZmluaW5nIHNwZWNpYWwgcnVsZXM6CisKKyAgICAkKHNyYykKKwkkKHNyYykgaXMgYSByZWxhdGl2ZSBwYXRoIHdoaWNoIHBvaW50cyB0byB0aGUgZGlyZWN0b3J5CisJd2hlcmUgdGhlIE1ha2VmaWxlIGlzIGxvY2F0ZWQuIEFsd2F5cyB1c2UgJChzcmMpIHdoZW4KKwlyZWZlcnJpbmcgdG8gZmlsZXMgbG9jYXRlZCBpbiB0aGUgc3JjIHRyZWUuCisKKyAgICAkKG9iaikKKwkkKG9iaikgaXMgYSByZWxhdGl2ZSBwYXRoIHdoaWNoIHBvaW50cyB0byB0aGUgZGlyZWN0b3J5CisJd2hlcmUgdGhlIHRhcmdldCBpcyBzYXZlZC4gQWx3YXlzIHVzZSAkKG9iaikgd2hlbgorCXJlZmVycmluZyB0byBnZW5lcmF0ZWQgZmlsZXMuCisKKwlFeGFtcGxlOgorCQkjZHJpdmVycy9zY3NpL01ha2VmaWxlCisJCSQob2JqKS81M2M4eHhfZC5oOiAkKHNyYykvNTNjNyw4eHguc2NyICQoc3JjKS9zY3JpcHRfYXNtLnBsCisJCQkkKENQUCkgLURDSElQPTgxMCAtIDwgJDwgfCAuLi4gJChzcmMpL3NjcmlwdF9hc20ucGwKKworCVRoaXMgaXMgYSBzcGVjaWFsIHJ1bGUsIGZvbGxvd2luZyB0aGUgbm9ybWFsIHN5bnRheAorCXJlcXVpcmVkIGJ5IG1ha2UuCisJVGhlIHRhcmdldCBmaWxlIGRlcGVuZHMgb24gdHdvIHByZXJlcXVpc2l0ZSBmaWxlcy4gUmVmZXJlbmNlcworCXRvIHRoZSB0YXJnZXQgZmlsZSBhcmUgcHJlZml4ZWQgd2l0aCAkKG9iaiksIHJlZmVyZW5jZXMKKwl0byBwcmVyZXF1aXNpdGVzIGFyZSByZWZlcmVuY2VkIHdpdGggJChzcmMpIChiZWNhdXNlIHRoZXkgYXJlIG5vdAorCWdlbmVyYXRlZCBmaWxlcykuCisKKyAgICAkKGtlY2hvKQorCWVjaG9pbmcgaW5mb3JtYXRpb24gdG8gdXNlciBpbiBhIHJ1bGUgaXMgb2Z0ZW4gYSBnb29kIHByYWN0aWNlCisJYnV0IHdoZW4gZXhlY3V0aW9uICJtYWtlIC1zIiBvbmUgZG9lcyBub3QgZXhwZWN0IHRvIHNlZSBhbnkgb3V0cHV0CisJZXhjZXB0IGZvciB3YXJuaW5ncy9lcnJvcnMuCisJVG8gc3VwcG9ydCB0aGlzIGtidWlsZCBkZWZpbmVzICQoa2VjaG8pIHdoaWNoIHdpbGwgZWNobyBvdXQgdGhlCisJdGV4dCBmb2xsb3dpbmcgJChrZWNobykgdG8gc3Rkb3V0IGV4Y2VwdCBpZiAibWFrZSAtcyIgaXMgdXNlZC4KKworCUV4YW1wbGU6CisJCSNhcmNoL2JsYWNrZmluL2Jvb3QvTWFrZWZpbGUKKwkJJChvYmopL3ZtSW1hZ2U6ICQob2JqKS92bWxpbnV4Lmd6CisJCQkkKGNhbGwgaWZfY2hhbmdlZCx1aW1hZ2UpCisJCQlAJChrZWNobykgJ0tlcm5lbDogJEAgaXMgcmVhZHknCisKKworLS0tIDMuMTEgJChDQykgc3VwcG9ydCBmdW5jdGlvbnMKKworCVRoZSBrZXJuZWwgbWF5IGJlIGJ1aWx0IHdpdGggc2V2ZXJhbCBkaWZmZXJlbnQgdmVyc2lvbnMgb2YKKwkkKENDKSwgZWFjaCBzdXBwb3J0aW5nIGEgdW5pcXVlIHNldCBvZiBmZWF0dXJlcyBhbmQgb3B0aW9ucy4KKwlrYnVpbGQgcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCB0byBjaGVjayBmb3IgdmFsaWQgb3B0aW9ucyBmb3IgJChDQykuCisJJChDQykgaXMgdXN1YWxseSB0aGUgZ2NjIGNvbXBpbGVyLCBidXQgb3RoZXIgYWx0ZXJuYXRpdmVzIGFyZQorCWF2YWlsYWJsZS4KKworICAgIGFzLW9wdGlvbgorCWFzLW9wdGlvbiBpcyB1c2VkIHRvIGNoZWNrIGlmICQoQ0MpIC0tIHdoZW4gdXNlZCB0byBjb21waWxlCisJYXNzZW1ibGVyICgqLlMpIGZpbGVzIC0tIHN1cHBvcnRzIHRoZSBnaXZlbiBvcHRpb24uIEFuIG9wdGlvbmFsCisJc2Vjb25kIG9wdGlvbiBtYXkgYmUgc3BlY2lmaWVkIGlmIHRoZSBmaXJzdCBvcHRpb24gaXMgbm90IHN1cHBvcnRlZC4KKworCUV4YW1wbGU6CisJCSNhcmNoL3NoL01ha2VmaWxlCisJCWNmbGFncy15ICs9ICQoY2FsbCBhcy1vcHRpb24sLVdhJChjb21tYSktaXNhPSQoaXNhLXkpLCkKKworCUluIHRoZSBhYm92ZSBleGFtcGxlLCBjZmxhZ3MteSB3aWxsIGJlIGFzc2lnbmVkIHRoZSBvcHRpb24KKwktV2EkKGNvbW1hKS1pc2E9JChpc2EteSkgaWYgaXQgaXMgc3VwcG9ydGVkIGJ5ICQoQ0MpLgorCVRoZSBzZWNvbmQgYXJndW1lbnQgaXMgb3B0aW9uYWwsIGFuZCBpZiBzdXBwbGllZCB3aWxsIGJlIHVzZWQKKwlpZiBmaXJzdCBhcmd1bWVudCBpcyBub3Qgc3VwcG9ydGVkLgorCisgICAgY2MtbGRvcHRpb24KKwljYy1sZG9wdGlvbiBpcyB1c2VkIHRvIGNoZWNrIGlmICQoQ0MpIHdoZW4gdXNlZCB0byBsaW5rIG9iamVjdCBmaWxlcworCXN1cHBvcnRzIHRoZSBnaXZlbiBvcHRpb24uICBBbiBvcHRpb25hbCBzZWNvbmQgb3B0aW9uIG1heSBiZQorCXNwZWNpZmllZCBpZiBmaXJzdCBvcHRpb24gYXJlIG5vdCBzdXBwb3J0ZWQuCisKKwlFeGFtcGxlOgorCQkjYXJjaC94ODYva2VybmVsL01ha2VmaWxlCisJCXZzeXNjYWxsLWZsYWdzICs9ICQoY2FsbCBjYy1sZG9wdGlvbiwgLVdsJChjb21tYSktLWhhc2gtc3R5bGU9c3lzdikKKworCUluIHRoZSBhYm92ZSBleGFtcGxlLCB2c3lzY2FsbC1mbGFncyB3aWxsIGJlIGFzc2lnbmVkIHRoZSBvcHRpb24KKwktV2wkKGNvbW1hKS0taGFzaC1zdHlsZT1zeXN2IGlmIGl0IGlzIHN1cHBvcnRlZCBieSAkKENDKS4KKwlUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIG9wdGlvbmFsLCBhbmQgaWYgc3VwcGxpZWQgd2lsbCBiZSB1c2VkCisJaWYgZmlyc3QgYXJndW1lbnQgaXMgbm90IHN1cHBvcnRlZC4KKworICAgIGFzLWluc3RyCisJYXMtaW5zdHIgY2hlY2tzIGlmIHRoZSBhc3NlbWJsZXIgcmVwb3J0cyBhIHNwZWNpZmljIGluc3RydWN0aW9uCisJYW5kIHRoZW4gb3V0cHV0cyBlaXRoZXIgb3B0aW9uMSBvciBvcHRpb24yCisJQyBlc2NhcGVzIGFyZSBzdXBwb3J0ZWQgaW4gdGhlIHRlc3QgaW5zdHJ1Y3Rpb24KKwlOb3RlOiBhcy1pbnN0ci1vcHRpb24gdXNlcyBLQlVJTERfQUZMQUdTIGZvciAkKEFTKSBvcHRpb25zCisKKyAgICBjYy1vcHRpb24KKwljYy1vcHRpb24gaXMgdXNlZCB0byBjaGVjayBpZiAkKENDKSBzdXBwb3J0cyBhIGdpdmVuIG9wdGlvbiwgYW5kIGlmCisJbm90IHN1cHBvcnRlZCB0byB1c2UgYW4gb3B0aW9uYWwgc2Vjb25kIG9wdGlvbi4KKworCUV4YW1wbGU6CisJCSNhcmNoL3g4Ni9NYWtlZmlsZQorCQljZmxhZ3MteSArPSAkKGNhbGwgY2Mtb3B0aW9uLC1tYXJjaD1wZW50aXVtLW1teCwtbWFyY2g9aTU4NikKKworCUluIHRoZSBhYm92ZSBleGFtcGxlLCBjZmxhZ3MteSB3aWxsIGJlIGFzc2lnbmVkIHRoZSBvcHRpb24KKwktbWFyY2g9cGVudGl1bS1tbXggaWYgc3VwcG9ydGVkIGJ5ICQoQ0MpLCBvdGhlcndpc2UgLW1hcmNoPWk1ODYuCisJVGhlIHNlY29uZCBhcmd1bWVudCB0byBjYy1vcHRpb24gaXMgb3B0aW9uYWwsIGFuZCBpZiBvbWl0dGVkLAorCWNmbGFncy15IHdpbGwgYmUgYXNzaWduZWQgbm8gdmFsdWUgaWYgZmlyc3Qgb3B0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuCisJTm90ZTogY2Mtb3B0aW9uIHVzZXMgS0JVSUxEX0NGTEFHUyBmb3IgJChDQykgb3B0aW9ucworCisgICBjYy1vcHRpb24teW4KKwljYy1vcHRpb24teW4gaXMgdXNlZCB0byBjaGVjayBpZiBnY2Mgc3VwcG9ydHMgYSBnaXZlbiBvcHRpb24KKwlhbmQgcmV0dXJuICd5JyBpZiBzdXBwb3J0ZWQsIG90aGVyd2lzZSAnbicuCisKKwlFeGFtcGxlOgorCQkjYXJjaC9wcGMvTWFrZWZpbGUKKwkJYmlhcmNoIDo9ICQoY2FsbCBjYy1vcHRpb24teW4sIC1tMzIpCisJCWFmbGFncy0kKGJpYXJjaCkgKz0gLWEzMgorCQljZmxhZ3MtJChiaWFyY2gpICs9IC1tMzIKKworCUluIHRoZSBhYm92ZSBleGFtcGxlLCAkKGJpYXJjaCkgaXMgc2V0IHRvIHkgaWYgJChDQykgc3VwcG9ydHMgdGhlIC1tMzIKKwlvcHRpb24uIFdoZW4gJChiaWFyY2gpIGVxdWFscyAneScsIHRoZSBleHBhbmRlZCB2YXJpYWJsZXMgJChhZmxhZ3MteSkKKwlhbmQgJChjZmxhZ3MteSkgd2lsbCBiZSBhc3NpZ25lZCB0aGUgdmFsdWVzIC1hMzIgYW5kIC1tMzIsCisJcmVzcGVjdGl2ZWx5LgorCU5vdGU6IGNjLW9wdGlvbi15biB1c2VzIEtCVUlMRF9DRkxBR1MgZm9yICQoQ0MpIG9wdGlvbnMKKworICAgIGNjLW9wdGlvbi1hbGlnbgorCWdjYyB2ZXJzaW9ucyA+PSAzLjAgY2hhbmdlZCB0aGUgdHlwZSBvZiBvcHRpb25zIHVzZWQgdG8gc3BlY2lmeQorCWFsaWdubWVudCBvZiBmdW5jdGlvbnMsIGxvb3BzIGV0Yy4gJChjYy1vcHRpb24tYWxpZ24pLCB3aGVuIHVzZWQKKwlhcyBwcmVmaXggdG8gdGhlIGFsaWduIG9wdGlvbnMsIHdpbGwgc2VsZWN0IHRoZSByaWdodCBwcmVmaXg6CisJZ2NjIDwgMy4wMAorCQljYy1vcHRpb24tYWxpZ24gPSAtbWFsaWduCisJZ2NjID49IDMuMDAKKwkJY2Mtb3B0aW9uLWFsaWduID0gLWZhbGlnbgorCisJRXhhbXBsZToKKwkJS0JVSUxEX0NGTEFHUyArPSAkKGNjLW9wdGlvbi1hbGlnbiktZnVuY3Rpb25zPTQKKworCUluIHRoZSBhYm92ZSBleGFtcGxlLCB0aGUgb3B0aW9uIC1mYWxpZ24tZnVuY3Rpb25zPTQgaXMgdXNlZCBmb3IKKwlnY2MgPj0gMy4wMC4gRm9yIGdjYyA8IDMuMDAsIC1tYWxpZ24tZnVuY3Rpb25zPTQgaXMgdXNlZC4KKwlOb3RlOiBjYy1vcHRpb24tYWxpZ24gdXNlcyBLQlVJTERfQ0ZMQUdTIGZvciAkKENDKSBvcHRpb25zCisKKyAgICBjYy1kaXNhYmxlLXdhcm5pbmcKKwljYy1kaXNhYmxlLXdhcm5pbmcgY2hlY2tzIGlmIGdjYyBzdXBwb3J0cyBhIGdpdmVuIHdhcm5pbmcgYW5kIHJldHVybnMKKwl0aGUgY29tbWFuZGxpbmUgc3dpdGNoIHRvIGRpc2FibGUgaXQuIFRoaXMgc3BlY2lhbCBmdW5jdGlvbiBpcyBuZWVkZWQsCisJYmVjYXVzZSBnY2MgNC40IGFuZCBsYXRlciBhY2NlcHQgYW55IHVua25vd24gLVduby0qIG9wdGlvbiBhbmQgb25seQorCXdhcm4gYWJvdXQgaXQgaWYgdGhlcmUgaXMgYW5vdGhlciB3YXJuaW5nIGluIHRoZSBzb3VyY2UgZmlsZS4KKworCUV4YW1wbGU6CisJCUtCVUlMRF9DRkxBR1MgKz0gJChjYWxsIGNjLWRpc2FibGUtd2FybmluZywgdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUpCisKKwlJbiB0aGUgYWJvdmUgZXhhbXBsZSwgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZSB3aWxsIGJlIGFkZGVkIHRvCisJS0JVSUxEX0NGTEFHUyBvbmx5IGlmIGdjYyByZWFsbHkgYWNjZXB0cyBpdC4KKworICAgIGNjLXZlcnNpb24KKwljYy12ZXJzaW9uIHJldHVybnMgYSBudW1lcmljYWwgdmVyc2lvbiBvZiB0aGUgJChDQykgY29tcGlsZXIgdmVyc2lvbi4KKwlUaGUgZm9ybWF0IGlzIDxtYWpvcj48bWlub3I+IHdoZXJlIGJvdGggYXJlIHR3byBkaWdpdHMuIFNvIGZvciBleGFtcGxlCisJZ2NjIDMuNDEgd291bGQgcmV0dXJuIDAzNDEuCisJY2MtdmVyc2lvbiBpcyB1c2VmdWwgd2hlbiBhIHNwZWNpZmljICQoQ0MpIHZlcnNpb24gaXMgZmF1bHR5IGluIG9uZQorCWFyZWEsIGZvciBleGFtcGxlIC1tcmVncGFybT0zIHdhcyBicm9rZW4gaW4gc29tZSBnY2MgdmVyc2lvbnMKKwlldmVuIHRob3VnaCB0aGUgb3B0aW9uIHdhcyBhY2NlcHRlZCBieSBnY2MuCisKKwlFeGFtcGxlOgorCQkjYXJjaC94ODYvTWFrZWZpbGUKKwkJY2ZsYWdzLXkgKz0gJChzaGVsbCBcCisJCWlmIFsgJChjYy12ZXJzaW9uKSAtZ2UgMDMwMCBdIDsgdGhlbiBcCisJCQllY2hvICItbXJlZ3Bhcm09MyI7IGZpIDspCisKKwlJbiB0aGUgYWJvdmUgZXhhbXBsZSwgLW1yZWdwYXJtPTMgaXMgb25seSB1c2VkIGZvciBnY2MgdmVyc2lvbiBncmVhdGVyCisJdGhhbiBvciBlcXVhbCB0byBnY2MgMy4wLgorCisgICAgY2MtaWZ2ZXJzaW9uCisJY2MtaWZ2ZXJzaW9uIHRlc3RzIHRoZSB2ZXJzaW9uIG9mICQoQ0MpIGFuZCBlcXVhbHMgdGhlIGZvdXJ0aCBwYXJhbWV0ZXIKKwlpZiB2ZXJzaW9uIGV4cHJlc3Npb24gaXMgdHJ1ZSwgb3IgdGhlIGZpZnRoIChpZiBnaXZlbikgaWYgdGhlIHZlcnNpb24KKwlleHByZXNzaW9uIGlzIGZhbHNlLgorCisJRXhhbXBsZToKKwkJI2ZzL3JlaXNlcmZzL01ha2VmaWxlCisJCWNjZmxhZ3MteSA6PSAkKGNhbGwgY2MtaWZ2ZXJzaW9uLCAtbHQsIDA0MDIsIC1PMSkKKworCUluIHRoaXMgZXhhbXBsZSwgY2NmbGFncy15IHdpbGwgYmUgYXNzaWduZWQgdGhlIHZhbHVlIC1PMSBpZiB0aGUKKwkkKENDKSB2ZXJzaW9uIGlzIGxlc3MgdGhhbiA0LjIuCisJY2MtaWZ2ZXJzaW9uIHRha2VzIGFsbCB0aGUgc2hlbGwgb3BlcmF0b3JzOgorCS1lcSwgLW5lLCAtbHQsIC1sZSwgLWd0LCBhbmQgLWdlCisJVGhlIHRoaXJkIHBhcmFtZXRlciBtYXkgYmUgYSB0ZXh0IGFzIGluIHRoaXMgZXhhbXBsZSwgYnV0IGl0IG1heSBhbHNvCisJYmUgYW4gZXhwYW5kZWQgdmFyaWFibGUgb3IgYSBtYWNyby4KKworICAgIGNjLWZ1bGx2ZXJzaW9uCisJY2MtZnVsbHZlcnNpb24gaXMgdXNlZnVsIHdoZW4gdGhlIGV4YWN0IHZlcnNpb24gb2YgZ2NjIGlzIG5lZWRlZC4KKwlPbmUgdHlwaWNhbCB1c2UtY2FzZSBpcyB3aGVuIGEgc3BlY2lmaWMgR0NDIHZlcnNpb24gaXMgYnJva2VuLgorCWNjLWZ1bGx2ZXJzaW9uIHBvaW50cyBvdXQgYSBtb3JlIHNwZWNpZmljIHZlcnNpb24gdGhhbiBjYy12ZXJzaW9uIGRvZXMuCisKKwlFeGFtcGxlOgorCQkjYXJjaC9wb3dlcnBjL01ha2VmaWxlCisJCSQoUSlpZiB0ZXN0ICIkKGNjLWZ1bGx2ZXJzaW9uKSIgPSAiMDQwMjAwIiA7IHRoZW4gXAorCQkJZWNobyAtbiAnKioqIEdDQy00LjIuMCBjYW5ub3QgY29tcGlsZSB0aGUgNjQtYml0IHBvd2VycGMgJyA7IFwKKwkJCWZhbHNlIDsgXAorCQlmaQorCisJSW4gdGhpcyBleGFtcGxlIGZvciBhIHNwZWNpZmljIEdDQyB2ZXJzaW9uIHRoZSBidWlsZCB3aWxsIGVycm9yIG91dAorCWV4cGxhaW5pbmcgdG8gdGhlIHVzZXIgd2h5IGl0IHN0b3BzLgorCisgICAgY2MtY3Jvc3MtcHJlZml4CisJY2MtY3Jvc3MtcHJlZml4IGlzIHVzZWQgdG8gY2hlY2sgaWYgdGhlcmUgZXhpc3RzIGEgJChDQykgaW4gcGF0aCB3aXRoCisJb25lIG9mIHRoZSBsaXN0ZWQgcHJlZml4ZXMuIFRoZSBmaXJzdCBwcmVmaXggd2hlcmUgdGhlcmUgZXhpc3QgYQorCXByZWZpeCQoQ0MpIGluIHRoZSBQQVRIIGlzIHJldHVybmVkIC0gYW5kIGlmIG5vIHByZWZpeCQoQ0MpIGlzIGZvdW5kCisJdGhlbiBub3RoaW5nIGlzIHJldHVybmVkLgorCUFkZGl0aW9uYWwgcHJlZml4ZXMgYXJlIHNlcGFyYXRlZCBieSBhIHNpbmdsZSBzcGFjZSBpbiB0aGUKKwljYWxsIG9mIGNjLWNyb3NzLXByZWZpeC4KKwlUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgdXNlZnVsIGZvciBhcmNoaXRlY3R1cmUgTWFrZWZpbGVzIHRoYXQgdHJ5CisJdG8gc2V0IENST1NTX0NPTVBJTEUgdG8gd2VsbC1rbm93biB2YWx1ZXMgYnV0IG1heSBoYXZlIHNldmVyYWwKKwl2YWx1ZXMgdG8gc2VsZWN0IGJldHdlZW4uCisJSXQgaXMgcmVjb21tZW5kZWQgb25seSB0byB0cnkgdG8gc2V0IENST1NTX0NPTVBJTEUgaWYgaXQgaXMgYSBjcm9zcworCWJ1aWxkIChob3N0IGFyY2ggaXMgZGlmZmVyZW50IGZyb20gdGFyZ2V0IGFyY2gpLiBBbmQgaWYgQ1JPU1NfQ09NUElMRQorCWlzIGFscmVhZHkgc2V0IHRoZW4gbGVhdmUgaXQgd2l0aCB0aGUgb2xkIHZhbHVlLgorCisJRXhhbXBsZToKKwkJI2FyY2gvbTY4ay9NYWtlZmlsZQorCQlpZm5lcSAoJChTVUJBUkNIKSwkKEFSQ0gpKQorCQkgICAgICAgIGlmZXEgKCQoQ1JPU1NfQ09NUElMRSksKQorCQkgICAgICAgICAgICAgICBDUk9TU19DT01QSUxFIDo9ICQoY2FsbCBjYy1jcm9zcy1wcmVmaXgsIG02OGstbGludXgtZ251LSkKKwkJCWVuZGlmCisJCWVuZGlmCisKKy0tLSAzLjEyICQoTEQpIHN1cHBvcnQgZnVuY3Rpb25zCisKKyAgICBsZC1vcHRpb24KKwlsZC1vcHRpb24gaXMgdXNlZCB0byBjaGVjayBpZiAkKExEKSBzdXBwb3J0cyB0aGUgc3VwcGxpZWQgb3B0aW9uLgorCWxkLW9wdGlvbiB0YWtlcyB0d28gb3B0aW9ucyBhcyBhcmd1bWVudHMuCisJVGhlIHNlY29uZCBhcmd1bWVudCBpcyBhbiBvcHRpb25hbCBvcHRpb24gdGhhdCBjYW4gYmUgdXNlZCBpZiB0aGUKKwlmaXJzdCBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCBieSAkKExEKS4KKworCUV4YW1wbGU6CisJCSNNYWtlZmlsZQorCQlMREZMQUdTX3ZtbGludXggKz0gJChjYWxsIGxkLW9wdGlvbiwgLVgpCisKKworPT09IDQgSG9zdCBQcm9ncmFtIHN1cHBvcnQKKworS2J1aWxkIHN1cHBvcnRzIGJ1aWxkaW5nIGV4ZWN1dGFibGVzIG9uIHRoZSBob3N0IGZvciB1c2UgZHVyaW5nIHRoZQorY29tcGlsYXRpb24gc3RhZ2UuCitUd28gc3RlcHMgYXJlIHJlcXVpcmVkIGluIG9yZGVyIHRvIHVzZSBhIGhvc3QgZXhlY3V0YWJsZS4KKworVGhlIGZpcnN0IHN0ZXAgaXMgdG8gdGVsbCBrYnVpbGQgdGhhdCBhIGhvc3QgcHJvZ3JhbSBleGlzdHMuIFRoaXMgaXMKK2RvbmUgdXRpbGlzaW5nIHRoZSB2YXJpYWJsZSBob3N0cHJvZ3MteS4KKworVGhlIHNlY29uZCBzdGVwIGlzIHRvIGFkZCBhbiBleHBsaWNpdCBkZXBlbmRlbmN5IHRvIHRoZSBleGVjdXRhYmxlLgorVGhpcyBjYW4gYmUgZG9uZSBpbiB0d28gd2F5cy4gRWl0aGVyIGFkZCB0aGUgZGVwZW5kZW5jeSBpbiBhIHJ1bGUsCitvciB1dGlsaXNlIHRoZSB2YXJpYWJsZSAkKGFsd2F5cykuCitCb3RoIHBvc3NpYmlsaXRpZXMgYXJlIGRlc2NyaWJlZCBpbiB0aGUgZm9sbG93aW5nLgorCistLS0gNC4xIFNpbXBsZSBIb3N0IFByb2dyYW0KKworCUluIHNvbWUgY2FzZXMgdGhlcmUgaXMgYSBuZWVkIHRvIGNvbXBpbGUgYW5kIHJ1biBhIHByb2dyYW0gb24gdGhlCisJY29tcHV0ZXIgd2hlcmUgdGhlIGJ1aWxkIGlzIHJ1bm5pbmcuCisJVGhlIGZvbGxvd2luZyBsaW5lIHRlbGxzIGtidWlsZCB0aGF0IHRoZSBwcm9ncmFtIGJpbjJoZXggc2hhbGwgYmUKKwlidWlsdCBvbiB0aGUgYnVpbGQgaG9zdC4KKworCUV4YW1wbGU6CisJCWhvc3Rwcm9ncy15IDo9IGJpbjJoZXgKKworCUtidWlsZCBhc3N1bWVzIGluIHRoZSBhYm92ZSBleGFtcGxlIHRoYXQgYmluMmhleCBpcyBtYWRlIGZyb20gYSBzaW5nbGUKKwljLXNvdXJjZSBmaWxlIG5hbWVkIGJpbjJoZXguYyBsb2NhdGVkIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcworCXRoZSBNYWtlZmlsZS4KKworLS0tIDQuMiBDb21wb3NpdGUgSG9zdCBQcm9ncmFtcworCisJSG9zdCBwcm9ncmFtcyBjYW4gYmUgbWFkZSB1cCBiYXNlZCBvbiBjb21wb3NpdGUgb2JqZWN0cy4KKwlUaGUgc3ludGF4IHVzZWQgdG8gZGVmaW5lIGNvbXBvc2l0ZSBvYmplY3RzIGZvciBob3N0IHByb2dyYW1zIGlzCisJc2ltaWxhciB0byB0aGUgc3ludGF4IHVzZWQgZm9yIGtlcm5lbCBvYmplY3RzLgorCSQoPGV4ZWN1dGFibGU+LW9ianMpIGxpc3RzIGFsbCBvYmplY3RzIHVzZWQgdG8gbGluayB0aGUgZmluYWwKKwlleGVjdXRhYmxlLgorCisJRXhhbXBsZToKKwkJI3NjcmlwdHMvbHhkaWFsb2cvTWFrZWZpbGUKKwkJaG9zdHByb2dzLXkgICA6PSBseGRpYWxvZworCQlseGRpYWxvZy1vYmpzIDo9IGNoZWNrbGlzdC5vIGx4ZGlhbG9nLm8KKworCU9iamVjdHMgd2l0aCBleHRlbnNpb24gLm8gYXJlIGNvbXBpbGVkIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgLmMKKwlmaWxlcy4gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIGNoZWNrbGlzdC5jIGlzIGNvbXBpbGVkIHRvIGNoZWNrbGlzdC5vCisJYW5kIGx4ZGlhbG9nLmMgaXMgY29tcGlsZWQgdG8gbHhkaWFsb2cuby4KKwlGaW5hbGx5LCB0aGUgdHdvIC5vIGZpbGVzIGFyZSBsaW5rZWQgdG8gdGhlIGV4ZWN1dGFibGUsIGx4ZGlhbG9nLgorCU5vdGU6IFRoZSBzeW50YXggPGV4ZWN1dGFibGU+LXkgaXMgbm90IHBlcm1pdHRlZCBmb3IgaG9zdC1wcm9ncmFtcy4KKworLS0tIDQuMyBVc2luZyBDKysgZm9yIGhvc3QgcHJvZ3JhbXMKKworCWtidWlsZCBvZmZlcnMgc3VwcG9ydCBmb3IgaG9zdCBwcm9ncmFtcyB3cml0dGVuIGluIEMrKy4gVGhpcyB3YXMKKwlpbnRyb2R1Y2VkIHNvbGVseSB0byBzdXBwb3J0IGtjb25maWcsIGFuZCBpcyBub3QgcmVjb21tZW5kZWQKKwlmb3IgZ2VuZXJhbCB1c2UuCisKKwlFeGFtcGxlOgorCQkjc2NyaXB0cy9rY29uZmlnL01ha2VmaWxlCisJCWhvc3Rwcm9ncy15ICAgOj0gcWNvbmYKKwkJcWNvbmYtY3h4b2JqcyA6PSBxY29uZi5vCisKKwlJbiB0aGUgZXhhbXBsZSBhYm92ZSB0aGUgZXhlY3V0YWJsZSBpcyBjb21wb3NlZCBvZiB0aGUgQysrIGZpbGUKKwlxY29uZi5jYyAtIGlkZW50aWZpZWQgYnkgJChxY29uZi1jeHhvYmpzKS4KKworCUlmIHFjb25mIGlzIGNvbXBvc2VkIG9mIGEgbWl4dHVyZSBvZiAuYyBhbmQgLmNjIGZpbGVzLCB0aGVuIGFuCisJYWRkaXRpb25hbCBsaW5lIGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IHRoaXMuCisKKwlFeGFtcGxlOgorCQkjc2NyaXB0cy9rY29uZmlnL01ha2VmaWxlCisJCWhvc3Rwcm9ncy15ICAgOj0gcWNvbmYKKwkJcWNvbmYtY3h4b2JqcyA6PSBxY29uZi5vCisJCXFjb25mLW9ianMgICAgOj0gY2hlY2subworCistLS0gNC40IENvbnRyb2xsaW5nIGNvbXBpbGVyIG9wdGlvbnMgZm9yIGhvc3QgcHJvZ3JhbXMKKworCVdoZW4gY29tcGlsaW5nIGhvc3QgcHJvZ3JhbXMsIGl0IGlzIHBvc3NpYmxlIHRvIHNldCBzcGVjaWZpYyBmbGFncy4KKwlUaGUgcHJvZ3JhbXMgd2lsbCBhbHdheXMgYmUgY29tcGlsZWQgdXRpbGlzaW5nICQoSE9TVENDKSBwYXNzZWQKKwl0aGUgb3B0aW9ucyBzcGVjaWZpZWQgaW4gJChIT1NUQ0ZMQUdTKS4KKwlUbyBzZXQgZmxhZ3MgdGhhdCB3aWxsIHRha2UgZWZmZWN0IGZvciBhbGwgaG9zdCBwcm9ncmFtcyBjcmVhdGVkCisJaW4gdGhhdCBNYWtlZmlsZSwgdXNlIHRoZSB2YXJpYWJsZSBIT1NUX0VYVFJBQ0ZMQUdTLgorCisJRXhhbXBsZToKKwkJI3NjcmlwdHMvbHhkaWFsb2cvTWFrZWZpbGUKKwkJSE9TVF9FWFRSQUNGTEFHUyArPSAtSS91c3IvaW5jbHVkZS9uY3Vyc2VzCisKKwlUbyBzZXQgc3BlY2lmaWMgZmxhZ3MgZm9yIGEgc2luZ2xlIGZpbGUgdGhlIGZvbGxvd2luZyBjb25zdHJ1Y3Rpb24KKwlpcyB1c2VkOgorCisJRXhhbXBsZToKKwkJI2FyY2gvcHBjNjQvYm9vdC9NYWtlZmlsZQorCQlIT1NUQ0ZMQUdTX3BpZ2d5YmFjay5vIDo9IC1ES0VSTkVMQkFTRT0kKEtFUk5FTEJBU0UpCisKKwlJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHNwZWNpZnkgYWRkaXRpb25hbCBvcHRpb25zIHRvIHRoZSBsaW5rZXIuCisKKwlFeGFtcGxlOgorCQkjc2NyaXB0cy9rY29uZmlnL01ha2VmaWxlCisJCUhPU1RMT0FETElCRVNfcWNvbmYgOj0gLUwkKFFURElSKS9saWIKKworCVdoZW4gbGlua2luZyBxY29uZiwgaXQgd2lsbCBiZSBwYXNzZWQgdGhlIGV4dHJhIG9wdGlvbgorCSItTCQoUVRESVIpL2xpYiIuCisKKy0tLSA0LjUgV2hlbiBob3N0IHByb2dyYW1zIGFyZSBhY3R1YWxseSBidWlsdAorCisJS2J1aWxkIHdpbGwgb25seSBidWlsZCBob3N0LXByb2dyYW1zIHdoZW4gdGhleSBhcmUgcmVmZXJlbmNlZAorCWFzIGEgcHJlcmVxdWlzaXRlLgorCVRoaXMgaXMgcG9zc2libGUgaW4gdHdvIHdheXM6CisKKwkoMSkgTGlzdCB0aGUgcHJlcmVxdWlzaXRlIGV4cGxpY2l0bHkgaW4gYSBzcGVjaWFsIHJ1bGUuCisKKwlFeGFtcGxlOgorCQkjZHJpdmVycy9wY2kvTWFrZWZpbGUKKwkJaG9zdHByb2dzLXkgOj0gZ2VuLWRldmxpc3QKKwkJJChvYmopL2Rldmxpc3QuaDogJChzcmMpL3BjaS5pZHMgJChvYmopL2dlbi1kZXZsaXN0CisJCQkoIGNkICQob2JqKTsgLi9nZW4tZGV2bGlzdCApIDwgJDwKKworCVRoZSB0YXJnZXQgJChvYmopL2Rldmxpc3QuaCB3aWxsIG5vdCBiZSBidWlsdCBiZWZvcmUKKwkkKG9iaikvZ2VuLWRldmxpc3QgaXMgdXBkYXRlZC4gTm90ZSB0aGF0IHJlZmVyZW5jZXMgdG8KKwl0aGUgaG9zdCBwcm9ncmFtcyBpbiBzcGVjaWFsIHJ1bGVzIG11c3QgYmUgcHJlZml4ZWQgd2l0aCAkKG9iaikuCisKKwkoMikgVXNlICQoYWx3YXlzKQorCVdoZW4gdGhlcmUgaXMgbm8gc3VpdGFibGUgc3BlY2lhbCBydWxlLCBhbmQgdGhlIGhvc3QgcHJvZ3JhbQorCXNoYWxsIGJlIGJ1aWx0IHdoZW4gYSBtYWtlZmlsZSBpcyBlbnRlcmVkLCB0aGUgJChhbHdheXMpCisJdmFyaWFibGUgc2hhbGwgYmUgdXNlZC4KKworCUV4YW1wbGU6CisJCSNzY3JpcHRzL2x4ZGlhbG9nL01ha2VmaWxlCisJCWhvc3Rwcm9ncy15ICAgOj0gbHhkaWFsb2cKKwkJYWx3YXlzICAgICAgICA6PSAkKGhvc3Rwcm9ncy15KQorCisJVGhpcyB3aWxsIHRlbGwga2J1aWxkIHRvIGJ1aWxkIGx4ZGlhbG9nIGV2ZW4gaWYgbm90IHJlZmVyZW5jZWQgaW4KKwlhbnkgcnVsZS4KKworLS0tIDQuNiBVc2luZyBob3N0cHJvZ3MtJChDT05GSUdfRk9PKQorCisJQSB0eXBpY2FsIHBhdHRlcm4gaW4gYSBLYnVpbGQgZmlsZSBsb29rcyBsaWtlIHRoaXM6CisKKwlFeGFtcGxlOgorCQkjc2NyaXB0cy9NYWtlZmlsZQorCQlob3N0cHJvZ3MtJChDT05GSUdfS0FMTFNZTVMpICs9IGthbGxzeW1zCisKKwlLYnVpbGQga25vd3MgYWJvdXQgYm90aCAneScgZm9yIGJ1aWx0LWluIGFuZCAnbScgZm9yIG1vZHVsZS4KKwlTbyBpZiBhIGNvbmZpZyBzeW1ib2wgZXZhbHVhdGVzIHRvICdtJywga2J1aWxkIHdpbGwgc3RpbGwgYnVpbGQKKwl0aGUgYmluYXJ5LiBJbiBvdGhlciB3b3JkcywgS2J1aWxkIGhhbmRsZXMgaG9zdHByb2dzLW0gZXhhY3RseQorCWxpa2UgaG9zdHByb2dzLXkuIEJ1dCBvbmx5IGhvc3Rwcm9ncy15IGlzIHJlY29tbWVuZGVkIHRvIGJlIHVzZWQKKwl3aGVuIG5vIENPTkZJRyBzeW1ib2xzIGFyZSBpbnZvbHZlZC4KKworPT09IDUgS2J1aWxkIGNsZWFuIGluZnJhc3RydWN0dXJlCisKKyJtYWtlIGNsZWFuIiBkZWxldGVzIG1vc3QgZ2VuZXJhdGVkIGZpbGVzIGluIHRoZSBvYmogdHJlZSB3aGVyZSB0aGUga2VybmVsCitpcyBjb21waWxlZC4gVGhpcyBpbmNsdWRlcyBnZW5lcmF0ZWQgZmlsZXMgc3VjaCBhcyBob3N0IHByb2dyYW1zLgorS2J1aWxkIGtub3dzIHRhcmdldHMgbGlzdGVkIGluICQoaG9zdHByb2dzLXkpLCAkKGhvc3Rwcm9ncy1tKSwgJChhbHdheXMpLAorJChleHRyYS15KSBhbmQgJCh0YXJnZXRzKS4gVGhleSBhcmUgYWxsIGRlbGV0ZWQgZHVyaW5nICJtYWtlIGNsZWFuIi4KK0ZpbGVzIG1hdGNoaW5nIHRoZSBwYXR0ZXJucyAiKi5bb2FzXSIsICIqLmtvIiwgcGx1cyBzb21lIGFkZGl0aW9uYWwgZmlsZXMKK2dlbmVyYXRlZCBieSBrYnVpbGQgYXJlIGRlbGV0ZWQgYWxsIG92ZXIgdGhlIGtlcm5lbCBzcmMgdHJlZSB3aGVuCisibWFrZSBjbGVhbiIgaXMgZXhlY3V0ZWQuCisKK0FkZGl0aW9uYWwgZmlsZXMgY2FuIGJlIHNwZWNpZmllZCBpbiBrYnVpbGQgbWFrZWZpbGVzIGJ5IHVzZSBvZiAkKGNsZWFuLWZpbGVzKS4KKworCUV4YW1wbGU6CisJCSNsaWIvTWFrZWZpbGUKKwkJY2xlYW4tZmlsZXMgOj0gY3JjMzJ0YWJsZS5oCisKK1doZW4gZXhlY3V0aW5nICJtYWtlIGNsZWFuIiwgdGhlIGZpbGUgImNyYzMydGFibGUuaCIgd2lsbCBiZSBkZWxldGVkLgorS2J1aWxkIHdpbGwgYXNzdW1lIGZpbGVzIHRvIGJlIGluIHRoZSBzYW1lIHJlbGF0aXZlIGRpcmVjdG9yeSBhcyB0aGUKK01ha2VmaWxlLCBleGNlcHQgaWYgcHJlZml4ZWQgd2l0aCAkKG9ianRyZWUpLgorCitUbyBkZWxldGUgYSBkaXJlY3RvcnkgaGllcmFyY2h5IHVzZToKKworCUV4YW1wbGU6CisJCSNzY3JpcHRzL3BhY2thZ2UvTWFrZWZpbGUKKwkJY2xlYW4tZGlycyA6PSAkKG9ianRyZWUpL2RlYmlhbi8KKworVGhpcyB3aWxsIGRlbGV0ZSB0aGUgZGlyZWN0b3J5IGRlYmlhbiBpbiB0aGUgdG9wbGV2ZWwgZGlyZWN0b3J5LCBpbmNsdWRpbmcgYWxsCitzdWJkaXJlY3Rvcmllcy4KKworVG8gZXhjbHVkZSBjZXJ0YWluIGZpbGVzIGZyb20gbWFrZSBjbGVhbiwgdXNlIHRoZSAkKG5vLWNsZWFuLWZpbGVzKSB2YXJpYWJsZS4KK1RoaXMgaXMgb25seSBhIHNwZWNpYWwgY2FzZSB1c2VkIGluIHRoZSB0b3AgbGV2ZWwgS2J1aWxkIGZpbGU6CisKKwlFeGFtcGxlOgorCQkjS2J1aWxkCisJCW5vLWNsZWFuLWZpbGVzIDo9ICQoYm91bmRzLWZpbGUpICQob2Zmc2V0cy1maWxlKQorCitVc3VhbGx5IGtidWlsZCBkZXNjZW5kcyBkb3duIGluIHN1YmRpcmVjdG9yaWVzIGR1ZSB0byAib2JqLSogOj0gZGlyLyIsCitidXQgaW4gdGhlIGFyY2hpdGVjdHVyZSBtYWtlZmlsZXMgd2hlcmUgdGhlIGtidWlsZCBpbmZyYXN0cnVjdHVyZQoraXMgbm90IHN1ZmZpY2llbnQgdGhpcyBzb21ldGltZXMgbmVlZHMgdG8gYmUgZXhwbGljaXQuCisKKwlFeGFtcGxlOgorCQkjYXJjaC94ODYvYm9vdC9NYWtlZmlsZQorCQlzdWJkaXItIDo9IGNvbXByZXNzZWQvCisKK1RoZSBhYm92ZSBhc3NpZ25tZW50IGluc3RydWN0cyBrYnVpbGQgdG8gZGVzY2VuZCBkb3duIGluIHRoZQorZGlyZWN0b3J5IGNvbXByZXNzZWQvIHdoZW4gIm1ha2UgY2xlYW4iIGlzIGV4ZWN1dGVkLgorCitUbyBzdXBwb3J0IHRoZSBjbGVhbiBpbmZyYXN0cnVjdHVyZSBpbiB0aGUgTWFrZWZpbGVzIHRoYXQgYnVpbGQgdGhlCitmaW5hbCBib290aW1hZ2UgdGhlcmUgaXMgYW4gb3B0aW9uYWwgdGFyZ2V0IG5hbWVkIGFyY2hjbGVhbjoKKworCUV4YW1wbGU6CisJCSNhcmNoL3g4Ni9NYWtlZmlsZQorCQlhcmNoY2xlYW46CisJCQkkKFEpJChNQUtFKSAkKGNsZWFuKT1hcmNoL3g4Ni9ib290CisKK1doZW4gIm1ha2UgY2xlYW4iIGlzIGV4ZWN1dGVkLCBtYWtlIHdpbGwgZGVzY2VuZCBkb3duIGluIGFyY2gveDg2L2Jvb3QsCithbmQgY2xlYW4gYXMgdXN1YWwuIFRoZSBNYWtlZmlsZSBsb2NhdGVkIGluIGFyY2gveDg2L2Jvb3QvIG1heSB1c2UKK3RoZSBzdWJkaXItIHRyaWNrIHRvIGRlc2NlbmQgZnVydGhlciBkb3duLgorCitOb3RlIDE6IGFyY2gvJChBUkNIKS9NYWtlZmlsZSBjYW5ub3QgdXNlICJzdWJkaXItIiwgYmVjYXVzZSB0aGF0IGZpbGUgaXMKK2luY2x1ZGVkIGluIHRoZSB0b3AgbGV2ZWwgbWFrZWZpbGUsIGFuZCB0aGUga2J1aWxkIGluZnJhc3RydWN0dXJlCitpcyBub3Qgb3BlcmF0aW9uYWwgYXQgdGhhdCBwb2ludC4KKworTm90ZSAyOiBBbGwgZGlyZWN0b3JpZXMgbGlzdGVkIGluIGNvcmUteSwgbGlicy15LCBkcml2ZXJzLXkgYW5kIG5ldC15IHdpbGwKK2JlIHZpc2l0ZWQgZHVyaW5nICJtYWtlIGNsZWFuIi4KKworPT09IDYgQXJjaGl0ZWN0dXJlIE1ha2VmaWxlcworCitUaGUgdG9wIGxldmVsIE1ha2VmaWxlIHNldHMgdXAgdGhlIGVudmlyb25tZW50IGFuZCBkb2VzIHRoZSBwcmVwYXJhdGlvbiwKK2JlZm9yZSBzdGFydGluZyB0byBkZXNjZW5kIGRvd24gaW4gdGhlIGluZGl2aWR1YWwgZGlyZWN0b3JpZXMuCitUaGUgdG9wIGxldmVsIG1ha2VmaWxlIGNvbnRhaW5zIHRoZSBnZW5lcmljIHBhcnQsIHdoZXJlYXMKK2FyY2gvJChBUkNIKS9NYWtlZmlsZSBjb250YWlucyB3aGF0IGlzIHJlcXVpcmVkIHRvIHNldCB1cCBrYnVpbGQKK2ZvciBzYWlkIGFyY2hpdGVjdHVyZS4KK1RvIGRvIHNvLCBhcmNoLyQoQVJDSCkvTWFrZWZpbGUgc2V0cyB1cCBhIG51bWJlciBvZiB2YXJpYWJsZXMgYW5kIGRlZmluZXMKK2EgZmV3IHRhcmdldHMuCisKK1doZW4ga2J1aWxkIGV4ZWN1dGVzLCB0aGUgZm9sbG93aW5nIHN0ZXBzIGFyZSBmb2xsb3dlZCAocm91Z2hseSk6CisxKSBDb25maWd1cmF0aW9uIG9mIHRoZSBrZXJuZWwgPT4gcHJvZHVjZSAuY29uZmlnCisyKSBTdG9yZSBrZXJuZWwgdmVyc2lvbiBpbiBpbmNsdWRlL2xpbnV4L3ZlcnNpb24uaAorMykgVXBkYXRpbmcgYWxsIG90aGVyIHByZXJlcXVpc2l0ZXMgdG8gdGhlIHRhcmdldCBwcmVwYXJlOgorICAgLSBBZGRpdGlvbmFsIHByZXJlcXVpc2l0ZXMgYXJlIHNwZWNpZmllZCBpbiBhcmNoLyQoQVJDSCkvTWFrZWZpbGUKKzQpIFJlY3Vyc2l2ZWx5IGRlc2NlbmQgZG93biBpbiBhbGwgZGlyZWN0b3JpZXMgbGlzdGVkIGluCisgICBpbml0LSogY29yZSogZHJpdmVycy0qIG5ldC0qIGxpYnMtKiBhbmQgYnVpbGQgYWxsIHRhcmdldHMuCisgICAtIFRoZSB2YWx1ZXMgb2YgdGhlIGFib3ZlIHZhcmlhYmxlcyBhcmUgZXhwYW5kZWQgaW4gYXJjaC8kKEFSQ0gpL01ha2VmaWxlLgorNSkgQWxsIG9iamVjdCBmaWxlcyBhcmUgdGhlbiBsaW5rZWQgYW5kIHRoZSByZXN1bHRpbmcgZmlsZSB2bWxpbnV4IGlzCisgICBsb2NhdGVkIGF0IHRoZSByb290IG9mIHRoZSBvYmogdHJlZS4KKyAgIFRoZSB2ZXJ5IGZpcnN0IG9iamVjdHMgbGlua2VkIGFyZSBsaXN0ZWQgaW4gaGVhZC15LCBhc3NpZ25lZCBieQorICAgYXJjaC8kKEFSQ0gpL01ha2VmaWxlLgorNikgRmluYWxseSwgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBwYXJ0IGRvZXMgYW55IHJlcXVpcmVkIHBvc3QgcHJvY2Vzc2luZworICAgYW5kIGJ1aWxkcyB0aGUgZmluYWwgYm9vdGltYWdlLgorICAgLSBUaGlzIGluY2x1ZGVzIGJ1aWxkaW5nIGJvb3QgcmVjb3JkcworICAgLSBQcmVwYXJpbmcgaW5pdHJkIGltYWdlcyBhbmQgdGhlIGxpa2UKKworCistLS0gNi4xIFNldCB2YXJpYWJsZXMgdG8gdHdlYWsgdGhlIGJ1aWxkIHRvIHRoZSBhcmNoaXRlY3R1cmUKKworICAgIExERkxBR1MJCUdlbmVyaWMgJChMRCkgb3B0aW9ucworCisJRmxhZ3MgdXNlZCBmb3IgYWxsIGludm9jYXRpb25zIG9mIHRoZSBsaW5rZXIuCisJT2Z0ZW4gc3BlY2lmeWluZyB0aGUgZW11bGF0aW9uIGlzIHN1ZmZpY2llbnQuCisKKwlFeGFtcGxlOgorCQkjYXJjaC9zMzkwL01ha2VmaWxlCisJCUxERkxBR1MgICAgICAgICA6PSAtbSBlbGZfczM5MAorCU5vdGU6IGxkZmxhZ3MteSBjYW4gYmUgdXNlZCB0byBmdXJ0aGVyIGN1c3RvbWlzZQorCXRoZSBmbGFncyB1c2VkLiBTZWUgY2hhcHRlciAzLjcuCisKKyAgICBMREZMQUdTX01PRFVMRQlPcHRpb25zIGZvciAkKExEKSB3aGVuIGxpbmtpbmcgbW9kdWxlcworCisJTERGTEFHU19NT0RVTEUgaXMgdXNlZCB0byBzZXQgc3BlY2lmaWMgZmxhZ3MgZm9yICQoTEQpIHdoZW4KKwlsaW5raW5nIHRoZSAua28gZmlsZXMgdXNlZCBmb3IgbW9kdWxlcy4KKwlEZWZhdWx0IGlzICItciIsIGZvciByZWxvY2F0YWJsZSBvdXRwdXQuCisKKyAgICBMREZMQUdTX3ZtbGludXgJT3B0aW9ucyBmb3IgJChMRCkgd2hlbiBsaW5raW5nIHZtbGludXgKKworCUxERkxBR1Nfdm1saW51eCBpcyB1c2VkIHRvIHNwZWNpZnkgYWRkaXRpb25hbCBmbGFncyB0byBwYXNzIHRvCisJdGhlIGxpbmtlciB3aGVuIGxpbmtpbmcgdGhlIGZpbmFsIHZtbGludXggaW1hZ2UuCisJTERGTEFHU192bWxpbnV4IHVzZXMgdGhlIExERkxBR1NfJEAgc3VwcG9ydC4KKworCUV4YW1wbGU6CisJCSNhcmNoL3g4Ni9NYWtlZmlsZQorCQlMREZMQUdTX3ZtbGludXggOj0gLWUgc3RleHQKKworICAgIE9CSkNPUFlGTEFHUwlvYmpjb3B5IGZsYWdzCisKKwlXaGVuICQoY2FsbCBpZl9jaGFuZ2VkLG9iamNvcHkpIGlzIHVzZWQgdG8gdHJhbnNsYXRlIGEgLm8gZmlsZSwKKwl0aGUgZmxhZ3Mgc3BlY2lmaWVkIGluIE9CSkNPUFlGTEFHUyB3aWxsIGJlIHVzZWQuCisJJChjYWxsIGlmX2NoYW5nZWQsb2JqY29weSkgaXMgb2Z0ZW4gdXNlZCB0byBnZW5lcmF0ZSByYXcgYmluYXJpZXMgb24KKwl2bWxpbnV4LgorCisJRXhhbXBsZToKKwkJI2FyY2gvczM5MC9NYWtlZmlsZQorCQlPQkpDT1BZRkxBR1MgOj0gLU8gYmluYXJ5CisKKwkJI2FyY2gvczM5MC9ib290L01ha2VmaWxlCisJCSQob2JqKS9pbWFnZTogdm1saW51eCBGT1JDRQorCQkJJChjYWxsIGlmX2NoYW5nZWQsb2JqY29weSkKKworCUluIHRoaXMgZXhhbXBsZSwgdGhlIGJpbmFyeSAkKG9iaikvaW1hZ2UgaXMgYSBiaW5hcnkgdmVyc2lvbiBvZgorCXZtbGludXguIFRoZSB1c2FnZSBvZiAkKGNhbGwgaWZfY2hhbmdlZCx4eHgpIHdpbGwgYmUgZGVzY3JpYmVkIGxhdGVyLgorCisgICAgS0JVSUxEX0FGTEFHUwkJJChBUykgYXNzZW1ibGVyIGZsYWdzCisKKwlEZWZhdWx0IHZhbHVlIC0gc2VlIHRvcCBsZXZlbCBNYWtlZmlsZQorCUFwcGVuZCBvciBtb2RpZnkgYXMgcmVxdWlyZWQgcGVyIGFyY2hpdGVjdHVyZS4KKworCUV4YW1wbGU6CisJCSNhcmNoL3NwYXJjNjQvTWFrZWZpbGUKKwkJS0JVSUxEX0FGTEFHUyArPSAtbTY0IC1tY3B1PXVsdHJhc3BhcmMKKworICAgIEtCVUlMRF9DRkxBR1MJCSQoQ0MpIGNvbXBpbGVyIGZsYWdzCisKKwlEZWZhdWx0IHZhbHVlIC0gc2VlIHRvcCBsZXZlbCBNYWtlZmlsZQorCUFwcGVuZCBvciBtb2RpZnkgYXMgcmVxdWlyZWQgcGVyIGFyY2hpdGVjdHVyZS4KKworCU9mdGVuLCB0aGUgS0JVSUxEX0NGTEFHUyB2YXJpYWJsZSBkZXBlbmRzIG9uIHRoZSBjb25maWd1cmF0aW9uLgorCisJRXhhbXBsZToKKwkJI2FyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9NYWtlZmlsZQorCQljZmxhZ3MtJChDT05GSUdfWDg2XzMyKSA6PSAtbWFyY2g9aTM4NgorCQljZmxhZ3MtJChDT05GSUdfWDg2XzY0KSA6PSAtbWNtb2RlbD1zbWFsbAorCQlLQlVJTERfQ0ZMQUdTICs9ICQoY2ZsYWdzLXkpCisKKwlNYW55IGFyY2ggTWFrZWZpbGVzIGR5bmFtaWNhbGx5IHJ1biB0aGUgdGFyZ2V0IEMgY29tcGlsZXIgdG8KKwlwcm9iZSBzdXBwb3J0ZWQgb3B0aW9uczoKKworCQkjYXJjaC94ODYvTWFrZWZpbGUKKworCQkuLi4KKwkJY2ZsYWdzLSQoQ09ORklHX01QRU5USVVNSUkpICAgICArPSAkKGNhbGwgY2Mtb3B0aW9uLFwKKwkJCQkJCS1tYXJjaD1wZW50aXVtMiwtbWFyY2g9aTY4NikKKwkJLi4uCisJCSMgRGlzYWJsZSB1bml0LWF0LWEtdGltZSBtb2RlIC4uLgorCQlLQlVJTERfQ0ZMQUdTICs9ICQoY2FsbCBjYy1vcHRpb24sLWZuby11bml0LWF0LWEtdGltZSkKKwkJLi4uCisKKworCVRoZSBmaXJzdCBleGFtcGxlIHV0aWxpc2VzIHRoZSB0cmljayB0aGF0IGEgY29uZmlnIG9wdGlvbiBleHBhbmRzCisJdG8gJ3knIHdoZW4gc2VsZWN0ZWQuCisKKyAgICBLQlVJTERfQUZMQUdTX0tFUk5FTAkkKEFTKSBvcHRpb25zIHNwZWNpZmljIGZvciBidWlsdC1pbgorCisJJChLQlVJTERfQUZMQUdTX0tFUk5FTCkgY29udGFpbnMgZXh0cmEgQyBjb21waWxlciBmbGFncyB1c2VkIHRvIGNvbXBpbGUKKwlyZXNpZGVudCBrZXJuZWwgY29kZS4KKworICAgIEtCVUlMRF9BRkxBR1NfTU9EVUxFICAgT3B0aW9ucyBmb3IgJChBUykgd2hlbiBidWlsZGluZyBtb2R1bGVzCisKKwkkKEtCVUlMRF9BRkxBR1NfTU9EVUxFKSBpcyB1c2VkIHRvIGFkZCBhcmNoLXNwZWNpZmljIG9wdGlvbnMgdGhhdAorCWFyZSB1c2VkIGZvciAkKEFTKS4KKwlGcm9tIGNvbW1hbmRsaW5lIEFGTEFHU19NT0RVTEUgc2hhbGwgYmUgdXNlZCAoc2VlIGtidWlsZC50eHQpLgorCisgICAgS0JVSUxEX0NGTEFHU19LRVJORUwJJChDQykgb3B0aW9ucyBzcGVjaWZpYyBmb3IgYnVpbHQtaW4KKworCSQoS0JVSUxEX0NGTEFHU19LRVJORUwpIGNvbnRhaW5zIGV4dHJhIEMgY29tcGlsZXIgZmxhZ3MgdXNlZCB0byBjb21waWxlCisJcmVzaWRlbnQga2VybmVsIGNvZGUuCisKKyAgICBLQlVJTERfQ0ZMQUdTX01PRFVMRSAgIE9wdGlvbnMgZm9yICQoQ0MpIHdoZW4gYnVpbGRpbmcgbW9kdWxlcworCisJJChLQlVJTERfQ0ZMQUdTX01PRFVMRSkgaXMgdXNlZCB0byBhZGQgYXJjaC1zcGVjaWZpYyBvcHRpb25zIHRoYXQKKwlhcmUgdXNlZCBmb3IgJChDQykuCisJRnJvbSBjb21tYW5kbGluZSBDRkxBR1NfTU9EVUxFIHNoYWxsIGJlIHVzZWQgKHNlZSBrYnVpbGQudHh0KS4KKworICAgIEtCVUlMRF9MREZMQUdTX01PRFVMRSAgIE9wdGlvbnMgZm9yICQoTEQpIHdoZW4gbGlua2luZyBtb2R1bGVzCisKKwkkKEtCVUlMRF9MREZMQUdTX01PRFVMRSkgaXMgdXNlZCB0byBhZGQgYXJjaC1zcGVjaWZpYyBvcHRpb25zCisJdXNlZCB3aGVuIGxpbmtpbmcgbW9kdWxlcy4gVGhpcyBpcyBvZnRlbiBhIGxpbmtlciBzY3JpcHQuCisJRnJvbSBjb21tYW5kbGluZSBMREZMQUdTX01PRFVMRSBzaGFsbCBiZSB1c2VkIChzZWUga2J1aWxkLnR4dCkuCisKKyAgICBLQlVJTERfQVJGTEFHUyAgIE9wdGlvbnMgZm9yICQoQVIpIHdoZW4gY3JlYXRpbmcgYXJjaGl2ZXMKKworCSQoS0JVSUxEX0FSRkxBR1MpIHNldCBieSB0aGUgdG9wIGxldmVsIE1ha2VmaWxlIHRvICJEIiAoZGV0ZXJtaW5pc3RpYworCW1vZGUpIGlmIHRoaXMgb3B0aW9uIGlzIHN1cHBvcnRlZCBieSAkKEFSKS4KKworICAgIEFSQ0hfQ1BQRkxBR1MsIEFSQ0hfQUZMQUdTLCBBUkNIX0NGTEFHUyAgIE92ZXJyaWRlcyB0aGUga2J1aWxkIGRlZmF1bHRzCisKKwlUaGVzZSB2YXJpYWJsZXMgYXJlIGFwcGVuZGVkIHRvIHRoZSBLQlVJTERfQ1BQRkxBR1MsCisJS0JVSUxEX0FGTEFHUywgYW5kIEtCVUlMRF9DRkxBR1MsIHJlc3BlY3RpdmVseSwgYWZ0ZXIgdGhlCisJdG9wLWxldmVsIE1ha2VmaWxlIGhhcyBzZXQgYW55IG90aGVyIGZsYWdzLiBUaGlzIHByb3ZpZGVzIGEKKwltZWFucyBmb3IgYW4gYXJjaGl0ZWN0dXJlIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0cy4KKworCistLS0gNi4yIEFkZCBwcmVyZXF1aXNpdGVzIHRvIGFyY2hoZWFkZXJzOgorCisJVGhlIGFyY2hoZWFkZXJzOiBydWxlIGlzIHVzZWQgdG8gZ2VuZXJhdGUgaGVhZGVyIGZpbGVzIHRoYXQKKwltYXkgYmUgaW5zdGFsbGVkIGludG8gdXNlciBzcGFjZSBieSAibWFrZSBoZWFkZXJfaW5zdGFsbCIgb3IKKwkibWFrZSBoZWFkZXJzX2luc3RhbGxfYWxsIi4gIEluIG9yZGVyIHRvIHN1cHBvcnQKKwkibWFrZSBoZWFkZXJzX2luc3RhbGxfYWxsIiwgdGhpcyB0YXJnZXQgaGFzIHRvIGJlIGFibGUgdG8gcnVuCisJb24gYW4gdW5jb25maWd1cmVkIHRyZWUsIG9yIGEgdHJlZSBjb25maWd1cmVkIGZvciBhbm90aGVyCisJYXJjaGl0ZWN0dXJlLgorCisJSXQgaXMgcnVuIGJlZm9yZSAibWFrZSBhcmNocHJlcGFyZSIgd2hlbiBydW4gb24gdGhlCisJYXJjaGl0ZWN0dXJlIGl0c2VsZi4KKworCistLS0gNi4zIEFkZCBwcmVyZXF1aXNpdGVzIHRvIGFyY2hwcmVwYXJlOgorCisJVGhlIGFyY2hwcmVwYXJlOiBydWxlIGlzIHVzZWQgdG8gbGlzdCBwcmVyZXF1aXNpdGVzIHRoYXQgbmVlZCB0byBiZQorCWJ1aWx0IGJlZm9yZSBzdGFydGluZyB0byBkZXNjZW5kIGRvd24gaW4gdGhlIHN1YmRpcmVjdG9yaWVzLgorCVRoaXMgaXMgdXN1YWxseSB1c2VkIGZvciBoZWFkZXIgZmlsZXMgY29udGFpbmluZyBhc3NlbWJsZXIgY29uc3RhbnRzLgorCisJCUV4YW1wbGU6CisJCSNhcmNoL2FybS9NYWtlZmlsZQorCQlhcmNocHJlcGFyZTogbWFrZXRvb2xzCisKKwlJbiB0aGlzIGV4YW1wbGUsIHRoZSBmaWxlIHRhcmdldCBtYWtldG9vbHMgd2lsbCBiZSBwcm9jZXNzZWQKKwliZWZvcmUgZGVzY2VuZGluZyBkb3duIGluIHRoZSBzdWJkaXJlY3Rvcmllcy4KKwlTZWUgYWxzbyBjaGFwdGVyIFhYWC1UT0RPIHRoYXQgZGVzY3JpYmUgaG93IGtidWlsZCBzdXBwb3J0cworCWdlbmVyYXRpbmcgb2Zmc2V0IGhlYWRlciBmaWxlcy4KKworCistLS0gNi40IExpc3QgZGlyZWN0b3JpZXMgdG8gdmlzaXQgd2hlbiBkZXNjZW5kaW5nCisKKwlBbiBhcmNoIE1ha2VmaWxlIGNvb3BlcmF0ZXMgd2l0aCB0aGUgdG9wIE1ha2VmaWxlIHRvIGRlZmluZSB2YXJpYWJsZXMKKwl3aGljaCBzcGVjaWZ5IGhvdyB0byBidWlsZCB0aGUgdm1saW51eCBmaWxlLiAgTm90ZSB0aGF0IHRoZXJlIGlzIG5vCisJY29ycmVzcG9uZGluZyBhcmNoLXNwZWNpZmljIHNlY3Rpb24gZm9yIG1vZHVsZXM7IHRoZSBtb2R1bGUtYnVpbGRpbmcKKwltYWNoaW5lcnkgaXMgYWxsIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudC4KKworCisgICAgaGVhZC15LCBpbml0LXksIGNvcmUteSwgbGlicy15LCBkcml2ZXJzLXksIG5ldC15CisKKwkkKGhlYWQteSkgbGlzdHMgb2JqZWN0cyB0byBiZSBsaW5rZWQgZmlyc3QgaW4gdm1saW51eC4KKwkkKGxpYnMteSkgbGlzdHMgZGlyZWN0b3JpZXMgd2hlcmUgYSBsaWIuYSBhcmNoaXZlIGNhbiBiZSBsb2NhdGVkLgorCVRoZSByZXN0IGxpc3QgZGlyZWN0b3JpZXMgd2hlcmUgYSBidWlsdC1pbi5vIG9iamVjdCBmaWxlIGNhbiBiZQorCWxvY2F0ZWQuCisKKwkkKGluaXQteSkgb2JqZWN0cyB3aWxsIGJlIGxvY2F0ZWQgYWZ0ZXIgJChoZWFkLXkpLgorCVRoZW4gdGhlIHJlc3QgZm9sbG93cyBpbiB0aGlzIG9yZGVyOgorCSQoY29yZS15KSwgJChsaWJzLXkpLCAkKGRyaXZlcnMteSkgYW5kICQobmV0LXkpLgorCisJVGhlIHRvcCBsZXZlbCBNYWtlZmlsZSBkZWZpbmVzIHZhbHVlcyBmb3IgYWxsIGdlbmVyaWMgZGlyZWN0b3JpZXMsCisJYW5kIGFyY2gvJChBUkNIKS9NYWtlZmlsZSBvbmx5IGFkZHMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGRpcmVjdG9yaWVzLgorCisJRXhhbXBsZToKKwkJI2FyY2gvc3BhcmM2NC9NYWtlZmlsZQorCQljb3JlLXkgKz0gYXJjaC9zcGFyYzY0L2tlcm5lbC8KKwkJbGlicy15ICs9IGFyY2gvc3BhcmM2NC9wcm9tLyBhcmNoL3NwYXJjNjQvbGliLworCQlkcml2ZXJzLSQoQ09ORklHX09QUk9GSUxFKSAgKz0gYXJjaC9zcGFyYzY0L29wcm9maWxlLworCisKKy0tLSA2LjUgQXJjaGl0ZWN0dXJlLXNwZWNpZmljIGJvb3QgaW1hZ2VzCisKKwlBbiBhcmNoIE1ha2VmaWxlIHNwZWNpZmllcyBnb2FscyB0aGF0IHRha2UgdGhlIHZtbGludXggZmlsZSwgY29tcHJlc3MKKwlpdCwgd3JhcCBpdCBpbiBib290c3RyYXBwaW5nIGNvZGUsIGFuZCBjb3B5IHRoZSByZXN1bHRpbmcgZmlsZXMKKwlzb21ld2hlcmUuIFRoaXMgaW5jbHVkZXMgdmFyaW91cyBraW5kcyBvZiBpbnN0YWxsYXRpb24gY29tbWFuZHMuCisJVGhlIGFjdHVhbCBnb2FscyBhcmUgbm90IHN0YW5kYXJkaXplZCBhY3Jvc3MgYXJjaGl0ZWN0dXJlcy4KKworCUl0IGlzIGNvbW1vbiB0byBsb2NhdGUgYW55IGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBpbiBhIGJvb3QvCisJZGlyZWN0b3J5IGJlbG93IGFyY2gvJChBUkNIKS8uCisKKwlLYnVpbGQgZG9lcyBub3QgcHJvdmlkZSBhbnkgc21hcnQgd2F5IHRvIHN1cHBvcnQgYnVpbGRpbmcgYQorCXRhcmdldCBzcGVjaWZpZWQgaW4gYm9vdC8uIFRoZXJlZm9yZSBhcmNoLyQoQVJDSCkvTWFrZWZpbGUgc2hhbGwKKwljYWxsIG1ha2UgbWFudWFsbHkgdG8gYnVpbGQgYSB0YXJnZXQgaW4gYm9vdC8uCisKKwlUaGUgcmVjb21tZW5kZWQgYXBwcm9hY2ggaXMgdG8gaW5jbHVkZSBzaG9ydGN1dHMgaW4KKwlhcmNoLyQoQVJDSCkvTWFrZWZpbGUsIGFuZCB1c2UgdGhlIGZ1bGwgcGF0aCB3aGVuIGNhbGxpbmcgZG93bgorCWludG8gdGhlIGFyY2gvJChBUkNIKS9ib290L01ha2VmaWxlLgorCisJRXhhbXBsZToKKwkJI2FyY2gveDg2L01ha2VmaWxlCisJCWJvb3QgOj0gYXJjaC94ODYvYm9vdAorCQliekltYWdlOiB2bWxpbnV4CisJCQkkKFEpJChNQUtFKSAkKGJ1aWxkKT0kKGJvb3QpICQoYm9vdCkvJEAKKworCSIkKFEpJChNQUtFKSAkKGJ1aWxkKT08ZGlyPiIgaXMgdGhlIHJlY29tbWVuZGVkIHdheSB0byBpbnZva2UKKwltYWtlIGluIGEgc3ViZGlyZWN0b3J5LgorCisJVGhlcmUgYXJlIG5vIHJ1bGVzIGZvciBuYW1pbmcgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHRhcmdldHMsCisJYnV0IGV4ZWN1dGluZyAibWFrZSBoZWxwIiB3aWxsIGxpc3QgYWxsIHJlbGV2YW50IHRhcmdldHMuCisJVG8gc3VwcG9ydCB0aGlzLCAkKGFyY2hoZWxwKSBtdXN0IGJlIGRlZmluZWQuCisKKwlFeGFtcGxlOgorCQkjYXJjaC94ODYvTWFrZWZpbGUKKwkJZGVmaW5lIGFyY2hoZWxwCisJCSAgZWNobyAgJyogYnpJbWFnZSAgICAgIC0gSW1hZ2UgKGFyY2gvJChBUkNIKS9ib290L2J6SW1hZ2UpJworCQllbmRpZgorCisJV2hlbiBtYWtlIGlzIGV4ZWN1dGVkIHdpdGhvdXQgYXJndW1lbnRzLCB0aGUgZmlyc3QgZ29hbCBlbmNvdW50ZXJlZAorCXdpbGwgYmUgYnVpbHQuIEluIHRoZSB0b3AgbGV2ZWwgTWFrZWZpbGUgdGhlIGZpcnN0IGdvYWwgcHJlc2VudAorCWlzIGFsbDouCisJQW4gYXJjaGl0ZWN0dXJlIHNoYWxsIGFsd2F5cywgcGVyIGRlZmF1bHQsIGJ1aWxkIGEgYm9vdGFibGUgaW1hZ2UuCisJSW4gIm1ha2UgaGVscCIsIHRoZSBkZWZhdWx0IGdvYWwgaXMgaGlnaGxpZ2h0ZWQgd2l0aCBhICcqJy4KKwlBZGQgYSBuZXcgcHJlcmVxdWlzaXRlIHRvIGFsbDogdG8gc2VsZWN0IGEgZGVmYXVsdCBnb2FsIGRpZmZlcmVudAorCWZyb20gdm1saW51eC4KKworCUV4YW1wbGU6CisJCSNhcmNoL3g4Ni9NYWtlZmlsZQorCQlhbGw6IGJ6SW1hZ2UKKworCVdoZW4gIm1ha2UiIGlzIGV4ZWN1dGVkIHdpdGhvdXQgYXJndW1lbnRzLCBiekltYWdlIHdpbGwgYmUgYnVpbHQuCisKKy0tLSA2LjYgQnVpbGRpbmcgbm9uLWtidWlsZCB0YXJnZXRzCisKKyAgICBleHRyYS15CisKKwlleHRyYS15IHNwZWNpZmllcyBhZGRpdGlvbmFsIHRhcmdldHMgY3JlYXRlZCBpbiB0aGUgY3VycmVudAorCWRpcmVjdG9yeSwgaW4gYWRkaXRpb24gdG8gYW55IHRhcmdldHMgc3BlY2lmaWVkIGJ5IG9iai0qLgorCisJTGlzdGluZyBhbGwgdGFyZ2V0cyBpbiBleHRyYS15IGlzIHJlcXVpcmVkIGZvciB0d28gcHVycG9zZXM6CisJMSkgRW5hYmxlIGtidWlsZCB0byBjaGVjayBjaGFuZ2VzIGluIGNvbW1hbmQgbGluZXMKKwkgICAtIFdoZW4gJChjYWxsIGlmX2NoYW5nZWQseHh4KSBpcyB1c2VkCisJMikga2J1aWxkIGtub3dzIHdoYXQgZmlsZXMgdG8gZGVsZXRlIGR1cmluZyAibWFrZSBjbGVhbiIKKworCUV4YW1wbGU6CisJCSNhcmNoL3g4Ni9rZXJuZWwvTWFrZWZpbGUKKwkJZXh0cmEteSA6PSBoZWFkLm8gaW5pdF90YXNrLm8KKworCUluIHRoaXMgZXhhbXBsZSwgZXh0cmEteSBpcyB1c2VkIHRvIGxpc3Qgb2JqZWN0IGZpbGVzIHRoYXQKKwlzaGFsbCBiZSBidWlsdCwgYnV0IHNoYWxsIG5vdCBiZSBsaW5rZWQgYXMgcGFydCBvZiBidWlsdC1pbi5vLgorCisKKy0tLSA2LjcgQ29tbWFuZHMgdXNlZnVsIGZvciBidWlsZGluZyBhIGJvb3QgaW1hZ2UKKworCUtidWlsZCBwcm92aWRlcyBhIGZldyBtYWNyb3MgdGhhdCBhcmUgdXNlZnVsIHdoZW4gYnVpbGRpbmcgYQorCWJvb3QgaW1hZ2UuCisKKyAgICBpZl9jaGFuZ2VkCisKKwlpZl9jaGFuZ2VkIGlzIHRoZSBpbmZyYXN0cnVjdHVyZSB1c2VkIGZvciB0aGUgZm9sbG93aW5nIGNvbW1hbmRzLgorCisJVXNhZ2U6CisJCXRhcmdldDogc291cmNlKHMpIEZPUkNFCisJCQkkKGNhbGwgaWZfY2hhbmdlZCxsZC9vYmpjb3B5L2d6aXAvLi4uKQorCisJV2hlbiB0aGUgcnVsZSBpcyBldmFsdWF0ZWQsIGl0IGlzIGNoZWNrZWQgdG8gc2VlIGlmIGFueSBmaWxlcworCW5lZWQgYW4gdXBkYXRlLCBvciB0aGUgY29tbWFuZCBsaW5lIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0CisJaW52b2NhdGlvbi4gVGhlIGxhdHRlciB3aWxsIGZvcmNlIGEgcmVidWlsZCBpZiBhbnkgb3B0aW9ucworCXRvIHRoZSBleGVjdXRhYmxlIGhhdmUgY2hhbmdlZC4KKwlBbnkgdGFyZ2V0IHRoYXQgdXRpbGlzZXMgaWZfY2hhbmdlZCBtdXN0IGJlIGxpc3RlZCBpbiAkKHRhcmdldHMpLAorCW90aGVyd2lzZSB0aGUgY29tbWFuZCBsaW5lIGNoZWNrIHdpbGwgZmFpbCwgYW5kIHRoZSB0YXJnZXQgd2lsbAorCWFsd2F5cyBiZSBidWlsdC4KKwlBc3NpZ25tZW50cyB0byAkKHRhcmdldHMpIGFyZSB3aXRob3V0ICQob2JqKS8gcHJlZml4LgorCWlmX2NoYW5nZWQgbWF5IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBjdXN0b20gY29tbWFuZHMgYXMKKwlkZWZpbmVkIGluIDYuOCAiQ3VzdG9tIGtidWlsZCBjb21tYW5kcyIuCisKKwlOb3RlOiBJdCBpcyBhIHR5cGljYWwgbWlzdGFrZSB0byBmb3JnZXQgdGhlIEZPUkNFIHByZXJlcXVpc2l0ZS4KKwlBbm90aGVyIGNvbW1vbiBwaXRmYWxsIGlzIHRoYXQgd2hpdGVzcGFjZSBpcyBzb21ldGltZXMKKwlzaWduaWZpY2FudDsgZm9yIGluc3RhbmNlLCB0aGUgYmVsb3cgd2lsbCBmYWlsIChub3RlIHRoZSBleHRyYSBzcGFjZQorCWFmdGVyIHRoZSBjb21tYSk6CisJCXRhcmdldDogc291cmNlKHMpIEZPUkNFCisJI1dST05HISMJJChjYWxsIGlmX2NoYW5nZWQsIGxkL29iamNvcHkvZ3ppcC8uLi4pCisKKyAgICBsZAorCUxpbmsgdGFyZ2V0LiBPZnRlbiwgTERGTEFHU18kQCBpcyB1c2VkIHRvIHNldCBzcGVjaWZpYyBvcHRpb25zIHRvIGxkLgorCisgICAgb2JqY29weQorCUNvcHkgYmluYXJ5LiBVc2VzIE9CSkNPUFlGTEFHUyB1c3VhbGx5IHNwZWNpZmllZCBpbgorCWFyY2gvJChBUkNIKS9NYWtlZmlsZS4KKwlPQkpDT1BZRkxBR1NfJEAgbWF5IGJlIHVzZWQgdG8gc2V0IGFkZGl0aW9uYWwgb3B0aW9ucy4KKworICAgIGd6aXAKKwlDb21wcmVzcyB0YXJnZXQuIFVzZSBtYXhpbXVtIGNvbXByZXNzaW9uIHRvIGNvbXByZXNzIHRhcmdldC4KKworCUV4YW1wbGU6CisJCSNhcmNoL3g4Ni9ib290L01ha2VmaWxlCisJCUxERkxBR1NfYm9vdHNlY3QgOj0gLVR0ZXh0IDB4MCAtcyAtLW9mb3JtYXQgYmluYXJ5CisJCUxERkxBR1Nfc2V0dXAgICAgOj0gLVR0ZXh0IDB4MCAtcyAtLW9mb3JtYXQgYmluYXJ5IC1lIGJlZ3RleHQKKworCQl0YXJnZXRzICs9IHNldHVwIHNldHVwLm8gYm9vdHNlY3QgYm9vdHNlY3QubworCQkkKG9iaikvc2V0dXAgJChvYmopL2Jvb3RzZWN0OiAlOiAlLm8gRk9SQ0UKKwkJCSQoY2FsbCBpZl9jaGFuZ2VkLGxkKQorCisJSW4gdGhpcyBleGFtcGxlLCB0aGVyZSBhcmUgdHdvIHBvc3NpYmxlIHRhcmdldHMsIHJlcXVpcmluZyBkaWZmZXJlbnQKKwlvcHRpb25zIHRvIHRoZSBsaW5rZXIuIFRoZSBsaW5rZXIgb3B0aW9ucyBhcmUgc3BlY2lmaWVkIHVzaW5nIHRoZQorCUxERkxBR1NfJEAgc3ludGF4IC0gb25lIGZvciBlYWNoIHBvdGVudGlhbCB0YXJnZXQuCisJJCh0YXJnZXRzKSBhcmUgYXNzaWduZWQgYWxsIHBvdGVudGlhbCB0YXJnZXRzLCBieSB3aGljaCBrYnVpbGQga25vd3MKKwl0aGUgdGFyZ2V0cyBhbmQgd2lsbDoKKwkJMSkgY2hlY2sgZm9yIGNvbW1hbmRsaW5lIGNoYW5nZXMKKwkJMikgZGVsZXRlIHRhcmdldCBkdXJpbmcgbWFrZSBjbGVhbgorCisJVGhlICI6ICU6ICUubyIgcGFydCBvZiB0aGUgcHJlcmVxdWlzaXRlIGlzIGEgc2hvcnRoYW5kIHRoYXQKKwlmcmVlcyB1cyBmcm9tIGxpc3RpbmcgdGhlIHNldHVwLm8gYW5kIGJvb3RzZWN0Lm8gZmlsZXMuCisJTm90ZTogSXQgaXMgYSBjb21tb24gbWlzdGFrZSB0byBmb3JnZXQgdGhlICJ0YXJnZXRzIDo9IiBhc3NpZ25tZW50LAorCSAgICAgIHJlc3VsdGluZyBpbiB0aGUgdGFyZ2V0IGZpbGUgYmVpbmcgcmVjb21waWxlZCBmb3Igbm8KKwkgICAgICBvYnZpb3VzIHJlYXNvbi4KKworICAgIGR0YworCUNyZWF0ZSBmbGF0dGVuZWQgZGV2aWNlIHRyZWUgYmxvYiBvYmplY3Qgc3VpdGFibGUgZm9yIGxpbmtpbmcKKwlpbnRvIHZtbGludXguIERldmljZSB0cmVlIGJsb2JzIGxpbmtlZCBpbnRvIHZtbGludXggYXJlIHBsYWNlZAorCWluIGFuIGluaXQgc2VjdGlvbiBpbiB0aGUgaW1hZ2UuIFBsYXRmb3JtIGNvZGUgKm11c3QqIGNvcHkgdGhlCisJYmxvYiB0byBub24taW5pdCBtZW1vcnkgcHJpb3IgdG8gY2FsbGluZyB1bmZsYXR0ZW5fZGV2aWNlX3RyZWUoKS4KKworCVRvIHVzZSB0aGlzIGNvbW1hbmQsIHNpbXBseSBhZGQgKi5kdGIgaW50byBvYmoteSBvciB0YXJnZXRzLCBvciBtYWtlCisJc29tZSBvdGhlciB0YXJnZXQgZGVwZW5kIG9uICUuZHRiCisKKwlBIGNlbnRyYWwgcnVsZSBleGlzdHMgdG8gY3JlYXRlICQob2JqKS8lLmR0YiBmcm9tICQoc3JjKS8lLmR0czsKKwlhcmNoaXRlY3R1cmUgTWFrZWZpbGVzIGRvIG5vIG5lZWQgdG8gZXhwbGljaXRseSB3cml0ZSBvdXQgdGhhdCBydWxlLgorCisJRXhhbXBsZToKKwkJdGFyZ2V0cyArPSAkKGR0Yi15KQorCQljbGVhbi1maWxlcyArPSAqLmR0YgorCQlEVENfRkxBR1MgPz0gLXAgMTAyNAorCistLS0gNi44IEN1c3RvbSBrYnVpbGQgY29tbWFuZHMKKworCVdoZW4ga2J1aWxkIGlzIGV4ZWN1dGluZyB3aXRoIEtCVUlMRF9WRVJCT1NFPTAsIHRoZW4gb25seSBhIHNob3J0aGFuZAorCW9mIGEgY29tbWFuZCBpcyBub3JtYWxseSBkaXNwbGF5ZWQuCisJVG8gZW5hYmxlIHRoaXMgYmVoYXZpb3VyIGZvciBjdXN0b20gY29tbWFuZHMga2J1aWxkIHJlcXVpcmVzCisJdHdvIHZhcmlhYmxlcyB0byBiZSBzZXQ6CisJcXVpZXRfY21kXzxjb21tYW5kPgktIHdoYXQgc2hhbGwgYmUgZWNob2VkCisJICAgICAgY21kXzxjb21tYW5kPgktIHRoZSBjb21tYW5kIHRvIGV4ZWN1dGUKKworCUV4YW1wbGU6CisJCSMKKwkJcXVpZXRfY21kX2ltYWdlID0gQlVJTEQgICAkQAorCQkgICAgICBjbWRfaW1hZ2UgPSAkKG9iaikvdG9vbHMvYnVpbGQgJChCVUlMREZMQUdTKSBcCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKG9iaikvdm1saW51eC5iaW4gPiAkQAorCisJCXRhcmdldHMgKz0gYnpJbWFnZQorCQkkKG9iaikvYnpJbWFnZTogJChvYmopL3ZtbGludXguYmluICQob2JqKS90b29scy9idWlsZCBGT1JDRQorCQkJJChjYWxsIGlmX2NoYW5nZWQsaW1hZ2UpCisJCQlAZWNobyAnS2VybmVsOiAkQCBpcyByZWFkeScKKworCVdoZW4gdXBkYXRpbmcgdGhlICQob2JqKS9iekltYWdlIHRhcmdldCwgdGhlIGxpbmUKKworCUJVSUxEICAgIGFyY2gveDg2L2Jvb3QvYnpJbWFnZQorCisJd2lsbCBiZSBkaXNwbGF5ZWQgd2l0aCAibWFrZSBLQlVJTERfVkVSQk9TRT0wIi4KKworCistLS0gNi45IFByZXByb2Nlc3NpbmcgbGlua2VyIHNjcmlwdHMKKworCVdoZW4gdGhlIHZtbGludXggaW1hZ2UgaXMgYnVpbHQsIHRoZSBsaW5rZXIgc2NyaXB0CisJYXJjaC8kKEFSQ0gpL2tlcm5lbC92bWxpbnV4LmxkcyBpcyB1c2VkLgorCVRoZSBzY3JpcHQgaXMgYSBwcmVwcm9jZXNzZWQgdmFyaWFudCBvZiB0aGUgZmlsZSB2bWxpbnV4Lmxkcy5TCisJbG9jYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisJa2J1aWxkIGtub3dzIC5sZHMgZmlsZXMgYW5kIGluY2x1ZGVzIGEgcnVsZSAqbGRzLlMgLT4gKmxkcy4KKworCUV4YW1wbGU6CisJCSNhcmNoL3g4Ni9rZXJuZWwvTWFrZWZpbGUKKwkJYWx3YXlzIDo9IHZtbGludXgubGRzCisKKwkJI01ha2VmaWxlCisJCWV4cG9ydCBDUFBGTEFHU192bWxpbnV4LmxkcyArPSAtUCAtQyAtVSQoQVJDSCkKKworCVRoZSBhc3NpZ25tZW50IHRvICQoYWx3YXlzKSBpcyB1c2VkIHRvIHRlbGwga2J1aWxkIHRvIGJ1aWxkIHRoZQorCXRhcmdldCB2bWxpbnV4Lmxkcy4KKwlUaGUgYXNzaWdubWVudCB0byAkKENQUEZMQUdTX3ZtbGludXgubGRzKSB0ZWxscyBrYnVpbGQgdG8gdXNlIHRoZQorCXNwZWNpZmllZCBvcHRpb25zIHdoZW4gYnVpbGRpbmcgdGhlIHRhcmdldCB2bWxpbnV4Lmxkcy4KKworCVdoZW4gYnVpbGRpbmcgdGhlICoubGRzIHRhcmdldCwga2J1aWxkIHVzZXMgdGhlIHZhcmlhYmxlczoKKwlLQlVJTERfQ1BQRkxBR1MJOiBTZXQgaW4gdG9wLWxldmVsIE1ha2VmaWxlCisJY3BwZmxhZ3MteQk6IE1heSBiZSBzZXQgaW4gdGhlIGtidWlsZCBtYWtlZmlsZQorCUNQUEZMQUdTXyQoQEYpICA6IFRhcmdldC1zcGVjaWZpYyBmbGFncy4KKwkgICAgICAgICAgICAgICAgICBOb3RlIHRoYXQgdGhlIGZ1bGwgZmlsZW5hbWUgaXMgdXNlZCBpbiB0aGlzCisJICAgICAgICAgICAgICAgICAgYXNzaWdubWVudC4KKworCVRoZSBrYnVpbGQgaW5mcmFzdHJ1Y3R1cmUgZm9yICpsZHMgZmlsZXMgaXMgdXNlZCBpbiBzZXZlcmFsCisJYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGZpbGVzLgorCistLS0gNi4xMCBHZW5lcmljIGhlYWRlciBmaWxlcworCisJVGhlIGRpcmVjdG9yeSBpbmNsdWRlL2FzbS1nZW5lcmljIGNvbnRhaW5zIHRoZSBoZWFkZXIgZmlsZXMKKwl0aGF0IG1heSBiZSBzaGFyZWQgYmV0d2VlbiBpbmRpdmlkdWFsIGFyY2hpdGVjdHVyZXMuCisJVGhlIHJlY29tbWVuZGVkIGFwcHJvYWNoIGhvdyB0byB1c2UgYSBnZW5lcmljIGhlYWRlciBmaWxlIGlzCisJdG8gbGlzdCB0aGUgZmlsZSBpbiB0aGUgS2J1aWxkIGZpbGUuCisJU2VlICI3LjQgZ2VuZXJpYy15IiBmb3IgZnVydGhlciBpbmZvIG9uIHN5bnRheCBldGMuCisKKz09PSA3IEtidWlsZCBzeW50YXggZm9yIGV4cG9ydGVkIGhlYWRlcnMKKworVGhlIGtlcm5lbCBpbmNsdWRlcyBhIHNldCBvZiBoZWFkZXJzIHRoYXQgaXMgZXhwb3J0ZWQgdG8gdXNlcnNwYWNlLgorTWFueSBoZWFkZXJzIGNhbiBiZSBleHBvcnRlZCBhcy1pcyBidXQgb3RoZXIgaGVhZGVycyByZXF1aXJlIGEKK21pbmltYWwgcHJlLXByb2Nlc3NpbmcgYmVmb3JlIHRoZXkgYXJlIHJlYWR5IGZvciB1c2VyLXNwYWNlLgorVGhlIHByZS1wcm9jZXNzaW5nIGRvZXM6CistIGRyb3Aga2VybmVsLXNwZWNpZmljIGFubm90YXRpb25zCistIGRyb3AgaW5jbHVkZSBvZiBjb21waWxlci5oCistIGRyb3AgYWxsIHNlY3Rpb25zIHRoYXQgYXJlIGtlcm5lbCBpbnRlcm5hbCAoZ3VhcmRlZCBieSBpZmRlZiBfX0tFUk5FTF9fKQorCitFYWNoIHJlbGV2YW50IGRpcmVjdG9yeSBjb250YWlucyBhIGZpbGUgbmFtZSAiS2J1aWxkIiB3aGljaCBzcGVjaWZpZXMgdGhlCitoZWFkZXJzIHRvIGJlIGV4cG9ydGVkLgorU2VlIHN1YnNlcXVlbnQgY2hhcHRlciBmb3IgdGhlIHN5bnRheCBvZiB0aGUgS2J1aWxkIGZpbGUuCisKKwktLS0gNy4xIGhlYWRlci15CisKKwloZWFkZXIteSBzcGVjaWZpZXMgaGVhZGVyIGZpbGVzIHRvIGJlIGV4cG9ydGVkLgorCisJCUV4YW1wbGU6CisJCQkjaW5jbHVkZS9saW51eC9LYnVpbGQKKwkJCWhlYWRlci15ICs9IHVzYi8KKwkJCWhlYWRlci15ICs9IGFpb19hYmkuaAorCisJVGhlIGNvbnZlbnRpb24gaXMgdG8gbGlzdCBvbmUgZmlsZSBwZXIgbGluZSBhbmQKKwlwcmVmZXJhYmx5IGluIGFscGhhYmV0aWMgb3JkZXIuCisKKwloZWFkZXIteSBhbHNvIHNwZWNpZmllcyB3aGljaCBzdWJkaXJlY3RvcmllcyB0byB2aXNpdC4KKwlBIHN1YmRpcmVjdG9yeSBpcyBpZGVudGlmaWVkIGJ5IGEgdHJhaWxpbmcgJy8nIHdoaWNoCisJY2FuIGJlIHNlZW4gaW4gdGhlIGV4YW1wbGUgYWJvdmUgZm9yIHRoZSB1c2Igc3ViZGlyZWN0b3J5LgorCisJU3ViZGlyZWN0b3JpZXMgYXJlIHZpc2l0ZWQgYmVmb3JlIHRoZWlyIHBhcmVudCBkaXJlY3Rvcmllcy4KKworCS0tLSA3LjIgZ2VuaGRyLXkKKworCWdlbmhkci15IHNwZWNpZmllcyBnZW5lcmF0ZWQgZmlsZXMgdG8gYmUgZXhwb3J0ZWQuCisJR2VuZXJhdGVkIGZpbGVzIGFyZSBzcGVjaWFsIGFzIHRoZXkgbmVlZCB0byBiZSBsb29rZWQKKwl1cCBpbiBhbm90aGVyIGRpcmVjdG9yeSB3aGVuIGRvaW5nICdtYWtlIE89Li4uJyBidWlsZHMuCisKKwkJRXhhbXBsZToKKwkJCSNpbmNsdWRlL2xpbnV4L0tidWlsZAorCQkJZ2VuaGRyLXkgKz0gdmVyc2lvbi5oCisKKwktLS0gNy4zIGRlc3RpbmF0aW9uLXkKKworCVdoZW4gYW4gYXJjaGl0ZWN0dXJlIGhhcyBhIHNldCBvZiBleHBvcnRlZCBoZWFkZXJzIHRoYXQgbmVlZHMgdG8gYmUKKwlleHBvcnRlZCB0byBhIGRpZmZlcmVudCBkaXJlY3RvcnkgZGVzdGluYXRpb24teSBpcyB1c2VkLgorCWRlc3RpbmF0aW9uLXkgc3BlY2lmaWVzIHRoZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkgZm9yIGFsbCBleHBvcnRlZAorCWhlYWRlcnMgaW4gdGhlIGZpbGUgd2hlcmUgaXQgaXMgcHJlc2VudC4KKworCQlFeGFtcGxlOgorCQkJI2FyY2gveHRlbnNhL3BsYXRmb3Jtcy9zNjEwNS9pbmNsdWRlL3BsYXRmb3JtL0tidWlsZAorCQkJZGVzdGluYXRpb24teSA6PSBpbmNsdWRlL2xpbnV4CisKKwlJbiB0aGUgZXhhbXBsZSBhYm92ZSBhbGwgZXhwb3J0ZWQgaGVhZGVycyBpbiB0aGUgS2J1aWxkIGZpbGUKKwl3aWxsIGJlIGxvY2F0ZWQgaW4gdGhlIGRpcmVjdG9yeSAiaW5jbHVkZS9saW51eCIgd2hlbiBleHBvcnRlZC4KKworCS0tLSA3LjQgZ2VuZXJpYy15CisKKwlJZiBhbiBhcmNoaXRlY3R1cmUgdXNlcyBhIHZlcmJhdGltIGNvcHkgb2YgYSBoZWFkZXIgZnJvbQorCWluY2x1ZGUvYXNtLWdlbmVyaWMgdGhlbiB0aGlzIGlzIGxpc3RlZCBpbiB0aGUgZmlsZQorCWFyY2gvJChBUkNIKS9pbmNsdWRlL2FzbS9LYnVpbGQgbGlrZSB0aGlzOgorCisJCUV4YW1wbGU6CisJCQkjYXJjaC94ODYvaW5jbHVkZS9hc20vS2J1aWxkCisJCQlnZW5lcmljLXkgKz0gdGVybWlvcy5oCisJCQlnZW5lcmljLXkgKz0gcnRjLmgKKworCUR1cmluZyB0aGUgcHJlcGFyZSBwaGFzZSBvZiB0aGUgYnVpbGQgYSB3cmFwcGVyIGluY2x1ZGUKKwlmaWxlIGlzIGdlbmVyYXRlZCBpbiB0aGUgZGlyZWN0b3J5OgorCisJCWFyY2gvJChBUkNIKS9pbmNsdWRlL2dlbmVyYXRlZC9hc20KKworCVdoZW4gYSBoZWFkZXIgaXMgZXhwb3J0ZWQgd2hlcmUgdGhlIGFyY2hpdGVjdHVyZSB1c2VzCisJdGhlIGdlbmVyaWMgaGVhZGVyIGEgc2ltaWxhciB3cmFwcGVyIGlzIGdlbmVyYXRlZCBhcyBwYXJ0CisJb2YgdGhlIHNldCBvZiBleHBvcnRlZCBoZWFkZXJzIGluIHRoZSBkaXJlY3Rvcnk6CisKKwkJdXNyL2luY2x1ZGUvYXNtCisKKwlUaGUgZ2VuZXJhdGVkIHdyYXBwZXIgd2lsbCBpbiBib3RoIGNhc2VzIGxvb2sgbGlrZSB0aGUgZm9sbG93aW5nOgorCisJCUV4YW1wbGU6IHRlcm1pb3MuaAorCQkJI2luY2x1ZGUgPGFzbS1nZW5lcmljL3Rlcm1pb3MuaD4KKworPT09IDggS2J1aWxkIFZhcmlhYmxlcworCitUaGUgdG9wIE1ha2VmaWxlIGV4cG9ydHMgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXM6CisKKyAgICBWRVJTSU9OLCBQQVRDSExFVkVMLCBTVUJMRVZFTCwgRVhUUkFWRVJTSU9OCisKKwlUaGVzZSB2YXJpYWJsZXMgZGVmaW5lIHRoZSBjdXJyZW50IGtlcm5lbCB2ZXJzaW9uLiAgQSBmZXcgYXJjaAorCU1ha2VmaWxlcyBhY3R1YWxseSB1c2UgdGhlc2UgdmFsdWVzIGRpcmVjdGx5OyB0aGV5IHNob3VsZCB1c2UKKwkkKEtFUk5FTFJFTEVBU0UpIGluc3RlYWQuCisKKwkkKFZFUlNJT04pLCAkKFBBVENITEVWRUwpLCBhbmQgJChTVUJMRVZFTCkgZGVmaW5lIHRoZSBiYXNpYworCXRocmVlLXBhcnQgdmVyc2lvbiBudW1iZXIsIHN1Y2ggYXMgIjIiLCAiNCIsIGFuZCAiMCIuICBUaGVzZSB0aHJlZQorCXZhbHVlcyBhcmUgYWx3YXlzIG51bWVyaWMuCisKKwkkKEVYVFJBVkVSU0lPTikgZGVmaW5lcyBhbiBldmVuIHRpbmllciBzdWJsZXZlbCBmb3IgcHJlLXBhdGNoZXMKKwlvciBhZGRpdGlvbmFsIHBhdGNoZXMuCUl0IGlzIHVzdWFsbHkgc29tZSBub24tbnVtZXJpYyBzdHJpbmcKKwlzdWNoIGFzICItcHJlNCIsIGFuZCBpcyBvZnRlbiBibGFuay4KKworICAgIEtFUk5FTFJFTEVBU0UKKworCSQoS0VSTkVMUkVMRUFTRSkgaXMgYSBzaW5nbGUgc3RyaW5nIHN1Y2ggYXMgIjIuNC4wLXByZTQiLCBzdWl0YWJsZQorCWZvciBjb25zdHJ1Y3RpbmcgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBuYW1lcyBvciBzaG93aW5nIGluCisJdmVyc2lvbiBzdHJpbmdzLiAgU29tZSBhcmNoIE1ha2VmaWxlcyB1c2UgaXQgZm9yIHRoaXMgcHVycG9zZS4KKworICAgIEFSQ0gKKworCVRoaXMgdmFyaWFibGUgZGVmaW5lcyB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSwgc3VjaCBhcyAiaTM4NiIsCisJImFybSIsIG9yICJzcGFyYyIuIFNvbWUga2J1aWxkIE1ha2VmaWxlcyB0ZXN0ICQoQVJDSCkgdG8KKwlkZXRlcm1pbmUgd2hpY2ggZmlsZXMgdG8gY29tcGlsZS4KKworCUJ5IGRlZmF1bHQsIHRoZSB0b3AgTWFrZWZpbGUgc2V0cyAkKEFSQ0gpIHRvIGJlIHRoZSBzYW1lIGFzIHRoZQorCWhvc3Qgc3lzdGVtIGFyY2hpdGVjdHVyZS4gIEZvciBhIGNyb3NzIGJ1aWxkLCBhIHVzZXIgbWF5CisJb3ZlcnJpZGUgdGhlIHZhbHVlIG9mICQoQVJDSCkgb24gdGhlIGNvbW1hbmQgbGluZToKKworCSAgICBtYWtlIEFSQ0g9bTY4ayAuLi4KKworCisgICAgSU5TVEFMTF9QQVRICisKKwlUaGlzIHZhcmlhYmxlIGRlZmluZXMgYSBwbGFjZSBmb3IgdGhlIGFyY2ggTWFrZWZpbGVzIHRvIGluc3RhbGwKKwl0aGUgcmVzaWRlbnQga2VybmVsIGltYWdlIGFuZCBTeXN0ZW0ubWFwIGZpbGUuCisJVXNlIHRoaXMgZm9yIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbnN0YWxsIHRhcmdldHMuCisKKyAgICBJTlNUQUxMX01PRF9QQVRILCBNT0RMSUIKKworCSQoSU5TVEFMTF9NT0RfUEFUSCkgc3BlY2lmaWVzIGEgcHJlZml4IHRvICQoTU9ETElCKSBmb3IgbW9kdWxlCisJaW5zdGFsbGF0aW9uLiAgVGhpcyB2YXJpYWJsZSBpcyBub3QgZGVmaW5lZCBpbiB0aGUgTWFrZWZpbGUgYnV0CisJbWF5IGJlIHBhc3NlZCBpbiBieSB0aGUgdXNlciBpZiBkZXNpcmVkLgorCisJJChNT0RMSUIpIHNwZWNpZmllcyB0aGUgZGlyZWN0b3J5IGZvciBtb2R1bGUgaW5zdGFsbGF0aW9uLgorCVRoZSB0b3AgTWFrZWZpbGUgZGVmaW5lcyAkKE1PRExJQikgdG8KKwkkKElOU1RBTExfTU9EX1BBVEgpL2xpYi9tb2R1bGVzLyQoS0VSTkVMUkVMRUFTRSkuICBUaGUgdXNlciBtYXkKKwlvdmVycmlkZSB0aGlzIHZhbHVlIG9uIHRoZSBjb21tYW5kIGxpbmUgaWYgZGVzaXJlZC4KKworICAgIElOU1RBTExfTU9EX1NUUklQCisKKwlJZiB0aGlzIHZhcmlhYmxlIGlzIHNwZWNpZmllZCwgaXQgd2lsbCBjYXVzZSBtb2R1bGVzIHRvIGJlIHN0cmlwcGVkCisJYWZ0ZXIgdGhleSBhcmUgaW5zdGFsbGVkLiAgSWYgSU5TVEFMTF9NT0RfU1RSSVAgaXMgJzEnLCB0aGVuIHRoZQorCWRlZmF1bHQgb3B0aW9uIC0tc3RyaXAtZGVidWcgd2lsbCBiZSB1c2VkLiAgT3RoZXJ3aXNlLCB0aGUKKwlJTlNUQUxMX01PRF9TVFJJUCB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMgdGhlIG9wdGlvbihzKSB0byB0aGUgc3RyaXAKKwljb21tYW5kLgorCisKKz09PSA5IE1ha2VmaWxlIGxhbmd1YWdlCisKK1RoZSBrZXJuZWwgTWFrZWZpbGVzIGFyZSBkZXNpZ25lZCB0byBiZSBydW4gd2l0aCBHTlUgTWFrZS4gIFRoZSBNYWtlZmlsZXMKK3VzZSBvbmx5IHRoZSBkb2N1bWVudGVkIGZlYXR1cmVzIG9mIEdOVSBNYWtlLCBidXQgdGhleSBkbyB1c2UgbWFueQorR05VIGV4dGVuc2lvbnMuCisKK0dOVSBNYWtlIHN1cHBvcnRzIGVsZW1lbnRhcnkgbGlzdC1wcm9jZXNzaW5nIGZ1bmN0aW9ucy4gIFRoZSBrZXJuZWwKK01ha2VmaWxlcyB1c2UgYSBub3ZlbCBzdHlsZSBvZiBsaXN0IGJ1aWxkaW5nIGFuZCBtYW5pcHVsYXRpb24gd2l0aCBmZXcKKyJpZiIgc3RhdGVtZW50cy4KKworR05VIE1ha2UgaGFzIHR3byBhc3NpZ25tZW50IG9wZXJhdG9ycywgIjo9IiBhbmQgIj0iLiAgIjo9IiBwZXJmb3JtcworaW1tZWRpYXRlIGV2YWx1YXRpb24gb2YgdGhlIHJpZ2h0LWhhbmQgc2lkZSBhbmQgc3RvcmVzIGFuIGFjdHVhbCBzdHJpbmcKK2ludG8gdGhlIGxlZnQtaGFuZCBzaWRlLiAgIj0iIGlzIGxpa2UgYSBmb3JtdWxhIGRlZmluaXRpb247IGl0IHN0b3JlcyB0aGUKK3JpZ2h0LWhhbmQgc2lkZSBpbiBhbiB1bmV2YWx1YXRlZCBmb3JtIGFuZCB0aGVuIGV2YWx1YXRlcyB0aGlzIGZvcm0gZWFjaAordGltZSB0aGUgbGVmdC1oYW5kIHNpZGUgaXMgdXNlZC4KKworVGhlcmUgYXJlIHNvbWUgY2FzZXMgd2hlcmUgIj0iIGlzIGFwcHJvcHJpYXRlLiAgVXN1YWxseSwgdGhvdWdoLCAiOj0iCitpcyB0aGUgcmlnaHQgY2hvaWNlLgorCis9PT0gMTAgQ3JlZGl0cworCitPcmlnaW5hbCB2ZXJzaW9uIG1hZGUgYnkgTWljaGFlbCBFbGl6YWJldGggQ2hhc3RhaW4sIDxtYWlsdG86bWVjQHNob3V0Lm5ldD4KK1VwZGF0ZXMgYnkgS2FpIEdlcm1hc2NoZXdza2kgPGthaUB0cDEucnVoci11bmktYm9jaHVtLmRlPgorVXBkYXRlcyBieSBTYW0gUmF2bmJvcmcgPHNhbUByYXZuYm9yZy5vcmc+CitMYW5ndWFnZSBRQSBieSBKYW4gRW5nZWxoYXJkdCA8amVuZ2VsaEBnbXguZGU+CisKKz09PSAxMSBUT0RPCisKKy0gRGVzY3JpYmUgaG93IGtidWlsZCBzdXBwb3J0cyBzaGlwcGVkIGZpbGVzIHdpdGggX3NoaXBwZWQuCistIEdlbmVyYXRpbmcgb2Zmc2V0IGhlYWRlciBmaWxlcy4KKy0gQWRkIG1vcmUgdmFyaWFibGVzIHRvIHNlY3Rpb24gNz8KKworCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24va2J1aWxkL21vZHVsZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9rYnVpbGQvbW9kdWxlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZiMzllMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24va2J1aWxkL21vZHVsZXMudHh0CkBAIC0wLDAgKzEsNTQxIEBACitCdWlsZGluZyBFeHRlcm5hbCBNb2R1bGVzCisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIGhvdyB0byBidWlsZCBhbiBvdXQtb2YtdHJlZSBrZXJuZWwgbW9kdWxlLgorCis9PT0gVGFibGUgb2YgQ29udGVudHMKKworCT09PSAxIEludHJvZHVjdGlvbgorCT09PSAyIEhvdyB0byBCdWlsZCBFeHRlcm5hbCBNb2R1bGVzCisJICAgLS0tIDIuMSBDb21tYW5kIFN5bnRheAorCSAgIC0tLSAyLjIgT3B0aW9ucworCSAgIC0tLSAyLjMgVGFyZ2V0cworCSAgIC0tLSAyLjQgQnVpbGRpbmcgU2VwYXJhdGUgRmlsZXMKKwk9PT0gMy4gQ3JlYXRpbmcgYSBLYnVpbGQgRmlsZSBmb3IgYW4gRXh0ZXJuYWwgTW9kdWxlCisJICAgLS0tIDMuMSBTaGFyZWQgTWFrZWZpbGUKKwkgICAtLS0gMy4yIFNlcGFyYXRlIEtidWlsZCBmaWxlIGFuZCBNYWtlZmlsZQorCSAgIC0tLSAzLjMgQmluYXJ5IEJsb2JzCisJICAgLS0tIDMuNCBCdWlsZGluZyBNdWx0aXBsZSBNb2R1bGVzCisJPT09IDQuIEluY2x1ZGUgRmlsZXMKKwkgICAtLS0gNC4xIEtlcm5lbCBJbmNsdWRlcworCSAgIC0tLSA0LjIgU2luZ2xlIFN1YmRpcmVjdG9yeQorCSAgIC0tLSA0LjMgU2V2ZXJhbCBTdWJkaXJlY3RvcmllcworCT09PSA1LiBNb2R1bGUgSW5zdGFsbGF0aW9uCisJICAgLS0tIDUuMSBJTlNUQUxMX01PRF9QQVRICisJICAgLS0tIDUuMiBJTlNUQUxMX01PRF9ESVIKKwk9PT0gNi4gTW9kdWxlIFZlcnNpb25pbmcKKwkgICAtLS0gNi4xIFN5bWJvbHMgRnJvbSB0aGUgS2VybmVsICh2bWxpbnV4ICsgbW9kdWxlcykKKwkgICAtLS0gNi4yIFN5bWJvbHMgYW5kIEV4dGVybmFsIE1vZHVsZXMKKwkgICAtLS0gNi4zIFN5bWJvbHMgRnJvbSBBbm90aGVyIEV4dGVybmFsIE1vZHVsZQorCT09PSA3LiBUaXBzICYgVHJpY2tzCisJICAgLS0tIDcuMSBUZXN0aW5nIGZvciBDT05GSUdfRk9PX0JBUgorCisKKworPT09IDEuIEludHJvZHVjdGlvbgorCisia2J1aWxkIiBpcyB0aGUgYnVpbGQgc3lzdGVtIHVzZWQgYnkgdGhlIExpbnV4IGtlcm5lbC4gTW9kdWxlcyBtdXN0IHVzZQora2J1aWxkIHRvIHN0YXkgY29tcGF0aWJsZSB3aXRoIGNoYW5nZXMgaW4gdGhlIGJ1aWxkIGluZnJhc3RydWN0dXJlIGFuZAordG8gcGljayB1cCB0aGUgcmlnaHQgZmxhZ3MgdG8gImdjYy4iIEZ1bmN0aW9uYWxpdHkgZm9yIGJ1aWxkaW5nIG1vZHVsZXMKK2JvdGggaW4tdHJlZSBhbmQgb3V0LW9mLXRyZWUgaXMgcHJvdmlkZWQuIFRoZSBtZXRob2QgZm9yIGJ1aWxkaW5nCitlaXRoZXIgaXMgc2ltaWxhciwgYW5kIGFsbCBtb2R1bGVzIGFyZSBpbml0aWFsbHkgZGV2ZWxvcGVkIGFuZCBidWlsdAorb3V0LW9mLXRyZWUuCisKK0NvdmVyZWQgaW4gdGhpcyBkb2N1bWVudCBpcyBpbmZvcm1hdGlvbiBhaW1lZCBhdCBkZXZlbG9wZXJzIGludGVyZXN0ZWQKK2luIGJ1aWxkaW5nIG91dC1vZi10cmVlIChvciAiZXh0ZXJuYWwiKSBtb2R1bGVzLiBUaGUgYXV0aG9yIG9mIGFuCitleHRlcm5hbCBtb2R1bGUgc2hvdWxkIHN1cHBseSBhIG1ha2VmaWxlIHRoYXQgaGlkZXMgbW9zdCBvZiB0aGUKK2NvbXBsZXhpdHksIHNvIG9uZSBvbmx5IGhhcyB0byB0eXBlICJtYWtlIiB0byBidWlsZCB0aGUgbW9kdWxlLiBUaGlzIGlzCitlYXNpbHkgYWNjb21wbGlzaGVkLCBhbmQgYSBjb21wbGV0ZSBleGFtcGxlIHdpbGwgYmUgcHJlc2VudGVkIGluCitzZWN0aW9uIDMuCisKKworPT09IDIuIEhvdyB0byBCdWlsZCBFeHRlcm5hbCBNb2R1bGVzCisKK1RvIGJ1aWxkIGV4dGVybmFsIG1vZHVsZXMsIHlvdSBtdXN0IGhhdmUgYSBwcmVidWlsdCBrZXJuZWwgYXZhaWxhYmxlCit0aGF0IGNvbnRhaW5zIHRoZSBjb25maWd1cmF0aW9uIGFuZCBoZWFkZXIgZmlsZXMgdXNlZCBpbiB0aGUgYnVpbGQuCitBbHNvLCB0aGUga2VybmVsIG11c3QgaGF2ZSBiZWVuIGJ1aWx0IHdpdGggbW9kdWxlcyBlbmFibGVkLiBJZiB5b3UgYXJlCit1c2luZyBhIGRpc3RyaWJ1dGlvbiBrZXJuZWwsIHRoZXJlIHdpbGwgYmUgYSBwYWNrYWdlIGZvciB0aGUga2VybmVsIHlvdQorYXJlIHJ1bm5pbmcgcHJvdmlkZWQgYnkgeW91ciBkaXN0cmlidXRpb24uCisKK0FuIGFsdGVybmF0aXZlIGlzIHRvIHVzZSB0aGUgIm1ha2UiIHRhcmdldCAibW9kdWxlc19wcmVwYXJlLiIgVGhpcyB3aWxsCittYWtlIHN1cmUgdGhlIGtlcm5lbCBjb250YWlucyB0aGUgaW5mb3JtYXRpb24gcmVxdWlyZWQuIFRoZSB0YXJnZXQKK2V4aXN0cyBzb2xlbHkgYXMgYSBzaW1wbGUgd2F5IHRvIHByZXBhcmUgYSBrZXJuZWwgc291cmNlIHRyZWUgZm9yCitidWlsZGluZyBleHRlcm5hbCBtb2R1bGVzLgorCitOT1RFOiAibW9kdWxlc19wcmVwYXJlIiB3aWxsIG5vdCBidWlsZCBNb2R1bGUuc3ltdmVycyBldmVuIGlmCitDT05GSUdfTU9EVkVSU0lPTlMgaXMgc2V0OyB0aGVyZWZvcmUsIGEgZnVsbCBrZXJuZWwgYnVpbGQgbmVlZHMgdG8gYmUKK2V4ZWN1dGVkIHRvIG1ha2UgbW9kdWxlIHZlcnNpb25pbmcgd29yay4KKworLS0tIDIuMSBDb21tYW5kIFN5bnRheAorCisJVGhlIGNvbW1hbmQgdG8gYnVpbGQgYW4gZXh0ZXJuYWwgbW9kdWxlIGlzOgorCisJCSQgbWFrZSAtQyA8cGF0aF90b19rZXJuZWxfc3JjPiBNPSRQV0QKKworCVRoZSBrYnVpbGQgc3lzdGVtIGtub3dzIHRoYXQgYW4gZXh0ZXJuYWwgbW9kdWxlIGlzIGJlaW5nIGJ1aWx0CisJZHVlIHRvIHRoZSAiTT08ZGlyPiIgb3B0aW9uIGdpdmVuIGluIHRoZSBjb21tYW5kLgorCisJVG8gYnVpbGQgYWdhaW5zdCB0aGUgcnVubmluZyBrZXJuZWwgdXNlOgorCisJCSQgbWFrZSAtQyAvbGliL21vZHVsZXMvYHVuYW1lIC1yYC9idWlsZCBNPSRQV0QKKworCVRoZW4gdG8gaW5zdGFsbCB0aGUgbW9kdWxlKHMpIGp1c3QgYnVpbHQsIGFkZCB0aGUgdGFyZ2V0CisJIm1vZHVsZXNfaW5zdGFsbCIgdG8gdGhlIGNvbW1hbmQ6CisKKwkJJCBtYWtlIC1DIC9saWIvbW9kdWxlcy9gdW5hbWUgLXJgL2J1aWxkIE09JFBXRCBtb2R1bGVzX2luc3RhbGwKKworLS0tIDIuMiBPcHRpb25zCisKKwkoJEtESVIgcmVmZXJzIHRvIHRoZSBwYXRoIG9mIHRoZSBrZXJuZWwgc291cmNlIGRpcmVjdG9yeS4pCisKKwltYWtlIC1DICRLRElSIE09JFBXRAorCisJLUMgJEtESVIKKwkJVGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUga2VybmVsIHNvdXJjZSBpcyBsb2NhdGVkLgorCQkibWFrZSIgd2lsbCBhY3R1YWxseSBjaGFuZ2UgdG8gdGhlIHNwZWNpZmllZCBkaXJlY3RvcnkKKwkJd2hlbiBleGVjdXRpbmcgYW5kIHdpbGwgY2hhbmdlIGJhY2sgd2hlbiBmaW5pc2hlZC4KKworCU09JFBXRAorCQlJbmZvcm1zIGtidWlsZCB0aGF0IGFuIGV4dGVybmFsIG1vZHVsZSBpcyBiZWluZyBidWlsdC4KKwkJVGhlIHZhbHVlIGdpdmVuIHRvICJNIiBpcyB0aGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUKKwkJZGlyZWN0b3J5IHdoZXJlIHRoZSBleHRlcm5hbCBtb2R1bGUgKGtidWlsZCBmaWxlKSBpcworCQlsb2NhdGVkLgorCistLS0gMi4zIFRhcmdldHMKKworCVdoZW4gYnVpbGRpbmcgYW4gZXh0ZXJuYWwgbW9kdWxlLCBvbmx5IGEgc3Vic2V0IG9mIHRoZSAibWFrZSIKKwl0YXJnZXRzIGFyZSBhdmFpbGFibGUuCisKKwltYWtlIC1DICRLRElSIE09JFBXRCBbdGFyZ2V0XQorCisJVGhlIGRlZmF1bHQgd2lsbCBidWlsZCB0aGUgbW9kdWxlKHMpIGxvY2F0ZWQgaW4gdGhlIGN1cnJlbnQKKwlkaXJlY3RvcnksIHNvIGEgdGFyZ2V0IGRvZXMgbm90IG5lZWQgdG8gYmUgc3BlY2lmaWVkLiBBbGwKKwlvdXRwdXQgZmlsZXMgd2lsbCBhbHNvIGJlIGdlbmVyYXRlZCBpbiB0aGlzIGRpcmVjdG9yeS4gTm8KKwlhdHRlbXB0cyBhcmUgbWFkZSB0byB1cGRhdGUgdGhlIGtlcm5lbCBzb3VyY2UsIGFuZCBpdCBpcyBhCisJcHJlY29uZGl0aW9uIHRoYXQgYSBzdWNjZXNzZnVsICJtYWtlIiBoYXMgYmVlbiBleGVjdXRlZCBmb3IgdGhlCisJa2VybmVsLgorCisJbW9kdWxlcworCQlUaGUgZGVmYXVsdCB0YXJnZXQgZm9yIGV4dGVybmFsIG1vZHVsZXMuIEl0IGhhcyB0aGUKKwkJc2FtZSBmdW5jdGlvbmFsaXR5IGFzIGlmIG5vIHRhcmdldCB3YXMgc3BlY2lmaWVkLiBTZWUKKwkJZGVzY3JpcHRpb24gYWJvdmUuCisKKwltb2R1bGVzX2luc3RhbGwKKwkJSW5zdGFsbCB0aGUgZXh0ZXJuYWwgbW9kdWxlKHMpLiBUaGUgZGVmYXVsdCBsb2NhdGlvbiBpcworCQkvbGliL21vZHVsZXMvPGtlcm5lbF9yZWxlYXNlPi9leHRyYS8sIGJ1dCBhIHByZWZpeCBtYXkKKwkJYmUgYWRkZWQgd2l0aCBJTlNUQUxMX01PRF9QQVRIIChkaXNjdXNzZWQgaW4gc2VjdGlvbiA1KS4KKworCWNsZWFuCisJCVJlbW92ZSBhbGwgZ2VuZXJhdGVkIGZpbGVzIGluIHRoZSBtb2R1bGUgZGlyZWN0b3J5IG9ubHkuCisKKwloZWxwCisJCUxpc3QgdGhlIGF2YWlsYWJsZSB0YXJnZXRzIGZvciBleHRlcm5hbCBtb2R1bGVzLgorCistLS0gMi40IEJ1aWxkaW5nIFNlcGFyYXRlIEZpbGVzCisKKwlJdCBpcyBwb3NzaWJsZSB0byBidWlsZCBzaW5nbGUgZmlsZXMgdGhhdCBhcmUgcGFydCBvZiBhIG1vZHVsZS4KKwlUaGlzIHdvcmtzIGVxdWFsbHkgd2VsbCBmb3IgdGhlIGtlcm5lbCwgYSBtb2R1bGUsIGFuZCBldmVuIGZvcgorCWV4dGVybmFsIG1vZHVsZXMuCisKKwlFeGFtcGxlIChUaGUgbW9kdWxlIGZvby5rbywgY29uc2lzdCBvZiBiYXIubyBhbmQgYmF6Lm8pOgorCQltYWtlIC1DICRLRElSIE09JFBXRCBiYXIubHN0CisJCW1ha2UgLUMgJEtESVIgTT0kUFdEIGJhei5vCisJCW1ha2UgLUMgJEtESVIgTT0kUFdEIGZvby5rbworCQltYWtlIC1DICRLRElSIE09JFBXRCAvCisKKworPT09IDMuIENyZWF0aW5nIGEgS2J1aWxkIEZpbGUgZm9yIGFuIEV4dGVybmFsIE1vZHVsZQorCitJbiB0aGUgbGFzdCBzZWN0aW9uIHdlIHNhdyB0aGUgY29tbWFuZCB0byBidWlsZCBhIG1vZHVsZSBmb3IgdGhlCitydW5uaW5nIGtlcm5lbC4gVGhlIG1vZHVsZSBpcyBub3QgYWN0dWFsbHkgYnVpbHQsIGhvd2V2ZXIsIGJlY2F1c2UgYQorYnVpbGQgZmlsZSBpcyByZXF1aXJlZC4gQ29udGFpbmVkIGluIHRoaXMgZmlsZSB3aWxsIGJlIHRoZSBuYW1lIG9mCit0aGUgbW9kdWxlKHMpIGJlaW5nIGJ1aWx0LCBhbG9uZyB3aXRoIHRoZSBsaXN0IG9mIHJlcXVpc2l0ZSBzb3VyY2UKK2ZpbGVzLiBUaGUgZmlsZSBtYXkgYmUgYXMgc2ltcGxlIGFzIGEgc2luZ2xlIGxpbmU6CisKKwlvYmotbSA6PSA8bW9kdWxlX25hbWU+Lm8KKworVGhlIGtidWlsZCBzeXN0ZW0gd2lsbCBidWlsZCA8bW9kdWxlX25hbWU+Lm8gZnJvbSA8bW9kdWxlX25hbWU+LmMsCithbmQsIGFmdGVyIGxpbmtpbmcsIHdpbGwgcmVzdWx0IGluIHRoZSBrZXJuZWwgbW9kdWxlIDxtb2R1bGVfbmFtZT4ua28uCitUaGUgYWJvdmUgbGluZSBjYW4gYmUgcHV0IGluIGVpdGhlciBhICJLYnVpbGQiIGZpbGUgb3IgYSAiTWFrZWZpbGUuIgorV2hlbiB0aGUgbW9kdWxlIGlzIGJ1aWx0IGZyb20gbXVsdGlwbGUgc291cmNlcywgYW4gYWRkaXRpb25hbCBsaW5lIGlzCituZWVkZWQgbGlzdGluZyB0aGUgZmlsZXM6CisKKwk8bW9kdWxlX25hbWU+LXkgOj0gPHNyYzE+Lm8gPHNyYzI+Lm8gLi4uCisKK05PVEU6IEZ1cnRoZXIgZG9jdW1lbnRhdGlvbiBkZXNjcmliaW5nIHRoZSBzeW50YXggdXNlZCBieSBrYnVpbGQgaXMKK2xvY2F0ZWQgaW4gRG9jdW1lbnRhdGlvbi9rYnVpbGQvbWFrZWZpbGVzLnR4dC4KKworVGhlIGV4YW1wbGVzIGJlbG93IGRlbW9uc3RyYXRlIGhvdyB0byBjcmVhdGUgYSBidWlsZCBmaWxlIGZvciB0aGUKK21vZHVsZSA4MTIzLmtvLCB3aGljaCBpcyBidWlsdCBmcm9tIHRoZSBmb2xsb3dpbmcgZmlsZXM6CisKKwk4MTIzX2lmLmMKKwk4MTIzX2lmLmgKKwk4MTIzX3BjaS5jCisJODEyM19iaW4ub19zaGlwcGVkCTw9IEJpbmFyeSBibG9iCisKKy0tLSAzLjEgU2hhcmVkIE1ha2VmaWxlCisKKwlBbiBleHRlcm5hbCBtb2R1bGUgYWx3YXlzIGluY2x1ZGVzIGEgd3JhcHBlciBtYWtlZmlsZSB0aGF0CisJc3VwcG9ydHMgYnVpbGRpbmcgdGhlIG1vZHVsZSB1c2luZyAibWFrZSIgd2l0aCBubyBhcmd1bWVudHMuCisJVGhpcyB0YXJnZXQgaXMgbm90IHVzZWQgYnkga2J1aWxkOyBpdCBpcyBvbmx5IGZvciBjb252ZW5pZW5jZS4KKwlBZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHksIHN1Y2ggYXMgdGVzdCB0YXJnZXRzLCBjYW4gYmUgaW5jbHVkZWQKKwlidXQgc2hvdWxkIGJlIGZpbHRlcmVkIG91dCBmcm9tIGtidWlsZCBkdWUgdG8gcG9zc2libGUgbmFtZQorCWNsYXNoZXMuCisKKwlFeGFtcGxlIDE6CisJCS0tPiBmaWxlbmFtZTogTWFrZWZpbGUKKwkJaWZuZXEgKCQoS0VSTkVMUkVMRUFTRSksKQorCQkjIGtidWlsZCBwYXJ0IG9mIG1ha2VmaWxlCisJCW9iai1tICA6PSA4MTIzLm8KKwkJODEyMy15IDo9IDgxMjNfaWYubyA4MTIzX3BjaS5vIDgxMjNfYmluLm8KKworCQllbHNlCisJCSMgbm9ybWFsIG1ha2VmaWxlCisJCUtESVIgPz0gL2xpYi9tb2R1bGVzL2B1bmFtZSAtcmAvYnVpbGQKKworCQlkZWZhdWx0OgorCQkJJChNQUtFKSAtQyAkKEtESVIpIE09JCRQV0QKKworCQkjIE1vZHVsZSBzcGVjaWZpYyB0YXJnZXRzCisJCWdlbmJpbjoKKwkJCWVjaG8gIlgiID4gODEyM19iaW4ub19zaGlwcGVkCisKKwkJZW5kaWYKKworCVRoZSBjaGVjayBmb3IgS0VSTkVMUkVMRUFTRSBpcyB1c2VkIHRvIHNlcGFyYXRlIHRoZSB0d28gcGFydHMKKwlvZiB0aGUgbWFrZWZpbGUuIEluIHRoZSBleGFtcGxlLCBrYnVpbGQgd2lsbCBvbmx5IHNlZSB0aGUgdHdvCisJYXNzaWdubWVudHMsIHdoZXJlYXMgIm1ha2UiIHdpbGwgc2VlIGV2ZXJ5dGhpbmcgZXhjZXB0IHRoZXNlCisJdHdvIGFzc2lnbm1lbnRzLiBUaGlzIGlzIGR1ZSB0byB0d28gcGFzc2VzIG1hZGUgb24gdGhlIGZpbGU6CisJdGhlIGZpcnN0IHBhc3MgaXMgYnkgdGhlICJtYWtlIiBpbnN0YW5jZSBydW4gb24gdGhlIGNvbW1hbmQKKwlsaW5lOyB0aGUgc2Vjb25kIHBhc3MgaXMgYnkgdGhlIGtidWlsZCBzeXN0ZW0sIHdoaWNoIGlzCisJaW5pdGlhdGVkIGJ5IHRoZSBwYXJhbWV0ZXJpemVkICJtYWtlIiBpbiB0aGUgZGVmYXVsdCB0YXJnZXQuCisKKy0tLSAzLjIgU2VwYXJhdGUgS2J1aWxkIEZpbGUgYW5kIE1ha2VmaWxlCisKKwlJbiBuZXdlciB2ZXJzaW9ucyBvZiB0aGUga2VybmVsLCBrYnVpbGQgd2lsbCBmaXJzdCBsb29rIGZvciBhCisJZmlsZSBuYW1lZCAiS2J1aWxkLCIgYW5kIG9ubHkgaWYgdGhhdCBpcyBub3QgZm91bmQsIHdpbGwgaXQKKwl0aGVuIGxvb2sgZm9yIGEgbWFrZWZpbGUuIFV0aWxpemluZyBhICJLYnVpbGQiIGZpbGUgYWxsb3dzIHVzCisJdG8gc3BsaXQgdXAgdGhlIG1ha2VmaWxlIGZyb20gZXhhbXBsZSAxIGludG8gdHdvIGZpbGVzOgorCisJRXhhbXBsZSAyOgorCQktLT4gZmlsZW5hbWU6IEtidWlsZAorCQlvYmotbSAgOj0gODEyMy5vCisJCTgxMjMteSA6PSA4MTIzX2lmLm8gODEyM19wY2kubyA4MTIzX2Jpbi5vCisKKwkJLS0+IGZpbGVuYW1lOiBNYWtlZmlsZQorCQlLRElSID89IC9saWIvbW9kdWxlcy9gdW5hbWUgLXJgL2J1aWxkCisKKwkJZGVmYXVsdDoKKwkJCSQoTUFLRSkgLUMgJChLRElSKSBNPSQkUFdECisKKwkJIyBNb2R1bGUgc3BlY2lmaWMgdGFyZ2V0cworCQlnZW5iaW46CisJCQllY2hvICJYIiA+IDgxMjNfYmluLm9fc2hpcHBlZAorCisJVGhlIHNwbGl0IGluIGV4YW1wbGUgMiBpcyBxdWVzdGlvbmFibGUgZHVlIHRvIHRoZSBzaW1wbGljaXR5IG9mCisJZWFjaCBmaWxlOyBob3dldmVyLCBzb21lIGV4dGVybmFsIG1vZHVsZXMgdXNlIG1ha2VmaWxlcworCWNvbnNpc3Rpbmcgb2Ygc2V2ZXJhbCBodW5kcmVkIGxpbmVzLCBhbmQgaGVyZSBpdCByZWFsbHkgcGF5cworCW9mZiB0byBzZXBhcmF0ZSB0aGUga2J1aWxkIHBhcnQgZnJvbSB0aGUgcmVzdC4KKworCVRoZSBuZXh0IGV4YW1wbGUgc2hvd3MgYSBiYWNrd2FyZCBjb21wYXRpYmxlIHZlcnNpb24uCisKKwlFeGFtcGxlIDM6CisJCS0tPiBmaWxlbmFtZTogS2J1aWxkCisJCW9iai1tICA6PSA4MTIzLm8KKwkJODEyMy15IDo9IDgxMjNfaWYubyA4MTIzX3BjaS5vIDgxMjNfYmluLm8KKworCQktLT4gZmlsZW5hbWU6IE1ha2VmaWxlCisJCWlmbmVxICgkKEtFUk5FTFJFTEVBU0UpLCkKKwkJIyBrYnVpbGQgcGFydCBvZiBtYWtlZmlsZQorCQlpbmNsdWRlIEtidWlsZAorCisJCWVsc2UKKwkJIyBub3JtYWwgbWFrZWZpbGUKKwkJS0RJUiA/PSAvbGliL21vZHVsZXMvYHVuYW1lIC1yYC9idWlsZAorCisJCWRlZmF1bHQ6CisJCQkkKE1BS0UpIC1DICQoS0RJUikgTT0kJFBXRAorCisJCSMgTW9kdWxlIHNwZWNpZmljIHRhcmdldHMKKwkJZ2VuYmluOgorCQkJZWNobyAiWCIgPiA4MTIzX2Jpbi5vX3NoaXBwZWQKKworCQllbmRpZgorCisJSGVyZSB0aGUgIktidWlsZCIgZmlsZSBpcyBpbmNsdWRlZCBmcm9tIHRoZSBtYWtlZmlsZS4gVGhpcworCWFsbG93cyBhbiBvbGRlciB2ZXJzaW9uIG9mIGtidWlsZCwgd2hpY2ggb25seSBrbm93cyBvZgorCW1ha2VmaWxlcywgdG8gYmUgdXNlZCB3aGVuIHRoZSAibWFrZSIgYW5kIGtidWlsZCBwYXJ0cyBhcmUKKwlzcGxpdCBpbnRvIHNlcGFyYXRlIGZpbGVzLgorCistLS0gMy4zIEJpbmFyeSBCbG9icworCisJU29tZSBleHRlcm5hbCBtb2R1bGVzIG5lZWQgdG8gaW5jbHVkZSBhbiBvYmplY3QgZmlsZSBhcyBhIGJsb2IuCisJa2J1aWxkIGhhcyBzdXBwb3J0IGZvciB0aGlzLCBidXQgcmVxdWlyZXMgdGhlIGJsb2IgZmlsZSB0byBiZQorCW5hbWVkIDxmaWxlbmFtZT5fc2hpcHBlZC4gV2hlbiB0aGUga2J1aWxkIHJ1bGVzIGtpY2sgaW4sIGEgY29weQorCW9mIDxmaWxlbmFtZT5fc2hpcHBlZCBpcyBjcmVhdGVkIHdpdGggX3NoaXBwZWQgc3RyaXBwZWQgb2ZmLAorCWdpdmluZyB1cyA8ZmlsZW5hbWU+LiBUaGlzIHNob3J0ZW5lZCBmaWxlbmFtZSBjYW4gYmUgdXNlZCBpbgorCXRoZSBhc3NpZ25tZW50IHRvIHRoZSBtb2R1bGUuCisKKwlUaHJvdWdob3V0IHRoaXMgc2VjdGlvbiwgODEyM19iaW4ub19zaGlwcGVkIGhhcyBiZWVuIHVzZWQgdG8KKwlidWlsZCB0aGUga2VybmVsIG1vZHVsZSA4MTIzLmtvOyBpdCBoYXMgYmVlbiBpbmNsdWRlZCBhcworCTgxMjNfYmluLm8uCisKKwkJODEyMy15IDo9IDgxMjNfaWYubyA4MTIzX3BjaS5vIDgxMjNfYmluLm8KKworCUFsdGhvdWdoIHRoZXJlIGlzIG5vIGRpc3RpbmN0aW9uIGJldHdlZW4gdGhlIG9yZGluYXJ5IHNvdXJjZQorCWZpbGVzIGFuZCB0aGUgYmluYXJ5IGZpbGUsIGtidWlsZCB3aWxsIHBpY2sgdXAgZGlmZmVyZW50IHJ1bGVzCisJd2hlbiBjcmVhdGluZyB0aGUgb2JqZWN0IGZpbGUgZm9yIHRoZSBtb2R1bGUuCisKKy0tLSAzLjQgQnVpbGRpbmcgTXVsdGlwbGUgTW9kdWxlcworCisJa2J1aWxkIHN1cHBvcnRzIGJ1aWxkaW5nIG11bHRpcGxlIG1vZHVsZXMgd2l0aCBhIHNpbmdsZSBidWlsZAorCWZpbGUuIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudGVkIHRvIGJ1aWxkIHR3byBtb2R1bGVzLCBmb28ua28KKwlhbmQgYmFyLmtvLCB0aGUga2J1aWxkIGxpbmVzIHdvdWxkIGJlOgorCisJCW9iai1tIDo9IGZvby5vIGJhci5vCisJCWZvby15IDo9IDxmb29fc3Jjcz4KKwkJYmFyLXkgOj0gPGJhcl9zcmNzPgorCisJSXQgaXMgdGhhdCBzaW1wbGUhCisKKworPT09IDQuIEluY2x1ZGUgRmlsZXMKKworV2l0aGluIHRoZSBrZXJuZWwsIGhlYWRlciBmaWxlcyBhcmUga2VwdCBpbiBzdGFuZGFyZCBsb2NhdGlvbnMKK2FjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIHJ1bGU6CisKKwkqIElmIHRoZSBoZWFkZXIgZmlsZSBvbmx5IGRlc2NyaWJlcyB0aGUgaW50ZXJuYWwgaW50ZXJmYWNlIG9mIGEKKwkgIG1vZHVsZSwgdGhlbiB0aGUgZmlsZSBpcyBwbGFjZWQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZQorCSAgc291cmNlIGZpbGVzLgorCSogSWYgdGhlIGhlYWRlciBmaWxlIGRlc2NyaWJlcyBhbiBpbnRlcmZhY2UgdXNlZCBieSBvdGhlciBwYXJ0cworCSAgb2YgdGhlIGtlcm5lbCB0aGF0IGFyZSBsb2NhdGVkIGluIGRpZmZlcmVudCBkaXJlY3RvcmllcywgdGhlbgorCSAgdGhlIGZpbGUgaXMgcGxhY2VkIGluIGluY2x1ZGUvbGludXgvLgorCisJICBOT1RFOiBUaGVyZSBhcmUgdHdvIG5vdGFibGUgZXhjZXB0aW9ucyB0byB0aGlzIHJ1bGU6IGxhcmdlcgorCSAgc3Vic3lzdGVtcyBoYXZlIHRoZWlyIG93biBkaXJlY3RvcnkgdW5kZXIgaW5jbHVkZS8sIHN1Y2ggYXMKKwkgIGluY2x1ZGUvc2NzaTsgYW5kIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBoZWFkZXJzIGFyZSBsb2NhdGVkCisJICB1bmRlciBhcmNoLyQoQVJDSCkvaW5jbHVkZS8uCisKKy0tLSA0LjEgS2VybmVsIEluY2x1ZGVzCisKKwlUbyBpbmNsdWRlIGEgaGVhZGVyIGZpbGUgbG9jYXRlZCB1bmRlciBpbmNsdWRlL2xpbnV4Lywgc2ltcGx5CisJdXNlOgorCisJCSNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKworCWtidWlsZCB3aWxsIGFkZCBvcHRpb25zIHRvICJnY2MiIHNvIHRoZSByZWxldmFudCBkaXJlY3RvcmllcworCWFyZSBzZWFyY2hlZC4KKworLS0tIDQuMiBTaW5nbGUgU3ViZGlyZWN0b3J5CisKKwlFeHRlcm5hbCBtb2R1bGVzIHRlbmQgdG8gcGxhY2UgaGVhZGVyIGZpbGVzIGluIGEgc2VwYXJhdGUKKwlpbmNsdWRlLyBkaXJlY3Rvcnkgd2hlcmUgdGhlaXIgc291cmNlIGlzIGxvY2F0ZWQsIGFsdGhvdWdoIHRoaXMKKwlpcyBub3QgdGhlIHVzdWFsIGtlcm5lbCBzdHlsZS4gVG8gaW5mb3JtIGtidWlsZCBvZiB0aGUKKwlkaXJlY3RvcnksIHVzZSBlaXRoZXIgY2NmbGFncy15IG9yIENGTEFHU188ZmlsZW5hbWU+Lm8uCisKKwlVc2luZyB0aGUgZXhhbXBsZSBmcm9tIHNlY3Rpb24gMywgaWYgd2UgbW92ZWQgODEyM19pZi5oIHRvIGEKKwlzdWJkaXJlY3RvcnkgbmFtZWQgaW5jbHVkZSwgdGhlIHJlc3VsdGluZyBrYnVpbGQgZmlsZSB3b3VsZAorCWxvb2sgbGlrZToKKworCQktLT4gZmlsZW5hbWU6IEtidWlsZAorCQlvYmotbSA6PSA4MTIzLm8KKworCQljY2ZsYWdzLXkgOj0gLUlpbmNsdWRlCisJCTgxMjMteSA6PSA4MTIzX2lmLm8gODEyM19wY2kubyA4MTIzX2Jpbi5vCisKKwlOb3RlIHRoYXQgaW4gdGhlIGFzc2lnbm1lbnQgdGhlcmUgaXMgbm8gc3BhY2UgYmV0d2VlbiAtSSBhbmQKKwl0aGUgcGF0aC4gVGhpcyBpcyBhIGxpbWl0YXRpb24gb2Yga2J1aWxkOiB0aGVyZSBtdXN0IGJlIG5vCisJc3BhY2UgcHJlc2VudC4KKworLS0tIDQuMyBTZXZlcmFsIFN1YmRpcmVjdG9yaWVzCisKKwlrYnVpbGQgY2FuIGhhbmRsZSBmaWxlcyB0aGF0IGFyZSBzcHJlYWQgb3ZlciBzZXZlcmFsIGRpcmVjdG9yaWVzLgorCUNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKKworCS4KKwl8X18gc3JjCisJfCAgIHxfXyBjb21wbGV4X21haW4uYworCXwgICB8X18gaGFsCisJfAl8X18gaGFyZHdhcmVpZi5jCisJfAl8X18gaW5jbHVkZQorCXwJICAgIHxfXyBoYXJkd2FyZWlmLmgKKwl8X18gaW5jbHVkZQorCSAgICB8X18gY29tcGxleC5oCisKKwlUbyBidWlsZCB0aGUgbW9kdWxlIGNvbXBsZXgua28sIHdlIHRoZW4gbmVlZCB0aGUgZm9sbG93aW5nCisJa2J1aWxkIGZpbGU6CisKKwkJLS0+IGZpbGVuYW1lOiBLYnVpbGQKKwkJb2JqLW0gOj0gY29tcGxleC5vCisJCWNvbXBsZXgteSA6PSBzcmMvY29tcGxleF9tYWluLm8KKwkJY29tcGxleC15ICs9IHNyYy9oYWwvaGFyZHdhcmVpZi5vCisKKwkJY2NmbGFncy15IDo9IC1JJChzcmMpL2luY2x1ZGUKKwkJY2NmbGFncy15ICs9IC1JJChzcmMpL3NyYy9oYWwvaW5jbHVkZQorCisJQXMgeW91IGNhbiBzZWUsIGtidWlsZCBrbm93cyBob3cgdG8gaGFuZGxlIG9iamVjdCBmaWxlcyBsb2NhdGVkCisJaW4gb3RoZXIgZGlyZWN0b3JpZXMuIFRoZSB0cmljayBpcyB0byBzcGVjaWZ5IHRoZSBkaXJlY3RvcnkKKwlyZWxhdGl2ZSB0byB0aGUga2J1aWxkIGZpbGUncyBsb2NhdGlvbi4gVGhhdCBiZWluZyBzYWlkLCB0aGlzCisJaXMgTk9UIHJlY29tbWVuZGVkIHByYWN0aWNlLgorCisJRm9yIHRoZSBoZWFkZXIgZmlsZXMsIGtidWlsZCBtdXN0IGJlIGV4cGxpY2l0bHkgdG9sZCB3aGVyZSB0bworCWxvb2suIFdoZW4ga2J1aWxkIGV4ZWN1dGVzLCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgYWx3YXlzIHRoZQorCXJvb3Qgb2YgdGhlIGtlcm5lbCB0cmVlICh0aGUgYXJndW1lbnQgdG8gIi1DIikgYW5kIHRoZXJlZm9yZSBhbgorCWFic29sdXRlIHBhdGggaXMgbmVlZGVkLiAkKHNyYykgcHJvdmlkZXMgdGhlIGFic29sdXRlIHBhdGggYnkKKwlwb2ludGluZyB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIGtidWlsZAorCWZpbGUgaXMgbG9jYXRlZC4KKworCis9PT0gNS4gTW9kdWxlIEluc3RhbGxhdGlvbgorCitNb2R1bGVzIHdoaWNoIGFyZSBpbmNsdWRlZCBpbiB0aGUga2VybmVsIGFyZSBpbnN0YWxsZWQgaW4gdGhlCitkaXJlY3Rvcnk6CisKKwkvbGliL21vZHVsZXMvJChLRVJORUxSRUxFQVNFKS9rZXJuZWwvCisKK0FuZCBleHRlcm5hbCBtb2R1bGVzIGFyZSBpbnN0YWxsZWQgaW46CisKKwkvbGliL21vZHVsZXMvJChLRVJORUxSRUxFQVNFKS9leHRyYS8KKworLS0tIDUuMSBJTlNUQUxMX01PRF9QQVRICisKKwlBYm92ZSBhcmUgdGhlIGRlZmF1bHQgZGlyZWN0b3JpZXMgYnV0IGFzIGFsd2F5cyBzb21lIGxldmVsIG9mCisJY3VzdG9taXphdGlvbiBpcyBwb3NzaWJsZS4gQSBwcmVmaXggY2FuIGJlIGFkZGVkIHRvIHRoZQorCWluc3RhbGxhdGlvbiBwYXRoIHVzaW5nIHRoZSB2YXJpYWJsZSBJTlNUQUxMX01PRF9QQVRIOgorCisJCSQgbWFrZSBJTlNUQUxMX01PRF9QQVRIPS9mcm9kbyBtb2R1bGVzX2luc3RhbGwKKwkJPT4gSW5zdGFsbCBkaXI6IC9mcm9kby9saWIvbW9kdWxlcy8kKEtFUk5FTFJFTEVBU0UpL2tlcm5lbC8KKworCUlOU1RBTExfTU9EX1BBVEggbWF5IGJlIHNldCBhcyBhbiBvcmRpbmFyeSBzaGVsbCB2YXJpYWJsZSBvciwKKwlhcyBzaG93biBhYm92ZSwgY2FuIGJlIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lIHdoZW4KKwljYWxsaW5nICJtYWtlLiIgVGhpcyBoYXMgZWZmZWN0IHdoZW4gaW5zdGFsbGluZyBib3RoIGluLXRyZWUKKwlhbmQgb3V0LW9mLXRyZWUgbW9kdWxlcy4KKworLS0tIDUuMiBJTlNUQUxMX01PRF9ESVIKKworCUV4dGVybmFsIG1vZHVsZXMgYXJlIGJ5IGRlZmF1bHQgaW5zdGFsbGVkIHRvIGEgZGlyZWN0b3J5IHVuZGVyCisJL2xpYi9tb2R1bGVzLyQoS0VSTkVMUkVMRUFTRSkvZXh0cmEvLCBidXQgeW91IG1heSB3aXNoIHRvCisJbG9jYXRlIG1vZHVsZXMgZm9yIGEgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBpbiBhIHNlcGFyYXRlCisJZGlyZWN0b3J5LiBGb3IgdGhpcyBwdXJwb3NlLCB1c2UgSU5TVEFMTF9NT0RfRElSIHRvIHNwZWNpZnkgYW4KKwlhbHRlcm5hdGl2ZSBuYW1lIHRvICJleHRyYS4iCisKKwkJJCBtYWtlIElOU1RBTExfTU9EX0RJUj1nYW5kYWxmIC1DICRLRElSIFwKKwkJICAgICAgIE09JFBXRCBtb2R1bGVzX2luc3RhbGwKKwkJPT4gSW5zdGFsbCBkaXI6IC9saWIvbW9kdWxlcy8kKEtFUk5FTFJFTEVBU0UpL2dhbmRhbGYvCisKKworPT09IDYuIE1vZHVsZSBWZXJzaW9uaW5nCisKK01vZHVsZSB2ZXJzaW9uaW5nIGlzIGVuYWJsZWQgYnkgdGhlIENPTkZJR19NT0RWRVJTSU9OUyB0YWcsIGFuZCBpcyB1c2VkCithcyBhIHNpbXBsZSBBQkkgY29uc2lzdGVuY3kgY2hlY2suIEEgQ1JDIHZhbHVlIG9mIHRoZSBmdWxsIHByb3RvdHlwZQorZm9yIGFuIGV4cG9ydGVkIHN5bWJvbCBpcyBjcmVhdGVkLiBXaGVuIGEgbW9kdWxlIGlzIGxvYWRlZC91c2VkLCB0aGUKK0NSQyB2YWx1ZXMgY29udGFpbmVkIGluIHRoZSBrZXJuZWwgYXJlIGNvbXBhcmVkIHdpdGggc2ltaWxhciB2YWx1ZXMgaW4KK3RoZSBtb2R1bGU7IGlmIHRoZXkgYXJlIG5vdCBlcXVhbCwgdGhlIGtlcm5lbCByZWZ1c2VzIHRvIGxvYWQgdGhlCittb2R1bGUuCisKK01vZHVsZS5zeW12ZXJzIGNvbnRhaW5zIGEgbGlzdCBvZiBhbGwgZXhwb3J0ZWQgc3ltYm9scyBmcm9tIGEga2VybmVsCitidWlsZC4KKworLS0tIDYuMSBTeW1ib2xzIEZyb20gdGhlIEtlcm5lbCAodm1saW51eCArIG1vZHVsZXMpCisKKwlEdXJpbmcgYSBrZXJuZWwgYnVpbGQsIGEgZmlsZSBuYW1lZCBNb2R1bGUuc3ltdmVycyB3aWxsIGJlCisJZ2VuZXJhdGVkLiBNb2R1bGUuc3ltdmVycyBjb250YWlucyBhbGwgZXhwb3J0ZWQgc3ltYm9scyBmcm9tCisJdGhlIGtlcm5lbCBhbmQgY29tcGlsZWQgbW9kdWxlcy4gRm9yIGVhY2ggc3ltYm9sLCB0aGUKKwljb3JyZXNwb25kaW5nIENSQyB2YWx1ZSBpcyBhbHNvIHN0b3JlZC4KKworCVRoZSBzeW50YXggb2YgdGhlIE1vZHVsZS5zeW12ZXJzIGZpbGUgaXM6CisJCTxDUkM+CSAgICA8U3ltYm9sPgkgICAgICAgPG1vZHVsZT4KKworCQkweDJkMDM2ODM0ICBzY3NpX3JlbW92ZV9ob3N0ICAgZHJpdmVycy9zY3NpL3Njc2lfbW9kCisKKwlGb3IgYSBrZXJuZWwgYnVpbGQgd2l0aG91dCBDT05GSUdfTU9EVkVSU0lPTlMgZW5hYmxlZCwgdGhlIENSQworCXdvdWxkIHJlYWQgMHgwMDAwMDAwMC4KKworCU1vZHVsZS5zeW12ZXJzIHNlcnZlcyB0d28gcHVycG9zZXM6CisJMSkgSXQgbGlzdHMgYWxsIGV4cG9ydGVkIHN5bWJvbHMgZnJvbSB2bWxpbnV4IGFuZCBhbGwgbW9kdWxlcy4KKwkyKSBJdCBsaXN0cyB0aGUgQ1JDIGlmIENPTkZJR19NT0RWRVJTSU9OUyBpcyBlbmFibGVkLgorCistLS0gNi4yIFN5bWJvbHMgYW5kIEV4dGVybmFsIE1vZHVsZXMKKworCVdoZW4gYnVpbGRpbmcgYW4gZXh0ZXJuYWwgbW9kdWxlLCB0aGUgYnVpbGQgc3lzdGVtIG5lZWRzIGFjY2VzcworCXRvIHRoZSBzeW1ib2xzIGZyb20gdGhlIGtlcm5lbCB0byBjaGVjayBpZiBhbGwgZXh0ZXJuYWwgc3ltYm9scworCWFyZSBkZWZpbmVkLiBUaGlzIGlzIGRvbmUgaW4gdGhlIE1PRFBPU1Qgc3RlcC4gbW9kcG9zdCBvYnRhaW5zCisJdGhlIHN5bWJvbHMgYnkgcmVhZGluZyBNb2R1bGUuc3ltdmVycyBmcm9tIHRoZSBrZXJuZWwgc291cmNlCisJdHJlZS4gSWYgYSBNb2R1bGUuc3ltdmVycyBmaWxlIGlzIHByZXNlbnQgaW4gdGhlIGRpcmVjdG9yeQorCXdoZXJlIHRoZSBleHRlcm5hbCBtb2R1bGUgaXMgYmVpbmcgYnVpbHQsIHRoaXMgZmlsZSB3aWxsIGJlCisJcmVhZCB0b28uIER1cmluZyB0aGUgTU9EUE9TVCBzdGVwLCBhIG5ldyBNb2R1bGUuc3ltdmVycyBmaWxlCisJd2lsbCBiZSB3cml0dGVuIGNvbnRhaW5pbmcgYWxsIGV4cG9ydGVkIHN5bWJvbHMgdGhhdCB3ZXJlIG5vdAorCWRlZmluZWQgaW4gdGhlIGtlcm5lbC4KKworLS0tIDYuMyBTeW1ib2xzIEZyb20gQW5vdGhlciBFeHRlcm5hbCBNb2R1bGUKKworCVNvbWV0aW1lcywgYW4gZXh0ZXJuYWwgbW9kdWxlIHVzZXMgZXhwb3J0ZWQgc3ltYm9scyBmcm9tCisJYW5vdGhlciBleHRlcm5hbCBtb2R1bGUuIGtidWlsZCBuZWVkcyB0byBoYXZlIGZ1bGwga25vd2xlZGdlIG9mCisJYWxsIHN5bWJvbHMgdG8gYXZvaWQgc3BpdHRpbmcgb3V0IHdhcm5pbmdzIGFib3V0IHVuZGVmaW5lZAorCXN5bWJvbHMuIFRocmVlIHNvbHV0aW9ucyBleGlzdCBmb3IgdGhpcyBzaXR1YXRpb24uCisKKwlOT1RFOiBUaGUgbWV0aG9kIHdpdGggYSB0b3AtbGV2ZWwga2J1aWxkIGZpbGUgaXMgcmVjb21tZW5kZWQKKwlidXQgbWF5IGJlIGltcHJhY3RpY2FsIGluIGNlcnRhaW4gc2l0dWF0aW9ucy4KKworCVVzZSBhIHRvcC1sZXZlbCBrYnVpbGQgZmlsZQorCQlJZiB5b3UgaGF2ZSB0d28gbW9kdWxlcywgZm9vLmtvIGFuZCBiYXIua28sIHdoZXJlCisJCWZvby5rbyBuZWVkcyBzeW1ib2xzIGZyb20gYmFyLmtvLCB5b3UgY2FuIHVzZSBhCisJCWNvbW1vbiB0b3AtbGV2ZWwga2J1aWxkIGZpbGUgc28gYm90aCBtb2R1bGVzIGFyZQorCQljb21waWxlZCBpbiB0aGUgc2FtZSBidWlsZC4gQ29uc2lkZXIgdGhlIGZvbGxvd2luZworCQlkaXJlY3RvcnkgbGF5b3V0OgorCisJCS4vZm9vLyA8PSBjb250YWlucyBmb28ua28KKwkJLi9iYXIvIDw9IGNvbnRhaW5zIGJhci5rbworCisJCVRoZSB0b3AtbGV2ZWwga2J1aWxkIGZpbGUgd291bGQgdGhlbiBsb29rIGxpa2U6CisKKwkJIy4vS2J1aWxkIChvciAuL01ha2VmaWxlKToKKwkJCW9iai15IDo9IGZvby8gYmFyLworCisJCUFuZCBleGVjdXRpbmcKKworCQkJJCBtYWtlIC1DICRLRElSIE09JFBXRAorCisJCXdpbGwgdGhlbiBkbyB0aGUgZXhwZWN0ZWQgYW5kIGNvbXBpbGUgYm90aCBtb2R1bGVzIHdpdGgKKwkJZnVsbCBrbm93bGVkZ2Ugb2Ygc3ltYm9scyBmcm9tIGVpdGhlciBtb2R1bGUuCisKKwlVc2UgYW4gZXh0cmEgTW9kdWxlLnN5bXZlcnMgZmlsZQorCQlXaGVuIGFuIGV4dGVybmFsIG1vZHVsZSBpcyBidWlsdCwgYSBNb2R1bGUuc3ltdmVycyBmaWxlCisJCWlzIGdlbmVyYXRlZCBjb250YWluaW5nIGFsbCBleHBvcnRlZCBzeW1ib2xzIHdoaWNoIGFyZQorCQlub3QgZGVmaW5lZCBpbiB0aGUga2VybmVsLiBUbyBnZXQgYWNjZXNzIHRvIHN5bWJvbHMKKwkJZnJvbSBiYXIua28sIGNvcHkgdGhlIE1vZHVsZS5zeW12ZXJzIGZpbGUgZnJvbSB0aGUKKwkJY29tcGlsYXRpb24gb2YgYmFyLmtvIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgZm9vLmtvIGlzCisJCWJ1aWx0LiBEdXJpbmcgdGhlIG1vZHVsZSBidWlsZCwga2J1aWxkIHdpbGwgcmVhZCB0aGUKKwkJTW9kdWxlLnN5bXZlcnMgZmlsZSBpbiB0aGUgZGlyZWN0b3J5IG9mIHRoZSBleHRlcm5hbAorCQltb2R1bGUsIGFuZCB3aGVuIHRoZSBidWlsZCBpcyBmaW5pc2hlZCwgYSBuZXcKKwkJTW9kdWxlLnN5bXZlcnMgZmlsZSBpcyBjcmVhdGVkIGNvbnRhaW5pbmcgdGhlIHN1bSBvZgorCQlhbGwgc3ltYm9scyBkZWZpbmVkIGFuZCBub3QgcGFydCBvZiB0aGUga2VybmVsLgorCisJVXNlICJtYWtlIiB2YXJpYWJsZSBLQlVJTERfRVhUUkFfU1lNQk9MUworCQlJZiBpdCBpcyBpbXByYWN0aWNhbCB0byBjb3B5IE1vZHVsZS5zeW12ZXJzIGZyb20KKwkJYW5vdGhlciBtb2R1bGUsIHlvdSBjYW4gYXNzaWduIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3QKKwkJb2YgZmlsZXMgdG8gS0JVSUxEX0VYVFJBX1NZTUJPTFMgaW4geW91ciBidWlsZCBmaWxlLgorCQlUaGVzZSBmaWxlcyB3aWxsIGJlIGxvYWRlZCBieSBtb2Rwb3N0IGR1cmluZyB0aGUKKwkJaW5pdGlhbGl6YXRpb24gb2YgaXRzIHN5bWJvbCB0YWJsZXMuCisKKworPT09IDcuIFRpcHMgJiBUcmlja3MKKworLS0tIDcuMSBUZXN0aW5nIGZvciBDT05GSUdfRk9PX0JBUgorCisJTW9kdWxlcyBvZnRlbiBuZWVkIHRvIGNoZWNrIGZvciBjZXJ0YWluIENPTkZJR18gb3B0aW9ucyB0bworCWRlY2lkZSBpZiBhIHNwZWNpZmljIGZlYXR1cmUgaXMgaW5jbHVkZWQgaW4gdGhlIG1vZHVsZS4gSW4KKwlrYnVpbGQgdGhpcyBpcyBkb25lIGJ5IHJlZmVyZW5jaW5nIHRoZSBDT05GSUdfIHZhcmlhYmxlCisJZGlyZWN0bHkuCisKKwkJI2ZzL2V4dDIvTWFrZWZpbGUKKwkJb2JqLSQoQ09ORklHX0VYVDJfRlMpICs9IGV4dDIubworCisJCWV4dDIteSA6PSBiYWxsb2MubyBiaXRtYXAubyBkaXIubworCQlleHQyLSQoQ09ORklHX0VYVDJfRlNfWEFUVFIpICs9IHhhdHRyLm8KKworCUV4dGVybmFsIG1vZHVsZXMgaGF2ZSB0cmFkaXRpb25hbGx5IHVzZWQgImdyZXAiIHRvIGNoZWNrIGZvcgorCXNwZWNpZmljIENPTkZJR18gc2V0dGluZ3MgZGlyZWN0bHkgaW4gLmNvbmZpZy4gVGhpcyB1c2FnZSBpcworCWJyb2tlbi4gQXMgaW50cm9kdWNlZCBiZWZvcmUsIGV4dGVybmFsIG1vZHVsZXMgc2hvdWxkIHVzZQorCWtidWlsZCBmb3IgYnVpbGRpbmcgYW5kIGNhbiB0aGVyZWZvcmUgdXNlIHRoZSBzYW1lIG1ldGhvZHMgYXMKKwlpbi10cmVlIG1vZHVsZXMgd2hlbiB0ZXN0aW5nIGZvciBDT05GSUdfIGRlZmluaXRpb25zLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2tkdW1wL2dkYm1hY3Jvcy50eHQgYi9Eb2N1bWVudGF0aW9uL2tkdW1wL2dkYm1hY3Jvcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI5YjQ1NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24va2R1bXAvZ2RibWFjcm9zLnR4dApAQCAtMCwwICsxLDIwMSBAQAorIworIyBUaGlzIGZpbGUgY29udGFpbnMgYSBmZXcgZ2RiIG1hY3JvcyAodXNlciBkZWZpbmVkIGNvbW1hbmRzKSB0byBleHRyYWN0CisjIHVzZWZ1bCBpbmZvcm1hdGlvbiBmcm9tIGtlcm5lbCBjcmFzaGR1bXAgKGtkdW1wKSBsaWtlIHN0YWNrIHRyYWNlcyBvZgorIyBhbGwgdGhlIHByb2Nlc3NlcyBvciBhIHBhcnRpY3VsYXIgcHJvY2VzcyBhbmQgdHJhcGluZm8uCisjCisjIFRoZXNlIG1hY3JvcyBjYW4gYmUgdXNlZCBieSBjb3B5aW5nIHRoaXMgZmlsZSBpbiAuZ2RiaW5pdCAocHV0IGluIGhvbWUKKyMgZGlyZWN0b3J5IG9yIGN1cnJlbnQgZGlyZWN0b3J5KSBvciBieSBpbnZva2luZyBnZGIgY29tbWFuZCB3aXRoCisjIC0tY29tbWFuZD08Y29tbWFuZC1maWxlLW5hbWU+IG9wdGlvbgorIworIyBDcmVkaXRzOgorIyBBbGV4YW5kZXIgTnliZXJnIDxhbGV4bkB0ZWxpYS5jb20+CisjIFYgU3JpdmF0c2EgPHZhdHNhQGluLmlibS5jb20+CisjIE1hbmVlc2ggU29uaSA8bWFuZWVzaEBpbi5pYm0uY29tPgorIworCitkZWZpbmUgYnR0bm9icAorCXNldCAkdGFza3Nfb2ZmPSgoc2l6ZV90KSYoKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTApLT50YXNrcykKKwlzZXQgJHBpZF9vZmY9KChzaXplX3QpJigoc3RydWN0IHRhc2tfc3RydWN0ICopMCktPnBpZHNbMV0ucGlkX2xpc3QubmV4dCkKKwlzZXQgJGluaXRfdD0maW5pdF90YXNrCisJc2V0ICRuZXh0X3Q9KCgoY2hhciAqKSgkaW5pdF90LT50YXNrcykubmV4dCkgLSAkdGFza3Nfb2ZmKQorCXdoaWxlICgkbmV4dF90ICE9ICRpbml0X3QpCisJCXNldCAkbmV4dF90PShzdHJ1Y3QgdGFza19zdHJ1Y3QgKikkbmV4dF90CisJCXByaW50ZiAiXG5waWQgJWQ7IGNvbW0gJXM6XG4iLCAkbmV4dF90LnBpZCwgJG5leHRfdC5jb21tCisJCXByaW50ZiAiPT09PT09PT09PT09PT09PT09PVxuIgorCQlzZXQgdmFyICRzdGFja3AgPSAkbmV4dF90LnRocmVhZC5lc3AKKwkJc2V0IHZhciAkc3RhY2tfdG9wID0gKCRzdGFja3AgJiB+NDA5NSkgKyA0MDk2CisKKwkJd2hpbGUgKCRzdGFja3AgPCAkc3RhY2tfdG9wKQorCQkJaWYgKCooJHN0YWNrcCkgPiBfc3RleHQgJiYgKigkc3RhY2twKSA8IF9zaW5pdHRleHQpCisJCQkJaW5mbyBzeW1ib2wgKigkc3RhY2twKQorCQkJZW5kCisJCQlzZXQgJHN0YWNrcCArPSA0CisJCWVuZAorCQlzZXQgJG5leHRfdGg9KCgoY2hhciAqKSRuZXh0X3QtPnBpZHNbMV0ucGlkX2xpc3QubmV4dCkgLSAkcGlkX29mZikKKwkJd2hpbGUgKCRuZXh0X3RoICE9ICRuZXh0X3QpCisJCQlzZXQgJG5leHRfdGg9KHN0cnVjdCB0YXNrX3N0cnVjdCAqKSRuZXh0X3RoCisJCQlwcmludGYgIlxucGlkICVkOyBjb21tICVzOlxuIiwgJG5leHRfdC5waWQsICRuZXh0X3QuY29tbQorCQkJcHJpbnRmICI9PT09PT09PT09PT09PT09PT09XG4iCisJCQlzZXQgdmFyICRzdGFja3AgPSAkbmV4dF90LnRocmVhZC5lc3AKKwkJCXNldCB2YXIgJHN0YWNrX3RvcCA9ICgkc3RhY2twICYgfjQwOTUpICsgNDA5NgorCisJCQl3aGlsZSAoJHN0YWNrcCA8ICRzdGFja190b3ApCisJCQkJaWYgKCooJHN0YWNrcCkgPiBfc3RleHQgJiYgKigkc3RhY2twKSA8IF9zaW5pdHRleHQpCisJCQkJCWluZm8gc3ltYm9sICooJHN0YWNrcCkKKwkJCQllbmQKKwkJCQlzZXQgJHN0YWNrcCArPSA0CisJCQllbmQKKwkJCXNldCAkbmV4dF90aD0oKChjaGFyICopJG5leHRfdGgtPnBpZHNbMV0ucGlkX2xpc3QubmV4dCkgLSAkcGlkX29mZikKKwkJZW5kCisJCXNldCAkbmV4dF90PShjaGFyICopKCRuZXh0X3QtPnRhc2tzLm5leHQpIC0gJHRhc2tzX29mZgorCWVuZAorZW5kCitkb2N1bWVudCBidHRub2JwCisJZHVtcCBhbGwgdGhyZWFkIHN0YWNrIHRyYWNlcyBvbiBhIGtlcm5lbCBjb21waWxlZCB3aXRoICFDT05GSUdfRlJBTUVfUE9JTlRFUgorZW5kCisKK2RlZmluZSBidHQKKwlzZXQgJHRhc2tzX29mZj0oKHNpemVfdCkmKChzdHJ1Y3QgdGFza19zdHJ1Y3QgKikwKS0+dGFza3MpCisJc2V0ICRwaWRfb2ZmPSgoc2l6ZV90KSYoKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTApLT5waWRzWzFdLnBpZF9saXN0Lm5leHQpCisJc2V0ICRpbml0X3Q9JmluaXRfdGFzaworCXNldCAkbmV4dF90PSgoKGNoYXIgKikoJGluaXRfdC0+dGFza3MpLm5leHQpIC0gJHRhc2tzX29mZikKKwl3aGlsZSAoJG5leHRfdCAhPSAkaW5pdF90KQorCQlzZXQgJG5leHRfdD0oc3RydWN0IHRhc2tfc3RydWN0ICopJG5leHRfdAorCQlwcmludGYgIlxucGlkICVkOyBjb21tICVzOlxuIiwgJG5leHRfdC5waWQsICRuZXh0X3QuY29tbQorCQlwcmludGYgIj09PT09PT09PT09PT09PT09PT1cbiIKKwkJc2V0IHZhciAkc3RhY2twID0gJG5leHRfdC50aHJlYWQuZXNwCisJCXNldCB2YXIgJHN0YWNrX3RvcCA9ICgkc3RhY2twICYgfjQwOTUpICsgNDA5NgorCQlzZXQgdmFyICRzdGFja19ib3QgPSAoJHN0YWNrcCAmIH40MDk1KQorCisJCXNldCAkc3RhY2twID0gKigkc3RhY2twKQorCQl3aGlsZSAoKCRzdGFja3AgPCAkc3RhY2tfdG9wKSAmJiAoJHN0YWNrcCA+ICRzdGFja19ib3QpKQorCQkJc2V0IHZhciAkYWRkciA9ICooJHN0YWNrcCArIDQpCisJCQlpbmZvIHN5bWJvbCAkYWRkcgorCQkJc2V0ICRzdGFja3AgPSAqKCRzdGFja3ApCisJCWVuZAorCisJCXNldCAkbmV4dF90aD0oKChjaGFyICopJG5leHRfdC0+cGlkc1sxXS5waWRfbGlzdC5uZXh0KSAtICRwaWRfb2ZmKQorCQl3aGlsZSAoJG5leHRfdGggIT0gJG5leHRfdCkKKwkJCXNldCAkbmV4dF90aD0oc3RydWN0IHRhc2tfc3RydWN0ICopJG5leHRfdGgKKwkJCXByaW50ZiAiXG5waWQgJWQ7IGNvbW0gJXM6XG4iLCAkbmV4dF90LnBpZCwgJG5leHRfdC5jb21tCisJCQlwcmludGYgIj09PT09PT09PT09PT09PT09PT1cbiIKKwkJCXNldCB2YXIgJHN0YWNrcCA9ICRuZXh0X3QudGhyZWFkLmVzcAorCQkJc2V0IHZhciAkc3RhY2tfdG9wID0gKCRzdGFja3AgJiB+NDA5NSkgKyA0MDk2CisJCQlzZXQgdmFyICRzdGFja19ib3QgPSAoJHN0YWNrcCAmIH40MDk1KQorCisJCQlzZXQgJHN0YWNrcCA9ICooJHN0YWNrcCkKKwkJCXdoaWxlICgoJHN0YWNrcCA8ICRzdGFja190b3ApICYmICgkc3RhY2twID4gJHN0YWNrX2JvdCkpCisJCQkJc2V0IHZhciAkYWRkciA9ICooJHN0YWNrcCArIDQpCisJCQkJaW5mbyBzeW1ib2wgJGFkZHIKKwkJCQlzZXQgJHN0YWNrcCA9ICooJHN0YWNrcCkKKwkJCWVuZAorCQkJc2V0ICRuZXh0X3RoPSgoKGNoYXIgKikkbmV4dF90aC0+cGlkc1sxXS5waWRfbGlzdC5uZXh0KSAtICRwaWRfb2ZmKQorCQllbmQKKwkJc2V0ICRuZXh0X3Q9KGNoYXIgKikoJG5leHRfdC0+dGFza3MubmV4dCkgLSAkdGFza3Nfb2ZmCisJZW5kCitlbmQKK2RvY3VtZW50IGJ0dAorCWR1bXAgYWxsIHRocmVhZCBzdGFjayB0cmFjZXMgb24gYSBrZXJuZWwgY29tcGlsZWQgd2l0aCBDT05GSUdfRlJBTUVfUE9JTlRFUgorZW5kCisKK2RlZmluZSBidHBpZAorCXNldCB2YXIgJHBpZCA9ICRhcmcwCisJc2V0ICR0YXNrc19vZmY9KChzaXplX3QpJigoc3RydWN0IHRhc2tfc3RydWN0ICopMCktPnRhc2tzKQorCXNldCAkcGlkX29mZj0oKHNpemVfdCkmKChzdHJ1Y3QgdGFza19zdHJ1Y3QgKikwKS0+cGlkc1sxXS5waWRfbGlzdC5uZXh0KQorCXNldCAkaW5pdF90PSZpbml0X3Rhc2sKKwlzZXQgJG5leHRfdD0oKChjaGFyICopKCRpbml0X3QtPnRhc2tzKS5uZXh0KSAtICR0YXNrc19vZmYpCisJc2V0IHZhciAkcGlkX3Rhc2sgPSAwCisKKwl3aGlsZSAoJG5leHRfdCAhPSAkaW5pdF90KQorCQlzZXQgJG5leHRfdD0oc3RydWN0IHRhc2tfc3RydWN0ICopJG5leHRfdAorCisJCWlmICgkbmV4dF90LnBpZCA9PSAkcGlkKQorCQkJc2V0ICRwaWRfdGFzayA9ICRuZXh0X3QKKwkJZW5kCisKKwkJc2V0ICRuZXh0X3RoPSgoKGNoYXIgKikkbmV4dF90LT5waWRzWzFdLnBpZF9saXN0Lm5leHQpIC0gJHBpZF9vZmYpCisJCXdoaWxlICgkbmV4dF90aCAhPSAkbmV4dF90KQorCQkJc2V0ICRuZXh0X3RoPShzdHJ1Y3QgdGFza19zdHJ1Y3QgKikkbmV4dF90aAorCQkJaWYgKCRuZXh0X3RoLnBpZCA9PSAkcGlkKQorCQkJCXNldCAkcGlkX3Rhc2sgPSAkbmV4dF90aAorCQkJZW5kCisJCQlzZXQgJG5leHRfdGg9KCgoY2hhciAqKSRuZXh0X3RoLT5waWRzWzFdLnBpZF9saXN0Lm5leHQpIC0gJHBpZF9vZmYpCisJCWVuZAorCQlzZXQgJG5leHRfdD0oY2hhciAqKSgkbmV4dF90LT50YXNrcy5uZXh0KSAtICR0YXNrc19vZmYKKwllbmQKKworCXByaW50ZiAiXG5waWQgJWQ7IGNvbW0gJXM6XG4iLCAkcGlkX3Rhc2sucGlkLCAkcGlkX3Rhc2suY29tbQorCXByaW50ZiAiPT09PT09PT09PT09PT09PT09PVxuIgorCXNldCB2YXIgJHN0YWNrcCA9ICRwaWRfdGFzay50aHJlYWQuZXNwCisJc2V0IHZhciAkc3RhY2tfdG9wID0gKCRzdGFja3AgJiB+NDA5NSkgKyA0MDk2CisJc2V0IHZhciAkc3RhY2tfYm90ID0gKCRzdGFja3AgJiB+NDA5NSkKKworCXNldCAkc3RhY2twID0gKigkc3RhY2twKQorCXdoaWxlICgoJHN0YWNrcCA8ICRzdGFja190b3ApICYmICgkc3RhY2twID4gJHN0YWNrX2JvdCkpCisJCXNldCB2YXIgJGFkZHIgPSAqKCRzdGFja3AgKyA0KQorCQlpbmZvIHN5bWJvbCAkYWRkcgorCQlzZXQgJHN0YWNrcCA9ICooJHN0YWNrcCkKKwllbmQKK2VuZAorZG9jdW1lbnQgYnRwaWQKKwliYWNrdHJhY2Ugb2YgcGlkCitlbmQKKworCitkZWZpbmUgdHJhcGluZm8KKwlzZXQgdmFyICRwaWQgPSAkYXJnMAorCXNldCAkdGFza3Nfb2ZmPSgoc2l6ZV90KSYoKHN0cnVjdCB0YXNrX3N0cnVjdCAqKTApLT50YXNrcykKKwlzZXQgJHBpZF9vZmY9KChzaXplX3QpJigoc3RydWN0IHRhc2tfc3RydWN0ICopMCktPnBpZHNbMV0ucGlkX2xpc3QubmV4dCkKKwlzZXQgJGluaXRfdD0maW5pdF90YXNrCisJc2V0ICRuZXh0X3Q9KCgoY2hhciAqKSgkaW5pdF90LT50YXNrcykubmV4dCkgLSAkdGFza3Nfb2ZmKQorCXNldCB2YXIgJHBpZF90YXNrID0gMAorCisJd2hpbGUgKCRuZXh0X3QgIT0gJGluaXRfdCkKKwkJc2V0ICRuZXh0X3Q9KHN0cnVjdCB0YXNrX3N0cnVjdCAqKSRuZXh0X3QKKworCQlpZiAoJG5leHRfdC5waWQgPT0gJHBpZCkKKwkJCXNldCAkcGlkX3Rhc2sgPSAkbmV4dF90CisJCWVuZAorCisJCXNldCAkbmV4dF90aD0oKChjaGFyICopJG5leHRfdC0+cGlkc1sxXS5waWRfbGlzdC5uZXh0KSAtICRwaWRfb2ZmKQorCQl3aGlsZSAoJG5leHRfdGggIT0gJG5leHRfdCkKKwkJCXNldCAkbmV4dF90aD0oc3RydWN0IHRhc2tfc3RydWN0ICopJG5leHRfdGgKKwkJCWlmICgkbmV4dF90aC5waWQgPT0gJHBpZCkKKwkJCQlzZXQgJHBpZF90YXNrID0gJG5leHRfdGgKKwkJCWVuZAorCQkJc2V0ICRuZXh0X3RoPSgoKGNoYXIgKikkbmV4dF90aC0+cGlkc1sxXS5waWRfbGlzdC5uZXh0KSAtICRwaWRfb2ZmKQorCQllbmQKKwkJc2V0ICRuZXh0X3Q9KGNoYXIgKikoJG5leHRfdC0+dGFza3MubmV4dCkgLSAkdGFza3Nfb2ZmCisJZW5kCisKKwlwcmludGYgIlRyYXBubyAlbGQsIGNyMiAweCVseCwgZXJyb3JfY29kZSAlbGRcbiIsICRwaWRfdGFzay50aHJlYWQudHJhcF9ubywgXAorCQkJCSRwaWRfdGFzay50aHJlYWQuY3IyLCAkcGlkX3Rhc2sudGhyZWFkLmVycm9yX2NvZGUKKworZW5kCitkb2N1bWVudCB0cmFwaW5mbworCVJ1biBpbmZvIHRocmVhZHMgYW5kIGxvb2t1cCBwaWQgb2YgdGhyZWFkICMxCisJJ3RyYXBpbmZvIDxwaWQ+JyB3aWxsIHRlbGwgeW91IGJ5IHdoaWNoIHRyYXAgJiBwb3NzaWJseQorCWFkZHJlc3MgdGhlIGtlcm5lbCBwYW5pY2tlZC4KK2VuZAorCisKK2RlZmluZSBkbWVzZworCXNldCAkaSA9IDAKKwlzZXQgJGVuZF9pZHggPSAobG9nX2VuZCAtIDEpICYgKGxvZ19idWZfbGVuIC0gMSkKKworCXdoaWxlICgkaSA8IGxvZ2dlZF9jaGFycykKKwkJc2V0ICRpZHggPSAobG9nX2VuZCAtIDEgLSBsb2dnZWRfY2hhcnMgKyAkaSkgJiAobG9nX2J1Zl9sZW4gLSAxKQorCisJCWlmICgkaWR4ICsgMTAwIDw9ICRlbmRfaWR4KSB8fCBcCisJCSAgICgkZW5kX2lkeCA8PSAkaWR4ICYmICRpZHggKyAxMDAgPCBsb2dfYnVmX2xlbikKKwkJCXByaW50ZiAiJS4xMDBzIiwgJmxvZ19idWZbJGlkeF0KKwkJCXNldCAkaSA9ICRpICsgMTAwCisJCWVsc2UKKwkJCXByaW50ZiAiJWMiLCBsb2dfYnVmWyRpZHhdCisJCQlzZXQgJGkgPSAkaSArIDEKKwkJZW5kCisJZW5kCitlbmQKK2RvY3VtZW50IGRtZXNnCisJcHJpbnQgdGhlIGtlcm5lbCByaW5nIGJ1ZmZlcgorZW5kCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2tkdW1wL2tkdW1wLnR4dCBiL0RvY3VtZW50YXRpb24va2R1bXAva2R1bXAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNGJkNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2tkdW1wL2tkdW1wLnR4dApAQCAtMCwwICsxLDQ4NyBAQAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorRG9jdW1lbnRhdGlvbiBmb3IgS2R1bXAgLSBUaGUga2V4ZWMtYmFzZWQgQ3Jhc2ggRHVtcGluZyBTb2x1dGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGRvY3VtZW50IGluY2x1ZGVzIG92ZXJ2aWV3LCBzZXR1cCBhbmQgaW5zdGFsbGF0aW9uLCBhbmQgYW5hbHlzaXMKK2luZm9ybWF0aW9uLgorCitPdmVydmlldworPT09PT09PT0KKworS2R1bXAgdXNlcyBrZXhlYyB0byBxdWlja2x5IGJvb3QgdG8gYSBkdW1wLWNhcHR1cmUga2VybmVsIHdoZW5ldmVyIGEKK2R1bXAgb2YgdGhlIHN5c3RlbSBrZXJuZWwncyBtZW1vcnkgbmVlZHMgdG8gYmUgdGFrZW4gKGZvciBleGFtcGxlLCB3aGVuCit0aGUgc3lzdGVtIHBhbmljcykuIFRoZSBzeXN0ZW0ga2VybmVsJ3MgbWVtb3J5IGltYWdlIGlzIHByZXNlcnZlZCBhY3Jvc3MKK3RoZSByZWJvb3QgYW5kIGlzIGFjY2Vzc2libGUgdG8gdGhlIGR1bXAtY2FwdHVyZSBrZXJuZWwuCisKK1lvdSBjYW4gdXNlIGNvbW1vbiBjb21tYW5kcywgc3VjaCBhcyBjcCBhbmQgc2NwLCB0byBjb3B5IHRoZQorbWVtb3J5IGltYWdlIHRvIGEgZHVtcCBmaWxlIG9uIHRoZSBsb2NhbCBkaXNrLCBvciBhY3Jvc3MgdGhlIG5ldHdvcmsgdG8KK2EgcmVtb3RlIHN5c3RlbS4KKworS2R1bXAgYW5kIGtleGVjIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkIG9uIHRoZSB4ODYsIHg4Nl82NCwgcHBjNjQsIGlhNjQsCitzMzkweCBhbmQgYXJtIGFyY2hpdGVjdHVyZXMuCisKK1doZW4gdGhlIHN5c3RlbSBrZXJuZWwgYm9vdHMsIGl0IHJlc2VydmVzIGEgc21hbGwgc2VjdGlvbiBvZiBtZW1vcnkgZm9yCit0aGUgZHVtcC1jYXB0dXJlIGtlcm5lbC4gVGhpcyBlbnN1cmVzIHRoYXQgb25nb2luZyBEaXJlY3QgTWVtb3J5IEFjY2VzcworKERNQSkgZnJvbSB0aGUgc3lzdGVtIGtlcm5lbCBkb2VzIG5vdCBjb3JydXB0IHRoZSBkdW1wLWNhcHR1cmUga2VybmVsLgorVGhlIGtleGVjIC1wIGNvbW1hbmQgbG9hZHMgdGhlIGR1bXAtY2FwdHVyZSBrZXJuZWwgaW50byB0aGlzIHJlc2VydmVkCittZW1vcnkuCisKK09uIHg4NiBtYWNoaW5lcywgdGhlIGZpcnN0IDY0MCBLQiBvZiBwaHlzaWNhbCBtZW1vcnkgaXMgbmVlZGVkIHRvIGJvb3QsCityZWdhcmRsZXNzIG9mIHdoZXJlIHRoZSBrZXJuZWwgbG9hZHMuIFRoZXJlZm9yZSwga2V4ZWMgYmFja3MgdXAgdGhpcworcmVnaW9uIGp1c3QgYmVmb3JlIHJlYm9vdGluZyBpbnRvIHRoZSBkdW1wLWNhcHR1cmUga2VybmVsLgorCitTaW1pbGFybHkgb24gUFBDNjQgbWFjaGluZXMgZmlyc3QgMzJLQiBvZiBwaHlzaWNhbCBtZW1vcnkgaXMgbmVlZGVkIGZvcgorYm9vdGluZyByZWdhcmRsZXNzIG9mIHdoZXJlIHRoZSBrZXJuZWwgaXMgbG9hZGVkIGFuZCB0byBzdXBwb3J0IDY0SyBwYWdlCitzaXplIGtleGVjIGJhY2tzIHVwIHRoZSBmaXJzdCA2NEtCIG1lbW9yeS4KKworRm9yIHMzOTB4LCB3aGVuIGtkdW1wIGlzIHRyaWdnZXJlZCwgdGhlIGNyYXNoa2VybmVsIHJlZ2lvbiBpcyBleGNoYW5nZWQKK3dpdGggdGhlIHJlZ2lvbiBbMCwgY3Jhc2hrZXJuZWwgcmVnaW9uIHNpemVdIGFuZCB0aGVuIHRoZSBrZHVtcCBrZXJuZWwKK3J1bnMgaW4gWzAsIGNyYXNoa2VybmVsIHJlZ2lvbiBzaXplXS4gVGhlcmVmb3JlIG5vIHJlbG9jYXRhYmxlIGtlcm5lbCBpcworbmVlZGVkIGZvciBzMzkweC4KKworQWxsIG9mIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN5c3RlbSBrZXJuZWwncyBjb3JlIGltYWdlIGlzCitlbmNvZGVkIGluIHRoZSBFTEYgZm9ybWF0LCBhbmQgc3RvcmVkIGluIGEgcmVzZXJ2ZWQgYXJlYSBvZiBtZW1vcnkKK2JlZm9yZSBhIGNyYXNoLiBUaGUgcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgc3RhcnQgb2YgdGhlIEVMRiBoZWFkZXIgaXMKK3Bhc3NlZCB0byB0aGUgZHVtcC1jYXB0dXJlIGtlcm5lbCB0aHJvdWdoIHRoZSBlbGZjb3JlaGRyPSBib290CitwYXJhbWV0ZXIuIE9wdGlvbmFsbHkgdGhlIHNpemUgb2YgdGhlIEVMRiBoZWFkZXIgY2FuIGFsc28gYmUgcGFzc2VkCit3aGVuIHVzaW5nIHRoZSBlbGZjb3JlaGRyPVtzaXplW0tNR11AXW9mZnNldFtLTUddIHN5bnRheC4KKworCitXaXRoIHRoZSBkdW1wLWNhcHR1cmUga2VybmVsLCB5b3UgY2FuIGFjY2VzcyB0aGUgbWVtb3J5IGltYWdlIHRocm91Z2gKKy9wcm9jL3ZtY29yZS4gVGhpcyBleHBvcnRzIHRoZSBkdW1wIGFzIGFuIEVMRi1mb3JtYXQgZmlsZSB0aGF0IHlvdSBjYW4KK3dyaXRlIG91dCB1c2luZyBmaWxlIGNvcHkgY29tbWFuZHMgc3VjaCBhcyBjcCBvciBzY3AuIEZ1cnRoZXIsIHlvdSBjYW4KK3VzZSBhbmFseXNpcyB0b29scyBzdWNoIGFzIHRoZSBHTlUgRGVidWdnZXIgKEdEQikgYW5kIHRoZSBDcmFzaCB0b29sIHRvCitkZWJ1ZyB0aGUgZHVtcCBmaWxlLiBUaGlzIG1ldGhvZCBlbnN1cmVzIHRoYXQgdGhlIGR1bXAgcGFnZXMgYXJlIGNvcnJlY3RseQorb3JkZXJlZC4KKworCitTZXR1cCBhbmQgSW5zdGFsbGF0aW9uCis9PT09PT09PT09PT09PT09PT09PT09CisKK0luc3RhbGwga2V4ZWMtdG9vbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworMSkgTG9naW4gYXMgdGhlIHJvb3QgdXNlci4KKworMikgRG93bmxvYWQgdGhlIGtleGVjLXRvb2xzIHVzZXItc3BhY2UgcGFja2FnZSBmcm9tIHRoZSBmb2xsb3dpbmcgVVJMOgorCitodHRwOi8va2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMva2VybmVsL2tleGVjL2tleGVjLXRvb2xzLnRhci5negorCitUaGlzIGlzIGEgc3ltbGluayB0byB0aGUgbGF0ZXN0IHZlcnNpb24uCisKK1RoZSBsYXRlc3Qga2V4ZWMtdG9vbHMgZ2l0IHRyZWUgaXMgYXZhaWxhYmxlIGF0OgorCitnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL3V0aWxzL2tlcm5lbC9rZXhlYy9rZXhlYy10b29scy5naXQKK2FuZAoraHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zY20vdXRpbHMva2VybmVsL2tleGVjL2tleGVjLXRvb2xzLmdpdAorCitUaGVyZSBpcyBhbHNvIGEgZ2l0d2ViIGludGVyZmFjZSBhdmFpbGFibGUgYXQKK2h0dHA6Ly93d3cua2VybmVsLm9yZy9naXQvP3A9dXRpbHMva2VybmVsL2tleGVjL2tleGVjLXRvb2xzLmdpdAorCitNb3JlIGluZm9ybWF0aW9uIGFib3V0IGtleGVjLXRvb2xzIGNhbiBiZSBmb3VuZCBhdAoraHR0cDovL2hvcm1zLm5ldC9wcm9qZWN0cy9rZXhlYy8KKworMykgVW5wYWNrIHRoZSB0YXJiYWxsIHdpdGggdGhlIHRhciBjb21tYW5kLCBhcyBmb2xsb3dzOgorCisgICB0YXIgeHZwemYga2V4ZWMtdG9vbHMudGFyLmd6CisKKzQpIENoYW5nZSB0byB0aGUga2V4ZWMtdG9vbHMgZGlyZWN0b3J5LCBhcyBmb2xsb3dzOgorCisgICBjZCBrZXhlYy10b29scy1WRVJTSU9OCisKKzUpIENvbmZpZ3VyZSB0aGUgcGFja2FnZSwgYXMgZm9sbG93czoKKworICAgLi9jb25maWd1cmUKKworNikgQ29tcGlsZSB0aGUgcGFja2FnZSwgYXMgZm9sbG93czoKKworICAgbWFrZQorCis3KSBJbnN0YWxsIHRoZSBwYWNrYWdlLCBhcyBmb2xsb3dzOgorCisgICBtYWtlIGluc3RhbGwKKworCitCdWlsZCB0aGUgc3lzdGVtIGFuZCBkdW1wLWNhcHR1cmUga2VybmVscworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZXJlIGFyZSB0d28gcG9zc2libGUgbWV0aG9kcyBvZiB1c2luZyBLZHVtcC4KKworMSkgQnVpbGQgYSBzZXBhcmF0ZSBjdXN0b20gZHVtcC1jYXB0dXJlIGtlcm5lbCBmb3IgY2FwdHVyaW5nIHRoZQorICAga2VybmVsIGNvcmUgZHVtcC4KKworMikgT3IgdXNlIHRoZSBzeXN0ZW0ga2VybmVsIGJpbmFyeSBpdHNlbGYgYXMgZHVtcC1jYXB0dXJlIGtlcm5lbCBhbmQgdGhlcmUgaXMKKyAgIG5vIG5lZWQgdG8gYnVpbGQgYSBzZXBhcmF0ZSBkdW1wLWNhcHR1cmUga2VybmVsLiBUaGlzIGlzIHBvc3NpYmxlCisgICBvbmx5IHdpdGggdGhlIGFyY2hpdGVjdHVyZXMgd2hpY2ggc3VwcG9ydCBhIHJlbG9jYXRhYmxlIGtlcm5lbC4gQXMKKyAgIG9mIHRvZGF5LCBpMzg2LCB4ODZfNjQsIHBwYzY0LCBpYTY0IGFuZCBhcm0gYXJjaGl0ZWN0dXJlcyBzdXBwb3J0IHJlbG9jYXRhYmxlCisgICBrZXJuZWwuCisKK0J1aWxkaW5nIGEgcmVsb2NhdGFibGUga2VybmVsIGlzIGFkdmFudGFnZW91cyBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IHRoYXQKK29uZSBkb2VzIG5vdCBoYXZlIHRvIGJ1aWxkIGEgc2Vjb25kIGtlcm5lbCBmb3IgY2FwdHVyaW5nIHRoZSBkdW1wLiBCdXQKK2F0IHRoZSBzYW1lIHRpbWUgb25lIG1pZ2h0IHdhbnQgdG8gYnVpbGQgYSBjdXN0b20gZHVtcCBjYXB0dXJlIGtlcm5lbAorc3VpdGFibGUgdG8gaGlzIG5lZWRzLgorCitGb2xsb3dpbmcgYXJlIHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmcgcmVxdWlyZWQgZm9yIHN5c3RlbSBhbmQKK2R1bXAtY2FwdHVyZSBrZXJuZWxzIGZvciBlbmFibGluZyBrZHVtcCBzdXBwb3J0LgorCitTeXN0ZW0ga2VybmVsIGNvbmZpZyBvcHRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzEpIEVuYWJsZSAia2V4ZWMgc3lzdGVtIGNhbGwiIGluICJQcm9jZXNzb3IgdHlwZSBhbmQgZmVhdHVyZXMuIgorCisgICBDT05GSUdfS0VYRUM9eQorCisyKSBFbmFibGUgInN5c2ZzIGZpbGUgc3lzdGVtIHN1cHBvcnQiIGluICJGaWxlc3lzdGVtIiAtPiAiUHNldWRvCisgICBmaWxlc3lzdGVtcy4iIFRoaXMgaXMgdXN1YWxseSBlbmFibGVkIGJ5IGRlZmF1bHQuCisKKyAgIENPTkZJR19TWVNGUz15CisKKyAgIE5vdGUgdGhhdCAic3lzZnMgZmlsZSBzeXN0ZW0gc3VwcG9ydCIgbWlnaHQgbm90IGFwcGVhciBpbiB0aGUgIlBzZXVkbworICAgZmlsZXN5c3RlbXMiIG1lbnUgaWYgIkNvbmZpZ3VyZSBzdGFuZGFyZCBrZXJuZWwgZmVhdHVyZXMgKGZvciBzbWFsbAorICAgc3lzdGVtcykiIGlzIG5vdCBlbmFibGVkIGluICJHZW5lcmFsIFNldHVwLiIgSW4gdGhpcyBjYXNlLCBjaGVjayB0aGUKKyAgIC5jb25maWcgZmlsZSBpdHNlbGYgdG8gZW5zdXJlIHRoYXQgc3lzZnMgaXMgdHVybmVkIG9uLCBhcyBmb2xsb3dzOgorCisgICBncmVwICdDT05GSUdfU1lTRlMnIC5jb25maWcKKworMykgRW5hYmxlICJDb21waWxlIHRoZSBrZXJuZWwgd2l0aCBkZWJ1ZyBpbmZvIiBpbiAiS2VybmVsIGhhY2tpbmcuIgorCisgICBDT05GSUdfREVCVUdfSU5GTz1ZCisKKyAgIFRoaXMgY2F1c2VzIHRoZSBrZXJuZWwgdG8gYmUgYnVpbHQgd2l0aCBkZWJ1ZyBzeW1ib2xzLiBUaGUgZHVtcAorICAgYW5hbHlzaXMgdG9vbHMgcmVxdWlyZSBhIHZtbGludXggd2l0aCBkZWJ1ZyBzeW1ib2xzIGluIG9yZGVyIHRvIHJlYWQKKyAgIGFuZCBhbmFseXplIGEgZHVtcCBmaWxlLgorCitEdW1wLWNhcHR1cmUga2VybmVsIGNvbmZpZyBvcHRpb25zIChBcmNoIEluZGVwZW5kZW50KQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworMSkgRW5hYmxlICJrZXJuZWwgY3Jhc2ggZHVtcHMiIHN1cHBvcnQgdW5kZXIgIlByb2Nlc3NvciB0eXBlIGFuZAorICAgZmVhdHVyZXMiOgorCisgICBDT05GSUdfQ1JBU0hfRFVNUD15CisKKzIpIEVuYWJsZSAiL3Byb2Mvdm1jb3JlIHN1cHBvcnQiIHVuZGVyICJGaWxlc3lzdGVtcyIgLT4gIlBzZXVkbyBmaWxlc3lzdGVtcyIuCisKKyAgIENPTkZJR19QUk9DX1ZNQ09SRT15CisgICAoQ09ORklHX1BST0NfVk1DT1JFIGlzIHNldCBieSBkZWZhdWx0IHdoZW4gQ09ORklHX0NSQVNIX0RVTVAgaXMgc2VsZWN0ZWQuKQorCitEdW1wLWNhcHR1cmUga2VybmVsIGNvbmZpZyBvcHRpb25zIChBcmNoIERlcGVuZGVudCwgaTM4NiBhbmQgeDg2XzY0KQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworMSkgT24gaTM4NiwgZW5hYmxlIGhpZ2ggbWVtb3J5IHN1cHBvcnQgdW5kZXIgIlByb2Nlc3NvciB0eXBlIGFuZAorICAgZmVhdHVyZXMiOgorCisgICBDT05GSUdfSElHSE1FTTY0Rz15CisgICBvcgorICAgQ09ORklHX0hJR0hNRU00RworCisyKSBPbiBpMzg2IGFuZCB4ODZfNjQsIGRpc2FibGUgc3ltbWV0cmljIG11bHRpLXByb2Nlc3Npbmcgc3VwcG9ydAorICAgdW5kZXIgIlByb2Nlc3NvciB0eXBlIGFuZCBmZWF0dXJlcyI6CisKKyAgIENPTkZJR19TTVA9bgorCisgICAoSWYgQ09ORklHX1NNUD15LCB0aGVuIHNwZWNpZnkgbWF4Y3B1cz0xIG9uIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lCisgICB3aGVuIGxvYWRpbmcgdGhlIGR1bXAtY2FwdHVyZSBrZXJuZWwsIHNlZSBzZWN0aW9uICJMb2FkIHRoZSBEdW1wLWNhcHR1cmUKKyAgIEtlcm5lbCIuKQorCiszKSBJZiBvbmUgd2FudHMgdG8gYnVpbGQgYW5kIHVzZSBhIHJlbG9jYXRhYmxlIGtlcm5lbCwKKyAgIEVuYWJsZSAiQnVpbGQgYSByZWxvY2F0YWJsZSBrZXJuZWwiIHN1cHBvcnQgdW5kZXIgIlByb2Nlc3NvciB0eXBlIGFuZAorICAgZmVhdHVyZXMiCisKKyAgIENPTkZJR19SRUxPQ0FUQUJMRT15CisKKzQpIFVzZSBhIHN1aXRhYmxlIHZhbHVlIGZvciAiUGh5c2ljYWwgYWRkcmVzcyB3aGVyZSB0aGUga2VybmVsIGlzCisgICBsb2FkZWQiICh1bmRlciAiUHJvY2Vzc29yIHR5cGUgYW5kIGZlYXR1cmVzIikuIFRoaXMgb25seSBhcHBlYXJzIHdoZW4KKyAgICJrZXJuZWwgY3Jhc2ggZHVtcHMiIGlzIGVuYWJsZWQuIEEgc3VpdGFibGUgdmFsdWUgZGVwZW5kcyB1cG9uCisgICB3aGV0aGVyIGtlcm5lbCBpcyByZWxvY2F0YWJsZSBvciBub3QuCisKKyAgIElmIHlvdSBhcmUgdXNpbmcgYSByZWxvY2F0YWJsZSBrZXJuZWwgdXNlIENPTkZJR19QSFlTSUNBTF9TVEFSVD0weDEwMDAwMAorICAgVGhpcyB3aWxsIGNvbXBpbGUgdGhlIGtlcm5lbCBmb3IgcGh5c2ljYWwgYWRkcmVzcyAxTUIsIGJ1dCBnaXZlbiB0aGUgZmFjdAorICAga2VybmVsIGlzIHJlbG9jYXRhYmxlLCBpdCBjYW4gYmUgcnVuIGZyb20gYW55IHBoeXNpY2FsIGFkZHJlc3MgaGVuY2UKKyAgIGtleGVjIGJvb3QgbG9hZGVyIHdpbGwgbG9hZCBpdCBpbiBtZW1vcnkgcmVnaW9uIHJlc2VydmVkIGZvciBkdW1wLWNhcHR1cmUKKyAgIGtlcm5lbC4KKworICAgT3RoZXJ3aXNlIGl0IHNob3VsZCBiZSB0aGUgc3RhcnQgb2YgbWVtb3J5IHJlZ2lvbiByZXNlcnZlZCBmb3IKKyAgIHNlY29uZCBrZXJuZWwgdXNpbmcgYm9vdCBwYXJhbWV0ZXIgImNyYXNoa2VybmVsPVlAWCIuIEhlcmUgWCBpcworICAgc3RhcnQgb2YgbWVtb3J5IHJlZ2lvbiByZXNlcnZlZCBmb3IgZHVtcC1jYXB0dXJlIGtlcm5lbC4KKyAgIEdlbmVyYWxseSBYIGlzIDE2TUIgKDB4MTAwMDAwMCkuIFNvIHlvdSBjYW4gc2V0CisgICBDT05GSUdfUEhZU0lDQUxfU1RBUlQ9MHgxMDAwMDAwCisKKzUpIE1ha2UgYW5kIGluc3RhbGwgdGhlIGtlcm5lbCBhbmQgaXRzIG1vZHVsZXMuIERPIE5PVCBhZGQgdGhpcyBrZXJuZWwKKyAgIHRvIHRoZSBib290IGxvYWRlciBjb25maWd1cmF0aW9uIGZpbGVzLgorCitEdW1wLWNhcHR1cmUga2VybmVsIGNvbmZpZyBvcHRpb25zIChBcmNoIERlcGVuZGVudCwgcHBjNjQpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzEpIEVuYWJsZSAiQnVpbGQgYSBrZHVtcCBjcmFzaCBrZXJuZWwiIHN1cHBvcnQgdW5kZXIgIktlcm5lbCIgb3B0aW9uczoKKworICAgQ09ORklHX0NSQVNIX0RVTVA9eQorCisyKSAgIEVuYWJsZSAiQnVpbGQgYSByZWxvY2F0YWJsZSBrZXJuZWwiIHN1cHBvcnQKKworICAgQ09ORklHX1JFTE9DQVRBQkxFPXkKKworICAgTWFrZSBhbmQgaW5zdGFsbCB0aGUga2VybmVsIGFuZCBpdHMgbW9kdWxlcy4KKworRHVtcC1jYXB0dXJlIGtlcm5lbCBjb25maWcgb3B0aW9ucyAoQXJjaCBEZXBlbmRlbnQsIGlhNjQpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gTm8gc3BlY2lmaWMgb3B0aW9ucyBhcmUgcmVxdWlyZWQgdG8gY3JlYXRlIGEgZHVtcC1jYXB0dXJlIGtlcm5lbAorICBmb3IgaWE2NCwgb3RoZXIgdGhhbiB0aG9zZSBzcGVjaWZpZWQgaW4gdGhlIGFyY2ggaW5kZXBlbmRlbnQgc2VjdGlvbgorICBhYm92ZS4gVGhpcyBtZWFucyB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIHVzZSB0aGUgc3lzdGVtIGtlcm5lbAorICBhcyBhIGR1bXAtY2FwdHVyZSBrZXJuZWwgaWYgZGVzaXJlZC4KKworICBUaGUgY3Jhc2hrZXJuZWwgcmVnaW9uIGNhbiBiZSBhdXRvbWF0aWNhbGx5IHBsYWNlZCBieSB0aGUgc3lzdGVtCisgIGtlcm5lbCBhdCBydW4gdGltZS4gVGhpcyBpcyBkb25lIGJ5IHNwZWNpZnlpbmcgdGhlIGJhc2UgYWRkcmVzcyBhcyAwLAorICBvciBvbWl0dGluZyBpdCBhbGwgdG9nZXRoZXIuCisKKyAgY3Jhc2hrZXJuZWw9MjU2TUAwCisgIG9yCisgIGNyYXNoa2VybmVsPTI1Nk0KKworICBJZiB0aGUgc3RhcnQgYWRkcmVzcyBpcyBzcGVjaWZpZWQsIG5vdGUgdGhhdCB0aGUgc3RhcnQgYWRkcmVzcyBvZiB0aGUKKyAga2VybmVsIHdpbGwgYmUgYWxpZ25lZCB0byA2NE1iLCBzbyBpZiB0aGUgc3RhcnQgYWRkcmVzcyBpcyBub3QgdGhlbgorICBhbnkgc3BhY2UgYmVsb3cgdGhlIGFsaWdubWVudCBwb2ludCB3aWxsIGJlIHdhc3RlZC4KKworRHVtcC1jYXB0dXJlIGtlcm5lbCBjb25maWcgb3B0aW9ucyAoQXJjaCBEZXBlbmRlbnQsIGFybSkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSAgIFRvIHVzZSBhIHJlbG9jYXRhYmxlIGtlcm5lbCwKKyAgICBFbmFibGUgIkFVVE9fWlJFTEFERFIiIHN1cHBvcnQgdW5kZXIgIkJvb3QiIG9wdGlvbnM6CisKKyAgICBBVVRPX1pSRUxBRERSPXkKKworRXh0ZW5kZWQgY3Jhc2hrZXJuZWwgc3ludGF4Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworV2hpbGUgdGhlICJjcmFzaGtlcm5lbD1zaXplW0BvZmZzZXRdIiBzeW50YXggaXMgc3VmZmljaWVudCBmb3IgbW9zdAorY29uZmlndXJhdGlvbnMsIHNvbWV0aW1lcyBpdCdzIGhhbmR5IHRvIGhhdmUgdGhlIHJlc2VydmVkIG1lbW9yeSBkZXBlbmRlbnQKK29uIHRoZSB2YWx1ZSBvZiBTeXN0ZW0gUkFNIC0tIHRoYXQncyBtb3N0bHkgZm9yIGRpc3RyaWJ1dG9ycyB0aGF0IHByZS1zZXR1cAordGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgdG8gYXZvaWQgYSB1bmJvb3RhYmxlIHN5c3RlbSBhZnRlciBzb21lIG1lbW9yeSBoYXMKK2JlZW4gcmVtb3ZlZCBmcm9tIHRoZSBtYWNoaW5lLgorCitUaGUgc3ludGF4IGlzOgorCisgICAgY3Jhc2hrZXJuZWw9PHJhbmdlMT46PHNpemUxPlssPHJhbmdlMj46PHNpemUyPiwuLi5dW0BvZmZzZXRdCisgICAgcmFuZ2U9c3RhcnQtW2VuZF0KKworUGxlYXNlIG5vdGUsIG9uIGFybSwgdGhlIG9mZnNldCBpcyByZXF1aXJlZC4KKyAgICBjcmFzaGtlcm5lbD08cmFuZ2UxPjo8c2l6ZTE+Wyw8cmFuZ2UyPjo8c2l6ZTI+LC4uLl1Ab2Zmc2V0CisgICAgcmFuZ2U9c3RhcnQtW2VuZF0KKworICAgICdzdGFydCcgaXMgaW5jbHVzaXZlIGFuZCAnZW5kJyBpcyBleGNsdXNpdmUuCisKK0ZvciBleGFtcGxlOgorCisgICAgY3Jhc2hrZXJuZWw9NTEyTS0yRzo2NE0sMkctOjEyOE0KKworVGhpcyB3b3VsZCBtZWFuOgorCisgICAgMSkgaWYgdGhlIFJBTSBpcyBzbWFsbGVyIHRoYW4gNTEyTSwgdGhlbiBkb24ndCByZXNlcnZlIGFueXRoaW5nCisgICAgICAgKHRoaXMgaXMgdGhlICJyZXNjdWUiIGNhc2UpCisgICAgMikgaWYgdGhlIFJBTSBzaXplIGlzIGJldHdlZW4gNTEyTSBhbmQgMkcgKGV4Y2x1c2l2ZSksIHRoZW4gcmVzZXJ2ZSA2NE0KKyAgICAzKSBpZiB0aGUgUkFNIHNpemUgaXMgbGFyZ2VyIHRoYW4gMkcsIHRoZW4gcmVzZXJ2ZSAxMjhNCisKKworCitCb290IGludG8gU3lzdGVtIEtlcm5lbAorPT09PT09PT09PT09PT09PT09PT09PT0KKworMSkgVXBkYXRlIHRoZSBib290IGxvYWRlciAoc3VjaCBhcyBncnViLCB5YWJvb3QsIG9yIGxpbG8pIGNvbmZpZ3VyYXRpb24KKyAgIGZpbGVzIGFzIG5lY2Vzc2FyeS4KKworMikgQm9vdCB0aGUgc3lzdGVtIGtlcm5lbCB3aXRoIHRoZSBib290IHBhcmFtZXRlciAiY3Jhc2hrZXJuZWw9WUBYIiwKKyAgIHdoZXJlIFkgc3BlY2lmaWVzIGhvdyBtdWNoIG1lbW9yeSB0byByZXNlcnZlIGZvciB0aGUgZHVtcC1jYXB0dXJlIGtlcm5lbAorICAgYW5kIFggc3BlY2lmaWVzIHRoZSBiZWdpbm5pbmcgb2YgdGhpcyByZXNlcnZlZCBtZW1vcnkuIEZvciBleGFtcGxlLAorICAgImNyYXNoa2VybmVsPTY0TUAxNk0iIHRlbGxzIHRoZSBzeXN0ZW0ga2VybmVsIHRvIHJlc2VydmUgNjQgTUIgb2YgbWVtb3J5CisgICBzdGFydGluZyBhdCBwaHlzaWNhbCBhZGRyZXNzIDB4MDEwMDAwMDAgKDE2TUIpIGZvciB0aGUgZHVtcC1jYXB0dXJlIGtlcm5lbC4KKworICAgT24geDg2IGFuZCB4ODZfNjQsIHVzZSAiY3Jhc2hrZXJuZWw9NjRNQDE2TSIuCisKKyAgIE9uIHBwYzY0LCB1c2UgImNyYXNoa2VybmVsPTEyOE1AMzJNIi4KKworICAgT24gaWE2NCwgMjU2TUAyNTZNIGlzIGEgZ2VuZXJvdXMgdmFsdWUgdGhhdCB0eXBpY2FsbHkgd29ya3MuCisgICBUaGUgcmVnaW9uIG1heSBiZSBhdXRvbWF0aWNhbGx5IHBsYWNlZCBvbiBpYTY0LCBzZWUgdGhlCisgICBkdW1wLWNhcHR1cmUga2VybmVsIGNvbmZpZyBvcHRpb24gbm90ZXMgYWJvdmUuCisgICBJZiB1c2Ugc3BhcnNlIG1lbW9yeSwgdGhlIHNpemUgc2hvdWxkIGJlIHJvdW5kZWQgdG8gR1JBTlVMRSBib3VuZGFyaWVzLgorCisgICBPbiBzMzkweCwgdHlwaWNhbGx5IHVzZSAiY3Jhc2hrZXJuZWw9eHhNIi4gVGhlIHZhbHVlIG9mIHh4IGlzIGRlcGVuZGVudAorICAgb24gdGhlIG1lbW9yeSBjb25zdW1wdGlvbiBvZiB0aGUga2R1bXAgc3lzdGVtLiBJbiBnZW5lcmFsIHRoaXMgaXMgbm90CisgICBkZXBlbmRlbnQgb24gdGhlIG1lbW9yeSBzaXplIG9mIHRoZSBwcm9kdWN0aW9uIHN5c3RlbS4KKworICAgT24gYXJtLCB1c2UgImNyYXNoa2VybmVsPVlAWCIuIE5vdGUgdGhhdCB0aGUgc3RhcnQgYWRkcmVzcyBvZiB0aGUga2VybmVsCisgICB3aWxsIGJlIGFsaWduZWQgdG8gMTI4TWlCICgweDA4MDAwMDAwKSwgc28gaWYgdGhlIHN0YXJ0IGFkZHJlc3MgaXMgbm90IHRoZW4KKyAgIGFueSBzcGFjZSBiZWxvdyB0aGUgYWxpZ25tZW50IHBvaW50IG1heSBiZSBvdmVyd3JpdHRlbiBieSB0aGUgZHVtcC1jYXB0dXJlIGtlcm5lbCwKKyAgIHdoaWNoIG1lYW5zIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIHZtY29yZSBpcyBub3QgdGhhdCBwcmVjaXNlIGFzIGV4cGVjdGVkLgorCisKK0xvYWQgdGhlIER1bXAtY2FwdHVyZSBLZXJuZWwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQWZ0ZXIgYm9vdGluZyB0byB0aGUgc3lzdGVtIGtlcm5lbCwgZHVtcC1jYXB0dXJlIGtlcm5lbCBuZWVkcyB0byBiZQorbG9hZGVkLgorCitCYXNlZCBvbiB0aGUgYXJjaGl0ZWN0dXJlIGFuZCB0eXBlIG9mIGltYWdlIChyZWxvY2F0YWJsZSBvciBub3QpLCBvbmUKK2NhbiBjaG9vc2UgdG8gbG9hZCB0aGUgdW5jb21wcmVzc2VkIHZtbGludXggb3IgY29tcHJlc3NlZCBiekltYWdlL3ZtbGludXoKK29mIGR1bXAtY2FwdHVyZSBrZXJuZWwuIEZvbGxvd2luZyBpcyB0aGUgc3VtbWFyeS4KKworRm9yIGkzODYgYW5kIHg4Nl82NDoKKwktIFVzZSB2bWxpbnV4IGlmIGtlcm5lbCBpcyBub3QgcmVsb2NhdGFibGUuCisJLSBVc2UgYnpJbWFnZS92bWxpbnV6IGlmIGtlcm5lbCBpcyByZWxvY2F0YWJsZS4KK0ZvciBwcGM2NDoKKwktIFVzZSB2bWxpbnV4CitGb3IgaWE2NDoKKwktIFVzZSB2bWxpbnV4IG9yIHZtbGludXouZ3oKK0ZvciBzMzkweDoKKwktIFVzZSBpbWFnZSBvciBiekltYWdlCitGb3IgYXJtOgorCS0gVXNlIHpJbWFnZQorCitJZiB5b3UgYXJlIHVzaW5nIGEgdW5jb21wcmVzc2VkIHZtbGludXggaW1hZ2UgdGhlbiB1c2UgZm9sbG93aW5nIGNvbW1hbmQKK3RvIGxvYWQgZHVtcC1jYXB0dXJlIGtlcm5lbC4KKworICAga2V4ZWMgLXAgPGR1bXAtY2FwdHVyZS1rZXJuZWwtdm1saW51eC1pbWFnZT4gXAorICAgLS1pbml0cmQ9PGluaXRyZC1mb3ItZHVtcC1jYXB0dXJlLWtlcm5lbD4gLS1hcmdzLWxpbnV4IFwKKyAgIC0tYXBwZW5kPSJyb290PTxyb290LWRldj4gPGFyY2gtc3BlY2lmaWMtb3B0aW9ucz4iCisKK0lmIHlvdSBhcmUgdXNpbmcgYSBjb21wcmVzc2VkIGJ6SW1hZ2Uvdm1saW51eiwgdGhlbiB1c2UgZm9sbG93aW5nIGNvbW1hbmQKK3RvIGxvYWQgZHVtcC1jYXB0dXJlIGtlcm5lbC4KKworICAga2V4ZWMgLXAgPGR1bXAtY2FwdHVyZS1rZXJuZWwtYnpJbWFnZT4gXAorICAgLS1pbml0cmQ9PGluaXRyZC1mb3ItZHVtcC1jYXB0dXJlLWtlcm5lbD4gXAorICAgLS1hcHBlbmQ9InJvb3Q9PHJvb3QtZGV2PiA8YXJjaC1zcGVjaWZpYy1vcHRpb25zPiIKKworSWYgeW91IGFyZSB1c2luZyBhIGNvbXByZXNzZWQgekltYWdlLCB0aGVuIHVzZSBmb2xsb3dpbmcgY29tbWFuZAordG8gbG9hZCBkdW1wLWNhcHR1cmUga2VybmVsLgorCisgICBrZXhlYyAtLXR5cGUgekltYWdlIC1wIDxkdW1wLWNhcHR1cmUta2VybmVsLWJ6SW1hZ2U+IFwKKyAgIC0taW5pdHJkPTxpbml0cmQtZm9yLWR1bXAtY2FwdHVyZS1rZXJuZWw+IFwKKyAgIC0tZHRiPTxkdGItZm9yLWR1bXAtY2FwdHVyZS1rZXJuZWw+IFwKKyAgIC0tYXBwZW5kPSJyb290PTxyb290LWRldj4gPGFyY2gtc3BlY2lmaWMtb3B0aW9ucz4iCisKKworUGxlYXNlIG5vdGUsIHRoYXQgLS1hcmdzLWxpbnV4IGRvZXMgbm90IG5lZWQgdG8gYmUgc3BlY2lmaWVkIGZvciBpYTY0LgorSXQgaXMgcGxhbm5lZCB0byBtYWtlIHRoaXMgYSBuby1vcCBvbiB0aGF0IGFyY2hpdGVjdHVyZSwgYnV0IGZvciBub3cKK2l0IHNob3VsZCBiZSBvbWl0dGVkCisKK0ZvbGxvd2luZyBhcmUgdGhlIGFyY2ggc3BlY2lmaWMgY29tbWFuZCBsaW5lIG9wdGlvbnMgdG8gYmUgdXNlZCB3aGlsZQorbG9hZGluZyBkdW1wLWNhcHR1cmUga2VybmVsLgorCitGb3IgaTM4NiwgeDg2XzY0IGFuZCBpYTY0OgorCSIxIGlycXBvbGwgbWF4Y3B1cz0xIHJlc2V0X2RldmljZXMiCisKK0ZvciBwcGM2NDoKKwkiMSBtYXhjcHVzPTEgbm9pcnFkaXN0cmliIHJlc2V0X2RldmljZXMiCisKK0ZvciBzMzkweDoKKwkiMSBtYXhjcHVzPTEgY2dyb3VwX2Rpc2FibGU9bWVtb3J5IgorCitGb3IgYXJtOgorCSIxIG1heGNwdXM9MSByZXNldF9kZXZpY2VzIgorCitOb3RlcyBvbiBsb2FkaW5nIHRoZSBkdW1wLWNhcHR1cmUga2VybmVsOgorCisqIEJ5IGRlZmF1bHQsIHRoZSBFTEYgaGVhZGVycyBhcmUgc3RvcmVkIGluIEVMRjY0IGZvcm1hdCB0byBzdXBwb3J0CisgIHN5c3RlbXMgd2l0aCBtb3JlIHRoYW4gNEdCIG1lbW9yeS4gT24gaTM4Niwga2V4ZWMgYXV0b21hdGljYWxseSBjaGVja3MgaWYKKyAgdGhlIHBoeXNpY2FsIFJBTSBzaXplIGV4Y2VlZHMgdGhlIDQgR0IgbGltaXQgYW5kIGlmIG5vdCwgdXNlcyBFTEYzMi4KKyAgU28sIG9uIG5vbi1QQUUgc3lzdGVtcywgRUxGMzIgaXMgYWx3YXlzIHVzZWQuCisKKyAgVGhlIC0tZWxmMzItY29yZS1oZWFkZXJzIG9wdGlvbiBjYW4gYmUgdXNlZCB0byBmb3JjZSB0aGUgZ2VuZXJhdGlvbiBvZiBFTEYzMgorICBoZWFkZXJzLiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIEdEQiBjdXJyZW50bHkgY2Fubm90IG9wZW4gdm1jb3JlIGZpbGVzCisgIHdpdGggRUxGNjQgaGVhZGVycyBvbiAzMi1iaXQgc3lzdGVtcy4KKworKiBUaGUgImlycXBvbGwiIGJvb3QgcGFyYW1ldGVyIHJlZHVjZXMgZHJpdmVyIGluaXRpYWxpemF0aW9uIGZhaWx1cmVzCisgIGR1ZSB0byBzaGFyZWQgaW50ZXJydXB0cyBpbiB0aGUgZHVtcC1jYXB0dXJlIGtlcm5lbC4KKworKiBZb3UgbXVzdCBzcGVjaWZ5IDxyb290LWRldj4gaW4gdGhlIGZvcm1hdCBjb3JyZXNwb25kaW5nIHRvIHRoZSByb290CisgIGRldmljZSBuYW1lIGluIHRoZSBvdXRwdXQgb2YgbW91bnQgY29tbWFuZC4KKworKiBCb290IHBhcmFtZXRlciAiMSIgYm9vdHMgdGhlIGR1bXAtY2FwdHVyZSBrZXJuZWwgaW50byBzaW5nbGUtdXNlcgorICBtb2RlIHdpdGhvdXQgbmV0d29ya2luZy4gSWYgeW91IHdhbnQgbmV0d29ya2luZywgdXNlICIzIi4KKworKiBXZSBnZW5lcmFsbHkgZG9uJyBoYXZlIHRvIGJyaW5nIHVwIGEgU01QIGtlcm5lbCBqdXN0IHRvIGNhcHR1cmUgdGhlCisgIGR1bXAuIEhlbmNlIGdlbmVyYWxseSBpdCBpcyB1c2VmdWwgZWl0aGVyIHRvIGJ1aWxkIGEgVVAgZHVtcC1jYXB0dXJlCisgIGtlcm5lbCBvciBzcGVjaWZ5IG1heGNwdXM9MSBvcHRpb24gd2hpbGUgbG9hZGluZyBkdW1wLWNhcHR1cmUga2VybmVsLgorCisqIEZvciBzMzkweCB0aGVyZSBhcmUgdHdvIGtkdW1wIG1vZGVzOiBJZiBhIEVMRiBoZWFkZXIgaXMgc3BlY2lmaWVkIHdpdGgKKyAgdGhlIGVsZmNvcmVoZHI9IGtlcm5lbCBwYXJhbWV0ZXIsIGl0IGlzIHVzZWQgYnkgdGhlIGtkdW1wIGtlcm5lbCBhcyBpdAorICBpcyBkb25lIG9uIGFsbCBvdGhlciBhcmNoaXRlY3R1cmVzLiBJZiBubyBlbGZjb3JlaGRyPSBrZXJuZWwgcGFyYW1ldGVyIGlzCisgIHNwZWNpZmllZCwgdGhlIHMzOTB4IGtkdW1wIGtlcm5lbCBkeW5hbWljYWxseSBjcmVhdGVzIHRoZSBoZWFkZXIuIFRoZQorICBzZWNvbmQgbW9kZSBoYXMgdGhlIGFkdmFudGFnZSB0aGF0IGZvciBDUFUgYW5kIG1lbW9yeSBob3RwbHVnLCBrZHVtcCBoYXMKKyAgbm90IHRvIGJlIHJlbG9hZGVkIHdpdGgga2V4ZWNfbG9hZCgpLgorCisqIEZvciBzMzkweCBzeXN0ZW1zIHdpdGggbWFueSBhdHRhY2hlZCBkZXZpY2VzIHRoZSAiY2lvX2lnbm9yZSIga2VybmVsCisgIHBhcmFtZXRlciBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIGtkdW1wIGtlcm5lbCBpbiBvcmRlciB0byBwcmV2ZW50IGFsbG9jYXRpb24KKyAgb2Yga2VybmVsIG1lbW9yeSBmb3IgZGV2aWNlcyB0aGF0IGFyZSBub3QgcmVsZXZhbnQgZm9yIGtkdW1wLiBUaGUgc2FtZQorICBhcHBsaWVzIHRvIHN5c3RlbXMgdGhhdCB1c2UgU0NTSS9GQ1AgZGV2aWNlcy4gSW4gdGhhdCBjYXNlIHRoZQorICAiYWxsb3dfbHVuX3NjYW4iIHpmY3AgbW9kdWxlIHBhcmFtZXRlciBzaG91bGQgYmUgc2V0IHRvIHplcm8gYmVmb3JlCisgIHNldHRpbmcgRkNQIGRldmljZXMgb25saW5lLgorCitLZXJuZWwgUGFuaWMKKz09PT09PT09PT09PQorCitBZnRlciBzdWNjZXNzZnVsbHkgbG9hZGluZyB0aGUgZHVtcC1jYXB0dXJlIGtlcm5lbCBhcyBwcmV2aW91c2x5CitkZXNjcmliZWQsIHRoZSBzeXN0ZW0gd2lsbCByZWJvb3QgaW50byB0aGUgZHVtcC1jYXB0dXJlIGtlcm5lbCBpZiBhCitzeXN0ZW0gY3Jhc2ggaXMgdHJpZ2dlcmVkLiAgVHJpZ2dlciBwb2ludHMgYXJlIGxvY2F0ZWQgaW4gcGFuaWMoKSwKK2RpZSgpLCBkaWVfbm1pKCkgYW5kIGluIHRoZSBzeXNycSBoYW5kbGVyIChBTFQtU3lzUnEtYykuCisKK1RoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyB3aWxsIGV4ZWN1dGUgYSBjcmFzaCB0cmlnZ2VyIHBvaW50OgorCitJZiBhIGhhcmQgbG9ja3VwIGlzIGRldGVjdGVkIGFuZCAiTk1JIHdhdGNoZG9nIiBpcyBjb25maWd1cmVkLCB0aGUgc3lzdGVtCit3aWxsIGJvb3QgaW50byB0aGUgZHVtcC1jYXB0dXJlIGtlcm5lbCAoIGRpZV9ubWkoKSApLgorCitJZiBkaWUoKSBpcyBjYWxsZWQsIGFuZCBpdCBoYXBwZW5zIHRvIGJlIGEgdGhyZWFkIHdpdGggcGlkIDAgb3IgMSwgb3IgZGllKCkKK2lzIGNhbGxlZCBpbnNpZGUgaW50ZXJydXB0IGNvbnRleHQgb3IgZGllKCkgaXMgY2FsbGVkIGFuZCBwYW5pY19vbl9vb3BzIGlzIHNldCwKK3RoZSBzeXN0ZW0gd2lsbCBib290IGludG8gdGhlIGR1bXAtY2FwdHVyZSBrZXJuZWwuCisKK09uIHBvd2VycGMgc3lzdGVtcyB3aGVuIGEgc29mdC1yZXNldCBpcyBnZW5lcmF0ZWQsIGRpZSgpIGlzIGNhbGxlZCBieSBhbGwgY3B1cworYW5kIHRoZSBzeXN0ZW0gd2lsbCBib290IGludG8gdGhlIGR1bXAtY2FwdHVyZSBrZXJuZWwuCisKK0ZvciB0ZXN0aW5nIHB1cnBvc2VzLCB5b3UgY2FuIHRyaWdnZXIgYSBjcmFzaCBieSB1c2luZyAiQUxULVN5c1JxLWMiLAorImVjaG8gYyA+IC9wcm9jL3N5c3JxLXRyaWdnZXIiIG9yIHdyaXRlIGEgbW9kdWxlIHRvIGZvcmNlIHRoZSBwYW5pYy4KKworV3JpdGUgT3V0IHRoZSBEdW1wIEZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09CisKK0FmdGVyIHRoZSBkdW1wLWNhcHR1cmUga2VybmVsIGlzIGJvb3RlZCwgd3JpdGUgb3V0IHRoZSBkdW1wIGZpbGUgd2l0aAordGhlIGZvbGxvd2luZyBjb21tYW5kOgorCisgICBjcCAvcHJvYy92bWNvcmUgPGR1bXAtZmlsZT4KKworCitBbmFseXNpcworPT09PT09PT0KKworQmVmb3JlIGFuYWx5emluZyB0aGUgZHVtcCBpbWFnZSwgeW91IHNob3VsZCByZWJvb3QgaW50byBhIHN0YWJsZSBrZXJuZWwuCisKK1lvdSBjYW4gZG8gbGltaXRlZCBhbmFseXNpcyB1c2luZyBHREIgb24gdGhlIGR1bXAgZmlsZSBjb3BpZWQgb3V0IG9mCisvcHJvYy92bWNvcmUuIFVzZSB0aGUgZGVidWcgdm1saW51eCBidWlsdCB3aXRoIC1nIGFuZCBydW4gdGhlIGZvbGxvd2luZworY29tbWFuZDoKKworICAgZ2RiIHZtbGludXggPGR1bXAtZmlsZT4KKworU3RhY2sgdHJhY2UgZm9yIHRoZSB0YXNrIG9uIHByb2Nlc3NvciAwLCByZWdpc3RlciBkaXNwbGF5LCBhbmQgbWVtb3J5CitkaXNwbGF5IHdvcmsgZmluZS4KKworTm90ZTogR0RCIGNhbm5vdCBhbmFseXplIGNvcmUgZmlsZXMgZ2VuZXJhdGVkIGluIEVMRjY0IGZvcm1hdCBmb3IgeDg2LgorT24gc3lzdGVtcyB3aXRoIGEgbWF4aW11bSBvZiA0R0Igb2YgbWVtb3J5LCB5b3UgY2FuIGdlbmVyYXRlCitFTEYzMi1mb3JtYXQgaGVhZGVycyB1c2luZyB0aGUgLS1lbGYzMi1jb3JlLWhlYWRlcnMga2VybmVsIG9wdGlvbiBvbiB0aGUKK2R1bXAga2VybmVsLgorCitZb3UgY2FuIGFsc28gdXNlIHRoZSBDcmFzaCB1dGlsaXR5IHRvIGFuYWx5emUgZHVtcCBmaWxlcyBpbiBLZHVtcAorZm9ybWF0LiBDcmFzaCBpcyBhdmFpbGFibGUgb24gRGF2ZSBBbmRlcnNvbidzIHNpdGUgYXQgdGhlIGZvbGxvd2luZyBVUkw6CisKKyAgIGh0dHA6Ly9wZW9wbGUucmVkaGF0LmNvbS9+YW5kZXJzb24vCisKK1RyaWdnZXIgS2R1bXAgb24gV0FSTigpCis9PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUga2VybmVsIHBhcmFtZXRlciwgcGFuaWNfb25fd2FybiwgY2FsbHMgcGFuaWMoKSBpbiBhbGwgV0FSTigpIHBhdGhzLiAgVGhpcword2lsbCBjYXVzZSBhIGtkdW1wIHRvIG9jY3VyIGF0IHRoZSBwYW5pYygpIGNhbGwuICBJbiBjYXNlcyB3aGVyZSBhIHVzZXIgd2FudHMKK3RvIHNwZWNpZnkgdGhpcyBkdXJpbmcgcnVudGltZSwgL3Byb2Mvc3lzL2tlcm5lbC9wYW5pY19vbl93YXJuIGNhbiBiZSBzZXQgdG8gMQordG8gYWNoaWV2ZSB0aGUgc2FtZSBiZWhhdmlvdXIuCisKK0NvbnRhY3QKKz09PT09PT0KKworVml2ZWsgR295YWwgKHZnb3lhbEByZWRoYXQuY29tKQorTWFuZWVzaCBTb25pIChtYW5lZXNoQGluLmlibS5jb20pCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24va2VybmVsLWRvYy1uYW5vLUhPV1RPLnR4dCBiL0RvY3VtZW50YXRpb24va2VybmVsLWRvYy1uYW5vLUhPV1RPLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGY2OWNkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9rZXJuZWwtZG9jLW5hbm8tSE9XVE8udHh0CkBAIC0wLDAgKzEsMzYyIEBACitrZXJuZWwtZG9jIG5hbm8tSE9XVE8KKz09PT09PT09PT09PT09PT09PT09PQorCitIb3cgdG8gZm9ybWF0IGtlcm5lbC1kb2MgY29tbWVudHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbiBvcmRlciB0byBwcm92aWRlIGVtYmVkZGVkLCAnQycgZnJpZW5kbHksIGVhc3kgdG8gbWFpbnRhaW4sCitidXQgY29uc2lzdGVudCBhbmQgZXh0cmFjdGFibGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgZnVuY3Rpb25zIGFuZAorZGF0YSBzdHJ1Y3R1cmVzIGluIHRoZSBMaW51eCBrZXJuZWwsIHRoZSBMaW51eCBrZXJuZWwgaGFzIGFkb3B0ZWQKK2EgY29uc2lzdGVudCBzdHlsZSBmb3IgZG9jdW1lbnRpbmcgZnVuY3Rpb25zIGFuZCB0aGVpciBwYXJhbWV0ZXJzLAorYW5kIHN0cnVjdHVyZXMgYW5kIHRoZWlyIG1lbWJlcnMuCisKK1RoZSBmb3JtYXQgZm9yIHRoaXMgZG9jdW1lbnRhdGlvbiBpcyBjYWxsZWQgdGhlIGtlcm5lbC1kb2MgZm9ybWF0LgorSXQgaXMgZG9jdW1lbnRlZCBpbiB0aGlzIERvY3VtZW50YXRpb24va2VybmVsLWRvYy1uYW5vLUhPV1RPLnR4dCBmaWxlLgorCitUaGlzIHN0eWxlIGVtYmVkcyB0aGUgZG9jdW1lbnRhdGlvbiB3aXRoaW4gdGhlIHNvdXJjZSBmaWxlcywgdXNpbmcKK2EgZmV3IHNpbXBsZSBjb252ZW50aW9ucy4gIFRoZSBzY3JpcHRzL2tlcm5lbC1kb2MgcGVybCBzY3JpcHQsIHNvbWUKK1NHTUwgdGVtcGxhdGVzIGluIERvY3VtZW50YXRpb24vRG9jQm9vaywgYW5kIG90aGVyIHRvb2xzIHVuZGVyc3RhbmQKK3RoZXNlIGNvbnZlbnRpb25zLCBhbmQgYXJlIHVzZWQgdG8gZXh0cmFjdCB0aGlzIGVtYmVkZGVkIGRvY3VtZW50YXRpb24KK2ludG8gdmFyaW91cyBkb2N1bWVudHMuCisKK0luIG9yZGVyIHRvIHByb3ZpZGUgZ29vZCBkb2N1bWVudGF0aW9uIG9mIGtlcm5lbCBmdW5jdGlvbnMgYW5kIGRhdGEKK3N0cnVjdHVyZXMsIHBsZWFzZSB1c2UgdGhlIGZvbGxvd2luZyBjb252ZW50aW9ucyB0byBmb3JtYXQgeW91cgora2VybmVsLWRvYyBjb21tZW50cyBpbiBMaW51eCBrZXJuZWwgc291cmNlLgorCitXZSBkZWZpbml0ZWx5IG5lZWQga2VybmVsLWRvYyBmb3JtYXR0ZWQgZG9jdW1lbnRhdGlvbiBmb3IgZnVuY3Rpb25zCit0aGF0IGFyZSBleHBvcnRlZCB0byBsb2FkYWJsZSBtb2R1bGVzIHVzaW5nIEVYUE9SVF9TWU1CT0wuCisKK1dlIGFsc28gbG9vayB0byBwcm92aWRlIGtlcm5lbC1kb2MgZm9ybWF0dGVkIGRvY3VtZW50YXRpb24gZm9yCitmdW5jdGlvbnMgZXh0ZXJuYWxseSB2aXNpYmxlIHRvIG90aGVyIGtlcm5lbCBmaWxlcyAobm90IG1hcmtlZAorInN0YXRpYyIpLgorCitXZSBhbHNvIHJlY29tbWVuZCBwcm92aWRpbmcga2VybmVsLWRvYyBmb3JtYXR0ZWQgZG9jdW1lbnRhdGlvbgorZm9yIHByaXZhdGUgKGZpbGUgInN0YXRpYyIpIHJvdXRpbmVzLCBmb3IgY29uc2lzdGVuY3kgb2Yga2VybmVsCitzb3VyY2UgY29kZSBsYXlvdXQuICBCdXQgdGhpcyBpcyBsb3dlciBwcmlvcml0eSBhbmQgYXQgdGhlCitkaXNjcmV0aW9uIG9mIHRoZSBNQUlOVEFJTkVSIG9mIHRoYXQga2VybmVsIHNvdXJjZSBmaWxlLgorCitEYXRhIHN0cnVjdHVyZXMgdmlzaWJsZSBpbiBrZXJuZWwgaW5jbHVkZSBmaWxlcyBzaG91bGQgYWxzbyBiZQorZG9jdW1lbnRlZCB1c2luZyBrZXJuZWwtZG9jIGZvcm1hdHRlZCBjb21tZW50cy4KKworVGhlIG9wZW5pbmcgY29tbWVudCBtYXJrICIvKioiIGlzIHJlc2VydmVkIGZvciBrZXJuZWwtZG9jIGNvbW1lbnRzLgorT25seSBjb21tZW50cyBzbyBtYXJrZWQgd2lsbCBiZSBjb25zaWRlcmVkIGJ5IHRoZSBrZXJuZWwtZG9jIHNjcmlwdHMsCithbmQgYW55IGNvbW1lbnQgc28gbWFya2VkIG11c3QgYmUgaW4ga2VybmVsLWRvYyBmb3JtYXQuICBEbyBub3QgdXNlCisiLyoqIiB0byBiZSBiZWdpbiBhIGNvbW1lbnQgYmxvY2sgdW5sZXNzIHRoZSBjb21tZW50IGJsb2NrIGNvbnRhaW5zCitrZXJuZWwtZG9jIGZvcm1hdHRlZCBjb21tZW50cy4gIFRoZSBjbG9zaW5nIGNvbW1lbnQgbWFya2VyIGZvcgora2VybmVsLWRvYyBjb21tZW50cyBjYW4gYmUgZWl0aGVyICIqLyIgb3IgIioqLyIsIGJ1dCAiKi8iIGlzCitwcmVmZXJyZWQgaW4gdGhlIExpbnV4IGtlcm5lbCB0cmVlLgorCitLZXJuZWwtZG9jIGNvbW1lbnRzIHNob3VsZCBiZSBwbGFjZWQganVzdCBiZWZvcmUgdGhlIGZ1bmN0aW9uCitvciBkYXRhIHN0cnVjdHVyZSBiZWluZyBkZXNjcmliZWQuCisKK0V4YW1wbGUga2VybmVsLWRvYyBmdW5jdGlvbiBjb21tZW50OgorCisvKioKKyAqIGZvb2JhcigpIC0gc2hvcnQgZnVuY3Rpb24gZGVzY3JpcHRpb24gb2YgZm9vYmFyCisgKiBAYXJnMToJRGVzY3JpYmUgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIGZvb2Jhci4KKyAqIEBhcmcyOglEZXNjcmliZSB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIGZvb2Jhci4KKyAqCQlPbmUgY2FuIHByb3ZpZGUgbXVsdGlwbGUgbGluZSBkZXNjcmlwdGlvbnMKKyAqCQlmb3IgYXJndW1lbnRzLgorICoKKyAqIEEgbG9uZ2VyIGRlc2NyaXB0aW9uLCB3aXRoIG1vcmUgZGlzY3Vzc2lvbiBvZiB0aGUgZnVuY3Rpb24gZm9vYmFyKCkKKyAqIHRoYXQgbWlnaHQgYmUgdXNlZnVsIHRvIHRob3NlIHVzaW5nIG9yIG1vZGlmeWluZyBpdC4gIEJlZ2lucyB3aXRoCisgKiBlbXB0eSBjb21tZW50IGxpbmUsIGFuZCBtYXkgaW5jbHVkZSBhZGRpdGlvbmFsIGVtYmVkZGVkIGVtcHR5CisgKiBjb21tZW50IGxpbmVzLgorICoKKyAqIFRoZSBsb25nZXIgZGVzY3JpcHRpb24gY2FuIGhhdmUgbXVsdGlwbGUgcGFyYWdyYXBocy4KKyAqCisgKiBSZXR1cm46IERlc2NyaWJlIHRoZSByZXR1cm4gdmFsdWUgb2YgZm9vYmFyLgorICovCisKK1RoZSBzaG9ydCBkZXNjcmlwdGlvbiBmb2xsb3dpbmcgdGhlIHN1YmplY3QgY2FuIHNwYW4gbXVsdGlwbGUgbGluZXMKK2FuZCBlbmRzIHdpdGggYW4gQGFyZ3VtZW50IGRlc2NyaXB0aW9uLCBhbiBlbXB0eSBsaW5lIG9yIHRoZSBlbmQgb2YKK3RoZSBjb21tZW50IGJsb2NrLgorCitUaGUgQGFyZ3VtZW50IGRlc2NyaXB0aW9ucyBtdXN0IGJlZ2luIG9uIHRoZSB2ZXJ5IG5leHQgbGluZSBmb2xsb3dpbmcKK3RoaXMgb3BlbmluZyBzaG9ydCBmdW5jdGlvbiBkZXNjcmlwdGlvbiBsaW5lLCB3aXRoIG5vIGludGVydmVuaW5nCitlbXB0eSBjb21tZW50IGxpbmVzLgorCitJZiBhIGZ1bmN0aW9uIHBhcmFtZXRlciBpcyAiLi4uIiAodmFyYXJncyksIGl0IHNob3VsZCBiZSBsaXN0ZWQgaW4KK2tlcm5lbC1kb2Mgbm90YXRpb24gYXM6CisgKiBALi4uOiBkZXNjcmlwdGlvbgorCitUaGUgcmV0dXJuIHZhbHVlLCBpZiBhbnksIHNob3VsZCBiZSBkZXNjcmliZWQgaW4gYSBkZWRpY2F0ZWQgc2VjdGlvbgorbmFtZWQgIlJldHVybiIuCisKK0V4YW1wbGUga2VybmVsLWRvYyBkYXRhIHN0cnVjdHVyZSBjb21tZW50LgorCisvKioKKyAqIHN0cnVjdCBibGFoIC0gdGhlIGJhc2ljIGJsYWggc3RydWN0dXJlCisgKiBAbWVtMToJZGVzY3JpYmUgdGhlIGZpcnN0IG1lbWJlciBvZiBzdHJ1Y3QgYmxhaAorICogQG1lbTI6CWRlc2NyaWJlIHRoZSBzZWNvbmQgbWVtYmVyIG9mIHN0cnVjdCBibGFoLAorICoJCXBlcmhhcHMgd2l0aCBtb3JlIGxpbmVzIGFuZCB3b3Jkcy4KKyAqCisgKiBMb25nZXIgZGVzY3JpcHRpb24gb2YgdGhpcyBzdHJ1Y3R1cmUuCisgKi8KKworVGhlIGtlcm5lbC1kb2MgZnVuY3Rpb24gY29tbWVudHMgZGVzY3JpYmUgZWFjaCBwYXJhbWV0ZXIgdG8gdGhlCitmdW5jdGlvbiwgaW4gb3JkZXIsIHdpdGggdGhlIEBuYW1lIGxpbmVzLgorCitUaGUga2VybmVsLWRvYyBkYXRhIHN0cnVjdHVyZSBjb21tZW50cyBkZXNjcmliZSBlYWNoIHN0cnVjdHVyZSBtZW1iZXIKK2luIHRoZSBkYXRhIHN0cnVjdHVyZSwgd2l0aCB0aGUgQG5hbWUgbGluZXMuCisKK1RoZSBsb25nZXIgZGVzY3JpcHRpb24gZm9ybWF0dGluZyBpcyAicmVmbG93ZWQiLCBsb3NpbmcgeW91ciBsaW5lCiticmVha3MuICBTbyBwcmVzZW50aW5nIGNhcmVmdWxseSBmb3JtYXR0ZWQgbGlzdHMgd2l0aGluIHRoZXNlCitkZXNjcmlwdGlvbnMgd29uJ3Qgd29yayBzbyB3ZWxsOyBkZXJpdmVkIGRvY3VtZW50YXRpb24gd2lsbCBsb3NlCit0aGUgZm9ybWF0dGluZy4KKworU2VlIHRoZSBzZWN0aW9uIGJlbG93ICJIb3cgdG8gYWRkIGV4dHJhY3RhYmxlIGRvY3VtZW50YXRpb24gdG8geW91cgorc291cmNlIGZpbGVzIiBmb3IgbW9yZSBkZXRhaWxzIGFuZCBub3RlcyBvbiBob3cgdG8gZm9ybWF0IGtlcm5lbC1kb2MKK2NvbW1lbnRzLgorCitDb21wb25lbnRzIG9mIHRoZSBrZXJuZWwtZG9jIHN5c3RlbQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTWFueSBwbGFjZXMgaW4gdGhlIHNvdXJjZSB0cmVlIGhhdmUgZXh0cmFjdGFibGUgZG9jdW1lbnRhdGlvbiBpbiB0aGUKK2Zvcm0gb2YgYmxvY2sgY29tbWVudHMgYWJvdmUgZnVuY3Rpb25zLiAgVGhlIGNvbXBvbmVudHMgb2YgdGhpcyBzeXN0ZW0KK2FyZToKKworLSBzY3JpcHRzL2tlcm5lbC1kb2MKKworICBUaGlzIGlzIGEgcGVybCBzY3JpcHQgdGhhdCBodW50cyBmb3IgdGhlIGJsb2NrIGNvbW1lbnRzIGFuZCBjYW4gbWFyaworICB0aGVtIHVwIGRpcmVjdGx5IGludG8gRG9jQm9vaywgbWFuLCB0ZXh0LCBhbmQgSFRNTC4gKE5vLCBub3QKKyAgdGV4aW5mby4pCisKKy0gRG9jdW1lbnRhdGlvbi9Eb2NCb29rLyoudG1wbAorCisgIFRoZXNlIGFyZSBTR01MIHRlbXBsYXRlIGZpbGVzLCB3aGljaCBhcmUgbm9ybWFsIFNHTUwgZmlsZXMgd2l0aAorICBzcGVjaWFsIHBsYWNlLWhvbGRlcnMgZm9yIHdoZXJlIHRoZSBleHRyYWN0ZWQgZG9jdW1lbnRhdGlvbiBzaG91bGQKKyAgZ28uCisKKy0gc2NyaXB0cy9kb2Nwcm9jLmMKKworICBUaGlzIGlzIGEgcHJvZ3JhbSBmb3IgY29udmVydGluZyBTR01MIHRlbXBsYXRlIGZpbGVzIGludG8gU0dNTAorICBmaWxlcy4gV2hlbiBhIGZpbGUgaXMgcmVmZXJlbmNlZCBpdCBpcyBzZWFyY2hlZCBmb3Igc3ltYm9scworICBleHBvcnRlZCAoRVhQT1JUX1NZTUJPTCksIHRvIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBpbnRlcm5hbAorICBhbmQgZXh0ZXJuYWwgZnVuY3Rpb25zLgorICBJdCBpbnZva2VzIGtlcm5lbC1kb2MsIGdpdmluZyBpdCB0aGUgbGlzdCBvZiBmdW5jdGlvbnMgdGhhdAorICBhcmUgdG8gYmUgZG9jdW1lbnRlZC4KKyAgQWRkaXRpb25hbGx5IGl0IGlzIHVzZWQgdG8gc2NhbiB0aGUgU0dNTCB0ZW1wbGF0ZSBmaWxlcyB0byBsb2NhdGUKKyAgYWxsIHRoZSBmaWxlcyByZWZlcmVuY2VkIGhlcmVpbi4gVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIGRlcGVuZGVuY3kKKyAgaW5mb3JtYXRpb24gYXMgdXNlZCBieSBtYWtlLgorCistIE1ha2VmaWxlCisKKyAgVGhlIHRhcmdldHMgJ3htbGRvY3MnLCAncHNkb2NzJywgJ3BkZmRvY3MnLCBhbmQgJ2h0bWxkb2NzJyBhcmUgdXNlZAorICB0byBidWlsZCBYTUwgRG9jQm9vayBmaWxlcywgUG9zdFNjcmlwdCBmaWxlcywgUERGIGZpbGVzLCBhbmQgaHRtbCBmaWxlcworICBpbiBEb2N1bWVudGF0aW9uL0RvY0Jvb2suIFRoZSBvbGRlciB0YXJnZXQgJ3NnbWxkb2NzJyBpcyBlcXVpdmFsZW50CisgIHRvICd4bWxkb2NzJy4KKworLSBEb2N1bWVudGF0aW9uL0RvY0Jvb2svTWFrZWZpbGUKKworICBUaGlzIGlzIHdoZXJlIEMgZmlsZXMgYXJlIGFzc29jaWF0ZWQgd2l0aCBTR01MIHRlbXBsYXRlcy4KKworCitIb3cgdG8gZXh0cmFjdCB0aGUgZG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgeW91IGp1c3Qgd2FudCB0byByZWFkIHRoZSByZWFkeS1tYWRlIGJvb2tzIG9uIHRoZSB2YXJpb3VzCitzdWJzeXN0ZW1zIChzZWUgRG9jdW1lbnRhdGlvbi9Eb2NCb29rLyoudG1wbCksIGp1c3QgdHlwZSAnbWFrZQorcHNkb2NzJywgb3IgJ21ha2UgcGRmZG9jcycsIG9yICdtYWtlIGh0bWxkb2NzJywgZGVwZW5kaW5nIG9uIHlvdXIKK3ByZWZlcmVuY2UuICBJZiB5b3Ugd291bGQgcmF0aGVyIHJlYWQgYSBkaWZmZXJlbnQgZm9ybWF0LCB5b3UgY2FuIHR5cGUKKydtYWtlIHhtbGRvY3MnIGFuZCB0aGVuIHVzZSBEb2NCb29rIHRvb2xzIHRvIGNvbnZlcnQKK0RvY3VtZW50YXRpb24vRG9jQm9vay8qLnhtbCB0byBhIGZvcm1hdCBvZiB5b3VyIGNob2ljZSAoZm9yIGV4YW1wbGUsCisnZGIyaHRtbCAuLi4nIGlmICdtYWtlIGh0bWxkb2NzJyB3YXMgbm90IGRlZmluZWQpLgorCitJZiB5b3Ugd2FudCB0byBzZWUgbWFuIHBhZ2VzIGluc3RlYWQsIHlvdSBjYW4gZG8gdGhpczoKKworJCBjZCBsaW51eAorJCBzY3JpcHRzL2tlcm5lbC1kb2MgLW1hbiAkKGZpbmQgLW5hbWUgJyouYycpIHwgc3BsaXQtbWFuLnBsIC90bXAvbWFuCiskIHNjcmlwdHMva2VybmVsLWRvYyAtbWFuICQoZmluZCAtbmFtZSAnKi5oJykgfCBzcGxpdC1tYW4ucGwgL3RtcC9tYW4KKworSGVyZSBpcyBzcGxpdC1tYW4ucGw6CisKKy0tPgorIyEvdXNyL2Jpbi9wZXJsCisKK2lmICgkI0FSR1YgPCAwKSB7CisgICBkaWUgIndoZXJlIGRvIEkgcHV0IHRoZSByZXN1bHRzP1xuIjsKK30KKworbWtkaXIgJEFSR1ZbMF0sMDc3NzsKKyRzdGF0ZSA9IDA7Cit3aGlsZSAoPFNURElOPikgeworICAgIGlmICgvXlwuVEggXCJbXlwiXSpcIiA5IFwiKFteXCJdKilcIi8pIHsKKwlpZiAoJHN0YXRlID09IDEpIHsgY2xvc2UgT1VUIH0KKwkkc3RhdGUgPSAxOworCSRmbiA9ICIkQVJHVlswXS8kMS45IjsKKwlwcmludCBTVERFUlIgIkNyZWF0aW5nICRmblxuIjsKKwlvcGVuIE9VVCwgIj4kZm4iIG9yIGRpZSAiY2FuJ3Qgb3BlbiAkZm46ICQhXG4iOworCXByaW50IE9VVCAkXzsKKyAgICB9IGVsc2lmICgkc3RhdGUgIT0gMCkgeworCXByaW50IE9VVCAkXzsKKyAgICB9Cit9CisKK2Nsb3NlIE9VVDsKKzwtLQorCitJZiB5b3UganVzdCB3YW50IHRvIHZpZXcgdGhlIGRvY3VtZW50YXRpb24gZm9yIG9uZSBmdW5jdGlvbiBpbiBvbmUKK2ZpbGUsIHlvdSBjYW4gZG8gdGhpczoKKworJCBzY3JpcHRzL2tlcm5lbC1kb2MgLW1hbiAtZnVuY3Rpb24gZm4gZmlsZSB8IG5yb2ZmIC1tYW4gfCBsZXNzCisKK29yIHRoaXM6CisKKyQgc2NyaXB0cy9rZXJuZWwtZG9jIC10ZXh0IC1mdW5jdGlvbiBmbiBmaWxlCisKKworSG93IHRvIGFkZCBleHRyYWN0YWJsZSBkb2N1bWVudGF0aW9uIHRvIHlvdXIgc291cmNlIGZpbGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZvcm1hdCBvZiB0aGUgYmxvY2sgY29tbWVudCBpcyBsaWtlIHRoaXM6CisKKy8qKgorICogZnVuY3Rpb25fbmFtZSg6KT8gKC0gc2hvcnQgZGVzY3JpcHRpb24pPworKCogQHBhcmFtZXRlcngoc3BhY2UpKjogKGRlc2NyaXB0aW9uIG9mIHBhcmFtZXRlciB4KT8pKgorKCogYSBibGFuayBsaW5lKT8KKyAqIChEZXNjcmlwdGlvbjopPyAoRGVzY3JpcHRpb24gb2YgZnVuY3Rpb24pPworICogKHNlY3Rpb24gaGVhZGVyOiAoc2VjdGlvbiBkZXNjcmlwdGlvbik/ICkqCisoKik/Ki8KKworQWxsICJkZXNjcmlwdGlvbiIgdGV4dCBjYW4gc3BhbiBtdWx0aXBsZSBsaW5lcywgYWx0aG91Z2ggdGhlCitmdW5jdGlvbl9uYW1lICYgaXRzIHNob3J0IGRlc2NyaXB0aW9uIGFyZSB0cmFkaXRpb25hbGx5IG9uIGEgc2luZ2xlIGxpbmUuCitEZXNjcmlwdGlvbiB0ZXh0IG1heSBhbHNvIGNvbnRhaW4gYmxhbmsgbGluZXMgKGkuZS4sIGxpbmVzIHRoYXQgY29udGFpbgorb25seSBhICIqIikuCisKKyJzZWN0aW9uIGhlYWRlcjoiIG5hbWVzIG11c3QgYmUgdW5pcXVlIHBlciBmdW5jdGlvbiAob3Igc3RydWN0LAordW5pb24sIHR5cGVkZWYsIGVudW0pLgorCitVc2UgdGhlIHNlY3Rpb24gaGVhZGVyICJSZXR1cm4iIGZvciBzZWN0aW9ucyBkZXNjcmliaW5nIHRoZSByZXR1cm4gdmFsdWUKK29mIGEgZnVuY3Rpb24uCisKK0F2b2lkIHB1dHRpbmcgYSBzcHVyaW91cyBibGFuayBsaW5lIGFmdGVyIHRoZSBmdW5jdGlvbiBuYW1lLCBvciBlbHNlIHRoZQorZGVzY3JpcHRpb24gd2lsbCBiZSByZXBlYXRlZCEKKworQWxsIGRlc2NyaXB0aXZlIHRleHQgaXMgZnVydGhlciBwcm9jZXNzZWQsIHNjYW5uaW5nIGZvciB0aGUgZm9sbG93aW5nIHNwZWNpYWwKK3BhdHRlcm5zLCB3aGljaCBhcmUgaGlnaGxpZ2h0ZWQgYXBwcm9wcmlhdGVseS4KKworJ2Z1bmNuYW1lKCknIC0gZnVuY3Rpb24KKyckRU5WVkFSJyAtIGVudmlyb25tZW50IHZhcmlhYmxlCisnJnN0cnVjdF9uYW1lJyAtIG5hbWUgb2YgYSBzdHJ1Y3R1cmUgKHVwIHRvIHR3byB3b3JkcyBpbmNsdWRpbmcgJ3N0cnVjdCcpCisnQHBhcmFtZXRlcicgLSBuYW1lIG9mIGEgcGFyYW1ldGVyCisnJUNPTlNUJyAtIG5hbWUgb2YgYSBjb25zdGFudC4KKworTk9URSAxOiAgVGhlIG11bHRpLWxpbmUgZGVzY3JpcHRpdmUgdGV4dCB5b3UgcHJvdmlkZSBkb2VzICpub3QqIHJlY29nbml6ZQorbGluZSBicmVha3MsIHNvIGlmIHlvdSB0cnkgdG8gZm9ybWF0IHNvbWUgdGV4dCBuaWNlbHksIGFzIGluOgorCisgIFJldHVybjoKKyAgICAwIC0gY29vbAorICAgIDEgLSBpbnZhbGlkIGFyZworICAgIDIgLSBvdXQgb2YgbWVtb3J5CisKK3RoaXMgd2lsbCBhbGwgcnVuIHRvZ2V0aGVyIGFuZCBwcm9kdWNlOgorCisgIFJldHVybjogMCAtIGNvb2wgMSAtIGludmFsaWQgYXJnIDIgLSBvdXQgb2YgbWVtb3J5CisKK05PVEUgMjogIElmIHRoZSBkZXNjcmlwdGl2ZSB0ZXh0IHlvdSBwcm92aWRlIGhhcyBsaW5lcyB0aGF0IGJlZ2luIHdpdGgKK3NvbWUgcGhyYXNlIGZvbGxvd2VkIGJ5IGEgY29sb24sIGVhY2ggb2YgdGhvc2UgcGhyYXNlcyB3aWxsIGJlIHRha2VuIGFzCithIG5ldyBzZWN0aW9uIGhlYWRpbmcsIHdoaWNoIG1lYW5zIHlvdSBzaG91bGQgc2ltaWxhcmx5IHRyeSB0byBhdm9pZCB0ZXh0CitsaWtlOgorCisgIFJldHVybjoKKyAgICAwOiBjb29sCisgICAgMTogaW52YWxpZCBhcmcKKyAgICAyOiBvdXQgb2YgbWVtb3J5CisKK2V2ZXJ5IGxpbmUgb2Ygd2hpY2ggd291bGQgc3RhcnQgYSBuZXcgc2VjdGlvbi4gIEFnYWluLCBwcm9iYWJseSBub3QKK3doYXQgeW91IHdlcmUgYWZ0ZXIuCisKK1Rha2UgYSBsb29rIGFyb3VuZCB0aGUgc291cmNlIHRyZWUgZm9yIGV4YW1wbGVzLgorCisKK2tlcm5lbC1kb2MgZm9yIHN0cnVjdHMsIHVuaW9ucywgZW51bXMsIGFuZCB0eXBlZGVmcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Jlc2lkZSBmdW5jdGlvbnMgeW91IGNhbiBhbHNvIHdyaXRlIGRvY3VtZW50YXRpb24gZm9yIHN0cnVjdHMsIHVuaW9ucywKK2VudW1zIGFuZCB0eXBlZGVmcy4gSW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gbmFtZSB5b3UgbXVzdCB3cml0ZSB0aGUgbmFtZQorb2YgdGhlIGRlY2xhcmF0aW9uOyAgdGhlIHN0cnVjdC91bmlvbi9lbnVtL3R5cGVkZWYgbXVzdCBhbHdheXMgcHJlY2VkZQordGhlIG5hbWUuIE5lc3Rpbmcgb2YgZGVjbGFyYXRpb25zIGlzIG5vdCBzdXBwb3J0ZWQuCitVc2UgdGhlIGFyZ3VtZW50IG1lY2hhbmlzbSB0byBkb2N1bWVudCBtZW1iZXJzIG9yIGNvbnN0YW50cy4KKworSW5zaWRlIGEgc3RydWN0IGRlc2NyaXB0aW9uLCB5b3UgY2FuIHVzZSB0aGUgInByaXZhdGU6IiBhbmQgInB1YmxpYzoiCitjb21tZW50IHRhZ3MuICBTdHJ1Y3R1cmUgZmllbGRzIHRoYXQgYXJlIGluc2lkZSBhICJwcml2YXRlOiIgYXJlYQorYXJlIG5vdCBsaXN0ZWQgaW4gdGhlIGdlbmVyYXRlZCBvdXRwdXQgZG9jdW1lbnRhdGlvbi4gIFRoZSAicHJpdmF0ZToiCithbmQgInB1YmxpYzoiIHRhZ3MgbXVzdCBiZWdpbiBpbW1lZGlhdGVseSBmb2xsb3dpbmcgYSAiLyoiIGNvbW1lbnQKK21hcmtlci4gIFRoZXkgbWF5IG9wdGlvbmFsbHkgaW5jbHVkZSBjb21tZW50cyBiZXR3ZWVuIHRoZSAiOiIgYW5kIHRoZQorZW5kaW5nICIqLyIgbWFya2VyLgorCitFeGFtcGxlOgorCisvKioKKyAqIHN0cnVjdCBteV9zdHJ1Y3QgLSBzaG9ydCBkZXNjcmlwdGlvbgorICogQGE6IGZpcnN0IG1lbWJlcgorICogQGI6IHNlY29uZCBtZW1iZXIKKyAqCisgKiBMb25nZXIgZGVzY3JpcHRpb24KKyAqLworc3RydWN0IG15X3N0cnVjdCB7CisgICAgaW50IGE7CisgICAgaW50IGI7CisvKiBwcml2YXRlOiBpbnRlcm5hbCB1c2Ugb25seSAqLworICAgIGludCBjOworfTsKKworCitJbmNsdWRpbmcgZG9jdW1lbnRhdGlvbiBibG9ja3MgaW4gc291cmNlIGZpbGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RvIGZhY2lsaXRhdGUgaGF2aW5nIHNvdXJjZSBjb2RlIGFuZCBjb21tZW50cyBjbG9zZSB0b2dldGhlciwgeW91IGNhbgoraW5jbHVkZSBrZXJuZWwtZG9jIGRvY3VtZW50YXRpb24gYmxvY2tzIHRoYXQgYXJlIGZyZWUtZm9ybSBjb21tZW50cworaW5zdGVhZCBvZiBiZWluZyBrZXJuZWwtZG9jIGZvciBmdW5jdGlvbnMsIHN0cnVjdHVyZXMsIHVuaW9ucywKK2VudW1zLCBvciB0eXBlZGVmcy4gIFRoaXMgY291bGQgYmUgdXNlZCBmb3Igc29tZXRoaW5nIGxpa2UgYQordGhlb3J5IG9mIG9wZXJhdGlvbiBmb3IgYSBkcml2ZXIgb3IgbGlicmFyeSBjb2RlLCBmb3IgZXhhbXBsZS4KKworVGhpcyBpcyBkb25lIGJ5IHVzaW5nIGEgRE9DOiBzZWN0aW9uIGtleXdvcmQgd2l0aCBhIHNlY3Rpb24gdGl0bGUuICBFLmcuOgorCisvKioKKyAqIERPQzogVGhlb3J5IG9mIE9wZXJhdGlvbgorICoKKyAqIFRoZSB3aGl6YmFuZyBmb29iYXIgaXMgYSBkaWxseSBvZiBhIGdpem1vLiAgSXQgY2FuIGRvIHdoYXRldmVyIHlvdQorICogd2FudCBpdCB0byBkbywgYXQgYW55IHRpbWUuICBJdCByZWFkcyB5b3VyIG1pbmQuICBIZXJlJ3MgaG93IGl0IHdvcmtzLgorICoKKyAqIGZvbyBiYXIgc3BsYXQKKyAqCisgKiBUaGUgb25seSBkcmF3YmFjayB0byB0aGlzIGdpem1vIGlzIHRoYXQgaXMgY2FuIHNvbWV0aW1lcyBkYW1hZ2UKKyAqIGhhcmR3YXJlLCBzb2Z0d2FyZSwgb3IgaXRzIHN1YmplY3QocykuCisgKi8KKworRE9DOiBzZWN0aW9ucyBhcmUgdXNlZCBpbiBTR01MIHRlbXBsYXRlcyBmaWxlcyBhcyBpbmRpY2F0ZWQgYmVsb3cuCisKKworSG93IHRvIG1ha2UgbmV3IFNHTUwgdGVtcGxhdGUgZmlsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NHTUwgdGVtcGxhdGUgZmlsZXMgKCoudG1wbCkgYXJlIGxpa2Ugbm9ybWFsIFNHTUwgZmlsZXMsIGV4Y2VwdCB0aGF0Cit0aGV5IGNhbiBjb250YWluIGVzY2FwZSBzZXF1ZW5jZXMgd2hlcmUgZXh0cmFjdGVkIGRvY3VtZW50YXRpb24gc2hvdWxkCitiZSBpbnNlcnRlZC4KKworIUU8ZmlsZW5hbWU+IGlzIHJlcGxhY2VkIGJ5IHRoZSBkb2N1bWVudGF0aW9uLCBpbiA8ZmlsZW5hbWU+LCBmb3IKK2Z1bmN0aW9ucyB0aGF0IGFyZSBleHBvcnRlZCB1c2luZyBFWFBPUlRfU1lNQk9MOiB0aGUgZnVuY3Rpb24gbGlzdCBpcworY29sbGVjdGVkIGZyb20gZmlsZXMgbGlzdGVkIGluIERvY3VtZW50YXRpb24vRG9jQm9vay9NYWtlZmlsZS4KKworIUk8ZmlsZW5hbWU+IGlzIHJlcGxhY2VkIGJ5IHRoZSBkb2N1bWVudGF0aW9uIGZvciBmdW5jdGlvbnMgdGhhdCBhcmUKK19ub3RfIGV4cG9ydGVkIHVzaW5nIEVYUE9SVF9TWU1CT0wuCisKKyFEPGZpbGVuYW1lPiBpcyB1c2VkIHRvIG5hbWUgYWRkaXRpb25hbCBmaWxlcyB0byBzZWFyY2ggZm9yIGZ1bmN0aW9ucworZXhwb3J0ZWQgdXNpbmcgRVhQT1JUX1NZTUJPTC4KKworIUY8ZmlsZW5hbWU+IDxmdW5jdGlvbiBbZnVuY3Rpb25zLi4uXT4gaXMgcmVwbGFjZWQgYnkgdGhlCitkb2N1bWVudGF0aW9uLCBpbiA8ZmlsZW5hbWU+LCBmb3IgdGhlIGZ1bmN0aW9ucyBsaXN0ZWQuCisKKyFQPGZpbGVuYW1lPiA8c2VjdGlvbiB0aXRsZT4gaXMgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHRoZSBET0M6CitzZWN0aW9uIHRpdGxlZCA8c2VjdGlvbiB0aXRsZT4gZnJvbSA8ZmlsZW5hbWU+LgorU3BhY2VzIGFyZSBhbGxvd2VkIGluIDxzZWN0aW9uIHRpdGxlPjsgZG8gbm90IHF1b3RlIHRoZSA8c2VjdGlvbiB0aXRsZT4uCisKKyFDPGZpbGVuYW1lPiBpcyByZXBsYWNlZCBieSBub3RoaW5nLCBidXQgbWFrZXMgdGhlIHRvb2xzIGNoZWNrIHRoYXQKK2FsbCBET0M6IHNlY3Rpb25zIGFuZCBkb2N1bWVudGVkIGZ1bmN0aW9ucywgc3ltYm9scywgZXRjLiBhcmUgdXNlZC4KK1RoaXMgbWFrZXMgc2Vuc2UgdG8gdXNlIHdoZW4geW91IHVzZSAhRi8hUCBvbmx5IGFuZCB3YW50IHRvIHZlcmlmeQordGhhdCBhbGwgZG9jdW1lbnRhdGlvbiBpcyBpbmNsdWRlZC4KKworVGltLgorKi8gPHR3YXVnaEByZWRoYXQuY29tPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9rZXJuZWwtZG9jcy50eHQgYi9Eb2N1bWVudGF0aW9uL2tlcm5lbC1kb2NzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODkxMzM2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9rZXJuZWwtZG9jcy50eHQKQEAgLTAsMCArMSw3MjQgQEAKKworICAgIEluZGV4IG9mIERvY3VtZW50YXRpb24gZm9yIFBlb3BsZSBJbnRlcmVzdGVkIGluIFdyaXRpbmcgYW5kL29yCisKKyAgICAgICAgICAgICAgICAgICBVbmRlcnN0YW5kaW5nIHRoZSBMaW51eCBLZXJuZWwuCisKKyAgICAgICAgICBKdWFuLU1hcmlhbm8gZGUgR295ZW5lY2hlIDxqbXNleWFzQGRpdC51cG0uZXM+CisKKy8qCisgKiBUaGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBkb2N1bWVudCBtYXkgYmUgZm91bmQgYXQ6CisgKiAgIGh0dHA6Ly93d3cuZGl0LnVwbS5lcy9+am1zZXlhcy9saW51eC9rZXJuZWwvaGFja2Vycy1kb2NzLmh0bWwKKyAqLworCisgICBUaGUgbmVlZCBmb3IgYSBkb2N1bWVudCBsaWtlIHRoaXMgb25lIGJlY2FtZSBhcHBhcmVudCBpbiB0aGUKKyAgIGxpbnV4LWtlcm5lbCBtYWlsaW5nIGxpc3QgYXMgdGhlIHNhbWUgcXVlc3Rpb25zLCBhc2tpbmcgZm9yIHBvaW50ZXJzCisgICB0byBpbmZvcm1hdGlvbiwgYXBwZWFyZWQgYWdhaW4gYW5kIGFnYWluLgorICAgCisgICBGb3J0dW5hdGVseSwgYXMgbW9yZSBhbmQgbW9yZSBwZW9wbGUgZ2V0IHRvIEdOVS9MaW51eCwgbW9yZSBhbmQgbW9yZQorICAgZ2V0IGludGVyZXN0ZWQgaW4gdGhlIEtlcm5lbC4gQnV0IHJlYWRpbmcgdGhlIHNvdXJjZXMgaXMgbm90IGFsd2F5cworICAgZW5vdWdoLiBJdCBpcyBlYXN5IHRvIHVuZGVyc3RhbmQgdGhlIGNvZGUsIGJ1dCBtaXNzIHRoZSBjb25jZXB0cywgdGhlCisgICBwaGlsb3NvcGh5IGFuZCBkZXNpZ24gZGVjaXNpb25zIGJlaGluZCB0aGlzIGNvZGUuCisgICAKKyAgIFVuZm9ydHVuYXRlbHksIG5vdCBtYW55IGRvY3VtZW50cyBhcmUgYXZhaWxhYmxlIGZvciBiZWdpbm5lcnMgdG8KKyAgIHN0YXJ0LiBBbmQsIGV2ZW4gaWYgdGhleSBleGlzdCwgdGhlcmUgd2FzIG5vICJ3ZWxsLWtub3duIiBwbGFjZSB3aGljaAorICAga2VwdCB0cmFjayBvZiB0aGVtLiBUaGVzZSBsaW5lcyB0cnkgdG8gY292ZXIgdGhpcyBsYWNrLiBBbGwgZG9jdW1lbnRzCisgICBhdmFpbGFibGUgb24gbGluZSBrbm93biBieSB0aGUgYXV0aG9yIGFyZSBsaXN0ZWQsIHdoaWxlIHNvbWUgcmVmZXJlbmNlCisgICBib29rcyBhcmUgYWxzbyBtZW50aW9uZWQuCisgICAKKyAgIFBMRUFTRSwgaWYgeW91IGtub3cgYW55IHBhcGVyIG5vdCBsaXN0ZWQgaGVyZSBvciB3cml0ZSBhIG5ldyBkb2N1bWVudCwKKyAgIHNlbmQgbWUgYW4gZS1tYWlsLCBhbmQgSSdsbCBpbmNsdWRlIGEgcmVmZXJlbmNlIHRvIGl0IGhlcmUuIEFueQorICAgY29ycmVjdGlvbnMsIGlkZWFzIG9yIGNvbW1lbnRzIGFyZSBhbHNvIHdlbGNvbWVkLgorICAgCisgICBUaGUgcGFwZXJzIHRoYXQgZm9sbG93IGFyZSBsaXN0ZWQgaW4gbm8gcGFydGljdWxhciBvcmRlci4gQWxsIGFyZQorICAgY2F0YWxvZ2VkIHdpdGggdGhlIGZvbGxvd2luZyBmaWVsZHM6IHRoZSBkb2N1bWVudCdzICJUaXRsZSIsIHRoZQorICAgIkF1dGhvciIvcywgdGhlICJVUkwiIHdoZXJlIHRoZXkgY2FuIGJlIGZvdW5kLCBzb21lICJLZXl3b3JkcyIgaGVscGZ1bAorICAgd2hlbiBzZWFyY2hpbmcgZm9yIHNwZWNpZmljIHRvcGljcywgYW5kIGEgYnJpZWYgIkRlc2NyaXB0aW9uIiBvZiB0aGUKKyAgIERvY3VtZW50LgorICAgCisgICBFbmpveSEKKyAgIAorICAgICBPTi1MSU5FIERPQ1M6CisgICAgICAgCisgICAgICogVGl0bGU6ICJMaW51eCBEZXZpY2UgRHJpdmVycywgVGhpcmQgRWRpdGlvbiIKKyAgICAgICBBdXRob3I6IEpvbmF0aGFuIENvcmJldCwgQWxlc3NhbmRybyBSdWJpbmksIEdyZWcgS3JvYWgtSGFydG1hbgorICAgICAgIFVSTDogaHR0cDovL2x3bi5uZXQvS2VybmVsL0xERDMvCisgICAgICAgRGVzY3JpcHRpb246IEEgNjAwLXBhZ2UgYm9vayBjb3ZlcmluZyB0aGUgKDIuNi4xMCkgZHJpdmVyCisgICAgICAgcHJvZ3JhbW1pbmcgQVBJIGFuZCBrZXJuZWwgaGFja2luZyBpbiBnZW5lcmFsLiAgQXZhaWxhYmxlIHVuZGVyIHRoZQorICAgICAgIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSAyLjAgbGljZW5zZS4KKworICAgICAqIFRpdGxlOiAiVGhlIExpbnV4IEtlcm5lbCIKKyAgICAgICBBdXRob3I6IERhdmlkIEEuIFJ1c2xpbmcuCisgICAgICAgVVJMOiBodHRwOi8vd3d3LnRsZHAub3JnL0xEUC90bGsvdGxrLmh0bWwKKyAgICAgICBLZXl3b3JkczogZXZlcnl0aGluZyEsIGJvb2suCisgICAgICAgRGVzY3JpcHRpb246IE9uIGxpbmUsIDIwMCBwYWdlcyBib29rIGRlc2NyaWJpbmcgbW9zdCBhc3BlY3RzIG9mCisgICAgICAgdGhlIExpbnV4IEtlcm5lbC4gUHJvYmFibHksIHRoZSBmaXJzdCByZWZlcmVuY2UgZm9yIGJlZ2lubmVycy4KKyAgICAgICBMb3RzIG9mIGlsbHVzdHJhdGlvbnMgZXhwbGFpbmluZyBkYXRhIHN0cnVjdHVyZXMgdXNlIGFuZAorICAgICAgIHJlbGF0aW9uc2hpcHMgaW4gdGhlIHB1cmVzdCBSaWNoYXJkIFcuIFN0ZXZlbnMnIHN0eWxlLiBDb250ZW50czoKKyAgICAgICAiMS4tSGFyZHdhcmUgQmFzaWNzLCAyLi1Tb2Z0d2FyZSBCYXNpY3MsIDMuLU1lbW9yeSBNYW5hZ2VtZW50LAorICAgICAgIDQuLVByb2Nlc3NlcywgNS4tSW50ZXJwcm9jZXNzIENvbW11bmljYXRpb24gTWVjaGFuaXNtcywgNi4tUENJLAorICAgICAgIDcuLUludGVycnVwdHMgYW5kIEludGVycnVwdCBIYW5kbGluZywgOC4tRGV2aWNlIERyaXZlcnMsIDkuLVRoZQorICAgICAgIEZpbGUgc3lzdGVtLCAxMC4tTmV0d29ya3MsIDExLi1LZXJuZWwgTWVjaGFuaXNtcywgMTIuLU1vZHVsZXMsCisgICAgICAgMTMuLVRoZSBMaW51eCBLZXJuZWwgU291cmNlcywgQS4tTGludXggRGF0YSBTdHJ1Y3R1cmVzLCBCLi1UaGUKKyAgICAgICBBbHBoYSBBWFAgUHJvY2Vzc29yLCBDLi1Vc2VmdWwgV2ViIGFuZCBGVFAgU2l0ZXMsIEQuLVRoZSBHTlUKKyAgICAgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBHbG9zc2FyeSIuIEluIHNob3J0OiBhIG11c3QgaGF2ZS4KKworICAgICAqIFRpdGxlOiAiTGludXggRGV2aWNlIERyaXZlcnMsIDJuZCBFZGl0aW9uIgorICAgICAgIEF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgYW5kIEpvbmF0aGFuIENvcmJldC4KKyAgICAgICBVUkw6IGh0dHA6Ly93d3cueG1sLmNvbS9sZGQvY2hhcHRlci9ib29rL2luZGV4Lmh0bWwKKyAgICAgICBLZXl3b3JkczogZGV2aWNlIGRyaXZlcnMsIG1vZHVsZXMsIGRlYnVnZ2luZywgbWVtb3J5LCBoYXJkd2FyZSwKKyAgICAgICBpbnRlcnJ1cHQgaGFuZGxpbmcsIGNoYXIgZHJpdmVycywgYmxvY2sgZHJpdmVycywga21vZCwgbW1hcCwgRE1BLAorICAgICAgIGJ1c2VzLgorICAgICAgIERlc2NyaXB0aW9uOiBPJ1JlaWxseSdzIHBvcHVsYXIgYm9vaywgbm93IGFsc28gb24tbGluZSB1bmRlciB0aGUKKyAgICAgICBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UuCisgICAgICAgTm90ZXM6IFlvdSBjYW4gYWxzbyBidXkgaXQgaW4gcGFwZXItZm9ybSBmcm9tIE8nUmVpbGx5LiBTZWUgYmVsb3cKKyAgICAgICB1bmRlciBCT09LUyAoTm90IG9uLWxpbmUpLgorCisgICAgICogVGl0bGU6ICJDb25jZXB0dWFsIEFyY2hpdGVjdHVyZSBvZiB0aGUgTGludXggS2VybmVsIgorICAgICAgIEF1dGhvcjogSXZhbiBULiBCb3dtYW4uCisgICAgICAgVVJMOiBodHRwOi8vcGxnLnV3YXRlcmxvby5jYS8KKyAgICAgICBLZXl3b3JkczogY29uY2VwdHVhbCBzb2Z0d2FyZSBhcmNoaXRlY3R1cmUsIGV4dHJhY3RlZCBkZXNpZ24sCisgICAgICAgcmV2ZXJzZSBlbmdpbmVlcmluZywgc3lzdGVtIHN0cnVjdHVyZS4KKyAgICAgICBEZXNjcmlwdGlvbjogQ29uY2VwdHVhbCBzb2Z0d2FyZSBhcmNoaXRlY3R1cmUgb2YgdGhlIExpbnV4IGtlcm5lbCwKKyAgICAgICBhdXRvbWF0aWNhbGx5IGV4dHJhY3RlZCBmcm9tIHRoZSBzb3VyY2UgY29kZS4gVmVyeSBkZXRhaWxlZC4gR29vZAorICAgICAgIGZpZ3VyZXMuIEdpdmVzIGdvb2Qgb3ZlcmFsbCBrZXJuZWwgdW5kZXJzdGFuZGluZy4KKworICAgICAqIFRpdGxlOiAiQ29uY3JldGUgQXJjaGl0ZWN0dXJlIG9mIHRoZSBMaW51eCBLZXJuZWwiCisgICAgICAgQXV0aG9yOiBJdmFuIFQuIEJvd21hbiwgU2FoZWVtIFNpZGRpcWksIGFuZCBNZXllciBDLiBUYW51YW4uCisgICAgICAgVVJMOiBodHRwOi8vcGxnLnV3YXRlcmxvby5jYS8KKyAgICAgICBLZXl3b3JkczogY29uY3JldGUgYXJjaGl0ZWN0dXJlLCBleHRyYWN0ZWQgZGVzaWduLCByZXZlcnNlCisgICAgICAgZW5naW5lZXJpbmcsIHN5c3RlbSBzdHJ1Y3R1cmUsIGRlcGVuZGVuY2llcy4KKyAgICAgICBEZXNjcmlwdGlvbjogQ29uY3JldGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBMaW51eCBrZXJuZWwsCisgICAgICAgYXV0b21hdGljYWxseSBleHRyYWN0ZWQgZnJvbSB0aGUgc291cmNlIGNvZGUuIFZlcnkgZGV0YWlsZWQuIEdvb2QKKyAgICAgICBmaWd1cmVzLiBHaXZlcyBnb29kIG92ZXJhbGwga2VybmVsIHVuZGVyc3RhbmRpbmcuIFRoaXMgcGFwZXJzCisgICAgICAgZm9jdXMgb24gbG93ZXIgZGV0YWlscyB0aGFuIGl0cyBwcmVkZWNlc3NvciAoZmlsZXMsIHZhcmlhYmxlcy4uLikuCisKKyAgICAgKiBUaXRsZTogIkxpbnV4IGFzIGEgQ2FzZSBTdHVkeTogSXRzIEV4dHJhY3RlZCBTb2Z0d2FyZQorICAgICAgIEFyY2hpdGVjdHVyZSIKKyAgICAgICBBdXRob3I6IEl2YW4gVC4gQm93bWFuLCBSaWNoYXJkIEMuIEhvbHQgYW5kIE5laWwgVi4gQnJld3N0ZXIuCisgICAgICAgVVJMOiBodHRwOi8vcGxnLnV3YXRlcmxvby5jYS8KKyAgICAgICBLZXl3b3Jkczogc29mdHdhcmUgYXJjaGl0ZWN0dXJlLCBhcmNoaXRlY3R1cmUgcmVjb3ZlcnksCisgICAgICAgcmVkb2N1bWVudGF0aW9uLgorICAgICAgIERlc2NyaXB0aW9uOiBQYXBlciBhcHBlYXJlZCBhdCBJQ1NFJzk5LCBMb3MgQW5nZWxlcywgTWF5IDE2LTIyLAorICAgICAgIDE5OTkuIEEgbWl4dHVyZSBvZiB0aGUgcHJldmlvdXMgdHdvIGRvY3VtZW50cyBmcm9tIHRoZSBzYW1lCisgICAgICAgYXV0aG9yLgorCisgICAgICogVGl0bGU6ICJPdmVydmlldyBvZiB0aGUgVmlydHVhbCBGaWxlIFN5c3RlbSIKKyAgICAgICBBdXRob3I6IFJpY2hhcmQgR29vY2guCisgICAgICAgVVJMOiBodHRwOi8vd3d3Lm1qbXdpcmVkLm5ldC9rZXJuZWwvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy92ZnMudHh0CisgICAgICAgS2V5d29yZHM6IFZGUywgRmlsZSBTeXN0ZW0sIG1vdW50aW5nIGZpbGVzeXN0ZW1zLCBvcGVuaW5nIGZpbGVzLAorICAgICAgIGRlbnRyaWVzLCBkY2FjaGUuCisgICAgICAgRGVzY3JpcHRpb246IEJyaWVmIGludHJvZHVjdGlvbiB0byB0aGUgTGludXggVmlydHVhbCBGaWxlIFN5c3RlbS4KKyAgICAgICBXaGF0IGlzIGl0LCBob3cgaXQgd29ya3MsIG9wZXJhdGlvbnMgdGFrZW4gd2hlbiBvcGVuaW5nIGEgZmlsZSBvcgorICAgICAgIG1vdW50aW5nIGEgZmlsZSBzeXN0ZW0gYW5kIGRlc2NyaXB0aW9uIG9mIGltcG9ydGFudCBkYXRhCisgICAgICAgc3RydWN0dXJlcyBleHBsYWluaW5nIHRoZSBwdXJwb3NlIG9mIGVhY2ggb2YgdGhlaXIgZW50cmllcy4KKworICAgICAqIFRpdGxlOiAiVGhlIExpbnV4IFJBSUQtMSwgNCwgNSBDb2RlIgorICAgICAgIEF1dGhvcjogSW5nbyBNb2xuYXIsIEdhZGkgT3htYW4gYW5kIE1pZ3VlbCBkZSBJY2F6YS4KKyAgICAgICBVUkw6IGh0dHA6Ly93d3cubGludXhqb3VybmFsLmNvbS9hcnRpY2xlLnBocD9zaWQ9MjM5MQorICAgICAgIEtleXdvcmRzOiBSQUlELCBNRCBkcml2ZXIuCisgICAgICAgRGVzY3JpcHRpb246IExpbnV4IEpvdXJuYWwgS2VybmVsIEtvcm5lciBhcnRpY2xlLiBIZXJlIGlzIGl0cworICAgICAgIGFic3RyYWN0OiAiQSBkZXNjcmlwdGlvbiBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJBSUQtMSwKKyAgICAgICBSQUlELTQgYW5kIFJBSUQtNSBwZXJzb25hbGl0aWVzIG9mIHRoZSBNRCBkZXZpY2UgZHJpdmVyIGluIHRoZQorICAgICAgIExpbnV4IGtlcm5lbCwgcHJvdmlkaW5nIHVzZXJzIHdpdGggaGlnaCBwZXJmb3JtYW5jZSBhbmQgcmVsaWFibGUsCisgICAgICAgc2Vjb25kYXJ5LXN0b3JhZ2UgY2FwYWJpbGl0eSB1c2luZyBzb2Z0d2FyZSIuCisKKyAgICAgKiBUaXRsZTogIkR5bmFtaWMgS2VybmVsczogTW9kdWxhcml6ZWQgRGV2aWNlIERyaXZlcnMiCisgICAgICAgQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaS4KKyAgICAgICBVUkw6IGh0dHA6Ly93d3cubGludXhqb3VybmFsLmNvbS9hcnRpY2xlLnBocD9zaWQ9MTIxOQorICAgICAgIEtleXdvcmRzOiBkZXZpY2UgZHJpdmVyLCBtb2R1bGUsIGxvYWRpbmcvdW5sb2FkaW5nIG1vZHVsZXMsCisgICAgICAgYWxsb2NhdGluZyByZXNvdXJjZXMuCisgICAgICAgRGVzY3JpcHRpb246IExpbnV4IEpvdXJuYWwgS2VybmVsIEtvcm5lciBhcnRpY2xlLiBIZXJlIGlzIGl0cworICAgICAgIGFic3RyYWN0OiAiVGhpcyBpcyB0aGUgZmlyc3Qgb2YgYSBzZXJpZXMgb2YgZm91ciBhcnRpY2xlcworICAgICAgIGNvLWF1dGhvcmVkIGJ5IEFsZXNzYW5kcm8gUnViaW5pIGFuZCBHZW9yZyBaZXpjaHdpdHogd2hpY2ggcHJlc2VudAorICAgICAgIGEgcHJhY3RpY2FsIGFwcHJvYWNoIHRvIHdyaXRpbmcgTGludXggZGV2aWNlIGRyaXZlcnMgYXMga2VybmVsCisgICAgICAgbG9hZGFibGUgbW9kdWxlcy4gVGhpcyBpbnN0YWxsbWVudCBwcmVzZW50cyBhbiBpbnRyb2R1Y3Rpb24gdG8gdGhlCisgICAgICAgdG9waWMsIHByZXBhcmluZyB0aGUgcmVhZGVyIHRvIHVuZGVyc3RhbmQgbmV4dCBtb250aCdzCisgICAgICAgaW5zdGFsbG1lbnQiLgorCisgICAgICogVGl0bGU6ICJEeW5hbWljIEtlcm5lbHM6IERpc2NvdmVyeSIKKyAgICAgICBBdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pLgorICAgICAgIFVSTDogaHR0cDovL3d3dy5saW51eGpvdXJuYWwuY29tL2FydGljbGUucGhwP3NpZD0xMjIwCisgICAgICAgS2V5d29yZHM6IGNoYXJhY3RlciBkcml2ZXIsIGluaXRfbW9kdWxlLCBjbGVhbl91cCBtb2R1bGUsCisgICAgICAgYXV0b2RldGVjdGlvbiwgbWF5b3IgbnVtYmVyLCBtaW5vciBudW1iZXIsIGZpbGUgb3BlcmF0aW9ucywKKyAgICAgICBvcGVuKCksIGNsb3NlKCkuCisgICAgICAgRGVzY3JpcHRpb246IExpbnV4IEpvdXJuYWwgS2VybmVsIEtvcm5lciBhcnRpY2xlLiBIZXJlIGlzIGl0cworICAgICAgIGFic3RyYWN0OiAiVGhpcyBhcnRpY2xlLCB0aGUgc2Vjb25kIG9mIGZvdXIsIGludHJvZHVjZXMgcGFydCBvZgorICAgICAgIHRoZSBhY3R1YWwgY29kZSB0byBjcmVhdGUgY3VzdG9tIG1vZHVsZSBpbXBsZW1lbnRpbmcgYSBjaGFyYWN0ZXIKKyAgICAgICBkZXZpY2UgZHJpdmVyLiBJdCBkZXNjcmliZXMgdGhlIGNvZGUgZm9yIG1vZHVsZSBpbml0aWFsaXphdGlvbiBhbmQKKyAgICAgICBjbGVhbnVwLCBhcyB3ZWxsIGFzIHRoZSBvcGVuKCkgYW5kIGNsb3NlKCkgc3lzdGVtIGNhbGxzIi4KKworICAgICAqIFRpdGxlOiAiVGhlIERldmlsJ3MgaW4gdGhlIERldGFpbHMiCisgICAgICAgQXV0aG9yOiBHZW9yZyB2LiBaZXpzY2h3aXR6IGFuZCBBbGVzc2FuZHJvIFJ1YmluaS4KKyAgICAgICBVUkw6IGh0dHA6Ly93d3cubGludXhqb3VybmFsLmNvbS9hcnRpY2xlLnBocD9zaWQ9MTIyMQorICAgICAgIEtleXdvcmRzOiByZWFkKCksIHdyaXRlKCksIHNlbGVjdCgpLCBpb2N0bCgpLCBibG9ja2luZy9ub24KKyAgICAgICBibG9ja2luZyBtb2RlLCBpbnRlcnJ1cHQgaGFuZGxlci4KKyAgICAgICBEZXNjcmlwdGlvbjogTGludXggSm91cm5hbCBLZXJuZWwgS29ybmVyIGFydGljbGUuIEhlcmUgaXMgaXRzCisgICAgICAgYWJzdHJhY3Q6ICJUaGlzIGFydGljbGUsIHRoZSB0aGlyZCBvZiBmb3VyIG9uIHdyaXRpbmcgY2hhcmFjdGVyCisgICAgICAgZGV2aWNlIGRyaXZlcnMsIGludHJvZHVjZXMgY29uY2VwdHMgb2YgcmVhZGluZywgd3JpdGluZywgYW5kIHVzaW5nCisgICAgICAgaW9jdGwtY2FsbHMiLgorCisgICAgICogVGl0bGU6ICJEaXNzZWN0aW5nIEludGVycnVwdHMgYW5kIEJyb3dzaW5nIERNQSIKKyAgICAgICBBdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIGFuZCBHZW9yZyB2LiBaZXpzY2h3aXR6LgorICAgICAgIFVSTDogaHR0cDovL3d3dy5saW51eGpvdXJuYWwuY29tL2FydGljbGUucGhwP3NpZD0xMjIyCisgICAgICAgS2V5d29yZHM6IGludGVycnVwdHMsIGlycXMsIERNQSwgYm90dG9tIGhhbHZlcywgdGFzayBxdWV1ZXMuCisgICAgICAgRGVzY3JpcHRpb246IExpbnV4IEpvdXJuYWwgS2VybmVsIEtvcm5lciBhcnRpY2xlLiBIZXJlIGlzIGl0cworICAgICAgIGFic3RyYWN0OiAiVGhpcyBpcyB0aGUgZm91cnRoIGluIGEgc2VyaWVzIG9mIGFydGljbGVzIGFib3V0CisgICAgICAgd3JpdGluZyBjaGFyYWN0ZXIgZGV2aWNlIGRyaXZlcnMgYXMgbG9hZGFibGUga2VybmVsIG1vZHVsZXMuIFRoaXMKKyAgICAgICBtb250aCwgd2UgZnVydGhlciBpbnZlc3RpZ2F0ZSB0aGUgZmllbGQgb2YgaW50ZXJydXB0IGhhbmRsaW5nLgorICAgICAgIFRob3VnaCBpdCBpcyBjb25jZXB0dWFsbHkgc2ltcGxlLCBwcmFjdGljYWwgbGltaXRhdGlvbnMgYW5kCisgICAgICAgY29uc3RyYWludHMgbWFrZSB0aGlzIGFuIGBgaW50ZXJlc3RpbmcnJyBwYXJ0IG9mIGRldmljZSBkcml2ZXIKKyAgICAgICB3cml0aW5nLCBhbmQgc2V2ZXJhbCBkaWZmZXJlbnQgZmFjaWxpdGllcyBoYXZlIGJlZW4gcHJvdmlkZWQgZm9yCisgICAgICAgZGlmZmVyZW50IHNpdHVhdGlvbnMuIFdlIGFsc28gaW52ZXN0aWdhdGUgdGhlIGNvbXBsZXggdG9waWMgb2YKKyAgICAgICBETUEiLgorCisgICAgICogVGl0bGU6ICJEZXZpY2UgRHJpdmVycyBDb25jbHVkZWQiCisgICAgICAgQXV0aG9yOiBHZW9yZyB2LiBaZXpzY2h3aXR6LgorICAgICAgIFVSTDogaHR0cDovL3d3dy5saW51eGpvdXJuYWwuY29tL2FydGljbGUucGhwP3NpZD0xMjg3CisgICAgICAgS2V5d29yZHM6IGFkZHJlc3Mgc3BhY2VzLCBwYWdlcywgcGFnaW5hdGlvbiwgcGFnZSBtYW5hZ2VtZW50LAorICAgICAgIGRlbWFuZCBsb2FkaW5nLCBzd2FwcGluZywgbWVtb3J5IHByb3RlY3Rpb24sIG1lbW9yeSBtYXBwaW5nLCBtbWFwLAorICAgICAgIHZpcnR1YWwgbWVtb3J5IGFyZWFzIChWTUFzKSwgdnJlbWFwLCBQQ0kuCisgICAgICAgRGVzY3JpcHRpb246IEZpbmFsbHksIHRoZSBhYm92ZSB0dXJuZWQgb3V0IGludG8gYSBmaXZlIGFydGljbGVzCisgICAgICAgc2VyaWVzLiBUaGlzIGxhdGVzdCBvbmUncyBpbnRyb2R1Y3Rpb24gcmVhZHM6ICJUaGlzIGlzIHRoZSBsYXN0IG9mCisgICAgICAgZml2ZSBhcnRpY2xlcyBhYm91dCBjaGFyYWN0ZXIgZGV2aWNlIGRyaXZlcnMuIEluIHRoaXMgZmluYWwKKyAgICAgICBzZWN0aW9uLCBHZW9yZyBkZWFscyB3aXRoIG1lbW9yeSBtYXBwaW5nIGRldmljZXMsIGJlZ2lubmluZyB3aXRoCisgICAgICAgYW4gb3ZlcmFsbCBkZXNjcmlwdGlvbiBvZiB0aGUgTGludXggbWVtb3J5IG1hbmFnZW1lbnQgY29uY2VwdHMiLgorCisgICAgICogVGl0bGU6ICJOZXR3b3JrIEJ1ZmZlcnMgQW5kIE1lbW9yeSBNYW5hZ2VtZW50IgorICAgICAgIEF1dGhvcjogQWxhbiBDb3guCisgICAgICAgVVJMOiBodHRwOi8vd3d3LmxpbnV4am91cm5hbC5jb20vYXJ0aWNsZS5waHA/c2lkPTEzMTIKKyAgICAgICBLZXl3b3Jkczogc2tfYnVmZnMsIG5ldHdvcmsgZGV2aWNlcywgcHJvdG9jb2wvbGluayBsYXllcgorICAgICAgIHZhcmlhYmxlcywgbmV0d29yayBkZXZpY2VzIGZsYWdzLCB0cmFuc21pdCwgcmVjZWl2ZSwKKyAgICAgICBjb25maWd1cmF0aW9uLCBtdWx0aWNhc3QuCisgICAgICAgRGVzY3JpcHRpb246IExpbnV4IEpvdXJuYWwgS2VybmVsIEtvcm5lci4gSGVyZSBpcyB0aGUgYWJzdHJhY3Q6CisgICAgICAgIldyaXRpbmcgYSBuZXR3b3JrIGRldmljZSBkcml2ZXIgZm9yIExpbnV4IGlzIGZ1bmRhbWVudGFsbHkKKyAgICAgICBzaW1wbGUtLS1tb3N0IG9mIHRoZSBjb21wbGV4aXR5IChvdGhlciB0aGFuIHRhbGtpbmcgdG8gdGhlCisgICAgICAgaGFyZHdhcmUpIGludm9sdmVzIG1hbmFnaW5nIG5ldHdvcmsgcGFja2V0cyBpbiBtZW1vcnkiLgorICAgICAgIAorICAgICAqIFRpdGxlOiAiV3JpdGluZyBMaW51eCBEZXZpY2UgRHJpdmVycyIKKyAgICAgICBBdXRob3I6IE1pY2hhZWwgSy4gSm9obnNvbi4KKyAgICAgICBVUkw6IGh0dHA6Ly91c2Vycy5ldml0ZWNoLmZpL350ay9ydG9zL3dyaXRpbmdfbGludXhfZGV2aWNlX2QuaHRtbAorICAgICAgIEtleXdvcmRzOiBmaWxlcywgVkZTLCBmaWxlIG9wZXJhdGlvbnMsIGtlcm5lbCBpbnRlcmZhY2UsIGNoYXJhY3RlcgorICAgICAgIHZzIGJsb2NrIGRldmljZXMsIEkvTyBhY2Nlc3MsIGhhcmR3YXJlIGludGVycnVwdHMsIERNQSwgYWNjZXNzIHRvCisgICAgICAgdXNlciBtZW1vcnksIG1lbW9yeSBhbGxvY2F0aW9uLCB0aW1lcnMuCisgICAgICAgRGVzY3JpcHRpb246IEludHJvZHVjdG9yeSA1MC1taW51dGVzIChzaWMpIHR1dG9yaWFsIG9uIHdyaXRpbmcKKyAgICAgICBkZXZpY2UgZHJpdmVycy4gMTIgcGFnZXMgd3JpdHRlbiBieSB0aGUgc2FtZSBhdXRob3Igb2YgdGhlICJLZXJuZWwKKyAgICAgICBIYWNrZXJzJyBHdWlkZSIgd2hpY2ggZ2l2ZSBhIHZlcnkgZ29vZCBvdmVydmlldyBvZiB0aGUgdG9waWMuCisgICAgICAgCisgICAgICogVGl0bGU6ICJUaGUgVmVudXMga2VybmVsIGludGVyZmFjZSIKKyAgICAgICBBdXRob3I6IFBldGVyIEouIEJyYWFtLgorICAgICAgIFVSTDoKKyAgICAgICBodHRwOi8vd3d3LmNvZGEuY3MuY211LmVkdS9kb2MvaHRtbC9rZXJuZWwtdmVudXMtcHJvdG9jb2wuaHRtbAorICAgICAgIEtleXdvcmRzOiBjb2RhLCBmaWxlc3lzdGVtLCB2ZW51cywgY2FjaGUgbWFuYWdlci4KKyAgICAgICBEZXNjcmlwdGlvbjogIlRoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBjb21tdW5pY2F0aW9uIGJldHdlZW4KKyAgICAgICBWZW51cyBhbmQga2VybmVsIGxldmVsIGZpbGUgc3lzdGVtIGNvZGUgbmVlZGVkIGZvciB0aGUgb3BlcmF0aW9uCisgICAgICAgb2YgdGhlIENvZGEgZmlsZXN5c3RlbS4gVGhpcyB2ZXJzaW9uIGRvY3VtZW50IGlzIG1lYW50IHRvIGRlc2NyaWJlCisgICAgICAgdGhlIGN1cnJlbnQgaW50ZXJmYWNlICh2ZXJzaW9uIDEuMCkgYXMgd2VsbCBhcyBpbXByb3ZlbWVudHMgd2UKKyAgICAgICBlbnZpc2FnZSIuCisKKyAgICAgKiBUaXRsZTogIlByb2dyYW1taW5nIFBDSS1EZXZpY2VzIHVuZGVyIExpbnV4IgorICAgICAgIEF1dGhvcjogQ2xhdXMgU2Nocm9ldGVyLgorICAgICAgIFVSTDoKKyAgICAgICBmdHA6Ly9mdHAubGxwLmZ1LWJlcmxpbi5kZS9wdWIvbGludXgvTElOVVgtTEFCL3doaXRlcGFwZXJzL3BjaXAucHMuZ3oKKyAgICAgICBLZXl3b3JkczogUENJLCBkZXZpY2UsIGJ1c21hc3RlcmluZy4KKyAgICAgICBEZXNjcmlwdGlvbjogNiBwYWdlcyB0dXRvcmlhbCBvbiBQQ0kgcHJvZ3JhbW1pbmcgdW5kZXIgTGludXguCisgICAgICAgR2l2ZXMgdGhlIGJhc2ljIGNvbmNlcHRzIG9uIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhlIFBDSSBzdWJzeXN0ZW0sCisgICAgICAgYXMgbG9uZyBhcyBiYXNpYyBmdW5jdGlvbnMgYW5kIG1hY3JvcyB0byByZWFkL3dyaXRlIHRoZSBkZXZpY2VzCisgICAgICAgYW5kIHBlcmZvcm0gYnVzbWFzdGVyaW5nLgorCisgICAgICogVGl0bGU6ICJXcml0aW5nIENoYXJhY3RlciBEZXZpY2UgRHJpdmVyIGZvciBMaW51eCIKKyAgICAgICBBdXRob3I6IFIuIEJhcnVjaCBhbmQgQy4gU2Nocm9ldGVyLgorICAgICAgIFVSTDoKKyAgICAgICBmdHA6Ly9mdHAubGxwLmZ1LWJlcmxpbi5kZS9wdWIvbGludXgvTElOVVgtTEFCL3doaXRlcGFwZXJzL2RyaXZlcnMucHMuZ3oKKyAgICAgICBLZXl3b3JkczogY2hhcmFjdGVyIGRldmljZSBkcml2ZXJzLCBJL08sIHNpZ25hbHMsIERNQSwgYWNjZXNzaW5nCisgICAgICAgcG9ydHMgaW4gdXNlciBzcGFjZSwga2VybmVsIGVudmlyb25tZW50LgorICAgICAgIERlc2NyaXB0aW9uOiA2OCBwYWdlcyBwYXBlciBvbiB3cml0aW5nIGNoYXJhY3RlciBkcml2ZXJzLiBBIGxpdHRsZQorICAgICAgIGJpdCBvbGQgKDEuOTkzLCAxLjk5NCkgYWx0aG91Z2ggc3RpbGwgdXNlZnVsLgorCisgICAgICogVGl0bGU6ICJEZXNpZ24gYW5kIEltcGxlbWVudGF0aW9uIG9mIHRoZSBTZWNvbmQgRXh0ZW5kZWQKKyAgICAgICBGaWxlc3lzdGVtIgorICAgICAgIEF1dGhvcjogUsOpbXkgQ2FyZCwgVGhlb2RvcmUgVHMnbywgU3RlcGhlbiBUd2VlZGllLgorICAgICAgIFVSTDogaHR0cDovL3dlYi5taXQuZWR1L3R5dHNvL3d3dy9saW51eC9leHQyaW50cm8uaHRtbAorICAgICAgIEtleXdvcmRzOiBleHQyLCBsaW51eCBmcyBoaXN0b3J5LCBpbm9kZSwgZGlyZWN0b3J5LCBsaW5rLCBkZXZpY2VzLAorICAgICAgIFZGUywgcGh5c2ljYWwgc3RydWN0dXJlLCBwZXJmb3JtYW5jZSwgYmVuY2htYXJrcywgZXh0MmZzIGxpYnJhcnksCisgICAgICAgZXh0MmZzIHRvb2xzLCBlMmZzY2suCisgICAgICAgRGVzY3JpcHRpb246IFBhcGVyIHdyaXR0ZW4gYnkgdGhyZWUgb2YgdGhlIHRvcCBleHQyIGhhY2tlcnMuCisgICAgICAgQ292ZXJzIExpbnV4IGZpbGVzeXN0ZW1zIGhpc3RvcnksIGV4dDIgbW90aXZhdGlvbiwgZXh0MiBmZWF0dXJlcywKKyAgICAgICBkZXNpZ24sIHBoeXNpY2FsIHN0cnVjdHVyZSBvbiBkaXNrLCBwZXJmb3JtYW5jZSwgYmVuY2htYXJrcywKKyAgICAgICBlMmZzY2sncyBwYXNzZXMgZGVzY3JpcHRpb24uLi4gQSBtdXN0IHJlYWQhCisgICAgICAgTm90ZXM6IFRoaXMgcGFwZXIgd2FzIGZpcnN0IHB1Ymxpc2hlZCBpbiB0aGUgUHJvY2VlZGluZ3Mgb2YgdGhlCisgICAgICAgRmlyc3QgRHV0Y2ggSW50ZXJuYXRpb25hbCBTeW1wb3NpdW0gb24gTGludXgsIElTQk4gOTAtMzY3LTAzODUtOS4KKworICAgICAqIFRpdGxlOiAiQW5hbHlzaXMgb2YgdGhlIEV4dDJmcyBzdHJ1Y3R1cmUiCisgICAgICAgQXV0aG9yOiBMb3Vpcy1Eb21pbmlxdWUgRHViZWF1LgorICAgICAgIFVSTDogaHR0cDovL3d3dy5ub25kb3Qub3JnL3NhYnJlL29zL2ZpbGVzL0ZpbGVTeXN0ZW1zL2V4dDJmcy8KKyAgICAgICBLZXl3b3JkczogZXh0MiwgZmlsZXN5c3RlbSwgZXh0MmZzLgorICAgICAgIERlc2NyaXB0aW9uOiBEZXNjcmlwdGlvbiBvZiBleHQyJ3MgYmxvY2tzLCBkaXJlY3RvcmllcywgaW5vZGVzLAorICAgICAgIGJpdG1hcHMsIGludmFyaWFudHMuLi4KKworICAgICAqIFRpdGxlOiAiSm91cm5hbGluZyB0aGUgTGludXggZXh0MmZzIEZpbGVzeXN0ZW0iCisgICAgICAgQXV0aG9yOiBTdGVwaGVuIEMuIFR3ZWVkaWUuCisgICAgICAgVVJMOgorICAgICAgIGZ0cDovL2Z0cC51ay5saW51eC5vcmcvcHViL2xpbnV4L3NjdC9mcy9qZnMvam91cm5hbC1kZXNpZ24ucHMuZ3oKKyAgICAgICBLZXl3b3JkczogZXh0Mywgam91cm5hbGluZy4KKyAgICAgICBEZXNjcmlwdGlvbjogRXhjZWxsZW50IDgtcGFnZXMgcGFwZXIgZXhwbGFpbmluZyB0aGUgam91cm5hbGluZworICAgICAgIGNhcGFiaWxpdGllcyBhZGRlZCB0byBleHQyIGJ5IHRoZSBhdXRob3IsIHNob3dpbmcgZGlmZmVyZW50CisgICAgICAgcHJvYmxlbXMgZmFjZWQgYW5kIHRoZSBhbHRlcm5hdGl2ZXMgY2hvc2VuLgorCisgICAgICogVGl0bGU6ICJLZXJuZWwgQVBJIGNoYW5nZXMgZnJvbSAyLjAgdG8gMi4yIgorICAgICAgIEF1dGhvcjogUmljaGFyZCBHb29jaC4KKyAgICAgICBVUkw6CisgICAgICAgaHR0cDovL3d3dy5saW51eGhxLmNvbS9ndWlkZXMvTEtNUEcvbm9kZTI4Lmh0bWwgCisgICAgICAgS2V5d29yZHM6IDIuMiwgY2hhbmdlcy4KKyAgICAgICBEZXNjcmlwdGlvbjogS2VybmVsIGZ1bmN0aW9ucy9zdHJ1Y3R1cmVzL3ZhcmlhYmxlcyB3aGljaCBjaGFuZ2VkCisgICAgICAgZnJvbSAyLjAueCB0byAyLjIueC4KKworICAgICAqIFRpdGxlOiAiS2VybmVsIEFQSSBjaGFuZ2VzIGZyb20gMi4yIHRvIDIuNCIKKyAgICAgICBBdXRob3I6IFJpY2hhcmQgR29vY2guCisgICAgICAgS2V5d29yZHM6IDIuNCwgY2hhbmdlcy4KKyAgICAgICBEZXNjcmlwdGlvbjogS2VybmVsIGZ1bmN0aW9ucy9zdHJ1Y3R1cmVzL3ZhcmlhYmxlcyB3aGljaCBjaGFuZ2VkCisgICAgICAgZnJvbSAyLjIueCB0byAyLjQueC4KKyAgICAgICAKKyAgICAgKiBUaXRsZTogIkxpbnV4IEtlcm5lbCBNb2R1bGUgUHJvZ3JhbW1pbmcgR3VpZGUiCisgICAgICAgQXV0aG9yOiBPcmkgUG9tZXJhbnR6LgorICAgICAgIFVSTDogaHR0cDovL3RsZHAub3JnL0xEUC9sa21wZy8yLjYvaHRtbC9pbmRleC5odG1sCisgICAgICAgS2V5d29yZHM6IG1vZHVsZXMsIEdQTCBib29rLCAvcHJvYywgaW9jdGxzLCBzeXN0ZW0gY2FsbHMsCisgICAgICAgaW50ZXJydXB0IGhhbmRsZXJzIC4KKyAgICAgICBEZXNjcmlwdGlvbjogVmVyeSBuaWNlIDkyIHBhZ2VzIEdQTCBib29rIG9uIHRoZSB0b3BpYyBvZiBtb2R1bGVzCisgICAgICAgcHJvZ3JhbW1pbmcuIExvdHMgb2YgZXhhbXBsZXMuCisgICAgICAgCisgICAgICogVGl0bGU6ICJJL08gRXZlbnQgSGFuZGxpbmcgVW5kZXIgTGludXgiCisgICAgICAgQXV0aG9yOiBSaWNoYXJkIEdvb2NoLgorICAgICAgIEtleXdvcmRzOiBJTywgSS9PLCBzZWxlY3QoMiksIHBvbGwoMiksIEZEcywgYWlvX3JlYWQoMiksIHJlYWRpbmVzcworICAgICAgIGV2ZW50IHF1ZXVlcy4KKyAgICAgICBEZXNjcmlwdGlvbjogRnJvbSB0aGUgSW50cm9kdWN0aW9uOiAiSS9PIEV2ZW50IGhhbmRsaW5nIGlzIGFib3V0CisgICAgICAgaG93IHlvdXIgT3BlcmF0aW5nIFN5c3RlbSBhbGxvd3MgeW91IHRvIG1hbmFnZSBhIGxhcmdlIG51bWJlciBvZgorICAgICAgIG9wZW4gZmlsZXMgKGZpbGUgZGVzY3JpcHRvcnMgaW4gVU5JWC9QT1NJWCwgb3IgRkRzKSBpbiB5b3VyCisgICAgICAgYXBwbGljYXRpb24uIFlvdSB3YW50IHRoZSBPUyB0byBub3RpZnkgeW91IHdoZW4gRkRzIGJlY29tZSBhY3RpdmUKKyAgICAgICAoaGF2ZSBkYXRhIHJlYWR5IHRvIGJlIHJlYWQgb3IgYXJlIHJlYWR5IGZvciB3cml0aW5nKS4gSWRlYWxseSB5b3UKKyAgICAgICB3YW50IGEgbWVjaGFuaXNtIHRoYXQgaXMgc2NhbGFibGUuIFRoaXMgbWVhbnMgYSBsYXJnZSBudW1iZXIgb2YKKyAgICAgICBpbmFjdGl2ZSBGRHMgY29zdCB2ZXJ5IGxpdHRsZSBpbiBtZW1vcnkgYW5kIENQVSB0aW1lIHRvIG1hbmFnZSIuCisgICAgICAgCisgICAgICogVGl0bGU6ICJUaGUgS2VybmVsIEhhY2tpbmcgSE9XVE8iCisgICAgICAgQXV0aG9yOiBWYXJpb3VzIFRhbGVudGVkIFBlb3BsZSwgYW5kIFJ1c3R5LgorICAgICAgIExvY2F0aW9uOiBpbiBrZXJuZWwgdHJlZSwgRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2tlcm5lbC1oYWNraW5nLnRtcGwKKyAgICAgICAobXVzdCBiZSBidWlsdCBhcyAibWFrZSB7aHRtbGRvY3MgfCBwc2RvY3MgfCBwZGZkb2NzfSkKKyAgICAgICBLZXl3b3JkczogSE9XVE8sIGtlcm5lbCBjb250ZXh0cywgZGVhZGxvY2ssIGxvY2tpbmcsIG1vZHVsZXMsCisgICAgICAgc3ltYm9scywgcmV0dXJuIGNvbnZlbnRpb25zLgorICAgICAgIERlc2NyaXB0aW9uOiBGcm9tIHRoZSBJbnRyb2R1Y3Rpb246ICJQbGVhc2UgdW5kZXJzdGFuZCB0aGF0IEkKKyAgICAgICBuZXZlciB3YW50ZWQgdG8gd3JpdGUgdGhpcyBkb2N1bWVudCwgYmVpbmcgZ3Jvc3NseSB1bmRlcnF1YWxpZmllZCwKKyAgICAgICBidXQgSSBhbHdheXMgd2FudGVkIHRvIHJlYWQgaXQsIGFuZCB0aGlzIHdhcyB0aGUgb25seSB3YXkuIEkKKyAgICAgICBzaW1wbHkgZXhwbGFpbiBzb21lIGJlc3QgcHJhY3RpY2VzLCBhbmQgZ2l2ZSByZWFkaW5nIGVudHJ5LXBvaW50cworICAgICAgIGludG8gdGhlIGtlcm5lbCBzb3VyY2VzLiBJIGF2b2lkIGltcGxlbWVudGF0aW9uIGRldGFpbHM6IHRoYXQncworICAgICAgIHdoYXQgdGhlIGNvZGUgaXMgZm9yLCBhbmQgSSBpZ25vcmUgd2hvbGUgdHJhY3RzIG9mIHVzZWZ1bAorICAgICAgIHJvdXRpbmVzLiBUaGlzIGRvY3VtZW50IGFzc3VtZXMgZmFtaWxpYXJpdHkgd2l0aCBDLCBhbmQgYW4KKyAgICAgICB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgdGhlIGtlcm5lbCBpcywgYW5kIGhvdyBpdCBpcyB1c2VkLiBJdCB3YXMKKyAgICAgICBvcmlnaW5hbGx5IHdyaXR0ZW4gZm9yIHRoZSAyLjMga2VybmVscywgYnV0IG5lYXJseSBhbGwgb2YgaXQKKyAgICAgICBhcHBsaWVzIHRvIDIuMiB0b287IDIuMCBpcyBzbGlnaHRseSBkaWZmZXJlbnQiLgorICAgICAgIAorICAgICAqIFRpdGxlOiAiV3JpdGluZyBhbiBBTFNBIERyaXZlciIKKyAgICAgICBBdXRob3I6IFRha2FzaGkgSXdhaSA8dGl3YWlAc3VzZS5kZT4KKyAgICAgICBVUkw6IGh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZy9+aXdhaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyL2luZGV4Lmh0bWwKKyAgICAgICBLZXl3b3JkczogQUxTQSwgc291bmQsIHNvdW5kY2FyZCwgZHJpdmVyLCBsb3dsZXZlbCwgaGFyZHdhcmUuCisgICAgICAgRGVzY3JpcHRpb246IEFkdmFuY2VkIExpbnV4IFNvdW5kIEFyY2hpdGVjdHVyZSBmb3IgZGV2ZWxvcGVycywKKyAgICAgICBib3RoIGF0IGtlcm5lbCBhbmQgdXNlci1sZXZlbCBzaWRlcy4gQUxTQSBpcyB0aGUgTGludXgga2VybmVsCisgICAgICAgc291bmQgYXJjaGl0ZWN0dXJlIGluIHRoZSAyLjYga2VybmVsIHZlcnNpb24uCisgICAgICAgCisgICAgICogVGl0bGU6ICJQcm9ncmFtbWluZyBHdWlkZSBmb3IgTGludXggVVNCIERldmljZSBEcml2ZXJzIgorICAgICAgIEF1dGhvcjogRGV0bGVmIEZsaWVnbC4KKyAgICAgICBVUkw6IGh0dHA6Ly91c2IuaW4udHVtLmRlL3VzYmRvYy8KKyAgICAgICBLZXl3b3JkczogVVNCLCB1bml2ZXJzYWwgc2VyaWFsIGJ1cy4KKyAgICAgICBEZXNjcmlwdGlvbjogQSBtdXN0LXJlYWQuIEZyb20gdGhlIFByZWZhY2U6ICJUaGlzIGRvY3VtZW50IHNob3VsZAorICAgICAgIGdpdmUgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIFVTQgorICAgICAgIHN1YnN5c3RlbSBhbmQgaXRzIEFQSSBmb3IgVVNCIGRldmljZSBkcml2ZXJzLiBUaGUgZmlyc3Qgc2VjdGlvbgorICAgICAgIHdpbGwgZGVhbCB3aXRoIHRoZSBiYXNpY3Mgb2YgVVNCIGRldmljZXMuIFlvdSB3aWxsIGxlYXJuIGFib3V0CisgICAgICAgZGlmZmVyZW50IHR5cGVzIG9mIGRldmljZXMgYW5kIHRoZWlyIHByb3BlcnRpZXMuIEdvaW5nIGludG8gZGV0YWlsCisgICAgICAgeW91IHdpbGwgc2VlIGhvdyBVU0IgZGV2aWNlcyBjb21tdW5pY2F0ZSBvbiB0aGUgYnVzLiBUaGUgc2Vjb25kCisgICAgICAgc2VjdGlvbiBnaXZlcyBhbiBvdmVydmlldyBvZiB0aGUgTGludXggVVNCIHN1YnN5c3RlbSBbMl0gYW5kIHRoZQorICAgICAgIGRldmljZSBkcml2ZXIgZnJhbWV3b3JrLiBUaGVuIHRoZSBBUEkgYW5kIGl0cyBkYXRhIHN0cnVjdHVyZXMgd2lsbAorICAgICAgIGJlIGV4cGxhaW5lZCBzdGVwIGJ5IHN0ZXAuIFRoZSBsYXN0IHNlY3Rpb24gb2YgdGhpcyBkb2N1bWVudAorICAgICAgIGNvbnRhaW5zIGEgcmVmZXJlbmNlIG9mIGFsbCBBUEkgY2FsbHMgYW5kIHRoZWlyIHJldHVybiBjb2RlcyIuCisgICAgICAgTm90ZXM6IEJld2FyZTogdGhlIG1haW4gcGFnZSBzdGF0ZXM6ICJUaGlzIGRvY3VtZW50IG1heSBub3QgYmUKKyAgICAgICBwdWJsaXNoZWQsIHByaW50ZWQgb3IgdXNlZCBpbiBleGNlcnB0cyB3aXRob3V0IGV4cGxpY2l0IHBlcm1pc3Npb24KKyAgICAgICBvZiB0aGUgYXV0aG9yIi4gRm9ydHVuYXRlbHksIGl0IG1heSBzdGlsbCBiZSByZWFkLi4uCisKKyAgICAgKiBUaXRsZTogIkxpbnV4IEtlcm5lbCBNYWlsaW5nIExpc3QgR2xvc3NhcnkiCisgICAgICAgQXV0aG9yOiB2YXJpb3VzCisgICAgICAgVVJMOiBodHRwOi8va2VybmVsbmV3Ymllcy5vcmcvZ2xvc3NhcnkvCisgICAgICAgS2V5d29yZHM6IGdsb3NzYXJ5LCB0ZXJtcywgbGludXgta2VybmVsLgorICAgICAgIERlc2NyaXB0aW9uOiBGcm9tIHRoZSBpbnRyb2R1Y3Rpb246ICJUaGlzIGdsb3NzYXJ5IGlzIGludGVuZGVkIGFzCisgICAgICAgYSBicmllZiBkZXNjcmlwdGlvbiBvZiBzb21lIG9mIHRoZSBhY3JvbnltcyBhbmQgdGVybXMgeW91IG1heSBoZWFyCisgICAgICAgZHVyaW5nIGRpc2N1c3Npb24gb2YgdGhlIExpbnV4IGtlcm5lbCIuCisgICAgICAgCisgICAgICogVGl0bGU6ICJMaW51eCBLZXJuZWwgTG9ja2luZyBIT1dUTyIKKyAgICAgICBBdXRob3I6IFZhcmlvdXMgVGFsZW50ZWQgUGVvcGxlLCBhbmQgUnVzdHkuCisgICAgICAgTG9jYXRpb246IGluIGtlcm5lbCB0cmVlLCBEb2N1bWVudGF0aW9uL0RvY0Jvb2sva2VybmVsLWxvY2tpbmcudG1wbAorICAgICAgIChtdXN0IGJlIGJ1aWx0IGFzICJtYWtlIHtodG1sZG9jcyB8IHBzZG9jcyB8IHBkZmRvY3N9KQorICAgICAgIEtleXdvcmRzOiBsb2NrcywgbG9ja2luZywgc3BpbmxvY2ssIHNlbWFwaG9yZSwgYXRvbWljLCByYWNlCisgICAgICAgY29uZGl0aW9uLCBib3R0b20gaGFsdmVzLCB0YXNrbGV0cywgc29mdGlycXMuCisgICAgICAgRGVzY3JpcHRpb246IFRoZSB0aXRsZSBzYXlzIGl0IGFsbDogZG9jdW1lbnQgZGVzY3JpYmluZyB0aGUKKyAgICAgICBsb2NraW5nIHN5c3RlbSBpbiB0aGUgTGludXggS2VybmVsIGVpdGhlciBpbiB1bmlwcm9jZXNzb3Igb3IgU01QCisgICAgICAgc3lzdGVtcy4KKyAgICAgICBOb3RlczogIkl0IHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4gZm9yIHRoZSBsYXRlciAoPjIuMy40NykgMi4zCisgICAgICAga2VybmVscywgYnV0IG1vc3Qgb2YgaXQgYXBwbGllcyB0byAyLjIgdG9vOyAyLjAgaXMgc2xpZ2h0bHkKKyAgICAgICBkaWZmZXJlbnQiLiBGcmVlbHkgcmVkaXN0cmlidXRhYmxlIHVuZGVyIHRoZSBjb25kaXRpb25zIG9mIHRoZSBHTlUKKyAgICAgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorCisgICAgICogVGl0bGU6ICJHbG9iYWwgc3BpbmxvY2sgbGlzdCBhbmQgdXNhZ2UiCisgICAgICAgQXV0aG9yOiBSaWNrIExpbmRzbGV5LgorICAgICAgIFVSTDogaHR0cDovL2xzZS5zb3VyY2Vmb3JnZS5uZXQvbG9ja2hpZXIvZ2xvYmFsLXNwaW4tbG9jaworICAgICAgIEtleXdvcmRzOiBzcGlubG9jay4KKyAgICAgICBEZXNjcmlwdGlvbjogVGhpcyBpcyBhbiBhdHRlbXB0IHRvIGRvY3VtZW50IGJvdGggdGhlIGV4aXN0ZW5jZSBhbmQKKyAgICAgICB1c2FnZSBvZiB0aGUgc3BpbmxvY2tzIGluIHRoZSBMaW51eCAyLjQuNSBrZXJuZWwuIENvbXByZWhlbnNpdmUKKyAgICAgICBsaXN0IG9mIHNwaW5sb2NrcyBzaG93aW5nIHdoZW4gdGhleSBhcmUgdXNlZCwgd2hpY2ggZnVuY3Rpb25zCisgICAgICAgYWNjZXNzIHRoZW0sIGhvdyBlYWNoIGxvY2sgaXMgYWNxdWlyZWQsIHVuZGVyIHdoYXQgY29uZGl0aW9ucyBpdAorICAgICAgIGlzIGhlbGQsIHdoZXRoZXIgaW50ZXJydXB0cyBjYW4gb2NjdXIgb3Igbm90IHdoaWxlIGl0IGlzIGhlbGQuLi4KKworICAgICAqIFRpdGxlOiAiUG9ydGluZyBMaW51eCAyLjAgRHJpdmVycyBUbyBMaW51eCAyLjI6IENoYW5nZXMgYW5kIE5ldworICAgICAgIEZlYXR1cmVzICIKKyAgICAgICBBdXRob3I6IEFsYW4gQ294LgorICAgICAgIFVSTDogaHR0cDovL3d3dy5saW51eC1tYWcuY29tLzE5OTktMDUvZ2Vhcl8wMS5odG1sCisgICAgICAgS2V5d29yZHM6IHBvcnRzLCBwb3J0aW5nLgorICAgICAgIERlc2NyaXB0aW9uOiBBcnRpY2xlIGZyb20gTGludXggTWFnYXppbmUgb24gcG9ydGluZyBmcm9tIDIuMCB0bworICAgICAgIDIuMiBrZXJuZWxzLgorCisgICAgICogVGl0bGU6ICJQb3J0aW5nIERldmljZSBEcml2ZXJzIFRvIExpbnV4IDIuMjogcGFydCBJSSIKKyAgICAgICBBdXRob3I6IEFsYW4gQ294LgorICAgICAgIFVSTDogaHR0cDovL3d3dy5saW51eC1tYWcuY29tL2lkLzIzOCAKKyAgICAgICBLZXl3b3JkczogcG9ydHMsIHBvcnRpbmcuCisgICAgICAgRGVzY3JpcHRpb246IFNlY29uZCBwYXJ0IG9uIHBvcnRpbmcgZnJvbSAyLjAgdG8gMi4yIGtlcm5lbHMuCisKKyAgICAgKiBUaXRsZTogIkhvdyBUbyBNYWtlIFN1cmUgWW91ciBEcml2ZXIgV2lsbCBXb3JrIE9uIFRoZSBQb3dlcgorICAgICAgIE1hY2ludG9zaCIKKyAgICAgICBBdXRob3I6IFBhdWwgTWFja2VycmFzLgorICAgICAgIFVSTDogaHR0cDovL3d3dy5saW51eC1tYWcuY29tL2lkLzI2MQorICAgICAgIEtleXdvcmRzOiBNYWMsIFBvd2VyIE1hY2ludG9zaCwgcG9ydGluZywgZHJpdmVycywgY29tcGF0aWJpbGl0eS4KKyAgICAgICBEZXNjcmlwdGlvbjogVGhlIHRpdGxlIHNheXMgaXQgYWxsLgorCisgICAgICogVGl0bGU6ICJBbiBJbnRyb2R1Y3Rpb24gdG8gU0NTSSBEcml2ZXJzIgorICAgICAgIEF1dGhvcjogQWxhbiBDb3guCisgICAgICAgVVJMOiBodHRwOi8vd3d3LmxpbnV4LW1hZy5jb20vaWQvMjg0CisgICAgICAgS2V5d29yZHM6IFNDU0ksIGRldmljZSwgZHJpdmVyLgorICAgICAgIERlc2NyaXB0aW9uOiBUaGUgdGl0bGUgc2F5cyBpdCBhbGwuCisKKyAgICAgKiBUaXRsZTogIkFkdmFuY2VkIFNDU0kgRHJpdmVycyBBbmQgT3RoZXIgVGFsZXMiCisgICAgICAgQXV0aG9yOiBBbGFuIENveC4KKyAgICAgICBVUkw6IGh0dHA6Ly93d3cubGludXgtbWFnLmNvbS9pZC8zMDcKKyAgICAgICBLZXl3b3JkczogU0NTSSwgZGV2aWNlLCBkcml2ZXIsIGFkdmFuY2VkLgorICAgICAgIERlc2NyaXB0aW9uOiBUaGUgdGl0bGUgc2F5cyBpdCBhbGwuCisKKyAgICAgKiBUaXRsZTogIldyaXRpbmcgTGludXggTW91c2UgRHJpdmVycyIKKyAgICAgICBBdXRob3I6IEFsYW4gQ294LgorICAgICAgIFVSTDogaHR0cDovL3d3dy5saW51eC1tYWcuY29tL2lkLzMzMAorICAgICAgIEtleXdvcmRzOiBtb3VzZSwgZHJpdmVyLCBncG0uCisgICAgICAgRGVzY3JpcHRpb246IFRoZSB0aXRsZSBzYXlzIGl0IGFsbC4KKworICAgICAqIFRpdGxlOiAiTW9yZSBvbiBNb3VzZSBEcml2ZXJzIgorICAgICAgIEF1dGhvcjogQWxhbiBDb3guCisgICAgICAgVVJMOiBodHRwOi8vd3d3LmxpbnV4LW1hZy5jb20vaWQvMzU2CisgICAgICAgS2V5d29yZHM6IG1vdXNlLCBkcml2ZXIsIGdwbSwgcmFjZXMsIGFzeW5jaHJvbm91cyBJL08uCisgICAgICAgRGVzY3JpcHRpb246IFRoZSB0aXRsZSBzdGlsbCBzYXlzIGl0IGFsbC4KKworICAgICAqIFRpdGxlOiAiV3JpdGluZyBWaWRlbzRsaW51eCBSYWRpbyBEcml2ZXIiCisgICAgICAgQXV0aG9yOiBBbGFuIENveC4KKyAgICAgICBVUkw6IGh0dHA6Ly93d3cubGludXgtbWFnLmNvbS9pZC8zODEKKyAgICAgICBLZXl3b3JkczogdmlkZW80bGludXgsIGRyaXZlciwgcmFkaW8sIHJhZGlvIGRldmljZXMuCisgICAgICAgRGVzY3JpcHRpb246IFRoZSB0aXRsZSBzYXlzIGl0IGFsbC4KKworICAgICAqIFRpdGxlOiAiVmlkZW80bGludXggRHJpdmVycywgUGFydCAxOiBWaWRlby1DYXB0dXJlIERldmljZSIKKyAgICAgICBBdXRob3I6IEFsYW4gQ294LgorICAgICAgIFVSTDogaHR0cDovL3d3dy5saW51eC1tYWcuY29tL2lkLzQwNgorICAgICAgIEtleXdvcmRzOiB2aWRlbzRsaW51eCwgZHJpdmVyLCB2aWRlbyBjYXB0dXJlLCBjYXB0dXJlIGRldmljZXMsCisgICAgICAgY2FtZXJhIGRyaXZlci4KKyAgICAgICBEZXNjcmlwdGlvbjogVGhlIHRpdGxlIHNheXMgaXQgYWxsLgorCisgICAgICogVGl0bGU6ICJWaWRlbzRsaW51eCBEcml2ZXJzLCBQYXJ0IDI6IFZpZGVvLWNhcHR1cmUgRGV2aWNlcyIKKyAgICAgICBBdXRob3I6IEFsYW4gQ294LgorICAgICAgIFVSTDogaHR0cDovL3d3dy5saW51eC1tYWcuY29tL2lkLzQyOQorICAgICAgIEtleXdvcmRzOiB2aWRlbzRsaW51eCwgZHJpdmVyLCB2aWRlbyBjYXB0dXJlLCBjYXB0dXJlIGRldmljZXMsCisgICAgICAgY2FtZXJhIGRyaXZlciwgY29udHJvbCwgcXVlcnkgY2FwYWJpbGl0aWVzLCBjYXBhYmlsaXR5LCBmYWNpbGl0eS4KKyAgICAgICBEZXNjcmlwdGlvbjogVGhlIHRpdGxlIHNheXMgaXQgYWxsLgorCisgICAgICogVGl0bGU6ICJQQ0kgTWFuYWdlbWVudCBpbiBMaW51eCAyLjIiCisgICAgICAgQXV0aG9yOiBBbGFuIENveC4KKyAgICAgICBVUkw6IGh0dHA6Ly93d3cubGludXgtbWFnLmNvbS9pZC80NTIKKyAgICAgICBLZXl3b3JkczogUENJLCBidXMsIGJ1cy1tYXN0ZXJpbmcuCisgICAgICAgRGVzY3JpcHRpb246IFRoZSB0aXRsZSBzYXlzIGl0IGFsbC4KKworICAgICAqIFRpdGxlOiAiTGludXggMi40IEtlcm5lbCBJbnRlcm5hbHMiCisgICAgICAgQXV0aG9yOiBUaWdyYW4gQWl2YXppYW4gYW5kIENocmlzdG9waCBIZWxsd2lnLgorICAgICAgIFVSTDogaHR0cDovL3d3dy5tb3Nlcy51a2xpbnV4Lm5ldC9wYXRjaGVzL2xraS5odG1sCisgICAgICAgS2V5d29yZHM6IExpbnV4LCBrZXJuZWwsIGJvb3RpbmcsIFNNQiBib290LCBWRlMsIHBhZ2UgY2FjaGUuCisgICAgICAgRGVzY3JpcHRpb246IEEgbGl0dGxlIGJvb2sgdXNlZCBmb3IgYSBzaG9ydCB0cmFpbmluZyBjb3Vyc2UuCisgICAgICAgQ292ZXJzIGJ1aWxkaW5nIHRoZSBrZXJuZWwgaW1hZ2UsIGJvb3RpbmcgKGluY2x1ZGluZyBTTVAgYm9vdHVwKSwKKyAgICAgICBwcm9jZXNzIG1hbmFnZW1lbnQsIFZGUyBhbmQgbW9yZS4KKworICAgICAqIFRpdGxlOiAiTGludXggSVAgTmV0d29ya2luZy4gQSBHdWlkZSB0byB0aGUgSW1wbGVtZW50YXRpb24gYW5kCisgICAgICAgTW9kaWZpY2F0aW9uIG9mIHRoZSBMaW51eCBQcm90b2NvbCBTdGFjay4iCisgICAgICAgQXV0aG9yOiBHbGVubiBIZXJyaW4uCisgICAgICAgVVJMOiBodHRwOi8vd3d3LmNzLnVuaC5lZHUvY25yZy9naGVycmluCisgICAgICAgS2V5d29yZHM6IG5ldHdvcmssIG5ldHdvcmtpbmcsIHByb3RvY29sLCBJUCwgVURQLCBUQ1AsIGNvbm5lY3Rpb24sCisgICAgICAgc29ja2V0LCByZWNlaXZpbmcsIHRyYW5zbWl0dGluZywgZm9yd2FyZGluZywgcm91dGluZywgcGFja2V0cywKKyAgICAgICBtb2R1bGVzLCAvcHJvYywgc2tfYnVmZiwgRklCLCB0YWdzLgorICAgICAgIERlc2NyaXB0aW9uOiBFeGNlbGxlbnQgcGFwZXIgZGV2b3RlZCB0byB0aGUgTGludXggSVAgTmV0d29ya2luZywKKyAgICAgICBleHBsYWluaW5nIGFueXRoaW5nIGZyb20gdGhlIGtlcm5lbCdzIHRvIHRoZSB1c2VyIHNwYWNlCisgICAgICAgY29uZmlndXJhdGlvbiB0b29scycgY29kZS4gVmVyeSBnb29kIHRvIGdldCBhIGdlbmVyYWwgb3ZlcnZpZXcgb2YKKyAgICAgICB0aGUga2VybmVsIG5ldHdvcmtpbmcgaW1wbGVtZW50YXRpb24gYW5kIHVuZGVyc3RhbmQgYWxsIHN0ZXBzCisgICAgICAgcGFja2V0cyBmb2xsb3cgZnJvbSB0aGUgdGltZSB0aGV5IGFyZSByZWNlaXZlZCBhdCB0aGUgbmV0d29yaworICAgICAgIGRldmljZSB0aWxsIHRoZXkgYXJlIGRlbGl2ZXJlZCB0byBhcHBsaWNhdGlvbnMuIFRoZSBzdHVkaWVkIGtlcm5lbAorICAgICAgIGNvZGUgaXMgZnJvbSAyLjIuMTQgdmVyc2lvbi4gUHJvdmlkZXMgY29kZSBmb3IgYSB3b3JraW5nIHBhY2tldAorICAgICAgIGRyb3BwZXIgZXhhbXBsZS4KKyAgICAgICAKKyAgICAgKiBUaXRsZTogIkdldCB0aG9zZSBib2FyZHMgdGFsa2luZyB1bmRlciBMaW51eC4iCisgICAgICAgQXV0aG9yOiBBbGV4IEl2Y2hlbmtvLgorICAgICAgIFVSTDogaHR0cDovL3d3dy5lZG4uY29tL2FydGljbGUvQ0E0Njk2OC5odG1sCisgICAgICAgS2V5d29yZHM6IGRhdGEtYWNxdWlzaXRpb24gYm9hcmRzLCBkcml2ZXJzLCBtb2R1bGVzLCBpbnRlcnJ1cHRzLAorICAgICAgIG1lbW9yeSBhbGxvY2F0aW9uLgorICAgICAgIERlc2NyaXB0aW9uOiBBcnRpY2xlIHdyaXR0ZW4gZm9yIHBlb3BsZSB3aXNoaW5nIHRvIG1ha2UgdGhlaXIgZGF0YQorICAgICAgIGFjcXVpc2l0aW9uIGJvYXJkcyB3b3JrIG9uIHRoZWlyIEdOVS9MaW51eCBtYWNoaW5lcy4gR2l2ZXMgYSBiYXNpYworICAgICAgIG92ZXJ2aWV3IG9uIHdyaXRpbmcgZHJpdmVycywgZnJvbSB0aGUgbmFtaW5nIG9mIGZ1bmN0aW9ucyB0bworICAgICAgIGludGVycnVwdCBoYW5kbGluZy4KKyAgICAgICBOb3RlczogVHdvLXBhcnRzIGFydGljbGUuIFBhcnQgSUkgaXMgYXQKKyAgICAgICBVUkw6IGh0dHA6Ly93d3cuZWRuLmNvbS9hcnRpY2xlL0NBNDY5OTguaHRtbAorICAgICAgIAorICAgICAqIFRpdGxlOiAiTGludXggUENNQ0lBIFByb2dyYW1tZXIncyBHdWlkZSIKKyAgICAgICBBdXRob3I6IERhdmlkIEhpbmRzLgorICAgICAgIFVSTDogaHR0cDovL3BjbWNpYS1jcy5zb3VyY2Vmb3JnZS5uZXQvZnRwL2RvYy9QQ01DSUEtUFJPRy5odG1sCisgICAgICAgS2V5d29yZHM6IFBDTUNJQS4KKyAgICAgICBEZXNjcmlwdGlvbjogIlRoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIGhvdyB0byB3cml0ZSBrZXJuZWwgZGV2aWNlCisgICAgICAgZHJpdmVycyBmb3IgdGhlIExpbnV4IFBDTUNJQSBDYXJkIFNlcnZpY2VzIGludGVyZmFjZS4gSXQgYWxzbworICAgICAgIGRlc2NyaWJlcyBob3cgdG8gd3JpdGUgdXNlci1tb2RlIHV0aWxpdGllcyBmb3IgY29tbXVuaWNhdGluZyB3aXRoCisgICAgICAgQ2FyZCBTZXJ2aWNlcy4KKworICAgICAqIFRpdGxlOiAiVGhlIExpbnV4IEtlcm5lbCBORlNEIEltcGxlbWVudGF0aW9uIgorICAgICAgIEF1dGhvcjogTmVpbCBCcm93bi4KKyAgICAgICBVUkw6CisgICAgICAgaHR0cDovL3d3dy5jc2UudW5zdy5lZHUuYXUvfm5laWxiL29zcy9saW51eC1jb21tZW50YXJ5L25mc2QuaHRtbAorICAgICAgIEtleXdvcmRzOiBrbmZzZCwgbmZzZCwgTkZTLCBSUEMsIGxvY2tkLCBtb3VudGQsIHN0YXRkLgorICAgICAgIERlc2NyaXB0aW9uOiBUaGUgdGl0bGUgc2F5cyBpdCBhbGwuCisgICAgICAgTm90ZXM6IENvdmVycyBrbmZzZCdzIHZlcnNpb24gMS40LjcgKHBhdGNoIGFnYWluc3QgMi4yLjcga2VybmVsKS4KKyAgICAgICAKKyAgICAgKiBUaXRsZTogIkEgTGludXggdm0gUkVBRE1FIgorICAgICAgIEF1dGhvcjogS2Fub2ogU2FyY2FyLgorICAgICAgIFVSTDogaHR0cDovL2tvcy5lbml4Lm9yZy9wdWIvbGludXgtdm1tLmh0bWwKKyAgICAgICBLZXl3b3JkczogdmlydHVhbCBtZW1vcnksIG1tLCBwZ2QsIHZtYSwgcGFnZSwgcGFnZSBmbGFncywgcGFnZQorICAgICAgIGNhY2hlLCBzd2FwIGNhY2hlLCBrc3dhcGQuCisgICAgICAgRGVzY3JpcHRpb246IFRlbGVncmFwaGljLCBzaG9ydCBkZXNjcmlwdGlvbnMgYW5kIGRlZmluaXRpb25zCisgICAgICAgcmVsYXRpbmcgdGhlIExpbnV4IHZpcnR1YWwgbWVtb3J5IGltcGxlbWVudGF0aW9uLgorICAgICAgIAorICAgICAqIFRpdGxlOiAiKG5lYXJseSkgQ29tcGxldGUgTGludXggTG9hZGFibGUgS2VybmVsIE1vZHVsZXMuIFRoZQorICAgICAgIGRlZmluaXRpdmUgZ3VpZGUgZm9yIGhhY2tlcnMsIHZpcnVzIGNvZGVycyBhbmQgc3lzdGVtCisgICAgICAgYWRtaW5pc3RyYXRvcnMuIgorICAgICAgIEF1dGhvcjogcHJhZ21hdGljL1RIQy4KKyAgICAgICBVUkw6IGh0dHA6Ly9wYWNrZXRzdG9ybXNlY3VyaXR5Lm9yZy9kb2NzL2hhY2svTEtNX0hBQ0tJTkcuaHRtbAorICAgICAgIEtleXdvcmRzOiBzeXNjYWxscywgaW50ZXJjZXB0LCBoaWRlLCBhYnVzZSwgc3ltYm9sIHRhYmxlLgorICAgICAgIERlc2NyaXB0aW9uOiBJbnRlcmVzdGluZyBwYXBlciBvbiBob3cgdG8gYWJ1c2UgdGhlIExpbnV4IGtlcm5lbCBpbgorICAgICAgIG9yZGVyIHRvIGludGVyY2VwdCBhbmQgbW9kaWZ5IHN5c2NhbGxzLCBtYWtlCisgICAgICAgZmlsZXMvZGlyZWN0b3JpZXMvcHJvY2Vzc2VzIGludmlzaWJsZSwgYmVjb21lIHJvb3QsIGhpamFjayB0dHlzLAorICAgICAgIHdyaXRlIGtlcm5lbCBtb2R1bGVzIGJhc2VkIHZpcnVzLi4uIGFuZCBzb2x1dGlvbnMgZm9yIGFkbWlucyB0bworICAgICAgIGF2b2lkIGFsbCB0aG9zZSBhYnVzZXMuCisgICAgICAgTm90ZXM6IEZvciAyLjAueCBrZXJuZWxzLiBHaXZlcyBndWlkYW5jZXMgdG8gcG9ydCBpdCB0byAyLjIueAorICAgICAgIGtlcm5lbHMuCisgICAgICAgCisgICAgIEJPT0tTOiAoTm90IG9uLWxpbmUpCisgICAKKyAgICAgKiBUaXRsZTogIkxpbnV4IERldmljZSBEcml2ZXJzIgorICAgICAgIEF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkuCisgICAgICAgUHVibGlzaGVyOiBPJ1JlaWxseSAmIEFzc29jaWF0ZXMuCisgICAgICAgRGF0ZTogMTk5OC4KKyAgICAgICBQYWdlczogNDM5LgorICAgICAgIElTQk46IDEtNTY1OTItMjkyLTEKKyAgICAgICAKKyAgICAgKiBUaXRsZTogIkxpbnV4IERldmljZSBEcml2ZXJzLCAybmQgRWRpdGlvbiIKKyAgICAgICBBdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIGFuZCBKb25hdGhhbiBDb3JiZXQuCisgICAgICAgUHVibGlzaGVyOiBPJ1JlaWxseSAmIEFzc29jaWF0ZXMuCisgICAgICAgRGF0ZTogMjAwMS4KKyAgICAgICBQYWdlczogNTg2LgorICAgICAgIElTQk46IDAtNTk2MDAtMDA4LTEKKyAgICAgICBOb3RlczogRnVydGhlciBpbmZvcm1hdGlvbiBpbgorICAgICAgIGh0dHA6Ly93d3cub3JlaWxseS5jb20vY2F0YWxvZy9saW51eGRyaXZlMi8KKworICAgICAqIFRpdGxlOiAiTGludXggRGV2aWNlIERyaXZlcnMsIDNyZCBFZGl0aW9uIgorICAgICAgIEF1dGhvcnM6IEpvbmF0aGFuIENvcmJldCwgQWxlc3NhbmRybyBSdWJpbmksIGFuZCBHcmVnIEtyb2FoLUhhcnRtYW4KKyAgICAgICBQdWJsaXNoZXI6IE8nUmVpbGx5ICYgQXNzb2NpYXRlcy4KKyAgICAgICBEYXRlOiAyMDA1LgorICAgICAgIFBhZ2VzOiA2MzYuCisgICAgICAgSVNCTjogMC01OTYtMDA1OTAtMworICAgICAgIE5vdGVzOiBGdXJ0aGVyIGluZm9ybWF0aW9uIGluCisgICAgICAgaHR0cDovL3d3dy5vcmVpbGx5LmNvbS9jYXRhbG9nL2xpbnV4ZHJpdmUzLworICAgICAgIFBERiBmb3JtYXQsIFVSTDogaHR0cDovL2x3bi5uZXQvS2VybmVsL0xERDMvCisKKyAgICAgKiBUaXRsZTogIkxpbnV4IEtlcm5lbCBJbnRlcm5hbHMiCisgICAgICAgQXV0aG9yOiBNaWNoYWVsIEJlY2suCisgICAgICAgUHVibGlzaGVyOiBBZGRpc29uLVdlc2xleS4KKyAgICAgICBEYXRlOiAxOTk3LgorICAgICAgIElTQk46IDAtMjAxLTMzMTQzLTggKHNlY29uZCBlZGl0aW9uKQorICAgICAgIAorICAgICAqIFRpdGxlOiAiVGhlIERlc2lnbiBvZiB0aGUgVU5JWCBPcGVyYXRpbmcgU3lzdGVtIgorICAgICAgIEF1dGhvcjogTWF1cmljZSBKLiBCYWNoLgorICAgICAgIFB1Ymxpc2hlcjogUHJlbnRpY2UgSGFsbC4KKyAgICAgICBEYXRlOiAxOTg2LgorICAgICAgIFBhZ2VzOiA0NzEuCisgICAgICAgSVNCTjogMC0xMy0yMDE3NTctMQorICAgICAgIAorICAgICAqIFRpdGxlOiAiVGhlIERlc2lnbiBhbmQgSW1wbGVtZW50YXRpb24gb2YgdGhlIDQuMyBCU0QgVU5JWAorICAgICAgIE9wZXJhdGluZyBTeXN0ZW0iCisgICAgICAgQXV0aG9yOiBTYW11ZWwgSi4gTGVmZmxlciwgTWFyc2hhbGwgS2lyayBNY0t1c2ljaywgTWljaGFlbCBKLgorICAgICAgIEthcmVscywgSm9obiBTLiBRdWFydGVybWFuLgorICAgICAgIFB1Ymxpc2hlcjogQWRkaXNvbi1XZXNsZXkuCisgICAgICAgRGF0ZTogMTk4OSAocmVwcmludGVkIHdpdGggY29ycmVjdGlvbnMgb24gT2N0b2JlciwgMTk5MCkuCisgICAgICAgSVNCTjogMC0yMDEtMDYxOTYtMQorICAgICAgIAorICAgICAqIFRpdGxlOiAiVGhlIERlc2lnbiBhbmQgSW1wbGVtZW50YXRpb24gb2YgdGhlIDQuNCBCU0QgVU5JWAorICAgICAgIE9wZXJhdGluZyBTeXN0ZW0iCisgICAgICAgQXV0aG9yOiBNYXJzaGFsbCBLaXJrIE1jS3VzaWNrLCBLZWl0aCBCb3N0aWMsIE1pY2hhZWwgSi4gS2FyZWxzLAorICAgICAgIEpvaG4gUy4gUXVhcnRlcm1hbi4KKyAgICAgICBQdWJsaXNoZXI6IEFkZGlzb24tV2VzbGV5LgorICAgICAgIERhdGU6IDE5OTYuCisgICAgICAgSVNCTjogMC0yMDEtNTQ5NzktNAorICAgICAgIAorICAgICAqIFRpdGxlOiAiUHJvZ3JhbW1hdGlvbiBMaW51eCAyLjAgQVBJIHN5c3RlbWUgZXQgZm9uY3Rpb25uZW1lbnQgZHUKKyAgICAgICBub3lhdSIKKyAgICAgICBBdXRob3I6IFJlbXkgQ2FyZCwgRXJpYyBEdW1hcywgRnJhbmNrIE1ldmVsLgorICAgICAgIFB1Ymxpc2hlcjogRXlyb2xsZXMuCisgICAgICAgRGF0ZTogMTk5Ny4KKyAgICAgICBQYWdlczogNTIwLgorICAgICAgIElTQk46IDItMjEyLTA4OTMyLTUKKyAgICAgICBOb3RlczogRnJlbmNoLgorCisgICAgICogVGl0bGU6ICJVbml4IGludGVybmFscyAtLSB0aGUgbmV3IGZyb250aWVycyIKKyAgICAgICBBdXRob3I6IFVyZXNoIFZhaGFsaWEuCisgICAgICAgUHVibGlzaGVyOiBQcmVudGljZSBIYWxsLgorICAgICAgIERhdGU6IDE5OTYuCisgICAgICAgUGFnZXM6IDYwMC4KKyAgICAgICBJU0JOOiAwLTEzLTEwMTkwOC0yCisKKyAgICAgKiBUaXRsZTogIlByb2dyYW1taW5nIGZvciB0aGUgcmVhbCB3b3JsZCAtIFBPU0lYLjQiCisgICAgICAgQXV0aG9yOiBCaWxsIE8uIEdhbGxtZWlzdGVyLgorICAgICAgIFB1Ymxpc2hlcjogTydSZWlsbHkgJiBBc3NvY2lhdGVzLCBJbmMuLgorICAgICAgIERhdGU6IDE5OTUuCisgICAgICAgUGFnZXM6ID8/Py4KKyAgICAgICBJU0JOOiBJLTU2NTkyLTA3NC0wCisgICAgICAgTm90ZXM6IFRob3VnaCBub3QgYmVpbmcgZGlyZWN0bHkgYWJvdXQgTGludXgsIExpbnV4IGFpbXMgdG8gYmUKKyAgICAgICBQT1NJWC4gR29vZCByZWZlcmVuY2UuCisKKyAgICAgKiBUaXRsZTogICJVTklYICBTeXN0ZW1zICBmb3IgIE1vZGVybiBBcmNoaXRlY3R1cmVzOiBTeW1tZXRyaWMKKyAgICAgICBNdWx0aXByb2Nlc3NpbmcgYW5kIENhY2hpbmcgZm9yIEtlcm5lbCBQcm9ncmFtbWVycyIKKyAgICAgICBBdXRob3I6IEN1cnQgU2NoaW1tZWwuCisgICAgICAgUHVibGlzaGVyOiBBZGRpc29uIFdlc2xleS4KKyAgICAgICBEYXRlOiBKdW5lLCAxOTk0LgorICAgICAgIFBhZ2VzOiA0MzIuCisgICAgICAgSVNCTjogMC0yMDEtNjMzMzgtOAorCisgICAgIE1JU0NFTExBTkVPVVM6CisKKyAgICAgKiBOYW1lOiBsaW51eC9Eb2N1bWVudGF0aW9uCisgICAgICAgQXV0aG9yOiBNYW55LgorICAgICAgIFVSTDogSnVzdCBsb29rIGluc2lkZSB5b3VyIGtlcm5lbCBzb3VyY2VzLgorICAgICAgIEtleXdvcmRzOiBhbnl0aGluZywgRG9jQm9vay4KKyAgICAgICBEZXNjcmlwdGlvbjogRG9jdW1lbnRhdGlvbiB0aGF0IGNvbWVzIHdpdGggdGhlIGtlcm5lbCBzb3VyY2VzLAorICAgICAgIGluc2lkZSB0aGUgRG9jdW1lbnRhdGlvbiBkaXJlY3RvcnkuIFNvbWUgcGFnZXMgZnJvbSB0aGlzIGRvY3VtZW50CisgICAgICAgKGluY2x1ZGluZyB0aGlzIGRvY3VtZW50IGl0c2VsZikgaGF2ZSBiZWVuIG1vdmVkIHRoZXJlLCBhbmQgbWlnaHQKKyAgICAgICBiZSBtb3JlIHVwIHRvIGRhdGUgdGhhbiB0aGUgd2ViIHZlcnNpb24uCisKKyAgICAgKiBOYW1lOiAiTGludXggS2VybmVsIFNvdXJjZSBSZWZlcmVuY2UiCisgICAgICAgQXV0aG9yOiBUaG9tYXMgR3JhaWNoZW4uCisgICAgICAgVVJMOiBodHRwOi8vbWFyYy5pbmZvLz9sPWxpbnV4LWtlcm5lbCZtPTk2NDQ2NjQwMTAyMjA1Jnc9NAorICAgICAgIEtleXdvcmRzOiBDVlMsIHdlYiwgY3Zzd2ViLCBicm93c2luZyBzb3VyY2UgY29kZS4KKyAgICAgICBEZXNjcmlwdGlvbjogV2ViIGludGVyZmFjZSB0byBhIENWUyBzZXJ2ZXIgd2l0aCB0aGUga2VybmVsCisgICAgICAgc291cmNlcy4gIkhlcmUgeW91IGNhbiBoYXZlIGEgbG9vayBhdCBhbnkgZmlsZSBvZiB0aGUgTGludXgga2VybmVsCisgICAgICAgc291cmNlcyBvZiBhbnkgdmVyc2lvbiBzdGFydGluZyBmcm9tIDEuMCB1cCB0byB0aGUgKGRhaWx5IHVwZGF0ZWQpCisgICAgICAgY3VycmVudCB2ZXJzaW9uIGF2YWlsYWJsZS4gQWxzbyB5b3UgY2FuIGNoZWNrIHRoZSBkaWZmZXJlbmNlcworICAgICAgIGJldHdlZW4gdHdvIHZlcnNpb25zIG9mIGEgZmlsZSIuCisKKyAgICAgKiBOYW1lOiAiQ3Jvc3MtUmVmZXJlbmNpbmcgTGludXgiCisgICAgICAgVVJMOiBodHRwOi8vbHhyLmxpbnV4Lm5vL3NvdXJjZS8KKyAgICAgICBLZXl3b3JkczogQnJvd3Npbmcgc291cmNlIGNvZGUuCisgICAgICAgRGVzY3JpcHRpb246IEFub3RoZXIgd2ViLWJhc2VkIExpbnV4IGtlcm5lbCBzb3VyY2UgY29kZSBicm93c2VyLgorICAgICAgIExvdHMgb2YgY3Jvc3MgcmVmZXJlbmNlcyB0byB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucy4gWW91IGNhbiBzZWUKKyAgICAgICB3aGVyZSB0aGV5IGFyZSBkZWZpbmVkIGFuZCB3aGVyZSB0aGV5IGFyZSB1c2VkLgorCisgICAgICogTmFtZTogIkxpbnV4IFdlZWtseSBOZXdzIgorICAgICAgIFVSTDogaHR0cDovL2x3bi5uZXQKKyAgICAgICBLZXl3b3JkczogbGF0ZXN0IGtlcm5lbCBuZXdzLgorICAgICAgIERlc2NyaXB0aW9uOiBUaGUgdGl0bGUgc2F5cyBpdCBhbGwuIFRoZXJlJ3MgYSBmaXhlZCBrZXJuZWwgc2VjdGlvbgorICAgICAgIHN1bW1hcml6aW5nIGRldmVsb3BlcnMnIHdvcmssIGJ1ZyBmaXhlcywgbmV3IGZlYXR1cmVzIGFuZCB2ZXJzaW9ucworICAgICAgIHByb2R1Y2VkIGR1cmluZyB0aGUgd2Vlay4gUHVibGlzaGVkIGV2ZXJ5IFRodXJzZGF5LgorCisgICAgICogTmFtZTogIktlcm5lbCBUcmFmZmljIgorICAgICAgIFVSTDogaHR0cDovL2t0LmVhcnRoLmxpL2tlcm5lbC10cmFmZmljL2luZGV4Lmh0bWwKKyAgICAgICBLZXl3b3JkczogbGludXgta2VybmVsIG1haWxpbmcgbGlzdCwgd2Vla2x5IGtlcm5lbCBuZXdzLgorICAgICAgIERlc2NyaXB0aW9uOiBXZWVrbHkgbmV3c2xldHRlciBjb3ZlcmluZyB0aGUgbW9zdCByZWxldmFudAorICAgICAgIGRpc2N1c3Npb25zIG9mIHRoZSBsaW51eC1rZXJuZWwgbWFpbGluZyBsaXN0LgorCisgICAgICogTmFtZTogIkN1VFRpTkcuZURHZS5MaU51WCIKKyAgICAgICBVUkw6IGh0dHA6Ly9lZGdlLmtlcm5lbG5vdGVzLm9yZworICAgICAgIEtleXdvcmRzOiBjaGFuZ2VsaXN0LgorICAgICAgIERlc2NyaXB0aW9uOiBTaXRlIHdoaWNoIHByb3ZpZGVzIHRoZSBjaGFuZ2VsaXN0IGZvciBldmVyeSBrZXJuZWwKKyAgICAgICByZWxlYXNlLiBXaGF0J3MgbmV3LCB3aGF0J3MgYmV0dGVyLCB3aGF0J3MgY2hhbmdlZC4gTXlyZHJhYWwgcmVhZHMKKyAgICAgICB0aGUgcGF0Y2hlcyBhbmQgZGVzY3JpYmVzIHRoZW0uIFBvaW50ZXJzIHRvIHRoZSBwYXRjaGVzIGFyZSB0aGVyZSwKKyAgICAgICB0b28uCisKKyAgICAgKiBOYW1lOiAiTmV3IGxpbnV4LWtlcm5lbCBNYWlsaW5nIExpc3QgRkFRIgorICAgICAgIFVSTDogaHR0cDovL3d3dy50dXgub3JnL2xrbWwvCisgICAgICAgS2V5d29yZHM6IGxpbnV4LWtlcm5lbCBtYWlsaW5nIGxpc3QgRkFRLgorICAgICAgIERlc2NyaXB0aW9uOiBsaW51eC1rZXJuZWwgaXMgYSBtYWlsaW5nIGxpc3QgZm9yIGRldmVsb3BlcnMgdG8KKyAgICAgICBjb21tdW5pY2F0ZS4gVGhpcyBGQVEgYnVpbGRzIG9uIHRoZSBwcmV2aW91cyBsaW51eC1rZXJuZWwgbWFpbGluZworICAgICAgIGxpc3QgRkFRIG1haW50YWluZWQgYnkgRnJvaHdhbHQgRWdlcmVyLCB3aG8gbm8gbG9uZ2VyIG1haW50YWlucworICAgICAgIGl0LiBSZWFkIGl0IHRvIHNlZSBob3cgdG8gam9pbiB0aGUgbWFpbGluZyBsaXN0LiBEb3plbnMgb2YKKyAgICAgICBpbnRlcmVzdGluZyBxdWVzdGlvbnMgcmVnYXJkaW5nIHRoZSBsaXN0LCBMaW51eCwgZGV2ZWxvcGVycyAod2hvCisgICAgICAgaXMgLi4uPyksIHRlcm1zICh3aGF0IGlzLi4uPykgYXJlIGFuc3dlcmVkIGhlcmUgdG9vLiBKdXN0IHJlYWQgaXQuCisKKyAgICAgKiBOYW1lOiAiTGludXggVmlydHVhbCBGaWxlIFN5c3RlbSIKKyAgICAgICBBdXRob3I6IFBldGVyIEouIEJyYWFtLgorICAgICAgIFVSTDogaHR0cDovL3d3dy5jb2RhLmNzLmNtdS5lZHUvZG9jL3RhbGtzL2xpbnV4dmZzLworICAgICAgIEtleXdvcmRzOiBzbGlkZXMsIFZGUywgaW5vZGUsIHN1cGVyYmxvY2ssIGRlbnRyeSwgZGNhY2hlLgorICAgICAgIERlc2NyaXB0aW9uOiBTZXQgb2Ygc2xpZGVzLCBwcmVzdW1hYmx5IGZyb20gYSBwcmVzZW50YXRpb24gb24gdGhlCisgICAgICAgTGludXggVkZTIGxheWVyLiBDb3ZlcnMgdmVyc2lvbiAyLjEueCwgd2l0aCBkZW50cmllcyBhbmQgdGhlCisgICAgICAgZGNhY2hlLgorCisgICAgICogTmFtZTogIkdhcnkncyBFbmN5Y2xvcGVkaWEgLSBUaGUgTGludXggS2VybmVsIgorICAgICAgIEF1dGhvcjogR2FyeSAoSSBzdXBwb3NlLi4uKS4KKyAgICAgICBVUkw6IGh0dHA6Ly9zbGVuY3ljbG9wZWRpYS5iZXJsaW9zLmRlL2luZGV4Lmh0bWwKKyAgICAgICBLZXl3b3JkczogbGludXgsIGNvbW11bml0eSwgZXZlcnl0aGluZyEKKyAgICAgICBEZXNjcmlwdGlvbjogR2FyeSdzIEVuY3ljbG9wZWRpYSBleGlzdHMgdG8gYWxsb3cgdGhlIHJhcGlkIGZpbmRpbmcKKyAgICAgICBvZiBkb2N1bWVudGF0aW9uIGFuZCBvdGhlciBpbmZvcm1hdGlvbiBvZiBpbnRlcmVzdCB0byBHTlUvTGludXgKKyAgICAgICB1c2Vycy4gSXQgaGFzIGFib3V0IDQwMDAgbGlua3MgdG8gZXh0ZXJuYWwgcGFnZXMgaW4gMTUwIG1ham9yCisgICAgICAgY2F0ZWdvcmllcy4gVGhpcyBsaW5rIGlzIGZvciBrZXJuZWwtc3BlY2lmaWMgbGlua3MsIGRvY3VtZW50cywKKyAgICAgICBzaXRlcy4uLiAgVGhpcyBsaXN0IGlzIG5vdyBob3N0ZWQgYnkgZGV2ZWxvcGVyLkJlcmxpb3MuZGUsCisgICAgICAgYnV0IHNlZW1zIG5vdCB0byBoYXZlIGJlZW4gdXBkYXRlZCBzaW5jZSBzb21ldGltZSBpbiAxOTk5LgorCisgICAgICogTmFtZTogIlRoZSBob21lIHBhZ2Ugb2YgTGludXgtTU0iCisgICAgICAgQXV0aG9yOiBUaGUgTGludXgtTU0gdGVhbS4KKyAgICAgICBVUkw6IGh0dHA6Ly9saW51eC1tbS5vcmcvCisgICAgICAgS2V5d29yZHM6IG1lbW9yeSBtYW5hZ2VtZW50LCBMaW51eC1NTSwgbW0gcGF0Y2hlcywgVE9ETywgZG9jcywKKyAgICAgICBtYWlsaW5nIGxpc3QuCisgICAgICAgRGVzY3JpcHRpb246IFNpdGUgZGV2b3RlZCB0byBMaW51eCBNZW1vcnkgTWFuYWdlbWVudCBkZXZlbG9wbWVudC4KKyAgICAgICBNZW1vcnkgcmVsYXRlZCBwYXRjaGVzLCBIT1dUT3MsIGxpbmtzLCBtbSBkZXZlbG9wZXJzLi4uIERvbid0IG1pc3MKKyAgICAgICBpdCBpZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gbWVtb3J5IG1hbmFnZW1lbnQgZGV2ZWxvcG1lbnQhCisKKyAgICAgKiBOYW1lOiAiS2VybmVsIE5ld2JpZXMgSVJDIENoYW5uZWwgYW5kIFdlYnNpdGUiCisgICAgICAgVVJMOiBodHRwOi8vd3d3Lmtlcm5lbG5ld2JpZXMub3JnCisgICAgICAgS2V5d29yZHM6IElSQywgbmV3YmllcywgY2hhbm5lbCwgYXNraW5nIGRvdWJ0cy4KKyAgICAgICBEZXNjcmlwdGlvbjogI2tlcm5lbG5ld2JpZXMgb24gaXJjLm9mdGMubmV0LgorICAgICAgICNrZXJuZWxuZXdiaWVzIGlzIGFuIElSQyBuZXR3b3JrIGRlZGljYXRlZCB0byB0aGUgJ25ld2JpZScKKyAgICAgICBrZXJuZWwgaGFja2VyLiBUaGUgYXVkaWVuY2UgbW9zdGx5IGNvbnNpc3RzIG9mIHBlb3BsZSB3aG8gYXJlCisgICAgICAgbGVhcm5pbmcgYWJvdXQgdGhlIGtlcm5lbCwgd29ya2luZyBvbiBrZXJuZWwgcHJvamVjdHMgb3IKKyAgICAgICBwcm9mZXNzaW9uYWwga2VybmVsIGhhY2tlcnMgdGhhdCB3YW50IHRvIGhlbHAgbGVzcyBzZWFzb25lZCBrZXJuZWwKKyAgICAgICBwZW9wbGUuCisgICAgICAgI2tlcm5lbG5ld2JpZXMgaXMgb24gdGhlIE9GVEMgSVJDIE5ldHdvcmsuCisgICAgICAgVHJ5IGlyYy5vZnRjLm5ldCBhcyB5b3VyIHNlcnZlciBhbmQgdGhlbiAvam9pbiAja2VybmVsbmV3Ymllcy4KKyAgICAgICBUaGUga2VybmVsbmV3YmllcyB3ZWJzaXRlIGFsc28gaG9zdHMgYXJ0aWNsZXMsIGRvY3VtZW50cywgRkFRcy4uLgorICAgICAgIAorICAgICAqIE5hbWU6ICJsaW51eC1rZXJuZWwgbWFpbGluZyBsaXN0IGFyY2hpdmVzIGFuZCBzZWFyY2ggZW5naW5lcyIKKyAgICAgICBVUkw6IGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvdmdlci1saXN0cy5odG1sCisgICAgICAgVVJMOiBodHRwOi8vd3d3LnV3c2cuaW5kaWFuYS5lZHUvaHlwZXJtYWlsL2xpbnV4L2tlcm5lbC9pbmRleC5odG1sCisgICAgICAgVVJMOiBodHRwOi8vbWFyYy50aGVhaW1zZ3JvdXAuY29tLz9sPWxpbnV4LWtlcm5lbAorICAgICAgIFVSTDogaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3VwL21saXN0LmxpbnV4Lmtlcm5lbAorICAgICAgIFVSTDogaHR0cDovL3d3dy5jcy5oZWxzaW5raS5maS9saW51eC9saW51eC1rZXJuZWwvCisgICAgICAgVVJMOiBodHRwOi8vd3d3LmxpYi51YWEuYWxhc2thLmVkdS9saW51eC1rZXJuZWwvCisgICAgICAgS2V5d29yZHM6IGxpbnV4LWtlcm5lbCwgYXJjaGl2ZXMsIHNlYXJjaC4KKyAgICAgICBEZXNjcmlwdGlvbjogU29tZSBvZiB0aGUgbGludXgta2VybmVsIG1haWxpbmcgbGlzdCBhcmNoaXZlcnMuIElmCisgICAgICAgeW91IGhhdmUgYSBiZXR0ZXIvYW5vdGhlciBvbmUsIHBsZWFzZSBsZXQgbWUga25vdy4KKyAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKyAgIAorICAgRG9jdW1lbnQgbGFzdCB1cGRhdGVkIG9uIFNhdCAyMDA1LU5PVi0xOQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQgYi9Eb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Yzc3ZDdlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQKQEAgLTAsMCArMSw0MjA2IEBACisgICAgICAgICAgICAgICAgICAgICAgICAgIEtlcm5lbCBQYXJhbWV0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+CisKK1RoZSBmb2xsb3dpbmcgaXMgYSBjb25zb2xpZGF0ZWQgbGlzdCBvZiB0aGUga2VybmVsIHBhcmFtZXRlcnMgYXMKK2ltcGxlbWVudGVkIGJ5IHRoZSBfX3NldHVwKCksIGNvcmVfcGFyYW0oKSBhbmQgbW9kdWxlX3BhcmFtKCkgbWFjcm9zCithbmQgc29ydGVkIGludG8gRW5nbGlzaCBEaWN0aW9uYXJ5IG9yZGVyIChkZWZpbmVkIGFzIGlnbm9yaW5nIGFsbAorcHVuY3R1YXRpb24gYW5kIHNvcnRpbmcgZGlnaXRzIGJlZm9yZSBsZXR0ZXJzIGluIGEgY2FzZSBpbnNlbnNpdGl2ZQorbWFubmVyKSwgYW5kIHdpdGggZGVzY3JpcHRpb25zIHdoZXJlIGtub3duLgorCitUaGUga2VybmVsIHBhcnNlcyBwYXJhbWV0ZXJzIGZyb20gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgdXAgdG8gIi0tIjsKK2lmIGl0IGRvZXNuJ3QgcmVjb2duaXplIGEgcGFyYW1ldGVyIGFuZCBpdCBkb2Vzbid0IGNvbnRhaW4gYSAnLicsIHRoZQorcGFyYW1ldGVyIGdldHMgcGFzc2VkIHRvIGluaXQ6IHBhcmFtZXRlcnMgd2l0aCAnPScgZ28gaW50byBpbml0J3MKK2Vudmlyb25tZW50LCBvdGhlcnMgYXJlIHBhc3NlZCBhcyBjb21tYW5kIGxpbmUgYXJndW1lbnRzIHRvIGluaXQuCitFdmVyeXRoaW5nIGFmdGVyICItLSIgaXMgcGFzc2VkIGFzIGFuIGFyZ3VtZW50IHRvIGluaXQuCisKK01vZHVsZSBwYXJhbWV0ZXJzIGNhbiBiZSBzcGVjaWZpZWQgaW4gdHdvIHdheXM6IHZpYSB0aGUga2VybmVsIGNvbW1hbmQKK2xpbmUgd2l0aCBhIG1vZHVsZSBuYW1lIHByZWZpeCwgb3IgdmlhIG1vZHByb2JlLCBlLmcuOgorCisJKGtlcm5lbCBjb21tYW5kIGxpbmUpIHVzYmNvcmUuYmxpbmtlbmxpZ2h0cz0xCisJKG1vZHByb2JlIGNvbW1hbmQgbGluZSkgbW9kcHJvYmUgdXNiY29yZSBibGlua2VubGlnaHRzPTEKKworUGFyYW1ldGVycyBmb3IgbW9kdWxlcyB3aGljaCBhcmUgYnVpbHQgaW50byB0aGUga2VybmVsIG5lZWQgdG8gYmUKK3NwZWNpZmllZCBvbiB0aGUga2VybmVsIGNvbW1hbmQgbGluZS4gIG1vZHByb2JlIGxvb2tzIHRocm91Z2ggdGhlCitrZXJuZWwgY29tbWFuZCBsaW5lICgvcHJvYy9jbWRsaW5lKSBhbmQgY29sbGVjdHMgbW9kdWxlIHBhcmFtZXRlcnMKK3doZW4gaXQgbG9hZHMgYSBtb2R1bGUsIHNvIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIGNhbiBiZSB1c2VkIGZvcgorbG9hZGFibGUgbW9kdWxlcyB0b28uCisKK0h5cGhlbnMgKGRhc2hlcykgYW5kIHVuZGVyc2NvcmVzIGFyZSBlcXVpdmFsZW50IGluIHBhcmFtZXRlciBuYW1lcywgc28KKwlsb2dfYnVmX2xlbj0xTSBwcmludC1mYXRhbC1zaWduYWxzPTEKK2NhbiBhbHNvIGJlIGVudGVyZWQgYXMKKwlsb2ctYnVmLWxlbj0xTSBwcmludF9mYXRhbF9zaWduYWxzPTEKKworRG91YmxlLXF1b3RlcyBjYW4gYmUgdXNlZCB0byBwcm90ZWN0IHNwYWNlcyBpbiB2YWx1ZXMsIGUuZy46CisJcGFyYW09InNwYWNlcyBpbiBoZXJlIgorCitUaGlzIGRvY3VtZW50IG1heSBub3QgYmUgZW50aXJlbHkgdXAgdG8gZGF0ZSBhbmQgY29tcHJlaGVuc2l2ZS4gVGhlIGNvbW1hbmQKKyJtb2RpbmZvIC1wICR7bW9kdWxlbmFtZX0iIHNob3dzIGEgY3VycmVudCBsaXN0IG9mIGFsbCBwYXJhbWV0ZXJzIG9mIGEgbG9hZGFibGUKK21vZHVsZS4gTG9hZGFibGUgbW9kdWxlcywgYWZ0ZXIgYmVpbmcgbG9hZGVkIGludG8gdGhlIHJ1bm5pbmcga2VybmVsLCBhbHNvCityZXZlYWwgdGhlaXIgcGFyYW1ldGVycyBpbiAvc3lzL21vZHVsZS8ke21vZHVsZW5hbWV9L3BhcmFtZXRlcnMvLiBTb21lIG9mIHRoZXNlCitwYXJhbWV0ZXJzIG1heSBiZSBjaGFuZ2VkIGF0IHJ1bnRpbWUgYnkgdGhlIGNvbW1hbmQKKyJlY2hvIC1uICR7dmFsdWV9ID4gL3N5cy9tb2R1bGUvJHttb2R1bGVuYW1lfS9wYXJhbWV0ZXJzLyR7cGFybX0iLgorCitUaGUgcGFyYW1ldGVycyBsaXN0ZWQgYmVsb3cgYXJlIG9ubHkgdmFsaWQgaWYgY2VydGFpbiBrZXJuZWwgYnVpbGQgb3B0aW9ucyB3ZXJlCitlbmFibGVkIGFuZCBpZiByZXNwZWN0aXZlIGhhcmR3YXJlIGlzIHByZXNlbnQuIFRoZSB0ZXh0IGluIHNxdWFyZSBicmFja2V0cyBhdAordGhlIGJlZ2lubmluZyBvZiBlYWNoIGRlc2NyaXB0aW9uIHN0YXRlcyB0aGUgcmVzdHJpY3Rpb25zIHdpdGhpbiB3aGljaCBhCitwYXJhbWV0ZXIgaXMgYXBwbGljYWJsZToKKworCUFDUEkJQUNQSSBzdXBwb3J0IGlzIGVuYWJsZWQuCisJQUdQCUFHUCAoQWNjZWxlcmF0ZWQgR3JhcGhpY3MgUG9ydCkgaXMgZW5hYmxlZC4KKwlBTFNBCUFMU0Egc291bmQgc3VwcG9ydCBpcyBlbmFibGVkLgorCUFQSUMJQVBJQyBzdXBwb3J0IGlzIGVuYWJsZWQuCisJQVBNCUFkdmFuY2VkIFBvd2VyIE1hbmFnZW1lbnQgc3VwcG9ydCBpcyBlbmFibGVkLgorCUFSTQlBUk0gYXJjaGl0ZWN0dXJlIGlzIGVuYWJsZWQuCisJQVZSMzIJQVZSMzIgYXJjaGl0ZWN0dXJlIGlzIGVuYWJsZWQuCisJQVgyNQlBcHByb3ByaWF0ZSBBWC4yNSBzdXBwb3J0IGlzIGVuYWJsZWQuCisJQkxBQ0tGSU4gQmxhY2tmaW4gYXJjaGl0ZWN0dXJlIGlzIGVuYWJsZWQuCisJQ0xLCUNvbW1vbiBjbG9jayBpbmZyYXN0cnVjdHVyZSBpcyBlbmFibGVkLgorCUNNQQlDb250aWd1b3VzIE1lbW9yeSBBcmVhIHN1cHBvcnQgaXMgZW5hYmxlZC4KKwlEUk0JRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VtZW50IHN1cHBvcnQgaXMgZW5hYmxlZC4KKwlEWU5BTUlDX0RFQlVHIEJ1aWxkIGluIGRlYnVnIG1lc3NhZ2VzIGFuZCBlbmFibGUgdGhlbSBhdCBydW50aW1lCisJRURECUJJT1MgRW5oYW5jZWQgRGlzayBEcml2ZSBTZXJ2aWNlcyAoRUREKSBpcyBlbmFibGVkCisJRUZJCUVGSSBQYXJ0aXRpb25pbmcgKEdQVCkgaXMgZW5hYmxlZAorCUVJREUJRUlERS9BVEFQSSBzdXBwb3J0IGlzIGVuYWJsZWQuCisJRVZNCUV4dGVuZGVkIFZlcmlmaWNhdGlvbiBNb2R1bGUKKwlGQglUaGUgZnJhbWUgYnVmZmVyIGRldmljZSBpcyBlbmFibGVkLgorCUZUUkFDRQlGdW5jdGlvbiB0cmFjaW5nIGVuYWJsZWQuCisJR0NPVglHQ09WIHByb2ZpbGluZyBpcyBlbmFibGVkLgorCUhXCUFwcHJvcHJpYXRlIGhhcmR3YXJlIGlzIGVuYWJsZWQuCisJSUEtNjQJSUEtNjQgYXJjaGl0ZWN0dXJlIGlzIGVuYWJsZWQuCisJSU1BICAgICBJbnRlZ3JpdHkgbWVhc3VyZW1lbnQgYXJjaGl0ZWN0dXJlIGlzIGVuYWJsZWQuCisJSU9TQ0hFRAlNb3JlIHRoYW4gb25lIEkvTyBzY2hlZHVsZXIgaXMgZW5hYmxlZC4KKwlJUF9QTlAJSVAgREhDUCwgQk9PVFAsIG9yIFJBUlAgaXMgZW5hYmxlZC4KKwlJUFY2CUlQdjYgc3VwcG9ydCBpcyBlbmFibGVkLgorCUlTQVBOUAlJU0EgUG5QIGNvZGUgaXMgZW5hYmxlZC4KKwlJU0ROCUFwcHJvcHJpYXRlIElTRE4gc3VwcG9ydCBpcyBlbmFibGVkLgorCUpPWQlBcHByb3ByaWF0ZSBqb3lzdGljayBzdXBwb3J0IGlzIGVuYWJsZWQuCisJS0dEQglLZXJuZWwgZGVidWdnZXIgc3VwcG9ydCBpcyBlbmFibGVkLgorCUtWTQlLZXJuZWwgVmlydHVhbCBNYWNoaW5lIHN1cHBvcnQgaXMgZW5hYmxlZC4KKwlMSUJBVEEgIExpYmF0YSBkcml2ZXIgaXMgZW5hYmxlZAorCUxQCVByaW50ZXIgc3VwcG9ydCBpcyBlbmFibGVkLgorCUxPT1AJTG9vcGJhY2sgZGV2aWNlIHN1cHBvcnQgaXMgZW5hYmxlZC4KKwlNNjhrCU02OGsgYXJjaGl0ZWN0dXJlIGlzIGVuYWJsZWQuCisJCQlUaGVzZSBvcHRpb25zIGhhdmUgbW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBpbnNpZGUgb2YKKwkJCURvY3VtZW50YXRpb24vbTY4ay9rZXJuZWwtb3B0aW9ucy50eHQuCisJTURBCU1EQSBjb25zb2xlIHN1cHBvcnQgaXMgZW5hYmxlZC4KKwlNSVBTCU1JUFMgYXJjaGl0ZWN0dXJlIGlzIGVuYWJsZWQuCisJTU9VU0UJQXBwcm9wcmlhdGUgbW91c2Ugc3VwcG9ydCBpcyBlbmFibGVkLgorCU1TSQlNZXNzYWdlIFNpZ25hbGVkIEludGVycnVwdHMgKFBDSSkuCisJTVRECU1URCAoTWVtb3J5IFRlY2hub2xvZ3kgRGV2aWNlKSBzdXBwb3J0IGlzIGVuYWJsZWQuCisJTkVUCUFwcHJvcHJpYXRlIG5ldHdvcmsgc3VwcG9ydCBpcyBlbmFibGVkLgorCU5VTUEJTlVNQSBzdXBwb3J0IGlzIGVuYWJsZWQuCisJTkZTCUFwcHJvcHJpYXRlIE5GUyBzdXBwb3J0IGlzIGVuYWJsZWQuCisJT1NTCU9TUyBzb3VuZCBzdXBwb3J0IGlzIGVuYWJsZWQuCisJUFZfT1BTCUEgcGFyYXZpcnR1YWxpemVkIGtlcm5lbCBpcyBlbmFibGVkLgorCVBBUklERQlUaGUgUGFySURFIChwYXJhbGxlbCBwb3J0IElERSkgc3Vic3lzdGVtIGlzIGVuYWJsZWQuCisJUEFSSVNDCVRoZSBQQS1SSVNDIGFyY2hpdGVjdHVyZSBpcyBlbmFibGVkLgorCVBDSQlQQ0kgYnVzIHN1cHBvcnQgaXMgZW5hYmxlZC4KKwlQQ0lFCVBDSSBFeHByZXNzIHN1cHBvcnQgaXMgZW5hYmxlZC4KKwlQQ01DSUEJVGhlIFBDTUNJQSBzdWJzeXN0ZW0gaXMgZW5hYmxlZC4KKwlQTlAJUGx1ZyAmIFBsYXkgc3VwcG9ydCBpcyBlbmFibGVkLgorCVBQQwlQb3dlclBDIGFyY2hpdGVjdHVyZSBpcyBlbmFibGVkLgorCVBQVAlQYXJhbGxlbCBwb3J0IHN1cHBvcnQgaXMgZW5hYmxlZC4KKwlQUzIJQXBwcm9wcmlhdGUgUFMvMiBzdXBwb3J0IGlzIGVuYWJsZWQuCisJUkFNCVJBTSBkaXNrIHN1cHBvcnQgaXMgZW5hYmxlZC4KKwlTMzkwCVMzOTAgYXJjaGl0ZWN0dXJlIGlzIGVuYWJsZWQuCisJU0NTSQlBcHByb3ByaWF0ZSBTQ1NJIHN1cHBvcnQgaXMgZW5hYmxlZC4KKwkJCUEgbG90IG9mIGRyaXZlcnMgaGF2ZSB0aGVpciBvcHRpb25zIGRlc2NyaWJlZCBpbnNpZGUKKwkJCXRoZSBEb2N1bWVudGF0aW9uL3Njc2kvIHN1Yi1kaXJlY3RvcnkuCisJU0VDVVJJVFkgRGlmZmVyZW50IHNlY3VyaXR5IG1vZGVscyBhcmUgZW5hYmxlZC4KKwlTRUxJTlVYIFNFTGludXggc3VwcG9ydCBpcyBlbmFibGVkLgorCUFQUEFSTU9SIEFwcEFybW9yIHN1cHBvcnQgaXMgZW5hYmxlZC4KKwlTRVJJQUwJU2VyaWFsIHN1cHBvcnQgaXMgZW5hYmxlZC4KKwlTSAlTdXBlckggYXJjaGl0ZWN0dXJlIGlzIGVuYWJsZWQuCisJU01QCVRoZSBrZXJuZWwgaXMgYW4gU01QIGtlcm5lbC4KKwlTUEFSQwlTcGFyYyBhcmNoaXRlY3R1cmUgaXMgZW5hYmxlZC4KKwlTV1NVU1AJU29mdHdhcmUgc3VzcGVuZCAoaGliZXJuYXRpb24pIGlzIGVuYWJsZWQuCisJU1VTUEVORAlTeXN0ZW0gc3VzcGVuZCBzdGF0ZXMgYXJlIGVuYWJsZWQuCisJVFBNCVRQTSBkcml2ZXJzIGFyZSBlbmFibGVkLgorCVRTCUFwcHJvcHJpYXRlIHRvdWNoc2NyZWVuIHN1cHBvcnQgaXMgZW5hYmxlZC4KKwlVTVMJVVNCIE1hc3MgU3RvcmFnZSBzdXBwb3J0IGlzIGVuYWJsZWQuCisJVVNCCVVTQiBzdXBwb3J0IGlzIGVuYWJsZWQuCisJVVNCSElECVVTQiBIdW1hbiBJbnRlcmZhY2UgRGV2aWNlIHN1cHBvcnQgaXMgZW5hYmxlZC4KKwlWNEwJVmlkZW8gRm9yIExpbnV4IHN1cHBvcnQgaXMgZW5hYmxlZC4KKwlWTU1JTyAgIERyaXZlciBmb3IgbWVtb3J5IG1hcHBlZCB2aXJ0aW8gZGV2aWNlcyBpcyBlbmFibGVkLgorCVZHQQlUaGUgVkdBIGNvbnNvbGUgaGFzIGJlZW4gZW5hYmxlZC4KKwlWVAlWaXJ0dWFsIHRlcm1pbmFsIHN1cHBvcnQgaXMgZW5hYmxlZC4KKwlXRFQJV2F0Y2hkb2cgc3VwcG9ydCBpcyBlbmFibGVkLgorCVhUCUlCTSBQQy9YVCBNRk0gaGFyZCBkaXNrIHN1cHBvcnQgaXMgZW5hYmxlZC4KKwlYODYtMzIJWDg2LTMyLCBha2EgaTM4NiBhcmNoaXRlY3R1cmUgaXMgZW5hYmxlZC4KKwlYODYtNjQJWDg2LTY0IGFyY2hpdGVjdHVyZSBpcyBlbmFibGVkLgorCQkJTW9yZSBYODYtNjQgYm9vdCBvcHRpb25zIGNhbiBiZSBmb3VuZCBpbgorCQkJRG9jdW1lbnRhdGlvbi94ODYveDg2XzY0L2Jvb3Qtb3B0aW9ucy50eHQgLgorCVg4NglFaXRoZXIgMzItYml0IG9yIDY0LWJpdCB4ODYgKHNhbWUgYXMgWDg2LTMyK1g4Ni02NCkKKwlYRU4JWGVuIHN1cHBvcnQgaXMgZW5hYmxlZAorCitJbiBhZGRpdGlvbiwgdGhlIGZvbGxvd2luZyB0ZXh0IGluZGljYXRlcyB0aGF0IHRoZSBvcHRpb246CisKKwlCVUdTPQlSZWxhdGVzIHRvIHBvc3NpYmxlIHByb2Nlc3NvciBidWdzIG9uIHRoZSBzYWlkIHByb2Nlc3Nvci4KKwlLTkwJSXMgYSBrZXJuZWwgc3RhcnQtdXAgcGFyYW1ldGVyLgorCUJPT1QJSXMgYSBib290IGxvYWRlciBwYXJhbWV0ZXIuCisKK1BhcmFtZXRlcnMgZGVub3RlZCB3aXRoIEJPT1QgYXJlIGFjdHVhbGx5IGludGVycHJldGVkIGJ5IHRoZSBib290Citsb2FkZXIsIGFuZCBoYXZlIG5vIG1lYW5pbmcgdG8gdGhlIGtlcm5lbCBkaXJlY3RseS4KK0RvIG5vdCBtb2RpZnkgdGhlIHN5bnRheCBvZiBib290IGxvYWRlciBwYXJhbWV0ZXJzIHdpdGhvdXQgZXh0cmVtZQorbmVlZCBvciBjb29yZGluYXRpb24gd2l0aCA8RG9jdW1lbnRhdGlvbi94ODYvYm9vdC50eHQ+LgorCitUaGVyZSBhcmUgYWxzbyBhcmNoLXNwZWNpZmljIGtlcm5lbC1wYXJhbWV0ZXJzIG5vdCBkb2N1bWVudGVkIGhlcmUuCitTZWUgZm9yIGV4YW1wbGUgPERvY3VtZW50YXRpb24veDg2L3g4Nl82NC9ib290LW9wdGlvbnMudHh0Pi4KKworTm90ZSB0aGF0IEFMTCBrZXJuZWwgcGFyYW1ldGVycyBsaXN0ZWQgYmVsb3cgYXJlIENBU0UgU0VOU0lUSVZFLCBhbmQgdGhhdAorYSB0cmFpbGluZyA9IG9uIHRoZSBuYW1lIG9mIGFueSBwYXJhbWV0ZXIgc3RhdGVzIHRoYXQgdGhhdCBwYXJhbWV0ZXIgd2lsbAorYmUgZW50ZXJlZCBhcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSwgd2hlcmVhcyBpdHMgYWJzZW5jZSBpbmRpY2F0ZXMgdGhhdAoraXQgd2lsbCBhcHBlYXIgYXMgYSBrZXJuZWwgYXJndW1lbnQgcmVhZGFibGUgdmlhIC9wcm9jL2NtZGxpbmUgYnkgcHJvZ3JhbXMKK3J1bm5pbmcgb25jZSB0aGUgc3lzdGVtIGlzIHVwLgorCitUaGUgbnVtYmVyIG9mIGtlcm5lbCBwYXJhbWV0ZXJzIGlzIG5vdCBsaW1pdGVkLCBidXQgdGhlIGxlbmd0aCBvZiB0aGUKK2NvbXBsZXRlIGNvbW1hbmQgbGluZSAocGFyYW1ldGVycyBpbmNsdWRpbmcgc3BhY2VzIGV0Yy4pIGlzIGxpbWl0ZWQgdG8KK2EgZml4ZWQgbnVtYmVyIG9mIGNoYXJhY3RlcnMuIFRoaXMgbGltaXQgZGVwZW5kcyBvbiB0aGUgYXJjaGl0ZWN0dXJlCithbmQgaXMgYmV0d2VlbiAyNTYgYW5kIDQwOTYgY2hhcmFjdGVycy4gSXQgaXMgZGVmaW5lZCBpbiB0aGUgZmlsZQorLi9pbmNsdWRlL2FzbS9zZXR1cC5oIGFzIENPTU1BTkRfTElORV9TSVpFLgorCitGaW5hbGx5LCB0aGUgW0tNR10gc3VmZml4IGlzIGNvbW1vbmx5IGRlc2NyaWJlZCBhZnRlciBhIG51bWJlciBvZiBrZXJuZWwKK3BhcmFtZXRlciB2YWx1ZXMuIFRoZXNlICdLJywgJ00nLCBhbmQgJ0cnIGxldHRlcnMgcmVwcmVzZW50IHRoZSBfYmluYXJ5XworbXVsdGlwbGllcnMgJ0tpbG8nLCAnTWVnYScsIGFuZCAnR2lnYScsIGVxdWFsbGluZyAyXjEwLCAyXjIwLCBhbmQgMl4zMAorYnl0ZXMgcmVzcGVjdGl2ZWx5LiBTdWNoIGxldHRlciBzdWZmaXhlcyBjYW4gYWxzbyBiZSBlbnRpcmVseSBvbWl0dGVkLgorCisKKwlhY3BpPQkJW0hXLEFDUEksWDg2LEFSTTY0XQorCQkJQWR2YW5jZWQgQ29uZmlndXJhdGlvbiBhbmQgUG93ZXIgSW50ZXJmYWNlCisJCQlGb3JtYXQ6IHsgZm9yY2UgfCBvZmYgfCBzdHJpY3QgfCBub2lycSB8IHJzZHQgfAorCQkJCSAgY29weV9kc2R0IH0KKwkJCWZvcmNlIC0tIGVuYWJsZSBBQ1BJIGlmIGRlZmF1bHQgd2FzIG9mZgorCQkJb2ZmIC0tIGRpc2FibGUgQUNQSSBpZiBkZWZhdWx0IHdhcyBvbgorCQkJbm9pcnEgLS0gZG8gbm90IHVzZSBBQ1BJIGZvciBJUlEgcm91dGluZworCQkJc3RyaWN0IC0tIEJlIGxlc3MgdG9sZXJhbnQgb2YgcGxhdGZvcm1zIHRoYXQgYXJlIG5vdAorCQkJCXN0cmljdGx5IEFDUEkgc3BlY2lmaWNhdGlvbiBjb21wbGlhbnQuCisJCQlyc2R0IC0tIHByZWZlciBSU0RUIG92ZXIgKGRlZmF1bHQpIFhTRFQKKwkJCWNvcHlfZHNkdCAtLSBjb3B5IERTRFQgdG8gbWVtb3J5CisJCQlGb3IgQVJNNjQsIE9OTFkgImFjcGk9b2ZmIiBvciAiYWNwaT1mb3JjZSIgYXJlIGF2YWlsYWJsZQorCisJCQlTZWUgYWxzbyBEb2N1bWVudGF0aW9uL3Bvd2VyL3J1bnRpbWVfcG0udHh0LCBwY2k9bm9hY3BpCisKKwlhY3BpX2FwaWNfaW5zdGFuY2U9CVtBQ1BJLCBJT0FQSUNdCisJCQlGb3JtYXQ6IDxpbnQ+CisJCQkyOiB1c2UgMm5kIEFQSUMgdGFibGUsIGlmIGF2YWlsYWJsZQorCQkJMSwwOiB1c2UgMXN0IEFQSUMgdGFibGUKKwkJCWRlZmF1bHQ6IDAKKworCWFjcGlfYmFja2xpZ2h0PQlbSFcsQUNQSV0KKwkJCWFjcGlfYmFja2xpZ2h0PXZlbmRvcgorCQkJYWNwaV9iYWNrbGlnaHQ9dmlkZW8KKwkJCUlmIHNldCB0byB2ZW5kb3IsIHByZWZlciB2ZW5kb3Igc3BlY2lmaWMgZHJpdmVyCisJCQkoZS5nLiB0aGlua3BhZF9hY3BpLCBzb255X2FjcGksIGV0Yy4pIGluc3RlYWQKKwkJCW9mIHRoZSBBQ1BJIHZpZGVvLmtvIGRyaXZlci4KKworCWFjcGljYV9ub19yZXR1cm5fcmVwYWlyIFtIVywgQUNQSV0KKwkJCURpc2FibGUgQU1MIHByZWRlZmluZWQgdmFsaWRhdGlvbiBtZWNoYW5pc20KKwkJCVRoaXMgbWVjaGFuaXNtIGNhbiByZXBhaXIgdGhlIGV2YWx1YXRpb24gcmVzdWx0IHRvIG1ha2UKKwkJCXRoZSByZXR1cm4gb2JqZWN0cyBtb3JlIEFDUEkgc3BlY2lmaWNhdGlvbiBjb21wbGlhbnQuCisJCQlUaGlzIG9wdGlvbiBpcyB1c2VmdWwgZm9yIGRldmVsb3BlcnMgdG8gaWRlbnRpZnkgdGhlCisJCQlyb290IGNhdXNlIG9mIGFuIEFNTCBpbnRlcnByZXRlciBpc3N1ZSB3aGVuIHRoZSBpc3N1ZQorCQkJaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIHRoZSByZXBhaXIgbWVjaGFuaXNtLgorCisJYWNwaS5kZWJ1Z19sYXllcj0JW0hXLEFDUEksQUNQSV9ERUJVR10KKwlhY3BpLmRlYnVnX2xldmVsPQlbSFcsQUNQSSxBQ1BJX0RFQlVHXQorCQkJRm9ybWF0OiA8aW50PgorCQkJQ09ORklHX0FDUElfREVCVUcgbXVzdCBiZSBlbmFibGVkIHRvIHByb2R1Y2UgYW55IEFDUEkKKwkJCWRlYnVnIG91dHB1dC4gIEJpdHMgaW4gZGVidWdfbGF5ZXIgY29ycmVzcG9uZCB0byBhCisJCQlfQ09NUE9ORU5UIGluIGFuIEFDUEkgc291cmNlIGZpbGUsIGUuZy4sCisJCQkgICAgI2RlZmluZSBfQ09NUE9ORU5UIEFDUElfUENJX0NPTVBPTkVOVAorCQkJQml0cyBpbiBkZWJ1Z19sZXZlbCBjb3JyZXNwb25kIHRvIGEgbGV2ZWwgaW4KKwkJCUFDUElfREVCVUdfUFJJTlQgc3RhdGVtZW50cywgZS5nLiwKKwkJCSAgICBBQ1BJX0RFQlVHX1BSSU5UKChBQ1BJX0RCX0lORk8sIC4uLgorCQkJVGhlIGRlYnVnX2xldmVsIG1hc2sgZGVmYXVsdHMgdG8gImluZm8iLiAgU2VlCisJCQlEb2N1bWVudGF0aW9uL2FjcGkvZGVidWcudHh0IGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0CisJCQlkZWJ1ZyBsYXllcnMgYW5kIGxldmVscy4KKworCQkJRW5hYmxlIHByb2Nlc3NvciBkcml2ZXIgaW5mbyBtZXNzYWdlczoKKwkJCSAgICBhY3BpLmRlYnVnX2xheWVyPTB4MjAwMDAwMDAKKwkJCUVuYWJsZSBQQ0kvUENJIGludGVycnVwdCByb3V0aW5nIGluZm8gbWVzc2FnZXM6CisJCQkgICAgYWNwaS5kZWJ1Z19sYXllcj0weDQwMDAwMAorCQkJRW5hYmxlIEFNTCAiRGVidWciIG91dHB1dCwgaS5lLiwgc3RvcmVzIHRvIHRoZSBEZWJ1ZworCQkJb2JqZWN0IHdoaWxlIGludGVycHJldGluZyBBTUw6CisJCQkgICAgYWNwaS5kZWJ1Z19sYXllcj0weGZmZmZmZmZmIGFjcGkuZGVidWdfbGV2ZWw9MHgyCisJCQlFbmFibGUgYWxsIG1lc3NhZ2VzIHJlbGF0ZWQgdG8gQUNQSSBoYXJkd2FyZToKKwkJCSAgICBhY3BpLmRlYnVnX2xheWVyPTB4MiBhY3BpLmRlYnVnX2xldmVsPTB4ZmZmZmZmZmYKKworCQkJU29tZSB2YWx1ZXMgcHJvZHVjZSBzbyBtdWNoIG91dHB1dCB0aGF0IHRoZSBzeXN0ZW0gaXMKKwkJCXVudXNhYmxlLiAgVGhlICJsb2dfYnVmX2xlbiIgcGFyYW1ldGVyIG1heSBiZSB1c2VmdWwKKwkJCWlmIHlvdSBuZWVkIHRvIGNhcHR1cmUgbW9yZSBvdXRwdXQuCisKKwlhY3BpX2VuZm9yY2VfcmVzb3VyY2VzPQlbQUNQSV0KKwkJCXsgc3RyaWN0IHwgbGF4IHwgbm8gfQorCQkJQ2hlY2sgZm9yIHJlc291cmNlIGNvbmZsaWN0cyBiZXR3ZWVuIG5hdGl2ZSBkcml2ZXJzCisJCQlhbmQgQUNQSSBPcGVyYXRpb25SZWdpb25zIChTeXN0ZW1JTyBhbmQgU3lzdGVtTWVtb3J5CisJCQlvbmx5KS4gSU8gcG9ydHMgYW5kIG1lbW9yeSBkZWNsYXJlZCBpbiBBQ1BJIG1pZ2h0IGJlCisJCQl1c2VkIGJ5IHRoZSBBQ1BJIHN1YnN5c3RlbSBpbiBhcmJpdHJhcnkgQU1MIGNvZGUgYW5kCisJCQljYW4gaW50ZXJmZXJlIHdpdGggbGVnYWN5IGRyaXZlcnMuCisJCQlzdHJpY3QgKGRlZmF1bHQpOiBhY2Nlc3MgdG8gcmVzb3VyY2VzIGNsYWltZWQgYnkgQUNQSQorCQkJaXMgZGVuaWVkOyBsZWdhY3kgZHJpdmVycyB0cnlpbmcgdG8gYWNjZXNzIHJlc2VydmVkCisJCQlyZXNvdXJjZXMgd2lsbCBmYWlsIHRvIGJpbmQgdG8gZGV2aWNlIHVzaW5nIHRoZW0uCisJCQlsYXg6IGFjY2VzcyB0byByZXNvdXJjZXMgY2xhaW1lZCBieSBBQ1BJIGlzIGFsbG93ZWQ7CisJCQlsZWdhY3kgZHJpdmVycyB0cnlpbmcgdG8gYWNjZXNzIHJlc2VydmVkIHJlc291cmNlcworCQkJd2lsbCBiaW5kIHN1Y2Nlc3NmdWxseSBidXQgYSB3YXJuaW5nIG1lc3NhZ2UgaXMgbG9nZ2VkLgorCQkJbm86IEFDUEkgT3BlcmF0aW9uUmVnaW9ucyBhcmUgbm90IG1hcmtlZCBhcyByZXNlcnZlZCwKKwkJCW5vIGZ1cnRoZXIgY2hlY2tzIGFyZSBwZXJmb3JtZWQuCisKKwlhY3BpX2ZvcmNlX3RhYmxlX3ZlcmlmaWNhdGlvbglbSFcsQUNQSV0KKwkJCUVuYWJsZSB0YWJsZSBjaGVja3N1bSB2ZXJpZmljYXRpb24gZHVyaW5nIGVhcmx5IHN0YWdlLgorCQkJQnkgZGVmYXVsdCwgdGhpcyBpcyBkaXNhYmxlZCBkdWUgdG8geDg2IGVhcmx5IG1hcHBpbmcKKwkJCXNpemUgbGltaXRhdGlvbi4KKworCWFjcGlfaXJxX2JhbGFuY2UgW0hXLEFDUEldCisJCQlBQ1BJIHdpbGwgYmFsYW5jZSBhY3RpdmUgSVJRcworCQkJZGVmYXVsdCBpbiBBUElDIG1vZGUKKworCWFjcGlfaXJxX25vYmFsYW5jZSBbSFcsQUNQSV0KKwkJCUFDUEkgd2lsbCBub3QgbW92ZSBhY3RpdmUgSVJRcyAoZGVmYXVsdCkKKwkJCWRlZmF1bHQgaW4gUElDIG1vZGUKKworCWFjcGlfaXJxX2lzYT0JW0hXLEFDUEldIElmIGlycV9iYWxhbmNlLCBtYXJrIGxpc3RlZCBJUlFzIHVzZWQgYnkgSVNBCisJCQlGb3JtYXQ6IDxpcnE+LDxpcnE+Li4uCisKKwlhY3BpX2lycV9wY2k9CVtIVyxBQ1BJXSBJZiBpcnFfYmFsYW5jZSwgY2xlYXIgbGlzdGVkIElSUXMgZm9yCisJCQl1c2UgYnkgUENJCisJCQlGb3JtYXQ6IDxpcnE+LDxpcnE+Li4uCisKKwlhY3BpX25vX2F1dG9fc2VyaWFsaXplCVtIVyxBQ1BJXQorCQkJRGlzYWJsZSBhdXRvLXNlcmlhbGl6YXRpb24gb2YgQU1MIG1ldGhvZHMKKwkJCUFNTCBjb250cm9sIG1ldGhvZHMgdGhhdCBjb250YWluIHRoZSBvcGNvZGVzIHRvIGNyZWF0ZQorCQkJbmFtZWQgb2JqZWN0cyB3aWxsIGJlIG1hcmtlZCBhcyAiU2VyaWFsaXplZCIgYnkgdGhlCisJCQlhdXRvLXNlcmlhbGl6YXRpb24gZmVhdHVyZS4KKwkJCVRoaXMgZmVhdHVyZSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCisJCQlUaGlzIG9wdGlvbiBhbGxvd3MgdG8gdHVybiBvZmYgdGhlIGZlYXR1cmUuCisKKwlhY3BpX25vX21lbWhvdHBsdWcgW0FDUEldIERpc2FibGUgbWVtb3J5IGhvdHBsdWcuICBVc2VmdWwgZm9yIGtkdW1wCisJCQkgICBrZXJuZWxzLgorCisJYWNwaV9ub19zdGF0aWNfc3NkdAlbSFcsQUNQSV0KKwkJCURpc2FibGUgaW5zdGFsbGF0aW9uIG9mIHN0YXRpYyBTU0RUcyBhdCBlYXJseSBib290IHRpbWUKKwkJCUJ5IGRlZmF1bHQsIFNTRFRzIGNvbnRhaW5lZCBpbiB0aGUgUlNEVC9YU0RUIHdpbGwgYmUKKwkJCWluc3RhbGxlZCBhdXRvbWF0aWNhbGx5IGFuZCB0aGV5IHdpbGwgYXBwZWFyIHVuZGVyCisJCQkvc3lzL2Zpcm13YXJlL2FjcGkvdGFibGVzLgorCQkJVGhpcyBvcHRpb24gdHVybnMgb2ZmIHRoaXMgZmVhdHVyZS4KKwkJCU5vdGUgdGhhdCBzcGVjaWZ5aW5nIHRoaXMgb3B0aW9uIGRvZXMgbm90IGFmZmVjdAorCQkJZHluYW1pYyB0YWJsZSBpbnN0YWxsYXRpb24gd2hpY2ggd2lsbCBpbnN0YWxsIFNTRFQKKwkJCXRhYmxlcyB0byAvc3lzL2Zpcm13YXJlL2FjcGkvdGFibGVzL2R5bmFtaWMuCisKKwlhY3BpX3JzZHA9CVtBQ1BJLEVGSSxLRVhFQ10KKwkJCVBhc3MgdGhlIFJTRFAgYWRkcmVzcyB0byB0aGUga2VybmVsLCBtb3N0bHkgdXNlZAorCQkJb24gbWFjaGluZXMgcnVubmluZyBFRkkgcnVudGltZSBzZXJ2aWNlIHRvIGJvb3QgdGhlCisJCQlzZWNvbmQga2VybmVsIGZvciBrZHVtcC4KKworCWFjcGlfb3NfbmFtZT0JW0hXLEFDUEldIFRlbGwgQUNQSSBCSU9TIHRoZSBuYW1lIG9mIHRoZSBPUworCQkJRm9ybWF0OiBUbyBzcG9vZiBhcyBXaW5kb3dzIDk4OiA9Ik1pY3Jvc29mdCBXaW5kb3dzIgorCisJYWNwaV9yZXZfb3ZlcnJpZGUgW0FDUEldIE92ZXJyaWRlIHRoZSBfUkVWIG9iamVjdCB0byByZXR1cm4gNSAoaW5zdGVhZAorCQkJb2YgMiB3aGljaCBpcyBtYW5kYXRlZCBieSBBQ1BJIDYpIGFzIHRoZSBzdXBwb3J0ZWQgQUNQSQorCQkJc3BlY2lmaWNhdGlvbiByZXZpc2lvbiAod2hlbiB1c2luZyB0aGlzIHN3aXRjaCwgaXQgbWF5CisJCQliZSBuZWNlc3NhcnkgdG8gY2Fycnkgb3V0IGEgY29sZCByZWJvb3QgX3R3aWNlXyBpbiBhCisJCQlyb3cgdG8gbWFrZSBpdCB0YWtlIGVmZmVjdCBvbiB0aGUgcGxhdGZvcm0gZmlybXdhcmUpLgorCisJYWNwaV9vc2k9CVtIVyxBQ1BJXSBNb2RpZnkgbGlzdCBvZiBzdXBwb3J0ZWQgT1MgaW50ZXJmYWNlIHN0cmluZ3MKKwkJCWFjcGlfb3NpPSJzdHJpbmcxIgkjIGFkZCBzdHJpbmcxCisJCQlhY3BpX29zaT0iIXN0cmluZzIiCSMgcmVtb3ZlIHN0cmluZzIKKwkJCWFjcGlfb3NpPSEqCQkjIHJlbW92ZSBhbGwgc3RyaW5ncworCQkJYWNwaV9vc2k9IQkJIyBkaXNhYmxlIGFsbCBidWlsdC1pbiBPUyB2ZW5kb3IKKwkJCQkJCSAgc3RyaW5ncworCQkJYWNwaV9vc2k9CQkjIGRpc2FibGUgYWxsIHN0cmluZ3MKKworCQkJJ2FjcGlfb3NpPSEnIGNhbiBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggc2luZ2xlIG9yCisJCQltdWx0aXBsZSAnYWNwaV9vc2k9InN0cmluZzEiJyB0byBzdXBwb3J0IHNwZWNpZmljIE9TCisJCQl2ZW5kb3Igc3RyaW5nKHMpLiAgTm90ZSB0aGF0IHN1Y2ggY29tbWFuZCBjYW4gb25seQorCQkJYWZmZWN0IHRoZSBkZWZhdWx0IHN0YXRlIG9mIHRoZSBPUyB2ZW5kb3Igc3RyaW5ncywgdGh1cworCQkJaXQgY2Fubm90IGFmZmVjdCB0aGUgZGVmYXVsdCBzdGF0ZSBvZiB0aGUgZmVhdHVyZSBncm91cAorCQkJc3RyaW5ncyBhbmQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIE9TIHZlbmRvciBzdHJpbmdzLAorCQkJc3BlY2lmeWluZyBpdCBtdWx0aXBsZSB0aW1lcyB0aHJvdWdoIGtlcm5lbCBjb21tYW5kIGxpbmUKKwkJCWlzIG1lYW5pbmdsZXNzLiAgVGhpcyBjb21tYW5kIGlzIHVzZWZ1bCB3aGVuIG9uZSBkbyBub3QKKwkJCWNhcmUgYWJvdXQgdGhlIHN0YXRlIG9mIHRoZSBmZWF0dXJlIGdyb3VwIHN0cmluZ3Mgd2hpY2gKKwkJCXNob3VsZCBiZSBjb250cm9sbGVkIGJ5IHRoZSBPU1BNLgorCQkJRXhhbXBsZXM6CisJCQkgIDEuICdhY3BpX29zaT0hIGFjcGlfb3NpPSJXaW5kb3dzIDIwMDAiJyBpcyBlcXVpdmFsZW50CisJCQkgICAgIHRvICdhY3BpX29zaT0iV2luZG93cyAyMDAwIiBhY3BpX29zaT0hJywgdGhleSBhbGwKKwkJCSAgICAgY2FuIG1ha2UgJ19PU0koIldpbmRvd3MgMjAwMCIpJyBUUlVFLgorCisJCQknYWNwaV9vc2k9JyBjYW5ub3QgYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIG90aGVyCisJCQknYWNwaV9vc2k9JyBjb21tYW5kIGxpbmVzLCB0aGUgX09TSSBtZXRob2Qgd2lsbCBub3QKKwkJCWV4aXN0IGluIHRoZSBBQ1BJIG5hbWVzcGFjZS4gIE5PVEUgdGhhdCBzdWNoIGNvbW1hbmQgY2FuCisJCQlvbmx5IGFmZmVjdCB0aGUgX09TSSBzdXBwb3J0IHN0YXRlLCB0aHVzIHNwZWNpZnlpbmcgaXQKKwkJCW11bHRpcGxlIHRpbWVzIHRocm91Z2gga2VybmVsIGNvbW1hbmQgbGluZSBpcyBhbHNvCisJCQltZWFuaW5nbGVzcy4KKwkJCUV4YW1wbGVzOgorCQkJICAxLiAnYWNwaV9vc2k9JyBjYW4gbWFrZSAnQ29uZFJlZk9mKF9PU0ksIExvY2FsMSknCisJCQkgICAgIEZBTFNFLgorCisJCQknYWNwaV9vc2k9ISonIGNhbiBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggc2luZ2xlIG9yCisJCQltdWx0aXBsZSAnYWNwaV9vc2k9InN0cmluZzEiJyB0byBzdXBwb3J0IHNwZWNpZmljCisJCQlzdHJpbmcocykuICBOb3RlIHRoYXQgc3VjaCBjb21tYW5kIGNhbiBhZmZlY3QgdGhlCisJCQljdXJyZW50IHN0YXRlIG9mIGJvdGggdGhlIE9TIHZlbmRvciBzdHJpbmdzIGFuZCB0aGUKKwkJCWZlYXR1cmUgZ3JvdXAgc3RyaW5ncywgdGh1cyBzcGVjaWZ5aW5nIGl0IG11bHRpcGxlIHRpbWVzCisJCQl0aHJvdWdoIGtlcm5lbCBjb21tYW5kIGxpbmUgaXMgbWVhbmluZ2Z1bC4gIEJ1dCBpdCBtYXkKKwkJCXN0aWxsIG5vdCBhYmxlIHRvIGFmZmVjdCB0aGUgZmluYWwgc3RhdGUgb2YgYSBzdHJpbmcgaWYKKwkJCXRoZXJlIGFyZSBxdWlya3MgcmVsYXRlZCB0byB0aGlzIHN0cmluZy4gIFRoaXMgY29tbWFuZAorCQkJaXMgdXNlZnVsIHdoZW4gb25lIHdhbnQgdG8gY29udHJvbCB0aGUgc3RhdGUgb2YgdGhlCisJCQlmZWF0dXJlIGdyb3VwIHN0cmluZ3MgdG8gZGVidWcgQklPUyBpc3N1ZXMgcmVsYXRlZCB0bworCQkJdGhlIE9TUE0gZmVhdHVyZXMuCisJCQlFeGFtcGxlczoKKwkJCSAgMS4gJ2FjcGlfb3NpPSJNb2R1bGUgRGV2aWNlIiBhY3BpX29zaT0hKicgY2FuIG1ha2UKKwkJCSAgICAgJ19PU0koIk1vZHVsZSBEZXZpY2UiKScgRkFMU0UuCisJCQkgIDIuICdhY3BpX29zaT0hKiBhY3BpX29zaT0iTW9kdWxlIERldmljZSInIGNhbiBtYWtlCisJCQkgICAgICdfT1NJKCJNb2R1bGUgRGV2aWNlIiknIFRSVUUuCisJCQkgIDMuICdhY3BpX29zaT0hIGFjcGlfb3NpPSEqIGFjcGlfb3NpPSJXaW5kb3dzIDIwMDAiJyBpcworCQkJICAgICBlcXVpdmFsZW50IHRvCisJCQkgICAgICdhY3BpX29zaT0hKiBhY3BpX29zaT0hIGFjcGlfb3NpPSJXaW5kb3dzIDIwMDAiJworCQkJICAgICBhbmQKKwkJCSAgICAgJ2FjcGlfb3NpPSEqIGFjcGlfb3NpPSJXaW5kb3dzIDIwMDAiIGFjcGlfb3NpPSEnLAorCQkJICAgICB0aGV5IGFsbCB3aWxsIG1ha2UgJ19PU0koIldpbmRvd3MgMjAwMCIpJyBUUlVFLgorCisJYWNwaV9wbV9nb29kCVtYODZdCisJCQlPdmVycmlkZSB0aGUgcG10aW1lciBidWcgZGV0ZWN0aW9uOiBmb3JjZSB0aGUga2VybmVsCisJCQl0byBhc3N1bWUgdGhhdCB0aGlzIG1hY2hpbmUncyBwbXRpbWVyIGxhdGNoZXMgaXRzIHZhbHVlCisJCQlhbmQgYWx3YXlzIHJldHVybnMgZ29vZCB2YWx1ZXMuCisKKwlhY3BpX3NjaT0JW0hXLEFDUEldIEFDUEkgU3lzdGVtIENvbnRyb2wgSW50ZXJydXB0IHRyaWdnZXIgbW9kZQorCQkJRm9ybWF0OiB7IGxldmVsIHwgZWRnZSB8IGhpZ2ggfCBsb3cgfQorCisJYWNwaV9za2lwX3RpbWVyX292ZXJyaWRlIFtIVyxBQ1BJXQorCQkJUmVjb2duaXplIGFuZCBpZ25vcmUgSVJRMC9waW4yIEludGVycnVwdCBPdmVycmlkZS4KKwkJCUZvciBicm9rZW4gbkZvcmNlMiBCSU9TIHJlc3VsdGluZyBpbiBYVC1QSUMgdGltZXIuCisKKwlhY3BpX3NsZWVwPQlbSFcsQUNQSV0gU2xlZXAgb3B0aW9ucworCQkJRm9ybWF0OiB7IHMzX2Jpb3MsIHMzX21vZGUsIHMzX2JlZXAsIHM0X25vaHdzaWcsCisJCQkJICBvbGRfb3JkZXJpbmcsIG5vbnZzLCBzY2lfZm9yY2VfZW5hYmxlIH0KKwkJCVNlZSBEb2N1bWVudGF0aW9uL3Bvd2VyL3ZpZGVvLnR4dCBmb3IgaW5mb3JtYXRpb24gb24KKwkJCXMzX2Jpb3MgYW5kIHMzX21vZGUuCisJCQlzM19iZWVwIGlzIGZvciBkZWJ1Z2dpbmc7IGl0IG1ha2VzIHRoZSBQQydzIHNwZWFrZXIgYmVlcAorCQkJYXMgc29vbiBhcyB0aGUga2VybmVsJ3MgcmVhbC1tb2RlIGVudHJ5IHBvaW50IGlzIGNhbGxlZC4KKwkJCXM0X25vaHdzaWcgcHJldmVudHMgQUNQSSBoYXJkd2FyZSBzaWduYXR1cmUgZnJvbSBiZWluZworCQkJdXNlZCBkdXJpbmcgcmVzdW1lIGZyb20gaGliZXJuYXRpb24uCisJCQlvbGRfb3JkZXJpbmcgY2F1c2VzIHRoZSBBQ1BJIDEuMCBvcmRlcmluZyBvZiB0aGUgX1BUUworCQkJY29udHJvbCBtZXRob2QsIHdpdGggcmVzcGVjdCB0byBwdXR0aW5nIGRldmljZXMgaW50bworCQkJbG93IHBvd2VyIHN0YXRlcywgdG8gYmUgZW5mb3JjZWQgKHRoZSBBQ1BJIDIuMCBvcmRlcmluZworCQkJb2YgX1BUUyBpcyB1c2VkIGJ5IGRlZmF1bHQpLgorCQkJbm9udnMgcHJldmVudHMgdGhlIGtlcm5lbCBmcm9tIHNhdmluZy9yZXN0b3JpbmcgdGhlCisJCQlBQ1BJIE5WUyBtZW1vcnkgZHVyaW5nIHN1c3BlbmQvaGliZXJuYXRpb24gYW5kIHJlc3VtZS4KKwkJCXNjaV9mb3JjZV9lbmFibGUgY2F1c2VzIHRoZSBrZXJuZWwgdG8gc2V0IFNDSV9FTiBkaXJlY3RseQorCQkJb24gcmVzdW1lIGZyb20gUzEvUzMgKHdoaWNoIGlzIGFnYWluc3QgdGhlIEFDUEkgc3BlYywKKwkJCWJ1dCBzb21lIGJyb2tlbiBzeXN0ZW1zIGRvbid0IHdvcmsgd2l0aG91dCBpdCkuCisKKwlhY3BpX3VzZV90aW1lcl9vdmVycmlkZSBbSFcsQUNQSV0KKwkJCVVzZSB0aW1lciBvdmVycmlkZS4gRm9yIHNvbWUgYnJva2VuIE52aWRpYSBORjUgYm9hcmRzCisJCQl0aGF0IHJlcXVpcmUgYSB0aW1lciBvdmVycmlkZSwgYnV0IGRvbid0IGhhdmUgSFBFVAorCisJYWRkX2VmaV9tZW1tYXAJW0VGSTsgWDg2XSBJbmNsdWRlIEVGSSBtZW1vcnkgbWFwIGluCisJCQlrZXJuZWwncyBtYXAgb2YgYXZhaWxhYmxlIHBoeXNpY2FsIFJBTS4KKworCWFncD0JCVtBR1BdCisJCQl7IG9mZiB8IHRyeV91bnN1cHBvcnRlZCB9CisJCQlvZmY6IGRpc2FibGUgQUdQIHN1cHBvcnQKKwkJCXRyeV91bnN1cHBvcnRlZDogdHJ5IHRvIGRyaXZlIHVuc3VwcG9ydGVkIGNoaXBzZXRzCisJCQkJKG1heSBjcmFzaCBjb21wdXRlciBvciBjYXVzZSBkYXRhIGNvcnJ1cHRpb24pCisKKwlBTFNBCQlbSFcsQUxTQV0KKwkJCVNlZSBEb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvYWxzYS1wYXJhbWV0ZXJzLnR4dAorCisJYWxpZ25tZW50PQlbS05MLEFSTV0KKwkJCUFsbG93IHRoZSBkZWZhdWx0IHVzZXJzcGFjZSBhbGlnbm1lbnQgZmF1bHQgaGFuZGxlcgorCQkJYmVoYXZpb3VyIHRvIGJlIHNwZWNpZmllZC4gIEJpdCAwIGVuYWJsZXMgd2FybmluZ3MsCisJCQliaXQgMSBlbmFibGVzIGZpeHVwcywgYW5kIGJpdCAyIHNlbmRzIGEgc2VnZmF1bHQuCisKKwlhbGlnbl92YV9hZGRyPQlbWDg2LTY0XQorCQkJQWxpZ24gdmlydHVhbCBhZGRyZXNzZXMgYnkgY2xlYXJpbmcgc2xpY2UgWzE0OjEyXSB3aGVuCisJCQlhbGxvY2F0aW5nIGEgVk1BIGF0IHByb2Nlc3MgY3JlYXRpb24gdGltZS4gVGhpcyBvcHRpb24KKwkJCWdpdmVzIHlvdSB1cCB0byAzJSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBvbiBBTUQgRjE1aAorCQkJbWFjaGluZXMgKHdoZXJlIGl0IGlzIGVuYWJsZWQgYnkgZGVmYXVsdCkgZm9yIGEKKwkJCUNQVS1pbnRlbnNpdmUgc3R5bGUgYmVuY2htYXJrLCBhbmQgaXQgY2FuIHZhcnkgaGlnaGx5IGluCisJCQlhIG1pY3JvYmVuY2htYXJrIGRlcGVuZGluZyBvbiB3b3JrbG9hZCBhbmQgY29tcGlsZXIuCisKKwkJCTMyOiBvbmx5IGZvciAzMi1iaXQgcHJvY2Vzc2VzCisJCQk2NDogb25seSBmb3IgNjQtYml0IHByb2Nlc3NlcworCQkJb246IGVuYWJsZSBmb3IgYm90aCAzMi0gYW5kIDY0LWJpdCBwcm9jZXNzZXMKKwkJCW9mZjogZGlzYWJsZSBmb3IgYm90aCAzMi0gYW5kIDY0LWJpdCBwcm9jZXNzZXMKKworCWFsbG9jX3NuYXBzaG90CVtGVFJBQ0VdCisJCQlBbGxvY2F0ZSB0aGUgZnRyYWNlIHNuYXBzaG90IGJ1ZmZlciBvbiBib290IHVwIHdoZW4gdGhlCisJCQltYWluIGJ1ZmZlciBpcyBhbGxvY2F0ZWQuIFRoaXMgaXMgaGFuZHkgaWYgZGVidWdnaW5nCisJCQlhbmQgeW91IG5lZWQgdG8gdXNlIHRyYWNpbmdfc25hcHNob3QoKSBvbiBib290IHVwLCBhbmQKKwkJCWRvIG5vdCB3YW50IHRvIHVzZSB0cmFjaW5nX3NuYXBzaG90X2FsbG9jKCkgYXMgaXQgbmVlZHMKKwkJCXRvIGJlIGRvbmUgd2hlcmUgR0ZQX0tFUk5FTCBhbGxvY2F0aW9ucyBhcmUgYWxsb3dlZC4KKworCWFtZF9pb21tdT0JW0hXLFg4Ni02NF0KKwkJCVBhc3MgcGFyYW1ldGVycyB0byB0aGUgQU1EIElPTU1VIGRyaXZlciBpbiB0aGUgc3lzdGVtLgorCQkJUG9zc2libGUgdmFsdWVzIGFyZToKKwkJCWZ1bGxmbHVzaCAtIGVuYWJsZSBmbHVzaGluZyBvZiBJTy9UTEIgZW50cmllcyB3aGVuCisJCQkJICAgIHRoZXkgYXJlIHVubWFwcGVkLiBPdGhlcndpc2UgdGhleSBhcmUKKwkJCQkgICAgZmx1c2hlZCBiZWZvcmUgdGhleSB3aWxsIGJlIHJldXNlZCwgd2hpY2gKKwkJCQkgICAgaXMgYSBsb3Qgb2YgZmFzdGVyCisJCQlvZmYJICAtIGRvIG5vdCBpbml0aWFsaXplIGFueSBBTUQgSU9NTVUgZm91bmQgaW4KKwkJCQkgICAgdGhlIHN5c3RlbQorCQkJZm9yY2VfaXNvbGF0aW9uIC0gRm9yY2UgZGV2aWNlIGlzb2xhdGlvbiBmb3IgYWxsCisJCQkJCSAgZGV2aWNlcy4gVGhlIElPTU1VIGRyaXZlciBpcyBub3QKKwkJCQkJICBhbGxvd2VkIGFueW1vcmUgdG8gbGlmdCBpc29sYXRpb24KKwkJCQkJICByZXF1aXJlbWVudHMgYXMgbmVlZGVkLiBUaGlzIG9wdGlvbgorCQkJCQkgIGRvZXMgbm90IG92ZXJyaWRlIGlvbW11PXB0CisKKwlhbWRfaW9tbXVfZHVtcD0JW0hXLFg4Ni02NF0KKwkJCUVuYWJsZSBBTUQgSU9NTVUgZHJpdmVyIG9wdGlvbiB0byBkdW1wIHRoZSBBQ1BJIHRhYmxlCisJCQlmb3IgQU1EIElPTU1VLiBXaXRoIHRoaXMgb3B0aW9uIGVuYWJsZWQsIEFNRCBJT01NVQorCQkJZHJpdmVyIHdpbGwgcHJpbnQgQUNQSSB0YWJsZXMgZm9yIEFNRCBJT01NVSBkdXJpbmcKKwkJCUlPTU1VIGluaXRpYWxpemF0aW9uLgorCisJYW1pam95Lm1hcD0JW0hXLEpPWV0gQW1pZ2Egam95c3RpY2sgc3VwcG9ydAorCQkJTWFwIG9mIGRldmljZXMgYXR0YWNoZWQgdG8gSk9ZMERBVCBhbmQgSk9ZMURBVAorCQkJRm9ybWF0OiA8YT4sPGI+CisJCQlTZWUgYWxzbyBEb2N1bWVudGF0aW9uL2lucHV0L2pveXN0aWNrLnR4dAorCisJYW5hbG9nLm1hcD0JW0hXLEpPWV0gQW5hbG9nIGpveXN0aWNrIGFuZCBnYW1lcGFkIHN1cHBvcnQKKwkJCVNwZWNpZmllcyB0eXBlIG9yIGNhcGFiaWxpdGllcyBvZiBhbiBhbmFsb2cgam95c3RpY2sKKwkJCWNvbm5lY3RlZCB0byBvbmUgb2YgMTYgZ2FtZXBvcnRzCisJCQlGb3JtYXQ6IDx0eXBlMT4sPHR5cGUyPiwuLjx0eXBlMTY+CisKKwlhcGM9CQlbSFcsU1BBUkNdCisJCQlQb3dlciBtYW5hZ2VtZW50IGZ1bmN0aW9ucyAoU1BBUkNzdGF0aW9uLTQvNSArIGRlcml2LikKKwkJCUZvcm1hdDogbm9pZGxlCisJCQlEaXNhYmxlIEFQQyBDUFUgc3RhbmRieSBzdXBwb3J0LiBTUEFSQ3N0YXRpb24tRm94IGRvZXMKKwkJCW5vdCBwbGF5IHdlbGwgd2l0aCBBUEMgQ1BVIGlkbGUgLSBkaXNhYmxlIGl0IGlmIHlvdSBoYXZlCisJCQlBUEMgYW5kIHlvdXIgc3lzdGVtIGNyYXNoZXMgcmFuZG9tbHkuCisKKwlhcGljPQkJW0FQSUMsWDg2LTMyXSBBZHZhbmNlZCBQcm9ncmFtbWFibGUgSW50ZXJydXB0IENvbnRyb2xsZXIKKwkJCUNoYW5nZSB0aGUgb3V0cHV0IHZlcmJvc2l0eSB3aGlsc3QgYm9vdGluZworCQkJRm9ybWF0OiB7IHF1aWV0IChkZWZhdWx0KSB8IHZlcmJvc2UgfCBkZWJ1ZyB9CisJCQlDaGFuZ2UgdGhlIGFtb3VudCBvZiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gb3V0cHV0CisJCQl3aGVuIGluaXRpYWxpc2luZyB0aGUgQVBJQyBhbmQgSU8tQVBJQyBjb21wb25lbnRzLgorCisJYXV0b2NvbmY9CVtJUFY2XQorCQkJU2VlIERvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHY2LnR4dC4KKworCXNob3dfbGFwaWM9CVtBUElDLFg4Nl0gQWR2YW5jZWQgUHJvZ3JhbW1hYmxlIEludGVycnVwdCBDb250cm9sbGVyCisJCQlMaW1pdCBhcGljIGR1bXBpbmcuIFRoZSBwYXJhbWV0ZXIgZGVmaW5lcyB0aGUgbWF4aW1hbAorCQkJbnVtYmVyIG9mIGxvY2FsIGFwaWNzIGJlaW5nIGR1bXBlZC4gQWxzbyBpdCBpcyBwb3NzaWJsZQorCQkJdG8gc2V0IGl0IHRvICJhbGwiIGJ5IG1lYW5pbmcgLS0gbm8gbGltaXQgaGVyZS4KKwkJCUZvcm1hdDogeyAxIChkZWZhdWx0KSB8IDIgfCAuLi4gfCBhbGwgfS4KKwkJCVRoZSBwYXJhbWV0ZXIgdmFsaWQgaWYgb25seSBhcGljPWRlYnVnIG9yCisJCQlhcGljPXZlcmJvc2UgaXMgc3BlY2lmaWVkLgorCQkJRXhhbXBsZTogYXBpYz1kZWJ1ZyBzaG93X2xhcGljPWFsbAorCisJYXBtPQkJW0FQTV0gQWR2YW5jZWQgUG93ZXIgTWFuYWdlbWVudAorCQkJU2VlIGhlYWRlciBvZiBhcmNoL3g4Ni9rZXJuZWwvYXBtXzMyLmMuCisKKwlhcmNyaW1pPQlbSFcsTkVUXSBBUkNuZXQgLSAiUklNIEkiIChlbnRpcmVseSBtZW0tbWFwcGVkKSBjYXJkcworCQkJRm9ybWF0OiA8aW8+LDxpcnE+LDxub2RlSUQ+CisKKwlhdGFmbG9wPQlbSFcsTTY4a10KKworCWF0YXJpbW91c2U9CVtIVyxNT1VTRV0gQXRhcmkgTW91c2UKKworCWF0a2JkLmV4dHJhPQlbSFddIEVuYWJsZSBleHRyYSBMRURzIGFuZCBrZXlzIG9uIElCTSBSYXBpZEFjY2VzcywKKwkJCUV6S2V5IGFuZCBzaW1pbGFyIGtleWJvYXJkcworCisJYXRrYmQucmVzZXQ9CVtIV10gUmVzZXQga2V5Ym9hcmQgZHVyaW5nIGluaXRpYWxpemF0aW9uCisKKwlhdGtiZC5zZXQ9CVtIV10gU2VsZWN0IGtleWJvYXJkIGNvZGUgc2V0CisJCQlGb3JtYXQ6IDxpbnQ+ICgyID0gQVQgKGRlZmF1bHQpLCAzID0gUFMvMikKKworCWF0a2JkLnNjcm9sbD0JW0hXXSBFbmFibGUgc2Nyb2xsIHdoZWVsIG9uIE1TIE9mZmljZSBhbmQgc2ltaWxhcgorCQkJa2V5Ym9hcmRzCisKKwlhdGtiZC5zb2Z0cmF3PQlbSFddIENob29zZSBiZXR3ZWVuIHN5bnRoZXRpYyBhbmQgcmVhbCByYXcgbW9kZQorCQkJRm9ybWF0OiA8Ym9vbD4gKDAgPSByZWFsLCAxID0gc3ludGhldGljIChkZWZhdWx0KSkKKworCWF0a2JkLnNvZnRyZXBlYXQ9IFtIV10KKwkJCVVzZSBzb2Z0d2FyZSBrZXlib2FyZCByZXBlYXQKKworCWF1ZGl0PQkJW0tOTF0gRW5hYmxlIHRoZSBhdWRpdCBzdWItc3lzdGVtCisJCQlGb3JtYXQ6IHsgIjAiIHwgIjEiIH0gKDAgPSBkaXNhYmxlZCwgMSA9IGVuYWJsZWQpCisJCQkwIC0ga2VybmVsIGF1ZGl0IGlzIGRpc2FibGVkIGFuZCBjYW4gbm90IGJlIGVuYWJsZWQKKwkJCSAgICB1bnRpbCB0aGUgbmV4dCByZWJvb3QKKwkJCXVuc2V0IC0ga2VybmVsIGF1ZGl0IGlzIGluaXRpYWxpemVkIGJ1dCBkaXNhYmxlZCBhbmQKKwkJCSAgICB3aWxsIGJlIGZ1bGx5IGVuYWJsZWQgYnkgdGhlIHVzZXJzcGFjZSBhdWRpdGQuCisJCQkxIC0ga2VybmVsIGF1ZGl0IGlzIGluaXRpYWxpemVkIGFuZCBwYXJ0aWFsbHkgZW5hYmxlZCwKKwkJCSAgICBzdG9yaW5nIGF0IG1vc3QgYXVkaXRfYmFja2xvZ19saW1pdCBtZXNzYWdlcyBpbgorCQkJICAgIFJBTSB1bnRpbCBpdCBpcyBmdWxseSBlbmFibGVkIGJ5IHRoZSB1c2Vyc3BhY2UKKwkJCSAgICBhdWRpdGQuCisJCQlEZWZhdWx0OiB1bnNldAorCisJYXVkaXRfYmFja2xvZ19saW1pdD0gW0tOTF0gU2V0IHRoZSBhdWRpdCBxdWV1ZSBzaXplIGxpbWl0LgorCQkJRm9ybWF0OiA8aW50PiAobXVzdCBiZSA+PTApCisJCQlEZWZhdWx0OiA2NAorCisJYmF5Y29tX2VwcD0JW0hXLEFYMjVdCisJCQlGb3JtYXQ6IDxpbz4sPG1vZGU+CisKKwliYXljb21fcGFyPQlbSFcsQVgyNV0gQmF5Q29tIFBhcmFsbGVsIFBvcnQgQVguMjUgTW9kZW0KKwkJCUZvcm1hdDogPGlvPiw8bW9kZT4KKwkJCVNlZSBoZWFkZXIgb2YgZHJpdmVycy9uZXQvaGFtcmFkaW8vYmF5Y29tX3Bhci5jLgorCisJYmF5Y29tX3Nlcl9mZHg9CVtIVyxBWDI1XQorCQkJQmF5Q29tIFNlcmlhbCBQb3J0IEFYLjI1IE1vZGVtIChGdWxsIER1cGxleCBNb2RlKQorCQkJRm9ybWF0OiA8aW8+LDxpcnE+LDxtb2RlPlssPGJhdWQ+XQorCQkJU2VlIGhlYWRlciBvZiBkcml2ZXJzL25ldC9oYW1yYWRpby9iYXljb21fc2VyX2ZkeC5jLgorCisJYmF5Y29tX3Nlcl9oZHg9CVtIVyxBWDI1XQorCQkJQmF5Q29tIFNlcmlhbCBQb3J0IEFYLjI1IE1vZGVtIChIYWxmIER1cGxleCBNb2RlKQorCQkJRm9ybWF0OiA8aW8+LDxpcnE+LDxtb2RlPgorCQkJU2VlIGhlYWRlciBvZiBkcml2ZXJzL25ldC9oYW1yYWRpby9iYXljb21fc2VyX2hkeC5jLgorCisJYmxrZGV2cGFydHM9CU1hbnVhbCBwYXJ0aXRpb24gcGFyc2luZyBvZiBibG9jayBkZXZpY2UocykgZm9yCisJCQllbWJlZGRlZCBkZXZpY2VzIGJhc2VkIG9uIGNvbW1hbmQgbGluZSBpbnB1dC4KKwkJCVNlZSBEb2N1bWVudGF0aW9uL2Jsb2NrL2NtZGxpbmUtcGFydGl0aW9uLnR4dAorCisJYm9vdF9kZWxheT0JTWlsbGlzZWNvbmRzIHRvIGRlbGF5IGVhY2ggcHJpbnRrIGR1cmluZyBib290LgorCQkJVmFsdWVzIGxhcmdlciB0aGFuIDEwIHNlY29uZHMgKDEwMDAwKSBhcmUgY2hhbmdlZCB0bworCQkJbm8gZGVsYXkgKDApLgorCQkJRm9ybWF0OiBpbnRlZ2VyCisKKwlib290bWVtX2RlYnVnCVtLTkxdIEVuYWJsZSBib290bWVtIGFsbG9jYXRvciBkZWJ1ZyBtZXNzYWdlcy4KKworCWJ0dHYuY2FyZD0JW0hXLFY0TF0gYnR0diAoYnQ4NDggKyBidDg3OCBiYXNlZCBncmFiYmVyIGNhcmRzKQorCWJ0dHYucmFkaW89CU1vc3QgaW1wb3J0YW50IGluc21vZCBvcHRpb25zIGFyZSBhdmFpbGFibGUgYXMKKwkJCWtlcm5lbCBhcmdzIHRvby4KKwlidHR2LnBsbD0JU2VlIERvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9JbnNtb2Qtb3B0aW9ucworCWJ0dHYudHVuZXI9CisKKwlidWxrX3JlbW92ZT1vZmYJW1BQQ10gIFRoaXMgcGFyYW1ldGVyIGRpc2FibGVzIHRoZSB1c2Ugb2YgdGhlIHBTZXJpZXMKKwkJCWZpcm13YXJlIGZlYXR1cmUgZm9yIGZsdXNoaW5nIG11bHRpcGxlIGhwdGUgZW50cmllcworCQkJYXQgYSB0aW1lLgorCisJYzEwMT0JCVtORVRdIE1veGEgQzEwMSBzeW5jaHJvbm91cyBzZXJpYWwgY2FyZAorCisJY2FjaGVzaXplPQlbQlVHUz1YODYtMzJdIE92ZXJyaWRlIGxldmVsIDIgQ1BVIGNhY2hlIHNpemUgZGV0ZWN0aW9uLgorCQkJU29tZXRpbWVzIENQVSBoYXJkd2FyZSBidWdzIG1ha2UgdGhlbSByZXBvcnQgdGhlIGNhY2hlCisJCQlzaXplIGluY29ycmVjdGx5LiBUaGUga2VybmVsIHdpbGwgYXR0ZW1wdCB3b3JrIGFyb3VuZHMKKwkJCXRvIGZpeCBrbm93biBwcm9ibGVtcywgYnV0IGZvciBzb21lIENQVXMgaXQgaXMgbm90CisJCQlwb3NzaWJsZSB0byBkZXRlcm1pbmUgd2hhdCB0aGUgY29ycmVjdCBzaXplIHNob3VsZCBiZS4KKwkJCVRoaXMgb3B0aW9uIHByb3ZpZGVzIGFuIG92ZXJyaWRlIGZvciB0aGVzZSBzaXR1YXRpb25zLgorCisJY2Ffa2V5cz0JW0tFWVNdIFRoaXMgcGFyYW1ldGVyIGlkZW50aWZpZXMgYSBzcGVjaWZpYyBrZXkocykgb24KKwkJCXRoZSBzeXN0ZW0gdHJ1c3RlZCBrZXlyaW5nIHRvIGJlIHVzZWQgZm9yIGNlcnRpZmljYXRlCisJCQl0cnVzdCB2YWxpZGF0aW9uLgorCQkJZm9ybWF0OiB7IGlkOjxrZXlpZD4gfCBidWlsdGluIH0KKworCWNjYT0JCVtNSVBTXSBPdmVycmlkZSB0aGUga2VybmVsIHBhZ2VzJyBjYWNoZSBjb2hlcmVuY3kKKwkJCWFsZ29yaXRobS4gIEFjY2VwdGVkIHZhbHVlcyByYW5nZSBmcm9tIDAgdG8gNworCQkJaW5jbHVzaXZlLiBTZWUgYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BndGFibGUtYml0cy5oCisJCQlmb3IgcGxhdGZvcm0gc3BlY2lmaWMgdmFsdWVzIChTQjEsIExvb25nc29uMyBhbmQKKwkJCW90aGVycykuCisKKwljY3dfdGltZW91dF9sb2cgW1MzOTBdCisJCQlTZWUgRG9jdW1lbnRhdGlvbi9zMzkwL0NvbW1vbklPIGZvciBkZXRhaWxzLgorCisJY2dyb3VwX2Rpc2FibGU9IFtLTkxdIERpc2FibGUgYSBwYXJ0aWN1bGFyIGNvbnRyb2xsZXIKKwkJCUZvcm1hdDoge25hbWUgb2YgdGhlIGNvbnRyb2xsZXIocykgdG8gZGlzYWJsZX0KKwkJCVRoZSBlZmZlY3RzIG9mIGNncm91cF9kaXNhYmxlPWZvbyBhcmU6CisJCQktIGZvbyBpc24ndCBhdXRvLW1vdW50ZWQgaWYgeW91IG1vdW50IGFsbCBjZ3JvdXBzIGluCisJCQkgIGEgc2luZ2xlIGhpZXJhcmNoeQorCQkJLSBmb28gaXNuJ3QgdmlzaWJsZSBhcyBhbiBpbmRpdmlkdWFsbHkgbW91bnRhYmxlCisJCQkgIHN1YnN5c3RlbQorCQkJe0N1cnJlbnRseSBvbmx5ICJtZW1vcnkiIGNvbnRyb2xsZXIgZGVhbCB3aXRoIHRoaXMgYW5kCisJCQljdXQgdGhlIG92ZXJoZWFkLCBvdGhlcnMganVzdCBkaXNhYmxlIHRoZSB1c2FnZS4gU28KKwkJCW9ubHkgY2dyb3VwX2Rpc2FibGU9bWVtb3J5IGlzIGFjdHVhbGx5IHdvcnRoeX0KKworCWNoZWNrcmVxcHJvdAlbU0VMSU5VWF0gU2V0IGluaXRpYWwgY2hlY2tyZXFwcm90IGZsYWcgdmFsdWUuCisJCQlGb3JtYXQ6IHsgIjAiIHwgIjEiIH0KKwkJCVNlZSBzZWN1cml0eS9zZWxpbnV4L0tjb25maWcgaGVscCB0ZXh0LgorCQkJMCAtLSBjaGVjayBwcm90ZWN0aW9uIGFwcGxpZWQgYnkga2VybmVsIChpbmNsdWRlcworCQkJCWFueSBpbXBsaWVkIGV4ZWN1dGUgcHJvdGVjdGlvbikuCisJCQkxIC0tIGNoZWNrIHByb3RlY3Rpb24gcmVxdWVzdGVkIGJ5IGFwcGxpY2F0aW9uLgorCQkJRGVmYXVsdCB2YWx1ZSBpcyBzZXQgdmlhIGEga2VybmVsIGNvbmZpZyBvcHRpb24uCisJCQlWYWx1ZSBjYW4gYmUgY2hhbmdlZCBhdCBydW50aW1lIHZpYQorCQkJCS9zZWxpbnV4L2NoZWNrcmVxcHJvdC4KKworCWNpb19pZ25vcmU9CVtTMzkwXQorCQkJU2VlIERvY3VtZW50YXRpb24vczM5MC9Db21tb25JTyBmb3IgZGV0YWlscy4KKwljbGtfaWdub3JlX3VudXNlZAorCQkJW0NMS10KKwkJCVByZXZlbnRzIHRoZSBjbG9jayBmcmFtZXdvcmsgZnJvbSBhdXRvbWF0aWNhbGx5IGdhdGluZworCQkJY2xvY2tzIHRoYXQgaGF2ZSBub3QgYmVlbiBleHBsaWNpdGx5IGVuYWJsZWQgYnkgYSBMaW51eAorCQkJZGV2aWNlIGRyaXZlciBidXQgYXJlIGVuYWJsZWQgaW4gaGFyZHdhcmUgYXQgcmVzZXQgb3IKKwkJCWJ5IHRoZSBib290bG9hZGVyL2Zpcm13YXJlLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdAorCQkJZm9yY2Ugc3VjaCBjbG9ja3MgdG8gYmUgYWx3YXlzLW9uIG5vciBkb2VzIGl0IHJlc2VydmUKKwkJCXRob3NlIGNsb2NrcyBpbiBhbnkgd2F5LiBUaGlzIHBhcmFtZXRlciBpcyB1c2VmdWwgZm9yCisJCQlkZWJ1ZyBhbmQgZGV2ZWxvcG1lbnQsIGJ1dCBzaG91bGQgbm90IGJlIG5lZWRlZCBvbiBhCisJCQlwbGF0Zm9ybSB3aXRoIHByb3BlciBkcml2ZXIgc3VwcG9ydC4gIEZvciBtb3JlCisJCQlpbmZvcm1hdGlvbiwgc2VlIERvY3VtZW50YXRpb24vY2xrLnR4dC4KKworCWNsb2NrPQkJW0JVR1M9WDg2LTMyLCBIV10gZ2V0dGltZW9mZGF5IGNsb2Nrc291cmNlIG92ZXJyaWRlLgorCQkJW0RlcHJlY2F0ZWRdCisJCQlGb3JjZXMgc3BlY2lmaWVkIGNsb2Nrc291cmNlIChpZiBhdmFpbGFibGUpIHRvIGJlIHVzZWQKKwkJCXdoZW4gY2FsY3VsYXRpbmcgZ2V0dGltZW9mZGF5KCkuIElmIHNwZWNpZmllZAorCQkJY2xvY2tzb3VyY2UgaXMgbm90IGF2YWlsYWJsZSwgaXQgZGVmYXVsdHMgdG8gUElULgorCQkJRm9ybWF0OiB7IHBpdCB8IHRzYyB8IGN5Y2xvbmUgfCBwbXRtciB9CisKKwljbG9ja3NvdXJjZT0JT3ZlcnJpZGUgdGhlIGRlZmF1bHQgY2xvY2tzb3VyY2UKKwkJCUZvcm1hdDogPHN0cmluZz4KKwkJCU92ZXJyaWRlIHRoZSBkZWZhdWx0IGNsb2Nrc291cmNlIGFuZCB1c2UgdGhlIGNsb2Nrc291cmNlCisJCQl3aXRoIHRoZSBuYW1lIHNwZWNpZmllZC4KKwkJCVNvbWUgY2xvY2tzb3VyY2UgbmFtZXMgdG8gY2hvb3NlIGZyb20sIGRlcGVuZGluZyBvbgorCQkJdGhlIHBsYXRmb3JtOgorCQkJW2FsbF0gamlmZmllcyAodGhpcyBpcyB0aGUgYmFzZSwgZmFsbGJhY2sgY2xvY2tzb3VyY2UpCisJCQlbQUNQSV0gYWNwaV9wbQorCQkJW0FSTV0gaW14X3RpbWVyMSxPU1RTLG5ldHhfdGltZXIsbXB1X3RpbWVyMiwKKwkJCQlweGFfdGltZXIsdGltZXIzLDMya19jb3VudGVyLHRpbWVyMF8xCisJCQlbQVZSMzJdIGF2cjMyCisJCQlbWDg2LTMyXSBwaXQsaHBldCx0c2M7CisJCQkJc2N4MjAwX2hydCBvbiBHZW9kZTsgY3ljbG9uZSBvbiBJQk0geDQ0MAorCQkJW01JUFNdIE1JUFMKKwkJCVtQQVJJU0NdIGNyMTYKKwkJCVtTMzkwXSB0b2QKKwkJCVtTSF0gU3VwZXJICisJCQlbU1BBUkM2NF0gdGljaworCQkJW1g4Ni02NF0gaHBldCx0c2MKKworCWNsZWFyY3B1aWQ9QklUTlVNIFtYODZdCisJCQlEaXNhYmxlIENQVUlEIGZlYXR1cmUgWCBmb3IgdGhlIGtlcm5lbC4gU2VlCisJCQlhcmNoL3g4Ni9pbmNsdWRlL2FzbS9jcHVmZWF0dXJlLmggZm9yIHRoZSB2YWxpZCBiaXQKKwkJCW51bWJlcnMuIE5vdGUgdGhlIExpbnV4IHNwZWNpZmljIGJpdHMgYXJlIG5vdCBuZWNlc3NhcmlseQorCQkJc3RhYmxlIG92ZXIga2VybmVsIG9wdGlvbnMsIGJ1dCB0aGUgdmVuZG9yIHNwZWNpZmljCisJCQlvbmVzIHNob3VsZCBiZS4KKwkJCUFsc28gbm90ZSB0aGF0IHVzZXIgcHJvZ3JhbXMgY2FsbGluZyBDUFVJRCBkaXJlY3RseQorCQkJb3IgdXNpbmcgdGhlIGZlYXR1cmUgd2l0aG91dCBjaGVja2luZyBhbnl0aGluZworCQkJd2lsbCBzdGlsbCBzZWUgaXQuIFRoaXMganVzdCBwcmV2ZW50cyBpdCBmcm9tCisJCQliZWluZyB1c2VkIGJ5IHRoZSBrZXJuZWwgb3Igc2hvd24gaW4gL3Byb2MvY3B1aW5mby4KKwkJCUFsc28gbm90ZSB0aGUga2VybmVsIG1pZ2h0IG1hbGZ1bmN0aW9uIGlmIHlvdSBkaXNhYmxlCisJCQlzb21lIGNyaXRpY2FsIGJpdHMuCisKKwljbWE9bm5bTUddQFtzdGFydFtNR11bLWVuZFtNR11dXQorCQkJW0FSTSxYODYsS05MXQorCQkJU2V0cyB0aGUgc2l6ZSBvZiBrZXJuZWwgZ2xvYmFsIG1lbW9yeSBhcmVhIGZvcgorCQkJY29udGlndW91cyBtZW1vcnkgYWxsb2NhdGlvbnMgYW5kIG9wdGlvbmFsbHkgdGhlCisJCQlwbGFjZW1lbnQgY29uc3RyYWludCBieSB0aGUgcGh5c2ljYWwgYWRkcmVzcyByYW5nZSBvZgorCQkJbWVtb3J5IGFsbG9jYXRpb25zLiBBIHZhbHVlIG9mIDAgZGlzYWJsZXMgQ01BCisJCQlhbHRvZ2V0aGVyLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlCisJCQlpbmNsdWRlL2xpbnV4L2RtYS1jb250aWd1b3VzLmgKKworCWNtb19mcmVlX2hpbnQ9CVtQUENdIEZvcm1hdDogeyB5ZXMgfCBubyB9CisJCQlTcGVjaWZ5IHdoZXRoZXIgcGFnZXMgYXJlIG1hcmtlZCBhcyBiZWluZyBpbmFjdGl2ZQorCQkJd2hlbiB0aGV5IGFyZSBmcmVlZC4gIFRoaXMgaXMgdXNlZCBpbiBDTU8gZW52aXJvbm1lbnRzCisJCQl0byBkZXRlcm1pbmUgT1MgbWVtb3J5IHByZXNzdXJlIGZvciBwYWdlIHN0ZWFsaW5nIGJ5CisJCQlhIGh5cGVydmlzb3IuCisJCQlEZWZhdWx0OiB5ZXMKKworCWNvaGVyZW50X3Bvb2w9bm5bS01HXQlbQVJNLEtOTF0KKwkJCVNldHMgdGhlIHNpemUgb2YgbWVtb3J5IHBvb2wgZm9yIGNvaGVyZW50LCBhdG9taWMgZG1hCisJCQlhbGxvY2F0aW9ucywgYnkgZGVmYXVsdCBzZXQgdG8gMjU2Sy4KKworCWNvZGVfYnl0ZXMJW1g4Nl0gSG93IG1hbnkgYnl0ZXMgb2Ygb2JqZWN0IGNvZGUgdG8gcHJpbnQKKwkJCWluIGFuIG9vcHMgcmVwb3J0LgorCQkJUmFuZ2U6IDAgLSA4MTkyCisJCQlEZWZhdWx0OiA2NAorCisJY29tMjAwMjA9CVtIVyxORVRdIEFSQ25ldCAtIENPTTIwMDIwIGNoaXBzZXQKKwkJCUZvcm1hdDoKKwkJCTxpbz5bLDxpcnE+Wyw8bm9kZUlEPlssPGJhY2twbGFuZT5bLDxja3A+Wyw8dGltZW91dD5dXV1dXQorCisJY29tOTBpbz0JW0hXLE5FVF0gQVJDbmV0IC0gQ09NOTB4eCBjaGlwc2V0IChJTy1tYXBwZWQgYnVmZmVycykKKwkJCUZvcm1hdDogPGlvPlssPGlycT5dCisKKwljb205MHh4PQlbSFcsTkVUXQorCQkJQVJDbmV0IC0gQ09NOTB4eCBjaGlwc2V0IChtZW1vcnktbWFwcGVkIGJ1ZmZlcnMpCisJCQlGb3JtYXQ6IDxpbz5bLDxpcnE+Wyw8bWVtc3RhcnQ+XV0KKworCWNvbmRldj0JCVtIVyxTMzkwXSBjb25zb2xlIGRldmljZQorCWNvbm1vZGU9CisKKwljb25zb2xlPQlbS05MXSBPdXRwdXQgY29uc29sZSBkZXZpY2UgYW5kIG9wdGlvbnMuCisKKwkJdHR5PG4+CVVzZSB0aGUgdmlydHVhbCBjb25zb2xlIGRldmljZSA8bj4uCisKKwkJdHR5UzxuPlssb3B0aW9uc10KKwkJdHR5VVNCMFssb3B0aW9uc10KKwkJCVVzZSB0aGUgc3BlY2lmaWVkIHNlcmlhbCBwb3J0LiAgVGhlIG9wdGlvbnMgYXJlIG9mCisJCQl0aGUgZm9ybSAiYmJiYnBuZiIsIHdoZXJlICJiYmJiIiBpcyB0aGUgYmF1ZCByYXRlLAorCQkJInAiIGlzIHBhcml0eSAoIm4iLCAibyIsIG9yICJlIiksICJuIiBpcyBudW1iZXIgb2YKKwkJCWJpdHMsIGFuZCAiZiIgaXMgZmxvdyBjb250cm9sICgiciIgZm9yIFJUUyBvcgorCQkJb21pdCBpdCkuICBEZWZhdWx0IGlzICI5NjAwbjgiLgorCisJCQlTZWUgRG9jdW1lbnRhdGlvbi9zZXJpYWwtY29uc29sZS50eHQgZm9yIG1vcmUKKwkJCWluZm9ybWF0aW9uLiAgU2VlCisJCQlEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0Y29uc29sZS50eHQgZm9yIGFuCisJCQlhbHRlcm5hdGl2ZS4KKworCQl1YXJ0WzgyNTBdLGlvLDxhZGRyPlssb3B0aW9uc10KKwkJdWFydFs4MjUwXSxtbWlvLDxhZGRyPlssb3B0aW9uc10KKwkJdWFydFs4MjUwXSxtbWlvMzIsPGFkZHI+WyxvcHRpb25zXQorCQl1YXJ0WzgyNTBdLDB4PGFkZHI+WyxvcHRpb25zXQorCQkJU3RhcnQgYW4gZWFybHksIHBvbGxlZC1tb2RlIGNvbnNvbGUgb24gdGhlIDgyNTAvMTY1NTAKKwkJCVVBUlQgYXQgdGhlIHNwZWNpZmllZCBJL08gcG9ydCBvciBNTUlPIGFkZHJlc3MsCisJCQlzd2l0Y2hpbmcgdG8gdGhlIG1hdGNoaW5nIHR0eVMgZGV2aWNlIGxhdGVyLgorCQkJTU1JTyBpbnRlci1yZWdpc3RlciBhZGRyZXNzIHN0cmlkZSBpcyBlaXRoZXIgOC1iaXQKKwkJCShtbWlvKSBvciAzMi1iaXQgKG1taW8zMikuCisJCQlJZiBub25lIG9mIFtpb3xtbWlvfG1taW8zMl0sIDxhZGRyPiBpcyBhc3N1bWVkIHRvIGJlCisJCQllcXVpdmFsZW50IHRvICdtbWlvJy4gJ29wdGlvbnMnIGFyZSBzcGVjaWZpZWQgaW4gdGhlCisJCQlzYW1lIGZvcm1hdCBkZXNjcmliZWQgZm9yIHR0eVMgYWJvdmU7IGlmIHVuc3BlY2lmaWVkLAorCQkJdGhlIGgvdyBpcyBub3QgcmUtaW5pdGlhbGl6ZWQuCisKKwkJaHZjPG4+CVVzZSB0aGUgaHlwZXJ2aXNvciBjb25zb2xlIGRldmljZSA8bj4uIFRoaXMgaXMgZm9yCisJCQlib3RoIFhlbiBhbmQgUG93ZXJQQyBoeXBlcnZpc29ycy4KKworICAgICAgICAgICAgICAgIElmIHRoZSBkZXZpY2UgY29ubmVjdGVkIHRvIHRoZSBwb3J0IGlzIG5vdCBhIFRUWSBidXQgYSBicmFpbGxlCisgICAgICAgICAgICAgICAgZGV2aWNlLCBwcmVwZW5kICJicmwsIiBiZWZvcmUgdGhlIGRldmljZSB0eXBlLCBmb3IgaW5zdGFuY2UKKwkJCWNvbnNvbGU9YnJsLHR0eVMwCisJCUZvciBub3csIG9ubHkgVmlzaW9CcmFpbGxlIGlzIHN1cHBvcnRlZC4KKworCWNvbnNvbGVibGFuaz0JW0tOTF0gVGhlIGNvbnNvbGUgYmxhbmsgKHNjcmVlbiBzYXZlcikgdGltZW91dCBpbgorCQkJc2Vjb25kcy4gRGVmYXVsdHMgdG8gMTAqNjAgPSAxMG1pbnMuIEEgdmFsdWUgb2YgMAorCQkJZGlzYWJsZXMgdGhlIGJsYW5rIHRpbWVyLgorCisJY29yZWR1bXBfZmlsdGVyPQorCQkJW0tOTF0gQ2hhbmdlIHRoZSBkZWZhdWx0IHZhbHVlIGZvcgorCQkJL3Byb2MvPHBpZD4vY29yZWR1bXBfZmlsdGVyLgorCQkJU2VlIGFsc28gRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnR4dC4KKworCWNwdWlkbGUub2ZmPTEJW0NQVV9JRExFXQorCQkJZGlzYWJsZSB0aGUgY3B1aWRsZSBzdWItc3lzdGVtCisKKwljcHVfaW5pdF91ZGVsYXk9TgorCQkJW1g4Nl0gRGVsYXkgZm9yIE4gbWljcm9zZWMgYmV0d2VlbiBhc3NlcnQgYW5kIGRlLWFzc2VydAorCQkJb2YgQVBJQyBJTklUIHRvIHN0YXJ0IHByb2Nlc3NvcnMuICBUaGlzIGRlbGF5IG9jY3VycworCQkJb24gZXZlcnkgQ1BVIG9ubGluZSwgc3VjaCBhcyBib290LCBhbmQgcmVzdW1lIGZyb20gc3VzcGVuZC4KKwkJCURlZmF1bHQ6IDEwMDAwCisKKwljcGNpaHBfZ2VuZXJpYz0JW0hXLFBDSV0gR2VuZXJpYyBwb3J0IEkvTyBDb21wYWN0UENJIGRyaXZlcgorCQkJRm9ybWF0OgorCQkJPGZpcnN0X3Nsb3Q+LDxsYXN0X3Nsb3Q+LDxwb3J0Piw8ZW51bV9iaXQ+Wyw8ZGVidWc+XQorCisJY3Jhc2hrZXJuZWw9c2l6ZVtLTUddW0BvZmZzZXRbS01HXV0KKwkJCVtLTkxdIFVzaW5nIGtleGVjLCBMaW51eCBjYW4gc3dpdGNoIHRvIGEgJ2NyYXNoIGtlcm5lbCcKKwkJCXVwb24gcGFuaWMuIFRoaXMgcGFyYW1ldGVyIHJlc2VydmVzIHRoZSBwaHlzaWNhbAorCQkJbWVtb3J5IHJlZ2lvbiBbb2Zmc2V0LCBvZmZzZXQgKyBzaXplXSBmb3IgdGhhdCBrZXJuZWwKKwkJCWltYWdlLiBJZiAnQG9mZnNldCcgaXMgb21pdHRlZCwgdGhlbiBhIHN1aXRhYmxlIG9mZnNldAorCQkJaXMgc2VsZWN0ZWQgYXV0b21hdGljYWxseS4gQ2hlY2sKKwkJCURvY3VtZW50YXRpb24va2R1bXAva2R1bXAudHh0IGZvciBmdXJ0aGVyIGRldGFpbHMuCisKKwljcmFzaGtlcm5lbD1yYW5nZTE6c2l6ZTFbLHJhbmdlMjpzaXplMiwuLi5dW0BvZmZzZXRdCisJCQlbS05MXSBTYW1lIGFzIGFib3ZlLCBidXQgZGVwZW5kcyBvbiB0aGUgbWVtb3J5CisJCQlpbiB0aGUgcnVubmluZyBzeXN0ZW0uIFRoZSBzeW50YXggb2YgcmFuZ2UgaXMKKwkJCXN0YXJ0LVtlbmRdIHdoZXJlIHN0YXJ0IGFuZCBlbmQgYXJlIGJvdGgKKwkJCWEgbWVtb3J5IHVuaXQgKGFtb3VudFtLTUddKS4gU2VlIGFsc28KKwkJCURvY3VtZW50YXRpb24va2R1bXAva2R1bXAudHh0IGZvciBhbiBleGFtcGxlLgorCisJY3Jhc2hrZXJuZWw9c2l6ZVtLTUddLGhpZ2gKKwkJCVtLTkwsIHg4Nl82NF0gcmFuZ2UgY291bGQgYmUgYWJvdmUgNEcuIEFsbG93IGtlcm5lbAorCQkJdG8gYWxsb2NhdGUgcGh5c2ljYWwgbWVtb3J5IHJlZ2lvbiBmcm9tIHRvcCwgc28gY291bGQKKwkJCWJlIGFib3ZlIDRHIGlmIHN5c3RlbSBoYXZlIG1vcmUgdGhhbiA0RyByYW0gaW5zdGFsbGVkLgorCQkJT3RoZXJ3aXNlIG1lbW9yeSByZWdpb24gd2lsbCBiZSBhbGxvY2F0ZWQgYmVsb3cgNEcsIGlmCisJCQlhdmFpbGFibGUuCisJCQlJdCB3aWxsIGJlIGlnbm9yZWQgaWYgY3Jhc2hrZXJuZWw9WCBpcyBzcGVjaWZpZWQuCisJY3Jhc2hrZXJuZWw9c2l6ZVtLTUddLGxvdworCQkJW0tOTCwgeDg2XzY0XSByYW5nZSB1bmRlciA0Ry4gV2hlbiBjcmFzaGtlcm5lbD1YLGhpZ2gKKwkJCWlzIHBhc3NlZCwga2VybmVsIGNvdWxkIGFsbG9jYXRlIHBoeXNpY2FsIG1lbW9yeSByZWdpb24KKwkJCWFib3ZlIDRHLCB0aGF0IGNhdXNlIHNlY29uZCBrZXJuZWwgY3Jhc2ggb24gc3lzdGVtCisJCQl0aGF0IHJlcXVpcmUgc29tZSBhbW91bnQgb2YgbG93IG1lbW9yeSwgZS5nLiBzd2lvdGxiCisJCQlyZXF1aXJlcyBhdCBsZWFzdCA2NE0rMzJLIGxvdyBtZW1vcnksIGFsc28gZW5vdWdoIGV4dHJhCisJCQlsb3cgbWVtb3J5IGlzIG5lZWRlZCB0byBtYWtlIHN1cmUgRE1BIGJ1ZmZlcnMgZm9yIDMyLWJpdAorCQkJZGV2aWNlcyB3b24ndCBydW4gb3V0LiBLZXJuZWwgd291bGQgdHJ5IHRvIGFsbG9jYXRlIGF0CisJCQlhdCBsZWFzdCAyNTZNIGJlbG93IDRHIGF1dG9tYXRpY2FsbHkuCisJCQlUaGlzIG9uZSBsZXQgdXNlciB0byBzcGVjaWZ5IG93biBsb3cgcmFuZ2UgdW5kZXIgNEcKKwkJCWZvciBzZWNvbmQga2VybmVsIGluc3RlYWQuCisJCQkwOiB0byBkaXNhYmxlIGxvdyBhbGxvY2F0aW9uLgorCQkJSXQgd2lsbCBiZSBpZ25vcmVkIHdoZW4gY3Jhc2hrZXJuZWw9WCxoaWdoIGlzIG5vdCB1c2VkCisJCQlvciBtZW1vcnkgcmVzZXJ2ZWQgaXMgYmVsb3cgNEcuCisKKwljczg5eDBfZG1hPQlbSFcsTkVUXQorCQkJRm9ybWF0OiA8ZG1hPgorCisJY3M4OXgwX21lZGlhPQlbSFcsTkVUXQorCQkJRm9ybWF0OiB7IHJqNDUgfCBhdWkgfCBibmMgfQorCisJZGFzZD0JCVtIVyxORVRdCisJCQlTZWUgaGVhZGVyIG9mIGRyaXZlcnMvczM5MC9ibG9jay9kYXNkX2Rldm1hcC5jLgorCisJZGI5LmRldlsyfDNdPQlbSFcsSk9ZXSBNdWx0aXN5c3RlbSBqb3lzdGljayBzdXBwb3J0IHZpYSBwYXJhbGxlbCBwb3J0CisJCQkob25lIGRldmljZSBwZXIgcG9ydCkKKwkJCUZvcm1hdDogPHBvcnQjPiw8dHlwZT4KKwkJCVNlZSBhbHNvIERvY3VtZW50YXRpb24vaW5wdXQvam95c3RpY2stcGFycG9ydC50eHQKKworCWRkZWJ1Z19xdWVyeT0gICBbS05MLERZTkFNSUNfREVCVUddIEVuYWJsZSBkZWJ1ZyBtZXNzYWdlcyBhdCBlYXJseSBib290CisJCQl0aW1lLiBTZWUgRG9jdW1lbnRhdGlvbi9keW5hbWljLWRlYnVnLWhvd3RvLnR4dCBmb3IKKwkJCWRldGFpbHMuICBEZXByZWNhdGVkLCBzZWUgZHluZGJnLgorCisJZGVidWcJCVtLTkxdIEVuYWJsZSBrZXJuZWwgZGVidWdnaW5nIChldmVudHMgbG9nIGxldmVsKS4KKworCWRlYnVnX2xvY2tzX3ZlcmJvc2U9CisJCQlbS05MXSB2ZXJib3NlIHNlbGYtdGVzdHMKKwkJCUZvcm1hdD08MHwxPgorCQkJUHJpbnQgZGVidWdnaW5nIGluZm8gd2hpbGUgZG9pbmcgdGhlIGxvY2tpbmcgQVBJCisJCQlzZWxmLXRlc3RzLgorCQkJV2UgZGVmYXVsdCB0byAwIChubyBleHRyYSBtZXNzYWdlcyksIHNldHRpbmcgaXQgdG8KKwkJCTEgd2lsbCBwcmludCBfYSBsb3RfIG1vcmUgaW5mb3JtYXRpb24gLSBub3JtYWxseQorCQkJb25seSB1c2VmdWwgdG8ga2VybmVsIGRldmVsb3BlcnMuCisKKwlkZWJ1Z19vYmplY3RzCVtLTkxdIEVuYWJsZSBvYmplY3QgZGVidWdnaW5nCisKKwlub19kZWJ1Z19vYmplY3RzCisJCQlbS05MXSBEaXNhYmxlIG9iamVjdCBkZWJ1Z2dpbmcKKworCWRlYnVnX2d1YXJkcGFnZV9taW5vcmRlcj0KKwkJCVtLTkxdIFdoZW4gQ09ORklHX0RFQlVHX1BBR0VBTExPQyBpcyBzZXQsIHRoaXMKKwkJCXBhcmFtZXRlciBhbGxvd3MgY29udHJvbCBvZiB0aGUgb3JkZXIgb2YgcGFnZXMgdGhhdCB3aWxsCisJCQliZSBpbnRlbnRpb25hbGx5IGtlcHQgZnJlZSAoYW5kIGhlbmNlIHByb3RlY3RlZCkgYnkgdGhlCisJCQlidWRkeSBhbGxvY2F0b3IuIEJpZ2dlciB2YWx1ZSBpbmNyZWFzZSB0aGUgcHJvYmFiaWxpdHkKKwkJCW9mIGNhdGNoaW5nIHJhbmRvbSBtZW1vcnkgY29ycnVwdGlvbiwgYnV0IHJlZHVjZSB0aGUKKwkJCWFtb3VudCBvZiBtZW1vcnkgZm9yIG5vcm1hbCBzeXN0ZW0gdXNlLiBUaGUgbWF4aW11bQorCQkJcG9zc2libGUgdmFsdWUgaXMgTUFYX09SREVSLzIuICBTZXR0aW5nIHRoaXMgcGFyYW1ldGVyCisJCQl0byAxIG9yIDIgc2hvdWxkIGJlIGVub3VnaCB0byBpZGVudGlmeSBtb3N0IHJhbmRvbQorCQkJbWVtb3J5IGNvcnJ1cHRpb24gcHJvYmxlbXMgY2F1c2VkIGJ5IGJ1Z3MgaW4ga2VybmVsIG9yCisJCQlkcml2ZXIgY29kZSB3aGVuIGEgQ1BVIHdyaXRlcyB0byAob3IgcmVhZHMgZnJvbSkgYQorCQkJcmFuZG9tIG1lbW9yeSBsb2NhdGlvbi4gTm90ZSB0aGF0IHRoZXJlIGV4aXN0cyBhIGNsYXNzCisJCQlvZiBtZW1vcnkgY29ycnVwdGlvbnMgcHJvYmxlbXMgY2F1c2VkIGJ5IGJ1Z2d5IEgvVyBvcgorCQkJRi9XIG9yIGJ5IGRyaXZlcnMgYmFkbHkgcHJvZ3JhbWluZyBETUEgKGJhc2ljYWxseSB3aGVuCisJCQltZW1vcnkgaXMgd3JpdHRlbiBhdCBidXMgbGV2ZWwgYW5kIHRoZSBDUFUgTU1VIGlzCisJCQlieXBhc3NlZCkgd2hpY2ggYXJlIG5vdCBkZXRlY3RhYmxlIGJ5CisJCQlDT05GSUdfREVCVUdfUEFHRUFMTE9DLCBoZW5jZSB0aGlzIG9wdGlvbiB3aWxsIG5vdCBoZWxwCisJCQl0cmFja2luZyBkb3duIHRoZXNlIHByb2JsZW1zLgorCisJZGVidWdfcGFnZWFsbG9jPQorCQkJW0tOTF0gV2hlbiBDT05GSUdfREVCVUdfUEFHRUFMTE9DIGlzIHNldCwgdGhpcworCQkJcGFyYW1ldGVyIGVuYWJsZXMgdGhlIGZlYXR1cmUgYXQgYm9vdCB0aW1lLiBJbgorCQkJZGVmYXVsdCwgaXQgaXMgZGlzYWJsZWQuIFdlIGNhbiBhdm9pZCBhbGxvY2F0aW5nIGh1Z2UKKwkJCWNodW5rIG9mIG1lbW9yeSBmb3IgZGVidWcgcGFnZWFsbG9jIGlmIHdlIGRvbid0IGVuYWJsZQorCQkJaXQgYXQgYm9vdCB0aW1lIGFuZCB0aGUgc3lzdGVtIHdpbGwgd29yayBtb3N0bHkgc2FtZQorCQkJd2l0aCB0aGUga2VybmVsIGJ1aWx0IHdpdGhvdXQgQ09ORklHX0RFQlVHX1BBR0VBTExPQy4KKwkJCW9uOiBlbmFibGUgdGhlIGZlYXR1cmUKKworCWRlYnVncGF0CVtYODZdIEVuYWJsZSBQQVQgZGVidWdnaW5nCisKKwlkZWNuZXQuYWRkcj0JW0hXLE5FVF0KKwkJCUZvcm1hdDogPGFyZWE+Wyw8bm9kZT5dCisJCQlTZWUgYWxzbyBEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGVjbmV0LnR4dC4KKworCWRlZmF1bHRfaHVnZXBhZ2Vzej0KKwkJCVtzYW1lIGFzIGh1Z2VwYWdlc3o9XSBUaGUgc2l6ZSBvZiB0aGUgZGVmYXVsdAorCQkJSHVnZVRMQiBwYWdlIHNpemUuIFRoaXMgaXMgdGhlIHNpemUgcmVwcmVzZW50ZWQgYnkKKwkJCXRoZSBsZWdhY3kgL3Byb2MvIGh1Z2VwYWdlcyBBUElzLCB1c2VkIGZvciBTSE0sIGFuZAorCQkJZGVmYXVsdCBzaXplIHdoZW4gbW91bnRpbmcgaHVnZXRsYmZzIGZpbGVzeXN0ZW1zLgorCQkJRGVmYXVsdHMgdG8gdGhlIGRlZmF1bHQgYXJjaGl0ZWN0dXJlJ3MgaHVnZSBwYWdlIHNpemUKKwkJCWlmIG5vdCBzcGVjaWZpZWQuCisKKwlkaGFzaF9lbnRyaWVzPQlbS05MXQorCQkJU2V0IG51bWJlciBvZiBoYXNoIGJ1Y2tldHMgZm9yIGRlbnRyeSBjYWNoZS4KKworCWRpc2FibGU9CVtJUFY2XQorCQkJU2VlIERvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHY2LnR4dC4KKworCWRpc2FibGVfY3B1X2FwaWNpZD0gW1g4NixBUElDLFNNUF0KKwkJCUZvcm1hdDogPGludD4KKwkJCVRoZSBudW1iZXIgb2YgaW5pdGlhbCBBUElDIElEIGZvciB0aGUKKwkJCWNvcnJlc3BvbmRpbmcgQ1BVIHRvIGJlIGRpc2FibGVkIGF0IGJvb3QsCisJCQltb3N0bHkgdXNlZCBmb3IgdGhlIGtkdW1wIDJuZCBrZXJuZWwgdG8KKwkJCWRpc2FibGUgQlNQIHRvIHdha2UgdXAgbXVsdGlwbGUgQ1BVcyB3aXRob3V0CisJCQljYXVzaW5nIHN5c3RlbSByZXNldCBvciBoYW5nIGR1ZSB0byBzZW5kaW5nCisJCQlJTklUIGZyb20gQVAgdG8gQlNQLgorCisJZGlzYWJsZV9kZHcgICAgIFtQUEMvUFNFUklFU10KKwkJCURpc2FibGUgRHluYW1pYyBETUEgV2luZG93IHN1cHBvcnQuIFVzZSB0aGlzIGlmCisJCQl0byB3b3JrYXJvdW5kIGJ1Z2d5IGZpcm13YXJlLgorCisJZGlzYWJsZV9pcHY2PQlbSVBWNl0KKwkJCVNlZSBEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXB2Ni50eHQuCisKKwlkaXNhYmxlX210cnJfY2xlYW51cCBbWDg2XQorCQkJVGhlIGtlcm5lbCB0cmllcyB0byBhZGp1c3QgTVRSUiBsYXlvdXQgZnJvbSBjb250aW51b3VzCisJCQl0byBkaXNjcmV0ZSwgdG8gbWFrZSBYIHNlcnZlciBkcml2ZXIgYWJsZSB0byBhZGQgV0IKKwkJCWVudHJ5IGxhdGVyLiBUaGlzIHBhcmFtZXRlciBkaXNhYmxlcyB0aGF0LgorCisJZGlzYWJsZV9tdHJyX3RyaW0gW1g4NiwgSW50ZWwgYW5kIEFNRCBvbmx5XQorCQkJQnkgZGVmYXVsdCB0aGUga2VybmVsIHdpbGwgdHJpbSBhbnkgdW5jYWNoZWFibGUKKwkJCW1lbW9yeSBvdXQgb2YgeW91ciBhdmFpbGFibGUgbWVtb3J5IHBvb2wgYmFzZWQgb24KKwkJCU1UUlIgc2V0dGluZ3MuICBUaGlzIHBhcmFtZXRlciBkaXNhYmxlcyB0aGF0IGJlaGF2aW9yLAorCQkJcG9zc2libHkgY2F1c2luZyB5b3VyIG1hY2hpbmUgdG8gcnVuIHZlcnkgc2xvd2x5LgorCisJZGlzYWJsZV90aW1lcl9waW5fMSBbWDg2XQorCQkJRGlzYWJsZSBQSU4gMSBvZiBBUElDIHRpbWVyCisJCQlDYW4gYmUgdXNlZnVsIHRvIHdvcmsgYXJvdW5kIGNoaXBzZXQgYnVncy4KKworCWRpc191Y29kZV9sZHIJW1g4Nl0gRGlzYWJsZSB0aGUgbWljcm9jb2RlIGxvYWRlci4KKworCWRtYV9kZWJ1Zz1vZmYJSWYgdGhlIGtlcm5lbCBpcyBjb21waWxlZCB3aXRoIERNQV9BUElfREVCVUcgc3VwcG9ydCwKKwkJCXRoaXMgb3B0aW9uIGRpc2FibGVzIHRoZSBkZWJ1Z2dpbmcgY29kZSBhdCBib290LgorCisJZG1hX2RlYnVnX2VudHJpZXM9PG51bWJlcj4KKwkJCVRoaXMgb3B0aW9uIGFsbG93cyB0byB0dW5lIHRoZSBudW1iZXIgb2YgcHJlYWxsb2NhdGVkCisJCQllbnRyaWVzIGZvciBETUEtQVBJIGRlYnVnZ2luZyBjb2RlLiBPbmUgZW50cnkgaXMKKwkJCXJlcXVpcmVkIHBlciBETUEtQVBJIGFsbG9jYXRpb24uIFVzZSB0aGlzIGlmIHRoZQorCQkJRE1BLUFQSSBkZWJ1Z2dpbmcgY29kZSBkaXNhYmxlcyBpdHNlbGYgYmVjYXVzZSB0aGUKKwkJCWFyY2hpdGVjdHVyYWwgZGVmYXVsdCBpcyB0b28gbG93LgorCisJZG1hX2RlYnVnX2RyaXZlcj08ZHJpdmVyX25hbWU+CisJCQlXaXRoIHRoaXMgb3B0aW9uIHRoZSBETUEtQVBJIGRlYnVnZ2luZyBkcml2ZXIKKwkJCWZpbHRlciBmZWF0dXJlIGNhbiBiZSBlbmFibGVkIGF0IGJvb3QgdGltZS4gSnVzdAorCQkJcGFzcyB0aGUgZHJpdmVyIHRvIGZpbHRlciBmb3IgYXMgdGhlIHBhcmFtZXRlci4KKwkJCVRoZSBmaWx0ZXIgY2FuIGJlIGRpc2FibGVkIG9yIGNoYW5nZWQgdG8gYW5vdGhlcgorCQkJZHJpdmVyIGxhdGVyIHVzaW5nIHN5c2ZzLgorCisJZHJtX2ttc19oZWxwZXIuZWRpZF9maXJtd2FyZT1bPGNvbm5lY3Rvcj46XTxmaWxlPlssWzxjb25uZWN0b3I+Ol08ZmlsZT5dCisJCQlCcm9rZW4gbW9uaXRvcnMsIGdyYXBoaWMgYWRhcHRlcnMsIEtWTXMgYW5kIEVESURsZXNzCisJCQlwYW5lbHMgbWF5IHNlbmQgbm8gb3IgaW5jb3JyZWN0IEVESUQgZGF0YSBzZXRzLgorCQkJVGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHRvIHNwZWNpZnkgYW4gRURJRCBkYXRhIHNldHMKKwkJCWluIHRoZSAvbGliL2Zpcm13YXJlIGRpcmVjdG9yeSB0aGF0IGFyZSB1c2VkIGluc3RlYWQuCisJCQlHZW5lcmljIGJ1aWx0LWluIEVESUQgZGF0YSBzZXRzIGFyZSB1c2VkLCBpZiBvbmUgb2YKKwkJCWVkaWQvMTAyNHg3NjguYmluLCBlZGlkLzEyODB4MTAyNC5iaW4sCisJCQllZGlkLzE2ODB4MTA1MC5iaW4sIG9yIGVkaWQvMTkyMHgxMDgwLmJpbiBpcyBnaXZlbgorCQkJYW5kIG5vIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lIGV4aXN0cy4gRGV0YWlscyBhbmQKKwkJCWluc3RydWN0aW9ucyBob3cgdG8gYnVpbGQgeW91ciBvd24gRURJRCBkYXRhIGFyZQorCQkJYXZhaWxhYmxlIGluIERvY3VtZW50YXRpb24vRURJRC9IT1dUTy50eHQuIEFuIEVESUQKKwkJCWRhdGEgc2V0IHdpbGwgb25seSBiZSB1c2VkIGZvciBhIHBhcnRpY3VsYXIgY29ubmVjdG9yLAorCQkJaWYgaXRzIG5hbWUgYW5kIGEgY29sb24gYXJlIHByZXBlbmRlZCB0byB0aGUgRURJRAorCQkJbmFtZS4gRWFjaCBjb25uZWN0b3IgbWF5IHVzZSBhIHVuaXF1ZSBFRElEIGRhdGEKKwkJCXNldCBieSBzZXBhcmF0aW5nIHRoZSBmaWxlcyB3aXRoIGEgY29tbWEuICBBbiBFRElECisJCQlkYXRhIHNldCB3aXRoIG5vIGNvbm5lY3RvciBuYW1lIHdpbGwgYmUgdXNlZCBmb3IKKwkJCWFueSBjb25uZWN0b3JzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZC4KKworCWRzY2M0LnNldHVwPQlbTkVUXQorCisJZHluZGJnWz0idmFsIl0JCVtLTkwsRFlOQU1JQ19ERUJVR10KKwltb2R1bGUuZHluZGJnWz0idmFsIl0KKwkJCUVuYWJsZSBkZWJ1ZyBtZXNzYWdlcyBhdCBib290IHRpbWUuICBTZWUKKwkJCURvY3VtZW50YXRpb24vZHluYW1pYy1kZWJ1Zy1ob3d0by50eHQgZm9yIGRldGFpbHMuCisKKwlub21weAkJW1g4Nl0gRGlzYWJsZXMgSW50ZWwgTWVtb3J5IFByb3RlY3Rpb24gRXh0ZW5zaW9ucy4KKwkJCVNlZSBEb2N1bWVudGF0aW9uL3g4Ni9pbnRlbF9tcHgudHh0IGZvciBtb3JlCisJCQlpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmVhdHVyZS4KKworCWVhZ2VyZnB1PQlbWDg2XQorCQkJb24JZW5hYmxlIGVhZ2VyIGZwdSByZXN0b3JlCisJCQlvZmYJZGlzYWJsZSBlYWdlciBmcHUgcmVzdG9yZQorCQkJYXV0bwlzZWxlY3RzIHRoZSBkZWZhdWx0IHNjaGVtZSwgd2hpY2ggYXV0b21hdGljYWxseQorCQkJCWVuYWJsZXMgZWFnZXJmcHUgcmVzdG9yZSBmb3IgeHNhdmVvcHQuCisKKwltb2R1bGUuYXN5bmNfcHJvYmUgW0tOTF0KKwkJCUVuYWJsZSBhc3luY2hyb25vdXMgcHJvYmUgb24gdGhpcyBtb2R1bGUuCisKKwllYXJseV9pb3JlbWFwX2RlYnVnIFtLTkxdCisJCQlFbmFibGUgZGVidWcgbWVzc2FnZXMgaW4gZWFybHlfaW9yZW1hcCBzdXBwb3J0LiBUaGlzCisJCQlpcyB1c2VmdWwgZm9yIHRyYWNraW5nIGRvd24gdGVtcG9yYXJ5IGVhcmx5IG1hcHBpbmdzCisJCQl3aGljaCBhcmUgbm90IHVubWFwcGVkLgorCisJZWFybHljb249CVtLTkxdIE91dHB1dCBlYXJseSBjb25zb2xlIGRldmljZSBhbmQgb3B0aW9ucy4KKworCQkJV2hlbiB1c2VkIHdpdGggbm8gb3B0aW9ucywgdGhlIGVhcmx5IGNvbnNvbGUgaXMKKwkJCWRldGVybWluZWQgYnkgdGhlIHN0ZG91dC1wYXRoIHByb3BlcnR5IGluIGRldmljZQorCQkJdHJlZSdzIGNob3NlbiBub2RlLgorCisJCWNkbnMsPGFkZHI+CisJCQlTdGFydCBhbiBlYXJseSwgcG9sbGVkLW1vZGUgY29uc29sZSBvbiBhIGNhZGVuY2Ugc2VyaWFsCisJCQlwb3J0IGF0IHRoZSBzcGVjaWZpZWQgYWRkcmVzcy4gVGhlIGNhZGVuY2Ugc2VyaWFsIHBvcnQKKwkJCW11c3QgYWxyZWFkeSBiZSBzZXR1cCBhbmQgY29uZmlndXJlZC4gT3B0aW9ucyBhcmUgbm90CisJCQl5ZXQgc3VwcG9ydGVkLgorCisJCXVhcnRbODI1MF0saW8sPGFkZHI+WyxvcHRpb25zXQorCQl1YXJ0WzgyNTBdLG1taW8sPGFkZHI+WyxvcHRpb25zXQorCQl1YXJ0WzgyNTBdLG1taW8zMiw8YWRkcj5bLG9wdGlvbnNdCisJCXVhcnRbODI1MF0sbW1pbzMyYmUsPGFkZHI+WyxvcHRpb25zXQorCQl1YXJ0WzgyNTBdLDB4PGFkZHI+WyxvcHRpb25zXQorCQkJU3RhcnQgYW4gZWFybHksIHBvbGxlZC1tb2RlIGNvbnNvbGUgb24gdGhlIDgyNTAvMTY1NTAKKwkJCVVBUlQgYXQgdGhlIHNwZWNpZmllZCBJL08gcG9ydCBvciBNTUlPIGFkZHJlc3MuCisJCQlNTUlPIGludGVyLXJlZ2lzdGVyIGFkZHJlc3Mgc3RyaWRlIGlzIGVpdGhlciA4LWJpdAorCQkJKG1taW8pIG9yIDMyLWJpdCAobW1pbzMyIG9yIG1taW8zMmJlKS4KKwkJCUlmIG5vbmUgb2YgW2lvfG1taW98bW1pbzMyfG1taW8zMmJlXSwgPGFkZHI+IGlzIGFzc3VtZWQKKwkJCXRvIGJlIGVxdWl2YWxlbnQgdG8gJ21taW8nLiAnb3B0aW9ucycgYXJlIHNwZWNpZmllZAorCQkJaW4gdGhlIHNhbWUgZm9ybWF0IGRlc2NyaWJlZCBmb3IgImNvbnNvbGU9dHR5UzxuPiI7IGlmCisJCQl1bnNwZWNpZmllZCwgdGhlIGgvdyBpcyBub3QgaW5pdGlhbGl6ZWQuCisKKwkJcGwwMTEsPGFkZHI+CisJCQlTdGFydCBhbiBlYXJseSwgcG9sbGVkLW1vZGUgY29uc29sZSBvbiBhIHBsMDExIHNlcmlhbAorCQkJcG9ydCBhdCB0aGUgc3BlY2lmaWVkIGFkZHJlc3MuIFRoZSBwbDAxMSBzZXJpYWwgcG9ydAorCQkJbXVzdCBhbHJlYWR5IGJlIHNldHVwIGFuZCBjb25maWd1cmVkLiBPcHRpb25zIGFyZSBub3QKKwkJCXlldCBzdXBwb3J0ZWQuCisKKwkJbXNtX3NlcmlhbCw8YWRkcj4KKwkJCVN0YXJ0IGFuIGVhcmx5LCBwb2xsZWQtbW9kZSBjb25zb2xlIG9uIGFuIG1zbSBzZXJpYWwKKwkJCXBvcnQgYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLiBUaGUgc2VyaWFsIHBvcnQKKwkJCW11c3QgYWxyZWFkeSBiZSBzZXR1cCBhbmQgY29uZmlndXJlZC4gT3B0aW9ucyBhcmUgbm90CisJCQl5ZXQgc3VwcG9ydGVkLgorCisJCW1zbV9zZXJpYWxfZG0sPGFkZHI+CisJCQlTdGFydCBhbiBlYXJseSwgcG9sbGVkLW1vZGUgY29uc29sZSBvbiBhbiBtc20gc2VyaWFsCisJCQlkbSBwb3J0IGF0IHRoZSBzcGVjaWZpZWQgYWRkcmVzcy4gVGhlIHNlcmlhbCBwb3J0CisJCQltdXN0IGFscmVhZHkgYmUgc2V0dXAgYW5kIGNvbmZpZ3VyZWQuIE9wdGlvbnMgYXJlIG5vdAorCQkJeWV0IHN1cHBvcnRlZC4KKworCQlzbWgJVXNlIEFSTSBzZW1paG9zdGluZyBjYWxscyBmb3IgZWFybHkgY29uc29sZS4KKworCQlzM2MyNDEwLDxhZGRyPgorCQlzM2MyNDEyLDxhZGRyPgorCQlzM2MyNDQwLDxhZGRyPgorCQlzM2M2NDAwLDxhZGRyPgorCQlzNXB2MjEwLDxhZGRyPgorCQlleHlub3M0MjEwLDxhZGRyPgorCQkJVXNlIGVhcmx5IGNvbnNvbGUgcHJvdmlkZWQgYnkgc2VyaWFsIGRyaXZlciBhdmFpbGFibGUKKwkJCW9uIFNhbXN1bmcgU29DcywgcmVxdWlyZXMgc2VsZWN0aW5nIHByb3BlciB0eXBlIGFuZAorCQkJYSBjb3JyZWN0IGJhc2UgYWRkcmVzcyBvZiB0aGUgc2VsZWN0ZWQgVUFSVCBwb3J0LiBUaGUKKwkJCXNlcmlhbCBwb3J0IG11c3QgYWxyZWFkeSBiZSBzZXR1cCBhbmQgY29uZmlndXJlZC4KKwkJCU9wdGlvbnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkLgorCisJCWxwdWFydCw8YWRkcj4KKwkJbHB1YXJ0MzIsPGFkZHI+CisJCQlVc2UgZWFybHkgY29uc29sZSBwcm92aWRlZCBieSBGcmVlc2NhbGUgTFAgVUFSVCBkcml2ZXIKKwkJCWZvdW5kIG9uIEZyZWVzY2FsZSBWeWJyaWQgYW5kIFFvcklRIExTMTAyMUEgcHJvY2Vzc29ycy4KKwkJCUEgdmFsaWQgYmFzZSBhZGRyZXNzIG11c3QgYmUgcHJvdmlkZWQsIGFuZCB0aGUgc2VyaWFsCisJCQlwb3J0IG11c3QgYWxyZWFkeSBiZSBzZXR1cCBhbmQgY29uZmlndXJlZC4KKworCWVhcmx5cHJpbnRrPQlbWDg2LFNILEJMQUNLRklOLEFSTSxNNjhrXQorCQkJZWFybHlwcmludGs9dmdhCisJCQllYXJseXByaW50az1lZmkKKwkJCWVhcmx5cHJpbnRrPXhlbgorCQkJZWFybHlwcmludGs9c2VyaWFsWyx0dHlTblssYmF1ZHJhdGVdXQorCQkJZWFybHlwcmludGs9c2VyaWFsWywweC4uLlssYmF1ZHJhdGVdXQorCQkJZWFybHlwcmludGs9dHR5U25bLGJhdWRyYXRlXQorCQkJZWFybHlwcmludGs9ZGJncFtkZWJ1Z0NvbnRyb2xsZXIjXQorCQkJZWFybHlwcmludGs9cGNpc2VyaWFsLGJ1czpkZXZpY2UuZnVuY3Rpb25bLGJhdWRyYXRlXQorCisJCQllYXJseXByaW50ayBpcyB1c2VmdWwgd2hlbiB0aGUga2VybmVsIGNyYXNoZXMgYmVmb3JlCisJCQl0aGUgbm9ybWFsIGNvbnNvbGUgaXMgaW5pdGlhbGl6ZWQuIEl0IGlzIG5vdCBlbmFibGVkIGJ5CisJCQlkZWZhdWx0IGJlY2F1c2UgaXQgaGFzIHNvbWUgY29zbWV0aWMgcHJvYmxlbXMuCisKKwkJCUFwcGVuZCAiLGtlZXAiIHRvIG5vdCBkaXNhYmxlIGl0IHdoZW4gdGhlIHJlYWwgY29uc29sZQorCQkJdGFrZXMgb3Zlci4KKworCQkJT25seSBvbmUgb2YgdmdhLCBlZmksIHNlcmlhbCwgb3IgdXNiIGRlYnVnIHBvcnQgY2FuCisJCQliZSB1c2VkIGF0IGEgdGltZS4KKworCQkJQ3VycmVudGx5IG9ubHkgdHR5UzAgYW5kIHR0eVMxIG1heSBiZSBzcGVjaWZpZWQgYnkKKwkJCW5hbWUuICBPdGhlciBJL08gcG9ydHMgbWF5IGJlIGV4cGxpY2l0bHkgc3BlY2lmaWVkCisJCQlvbiBzb21lIGFyY2hpdGVjdHVyZXMgKHg4NiBhbmQgYXJtIGF0IGxlYXN0KSBieQorCQkJcmVwbGFjaW5nIHR0eVNuIHdpdGggYW4gSS9PIHBvcnQgYWRkcmVzcywgbGlrZSB0aGlzOgorCQkJCWVhcmx5cHJpbnRrPXNlcmlhbCwweDEwMDgsMTE1MjAwCisJCQlZb3UgY2FuIGZpbmQgdGhlIHBvcnQgZm9yIGEgZ2l2ZW4gZGV2aWNlIGluCisJCQkvcHJvYy90dHkvZHJpdmVyL3NlcmlhbDoKKwkJCQkyOiB1YXJ0OlNUMTY2NTBWMiBwb3J0OjAwMDAxMDA4IGlycToxOCAuLi4KKworCQkJSW50ZXJhY3Rpb24gd2l0aCB0aGUgc3RhbmRhcmQgc2VyaWFsIGRyaXZlciBpcyBub3QKKwkJCXZlcnkgZ29vZC4KKworCQkJVGhlIFZHQSBhbmQgRUZJIG91dHB1dCBpcyBldmVudHVhbGx5IG92ZXJ3cml0dGVuIGJ5CisJCQl0aGUgcmVhbCBjb25zb2xlLgorCisJCQlUaGUgeGVuIG91dHB1dCBjYW4gb25seSBiZSB1c2VkIGJ5IFhlbiBQViBndWVzdHMuCisKKwllZGFjX3JlcG9ydD0JW0hXLEVEQUNdIENvbnRyb2wgaG93IHRvIHJlcG9ydCBFREFDIGV2ZW50CisJCQlGb3JtYXQ6IHsib24iIHwgIm9mZiIgfCAiZm9yY2UifQorCQkJb246IGVuYWJsZSBFREFDIHRvIHJlcG9ydCBIL1cgZXZlbnQuIE1heSBiZSBvdmVycmlkZGVuCisJCQlieSBvdGhlciBoaWdoZXIgcHJpb3JpdHkgZXJyb3IgcmVwb3J0aW5nIG1vZHVsZS4KKwkJCW9mZjogZGlzYWJsZSBIL1cgZXZlbnQgcmVwb3J0aW5nIHRocm91Z2ggRURBQy4KKwkJCWZvcmNlOiBlbmZvcmNlIHRoZSB1c2Ugb2YgRURBQyB0byByZXBvcnQgSC9XIGV2ZW50LgorCQkJZGVmYXVsdDogb24uCisKKwlla2dkYm9jPQlbWDg2LEtHREJdIEFsbG93IGVhcmx5IGtlcm5lbCBjb25zb2xlIGRlYnVnZ2luZworCQkJZWtnZGJvYz1rYmQKKworCQkJVGhpcyBpcyBkZXNpZ25lZCB0byBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGgKKwkJCXRoZSBib290IGFyZ3VtZW50OiBlYXJseXByaW50az12Z2EKKworCWVkZD0JCVtFRERdCisJCQlGb3JtYXQ6IHsib2ZmIiB8ICJvbiIgfCAic2tpcFttYnJdIn0KKworCWVmaT0JCVtFRkldCisJCQlGb3JtYXQ6IHsgIm9sZF9tYXAiLCAibm9jaHVuayIsICJub3J1bnRpbWUiLCAiZGVidWciIH0KKwkJCW9sZF9tYXAgW1g4Ni02NF06IHN3aXRjaCB0byB0aGUgb2xkIGlvcmVtYXAtYmFzZWQgRUZJCisJCQlydW50aW1lIHNlcnZpY2VzIG1hcHBpbmcuIDMyLWJpdCBzdGlsbCB1c2VzIHRoaXMgb25lIGJ5CisJCQlkZWZhdWx0LgorCQkJbm9jaHVuazogZGlzYWJsZSByZWFkaW5nIGZpbGVzIGluICJjaHVua3MiIGluIHRoZSBFRkkKKwkJCWJvb3Qgc3R1YiwgYXMgY2h1bmtpbmcgY2FuIGNhdXNlIHByb2JsZW1zIHdpdGggc29tZQorCQkJZmlybXdhcmUgaW1wbGVtZW50YXRpb25zLgorCQkJbm9ydW50aW1lIDogZGlzYWJsZSBFRkkgcnVudGltZSBzZXJ2aWNlcyBzdXBwb3J0CisJCQlkZWJ1ZzogZW5hYmxlIG1pc2MgZGVidWcgb3V0cHV0CisKKwllZmlfbm9fc3RvcmFnZV9wYXJhbm9pYSBbRUZJOyBYODZdCisJCQlVc2luZyB0aGlzIHBhcmFtZXRlciB5b3UgY2FuIHVzZSBtb3JlIHRoYW4gNTAlIG9mCisJCQl5b3VyIGVmaSB2YXJpYWJsZSBzdG9yYWdlLiBVc2UgdGhpcyBwYXJhbWV0ZXIgb25seSBpZgorCQkJeW91IGFyZSByZWFsbHkgc3VyZSB0aGF0IHlvdXIgVUVGSSBkb2VzIHNhbmUgZ2MgYW5kCisJCQlmdWxmaWxscyB0aGUgc3BlYyBvdGhlcndpc2UgeW91ciBib2FyZCBtYXkgYnJpY2suCisKKwllZmlfZmFrZV9tZW09CW5uW0tNR11Ac3NbS01HXTphYVssbm5bS01HXUBzc1tLTUddOmFhLC4uXSBbRUZJOyBYODZdCisJCQlBZGQgYXJiaXRyYXJ5IGF0dHJpYnV0ZSB0byBzcGVjaWZpYyBtZW1vcnkgcmFuZ2UgYnkKKwkJCXVwZGF0aW5nIG9yaWdpbmFsIEVGSSBtZW1vcnkgbWFwLgorCQkJUmVnaW9uIG9mIG1lbW9yeSB3aGljaCBhYSBhdHRyaWJ1dGUgaXMgYWRkZWQgdG8gaXMKKwkJCWZyb20gc3MgdG8gc3Mrbm4uCisJCQlJZiBlZmlfZmFrZV9tZW09MkdANEc6MHgxMDAwMCwyR0AweDEwYTAwMDAwMDA6MHgxMDAwMAorCQkJaXMgc3BlY2lmaWVkLCBFRklfTUVNT1JZX01PUkVfUkVMSUFCTEUoMHgxMDAwMCkKKwkJCWF0dHJpYnV0ZSBpcyBhZGRlZCB0byByYW5nZSAweDEwMDAwMDAwMC0weDE4MDAwMDAwMCBhbmQKKwkJCTB4MTBhMDAwMDAwMC0weDExMjAwMDAwMDAuCisKKwkJCVVzaW5nIHRoaXMgcGFyYW1ldGVyIHlvdSBjYW4gZG8gZGVidWdnaW5nIG9mIEVGSSBtZW1tYXAKKwkJCXJlbGF0ZWQgZmVhdHVyZS4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gZG8gZGVidWdnaW5nIG9mCisJCQlBZGRyZXNzIFJhbmdlIE1pcnJvcmluZyBmZWF0dXJlIGV2ZW4gaWYgeW91ciBib3gKKwkJCWRvZXNuJ3Qgc3VwcG9ydCBpdC4KKworCWVpc2FfaXJxX2VkZ2U9CVtQQVJJU0MsSFddCisJCQlTZWUgaGVhZGVyIG9mIGRyaXZlcnMvcGFyaXNjL2Vpc2EuYy4KKworCWVsYW5mcmVxPQlbWDg2LTMyXQorCQkJU2VlIGNvbW1lbnQgYmVmb3JlIGZ1bmN0aW9uIGVsYW5mcmVxX3NldHVwKCkgaW4KKwkJCWFyY2gveDg2L2tlcm5lbC9jcHUvY3B1ZnJlcS9lbGFuZnJlcS5jLgorCisJZWxldmF0b3I9CVtJT1NDSEVEXQorCQkJRm9ybWF0OiB7ImNmcSIgfCAiZGVhZGxpbmUiIHwgIm5vb3AifQorCQkJU2VlIERvY3VtZW50YXRpb24vYmxvY2svY2ZxLWlvc2NoZWQudHh0IGFuZAorCQkJRG9jdW1lbnRhdGlvbi9ibG9jay9kZWFkbGluZS1pb3NjaGVkLnR4dCBmb3IgZGV0YWlscy4KKworCWVsZmNvcmVoZHI9W3NpemVbS01HXUBdb2Zmc2V0W0tNR10gW0lBNjQsUFBDLFNILFg4NixTMzkwXQorCQkJU3BlY2lmaWVzIHBoeXNpY2FsIGFkZHJlc3Mgb2Ygc3RhcnQgb2Yga2VybmVsIGNvcmUKKwkJCWltYWdlIGVsZiBoZWFkZXIgYW5kIG9wdGlvbmFsbHkgdGhlIHNpemUuIEdlbmVyYWxseQorCQkJa2V4ZWMgbG9hZGVyIHdpbGwgcGFzcyB0aGlzIG9wdGlvbiB0byBjYXB0dXJlIGtlcm5lbC4KKwkJCVNlZSBEb2N1bWVudGF0aW9uL2tkdW1wL2tkdW1wLnR4dCBmb3IgZGV0YWlscy4KKworCWVuYWJsZV9tdHJyX2NsZWFudXAgW1g4Nl0KKwkJCVRoZSBrZXJuZWwgdHJpZXMgdG8gYWRqdXN0IE1UUlIgbGF5b3V0IGZyb20gY29udGludW91cworCQkJdG8gZGlzY3JldGUsIHRvIG1ha2UgWCBzZXJ2ZXIgZHJpdmVyIGFibGUgdG8gYWRkIFdCCisJCQllbnRyeSBsYXRlci4gVGhpcyBwYXJhbWV0ZXIgZW5hYmxlcyB0aGF0LgorCisJZW5hYmxlX3RpbWVyX3Bpbl8xIFtYODZdCisJCQlFbmFibGUgUElOIDEgb2YgQVBJQyB0aW1lcgorCQkJQ2FuIGJlIHVzZWZ1bCB0byB3b3JrIGFyb3VuZCBjaGlwc2V0IGJ1Z3MKKwkJCShpbiBwYXJ0aWN1bGFyIG9uIHNvbWUgQVRJIGNoaXBzZXRzKS4KKwkJCVRoZSBrZXJuZWwgdHJpZXMgdG8gc2V0IGEgcmVhc29uYWJsZSBkZWZhdWx0LgorCisJZW5mb3JjaW5nCVtTRUxJTlVYXSBTZXQgaW5pdGlhbCBlbmZvcmNpbmcgc3RhdHVzLgorCQkJRm9ybWF0OiB7IjAiIHwgIjEifQorCQkJU2VlIHNlY3VyaXR5L3NlbGludXgvS2NvbmZpZyBoZWxwIHRleHQuCisJCQkwIC0tIHBlcm1pc3NpdmUgKGxvZyBvbmx5LCBubyBkZW5pYWxzKS4KKwkJCTEgLS0gZW5mb3JjaW5nIChkZW55IGFuZCBsb2cpLgorCQkJRGVmYXVsdCB2YWx1ZSBpcyAwLgorCQkJVmFsdWUgY2FuIGJlIGNoYW5nZWQgYXQgcnVudGltZSB2aWEgL3NlbGludXgvZW5mb3JjZS4KKworCWVyc3RfZGlzYWJsZQlbQUNQSV0KKwkJCURpc2FibGUgRXJyb3IgUmVjb3JkIFNlcmlhbGl6YXRpb24gVGFibGUgKEVSU1QpCisJCQlzdXBwb3J0LgorCisJZXRoZXI9CQlbSFcsTkVUXSBFdGhlcm5ldCBjYXJkcyBwYXJhbWV0ZXJzCisJCQlUaGlzIG9wdGlvbiBpcyBvYnNvbGV0ZWQgYnkgdGhlICJuZXRkZXY9IiBvcHRpb24sIHdoaWNoCisJCQloYXMgZXF1aXZhbGVudCB1c2FnZS4gU2VlIGl0cyBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLgorCisJZXZtPQkJW0VWTV0KKwkJCUZvcm1hdDogeyAiZml4IiB9CisJCQlQZXJtaXQgJ3NlY3VyaXR5LmV2bScgdG8gYmUgdXBkYXRlZCByZWdhcmRsZXNzIG9mCisJCQljdXJyZW50IGludGVncml0eSBzdGF0dXMuCisKKwlmYWlsc2xhYj0KKwlmYWlsX3BhZ2VfYWxsb2M9CisJZmFpbF9tYWtlX3JlcXVlc3Q9W0tOTF0KKwkJCUdlbmVyYWwgZmF1bHQgaW5qZWN0aW9uIG1lY2hhbmlzbS4KKwkJCUZvcm1hdDogPGludGVydmFsPiw8cHJvYmFiaWxpdHk+LDxzcGFjZT4sPHRpbWVzPgorCQkJU2VlIGFsc28gRG9jdW1lbnRhdGlvbi9mYXVsdC1pbmplY3Rpb24vLgorCisJZmxvcHB5PQkJW0hXXQorCQkJU2VlIERvY3VtZW50YXRpb24vYmxvY2tkZXYvZmxvcHB5LnR4dC4KKworCWZvcmNlX3BhbF9jYWNoZV9mbHVzaAorCQkJW0lBLTY0XSBBdm9pZCBjaGVja19zYWxfY2FjaGVfZmx1c2ggd2hpY2ggbWF5IGhhbmcgb24KKwkJCWJ1Z2d5IFNBTF9DQUNIRV9GTFVTSCBpbXBsZW1lbnRhdGlvbnMuIFVzaW5nIHRoaXMKKwkJCXBhcmFtZXRlciB3aWxsIGZvcmNlIGlhNjRfc2FsX2NhY2hlX2ZsdXNoIHRvIGNhbGwKKwkJCWlhNjRfcGFsX2NhY2hlX2ZsdXNoIGluc3RlYWQgb2YgU0FMX0NBQ0hFX0ZMVVNILgorCisJZm9yY2VwYWUgW1g4Ni0zMl0KKwkJCUZvcmNlZnVsbHkgZW5hYmxlIFBoeXNpY2FsIEFkZHJlc3MgRXh0ZW5zaW9uIChQQUUpLgorCQkJTWFueSBQZW50aXVtIE0gc3lzdGVtcyBkaXNhYmxlIFBBRSBidXQgbWF5IGhhdmUgYQorCQkJZnVuY3Rpb25hbGx5IHVzYWJsZSBQQUUgaW1wbGVtZW50YXRpb24uCisJCQlXYXJuaW5nOiB1c2Ugb2YgdGhpcyBwYXJhbWV0ZXIgd2lsbCB0YWludCB0aGUga2VybmVsCisJCQlhbmQgbWF5IGNhdXNlIHVua25vd24gcHJvYmxlbXMuCisKKwlmdHJhY2U9W3RyYWNlcl0KKwkJCVtGVFJBQ0VdIHdpbGwgc2V0IGFuZCBzdGFydCB0aGUgc3BlY2lmaWVkIHRyYWNlcgorCQkJYXMgZWFybHkgYXMgcG9zc2libGUgaW4gb3JkZXIgdG8gZmFjaWxpdGF0ZSBlYXJseQorCQkJYm9vdCBkZWJ1Z2dpbmcuCisKKwlmdHJhY2VfZHVtcF9vbl9vb3BzWz1vcmlnX2NwdV0KKwkJCVtGVFJBQ0VdIHdpbGwgZHVtcCB0aGUgdHJhY2UgYnVmZmVycyBvbiBvb3BzLgorCQkJSWYgbm8gcGFyYW1ldGVyIGlzIHBhc3NlZCwgZnRyYWNlIHdpbGwgZHVtcAorCQkJYnVmZmVycyBvZiBhbGwgQ1BVcywgYnV0IGlmIHlvdSBwYXNzIG9yaWdfY3B1LCBpdCB3aWxsCisJCQlkdW1wIG9ubHkgdGhlIGJ1ZmZlciBvZiB0aGUgQ1BVIHRoYXQgdHJpZ2dlcmVkIHRoZQorCQkJb29wcy4KKworCWZ0cmFjZV9maWx0ZXI9W2Z1bmN0aW9uLWxpc3RdCisJCQlbRlRSQUNFXSBMaW1pdCB0aGUgZnVuY3Rpb25zIHRyYWNlZCBieSB0aGUgZnVuY3Rpb24KKwkJCXRyYWNlciBhdCBib290IHVwLiBmdW5jdGlvbi1saXN0IGlzIGEgY29tbWEgc2VwYXJhdGVkCisJCQlsaXN0IG9mIGZ1bmN0aW9ucy4gVGhpcyBsaXN0IGNhbiBiZSBjaGFuZ2VkIGF0IHJ1bgorCQkJdGltZSBieSB0aGUgc2V0X2Z0cmFjZV9maWx0ZXIgZmlsZSBpbiB0aGUgZGVidWdmcworCQkJdHJhY2luZyBkaXJlY3RvcnkuCisKKwlmdHJhY2Vfbm90cmFjZT1bZnVuY3Rpb24tbGlzdF0KKwkJCVtGVFJBQ0VdIERvIG5vdCB0cmFjZSB0aGUgZnVuY3Rpb25zIHNwZWNpZmllZCBpbgorCQkJZnVuY3Rpb24tbGlzdC4gVGhpcyBsaXN0IGNhbiBiZSBjaGFuZ2VkIGF0IHJ1biB0aW1lCisJCQlieSB0aGUgc2V0X2Z0cmFjZV9ub3RyYWNlIGZpbGUgaW4gdGhlIGRlYnVnZnMKKwkJCXRyYWNpbmcgZGlyZWN0b3J5LgorCisJZnRyYWNlX2dyYXBoX2ZpbHRlcj1bZnVuY3Rpb24tbGlzdF0KKwkJCVtGVFJBQ0VdIExpbWl0IHRoZSB0b3AgbGV2ZWwgY2FsbGVycyBmdW5jdGlvbnMgdHJhY2VkCisJCQlieSB0aGUgZnVuY3Rpb24gZ3JhcGggdHJhY2VyIGF0IGJvb3QgdXAuCisJCQlmdW5jdGlvbi1saXN0IGlzIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgZnVuY3Rpb25zCisJCQl0aGF0IGNhbiBiZSBjaGFuZ2VkIGF0IHJ1biB0aW1lIGJ5IHRoZQorCQkJc2V0X2dyYXBoX2Z1bmN0aW9uIGZpbGUgaW4gdGhlIGRlYnVnZnMgdHJhY2luZyBkaXJlY3RvcnkuCisKKwlmdHJhY2VfZ3JhcGhfbm90cmFjZT1bZnVuY3Rpb24tbGlzdF0KKwkJCVtGVFJBQ0VdIERvIG5vdCB0cmFjZSBmcm9tIHRoZSBmdW5jdGlvbnMgc3BlY2lmaWVkIGluCisJCQlmdW5jdGlvbi1saXN0LiAgVGhpcyBsaXN0IGlzIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YKKwkJCWZ1bmN0aW9ucyB0aGF0IGNhbiBiZSBjaGFuZ2VkIGF0IHJ1biB0aW1lIGJ5IHRoZQorCQkJc2V0X2dyYXBoX25vdHJhY2UgZmlsZSBpbiB0aGUgZGVidWdmcyB0cmFjaW5nIGRpcmVjdG9yeS4KKworCWdhbWVjb24ubWFwWzJ8M109CisJCQlbSFcsSk9ZXSBNdWx0aXN5c3RlbSBqb3lzdGljayBhbmQgTkVTL1NORVMvUFNYIHBhZAorCQkJc3VwcG9ydCB2aWEgcGFyYWxsZWwgcG9ydCAodXAgdG8gNSBkZXZpY2VzIHBlciBwb3J0KQorCQkJRm9ybWF0OiA8cG9ydCM+LDxwYWQxPiw8cGFkMj4sPHBhZDM+LDxwYWQ0Piw8cGFkNT4KKwkJCVNlZSBhbHNvIERvY3VtZW50YXRpb24vaW5wdXQvam95c3RpY2stcGFycG9ydC50eHQKKworCWdhbW1hPQkJW0hXLERSTV0KKworCWdhcnRfZml4X2U4MjA9ICBbWDg2XzY0XSBkaXNhYmxlIHRoZSBmaXggZTgyMCBmb3IgSzggR0FSVAorCQkJRm9ybWF0OiBvZmYgfCBvbgorCQkJZGVmYXVsdDogb24KKworCWdjb3ZfcGVyc2lzdD0JW0dDT1ZdIFdoZW4gbm9uLXplcm8gKGRlZmF1bHQpLCBwcm9maWxpbmcgZGF0YSBmb3IKKwkJCWtlcm5lbCBtb2R1bGVzIGlzIHNhdmVkIGFuZCByZW1haW5zIGFjY2Vzc2libGUgdmlhCisJCQlkZWJ1Z2ZzLCBldmVuIHdoZW4gdGhlIG1vZHVsZSBpcyB1bmxvYWRlZC9yZWxvYWRlZC4KKwkJCVdoZW4gemVybywgcHJvZmlsaW5nIGRhdGEgaXMgZGlzY2FyZGVkIGFuZCBhc3NvY2lhdGVkCisJCQlkZWJ1Z2ZzIGZpbGVzIGFyZSByZW1vdmVkIGF0IG1vZHVsZSB1bmxvYWQgdGltZS4KKworCWdvbGRmaXNoCVtYODZdIEVuYWJsZSB0aGUgZ29sZGZpc2ggYW5kcm9pZCBlbXVsYXRvciBwbGF0Zm9ybS4KKwkJCURvbid0IHVzZSB0aGlzIHdoZW4geW91IGFyZSBub3QgcnVubmluZyBvbiB0aGUKKwkJCWFuZHJvaWQgZW11bGF0b3IKKworCWdwdAkJW0VGSV0gRm9yY2VzIGRpc2sgd2l0aCB2YWxpZCBHUFQgc2lnbmF0dXJlIGJ1dAorCQkJaW52YWxpZCBQcm90ZWN0aXZlIE1CUiB0byBiZSB0cmVhdGVkIGFzIEdQVC4gSWYgdGhlCisJCQlwcmltYXJ5IEdQVCBpcyBjb3JydXB0ZWQsIGl0IGVuYWJsZXMgdGhlIGJhY2t1cC9hbHRlcm5hdGUKKwkJCUdQVCB0byBiZSB1c2VkIGluc3RlYWQuCisKKwlncmNhbi5lbmFibGUwPQlbSFddIENvbmZpZ3VyYXRpb24gb2YgcGh5c2ljYWwgaW50ZXJmYWNlIDAuIERldGVybWluZXMKKwkJCXRoZSAiRW5hYmxlIDAiIGJpdCBvZiB0aGUgY29uZmlndXJhdGlvbiByZWdpc3Rlci4KKwkJCUZvcm1hdDogMCB8IDEKKwkJCURlZmF1bHQ6IDAKKwlncmNhbi5lbmFibGUxPQlbSFddIENvbmZpZ3VyYXRpb24gb2YgcGh5c2ljYWwgaW50ZXJmYWNlIDEuIERldGVybWluZXMKKwkJCXRoZSAiRW5hYmxlIDAiIGJpdCBvZiB0aGUgY29uZmlndXJhdGlvbiByZWdpc3Rlci4KKwkJCUZvcm1hdDogMCB8IDEKKwkJCURlZmF1bHQ6IDAKKwlncmNhbi5zZWxlY3Q9CVtIV10gU2VsZWN0IHdoaWNoIHBoeXNpY2FsIGludGVyZmFjZSB0byB1c2UuCisJCQlGb3JtYXQ6IDAgfCAxCisJCQlEZWZhdWx0OiAwCisJZ3JjYW4udHhzaXplPQlbSFddIFNldHMgdGhlIHNpemUgb2YgdGhlIHR4IGJ1ZmZlci4KKwkJCUZvcm1hdDogPHVuc2lnbmVkIGludD4gc3VjaCB0aGF0ICh0eHNpemUgJiB+MHgxZmZmYzApID09IDAuCisJCQlEZWZhdWx0OiAxMDI0CisJZ3JjYW4ucnhzaXplPQlbSFddIFNldHMgdGhlIHNpemUgb2YgdGhlIHJ4IGJ1ZmZlci4KKwkJCUZvcm1hdDogPHVuc2lnbmVkIGludD4gc3VjaCB0aGF0IChyeHNpemUgJiB+MHgxZmZmYzApID09IDAuCisJCQlEZWZhdWx0OiAxMDI0CisKKwloYXJkbG9ja3VwX2FsbF9jcHVfYmFja3RyYWNlPQorCQkJW0tOTF0gU2hvdWxkIHRoZSBoYXJkLWxvY2t1cCBkZXRlY3RvciBnZW5lcmF0ZQorCQkJYmFja3RyYWNlcyBvbiBhbGwgY3B1cy4KKwkJCUZvcm1hdDogPGludGVnZXI+CisKKwloYXNoZGlzdD0JW0tOTCxOVU1BXSBMYXJnZSBoYXNoZXMgYWxsb2NhdGVkIGR1cmluZyBib290CisJCQlhcmUgZGlzdHJpYnV0ZWQgYWNyb3NzIE5VTUEgbm9kZXMuICBEZWZhdWx0cyBvbgorCQkJZm9yIDY0LWJpdCBOVU1BLCBvZmYgb3RoZXJ3aXNlLgorCQkJRm9ybWF0OiAwIHwgMSAoZm9yIG9mZiB8IG9uKQorCisJaGNsPQkJW0lBLTY0XSBTR0kncyBIYXJkd2FyZSBHcmFwaCBjb21wYXRpYmlsaXR5IGxheWVyCisKKwloZD0JCVtFSURFXSAoRSlJREUgaGFyZCBkcml2ZSBzdWJzeXN0ZW0gZ2VvbWV0cnkKKwkJCUZvcm1hdDogPGN5bD4sPGhlYWQ+LDxzZWN0PgorCisJaGVzdF9kaXNhYmxlCVtBQ1BJXQorCQkJRGlzYWJsZSBIYXJkd2FyZSBFcnJvciBTb3VyY2UgVGFibGUgKEhFU1QpIHN1cHBvcnQ7CisJCQljb3JyZXNwb25kaW5nIGZpcm13YXJlLWZpcnN0IG1vZGUgZXJyb3IgcHJvY2Vzc2luZworCQkJbG9naWMgd2lsbCBiZSBkaXNhYmxlZC4KKworCWhpZ2htZW09bm5bS01HXQlbS05MLEJPT1RdIGZvcmNlcyB0aGUgaGlnaG1lbSB6b25lIHRvIGhhdmUgYW4gZXhhY3QKKwkJCXNpemUgb2YgPG5uPi4gVGhpcyB3b3JrcyBldmVuIG9uIGJveGVzIHRoYXQgaGF2ZSBubworCQkJaGlnaG1lbSBvdGhlcndpc2UuIFRoaXMgYWxzbyB3b3JrcyB0byByZWR1Y2UgaGlnaG1lbQorCQkJc2l6ZSBvbiBiaWdnZXIgYm94ZXMuCisKKwloaWdocmVzPQlbS05MXSBFbmFibGUvZGlzYWJsZSBoaWdoIHJlc29sdXRpb24gdGltZXIgbW9kZS4KKwkJCVZhbGlkIHBhcmFtZXRlcnM6ICJvbiIsICJvZmYiCisJCQlEZWZhdWx0OiAib24iCisKKwloaXNheD0JCVtIVyxJU0ROXQorCQkJU2VlIERvY3VtZW50YXRpb24vaXNkbi9SRUFETUUuSGlTYXguCisKKwlobHQJCVtCVUdTPUFSTSxTSF0KKworCWhwZXQ9CQlbWDg2LTMyLEhQRVRdIG9wdGlvbiB0byBjb250cm9sIEhQRVQgdXNhZ2UKKwkJCUZvcm1hdDogeyBlbmFibGUgKGRlZmF1bHQpIHwgZGlzYWJsZSB8IGZvcmNlIHwKKwkJCQl2ZXJib3NlIH0KKwkJCWRpc2FibGU6IGRpc2FibGUgSFBFVCBhbmQgdXNlIFBJVCBpbnN0ZWFkCisJCQlmb3JjZTogYWxsb3cgZm9yY2UgZW5hYmxlZCBvZiB1bmRvY3VtZW50ZWQgY2hpcHMgKElDSDQsCisJCQkJVklBLCBuVmlkaWEpCisJCQl2ZXJib3NlOiBzaG93IGNvbnRlbnRzIG9mIEhQRVQgcmVnaXN0ZXJzIGR1cmluZyBzZXR1cAorCisJaHBldF9tbWFwPQlbWDg2LCBIUEVUX01NQVBdIEFsbG93IHVzZXJzcGFjZSB0byBtbWFwIEhQRVQKKwkJCXJlZ2lzdGVycy4gIERlZmF1bHQgc2V0IGJ5IENPTkZJR19IUEVUX01NQVBfREVGQVVMVC4KKworCWh1Z2VwYWdlcz0JW0hXLFg4Ni0zMixJQS02NF0gSHVnZVRMQiBwYWdlcyB0byBhbGxvY2F0ZSBhdCBib290LgorCWh1Z2VwYWdlc3o9CVtIVyxJQS02NCxQUEMsWDg2LTY0XSBUaGUgc2l6ZSBvZiB0aGUgSHVnZVRMQiBwYWdlcy4KKwkJCU9uIHg4Ni02NCBhbmQgcG93ZXJwYywgdGhpcyBvcHRpb24gY2FuIGJlIHNwZWNpZmllZAorCQkJbXVsdGlwbGUgdGltZXMgaW50ZXJsZWF2ZWQgd2l0aCBodWdlcGFnZXM9IHRvIHJlc2VydmUKKwkJCWh1Z2UgcGFnZXMgb2YgZGlmZmVyZW50IHNpemVzLiBWYWxpZCBwYWdlcyBzaXplcyBvbgorCQkJeDg2LTY0IGFyZSAyTSAod2hlbiB0aGUgQ1BVIHN1cHBvcnRzICJwc2UiKSBhbmQgMUcKKwkJCSh3aGVuIHRoZSBDUFUgc3VwcG9ydHMgdGhlICJwZHBlMWdiIiBjcHVpbmZvIGZsYWcpLgorCisJaHZjX2l1Y3Y9CVtTMzkwXSBOdW1iZXIgb2Ygei9WTSBJVUNWIGh5cGVydmlzb3IgY29uc29sZSAoSFZDKQorCQkJICAgICAgIHRlcm1pbmFsIGRldmljZXMuIFZhbGlkIHZhbHVlczogMC4uOAorCWh2Y19pdWN2X2FsbG93PQlbUzM5MF0gQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygei9WTSB1c2VyIElEcy4KKwkJCSAgICAgICBJZiBzcGVjaWZpZWQsIHovVk0gSVVDViBIVkMgYWNjZXB0cyBjb25uZWN0aW9ucworCQkJICAgICAgIGZyb20gbGlzdGVkIHovVk0gdXNlciBJRHMgb25seS4KKworCWh3dGhyZWFkX21hcD0JW01FVEFHXSBDb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBMaW51eCBjcHUgaWQgdG8KKwkJCSAgICAgICAgaGFyZHdhcmUgdGhyZWFkIGlkIG1hcHBpbmdzLgorCQkJCUZvcm1hdDogPGNwdT46PGh3dGhyZWFkPgorCisJa2VlcF9ib290Y29uCVtLTkxdCisJCQlEbyBub3QgdW5yZWdpc3RlciBib290IGNvbnNvbGUgYXQgc3RhcnQuIFRoaXMgaXMgb25seQorCQkJdXNlZnVsIGZvciBkZWJ1Z2dpbmcgd2hlbiBzb21ldGhpbmcgaGFwcGVucyBpbiB0aGUgd2luZG93CisJCQliZXR3ZWVuIHVucmVnaXN0ZXJpbmcgdGhlIGJvb3QgY29uc29sZSBhbmQgaW5pdGlhbGl6aW5nCisJCQl0aGUgcmVhbCBjb25zb2xlLgorCisJaTJjX2J1cz0JW0hXXSBPdmVycmlkZSB0aGUgZGVmYXVsdCBib2FyZCBzcGVjaWZpYyBJMkMgYnVzIHNwZWVkCisJCQkgICAgIG9yIHJlZ2lzdGVyIGFuIGFkZGl0aW9uYWwgSTJDIGJ1cyB0aGF0IGlzIG5vdAorCQkJICAgICByZWdpc3RlcmVkIGZyb20gYm9hcmQgaW5pdGlhbGl6YXRpb24gY29kZS4KKwkJCSAgICAgRm9ybWF0OgorCQkJICAgICA8YnVzX2lkPiw8Y2xrcmF0ZT4KKworCWk4MDQyLmRlYnVnCVtIV10gVG9nZ2xlIGk4MDQyIGRlYnVnIG1vZGUKKwlpODA0Mi51bm1hc2tfa2JkX2RhdGEKKwkJCVtIV10gRW5hYmxlIHByaW50aW5nIG9mIGludGVycnVwdCBkYXRhIGZyb20gdGhlIEtCRCBwb3J0CisJCQkgICAgIChkaXNhYmxlZCBieSBkZWZhdWx0LCBhbmQgYXMgYSBwcmUtY29uZGl0aW9uCisJCQkgICAgIHJlcXVpcmVzIHRoYXQgaTgwNDIuZGVidWc9MSBiZSBlbmFibGVkKQorCWk4MDQyLmRpcmVjdAlbSFddIFB1dCBrZXlib2FyZCBwb3J0IGludG8gbm9uLXRyYW5zbGF0ZWQgbW9kZQorCWk4MDQyLmR1bWJrYmQJW0hXXSBQcmV0ZW5kIHRoYXQgY29udHJvbGxlciBjYW4gb25seSByZWFkIGRhdGEgZnJvbQorCQkJICAgICBrZXlib2FyZCBhbmQgY2Fubm90IGNvbnRyb2wgaXRzIHN0YXRlCisJCQkgICAgIChEb24ndCBhdHRlbXB0IHRvIGJsaW5rIHRoZSBsZWRzKQorCWk4MDQyLm5vYXV4CVtIV10gRG9uJ3QgY2hlY2sgZm9yIGF1eGlsaWFyeSAoPT0gbW91c2UpIHBvcnQKKwlpODA0Mi5ub2tiZAlbSFddIERvbid0IGNoZWNrL2NyZWF0ZSBrZXlib2FyZCBwb3J0CisJaTgwNDIubm9sb29wCVtIV10gRGlzYWJsZSB0aGUgQVVYIExvb3BiYWNrIGNvbW1hbmQgd2hpbGUgcHJvYmluZworCQkJICAgICBmb3IgdGhlIEFVWCBwb3J0CisJaTgwNDIubm9tdXgJW0hXXSBEb24ndCBjaGVjayBwcmVzZW5jZSBvZiBhbiBhY3RpdmUgbXVsdGlwbGV4aW5nCisJCQkgICAgIGNvbnRyb2xsZXIKKwlpODA0Mi5ub3BucAlbSFddIERvbid0IHVzZSBBQ1BJUG5QIC8gUG5QQklPUyB0byBkaXNjb3ZlciBLQkQvQVVYCisJCQkgICAgIGNvbnRyb2xsZXJzCisJaTgwNDIubm90aW1lb3V0CVtIV10gSWdub3JlIHRpbWVvdXQgY29uZGl0aW9uIHNpZ25hbGxlZCBieSBjb250cm9sbGVyCisJaTgwNDIucmVzZXQJW0hXXSBSZXNldCB0aGUgY29udHJvbGxlciBkdXJpbmcgaW5pdCwgY2xlYW51cCBhbmQKKwkJCSAgICAgc3VzcGVuZC10by1yYW0gdHJhbnNpdGlvbnMsIG9ubHkgZHVyaW5nIHMycgorCQkJICAgICB0cmFuc2l0aW9ucywgb3IgbmV2ZXIgcmVzZXQKKwkJCUZvcm1hdDogeyAxIHwgWSB8IHkgfCAwIHwgTiB8IG4gfQorCQkJMSwgWSwgeTogYWx3YXlzIHJlc2V0IGNvbnRyb2xsZXIKKwkJCTAsIE4sIG46IGRvbid0IGV2ZXIgcmVzZXQgY29udHJvbGxlcgorCQkJRGVmYXVsdDogb25seSBvbiBzMnIgdHJhbnNpdGlvbnMgb24geDg2OyBtb3N0IG90aGVyCisJCQlhcmNoaXRlY3R1cmVzIGZvcmNlIHJlc2V0IHRvIGJlIGFsd2F5cyBleGVjdXRlZAorCWk4MDQyLnVubG9jawlbSFddIFVubG9jayAoaWdub3JlKSB0aGUga2V5bG9jaworCWk4MDQyLmtiZHJlc2V0ICBbSFddIFJlc2V0IGRldmljZSBjb25uZWN0ZWQgdG8gS0JEIHBvcnQKKworCWk4MTA9CQlbSFcsRFJNXQorCisJaThrLmlnbm9yZV9kbWkJW0hXXSBDb250aW51ZSBwcm9iaW5nIGhhcmR3YXJlIGV2ZW4gaWYgRE1JIGRhdGEKKwkJCWluZGljYXRlcyB0aGF0IHRoZSBkcml2ZXIgaXMgcnVubmluZyBvbiB1bnN1cHBvcnRlZAorCQkJaGFyZHdhcmUuCisJaThrLmZvcmNlCVtIV10gQWN0aXZhdGUgaThrIGRyaXZlciBldmVuIGlmIFNNTSBCSU9TIHNpZ25hdHVyZQorCQkJZG9lcyBub3QgbWF0Y2ggbGlzdCBvZiBzdXBwb3J0ZWQgbW9kZWxzLgorCWk4ay5wb3dlcl9zdGF0dXMKKwkJCVtIV10gUmVwb3J0IHBvd2VyIHN0YXR1cyBpbiAvcHJvYy9pOGsKKwkJCShkaXNhYmxlZCBieSBkZWZhdWx0KQorCWk4ay5yZXN0cmljdGVkCVtIV10gQWxsb3cgY29udHJvbGxpbmcgZmFucyBvbmx5IGlmIFNZU19BRE1JTgorCQkJY2FwYWJpbGl0eSBpcyBzZXQuCisKKwlpOTE1LmludmVydF9icmlnaHRuZXNzPQorCQkJW0RSTV0gSW52ZXJ0IHRoZSBzZW5zZSBvZiB0aGUgdmFyaWFibGUgdGhhdCBpcyB1c2VkIHRvCisJCQlzZXQgdGhlIGJyaWdodG5lc3Mgb2YgdGhlIHBhbmVsIGJhY2tsaWdodC4gTm9ybWFsbHkgYQorCQkJYnJpZ2h0bmVzcyB2YWx1ZSBvZiAwIGluZGljYXRlcyBiYWNrbGlnaHQgc3dpdGNoZWQgb2ZmLAorCQkJYW5kIHRoZSBtYXhpbXVtIG9mIHRoZSBicmlnaHRuZXNzIHZhbHVlIHNldHMgdGhlIGJhY2tsaWdodAorCQkJdG8gbWF4aW11bSBicmlnaHRuZXNzLiBJZiB0aGlzIHBhcmFtZXRlciBpcyBzZXQgdG8gMAorCQkJKGRlZmF1bHQpIGFuZCB0aGUgbWFjaGluZSByZXF1aXJlcyBpdCwgb3IgdGhpcyBwYXJhbWV0ZXIKKwkJCWlzIHNldCB0byAxLCBhIGJyaWdodG5lc3MgdmFsdWUgb2YgMCBzZXRzIHRoZSBiYWNrbGlnaHQKKwkJCXRvIG1heGltdW0gYnJpZ2h0bmVzcywgYW5kIHRoZSBtYXhpbXVtIG9mIHRoZSBicmlnaHRuZXNzCisJCQl2YWx1ZSBzd2l0Y2hlcyB0aGUgYmFja2xpZ2h0IG9mZi4KKwkJCS0xIC0tIG5ldmVyIGludmVydCBicmlnaHRuZXNzCisJCQkgMCAtLSBtYWNoaW5lIGRlZmF1bHQKKwkJCSAxIC0tIGZvcmNlIGJyaWdodG5lc3MgaW52ZXJzaW9uCisKKwlpY249CQlbSFcsSVNETl0KKwkJCUZvcm1hdDogPGlvPlssPG1lbWJhc2U+Wyw8aWNuX2lkPlssPGljbl9pZDI+XV1dCisKKwlpZGUtY29yZS5ub2RtYT0JW0hXXSAoRSlJREUgc3Vic3lzdGVtCisJCQlGb3JtYXQ6ID0wLjAgdG8gcHJldmVudCBkbWEgb24gaGRhLCA9MC4xIGhkYiA9MS4wIGhkYworCQkJLnZsYl9jbG9jayAucGNpX2Nsb2NrIC5ub2ZsdXNoIC5ub2hwYSAubm9wcm9iZSAubm93ZXJyCisJCQkuY2Ryb20gLmNocyAuaWdub3JlX2NhYmxlIGFyZSBhZGRpdGlvbmFsIG9wdGlvbnMKKwkJCVNlZSBEb2N1bWVudGF0aW9uL2lkZS9pZGUudHh0LgorCisJaWRlLWdlbmVyaWMucHJvYmUtbWFzaz0gW0hXXSAoRSlJREUgc3Vic3lzdGVtCisJCQlGb3JtYXQ6IDxpbnQ+CisJCQlQcm9iZSBtYXNrIGZvciBsZWdhY3kgSVNBIElERSBwb3J0cy4gIERlcGVuZGluZyBvbgorCQkJcGxhdGZvcm0gdXAgdG8gNiBwb3J0cyBhcmUgc3VwcG9ydGVkLCBlbmFibGVkIGJ5CisJCQlzZXR0aW5nIGNvcnJlc3BvbmRpbmcgYml0cyBpbiB0aGUgbWFzayB0byAxLiAgVGhlCisJCQlkZWZhdWx0IHZhbHVlIGlzIDB4MCwgd2hpY2ggaGFzIGEgc3BlY2lhbCBtZWFuaW5nLgorCQkJT24gc3lzdGVtcyB0aGF0IGhhdmUgUENJLCBpdCB0cmlnZ2VycyBzY2FubmluZyB0aGUKKwkJCVBDSSBidXMgZm9yIHRoZSBmaXJzdCBhbmQgdGhlIHNlY29uZCBwb3J0LCB3aGljaAorCQkJYXJlIHRoZW4gcHJvYmVkLiAgT24gc3lzdGVtcyB3aXRob3V0IFBDSSB0aGUgdmFsdWUKKwkJCW9mIDB4MCBlbmFibGVzIHByb2JpbmcgdGhlIHR3byBmaXJzdCBwb3J0cyBhcyBpZiBpdAorCQkJd2FzIDB4My4KKworCWlkZS1wY2ktZ2VuZXJpYy5hbGwtZ2VuZXJpYy1pZGUgW0hXXSAoRSlJREUgc3Vic3lzdGVtCisJCQlDbGFpbSBhbGwgdW5rbm93biBQQ0kgSURFIHN0b3JhZ2UgY29udHJvbGxlcnMuCisKKwlpZGxlPQkJW1g4Nl0KKwkJCUZvcm1hdDogaWRsZT1wb2xsLCBpZGxlPWhhbHQsIGlkbGU9bm9td2FpdAorCQkJUG9sbCBmb3JjZXMgYSBwb2xsaW5nIGlkbGUgbG9vcCB0aGF0IGNhbiBzbGlnaHRseQorCQkJaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Ugb2Ygd2FraW5nIHVwIGEgaWRsZSBDUFUsIGJ1dAorCQkJd2lsbCB1c2UgYSBsb3Qgb2YgcG93ZXIgYW5kIG1ha2UgdGhlIHN5c3RlbSBydW4gaG90LgorCQkJTm90IHJlY29tbWVuZGVkLgorCQkJaWRsZT1oYWx0OiBIYWx0IGlzIGZvcmNlZCB0byBiZSB1c2VkIGZvciBDUFUgaWRsZS4KKwkJCUluIHN1Y2ggY2FzZSBDMi9DMyB3b24ndCBiZSB1c2VkIGFnYWluLgorCQkJaWRsZT1ub213YWl0OiBEaXNhYmxlIG13YWl0IGZvciBDUFUgQy1zdGF0ZXMKKworCWlnbm9yZV9sb2dsZXZlbAlbS05MXQorCQkJSWdub3JlIGxvZ2xldmVsIHNldHRpbmcgLSB0aGlzIHdpbGwgcHJpbnQgL2FsbC8KKwkJCWtlcm5lbCBtZXNzYWdlcyB0byB0aGUgY29uc29sZS4gVXNlZnVsIGZvciBkZWJ1Z2dpbmcuCisJCQlXZSBhbHNvIGFkZCBpdCBhcyBwcmludGsgbW9kdWxlIHBhcmFtZXRlciwgc28gdXNlcnMKKwkJCWNvdWxkIGNoYW5nZSBpdCBkeW5hbWljYWxseSwgdXN1YWxseSBieQorCQkJL3N5cy9tb2R1bGUvcHJpbnRrL3BhcmFtZXRlcnMvaWdub3JlX2xvZ2xldmVsLgorCisJaWhhc2hfZW50cmllcz0JW0tOTF0KKwkJCVNldCBudW1iZXIgb2YgaGFzaCBidWNrZXRzIGZvciBpbm9kZSBjYWNoZS4KKworCWltYV9hcHByYWlzZT0JW0lNQV0gYXBwcmFpc2UgaW50ZWdyaXR5IG1lYXN1cmVtZW50cworCQkJRm9ybWF0OiB7ICJvZmYiIHwgImVuZm9yY2UiIHwgImZpeCIgfCAibG9nIiB9CisJCQlkZWZhdWx0OiAiZW5mb3JjZSIKKworCWltYV9hcHByYWlzZV90Y2IgW0lNQV0KKwkJCVRoZSBidWlsdGluIGFwcHJhaXNlIHBvbGljeSBhcHByYWlzZXMgYWxsIGZpbGVzCisJCQlvd25lZCBieSB1aWQ9MC4KKworCWltYV9oYXNoPQlbSU1BXQorCQkJRm9ybWF0OiB7IG1kNSB8IHNoYTEgfCBybWQxNjAgfCBzaGEyNTYgfCBzaGEzODQKKwkJCQkgICB8IHNoYTUxMiB8IC4uLiB9CisJCQlkZWZhdWx0OiAic2hhMSIKKworCQkJVGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGhhc2ggYWxnb3JpdGhtcyBpcyBkZWZpbmVkCisJCQlpbiBjcnlwdG8vaGFzaF9pbmZvLmguCisKKwlpbWFfcG9saWN5PQlbSU1BXQorCQkJVGhlIGJ1aWx0aW4gbWVhc3VyZW1lbnQgcG9saWN5IHRvIGxvYWQgZHVyaW5nIElNQQorCQkJc2V0dXAuICBTcGVjeWZpbmcgInRjYiIgYXMgdGhlIHZhbHVlLCBtZWFzdXJlcyBhbGwKKwkJCXByb2dyYW1zIGV4ZWMnZCwgZmlsZXMgbW1hcCdkIGZvciBleGVjLCBhbmQgYWxsIGZpbGVzCisJCQlvcGVuZWQgd2l0aCB0aGUgcmVhZCBtb2RlIGJpdCBzZXQgYnkgZWl0aGVyIHRoZQorCQkJZWZmZWN0aXZlIHVpZCAoZXVpZD0wKSBvciB1aWQ9MC4KKwkJCUZvcm1hdDogInRjYiIKKworCWltYV90Y2IJCVtJTUFdIERlcHJlY2F0ZWQuICBVc2UgaW1hX3BvbGljeT0gaW5zdGVhZC4KKwkJCUxvYWQgYSBwb2xpY3kgd2hpY2ggbWVldHMgdGhlIG5lZWRzIG9mIHRoZSBUcnVzdGVkCisJCQlDb21wdXRpbmcgQmFzZS4gIFRoaXMgbWVhbnMgSU1BIHdpbGwgbWVhc3VyZSBhbGwKKwkJCXByb2dyYW1zIGV4ZWMnZCwgZmlsZXMgbW1hcCdkIGZvciBleGVjLCBhbmQgYWxsIGZpbGVzCisJCQlvcGVuZWQgZm9yIHJlYWQgYnkgdWlkPTAuCisKKwlpbWFfdGVtcGxhdGU9ICAgW0lNQV0KKwkJCVNlbGVjdCBvbmUgb2YgZGVmaW5lZCBJTUEgbWVhc3VyZW1lbnRzIHRlbXBsYXRlIGZvcm1hdHMuCisJCQlGb3JtYXRzOiB7ICJpbWEiIHwgImltYS1uZyIgfCAiaW1hLXNpZyIgfQorCQkJRGVmYXVsdDogImltYS1uZyIKKworCWltYV90ZW1wbGF0ZV9mbXQ9CisJICAgICAgICAgICAgICAgIFtJTUFdIERlZmluZSBhIGN1c3RvbSB0ZW1wbGF0ZSBmb3JtYXQuCisJCQlGb3JtYXQ6IHsgImZpZWxkMXwuLi58ZmllbGROIiB9CisKKwlpbWEuYWhhc2hfbWluc2l6ZT0gW0lNQV0gTWluaW11bSBmaWxlIHNpemUgZm9yIGFzeW5jaHJvbm91cyBoYXNoIHVzYWdlCisJCQlGb3JtYXQ6IDxtaW5fZmlsZV9zaXplPgorCQkJU2V0IHRoZSBtaW5pbWFsIGZpbGUgc2l6ZSBmb3IgdXNpbmcgYXN5bmNocm9ub3VzIGhhc2guCisJCQlJZiBsZWZ0IHVuc3BlY2lmaWVkLCBhaGFzaCB1c2FnZSBpcyBkaXNhYmxlZC4KKworCQkJYWhhc2ggcGVyZm9ybWFuY2UgdmFyaWVzIGZvciBkaWZmZXJlbnQgZGF0YSBzaXplcyBvbgorCQkJZGlmZmVyZW50IGNyeXB0byBhY2NlbGVyYXRvcnMuIFRoaXMgb3B0aW9uIGNhbiBiZSB1c2VkCisJCQl0byBhY2hpZXZlIHRoZSBiZXN0IHBlcmZvcm1hbmNlIGZvciBhIHBhcnRpY3VsYXIgSFcuCisKKwlpbWEuYWhhc2hfYnVmc2l6ZT0gW0lNQV0gQXN5bmNocm9ub3VzIGhhc2ggYnVmZmVyIHNpemUKKwkJCUZvcm1hdDogPGJ1ZnNpemU+CisJCQlTZXQgaGFzaGluZyBidWZmZXIgc2l6ZS4gRGVmYXVsdDogNGsuCisKKwkJCWFoYXNoIHBlcmZvcm1hbmNlIHZhcmllcyBmb3IgZGlmZmVyZW50IGNodW5rIHNpemVzIG9uCisJCQlkaWZmZXJlbnQgY3J5cHRvIGFjY2VsZXJhdG9ycy4gVGhpcyBvcHRpb24gY2FuIGJlIHVzZWQKKwkJCXRvIGFjaGlldmUgYmVzdCBwZXJmb3JtYW5jZSBmb3IgcGFydGljdWxhciBIVy4KKworCWluaXQ9CQlbS05MXQorCQkJRm9ybWF0OiA8ZnVsbF9wYXRoPgorCQkJUnVuIHNwZWNpZmllZCBiaW5hcnkgaW5zdGVhZCBvZiAvc2Jpbi9pbml0IGFzIGluaXQKKwkJCXByb2Nlc3MuCisKKwlpbml0Y2FsbF9kZWJ1ZwlbS05MXSBUcmFjZSBpbml0Y2FsbHMgYXMgdGhleSBhcmUgZXhlY3V0ZWQuICBVc2VmdWwKKwkJCWZvciB3b3JraW5nIG91dCB3aGVyZSB0aGUga2VybmVsIGlzIGR5aW5nIGR1cmluZworCQkJc3RhcnR1cC4KKworCWluaXRjYWxsX2JsYWNrbGlzdD0gIFtLTkxdIERvIG5vdCBleGVjdXRlIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YKKwkJCWluaXRjYWxsIGZ1bmN0aW9ucy4gIFVzZWZ1bCBmb3IgZGVidWdnaW5nIGJ1aWx0LWluCisJCQltb2R1bGVzIGFuZCBpbml0Y2FsbHMuCisKKwlpbml0cmQ9CQlbQk9PVF0gU3BlY2lmeSB0aGUgbG9jYXRpb24gb2YgdGhlIGluaXRpYWwgcmFtZGlzaworCisJaW5wb3J0LmlycT0JW0hXXSBJbnBvcnQgKEFUSSBYTCBhbmQgTWljcm9zb2Z0KSBidXNtb3VzZSBkcml2ZXIKKwkJCUZvcm1hdDogPGlycT4KKworCWludF9wbG5fZW5hYmxlICBbeDg2XSBFbmFibGUgcG93ZXIgbGltaXQgbm90aWZpY2F0aW9uIGludGVycnVwdAorCisJaW50ZWdyaXR5X2F1ZGl0PVtJTUFdCisJCQlGb3JtYXQ6IHsgIjAiIHwgIjEiIH0KKwkJCTAgLS0gYmFzaWMgaW50ZWdyaXR5IGF1ZGl0aW5nIG1lc3NhZ2VzLiAoRGVmYXVsdCkKKwkJCTEgLS0gYWRkaXRpb25hbCBpbnRlZ3JpdHkgYXVkaXRpbmcgbWVzc2FnZXMuCisKKwlpbnRlbF9pb21tdT0JW0RNQVJdIEludGVsIElPTU1VIGRyaXZlciAoRE1BUikgb3B0aW9uCisJCW9uCisJCQlFbmFibGUgaW50ZWwgaW9tbXUgZHJpdmVyLgorCQlvZmYKKwkJCURpc2FibGUgaW50ZWwgaW9tbXUgZHJpdmVyLgorCQlpZ2Z4X29mZiBbRGVmYXVsdCBPZmZdCisJCQlCeSBkZWZhdWx0LCBnZnggaXMgbWFwcGVkIGFzIG5vcm1hbCBkZXZpY2UuIElmIGEgZ2Z4CisJCQlkZXZpY2UgaGFzIGEgZGVkaWNhdGVkIERNQVIgdW5pdCwgdGhlIERNQVIgdW5pdCBpcworCQkJYnlwYXNzZWQgYnkgbm90IGVuYWJsaW5nIERNQVIgd2l0aCB0aGlzIG9wdGlvbi4gSW4KKwkJCXRoaXMgY2FzZSwgZ2Z4IGRldmljZSB3aWxsIHVzZSBwaHlzaWNhbCBhZGRyZXNzIGZvcgorCQkJRE1BLgorCQlmb3JjZWRhYyBbeDg2XzY0XQorCQkJV2l0aCB0aGlzIG9wdGlvbiBpb21tdSB3aWxsIG5vdCBvcHRpbWl6ZSB0byBsb29rCisJCQlmb3IgaW8gdmlydHVhbCBhZGRyZXNzIGJlbG93IDMyLWJpdCBmb3JjaW5nIGR1YWwKKwkJCWFkZHJlc3MgY3ljbGUgb24gcGNpIGJ1cyBmb3IgY2FyZHMgc3VwcG9ydGluZyBncmVhdGVyCisJCQl0aGFuIDMyLWJpdCBhZGRyZXNzaW5nLiBUaGUgZGVmYXVsdCBpcyB0byBsb29rCisJCQlmb3IgdHJhbnNsYXRpb24gYmVsb3cgMzItYml0IGFuZCBpZiBub3QgYXZhaWxhYmxlCisJCQl0aGVuIGxvb2sgaW4gdGhlIGhpZ2hlciByYW5nZS4KKwkJc3RyaWN0IFtEZWZhdWx0IE9mZl0KKwkJCVdpdGggdGhpcyBvcHRpb24gb24gZXZlcnkgdW5tYXBfc2luZ2xlIG9wZXJhdGlvbiB3aWxsCisJCQlyZXN1bHQgaW4gYSBoYXJkd2FyZSBJT1RMQiBmbHVzaCBvcGVyYXRpb24gYXMgb3Bwb3NlZAorCQkJdG8gYmF0Y2hpbmcgdGhlbSBmb3IgcGVyZm9ybWFuY2UuCisJCXNwX29mZiBbRGVmYXVsdCBPZmZdCisJCQlCeSBkZWZhdWx0LCBzdXBlciBwYWdlIHdpbGwgYmUgc3VwcG9ydGVkIGlmIEludGVsIElPTU1VCisJCQloYXMgdGhlIGNhcGFiaWxpdHkuIFdpdGggdGhpcyBvcHRpb24sIHN1cGVyIHBhZ2Ugd2lsbAorCQkJbm90IGJlIHN1cHBvcnRlZC4KKwkJZWNzX29mZiBbRGVmYXVsdCBPZmZdCisJCQlCeSBkZWZhdWx0LCBleHRlbmRlZCBjb250ZXh0IHRhYmxlcyB3aWxsIGJlIHN1cHBvcnRlZCBpZgorCQkJdGhlIGhhcmR3YXJlIGFkdmVydGlzZXMgdGhhdCBpdCBoYXMgc3VwcG9ydCBib3RoIGZvciB0aGUKKwkJCWV4dGVuZGVkIHRhYmxlcyB0aGVtc2VsdmVzLCBhbmQgYWxzbyBQQVNJRCBzdXBwb3J0LiBXaXRoCisJCQl0aGlzIG9wdGlvbiBzZXQsIGV4dGVuZGVkIHRhYmxlcyB3aWxsIG5vdCBiZSB1c2VkIGV2ZW4KKwkJCW9uIGhhcmR3YXJlIHdoaWNoIGNsYWltcyB0byBzdXBwb3J0IHRoZW0uCisKKwlpbnRlbF9pZGxlLm1heF9jc3RhdGU9CVtLTkwsSFcsQUNQSSxYODZdCisJCQkwCWRpc2FibGVzIGludGVsX2lkbGUgYW5kIGZhbGwgYmFjayBvbiBhY3BpX2lkbGUuCisJCQkxIHRvIDYJc3BlY2lmeSBtYXhpbXVtIGRlcHRoIG9mIEMtc3RhdGUuCisKKwlpbnRlbF9wc3RhdGU9ICBbWDg2XQorCQkgICAgICAgZGlzYWJsZQorCQkgICAgICAgICBEbyBub3QgZW5hYmxlIGludGVsX3BzdGF0ZSBhcyB0aGUgZGVmYXVsdAorCQkgICAgICAgICBzY2FsaW5nIGRyaXZlciBmb3IgdGhlIHN1cHBvcnRlZCBwcm9jZXNzb3JzCisJCSAgICAgICBmb3JjZQorCQkJIEVuYWJsZSBpbnRlbF9wc3RhdGUgb24gc3lzdGVtcyB0aGF0IHByb2hpYml0IGl0IGJ5IGRlZmF1bHQKKwkJCSBpbiBmYXZvciBvZiBhY3BpLWNwdWZyZXEuIEZvcmNpbmcgdGhlIGludGVsX3BzdGF0ZSBkcml2ZXIKKwkJCSBpbnN0ZWFkIG9mIGFjcGktY3B1ZnJlcSBtYXkgZGlzYWJsZSBwbGF0Zm9ybSBmZWF0dXJlcywgc3VjaAorCQkJIGFzIHRoZXJtYWwgY29udHJvbHMgYW5kIHBvd2VyIGNhcHBpbmcsIHRoYXQgcmVseSBvbiBBQ1BJCisJCQkgUC1TdGF0ZXMgaW5mb3JtYXRpb24gYmVpbmcgaW5kaWNhdGVkIHRvIE9TUE0gYW5kIHRoZXJlZm9yZQorCQkJIHNob3VsZCBiZSB1c2VkIHdpdGggY2F1dGlvbi4gVGhpcyBvcHRpb24gZG9lcyBub3Qgd29yayB3aXRoCisJCQkgcHJvY2Vzc29ycyB0aGF0IGFyZW4ndCBzdXBwb3J0ZWQgYnkgdGhlIGludGVsX3BzdGF0ZSBkcml2ZXIKKwkJCSBvciBvbiBwbGF0Zm9ybXMgdGhhdCB1c2UgcGNjLWNwdWZyZXEgaW5zdGVhZCBvZiBhY3BpLWNwdWZyZXEuCisJCSAgICAgICBub19od3AKKwkJICAgICAgICAgRG8gbm90IGVuYWJsZSBoYXJkd2FyZSBQIHN0YXRlIGNvbnRyb2wgKEhXUCkKKwkJCSBpZiBhdmFpbGFibGUuCisJCWh3cF9vbmx5CisJCQlPbmx5IGxvYWQgaW50ZWxfcHN0YXRlIG9uIHN5c3RlbXMgd2hpY2ggc3VwcG9ydAorCQkJaGFyZHdhcmUgUCBzdGF0ZSBjb250cm9sIChIV1ApIGlmIGF2YWlsYWJsZS4KKworCWludHJlbWFwPQlbWDg2LTY0LCBJbnRlbC1JT01NVV0KKwkJCW9uCWVuYWJsZSBJbnRlcnJ1cHQgUmVtYXBwaW5nIChkZWZhdWx0KQorCQkJb2ZmCWRpc2FibGUgSW50ZXJydXB0IFJlbWFwcGluZworCQkJbm9zaWQJZGlzYWJsZSBTb3VyY2UgSUQgY2hlY2tpbmcKKwkJCW5vX3gyYXBpY19vcHRvdXQKKwkJCQlCSU9TIHgyQVBJQyBvcHQtb3V0IHJlcXVlc3Qgd2lsbCBiZSBpZ25vcmVkCisJCQlub3Bvc3QJZGlzYWJsZSBJbnRlcnJ1cHQgUG9zdGluZworCisJaW9tZW09CQlEaXNhYmxlIHN0cmljdCBjaGVja2luZyBvZiBhY2Nlc3MgdG8gTU1JTyBtZW1vcnkKKwkJc3RyaWN0CXJlZ2lvbnMgZnJvbSB1c2Vyc3BhY2UuCisJCXJlbGF4ZWQKKworCWlvbW11PQkJW3g4Nl0KKwkJb2ZmCisJCWZvcmNlCisJCW5vZm9yY2UKKwkJYmlvbWVyZ2UKKwkJcGFuaWMKKwkJbm9wYW5pYworCQltZXJnZQorCQlub21lcmdlCisJCWZvcmNlc2FjCisJCXNvZnQKKwkJcHQJCVt4ODYsIElBLTY0XQorCQlub2J5cGFzcwlbUFBDL1BPV0VSTlZdCisJCQlEaXNhYmxlIElPTU1VIGJ5cGFzcywgdXNpbmcgSU9NTVUgZm9yIFBDSSBkZXZpY2VzLgorCisKKwlpbzc9CQlbSFddIElPNyBmb3IgTWFydmVsIGJhc2VkIGFscGhhIHN5c3RlbXMKKwkJCVNlZSBjb21tZW50IGJlZm9yZSBtYXJ2ZWxfc3BlY2lmeV9pbzcgaW4KKwkJCWFyY2gvYWxwaGEva2VybmVsL2NvcmVfbWFydmVsLmMuCisKKwlpb19kZWxheT0JW1g4Nl0gSS9PIGRlbGF5IG1ldGhvZAorCQkweDgwCisJCQlTdGFuZGFyZCBwb3J0IDB4ODAgYmFzZWQgZGVsYXkKKwkJMHhlZAorCQkJQWx0ZXJuYXRlIHBvcnQgMHhlZCBiYXNlZCBkZWxheSAobmVlZGVkIG9uIHNvbWUgc3lzdGVtcykKKwkJdWRlbGF5CisJCQlTaW1wbGUgdHdvIG1pY3Jvc2Vjb25kcyBkZWxheQorCQlub25lCisJCQlObyBkZWxheQorCisJaXA9CQlbSVBfUE5QXQorCQkJU2VlIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzL25mc3Jvb3QudHh0LgorCisJaXJxZml4dXAJW0hXXQorCQkJV2hlbiBhbiBpbnRlcnJ1cHQgaXMgbm90IGhhbmRsZWQgc2VhcmNoIGFsbCBoYW5kbGVycworCQkJZm9yIGl0LiBJbnRlbmRlZCB0byBnZXQgc3lzdGVtcyB3aXRoIGJhZGx5IGJyb2tlbgorCQkJZmlybXdhcmUgcnVubmluZy4KKworCWlycXBvbGwJCVtIV10KKwkJCVdoZW4gYW4gaW50ZXJydXB0IGlzIG5vdCBoYW5kbGVkIHNlYXJjaCBhbGwgaGFuZGxlcnMKKwkJCWZvciBpdC4gQWxzbyBjaGVjayBhbGwgaGFuZGxlcnMgZWFjaCB0aW1lcgorCQkJaW50ZXJydXB0LiBJbnRlbmRlZCB0byBnZXQgc3lzdGVtcyB3aXRoIGJhZGx5IGJyb2tlbgorCQkJZmlybXdhcmUgcnVubmluZy4KKworCWlzYXBucD0JCVtJU0FQTlBdCisJCQlGb3JtYXQ6IDxSRFA+LDxyZXNldD4sPHBjaV9zY2FuPiw8dmVyYm9zaXR5PgorCisJaXNvbGNwdXM9CVtLTkwsU01QXSBJc29sYXRlIENQVXMgZnJvbSB0aGUgZ2VuZXJhbCBzY2hlZHVsZXIuCisJCQlGb3JtYXQ6CisJCQk8Y3B1IG51bWJlcj4sLi4uLDxjcHUgbnVtYmVyPgorCQkJb3IKKwkJCTxjcHUgbnVtYmVyPi08Y3B1IG51bWJlcj4KKwkJCShtdXN0IGJlIGEgcG9zaXRpdmUgcmFuZ2UgaW4gYXNjZW5kaW5nIG9yZGVyKQorCQkJb3IgYSBtaXh0dXJlCisJCQk8Y3B1IG51bWJlcj4sLi4uLDxjcHUgbnVtYmVyPi08Y3B1IG51bWJlcj4KKworCQkJVGhpcyBvcHRpb24gY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBvbmUgb3IgbW9yZSBDUFVzCisJCQl0byBpc29sYXRlIGZyb20gdGhlIGdlbmVyYWwgU01QIGJhbGFuY2luZyBhbmQgc2NoZWR1bGluZworCQkJYWxnb3JpdGhtcy4gWW91IGNhbiBtb3ZlIGEgcHJvY2VzcyBvbnRvIG9yIG9mZiBhbgorCQkJImlzb2xhdGVkIiBDUFUgdmlhIHRoZSBDUFUgYWZmaW5pdHkgc3lzY2FsbHMgb3IgY3B1c2V0LgorCQkJPGNwdSBudW1iZXI+IGJlZ2lucyBhdCAwIGFuZCB0aGUgbWF4aW11bSB2YWx1ZSBpcworCQkJIm51bWJlciBvZiBDUFVzIGluIHN5c3RlbSAtIDEiLgorCisJCQlUaGlzIG9wdGlvbiBpcyB0aGUgcHJlZmVycmVkIHdheSB0byBpc29sYXRlIENQVXMuIFRoZQorCQkJYWx0ZXJuYXRpdmUgLS0gbWFudWFsbHkgc2V0dGluZyB0aGUgQ1BVIG1hc2sgb2YgYWxsCisJCQl0YXNrcyBpbiB0aGUgc3lzdGVtIC0tIGNhbiBjYXVzZSBwcm9ibGVtcyBhbmQKKwkJCXN1Ym9wdGltYWwgbG9hZCBiYWxhbmNlciBwZXJmb3JtYW5jZS4KKworCWl1Y3Y9CQlbSFcsTkVUXQorCisJaXZyc19pb2FwaWMJW0hXLFg4Nl82NF0KKwkJCVByb3ZpZGUgYW4gb3ZlcnJpZGUgdG8gdGhlIElPQVBJQy1JRDwtPkRFVklDRS1JRAorCQkJbWFwcGluZyBwcm92aWRlZCBpbiB0aGUgSVZSUyBBQ1BJIHRhYmxlLiBGb3IKKwkJCWV4YW1wbGUsIHRvIG1hcCBJT0FQSUMtSUQgZGVjaW1hbCAxMCB0bworCQkJUENJIGRldmljZSAwMDoxNC4wIHdyaXRlIHRoZSBwYXJhbWV0ZXIgYXM6CisJCQkJaXZyc19pb2FwaWNbMTBdPTAwOjE0LjAKKworCWl2cnNfaHBldAlbSFcsWDg2XzY0XQorCQkJUHJvdmlkZSBhbiBvdmVycmlkZSB0byB0aGUgSFBFVC1JRDwtPkRFVklDRS1JRAorCQkJbWFwcGluZyBwcm92aWRlZCBpbiB0aGUgSVZSUyBBQ1BJIHRhYmxlLiBGb3IKKwkJCWV4YW1wbGUsIHRvIG1hcCBIUEVULUlEIGRlY2ltYWwgMCB0bworCQkJUENJIGRldmljZSAwMDoxNC4wIHdyaXRlIHRoZSBwYXJhbWV0ZXIgYXM6CisJCQkJaXZyc19ocGV0WzBdPTAwOjE0LjAKKworCWpzPQkJW0hXLEpPWV0gQW5hbG9nIGpveXN0aWNrCisJCQlTZWUgRG9jdW1lbnRhdGlvbi9pbnB1dC9qb3lzdGljay50eHQuCisKKwlrYXNsci9ub2thc2xyCVtYODZdCisJCQlFbmFibGUvZGlzYWJsZSBrZXJuZWwgYW5kIG1vZHVsZSBiYXNlIG9mZnNldCBBU0xSCisJCQkoQWRkcmVzcyBTcGFjZSBMYXlvdXQgUmFuZG9taXphdGlvbikgaWYgYnVpbHQgaW50bworCQkJdGhlIGtlcm5lbC4gV2hlbiBDT05GSUdfSElCRVJOQVRJT04gaXMgc2VsZWN0ZWQsCisJCQlrQVNMUiBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LiBXaGVuIGtBU0xSIGlzIGVuYWJsZWQsCisJCQloaWJlcm5hdGlvbiB3aWxsIGJlIGRpc2FibGVkLgorCisJa2VlcGluaXRyZAlbSFcsQVJNXQorCisJa2VybmVsY29yZT1ubltLTUddCVtLTkwsWDg2LElBLTY0LFBQQ10gVGhpcyBwYXJhbWV0ZXIKKwkJCXNwZWNpZmllcyB0aGUgYW1vdW50IG9mIG1lbW9yeSB1c2FibGUgYnkgdGhlIGtlcm5lbAorCQkJZm9yIG5vbi1tb3ZhYmxlIGFsbG9jYXRpb25zLiAgVGhlIHJlcXVlc3RlZCBhbW91bnQgaXMKKwkJCXNwcmVhZCBldmVubHkgdGhyb3VnaG91dCBhbGwgbm9kZXMgaW4gdGhlIHN5c3RlbS4gVGhlCisJCQlyZW1haW5pbmcgbWVtb3J5IGluIGVhY2ggbm9kZSBpcyB1c2VkIGZvciBNb3ZhYmxlCisJCQlwYWdlcy4gSW4gdGhlIGV2ZW50LCBhIG5vZGUgaXMgdG9vIHNtYWxsIHRvIGhhdmUgYm90aAorCQkJa2VybmVsY29yZSBhbmQgTW92YWJsZSBwYWdlcywga2VybmVsY29yZSBwYWdlcyB3aWxsCisJCQl0YWtlIHByaW9yaXR5IGFuZCBvdGhlciBub2RlcyB3aWxsIGhhdmUgYSBsYXJnZXIgbnVtYmVyCisJCQlvZiBNb3ZhYmxlIHBhZ2VzLiAgVGhlIE1vdmFibGUgem9uZSBpcyB1c2VkIGZvciB0aGUKKwkJCWFsbG9jYXRpb24gb2YgcGFnZXMgdGhhdCBtYXkgYmUgcmVjbGFpbWVkIG9yIG1vdmVkCisJCQlieSB0aGUgcGFnZSBtaWdyYXRpb24gc3Vic3lzdGVtLiAgVGhpcyBtZWFucyB0aGF0CisJCQlIdWdlVExCIHBhZ2VzIG1heSBub3QgYmUgYWxsb2NhdGVkIGZyb20gdGhpcyB6b25lLgorCQkJTm90ZSB0aGF0IGFsbG9jYXRpb25zIGxpa2UgUFRFcy1mcm9tLUhpZ2hNZW0gc3RpbGwKKwkJCXVzZSB0aGUgSGlnaE1lbSB6b25lIGlmIGl0IGV4aXN0cywgYW5kIHRoZSBOb3JtYWwKKwkJCXpvbmUgaWYgaXQgZG9lcyBub3QuCisKKwlrZ2RiZGJncD0JW0tHREIsSFddIGtnZGIgb3ZlciBFSENJIHVzYiBkZWJ1ZyBwb3J0LgorCQkJRm9ybWF0OiA8Q29udHJvbGxlciM+Wyxwb2xsIGludGVydmFsXQorCQkJVGhlIGNvbnRyb2xsZXIgIyBpcyB0aGUgbnVtYmVyIG9mIHRoZSBlaGNpIHVzYiBkZWJ1ZworCQkJcG9ydCBhcyBpdCBpcyBwcm9iZWQgdmlhIFBDSS4gIFRoZSBwb2xsIGludGVydmFsIGlzCisJCQlvcHRpb25hbCBhbmQgaXMgdGhlIG51bWJlciBzZWNvbmRzIGluIGJldHdlZW4KKwkJCWVhY2ggcG9sbCBjeWNsZSB0byB0aGUgZGVidWcgcG9ydCBpbiBjYXNlIHlvdSBuZWVkCisJCQl0aGUgZnVuY3Rpb25hbGl0eSBmb3IgaW50ZXJydXB0aW5nIHRoZSBrZXJuZWwgd2l0aAorCQkJZ2RiIG9yIGNvbnRyb2wtYyBvbiB0aGUgZGJncCBjb25uZWN0aW9uLiAgV2hlbgorCQkJbm90IHVzaW5nIHRoaXMgcGFyYW1ldGVyIHlvdSB1c2Ugc3lzcnEtZyB0byBicmVhayBpbnRvCisJCQl0aGUga2VybmVsIGRlYnVnZ2VyLgorCisJa2dkYm9jPQkJW0tHREIsSFddIGtnZGIgb3ZlciBjb25zb2xlcy4KKwkJCVJlcXVpcmVzIGEgdHR5IGRyaXZlciB0aGF0IHN1cHBvcnRzIGNvbnNvbGUgcG9sbGluZywKKwkJCW9yIGEgc3VwcG9ydGVkIHBvbGxpbmcga2V5Ym9hcmQgZHJpdmVyIChub24tdXNiKS4KKwkJCSBTZXJpYWwgb25seSBmb3JtYXQ6IDxzZXJpYWxfZGV2aWNlPlssYmF1ZF0KKwkJCSBrZXlib2FyZCBvbmx5IGZvcm1hdDoga2JkCisJCQkga2V5Ym9hcmQgYW5kIHNlcmlhbCBmb3JtYXQ6IGtiZCw8c2VyaWFsX2RldmljZT5bLGJhdWRdCisJCQlPcHRpb25hbCBLZXJuZWwgbW9kZSBzZXR0aW5nOgorCQkJIGttcywga2JkIGZvcm1hdDoga21zLGtiZAorCQkJIGttcywga2JkIGFuZCBzZXJpYWwgZm9ybWF0OiBrbXMsa2JkLDxzZXJfZGV2PlssYmF1ZF0KKworCWtnZGJ3YWl0CVtLR0RCXSBTdG9wIGtlcm5lbCBleGVjdXRpb24gYW5kIGVudGVyIHRoZQorCQkJa2VybmVsIGRlYnVnZ2VyIGF0IHRoZSBlYXJsaWVzdCBvcHBvcnR1bml0eS4KKworCWttYWM9CQlbTUlQU10ga29yaW5hIGV0aGVybmV0IE1BQyBhZGRyZXNzLgorCQkJQ29uZmlndXJlIHRoZSBSb3V0ZXJCb2FyZCA1MzIgc2VyaWVzIG9uLWNoaXAKKwkJCUV0aGVybmV0IGFkYXB0ZXIgTUFDIGFkZHJlc3MuCisKKwlrbWVtbGVhaz0JW0tOTF0gQm9vdC10aW1lIGttZW1sZWFrIGVuYWJsZS9kaXNhYmxlCisJCQlWYWxpZCBhcmd1bWVudHM6IG9uLCBvZmYKKwkJCURlZmF1bHQ6IG9uCisJCQlCdWlsdCB3aXRoIENPTkZJR19ERUJVR19LTUVNTEVBS19ERUZBVUxUX09GRj15LAorCQkJdGhlIGRlZmF1bHQgaXMgb2ZmLgorCisJa21lbWNoZWNrPQlbWDg2XSBCb290LXRpbWUga21lbWNoZWNrIGVuYWJsZS9kaXNhYmxlL29uZS1zaG90IG1vZGUKKwkJCVZhbGlkIGFyZ3VtZW50czogMCwgMSwgMgorCQkJa21lbWNoZWNrPTAgKGRpc2FibGVkKQorCQkJa21lbWNoZWNrPTEgKGVuYWJsZWQpCisJCQlrbWVtY2hlY2s9MiAob25lLXNob3QgbW9kZSkKKwkJCURlZmF1bHQ6IDIgKG9uZS1zaG90IG1vZGUpCisKKwlrc3RhY2s9TglbWDg2XSBQcmludCBOIHdvcmRzIGZyb20gdGhlIGtlcm5lbCBzdGFjaworCQkJaW4gb29wcyBkdW1wcy4KKworCWt2bS5pZ25vcmVfbXNycz1bS1ZNXSBJZ25vcmUgZ3Vlc3QgYWNjZXNzZXMgdG8gdW5oYW5kbGVkIE1TUnMuCisJCQlEZWZhdWx0IGlzIDAgKGRvbid0IGlnbm9yZSwgYnV0IGluamVjdCAjR1ApCisKKwlrdm0ubW11X2F1ZGl0PQlbS1ZNXSBUaGlzIGlzIGEgUi9XIHBhcmFtZXRlciB3aGljaCBhbGxvd3MgYXVkaXQKKwkJCUtWTSBNTVUgYXQgcnVudGltZS4KKwkJCURlZmF1bHQgaXMgMCAob2ZmKQorCisJa3ZtLWFtZC5uZXN0ZWQ9CVtLVk0sQU1EXSBBbGxvdyBuZXN0ZWQgdmlydHVhbGl6YXRpb24gaW4gS1ZNL1NWTS4KKwkJCURlZmF1bHQgaXMgMSAoZW5hYmxlZCkKKworCWt2bS1hbWQubnB0PQlbS1ZNLEFNRF0gRGlzYWJsZSBuZXN0ZWQgcGFnaW5nICh2aXJ0dWFsaXplZCBNTVUpCisJCQlmb3IgYWxsIGd1ZXN0cy4KKwkJCURlZmF1bHQgaXMgMSAoZW5hYmxlZCkgaWYgaW4gNjQtYml0IG9yIDMyLWJpdCBQQUUgbW9kZS4KKworCWt2bS1pbnRlbC5lcHQ9CVtLVk0sSW50ZWxdIERpc2FibGUgZXh0ZW5kZWQgcGFnZSB0YWJsZXMKKwkJCSh2aXJ0dWFsaXplZCBNTVUpIHN1cHBvcnQgb24gY2FwYWJsZSBJbnRlbCBjaGlwcy4KKwkJCURlZmF1bHQgaXMgMSAoZW5hYmxlZCkKKworCWt2bS1pbnRlbC5lbXVsYXRlX2ludmFsaWRfZ3Vlc3Rfc3RhdGU9CisJCQlbS1ZNLEludGVsXSBFbmFibGUgZW11bGF0aW9uIG9mIGludmFsaWQgZ3Vlc3Qgc3RhdGVzCisJCQlEZWZhdWx0IGlzIDAgKGRpc2FibGVkKQorCisJa3ZtLWludGVsLmZsZXhwcmlvcml0eT0KKwkJCVtLVk0sSW50ZWxdIERpc2FibGUgRmxleFByaW9yaXR5IGZlYXR1cmUgKFRQUiBzaGFkb3cpLgorCQkJRGVmYXVsdCBpcyAxIChlbmFibGVkKQorCisJa3ZtLWludGVsLm5lc3RlZD0KKwkJCVtLVk0sSW50ZWxdIEVuYWJsZSBWTVggbmVzdGluZyAoblZNWCkuCisJCQlEZWZhdWx0IGlzIDAgKGRpc2FibGVkKQorCisJa3ZtLWludGVsLnVucmVzdHJpY3RlZF9ndWVzdD0KKwkJCVtLVk0sSW50ZWxdIERpc2FibGUgdW5yZXN0cmljdGVkIGd1ZXN0IGZlYXR1cmUKKwkJCSh2aXJ0dWFsaXplZCByZWFsIGFuZCB1bnBhZ2VkIG1vZGUpIG9uIGNhcGFibGUKKwkJCUludGVsIGNoaXBzLiBEZWZhdWx0IGlzIDEgKGVuYWJsZWQpCisKKwlrdm0taW50ZWwudnBpZD0JW0tWTSxJbnRlbF0gRGlzYWJsZSBWaXJ0dWFsIFByb2Nlc3NvciBJZGVudGlmaWNhdGlvbgorCQkJZmVhdHVyZSAodGFnZ2VkIFRMQnMpIG9uIGNhcGFibGUgSW50ZWwgY2hpcHMuCisJCQlEZWZhdWx0IGlzIDEgKGVuYWJsZWQpCisKKwlsMmNyPQkJW1BQQ10KKworCWwzY3I9CQlbUFBDXQorCisJbGFwaWMJCVtYODYtMzIsQVBJQ10gRW5hYmxlIHRoZSBsb2NhbCBBUElDIGV2ZW4gaWYgQklPUworCQkJZGlzYWJsZWQgaXQuCisKKwlsYXBpYz0JCVt4ODYsQVBJQ10gIm5vdHNjZGVhZGxpbmUiIERvIG5vdCB1c2UgVFNDIGRlYWRsaW5lCisJCQl2YWx1ZSBmb3IgTEFQSUMgdGltZXIgb25lLXNob3QgaW1wbGVtZW50YXRpb24uIERlZmF1bHQKKwkJCWJhY2sgdG8gdGhlIHByb2dyYW1tYWJsZSB0aW1lciB1bml0IGluIHRoZSBMQVBJQy4KKworCWxhcGljX3RpbWVyX2MyX29rCVtYODYsQVBJQ10gdHJ1c3QgdGhlIGxvY2FsIGFwaWMgdGltZXIKKwkJCWluIEMyIHBvd2VyIHN0YXRlLgorCisJbGliYXRhLmRtYT0JW0xJQkFUQV0gRE1BIGNvbnRyb2wKKwkJCWxpYmF0YS5kbWE9MAkgIERpc2FibGUgYWxsIFBBVEEgYW5kIFNBVEEgRE1BCisJCQlsaWJhdGEuZG1hPTEJICBQQVRBIGFuZCBTQVRBIERpc2sgRE1BIG9ubHkKKwkJCWxpYmF0YS5kbWE9MgkgIEFUQVBJIChDRFJPTSkgRE1BIG9ubHkKKwkJCWxpYmF0YS5kbWE9NAkgIENvbXBhY3QgRmxhc2ggRE1BIG9ubHkKKwkJCUNvbWJpbmF0aW9ucyBhbHNvIHdvcmssIHNvIGxpYmF0YS5kbWE9MyBlbmFibGVzIERNQQorCQkJZm9yIGRpc2tzIGFuZCBDRFJPTXMsIGJ1dCBub3QgQ0ZzLgorCisJbGliYXRhLmlnbm9yZV9ocGE9CVtMSUJBVEFdIElnbm9yZSBIUEEgbGltaXQKKwkJCWxpYmF0YS5pZ25vcmVfaHBhPTAJICBrZWVwIEJJT1MgbGltaXRzIChkZWZhdWx0KQorCQkJbGliYXRhLmlnbm9yZV9ocGE9MQkgIGlnbm9yZSBsaW1pdHMsIHVzaW5nIGZ1bGwgZGlzaworCisJbGliYXRhLm5vYWNwaQlbTElCQVRBXSBEaXNhYmxlcyB1c2Ugb2YgQUNQSSBpbiBsaWJhdGEgc3VzcGVuZC9yZXN1bWUKKwkJCXdoZW4gc2V0LgorCQkJRm9ybWF0OiA8aW50PgorCisJbGliYXRhLmZvcmNlPQlbTElCQVRBXSBGb3JjZSBjb25maWd1cmF0aW9ucy4gIFRoZSBmb3JtYXQgaXMgY29tbWEKKwkJCXNlcGFyYXRlZCBsaXN0IG9mICJbSUQ6XVZBTCIgd2hlcmUgSUQgaXMKKwkJCVBPUlRbLkRFVklDRV0uICBQT1JUIGFuZCBERVZJQ0UgYXJlIGRlY2ltYWwgbnVtYmVycworCQkJbWF0Y2hpbmcgcG9ydCwgbGluayBvciBkZXZpY2UuICBCYXNpY2FsbHksIGl0IG1hdGNoZXMKKwkJCXRoZSBBVEEgSUQgc3RyaW5nIHByaW50ZWQgb24gY29uc29sZSBieSBsaWJhdGEuICBJZgorCQkJdGhlIHdob2xlIElEIHBhcnQgaXMgb21pdHRlZCwgdGhlIGxhc3QgUE9SVCBhbmQgREVWSUNFCisJCQl2YWx1ZXMgYXJlIHVzZWQuICBJZiBJRCBoYXNuJ3QgYmVlbiBzcGVjaWZpZWQgeWV0LCB0aGUKKwkJCWNvbmZpZ3VyYXRpb24gYXBwbGllcyB0byBhbGwgcG9ydHMsIGxpbmtzIGFuZCBkZXZpY2VzLgorCisJCQlJZiBvbmx5IERFVklDRSBpcyBvbWl0dGVkLCB0aGUgcGFyYW1ldGVyIGFwcGxpZXMgdG8KKwkJCXRoZSBwb3J0IGFuZCBhbGwgbGlua3MgYW5kIGRldmljZXMgYmVoaW5kIGl0LiAgREVWSUNFCisJCQludW1iZXIgb2YgMCBlaXRoZXIgc2VsZWN0cyB0aGUgZmlyc3QgZGV2aWNlIG9yIHRoZQorCQkJZmlyc3QgZmFuLW91dCBsaW5rIGJlaGluZCBQTVAgZGV2aWNlLiAgSXQgZG9lcyBub3QKKwkJCXNlbGVjdCB0aGUgaG9zdCBsaW5rLiAgREVWSUNFIG51bWJlciBvZiAxNSBzZWxlY3RzIHRoZQorCQkJaG9zdCBsaW5rIGFuZCBkZXZpY2UgYXR0YWNoZWQgdG8gaXQuCisKKwkJCVRoZSBWQUwgc3BlY2lmaWVzIHRoZSBjb25maWd1cmF0aW9uIHRvIGZvcmNlLiAgQXMgbG9uZworCQkJYXMgdGhlcmUncyBubyBhbWJpZ3VpdHkgc2hvcnRjdXQgbm90YXRpb24gaXMgYWxsb3dlZC4KKwkJCUZvciBleGFtcGxlLCBib3RoIDEuNSBhbmQgMS41RyB3b3VsZCB3b3JrIGZvciAxLjVHYnBzLgorCQkJVGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9ucyBjYW4gYmUgZm9yY2VkLgorCisJCQkqIENhYmxlIHR5cGU6IDQwYywgODBjLCBzaG9ydDQwYywgdW5rLCBpZ24gb3Igc2F0YS4KKwkJCSAgQW55IElEIHdpdGggbWF0Y2hpbmcgUE9SVCBpcyB1c2VkLgorCisJCQkqIFNBVEEgbGluayBzcGVlZCBsaW1pdDogMS41R2JwcyBvciAzLjBHYnBzLgorCisJCQkqIFRyYW5zZmVyIG1vZGU6IHBpb1swLTddLCBtd2RtYVswLTRdIGFuZCB1ZG1hWzAtN10uCisJCQkgIHVkbWFbL11bMTYsMjUsMzMsNDQsNjYsMTAwLDEzM10gbm90YXRpb24gaXMgYWxzbworCQkJICBhbGxvd2VkLgorCisJCQkqIFtub11uY3E6IFR1cm4gb24gb3Igb2ZmIE5DUS4KKworCQkJKiBbbm9dbmNxdHJpbTogVHVybiBvZmYgcXVldWVkIERTTSBUUklNLgorCisJCQkqIG5vaHJzdCwgbm9zcnN0LCBub3JzdDogc3VwcHJlc3MgaGFyZCwgc29mdAorICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYm90aCByZXNldHMuCisKKwkJCSogcnN0b25jZTogb25seSBhdHRlbXB0IG9uZSByZXNldCBkdXJpbmcKKwkJCSAgaG90LXVucGx1ZyBsaW5rIHJlY292ZXJ5CisKKwkJCSogZHVtcF9pZDogZHVtcCBJREVOVElGWSBkYXRhLgorCisJCQkqIGF0YXBpX2RtYWRpcjogRW5hYmxlIEFUQVBJIERNQURJUiBicmlkZ2Ugc3VwcG9ydAorCisJCQkqIGRpc2FibGU6IERpc2FibGUgdGhpcyBkZXZpY2UuCisKKwkJCUlmIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGluZyBjb25maWd1cmF0aW9ucyBjaGFuZ2luZworCQkJdGhlIHNhbWUgYXR0cmlidXRlLCB0aGUgbGFzdCBvbmUgaXMgdXNlZC4KKworCW1lbWJsb2NrPWRlYnVnCVtLTkxdIEVuYWJsZSBtZW1ibG9jayBkZWJ1ZyBtZXNzYWdlcy4KKworCWxvYWRfcmFtZGlzaz0JW1JBTV0gTGlzdCBvZiByYW1kaXNrcyB0byBsb2FkIGZyb20gZmxvcHB5CisJCQlTZWUgRG9jdW1lbnRhdGlvbi9ibG9ja2Rldi9yYW1kaXNrLnR4dC4KKworCWxvY2tkLm5sbV9ncmFjZV9wZXJpb2Q9UCAgW05GU10gQXNzaWduIGdyYWNlIHBlcmlvZC4KKwkJCUZvcm1hdDogPGludGVnZXI+CisKKwlsb2NrZC5ubG1fdGNwcG9ydD1OCVtORlNdIEFzc2lnbiBUQ1AgcG9ydC4KKwkJCUZvcm1hdDogPGludGVnZXI+CisKKwlsb2NrZC5ubG1fdGltZW91dD1UCVtORlNdIEFzc2lnbiB0aW1lb3V0IHZhbHVlLgorCQkJRm9ybWF0OiA8aW50ZWdlcj4KKworCWxvY2tkLm5sbV91ZHBwb3J0PU0JW05GU10gQXNzaWduIFVEUCBwb3J0LgorCQkJRm9ybWF0OiA8aW50ZWdlcj4KKworCWxvY2t0b3J0dXJlLm5yZWFkZXJzX3N0cmVzcz0gW0tOTF0KKwkJCVNldCB0aGUgbnVtYmVyIG9mIGxvY2tpbmcgcmVhZC1hY3F1aXNpdGlvbiBrdGhyZWFkcy4KKwkJCURlZmF1bHRzIHRvIGJlaW5nIGF1dG9tYXRpY2FsbHkgc2V0IGJhc2VkIG9uIHRoZQorCQkJbnVtYmVyIG9mIG9ubGluZSBDUFVzLgorCisJbG9ja3RvcnR1cmUubndyaXRlcnNfc3RyZXNzPSBbS05MXQorCQkJU2V0IHRoZSBudW1iZXIgb2YgbG9ja2luZyB3cml0ZS1hY3F1aXNpdGlvbiBrdGhyZWFkcy4KKworCWxvY2t0b3J0dXJlLm9ub2ZmX2hvbGRvZmY9IFtLTkxdCisJCQlTZXQgdGltZSAocykgYWZ0ZXIgYm9vdCBmb3IgQ1BVLWhvdHBsdWcgdGVzdGluZy4KKworCWxvY2t0b3J0dXJlLm9ub2ZmX2ludGVydmFsPSBbS05MXQorCQkJU2V0IHRpbWUgKHMpIGJldHdlZW4gQ1BVLWhvdHBsdWcgb3BlcmF0aW9ucywgb3IKKwkJCXplcm8gdG8gZGlzYWJsZSBDUFUtaG90cGx1ZyB0ZXN0aW5nLgorCisJbG9ja3RvcnR1cmUuc2h1ZmZsZV9pbnRlcnZhbD0gW0tOTF0KKwkJCVNldCB0YXNrLXNodWZmbGUgaW50ZXJ2YWwgKGppZmZpZXMpLiAgU2h1ZmZsaW5nCisJCQl0YXNrcyBhbGxvd3Mgc29tZSBDUFVzIHRvIGdvIGludG8gZHludGljay1pZGxlCisJCQltb2RlIGR1cmluZyB0aGUgbG9ja3RvcnR1cmUgdGVzdC4KKworCWxvY2t0b3J0dXJlLnNodXRkb3duX3NlY3M9IFtLTkxdCisJCQlTZXQgdGltZSAocykgYWZ0ZXIgYm9vdCBzeXN0ZW0gc2h1dGRvd24uICBUaGlzCisJCQlpcyB1c2VmdWwgZm9yIGhhbmRzLW9mZiBhdXRvbWF0ZWQgdGVzdGluZy4KKworCWxvY2t0b3J0dXJlLnN0YXRfaW50ZXJ2YWw9IFtLTkxdCisJCQlUaW1lIChzKSBiZXR3ZWVuIHN0YXRpc3RpY3MgcHJpbnRrKClzLgorCisJbG9ja3RvcnR1cmUuc3R1dHRlcj0gW0tOTF0KKwkJCVRpbWUgKHMpIHRvIHN0dXR0ZXIgdGVzdGluZywgZm9yIGV4YW1wbGUsCisJCQlzcGVjaWZ5aW5nIGZpdmUgc2Vjb25kcyBjYXVzZXMgdGhlIHRlc3QgdG8gcnVuIGZvcgorCQkJZml2ZSBzZWNvbmRzLCB3YWl0IGZvciBmaXZlIHNlY29uZHMsIGFuZCBzbyBvbi4KKwkJCVRoaXMgdGVzdHMgdGhlIGxvY2tpbmcgcHJpbWl0aXZlJ3MgYWJpbGl0eSB0bworCQkJdHJhbnNpdGlvbiBhYnJ1cHRseSB0byBhbmQgZnJvbSBpZGxlLgorCisJbG9ja3RvcnR1cmUudG9ydHVyZV9ydW5uYWJsZT0gW0JPT1RdCisJCQlTdGFydCBsb2NrdG9ydHVyZSBydW5uaW5nIGF0IGJvb3QgdGltZS4KKworCWxvY2t0b3J0dXJlLnRvcnR1cmVfdHlwZT0gW0tOTF0KKwkJCVNwZWNpZnkgdGhlIGxvY2tpbmcgaW1wbGVtZW50YXRpb24gdG8gdGVzdC4KKworCWxvY2t0b3J0dXJlLnZlcmJvc2U9IFtLTkxdCisJCQlFbmFibGUgYWRkaXRpb25hbCBwcmludGsoKSBzdGF0ZW1lbnRzLgorCisJbG9naWJtLmlycT0JW0hXLE1PVVNFXSBMb2dpdGVjaCBCdXMgTW91c2UgRHJpdmVyCisJCQlGb3JtYXQ6IDxpcnE+CisKKwlsb2dsZXZlbD0JQWxsIEtlcm5lbCBNZXNzYWdlcyB3aXRoIGEgbG9nbGV2ZWwgc21hbGxlciB0aGFuIHRoZQorCQkJY29uc29sZSBsb2dsZXZlbCB3aWxsIGJlIHByaW50ZWQgdG8gdGhlIGNvbnNvbGUuIEl0IGNhbgorCQkJYWxzbyBiZSBjaGFuZ2VkIHdpdGgga2xvZ2Qgb3Igb3RoZXIgcHJvZ3JhbXMuIFRoZQorCQkJbG9nbGV2ZWxzIGFyZSBkZWZpbmVkIGFzIGZvbGxvd3M6CisKKwkJCTAgKEtFUk5fRU1FUkcpCQlzeXN0ZW0gaXMgdW51c2FibGUKKwkJCTEgKEtFUk5fQUxFUlQpCQlhY3Rpb24gbXVzdCBiZSB0YWtlbiBpbW1lZGlhdGVseQorCQkJMiAoS0VSTl9DUklUKQkJY3JpdGljYWwgY29uZGl0aW9ucworCQkJMyAoS0VSTl9FUlIpCQllcnJvciBjb25kaXRpb25zCisJCQk0IChLRVJOX1dBUk5JTkcpCXdhcm5pbmcgY29uZGl0aW9ucworCQkJNSAoS0VSTl9OT1RJQ0UpCQlub3JtYWwgYnV0IHNpZ25pZmljYW50IGNvbmRpdGlvbgorCQkJNiAoS0VSTl9JTkZPKQkJaW5mb3JtYXRpb25hbAorCQkJNyAoS0VSTl9ERUJVRykJCWRlYnVnLWxldmVsIG1lc3NhZ2VzCisKKwlsb2dfYnVmX2xlbj1uW0tNR10JU2V0cyB0aGUgc2l6ZSBvZiB0aGUgcHJpbnRrIHJpbmcgYnVmZmVyLAorCQkJaW4gYnl0ZXMuICBuIG11c3QgYmUgYSBwb3dlciBvZiB0d28gYW5kIGdyZWF0ZXIKKwkJCXRoYW4gdGhlIG1pbmltYWwgc2l6ZS4gVGhlIG1pbmltYWwgc2l6ZSBpcyBkZWZpbmVkCisJCQlieSBMT0dfQlVGX1NISUZUIGtlcm5lbCBjb25maWcgcGFyYW1ldGVyLiBUaGVyZSBpcworCQkJYWxzbyBDT05GSUdfTE9HX0NQVV9NQVhfQlVGX1NISUZUIGNvbmZpZyBwYXJhbWV0ZXIKKwkJCXRoYXQgYWxsb3dzIHRvIGluY3JlYXNlIHRoZSBkZWZhdWx0IHNpemUgZGVwZW5kaW5nIG9uCisJCQl0aGUgbnVtYmVyIG9mIENQVXMuIFNlZSBpbml0L0tjb25maWcgZm9yIG1vcmUgZGV0YWlscy4KKworCWxvZ28ubm9sb2dvCVtGQl0gRGlzYWJsZXMgZGlzcGxheSBvZiB0aGUgYnVpbHQtaW4gTGludXggbG9nby4KKwkJCVRoaXMgbWF5IGJlIHVzZWQgdG8gcHJvdmlkZSBtb3JlIHNjcmVlbiBzcGFjZSBmb3IKKwkJCWtlcm5lbCBsb2cgbWVzc2FnZXMgYW5kIGlzIHVzZWZ1bCB3aGVuIGRlYnVnZ2luZworCQkJa2VybmVsIGJvb3QgcHJvYmxlbXMuCisKKwlscD0wCQlbTFBdCVNwZWNpZnkgcGFyYWxsZWwgcG9ydHMgdG8gdXNlLCBlLmcsCisJbHA9cG9ydFsscG9ydC4uLl0JbHA9bm9uZSxwYXJwb3J0MCAobHAwIG5vdCBjb25maWd1cmVkLCBscDEgdXNlcworCWxwPXJlc2V0CQlmaXJzdCBwYXJhbGxlbCBwb3J0KS4gJ2xwPTAnIGRpc2FibGVzIHRoZQorCWxwPWF1dG8JCQlwcmludGVyIGRyaXZlci4gJ2xwPXJlc2V0JyAod2hpY2ggY2FuIGJlCisJCQkJc3BlY2lmaWVkIGluIGFkZGl0aW9uIHRvIHRoZSBwb3J0cykgY2F1c2VzCisJCQkJYXR0YWNoZWQgcHJpbnRlcnMgdG8gYmUgcmVzZXQuIFVzaW5nCisJCQkJbHA9cG9ydDEscG9ydDIsLi4uIHNwZWNpZmllcyB0aGUgcGFyYWxsZWwgcG9ydHMKKwkJCQl0byBhc3NvY2lhdGUgbHAgZGV2aWNlcyB3aXRoLCBzdGFydGluZyB3aXRoCisJCQkJbHAwLiBBIHBvcnQgc3BlY2lmaWNhdGlvbiBtYXkgYmUgJ25vbmUnIHRvIHNraXAKKwkJCQl0aGF0IGxwIGRldmljZSwgb3IgYSBwYXJwb3J0IG5hbWUgc3VjaCBhcworCQkJCSdwYXJwb3J0MCcuIFNwZWNpZnlpbmcgJ2xwPWF1dG8nIGluc3RlYWQgb2YgYQorCQkJCXBvcnQgc3BlY2lmaWNhdGlvbiBsaXN0IG1lYW5zIHRoYXQgZGV2aWNlIElEcworCQkJCWZyb20gZWFjaCBwb3J0IHNob3VsZCBiZSBleGFtaW5lZCwgdG8gc2VlIGlmCisJCQkJYW4gSUVFRSAxMjg0LWNvbXBsaWFudCBwcmludGVyIGlzIGF0dGFjaGVkOyBpZgorCQkJCXNvLCB0aGUgZHJpdmVyIHdpbGwgbWFuYWdlIHRoYXQgcHJpbnRlci4KKwkJCQlTZWUgYWxzbyBoZWFkZXIgb2YgZHJpdmVycy9jaGFyL2xwLmMuCisKKwlscGo9bgkJW0tOTF0KKwkJCVNldHMgbG9vcHNfcGVyX2ppZmZ5IHRvIGdpdmVuIGNvbnN0YW50LCB0aHVzIGF2b2lkaW5nCisJCQl0aW1lLWNvbnN1bWluZyBib290LXRpbWUgYXV0b2RldGVjdGlvbiAodXAgdG8gMjUwIG1zIHBlcgorCQkJQ1BVKS4gMCBlbmFibGVzIGF1dG9kZXRlY3Rpb24gKGRlZmF1bHQpLiBUbyBkZXRlcm1pbmUKKwkJCXRoZSBjb3JyZWN0IHZhbHVlIGZvciB5b3VyIGtlcm5lbCwgYm9vdCB3aXRoIG5vcm1hbAorCQkJYXV0b2RldGVjdGlvbiBhbmQgc2VlIHdoYXQgdmFsdWUgaXMgcHJpbnRlZC4gTm90ZSB0aGF0CisJCQlvbiBTTVAgc3lzdGVtcyB0aGUgcHJlc2V0IHdpbGwgYmUgYXBwbGllZCB0byBhbGwgQ1BVcywKKwkJCXdoaWNoIGlzIGxpa2VseSB0byBjYXVzZSBwcm9ibGVtcyBpZiB5b3VyIENQVXMgbmVlZAorCQkJc2lnbmlmaWNhbnRseSBkaXZlcmdlbnQgc2V0dGluZ3MuIEFuIGluY29ycmVjdCB2YWx1ZQorCQkJd2lsbCBjYXVzZSBkZWxheXMgaW4gdGhlIGtlcm5lbCB0byBiZSB3cm9uZywgbGVhZGluZyB0bworCQkJdW5wcmVkaWN0YWJsZSBJL08gZXJyb3JzIGFuZCBvdGhlciBicmVha2FnZS4gQWx0aG91Z2gKKwkJCXVubGlrZWx5LCBpbiB0aGUgZXh0cmVtZSBjYXNlIHRoaXMgbWlnaHQgZGFtYWdlIHlvdXIKKwkJCWhhcmR3YXJlLgorCisJbHRwYz0JCVtORVRdCisJCQlGb3JtYXQ6IDxpbz4sPGlycT4sPGRtYT4KKworCW1hY2h2ZWM9CVtJQS02NF0gRm9yY2UgdGhlIHVzZSBvZiBhIHBhcnRpY3VsYXIgbWFjaGluZS12ZWN0b3IKKwkJCShtYWNodmVjKSBpbiBhIGdlbmVyaWMga2VybmVsLgorCQkJRXhhbXBsZTogbWFjaHZlYz1ocHp4MV9zd2lvdGxiCisKKwltYWNodHlwZT0JW0xvb25nc29uXSBTaGFyZSB0aGUgc2FtZSBrZXJuZWwgaW1hZ2UgZmlsZSBiZXR3ZWVuIGRpZmZlcmVudAorCQkJIHllZWxvb25nIGxhcHRvcC4KKwkJCUV4YW1wbGU6IG1hY2h0eXBlPWxlbW90ZS15ZWVsb29uZy0yZi03aW5jaAorCisJbWF4X2FkZHI9bm5bS01HXQlbS05MLEJPT1QsaWE2NF0gQWxsIHBoeXNpY2FsIG1lbW9yeSBncmVhdGVyCisJCQl0aGFuIG9yIGVxdWFsIHRvIHRoaXMgcGh5c2ljYWwgYWRkcmVzcyBpcyBpZ25vcmVkLgorCisJbWF4Y3B1cz0JW1NNUF0gTWF4aW11bSBudW1iZXIgb2YgcHJvY2Vzc29ycyB0aGF0CWFuIFNNUCBrZXJuZWwKKwkJCXNob3VsZCBtYWtlIHVzZSBvZi4gIG1heGNwdXM9biA6IG4gPj0gMCBsaW1pdHMgdGhlCisJCQlrZXJuZWwgdG8gdXNpbmcgJ24nIHByb2Nlc3NvcnMuICBuPTAgaXMgYSBzcGVjaWFsIGNhc2UsCisJCQlpdCBpcyBlcXVpdmFsZW50IHRvICJub3NtcCIsIHdoaWNoIGFsc28gZGlzYWJsZXMKKwkJCXRoZSBJTyBBUElDLgorCisJbWF4X2xvb3A9CVtMT09QXSBUaGUgbnVtYmVyIG9mIGxvb3AgYmxvY2sgZGV2aWNlcyB0aGF0IGdldAorCShsb29wLm1heF9sb29wKQl1bmNvbmRpdGlvbmFsbHkgcHJlLWNyZWF0ZWQgYXQgaW5pdCB0aW1lLiBUaGUgZGVmYXVsdAorCQkJbnVtYmVyIGlzIGNvbmZpZ3VyZWQgYnkgQkxLX0RFVl9MT09QX01JTl9DT1VOVC4gSW5zdGVhZAorCQkJb2Ygc3RhdGljYWxseSBhbGxvY2F0aW5nIGEgcHJlZGVmaW5lZCBudW1iZXIsIGxvb3AKKwkJCWRldmljZXMgY2FuIGJlIHJlcXVlc3RlZCBvbi1kZW1hbmQgd2l0aCB0aGUKKwkJCS9kZXYvbG9vcC1jb250cm9sIGludGVyZmFjZS4KKworCW1jZQkJW1g4Ni0zMl0gTWFjaGluZSBDaGVjayBFeGNlcHRpb24KKworCW1jZT1vcHRpb24JW1g4Ni02NF0gU2VlIERvY3VtZW50YXRpb24veDg2L3g4Nl82NC9ib290LW9wdGlvbnMudHh0CisKKwltZD0JCVtIV10gUkFJRCBzdWJzeXN0ZW1zIGRldmljZXMgYW5kIGxldmVsCisJCQlTZWUgRG9jdW1lbnRhdGlvbi9tZC50eHQuCisKKwltZGFjb249CQlbTURBXQorCQkJRm9ybWF0OiA8Zmlyc3Q+LDxsYXN0PgorCQkJU3BlY2lmaWVzIHJhbmdlIG9mIGNvbnNvbGVzIHRvIGJlIGNhcHR1cmVkIGJ5IHRoZSBNREEuCisKKwltZW09bm5bS01HXQlbS05MLEJPT1RdIEZvcmNlIHVzYWdlIG9mIGEgc3BlY2lmaWMgYW1vdW50IG9mIG1lbW9yeQorCQkJQW1vdW50IG9mIG1lbW9yeSB0byBiZSB1c2VkIHdoZW4gdGhlIGtlcm5lbCBpcyBub3QgYWJsZQorCQkJdG8gc2VlIHRoZSB3aG9sZSBzeXN0ZW0gbWVtb3J5IG9yIGZvciB0ZXN0LgorCQkJW1g4Nl0gV29yayBhcyBsaW1pdGluZyBtYXggYWRkcmVzcy4gVXNlIHRvZ2V0aGVyCisJCQl3aXRoIG1lbW1hcD0gdG8gYXZvaWQgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZSBjb2xsaXNpb25zLgorCQkJV2l0aG91dCBtZW1tYXA9IFBDSSBkZXZpY2VzIGNvdWxkIGJlIHBsYWNlZCBhdCBhZGRyZXNzZXMKKwkJCWJlbG9uZ2luZyB0byB1bnVzZWQgUkFNLgorCisJbWVtPW5vcGVudGl1bQlbQlVHUz1YODYtMzJdIERpc2FibGUgdXNhZ2Ugb2YgNE1CIHBhZ2VzIGZvciBrZXJuZWwKKwkJCW1lbW9yeS4KKworCW1lbWNodW5rPW5uW0tNR10KKwkJCVtLTkwsU0hdIEFsbG93IHVzZXIgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgc2l6ZSBmb3IKKwkJCXBlci1kZXZpY2UgcGh5c2ljYWxseSBjb250aWd1b3VzIERNQSBidWZmZXJzLgorCisJbWVtbWFwPWV4YWN0bWFwCVtLTkwsWDg2XSBFbmFibGUgc2V0dGluZyBvZiBhbiBleGFjdAorCQkJRTgyMCBtZW1vcnkgbWFwLCBhcyBzcGVjaWZpZWQgYnkgdGhlIHVzZXIuCisJCQlTdWNoIG1lbW1hcD1leGFjdG1hcCBsaW5lcyBjYW4gYmUgY29uc3RydWN0ZWQgYmFzZWQgb24KKwkJCUJJT1Mgb3V0cHV0IG9yIG90aGVyIHJlcXVpcmVtZW50cy4gU2VlIHRoZSBtZW1tYXA9bm5Ac3MKKwkJCW9wdGlvbiBkZXNjcmlwdGlvbi4KKworCW1lbW1hcD1ubltLTUddQHNzW0tNR10KKwkJCVtLTkxdIEZvcmNlIHVzYWdlIG9mIGEgc3BlY2lmaWMgcmVnaW9uIG9mIG1lbW9yeS4KKwkJCVJlZ2lvbiBvZiBtZW1vcnkgdG8gYmUgdXNlZCBpcyBmcm9tIHNzIHRvIHNzK25uLgorCisJbWVtbWFwPW5uW0tNR10jc3NbS01HXQorCQkJW0tOTCxBQ1BJXSBNYXJrIHNwZWNpZmljIG1lbW9yeSBhcyBBQ1BJIGRhdGEuCisJCQlSZWdpb24gb2YgbWVtb3J5IHRvIGJlIG1hcmtlZCBpcyBmcm9tIHNzIHRvIHNzK25uLgorCisJbWVtbWFwPW5uW0tNR10kc3NbS01HXQorCQkJW0tOTCxBQ1BJXSBNYXJrIHNwZWNpZmljIG1lbW9yeSBhcyByZXNlcnZlZC4KKwkJCVJlZ2lvbiBvZiBtZW1vcnkgdG8gYmUgcmVzZXJ2ZWQgaXMgZnJvbSBzcyB0byBzcytubi4KKwkJCUV4YW1wbGU6IEV4Y2x1ZGUgbWVtb3J5IGZyb20gMHgxODY5MDAwMC0weDE4NjlmZmZmCisJCQkgICAgICAgICBtZW1tYXA9NjRLJDB4MTg2OTAwMDAKKwkJCSAgICAgICAgIG9yCisJCQkgICAgICAgICBtZW1tYXA9MHgxMDAwMCQweDE4NjkwMDAwCisKKwltZW1tYXA9bm5bS01HXSFzc1tLTUddCisJCQlbS05MLFg4Nl0gTWFyayBzcGVjaWZpYyBtZW1vcnkgYXMgcHJvdGVjdGVkLgorCQkJUmVnaW9uIG9mIG1lbW9yeSB0byBiZSB1c2VkLCBmcm9tIHNzIHRvIHNzK25uLgorCQkJVGhlIG1lbW9yeSByZWdpb24gbWF5IGJlIG1hcmtlZCBhcyBlODIwIHR5cGUgMTIgKDB4YykKKwkJCWFuZCBpcyBOVkRJTU0gb3IgQURSIG1lbW9yeS4KKworCW1lbW9yeV9jb3JydXB0aW9uX2NoZWNrPTAvMSBbWDg2XQorCQkJU29tZSBCSU9TZXMgc2VlbSB0byBjb3JydXB0IHRoZSBmaXJzdCA2NGsgb2YKKwkJCW1lbW9yeSB3aGVuIGRvaW5nIHRoaW5ncyBsaWtlIHN1c3BlbmQvcmVzdW1lLgorCQkJU2V0dGluZyB0aGlzIG9wdGlvbiB3aWxsIHNjYW4gdGhlIG1lbW9yeQorCQkJbG9va2luZyBmb3IgY29ycnVwdGlvbi4gIEVuYWJsaW5nIHRoaXMgd2lsbAorCQkJYm90aCBkZXRlY3QgY29ycnVwdGlvbiBhbmQgcHJldmVudCB0aGUga2VybmVsCisJCQlmcm9tIHVzaW5nIHRoZSBtZW1vcnkgYmVpbmcgY29ycnVwdGVkLgorCQkJSG93ZXZlciwgaXRzIGludGVuZGVkIGFzIGEgZGlhZ25vc3RpYyB0b29sOyBpZgorCQkJcmVwZWF0YWJsZSBCSU9TLW9yaWdpbmF0ZWQgY29ycnVwdGlvbiBhbHdheXMKKwkJCWFmZmVjdHMgdGhlIHNhbWUgbWVtb3J5LCB5b3UgY2FuIHVzZSBtZW1tYXA9CisJCQl0byBwcmV2ZW50IHRoZSBrZXJuZWwgZnJvbSB1c2luZyB0aGF0IG1lbW9yeS4KKworCW1lbW9yeV9jb3JydXB0aW9uX2NoZWNrX3NpemU9c2l6ZSBbWDg2XQorCQkJQnkgZGVmYXVsdCBpdCBjaGVja3MgZm9yIGNvcnJ1cHRpb24gaW4gdGhlIGxvdworCQkJNjRrLCBtYWtpbmcgdGhpcyBtZW1vcnkgdW5hdmFpbGFibGUgZm9yIG5vcm1hbAorCQkJdXNlLiAgVXNlIHRoaXMgcGFyYW1ldGVyIHRvIHNjYW4gZm9yCisJCQljb3JydXB0aW9uIGluIG1vcmUgb3IgbGVzcyBtZW1vcnkuCisKKwltZW1vcnlfY29ycnVwdGlvbl9jaGVja19wZXJpb2Q9c2Vjb25kcyBbWDg2XQorCQkJQnkgZGVmYXVsdCBpdCBjaGVja3MgZm9yIGNvcnJ1cHRpb24gZXZlcnkgNjAKKwkJCXNlY29uZHMuICBVc2UgdGhpcyBwYXJhbWV0ZXIgdG8gY2hlY2sgYXQgc29tZQorCQkJb3RoZXIgcmF0ZS4gIDAgZGlzYWJsZXMgcGVyaW9kaWMgY2hlY2tpbmcuCisKKwltZW10ZXN0PQlbS05MLFg4NixBUk1dIEVuYWJsZSBtZW10ZXN0CisJCQlGb3JtYXQ6IDxpbnRlZ2VyPgorCQkJZGVmYXVsdCA6IDAgPGRpc2FibGU+CisJCQlTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBtZW10ZXN0IHBhc3NlcyB0byBiZQorCQkJcGVyZm9ybWVkLiBFYWNoIHBhc3Mgc2VsZWN0cyBhbm90aGVyIHRlc3QKKwkJCXBhdHRlcm4gZnJvbSBhIGdpdmVuIHNldCBvZiBwYXR0ZXJucy4gTWVtdGVzdAorCQkJZmlsbHMgdGhlIG1lbW9yeSB3aXRoIHRoaXMgcGF0dGVybiwgdmFsaWRhdGVzCisJCQltZW1vcnkgY29udGVudHMgYW5kIHJlc2VydmVzIGJhZCBtZW1vcnkKKwkJCXJlZ2lvbnMgdGhhdCBhcmUgZGV0ZWN0ZWQuCisKKwltZXllLio9CQlbSFddIFNldCBNb3Rpb25FeWUgQ2FtZXJhIHBhcmFtZXRlcnMKKwkJCVNlZSBEb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L21leWUudHh0LgorCisJbWZncHRfaXJxPQlbSUEtMzJdIFNwZWNpZnkgdGhlIElSUSB0byB1c2UgZm9yIHRoZQorCQkJTXVsdGktRnVuY3Rpb24gR2VuZXJhbCBQdXJwb3NlIFRpbWVycyBvbiBBTUQgR2VvZGUKKwkJCXBsYXRmb3Jtcy4KKworCW1mZ3B0Zml4CVtYODYtMzJdIEZpeCBNRkdQVCB0aW1lcnMgb24gQU1EIEdlb2RlIHBsYXRmb3JtcyB3aGVuCisJCQl0aGUgQklPUyBoYXMgaW5jb3JyZWN0bHkgYXBwbGllZCBhIHdvcmthcm91bmQuIFRpbnlCSU9TCisJCQl2ZXJzaW9uIDAuOTggaXMga25vd24gdG8gYmUgYWZmZWN0ZWQsIDAuOTkgZml4ZXMgdGhlCisJCQlwcm9ibGVtIGJ5IGxldHRpbmcgdGhlIHVzZXIgZGlzYWJsZSB0aGUgd29ya2Fyb3VuZC4KKworCW1nYT0JCVtIVyxEUk1dCisKKwltaW5fYWRkcj1ubltLTUddCVtLTkwsQk9PVCxpYTY0XSBBbGwgcGh5c2ljYWwgbWVtb3J5IGJlbG93IHRoaXMKKwkJCXBoeXNpY2FsIGFkZHJlc3MgaXMgaWdub3JlZC4KKworCW1pbmkyNDQwPQlbQVJNLEhXLEtOTF0KKwkJCUZvcm1hdDpbMC4uMl1bYl1bY11bdF0KKwkJCURlZmF1bHQ6ICIwdGIiCisJCQlNSU5JMjQ0MCBjb25maWd1cmF0aW9uIHNwZWNpZmljYXRpb246CisJCQkwIC0gVGhlIGF0dGFjaGVkIHNjcmVlbiBpcyB0aGUgMy41IiBURlQKKwkJCTEgLSBUaGUgYXR0YWNoZWQgc2NyZWVuIGlzIHRoZSA3IiBURlQKKwkJCTIgLSBUaGUgVkdBIFNoaWVsZCBpcyBhdHRhY2hlZCAoMTAyNHg3NjgpCisJCQlMZWF2aW5nIG91dCB0aGUgc2NyZWVuIHNpemUgcGFyYW1ldGVyIHdpbGwgbm90IGxvYWQKKwkJCXRoZSBURlQgZHJpdmVyLCBhbmQgdGhlIGZyYW1lYnVmZmVyIHdpbGwgYmUgbGVmdAorCQkJdW5jb25maWd1cmVkLgorCQkJYiAtIEVuYWJsZSBiYWNrbGlnaHQuIFRoZSBURlQgYmFja2xpZ2h0IHBpbiB3aWxsIGJlCisJCQlsaW5rZWQgdG8gdGhlIGtlcm5lbCBWRVNBIGJsYW5raW5nIGNvZGUgYW5kIGEgR1BJTworCQkJTEVELiBUaGlzIHBhcmFtZXRlciBpcyBub3QgbmVjZXNzYXJ5IHdoZW4gdXNpbmcgdGhlCisJCQlWR0Egc2hpZWxkLgorCQkJYyAtIEVuYWJsZSB0aGUgczNjIGNhbWVyYSBpbnRlcmZhY2UuCisJCQl0IC0gUmVzZXJ2ZWQgZm9yIGVuYWJsaW5nIHRvdWNoc2NyZWVuIHN1cHBvcnQuIFRoZQorCQkJdG91Y2hzY3JlZW4gc3VwcG9ydCBpcyBub3QgZW5hYmxlZCBpbiB0aGUgbWFpbnN0cmVhbQorCQkJa2VybmVsIGFzIG9mIDIuNi4zMCwgYSBwcmVsaW1pbmFyeSBwb3J0IGNhbiBiZSBmb3VuZAorCQkJaW4gdGhlICJibGVlZGluZyBlZGdlIiBtaW5pMjQ0MCBzdXBwb3J0IGtlcm5lbCBhdAorCQkJaHR0cDovL3JlcG8ub3IuY3ovdy9saW51eC0yLjYvbWluaTI0NDAuZ2l0CisKKwltbWluaXRfbG9nbGV2ZWw9CisJCQlbS05MXSBXaGVuIENPTkZJR19ERUJVR19NRU1PUllfSU5JVCBpcyBzZXQsIHRoaXMKKwkJCXBhcmFtZXRlciBhbGxvd3MgY29udHJvbCBvZiB0aGUgbG9nZ2luZyB2ZXJib3NpdHkgZm9yCisJCQl0aGUgYWRkaXRpb25hbCBtZW1vcnkgaW5pdGlhbGlzYXRpb24gY2hlY2tzLiBBIHZhbHVlCisJCQlvZiAwIGRpc2FibGVzIG1taW5pdCBsb2dnaW5nIGFuZCBhIGxldmVsIG9mIDQgd2lsbAorCQkJbG9nIGV2ZXJ5dGhpbmcuIEluZm9ybWF0aW9uIGlzIHByaW50ZWQgYXQgS0VSTl9ERUJVRworCQkJc28gbG9nbGV2ZWw9OCBtYXkgYWxzbyBuZWVkIHRvIGJlIHNwZWNpZmllZC4KKworCW1vZHVsZS5zaWdfZW5mb3JjZQorCQkJW0tOTF0gV2hlbiBDT05GSUdfTU9EVUxFX1NJRyBpcyBzZXQsIHRoaXMgbWVhbnMgdGhhdAorCQkJbW9kdWxlcyB3aXRob3V0ICh2YWxpZCkgc2lnbmF0dXJlcyB3aWxsIGZhaWwgdG8gbG9hZC4KKwkJCU5vdGUgdGhhdCBpZiBDT05GSUdfTU9EVUxFX1NJR19GT1JDRSBpcyBzZXQsIHRoYXQKKwkJCWlzIGFsd2F5cyB0cnVlLCBzbyB0aGlzIG9wdGlvbiBkb2VzIG5vdGhpbmcuCisKKwltb3VzZWRldi50YXBfdGltZT0KKwkJCVtNT1VTRV0gTWF4aW11bSB0aW1lIGJldHdlZW4gZmluZ2VyIHRvdWNoaW5nIGFuZAorCQkJbGVhdmluZyB0b3VjaHBhZCBzdXJmYWNlIGZvciB0b3VjaCB0byBiZSBjb25zaWRlcmVkCisJCQlhIHRhcCBhbmQgYmUgcmVwb3J0ZWQgYXMgYSBsZWZ0IGJ1dHRvbiBjbGljayAoZm9yCisJCQl0b3VjaHBhZHMgd29ya2luZyBpbiBhYnNvbHV0ZSBtb2RlIG9ubHkpLgorCQkJRm9ybWF0OiA8bXNlY3M+CisJbW91c2VkZXYueHJlcz0JW01PVVNFXSBIb3Jpem9udGFsIHNjcmVlbiByZXNvbHV0aW9uLCB1c2VkIGZvciBkZXZpY2VzCisJCQlyZXBvcnRpbmcgYWJzb2x1dGUgY29vcmRpbmF0ZXMsIHN1Y2ggYXMgdGFibGV0cworCW1vdXNlZGV2LnlyZXM9CVtNT1VTRV0gVmVydGljYWwgc2NyZWVuIHJlc29sdXRpb24sIHVzZWQgZm9yIGRldmljZXMKKwkJCXJlcG9ydGluZyBhYnNvbHV0ZSBjb29yZGluYXRlcywgc3VjaCBhcyB0YWJsZXRzCisKKwltb3ZhYmxlY29yZT1ubltLTUddCVtLTkwsWDg2LElBLTY0LFBQQ10gVGhpcyBwYXJhbWV0ZXIKKwkJCWlzIHNpbWlsYXIgdG8ga2VybmVsY29yZSBleGNlcHQgaXQgc3BlY2lmaWVzIHRoZQorCQkJYW1vdW50IG9mIG1lbW9yeSB1c2VkIGZvciBtaWdyYXRhYmxlIGFsbG9jYXRpb25zLgorCQkJSWYgYm90aCBrZXJuZWxjb3JlIGFuZCBtb3ZhYmxlY29yZSBpcyBzcGVjaWZpZWQsCisJCQl0aGVuIGtlcm5lbGNvcmUgd2lsbCBiZSBhdCAqbGVhc3QqIHRoZSBzcGVjaWZpZWQKKwkJCXZhbHVlIGJ1dCBtYXkgYmUgbW9yZS4gSWYgbW92YWJsZWNvcmUgb24gaXRzIG93bgorCQkJaXMgc3BlY2lmaWVkLCB0aGUgYWRtaW5pc3RyYXRvciBtdXN0IGJlIGNhcmVmdWwKKwkJCXRoYXQgdGhlIGFtb3VudCBvZiBtZW1vcnkgdXNhYmxlIGZvciBhbGwgYWxsb2NhdGlvbnMKKwkJCWlzIG5vdCB0b28gc21hbGwuCisKKwltb3ZhYmxlX25vZGUJW0tOTCxYODZdIEJvb3QtdGltZSBzd2l0Y2ggdG8gZW5hYmxlIHRoZSBlZmZlY3RzCisJCQlvZiBDT05GSUdfTU9WQUJMRV9OT0RFPXkuIFNlZSBtbS9LY29uZmlnIGZvciBkZXRhaWxzLgorCisJTVREX1BhcnRpdGlvbj0JW01URF0KKwkJCUZvcm1hdDogPG5hbWU+LDxyZWdpb24tbnVtYmVyPiw8c2l6ZT4sPG9mZnNldD4KKworCU1URF9SZWdpb249CVtNVERdIEZvcm1hdDoKKwkJCTxuYW1lPiw8cmVnaW9uLW51bWJlcj5bLDxiYXNlPiw8c2l6ZT4sPGJ1c3dpZHRoPiw8YWx0YnVzd2lkdGg+XQorCisJbXRkcGFydHM9CVtNVERdCisJCQlTZWUgZHJpdmVycy9tdGQvY21kbGluZXBhcnQuYy4KKworCW11bHRpdGNlPW9mZglbUFBDXSAgVGhpcyBwYXJhbWV0ZXIgZGlzYWJsZXMgdGhlIHVzZSBvZiB0aGUgcFNlcmllcworCQkJZmlybXdhcmUgZmVhdHVyZSBmb3IgdXBkYXRpbmcgbXVsdGlwbGUgVENFIGVudHJpZXMKKwkJCWF0IGEgdGltZS4KKworCW9uZW5hbmQuYmRyeT0JW0hXLE1URF0gRmxleC1PbmVOQU5EIEJvdW5kYXJ5IENvbmZpZ3VyYXRpb24KKworCQkJRm9ybWF0OiBbZGllMF9ib3VuZGFyeV1bLGRpZTBfbG9ja11bLGRpZTFfYm91bmRhcnldWyxkaWUxX2xvY2tdCisKKwkJCWJvdW5kYXJ5IC0gaW5kZXggb2YgbGFzdCBTTEMgYmxvY2sgb24gRmxleC1PbmVOQU5ELgorCQkJCSAgIFRoZSByZW1haW5pbmcgYmxvY2tzIGFyZSBjb25maWd1cmVkIGFzIE1MQyBibG9ja3MuCisJCQlsb2NrCSAtIENvbmZpZ3VyZSBpZiBGbGV4LU9uZU5BTkQgYm91bmRhcnkgc2hvdWxkIGJlIGxvY2tlZC4KKwkJCQkgICBPbmNlIGxvY2tlZCwgdGhlIGJvdW5kYXJ5IGNhbm5vdCBiZSBjaGFuZ2VkLgorCQkJCSAgIDEgaW5kaWNhdGVzIGxvY2sgc3RhdHVzLCAwIGluZGljYXRlcyB1bmxvY2sgc3RhdHVzLgorCisJbXRkc2V0PQkJW0FSTV0KKwkJCUFSTS9TM0MyNDEyIEpJVkUgYm9vdCBjb250cm9sCisKKwkJCVNlZSBhcmNoL2FybS9tYWNoLXMzYzI0MTIvbWFjaC1qaXZlLmMKKworCW10b3VjaHVzYi5yYXdfY29vcmRpbmF0ZXM9CisJCQlbSFddIE1ha2UgdGhlIE1pY3JvVG91Y2ggVVNCIGRyaXZlciB1c2UgcmF3IGNvb3JkaW5hdGVzCisJCQkoJ3knLCBkZWZhdWx0KSBvciBjb29rZWQgY29vcmRpbmF0ZXMgKCduJykKKworCW10cnJfY2h1bmtfc2l6ZT1ubltLTUddIFtYODZdCisJCQl1c2VkIGZvciBtdHJyIGNsZWFudXAuIEl0IGlzIGxhcmdlc3QgY29udGludW91cyBjaHVuaworCQkJdGhhdCBjb3VsZCBob2xkIGhvbGVzIGFrYS4gVUMgZW50cmllcy4KKworCW10cnJfZ3Jhbl9zaXplPW5uW0tNR10gW1g4Nl0KKwkJCVVzZWQgZm9yIG10cnIgY2xlYW51cC4gSXQgaXMgZ3JhbnVsYXJpdHkgb2YgbXRyciBibG9jay4KKwkJCURlZmF1bHQgaXMgMS4KKwkJCUxhcmdlIHZhbHVlIGNvdWxkIHByZXZlbnQgc21hbGwgYWxpZ25tZW50IGZyb20KKwkJCXVzaW5nIHVwIE1UUlJzLgorCisJbXRycl9zcGFyZV9yZWdfbnI9biBbWDg2XQorCQkJRm9ybWF0OiA8aW50ZWdlcj4KKwkJCVJhbmdlOiAwLDcgOiBzcGFyZSByZWcgbnVtYmVyCisJCQlEZWZhdWx0IDogMQorCQkJVXNlZCBmb3IgbXRyciBjbGVhbnVwLiBJdCBpcyBzcGFyZSBtdHJyIGVudHJpZXMgbnVtYmVyLgorCQkJU2V0IHRvIDIgb3IgbW9yZSBpZiB5b3VyIGdyYXBoaWNhbCBjYXJkIG5lZWRzIG1vcmUuCisKKwluMj0JCVtORVRdIFNETCBJbmMuIFJJU0NvbS9OMiBzeW5jaHJvbm91cyBzZXJpYWwgY2FyZAorCisJbmV0ZGV2PQkJW05FVF0gTmV0d29yayBkZXZpY2VzIHBhcmFtZXRlcnMKKwkJCUZvcm1hdDogPGlycT4sPGlvPiw8bWVtX3N0YXJ0Piw8bWVtX2VuZD4sPG5hbWU+CisJCQlOb3RlIHRoYXQgbWVtX3N0YXJ0IGlzIG9mdGVuIG92ZXJsb2FkZWQgdG8gbWVhbgorCQkJc29tZXRoaW5nIGRpZmZlcmVudCBhbmQgZHJpdmVyLXNwZWNpZmljLgorCQkJVGhpcyB1c2FnZSBpcyBvbmx5IGRvY3VtZW50ZWQgaW4gZWFjaCBkcml2ZXIgc291cmNlCisJCQlmaWxlIGlmIGF0IGFsbC4KKworCW5mX2Nvbm50cmFjay5hY2N0PQorCQkJW05FVEZJTFRFUl0gRW5hYmxlIGNvbm5lY3Rpb24gdHJhY2tpbmcgZmxvdyBhY2NvdW50aW5nCisJCQkwIHRvIGRpc2FibGUgYWNjb3VudGluZworCQkJMSB0byBlbmFibGUgYWNjb3VudGluZworCQkJRGVmYXVsdCB2YWx1ZSBpcyAwLgorCisJbmZzYWRkcnM9CVtORlNdIERlcHJlY2F0ZWQuICBVc2UgaXA9IGluc3RlYWQuCisJCQlTZWUgRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uZnMvbmZzcm9vdC50eHQuCisKKwluZnNyb290PQlbTkZTXSBuZnMgcm9vdCBmaWxlc3lzdGVtIGZvciBkaXNrLWxlc3MgYm94ZXMuCisJCQlTZWUgRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uZnMvbmZzcm9vdC50eHQuCisKKwluZnNyb290ZGVidWcJW05GU10gZW5hYmxlIG5mc3Jvb3QgZGVidWdnaW5nIG1lc3NhZ2VzLgorCQkJU2VlIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzL25mc3Jvb3QudHh0LgorCisJbmZzLmNhbGxiYWNrX3RjcHBvcnQ9CisJCQlbTkZTXSBzZXQgdGhlIFRDUCBwb3J0IG9uIHdoaWNoIHRoZSBORlN2NCBjYWxsYmFjaworCQkJY2hhbm5lbCBzaG91bGQgbGlzdGVuLgorCisJbmZzLmNhY2hlX2dldGVudD0KKwkJCVtORlNdIHNldHMgdGhlIHBhdGhuYW1lIHRvIHRoZSBwcm9ncmFtIHdoaWNoIGlzIHVzZWQKKwkJCXRvIHVwZGF0ZSB0aGUgTkZTIGNsaWVudCBjYWNoZSBlbnRyaWVzLgorCisJbmZzLmNhY2hlX2dldGVudF90aW1lb3V0PQorCQkJW05GU10gc2V0cyB0aGUgdGltZW91dCBhZnRlciB3aGljaCBhbiBhdHRlbXB0IHRvCisJCQl1cGRhdGUgYSBjYWNoZSBlbnRyeSBpcyBkZWVtZWQgdG8gaGF2ZSBmYWlsZWQuCisKKwluZnMuaWRtYXBfY2FjaGVfdGltZW91dD0KKwkJCVtORlNdIHNldCB0aGUgbWF4aW11bSBsaWZldGltZSBmb3IgaWRtYXBwZXIgY2FjaGUKKwkJCWVudHJpZXMuCisKKwluZnMuZW5hYmxlX2lubzY0PQorCQkJW05GU10gZW5hYmxlIDY0LWJpdCBpbm9kZSBudW1iZXJzLgorCQkJSWYgemVybywgdGhlIE5GUyBjbGllbnQgd2lsbCBmYWtlIHVwIGEgMzItYml0IGlub2RlCisJCQludW1iZXIgZm9yIHRoZSByZWFkZGlyKCkgYW5kIHN0YXQoKSBzeXNjYWxscyBpbnN0ZWFkCisJCQlvZiByZXR1cm5pbmcgdGhlIGZ1bGwgNjQtYml0IG51bWJlci4KKwkJCVRoZSBkZWZhdWx0IGlzIHRvIHJldHVybiA2NC1iaXQgaW5vZGUgbnVtYmVycy4KKworCW5mcy5tYXhfc2Vzc2lvbl9zbG90cz0KKwkJCVtORlN2NC4xXSBTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzZXNzaW9uIHNsb3RzCisJCQl0aGUgY2xpZW50IHdpbGwgYXR0ZW1wdCB0byBuZWdvdGlhdGUgd2l0aCB0aGUgc2VydmVyLgorCQkJVGhpcyBsaW1pdHMgdGhlIG51bWJlciBvZiBzaW11bHRhbmVvdXMgUlBDIHJlcXVlc3RzCisJCQl0aGF0IHRoZSBjbGllbnQgY2FuIHNlbmQgdG8gdGhlIE5GU3Y0LjEgc2VydmVyLgorCQkJTm90ZSB0aGF0IHRoZXJlIGlzIGxpdHRsZSBwb2ludCBpbiBzZXR0aW5nIHRoaXMKKwkJCXZhbHVlIGhpZ2hlciB0aGFuIHRoZSBtYXhfdGNwX3Nsb3RfdGFibGVfbGltaXQuCisKKwluZnMubmZzNF9kaXNhYmxlX2lkbWFwcGluZz0KKwkJCVtORlN2NF0gV2hlbiBzZXQgdG8gdGhlIGRlZmF1bHQgb2YgJzEnLCB0aGlzIG9wdGlvbgorCQkJZW5zdXJlcyB0aGF0IGJvdGggdGhlIFJQQyBsZXZlbCBhdXRoZW50aWNhdGlvbgorCQkJc2NoZW1lIGFuZCB0aGUgTkZTIGxldmVsIG9wZXJhdGlvbnMgYWdyZWUgdG8gdXNlCisJCQludW1lcmljIHVpZHMvZ2lkcyBpZiB0aGUgbW91bnQgaXMgdXNpbmcgdGhlCisJCQknc2VjPXN5cycgc2VjdXJpdHkgZmxhdm91ci4gSW4gZWZmZWN0IGl0IGlzCisJCQlkaXNhYmxpbmcgaWRtYXBwaW5nLCB3aGljaCBjYW4gbWFrZSBtaWdyYXRpb24gZnJvbQorCQkJbGVnYWN5IE5GU3YyL3YzIHN5c3RlbXMgdG8gTkZTdjQgZWFzaWVyLgorCQkJU2VydmVycyB0aGF0IGRvIG5vdCBzdXBwb3J0IHRoaXMgbW9kZSBvZiBvcGVyYXRpb24KKwkJCXdpbGwgYmUgYXV0b2RldGVjdGVkIGJ5IHRoZSBjbGllbnQsIGFuZCBpdCB3aWxsIGZhbGwKKwkJCWJhY2sgdG8gdXNpbmcgdGhlIGlkbWFwcGVyLgorCQkJVG8gdHVybiBvZmYgdGhpcyBiZWhhdmlvdXIsIHNldCB0aGUgdmFsdWUgdG8gJzAnLgorCW5mcy5uZnM0X3VuaXF1ZV9pZD0KKwkJCVtORlM0XSBTcGVjaWZ5IGFuIGFkZGl0aW9uYWwgZml4ZWQgdW5pcXVlIGlkZW50LQorCQkJaWZpY2F0aW9uIHN0cmluZyB0aGF0IE5GU3Y0IGNsaWVudHMgY2FuIGluc2VydCBpbnRvCisJCQl0aGVpciBuZnNfY2xpZW50X2lkNCBzdHJpbmcuICBUaGlzIGlzIHR5cGljYWxseSBhCisJCQlVVUlEIHRoYXQgaXMgZ2VuZXJhdGVkIGF0IHN5c3RlbSBpbnN0YWxsIHRpbWUuCisKKwluZnMuc2VuZF9pbXBsZW1lbnRhdGlvbl9pZCA9CisJCQlbTkZTdjQuMV0gU2VuZCBjbGllbnQgaW1wbGVtZW50YXRpb24gaWRlbnRpZmljYXRpb24KKwkJCWluZm9ybWF0aW9uIGluIGV4Y2hhbmdlX2lkIHJlcXVlc3RzLgorCQkJSWYgemVybywgbm8gaW1wbGVtZW50YXRpb24gaWRlbnRpZmljYXRpb24gaW5mb3JtYXRpb24KKwkJCXdpbGwgYmUgc2VudC4KKwkJCVRoZSBkZWZhdWx0IGlzIHRvIHNlbmQgdGhlIGltcGxlbWVudGF0aW9uIGlkZW50aWZpY2F0aW9uCisJCQlpbmZvcm1hdGlvbi4KKwkKKwluZnMucmVjb3Zlcl9sb3N0X2xvY2tzID0KKwkJCVtORlN2NF0gQXR0ZW1wdCB0byByZWNvdmVyIGxvY2tzIHRoYXQgd2VyZSBsb3N0IGR1ZQorCQkJdG8gYSBsZWFzZSB0aW1lb3V0IG9uIHRoZSBzZXJ2ZXIuIFBsZWFzZSBub3RlIHRoYXQKKwkJCWRvaW5nIHRoaXMgcmlza3MgZGF0YSBjb3JydXB0aW9uLCBzaW5jZSB0aGVyZSBhcmUKKwkJCW5vIGd1YXJhbnRlZXMgdGhhdCB0aGUgZmlsZSB3aWxsIHJlbWFpbiB1bmNoYW5nZWQKKwkJCWFmdGVyIHRoZSBsb2NrcyBhcmUgbG9zdC4KKwkJCUlmIHlvdSB3YW50IHRvIGVuYWJsZSB0aGUga2VybmVsIGxlZ2FjeSBiZWhhdmlvdXIgb2YKKwkJCWF0dGVtcHRpbmcgdG8gcmVjb3ZlciB0aGVzZSBsb2NrcywgdGhlbiBzZXQgdGhpcworCQkJcGFyYW1ldGVyIHRvICcxJy4KKwkJCVRoZSBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBvZiAnMCcgY2F1c2VzIHRoZSBrZXJuZWwKKwkJCW5vdCB0byBhdHRlbXB0IHJlY292ZXJ5IG9mIGxvc3QgbG9ja3MuCisKKwluZnM0LmxheW91dHN0YXRzX3RpbWVyID0KKwkJCVtORlN2NC4yXSBDaGFuZ2UgdGhlIHJhdGUgYXQgd2hpY2ggdGhlIGtlcm5lbCBzZW5kcworCQkJbGF5b3V0c3RhdHMgdG8gdGhlIHBORlMgbWV0YWRhdGEgc2VydmVyLgorCisJCQlTZXR0aW5nIHRoaXMgdG8gdmFsdWUgdG8gMCBjYXVzZXMgdGhlIGtlcm5lbCB0byB1c2UKKwkJCXdoYXRldmVyIHZhbHVlIGlzIHRoZSBkZWZhdWx0IHNldCBieSB0aGUgbGF5b3V0CisJCQlkcml2ZXIuIEEgbm9uLXplcm8gdmFsdWUgc2V0cyB0aGUgbWluaW11bSBpbnRlcnZhbAorCQkJaW4gc2Vjb25kcyBiZXR3ZWVuIGxheW91dHN0YXRzIHRyYW5zbWlzc2lvbnMuCisKKwluZnNkLm5mczRfZGlzYWJsZV9pZG1hcHBpbmc9CisJCQlbTkZTdjRdIFdoZW4gc2V0IHRvIHRoZSBkZWZhdWx0IG9mICcxJywgdGhlIE5GU3Y0CisJCQlzZXJ2ZXIgd2lsbCByZXR1cm4gb25seSBudW1lcmljIHVpZHMgYW5kIGdpZHMgdG8KKwkJCWNsaWVudHMgdXNpbmcgYXV0aF9zeXMsIGFuZCB3aWxsIGFjY2VwdCBudW1lcmljIHVpZHMKKwkJCWFuZCBnaWRzIGZyb20gc3VjaCBjbGllbnRzLiAgVGhpcyBpcyBpbnRlbmRlZCB0byBlYXNlCisJCQltaWdyYXRpb24gZnJvbSBORlN2Mi92My4KKworCW9iamxheW91dGRyaXZlci5vc2RfbG9naW5fcHJvZz0KKwkJCVtORlNdIFtPQkpMQVlPVVRdIHNldHMgdGhlIHBhdGhuYW1lIHRvIHRoZSBwcm9ncmFtIHdoaWNoCisJCQlpcyB1c2VkIHRvIGF1dG9tYXRpY2FsbHkgZGlzY292ZXIgYW5kIGxvZ2luIGludG8gbmV3CisJCQlvc2QtdGFyZ2V0cy4gUGxlYXNlIHNlZToKKwkJCURvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcG5mcy50eHQgZm9yIG1vcmUgZXhwbGFuYXRpb25zCisKKwlubWlfZGVidWc9CVtLTkwsQVZSMzIsU0hdIFNwZWNpZnkgb25lIG9yIG1vcmUgYWN0aW9ucyB0byB0YWtlCisJCQl3aGVuIGEgTk1JIGlzIHRyaWdnZXJlZC4KKwkJCUZvcm1hdDogW3N0YXRlXVsscmVnc11bLGRlYm91bmNlXVssZGllXQorCisJbm1pX3dhdGNoZG9nPQlbS05MLEJVR1M9WDg2XSBEZWJ1Z2dpbmcgZmVhdHVyZXMgZm9yIFNNUCBrZXJuZWxzCisJCQlGb3JtYXQ6IFtwYW5pYyxdW25vcGFuaWMsXVtudW1dCisJCQlWYWxpZCBudW06IDAgb3IgMQorCQkJMCAtIHR1cm4gaGFyZGxvY2t1cCBkZXRlY3RvciBpbiBubWlfd2F0Y2hkb2cgb2ZmCisJCQkxIC0gdHVybiBoYXJkbG9ja3VwIGRldGVjdG9yIGluIG5taV93YXRjaGRvZyBvbgorCQkJV2hlbiBwYW5pYyBpcyBzcGVjaWZpZWQsIHBhbmljIHdoZW4gYW4gTk1JIHdhdGNoZG9nCisJCQl0aW1lb3V0IG9jY3VycyAob3IgJ25vcGFuaWMnIHRvIG92ZXJyaWRlIHRoZSBvcHBvc2l0ZQorCQkJZGVmYXVsdCkuIFRvIGRpc2FibGUgYm90aCBoYXJkIGFuZCBzb2Z0IGxvY2t1cCBkZXRlY3RvcnMsCisJCQlwbGVhc2Ugc2VlICdub3dhdGNoZG9nJy4KKwkJCVRoaXMgaXMgdXNlZnVsIHdoZW4geW91IHVzZSBhIHBhbmljPS4uLiB0aW1lb3V0IGFuZAorCQkJbmVlZCB0aGUgYm94IHF1aWNrbHkgdXAgYWdhaW4uCisKKwluZXRwb2xsLmNhcnJpZXJfdGltZW91dD0KKwkJCVtORVRdIFNwZWNpZmllcyBhbW91bnQgb2YgdGltZSAoaW4gc2Vjb25kcykgdGhhdAorCQkJbmV0cG9sbCBzaG91bGQgd2FpdCBmb3IgYSBjYXJyaWVyLiBCeSBkZWZhdWx0IG5ldHBvbGwKKwkJCXdhaXRzIDQgc2Vjb25kcy4KKworCW5vMzg3CQlbQlVHUz1YODYtMzJdIFRlbGxzIHRoZSBrZXJuZWwgdG8gdXNlIHRoZSAzODcgbWF0aHMKKwkJCWVtdWxhdGlvbiBsaWJyYXJ5IGV2ZW4gaWYgYSAzODcgbWF0aHMgY29wcm9jZXNzb3IKKwkJCWlzIHByZXNlbnQuCisKKwlub19jb25zb2xlX3N1c3BlbmQKKwkJCVtIV10gTmV2ZXIgc3VzcGVuZCB0aGUgY29uc29sZQorCQkJRGlzYWJsZSBzdXNwZW5kaW5nIG9mIGNvbnNvbGVzIGR1cmluZyBzdXNwZW5kIGFuZAorCQkJaGliZXJuYXRlIG9wZXJhdGlvbnMuICBPbmNlIGRpc2FibGVkLCBkZWJ1Z2dpbmcKKwkJCW1lc3NhZ2VzIGNhbiByZWFjaCB2YXJpb3VzIGNvbnNvbGVzIHdoaWxlIHRoZSByZXN0CisJCQlvZiB0aGUgc3lzdGVtIGlzIGJlaW5nIHB1dCB0byBzbGVlcCAoaWUsIHdoaWxlCisJCQlkZWJ1Z2dpbmcgZHJpdmVyIHN1c3BlbmQvcmVzdW1lIGhvb2tzKS4gIFRoaXMgbWF5CisJCQlub3Qgd29yayByZWxpYWJseSB3aXRoIGFsbCBjb25zb2xlcywgYnV0IGlzIGtub3duCisJCQl0byB3b3JrIHdpdGggc2VyaWFsIGFuZCBWR0EgY29uc29sZXMuCisJCQlUbyBmYWNpbGl0YXRlIG1vcmUgZmxleGlibGUgZGVidWdnaW5nLCB3ZSBhbHNvIGFkZAorCQkJY29uc29sZV9zdXNwZW5kLCBhIHByaW50ayBtb2R1bGUgcGFyYW1ldGVyIHRvIGNvbnRyb2wKKwkJCWl0LiBVc2VycyBjb3VsZCB1c2UgY29uc29sZV9zdXNwZW5kICh1c3VhbGx5CisJCQkvc3lzL21vZHVsZS9wcmludGsvcGFyYW1ldGVycy9jb25zb2xlX3N1c3BlbmQpIHRvCisJCQl0dXJuIG9uL29mZiBpdCBkeW5hbWljYWxseS4KKworCW5vYWxpZW5jYWNoZQlbTU0sIE5VTUEsIFNMQUJdIERpc2FibGVzIHRoZSBhbGxvY2F0aW9uIG9mIGFsaWVuCisJCQljYWNoZXMgaW4gdGhlIHNsYWIgYWxsb2NhdG9yLiAgU2F2ZXMgcGVyLW5vZGUgbWVtb3J5LAorCQkJYnV0IHdpbGwgaW1wYWN0IHBlcmZvcm1hbmNlLgorCisJbm9hbGlnbgkJW0tOTCxBUk1dCisKKwlub2FwaWMJCVtTTVAsQVBJQ10gVGVsbHMgdGhlIGtlcm5lbCB0byBub3QgbWFrZSB1c2Ugb2YgYW55CisJCQlJT0FQSUNzIHRoYXQgbWF5IGJlIHByZXNlbnQgaW4gdGhlIHN5c3RlbS4KKworCW5vYXV0b2dyb3VwCURpc2FibGUgc2NoZWR1bGVyIGF1dG9tYXRpYyB0YXNrIGdyb3VwIGNyZWF0aW9uLgorCisJbm9iYXRzCQlbUFBDXSBEbyBub3QgdXNlIEJBVHMgZm9yIG1hcHBpbmcga2VybmVsIGxvd21lbQorCQkJb24gIkNsYXNzaWMiIFBQQyBjb3Jlcy4KKworCW5vY2FjaGUJCVtBUk1dCisKKwlub2NsZmx1c2gJW0JVR1M9WDg2XSBEb24ndCB1c2UgdGhlIENMRkxVU0ggaW5zdHJ1Y3Rpb24KKworCW5vZGVsYXlhY2N0CVtLTkxdIERpc2FibGUgcGVyLXRhc2sgZGVsYXkgYWNjb3VudGluZworCisJbm9kaXNjb25uZWN0CVtIVyxTQ1NJLE02OEtdIERpc2FibGVzIFNDU0kgZGlzY29ubmVjdHMuCisKKwlub2RzcAkJW1NIXSBEaXNhYmxlIGhhcmR3YXJlIERTUCBhdCBib290IHRpbWUuCisKKwlub2VmaQkJRGlzYWJsZSBFRkkgcnVudGltZSBzZXJ2aWNlcyBzdXBwb3J0LgorCisJbm9leGVjCQlbSUEtNjRdCisKKwlub2V4ZWMJCVtYODZdCisJCQlPbiBYODYtMzIgYXZhaWxhYmxlIG9ubHkgb24gUEFFIGNvbmZpZ3VyZWQga2VybmVscy4KKwkJCW5vZXhlYz1vbjogZW5hYmxlIG5vbi1leGVjdXRhYmxlIG1hcHBpbmdzIChkZWZhdWx0KQorCQkJbm9leGVjPW9mZjogZGlzYWJsZSBub24tZXhlY3V0YWJsZSBtYXBwaW5ncworCisJbm9zbWFwCQlbWDg2XQorCQkJRGlzYWJsZSBTTUFQIChTdXBlcnZpc29yIE1vZGUgQWNjZXNzIFByZXZlbnRpb24pCisJCQlldmVuIGlmIGl0IGlzIHN1cHBvcnRlZCBieSBwcm9jZXNzb3IuCisKKwlub3NtZXAJCVtYODZdCisJCQlEaXNhYmxlIFNNRVAgKFN1cGVydmlzb3IgTW9kZSBFeGVjdXRpb24gUHJldmVudGlvbikKKwkJCWV2ZW4gaWYgaXQgaXMgc3VwcG9ydGVkIGJ5IHByb2Nlc3Nvci4KKworCW5vZXhlYzMyCVtYODYtNjRdCisJCQlUaGlzIGFmZmVjdHMgb25seSAzMi1iaXQgZXhlY3V0YWJsZXMuCisJCQlub2V4ZWMzMj1vbjogZW5hYmxlIG5vbi1leGVjdXRhYmxlIG1hcHBpbmdzIChkZWZhdWx0KQorCQkJCXJlYWQgZG9lc24ndCBpbXBseSBleGVjdXRhYmxlIG1hcHBpbmdzCisJCQlub2V4ZWMzMj1vZmY6IGRpc2FibGUgbm9uLWV4ZWN1dGFibGUgbWFwcGluZ3MKKwkJCQlyZWFkIGltcGxpZXMgZXhlY3V0YWJsZSBtYXBwaW5ncworCisJbm9mcHUJCVtNSVBTLFNIXSBEaXNhYmxlIGhhcmR3YXJlIEZQVSBhdCBib290IHRpbWUuCisKKwlub2Z4c3IJCVtCVUdTPVg4Ni0zMl0gRGlzYWJsZXMgeDg2IGZsb2F0aW5nIHBvaW50IGV4dGVuZGVkCisJCQlyZWdpc3RlciBzYXZlIGFuZCByZXN0b3JlLiBUaGUga2VybmVsIHdpbGwgb25seSBzYXZlCisJCQlsZWdhY3kgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzIG9uIHRhc2sgc3dpdGNoLgorCisJbm9odWdlaW9tYXAJW0tOTCx4ODZdIERpc2FibGUga2VybmVsIGh1Z2UgSS9PIG1hcHBpbmdzLgorCisJbm94c2F2ZQkJW0JVR1M9WDg2XSBEaXNhYmxlcyB4ODYgZXh0ZW5kZWQgcmVnaXN0ZXIgc3RhdGUgc2F2ZQorCQkJYW5kIHJlc3RvcmUgdXNpbmcgeHNhdmUuIFRoZSBrZXJuZWwgd2lsbCBmYWxsYmFjayB0bworCQkJZW5hYmxpbmcgbGVnYWN5IGZsb2F0aW5nLXBvaW50IGFuZCBzc2Ugc3RhdGUuCisKKwlub3hzYXZlb3B0CVtYODZdIERpc2FibGVzIHhzYXZlb3B0IHVzZWQgaW4gc2F2aW5nIHg4NiBleHRlbmRlZAorCQkJcmVnaXN0ZXIgc3RhdGVzLiBUaGUga2VybmVsIHdpbGwgZmFsbCBiYWNrIHRvIHVzZQorCQkJeHNhdmUgdG8gc2F2ZSB0aGUgc3RhdGVzLiBCeSB1c2luZyB0aGlzIHBhcmFtZXRlciwKKwkJCXBlcmZvcm1hbmNlIG9mIHNhdmluZyB0aGUgc3RhdGVzIGlzIGRlZ3JhZGVkIGJlY2F1c2UKKwkJCXhzYXZlIGRvZXNuJ3Qgc3VwcG9ydCBtb2RpZmllZCBvcHRpbWl6YXRpb24gd2hpbGUKKwkJCXhzYXZlb3B0IHN1cHBvcnRzIGl0IG9uIHhzYXZlb3B0IGVuYWJsZWQgc3lzdGVtcy4KKworCW5veHNhdmVzCVtYODZdIERpc2FibGVzIHhzYXZlcyBhbmQgeHJzdG9ycyB1c2VkIGluIHNhdmluZyBhbmQKKwkJCXJlc3RvcmluZyB4ODYgZXh0ZW5kZWQgcmVnaXN0ZXIgc3RhdGUgaW4gY29tcGFjdGVkCisJCQlmb3JtIG9mIHhzYXZlIGFyZWEuIFRoZSBrZXJuZWwgd2lsbCBmYWxsIGJhY2sgdG8gdXNlCisJCQl4c2F2ZW9wdCBhbmQgeHJzdG9yIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlIHN0YXRlcworCQkJaW4gc3RhbmRhcmQgZm9ybSBvZiB4c2F2ZSBhcmVhLiBCeSB1c2luZyB0aGlzCisJCQlwYXJhbWV0ZXIsIHhzYXZlIGFyZWEgcGVyIHByb2Nlc3MgbWlnaHQgb2NjdXB5IG1vcmUKKwkJCW1lbW9yeSBvbiB4c2F2ZXMgZW5hYmxlZCBzeXN0ZW1zLgorCisJbm9obHQJCVtCVUdTPUFSTSxTSF0gVGVsbHMgdGhlIGtlcm5lbCB0aGF0IHRoZSBzbGVlcChTSCkgb3IKKwkJCXdmaShBUk0pIGluc3RydWN0aW9uIGRvZXNuJ3Qgd29yayBjb3JyZWN0bHkgYW5kIG5vdCB0bworCQkJdXNlIGl0LiBUaGlzIGlzIGFsc28gdXNlZnVsIHdoZW4gdXNpbmcgSlRBRyBkZWJ1Z2dlci4KKworCW5vX2ZpbGVfY2FwcwlUZWxscyB0aGUga2VybmVsIG5vdCB0byBob25vciBmaWxlIGNhcGFiaWxpdGllcy4gIFRoZQorCQkJb25seSB3YXkgdGhlbiBmb3IgYSBmaWxlIHRvIGJlIGV4ZWN1dGVkIHdpdGggcHJpdmlsZWdlCisJCQlpcyB0byBiZSBzZXR1aWQgcm9vdCBvciBleGVjdXRlZCBieSByb290LgorCisJbm9oYWx0CQlbSUEtNjRdIFRlbGxzIHRoZSBrZXJuZWwgbm90IHRvIHVzZSB0aGUgcG93ZXIgc2F2aW5nCisJCQlmdW5jdGlvbiBQQUxfSEFMVF9MSUdIVCB3aGVuIGlkbGUuIFRoaXMgaW5jcmVhc2VzCisJCQlwb3dlci1jb25zdW1wdGlvbi4gT24gdGhlIHBvc2l0aXZlIHNpZGUsIGl0IHJlZHVjZXMKKwkJCWludGVycnVwdCB3YWtlLXVwIGxhdGVuY3ksIHdoaWNoIG1heSBpbXByb3ZlIHBlcmZvcm1hbmNlCisJCQlpbiBjZXJ0YWluIGVudmlyb25tZW50cyBzdWNoIGFzIG5ldHdvcmtlZCBzZXJ2ZXJzIG9yCisJCQlyZWFsLXRpbWUgc3lzdGVtcy4KKworCW5vaGliZXJuYXRlCVtISUJFUk5BVElPTl0gRGlzYWJsZSBoaWJlcm5hdGlvbiBhbmQgcmVzdW1lLgorCisJbm9oej0JCVtLTkxdIEJvb3R0aW1lIGVuYWJsZS9kaXNhYmxlIGR5bmFtaWMgdGlja3MKKwkJCVZhbGlkIGFyZ3VtZW50czogb24sIG9mZgorCQkJRGVmYXVsdDogb24KKworCW5vaHpfZnVsbD0JW0tOTCxCT09UXQorCQkJSW4ga2VybmVscyBidWlsdCB3aXRoIENPTkZJR19OT19IWl9GVUxMPXksIHNldAorCQkJdGhlIHNwZWNpZmllZCBsaXN0IG9mIENQVXMgd2hvc2UgdGljayB3aWxsIGJlIHN0b3BwZWQKKwkJCXdoZW5ldmVyIHBvc3NpYmxlLiBUaGUgYm9vdCBDUFUgd2lsbCBiZSBmb3JjZWQgb3V0c2lkZQorCQkJdGhlIHJhbmdlIHRvIG1haW50YWluIHRoZSB0aW1la2VlcGluZy4KKwkJCVRoZSBDUFVzIGluIHRoaXMgcmFuZ2UgbXVzdCBhbHNvIGJlIGluY2x1ZGVkIGluIHRoZQorCQkJcmN1X25vY2JzPSBzZXQuCisKKwlub2lvdHJhcAlbU0hdIERpc2FibGVzIHRyYXBwZWQgSS9PIHBvcnQgYWNjZXNzZXMuCisKKwlub2lycWRlYnVnCVtYODYtMzJdIERpc2FibGVzIHRoZSBjb2RlIHdoaWNoIGF0dGVtcHRzIHRvIGRldGVjdCBhbmQKKwkJCWRpc2FibGUgdW5oYW5kbGVkIGludGVycnVwdCBzb3VyY2VzLgorCisJbm9fdGltZXJfY2hlY2sJW1g4NixBUElDXSBEaXNhYmxlcyB0aGUgY29kZSB3aGljaCB0ZXN0cyBmb3IKKwkJCWJyb2tlbiB0aW1lciBJUlEgc291cmNlcy4KKworCW5vaXNhcG5wCVtJU0FQTlBdIERpc2FibGVzIElTQSBQblAgY29kZS4KKworCW5vaW5pdHJkCVtSQU1dIFRlbGxzIHRoZSBrZXJuZWwgbm90IHRvIGxvYWQgYW55IGNvbmZpZ3VyZWQKKwkJCWluaXRpYWwgUkFNIGRpc2suCisKKwlub2ludHJlbWFwCVtYODYtNjQsIEludGVsLUlPTU1VXSBEbyBub3QgZW5hYmxlIGludGVycnVwdAorCQkJcmVtYXBwaW5nLgorCQkJW0RlcHJlY2F0ZWQgLSB1c2UgaW50cmVtYXA9b2ZmXQorCisJbm9pbnRyb3V0ZQlbSUEtNjRdCisKKwlub2ppdHRlcglbSUEtNjRdIERpc2FibGVzIGppdHRlciBjaGVja2luZyBmb3IgSVRDIHRpbWVycy4KKworCW5vLWt2bWNsb2NrCVtYODYsS1ZNXSBEaXNhYmxlIHBhcmF2aXJ0dWFsaXplZCBLVk0gY2xvY2sgZHJpdmVyCisKKwluby1rdm1hcGYJW1g4NixLVk1dIERpc2FibGUgcGFyYXZpcnR1YWxpemVkIGFzeW5jaHJvbm91cyBwYWdlCisJCQlmYXVsdCBoYW5kbGluZy4KKworCW5vLXN0ZWFsLWFjYyAgICBbWDg2LEtWTV0gRGlzYWJsZSBwYXJhdmlydHVhbGl6ZWQgc3RlYWwgdGltZSBhY2NvdW50aW5nLgorCQkJc3RlYWwgdGltZSBpcyBjb21wdXRlZCwgYnV0IHdvbid0IGluZmx1ZW5jZSBzY2hlZHVsZXIKKwkJCWJlaGF2aW91cgorCisJbm9sYXBpYwkJW1g4Ni0zMixBUElDXSBEbyBub3QgZW5hYmxlIG9yIHVzZSB0aGUgbG9jYWwgQVBJQy4KKworCW5vbGFwaWNfdGltZXIJW1g4Ni0zMixBUElDXSBEbyBub3QgdXNlIHRoZSBsb2NhbCBBUElDIHRpbWVyLgorCisJbm9sdGxicwkJW1BQQ10gRG8gbm90IHVzZSBsYXJnZSBwYWdlL3RsYiBlbnRyaWVzIGZvciBrZXJuZWwKKwkJCWxvd21lbSBtYXBwaW5nIG9uIFBQQzQweC4KKworCW5vbWNhCQlbSUEtNjRdIERpc2FibGUgbWFjaGluZSBjaGVjayBhYm9ydCBoYW5kbGluZworCisJbm9tY2UJCVtYODYtMzJdIERpc2FibGUgTWFjaGluZSBDaGVjayBFeGNlcHRpb24KKworCW5vbWZncHQJCVtYODYtMzJdIERpc2FibGUgTXVsdGktRnVuY3Rpb24gR2VuZXJhbCBQdXJwb3NlCisJCQlUaW1lciB1c2FnZSAoZm9yIEFNRCBHZW9kZSBtYWNoaW5lcykuCisKKwlub25taV9pcGkJW1g4Nl0gRGlzYWJsZSB1c2luZyBOTUkgSVBJcyBkdXJpbmcgcGFuaWMvcmVib290IHRvCisJCQlzaHV0ZG93biB0aGUgb3RoZXIgY3B1cy4gIEluc3RlYWQgdXNlIHRoZSBSRUJPT1RfVkVDVE9SCisJCQlpcnEuCisKKwlub21vZHVsZQlEaXNhYmxlIG1vZHVsZSBsb2FkCisKKwlub3BhdAkJW1g4Nl0gRGlzYWJsZSBQQVQgKHBhZ2UgYXR0cmlidXRlIHRhYmxlIGV4dGVuc2lvbiBvZgorCQkJcGFnZXRhYmxlcykgc3VwcG9ydC4KKworCW5vcmFuZG1hcHMJRG9uJ3QgdXNlIGFkZHJlc3Mgc3BhY2UgcmFuZG9taXphdGlvbi4gIEVxdWl2YWxlbnQgdG8KKwkJCWVjaG8gMCA+IC9wcm9jL3N5cy9rZXJuZWwvcmFuZG9taXplX3ZhX3NwYWNlCisKKwlub3JlcGxhY2UtcGFyYXZpcnQJW1g4NixJQS02NCxQVl9PUFNdIERvbid0IHBhdGNoIHBhcmF2aXJ0X29wcworCisJbm9yZXBsYWNlLXNtcAlbWDg2LTMyLFNNUF0gRG9uJ3QgcmVwbGFjZSBTTVAgaW5zdHJ1Y3Rpb25zCisJCQl3aXRoIFVQIGFsdGVybmF0aXZlcworCisJbm9yZHJhbmQJW1g4Nl0gRGlzYWJsZSBrZXJuZWwgdXNlIG9mIHRoZSBSRFJBTkQgYW5kCisJCQlSRFNFRUQgaW5zdHJ1Y3Rpb25zIGV2ZW4gaWYgdGhleSBhcmUgc3VwcG9ydGVkCisJCQlieSB0aGUgcHJvY2Vzc29yLiAgUkRSQU5EIGFuZCBSRFNFRUQgYXJlIHN0aWxsCisJCQlhdmFpbGFibGUgdG8gdXNlciBzcGFjZSBhcHBsaWNhdGlvbnMuCisKKwlub3Jlc3VtZQlbU1dTVVNQXSBEaXNhYmxlcyByZXN1bWUgYW5kIHJlc3RvcmVzIG9yaWdpbmFsIHN3YXAKKwkJCXNwYWNlLgorCisJbm8tc2Nyb2xsCVtWR0FdIERpc2FibGVzIHNjcm9sbGJhY2suCisJCQlUaGlzIGlzIHJlcXVpcmVkIGZvciB0aGUgQnJhaWxsZXggaWI4MC1waWV6byBCcmFpbGxlCisJCQlyZWFkZXIgbWFkZSBieSBGLkguIFBhcGVubWVpZXIgKEdlcm1hbnkpLgorCisJbm9zYmFnYXJ0CVtJQS02NF0KKworCW5vc2VwCQlbQlVHUz1YODYtMzJdIERpc2FibGVzIHg4NiBTWVNFTlRFUi9TWVNFWElUIHN1cHBvcnQuCisKKwlub3NtcAkJW1NNUF0gVGVsbHMgYW4gU01QIGtlcm5lbCB0byBhY3QgYXMgYSBVUCBrZXJuZWwsCisJCQlhbmQgZGlzYWJsZSB0aGUgSU8gQVBJQy4gIGxlZ2FjeSBmb3IgIm1heGNwdXM9MCIuCisKKwlub3NvZnRsb2NrdXAJW0tOTF0gRGlzYWJsZSB0aGUgc29mdC1sb2NrdXAgZGV0ZWN0b3IuCisKKwlub3N5bmMJCVtIVyxNNjhLXSBEaXNhYmxlcyBzeW5jIG5lZ290aWF0aW9uIGZvciBhbGwgZGV2aWNlcy4KKworCW5vdHNjCQlbQlVHUz1YODYtMzJdIERpc2FibGUgVGltZSBTdGFtcCBDb3VudGVyCisKKwlub3VzYgkJW1VTQl0gRGlzYWJsZSB0aGUgVVNCIHN1YnN5c3RlbQorCisJbm93YXRjaGRvZwlbS05MXSBEaXNhYmxlIGJvdGggbG9ja3VwIGRldGVjdG9ycywgaS5lLgorICAgICAgICAgICAgICAgICAgICAgICAgc29mdC1sb2NrdXAgYW5kIE5NSSB3YXRjaGRvZyAoaGFyZC1sb2NrdXApLgorCisJbm93YgkJW0FSTV0KKworCW5veDJhcGljCVtYODYtNjQsQVBJQ10gRG8gbm90IGVuYWJsZSB4MkFQSUMgbW9kZS4KKworCWNwdTBfaG90cGx1ZwlbWDg2XSBUdXJuIG9uIENQVTAgaG90cGx1ZyBmZWF0dXJlIHdoZW4KKwkJCUNPTkZJR19CT09UUEFSQU1fSE9UUExVR19DUFUwIGlzIG9mZi4KKwkJCVNvbWUgZmVhdHVyZXMgZGVwZW5kIG9uIENQVTAuIEtub3duIGRlcGVuZGVuY2llcyBhcmU6CisJCQkxLiBSZXN1bWUgZnJvbSBzdXNwZW5kL2hpYmVybmF0ZSBkZXBlbmRzIG9uIENQVTAuCisJCQlTdXNwZW5kL2hpYmVybmF0ZSB3aWxsIGZhaWwgaWYgQ1BVMCBpcyBvZmZsaW5lIGFuZCB5b3UKKwkJCW5lZWQgdG8gb25saW5lIENQVTAgYmVmb3JlIHN1c3BlbmQvaGliZXJuYXRlLgorCQkJMi4gUElDIGludGVycnVwdHMgYWxzbyBkZXBlbmQgb24gQ1BVMC4gQ1BVMCBjYW4ndCBiZQorCQkJcmVtb3ZlZCBpZiBhIFBJQyBpbnRlcnJ1cHQgaXMgZGV0ZWN0ZWQuCisJCQlJdCdzIHNhaWQgcG93ZXJvZmYvcmVib290IG1heSBkZXBlbmQgb24gQ1BVMCBvbiBzb21lCisJCQltYWNoaW5lcyBhbHRob3VnaCBJIGhhdmVuJ3Qgc2VlbiBzdWNoIGlzc3VlcyBzbyBmYXIKKwkJCWFmdGVyIENQVTAgaXMgb2ZmbGluZSBvbiBhIGZldyB0ZXN0ZWQgbWFjaGluZXMuCisJCQlJZiB0aGUgZGVwZW5kZW5jaWVzIGFyZSB1bmRlciB5b3VyIGNvbnRyb2wsIHlvdSBjYW4KKwkJCXR1cm4gb24gY3B1MF9ob3RwbHVnLgorCisJbnB0Y2c9CQlbSUEtNjRdIE92ZXJyaWRlIG1heCBudW1iZXIgb2YgY29uY3VycmVudCBnbG9iYWwgVExCCisJCQlwdXJnZXMgd2hpY2ggaXMgcmVwb3J0ZWQgZnJvbSBlaXRoZXIgUEFMX1ZNX1NVTU1BUlkgb3IKKwkJCVNBTCBQQUxPLgorCisJbnJfY3B1cz0JW1NNUF0gTWF4aW11bSBudW1iZXIgb2YgcHJvY2Vzc29ycyB0aGF0CWFuIFNNUCBrZXJuZWwKKwkJCWNvdWxkIHN1cHBvcnQuICBucl9jcHVzPW4gOiBuID49IDEgbGltaXRzIHRoZSBrZXJuZWwgdG8KKwkJCXN1cHBvcnRpbmcgJ24nIHByb2Nlc3NvcnMuIExhdGVyIGluIHJ1bnRpbWUgeW91IGNhbiBub3QKKwkJCXVzZSBob3RwbHVnIGNwdSBmZWF0dXJlIHRvIHB1dCBtb3JlIGNwdSBiYWNrIHRvIG9ubGluZS4KKwkJCWp1c3QgbGlrZSB5b3UgY29tcGlsZSB0aGUga2VybmVsIE5SX0NQVVM9bgorCisJbnJfdWFydHM9CVtTRVJJQUxdIG1heGltdW0gbnVtYmVyIG9mIFVBUlRzIHRvIGJlIHJlZ2lzdGVyZWQuCisKKwludW1hX2JhbGFuY2luZz0JW0tOTCxYODZdIEVuYWJsZSBvciBkaXNhYmxlIGF1dG9tYXRpYyBOVU1BIGJhbGFuY2luZy4KKwkJCUFsbG93ZWQgdmFsdWVzIGFyZSBlbmFibGUgYW5kIGRpc2FibGUKKworCW51bWFfem9uZWxpc3Rfb3JkZXI9IFtLTkwsIEJPT1RdIFNlbGVjdCB6b25lbGlzdCBvcmRlciBmb3IgTlVNQS4KKwkJCW9uZSBvZiBbJ3pvbmUnLCAnbm9kZScsICdkZWZhdWx0J10gY2FuIGJlIHNwZWNpZmllZAorCQkJVGhpcyBjYW4gYmUgc2V0IGZyb20gc3lzY3RsIGFmdGVyIGJvb3QuCisJCQlTZWUgRG9jdW1lbnRhdGlvbi9zeXNjdGwvdm0udHh0IGZvciBkZXRhaWxzLgorCisJb2hjaTEzOTRfZG1hPWVhcmx5CVtIV10gZW5hYmxlIGRlYnVnZ2luZyB2aWEgdGhlIG9oY2kxMzk0IGRyaXZlci4KKwkJCVNlZSBEb2N1bWVudGF0aW9uL2RlYnVnZ2luZy12aWEtb2hjaTEzOTQudHh0IGZvciBtb3JlCisJCQlpbmZvLgorCisJb2xwY19lY190aW1lb3V0PSBbT0xQQ10gbXMgZGVsYXkgd2hlbiBpc3N1aW5nIEVDIGNvbW1hbmRzCisJCQlSYXRoZXIgdGhhbiB0aW1pbmcgb3V0IGFmdGVyIDIwIG1zIGlmIGFuIEVDCisJCQljb21tYW5kIGlzIG5vdCBwcm9wZXJseSBBQ0tlZCwgb3ZlcnJpZGUgdGhlIGxlbmd0aAorCQkJb2YgdGhlIHRpbWVvdXQuICBXZSBoYXZlIGludGVycnVwdHMgZGlzYWJsZWQgd2hpbGUKKwkJCXdhaXRpbmcgZm9yIHRoZSBBQ0ssIHNvIGlmIHRoaXMgaXMgc2V0IHRvbyBoaWdoCisJCQlpbnRlcnJ1cHRzICptYXkqIGJlIGxvc3QhCisKKwlvbWFwX211eD0JW09NQVBdIE92ZXJyaWRlIGJvb3Rsb2FkZXIgcGluIG11bHRpcGxleGluZy4KKwkJCUZvcm1hdDogPG11eF9tb2RlMC5tb2RlX25hbWU9dmFsdWU+Li4uCisJCQlGb3IgZXhhbXBsZSwgdG8gb3ZlcnJpZGUgSTJDIGJ1czI6CisJCQlvbWFwX211eD1pMmMyX3NjbC5pMmMyX3NjbD0weDEwMCxpMmMyX3NkYS5pMmMyX3NkYT0weDEwMAorCisJb3Byb2ZpbGUudGltZXI9CVtIV10KKwkJCVVzZSB0aW1lciBpbnRlcnJ1cHQgaW5zdGVhZCBvZiBwZXJmb3JtYW5jZSBjb3VudGVycworCisJb3Byb2ZpbGUuY3B1X3R5cGU9CUZvcmNlIGFuIG9wcm9maWxlIGNwdSB0eXBlCisJCQlUaGlzIG1pZ2h0IGJlIHVzZWZ1bCBpZiB5b3UgaGF2ZSBhbiBvbGRlciBvcHJvZmlsZQorCQkJdXNlcmxhbmQgb3IgaWYgeW91IHdhbnQgY29tbW9uIGV2ZW50cy4KKwkJCUZvcm1hdDogeyBhcmNoX3BlcmZtb24gfQorCQkJYXJjaF9wZXJmbW9uOiBbWDg2XSBGb3JjZSB1c2Ugb2YgYXJjaGl0ZWN0dXJhbAorCQkJCXBlcmZtb24gb24gSW50ZWwgQ1BVcyBpbnN0ZWFkIG9mIHRoZQorCQkJCUNQVSBzcGVjaWZpYyBldmVudCBzZXQuCisJCQl0aW1lcjogW1g4Nl0gRm9yY2UgdXNlIG9mIGFyY2hpdGVjdHVyYWwgTk1JCisJCQkJdGltZXIgbW9kZSAoc2VlIGFsc28gb3Byb2ZpbGUudGltZXIKKwkJCQlmb3IgZ2VuZXJpYyBociB0aW1lciBtb2RlKQorCQkJCVtzMzkwXSBGb3JjZSBsZWdhY3kgYmFzaWMgbW9kZSBzYW1wbGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVwb3J0IGNwdV90eXBlICJ0aW1lciIpCisKKwlvb3BzPXBhbmljCUFsd2F5cyBwYW5pYyBvbiBvb3BzZXMuIERlZmF1bHQgaXMgdG8ganVzdCBraWxsIHRoZQorCQkJcHJvY2VzcywgYnV0IHRoZXJlIGlzIGEgc21hbGwgcHJvYmFiaWxpdHkgb2YKKwkJCWRlYWRsb2NraW5nIHRoZSBtYWNoaW5lLgorCQkJVGhpcyB3aWxsIGFsc28gY2F1c2UgcGFuaWNzIG9uIG1hY2hpbmUgY2hlY2sgZXhjZXB0aW9ucy4KKwkJCVVzZWZ1bCB0b2dldGhlciB3aXRoIHBhbmljPTMwIHRvIHRyaWdnZXIgYSByZWJvb3QuCisKKwlPU1MJCVtIVyxPU1NdCisJCQlTZWUgRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3Mvb3NzLXBhcmFtZXRlcnMudHh0CisKKwlwYWdlX293bmVyPQlbS05MXSBCb290LXRpbWUgcGFnZV9vd25lciBlbmFibGluZyBvcHRpb24uCisJCQlTdG9yYWdlIG9mIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB3aG8gYWxsb2NhdGVkCisJCQllYWNoIHBhZ2UgaXMgZGlzYWJsZWQgaW4gZGVmYXVsdC4gV2l0aCB0aGlzIHN3aXRjaCwKKwkJCXdlIGNhbiB0dXJuIGl0IG9uLgorCQkJb246IGVuYWJsZSB0aGUgZmVhdHVyZQorCisJcGFuaWM9CQlbS05MXSBLZXJuZWwgYmVoYXZpb3VyIG9uIHBhbmljOiBkZWxheSA8dGltZW91dD4KKwkJCXRpbWVvdXQgPiAwOiBzZWNvbmRzIGJlZm9yZSByZWJvb3RpbmcKKwkJCXRpbWVvdXQgPSAwOiB3YWl0IGZvcmV2ZXIKKwkJCXRpbWVvdXQgPCAwOiByZWJvb3QgaW1tZWRpYXRlbHkKKwkJCUZvcm1hdDogPHRpbWVvdXQ+CisKKwlwYW5pY19vbl93YXJuCXBhbmljKCkgaW5zdGVhZCBvZiBXQVJOKCkuICBVc2VmdWwgdG8gY2F1c2Uga2R1bXAKKwkJCW9uIGEgV0FSTigpLgorCisJY3Jhc2hfa2V4ZWNfcG9zdF9ub3RpZmllcnMKKwkJCVJ1biBrZHVtcCBhZnRlciBydW5uaW5nIHBhbmljLW5vdGlmaWVycyBhbmQgZHVtcGluZworCQkJa21zZy4gVGhpcyBvbmx5IGZvciB0aGUgdXNlcnMgd2hvIGRvdWJ0IGtkdW1wIGFsd2F5cworCQkJc3VjY2VlZHMgaW4gYW55IHNpdHVhdGlvbi4KKwkJCU5vdGUgdGhhdCB0aGlzIGFsc28gaW5jcmVhc2VzIHJpc2tzIG9mIGtkdW1wIGZhaWx1cmUsCisJCQliZWNhdXNlIHNvbWUgcGFuaWMgbm90aWZpZXJzIGNhbiBtYWtlIHRoZSBjcmFzaGVkCisJCQlrZXJuZWwgbW9yZSB1bnN0YWJsZS4KKworCXBhcmtiZC5wb3J0PQlbSFddIFBhcmFsbGVsIHBvcnQgbnVtYmVyIHRoZSBrZXlib2FyZCBhZGFwdGVyIGlzCisJCQljb25uZWN0ZWQgdG8sIGRlZmF1bHQgaXMgMC4KKwkJCUZvcm1hdDogPHBhcnBvcnQjPgorCXBhcmtiZC5tb2RlPQlbSFddIFBhcmFsbGVsIHBvcnQga2V5Ym9hcmQgYWRhcHRlciBtb2RlIG9mIG9wZXJhdGlvbiwKKwkJCTAgZm9yIFhULCAxIGZvciBBVCAoZGVmYXVsdCBpcyBBVCkuCisJCQlGb3JtYXQ6IDxtb2RlPgorCisJcGFycG9ydD0JW0hXLFBQVF0gU3BlY2lmeSBwYXJhbGxlbCBwb3J0cy4gMCBkaXNhYmxlcy4KKwkJCUZvcm1hdDogeyAwIHwgYXV0byB8IDB4QkJCWyxJUlFbLERNQV1dIH0KKwkJCVVzZSAnYXV0bycgdG8gZm9yY2UgdGhlIGRyaXZlciB0byB1c2UgYW55CisJCQlJUlEvRE1BIHNldHRpbmdzIGRldGVjdGVkICh0aGUgZGVmYXVsdCBpcyB0bworCQkJaWdub3JlIGRldGVjdGVkIElSUS9ETUEgc2V0dGluZ3MgYmVjYXVzZSBvZgorCQkJcG9zc2libGUgY29uZmxpY3RzKS4gWW91IGNhbiBzcGVjaWZ5IHRoZSBiYXNlCisJCQlhZGRyZXNzLCBJUlEsIGFuZCBETUEgc2V0dGluZ3M7IElSUSBhbmQgRE1BCisJCQlzaG91bGQgYmUgbnVtYmVycywgb3IgJ2F1dG8nIChmb3IgdXNpbmcgZGV0ZWN0ZWQKKwkJCXNldHRpbmdzIG9uIHRoYXQgcGFydGljdWxhciBwb3J0KSwgb3IgJ25vZmlmbycKKwkJCSh0byBhdm9pZCB1c2luZyBhIEZJRk8gZXZlbiBpZiBpdCBpcyBkZXRlY3RlZCkuCisJCQlQYXJhbGxlbCBwb3J0cyBhcmUgYXNzaWduZWQgaW4gdGhlIG9yZGVyIHRoZXkKKwkJCWFyZSBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZSwgc3RhcnRpbmcKKwkJCXdpdGggcGFycG9ydDAuCisKKwlwYXJwb3J0X2luaXRfbW9kZT0JW0hXLFBQVF0KKwkJCUNvbmZpZ3VyZSBWSUEgcGFyYWxsZWwgcG9ydCB0byBvcGVyYXRlIGluCisJCQlhIHNwZWNpZmljIG1vZGUuIFRoaXMgaXMgbmVjZXNzYXJ5IG9uIFBlZ2Fzb3MKKwkJCWNvbXB1dGVyIHdoZXJlIGZpcm13YXJlIGhhcyBubyBvcHRpb25zIGZvciBzZXR0aW5nCisJCQl1cCBwYXJhbGxlbCBwb3J0IG1vZGUgYW5kIHNldHMgaXQgdG8gc3BwLgorCQkJQ3VycmVudGx5IHRoaXMgZnVuY3Rpb24ga25vd3MgNjg2YSBhbmQgODIzMSBjaGlwcy4KKwkJCUZvcm1hdDogW3NwcHxwczJ8ZXBwfGVjcHxlY3BlcHBdCisKKwlwYXVzZV9vbl9vb3BzPQorCQkJSGFsdCBhbGwgQ1BVcyBhZnRlciB0aGUgZmlyc3Qgb29wcyBoYXMgYmVlbiBwcmludGVkIGZvcgorCQkJdGhlIHNwZWNpZmllZCBudW1iZXIgb2Ygc2Vjb25kcy4gIFRoaXMgaXMgdG8gYmUgdXNlZCBpZgorCQkJeW91ciBvb3BzZXMga2VlcCBzY3JvbGxpbmcgb2ZmIHRoZSBzY3JlZW4uCisKKwlwY2JpdD0JCVtIVyxJU0ROXQorCisJcGNkLgkJW1BBUklERV0KKwkJCVNlZSBoZWFkZXIgb2YgZHJpdmVycy9ibG9jay9wYXJpZGUvcGNkLmMuCisJCQlTZWUgYWxzbyBEb2N1bWVudGF0aW9uL2Jsb2NrZGV2L3BhcmlkZS50eHQuCisKKwlwY2k9b3B0aW9uWyxvcHRpb24uLi5dCVtQQ0ldIHZhcmlvdXMgUENJIHN1YnN5c3RlbSBvcHRpb25zOgorCQllYXJseWR1bXAJW1g4Nl0gZHVtcCBQQ0kgY29uZmlnIHNwYWNlIGJlZm9yZSB0aGUga2VybmVsCisJCQkgICAgICAgIGNoYW5nZXMgYW55dGhpbmcKKwkJb2ZmCQlbWDg2XSBkb24ndCBwcm9iZSBmb3IgdGhlIFBDSSBidXMKKwkJYmlvcwkJW1g4Ni0zMl0gZm9yY2UgdXNlIG9mIFBDSSBCSU9TLCBkb24ndCBhY2Nlc3MKKwkJCQl0aGUgaGFyZHdhcmUgZGlyZWN0bHkuIFVzZSB0aGlzIGlmIHlvdXIgbWFjaGluZQorCQkJCWhhcyBhIG5vbi1zdGFuZGFyZCBQQ0kgaG9zdCBicmlkZ2UuCisJCW5vYmlvcwkJW1g4Ni0zMl0gZGlzYWxsb3cgdXNlIG9mIFBDSSBCSU9TLCBvbmx5IGRpcmVjdAorCQkJCWhhcmR3YXJlIGFjY2VzcyBtZXRob2RzIGFyZSBhbGxvd2VkLiBVc2UgdGhpcworCQkJCWlmIHlvdSBleHBlcmllbmNlIGNyYXNoZXMgdXBvbiBib290dXAgYW5kIHlvdQorCQkJCXN1c3BlY3QgdGhleSBhcmUgY2F1c2VkIGJ5IHRoZSBCSU9TLgorCQljb25mMQkJW1g4Nl0gRm9yY2UgdXNlIG9mIFBDSSBDb25maWd1cmF0aW9uCisJCQkJTWVjaGFuaXNtIDEuCisJCWNvbmYyCQlbWDg2XSBGb3JjZSB1c2Ugb2YgUENJIENvbmZpZ3VyYXRpb24KKwkJCQlNZWNoYW5pc20gMi4KKwkJbm9hZXIJCVtQQ0lFXSBJZiB0aGUgUENJRUFFUiBrZXJuZWwgY29uZmlnIHBhcmFtZXRlciBpcworCQkJCWVuYWJsZWQsIHRoaXMga2VybmVsIGJvb3Qgb3B0aW9uIGNhbiBiZSB1c2VkIHRvCisJCQkJZGlzYWJsZSB0aGUgdXNlIG9mIFBDSUUgYWR2YW5jZWQgZXJyb3IgcmVwb3J0aW5nLgorCQlub2RvbWFpbnMJW1BDSV0gRGlzYWJsZSBzdXBwb3J0IGZvciBtdWx0aXBsZSBQQ0kKKwkJCQlyb290IGRvbWFpbnMgKGFrYSBQQ0kgc2VnbWVudHMsIGluIEFDUEktc3BlYWspLgorCQlub21tY29uZglbWDg2XSBEaXNhYmxlIHVzZSBvZiBNTUNPTkZJRyBmb3IgUENJCisJCQkJQ29uZmlndXJhdGlvbgorCQljaGVja19lbmFibGVfYW1kX21tY29uZiBbWDg2XSBjaGVjayBmb3IgYW5kIGVuYWJsZQorCQkJCXByb3Blcmx5IGNvbmZpZ3VyZWQgTU1JTyBhY2Nlc3MgdG8gUENJCisJCQkJY29uZmlnIHNwYWNlIG9uIEFNRCBmYW1pbHkgMTBoIENQVQorCQlub21zaQkJW01TSV0gSWYgdGhlIFBDSV9NU0kga2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIgaXMKKwkJCQllbmFibGVkLCB0aGlzIGtlcm5lbCBib290IG9wdGlvbiBjYW4gYmUgdXNlZCB0bworCQkJCWRpc2FibGUgdGhlIHVzZSBvZiBNU0kgaW50ZXJydXB0cyBzeXN0ZW0td2lkZS4KKwkJbm9pb2FwaWNxdWlyawlbQVBJQ10gRGlzYWJsZSBhbGwgYm9vdCBpbnRlcnJ1cHQgcXVpcmtzLgorCQkJCVNhZmV0eSBvcHRpb24gdG8ga2VlcCBib290IElSUXMgZW5hYmxlZC4gVGhpcworCQkJCXNob3VsZCBuZXZlciBiZSBuZWNlc3NhcnkuCisJCWlvYXBpY3Jlcm91dGUJW0FQSUNdIEVuYWJsZSByZXJvdXRpbmcgb2YgYm9vdCBJUlFzIHRvIHRoZQorCQkJCXByaW1hcnkgSU8tQVBJQyBmb3IgYnJpZGdlcyB0aGF0IGNhbm5vdCBkaXNhYmxlCisJCQkJYm9vdCBJUlFzLiBUaGlzIGZpeGVzIGEgc291cmNlIG9mIHNwdXJpb3VzIElSUXMKKwkJCQl3aGVuIHRoZSBzeXN0ZW0gbWFza3MgSVJRcy4KKwkJbm9pb2FwaWNyZXJvdXRlCVtBUElDXSBEaXNhYmxlIHdvcmthcm91bmQgdGhhdCB1c2VzIHRoZQorCQkJCWJvb3QgSVJRIGVxdWl2YWxlbnQgb2YgYW4gSVJRIHRoYXQgY29ubmVjdHMgdG8KKwkJCQlhIGNoaXBzZXQgd2hlcmUgYm9vdCBJUlFzIGNhbm5vdCBiZSBkaXNhYmxlZC4KKwkJCQlUaGUgb3Bwb3NpdGUgb2YgaW9hcGljcmVyb3V0ZS4KKwkJYmlvc2lycQkJW1g4Ni0zMl0gVXNlIFBDSSBCSU9TIGNhbGxzIHRvIGdldCB0aGUgaW50ZXJydXB0CisJCQkJcm91dGluZyB0YWJsZS4gVGhlc2UgY2FsbHMgYXJlIGtub3duIHRvIGJlIGJ1Z2d5CisJCQkJb24gc2V2ZXJhbCBtYWNoaW5lcyBhbmQgdGhleSBoYW5nIHRoZSBtYWNoaW5lCisJCQkJd2hlbiB1c2VkLCBidXQgb24gb3RoZXIgY29tcHV0ZXJzIGl0J3MgdGhlIG9ubHkKKwkJCQl3YXkgdG8gZ2V0IHRoZSBpbnRlcnJ1cHQgcm91dGluZyB0YWJsZS4gVHJ5CisJCQkJdGhpcyBvcHRpb24gaWYgdGhlIGtlcm5lbCBpcyB1bmFibGUgdG8gYWxsb2NhdGUKKwkJCQlJUlFzIG9yIGRpc2NvdmVyIHNlY29uZGFyeSBQQ0kgYnVzZXMgb24geW91cgorCQkJCW1vdGhlcmJvYXJkLgorCQlyb20JCVtYODZdIEFzc2lnbiBhZGRyZXNzIHNwYWNlIHRvIGV4cGFuc2lvbiBST01zLgorCQkJCVVzZSB3aXRoIGNhdXRpb24gYXMgY2VydGFpbiBkZXZpY2VzIHNoYXJlCisJCQkJYWRkcmVzcyBkZWNvZGVycyBiZXR3ZWVuIFJPTXMgYW5kIG90aGVyCisJCQkJcmVzb3VyY2VzLgorCQlub3JvbQkJW1g4Nl0gRG8gbm90IGFzc2lnbiBhZGRyZXNzIHNwYWNlIHRvCisJCQkJZXhwYW5zaW9uIFJPTXMgdGhhdCBkbyBub3QgYWxyZWFkeSBoYXZlCisJCQkJQklPUyBhc3NpZ25lZCBhZGRyZXNzIHJhbmdlcy4KKwkJbm9iYXIJCVtYODZdIERvIG5vdCBhc3NpZ24gYWRkcmVzcyBzcGFjZSB0byB0aGUKKwkJCQlCQVJzIHRoYXQgd2VyZW4ndCBhc3NpZ25lZCBieSB0aGUgQklPUy4KKwkJaXJxbWFzaz0weE1NTU0JW1g4Nl0gU2V0IGEgYml0IG1hc2sgb2YgSVJRcyBhbGxvd2VkIHRvIGJlCisJCQkJYXNzaWduZWQgYXV0b21hdGljYWxseSB0byBQQ0kgZGV2aWNlcy4gWW91IGNhbgorCQkJCW1ha2UgdGhlIGtlcm5lbCBleGNsdWRlIElSUXMgb2YgeW91ciBJU0EgY2FyZHMKKwkJCQl0aGlzIHdheS4KKwkJcGlycWFkZHI9MHhBQUFBQQlbWDg2XSBTcGVjaWZ5IHRoZSBwaHlzaWNhbCBhZGRyZXNzCisJCQkJb2YgdGhlIFBJUlEgdGFibGUgKG5vcm1hbGx5IGdlbmVyYXRlZAorCQkJCWJ5IHRoZSBCSU9TKSBpZiBpdCBpcyBvdXRzaWRlIHRoZQorCQkJCUYwMDAwaC0xMDAwMDBoIHJhbmdlLgorCQlsYXN0YnVzPU4JW1g4Nl0gU2NhbiBhbGwgYnVzZXMgdGhydSBidXMgI04uIENhbiBiZQorCQkJCXVzZWZ1bCBpZiB0aGUga2VybmVsIGlzIHVuYWJsZSB0byBmaW5kIHlvdXIKKwkJCQlzZWNvbmRhcnkgYnVzZXMgYW5kIHlvdSB3YW50IHRvIHRlbGwgaXQKKwkJCQlleHBsaWNpdGx5IHdoaWNoIG9uZXMgdGhleSBhcmUuCisJCWFzc2lnbi1idXNzZXMJW1g4Nl0gQWx3YXlzIGFzc2lnbiBhbGwgUENJIGJ1cworCQkJCW51bWJlcnMgb3Vyc2VsdmVzLCBvdmVycmlkaW5nCisJCQkJd2hhdGV2ZXIgdGhlIGZpcm13YXJlIG1heSBoYXZlIGRvbmUuCisJCXVzZXBpcnFtYXNrCVtYODZdIEhvbm9yIHRoZSBwb3NzaWJsZSBJUlEgbWFzayBzdG9yZWQKKwkJCQlpbiB0aGUgQklPUyAkUElSIHRhYmxlLiBUaGlzIGlzIG5lZWRlZCBvbgorCQkJCXNvbWUgc3lzdGVtcyB3aXRoIGJyb2tlbiBCSU9TZXMsIG5vdGFibHkKKwkJCQlzb21lIEhQIFBhdmlsaW9uIE41NDAwIGFuZCBPbW5pYm9vayBYRTMKKwkJCQlub3RlYm9va3MuIFRoaXMgd2lsbCBoYXZlIG5vIGVmZmVjdCBpZiBBQ1BJCisJCQkJSVJRIHJvdXRpbmcgaXMgZW5hYmxlZC4KKwkJbm9hY3BpCQlbWDg2XSBEbyBub3QgdXNlIEFDUEkgZm9yIElSUSByb3V0aW5nCisJCQkJb3IgZm9yIFBDSSBzY2FubmluZy4KKwkJdXNlX2NycwkJW1g4Nl0gVXNlIFBDSSBob3N0IGJyaWRnZSB3aW5kb3cgaW5mb3JtYXRpb24KKwkJCQlmcm9tIEFDUEkuICBPbiBCSU9TZXMgZnJvbSAyMDA4IG9yIGxhdGVyLCB0aGlzCisJCQkJaXMgZW5hYmxlZCBieSBkZWZhdWx0LiAgSWYgeW91IG5lZWQgdG8gdXNlIHRoaXMsCisJCQkJcGxlYXNlIHJlcG9ydCBhIGJ1Zy4KKwkJbm9jcnMJCVtYODZdIElnbm9yZSBQQ0kgaG9zdCBicmlkZ2Ugd2luZG93cyBmcm9tIEFDUEkuCisJCQkgICAgICAgIElmIHlvdSBuZWVkIHRvIHVzZSB0aGlzLCBwbGVhc2UgcmVwb3J0IGEgYnVnLgorCQlyb3V0ZWlycQlEbyBJUlEgcm91dGluZyBmb3IgYWxsIFBDSSBkZXZpY2VzLgorCQkJCVRoaXMgaXMgbm9ybWFsbHkgZG9uZSBpbiBwY2lfZW5hYmxlX2RldmljZSgpLAorCQkJCXNvIHRoaXMgb3B0aW9uIGlzIGEgdGVtcG9yYXJ5IHdvcmthcm91bmQKKwkJCQlmb3IgYnJva2VuIGRyaXZlcnMgdGhhdCBkb24ndCBjYWxsIGl0LgorCQlza2lwX2lzYV9hbGlnbglbWDg2XSBkbyBub3QgYWxpZ24gaW8gc3RhcnQgYWRkciwgc28gY2FuCisJCQkJaGFuZGxlIG1vcmUgcGNpIGNhcmRzCisJCWZpcm13YXJlCVtBUk1dIERvIG5vdCByZS1lbnVtZXJhdGUgdGhlIGJ1cyBidXQgaW5zdGVhZAorCQkJCWp1c3QgdXNlIHRoZSBjb25maWd1cmF0aW9uIGZyb20gdGhlCisJCQkJYm9vdGxvYWRlci4gVGhpcyBpcyBjdXJyZW50bHkgdXNlZCBvbgorCQkJCUlYUDIwMDAgc3lzdGVtcyB3aGVyZSB0aGUgYnVzIGhhcyB0byBiZQorCQkJCWNvbmZpZ3VyZWQgYSBjZXJ0YWluIHdheSBmb3IgYWRqdW5jdCBDUFVzLgorCQlub2Vhcmx5CQlbWDg2XSBEb24ndCBkbyBhbnkgZWFybHkgdHlwZSAxIHNjYW5uaW5nLgorCQkJCVRoaXMgbWlnaHQgaGVscCBvbiBzb21lIGJyb2tlbiBib2FyZHMgd2hpY2gKKwkJCQltYWNoaW5lIGNoZWNrIHdoZW4gc29tZSBkZXZpY2VzJyBjb25maWcgc3BhY2UKKwkJCQlpcyByZWFkLiBCdXQgdmFyaW91cyB3b3JrYXJvdW5kcyBhcmUgZGlzYWJsZWQKKwkJCQlhbmQgc29tZSBJT01NVSBkcml2ZXJzIHdpbGwgbm90IHdvcmsuCisJCWJmc29ydAkJU29ydCBQQ0kgZGV2aWNlcyBpbnRvIGJyZWFkdGgtZmlyc3Qgb3JkZXIuCisJCQkJVGhpcyBzb3J0aW5nIGlzIGRvbmUgdG8gZ2V0IGEgZGV2aWNlCisJCQkJb3JkZXIgY29tcGF0aWJsZSB3aXRoIG9sZGVyICg8PSAyLjQpIGtlcm5lbHMuCisJCW5vYmZzb3J0CURvbid0IHNvcnQgUENJIGRldmljZXMgaW50byBicmVhZHRoLWZpcnN0IG9yZGVyLgorCQlwY2llX2J1c190dW5lX29mZglEaXNhYmxlIFBDSWUgTVBTIChNYXggUGF5bG9hZCBTaXplKQorCQkJCXR1bmluZyBhbmQgdXNlIHRoZSBCSU9TLWNvbmZpZ3VyZWQgTVBTIGRlZmF1bHRzLgorCQlwY2llX2J1c19zYWZlCVNldCBldmVyeSBkZXZpY2UncyBNUFMgdG8gdGhlIGxhcmdlc3QgdmFsdWUKKwkJCQlzdXBwb3J0ZWQgYnkgYWxsIGRldmljZXMgYmVsb3cgdGhlIHJvb3QgY29tcGxleC4KKwkJcGNpZV9idXNfcGVyZglTZXQgZGV2aWNlIE1QUyB0byB0aGUgbGFyZ2VzdCBhbGxvd2FibGUgTVBTCisJCQkJYmFzZWQgb24gaXRzIHBhcmVudCBidXMuIEFsc28gc2V0IE1SUlMgKE1heAorCQkJCVJlYWQgUmVxdWVzdCBTaXplKSB0byB0aGUgbGFyZ2VzdCBzdXBwb3J0ZWQKKwkJCQl2YWx1ZSAobm8gbGFyZ2VyIHRoYW4gdGhlIE1QUyB0aGF0IHRoZSBkZXZpY2UKKwkJCQlvciBidXMgY2FuIHN1cHBvcnQpIGZvciBiZXN0IHBlcmZvcm1hbmNlLgorCQlwY2llX2J1c19wZWVyMnBlZXIJU2V0IGV2ZXJ5IGRldmljZSdzIE1QUyB0byAxMjhCLCB3aGljaAorCQkJCWV2ZXJ5IGRldmljZSBpcyBndWFyYW50ZWVkIHRvIHN1cHBvcnQuIFRoaXMKKwkJCQljb25maWd1cmF0aW9uIGFsbG93cyBwZWVyLXRvLXBlZXIgRE1BIGJldHdlZW4KKwkJCQlhbnkgcGFpciBvZiBkZXZpY2VzLCBwb3NzaWJseSBhdCB0aGUgY29zdCBvZgorCQkJCXJlZHVjZWQgcGVyZm9ybWFuY2UuICBUaGlzIGFsc28gZ3VhcmFudGVlcworCQkJCXRoYXQgaG90LWFkZGVkIGRldmljZXMgd2lsbCB3b3JrLgorCQljYmlvc2l6ZT1ubltLTUddCVRoZSBmaXhlZCBhbW91bnQgb2YgYnVzIHNwYWNlIHdoaWNoIGlzCisJCQkJcmVzZXJ2ZWQgZm9yIHRoZSBDYXJkQnVzIGJyaWRnZSdzIElPIHdpbmRvdy4KKwkJCQlUaGUgZGVmYXVsdCB2YWx1ZSBpcyAyNTYgYnl0ZXMuCisJCWNibWVtc2l6ZT1ubltLTUddCVRoZSBmaXhlZCBhbW91bnQgb2YgYnVzIHNwYWNlIHdoaWNoIGlzCisJCQkJcmVzZXJ2ZWQgZm9yIHRoZSBDYXJkQnVzIGJyaWRnZSdzIG1lbW9yeQorCQkJCXdpbmRvdy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgNjQgbWVnYWJ5dGVzLgorCQlyZXNvdXJjZV9hbGlnbm1lbnQ9CisJCQkJRm9ybWF0OgorCQkJCVs8b3JkZXIgb2YgYWxpZ24+QF1bPGRvbWFpbj46XTxidXM+OjxzbG90Pi48ZnVuYz5bOyAuLi5dCisJCQkJU3BlY2lmaWVzIGFsaWdubWVudCBhbmQgZGV2aWNlIHRvIHJlYXNzaWduCisJCQkJYWxpZ25lZCBtZW1vcnkgcmVzb3VyY2VzLgorCQkJCUlmIDxvcmRlciBvZiBhbGlnbj4gaXMgbm90IHNwZWNpZmllZCwKKwkJCQlQQUdFX1NJWkUgaXMgdXNlZCBhcyBhbGlnbm1lbnQuCisJCQkJUENJLVBDSSBicmlkZ2UgY2FuIGJlIHNwZWNpZmllZCwgaWYgcmVzb3VyY2UKKwkJCQl3aW5kb3dzIG5lZWQgdG8gYmUgZXhwYW5kZWQuCisJCWVjcmM9CQlFbmFibGUvZGlzYWJsZSBQQ0llIEVDUkMgKHRyYW5zYWN0aW9uIGxheWVyCisJCQkJZW5kLXRvLWVuZCBDUkMgY2hlY2tpbmcpLgorCQkJCWJpb3M6IFVzZSBCSU9TL2Zpcm13YXJlIHNldHRpbmdzLiBUaGlzIGlzIHRoZQorCQkJCXRoZSBkZWZhdWx0LgorCQkJCW9mZjogVHVybiBFQ1JDIG9mZgorCQkJCW9uOiBUdXJuIEVDUkMgb24uCisJCWhwaW9zaXplPW5uW0tNR10JVGhlIGZpeGVkIGFtb3VudCBvZiBidXMgc3BhY2Ugd2hpY2ggaXMKKwkJCQlyZXNlcnZlZCBmb3IgaG90cGx1ZyBicmlkZ2UncyBJTyB3aW5kb3cuCisJCQkJRGVmYXVsdCBzaXplIGlzIDI1NiBieXRlcy4KKwkJaHBtZW1zaXplPW5uW0tNR10JVGhlIGZpeGVkIGFtb3VudCBvZiBidXMgc3BhY2Ugd2hpY2ggaXMKKwkJCQlyZXNlcnZlZCBmb3IgaG90cGx1ZyBicmlkZ2UncyBtZW1vcnkgd2luZG93LgorCQkJCURlZmF1bHQgc2l6ZSBpcyAyIG1lZ2FieXRlcy4KKwkJcmVhbGxvYz0JRW5hYmxlL2Rpc2FibGUgcmVhbGxvY2F0aW5nIFBDSSBicmlkZ2UgcmVzb3VyY2VzCisJCQkJaWYgYWxsb2NhdGlvbnMgZG9uZSBieSBCSU9TIGFyZSB0b28gc21hbGwgdG8KKwkJCQlhY2NvbW1vZGF0ZSByZXNvdXJjZXMgcmVxdWlyZWQgYnkgYWxsIGNoaWxkCisJCQkJZGV2aWNlcy4KKwkJCQlvZmY6IFR1cm4gcmVhbGxvYyBvZmYKKwkJCQlvbjogVHVybiByZWFsbG9jIG9uCisJCXJlYWxsb2MJCXNhbWUgYXMgcmVhbGxvYz1vbgorCQlub2FyaQkJZG8gbm90IHVzZSBQQ0llIEFSSS4KKwkJcGNpZV9zY2FuX2FsbAlTY2FuIGFsbCBwb3NzaWJsZSBQQ0llIGRldmljZXMuICBPdGhlcndpc2Ugd2UKKwkJCQlvbmx5IGxvb2sgZm9yIG9uZSBkZXZpY2UgYmVsb3cgYSBQQ0llIGRvd25zdHJlYW0KKwkJCQlwb3J0LgorCisJcGNpZV9hc3BtPQlbUENJRV0gRm9yY2libHkgZW5hYmxlIG9yIGRpc2FibGUgUENJZSBBY3RpdmUgU3RhdGUgUG93ZXIKKwkJCU1hbmFnZW1lbnQuCisJCW9mZglEaXNhYmxlIEFTUE0uCisJCWZvcmNlCUVuYWJsZSBBU1BNIGV2ZW4gb24gZGV2aWNlcyB0aGF0IGNsYWltIG5vdCB0byBzdXBwb3J0IGl0LgorCQkJV0FSTklORzogRm9yY2luZyBBU1BNIG9uIG1heSBjYXVzZSBzeXN0ZW0gbG9ja3Vwcy4KKworCXBjaWVfaHA9CVtQQ0lFXSBQQ0kgRXhwcmVzcyBIb3RwbHVnIGRyaXZlciBvcHRpb25zOgorCQlub21zaQlEbyBub3QgdXNlIE1TSSBmb3IgUENJIEV4cHJlc3MgTmF0aXZlIEhvdHBsdWcgKHRoaXMKKwkJCW1ha2VzIGFsbCBQQ0llIHBvcnRzIHVzZSBJTlR4IGZvciBob3RwbHVnIHNlcnZpY2VzKS4KKworCXBjaWVfcG9ydHM9CVtQQ0lFXSBQQ0llIHBvcnRzIGhhbmRsaW5nOgorCQlhdXRvCUFzayB0aGUgQklPUyB3aGV0aGVyIG9yIG5vdCB0byB1c2UgbmF0aXZlIFBDSWUgc2VydmljZXMKKwkJCWFzc29jaWF0ZWQgd2l0aCBQQ0llIHBvcnRzIChQTUUsIGhvdC1wbHVnLCBBRVIpLiAgVXNlCisJCQl0aGVtIG9ubHkgaWYgdGhhdCBpcyBhbGxvd2VkIGJ5IHRoZSBCSU9TLgorCQluYXRpdmUJVXNlIG5hdGl2ZSBQQ0llIHNlcnZpY2VzIGFzc29jaWF0ZWQgd2l0aCBQQ0llIHBvcnRzCisJCQl1bmNvbmRpdGlvbmFsbHkuCisJCWNvbXBhdAlUcmVhdCBQQ0llIHBvcnRzIGFzIFBDSS10by1QQ0kgYnJpZGdlcywgZGlzYWJsZSB0aGUgUENJZQorCQkJcG9ydHMgZHJpdmVyLgorCisJcGNpZV9wbWU9CVtQQ0lFLFBNXSBOYXRpdmUgUENJZSBQTUUgc2lnbmFsaW5nIG9wdGlvbnM6CisJCW5vbXNpCURvIG5vdCB1c2UgTVNJIGZvciBuYXRpdmUgUENJZSBQTUUgc2lnbmFsaW5nICh0aGlzIG1ha2VzCisJCQlhbGwgUENJZSByb290IHBvcnRzIHVzZSBJTlR4IGZvciBhbGwgc2VydmljZXMpLgorCisJcGNtdj0JCVtIVyxQQ01DSUFdIEJhZGdlUEFEIDQKKworCXBkX2lnbm9yZV91bnVzZWQKKwkJCVtQTV0KKwkJCUtlZXAgYWxsIHBvd2VyLWRvbWFpbnMgYWxyZWFkeSBlbmFibGVkIGJ5IGJvb3Rsb2FkZXIgb24sCisJCQlldmVuIGlmIG5vIGRyaXZlciBoYXMgY2xhaW1lZCB0aGVtLiBUaGlzIGlzIHVzZWZ1bAorCQkJZm9yIGRlYnVnIGFuZCBkZXZlbG9wbWVudCwgYnV0IHNob3VsZCBub3QgYmUKKwkJCW5lZWRlZCBvbiBhIHBsYXRmb3JtIHdpdGggcHJvcGVyIGRyaXZlciBzdXBwb3J0LgorCisJcGQuCQlbUEFSSURFXQorCQkJU2VlIERvY3VtZW50YXRpb24vYmxvY2tkZXYvcGFyaWRlLnR4dC4KKworCXBkY2NoYXNzaXM9CVtQQVJJU0MsSFddIERpc2FibGUvRW5hYmxlIFBEQyBDaGFzc2lzIFN0YXR1cyBjb2RlcyBhdAorCQkJYm9vdCB0aW1lLgorCQkJRm9ybWF0OiB7IDAgfCAxIH0KKwkJCVNlZSBhcmNoL3BhcmlzYy9rZXJuZWwvcGRjX2NoYXNzaXMuYworCisJcGVyY3B1X2FsbG9jPQlTZWxlY3Qgd2hpY2ggcGVyY3B1IGZpcnN0IGNodW5rIGFsbG9jYXRvciB0byB1c2UuCisJCQlDdXJyZW50bHkgc3VwcG9ydGVkIHZhbHVlcyBhcmUgImVtYmVkIiBhbmQgInBhZ2UiLgorCQkJQXJjaHMgbWF5IHN1cHBvcnQgc3Vic2V0IG9yIG5vbmUgb2YgdGhlCXNlbGVjdGlvbnMuCisJCQlTZWUgY29tbWVudHMgaW4gbW0vcGVyY3B1LmMgZm9yIGRldGFpbHMgb24gZWFjaAorCQkJYWxsb2NhdG9yLiAgVGhpcyBwYXJhbWV0ZXIgaXMgcHJpbWFyaWx5CWZvciBkZWJ1Z2dpbmcKKwkJCWFuZCBwZXJmb3JtYW5jZSBjb21wYXJpc29uLgorCisJcGYuCQlbUEFSSURFXQorCQkJU2VlIERvY3VtZW50YXRpb24vYmxvY2tkZXYvcGFyaWRlLnR4dC4KKworCXBnLgkJW1BBUklERV0KKwkJCVNlZSBEb2N1bWVudGF0aW9uL2Jsb2NrZGV2L3BhcmlkZS50eHQuCisKKwlwaXJxPQkJW1NNUCxBUElDXSBNYW51YWwgbXAtdGFibGUgc2V0dXAKKwkJCVNlZSBEb2N1bWVudGF0aW9uL3g4Ni9pMzg2L0lPLUFQSUMudHh0LgorCisJcGxpcD0JCVtQUFQsTkVUXSBQYXJhbGxlbCBwb3J0IG5ldHdvcmsgbGluaworCQkJRm9ybWF0OiB7IHBhcnBvcnQ8bnI+IHwgdGltaWQgfCAwIH0KKwkJCVNlZSBhbHNvIERvY3VtZW50YXRpb24vcGFycG9ydC50eHQuCisKKwlwbXRtcj0JCVtYODZdIE1hbnVhbCBzZXR1cCBvZiBwbXRtciBJL08gUG9ydC4KKwkJCU92ZXJyaWRlIHBtdGltZXIgSU9Qb3J0IHdpdGggYSBoZXggdmFsdWUuCisJCQllLmcuIHBtdG1yPTB4NTA4CisKKwlwbnAuZGVidWc9MQlbUE5QXQorCQkJRW5hYmxlIFBOUCBkZWJ1ZyBtZXNzYWdlcyAoZGVwZW5kcyBvbiB0aGUKKwkJCUNPTkZJR19QTlBfREVCVUdfTUVTU0FHRVMgb3B0aW9uKS4gIENoYW5nZSBhdCBydW4tdGltZQorCQkJdmlhIC9zeXMvbW9kdWxlL3BucC9wYXJhbWV0ZXJzL2RlYnVnLiAgV2UgYWx3YXlzIHNob3cKKwkJCWN1cnJlbnQgcmVzb3VyY2UgdXNhZ2U7IHR1cm5pbmcgdGhpcyBvbiBhbHNvIHNob3dzCisJCQlwb3NzaWJsZSBzZXR0aW5ncyBhbmQgc29tZSBhc3NpZ25tZW50IGluZm9ybWF0aW9uLgorCisJcG5wYWNwaT0JW0FDUEldCisJCQl7IG9mZiB9CisKKwlwbnBiaW9zPQlbSVNBUE5QXQorCQkJeyBvbiB8IG9mZiB8IGN1cnIgfCByZXMgfCBuby1jdXJyIHwgbm8tcmVzIH0KKworCXBucF9yZXNlcnZlX2lycT0KKwkJCVtJU0FQTlBdIEV4Y2x1ZGUgSVJRcyBmb3IgdGhlIGF1dG9jb25maWd1cmF0aW9uCisKKwlwbnBfcmVzZXJ2ZV9kbWE9CisJCQlbSVNBUE5QXSBFeGNsdWRlIERNQXMgZm9yIHRoZSBhdXRvY29uZmlndXJhdGlvbgorCisJcG5wX3Jlc2VydmVfaW89CVtJU0FQTlBdIEV4Y2x1ZGUgSS9PIHBvcnRzIGZvciB0aGUgYXV0b2NvbmZpZ3VyYXRpb24KKwkJCVJhbmdlcyBhcmUgaW4gcGFpcnMgKEkvTyBwb3J0IGJhc2UgYW5kIHNpemUpLgorCisJcG5wX3Jlc2VydmVfbWVtPQorCQkJW0lTQVBOUF0gRXhjbHVkZSBtZW1vcnkgcmVnaW9ucyBmb3IgdGhlCisJCQlhdXRvY29uZmlndXJhdGlvbi4KKwkJCVJhbmdlcyBhcmUgaW4gcGFpcnMgKG1lbW9yeSBiYXNlIGFuZCBzaXplKS4KKworCXBvcnRzPQkJW0lQX1ZTX0ZUUF0gSVBWUyBmdHAgaGVscGVyIG1vZHVsZQorCQkJRGVmYXVsdCBpcyAyMS4KKwkJCVVwIHRvIDggKElQX1ZTX0FQUF9NQVhfUE9SVFMpIHBvcnRzCisJCQltYXkgYmUgc3BlY2lmaWVkLgorCQkJRm9ybWF0OiA8cG9ydD4sPHBvcnQ+Li4uLgorCisJcHJpbnQtZmF0YWwtc2lnbmFscz0KKwkJCVtLTkxdIGRlYnVnOiBwcmludCBmYXRhbCBzaWduYWxzCisKKwkJCUlmIGVuYWJsZWQsIHdhcm4gYWJvdXQgdmFyaW91cyBzaWduYWwgaGFuZGxpbmcKKwkJCXJlbGF0ZWQgYXBwbGljYXRpb24gYW5vbWFsaWVzOiB0b28gbWFueSBzaWduYWxzLAorCQkJdG9vIG1hbnkgUE9TSVguMSB0aW1lcnMsIGZhdGFsIHNpZ25hbHMgY2F1c2luZyBhCisJCQljb3JlZHVtcCAtIGV0Yy4KKworCQkJSWYgeW91IGhpdCB0aGUgd2FybmluZyBkdWUgdG8gc2lnbmFsIG92ZXJmbG93LAorCQkJeW91IG1pZ2h0IHdhbnQgdG8gdHJ5ICJ1bGltaXQgLWkgdW5saW1pdGVkIi4KKworCQkJZGVmYXVsdDogb2ZmLgorCisJcHJpbnRrLmFsd2F5c19rbXNnX2R1bXA9CisJCQlUcmlnZ2VyIGttc2dfZHVtcCBmb3IgY2FzZXMgb3RoZXIgdGhhbiBrZXJuZWwgb29wcyBvcgorCQkJcGFuaWNzCisJCQlGb3JtYXQ6IDxib29sPiAgKDEvWS95PWVuYWJsZSwgMC9OL249ZGlzYWJsZSkKKwkJCWRlZmF1bHQ6IGRpc2FibGVkCisKKwlwcmludGsudGltZT0JU2hvdyB0aW1pbmcgZGF0YSBwcmVmaXhlZCB0byBlYWNoIHByaW50ayBtZXNzYWdlIGxpbmUKKwkJCUZvcm1hdDogPGJvb2w+ICAoMS9ZL3k9ZW5hYmxlLCAwL04vbj1kaXNhYmxlKQorCisJcHJvY2Vzc29yLm1heF9jc3RhdGU9CVtIVyxBQ1BJXQorCQkJTGltaXQgcHJvY2Vzc29yIHRvIG1heGltdW0gQy1zdGF0ZQorCQkJbWF4X2NzdGF0ZT05IG92ZXJyaWRlcyBhbnkgRE1JIGJsYWNrbGlzdCBsaW1pdC4KKworCXByb2Nlc3Nvci5ub2NzdAlbSFcsQUNQSV0KKwkJCUlnbm9yZSB0aGUgX0NTVCBtZXRob2QgdG8gZGV0ZXJtaW5lIEMtc3RhdGVzLAorCQkJaW5zdGVhZCB1c2luZyB0aGUgbGVnYWN5IEZBRFQgbWV0aG9kCisKKwlwcm9maWxlPQlbS05MXSBFbmFibGUga2VybmVsIHByb2ZpbGluZyB2aWEgL3Byb2MvcHJvZmlsZQorCQkJRm9ybWF0OiBbc2NoZWR1bGUsXTxudW1iZXI+CisJCQlQYXJhbTogInNjaGVkdWxlIiAtIHByb2ZpbGUgc2NoZWR1bGUgcG9pbnRzLgorCQkJUGFyYW06IDxudW1iZXI+IC0gc3RlcC9idWNrZXQgc2l6ZSBhcyBhIHBvd2VyIG9mIDIgZm9yCisJCQkJc3RhdGlzdGljYWwgdGltZSBiYXNlZCBwcm9maWxpbmcuCisJCQlQYXJhbTogInNsZWVwIiAtIHByb2ZpbGUgRC1zdGF0ZSBzbGVlcGluZyAobWlsbGlzZWNzKS4KKwkJCQlSZXF1aXJlcyBDT05GSUdfU0NIRURTVEFUUworCQkJUGFyYW06ICJrdm0iIC0gcHJvZmlsZSBWTSBleGl0cy4KKworCXByb21wdF9yYW1kaXNrPQlbUkFNXSBMaXN0IG9mIFJBTSBkaXNrcyB0byBwcm9tcHQgZm9yIGZsb3BweSBkaXNrCisJCQliZWZvcmUgbG9hZGluZy4KKwkJCVNlZSBEb2N1bWVudGF0aW9uL2Jsb2NrZGV2L3JhbWRpc2sudHh0LgorCisJcHNtb3VzZS5wcm90bz0JW0hXLE1PVVNFXSBIaWdoZXN0IFBTMiBtb3VzZSBwcm90b2NvbCBleHRlbnNpb24gdG8KKwkJCXByb2JlIGZvcjsgb25lIG9mIChiYXJlfGltcHN8ZXhwc3xsaWZlYm9va3xhbnkpLgorCXBzbW91c2UucmF0ZT0JW0hXLE1PVVNFXSBTZXQgZGVzaXJlZCBtb3VzZSByZXBvcnQgcmF0ZSwgaW4gcmVwb3J0cworCQkJcGVyIHNlY29uZC4KKwlwc21vdXNlLnJlc2V0YWZ0ZXI9CVtIVyxNT1VTRV0KKwkJCVRyeSB0byByZXNldCB0aGUgZGV2aWNlIGFmdGVyIHNvIG1hbnkgYmFkIHBhY2tldHMKKwkJCSgwID0gbmV2ZXIpLgorCXBzbW91c2UucmVzb2x1dGlvbj0KKwkJCVtIVyxNT1VTRV0gU2V0IGRlc2lyZWQgbW91c2UgcmVzb2x1dGlvbiwgaW4gZHBpLgorCXBzbW91c2Uuc21hcnRzY3JvbGw9CisJCQlbSFcsTU9VU0VdIENvbnRyb2xzIExvZ2l0ZWNoIHNtYXJ0c2Nyb2xsIGF1dG9yZXBlYXQuCisJCQkwID0gZGlzYWJsZWQsIDEgPSBlbmFibGVkIChkZWZhdWx0KS4KKworCXBzdG9yZS5iYWNrZW5kPQlTcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSBwc3RvcmUgYmFja2VuZCB0byB1c2UKKworCXB0LgkJW1BBUklERV0KKwkJCVNlZSBEb2N1bWVudGF0aW9uL2Jsb2NrZGV2L3BhcmlkZS50eHQuCisKKwlwdHkubGVnYWN5X2NvdW50PQorCQkJW0tOTF0gTnVtYmVyIG9mIGxlZ2FjeSBwdHkncy4gT3ZlcndyaXRlcyBjb21waWxlZC1pbgorCQkJZGVmYXVsdCBudW1iZXIuCisKKwlxdWlldAkJW0tOTF0gRGlzYWJsZSBtb3N0IGxvZyBtZXNzYWdlcworCisJcjEyOD0JCVtIVyxEUk1dCisKKwlyYWlkPQkJW0hXLFJBSURdCisJCQlTZWUgRG9jdW1lbnRhdGlvbi9tZC50eHQuCisKKwlyYW1kaXNrX2Jsb2Nrc2l6ZT0JW1JBTV0KKwkJCVNlZSBEb2N1bWVudGF0aW9uL2Jsb2NrZGV2L3JhbWRpc2sudHh0LgorCisJcmFtZGlza19zaXplPQlbUkFNXSBTaXplcyBvZiBSQU0gZGlza3MgaW4ga2lsb2J5dGVzCisJCQlTZWUgRG9jdW1lbnRhdGlvbi9ibG9ja2Rldi9yYW1kaXNrLnR4dC4KKworCXJjdV9ub2Nicz0JW0tOTF0KKwkJCUluIGtlcm5lbHMgYnVpbHQgd2l0aCBDT05GSUdfUkNVX05PQ0JfQ1BVPXksIHNldAorCQkJdGhlIHNwZWNpZmllZCBsaXN0IG9mIENQVXMgdG8gYmUgbm8tY2FsbGJhY2sgQ1BVcy4KKwkJCUludm9jYXRpb24gb2YgdGhlc2UgQ1BVcycgUkNVIGNhbGxiYWNrcyB3aWxsCisJCQliZSBvZmZsb2FkZWQgdG8gInJjdW94L04iIGt0aHJlYWRzIGNyZWF0ZWQgZm9yCisJCQl0aGF0IHB1cnBvc2UsIHdoZXJlICJ4IiBpcyAiYiIgZm9yIFJDVS1iaCwgInAiCisJCQlmb3IgUkNVLXByZWVtcHQsIGFuZCAicyIgZm9yIFJDVS1zY2hlZCwgYW5kICJOIgorCQkJaXMgdGhlIENQVSBudW1iZXIuICBUaGlzIHJlZHVjZXMgT1Mgaml0dGVyIG9uIHRoZQorCQkJb2ZmbG9hZGVkIENQVXMsIHdoaWNoIGNhbiBiZSB1c2VmdWwgZm9yIEhQQyBhbmQKKwkJCXJlYWwtdGltZSB3b3JrbG9hZHMuICBJdCBjYW4gYWxzbyBpbXByb3ZlIGVuZXJneQorCQkJZWZmaWNpZW5jeSBmb3IgYXN5bW1ldHJpYyBtdWx0aXByb2Nlc3NvcnMuCisKKwlyY3Vfbm9jYl9wb2xsCVtLTkxdCisJCQlSYXRoZXIgdGhhbiByZXF1aXJpbmcgdGhhdCBvZmZsb2FkZWQgQ1BVcworCQkJKHNwZWNpZmllZCBieSByY3Vfbm9jYnM9IGFib3ZlKSBleHBsaWNpdGx5CisJCQlhd2FrZW4gdGhlIGNvcnJlc3BvbmRpbmcgInJjdW9OIiBrdGhyZWFkcywKKwkJCW1ha2UgdGhlc2Uga3RocmVhZHMgcG9sbCBmb3IgY2FsbGJhY2tzLgorCQkJVGhpcyBpbXByb3ZlcyB0aGUgcmVhbC10aW1lIHJlc3BvbnNlIGZvciB0aGUKKwkJCW9mZmxvYWRlZCBDUFVzIGJ5IHJlbGlldmluZyB0aGVtIG9mIHRoZSBuZWVkIHRvCisJCQl3YWtlIHVwIHRoZSBjb3JyZXNwb25kaW5nIGt0aHJlYWQsIGJ1dCBkZWdyYWRlcworCQkJZW5lcmd5IGVmZmljaWVuY3kgYnkgcmVxdWlyaW5nIHRoYXQgdGhlIGt0aHJlYWRzCisJCQlwZXJpb2RpY2FsbHkgd2FrZSB1cCB0byBkbyB0aGUgcG9sbGluZy4KKworCXJjdXRyZWUuYmxpbWl0PQlbS05MXQorCQkJU2V0IG1heGltdW0gbnVtYmVyIG9mIGZpbmlzaGVkIFJDVSBjYWxsYmFja3MgdG8KKwkJCXByb2Nlc3MgaW4gb25lIGJhdGNoLgorCisJcmN1dHJlZS5kdW1wX3RyZWU9CVtLTkxdCisJCQlEdW1wIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHJjdV9ub2RlIGNvbWJpbmluZyB0cmVlCisJCQlvdXQgYXQgZWFybHkgYm9vdC4gIFRoaXMgaXMgdXNlZCBmb3IgZGlhZ25vc3RpYworCQkJcHVycG9zZXMsIHRvIHZlcmlmeSBjb3JyZWN0IHRyZWUgc2V0dXAuCisKKwlyY3V0cmVlLmdwX2NsZWFudXBfZGVsYXk9CVtLTkxdCisJCQlTZXQgdGhlIG51bWJlciBvZiBqaWZmaWVzIHRvIGRlbGF5IGVhY2ggc3RlcCBvZgorCQkJUkNVIGdyYWNlLXBlcmlvZCBjbGVhbnVwLiAgVGhpcyBvbmx5IGhhcyBlZmZlY3QKKwkJCXdoZW4gQ09ORklHX1JDVV9UT1JUVVJFX1RFU1RfU0xPV19DTEVBTlVQIGlzIHNldC4KKworCXJjdXRyZWUuZ3BfaW5pdF9kZWxheT0JW0tOTF0KKwkJCVNldCB0aGUgbnVtYmVyIG9mIGppZmZpZXMgdG8gZGVsYXkgZWFjaCBzdGVwIG9mCisJCQlSQ1UgZ3JhY2UtcGVyaW9kIGluaXRpYWxpemF0aW9uLiAgVGhpcyBvbmx5IGhhcworCQkJZWZmZWN0IHdoZW4gQ09ORklHX1JDVV9UT1JUVVJFX1RFU1RfU0xPV19JTklUCisJCQlpcyBzZXQuCisKKwlyY3V0cmVlLmdwX3ByZWluaXRfZGVsYXk9CVtLTkxdCisJCQlTZXQgdGhlIG51bWJlciBvZiBqaWZmaWVzIHRvIGRlbGF5IGVhY2ggc3RlcCBvZgorCQkJUkNVIGdyYWNlLXBlcmlvZCBwcmUtaW5pdGlhbGl6YXRpb24sIHRoYXQgaXMsCisJCQl0aGUgcHJvcGFnYXRpb24gb2YgcmVjZW50IENQVS1ob3RwbHVnIGNoYW5nZXMgdXAKKwkJCXRoZSByY3Vfbm9kZSBjb21iaW5pbmcgdHJlZS4gIFRoaXMgb25seSBoYXMgZWZmZWN0CisJCQl3aGVuIENPTkZJR19SQ1VfVE9SVFVSRV9URVNUX1NMT1dfUFJFSU5JVCBpcyBzZXQuCisKKwlyY3V0cmVlLnJjdV9mYW5vdXRfZXhhY3Q9IFtLTkxdCisJCQlEaXNhYmxlIGF1dG9iYWxhbmNpbmcgb2YgdGhlIHJjdV9ub2RlIGNvbWJpbmluZworCQkJdHJlZS4gIFRoaXMgaXMgdXNlZCBieSByY3V0b3J0dXJlLCBhbmQgbWlnaHQKKwkJCXBvc3NpYmx5IGJlIHVzZWZ1bCBmb3IgYXJjaGl0ZWN0dXJlcyBoYXZpbmcgaGlnaAorCQkJY2FjaGUtdG8tY2FjaGUgdHJhbnNmZXIgbGF0ZW5jaWVzLgorCisJcmN1dHJlZS5yY3VfZmFub3V0X2xlYWY9IFtLTkxdCisJCQlDaGFuZ2UgdGhlIG51bWJlciBvZiBDUFVzIGFzc2lnbmVkIHRvIGVhY2gKKwkJCWxlYWYgcmN1X25vZGUgc3RydWN0dXJlLiAgVXNlZnVsIGZvciB2ZXJ5CisJCQlsYXJnZSBzeXN0ZW1zLCB3aGljaCB3aWxsIGNob29zZSB0aGUgdmFsdWUgNjQsCisJCQlhbmQgZm9yIE5VTUEgc3lzdGVtcyB3aXRoIGxhcmdlIHJlbW90ZS1hY2Nlc3MKKwkJCWxhdGVuY2llcywgd2hpY2ggd2lsbCBjaG9vc2UgYSB2YWx1ZSBhbGlnbmVkCisJCQl3aXRoIHRoZSBhcHByb3ByaWF0ZSBoYXJkd2FyZSBib3VuZGFyaWVzLgorCisJcmN1dHJlZS5qaWZmaWVzX3RpbGxfc2NoZWRfcXM9IFtLTkxdCisJCQlTZXQgcmVxdWlyZWQgYWdlIGluIGppZmZpZXMgZm9yIGEKKwkJCWdpdmVuIGdyYWNlIHBlcmlvZCBiZWZvcmUgUkNVIHN0YXJ0cworCQkJc29saWNpdGluZyBxdWllc2NlbnQtc3RhdGUgaGVscCBmcm9tCisJCQlyY3Vfbm90ZV9jb250ZXh0X3N3aXRjaCgpLgorCisJcmN1dHJlZS5qaWZmaWVzX3RpbGxfZmlyc3RfZnFzPSBbS05MXQorCQkJU2V0IGRlbGF5IGZyb20gZ3JhY2UtcGVyaW9kIGluaXRpYWxpemF0aW9uIHRvCisJCQlmaXJzdCBhdHRlbXB0IHRvIGZvcmNlIHF1aWVzY2VudCBzdGF0ZXMuCisJCQlVbml0cyBhcmUgamlmZmllcywgbWluaW11bSB2YWx1ZSBpcyB6ZXJvLAorCQkJYW5kIG1heGltdW0gdmFsdWUgaXMgSFouCisKKwlyY3V0cmVlLmppZmZpZXNfdGlsbF9uZXh0X2Zxcz0gW0tOTF0KKwkJCVNldCBkZWxheSBiZXR3ZWVuIHN1YnNlcXVlbnQgYXR0ZW1wdHMgdG8gZm9yY2UKKwkJCXF1aWVzY2VudCBzdGF0ZXMuICBVbml0cyBhcmUgamlmZmllcywgbWluaW11bQorCQkJdmFsdWUgaXMgb25lLCBhbmQgbWF4aW11bSB2YWx1ZSBpcyBIWi4KKworCXJjdXRyZWUua3RocmVhZF9wcmlvPSAJIFtLTkwsQk9PVF0KKwkJCVNldCB0aGUgU0NIRURfRklGTyBwcmlvcml0eSBvZiB0aGUgUkNVIHBlci1DUFUKKwkJCWt0aHJlYWRzIChyY3VjL04pLiBUaGlzIHZhbHVlIGlzIGFsc28gdXNlZCBmb3IKKwkJCXRoZSBwcmlvcml0eSBvZiB0aGUgUkNVIGJvb3N0IHRocmVhZHMgKHJjdWIvTikKKwkJCWFuZCBmb3IgdGhlIFJDVSBncmFjZS1wZXJpb2Qga3RocmVhZHMgKHJjdV9iaCwKKwkJCXJjdV9wcmVlbXB0LCBhbmQgcmN1X3NjaGVkKS4gSWYgUkNVX0JPT1NUIGlzCisJCQlzZXQsIHZhbGlkIHZhbHVlcyBhcmUgMS05OSBhbmQgdGhlIGRlZmF1bHQgaXMgMQorCQkJKHRoZSBsZWFzdC1mYXZvcmVkIHByaW9yaXR5KS4gIE90aGVyd2lzZSwgd2hlbgorCQkJUkNVX0JPT1NUIGlzIG5vdCBzZXQsIHZhbGlkIHZhbHVlcyBhcmUgMC05OSBhbmQKKwkJCXRoZSBkZWZhdWx0IGlzIHplcm8gKG5vbi1yZWFsdGltZSBvcGVyYXRpb24pLgorCisJcmN1dHJlZS5yY3Vfbm9jYl9sZWFkZXJfc3RyaWRlPSBbS05MXQorCQkJU2V0IHRoZSBudW1iZXIgb2YgTk9DQiBrdGhyZWFkIGdyb3Vwcywgd2hpY2gKKwkJCWRlZmF1bHRzIHRvIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgbnVtYmVyIG9mCisJCQlDUFVzLiAgTGFyZ2VyIG51bWJlcnMgcmVkdWNlcyB0aGUgd2FrZXVwIG92ZXJoZWFkCisJCQlvbiB0aGUgcGVyLUNQVSBncmFjZS1wZXJpb2Qga3RocmVhZHMsIGJ1dCBpbmNyZWFzZXMKKwkJCXRoYXQgc2FtZSBvdmVyaGVhZCBvbiBlYWNoIGdyb3VwJ3MgbGVhZGVyLgorCisJcmN1dHJlZS5xaGltYXJrPSBbS05MXQorCQkJU2V0IHRocmVzaG9sZCBvZiBxdWV1ZWQgUkNVIGNhbGxiYWNrcyBiZXlvbmQgd2hpY2gKKwkJCWJhdGNoIGxpbWl0aW5nIGlzIGRpc2FibGVkLgorCisJcmN1dHJlZS5xbG93bWFyaz0gW0tOTF0KKwkJCVNldCB0aHJlc2hvbGQgb2YgcXVldWVkIFJDVSBjYWxsYmFja3MgYmVsb3cgd2hpY2gKKwkJCWJhdGNoIGxpbWl0aW5nIGlzIHJlLWVuYWJsZWQuCisKKwlyY3V0cmVlLnJjdV9pZGxlX2dwX2RlbGF5PSBbS05MXQorCQkJU2V0IHdha2V1cCBpbnRlcnZhbCBmb3IgaWRsZSBDUFVzIHRoYXQgaGF2ZQorCQkJUkNVIGNhbGxiYWNrcyAoUkNVX0ZBU1RfTk9fSFo9eSkuCisKKwlyY3V0cmVlLnJjdV9pZGxlX2xhenlfZ3BfZGVsYXk9IFtLTkxdCisJCQlTZXQgd2FrZXVwIGludGVydmFsIGZvciBpZGxlIENQVXMgdGhhdCBoYXZlCisJCQlvbmx5ICJsYXp5IiBSQ1UgY2FsbGJhY2tzIChSQ1VfRkFTVF9OT19IWj15KS4KKwkJCUxhenkgUkNVIGNhbGxiYWNrcyBhcmUgdGhvc2Ugd2hpY2ggUkNVIGNhbgorCQkJcHJvdmUgZG8gbm90aGluZyBtb3JlIHRoYW4gZnJlZSBtZW1vcnkuCisKKwlyY3V0b3J0dXJlLmNiZmxvb2RfaW50ZXJfaG9sZG9mZj0gW0tOTF0KKwkJCVNldCBob2xkb2ZmIHRpbWUgKGppZmZpZXMpIGJldHdlZW4gc3VjY2Vzc2l2ZQorCQkJY2FsbGJhY2stZmxvb2QgdGVzdHMuCisKKwlyY3V0b3J0dXJlLmNiZmxvb2RfaW50cmFfaG9sZG9mZj0gW0tOTF0KKwkJCVNldCBob2xkb2ZmIHRpbWUgKGppZmZpZXMpIGJldHdlZW4gc3VjY2Vzc2l2ZQorCQkJYnVyc3RzIG9mIGNhbGxiYWNrcyB3aXRoaW4gYSBnaXZlbiBjYWxsYmFjay1mbG9vZAorCQkJdGVzdC4KKworCXJjdXRvcnR1cmUuY2JmbG9vZF9uX2J1cnN0PSBbS05MXQorCQkJU2V0IHRoZSBudW1iZXIgb2YgYnVyc3RzIG1ha2luZyB1cCBhIGdpdmVuCisJCQljYWxsYmFjay1mbG9vZCB0ZXN0LiAgU2V0IHRoaXMgdG8gemVybyB0bworCQkJZGlzYWJsZSBjYWxsYmFjay1mbG9vZCB0ZXN0aW5nLgorCisJcmN1dG9ydHVyZS5jYmZsb29kX25fcGVyX2J1cnN0PSBbS05MXQorCQkJU2V0IHRoZSBudW1iZXIgb2YgY2FsbGJhY2tzIHRvIGJlIHJlZ2lzdGVyZWQKKwkJCWluIGEgZ2l2ZW4gYnVyc3Qgb2YgYSBjYWxsYmFjay1mbG9vZCB0ZXN0LgorCisJcmN1dG9ydHVyZS5mcXNfZHVyYXRpb249IFtLTkxdCisJCQlTZXQgZHVyYXRpb24gb2YgZm9yY2VfcXVpZXNjZW50X3N0YXRlIGJ1cnN0cworCQkJaW4gbWljcm9zZWNvbmRzLgorCisJcmN1dG9ydHVyZS5mcXNfaG9sZG9mZj0gW0tOTF0KKwkJCVNldCBob2xkb2ZmIHRpbWUgd2l0aGluIGZvcmNlX3F1aWVzY2VudF9zdGF0ZSBidXJzdHMKKwkJCWluIG1pY3Jvc2Vjb25kcy4KKworCXJjdXRvcnR1cmUuZnFzX3N0dXR0ZXI9IFtLTkxdCisJCQlTZXQgd2FpdCB0aW1lIGJldHdlZW4gZm9yY2VfcXVpZXNjZW50X3N0YXRlIGJ1cnN0cworCQkJaW4gc2Vjb25kcy4KKworCXJjdXRvcnR1cmUuZ3BfY29uZD0gW0tOTF0KKwkJCVVzZSBjb25kaXRpb25hbC9hc3luY2hyb25vdXMgdXBkYXRlLXNpZGUKKwkJCXByaW1pdGl2ZXMsIGlmIGF2YWlsYWJsZS4KKworCXJjdXRvcnR1cmUuZ3BfZXhwPSBbS05MXQorCQkJVXNlIGV4cGVkaXRlZCB1cGRhdGUtc2lkZSBwcmltaXRpdmVzLCBpZiBhdmFpbGFibGUuCisKKwlyY3V0b3J0dXJlLmdwX25vcm1hbD0gW0tOTF0KKwkJCVVzZSBub3JtYWwgKG5vbi1leHBlZGl0ZWQpIGFzeW5jaHJvbm91cworCQkJdXBkYXRlLXNpZGUgcHJpbWl0aXZlcywgaWYgYXZhaWxhYmxlLgorCisJcmN1dG9ydHVyZS5ncF9zeW5jPSBbS05MXQorCQkJVXNlIG5vcm1hbCAobm9uLWV4cGVkaXRlZCkgc3luY2hyb25vdXMKKwkJCXVwZGF0ZS1zaWRlIHByaW1pdGl2ZXMsIGlmIGF2YWlsYWJsZS4gIElmIGFsbAorCQkJb2YgcmN1dG9ydHVyZS5ncF9jb25kPSwgcmN1dG9ydHVyZS5ncF9leHA9LAorCQkJcmN1dG9ydHVyZS5ncF9ub3JtYWw9LCBhbmQgcmN1dG9ydHVyZS5ncF9zeW5jPQorCQkJYXJlIHplcm8sIHJjdXRvcnR1cmUgYWN0cyBhcyBpZiBpcyBpbnRlcnByZXRlZAorCQkJdGhleSBhcmUgYWxsIG5vbi16ZXJvLgorCisJcmN1dG9ydHVyZS5uX2JhcnJpZXJfY2JzPSBbS05MXQorCQkJU2V0IGNhbGxiYWNrcy90aHJlYWRzIGZvciByY3VfYmFycmllcigpIHRlc3RpbmcuCisKKwlyY3V0b3J0dXJlLm5mYWtld3JpdGVycz0gW0tOTF0KKwkJCVNldCBudW1iZXIgb2YgY29uY3VycmVudCBSQ1Ugd3JpdGVycy4gIFRoZXNlIGp1c3QKKwkJCXN0cmVzcyBSQ1UsIHRoZXkgZG9uJ3QgcGFydGljaXBhdGUgaW4gdGhlIGFjdHVhbAorCQkJdGVzdCwgaGVuY2UgdGhlICJmYWtlIi4KKworCXJjdXRvcnR1cmUubnJlYWRlcnM9IFtLTkxdCisJCQlTZXQgbnVtYmVyIG9mIFJDVSByZWFkZXJzLiAgVGhlIHZhbHVlIC0xIHNlbGVjdHMKKwkJCU4tMSwgd2hlcmUgTiBpcyB0aGUgbnVtYmVyIG9mIENQVXMuICBBIHZhbHVlCisJCQkibiIgbGVzcyB0aGFuIC0xIHNlbGVjdHMgTi1uLTIsIHdoZXJlIE4gaXMgYWdhaW4KKwkJCXRoZSBudW1iZXIgb2YgQ1BVcy4gIEZvciBleGFtcGxlLCAtMiBzZWxlY3RzIE4KKwkJCSh0aGUgbnVtYmVyIG9mIENQVXMpLCAtMyBzZWxlY3RzIE4rMSwgYW5kIHNvIG9uLgorCisJcmN1dG9ydHVyZS5vYmplY3RfZGVidWc9IFtLTkxdCisJCQlFbmFibGUgZGVidWctb2JqZWN0IGRvdWJsZS1jYWxsX3JjdSgpIHRlc3RpbmcuCisKKwlyY3V0b3J0dXJlLm9ub2ZmX2hvbGRvZmY9IFtLTkxdCisJCQlTZXQgdGltZSAocykgYWZ0ZXIgYm9vdCBmb3IgQ1BVLWhvdHBsdWcgdGVzdGluZy4KKworCXJjdXRvcnR1cmUub25vZmZfaW50ZXJ2YWw9IFtLTkxdCisJCQlTZXQgdGltZSAocykgYmV0d2VlbiBDUFUtaG90cGx1ZyBvcGVyYXRpb25zLCBvcgorCQkJemVybyB0byBkaXNhYmxlIENQVS1ob3RwbHVnIHRlc3RpbmcuCisKKwlyY3V0b3J0dXJlLnNodWZmbGVfaW50ZXJ2YWw9IFtLTkxdCisJCQlTZXQgdGFzay1zaHVmZmxlIGludGVydmFsIChzKS4gIFNodWZmbGluZyB0YXNrcworCQkJYWxsb3dzIHNvbWUgQ1BVcyB0byBnbyBpbnRvIGR5bnRpY2staWRsZSBtb2RlCisJCQlkdXJpbmcgdGhlIHJjdXRvcnR1cmUgdGVzdC4KKworCXJjdXRvcnR1cmUuc2h1dGRvd25fc2Vjcz0gW0tOTF0KKwkJCVNldCB0aW1lIChzKSBhZnRlciBib290IHN5c3RlbSBzaHV0ZG93bi4gIFRoaXMKKwkJCWlzIHVzZWZ1bCBmb3IgaGFuZHMtb2ZmIGF1dG9tYXRlZCB0ZXN0aW5nLgorCisJcmN1dG9ydHVyZS5zdGFsbF9jcHU9IFtLTkxdCisJCQlEdXJhdGlvbiBvZiBDUFUgc3RhbGwgKHMpIHRvIHRlc3QgUkNVIENQVSBzdGFsbAorCQkJd2FybmluZ3MsIHplcm8gdG8gZGlzYWJsZS4KKworCXJjdXRvcnR1cmUuc3RhbGxfY3B1X2hvbGRvZmY9IFtLTkxdCisJCQlUaW1lIHRvIHdhaXQgKHMpIGFmdGVyIGJvb3QgYmVmb3JlIGluZHVjaW5nIHN0YWxsLgorCisJcmN1dG9ydHVyZS5zdGF0X2ludGVydmFsPSBbS05MXQorCQkJVGltZSAocykgYmV0d2VlbiBzdGF0aXN0aWNzIHByaW50aygpcy4KKworCXJjdXRvcnR1cmUuc3R1dHRlcj0gW0tOTF0KKwkJCVRpbWUgKHMpIHRvIHN0dXR0ZXIgdGVzdGluZywgZm9yIGV4YW1wbGUsIHNwZWNpZnlpbmcKKwkJCWZpdmUgc2Vjb25kcyBjYXVzZXMgdGhlIHRlc3QgdG8gcnVuIGZvciBmaXZlIHNlY29uZHMsCisJCQl3YWl0IGZvciBmaXZlIHNlY29uZHMsIGFuZCBzbyBvbi4gIFRoaXMgdGVzdHMgUkNVJ3MKKwkJCWFiaWxpdHkgdG8gdHJhbnNpdGlvbiBhYnJ1cHRseSB0byBhbmQgZnJvbSBpZGxlLgorCisJcmN1dG9ydHVyZS50ZXN0X2Jvb3N0PSBbS05MXQorCQkJVGVzdCBSQ1UgcHJpb3JpdHkgYm9vc3Rpbmc/ICAwPW5vLCAxPW1heWJlLCAyPXllcy4KKwkJCSJNYXliZSIgbWVhbnMgdGVzdCBpZiB0aGUgUkNVIGltcGxlbWVudGF0aW9uCisJCQl1bmRlciB0ZXN0IHN1cHBvcnQgUkNVIHByaW9yaXR5IGJvb3N0aW5nLgorCisJcmN1dG9ydHVyZS50ZXN0X2Jvb3N0X2R1cmF0aW9uPSBbS05MXQorCQkJRHVyYXRpb24gKHMpIG9mIGVhY2ggaW5kaXZpZHVhbCBib29zdCB0ZXN0LgorCisJcmN1dG9ydHVyZS50ZXN0X2Jvb3N0X2ludGVydmFsPSBbS05MXQorCQkJSW50ZXJ2YWwgKHMpIGJldHdlZW4gZWFjaCBib29zdCB0ZXN0LgorCisJcmN1dG9ydHVyZS50ZXN0X25vX2lkbGVfaHo9IFtLTkxdCisJCQlUZXN0IFJDVSdzIGR5bnRpY2staWRsZSBoYW5kbGluZy4gIFNlZSBhbHNvIHRoZQorCQkJcmN1dG9ydHVyZS5zaHVmZmxlX2ludGVydmFsIHBhcmFtZXRlci4KKworCXJjdXRvcnR1cmUudG9ydHVyZV9ydW5uYWJsZT0gW0JPT1RdCisJCQlTdGFydCByY3V0b3J0dXJlIHJ1bm5pbmcgYXQgYm9vdCB0aW1lLgorCisJcmN1dG9ydHVyZS50b3J0dXJlX3R5cGU9IFtLTkxdCisJCQlTcGVjaWZ5IHRoZSBSQ1UgaW1wbGVtZW50YXRpb24gdG8gdGVzdC4KKworCXJjdXRvcnR1cmUudmVyYm9zZT0gW0tOTF0KKwkJCUVuYWJsZSBhZGRpdGlvbmFsIHByaW50aygpIHN0YXRlbWVudHMuCisKKwlyY3VwZGF0ZS5yY3VfZXhwZWRpdGVkPSBbS05MXQorCQkJVXNlIGV4cGVkaXRlZCBncmFjZS1wZXJpb2QgcHJpbWl0aXZlcywgZm9yCisJCQlleGFtcGxlLCBzeW5jaHJvbml6ZV9yY3VfZXhwZWRpdGVkKCkgaW5zdGVhZAorCQkJb2Ygc3luY2hyb25pemVfcmN1KCkuICBUaGlzIHJlZHVjZXMgbGF0ZW5jeSwKKwkJCWJ1dCBjYW4gaW5jcmVhc2UgQ1BVIHV0aWxpemF0aW9uLCBkZWdyYWRlCisJCQlyZWFsLXRpbWUgbGF0ZW5jeSwgYW5kIGRlZ3JhZGUgZW5lcmd5IGVmZmljaWVuY3kuCisKKwlyY3VwZGF0ZS5yY3VfY3B1X3N0YWxsX3N1cHByZXNzPSBbS05MXQorCQkJU3VwcHJlc3MgUkNVIENQVSBzdGFsbCB3YXJuaW5nIG1lc3NhZ2VzLgorCisJcmN1cGRhdGUucmN1X2NwdV9zdGFsbF90aW1lb3V0PSBbS05MXQorCQkJU2V0IHRpbWVvdXQgZm9yIFJDVSBDUFUgc3RhbGwgd2FybmluZyBtZXNzYWdlcy4KKworCXJjdXBkYXRlLnJjdV90YXNrX3N0YWxsX3RpbWVvdXQ9IFtLTkxdCisJCQlTZXQgdGltZW91dCBpbiBqaWZmaWVzIGZvciBSQ1UgdGFzayBzdGFsbCB3YXJuaW5nCisJCQltZXNzYWdlcy4gIERpc2FibGUgd2l0aCBhIHZhbHVlIGxlc3MgdGhhbiBvciBlcXVhbAorCQkJdG8gemVyby4KKworCXJjdXBkYXRlLnJjdV9zZWxmX3Rlc3Q9IFtLTkxdCisJCQlSdW4gdGhlIFJDVSBlYXJseSBib290IHNlbGYgdGVzdHMKKworCXJjdXBkYXRlLnJjdV9zZWxmX3Rlc3RfYmg9IFtLTkxdCisJCQlSdW4gdGhlIFJDVSBiaCBlYXJseSBib290IHNlbGYgdGVzdHMKKworCXJjdXBkYXRlLnJjdV9zZWxmX3Rlc3Rfc2NoZWQ9IFtLTkxdCisJCQlSdW4gdGhlIFJDVSBzY2hlZCBlYXJseSBib290IHNlbGYgdGVzdHMKKworCXJkaW5pdD0JCVtLTkxdCisJCQlGb3JtYXQ6IDxmdWxsX3BhdGg+CisJCQlSdW4gc3BlY2lmaWVkIGJpbmFyeSBpbnN0ZWFkIG9mIC9pbml0IGZyb20gdGhlIHJhbWRpc2ssCisJCQl1c2VkIGZvciBlYXJseSB1c2Vyc3BhY2Ugc3RhcnR1cC4gU2VlIGluaXRyZC4KKworCXJlYm9vdD0JCVtLTkxdCisJCQlGb3JtYXQgKHg4NiBvciB4ODZfNjQpOgorCQkJCVt3W2FybV0gfCBjW29sZF0gfCBoW2FyZF0gfCBzW29mdF0gfCBnW3Bpb11dIFwKKwkJCQlbWyxdc1ttcF0jIyMjIFwKKwkJCQlbWyxdYltpb3NdIHwgYVtjcGldIHwga1tiZF0gfCB0W3JpcGxlXSB8IGVbZmldIHwgcFtjaV1dIFwKKwkJCQlbWyxdZltvcmNlXQorCQkJV2hlcmUgcmVib290X21vZGUgaXMgb25lIG9mIHdhcm0gKHNvZnQpIG9yIGNvbGQgKGhhcmQpIG9yIGdwaW8sCisJCQkgICAgICByZWJvb3RfdHlwZSBpcyBvbmUgb2YgYmlvcywgYWNwaSwga2JkLCB0cmlwbGUsIGVmaSwgb3IgcGNpLAorCQkJICAgICAgcmVib290X2ZvcmNlIGlzIGVpdGhlciBmb3JjZSBvciBub3Qgc3BlY2lmaWVkLAorCQkJICAgICAgcmVib290X2NwdSBpcyBzW21wXSMjIyMgd2l0aCAjIyMjIGJlaW5nIHRoZSBwcm9jZXNzb3IKKwkJCQkJdG8gYmUgdXNlZCBmb3IgcmVib290aW5nLgorCisJcmVsYXhfZG9tYWluX2xldmVsPQorCQkJW0tOTCwgU01QXSBTZXQgc2NoZWR1bGVyJ3MgZGVmYXVsdCByZWxheF9kb21haW5fbGV2ZWwuCisJCQlTZWUgRG9jdW1lbnRhdGlvbi9jZ3JvdXBzL2NwdXNldHMudHh0LgorCisJcmVsYXRpdmVfc2xlZXBfc3RhdGVzPQorCQkJW1NVU1BFTkRdIFVzZSBzbGVlcCBzdGF0ZSBsYWJlbGluZyB3aGVyZSB0aGUgZGVlcGVzdAorCQkJc3RhdGUgYXZhaWxhYmxlIG90aGVyIHRoYW4gaGliZXJuYXRpb24gaXMgYWx3YXlzICJtZW0iLgorCQkJRm9ybWF0OiB7ICIwIiB8ICIxIiB9CisJCQkwIC0tIFRyYWRpdGlvbmFsIHNsZWVwIHN0YXRlIGxhYmVscy4KKwkJCTEgLS0gUmVsYXRpdmUgc2xlZXAgc3RhdGUgbGFiZWxzLgorCisJcmVzZXJ2ZT0JW0tOTCxCVUdTXSBGb3JjZSB0aGUga2VybmVsIHRvIGlnbm9yZSBzb21lIGlvbWVtIGFyZWEKKworCXJlc2VydmV0b3A9CVtYODYtMzJdCisJCQlGb3JtYXQ6IG5uW0tNR10KKwkJCVJlc2VydmVzIGEgaG9sZSBhdCB0aGUgdG9wIG9mIHRoZSBrZXJuZWwgdmlydHVhbAorCQkJYWRkcmVzcyBzcGFjZS4KKworCXJlc2VydmVsb3c9CVtYODZdCisJCQlGb3JtYXQ6IG5uW0tdCisJCQlTZXQgdGhlIGFtb3VudCBvZiBtZW1vcnkgdG8gcmVzZXJ2ZSBmb3IgQklPUyBhdAorCQkJdGhlIGJvdHRvbSBvZiB0aGUgYWRkcmVzcyBzcGFjZS4KKworCXJlc2V0X2RldmljZXMJW0tOTF0gRm9yY2UgZHJpdmVycyB0byByZXNldCB0aGUgdW5kZXJseWluZyBkZXZpY2UKKwkJCWR1cmluZyBpbml0aWFsaXphdGlvbi4KKworCXJlc3VtZT0JCVtTV1NVU1BdCisJCQlTcGVjaWZ5IHRoZSBwYXJ0aXRpb24gZGV2aWNlIGZvciBzb2Z0d2FyZSBzdXNwZW5kCisJCQlGb3JtYXQ6CisJCQl7L2Rldi88ZGV2PiB8IFBBUlRVVUlEPTx1dWlkPiB8IDxpbnQ+OjxpbnQ+IHwgPGhleD59CisKKwlyZXN1bWVfb2Zmc2V0PQlbU1dTVVNQXQorCQkJU3BlY2lmeSB0aGUgb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgcGFydGl0aW9uCisJCQlnaXZlbiBieSAicmVzdW1lPSIgYXQgd2hpY2ggdGhlIHN3YXAgaGVhZGVyIGlzIGxvY2F0ZWQsCisJCQlpbiA8UEFHRV9TSVpFPiB1bml0cyAobmVlZGVkIG9ubHkgZm9yIHN3YXAgZmlsZXMpLgorCQkJU2VlICBEb2N1bWVudGF0aW9uL3Bvd2VyL3N3c3VzcC1hbmQtc3dhcC1maWxlcy50eHQKKworCXJlc3VtZWRlbGF5PQlbSElCRVJOQVRJT05dIERlbGF5IChpbiBzZWNvbmRzKSB0byBwYXVzZSBiZWZvcmUgYXR0ZW1wdGluZyB0bworCQkJcmVhZCB0aGUgcmVzdW1lIGZpbGVzCisKKwlyZXN1bWV3YWl0CVtISUJFUk5BVElPTl0gV2FpdCAoaW5kZWZpbml0ZWx5KSBmb3IgcmVzdW1lIGRldmljZSB0byBzaG93IHVwLgorCQkJVXNlZnVsIGZvciBkZXZpY2VzIHRoYXQgYXJlIGRldGVjdGVkIGFzeW5jaHJvbm91c2x5CisJCQkoZS5nLiBVU0IgYW5kIE1NQyBkZXZpY2VzKS4KKworCWhpYmVybmF0ZT0JW0hJQkVSTkFUSU9OXQorCQlub3Jlc3VtZQlEb24ndCBjaGVjayBpZiB0aGVyZSdzIGEgaGliZXJuYXRpb24gaW1hZ2UKKwkJCQlwcmVzZW50IGR1cmluZyBib290LgorCQlub2NvbXByZXNzCURvbid0IGNvbXByZXNzL2RlY29tcHJlc3MgaGliZXJuYXRpb24gaW1hZ2VzLgorCQlubwkJRGlzYWJsZSBoaWJlcm5hdGlvbiBhbmQgcmVzdW1lLgorCisJcmV0YWluX2luaXRyZAlbUkFNXSBLZWVwIGluaXRyZCBtZW1vcnkgYWZ0ZXIgZXh0cmFjdGlvbgorCisJcmZraWxsLmRlZmF1bHRfc3RhdGU9CisJCTAJImFpcnBsYW5lIG1vZGUiLiAgQWxsIHdpZmksIGJsdWV0b290aCwgd2ltYXgsIGdwcywgZm0sCisJCQlldGMuIGNvbW11bmljYXRpb24gaXMgYmxvY2tlZCBieSBkZWZhdWx0LgorCQkxCVVuYmxvY2tlZC4KKworCXJma2lsbC5tYXN0ZXJfc3dpdGNoX21vZGU9CisJCTAJVGhlICJhaXJwbGFuZSBtb2RlIiBidXR0b24gZG9lcyBub3RoaW5nLgorCQkxCVRoZSAiYWlycGxhbmUgbW9kZSIgYnV0dG9uIHRvZ2dsZXMgYmV0d2VlbiBldmVyeXRoaW5nCisJCQlibG9ja2VkIGFuZCB0aGUgcHJldmlvdXMgY29uZmlndXJhdGlvbi4KKwkJMglUaGUgImFpcnBsYW5lIG1vZGUiIGJ1dHRvbiB0b2dnbGVzIGJldHdlZW4gZXZlcnl0aGluZworCQkJYmxvY2tlZCBhbmQgZXZlcnl0aGluZyB1bmJsb2NrZWQuCisKKwlyaGFzaF9lbnRyaWVzPQlbS05MLE5FVF0KKwkJCVNldCBudW1iZXIgb2YgaGFzaCBidWNrZXRzIGZvciByb3V0ZSBjYWNoZQorCisJcm8JCVtLTkxdIE1vdW50IHJvb3QgZGV2aWNlIHJlYWQtb25seSBvbiBib290CisKKwlyb290PQkJW0tOTF0gUm9vdCBmaWxlc3lzdGVtCisJCQlTZWUgbmFtZV90b19kZXZfdCBjb21tZW50IGluIGluaXQvZG9fbW91bnRzLmMuCisKKwlyb290ZGVsYXk9CVtLTkxdIERlbGF5IChpbiBzZWNvbmRzKSB0byBwYXVzZSBiZWZvcmUgYXR0ZW1wdGluZyB0bworCQkJbW91bnQgdGhlIHJvb3QgZmlsZXN5c3RlbQorCisJcm9vdGZsYWdzPQlbS05MXSBTZXQgcm9vdCBmaWxlc3lzdGVtIG1vdW50IG9wdGlvbiBzdHJpbmcKKworCXJvb3Rmc3R5cGU9CVtLTkxdIFNldCByb290IGZpbGVzeXN0ZW0gdHlwZQorCisJcm9vdHdhaXQJW0tOTF0gV2FpdCAoaW5kZWZpbml0ZWx5KSBmb3Igcm9vdCBkZXZpY2UgdG8gc2hvdyB1cC4KKwkJCVVzZWZ1bCBmb3IgZGV2aWNlcyB0aGF0IGFyZSBkZXRlY3RlZCBhc3luY2hyb25vdXNseQorCQkJKGUuZy4gVVNCIGFuZCBNTUMgZGV2aWNlcykuCisKKwlycHJvY19tZW09bm5bS01HXVtAYWRkcmVzc10KKwkJCVtLTkwsQVJNLENNQV0gUmVtb3RlcHJvYyBwaHlzaWNhbCBtZW1vcnkgYmxvY2suCisJCQlNZW1vcnkgYXJlYSB0byBiZSB1c2VkIGJ5IHJlbW90ZSBwcm9jZXNzb3IgaW1hZ2UsCisJCQltYW5hZ2VkIGJ5IENNQS4KKworCXJ3CQlbS05MXSBNb3VudCByb290IGRldmljZSByZWFkLXdyaXRlIG9uIGJvb3QKKworCVMJCVtLTkxdIFJ1biBpbml0IGluIHNpbmdsZSBtb2RlCisKKwlzMzkwX2lvbW11PQlbSFcsUzM5MF0KKwkJCVNldCBzMzkwIElPVExCIGZsdXNoaW5nIG1vZGUKKwkJc3RyaWN0CisJCQlXaXRoIHN0cmljdCBmbHVzaGluZyBldmVyeSB1bm1hcCBvcGVyYXRpb24gd2lsbCByZXN1bHQgaW4KKwkJCWFuIElPVExCIGZsdXNoLiBEZWZhdWx0IGlzIGxhenkgZmx1c2hpbmcgYmVmb3JlIHJldXNlLAorCQkJd2hpY2ggaXMgZmFzdGVyLgorCisJc2ExMTAwaXIJW05FVF0KKwkJCVNlZSBkcml2ZXJzL25ldC9pcmRhL3NhMTEwMF9pci5jLgorCisJc2JuaT0JCVtORVRdIEdyYW5jaCBTQk5JMTIgbGVhc2VkIGxpbmUgYWRhcHRlcgorCisJc2NoZWRfZGVidWcJW0tOTF0gRW5hYmxlcyB2ZXJib3NlIHNjaGVkdWxlciBkZWJ1ZyBtZXNzYWdlcy4KKworCXNrZXdfdGljaz0JW0tOTF0gT2Zmc2V0IHRoZSBwZXJpb2RpYyB0aW1lciB0aWNrIHBlciBjcHUgdG8gbWl0aWdhdGUKKwkJCXh0aW1lX2xvY2sgY29udGVudGlvbiBvbiBsYXJnZXIgc3lzdGVtcywgYW5kL29yIFJDVSBsb2NrCisJCQljb250ZW50aW9uIG9uIGFsbCBzeXN0ZW1zIHdpdGggQ09ORklHX01BWFNNUCBzZXQuCisJCQlGb3JtYXQ6IHsgIjAiIHwgIjEiIH0KKwkJCTAgLS0gZGlzYWJsZS4gKG1heSBiZSAxIHZpYSBDT05GSUdfQ01ETElORT0ic2tld190aWNrPTEiCisJCQkxIC0tIGVuYWJsZS4KKwkJCU5vdGU6IGluY3JlYXNlcyBwb3dlciBjb25zdW1wdGlvbiwgdGh1cyBzaG91bGQgb25seSBiZQorCQkJZW5hYmxlZCBpZiBydW5uaW5nIGppdHRlciBzZW5zaXRpdmUgKEhQQy9SVCkgd29ya2xvYWRzLgorCisJc2VjdXJpdHk9CVtTRUNVUklUWV0gQ2hvb3NlIGEgc2VjdXJpdHkgbW9kdWxlIHRvIGVuYWJsZSBhdCBib290LgorCQkJSWYgdGhpcyBib290IHBhcmFtZXRlciBpcyBub3Qgc3BlY2lmaWVkLCBvbmx5IHRoZSBmaXJzdAorCQkJc2VjdXJpdHkgbW9kdWxlIGFza2luZyBmb3Igc2VjdXJpdHkgcmVnaXN0cmF0aW9uIHdpbGwgYmUKKwkJCWxvYWRlZC4gQW4gaW52YWxpZCBzZWN1cml0eSBtb2R1bGUgbmFtZSB3aWxsIGJlIHRyZWF0ZWQKKwkJCWFzIGlmIG5vIG1vZHVsZSBoYXMgYmVlbiBjaG9zZW4uCisKKwlzZWxpbnV4PQlbU0VMSU5VWF0gRGlzYWJsZSBvciBlbmFibGUgU0VMaW51eCBhdCBib290IHRpbWUuCisJCQlGb3JtYXQ6IHsgIjAiIHwgIjEiIH0KKwkJCVNlZSBzZWN1cml0eS9zZWxpbnV4L0tjb25maWcgaGVscCB0ZXh0LgorCQkJMCAtLSBkaXNhYmxlLgorCQkJMSAtLSBlbmFibGUuCisJCQlEZWZhdWx0IHZhbHVlIGlzIHNldCB2aWEga2VybmVsIGNvbmZpZyBvcHRpb24uCisJCQlJZiBlbmFibGVkIGF0IGJvb3QgdGltZSwgL3NlbGludXgvZGlzYWJsZSBjYW4gYmUgdXNlZAorCQkJbGF0ZXIgdG8gZGlzYWJsZSBwcmlvciB0byBpbml0aWFsIHBvbGljeSBsb2FkLgorCisJYXBwYXJtb3I9CVtBUFBBUk1PUl0gRGlzYWJsZSBvciBlbmFibGUgQXBwQXJtb3IgYXQgYm9vdCB0aW1lCisJCQlGb3JtYXQ6IHsgIjAiIHwgIjEiIH0KKwkJCVNlZSBzZWN1cml0eS9hcHBhcm1vci9LY29uZmlnIGhlbHAgdGV4dAorCQkJMCAtLSBkaXNhYmxlLgorCQkJMSAtLSBlbmFibGUuCisJCQlEZWZhdWx0IHZhbHVlIGlzIHNldCB2aWEga2VybmVsIGNvbmZpZyBvcHRpb24uCisKKwlzZXJpYWxudW1iZXIJW0JVR1M9WDg2LTMyXQorCisJc2hhcGVycz0JW05FVF0KKwkJCU1heGltYWwgbnVtYmVyIG9mIHNoYXBlcnMuCisKKwlzaG93X21zcj0JW3g4Nl0gc2hvdyBib290LXRpbWUgTVNSIHNldHRpbmdzCisJCQlGb3JtYXQ6IHsgPGludGVnZXI+IH0KKwkJCVNob3cgYm9vdC10aW1lIChCSU9TLWluaXRpYWxpemVkKSBNU1Igc2V0dGluZ3MuCisJCQlUaGUgcGFyYW1ldGVyIG1lYW5zIHRoZSBudW1iZXIgb2YgQ1BVcyB0byBzaG93LAorCQkJZm9yIGV4YW1wbGUgMSBtZWFucyBib290IENQVSBvbmx5LgorCisJc2ltZXRoPQkJW0lBLTY0XQorCXNpbXNjc2k9CisKKwlzbHJhbT0JCVtIVyxNVERdCisKKwlzbGFiX25vbWVyZ2UJW01NXQorCQkJRGlzYWJsZSBtZXJnaW5nIG9mIHNsYWJzIHdpdGggc2ltaWxhciBzaXplLiBNYXkgYmUKKwkJCW5lY2Vzc2FyeSBpZiB0aGVyZSBpcyBzb21lIHJlYXNvbiB0byBkaXN0aW5ndWlzaAorCQkJYWxsb2NzIHRvIGRpZmZlcmVudCBzbGFicy4gRGVidWcgb3B0aW9ucyBkaXNhYmxlCisJCQltZXJnaW5nIG9uIHRoZWlyIG93bi4KKwkJCUZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBEb2N1bWVudGF0aW9uL3ZtL3NsdWIudHh0LgorCisJc2xhYl9tYXhfb3JkZXI9CVtNTSwgU0xBQl0KKwkJCURldGVybWluZXMgdGhlIG1heGltdW0gYWxsb3dlZCBvcmRlciBmb3Igc2xhYnMuCisJCQlBIGhpZ2ggc2V0dGluZyBtYXkgY2F1c2UgT09NcyBkdWUgdG8gbWVtb3J5CisJCQlmcmFnbWVudGF0aW9uLiAgRGVmYXVsdHMgdG8gMSBmb3Igc3lzdGVtcyB3aXRoCisJCQltb3JlIHRoYW4gMzJNQiBvZiBSQU0sIDAgb3RoZXJ3aXNlLgorCisJc2x1Yl9kZWJ1Z1s9b3B0aW9uc1ssc2xhYnNdXQlbTU0sIFNMVUJdCisJCQlFbmFibGluZyBzbHViX2RlYnVnIGFsbG93cyBvbmUgdG8gZGV0ZXJtaW5lIHRoZQorCQkJY3VscHJpdCBpZiBzbGFiIG9iamVjdHMgYmVjb21lIGNvcnJ1cHRlZC4gRW5hYmxpbmcKKwkJCXNsdWJfZGVidWcgY2FuIGNyZWF0ZSBndWFyZCB6b25lcyBhcm91bmQgb2JqZWN0cyBhbmQKKwkJCW1heSBwb2lzb24gb2JqZWN0cyB3aGVuIG5vdCBpbiB1c2UuIEFsc28gdHJhY2tzIHRoZQorCQkJbGFzdCBhbGxvYyAvIGZyZWUuIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZQorCQkJRG9jdW1lbnRhdGlvbi92bS9zbHViLnR4dC4KKworCXNsdWJfbWF4X29yZGVyPSBbTU0sIFNMVUJdCisJCQlEZXRlcm1pbmVzIHRoZSBtYXhpbXVtIGFsbG93ZWQgb3JkZXIgZm9yIHNsYWJzLgorCQkJQSBoaWdoIHNldHRpbmcgbWF5IGNhdXNlIE9PTXMgZHVlIHRvIG1lbW9yeQorCQkJZnJhZ21lbnRhdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlCisJCQlEb2N1bWVudGF0aW9uL3ZtL3NsdWIudHh0LgorCisJc2x1Yl9taW5fb2JqZWN0cz0JW01NLCBTTFVCXQorCQkJVGhlIG1pbmltdW0gbnVtYmVyIG9mIG9iamVjdHMgcGVyIHNsYWIuIFNMVUIgd2lsbAorCQkJaW5jcmVhc2UgdGhlIHNsYWIgb3JkZXIgdXAgdG8gc2x1Yl9tYXhfb3JkZXIgdG8KKwkJCWdlbmVyYXRlIGEgc3VmZmljaWVudGx5IGxhcmdlIHNsYWIgYWJsZSB0byBjb250YWluCisJCQl0aGUgbnVtYmVyIG9mIG9iamVjdHMgaW5kaWNhdGVkLiBUaGUgaGlnaGVyIHRoZSBudW1iZXIKKwkJCW9mIG9iamVjdHMgdGhlIHNtYWxsZXIgdGhlIG92ZXJoZWFkIG9mIHRyYWNraW5nIHNsYWJzCisJCQlhbmQgdGhlIGxlc3MgZnJlcXVlbnRseSBsb2NrcyBuZWVkIHRvIGJlIGFjcXVpcmVkLgorCQkJRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIERvY3VtZW50YXRpb24vdm0vc2x1Yi50eHQuCisKKwlzbHViX21pbl9vcmRlcj0JW01NLCBTTFVCXQorCQkJRGV0ZXJtaW5lcyB0aGUgbWluaW11bSBwYWdlIG9yZGVyIGZvciBzbGFicy4gTXVzdCBiZQorCQkJbG93ZXIgdGhhbiBzbHViX21heF9vcmRlci4KKwkJCUZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBEb2N1bWVudGF0aW9uL3ZtL3NsdWIudHh0LgorCisJc2x1Yl9ub21lcmdlCVtNTSwgU0xVQl0KKwkJCVNhbWUgd2l0aCBzbGFiX25vbWVyZ2UuIFRoaXMgaXMgc3VwcG9ydGVkIGZvciBsZWdhY3kuCisJCQlTZWUgc2xhYl9ub21lcmdlIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisJc21hcnQyPQkJW0hXXQorCQkJRm9ybWF0OiA8aW8xPlssPGlvMj5bLC4uLiw8aW84Pl1dCisKKwlzbXNjLWlyY2MyLm5vcG5wCVtIV10gRG9uJ3QgdXNlIFBOUCB0byBkaXNjb3ZlciBTTUMgZGV2aWNlcworCXNtc2MtaXJjYzIuaXJjY19jZmc9CVtIV10gRGV2aWNlIGNvbmZpZ3VyYXRpb24gSS9PIHBvcnQKKwlzbXNjLWlyY2MyLmlyY2Nfc2lyPQlbSFddIFNJUiBiYXNlIEkvTyBwb3J0CisJc21zYy1pcmNjMi5pcmNjX2Zpcj0JW0hXXSBGSVIgYmFzZSBJL08gcG9ydAorCXNtc2MtaXJjYzIuaXJjY19pcnE9CVtIV10gSVJRIGxpbmUKKwlzbXNjLWlyY2MyLmlyY2NfZG1hPQlbSFddIERNQSBjaGFubmVsCisJc21zYy1pcmNjMi5pcmNjX3RyYW5zY2VpdmVyPSBbSFddIFRyYW5zY2VpdmVyIHR5cGU6CisJCQkJMDogVG9zaGliYSBTYXRlbGxpdGUgMTgwMCAoR1AgZGF0YSBwaW4gc2VsZWN0KQorCQkJCTE6IEZhc3QgcGluIHNlbGVjdCAoZGVmYXVsdCkKKwkJCQkyOiBBVEMgSVJNb2RlCisKKwlzb2Z0bG9ja3VwX3BhbmljPQorCQkJW0tOTF0gU2hvdWxkIHRoZSBzb2Z0LWxvY2t1cCBkZXRlY3RvciBnZW5lcmF0ZSBwYW5pY3MuCisJCQlGb3JtYXQ6IDxpbnRlZ2VyPgorCisJc29mdGxvY2t1cF9hbGxfY3B1X2JhY2t0cmFjZT0KKwkJCVtLTkxdIFNob3VsZCB0aGUgc29mdC1sb2NrdXAgZGV0ZWN0b3IgZ2VuZXJhdGUKKwkJCWJhY2t0cmFjZXMgb24gYWxsIGNwdXMuCisJCQlGb3JtYXQ6IDxpbnRlZ2VyPgorCisJc29ueXBpLio9CVtIV10gU29ueSBQcm9ncmFtbWFibGUgSS9PIENvbnRyb2wgRGV2aWNlIGRyaXZlcgorCQkJU2VlIERvY3VtZW50YXRpb24vbGFwdG9wcy9zb255cGkudHh0CisKKwlzcGlhX2lvX2Jhc2U9CVtIVyxNVERdCisJc3BpYV9maW9fYmFzZT0KKwlzcGlhX3BlZHI9CisJc3BpYV9wZWRkcj0KKworCXN0YWNrX2d1YXJkX2dhcD0JW01NXQorCQkJb3ZlcnJpZGUgdGhlIGRlZmF1bHQgc3RhY2sgZ2FwIHByb3RlY3Rpb24uIFRoZSB2YWx1ZQorCQkJaXMgaW4gcGFnZSB1bml0cyBhbmQgaXQgZGVmaW5lcyBob3cgbWFueSBwYWdlcyBwcmlvcgorCQkJdG8gKGZvciBzdGFja3MgZ3Jvd2luZyBkb3duKSByZXNwLiBhZnRlciAoZm9yIHN0YWNrcworCQkJZ3Jvd2luZyB1cCkgdGhlIG1haW4gc3RhY2sgYXJlIHJlc2VydmVkIGZvciBubyBvdGhlcgorCQkJbWFwcGluZy4gRGVmYXVsdCB2YWx1ZSBpcyAyNTYgcGFnZXMuCisKKwlzdGFja3RyYWNlCVtGVFJBQ0VdCisJCQlFbmFibGVkIHRoZSBzdGFjayB0cmFjZXIgb24gYm9vdCB1cC4KKworCXN0YWNrdHJhY2VfZmlsdGVyPVtmdW5jdGlvbi1saXN0XQorCQkJW0ZUUkFDRV0gTGltaXQgdGhlIGZ1bmN0aW9ucyB0aGF0IHRoZSBzdGFjayB0cmFjZXIKKwkJCXdpbGwgdHJhY2UgYXQgYm9vdCB1cC4gZnVuY3Rpb24tbGlzdCBpcyBhIGNvbW1hIHNlcGFyYXRlZAorCQkJbGlzdCBvZiBmdW5jdGlvbnMuIFRoaXMgbGlzdCBjYW4gYmUgY2hhbmdlZCBhdCBydW4KKwkJCXRpbWUgYnkgdGhlIHN0YWNrX3RyYWNlX2ZpbHRlciBmaWxlIGluIHRoZSBkZWJ1Z2ZzCisJCQl0cmFjaW5nIGRpcmVjdG9yeS4gTm90ZSwgdGhpcyBlbmFibGVzIHN0YWNrIHRyYWNpbmcKKwkJCWFuZCB0aGUgc3RhY2t0cmFjZSBhYm92ZSBpcyBub3QgbmVlZGVkLgorCisJc3RpPQkJW1BBUklTQyxIV10KKwkJCUZvcm1hdDogPG51bT4KKwkJCVNldCB0aGUgU1RJIChidWlsdGluIGRpc3BsYXkva2V5Ym9hcmQgb24gdGhlIEhQLVBBUklTQworCQkJbWFjaGluZXMpIGNvbnNvbGUgKGdyYXBoaWMgY2FyZCkgd2hpY2ggc2hvdWxkIGJlIHVzZWQKKwkJCWFzIHRoZSBpbml0aWFsIGJvb3QtY29uc29sZS4KKwkJCVNlZSBhbHNvIGNvbW1lbnQgaW4gZHJpdmVycy92aWRlby9jb25zb2xlL3N0aWNvcmUuYy4KKworCXN0aV9mb250PQlbSFddCisJCQlTZWUgY29tbWVudCBpbiBkcml2ZXJzL3ZpZGVvL2NvbnNvbGUvc3RpY29yZS5jLgorCisJc3RpZmI9CQlbSFddCisJCQlGb3JtYXQ6IGJwcDo8YnBwMT5bOjxicHAyPls6PGJwcDM+Li4uXV0KKworCXN1bnJwYy5taW5fcmVzdnBvcnQ9CisJc3VucnBjLm1heF9yZXN2cG9ydD0KKwkJCVtORlMsU1VOUlBDXQorCQkJU3VuUlBDIHNlcnZlcnMgb2Z0ZW4gcmVxdWlyZSB0aGF0IGNsaWVudCByZXF1ZXN0cworCQkJb3JpZ2luYXRlIGZyb20gYSBwcml2aWxlZ2VkIHBvcnQgKGkuZS4gYSBwb3J0IGluIHRoZQorCQkJcmFuZ2UgMCA8IHBvcnRuciA8IDEwMjQpLgorCQkJQW4gYWRtaW5pc3RyYXRvciB3aG8gd2lzaGVzIHRvIHJlc2VydmUgc29tZSBvZiB0aGVzZQorCQkJcG9ydHMgZm9yIG90aGVyIHVzZXMgbWF5IGFkanVzdCB0aGUgcmFuZ2UgdGhhdCB0aGUKKwkJCWtlcm5lbCdzIHN1bnJwYyBjbGllbnQgY29uc2lkZXJzIHRvIGJlIHByaXZpbGVnZWQKKwkJCXVzaW5nIHRoZXNlIHR3byBwYXJhbWV0ZXJzIHRvIHNldCB0aGUgbWluaW11bSBhbmQKKwkJCW1heGltdW0gcG9ydCB2YWx1ZXMuCisKKwlzdW5ycGMucG9vbF9tb2RlPQorCQkJW05GU10KKwkJCUNvbnRyb2wgaG93IHRoZSBORlMgc2VydmVyIGNvZGUgYWxsb2NhdGVzIENQVXMgdG8KKwkJCXNlcnZpY2UgdGhyZWFkIHBvb2xzLiAgRGVwZW5kaW5nIG9uIGhvdyBtYW55IE5JQ3MKKwkJCXlvdSBoYXZlIGFuZCB3aGVyZSB0aGVpciBpbnRlcnJ1cHRzIGFyZSBib3VuZCwgdGhpcworCQkJb3B0aW9uIHdpbGwgYWZmZWN0IHdoaWNoIENQVXMgd2lsbCBkbyBORlMgc2VydmluZy4KKwkJCU5vdGU6IHRoaXMgcGFyYW1ldGVyIGNhbm5vdCBiZSBjaGFuZ2VkIHdoaWxlIHRoZQorCQkJTkZTIHNlcnZlciBpcyBydW5uaW5nLgorCisJCQlhdXRvCSAgICB0aGUgc2VydmVyIGNob29zZXMgYW4gYXBwcm9wcmlhdGUgbW9kZQorCQkJCSAgICBhdXRvbWF0aWNhbGx5IHVzaW5nIGhldXJpc3RpY3MKKwkJCWdsb2JhbAkgICAgYSBzaW5nbGUgZ2xvYmFsIHBvb2wgY29udGFpbnMgYWxsIENQVXMKKwkJCXBlcmNwdQkgICAgb25lIHBvb2wgZm9yIGVhY2ggQ1BVCisJCQlwZXJub2RlCSAgICBvbmUgcG9vbCBmb3IgZWFjaCBOVU1BIG5vZGUgKGVxdWl2YWxlbnQKKwkJCQkgICAgdG8gZ2xvYmFsIG9uIG5vbi1OVU1BIG1hY2hpbmVzKQorCisJc3VucnBjLnRjcF9zbG90X3RhYmxlX2VudHJpZXM9CisJc3VucnBjLnVkcF9zbG90X3RhYmxlX2VudHJpZXM9CisJCQlbTkZTLFNVTlJQQ10KKwkJCVNldHMgdGhlIHVwcGVyIGxpbWl0IG9uIHRoZSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzCisJCQlSUEMgY2FsbHMgdGhhdCBjYW4gYmUgc2VudCBmcm9tIHRoZSBjbGllbnQgdG8gYQorCQkJc2VydmVyLiBJbmNyZWFzaW5nIHRoZXNlIHZhbHVlcyBtYXkgYWxsb3cgeW91IHRvCisJCQlpbXByb3ZlIHRocm91Z2hwdXQsIGJ1dCB3aWxsIGFsc28gaW5jcmVhc2UgdGhlCisJCQlhbW91bnQgb2YgbWVtb3J5IHJlc2VydmVkIGZvciB1c2UgYnkgdGhlIGNsaWVudC4KKworCXN1c3BlbmQucG1fdGVzdF9kZWxheT0KKwkJCVtTVVNQRU5EXQorCQkJU2V0cyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgdG8gcmVtYWluIGluIGEgc3VzcGVuZCB0ZXN0CisJCQltb2RlIGJlZm9yZSByZXN1bWluZyB0aGUgc3lzdGVtIChzZWUKKwkJCS9zeXMvcG93ZXIvcG1fdGVzdCkuIE9ubHkgYXZhaWxhYmxlIHdoZW4gQ09ORklHX1BNX0RFQlVHCisJCQlpcyBzZXQuIERlZmF1bHQgdmFsdWUgaXMgNS4KKworCXN3YXBhY2NvdW50PVswfDFdCisJCQlbS05MXSBFbmFibGUgYWNjb3VudGluZyBvZiBzd2FwIGluIG1lbW9yeSByZXNvdXJjZQorCQkJY29udHJvbGxlciBpZiBubyBwYXJhbWV0ZXIgb3IgMSBpcyBnaXZlbiBvciBkaXNhYmxlCisJCQlpdCBpZiAwIGlzIGdpdmVuIChTZWUgRG9jdW1lbnRhdGlvbi9jZ3JvdXBzL21lbW9yeS50eHQpCisKKwlzd2lvdGxiPQlbQVJNLElBLTY0LFBQQyxNSVBTLFg4Nl0KKwkJCUZvcm1hdDogeyA8aW50PiB8IGZvcmNlIH0KKwkJCTxpbnQ+IC0tIE51bWJlciBvZiBJL08gVExCIHNsYWJzCisJCQlmb3JjZSAtLSBmb3JjZSB1c2luZyBvZiBib3VuY2UgYnVmZmVycyBldmVuIGlmIHRoZXkKKwkJCSAgICAgICAgIHdvdWxkbid0IGJlIGF1dG9tYXRpY2FsbHkgdXNlZCBieSB0aGUga2VybmVsCisKKwlzd2l0Y2hlcz0JW0hXLE02OGtdCisKKwlzeXNmcy5kZXByZWNhdGVkPTB8MSBbS05MXQorCQkJRW5hYmxlL2Rpc2FibGUgb2xkIHN0eWxlIHN5c2ZzIGxheW91dCBmb3Igb2xkIHVkZXYKKwkJCW9uIG9sZGVyIGRpc3RyaWJ1dGlvbnMuIFdoZW4gdGhpcyBvcHRpb24gaXMgZW5hYmxlZAorCQkJdmVyeSBuZXcgdWRldiB3aWxsIG5vdCB3b3JrIGFueW1vcmUuIFdoZW4gdGhpcyBvcHRpb24KKwkJCWlzIGRpc2FibGVkIChvciBDT05GSUdfU1lTRlNfREVQUkVDQVRFRCBub3QgY29tcGlsZWQpCisJCQlpbiBvbGRlciB1ZGV2IHdpbGwgbm90IHdvcmsgYW55bW9yZS4KKwkJCURlZmF1bHQgZGVwZW5kcyBvbiBDT05GSUdfU1lTRlNfREVQUkVDQVRFRF9WMiBzZXQgaW4KKwkJCXRoZSBrZXJuZWwgY29uZmlndXJhdGlvbi4KKworCXN5c3JxX2Fsd2F5c19lbmFibGVkCisJCQlbS05MXQorCQkJSWdub3JlIHN5c3JxIHNldHRpbmcgLSB0aGlzIGJvb3QgcGFyYW1ldGVyIHdpbGwKKwkJCW5ldXRyYWxpemUgYW55IGVmZmVjdCBvZiAvcHJvYy9zeXMva2VybmVsL3N5c3JxLgorCQkJVXNlZnVsIGZvciBkZWJ1Z2dpbmcuCisKKwl0Y3BtaGFzaF9lbnRyaWVzPSBbS05MLE5FVF0KKwkJCVNldCB0aGUgbnVtYmVyIG9mIHRjcF9tZXRyaWNzX2hhc2ggc2xvdHMuCisJCQlEZWZhdWx0IHZhbHVlIGlzIDgxOTIgb3IgMTYzODQgZGVwZW5kaW5nIG9uIHRvdGFsCisJCQlyYW0gcGFnZXMuIFRoaXMgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBUQ1AgbWV0cmljcworCQkJY2FjaGUgc2l6ZS4gU2VlIERvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcC1zeXNjdGwudHh0CisJCQkidGNwX25vX21ldHJpY3Nfc2F2ZSIgc2VjdGlvbiBmb3IgbW9yZSBkZXRhaWxzLgorCisJdGRmeD0JCVtIVyxEUk1dCisKKwl0ZXN0X3N1c3BlbmQ9CVtTVVNQRU5EXVssTl0KKwkJCVNwZWNpZnkgIm1lbSIgKGZvciBTdXNwZW5kLXRvLVJBTSkgb3IgInN0YW5kYnkiIChmb3IKKwkJCXN0YW5kYnkgc3VzcGVuZCkgb3IgImZyZWV6ZSIgKGZvciBzdXNwZW5kIHR5cGUgZnJlZXplKQorCQkJYXMgdGhlIHN5c3RlbSBzbGVlcCBzdGF0ZSBkdXJpbmcgc3lzdGVtIHN0YXJ0dXAgd2l0aAorCQkJdGhlIG9wdGlvbmFsIGNhcGFiaWxpdHkgdG8gcmVwZWF0IE4gbnVtYmVyIG9mIHRpbWVzLgorCQkJVGhlIHN5c3RlbSBpcyB3b2tlbiBmcm9tIHRoaXMgc3RhdGUgdXNpbmcgYQorCQkJd2FrZXVwLWNhcGFibGUgUlRDIGFsYXJtLgorCisJdGhhc2hfZW50cmllcz0JW0tOTCxORVRdCisJCQlTZXQgbnVtYmVyIG9mIGhhc2ggYnVja2V0cyBmb3IgVENQIGNvbm5lY3Rpb24KKworCXRoZXJtYWwuYWN0PQlbSFcsQUNQSV0KKwkJCS0xOiBkaXNhYmxlIGFsbCBhY3RpdmUgdHJpcCBwb2ludHMgaW4gYWxsIHRoZXJtYWwgem9uZXMKKwkJCTxkZWdyZWVzIEM+OiBvdmVycmlkZSBhbGwgbG93ZXN0IGFjdGl2ZSB0cmlwIHBvaW50cworCisJdGhlcm1hbC5jcnQ9CVtIVyxBQ1BJXQorCQkJLTE6IGRpc2FibGUgYWxsIGNyaXRpY2FsIHRyaXAgcG9pbnRzIGluIGFsbCB0aGVybWFsIHpvbmVzCisJCQk8ZGVncmVlcyBDPjogb3ZlcnJpZGUgYWxsIGNyaXRpY2FsIHRyaXAgcG9pbnRzCisKKwl0aGVybWFsLm5vY3J0PQlbSFcsQUNQSV0KKwkJCVNldCB0byBkaXNhYmxlIGFjdGlvbnMgb24gQUNQSSB0aGVybWFsIHpvbmUKKwkJCWNyaXRpY2FsIGFuZCBob3QgdHJpcCBwb2ludHMuCisKKwl0aGVybWFsLm9mZj0JW0hXLEFDUEldCisJCQkxOiBkaXNhYmxlIEFDUEkgdGhlcm1hbCBjb250cm9sCisKKwl0aGVybWFsLnBzdj0JW0hXLEFDUEldCisJCQktMTogZGlzYWJsZSBhbGwgcGFzc2l2ZSB0cmlwIHBvaW50cworCQkJPGRlZ3JlZXMgQz46IG92ZXJyaWRlIGFsbCBwYXNzaXZlIHRyaXAgcG9pbnRzIHRvIHRoaXMKKwkJCXZhbHVlCisKKwl0aGVybWFsLnR6cD0JW0hXLEFDUEldCisJCQlTcGVjaWZ5IGdsb2JhbCBkZWZhdWx0IEFDUEkgdGhlcm1hbCB6b25lIHBvbGxpbmcgcmF0ZQorCQkJPGRlY2ktc2Vjb25kcz46IHBvbGwgYWxsIHRoaXMgZnJlcXVlbmN5CisJCQkwOiBubyBwb2xsaW5nIChkZWZhdWx0KQorCisJdGhyZWFkaXJxcwlbS05MXQorCQkJRm9yY2UgdGhyZWFkaW5nIG9mIGFsbCBpbnRlcnJ1cHQgaGFuZGxlcnMgZXhjZXB0IHRob3NlCisJCQltYXJrZWQgZXhwbGljaXRseSBJUlFGX05PX1RIUkVBRC4KKworCXRtZW0JCVtLTkwsWEVOXQorCQkJRW5hYmxlIHRoZSBUcmFuc2NlbmRlbnQgbWVtb3J5IGRyaXZlciBpZiBidWlsdC1pbi4KKworCXRtZW0uY2xlYW5jYWNoZT0wfDEgW0tOTCwgWEVOXQorCQkJRGVmYXVsdCBpcyBvbiAoMSkuIERpc2FibGUgdGhlIHVzYWdlIG9mIHRoZSBjbGVhbmNhY2hlCisJCQlBUEkgdG8gc2VuZCBhbm9ueW1vdXMgcGFnZXMgdG8gdGhlIGh5cGVydmlzb3IuCisKKwl0bWVtLmZyb250c3dhcD0wfDEgW0tOTCwgWEVOXQorCQkJRGVmYXVsdCBpcyBvbiAoMSkuIERpc2FibGUgdGhlIHVzYWdlIG9mIHRoZSBmcm9udHN3YXAKKwkJCUFQSSB0byBzZW5kIHN3YXAgcGFnZXMgdG8gdGhlIGh5cGVydmlzb3IuIElmIGRpc2FibGVkCisJCQl0aGUgc2VsZmJhbGxvb25pbmcgYW5kIHNlbGZzaHJpbmtpbmcgYXJlIGZvcmNlIGRpc2FibGVkLgorCisJdG1lbS5zZWxmYmFsbG9vbmluZz0wfDEgW0tOTCwgWEVOXQorCQkJRGVmYXVsdCBpcyBvbiAoMSkuIERpc2FibGUgdGhlIGRyaXZpbmcgb2Ygc3dhcCBwYWdlcworCQkJdG8gdGhlIGh5cGVydmlzb3IuCisKKwl0bWVtLnNlbGZzaHJpbmtpbmc9MHwxIFtLTkwsIFhFTl0KKwkJCURlZmF1bHQgaXMgb24gKDEpLiBQYXJ0aWFsIHN3YXBvZmYgdGhhdCBpbW1lZGlhdGVseQorCQkJdHJhbnNmZXJzIHBhZ2VzIGZyb20gWGVuIGh5cGVydmlzb3IgYmFjayB0byB0aGUKKwkJCWtlcm5lbCBiYXNlZCBvbiBkaWZmZXJlbnQgY3JpdGVyaWEuCisKKwl0b3BvbG9neT0JW1MzOTBdCisJCQlGb3JtYXQ6IHtvZmYgfCBvbn0KKwkJCVNwZWNpZnkgaWYgdGhlIGtlcm5lbCBzaG91bGQgbWFrZSB1c2Ugb2YgdGhlIGNwdQorCQkJdG9wb2xvZ3kgaW5mb3JtYXRpb24gaWYgdGhlIGhhcmR3YXJlIHN1cHBvcnRzIHRoaXMuCisJCQlUaGUgc2NoZWR1bGVyIHdpbGwgbWFrZSB1c2Ugb2YgdGhpcyBpbmZvcm1hdGlvbiBhbmQKKwkJCWUuZy4gYmFzZSBpdHMgcHJvY2VzcyBtaWdyYXRpb24gZGVjaXNpb25zIG9uIGl0LgorCQkJRGVmYXVsdCBpcyBvbi4KKworCXRvcG9sb2d5X3VwZGF0ZXM9IFtLTkwsIFBQQywgTlVNQV0KKwkJCUZvcm1hdDoge29mZn0KKwkJCVNwZWNpZnkgaWYgdGhlIGtlcm5lbCBzaG91bGQgaWdub3JlIChvZmYpCisJCQl0b3BvbG9neSB1cGRhdGVzIHNlbnQgYnkgdGhlIGh5cGVydmlzb3IgdG8gdGhpcworCQkJTFBBUi4KKworCXRwNzIwPQkJW0hXLFBTMl0KKworCXRwbV9zdXNwZW5kX3Bjcj1bSFcsVFBNXQorCQkJRm9ybWF0OiBpbnRlZ2VyIHBjciBpZAorCQkJU3BlY2lmeSB0aGF0IGF0IHN1c3BlbmQgdGltZSwgdGhlIHRwbSBkcml2ZXIKKwkJCXNob3VsZCBleHRlbmQgdGhlIHNwZWNpZmllZCBwY3Igd2l0aCB6ZXJvcywKKwkJCWFzIGEgd29ya2Fyb3VuZCBmb3Igc29tZSBjaGlwcyB3aGljaCBmYWlsIHRvCisJCQlmbHVzaCB0aGUgbGFzdCB3cml0dGVuIHBjciBvbiBUUE1fU2F2ZVN0YXRlLgorCQkJVGhpcyB3aWxsIGd1YXJhbnRlZSB0aGF0IGFsbCB0aGUgb3RoZXIgcGNycworCQkJYXJlIHNhdmVkLgorCisJdHJhY2VfYnVmX3NpemU9bm5bS01HXQorCQkJW0ZUUkFDRV0gd2lsbCBzZXQgdHJhY2luZyBidWZmZXIgc2l6ZSBvbiBlYWNoIGNwdS4KKworCXRyYWNlX2V2ZW50PVtldmVudC1saXN0XQorCQkJW0ZUUkFDRV0gU2V0IGFuZCBzdGFydCBzcGVjaWZpZWQgdHJhY2UgZXZlbnRzIGluIG9yZGVyCisJCQl0byBmYWNpbGl0YXRlIGVhcmx5IGJvb3QgZGVidWdnaW5nLgorCQkJU2VlIGFsc28gRG9jdW1lbnRhdGlvbi90cmFjZS9ldmVudHMudHh0CisKKwl0cmFjZV9vcHRpb25zPVtvcHRpb24tbGlzdF0KKwkJCVtGVFJBQ0VdIEVuYWJsZSBvciBkaXNhYmxlIHRyYWNlciBvcHRpb25zIGF0IGJvb3QuCisJCQlUaGUgb3B0aW9uLWxpc3QgaXMgYSBjb21tYSBkZWxpbWl0ZWQgbGlzdCBvZiBvcHRpb25zCisJCQl0aGF0IGNhbiBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGp1c3QgYXMgaWYgeW91IHdlcmUKKwkJCXRvIGVjaG8gdGhlIG9wdGlvbiBuYW1lIGludG8KKworCQkJICAgIC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2Vfb3B0aW9ucworCisJCQlGb3IgZXhhbXBsZSwgdG8gZW5hYmxlIHN0YWNrdHJhY2Ugb3B0aW9uICh0byBkdW1wIHRoZQorCQkJc3RhY2sgdHJhY2Ugb2YgZWFjaCBldmVudCksIGFkZCB0byB0aGUgY29tbWFuZCBsaW5lOgorCisJCQkgICAgICB0cmFjZV9vcHRpb25zPXN0YWNrdHJhY2UKKworCQkJU2VlIGFsc28gRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UudHh0ICJ0cmFjZSBvcHRpb25zIgorCQkJc2VjdGlvbi4KKworCXRwX3ByaW50a1tGVFJBQ0VdCisJCQlIYXZlIHRoZSB0cmFjZXBvaW50cyBzZW50IHRvIHByaW50ayBhcyB3ZWxsIGFzIHRoZQorCQkJdHJhY2luZyByaW5nIGJ1ZmZlci4gVGhpcyBpcyB1c2VmdWwgZm9yIGVhcmx5IGJvb3QgdXAKKwkJCXdoZXJlIHRoZSBzeXN0ZW0gaGFuZ3Mgb3IgcmVib290cyBhbmQgZG9lcyBub3QgZ2l2ZSB0aGUKKwkJCW9wdGlvbiBmb3IgcmVhZGluZyB0aGUgdHJhY2luZyBidWZmZXIgb3IgcGVyZm9ybWluZyBhCisJCQlmdHJhY2VfZHVtcF9vbl9vb3BzLgorCisJCQlUbyB0dXJuIG9mZiBoYXZpbmcgdHJhY2Vwb2ludHMgc2VudCB0byBwcmludGssCisJCQkgZWNobyAwID4gL3Byb2Mvc3lzL2tlcm5lbC90cmFjZXBvaW50X3ByaW50aworCQkJTm90ZSwgZWNob2luZyAxIGludG8gdGhpcyBmaWxlIHdpdGhvdXQgdGhlCisJCQl0cmFjZXBvaW50X3ByaW50ayBrZXJuZWwgY21kbGluZSBvcHRpb24gaGFzIG5vIGVmZmVjdC4KKworCQkJKiogQ0FVVElPTiAqKgorCisJCQlIYXZpbmcgdHJhY2Vwb2ludHMgc2VudCB0byBwcmludGsoKSBhbmQgYWN0aXZhdGluZyBoaWdoCisJCQlmcmVxdWVuY3kgdHJhY2Vwb2ludHMgc3VjaCBhcyBpcnEgb3Igc2NoZWQsIGNhbiBjYXVzZQorCQkJdGhlIHN5c3RlbSB0byBsaXZlIGxvY2suCisKKwl0cmFjZW9mZl9vbl93YXJuaW5nCisJCQlbRlRSQUNFXSBlbmFibGUgdGhpcyBvcHRpb24gdG8gZGlzYWJsZSB0cmFjaW5nIHdoZW4gYQorCQkJd2FybmluZyBpcyBoaXQuIFRoaXMgdHVybnMgb2ZmICJ0cmFjaW5nX29uIi4gVHJhY2luZyBjYW4KKwkJCWJlIGVuYWJsZWQgYWdhaW4gYnkgZWNob2luZyAnMScgaW50byB0aGUgInRyYWNpbmdfb24iCisJCQlmaWxlIGxvY2F0ZWQgaW4gL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy8KKworCQkJVGhpcyBvcHRpb24gaXMgdXNlZnVsLCBhcyBpdCBkaXNhYmxlcyB0aGUgdHJhY2UgYmVmb3JlCisJCQl0aGUgV0FSTklORyBkdW1wIGlzIGNhbGxlZCwgd2hpY2ggcHJldmVudHMgdGhlIHRyYWNlIHRvCisJCQliZSBmaWxsZWQgd2l0aCBjb250ZW50IGNhdXNlZCBieSB0aGUgd2FybmluZyBvdXRwdXQuCisKKwkJCVRoaXMgb3B0aW9uIGNhbiBhbHNvIGJlIHNldCBhdCBydW4gdGltZSB2aWEgdGhlIHN5c2N0bAorCQkJb3B0aW9uOiAga2VybmVsL3RyYWNlb2ZmX29uX3dhcm5pbmcKKworCXRyYW5zcGFyZW50X2h1Z2VwYWdlPQorCQkJW0tOTF0KKwkJCUZvcm1hdDogW2Fsd2F5c3xtYWR2aXNlfG5ldmVyXQorCQkJQ2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgc3lzdGVtCisJCQl3aXRoIHJlc3BlY3QgdG8gdHJhbnNwYXJlbnQgaHVnZXBhZ2VzLgorCQkJU2VlIERvY3VtZW50YXRpb24vdm0vdHJhbnNodWdlLnR4dCBmb3IgbW9yZSBkZXRhaWxzLgorCisJdHNjPQkJRGlzYWJsZSBjbG9ja3NvdXJjZSBzdGFiaWxpdHkgY2hlY2tzIGZvciBUU0MuCisJCQlGb3JtYXQ6IDxzdHJpbmc+CisJCQlbeDg2XSByZWxpYWJsZTogbWFyayB0c2MgY2xvY2tzb3VyY2UgYXMgcmVsaWFibGUsIHRoaXMKKwkJCWRpc2FibGVzIGNsb2Nrc291cmNlIHZlcmlmaWNhdGlvbiBhdCBydW50aW1lLCBhcyB3ZWxsCisJCQlhcyB0aGUgc3RhYmlsaXR5IGNoZWNrcyBkb25lIGF0IGJvb3R1cC4JVXNlZCB0byBlbmFibGUKKwkJCWhpZ2gtcmVzb2x1dGlvbiB0aW1lciBtb2RlIG9uIG9sZGVyIGhhcmR3YXJlLCBhbmQgaW4KKwkJCXZpcnR1YWxpemVkIGVudmlyb25tZW50LgorCQkJW3g4Nl0gbm9pcnF0aW1lOiBEbyBub3QgdXNlIFRTQyB0byBkbyBpcnEgYWNjb3VudGluZy4KKwkJCVVzZWQgdG8gcnVuIHRpbWUgZGlzYWJsZSBJUlFfVElNRV9BQ0NPVU5USU5HIG9uIGFueQorCQkJcGxhdGZvcm1zIHdoZXJlIFJEVFNDIGlzIHNsb3cgYW5kIHRoaXMgYWNjb3VudGluZworCQkJY2FuIGFkZCBvdmVyaGVhZC4KKworCXR1cmJvZ3JhZngubWFwWzJ8M109CVtIVyxKT1ldCisJCQlUdXJib0dyYUZYIHBhcmFsbGVsIHBvcnQgaW50ZXJmYWNlCisJCQlGb3JtYXQ6CisJCQk8cG9ydCM+LDxqczE+LDxqczI+LDxqczM+LDxqczQ+LDxqczU+LDxqczY+LDxqczc+CisJCQlTZWUgYWxzbyBEb2N1bWVudGF0aW9uL2lucHV0L2pveXN0aWNrLXBhcnBvcnQudHh0CisKKwl1ZGJnLWltbW9ydGFsCVtQUENdIFdoZW4gZGVidWdnaW5nIGVhcmx5IGtlcm5lbCBjcmFzaGVzIHRoYXQKKwkJCWhhcHBlbiBhZnRlciBjb25zb2xlX2luaXQoKSBhbmQgYmVmb3JlIGEgcHJvcGVyIAorCQkJY29uc29sZSBkcml2ZXIgdGFrZXMgb3ZlciwgdGhpcyBib290IG9wdGlvbnMgbWlnaHQKKwkJCWhlbHAgInNlZWluZyIgd2hhdCdzIGdvaW5nIG9uLgorCisJdWhhc2hfZW50cmllcz0JW0tOTCxORVRdCisJCQlTZXQgbnVtYmVyIG9mIGhhc2ggYnVja2V0cyBmb3IgVURQL1VEUC1MaXRlIGNvbm5lY3Rpb25zCisKKwl1aGNpLWhjZC5pZ25vcmVfb2M9CisJCQlbVVNCXSBJZ25vcmUgb3ZlcmN1cnJlbnQgZXZlbnRzIChkZWZhdWx0IE4pLgorCQkJU29tZSBiYWRseS1kZXNpZ25lZCBtb3RoZXJib2FyZHMgZ2VuZXJhdGUgbG90cyBvZgorCQkJYm9ndXMgZXZlbnRzLCBmb3IgcG9ydHMgdGhhdCBhcmVuJ3Qgd2lyZWQgdG8KKwkJCWFueXRoaW5nLiAgU2V0IHRoaXMgcGFyYW1ldGVyIHRvIGF2b2lkIGxvZyBzcGFtbWluZy4KKwkJCU5vdGUgdGhhdCBnZW51aW5lIG92ZXJjdXJyZW50IGV2ZW50cyB3b24ndCBiZQorCQkJcmVwb3J0ZWQgZWl0aGVyLgorCisJdW5rbm93bl9ubWlfcGFuaWMKKwkJCVtYODZdIENhdXNlIHBhbmljIG9uIHVua25vd24gTk1JLgorCisJdXNiY29yZS5hdXRob3JpemVkX2RlZmF1bHQ9CisJCQlbVVNCXSBEZWZhdWx0IFVTQiBkZXZpY2UgYXV0aG9yaXphdGlvbjoKKwkJCShkZWZhdWx0IC0xID0gYXV0aG9yaXplZCBleGNlcHQgZm9yIHdpcmVsZXNzIFVTQiwKKwkJCTAgPSBub3QgYXV0aG9yaXplZCwgMSA9IGF1dGhvcml6ZWQpCisKKwl1c2Jjb3JlLmF1dG9zdXNwZW5kPQorCQkJW1VTQl0gVGhlIGF1dG9zdXNwZW5kIHRpbWUgZGVsYXkgKGluIHNlY29uZHMpIHVzZWQKKwkJCWZvciBuZXdseS1kZXRlY3RlZCBVU0IgZGV2aWNlcyAoZGVmYXVsdCAyKS4gIFRoaXMKKwkJCWlzIHRoZSB0aW1lIHJlcXVpcmVkIGJlZm9yZSBhbiBpZGxlIGRldmljZSB3aWxsIGJlCisJCQlhdXRvc3VzcGVuZGVkLiAgRGV2aWNlcyBmb3Igd2hpY2ggdGhlIGRlbGF5IGlzIHNldAorCQkJdG8gYSBuZWdhdGl2ZSB2YWx1ZSB3b24ndCBiZSBhdXRvc3VzcGVuZGVkIGF0IGFsbC4KKworCXVzYmNvcmUudXNiZnNfc25vb3A9CisJCQlbVVNCXSBTZXQgdG8gbG9nIGFsbCB1c2JmcyB0cmFmZmljIChkZWZhdWx0IDAgPSBvZmYpLgorCisJdXNiY29yZS5ibGlua2VubGlnaHRzPQorCQkJW1VTQl0gU2V0IHRvIGN5Y2xlIGxlZHMgb24gaHVicyAoZGVmYXVsdCAwID0gb2ZmKS4KKworCXVzYmNvcmUub2xkX3NjaGVtZV9maXJzdD0KKwkJCVtVU0JdIFN0YXJ0IHdpdGggdGhlIG9sZCBkZXZpY2UgaW5pdGlhbGl6YXRpb24KKwkJCXNjaGVtZSAoZGVmYXVsdCAwID0gb2ZmKS4KKworCXVzYmNvcmUudXNiZnNfbWVtb3J5X21iPQorCQkJW1VTQl0gTWVtb3J5IGxpbWl0IChpbiBNQikgZm9yIGJ1ZmZlcnMgYWxsb2NhdGVkIGJ5CisJCQl1c2JmcyAoZGVmYXVsdCA9IDE2LCAwID0gbWF4ID0gMjA0NykuCisKKwl1c2Jjb3JlLnVzZV9ib3RoX3NjaGVtZXM9CisJCQlbVVNCXSBUcnkgdGhlIG90aGVyIGRldmljZSBpbml0aWFsaXphdGlvbiBzY2hlbWUKKwkJCWlmIHRoZSBmaXJzdCBvbmUgZmFpbHMgKGRlZmF1bHQgMSA9IGVuYWJsZWQpLgorCisJdXNiY29yZS5pbml0aWFsX2Rlc2NyaXB0b3JfdGltZW91dD0KKwkJCVtVU0JdIFNwZWNpZmllcyB0aW1lb3V0IGZvciB0aGUgaW5pdGlhbCA2NC1ieXRlCisgICAgICAgICAgICAgICAgICAgICAgICBVU0JfUkVRX0dFVF9ERVNDUklQVE9SIHJlcXVlc3QgaW4gbWlsbGlzZWNvbmRzCisJCQkoZGVmYXVsdCA1MDAwID0gNS4wIHNlY29uZHMpLgorCisJdXNiaGlkLm1vdXNlcG9sbD0KKwkJCVtVU0JISURdIFRoZSBpbnRlcnZhbCB3aGljaCBtaWNlIGFyZSB0byBiZSBwb2xsZWQgYXQuCisKKwl1c2Itc3RvcmFnZS5kZWxheV91c2U9CisJCQlbVU1TXSBUaGUgZGVsYXkgaW4gc2Vjb25kcyBiZWZvcmUgYSBuZXcgZGV2aWNlIGlzCisJCQlzY2FubmVkIGZvciBMb2dpY2FsIFVuaXRzIChkZWZhdWx0IDEpLgorCisJdXNiLXN0b3JhZ2UucXVpcmtzPQorCQkJW1VNU10gQSBsaXN0IG9mIHF1aXJrcyBlbnRyaWVzIHRvIHN1cHBsZW1lbnQgb3IKKwkJCW92ZXJyaWRlIHRoZSBidWlsdC1pbiB1bnVzdWFsX2RldnMgbGlzdC4gIExpc3QKKwkJCWVudHJpZXMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMuICBFYWNoIGVudHJ5IGhhcworCQkJdGhlIGZvcm0gVklEOlBJRDpGbGFncyB3aGVyZSBWSUQgYW5kIFBJRCBhcmUgVmVuZG9yCisJCQlhbmQgUHJvZHVjdCBJRCB2YWx1ZXMgKDQtZGlnaXQgaGV4IG51bWJlcnMpIGFuZAorCQkJRmxhZ3MgaXMgYSBzZXQgb2YgY2hhcmFjdGVycywgZWFjaCBjb3JyZXNwb25kaW5nCisJCQl0byBhIGNvbW1vbiB1c2Itc3RvcmFnZSBxdWlyayBmbGFnIGFzIGZvbGxvd3M6CisJCQkJYSA9IFNBTkVfU0VOU0UgKGNvbGxlY3QgbW9yZSB0aGFuIDE4IGJ5dGVzCisJCQkJCW9mIHNlbnNlIGRhdGEpOworCQkJCWIgPSBCQURfU0VOU0UgKGRvbid0IGNvbGxlY3QgbW9yZSB0aGFuIDE4CisJCQkJCWJ5dGVzIG9mIHNlbnNlIGRhdGEpOworCQkJCWMgPSBGSVhfQ0FQQUNJVFkgKGRlY3JlYXNlIHRoZSByZXBvcnRlZAorCQkJCQlkZXZpY2UgY2FwYWNpdHkgYnkgb25lIHNlY3Rvcik7CisJCQkJZCA9IE5PX1JFQURfRElTQ19JTkZPIChkb24ndCB1c2UKKwkJCQkJUkVBRF9ESVNDX0lORk8gY29tbWFuZCk7CisJCQkJZSA9IE5PX1JFQURfQ0FQQUNJVFlfMTYgKGRvbid0IHVzZQorCQkJCQlSRUFEX0NBUEFDSVRZXzE2IGNvbW1hbmQpOworCQkJCWYgPSBOT19SRVBPUlRfT1BDT0RFUyAoZG9uJ3QgdXNlIHJlcG9ydCBvcGNvZGVzCisJCQkJCWNvbW1hbmQsIHVhcyBvbmx5KTsKKwkJCQlnID0gTUFYX1NFQ1RPUlNfMjQwIChkb24ndCB0cmFuc2ZlciBtb3JlIHRoYW4KKwkJCQkJMjQwIHNlY3RvcnMgYXQgYSB0aW1lLCB1YXMgb25seSk7CisJCQkJaCA9IENBUEFDSVRZX0hFVVJJU1RJQ1MgKGRlY3JlYXNlIHRoZQorCQkJCQlyZXBvcnRlZCBkZXZpY2UgY2FwYWNpdHkgYnkgb25lCisJCQkJCXNlY3RvciBpZiB0aGUgbnVtYmVyIGlzIG9kZCk7CisJCQkJaSA9IElHTk9SRV9ERVZJQ0UgKGRvbid0IGJpbmQgdG8gdGhpcworCQkJCQlkZXZpY2UpOworCQkJCWogPSBOT19SRVBPUlRfTFVOUyAoZG9uJ3QgdXNlIHJlcG9ydCBsdW5zCisJCQkJCWNvbW1hbmQsIHVhcyBvbmx5KTsKKwkJCQlsID0gTk9UX0xPQ0tBQkxFIChkb24ndCB0cnkgdG8gbG9jayBhbmQKKwkJCQkJdW5sb2NrIGVqZWN0YWJsZSBtZWRpYSk7CisJCQkJbSA9IE1BWF9TRUNUT1JTXzY0IChkb24ndCB0cmFuc2ZlciBtb3JlCisJCQkJCXRoYW4gNjQgc2VjdG9ycyA9IDMyIEtCIGF0IGEgdGltZSk7CisJCQkJbiA9IElOSVRJQUxfUkVBRDEwIChmb3JjZSBhIHJldHJ5IG9mIHRoZQorCQkJCQlpbml0aWFsIFJFQUQoMTApIGNvbW1hbmQpOworCQkJCW8gPSBDQVBBQ0lUWV9PSyAoYWNjZXB0IHRoZSBjYXBhY2l0eQorCQkJCQlyZXBvcnRlZCBieSB0aGUgZGV2aWNlKTsKKwkJCQlwID0gV1JJVEVfQ0FDSEUgKHRoZSBkZXZpY2UgY2FjaGUgaXMgT04KKwkJCQkJYnkgZGVmYXVsdCk7CisJCQkJciA9IElHTk9SRV9SRVNJRFVFICh0aGUgZGV2aWNlIHJlcG9ydHMKKwkJCQkJYm9ndXMgcmVzaWR1ZSB2YWx1ZXMpOworCQkJCXMgPSBTSU5HTEVfTFVOICh0aGUgZGV2aWNlIGhhcyBvbmx5IG9uZQorCQkJCQlMb2dpY2FsIFVuaXQpOworCQkJCXQgPSBOT19BVEFfMVggKGRvbid0IGFsbG93IEFUQSgxMikgYW5kIEFUQSgxNikKKwkJCQkJY29tbWFuZHMsIHVhcyBvbmx5KTsKKwkJCQl1ID0gSUdOT1JFX1VBUyAoZG9uJ3QgYmluZCB0byB0aGUgdWFzIGRyaXZlcik7CisJCQkJdyA9IE5PX1dQX0RFVEVDVCAoZG9uJ3QgdGVzdCB3aGV0aGVyIHRoZQorCQkJCQltZWRpdW0gaXMgd3JpdGUtcHJvdGVjdGVkKS4KKwkJCUV4YW1wbGU6IHF1aXJrcz0wNDE5OmFhZjU6cmwsMDQyMTowNDMzOnJjCisKKwl1c2VyX2RlYnVnPQlbS05MLEFSTV0KKwkJCUZvcm1hdDogPGludD4KKwkJCVNlZSBhcmNoL2FybS9LY29uZmlnLmRlYnVnIGhlbHAgdGV4dC4KKwkJCQkgMSAtIHVuZGVmaW5lZCBpbnN0cnVjdGlvbiBldmVudHMKKwkJCQkgMiAtIHN5c3RlbSBjYWxscworCQkJCSA0IC0gaW52YWxpZCBkYXRhIGFib3J0cworCQkJCSA4IC0gU0lHU0VHViBmYXVsdHMKKwkJCQkxNiAtIFNJR0JVUyBmYXVsdHMKKwkJCUV4YW1wbGU6IHVzZXJfZGVidWc9MzEKKworCXVzZXJwdGU9CisJCQlbWDg2XSBGbGFncyBjb250cm9sbGluZyB1c2VyIFBURSBhbGxvY2F0aW9ucy4KKworCQkJCW5vaGlnaCA9IGRvIG5vdCBhbGxvY2F0ZSBQVEUgcGFnZXMgaW4KKwkJCQkJSElHSE1FTSByZWdhcmRsZXNzIG9mIHNldHRpbmcKKwkJCQkJb2YgQ09ORklHX0hJR0hQVEUuCisKKwl2ZHNvPQkJW1g4NixTSF0KKwkJCU9uIFg4Nl8zMiwgdGhpcyBpcyBhbiBhbGlhcyBmb3IgdmRzbzMyPS4gIE90aGVyd2lzZToKKworCQkJdmRzbz0xOiBlbmFibGUgVkRTTyAodGhlIGRlZmF1bHQpCisJCQl2ZHNvPTA6IGRpc2FibGUgVkRTTyBtYXBwaW5nCisKKwl2ZHNvMzI9CQlbWDg2XSBDb250cm9sIHRoZSAzMi1iaXQgdkRTTworCQkJdmRzbzMyPTE6IGVuYWJsZSAzMi1iaXQgVkRTTworCQkJdmRzbzMyPTAgb3IgdmRzbzMyPTI6IGRpc2FibGUgMzItYml0IFZEU08KKworCQkJU2VlIHRoZSBoZWxwIHRleHQgZm9yIENPTkZJR19DT01QQVRfVkRTTyBmb3IgbW9yZQorCQkJZGV0YWlscy4gIElmIENPTkZJR19DT01QQVRfVkRTTyBpcyBzZXQsIHRoZSBkZWZhdWx0IGlzCisJCQl2ZHNvMzI9MDsgb3RoZXJ3aXNlLCB0aGUgZGVmYXVsdCBpcyB2ZHNvMzI9MS4KKworCQkJRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBrZXJuZWxzLCB2ZHNvMzI9MiBpcyBhbgorCQkJYWxpYXMgZm9yIHZkc28zMj0wLgorCisJCQlUcnkgdmRzbzMyPTAgaWYgeW91IGVuY291bnRlciBhbiBlcnJvciB0aGF0IHNheXM6CisJCQlkbF9tYWluOiBBc3NlcnRpb24gYCh2b2lkICopIHBoLT5wX3ZhZGRyID09IF9ydGxkX2xvY2FsLl9kbF9zeXNpbmZvX2RzbycgZmFpbGVkIQorCisJdmVjdG9yPQkJW0lBLTY0LFNNUF0KKwkJCXZlY3Rvcj1wZXJjcHU6IGVuYWJsZSBwZXJjcHUgdmVjdG9yIGRvbWFpbgorCisJdmlkZW89CQlbRkJdIEZyYW1lIGJ1ZmZlciBjb25maWd1cmF0aW9uCisJCQlTZWUgRG9jdW1lbnRhdGlvbi9mYi9tb2RlZGIudHh0LgorCisJdmlkZW8uYnJpZ2h0bmVzc19zd2l0Y2hfZW5hYmxlZD0gWzAsMV0KKwkJCUlmIHNldCB0byAxLCBvbiByZWNlaXZpbmcgYW4gQUNQSSBub3RpZnkgZXZlbnQKKwkJCWdlbmVyYXRlZCBieSBob3RrZXksIHZpZGVvIGRyaXZlciB3aWxsIGFkanVzdCBicmlnaHRuZXNzCisJCQlsZXZlbCBhbmQgdGhlbiBzZW5kIG91dCB0aGUgZXZlbnQgdG8gdXNlciBzcGFjZSB0aHJvdWdoCisJCQl0aGUgYWxsb2NhdGVkIGlucHV0IGRldmljZTsgSWYgc2V0IHRvIDAsIHZpZGVvIGRyaXZlcgorCQkJd2lsbCBvbmx5IHNlbmQgb3V0IHRoZSBldmVudCB3aXRob3V0IHRvdWNoaW5nIGJhY2tsaWdodAorCQkJYnJpZ2h0bmVzcyBsZXZlbC4KKwkJCWRlZmF1bHQ6IDEKKworCXZpcnRpb19tbWlvLmRldmljZT0KKwkJCVtWTU1JT10gTWVtb3J5IG1hcHBlZCB2aXJ0aW8gKHBsYXRmb3JtKSBkZXZpY2UuCisKKwkJCQk8c2l6ZT5APGJhc2VhZGRyPjo8aXJxPls6PGlkPl0KKwkJCXdoZXJlOgorCQkJCTxzaXplPiAgICAgOj0gc2l6ZSAoY2FuIHVzZSBzdGFuZGFyZCBzdWZmaXhlcworCQkJCQkJbGlrZSBLLCBNIGFuZCBHKQorCQkJCTxiYXNlYWRkcj4gOj0gcGh5c2ljYWwgYmFzZSBhZGRyZXNzCisJCQkJPGlycT4gICAgICA6PSBpbnRlcnJ1cHQgbnVtYmVyIChhcyBwYXNzZWQgdG8KKwkJCQkJCXJlcXVlc3RfaXJxKCkpCisJCQkJPGlkPiAgICAgICA6PSAob3B0aW9uYWwpIHBsYXRmb3JtIGRldmljZSBpZAorCQkJZXhhbXBsZToKKwkJCQl2aXJ0aW9fbW1pby5kZXZpY2U9MUtAMHgxMDBiMDAwMDo0ODo3CisKKwkJCUNhbiBiZSB1c2VkIG11bHRpcGxlIHRpbWVzIGZvciBtdWx0aXBsZSBkZXZpY2VzLgorCisJdmdhPQkJW0JPT1QsWDg2LTMyXSBTZWxlY3QgYSBwYXJ0aWN1bGFyIHZpZGVvIG1vZGUKKwkJCVNlZSBEb2N1bWVudGF0aW9uL3g4Ni9ib290LnR4dCBhbmQKKwkJCURvY3VtZW50YXRpb24vc3ZnYS50eHQuCisJCQlVc2UgdmdhPWFzayBmb3IgbWVudS4KKwkJCVRoaXMgaXMgYWN0dWFsbHkgYSBib290IGxvYWRlciBwYXJhbWV0ZXI7IHRoZSB2YWx1ZSBpcworCQkJcGFzc2VkIHRvIHRoZSBrZXJuZWwgdXNpbmcgYSBzcGVjaWFsIHByb3RvY29sLgorCisJdm1hbGxvYz1ubltLTUddCVtLTkwsQk9PVF0gRm9yY2VzIHRoZSB2bWFsbG9jIGFyZWEgdG8gaGF2ZSBhbiBleGFjdAorCQkJc2l6ZSBvZiA8bm4+LiBUaGlzIGNhbiBiZSB1c2VkIHRvIGluY3JlYXNlIHRoZQorCQkJbWluaW11bSBzaXplICgxMjhNQiBvbiB4ODYpLiBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvCisJCQlkZWNyZWFzZSB0aGUgc2l6ZSBhbmQgbGVhdmUgbW9yZSByb29tIGZvciBkaXJlY3RseQorCQkJbWFwcGVkIGtlcm5lbCBSQU0uCisKKwl2bWhhbHQ9CQlbS05MLFMzOTBdIFBlcmZvcm0gei9WTSBDUCBjb21tYW5kIGFmdGVyIHN5c3RlbSBoYWx0LgorCQkJRm9ybWF0OiA8Y29tbWFuZD4KKworCXZtcGFuaWM9CVtLTkwsUzM5MF0gUGVyZm9ybSB6L1ZNIENQIGNvbW1hbmQgYWZ0ZXIga2VybmVsIHBhbmljLgorCQkJRm9ybWF0OiA8Y29tbWFuZD4KKworCXZtcG9mZj0JCVtLTkwsUzM5MF0gUGVyZm9ybSB6L1ZNIENQIGNvbW1hbmQgYWZ0ZXIgcG93ZXIgb2ZmLgorCQkJRm9ybWF0OiA8Y29tbWFuZD4KKworCXZzeXNjYWxsPQlbWDg2LTY0XQorCQkJQ29udHJvbHMgdGhlIGJlaGF2aW9yIG9mIHZzeXNjYWxscyAoaS5lLiBjYWxscyB0bworCQkJZml4ZWQgYWRkcmVzc2VzIG9mIDB4ZmZmZmZmZmZmZjYwMHgwMCBmcm9tIGxlZ2FjeQorCQkJY29kZSkuICBNb3N0IHN0YXRpY2FsbHktbGlua2VkIGJpbmFyaWVzIGFuZCBvbGRlcgorCQkJdmVyc2lvbnMgb2YgZ2xpYmMgdXNlIHRoZXNlIGNhbGxzLiAgQmVjYXVzZSB0aGVzZQorCQkJZnVuY3Rpb25zIGFyZSBhdCBmaXhlZCBhZGRyZXNzZXMsIHRoZXkgbWFrZSBuaWNlCisJCQl0YXJnZXRzIGZvciBleHBsb2l0cyB0aGF0IGNhbiBjb250cm9sIFJJUC4KKworCQkJZW11bGF0ZSAgICAgW2RlZmF1bHRdIFZzeXNjYWxscyB0dXJuIGludG8gdHJhcHMgYW5kIGFyZQorCQkJICAgICAgICAgICAgZW11bGF0ZWQgcmVhc29uYWJseSBzYWZlbHkuCisKKwkJCW5hdGl2ZSAgICAgIFZzeXNjYWxscyBhcmUgbmF0aXZlIHN5c2NhbGwgaW5zdHJ1Y3Rpb25zLgorCQkJICAgICAgICAgICAgVGhpcyBpcyBhIGxpdHRsZSBiaXQgZmFzdGVyIHRoYW4gdHJhcHBpbmcKKwkJCSAgICAgICAgICAgIGFuZCBtYWtlcyBhIGZldyBkeW5hbWljIHJlY29tcGlsZXJzIHdvcmsKKwkJCSAgICAgICAgICAgIGJldHRlciB0aGFuIHRoZXkgd291bGQgaW4gZW11bGF0aW9uIG1vZGUuCisJCQkgICAgICAgICAgICBJdCBhbHNvIG1ha2VzIGV4cGxvaXRzIG11Y2ggZWFzaWVyIHRvIHdyaXRlLgorCisJCQlub25lICAgICAgICBWc3lzY2FsbHMgZG9uJ3Qgd29yayBhdCBhbGwuICBUaGlzIG1ha2VzCisJCQkgICAgICAgICAgICB0aGVtIHF1aXRlIGhhcmQgdG8gdXNlIGZvciBleHBsb2l0cyBidXQKKwkJCSAgICAgICAgICAgIG1pZ2h0IGJyZWFrIHlvdXIgc3lzdGVtLgorCisJdnQuY29sb3I9CVtWVF0gRGVmYXVsdCB0ZXh0IGNvbG9yLgorCQkJRm9ybWF0OiAweFlYLCBYID0gZm9yZWdyb3VuZCwgWSA9IGJhY2tncm91bmQuCisJCQlEZWZhdWx0OiAweDA3ID0gbGlnaHQgZ3JheSBvbiBibGFjay4KKworCXZ0LmN1cl9kZWZhdWx0PQlbVlRdIERlZmF1bHQgY3Vyc29yIHNoYXBlLgorCQkJRm9ybWF0OiAweENDQkJBQSwgd2hlcmUgQUEsIEJCLCBhbmQgQ0MgYXJlIHRoZSBzYW1lIGFzCisJCQl0aGUgcGFyYW1ldGVycyBvZiB0aGUgPEVzYz5bP0E7QjtDYyBlc2NhcGUgc2VxdWVuY2U7CisJCQlzZWUgVkdBLXNvZnRjdXJzb3IudHh0LiBEZWZhdWx0OiAyID0gdW5kZXJsaW5lLgorCisJdnQuZGVmYXVsdF9ibHU9CVtWVF0KKwkJCUZvcm1hdDogPGJsdWUwPiw8Ymx1ZTE+LDxibHVlMj4sLi4uLDxibHVlMTU+CisJCQlDaGFuZ2UgdGhlIGRlZmF1bHQgYmx1ZSBwYWxldHRlIG9mIHRoZSBjb25zb2xlLgorCQkJVGhpcyBpcyBhIDE2LW1lbWJlciBhcnJheSBjb21wb3NlZCBvZiB2YWx1ZXMKKwkJCXJhbmdpbmcgZnJvbSAwLTI1NS4KKworCXZ0LmRlZmF1bHRfZ3JuPQlbVlRdCisJCQlGb3JtYXQ6IDxncmVlbjA+LDxncmVlbjE+LDxncmVlbjI+LC4uLiw8Z3JlZW4xNT4KKwkJCUNoYW5nZSB0aGUgZGVmYXVsdCBncmVlbiBwYWxldHRlIG9mIHRoZSBjb25zb2xlLgorCQkJVGhpcyBpcyBhIDE2LW1lbWJlciBhcnJheSBjb21wb3NlZCBvZiB2YWx1ZXMKKwkJCXJhbmdpbmcgZnJvbSAwLTI1NS4KKworCXZ0LmRlZmF1bHRfcmVkPQlbVlRdCisJCQlGb3JtYXQ6IDxyZWQwPiw8cmVkMT4sPHJlZDI+LC4uLiw8cmVkMTU+CisJCQlDaGFuZ2UgdGhlIGRlZmF1bHQgcmVkIHBhbGV0dGUgb2YgdGhlIGNvbnNvbGUuCisJCQlUaGlzIGlzIGEgMTYtbWVtYmVyIGFycmF5IGNvbXBvc2VkIG9mIHZhbHVlcworCQkJcmFuZ2luZyBmcm9tIDAtMjU1LgorCisJdnQuZGVmYXVsdF91dGY4PQorCQkJW1ZUXQorCQkJRm9ybWF0PTwwfDE+CisJCQlTZXQgc3lzdGVtLXdpZGUgZGVmYXVsdCBVVEYtOCBtb2RlIGZvciBhbGwgdHR5J3MuCisJCQlEZWZhdWx0IGlzIDEsIGkuZS4gVVRGLTggbW9kZSBpcyBlbmFibGVkIGZvciBhbGwKKwkJCW5ld2x5IG9wZW5lZCB0ZXJtaW5hbHMuCisKKwl2dC5nbG9iYWxfY3Vyc29yX2RlZmF1bHQ9CisJCQlbVlRdCisJCQlGb3JtYXQ9PC0xfDB8MT4KKwkJCVNldCBzeXN0ZW0td2lkZSBkZWZhdWx0IGZvciB3aGV0aGVyIGEgY3Vyc29yCisJCQlpcyBzaG93biBvbiBuZXcgVlRzLiBEZWZhdWx0IGlzIC0xLAorCQkJaS5lLiBjdXJzb3JzIHdpbGwgYmUgY3JlYXRlZCBieSBkZWZhdWx0IHVubGVzcworCQkJb3ZlcnJpZGRlbiBieSBpbmRpdmlkdWFsIGRyaXZlcnMuIDAgd2lsbCBoaWRlCisJCQljdXJzb3JzLCAxIHdpbGwgZGlzcGxheSB0aGVtLgorCisJdnQuaXRhbGljPQlbVlRdIERlZmF1bHQgY29sb3IgZm9yIGl0YWxpYyB0ZXh0OyAwLTE1LgorCQkJRGVmYXVsdDogMiA9IGdyZWVuLgorCisJdnQudW5kZXJsaW5lPQlbVlRdIERlZmF1bHQgY29sb3IgZm9yIHVuZGVybGluZWQgdGV4dDsgMC0xNS4KKwkJCURlZmF1bHQ6IDMgPSBjeWFuLgorCisJd2F0Y2hkb2cgdGltZXJzCVtIVyxXRFRdIEZvciBpbmZvcm1hdGlvbiBvbiB3YXRjaGRvZyB0aW1lcnMsCisJCQlzZWUgRG9jdW1lbnRhdGlvbi93YXRjaGRvZy93YXRjaGRvZy1wYXJhbWV0ZXJzLnR4dAorCQkJb3Igb3RoZXIgZHJpdmVyLXNwZWNpZmljIGZpbGVzIGluIHRoZQorCQkJRG9jdW1lbnRhdGlvbi93YXRjaGRvZy8gZGlyZWN0b3J5LgorCisJd29ya3F1ZXVlLmRpc2FibGVfbnVtYQorCQkJQnkgZGVmYXVsdCwgYWxsIHdvcmsgaXRlbXMgcXVldWVkIHRvIHVuYm91bmQKKwkJCXdvcmtxdWV1ZXMgYXJlIGFmZmluZSB0byB0aGUgTlVNQSBub2RlcyB0aGV5J3JlCisJCQlpc3N1ZWQgb24sIHdoaWNoIHJlc3VsdHMgaW4gYmV0dGVyIGJlaGF2aW9yIGluCisJCQlnZW5lcmFsLiAgSWYgTlVNQSBhZmZpbml0eSBuZWVkcyB0byBiZSBkaXNhYmxlZCBmb3IKKwkJCXdoYXRldmVyIHJlYXNvbiwgdGhpcyBvcHRpb24gY2FuIGJlIHVzZWQuICBOb3RlCisJCQl0aGF0IHRoaXMgYWxzbyBjYW4gYmUgY29udHJvbGxlZCBwZXItd29ya3F1ZXVlIGZvcgorCQkJd29ya3F1ZXVlcyB2aXNpYmxlIHVuZGVyIC9zeXMvYnVzL3dvcmtxdWV1ZS8uCisKKwl3b3JrcXVldWUucG93ZXJfZWZmaWNpZW50CisJCQlQZXItY3B1IHdvcmtxdWV1ZXMgYXJlIGdlbmVyYWxseSBwcmVmZXJyZWQgYmVjYXVzZQorCQkJdGhleSBzaG93IGJldHRlciBwZXJmb3JtYW5jZSB0aGFua3MgdG8gY2FjaGUKKwkJCWxvY2FsaXR5OyB1bmZvcnR1bmF0ZWx5LCBwZXItY3B1IHdvcmtxdWV1ZXMgdGVuZCB0bworCQkJYmUgbW9yZSBwb3dlciBodW5ncnkgdGhhbiB1bmJvdW5kIHdvcmtxdWV1ZXMuCisKKwkJCUVuYWJsaW5nIHRoaXMgbWFrZXMgdGhlIHBlci1jcHUgd29ya3F1ZXVlcyB3aGljaAorCQkJd2VyZSBvYnNlcnZlZCB0byBjb250cmlidXRlIHNpZ25pZmljYW50bHkgdG8gcG93ZXIKKwkJCWNvbnN1bXB0aW9uIHVuYm91bmQsIGxlYWRpbmcgdG8gbWVhc3VyYWJseSBsb3dlcgorCQkJcG93ZXIgdXNhZ2UgYXQgdGhlIGNvc3Qgb2Ygc21hbGwgcGVyZm9ybWFuY2UKKwkJCW92ZXJoZWFkLgorCisJCQlUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGlzIHBhcmFtZXRlciBpcyBkZXRlcm1pbmVkIGJ5CisJCQl0aGUgY29uZmlnIG9wdGlvbiBDT05GSUdfV1FfUE9XRVJfRUZGSUNJRU5UX0RFRkFVTFQuCisKKwl4MmFwaWNfcGh5cwlbWDg2LTY0LEFQSUNdIFVzZSB4MmFwaWMgcGh5c2ljYWwgbW9kZSBpbnN0ZWFkIG9mCisJCQlkZWZhdWx0IHgyYXBpYyBjbHVzdGVyIG1vZGUgb24gcGxhdGZvcm1zCisJCQlzdXBwb3J0aW5nIHgyYXBpYy4KKworCXg4Nl9pbnRlbF9taWRfdGltZXI9IFtYODYtMzIsQVBCVF0KKwkJCUNob29zZSB0aW1lciBvcHRpb24gZm9yIHg4NiBJbnRlbCBNSUQgcGxhdGZvcm0uCisJCQlUd28gdmFsaWQgb3B0aW9ucyBhcmUgYXBidCB0aW1lciBvbmx5IGFuZCBsYXBpYyB0aW1lcgorCQkJcGx1cyBvbmUgYXBidCB0aW1lciBmb3IgYnJvYWRjYXN0IHRpbWVyLgorCQkJeDg2X2ludGVsX21pZF90aW1lcj1hcGJ0X29ubHkgfCBsYXBpY19hbmRfYXBidAorCisJeGVuXzUxMmdiX2xpbWl0CQlbS05MLFg4Ni02NCxYRU5dCisJCQlSZXN0cmljdHMgdGhlIGtlcm5lbCBydW5uaW5nIHBhcmF2aXJ0dWFsaXplZCB1bmRlciBYZW4KKwkJCXRvIHVzZSBvbmx5IHVwIHRvIDUxMiBHQiBvZiBSQU0uIFRoZSByZWFzb24gdG8gZG8gc28gaXMKKwkJCWNyYXNoIGFuYWx5c2lzIHRvb2xzIGFuZCBYZW4gdG9vbHMgZm9yIGRvaW5nIGRvbWFpbgorCQkJc2F2ZS9yZXN0b3JlL21pZ3JhdGlvbiBtdXN0IGJlIGVuYWJsZWQgdG8gaGFuZGxlIGxhcmdlcgorCQkJZG9tYWlucy4KKworCXhlbl9lbXVsX3VucGx1Zz0JCVtIVyxYODYsWEVOXQorCQkJVW5wbHVnIFhlbiBlbXVsYXRlZCBkZXZpY2VzCisJCQlGb3JtYXQ6IFt1bnBsdWcwLF1bdW5wbHVnMV0KKwkJCWlkZS1kaXNrcyAtLSB1bnBsdWcgcHJpbWFyeSBtYXN0ZXIgSURFIGRldmljZXMKKwkJCWF1eC1pZGUtZGlza3MgLS0gdW5wbHVnIG5vbi1wcmltYXJ5LW1hc3RlciBJREUgZGV2aWNlcworCQkJbmljcyAtLSB1bnBsdWcgbmV0d29yayBkZXZpY2VzCisJCQlhbGwgLS0gdW5wbHVnIGFsbCBlbXVsYXRlZCBkZXZpY2VzIChOSUNzIGFuZCBJREUgZGlza3MpCisJCQl1bm5lY2Vzc2FyeSAtLSB1bnBsdWdnaW5nIGVtdWxhdGVkIGRldmljZXMgaXMKKwkJCQl1bm5lY2Vzc2FyeSBldmVuIGlmIHRoZSBob3N0IGRpZCBub3QgcmVzcG9uZCB0bworCQkJCXRoZSB1bnBsdWcgcHJvdG9jb2wKKwkJCW5ldmVyIC0tIGRvIG5vdCB1bnBsdWcgZXZlbiBpZiB2ZXJzaW9uIGNoZWNrIHN1Y2NlZWRzCisKKwl4ZW5fbm9wdnNwaW4JW1g4NixYRU5dCisJCQlEaXNhYmxlcyB0aGUgdGlja2V0bG9jayBzbG93cGF0aCB1c2luZyBYZW4gUFYKKwkJCW9wdGltaXphdGlvbnMuCisKKwl4ZW5fbm9wdglbWDg2XQorCQkJRGlzYWJsZXMgdGhlIFBWIG9wdGltaXphdGlvbnMgZm9yY2luZyB0aGUgSFZNIGd1ZXN0IHRvCisJCQlydW4gYXMgZ2VuZXJpYyBIVk0gZ3Vlc3Qgd2l0aCBubyBQViBkcml2ZXJzLgorCisJeGlyYzJwc19jcz0JW05FVCxQQ01DSUFdCisJCQlGb3JtYXQ6CisJCQk8aXJxPiw8aXJxX21hc2s+LDxpbz4sPGZ1bGxfZHVwbGV4Piw8ZG9fc291bmQ+LDxsb2NrdXBfaGFjaz5bLDxpcnEyPlssPGlycTM+Wyw8aXJxND5dXV0KKworX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworCitUT0RPOgorCisJQWRkIG1vcmUgRFJNIGRyaXZlcnMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2tlcm5lbC1wZXItQ1BVLWt0aHJlYWRzLnR4dCBiL0RvY3VtZW50YXRpb24va2VybmVsLXBlci1DUFUta3RocmVhZHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0Y2JmZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2tlcm5lbC1wZXItQ1BVLWt0aHJlYWRzLnR4dApAQCAtMCwwICsxLDI3MyBAQAorUkVEVUNJTkcgT1MgSklUVEVSIERVRSBUTyBQRVItQ1BVIEtUSFJFQURTCisKK1RoaXMgZG9jdW1lbnQgbGlzdHMgcGVyLUNQVSBrdGhyZWFkcyBpbiB0aGUgTGludXgga2VybmVsIGFuZCBwcmVzZW50cworb3B0aW9ucyB0byBjb250cm9sIHRoZWlyIE9TIGppdHRlci4gIE5vdGUgdGhhdCBub24tcGVyLUNQVSBrdGhyZWFkcyBhcmUKK25vdCBsaXN0ZWQgaGVyZS4gIFRvIHJlZHVjZSBPUyBqaXR0ZXIgZnJvbSBub24tcGVyLUNQVSBrdGhyZWFkcywgYmluZAordGhlbSB0byBhICJob3VzZWtlZXBpbmciIENQVSBkZWRpY2F0ZWQgdG8gc3VjaCB3b3JrLgorCisKK1JFRkVSRU5DRVMKKworbwlEb2N1bWVudGF0aW9uL0lSUS1hZmZpbml0eS50eHQ6ICBCaW5kaW5nIGludGVycnVwdHMgdG8gc2V0cyBvZiBDUFVzLgorCitvCURvY3VtZW50YXRpb24vY2dyb3VwczogIFVzaW5nIGNncm91cHMgdG8gYmluZCB0YXNrcyB0byBzZXRzIG9mIENQVXMuCisKK28JbWFuIHRhc2tzZXQ6ICBVc2luZyB0aGUgdGFza3NldCBjb21tYW5kIHRvIGJpbmQgdGFza3MgdG8gc2V0cworCW9mIENQVXMuCisKK28JbWFuIHNjaGVkX3NldGFmZmluaXR5OiAgVXNpbmcgdGhlIHNjaGVkX3NldGFmZmluaXR5KCkgc3lzdGVtCisJY2FsbCB0byBiaW5kIHRhc2tzIHRvIHNldHMgb2YgQ1BVcy4KKworbwkvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHVOL29ubGluZTogIENvbnRyb2wgQ1BVIE4ncyBob3RwbHVnIHN0YXRlLAorCXdyaXRpbmcgIjAiIHRvIG9mZmxpbmUgYW5kICIxIiB0byBvbmxpbmUuCisKK28JSW4gb3JkZXIgdG8gbG9jYXRlIGtlcm5lbC1nZW5lcmF0ZWQgT1Mgaml0dGVyIG9uIENQVSBOOgorCisJCWNkIC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcKKwkJZWNobyAxID4gbWF4X2dyYXBoX2RlcHRoICMgSW5jcmVhc2UgdGhlICIxIiBmb3IgbW9yZSBkZXRhaWwKKwkJZWNobyBmdW5jdGlvbl9ncmFwaCA+IGN1cnJlbnRfdHJhY2VyCisJCSMgcnVuIHdvcmtsb2FkCisJCWNhdCBwZXJfY3B1L2NwdU4vdHJhY2UKKworCitLVEhSRUFEUworCitOYW1lOiBlaGNhX2NvbXAvJXUKK1B1cnBvc2U6IFBlcmlvZGljYWxseSBwcm9jZXNzIEluZmluaWJhbmQtcmVsYXRlZCB3b3JrLgorVG8gcmVkdWNlIGl0cyBPUyBqaXR0ZXIsIGRvIGFueSBvZiB0aGUgZm9sbG93aW5nOgorMS4JRG9uJ3QgdXNlIGVIQ0EgSW5maW5pYmFuZCBoYXJkd2FyZSwgaW5zdGVhZCBjaG9vc2luZyBoYXJkd2FyZQorCXRoYXQgZG9lcyBub3QgcmVxdWlyZSBwZXItQ1BVIGt0aHJlYWRzLiAgVGhpcyB3aWxsIHByZXZlbnQgdGhlc2UKKwlrdGhyZWFkcyBmcm9tIGJlaW5nIGNyZWF0ZWQgaW4gdGhlIGZpcnN0IHBsYWNlLiAgKFRoaXMgd2lsbAorCXdvcmsgZm9yIG1vc3QgcGVvcGxlLCBhcyB0aGlzIGhhcmR3YXJlLCB0aG91Z2ggaW1wb3J0YW50LCBpcworCXJlbGF0aXZlbHkgb2xkIGFuZCBpcyBwcm9kdWNlZCBpbiByZWxhdGl2ZWx5IGxvdyB1bml0IHZvbHVtZXMuKQorMi4JRG8gYWxsIGVIQ0EtSW5maW5pYmFuZC1yZWxhdGVkIHdvcmsgb24gb3RoZXIgQ1BVcywgaW5jbHVkaW5nCisJaW50ZXJydXB0cy4KKzMuCVJld29yayB0aGUgZUhDQSBkcml2ZXIgc28gdGhhdCBpdHMgcGVyLUNQVSBrdGhyZWFkcyBhcmUKKwlwcm92aXNpb25lZCBvbmx5IG9uIHNlbGVjdGVkIENQVXMuCisKKworTmFtZTogaXJxLyVkLSVzCitQdXJwb3NlOiBIYW5kbGUgdGhyZWFkZWQgaW50ZXJydXB0cy4KK1RvIHJlZHVjZSBpdHMgT1Mgaml0dGVyLCBkbyB0aGUgZm9sbG93aW5nOgorMS4JVXNlIGlycSBhZmZpbml0eSB0byBmb3JjZSB0aGUgaXJxIHRocmVhZHMgdG8gZXhlY3V0ZSBvbgorCXNvbWUgb3RoZXIgQ1BVLgorCitOYW1lOiBrY210cGRfY3RyXyVkCitQdXJwb3NlOiBIYW5kbGUgQmx1ZXRvb3RoIHdvcmsuCitUbyByZWR1Y2UgaXRzIE9TIGppdHRlciwgZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CisxLglEb24ndCB1c2UgQmx1ZXRvb3RoLCBpbiB3aGljaCBjYXNlIHRoZXNlIGt0aHJlYWRzIHdvbid0IGJlCisJY3JlYXRlZCBpbiB0aGUgZmlyc3QgcGxhY2UuCisyLglVc2UgaXJxIGFmZmluaXR5IHRvIGZvcmNlIEJsdWV0b290aC1yZWxhdGVkIGludGVycnVwdHMgdG8KKwlvY2N1ciBvbiBzb21lIG90aGVyIENQVSBhbmQgZnVydGhlcm1vcmUgaW5pdGlhdGUgYWxsCisJQmx1ZXRvb3RoIGFjdGl2aXR5IG9uIHNvbWUgb3RoZXIgQ1BVLgorCitOYW1lOiBrc29mdGlycWQvJXUKK1B1cnBvc2U6IEV4ZWN1dGUgc29mdGlycSBoYW5kbGVycyB3aGVuIHRocmVhZGVkIG9yIHdoZW4gdW5kZXIgaGVhdnkgbG9hZC4KK1RvIHJlZHVjZSBpdHMgT1Mgaml0dGVyLCBlYWNoIHNvZnRpcnEgdmVjdG9yIG11c3QgYmUgaGFuZGxlZAorc2VwYXJhdGVseSBhcyBmb2xsb3dzOgorVElNRVJfU09GVElSUTogIERvIGFsbCBvZiB0aGUgZm9sbG93aW5nOgorMS4JVG8gdGhlIGV4dGVudCBwb3NzaWJsZSwga2VlcCB0aGUgQ1BVIG91dCBvZiB0aGUga2VybmVsIHdoZW4gaXQKKwlpcyBub24taWRsZSwgZm9yIGV4YW1wbGUsIGJ5IGF2b2lkaW5nIHN5c3RlbSBjYWxscyBhbmQgYnkgZm9yY2luZworCWJvdGgga2VybmVsIHRocmVhZHMgYW5kIGludGVycnVwdHMgdG8gZXhlY3V0ZSBlbHNld2hlcmUuCisyLglCdWlsZCB3aXRoIENPTkZJR19IT1RQTFVHX0NQVT15LiAgQWZ0ZXIgYm9vdCBjb21wbGV0ZXMsIGZvcmNlCisJdGhlIENQVSBvZmZsaW5lLCB0aGVuIGJyaW5nIGl0IGJhY2sgb25saW5lLiAgVGhpcyBmb3JjZXMKKwlyZWN1cnJpbmcgdGltZXJzIHRvIG1pZ3JhdGUgZWxzZXdoZXJlLglJZiB5b3UgYXJlIGNvbmNlcm5lZAorCXdpdGggbXVsdGlwbGUgQ1BVcywgZm9yY2UgdGhlbSBhbGwgb2ZmbGluZSBiZWZvcmUgYnJpbmdpbmcgdGhlCisJZmlyc3Qgb25lIGJhY2sgb25saW5lLiAgT25jZSB5b3UgaGF2ZSBvbmxpbmVkIHRoZSBDUFVzIGluIHF1ZXN0aW9uLAorCWRvIG5vdCBvZmZsaW5lIGFueSBvdGhlciBDUFVzLCBiZWNhdXNlIGRvaW5nIHNvIGNvdWxkIGZvcmNlIHRoZQorCXRpbWVyIGJhY2sgb250byBvbmUgb2YgdGhlIENQVXMgaW4gcXVlc3Rpb24uCitORVRfVFhfU09GVElSUSBhbmQgTkVUX1JYX1NPRlRJUlE6ICBEbyBhbGwgb2YgdGhlIGZvbGxvd2luZzoKKzEuCUZvcmNlIG5ldHdvcmtpbmcgaW50ZXJydXB0cyBvbnRvIG90aGVyIENQVXMuCisyLglJbml0aWF0ZSBhbnkgbmV0d29yayBJL08gb24gb3RoZXIgQ1BVcy4KKzMuCU9uY2UgeW91ciBhcHBsaWNhdGlvbiBoYXMgc3RhcnRlZCwgcHJldmVudCBDUFUtaG90cGx1ZyBvcGVyYXRpb25zCisJZnJvbSBiZWluZyBpbml0aWF0ZWQgZnJvbSB0YXNrcyB0aGF0IG1pZ2h0IHJ1biBvbiB0aGUgQ1BVIHRvCisJYmUgZGUtaml0dGVyZWQuICAoSXQgaXMgT0sgdG8gZm9yY2UgdGhpcyBDUFUgb2ZmbGluZSBhbmQgdGhlbgorCWJyaW5nIGl0IGJhY2sgb25saW5lIGJlZm9yZSB5b3Ugc3RhcnQgeW91ciBhcHBsaWNhdGlvbi4pCitCTE9DS19TT0ZUSVJROiAgRG8gYWxsIG9mIHRoZSBmb2xsb3dpbmc6CisxLglGb3JjZSBibG9jay1kZXZpY2UgaW50ZXJydXB0cyBvbnRvIHNvbWUgb3RoZXIgQ1BVLgorMi4JSW5pdGlhdGUgYW55IGJsb2NrIEkvTyBvbiBvdGhlciBDUFVzLgorMy4JT25jZSB5b3VyIGFwcGxpY2F0aW9uIGhhcyBzdGFydGVkLCBwcmV2ZW50IENQVS1ob3RwbHVnIG9wZXJhdGlvbnMKKwlmcm9tIGJlaW5nIGluaXRpYXRlZCBmcm9tIHRhc2tzIHRoYXQgbWlnaHQgcnVuIG9uIHRoZSBDUFUgdG8KKwliZSBkZS1qaXR0ZXJlZC4gIChJdCBpcyBPSyB0byBmb3JjZSB0aGlzIENQVSBvZmZsaW5lIGFuZCB0aGVuCisJYnJpbmcgaXQgYmFjayBvbmxpbmUgYmVmb3JlIHlvdSBzdGFydCB5b3VyIGFwcGxpY2F0aW9uLikKK0JMT0NLX0lPUE9MTF9TT0ZUSVJROiAgRG8gYWxsIG9mIHRoZSBmb2xsb3dpbmc6CisxLglGb3JjZSBibG9jay1kZXZpY2UgaW50ZXJydXB0cyBvbnRvIHNvbWUgb3RoZXIgQ1BVLgorMi4JSW5pdGlhdGUgYW55IGJsb2NrIEkvTyBhbmQgYmxvY2stSS9PIHBvbGxpbmcgb24gb3RoZXIgQ1BVcy4KKzMuCU9uY2UgeW91ciBhcHBsaWNhdGlvbiBoYXMgc3RhcnRlZCwgcHJldmVudCBDUFUtaG90cGx1ZyBvcGVyYXRpb25zCisJZnJvbSBiZWluZyBpbml0aWF0ZWQgZnJvbSB0YXNrcyB0aGF0IG1pZ2h0IHJ1biBvbiB0aGUgQ1BVIHRvCisJYmUgZGUtaml0dGVyZWQuICAoSXQgaXMgT0sgdG8gZm9yY2UgdGhpcyBDUFUgb2ZmbGluZSBhbmQgdGhlbgorCWJyaW5nIGl0IGJhY2sgb25saW5lIGJlZm9yZSB5b3Ugc3RhcnQgeW91ciBhcHBsaWNhdGlvbi4pCitUQVNLTEVUX1NPRlRJUlE6IERvIG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmc6CisxLglBdm9pZCB1c2Ugb2YgZHJpdmVycyB0aGF0IHVzZSB0YXNrbGV0cy4gIChTdWNoIGRyaXZlcnMgd2lsbCBjb250YWluCisJY2FsbHMgdG8gdGhpbmdzIGxpa2UgdGFza2xldF9zY2hlZHVsZSgpLikKKzIuCUNvbnZlcnQgYWxsIGRyaXZlcnMgdGhhdCB5b3UgbXVzdCB1c2UgZnJvbSB0YXNrbGV0cyB0byB3b3JrcXVldWVzLgorMy4JRm9yY2UgaW50ZXJydXB0cyBmb3IgZHJpdmVycyB1c2luZyB0YXNrbGV0cyBvbnRvIG90aGVyIENQVXMsCisJYW5kIGFsc28gZG8gSS9PIGludm9sdmluZyB0aGVzZSBkcml2ZXJzIG9uIG90aGVyIENQVXMuCitTQ0hFRF9TT0ZUSVJROiBEbyBhbGwgb2YgdGhlIGZvbGxvd2luZzoKKzEuCUF2b2lkIHNlbmRpbmcgc2NoZWR1bGVyIElQSXMgdG8gdGhlIENQVSB0byBiZSBkZS1qaXR0ZXJlZCwKKwlmb3IgZXhhbXBsZSwgZW5zdXJlIHRoYXQgYXQgbW9zdCBvbmUgcnVubmFibGUga3RocmVhZCBpcyBwcmVzZW50CisJb24gdGhhdCBDUFUuICBJZiBhIHRocmVhZCB0aGF0IGV4cGVjdHMgdG8gcnVuIG9uIHRoZSBkZS1qaXR0ZXJlZAorCUNQVSBhd2FrZW5zLCB0aGUgc2NoZWR1bGVyIHdpbGwgc2VuZCBhbiBJUEkgdGhhdCBjYW4gcmVzdWx0IGluCisJYSBzdWJzZXF1ZW50IFNDSEVEX1NPRlRJUlEuCisyLglCdWlsZCB3aXRoIENPTkZJR19SQ1VfTk9DQl9DUFU9eSwgQ09ORklHX1JDVV9OT0NCX0NQVV9BTEw9eSwKKwlDT05GSUdfTk9fSFpfRlVMTD15LCBhbmQsIGluIGFkZGl0aW9uLCBlbnN1cmUgdGhhdCB0aGUgQ1BVCisJdG8gYmUgZGUtaml0dGVyZWQgaXMgbWFya2VkIGFzIGFuIGFkYXB0aXZlLXRpY2tzIENQVSB1c2luZyB0aGUKKwkibm9oel9mdWxsPSIgYm9vdCBwYXJhbWV0ZXIuICBUaGlzIHJlZHVjZXMgdGhlIG51bWJlciBvZgorCXNjaGVkdWxlci1jbG9jayBpbnRlcnJ1cHRzIHRoYXQgdGhlIGRlLWppdHRlcmVkIENQVSByZWNlaXZlcywKKwltaW5pbWl6aW5nIGl0cyBjaGFuY2VzIG9mIGJlaW5nIHNlbGVjdGVkIHRvIGRvIHRoZSBsb2FkIGJhbGFuY2luZworCXdvcmsgdGhhdCBydW5zIGluIFNDSEVEX1NPRlRJUlEgY29udGV4dC4KKzMuCVRvIHRoZSBleHRlbnQgcG9zc2libGUsIGtlZXAgdGhlIENQVSBvdXQgb2YgdGhlIGtlcm5lbCB3aGVuIGl0CisJaXMgbm9uLWlkbGUsIGZvciBleGFtcGxlLCBieSBhdm9pZGluZyBzeXN0ZW0gY2FsbHMgYW5kIGJ5CisJZm9yY2luZyBib3RoIGtlcm5lbCB0aHJlYWRzIGFuZCBpbnRlcnJ1cHRzIHRvIGV4ZWN1dGUgZWxzZXdoZXJlLgorCVRoaXMgZnVydGhlciByZWR1Y2VzIHRoZSBudW1iZXIgb2Ygc2NoZWR1bGVyLWNsb2NrIGludGVycnVwdHMKKwlyZWNlaXZlZCBieSB0aGUgZGUtaml0dGVyZWQgQ1BVLgorSFJUSU1FUl9TT0ZUSVJROiAgRG8gYWxsIG9mIHRoZSBmb2xsb3dpbmc6CisxLglUbyB0aGUgZXh0ZW50IHBvc3NpYmxlLCBrZWVwIHRoZSBDUFUgb3V0IG9mIHRoZSBrZXJuZWwgd2hlbiBpdAorCWlzIG5vbi1pZGxlLiAgRm9yIGV4YW1wbGUsIGF2b2lkIHN5c3RlbSBjYWxscyBhbmQgZm9yY2UgYm90aAorCWtlcm5lbCB0aHJlYWRzIGFuZCBpbnRlcnJ1cHRzIHRvIGV4ZWN1dGUgZWxzZXdoZXJlLgorMi4JQnVpbGQgd2l0aCBDT05GSUdfSE9UUExVR19DUFU9eS4gIE9uY2UgYm9vdCBjb21wbGV0ZXMsIGZvcmNlIHRoZQorCUNQVSBvZmZsaW5lLCB0aGVuIGJyaW5nIGl0IGJhY2sgb25saW5lLiAgVGhpcyBmb3JjZXMgcmVjdXJyaW5nCisJdGltZXJzIHRvIG1pZ3JhdGUgZWxzZXdoZXJlLiAgSWYgeW91IGFyZSBjb25jZXJuZWQgd2l0aCBtdWx0aXBsZQorCUNQVXMsIGZvcmNlIHRoZW0gYWxsIG9mZmxpbmUgYmVmb3JlIGJyaW5naW5nIHRoZSBmaXJzdCBvbmUKKwliYWNrIG9ubGluZS4gIE9uY2UgeW91IGhhdmUgb25saW5lZCB0aGUgQ1BVcyBpbiBxdWVzdGlvbiwgZG8gbm90CisJb2ZmbGluZSBhbnkgb3RoZXIgQ1BVcywgYmVjYXVzZSBkb2luZyBzbyBjb3VsZCBmb3JjZSB0aGUgdGltZXIKKwliYWNrIG9udG8gb25lIG9mIHRoZSBDUFVzIGluIHF1ZXN0aW9uLgorUkNVX1NPRlRJUlE6ICBEbyBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKzEuCU9mZmxvYWQgY2FsbGJhY2tzIGFuZCBrZWVwIHRoZSBDUFUgaW4gZWl0aGVyIGR5bnRpY2staWRsZSBvcgorCWFkYXB0aXZlLXRpY2tzIHN0YXRlIGJ5IGRvaW5nIGFsbCBvZiB0aGUgZm9sbG93aW5nOgorCWEuCUJ1aWxkIHdpdGggQ09ORklHX1JDVV9OT0NCX0NQVT15LCBDT05GSUdfUkNVX05PQ0JfQ1BVX0FMTD15LAorCQlDT05GSUdfTk9fSFpfRlVMTD15LCBhbmQsIGluIGFkZGl0aW9uIGVuc3VyZSB0aGF0IHRoZSBDUFUKKwkJdG8gYmUgZGUtaml0dGVyZWQgaXMgbWFya2VkIGFzIGFuIGFkYXB0aXZlLXRpY2tzIENQVSB1c2luZworCQl0aGUgIm5vaHpfZnVsbD0iIGJvb3QgcGFyYW1ldGVyLiAgQmluZCB0aGUgcmN1byBrdGhyZWFkcworCQl0byBob3VzZWtlZXBpbmcgQ1BVcywgd2hpY2ggY2FuIHRvbGVyYXRlIE9TIGppdHRlci4KKwliLglUbyB0aGUgZXh0ZW50IHBvc3NpYmxlLCBrZWVwIHRoZSBDUFUgb3V0IG9mIHRoZSBrZXJuZWwKKwkJd2hlbiBpdCBpcyBub24taWRsZSwgZm9yIGV4YW1wbGUsIGJ5IGF2b2lkaW5nIHN5c3RlbQorCQljYWxscyBhbmQgYnkgZm9yY2luZyBib3RoIGtlcm5lbCB0aHJlYWRzIGFuZCBpbnRlcnJ1cHRzCisJCXRvIGV4ZWN1dGUgZWxzZXdoZXJlLgorMi4JRW5hYmxlIFJDVSB0byBkbyBpdHMgcHJvY2Vzc2luZyByZW1vdGVseSB2aWEgZHludGljay1pZGxlIGJ5CisJZG9pbmcgYWxsIG9mIHRoZSBmb2xsb3dpbmc6CisJYS4JQnVpbGQgd2l0aCBDT05GSUdfTk9fSFo9eSBhbmQgQ09ORklHX1JDVV9GQVNUX05PX0haPXkuCisJYi4JRW5zdXJlIHRoYXQgdGhlIENQVSBnb2VzIGlkbGUgZnJlcXVlbnRseSwgYWxsb3dpbmcgb3RoZXIKKwkJQ1BVcyB0byBkZXRlY3QgdGhhdCBpdCBoYXMgcGFzc2VkIHRocm91Z2ggYW4gUkNVIHF1aWVzY2VudAorCQlzdGF0ZS4JSWYgdGhlIGtlcm5lbCBpcyBidWlsdCB3aXRoIENPTkZJR19OT19IWl9GVUxMPXksCisJCXVzZXJzcGFjZSBleGVjdXRpb24gYWxzbyBhbGxvd3Mgb3RoZXIgQ1BVcyB0byBkZXRlY3QgdGhhdAorCQl0aGUgQ1BVIGluIHF1ZXN0aW9uIGhhcyBwYXNzZWQgdGhyb3VnaCBhIHF1aWVzY2VudCBzdGF0ZS4KKwljLglUbyB0aGUgZXh0ZW50IHBvc3NpYmxlLCBrZWVwIHRoZSBDUFUgb3V0IG9mIHRoZSBrZXJuZWwKKwkJd2hlbiBpdCBpcyBub24taWRsZSwgZm9yIGV4YW1wbGUsIGJ5IGF2b2lkaW5nIHN5c3RlbQorCQljYWxscyBhbmQgYnkgZm9yY2luZyBib3RoIGtlcm5lbCB0aHJlYWRzIGFuZCBpbnRlcnJ1cHRzCisJCXRvIGV4ZWN1dGUgZWxzZXdoZXJlLgorCitOYW1lOiBrd29ya2VyLyV1OiVkJXMgKGNwdSwgaWQsIHByaW9yaXR5KQorUHVycG9zZTogRXhlY3V0ZSB3b3JrcXVldWUgcmVxdWVzdHMKK1RvIHJlZHVjZSBpdHMgT1Mgaml0dGVyLCBkbyBhbnkgb2YgdGhlIGZvbGxvd2luZzoKKzEuCVJ1biB5b3VyIHdvcmtsb2FkIGF0IGEgcmVhbC10aW1lIHByaW9yaXR5LCB3aGljaCB3aWxsIGFsbG93CisJcHJlZW1wdGluZyB0aGUga3dvcmtlciBkYWVtb25zLgorMi4JQSBnaXZlbiB3b3JrcXVldWUgY2FuIGJlIG1hZGUgdmlzaWJsZSBpbiB0aGUgc3lzZnMgZmlsZXN5c3RlbQorCWJ5IHBhc3NpbmcgdGhlIFdRX1NZU0ZTIHRvIHRoYXQgd29ya3F1ZXVlJ3MgYWxsb2Nfd29ya3F1ZXVlKCkuCisJU3VjaCBhIHdvcmtxdWV1ZSBjYW4gYmUgY29uZmluZWQgdG8gYSBnaXZlbiBzdWJzZXQgb2YgdGhlCisJQ1BVcyB1c2luZyB0aGUgL3N5cy9kZXZpY2VzL3ZpcnR1YWwvd29ya3F1ZXVlLyovY3B1bWFzayBzeXNmcworCWZpbGVzLglUaGUgc2V0IG9mIFdRX1NZU0ZTIHdvcmtxdWV1ZXMgY2FuIGJlIGRpc3BsYXllZCB1c2luZworCSJscyBzeXMvZGV2aWNlcy92aXJ0dWFsL3dvcmtxdWV1ZSIuICBUaGF0IHNhaWQsIHRoZSB3b3JrcXVldWVzCisJbWFpbnRhaW5lciB3b3VsZCBsaWtlIHRvIGNhdXRpb24gcGVvcGxlIGFnYWluc3QgaW5kaXNjcmltaW5hdGVseQorCXNwcmlua2xpbmcgV1FfU1lTRlMgYWNyb3NzIGFsbCB0aGUgd29ya3F1ZXVlcy4JVGhlIHJlYXNvbiBmb3IKKwljYXV0aW9uIGlzIHRoYXQgaXQgaXMgZWFzeSB0byBhZGQgV1FfU1lTRlMsIGJ1dCBiZWNhdXNlIHN5c2ZzIGlzCisJcGFydCBvZiB0aGUgZm9ybWFsIHVzZXIva2VybmVsIEFQSSwgaXQgY2FuIGJlIG5lYXJseSBpbXBvc3NpYmxlCisJdG8gcmVtb3ZlIGl0LCBldmVuIGlmIGl0cyBhZGRpdGlvbiB3YXMgYSBtaXN0YWtlLgorMy4JRG8gYW55IG9mIHRoZSBmb2xsb3dpbmcgbmVlZGVkIHRvIGF2b2lkIGppdHRlciB0aGF0IHlvdXIKKwlhcHBsaWNhdGlvbiBjYW5ub3QgdG9sZXJhdGU6CisJYS4JQnVpbGQgeW91ciBrZXJuZWwgd2l0aCBDT05GSUdfU0xVQj15IHJhdGhlciB0aGFuCisJCUNPTkZJR19TTEFCPXksIHRodXMgYXZvaWRpbmcgdGhlIHNsYWIgYWxsb2NhdG9yJ3MgcGVyaW9kaWMKKwkJdXNlIG9mIGVhY2ggQ1BVJ3Mgd29ya3F1ZXVlcyB0byBydW4gaXRzIGNhY2hlX3JlYXAoKQorCQlmdW5jdGlvbi4KKwliLglBdm9pZCB1c2luZyBvcHJvZmlsZSwgdGh1cyBhdm9pZGluZyBPUyBqaXR0ZXIgZnJvbQorCQl3cV9zeW5jX2J1ZmZlcigpLgorCWMuCUxpbWl0IHlvdXIgQ1BVIGZyZXF1ZW5jeSBzbyB0aGF0IGEgQ1BVLWZyZXF1ZW5jeQorCQlnb3Zlcm5vciBpcyBub3QgcmVxdWlyZWQsIHBvc3NpYmx5IGVubGlzdGluZyB0aGUgYWlkIG9mCisJCXNwZWNpYWwgaGVhdHNpbmtzIG9yIG90aGVyIGNvb2xpbmcgdGVjaG5vbG9naWVzLiAgSWYgZG9uZQorCQljb3JyZWN0bHksIGFuZCBpZiB5b3UgQ1BVIGFyY2hpdGVjdHVyZSBwZXJtaXRzLCB5b3Ugc2hvdWxkCisJCWJlIGFibGUgdG8gYnVpbGQgeW91ciBrZXJuZWwgd2l0aCBDT05GSUdfQ1BVX0ZSRVE9biB0bworCQlhdm9pZCB0aGUgQ1BVLWZyZXF1ZW5jeSBnb3Zlcm5vciBwZXJpb2RpY2FsbHkgcnVubmluZworCQlvbiBlYWNoIENQVSwgaW5jbHVkaW5nIGNzX2Ric190aW1lcigpIGFuZCBvZF9kYnNfdGltZXIoKS4KKwkJV0FSTklORzogIFBsZWFzZSBjaGVjayB5b3VyIENQVSBzcGVjaWZpY2F0aW9ucyB0bworCQltYWtlIHN1cmUgdGhhdCB0aGlzIGlzIHNhZmUgb24geW91ciBwYXJ0aWN1bGFyIHN5c3RlbS4KKwlkLglBcyBvZiB2My4xOCwgQ2hyaXN0b3BoIExhbWV0ZXIncyBvbi1kZW1hbmQgdm1zdGF0IHdvcmtlcnMKKwkJY29tbWl0IHByZXZlbnRzIE9TIGppdHRlciBkdWUgdG8gdm1zdGF0X3VwZGF0ZSgpIG9uCisJCUNPTkZJR19TTVA9eSBzeXN0ZW1zLiAgQmVmb3JlIHYzLjE4LCBpcyBub3QgcG9zc2libGUKKwkJdG8gZW50aXJlbHkgZ2V0IHJpZCBvZiB0aGUgT1Mgaml0dGVyLCBidXQgeW91IGNhbgorCQlkZWNyZWFzZSBpdHMgZnJlcXVlbmN5IGJ5IHdyaXRpbmcgYSBsYXJnZSB2YWx1ZSB0bworCQkvcHJvYy9zeXMvdm0vc3RhdF9pbnRlcnZhbC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIEhaLAorCQlmb3IgYW4gaW50ZXJ2YWwgb2Ygb25lIHNlY29uZC4JT2YgY291cnNlLCBsYXJnZXIgdmFsdWVzCisJCXdpbGwgbWFrZSB5b3VyIHZpcnR1YWwtbWVtb3J5IHN0YXRpc3RpY3MgdXBkYXRlIG1vcmUKKwkJc2xvd2x5LiAgT2YgY291cnNlLCB5b3UgY2FuIGFsc28gcnVuIHlvdXIgd29ya2xvYWQgYXQKKwkJYSByZWFsLXRpbWUgcHJpb3JpdHksIHRodXMgcHJlZW1wdGluZyB2bXN0YXRfdXBkYXRlKCksCisJCWJ1dCBpZiB5b3VyIHdvcmtsb2FkIGlzIENQVS1ib3VuZCwgdGhpcyBpcyBhIGJhZCBpZGVhLgorCQlIb3dldmVyLCB0aGVyZSBpcyBhbiBSRkMgcGF0Y2ggZnJvbSBDaHJpc3RvcGggTGFtZXRlcgorCQkoYmFzZWQgb24gYW4gZWFybGllciBvbmUgZnJvbSBHaWxhZCBCZW4tWW9zc2VmKSB0aGF0CisJCXJlZHVjZXMgb3IgZXZlbiBlbGltaW5hdGVzIHZtc3RhdCBvdmVyaGVhZCBmb3Igc29tZQorCQl3b3JrbG9hZHMgYXQgaHR0cHM6Ly9sa21sLm9yZy9sa21sLzIwMTMvOS80LzM3OS4KKwllLglCb290IHdpdGggImVsZXZhdG9yPW5vb3AiIHRvIGF2b2lkIHdvcmtxdWV1ZSB1c2UgYnkKKwkJdGhlIGJsb2NrIGxheWVyLgorCWYuCUlmIHJ1bm5pbmcgb24gaGlnaC1lbmQgcG93ZXJwYyBzZXJ2ZXJzLCBidWlsZCB3aXRoCisJCUNPTkZJR19QUENfUlRBU19EQUVNT049bi4gIFRoaXMgcHJldmVudHMgdGhlIFJUQVMKKwkJZGFlbW9uIGZyb20gcnVubmluZyBvbiBlYWNoIENQVSBldmVyeSBzZWNvbmQgb3Igc28uCisJCShUaGlzIHdpbGwgcmVxdWlyZSBlZGl0aW5nIEtjb25maWcgZmlsZXMgYW5kIHdpbGwgZGVmZWF0CisJCXRoaXMgcGxhdGZvcm0ncyBSQVMgZnVuY3Rpb25hbGl0eS4pICBUaGlzIGF2b2lkcyBqaXR0ZXIKKwkJZHVlIHRvIHRoZSBydGFzX2V2ZW50X3NjYW4oKSBmdW5jdGlvbi4KKwkJV0FSTklORzogIFBsZWFzZSBjaGVjayB5b3VyIENQVSBzcGVjaWZpY2F0aW9ucyB0bworCQltYWtlIHN1cmUgdGhhdCB0aGlzIGlzIHNhZmUgb24geW91ciBwYXJ0aWN1bGFyIHN5c3RlbS4KKwlnLglJZiBydW5uaW5nIG9uIENlbGwgUHJvY2Vzc29yLCBidWlsZCB5b3VyIGtlcm5lbCB3aXRoCisJCUNCRV9DUFVGUkVRX1NQVV9HT1ZFUk5PUj1uIHRvIGF2b2lkIE9TIGppdHRlciBmcm9tCisJCXNwdV9nb3Zfd29yaygpLgorCQlXQVJOSU5HOiAgUGxlYXNlIGNoZWNrIHlvdXIgQ1BVIHNwZWNpZmljYXRpb25zIHRvCisJCW1ha2Ugc3VyZSB0aGF0IHRoaXMgaXMgc2FmZSBvbiB5b3VyIHBhcnRpY3VsYXIgc3lzdGVtLgorCWguCUlmIHJ1bm5pbmcgb24gUG93ZXJNQUMsIGJ1aWxkIHlvdXIga2VybmVsIHdpdGgKKwkJQ09ORklHX1BNQUNfUkFDS01FVEVSPW4gdG8gZGlzYWJsZSB0aGUgQ1BVLW1ldGVyLAorCQlhdm9pZGluZyBPUyBqaXR0ZXIgZnJvbSByYWNrbWV0ZXJfZG9fdGltZXIoKS4KKworTmFtZTogcmN1Yy8ldQorUHVycG9zZTogRXhlY3V0ZSBSQ1UgY2FsbGJhY2tzIGluIENPTkZJR19SQ1VfQk9PU1Q9eSBrZXJuZWxzLgorVG8gcmVkdWNlIGl0cyBPUyBqaXR0ZXIsIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOgorMS4JQnVpbGQgdGhlIGtlcm5lbCB3aXRoIENPTkZJR19QUkVFTVBUPW4uICBUaGlzIHByZXZlbnRzIHRoZXNlCisJa3RocmVhZHMgZnJvbSBiZWluZyBjcmVhdGVkIGluIHRoZSBmaXJzdCBwbGFjZSwgYW5kIGFsc28gb2J2aWF0ZXMKKwl0aGUgbmVlZCBmb3IgUkNVIHByaW9yaXR5IGJvb3N0aW5nLiAgVGhpcyBhcHByb2FjaCBpcyBmZWFzaWJsZQorCWZvciB3b3JrbG9hZHMgdGhhdCBkbyBub3QgcmVxdWlyZSBoaWdoIGRlZ3JlZXMgb2YgcmVzcG9uc2l2ZW5lc3MuCisyLglCdWlsZCB0aGUga2VybmVsIHdpdGggQ09ORklHX1JDVV9CT09TVD1uLiAgVGhpcyBwcmV2ZW50cyB0aGVzZQorCWt0aHJlYWRzIGZyb20gYmVpbmcgY3JlYXRlZCBpbiB0aGUgZmlyc3QgcGxhY2UuICBUaGlzIGFwcHJvYWNoCisJaXMgZmVhc2libGUgb25seSBpZiB5b3VyIHdvcmtsb2FkIG5ldmVyIHJlcXVpcmVzIFJDVSBwcmlvcml0eQorCWJvb3N0aW5nLCBmb3IgZXhhbXBsZSwgaWYgeW91IGVuc3VyZSBmcmVxdWVudCBpZGxlIHRpbWUgb24gYWxsCisJQ1BVcyB0aGF0IG1pZ2h0IGV4ZWN1dGUgd2l0aGluIHRoZSBrZXJuZWwuCiszLglCdWlsZCB3aXRoIENPTkZJR19SQ1VfTk9DQl9DUFU9eSBhbmQgQ09ORklHX1JDVV9OT0NCX0NQVV9BTEw9eSwKKwl3aGljaCBvZmZsb2FkcyBhbGwgUkNVIGNhbGxiYWNrcyB0byBrdGhyZWFkcyB0aGF0IGNhbiBiZSBtb3ZlZAorCW9mZiBvZiBDUFVzIHN1c2NlcHRpYmxlIHRvIE9TIGppdHRlci4gIFRoaXMgYXBwcm9hY2ggcHJldmVudHMgdGhlCisJcmN1Yy8ldSBrdGhyZWFkcyBmcm9tIGhhdmluZyBhbnkgd29yayB0byBkbywgc28gdGhhdCB0aGV5IGFyZQorCW5ldmVyIGF3YWtlbmVkLgorNC4JRW5zdXJlIHRoYXQgdGhlIENQVSBuZXZlciBlbnRlcnMgdGhlIGtlcm5lbCwgYW5kLCBpbiBwYXJ0aWN1bGFyLAorCWF2b2lkIGluaXRpYXRpbmcgYW55IENQVSBob3RwbHVnIG9wZXJhdGlvbnMgb24gdGhpcyBDUFUuICBUaGlzIGlzCisJYW5vdGhlciB3YXkgb2YgcHJldmVudGluZyBhbnkgY2FsbGJhY2tzIGZyb20gYmVpbmcgcXVldWVkIG9uIHRoZQorCUNQVSwgYWdhaW4gcHJldmVudGluZyB0aGUgcmN1Yy8ldSBrdGhyZWFkcyBmcm9tIGhhdmluZyBhbnkgd29yaworCXRvIGRvLgorCitOYW1lOiByY3VvYi8lZCwgcmN1b3AvJWQsIGFuZCByY3Vvcy8lZAorUHVycG9zZTogT2ZmbG9hZCBSQ1UgY2FsbGJhY2tzIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgQ1BVLgorVG8gcmVkdWNlIGl0cyBPUyBqaXR0ZXIsIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOgorMS4JVXNlIGFmZmluaXR5LCBjZ3JvdXBzLCBvciBvdGhlciBtZWNoYW5pc20gdG8gZm9yY2UgdGhlc2Uga3RocmVhZHMKKwl0byBleGVjdXRlIG9uIHNvbWUgb3RoZXIgQ1BVLgorMi4JQnVpbGQgd2l0aCBDT05GSUdfUkNVX05PQ0JfQ1BVPW4sIHdoaWNoIHdpbGwgcHJldmVudCB0aGVzZQorCWt0aHJlYWRzIGZyb20gYmVpbmcgY3JlYXRlZCBpbiB0aGUgZmlyc3QgcGxhY2UuICBIb3dldmVyLCBwbGVhc2UKKwlub3RlIHRoYXQgdGhpcyB3aWxsIG5vdCBlbGltaW5hdGUgT1Mgaml0dGVyLCBidXQgd2lsbCBpbnN0ZWFkCisJc2hpZnQgaXQgdG8gUkNVX1NPRlRJUlEuCisKK05hbWU6IHdhdGNoZG9nLyV1CitQdXJwb3NlOiBEZXRlY3Qgc29mdHdhcmUgbG9ja3VwcyBvbiBlYWNoIENQVS4KK1RvIHJlZHVjZSBpdHMgT1Mgaml0dGVyLCBkbyBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKzEuCUJ1aWxkIHdpdGggQ09ORklHX0xPQ0tVUF9ERVRFQ1RPUj1uLCB3aGljaCB3aWxsIHByZXZlbnQgdGhlc2UKKwlrdGhyZWFkcyBmcm9tIGJlaW5nIGNyZWF0ZWQgaW4gdGhlIGZpcnN0IHBsYWNlLgorMi4JQm9vdCB3aXRoICJub3NvZnRsb2NrdXA9MCIsIHdoaWNoIHdpbGwgYWxzbyBwcmV2ZW50IHRoZXNlIGt0aHJlYWRzCisJZnJvbSBiZWluZyBjcmVhdGVkLiAgT3RoZXIgcmVsYXRlZCB3YXRjaGRvZyBhbmQgc29mdGxvY2t1cCBib290CisJcGFyYW1ldGVycyBtYXkgYmUgZm91bmQgaW4gRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQKKwlhbmQgRG9jdW1lbnRhdGlvbi93YXRjaGRvZy93YXRjaGRvZy1wYXJhbWV0ZXJzLnR4dC4KKzMuCUVjaG8gYSB6ZXJvIHRvIC9wcm9jL3N5cy9rZXJuZWwvd2F0Y2hkb2cgdG8gZGlzYWJsZSB0aGUKKwl3YXRjaGRvZyB0aW1lci4KKzQuCUVjaG8gYSBsYXJnZSBudW1iZXIgb2YgL3Byb2Mvc3lzL2tlcm5lbC93YXRjaGRvZ190aHJlc2ggaW4KKwlvcmRlciB0byByZWR1Y2UgdGhlIGZyZXF1ZW5jeSBvZiBPUyBqaXR0ZXIgZHVlIHRvIHRoZSB3YXRjaGRvZworCXRpbWVyIGRvd24gdG8gYSBsZXZlbCB0aGF0IGlzIGFjY2VwdGFibGUgZm9yIHlvdXIgd29ya2xvYWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ttZW1jaGVjay50eHQgYi9Eb2N1bWVudGF0aW9uL2ttZW1jaGVjay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBhYWU4NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24va21lbWNoZWNrLnR4dApAQCAtMCwwICsxLDc1NCBAQAorR0VUVElORyBTVEFSVEVEIFdJVEggS01FTUNIRUNLCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVmVnYXJkIE5vc3N1bSA8dmVnYXJkbm9AaWZpLnVpby5ubz4KKworCitDb250ZW50cworPT09PT09PT0KKzAuIEludHJvZHVjdGlvbgorMS4gRG93bmxvYWRpbmcKKzIuIENvbmZpZ3VyaW5nIGFuZCBjb21waWxpbmcKKzMuIEhvdyB0byB1c2UKKzMuMS4gQm9vdGluZworMy4yLiBSdW4tdGltZSBlbmFibGUvZGlzYWJsZQorMy4zLiBEZWJ1Z2dpbmcKKzMuNC4gQW5ub3RhdGluZyBmYWxzZSBwb3NpdGl2ZXMKKzQuIFJlcG9ydGluZyBlcnJvcnMKKzUuIFRlY2huaWNhbCBkZXNjcmlwdGlvbgorCisKKzAuIEludHJvZHVjdGlvbgorPT09PT09PT09PT09PT09CisKK2ttZW1jaGVjayBpcyBhIGRlYnVnZ2luZyBmZWF0dXJlIGZvciB0aGUgTGludXggS2VybmVsLiBNb3JlIHNwZWNpZmljYWxseSwgaXQKK2lzIGEgZHluYW1pYyBjaGVja2VyIHRoYXQgZGV0ZWN0cyBhbmQgd2FybnMgYWJvdXQgc29tZSB1c2VzIG9mIHVuaW5pdGlhbGl6ZWQKK21lbW9yeS4KKworVXNlcnNwYWNlIHByb2dyYW1tZXJzIG1pZ2h0IGJlIGZhbWlsaWFyIHdpdGggVmFsZ3JpbmQncyBtZW1jaGVjay4gVGhlIG1haW4KK2RpZmZlcmVuY2UgYmV0d2VlbiBtZW1jaGVjayBhbmQga21lbWNoZWNrIGlzIHRoYXQgbWVtY2hlY2sgd29ya3MgZm9yIHVzZXJzcGFjZQorcHJvZ3JhbXMgb25seSwgYW5kIGttZW1jaGVjayB3b3JrcyBmb3IgdGhlIGtlcm5lbCBvbmx5LiBUaGUgaW1wbGVtZW50YXRpb25zCithcmUgb2YgY291cnNlIHZhc3RseSBkaWZmZXJlbnQuIEJlY2F1c2Ugb2YgdGhpcywga21lbWNoZWNrIGlzIG5vdCBhcyBhY2N1cmF0ZQorYXMgbWVtY2hlY2ssIGJ1dCBpdCB0dXJucyBvdXQgdG8gYmUgZ29vZCBlbm91Z2ggaW4gcHJhY3RpY2UgdG8gZGlzY292ZXIgcmVhbAorcHJvZ3JhbW1lciBlcnJvcnMgdGhhdCB0aGUgY29tcGlsZXIgaXMgbm90IGFibGUgdG8gZmluZCB0aHJvdWdoIHN0YXRpYworYW5hbHlzaXMuCisKK0VuYWJsaW5nIGttZW1jaGVjayBvbiBhIGtlcm5lbCB3aWxsIHByb2JhYmx5IHNsb3cgaXQgZG93biB0byB0aGUgZXh0ZW50IHRoYXQKK3RoZSBtYWNoaW5lIHdpbGwgbm90IGJlIHVzYWJsZSBmb3Igbm9ybWFsIHdvcmtsb2FkcyBzdWNoIGFzIGUuZy4gYW4KK2ludGVyYWN0aXZlIGRlc2t0b3AuIGttZW1jaGVjayB3aWxsIGFsc28gY2F1c2UgdGhlIGtlcm5lbCB0byB1c2UgYWJvdXQgdHdpY2UKK2FzIG11Y2ggbWVtb3J5IGFzIG5vcm1hbC4gRm9yIHRoaXMgcmVhc29uLCBrbWVtY2hlY2sgaXMgc3RyaWN0bHkgYSBkZWJ1Z2dpbmcKK2ZlYXR1cmUuCisKKworMS4gRG93bmxvYWRpbmcKKz09PT09PT09PT09PT09CisKK0FzIG9mIHZlcnNpb24gMi42LjMxLXJjMSwga21lbWNoZWNrIGlzIGluY2x1ZGVkIGluIHRoZSBtYWlubGluZSBrZXJuZWwuCisKKworMi4gQ29uZmlndXJpbmcgYW5kIGNvbXBpbGluZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitrbWVtY2hlY2sgb25seSB3b3JrcyBmb3IgdGhlIHg4NiAoYm90aCAzMi0gYW5kIDY0LWJpdCkgcGxhdGZvcm0uIEEgbnVtYmVyIG9mCitjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBtdXN0IGhhdmUgc3BlY2lmaWMgc2V0dGluZ3MgaW4gb3JkZXIgZm9yIHRoZSBrbWVtY2hlY2sKK21lbnUgdG8gZXZlbiBhcHBlYXIgaW4gIm1lbnVjb25maWciLiBUaGVzZSBhcmU6CisKKyAgbyBDT05GSUdfQ0NfT1BUSU1JWkVfRk9SX1NJWkU9bgorCisJVGhpcyBvcHRpb24gaXMgbG9jYXRlZCB1bmRlciAiR2VuZXJhbCBzZXR1cCIgLyAiT3B0aW1pemUgZm9yIHNpemUiLgorCisJV2l0aG91dCB0aGlzLCBnY2Mgd2lsbCB1c2UgY2VydGFpbiBvcHRpbWl6YXRpb25zIHRoYXQgdXN1YWxseSBsZWFkIHRvCisJZmFsc2UgcG9zaXRpdmUgd2FybmluZ3MgZnJvbSBrbWVtY2hlY2suIEFuIGV4YW1wbGUgb2YgdGhpcyBpcyBhIDE2LWJpdAorCWZpZWxkIGluIGEgc3RydWN0LCB3aGVyZSBnY2MgbWF5IGxvYWQgMzIgYml0cywgdGhlbiBkaXNjYXJkIHRoZSB1cHBlcgorCTE2IGJpdHMuIGttZW1jaGVjayBzZWVzIG9ubHkgdGhlIDMyLWJpdCBsb2FkLCBhbmQgbWF5IHRyaWdnZXIgYQorCXdhcm5pbmcgZm9yIHRoZSB1cHBlciAxNiBiaXRzIChpZiB0aGV5J3JlIHVuaW5pdGlhbGl6ZWQpLgorCisgIG8gQ09ORklHX1NMQUI9eSBvciBDT05GSUdfU0xVQj15CisKKwlUaGlzIG9wdGlvbiBpcyBsb2NhdGVkIHVuZGVyICJHZW5lcmFsIHNldHVwIiAvICJDaG9vc2UgU0xBQgorCWFsbG9jYXRvciIuCisKKyAgbyBDT05GSUdfRlVOQ1RJT05fVFJBQ0VSPW4KKworCVRoaXMgb3B0aW9uIGlzIGxvY2F0ZWQgdW5kZXIgIktlcm5lbCBoYWNraW5nIiAvICJUcmFjZXJzIiAvICJLZXJuZWwKKwlGdW5jdGlvbiBUcmFjZXIiCisKKwlXaGVuIGZ1bmN0aW9uIHRyYWNpbmcgaXMgY29tcGlsZWQgaW4sIGdjYyBlbWl0cyBhIGNhbGwgdG8gYW5vdGhlcgorCWZ1bmN0aW9uIGF0IHRoZSBiZWdpbm5pbmcgb2YgZXZlcnkgZnVuY3Rpb24uIFRoaXMgbWVhbnMgdGhhdCB3aGVuIHRoZQorCXBhZ2UgZmF1bHQgaGFuZGxlciBpcyBjYWxsZWQsIHRoZSBmdHJhY2UgZnJhbWV3b3JrIHdpbGwgYmUgY2FsbGVkCisJYmVmb3JlIGttZW1jaGVjayBoYXMgaGFkIGEgY2hhbmNlIHRvIGhhbmRsZSB0aGUgZmF1bHQuIElmIGZ0cmFjZSB0aGVuCisJbW9kaWZpZXMgbWVtb3J5IHRoYXQgd2FzIHRyYWNrZWQgYnkga21lbWNoZWNrLCB0aGUgcmVzdWx0IGlzIGFuCisJZW5kbGVzcyByZWN1cnNpdmUgcGFnZSBmYXVsdC4KKworICBvIENPTkZJR19ERUJVR19QQUdFQUxMT0M9bgorCisJVGhpcyBvcHRpb24gaXMgbG9jYXRlZCB1bmRlciAiS2VybmVsIGhhY2tpbmciIC8gIk1lbW9yeSBEZWJ1Z2dpbmciCisJIC8gIkRlYnVnIHBhZ2UgbWVtb3J5IGFsbG9jYXRpb25zIi4KKworSW4gYWRkaXRpb24sIEkgaGlnaGx5IHJlY29tbWVuZCB0dXJuaW5nIG9uIENPTkZJR19ERUJVR19JTkZPPXkuIFRoaXMgaXMgYWxzbworbG9jYXRlZCB1bmRlciAiS2VybmVsIGhhY2tpbmciLiBXaXRoIHRoaXMsIHlvdSB3aWxsIGJlIGFibGUgdG8gZ2V0IGxpbmUgbnVtYmVyCitpbmZvcm1hdGlvbiBmcm9tIHRoZSBrbWVtY2hlY2sgd2FybmluZ3MsIHdoaWNoIGlzIGV4dHJlbWVseSB2YWx1YWJsZSBpbgorZGVidWdnaW5nIGEgcHJvYmxlbS4gVGhpcyBvcHRpb24gaXMgbm90IG1hbmRhdG9yeSwgaG93ZXZlciwgYmVjYXVzZSBpdCBzbG93cworZG93biB0aGUgY29tcGlsYXRpb24gcHJvY2VzcyBhbmQgcHJvZHVjZXMgYSBtdWNoIGJpZ2dlciBrZXJuZWwgaW1hZ2UuCisKK05vdyB0aGUga21lbWNoZWNrIG1lbnUgc2hvdWxkIGJlIHZpc2libGUgKHVuZGVyICJLZXJuZWwgaGFja2luZyIgLyAiTWVtb3J5CitEZWJ1Z2dpbmciIC8gImttZW1jaGVjazogdHJhcCB1c2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkiKS4gSGVyZSBmb2xsb3dzCithIGRlc2NyaXB0aW9uIG9mIHRoZSBrbWVtY2hlY2sgY29uZmlndXJhdGlvbiB2YXJpYWJsZXM6CisKKyAgbyBDT05GSUdfS01FTUNIRUNLCisKKwlUaGlzIG11c3QgYmUgZW5hYmxlZCBpbiBvcmRlciB0byB1c2Uga21lbWNoZWNrIGF0IGFsbC4uLgorCisgIG8gQ09ORklHX0tNRU1DSEVDS19bRElTQUJMRUQgfCBFTkFCTEVEIHwgT05FU0hPVF1fQllfREVGQVVMVAorCisJVGhpcyBvcHRpb24gY29udHJvbHMgdGhlIHN0YXR1cyBvZiBrbWVtY2hlY2sgYXQgYm9vdC10aW1lLiAiRW5hYmxlZCIKKwl3aWxsIGVuYWJsZSBrbWVtY2hlY2sgcmlnaHQgZnJvbSB0aGUgc3RhcnQsICJkaXNhYmxlZCIgd2lsbCBib290IHRoZQorCWtlcm5lbCBhcyBub3JtYWwgKGJ1dCB3aXRoIHRoZSBrbWVtY2hlY2sgY29kZSBjb21waWxlZCBpbiwgc28gaXQgY2FuCisJYmUgZW5hYmxlZCBhdCBydW4tdGltZSBhZnRlciB0aGUga2VybmVsIGhhcyBib290ZWQpLCBhbmQgIm9uZS1zaG90IiBpcworCWEgc3BlY2lhbCBtb2RlIHdoaWNoIHdpbGwgdHVybiBrbWVtY2hlY2sgb2ZmIGF1dG9tYXRpY2FsbHkgYWZ0ZXIKKwlkZXRlY3RpbmcgdGhlIGZpcnN0IHVzZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4KKworCUlmIHlvdSBhcmUgdXNpbmcga21lbWNoZWNrIHRvIGFjdGl2ZWx5IGRlYnVnIGEgcHJvYmxlbSwgdGhlbiB5b3UKKwlwcm9iYWJseSB3YW50IHRvIGNob29zZSAiZW5hYmxlZCIgaGVyZS4KKworCVRoZSBvbmUtc2hvdCBtb2RlIGlzIG1vc3RseSB1c2VmdWwgaW4gYXV0b21hdGVkIHRlc3Qgc2V0dXBzIGJlY2F1c2UgaXQKKwljYW4gcHJldmVudCBmbG9vZHMgb2Ygd2FybmluZ3MgYW5kIGluY3JlYXNlIHRoZSBjaGFuY2VzIG9mIHRoZSBtYWNoaW5lCisJc3Vydml2aW5nIGluIGNhc2Ugc29tZXRoaW5nIGlzIHJlYWxseSB3cm9uZy4gSW4gb3RoZXIgY2FzZXMsIHRoZSBvbmUtCisJc2hvdCBtb2RlIGNvdWxkIGFjdHVhbGx5IGJlIGNvdW50ZXItcHJvZHVjdGl2ZSBiZWNhdXNlIGl0IHdvdWxkIHR1cm4KKwlpdHNlbGYgb2ZmIGF0IHRoZSB2ZXJ5IGZpcnN0IGVycm9yIC0tIGluIHRoZSBjYXNlIG9mIGEgZmFsc2UgcG9zaXRpdmUKKwl0b28gLS0gYW5kIHRoaXMgd291bGQgY29tZSBpbiB0aGUgd2F5IG9mIGRlYnVnZ2luZyB0aGUgc3BlY2lmaWMKKwlwcm9ibGVtIHlvdSB3ZXJlIGludGVyZXN0ZWQgaW4uCisKKwlJZiB5b3Ugd291bGQgbGlrZSB0byB1c2UgeW91ciBrZXJuZWwgYXMgbm9ybWFsLCBidXQgd2l0aCBhIGNoYW5jZSB0bworCWVuYWJsZSBrbWVtY2hlY2sgaW4gY2FzZSBvZiBzb21lIHByb2JsZW0sIGl0IG1pZ2h0IGJlIGEgZ29vZCBpZGVhIHRvCisJY2hvb3NlICJkaXNhYmxlZCIgaGVyZS4gV2hlbiBrbWVtY2hlY2sgaXMgZGlzYWJsZWQsIG1vc3Qgb2YgdGhlIHJ1bi0KKwl0aW1lIG92ZXJoZWFkIGlzIG5vdCBpbmN1cnJlZCwgYW5kIHRoZSBrZXJuZWwgd2lsbCBiZSBhbG1vc3QgYXMgZmFzdAorCWFzIG5vcm1hbC4KKworICBvIENPTkZJR19LTUVNQ0hFQ0tfUVVFVUVfU0laRQorCisJU2VsZWN0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBlcnJvciByZXBvcnRzIHRvIHN0b3JlIGluIGFuIGludGVybmFsCisJKGZpeGVkLXNpemUpIGJ1ZmZlci4gU2luY2UgZXJyb3JzIGNhbiBvY2N1ciB2aXJ0dWFsbHkgYW55d2hlcmUgYW5kIGluCisJYW55IGNvbnRleHQsIHdlIG5lZWQgYSB0ZW1wb3Jhcnkgc3RvcmFnZSBhcmVhIHdoaWNoIGlzIGd1YXJhbnRlZWQgbm90CisJdG8gZ2VuZXJhdGUgYW55IG90aGVyIHBhZ2UgZmF1bHRzIHdoZW4gYWNjZXNzZWQuIFRoZSBxdWV1ZSB3aWxsIGJlCisJZW1wdGllZCBhcyBzb29uIGFzIGEgdGFza2xldCBtYXkgYmUgc2NoZWR1bGVkLiBJZiB0aGUgcXVldWUgaXMgZnVsbCwKKwluZXcgZXJyb3IgcmVwb3J0cyB3aWxsIGJlIGxvc3QuCisKKwlUaGUgZGVmYXVsdCB2YWx1ZSBvZiA2NCBpcyBwcm9iYWJseSBmaW5lLiBJZiBzb21lIGNvZGUgcHJvZHVjZXMgbW9yZQorCXRoYW4gNjQgZXJyb3JzIHdpdGhpbiBhbiBpcnFzLW9mZiBzZWN0aW9uLCB0aGVuIHRoZSBjb2RlIGlzIGxpa2VseSB0bworCXByb2R1Y2UgbWFueSwgbWFueSBtb3JlLCB0b28sIGFuZCB0aGVzZSBhZGRpdGlvbmFsIHJlcG9ydHMgc2VsZG9tIGdpdmUKKwlhbnkgbW9yZSBpbmZvcm1hdGlvbiAodGhlIGZpcnN0IHJlcG9ydCBpcyB1c3VhbGx5IHRoZSBtb3N0IHZhbHVhYmxlCisJYW55d2F5KS4KKworCVRoaXMgbnVtYmVyIG1pZ2h0IGhhdmUgdG8gYmUgYWRqdXN0ZWQgaWYgeW91IGFyZSBub3QgdXNpbmcgc2VyaWFsCisJY29uc29sZSBvciBzaW1pbGFyIHRvIGNhcHR1cmUgdGhlIGtlcm5lbCBsb2cuIElmIHlvdSBhcmUgdXNpbmcgdGhlCisJImRtZXNnIiBjb21tYW5kIHRvIHNhdmUgdGhlIGxvZywgdGhlbiBnZXR0aW5nIGEgbG90IG9mIGttZW1jaGVjaworCXdhcm5pbmdzIG1pZ2h0IG92ZXJmbG93IHRoZSBrZXJuZWwgbG9nIGl0c2VsZiwgYW5kIHRoZSBlYXJsaWVyIHJlcG9ydHMKKwl3aWxsIGdldCBsb3N0IGluIHRoYXQgd2F5IGluc3RlYWQuIFRyeSBzZXR0aW5nIHRoaXMgdG8gMTAgb3Igc28gb24KKwlzdWNoIGEgc2V0dXAuCisKKyAgbyBDT05GSUdfS01FTUNIRUNLX1NIQURPV19DT1BZX1NISUZUCisKKwlTZWxlY3QgdGhlIG51bWJlciBvZiBzaGFkb3cgYnl0ZXMgdG8gc2F2ZSBhbG9uZyB3aXRoIGVhY2ggZW50cnkgb2YgdGhlCisJZXJyb3ItcmVwb3J0IHF1ZXVlLiBUaGVzZSBieXRlcyBpbmRpY2F0ZSB3aGF0IHBhcnRzIG9mIGFuIGFsbG9jYXRpb24KKwlhcmUgaW5pdGlhbGl6ZWQsIHVuaW5pdGlhbGl6ZWQsIGV0Yy4gYW5kIHdpbGwgYmUgZGlzcGxheWVkIHdoZW4gYW4KKwllcnJvciBpcyBkZXRlY3RlZCB0byBoZWxwIHRoZSBkZWJ1Z2dpbmcgb2YgYSBwYXJ0aWN1bGFyIHByb2JsZW0uCisKKwlUaGUgbnVtYmVyIGVudGVyZWQgaGVyZSBpcyBhY3R1YWxseSB0aGUgbG9nYXJpdGhtIG9mIHRoZSBudW1iZXIgb2YKKwlieXRlcyB0aGF0IHdpbGwgYmUgc2F2ZWQuIFNvIGlmIHlvdSBwaWNrIGZvciBleGFtcGxlIDUgaGVyZSwga21lbWNoZWNrCisJd2lsbCBzYXZlIDJeNSA9IDMyIGJ5dGVzLgorCisJVGhlIGRlZmF1bHQgdmFsdWUgc2hvdWxkIGJlIGZpbmUgZm9yIGRlYnVnZ2luZyBtb3N0IHByb2JsZW1zLiBJdCBhbHNvCisJZml0cyBuaWNlbHkgd2l0aGluIDgwIGNvbHVtbnMuCisKKyAgbyBDT05GSUdfS01FTUNIRUNLX1BBUlRJQUxfT0sKKworCVRoaXMgb3B0aW9uICh3aGVuIGVuYWJsZWQpIHdvcmtzIGFyb3VuZCBjZXJ0YWluIEdDQyBvcHRpbWl6YXRpb25zIHRoYXQKKwlwcm9kdWNlIDMyLWJpdCByZWFkcyBmcm9tIDE2LWJpdCB2YXJpYWJsZXMgd2hlcmUgdGhlIHVwcGVyIDE2IGJpdHMgYXJlCisJdGhyb3duIGF3YXkgYWZ0ZXJ3YXJkcy4KKworCVRoZSBkZWZhdWx0IHZhbHVlIChlbmFibGVkKSBpcyByZWNvbW1lbmRlZC4gVGhpcyBtYXkgb2YgY291cnNlIGhpZGUKKwlzb21lIHJlYWwgZXJyb3JzLCBidXQgZGlzYWJsaW5nIGl0IHdvdWxkIHByb2JhYmx5IHByb2R1Y2UgYSBsb3Qgb2YKKwlmYWxzZSBwb3NpdGl2ZXMuCisKKyAgbyBDT05GSUdfS01FTUNIRUNLX0JJVE9QU19PSworCisJVGhpcyBvcHRpb24gc2lsZW5jZXMgd2FybmluZ3MgdGhhdCB3b3VsZCBiZSBnZW5lcmF0ZWQgZm9yIGJpdC1maWVsZAorCWFjY2Vzc2VzIHdoZXJlIG5vdCBhbGwgdGhlIGJpdHMgYXJlIGluaXRpYWxpemVkIGF0IHRoZSBzYW1lIHRpbWUuIFRoaXMKKwltYXkgYWxzbyBoaWRlIHNvbWUgcmVhbCBidWdzLgorCisJVGhpcyBvcHRpb24gaXMgcHJvYmFibHkgb2Jzb2xldGUsIG9yIGl0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoCisJdGhlIGttZW1jaGVjay0vYml0ZmllbGQtYW5ub3RhdGlvbnMgZm9yIHRoZSBjb2RlIGluIHF1ZXN0aW9uLiBUaGUKKwlkZWZhdWx0IHZhbHVlIGlzIHRoZXJlZm9yZSBmaW5lLgorCitOb3cgY29tcGlsZSB0aGUga2VybmVsIGFzIHVzdWFsLgorCisKKzMuIEhvdyB0byB1c2UKKz09PT09PT09PT09PT0KKworMy4xLiBCb290aW5nCis9PT09PT09PT09PT0KKworRmlyc3Qgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29tbWFuZC1saW5lIG9wdGlvbnMuIFRoZXJlIGlzIG9ubHkgb25lCitvcHRpb24gc3BlY2lmaWMgdG8ga21lbWNoZWNrLCBhbmQgdGhpcyBpcyBjYWxsZWQgImttZW1jaGVjayIuIEl0IGNhbiBiZSB1c2VkCit0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBtb2RlIGFzIGNob3NlbiBieSB0aGUgQ09ORklHX0tNRU1DSEVDS18qX0JZX0RFRkFVTFQKK29wdGlvbi4gSXRzIHBvc3NpYmxlIHNldHRpbmdzIGFyZToKKworICBvIGttZW1jaGVjaz0wIChkaXNhYmxlZCkKKyAgbyBrbWVtY2hlY2s9MSAoZW5hYmxlZCkKKyAgbyBrbWVtY2hlY2s9MiAob25lLXNob3QgbW9kZSkKKworSWYgU0xVQiBkZWJ1Z2dpbmcgaGFzIGJlZW4gZW5hYmxlZCBpbiB0aGUga2VybmVsLCBpdCBtYXkgdGFrZSBwcmVjZWRlbmNlIG92ZXIKK2ttZW1jaGVjayBpbiBzdWNoIGEgd2F5IHRoYXQgdGhlIHNsYWIgY2FjaGVzIHdoaWNoIGFyZSB1bmRlciBTTFVCIGRlYnVnZ2luZword2lsbCBub3QgYmUgdHJhY2tlZCBieSBrbWVtY2hlY2suIEluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IHRoaXMgZG9lc24ndCBoYXBwZW4KKyhldmVuIHRob3VnaCBpdCBzaG91bGRuJ3QgYnkgZGVmYXVsdCksIHVzZSBTTFVCJ3MgYm9vdCBvcHRpb24gInNsdWJfZGVidWciLAorbGlrZSB0aGlzOiBzbHViX2RlYnVnPS0KKworSW4gZmFjdCwgdGhpcyBvcHRpb24gbWF5IGFsc28gYmUgdXNlZCBmb3IgZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlciBTTFVCIHZzLgora21lbWNoZWNrLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGNvbW1hbmQgbGluZSBpbmNsdWRlcyAia21lbWNoZWNrPTEKK3NsdWJfZGVidWc9LGRlbnRyeSIsIHRoZW4gU0xVQiBkZWJ1Z2dpbmcgd2lsbCBiZSB1c2VkIG9ubHkgZm9yIHRoZSAiZGVudHJ5Igorc2xhYiBjYWNoZSwgYW5kIHdpdGgga21lbWNoZWNrIHRyYWNraW5nIGFsbCB0aGUgb3RoZXIgY2FjaGVzLiBUaGlzIGlzIGFkdmFuY2VkCit1c2FnZSwgaG93ZXZlciwgYW5kIGlzIG5vdCBnZW5lcmFsbHkgcmVjb21tZW5kZWQuCisKKworMy4yLiBSdW4tdGltZSBlbmFibGUvZGlzYWJsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitXaGVuIHRoZSBrZXJuZWwgaGFzIGJvb3RlZCwgaXQgaXMgcG9zc2libGUgdG8gZW5hYmxlIG9yIGRpc2FibGUga21lbWNoZWNrIGF0CitydW4tdGltZS4gV0FSTklORzogVGhpcyBmZWF0dXJlIGlzIHN0aWxsIGV4cGVyaW1lbnRhbCBhbmQgbWF5IGNhdXNlIGZhbHNlCitwb3NpdGl2ZSB3YXJuaW5ncyB0byBhcHBlYXIuIFRoZXJlZm9yZSwgdHJ5IG5vdCB0byB1c2UgdGhpcy4gSWYgeW91IGZpbmQgdGhhdAoraXQgZG9lc24ndCB3b3JrIHByb3Blcmx5IChlLmcuIHlvdSBzZWUgYW4gdW5yZWFzb25hYmxlIGFtb3VudCBvZiB3YXJuaW5ncyksIEkKK3dpbGwgYmUgaGFwcHkgdG8gdGFrZSBidWcgcmVwb3J0cy4KKworVXNlIHRoZSBmaWxlIC9wcm9jL3N5cy9rZXJuZWwva21lbWNoZWNrIGZvciB0aGlzIHB1cnBvc2UsIGUuZy46CisKKwkkIGVjaG8gMCA+IC9wcm9jL3N5cy9rZXJuZWwva21lbWNoZWNrICMgZGlzYWJsZXMga21lbWNoZWNrCisKK1RoZSBudW1iZXJzIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlIGttZW1jaGVjaz0gY29tbWFuZC1saW5lIG9wdGlvbi4KKworCiszLjMuIERlYnVnZ2luZworPT09PT09PT09PT09PT0KKworQSB0eXBpY2FsIHJlcG9ydCB3aWxsIGxvb2sgc29tZXRoaW5nIGxpa2UgdGhpczoKKworV0FSTklORzoga21lbWNoZWNrOiBDYXVnaHQgMzItYml0IHJlYWQgZnJvbSB1bmluaXRpYWxpemVkIG1lbW9yeSAoZmZmZjg4MDAzZTRhMjAyNCkKKzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDg4ZmZmZjAwMDAwMDAwMDAwMDAwMDAKKyBpIGkgaSBpIHUgdSB1IHUgaSBpIGkgaSBpIGkgaSBpIHUgdSB1IHUgdSB1IHUgdSB1IHUgdSB1IHUgdSB1IHUKKyAgICAgICAgIF4KKworUGlkOiAxODU2LCBjb21tOiBudHBkYXRlIE5vdCB0YWludGVkIDIuNi4yOS1yYzUgIzI2NCA5NDVQLUEKK1JJUDogMDAxMDpbPGZmZmZmZmZmODEwNGVkZTg+XSAgWzxmZmZmZmZmZjgxMDRlZGU4Pl0gX19kZXF1ZXVlX3NpZ25hbCsweGM4LzB4MTkwCitSU1A6IDAwMTg6ZmZmZjg4MDAzY2RmN2Q5OCAgRUZMQUdTOiAwMDIxMDAwMgorUkFYOiAwMDAwMDAwMDAwMDAwMDMwIFJCWDogZmZmZjg4MDAzZDRlYTk2OCBSQ1g6IDAwMDAwMDAwMDAwMDAwMDkKK1JEWDogZmZmZjg4MDAzZTVkNjAxOCBSU0k6IGZmZmY4ODAwM2U1ZDYwMjQgUkRJOiBmZmZmODgwMDNjZGY3ZTg0CitSQlA6IGZmZmY4ODAwM2NkZjdkYjggUjA4OiBmZmZmODgwMDNlNWQ2MDAwIFIwOTogMDAwMDAwMDAwMDAwMDAwMAorUjEwOiAwMDAwMDAwMDAwMDAwMDgwIFIxMTogMDAwMDAwMDAwMDAwMDAwMCBSMTI6IDAwMDAwMDAwMDAwMDAwMGUKK1IxMzogZmZmZjg4MDAzY2RmN2U3OCBSMTQ6IGZmZmY4ODAwM2Q1MzA3MTAgUjE1OiBmZmZmODgwMDNkNWE5OGM4CitGUzogIDAwMDAwMDAwMDAwMDAwMDAoMDAwMCkgR1M6ZmZmZjg4MDAwMTk4MjAwMCgwMDYzKSBrbmxHUzowMDAwMAorQ1M6ICAwMDEwIERTOiAwMDJiIEVTOiAwMDJiIENSMDogMDAwMDAwMDA4MDA1MDAzMworQ1IyOiBmZmZmODgwMDNmODA2ZWEwIENSMzogMDAwMDAwMDAzYzAzNjAwMCBDUjQ6IDAwMDAwMDAwMDAwMDA2YTAKK0RSMDogMDAwMDAwMDAwMDAwMDAwMCBEUjE6IDAwMDAwMDAwMDAwMDAwMDAgRFIyOiAwMDAwMDAwMDAwMDAwMDAwCitEUjM6IDAwMDAwMDAwMDAwMDAwMDAgRFI2OiAwMDAwMDAwMGZmZmY0ZmYwIERSNzogMDAwMDAwMDAwMDAwMDQwMAorIFs8ZmZmZmZmZmY4MTA0ZjA0ZT5dIGRlcXVldWVfc2lnbmFsKzB4OGUvMHgxNzAKKyBbPGZmZmZmZmZmODEwNTBiZDg+XSBnZXRfc2lnbmFsX3RvX2RlbGl2ZXIrMHg5OC8weDM5MAorIFs8ZmZmZmZmZmY4MTAwYjg3ZD5dIGRvX25vdGlmeV9yZXN1bWUrMHhhZC8weDdkMAorIFs8ZmZmZmZmZmY4MTAwYzdiNT5dIGludF9zaWduYWwrMHgxMi8weDE3CisgWzxmZmZmZmZmZmZmZmZmZmZmPl0gMHhmZmZmZmZmZmZmZmZmZmZmCisKK1RoZSBzaW5nbGUgbW9zdCB2YWx1YWJsZSBpbmZvcm1hdGlvbiBpbiB0aGlzIHJlcG9ydCBpcyB0aGUgUklQIChvciBFSVAgb24gMzItCitiaXQpIHZhbHVlLiBUaGlzIHdpbGwgaGVscCB1cyBwaW5wb2ludCBleGFjdGx5IHdoaWNoIGluc3RydWN0aW9uIHRoYXQgY2F1c2VkCit0aGUgd2FybmluZy4KKworSWYgeW91ciBrZXJuZWwgd2FzIGNvbXBpbGVkIHdpdGggQ09ORklHX0RFQlVHX0lORk89eSwgdGhlbiBhbGwgd2UgaGF2ZSB0byBkbworaXMgZ2l2ZSB0aGlzIGFkZHJlc3MgdG8gdGhlIGFkZHIybGluZSBwcm9ncmFtLCBsaWtlIHRoaXM6CisKKwkkIGFkZHIybGluZSAtZSB2bWxpbnV4IC1pIGZmZmZmZmZmODEwNGVkZTgKKwlhcmNoL3g4Ni9pbmNsdWRlL2FzbS9zdHJpbmdfNjQuaDoxMgorCWluY2x1ZGUvYXNtLWdlbmVyaWMvc2lnaW5mby5oOjI4NworCWtlcm5lbC9zaWduYWwuYzozODAKKwlrZXJuZWwvc2lnbmFsLmM6NDEwCisKK1RoZSAiLWUgdm1saW51eCIgdGVsbHMgYWRkcjJsaW5lIHdoaWNoIGZpbGUgdG8gbG9vayBpbi4gSU1QT1JUQU5UOiBUaGlzIG11c3QKK2JlIHRoZSB2bWxpbnV4IG9mIHRoZSBrZXJuZWwgdGhhdCBwcm9kdWNlZCB0aGUgd2FybmluZyBpbiB0aGUgZmlyc3QgcGxhY2UhIElmCitub3QsIHRoZSBsaW5lIG51bWJlciBpbmZvcm1hdGlvbiB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgYmUgd3JvbmcuCisKK1RoZSAiLWkiIHRlbGxzIGFkZHIybGluZSB0byBhbHNvIHByaW50IHRoZSBsaW5lIG51bWJlcnMgb2YgaW5saW5lZCBmdW5jdGlvbnMuCitJbiB0aGlzIGNhc2UsIHRoZSBmbGFnIHdhcyB2ZXJ5IGltcG9ydGFudCwgYmVjYXVzZSBvdGhlcndpc2UsIGl0IHdvdWxkIG9ubHkKK2hhdmUgcHJpbnRlZCB0aGUgZmlyc3QgbGluZSwgd2hpY2ggaXMganVzdCBhIGNhbGwgdG8gbWVtY3B5KCksIHdoaWNoIGNvdWxkIGJlCitjYWxsZWQgZnJvbSBhIHRob3VzYW5kIHBsYWNlcyBpbiB0aGUga2VybmVsLCBhbmQgaXMgdGhlcmVmb3JlIG5vdCB2ZXJ5IHVzZWZ1bC4KK1RoZXNlIGlubGluZWQgZnVuY3Rpb25zIHdvdWxkIG5vdCBzaG93IHVwIGluIHRoZSBzdGFjayB0cmFjZSBhYm92ZSwgc2ltcGx5CitiZWNhdXNlIHRoZSBrZXJuZWwgZG9lc24ndCBsb2FkIHRoZSBleHRyYSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uIFRoaXMKK3RlY2huaXF1ZSBjYW4gb2YgY291cnNlIGJlIHVzZWQgd2l0aCBvcmRpbmFyeSBrZXJuZWwgb29wc2VzIGFzIHdlbGwuCisKK0luIHRoaXMgY2FzZSwgaXQncyB0aGUgY2FsbGVyIG9mIG1lbWNweSgpIHRoYXQgaXMgaW50ZXJlc3RpbmcsIGFuZCBpdCBjYW4gYmUKK2ZvdW5kIGluIGluY2x1ZGUvYXNtLWdlbmVyaWMvc2lnaW5mby5oLCBsaW5lIDI4NzoKKworMjgxIHN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5X3NpZ2luZm8oc3RydWN0IHNpZ2luZm8gKnRvLCBzdHJ1Y3Qgc2lnaW5mbyAqZnJvbSkKKzI4MiB7CisyODMgICAgICAgICBpZiAoZnJvbS0+c2lfY29kZSA8IDApCisyODQgICAgICAgICAgICAgICAgIG1lbWNweSh0bywgZnJvbSwgc2l6ZW9mKCp0bykpOworMjg1ICAgICAgICAgZWxzZQorMjg2ICAgICAgICAgICAgICAgICAvKiBfc2lnY2hsZCBpcyBjdXJyZW50bHkgdGhlIGxhcmdlc3Qga25vdyB1bmlvbiBtZW1iZXIgKi8KKzI4NyAgICAgICAgICAgICAgICAgbWVtY3B5KHRvLCBmcm9tLCBfX0FSQ0hfU0lfUFJFQU1CTEVfU0laRSArIHNpemVvZihmcm9tLT5fc2lmaWVsZHMuX3NpZ2NobGQpKTsKKzI4OCB9CisKK1NpbmNlIHRoaXMgd2FzIGEgcmVhZCAoa21lbWNoZWNrIHVzdWFsbHkgd2FybnMgYWJvdXQgcmVhZHMgb25seSwgdGhvdWdoIGl0IGNhbgord2FybiBhYm91dCB3cml0ZXMgdG8gdW5hbGxvY2F0ZWQgb3IgZnJlZWQgbWVtb3J5IGFzIHdlbGwpLCBpdCB3YXMgcHJvYmFibHkgdGhlCisiZnJvbSIgYXJndW1lbnQgd2hpY2ggY29udGFpbmVkIHNvbWUgdW5pbml0aWFsaXplZCBieXRlcy4gRm9sbG93aW5nIHRoZSBjaGFpbgorb2YgY2FsbHMsIHdlIG1vdmUgdXB3YXJkcyB0byBzZWUgd2hlcmUgImZyb20iIHdhcyBhbGxvY2F0ZWQgb3IgaW5pdGlhbGl6ZWQsCitrZXJuZWwvc2lnbmFsLmMsIGxpbmUgMzgwOgorCiszNTkgc3RhdGljIHZvaWQgY29sbGVjdF9zaWduYWwoaW50IHNpZywgc3RydWN0IHNpZ3BlbmRpbmcgKmxpc3QsIHNpZ2luZm9fdCAqaW5mbykKKzM2MCB7CisuLi4KKzM2NyAgICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkocSwgJmxpc3QtPmxpc3QsIGxpc3QpIHsKKzM2OCAgICAgICAgICAgICAgICAgaWYgKHEtPmluZm8uc2lfc2lnbm8gPT0gc2lnKSB7CiszNjkgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0KQorMzcwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBzdGlsbF9wZW5kaW5nOworMzcxICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0ID0gcTsKKy4uLgorMzc3ICAgICAgICAgaWYgKGZpcnN0KSB7CiszNzggc3RpbGxfcGVuZGluZzoKKzM3OSAgICAgICAgICAgICAgICAgbGlzdF9kZWxfaW5pdCgmZmlyc3QtPmxpc3QpOworMzgwICAgICAgICAgICAgICAgICBjb3B5X3NpZ2luZm8oaW5mbywgJmZpcnN0LT5pbmZvKTsKKzM4MSAgICAgICAgICAgICAgICAgX19zaWdxdWV1ZV9mcmVlKGZpcnN0KTsKKy4uLgorMzkyICAgICAgICAgfQorMzkzIH0KKworSGVyZSwgaXQgaXMgJmZpcnN0LT5pbmZvIHRoYXQgaXMgYmVpbmcgcGFzc2VkIG9uIHRvIGNvcHlfc2lnaW5mbygpLiBUaGUKK3ZhcmlhYmxlICJmaXJzdCIgd2FzIGZvdW5kIG9uIGEgbGlzdCAtLSBwYXNzZWQgaW4gYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0bworY29sbGVjdF9zaWduYWwoKS4gV2UgIGNvbnRpbnVlIG91ciBqb3VybmV5IHRocm91Z2ggdGhlIHN0YWNrLCB0byBmaWd1cmUgb3V0Cit3aGVyZSB0aGUgaXRlbSBvbiAibGlzdCIgd2FzIGFsbG9jYXRlZCBvciBpbml0aWFsaXplZC4gV2UgbW92ZSB0byBsaW5lIDQxMDoKKworMzk1IHN0YXRpYyBpbnQgX19kZXF1ZXVlX3NpZ25hbChzdHJ1Y3Qgc2lncGVuZGluZyAqcGVuZGluZywgc2lnc2V0X3QgKm1hc2ssCiszOTYgICAgICAgICAgICAgICAgICAgICAgICAgc2lnaW5mb190ICppbmZvKQorMzk3IHsKKy4uLgorNDEwICAgICAgICAgICAgICAgICBjb2xsZWN0X3NpZ25hbChzaWcsIHBlbmRpbmcsIGluZm8pOworLi4uCis0MTQgfQorCitOb3cgd2UgbmVlZCB0byBmb2xsb3cgdGhlICJwZW5kaW5nIiBwb2ludGVyLCBzaW5jZSB0aGF0IGlzIGJlaW5nIHBhc3NlZCBvbiB0bworY29sbGVjdF9zaWduYWwoKSBhcyAibGlzdCIuIEF0IHRoaXMgcG9pbnQsIHdlJ3ZlIHJ1biBvdXQgb2YgbGluZXMgZnJvbSB0aGUKKyJhZGRyMmxpbmUiIG91dHB1dC4gTm90IHRvIHdvcnJ5LCB3ZSBqdXN0IHBhc3RlIHRoZSBuZXh0IGFkZHJlc3NlcyBmcm9tIHRoZQora21lbWNoZWNrIHN0YWNrIGR1bXAsIGkuZS46CisKKyBbPGZmZmZmZmZmODEwNGYwNGU+XSBkZXF1ZXVlX3NpZ25hbCsweDhlLzB4MTcwCisgWzxmZmZmZmZmZjgxMDUwYmQ4Pl0gZ2V0X3NpZ25hbF90b19kZWxpdmVyKzB4OTgvMHgzOTAKKyBbPGZmZmZmZmZmODEwMGI4N2Q+XSBkb19ub3RpZnlfcmVzdW1lKzB4YWQvMHg3ZDAKKyBbPGZmZmZmZmZmODEwMGM3YjU+XSBpbnRfc2lnbmFsKzB4MTIvMHgxNworCisJJCBhZGRyMmxpbmUgLWUgdm1saW51eCAtaSBmZmZmZmZmZjgxMDRmMDRlIGZmZmZmZmZmODEwNTBiZDggXAorCQlmZmZmZmZmZjgxMDBiODdkIGZmZmZmZmZmODEwMGM3YjUKKwlrZXJuZWwvc2lnbmFsLmM6NDQ2CisJa2VybmVsL3NpZ25hbC5jOjE4MDYKKwlhcmNoL3g4Ni9rZXJuZWwvc2lnbmFsLmM6ODA1CisJYXJjaC94ODYva2VybmVsL3NpZ25hbC5jOjg3MQorCWFyY2gveDg2L2tlcm5lbC9lbnRyeV82NC5TOjY5NAorCitSZW1lbWJlciB0aGF0IHNpbmNlIHRoZXNlIGFkZHJlc3NlcyB3ZXJlIGZvdW5kIG9uIHRoZSBzdGFjayBhbmQgbm90IGFzIHRoZQorUklQIHZhbHVlLCB0aGV5IGFjdHVhbGx5IHBvaW50IHRvIHRoZSBfbmV4dF8gaW5zdHJ1Y3Rpb24gKHRoZXkgYXJlIHJldHVybgorYWRkcmVzc2VzKS4gVGhpcyBiZWNvbWVzIG9idmlvdXMgd2hlbiB3ZSBsb29rIGF0IHRoZSBjb2RlIGZvciBsaW5lIDQ0NjoKKworNDIyIGludCBkZXF1ZXVlX3NpZ25hbChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgc2lnc2V0X3QgKm1hc2ssIHNpZ2luZm9fdCAqaW5mbykKKzQyMyB7CisuLi4KKzQzMSAgICAgICAgICAgICAgICAgc2lnbnIgPSBfX2RlcXVldWVfc2lnbmFsKCZ0c2stPnNpZ25hbC0+c2hhcmVkX3BlbmRpbmcsCis0MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrLCBpbmZvKTsKKzQzMyAgICAgICAgICAgICAgICAgLyoKKzQzNCAgICAgICAgICAgICAgICAgICogaXRpbWVyIHNpZ25hbCA/Cis0MzUgICAgICAgICAgICAgICAgICAqCis0MzYgICAgICAgICAgICAgICAgICAqIGl0aW1lcnMgYXJlIHByb2Nlc3Mgc2hhcmVkIGFuZCB3ZSByZXN0YXJ0IHBlcmlvZGljCis0MzcgICAgICAgICAgICAgICAgICAqIGl0aW1lcnMgaW4gdGhlIHNpZ25hbCBkZWxpdmVyeSBwYXRoIHRvIHByZXZlbnQgRG9TCis0MzggICAgICAgICAgICAgICAgICAqIGF0dGFja3MgaW4gdGhlIGhpZ2ggcmVzb2x1dGlvbiB0aW1lciBjYXNlLiBUaGlzIGlzCis0MzkgICAgICAgICAgICAgICAgICAqIGNvbXBsaWFudCB3aXRoIHRoZSBvbGQgd2F5IG9mIHNlbGYgcmVzdGFydGluZworNDQwICAgICAgICAgICAgICAgICAgKiBpdGltZXJzLCBhcyB0aGUgU0lHQUxSTSBpcyBhIGxlZ2FjeSBzaWduYWwgYW5kIG9ubHkKKzQ0MSAgICAgICAgICAgICAgICAgICogcXVldWVkIG9uY2UuIENoYW5naW5nIHRoZSByZXN0YXJ0IGJlaGF2aW91ciB0bworNDQyICAgICAgICAgICAgICAgICAgKiByZXN0YXJ0IHRoZSB0aW1lciBpbiB0aGUgc2lnbmFsIGRlcXVldWUgcGF0aCBpcworNDQzICAgICAgICAgICAgICAgICAgKiByZWR1Y2luZyB0aGUgdGltZXIgbm9pc2Ugb24gaGVhdnkgbG9hZGVkICFoaWdocmVzCis0NDQgICAgICAgICAgICAgICAgICAqIHN5c3RlbXMgdG9vLgorNDQ1ICAgICAgICAgICAgICAgICAgKi8KKzQ0NiAgICAgICAgICAgICAgICAgaWYgKHVubGlrZWx5KHNpZ25yID09IFNJR0FMUk0pKSB7CisuLi4KKzQ4OSB9CisKK1NvIGluc3RlYWQgb2YgbG9va2luZyBhdCA0NDYsIHdlIHNob3VsZCBiZSBsb29raW5nIGF0IDQzMSwgd2hpY2ggaXMgdGhlIGxpbmUKK3RoYXQgZXhlY3V0ZXMganVzdCBiZWZvcmUgNDQ2LiBIZXJlIHdlIHNlZSB0aGF0IHdoYXQgd2UgYXJlIGxvb2tpbmcgZm9yIGlzCismdHNrLT5zaWduYWwtPnNoYXJlZF9wZW5kaW5nLgorCitPdXIgbmV4dCB0YXNrIGlzIG5vdyB0byBmaWd1cmUgb3V0IHdoaWNoIGZ1bmN0aW9uIHRoYXQgcHV0cyBpdGVtcyBvbiB0aGlzCisic2hhcmVkX3BlbmRpbmciIGxpc3QuIEEgY3J1ZGUsIGJ1dCBlZmZpY2llbnQgdG9vbCwgaXMgZ2l0IGdyZXA6CisKKwkkIGdpdCBncmVwIC1uICdzaGFyZWRfcGVuZGluZycga2VybmVsLworCS4uLgorCWtlcm5lbC9zaWduYWwuYzo4Mjg6ICAgIHBlbmRpbmcgPSBncm91cCA/ICZ0LT5zaWduYWwtPnNoYXJlZF9wZW5kaW5nIDogJnQtPnBlbmRpbmc7CisJa2VybmVsL3NpZ25hbC5jOjEzMzk6ICAgcGVuZGluZyA9IGdyb3VwID8gJnQtPnNpZ25hbC0+c2hhcmVkX3BlbmRpbmcgOiAmdC0+cGVuZGluZzsKKwkuLi4KKworVGhlcmUgd2VyZSBtb3JlIHJlc3VsdHMsIGJ1dCBub25lIG9mIHRoZW0gd2VyZSByZWxhdGVkIHRvIGxpc3Qgb3BlcmF0aW9ucywKK2FuZCB0aGVzZSB3ZXJlIHRoZSBvbmx5IGFzc2lnbm1lbnRzLiBXZSBpbnNwZWN0IHRoZSBsaW5lIG51bWJlcnMgbW9yZSBjbG9zZWx5CithbmQgZmluZCB0aGF0IHRoaXMgaXMgaW5kZWVkIHdoZXJlIGl0ZW1zIGFyZSBiZWluZyBhZGRlZCB0byB0aGUgbGlzdDoKKworODE2IHN0YXRpYyBpbnQgc2VuZF9zaWduYWwoaW50IHNpZywgc3RydWN0IHNpZ2luZm8gKmluZm8sIHN0cnVjdCB0YXNrX3N0cnVjdCAqdCwKKzgxNyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ3JvdXApCis4MTggeworLi4uCis4MjggICAgICAgICBwZW5kaW5nID0gZ3JvdXAgPyAmdC0+c2lnbmFsLT5zaGFyZWRfcGVuZGluZyA6ICZ0LT5wZW5kaW5nOworLi4uCis4NTEgICAgICAgICBxID0gX19zaWdxdWV1ZV9hbGxvYyh0LCBHRlBfQVRPTUlDLCAoc2lnIDwgU0lHUlRNSU4gJiYKKzg1MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNfc2lfc3BlY2lhbChpbmZvKSB8fAorODUzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLT5zaV9jb2RlID49IDApKSk7Cis4NTQgICAgICAgICBpZiAocSkgeworODU1ICAgICAgICAgICAgICAgICBsaXN0X2FkZF90YWlsKCZxLT5saXN0LCAmcGVuZGluZy0+bGlzdCk7CisuLi4KKzg5MCB9CisKK2FuZDoKKworMTMwOSBpbnQgc2VuZF9zaWdxdWV1ZShzdHJ1Y3Qgc2lncXVldWUgKnEsIHN0cnVjdCB0YXNrX3N0cnVjdCAqdCwgaW50IGdyb3VwKQorMTMxMCB7CisuLi4uCisxMzM5ICAgICAgICAgcGVuZGluZyA9IGdyb3VwID8gJnQtPnNpZ25hbC0+c2hhcmVkX3BlbmRpbmcgOiAmdC0+cGVuZGluZzsKKzEzNDAgICAgICAgICBsaXN0X2FkZF90YWlsKCZxLT5saXN0LCAmcGVuZGluZy0+bGlzdCk7CisuLi4uCisxMzQ3IH0KKworSW4gdGhlIGZpcnN0IGNhc2UsIHRoZSBsaXN0IGVsZW1lbnQgd2UgYXJlIGxvb2tpbmcgZm9yLCAicSIsIGlzIGJlaW5nIHJldHVybmVkCitmcm9tIHRoZSBmdW5jdGlvbiBfX3NpZ3F1ZXVlX2FsbG9jKCksIHdoaWNoIGxvb2tzIGxpa2UgYW4gYWxsb2NhdGlvbiBmdW5jdGlvbi4KK0xldCdzIHRha2UgYSBsb29rIGF0IGl0OgorCisxODcgc3RhdGljIHN0cnVjdCBzaWdxdWV1ZSAqX19zaWdxdWV1ZV9hbGxvYyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQsIGdmcF90IGZsYWdzLAorMTg4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG92ZXJyaWRlX3JsaW1pdCkKKzE4OSB7CisxOTAgICAgICAgICBzdHJ1Y3Qgc2lncXVldWUgKnEgPSBOVUxMOworMTkxICAgICAgICAgc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyOworMTkyIAorMTkzICAgICAgICAgLyoKKzE5NCAgICAgICAgICAqIFdlIHdvbid0IGdldCBwcm9ibGVtcyB3aXRoIHRoZSB0YXJnZXQncyBVSUQgY2hhbmdpbmcgdW5kZXIgdXMKKzE5NSAgICAgICAgICAqIGJlY2F1c2UgY2hhbmdpbmcgaXQgcmVxdWlyZXMgUkNVIGJlIHVzZWQsIGFuZCBpZiB0ICE9IGN1cnJlbnQsIHRoZQorMTk2ICAgICAgICAgICogY2FsbGVyIG11c3QgYmUgaG9sZGluZyB0aGUgUkNVIHJlYWRsb2NrIChieSB3YXkgb2YgYSBzcGlubG9jaykgYW5kCisxOTcgICAgICAgICAgKiB3ZSB1c2UgUkNVIHByb3RlY3Rpb24gaGVyZQorMTk4ICAgICAgICAgICovCisxOTkgICAgICAgICB1c2VyID0gZ2V0X3VpZChfX3Rhc2tfY3JlZCh0KS0+dXNlcik7CisyMDAgICAgICAgICBhdG9taWNfaW5jKCZ1c2VyLT5zaWdwZW5kaW5nKTsKKzIwMSAgICAgICAgIGlmIChvdmVycmlkZV9ybGltaXQgfHwKKzIwMiAgICAgICAgICAgICBhdG9taWNfcmVhZCgmdXNlci0+c2lncGVuZGluZykgPD0KKzIwMyAgICAgICAgICAgICAgICAgICAgICAgICB0LT5zaWduYWwtPnJsaW1bUkxJTUlUX1NJR1BFTkRJTkddLnJsaW1fY3VyKQorMjA0ICAgICAgICAgICAgICAgICBxID0ga21lbV9jYWNoZV9hbGxvYyhzaWdxdWV1ZV9jYWNoZXAsIGZsYWdzKTsKKzIwNSAgICAgICAgIGlmICh1bmxpa2VseShxID09IE5VTEwpKSB7CisyMDYgICAgICAgICAgICAgICAgIGF0b21pY19kZWMoJnVzZXItPnNpZ3BlbmRpbmcpOworMjA3ICAgICAgICAgICAgICAgICBmcmVlX3VpZCh1c2VyKTsKKzIwOCAgICAgICAgIH0gZWxzZSB7CisyMDkgICAgICAgICAgICAgICAgIElOSVRfTElTVF9IRUFEKCZxLT5saXN0KTsKKzIxMCAgICAgICAgICAgICAgICAgcS0+ZmxhZ3MgPSAwOworMjExICAgICAgICAgICAgICAgICBxLT51c2VyID0gdXNlcjsKKzIxMiAgICAgICAgIH0KKzIxMyAKKzIxNCAgICAgICAgIHJldHVybiBxOworMjE1IH0KKworV2Ugc2VlIHRoYXQgdGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyBxLT5saXN0LCBxLT5mbGFncywgYW5kIHEtPnVzZXIuIEl0IHNlZW1zCit0aGF0IG5vdyBpcyB0aGUgdGltZSB0byBsb29rIGF0IHRoZSBkZWZpbml0aW9uIG9mICJzdHJ1Y3Qgc2lncXVldWUiLCBlLmcuOgorCisxNCBzdHJ1Y3Qgc2lncXVldWUgeworMTUgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CisxNiAgICAgICAgIGludCBmbGFnczsKKzE3ICAgICAgICAgc2lnaW5mb190IGluZm87CisxOCAgICAgICAgIHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcjsKKzE5IH07CisKK0FuZCwgeW91IG1pZ2h0IHJlbWVtYmVyLCBpdCB3YXMgYSBtZW1jcHkoKSBvbiAmZmlyc3QtPmluZm8gdGhhdCBjYXVzZWQgdGhlCit3YXJuaW5nLCBzbyB0aGlzIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIEl0IGFsc28gc2VlbXMgcmVhc29uYWJsZSB0byBhc3N1bWUgdGhhdAoraXQgaXMgdGhlIGNhbGxlciBvZiBfX3NpZ3F1ZXVlX2FsbG9jKCkgdGhhdCBoYXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIGZpbGxpbmcKK291dCAoaW5pdGlhbGl6aW5nKSB0aGlzIG1lbWJlci4KKworQnV0IGp1c3Qgd2hpY2ggZmllbGRzIG9mIHRoZSBzdHJ1Y3Qgd2VyZSB1bmluaXRpYWxpemVkPyBMZXQncyBsb29rIGF0CitrbWVtY2hlY2sncyByZXBvcnQgYWdhaW46CisKK1dBUk5JTkc6IGttZW1jaGVjazogQ2F1Z2h0IDMyLWJpdCByZWFkIGZyb20gdW5pbml0aWFsaXplZCBtZW1vcnkgKGZmZmY4ODAwM2U0YTIwMjQpCis4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4OGZmZmYwMDAwMDAwMDAwMDAwMDAwCisgaSBpIGkgaSB1IHUgdSB1IGkgaSBpIGkgaSBpIGkgaSB1IHUgdSB1IHUgdSB1IHUgdSB1IHUgdSB1IHUgdSB1CisgICAgICAgICBeCisKK1RoZXNlIGZpcnN0IHR3byBsaW5lcyBhcmUgdGhlIG1lbW9yeSBkdW1wIG9mIHRoZSBtZW1vcnkgb2JqZWN0IGl0c2VsZiwgYW5kIHRoZQorc2hhZG93IGJ5dGVtYXAsIHJlc3BlY3RpdmVseS4gVGhlIG1lbW9yeSBvYmplY3QgaXRzZWxmIGlzIGluIHRoaXMgY2FzZQorJmZpcnN0LT5pbmZvLiBKdXN0IGJld2FyZSB0aGF0IHRoZSBzdGFydCBvZiB0aGlzIGR1bXAgaXMgTk9UIHRoZSBzdGFydCBvZiB0aGUKK29iamVjdCBpdHNlbGYhIFRoZSBwb3NpdGlvbiBvZiB0aGUgY2FyZXQgKF4pIGNvcnJlc3BvbmRzIHdpdGggdGhlIGFkZHJlc3Mgb2YKK3RoZSByZWFkIChmZmZmODgwMDNlNGEyMDI0KS4KKworVGhlIHNoYWRvdyBieXRlbWFwIGR1bXAgbGVnZW5kIGlzIGFzIGZvbGxvd3M6CisKKyAgaSAtIGluaXRpYWxpemVkCisgIHUgLSB1bmluaXRpYWxpemVkCisgIGEgLSB1bmFsbG9jYXRlZCAobWVtb3J5IGhhcyBiZWVuIGFsbG9jYXRlZCBieSB0aGUgc2xhYiBsYXllciwgYnV0IGhhcyBub3QKKyAgICAgIHlldCBiZWVuIGhhbmRlZCBvZmYgdG8gYW55Ym9keSkKKyAgZiAtIGZyZWVkIChtZW1vcnkgaGFzIGJlZW4gYWxsb2NhdGVkIGJ5IHRoZSBzbGFiIGxheWVyLCBidXQgaGFzIGJlZW4gZnJlZWQKKyAgICAgIGJ5IHRoZSBwcmV2aW91cyBvd25lcikKKworSW4gb3JkZXIgdG8gZmlndXJlIG91dCB3aGVyZSAocmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBvYmplY3QpIHRoZQordW5pbml0aWFsaXplZCBtZW1vcnkgd2FzIGxvY2F0ZWQsIHdlIGhhdmUgdG8gbG9vayBhdCB0aGUgZGlzYXNzZW1ibHkuIEZvcgordGhhdCwgd2UnbGwgbmVlZCB0aGUgUklQIGFkZHJlc3MgYWdhaW46CisKK1JJUDogMDAxMDpbPGZmZmZmZmZmODEwNGVkZTg+XSAgWzxmZmZmZmZmZjgxMDRlZGU4Pl0gX19kZXF1ZXVlX3NpZ25hbCsweGM4LzB4MTkwCisKKwkkIG9iamR1bXAgLWQgLS1uby1zaG93LXJhdy1pbnNuIHZtbGludXggfCBncmVwIC1DIDggZmZmZmZmZmY4MTA0ZWRlODoKKwlmZmZmZmZmZjgxMDRlZGM4OiAgICAgICBtb3YgICAgJXI4LDB4OCglcjgpCisJZmZmZmZmZmY4MTA0ZWRjYzogICAgICAgdGVzdCAgICVyMTBkLCVyMTBkCisJZmZmZmZmZmY4MTA0ZWRjZjogICAgICAganMgICAgIGZmZmZmZmZmODEwNGVlODggPF9fZGVxdWV1ZV9zaWduYWwrMHgxNjg+CisJZmZmZmZmZmY4MTA0ZWRkNTogICAgICAgbW92ICAgICVyYXgsJXJkeAorCWZmZmZmZmZmODEwNGVkZDg6ICAgICAgIG1vdiAgICAkMHhjLCVlY3gKKwlmZmZmZmZmZjgxMDRlZGRkOiAgICAgICBtb3YgICAgJXIxMywlcmRpCisJZmZmZmZmZmY4MTA0ZWRlMDogICAgICAgbW92ICAgICQweDMwLCVlYXgKKwlmZmZmZmZmZjgxMDRlZGU1OiAgICAgICBtb3YgICAgJXJkeCwlcnNpCisJZmZmZmZmZmY4MTA0ZWRlODogICAgICAgcmVwIG1vdnNsICVkczooJXJzaSksJWVzOiglcmRpKQorCWZmZmZmZmZmODEwNGVkZWE6ICAgICAgIHRlc3QgICAkMHgyLCVhbAorCWZmZmZmZmZmODEwNGVkZWM6ICAgICAgIGplICAgICBmZmZmZmZmZjgxMDRlZGYwIDxfX2RlcXVldWVfc2lnbmFsKzB4ZDA+CisJZmZmZmZmZmY4MTA0ZWRlZTogICAgICAgbW92c3cgICVkczooJXJzaSksJWVzOiglcmRpKQorCWZmZmZmZmZmODEwNGVkZjA6ICAgICAgIHRlc3QgICAkMHgxLCVhbAorCWZmZmZmZmZmODEwNGVkZjI6ICAgICAgIGplICAgICBmZmZmZmZmZjgxMDRlZGY1IDxfX2RlcXVldWVfc2lnbmFsKzB4ZDU+CisJZmZmZmZmZmY4MTA0ZWRmNDogICAgICAgbW92c2IgICVkczooJXJzaSksJWVzOiglcmRpKQorCWZmZmZmZmZmODEwNGVkZjU6ICAgICAgIG1vdiAgICAlcjgsJXJkaQorCWZmZmZmZmZmODEwNGVkZjg6ICAgICAgIGNhbGxxICBmZmZmZmZmZjgxMDRkZTYwIDxfX3NpZ3F1ZXVlX2ZyZWU+CisKK0FzIGV4cGVjdGVkLCBpdCdzIHRoZSAicmVwIG1vdnNsIiBpbnN0cnVjdGlvbiBmcm9tIHRoZSBtZW1jcHkoKSB0aGF0IGNhdXNlcwordGhlIHdhcm5pbmcuIFdlIGtub3cgYWJvdXQgUkVQIE1PVlNMIHRoYXQgaXQgdXNlcyB0aGUgcmVnaXN0ZXIgUkNYIHRvIGNvdW50Cit0aGUgbnVtYmVyIG9mIHJlbWFpbmluZyBpdGVyYXRpb25zLiBCeSB0YWtpbmcgYSBsb29rIGF0IHRoZSByZWdpc3RlciBkdW1wCithZ2FpbiAoZnJvbSB0aGUga21lbWNoZWNrIHJlcG9ydCksIHdlIGNhbiBmaWd1cmUgb3V0IGhvdyBtYW55IGJ5dGVzIHdlcmUgbGVmdAordG8gY29weToKKworUkFYOiAwMDAwMDAwMDAwMDAwMDMwIFJCWDogZmZmZjg4MDAzZDRlYTk2OCBSQ1g6IDAwMDAwMDAwMDAwMDAwMDkKKworQnkgbG9va2luZyBhdCB0aGUgZGlzYXNzZW1ibHksIHdlIGFsc28gc2VlIHRoYXQgJWVjeCBpcyBiZWluZyBsb2FkZWQgd2l0aCB0aGUKK3ZhbHVlICQweGMganVzdCBiZWZvcmUgKGZmZmZmZmZmODEwNGVkZDgpLCBzbyB3ZSBhcmUgdmVyeSBsdWNreS4gS2VlcCBpbiBtaW5kCit0aGF0IHRoaXMgaXMgdGhlIG51bWJlciBvZiBpdGVyYXRpb25zLCBub3QgYnl0ZXMuIEFuZCBzaW5jZSB0aGlzIGlzIGEgImxvbmciCitvcGVyYXRpb24sIHdlIG5lZWQgdG8gbXVsdGlwbHkgYnkgNCB0byBnZXQgdGhlIG51bWJlciBvZiBieXRlcy4gU28gdGhpcyBtZWFucwordGhhdCB0aGUgdW5pbml0aWFsaXplZCB2YWx1ZSB3YXMgZW5jb3VudGVyZWQgYXQgNCAqICgweGMgLSAweDkpID0gMTIgYnl0ZXMKK2Zyb20gdGhlIHN0YXJ0IG9mIHRoZSBvYmplY3QuCisKK1dlIGNhbiBub3cgdHJ5IHRvIGZpZ3VyZSBvdXQgd2hpY2ggZmllbGQgb2YgdGhlICJzdHJ1Y3Qgc2lnaW5mbyIgdGhhdCB3YXMgbm90Citpbml0aWFsaXplZC4gVGhpcyBpcyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJ1Y3Q6CisKKzQwIHR5cGVkZWYgc3RydWN0IHNpZ2luZm8geworNDEgICAgICAgICBpbnQgc2lfc2lnbm87Cis0MiAgICAgICAgIGludCBzaV9lcnJubzsKKzQzICAgICAgICAgaW50IHNpX2NvZGU7Cis0NCAgICAgICAgICAgICAgICAgCis0NSAgICAgICAgIHVuaW9uIHsKKy4uCis5MiAgICAgICAgIH0gX3NpZmllbGRzOworOTMgfSBzaWdpbmZvX3Q7CisKK09uIDY0LWJpdCwgdGhlIGludCBpcyA0IGJ5dGVzIGxvbmcsIHNvIGl0IG11c3QgdGhlIHVuaW9uIG1lbWJlciB0aGF0IGhhcworbm90IGJlZW4gaW5pdGlhbGl6ZWQuIFdlIGNhbiB2ZXJpZnkgdGhpcyB1c2luZyBnZGI6CisKKwkkIGdkYiB2bWxpbnV4CisJLi4uCisJKGdkYikgcCAmKChzdHJ1Y3Qgc2lnaW5mbyAqKSAwKS0+X3NpZmllbGRzCisJJDEgPSAodW5pb24gey4uLn0gKikgMHgxMAorCitBY3R1YWxseSwgaXQgc2VlbXMgdGhhdCB0aGUgdW5pb24gbWVtYmVyIGlzIGxvY2F0ZWQgYXQgb2Zmc2V0IDB4MTAgLS0gd2hpY2gKK21lYW5zIHRoYXQgZ2NjIGhhcyBpbnNlcnRlZCA0IGJ5dGVzIG9mIHBhZGRpbmcgYmV0d2VlbiB0aGUgbWVtYmVycyBzaV9jb2RlCithbmQgX3NpZmllbGRzLiBXZSBjYW4gbm93IGdldCBhIGZ1bGxlciBwaWN0dXJlIG9mIHRoZSBtZW1vcnkgZHVtcDoKKworICAgICAgICAgXy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PiBzaV9jb2RlCisgICAgICAgIC8gICAgICAgIF8tLS0tLS0tLS0tLS0tLS0tLS0tLT0+IChwYWRkaW5nKQorICAgICAgIHwgICAgICAgIC8gICAgICAgIF8tLS0tLS0tLS0tLS09PiBfc2lmaWVsZHMoLl9raWxsLl9waWQpCisgICAgICAgfCAgICAgICB8ICAgICAgICAvICAgICAgICBfLS0tLT0+IF9zaWZpZWxkcyguX2tpbGwuX3VpZCkKKyAgICAgICB8ICAgICAgIHwgICAgICAgfCAgICAgICAgLyAKKy0tLS0tLS18LS0tLS0tLXwtLS0tLS0tfC0tLS0tLS18Cis4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4OGZmZmYwMDAwMDAwMDAwMDAwMDAwCisgaSBpIGkgaSB1IHUgdSB1IGkgaSBpIGkgaSBpIGkgaSB1IHUgdSB1IHUgdSB1IHUgdSB1IHUgdSB1IHUgdSB1CisKK1RoaXMgYWxsb3dzIHVzIHRvIHJlYWxpemUgYW5vdGhlciBpbXBvcnRhbnQgZmFjdDogc2lfY29kZSBjb250YWlucyB0aGUgdmFsdWUKKzB4ODAuIFJlbWVtYmVyIHRoYXQgeDg2IGlzIGxpdHRsZSBlbmRpYW4sIHNvIHRoZSBmaXJzdCA0IGJ5dGVzICI4MDAwMDAwMCIgYXJlCityZWFsbHkgdGhlIG51bWJlciAweDAwMDAwMDgwLiBXaXRoIGEgYml0IG9mIHJlc2VhcmNoLCB3ZSBmaW5kIHRoYXQgdGhpcyBpcworYWN0dWFsbHkgdGhlIGNvbnN0YW50IFNJX0tFUk5FTCBkZWZpbmVkIGluIGluY2x1ZGUvYXNtLWdlbmVyaWMvc2lnaW5mby5oOgorCisxNDQgI2RlZmluZSBTSV9LRVJORUwgICAgICAgMHg4MCAgICAgICAgICAgIC8qIHNlbnQgYnkgdGhlIGtlcm5lbCBmcm9tIHNvbWV3aGVyZSAgICAgKi8KKworVGhpcyBtYWNybyBpcyB1c2VkIGluIGV4YWN0bHkgb25lIHBsYWNlIGluIHRoZSB4ODYga2VybmVsOiBJbiBzZW5kX3NpZ25hbCgpCitpbiBrZXJuZWwvc2lnbmFsLmM6CisKKzgxNiBzdGF0aWMgaW50IHNlbmRfc2lnbmFsKGludCBzaWcsIHN0cnVjdCBzaWdpbmZvICppbmZvLCBzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQsCis4MTcgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGdyb3VwKQorODE4IHsKKy4uLgorODI4ICAgICAgICAgcGVuZGluZyA9IGdyb3VwID8gJnQtPnNpZ25hbC0+c2hhcmVkX3BlbmRpbmcgOiAmdC0+cGVuZGluZzsKKy4uLgorODUxICAgICAgICAgcSA9IF9fc2lncXVldWVfYWxsb2ModCwgR0ZQX0FUT01JQywgKHNpZyA8IFNJR1JUTUlOICYmCis4NTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzX3NpX3NwZWNpYWwoaW5mbykgfHwKKzg1MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+c2lfY29kZSA+PSAwKSkpOworODU0ICAgICAgICAgaWYgKHEpIHsKKzg1NSAgICAgICAgICAgICAgICAgbGlzdF9hZGRfdGFpbCgmcS0+bGlzdCwgJnBlbmRpbmctPmxpc3QpOworODU2ICAgICAgICAgICAgICAgICBzd2l0Y2ggKCh1bnNpZ25lZCBsb25nKSBpbmZvKSB7CisuLi4KKzg2NSAgICAgICAgICAgICAgICAgY2FzZSAodW5zaWduZWQgbG9uZykgU0VORF9TSUdfUFJJVjoKKzg2NiAgICAgICAgICAgICAgICAgICAgICAgICBxLT5pbmZvLnNpX3NpZ25vID0gc2lnOworODY3ICAgICAgICAgICAgICAgICAgICAgICAgIHEtPmluZm8uc2lfZXJybm8gPSAwOworODY4ICAgICAgICAgICAgICAgICAgICAgICAgIHEtPmluZm8uc2lfY29kZSA9IFNJX0tFUk5FTDsKKzg2OSAgICAgICAgICAgICAgICAgICAgICAgICBxLT5pbmZvLnNpX3BpZCA9IDA7Cis4NzAgICAgICAgICAgICAgICAgICAgICAgICAgcS0+aW5mby5zaV91aWQgPSAwOworODcxICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworLi4uCis4OTAgfQorCitOb3Qgb25seSBkb2VzIHRoaXMgbWF0Y2ggd2l0aCB0aGUgLnNpX2NvZGUgbWVtYmVyLCBpdCBhbHNvIG1hdGNoZXMgdGhlIHBsYWNlCit3ZSBmb3VuZCBlYXJsaWVyIHdoZW4gbG9va2luZyBmb3Igd2hlcmUgc2lnaW5mb190IG9iamVjdHMgYXJlIGVucXVldWVkIG9uIHRoZQorInNoYXJlZF9wZW5kaW5nIiBsaXN0LgorCitTbyB0byBzdW0gdXA6IEl0IHNlZW1zIHRoYXQgaXQgaXMgdGhlIHBhZGRpbmcgaW50cm9kdWNlZCBieSB0aGUgY29tcGlsZXIKK2JldHdlZW4gdHdvIHN0cnVjdCBmaWVsZHMgdGhhdCBpcyB1bmluaXRpYWxpemVkLCBhbmQgdGhpcyBnZXRzIHJlcG9ydGVkIHdoZW4KK3dlIGRvIGEgbWVtY3B5KCkgb24gdGhlIHN0cnVjdC4gVGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgaWRlbnRpZmllZCBhIGZhbHNlCitwb3NpdGl2ZSB3YXJuaW5nLgorCitOb3JtYWxseSwga21lbWNoZWNrIHdpbGwgbm90IHJlcG9ydCB1bmluaXRpYWxpemVkIGFjY2Vzc2VzIGluIG1lbWNweSgpIGNhbGxzCit3aGVuIGJvdGggdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYWRkcmVzc2VzIGFyZSB0cmFja2VkLiAoSW5zdGVhZCwgd2UgY29weQordGhlIHNoYWRvdyBieXRlbWFwIGFzIHdlbGwpLiBJbiB0aGlzIGNhc2UsIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGNsZWFybHkKK3dhcyBub3QgdHJhY2tlZC4gV2UgY2FuIGRpZyBhIGxpdHRsZSBkZWVwZXIgaW50byB0aGUgc3RhY2sgdHJhY2UgZnJvbSBhYm92ZToKKworCWFyY2gveDg2L2tlcm5lbC9zaWduYWwuYzo4MDUKKwlhcmNoL3g4Ni9rZXJuZWwvc2lnbmFsLmM6ODcxCisJYXJjaC94ODYva2VybmVsL2VudHJ5XzY0LlM6Njk0CisKK0FuZCB3ZSBjbGVhcmx5IHNlZSB0aGF0IHRoZSBkZXN0aW5hdGlvbiBzaWdpbmZvIG9iamVjdCBpcyBsb2NhdGVkIG9uIHRoZQorc3RhY2s6CisKKzc4MiBzdGF0aWMgdm9pZCBkb19zaWduYWwoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCis3ODMgeworNzg0ICAgICAgICAgc3RydWN0IGtfc2lnYWN0aW9uIGthOworNzg1ICAgICAgICAgc2lnaW5mb190IGluZm87CisuLi4KKzgwNCAgICAgICAgIHNpZ25yID0gZ2V0X3NpZ25hbF90b19kZWxpdmVyKCZpbmZvLCAma2EsIHJlZ3MsIE5VTEwpOworLi4uCis4NTQgfQorCitBbmQgdGhpcyAmaW5mbyBpcyB3aGF0IGV2ZW50dWFsbHkgZ2V0cyBwYXNzZWQgdG8gY29weV9zaWdpbmZvKCkgYXMgdGhlCitkZXN0aW5hdGlvbiBhcmd1bWVudC4KKworTm93LCBldmVuIHRob3VnaCB3ZSBkaWRuJ3QgZmluZCBhbiBhY3R1YWwgZXJyb3IgaGVyZSwgdGhlIGV4YW1wbGUgaXMgc3RpbGwgYQorZ29vZCBvbmUsIGJlY2F1c2UgaXQgc2hvd3MgaG93IG9uZSB3b3VsZCBnbyBhYm91dCB0byBmaW5kIG91dCB3aGF0IHRoZSByZXBvcnQKK3dhcyBhbGwgYWJvdXQuCisKKworMy40LiBBbm5vdGF0aW5nIGZhbHNlIHBvc2l0aXZlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGVyZSBhcmUgYSBmZXcgZGlmZmVyZW50IHdheXMgdG8gbWFrZSBhbm5vdGF0aW9ucyBpbiB0aGUgc291cmNlIGNvZGUgdGhhdAord2lsbCBrZWVwIGttZW1jaGVjayBmcm9tIGNoZWNraW5nIGFuZCByZXBvcnRpbmcgY2VydGFpbiBhbGxvY2F0aW9ucy4gSGVyZQordGhleSBhcmU6CisKKyAgbyBfX0dGUF9OT1RSQUNLX0ZBTFNFX1BPU0lUSVZFCisKKwlUaGlzIGZsYWcgY2FuIGJlIHBhc3NlZCB0byBrbWFsbG9jKCkgb3Iga21lbV9jYWNoZV9hbGxvYygpICh0aGVyZWZvcmUKKwlhbHNvIHRvIG90aGVyIGZ1bmN0aW9ucyB0aGF0IGVuZCB1cCBjYWxsaW5nIG9uZSBvZiB0aGVzZSkgdG8gaW5kaWNhdGUKKwl0aGF0IHRoZSBhbGxvY2F0aW9uIHNob3VsZCBub3QgYmUgdHJhY2tlZCBiZWNhdXNlIGl0IHdvdWxkIGxlYWQgdG8KKwlhIGZhbHNlIHBvc2l0aXZlIHJlcG9ydC4gVGhpcyBpcyBhICJiaWcgaGFtbWVyIiB3YXkgb2Ygc2lsZW5jaW5nCisJa21lbWNoZWNrOyBhZnRlciBhbGwsIGV2ZW4gaWYgdGhlIGZhbHNlIHBvc2l0aXZlIHBlcnRhaW5zIHRvIAorCXBhcnRpY3VsYXIgZmllbGQgaW4gYSBzdHJ1Y3QsIGZvciBleGFtcGxlLCB3ZSB3aWxsIG5vdyBsb3NlIHRoZQorCWFiaWxpdHkgdG8gZmluZCAocmVhbCkgZXJyb3JzIGluIG90aGVyIHBhcnRzIG9mIHRoZSBzYW1lIHN0cnVjdC4KKworCUV4YW1wbGU6CisKKwkgICAgLyogTm8gd2FybmluZ3Mgd2lsbCBldmVyIHRyaWdnZXIgb24gYWNjZXNzaW5nIGFueSBwYXJ0IG9mIHggKi8KKwkgICAgeCA9IGttYWxsb2Moc2l6ZW9mICp4LCBHRlBfS0VSTkVMIHwgX19HRlBfTk9UUkFDS19GQUxTRV9QT1NJVElWRSk7CisKKyAgbyBrbWVtY2hlY2tfYml0ZmllbGRfYmVnaW4obmFtZSkva21lbWNoZWNrX2JpdGZpZWxkX2VuZChuYW1lKSBhbmQKKwlrbWVtY2hlY2tfYW5ub3RhdGVfYml0ZmllbGQocHRyLCBuYW1lKQorCisJVGhlIGZpcnN0IHR3byBvZiB0aGVzZSB0aHJlZSBtYWNyb3MgY2FuIGJlIHVzZWQgaW5zaWRlIHN0cnVjdAorCWRlZmluaXRpb25zIHRvIHNpZ25hbCwgcmVzcGVjdGl2ZWx5LCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgYQorCWJpdGZpZWxkLiBBZGRpdGlvbmFsbHksIHRoaXMgd2lsbCBhc3NpZ24gdGhlIGJpdGZpZWxkIGEgbmFtZSwgd2hpY2gKKwlpcyBnaXZlbiBhcyBhbiBhcmd1bWVudCB0byB0aGUgbWFjcm9zLgorCisJSGF2aW5nIHVzZWQgdGhlc2UgbWFya2Vycywgb25lIGNhbiBsYXRlciB1c2UKKwlrbWVtY2hlY2tfYW5ub3RhdGVfYml0ZmllbGQoKSBhdCB0aGUgcG9pbnQgb2YgYWxsb2NhdGlvbiwgdG8gaW5kaWNhdGUKKwl3aGljaCBwYXJ0cyBvZiB0aGUgYWxsb2NhdGlvbiBpcyBwYXJ0IG9mIGEgYml0ZmllbGQuCisKKwlFeGFtcGxlOgorCisJICAgIHN0cnVjdCBmb28geworCQlpbnQgeDsKKworCQlrbWVtY2hlY2tfYml0ZmllbGRfYmVnaW4oZmxhZ3MpOworCQlpbnQgZmxhZ19hOjE7CisJCWludCBmbGFnX2I6MTsKKwkJa21lbWNoZWNrX2JpdGZpZWxkX2VuZChmbGFncyk7CisKKwkJaW50IHk7CisJICAgIH07CisKKwkgICAgc3RydWN0IGZvbyAqeCA9IGttYWxsb2Moc2l6ZW9mICp4KTsKKworCSAgICAvKiBObyB3YXJuaW5ncyB3aWxsIHRyaWdnZXIgb24gYWNjZXNzaW5nIHRoZSBiaXRmaWVsZCBvZiB4ICovCisJICAgIGttZW1jaGVja19hbm5vdGF0ZV9iaXRmaWVsZCh4LCBmbGFncyk7CisKKwlOb3RlIHRoYXQga21lbWNoZWNrX2Fubm90YXRlX2JpdGZpZWxkKCkgY2FuIGJlIHVzZWQgZXZlbiBiZWZvcmUgdGhlCisJcmV0dXJuIHZhbHVlIG9mIGttYWxsb2MoKSBpcyBjaGVja2VkIC0tIGluIG90aGVyIHdvcmRzLCBwYXNzaW5nIE5VTEwKKwlhcyB0aGUgZmlyc3QgYXJndW1lbnQgaXMgbGVnYWwgKGFuZCB3aWxsIGRvIG5vdGhpbmcpLgorCisKKzQuIFJlcG9ydGluZyBlcnJvcnMKKz09PT09PT09PT09PT09PT09PT0KKworQXMgd2UgaGF2ZSBzZWVuLCBrbWVtY2hlY2sgd2lsbCBwcm9kdWNlIGZhbHNlIHBvc2l0aXZlIHJlcG9ydHMuIFRoZXJlZm9yZSwgaXQKK2lzIG5vdCB2ZXJ5IHdpc2UgdG8gYmxpbmRseSBwb3N0IGttZW1jaGVjayB3YXJuaW5ncyB0byBtYWlsaW5nIGxpc3RzIGFuZAorbWFpbnRhaW5lcnMuIEluc3RlYWQsIEkgZW5jb3VyYWdlIG1haW50YWluZXJzIGFuZCBkZXZlbG9wZXJzIHRvIGZpbmQgZXJyb3JzCitpbiB0aGVpciBvd24gY29kZS4gSWYgeW91IGdldCBhIHdhcm5pbmcsIHlvdSBjYW4gdHJ5IHRvIHdvcmsgYXJvdW5kIGl0LCB0cnkKK3RvIGZpZ3VyZSBvdXQgaWYgaXQncyBhIHJlYWwgZXJyb3Igb3Igbm90LCBvciBzaW1wbHkgaWdub3JlIGl0LiBNb3N0CitkZXZlbG9wZXJzIGtub3cgdGhlaXIgb3duIGNvZGUgYW5kIHdpbGwgcXVpY2tseSBhbmQgZWZmaWNpZW50bHkgZGV0ZXJtaW5lIHRoZQorcm9vdCBjYXVzZSBvZiBhIGttZW1jaGVjayByZXBvcnQuIFRoaXMgaXMgdGhlcmVmb3JlIGFsc28gdGhlIG1vc3QgZWZmaWNpZW50Cit3YXkgdG8gd29yayB3aXRoIGttZW1jaGVjay4KKworVGhhdCBzYWlkLCB3ZSAodGhlIGttZW1jaGVjayBtYWludGFpbmVycykgd2lsbCBhbHdheXMgYmUgb24gdGhlIGxvb2tvdXQgZm9yCitmYWxzZSBwb3NpdGl2ZXMgdGhhdCB3ZSBjYW4gYW5ub3RhdGUgYW5kIHNpbGVuY2UuIFNvIHdoYXRldmVyIHlvdSBmaW5kLAorcGxlYXNlIGRyb3AgdXMgYSBub3RlIHByaXZhdGVseSEgS2VybmVsIGNvbmZpZ3MgYW5kIHN0ZXBzIHRvIHJlcHJvZHVjZSAoaWYKK2F2YWlsYWJsZSkgYXJlIG9mIGNvdXJzZSBhIGdyZWF0IGhlbHAgdG9vLgorCitIYXBweSBoYWNraW5nIQorCisKKzUuIFRlY2huaWNhbCBkZXNjcmlwdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09CisKK2ttZW1jaGVjayB3b3JrcyBieSBtYXJraW5nIG1lbW9yeSBwYWdlcyBub24tcHJlc2VudC4gVGhpcyBtZWFucyB0aGF0IHdoZW5ldmVyCitzb21lYm9keSBhdHRlbXB0cyB0byBhY2Nlc3MgdGhlIHBhZ2UsIGEgcGFnZSBmYXVsdCBpcyBnZW5lcmF0ZWQuIFRoZSBwYWdlCitmYXVsdCBoYW5kbGVyIG5vdGljZXMgdGhhdCB0aGUgcGFnZSB3YXMgaW4gZmFjdCBvbmx5IGhpZGRlbiwgYW5kIHNvIGl0IGNhbGxzCitvbiB0aGUga21lbWNoZWNrIGNvZGUgdG8gbWFrZSBmdXJ0aGVyIGludmVzdGlnYXRpb25zLgorCitXaGVuIHRoZSBpbnZlc3RpZ2F0aW9ucyBhcmUgY29tcGxldGVkLCBrbWVtY2hlY2sgInNob3dzIiB0aGUgcGFnZSBieSBtYXJraW5nCitpdCBwcmVzZW50IChhcyBpdCB3b3VsZCBiZSB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcykuIFRoaXMgd2F5LCB0aGUKK2ludGVycnVwdGVkIGNvZGUgY2FuIGNvbnRpbnVlIGFzIHVzdWFsLgorCitCdXQgYWZ0ZXIgdGhlIGluc3RydWN0aW9uIGhhcyBiZWVuIGV4ZWN1dGVkLCB3ZSBzaG91bGQgaGlkZSB0aGUgcGFnZSBhZ2Fpbiwgc28KK3RoYXQgd2UgY2FuIGNhdGNoIHRoZSBuZXh0IGFjY2VzcyB0b28hIE5vdyBrbWVtY2hlY2sgbWFrZXMgdXNlIG9mIGEgZGVidWdnaW5nCitmZWF0dXJlIG9mIHRoZSBwcm9jZXNzb3IsIG5hbWVseSBzaW5nbGUtc3RlcHBpbmcuIFdoZW4gdGhlIHByb2Nlc3NvciBoYXMKK2ZpbmlzaGVkIHRoZSBvbmUgaW5zdHJ1Y3Rpb24gdGhhdCBnZW5lcmF0ZWQgdGhlIG1lbW9yeSBhY2Nlc3MsIGEgZGVidWcKK2V4Y2VwdGlvbiBpcyByYWlzZWQuIEZyb20gaGVyZSwgd2Ugc2ltcGx5IGhpZGUgdGhlIHBhZ2UgYWdhaW4gYW5kIGNvbnRpbnVlCitleGVjdXRpb24sIHRoaXMgdGltZSB3aXRoIHRoZSBzaW5nbGUtc3RlcHBpbmcgZmVhdHVyZSB0dXJuZWQgb2ZmLgorCitrbWVtY2hlY2sgcmVxdWlyZXMgc29tZSBhc3Npc3RhbmNlIGZyb20gdGhlIG1lbW9yeSBhbGxvY2F0b3IgaW4gb3JkZXIgdG8gd29yay4KK1RoZSBtZW1vcnkgYWxsb2NhdG9yIG5lZWRzIHRvCisKKyAgMS4gVGVsbCBrbWVtY2hlY2sgYWJvdXQgbmV3bHkgYWxsb2NhdGVkIHBhZ2VzIGFuZCBwYWdlcyB0aGF0IGFyZSBhYm91dCB0bworICAgICBiZSBmcmVlZC4gVGhpcyBhbGxvd3Mga21lbWNoZWNrIHRvIHNldCB1cCBhbmQgdGVhciBkb3duIHRoZSBzaGFkb3cgbWVtb3J5CisgICAgIGZvciB0aGUgcGFnZXMgaW4gcXVlc3Rpb24uIFRoZSBzaGFkb3cgbWVtb3J5IHN0b3JlcyB0aGUgc3RhdHVzIG9mIGVhY2gKKyAgICAgYnl0ZSBpbiB0aGUgYWxsb2NhdGlvbiBwcm9wZXIsIGUuZy4gd2hldGhlciBpdCBpcyBpbml0aWFsaXplZCBvcgorICAgICB1bmluaXRpYWxpemVkLgorCisgIDIuIFRlbGwga21lbWNoZWNrIHdoaWNoIHBhcnRzIG9mIG1lbW9yeSBzaG91bGQgYmUgbWFya2VkIHVuaW5pdGlhbGl6ZWQuCisgICAgIFRoZXJlIGFyZSBhY3R1YWxseSBhIGZldyBtb3JlIHN0YXRlcywgc3VjaCBhcyAibm90IHlldCBhbGxvY2F0ZWQiIGFuZAorICAgICAicmVjZW50bHkgZnJlZWQiLgorCitJZiBhIHNsYWIgY2FjaGUgaXMgc2V0IHVwIHVzaW5nIHRoZSBTTEFCX05PVFJBQ0sgZmxhZywgaXQgd2lsbCBuZXZlciByZXR1cm4KK21lbW9yeSB0aGF0IGNhbiB0YWtlIHBhZ2UgZmF1bHRzIGJlY2F1c2Ugb2Yga21lbWNoZWNrLgorCitJZiBhIHNsYWIgY2FjaGUgaXMgTk9UIHNldCB1cCB1c2luZyB0aGUgU0xBQl9OT1RSQUNLIGZsYWcsIGNhbGxlcnMgY2FuIHN0aWxsCityZXF1ZXN0IG1lbW9yeSB3aXRoIHRoZSBfX0dGUF9OT1RSQUNLIG9yIF9fR0ZQX05PVFJBQ0tfRkFMU0VfUE9TSVRJVkUgZmxhZ3MuCitUaGlzIGRvZXMgbm90IHByZXZlbnQgdGhlIHBhZ2UgZmF1bHRzIGZyb20gb2NjdXJyaW5nLCBob3dldmVyLCBidXQgbWFya3MgdGhlCitvYmplY3QgaW4gcXVlc3Rpb24gYXMgYmVpbmcgaW5pdGlhbGl6ZWQgc28gdGhhdCBubyB3YXJuaW5ncyB3aWxsIGV2ZXIgYmUKK3Byb2R1Y2VkIGZvciB0aGlzIG9iamVjdC4KKworQ3VycmVudGx5LCB0aGUgU0xBQiBhbmQgU0xVQiBhbGxvY2F0b3JzIGFyZSBzdXBwb3J0ZWQgYnkga21lbWNoZWNrLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9rbWVtbGVhay50eHQgYi9Eb2N1bWVudGF0aW9uL2ttZW1sZWFrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGUyNGFiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9rbWVtbGVhay50eHQKQEAgLTAsMCArMSwyMDMgQEAKK0tlcm5lbCBNZW1vcnkgTGVhayBEZXRlY3RvcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ludHJvZHVjdGlvbgorLS0tLS0tLS0tLS0tCisKK0ttZW1sZWFrIHByb3ZpZGVzIGEgd2F5IG9mIGRldGVjdGluZyBwb3NzaWJsZSBrZXJuZWwgbWVtb3J5IGxlYWtzIGluIGEKK3dheSBzaW1pbGFyIHRvIGEgdHJhY2luZyBnYXJiYWdlIGNvbGxlY3RvcgorKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dhcmJhZ2VfY29sbGVjdGlvbl8lMjhjb21wdXRlcl9zY2llbmNlJTI5I1RyYWNpbmdfZ2FyYmFnZV9jb2xsZWN0b3JzKSwKK3dpdGggdGhlIGRpZmZlcmVuY2UgdGhhdCB0aGUgb3JwaGFuIG9iamVjdHMgYXJlIG5vdCBmcmVlZCBidXQgb25seQorcmVwb3J0ZWQgdmlhIC9zeXMva2VybmVsL2RlYnVnL2ttZW1sZWFrLiBBIHNpbWlsYXIgbWV0aG9kIGlzIHVzZWQgYnkgdGhlCitWYWxncmluZCB0b29sIChtZW1jaGVjayAtLWxlYWstY2hlY2spIHRvIGRldGVjdCB0aGUgbWVtb3J5IGxlYWtzIGluCit1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucy4KK0ttZW1sZWFrIGlzIHN1cHBvcnRlZCBvbiB4ODYsIGFybSwgcG93ZXJwYywgc3BhcmMsIHNoLCBtaWNyb2JsYXplLCBwcGMsIG1pcHMsIHMzOTAsIG1ldGFnIGFuZCB0aWxlLgorCitVc2FnZQorLS0tLS0KKworQ09ORklHX0RFQlVHX0tNRU1MRUFLIGluICJLZXJuZWwgaGFja2luZyIgaGFzIHRvIGJlIGVuYWJsZWQuIEEga2VybmVsCit0aHJlYWQgc2NhbnMgdGhlIG1lbW9yeSBldmVyeSAxMCBtaW51dGVzIChieSBkZWZhdWx0KSBhbmQgcHJpbnRzIHRoZQorbnVtYmVyIG9mIG5ldyB1bnJlZmVyZW5jZWQgb2JqZWN0cyBmb3VuZC4gVG8gZGlzcGxheSB0aGUgZGV0YWlscyBvZiBhbGwKK3RoZSBwb3NzaWJsZSBtZW1vcnkgbGVha3M6CisKKyAgIyBtb3VudCAtdCBkZWJ1Z2ZzIG5vZGV2IC9zeXMva2VybmVsL2RlYnVnLworICAjIGNhdCAvc3lzL2tlcm5lbC9kZWJ1Zy9rbWVtbGVhaworCitUbyB0cmlnZ2VyIGFuIGludGVybWVkaWF0ZSBtZW1vcnkgc2NhbjoKKworICAjIGVjaG8gc2NhbiA+IC9zeXMva2VybmVsL2RlYnVnL2ttZW1sZWFrCisKK1RvIGNsZWFyIHRoZSBsaXN0IG9mIGFsbCBjdXJyZW50IHBvc3NpYmxlIG1lbW9yeSBsZWFrczoKKworICAjIGVjaG8gY2xlYXIgPiAvc3lzL2tlcm5lbC9kZWJ1Zy9rbWVtbGVhaworCitOZXcgbGVha3Mgd2lsbCB0aGVuIGNvbWUgdXAgdXBvbiByZWFkaW5nIC9zeXMva2VybmVsL2RlYnVnL2ttZW1sZWFrCithZ2Fpbi4KKworTm90ZSB0aGF0IHRoZSBvcnBoYW4gb2JqZWN0cyBhcmUgbGlzdGVkIGluIHRoZSBvcmRlciB0aGV5IHdlcmUgYWxsb2NhdGVkCithbmQgb25lIG9iamVjdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaXN0IG1heSBjYXVzZSBvdGhlciBzdWJzZXF1ZW50CitvYmplY3RzIHRvIGJlIHJlcG9ydGVkIGFzIG9ycGhhbi4KKworTWVtb3J5IHNjYW5uaW5nIHBhcmFtZXRlcnMgY2FuIGJlIG1vZGlmaWVkIGF0IHJ1bi10aW1lIGJ5IHdyaXRpbmcgdG8gdGhlCisvc3lzL2tlcm5lbC9kZWJ1Zy9rbWVtbGVhayBmaWxlLiBUaGUgZm9sbG93aW5nIHBhcmFtZXRlcnMgYXJlIHN1cHBvcnRlZDoKKworICBvZmYJCS0gZGlzYWJsZSBrbWVtbGVhayAoaXJyZXZlcnNpYmxlKQorICBzdGFjaz1vbgktIGVuYWJsZSB0aGUgdGFzayBzdGFja3Mgc2Nhbm5pbmcgKGRlZmF1bHQpCisgIHN0YWNrPW9mZgktIGRpc2FibGUgdGhlIHRhc2tzIHN0YWNrcyBzY2FubmluZworICBzY2FuPW9uCS0gc3RhcnQgdGhlIGF1dG9tYXRpYyBtZW1vcnkgc2Nhbm5pbmcgdGhyZWFkIChkZWZhdWx0KQorICBzY2FuPW9mZgktIHN0b3AgdGhlIGF1dG9tYXRpYyBtZW1vcnkgc2Nhbm5pbmcgdGhyZWFkCisgIHNjYW49PHNlY3M+CS0gc2V0IHRoZSBhdXRvbWF0aWMgbWVtb3J5IHNjYW5uaW5nIHBlcmlvZCBpbiBzZWNvbmRzCisJCSAgKGRlZmF1bHQgNjAwLCAwIHRvIHN0b3AgdGhlIGF1dG9tYXRpYyBzY2FubmluZykKKyAgc2NhbgkJLSB0cmlnZ2VyIGEgbWVtb3J5IHNjYW4KKyAgY2xlYXIJCS0gY2xlYXIgbGlzdCBvZiBjdXJyZW50IG1lbW9yeSBsZWFrIHN1c3BlY3RzLCBkb25lIGJ5CisJCSAgbWFya2luZyBhbGwgY3VycmVudCByZXBvcnRlZCB1bnJlZmVyZW5jZWQgb2JqZWN0cyBncmV5LAorCQkgIG9yIGZyZWUgYWxsIGttZW1sZWFrIG9iamVjdHMgaWYga21lbWxlYWsgaGFzIGJlZW4gZGlzYWJsZWQuCisgIGR1bXA9PGFkZHI+CS0gZHVtcCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb2JqZWN0IGZvdW5kIGF0IDxhZGRyPgorCitLbWVtbGVhayBjYW4gYWxzbyBiZSBkaXNhYmxlZCBhdCBib290LXRpbWUgYnkgcGFzc2luZyAia21lbWxlYWs9b2ZmIiBvbgordGhlIGtlcm5lbCBjb21tYW5kIGxpbmUuCisKK01lbW9yeSBtYXkgYmUgYWxsb2NhdGVkIG9yIGZyZWVkIGJlZm9yZSBrbWVtbGVhayBpcyBpbml0aWFsaXNlZCBhbmQKK3RoZXNlIGFjdGlvbnMgYXJlIHN0b3JlZCBpbiBhbiBlYXJseSBsb2cgYnVmZmVyLiBUaGUgc2l6ZSBvZiB0aGlzIGJ1ZmZlcgoraXMgY29uZmlndXJlZCB2aWEgdGhlIENPTkZJR19ERUJVR19LTUVNTEVBS19FQVJMWV9MT0dfU0laRSBvcHRpb24uCisKK0lmIENPTkZJR19ERUJVR19LTUVNTEVBS19ERUZBVUxUX09GRiBhcmUgZW5hYmxlZCwgdGhlIGttZW1sZWFrIGlzCitkaXNhYmxlZCBieSBkZWZhdWx0LiBQYXNzaW5nICJrbWVtbGVhaz1vbiIgb24gdGhlIGtlcm5lbCBjb21tYW5kCitsaW5lIGVuYWJsZXMgdGhlIGZ1bmN0aW9uLiAKKworQmFzaWMgQWxnb3JpdGhtCistLS0tLS0tLS0tLS0tLS0KKworVGhlIG1lbW9yeSBhbGxvY2F0aW9ucyB2aWEga21hbGxvYywgdm1hbGxvYywga21lbV9jYWNoZV9hbGxvYyBhbmQKK2ZyaWVuZHMgYXJlIHRyYWNlZCBhbmQgdGhlIHBvaW50ZXJzLCB0b2dldGhlciB3aXRoIGFkZGl0aW9uYWwKK2luZm9ybWF0aW9uIGxpa2Ugc2l6ZSBhbmQgc3RhY2sgdHJhY2UsIGFyZSBzdG9yZWQgaW4gYSByYnRyZWUuCitUaGUgY29ycmVzcG9uZGluZyBmcmVlaW5nIGZ1bmN0aW9uIGNhbGxzIGFyZSB0cmFja2VkIGFuZCB0aGUgcG9pbnRlcnMKK3JlbW92ZWQgZnJvbSB0aGUga21lbWxlYWsgZGF0YSBzdHJ1Y3R1cmVzLgorCitBbiBhbGxvY2F0ZWQgYmxvY2sgb2YgbWVtb3J5IGlzIGNvbnNpZGVyZWQgb3JwaGFuIGlmIG5vIHBvaW50ZXIgdG8gaXRzCitzdGFydCBhZGRyZXNzIG9yIHRvIGFueSBsb2NhdGlvbiBpbnNpZGUgdGhlIGJsb2NrIGNhbiBiZSBmb3VuZCBieQorc2Nhbm5pbmcgdGhlIG1lbW9yeSAoaW5jbHVkaW5nIHNhdmVkIHJlZ2lzdGVycykuIFRoaXMgbWVhbnMgdGhhdCB0aGVyZQorbWlnaHQgYmUgbm8gd2F5IGZvciB0aGUga2VybmVsIHRvIHBhc3MgdGhlIGFkZHJlc3Mgb2YgdGhlIGFsbG9jYXRlZAorYmxvY2sgdG8gYSBmcmVlaW5nIGZ1bmN0aW9uIGFuZCB0aGVyZWZvcmUgdGhlIGJsb2NrIGlzIGNvbnNpZGVyZWQgYQorbWVtb3J5IGxlYWsuCisKK1RoZSBzY2FubmluZyBhbGdvcml0aG0gc3RlcHM6CisKKyAgMS4gbWFyayBhbGwgb2JqZWN0cyBhcyB3aGl0ZSAocmVtYWluaW5nIHdoaXRlIG9iamVjdHMgd2lsbCBsYXRlciBiZQorICAgICBjb25zaWRlcmVkIG9ycGhhbikKKyAgMi4gc2NhbiB0aGUgbWVtb3J5IHN0YXJ0aW5nIHdpdGggdGhlIGRhdGEgc2VjdGlvbiBhbmQgc3RhY2tzLCBjaGVja2luZworICAgICB0aGUgdmFsdWVzIGFnYWluc3QgdGhlIGFkZHJlc3NlcyBzdG9yZWQgaW4gdGhlIHJidHJlZS4gSWYKKyAgICAgYSBwb2ludGVyIHRvIGEgd2hpdGUgb2JqZWN0IGlzIGZvdW5kLCB0aGUgb2JqZWN0IGlzIGFkZGVkIHRvIHRoZQorICAgICBncmF5IGxpc3QKKyAgMy4gc2NhbiB0aGUgZ3JheSBvYmplY3RzIGZvciBtYXRjaGluZyBhZGRyZXNzZXMgKHNvbWUgd2hpdGUgb2JqZWN0cworICAgICBjYW4gYmVjb21lIGdyYXkgYW5kIGFkZGVkIGF0IHRoZSBlbmQgb2YgdGhlIGdyYXkgbGlzdCkgdW50aWwgdGhlCisgICAgIGdyYXkgc2V0IGlzIGZpbmlzaGVkCisgIDQuIHRoZSByZW1haW5pbmcgd2hpdGUgb2JqZWN0cyBhcmUgY29uc2lkZXJlZCBvcnBoYW4gYW5kIHJlcG9ydGVkIHZpYQorICAgICAvc3lzL2tlcm5lbC9kZWJ1Zy9rbWVtbGVhaworCitTb21lIGFsbG9jYXRlZCBtZW1vcnkgYmxvY2tzIGhhdmUgcG9pbnRlcnMgc3RvcmVkIGluIHRoZSBrZXJuZWwncworaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIGFuZCB0aGV5IGNhbm5vdCBiZSBkZXRlY3RlZCBhcyBvcnBoYW5zLiBUbworYXZvaWQgdGhpcywga21lbWxlYWsgY2FuIGFsc28gc3RvcmUgdGhlIG51bWJlciBvZiB2YWx1ZXMgcG9pbnRpbmcgdG8gYW4KK2FkZHJlc3MgaW5zaWRlIHRoZSBibG9jayBhZGRyZXNzIHJhbmdlIHRoYXQgbmVlZCB0byBiZSBmb3VuZCBzbyB0aGF0IHRoZQorYmxvY2sgaXMgbm90IGNvbnNpZGVyZWQgYSBsZWFrLiBPbmUgZXhhbXBsZSBpcyBfX3ZtYWxsb2MoKS4KKworVGVzdGluZyBzcGVjaWZpYyBzZWN0aW9ucyB3aXRoIGttZW1sZWFrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVXBvbiBpbml0aWFsIGJvb3R1cCB5b3VyIC9zeXMva2VybmVsL2RlYnVnL2ttZW1sZWFrIG91dHB1dCBwYWdlIG1heSBiZQorcXVpdGUgZXh0ZW5zaXZlLiBUaGlzIGNhbiBhbHNvIGJlIHRoZSBjYXNlIGlmIHlvdSBoYXZlIHZlcnkgYnVnZ3kgY29kZQord2hlbiBkb2luZyBkZXZlbG9wbWVudC4gVG8gd29yayBhcm91bmQgdGhlc2Ugc2l0dWF0aW9ucyB5b3UgY2FuIHVzZSB0aGUKKydjbGVhcicgY29tbWFuZCB0byBjbGVhciBhbGwgcmVwb3J0ZWQgdW5yZWZlcmVuY2VkIG9iamVjdHMgZnJvbSB0aGUKKy9zeXMva2VybmVsL2RlYnVnL2ttZW1sZWFrIG91dHB1dC4gQnkgaXNzdWluZyBhICdzY2FuJyBhZnRlciBhICdjbGVhcicKK3lvdSBjYW4gZmluZCBuZXcgdW5yZWZlcmVuY2VkIG9iamVjdHM7IHRoaXMgc2hvdWxkIGhlbHAgd2l0aCB0ZXN0aW5nCitzcGVjaWZpYyBzZWN0aW9ucyBvZiBjb2RlLgorCitUbyB0ZXN0IGEgY3JpdGljYWwgc2VjdGlvbiBvbiBkZW1hbmQgd2l0aCBhIGNsZWFuIGttZW1sZWFrIGRvOgorCisgICMgZWNobyBjbGVhciA+IC9zeXMva2VybmVsL2RlYnVnL2ttZW1sZWFrCisgIC4uLiB0ZXN0IHlvdXIga2VybmVsIG9yIG1vZHVsZXMgLi4uCisgICMgZWNobyBzY2FuID4gL3N5cy9rZXJuZWwvZGVidWcva21lbWxlYWsKKworVGhlbiBhcyB1c3VhbCB0byBnZXQgeW91ciByZXBvcnQgd2l0aDoKKworICAjIGNhdCAvc3lzL2tlcm5lbC9kZWJ1Zy9rbWVtbGVhaworCitGcmVlaW5nIGttZW1sZWFrIGludGVybmFsIG9iamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUbyBhbGxvdyBhY2Nlc3MgdG8gcHJldmlvdXNseSBmb3VuZCBtZW1vcnkgbGVha3MgYWZ0ZXIga21lbWxlYWsgaGFzIGJlZW4KK2Rpc2FibGVkIGJ5IHRoZSB1c2VyIG9yIGR1ZSB0byBhbiBmYXRhbCBlcnJvciwgaW50ZXJuYWwga21lbWxlYWsgb2JqZWN0cword29uJ3QgYmUgZnJlZWQgd2hlbiBrbWVtbGVhayBpcyBkaXNhYmxlZCwgYW5kIHRob3NlIG9iamVjdHMgbWF5IG9jY3VweQorYSBsYXJnZSBwYXJ0IG9mIHBoeXNpY2FsIG1lbW9yeS4KKworSW4gdGhpcyBzaXR1YXRpb24sIHlvdSBtYXkgcmVjbGFpbSBtZW1vcnkgd2l0aDoKKworICAjIGVjaG8gY2xlYXIgPiAvc3lzL2tlcm5lbC9kZWJ1Zy9rbWVtbGVhaworCitLbWVtbGVhayBBUEkKKy0tLS0tLS0tLS0tLQorCitTZWUgdGhlIGluY2x1ZGUvbGludXgva21lbWxlYWsuaCBoZWFkZXIgZm9yIHRoZSBmdW5jdGlvbnMgcHJvdG90eXBlLgorCitrbWVtbGVha19pbml0CQkgLSBpbml0aWFsaXplIGttZW1sZWFrCitrbWVtbGVha19hbGxvYwkJIC0gbm90aWZ5IG9mIGEgbWVtb3J5IGJsb2NrIGFsbG9jYXRpb24KK2ttZW1sZWFrX2FsbG9jX3BlcmNwdQkgLSBub3RpZnkgb2YgYSBwZXJjcHUgbWVtb3J5IGJsb2NrIGFsbG9jYXRpb24KK2ttZW1sZWFrX2ZyZWUJCSAtIG5vdGlmeSBvZiBhIG1lbW9yeSBibG9jayBmcmVlaW5nCitrbWVtbGVha19mcmVlX3BhcnQJIC0gbm90aWZ5IG9mIGEgcGFydGlhbCBtZW1vcnkgYmxvY2sgZnJlZWluZwora21lbWxlYWtfZnJlZV9wZXJjcHUJIC0gbm90aWZ5IG9mIGEgcGVyY3B1IG1lbW9yeSBibG9jayBmcmVlaW5nCitrbWVtbGVha191cGRhdGVfdHJhY2UJIC0gdXBkYXRlIG9iamVjdCBhbGxvY2F0aW9uIHN0YWNrIHRyYWNlCitrbWVtbGVha19ub3RfbGVhawkgLSBtYXJrIGFuIG9iamVjdCBhcyBub3QgYSBsZWFrCitrbWVtbGVha19pZ25vcmUJCSAtIGRvIG5vdCBzY2FuIG9yIHJlcG9ydCBhbiBvYmplY3QgYXMgbGVhawora21lbWxlYWtfc2Nhbl9hcmVhCSAtIGFkZCBzY2FuIGFyZWFzIGluc2lkZSBhIG1lbW9yeSBibG9jawora21lbWxlYWtfbm9fc2NhbgkgLSBkbyBub3Qgc2NhbiBhIG1lbW9yeSBibG9jawora21lbWxlYWtfZXJhc2UJCSAtIGVyYXNlIGFuIG9sZCB2YWx1ZSBpbiBhIHBvaW50ZXIgdmFyaWFibGUKK2ttZW1sZWFrX2FsbG9jX3JlY3Vyc2l2ZSAtIGFzIGttZW1sZWFrX2FsbG9jIGJ1dCBjaGVja3MgdGhlIHJlY3Vyc2l2ZW5lc3MKK2ttZW1sZWFrX2ZyZWVfcmVjdXJzaXZlCSAtIGFzIGttZW1sZWFrX2ZyZWUgYnV0IGNoZWNrcyB0aGUgcmVjdXJzaXZlbmVzcworCitEZWFsaW5nIHdpdGggZmFsc2UgcG9zaXRpdmVzL25lZ2F0aXZlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZhbHNlIG5lZ2F0aXZlcyBhcmUgcmVhbCBtZW1vcnkgbGVha3MgKG9ycGhhbiBvYmplY3RzKSBidXQgbm90CityZXBvcnRlZCBieSBrbWVtbGVhayBiZWNhdXNlIHZhbHVlcyBmb3VuZCBkdXJpbmcgdGhlIG1lbW9yeSBzY2FubmluZworcG9pbnQgdG8gc3VjaCBvYmplY3RzLiBUbyByZWR1Y2UgdGhlIG51bWJlciBvZiBmYWxzZSBuZWdhdGl2ZXMsIGttZW1sZWFrCitwcm92aWRlcyB0aGUga21lbWxlYWtfaWdub3JlLCBrbWVtbGVha19zY2FuX2FyZWEsIGttZW1sZWFrX25vX3NjYW4gYW5kCitrbWVtbGVha19lcmFzZSBmdW5jdGlvbnMgKHNlZSBhYm92ZSkuIFRoZSB0YXNrIHN0YWNrcyBhbHNvIGluY3JlYXNlIHRoZQorYW1vdW50IG9mIGZhbHNlIG5lZ2F0aXZlcyBhbmQgdGhlaXIgc2Nhbm5pbmcgaXMgbm90IGVuYWJsZWQgYnkgZGVmYXVsdC4KKworVGhlIGZhbHNlIHBvc2l0aXZlcyBhcmUgb2JqZWN0cyB3cm9uZ2x5IHJlcG9ydGVkIGFzIGJlaW5nIG1lbW9yeSBsZWFrcworKG9ycGhhbikuIEZvciBvYmplY3RzIGtub3duIG5vdCB0byBiZSBsZWFrcywga21lbWxlYWsgcHJvdmlkZXMgdGhlCitrbWVtbGVha19ub3RfbGVhayBmdW5jdGlvbi4gVGhlIGttZW1sZWFrX2lnbm9yZSBjb3VsZCBhbHNvIGJlIHVzZWQgaWYKK3RoZSBtZW1vcnkgYmxvY2sgaXMga25vd24gbm90IHRvIGNvbnRhaW4gb3RoZXIgcG9pbnRlcnMgYW5kIGl0IHdpbGwgbm8KK2xvbmdlciBiZSBzY2FubmVkLgorCitTb21lIG9mIHRoZSByZXBvcnRlZCBsZWFrcyBhcmUgb25seSB0cmFuc2llbnQsIGVzcGVjaWFsbHkgb24gU01QCitzeXN0ZW1zLCBiZWNhdXNlIG9mIHBvaW50ZXJzIHRlbXBvcmFyaWx5IHN0b3JlZCBpbiBDUFUgcmVnaXN0ZXJzIG9yCitzdGFja3MuIEttZW1sZWFrIGRlZmluZXMgTVNFQ1NfTUlOX0FHRSAoZGVmYXVsdGluZyB0byAxMDAwKSByZXByZXNlbnRpbmcKK3RoZSBtaW5pbXVtIGFnZSBvZiBhbiBvYmplY3QgdG8gYmUgcmVwb3J0ZWQgYXMgYSBtZW1vcnkgbGVhay4KKworTGltaXRhdGlvbnMgYW5kIERyYXdiYWNrcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbWFpbiBkcmF3YmFjayBpcyB0aGUgcmVkdWNlZCBwZXJmb3JtYW5jZSBvZiBtZW1vcnkgYWxsb2NhdGlvbiBhbmQKK2ZyZWVpbmcuIFRvIGF2b2lkIG90aGVyIHBlbmFsdGllcywgdGhlIG1lbW9yeSBzY2FubmluZyBpcyBvbmx5IHBlcmZvcm1lZAord2hlbiB0aGUgL3N5cy9rZXJuZWwvZGVidWcva21lbWxlYWsgZmlsZSBpcyByZWFkLiBBbnl3YXksIHRoaXMgdG9vbCBpcworaW50ZW5kZWQgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcyB3aGVyZSB0aGUgcGVyZm9ybWFuY2UgbWlnaHQgbm90IGJlIHRoZQorbW9zdCBpbXBvcnRhbnQgcmVxdWlyZW1lbnQuCisKK1RvIGtlZXAgdGhlIGFsZ29yaXRobSBzaW1wbGUsIGttZW1sZWFrIHNjYW5zIGZvciB2YWx1ZXMgcG9pbnRpbmcgdG8gYW55CithZGRyZXNzIGluc2lkZSBhIGJsb2NrJ3MgYWRkcmVzcyByYW5nZS4gVGhpcyBtYXkgbGVhZCB0byBhbiBpbmNyZWFzZWQKK251bWJlciBvZiBmYWxzZSBuZWdhdGl2ZXMuIEhvd2V2ZXIsIGl0IGlzIGxpa2VseSB0aGF0IGEgcmVhbCBtZW1vcnkgbGVhaword2lsbCBldmVudHVhbGx5IGJlY29tZSB2aXNpYmxlLgorCitBbm90aGVyIHNvdXJjZSBvZiBmYWxzZSBuZWdhdGl2ZXMgaXMgdGhlIGRhdGEgc3RvcmVkIGluIG5vbi1wb2ludGVyCit2YWx1ZXMuIEluIGEgZnV0dXJlIHZlcnNpb24sIGttZW1sZWFrIGNvdWxkIG9ubHkgc2NhbiB0aGUgcG9pbnRlcgorbWVtYmVycyBpbiB0aGUgYWxsb2NhdGVkIHN0cnVjdHVyZXMuIFRoaXMgZmVhdHVyZSB3b3VsZCBzb2x2ZSBtYW55IG9mCit0aGUgZmFsc2UgbmVnYXRpdmUgY2FzZXMgZGVzY3JpYmVkIGFib3ZlLgorCitUaGUgdG9vbCBjYW4gcmVwb3J0IGZhbHNlIHBvc2l0aXZlcy4gVGhlc2UgYXJlIGNhc2VzIHdoZXJlIGFuIGFsbG9jYXRlZAorYmxvY2sgZG9lc24ndCBuZWVkIHRvIGJlIGZyZWVkIChzb21lIGNhc2VzIGluIHRoZSBpbml0X2NhbGwgZnVuY3Rpb25zKSwKK3RoZSBwb2ludGVyIGlzIGNhbGN1bGF0ZWQgYnkgb3RoZXIgbWV0aG9kcyB0aGFuIHRoZSB1c3VhbCBjb250YWluZXJfb2YKK21hY3JvIG9yIHRoZSBwb2ludGVyIGlzIHN0b3JlZCBpbiBhIGxvY2F0aW9uIG5vdCBzY2FubmVkIGJ5IGttZW1sZWFrLgorCitQYWdlIGFsbG9jYXRpb25zIGFuZCBpb3JlbWFwIGFyZSBub3QgdHJhY2tlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24va29fS1IvSE9XVE8gYi9Eb2N1bWVudGF0aW9uL2tvX0tSL0hPV1RPCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjMmZmOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2tvX0tSL0hPV1RPCkBAIC0wLDAgKzEsNTg4IEBACitOT1RFOgorVGhpcyBpcyBhIHZlcnNpb24gb2YgRG9jdW1lbnRhdGlvbi9IT1dUTyB0cmFuc2xhdGVkIGludG8ga29yZWFuCitUaGlzIGRvY3VtZW50IGlzIG1haW50YWluZWQgYnkgbWluY2hhbiBLaW0gPG1pbmNoYW4ua2ltQGdtYWlsLmNvbT4KK0lmIHlvdSBmaW5kIGFueSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBkb2N1bWVudCBhbmQgdGhlIG9yaWdpbmFsIGZpbGUgb3IKK2EgcHJvYmxlbSB3aXRoIHRoZSB0cmFuc2xhdGlvbiwgcGxlYXNlIGNvbnRhY3QgdGhlIG1haW50YWluZXIgb2YgdGhpcyBmaWxlLgorCitQbGVhc2UgYWxzbyBub3RlIHRoYXQgdGhlIHB1cnBvc2Ugb2YgdGhpcyBmaWxlIGlzIHRvIGJlIGVhc2llciB0bworcmVhZCBmb3Igbm9uIEVuZ2xpc2ggKHJlYWQ6IGtvcmVhbikgc3BlYWtlcnMgYW5kIGlzIG5vdCBpbnRlbmRlZCBhcworYSBmb3JrLiBTbyBpZiB5b3UgaGF2ZSBhbnkgY29tbWVudHMgb3IgdXBkYXRlcyBmb3IgdGhpcyBmaWxlIHBsZWFzZQordHJ5IHRvIHVwZGF0ZSB0aGUgb3JpZ2luYWwgRW5nbGlzaCBmaWxlIGZpcnN0LgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CivsnbQg66y47ISc64qUCitEb2N1bWVudGF0aW9uL0hPV1RPCivsnZgg7ZWc6riAIOuyiOyXreyeheuLiOuLpC4KKwor7Jet7J6Q77yaIOq5gOuvvOywrCA8bWluY2hhbi5raW1AZ21haWwuY29tPgor6rCQ7IiY77yaIOydtOygnOydtOuvuCA8amFtZWUubGVlQHNhbXN1bmcuY29tPgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCivslrTrlrvqsowg66as64iF7IqkIOy7pOuEkCDqsJzrsJzsnYQg7ZWY64qU6rCACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor7J20IOusuOyEnOuKlCDsu6TrhJAg6rCc67Cc7JeQIOyeiOyWtCDqsIDsnqUg7KSR7JqU7ZWcIOusuOyEnOydtOuLpC4g7J20IOusuOyEnOuKlAor66as64iF7IqkIOy7pOuEkCDqsJzrsJzsnpDqsIAg65CY64qUIOuyleqzvCDrpqzriIXsiqQg7Luk64SQIOqwnOuwnCDsu6TrrqTri4jti7DsmYAg7J287ZWY64qUCivrspXsnYQg64u06rOg7J6I64ukLiDsu6TrhJAg7ZSE66Gc6re4656Y67CN7J2YIOq4sOyIoOyggeyduCDsuKHrqbTqs7wg6rSA66Co65CcIOuCtOyaqeuTpOydgAor7Y+s7ZWo7ZWY7KeAIOyViuycvOugpOqzoCDtlZjsmIDsp4Drp4wg7Jis67CU66W4IOq4uOuhnCDsl6zrn6zrtoTsnYQg7JWI64K07ZWY64qUIOuNsOuKlCDrj4Tsm4DsnbQKK+uQoCDqsoPsnbTri6QuCisKK+ydtCDrrLjshJzsl5DshJwg7Jik656Y65CcIOqyg+ydhCDrsJzqsqztlZjrqbQg66y47ISc7J2YIOyVhOuemOyqveyXkCDrgpjsl7TrkJwg66mU7J247YWM7J2064SI7JeQ6rKMCivtjKjsuZjrpbwg67O064K064us6528LgorCisKK+yGjOqwnAorLS0tLQorCivsnpAsIOyXrOufrOu2hOydgCDrpqzriIXsiqQg7Luk64SQIOqwnOuwnOyekOqwgCDrkJjripQg67KV7J2EIOuwsOyasOqzoCDsi7bsnYDqsIA/IOyVhOuLiOuptAor7IOB7IKs66Gc67aA7YSwIuydtCDsnqXsuZjrpbwg7JyE7ZWcIOumrOuIheyKpCDrk5zrnbzsnbTrsoTrpbwg7J6R7ISx7ZWY7Iuc7JikIuudvOuKlCDrp5DsnYQKK+uTpOyXiOuKlOqwgD8g7J20IOusuOyEnOydmCDrqqnsoIHsnYAg7Jes65+s67aE7J20IOqyquqyjCDrkKAg6rO87KCV6rO8IOy7pOuupOuLiO2LsOyZgCDtmJHroKXtlZjripQKK+uyleydhCDsobDslrjtlZjsl6wg7Jes65+s67aE7J2YIOuqqeyggeydhCDri6zshLHtlZjquLAg7JyE7ZW0IO2VhOyalO2VnCDqsoMg66qo65GQ66W8IOyVjOugpOyjvOq4sAor7JyE7ZWo7J2064ukLgorCivsu6TrhJDsnYAg64yA67aA67aE7J2AIEProZwg7J6R7ISx65CY7Ja0IOyeiOqzoCDrqofrqocg7JWE7YKk7YWN7LOQ7J2YIOydmOyhtOyggeyduCDrtoDrtoTsnYAKK+yWtOyFiOu4lOumrOuhnCDsnpHshLHrkJjslrQg7J6I64ukLiDsu6TrhJAg6rCc67Cc7J2EIOychO2VtCBD66W8IOyemCDsnbTtlbTtlZjqs6Ag7J6I7Ja07JW8IO2VnOuLpC4KK+yXrOufrOu2hOydtCDtirnsoJUg7JWE7YKk7YWN7LOQ7J2YIGxvdy1sZXZlbCDqsJzrsJzsnYQg7ZWgIOqyg+ydtCDslYTri4jrnbzrqbQKK+yWtOyFiOu4lOumrCjtirnsoJUg7JWE7YKk7YWN7LOQKeuKlCDsnpgg7JWM7JWE7JW8IO2VoCDtlYTsmpTripQg7JeG64ukLgor64uk7J2M7J2YIOywuOqzoOyEnOyggeuTpOydgCDquLDrs7jsl5Ag7Lap7Iuk7ZWcIEMg6rWQ7Jyh7J2064KYIOyImOuFhOqwhOydmCDqsr3tl5jsl5Ag6rKs7KO87KeA64qUCivrqrvtlZjsp4Drp4wg7KCB7Ja064+EIOywuOqzoCDsmqnrj4TroZzripQg7KKL7J2EIOqyg+ydtOuLpAorIC0gIlRoZSBDIFByb2dyYW1taW5nIExhbmd1YWdlIiBieSBLZXJuaWdoYW4gYW5kIFJpdGNoaWUgW1ByZW50aWNlIEhhbGxdCisgLSAiUHJhY3RpY2FsIEMgUHJvZ3JhbW1pbmciIGJ5IFN0ZXZlIE91YWxsaW5lIFtPJ1JlaWxseV0KKyAtICJDOiAgQSBSZWZlcmVuY2UgTWFudWFsIiBieSBIYXJiaXNvbiBhbmQgU3RlZWxlIFtQcmVudGljZSBIYWxsXQorCivsu6TrhJDsnYAgR05VIEPsmYAgR05VIO2ItOyytOyduOydhCDsgqzsmqntlZjsl6wg7J6R7ISx65CY7JeI64ukLiDsnbQg7Yi065Ok7J2AIElTTyBDODkg7ZGc7KSA7J2ECivrlLDrpbTripQg67CY66m0IO2RnOykgOyXkCDsnojsp4Ag7JWK7J2AIOunjuydgCDtmZXsnqXquLDriqXrj4Qg6rCA7KeA6rOgIOyeiOuLpC4g7Luk64SQ7J2AIO2RnOykgCBDCivrnbzsnbTruIzrn6zrpqzsmYDripQg6rSA6rOE7JeG7J20IGZyZWVzdGFuZGluZyBDIO2ZmOqyveydtOyWtOyEnCBDIO2RnOykgOydmCDsnbzrtoDripQKK+yngOybkOuQmOyngCDslYrripTri6QuIOyehOydmOydmCBsb25nIGxvbmcg64KY64iE6riw64KYIGZsb2F0aW5nIHBvaW5064qUIOyngOybkOuQmOyngCDslYrripTri6QuCivrlYzroaAg7J2065+wIOydtOycoOuhnCDsu6TrhJDsnbQg6re465+wIO2ZleyepSDquLDriqXsnYQg6rCA7KeEIO2ItOyytOyduOydhCDqsIDsp4Dqs6Ag66eM65Ok7Ja07KGM64uk64qUCivqsoPsnbQg7J207ZW07ZWY6riwIOyWtOugpOyauCDsiJjrj4Qg7J6I6rOgIOqyjOuLpOqwgCDrtojtlontlZjqsozrj4Qg6re465+wIOqyg+ydhCDsoJXtmZXtlZjqsowg7ISk66qF7ZWY64qUCivslrTrlqQg7LC46rOg66y47ISc64+EIOyeiOyngCDslYrri6QuIOygleuztOulvCDslrvquLAg7JyE7ZW07ISc64qUIGdjYyBpbmZvIChgaW5mbyBnY2NgKe2OmOydtOyngOulvAor7IK07Y6067O06528LgorCivsl6zrn6zrtoTsnYAg6riw7KG07J2YIOqwnOuwnCDsu6TrrqTri4jti7DsmYAg7ZiR66Cl7ZWY64qUIOuyleydhCDrsLDsmrDroKTqs6Ag7ZWY6rOgIOyeiOuLpOuKlCDqsoPsnYQKK+q4sOyWte2VmOudvC4g7L2U65SpLCDsiqTtg4DsnbwsIO2VqOyImOyXkCDqtIDtlZwg7ZuM66Wt7ZWcIO2RnOykgOydhCDqsIDsp4Qg7IKs656M65Ok7J20IOuqqOyduAor64uk7JaR7ZWcIOq3uOujueydtCDsnojri6QuIOydtCDtkZzspIDrk6TsnYAg7Jik656c64+Z7JWIIO2BrOqzoCDsp4Dsl63soIHsnLzroZwg67aE7IKw65CcIO2MgOuTpOyXkAor7J2Y7ZW0IOqwgOyepSDsoovsnYAg67Cp67KV7Jy866GcIOydvO2VmOq4sCDsnITtlZjsl6wg7LC+7J2AIOqyg+ydhCDquLDstIjroZwg66eM65Ok7Ja07KC4IOyZlOuLpC4KK+q3uCDtkZzspIDrk6TsnYAg66y47ISc7ZmU6rCAIOyemCDrkJjslrTsnojquLAg65WM66y47JeQIOqwgOuKpe2VnO2VnCDrr7jrpqwg66eO7J2AIO2RnOykgOuTpOyXkAor6rSA7ZWY7JesIOuwsOyasOugpOqzoCDsi5zrj4TtlZjrnbwuIOuLpOuluCDsgqzrnozrk6TsnYAg7Jes65+s67aE7J2064KYIOyXrOufrOu2hOydmCDtmozsgqzqsIAKK+ydvO2VmOuKlCDrsKnsi53sl5Ag7KCB7J2R7ZWY64qUIOqyg+ydhCDsm5DtlZjsp4DripQg7JWK64qU64ukLgorCisKK+uyleyggSDrrLjsoJwKKy0tLS0tLS0tLQorCivrpqzriIXsiqQg7Luk64SQIOyGjOyKpCDsvZTrk5zripQgR1BM66GcIOuwsO2PrChyZWxlYXNlKeuQmOyXiOuLpC4g7IaM7Iqk7Yq466as7J2YIOuplOyduAor65SU66CJ7Yag66as7JeQIOyeiOuKlCDrnbzsnbTshLzsiqTsl5Ag6rSA7ZWY7JesIOyDgeyEuO2VmOqyjCDsk7Dsl6wg7J6I64qUIENPUFlJTkfsnbTrnbzripQKK+2MjOydvOydhCDrtJDrnbwuIOyXrOufrOu2hOydtCDrnbzsnbTshLzsiqTsl5Ag6rSA7ZWcIOuNlCDquYrsnYAg66y47KCc66W8IOqwgOyngOqzoCDsnojri6TrqbQKK+umrOuIheyKpCDsu6TrhJAg66mU7J2866eBIOumrOyKpO2KuOyXkCDrrLvsp4Drp5Dqs6Ag67OA7Zi47IKs7JmAIOyXsOudve2VmOudvC4g66mU7J2866eBCivrpqzsiqTtirjrk6Tsl5Ag7J6I64qUIOyCrOuejOuTpOydgCDrs4DtmLjsgqzqsIAg7JWE64uI6riwIOuVjOusuOyXkCDrspXsoIEg66y47KCc7JeQIOq0gO2VmOyXrAor6re465Ok7J2YIOunkOyXkCDsnZjsp4DtlbTshJzripQg7JWI65Cc64ukLgorCitHUEzsl5Ag6rSA7ZWcIOyepuydgCDsp4jrrLjrk6Tqs7wg64u167OA65Ok7J2AIOuLpOydjOydhCDssLjsobDtlZjrnbwuCisgICAgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC1mYXEuaHRtbAorCisKK+usuOyEnAorLS0tLQorCivrpqzriIXsiqQg7Luk64SQIOyGjOyKpCDtirjrpqzripQg7Luk64SQIOy7pOuupOuLiO2LsOyZgCDtmJHroKXtlZjripQg67KV7J2EIOuwsOyasOq4sOychO2VtCDtm4zrpa3tlZwKK+uLpOyWke2VnCDrrLjshJzrk6TsnYQg6rCA7KeA6rOgIOyeiOuLpC4g7IOI66Gc7Jq0IOq4sOuKpeuTpOydtCDsu6TrhJDsl5Ag65Ok7Ja06rCA6rKMIOuQoCDrlYwsCivqt7gg6riw64ql7J2EIOyWtOuWu+qyjCDsgqzsmqntlZjripTsp4Dsl5Ag6rSA7ZWcIOyEpOuqheydhCDsnITtlZjsl6wg7IOI66Gc7Jq0IOusuOyEnCDtjIzsnbzsnYQKK+y2lOqwgO2VmOuKlCDqsoPsnYQg6raM7J6l7ZWc64ukLiDsu6TrhJDsnbQg7Jyg7KCA7Iqk7Y6Y7J207Iqk66GcIOuFuOy2nO2VmOuKlCDsnbjthLDtjpjsnbTsiqTrpbwKK+uzgOqyve2VmOqyjCDrkJjrqbQg67OA6rK97J2EIOyEpOuqhe2VmOuKlCDrqZTribTslrwg7Y6Y7J207KeA65Ok7JeQIOuMgO2VnCDtjKjsuZjrgpgg7KCV67O066W8CittdGsubWFucGFnZXNAZ21haWwuY29t7J2YIOuplOyduO2FjOydtOuEiOyXkOqyjCDrs7Trgrwg6rKD7J2EIOq2jOyepe2VnOuLpC4KKwor64uk7J2M7J2AIOy7pOuEkCDshozsiqQg7Yq466as7JeQIOyeiOuKlCDsnb3slrTslbwg7ZWgIO2MjOydvOuTpOydmCDrpqzsiqTtirjsnbTri6QuCisgIFJFQURNRQorICAgIOydtCDtjIzsnbzsnYAg66as64iF7IqkIOy7pOuEkOyXkCDqtIDtlZjsl6wg6rCE64uo7ZWcIOuwsOqyvSDshKTrqoXqs7wg7Luk64SQ7J2EIOyEpOygle2VmOqzoAorICAgIOu5jOuTnO2VmOq4sCDsnITtlbQg7ZWE7JqU7ZWcIOqyg+ydhCDshKTrqoXtlZzri6QuIOy7pOuEkOyXkCDsnoXrrLjtlZjripQg7IKs656M65Ok7J2AIOyXrOq4sOyEnAorICAgIOyLnOyeke2VtOyVvCDtlZzri6QuCisKKyAgRG9jdW1lbnRhdGlvbi9DaGFuZ2VzCisgICAg7J20IO2MjOydvOydgCDsu6TrhJDsnYQg7ISx6rO17KCB7Jy866GcIOu5jOuTnO2VmOqzoCDsi6Ttlonsi5ztgqTquLAg7JyE7ZW0IO2VhOyalO2VnCDri6TslpHtlZwKKyAgICDshoztlITtirjsm6jslrQg7Yyo7YKk7KeA65Ok7J2YIOy1nOyGjCDrsoTsoLzsnYQg64KY7Je07ZWc64ukLgorCisgIERvY3VtZW50YXRpb24vQ29kaW5nU3R5bGUKKyAgICDsnbQg66y47ISc64qUIOumrOuIheyKpCDsu6TrhJAg7L2U65SpIOyKpO2DgOydvOqzvCDqt7jroIfqsowg7ZWcIOuqh+uqhyDsnbTsnKDrpbwg7ISk66qF7ZWc64ukLgorICAgIOuqqOuToCDsg4jroZzsmrQg7L2U65Oc64qUIOydtCDrrLjshJzsl5Ag6rCA7J2065Oc65287J2465Ok7J2EIOuUsOudvOyVvCDtlZzri6QuIOuMgOu2gOu2hOydmAorICAgIOuplOyduO2FjOydtOuEiOuTpOydgCDsnbQg6rec7LmZ7J2EIOuUsOultOuKlCDtjKjsuZjrk6Trp4zsnYQg67Cb7JWE65Ok7J28IOqyg+ydtOqzoCDrp47snYAg7IKs656M65Ok7J20CisgICAg6re4IO2MqOy5mOqwgCDsmKzrsJTrpbgg7Iqk7YOA7J287J28IOqyveyasOunjCDsvZTrk5zrpbwg6rKA7Yag7ZWgIOqyg+ydtOuLpC4KKworICBEb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzCisgIERvY3VtZW50YXRpb24vU3VibWl0dGluZ0RyaXZlcnMKKyAgICDsnbQg7YyM7J2865Ok7J2AIOyEseqzteyggeycvOuhnCDtjKjsuZjrpbwg66eM65Ok6rOgIOuztOuCtOuKlCDrspXsnYQg64uk7J2M7J2YIOuCtOyaqeuTpOuhnAorICAgIOq1ieyepe2eiCDsg4HshLjtnogg7ISk66qF7ZWY6rOgIOyeiOuLpCjqt7jrn6zrgpgg64uk7J2M7Jy866GcIO2VnOygleuQmOynhCDslYrripTri6QpLgorICAgICAgIC0gRW1haWwg64K07Jqp65OkCisgICAgICAgLSBFbWFpbCDslpHsi50KKyAgICAgICAtIOq3uOqyg+ydhCDriITqtazsl5Dqsowg67O064K87KeACisgICAg7J2065+s7ZWcIOq3nOy5meuTpOydhCDrlLDrpbTripQg6rKD7J20IOyEseqztSjsl63snpDso7w6IO2MqOy5mOqwgCDrsJvslYTrk6Tsl6wg7KeA64qUIOqygynsnYQKKyAgICDrs7TsnqXtlZjsp4Qg7JWK64qU64ukKOyZnOuDkO2VmOuptCDrqqjrk6Ag7Yyo7LmY65Ok7J2AIOuCtOyaqeqzvCDsiqTtg4Dsnbzsl5Ag6rSA7ZWY7JesCisgICAg66m067CA7Z6IIOqygO2GoOuQmOq4sCDrlYzrrLjsnbTri6QpLiDqt7jrn6zrgpgg6rec7LmZ7J2EIOuUsOultOyngCDslYrripTri6TrqbQg6rGw7J2YCisgICAg7ISx6rO17ZWY7KeA64+EIOuqu+2VoCDqsoPsnbTri6QuCisKKyAgICDsmKzrsJTrpbgg7Yyo7LmY65Ok7J2EIOunjOuTnOuKlCDrspXsl5Ag6rSA7ZWcIO2bjOulre2VnCDri6Trpbgg66y47ISc65Ok7J20IOyeiOuLpC4KKyAgICAiVGhlIFBlcmZlY3QgUGF0Y2giCisgICAgICAgIGh0dHA6Ly93d3cub3psYWJzLm9yZy9+YWtwbS9zdHVmZi90cHAudHh0CisgICAgIkxpbnV4IGtlcm5lbCBwYXRjaCBzdWJtaXNzaW9uIGZvcm1hdCIKKyAgICAgICAgaHR0cDovL2xpbnV4Lnl5ei51cy9wYXRjaC1mb3JtYXQuaHRtbAorCisgICBEb2N1bWVudGF0aW9uL3N0YWJsZV9hcGlfbm9uc2Vuc2UudHh0CisgICAg7J20IOusuOyEnOuKlCDsnZjrj4TsoIHsnLzroZwg7Luk64SQ7J20IOu2iOuzgO2VmOuKlCBBUEnrpbwg6rCW7KeAIOyViuuPhOuhnSDqsrDsoJXtlZwKKyAgICDsnbTsnKDrpbwg7ISk66qF7ZWY66mwIOuLpOydjOqzvCDqsJnsnYAg6rKD65Ok7J2EIO2PrO2VqO2VnOuLpC4KKyAgICAgICAtIOyEnOu4jOyLnOyKpO2FnCBzaGltLWxheWVyKO2YuO2ZmOyEseydhCDsnITtlbQ/KQorICAgICAgIC0g7Jq07JiB7LK07KCc65Ok6rCE7J2YIOuTnOudvOydtOuyhCDsnbTsi53shLEKKyAgICAgICAtIOy7pOuEkCDshozsiqQg7Yq466as64K07JeQIOu5oOuluCDrs4DtmZTrpbwg64qm7LaU64qUIOqygyjrmJDripQg67mg66W4IOuzgO2ZlOulvCDrp4nripQg6rKDKQorICAgIOydtCDrrLjshJzripQg66as64iF7IqkIOqwnOuwnCDssqDtlZnsnYQg7J207ZW07ZWY64qU642wIO2VhOyImOyggeydtOupsCDri6Trpbgg7Jq07JiB7LK07KCc7JeQ7IScCisgICAg66as64iF7Iqk66GcIOyghO2Wpe2VmOuKlCDsgqzrnozrk6Tsl5DqsozripQg66ek7JqwIOykkeyalO2VmOuLpC4KKworCisgIERvY3VtZW50YXRpb24vU2VjdXJpdHlCdWdzCisgICAg7Jes65+s67aE65Ok7J20IOumrOuIheyKpCDsu6TrhJDsnZgg67O07JWIIOusuOygnOulvCDrsJzqsqztlojri6Tqs6Ag7IOd6rCB7ZWc64uk66m0IOydtCDrrLjshJzsl5AKKyAgICDrgpjsmKgg64uo6rOE7JeQIOuUsOudvOyEnCDsu6TrhJAg6rCc67Cc7J6Q65Ok7JeQ6rKMIOyVjOumrOqzoCDqt7gg66y47KCc66W8IO2VtOqysO2VoCDsiJgg7J6I64+E66GdCisgICAg64+E7JmAIOuLrOudvC4KKworICBEb2N1bWVudGF0aW9uL01hbmFnZW1lbnRTdHlsZQorICAgIOydtCDrrLjshJzripQg66as64iF7IqkIOy7pOuEkCDrqZTsnbjthYzsnbTrhIjrk6TsnbQg6re465Ok7J2YIOuwqeuyleuhoOyXkCDrhbnslYQg7J6I64qUCisgICAg7KCV7Iug7J2EIOyWtOuWu+qyjCDqs7XsnKDtlZjqs6Ag7Jq07JiB7ZWY64qU7KeA66W8IOyEpOuqhe2VnOuLpC4g7J206rKD7J2AIOy7pOuEkCDqsJzrsJzsl5Ag7J6F66y47ZWY64qUCisgICAg66qo65OgIOyCrOuejOuTpCjrmJDripQg7Luk64SQIOqwnOuwnOyXkCDsnpHsnYAg7Zi46riw7Ius7J20652864+EIOyeiOuKlCDsgqzrnozrk6Qp7J20CisgICAg7J297Ja07JW8IO2VoCDspJHsmpTtlZwg66y47ISc7J2064ukLiDsmZzrg5DtlZjrqbQg7J20IOusuOyEnOuKlCDsu6TrhJAg66mU7J247YWM7J2064SI65Ok7J2YCisgICAg64+F7Yq57ZWcIO2WieuPmeyXkCDqtIDtlZjsl6wg7Z2U7Z6IIOyeiOuKlCDsmKTtlbTrk6Tqs7wg7Zi8656A65Ok7J2EIO2VtOyGjO2VmOqzoCDsnojquLAKKyAgICDrlYzrrLjsnbTri6QuCisKKyAgRG9jdW1lbnRhdGlvbi9zdGFibGVfa2VybmVsX3J1bGVzLnR4dAorICAgIOydtCDrrLjshJzripQg7JWI7KCV7KCB7J24IOy7pOuEkCDrsLDtj6zqsIAg7J2066Oo7Ja07KeA64qUIOq3nOy5meydhCDshKTrqoXtlZjqs6Ag7J6I7Jy866mwCisgICAg7Jes65+s67aE65Ok7J20IOydtOufrO2VnCDrsLDtj6zrk6Qg7KSRIO2VmOuCmOyXkCDrs4Dqsr3snYQg7ZWY6ri4IOybkO2VnOuLpOuptAorICAgIOustOyXh+ydhCDtlbTslbwg7ZWY64qU7KeA66W8IOyEpOuqhe2VnOuLpC4KKworICBEb2N1bWVudGF0aW9uL2tlcm5lbC1kb2NzLnR4dAorICAgIOy7pOuEkCDqsJzrsJzsl5Ag6rSA6rOE65CcIOyZuOu2gCDrrLjshJzsnZgg66as7Iqk7Yq47J2064ukLiDsu6TrhJAg64K07J2YIO2PrO2VqOuQnCDrrLjshJzrk6QKKyAgICDspJHsl5Ag7Jes65+s67aE7J20IOywvuqzoCDsi7bsnYAg66y47ISc66W8IOuwnOqyrO2VmOyngCDrqrvtlaAg6rK97JqwIOydtCDrpqzsiqTtirjrpbwKKyAgICDsgrTtjrTrs7TrnbwuCisKKyAgRG9jdW1lbnRhdGlvbi9hcHBseWluZy1wYXRjaGVzLnR4dAorICAgIO2MqOy5mOqwgCDrrLTsl4fsnbTrqbAg6re46rKD7J2EIOy7pOuEkOydmCDri6Trpbgg6rCc67CcIOu4jOuenOy5mOuTpOyXkCDslrTrlrvqsowKKyAgICDsoIHsmqntlZjripTsp4Dsl5Ag6rSA7ZWY7JesIOyekOyEuO2eiCDshKTrqoXtlZjqs6Ag7J6I64qUIOyii+ydgCDsnoXrrLjshJzsnbTri6QuCisKK+y7pOuEkOydgCDshozsiqQg7L2U65OcIOq3uCDsnpDssrTsl5DshJwg7J6Q64+Z7KCB7Jy866GcIOunjOuTpOyWtOyniCDsiJgg7J6I64qUIOunjuydgCDrrLjshJzrk6TsnYQKK+qwgOyngOqzoCDsnojri6QuIOydtOqyg+ydgCDsu6TrhJAg64K07J2YIEFQSeyXkCDrjIDtlZwg66qo65OgIOyEpOuqhSwg6re466as6rOgIOudve2CueydhAor7Jis67CU66W06rKMIOyymOumrO2VmOuKlCDrspXsl5Ag6rSA7ZWcIOq3nOy5meydhCDtj6ztlajtlZjqs6Ag7J6I64ukLiDsnbQg66y47ISc64qUCitEb2N1bWVudGF0aW9uL0RvY0Jvb2svIOuUlOugie2GoOumrCDrgrTsl5DshJwg66eM65Ok7Ja07KeA66mwIFBERiwgUG9zdHNjcmlwdCwgSFRNTCwKK+q3uOumrOqzoCBtYW4g7Y6Y7J207KeA65Ok66GcIOuLpOydjOqzvCDqsJnsnbQg7Iuk7ZaJ7ZWY7JesIOunjOuTpOyWtCDsp4Tri6QuCisgICAgICAgICBtYWtlIHBkZmRvY3MKKyAgICAgICAgIG1ha2UgcHNkb2NzCisgICAgICAgICBtYWtlIGh0bWxkb2NzCisgICAgICAgICBtYWtlIG1hbmRvY3MKK+qwgeqwgeydmCDrqoXroLnsnYQg66mU7J24IOy7pOuEkCDshozsiqQg65SU66CJ7Yag66as66Gc67aA7YSwIOyLpO2Wie2VnOuLpC4KKworCivsu6TrhJAg6rCc67Cc7J6Q6rCAIOuQmOuKlCDqsoMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCivsl6zrn6zrtoTsnbQg66as64iF7IqkIOy7pOuEkCDqsJzrsJzsl5Ag6rSA7ZWY7JesIOyVhOustOqyg+uPhCDrqqjrpbjri6TrqbQgTGludXggS2VybmVsTmV3Ymllcwor7ZSE66Gc7KCd7Yq466W8IOu0kOyVvCDtlZzri6QuCisgICAgaHR0cDovL2tlcm5lbG5ld2JpZXMub3JnCivqt7jqs7PsnYAg6rGw7J2YIOuqqOuToCDsooXrpZjsnZgg6riw67O47KCB7J24IOy7pOuEkCDqsJzrsJwg7KeI66y465OkKOyniOusuO2VmOq4sCDsoITsl5Ag66i87KCACivslYTsubTsnbTruIzrpbwg7LC+7JWE67SQ6528LiDqs7zqsbDsl5Ag7J2066+4IOuLteuzgOuQmOyXiOydhCDsiJjrj4Qg7J6I64ukKeydhCDtlaAg7IiYIOyeiOuKlCDrj4Tsm4DsnbQKK+uQoOunjO2VnCDrqZTsnbzrp4Eg66as7Iqk7Yq46rCAIOyeiOuLpC4g65iQ7ZWcIOyLpOyLnOqwhOycvOuhnCDsp4jrrLgg7ZWgIOyImCDsnojripQgSVJDIOyxhOuEkOuPhAor6rCA7KeA6rOgIOyeiOycvOupsCDrpqzriIXsiqQg7Luk64SQIOqwnOuwnOydhCDrsLDsmrDripQg642wIOycoOyaqe2VnCDrrLjshJzrk6TsnYQg67O07Jyg7ZWY6rOgIOyeiOuLpC4KKwor7Ju57IKs7J207Yq464qUIOy9lOuTnOq1rOyEsSwg7ISc67iM7Iuc7Iqk7YWc65OkLCDqt7jrpqzqs6Ag7ZiE7J6sIO2UhOuhnOygne2KuOuTpAorKO2KuOumrCDrgrQsIOyZuOu2gOyXkCDsobTsnqztlZjripQp7JeQIOq0gO2VnCDquLDrs7jsoIHsnbgg7KCV67O065Ok7J2EIOqwgOyngOqzoCDsnojri6QuIOuYkO2VnAor6re46rOz7J2AIOy7pOuEkCDsu7TtjIzsnbzsnbTrgpgg7Yyo7LmY66W8IO2VmOuKlCDrspXqs7wg6rCZ7J2AIOq4sOuzuOyggeyduCDqsoPrk6TsnYQgIOyEpOuqhe2VnOuLpC4KKwor7Jes65+s67aE7J20IOyWtOuUlOyEnCDsi5zsnpHtlbTslbwg7ZWg7KeEIOuqqOultOyngOunjCDsu6TrhJAg6rCc67CcIOy7pOuupOuLiO2LsOyXkCDssLjsl6ztlaAg7IiYCivsnojripQg7J2865Ok7J2EIOywvuq4uCDsm5DtlZzri6TrqbQg66as64iF7IqkIOy7pOuEkCBKYW5pdG9yIO2UhOuhnOygne2KuOulvCDsgrTtjrTrtJDrnbwuCisJaHR0cDovL2tlcm5lbG5ld2JpZXMub3JnL0tlcm5lbEphbml0b3JzCivqt7jqs7PsnYAg7Iuc7J6R7ZWY6riw7JeQIO2bjOulre2VnCDsnqXshozsnbTri6QuIOq3uOqzs+ydgCDrpqzriIXsiqQg7Luk64SQIOyGjOyKpCDtirjrpqzrgrTsl5AKK+qwhOuLqO2eiCDsoJXrpqzrkJjqs6Ag7IiY7KCV65CgIOyImCDsnojripQg66y47KCc65Ok7JeQIOq0gO2VmOyXrCDshKTrqoXtlZzri6QuIOyXrOufrOu2hOydgCDsnbQKK+2UhOuhnOygne2KuOulvCDrjIDtkZztlZjripQg6rCc67Cc7J6Q65Ok6rO8IOydvO2VmOuptOyEnCDsnpDsi6DsnZgg7Yyo7LmY66W8IOumrOuIheyKpCDsu6TrhJAg7Yq466as7JeQCivrsJjsmIHtlZjquLAg7JyE7ZWcIOq4sOuzuOyggeyduCDqsoPrk6TsnYQg67Cw7Jqw6rKMIOuQoOqyg+ydtOupsCDsl6zrn6zrtoTsnbQg7JWE7KeBIOyVhOydtOuUlOyWtOulvAor6rCA7KeA6rOgIOyeiOyngCDslYrri6TrqbQg64uk7J2M7JeQIOustOyXh+ydhCDtlbTslbztlaDsp4Dsl5Ag6rSA7ZWcIOuwqe2WpeydhCDrsLDsmrgg7IiYIOyeiOydhAor6rKD7J2064ukLgorCivsl6zrn6zrtoTrk6TsnbQg7J2066+4IOy7pOuEkCDtirjrpqzsl5Ag67CY7JiB7ZWY6ri4IOybkO2VmOuKlCDsvZTrk5wg66y27J2M7J2EIOqwgOyngOqzoCDsnojsp4Drp4wKK+yYrOuwlOuluCDtj6zrp7fsnLzroZwg7Y+s7J6l7ZWY64qU642wIOuPhOybgOydtCDtlYTsmpTtlZjri6TrqbQg6re465+s7ZWcIOusuOygnOulvCDrj5XquLAg7JyE7ZW0Civrp4zrk6TslrTsp4Qga2VybmVsLW1lbnRvcnMg7ZSE66Gc7KCd7Yq46rCAIOyeiOuLpC4g6re46rOz7J2AIOuplOydvOungSDrpqzsiqTtirjsnbTrqbAKK+uLpOydjOyXkOyEnCDssLjsobDtlaAg7IiYIOyeiOuLpC4KKyAgICAgICAgIGh0dHA6Ly9zZWxlbmljLmNvbS9tYWlsbWFuL2xpc3RpbmZvL2tlcm5lbC1tZW50b3JzCisKK+umrOuIheyKpCDsu6TrhJAg7L2U65Oc7JeQIOyLpOygnCDrs4Dqsr3snYQg7ZWY6riwIOyghOyXkCDrsJjrk5zsi5wg6re4IOy9lOuTnOqwgCDslrTrlrvqsowKK+uPmeyeke2VmOuKlOyngCDsnbTtlbTtlZjqs6Ag7J6I7Ja07JW8IO2VnOuLpC4g7L2U65Oc66W8IOu2hOyEne2VmOq4sCDsnITtlZjsl6wg7Yq57KCV7ZWcIO2ItOydmAor64+E7JuA7J2EIOu5jOugpOyEnOudvOuPhCDsvZTrk5zrpbwg7KeB7KCRIOydveuKlCDqsoPrs7Tri6Qg7KKL7J2AIOqyg+ydgCDsl4bri6Qo64yA67aA67aE7J2YCivsnpDsnpjtlZwg67aA67aE65Ok7J2AIOyemCDsvZTrqZjtirjrkJjslrQg7J6I64ukKS4g6re465+wIO2ItOuTpCDspJHsl5Ag7Yq57Z6IIOy2lOyynO2VoOunjO2VnAor6rKD7J2AIExpbnV4IENyb3NzLVJlZmVyZW5jZSBwcm9qZWN07J2066mwIOq3uOqyg+ydgCDsnpDquLAg7LC47KGwIOuwqeyLneydtOupsAor7IaM7Iqk7L2U65Oc66W8IOyduOuNseyKpOuQnCDsm7kg7Y6Y7J207KeA65Ok7J2YIO2Yle2DnOuhnCDrs7Tsl6zspIDri6QuIOy1nOyLoOydmCDrqYvsp4Qg7Luk64SQCivsvZTrk5wg7KCA7J6l7IaM64qUIOuLpOydjOydhCDthrXtlZjsl6wg7LC47KGw7ZWgIOyImCDsnojri6QuCisgICAgICBodHRwOi8vbHhyLmxpbnV4Lm5vLyt0cmVlcworCisKK+qwnOuwnCDtlITroZzshLjsiqQKKy0tLS0tLS0tLS0tLS0KKwor66as64iF7IqkIOy7pOuEkCDqsJzrsJwg7ZSE66Gc7IS47Iqk64qUIO2YhOyerCDrqofrqocg64uk66W4IOuplOyduCDsu6TrhJAgIuu4jOuenOy5mOuTpCLqs7wKK+yEnOu4jOyLnOyKpO2FnOyXkCDtirntmZTrkJwg7Luk64SQIOu4jOuenOy5mOuTpOuhnCDqtazshLHrkJzri6QuIOuqh+uqhyDri6Trpbgg66mU7J24CivruIzrnpzsuZjrk6TsnYAg64uk7J2M6rO8IOqwmeuLpC4KKyAgLSBtYWluIDMueCDsu6TrhJAg7Yq466asCisgIC0gMy54LnkgLSDslYjsoJXrkJwg7Luk64SQIO2KuOumrAorICAtIDMueCAtZ2l0IOy7pOuEkCDtjKjsuZjrk6QKKyAgLSDshJzruIzsi5zsiqTthZzsnYQg7JyE7ZWcIOy7pOuEkCDtirjrpqzrk6Tqs7wg7Yyo7LmY65OkCisgIC0gMy54IC0g7Ya17ZWpIO2FjOyKpO2KuOulvCDsnITtlZwgbmV4dCDsu6TrhJAg7Yq466asCisKKzMueCDsu6TrhJAg7Yq466asCistLS0tLS0tLS0tLS0tLS0KKworMy54IOy7pOuEkOuTpOydgCBMaW51eCBUb3J2YWxkc+qwgCDqtIDrpqztlZjrqbAga2VybmVsLm9yZ+ydmCBwdWIvbGludXgva2VybmVsL3YzLngvCivrlJTroInthqDrpqzsl5DshJwg7LC47KGw65CgIOyImCDsnojri6Qu6rCc67CcIO2UhOuhnOyEuOyKpOuKlCDri6TsnYzqs7wg6rCZ64ukLgorICAtIOyDiOuhnOyatCDsu6TrhJDsnbQg67Cw7Y+s65CY7J6Q66eI7J6QIDLso7zsnZgg7Iuc6rCE7J20IOyjvOyWtOynhOuLpC4g7J20IOq4sOqwhOuPmeydgAorICAgIOuplOyduO2FjOydtOuEiOuTpOydgCDtgbAgZGlmZuuTpOydhCBMaW51c+yXkOqyjCDsoJzstpztlaAg7IiYIOyeiOuLpC4g64yA6rCcIOydtCDtjKjsuZjrk6TsnYAKKyAgICDrqocg7KO8IOuPmeyViCAtbmV4dCDsu6TrhJDrgrTsl5Ag7J2066+4IOyeiOyXiOuNmCDqsoPrk6TsnbTri6QuIO2BsCDrs4Dqsr3rk6TsnYQg7KCc7Lac7ZWY64qUIOuNsAorICAgIOyEoO2YuOuQmOuKlCDrsKnrspXsnYAgIGdpdCjsu6TrhJDsnZgg7IaM7IqkIOq0gOumrCDtiLQsIOuNlCDrp47snYAg7KCV67O065Ok7J2AIGh0dHA6Ly9naXQub3IuY3ovCisgICAg7JeQ7IScIOywuOyhsO2VoCDsiJgg7J6I64ukKeulvCDsgqzsmqntlZjripQg6rKD7J207KeA66eMIOyInOyImO2VnCDtjKjsuZjtjIzsnbzsnZgg7ZiV7Iud7Jy866GcIOuztOuCtOuKlAorICAgIOqyg+uPhCDrrLTqtIDtlZjri6QuCisgIC0gMuyjvCDtm4Tsl5AgLXJjMSDsu6TrhJDsnbQg67Cw7Y+s65CY66mwIOyngOq4iOu2gO2EsOuKlCDsoITssrQg7Luk64SQ7J2YIOyViOygleyEseyXkCDsmIHtlqXsnYQKKyAgICDrr7jsuaDsiJgg7J6I64qUIOyDiOuhnOyatCDquLDriqXrk6TsnYQg7Y+s7ZWo7ZWY7KeAIOyViuuKlCDtjKjsuZjrk6Trp4zsnbQg7LaU6rCA65CgIOyImCDsnojri6QuCisgICAg7JmE7KCE7Z6IIOyDiOuhnOyatCDrk5zrnbzsnbTrsoQo7Zi57J2AIO2MjOydvOyLnOyKpO2FnCnripQgLXJjMSDsnbTtm4Tsl5Drp4wg67Cb7JWE65Ok7Jes7KeE64uk64qUCisgICAg6rKD7J2EIOq4sOyWte2VtOudvC4g7Jmc64OQ7ZWY66m0IOuzgOqyveydtCDsnpDssrTrgrTsl5DshJzrp4wg67Cc7IOd7ZWY6rOgIOy2lOqwgOuQnCDsvZTrk5zqsIAKKyAgICDrk5zrnbzsnbTrsoQg7Jm467aA7J2YIOuLpOuluCDrtoDrtoTsl5DripQg7JiB7Zal7J2EIOyjvOyngCDslYrsnLzrr4DroZwg6re465+wIOuzgOqyveydgAorICAgIO2ajOq3gCjsl63snpDso7w6IOydtOyghOyXkOuKlCDsobTsnqztlZjsp4Ag7JWK7JWY7KeA66eMIOyDiOuhnOyatCDquLDriqXstpTqsIDrgpgg67OA6rK97Jy866GcIOyduO2VtAorICAgIOyDneqyqOuCnCDrsoTqt7gp66W8IOydvOycvO2CrCDrp4ztlZwg7JyE7ZeY7J2EIOqwgOyngOqzoCDsnojsp4Ag7JWK6riwIOuVjOusuOydtOuLpC4gLXJjMeydtAorICAgIOuwsO2PrOuQnCDsnbTtm4Tsl5AgZ2l066W8IOyCrOyaqe2VmOyXrCDtjKjsuZjrk6TsnYQgTGludXPsl5Dqsowg67O064K87IiYIOyeiOyngOunjCDtjKjsuZjrk6TsnYAKKyAgICDqs7Xsi53soIHsnbgg66mU7J2866eBIOumrOyKpO2KuOuhnCDrs7TrgrTshJwg6rKA7Yag66W8IOuwm+ydhCDtlYTsmpTqsIAg7J6I64ukLgorICAtIOyDiOuhnOyatCAtcmPripQgTGludXPqsIAg7ZiE7J6sIGdpdCB0cmVl6rCAIO2FjOyKpO2KuCDtlZjquLDsl5Ag7Lap67aE7Z6IIOyViOygleuQnCDsg4Htg5zsl5AKKyAgICDsnojri6Tqs6Ag7YyQ64uo65CgIOuVjOuniOuLpCDrsLDtj6zrkJzri6QuIOuqqe2RnOuKlCDsg4jroZzsmrQgLXJjIOy7pOuEkOydhCDrp6Tso7wg67Cw7Y+s7ZWY64qUCisgICAg6rKD7J2064ukLgorICAtIOydtOufrO2VnCDtlITroZzshLjsiqTripQg7Luk64SQ7J20ICLspIDruYQocmVhZHkpIuuQmOyXiOuLpOqzoCDsl6zqsqjsp4jrlYzquYzsp4Ag6rOE7IaN65Cc64ukLgorICAgIO2UhOuhnOyEuOyKpOuKlCDrjIDssrTroZwgNuyjvOqwhCDsp4Dsho3rkJzri6QuCisgIC0g6rCBIC1yYyDrsLDtj6zsl5Ag7J6I64qUIOyVjOugpOynhCDtmozqt4DsnZgg66qp66Gd65Ok7J2AIOuLpOydjCBVUknsl5Ag64Ko6rKo7KeE64ukLgorICAgIGh0dHA6Ly9rZXJuZWxuZXdiaWVzLm9yZy9rbm93bl9yZWdyZXNzaW9ucworCivsu6TrhJAg67Cw7Y+s7JeQIOyeiOyWtOyEnCDslrjquIntlaDrp4ztlZwg6rCA7LmY6rCAIOyeiOuKlCDrpqzriIXsiqQg7Luk64SQIOuplOydvOungSDrpqzsiqTtirjsnZgKK0FuZHJldyBNb3J0b27snZgg6riA7J20IOyeiOuLpC4KKyAgICAgICAgIuy7pOuEkOydtCDslrjsoJwg67Cw7Y+s65Cg7KeA64qUIOyVhOustOuPhCDrqqjrpbjri6QuIOyZnOuDkO2VmOuptCDrsLDtj6zripQg7JWM66Ck7KeECisgICAgICAgICDrsoTqt7jsnZgg7IOB7Zmp7JeQIOuUsOudvCDrsLDtj6zrkJjripQg6rKD7J207KeAIOuvuOumrOygle2VtCDrhpPsnYAg7Iuc6rCE7JeQIOuUsOudvAorICAgICAgICAg67Cw7Y+s65CY64qUIOqyg+ydgCDslYTri4jquLAg65WM66y47J2064ukLiIKKworMy54LnkgLSDslYjsoJUg7Luk64SQIO2KuOumrAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzMg7J6Q66asIOyIq+yekOuhnCDsnbTro6jslrTsp4Qg67KE7KC87J2YIOy7pOuEkOuTpOydgCAtc3RhYmxlIOy7pOuEkOuTpOydtOuLpC4g6re46rKD65Ok7J2AIDMueAor7Luk64SQ7JeQ7IScIOuwnOqyrOuQnCDtgbAg7ZqM6reA65Ok7J2064KYIOuztOyViCDrrLjsoJzrk6Qg7KSRIOu5hOq1kOyggSDsnpHqs6Ag7KSR7JqU7ZWcIOyImOygleuTpOydhAor7Y+s7ZWo7ZWc64ukLgorCivsnbTqsoPsnYAg6rCA7J6lIOy1nOq3vOydmCDslYjsoJXsoIHsnbgg7Luk64SQ7J2EIOybkO2VmOuKlCDsgqzsmqnsnpDsl5Dqsowg7LaU7LKc65CY64qUIOu4jOuenOy5mOydtOupsCwKK+qwnOuwnC/si6Ttl5jsoIEg67KE7KC87J2EIO2FjOyKpO2KuO2VmOuKlCDqsoPsnYQg64+V6rOg7J6QIO2VmOuKlCDsgqzsmqnsnpDrk6Tqs7zripQg67OE66GcIOq0gOugqOydtCDsl4bri6QuCisKK+yWtOuWpCAzLngueSDsu6TrhJDrj4Qg7IKs7Jqp7ZWgIOyImCDsl4bri6TrqbQg6re465WM64qUIOqwgOyepSDrhpLsnYAg7Iir7J6Q7J2YIDMueAor7Luk64SQ7J20IO2YhOyerOydmCDslYjsoJUg7Luk64SQ7J2064ukLgorCiszLngueeuKlCAic3RhYmxlIiDtjIA8c3RhYmxlQHZnZXIua2VybmVsLm9yZz7sl5Ag7J2Y7ZW0IOq0gOumrOuQmOupsCDqsbDsnZgg66ek67KIIOqyqeyjvOuhnAor67Cw7Y+s65Cc64ukLgorCivsu6TrhJAg7Yq466asIOusuOyEnOuTpCDrgrTsl5AgRG9jdW1lbnRhdGlvbi9zdGFibGVfa2VybmVsX3J1bGVzLnR4dCDtjIzsnbzsnYAg7Ja065akCivsooXrpZjsnZgg67OA6rK965Ok7J20IC1zdGFibGUg7Yq466as66GcIOuTpOyWtOyZlOuKlOyngOyZgCDrsLDtj6wg7ZSE66Gc7IS47Iqk6rCAIOyWtOuWu+qyjAor7KeE7ZaJ65CY64qU7KeA66W8IOyEpOuqhe2VnOuLpC4KKworCiszLnggLWdpdCDtjKjsuZjrk6QKKy0tLS0tLS0tLS0tLS0tLS0tLQorZ2l0IOyggOyepeyGjCjqt7jrn6zrr4DroZwgLWdpdOydtOudvOuKlCDsnbTrpoTsnbQg67aZ7J2MKeyXkOuKlCDrgqDrp4jri6Qg6rSA66as65CY64qUIExpbnVz7J2YCivsu6TrhJAg7Yq466as7J2YIHNuYXBzaG90IOuTpOydtCDsnojri6QuIOydtCDtjKjsuZjrk6TsnYAg7J2867CY7KCB7Jy866GcIOuCoOuniOuLpCDrsLDtj6zrkJjrqbAKK0xpbnVz7J2YIO2KuOumrOydmCDtmITsnqwg7IOB7YOc66W8IOuCmO2DgOuCuOuLpC4g7J20IO2MqOy5mOuTpOydgCDsoJXsg4HsoIHsnbjsp4Ag7KGw6riI64+ECivsgrTtjrTrs7Tsp4Ag7JWK6rOgIOyekOuPmeyggeycvOuhnCDsg53shLHrkJwg6rKD7J2066+A66GcIC1yYyDsu6TrhJDrk6Qg67O064uk64+EIOuNlCDsi6Ttl5jsoIHsnbTri6QuCisKK+yEnOu4jOyLnOyKpO2FnCDsu6TrhJAg7Yq466as65Ok6rO8IO2MqOy5mOuTpAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor64uk7JaR7ZWcIOy7pOuEkCDshJzruIzsi5zsiqTthZzsnZgg66mU7J247YWM7J2064SI65OkIC0tLSDqt7jrpqzqs6Ag66eO7J2AIOy7pOuEkCDshJzruIzsi5zsiqTthZwg6rCc67Cc7J6Q65OkCistLS0g7J2AIOq3uOuTpOydmCDtmITsnqwg6rCc67CcIOyDge2DnOulvCDshozsiqQg7KCA7J6l7IaM66GcIOuFuOy2nO2VnOuLpC4g7J2066W8IO2Gte2VtCDri6Trpbgg7IKs656M65Ok64+ECivsu6TrhJDsnZgg64uk66W4IOyYgeyXreyXkCDslrTrlqQg67OA7ZmU6rCAIOydtOujqOyWtOyngOqzoCDsnojripTsp4Ag7JWMIOyImCDsnojri6QuIOq4ieyGje2eiCDqsJzrsJzsnbQKK+ynhO2WieuQmOuKlCDsmIHsl63snbQg7J6I6rOgIOq3uOugh+yngCDslYrsnYAg7JiB7Jet7J20IOyeiOycvOuvgOuhnCwg6rCc67Cc7J6Q64qUIOuLpOuluCDqsJzrsJzsnpDqsIAg7KCc7Lac7ZWcCivsiJjsoJUg7IKs7ZWt6rO8IOyekOyLoOydmCDsiJjsoJXsgqztla3snZgg7Lap64+M7J2064KYIOuPmeydvO2VnCDsnbzsnYQg64+Z7Iuc7JeQIOuRkOyCrOuejOydtCDrlLDroZwKK+ynhO2Wie2VmOuKlCDsgqztg5zrpbwg67Cp7KeA7ZWY6riwIOychO2VtCDquInsho3tnogg6rCc67Cc7J20IOynhO2WieuQmOqzoCDsnojripQg7JiB7Jet7JeQIOyekeyXheydmAor67Kg7J207Iqk66W8IOunnuy2sOykhCDqsoPsnbQg7JqU6rWs65Cc64ukLgorCivrjIDrtoDrtoTsnZgg7J2065+s7ZWcIOyggOyepeyGjOuKlCBnaXQg7Yq466as7KeA66eMLCBnaXTsnbQg7JWE64uMIFNDTeycvOuhnCDqtIDrpqzrkJjqsbDrgpgsIHF1aWx0Civsi5zrpqzspojroZwg7KCc6rO165CY64qUIO2MqOy5mOuTpOuPhCDsobTsnqztlZzri6QuIOydtOufrO2VnCDshJzruIzsi5zsiqTthZwg7KCA7J6l7IaM65Ok7J2AIE1BSU5UQUlORVJTCivtjIzsnbzsl5Ag64KY7Je065CY7Ja0IOyeiOuLpC4g64yA67aA67aE7J2AIGh0dHA6Ly9naXQua2VybmVsLm9yZyDsl5DshJwg67O8IOyImCDsnojri6QuCisKK+ygnOyViOuQnCDtjKjsuZjripQg7ISc67iM7Iuc7Iqk7YWcIO2KuOumrOyXkCDsu6TrsIvrkJjquLAg7KCE7JeQIOuplOydvOungSDrpqzsiqTtirjrpbwg7Ya17ZW0Civrpqzrt7DrkJzri6Qo7JWE656Y7J2YIOq0gOugqCDshLnshZjsnYQg7LC46rOg7ZWY6riwIOuwlOuegOuLpCkuIOydvOu2gCDsu6TrhJAg7ISc67iM7Iuc7Iqk7YWc7J2YIOqyveyasCwg7J20Civrpqzrt7Ag7ZSE66Gc7IS47Iqk64qUIHBhdGNod29ya+udvOuKlCDrj4Tqtazrpbwg7Ya17ZW0IOy2lOyggeuQnOuLpC4gcGF0Y2h3b3Jr7J2AIOuTseuhneuQnCDtjKjsuZjsmYAKK+2MqOy5mOyXkCDrjIDtlZwg7L2U66mY7Yq4LCDtjKjsuZjsnZgg67KE7KCE7J2EIOuzvCDsiJgg7J6I64qUIOybuSDsnbjthLDtjpjsnbTsiqTrpbwg7KCc6rO17ZWY6rOgLAor66mU7J247YWM7J2064SI64qUIO2MqOy5mOulvCDrpqzrt7Ag7KSRLCDrpqzrt7Ag7Ya16rO8LCDrmJDripQg67CY66Ck65Co7Jy866GcIO2RnOyLnO2VoCDsiJgg7J6I64ukLgor64yA67aA67aE7J2YIOydtOufrO2VnCBwYXRjaHdvcmsg7IKs7J207Yq464qUIGh0dHA6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy8g65iQ64qUCitodHRwOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvIOyXkCDrgpjsl7TrkJjslrQg7J6I64ukLgorCiszLnggLSDthrXtlakg7YWM7Iqk7Yq466W8IOychO2VnCBuZXh0IOy7pOuEkCDtirjrpqwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCivshJzruIzsi5zsiqTthZwg7Yq466as65Ok7J2YIOuzgOqyveyCrO2VreuTpOydgCBtYWlubGluZSAzLngg7Yq466as66GcIOuTpOyWtOyYpOq4sCDsoITsl5Ag7Ya17ZWpCivthYzsiqTtirjrpbwg6rGw7LOQ7JW8IO2VnOuLpC4g7J2065+wIOuqqeyggeycvOuhnCwg66qo65OgIOyEnOu4jOyLnOyKpO2FnCDtirjrpqzsnZgg67OA6rK97IKs7ZWt7J2EIOqxsOydmAor66ek7J28IOuwm+yVhOqwgOuKlCDtirnsiJjtlZwg7YWM7Iqk7Yq4IOyggOyepeyGjOqwgCDsobTsnqztlZzri6Q6CisgICAgICAgaHR0cDovL2dpdC5rZXJuZWwub3JnLz9wPWxpbnV4L2tlcm5lbC9naXQvc2ZyL2xpbnV4LW5leHQuZ2l0CisgICAgICAgaHR0cDovL2xpbnV4LmYtc2VpZGVsLmRlL2xpbnV4LW5leHQvcG13aWtpLworCivsnbTrn7Ag7Iud7Jy866GcLCAtbmV4dCDsu6TrhJDsnYQg7Ya17ZW0IOuLpOydjCDrqLjsp4Ag6riw6rCE7JeQIOuplOyduOudvOyduCDsu6TrhJDsl5Ag7Ja065akIOuzgOqyveydtAor6rCA7ZW07KeIIOqyg+yduOyngCDqsITrnrXtnogg7JWMIOyImCDsnojri6QuIOuqqO2XmOyLrCDqsJXtlZwg7YWM7Iqk7YSw652866m0IC1uZXh0IOy7pOuEkOyXkOyEnCDthYzsiqTtirjrpbwKK+yImO2Wie2VmOuKlCDqsoPrj4Qg7KKL7J2EIOqyg+ydtOuLpC4KKwor67KE6re4IOuztOqzoAorLS0tLS0tLS0tCitidWd6aWxsYS5rZXJuZWwub3Jn64qUIOumrOuIheyKpCDsu6TrhJAg6rCc67Cc7J6Q65Ok7J20IOy7pOuEkOydmCDrsoTqt7jrpbwg7LaU7KCB7ZWY64qUIOqzs+ydtOuLpC4KK+yCrOyaqeyekOuTpOydgCDrsJzqsqztlZwg66qo65OgIOuyhOq3uOuTpOydhCDrs7Tqs6DtlZjquLAg7JyE7ZWY7JesIOydtCDtiLTsnYQg7IKs7Jqp7ZWgIOqyg+ydhCDqtozsnqXtlZzri6QuCitrZXJuZWwgYnVnemlsbGHrpbwg7IKs7Jqp7ZWY64qUIOyekOyEuO2VnCDrsKnrspXsnYAg64uk7J2M7J2EIOywuOyhsO2VmOudvC4KKyAgICBodHRwOi8vdGVzdC5rZXJuZWwub3JnL2J1Z3ppbGxhL2ZhcS5odG1sCisKK+uplOyduCDsu6TrhJAg7IaM7IqkIOuUlOugie2GoOumrOyXkCDsnojripQgUkVQT1JUSU5HLUJVR1Mg7YyM7J287J2AIOy7pOuEkCDrsoTqt7jrnbzqs6Ag7IOd6rCB65CY64qUCivqsoPsnYQg67O06rOg7ZWY64qUIOuwqeuyleyXkCDqtIDtlZwg7KKL7J2AIO2FnO2UjOumv+ydtOupsCDrrLjsoJzrpbwg7LaU7KCB7ZWY6riwIOychO2VtOyEnCDsu6TrhJAKK+qwnOuwnOyekOuTpOydtCDtlYTsmpTroZwg7ZWY64qUIOygleuztOqwgCDrrLTsl4frk6Tsnbjsp4Drpbwg7IOB7IS47Z6IIOyEpOuqhe2VmOqzoCDsnojri6QuCisKKwor67KE6re4IOumrO2PrO2KuOuTpOydmCDqtIDrpqwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK+yXrOufrOu2hOydmCDtlbTtgrkg6riw7Iig7J2EIOyXsOyKte2VmOuKlCDqsIDsnqUg7KKL7J2AIOuwqeuylSDspJHsnZgg7ZWY64qUIOuLpOuluCDsgqzrnozrk6TsnbQKK+uztOqzoO2VnCDrsoTqt7jrk6TsnYQg7IiY7KCV7ZWY64qUIOqyg+ydtOuLpC4g7Jes65+s67aE7J2AIOy7pOuEkOydhCDrjZTsmrEg7JWI7KCV7ZmU7Iuc7YKk64qU642wCivrj4Tsm4DsnYQg7KSEIOu/kOunjOydtCDslYTri4jrnbwg7Iuk7KCc7J6I64qUIOusuOygnOuTpOydhCDsiJjsoJXtlZjripQg67KV7J2EIOuwsOyasOqyjCDrkJjqs6AKK+q3uOyZgCDtlajqu5gg7Jes65+s67aE65Ok7J2YIOq4sOyIoOydgCDtlqXsg4HrkKAg6rKD7J2066mwIOuLpOuluCDqsJzrsJzsnpDrk6TsnbQg7Jes65+s67aE7J2YCivsobTsnqzsl5Ag64yA7ZW0IOyVjOqyjCDrkKAg6rKD7J2064ukLiDrsoTqt7jrpbwg7IiY7KCV7ZWY64qUIOqyg+ydgCDqsJzrsJzsnpDrk6QgIOyCrOydtOyXkOyEnAor7KCQ7IiY66W8IOyWu+ydhCDsiJgg7J6I64qUIOqwgOyepSDsoovsnYAg67Cp67KV7KSR7J2YIO2VmOuCmOydtOuLpC4g7Jmc64OQ7ZWY66m0IOunjuydgCDsgqzrnozrk6TsnYAKK+uLpOuluCDsgqzrnozrk6TsnZgg67KE6re465Ok7J2EIOyImOygle2VmOq4sCDsnITtlZjsl6wg7Iuc6rCE7J2EIOuCreu5hO2VmOyngCDslYrquLAg65WM66y47J2064ukLgorCivsnbTrr7gg67O06rOg65CcIOuyhOq3uCDrpqztj6ztirjrk6TsnYQg6rCA7KeA6rOgIOyekeyXhe2VmOq4sCDsnITtlbTshJwgaHR0cDovL2J1Z3ppbGxhLmtlcm5lbC5vcmfrpbwKK+ywuOyhsO2VmOudvC4g7Jes65+s67aE7J20IOyVnuycvOuhnCDsg53qsqjrgqAg67KE6re4IOumrO2PrO2KuOuTpOydmCDsobDslrjsnpDqsIAg65CY6ri4IOybkO2VnOuLpOuptAorYnVnbWUtbmV3IOuplOydvOungSDrpqzsiqTtirjrgpgo7IOI66Gc7Jq0IOuyhOq3uCDrpqztj6ztirjrk6Trp4zsnbQg7J206rOz7JeQ7IScIOuplOydvOuhnCDsoITtlbTsp4Tri6QpCitidWdtZS1qYW5pdG9yIOuplOydvOungSDrpqzsiqTtirgoYnVnemlsbGHsl5Ag66qo65OgIOuzgO2ZlOuTpOydtCDsl6zquLDshJwg66mU7J2866GcIOyghO2VtOynhOuLpCkKK+yXkCDrk7HroZ3tlZjrqbQg65Cc64ukLgorCisgICAgICBodHRwczovL2xpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vYnVnbWUtbmV3CisgICAgICBodHRwczovL2xpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vYnVnbWUtamFuaXRvcnMKKworCisKK+uplOydvOungSDrpqzsiqTtirjrk6QKKy0tLS0tLS0tLS0tLS0tLQorCivsnITsnZgg66qH66qHIOusuOyEnOuTpOydtCDshKTrqoXtlZjsmIDsp4Drp4wg7ZW17IusIOy7pOuEkCDqsJzrsJzsnpDrk6TsnZgg64yA64uk7IiY64qUCivrpqzriIXsiqQg7Luk64SQIOuplOydvOungSDrpqzsiqTtirjsl5Ag7LC47Jes7ZWY6rOgIOyeiOuLpC4g66as7Iqk7Yq47JeQIOuTseuhne2VmOqzoCDtlbTsp4DtlZjripQKK+uwqeuyleyXkCDqtIDtlZwg7J6Q7IS47ZWcIOyCrO2VreydgCDri6TsnYzsl5DshJwg7LC47KGw7ZWgIOyImCDsnojri6QuCisgICAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy92Z2VyLWxpc3RzLmh0bWwjbGludXgta2VybmVsCivsm7nsg4HsnZgg66eO7J2AIOuLpOuluCDqs7Psl5Drj4Qg66mU7J2866eBIOumrOyKpO2KuOydmCDslYTsubTsnbTruIzrk6TsnbQg7J6I64ukLgor7J2065+s7ZWcIOyVhOy5tOydtOu4jOuTpOydhCDssL7snLzroKTrqbQg6rKA7IOJIOyXlOynhOydhCDsgqzsmqntlZjrnbwuIOyYiOulvCDrk6TslrQ6CisgICAgICBodHRwOi8vZGlyLmdtYW5lLm9yZy9nbWFuZS5saW51eC5rZXJuZWwKK+yXrOufrOu2hOydtCDsg4jroZzsmrQg66y47KCc7JeQIOq0gO2VtCDrpqzsiqTtirjsl5Ag7Jis66as6riwIOyghOyXkCDrp5DtlZjqs6Ag7Iu27J2AIOyjvOygnOyXkCDqtIDtlZwKK+qyg+ydhCDslYTsubTsnbTruIzsl5DshJwg66i87KCAIOywvuyVhOuztOq4sOulvCDqsJXroKXtnogg6raM7J6l7ZWc64ukLiDsnbTrr7gg7IOB7IS47ZWY6rKMIO2GoOuhoOuQnCDrp47snYAKK+qyg+uTpOydtCDrqZTsnbzrp4Eg66as7Iqk7Yq47J2YIOyVhOy5tOydtOu4jOyXkCDquLDroZ3rkJjslrQg7J6I64ukLgorCivqsIHqsIHsnZgg7Luk64SQIOyEnOu4jOyLnOyKpO2FnOuTpOydmCDrjIDrtoDrtoTsnYAg7J6Q7Iug65Ok7J2YIOqwnOuwnOyXkCDqtIDtlZwg64W466Cl65Ok66GcIOydtOujqOyWtOynhAor67aE66as65CcIOuplOydvOungSDrpqzsiqTtirjrpbwg65Sw66GcIOqwgOyngOqzoCDsnojri6QuIOuLpOuluCDqt7jro7nrk6TsnbQg66y07IqoIOumrOyKpO2KuOulvCDqsIDsp4Dqs6AKK+yeiOuKlOyngOuKlCBNQUlOVEFJTkVSUyDtjIzsnbzsnYQg7LC47KGw7ZWY6528LgorCivrp47snYAg66as7Iqk7Yq465Ok7J2AIGtlcm5lbC5vcmfsl5DshJwg7Zi47Iqk7Yq465CY6rOgIOyeiOuLpC4g6re4IOygleuztOuTpOydgCDri6TsnYzsl5DshJwg7LC47KGw65CgIOyImCDsnojri6QuCisgICAgICAgICBodHRwOi8vdmdlci5rZXJuZWwub3JnL3ZnZXItbGlzdHMuaHRtbAorCivrpqzsiqTtirjrk6TsnYQg7IKs7Jqp7ZWgIOuVjOuKlCDsmKzrsJTrpbgg7JiI7KCI7J2EIOuUsOulvCDqsoPsnYQg7Jyg64WQ7ZW06528Lgor64yA64uo7ZWY7KeEIOyViuyngOunjCDri6TsnYwgVVJM7J2AIOumrOyKpO2KuCjtmLnsnYAg66qo65OgIOumrOyKpO2KuCnsmYAg64yA7ZmU7ZWY64qUIOuqh+uqhyDqsITri6jtlZwKK+qwgOydtOuTnOudvOyduOydhCDqsIDsp4Dqs6Ag7J6I64ukLgorICAgICAgICAgaHR0cDovL3d3dy5hbGJpb24uY29tL25ldGlxdWV0dGUvCisKK+yXrOufrCDsgqzrnozrk6TsnbQg7Jes65+s67aE7J2YIOuplOydvOyXkCDsnZHri7XtlZzri6TrqbQgQ0M6IOymiSDsiJjsi6Ag66as7Iqk7Yq464qUIOq9pCDsu6Tsp4DqsowKK+uQoCDqsoPsnbTri6QuIOyVhOustCDsnbTsnKDsl4bsnbQgQ0Psl5DshJwg7Ja065akIOyCrOuejOuPhCDsoJzqsbDtlZjqsbDrgpgg66as7Iqk7Yq4IOyjvOyGjOuhnOunjAor7ZqM7Iug7ZWY7KeAIOuniOudvC4g66mU7J287J2EIOuztOuCuCDsgqzrnozsnLzroZzshJwg7ZWY64KY66W8IOuwm+qzoCDrpqzsiqTtirjroZzrtoDthLAg65iQCivtlZjrgpjrpbwg67Cb7JWEIOuRkOuyiCDrsJvripQg6rKD7JeQIOydteyIme2VmOyXrCDsnojsnLzri4ggbWFpbC1oZWFkZXLrpbwg7KGw7J6R7ZWY66Ck6rOgIO2VmOyngAor66eQ7JWE6528LiDsgqzrnozrk6TsnYAg6re465+wIOqyg+ydhCDsoovslYTtlZjsp4Ag7JWK7J2EIOqyg+ydtOuLpC4KKwor7Jes65+s67aE7J2YIO2ajOyLoOydmCDrrLjrp6XsnYQg7JuQ656Y64yA66GcIOycoOyngO2VtOyVvCDtlZzri6QuIOyXrOufrOu2hOuTpOydmCDtmozsi6DsnZgg7JyX67aA67aE7JeQCisiSm9obiDsu6TrhJDtlbTsu6TripQg7J6R7ISx7ZaI64ukLi4uLiLrpbwg7Jyg7KeA7ZWY66mwIOyXrOufrOu2hOuTpOydmCDsnZjqsqzsnYQg6re4IOuplOydvOydmCDsnJfrtoDrtoTsl5AKK+yekeyEse2VmOyngCDrp5Dqs6Ag6rCBIOyduOyaqe2VnCDri6jrnb3rk6Qg7IKs7J207JeQIOuEo+yWtOudvC4KKwor7Jes65+s67aE65Ok7J20IO2MqOy5mOuTpOydhCDrqZTsnbzsl5Ag64Sj64qU64uk66m0IOq3uOqyg+uTpOydgCBEb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVz7JeQCivrgpjsmYDsnojripTrjbDroZwg66qF67Cx7Z6IKHBsYWluKSDsnb3snYQg7IiYIOyeiOuKlCDthY3siqTtirjsl6zslbwg7ZWc64ukLiDsu6TrhJAg6rCc67Cc7J6Q65Ok7J2ACivssqjrtoDtjIzsnbzsnbTrgpgg7JWV7LaV65CcIO2MqOy5mOuTpOydhCDsm5DtlZjsp4Ag7JWK64qU64ukLiDqt7jrk6TsnYAg7Jes65+s67aE65Ok7J2YIO2MqOy5mOydmAor6rCBIOudvOyduCDri6jsnITroZwg7L2U66mY7Yq466W8IO2VmOq4uCDsm5DtlZjrqbAg7JWV7LaV7ZWY6rGw64KYIOyyqOu2gO2VmOyngCDslYrqs6Ag67O064K064qUIOqyg+ydtAor6re466CH6rKMIO2VoCDsiJgg7J6I64qUIOycoOydvO2VnCDrsKnrspXsnbTri6QuIOyXrOufrOu2hOuTpOydtCDsgqzsmqntlZjripQg66mU7J28IO2UhOuhnOq3uOueqOydtAor7Iqk7Y6Y7J207Iqk64KYIO2DrSDrrLjsnpDrk6TsnYQg7KGw7J6R7ZWY7KeAIOyViuuKlOyngCDtmZXsnbjtlZjrnbwuIOqwgOyepSDsoovsnYAg7LKrIO2FjOyKpO2KuOuKlAor66mU7J287J2EIOyekOyLoOyXkOqyjCDrs7TrgrTrs7Tqs6Ag7Iqk7Iqk66GcIOq3uCDtjKjsuZjrpbwg7KCB7Jqp7ZW067O06528LiDqt7jqsoPsnbQg64+Z7J6R7ZWY7KeACivslYrripTri6TrqbQg7Jes65+s67aE7J2YIOuplOydvCDtlITroZzqt7jrnqjsnYQg6rOg7LmY642Y6rCAIOygnOuMgOuhnCDrj5nsnpHtlZjripQg7ZSE66Gc6re4656o7Jy866GcCivrsJTqvrjslrTrnbwuCisKK+ustOyXh+uztOuLpOuPhCDrqZTsnbzrp4Eg66as7Iqk7Yq47J2YIOuLpOuluCDqtazrj4XsnpDrk6Tsl5Dqsowg67O07Jes7KO866CkIO2VnOuLpOuKlCDqsoPsnYQg6riw7Ja17ZWY6528LgorCisKK+y7pOuupOuLiO2LsOyZgCDtmJHroKXtlZjripQg67KVCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCivsu6TrhJAg7Luk666k64uI7Yuw7J2YIOuqqeyggeydgCDqsIDriqXtlZztlZwg6rCA7J6lIOyii+ydgCDsu6TrhJDsnYQg7KCc6rO17ZWY64qUIOqyg+ydtOuLpC4g7Jes65+s67aE7J20CivrsJvslYTrk6Tsl6zsp4gg7Yyo7LmY66W8IOygnOy2nO2VmOqyjCDrkJjrqbQg6re4IO2MqOy5mOydmCDquLDsiKDsoIHsnbgg7J207KCQ7Jy866GcIOqygO2GoOuQoCDqsoPsnbTri6QuCivqt7jrn7wg7Jes65+s67aE65Ok7J2AIOustOyXh+ydhCDquLDrjIDtlZjqs6Ag7J6I7Ja07JW8IO2VmOuKlOqwgD8KKyAtIOu5hO2MkAorIC0g7J2Y6rKsCisgLSDrs4Dqsr3snYQg7JyE7ZWcIOyalOq1rAorIC0g64u57JyE7ISx7J2EIOychO2VnCDsmpTqtawKKyAtIOy5qOustQorCivquLDslrXtlZjrnbwuIOydtOqyg+uTpOydgCDsl6zrn6zrtoTsnZgg7Yyo7LmY6rCAIOy7pOuEkOuhnCDrk6TslrTqsIDquLAg7JyE7ZWcIOqzvOygleydtOuLpC4g7Jes65+s67aE7J2YCivtjKjsuZjrk6TsnYAg67mE7YyQ6rO8IOuLpOuluCDsnZjqsqzsnYQg67Cb7J2EIOyImCDsnojqs6Ag6re46rKD65Ok7J2EIOq4sOyIoOyggeyduCDroIjrsqjroZwg7Y+J6rCA7ZWY6rOgCivsnqzsnpHsl4XtlZjqsbDrgpgg65iQ64qUIOyZnCDsiJjsoJXtlZjrqbQg7JWI65CY64qU7KeA7JeQIOq0gO2VmOyXrCDrqoXro4ztlZjqs6Ag6rCE6rKw7ZWcIOydtOycoOulvAor66eQ7ZWgIOyImCDsnojslrTslbwg7ZWc64ukLiDsl6zrn6zrtoTsnbQg7KCc7Lac7ZWcIOqyg+yXkCDslrTrlqQg7J2R64u164+EIOyeiOyngCDslYrri6TrqbQg66qHIOydvOydhAor6riw64uk66Ck67O06rOgIOuLpOyLnCDsi5zrj4TtlbTrnbwuIOuVjOuhoCDrhIjrrLQg66eO7J2AIOuplOydvOuTpCDsho3sl5Ag66y77ZiA67KE66as6riw64+EIO2VnOuLpC4KKwor7Jes65+s67aE7J2AIOustOyXh+ydhCDtlbTshJzripQg7JWI65CY64qU6rCAPworIC0g7Jes65+s67aE7J2YIO2MqOy5mOqwgCDslYTrrLQg7KeI66y4IOyXhuydtCDrsJvslYTrk6Tsl6zsp4DquLDrpbwg6riw64yA7ZWY64qUIOqygworIC0g67Cp7Ja07KCB7J20IOuQmOuKlCDqsoMKKyAtIOydmOqyrOydhCDrrLTsi5ztlZjripQg6rKDCisgLSDsmpTssq3rkJwg67OA6rK97J2EIO2VmOyngCDslYrqs6Ag7Yyo7LmY66W8IOuLpOyLnCDsoJzstpztlZjripQg6rKDCisKK+qwgOuKpe2VnO2VnCDqsIDsnqUg7KKL7J2AIOq4sOyIoOyggeyduCDtlbTri7XsnYQg7LC+6rOgIOyeiOuKlCDsu6TrrqTri4jti7Dsl5DshJzripQg7ZWt7IOBCivslrTrlqQg7Yyo7LmY6rCAIOyWvOuniOuCmCDsoovsnYDsp4Dsl5Ag6rSA7ZWY7JesIOuLpOuluCDsnZjqsqzrk6TsnbQg7J6I7J2EIOyImCDsnojri6QuIOyXrOufrOu2hOydgAor7ZiR7KGw7KCB7J207Ja07JW8IO2VmOqzoCDquLDqurzsnbQg7Jes65+s67aE7J2YIOyDneqwgeydhCDsu6TrhJAg64K07JeQIOunnuy2lOyWtOyVvCDtlZzri6QuIOyVhOuLiOuptAor7KCB7Ja064+EIOyXrOufrOu2hOydmCDqsoPsnbQg6rCA7LmY7J6I64uk64qUIOqyg+ydhCDspp3rqoXtlZjsl6zslbwg7ZWc64ukLiDsnpjrqrvrkJwg6rKD64+EIOyXrOufrOu2hOydtAor7Jis67CU66W4IOuwqe2WpeydmCDtlbTqsrDssYXsnLzroZwg7J2064GM7Ja06rCIIOydmOyngOqwgCDsnojri6TrqbQg67Cb7JWE65Ok7Jes7KeIIOqyg+ydtOudvOuKlCDsoJDsnYQKK+q4sOyWte2VmOudvC4KKwor7Jes65+s67aE7J2YIOyyqyDtjKjsuZjsl5Ag7Jes65+s67aE7J20IOyImOygle2VtOyVvO2VmOuKlCDsi63sl6zqsJwg7KCV64+E7J2YIO2ajOyLoOydtCDsmKTripQKK+qyveyasOuPhCDtnZTtlZjri6QuIOydtOqyg+ydgCDsl6zrn6zrtoTsnZgg7Yyo7LmY6rCAIOuwm+yVhOuTpOyXrOyngOyngCDslYrsnYQg6rKD7J20652864qUIOqyg+ydhAor7J2Y66+47ZWY64qUIOqyg+ydtCDslYTri4jqs6Ag6rCc7J247KCB7Jy866GcIOyXrOufrOu2hOyXkOqyjCDqsJDsoJXsnbQg7J6I7Ja07IScIOq3uOufrOuKlCDqsoPrj4QKK+yVhOuLiOuLpC4g6rCE64uo7Z6IIOyXrOufrOu2hOydmCDtjKjsuZjsl5Ag7KCc6riw65CcIOusuOygnOuTpOydhCDsiJjsoJXtlZjqs6Ag6re46rKD7J2EIOuLpOyLnAor67O064K06528LgorCisKK+y7pOuEkCDsu6TrrqTri4jti7DsmYAg6riw7JeFIOyhsOyngeqwhOydmCDssKjsnbTsoJAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCivsu6TrhJAg7Luk666k64uI7Yuw64qUIOqwgOyepSDsoITthrXsoIHsnbgg7ZqM7IKs7J2YIOqwnOuwnCDtmZjqsr3qs7zripQg64uk66W064ukLiDsl6zquLDsl5Ag7Jes65+s67aE65Ok7J2YCivrrLjsoJzrpbwg7ZS87ZWY6riwIOychO2VnCDrqqnroZ3snbQg7J6I64ukLgorICDsl6zrn6zrtoTrk6TsnbQg7KCc7JWI7ZWcIOuzgOqyveuTpOyXkCDqtIDtlZjsl6wg66eQ7ZWgIOuVjCDsoovsnYAg6rKD65OkIDoKKyAgICAtICLsnbTqsoPsnYAg7Jes65+sIOusuOygnOuTpOydhCDtlbTqsrDtlanri4jri6QuIgorICAgIC0gIuydtOqyg+ydgCAyMDAwIOudvOyduOydmCDsvZTrk5zrpbwg7KSE7J6F64uI64ukLiIKKyAgICAtICLsnbTqsoPsnYAg64K06rCAIOunkO2VmOugpOuKlCDqsoPsl5Ag6rSA7ZW0IOyEpOuqhe2VmOuKlCDtjKjsuZjsnoXri4jri6QuIgorICAgIC0gIuuCmOuKlCA16rCc7J2YIOuLpOuluCDslYTtgqTthY3ss5Dsl5DshJwg6re46rKD7J2EIO2FjOyKpO2KuCDtlojsnLzrr4DroZwuLi4iCisgICAgLSAi7Jes6riw7JeQIOydvOugqOydmCDsnpHsnYAg7Yyo7LmY65Ok7J20IOyeiOycvOuvgOuhnC4uLiIKKyAgICAtICLsnbTqsoPsnYAg7J2867CY7KCB7J24IOuouOyLoOyXkOyEnCDshLHriqXsnYQg7Zal7IOB7ZWo7Jy866GcLi4uIgorCisgIOyXrOufrOu2hOuTpOydtCDrp5DtlaAg65WMIO2UvO2VtOyVvCDtlaAg7KKL7KeAIOyViuydgCDqsoPrk6QgOgorICAgIC0gIuyasOumrOuKlCDqt7jqsoPsnYQgQUlYL3B0eC9Tb2xhcmlz7JeQ7IScIOydtOufrO2VnCDrsKnrspXsnLzroZwg7ZaI64ukLiDqt7jrn6zrr4DroZwg6re46rKD7J2AIOyii+ydgCDqsoPsnoTsl5Ag7YuA66a87JeG64ukLi4uIgorICAgIC0gIuuCmOuKlCAyMOuFhOuPmeyViCDsnbTqsoPsnYQg7ZW07JmU64ukLiDqt7jrn6zrr4DroZwuLi4iCisgICAgLSAi7J206rKD7J2AIOuPiOydhCDrsozquLDsnITtlbQg64KY7J2YIO2ajOyCrOqwgCDtlYTsmpTroZwg7ZWY64qUIOqyg+ydtOuLpC4iCisgICAgLSAi7J206rKD7J2AIOyasOumrOydmCDsl5TthLDtlITrnbzsnbTspogg7IOB7ZKIIOudvOyduOydhCDsnITtlZwg6rKD7J2064ukLiIKKyAgICAtICLsl6zquLDsl5Ag64KY7J2YIOyDneqwgeydhCDrp5DtlZjqs6Ag7J6I64qUIDEwMDAg7Y6Y7J207KeAIOyEpOqzhCDrrLjshJzqsIAg7J6I64ukLiIKKyAgICAtICLrgpjripQgNuuLrOuPmeyViCDsnbTqsoPsnYQg7ZaI7Jy864uILi4uIgorICAgIC0gIuyXrOq4sOyXkCA1MDAwIOudvOyduCDsp5zrpqwg7Yyo7LmY6rCAIOyeiOycvOuLiC4uLiIKKyAgICAtICLrgpjripQg7ZiE7J6sIOuSpOyjveuwleyjveyduCDqsoPsnYQg7J6s7J6R7ISx7ZaI64ukLiDqt7jrpqzqs6Ag7Jes6riw7JeQLi4uIgorICAgIC0gIuuCmOuKlCDrp4jqsJDsi5ztlZzsnYQg6rCA7KeA6rOgIOyeiOycvOuvgOuhnCDsnbQg7Yyo7LmY64qUIOyngOq4iCDsoIHsmqnrkKAg7ZWE7JqU6rCAIOyeiOuLpC4iCisKK+y7pOuEkCDsu6TrrqTri4jti7DqsIAg7KCE7Ya17KCB7J24IOyGjO2UhO2KuOybqOyWtCDsl5Tsp4Dri4jslrTrp4Eg6rCc67CcIO2ZmOqyveuTpOqzvAor65iQIOuLpOuluCDsoJDsnYAg7Ja86rW07J2EIOuztOyngCDslYrqs6Ag7J287ZWc64uk64qUIOygkOydtOuLpC4g7J2066mU7J286rO8IGlyY+ulvCDrjIDtmZTsnZgKK+yjvOyalOyImOuLqOycvOuhnCDsgqzsmqntlZjripQg6rKD7J2YIO2VnOqwgOyngCDsnqXsoJDsnYAg7ISx67OE7J2064KYIOyduOyiheydmCDssKjrs4TsnbQKK+yXhuuLpOuKlCDqsoPsnbTri6QuIOumrOuIheyKpCDsu6TrhJDsnZgg7J6R7JeFIO2ZmOqyveyXkOyEnOuKlCDri6jsp4Ag7J2066mU7J28IOyjvOyGjOunjAor7JWM7IiYIOyeiOq4sCDrlYzrrLjsl5Ag7Jes7ISx6rO8IOyGjOyImCDrr7zsobHrk6Trj4Qg66qo65GQIOuwm+yVhOuTpOyXrOynhOuLpC4g6rWt7KCc7KCB7Jy866GcCivsnbztlZjqsowg65CY64qUIOy4oeuptOydgCDsgqzrnozsnZgg7J2066aE7JeQIOq3vOqxsO2VmOyXrCDshLHrs4TsnYQg7LaU7Lih7ZWgIOyImCDsl4bqsowKK+2VmOq4sOuVjOusuOyXkCDssKjrs4TsnYQg7JeG7JWg64qUIOuNsCDrj4Tsm4DsnYQg7KSA64ukLiBBbmRyZWHrnbzripQg7J2066aE7J2EIOqwgOynhCDrgqjsnpDsmYAKK1BhdOydtOudvOuKlCDsnbTrpoTsnYQg6rCA7KeEIOyXrOyekOqwgCDsnojsnYQg7IiY64+EIOyeiOuKlCDqsoPsnbTri6QuIOumrOuIheyKpCDsu6TrhJDsl5DshJwKK+yekeyXhe2VmOupsCDsg53qsIHsnYQg7ZGc7ZiE7ZW07JmU642YIOuMgOu2gOu2hOydmCDsl6zshLHrk6TsnYAg6riN7KCV7KCB7J24IOqyve2XmOydhCDqsIDsp4Dqs6AKK+yeiOuLpC4KKwor7Ja47Ja0IOyepeuyveydgCDsmIHslrTsl5Ag7J217IiZ7ZWY7KeAIOyViuydgCDrqofrqocg7IKs656M65Ok7JeQ6rKMIOusuOygnOqwgCDrkKAg7IiY64+EIOyeiOuLpC4KK+yWuOyWtOydmCDtm4zrpa3tlZwg6rWs7IKs64qUIOuplOydvOungSDrpqzsiqTtirjsl5DshJwg7Jis67CU66W06rKMIOyekOyLoOydmCDsg53qsIHsnYQKK+2RnO2YhO2VmOq4sCDsnITtlZjsl6wg7ZWE7JqU7ZWY64ukLiDqt7jrnpjshJwg7Jes65+s67aE7J2AIOydtOuplOydvOydhCDrs7TrgrTquLAg7KCE7JeQCivsmIHslrTrpbwg7Jis67CU66W06rKMIOyCrOyaqe2VmOqzoCDsnojripTsp4Drpbwg7LK07YGs7ZWY64qUIOqyg+ydtCDrsJTrnozsp4HtlZjri6QuCisKKwor7Jes65+s67aE7J2YIOuzgOqyveydhCDrgpjriITslrTrnbwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCivrpqzriIXsiqQg7Luk64SQIOy7pOuupOuLiO2LsOuKlCDtlZzqurzrsojsl5Ag6rWJ7J6l7Z6IIO2BsCDsvZTrk5zsnZgg66y27J2MKGNodW5rKeydhCDsib3qsowKK+uwm+yVhOuTpOydtOyngCDslYrripTri6QuIOuzgOqyveydgCDsoIHsoIjtlZjqsowg7IaM6rCc65CY6rOgLCDqsoDthqDrkJjqs6AsIOqwgeqwgeydmAor67aA67aE7Jy866GcIOyekeqyjCDrgpjriITslrTsoLjslbwg7ZWc64ukLiDsnbTqsoPsnYAg7ZqM7IKs7JeQ7IScIO2VmOuKlCDqsoPqs7zripQg7KCV7ZmV7Z6ICivrsJjrjIDrkJjripQg6rKD7J2064ukLiDsl6zrn6zrtoTrk6TsnZgg7KCc7JWI7J2AIOqwnOuwnCDstIjquLDsl5Ag7J287LCN7J20IOyGjOqwnOuQmOyVvCDtlZzri6QuCivqt7jrnpjshJwg7Jes65+s67aE65Ok7J2AIOyekOyLoOydtCDtlZjqs6Ag7J6I64qUIOqyg+yXkCDqtIDtlZjsl6wg7ZS865Oc67Cx7J2EIOuwm+ydhCDsiJgg7J6I6rKMCivrkJzri6QuIOy7pOuupOuLiO2LsOqwgCDsl6zrn6zrtoTrk6TsnbQg7Luk666k64uI7Yuw7JmAIO2VqOq7mCDsnbztlZjqs6Ag7J6I64uk64qUIOqyg+ydhAor64qQ64G864+E66GdIOunjOuTpOqzoCDsu6TrrqTri4jti7DqsIAg7Jes65+s67aE7J2YIOq4sOuKpeydhCDsnITtlZwg7JOw66CI6riwIOyepeycvOuhnOyNqAor7IKs7Jqp65CY7KeAIOyViuqzoCDsnojri6TripQg6rKD7J2EIOuKkOuBvOqyjCDtlZjsnpAuIOq3uOufrOuCmCDrqZTsnbzrp4Eg66as7Iqk7Yq47JeQIO2VnOuyiOyXkAorNTDqsJzsnZgg7J2066mU7J287J2EIOuztOuCtOyngOuKlCDrp5DslYTrnbwuIOyXrOufrOu2hOuTpOydmCDsnbzroKjsnZgg7Yyo7LmY65Ok7J2AIO2VreyDgQor642UIOyekeyVhOyVvCDtlZzri6QuCisKK+2MqOy5mOulvCDrgpjriITripQg7J207Jyg64qUIOuLpOydjOqzvCDqsJnri6QuCisKKzEpIOyekeydgCDtjKjsuZjrk6TsnYAg7Jes65+s67aE7J2YIO2MqOy5mOuTpOydtCDsoIHsmqnrkKAg7IiYIOyeiOuKlCDtmZXrpaDsnYQg64aS7Jes7KSA64ukLgorICAg7Jmc64OQ7ZWY66m0IOuLpOuluCDsgqzrnozrk6TsnYAg7KCV7ZmV7ISx7J2EIOqygOymne2VmOq4sCDsnITtlZjsl6wg66eO7J2AIOyLnOqwhOqzvCDrhbjroKXsnYQKKyAgIOuTpOydtOq4sOulvCDsm5DtlZjsp4Ag7JWK64qU64ukLiA17KSE7J2YIO2MqOy5mOuKlCDrqZTsnbjthYzsnbTrhIjqsIAg6rGw7J2YIOuqhyDstIjqsIQg7Z6Q64GXCisgICDrs7TrqbQg7KCB7Jqp65CgIOyImCDsnojri6QuIOq3uOufrOuCmCA1MDAg7KSE7J2YIO2MqOy5mOuKlCDsoJXtmZXshLHsnYQg6rKA7Yag7ZWY6riwIOychO2VmOyXrAorICAg66qH7Iuc6rCE7J20IOqxuOumtCDsiJjrj4Qg7J6I64ukKOqxuOumrOuKlCDsi5zqsITsnYAg7Yyo7LmY7J2YIO2BrOq4sCDtmLnsnYAg64uk66W4IOqyg+yXkAorICAg67mE66GA7ZWY7JesIOq4sO2VmOq4ieyImOyggeycvOuhnCDripjslrTrgpzri6QpLgorCisgICDtjKjsuZjrpbwg7J6R6rKMIOunjOuTnOuKlCDqsoPsnYAg66y07JeH7J246rCAIOyemOuqu+uQmOyXiOydhCDrlYwg65SU67KE6re47ZWY64qUIOqyg+ydhAorICAg7Im96rKMIOunjOuToOuLpC4g7KaJLCDqt7jroIfqsowg66eM65Oc64qUIOqyg+ydgCDrp6TsmrAg7YGwIO2MqOy5mOulvCDsoIHsmqntlZwg7ZuE7JeQCisgICDsobDsgqztlZjripQg6rKDIOuztOuLpCDsnpHsnYAg7Yyo7LmY66W8IOyggeyaqe2VnCDtm4Tsl5AgKOq3uOumrOqzoCDrqofrqofsnZgg6rKD7J20CisgICDquajsoYzsnYQg65WMKSDtlZjrgpjslKkg7Yyo7LmY65Ok7J2EIOygnOqxsO2VtOqwgOupsCDrlJTrsoTqt7gg7ZWY6riwIOyJveuPhOuhnSDrp4zrk6TslrQg7KSA64ukLgorCisyKSDsnpHsnYAg7Yyo7LmY65Ok7J2EIOuztOuCtOuKlCDqsoPrv5Drp4wg7JWE64uI6528IO2MqOy5mOuTpOydhCDsoJzstpztlZjquLDsoITsl5Ag7J6s7J6R7ISx7ZWY6rOgCisgICDqsITri6jtlZjqsowo7Zi57J2AIOqwhOuLqO2VnOqyjCDsnqzrsLDsuZjtlZjsl6wpIO2VmOuKlCDqsoPrj4Qg7KSR7JqU7ZWY64ukLgorCivsl6zquLDsl5Ag7Luk64SQIOqwnOuwnOyekCBBbCBWaXJv7J2YIOydtOyVvOq4sOqwgCDsnojri6QuCisgICAgIu2VmeyDneydmCDsiJjtlZkg7IiZ7KCc66W8IOyxhOygkO2VmOuKlCDshKDsg53ri5jsnYQg7IOd6rCB7ZW067O06528LiDshKDsg53ri5jsnYAg7ZWZ7IOd65Ok7J20CisgICAg64u17J2EIOyWu+ydhOuVjOq5jOyngCDqsqrsnYAg7Iuc7ZaJ7LCp7Jik66W8IOuztOq4uCDsm5DtlZjsp4Ag7JWK64qU64ukLiDshKDsg53ri5jrk6TsnYAKKyAgICDqsITqsrDtlZjqs6Ag6rCA7J6lIOubsOyWtOuCnCDri7XsnYQg67O06ri4IOybkO2VnOuLpC4g7ZuM66Wt7ZWcIO2VmeyDneydgCDsnbTqsoPsnYQg7JWM6rOgCisgICAg66eI7KeA66eJ7Jy866GcIOuLteydhCDslrvquLAg7KCEIOykkeqwhCDqs7zsoJXrk6TsnYQg7KCc7Lac7ZWY7KeEIOyViuuKlOuLpC4KKworICAgIOy7pOuEkCDqsJzrsJzrj4Qg66eI7LCs6rCA7KeA7J2064ukLiDrqZTsnbjthYzsnbTrhIjrk6Tqs7wg6rKA7Yag7ZWY64qUIOyCrOuejOuTpOydgCDrrLjsoJzrpbwKKyAgICDtkoDslrTrgpjqsIDripQg6rO87KCV7IaN7JeQIOyIqOqyqOynhCDqs7zsoJXsnYQg67O06ri4IOybkO2VmOynhCDslYrripTri6QuIOq3uOuTpOydgAorICAgIOqwhOqysO2VmOqzoCDrqYvsp4Qg64u17J2EIOuztOq4uCDsm5DtlZzri6QuIgorCivsu6TrrqTri4jti7DsmYAg7ZiR66Cl7ZWY66mwIOubsOyWtOuCnCDri7XsnYQg7LC+64qUIOqyg+qzvCDsl6zrn6zrtoTrk6TsnZgg64Gd66eI7LmY7KeAIOuqu+2VnCDsnpHsl4Xrk6QKK+yCrOydtOyXkCDqt6DtmJXsnYQg7Jyg7KeA7ZW07JW8IO2VmOuKlCDqsoPsnYAg7Ja066Ck7Jq47KeA64+EIOuqqOuluOuLpC4g6re465+s66+A66GcIO2UhOuhnOyEuOyKpOydmAor7LSI67CY7JeQIOyXrOufrOu2hOydmCDsnpHsl4XsnYQg7Zal7IOB7Iuc7YKk6riw7JyE7ZWcIO2UvOuTnOuwseydhCDslrvripQg6rKDIOu/kOunjCDslYTri4jrnbwKK+yXrOufrOu2hOuTpOydmCDrs4Dqsr3rk6TsnYQg7J6R7J2AIOustuydjOycvOuhnCDsnKDsp4DtlbTshJwg7Ius7KeA7Ja064qUIOyXrOufrOu2hOydmCDsnpHsl4XsnZgKK+uqqOuToCDrtoDrtoTsnbQg7KeA6riI7J2AIO2PrO2VqOuQoCDspIDruYTqsIAg65CY7Ja07J6I7KeAIOyViuyngOunjCDsnpHsnYAg67aA67aE7J2AIOuyjOyNqAor67Cb7JWE65Ok7Jes7KeIIOyImCDsnojrj4TroZ0g7Jyg7KeA7ZWY64qUIOqyg+ydtCDrsJTrnozsp4HtlZjri6QuCisKK+uYkO2VnCDsmYTshLHrkJjsp4Ag7JWK7JWY6rOgICLrgpjspJHsl5Ag7IiY7KCV65CgIOqyg+ydtOuLpC4iIOyZgCDqsJnsnYAg6rKD65Ok7J2EIO2PrO2VqO2VmOuKlAor7Yyo7LmY65Ok7J2AIOuwm+yVhOuTpOyXrOyngOyngCDslYrsnYQg6rKD7J20652864qUIOygkOydhCDsnKDrhZDtlZjrnbwuCisKKwor67OA6rK97J2EIOygleuLue2ZlO2VtOudvAorLS0tLS0tLS0tLS0tLS0tLS0KKwor7Jes65+s67aE65Ok7J2YIOuCmOuIhOyWtOynhCDtjKjsuZjrk6TsnYQg66as64iF7IqkIOy7pOuupOuLiO2LsOqwgCDsmZwg67CY7JiB7ZW07JW8IO2VmOuKlOyngOulvAor7JWM64+E66GdIO2VmOuKlCDqsoPsnYAg66ek7JqwIOykkeyalO2VmOuLpC4g7IOI66Gc7Jq0IOq4sOuKpeuTpOydtCDtlYTsmpTtlZjqs6Ag7Jyg7Jqp7ZWY64uk64qUCivqsoPsnYAg67CY65Oc7IucIOq3uOyXkCDtlanri7ntlZwg7J207Jyg6rCAIOyeiOyWtOyVvCDtlZzri6QuCisKKwor67OA6rK97J2EIOusuOyEnO2ZlO2VtOudvAorLS0tLS0tLS0tLS0tLS0tLS0KKwor7Jes65+s67aE7J20IO2MqOy5mOulvCDrs7TrgrTroKQg7ZWg65WM64qUIOyXrOufrOu2hOydtCDrrLTsl4fsnYQg66eQ7ZWY66Ck6rOgIO2VmOuKlOyngOulvCDstqnrtoTtnogKK+yDneqwge2VmOyXrCDsnbTrqZTsnbzsnYQg7J6R7ISx7ZW07JW8IO2VnOuLpC4g7J20IOygleuztOuKlCDtjKjsuZjrpbwg7JyE7ZWcIENoYW5nZUxvZ+qwgCDrkKAKK+qyg+ydtOuLpC4g6re466as6rOgIO2VreyDgSDqt7gg64K07Jqp7J2EIOuztOq4uCDsm5DtlZjripQg66qo65OgIOyCrOuejOuTpOydhCDsnITtlbQg67O07KG065CgCivqsoPsnbTri6QuIO2MqOy5mOuKlCDsmYTrsr3tlZjqsowg64uk7J2M6rO8IOqwmeydgCDrgrTsmqnrk6TsnYQg7Y+s7ZWo7ZWY7JesIOyEpOuqhe2VtOyVvCDtlZzri6QuCisgIC0g67OA6rK97J20IOyZnCDtlYTsmpTtlZzsp4AKKyAgLSDtjKjsuZjsl5Ag6rSA7ZWcIOyghOyytCDshKTqs4Qg7KCR6re8KGFwcHJvYWNoKQorICAtIOq1rO2YhCDsg4HshLjrk6QKKyAgLSDthYzsiqTtirgg6rKw6rO865OkCisKK+ydtOqyg+ydtCDrrLTsl4fsnbjsp4Ag642UIOyekOyEuO2VnCDqsoPsnYQg7JWM6rOgIOyLtuuLpOuptCDri6TsnYwg66y47ISc7J2YIENoYWdlTG9nIO2VreydhCDrtJDrnbwuCisgICAiVGhlIFBlcmZlY3QgUGF0Y2giCisgICAgaHR0cDovL3d3dy5vemxhYnMub3JnL35ha3BtL3N0dWZmL3RwcC50eHQKKworCisKKwor7J20IOuqqOuToCDqsoPsnYQg7ZWY64qUIOqyg+ydgCDrp6TsmrAg7Ja066Ck7Jq0IOydvOydtOuLpC4g7JmE67K97Z6IIOyGjO2ZlO2VmOuKlCDrjbDripQg7KCB7Ja064+EIOuqh+uFhOydtAor6rG466a0IOyImOuPhCDsnojri6QuIOunjuydgCDsnbjrgrTsmYAg6rKw7Ius7J20IO2VhOyalO2VnCDqs4Tsho3rkJjripQg6rCc7ISg7J2YIOqzvOygleydtOuLpC4g6re465+s64KYCivqsIDriqXtlZztlZwg7Y+s6riw7ZWY7KeAIOunkOudvC4g66eO7J2AIOyCrOuejOuTpOydgCDsnbTsoITrtoDthLAg7ZW07JmU642YIOqyg+ydtOqzoCDqt7gg7IKs656M65Ok64+ECivsoJXtmZXtlZjqsowg7Jes65+s67aE65Ok7J20IOyngOq4iCDshJwg7J6I64qUIOq3uCDqs7PrtoDthLAgIOyLnOyeke2WiOyXiOuLpC4KKworCisKKworLS0tLS0tLS0tLQorIuqwnOuwnCDtlITroZzshLjsiqQiKGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzk0Mzg2Lykg7IS57IWY7J2ECivsnpHshLHtlZjripTrjbAg7J6I7Ja0IOywuOqzoO2VoCDrrLjshJzrpbwg7IKs7Jqp7ZWY64+E66GdIO2XiOudve2VtOykgCBQYW9sbyBDaWFycm9jY2hp7JeQ6rKMCivqsJDsgqztlZzri6QuIOyXrOufrOu2hOuTpOydtCDrp5DtlbTslbwg7ZWgIOqyg+qzvCDrp5DtlbTshJzripQg7JWI65CY64qUIOqyg+ydmCDrqqnroZ0g7KSRIOydvOu2gOulvCDsoJzqs7XtlbTspIAKK1JhbmR5IER1bmxhcOqzvCBHZXJyaXQgSHVpemVuZ2Hsl5Dqsowg6rCQ7IKs7ZWc64ukLiDrmJDtlZwg6rKA7Yag7JmAIOydmOqyrCDqt7jrpqzqs6AKK+qzte2XjOydhCDslYTrgbzsp4Ag7JWK7J2AIFBhdCBNb2NoZWwsIEhhbm5hIExpbmRlciwgUmFuZHkgRHVubGFwLCBLYXkgU2lldmVycywKK1ZvanRlY2ggUGF2bGlrLCBKYW4gS2FyYSwgSm9zaCBCb3llciwgS2VlcyBDb29rLCBBbmRyZXcgTW9ydG9uLCBBbmRpIEtsZWVuLAorVmFkaW0gTG9iYW5vdiwgSmVzcGVyIEp1aGwsIEFkcmlhbiBCdW5rLCBLZXJpIEhhcnJpcywgRnJhbnMgUG9wLAorRGF2aWQgQS4gV2hlZWxlciwgSnVuaW8gSGFtYW5vLCBNaWNoYWVsIEtlcnJpc2ssIGFuZCBBbGV4IFNoZXBhcmTsl5Dqsozrj4Qg6rCQ7IKs66W8IOyghO2VnOuLpC4KK+q3uOuTpOydmCDrj4Tsm4DsnbQg7JeG7JeI64uk66m0IOydtCDrrLjshJzripQg7KG07J6s7ZWY7KeAIOyViuyVmOydhCDqsoPsnbTri6QuCisKKworCivrqZTsnbjthYzsnbTrhIg6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ0Brcm9haC5jb20+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2tvX0tSL3N0YWJsZV9hcGlfbm9uc2Vuc2UudHh0IGIvRG9jdW1lbnRhdGlvbi9rb19LUi9zdGFibGVfYXBpX25vbnNlbnNlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWY4NWFkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9rb19LUi9zdGFibGVfYXBpX25vbnNlbnNlLnR4dApAQCAtMCwwICsxLDE5NSBAQAorTk9URToKK1RoaXMgaXMgYSB2ZXJzaW9uIG9mIERvY3VtZW50YXRpb24vc3RhYmxlX2FwaV9ub25zZW5zZS50eHQgdHJhbnNsYXRlZAoraW50byBrb3JlYW4KK1RoaXMgZG9jdW1lbnQgaXMgbWFpbnRhaW5lZCBieSBiYXJyaW9zIDxtaW5jaGFuLmtpbUBnbWFpbC5jb20+CitJZiB5b3UgZmluZCBhbnkgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgZG9jdW1lbnQgYW5kIHRoZSBvcmlnaW5hbCBmaWxlIG9yCithIHByb2JsZW0gd2l0aCB0aGUgdHJhbnNsYXRpb24sIHBsZWFzZSBjb250YWN0IHRoZSBtYWludGFpbmVyIG9mIHRoaXMgZmlsZS4KKworUGxlYXNlIGFsc28gbm90ZSB0aGF0IHRoZSBwdXJwb3NlIG9mIHRoaXMgZmlsZSBpcyB0byBiZSBlYXNpZXIgdG8KK3JlYWQgZm9yIG5vbiBFbmdsaXNoIChyZWFkOiBrb3JlYW4pIHNwZWFrZXJzIGFuZCBpcyBub3QgaW50ZW5kZWQgYXMKK2EgZm9yay4gU28gaWYgeW91IGhhdmUgYW55IGNvbW1lbnRzIG9yIHVwZGF0ZXMgZm9yIHRoaXMgZmlsZSBwbGVhc2UKK3RyeSB0byB1cGRhdGUgdGhlIG9yaWdpbmFsIEVuZ2xpc2ggZmlsZSBmaXJzdC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor7J20IOusuOyEnOuKlAorRG9jdW1lbnRhdGlvbi9zdGFibGVfYXBpX25vbnNlbnNlLnR4dAor7J2YIO2VnOq4gCDrsojsl63snoXri4jri6QuCisKK+yXreyekO+8miDquYDrr7zssKwgPG1pbmNoYW4ua2ltQGdtYWlsLmNvbT4KK+qwkOyImO+8miDsnbTsoJzsnbTrr7ggPGphbWVlLmxlZUBzYW1zdW5nLmNvbT4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwor66as64iF7IqkIOy7pOuEkCDrk5zrnbzsnbTrsoQg7J247YSw7Y6Y7J207IqkCiso7Jes65+s67aE65Ok7J2YIOuqqOuToCDsp4jrrLjsl5Ag64yA7ZWcIOuLtSDqt7jrpqzqs6Ag64uk66W4IOuqh+qwgOyngCkKKworR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVnQGtyb2FoLmNvbT4KKwor7J20IOusuOyEnOuKlCDrpqzriIXsiqTqsIAg7JmcIOuwlOydtOuEiOumrCDsu6TrhJAg7J247YSw7Y6Y7J207Iqk66W8IOqwluyngCDslYrripTsp4AsIOyZnCDrs4DtlZjsp4AKK+yViuuKlChzdGFibGUpIOy7pOuEkCDsnbjthLDtjpjsnbTsiqTrpbwg6rCW7KeAIOyViuuKlOyngOulvCDshKTrqoXtlZjquLAg7JyE7ZW0IOyTsOyXrOyhjOuLpC4KK+ydtCDrrLjshJzripQg7Luk64SQ6rO8IOycoOyggOqzteqwhCDsgqzsnbTsnZgg7J247YSw7Y6Y7J207Iqk6rCAIOyVhOuLiOudvCDsu6TrhJAg64K067aA7J2YCivsnbjthLDtjpjsnbTsiqTrk6TsnYQg7ISk66qF7ZWY6rOgIOyeiOuLpOuKlCDqsoPsnYQg7Jyg64WQ7ZWY6528LiDsu6TrhJDqs7wg7Jyg7KCA6rO16rCEIOyCrOydtOydmAor7J247YSw7Y6Y7J207Iqk64qUIOydkeyaqe2UhOuhnOq3uOueqOydtCDsgqzsmqntlZjripQgc3lzY2FsbCDsnbjthLDtjpjsnbTsiqTsnbTri6QuIOq3uCDsnbjthLDtjpjsnbTsiqTripQKK+yYpOueq+uPmeyViCDqsbDsnZgg67OA7ZWY7KeAIOyViuyVmOqzoCDslZ7snLzroZzrj4Qg67OA7ZWY7KeAIOyViuydhCDqsoPsnbTri6QuIOuCmOuKlCBwcmUgMC457JeQ7IScCivrp4zrk6TslrTsoYzsp4Drp4wg7LWc7Iug7J2YIDIuNiDsu6TrhJAg67Cw7Y+s7JeQ7ISc64+EIOyemCDrj5nsnpHtlZjripQg7ZSE66Gc6re4656o7J2EIOqwgOyngOqzoAor7J6I64ukLiDsnbQg7J247YSw7Y6Y7J207Iqk64qUIOyCrOyaqeyekOyZgCDsnZHsmqntlITroZzqt7jrnqgg6rCc67Cc7J6Q65Ok7J20IOuzgO2VmOyngCDslYrsnYQg6rKD7J2065286rOgCivsl6zquLjsiJgg7J6I64qUIOqyg+ydtOuLpC4KKworCivstIjroZ0KKy0tLS0KK+yXrOufrOu2hOydgCDrs4DtlZjsp4Ag7JWK64qUIOy7pOuEkCDsnbjthLDtjpjsnbTsiqTrpbwg7JuQ7ZWc64uk6rOgIOyDneqwge2VmOyngOunjCDsi6TsoJzroZzripQKK+q3uOugh+yngCDslYrsnLzrqbAg7Ius7KeA7Ja064qUIOq3uOqyg+ydhCDslYzslYTssYTsp4Ag66q77ZWc64ukLiDsl6zrn6zrtoTsnbQg7JuQ7ZWY64qUIOqyg+ydgAor7JWI7KCV65CY6rKMIOyLpO2WieuQmOuKlCDrk5zrnbzsnbTrsoTsnbTrqbAg65Oc65287J2067KE6rCAIOuplOyduCDsu6TrhJAg7Yq466as7JeQIOyeiOydhCDrlYwKK+q3uOufsCDslYjsoJXsoIHsnbgg65Oc65287J2067KE66W8IOyWu+ydhCDsiJgg7J6I6rKMIOuQnOuLpC4g65iQ7ZWcIOyXrOufrOu2hOydmCDrk5zrnbzsnbTrsoTqsIAKK+uplOyduCDsu6TrhJAg7Yq466as7JeQIOyeiOuLpOuptCDri6Trpbgg66eO7J2AIOyii+ydgCDsnbTsoJDrk6TsnYQg7Ja76rKMIOuQnOuLpC4g6re465+s7ZWcIOqyg+uTpOydtAor66as64iF7Iqk66W8IOqwleqxtO2VmOqzoCwg7JWI7KCV7KCB7J2066mwLCDshLHsiJntlZwg7Jq07JiB7LK07KCc66GcIOunjOuTpOyWtCDrhpPsnYzsnLzroZzsjagKK+yXrOufrOu2hOuTpOuhnCDtlZjsl6zquIgg67CU66GcIOumrOuIheyKpOulvCDsgqzsmqntlZjqsowg66eM65Oc64qUIOydtOycoOydtOuLpC4KKworCivshozqsJwKKy0tLS0KKwor7Luk64SQIOuCtOu2gOydmCDsnbjthLDtjpjsnbTsiqTqsIAg67CU64CM64qUIOqyg+ydhCDqsbHsoJXtlZjrqbAg7Luk64SQIOuTnOudvOydtOuyhOulvCDsnpHshLHtlZjqs6AKK+yLtuyWtO2VmOuKlCDsgqzrnozsnYAg7KCV66eQIOydtOyDge2VnCDsgqzrnozsnbTri6QuIOyEuOyDgeydmCDrjIDri6TsiJjsnZgg7IKs656M65Ok7J2AIOydtCDsnbjthLDtjpjsnbTsiqTrpbwKK+uztOyngOuqu+2VoCDqsoPsnbTrqbAg7KCE7ZiAIOqxseygle2VmOyngOuPhCDslYrripTri6QuCisKK+uovOyggCwg64KY64qUIGNsb3NlZCDshozsiqQsIGhpZGRlbiDshozsiqQsIGJpbmFyeSBibG9icywg7IaM7IqkIHdyYXBwZXJzLCDrmJDripQgR1BM66GcCivrsLDtj6zrkJjsl4jsp4Drp4wg7IaM7IqkIOy9lOuTnOulvCDqsJbqs6Ag7J6I7KeAIOyViuydgCDsu6TrhJAg65Oc65287J2067KE65Ok7J2EIOyEpOuqhe2VmOuKlCDslrTrlqQg64uk66W4CivsmqnslrTrk6Tsl5Ag6rSA7ZWcIOyWtOuWpCDrspXsoIHsnbgg66y47KCc7JeQIOq0gO2VtOyEnOuKlCDslrjquIntlZjsp4Ag7JWK7J2EIOqyg+ydtOuLpC4g7Ja065akIOuyleyggeyduAor7KeI66y465Ok7J2EIOqwgOyngOqzoCDsnojri6TrqbQg67OA7Zi47IKs7JmAIOyXsOudve2VmOudvC4g64KY64qUIO2UhOuhnOq3uOuemOuouOydtOuvgOuhnCDsl6zquLDshJwg6riw7Iig7KCB7J24CivrrLjsoJzrk6Trp4zsnYQg7ISk66qF7ZWY66Ck6rOgIO2VnOuLpC4gKOuyleyggeyduCDrrLjsoJzrpbwg6rK97Iuc7ZWY64qUIOqyg+ydgCDslYTri4jri6QuIOq3uOufsCDrrLjsoJzrk6TsnYAKK+yXhOyXsO2eiCDtmITsi6Tsl5Ag7J6I6rOgIOyXrOufrOu2hOuTpOydgCDtla3sg4Eg6re4IOusuOygnOuTpOydhCDsnbjsi53tlZjqs6Ag7J6I7J2EIO2VhOyalOuKlCDsnojri6QuKQorCivsnpAsIOuRkOqwgOyngOydmCDso7zsmpQg7KO87KCc6rCAIOyeiOuLpC4g67CU7J2064SI66asIOy7pOuEkCDsnbjthLDtjpjsnbTsiqTrk6Tqs7wg67OA7ZWY7KeAIOyViuuKlAor7Luk64SQIOyGjOyKpCDsnbjthLDtjpjsnbTrk6QuIOq3uOqyg+uTpOydgCDshJzroZwg7J2Y7KG07ISx7J2EIOqwgOyngOqzoCDsnojsp4Drp4wg67CU7J2064SI66asCivrrLjsoJzrpbwg66i87KCAIO2SgOqzoCDrhJjslrTqsIgg6rKD7J2064ukLgorCisKKwor67CU7J2064SI66asIOy7pOuEkCDsnbjthLDtjpjsnbTsiqQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor7Jqw66as6rCAIOuzgO2VmOyngCDslYrripQg7Luk64SQIOyGjOyKpCDsnbjthLDtjpjsnbTsiqTrpbwg6rCA7KeA6rOgIOyeiOuLpOqzoCDqsIDsoJXtlZjsnpAuIOq3uOufrOuptAor67CU7J2064SI66asIOyduO2EsO2OmOydtOyKpCDrmJDtlZwg7J6Q7Jew7KCB7Jy866GcIOuzgO2VmOyngCDslYrsnYTquYw/IO2LgOuguOuLpC4g66as64iF7IqkIOy7pOuEkOyXkAor6rSA7ZWcIOuLpOydjCDsgqzsi6Trk6TsnYQg7IOd6rCB7ZW067O06528LgorICAgLSDsl6zrn6zrtoTrk6TsnbQg7IKs7Jqp7ZWY64qUIEMg7Lu07YyM7J2865+s7J2YIOuyhOygvOyXkCDrlLDrnbwg64uk66W4IOy7pOuEkCDsnpDro4wg6rWs7KGw65Ok7J2ACisgICAgIOuLpOuluCBhbGlnbm1uZXTrk6TsnYQg6rCW6rKMIOuQoOqyg+ydtOqzoCDri6Trpbgg67Cp67KV7Jy866GcKO2VqOyImOuTpOydhCBpbmxpbmXsnLzroZwKKyAgICAg7ZaI64qQ64OQLCDslYTri4jrg5ApIOuLpOuluCDtlajsiJjrk6TsnYQg7Y+s7ZWo7ZWY64qUIOqyg+uPhCDqsIDriqXtlZzri6QuIOykkeyalO2VnCDqsoPsnYAKKyAgICAg6rCc67OE7KCB7J24IO2VqOyImCDqtazshLHsnbQg7JWE64uI6528IOyekOujjCDqtazsobAg7Yyo65Sp7J20IOuLrOudvOynhOuLpOuKlCDsoJDsnbTri6QuCisgICAtIOyXrOufrOu2hOydtCDshKDtg53tlZwg7Luk64SQIOu5jOuTnCDsmLXshZjsl5Ag65Sw65287IScIOy7pOuEkOydgCDri6TslpHtlZwg6rKD65Ok7J2EIOqwgOygle2VoAorICAgICDsiJgg7J6I64ukLgorICAgICAgLSDri6Trpbgg6rWs7KGw7LK065Ok7J2AIOuLpOuluCDtlYTrk5zrk6TsnYQg7Y+s7ZWo7ZWgIOyImCDsnojri6QuCisgICAgICAtIOuqh+uqhyDtlajsiJjrk6TsnYAg7KCE7ZiAIOq1rO2YhOuQmOyngCDslYrsnYQg7IiY64+EIOyeiOuLpCjspoksIOuqh+uqhyBsb2Nr65Ok7J2ACisgICAgICAgIG5vbi1TTVAg67mM65Oc7JeQ7ISc64qUIOyCrOudvOyguCDrsoTrprTsiJjrj4Qg7J6I64ukKS4KKyAgICAgIC0g7Luk64SQ64K07JeQIOuplOuqqOumrOuKlCBidWlsZCBvcHRvaW7rk6Tsl5Ag65Sw6528IOuLpOuluCDrsKnrspXsnLzroZwgYWxpZ27rkKDsiJgKKyAgICAgICAg7J6I64ukLgorICAgICAgLSDrpqzriIXsiqTripQg66eO7J2AIOuLpOyWke2VnCDtlITroZzshLjshJwg7JWE7YKk7YWN7LOQ7JeQ7IScIOyLpO2WieuQnOuLpC4g7ZWcIOyVhO2CpO2FjeyzkOydmAorICAgICAgICDrsJTsnbTrhIjrpqwg65Oc65287J2067KE66W8IOuLpOuluCDslYTtgqTthY3ss5Dsl5DshJwg7KCV7IOB7KCB7Jy866GcIOyLpO2WieyLnO2CrCDrsKnrspXsnYAKKyAgICAgICAg7JeG64ukLgorCivsu6TrhJDsnYQg67mM65Oc7ZaI642YIEMg7Lu07YyM7J2865+s7JmAIOygle2Zle2VmOqyjCDqsJnsnYAg6rKD7J2EIOyCrOyaqe2VmOqzoCDsoJXtmZXtlZjqsowg6rCZ7J2ACivsu6TrhJAg6rWs7ISxKGNvbmZpZ3VyYXRpb24p7J2EIOyCrOyaqe2VmOyXrCDsl6zrn6zrtoTrk6TsnZgg66qo65OI7J2EIOu5jOuTnO2VmOuptCDqsITri6jtnogKK+unjuydgCDrrLjsoJzrk6TsnYQg7ZW06rKw7ZWgIOyImCDsnojri6QuIOydtOugh+qyjCDtlZjripQg6rKD7J2AIOyXrOufrOu2hOuTpOydtCDtlZjrgpjsnZgg66as64iF7IqkCivrsLDtj6ztjJDsnZgg7ZWY64KY7J2YIOuwsO2PrCDrsoTsoLzsnYQg7JyE7ZWcIOuqqOuTiOunjOydhCDsoJzqs7XtlZzri6TrqbQg67OE7J28IOyVhOuLkCDqsoPsnbTri6QuCivqt7jrn6zrgpgg6rCB6riwIOuLpOuluCDrpqzriIXsiqQg67Cw7Y+s7YyQ66eI64ukIO2VnOuyiOyUqSDruYzrk5ztlZjripQg7IiY66W8IOqwgSDrpqzriIXsiqQg67Cw7Y+s7YyQ66eI64ukCivsoJzqs7XtlZjripQg64uk66W4IOumtOumrOymiOydmCDsiJjsmYAg6rOx7ZWY6rKMIOuQmOuptCDsnbTrsojsl5DripQg6rCBIOumtOumrOymiOuTpOydmCDri6Trpbgg67mM65OcCivsmLXshZjsnZgg7JWF66q96rO8IOuniOyjvO2VmOqyjCAg6rKD7J2064ukLiDrmJDtlZwg6rCBIOumrOuIheyKpCDrsLDtj6ztjJDrk6TsnYAg64uk66W4IO2VmOuTnOybqOyWtAor7KKF66WY7JeQKOuLpOuluCDtlITroZzshLjshJwg7YOA7J6F6rO8IOuLpOuluCDsmLXshZjrk6QpIOunnuy2sOyguCDsnojripQg66eO7J2AIOuLpOuluCDsu6TrhJDrk6TsnYQKK+uwsO2PrO2VnOuLpC4g6re465+s66+A66GcIO2VnOuyiOydmCDrsLDtj6zsl5DshJzsobDssKgg7Jes65+s67aE65Ok7J2YIOuqqOuTiOydgCDsl6zrn6wg67KE7KC87J2ECivrp4zrk6Qg7ZWE7JqU6rCAIOyeiOuLpC4KKwor64KY66W8IOuvv+yWtOudvC4g7Jes65+s67aE65Ok7J2AIOydtOufrO2VnCDsooXrpZjsnZgg67Cw7Y+s66W8IOyngOybkO2VmOugpOqzoCDsi5zrj4TtlZzri6TrqbQg7Iuc6rCE7J20Civsp4DrgpjrqbQg66+47Lmg7KeA6rK97J20IOuQoCDqsoPsnbTri6QuIOuCnCDsnbTrn6ztlZwg6rKD7J2EIOyYpOuemOyghOyXkCDslYTso7wg7Ja066C16rKMIOuwsOyboOuLpC4uLgorCisKKwor67OA7ZWY7KeA7JWK64qUIOy7pOuEkCDshozsiqQg7J247YSw7Y6Y7J207Iqk65OkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor66as64iF7IqkIOy7pOuEkCDrk5zrnbzsnbTrsoTrpbwg6rOE7IaN7ZW07IScIOuplOyduCDsu6TrhJAg7Yq466as7JeQIOuwmOyYge2VmOyngCDslYrqs6AKK+ycoOyngOuztOyImO2VmOugpOqzoCDtlZjripQg7IKs656M65Ok6rO8IOydtCDrrLjsoJzrpbwg64W87J2Y7ZWY6rKMIOuQmOuptCDtm6jslKwg642UCisi64W8656A7J2YIOyXrOyngOqwgCDrp47snYAiIOyjvOygnOqwgCDrkKAg6rKD7J2064ukLgorCivrpqzriIXsiqQg7Luk64SQIOqwnOuwnOydgCDrgYrsnoTsl4bsnbQg67mg66W4IOyGjeuPhOuhnCDsnbTro6jslrTsp4Dqs6Ag7J6I7Jy866mwIOqysOy9lAor64qQ7Iqo7ZW07KeEIOyggeydtCDsl4bri6QuIOy7pOuEkCDqsJzrsJzsnpDrk6TsnbQg7ZiE7J6sIOyduO2EsO2OmOydtOyKpOuTpOyXkOyEnCDrsoTqt7jrpbwKK+uwnOqyrO2VmOqxsOuCmCDrrLTsl4fsnbjqsIAg7ZWgIOyImCDsnojripQg642UIOyii+ydgCDrsKnrspXsnYQg7LC+6rKMIOuQmOyXiOuLpOqzoCDtlZjsnpAuCivqt7jrk6TsnbQg67Cc6rKs7ZWcIOqyg+ydhCDsi6TtlontlZzri6TrqbQg7JWE66eI64+EIOuNlCDsnpgg64+Z7J6R7ZWY64+E66GdIO2YhOyerCDsnbjthLDtjpjsnbTsiqTrk6TsnYQKK+yImOygle2VmOqyjCDrkKAg6rKD7J2064ukLiDqt7jrk6TsnbQg6re465+wIOydvOydhCDtlZjqsozrkJjrqbQg7ZWo7IiYIOydtOumhOuTpOydgCDrs4DtlZjqsowg65CY6rOgLAor6rWs7KGw7LK065Ok7J2AIOuKmOyWtOuCmOqxsOuCmCDspITslrTrk6Tqsowg65CY6rOgLCDtlajsiJgg7YyM652866+47YSw65Ok7J2AIOyerOyekeyXheuQoCDqsoPsnbTri6QuCivsnbTrn6ztlZwg7J287J20IOuwnOyDneuQmOuptCDsu6TrhJAg64K07JeQIOydtCDsnbjthLDtjpjsnbTsiqTrpbwg7IKs7Jqp7ZaI642YIOyduOyKpO2EtOyKpOuTpOydtCDrj5nsi5zsl5AKK+yImOygleuQoCDqsoPsnbTrqbAg7J2065+s7ZWcIOqzvOygleydgCDrqqjrk6Ag6rKD7J20IOqzhOyGje2VtOyEnCDsmKzrsJTrpbTqsowg64+Z7J6R7ZWgIOqyg+ydtOudvOuKlAor6rKD7J2EIOuztOyepe2VnOuLpC4KKwor7J2065+s7ZWcIOqyg+ydmCDtlZwg7JiI66Gc7I2oLCDsu6TrhJAg64K067aA7J2YIFVTQiDsnbjthLDtjpjsnbTsiqTrk6TsnYAg7J20IOyEnOu4jOyLnOyKpO2FnOydtAor7IOd6ri0IOydtO2bhOuhnCDsoIHslrTrj4QgM+uyiOydmCDri6Trpbgg7J6s7J6R7JeF7J2EIOqyquyXiOuLpC4g7J20IOyerOyekeyXheuTpOydgCDrp47snYAg64uk66W4CivrrLjsoJzrk6TsnYQg7ZKA7JeI64ukLgorICAgLSDrjbDsnbTthLAg7Iqk7Yq466a865Ok7J2YIOuPmeq4sOyggeyduCDrqqjrjbjsl5DshJwg67mE64+Z6riw7KCB7J24IOuqqOuNuOuhnOydmCDrs4DtmZQuIOydtOqyg+ydgAorICAgICDrp47snYAg65Oc65287J2067KE65Ok7J2YIOuzteyeoeyEseydhCDspITsnbTqs6Ag7LKY66as65+J7J2EIO2WpeyDgeyLnOy8nCDtmITsnqzripQg6rGw7J2YIOuqqOuToAorICAgICBVU0Ig7J6l7LmY65Ok7J2YIOqxsOydmCDstZzrjIAg7IaN64+E66GcIOyLpO2WieuQmOqzoCDsnojri6QuCisgICAtIFVTQiDrk5zrnbzsnbTrsoTqsIAgVVNCIOy9lOyWtOuhnOu2gO2EsCDrjbDsnbTthLAg7Yyo7YK365Ok7J2EIO2VoOuLueuwm+uhnOuhnSDtlZwg67OA6rK97Jy866GcCisgICAgIOyduO2VtOyEnCDsp4DquIjsnZgg66qo65OgIOuTnOudvOydtOuyhOuTpOydgCDrp47snYAg66y47ISc7ZmU65CcIOuNsOuTnOudveydhCDsiJjsoJXtlZjquLAg7JyE7ZWY7JesCisgICAgIFVTQiDsvZTslrTsl5Dqsowg642UIOunjuydgCDsoJXrs7Trpbwg7KCc6rO17ZW07JW866eMIO2VnOuLpC4KKwor7J206rKD7J2AIOyYpOueq+uPmeyViCDsnpDsi6DsnZgg7Jik656Y65CcIFVTQiDsnbjthLDtjpjsnbTsiqTrk6TsnYQg7Jyg7KeA7ZW07JW8IO2VmOuKlCBjbG9zZWQg7Jq07JiB7LK07KCc65Ok6rO864qUCivsmYTsoITtnogg67CY64yA65CY64qUIOqyg+ydtOuLpC4gY2xvc2Vk65CcIOyatOyYgeyytOygnOuTpOydgCDsg4jroZzsmrQg6rCc67Cc7J6Q65Ok7JeQ6rKMIOyasOyXsO2eiCDrgqHsnYAKK+yduO2EsO2OmOydtOyKpOulvCDsgqzsmqntlZjqsowg7ZWgIOq4sO2ajOulvCDso7zqsozrkJjrqbAsIOyggeygiO2VmOyngCDrqrvtlZwg67Cp67KV7Jy866GcIOyymOumrO2VmOqyjCDrkJjslrQKK+yatOyYgeyytOygnOydmCDslYjsoJXshLHsnYQg7ZW07LmY64qUIOusuOygnOulvCDslbzquLDtlZjqsowg65Cc64ukLgorCivsnbQg65GQ6rCA7KeA7J2YIOyYiOuTpCDrqqjrkZAsIOuqqOuToCDqsJzrsJzsnpDrk6TsnYAg6rytIOydtOujqOyWtOyguOyVvCDtlZjripQg7KSR7JqU7ZWcIOuzgO2ZlOuTpOydtOudvOqzoAor64+Z7J2Y66W8IO2VmOyYgOqzoCDruYTqtZDsoIEg7KCB7J2AIOqzoO2GteycvOuhnCDrs4Dqsr3rkJjslrTsoYzri6QuIOumrOuIheyKpOqwgCDrs4DtlZjsp4Ag7JWK64qUIOyGjOyKpAor7J247YSw7Y6Y7J207Iqk66W8IOqzoOynke2VnOuLpOuptCwg7IOI66Gc7Jq0IOyduO2EsO2OmOydtOyKpOqwgCDrp4zrk6TslrTsp4Dqsowg65CY66mwIOuwmOuptCDquLDsobTsnZgg7Jik656Y65CcCivqsoPrk6QsIOq3uOumrOqzoCDquajsp4Qg6rKD65Ok7J2AIOqzhOyGje2VtOyEnCDsnKDsp4DrkJjslrTslbwg7ZWY66mwIOydtOufrO2VnCDsnbzrk6TsnYAgVVNCIOqwnOuwnOyekOuTpOyXkOqyjAor65iQIOuLpOuluCDsnbzqsbDrpqzrpbwg7KO86rKMIOuQnOuLpC4g66qo65OgIOumrOuIheyKpCBVU0Ig6rCc67Cc7J6Q65Ok7JeQ6rKMIOyekOyLoOydmCDqt7jrk6TsnZgg7JeF66y066W8Civrp4jsuZwg7ZuEIOyLnOqwhOydhCDtiKzsnpDtlZjsl6wg7JWE66y0IOuTneuPhCDsl4bripQg66y066OMIOu0ieyCrOulvCDtlbTri6zrnbzqs6Ag7ZWY64qUIOqyg+ydgCDqsIDriqXshLHsnbQKK+2drOuwle2VnCDsnbzsnbTri6QuCisKK+uztOyViCDrrLjsoJwg7Jet7IucIOumrOuIheyKpOyXkOqyjOuKlCDrp6TsmrAg7KSR7JqU7ZWY64ukLiDrs7TslYgg66y47KCc6rCAIOuwnOqyrOuQmOuptCDqt7jqsoPsnYAKK+unpOyasCDsp6fsnYAg7Iuc6rCEIOyViOyXkCDsiJjsoJXrkJzri6QuIOuztOyViCDrrLjsoJzripQg6re4IOusuOygnOulvCDtlbTqsrDtlZjquLAg7JyE7ZWY7JesCivsl6zrn6zrsogg64K067aAIOy7pOuEkCDsnbjthLDtjpjsnbTsiqTrk6TsnYQg7J6s7J6R7JeF7ZWY6rKMIOunjOuTpOyXiOuLpC4g7J2065+s7ZWcIOusuOygnOqwgAor67Cc7IOd7ZWY7JiA7J2EIOuVjCDqt7gg7J247YSw7Y6Y7J207Iqk65Ok7J2EIOyCrOyaqe2VmOuKlCDrqqjrk6Ag65Oc65287J2067KE65Ok64+EIOuPmeyLnOyXkAor7IiY7KCV65CY7Ja0IOuztOyViCDrrLjsoJzqsIAg7JWe7Jy866GcIOqwkeyekeyKpOufveqyjCDsg53quLDsp4DripQg7JWK7J2EIOqyg+ydtOudvOuKlCDqsoPsnYQKK+uztOyepe2VnOuLpC4g64K067aAIOyduO2EsO2OmOydtOyKpOuTpOydmCDrs4Dqsr3snbQg7ZeI652965CY7KeAIOyViuycvOuptCDsnbTrn6ztlZwg7KKF66WY7J2YIOuztOyViAor66y47KCc66W8IOyImOygle2VmOqzoCDqt7jqsoPsnbQg64uk7IucIOuwnOyDne2VmOyngCDslYrsnYQg6rKD7J2065286rOgIOuztOyepe2VmOuKlCDqsoPsnYAg6rCA64ql7ZWY7KeACivslYrsnYQg6rKD7J2064ukLgorCivsu6TrhJAg7J247YSw7Y6Y7J207Iqk65Ok7J2AIOqzhOyGje2VtOyEnCDsoJXrpqzrkJjqs6Ag7J6I64ukLiDtmITsnqwg7J247YSw7Y6Y7J207Iqk66W8IOyCrOyaqe2VmOuKlAor7IKs656M7J20IO2VnOuqheuPhCDsl4bri6TrqbQg6re46rKD7J2AIOyCreygnOuQnOuLpC4g7J206rKD7J2AIOy7pOuEkOydtCDqsIDriqXtlZztlZwg6rCA7J6lIOyekeqyjAor7Jyg7KeA65CY66mwIOyhtOyerO2VmOuKlCDrqqjrk6Ag6rCA64ql7ISx7J20IOyeiOuKlCDsnbjthLDtjpjsnbTsiqTrk6TsnbQg7YWM7Iqk7Yq465Cc64uk64qUIOqyg+ydhAor67O07J6l7ZWc64ukKOyCrOyaqeuQmOyngCDslYrripQg7J247YSw7Y6Y7J207Iqk65Ok7J2AIOycoO2aqOyEsSDqsoDspp3snYQg7ZWY6riw6rCAIOqxsOydmCDrtojqsIDriqXtlZjri6QpLgorCisKK+ustOyXh+ydhCDtlbTslbwg7ZWY64KYCistLS0tLS0tLS0tLS0tLS0KK+yekCwg7Jes65+s67aE7J20IOuplOyduCDsu6TrhJAg7Yq466as7JeQIOyeiOyngCDslYrsnYAg66as64iF7IqkIOy7pOuEkCDrk5zrnbzsnbTrsoTrpbwg6rCA7KeA6rOgCivsnojri6TrqbQg7Jes65+s67aE7J2AIOymiSwg6rCc67Cc7J6Q64qUIOustOyXh+ydhCDtlbTslbwg7ZWY64KYPyDrqqjrk6Ag67Cw7Y+s7YyQ66eI64ukIOuLpOuluAor7Luk64SQIOuyhOygvOydhCDsnITtlZwg67CU7J2064SI66asIOuTnOudvOydtOuyhOulvCDrsLDtj6ztlZjripQg6rKD7J2AIOyVheuqveydtOupsCDqs4Tsho3tlbTshJwKK+uzgO2VmOqzoCDsnojripQg7Luk64SQIOyduO2EsO2OmOydtOyKpOuTpOydmCDrp57sspgg7Jyg7KeA67O07IiY7ZWY66Ck6rOgIOyLnOuPhO2VmOuKlCDqsoPsnYAg7Z6Y65OgCivsnbzsnbTri6QuCisKK+qwhOuLqO2VmOuLpC4g7Jes65+s67aE7J2YIOy7pOuEkCDrk5zrnbzsnbTrsoTrpbwg66mU7J24IOy7pOuEkCDtirjrpqzsl5Ag67CY7JiB7ZWY6528KOyasOumrOuKlCDsl6zquLDshJwKK0dQTOydhCDrlLDrpbTripQg67Cw7Y+sIOuTnOudvOydtOuyhOyXkCDqtIDtlbQg7JaY6riw7ZWY6rOgIOyeiOuLpOuKlCDqsoPsnYQg7IOB6riw7ZWY6528LiDsl6zrn6zrtoTsnZgKK+y9lOuTnOqwgCDsnbTrn6ztlZwg67aE66WY7JeQIO2VtOuLueuQmOyngCDslYrripTri6TrqbQg7ZaJ7Jq07J2EIOu5iOuLpC4g7Jes65+s67aEIOyKpOyKpOuhnCDslrTrlrvqsozrk6AKK+2VtOyVvOunjCDtlZzri6QpLiDsl6zrn6zrtoTsnZgg65Oc65287J2067KE6rCAIO2KuOumrOyXkCDsnojqsozrkJjrqbQg7Luk64SQIOyduO2EsO2OmOydtOyKpOqwgAor67OA6rK965CY642U652864+EIOqwgOyepSDrqLzsoIAg7Luk64SQ7JeQIOuzgOqyveydhCDqsIDtlojrjZgg7IKs656M7JeQIOydmO2VtOyEnCDsiJjsoJXrkKAg6rKD7J2064ukLgor7J206rKD7J2AIOyXrOufrOu2hOydmCDrk5zrnbzsnbTrsoTqsIAg7Jes65+s67aE7J2YIOuzhOuLpOuluCDrhbjroKXsl4bsnbQg7ZWt7IOBIOu5jOuTnOqwgCDqsIDriqXtlZjrqbAKK+uPmeyeke2VmOuKlCDqsoPsnYQg67O07J6l7ZWc64ukLgorCivrqZTsnbgg7Luk64SQIO2KuOumrOyXkCDsl6zrn6zrtoTsnZgg65Oc65287J2067KE66W8IOuwmOyYge2VmOuptCDslrvqsowg65CY64qUIOyepeygkOuTpOydgCDri6TsnYzqs7wg6rCZ64ukLgorICAgLSDqtIDrpqzsl5Ag65Oc64qUIOu5hOyaqSjsm5Drnpgg6rCc67Cc7J6Q7J2YKeydgCDspITslrTspITrqbTshJwg65Oc65287J2067KE7J2YIOyniOydgCDtlqXsg4HrkKAg6rKD7J2064ukLgorICAgLSDri6Trpbgg6rCc67Cc7J6Q65Ok7J20IOyXrOufrOu2hOydmCDrk5zrnbzsnbTrsoTsl5Ag6riw64ql65Ok7J2EIOy2lOqwgCDtlaAg6rKD7J2064ukLgorICAgLSDri6Trpbgg7IKs656M65Ok7J2AIOyXrOufrOu2hOydmCDrk5zrnbzsnbTrsoTsl5Ag67KE6re466W8IOuwnOqyrO2VmOqzoCDsiJjsoJXtlaAg6rKD7J2064ukLgorICAgLSDri6Trpbgg7IKs656M65Ok7J2AIOyXrOufrOu2hOydmCDrk5zrnbzsnbTrsoTsnZgg6rCc7ISg7KCQ7J2EIOywvuydhCDspIQg6rKD7J2064ukLgorICAgLSDsmbjrtoAg7J247YSw7Y6Y7J207IqkIOuzgOqyveycvOuhnCDsnbjtlbQg7Jes65+s67aE7J2YIOuTnOudvOydtOuyhOydmCDsiJjsoJXsnbQg7ZWE7JqU7ZWY64uk66m0IOuLpOuluAorICAgICDsgqzrnozrk6TsnbQg65Oc65287J2067KE66W8IOyXheuNsOydtO2KuO2VoCDqsoPsnbTri6QuCisgICAtIOyXrOufrOu2hOydmCDrk5zrnbzsnbTrsoTripQg67OE64uk66W4IOuFuOugpSDsl4bsnbQg66qo65OgIOumrOuIheyKpCDrsLDtj6ztjJDsl5AgIOyekOuPmeyggeycvOuhnAorICAgICDstpTqsIDrkKAg6rKD7J2064ukLgorCivrpqzriIXsiqTripQg64uk66W4IOyatOyYgSDssrTsoJzrs7Tri6QgIuyJveqyjCDsk7jsiJgg7J6I64qUKG91dCBvZiB0aGUgYm94KSIg66eO7J2AIOuLpOuluCDsnqXsuZjrk6TsnYQKK+yngOybkO2VmOqzoCDslrTrlqQg64uk66W4IOyatOyYgSDssrTsoJzrs7Tri6Qg64uk7JaR7ZWcIOyVhO2CpO2FjeyzkOychOyXkOyEnCDsnbTrn6ztlZwg7J6l7LmY65Ok7J2EIOyngOybkO2VmOq4sCDrlYzrrLjsl5AKK+ydtOufrO2VnCDspp3rqoXrkJwg6rCc67CcIOuqqOuNuOydgCDti4Drprzsl4bsnbQg67CU66GcIOqwgOqzoCDsnojripQg6rKD7J2064ukLgorCisKKworLS0tLS0tCisKK+ydtCDrrLjshJzsnZgg7LSI7JWI7J2EIOqygO2GoO2VtOyjvOqzoCDsvZTrqZjtirgg7ZW07KSAIFJhbmR5IER1bmxhcCwgQW5kcmV3IE1vcnRvbiwgRGF2aWQgQnJvd25lbGwsCitIYW5uYSBMaW5kZXIsIFJvYmVydCBMb3ZlLCDqt7jrpqzqs6AgTmlzaGFudGggQXJhdmFtdWRhbuyXkOqyjCDqsJDsgqztlZzri6QuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2tvYmplY3QudHh0IGIvRG9jdW1lbnRhdGlvbi9rb2JqZWN0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmU1OWEzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9rb2JqZWN0LnR4dApAQCAtMCwwICsxLDQxNSBAQAorRXZlcnl0aGluZyB5b3UgbmV2ZXIgd2FudGVkIHRvIGtub3cgYWJvdXQga29iamVjdHMsIGtzZXRzLCBhbmQga3R5cGVzCisKK0dyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKK0Jhc2VkIG9uIGFuIG9yaWdpbmFsIGFydGljbGUgYnkgSm9uIENvcmJldCBmb3IgbHduLm5ldCB3cml0dGVuIE9jdG9iZXIgMSwKKzIwMDMgYW5kIGxvY2F0ZWQgYXQgaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvNTE0MzcvCisKK0xhc3QgdXBkYXRlZCBEZWNlbWJlciAxOSwgMjAwNworCisKK1BhcnQgb2YgdGhlIGRpZmZpY3VsdHkgaW4gdW5kZXJzdGFuZGluZyB0aGUgZHJpdmVyIG1vZGVsIC0gYW5kIHRoZSBrb2JqZWN0CithYnN0cmFjdGlvbiB1cG9uIHdoaWNoIGl0IGlzIGJ1aWx0IC0gaXMgdGhhdCB0aGVyZSBpcyBubyBvYnZpb3VzIHN0YXJ0aW5nCitwbGFjZS4gRGVhbGluZyB3aXRoIGtvYmplY3RzIHJlcXVpcmVzIHVuZGVyc3RhbmRpbmcgYSBmZXcgZGlmZmVyZW50IHR5cGVzLAorYWxsIG9mIHdoaWNoIG1ha2UgcmVmZXJlbmNlIHRvIGVhY2ggb3RoZXIuIEluIGFuIGF0dGVtcHQgdG8gbWFrZSB0aGluZ3MKK2Vhc2llciwgd2UnbGwgdGFrZSBhIG11bHRpLXBhc3MgYXBwcm9hY2gsIHN0YXJ0aW5nIHdpdGggdmFndWUgdGVybXMgYW5kCithZGRpbmcgZGV0YWlsIGFzIHdlIGdvLiBUbyB0aGF0IGVuZCwgaGVyZSBhcmUgc29tZSBxdWljayBkZWZpbml0aW9ucyBvZgorc29tZSB0ZXJtcyB3ZSB3aWxsIGJlIHdvcmtpbmcgd2l0aC4KKworIC0gQSBrb2JqZWN0IGlzIGFuIG9iamVjdCBvZiB0eXBlIHN0cnVjdCBrb2JqZWN0LiAgS29iamVjdHMgaGF2ZSBhIG5hbWUKKyAgIGFuZCBhIHJlZmVyZW5jZSBjb3VudC4gIEEga29iamVjdCBhbHNvIGhhcyBhIHBhcmVudCBwb2ludGVyIChhbGxvd2luZworICAgb2JqZWN0cyB0byBiZSBhcnJhbmdlZCBpbnRvIGhpZXJhcmNoaWVzKSwgYSBzcGVjaWZpYyB0eXBlLCBhbmQsCisgICB1c3VhbGx5LCBhIHJlcHJlc2VudGF0aW9uIGluIHRoZSBzeXNmcyB2aXJ0dWFsIGZpbGVzeXN0ZW0uCisKKyAgIEtvYmplY3RzIGFyZSBnZW5lcmFsbHkgbm90IGludGVyZXN0aW5nIG9uIHRoZWlyIG93bjsgaW5zdGVhZCwgdGhleSBhcmUKKyAgIHVzdWFsbHkgZW1iZWRkZWQgd2l0aGluIHNvbWUgb3RoZXIgc3RydWN0dXJlIHdoaWNoIGNvbnRhaW5zIHRoZSBzdHVmZgorICAgdGhlIGNvZGUgaXMgcmVhbGx5IGludGVyZXN0ZWQgaW4uCisKKyAgIE5vIHN0cnVjdHVyZSBzaG91bGQgRVZFUiBoYXZlIG1vcmUgdGhhbiBvbmUga29iamVjdCBlbWJlZGRlZCB3aXRoaW4gaXQuCisgICBJZiBpdCBkb2VzLCB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIGZvciB0aGUgb2JqZWN0IGlzIHN1cmUgdG8gYmUgbWVzc2VkCisgICB1cCBhbmQgaW5jb3JyZWN0LCBhbmQgeW91ciBjb2RlIHdpbGwgYmUgYnVnZ3kuICBTbyBkbyBub3QgZG8gdGhpcy4KKworIC0gQSBrdHlwZSBpcyB0aGUgdHlwZSBvZiBvYmplY3QgdGhhdCBlbWJlZHMgYSBrb2JqZWN0LiAgRXZlcnkgc3RydWN0dXJlCisgICB0aGF0IGVtYmVkcyBhIGtvYmplY3QgbmVlZHMgYSBjb3JyZXNwb25kaW5nIGt0eXBlLiAgVGhlIGt0eXBlIGNvbnRyb2xzCisgICB3aGF0IGhhcHBlbnMgdG8gdGhlIGtvYmplY3Qgd2hlbiBpdCBpcyBjcmVhdGVkIGFuZCBkZXN0cm95ZWQuCisKKyAtIEEga3NldCBpcyBhIGdyb3VwIG9mIGtvYmplY3RzLiAgVGhlc2Uga29iamVjdHMgY2FuIGJlIG9mIHRoZSBzYW1lIGt0eXBlCisgICBvciBiZWxvbmcgdG8gZGlmZmVyZW50IGt0eXBlcy4gIFRoZSBrc2V0IGlzIHRoZSBiYXNpYyBjb250YWluZXIgdHlwZSBmb3IKKyAgIGNvbGxlY3Rpb25zIG9mIGtvYmplY3RzLiBLc2V0cyBjb250YWluIHRoZWlyIG93biBrb2JqZWN0cywgYnV0IHlvdSBjYW4KKyAgIHNhZmVseSBpZ25vcmUgdGhhdCBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgYXMgdGhlIGtzZXQgY29yZSBjb2RlIGhhbmRsZXMKKyAgIHRoaXMga29iamVjdCBhdXRvbWF0aWNhbGx5LgorCisgICBXaGVuIHlvdSBzZWUgYSBzeXNmcyBkaXJlY3RvcnkgZnVsbCBvZiBvdGhlciBkaXJlY3RvcmllcywgZ2VuZXJhbGx5IGVhY2gKKyAgIG9mIHRob3NlIGRpcmVjdG9yaWVzIGNvcnJlc3BvbmRzIHRvIGEga29iamVjdCBpbiB0aGUgc2FtZSBrc2V0LgorCitXZSdsbCBsb29rIGF0IGhvdyB0byBjcmVhdGUgYW5kIG1hbmlwdWxhdGUgYWxsIG9mIHRoZXNlIHR5cGVzLiBBIGJvdHRvbS11cAorYXBwcm9hY2ggd2lsbCBiZSB0YWtlbiwgc28gd2UnbGwgZ28gYmFjayB0byBrb2JqZWN0cy4KKworCitFbWJlZGRpbmcga29iamVjdHMKKworSXQgaXMgcmFyZSBmb3Iga2VybmVsIGNvZGUgdG8gY3JlYXRlIGEgc3RhbmRhbG9uZSBrb2JqZWN0LCB3aXRoIG9uZSBtYWpvcgorZXhjZXB0aW9uIGV4cGxhaW5lZCBiZWxvdy4gIEluc3RlYWQsIGtvYmplY3RzIGFyZSB1c2VkIHRvIGNvbnRyb2wgYWNjZXNzIHRvCithIGxhcmdlciwgZG9tYWluLXNwZWNpZmljIG9iamVjdC4gIFRvIHRoaXMgZW5kLCBrb2JqZWN0cyB3aWxsIGJlIGZvdW5kCitlbWJlZGRlZCBpbiBvdGhlciBzdHJ1Y3R1cmVzLiAgSWYgeW91IGFyZSB1c2VkIHRvIHRoaW5raW5nIG9mIHRoaW5ncyBpbgorb2JqZWN0LW9yaWVudGVkIHRlcm1zLCBrb2JqZWN0cyBjYW4gYmUgc2VlbiBhcyBhIHRvcC1sZXZlbCwgYWJzdHJhY3QgY2xhc3MKK2Zyb20gd2hpY2ggb3RoZXIgY2xhc3NlcyBhcmUgZGVyaXZlZC4gIEEga29iamVjdCBpbXBsZW1lbnRzIGEgc2V0IG9mCitjYXBhYmlsaXRpZXMgd2hpY2ggYXJlIG5vdCBwYXJ0aWN1bGFybHkgdXNlZnVsIGJ5IHRoZW1zZWx2ZXMsIGJ1dCB3aGljaCBhcmUKK25pY2UgdG8gaGF2ZSBpbiBvdGhlciBvYmplY3RzLiAgVGhlIEMgbGFuZ3VhZ2UgZG9lcyBub3QgYWxsb3cgZm9yIHRoZQorZGlyZWN0IGV4cHJlc3Npb24gb2YgaW5oZXJpdGFuY2UsIHNvIG90aGVyIHRlY2huaXF1ZXMgLSBzdWNoIGFzIHN0cnVjdHVyZQorZW1iZWRkaW5nIC0gbXVzdCBiZSB1c2VkLgorCisoQXMgYW4gYXNpZGUsIGZvciB0aG9zZSBmYW1pbGlhciB3aXRoIHRoZSBrZXJuZWwgbGlua2VkIGxpc3QgaW1wbGVtZW50YXRpb24sCit0aGlzIGlzIGFuYWxvZ291cyBhcyB0byBob3cgImxpc3RfaGVhZCIgc3RydWN0cyBhcmUgcmFyZWx5IHVzZWZ1bCBvbgordGhlaXIgb3duLCBidXQgYXJlIGludmFyaWFibHkgZm91bmQgZW1iZWRkZWQgaW4gdGhlIGxhcmdlciBvYmplY3RzIG9mCitpbnRlcmVzdC4pCisKK1NvLCBmb3IgZXhhbXBsZSwgdGhlIFVJTyBjb2RlIGluIGRyaXZlcnMvdWlvL3Vpby5jIGhhcyBhIHN0cnVjdHVyZSB0aGF0CitkZWZpbmVzIHRoZSBtZW1vcnkgcmVnaW9uIGFzc29jaWF0ZWQgd2l0aCBhIHVpbyBkZXZpY2U6CisKKyAgICBzdHJ1Y3QgdWlvX21hcCB7CisJc3RydWN0IGtvYmplY3Qga29iajsKKwlzdHJ1Y3QgdWlvX21lbSAqbWVtOworICAgIH07CisKK0lmIHlvdSBoYXZlIGEgc3RydWN0IHVpb19tYXAgc3RydWN0dXJlLCBmaW5kaW5nIGl0cyBlbWJlZGRlZCBrb2JqZWN0IGlzCitqdXN0IGEgbWF0dGVyIG9mIHVzaW5nIHRoZSBrb2JqIG1lbWJlci4gIENvZGUgdGhhdCB3b3JrcyB3aXRoIGtvYmplY3RzIHdpbGwKK29mdGVuIGhhdmUgdGhlIG9wcG9zaXRlIHByb2JsZW0sIGhvd2V2ZXI6IGdpdmVuIGEgc3RydWN0IGtvYmplY3QgcG9pbnRlciwKK3doYXQgaXMgdGhlIHBvaW50ZXIgdG8gdGhlIGNvbnRhaW5pbmcgc3RydWN0dXJlPyAgWW91IG11c3QgYXZvaWQgdHJpY2tzCisoc3VjaCBhcyBhc3N1bWluZyB0aGF0IHRoZSBrb2JqZWN0IGlzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cnVjdHVyZSkKK2FuZCwgaW5zdGVhZCwgdXNlIHRoZSBjb250YWluZXJfb2YoKSBtYWNybywgZm91bmQgaW4gPGxpbnV4L2tlcm5lbC5oPjoKKworICAgIGNvbnRhaW5lcl9vZihwb2ludGVyLCB0eXBlLCBtZW1iZXIpCisKK3doZXJlOgorCisgICogInBvaW50ZXIiIGlzIHRoZSBwb2ludGVyIHRvIHRoZSBlbWJlZGRlZCBrb2JqZWN0LAorICAqICJ0eXBlIiBpcyB0aGUgdHlwZSBvZiB0aGUgY29udGFpbmluZyBzdHJ1Y3R1cmUsIGFuZAorICAqICJtZW1iZXIiIGlzIHRoZSBuYW1lIG9mIHRoZSBzdHJ1Y3R1cmUgZmllbGQgdG8gd2hpY2ggInBvaW50ZXIiIHBvaW50cy4KKworVGhlIHJldHVybiB2YWx1ZSBmcm9tIGNvbnRhaW5lcl9vZigpIGlzIGEgcG9pbnRlciB0byB0aGUgY29ycmVzcG9uZGluZworY29udGFpbmVyIHR5cGUuIFNvLCBmb3IgZXhhbXBsZSwgYSBwb2ludGVyICJrcCIgdG8gYSBzdHJ1Y3Qga29iamVjdAorZW1iZWRkZWQgKndpdGhpbiogYSBzdHJ1Y3QgdWlvX21hcCBjb3VsZCBiZSBjb252ZXJ0ZWQgdG8gYSBwb2ludGVyIHRvIHRoZQorKmNvbnRhaW5pbmcqIHVpb19tYXAgc3RydWN0dXJlIHdpdGg6CisKKyAgICBzdHJ1Y3QgdWlvX21hcCAqdV9tYXAgPSBjb250YWluZXJfb2Yoa3AsIHN0cnVjdCB1aW9fbWFwLCBrb2JqKTsKKworRm9yIGNvbnZlbmllbmNlLCBwcm9ncmFtbWVycyBvZnRlbiBkZWZpbmUgYSBzaW1wbGUgbWFjcm8gZm9yICJiYWNrLWNhc3RpbmciCitrb2JqZWN0IHBvaW50ZXJzIHRvIHRoZSBjb250YWluaW5nIHR5cGUuICBFeGFjdGx5IHRoaXMgaGFwcGVucyBpbiB0aGUKK2VhcmxpZXIgZHJpdmVycy91aW8vdWlvLmMsIGFzIHlvdSBjYW4gc2VlIGhlcmU6CisKKyAgICBzdHJ1Y3QgdWlvX21hcCB7CisgICAgICAgIHN0cnVjdCBrb2JqZWN0IGtvYmo7CisgICAgICAgIHN0cnVjdCB1aW9fbWVtICptZW07CisgICAgfTsKKworICAgICNkZWZpbmUgdG9fbWFwKG1hcCkgY29udGFpbmVyX29mKG1hcCwgc3RydWN0IHVpb19tYXAsIGtvYmopCisKK3doZXJlIHRoZSBtYWNybyBhcmd1bWVudCAibWFwIiBpcyBhIHBvaW50ZXIgdG8gdGhlIHN0cnVjdCBrb2JqZWN0IGluCitxdWVzdGlvbi4gIFRoYXQgbWFjcm8gaXMgc3Vic2VxdWVudGx5IGludm9rZWQgd2l0aDoKKworICAgIHN0cnVjdCB1aW9fbWFwICptYXAgPSB0b19tYXAoa29iaik7CisKKworSW5pdGlhbGl6YXRpb24gb2Yga29iamVjdHMKKworQ29kZSB3aGljaCBjcmVhdGVzIGEga29iamVjdCBtdXN0LCBvZiBjb3Vyc2UsIGluaXRpYWxpemUgdGhhdCBvYmplY3QuIFNvbWUKK29mIHRoZSBpbnRlcm5hbCBmaWVsZHMgYXJlIHNldHVwIHdpdGggYSAobWFuZGF0b3J5KSBjYWxsIHRvIGtvYmplY3RfaW5pdCgpOgorCisgICAgdm9pZCBrb2JqZWN0X2luaXQoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX3R5cGUgKmt0eXBlKTsKKworVGhlIGt0eXBlIGlzIHJlcXVpcmVkIGZvciBhIGtvYmplY3QgdG8gYmUgY3JlYXRlZCBwcm9wZXJseSwgYXMgZXZlcnkga29iamVjdAorbXVzdCBoYXZlIGFuIGFzc29jaWF0ZWQga29ial90eXBlLiAgQWZ0ZXIgY2FsbGluZyBrb2JqZWN0X2luaXQoKSwgdG8KK3JlZ2lzdGVyIHRoZSBrb2JqZWN0IHdpdGggc3lzZnMsIHRoZSBmdW5jdGlvbiBrb2JqZWN0X2FkZCgpIG11c3QgYmUgY2FsbGVkOgorCisgICAgaW50IGtvYmplY3RfYWRkKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29iamVjdCAqcGFyZW50LCBjb25zdCBjaGFyICpmbXQsIC4uLik7CisKK1RoaXMgc2V0cyB1cCB0aGUgcGFyZW50IG9mIHRoZSBrb2JqZWN0IGFuZCB0aGUgbmFtZSBmb3IgdGhlIGtvYmplY3QKK3Byb3Blcmx5LiAgSWYgdGhlIGtvYmplY3QgaXMgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWMga3NldCwKK2tvYmotPmtzZXQgbXVzdCBiZSBhc3NpZ25lZCBiZWZvcmUgY2FsbGluZyBrb2JqZWN0X2FkZCgpLiAgSWYgYSBrc2V0IGlzCithc3NvY2lhdGVkIHdpdGggYSBrb2JqZWN0LCB0aGVuIHRoZSBwYXJlbnQgZm9yIHRoZSBrb2JqZWN0IGNhbiBiZSBzZXQgdG8KK05VTEwgaW4gdGhlIGNhbGwgdG8ga29iamVjdF9hZGQoKSBhbmQgdGhlbiB0aGUga29iamVjdCdzIHBhcmVudCB3aWxsIGJlIHRoZQora3NldCBpdHNlbGYuCisKK0FzIHRoZSBuYW1lIG9mIHRoZSBrb2JqZWN0IGlzIHNldCB3aGVuIGl0IGlzIGFkZGVkIHRvIHRoZSBrZXJuZWwsIHRoZSBuYW1lCitvZiB0aGUga29iamVjdCBzaG91bGQgbmV2ZXIgYmUgbWFuaXB1bGF0ZWQgZGlyZWN0bHkuICBJZiB5b3UgbXVzdCBjaGFuZ2UKK3RoZSBuYW1lIG9mIHRoZSBrb2JqZWN0LCBjYWxsIGtvYmplY3RfcmVuYW1lKCk6CisKKyAgICBpbnQga29iamVjdF9yZW5hbWUoc3RydWN0IGtvYmplY3QgKmtvYmosIGNvbnN0IGNoYXIgKm5ld19uYW1lKTsKKwora29iamVjdF9yZW5hbWUgZG9lcyBub3QgcGVyZm9ybSBhbnkgbG9ja2luZyBvciBoYXZlIGEgc29saWQgbm90aW9uIG9mCit3aGF0IG5hbWVzIGFyZSB2YWxpZCBzbyB0aGUgY2FsbGVyIG11c3QgcHJvdmlkZSB0aGVpciBvd24gc2FuaXR5IGNoZWNraW5nCithbmQgc2VyaWFsaXphdGlvbi4KKworVGhlcmUgaXMgYSBmdW5jdGlvbiBjYWxsZWQga29iamVjdF9zZXRfbmFtZSgpIGJ1dCB0aGF0IGlzIGxlZ2FjeSBjcnVmdCBhbmQKK2lzIGJlaW5nIHJlbW92ZWQuICBJZiB5b3VyIGNvZGUgbmVlZHMgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uLCBpdCBpcworaW5jb3JyZWN0IGFuZCBuZWVkcyB0byBiZSBmaXhlZC4KKworVG8gcHJvcGVybHkgYWNjZXNzIHRoZSBuYW1lIG9mIHRoZSBrb2JqZWN0LCB1c2UgdGhlIGZ1bmN0aW9uCitrb2JqZWN0X25hbWUoKToKKworICAgIGNvbnN0IGNoYXIgKmtvYmplY3RfbmFtZShjb25zdCBzdHJ1Y3Qga29iamVjdCAqIGtvYmopOworCitUaGVyZSBpcyBhIGhlbHBlciBmdW5jdGlvbiB0byBib3RoIGluaXRpYWxpemUgYW5kIGFkZCB0aGUga29iamVjdCB0byB0aGUKK2tlcm5lbCBhdCB0aGUgc2FtZSB0aW1lLCBjYWxsZWQgc3VycHJpc2luZ2x5IGVub3VnaCBrb2JqZWN0X2luaXRfYW5kX2FkZCgpOgorCisgICAgaW50IGtvYmplY3RfaW5pdF9hbmRfYWRkKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial90eXBlICprdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGtvYmplY3QgKnBhcmVudCwgY29uc3QgY2hhciAqZm10LCAuLi4pOworCitUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyB0aGUgaW5kaXZpZHVhbCBrb2JqZWN0X2luaXQoKSBhbmQKK2tvYmplY3RfYWRkKCkgZnVuY3Rpb25zIGRlc2NyaWJlZCBhYm92ZS4KKworCitVZXZlbnRzCisKK0FmdGVyIGEga29iamVjdCBoYXMgYmVlbiByZWdpc3RlcmVkIHdpdGggdGhlIGtvYmplY3QgY29yZSwgeW91IG5lZWQgdG8KK2Fubm91bmNlIHRvIHRoZSB3b3JsZCB0aGF0IGl0IGhhcyBiZWVuIGNyZWF0ZWQuICBUaGlzIGNhbiBiZSBkb25lIHdpdGggYQorY2FsbCB0byBrb2JqZWN0X3VldmVudCgpOgorCisgICAgaW50IGtvYmplY3RfdWV2ZW50KHN0cnVjdCBrb2JqZWN0ICprb2JqLCBlbnVtIGtvYmplY3RfYWN0aW9uIGFjdGlvbik7CisKK1VzZSB0aGUgS09CSl9BREQgYWN0aW9uIGZvciB3aGVuIHRoZSBrb2JqZWN0IGlzIGZpcnN0IGFkZGVkIHRvIHRoZSBrZXJuZWwuCitUaGlzIHNob3VsZCBiZSBkb25lIG9ubHkgYWZ0ZXIgYW55IGF0dHJpYnV0ZXMgb3IgY2hpbGRyZW4gb2YgdGhlIGtvYmplY3QKK2hhdmUgYmVlbiBpbml0aWFsaXplZCBwcm9wZXJseSwgYXMgdXNlcnNwYWNlIHdpbGwgaW5zdGFudGx5IHN0YXJ0IHRvIGxvb2sKK2ZvciB0aGVtIHdoZW4gdGhpcyBjYWxsIGhhcHBlbnMuCisKK1doZW4gdGhlIGtvYmplY3QgaXMgcmVtb3ZlZCBmcm9tIHRoZSBrZXJuZWwgKGRldGFpbHMgb24gaG93IHRvIGRvIHRoYXQgYXJlCitiZWxvdyksIHRoZSB1ZXZlbnQgZm9yIEtPQkpfUkVNT1ZFIHdpbGwgYmUgYXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IHRoZQora29iamVjdCBjb3JlLCBzbyB0aGUgY2FsbGVyIGRvZXMgbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgZG9pbmcgdGhhdCBieQoraGFuZC4KKworCitSZWZlcmVuY2UgY291bnRzCisKK09uZSBvZiB0aGUga2V5IGZ1bmN0aW9ucyBvZiBhIGtvYmplY3QgaXMgdG8gc2VydmUgYXMgYSByZWZlcmVuY2UgY291bnRlcgorZm9yIHRoZSBvYmplY3QgaW4gd2hpY2ggaXQgaXMgZW1iZWRkZWQuIEFzIGxvbmcgYXMgcmVmZXJlbmNlcyB0byB0aGUgb2JqZWN0CitleGlzdCwgdGhlIG9iamVjdCAoYW5kIHRoZSBjb2RlIHdoaWNoIHN1cHBvcnRzIGl0KSBtdXN0IGNvbnRpbnVlIHRvIGV4aXN0LgorVGhlIGxvdy1sZXZlbCBmdW5jdGlvbnMgZm9yIG1hbmlwdWxhdGluZyBhIGtvYmplY3QncyByZWZlcmVuY2UgY291bnRzIGFyZToKKworICAgIHN0cnVjdCBrb2JqZWN0ICprb2JqZWN0X2dldChzdHJ1Y3Qga29iamVjdCAqa29iaik7CisgICAgdm9pZCBrb2JqZWN0X3B1dChzdHJ1Y3Qga29iamVjdCAqa29iaik7CisKK0Egc3VjY2Vzc2Z1bCBjYWxsIHRvIGtvYmplY3RfZ2V0KCkgd2lsbCBpbmNyZW1lbnQgdGhlIGtvYmplY3QncyByZWZlcmVuY2UKK2NvdW50ZXIgYW5kIHJldHVybiB0aGUgcG9pbnRlciB0byB0aGUga29iamVjdC4KKworV2hlbiBhIHJlZmVyZW5jZSBpcyByZWxlYXNlZCwgdGhlIGNhbGwgdG8ga29iamVjdF9wdXQoKSB3aWxsIGRlY3JlbWVudCB0aGUKK3JlZmVyZW5jZSBjb3VudCBhbmQsIHBvc3NpYmx5LCBmcmVlIHRoZSBvYmplY3QuIE5vdGUgdGhhdCBrb2JqZWN0X2luaXQoKQorc2V0cyB0aGUgcmVmZXJlbmNlIGNvdW50IHRvIG9uZSwgc28gdGhlIGNvZGUgd2hpY2ggc2V0cyB1cCB0aGUga29iamVjdCB3aWxsCituZWVkIHRvIGRvIGEga29iamVjdF9wdXQoKSBldmVudHVhbGx5IHRvIHJlbGVhc2UgdGhhdCByZWZlcmVuY2UuCisKK0JlY2F1c2Uga29iamVjdHMgYXJlIGR5bmFtaWMsIHRoZXkgbXVzdCBub3QgYmUgZGVjbGFyZWQgc3RhdGljYWxseSBvciBvbgordGhlIHN0YWNrLCBidXQgaW5zdGVhZCwgYWx3YXlzIGFsbG9jYXRlZCBkeW5hbWljYWxseS4gIEZ1dHVyZSB2ZXJzaW9ucyBvZgordGhlIGtlcm5lbCB3aWxsIGNvbnRhaW4gYSBydW4tdGltZSBjaGVjayBmb3Iga29iamVjdHMgdGhhdCBhcmUgY3JlYXRlZAorc3RhdGljYWxseSBhbmQgd2lsbCB3YXJuIHRoZSBkZXZlbG9wZXIgb2YgdGhpcyBpbXByb3BlciB1c2FnZS4KKworSWYgYWxsIHRoYXQgeW91IHdhbnQgdG8gdXNlIGEga29iamVjdCBmb3IgaXMgdG8gcHJvdmlkZSBhIHJlZmVyZW5jZSBjb3VudGVyCitmb3IgeW91ciBzdHJ1Y3R1cmUsIHBsZWFzZSB1c2UgdGhlIHN0cnVjdCBrcmVmIGluc3RlYWQ7IGEga29iamVjdCB3b3VsZCBiZQorb3ZlcmtpbGwuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXNlIHN0cnVjdCBrcmVmLCBwbGVhc2Ugc2VlIHRoZQorZmlsZSBEb2N1bWVudGF0aW9uL2tyZWYudHh0IGluIHRoZSBMaW51eCBrZXJuZWwgc291cmNlIHRyZWUuCisKKworQ3JlYXRpbmcgInNpbXBsZSIga29iamVjdHMKKworU29tZXRpbWVzIGFsbCB0aGF0IGEgZGV2ZWxvcGVyIHdhbnRzIGlzIGEgd2F5IHRvIGNyZWF0ZSBhIHNpbXBsZSBkaXJlY3RvcnkKK2luIHRoZSBzeXNmcyBoaWVyYXJjaHksIGFuZCBub3QgaGF2ZSB0byBtZXNzIHdpdGggdGhlIHdob2xlIGNvbXBsaWNhdGlvbiBvZgora3NldHMsIHNob3cgYW5kIHN0b3JlIGZ1bmN0aW9ucywgYW5kIG90aGVyIGRldGFpbHMuICBUaGlzIGlzIHRoZSBvbmUKK2V4Y2VwdGlvbiB3aGVyZSBhIHNpbmdsZSBrb2JqZWN0IHNob3VsZCBiZSBjcmVhdGVkLiAgVG8gY3JlYXRlIHN1Y2ggYW4KK2VudHJ5LCB1c2UgdGhlIGZ1bmN0aW9uOgorCisgICAgc3RydWN0IGtvYmplY3QgKmtvYmplY3RfY3JlYXRlX2FuZF9hZGQoY2hhciAqbmFtZSwgc3RydWN0IGtvYmplY3QgKnBhcmVudCk7CisKK1RoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGUgYSBrb2JqZWN0IGFuZCBwbGFjZSBpdCBpbiBzeXNmcyBpbiB0aGUgbG9jYXRpb24KK3VuZGVybmVhdGggdGhlIHNwZWNpZmllZCBwYXJlbnQga29iamVjdC4gIFRvIGNyZWF0ZSBzaW1wbGUgYXR0cmlidXRlcworYXNzb2NpYXRlZCB3aXRoIHRoaXMga29iamVjdCwgdXNlOgorCisgICAgaW50IHN5c2ZzX2NyZWF0ZV9maWxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyKTsKK29yCisgICAgaW50IHN5c2ZzX2NyZWF0ZV9ncm91cChzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqZ3JwKTsKKworQm90aCB0eXBlcyBvZiBhdHRyaWJ1dGVzIHVzZWQgaGVyZSwgd2l0aCBhIGtvYmplY3QgdGhhdCBoYXMgYmVlbiBjcmVhdGVkCit3aXRoIHRoZSBrb2JqZWN0X2NyZWF0ZV9hbmRfYWRkKCksIGNhbiBiZSBvZiB0eXBlIGtvYmpfYXR0cmlidXRlLCBzbyBubworc3BlY2lhbCBjdXN0b20gYXR0cmlidXRlIGlzIG5lZWRlZCB0byBiZSBjcmVhdGVkLgorCitTZWUgdGhlIGV4YW1wbGUgbW9kdWxlLCBzYW1wbGVzL2tvYmplY3Qva29iamVjdC1leGFtcGxlLmMgZm9yIGFuCitpbXBsZW1lbnRhdGlvbiBvZiBhIHNpbXBsZSBrb2JqZWN0IGFuZCBhdHRyaWJ1dGVzLgorCisKKwora3R5cGVzIGFuZCByZWxlYXNlIG1ldGhvZHMKKworT25lIGltcG9ydGFudCB0aGluZyBzdGlsbCBtaXNzaW5nIGZyb20gdGhlIGRpc2N1c3Npb24gaXMgd2hhdCBoYXBwZW5zIHRvIGEKK2tvYmplY3Qgd2hlbiBpdHMgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gVGhlIGNvZGUgd2hpY2ggY3JlYXRlZCB0aGUKK2tvYmplY3QgZ2VuZXJhbGx5IGRvZXMgbm90IGtub3cgd2hlbiB0aGF0IHdpbGwgaGFwcGVuOyBpZiBpdCBkaWQsIHRoZXJlCit3b3VsZCBiZSBsaXR0bGUgcG9pbnQgaW4gdXNpbmcgYSBrb2JqZWN0IGluIHRoZSBmaXJzdCBwbGFjZS4gRXZlbgorcHJlZGljdGFibGUgb2JqZWN0IGxpZmVjeWNsZXMgYmVjb21lIG1vcmUgY29tcGxpY2F0ZWQgd2hlbiBzeXNmcyBpcyBicm91Z2h0CitpbiBhcyBvdGhlciBwb3J0aW9ucyBvZiB0aGUga2VybmVsIGNhbiBnZXQgYSByZWZlcmVuY2Ugb24gYW55IGtvYmplY3QgdGhhdAoraXMgcmVnaXN0ZXJlZCBpbiB0aGUgc3lzdGVtLgorCitUaGUgZW5kIHJlc3VsdCBpcyB0aGF0IGEgc3RydWN0dXJlIHByb3RlY3RlZCBieSBhIGtvYmplY3QgY2Fubm90IGJlIGZyZWVkCitiZWZvcmUgaXRzIHJlZmVyZW5jZSBjb3VudCBnb2VzIHRvIHplcm8uIFRoZSByZWZlcmVuY2UgY291bnQgaXMgbm90IHVuZGVyCit0aGUgZGlyZWN0IGNvbnRyb2wgb2YgdGhlIGNvZGUgd2hpY2ggY3JlYXRlZCB0aGUga29iamVjdC4gU28gdGhhdCBjb2RlIG11c3QKK2JlIG5vdGlmaWVkIGFzeW5jaHJvbm91c2x5IHdoZW5ldmVyIHRoZSBsYXN0IHJlZmVyZW5jZSB0byBvbmUgb2YgaXRzCitrb2JqZWN0cyBnb2VzIGF3YXkuCisKK09uY2UgeW91IHJlZ2lzdGVyZWQgeW91ciBrb2JqZWN0IHZpYSBrb2JqZWN0X2FkZCgpLCB5b3UgbXVzdCBuZXZlciB1c2UKK2tmcmVlKCkgdG8gZnJlZSBpdCBkaXJlY3RseS4gVGhlIG9ubHkgc2FmZSB3YXkgaXMgdG8gdXNlIGtvYmplY3RfcHV0KCkuIEl0CitpcyBnb29kIHByYWN0aWNlIHRvIGFsd2F5cyB1c2Uga29iamVjdF9wdXQoKSBhZnRlciBrb2JqZWN0X2luaXQoKSB0byBhdm9pZAorZXJyb3JzIGNyZWVwaW5nIGluLgorCitUaGlzIG5vdGlmaWNhdGlvbiBpcyBkb25lIHRocm91Z2ggYSBrb2JqZWN0J3MgcmVsZWFzZSgpIG1ldGhvZC4gVXN1YWxseQorc3VjaCBhIG1ldGhvZCBoYXMgYSBmb3JtIGxpa2U6CisKKyAgICB2b2lkIG15X29iamVjdF9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKQorICAgIHsKKyAgICAJICAgIHN0cnVjdCBteV9vYmplY3QgKm1pbmUgPSBjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IG15X29iamVjdCwga29iaik7CisKKwkgICAgLyogUGVyZm9ybSBhbnkgYWRkaXRpb25hbCBjbGVhbnVwIG9uIHRoaXMgb2JqZWN0LCB0aGVuLi4uICovCisJICAgIGtmcmVlKG1pbmUpOworICAgIH0KKworT25lIGltcG9ydGFudCBwb2ludCBjYW5ub3QgYmUgb3ZlcnN0YXRlZDogZXZlcnkga29iamVjdCBtdXN0IGhhdmUgYQorcmVsZWFzZSgpIG1ldGhvZCwgYW5kIHRoZSBrb2JqZWN0IG11c3QgcGVyc2lzdCAoaW4gYSBjb25zaXN0ZW50IHN0YXRlKQordW50aWwgdGhhdCBtZXRob2QgaXMgY2FsbGVkLiBJZiB0aGVzZSBjb25zdHJhaW50cyBhcmUgbm90IG1ldCwgdGhlIGNvZGUgaXMKK2ZsYXdlZC4gIE5vdGUgdGhhdCB0aGUga2VybmVsIHdpbGwgd2FybiB5b3UgaWYgeW91IGZvcmdldCB0byBwcm92aWRlIGEKK3JlbGVhc2UoKSBtZXRob2QuICBEbyBub3QgdHJ5IHRvIGdldCByaWQgb2YgdGhpcyB3YXJuaW5nIGJ5IHByb3ZpZGluZyBhbgorImVtcHR5IiByZWxlYXNlIGZ1bmN0aW9uOyB5b3Ugd2lsbCBiZSBtb2NrZWQgbWVyY2lsZXNzbHkgYnkgdGhlIGtvYmplY3QKK21haW50YWluZXIgaWYgeW91IGF0dGVtcHQgdGhpcy4KKworTm90ZSwgdGhlIG5hbWUgb2YgdGhlIGtvYmplY3QgaXMgYXZhaWxhYmxlIGluIHRoZSByZWxlYXNlIGZ1bmN0aW9uLCBidXQgaXQKK211c3QgTk9UIGJlIGNoYW5nZWQgd2l0aGluIHRoaXMgY2FsbGJhY2suICBPdGhlcndpc2UgdGhlcmUgd2lsbCBiZSBhIG1lbW9yeQorbGVhayBpbiB0aGUga29iamVjdCBjb3JlLCB3aGljaCBtYWtlcyBwZW9wbGUgdW5oYXBweS4KKworSW50ZXJlc3RpbmdseSwgdGhlIHJlbGVhc2UoKSBtZXRob2QgaXMgbm90IHN0b3JlZCBpbiB0aGUga29iamVjdCBpdHNlbGY7CitpbnN0ZWFkLCBpdCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIGt0eXBlLiBTbyBsZXQgdXMgaW50cm9kdWNlIHN0cnVjdAora29ial90eXBlOgorCisgICAgc3RydWN0IGtvYmpfdHlwZSB7CisJICAgIHZvaWQgKCpyZWxlYXNlKShzdHJ1Y3Qga29iamVjdCAqa29iaik7CisJICAgIGNvbnN0IHN0cnVjdCBzeXNmc19vcHMgKnN5c2ZzX29wczsKKwkgICAgc3RydWN0IGF0dHJpYnV0ZSAqKmRlZmF1bHRfYXR0cnM7CisJICAgIGNvbnN0IHN0cnVjdCBrb2JqX25zX3R5cGVfb3BlcmF0aW9ucyAqKCpjaGlsZF9uc190eXBlKShzdHJ1Y3Qga29iamVjdCAqa29iaik7CisJICAgIGNvbnN0IHZvaWQgKigqbmFtZXNwYWNlKShzdHJ1Y3Qga29iamVjdCAqa29iaik7CisgICAgfTsKKworVGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCB0byBkZXNjcmliZSBhIHBhcnRpY3VsYXIgdHlwZSBvZiBrb2JqZWN0IChvciwgbW9yZQorY29ycmVjdGx5LCBvZiBjb250YWluaW5nIG9iamVjdCkuIEV2ZXJ5IGtvYmplY3QgbmVlZHMgdG8gaGF2ZSBhbiBhc3NvY2lhdGVkCitrb2JqX3R5cGUgc3RydWN0dXJlOyBhIHBvaW50ZXIgdG8gdGhhdCBzdHJ1Y3R1cmUgbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiB5b3UKK2NhbGwga29iamVjdF9pbml0KCkgb3Iga29iamVjdF9pbml0X2FuZF9hZGQoKS4KKworVGhlIHJlbGVhc2UgZmllbGQgaW4gc3RydWN0IGtvYmpfdHlwZSBpcywgb2YgY291cnNlLCBhIHBvaW50ZXIgdG8gdGhlCityZWxlYXNlKCkgbWV0aG9kIGZvciB0aGlzIHR5cGUgb2Yga29iamVjdC4gVGhlIG90aGVyIHR3byBmaWVsZHMgKHN5c2ZzX29wcworYW5kIGRlZmF1bHRfYXR0cnMpIGNvbnRyb2wgaG93IG9iamVjdHMgb2YgdGhpcyB0eXBlIGFyZSByZXByZXNlbnRlZCBpbgorc3lzZnM7IHRoZXkgYXJlIGJleW9uZCB0aGUgc2NvcGUgb2YgdGhpcyBkb2N1bWVudC4KKworVGhlIGRlZmF1bHRfYXR0cnMgcG9pbnRlciBpcyBhIGxpc3Qgb2YgZGVmYXVsdCBhdHRyaWJ1dGVzIHRoYXQgd2lsbCBiZQorYXV0b21hdGljYWxseSBjcmVhdGVkIGZvciBhbnkga29iamVjdCB0aGF0IGlzIHJlZ2lzdGVyZWQgd2l0aCB0aGlzIGt0eXBlLgorCisKK2tzZXRzCisKK0Ega3NldCBpcyBtZXJlbHkgYSBjb2xsZWN0aW9uIG9mIGtvYmplY3RzIHRoYXQgd2FudCB0byBiZSBhc3NvY2lhdGVkIHdpdGgKK2VhY2ggb3RoZXIuICBUaGVyZSBpcyBubyByZXN0cmljdGlvbiB0aGF0IHRoZXkgYmUgb2YgdGhlIHNhbWUga3R5cGUsIGJ1dCBiZQordmVyeSBjYXJlZnVsIGlmIHRoZXkgYXJlIG5vdC4KKworQSBrc2V0IHNlcnZlcyB0aGVzZSBmdW5jdGlvbnM6CisKKyAtIEl0IHNlcnZlcyBhcyBhIGJhZyBjb250YWluaW5nIGEgZ3JvdXAgb2Ygb2JqZWN0cy4gQSBrc2V0IGNhbiBiZSB1c2VkIGJ5CisgICB0aGUga2VybmVsIHRvIHRyYWNrICJhbGwgYmxvY2sgZGV2aWNlcyIgb3IgImFsbCBQQ0kgZGV2aWNlIGRyaXZlcnMuIgorCisgLSBBIGtzZXQgaXMgYWxzbyBhIHN1YmRpcmVjdG9yeSBpbiBzeXNmcywgd2hlcmUgdGhlIGFzc29jaWF0ZWQga29iamVjdHMKKyAgIHdpdGggdGhlIGtzZXQgY2FuIHNob3cgdXAuICBFdmVyeSBrc2V0IGNvbnRhaW5zIGEga29iamVjdCB3aGljaCBjYW4gYmUKKyAgIHNldCB1cCB0byBiZSB0aGUgcGFyZW50IG9mIG90aGVyIGtvYmplY3RzOyB0aGUgdG9wLWxldmVsIGRpcmVjdG9yaWVzIG9mCisgICB0aGUgc3lzZnMgaGllcmFyY2h5IGFyZSBjb25zdHJ1Y3RlZCBpbiB0aGlzIHdheS4KKworIC0gS3NldHMgY2FuIHN1cHBvcnQgdGhlICJob3RwbHVnZ2luZyIgb2Yga29iamVjdHMgYW5kIGluZmx1ZW5jZSBob3cKKyAgIHVldmVudCBldmVudHMgYXJlIHJlcG9ydGVkIHRvIHVzZXIgc3BhY2UuCisKK0luIG9iamVjdC1vcmllbnRlZCB0ZXJtcywgImtzZXQiIGlzIHRoZSB0b3AtbGV2ZWwgY29udGFpbmVyIGNsYXNzOyBrc2V0cworY29udGFpbiB0aGVpciBvd24ga29iamVjdCwgYnV0IHRoYXQga29iamVjdCBpcyBtYW5hZ2VkIGJ5IHRoZSBrc2V0IGNvZGUgYW5kCitzaG91bGQgbm90IGJlIG1hbmlwdWxhdGVkIGJ5IGFueSBvdGhlciB1c2VyLgorCitBIGtzZXQga2VlcHMgaXRzIGNoaWxkcmVuIGluIGEgc3RhbmRhcmQga2VybmVsIGxpbmtlZCBsaXN0LiAgS29iamVjdHMgcG9pbnQKK2JhY2sgdG8gdGhlaXIgY29udGFpbmluZyBrc2V0IHZpYSB0aGVpciBrc2V0IGZpZWxkLiBJbiBhbG1vc3QgYWxsIGNhc2VzLAordGhlIGtvYmplY3RzIGJlbG9uZ2luZyB0byBhIGtzZXQgaGF2ZSB0aGF0IGtzZXQgKG9yLCBzdHJpY3RseSwgaXRzIGVtYmVkZGVkCitrb2JqZWN0KSBpbiB0aGVpciBwYXJlbnQuCisKK0FzIGEga3NldCBjb250YWlucyBhIGtvYmplY3Qgd2l0aGluIGl0LCBpdCBzaG91bGQgYWx3YXlzIGJlIGR5bmFtaWNhbGx5CitjcmVhdGVkIGFuZCBuZXZlciBkZWNsYXJlZCBzdGF0aWNhbGx5IG9yIG9uIHRoZSBzdGFjay4gIFRvIGNyZWF0ZSBhIG5ldwora3NldCB1c2U6CisgIHN0cnVjdCBrc2V0ICprc2V0X2NyZWF0ZV9hbmRfYWRkKGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJICAgc3RydWN0IGtzZXRfdWV2ZW50X29wcyAqdSwKKwkJCQkgICBzdHJ1Y3Qga29iamVjdCAqcGFyZW50KTsKKworV2hlbiB5b3UgYXJlIGZpbmlzaGVkIHdpdGggdGhlIGtzZXQsIGNhbGw6CisgIHZvaWQga3NldF91bnJlZ2lzdGVyKHN0cnVjdCBrc2V0ICprc2V0KTsKK3RvIGRlc3Ryb3kgaXQuICBUaGlzIHJlbW92ZXMgdGhlIGtzZXQgZnJvbSBzeXNmcyBhbmQgZGVjcmVtZW50cyBpdHMgcmVmZXJlbmNlCitjb3VudC4gIFdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCBnb2VzIHRvIHplcm8sIHRoZSBrc2V0IHdpbGwgYmUgcmVsZWFzZWQuCitCZWNhdXNlIG90aGVyIHJlZmVyZW5jZXMgdG8gdGhlIGtzZXQgbWF5IHN0aWxsIGV4aXN0LCB0aGUgcmVsZWFzZSBtYXkgaGFwcGVuCithZnRlciBrc2V0X3VucmVnaXN0ZXIoKSByZXR1cm5zLgorCitBbiBleGFtcGxlIG9mIHVzaW5nIGEga3NldCBjYW4gYmUgc2VlbiBpbiB0aGUKK3NhbXBsZXMva29iamVjdC9rc2V0LWV4YW1wbGUuYyBmaWxlIGluIHRoZSBrZXJuZWwgdHJlZS4KKworSWYgYSBrc2V0IHdpc2hlcyB0byBjb250cm9sIHRoZSB1ZXZlbnQgb3BlcmF0aW9ucyBvZiB0aGUga29iamVjdHMKK2Fzc29jaWF0ZWQgd2l0aCBpdCwgaXQgY2FuIHVzZSB0aGUgc3RydWN0IGtzZXRfdWV2ZW50X29wcyB0byBoYW5kbGUgaXQ6CisKK3N0cnVjdCBrc2V0X3VldmVudF9vcHMgeworICAgICAgICBpbnQgKCpmaWx0ZXIpKHN0cnVjdCBrc2V0ICprc2V0LCBzdHJ1Y3Qga29iamVjdCAqa29iaik7CisgICAgICAgIGNvbnN0IGNoYXIgKigqbmFtZSkoc3RydWN0IGtzZXQgKmtzZXQsIHN0cnVjdCBrb2JqZWN0ICprb2JqKTsKKyAgICAgICAgaW50ICgqdWV2ZW50KShzdHJ1Y3Qga3NldCAqa3NldCwgc3RydWN0IGtvYmplY3QgKmtvYmosCisgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGtvYmpfdWV2ZW50X2VudiAqZW52KTsKK307CisKKworVGhlIGZpbHRlciBmdW5jdGlvbiBhbGxvd3MgYSBrc2V0IHRvIHByZXZlbnQgYSB1ZXZlbnQgZnJvbSBiZWluZyBlbWl0dGVkIHRvCit1c2Vyc3BhY2UgZm9yIGEgc3BlY2lmaWMga29iamVjdC4gIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIDAsIHRoZSB1ZXZlbnQKK3dpbGwgbm90IGJlIGVtaXR0ZWQuCisKK1RoZSBuYW1lIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IG5hbWUgb2YgdGhlIGtzZXQKK3RoYXQgdGhlIHVldmVudCBzZW5kcyB0byB1c2Vyc3BhY2UuICBCeSBkZWZhdWx0LCB0aGUgbmFtZSB3aWxsIGJlIHRoZSBzYW1lCithcyB0aGUga3NldCBpdHNlbGYsIGJ1dCB0aGlzIGZ1bmN0aW9uLCBpZiBwcmVzZW50LCBjYW4gb3ZlcnJpZGUgdGhhdCBuYW1lLgorCitUaGUgdWV2ZW50IGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIHVldmVudCBpcyBhYm91dCB0byBiZSBzZW50IHRvCit1c2Vyc3BhY2UgdG8gYWxsb3cgbW9yZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gYmUgYWRkZWQgdG8gdGhlIHVldmVudC4KKworT25lIG1pZ2h0IGFzayBob3csIGV4YWN0bHksIGEga29iamVjdCBpcyBhZGRlZCB0byBhIGtzZXQsIGdpdmVuIHRoYXQgbm8KK2Z1bmN0aW9ucyB3aGljaCBwZXJmb3JtIHRoYXQgZnVuY3Rpb24gaGF2ZSBiZWVuIHByZXNlbnRlZC4gIFRoZSBhbnN3ZXIgaXMKK3RoYXQgdGhpcyB0YXNrIGlzIGhhbmRsZWQgYnkga29iamVjdF9hZGQoKS4gIFdoZW4gYSBrb2JqZWN0IGlzIHBhc3NlZCB0bwora29iamVjdF9hZGQoKSwgaXRzIGtzZXQgbWVtYmVyIHNob3VsZCBwb2ludCB0byB0aGUga3NldCB0byB3aGljaCB0aGUKK2tvYmplY3Qgd2lsbCBiZWxvbmcuICBrb2JqZWN0X2FkZCgpIHdpbGwgaGFuZGxlIHRoZSByZXN0LgorCitJZiB0aGUga29iamVjdCBiZWxvbmdpbmcgdG8gYSBrc2V0IGhhcyBubyBwYXJlbnQga29iamVjdCBzZXQsIGl0IHdpbGwgYmUKK2FkZGVkIHRvIHRoZSBrc2V0J3MgZGlyZWN0b3J5LiAgTm90IGFsbCBtZW1iZXJzIG9mIGEga3NldCBkbyBuZWNlc3NhcmlseQorbGl2ZSBpbiB0aGUga3NldCBkaXJlY3RvcnkuICBJZiBhbiBleHBsaWNpdCBwYXJlbnQga29iamVjdCBpcyBhc3NpZ25lZAorYmVmb3JlIHRoZSBrb2JqZWN0IGlzIGFkZGVkLCB0aGUga29iamVjdCBpcyByZWdpc3RlcmVkIHdpdGggdGhlIGtzZXQsIGJ1dAorYWRkZWQgYmVsb3cgdGhlIHBhcmVudCBrb2JqZWN0LgorCisKK0tvYmplY3QgcmVtb3ZhbAorCitBZnRlciBhIGtvYmplY3QgaGFzIGJlZW4gcmVnaXN0ZXJlZCB3aXRoIHRoZSBrb2JqZWN0IGNvcmUgc3VjY2Vzc2Z1bGx5LCBpdAorbXVzdCBiZSBjbGVhbmVkIHVwIHdoZW4gdGhlIGNvZGUgaXMgZmluaXNoZWQgd2l0aCBpdC4gIFRvIGRvIHRoYXQsIGNhbGwKK2tvYmplY3RfcHV0KCkuICBCeSBkb2luZyB0aGlzLCB0aGUga29iamVjdCBjb3JlIHdpbGwgYXV0b21hdGljYWxseSBjbGVhbiB1cAorYWxsIG9mIHRoZSBtZW1vcnkgYWxsb2NhdGVkIGJ5IHRoaXMga29iamVjdC4gIElmIGEgS09CSl9BREQgdWV2ZW50IGhhcyBiZWVuCitzZW50IGZvciB0aGUgb2JqZWN0LCBhIGNvcnJlc3BvbmRpbmcgS09CSl9SRU1PVkUgdWV2ZW50IHdpbGwgYmUgc2VudCwgYW5kCithbnkgb3RoZXIgc3lzZnMgaG91c2VrZWVwaW5nIHdpbGwgYmUgaGFuZGxlZCBmb3IgdGhlIGNhbGxlciBwcm9wZXJseS4KKworSWYgeW91IG5lZWQgdG8gZG8gYSB0d28tc3RhZ2UgZGVsZXRlIG9mIHRoZSBrb2JqZWN0IChzYXkgeW91IGFyZSBub3QKK2FsbG93ZWQgdG8gc2xlZXAgd2hlbiB5b3UgbmVlZCB0byBkZXN0cm95IHRoZSBvYmplY3QpLCB0aGVuIGNhbGwKK2tvYmplY3RfZGVsKCkgd2hpY2ggd2lsbCB1bnJlZ2lzdGVyIHRoZSBrb2JqZWN0IGZyb20gc3lzZnMuICBUaGlzIG1ha2VzIHRoZQora29iamVjdCAiaW52aXNpYmxlIiwgYnV0IGl0IGlzIG5vdCBjbGVhbmVkIHVwLCBhbmQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZgordGhlIG9iamVjdCBpcyBzdGlsbCB0aGUgc2FtZS4gIEF0IGEgbGF0ZXIgdGltZSBjYWxsIGtvYmplY3RfcHV0KCkgdG8gZmluaXNoCit0aGUgY2xlYW51cCBvZiB0aGUgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCB0aGUga29iamVjdC4KKwora29iamVjdF9kZWwoKSBjYW4gYmUgdXNlZCB0byBkcm9wIHRoZSByZWZlcmVuY2UgdG8gdGhlIHBhcmVudCBvYmplY3QsIGlmCitjaXJjdWxhciByZWZlcmVuY2VzIGFyZSBjb25zdHJ1Y3RlZC4gIEl0IGlzIHZhbGlkIGluIHNvbWUgY2FzZXMsIHRoYXQgYQorcGFyZW50IG9iamVjdHMgcmVmZXJlbmNlcyBhIGNoaWxkLiAgQ2lyY3VsYXIgcmVmZXJlbmNlcyBfbXVzdF8gYmUgYnJva2VuCit3aXRoIGFuIGV4cGxpY2l0IGNhbGwgdG8ga29iamVjdF9kZWwoKSwgc28gdGhhdCBhIHJlbGVhc2UgZnVuY3Rpb25zIHdpbGwgYmUKK2NhbGxlZCwgYW5kIHRoZSBvYmplY3RzIGluIHRoZSBmb3JtZXIgY2lyY2xlIHJlbGVhc2UgZWFjaCBvdGhlci4KKworCitFeGFtcGxlIGNvZGUgdG8gY29weSBmcm9tCisKK0ZvciBhIG1vcmUgY29tcGxldGUgZXhhbXBsZSBvZiB1c2luZyBrc2V0cyBhbmQga29iamVjdHMgcHJvcGVybHksIHNlZSB0aGUKK2V4YW1wbGUgcHJvZ3JhbXMgc2FtcGxlcy9rb2JqZWN0L3trb2JqZWN0LWV4YW1wbGUuYyxrc2V0LWV4YW1wbGUuY30sCit3aGljaCB3aWxsIGJlIGJ1aWx0IGFzIGxvYWRhYmxlIG1vZHVsZXMgaWYgeW91IHNlbGVjdCBDT05GSUdfU0FNUExFX0tPQkpFQ1QuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2twcm9iZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9rcHJvYmVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjliM2UyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9rcHJvYmVzLnR4dApAQCAtMCwwICsxLDczMSBAQAorVGl0bGUJOiBLZXJuZWwgUHJvYmVzIChLcHJvYmVzKQorQXV0aG9ycwk6IEppbSBLZW5pc3RvbiA8amtlbmlzdG9AdXMuaWJtLmNvbT4KKwk6IFByYXNhbm5hIFMgUGFuY2hhbXVraGkgPHByYXNhbm5hLnBhbmNoYW11a2hpQGdtYWlsLmNvbT4KKwk6IE1hc2FtaSBIaXJhbWF0c3UgPG1oaXJhbWF0QHJlZGhhdC5jb20+CisKK0NPTlRFTlRTCisKKzEuIENvbmNlcHRzOiBLcHJvYmVzLCBKcHJvYmVzLCBSZXR1cm4gUHJvYmVzCisyLiBBcmNoaXRlY3R1cmVzIFN1cHBvcnRlZAorMy4gQ29uZmlndXJpbmcgS3Byb2JlcworNC4gQVBJIFJlZmVyZW5jZQorNS4gS3Byb2JlcyBGZWF0dXJlcyBhbmQgTGltaXRhdGlvbnMKKzYuIFByb2JlIE92ZXJoZWFkCis3LiBUT0RPCis4LiBLcHJvYmVzIEV4YW1wbGUKKzkuIEpwcm9iZXMgRXhhbXBsZQorMTAuIEtyZXRwcm9iZXMgRXhhbXBsZQorQXBwZW5kaXggQTogVGhlIGtwcm9iZXMgZGVidWdmcyBpbnRlcmZhY2UKK0FwcGVuZGl4IEI6IFRoZSBrcHJvYmVzIHN5c2N0bCBpbnRlcmZhY2UKKworMS4gQ29uY2VwdHM6IEtwcm9iZXMsIEpwcm9iZXMsIFJldHVybiBQcm9iZXMKKworS3Byb2JlcyBlbmFibGVzIHlvdSB0byBkeW5hbWljYWxseSBicmVhayBpbnRvIGFueSBrZXJuZWwgcm91dGluZSBhbmQKK2NvbGxlY3QgZGVidWdnaW5nIGFuZCBwZXJmb3JtYW5jZSBpbmZvcm1hdGlvbiBub24tZGlzcnVwdGl2ZWx5LiBZb3UKK2NhbiB0cmFwIGF0IGFsbW9zdCBhbnkga2VybmVsIGNvZGUgYWRkcmVzcygqKSwgc3BlY2lmeWluZyBhIGhhbmRsZXIKK3JvdXRpbmUgdG8gYmUgaW52b2tlZCB3aGVuIHRoZSBicmVha3BvaW50IGlzIGhpdC4KKygqOiBzb21lIHBhcnRzIG9mIHRoZSBrZXJuZWwgY29kZSBjYW4gbm90IGJlIHRyYXBwZWQsIHNlZSAxLjUgQmxhY2tsaXN0KQorCitUaGVyZSBhcmUgY3VycmVudGx5IHRocmVlIHR5cGVzIG9mIHByb2Jlczoga3Byb2JlcywganByb2JlcywgYW5kCitrcmV0cHJvYmVzIChhbHNvIGNhbGxlZCByZXR1cm4gcHJvYmVzKS4gIEEga3Byb2JlIGNhbiBiZSBpbnNlcnRlZAorb24gdmlydHVhbGx5IGFueSBpbnN0cnVjdGlvbiBpbiB0aGUga2VybmVsLiAgQSBqcHJvYmUgaXMgaW5zZXJ0ZWQgYXQKK3RoZSBlbnRyeSB0byBhIGtlcm5lbCBmdW5jdGlvbiwgYW5kIHByb3ZpZGVzIGNvbnZlbmllbnQgYWNjZXNzIHRvIHRoZQorZnVuY3Rpb24ncyBhcmd1bWVudHMuICBBIHJldHVybiBwcm9iZSBmaXJlcyB3aGVuIGEgc3BlY2lmaWVkIGZ1bmN0aW9uCityZXR1cm5zLgorCitJbiB0aGUgdHlwaWNhbCBjYXNlLCBLcHJvYmVzLWJhc2VkIGluc3RydW1lbnRhdGlvbiBpcyBwYWNrYWdlZCBhcworYSBrZXJuZWwgbW9kdWxlLiAgVGhlIG1vZHVsZSdzIGluaXQgZnVuY3Rpb24gaW5zdGFsbHMgKCJyZWdpc3RlcnMiKQorb25lIG9yIG1vcmUgcHJvYmVzLCBhbmQgdGhlIGV4aXQgZnVuY3Rpb24gdW5yZWdpc3RlcnMgdGhlbS4gIEEKK3JlZ2lzdHJhdGlvbiBmdW5jdGlvbiBzdWNoIGFzIHJlZ2lzdGVyX2twcm9iZSgpIHNwZWNpZmllcyB3aGVyZQordGhlIHByb2JlIGlzIHRvIGJlIGluc2VydGVkIGFuZCB3aGF0IGhhbmRsZXIgaXMgdG8gYmUgY2FsbGVkIHdoZW4KK3RoZSBwcm9iZSBpcyBoaXQuCisKK1RoZXJlIGFyZSBhbHNvIHJlZ2lzdGVyXy91bnJlZ2lzdGVyXypwcm9iZXMoKSBmdW5jdGlvbnMgZm9yIGJhdGNoCityZWdpc3RyYXRpb24vdW5yZWdpc3RyYXRpb24gb2YgYSBncm91cCBvZiAqcHJvYmVzLiBUaGVzZSBmdW5jdGlvbnMKK2NhbiBzcGVlZCB1cCB1bnJlZ2lzdHJhdGlvbiBwcm9jZXNzIHdoZW4geW91IGhhdmUgdG8gdW5yZWdpc3RlcgorYSBsb3Qgb2YgcHJvYmVzIGF0IG9uY2UuCisKK1RoZSBuZXh0IGZvdXIgc3Vic2VjdGlvbnMgZXhwbGFpbiBob3cgdGhlIGRpZmZlcmVudCB0eXBlcyBvZgorcHJvYmVzIHdvcmsgYW5kIGhvdyBqdW1wIG9wdGltaXphdGlvbiB3b3Jrcy4gIFRoZXkgZXhwbGFpbiBjZXJ0YWluCit0aGluZ3MgdGhhdCB5b3UnbGwgbmVlZCB0byBrbm93IGluIG9yZGVyIHRvIG1ha2UgdGhlIGJlc3QgdXNlIG9mCitLcHJvYmVzIC0tIGUuZy4sIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYSBwcmVfaGFuZGxlciBhbmQKK2EgcG9zdF9oYW5kbGVyLCBhbmQgaG93IHRvIHVzZSB0aGUgbWF4YWN0aXZlIGFuZCBubWlzc2VkIGZpZWxkcyBvZgorYSBrcmV0cHJvYmUuICBCdXQgaWYgeW91J3JlIGluIGEgaHVycnkgdG8gc3RhcnQgdXNpbmcgS3Byb2JlcywgeW91CitjYW4gc2tpcCBhaGVhZCB0byBzZWN0aW9uIDIuCisKKzEuMSBIb3cgRG9lcyBhIEtwcm9iZSBXb3JrPworCitXaGVuIGEga3Byb2JlIGlzIHJlZ2lzdGVyZWQsIEtwcm9iZXMgbWFrZXMgYSBjb3B5IG9mIHRoZSBwcm9iZWQKK2luc3RydWN0aW9uIGFuZCByZXBsYWNlcyB0aGUgZmlyc3QgYnl0ZShzKSBvZiB0aGUgcHJvYmVkIGluc3RydWN0aW9uCit3aXRoIGEgYnJlYWtwb2ludCBpbnN0cnVjdGlvbiAoZS5nLiwgaW50MyBvbiBpMzg2IGFuZCB4ODZfNjQpLgorCitXaGVuIGEgQ1BVIGhpdHMgdGhlIGJyZWFrcG9pbnQgaW5zdHJ1Y3Rpb24sIGEgdHJhcCBvY2N1cnMsIHRoZSBDUFUncworcmVnaXN0ZXJzIGFyZSBzYXZlZCwgYW5kIGNvbnRyb2wgcGFzc2VzIHRvIEtwcm9iZXMgdmlhIHRoZQorbm90aWZpZXJfY2FsbF9jaGFpbiBtZWNoYW5pc20uICBLcHJvYmVzIGV4ZWN1dGVzIHRoZSAicHJlX2hhbmRsZXIiCithc3NvY2lhdGVkIHdpdGggdGhlIGtwcm9iZSwgcGFzc2luZyB0aGUgaGFuZGxlciB0aGUgYWRkcmVzc2VzIG9mIHRoZQora3Byb2JlIHN0cnVjdCBhbmQgdGhlIHNhdmVkIHJlZ2lzdGVycy4KKworTmV4dCwgS3Byb2JlcyBzaW5nbGUtc3RlcHMgaXRzIGNvcHkgb2YgdGhlIHByb2JlZCBpbnN0cnVjdGlvbi4KKyhJdCB3b3VsZCBiZSBzaW1wbGVyIHRvIHNpbmdsZS1zdGVwIHRoZSBhY3R1YWwgaW5zdHJ1Y3Rpb24gaW4gcGxhY2UsCitidXQgdGhlbiBLcHJvYmVzIHdvdWxkIGhhdmUgdG8gdGVtcG9yYXJpbHkgcmVtb3ZlIHRoZSBicmVha3BvaW50CitpbnN0cnVjdGlvbi4gIFRoaXMgd291bGQgb3BlbiBhIHNtYWxsIHRpbWUgd2luZG93IHdoZW4gYW5vdGhlciBDUFUKK2NvdWxkIHNhaWwgcmlnaHQgcGFzdCB0aGUgcHJvYmVwb2ludC4pCisKK0FmdGVyIHRoZSBpbnN0cnVjdGlvbiBpcyBzaW5nbGUtc3RlcHBlZCwgS3Byb2JlcyBleGVjdXRlcyB0aGUKKyJwb3N0X2hhbmRsZXIsIiBpZiBhbnksIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBrcHJvYmUuCitFeGVjdXRpb24gdGhlbiBjb250aW51ZXMgd2l0aCB0aGUgaW5zdHJ1Y3Rpb24gZm9sbG93aW5nIHRoZSBwcm9iZXBvaW50LgorCisxLjIgSG93IERvZXMgYSBKcHJvYmUgV29yaz8KKworQSBqcHJvYmUgaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSBrcHJvYmUgdGhhdCBpcyBwbGFjZWQgb24gYSBmdW5jdGlvbidzCitlbnRyeSBwb2ludC4gIEl0IGVtcGxveXMgYSBzaW1wbGUgbWlycm9yaW5nIHByaW5jaXBsZSB0byBhbGxvdworc2VhbWxlc3MgYWNjZXNzIHRvIHRoZSBwcm9iZWQgZnVuY3Rpb24ncyBhcmd1bWVudHMuICBUaGUganByb2JlCitoYW5kbGVyIHJvdXRpbmUgc2hvdWxkIGhhdmUgdGhlIHNhbWUgc2lnbmF0dXJlIChhcmcgbGlzdCBhbmQgcmV0dXJuCit0eXBlKSBhcyB0aGUgZnVuY3Rpb24gYmVpbmcgcHJvYmVkLCBhbmQgbXVzdCBhbHdheXMgZW5kIGJ5IGNhbGxpbmcKK3RoZSBLcHJvYmVzIGZ1bmN0aW9uIGpwcm9iZV9yZXR1cm4oKS4KKworSGVyZSdzIGhvdyBpdCB3b3Jrcy4gIFdoZW4gdGhlIHByb2JlIGlzIGhpdCwgS3Byb2JlcyBtYWtlcyBhIGNvcHkgb2YKK3RoZSBzYXZlZCByZWdpc3RlcnMgYW5kIGEgZ2VuZXJvdXMgcG9ydGlvbiBvZiB0aGUgc3RhY2sgKHNlZSBiZWxvdykuCitLcHJvYmVzIHRoZW4gcG9pbnRzIHRoZSBzYXZlZCBpbnN0cnVjdGlvbiBwb2ludGVyIGF0IHRoZSBqcHJvYmUncworaGFuZGxlciByb3V0aW5lLCBhbmQgcmV0dXJucyBmcm9tIHRoZSB0cmFwLiAgQXMgYSByZXN1bHQsIGNvbnRyb2wKK3Bhc3NlcyB0byB0aGUgaGFuZGxlciwgd2hpY2ggaXMgcHJlc2VudGVkIHdpdGggdGhlIHNhbWUgcmVnaXN0ZXIgYW5kCitzdGFjayBjb250ZW50cyBhcyB0aGUgcHJvYmVkIGZ1bmN0aW9uLiAgV2hlbiBpdCBpcyBkb25lLCB0aGUgaGFuZGxlcgorY2FsbHMganByb2JlX3JldHVybigpLCB3aGljaCB0cmFwcyBhZ2FpbiB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCBzdGFjaworY29udGVudHMgYW5kIHByb2Nlc3NvciBzdGF0ZSBhbmQgc3dpdGNoIHRvIHRoZSBwcm9iZWQgZnVuY3Rpb24uCisKK0J5IGNvbnZlbnRpb24sIHRoZSBjYWxsZWUgb3ducyBpdHMgYXJndW1lbnRzLCBzbyBnY2MgbWF5IHByb2R1Y2UgY29kZQordGhhdCB1bmV4cGVjdGVkbHkgbW9kaWZpZXMgdGhhdCBwb3J0aW9uIG9mIHRoZSBzdGFjay4gIFRoaXMgaXMgd2h5CitLcHJvYmVzIHNhdmVzIGEgY29weSBvZiB0aGUgc3RhY2sgYW5kIHJlc3RvcmVzIGl0IGFmdGVyIHRoZSBqcHJvYmUKK2hhbmRsZXIgaGFzIHJ1bi4gIFVwIHRvIE1BWF9TVEFDS19TSVpFIGJ5dGVzIGFyZSBjb3BpZWQgLS0gZS5nLiwKKzY0IGJ5dGVzIG9uIGkzODYuCisKK05vdGUgdGhhdCB0aGUgcHJvYmVkIGZ1bmN0aW9uJ3MgYXJncyBtYXkgYmUgcGFzc2VkIG9uIHRoZSBzdGFjaworb3IgaW4gcmVnaXN0ZXJzLiAgVGhlIGpwcm9iZSB3aWxsIHdvcmsgaW4gZWl0aGVyIGNhc2UsIHNvIGxvbmcgYXMgdGhlCitoYW5kbGVyJ3MgcHJvdG90eXBlIG1hdGNoZXMgdGhhdCBvZiB0aGUgcHJvYmVkIGZ1bmN0aW9uLgorCisxLjMgUmV0dXJuIFByb2JlcworCisxLjMuMSBIb3cgRG9lcyBhIFJldHVybiBQcm9iZSBXb3JrPworCitXaGVuIHlvdSBjYWxsIHJlZ2lzdGVyX2tyZXRwcm9iZSgpLCBLcHJvYmVzIGVzdGFibGlzaGVzIGEga3Byb2JlIGF0Cit0aGUgZW50cnkgdG8gdGhlIGZ1bmN0aW9uLiAgV2hlbiB0aGUgcHJvYmVkIGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgdGhpcworcHJvYmUgaXMgaGl0LCBLcHJvYmVzIHNhdmVzIGEgY29weSBvZiB0aGUgcmV0dXJuIGFkZHJlc3MsIGFuZCByZXBsYWNlcwordGhlIHJldHVybiBhZGRyZXNzIHdpdGggdGhlIGFkZHJlc3Mgb2YgYSAidHJhbXBvbGluZS4iICBUaGUgdHJhbXBvbGluZQoraXMgYW4gYXJiaXRyYXJ5IHBpZWNlIG9mIGNvZGUgLS0gdHlwaWNhbGx5IGp1c3QgYSBub3AgaW5zdHJ1Y3Rpb24uCitBdCBib290IHRpbWUsIEtwcm9iZXMgcmVnaXN0ZXJzIGEga3Byb2JlIGF0IHRoZSB0cmFtcG9saW5lLgorCitXaGVuIHRoZSBwcm9iZWQgZnVuY3Rpb24gZXhlY3V0ZXMgaXRzIHJldHVybiBpbnN0cnVjdGlvbiwgY29udHJvbAorcGFzc2VzIHRvIHRoZSB0cmFtcG9saW5lIGFuZCB0aGF0IHByb2JlIGlzIGhpdC4gIEtwcm9iZXMnIHRyYW1wb2xpbmUKK2hhbmRsZXIgY2FsbHMgdGhlIHVzZXItc3BlY2lmaWVkIHJldHVybiBoYW5kbGVyIGFzc29jaWF0ZWQgd2l0aCB0aGUKK2tyZXRwcm9iZSwgdGhlbiBzZXRzIHRoZSBzYXZlZCBpbnN0cnVjdGlvbiBwb2ludGVyIHRvIHRoZSBzYXZlZCByZXR1cm4KK2FkZHJlc3MsIGFuZCB0aGF0J3Mgd2hlcmUgZXhlY3V0aW9uIHJlc3VtZXMgdXBvbiByZXR1cm4gZnJvbSB0aGUgdHJhcC4KKworV2hpbGUgdGhlIHByb2JlZCBmdW5jdGlvbiBpcyBleGVjdXRpbmcsIGl0cyByZXR1cm4gYWRkcmVzcyBpcworc3RvcmVkIGluIGFuIG9iamVjdCBvZiB0eXBlIGtyZXRwcm9iZV9pbnN0YW5jZS4gIEJlZm9yZSBjYWxsaW5nCityZWdpc3Rlcl9rcmV0cHJvYmUoKSwgdGhlIHVzZXIgc2V0cyB0aGUgbWF4YWN0aXZlIGZpZWxkIG9mIHRoZQora3JldHByb2JlIHN0cnVjdCB0byBzcGVjaWZ5IGhvdyBtYW55IGluc3RhbmNlcyBvZiB0aGUgc3BlY2lmaWVkCitmdW5jdGlvbiBjYW4gYmUgcHJvYmVkIHNpbXVsdGFuZW91c2x5LiAgcmVnaXN0ZXJfa3JldHByb2JlKCkKK3ByZS1hbGxvY2F0ZXMgdGhlIGluZGljYXRlZCBudW1iZXIgb2Yga3JldHByb2JlX2luc3RhbmNlIG9iamVjdHMuCisKK0ZvciBleGFtcGxlLCBpZiB0aGUgZnVuY3Rpb24gaXMgbm9uLXJlY3Vyc2l2ZSBhbmQgaXMgY2FsbGVkIHdpdGggYQorc3BpbmxvY2sgaGVsZCwgbWF4YWN0aXZlID0gMSBzaG91bGQgYmUgZW5vdWdoLiAgSWYgdGhlIGZ1bmN0aW9uIGlzCitub24tcmVjdXJzaXZlIGFuZCBjYW4gbmV2ZXIgcmVsaW5xdWlzaCB0aGUgQ1BVIChlLmcuLCB2aWEgYSBzZW1hcGhvcmUKK29yIHByZWVtcHRpb24pLCBOUl9DUFVTIHNob3VsZCBiZSBlbm91Z2guICBJZiBtYXhhY3RpdmUgPD0gMCwgaXQgaXMKK3NldCB0byBhIGRlZmF1bHQgdmFsdWUuICBJZiBDT05GSUdfUFJFRU1QVCBpcyBlbmFibGVkLCB0aGUgZGVmYXVsdAoraXMgbWF4KDEwLCAyKk5SX0NQVVMpLiAgT3RoZXJ3aXNlLCB0aGUgZGVmYXVsdCBpcyBOUl9DUFVTLgorCitJdCdzIG5vdCBhIGRpc2FzdGVyIGlmIHlvdSBzZXQgbWF4YWN0aXZlIHRvbyBsb3c7IHlvdSdsbCBqdXN0IG1pc3MKK3NvbWUgcHJvYmVzLiAgSW4gdGhlIGtyZXRwcm9iZSBzdHJ1Y3QsIHRoZSBubWlzc2VkIGZpZWxkIGlzIHNldCB0bworemVybyB3aGVuIHRoZSByZXR1cm4gcHJvYmUgaXMgcmVnaXN0ZXJlZCwgYW5kIGlzIGluY3JlbWVudGVkIGV2ZXJ5Cit0aW1lIHRoZSBwcm9iZWQgZnVuY3Rpb24gaXMgZW50ZXJlZCBidXQgdGhlcmUgaXMgbm8ga3JldHByb2JlX2luc3RhbmNlCitvYmplY3QgYXZhaWxhYmxlIGZvciBlc3RhYmxpc2hpbmcgdGhlIHJldHVybiBwcm9iZS4KKworMS4zLjIgS3JldHByb2JlIGVudHJ5LWhhbmRsZXIKKworS3JldHByb2JlcyBhbHNvIHByb3ZpZGVzIGFuIG9wdGlvbmFsIHVzZXItc3BlY2lmaWVkIGhhbmRsZXIgd2hpY2ggcnVucworb24gZnVuY3Rpb24gZW50cnkuIFRoaXMgaGFuZGxlciBpcyBzcGVjaWZpZWQgYnkgc2V0dGluZyB0aGUgZW50cnlfaGFuZGxlcgorZmllbGQgb2YgdGhlIGtyZXRwcm9iZSBzdHJ1Y3QuIFdoZW5ldmVyIHRoZSBrcHJvYmUgcGxhY2VkIGJ5IGtyZXRwcm9iZSBhdCB0aGUKK2Z1bmN0aW9uIGVudHJ5IGlzIGhpdCwgdGhlIHVzZXItZGVmaW5lZCBlbnRyeV9oYW5kbGVyLCBpZiBhbnksIGlzIGludm9rZWQuCitJZiB0aGUgZW50cnlfaGFuZGxlciByZXR1cm5zIDAgKHN1Y2Nlc3MpIHRoZW4gYSBjb3JyZXNwb25kaW5nIHJldHVybiBoYW5kbGVyCitpcyBndWFyYW50ZWVkIHRvIGJlIGNhbGxlZCB1cG9uIGZ1bmN0aW9uIHJldHVybi4gSWYgdGhlIGVudHJ5X2hhbmRsZXIKK3JldHVybnMgYSBub24temVybyBlcnJvciB0aGVuIEtwcm9iZXMgbGVhdmVzIHRoZSByZXR1cm4gYWRkcmVzcyBhcyBpcywgYW5kCit0aGUga3JldHByb2JlIGhhcyBubyBmdXJ0aGVyIGVmZmVjdCBmb3IgdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGluc3RhbmNlLgorCitNdWx0aXBsZSBlbnRyeSBhbmQgcmV0dXJuIGhhbmRsZXIgaW52b2NhdGlvbnMgYXJlIG1hdGNoZWQgdXNpbmcgdGhlIHVuaXF1ZQora3JldHByb2JlX2luc3RhbmNlIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlbS4gQWRkaXRpb25hbGx5LCBhIHVzZXIKK21heSBhbHNvIHNwZWNpZnkgcGVyIHJldHVybi1pbnN0YW5jZSBwcml2YXRlIGRhdGEgdG8gYmUgcGFydCBvZiBlYWNoCitrcmV0cHJvYmVfaW5zdGFuY2Ugb2JqZWN0LiBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIHdoZW4gc2hhcmluZyBwcml2YXRlCitkYXRhIGJldHdlZW4gY29ycmVzcG9uZGluZyB1c2VyIGVudHJ5IGFuZCByZXR1cm4gaGFuZGxlcnMuIFRoZSBzaXplIG9mIGVhY2gKK3ByaXZhdGUgZGF0YSBvYmplY3QgY2FuIGJlIHNwZWNpZmllZCBhdCBrcmV0cHJvYmUgcmVnaXN0cmF0aW9uIHRpbWUgYnkKK3NldHRpbmcgdGhlIGRhdGFfc2l6ZSBmaWVsZCBvZiB0aGUga3JldHByb2JlIHN0cnVjdC4gVGhpcyBkYXRhIGNhbiBiZQorYWNjZXNzZWQgdGhyb3VnaCB0aGUgZGF0YSBmaWVsZCBvZiBlYWNoIGtyZXRwcm9iZV9pbnN0YW5jZSBvYmplY3QuCisKK0luIGNhc2UgcHJvYmVkIGZ1bmN0aW9uIGlzIGVudGVyZWQgYnV0IHRoZXJlIGlzIG5vIGtyZXRwcm9iZV9pbnN0YW5jZQorb2JqZWN0IGF2YWlsYWJsZSwgdGhlbiBpbiBhZGRpdGlvbiB0byBpbmNyZW1lbnRpbmcgdGhlIG5taXNzZWQgY291bnQsCit0aGUgdXNlciBlbnRyeV9oYW5kbGVyIGludm9jYXRpb24gaXMgYWxzbyBza2lwcGVkLgorCisxLjQgSG93IERvZXMgSnVtcCBPcHRpbWl6YXRpb24gV29yaz8KKworSWYgeW91ciBrZXJuZWwgaXMgYnVpbHQgd2l0aCBDT05GSUdfT1BUUFJPQkVTPXkgKGN1cnJlbnRseSB0aGlzIGZsYWcKK2lzIGF1dG9tYXRpY2FsbHkgc2V0ICd5JyBvbiB4ODYveDg2LTY0LCBub24tcHJlZW1wdGl2ZSBrZXJuZWwpIGFuZAordGhlICJkZWJ1Zy5rcHJvYmVzX29wdGltaXphdGlvbiIga2VybmVsIHBhcmFtZXRlciBpcyBzZXQgdG8gMSAoc2VlCitzeXNjdGwoOCkpLCBLcHJvYmVzIHRyaWVzIHRvIHJlZHVjZSBwcm9iZS1oaXQgb3ZlcmhlYWQgYnkgdXNpbmcgYSBqdW1wCitpbnN0cnVjdGlvbiBpbnN0ZWFkIG9mIGEgYnJlYWtwb2ludCBpbnN0cnVjdGlvbiBhdCBlYWNoIHByb2JlcG9pbnQuCisKKzEuNC4xIEluaXQgYSBLcHJvYmUKKworV2hlbiBhIHByb2JlIGlzIHJlZ2lzdGVyZWQsIGJlZm9yZSBhdHRlbXB0aW5nIHRoaXMgb3B0aW1pemF0aW9uLAorS3Byb2JlcyBpbnNlcnRzIGFuIG9yZGluYXJ5LCBicmVha3BvaW50LWJhc2VkIGtwcm9iZSBhdCB0aGUgc3BlY2lmaWVkCithZGRyZXNzLiBTbywgZXZlbiBpZiBpdCdzIG5vdCBwb3NzaWJsZSB0byBvcHRpbWl6ZSB0aGlzIHBhcnRpY3VsYXIKK3Byb2JlcG9pbnQsIHRoZXJlJ2xsIGJlIGEgcHJvYmUgdGhlcmUuCisKKzEuNC4yIFNhZmV0eSBDaGVjaworCitCZWZvcmUgb3B0aW1pemluZyBhIHByb2JlLCBLcHJvYmVzIHBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgc2FmZXR5IGNoZWNrczoKKworLSBLcHJvYmVzIHZlcmlmaWVzIHRoYXQgdGhlIHJlZ2lvbiB0aGF0IHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlIGp1bXAKK2luc3RydWN0aW9uICh0aGUgIm9wdGltaXplZCByZWdpb24iKSBsaWVzIGVudGlyZWx5IHdpdGhpbiBvbmUgZnVuY3Rpb24uCisoQSBqdW1wIGluc3RydWN0aW9uIGlzIG11bHRpcGxlIGJ5dGVzLCBhbmQgc28gbWF5IG92ZXJsYXkgbXVsdGlwbGUKK2luc3RydWN0aW9ucy4pCisKKy0gS3Byb2JlcyBhbmFseXplcyB0aGUgZW50aXJlIGZ1bmN0aW9uIGFuZCB2ZXJpZmllcyB0aGF0IHRoZXJlIGlzIG5vCitqdW1wIGludG8gdGhlIG9wdGltaXplZCByZWdpb24uICBTcGVjaWZpY2FsbHk6CisgIC0gdGhlIGZ1bmN0aW9uIGNvbnRhaW5zIG5vIGluZGlyZWN0IGp1bXA7CisgIC0gdGhlIGZ1bmN0aW9uIGNvbnRhaW5zIG5vIGluc3RydWN0aW9uIHRoYXQgY2F1c2VzIGFuIGV4Y2VwdGlvbiAoc2luY2UKKyAgdGhlIGZpeHVwIGNvZGUgdHJpZ2dlcmVkIGJ5IHRoZSBleGNlcHRpb24gY291bGQganVtcCBiYWNrIGludG8gdGhlCisgIG9wdGltaXplZCByZWdpb24gLS0gS3Byb2JlcyBjaGVja3MgdGhlIGV4Y2VwdGlvbiB0YWJsZXMgdG8gdmVyaWZ5IHRoaXMpOworICBhbmQKKyAgLSB0aGVyZSBpcyBubyBuZWFyIGp1bXAgdG8gdGhlIG9wdGltaXplZCByZWdpb24gKG90aGVyIHRoYW4gdG8gdGhlIGZpcnN0CisgIGJ5dGUpLgorCistIEZvciBlYWNoIGluc3RydWN0aW9uIGluIHRoZSBvcHRpbWl6ZWQgcmVnaW9uLCBLcHJvYmVzIHZlcmlmaWVzIHRoYXQKK3RoZSBpbnN0cnVjdGlvbiBjYW4gYmUgZXhlY3V0ZWQgb3V0IG9mIGxpbmUuCisKKzEuNC4zIFByZXBhcmluZyBEZXRvdXIgQnVmZmVyCisKK05leHQsIEtwcm9iZXMgcHJlcGFyZXMgYSAiZGV0b3VyIiBidWZmZXIsIHdoaWNoIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcKK2luc3RydWN0aW9uIHNlcXVlbmNlOgorLSBjb2RlIHRvIHB1c2ggdGhlIENQVSdzIHJlZ2lzdGVycyAoZW11bGF0aW5nIGEgYnJlYWtwb2ludCB0cmFwKQorLSBhIGNhbGwgdG8gdGhlIHRyYW1wb2xpbmUgY29kZSB3aGljaCBjYWxscyB1c2VyJ3MgcHJvYmUgaGFuZGxlcnMuCistIGNvZGUgdG8gcmVzdG9yZSByZWdpc3RlcnMKKy0gdGhlIGluc3RydWN0aW9ucyBmcm9tIHRoZSBvcHRpbWl6ZWQgcmVnaW9uCistIGEganVtcCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBleGVjdXRpb24gcGF0aC4KKworMS40LjQgUHJlLW9wdGltaXphdGlvbgorCitBZnRlciBwcmVwYXJpbmcgdGhlIGRldG91ciBidWZmZXIsIEtwcm9iZXMgdmVyaWZpZXMgdGhhdCBub25lIG9mIHRoZQorZm9sbG93aW5nIHNpdHVhdGlvbnMgZXhpc3Q6CistIFRoZSBwcm9iZSBoYXMgZWl0aGVyIGEgYnJlYWtfaGFuZGxlciAoaS5lLiwgaXQncyBhIGpwcm9iZSkgb3IgYQorcG9zdF9oYW5kbGVyLgorLSBPdGhlciBpbnN0cnVjdGlvbnMgaW4gdGhlIG9wdGltaXplZCByZWdpb24gYXJlIHByb2JlZC4KKy0gVGhlIHByb2JlIGlzIGRpc2FibGVkLgorSW4gYW55IG9mIHRoZSBhYm92ZSBjYXNlcywgS3Byb2JlcyB3b24ndCBzdGFydCBvcHRpbWl6aW5nIHRoZSBwcm9iZS4KK1NpbmNlIHRoZXNlIGFyZSB0ZW1wb3Jhcnkgc2l0dWF0aW9ucywgS3Byb2JlcyB0cmllcyB0byBzdGFydAorb3B0aW1pemluZyBpdCBhZ2FpbiBpZiB0aGUgc2l0dWF0aW9uIGlzIGNoYW5nZWQuCisKK0lmIHRoZSBrcHJvYmUgY2FuIGJlIG9wdGltaXplZCwgS3Byb2JlcyBlbnF1ZXVlcyB0aGUga3Byb2JlIHRvIGFuCitvcHRpbWl6aW5nIGxpc3QsIGFuZCBraWNrcyB0aGUga3Byb2JlLW9wdGltaXplciB3b3JrcXVldWUgdG8gb3B0aW1pemUKK2l0LiAgSWYgdGhlIHRvLWJlLW9wdGltaXplZCBwcm9iZXBvaW50IGlzIGhpdCBiZWZvcmUgYmVpbmcgb3B0aW1pemVkLAorS3Byb2JlcyByZXR1cm5zIGNvbnRyb2wgdG8gdGhlIG9yaWdpbmFsIGluc3RydWN0aW9uIHBhdGggYnkgc2V0dGluZwordGhlIENQVSdzIGluc3RydWN0aW9uIHBvaW50ZXIgdG8gdGhlIGNvcGllZCBjb2RlIGluIHRoZSBkZXRvdXIgYnVmZmVyCistLSB0aHVzIGF0IGxlYXN0IGF2b2lkaW5nIHRoZSBzaW5nbGUtc3RlcC4KKworMS40LjUgT3B0aW1pemF0aW9uCisKK1RoZSBLcHJvYmUtb3B0aW1pemVyIGRvZXNuJ3QgaW5zZXJ0IHRoZSBqdW1wIGluc3RydWN0aW9uIGltbWVkaWF0ZWx5OworcmF0aGVyLCBpdCBjYWxscyBzeW5jaHJvbml6ZV9zY2hlZCgpIGZvciBzYWZldHkgZmlyc3QsIGJlY2F1c2UgaXQncworcG9zc2libGUgZm9yIGEgQ1BVIHRvIGJlIGludGVycnVwdGVkIGluIHRoZSBtaWRkbGUgb2YgZXhlY3V0aW5nIHRoZQorb3B0aW1pemVkIHJlZ2lvbigqKS4gIEFzIHlvdSBrbm93LCBzeW5jaHJvbml6ZV9zY2hlZCgpIGNhbiBlbnN1cmUKK3RoYXQgYWxsIGludGVycnVwdGlvbnMgdGhhdCB3ZXJlIGFjdGl2ZSB3aGVuIHN5bmNocm9uaXplX3NjaGVkKCkKK3dhcyBjYWxsZWQgYXJlIGRvbmUsIGJ1dCBvbmx5IGlmIENPTkZJR19QUkVFTVBUPW4uICBTbywgdGhpcyB2ZXJzaW9uCitvZiBrcHJvYmUgb3B0aW1pemF0aW9uIHN1cHBvcnRzIG9ubHkga2VybmVscyB3aXRoIENPTkZJR19QUkVFTVBUPW4uKCoqKQorCitBZnRlciB0aGF0LCB0aGUgS3Byb2JlLW9wdGltaXplciBjYWxscyBzdG9wX21hY2hpbmUoKSB0byByZXBsYWNlCit0aGUgb3B0aW1pemVkIHJlZ2lvbiB3aXRoIGEganVtcCBpbnN0cnVjdGlvbiB0byB0aGUgZGV0b3VyIGJ1ZmZlciwKK3VzaW5nIHRleHRfcG9rZV9zbXAoKS4KKworMS40LjYgVW5vcHRpbWl6YXRpb24KKworV2hlbiBhbiBvcHRpbWl6ZWQga3Byb2JlIGlzIHVucmVnaXN0ZXJlZCwgZGlzYWJsZWQsIG9yIGJsb2NrZWQgYnkKK2Fub3RoZXIga3Byb2JlLCBpdCB3aWxsIGJlIHVub3B0aW1pemVkLiAgSWYgdGhpcyBoYXBwZW5zIGJlZm9yZQordGhlIG9wdGltaXphdGlvbiBpcyBjb21wbGV0ZSwgdGhlIGtwcm9iZSBpcyBqdXN0IGRlcXVldWVkIGZyb20gdGhlCitvcHRpbWl6ZWQgbGlzdC4gIElmIHRoZSBvcHRpbWl6YXRpb24gaGFzIGJlZW4gZG9uZSwgdGhlIGp1bXAgaXMKK3JlcGxhY2VkIHdpdGggdGhlIG9yaWdpbmFsIGNvZGUgKGV4Y2VwdCBmb3IgYW4gaW50MyBicmVha3BvaW50IGluCit0aGUgZmlyc3QgYnl0ZSkgYnkgdXNpbmcgdGV4dF9wb2tlX3NtcCgpLgorCisoKilQbGVhc2UgaW1hZ2luZSB0aGF0IHRoZSAybmQgaW5zdHJ1Y3Rpb24gaXMgaW50ZXJydXB0ZWQgYW5kIHRoZW4KK3RoZSBvcHRpbWl6ZXIgcmVwbGFjZXMgdGhlIDJuZCBpbnN0cnVjdGlvbiB3aXRoIHRoZSBqdW1wICphZGRyZXNzKgord2hpbGUgdGhlIGludGVycnVwdCBoYW5kbGVyIGlzIHJ1bm5pbmcuIFdoZW4gdGhlIGludGVycnVwdAorcmV0dXJucyB0byBvcmlnaW5hbCBhZGRyZXNzLCB0aGVyZSBpcyBubyB2YWxpZCBpbnN0cnVjdGlvbiwKK2FuZCBpdCBjYXVzZXMgYW4gdW5leHBlY3RlZCByZXN1bHQuCisKKygqKilUaGlzIG9wdGltaXphdGlvbi1zYWZldHkgY2hlY2tpbmcgbWF5IGJlIHJlcGxhY2VkIHdpdGggdGhlCitzdG9wLW1hY2hpbmUgbWV0aG9kIHRoYXQga3NwbGljZSB1c2VzIGZvciBzdXBwb3J0aW5nIGEgQ09ORklHX1BSRUVNUFQ9eQora2VybmVsLgorCitOT1RFIGZvciBnZWVrczoKK1RoZSBqdW1wIG9wdGltaXphdGlvbiBjaGFuZ2VzIHRoZSBrcHJvYmUncyBwcmVfaGFuZGxlciBiZWhhdmlvci4KK1dpdGhvdXQgb3B0aW1pemF0aW9uLCB0aGUgcHJlX2hhbmRsZXIgY2FuIGNoYW5nZSB0aGUga2VybmVsJ3MgZXhlY3V0aW9uCitwYXRoIGJ5IGNoYW5naW5nIHJlZ3MtPmlwIGFuZCByZXR1cm5pbmcgMS4gIEhvd2V2ZXIsIHdoZW4gdGhlIHByb2JlCitpcyBvcHRpbWl6ZWQsIHRoYXQgbW9kaWZpY2F0aW9uIGlzIGlnbm9yZWQuICBUaHVzLCBpZiB5b3Ugd2FudCB0bwordHdlYWsgdGhlIGtlcm5lbCdzIGV4ZWN1dGlvbiBwYXRoLCB5b3UgbmVlZCB0byBzdXBwcmVzcyBvcHRpbWl6YXRpb24sCit1c2luZyBvbmUgb2YgdGhlIGZvbGxvd2luZyB0ZWNobmlxdWVzOgorLSBTcGVjaWZ5IGFuIGVtcHR5IGZ1bmN0aW9uIGZvciB0aGUga3Byb2JlJ3MgcG9zdF9oYW5kbGVyIG9yIGJyZWFrX2hhbmRsZXIuCisgb3IKKy0gRXhlY3V0ZSAnc3lzY3RsIC13IGRlYnVnLmtwcm9iZXNfb3B0aW1pemF0aW9uPW4nCisKKzEuNSBCbGFja2xpc3QKKworS3Byb2JlcyBjYW4gcHJvYmUgbW9zdCBvZiB0aGUga2VybmVsIGV4Y2VwdCBpdHNlbGYuIFRoaXMgbWVhbnMKK3RoYXQgdGhlcmUgYXJlIHNvbWUgZnVuY3Rpb25zIHdoZXJlIGtwcm9iZXMgY2Fubm90IHByb2JlLiBQcm9iaW5nCisodHJhcHBpbmcpIHN1Y2ggZnVuY3Rpb25zIGNhbiBjYXVzZSBhIHJlY3Vyc2l2ZSB0cmFwIChlLmcuIGRvdWJsZQorZmF1bHQpIG9yIHRoZSBuZXN0ZWQgcHJvYmUgaGFuZGxlciBtYXkgbmV2ZXIgYmUgY2FsbGVkLgorS3Byb2JlcyBtYW5hZ2VzIHN1Y2ggZnVuY3Rpb25zIGFzIGEgYmxhY2tsaXN0LgorSWYgeW91IHdhbnQgdG8gYWRkIGEgZnVuY3Rpb24gaW50byB0aGUgYmxhY2tsaXN0LCB5b3UganVzdCBuZWVkCit0byAoMSkgaW5jbHVkZSBsaW51eC9rcHJvYmVzLmggYW5kICgyKSB1c2UgTk9LUFJPQkVfU1lNQk9MKCkgbWFjcm8KK3RvIHNwZWNpZnkgYSBibGFja2xpc3RlZCBmdW5jdGlvbi4KK0twcm9iZXMgY2hlY2tzIHRoZSBnaXZlbiBwcm9iZSBhZGRyZXNzIGFnYWluc3QgdGhlIGJsYWNrbGlzdCBhbmQKK3JlamVjdHMgcmVnaXN0ZXJpbmcgaXQsIGlmIHRoZSBnaXZlbiBhZGRyZXNzIGlzIGluIHRoZSBibGFja2xpc3QuCisKKzIuIEFyY2hpdGVjdHVyZXMgU3VwcG9ydGVkCisKK0twcm9iZXMsIGpwcm9iZXMsIGFuZCByZXR1cm4gcHJvYmVzIGFyZSBpbXBsZW1lbnRlZCBvbiB0aGUgZm9sbG93aW5nCithcmNoaXRlY3R1cmVzOgorCistIGkzODYgKFN1cHBvcnRzIGp1bXAgb3B0aW1pemF0aW9uKQorLSB4ODZfNjQgKEFNRC02NCwgRU02NFQpIChTdXBwb3J0cyBqdW1wIG9wdGltaXphdGlvbikKKy0gcHBjNjQKKy0gaWE2NCAoRG9lcyBub3Qgc3VwcG9ydCBwcm9iZXMgb24gaW5zdHJ1Y3Rpb24gc2xvdDEuKQorLSBzcGFyYzY0IChSZXR1cm4gcHJvYmVzIG5vdCB5ZXQgaW1wbGVtZW50ZWQuKQorLSBhcm0KKy0gcHBjCistIG1pcHMKKy0gczM5MAorCiszLiBDb25maWd1cmluZyBLcHJvYmVzCisKK1doZW4gY29uZmlndXJpbmcgdGhlIGtlcm5lbCB1c2luZyBtYWtlIG1lbnVjb25maWcveGNvbmZpZy9vbGRjb25maWcsCitlbnN1cmUgdGhhdCBDT05GSUdfS1BST0JFUyBpcyBzZXQgdG8gInkiLiBVbmRlciAiR2VuZXJhbCBzZXR1cCIsIGxvb2sKK2ZvciAiS3Byb2JlcyIuCisKK1NvIHRoYXQgeW91IGNhbiBsb2FkIGFuZCB1bmxvYWQgS3Byb2Jlcy1iYXNlZCBpbnN0cnVtZW50YXRpb24gbW9kdWxlcywKK21ha2Ugc3VyZSAiTG9hZGFibGUgbW9kdWxlIHN1cHBvcnQiIChDT05GSUdfTU9EVUxFUykgYW5kICJNb2R1bGUKK3VubG9hZGluZyIgKENPTkZJR19NT0RVTEVfVU5MT0FEKSBhcmUgc2V0IHRvICJ5Ii4KKworQWxzbyBtYWtlIHN1cmUgdGhhdCBDT05GSUdfS0FMTFNZTVMgYW5kIHBlcmhhcHMgZXZlbiBDT05GSUdfS0FMTFNZTVNfQUxMCithcmUgc2V0IHRvICJ5Iiwgc2luY2Uga2FsbHN5bXNfbG9va3VwX25hbWUoKSBpcyB1c2VkIGJ5IHRoZSBpbi1rZXJuZWwKK2twcm9iZSBhZGRyZXNzIHJlc29sdXRpb24gY29kZS4KKworSWYgeW91IG5lZWQgdG8gaW5zZXJ0IGEgcHJvYmUgaW4gdGhlIG1pZGRsZSBvZiBhIGZ1bmN0aW9uLCB5b3UgbWF5IGZpbmQKK2l0IHVzZWZ1bCB0byAiQ29tcGlsZSB0aGUga2VybmVsIHdpdGggZGVidWcgaW5mbyIgKENPTkZJR19ERUJVR19JTkZPKSwKK3NvIHlvdSBjYW4gdXNlICJvYmpkdW1wIC1kIC1sIHZtbGludXgiIHRvIHNlZSB0aGUgc291cmNlLXRvLW9iamVjdAorY29kZSBtYXBwaW5nLgorCis0LiBBUEkgUmVmZXJlbmNlCisKK1RoZSBLcHJvYmVzIEFQSSBpbmNsdWRlcyBhICJyZWdpc3RlciIgZnVuY3Rpb24gYW5kIGFuICJ1bnJlZ2lzdGVyIgorZnVuY3Rpb24gZm9yIGVhY2ggdHlwZSBvZiBwcm9iZS4gVGhlIEFQSSBhbHNvIGluY2x1ZGVzICJyZWdpc3Rlcl8qcHJvYmVzIgorYW5kICJ1bnJlZ2lzdGVyXypwcm9iZXMiIGZ1bmN0aW9ucyBmb3IgKHVuKXJlZ2lzdGVyaW5nIGFycmF5cyBvZiBwcm9iZXMuCitIZXJlIGFyZSB0ZXJzZSwgbWluaS1tYW4tcGFnZSBzcGVjaWZpY2F0aW9ucyBmb3IgdGhlc2UgZnVuY3Rpb25zIGFuZAordGhlIGFzc29jaWF0ZWQgcHJvYmUgaGFuZGxlcnMgdGhhdCB5b3UnbGwgd3JpdGUuIFNlZSB0aGUgZmlsZXMgaW4gdGhlCitzYW1wbGVzL2twcm9iZXMvIHN1Yi1kaXJlY3RvcnkgZm9yIGV4YW1wbGVzLgorCis0LjEgcmVnaXN0ZXJfa3Byb2JlCisKKyNpbmNsdWRlIDxsaW51eC9rcHJvYmVzLmg+CitpbnQgcmVnaXN0ZXJfa3Byb2JlKHN0cnVjdCBrcHJvYmUgKmtwKTsKKworU2V0cyBhIGJyZWFrcG9pbnQgYXQgdGhlIGFkZHJlc3Mga3AtPmFkZHIuICBXaGVuIHRoZSBicmVha3BvaW50IGlzCitoaXQsIEtwcm9iZXMgY2FsbHMga3AtPnByZV9oYW5kbGVyLiAgQWZ0ZXIgdGhlIHByb2JlZCBpbnN0cnVjdGlvbgoraXMgc2luZ2xlLXN0ZXBwZWQsIEtwcm9iZSBjYWxscyBrcC0+cG9zdF9oYW5kbGVyLiAgSWYgYSBmYXVsdAorb2NjdXJzIGR1cmluZyBleGVjdXRpb24gb2Yga3AtPnByZV9oYW5kbGVyIG9yIGtwLT5wb3N0X2hhbmRsZXIsCitvciBkdXJpbmcgc2luZ2xlLXN0ZXBwaW5nIG9mIHRoZSBwcm9iZWQgaW5zdHJ1Y3Rpb24sIEtwcm9iZXMgY2FsbHMKK2twLT5mYXVsdF9oYW5kbGVyLiAgQW55IG9yIGFsbCBoYW5kbGVycyBjYW4gYmUgTlVMTC4gSWYga3AtPmZsYWdzCitpcyBzZXQgS1BST0JFX0ZMQUdfRElTQUJMRUQsIHRoYXQga3Agd2lsbCBiZSByZWdpc3RlcmVkIGJ1dCBkaXNhYmxlZCwKK3NvLCBpdHMgaGFuZGxlcnMgYXJlbid0IGhpdCB1bnRpbCBjYWxsaW5nIGVuYWJsZV9rcHJvYmUoa3ApLgorCitOT1RFOgorMS4gV2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSAic3ltYm9sX25hbWUiIGZpZWxkIHRvIHN0cnVjdCBrcHJvYmUsCit0aGUgcHJvYmVwb2ludCBhZGRyZXNzIHJlc29sdXRpb24gd2lsbCBub3cgYmUgdGFrZW4gY2FyZSBvZiBieSB0aGUga2VybmVsLgorVGhlIGZvbGxvd2luZyB3aWxsIG5vdyB3b3JrOgorCisJa3Auc3ltYm9sX25hbWUgPSAic3ltYm9sX25hbWUiOworCisoNjQtYml0IHBvd2VycGMgaW50cmljYWNpZXMgc3VjaCBhcyBmdW5jdGlvbiBkZXNjcmlwdG9ycyBhcmUgaGFuZGxlZAordHJhbnNwYXJlbnRseSkKKworMi4gVXNlIHRoZSAib2Zmc2V0IiBmaWVsZCBvZiBzdHJ1Y3Qga3Byb2JlIGlmIHRoZSBvZmZzZXQgaW50byB0aGUgc3ltYm9sCit0byBpbnN0YWxsIGEgcHJvYmVwb2ludCBpcyBrbm93bi4gVGhpcyBmaWVsZCBpcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUKK3Byb2JlcG9pbnQuCisKKzMuIFNwZWNpZnkgZWl0aGVyIHRoZSBrcHJvYmUgInN5bWJvbF9uYW1lIiBPUiB0aGUgImFkZHIiLiBJZiBib3RoIGFyZQorc3BlY2lmaWVkLCBrcHJvYmUgcmVnaXN0cmF0aW9uIHdpbGwgZmFpbCB3aXRoIC1FSU5WQUwuCisKKzQuIFdpdGggQ0lTQyBhcmNoaXRlY3R1cmVzIChzdWNoIGFzIGkzODYgYW5kIHg4Nl82NCksIHRoZSBrcHJvYmVzIGNvZGUKK2RvZXMgbm90IHZhbGlkYXRlIGlmIHRoZSBrcHJvYmUuYWRkciBpcyBhdCBhbiBpbnN0cnVjdGlvbiBib3VuZGFyeS4KK1VzZSAib2Zmc2V0IiB3aXRoIGNhdXRpb24uCisKK3JlZ2lzdGVyX2twcm9iZSgpIHJldHVybnMgMCBvbiBzdWNjZXNzLCBvciBhIG5lZ2F0aXZlIGVycm5vIG90aGVyd2lzZS4KKworVXNlcidzIHByZS1oYW5kbGVyIChrcC0+cHJlX2hhbmRsZXIpOgorI2luY2x1ZGUgPGxpbnV4L2twcm9iZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9wdHJhY2UuaD4KK2ludCBwcmVfaGFuZGxlcihzdHJ1Y3Qga3Byb2JlICpwLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7CisKK0NhbGxlZCB3aXRoIHAgcG9pbnRpbmcgdG8gdGhlIGtwcm9iZSBhc3NvY2lhdGVkIHdpdGggdGhlIGJyZWFrcG9pbnQsCithbmQgcmVncyBwb2ludGluZyB0byB0aGUgc3RydWN0IGNvbnRhaW5pbmcgdGhlIHJlZ2lzdGVycyBzYXZlZCB3aGVuCit0aGUgYnJlYWtwb2ludCB3YXMgaGl0LiAgUmV0dXJuIDAgaGVyZSB1bmxlc3MgeW91J3JlIGEgS3Byb2JlcyBnZWVrLgorCitVc2VyJ3MgcG9zdC1oYW5kbGVyIChrcC0+cG9zdF9oYW5kbGVyKToKKyNpbmNsdWRlIDxsaW51eC9rcHJvYmVzLmg+CisjaW5jbHVkZSA8bGludXgvcHRyYWNlLmg+Cit2b2lkIHBvc3RfaGFuZGxlcihzdHJ1Y3Qga3Byb2JlICpwLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywKKwl1bnNpZ25lZCBsb25nIGZsYWdzKTsKKworcCBhbmQgcmVncyBhcmUgYXMgZGVzY3JpYmVkIGZvciB0aGUgcHJlX2hhbmRsZXIuICBmbGFncyBhbHdheXMgc2VlbXMKK3RvIGJlIHplcm8uCisKK1VzZXIncyBmYXVsdC1oYW5kbGVyIChrcC0+ZmF1bHRfaGFuZGxlcik6CisjaW5jbHVkZSA8bGludXgva3Byb2Jlcy5oPgorI2luY2x1ZGUgPGxpbnV4L3B0cmFjZS5oPgoraW50IGZhdWx0X2hhbmRsZXIoc3RydWN0IGtwcm9iZSAqcCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGludCB0cmFwbnIpOworCitwIGFuZCByZWdzIGFyZSBhcyBkZXNjcmliZWQgZm9yIHRoZSBwcmVfaGFuZGxlci4gIHRyYXBuciBpcyB0aGUKK2FyY2hpdGVjdHVyZS1zcGVjaWZpYyB0cmFwIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhlIGZhdWx0IChlLmcuLAorb24gaTM4NiwgMTMgZm9yIGEgZ2VuZXJhbCBwcm90ZWN0aW9uIGZhdWx0IG9yIDE0IGZvciBhIHBhZ2UgZmF1bHQpLgorUmV0dXJucyAxIGlmIGl0IHN1Y2Nlc3NmdWxseSBoYW5kbGVkIHRoZSBleGNlcHRpb24uCisKKzQuMiByZWdpc3Rlcl9qcHJvYmUKKworI2luY2x1ZGUgPGxpbnV4L2twcm9iZXMuaD4KK2ludCByZWdpc3Rlcl9qcHJvYmUoc3RydWN0IGpwcm9iZSAqanApCisKK1NldHMgYSBicmVha3BvaW50IGF0IHRoZSBhZGRyZXNzIGpwLT5rcC5hZGRyLCB3aGljaCBtdXN0IGJlIHRoZSBhZGRyZXNzCitvZiB0aGUgZmlyc3QgaW5zdHJ1Y3Rpb24gb2YgYSBmdW5jdGlvbi4gIFdoZW4gdGhlIGJyZWFrcG9pbnQgaXMgaGl0LAorS3Byb2JlcyBydW5zIHRoZSBoYW5kbGVyIHdob3NlIGFkZHJlc3MgaXMganAtPmVudHJ5LgorCitUaGUgaGFuZGxlciBzaG91bGQgaGF2ZSB0aGUgc2FtZSBhcmcgbGlzdCBhbmQgcmV0dXJuIHR5cGUgYXMgdGhlIHByb2JlZAorZnVuY3Rpb247IGFuZCBqdXN0IGJlZm9yZSBpdCByZXR1cm5zLCBpdCBtdXN0IGNhbGwganByb2JlX3JldHVybigpLgorKFRoZSBoYW5kbGVyIG5ldmVyIGFjdHVhbGx5IHJldHVybnMsIHNpbmNlIGpwcm9iZV9yZXR1cm4oKSByZXR1cm5zCitjb250cm9sIHRvIEtwcm9iZXMuKSAgSWYgdGhlIHByb2JlZCBmdW5jdGlvbiBpcyBkZWNsYXJlZCBhc21saW5rYWdlCitvciBhbnl0aGluZyBlbHNlIHRoYXQgYWZmZWN0cyBob3cgYXJncyBhcmUgcGFzc2VkLCB0aGUgaGFuZGxlcidzCitkZWNsYXJhdGlvbiBtdXN0IG1hdGNoLgorCityZWdpc3Rlcl9qcHJvYmUoKSByZXR1cm5zIDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJubyBvdGhlcndpc2UuCisKKzQuMyByZWdpc3Rlcl9rcmV0cHJvYmUKKworI2luY2x1ZGUgPGxpbnV4L2twcm9iZXMuaD4KK2ludCByZWdpc3Rlcl9rcmV0cHJvYmUoc3RydWN0IGtyZXRwcm9iZSAqcnApOworCitFc3RhYmxpc2hlcyBhIHJldHVybiBwcm9iZSBmb3IgdGhlIGZ1bmN0aW9uIHdob3NlIGFkZHJlc3MgaXMKK3JwLT5rcC5hZGRyLiAgV2hlbiB0aGF0IGZ1bmN0aW9uIHJldHVybnMsIEtwcm9iZXMgY2FsbHMgcnAtPmhhbmRsZXIuCitZb3UgbXVzdCBzZXQgcnAtPm1heGFjdGl2ZSBhcHByb3ByaWF0ZWx5IGJlZm9yZSB5b3UgY2FsbAorcmVnaXN0ZXJfa3JldHByb2JlKCk7IHNlZSAiSG93IERvZXMgYSBSZXR1cm4gUHJvYmUgV29yaz8iIGZvciBkZXRhaWxzLgorCityZWdpc3Rlcl9rcmV0cHJvYmUoKSByZXR1cm5zIDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJubworb3RoZXJ3aXNlLgorCitVc2VyJ3MgcmV0dXJuLXByb2JlIGhhbmRsZXIgKHJwLT5oYW5kbGVyKToKKyNpbmNsdWRlIDxsaW51eC9rcHJvYmVzLmg+CisjaW5jbHVkZSA8bGludXgvcHRyYWNlLmg+CitpbnQga3JldHByb2JlX2hhbmRsZXIoc3RydWN0IGtyZXRwcm9iZV9pbnN0YW5jZSAqcmksIHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKKworcmVncyBpcyBhcyBkZXNjcmliZWQgZm9yIGtwcm9iZS5wcmVfaGFuZGxlci4gIHJpIHBvaW50cyB0byB0aGUKK2tyZXRwcm9iZV9pbnN0YW5jZSBvYmplY3QsIG9mIHdoaWNoIHRoZSBmb2xsb3dpbmcgZmllbGRzIG1heSBiZQorb2YgaW50ZXJlc3Q6CistIHJldF9hZGRyOiB0aGUgcmV0dXJuIGFkZHJlc3MKKy0gcnA6IHBvaW50cyB0byB0aGUgY29ycmVzcG9uZGluZyBrcmV0cHJvYmUgb2JqZWN0CistIHRhc2s6IHBvaW50cyB0byB0aGUgY29ycmVzcG9uZGluZyB0YXNrIHN0cnVjdAorLSBkYXRhOiBwb2ludHMgdG8gcGVyIHJldHVybi1pbnN0YW5jZSBwcml2YXRlIGRhdGE7IHNlZSAiS3JldHByb2JlCisJZW50cnktaGFuZGxlciIgZm9yIGRldGFpbHMuCisKK1RoZSByZWdzX3JldHVybl92YWx1ZShyZWdzKSBtYWNybyBwcm92aWRlcyBhIHNpbXBsZSBhYnN0cmFjdGlvbiB0bworZXh0cmFjdCB0aGUgcmV0dXJuIHZhbHVlIGZyb20gdGhlIGFwcHJvcHJpYXRlIHJlZ2lzdGVyIGFzIGRlZmluZWQgYnkKK3RoZSBhcmNoaXRlY3R1cmUncyBBQkkuCisKK1RoZSBoYW5kbGVyJ3MgcmV0dXJuIHZhbHVlIGlzIGN1cnJlbnRseSBpZ25vcmVkLgorCis0LjQgdW5yZWdpc3Rlcl8qcHJvYmUKKworI2luY2x1ZGUgPGxpbnV4L2twcm9iZXMuaD4KK3ZvaWQgdW5yZWdpc3Rlcl9rcHJvYmUoc3RydWN0IGtwcm9iZSAqa3ApOwordm9pZCB1bnJlZ2lzdGVyX2pwcm9iZShzdHJ1Y3QganByb2JlICpqcCk7Cit2b2lkIHVucmVnaXN0ZXJfa3JldHByb2JlKHN0cnVjdCBrcmV0cHJvYmUgKnJwKTsKKworUmVtb3ZlcyB0aGUgc3BlY2lmaWVkIHByb2JlLiAgVGhlIHVucmVnaXN0ZXIgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZAorYXQgYW55IHRpbWUgYWZ0ZXIgdGhlIHByb2JlIGhhcyBiZWVuIHJlZ2lzdGVyZWQuCisKK05PVEU6CitJZiB0aGUgZnVuY3Rpb25zIGZpbmQgYW4gaW5jb3JyZWN0IHByb2JlIChleC4gYW4gdW5yZWdpc3RlcmVkIHByb2JlKSwKK3RoZXkgY2xlYXIgdGhlIGFkZHIgZmllbGQgb2YgdGhlIHByb2JlLgorCis0LjUgcmVnaXN0ZXJfKnByb2JlcworCisjaW5jbHVkZSA8bGludXgva3Byb2Jlcy5oPgoraW50IHJlZ2lzdGVyX2twcm9iZXMoc3RydWN0IGtwcm9iZSAqKmtwcywgaW50IG51bSk7CitpbnQgcmVnaXN0ZXJfa3JldHByb2JlcyhzdHJ1Y3Qga3JldHByb2JlICoqcnBzLCBpbnQgbnVtKTsKK2ludCByZWdpc3Rlcl9qcHJvYmVzKHN0cnVjdCBqcHJvYmUgKipqcHMsIGludCBudW0pOworCitSZWdpc3RlcnMgZWFjaCBvZiB0aGUgbnVtIHByb2JlcyBpbiB0aGUgc3BlY2lmaWVkIGFycmF5LiAgSWYgYW55CitlcnJvciBvY2N1cnMgZHVyaW5nIHJlZ2lzdHJhdGlvbiwgYWxsIHByb2JlcyBpbiB0aGUgYXJyYXksIHVwIHRvCit0aGUgYmFkIHByb2JlLCBhcmUgc2FmZWx5IHVucmVnaXN0ZXJlZCBiZWZvcmUgdGhlIHJlZ2lzdGVyXypwcm9iZXMKK2Z1bmN0aW9uIHJldHVybnMuCistIGtwcy9ycHMvanBzOiBhbiBhcnJheSBvZiBwb2ludGVycyB0byAqcHJvYmUgZGF0YSBzdHJ1Y3R1cmVzCistIG51bTogdGhlIG51bWJlciBvZiB0aGUgYXJyYXkgZW50cmllcy4KKworTk9URToKK1lvdSBoYXZlIHRvIGFsbG9jYXRlKG9yIGRlZmluZSkgYW4gYXJyYXkgb2YgcG9pbnRlcnMgYW5kIHNldCBhbGwKK29mIHRoZSBhcnJheSBlbnRyaWVzIGJlZm9yZSB1c2luZyB0aGVzZSBmdW5jdGlvbnMuCisKKzQuNiB1bnJlZ2lzdGVyXypwcm9iZXMKKworI2luY2x1ZGUgPGxpbnV4L2twcm9iZXMuaD4KK3ZvaWQgdW5yZWdpc3Rlcl9rcHJvYmVzKHN0cnVjdCBrcHJvYmUgKiprcHMsIGludCBudW0pOwordm9pZCB1bnJlZ2lzdGVyX2tyZXRwcm9iZXMoc3RydWN0IGtyZXRwcm9iZSAqKnJwcywgaW50IG51bSk7Cit2b2lkIHVucmVnaXN0ZXJfanByb2JlcyhzdHJ1Y3QganByb2JlICoqanBzLCBpbnQgbnVtKTsKKworUmVtb3ZlcyBlYWNoIG9mIHRoZSBudW0gcHJvYmVzIGluIHRoZSBzcGVjaWZpZWQgYXJyYXkgYXQgb25jZS4KKworTk9URToKK0lmIHRoZSBmdW5jdGlvbnMgZmluZCBzb21lIGluY29ycmVjdCBwcm9iZXMgKGV4LiB1bnJlZ2lzdGVyZWQKK3Byb2JlcykgaW4gdGhlIHNwZWNpZmllZCBhcnJheSwgdGhleSBjbGVhciB0aGUgYWRkciBmaWVsZCBvZiB0aG9zZQoraW5jb3JyZWN0IHByb2Jlcy4gSG93ZXZlciwgb3RoZXIgcHJvYmVzIGluIHRoZSBhcnJheSBhcmUKK3VucmVnaXN0ZXJlZCBjb3JyZWN0bHkuCisKKzQuNyBkaXNhYmxlXypwcm9iZQorCisjaW5jbHVkZSA8bGludXgva3Byb2Jlcy5oPgoraW50IGRpc2FibGVfa3Byb2JlKHN0cnVjdCBrcHJvYmUgKmtwKTsKK2ludCBkaXNhYmxlX2tyZXRwcm9iZShzdHJ1Y3Qga3JldHByb2JlICpycCk7CitpbnQgZGlzYWJsZV9qcHJvYmUoc3RydWN0IGpwcm9iZSAqanApOworCitUZW1wb3JhcmlseSBkaXNhYmxlcyB0aGUgc3BlY2lmaWVkICpwcm9iZS4gWW91IGNhbiBlbmFibGUgaXQgYWdhaW4gYnkgdXNpbmcKK2VuYWJsZV8qcHJvYmUoKS4gWW91IG11c3Qgc3BlY2lmeSB0aGUgcHJvYmUgd2hpY2ggaGFzIGJlZW4gcmVnaXN0ZXJlZC4KKworNC44IGVuYWJsZV8qcHJvYmUKKworI2luY2x1ZGUgPGxpbnV4L2twcm9iZXMuaD4KK2ludCBlbmFibGVfa3Byb2JlKHN0cnVjdCBrcHJvYmUgKmtwKTsKK2ludCBlbmFibGVfa3JldHByb2JlKHN0cnVjdCBrcmV0cHJvYmUgKnJwKTsKK2ludCBlbmFibGVfanByb2JlKHN0cnVjdCBqcHJvYmUgKmpwKTsKKworRW5hYmxlcyAqcHJvYmUgd2hpY2ggaGFzIGJlZW4gZGlzYWJsZWQgYnkgZGlzYWJsZV8qcHJvYmUoKS4gWW91IG11c3Qgc3BlY2lmeQordGhlIHByb2JlIHdoaWNoIGhhcyBiZWVuIHJlZ2lzdGVyZWQuCisKKzUuIEtwcm9iZXMgRmVhdHVyZXMgYW5kIExpbWl0YXRpb25zCisKK0twcm9iZXMgYWxsb3dzIG11bHRpcGxlIHByb2JlcyBhdCB0aGUgc2FtZSBhZGRyZXNzLiAgQ3VycmVudGx5LAoraG93ZXZlciwgdGhlcmUgY2Fubm90IGJlIG11bHRpcGxlIGpwcm9iZXMgb24gdGhlIHNhbWUgZnVuY3Rpb24gYXQKK3RoZSBzYW1lIHRpbWUuICBBbHNvLCBhIHByb2JlcG9pbnQgZm9yIHdoaWNoIHRoZXJlIGlzIGEganByb2JlIG9yCithIHBvc3RfaGFuZGxlciBjYW5ub3QgYmUgb3B0aW1pemVkLiAgU28gaWYgeW91IGluc3RhbGwgYSBqcHJvYmUsCitvciBhIGtwcm9iZSB3aXRoIGEgcG9zdF9oYW5kbGVyLCBhdCBhbiBvcHRpbWl6ZWQgcHJvYmVwb2ludCwgdGhlCitwcm9iZXBvaW50IHdpbGwgYmUgdW5vcHRpbWl6ZWQgYXV0b21hdGljYWxseS4KKworSW4gZ2VuZXJhbCwgeW91IGNhbiBpbnN0YWxsIGEgcHJvYmUgYW55d2hlcmUgaW4gdGhlIGtlcm5lbC4KK0luIHBhcnRpY3VsYXIsIHlvdSBjYW4gcHJvYmUgaW50ZXJydXB0IGhhbmRsZXJzLiAgS25vd24gZXhjZXB0aW9ucworYXJlIGRpc2N1c3NlZCBpbiB0aGlzIHNlY3Rpb24uCisKK1RoZSByZWdpc3Rlcl8qcHJvYmUgZnVuY3Rpb25zIHdpbGwgcmV0dXJuIC1FSU5WQUwgaWYgeW91IGF0dGVtcHQKK3RvIGluc3RhbGwgYSBwcm9iZSBpbiB0aGUgY29kZSB0aGF0IGltcGxlbWVudHMgS3Byb2JlcyAobW9zdGx5CitrZXJuZWwva3Byb2Jlcy5jIGFuZCBhcmNoLyova2VybmVsL2twcm9iZXMuYywgYnV0IGFsc28gZnVuY3Rpb25zIHN1Y2gKK2FzIGRvX3BhZ2VfZmF1bHQgYW5kIG5vdGlmaWVyX2NhbGxfY2hhaW4pLgorCitJZiB5b3UgaW5zdGFsbCBhIHByb2JlIGluIGFuIGlubGluZS1hYmxlIGZ1bmN0aW9uLCBLcHJvYmVzIG1ha2VzCitubyBhdHRlbXB0IHRvIGNoYXNlIGRvd24gYWxsIGlubGluZSBpbnN0YW5jZXMgb2YgdGhlIGZ1bmN0aW9uIGFuZAoraW5zdGFsbCBwcm9iZXMgdGhlcmUuICBnY2MgbWF5IGlubGluZSBhIGZ1bmN0aW9uIHdpdGhvdXQgYmVpbmcgYXNrZWQsCitzbyBrZWVwIHRoaXMgaW4gbWluZCBpZiB5b3UncmUgbm90IHNlZWluZyB0aGUgcHJvYmUgaGl0cyB5b3UgZXhwZWN0LgorCitBIHByb2JlIGhhbmRsZXIgY2FuIG1vZGlmeSB0aGUgZW52aXJvbm1lbnQgb2YgdGhlIHByb2JlZCBmdW5jdGlvbgorLS0gZS5nLiwgYnkgbW9kaWZ5aW5nIGtlcm5lbCBkYXRhIHN0cnVjdHVyZXMsIG9yIGJ5IG1vZGlmeWluZyB0aGUKK2NvbnRlbnRzIG9mIHRoZSBwdF9yZWdzIHN0cnVjdCAod2hpY2ggYXJlIHJlc3RvcmVkIHRvIHRoZSByZWdpc3RlcnMKK3Vwb24gcmV0dXJuIGZyb20gdGhlIGJyZWFrcG9pbnQpLiAgU28gS3Byb2JlcyBjYW4gYmUgdXNlZCwgZm9yIGV4YW1wbGUsCit0byBpbnN0YWxsIGEgYnVnIGZpeCBvciB0byBpbmplY3QgZmF1bHRzIGZvciB0ZXN0aW5nLiAgS3Byb2Jlcywgb2YKK2NvdXJzZSwgaGFzIG5vIHdheSB0byBkaXN0aW5ndWlzaCB0aGUgZGVsaWJlcmF0ZWx5IGluamVjdGVkIGZhdWx0cworZnJvbSB0aGUgYWNjaWRlbnRhbCBvbmVzLiAgRG9uJ3QgZHJpbmsgYW5kIHByb2JlLgorCitLcHJvYmVzIG1ha2VzIG5vIGF0dGVtcHQgdG8gcHJldmVudCBwcm9iZSBoYW5kbGVycyBmcm9tIHN0ZXBwaW5nIG9uCitlYWNoIG90aGVyIC0tIGUuZy4sIHByb2JpbmcgcHJpbnRrKCkgYW5kIHRoZW4gY2FsbGluZyBwcmludGsoKSBmcm9tIGEKK3Byb2JlIGhhbmRsZXIuICBJZiBhIHByb2JlIGhhbmRsZXIgaGl0cyBhIHByb2JlLCB0aGF0IHNlY29uZCBwcm9iZSdzCitoYW5kbGVycyB3b24ndCBiZSBydW4gaW4gdGhhdCBpbnN0YW5jZSwgYW5kIHRoZSBrcHJvYmUubm1pc3NlZCBtZW1iZXIKK29mIHRoZSBzZWNvbmQgcHJvYmUgd2lsbCBiZSBpbmNyZW1lbnRlZC4KKworQXMgb2YgTGludXggdjIuNi4xNS1yYzEsIG11bHRpcGxlIGhhbmRsZXJzIChvciBtdWx0aXBsZSBpbnN0YW5jZXMgb2YKK3RoZSBzYW1lIGhhbmRsZXIpIG1heSBydW4gY29uY3VycmVudGx5IG9uIGRpZmZlcmVudCBDUFVzLgorCitLcHJvYmVzIGRvZXMgbm90IHVzZSBtdXRleGVzIG9yIGFsbG9jYXRlIG1lbW9yeSBleGNlcHQgZHVyaW5nCityZWdpc3RyYXRpb24gYW5kIHVucmVnaXN0cmF0aW9uLgorCitQcm9iZSBoYW5kbGVycyBhcmUgcnVuIHdpdGggcHJlZW1wdGlvbiBkaXNhYmxlZC4gIERlcGVuZGluZyBvbiB0aGUKK2FyY2hpdGVjdHVyZSBhbmQgb3B0aW1pemF0aW9uIHN0YXRlLCBoYW5kbGVycyBtYXkgYWxzbyBydW4gd2l0aAoraW50ZXJydXB0cyBkaXNhYmxlZCAoZS5nLiwga3JldHByb2JlIGhhbmRsZXJzIGFuZCBvcHRpbWl6ZWQga3Byb2JlCitoYW5kbGVycyBydW4gd2l0aG91dCBpbnRlcnJ1cHQgZGlzYWJsZWQgb24geDg2L3g4Ni02NCkuICBJbiBhbnkgY2FzZSwKK3lvdXIgaGFuZGxlciBzaG91bGQgbm90IHlpZWxkIHRoZSBDUFUgKGUuZy4sIGJ5IGF0dGVtcHRpbmcgdG8gYWNxdWlyZQorYSBzZW1hcGhvcmUpLgorCitTaW5jZSBhIHJldHVybiBwcm9iZSBpcyBpbXBsZW1lbnRlZCBieSByZXBsYWNpbmcgdGhlIHJldHVybgorYWRkcmVzcyB3aXRoIHRoZSB0cmFtcG9saW5lJ3MgYWRkcmVzcywgc3RhY2sgYmFja3RyYWNlcyBhbmQgY2FsbHMKK3RvIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygpIHdpbGwgdHlwaWNhbGx5IHlpZWxkIHRoZSB0cmFtcG9saW5lJ3MKK2FkZHJlc3MgaW5zdGVhZCBvZiB0aGUgcmVhbCByZXR1cm4gYWRkcmVzcyBmb3Iga3JldHByb2JlZCBmdW5jdGlvbnMuCisoQXMgZmFyIGFzIHdlIGNhbiB0ZWxsLCBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoKSBpcyB1c2VkIG9ubHkKK2ZvciBpbnN0cnVtZW50YXRpb24gYW5kIGVycm9yIHJlcG9ydGluZy4pCisKK0lmIHRoZSBudW1iZXIgb2YgdGltZXMgYSBmdW5jdGlvbiBpcyBjYWxsZWQgZG9lcyBub3QgbWF0Y2ggdGhlIG51bWJlcgorb2YgdGltZXMgaXQgcmV0dXJucywgcmVnaXN0ZXJpbmcgYSByZXR1cm4gcHJvYmUgb24gdGhhdCBmdW5jdGlvbiBtYXkKK3Byb2R1Y2UgdW5kZXNpcmFibGUgcmVzdWx0cy4gSW4gc3VjaCBhIGNhc2UsIGEgbGluZToKK2tyZXRwcm9iZSBCVUchOiBQcm9jZXNzaW5nIGtyZXRwcm9iZSBkMDAwMDAwMDAwMDQxYWE4IEAgYzAwMDAwMDAwMDA0ZjQ4YworZ2V0cyBwcmludGVkLiBXaXRoIHRoaXMgaW5mb3JtYXRpb24sIG9uZSB3aWxsIGJlIGFibGUgdG8gY29ycmVsYXRlIHRoZQorZXhhY3QgaW5zdGFuY2Ugb2YgdGhlIGtyZXRwcm9iZSB0aGF0IGNhdXNlZCB0aGUgcHJvYmxlbS4gV2UgaGF2ZSB0aGUKK2RvX2V4aXQoKSBjYXNlIGNvdmVyZWQuIGRvX2V4ZWN2ZSgpIGFuZCBkb19mb3JrKCkgYXJlIG5vdCBhbiBpc3N1ZS4KK1dlJ3JlIHVuYXdhcmUgb2Ygb3RoZXIgc3BlY2lmaWMgY2FzZXMgd2hlcmUgdGhpcyBjb3VsZCBiZSBhIHByb2JsZW0uCisKK0lmLCB1cG9uIGVudHJ5IHRvIG9yIGV4aXQgZnJvbSBhIGZ1bmN0aW9uLCB0aGUgQ1BVIGlzIHJ1bm5pbmcgb24KK2Egc3RhY2sgb3RoZXIgdGhhbiB0aGF0IG9mIHRoZSBjdXJyZW50IHRhc2ssIHJlZ2lzdGVyaW5nIGEgcmV0dXJuCitwcm9iZSBvbiB0aGF0IGZ1bmN0aW9uIG1heSBwcm9kdWNlIHVuZGVzaXJhYmxlIHJlc3VsdHMuICBGb3IgdGhpcworcmVhc29uLCBLcHJvYmVzIGRvZXNuJ3Qgc3VwcG9ydCByZXR1cm4gcHJvYmVzIChvciBrcHJvYmVzIG9yIGpwcm9iZXMpCitvbiB0aGUgeDg2XzY0IHZlcnNpb24gb2YgX19zd2l0Y2hfdG8oKTsgdGhlIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMKK3JldHVybiAtRUlOVkFMLgorCitPbiB4ODYveDg2LTY0LCBzaW5jZSB0aGUgSnVtcCBPcHRpbWl6YXRpb24gb2YgS3Byb2JlcyBtb2RpZmllcworaW5zdHJ1Y3Rpb25zIHdpZGVseSwgdGhlcmUgYXJlIHNvbWUgbGltaXRhdGlvbnMgdG8gb3B0aW1pemF0aW9uLiBUbworZXhwbGFpbiBpdCwgd2UgaW50cm9kdWNlIHNvbWUgdGVybWlub2xvZ3kuIEltYWdpbmUgYSAzLWluc3RydWN0aW9uCitzZXF1ZW5jZSBjb25zaXN0aW5nIG9mIGEgdHdvIDItYnl0ZSBpbnN0cnVjdGlvbnMgYW5kIG9uZSAzLWJ5dGUKK2luc3RydWN0aW9uLgorCisgICAgICAgIElBCisgICAgICAgICB8CitbLTJdWy0xXVswXVsxXVsyXVszXVs0XVs1XVs2XVs3XQorICAgICAgICBbaW5zMV1baW5zMl1bICBpbnMzIF0KKwlbPC0gICAgIERDUiAgICAgICAtPl0KKwkgICBbPC0gSlRQUiAtPl0KKworaW5zMTogMXN0IEluc3RydWN0aW9uCitpbnMyOiAybmQgSW5zdHJ1Y3Rpb24KK2luczM6IDNyZCBJbnN0cnVjdGlvbgorSUE6ICBJbnNlcnRpb24gQWRkcmVzcworSlRQUjogSnVtcCBUYXJnZXQgUHJvaGliaXRpb24gUmVnaW9uCitEQ1I6IERldG91cmVkIENvZGUgUmVnaW9uCisKK1RoZSBpbnN0cnVjdGlvbnMgaW4gRENSIGFyZSBjb3BpZWQgdG8gdGhlIG91dC1vZi1saW5lIGJ1ZmZlcgorb2YgdGhlIGtwcm9iZSwgYmVjYXVzZSB0aGUgYnl0ZXMgaW4gRENSIGFyZSByZXBsYWNlZCBieQorYSA1LWJ5dGUganVtcCBpbnN0cnVjdGlvbi4gU28gdGhlcmUgYXJlIHNldmVyYWwgbGltaXRhdGlvbnMuCisKK2EpIFRoZSBpbnN0cnVjdGlvbnMgaW4gRENSIG11c3QgYmUgcmVsb2NhdGFibGUuCitiKSBUaGUgaW5zdHJ1Y3Rpb25zIGluIERDUiBtdXN0IG5vdCBpbmNsdWRlIGEgY2FsbCBpbnN0cnVjdGlvbi4KK2MpIEpUUFIgbXVzdCBub3QgYmUgdGFyZ2V0ZWQgYnkgYW55IGp1bXAgb3IgY2FsbCBpbnN0cnVjdGlvbi4KK2QpIERDUiBtdXN0IG5vdCBzdHJhZGRsZSB0aGUgYm9yZGVyIGJldHdlZW4gZnVuY3Rpb25zLgorCitBbnl3YXksIHRoZXNlIGxpbWl0YXRpb25zIGFyZSBjaGVja2VkIGJ5IHRoZSBpbi1rZXJuZWwgaW5zdHJ1Y3Rpb24KK2RlY29kZXIsIHNvIHlvdSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoYXQuCisKKzYuIFByb2JlIE92ZXJoZWFkCisKK09uIGEgdHlwaWNhbCBDUFUgaW4gdXNlIGluIDIwMDUsIGEga3Byb2JlIGhpdCB0YWtlcyAwLjUgdG8gMS4wCittaWNyb3NlY29uZHMgdG8gcHJvY2Vzcy4gIFNwZWNpZmljYWxseSwgYSBiZW5jaG1hcmsgdGhhdCBoaXRzIHRoZSBzYW1lCitwcm9iZXBvaW50IHJlcGVhdGVkbHksIGZpcmluZyBhIHNpbXBsZSBoYW5kbGVyIGVhY2ggdGltZSwgcmVwb3J0cyAxLTIKK21pbGxpb24gaGl0cyBwZXIgc2Vjb25kLCBkZXBlbmRpbmcgb24gdGhlIGFyY2hpdGVjdHVyZS4gIEEganByb2JlIG9yCityZXR1cm4tcHJvYmUgaGl0IHR5cGljYWxseSB0YWtlcyA1MC03NSUgbG9uZ2VyIHRoYW4gYSBrcHJvYmUgaGl0LgorV2hlbiB5b3UgaGF2ZSBhIHJldHVybiBwcm9iZSBzZXQgb24gYSBmdW5jdGlvbiwgYWRkaW5nIGEga3Byb2JlIGF0Cit0aGUgZW50cnkgdG8gdGhhdCBmdW5jdGlvbiBhZGRzIGVzc2VudGlhbGx5IG5vIG92ZXJoZWFkLgorCitIZXJlIGFyZSBzYW1wbGUgb3ZlcmhlYWQgZmlndXJlcyAoaW4gdXNlYykgZm9yIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzLgorayA9IGtwcm9iZTsgaiA9IGpwcm9iZTsgciA9IHJldHVybiBwcm9iZTsga3IgPSBrcHJvYmUgKyByZXR1cm4gcHJvYmUKK29uIHNhbWUgZnVuY3Rpb247IGpyID0ganByb2JlICsgcmV0dXJuIHByb2JlIG9uIHNhbWUgZnVuY3Rpb24KKworaTM4NjogSW50ZWwgUGVudGl1bSBNLCAxNDk1IE1IeiwgMjk1Ny4zMSBib2dvbWlwcworayA9IDAuNTcgdXNlYzsgaiA9IDEuMDA7IHIgPSAwLjkyOyBrciA9IDAuOTk7IGpyID0gMS40MAorCit4ODZfNjQ6IEFNRCBPcHRlcm9uIDI0NiwgMTk5NCBNSHosIDM5NzEuNDggYm9nb21pcHMKK2sgPSAwLjQ5IHVzZWM7IGogPSAwLjc2OyByID0gMC44MDsga3IgPSAwLjgyOyBqciA9IDEuMDcKKworcHBjNjQ6IFBPV0VSNSAoZ3IpLCAxNjU2IE1IeiAoU01UIGRpc2FibGVkLCAxIHZpcnR1YWwgQ1BVIHBlciBwaHlzaWNhbCBDUFUpCitrID0gMC43NyB1c2VjOyBqID0gMS4zMTsgciA9IDEuMjY7IGtyID0gMS40NTsganIgPSAxLjk5CisKKzYuMSBPcHRpbWl6ZWQgUHJvYmUgT3ZlcmhlYWQKKworVHlwaWNhbGx5LCBhbiBvcHRpbWl6ZWQga3Byb2JlIGhpdCB0YWtlcyAwLjA3IHRvIDAuMSBtaWNyb3NlY29uZHMgdG8KK3Byb2Nlc3MuIEhlcmUgYXJlIHNhbXBsZSBvdmVyaGVhZCBmaWd1cmVzIChpbiB1c2VjKSBmb3IgeDg2IGFyY2hpdGVjdHVyZXMuCitrID0gdW5vcHRpbWl6ZWQga3Byb2JlLCBiID0gYm9vc3RlZCAoc2luZ2xlLXN0ZXAgc2tpcHBlZCksIG8gPSBvcHRpbWl6ZWQga3Byb2JlLAorciA9IHVub3B0aW1pemVkIGtyZXRwcm9iZSwgcmIgPSBib29zdGVkIGtyZXRwcm9iZSwgcm8gPSBvcHRpbWl6ZWQga3JldHByb2JlLgorCitpMzg2OiBJbnRlbChSKSBYZW9uKFIpIEU1NDEwLCAyLjMzR0h6LCA0NjU2LjkwIGJvZ29taXBzCitrID0gMC44MCB1c2VjOyBiID0gMC4zMzsgbyA9IDAuMDU7IHIgPSAxLjEwOyByYiA9IDAuNjE7IHJvID0gMC4zMworCit4ODYtNjQ6IEludGVsKFIpIFhlb24oUikgRTU0MTAsIDIuMzNHSHosIDQ2NTYuOTAgYm9nb21pcHMKK2sgPSAwLjk5IHVzZWM7IGIgPSAwLjQzOyBvID0gMC4wNjsgciA9IDEuMjQ7IHJiID0gMC42ODsgcm8gPSAwLjMwCisKKzcuIFRPRE8KKworYS4gU3lzdGVtVGFwIChodHRwOi8vc291cmNld2FyZS5vcmcvc3lzdGVtdGFwKTogUHJvdmlkZXMgYSBzaW1wbGlmaWVkCitwcm9ncmFtbWluZyBpbnRlcmZhY2UgZm9yIHByb2JlLWJhc2VkIGluc3RydW1lbnRhdGlvbi4gIFRyeSBpdCBvdXQuCitiLiBLZXJuZWwgcmV0dXJuIHByb2JlcyBmb3Igc3BhcmM2NC4KK2MuIFN1cHBvcnQgZm9yIG90aGVyIGFyY2hpdGVjdHVyZXMuCitkLiBVc2VyLXNwYWNlIHByb2Jlcy4KK2UuIFdhdGNocG9pbnQgcHJvYmVzICh3aGljaCBmaXJlIG9uIGRhdGEgcmVmZXJlbmNlcykuCisKKzguIEtwcm9iZXMgRXhhbXBsZQorCitTZWUgc2FtcGxlcy9rcHJvYmVzL2twcm9iZV9leGFtcGxlLmMKKworOS4gSnByb2JlcyBFeGFtcGxlCisKK1NlZSBzYW1wbGVzL2twcm9iZXMvanByb2JlX2V4YW1wbGUuYworCisxMC4gS3JldHByb2JlcyBFeGFtcGxlCisKK1NlZSBzYW1wbGVzL2twcm9iZXMva3JldHByb2JlX2V4YW1wbGUuYworCitGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBLcHJvYmVzLCByZWZlciB0byB0aGUgZm9sbG93aW5nIFVSTHM6CitodHRwOi8vd3d3LTEwNi5pYm0uY29tL2RldmVsb3BlcndvcmtzL2xpYnJhcnkvbC1rcHJvYmVzLmh0bWw/Y2E9ZGdyLWxueHc0Mktwcm9iZQoraHR0cDovL3d3dy5yZWRoYXQuY29tL21hZ2F6aW5lLzAwNW1hcjA1L2ZlYXR1cmVzL2twcm9iZXMvCitodHRwOi8vd3d3LXVzZXJzLmNzLnVtbi5lZHUvfmJvdXRjaGVyL2twcm9iZXMvCitodHRwOi8vd3d3LmxpbnV4c3ltcG9zaXVtLm9yZy8yMDA2L2xpbnV4c3ltcG9zaXVtX3Byb2N2Mi5wZGYgKHBhZ2VzIDEwMS0xMTUpCisKKworQXBwZW5kaXggQTogVGhlIGtwcm9iZXMgZGVidWdmcyBpbnRlcmZhY2UKKworV2l0aCByZWNlbnQga2VybmVscyAoPiAyLjYuMjApIHRoZSBsaXN0IG9mIHJlZ2lzdGVyZWQga3Byb2JlcyBpcyB2aXNpYmxlCit1bmRlciB0aGUgL3N5cy9rZXJuZWwvZGVidWcva3Byb2Jlcy8gZGlyZWN0b3J5IChhc3N1bWluZyBkZWJ1Z2ZzIGlzIG1vdW50ZWQgYXQgLy9zeXMva2VybmVsL2RlYnVnKS4KKworL3N5cy9rZXJuZWwvZGVidWcva3Byb2Jlcy9saXN0OiBMaXN0cyBhbGwgcmVnaXN0ZXJlZCBwcm9iZXMgb24gdGhlIHN5c3RlbQorCitjMDE1ZDcxYSAgayAgdmZzX3JlYWQrMHgwCitjMDExYTMxNiAgaiAgZG9fZm9yaysweDAKK2MwM2RlZGM1ICByICB0Y3BfdjRfcmN2KzB4MAorCitUaGUgZmlyc3QgY29sdW1uIHByb3ZpZGVzIHRoZSBrZXJuZWwgYWRkcmVzcyB3aGVyZSB0aGUgcHJvYmUgaXMgaW5zZXJ0ZWQuCitUaGUgc2Vjb25kIGNvbHVtbiBpZGVudGlmaWVzIHRoZSB0eXBlIG9mIHByb2JlIChrIC0ga3Byb2JlLCByIC0ga3JldHByb2JlCithbmQgaiAtIGpwcm9iZSksIHdoaWxlIHRoZSB0aGlyZCBjb2x1bW4gc3BlY2lmaWVzIHRoZSBzeW1ib2wrb2Zmc2V0IG9mCit0aGUgcHJvYmUuIElmIHRoZSBwcm9iZWQgZnVuY3Rpb24gYmVsb25ncyB0byBhIG1vZHVsZSwgdGhlIG1vZHVsZSBuYW1lCitpcyBhbHNvIHNwZWNpZmllZC4gRm9sbG93aW5nIGNvbHVtbnMgc2hvdyBwcm9iZSBzdGF0dXMuIElmIHRoZSBwcm9iZSBpcyBvbgorYSB2aXJ0dWFsIGFkZHJlc3MgdGhhdCBpcyBubyBsb25nZXIgdmFsaWQgKG1vZHVsZSBpbml0IHNlY3Rpb25zLCBtb2R1bGUKK3ZpcnR1YWwgYWRkcmVzc2VzIHRoYXQgY29ycmVzcG9uZCB0byBtb2R1bGVzIHRoYXQndmUgYmVlbiB1bmxvYWRlZCksCitzdWNoIHByb2JlcyBhcmUgbWFya2VkIHdpdGggW0dPTkVdLiBJZiB0aGUgcHJvYmUgaXMgdGVtcG9yYXJpbHkgZGlzYWJsZWQsCitzdWNoIHByb2JlcyBhcmUgbWFya2VkIHdpdGggW0RJU0FCTEVEXS4gSWYgdGhlIHByb2JlIGlzIG9wdGltaXplZCwgaXQgaXMKK21hcmtlZCB3aXRoIFtPUFRJTUlaRURdLiBJZiB0aGUgcHJvYmUgaXMgZnRyYWNlLWJhc2VkLCBpdCBpcyBtYXJrZWQgd2l0aAorW0ZUUkFDRV0uCisKKy9zeXMva2VybmVsL2RlYnVnL2twcm9iZXMvZW5hYmxlZDogVHVybiBrcHJvYmVzIE9OL09GRiBmb3JjaWJseS4KKworUHJvdmlkZXMgYSBrbm9iIHRvIGdsb2JhbGx5IGFuZCBmb3JjaWJseSB0dXJuIHJlZ2lzdGVyZWQga3Byb2JlcyBPTiBvciBPRkYuCitCeSBkZWZhdWx0LCBhbGwga3Byb2JlcyBhcmUgZW5hYmxlZC4gQnkgZWNob2luZyAiMCIgdG8gdGhpcyBmaWxlLCBhbGwKK3JlZ2lzdGVyZWQgcHJvYmVzIHdpbGwgYmUgZGlzYXJtZWQsIHRpbGwgc3VjaCB0aW1lIGEgIjEiIGlzIGVjaG9lZCB0byB0aGlzCitmaWxlLiBOb3RlIHRoYXQgdGhpcyBrbm9iIGp1c3QgZGlzYXJtcyBhbmQgYXJtcyBhbGwga3Byb2JlcyBhbmQgZG9lc24ndAorY2hhbmdlIGVhY2ggcHJvYmUncyBkaXNhYmxpbmcgc3RhdGUuIFRoaXMgbWVhbnMgdGhhdCBkaXNhYmxlZCBrcHJvYmVzIChtYXJrZWQKK1tESVNBQkxFRF0pIHdpbGwgYmUgbm90IGVuYWJsZWQgaWYgeW91IHR1cm4gT04gYWxsIGtwcm9iZXMgYnkgdGhpcyBrbm9iLgorCisKK0FwcGVuZGl4IEI6IFRoZSBrcHJvYmVzIHN5c2N0bCBpbnRlcmZhY2UKKworL3Byb2Mvc3lzL2RlYnVnL2twcm9iZXMtb3B0aW1pemF0aW9uOiBUdXJuIGtwcm9iZXMgb3B0aW1pemF0aW9uIE9OL09GRi4KKworV2hlbiBDT05GSUdfT1BUUFJPQkVTPXksIHRoaXMgc3lzY3RsIGludGVyZmFjZSBhcHBlYXJzIGFuZCBpdCBwcm92aWRlcworYSBrbm9iIHRvIGdsb2JhbGx5IGFuZCBmb3JjaWJseSB0dXJuIGp1bXAgb3B0aW1pemF0aW9uIChzZWUgc2VjdGlvbgorMS40KSBPTiBvciBPRkYuIEJ5IGRlZmF1bHQsIGp1bXAgb3B0aW1pemF0aW9uIGlzIGFsbG93ZWQgKE9OKS4KK0lmIHlvdSBlY2hvICIwIiB0byB0aGlzIGZpbGUgb3Igc2V0ICJkZWJ1Zy5rcHJvYmVzX29wdGltaXphdGlvbiIgdG8KKzAgdmlhIHN5c2N0bCwgYWxsIG9wdGltaXplZCBwcm9iZXMgd2lsbCBiZSB1bm9wdGltaXplZCwgYW5kIGFueSBuZXcKK3Byb2JlcyByZWdpc3RlcmVkIGFmdGVyIHRoYXQgd2lsbCBub3QgYmUgb3B0aW1pemVkLiAgTm90ZSB0aGF0IHRoaXMKK2tub2IgKmNoYW5nZXMqIHRoZSBvcHRpbWl6ZWQgc3RhdGUuIFRoaXMgbWVhbnMgdGhhdCBvcHRpbWl6ZWQgcHJvYmVzCisobWFya2VkIFtPUFRJTUlaRURdKSB3aWxsIGJlIHVub3B0aW1pemVkIChbT1BUSU1JWkVEXSB0YWcgd2lsbCBiZQorcmVtb3ZlZCkuIElmIHRoZSBrbm9iIGlzIHR1cm5lZCBvbiwgdGhleSB3aWxsIGJlIG9wdGltaXplZCBhZ2Fpbi4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9rcmVmLnR4dCBiL0RvY3VtZW50YXRpb24va3JlZi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRmODVhNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24va3JlZi50eHQKQEAgLTAsMCArMSwzMDMgQEAKKwora3JlZnMgYWxsb3cgeW91IHRvIGFkZCByZWZlcmVuY2UgY291bnRlcnMgdG8geW91ciBvYmplY3RzLiAgSWYgeW91CitoYXZlIG9iamVjdHMgdGhhdCBhcmUgdXNlZCBpbiBtdWx0aXBsZSBwbGFjZXMgYW5kIHBhc3NlZCBhcm91bmQsIGFuZAoreW91IGRvbid0IGhhdmUgcmVmY291bnRzLCB5b3VyIGNvZGUgaXMgYWxtb3N0IGNlcnRhaW5seSBicm9rZW4uICBJZgoreW91IHdhbnQgcmVmY291bnRzLCBrcmVmcyBhcmUgdGhlIHdheSB0byBnby4KKworVG8gdXNlIGEga3JlZiwgYWRkIG9uZSB0byB5b3VyIGRhdGEgc3RydWN0dXJlcyBsaWtlOgorCitzdHJ1Y3QgbXlfZGF0YQoreworCS4KKwkuCisJc3RydWN0IGtyZWYgcmVmY291bnQ7CisJLgorCS4KK307CisKK1RoZSBrcmVmIGNhbiBvY2N1ciBhbnl3aGVyZSB3aXRoaW4gdGhlIGRhdGEgc3RydWN0dXJlLgorCitZb3UgbXVzdCBpbml0aWFsaXplIHRoZSBrcmVmIGFmdGVyIHlvdSBhbGxvY2F0ZSBpdC4gIFRvIGRvIHRoaXMsIGNhbGwKK2tyZWZfaW5pdCBhcyBzbzoKKworICAgICBzdHJ1Y3QgbXlfZGF0YSAqZGF0YTsKKworICAgICBkYXRhID0ga21hbGxvYyhzaXplb2YoKmRhdGEpLCBHRlBfS0VSTkVMKTsKKyAgICAgaWYgKCFkYXRhKQorICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07CisgICAgIGtyZWZfaW5pdCgmZGF0YS0+cmVmY291bnQpOworCitUaGlzIHNldHMgdGhlIHJlZmNvdW50IGluIHRoZSBrcmVmIHRvIDEuCisKK09uY2UgeW91IGhhdmUgYW4gaW5pdGlhbGl6ZWQga3JlZiwgeW91IG11c3QgZm9sbG93IHRoZSBmb2xsb3dpbmcKK3J1bGVzOgorCisxKSBJZiB5b3UgbWFrZSBhIG5vbi10ZW1wb3JhcnkgY29weSBvZiBhIHBvaW50ZXIsIGVzcGVjaWFsbHkgaWYKKyAgIGl0IGNhbiBiZSBwYXNzZWQgdG8gYW5vdGhlciB0aHJlYWQgb2YgZXhlY3V0aW9uLCB5b3UgbXVzdAorICAgaW5jcmVtZW50IHRoZSByZWZjb3VudCB3aXRoIGtyZWZfZ2V0KCkgYmVmb3JlIHBhc3NpbmcgaXQgb2ZmOgorICAgICAgIGtyZWZfZ2V0KCZkYXRhLT5yZWZjb3VudCk7CisgICBJZiB5b3UgYWxyZWFkeSBoYXZlIGEgdmFsaWQgcG9pbnRlciB0byBhIGtyZWYtZWQgc3RydWN0dXJlICh0aGUKKyAgIHJlZmNvdW50IGNhbm5vdCBnbyB0byB6ZXJvKSB5b3UgbWF5IGRvIHRoaXMgd2l0aG91dCBhIGxvY2suCisKKzIpIFdoZW4geW91IGFyZSBkb25lIHdpdGggYSBwb2ludGVyLCB5b3UgbXVzdCBjYWxsIGtyZWZfcHV0KCk6CisgICAgICAga3JlZl9wdXQoJmRhdGEtPnJlZmNvdW50LCBkYXRhX3JlbGVhc2UpOworICAgSWYgdGhpcyBpcyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhlIHBvaW50ZXIsIHRoZSByZWxlYXNlCisgICByb3V0aW5lIHdpbGwgYmUgY2FsbGVkLiAgSWYgdGhlIGNvZGUgbmV2ZXIgdHJpZXMgdG8gZ2V0CisgICBhIHZhbGlkIHBvaW50ZXIgdG8gYSBrcmVmLWVkIHN0cnVjdHVyZSB3aXRob3V0IGFscmVhZHkKKyAgIGhvbGRpbmcgYSB2YWxpZCBwb2ludGVyLCBpdCBpcyBzYWZlIHRvIGRvIHRoaXMgd2l0aG91dAorICAgYSBsb2NrLgorCiszKSBJZiB0aGUgY29kZSBhdHRlbXB0cyB0byBnYWluIGEgcmVmZXJlbmNlIHRvIGEga3JlZi1lZCBzdHJ1Y3R1cmUKKyAgIHdpdGhvdXQgYWxyZWFkeSBob2xkaW5nIGEgdmFsaWQgcG9pbnRlciwgaXQgbXVzdCBzZXJpYWxpemUgYWNjZXNzCisgICB3aGVyZSBhIGtyZWZfcHV0KCkgY2Fubm90IG9jY3VyIGR1cmluZyB0aGUga3JlZl9nZXQoKSwgYW5kIHRoZQorICAgc3RydWN0dXJlIG11c3QgcmVtYWluIHZhbGlkIGR1cmluZyB0aGUga3JlZl9nZXQoKS4KKworRm9yIGV4YW1wbGUsIGlmIHlvdSBhbGxvY2F0ZSBzb21lIGRhdGEgYW5kIHRoZW4gcGFzcyBpdCB0byBhbm90aGVyCit0aHJlYWQgdG8gcHJvY2VzczoKKwordm9pZCBkYXRhX3JlbGVhc2Uoc3RydWN0IGtyZWYgKnJlZikKK3sKKwlzdHJ1Y3QgbXlfZGF0YSAqZGF0YSA9IGNvbnRhaW5lcl9vZihyZWYsIHN0cnVjdCBteV9kYXRhLCByZWZjb3VudCk7CisJa2ZyZWUoZGF0YSk7Cit9CisKK3ZvaWQgbW9yZV9kYXRhX2hhbmRsaW5nKHZvaWQgKmNiX2RhdGEpCit7CisJc3RydWN0IG15X2RhdGEgKmRhdGEgPSBjYl9kYXRhOworCS4KKwkuIGRvIHN0dWZmIHdpdGggZGF0YSBoZXJlCisJLgorCWtyZWZfcHV0KCZkYXRhLT5yZWZjb3VudCwgZGF0YV9yZWxlYXNlKTsKK30KKworaW50IG15X2RhdGFfaGFuZGxlcih2b2lkKQoreworCWludCBydiA9IDA7CisJc3RydWN0IG15X2RhdGEgKmRhdGE7CisJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOworCWRhdGEgPSBrbWFsbG9jKHNpemVvZigqZGF0YSksIEdGUF9LRVJORUwpOworCWlmICghZGF0YSkKKwkJcmV0dXJuIC1FTk9NRU07CisJa3JlZl9pbml0KCZkYXRhLT5yZWZjb3VudCk7CisKKwlrcmVmX2dldCgmZGF0YS0+cmVmY291bnQpOworCXRhc2sgPSBrdGhyZWFkX3J1bihtb3JlX2RhdGFfaGFuZGxpbmcsIGRhdGEsICJtb3JlX2RhdGFfaGFuZGxpbmciKTsKKwlpZiAodGFzayA9PSBFUlJfUFRSKC1FTk9NRU0pKSB7CisJCXJ2ID0gLUVOT01FTTsKKwkJZ290byBvdXQ7CisJfQorCisJLgorCS4gZG8gc3R1ZmYgd2l0aCBkYXRhIGhlcmUKKwkuCisgb3V0OgorCWtyZWZfcHV0KCZkYXRhLT5yZWZjb3VudCwgZGF0YV9yZWxlYXNlKTsKKwlyZXR1cm4gcnY7Cit9CisKK1RoaXMgd2F5LCBpdCBkb2Vzbid0IG1hdHRlciB3aGF0IG9yZGVyIHRoZSB0d28gdGhyZWFkcyBoYW5kbGUgdGhlCitkYXRhLCB0aGUga3JlZl9wdXQoKSBoYW5kbGVzIGtub3dpbmcgd2hlbiB0aGUgZGF0YSBpcyBub3QgcmVmZXJlbmNlZAorYW55IG1vcmUgYW5kIHJlbGVhc2luZyBpdC4gIFRoZSBrcmVmX2dldCgpIGRvZXMgbm90IHJlcXVpcmUgYSBsb2NrLAorc2luY2Ugd2UgYWxyZWFkeSBoYXZlIGEgdmFsaWQgcG9pbnRlciB0aGF0IHdlIG93biBhIHJlZmNvdW50IGZvci4gIFRoZQorcHV0IG5lZWRzIG5vIGxvY2sgYmVjYXVzZSBub3RoaW5nIHRyaWVzIHRvIGdldCB0aGUgZGF0YSB3aXRob3V0CithbHJlYWR5IGhvbGRpbmcgYSBwb2ludGVyLgorCitOb3RlIHRoYXQgdGhlICJiZWZvcmUiIGluIHJ1bGUgMSBpcyB2ZXJ5IGltcG9ydGFudC4gIFlvdSBzaG91bGQgbmV2ZXIKK2RvIHNvbWV0aGluZyBsaWtlOgorCisJdGFzayA9IGt0aHJlYWRfcnVuKG1vcmVfZGF0YV9oYW5kbGluZywgZGF0YSwgIm1vcmVfZGF0YV9oYW5kbGluZyIpOworCWlmICh0YXNrID09IEVSUl9QVFIoLUVOT01FTSkpIHsKKwkJcnYgPSAtRU5PTUVNOworCQlnb3RvIG91dDsKKwl9IGVsc2UKKwkJLyogQkFEIEJBRCBCQUQgLSBnZXQgaXMgYWZ0ZXIgdGhlIGhhbmRvZmYgKi8KKwkJa3JlZl9nZXQoJmRhdGEtPnJlZmNvdW50KTsKKworRG9uJ3QgYXNzdW1lIHlvdSBrbm93IHdoYXQgeW91IGFyZSBkb2luZyBhbmQgdXNlIHRoZSBhYm92ZSBjb25zdHJ1Y3QuCitGaXJzdCBvZiBhbGwsIHlvdSBtYXkgbm90IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLiAgU2Vjb25kLCB5b3UgbWF5Citrbm93IHdoYXQgeW91IGFyZSBkb2luZyAodGhlcmUgYXJlIHNvbWUgc2l0dWF0aW9ucyB3aGVyZSBsb2NraW5nIGlzCitpbnZvbHZlZCB3aGVyZSB0aGUgYWJvdmUgbWF5IGJlIGxlZ2FsKSBidXQgc29tZW9uZSBlbHNlIHdobyBkb2Vzbid0Citrbm93IHdoYXQgdGhleSBhcmUgZG9pbmcgbWF5IGNoYW5nZSB0aGUgY29kZSBvciBjb3B5IHRoZSBjb2RlLiAgSXQncworYmFkIHN0eWxlLiAgRG9uJ3QgZG8gaXQuCisKK1RoZXJlIGFyZSBzb21lIHNpdHVhdGlvbnMgd2hlcmUgeW91IGNhbiBvcHRpbWl6ZSB0aGUgZ2V0cyBhbmQgcHV0cy4KK0ZvciBpbnN0YW5jZSwgaWYgeW91IGFyZSBkb25lIHdpdGggYW4gb2JqZWN0IGFuZCBlbnF1ZXVpbmcgaXQgZm9yCitzb21ldGhpbmcgZWxzZSBvciBwYXNzaW5nIGl0IG9mZiB0byBzb21ldGhpbmcgZWxzZSwgdGhlcmUgaXMgbm8gcmVhc29uCit0byBkbyBhIGdldCB0aGVuIGEgcHV0OgorCisJLyogU2lsbHkgZXh0cmEgZ2V0IGFuZCBwdXQgKi8KKwlrcmVmX2dldCgmb2JqLT5yZWYpOworCWVucXVldWUob2JqKTsKKwlrcmVmX3B1dCgmb2JqLT5yZWYsIG9ial9jbGVhbnVwKTsKKworSnVzdCBkbyB0aGUgZW5xdWV1ZS4gIEEgY29tbWVudCBhYm91dCB0aGlzIGlzIGFsd2F5cyB3ZWxjb21lOgorCisJZW5xdWV1ZShvYmopOworCS8qIFdlIGFyZSBkb25lIHdpdGggb2JqLCBzbyB3ZSBwYXNzIG91ciByZWZjb3VudCBvZmYKKwkgICB0byB0aGUgcXVldWUuICBET04nVCBUT1VDSCBvYmogQUZURVIgSEVSRSEgKi8KKworVGhlIGxhc3QgcnVsZSAocnVsZSAzKSBpcyB0aGUgbmFzdGllc3Qgb25lIHRvIGhhbmRsZS4gIFNheSwgZm9yCitpbnN0YW5jZSwgeW91IGhhdmUgYSBsaXN0IG9mIGl0ZW1zIHRoYXQgYXJlIGVhY2gga3JlZi1lZCwgYW5kIHlvdSB3aXNoCit0byBnZXQgdGhlIGZpcnN0IG9uZS4gIFlvdSBjYW4ndCBqdXN0IHB1bGwgdGhlIGZpcnN0IGl0ZW0gb2ZmIHRoZSBsaXN0CithbmQga3JlZl9nZXQoKSBpdC4gIFRoYXQgdmlvbGF0ZXMgcnVsZSAzIGJlY2F1c2UgeW91IGFyZSBub3QgYWxyZWFkeQoraG9sZGluZyBhIHZhbGlkIHBvaW50ZXIuICBZb3UgbXVzdCBhZGQgYSBtdXRleCAob3Igc29tZSBvdGhlciBsb2NrKS4KK0ZvciBpbnN0YW5jZToKKworc3RhdGljIERFRklORV9NVVRFWChtdXRleCk7CitzdGF0aWMgTElTVF9IRUFEKHEpOworc3RydWN0IG15X2RhdGEKK3sKKwlzdHJ1Y3Qga3JlZiAgICAgIHJlZmNvdW50OworCXN0cnVjdCBsaXN0X2hlYWQgbGluazsKK307CisKK3N0YXRpYyBzdHJ1Y3QgbXlfZGF0YSAqZ2V0X2VudHJ5KCkKK3sKKwlzdHJ1Y3QgbXlfZGF0YSAqZW50cnkgPSBOVUxMOworCW11dGV4X2xvY2soJm11dGV4KTsKKwlpZiAoIWxpc3RfZW1wdHkoJnEpKSB7CisJCWVudHJ5ID0gY29udGFpbmVyX29mKHEubmV4dCwgc3RydWN0IG15X2RhdGEsIGxpbmspOworCQlrcmVmX2dldCgmZW50cnktPnJlZmNvdW50KTsKKwl9CisJbXV0ZXhfdW5sb2NrKCZtdXRleCk7CisJcmV0dXJuIGVudHJ5OworfQorCitzdGF0aWMgdm9pZCByZWxlYXNlX2VudHJ5KHN0cnVjdCBrcmVmICpyZWYpCit7CisJc3RydWN0IG15X2RhdGEgKmVudHJ5ID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG15X2RhdGEsIHJlZmNvdW50KTsKKworCWxpc3RfZGVsKCZlbnRyeS0+bGluayk7CisJa2ZyZWUoZW50cnkpOworfQorCitzdGF0aWMgdm9pZCBwdXRfZW50cnkoc3RydWN0IG15X2RhdGEgKmVudHJ5KQoreworCW11dGV4X2xvY2soJm11dGV4KTsKKwlrcmVmX3B1dCgmZW50cnktPnJlZmNvdW50LCByZWxlYXNlX2VudHJ5KTsKKwltdXRleF91bmxvY2soJm11dGV4KTsKK30KKworVGhlIGtyZWZfcHV0KCkgcmV0dXJuIHZhbHVlIGlzIHVzZWZ1bCBpZiB5b3UgZG8gbm90IHdhbnQgdG8gaG9sZCB0aGUKK2xvY2sgZHVyaW5nIHRoZSB3aG9sZSByZWxlYXNlIG9wZXJhdGlvbi4gIFNheSB5b3UgZGlkbid0IHdhbnQgdG8gY2FsbAora2ZyZWUoKSB3aXRoIHRoZSBsb2NrIGhlbGQgaW4gdGhlIGV4YW1wbGUgYWJvdmUgKHNpbmNlIGl0IGlzIGtpbmQgb2YKK3BvaW50bGVzcyB0byBkbyBzbykuICBZb3UgY291bGQgdXNlIGtyZWZfcHV0KCkgYXMgZm9sbG93czoKKworc3RhdGljIHZvaWQgcmVsZWFzZV9lbnRyeShzdHJ1Y3Qga3JlZiAqcmVmKQoreworCS8qIEFsbCB3b3JrIGlzIGRvbmUgYWZ0ZXIgdGhlIHJldHVybiBmcm9tIGtyZWZfcHV0KCkuICovCit9CisKK3N0YXRpYyB2b2lkIHB1dF9lbnRyeShzdHJ1Y3QgbXlfZGF0YSAqZW50cnkpCit7CisJbXV0ZXhfbG9jaygmbXV0ZXgpOworCWlmIChrcmVmX3B1dCgmZW50cnktPnJlZmNvdW50LCByZWxlYXNlX2VudHJ5KSkgeworCQlsaXN0X2RlbCgmZW50cnktPmxpbmspOworCQltdXRleF91bmxvY2soJm11dGV4KTsKKwkJa2ZyZWUoZW50cnkpOworCX0gZWxzZQorCQltdXRleF91bmxvY2soJm11dGV4KTsKK30KKworVGhpcyBpcyByZWFsbHkgbW9yZSB1c2VmdWwgaWYgeW91IGhhdmUgdG8gY2FsbCBvdGhlciByb3V0aW5lcyBhcyBwYXJ0CitvZiB0aGUgZnJlZSBvcGVyYXRpb25zIHRoYXQgY291bGQgdGFrZSBhIGxvbmcgdGltZSBvciBtaWdodCBjbGFpbSB0aGUKK3NhbWUgbG9jay4gIE5vdGUgdGhhdCBkb2luZyBldmVyeXRoaW5nIGluIHRoZSByZWxlYXNlIHJvdXRpbmUgaXMgc3RpbGwKK3ByZWZlcnJlZCBhcyBpdCBpcyBhIGxpdHRsZSBuZWF0ZXIuCisKKworQ29yZXkgTWlueWFyZCA8bWlueWFyZEBhY20ub3JnPgorCitBIGxvdCBvZiB0aGlzIHdhcyBsaWZ0ZWQgZnJvbSBHcmVnIEtyb2FoLUhhcnRtYW4ncyAyMDA0IE9MUyBwYXBlciBhbmQKK3ByZXNlbnRhdGlvbiBvbiBrcmVmcywgd2hpY2ggY2FuIGJlIGZvdW5kIGF0OgorICBodHRwOi8vd3d3Lmtyb2FoLmNvbS9saW51eC90YWxrcy9vbHNfMjAwNF9rcmVmX3BhcGVyL1JlcHJpbnQtS3JvYWgtSGFydG1hbi1PTFMyMDA0LnBkZgorYW5kOgorICBodHRwOi8vd3d3Lmtyb2FoLmNvbS9saW51eC90YWxrcy9vbHNfMjAwNF9rcmVmX3RhbGsvCisKKworVGhlIGFib3ZlIGV4YW1wbGUgY291bGQgYWxzbyBiZSBvcHRpbWl6ZWQgdXNpbmcga3JlZl9nZXRfdW5sZXNzX3plcm8oKSBpbgordGhlIGZvbGxvd2luZyB3YXk6CisKK3N0YXRpYyBzdHJ1Y3QgbXlfZGF0YSAqZ2V0X2VudHJ5KCkKK3sKKwlzdHJ1Y3QgbXlfZGF0YSAqZW50cnkgPSBOVUxMOworCW11dGV4X2xvY2soJm11dGV4KTsKKwlpZiAoIWxpc3RfZW1wdHkoJnEpKSB7CisJCWVudHJ5ID0gY29udGFpbmVyX29mKHEubmV4dCwgc3RydWN0IG15X2RhdGEsIGxpbmspOworCQlpZiAoIWtyZWZfZ2V0X3VubGVzc196ZXJvKCZlbnRyeS0+cmVmY291bnQpKQorCQkJZW50cnkgPSBOVUxMOworCX0KKwltdXRleF91bmxvY2soJm11dGV4KTsKKwlyZXR1cm4gZW50cnk7Cit9CisKK3N0YXRpYyB2b2lkIHJlbGVhc2VfZW50cnkoc3RydWN0IGtyZWYgKnJlZikKK3sKKwlzdHJ1Y3QgbXlfZGF0YSAqZW50cnkgPSBjb250YWluZXJfb2YocmVmLCBzdHJ1Y3QgbXlfZGF0YSwgcmVmY291bnQpOworCisJbXV0ZXhfbG9jaygmbXV0ZXgpOworCWxpc3RfZGVsKCZlbnRyeS0+bGluayk7CisJbXV0ZXhfdW5sb2NrKCZtdXRleCk7CisJa2ZyZWUoZW50cnkpOworfQorCitzdGF0aWMgdm9pZCBwdXRfZW50cnkoc3RydWN0IG15X2RhdGEgKmVudHJ5KQoreworCWtyZWZfcHV0KCZlbnRyeS0+cmVmY291bnQsIHJlbGVhc2VfZW50cnkpOworfQorCitXaGljaCBpcyB1c2VmdWwgdG8gcmVtb3ZlIHRoZSBtdXRleCBsb2NrIGFyb3VuZCBrcmVmX3B1dCgpIGluIHB1dF9lbnRyeSgpLCBidXQKK2l0J3MgaW1wb3J0YW50IHRoYXQga3JlZl9nZXRfdW5sZXNzX3plcm8gaXMgZW5jbG9zZWQgaW4gdGhlIHNhbWUgY3JpdGljYWwKK3NlY3Rpb24gdGhhdCBmaW5kcyB0aGUgZW50cnkgaW4gdGhlIGxvb2t1cCB0YWJsZSwKK290aGVyd2lzZSBrcmVmX2dldF91bmxlc3NfemVybyBtYXkgcmVmZXJlbmNlIGFscmVhZHkgZnJlZWQgbWVtb3J5LgorTm90ZSB0aGF0IGl0IGlzIGlsbGVnYWwgdG8gdXNlIGtyZWZfZ2V0X3VubGVzc196ZXJvIHdpdGhvdXQgY2hlY2tpbmcgaXRzCityZXR1cm4gdmFsdWUuIElmIHlvdSBhcmUgc3VyZSAoYnkgYWxyZWFkeSBoYXZpbmcgYSB2YWxpZCBwb2ludGVyKSB0aGF0CitrcmVmX2dldF91bmxlc3NfemVybygpIHdpbGwgcmV0dXJuIHRydWUsIHRoZW4gdXNlIGtyZWZfZ2V0KCkgaW5zdGVhZC4KKworVGhlIGZ1bmN0aW9uIGtyZWZfZ2V0X3VubGVzc196ZXJvIGFsc28gbWFrZXMgaXQgcG9zc2libGUgdG8gdXNlIHJjdQorbG9ja2luZyBmb3IgbG9va3VwcyBpbiB0aGUgYWJvdmUgZXhhbXBsZToKKworc3RydWN0IG15X2RhdGEKK3sKKwlzdHJ1Y3QgcmN1X2hlYWQgcmhlYWQ7CisJLgorCXN0cnVjdCBrcmVmIHJlZmNvdW50OworCS4KKwkuCit9OworCitzdGF0aWMgc3RydWN0IG15X2RhdGEgKmdldF9lbnRyeV9yY3UoKQoreworCXN0cnVjdCBteV9kYXRhICplbnRyeSA9IE5VTEw7CisJcmN1X3JlYWRfbG9jaygpOworCWlmICghbGlzdF9lbXB0eSgmcSkpIHsKKwkJZW50cnkgPSBjb250YWluZXJfb2YocS5uZXh0LCBzdHJ1Y3QgbXlfZGF0YSwgbGluayk7CisJCWlmICgha3JlZl9nZXRfdW5sZXNzX3plcm8oJmVudHJ5LT5yZWZjb3VudCkpCisJCQllbnRyeSA9IE5VTEw7CisJfQorCXJjdV9yZWFkX3VubG9jaygpOworCXJldHVybiBlbnRyeTsKK30KKworc3RhdGljIHZvaWQgcmVsZWFzZV9lbnRyeV9yY3Uoc3RydWN0IGtyZWYgKnJlZikKK3sKKwlzdHJ1Y3QgbXlfZGF0YSAqZW50cnkgPSBjb250YWluZXJfb2YocmVmLCBzdHJ1Y3QgbXlfZGF0YSwgcmVmY291bnQpOworCisJbXV0ZXhfbG9jaygmbXV0ZXgpOworCWxpc3RfZGVsX3JjdSgmZW50cnktPmxpbmspOworCW11dGV4X3VubG9jaygmbXV0ZXgpOworCWtmcmVlX3JjdShlbnRyeSwgcmhlYWQpOworfQorCitzdGF0aWMgdm9pZCBwdXRfZW50cnkoc3RydWN0IG15X2RhdGEgKmVudHJ5KQoreworCWtyZWZfcHV0KCZlbnRyeS0+cmVmY291bnQsIHJlbGVhc2VfZW50cnlfcmN1KTsKK30KKworQnV0IG5vdGUgdGhhdCB0aGUgc3RydWN0IGtyZWYgbWVtYmVyIG5lZWRzIHRvIHJlbWFpbiBpbiB2YWxpZCBtZW1vcnkgZm9yIGEKK3JjdSBncmFjZSBwZXJpb2QgYWZ0ZXIgcmVsZWFzZV9lbnRyeV9yY3Ugd2FzIGNhbGxlZC4gVGhhdCBjYW4gYmUgYWNjb21wbGlzaGVkCitieSB1c2luZyBrZnJlZV9yY3UoZW50cnksIHJoZWFkKSBhcyBkb25lIGFib3ZlLCBvciBieSBjYWxsaW5nIHN5bmNocm9uaXplX3JjdSgpCitiZWZvcmUgdXNpbmcga2ZyZWUsIGJ1dCBub3RlIHRoYXQgc3luY2hyb25pemVfcmN1KCkgbWF5IHNsZWVwIGZvciBhCitzdWJzdGFudGlhbCBhbW91bnQgb2YgdGltZS4KKworCitUaG9tYXMgSGVsbHN0cm9tIDx0aGVsbHN0cm9tQHZtd2FyZS5jb20+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2tzZWxmdGVzdC50eHQgYi9Eb2N1bWVudGF0aW9uL2tzZWxmdGVzdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJiYmNkYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24va3NlbGZ0ZXN0LnR4dApAQCAtMCwwICsxLDg1IEBACitMaW51eCBLZXJuZWwgU2VsZnRlc3RzCisKK1RoZSBrZXJuZWwgY29udGFpbnMgYSBzZXQgb2YgInNlbGYgdGVzdHMiIHVuZGVyIHRoZSB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8KK2RpcmVjdG9yeS4gVGhlc2UgYXJlIGludGVuZGVkIHRvIGJlIHNtYWxsIHVuaXQgdGVzdHMgdG8gZXhlcmNpc2UgaW5kaXZpZHVhbAorY29kZSBwYXRocyBpbiB0aGUga2VybmVsLgorCitPbiBzb21lIHN5c3RlbXMsIGhvdC1wbHVnIHRlc3RzIGNvdWxkIGhhbmcgZm9yZXZlciB3YWl0aW5nIGZvciBjcHUgYW5kCittZW1vcnkgdG8gYmUgcmVhZHkgdG8gYmUgb2ZmbGluZWQuIEEgc3BlY2lhbCBob3QtcGx1ZyB0YXJnZXQgaXMgY3JlYXRlZAordG8gcnVuIGZ1bGwgcmFuZ2Ugb2YgaG90LXBsdWcgdGVzdHMuIEluIGRlZmF1bHQgbW9kZSwgaG90LXBsdWcgdGVzdHMgcnVuCitpbiBzYWZlIG1vZGUgd2l0aCBhIGxpbWl0ZWQgc2NvcGUuIEluIGxpbWl0ZWQgbW9kZSwgY3B1LWhvdHBsdWcgdGVzdCBpcworcnVuIG9uIGEgc2luZ2xlIGNwdSBhcyBvcHBvc2VkIHRvIGFsbCBob3RwbHVnIGNhcGFibGUgY3B1cywgYW5kIG1lbW9yeQoraG90cGx1ZyB0ZXN0IGlzIHJ1biBvbiAyJSBvZiBob3RwbHVnIGNhcGFibGUgbWVtb3J5IGluc3RlYWQgb2YgMTAlLgorCitSdW5uaW5nIHRoZSBzZWxmdGVzdHMgKGhvdHBsdWcgdGVzdHMgYXJlIHJ1biBpbiBsaW1pdGVkIG1vZGUpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RvIGJ1aWxkIHRoZSB0ZXN0czoKKyAgJCBtYWtlIC1DIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzCisKKworVG8gcnVuIHRoZSB0ZXN0czoKKyAgJCBtYWtlIC1DIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzIHJ1bl90ZXN0cworCitUbyBidWlsZCBhbmQgcnVuIHRoZSB0ZXN0cyB3aXRoIGEgc2luZ2xlIGNvbW1hbmQsIHVzZToKKyAgJCBtYWtlIGtzZWxmdGVzdAorCistIG5vdGUgdGhhdCBzb21lIHRlc3RzIHdpbGwgcmVxdWlyZSByb290IHByaXZpbGVnZXMuCisKKworUnVubmluZyBhIHN1YnNldCBvZiBzZWxmdGVzdHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1lvdSBjYW4gdXNlIHRoZSAiVEFSR0VUUyIgdmFyaWFibGUgb24gdGhlIG1ha2UgY29tbWFuZCBsaW5lIHRvIHNwZWNpZnkKK3NpbmdsZSB0ZXN0IHRvIHJ1biwgb3IgYSBsaXN0IG9mIHRlc3RzIHRvIHJ1bi4KKworVG8gcnVuIG9ubHkgdGVzdHMgdGFyZ2V0ZWQgZm9yIGEgc2luZ2xlIHN1YnN5c3RlbToKKyAgJCAgbWFrZSAtQyB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cyBUQVJHRVRTPXB0cmFjZSBydW5fdGVzdHMKKworWW91IGNhbiBzcGVjaWZ5IG11bHRpcGxlIHRlc3RzIHRvIGJ1aWxkIGFuZCBydW46CisgICQgIG1ha2UgVEFSR0VUUz0ic2l6ZSB0aW1lcnMiIGtzZWxmdGVzdAorCitTZWUgdGhlIHRvcC1sZXZlbCB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9NYWtlZmlsZSBmb3IgdGhlIGxpc3Qgb2YgYWxsCitwb3NzaWJsZSB0YXJnZXRzLgorCisKK1J1bm5pbmcgdGhlIGZ1bGwgcmFuZ2UgaG90cGx1ZyBzZWxmdGVzdHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVG8gYnVpbGQgdGhlIGhvdHBsdWcgdGVzdHM6CisgICQgbWFrZSAtQyB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cyBob3RwbHVnCisKK1RvIHJ1biB0aGUgaG90cGx1ZyB0ZXN0czoKKyAgJCBtYWtlIC1DIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzIHJ1bl9ob3RwbHVnCisKKy0gbm90ZSB0aGF0IHNvbWUgdGVzdHMgd2lsbCByZXF1aXJlIHJvb3QgcHJpdmlsZWdlcy4KKworCitJbnN0YWxsIHNlbGZ0ZXN0cworPT09PT09PT09PT09PT09PT0KKworWW91IGNhbiB1c2Uga3NlbGZ0ZXN0X2luc3RhbGwuc2ggdG9vbCBpbnN0YWxscyBzZWxmdGVzdHMgaW4gZGVmYXVsdAorbG9jYXRpb24gd2hpY2ggaXMgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3NlbGZ0ZXN0IG9yIGFuIHVzZXIgc3BlY2lmaWVkCitsb2NhdGlvbi4KKworVG8gaW5zdGFsbCBzZWxmdGVzdHMgaW4gZGVmYXVsdCBsb2NhdGlvbjoKKyAgICQgY2QgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMKKyAgICQgLi9rc2VsZnRlc3RfaW5zdGFsbC5zaAorCitUbyBpbnN0YWxsIHNlbGZ0ZXN0cyBpbiBhbiB1c2VyIHNwZWNpZmllZCBsb2NhdGlvbjoKKyAgICQgY2QgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMKKyAgICQgLi9rc2VsZnRlc3RfaW5zdGFsbC5zaCBpbnN0YWxsX2RpcgorCisKK0NvbnRyaWJ1dGluZyBuZXcgdGVzdHMKKz09PT09PT09PT09PT09PT09PT09PT0KKworSW4gZ2VuZXJhbCwgdGhlIHJ1bGVzIGZvciBmb3Igc2VsZnRlc3RzIGFyZQorCisgKiBEbyBhcyBtdWNoIGFzIHlvdSBjYW4gaWYgeW91J3JlIG5vdCByb290OworCisgKiBEb24ndCB0YWtlIHRvbyBsb25nOworCisgKiBEb24ndCBicmVhayB0aGUgYnVpbGQgb24gYW55IGFyY2hpdGVjdHVyZSwgYW5kCisKKyAqIERvbid0IGNhdXNlIHRoZSB0b3AtbGV2ZWwgIm1ha2UgcnVuX3Rlc3RzIiB0byBmYWlsIGlmIHlvdXIgZmVhdHVyZSBpcworICAgdW5jb25maWd1cmVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9sYXB0b3BzLy5naXRpZ25vcmUgYi9Eb2N1bWVudGF0aW9uL2xhcHRvcHMvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmM5ODRlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9sYXB0b3BzLy5naXRpZ25vcmUKQEAgLTAsMCArMSBAQAorZHNsbQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9sYXB0b3BzLzAwLUlOREVYIGIvRG9jdW1lbnRhdGlvbi9sYXB0b3BzLzAwLUlOREVYCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMGFjMmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2xhcHRvcHMvMDAtSU5ERVgKQEAgLTAsMCArMSwyMCBAQAorMDAtSU5ERVgKKwktIFRoaXMgZmlsZQorTWFrZWZpbGUKKwktIE1ha2VmaWxlIGZvciBidWlsZGluZyBkc2xtIGV4YW1wbGUgcHJvZ3JhbS4KK2FzdXMtbGFwdG9wLnR4dAorCS0gaW5mb3JtYXRpb24gb24gdGhlIEFzdXMgTGFwdG9wIEV4dHJhcyBkcml2ZXIuCitkaXNrLXNob2NrLXByb3RlY3Rpb24udHh0CisJLSBpbmZvcm1hdGlvbiBvbiBoYXJkIGRpc2sgc2hvY2sgcHJvdGVjdGlvbi4KK2RzbG0uYworCS0gU2ltcGxlIERpc2sgU2xlZXAgTW9uaXRvciBwcm9ncmFtCitsYXB0b3AtbW9kZS50eHQKKwktIGhvdyB0byBjb25zZXJ2ZSBiYXR0ZXJ5IHBvd2VyIHVzaW5nIGxhcHRvcC1tb2RlLgorc29ueS1sYXB0b3AudHh0CisJLSBTb255IE5vdGVib29rIENvbnRyb2wgRHJpdmVyIChTTkMpIFJlYWRtZS4KK3NvbnlwaS50eHQKKwktIGluZm8gb24gTGludXggU29ueSBQcm9ncmFtbWFibGUgSS9PIERldmljZSBzdXBwb3J0LgordGhpbmtwYWQtYWNwaS50eHQKKwktIGluZm9ybWF0aW9uIG9uIHRoZSAoSUJNIGFuZCBMZW5vdm8pIFRoaW5rUGFkIEFDUEkgRXh0cmFzIGRyaXZlci4KK3Rvc2hpYmFfaGFwcy50eHQKKwktIGluZm9ybWF0aW9uIG9uIHRoZSBUb3NoaWJhIEhERCBBY3RpdmUgUHJvdGVjdGlvbiBTZW5zb3IgZHJpdmVyLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9sYXB0b3BzL01ha2VmaWxlIGIvRG9jdW1lbnRhdGlvbi9sYXB0b3BzL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhYmU0NGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2xhcHRvcHMvTWFrZWZpbGUKQEAgLTAsMCArMSw1IEBACisjIExpc3Qgb2YgcHJvZ3JhbXMgdG8gYnVpbGQKK2hvc3Rwcm9ncy15IDo9IGRzbG0KKworIyBUZWxsIGtidWlsZCB0byBhbHdheXMgYnVpbGQgdGhlIHByb2dyYW1zCithbHdheXMgOj0gJChob3N0cHJvZ3MteSkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbGFwdG9wcy9hc3VzLWxhcHRvcC50eHQgYi9Eb2N1bWVudGF0aW9uL2xhcHRvcHMvYXN1cy1sYXB0b3AudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5YTFiYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2xhcHRvcHMvYXN1cy1sYXB0b3AudHh0CkBAIC0wLDAgKzEsMjU3IEBACitBc3VzIExhcHRvcCBFeHRyYXMKKworVmVyc2lvbiAwLjEKK0F1Z3VzdCA2LCAyMDA5CisKK0NvcmVudGluIENoYXJ5IDxjb3JlbnRpbmNqQGlrc2FpZi5uZXQ+CitodHRwOi8vYWNwaTRhc3VzLnNmLm5ldC8KKworIFRoaXMgZHJpdmVyIHByb3ZpZGVzIHN1cHBvcnQgZm9yIGV4dHJhIGZlYXR1cmVzIG9mIEFDUEktY29tcGF0aWJsZSBBU1VTIGxhcHRvcHMuCisgSXQgbWF5IGFsc28gc3VwcG9ydCBzb21lIE1FRElPTiwgSlZDIG9yIFZJQ1RPUiBsYXB0b3BzIChzdWNoIGFzIE1FRElPTiA5Njc1IG9yCisgVklDVE9SIFhQNzIxMCBmb3IgZXhhbXBsZSkuIEl0IG1ha2VzIGFsbCB0aGUgZXh0cmEgYnV0dG9ucyBnZW5lcmF0ZSBpbnB1dAorIGV2ZW50cyAobGlrZSBrZXlib2FyZHMpLgorIE9uIHNvbWUgbW9kZWxzIGFkZHMgc3VwcG9ydCBmb3IgY2hhbmdpbmcgdGhlIGRpc3BsYXkgYnJpZ2h0bmVzcyBhbmQgb3V0cHV0LAorIHN3aXRjaGluZyB0aGUgTENEIGJhY2tsaWdodCBvbiBhbmQgb2ZmLCBhbmQgbW9zdCBpbXBvcnRhbnRseSwgYWxsb3dzIHlvdSB0bworIGJsaW5rIHRob3NlIGZhbmN5IExFRHMgaW50ZW5kZWQgZm9yIHJlcG9ydGluZyBtYWlsIGFuZCB3aXJlbGVzcyBzdGF0dXMuCisKK1RoaXMgZHJpdmVyIHN1cGVyY2VkZXMgdGhlIG9sZCBhc3VzX2FjcGkgZHJpdmVyLgorCitSZXF1aXJlbWVudHMKKy0tLS0tLS0tLS0tLQorCisgIEtlcm5lbCAyLjYuWCBzb3VyY2VzLCBjb25maWd1cmVkIGZvciB5b3VyIGNvbXB1dGVyLCB3aXRoIEFDUEkgc3VwcG9ydC4KKyAgWW91IGFsc28gbmVlZCBDT05GSUdfSU5QVVQgYW5kIENPTkZJR19BQ1BJLgorCitTdGF0dXMKKy0tLS0tLQorCisgVGhlIGZlYXR1cmVzIGN1cnJlbnRseSBzdXBwb3J0ZWQgYXJlIHRoZSBmb2xsb3dpbmcgKHNlZSBiZWxvdyBmb3IKKyBkZXRhaWxlZCBkZXNjcmlwdGlvbik6CisKKyAtIEZuIGtleSBjb21iaW5hdGlvbnMKKyAtIEJsdWV0b290aCBlbmFibGUgYW5kIGRpc2FibGUKKyAtIFdsYW4gZW5hYmxlIGFuZCBkaXNhYmxlCisgLSBHUFMgZW5hYmxlIGFuZCBkaXNhYmxlCisgLSBWaWRlbyBvdXRwdXQgc3dpdGNoaW5nCisgLSBBbWJpZW50IExpZ2h0IFNlbnNvciBvbiBhbmQgb2ZmCisgLSBMRUQgY29udHJvbAorIC0gTEVEIERpc3BsYXkgY29udHJvbAorIC0gTENEIGJyaWdodG5lc3MgY29udHJvbAorIC0gTENEIG9uIGFuZCBvZmYKKworIEEgY29tcGF0aWJpbGl0eSB0YWJsZSBieSBtb2RlbCBhbmQgZmVhdHVyZSBpcyBtYWludGFpbmVkIG9uIHRoZSB3ZWIKKyBzaXRlLCBodHRwOi8vYWNwaTRhc3VzLnNmLm5ldC8uCisKK1VzYWdlCistLS0tLQorCisgIFRyeSAibW9kcHJvYmUgYXN1cy1sYXB0b3AiLiBDaGVjayB5b3VyIGRtZXNnIChzaW1wbHkgdHlwZSBkbWVzZykuIFlvdSBzaG91bGQKKyAgc2VlIHNvbWUgbGluZXMgbGlrZSB0aGlzIDoKKworICAgICAgQXN1cyBMYXB0b3AgRXh0cmFzIHZlcnNpb24gMC40MgorICAgICAgICBMMkQgbW9kZWwgZGV0ZWN0ZWQuCisKKyAgSWYgaXQgaXMgbm90IHRoZSBvdXRwdXQgeW91IGhhdmUgb24geW91ciBsYXB0b3AsIHNlbmQgaXQgKGFuZCB0aGUgbGFwdG9wJ3MKKyAgRFNEVCkgdG8gbWUuCisKKyAgVGhhdCdzIGFsbCwgbm93LCBhbGwgdGhlIGV2ZW50cyBnZW5lcmF0ZWQgYnkgdGhlIGhvdGtleXMgb2YgeW91ciBsYXB0b3AKKyAgc2hvdWxkIGJlIHJlcG9ydGVkIHZpYSBuZXRsaW5rIGV2ZW50cy4gWW91IGNhbiBjaGVjayB3aXRoCisgICJhY3BpX2dlbmwgbW9uaXRvciIgKHBhcnQgb2YgdGhlIGFjcGljYSBwcm9qZWN0KS4KKworICBIb3RrZXlzIGFyZSBhbHNvIHJlcG9ydGVkIGFzIGlucHV0IGtleXMgKGxpa2Uga2V5Ym9hcmRzKSB5b3UgY2FuIGNoZWNrCisgIHdoaWNoIGtleSBhcmUgc3VwcG9ydGVkIHVzaW5nICJ4ZXYiIHVuZGVyIFgxMS4KKworICBZb3UgY2FuIGdldCBpbmZvcm1hdGlvbiBvbiB0aGUgdmVyc2lvbiBvZiB5b3VyIERTRFQgdGFibGUgYnkgcmVhZGluZyB0aGUKKyAgL3N5cy9kZXZpY2VzL3BsYXRmb3JtL2FzdXMtbGFwdG9wL2luZm9zIGVudHJ5LiBJZiB5b3UgaGF2ZSBhIHF1ZXN0aW9uIG9yIGEKKyAgYnVnIHJlcG9ydCB0byBkbywgcGxlYXNlIGluY2x1ZGUgdGhlIG91dHB1dCBvZiB0aGlzIGVudHJ5LgorCitMRURzCistLS0tCisKKyAgWW91IGNhbiBtb2RpZnkgTEVEcyBiZSBlY2hvaW5nIHZhbHVlcyB0byAvc3lzL2NsYXNzL2xlZHMvYXN1czo6Ki9icmlnaHRuZXNzIDoKKyAgICBlY2hvIDEgPiAgL3N5cy9jbGFzcy9sZWRzL2FzdXM6Om1haWwvYnJpZ2h0bmVzcworICB3aWxsIHN3aXRjaCB0aGUgbWFpbCBMRUQgb24uCisgIFlvdSBjYW4gYWxzbyBrbm93IGlmIHRoZXkgYXJlIG9uL29mZiBieSByZWFkaW5nIHRoZWlyIGNvbnRlbnQgYW5kIHVzZQorICBrZXJuZWwgdHJpZ2dlcnMgbGlrZSBpZGUtZGlzayBvciBoZWFydGJlYXQuCisKK0JhY2tsaWdodAorLS0tLS0tLS0tCisKKyAgWW91IGNhbiBjb250cm9sIGxjZCBiYWNrbGlnaHQgcG93ZXIgYW5kIGJyaWdodG5lc3Mgd2l0aAorICAvc3lzL2NsYXNzL2JhY2tsaWdodC9hc3VzLWxhcHRvcC8uIEJyaWdodG5lc3MgVmFsdWVzIGFyZSBiZXR3ZWVuIDAgYW5kIDE1LgorCitXaXJlbGVzcyBkZXZpY2VzCistLS0tLS0tLS0tLS0tLS0KKworICBZb3UgY2FuIHR1cm4gdGhlIGludGVybmFsIEJsdWV0b290aCBhZGFwdGVyIG9uL29mZiB3aXRoIHRoZSBibHVldG9vdGggZW50cnkKKyAgKG9ubHkgb24gbW9kZWxzIHdpdGggQmx1ZXRvb3RoKS4gVGhpcyB1c3VhbGx5IGNvbnRyb2xzIHRoZSBhc3NvY2lhdGVkIExFRC4KKyAgU2FtZSBmb3IgV2xhbiBhZGFwdGVyLgorCitEaXNwbGF5IHN3aXRjaGluZworLS0tLS0tLS0tLS0tLS0tLS0KKworICBOb3RlOiB0aGUgZGlzcGxheSBzd2l0Y2hpbmcgY29kZSBpcyBjdXJyZW50bHkgY29uc2lkZXJlZCBFWFBFUklNRU5UQUwuCisKKyAgU3dpdGNoaW5nIHdvcmtzIGZvciB0aGUgZm9sbG93aW5nIG1vZGVsczoKKyAgICBMMzgwMEMKKyAgICBBMjUwMEgKKyAgICBMNTgwMEMKKyAgICBNNTIwME4KKyAgICBXMTAwME4gKGFsYmVpdCB3aXRoIHNvbWUgZ2xpdGNoZXMpCisgICAgTTY3MDBSCisgICAgQTZKQworICAgIEYzSgorCisgIFN3aXRjaGluZyBkb2Vzbid0IHdvcmsgZm9yIHRoZSBmb2xsb3dpbmc6CisgICAgTTM3MDBOCisgICAgTDJYMDBEIChsb2NrcyB0aGUgbGFwdG9wIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucykKKworICBUbyBzd2l0Y2ggdGhlIGRpc3BsYXlzLCBlY2hvIHZhbHVlcyBmcm9tIDAgdG8gMTUgdG8KKyAgL3N5cy9kZXZpY2VzL3BsYXRmb3JtL2FzdXMtbGFwdG9wL2Rpc3BsYXkuIFRoZSBzaWduaWZpY2FuY2Ugb2YgdGhvc2UgdmFsdWVzCisgIGlzIGFzIGZvbGxvd3M6CisKKyAgKy0tLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgIHwgQmluICAgfCBWYWwgfCBEVkkgfCBUViAgfCBDUlQgfCBMQ0QgfAorICArLS0tLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAgKyAwMDAwICArICAgMCArICAgICArICAgICArICAgICArICAgICArCisgICstLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICArIDAwMDEgICsgICAxICsgICAgICsgICAgICsgICAgICsgIFggICsKKyAgKy0tLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgICsgMDAxMCAgKyAgIDIgKyAgICAgKyAgICAgKyAgWCAgKyAgICAgKworICArLS0tLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAgKyAwMDExICArICAgMyArICAgICArICAgICArICBYICArICBYICArCisgICstLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICArIDAxMDAgICsgICA0ICsgICAgICsgIFggICsgICAgICsgICAgICsKKyAgKy0tLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgICsgMDEwMSAgKyAgIDUgKyAgICAgKyAgWCAgKyAgICAgKyBYICAgKworICArLS0tLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAgKyAwMTEwICArICAgNiArICAgICArICBYICArICBYICArICAgICArCisgICstLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICArIDAxMTEgICsgICA3ICsgICAgICsgIFggICsgIFggICsgIFggICsKKyAgKy0tLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgICsgMTAwMCAgKyAgIDggKyAgWCAgKyAgICAgKyAgICAgKyAgICAgKworICArLS0tLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAgKyAxMDAxICArICAgOSArICBYICArICAgICArICAgICArICBYICArCisgICstLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICArIDEwMTAgICsgIDEwICsgIFggICsgICAgICsgIFggICsgICAgICsKKyAgKy0tLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgICsgMTAxMSAgKyAgMTEgKyAgWCAgKyAgICAgKyAgWCAgKyAgWCAgKworICArLS0tLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAgKyAxMTAwICArICAxMiArICBYICArICBYICArICAgICArICAgICArCisgICstLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworICArIDExMDEgICsgIDEzICsgIFggICsgIFggICsgICAgICsgIFggICsKKyAgKy0tLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgICsgMTExMCAgKyAgMTQgKyAgWCAgKyAgWCAgKyAgWCAgKyAgICAgKworICArLS0tLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAgKyAxMTExICArICAxNSArICBYICArICBYICArICBYICArICBYICArCisgICstLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworCisgIEluIG1vc3QgY2FzZXMsIHRoZSBhcHByb3ByaWF0ZSBkaXNwbGF5cyBtdXN0IGJlIHBsdWdnZWQgaW4gZm9yIHRoZSBhYm92ZQorICBjb21iaW5hdGlvbnMgdG8gd29yay4gVFYtT3V0IG1heSBuZWVkIHRvIGJlIGluaXRpYWxpemVkIGF0IGJvb3QgdGltZS4KKworICBEZWJ1Z2dpbmc6CisgIDEpIENoZWNrIHdoZXRoZXIgdGhlIEZuK0Y4IGtleToKKyAgICAgYSkgZG9lcyBub3QgbG9jayB0aGUgbGFwdG9wICh0cnkgYSBib290IHdpdGggbm9hcGljIC8gbm9sYXBpYyBpZiBpdCBkb2VzKQorICAgICBiKSBnZW5lcmF0ZXMgZXZlbnRzICgweDZuLCB3aGVyZSBuIGlzIHRoZSB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZQorICAgICAgICBjb25maWd1cmF0aW9uIGFib3ZlKQorICAgICBjKSBhY3R1YWxseSB3b3JrcworICAgICBSZWNvcmQgdGhlIGRpc3AgdmFsdWUgYXQgZXZlcnkgY29uZmlndXJhdGlvbi4KKyAgMikgRWNobyB2YWx1ZXMgZnJvbSAwIHRvIDE1IHRvIC9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9hc3VzLWxhcHRvcC9kaXNwbGF5LgorICAgICBSZWNvcmQgaXRzIHZhbHVlLCBub3RlIGFueSBjaGFuZ2UuIElmIG5vdGhpbmcgY2hhbmdlcywgdHJ5IGEgYnJvYWRlciByYW5nZSwKKyAgICAgdXAgdG8gNjU1MzUuCisgIDMpIFNlbmQgQU5ZIG91dHB1dCAoYm90aCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgcmVwb3J0cyBhcmUgbmVlZGVkLCB1bmxlc3MgeW91cgorICAgICBtYWNoaW5lIGlzIGFscmVhZHkgbGlzdGVkIGFib3ZlKSB0byB0aGUgYWNwaTRhc3VzLXVzZXIgbWFpbGluZyBsaXN0LgorCisgIE5vdGU6IG9uIHNvbWUgbWFjaGluZXMgKGUuZy4gTDNDKSwgYWZ0ZXIgdGhlIG1vZHVsZSBoYXMgYmVlbiBsb2FkZWQsIG9ubHkgMHg2bgorICBldmVudHMgYXJlIGdlbmVyYXRlZCBhbmQgbm8gYWN0dWFsIHN3aXRjaGluZyBvY2N1cnMuIEluIHN1Y2ggYSBjYXNlLCBhIGxpbmUKKyAgbGlrZToKKworICAgIGVjaG8gJCgoMTAjJGFyZy02MCkpID4gL3N5cy9kZXZpY2VzL3BsYXRmb3JtL2FzdXMtbGFwdG9wL2Rpc3BsYXkKKworICB3aWxsIHVzdWFsbHkgZG8gdGhlIHRyaWNrICgkYXJnIGlzIHRoZSAwMDAwMDA2bi1saWtlIGV2ZW50IHBhc3NlZCB0byBhY3BpZCkuCisKKyAgTm90ZTogdGhlcmUgaXMgY3VycmVudGx5IG5vIHJlbGlhYmxlIHdheSB0byByZWFkIGRpc3BsYXkgc3RhdHVzIG9uIHh4TgorICAoQ2VudHJpbm8pIG1vZGVscy4KKworTEVEIGRpc3BsYXkKKy0tLS0tLS0tLS0tCisKKyAgU29tZSBtb2RlbHMgbGlrZSB0aGUgVzFOIGhhdmUgYSBMRUQgZGlzcGxheSB0aGF0IGNhbiBiZSB1c2VkIHRvIGRpc3BsYXkKKyAgc2V2ZXJhbCBpdGVtcyBvZiBpbmZvcm1hdGlvbi4KKworICBMRUQgZGlzcGxheSB3b3JrcyBmb3IgdGhlIGZvbGxvd2luZyBtb2RlbHM6CisgICAgVzEwMDBOCisgICAgVzFKCisKKyAgVG8gY29udHJvbCB0aGUgTEVEIGRpc3BsYXksIHVzZSB0aGUgZm9sbG93aW5nIDoKKworICAgIGVjaG8gMHgwVDAwMERERCA+IC9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9hc3VzLWxhcHRvcC8KKworICB3aGVyZSBUIGNvbnRyb2wgdGhlIDMgbGV0dGVycyBkaXNwbGF5LCBhbmQgREREIHRoZSAzIGRpZ2l0cyBkaXNwbGF5LAorICBhY2NvcmRpbmcgdG8gdGhlIHRhYmxlcyBiZWxvdy4KKworICAgICAgICAgREREIChkaWdpdHMpCisgICAgICAgICAwMDAgdG8gOTk5ID0gZGlzcGxheSBkaWdpdHMKKyAgICAgICAgIEFBQSAgICAgICAgPSAtLS0KKyAgICAgICAgIEJCQiB0byBGRkYgPSB0dXJuLW9mZgorCisgICAgICAgICBUICAodHlwZSkKKyAgICAgICAgIDAgPSBvZmYKKyAgICAgICAgIDEgPSBkdmQKKyAgICAgICAgIDIgPSB2Y2QKKyAgICAgICAgIDMgPSBtcDMKKyAgICAgICAgIDQgPSBjZAorICAgICAgICAgNSA9IHR2CisgICAgICAgICA2ID0gY3B1CisgICAgICAgICA3ID0gdm9sCisKKyAgRm9yIGV4YW1wbGUgImVjaG8gMHgwMTAwMDAwMSA+L3N5cy9kZXZpY2VzL3BsYXRmb3JtL2FzdXMtbGFwdG9wL2xlZGQiCisgIHdvdWxkIGRpc3BsYXkgIkRWRDAwMSIuCisKK0RyaXZlciBvcHRpb25zOgorLS0tLS0tLS0tLS0tLS0tCisKKyBPcHRpb25zIGNhbiBiZSBwYXNzZWQgdG8gdGhlIGFzdXMtbGFwdG9wIGRyaXZlciB1c2luZyB0aGUgc3RhbmRhcmQKKyBtb2R1bGUgYXJndW1lbnQgc3ludGF4ICg8cGFyYW0+PTx2YWx1ZT4gd2hlbiBwYXNzaW5nIHRoZSBvcHRpb24gdG8gdGhlCisgbW9kdWxlIG9yIGFzdXMtbGFwdG9wLjxwYXJhbT49PHZhbHVlPiBvbiB0aGUga2VybmVsIGJvb3QgbGluZSB3aGVuCisgYXN1cy1sYXB0b3AgaXMgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUga2VybmVsKS4KKworCSAgICAgd2FwZjogV0FQRiBkZWZpbmVzIHRoZSBiZWhhdmlvciBvZiB0aGUgRm4rRnggd2xhbiBrZXkKKwkJICAgVGhlIHNpZ25pZmljYW5jZSBvZiB2YWx1ZXMgaXMgeWV0IHRvIGJlIGZvdW5kLCBidXQKKwkJICAgbW9zdCBvZiB0aGUgdGltZToKKwkJICAgLSAweDAgc2hvdWxkIGRvIG5vdGhpbmcKKwkJICAgLSAweDEgc2hvdWxkIGFsbG93IHRvIGNvbnRyb2wgdGhlIGRldmljZSB3aXRoIEZuK0Z4IGtleS4KKwkJICAgLSAweDQgc2hvdWxkIHNlbmQgYW4gQUNQSSBldmVudCAoMHg4OCkgd2hpbGUgcHJlc3NpbmcgdGhlIEZuK0Z4IGtleQorCQkgICAtIDB4NSBsaWtlIDB4MSBvciAweDQKKworIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDB4MS4KKworVW5zdXBwb3J0ZWQgbW9kZWxzCistLS0tLS0tLS0tLS0tLS0tLS0KKworIFRoZXNlIG1vZGVscyB3aWxsIG5ldmVyIGJlIHN1cHBvcnRlZCBieSB0aGlzIG1vZHVsZSwgYXMgdGhleSB1c2UgYSBjb21wbGV0ZWx5CisgZGlmZmVyZW50IG1lY2hhbmlzbSB0byBoYW5kbGUgTEVEcyBhbmQgZXh0cmEgc3R1ZmYgKG1lYW5pbmcgd2UgaGF2ZSBubyBjbHVlCisgaG93IGl0IHdvcmtzKToKKworIC0gQVNVUyBBMTMwMCAoQTFCKSwgQTEzNzBECisgLSBBU1VTIEw3MzAwRworIC0gQVNVUyBMODQwMAorCitQYXRjaGVzLCBFcnJvcnMsIFF1ZXN0aW9uczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyBJIGFwcHJlY2lhdGUgYW55IHN1Y2Nlc3Mgb3IgZmFpbHVyZQorIHJlcG9ydHMsIGVzcGVjaWFsbHkgaWYgdGhleSBhZGQgdG8gb3IgY29ycmVjdCB0aGUgY29tcGF0aWJpbGl0eSB0YWJsZS4KKyBQbGVhc2UgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGluIHlvdXIgcmVwb3J0OgorCisgLSBBc3VzIG1vZGVsIG5hbWUKKyAtIGEgY29weSBvZiB5b3VyIEFDUEkgdGFibGVzLCB1c2luZyB0aGUgImFjcGlkdW1wIiB1dGlsaXR5CisgLSBhIGNvcHkgb2YgL3N5cy9kZXZpY2VzL3BsYXRmb3JtL2FzdXMtbGFwdG9wL2luZm9zCisgLSB3aGljaCBkcml2ZXIgZmVhdHVyZXMgd29yayBhbmQgd2hpY2ggZG9uJ3QKKyAtIHRoZSBvYnNlcnZlZCBiZWhhdmlvciBvZiBub24td29ya2luZyBmZWF0dXJlcworCisgQW55IG90aGVyIGNvbW1lbnRzIG9yIHBhdGNoZXMgYXJlIGFsc28gbW9yZSB0aGFuIHdlbGNvbWUuCisKKyBhY3BpNGFzdXMtdXNlckBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKKyBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2FjcGk0YXN1cworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2xhcHRvcHMvZGlzay1zaG9jay1wcm90ZWN0aW9uLnR4dCBiL0RvY3VtZW50YXRpb24vbGFwdG9wcy9kaXNrLXNob2NrLXByb3RlY3Rpb24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNmJhMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2xhcHRvcHMvZGlzay1zaG9jay1wcm90ZWN0aW9uLnR4dApAQCAtMCwwICsxLDE0OSBAQAorSGFyZCBkaXNrIHNob2NrIHByb3RlY3Rpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0F1dGhvcjogRWxpYXMgT2x0bWFubnMgPGVvQG5lYmVuc2FjaGVuLmRlPgorTGFzdCBtb2RpZmllZDogMjAwOC0xMC0wMworCisKKzAuIENvbnRlbnRzCistLS0tLS0tLS0tLQorCisxLiBJbnRybworMi4gVGhlIGludGVyZmFjZQorMy4gUmVmZXJlbmNlcworNC4gQ1JFRElUUworCisKKzEuIEludHJvCistLS0tLS0tLQorCitBVEEvQVRBUEktNyBzcGVjaWZpZXMgdGhlIElETEUgSU1NRURJQVRFIGNvbW1hbmQgd2l0aCB1bmxvYWQgZmVhdHVyZS4KK0lzc3VpbmcgdGhpcyBjb21tYW5kIHNob3VsZCBjYXVzZSB0aGUgZHJpdmUgdG8gc3dpdGNoIHRvIGlkbGUgbW9kZSBhbmQKK3VubG9hZCBkaXNrIGhlYWRzLiBUaGlzIGZlYXR1cmUgaXMgYmVpbmcgdXNlZCBpbiBtb2Rlcm4gbGFwdG9wcyBpbgorY29uanVuY3Rpb24gd2l0aCBhY2NlbGVyb21ldGVycyBhbmQgYXBwcm9wcmlhdGUgc29mdHdhcmUgdG8gaW1wbGVtZW50CithIHNob2NrIHByb3RlY3Rpb24gZmFjaWxpdHkuIFRoZSBpZGVhIGlzIHRvIHN0b3AgYWxsIEkvTyBvcGVyYXRpb25zIG9uCit0aGUgaW50ZXJuYWwgaGFyZCBkcml2ZSBhbmQgcGFyayBpdHMgaGVhZHMgb24gdGhlIHJhbXAgd2hlbiBjcml0aWNhbAorc2l0dWF0aW9ucyBhcmUgYW50aWNpcGF0ZWQuIFRoZSBkZXNpcmUgdG8gaGF2ZSBzdWNoIGEgZmVhdHVyZQorYXZhaWxhYmxlIG9uIEdOVS9MaW51eCBzeXN0ZW1zIGhhcyBiZWVuIHRoZSBvcmlnaW5hbCBtb3RpdmF0aW9uIHRvCitpbXBsZW1lbnQgYSBnZW5lcmljIGRpc2sgaGVhZCBwYXJraW5nIGludGVyZmFjZSBpbiB0aGUgTGludXgga2VybmVsLgorUGxlYXNlIG5vdGUsIGhvd2V2ZXIsIHRoYXQgb3RoZXIgY29tcG9uZW50cyBoYXZlIHRvIGJlIHNldCB1cCBvbiB5b3VyCitzeXN0ZW0gaW4gb3JkZXIgdG8gZ2V0IGRpc2sgc2hvY2sgcHJvdGVjdGlvbiB3b3JraW5nIChzZWUKK3NlY3Rpb24gMy4gUmVmZXJlbmNlcyBiZWxvdyBmb3IgcG9pbnRlcnMgdG8gbW9yZSBpbmZvcm1hdGlvbiBhYm91dAordGhhdCkuCisKKworMi4gVGhlIGludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tLQorCitGb3IgZWFjaCBBVEEgZGV2aWNlLCB0aGUga2VybmVsIGV4cG9ydHMgdGhlIGZpbGUKK2Jsb2NrLyovZGV2aWNlL3VubG9hZF9oZWFkcyBpbiBzeXNmcyAoaGVyZSBhc3N1bWVkIHRvIGJlIG1vdW50ZWQgdW5kZXIKKy9zeXMpLiBBY2Nlc3MgdG8gL3N5cy9ibG9jay8qL2RldmljZS91bmxvYWRfaGVhZHMgaXMgZGVuaWVkIHdpdGgKKy1FT1BOT1RTVVBQIGlmIHRoZSBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCB0aGUgdW5sb2FkIGZlYXR1cmUuCitPdGhlcndpc2UsIHdyaXRpbmcgYW4gaW50ZWdlciB2YWx1ZSB0byB0aGlzIGZpbGUgd2lsbCB0YWtlIHRoZSBoZWFkcworb2YgdGhlIHJlc3BlY3RpdmUgZHJpdmUgb2ZmIHRoZSBwbGF0dGVyIGFuZCBibG9jayBhbGwgSS9PIG9wZXJhdGlvbnMKK2ZvciB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMuIFdoZW4gdGhlIHRpbWVvdXQgZXhwaXJlcyBhbmQKK25vIGZ1cnRoZXIgZGlzayBoZWFkIHBhcmsgcmVxdWVzdCBoYXMgYmVlbiBpc3N1ZWQgaW4gdGhlIG1lYW50aW1lLAorbm9ybWFsIG9wZXJhdGlvbiB3aWxsIGJlIHJlc3VtZWQuIFRoZSBtYXhpbWFsIHZhbHVlIGFjY2VwdGVkIGZvciBhCit0aW1lb3V0IGlzIDMwMDAwIG1pbGxpc2Vjb25kcy4gRXhjZWVkaW5nIHRoaXMgbGltaXQgd2lsbCByZXR1cm4KKy1FT1ZFUkZMT1csIGJ1dCBoZWFkcyB3aWxsIGJlIHBhcmtlZCBhbnl3YXkgYW5kIHRoZSB0aW1lb3V0IHdpbGwgYmUKK3NldCB0byAzMCBzZWNvbmRzLiBIb3dldmVyLCB5b3UgY2FuIGFsd2F5cyBjaGFuZ2UgYSB0aW1lb3V0IHRvIGFueQordmFsdWUgYmV0d2VlbiAwIGFuZCAzMDAwMCBieSBpc3N1aW5nIGEgc3Vic2VxdWVudCBoZWFkIHBhcmsgcmVxdWVzdAorYmVmb3JlIHRoZSB0aW1lb3V0IG9mIHRoZSBwcmV2aW91cyBvbmUgaGFzIGV4cGlyZWQuIEluIHBhcnRpY3VsYXIsIHRoZQordG90YWwgdGltZW91dCBjYW4gZXhjZWVkIDMwIHNlY29uZHMgYW5kLCBtb3JlIGltcG9ydGFudGx5LCB5b3UgY2FuCitjYW5jZWwgYSBwcmV2aW91c2x5IHNldCB0aW1lb3V0IGFuZCByZXN1bWUgbm9ybWFsIG9wZXJhdGlvbgoraW1tZWRpYXRlbHkgYnkgc3BlY2lmeWluZyBhIHRpbWVvdXQgb2YgMC4gVmFsdWVzIGJlbG93IC0yIGFyZSByZWplY3RlZAord2l0aCAtRUlOVkFMIChzZWUgYmVsb3cgZm9yIHRoZSBzcGVjaWFsIG1lYW5pbmcgb2YgLTEgYW5kIC0yKS4gSWYgdGhlCit0aW1lb3V0IHNwZWNpZmllZCBmb3IgYSByZWNlbnQgaGVhZCBwYXJrIHJlcXVlc3QgaGFzIG5vdCB5ZXQgZXhwaXJlZCwKK3JlYWRpbmcgZnJvbSAvc3lzL2Jsb2NrLyovZGV2aWNlL3VubG9hZF9oZWFkcyB3aWxsIHJlcG9ydCB0aGUgbnVtYmVyCitvZiBtaWxsaXNlY29uZHMgcmVtYWluaW5nIHVudGlsIG5vcm1hbCBvcGVyYXRpb24gd2lsbCBiZSByZXN1bWVkOworb3RoZXJ3aXNlLCByZWFkaW5nIHRoZSB1bmxvYWRfaGVhZHMgYXR0cmlidXRlIHdpbGwgcmV0dXJuIDAuCisKK0ZvciBleGFtcGxlLCBkbyB0aGUgZm9sbG93aW5nIGluIG9yZGVyIHRvIHBhcmsgdGhlIGhlYWRzIG9mIGRyaXZlCisvZGV2L3NkYSBhbmQgc3RvcCBhbGwgSS9PIG9wZXJhdGlvbnMgZm9yIGZpdmUgc2Vjb25kczoKKworIyBlY2hvIDUwMDAgPiAvc3lzL2Jsb2NrL3NkYS9kZXZpY2UvdW5sb2FkX2hlYWRzCisKK0Egc2ltcGxlCisKKyMgY2F0IC9zeXMvYmxvY2svc2RhL2RldmljZS91bmxvYWRfaGVhZHMKKword2lsbCBzaG93IHlvdSBob3cgbWFueSBtaWxsaXNlY29uZHMgYXJlIGxlZnQgYmVmb3JlIG5vcm1hbCBvcGVyYXRpb24KK3dpbGwgYmUgcmVzdW1lZC4KKworQSB3b3JkIG9mIGNhdXRpb246IFRoZSBmYWN0IHRoYXQgdGhlIGludGVyZmFjZSBvcGVyYXRlcyBvbiBhIGJhc2lzIG9mCittaWxsaXNlY29uZHMgbWF5IHJhaXNlIGV4cGVjdGF0aW9ucyB0aGF0IGNhbm5vdCBiZSBzYXRpc2ZpZWQgaW4KK3JlYWxpdHkuIEluIGZhY3QsIHRoZSBBVEEgc3BlY3MgY2xlYXJseSBzdGF0ZSB0aGF0IHRoZSB0aW1lIGZvciBhbgordW5sb2FkIG9wZXJhdGlvbiB0byBjb21wbGV0ZSBpcyB2ZW5kb3Igc3BlY2lmaWMuIFRoZSBoaW50IGluIEFUQS03Cit0aGF0IHRoaXMgd2lsbCB0eXBpY2FsbHkgYmUgd2l0aGluIDUwMCBtaWxsaXNlY29uZHMgYXBwYXJlbnRseSBoYXMKK2JlZW4gZHJvcHBlZCBpbiBBVEEtOC4KKworVGhlcmUgaXMgYSB0ZWNobmljYWwgZGV0YWlsIG9mIHRoaXMgaW1wbGVtZW50YXRpb24gdGhhdCBtYXkgY2F1c2Ugc29tZQorY29uZnVzaW9uIGFuZCBzaG91bGQgYmUgZGlzY3Vzc2VkIGhlcmUuIFdoZW4gYSBoZWFkIHBhcmsgcmVxdWVzdCBoYXMKK2JlZW4gaXNzdWVkIHRvIGEgZGV2aWNlIHN1Y2Nlc3NmdWxseSwgYWxsIEkvTyBvcGVyYXRpb25zIG9uIHRoZQorY29udHJvbGxlciBwb3J0IHRoaXMgZGV2aWNlIGlzIGF0dGFjaGVkIHRvIHdpbGwgYmUgZGVmZXJyZWQuIFRoYXQgaXMKK3RvIHNheSwgYW55IG90aGVyIGRldmljZSB0aGF0IG1heSBiZSBjb25uZWN0ZWQgdG8gdGhlIHNhbWUgcG9ydCB3aWxsCitiZSBhZmZlY3RlZCB0b28uIFRoZSBvbmx5IGV4Y2VwdGlvbiBpcyB0aGF0IGEgc3Vic2VxdWVudCBoZWFkIHVubG9hZAorcmVxdWVzdCB0byB0aGF0IG90aGVyIGRldmljZSB3aWxsIGJlIGV4ZWN1dGVkIGltbWVkaWF0ZWx5LiBGdXJ0aGVyCitvcGVyYXRpb25zIG9uIHRoYXQgcG9ydCB3aWxsIGJlIGRlZmVycmVkIHVudGlsIHRoZSB0aW1lb3V0IHNwZWNpZmllZAorZm9yIGVpdGhlciBkZXZpY2Ugb24gdGhlIHBvcnQgaGFzIGV4cGlyZWQuIEFzIGZhciBhcyBQQVRBIChvbGQgc3R5bGUKK0lERSkgY29uZmlndXJhdGlvbnMgYXJlIGNvbmNlcm5lZCwgdGhlcmUgY2FuIG9ubHkgYmUgdHdvIGRldmljZXMKK2F0dGFjaGVkIHRvIGFueSBzaW5nbGUgcG9ydC4gSW4gU0FUQSB3b3JsZCB3ZSBoYXZlIHBvcnQgbXVsdGlwbGllcnMKK3doaWNoIG1lYW5zIHRoYXQgYSB1c2VyLWlzc3VlZCBoZWFkIHBhcmtpbmcgcmVxdWVzdCB0byBvbmUgZGV2aWNlIG1heQorYWN0dWFsbHkgcmVzdWx0IGluIHN0b3BwaW5nIEkvTyB0byBhIHdob2xlIGJ1bmNoIG9mIGRldmljZXMuIEhvd2V2ZXIsCitzaW5jZSB0aGlzIGZlYXR1cmUgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBvbiBsYXB0b3BzIGFuZCBkb2VzIG5vdCBzZWVtCit0byBiZSB2ZXJ5IHVzZWZ1bCBpbiBhbnkgb3RoZXIgZW52aXJvbm1lbnQsIHRoZXJlIHdpbGwgYmUgbW9zdGx5IG9uZQorZGV2aWNlIHBlciBwb3J0LiBFdmVuIGlmIHRoZSBDRC9EVkQgd3JpdGVyIGhhcHBlbnMgdG8gYmUgY29ubmVjdGVkIHRvCit0aGUgc2FtZSBwb3J0IGFzIHRoZSBoYXJkIGRyaXZlLCBpdCBnZW5lcmFsbHkgKnNob3VsZCogcmVjb3ZlciBqdXN0CitmaW5lIGZyb20gdGhlIG9jY2FzaW9uYWwgYnVmZmVyIHVuZGVyLXJ1biBpbmN1cnJlZCBieSBhIGhlYWQgcGFyaworcmVxdWVzdCB0byB0aGUgSEQuIEFjdHVhbGx5LCB3aGVuIHlvdSBhcmUgdXNpbmcgYW4gaWRlIGRyaXZlciByYXRoZXIKK3RoYW4gaXRzIGxpYmF0YSBjb3VudGVycGFydCAoaS5lLiB5b3VyIGRpc2sgaXMgY2FsbGVkIC9kZXYvaGRhCitpbnN0ZWFkIG9mIC9kZXYvc2RhKSwgdGhlbiBwYXJraW5nIHRoZSBoZWFkcyBvZiBvbmUgZHJpdmUgKGRyaXZlIFgpCit3aWxsIGdlbmVyYWxseSBub3QgYWZmZWN0IHRoZSBtb2RlIG9mIG9wZXJhdGlvbiBvZiBhbm90aGVyIGRyaXZlCisoZHJpdmUgWSkgb24gdGhlIHNhbWUgcG9ydCBhcyBkZXNjcmliZWQgYWJvdmUuIEl0IGlzIG9ubHkgd2hlbiBhIHBvcnQKK3Jlc2V0IGlzIHJlcXVpcmVkIHRvIHJlY292ZXIgZnJvbSBhbiBleGNlcHRpb24gb24gZHJpdmUgWSB0aGF0IGZ1cnRoZXIKK0kvTyBvcGVyYXRpb25zIG9uIHRoYXQgZHJpdmUgKGFuZCB0aGUgcmVzZXQgaXRzZWxmKSB3aWxsIGJlIGRlbGF5ZWQKK3VudGlsIGRyaXZlIFggaXMgbm8gbG9uZ2VyIGluIHRoZSBwYXJrZWQgc3RhdGUuCisKK0ZpbmFsbHksIHRoZXJlIGFyZSBzb21lIGhhcmQgZHJpdmVzIHRoYXQgb25seSBjb21wbHkgd2l0aCBhbiBlYXJsaWVyCit2ZXJzaW9uIG9mIHRoZSBBVEEgc3RhbmRhcmQgdGhhbiBBVEEtNywgYnV0IGRvIHN1cHBvcnQgdGhlIHVubG9hZAorZmVhdHVyZSBub25ldGhlbGVzcy4gVW5mb3J0dW5hdGVseSwgdGhlcmUgaXMgbm8gc2FmZSB3YXkgTGludXggY2FuCitkZXRlY3QgdGhlc2UgZGV2aWNlcywgc28geW91IHdvbid0IGJlIGFibGUgdG8gd3JpdGUgdG8gdGhlCit1bmxvYWRfaGVhZHMgYXR0cmlidXRlLiBJZiB5b3Uga25vdyB0aGF0IHlvdXIgZGV2aWNlIHJlYWxseSBkb2VzCitzdXBwb3J0IHRoZSB1bmxvYWQgZmVhdHVyZSAoZm9yIGluc3RhbmNlLCBiZWNhdXNlIHRoZSB2ZW5kb3Igb2YgeW91cgorbGFwdG9wIG9yIHRoZSBoYXJkIGRyaXZlIGl0c2VsZiB0b2xkIHlvdSBzbyksIHRoZW4geW91IGNhbiB0ZWxsIHRoZQora2VybmVsIHRvIGVuYWJsZSB0aGUgdXNhZ2Ugb2YgdGhpcyBmZWF0dXJlIGZvciB0aGF0IGRyaXZlIGJ5IHdyaXRpbmcKK3RoZSBzcGVjaWFsIHZhbHVlIC0xIHRvIHRoZSB1bmxvYWRfaGVhZHMgYXR0cmlidXRlOgorCisjIGVjaG8gLTEgPiAvc3lzL2Jsb2NrL3NkYS9kZXZpY2UvdW5sb2FkX2hlYWRzCisKK3dpbGwgZW5hYmxlIHRoZSBmZWF0dXJlIGZvciAvZGV2L3NkYSwgYW5kIGdpdmluZyAtMiBpbnN0ZWFkIG9mIC0xIHdpbGwKK2Rpc2FibGUgaXQgYWdhaW4uCisKKworMy4gUmVmZXJlbmNlcworLS0tLS0tLS0tLS0tLQorCitUaGVyZSBhcmUgc2V2ZXJhbCBsYXB0b3BzIGZyb20gZGlmZmVyZW50IHZlbmRvcnMgZmVhdHVyaW5nIHNob2NrCitwcm90ZWN0aW9uIGNhcGFiaWxpdGllcy4gQXMgbWFudWZhY3R1cmVycyBoYXZlIHJlZnVzZWQgdG8gc3VwcG9ydCBvcGVuCitzb3VyY2UgZGV2ZWxvcG1lbnQgb2YgdGhlIHJlcXVpcmVkIHNvZnR3YXJlIGNvbXBvbmVudHMgc28gZmFyLCBMaW51eAorc3VwcG9ydCBmb3Igc2hvY2sgcHJvdGVjdGlvbiB2YXJpZXMgY29uc2lkZXJhYmx5IGJldHdlZW4gZGlmZmVyZW50CitoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbnMuIElkZWFsbHksIHRoaXMgc2VjdGlvbiBzaG91bGQgY29udGFpbiBhIGxpc3QKK29mIHBvaW50ZXJzIGF0IGRpZmZlcmVudCBwcm9qZWN0cyBhaW1pbmcgYXQgYW4gaW1wbGVtZW50YXRpb24gb2Ygc2hvY2sKK3Byb3RlY3Rpb24gb24gZGlmZmVyZW50IHN5c3RlbXMuIFVuZm9ydHVuYXRlbHksIEkgb25seSBrbm93IG9mIGEKK3NpbmdsZSBwcm9qZWN0IHdoaWNoLCBhbHRob3VnaCBzdGlsbCBjb25zaWRlcmVkIGV4cGVyaW1lbnRhbCwgaXMgZml0Citmb3IgdXNlLiBQbGVhc2UgZmVlbCBmcmVlIHRvIGFkZCBwcm9qZWN0cyB0aGF0IGhhdmUgYmVlbiB0aGUgdmljdGltcworb2YgbXkgaWdub3JhbmNlLgorCistIGh0dHA6Ly93d3cudGhpbmt3aWtpLm9yZy93aWtpL0hEQVBTCisgIFNlZSB0aGlzIHBhZ2UgZm9yIGluZm9ybWF0aW9uIGFib3V0IExpbnV4IHN1cHBvcnQgb2YgdGhlIGhhcmQgZGlzaworICBhY3RpdmUgcHJvdGVjdGlvbiBzeXN0ZW0gYXMgaW1wbGVtZW50ZWQgaW4gSUJNL0xlbm92byBUaGlua3BhZHMuCisKKworNC4gQ1JFRElUUworLS0tLS0tLS0tLQorCitUaGlzIGltcGxlbWVudGF0aW9uIG9mIGRpc2sgaGVhZCBwYXJraW5nIGhhcyBiZWVuIGluc3BpcmVkIGJ5IGEgcGF0Y2gKK29yaWdpbmFsbHkgcHVibGlzaGVkIGJ5IEpvbiBFc2NvbWJlIDxsaXN0c0BkcmVzY28uY28udWs+LiBNeSBlZmZvcnRzCit0byBkZXZlbG9wIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZmVhdHVyZSB0aGF0IGlzIGZpdCB0byBiZSBtZXJnZWQKK2ludG8gbWFpbmxpbmUgaGF2ZSBiZWVuIGFpZGVkIGJ5IHZhcmlvdXMga2VybmVsIGRldmVsb3BlcnMsIGluCitwYXJ0aWN1bGFyIGJ5IFRlanVuIEhlbyBhbmQgQmFydGxvbWllaiBab2xuaWVya2lld2ljei4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbGFwdG9wcy9kc2xtLmMgYi9Eb2N1bWVudGF0aW9uL2xhcHRvcHMvZHNsbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1ZGQyZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2xhcHRvcHMvZHNsbS5jCkBAIC0wLDAgKzEsMTY2IEBACisvKgorICogZHNsbS5jCisgKiBTaW1wbGUgRGlzayBTbGVlcCBNb25pdG9yCisgKiAgYnkgQmFydGVrIEthbmlhCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgR1BMCisgKi8KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8bGludXgvaGRyZWcuaD4KKworI2lmZGVmIERFQlVHCisjZGVmaW5lIEQoeCkgeAorI2Vsc2UKKyNkZWZpbmUgRCh4KQorI2VuZGlmCisKK2ludCBlbmRpdCA9IDA7CisKKy8qIENoZWNrIGlmIHRoZSBkaXNrIGlzIGluIHBvd2Vyc2F2ZS1tb2RlCisgKiBNb3N0IG9mIHRoZSBjb2RlIGlzIHN0b2xlbiBmcm9tIGhkcGFybS4KKyAqIDEgPSBhY3RpdmUsIDAgPSBzdGFuZGJ5L3NsZWVwLCAtMSA9IHVua25vd24gKi8KK3N0YXRpYyBpbnQgY2hlY2tfcG93ZXJtb2RlKGludCBmZCkKK3sKKyAgICB1bnNpZ25lZCBjaGFyIGFyZ3NbNF0gPSB7V0lOX0NIRUNLUE9XRVJNT0RFMSwwLDAsMH07CisgICAgaW50IHN0YXRlOworCisgICAgaWYgKGlvY3RsKGZkLCBIRElPX0RSSVZFX0NNRCwgJmFyZ3MpCisJJiYgKGFyZ3NbMF0gPSBXSU5fQ0hFQ0tQT1dFUk1PREUyKSAvKiB0cnkgYWdhaW4gd2l0aCAweDk4ICovCisJJiYgaW9jdGwoZmQsIEhESU9fRFJJVkVfQ01ELCAmYXJncykpIHsKKwlpZiAoZXJybm8gIT0gRUlPIHx8IGFyZ3NbMF0gIT0gMCB8fCBhcmdzWzFdICE9IDApIHsKKwkgICAgc3RhdGUgPSAtMTsgLyogInVua25vd24iOyAqLworCX0gZWxzZQorCSAgICBzdGF0ZSA9IDA7IC8qICJzbGVlcGluZyI7ICovCisgICAgfSBlbHNlIHsKKwlzdGF0ZSA9IChhcmdzWzJdID09IDI1NSkgPyAxIDogMDsKKyAgICB9CisgICAgRChwcmludGYoIiBkcml2ZSBzdGF0ZSBpczogICVkXG4iLCBzdGF0ZSkpOworCisgICAgcmV0dXJuIHN0YXRlOworfQorCitzdGF0aWMgY2hhciAqc3RhdGVfbmFtZShpbnQgaSkKK3sKKyAgICBpZiAoaSA9PSAtMSkgcmV0dXJuICJ1bmtub3duIjsKKyAgICBpZiAoaSA9PSAwKSByZXR1cm4gInNsZWVwaW5nIjsKKyAgICBpZiAoaSA9PSAxKSByZXR1cm4gImFjdGl2ZSI7CisKKyAgICByZXR1cm4gImludGVybmFsIGVycm9yIjsKK30KKworc3RhdGljIGNoYXIgKm15Y3RpbWUodGltZV90IHRpbWUpCit7CisgICAgY2hhciAqdHMgPSBjdGltZSgmdGltZSk7CisgICAgdHNbc3RybGVuKHRzKSAtIDFdID0gMDsKKworICAgIHJldHVybiB0czsKK30KKworc3RhdGljIHZvaWQgbWVhc3VyZShpbnQgZmQpCit7CisgICAgdGltZV90IHN0YXJ0X3RpbWU7CisgICAgaW50IGxhc3Rfc3RhdGU7CisgICAgdGltZV90IGxhc3RfdGltZTsKKyAgICBpbnQgY3Vycl9zdGF0ZTsKKyAgICB0aW1lX3QgY3Vycl90aW1lID0gMDsKKyAgICB0aW1lX3QgdGltZV9kaWZmOworICAgIHRpbWVfdCBhY3RpdmVfdGltZSA9IDA7CisgICAgdGltZV90IHNsZWVwX3RpbWUgPSAwOworICAgIHRpbWVfdCB1bmtub3duX3RpbWUgPSAwOworICAgIHRpbWVfdCB0b3RhbF90aW1lID0gMDsKKyAgICBpbnQgY2hhbmdlcyA9IDA7CisgICAgZmxvYXQgdG1wOworCisgICAgcHJpbnRmKCJTdGFydGluZyBtZWFzdXJlbWVudHNcbiIpOworCisgICAgbGFzdF9zdGF0ZSA9IGNoZWNrX3Bvd2VybW9kZShmZCk7CisgICAgc3RhcnRfdGltZSA9IGxhc3RfdGltZSA9IHRpbWUoMCk7CisgICAgcHJpbnRmKCIgIFN5c3RlbSBpcyBpbiBzdGF0ZSAlc1xuXG4iLCBzdGF0ZV9uYW1lKGxhc3Rfc3RhdGUpKTsKKworICAgIHdoaWxlKCFlbmRpdCkgeworCXNsZWVwKDEpOworCWN1cnJfc3RhdGUgPSBjaGVja19wb3dlcm1vZGUoZmQpOworCisJaWYgKGN1cnJfc3RhdGUgIT0gbGFzdF9zdGF0ZSB8fCBlbmRpdCkgeworCSAgICBjaGFuZ2VzKys7CisJICAgIGN1cnJfdGltZSA9IHRpbWUoMCk7CisJICAgIHRpbWVfZGlmZiA9IGN1cnJfdGltZSAtIGxhc3RfdGltZTsKKworCSAgICBpZiAobGFzdF9zdGF0ZSA9PSAxKSBhY3RpdmVfdGltZSArPSB0aW1lX2RpZmY7CisJICAgIGVsc2UgaWYgKGxhc3Rfc3RhdGUgPT0gMCkgc2xlZXBfdGltZSArPSB0aW1lX2RpZmY7CisJICAgIGVsc2UgdW5rbm93bl90aW1lICs9IHRpbWVfZGlmZjsKKworCSAgICBsYXN0X3N0YXRlID0gY3Vycl9zdGF0ZTsKKwkgICAgbGFzdF90aW1lID0gY3Vycl90aW1lOworCisJICAgIHByaW50ZigiJXM6IFN0YXRlLWNoYW5nZSB0byAlc1xuIiwgbXljdGltZShjdXJyX3RpbWUpLAorCQkgICBzdGF0ZV9uYW1lKGN1cnJfc3RhdGUpKTsKKwl9CisgICAgfQorICAgIGNoYW5nZXMtLTsgLyogQ29tcGVuc2F0ZSBmb3IgU0lHSU5UICovCisKKyAgICB0b3RhbF90aW1lID0gdGltZSgwKSAtIHN0YXJ0X3RpbWU7CisgICAgcHJpbnRmKCJcblRvdGFsIHJ1bm5pbmcgdGltZTogICVsdXNcbiIsIGN1cnJfdGltZSAtIHN0YXJ0X3RpbWUpOworICAgIHByaW50ZigiIFN0YXRlIGNoYW5nZWQgJWQgdGltZXNcbiIsIGNoYW5nZXMpOworCisgICAgdG1wID0gKGZsb2F0KXNsZWVwX3RpbWUgLyAoZmxvYXQpdG90YWxfdGltZSAqIDEwMDsKKyAgICBwcmludGYoIiBUaW1lIGluIHNsZWVwIHN0YXRlOiAgICVsdXMgKCUuMmYlJSlcbiIsIHNsZWVwX3RpbWUsIHRtcCk7CisgICAgdG1wID0gKGZsb2F0KWFjdGl2ZV90aW1lIC8gKGZsb2F0KXRvdGFsX3RpbWUgKiAxMDA7CisgICAgcHJpbnRmKCIgVGltZSBpbiBhY3RpdmUgc3RhdGU6ICAlbHVzICglLjJmJSUpXG4iLCBhY3RpdmVfdGltZSwgdG1wKTsKKyAgICB0bXAgPSAoZmxvYXQpdW5rbm93bl90aW1lIC8gKGZsb2F0KXRvdGFsX3RpbWUgKiAxMDA7CisgICAgcHJpbnRmKCIgVGltZSBpbiB1bmtub3duIHN0YXRlOiAlbHVzICglLjJmJSUpXG4iLCB1bmtub3duX3RpbWUsIHRtcCk7Cit9CisKK3N0YXRpYyB2b2lkIGVuZGVyKGludCBzKQoreworICAgIGVuZGl0ID0gMTsKK30KKworc3RhdGljIHZvaWQgdXNhZ2Uodm9pZCkKK3sKKyAgICBwdXRzKCJ1c2FnZTogZHNsbSBbLXcgPHRpbWU+XSA8ZGlzaz4iKTsKKyAgICBleGl0KDApOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgaW50IGZkOworICAgIGNoYXIgKmRpc2sgPSAwOworICAgIGludCBzZXR0bGVfdGltZSA9IDYwOworCisgICAgLyogUGFyc2UgdGhlIHNpbXBsZSBjb21tYW5kLWxpbmUgKi8KKyAgICBpZiAoYXJnYyA9PSAyKQorCWRpc2sgPSBhcmd2WzFdOworICAgIGVsc2UgaWYgKGFyZ2MgPT0gNCkgeworCXNldHRsZV90aW1lID0gYXRvaShhcmd2WzJdKTsKKwlkaXNrID0gYXJndlszXTsKKyAgICB9IGVsc2UKKwl1c2FnZSgpOworCisgICAgaWYgKCEoZmQgPSBvcGVuKGRpc2ssIE9fUkRPTkxZfE9fTk9OQkxPQ0spKSkgeworCXByaW50ZigiQ2FuJ3Qgb3BlbiAlcywgYmVjYXVzZTogJXNcbiIsIGRpc2ssIHN0cmVycm9yKGVycm5vKSk7CisJZXhpdCgtMSk7CisgICAgfQorCisgICAgaWYgKHNldHRsZV90aW1lKSB7CisJcHJpbnRmKCJXYWl0aW5nICVkIHNlY29uZHMgZm9yIHRoZSBzeXN0ZW0gdG8gc2V0dGxlIGRvd24gdG8gIgorCSAgICAgICAiJ25vcm1hbCdcbiIsIHNldHRsZV90aW1lKTsKKwlzbGVlcChzZXR0bGVfdGltZSk7CisgICAgfSBlbHNlCisJcHV0cygiTm90IHdhaXRpbmcgZm9yIHN5c3RlbSB0byBzZXR0bGUgZG93biIpOworCisgICAgc2lnbmFsKFNJR0lOVCwgZW5kZXIpOworCisgICAgbWVhc3VyZShmZCk7CisKKyAgICBjbG9zZShmZCk7CisKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbGFwdG9wcy9sYXB0b3AtbW9kZS50eHQgYi9Eb2N1bWVudGF0aW9uL2xhcHRvcHMvbGFwdG9wLW1vZGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlYmJmYzMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2xhcHRvcHMvbGFwdG9wLW1vZGUudHh0CkBAIC0wLDAgKzEsNzgyIEBACitIb3cgdG8gY29uc2VydmUgYmF0dGVyeSBwb3dlciB1c2luZyBsYXB0b3AtbW9kZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRG9jdW1lbnQgQXV0aG9yOiBCYXJ0IFNhbXdlbCAoYmFydEBzYW13ZWwudGspCitEYXRlIGNyZWF0ZWQ6IEphbnVhcnkgMiwgMjAwNAorTGFzdCBtb2RpZmllZDogRGVjZW1iZXIgMDYsIDIwMDQKKworSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0KKworTGFwdG9wIG1vZGUgaXMgdXNlZCB0byBtaW5pbWl6ZSB0aGUgdGltZSB0aGF0IHRoZSBoYXJkIGRpc2sgbmVlZHMgdG8gYmUgc3B1biB1cCwKK3RvIGNvbnNlcnZlIGJhdHRlcnkgcG93ZXIgb24gbGFwdG9wcy4gSXQgaGFzIGJlZW4gcmVwb3J0ZWQgdG8gY2F1c2Ugc2lnbmlmaWNhbnQKK3Bvd2VyIHNhdmluZ3MuCisKK0NvbnRlbnRzCistLS0tLS0tLQorCisqIEludHJvZHVjdGlvbgorKiBJbnN0YWxsYXRpb24KKyogQ2F2ZWF0cworKiBUaGUgRGV0YWlscworKiBUaXBzICYgVHJpY2tzCisqIENvbnRyb2wgc2NyaXB0CisqIEFDUEkgaW50ZWdyYXRpb24KKyogTW9uaXRvcmluZyB0b29sCisKKworSW5zdGFsbGF0aW9uCistLS0tLS0tLS0tLS0KKworVG8gdXNlIGxhcHRvcCBtb2RlLCB5b3UgZG9uJ3QgbmVlZCB0byBzZXQgYW55IGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMKK29yIGFueXRoaW5nLiBTaW1wbHkgaW5zdGFsbCBhbGwgdGhlIGZpbGVzIGluY2x1ZGVkIGluIHRoaXMgZG9jdW1lbnQsIGFuZAorbGFwdG9wIG1vZGUgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIHN0YXJ0ZWQgd2hlbiB5b3UncmUgb24gYmF0dGVyeS4gRm9yCit5b3VyIGNvbnZlbmllbmNlLCBhIHRhcmJhbGwgY29udGFpbmluZyBhbiBpbnN0YWxsZXIgY2FuIGJlIGRvd25sb2FkZWQgYXQ6CisKK2h0dHA6Ly93d3cuc2Ftd2VsLnRrL2xhcHRvcF9tb2RlL2xhcHRvcF9tb2RlLworCitUbyBjb25maWd1cmUgbGFwdG9wIG1vZGUsIHlvdSBuZWVkIHRvIGVkaXQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSwgd2hpY2ggaXMKK2xvY2F0ZWQgaW4gL2V0Yy9kZWZhdWx0L2xhcHRvcC1tb2RlIG9uIERlYmlhbi1iYXNlZCBzeXN0ZW1zLCBvciBpbgorL2V0Yy9zeXNjb25maWcvbGFwdG9wLW1vZGUgb24gb3RoZXIgc3lzdGVtcy4KKworVW5mb3J0dW5hdGVseSwgYXV0b21hdGljIGVuYWJsaW5nIG9mIGxhcHRvcCBtb2RlIGRvZXMgbm90IHdvcmsgZm9yCitsYXB0b3BzIHRoYXQgZG9uJ3QgaGF2ZSBBQ1BJLiBPbiB0aG9zZSBsYXB0b3BzLCB5b3UgbmVlZCB0byBzdGFydCBsYXB0b3AKK21vZGUgbWFudWFsbHkuIFRvIHN0YXJ0IGxhcHRvcCBtb2RlLCBydW4gImxhcHRvcF9tb2RlIHN0YXJ0IiwgYW5kIHRvCitzdG9wIGl0LCBydW4gImxhcHRvcF9tb2RlIHN0b3AiLiAoTm90ZTogVGhlIGxhcHRvcCBtb2RlIHRvb2xzIHBhY2thZ2Ugbm93CitoYXMgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIEFQTSwgeW91IG1pZ2h0IHdhbnQgdG8gdHJ5IHRoYXQgZmlyc3QuKQorCisKK0NhdmVhdHMKKy0tLS0tLS0KKworKiBUaGUgZG93bnNpZGUgb2YgbGFwdG9wIG1vZGUgaXMgdGhhdCB5b3UgaGF2ZSBhIGNoYW5jZSBvZiBsb3NpbmcgdXAgdG8gMTAKKyAgbWludXRlcyBvZiB3b3JrLiBJZiB5b3UgY2Fubm90IGFmZm9yZCB0aGlzLCBkb24ndCB1c2UgaXQhIFRoZSBzdXBwbGllZCBBQ1BJCisgIHNjcmlwdHMgYXV0b21hdGljYWxseSB0dXJuIG9mZiBsYXB0b3AgbW9kZSB3aGVuIHRoZSBiYXR0ZXJ5IGFsbW9zdCBydW5zIG91dCwKKyAgc28gdGhhdCB5b3Ugd29uJ3QgbG9zZSBhbnkgZGF0YSBhdCB0aGUgZW5kIG9mIHlvdXIgYmF0dGVyeSBsaWZlLgorCisqIE1vc3QgZGVza3RvcCBoYXJkIGRyaXZlcyBoYXZlIGEgdmVyeSBsaW1pdGVkIGxpZmV0aW1lIG1lYXN1cmVkIGluIHNwaW5kb3duCisgIGN5Y2xlcywgdHlwaWNhbGx5IGFib3V0IDUwLjAwMCB0aW1lcyAoaXQncyB1c3VhbGx5IGxpc3RlZCBvbiB0aGUgc3BlYyBzaGVldCkuCisgIENoZWNrIHlvdXIgZHJpdmUncyByYXRpbmcsIGFuZCBkb24ndCB3ZWFyIGRvd24geW91ciBkcml2ZSdzIGxpZmV0aW1lIGlmIHlvdQorICBkb24ndCBuZWVkIHRvLgorCisqIElmIHlvdSBtb3VudCBzb21lIG9mIHlvdXIgZXh0My9yZWlzZXJmcyBmaWxlc3lzdGVtcyB3aXRoIHRoZSAtbiBvcHRpb24sIHRoZW4KKyAgdGhlIGNvbnRyb2wgc2NyaXB0IHdpbGwgbm90IGJlIGFibGUgdG8gcmVtb3VudCB0aGVtIGNvcnJlY3RseS4gWW91IG11c3Qgc2V0CisgIERPX1JFTU9VTlRTPTAgaW4gdGhlIGNvbnRyb2wgc2NyaXB0LCBvdGhlcndpc2UgaXQgd2lsbCByZW1vdW50IHRoZW0gd2l0aCB0aGUKKyAgd3Jvbmcgb3B0aW9ucyAtLSBvciBpdCB3aWxsIGZhaWwgYmVjYXVzZSBpdCBjYW5ub3Qgd3JpdGUgdG8gL2V0Yy9tdGFiLgorCisqIElmIHlvdSBoYXZlIHlvdXIgZmlsZXN5c3RlbXMgbGlzdGVkIGFzIHR5cGUgImF1dG8iIGluIGZzdGFiLCBsaWtlIEkgZGlkLCB0aGVuCisgIHRoZSBjb250cm9sIHNjcmlwdCB3aWxsIG5vdCByZWNvZ25pemUgdGhlbSBhcyBmaWxlc3lzdGVtcyB0aGF0IG5lZWQgcmVtb3VudGluZy4KKyAgWW91IG11c3QgbGlzdCB0aGUgZmlsZXN5c3RlbXMgd2l0aCB0aGVpciB0cnVlIHR5cGUgaW5zdGVhZC4KKworKiBJdCBoYXMgYmVlbiByZXBvcnRlZCB0aGF0IHNvbWUgdmVyc2lvbnMgb2YgdGhlIG11dHQgbWFpbCBjbGllbnQgdXNlIGZpbGUgYWNjZXNzCisgIHRpbWVzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZm9sZGVyIGNvbnRhaW5zIG5ldyBtYWlsLiBJZiB5b3UgdXNlIG11dHQgYW5kCisgIGV4cGVyaWVuY2UgdGhpcywgeW91IG11c3QgZGlzYWJsZSB0aGUgbm9hdGltZSByZW1vdW50aW5nIGJ5IHNldHRpbmcgdGhlIG9wdGlvbgorICBET19SRU1PVU5UX05PQVRJTUUgdG8gMCBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlLgorCisKK1RoZSBEZXRhaWxzCistLS0tLS0tLS0tLQorCitMYXB0b3AgbW9kZSBpcyBjb250cm9sbGVkIGJ5IHRoZSBrbm9iIC9wcm9jL3N5cy92bS9sYXB0b3BfbW9kZS4gVGhpcyBrbm9iIGlzCitwcmVzZW50IGZvciBhbGwga2VybmVscyB0aGF0IGhhdmUgdGhlIGxhcHRvcCBtb2RlIHBhdGNoLCByZWdhcmRsZXNzIG9mIGFueQorY29uZmlndXJhdGlvbiBvcHRpb25zLiBXaGVuIHRoZSBrbm9iIGlzIHNldCwgYW55IHBoeXNpY2FsIGRpc2sgSS9PICh0aGF0IG1pZ2h0CitoYXZlIGNhdXNlZCB0aGUgaGFyZCBkaXNrIHRvIHNwaW4gdXApIGNhdXNlcyBMaW51eCB0byBmbHVzaCBhbGwgZGlydHkgYmxvY2tzLiBUaGUKK3Jlc3VsdCBvZiB0aGlzIGlzIHRoYXQgYWZ0ZXIgYSBkaXNrIGhhcyBzcHVuIGRvd24sIGl0IHdpbGwgbm90IGJlIHNwdW4gdXAKK2FueW1vcmUgdG8gd3JpdGUgZGlydHkgYmxvY2tzLCBiZWNhdXNlIHRob3NlIGJsb2NrcyBoYWQgYWxyZWFkeSBiZWVuIHdyaXR0ZW4KK2ltbWVkaWF0ZWx5IGFmdGVyIHRoZSBtb3N0IHJlY2VudCByZWFkIG9wZXJhdGlvbi4gVGhlIHZhbHVlIG9mIHRoZSBsYXB0b3BfbW9kZQora25vYiBkZXRlcm1pbmVzIHRoZSB0aW1lIGJldHdlZW4gdGhlIG9jY3VycmVuY2Ugb2YgZGlzayBJL08gYW5kIHdoZW4gdGhlIGZsdXNoCitpcyB0cmlnZ2VyZWQuIEEgc2Vuc2libGUgdmFsdWUgZm9yIHRoZSBrbm9iIGlzIDUgc2Vjb25kcy4gU2V0dGluZyB0aGUga25vYiB0bworMCBkaXNhYmxlcyBsYXB0b3AgbW9kZS4KKworVG8gaW5jcmVhc2UgdGhlIGVmZmVjdGl2ZW5lc3Mgb2YgdGhlIGxhcHRvcF9tb2RlIHN0cmF0ZWd5LCB0aGUgbGFwdG9wX21vZGUKK2NvbnRyb2wgc2NyaXB0IGluY3JlYXNlcyBkaXJ0eV9leHBpcmVfY2VudGlzZWNzIGFuZCBkaXJ0eV93cml0ZWJhY2tfY2VudGlzZWNzIGluCisvcHJvYy9zeXMvdm0gdG8gYWJvdXQgMTAgbWludXRlcyAoYnkgZGVmYXVsdCksIHdoaWNoIG1lYW5zIHRoYXQgcGFnZXMgdGhhdCBhcmUKK2RpcnRpZWQgYXJlIG5vdCBmb3JjZWQgdG8gYmUgd3JpdHRlbiB0byBkaXNrIGFzIG9mdGVuLiBUaGUgY29udHJvbCBzY3JpcHQgYWxzbworY2hhbmdlcyB0aGUgZGlydHkgYmFja2dyb3VuZCByYXRpbywgc28gdGhhdCBiYWNrZ3JvdW5kIHdyaXRlYmFjayBvZiBkaXJ0eSBwYWdlcworaXMgbm90IGRvbmUgYW55bW9yZS4gQ29tYmluZWQgd2l0aCBhIGhpZ2hlciBjb21taXQgdmFsdWUgKGFsc28gMTAgbWludXRlcykgZm9yCitleHQzIG9yIFJlaXNlckZTIGZpbGVzeXN0ZW1zIChhbHNvIGRvbmUgYXV0b21hdGljYWxseSBieSB0aGUgY29udHJvbCBzY3JpcHQpLAordGhpcyByZXN1bHRzIGluIGNvbmNlbnRyYXRpb24gb2YgZGlzayBhY3Rpdml0eSBpbiBhIHNtYWxsIHRpbWUgaW50ZXJ2YWwgd2hpY2gKK29jY3VycyBvbmx5IG9uY2UgZXZlcnkgMTAgbWludXRlcywgb3Igd2hlbmV2ZXIgdGhlIGRpc2sgaXMgZm9yY2VkIHRvIHNwaW4gdXAgYnkKK2EgY2FjaGUgbWlzcy4gVGhlIGRpc2sgY2FuIHRoZW4gYmUgc3B1biBkb3duIGluIHRoZSBwZXJpb2RzIG9mIGluYWN0aXZpdHkuCisKK0lmIHlvdSB3YW50IHRvIGZpbmQgb3V0IHdoaWNoIHByb2Nlc3MgY2F1c2VkIHRoZSBkaXNrIHRvIHNwaW4gdXAsIHlvdSBjYW4KK2dhdGhlciBpbmZvcm1hdGlvbiBieSBzZXR0aW5nIHRoZSBmbGFnIC9wcm9jL3N5cy92bS9ibG9ja19kdW1wLiBXaGVuIHRoaXMgZmxhZworaXMgc2V0LCBMaW51eCByZXBvcnRzIGFsbCBkaXNrIHJlYWQgYW5kIHdyaXRlIG9wZXJhdGlvbnMgdGhhdCB0YWtlIHBsYWNlLCBhbmQKK2FsbCBibG9jayBkaXJ0eWluZ3MgZG9uZSB0byBmaWxlcy4gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBkZWJ1ZyB3aHkgYSBkaXNrCituZWVkcyB0byBzcGluIHVwLCBhbmQgdG8gaW5jcmVhc2UgYmF0dGVyeSBsaWZlIGV2ZW4gbW9yZS4gVGhlIG91dHB1dCBvZgorYmxvY2tfZHVtcCBpcyB3cml0dGVuIHRvIHRoZSBrZXJuZWwgb3V0cHV0LCBhbmQgaXQgY2FuIGJlIHJldHJpZXZlZCB1c2luZworImRtZXNnIi4gV2hlbiB5b3UgdXNlIGJsb2NrX2R1bXAgYW5kIHlvdXIga2VybmVsIGxvZ2dpbmcgbGV2ZWwgYWxzbyBpbmNsdWRlcwora2VybmVsIGRlYnVnZ2luZyBtZXNzYWdlcywgeW91IHByb2JhYmx5IHdhbnQgdG8gdHVybiBvZmYga2xvZ2QsIG90aGVyd2lzZQordGhlIG91dHB1dCBvZiBibG9ja19kdW1wIHdpbGwgYmUgbG9nZ2VkLCBjYXVzaW5nIGRpc2sgYWN0aXZpdHkgdGhhdCBpcyBub3QKK25vcm1hbGx5IHRoZXJlLgorCisKK0NvbmZpZ3VyYXRpb24KKy0tLS0tLS0tLS0tLS0KKworVGhlIGxhcHRvcCBtb2RlIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBsb2NhdGVkIGluIC9ldGMvZGVmYXVsdC9sYXB0b3AtbW9kZSBvbgorRGViaWFuLWJhc2VkIHN5c3RlbXMsIG9yIGluIC9ldGMvc3lzY29uZmlnL2xhcHRvcC1tb2RlIG9uIG90aGVyIHN5c3RlbXMuIEl0Citjb250YWlucyB0aGUgZm9sbG93aW5nIG9wdGlvbnM6CisKK01BWF9BR0U6CisKK01heGltdW0gdGltZSwgaW4gc2Vjb25kcywgb2YgaGFyZCBkcml2ZSBzcGluZG93biB0aW1lIHRoYXQgeW91IGFyZQorY29tZm9ydGFibGUgd2l0aC4gV29yc3QgY2FzZSwgaXQncyBwb3NzaWJsZSB0aGF0IHlvdSBjb3VsZCBsb3NlIHRoaXMKK2Ftb3VudCBvZiB3b3JrIGlmIHlvdXIgYmF0dGVyeSBmYWlscyB3aGlsZSB5b3UncmUgaW4gbGFwdG9wIG1vZGUuCisKK01JTklNVU1fQkFUVEVSWV9NSU5VVEVTOgorCitBdXRvbWF0aWNhbGx5IGRpc2FibGUgbGFwdG9wIG1vZGUgaWYgdGhlIHJlbWFpbmluZyBudW1iZXIgb2YgbWludXRlcyBvZgorYmF0dGVyeSBwb3dlciBpcyBsZXNzIHRoYW4gdGhpcyB2YWx1ZS4gRGVmYXVsdCBpcyAxMCBtaW51dGVzLgorCitBQ19IRC9CQVRUX0hEOgorCitUaGUgaWRsZSB0aW1lb3V0IHRoYXQgc2hvdWxkIGJlIHNldCBvbiB5b3VyIGhhcmQgZHJpdmUgd2hlbiBsYXB0b3AgbW9kZQoraXMgYWN0aXZlIChCQVRUX0hEKSBhbmQgd2hlbiBpdCBpcyBub3QgYWN0aXZlIChBQ19IRCkuIFRoZSBkZWZhdWx0cyBhcmUKKzIwIHNlY29uZHMgKHZhbHVlIDQpIGZvciBCQVRUX0hEICBhbmQgMiBob3VycyAodmFsdWUgMjQ0KSBmb3IgQUNfSEQuIFRoZQorcG9zc2libGUgdmFsdWVzIGFyZSB0aG9zZSBsaXN0ZWQgaW4gdGhlIG1hbnVhbCBwYWdlIGZvciAiaGRwYXJtIiBmb3IgdGhlCisiLVMiIG9wdGlvbi4KKworSEQ6CisKK1RoZSBkZXZpY2VzIGZvciB3aGljaCB0aGUgc3BpbmRvd24gdGltZW91dCBzaG91bGQgYmUgYWRqdXN0ZWQgYnkgbGFwdG9wIG1vZGUuCitEZWZhdWx0IGlzIC9kZXYvaGRhLiBJZiB5b3Ugc3BlY2lmeSBtdWx0aXBsZSBkZXZpY2VzLCBzZXBhcmF0ZSB0aGVtIGJ5IGEgc3BhY2UuCisKK1JFQURBSEVBRDoKKworRGlzayByZWFkYWhlYWQsIGluIDUxMi1ieXRlIHNlY3RvcnMsIHdoaWxlIGxhcHRvcCBtb2RlIGlzIGFjdGl2ZS4gQSBsYXJnZQorcmVhZGFoZWFkIGNhbiBwcmV2ZW50IGRpc2sgYWNjZXNzZXMgZm9yIHRoaW5ncyBsaWtlIGV4ZWN1dGFibGUgcGFnZXMgKHdoaWNoIGFyZQorbG9hZGVkIG9uIGRlbWFuZCB3aGlsZSB0aGUgYXBwbGljYXRpb24gZXhlY3V0ZXMpIGFuZCBzZXF1ZW50aWFsbHkgYWNjZXNzZWQgZGF0YQorKE1QM3MpLgorCitET19SRU1PVU5UUzoKKworVGhlIGNvbnRyb2wgc2NyaXB0IGF1dG9tYXRpY2FsbHkgcmVtb3VudHMgYW55IG1vdW50ZWQgam91cm5hbGVkIGZpbGVzeXN0ZW1zCit3aXRoIGFwcHJvcHJpYXRlIGNvbW1pdCBpbnRlcnZhbCBvcHRpb25zLiBXaGVuIHRoaXMgb3B0aW9uIGlzIHNldCB0byAwLCB0aGlzCitmZWF0dXJlIGlzIGRpc2FibGVkLgorCitET19SRU1PVU5UX05PQVRJTUU6CisKK1doZW4gcmVtb3VudGluZywgc2hvdWxkIHRoZSBmaWxlc3lzdGVtcyBiZSByZW1vdW50ZWQgd2l0aCB0aGUgbm9hdGltZSBvcHRpb24/CitOb3JtYWxseSwgdGhpcyBpcyBzZXQgdG8gIjEiIChlbmFibGVkKSwgYnV0IHRoZXJlIG1heSBiZSBwcm9ncmFtcyB0aGF0IHJlcXVpcmUKK2FjY2VzcyB0aW1lIHJlY29yZGluZy4KKworRElSVFlfUkFUSU86CisKK1RoZSBwZXJjZW50YWdlIG9mIG1lbW9yeSB0aGF0IGlzIGFsbG93ZWQgdG8gY29udGFpbiAiZGlydHkiIG9yIHVuc2F2ZWQgZGF0YQorYmVmb3JlIGEgd3JpdGViYWNrIGlzIGZvcmNlZCwgd2hpbGUgbGFwdG9wIG1vZGUgaXMgYWN0aXZlLiBDb3JyZXNwb25kcyB0bwordGhlIC9wcm9jL3N5cy92bS9kaXJ0eV9yYXRpbyBzeXNjdGwuCisKK0RJUlRZX0JBQ0tHUk9VTkRfUkFUSU86CisKK1RoZSBwZXJjZW50YWdlIG9mIG1lbW9yeSB0aGF0IGlzIGFsbG93ZWQgdG8gY29udGFpbiAiZGlydHkiIG9yIHVuc2F2ZWQgZGF0YQorYWZ0ZXIgYSBmb3JjZWQgd3JpdGViYWNrIGlzIGRvbmUgZHVlIHRvIGFuIGV4Y2VlZGluZyBvZiBESVJUWV9SQVRJTy4gU2V0Cit0aGlzIG5pY2UgYW5kIGxvdy4gVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgL3Byb2Mvc3lzL3ZtL2RpcnR5X2JhY2tncm91bmRfcmF0aW8KK3N5c2N0bC4KKworTm90ZSB0aGF0IHRoZSBiZWhhdmlvdXIgb2YgZGlydHlfYmFja2dyb3VuZF9yYXRpbyBpcyBxdWl0ZSBkaWZmZXJlbnQKK3doZW4gbGFwdG9wIG1vZGUgaXMgYWN0aXZlIGFuZCB3aGVuIGl0IGlzbid0LiBXaGVuIGxhcHRvcCBtb2RlIGlzIGluYWN0aXZlLAorZGlydHlfYmFja2dyb3VuZF9yYXRpbyBpcyB0aGUgdGhyZXNob2xkIHBlcmNlbnRhZ2UgYXQgd2hpY2ggYmFja2dyb3VuZCB3cml0ZW91dHMKK3N0YXJ0IHRha2luZyBwbGFjZS4gV2hlbiBsYXB0b3AgbW9kZSBpcyBhY3RpdmUsIGhvd2V2ZXIsIGJhY2tncm91bmQgd3JpdGVvdXRzCithcmUgZGlzYWJsZWQsIGFuZCB0aGUgZGlydHlfYmFja2dyb3VuZF9yYXRpbyBvbmx5IGRldGVybWluZXMgaG93IG11Y2ggd3JpdGViYWNrCitpcyBkb25lIHdoZW4gZGlydHlfcmF0aW8gaXMgcmVhY2hlZC4KKworRE9fQ1BVOgorCitFbmFibGUgQ1BVIGZyZXF1ZW5jeSBzY2FsaW5nIHdoZW4gaW4gbGFwdG9wIG1vZGUuIChSZXF1aXJlcyBDUFVGcmVxIHRvIGJlIHNldHVwLgorU2VlIERvY3VtZW50YXRpb24vY3B1LWZyZXEvdXNlci1ndWlkZS50eHQgZm9yIG1vcmUgaW5mby4gRGlzYWJsZWQgYnkgZGVmYXVsdC4pCisKK0NQVV9NQVhGUkVROgorCitXaGVuIG9uIGJhdHRlcnksIHdoYXQgaXMgdGhlIG1heGltdW0gQ1BVIHNwZWVkIHRoYXQgdGhlIHN5c3RlbSBzaG91bGQgdXNlPyBMZWdhbAordmFsdWVzIGFyZSAic2xvd2VzdCIgZm9yIHRoZSBzbG93ZXN0IHNwZWVkIHRoYXQgeW91ciBDUFUgaXMgYWJsZSB0byBvcGVyYXRlIGF0LAorb3IgYSB2YWx1ZSBsaXN0ZWQgaW4gL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1MC9jcHVmcmVxL3NjYWxpbmdfYXZhaWxhYmxlX2ZyZXF1ZW5jaWVzLgorCisKK1RpcHMgJiBUcmlja3MKKy0tLS0tLS0tLS0tLS0KKworKiBCYXJ0ZWsgS2FuaWEgcmVwb3J0cyBnZXR0aW5nIHVwIHRvIDUwIG1pbnV0ZXMgb2YgZXh0cmEgYmF0dGVyeSBsaWZlIChvbiB0b3AKKyAgb2YgaGlzIHJlZ3VsYXIgMyB0byAzLjUgaG91cnMpIHVzaW5nIGEgc3BpbmRvd24gdGltZSBvZiA1IHNlY29uZHMgKEJBVFRfSEQ9MSkuCisKKyogWW91IGNhbiBzcGluIGRvd24gdGhlIGRpc2sgd2hpbGUgcGxheWluZyBNUDMsIGJ5IHNldHRpbmcgZGlzayByZWFkYWhlYWQKKyAgdG8gOE1CIChSRUFEQUhFQUQ9MTYzODQpLiBFZmZlY3RpdmVseSwgdGhlIGRpc2sgd2lsbCByZWFkIGEgY29tcGxldGUgTVAzIGF0CisgIG9uY2UsIGFuZCB3aWxsIHRoZW4gc3BpbiBkb3duIHdoaWxlIHRoZSBNUDMgaXMgcGxheWluZy4gKFRoYW5rcyB0byBCYXJ0ZWsKKyAgS2FuaWEuKQorCisqIERyZXcgU2NvdHQgRGFuaWVscyBvYnNlcnZlZDogIkkgZG9uJ3Qga25vdyB3aHksIGJ1dCB3aGVuIEkgZGVjcmVhc2UgdGhlIG51bWJlcgorICBvZiBjb2xvdXJzIHRoYXQgbXkgZGlzcGxheSB1c2VzIGl0IGNvbnN1bWVzIGxlc3MgYmF0dGVyeSBwb3dlci4gSSd2ZSBzZWVuCisgIHRoaXMgb24gcG93ZXJib29rcyB0b28uIEkgaG9wZSB0aGF0IHRoaXMgaXMgYSBwaWVjZSBvZiBpbmZvcm1hdGlvbiB0aGF0CisgIG1pZ2h0IGJlIHVzZWZ1bCB0byB0aGUgTGFwdG9wIE1vZGUgcGF0Y2ggb3IgaXRzIHVzZXJzLiIKKworKiBJbiBzeXNsb2cuY29uZiwgeW91IGNhbiBwcmVmaXggZW50cmllcyB3aXRoIGEgZGFzaCBgYC0nJyB0byBvbWl0IHN5bmNpbmcgdGhlCisgIGZpbGUgYWZ0ZXIgZXZlcnkgbG9nZ2luZy4gV2hlbiB5b3UncmUgdXNpbmcgbGFwdG9wLW1vZGUgYW5kIHlvdXIgZGlzayBkb2Vzbid0CisgIHNwaW4gZG93biwgdGhpcyBpcyBhIGxpa2VseSBjdWxwcml0LgorCisqIFJpY2hhcmQgQXR0ZXJlciBvYnNlcnZlZCB0aGF0IGxhcHRvcCBtb2RlIGRvZXMgbm90IHdvcmsgd2VsbCB3aXRoIG5vZmx1c2hkCisgIChodHRwOi8vbm9mbHVzaGQuc291cmNlZm9yZ2UubmV0LyksIGl0IHNlZW1zIHRoYXQgbm9mbHVzaGQgcHJldmVudHMgbGFwdG9wLW1vZGUKKyAgZnJvbSBkb2luZyBpdHMgdGhpbmcuCisKKyogSWYgeW91J3JlIHdvcnJpZWQgYWJvdXQgeW91ciBkYXRhLCB5b3UgbWlnaHQgd2FudCB0byBjb25zaWRlciB1c2luZyBhIFVTQgorICBtZW1vcnkgc3RpY2sgb3Igc29tZXRoaW5nIGxpa2UgdGhhdCBhcyBhICJ3b3JraW5nIGFyZWEiLiAoQmUgYXdhcmUgdGhvdWdoCisgIHRoYXQgZmxhc2ggbWVtb3J5IGNhbiBvbmx5IGhhbmRsZSBhIGxpbWl0ZWQgbnVtYmVyIG9mIHdyaXRlcywgYW5kIG92ZXJ1c2UKKyAgbWF5IHdlYXIgb3V0IHlvdXIgbWVtb3J5IHN0aWNrIHByZXR0eSBxdWlja2x5LiBEbyBfbm90XyB1c2Ugam91cm5hbGxpbmcKKyAgZmlsZXN5c3RlbXMgb24gZmxhc2ggbWVtb3J5IHN0aWNrcy4pCisKKworQ29uZmlndXJhdGlvbiBmaWxlIGZvciBjb250cm9sIGFuZCBBQ1BJIGJhdHRlcnkgc2NyaXB0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGFsbG93cyB0aGUgdHVuYWJsZXMgdG8gYmUgY2hhbmdlZCBmb3IgdGhlIHNjcmlwdHMgdmlhIGFuIGV4dGVybmFsCitjb25maWd1cmF0aW9uIGZpbGUKKworSXQgc2hvdWxkIGJlIGluc3RhbGxlZCBhcyAvZXRjL2RlZmF1bHQvbGFwdG9wLW1vZGUgb24gRGViaWFuLCBhbmQgYXMKKy9ldGMvc3lzY29uZmlnL2xhcHRvcC1tb2RlIG9uIFJlZCBIYXQsIFNVU0UsIE1hbmRyYWtlLCBhbmQgb3RoZXIgd29yay1hbGlrZXMuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tQ09ORklHIEZJTEUgQkVHSU4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIE1heGltdW0gdGltZSwgaW4gc2Vjb25kcywgb2YgaGFyZCBkcml2ZSBzcGluZG93biB0aW1lIHRoYXQgeW91IGFyZQorIyBjb21mb3J0YWJsZSB3aXRoLiBXb3JzdCBjYXNlLCBpdCdzIHBvc3NpYmxlIHRoYXQgeW91IGNvdWxkIGxvc2UgdGhpcworIyBhbW91bnQgb2Ygd29yayBpZiB5b3VyIGJhdHRlcnkgZmFpbHMgeW91IHdoaWxlIGluIGxhcHRvcCBtb2RlLgorI01BWF9BR0U9NjAwCisKKyMgQXV0b21hdGljYWxseSBkaXNhYmxlIGxhcHRvcCBtb2RlIHdoZW4gdGhlIG51bWJlciBvZiBtaW51dGVzIG9mIGJhdHRlcnkKKyMgdGhhdCB5b3UgaGF2ZSBsZWZ0IGdvZXMgYmVsb3cgdGhpcyB0aHJlc2hvbGQuCitNSU5JTVVNX0JBVFRFUllfTUlOVVRFUz0xMAorCisjIFJlYWQtYWhlYWQsIGluIDUxMi1ieXRlIHNlY3RvcnMuIFlvdSBjYW4gc3BpbiBkb3duIHRoZSBkaXNrIHdoaWxlIHBsYXlpbmcgTVAzL09HRworIyBieSBzZXR0aW5nIHRoZSBkaXNrIHJlYWRhaGVhZCB0byA4TUIgKFJFQURBSEVBRD0xNjM4NCkuIEVmZmVjdGl2ZWx5LCB0aGUgZGlzaworIyB3aWxsIHJlYWQgYSBjb21wbGV0ZSBNUDMgYXQgb25jZSwgYW5kIHdpbGwgdGhlbiBzcGluIGRvd24gd2hpbGUgdGhlIE1QMy9PR0cgaXMKKyMgcGxheWluZy4KKyNSRUFEQUhFQUQ9NDA5NgorCisjIFNoYWxsIHdlIHJlbW91bnQgam91cm5hbGVkIGZzLiB3aXRoIGFwcHJvcHJpYXRlIGNvbW1pdCBpbnRlcnZhbD8gKDE9eWVzKQorI0RPX1JFTU9VTlRTPTEKKworIyBBbmQgc2hhbGwgd2UgYWRkIHRoZSAibm9hdGltZSIgb3B0aW9uIHRvIHRoYXQgYXMgd2VsbD8gKDE9eWVzKQorI0RPX1JFTU9VTlRfTk9BVElNRT0xCisKKyMgRGlydHkgc3luY2hyb25vdXMgcmF0aW8uICBBdCB0aGlzIHBlcmNlbnRhZ2Ugb2YgZGlydHkgcGFnZXMgdGhlIHByb2Nlc3MKKyMgd2hpY2gKKyMgY2FsbHMgd3JpdGUoKSBkb2VzIGl0cyBvd24gd3JpdGViYWNrCisjRElSVFlfUkFUSU89NDAKKworIworIyBBbGxvd2VkIGRpcnR5IGJhY2tncm91bmQgcmF0aW8sIGluIHBlcmNlbnQuICBPbmNlIERJUlRZX1JBVElPIGhhcyBiZWVuCisjIGV4Y2VlZGVkLCB0aGUga2VybmVsIHdpbGwgd2FrZSBmbHVzaGVyIHRocmVhZHMgd2hpY2ggd2lsbCB0aGVuIHJlZHVjZSB0aGUKKyMgYW1vdW50IG9mIGRpcnR5IG1lbW9yeSB0byBkaXJ0eV9iYWNrZ3JvdW5kX3JhdGlvLiAgU2V0IHRoaXMgbmljZSBhbmQgbG93LAorIyBzbyBvbmNlIHNvbWUgd3JpdGVvdXQgaGFzIGNvbW1lbmNlZCwgd2UgZG8gYSBsb3Qgb2YgaXQuCisjCisjRElSVFlfQkFDS0dST1VORF9SQVRJTz01CisKKyMga2VybmVsIGRlZmF1bHQgZGlydHkgYnVmZmVyIGFnZQorI0RFRl9BR0U9MzAKKyNERUZfVVBEQVRFPTUKKyNERUZfRElSVFlfQkFDS0dST1VORF9SQVRJTz0xMAorI0RFRl9ESVJUWV9SQVRJTz00MAorI0RFRl9YRlNfQUdFX0JVRkZFUj0xNQorI0RFRl9YRlNfU1lOQ19JTlRFUlZBTD0zMAorI0RFRl9YRlNfQlVGRF9JTlRFUlZBTD0xCisKKyMgVGhpcyBtdXN0IGJlIGFkanVzdGVkIG1hbnVhbGx5IHRvIHRoZSB2YWx1ZSBvZiBIWiBpbiB0aGUgcnVubmluZyBrZXJuZWwKKyMgb24gMi40LCB1bnRpbCB0aGUgWEZTIHBlb3BsZSBjaGFuZ2UgdGhlaXIgMi40IGV4dGVybmFsIGludGVyZmFjZXMgdG8gd29yayBpbgorIyBjZW50aXNlY3MuIFRoaXMgY2FuIGJlIGF1dG9tYXRlZCwgYnV0IGl0J3MgYSB3b3JrIGluIHByb2dyZXNzIHRoYXQgc3RpbGwKKyMgbmVlZHMjIHNvbWUgZml4ZXMuIE9uIDIuNiBrZXJuZWxzLCBYRlMgdXNlcyBVU0VSX0haIGluc3RlYWQgb2YgSFogZm9yCisjIGV4dGVybmFsIGludGVyZmFjZXMsIGFuZCB0aGF0IGlzIGN1cnJlbnRseSBhbHdheXMgc2V0IHRvIDEwMC4gU28geW91IGRvbid0CisjIG5lZWQgdG8gY2hhbmdlIHRoaXMgb24gMi42LgorI1hGU19IWj0xMDAKKworIyBTaG91bGQgdGhlIG1heGltdW0gQ1BVIGZyZXF1ZW5jeSBiZSBhZGp1c3RlZCBkb3duIHdoaWxlIG9uIGJhdHRlcnk/CisjIFJlcXVpcmVzIENQVUZyZXEgdG8gYmUgc2V0dXAuCisjIFNlZSBEb2N1bWVudGF0aW9uL2NwdS1mcmVxL3VzZXItZ3VpZGUudHh0IGZvciBtb3JlIGluZm8KKyNET19DUFU9MAorCisjIFdoZW4gb24gYmF0dGVyeSB3aGF0IGlzIHRoZSBtYXhpbXVtIENQVSBzcGVlZCB0aGF0IHRoZSBzeXN0ZW0gc2hvdWxkCisjIHVzZT8gTGVnYWwgdmFsdWVzIGFyZSAic2xvd2VzdCIgZm9yIHRoZSBzbG93ZXN0IHNwZWVkIHRoYXQgeW91cgorIyBDUFUgaXMgYWJsZSB0byBvcGVyYXRlIGF0LCBvciBhIHZhbHVlIGxpc3RlZCBpbjoKKyMgL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1MC9jcHVmcmVxL3NjYWxpbmdfYXZhaWxhYmxlX2ZyZXF1ZW5jaWVzCisjIE9ubHkgYXBwbGljYWJsZSBpZiBET19DUFU9MS4KKyNDUFVfTUFYRlJFUT1zbG93ZXN0CisKKyMgSWRsZSB0aW1lb3V0IGZvciB5b3VyIGhhcmQgZHJpdmUgKG1hbiBoZHBhcm0gZm9yIHZhbGlkIHZhbHVlcywgLVMgb3B0aW9uKQorIyBEZWZhdWx0IGlzIDIgaG91cnMgb24gQUMgKEFDX0hEPTI0NCkgYW5kIDIwIHNlY29uZHMgZm9yIGJhdHRlcnkgKEJBVFRfSEQ9NCkuCisjQUNfSEQ9MjQ0CisjQkFUVF9IRD00CisKKyMgVGhlIGRyaXZlcyBmb3Igd2hpY2ggdG8gYWRqdXN0IHRoZSBpZGxlIHRpbWVvdXQuIFNlcGFyYXRlIHRoZW0gYnkgYSBzcGFjZSwKKyMgZS5nLiBIRD0iL2Rldi9oZGEgL2Rldi9oZGIiLgorI0hEPSIvZGV2L2hkYSIKKworIyBTZXQgdGhlIHNwaW5kb3duIHRpbWVvdXQgb24gYSBoYXJkIGRyaXZlPworI0RPX0hEPTEKKworLS0tLS0tLS0tLS0tLS0tLS0tLS1DT05GSUcgRklMRSBFTkQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitDb250cm9sIHNjcmlwdAorLS0tLS0tLS0tLS0tLS0KKworUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGNvbnRyb2wgc2NyaXB0IHdvcmtzIGZvciB0aGUgTGludXggMi40IGFuZCAyLjYgc2VyaWVzICh0aGFua3MKK3RvIEtpa28gUGlyaXMpLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLUNPTlRST0wgU0NSSVBUIEJFR0lOLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyEvYmluL2Jhc2gKKworIyBzdGFydCBvciBzdG9wIGxhcHRvcF9tb2RlLCBiZXN0IHJ1biBieSBhIHBvd2VyIG1hbmFnZW1lbnQgZGFlbW9uIHdoZW4KKyMgYWMgZ2V0cyBjb25uZWN0ZWQvZGlzY29ubmVjdGVkIGZyb20gYSBsYXB0b3AKKyMKKyMgaW5zdGFsbCBhcyAvc2Jpbi9sYXB0b3BfbW9kZQorIworIyBDb250cmlidXRvcnMgdG8gdGhpcyBzY3JpcHQ6ICAgS2lrbyBQaXJpcworIwkJCQkgQmFydCBTYW13ZWwKKyMJCQkJIE1pY2hhIEZlaWdpbgorIwkJCQkgQW5kcmV3IE1vcnRvbgorIwkJCQkgSGVydmUgRXljaGVubmUKKyMJCQkJIERheCBLZWxzb24KKyMKKyMgT3JpZ2luYWwgTGludXggMi40IHZlcnNpb24gYnk6IEplbnMgQXhib2UKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBTb3VyY2UgY29uZmlnCitpZiBbIC1mIC9ldGMvZGVmYXVsdC9sYXB0b3AtbW9kZSBdIDsgdGhlbgorCSMgRGViaWFuCisJLiAvZXRjL2RlZmF1bHQvbGFwdG9wLW1vZGUKK2VsaWYgWyAtZiAvZXRjL3N5c2NvbmZpZy9sYXB0b3AtbW9kZSBdIDsgdGhlbgorCSMgT3RoZXJzCisgICAgICAgIC4gL2V0Yy9zeXNjb25maWcvbGFwdG9wLW1vZGUKK2ZpCisKKyMgRG9uJ3QgcmFpc2UgYW4gZXJyb3IgaWYgdGhlIGNvbmZpZyBmaWxlIGlzIGluY29tcGxldGUKKyMgc2V0IGRlZmF1bHRzIGluc3RlYWQ6CisKKyMgTWF4aW11bSB0aW1lLCBpbiBzZWNvbmRzLCBvZiBoYXJkIGRyaXZlIHNwaW5kb3duIHRpbWUgdGhhdCB5b3UgYXJlCisjIGNvbWZvcnRhYmxlIHdpdGguIFdvcnN0IGNhc2UsIGl0J3MgcG9zc2libGUgdGhhdCB5b3UgY291bGQgbG9zZSB0aGlzCisjIGFtb3VudCBvZiB3b3JrIGlmIHlvdXIgYmF0dGVyeSBmYWlscyB5b3Ugd2hpbGUgaW4gbGFwdG9wIG1vZGUuCitNQVhfQUdFPSR7TUFYX0FHRTotJzYwMCd9CisKKyMgUmVhZC1haGVhZCwgaW4ga2lsb2J5dGVzCitSRUFEQUhFQUQ9JHtSRUFEQUhFQUQ6LSc0MDk2J30KKworIyBTaGFsbCB3ZSByZW1vdW50IGpvdXJuYWxlZCBmcy4gd2l0aCBhcHByb3ByaWF0ZSBjb21taXQgaW50ZXJ2YWw/ICgxPXllcykKK0RPX1JFTU9VTlRTPSR7RE9fUkVNT1VOVFM6LScxJ30KKworIyBBbmQgc2hhbGwgd2UgYWRkIHRoZSAibm9hdGltZSIgb3B0aW9uIHRvIHRoYXQgYXMgd2VsbD8gKDE9eWVzKQorRE9fUkVNT1VOVF9OT0FUSU1FPSR7RE9fUkVNT1VOVF9OT0FUSU1FOi0nMSd9CisKKyMgU2hhbGwgd2UgYWRqdXN0IHRoZSBpZGxlIHRpbWVvdXQgb24gYSBoYXJkIGRyaXZlPworRE9fSEQ9JHtET19IRDotJzEnfQorCisjIEFkanVzdCBpZGxlIHRpbWVvdXQgb24gd2hpY2ggaGFyZCBkcml2ZT8KK0hEPSIke0hEOi0nL2Rldi9oZGEnfSIKKworIyBzcGluZG93biB0aW1lIGZvciBIRCAoaGRwYXJtIC1TIHZhbHVlcykKK0FDX0hEPSR7QUNfSEQ6LScyNDQnfQorQkFUVF9IRD0ke0JBVFRfSEQ6LSc0J30KKworIyBEaXJ0eSBzeW5jaHJvbm91cyByYXRpby4gIEF0IHRoaXMgcGVyY2VudGFnZSBvZiBkaXJ0eSBwYWdlcyB0aGUgcHJvY2VzcyB3aGljaAorIyBjYWxscyB3cml0ZSgpIGRvZXMgaXRzIG93biB3cml0ZWJhY2sKK0RJUlRZX1JBVElPPSR7RElSVFlfUkFUSU86LSc0MCd9CisKKyMgY3B1IGZyZXF1ZW5jeSBzY2FsaW5nCisjIFNlZSBEb2N1bWVudGF0aW9uL2NwdS1mcmVxL3VzZXItZ3VpZGUudHh0IGZvciBtb3JlIGluZm8KK0RPX0NQVT0ke0NQVV9NQU5BR0U6LScwJ30KK0NQVV9NQVhGUkVRPSR7Q1BVX01BWEZSRVE6LSdzbG93ZXN0J30KKworIworIyBBbGxvd2VkIGRpcnR5IGJhY2tncm91bmQgcmF0aW8sIGluIHBlcmNlbnQuICBPbmNlIERJUlRZX1JBVElPIGhhcyBiZWVuCisjIGV4Y2VlZGVkLCB0aGUga2VybmVsIHdpbGwgd2FrZSBmbHVzaGVyIHRocmVhZHMgd2hpY2ggd2lsbCB0aGVuIHJlZHVjZSB0aGUKKyMgYW1vdW50IG9mIGRpcnR5IG1lbW9yeSB0byBkaXJ0eV9iYWNrZ3JvdW5kX3JhdGlvLiAgU2V0IHRoaXMgbmljZSBhbmQgbG93LAorIyBzbyBvbmNlIHNvbWUgd3JpdGVvdXQgaGFzIGNvbW1lbmNlZCwgd2UgZG8gYSBsb3Qgb2YgaXQuCisjCitESVJUWV9CQUNLR1JPVU5EX1JBVElPPSR7RElSVFlfQkFDS0dST1VORF9SQVRJTzotJzUnfQorCisjIGtlcm5lbCBkZWZhdWx0IGRpcnR5IGJ1ZmZlciBhZ2UKK0RFRl9BR0U9JHtERUZfQUdFOi0nMzAnfQorREVGX1VQREFURT0ke0RFRl9VUERBVEU6LSc1J30KK0RFRl9ESVJUWV9CQUNLR1JPVU5EX1JBVElPPSR7REVGX0RJUlRZX0JBQ0tHUk9VTkRfUkFUSU86LScxMCd9CitERUZfRElSVFlfUkFUSU89JHtERUZfRElSVFlfUkFUSU86LSc0MCd9CitERUZfWEZTX0FHRV9CVUZGRVI9JHtERUZfWEZTX0FHRV9CVUZGRVI6LScxNSd9CitERUZfWEZTX1NZTkNfSU5URVJWQUw9JHtERUZfWEZTX1NZTkNfSU5URVJWQUw6LSczMCd9CitERUZfWEZTX0JVRkRfSU5URVJWQUw9JHtERUZfWEZTX0JVRkRfSU5URVJWQUw6LScxJ30KKworIyBUaGlzIG11c3QgYmUgYWRqdXN0ZWQgbWFudWFsbHkgdG8gdGhlIHZhbHVlIG9mIEhaIGluIHRoZSBydW5uaW5nIGtlcm5lbAorIyBvbiAyLjQsIHVudGlsIHRoZSBYRlMgcGVvcGxlIGNoYW5nZSB0aGVpciAyLjQgZXh0ZXJuYWwgaW50ZXJmYWNlcyB0byB3b3JrIGluCisjIGNlbnRpc2Vjcy4gVGhpcyBjYW4gYmUgYXV0b21hdGVkLCBidXQgaXQncyBhIHdvcmsgaW4gcHJvZ3Jlc3MgdGhhdCBzdGlsbCBuZWVkcworIyBzb21lIGZpeGVzLiBPbiAyLjYga2VybmVscywgWEZTIHVzZXMgVVNFUl9IWiBpbnN0ZWFkIG9mIEhaIGZvciBleHRlcm5hbAorIyBpbnRlcmZhY2VzLCBhbmQgdGhhdCBpcyBjdXJyZW50bHkgYWx3YXlzIHNldCB0byAxMDAuIFNvIHlvdSBkb24ndCBuZWVkIHRvCisjIGNoYW5nZSB0aGlzIG9uIDIuNi4KK1hGU19IWj0ke1hGU19IWjotJzEwMCd9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK0tMRVZFTD0iJCh1bmFtZSAtciB8CisgICAgICAgICAgICAgeworCSAgICAgICBJRlM9Jy4nIHJlYWQgYSBiIGMKKwkgICAgICAgZWNobyAkYS4kYgorCSAgICAgfQorKSIKK2Nhc2UgIiRLTEVWRUwiIGluCisJIjIuNCJ8IjIuNiIpCisJCTs7CisJKikKKwkJZWNobyAiVW5oYW5kbGVkIGtlcm5lbCB2ZXJzaW9uOiAkS0xFVkVMICgndW5hbWUgLXInID0gJyQodW5hbWUgLXIpJykiID4mMgorCQlleGl0IDEKKwkJOzsKK2VzYWMKKworaWYgWyAhIC1lIC9wcm9jL3N5cy92bS9sYXB0b3BfbW9kZSBdIDsgdGhlbgorCWVjaG8gIktlcm5lbCBpcyBub3QgcGF0Y2hlZCB3aXRoIGxhcHRvcF9tb2RlIHBhdGNoLiIgPiYyCisJZXhpdCAxCitmaQorCitpZiBbICEgLXcgL3Byb2Mvc3lzL3ZtL2xhcHRvcF9tb2RlIF0gOyB0aGVuCisJZWNobyAiWW91IGRvIG5vdCBoYXZlIGVub3VnaCBwcml2aWxlZ2VzIHRvIGVuYWJsZSBsYXB0b3BfbW9kZS4iID4mMgorCWV4aXQgMQorZmkKKworIyBSZW1vdmUgYW4gb3B0aW9uICh0aGUgZmlyc3QgcGFyYW1ldGVyKSBvZiB0aGUgZm9ybSBvcHRpb249PG51bWJlcj4gZnJvbQorIyBhIG1vdW50IG9wdGlvbnMgc3RyaW5nICh0aGUgcmVzdCBvZiB0aGUgcGFyYW1ldGVycykuCitwYXJzZV9tb3VudF9vcHRzICgpIHsKKwlPUFQ9IiQxIgorCXNoaWZ0CisJZWNobyAiLCQqLCIgfCBzZWQJCVwKKwkgLWUgJ3MvLCciJE9QVCInPVswLTldKiwvLC9nJwlcCisJIC1lICdzLywsKi8sL2cnCQkJXAorCSAtZSAncy9eLC8vJwkJCVwKKwkgLWUgJ3MvLCQvLycKK30KKworIyBSZW1vdmUgYW4gb3B0aW9uICh0aGUgZmlyc3QgcGFyYW1ldGVyKSB3aXRob3V0IGFueSBhcmd1bWVudHMgZnJvbQorIyBhIG1vdW50IG9wdGlvbiBzdHJpbmcgKHRoZSByZXN0IG9mIHRoZSBwYXJhbWV0ZXJzKS4KK3BhcnNlX25vbnVtYmVyX21vdW50X29wdHMgKCkgeworCU9QVD0iJDEiCisJc2hpZnQKKwllY2hvICIsJCosIiB8IHNlZAkJXAorCSAtZSAncy8sJyIkT1BUIicsLywvZycJCVwKKwkgLWUgJ3MvLCwqLywvZycJCQlcCisJIC1lICdzL14sLy8nCQkJXAorCSAtZSAncy8sJC8vJworfQorCisjIEZpbmQgb3V0IHRoZSBzdGF0ZSBvZiBhIHllcy9ubyBvcHRpb24gKGUuZy4gImF0aW1lIi8ibm9hdGltZSIpIGluCisjIGZzdGFiIGZvciBhIGdpdmVuIGZpbGVzeXN0ZW0sIGFuZCB1c2UgdGhpcyBzdGF0ZSB0byByZXBsYWNlIHRoZQorIyB2YWx1ZSBvZiB0aGUgb3B0aW9uIGluIGFub3RoZXIgbW91bnQgb3B0aW9ucyBzdHJpbmcuIFRoZSBkZXZpY2UKKyMgaXMgdGhlIGZpcnN0IGFyZ3VtZW50LCB0aGUgb3B0aW9uIG5hbWUgdGhlIHNlY29uZCwgYW5kIHRoZSBkZWZhdWx0CisjIHZhbHVlIHRoZSB0aGlyZC4gVGhlIHJlbWFpbmRlciBpcyB0aGUgbW91bnQgb3B0aW9ucyBzdHJpbmcuCisjCisjIEV4YW1wbGU6CisjIHBhcnNlX3llc25vX29wdHNfd2ZzdGFiIC9kZXYvaGRhMSBhdGltZSBhdGltZSBkZWZhdWx0cyxub2F0aW1lCisjCisjIElmIGZzdGFiIGNvbnRhaW5zLCBzYXksICJydyIgZm9yIHRoaXMgZmlsZXN5c3RlbSwgdGhlbiB0aGUgcmVzdWx0CisjIHdpbGwgYmUgImRlZmF1bHRzLGF0aW1lIi4KK3BhcnNlX3llc25vX29wdHNfd2ZzdGFiICgpIHsKKwlMX0RFVj0iJDEiCisJT1BUPSIkMiIKKwlERUZfT1BUPSIkMyIKKwlzaGlmdCAzCisJTF9PUFRTPSIkKiIKKwlQQVJTRURPUFRTMT0iJChwYXJzZV9ub251bWJlcl9tb3VudF9vcHRzICRPUFQgJExfT1BUUykiCisJUEFSU0VET1BUUzE9IiQocGFyc2Vfbm9udW1iZXJfbW91bnRfb3B0cyBubyRPUFQgJFBBUlNFRE9QVFMxKSIKKwkjIFdhdGNoIGZvciBhIGRlZmF1bHQgYXRpbWUgaW4gZnN0YWIKKwlGU1RBQl9PUFRTPSIkKGF3ayAnJDEgPT0gIickTF9ERVYnIiB7IHByaW50ICQ0IH0nIC9ldGMvZnN0YWIpIgorCWlmIGVjaG8gIiRGU1RBQl9PUFRTIiB8IGdyZXAgIiRPUFQiID4gL2Rldi9udWxsIDsgdGhlbgorCQkjIG9wdGlvbiBzcGVjaWZpZWQgaW4gZnN0YWI6IGV4dHJhY3QgdGhlIHZhbHVlIGFuZCB1c2UgaXQKKwkJaWYgZWNobyAiJEZTVEFCX09QVFMiIHwgZ3JlcCAibm8kT1BUIiA+IC9kZXYvbnVsbCA7IHRoZW4KKwkJCWVjaG8gIiRQQVJTRURPUFRTMSxubyRPUFQiCisJCWVsc2UKKwkJCSMgbm8kT1BUIG5vdCBmb3VuZCAtLSBzbyB3ZSBtdXN0IGhhdmUgJE9QVC4KKwkJCWVjaG8gIiRQQVJTRURPUFRTMSwkT1BUIgorCQlmaQorCWVsc2UKKwkJIyBvcHRpb24gbm90IHNwZWNpZmllZCBpbiBmc3RhYiAtLSBjaG9vc2UgdGhlIGRlZmF1bHQuCisJCWVjaG8gIiRQQVJTRURPUFRTMSwkREVGX09QVCIKKwlmaQorfQorCisjIEZpbmQgb3V0IHRoZSBzdGF0ZSBvZiBhIG51bWJlcmVkIG9wdGlvbiAoZS5nLiAiY29tbWl0PU5OTiIpIGluCisjIGZzdGFiIGZvciBhIGdpdmVuIGZpbGVzeXN0ZW0sIGFuZCB1c2UgdGhpcyBzdGF0ZSB0byByZXBsYWNlIHRoZQorIyB2YWx1ZSBvZiB0aGUgb3B0aW9uIGluIGFub3RoZXIgbW91bnQgb3B0aW9ucyBzdHJpbmcuIFRoZSBkZXZpY2UKKyMgaXMgdGhlIGZpcnN0IGFyZ3VtZW50LCBhbmQgdGhlIG9wdGlvbiBuYW1lIHRoZSBzZWNvbmQuIFRoZQorIyByZW1haW5kZXIgaXMgdGhlIG1vdW50IG9wdGlvbnMgc3RyaW5nIGluIHdoaWNoIHRoZSByZXBsYWNlbWVudAorIyBtdXN0IGJlIGRvbmUuCisjCisjIEV4YW1wbGU6CisjIHBhcnNlX21vdW50X29wdHNfd2ZzdGFiIC9kZXYvaGRhMSBjb21taXQgZGVmYXVsdHMsY29tbWl0PTcKKyMKKyMgSWYgZnN0YWIgY29udGFpbnMsIHNheSwgImNvbW1pdD0zLHJ3IiBmb3IgdGhpcyBmaWxlc3lzdGVtLCB0aGVuIHRoZQorIyByZXN1bHQgd2lsbCBiZSAicncsY29tbWl0PTMiLgorcGFyc2VfbW91bnRfb3B0c193ZnN0YWIgKCkgeworCUxfREVWPSIkMSIKKwlPUFQ9IiQyIgorCXNoaWZ0IDIKKwlMX09QVFM9IiQqIgorCVBBUlNFRE9QVFMxPSIkKHBhcnNlX21vdW50X29wdHMgJE9QVCAkTF9PUFRTKSIKKwkjIFdhdGNoIGZvciBhIGRlZmF1bHQgY29tbWl0IGluIGZzdGFiCisJRlNUQUJfT1BUUz0iJChhd2sgJyQxID09ICInJExfREVWJyIgeyBwcmludCAkNCB9JyAvZXRjL2ZzdGFiKSIKKwlpZiBlY2hvICIkRlNUQUJfT1BUUyIgfCBncmVwICIkT1BUPSIgPiAvZGV2L251bGwgOyB0aGVuCisJCSMgb3B0aW9uIHNwZWNpZmllZCBpbiBmc3RhYjogZXh0cmFjdCB0aGUgdmFsdWUsIGFuZCB1c2UgaXQKKwkJZWNobyAtbiAiJFBBUlNFRE9QVFMxLCRPUFQ9IgorCQllY2hvICIsJEZTVEFCX09QVFMsIiB8IHNlZCBcCisJCSAtZSAncy8uKiwnIiRPUFQiJz0vLycJXAorCQkgLWUgJ3MvLC4qLy8nCisJZWxzZQorCQkjIG9wdGlvbiBub3Qgc3BlY2lmaWVkIGluIGZzdGFiOiBzZXQgaXQgdG8gMAorCQllY2hvICIkUEFSU0VET1BUUzEsJE9QVD0wIgorCWZpCit9CisKK2RlZHVjZV9mc3R5cGUgKCkgeworCU1QPSIkMSIKKwkjIE15IHJvb3QgZmlsZXN5c3RlbSB1bmZvcnR1bmF0ZWx5IGhhcworCSMgdHlwZSAidW5rbm93biIgaW4gL2V0Yy9tdGFiLiBJZiB3ZSBlbmNvdW50ZXIKKwkjICJ1bmtub3duIiwgd2UgdHJ5IHRvIGdldCB0aGUgdHlwZSBmcm9tIGZzdGFiLgorCWNhdCAvZXRjL2ZzdGFiIHwKKwlncmVwIC12ICdeIycgfAorCXdoaWxlIHJlYWQgRlNUQUJfREVWIEZTVEFCX01QIEZTVEFCX0ZTVCBGU1RBQl9PUFRTIEZTVEFCX0RVTVAgRlNUQUJfRFVNUCA7IGRvCisJCWlmIFsgIiRGU1RBQl9NUCIgPSAiJE1QIiBdOyB0aGVuCisJCQllY2hvICRGU1RBQl9GU1QKKwkJCWV4aXQgMAorCQlmaQorCWRvbmUKK30KKworaWYgWyAkRE9fUkVNT1VOVF9OT0FUSU1FIC1lcSAxIF0gOyB0aGVuCisJTk9BVElNRV9PUFQ9Iixub2F0aW1lIgorZmkKKworY2FzZSAiJDEiIGluCisJc3RhcnQpCisJCUFHRT0kKCgxMDAqJE1BWF9BR0UpKQorCQlYRlNfQUdFPSQoKCRYRlNfSFoqJE1BWF9BR0UpKQorCQllY2hvIC1uICJTdGFydGluZyBsYXB0b3BfbW9kZSIKKworCQlpZiBbIC1kIC9wcm9jL3N5cy92bS9wYWdlYnVmIF0gOyB0aGVuCisJCQkjIChGb3IgMi40IGFuZCBlYXJseSAyLjYuKQorCQkJIyBUaGlzIG9ubHkgbmVlZHMgdG8gYmUgc2V0LCBub3QgcmVzZXQgLS0gaXQgaXMgb25seSB1c2VkIHdoZW4KKwkJCSMgbGFwdG9wIG1vZGUgaXMgZW5hYmxlZC4KKwkJCWVjaG8gJFhGU19BR0UgPiAvcHJvYy9zeXMvdm0vcGFnZWJ1Zi9sbV9mbHVzaF9hZ2UKKwkJCWVjaG8gJFhGU19BR0UgPiAvcHJvYy9zeXMvZnMveGZzL2xtX3N5bmNfaW50ZXJ2YWwKKwkJZWxpZiBbIC1mIC9wcm9jL3N5cy9mcy94ZnMvbG1fYWdlX2J1ZmZlciBdIDsgdGhlbgorCQkJIyAoQSBjb3VwbGUgb2YgZWFybHkgMi42IGxhcHRvcCBtb2RlIHBhdGNoZXMgaGFkIHRoZXNlLikKKwkJCSMgVGhlIHNhbWUgZ29lcyBmb3IgdGhlc2UuCisJCQllY2hvICRYRlNfQUdFID4gL3Byb2Mvc3lzL2ZzL3hmcy9sbV9hZ2VfYnVmZmVyCisJCQllY2hvICRYRlNfQUdFID4gL3Byb2Mvc3lzL2ZzL3hmcy9sbV9zeW5jX2ludGVydmFsCisJCWVsaWYgWyAtZiAvcHJvYy9zeXMvZnMveGZzL2FnZV9idWZmZXIgXSA7IHRoZW4KKwkJCSMgKDIuNi42KQorCQkJIyBCdXQgbm90IGZvciB0aGVzZSAtLSB0aGV5IGFyZSBhbHNvIHVzZWQgaW4gbm9ybWFsCisJCQkjIG9wZXJhdGlvbi4KKwkJCWVjaG8gJFhGU19BR0UgPiAvcHJvYy9zeXMvZnMveGZzL2FnZV9idWZmZXIKKwkJCWVjaG8gJFhGU19BR0UgPiAvcHJvYy9zeXMvZnMveGZzL3N5bmNfaW50ZXJ2YWwKKwkJZWxpZiBbIC1mIC9wcm9jL3N5cy9mcy94ZnMvYWdlX2J1ZmZlcl9jZW50aXNlY3MgXSA7IHRoZW4KKwkJCSMgKDIuNi43IHVwd2FyZHMpCisJCQkjIEFuZCBub3QgZm9yIHRoZXNlIGVpdGhlci4gVGhlc2UgYXJlIGluIGNlbnRpc2VjcywKKwkJCSMgbm90IFVTRVJfSFosIHNvIHdlIGhhdmUgdG8gdXNlICRBR0UsIG5vdCAkWEZTX0FHRS4KKwkJCWVjaG8gJEFHRSA+IC9wcm9jL3N5cy9mcy94ZnMvYWdlX2J1ZmZlcl9jZW50aXNlY3MKKwkJCWVjaG8gJEFHRSA+IC9wcm9jL3N5cy9mcy94ZnMveGZzc3luY2RfY2VudGlzZWNzCisJCQllY2hvIDMwMDAgPiAvcHJvYy9zeXMvZnMveGZzL3hmc2J1ZmRfY2VudGlzZWNzCisJCWZpCisKKwkJY2FzZSAiJEtMRVZFTCIgaW4KKwkJCSIyLjQiKQorCQkJCWVjaG8gMQkJCQkJPiAvcHJvYy9zeXMvdm0vbGFwdG9wX21vZGUKKwkJCQllY2hvICIzMCA1MDAgMCAwICRBR0UgJEFHRSA2MCAyMCAwIgk+IC9wcm9jL3N5cy92bS9iZGZsdXNoCisJCQkJOzsKKwkJCSIyLjYiKQorCQkJCWVjaG8gNQkJCQkJPiAvcHJvYy9zeXMvdm0vbGFwdG9wX21vZGUKKwkJCQllY2hvICIkQUdFIgkJCQk+IC9wcm9jL3N5cy92bS9kaXJ0eV93cml0ZWJhY2tfY2VudGlzZWNzCisJCQkJZWNobyAiJEFHRSIJCQkJPiAvcHJvYy9zeXMvdm0vZGlydHlfZXhwaXJlX2NlbnRpc2VjcworCQkJCWVjaG8gIiRESVJUWV9SQVRJTyIJCQk+IC9wcm9jL3N5cy92bS9kaXJ0eV9yYXRpbworCQkJCWVjaG8gIiRESVJUWV9CQUNLR1JPVU5EX1JBVElPIgkJPiAvcHJvYy9zeXMvdm0vZGlydHlfYmFja2dyb3VuZF9yYXRpbworCQkJCTs7CisJCWVzYWMKKwkJaWYgWyAkRE9fUkVNT1VOVFMgLWVxIDEgXTsgdGhlbgorCQkJY2F0IC9ldGMvbXRhYiB8IHdoaWxlIHJlYWQgREVWIE1QIEZTVCBPUFRTIERVTVAgUEFTUyA7IGRvCisJCQkJUEFSU0VET1BUUz0iJChwYXJzZV9tb3VudF9vcHRzICIkT1BUUyIpIgorCQkJCWlmIFsgIiRGU1QiID0gJ3Vua25vd24nIF07IHRoZW4KKwkJCQkJRlNUPSQoZGVkdWNlX2ZzdHlwZSAkTVApCisJCQkJZmkKKwkJCQljYXNlICIkRlNUIiBpbgorCQkJCQkiZXh0MyJ8InJlaXNlcmZzIikKKwkJCQkJCVBBUlNFRE9QVFM9IiQocGFyc2VfbW91bnRfb3B0cyBjb21taXQgIiRPUFRTIikiCisJCQkJCQltb3VudCAkREVWIC10ICRGU1QgJE1QIC1vIHJlbW91bnQsJFBBUlNFRE9QVFMsY29tbWl0PSRNQVhfQUdFJE5PQVRJTUVfT1BUCisJCQkJCQk7OworCQkJCQkieGZzIikKKwkJCQkJCW1vdW50ICRERVYgLXQgJEZTVCAkTVAgLW8gcmVtb3VudCwkT1BUUyROT0FUSU1FX09QVAorCQkJCQkJOzsKKwkJCQllc2FjCisJCQkJaWYgWyAtYiAkREVWIF0gOyB0aGVuCisJCQkJCWJsb2NrZGV2IC0tc2V0cmEgJCgoJFJFQURBSEVBRCAqIDIpKSAkREVWCisJCQkJZmkKKwkJCWRvbmUKKwkJZmkKKwkJaWYgWyAkRE9fSEQgLWVxIDEgXSA7IHRoZW4KKwkJCWZvciBUSElTSEQgaW4gJEhEIDsgZG8KKwkJCQkvc2Jpbi9oZHBhcm0gLVMgJEJBVFRfSEQgJFRISVNIRCA+IC9kZXYvbnVsbCAyPiYxCisJCQkJL3NiaW4vaGRwYXJtIC1CIDEgJFRISVNIRCA+IC9kZXYvbnVsbCAyPiYxCisJCQlkb25lCisJCWZpCisJCWlmIFsgJERPX0NQVSAtZXEgMSAtYSAtZSAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUwL2NwdWZyZXEvY3B1aW5mb19taW5fZnJlcSBdOyB0aGVuCisJCQlpZiBbICRDUFVfTUFYRlJFUSA9ICdzbG93ZXN0JyBdOyB0aGVuCisJCQkJQ1BVX01BWEZSRVE9YGNhdCAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUwL2NwdWZyZXEvY3B1aW5mb19taW5fZnJlcWAKKwkJCWZpCisJCQllY2hvICRDUFVfTUFYRlJFUSA+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTAvY3B1ZnJlcS9zY2FsaW5nX21heF9mcmVxCisJCWZpCisJCWVjaG8gIi4iCisJCTs7CisJc3RvcCkKKwkJVV9BR0U9JCgoMTAwKiRERUZfVVBEQVRFKSkKKwkJQl9BR0U9JCgoMTAwKiRERUZfQUdFKSkKKwkJZWNobyAtbiAiU3RvcHBpbmcgbGFwdG9wX21vZGUiCisJCWVjaG8gMCA+IC9wcm9jL3N5cy92bS9sYXB0b3BfbW9kZQorCQlpZiBbIC1mIC9wcm9jL3N5cy9mcy94ZnMvYWdlX2J1ZmZlciAtYSAhIC1mIC9wcm9jL3N5cy9mcy94ZnMvbG1fYWdlX2J1ZmZlciBdIDsgdGhlbgorCQkJIyBUaGVzZSBuZWVkIHRvIGJlIHJlc3RvcmVkLCBpZiB0aGVyZSBhcmUgbm8gbG1fKi4KKwkJCWVjaG8gJCgoJFhGU19IWiokREVGX1hGU19BR0VfQlVGRkVSKSkJIAk+IC9wcm9jL3N5cy9mcy94ZnMvYWdlX2J1ZmZlcgorCQkJZWNobyAkKCgkWEZTX0haKiRERUZfWEZTX1NZTkNfSU5URVJWQUwpKSAJPiAvcHJvYy9zeXMvZnMveGZzL3N5bmNfaW50ZXJ2YWwKKwkJZWxpZiBbIC1mIC9wcm9jL3N5cy9mcy94ZnMvYWdlX2J1ZmZlcl9jZW50aXNlY3MgXSA7IHRoZW4KKwkJCSMgVGhlc2UgbmVlZCB0byBiZSByZXN0b3JlZCBhcyB3ZWxsLgorCQkJZWNobyAkKCgxMDAqJERFRl9YRlNfQUdFX0JVRkZFUikpCT4gL3Byb2Mvc3lzL2ZzL3hmcy9hZ2VfYnVmZmVyX2NlbnRpc2VjcworCQkJZWNobyAkKCgxMDAqJERFRl9YRlNfU1lOQ19JTlRFUlZBTCkpCT4gL3Byb2Mvc3lzL2ZzL3hmcy94ZnNzeW5jZF9jZW50aXNlY3MKKwkJCWVjaG8gJCgoMTAwKiRERUZfWEZTX0JVRkRfSU5URVJWQUwpKQk+IC9wcm9jL3N5cy9mcy94ZnMveGZzYnVmZF9jZW50aXNlY3MKKwkJZmkKKwkJY2FzZSAiJEtMRVZFTCIgaW4KKwkJCSIyLjQiKQorCQkJCWVjaG8gIjMwIDUwMCAwIDAgJFVfQUdFICRCX0FHRSA2MCAyMCAwIgk+IC9wcm9jL3N5cy92bS9iZGZsdXNoCisJCQkJOzsKKwkJCSIyLjYiKQorCQkJCWVjaG8gIiRVX0FHRSIJCQkJPiAvcHJvYy9zeXMvdm0vZGlydHlfd3JpdGViYWNrX2NlbnRpc2VjcworCQkJCWVjaG8gIiRCX0FHRSIJCQkJPiAvcHJvYy9zeXMvdm0vZGlydHlfZXhwaXJlX2NlbnRpc2VjcworCQkJCWVjaG8gIiRERUZfRElSVFlfUkFUSU8iCQkJPiAvcHJvYy9zeXMvdm0vZGlydHlfcmF0aW8KKwkJCQllY2hvICIkREVGX0RJUlRZX0JBQ0tHUk9VTkRfUkFUSU8iCT4gL3Byb2Mvc3lzL3ZtL2RpcnR5X2JhY2tncm91bmRfcmF0aW8KKwkJCQk7OworCQllc2FjCisJCWlmIFsgJERPX1JFTU9VTlRTIC1lcSAxIF0gOyB0aGVuCisJCQljYXQgL2V0Yy9tdGFiIHwgd2hpbGUgcmVhZCBERVYgTVAgRlNUIE9QVFMgRFVNUCBQQVNTIDsgZG8KKwkJCQkjIFJlc2V0IGNvbW1pdCBhbmQgYXRpbWUgb3B0aW9ucyB0byBkZWZhdWx0cy4KKwkJCQlpZiBbICIkRlNUIiA9ICd1bmtub3duJyBdOyB0aGVuCisJCQkJCUZTVD0kKGRlZHVjZV9mc3R5cGUgJE1QKQorCQkJCWZpCisJCQkJY2FzZSAiJEZTVCIgaW4KKwkJCQkJImV4dDMifCJyZWlzZXJmcyIpCisJCQkJCQlQQVJTRURPUFRTPSIkKHBhcnNlX21vdW50X29wdHNfd2ZzdGFiICRERVYgY29tbWl0ICRPUFRTKSIKKwkJCQkJCVBBUlNFRE9QVFM9IiQocGFyc2VfeWVzbm9fb3B0c193ZnN0YWIgJERFViBhdGltZSBhdGltZSAkUEFSU0VET1BUUykiCisJCQkJCQltb3VudCAkREVWIC10ICRGU1QgJE1QIC1vIHJlbW91bnQsJFBBUlNFRE9QVFMKKwkJCQkJCTs7CisJCQkJCSJ4ZnMiKQorCQkJCQkJUEFSU0VET1BUUz0iJChwYXJzZV95ZXNub19vcHRzX3dmc3RhYiAkREVWIGF0aW1lIGF0aW1lICRPUFRTKSIKKwkJCQkJCW1vdW50ICRERVYgLXQgJEZTVCAkTVAgLW8gcmVtb3VudCwkUEFSU0VET1BUUworCQkJCQkJOzsKKwkJCQllc2FjCisJCQkJaWYgWyAtYiAkREVWIF0gOyB0aGVuCisJCQkJCWJsb2NrZGV2IC0tc2V0cmEgMjU2ICRERVYKKwkJCQlmaQorCQkJZG9uZQorCQlmaQorCQlpZiBbICRET19IRCAtZXEgMSBdIDsgdGhlbgorCQkJZm9yIFRISVNIRCBpbiAkSEQgOyBkbworCQkJCS9zYmluL2hkcGFybSAtUyAkQUNfSEQgJFRISVNIRCA+IC9kZXYvbnVsbCAyPiYxCisJCQkJL3NiaW4vaGRwYXJtIC1CIDI1NSAkVEhJU0hEID4gL2Rldi9udWxsIDI+JjEKKwkJCWRvbmUKKwkJZmkKKwkJaWYgWyAkRE9fQ1BVIC1lcSAxIC1hIC1lIC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTAvY3B1ZnJlcS9jcHVpbmZvX21pbl9mcmVxIF07IHRoZW4KKwkJCWVjaG8gYGNhdCAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUwL2NwdWZyZXEvY3B1aW5mb19tYXhfZnJlcWAgPiAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUwL2NwdWZyZXEvc2NhbGluZ19tYXhfZnJlcQorCQlmaQorCQllY2hvICIuIgorCQk7OworCSopCisJCWVjaG8gIlVzYWdlOiAkMCB7c3RhcnR8c3RvcH0iIDI+JjEKKwkJZXhpdCAxCisJCTs7CisKK2VzYWMKKworZXhpdCAwCistLS0tLS0tLS0tLS0tLS0tLS0tLUNPTlRST0wgU0NSSVBUIEVORC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK0FDUEkgaW50ZWdyYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0KKworRGF4IEtlbHNvbiBzdWJtaXR0ZWQgdGhpcyBzbyB0aGF0IHRoZSBBQ1BJIGFjcGlkIGRhZW1vbiB3aWxsCitraWNrIG9mZiB0aGUgbGFwdG9wX21vZGUgc2NyaXB0IGFuZCBydW4gaGRwYXJtLiBUaGUgcGFydCB0aGF0CithdXRvbWF0aWNhbGx5IGRpc2FibGVzIGxhcHRvcCBtb2RlIHdoZW4gdGhlIGJhdHRlcnkgaXMgbG93IHdhcword3JpdHRlbiBieSBKYW4gVG9waW5za2kuCisKKy0tLS0tLS0tLS0tLS0tLS0tL2V0Yy9hY3BpL2V2ZW50cy9hY19hZGFwdGVyIEJFR0lOLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitldmVudD1hY19hZGFwdGVyCithY3Rpb249L2V0Yy9hY3BpL2FjdGlvbnMvYWMuc2ggJWUKKy0tLS0tLS0tLS0tLS0tLS0vZXRjL2FjcGkvZXZlbnRzL2FjX2FkYXB0ZXIgRU5ELS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworLS0tLS0tLS0tLS0tLS0tLS0vZXRjL2FjcGkvZXZlbnRzL2JhdHRlcnkgQkVHSU4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2V2ZW50PWJhdHRlcnkuKgorYWN0aW9uPS9ldGMvYWNwaS9hY3Rpb25zL2JhdHRlcnkuc2ggJWUKKy0tLS0tLS0tLS0tLS0tLS0vZXRjL2FjcGkvZXZlbnRzL2JhdHRlcnkgRU5ELS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworLS0tLS0tLS0tLS0tLS0tLS9ldGMvYWNwaS9hY3Rpb25zL2FjLnNoIEJFR0lOLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMhL2Jpbi9iYXNoCisKKyMgYWMgb24vb2ZmbGluZSBldmVudCBoYW5kbGVyCisKK3N0YXR1cz1gYXdrICcvXnN0YXRlOiAvIHsgcHJpbnQgJDIgfScgL3Byb2MvYWNwaS9hY19hZGFwdGVyLyQyL3N0YXRlYAorCitjYXNlICRzdGF0dXMgaW4KKyAgICAgICAgIm9uLWxpbmUiKQorICAgICAgICAgICAgICAgIC9zYmluL2xhcHRvcF9tb2RlIHN0b3AKKyAgICAgICAgICAgICAgICBleGl0IDAKKyAgICAgICAgOzsKKyAgICAgICAgIm9mZi1saW5lIikKKyAgICAgICAgICAgICAgICAvc2Jpbi9sYXB0b3BfbW9kZSBzdGFydAorICAgICAgICAgICAgICAgIGV4aXQgMAorICAgICAgICA7OworZXNhYworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL2V0Yy9hY3BpL2FjdGlvbnMvYWMuc2ggRU5ELS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vZXRjL2FjcGkvYWN0aW9ucy9iYXR0ZXJ5LnNoIEJFR0lOLS0tLS0tLS0tLS0tLS0tLS0tLQorIyEgL2Jpbi9iYXNoCisKKyMgQXV0b21hdGljYWxseSBkaXNhYmxlIGxhcHRvcCBtb2RlIHdoZW4gdGhlIGJhdHRlcnkgYWxtb3N0IHJ1bnMgb3V0LgorCitCQVRUX0lORk89L3Byb2MvYWNwaS9iYXR0ZXJ5LyQyL3N0YXRlCisKK2lmIFtbIC1mIC9wcm9jL3N5cy92bS9sYXB0b3BfbW9kZSBdXQordGhlbgorICAgTE09YGNhdCAvcHJvYy9zeXMvdm0vbGFwdG9wX21vZGVgCisgICBpZiBbWyAkTE0gLWd0IDAgXV0KKyAgIHRoZW4KKyAgICAgaWYgW1sgLWYgJEJBVFRfSU5GTyBdXQorICAgICB0aGVuCisgICAgICAgICMgU291cmNlIHRoZSBjb25maWcgZmlsZSBvbmx5IG5vdyB0aGF0IHdlIGtub3cgd2UgbmVlZAorICAgICAgICBpZiBbIC1mIC9ldGMvZGVmYXVsdC9sYXB0b3AtbW9kZSBdIDsgdGhlbgorICAgICAgICAgICAgICAgICMgRGViaWFuCisgICAgICAgICAgICAgICAgLiAvZXRjL2RlZmF1bHQvbGFwdG9wLW1vZGUKKyAgICAgICAgZWxpZiBbIC1mIC9ldGMvc3lzY29uZmlnL2xhcHRvcC1tb2RlIF0gOyB0aGVuCisgICAgICAgICAgICAgICAgIyBPdGhlcnMKKyAgICAgICAgICAgICAgICAuIC9ldGMvc3lzY29uZmlnL2xhcHRvcC1tb2RlCisgICAgICAgIGZpCisgICAgICAgIE1JTklNVU1fQkFUVEVSWV9NSU5VVEVTPSR7TUlOSU1VTV9CQVRURVJZX01JTlVURVM6LScxMCd9CisKKyAgICAgICAgQUNUSU9OPSJgY2F0ICRCQVRUX0lORk8gfCBncmVwIGNoYXJnaW5nIHwgY3V0IC1jIDI2LWAiCisgICAgICAgIGlmIFtbIEFDVElPTiAtZXEgImRpc2NoYXJnaW5nIiBdXQorICAgICAgICB0aGVuCisgICAgICAgICAgIFBSRVNFTlRfUkFURT1gY2F0ICRCQVRUX0lORk8gfCBncmVwICJwcmVzZW50IHJhdGU6IiB8IHNlZCAgInMvLiogXChbMC05XVswLTldKiBcKS4qL1wxLyIgYAorICAgICAgICAgICBSRU1BSU5JTkc9YGNhdCAkQkFUVF9JTkZPIHwgZ3JlcCAicmVtYWluaW5nIGNhcGFjaXR5OiIgfCBzZWQgICJzLy4qIFwoWzAtOV1bMC05XSogXCkuKi9cMS8iIGAKKyAgICAgICAgZmkKKyAgICAgICAgaWYgKCgkUkVNQUlOSU5HICogNjAgLyAkUFJFU0VOVF9SQVRFIDwgJE1JTklNVU1fQkFUVEVSWV9NSU5VVEVTKSkKKyAgICAgICAgdGhlbgorICAgICAgICAgICAvc2Jpbi9sYXB0b3BfbW9kZSBzdG9wCisgICAgICAgIGZpCisgICAgIGVsc2UKKyAgICAgICBsb2dnZXIgLXAgZGFlbW9uLndhcm5pbmcgIllvdSBhcmUgdXNpbmcgbGFwdG9wIG1vZGUgYW5kIHlvdXIgYmF0dGVyeSBpbnRlcmZhY2UgJEJBVFRfSU5GTyBpcyBtaXNzaW5nLiBUaGlzIG1heSBsZWFkIHRvIGxvc3Mgb2YgZGF0YSB3aGVuIHRoZSBiYXR0ZXJ5IHJ1bnMgb3V0LiBDaGVjayBrZXJuZWwgQUNQSSBzdXBwb3J0IGFuZCAvcHJvYy9hY3BpL2JhdHRlcnkgZm9sZGVyLCBhbmQgZWRpdCAvZXRjL2FjcGkvYmF0dGVyeS5zaCB0byBzZXQgQkFUVF9JTkZPIHRvIHRoZSBjb3JyZWN0IHBhdGguIgorICAgICBmaQorICAgZmkKK2ZpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vZXRjL2FjcGkvYWN0aW9ucy9iYXR0ZXJ5LnNoIEVORC0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworTW9uaXRvcmluZyB0b29sCistLS0tLS0tLS0tLS0tLS0KKworQmFydGVrIEthbmlhIHN1Ym1pdHRlZCB0aGlzLCBpdCBjYW4gYmUgdXNlZCB0byBtZWFzdXJlIGhvdyBtdWNoIHRpbWUgeW91ciBkaXNrCitzcGVuZHMgc3B1biB1cC9kb3duLiAgU2VlIERvY3VtZW50YXRpb24vbGFwdG9wcy9kc2xtLmMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbGFwdG9wcy9zb255LWxhcHRvcC50eHQgYi9Eb2N1bWVudGF0aW9uL2xhcHRvcHMvc29ueS1sYXB0b3AudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3OGIxZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2xhcHRvcHMvc29ueS1sYXB0b3AudHh0CkBAIC0wLDAgKzEsMTQ0IEBACitTb255IE5vdGVib29rIENvbnRyb2wgRHJpdmVyIChTTkMpIFJlYWRtZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlDb3B5cmlnaHQgKEMpIDIwMDQtIDIwMDUgU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KKwlDb3B5cmlnaHQgKEMpIDIwMDcgTWF0dGlhIERvbmdpbGkgPG1hbGF0dGlhQGxpbnV4Lml0PgorCitUaGlzIG1pbmktZHJpdmVyIGRyaXZlcyB0aGUgU05DIGFuZCBTUElDIGRldmljZSBwcmVzZW50IGluIHRoZSBBQ1BJIEJJT1Mgb2YgdGhlCitTb255IFZhaW8gbGFwdG9wcy4gVGhpcyBkcml2ZXIgbWl4ZXMgYm90aCBkZXZpY2VzIGZ1bmN0aW9ucyB1bmRlciB0aGUgc2FtZQorKGhvcGVmdWxseSBjb25zaXN0ZW50KSBpbnRlcmZhY2UuIFRoaXMgYWxzbyBtZWFucyB0aGF0IHRoZSBzb255cGkgZHJpdmVyIGlzCitvYnNvbGV0ZWQgYnkgc29ueS1sYXB0b3Agbm93LgorCitGbiBrZXlzIChob3RrZXlzKToKKy0tLS0tLS0tLS0tLS0tLS0tLQorU29tZSBtb2RlbHMgcmVwb3J0IGhvdGtleXMgdGhyb3VnaCB0aGUgU05DIG9yIFNQSUMgZGV2aWNlcywgc3VjaCBldmVudHMgYXJlCityZXBvcnRlZCBib3RoIHRocm91Z2ggdGhlIEFDUEkgc3Vic3lzdGVtIGFzIGFjcGkgZXZlbnRzIGFuZCB0aHJvdWdoIHRoZSBJTlBVVAorc3Vic3lzdGVtLiBTZWUgdGhlIGxvZ3Mgb2YgL3Byb2MvYnVzL2lucHV0L2RldmljZXMgdG8gZmluZCBvdXQgd2hhdCB0aG9zZQorZXZlbnRzIGFyZSBhbmQgd2hpY2ggaW5wdXQgZGV2aWNlcyBhcmUgY3JlYXRlZCBieSB0aGUgZHJpdmVyLgorQWRkaXRpb25hbGx5LCBsb2FkaW5nIHRoZSBkcml2ZXIgd2l0aCB0aGUgZGVidWcgb3B0aW9uIHdpbGwgcmVwb3J0IGFsbCBldmVudHMKK2luIHRoZSBrZXJuZWwgbG9nLgorCitUaGUgInNjYW5jb2RlcyIgcGFzc2VkIHRvIHRoZSBpbnB1dCBzeXN0ZW0gKHRoYXQgY2FuIGJlIHJlbWFwcGVkIHdpdGggdWRldikKK2FyZSBpbmRleGVzIHRvIHRoZSB0YWJsZSAic29ueV9sYXB0b3BfaW5wdXRfa2V5Y29kZV9tYXAiIGluIHRoZSBzb255LWxhcHRvcC5jCittb2R1bGUuICBGb3IgZXhhbXBsZSB0aGUgIkZOL0UiIGtleSBjb21iaW5hdGlvbiAoRUpFQ1RDRCBvbiBzb21lIG1vZGVscykKK2dlbmVyYXRlcyB0aGUgc2NhbmNvZGUgMjAgKDB4MTQpLgorCitCYWNrbGlnaHQgY29udHJvbDoKKy0tLS0tLS0tLS0tLS0tLS0tLQorSWYgeW91ciBsYXB0b3AgbW9kZWwgc3VwcG9ydHMgaXQsIHlvdSB3aWxsIGZpbmQgc3lzZnMgZmlsZXMgaW4gdGhlCisvc3lzL2NsYXNzL2JhY2tsaWdodC9zb255LworZGlyZWN0b3J5LiBZb3Ugd2lsbCBiZSBhYmxlIHRvIHF1ZXJ5IGFuZCBzZXQgdGhlIGN1cnJlbnQgc2NyZWVuCiticmlnaHRuZXNzOgorCWJyaWdodG5lc3MJCWdldC9zZXQgc2NyZWVuIGJyaWdodG5lc3MgKGFuIGludGVnZXIKKwkJCQliZXR3ZWVuIDAgYW5kIDcpCisJYWN0dWFsX2JyaWdodG5lc3MJcmVhZGluZyBmcm9tIHRoaXMgZmlsZSB3aWxsIHF1ZXJ5IHRoZSBIVworCQkJCXRvIGdldCByZWFsIGJyaWdodG5lc3MgdmFsdWUKKwltYXhfYnJpZ2h0bmVzcwkJdGhlIG1heGltdW0gYnJpZ2h0bmVzcyB2YWx1ZQorCisKK1BsYXRmb3JtIHNwZWNpZmljOgorLS0tLS0tLS0tLS0tLS0tLS0tCitMb2FkaW5nIHRoZSBzb255LWxhcHRvcCBtb2R1bGUgd2lsbCBjcmVhdGUgYQorL3N5cy9kZXZpY2VzL3BsYXRmb3JtL3NvbnktbGFwdG9wLworZGlyZWN0b3J5IHBvcHVsYXRlZCB3aXRoIHNvbWUgZmlsZXMuCisKK1lvdSB0aGVuIHJlYWQvd3JpdGUgaW50ZWdlciB2YWx1ZXMgZnJvbS90byB0aG9zZSBmaWxlcyBieSB1c2luZworc3RhbmRhcmQgVU5JWCB0b29scy4KKworVGhlIGZpbGVzIGFyZToKKwlicmlnaHRuZXNzX2RlZmF1bHQJc2NyZWVuIGJyaWdodG5lc3Mgd2hpY2ggd2lsbCBiZSBzZXQKKwkJCQl3aGVuIHRoZSBsYXB0b3Agd2lsbCBiZSByZWJvb3RlZAorCWNkcG93ZXIJCQlwb3dlciBvbi9vZmYgdGhlIGludGVybmFsIENEIGRyaXZlCisJYXVkaW9wb3dlcgkJcG93ZXIgb24vb2ZmIHRoZSBpbnRlcm5hbCBzb3VuZCBjYXJkCisJbGFucG93ZXIJCXBvd2VyIG9uL29mZiB0aGUgaW50ZXJuYWwgZXRoZXJuZXQgY2FyZAorCQkJCShvbmx5IGluIGRlYnVnIG1vZGUpCisJYmx1ZXRvb3RocG93ZXIJCXBvd2VyIG9uL29mZiB0aGUgaW50ZXJuYWwgYmx1ZXRvb3RoIGRldmljZQorCWZhbnNwZWVkCQlnZXQvc2V0IHRoZSBmYW4gc3BlZWQKKworTm90ZSB0aGF0IHNvbWUgZmlsZXMgbWF5IGJlIG1pc3NpbmcgaWYgdGhleSBhcmUgbm90IHN1cHBvcnRlZAorYnkgeW91ciBwYXJ0aWN1bGFyIGxhcHRvcCBtb2RlbC4KKworRXhhbXBsZSB1c2FnZToKKwkjIGVjaG8gIjEiID4gL3N5cy9kZXZpY2VzL3BsYXRmb3JtL3NvbnktbGFwdG9wL2JyaWdodG5lc3NfZGVmYXVsdAorc2V0cyB0aGUgbG93ZXN0IHNjcmVlbiBicmlnaHRuZXNzIGZvciB0aGUgbmV4dCBhbmQgbGF0ZXIgcmVib290cywKKwkjIGVjaG8gIjgiID4gL3N5cy9kZXZpY2VzL3BsYXRmb3JtL3NvbnktbGFwdG9wL2JyaWdodG5lc3NfZGVmYXVsdAorc2V0cyB0aGUgaGlnaGVzdCBzY3JlZW4gYnJpZ2h0bmVzcyBmb3IgdGhlIG5leHQgYW5kIGxhdGVyIHJlYm9vdHMsCisJIyBjYXQgL3N5cy9kZXZpY2VzL3BsYXRmb3JtL3NvbnktbGFwdG9wL2JyaWdodG5lc3NfZGVmYXVsdAorcmV0cmlldmVzIHRoZSB2YWx1ZS4KKworCSMgZWNobyAiMCIgPiAvc3lzL2RldmljZXMvcGxhdGZvcm0vc29ueS1sYXB0b3AvYXVkaW9wb3dlcgorcG93ZXJzIG9mZiB0aGUgc291bmQgY2FyZCwKKwkjIGVjaG8gIjEiID4gL3N5cy9kZXZpY2VzL3BsYXRmb3JtL3NvbnktbGFwdG9wL2F1ZGlvcG93ZXIKK3Bvd2VycyBvbiB0aGUgc291bmQgY2FyZC4KKworCitSRmtpbGwgY29udHJvbDoKKy0tLS0tLS0tLS0tLS0tLQorTW9yZSByZWNlbnQgVmFpbyBtb2RlbHMgZXhwb3NlIGEgY29uc2lzdGVudCBzZXQgb2YgQUNQSSBtZXRob2RzIHRvCitjb250cm9sIHJhZGlvIGZyZXF1ZW5jeSBlbWl0dGluZyBkZXZpY2VzLiBJZiB5b3UgYXJlIGEgbHVja3kgb3duZXIgb2YKK3N1Y2ggYSBsYXB0b3AgeW91IHdpbGwgZmluZCB0aGUgbmVjZXNzYXJ5IHJma2lsbCBkZXZpY2VzIHVuZGVyCisvc3lzL2NsYXNzL3Jma2lsbC4gQ2hlY2sgdGhvc2Ugc3RhcnRpbmcgd2l0aCBzb255LSogaW4KKwkjIGdyZXAgLiAvc3lzL2NsYXNzL3Jma2lsbC8qL3tzdGF0ZSxuYW1lfQorCisKK0RldmVsb3BtZW50OgorLS0tLS0tLS0tLS0tCisKK0lmIHlvdSB3YW50IHRvIGhlbHAgd2l0aCB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhpcyBkcml2ZXIgKGFuZAoreW91IGFyZSBub3QgYWZyYWlkIG9mIGFueSBzaWRlIGVmZmVjdHMgZG9pbmcgc3RyYW5nZSB0aGluZ3Mgd2l0aAoreW91ciBBQ1BJIEJJT1MgY291bGQgaGF2ZSBvbiB5b3VyIGxhcHRvcCksIGxvYWQgdGhlIGRyaXZlciBhbmQKK3Bhc3MgdGhlIG9wdGlvbiAnZGVidWc9MScuCisKK1JFUEVBVDogRE9OJ1QgRE8gVEhJUyBJRiBZT1UgRE9OJ1QgTElLRSBSSVNLWSBCVVNJTkVTUy4KKworSW4geW91ciBrZXJuZWwgbG9ncyB5b3Ugd2lsbCBmaW5kIHRoZSBsaXN0IG9mIGFsbCBBQ1BJIG1ldGhvZHMKK3RoZSBTTkMgZGV2aWNlIGhhcyBvbiB5b3VyIGxhcHRvcC4KKworKiBGb3IgbmV3IG1vZGVscyB5b3Ugd2lsbCBzZWUgYSBsb25nIGxpc3Qgb2YgbWVhbmluZ2xlc3MgbWV0aG9kIG5hbWVzLAorcmVhZGluZyB0aGUgRFNEVCB0YWJsZSBzb3VyY2Ugc2hvdWxkIHJldmVhbCB0aGF0OgorKDEpIHRoZSBTTkMgZGV2aWNlIHVzZXMgYW4gaW50ZXJuYWwgY2FwYWJpbGl0eSBsb29rdXAgdGFibGUKKygyKSBTTjAwIGlzIHVzZWQgdG8gZmluZCB2YWx1ZXMgaW4gdGhlIGxvb2t1cCB0YWJsZQorKDMpIFNOMDYgYW5kIFNOMDcgYXJlIHVzZWQgdG8gY2FsbCBpbnRvIHRoZSByZWFsIG1ldGhvZHMgYmFzZWQgb24KKyAgICBvZmZzZXRzIHlvdSBjYW4gb2J0YWluIGl0ZXJhdGluZyB0aGUgdGFibGUgdXNpbmcgU04wMAorKDQpIFNOMDIgdXNlZCB0byBlbmFibGUgZXZlbnRzLgorU29tZSB2YWx1ZXMgaW4gdGhlIGNhcGFiaWxpdHkgbG9va3VwIHRhYmxlIGFyZSBtb3JlIG9yIGxlc3Mga25vd24sIHNlZQordGhlIGNvZGUgZm9yIGFsbCBzb255X2NhbGxfc25jX2hhbmRsZSBjYWxscywgb3RoZXJzIGFyZSBtb3JlIG9ic2N1cmUuCisKKyogRm9yIG9sZCBtb2RlbHMgeW91IGNhbiBzZWUgdGhlIEdDRFAvR0NEUCBtZXRob2RzIHVzZWQgdG8gcHdlciBvbi9vZmYKK3RoZSBDRCBkcml2ZSwgYnV0IHRoZXJlIGFyZSBvdGhlcnMgYW5kIHRoZXkgYXJlIHVzdWFsbHkgZGlmZmVyZW50IGZyb20KK21vZGVsIHRvIG1vZGVsLgorCitJIEhBVkUgTk8gSURFQSBXSEFUIFRIT1NFIE1FVEhPRFMgRE8uCisKK1RoZSBzb255LWxhcHRvcCBkcml2ZXIgY3JlYXRlcywgZm9yIHNvbWUgb2YgdGhvc2UgbWV0aG9kcyAodGhlIG1vc3QKK2N1cnJlbnQgb25lcyBmb3VuZCBvbiBzZXZlcmFsIFZhaW8gbW9kZWxzKSwgYW4gZW50cnkgdW5kZXIKKy9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9zb255LWxhcHRvcCwganVzdCBsaWtlIHRoZSAnY2Rwb3dlcicgb25lLgorWW91IGNhbiBjcmVhdGUgb3RoZXIgZW50cmllcyBjb3JyZXNwb25kaW5nIHRvIHlvdXIgb3duIGxhcHRvcCBtZXRob2RzIGJ5CitmdXJ0aGVyIGVkaXRpbmcgdGhlIHNvdXJjZSAoc2VlIHRoZSAnc29ueV9uY192YWx1ZXMnIHRhYmxlLCBhbmQgYWRkIGEgbmV3CitlbnRyeSB0byB0aGlzIHRhYmxlIHdpdGggeW91ciBnZXQvc2V0IG1ldGhvZCBuYW1lcyB1c2luZyB0aGUKK1NOQ19IQU5ETEVfTkFNRVMgbWFjcm8pLgorCitZb3VyIG1pc3Npb24sIHNob3VsZCB5b3UgYWNjZXB0IGl0LCBpcyB0byB0cnkgZmluZGluZyBvdXQgd2hhdAordGhvc2UgZW50cmllcyBhcmUgZm9yLCBieSByZWFkaW5nL3dyaXRpbmcgcmFuZG9tIHZhbHVlcyBmcm9tL3RvIHRob3NlCitmaWxlcyBhbmQgZmluZCBvdXQgd2hhdCBpcyB0aGUgaW1wYWN0IG9uIHlvdXIgbGFwdG9wLgorCitTaG91bGQgeW91IGZpbmQgYW55dGhpbmcgaW50ZXJlc3RpbmcsIHBsZWFzZSByZXBvcnQgaXQgYmFjayB0byBtZSwKK0kgd2lsbCBub3QgZGlzYXZvdyBhbGwga25vd2xlZGdlIG9mIHlvdXIgYWN0aW9ucyA6KQorCitTZWUgYWxzbyBodHRwOi8vd3d3LmxpbnV4Lml0L35tYWxhdHRpYS93aWtpL2luZGV4LnBocC9Tb255X2RyaXZlcnMgZm9yIG90aGVyCit1c2VmdWwgaW5mby4KKworQnVncy9MaW1pdGF0aW9uczoKKy0tLS0tLS0tLS0tLS0tLS0tCisKKyogVGhpcyBkcml2ZXIgaXMgbm90IGJhc2VkIG9uIG9mZmljaWFsIGRvY3VtZW50YXRpb24gZnJvbSBTb255CisgIChiZWNhdXNlIHRoZXJlIGlzIG5vbmUpLCBzbyB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhpcyBkcml2ZXIKKyAgd2lsbCB3b3JrIGF0IGFsbCwgb3IgZG8gdGhlIHJpZ2h0IHRoaW5nLiBBbHRob3VnaCB0aGlzIGhhc24ndAorICBoYXBwZW5lZCB0byBtZSwgdGhpcyBkcml2ZXIgY291bGQgZG8gdmVyeSBiYWQgdGhpbmdzIHRvIHlvdXIKKyAgbGFwdG9wLCBpbmNsdWRpbmcgcGVybWFuZW50IGRhbWFnZS4KKworKiBUaGUgc29ueS1sYXB0b3AgYW5kIHNvbnlwaSBkcml2ZXJzIGRvIG5vdCBpbnRlcmFjdCBhdCBhbGwuIEluIHRoZQorICBmdXR1cmUsIHNvbnlwaSB3aWxsIGJlIHJlbW92ZWQgYW5kIHJlcGxhY2VkIGJ5IHNvbnktbGFwdG9wLgorCisqIHNwaWNjdHJsLCB3aGljaCBpcyB0aGUgdXNlcnNwYWNlIHRvb2wgdXNlZCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZQorICBzb255cGkgZHJpdmVyICh0aHJvdWdoIC9kZXYvc29ueXBpKSBpcyBkZXByZWNhdGVkIGFzIHdlbGwgc2luY2UgYWxsCisgIGl0cyBmZWF0dXJlcyBhcmUgbm93IGF2YWlsYWJsZSB1bmRlciB0aGUgc3lzZnMgdHJlZSB2aWEgc29ueS1sYXB0b3AuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2xhcHRvcHMvc29ueXBpLnR4dCBiL0RvY3VtZW50YXRpb24vbGFwdG9wcy9zb255cGkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNmJkYjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2xhcHRvcHMvc29ueXBpLnR4dApAQCAtMCwwICsxLDE1MiBAQAorU29ueSBQcm9ncmFtbWFibGUgSS9PIENvbnRyb2wgRGV2aWNlIERyaXZlciBSZWFkbWUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJQ29weXJpZ2h0IChDKSAyMDAxLTIwMDQgU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KKwlDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiBBbGPDtHZlIDx3d3cuYWxjb3ZlLmNvbT4KKwlDb3B5cmlnaHQgKEMpIDIwMDEgTWljaGFlbCBBc2hsZXkgPG0uYXNobGV5QHVuc3cuZWR1LmF1PgorCUNvcHlyaWdodCAoQykgMjAwMSBKdW5pY2hpIE1vcml0YSA8anVuMW1AbWFycy5kdGkubmUuanA+CisJQ29weXJpZ2h0IChDKSAyMDAwIFRha2F5YSBLaW5qbyA8dC1raW5qb0B0YzQuc28tbmV0Lm5lLmpwPgorCUNvcHlyaWdodCAoQykgMjAwMCBBbmRyZXcgVHJpZGdlbGwgPHRyaWRnZUBzYW1iYS5vcmc+CisKK1RoaXMgZHJpdmVyIGVuYWJsZXMgYWNjZXNzIHRvIHRoZSBTb255IFByb2dyYW1tYWJsZSBJL08gQ29udHJvbCBEZXZpY2Ugd2hpY2gKK2NhbiBiZSBmb3VuZCBpbiBtYW55IFNvbnkgVmFpbyBsYXB0b3BzLiBTb21lIG5ld2VyIFNvbnkgbGFwdG9wcyAoc2VlbXMgdG8gYmUKK2xpbWl0ZWQgdG8gbmV3IEZYIHNlcmllcyBsYXB0b3BzLCBhdCBsZWFzdCB0aGUgRlg1MDEgYW5kIHRoZSBGWDcwMikgbGFjayBhCitzb255cGkgZGV2aWNlIGFuZCBhcmUgbm90IHN1cHBvcnRlZCBhdCBhbGwgYnkgdGhpcyBkcml2ZXIuCisKK0l0IHdpbGwgZ2l2ZSBhY2Nlc3MgKHRocm91Z2ggYSB1c2VyIHNwYWNlIHV0aWxpdHkpIHRvIHNvbWUgZXZlbnRzIHRob3NlIGxhcHRvcHMKK2dlbmVyYXRlLCBsaWtlOgorCS0gam9nZGlhbCBldmVudHMgKHRoZSBzbWFsbCB3aGVlbCBvbiB0aGUgc2lkZSBvZiBWYWlvcykKKwktIGNhcHR1cmUgYnV0dG9uIGV2ZW50cyAob25seSBvbiBWYWlvIFBpY3R1cmVib29rIHNlcmllcykKKwktIEZuIGtleXMKKwktIGJsdWV0b290aCBidXR0b24gKG9ubHkgb24gQzFWUiBtb2RlbCkKKwktIHByb2dyYW1tYWJsZSBrZXlzLCBiYWNrLCBoZWxwLCB6b29tLCB0aHVtYnBocmFzZSBidXR0b25zLCBldGMuCisJICAod2hlbiBhdmFpbGFibGUpCisKK1Rob3NlIGV2ZW50cyAoc2VlIGxpbnV4L3NvbnlwaS5oKSBjYW4gYmUgcG9sbGVkIHVzaW5nIHRoZSBjaGFyYWN0ZXIgZGV2aWNlIG5vZGUKKy9kZXYvc29ueXBpIChtYWpvciAxMCwgbWlub3IgYXV0byBhbGxvY2F0ZWQgb3Igc3BlY2lmaWVkIGFzIGEgb3B0aW9uKS4KK0Egc2ltcGxlIGRhZW1vbiB3aGljaCB0cmFuc2xhdGVzIHRoZSBqb2dkaWFsIG1vdmVtZW50cyBpbnRvIG1vdXNlIHdoZWVsIGV2ZW50cworY2FuIGJlIGRvd25sb2FkZWQgYXQ6IDxodHRwOi8vcG9waWVzLm5ldC9zb255cGkvPgorCitBbm90aGVyIG9wdGlvbiB0byBpbnRlcmNlcHQgdGhlIGV2ZW50cyBpcyB0byBnZXQgdGhlbSBkaXJlY3RseSB0aHJvdWdoIHRoZQoraW5wdXQgbGF5ZXIuCisKK1RoaXMgZHJpdmVyIHN1cHBvcnRzIGFsc28gc29tZSBpb2N0bCBjb21tYW5kcyBmb3Igc2V0dGluZyB0aGUgTENEIHNjcmVlbgorYnJpZ2h0bmVzcyBhbmQgcXVlcnlpbmcgdGhlIGJhdHRlcmllcyBjaGFyZ2UgaW5mb3JtYXRpb24gKHNvbWUgbW9yZQorY29tbWFuZHMgbWF5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUpLgorCitUaGlzIGRyaXZlciBjYW4gYWxzbyBiZSB1c2VkIHRvIHNldCB0aGUgY2FtZXJhIGNvbnRyb2xzIG9uIFBpY3R1cmVib29rIHNlcmllcworKGJyaWdodG5lc3MsIGNvbnRyYXN0IGV0YyksIGFuZCBpcyB1c2VkIGJ5IHRoZSB2aWRlbzRsaW51eCBkcml2ZXIgZm9yIHRoZQorTW90aW9uIEV5ZSBjYW1lcmEuCisKK1BsZWFzZSBub3RlIHRoYXQgdGhpcyBkcml2ZXIgd2FzIGNyZWF0ZWQgYnkgcmV2ZXJzZSBlbmdpbmVlcmluZyB0aGUgV2luZG93cworZHJpdmVyIGFuZCB0aGUgQUNQSSBCSU9TLCBiZWNhdXNlIFNvbnkgZG9lc24ndCBhZ3JlZSB0byByZWxlYXNlIGFueSBwcm9ncmFtbWluZworc3BlY3MgZm9yIGl0cyBsYXB0b3BzLiBJZiBzb21lb25lIGNvbnZpbmNlcyB0aGVtIHRvIGRvIHNvLCBkcm9wIG1lIGEgbm90ZS4KKworRHJpdmVyIG9wdGlvbnM6CistLS0tLS0tLS0tLS0tLS0KKworU2V2ZXJhbCBvcHRpb25zIGNhbiBiZSBwYXNzZWQgdG8gdGhlIHNvbnlwaSBkcml2ZXIgdXNpbmcgdGhlIHN0YW5kYXJkCittb2R1bGUgYXJndW1lbnQgc3ludGF4ICg8cGFyYW0+PTx2YWx1ZT4gd2hlbiBwYXNzaW5nIHRoZSBvcHRpb24gdG8gdGhlCittb2R1bGUgb3Igc29ueXBpLjxwYXJhbT49PHZhbHVlPiBvbiB0aGUga2VybmVsIGJvb3QgbGluZSB3aGVuIHNvbnlwaSBpcworc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUga2VybmVsKS4gVGhvc2Ugb3B0aW9ucyBhcmU6CisKKwltaW5vcjogCQltaW5vciBudW1iZXIgb2YgdGhlIG1pc2MgZGV2aWNlIC9kZXYvc29ueXBpLAorCQkJZGVmYXVsdCBpcyAtMSAoYXV0b21hdGljIGFsbG9jYXRpb24sIHNlZSAvcHJvYy9taXNjCisJCQlvciBrZXJuZWwgbG9ncykKKworCWNhbWVyYToJCWlmIHlvdSBoYXZlIGEgUGljdHVyZUJvb2sgc2VyaWVzIFZhaW8gKHdpdGggdGhlCisJCQlpbnRlZ3JhdGVkIE1vdGlvbkV5ZSBjYW1lcmEpLCBzZXQgdGhpcyBwYXJhbWV0ZXIgdG8gMQorCQkJaW4gb3JkZXIgdG8gbGV0IHRoZSBkcml2ZXIgYWNjZXNzIHRvIHRoZSBjYW1lcmEKKworCWZua2V5aW5pdDoJb24gc29tZSBWYWlvcyAoQzFWRSwgQzFWUiBldGMpLCB0aGUgRm4ga2V5IGV2ZW50cyBkb24ndAorCQkJZ2V0IGVuYWJsZWQgdW5sZXNzIHlvdSBzZXQgdGhpcyBwYXJhbWV0ZXIgdG8gMS4KKwkJCURvIG5vdCB1c2UgdGhpcyBvcHRpb24gdW5sZXNzIGl0J3MgYWN0dWFsbHkgbmVjZXNzYXJ5LAorCQkJc29tZSBWYWlvIG1vZGVscyBkb24ndCBkZWFsIHdlbGwgd2l0aCB0aGlzIG9wdGlvbi4KKwkJCVRoaXMgb3B0aW9uIGlzIGF2YWlsYWJsZSBvbmx5IGlmIHRoZSBrZXJuZWwgaXMKKwkJCWNvbXBpbGVkIHdpdGhvdXQgQUNQSSBzdXBwb3J0IChzaW5jZSBpdCBjb25mbGljdHMKKwkJCXdpdGggaXQgYW5kIGl0IHNob3VsZG4ndCBiZSByZXF1aXJlZCBhbnl3YXkgaWYKKwkJCUFDUEkgaXMgYWxyZWFkeSBlbmFibGVkKS4KKworCXZlcmJvc2U6CXNldCB0byAxIHRvIHByaW50IHVua25vd24gZXZlbnRzIHJlY2VpdmVkIGZyb20gdGhlCisJCQlzb255cGkgZGV2aWNlLgorCQkJc2V0IHRvIDIgdG8gcHJpbnQgYWxsIGV2ZW50cyByZWNlaXZlZCBmcm9tIHRoZQorCQkJc29ueXBpIGRldmljZS4KKworCWNvbXBhdDoJCXVzZXMgc29tZSBjb21wYXRpYmlsaXR5IGNvZGUgZm9yIGVuYWJsaW5nIHRoZSBzb255cGkKKwkJCWV2ZW50cy4gSWYgdGhlIGRyaXZlciB3b3JrZWQgZm9yIHlvdSBpbiB0aGUgcGFzdAorCQkJKHByaW9yIHRvIHZlcnNpb24gMS41KSBhbmQgZG9lcyBub3Qgd29yayBhbnltb3JlLAorCQkJYWRkIHRoaXMgb3B0aW9uIGFuZCByZXBvcnQgdG8gdGhlIGF1dGhvci4KKworCW1hc2s6CQlldmVudCBtYXNrIHRlbGxpbmcgdGhlIGRyaXZlciB3aGF0IGV2ZW50cyB3aWxsIGJlCisJCQlyZXBvcnRlZCB0byB0aGUgdXNlci4gVGhpcyBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQgZm9yCisJCQlzb21lIFZhaW8gbW9kZWxzIHdoZXJlIHRoZSBoYXJkd2FyZSByZXVzZXMgdmFsdWVzCisJCQl1c2VkIGluIG90aGVyIFZhaW8gbW9kZWxzIChsaWtlIHRoZSBGWCBzZXJpZXMgd2hvIGRvZXMKKwkJCW5vdCBoYXZlIGEgam9nZGlhbCBidXQgcmV1c2VzIHRoZSBqb2dkaWFsIGV2ZW50cyBmb3IKKwkJCXByb2dyYW1tYWJsZSBrZXlzIGV2ZW50cykuIFRoZSBkZWZhdWx0IGV2ZW50IG1hc2sgaXMKKwkJCXNldCB0byAweGZmZmZmZmZmLCBtZWFuaW5nIHRoYXQgYWxsIHBvc3NpYmxlIGV2ZW50cworCQkJd2lsbCBiZSB0cmllZC4gWW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBiaXRzIHRvCisJCQljb25zdHJ1Y3QgeW91ciBvd24gZXZlbnQgbWFzayAoZnJvbQorCQkJZHJpdmVycy9jaGFyL3NvbnlwaS5oKToKKwkJCQlTT05ZUElfSk9HR0VSX01BU0sgCQkweDAwMDEKKwkJCQlTT05ZUElfQ0FQVFVSRV9NQVNLIAkJMHgwMDAyCisJCQkJU09OWVBJX0ZOS0VZX01BU0sgCQkweDAwMDQKKwkJCQlTT05ZUElfQkxVRVRPT1RIX01BU0sgCQkweDAwMDgKKwkJCQlTT05ZUElfUEtFWV9NQVNLIAkJMHgwMDEwCisJCQkJU09OWVBJX0JBQ0tfTUFTSyAJCTB4MDAyMAorCQkJCVNPTllQSV9IRUxQX01BU0sgCQkweDAwNDAKKwkJCQlTT05ZUElfTElEX01BU0sgCQkweDAwODAKKwkJCQlTT05ZUElfWk9PTV9NQVNLIAkJMHgwMTAwCisJCQkJU09OWVBJX1RIVU1CUEhSQVNFX01BU0sgCTB4MDIwMAorCQkJCVNPTllQSV9NRVlFX01BU0sJCTB4MDQwMAorCQkJCVNPTllQSV9NRU1PUllTVElDS19NQVNLCQkweDA4MDAKKwkJCQlTT05ZUElfQkFUVEVSWV9NQVNLCQkweDEwMDAKKwkJCQlTT05ZUElfV0lSRUxFU1NfTUFTSwkJMHgyMDAwCisKKwl1c2VpbnB1dDoJaWYgc2V0ICh3aGljaCBpcyB0aGUgZGVmYXVsdCkgdHdvIGlucHV0IGRldmljZXMgYXJlCisJCQljcmVhdGVkLCBvbmUgd2hpY2ggaW50ZXJwcmV0cyB0aGUgam9nZGlhbCBldmVudHMgYXMKKwkJCW1vdXNlIGV2ZW50cywgdGhlIG90aGVyIG9uZSB3aGljaCBhY3RzIGxpa2UgYQorCQkJa2V5Ym9hcmQgcmVwb3J0aW5nIHRoZSBwcmVzc2luZyBvZiB0aGUgc3BlY2lhbCBrZXlzLgorCitNb2R1bGUgdXNlOgorLS0tLS0tLS0tLS0KKworSW4gb3JkZXIgdG8gYXV0b21hdGljYWxseSBsb2FkIHRoZSBzb255cGkgbW9kdWxlIG9uIHVzZSwgeW91IGNhbiBwdXQgdGhvc2UKK2xpbmVzIGEgY29uZmlndXJhdGlvbiBmaWxlIGluIC9ldGMvbW9kcHJvYmUuZC86CisKKwlhbGlhcyBjaGFyLW1ham9yLTEwLTI1MCBzb255cGkKKwlvcHRpb25zIHNvbnlwaSBtaW5vcj0yNTAKKworVGhpcyBzdXBwb3NlcyB0aGUgdXNlIG9mIG1pbm9yIDI1MCBmb3IgdGhlIHNvbnlwaSBkZXZpY2U6CisKKwkjIG1rbm9kIC9kZXYvc29ueXBpIGMgMTAgMjUwCisKK0J1Z3M6CistLS0tLQorCisJLSBzZXZlcmFsIHVzZXJzIHJlcG9ydGVkIHRoYXQgdGhpcyBkcml2ZXIgZGlzYWJsZXMgdGhlIEJJT1MtbWFuYWdlZAorCSAgRm4ta2V5cyB3aGljaCBwdXQgdGhlIGxhcHRvcCBpbiBzbGVlcGluZyBzdGF0ZSwgb3Igc3dpdGNoIHRoZQorCSAgZXh0ZXJuYWwgbW9uaXRvciBvbi9vZmYuIFRoZXJlIGlzIG5vIHdvcmthcm91bmQgeWV0LCBzaW5jZSB0aGlzCisJICBkcml2ZXIgZGlzYWJsZXMgYWxsIEFQTSBtYW5hZ2VtZW50IGZvciB0aG9zZSBrZXlzLCBieSBlbmFibGluZyB0aGUKKwkgIEFDUEkgbWFuYWdlbWVudCAoYW5kIHRoZSBBQ1BJIGNvcmUgc3R1ZmYgaXMgbm90IGNvbXBsZXRlIHlldCkuIElmCisJICB5b3UgaGF2ZSBvbmUgb2YgdGhvc2UgbGFwdG9wcyB3aXRoIHdvcmtpbmcgRm4ga2V5cyBhbmQgd2FudCB0bworCSAgY29udGludWUgdG8gdXNlIHRoZW0sIGRvbid0IHVzZSB0aGlzIGRyaXZlci4KKworCS0gc29tZSB1c2VycyByZXBvcnRlZCB0aGF0IHRoZSBsYXB0b3Agc3BlZWQgaXMgbG93ZXIgKGRocnlzdG9uZQorCSAgdGVzdGVkKSB3aGVuIHVzaW5nIHRoZSBkcml2ZXIgd2l0aCB0aGUgZm5rZXlpbml0IHBhcmFtZXRlci4gSSBjYW5ub3QKKwkgIHJlcHJvZHVjZSBpdCBvbiBteSBsYXB0b3AgYW5kIG5vdCBhbGwgdXNlcnMgaGF2ZSB0aGlzIHByb2JsZW0uCisJICBUaGlzIGhhcHBlbnMgYmVjYXVzZSB0aGUgZm5rZXlpbml0IHBhcmFtZXRlciBlbmFibGVzIHRoZSBBQ1BJCisJICBtb2RlIChidXQgd2l0aG91dCBhZGRpdGlvbmFsIEFDUEkgY29udHJvbCwgbGlrZSBwcm9jZXNzb3IKKwkgIHNwZWVkIGhhbmRsaW5nIGV0YykuIFVzZSBBQ1BJIGluc3RlYWQgb2YgQVBNIGlmIGl0IHdvcmtzIG9uIHlvdXIKKwkgIGxhcHRvcC4KKworCS0gc29ueXBpIGxhY2tzIHRoZSBhYmlsaXR5IHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gY2VydGFpbiBrZXkKKwkgIGV2ZW50cyBvbiBzb21lIG1vZGVscy4KKworCS0gc29tZSBtb2RlbHMgd2l0aCB0aGUgbnZpZGlhIGNhcmQgKGdlZm9yY2UgZ28gNjIwMCB0YykgdXNlcyBhCisJICBkaWZmZXJlbnQgd2F5IHRvIGFkanVzdCB0aGUgYmFja2xpZ2h0aW5nIG9mIHRoZSBzY3JlZW4uIFRoZXJlCisJICBpcyBhIHVzZXJzcGFjZSB1dGlsaXR5IHRvIGFkanVzdCB0aGUgYnJpZ2h0bmVzcyBvbiB0aG9zZSBtb2RlbHMsCisJICB3aGljaCBjYW4gYmUgZG93bmxvYWRlZCBmcm9tCisJICBodHRwOi8vd3d3LmFjYy51bXUuc2UvfmVyaWt3L3Byb2dyYW0vc21hcnRkaW1tZXItMC4xLnRhci5iejIKKworCS0gc2luY2UgYWxsIGRldmVsb3BtZW50IHdhcyBkb25lIGJ5IHJldmVyc2UgZW5naW5lZXJpbmcsIHRoZXJlIGlzCisJICBfYWJzb2x1dGVseSBubyBndWFyYW50ZWVfIHRoYXQgdGhpcyBkcml2ZXIgd2lsbCBub3QgY3Jhc2ggeW91cgorCSAgbGFwdG9wLiBQZXJtYW5lbnRseS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbGFwdG9wcy90aGlua3BhZC1hY3BpLnR4dCBiL0RvY3VtZW50YXRpb24vbGFwdG9wcy90aGlua3BhZC1hY3BpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmExNTBkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9sYXB0b3BzL3RoaW5rcGFkLWFjcGkudHh0CkBAIC0wLDAgKzEsMTQ3OSBAQAorCQkgICAgIFRoaW5rUGFkIEFDUEkgRXh0cmFzIERyaXZlcgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAwLjI1CisgICAgICAgICAgICAgICAgICAgICAgICBPY3RvYmVyIDE2dGgsICAyMDEzCisKKyAgICAgICAgICAgICAgIEJvcmlzbGF2IERlaWFub3YgPGJvcmlzbGF2QHVzZXJzLnNmLm5ldD4KKyAgICAgICAgICAgICBIZW5yaXF1ZSBkZSBNb3JhZXMgSG9sc2NodWggPGhtaEBobWguZW5nLmJyPgorICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly9pYm0tYWNwaS5zZi5uZXQvCisKKworVGhpcyBpcyBhIExpbnV4IGRyaXZlciBmb3IgdGhlIElCTSBhbmQgTGVub3ZvIFRoaW5rUGFkIGxhcHRvcHMuIEl0CitzdXBwb3J0cyB2YXJpb3VzIGZlYXR1cmVzIG9mIHRoZXNlIGxhcHRvcHMgd2hpY2ggYXJlIGFjY2Vzc2libGUKK3Rocm91Z2ggdGhlIEFDUEkgYW5kIEFDUEkgRUMgZnJhbWV3b3JrLCBidXQgbm90IG90aGVyd2lzZSBmdWxseQorc3VwcG9ydGVkIGJ5IHRoZSBnZW5lcmljIExpbnV4IEFDUEkgZHJpdmVycy4KKworVGhpcyBkcml2ZXIgdXNlZCB0byBiZSBuYW1lZCBpYm0tYWNwaSB1bnRpbCBrZXJuZWwgMi42LjIxIGFuZCByZWxlYXNlCiswLjEzLTIwMDcwMzE0LiAgSXQgdXNlZCB0byBiZSBpbiB0aGUgZHJpdmVycy9hY3BpIHRyZWUsIGJ1dCBpdCB3YXMKK21vdmVkIHRvIHRoZSBkcml2ZXJzL21pc2MgdHJlZSBhbmQgcmVuYW1lZCB0byB0aGlua3BhZC1hY3BpIGZvciBrZXJuZWwKKzIuNi4yMiwgYW5kIHJlbGVhc2UgMC4xNC4gIEl0IHdhcyBtb3ZlZCB0byBkcml2ZXJzL3BsYXRmb3JtL3g4NiBmb3IKK2tlcm5lbCAyLjYuMjkgYW5kIHJlbGVhc2UgMC4yMi4KKworVGhlIGRyaXZlciBpcyBuYW1lZCAidGhpbmtwYWQtYWNwaSIuICBJbiBzb21lIHBsYWNlcywgbGlrZSBtb2R1bGUKK25hbWVzIGFuZCBsb2cgbWVzc2FnZXMsICJ0aGlua3BhZF9hY3BpIiBpcyB1c2VkIGJlY2F1c2Ugb2YgdXNlcnNwYWNlCitpc3N1ZXMuCisKKyJ0cGFjcGkiIGlzIHVzZWQgYXMgYSBzaG9ydGhhbmQgd2hlcmUgInRoaW5rcGFkLWFjcGkiIHdvdWxkIGJlIHRvbworbG9uZyBkdWUgdG8gbGVuZ3RoIGxpbWl0YXRpb25zIG9uIHNvbWUgTGludXgga2VybmVsIHZlcnNpb25zLgorCitTdGF0dXMKKy0tLS0tLQorCitUaGUgZmVhdHVyZXMgY3VycmVudGx5IHN1cHBvcnRlZCBhcmUgdGhlIGZvbGxvd2luZyAoc2VlIGJlbG93IGZvcgorZGV0YWlsZWQgZGVzY3JpcHRpb24pOgorCisJLSBGbiBrZXkgY29tYmluYXRpb25zCisJLSBCbHVldG9vdGggZW5hYmxlIGFuZCBkaXNhYmxlCisJLSB2aWRlbyBvdXRwdXQgc3dpdGNoaW5nLCBleHBhbnNpb24gY29udHJvbAorCS0gVGhpbmtMaWdodCBvbiBhbmQgb2ZmCisJLSBDTU9TL1VDTVMgY29udHJvbAorCS0gTEVEIGNvbnRyb2wKKwktIEFDUEkgc291bmRzCisJLSB0ZW1wZXJhdHVyZSBzZW5zb3JzCisJLSBFeHBlcmltZW50YWw6IGVtYmVkZGVkIGNvbnRyb2xsZXIgcmVnaXN0ZXIgZHVtcAorCS0gTENEIGJyaWdodG5lc3MgY29udHJvbAorCS0gVm9sdW1lIGNvbnRyb2wKKwktIEZhbiBjb250cm9sIGFuZCBtb25pdG9yaW5nOiBmYW4gc3BlZWQsIGZhbiBlbmFibGUvZGlzYWJsZQorCS0gV0FOIGVuYWJsZSBhbmQgZGlzYWJsZQorCS0gVVdCIGVuYWJsZSBhbmQgZGlzYWJsZQorCitBIGNvbXBhdGliaWxpdHkgdGFibGUgYnkgbW9kZWwgYW5kIGZlYXR1cmUgaXMgbWFpbnRhaW5lZCBvbiB0aGUgd2ViCitzaXRlLCBodHRwOi8vaWJtLWFjcGkuc2YubmV0Ly4gSSBhcHByZWNpYXRlIGFueSBzdWNjZXNzIG9yIGZhaWx1cmUKK3JlcG9ydHMsIGVzcGVjaWFsbHkgaWYgdGhleSBhZGQgdG8gb3IgY29ycmVjdCB0aGUgY29tcGF0aWJpbGl0eSB0YWJsZS4KK1BsZWFzZSBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gaW4geW91ciByZXBvcnQ6CisKKwktIFRoaW5rUGFkIG1vZGVsIG5hbWUKKwktIGEgY29weSBvZiB5b3VyIEFDUEkgdGFibGVzLCB1c2luZyB0aGUgImFjcGlkdW1wIiB1dGlsaXR5CisJLSBhIGNvcHkgb2YgdGhlIG91dHB1dCBvZiBkbWlkZWNvZGUsIHdpdGggc2VyaWFsIG51bWJlcnMKKwkgIGFuZCBVVUlEcyBtYXNrZWQgb2ZmCisJLSB3aGljaCBkcml2ZXIgZmVhdHVyZXMgd29yayBhbmQgd2hpY2ggZG9uJ3QKKwktIHRoZSBvYnNlcnZlZCBiZWhhdmlvciBvZiBub24td29ya2luZyBmZWF0dXJlcworCitBbnkgb3RoZXIgY29tbWVudHMgb3IgcGF0Y2hlcyBhcmUgYWxzbyBtb3JlIHRoYW4gd2VsY29tZS4KKworCitJbnN0YWxsYXRpb24KKy0tLS0tLS0tLS0tLQorCitJZiB5b3UgYXJlIGNvbXBpbGluZyB0aGlzIGRyaXZlciBhcyBpbmNsdWRlZCBpbiB0aGUgTGludXgga2VybmVsCitzb3VyY2VzLCBsb29rIGZvciB0aGUgQ09ORklHX1RISU5LUEFEX0FDUEkgS2NvbmZpZyBvcHRpb24uCitJdCBpcyBsb2NhdGVkIG9uIHRoZSBtZW51IHBhdGg6ICJEZXZpY2UgRHJpdmVycyIgLT4gIlg4NiBQbGF0Zm9ybQorU3BlY2lmaWMgRGV2aWNlIERyaXZlcnMiIC0+ICJUaGlua1BhZCBBQ1BJIExhcHRvcCBFeHRyYXMiLgorCisKK0ZlYXR1cmVzCistLS0tLS0tLQorCitUaGUgZHJpdmVyIGV4cG9ydHMgdHdvIGRpZmZlcmVudCBpbnRlcmZhY2VzIHRvIHVzZXJzcGFjZSwgd2hpY2ggY2FuIGJlCit1c2VkIHRvIGFjY2VzcyB0aGUgZmVhdHVyZXMgaXQgcHJvdmlkZXMuICBPbmUgaXMgYSBsZWdhY3kgcHJvY2ZzLWJhc2VkCitpbnRlcmZhY2UsIHdoaWNoIHdpbGwgYmUgcmVtb3ZlZCBhdCBzb21lIHRpbWUgaW4gdGhlIGZ1dHVyZS4gIFRoZSBvdGhlcgoraXMgYSBuZXcgc3lzZnMtYmFzZWQgaW50ZXJmYWNlIHdoaWNoIGlzIG5vdCBjb21wbGV0ZSB5ZXQuCisKK1RoZSBwcm9jZnMgaW50ZXJmYWNlIGNyZWF0ZXMgdGhlIC9wcm9jL2FjcGkvaWJtIGRpcmVjdG9yeS4gIFRoZXJlIGlzIGEKK2ZpbGUgdW5kZXIgdGhhdCBkaXJlY3RvcnkgZm9yIGVhY2ggZmVhdHVyZSBpdCBzdXBwb3J0cy4gIFRoZSBwcm9jZnMKK2ludGVyZmFjZSBpcyBtb3N0bHkgZnJvemVuLCBhbmQgd2lsbCBjaGFuZ2UgdmVyeSBsaXR0bGUgaWYgYXQgYWxsOiBpdAord2lsbCBub3QgYmUgZXh0ZW5kZWQgdG8gYWRkIGFueSBuZXcgZnVuY3Rpb25hbGl0eSBpbiB0aGUgZHJpdmVyLCBpbnN0ZWFkCithbGwgbmV3IGZ1bmN0aW9uYWxpdHkgd2lsbCBiZSBpbXBsZW1lbnRlZCBvbiB0aGUgc3lzZnMgaW50ZXJmYWNlLgorCitUaGUgc3lzZnMgaW50ZXJmYWNlIHRyaWVzIHRvIGJsZW5kIGluIHRoZSBnZW5lcmljIExpbnV4IHN5c2ZzIHN1YnN5c3RlbXMKK2FuZCBjbGFzc2VzIGFzIG11Y2ggYXMgcG9zc2libGUuICBTaW5jZSBzb21lIG9mIHRoZXNlIHN1YnN5c3RlbXMgYXJlIG5vdAoreWV0IHJlYWR5IG9yIHN0YWJpbGl6ZWQsIGl0IGlzIGV4cGVjdGVkIHRoYXQgdGhpcyBpbnRlcmZhY2Ugd2lsbCBjaGFuZ2UsCithbmQgYW55IGFuZCBhbGwgdXNlcnNwYWNlIHByb2dyYW1zIG11c3QgZGVhbCB3aXRoIGl0LgorCisKK05vdGVzIGFib3V0IHRoZSBzeXNmcyBpbnRlcmZhY2U6CisKK1VubGlrZSB3aGF0IHdhcyBkb25lIHdpdGggdGhlIHByb2NmcyBpbnRlcmZhY2UsIGNvcnJlY3RuZXNzIHdoZW4gdGFsa2luZwordG8gdGhlIHN5c2ZzIGludGVyZmFjZXMgd2lsbCBiZSBlbmZvcmNlZCwgYXMgd2lsbCBjb3JyZWN0bmVzcyBpbiB0aGUKK3RoaW5rcGFkLWFjcGkncyBpbXBsZW1lbnRhdGlvbiBvZiBzeXNmcyBpbnRlcmZhY2VzLgorCitBbHNvLCBhbnkgYnVncyBpbiB0aGUgdGhpbmtwYWQtYWNwaSBzeXNmcyBkcml2ZXIgY29kZSBvciBpbiB0aGUKK3RoaW5rcGFkLWFjcGkncyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3lzZnMgaW50ZXJmYWNlcyB3aWxsIGJlIGZpeGVkIGZvcgorbWF4aW11bSBjb3JyZWN0bmVzcywgZXZlbiBpZiB0aGF0IG1lYW5zIGNoYW5naW5nIGFuIGludGVyZmFjZSBpbgorbm9uLWNvbXBhdGlibGUgd2F5cy4gIEFzIHRoZXNlIGludGVyZmFjZXMgbWF0dXJlIGJvdGggaW4gdGhlIGtlcm5lbCBhbmQKK2luIHRoaW5rcGFkLWFjcGksIHN1Y2ggY2hhbmdlcyBzaG91bGQgYmVjb21lIHF1aXRlIHJhcmUuCisKK0FwcGxpY2F0aW9ucyBpbnRlcmZhY2luZyB0byB0aGUgdGhpbmtwYWQtYWNwaSBzeXNmcyBpbnRlcmZhY2VzIG11c3QKK2ZvbGxvdyBhbGwgc3lzZnMgZ3VpZGVsaW5lcyBhbmQgY29ycmVjdGx5IHByb2Nlc3MgYWxsIGVycm9ycyAodGhlIHN5c2ZzCitpbnRlcmZhY2UgbWFrZXMgZXh0ZW5zaXZlIHVzZSBvZiBlcnJvcnMpLiAgRmlsZSBkZXNjcmlwdG9ycyBhbmQgb3BlbiAvCitjbG9zZSBvcGVyYXRpb25zIHRvIHRoZSBzeXNmcyBpbm9kZXMgbXVzdCBhbHNvIGJlIHByb3Blcmx5IGltcGxlbWVudGVkLgorCitUaGUgdmVyc2lvbiBvZiB0aGlua3BhZC1hY3BpJ3Mgc3lzZnMgaW50ZXJmYWNlIGlzIGV4cG9ydGVkIGJ5IHRoZSBkcml2ZXIKK2FzIGEgZHJpdmVyIGF0dHJpYnV0ZSAoc2VlIGJlbG93KS4KKworU3lzZnMgZHJpdmVyIGF0dHJpYnV0ZXMgYXJlIG9uIHRoZSBkcml2ZXIncyBzeXNmcyBhdHRyaWJ1dGUgc3BhY2UsCitmb3IgMi42LjIzKyB0aGlzIGlzIC9zeXMvYnVzL3BsYXRmb3JtL2RyaXZlcnMvdGhpbmtwYWRfYWNwaS8gYW5kCisvc3lzL2J1cy9wbGF0Zm9ybS9kcml2ZXJzL3RoaW5rcGFkX2h3bW9uLworCitTeXNmcyBkZXZpY2UgYXR0cmlidXRlcyBhcmUgb24gdGhlIHRoaW5rcGFkX2FjcGkgZGV2aWNlIHN5c2ZzIGF0dHJpYnV0ZQorc3BhY2UsIGZvciAyLjYuMjMrIHRoaXMgaXMgL3N5cy9kZXZpY2VzL3BsYXRmb3JtL3RoaW5rcGFkX2FjcGkvLgorCitTeXNmcyBkZXZpY2UgYXR0cmlidXRlcyBmb3IgdGhlIHNlbnNvcnMgYW5kIGZhbiBhcmUgb24gdGhlCit0aGlua3BhZF9od21vbiBkZXZpY2UncyBzeXNmcyBhdHRyaWJ1dGUgc3BhY2UsIGJ1dCB5b3Ugc2hvdWxkIGxvY2F0ZSBpdAorbG9va2luZyBmb3IgYSBod21vbiBkZXZpY2Ugd2l0aCB0aGUgbmFtZSBhdHRyaWJ1dGUgb2YgInRoaW5rcGFkIiwgb3IKK2JldHRlciB5ZXQsIHRocm91Z2ggbGlic2Vuc29ycy4KKworCitEcml2ZXIgdmVyc2lvbgorLS0tLS0tLS0tLS0tLS0KKworcHJvY2ZzOiAvcHJvYy9hY3BpL2libS9kcml2ZXIKK3N5c2ZzIGRyaXZlciBhdHRyaWJ1dGU6IHZlcnNpb24KKworVGhlIGRyaXZlciBuYW1lIGFuZCB2ZXJzaW9uLiBObyBjb21tYW5kcyBjYW4gYmUgd3JpdHRlbiB0byB0aGlzIGZpbGUuCisKKworU3lzZnMgaW50ZXJmYWNlIHZlcnNpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N5c2ZzIGRyaXZlciBhdHRyaWJ1dGU6IGludGVyZmFjZV92ZXJzaW9uCisKK1ZlcnNpb24gb2YgdGhlIHRoaW5rcGFkLWFjcGkgc3lzZnMgaW50ZXJmYWNlLCBhcyBhbiB1bnNpZ25lZCBsb25nCisob3V0cHV0IGluIGhleCBmb3JtYXQ6IDB4QUFBQUJCQ0MpLCB3aGVyZToKKwlBQUFBIC0gbWFqb3IgcmV2aXNpb24KKwlCQiAtIG1pbm9yIHJldmlzaW9uCisJQ0MgLSBidWdmaXggcmV2aXNpb24KKworVGhlIHN5c2ZzIGludGVyZmFjZSB2ZXJzaW9uIGNoYW5nZWxvZyBmb3IgdGhlIGRyaXZlciBjYW4gYmUgZm91bmQgYXQgdGhlCitlbmQgb2YgdGhpcyBkb2N1bWVudC4gIENoYW5nZXMgdG8gdGhlIHN5c2ZzIGludGVyZmFjZSBkb25lIGJ5IHRoZSBrZXJuZWwKK3N1YnN5c3RlbXMgYXJlIG5vdCBkb2N1bWVudGVkIGhlcmUsIG5vciBhcmUgdGhleSB0cmFja2VkIGJ5IHRoaXMKK2F0dHJpYnV0ZS4KKworQ2hhbmdlcyB0byB0aGUgdGhpbmtwYWQtYWNwaSBzeXNmcyBpbnRlcmZhY2UgYXJlIG9ubHkgY29uc2lkZXJlZAorbm9uLWV4cGVyaW1lbnRhbCB3aGVuIHRoZXkgYXJlIHN1Ym1pdHRlZCB0byBMaW51eCBtYWlubGluZSwgYXQgd2hpY2gKK3BvaW50IHRoZSBjaGFuZ2VzIGluIHRoaXMgaW50ZXJmYWNlIGFyZSBkb2N1bWVudGVkIGFuZCBpbnRlcmZhY2VfdmVyc2lvbgorbWF5IGJlIHVwZGF0ZWQuICBJZiB5b3UgYXJlIHVzaW5nIGFueSB0aGlua3BhZC1hY3BpIGZlYXR1cmVzIG5vdCB5ZXQKK3NlbnQgdG8gbWFpbmxpbmUgZm9yIG1lcmdpbmcsIHlvdSBkbyBzbyBvbiB5b3VyIG93biByaXNrOiB0aGVzZSBmZWF0dXJlcworbWF5IGRpc2FwcGVhciwgb3IgYmUgaW1wbGVtZW50ZWQgaW4gYSBkaWZmZXJlbnQgYW5kIGluY29tcGF0aWJsZSB3YXkgYnkKK3RoZSB0aW1lIHRoZXkgYXJlIG1lcmdlZCBpbiBMaW51eCBtYWlubGluZS4KKworQ2hhbmdlcyB0aGF0IGFyZSBiYWNrd2FyZHMtY29tcGF0aWJsZSBieSBuYXR1cmUgKGUuZy4gdGhlIGFkZGl0aW9uIG9mCithdHRyaWJ1dGVzIHRoYXQgZG8gbm90IGNoYW5nZSB0aGUgd2F5IHRoZSBvdGhlciBhdHRyaWJ1dGVzIHdvcmspIGRvIG5vdAorYWx3YXlzIHdhcnJhbnQgYW4gdXBkYXRlIG9mIGludGVyZmFjZV92ZXJzaW9uLiAgVGhlcmVmb3JlLCBvbmUgbXVzdAorZXhwZWN0IHRoYXQgYW4gYXR0cmlidXRlIG1pZ2h0IG5vdCBiZSB0aGVyZSwgYW5kIGRlYWwgd2l0aCBpdCBwcm9wZXJseQorKGFuIGF0dHJpYnV0ZSBub3QgYmVpbmcgdGhlcmUgKmlzKiBhIHZhbGlkIHdheSB0byBtYWtlIGl0IGNsZWFyIHRoYXQgYQorZmVhdHVyZSBpcyBub3QgYXZhaWxhYmxlIGluIHN5c2ZzKS4KKworCitIb3Qga2V5cworLS0tLS0tLS0KKworcHJvY2ZzOiAvcHJvYy9hY3BpL2libS9ob3RrZXkKK3N5c2ZzIGRldmljZSBhdHRyaWJ1dGU6IGhvdGtleV8qCisKK0luIGEgVGhpbmtQYWQsIHRoZSBBQ1BJIEhLRVkgaGFuZGxlciBpcyByZXNwb25zaWJsZSBmb3IgY29tbXVuaWNhdGluZworc29tZSBpbXBvcnRhbnQgZXZlbnRzIGFuZCBhbHNvIGtleWJvYXJkIGhvdCBrZXkgcHJlc3NlcyB0byB0aGUgb3BlcmF0aW5nCitzeXN0ZW0uICBFbmFibGluZyB0aGUgaG90a2V5IGZ1bmN0aW9uYWxpdHkgb2YgdGhpbmtwYWQtYWNwaSBzaWduYWxzIHRoZQorZmlybXdhcmUgdGhhdCBzdWNoIGEgZHJpdmVyIGlzIHByZXNlbnQsIGFuZCBtb2RpZmllcyBob3cgdGhlIFRoaW5rUGFkCitmaXJtd2FyZSB3aWxsIGJlaGF2ZSBpbiBtYW55IHNpdHVhdGlvbnMuCisKK1RoZSBkcml2ZXIgZW5hYmxlcyB0aGUgSEtFWSAoImhvdCBrZXkiKSBldmVudCByZXBvcnRpbmcgYXV0b21hdGljYWxseQord2hlbiBsb2FkZWQsIGFuZCBkaXNhYmxlcyBpdCB3aGVuIGl0IGlzIHJlbW92ZWQuCisKK1RoZSBkcml2ZXIgd2lsbCByZXBvcnQgSEtFWSBldmVudHMgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6CisKKwlpYm0vaG90a2V5IEhLRVkgMDAwMDAwODAgMDAwMHh4eHgKKworU29tZSBvZiB0aGVzZSBldmVudHMgcmVmZXIgdG8gaG90IGtleSBwcmVzc2VzLCBidXQgbm90IGFsbCBvZiB0aGVtLgorCitUaGUgZHJpdmVyIHdpbGwgZ2VuZXJhdGUgZXZlbnRzIG92ZXIgdGhlIGlucHV0IGxheWVyIGZvciBob3Qga2V5cyBhbmQKK3JhZGlvIHN3aXRjaGVzLCBhbmQgb3ZlciB0aGUgQUNQSSBuZXRsaW5rIGxheWVyIGZvciBvdGhlciBldmVudHMuICBUaGUKK2lucHV0IGxheWVyIHN1cHBvcnQgYWNjZXB0cyB0aGUgc3RhbmRhcmQgSU9DVExzIHRvIHJlbWFwIHRoZSBrZXljb2RlcworYXNzaWduZWQgdG8gZWFjaCBob3Qga2V5LgorCitUaGUgaG90IGtleSBiaXQgbWFzayBhbGxvd3Mgc29tZSBjb250cm9sIG92ZXIgd2hpY2ggaG90IGtleXMgZ2VuZXJhdGUKK2V2ZW50cy4gIElmIGEga2V5IGlzICJtYXNrZWQiIChiaXQgc2V0IHRvIDAgaW4gdGhlIG1hc2spLCB0aGUgZmlybXdhcmUKK3dpbGwgaGFuZGxlIGl0LiAgSWYgaXQgaXMgInVubWFza2VkIiwgaXQgc2lnbmFscyB0aGUgZmlybXdhcmUgdGhhdAordGhpbmtwYWQtYWNwaSB3b3VsZCBwcmVmZXIgdG8gaGFuZGxlIGl0LCBpZiB0aGUgZmlybXdhcmUgd291bGQgYmUgc28KK2tpbmQgdG8gYWxsb3cgaXQgKGFuZCBpdCBvZnRlbiBkb2Vzbid0ISkuCisKK05vdCBhbGwgYml0cyBpbiB0aGUgbWFzayBjYW4gYmUgbW9kaWZpZWQuICBOb3QgYWxsIGJpdHMgdGhhdCBjYW4gYmUKK21vZGlmaWVkIGRvIGFueXRoaW5nLiAgTm90IGFsbCBob3Qga2V5cyBjYW4gYmUgaW5kaXZpZHVhbGx5IGNvbnRyb2xsZWQKK2J5IHRoZSBtYXNrLiAgU29tZSBtb2RlbHMgZG8gbm90IHN1cHBvcnQgdGhlIG1hc2sgYXQgYWxsLiAgVGhlIGJlaGF2aW91cgorb2YgdGhlIG1hc2sgaXMsIHRoZXJlZm9yZSwgaGlnaGx5IGRlcGVuZGVudCBvbiB0aGUgVGhpbmtQYWQgbW9kZWwuCisKK1RoZSBkcml2ZXIgd2lsbCBmaWx0ZXIgb3V0IGFueSB1bm1hc2tlZCBob3RrZXlzLCBzbyBldmVuIGlmIHRoZSBmaXJtd2FyZQorZG9lc24ndCBhbGxvdyBkaXNhYmxpbmcgYW4gc3BlY2lmaWMgaG90a2V5LCB0aGUgZHJpdmVyIHdpbGwgbm90IHJlcG9ydAorZXZlbnRzIGZvciB1bm1hc2tlZCBob3RrZXlzLgorCitOb3RlIHRoYXQgdW5tYXNraW5nIHNvbWUga2V5cyBwcmV2ZW50cyB0aGVpciBkZWZhdWx0IGJlaGF2aW9yLiAgRm9yCitleGFtcGxlLCBpZiBGbitGNSBpcyB1bm1hc2tlZCwgdGhhdCBrZXkgd2lsbCBubyBsb25nZXIgZW5hYmxlL2Rpc2FibGUKK0JsdWV0b290aCBieSBpdHNlbGYgaW4gZmlybXdhcmUuCisKK05vdGUgYWxzbyB0aGF0IG5vdCBhbGwgRm4ga2V5IGNvbWJpbmF0aW9ucyBhcmUgc3VwcG9ydGVkIHRocm91Z2ggQUNQSQorZGVwZW5kaW5nIG9uIHRoZSBUaGlua1BhZCBtb2RlbCBhbmQgZmlybXdhcmUgdmVyc2lvbi4gIE9uIHRob3NlCitUaGlua1BhZHMsIGl0IGlzIHN0aWxsIHBvc3NpYmxlIHRvIHN1cHBvcnQgc29tZSBleHRyYSBob3RrZXlzIGJ5Citwb2xsaW5nIHRoZSAiQ01PUyBOVlJBTSIgYXQgbGVhc3QgMTAgdGltZXMgcGVyIHNlY29uZC4gIFRoZSBkcml2ZXIKK2F0dGVtcHRzIHRvIGVuYWJsZXMgdGhpcyBmdW5jdGlvbmFsaXR5IGF1dG9tYXRpY2FsbHkgd2hlbiByZXF1aXJlZC4KKworcHJvY2ZzIG5vdGVzOgorCitUaGUgZm9sbG93aW5nIGNvbW1hbmRzIGNhbiBiZSB3cml0dGVuIHRvIHRoZSAvcHJvYy9hY3BpL2libS9ob3RrZXkgZmlsZToKKworCWVjaG8gMHhmZmZmZmZmZiA+IC9wcm9jL2FjcGkvaWJtL2hvdGtleSAtLSBlbmFibGUgYWxsIGhvdCBrZXlzCisJZWNobyAwID4gL3Byb2MvYWNwaS9pYm0vaG90a2V5IC0tIGRpc2FibGUgYWxsIHBvc3NpYmxlIGhvdCBrZXlzCisJLi4uIGFueSBvdGhlciA4LWhleC1kaWdpdCBtYXNrIC4uLgorCWVjaG8gcmVzZXQgPiAvcHJvYy9hY3BpL2libS9ob3RrZXkgLS0gcmVzdG9yZSB0aGUgcmVjb21tZW5kZWQgbWFzaworCitUaGUgZm9sbG93aW5nIGNvbW1hbmRzIGhhdmUgYmVlbiBkZXByZWNhdGVkIGFuZCB3aWxsIGNhdXNlIHRoZSBrZXJuZWwKK3RvIGxvZyBhIHdhcm5pbmc6CisKKwllY2hvIGVuYWJsZSA+IC9wcm9jL2FjcGkvaWJtL2hvdGtleSAtLSBkb2VzIG5vdGhpbmcKKwllY2hvIGRpc2FibGUgPiAvcHJvYy9hY3BpL2libS9ob3RrZXkgLS0gcmV0dXJucyBhbiBlcnJvcgorCitUaGUgcHJvY2ZzIGludGVyZmFjZSBkb2VzIG5vdCBzdXBwb3J0IE5WUkFNIHBvbGxpbmcgY29udHJvbC4gIFNvIGFzIHRvCittYWludGFpbiBtYXhpbXVtIGJ1Zy10by1idWcgY29tcGF0aWJpbGl0eSwgaXQgZG9lcyBub3QgcmVwb3J0IGFueSBtYXNrcywKK25vciBkb2VzIGl0IGFsbG93IG9uZSB0byBtYW5pcHVsYXRlIHRoZSBob3Qga2V5IG1hc2sgd2hlbiB0aGUgZmlybXdhcmUKK2RvZXMgbm90IHN1cHBvcnQgbWFza3MgYXQgYWxsLCBldmVuIGlmIE5WUkFNIHBvbGxpbmcgaXMgaW4gdXNlLgorCitzeXNmcyBub3RlczoKKworCWhvdGtleV9iaW9zX2VuYWJsZWQ6CisJCURFUFJFQ0FURUQsIFdJTEwgQkUgUkVNT1ZFRCBTT09OLgorCisJCVJldHVybnMgMC4KKworCWhvdGtleV9iaW9zX21hc2s6CisJCURFUFJFQ0FURUQsIERPTidUIFVTRSwgV0lMTCBCRSBSRU1PVkVEIElOIFRIRSBGVVRVUkUuCisKKwkJUmV0dXJucyB0aGUgaG90IGtleXMgbWFzayB3aGVuIHRoaW5rcGFkLWFjcGkgd2FzIGxvYWRlZC4KKwkJVXBvbiBtb2R1bGUgdW5sb2FkLCB0aGUgaG90IGtleXMgbWFzayB3aWxsIGJlIHJlc3RvcmVkCisJCXRvIHRoaXMgdmFsdWUuICAgVGhpcyBpcyBhbHdheXMgMHg4MGMsIGJlY2F1c2UgdGhvc2UgYXJlCisJCXRoZSBob3RrZXlzIHRoYXQgd2VyZSBzdXBwb3J0ZWQgYnkgYW5jaWVudCBmaXJtd2FyZQorCQl3aXRob3V0IG1hc2sgc3VwcG9ydC4KKworCWhvdGtleV9lbmFibGU6CisJCURFUFJFQ0FURUQsIFdJTEwgQkUgUkVNT1ZFRCBTT09OLgorCisJCTA6IHJldHVybnMgLUVQRVJNCisJCTE6IGRvZXMgbm90aGluZworCisJaG90a2V5X21hc2s6CisJCWJpdCBtYXNrIHRvIGVuYWJsZSByZXBvcnRpbmcgKGFuZCBkZXBlbmRpbmcgb24KKwkJdGhlIGZpcm13YXJlLCBBQ1BJIGV2ZW50IGdlbmVyYXRpb24pIGZvciBlYWNoIGhvdCBrZXkKKwkJKHNlZSBhYm92ZSkuICBSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGUgaG90IGtleXMKKwkJbWFzaywgYW5kIGFsbG93cyBvbmUgdG8gbW9kaWZ5IGl0LgorCisJaG90a2V5X2FsbF9tYXNrOgorCQliaXQgbWFzayB0aGF0IHNob3VsZCBlbmFibGUgZXZlbnQgcmVwb3J0aW5nIGZvciBhbGwKKwkJc3VwcG9ydGVkIGhvdCBrZXlzLCB3aGVuIGVjaG9lZCB0byBob3RrZXlfbWFzayBhYm92ZS4KKwkJVW5sZXNzIHlvdSBrbm93IHdoaWNoIGV2ZW50cyBuZWVkIHRvIGJlIGhhbmRsZWQKKwkJcGFzc2l2ZWx5IChiZWNhdXNlIHRoZSBmaXJtd2FyZSAqd2lsbCogaGFuZGxlIHRoZW0KKwkJYW55d2F5KSwgZG8gKm5vdCogdXNlIGhvdGtleV9hbGxfbWFzay4gIFVzZQorCQlob3RrZXlfcmVjb21tZW5kZWRfbWFzaywgaW5zdGVhZC4gWW91IGhhdmUgYmVlbiB3YXJuZWQuCisKKwlob3RrZXlfcmVjb21tZW5kZWRfbWFzazoKKwkJYml0IG1hc2sgdGhhdCBzaG91bGQgZW5hYmxlIGV2ZW50IHJlcG9ydGluZyBmb3IgYWxsCisJCXN1cHBvcnRlZCBob3Qga2V5cywgZXhjZXB0IHRob3NlIHdoaWNoIGFyZSBhbHdheXMKKwkJaGFuZGxlZCBieSB0aGUgZmlybXdhcmUgYW55d2F5LiAgRWNobyBpdCB0bworCQlob3RrZXlfbWFzayBhYm92ZSwgdG8gdXNlLiAgVGhpcyBpcyB0aGUgZGVmYXVsdCBtYXNrCisJCXVzZWQgYnkgdGhlIGRyaXZlci4KKworCWhvdGtleV9zb3VyY2VfbWFzazoKKwkJYml0IG1hc2sgdGhhdCBzZWxlY3RzIHdoaWNoIGhvdCBrZXlzIHdpbGwgdGhlIGRyaXZlcgorCQlwb2xsIHRoZSBOVlJBTSBmb3IuICBUaGlzIGlzIGF1dG8tZGV0ZWN0ZWQgYnkgdGhlIGRyaXZlcgorCQliYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIHJlcG9ydGVkIGJ5IHRoZSBBQ1BJIGZpcm13YXJlLAorCQlidXQgaXQgY2FuIGJlIG92ZXJyaWRkZW4gYXQgcnVudGltZS4KKworCQlIb3Qga2V5cyB3aG9zZSBiaXRzIGFyZSBzZXQgaW4gaG90a2V5X3NvdXJjZV9tYXNrIGFyZQorCQlwb2xsZWQgZm9yIGluIE5WUkFNLCBhbmQgcmVwb3J0ZWQgYXMgaG90a2V5IGV2ZW50cyBpZgorCQllbmFibGVkIGluIGhvdGtleV9tYXNrLiAgT25seSBhIGZldyBob3Qga2V5cyBhcmUKKwkJYXZhaWxhYmxlIHRocm91Z2ggQ01PUyBOVlJBTSBwb2xsaW5nLgorCisJCVdhcm5pbmc6IHdoZW4gaW4gTlZSQU0gbW9kZSwgdGhlIHZvbHVtZSB1cC9kb3duL211dGUKKwkJa2V5cyBhcmUgc3ludGhlc2l6ZWQgYWNjb3JkaW5nIHRvIGNoYW5nZXMgaW4gdGhlIG1peGVyLAorCQl3aGljaCB1c2VzIGEgc2luZ2xlIHZvbHVtZSB1cCBvciB2b2x1bWUgZG93biBob3RrZXkKKwkJcHJlc3MgdG8gdW5tdXRlLCBhcyBwZXIgdGhlIFRoaW5rUGFkIHZvbHVtZSBtaXhlciB1c2VyCisJCWludGVyZmFjZS4gIFdoZW4gaW4gQUNQSSBldmVudCBtb2RlLCB2b2x1bWUgdXAvZG93bi9tdXRlCisJCWV2ZW50cyBhcmUgcmVwb3J0ZWQgYnkgdGhlIGZpcm13YXJlIGFuZCBjYW4gYmVoYXZlCisJCWRpZmZlcmVudGx5IChhbmQgdGhhdCBiZWhhdmlvdXIgY2hhbmdlcyB3aXRoIGZpcm13YXJlCisJCXZlcnNpb24gLS0gbm90IGp1c3Qgd2l0aCBmaXJtd2FyZSBtb2RlbHMgLS0gYXMgd2VsbCBhcworCQlPU0koTGludXgpIHN0YXRlKS4KKworCWhvdGtleV9wb2xsX2ZyZXE6CisJCWZyZXF1ZW5jeSBpbiBIeiBmb3IgaG90IGtleSBwb2xsaW5nLiBJdCBtdXN0IGJlIGJldHdlZW4KKwkJMCBhbmQgMjUgSHouICBQb2xsaW5nIGlzIG9ubHkgY2FycmllZCBvdXQgd2hlbiBzdHJpY3RseQorCQluZWVkZWQuCisKKwkJU2V0dGluZyBob3RrZXlfcG9sbF9mcmVxIHRvIHplcm8gZGlzYWJsZXMgcG9sbGluZywgYW5kCisJCXdpbGwgY2F1c2UgaG90IGtleSBwcmVzc2VzIHRoYXQgcmVxdWlyZSBOVlJBTSBwb2xsaW5nCisJCXRvIG5ldmVyIGJlIHJlcG9ydGVkLgorCisJCVNldHRpbmcgaG90a2V5X3BvbGxfZnJlcSB0b28gbG93IG1heSBjYXVzZSByZXBlYXRlZAorCQlwcmVzc2luZ3Mgb2YgdGhlIHNhbWUgaG90IGtleSB0byBiZSBtaXNyZXBvcnRlZCBhcyBhCisJCXNpbmdsZSBrZXkgcHJlc3MsIG9yIHRvIG5vdCBldmVuIGJlIGRldGVjdGVkIGF0IGFsbC4KKwkJVGhlIHJlY29tbWVuZGVkIHBvbGxpbmcgZnJlcXVlbmN5IGlzIDEwSHouCisKKwlob3RrZXlfcmFkaW9fc3c6CisJCUlmIHRoZSBUaGlua1BhZCBoYXMgYSBoYXJkd2FyZSByYWRpbyBzd2l0Y2gsIHRoaXMKKwkJYXR0cmlidXRlIHdpbGwgcmVhZCAwIGlmIHRoZSBzd2l0Y2ggaXMgaW4gdGhlICJyYWRpb3MKKwkJZGlzYWJsZWQiIHBvc2l0aW9uLCBhbmQgMSBpZiB0aGUgc3dpdGNoIGlzIGluIHRoZQorCQkicmFkaW9zIGVuYWJsZWQiIHBvc2l0aW9uLgorCisJCVRoaXMgYXR0cmlidXRlIGhhcyBwb2xsKCkvc2VsZWN0KCkgc3VwcG9ydC4KKworCWhvdGtleV90YWJsZXRfbW9kZToKKwkJSWYgdGhlIFRoaW5rUGFkIGhhcyB0YWJsZXQgY2FwYWJpbGl0aWVzLCB0aGlzIGF0dHJpYnV0ZQorCQl3aWxsIHJlYWQgMCBpZiB0aGUgVGhpbmtQYWQgaXMgaW4gbm9ybWFsIG1vZGUsIGFuZAorCQkxIGlmIHRoZSBUaGlua1BhZCBpcyBpbiB0YWJsZXQgbW9kZS4KKworCQlUaGlzIGF0dHJpYnV0ZSBoYXMgcG9sbCgpL3NlbGVjdCgpIHN1cHBvcnQuCisKKwl3YWtldXBfcmVhc29uOgorCQlTZXQgdG8gMSBpZiB0aGUgc3lzdGVtIGlzIHdha2luZyB1cCBiZWNhdXNlIHRoZSB1c2VyCisJCXJlcXVlc3RlZCBhIGJheSBlamVjdGlvbi4gIFNldCB0byAyIGlmIHRoZSBzeXN0ZW0gaXMKKwkJd2FraW5nIHVwIGJlY2F1c2UgdGhlIHVzZXIgcmVxdWVzdGVkIHRoZSBzeXN0ZW0gdG8KKwkJdW5kb2NrLiAgU2V0IHRvIHplcm8gZm9yIG5vcm1hbCB3YWtlLXVwcyBvciB3YWtlLXVwcworCQlkdWUgdG8gdW5rbm93biByZWFzb25zLgorCisJCVRoaXMgYXR0cmlidXRlIGhhcyBwb2xsKCkvc2VsZWN0KCkgc3VwcG9ydC4KKworCXdha2V1cF9ob3R1bnBsdWdfY29tcGxldGU6CisJCVNldCB0byAxIGlmIHRoZSBzeXN0ZW0gd2FzIHdha2VuIHVwIGJlY2F1c2Ugb2YgYW4KKwkJdW5kb2NrIG9yIGJheSBlamVjdGlvbiByZXF1ZXN0LCBhbmQgdGhhdCByZXF1ZXN0CisJCXdhcyBzdWNjZXNzZnVsbHkgY29tcGxldGVkLiAgQXQgdGhpcyBwb2ludCwgaXQgbWlnaHQKKwkJYmUgdXNlZnVsIHRvIHNlbmQgdGhlIHN5c3RlbSBiYWNrIHRvIHNsZWVwLCBhdCB0aGUKKwkJdXNlcidzIGNob2ljZS4gIFJlZmVyIHRvIEhLRVkgZXZlbnRzIDB4NDAwMyBhbmQKKwkJMHgzMDAzLCBiZWxvdy4KKworCQlUaGlzIGF0dHJpYnV0ZSBoYXMgcG9sbCgpL3NlbGVjdCgpIHN1cHBvcnQuCisKK2lucHV0IGxheWVyIG5vdGVzOgorCitBIEhvdCBrZXkgaXMgbWFwcGVkIHRvIGEgc2luZ2xlIGlucHV0IGxheWVyIEVWX0tFWSBldmVudCwgcG9zc2libHkKK2ZvbGxvd2VkIGJ5IGFuIEVWX01TQyBNU0NfU0NBTiBldmVudCB0aGF0IHNoYWxsIGNvbnRhaW4gdGhhdCBrZXkncyBzY2FuCitjb2RlLiAgQW4gRVZfU1lOIGV2ZW50IHdpbGwgYWx3YXlzIGJlIGdlbmVyYXRlZCB0byBtYXJrIHRoZSBlbmQgb2YgdGhlCitldmVudCBibG9jay4KKworRG8gbm90IHVzZSB0aGUgRVZfTVNDIE1TQ19TQ0FOIGV2ZW50cyB0byBwcm9jZXNzIGtleXMuICBUaGV5IGFyZSB0byBiZQordXNlZCBhcyBhIGhlbHBlciB0byByZW1hcCBrZXlzLCBvbmx5LiAgVGhleSBhcmUgcGFydGljdWxhcmx5IHVzZWZ1bCB3aGVuCityZW1hcHBpbmcgS0VZX1VOS05PV04ga2V5cy4KKworVGhlIGV2ZW50cyBhcmUgYXZhaWxhYmxlIGluIGFuIGlucHV0IGRldmljZSwgd2l0aCB0aGUgZm9sbG93aW5nIGlkOgorCisJQnVzOgkJQlVTX0hPU1QKKwl2ZW5kb3I6CQkweDEwMTQgKFBDSV9WRU5ET1JfSURfSUJNKSAgb3IKKwkJCTB4MTdhYSAoUENJX1ZFTkRPUl9JRF9MRU5PVk8pCisJcHJvZHVjdDoJMHg1MDU0ICgiVFAiKQorCXZlcnNpb246CTB4NDEwMQorCitUaGUgdmVyc2lvbiB3aWxsIGhhdmUgaXRzIExTQiBpbmNyZW1lbnRlZCBpZiB0aGUga2V5bWFwIGNoYW5nZXMgaW4gYQorYmFja3dhcmRzLWNvbXBhdGlibGUgd2F5LiAgVGhlIE1TQiBzaGFsbCBhbHdheXMgYmUgMHg0MSBmb3IgdGhpcyBpbnB1dAorZGV2aWNlLiAgSWYgdGhlIE1TQiBpcyBub3QgMHg0MSwgZG8gbm90IHVzZSB0aGUgZGV2aWNlIGFzIGRlc2NyaWJlZCBpbgordGhpcyBzZWN0aW9uLCBhcyBpdCBpcyBlaXRoZXIgc29tZXRoaW5nIGVsc2UgKGUuZy4gYW5vdGhlciBpbnB1dCBkZXZpY2UKK2V4cG9ydGVkIGJ5IGEgdGhpbmtwYWQgZHJpdmVyLCBzdWNoIGFzIEhEQVBTKSBvciBpdHMgZnVuY3Rpb25hbGl0eSBoYXMKK2JlZW4gY2hhbmdlZCBpbiBhIG5vbi1iYWNrd2FyZHMgY29tcGF0aWJsZSB3YXkuCisKK0FkZGluZyBvdGhlciBldmVudCB0eXBlcyBmb3Igb3RoZXIgZnVuY3Rpb25hbGl0aWVzIHNoYWxsIGJlIGNvbnNpZGVyZWQgYQorYmFja3dhcmRzLWNvbXBhdGlibGUgY2hhbmdlIGZvciB0aGlzIGlucHV0IGRldmljZS4KKworVGhpbmtwYWQtYWNwaSBIb3QgS2V5IGV2ZW50IG1hcCAodmVyc2lvbiAweDQxMDEpOgorCitBQ1BJCVNjYW4KK2V2ZW50CWNvZGUJS2V5CQlOb3RlcworCisweDEwMDEJMHgwMAlGTitGMQkJLQorCisweDEwMDIJMHgwMQlGTitGMgkJSUJNOiBiYXR0ZXJ5IChyYXJlKQorCQkJCUxlbm92bzogU2NyZWVuIGxvY2sKKworMHgxMDAzCTB4MDIJRk4rRjMJCU1hbnkgSUJNIG1vZGVscyBhbHdheXMgcmVwb3J0CisJCQkJdGhpcyBob3Qga2V5LCBldmVuIHdpdGggaG90IGtleXMKKwkJCQlkaXNhYmxlZCBvciB3aXRoIEZuK0YzIG1hc2tlZAorCQkJCW9mZgorCQkJCUlCTTogc2NyZWVuIGxvY2ssIG9mdGVuIHR1cm5zCisJCQkJb2ZmIHRoZSBUaGlua0xpZ2h0IGFzIHNpZGUtZWZmZWN0CisJCQkJTGVub3ZvOiBiYXR0ZXJ5CisKKzB4MTAwNAkweDAzCUZOK0Y0CQlTbGVlcCBidXR0b24gKEFDUEkgc2xlZXAgYnV0dG9uCisJCQkJc2VtYW50aWNzLCBpLmUuIHNsZWVwLXRvLVJBTSkuCisJCQkJSXQgYWx3YXlzIGdlbmVyYXRlcyBzb21lIGtpbmQKKwkJCQlvZiBldmVudCwgZWl0aGVyIHRoZSBob3Qga2V5CisJCQkJZXZlbnQgb3IgYW4gQUNQSSBzbGVlcCBidXR0b24KKwkJCQlldmVudC4gVGhlIGZpcm13YXJlIG1heQorCQkJCXJlZnVzZSB0byBnZW5lcmF0ZSBmdXJ0aGVyIEZOK0Y0CisJCQkJa2V5IHByZXNzZXMgdW50aWwgYSBTMyBvciBTNCBBQ1BJCisJCQkJc2xlZXAgY3ljbGUgaXMgcGVyZm9ybWVkIG9yIHNvbWUKKwkJCQl0aW1lIHBhc3Nlcy4KKworMHgxMDA1CTB4MDQJRk4rRjUJCVJhZGlvLiAgRW5hYmxlcy9kaXNhYmxlcworCQkJCXRoZSBpbnRlcm5hbCBCbHVldG9vdGggaGFyZHdhcmUKKwkJCQlhbmQgVy1XQU4gY2FyZCBpZiBsZWZ0IGluIGNvbnRyb2wKKwkJCQlvZiB0aGUgZmlybXdhcmUuICBEb2VzIG5vdCBhZmZlY3QKKwkJCQl0aGUgV0xBTiBjYXJkLgorCQkJCVNob3VsZCBiZSB1c2VkIHRvIHR1cm4gb24vb2ZmIGFsbAorCQkJCXJhZGlvcyAoQmx1ZXRvb3RoK1ctV0FOK1dMQU4pLAorCQkJCXJlYWxseS4KKworMHgxMDA2CTB4MDUJRk4rRjYJCS0KKworMHgxMDA3CTB4MDYJRk4rRjcJCVZpZGVvIG91dHB1dCBjeWNsZS4KKwkJCQlEbyB5b3UgZmVlbCBsdWNreSB0b2RheT8KKworMHgxMDA4CTB4MDcJRk4rRjgJCUlCTTogdG9nZ2xlIHNjcmVlbiBleHBhbmQKKwkJCQlMZW5vdm86IGNvbmZpZ3VyZSBVbHRyYU5hdiwKKwkJCQlvciB0b2dnbGUgc2NyZWVuIGV4cGFuZAorCisweDEwMDkJMHgwOAlGTitGOQkJLQorCS4uCS4uCQkuLgorMHgxMDBCCTB4MEEJRk4rRjExCQktCisKKzB4MTAwQwkweDBCCUZOK0YxMgkJU2xlZXAgdG8gZGlzay4gIFlvdSBhcmUgYWx3YXlzCisJCQkJc3VwcG9zZWQgdG8gaGFuZGxlIGl0IHlvdXJzZWxmLAorCQkJCWVpdGhlciB0aHJvdWdoIHRoZSBBQ1BJIGV2ZW50LAorCQkJCW9yIHRocm91Z2ggYSBob3RrZXkgZXZlbnQuCisJCQkJVGhlIGZpcm13YXJlIG1heSByZWZ1c2UgdG8KKwkJCQlnZW5lcmF0ZSBmdXJ0aGVyIEZOK0YxMiBrZXkKKwkJCQlwcmVzcyBldmVudHMgdW50aWwgYSBTMyBvciBTNAorCQkJCUFDUEkgc2xlZXAgY3ljbGUgaXMgcGVyZm9ybWVkLAorCQkJCW9yIHNvbWUgdGltZSBwYXNzZXMuCisKKzB4MTAwRAkweDBDCUZOK0JBQ0tTUEFDRQktCisweDEwMEUJMHgwRAlGTitJTlNFUlQJLQorMHgxMDBGCTB4MEUJRk4rREVMRVRFCS0KKworMHgxMDEwCTB4MEYJRk4rSE9NRQkJQnJpZ2h0bmVzcyB1cC4gIFRoaXMga2V5IGlzCisJCQkJYWx3YXlzIGhhbmRsZWQgYnkgdGhlIGZpcm13YXJlCisJCQkJaW4gSUJNIFRoaW5rUGFkcywgZXZlbiB3aGVuCisJCQkJdW5tYXNrZWQuICBKdXN0IGxlYXZlIGl0IGFsb25lLgorCQkJCUZvciBMZW5vdm8gVGhpbmtQYWRzIHdpdGggYSBuZXcKKwkJCQlCSU9TLCBpdCBoYXMgdG8gYmUgaGFuZGxlZCBlaXRoZXIKKwkJCQlieSB0aGUgQUNQSSBPU0ksIG9yIGJ5IHVzZXJzcGFjZS4KKwkJCQlUaGUgZHJpdmVyIGRvZXMgdGhlIHJpZ2h0IHRoaW5nLAorCQkJCW5ldmVyIG1lc3Mgd2l0aCB0aGlzLgorMHgxMDExCTB4MTAJRk4rRU5ECQlCcmlnaHRuZXNzIGRvd24uICBTZWUgYnJpZ2h0bmVzcworCQkJCXVwIGZvciBkZXRhaWxzLgorCisweDEwMTIJMHgxMQlGTitQR1VQCQlUaGlua0xpZ2h0IHRvZ2dsZS4gIFRoaXMga2V5IGlzCisJCQkJYWx3YXlzIGhhbmRsZWQgYnkgdGhlIGZpcm13YXJlLAorCQkJCWV2ZW4gd2hlbiB1bm1hc2tlZC4KKworMHgxMDEzCTB4MTIJRk4rUEdET1dOCS0KKworMHgxMDE0CTB4MTMJRk4rU1BBQ0UJWm9vbSBrZXkKKworMHgxMDE1CTB4MTQJVk9MVU1FIFVQCUludGVybmFsIG1peGVyIHZvbHVtZSB1cC4gVGhpcworCQkJCWtleSBpcyBhbHdheXMgaGFuZGxlZCBieSB0aGUKKwkJCQlmaXJtd2FyZSwgZXZlbiB3aGVuIHVubWFza2VkLgorCQkJCU5PVEU6IExlbm92byBzZWVtcyB0byBiZSBjaGFuZ2luZworCQkJCXRoaXMuCisweDEwMTYJMHgxNQlWT0xVTUUgRE9XTglJbnRlcm5hbCBtaXhlciB2b2x1bWUgdXAuIFRoaXMKKwkJCQlrZXkgaXMgYWx3YXlzIGhhbmRsZWQgYnkgdGhlCisJCQkJZmlybXdhcmUsIGV2ZW4gd2hlbiB1bm1hc2tlZC4KKwkJCQlOT1RFOiBMZW5vdm8gc2VlbXMgdG8gYmUgY2hhbmdpbmcKKwkJCQl0aGlzLgorMHgxMDE3CTB4MTYJTVVURQkJTXV0ZSBpbnRlcm5hbCBtaXhlci4gVGhpcworCQkJCWtleSBpcyBhbHdheXMgaGFuZGxlZCBieSB0aGUKKwkJCQlmaXJtd2FyZSwgZXZlbiB3aGVuIHVubWFza2VkLgorCisweDEwMTgJMHgxNwlUSElOS1BBRAlUaGlua1BhZC9BY2Nlc3MgSUJNL0xlbm92byBrZXkKKworMHgxMDE5CTB4MTgJdW5rbm93bgorLi4JLi4JLi4KKzB4MTAyMAkweDFGCXVua25vd24KKworVGhlIFRoaW5rUGFkIGZpcm13YXJlIGRvZXMgbm90IGFsbG93IG9uZSB0byBkaWZmZXJlbnRpYXRlIHdoZW4gbW9zdCBob3QKK2tleXMgYXJlIHByZXNzZWQgb3IgcmVsZWFzZWQgKGVpdGhlciB0aGF0LCBvciB3ZSBkb24ndCBrbm93IGhvdyB0bywgeWV0KS4KK0ZvciB0aGVzZSBrZXlzLCB0aGUgZHJpdmVyIGdlbmVyYXRlcyBhIHNldCBvZiBldmVudHMgZm9yIGEga2V5IHByZXNzIGFuZAoraW1tZWRpYXRlbHkgaXNzdWVzIHRoZSBzYW1lIHNldCBvZiBldmVudHMgZm9yIGEga2V5IHJlbGVhc2UuICBJdCBpcwordW5rbm93biBieSB0aGUgZHJpdmVyIGlmIHRoZSBUaGlua1BhZCBmaXJtd2FyZSB0cmlnZ2VyZWQgdGhlc2UgZXZlbnRzIG9uCitob3Qga2V5IHByZXNzIG9yIHJlbGVhc2UsIGJ1dCB0aGUgZmlybXdhcmUgd2lsbCBkbyBpdCBmb3IgZWl0aGVyIG9uZSwgbm90Citib3RoLgorCitJZiBhIGtleSBpcyBtYXBwZWQgdG8gS0VZX1JFU0VSVkVELCBpdCBnZW5lcmF0ZXMgbm8gaW5wdXQgZXZlbnRzIGF0IGFsbC4KK0lmIGEga2V5IGlzIG1hcHBlZCB0byBLRVlfVU5LTk9XTiwgaXQgZ2VuZXJhdGVzIGFuIGlucHV0IGV2ZW50IHRoYXQKK2luY2x1ZGVzIGFuIHNjYW4gY29kZS4gIElmIGEga2V5IGlzIG1hcHBlZCB0byBhbnl0aGluZyBlbHNlLCBpdCB3aWxsCitnZW5lcmF0ZSBpbnB1dCBkZXZpY2UgRVZfS0VZIGV2ZW50cy4KKworSW4gYWRkaXRpb24gdG8gdGhlIEVWX0tFWSBldmVudHMsIHRoaW5rcGFkLWFjcGkgbWF5IGFsc28gaXNzdWUgRVZfU1cKK2V2ZW50cyBmb3Igc3dpdGNoZXM6CisKK1NXX1JGS0lMTF9BTEwJVDYwIGFuZCBsYXRlciBoYXJkd2FyZSByZmtpbGwgcm9ja2VyIHN3aXRjaAorU1dfVEFCTEVUX01PREUJVGFibGV0IFRoaW5rUGFkcyBIS0VZIGV2ZW50cyAweDUwMDkgYW5kIDB4NTAwQQorCitOb24gaG90a2V5IEFDUEkgSEtFWSBldmVudCBtYXA6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0V2ZW50cyB0aGF0IGFyZSBuZXZlciBwcm9wYWdhdGVkIGJ5IHRoZSBkcml2ZXI6CisKKzB4MjMwNAkJU3lzdGVtIGlzIHdha2luZyB1cCBmcm9tIHN1c3BlbmQgdG8gdW5kb2NrCisweDIzMDUJCVN5c3RlbSBpcyB3YWtpbmcgdXAgZnJvbSBzdXNwZW5kIHRvIGVqZWN0IGJheQorMHgyNDA0CQlTeXN0ZW0gaXMgd2FraW5nIHVwIGZyb20gaGliZXJuYXRpb24gdG8gdW5kb2NrCisweDI0MDUJCVN5c3RlbSBpcyB3YWtpbmcgdXAgZnJvbSBoaWJlcm5hdGlvbiB0byBlamVjdCBiYXkKKzB4NTAwMQkJTGlkIGNsb3NlZAorMHg1MDAyCQlMaWQgb3BlbmVkCisweDUwMDkJCVRhYmxldCBzd2l2ZWw6IHN3aXRjaGVkIHRvIHRhYmxldCBtb2RlCisweDUwMEEJCVRhYmxldCBzd2l2ZWw6IHN3aXRjaGVkIHRvIG5vcm1hbCBtb2RlCisweDUwMTAJCUJyaWdodG5lc3MgbGV2ZWwgY2hhbmdlZC9jb250cm9sIGV2ZW50CisweDYwMDAJCUtFWUJPQVJEOiBOdW1sb2NrIGtleSBwcmVzc2VkCisweDYwMDUJCUtFWUJPQVJEOiBGbiBrZXkgcHJlc3NlZCAoVE8gQkUgVkVSSUZJRUQpCisweDcwMDAJCVJhZGlvIFN3aXRjaCBtYXkgaGF2ZSBjaGFuZ2VkIHN0YXRlCisKKworRXZlbnRzIHRoYXQgYXJlIHByb3BhZ2F0ZWQgYnkgdGhlIGRyaXZlciB0byB1c2Vyc3BhY2U6CisKKzB4MjMxMwkJQUxBUk06IFN5c3RlbSBpcyB3YWtpbmcgdXAgZnJvbSBzdXNwZW5kIGJlY2F1c2UKKwkJdGhlIGJhdHRlcnkgaXMgbmVhcmx5IGVtcHR5CisweDI0MTMJCUFMQVJNOiBTeXN0ZW0gaXMgd2FraW5nIHVwIGZyb20gaGliZXJuYXRpb24gYmVjYXVzZQorCQl0aGUgYmF0dGVyeSBpcyBuZWFybHkgZW1wdHkKKzB4MzAwMwkJQmF5IGVqZWN0aW9uIChzZWUgMHgyeDA1KSBjb21wbGV0ZSwgY2FuIHNsZWVwIGFnYWluCisweDMwMDYJCUJheSBob3RwbHVnIHJlcXVlc3QgKGhpbnQgdG8gcG93ZXIgdXAgU0FUQSBsaW5rIHdoZW4KKwkJdGhlIG9wdGljYWwgZHJpdmUgdHJheSBpcyBlamVjdGVkKQorMHg0MDAzCQlVbmRvY2tlZCAoc2VlIDB4MngwNCksIGNhbiBzbGVlcCBhZ2FpbgorMHg0MDEwCQlEb2NrZWQgaW50byBob3RwbHVnIHBvcnQgcmVwbGljYXRvciAobm9uLUFDUEkgZG9jaykKKzB4NDAxMQkJVW5kb2NrZWQgZnJvbSBob3RwbHVnIHBvcnQgcmVwbGljYXRvciAobm9uLUFDUEkgZG9jaykKKzB4NTAwQgkJVGFibGV0IHBlbiBpbnNlcnRlZCBpbnRvIGl0cyBzdG9yYWdlIGJheQorMHg1MDBDCQlUYWJsZXQgcGVuIHJlbW92ZWQgZnJvbSBpdHMgc3RvcmFnZSBiYXkKKzB4NjAxMQkJQUxBUk06IGJhdHRlcnkgaXMgdG9vIGhvdAorMHg2MDEyCQlBTEFSTTogYmF0dGVyeSBpcyBleHRyZW1lbHkgaG90CisweDYwMjEJCUFMQVJNOiBhIHNlbnNvciBpcyB0b28gaG90CisweDYwMjIJCUFMQVJNOiBhIHNlbnNvciBpcyBleHRyZW1lbHkgaG90CisweDYwMzAJCVN5c3RlbSB0aGVybWFsIHRhYmxlIGNoYW5nZWQKKzB4NjA0MAkJTnZpZGlhIE9wdGltdXMvQUMgYWRhcHRlciByZWxhdGVkIChUTyBCRSBWRVJJRklFRCkKKworQmF0dGVyeSBuZWFybHkgZW1wdHkgYWxhcm1zIGFyZSBhIGxhc3QgcmVzb3J0IGF0dGVtcHQgdG8gZ2V0IHRoZQorb3BlcmF0aW5nIHN5c3RlbSB0byBoaWJlcm5hdGUgb3Igc2h1dGRvd24gY2xlYW5seSAoMHgyMzEzKSwgb3Igc2h1dGRvd24KK2NsZWFubHkgKDB4MjQxMykgYmVmb3JlIHBvd2VyIGlzIGxvc3QuICBUaGV5IG11c3QgYmUgYWN0ZWQgdXBvbiwgYXMgdGhlCit3YWtlIHVwIGNhdXNlZCBieSB0aGUgZmlybXdhcmUgd2lsbCBoYXZlIG5lZ2F0ZWQgbW9zdCBzYWZldHkgbmV0cy4uLgorCitXaGVuIGFueSBvZiB0aGUgInRvbyBob3QiIGFsYXJtcyBoYXBwZW4sIGFjY29yZGluZyB0byBMZW5vdm8gdGhlIHVzZXIKK3Nob3VsZCBzdXNwZW5kIG9yIGhpYmVybmF0ZSB0aGUgbGFwdG9wIChhbmQgaW4gdGhlIGNhc2Ugb2YgYmF0dGVyeQorYWxhcm1zLCB1bnBsdWcgdGhlIEFDIGFkYXB0ZXIpIHRvIGxldCBpdCBjb29sIGRvd24uICBUaGVzZSBhbGFybXMgZG8KK3NpZ25hbCB0aGF0IHNvbWV0aGluZyBpcyB3cm9uZywgdGhleSBzaG91bGQgbmV2ZXIgaGFwcGVuIG9uIG5vcm1hbAorb3BlcmF0aW5nIGNvbmRpdGlvbnMuCisKK1RoZSAiZXh0cmVtZWx5IGhvdCIgYWxhcm1zIGFyZSBlbWVyZ2VuY2llcy4gIEFjY29yZGluZyB0byBMZW5vdm8sIHRoZQorb3BlcmF0aW5nIHN5c3RlbSBpcyB0byBmb3JjZSBlaXRoZXIgYW4gaW1tZWRpYXRlIHN1c3BlbmQgb3IgaGliZXJuYXRlCitjeWNsZSwgb3IgYSBzeXN0ZW0gc2h1dGRvd24uICBPYnZpb3VzbHksIHNvbWV0aGluZyBpcyB2ZXJ5IHdyb25nIGlmIHRoaXMKK2hhcHBlbnMuCisKKworQnJpZ2h0bmVzcyBob3RrZXkgbm90ZXM6CisKK0Rvbid0IG1lc3Mgd2l0aCB0aGUgYnJpZ2h0bmVzcyBob3RrZXlzIGluIGEgVGhpbmtwYWQuICBJZiB5b3Ugd2FudAorbm90aWZpY2F0aW9ucyBmb3IgT1NELCB1c2UgdGhlIHN5c2ZzIGJhY2tsaWdodCBjbGFzcyBldmVudCBzdXBwb3J0LgorCitUaGUgZHJpdmVyIHdpbGwgaXNzdWUgS0VZX0JSSUdIVE5FU1NfVVAgYW5kIEtFWV9CUklHSFRORVNTX0RPV04gZXZlbnRzCithdXRvbWF0aWNhbGx5IGZvciB0aGUgY2FzZXMgd2VyZSB1c2Vyc3BhY2UgaGFzIHRvIGRvIHNvbWV0aGluZyB0bworaW1wbGVtZW50IGJyaWdodG5lc3MgY2hhbmdlcy4gIFdoZW4geW91IG92ZXJyaWRlIHRoZXNlIGV2ZW50cywgeW91IHdpbGwKK2VpdGhlciBmYWlsIHRvIGhhbmRsZSBwcm9wZXJseSB0aGUgVGhpbmtQYWRzIHRoYXQgcmVxdWlyZSBleHBsaWNpdAorYWN0aW9uIHRvIGNoYW5nZSBiYWNrbGlnaHQgYnJpZ2h0bmVzcywgb3IgdGhlIFRoaW5rUGFkcyB0aGF0IHJlcXVpcmUKK3RoYXQgbm8gYWN0aW9uIGJlIHRha2VuIHRvIHdvcmsgcHJvcGVybHkuCisKKworQmx1ZXRvb3RoCistLS0tLS0tLS0KKworcHJvY2ZzOiAvcHJvYy9hY3BpL2libS9ibHVldG9vdGgKK3N5c2ZzIGRldmljZSBhdHRyaWJ1dGU6IGJsdWV0b290aF9lbmFibGUgKGRlcHJlY2F0ZWQpCitzeXNmcyByZmtpbGwgY2xhc3M6IHN3aXRjaCAidHBhY3BpX2JsdWV0b290aF9zdyIKKworVGhpcyBmZWF0dXJlIHNob3dzIHRoZSBwcmVzZW5jZSBhbmQgY3VycmVudCBzdGF0ZSBvZiBhIFRoaW5rUGFkCitCbHVldG9vdGggZGV2aWNlIGluIHRoZSBpbnRlcm5hbCBUaGlua1BhZCBDREMgc2xvdC4KKworSWYgdGhlIFRoaW5rUGFkIHN1cHBvcnRzIGl0LCB0aGUgQmx1ZXRvb3RoIHN0YXRlIGlzIHN0b3JlZCBpbiBOVlJBTSwKK3NvIGl0IGlzIGtlcHQgYWNyb3NzIHJlYm9vdHMgYW5kIHBvd2VyLW9mZi4KKworUHJvY2ZzIG5vdGVzOgorCitJZiBCbHVldG9vdGggaXMgaW5zdGFsbGVkLCB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGNhbiBiZSB1c2VkOgorCisJZWNobyBlbmFibGUgPiAvcHJvYy9hY3BpL2libS9ibHVldG9vdGgKKwllY2hvIGRpc2FibGUgPiAvcHJvYy9hY3BpL2libS9ibHVldG9vdGgKKworU3lzZnMgbm90ZXM6CisKKwlJZiB0aGUgQmx1ZXRvb3RoIENEQyBjYXJkIGlzIGluc3RhbGxlZCwgaXQgY2FuIGJlIGVuYWJsZWQgLworCWRpc2FibGVkIHRocm91Z2ggdGhlICJibHVldG9vdGhfZW5hYmxlIiB0aGlua3BhZC1hY3BpIGRldmljZQorCWF0dHJpYnV0ZSwgYW5kIGl0cyBjdXJyZW50IHN0YXR1cyBjYW4gYWxzbyBiZSBxdWVyaWVkLgorCisJZW5hYmxlOgorCQkwOiBkaXNhYmxlcyBCbHVldG9vdGggLyBCbHVldG9vdGggaXMgZGlzYWJsZWQKKwkJMTogZW5hYmxlcyBCbHVldG9vdGggLyBCbHVldG9vdGggaXMgZW5hYmxlZC4KKworCU5vdGU6IHRoaXMgaW50ZXJmYWNlIGhhcyBiZWVuIHN1cGVyc2VkZWQgYnkgdGhlCWdlbmVyaWMgcmZraWxsCisJY2xhc3MuICBJdCBoYXMgYmVlbiBkZXByZWNhdGVkLCBhbmQgaXQgd2lsbCBiZSByZW1vdmVkIGluIHllYXIKKwkyMDEwLgorCisJcmZraWxsIGNvbnRyb2xsZXIgc3dpdGNoICJ0cGFjcGlfYmx1ZXRvb3RoX3N3IjogcmVmZXIgdG8KKwlEb2N1bWVudGF0aW9uL3Jma2lsbC50eHQgZm9yIGRldGFpbHMuCisKKworVmlkZW8gb3V0cHV0IGNvbnRyb2wgLS0gL3Byb2MvYWNwaS9pYm0vdmlkZW8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZmVhdHVyZSBhbGxvd3MgY29udHJvbCBvdmVyIHRoZSBkZXZpY2VzIHVzZWQgZm9yIHZpZGVvIG91dHB1dCAtCitMQ0QsIENSVCBvciBEVkkgKGlmIGF2YWlsYWJsZSkuIFRoZSBmb2xsb3dpbmcgY29tbWFuZHMgYXJlIGF2YWlsYWJsZToKKworCWVjaG8gbGNkX2VuYWJsZSA+IC9wcm9jL2FjcGkvaWJtL3ZpZGVvCisJZWNobyBsY2RfZGlzYWJsZSA+IC9wcm9jL2FjcGkvaWJtL3ZpZGVvCisJZWNobyBjcnRfZW5hYmxlID4gL3Byb2MvYWNwaS9pYm0vdmlkZW8KKwllY2hvIGNydF9kaXNhYmxlID4gL3Byb2MvYWNwaS9pYm0vdmlkZW8KKwllY2hvIGR2aV9lbmFibGUgPiAvcHJvYy9hY3BpL2libS92aWRlbworCWVjaG8gZHZpX2Rpc2FibGUgPiAvcHJvYy9hY3BpL2libS92aWRlbworCWVjaG8gYXV0b19lbmFibGUgPiAvcHJvYy9hY3BpL2libS92aWRlbworCWVjaG8gYXV0b19kaXNhYmxlID4gL3Byb2MvYWNwaS9pYm0vdmlkZW8KKwllY2hvIGV4cGFuZF90b2dnbGUgPiAvcHJvYy9hY3BpL2libS92aWRlbworCWVjaG8gdmlkZW9fc3dpdGNoID4gL3Byb2MvYWNwaS9pYm0vdmlkZW8KKworTk9URTogQWNjZXNzIHRvIHRoaXMgZmVhdHVyZSBpcyByZXN0cmljdGVkIHRvIHByb2Nlc3NlcyBvd25pbmcgdGhlCitDQVBfU1lTX0FETUlOIGNhcGFiaWxpdHkgZm9yIHNhZmV0eSByZWFzb25zLCBhcyBpdCBjYW4gaW50ZXJhY3QgYmFkbHkKK2Vub3VnaCB3aXRoIHNvbWUgdmVyc2lvbnMgb2YgWC5vcmcgdG8gY3Jhc2ggaXQuCisKK0VhY2ggdmlkZW8gb3V0cHV0IGRldmljZSBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZCBpbmRpdmlkdWFsbHkuCitSZWFkaW5nIC9wcm9jL2FjcGkvaWJtL3ZpZGVvIHNob3dzIHRoZSBzdGF0dXMgb2YgZWFjaCBkZXZpY2UuCisKK0F1dG9tYXRpYyB2aWRlbyBzd2l0Y2hpbmcgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuICBXaGVuIGF1dG9tYXRpYwordmlkZW8gc3dpdGNoaW5nIGlzIGVuYWJsZWQsIGNlcnRhaW4gZXZlbnRzIChlLmcuIG9wZW5pbmcgdGhlIGxpZCwKK2RvY2tpbmcgb3IgdW5kb2NraW5nKSBjYXVzZSB0aGUgdmlkZW8gb3V0cHV0IGRldmljZSB0byBjaGFuZ2UKK2F1dG9tYXRpY2FsbHkuIFdoaWxlIHRoaXMgY2FuIGJlIHVzZWZ1bCwgaXQgYWxzbyBjYXVzZXMgZmxpY2tlcmluZworYW5kLCBvbiB0aGUgWDQwLCB2aWRlbyBjb3JydXB0aW9uLiBCeSBkaXNhYmxpbmcgYXV0b21hdGljIHN3aXRjaGluZywKK3RoZSBmbGlja2VyaW5nIG9yIHZpZGVvIGNvcnJ1cHRpb24gY2FuIGJlIGF2b2lkZWQuCisKK1RoZSB2aWRlb19zd2l0Y2ggY29tbWFuZCBjeWNsZXMgdGhyb3VnaCB0aGUgYXZhaWxhYmxlIHZpZGVvIG91dHB1dHMKKyhpdCBzaW11bGF0ZXMgdGhlIGJlaGF2aW9yIG9mIEZuLUY3KS4KKworVmlkZW8gZXhwYW5zaW9uIGNhbiBiZSB0b2dnbGVkIHRocm91Z2ggdGhpcyBmZWF0dXJlLiBUaGlzIGNvbnRyb2xzCit3aGV0aGVyIHRoZSBkaXNwbGF5IGlzIGV4cGFuZGVkIHRvIGZpbGwgdGhlIGVudGlyZSBMQ0Qgc2NyZWVuIHdoZW4gYQorbW9kZSB3aXRoIGxlc3MgdGhhbiBmdWxsIHJlc29sdXRpb24gaXMgdXNlZC4gTm90ZSB0aGF0IHRoZSBjdXJyZW50Cit2aWRlbyBleHBhbnNpb24gc3RhdHVzIGNhbm5vdCBiZSBkZXRlcm1pbmVkIHRocm91Z2ggdGhpcyBmZWF0dXJlLgorCitOb3RlIHRoYXQgb24gbWFueSBtb2RlbHMgKHBhcnRpY3VsYXJseSB0aG9zZSB1c2luZyBSYWRlb24gZ3JhcGhpY3MKK2NoaXBzKSB0aGUgWCBkcml2ZXIgY29uZmlndXJlcyB0aGUgdmlkZW8gY2FyZCBpbiBhIHdheSB3aGljaCBwcmV2ZW50cworRm4tRjcgZnJvbSB3b3JraW5nLiBUaGlzIGFsc28gZGlzYWJsZXMgdGhlIHZpZGVvIG91dHB1dCBzd2l0Y2hpbmcKK2ZlYXR1cmVzIG9mIHRoaXMgZHJpdmVyLCBhcyBpdCB1c2VzIHRoZSBzYW1lIEFDUEkgbWV0aG9kcyBhcworRm4tRjcuIFZpZGVvIHN3aXRjaGluZyBvbiB0aGUgY29uc29sZSBzaG91bGQgc3RpbGwgd29yay4KKworVVBEQVRFOiByZWZlciB0byBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDAwCisKKworVGhpbmtMaWdodCBjb250cm9sCistLS0tLS0tLS0tLS0tLS0tLS0KKworcHJvY2ZzOiAvcHJvYy9hY3BpL2libS9saWdodAorc3lzZnMgYXR0cmlidXRlczogYXMgcGVyIExFRCBjbGFzcywgZm9yIHRoZSAidHBhY3BpOjp0aGlua2xpZ2h0IiBMRUQKKworcHJvY2ZzIG5vdGVzOgorCitUaGUgVGhpbmtMaWdodCBzdGF0dXMgY2FuIGJlIHJlYWQgYW5kIHNldCB0aHJvdWdoIHRoZSBwcm9jZnMgaW50ZXJmYWNlLiAgQQorZmV3IG1vZGVscyB3aGljaCBkbyBub3QgbWFrZSB0aGUgc3RhdHVzIGF2YWlsYWJsZSB3aWxsIHNob3cgdGhlIFRoaW5rTGlnaHQKK3N0YXR1cyBhcyAidW5rbm93biIuIFRoZSBhdmFpbGFibGUgY29tbWFuZHMgYXJlOgorCisJZWNobyBvbiAgPiAvcHJvYy9hY3BpL2libS9saWdodAorCWVjaG8gb2ZmID4gL3Byb2MvYWNwaS9pYm0vbGlnaHQKKworc3lzZnMgbm90ZXM6CisKK1RoZSBUaGlua0xpZ2h0IHN5c2ZzIGludGVyZmFjZSBpcyBkb2N1bWVudGVkIGJ5IHRoZSBMRUQgY2xhc3MKK2RvY3VtZW50YXRpb24sIGluIERvY3VtZW50YXRpb24vbGVkcy9sZWRzLWNsYXNzLnR4dC4gIFRoZSBUaGlua0xpZ2h0IExFRCBuYW1lCitpcyAidHBhY3BpOjp0aGlua2xpZ2h0Ii4KKworRHVlIHRvIGxpbWl0YXRpb25zIGluIHRoZSBzeXNmcyBMRUQgY2xhc3MsIGlmIHRoZSBzdGF0dXMgb2YgdGhlIFRoaW5rTGlnaHQKK2Nhbm5vdCBiZSByZWFkIG9yIGlmIGl0IGlzIHVua25vd24sIHRoaW5rcGFkLWFjcGkgd2lsbCByZXBvcnQgaXQgYXMgIm9mZiIuCitJdCBpcyBpbXBvc3NpYmxlIHRvIGtub3cgaWYgdGhlIHN0YXR1cyByZXR1cm5lZCB0aHJvdWdoIHN5c2ZzIGlzIHZhbGlkLgorCisKK0NNT1MvVUNNUyBjb250cm9sCistLS0tLS0tLS0tLS0tLS0tLQorCitwcm9jZnM6IC9wcm9jL2FjcGkvaWJtL2Ntb3MKK3N5c2ZzIGRldmljZSBhdHRyaWJ1dGU6IGNtb3NfY29tbWFuZAorCitUaGlzIGZlYXR1cmUgaXMgbW9zdGx5IHVzZWQgaW50ZXJuYWxseSBieSB0aGUgQUNQSSBmaXJtd2FyZSB0byBrZWVwIHRoZSBsZWdhY3kKK0NNT1MgTlZSQU0gYml0cyBpbiBzeW5jIHdpdGggdGhlIGN1cnJlbnQgbWFjaGluZSBzdGF0ZSwgYW5kIHRvIHJlY29yZCB0aGlzCitzdGF0ZSBzbyB0aGF0IHRoZSBUaGlua1BhZCB3aWxsIHJldGFpbiBzdWNoIHNldHRpbmdzIGFjcm9zcyByZWJvb3RzLgorCitTb21lIG9mIHRoZXNlIGNvbW1hbmRzIGFjdHVhbGx5IHBlcmZvcm0gYWN0aW9ucyBpbiBzb21lIFRoaW5rUGFkIG1vZGVscywgYnV0Cit0aGlzIGlzIGV4cGVjdGVkIHRvIGRpc2FwcGVhciBtb3JlIGFuZCBtb3JlIGluIG5ld2VyIG1vZGVscy4gIEFzIGFuIGV4YW1wbGUsIGluCithIFQ0MyBhbmQgaW4gYSBYNDAsIGNvbW1hbmRzIDEyIGFuZCAxMyBzdGlsbCBjb250cm9sIHRoZSBUaGlua0xpZ2h0IHN0YXRlIGZvcgorcmVhbCwgYnV0IGNvbW1hbmRzIDAgdG8gMiBkb24ndCBjb250cm9sIHRoZSBtaXhlciBhbnltb3JlICh0aGV5IGhhdmUgYmVlbgorcGhhc2VkIG91dCkgYW5kIGp1c3QgdXBkYXRlIHRoZSBOVlJBTS4KKworVGhlIHJhbmdlIG9mIHZhbGlkIGNtb3MgY29tbWFuZCBudW1iZXJzIGlzIDAgdG8gMjEsIGJ1dCBub3QgYWxsIGhhdmUgYW4KK2VmZmVjdCBhbmQgdGhlIGJlaGF2aW9yIHZhcmllcyBmcm9tIG1vZGVsIHRvIG1vZGVsLiAgSGVyZSBpcyB0aGUgYmVoYXZpb3IKK29uIHRoZSBYNDAgKHRwYiBpcyB0aGUgVGhpbmtQYWQgQnV0dG9ucyB1dGlsaXR5KToKKworCTAgLSBSZWxhdGVkIHRvICJWb2x1bWUgZG93biIga2V5IHByZXNzCisJMSAtIFJlbGF0ZWQgdG8gIlZvbHVtZSB1cCIga2V5IHByZXNzCisJMiAtIFJlbGF0ZWQgdG8gIk11dGUgb24iIGtleSBwcmVzcworCTMgLSBSZWxhdGVkIHRvICJBY2Nlc3MgSUJNIiBrZXkgcHJlc3MKKwk0IC0gUmVsYXRlZCB0byAiTENEIGJyaWdodG5lc3MgdXAiIGtleSBwcmVzcworCTUgLSBSZWxhdGVkIHRvICJMQ0QgYnJpZ2h0bmVzcyBkb3duIiBrZXkgcHJlc3MKKwkxMSAtIFJlbGF0ZWQgdG8gInRvZ2dsZSBzY3JlZW4gZXhwYW5zaW9uIiBrZXkgcHJlc3MvZnVuY3Rpb24KKwkxMiAtIFJlbGF0ZWQgdG8gIlRoaW5rTGlnaHQgb24iCisJMTMgLSBSZWxhdGVkIHRvICJUaGlua0xpZ2h0IG9mZiIKKwkxNCAtIFJlbGF0ZWQgdG8gIlRoaW5rTGlnaHQiIGtleSBwcmVzcyAodG9nZ2xlIFRoaW5rTGlnaHQpCisKK1RoZSBjbW9zIGNvbW1hbmQgaW50ZXJmYWNlIGlzIHByb25lIHRvIGZpcm13YXJlIHNwbGl0LWJyYWluIHByb2JsZW1zLCBhcworaW4gbmV3ZXIgVGhpbmtQYWRzIGl0IGlzIGp1c3QgYSBjb21wYXRpYmlsaXR5IGxheWVyLiAgRG8gbm90IHVzZSBpdCwgaXQgaXMKK2V4cG9ydGVkIGp1c3QgYXMgYSBkZWJ1ZyB0b29sLgorCisKK0xFRCBjb250cm9sCistLS0tLS0tLS0tLQorCitwcm9jZnM6IC9wcm9jL2FjcGkvaWJtL2xlZAorc3lzZnMgYXR0cmlidXRlczogYXMgcGVyIExFRCBjbGFzcywgc2VlIGJlbG93IGZvciBuYW1lcworCitTb21lIG9mIHRoZSBMRUQgaW5kaWNhdG9ycyBjYW4gYmUgY29udHJvbGxlZCB0aHJvdWdoIHRoaXMgZmVhdHVyZS4gIE9uCitzb21lIG9sZGVyIFRoaW5rUGFkIG1vZGVscywgaXQgaXMgcG9zc2libGUgdG8gcXVlcnkgdGhlIHN0YXR1cyBvZiB0aGUKK0xFRCBpbmRpY2F0b3JzIGFzIHdlbGwuICBOZXdlciBUaGlua1BhZHMgY2Fubm90IHF1ZXJ5IHRoZSByZWFsIHN0YXR1cworb2YgdGhlIExFRCBpbmRpY2F0b3JzLgorCitCZWNhdXNlIG1pc3VzZSBvZiB0aGUgTEVEcyBjb3VsZCBpbmR1Y2UgYW4gdW5hd2FyZSB1c2VyIHRvIHBlcmZvcm0KK2Rhbmdlcm91cyBhY3Rpb25zIChsaWtlIHVuZG9ja2luZyBvciBlamVjdGluZyBhIGJheSBkZXZpY2Ugd2hpbGUgdGhlCitidXNlcyBhcmUgc3RpbGwgYWN0aXZlKSwgb3IgbWFzayBhbiBpbXBvcnRhbnQgYWxhcm0gKHN1Y2ggYXMgYSBuZWFybHkKK2VtcHR5IGJhdHRlcnksIG9yIGEgYnJva2VuIGJhdHRlcnkpLCBhY2Nlc3MgdG8gbW9zdCBMRURzIGlzCityZXN0cmljdGVkLgorCitVbnJlc3RyaWN0ZWQgYWNjZXNzIHRvIGFsbCBMRURzIHJlcXVpcmVzIHRoYXQgdGhpbmtwYWQtYWNwaSBiZQorY29tcGlsZWQgd2l0aCB0aGUgQ09ORklHX1RISU5LUEFEX0FDUElfVU5TQUZFX0xFRFMgb3B0aW9uIGVuYWJsZWQuCitEaXN0cmlidXRpb25zIG11c3QgbmV2ZXIgZW5hYmxlIHRoaXMgb3B0aW9uLiAgSW5kaXZpZHVhbCB1c2VycyB0aGF0CithcmUgYXdhcmUgb2YgdGhlIGNvbnNlcXVlbmNlcyBhcmUgd2VsY29tZSB0byBlbmFibGluZyBpdC4KKworQXVkaW8gbXV0ZSBhbmQgbWljcm9waG9uZSBtdXRlIExFRHMgYXJlIHN1cHBvcnRlZCwgYnV0IGN1cnJlbnRseSBub3QKK3Zpc2libGUgdG8gdXNlcnNwYWNlLiBUaGV5IGFyZSB1c2VkIGJ5IHRoZSBzbmQtaGRhLWludGVsIGF1ZGlvIGRyaXZlci4KKworcHJvY2ZzIG5vdGVzOgorCitUaGUgYXZhaWxhYmxlIGNvbW1hbmRzIGFyZToKKworCWVjaG8gJzxMRUQgbnVtYmVyPiBvbicgPi9wcm9jL2FjcGkvaWJtL2xlZAorCWVjaG8gJzxMRUQgbnVtYmVyPiBvZmYnID4vcHJvYy9hY3BpL2libS9sZWQKKwllY2hvICc8TEVEIG51bWJlcj4gYmxpbmsnID4vcHJvYy9hY3BpL2libS9sZWQKKworVGhlIDxMRUQgbnVtYmVyPiByYW5nZSBpcyAwIHRvIDE1LiBUaGUgc2V0IG9mIExFRHMgdGhhdCBjYW4gYmUKK2NvbnRyb2xsZWQgdmFyaWVzIGZyb20gbW9kZWwgdG8gbW9kZWwuIEhlcmUgaXMgdGhlIGNvbW1vbiBUaGlua1BhZAorbWFwcGluZzoKKworCTAgLSBwb3dlcgorCTEgLSBiYXR0ZXJ5IChvcmFuZ2UpCisJMiAtIGJhdHRlcnkgKGdyZWVuKQorCTMgLSBVbHRyYUJhc2UvZG9jaworCTQgLSBVbHRyYUJheQorCTUgLSBVbHRyYUJhc2UgYmF0dGVyeSBzbG90CisJNiAtICh1bmtub3duKQorCTcgLSBzdGFuZGJ5CisJOCAtIGRvY2sgc3RhdHVzIDEKKwk5IC0gZG9jayBzdGF0dXMgMgorCTEwLCAxMSAtICh1bmtub3duKQorCTEyIC0gdGhpbmt2YW50YWdlCisJMTMsIDE0LCAxNSAtICh1bmtub3duKQorCitBbGwgb2YgdGhlIGFib3ZlIGNhbiBiZSB0dXJuZWQgb24gYW5kIG9mZiBhbmQgY2FuIGJlIG1hZGUgdG8gYmxpbmsuCisKK3N5c2ZzIG5vdGVzOgorCitUaGUgVGhpbmtQYWQgTEVEIHN5c2ZzIGludGVyZmFjZSBpcyBkZXNjcmliZWQgaW4gZGV0YWlsIGJ5IHRoZSBMRUQgY2xhc3MKK2RvY3VtZW50YXRpb24sIGluIERvY3VtZW50YXRpb24vbGVkcy9sZWRzLWNsYXNzLnR4dC4KKworVGhlIExFRHMgYXJlIG5hbWVkIChpbiBMRUQgSUQgb3JkZXIsIGZyb20gMCB0byAxMik6CisidHBhY3BpOjpwb3dlciIsICJ0cGFjcGk6b3JhbmdlOmJhdHQiLCAidHBhY3BpOmdyZWVuOmJhdHQiLAorInRwYWNwaTo6ZG9ja19hY3RpdmUiLCAidHBhY3BpOjpiYXlfYWN0aXZlIiwgInRwYWNwaTo6ZG9ja19iYXR0IiwKKyJ0cGFjcGk6OnVua25vd25fbGVkIiwgInRwYWNwaTo6c3RhbmRieSIsICJ0cGFjcGk6OmRvY2tfc3RhdHVzMSIsCisidHBhY3BpOjpkb2NrX3N0YXR1czIiLCAidHBhY3BpOjp1bmtub3duX2xlZDIiLCAidHBhY3BpOjp1bmtub3duX2xlZDMiLAorInRwYWNwaTo6dGhpbmt2YW50YWdlIi4KKworRHVlIHRvIGxpbWl0YXRpb25zIGluIHRoZSBzeXNmcyBMRUQgY2xhc3MsIGlmIHRoZSBzdGF0dXMgb2YgdGhlIExFRAoraW5kaWNhdG9ycyBjYW5ub3QgYmUgcmVhZCBkdWUgdG8gYW4gZXJyb3IsIHRoaW5rcGFkLWFjcGkgd2lsbCByZXBvcnQgaXQgYXMKK2EgYnJpZ2h0bmVzcyBvZiB6ZXJvIChzYW1lIGFzIExFRCBvZmYpLgorCitJZiB0aGUgdGhpbmtwYWQgZmlybXdhcmUgZG9lc24ndCBzdXBwb3J0IHJlYWRpbmcgdGhlIGN1cnJlbnQgc3RhdHVzLAordHJ5aW5nIHRvIHJlYWQgdGhlIGN1cnJlbnQgTEVEIGJyaWdodG5lc3Mgd2lsbCBqdXN0IHJldHVybiB3aGF0ZXZlcgorYnJpZ2h0bmVzcyB3YXMgbGFzdCB3cml0dGVuIHRvIHRoYXQgYXR0cmlidXRlLgorCitUaGVzZSBMRURzIGNhbiBibGluayB1c2luZyBoYXJkd2FyZSBhY2NlbGVyYXRpb24uICBUbyByZXF1ZXN0IHRoYXQgYQorVGhpbmtQYWQgaW5kaWNhdG9yIExFRCBzaG91bGQgYmxpbmsgaW4gaGFyZHdhcmUgYWNjZWxlcmF0ZWQgbW9kZSwgdXNlIHRoZQorInRpbWVyIiB0cmlnZ2VyLCBhbmQgbGVhdmUgdGhlIGRlbGF5X29uIGFuZCBkZWxheV9vZmYgcGFyYW1ldGVycyBzZXQgdG8KK3plcm8gKHRvIHJlcXVlc3QgaGFyZHdhcmUgYWNjZWxlcmF0aW9uIGF1dG9kZXRlY3Rpb24pLgorCitMRURzIHRoYXQgYXJlIGtub3duIG5vdCB0byBleGlzdCBpbiBhIGdpdmVuIFRoaW5rUGFkIG1vZGVsIGFyZSBub3QKK21hZGUgYXZhaWxhYmxlIHRocm91Z2ggdGhlIHN5c2ZzIGludGVyZmFjZS4gIElmIHlvdSBoYXZlIGEgZG9jayBhbmQgeW91Citub3RpY2UgdGhlcmUgYXJlIExFRHMgbGlzdGVkIGZvciB5b3VyIFRoaW5rUGFkIHRoYXQgZG8gbm90IGV4aXN0IChhbmQKK2FyZSBub3QgaW4gdGhlIGRvY2spLCBvciBpZiB5b3Ugbm90aWNlIHRoYXQgdGhlcmUgYXJlIG1pc3NpbmcgTEVEcywKK2EgcmVwb3J0IHRvIGlibS1hY3BpLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldCBpcyBhcHByZWNpYXRlZC4KKworCitBQ1BJIHNvdW5kcyAtLSAvcHJvYy9hY3BpL2libS9iZWVwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBCRUVQIG1ldGhvZCBpcyB1c2VkIGludGVybmFsbHkgYnkgdGhlIEFDUEkgZmlybXdhcmUgdG8gcHJvdmlkZQorYXVkaWJsZSBhbGVydHMgaW4gdmFyaW91cyBzaXR1YXRpb25zLiBUaGlzIGZlYXR1cmUgYWxsb3dzIHRoZSBzYW1lCitzb3VuZHMgdG8gYmUgdHJpZ2dlcmVkIG1hbnVhbGx5LgorCitUaGUgY29tbWFuZHMgYXJlIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyIG51bWJlcnM6CisKKwllY2hvIDxudW1iZXI+ID4vcHJvYy9hY3BpL2libS9iZWVwCisKK1RoZSB2YWxpZCA8bnVtYmVyPiByYW5nZSBpcyAwIHRvIDE3LiBOb3QgYWxsIG51bWJlcnMgdHJpZ2dlciBzb3VuZHMKK2FuZCB0aGUgc291bmRzIHZhcnkgZnJvbSBtb2RlbCB0byBtb2RlbC4gSGVyZSBpcyB0aGUgYmVoYXZpb3Igb24gdGhlCitYNDA6CisKKwkwIC0gc3RvcCBhIHNvdW5kIGluIHByb2dyZXNzIChidXQgdXNlIDE3IHRvIHN0b3AgMTYpCisJMiAtIHR3byBiZWVwcywgcGF1c2UsIHRoaXJkIGJlZXAgKCJsb3cgYmF0dGVyeSIpCisJMyAtIHNpbmdsZSBiZWVwCisJNCAtIGhpZ2gsIGZvbGxvd2VkIGJ5IGxvdy1waXRjaGVkIGJlZXAgKCJ1bmFibGUiKQorCTUgLSBzaW5nbGUgYmVlcAorCTYgLSB2ZXJ5IGhpZ2gsIGZvbGxvd2VkIGJ5IGhpZ2gtcGl0Y2hlZCBiZWVwICgiQUMvREMiKQorCTcgLSBoaWdoLXBpdGNoZWQgYmVlcAorCTkgLSB0aHJlZSBzaG9ydCBiZWVwcworCTEwIC0gdmVyeSBsb25nIGJlZXAKKwkxMiAtIGxvdy1waXRjaGVkIGJlZXAKKwkxNSAtIHRocmVlIGhpZ2gtcGl0Y2hlZCBiZWVwcyByZXBlYXRpbmcgY29uc3RhbnRseSwgc3RvcCB3aXRoIDAKKwkxNiAtIG9uZSBtZWRpdW0tcGl0Y2hlZCBiZWVwIHJlcGVhdGluZyBjb25zdGFudGx5LCBzdG9wIHdpdGggMTcKKwkxNyAtIHN0b3AgMTYKKworCitUZW1wZXJhdHVyZSBzZW5zb3JzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Byb2NmczogL3Byb2MvYWNwaS9pYm0vdGhlcm1hbAorc3lzZnMgZGV2aWNlIGF0dHJpYnV0ZXM6IChod21vbiAidGhpbmtwYWQiKSB0ZW1wKl9pbnB1dAorCitNb3N0IFRoaW5rUGFkcyBpbmNsdWRlIHNpeCBvciBtb3JlIHNlcGFyYXRlIHRlbXBlcmF0dXJlIHNlbnNvcnMgYnV0IG9ubHkKK2V4cG9zZSB0aGUgQ1BVIHRlbXBlcmF0dXJlIHRocm91Z2ggdGhlIHN0YW5kYXJkIEFDUEkgbWV0aG9kcy4gIFRoaXMKK2ZlYXR1cmUgc2hvd3MgcmVhZGluZ3MgZnJvbSB1cCB0byBlaWdodCBkaWZmZXJlbnQgc2Vuc29ycyBvbiBvbGRlcgorVGhpbmtQYWRzLCBhbmQgdXAgdG8gc2l4dGVlbiBkaWZmZXJlbnQgc2Vuc29ycyBvbiBuZXdlciBUaGlua1BhZHMuCisKK0ZvciBleGFtcGxlLCBvbiB0aGUgWDQwLCBhIHR5cGljYWwgb3V0cHV0IG1heSBiZToKK3RlbXBlcmF0dXJlczogICA0MiA0MiA0NSA0MSAzNiAtMTI4IDMzIC0xMjgKKworT24gdGhlIFQ0My9wLCBhIHR5cGljYWwgb3V0cHV0IG1heSBiZToKK3RlbXBlcmF0dXJlczogICA0OCA0OCAzNiA1MiAzOCAtMTI4IDMxIC0xMjggNDggNTIgNDggLTEyOCAtMTI4IC0xMjggLTEyOCAtMTI4CisKK1RoZSBtYXBwaW5nIG9mIHRoZXJtYWwgc2Vuc29ycyB0byBwaHlzaWNhbCBsb2NhdGlvbnMgdmFyaWVzIGRlcGVuZGluZyBvbgorc3lzdGVtLWJvYXJkIG1vZGVsIChhbmQgdGh1cywgb24gVGhpbmtQYWQgbW9kZWwpLgorCitodHRwOi8vdGhpbmt3aWtpLm9yZy93aWtpL1RoZXJtYWxfU2Vuc29ycyBpcyBhIHB1YmxpYyB3aWtpIHBhZ2UgdGhhdAordHJpZXMgdG8gdHJhY2sgZG93biB0aGVzZSBsb2NhdGlvbnMgZm9yIHZhcmlvdXMgbW9kZWxzLgorCitNb3N0IChuZXdlcj8pIG1vZGVscyBzZWVtIHRvIGZvbGxvdyB0aGlzIHBhdHRlcm46CisKKzE6ICBDUFUKKzI6ICAoZGVwZW5kcyBvbiBtb2RlbCkKKzM6ICAoZGVwZW5kcyBvbiBtb2RlbCkKKzQ6ICBHUFUKKzU6ICBNYWluIGJhdHRlcnk6IG1haW4gc2Vuc29yCis2OiAgQmF5IGJhdHRlcnk6IG1haW4gc2Vuc29yCis3OiAgTWFpbiBiYXR0ZXJ5OiBzZWNvbmRhcnkgc2Vuc29yCis4OiAgQmF5IGJhdHRlcnk6IHNlY29uZGFyeSBzZW5zb3IKKzktMTU6IChkZXBlbmRzIG9uIG1vZGVsKQorCitGb3IgdGhlIFI1MSAoc291cmNlOiBUaG9tYXMgR3J1YmVyKToKKzI6ICBNaW5pLVBDSQorMzogIEludGVybmFsIEhERAorCitGb3IgdGhlIFQ0MywgVDQzL3AgKHNvdXJjZTogU2htaWRvYXgvVGhpbmt3aWtpLm9yZykKK2h0dHA6Ly90aGlua3dpa2kub3JnL3dpa2kvVGhlcm1hbF9TZW5zb3JzI1RoaW5rUGFkX1Q0My4yQ19UNDNwCisyOiAgU3lzdGVtIGJvYXJkLCBsZWZ0IHNpZGUgKG5lYXIgUENNQ0lBIHNsb3QpLCByZXBvcnRlZCBhcyBIREFQUyB0ZW1wCiszOiAgUENNQ0lBIHNsb3QKKzk6ICBNQ0ggKG5vcnRoYnJpZGdlKSB0byBEUkFNIEJ1cworMTA6IENsb2NrLWdlbmVyYXRvciwgbWluaS1wY2kgY2FyZCBhbmQgSUNIIChzb3V0aGJyaWRnZSksIHVuZGVyIE1pbmktUENJCisgICAgY2FyZCwgdW5kZXIgdG91Y2hwYWQKKzExOiBQb3dlciByZWd1bGF0b3IsIHVuZGVyc2lkZSBvZiBzeXN0ZW0gYm9hcmQsIGJlbG93IEYyIGtleQorCitUaGUgQTMxIGhhcyBhIHZlcnkgYXR5cGljYWwgbGF5b3V0IGZvciB0aGUgdGhlcm1hbCBzZW5zb3JzCisoc291cmNlOiBNaWxvcyBQb3BvdmljLCBodHRwOi8vdGhpbmt3aWtpLm9yZy93aWtpL1RoZXJtYWxfU2Vuc29ycyNUaGlua1BhZF9BMzEpCisxOiAgQ1BVCisyOiAgTWFpbiBCYXR0ZXJ5OiBtYWluIHNlbnNvcgorMzogIFBvd2VyIENvbnZlcnRlcgorNDogIEJheSBCYXR0ZXJ5OiBtYWluIHNlbnNvcgorNTogIE1DSCAobm9ydGhicmlkZ2UpCis2OiAgUENNQ0lBL2FtYmllbnQKKzc6ICBNYWluIEJhdHRlcnk6IHNlY29uZGFyeSBzZW5zb3IKKzg6ICBCYXkgQmF0dGVyeTogc2Vjb25kYXJ5IHNlbnNvcgorCisKK1Byb2NmcyBub3RlczoKKwlSZWFkaW5ncyBmcm9tIHNlbnNvcnMgdGhhdCBhcmUgbm90IGF2YWlsYWJsZSByZXR1cm4gLTEyOC4KKwlObyBjb21tYW5kcyBjYW4gYmUgd3JpdHRlbiB0byB0aGlzIGZpbGUuCisKK1N5c2ZzIG5vdGVzOgorCVNlbnNvcnMgdGhhdCBhcmUgbm90IGF2YWlsYWJsZSByZXR1cm4gdGhlIEVOWElPIGVycm9yLiAgVGhpcworCXN0YXR1cyBtYXkgY2hhbmdlIGF0IHJ1bnRpbWUsIGFzIHRoZXJlIGFyZSBob3RwbHVnIHRoZXJtYWwKKwlzZW5zb3JzLCBsaWtlIHRob3NlIGluc2lkZSB0aGUgYmF0dGVyaWVzIGFuZCBkb2Nrcy4KKworCXRoaW5rcGFkLWFjcGkgdGhlcm1hbCBzZW5zb3JzIGFyZSByZXBvcnRlZCB0aHJvdWdoIHRoZSBod21vbgorCXN1YnN5c3RlbSwgYW5kIGZvbGxvdyBhbGwgb2YgdGhlIGh3bW9uIGd1aWRlbGluZXMgYXQKKwlEb2N1bWVudGF0aW9uL2h3bW9uLgorCitFWFBFUklNRU5UQUw6IEVtYmVkZGVkIGNvbnRyb2xsZXIgcmVnaXN0ZXIgZHVtcAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBmZWF0dXJlIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgdGhpbmtwYWQgZHJpdmVyIGFueW1vcmUuCitJbnN0ZWFkIHRoZSBFQyBjYW4gYmUgYWNjZXNzZWQgdGhyb3VnaCAvc3lzL2tlcm5lbC9kZWJ1Zy9lYyB3aXRoCithIHVzZXJzcGFjZSB0b29sIHdoaWNoIGNhbiBiZSBmb3VuZCBoZXJlOgorZnRwOi8vZnRwLnN1c2UuY29tL3B1Yi9wZW9wbGUvdHJlbm4vc291cmNlcy9lYworCitVc2UgaXQgdG8gZGV0ZXJtaW5lIHRoZSByZWdpc3RlciBob2xkaW5nIHRoZSBmYW4KK3NwZWVkIG9uIHNvbWUgbW9kZWxzLiBUbyBkbyB0aGF0LCBkbyB0aGUgZm9sbG93aW5nOgorCS0gbWFrZSBzdXJlIHRoZSBiYXR0ZXJ5IGlzIGZ1bGx5IGNoYXJnZWQKKwktIG1ha2Ugc3VyZSB0aGUgZmFuIGlzIHJ1bm5pbmcKKwktIHVzZSBhYm92ZSBtZW50aW9uZWQgdG9vbCB0byByZWFkIG91dCB0aGUgRUMKKworT2Z0ZW4gZmFuIGFuZCB0ZW1wZXJhdHVyZSB2YWx1ZXMgdmFyeSBiZXR3ZWVuCityZWFkaW5ncy4gU2luY2UgdGVtcGVyYXR1cmVzIGRvbid0IGNoYW5nZSB2YXJ5IGZhc3QsIHlvdSBjYW4gdGFrZQorc2V2ZXJhbCBxdWljayBkdW1wcyB0byBlbGltaW5hdGUgdGhlbS4KKworWW91IGNhbiB1c2UgYSBzaW1pbGFyIG1ldGhvZCB0byBmaWd1cmUgb3V0IHRoZSBtZWFuaW5nIG9mIG90aGVyCitlbWJlZGRlZCBjb250cm9sbGVyIHJlZ2lzdGVycyAtIGUuZy4gbWFrZSBzdXJlIG5vdGhpbmcgZWxzZSBjaGFuZ2VzCitleGNlcHQgdGhlIGNoYXJnaW5nIG9yIGRpc2NoYXJnaW5nIGJhdHRlcnkgdG8gZGV0ZXJtaW5lIHdoaWNoCityZWdpc3RlcnMgY29udGFpbiB0aGUgY3VycmVudCBiYXR0ZXJ5IGNhcGFjaXR5LCBldGMuIElmIHlvdSBleHBlcmltZW50Cit3aXRoIHRoaXMsIGRvIHNlbmQgbWUgeW91ciByZXN1bHRzIChpbmNsdWRpbmcgc29tZSBjb21wbGV0ZSBkdW1wcyB3aXRoCithIGRlc2NyaXB0aW9uIG9mIHRoZSBjb25kaXRpb25zIHdoZW4gdGhleSB3ZXJlIHRha2VuLikKKworCitMQ0QgYnJpZ2h0bmVzcyBjb250cm9sCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Byb2NmczogL3Byb2MvYWNwaS9pYm0vYnJpZ2h0bmVzcworc3lzZnMgYmFja2xpZ2h0IGRldmljZSAidGhpbmtwYWRfc2NyZWVuIgorCitUaGlzIGZlYXR1cmUgYWxsb3dzIHNvZnR3YXJlIGNvbnRyb2wgb2YgdGhlIExDRCBicmlnaHRuZXNzIG9uIFRoaW5rUGFkCittb2RlbHMgd2hpY2ggZG9uJ3QgaGF2ZSBhIGhhcmR3YXJlIGJyaWdodG5lc3Mgc2xpZGVyLgorCitJdCBoYXMgc29tZSBsaW1pdGF0aW9uczogdGhlIExDRCBiYWNrbGlnaHQgY2Fubm90IGJlIGFjdHVhbGx5IHR1cm5lZAorb24gb3Igb2ZmIGJ5IHRoaXMgaW50ZXJmYWNlLCBpdCBqdXN0IGNvbnRyb2xzIHRoZSBiYWNrbGlnaHQgYnJpZ2h0bmVzcworbGV2ZWwuCisKK09uIElCTSAoYW5kIHNvbWUgb2YgdGhlIGVhcmxpZXIgTGVub3ZvKSBUaGlua1BhZHMsIHRoZSBiYWNrbGlnaHQgY29udHJvbAoraGFzIGVpZ2h0IGJyaWdodG5lc3MgbGV2ZWxzLCByYW5naW5nIGZyb20gMCB0byA3LiAgU29tZSBvZiB0aGUgbGV2ZWxzCittYXkgbm90IGJlIGRpc3RpbmN0LiAgTGF0ZXIgTGVub3ZvIG1vZGVscyB0aGF0IGltcGxlbWVudCB0aGUgQUNQSQorZGlzcGxheSBiYWNrbGlnaHQgYnJpZ2h0bmVzcyBjb250cm9sIG1ldGhvZHMgaGF2ZSAxNiBsZXZlbHMsIHJhbmdpbmcKK2Zyb20gMCB0byAxNS4KKworRm9yIElCTSBUaGlua1BhZHMsIHRoZXJlIGFyZSB0d28gaW50ZXJmYWNlcyB0byB0aGUgZmlybXdhcmUgZm9yIGRpcmVjdAorYnJpZ2h0bmVzcyBjb250cm9sLCBFQyBhbmQgVUNNUyAob3IgQ01PUykuICBUbyBzZWxlY3Qgd2hpY2ggb25lIHNob3VsZCBiZQordXNlZCwgdXNlIHRoZSBicmlnaHRuZXNzX21vZGUgbW9kdWxlIHBhcmFtZXRlcjogYnJpZ2h0bmVzc19tb2RlPTEgc2VsZWN0cworRUMgbW9kZSwgYnJpZ2h0bmVzc19tb2RlPTIgc2VsZWN0cyBVQ01TIG1vZGUsIGJyaWdodG5lc3NfbW9kZT0zIHNlbGVjdHMgRUMKK21vZGUgd2l0aCBOVlJBTSBiYWNraW5nIChzbyB0aGF0IGJyaWdodG5lc3MgY2hhbmdlcyBhcmUgcmVtZW1iZXJlZCBhY3Jvc3MKK3NodXRkb3duL3JlYm9vdCkuCisKK1RoZSBkcml2ZXIgdHJpZXMgdG8gc2VsZWN0IHdoaWNoIGludGVyZmFjZSB0byB1c2UgZnJvbSBhIHRhYmxlIG9mCitkZWZhdWx0cyBmb3IgZWFjaCBUaGlua1BhZCBtb2RlbC4gIElmIGl0IG1ha2VzIGEgd3JvbmcgY2hvaWNlLCBwbGVhc2UKK3JlcG9ydCB0aGlzIGFzIGEgYnVnLCBzbyB0aGF0IHdlIGNhbiBmaXggaXQuCisKK0xlbm92byBUaGlua1BhZHMgb25seSBzdXBwb3J0IGJyaWdodG5lc3NfbW9kZT0yIChVQ01TKS4KKworV2hlbiBkaXNwbGF5IGJhY2tsaWdodCBicmlnaHRuZXNzIGNvbnRyb2xzIGFyZSBhdmFpbGFibGUgdGhyb3VnaCB0aGUKK3N0YW5kYXJkIEFDUEkgaW50ZXJmYWNlLCBpdCBpcyBiZXN0IHRvIHVzZSBpdCBpbnN0ZWFkIG9mIHRoaXMgZGlyZWN0CitUaGlua1BhZC1zcGVjaWZpYyBpbnRlcmZhY2UuICBUaGUgZHJpdmVyIHdpbGwgZGlzYWJsZSBpdHMgbmF0aXZlCitiYWNrbGlnaHQgYnJpZ2h0bmVzcyBjb250cm9sIGludGVyZmFjZSBpZiBpdCBkZXRlY3RzIHRoYXQgdGhlIHN0YW5kYXJkCitBQ1BJIGludGVyZmFjZSBpcyBhdmFpbGFibGUgaW4gdGhlIFRoaW5rUGFkLgorCitJZiB5b3Ugd2FudCB0byB1c2UgdGhlIHRoaW5rcGFkLWFjcGkgYmFja2xpZ2h0IGJyaWdodG5lc3MgY29udHJvbAoraW5zdGVhZCBvZiB0aGUgZ2VuZXJpYyBBQ1BJIHZpZGVvIGJhY2tsaWdodCBicmlnaHRuZXNzIGNvbnRyb2wgZm9yIHNvbWUKK3JlYXNvbiwgeW91IHNob3VsZCB1c2UgdGhlIGFjcGlfYmFja2xpZ2h0PXZlbmRvciBrZXJuZWwgcGFyYW1ldGVyLgorCitUaGUgYnJpZ2h0bmVzc19lbmFibGUgbW9kdWxlIHBhcmFtZXRlciBjYW4gYmUgdXNlZCB0byBjb250cm9sIHdoZXRoZXIKK3RoZSBMQ0QgYnJpZ2h0bmVzcyBjb250cm9sIGZlYXR1cmUgd2lsbCBiZSBlbmFibGVkIHdoZW4gYXZhaWxhYmxlLgorYnJpZ2h0bmVzc19lbmFibGU9MCBmb3JjZXMgaXQgdG8gYmUgZGlzYWJsZWQuICBicmlnaHRuZXNzX2VuYWJsZT0xCitmb3JjZXMgaXQgdG8gYmUgZW5hYmxlZCB3aGVuIGF2YWlsYWJsZSwgZXZlbiBpZiB0aGUgc3RhbmRhcmQgQUNQSQoraW50ZXJmYWNlIGlzIGFsc28gYXZhaWxhYmxlLgorCitQcm9jZnMgbm90ZXM6CisKKwlUaGUgYXZhaWxhYmxlIGNvbW1hbmRzIGFyZToKKworCWVjaG8gdXAgICA+L3Byb2MvYWNwaS9pYm0vYnJpZ2h0bmVzcworCWVjaG8gZG93biA+L3Byb2MvYWNwaS9pYm0vYnJpZ2h0bmVzcworCWVjaG8gJ2xldmVsIDxsZXZlbD4nID4vcHJvYy9hY3BpL2libS9icmlnaHRuZXNzCisKK1N5c2ZzIG5vdGVzOgorCitUaGUgaW50ZXJmYWNlIGlzIGltcGxlbWVudGVkIHRocm91Z2ggdGhlIGJhY2tsaWdodCBzeXNmcyBjbGFzcywgd2hpY2ggaXMKK3Bvb3JseSBkb2N1bWVudGVkIGF0IHRoaXMgdGltZS4KKworTG9jYXRlIHRoZSB0aGlua3BhZF9zY3JlZW4gZGV2aWNlIHVuZGVyIC9zeXMvY2xhc3MvYmFja2xpZ2h0LCBhbmQgaW5zaWRlCitpdCB0aGVyZSB3aWxsIGJlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKworCW1heF9icmlnaHRuZXNzOgorCQlSZWFkcyB0aGUgbWF4aW11bSBicmlnaHRuZXNzIHRoZSBoYXJkd2FyZSBjYW4gYmUgc2V0IHRvLgorCQlUaGUgbWluaW11bSBpcyBhbHdheXMgemVyby4KKworCWFjdHVhbF9icmlnaHRuZXNzOgorCQlSZWFkcyB3aGF0IGJyaWdodG5lc3MgdGhlIHNjcmVlbiBpcyBzZXQgdG8gYXQgdGhpcyBpbnN0YW50LgorCisJYnJpZ2h0bmVzczoKKwkJV3JpdGVzIHJlcXVlc3QgdGhlIGRyaXZlciB0byBjaGFuZ2UgYnJpZ2h0bmVzcyB0byB0aGUKKwkJZ2l2ZW4gdmFsdWUuICBSZWFkcyB3aWxsIHRlbGwgeW91IHdoYXQgYnJpZ2h0bmVzcyB0aGUKKwkJZHJpdmVyIGlzIHRyeWluZyB0byBzZXQgdGhlIGRpc3BsYXkgdG8gd2hlbiAicG93ZXIiIGlzIHNldAorCQl0byB6ZXJvIGFuZCB0aGUgZGlzcGxheSBoYXMgbm90IGJlZW4gZGltbWVkIGJ5IGEga2VybmVsCisJCXBvd2VyIG1hbmFnZW1lbnQgZXZlbnQuCisKKwlwb3dlcjoKKwkJcG93ZXIgbWFuYWdlbWVudCBtb2RlLCB3aGVyZSAwIGlzICJkaXNwbGF5IG9uIiwgYW5kIDEgdG8gMworCQl3aWxsIGRpbSB0aGUgZGlzcGxheSBiYWNrbGlnaHQgdG8gYnJpZ2h0bmVzcyBsZXZlbCAwCisJCWJlY2F1c2UgdGhpbmtwYWQtYWNwaSBjYW5ub3QgcmVhbGx5IHR1cm4gdGhlIGJhY2tsaWdodAorCQlvZmYuICBLZXJuZWwgcG93ZXIgbWFuYWdlbWVudCBldmVudHMgY2FuIHRlbXBvcmFyaWx5CisJCWluY3JlYXNlIHRoZSBjdXJyZW50IHBvd2VyIG1hbmFnZW1lbnQgbGV2ZWwsIGkuZS4gdGhleSBjYW4KKwkJZGltIHRoZSBkaXNwbGF5LgorCisKK1dBUk5JTkc6CisKKyAgICBXaGF0ZXZlciB5b3UgZG8sIGRvIE5PVCBldmVyIGNhbGwgdGhpbmtwYWQtYWNwaSBiYWNrbGlnaHQtbGV2ZWwgY2hhbmdlCisgICAgaW50ZXJmYWNlIGFuZCB0aGUgQUNQSS1iYXNlZCBiYWNrbGlnaHQgbGV2ZWwgY2hhbmdlIGludGVyZmFjZQorICAgIChhdmFpbGFibGUgb24gbmV3ZXIgQklPU2VzLCBhbmQgZHJpdmVuIGJ5IHRoZSBMaW51eCBBQ1BJIHZpZGVvIGRyaXZlcikKKyAgICBhdCB0aGUgc2FtZSB0aW1lLiAgVGhlIHR3byB3aWxsIGludGVyYWN0IGluIGJhZCB3YXlzLCBkbyBmdW5ueSB0aGluZ3MsCisgICAgYW5kIG1heWJlIHJlZHVjZSB0aGUgbGlmZSBvZiB0aGUgYmFja2xpZ2h0IGxhbXBzIGJ5IG5lZWRsZXNzbHkga2lja2luZworICAgIGl0cyBsZXZlbCB1cCBhbmQgZG93biBhdCBldmVyeSBjaGFuZ2UuCisKKworVm9sdW1lIGNvbnRyb2wgKENvbnNvbGUgQXVkaW8gY29udHJvbCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Byb2NmczogL3Byb2MvYWNwaS9pYm0vdm9sdW1lCitBTFNBOiAiVGhpbmtQYWQgQ29uc29sZSBBdWRpbyBDb250cm9sIiwgZGVmYXVsdCBJRDogIlRoaW5rUGFkRUMiCisKK05PVEU6IGJ5IGRlZmF1bHQsIHRoZSB2b2x1bWUgY29udHJvbCBpbnRlcmZhY2Ugb3BlcmF0ZXMgaW4gcmVhZC1vbmx5Cittb2RlLCBhcyBpdCBpcyBzdXBwb3NlZCB0byBiZSB1c2VkIGZvciBvbi1zY3JlZW4tZGlzcGxheSBwdXJwb3Nlcy4KK1RoZSByZWFkL3dyaXRlIG1vZGUgY2FuIGJlIGVuYWJsZWQgdGhyb3VnaCB0aGUgdXNlIG9mIHRoZQorInZvbHVtZV9jb250cm9sPTEiIG1vZHVsZSBwYXJhbWV0ZXIuCisKK05PVEU6IGRpc3Ryb3MgYXJlIHVyZ2VkIHRvIG5vdCBlbmFibGUgdm9sdW1lX2NvbnRyb2wgYnkgZGVmYXVsdCwgdGhpcworc2hvdWxkIGJlIGRvbmUgYnkgdGhlIGxvY2FsIGFkbWluIG9ubHkuICBUaGUgVGhpbmtQYWQgVUkgaXMgZm9yIHRoZQorY29uc29sZSBhdWRpbyBjb250cm9sIHRvIGJlIGRvbmUgdGhyb3VnaCB0aGUgdm9sdW1lIGtleXMgb25seSwgYW5kIGZvcgordGhlIGRlc2t0b3AgZW52aXJvbm1lbnQgdG8ganVzdCBwcm92aWRlIG9uLXNjcmVlbi1kaXNwbGF5IGZlZWRiYWNrLgorU29mdHdhcmUgdm9sdW1lIGNvbnRyb2wgc2hvdWxkIGJlIGRvbmUgb25seSBpbiB0aGUgbWFpbiBBQzk3L0hEQQorbWl4ZXIuCisKKworQWJvdXQgdGhlIFRoaW5rUGFkIENvbnNvbGUgQXVkaW8gY29udHJvbDoKKworVGhpbmtQYWRzIGhhdmUgYSBidWlsdC1pbiBhbXBsaWZpZXIgYW5kIG11dGluZyBjaXJjdWl0IHRoYXQgZHJpdmVzIHRoZQorY29uc29sZSBoZWFkcGhvbmUgYW5kIHNwZWFrZXJzLiAgVGhpcyBjaXJjdWl0IGlzIGFmdGVyIHRoZSBtYWluIEFDOTcKK29yIEhEQSBtaXhlciBpbiB0aGUgYXVkaW8gcGF0aCwgYW5kIHVuZGVyIGV4Y2x1c2l2ZSBjb250cm9sIG9mIHRoZQorZmlybXdhcmUuCisKK1RoaW5rUGFkcyBoYXZlIHRocmVlIHNwZWNpYWwgaG90a2V5cyB0byBpbnRlcmFjdCB3aXRoIHRoZSBjb25zb2xlCithdWRpbyBjb250cm9sOiB2b2x1bWUgdXAsIHZvbHVtZSBkb3duIGFuZCBtdXRlLgorCitJdCBpcyB3b3J0aCBub3RpbmcgdGhhdCB0aGUgbm9ybWFsIHdheSB0aGUgbXV0ZSBmdW5jdGlvbiB3b3JrcyAob24KK1RoaW5rUGFkcyB0aGF0IGRvIG5vdCBoYXZlIGEgIm11dGUgTEVEIikgaXM6CisKKzEuIFByZXNzIG11dGUgdG8gbXV0ZS4gIEl0IHdpbGwgKmFsd2F5cyogbXV0ZSwgeW91IGNhbiBwcmVzcyBpdCBhcworICAgbWFueSB0aW1lcyBhcyB5b3Ugd2FudCwgYW5kIHRoZSBzb3VuZCB3aWxsIHJlbWFpbiBtdXRlLgorCisyLiBQcmVzcyBlaXRoZXIgdm9sdW1lIGtleSB0byB1bm11dGUgdGhlIFRoaW5rUGFkIChpdCB3aWxsIF9ub3RfCisgICBjaGFuZ2UgdGhlIHZvbHVtZSwgaXQgd2lsbCBqdXN0IHVubXV0ZSkuCisKK1RoaXMgaXMgYSB2ZXJ5IHN1cGVyaW9yIGRlc2lnbiB3aGVuIGNvbXBhcmVkIHRvIHRoZSBjaGVhcCBzb2Z0d2FyZS1vbmx5CittdXRlLXRvZ2dsZSBzb2x1dGlvbiBmb3VuZCBvbiBub3JtYWwgY29uc3VtZXIgbGFwdG9wczogIHlvdSBjYW4gYmUKK2Fic29sdXRlbHkgc3VyZSB0aGUgVGhpbmtQYWQgd2lsbCBub3QgbWFrZSBub2lzZSBpZiB5b3UgcHJlc3MgdGhlIG11dGUKK2J1dHRvbiwgbm8gbWF0dGVyIHRoZSBwcmV2aW91cyBzdGF0ZS4KKworVGhlIElCTSBUaGlua1BhZHMsIGFuZCB0aGUgZWFybGllciBMZW5vdm8gVGhpbmtQYWRzIGhhdmUgdmFyaWFibGUtZ2FpbgorYW1wbGlmaWVycyBkcml2aW5nIHRoZSBzcGVha2VycyBhbmQgaGVhZHBob25lIG91dHB1dCwgYW5kIHRoZSBmaXJtd2FyZQorYWxzbyBoYW5kbGVzIHZvbHVtZSBjb250cm9sIGZvciB0aGUgaGVhZHBob25lIGFuZCBzcGVha2VycyBvbiB0aGVzZQorVGhpbmtQYWRzIHdpdGhvdXQgYW55IGhlbHAgZnJvbSB0aGUgb3BlcmF0aW5nIHN5c3RlbSAodGhpcyB2b2x1bWUKK2NvbnRyb2wgc3RhZ2UgZXhpc3RzIGFmdGVyIHRoZSBtYWluIEFDOTcgb3IgSERBIG1peGVyIGluIHRoZSBhdWRpbworcGF0aCkuCisKK1RoZSBuZXdlciBMZW5vdm8gbW9kZWxzIG9ubHkgaGF2ZSBmaXJtd2FyZSBtdXRlIGNvbnRyb2wsIGFuZCBkZXBlbmQgb24KK3RoZSBtYWluIEhEQSBtaXhlciB0byBkbyB2b2x1bWUgY29udHJvbCAod2hpY2ggaXMgZG9uZSBieSB0aGUgb3BlcmF0aW5nCitzeXN0ZW0pLiAgSW4gdGhpcyBjYXNlLCB0aGUgdm9sdW1lIGtleXMgYXJlIGZpbHRlcmVkIG91dCBmb3IgdW5tdXRlCitrZXkgcHJlc3MgKHRoZXJlIGFyZSBzb21lIGZpcm13YXJlIGJ1Z3MgaW4gdGhpcyBhcmVhKSBhbmQgZGVsaXZlcmVkIGFzCitub3JtYWwga2V5IHByZXNzZXMgdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0gKHRoaW5rcGFkLWFjcGkgaXMgbm90CitpbnZvbHZlZCkuCisKKworVGhlIFRoaW5rUGFkLUFDUEkgdm9sdW1lIGNvbnRyb2w6CisKK1RoZSBwcmVmZXJyZWQgd2F5IHRvIGludGVyYWN0IHdpdGggdGhlIENvbnNvbGUgQXVkaW8gY29udHJvbCBpcyB0aGUKK0FMU0EgaW50ZXJmYWNlLgorCitUaGUgbGVnYWN5IHByb2NmcyBpbnRlcmZhY2UgYWxsb3dzIG9uZSB0byByZWFkIHRoZSBjdXJyZW50IHN0YXRlLAorYW5kIGlmIHZvbHVtZSBjb250cm9sIGlzIGVuYWJsZWQsIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKKworCWVjaG8gdXAgICA+L3Byb2MvYWNwaS9pYm0vdm9sdW1lCisJZWNobyBkb3duID4vcHJvYy9hY3BpL2libS92b2x1bWUKKwllY2hvIG11dGUgPi9wcm9jL2FjcGkvaWJtL3ZvbHVtZQorCWVjaG8gdW5tdXRlID4vcHJvYy9hY3BpL2libS92b2x1bWUKKwllY2hvICdsZXZlbCA8bGV2ZWw+JyA+L3Byb2MvYWNwaS9pYm0vdm9sdW1lCisKK1RoZSA8bGV2ZWw+IG51bWJlciByYW5nZSBpcyAwIHRvIDE0IGFsdGhvdWdoIG5vdCBhbGwgb2YgdGhlbSBtYXkgYmUKK2Rpc3RpbmN0LiBUbyB1bm11dGUgdGhlIHZvbHVtZSBhZnRlciB0aGUgbXV0ZSBjb21tYW5kLCB1c2UgZWl0aGVyIHRoZQordXAgb3IgZG93biBjb21tYW5kICh0aGUgbGV2ZWwgY29tbWFuZCB3aWxsIG5vdCB1bm11dGUgdGhlIHZvbHVtZSksIG9yCit0aGUgdW5tdXRlIGNvbW1hbmQuCisKK1lvdSBjYW4gdXNlIHRoZSB2b2x1bWVfY2FwYWJpbGl0aWVzIHBhcmFtZXRlciB0byB0ZWxsIHRoZSBkcml2ZXIKK3doZXRoZXIgeW91ciB0aGlua3BhZCBoYXMgdm9sdW1lIGNvbnRyb2wgb3IgbXV0ZS1vbmx5IGNvbnRyb2w6Cit2b2x1bWVfY2FwYWJpbGl0aWVzPTEgZm9yIG1peGVycyB3aXRoIG11dGUgYW5kIHZvbHVtZSBjb250cm9sLAordm9sdW1lX2NhcGFiaWxpdGllcz0yIGZvciBtaXhlcnMgd2l0aCBvbmx5IG11dGUgY29udHJvbC4KKworSWYgdGhlIGRyaXZlciBtaXNkZXRlY3RzIHRoZSBjYXBhYmlsaXRpZXMgZm9yIHlvdXIgVGhpbmtQYWQgbW9kZWwsCitwbGVhc2UgcmVwb3J0IHRoaXMgdG8gaWJtLWFjcGktZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0LCBzbyB0aGF0IHdlCitjYW4gdXBkYXRlIHRoZSBkcml2ZXIuCisKK1RoZXJlIGFyZSB0d28gc3RyYXRlZ2llcyBmb3Igdm9sdW1lIGNvbnRyb2wuICBUbyBzZWxlY3Qgd2hpY2ggb25lCitzaG91bGQgYmUgdXNlZCwgdXNlIHRoZSB2b2x1bWVfbW9kZSBtb2R1bGUgcGFyYW1ldGVyOiB2b2x1bWVfbW9kZT0xCitzZWxlY3RzIEVDIG1vZGUsIGFuZCB2b2x1bWVfbW9kZT0zIHNlbGVjdHMgRUMgbW9kZSB3aXRoIE5WUkFNIGJhY2tpbmcKKyhzbyB0aGF0IHZvbHVtZS9tdXRlIGNoYW5nZXMgYXJlIHJlbWVtYmVyZWQgYWNyb3NzIHNodXRkb3duL3JlYm9vdCkuCisKK1RoZSBkcml2ZXIgd2lsbCBvcGVyYXRlIGluIHZvbHVtZV9tb2RlPTMgYnkgZGVmYXVsdC4gSWYgdGhhdCBkb2VzIG5vdAord29yayB3ZWxsIG9uIHlvdXIgVGhpbmtQYWQgbW9kZWwsIHBsZWFzZSByZXBvcnQgdGhpcyB0bworaWJtLWFjcGktZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0LgorCitUaGUgZHJpdmVyIHN1cHBvcnRzIHRoZSBzdGFuZGFyZCBBTFNBIG1vZHVsZSBwYXJhbWV0ZXJzLiAgSWYgdGhlIEFMU0EKK21peGVyIGlzIGRpc2FibGVkLCB0aGUgZHJpdmVyIHdpbGwgZGlzYWJsZSBhbGwgdm9sdW1lIGZ1bmN0aW9uYWxpdHkuCisKKworRmFuIGNvbnRyb2wgYW5kIG1vbml0b3Jpbmc6IGZhbiBzcGVlZCwgZmFuIGVuYWJsZS9kaXNhYmxlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworcHJvY2ZzOiAvcHJvYy9hY3BpL2libS9mYW4KK3N5c2ZzIGRldmljZSBhdHRyaWJ1dGVzOiAoaHdtb24gInRoaW5rcGFkIikgZmFuMV9pbnB1dCwgcHdtMSwKKwkJCSAgcHdtMV9lbmFibGUsIGZhbjJfaW5wdXQKK3N5c2ZzIGh3bW9uIGRyaXZlciBhdHRyaWJ1dGVzOiBmYW5fd2F0Y2hkb2cKKworTk9URSBOT1RFIE5PVEU6IGZhbiBjb250cm9sIG9wZXJhdGlvbnMgYXJlIGRpc2FibGVkIGJ5IGRlZmF1bHQgZm9yCitzYWZldHkgcmVhc29ucy4gIFRvIGVuYWJsZSB0aGVtLCB0aGUgbW9kdWxlIHBhcmFtZXRlciAiZmFuX2NvbnRyb2w9MSIKK211c3QgYmUgZ2l2ZW4gdG8gdGhpbmtwYWQtYWNwaS4KKworVGhpcyBmZWF0dXJlIGF0dGVtcHRzIHRvIHNob3cgdGhlIGN1cnJlbnQgZmFuIHNwZWVkLCBjb250cm9sIG1vZGUgYW5kCitvdGhlciBmYW4gZGF0YSB0aGF0IG1pZ2h0IGJlIGF2YWlsYWJsZS4gIFRoZSBzcGVlZCBpcyByZWFkIGRpcmVjdGx5Citmcm9tIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMgb2YgdGhlIGVtYmVkZGVkIGNvbnRyb2xsZXIuICBUaGlzIGlzIGtub3duCit0byB3b3JrIG9uIGxhdGVyIFIsIFQsIFggYW5kIFogc2VyaWVzIFRoaW5rUGFkcyBidXQgbWF5IHNob3cgYSBib2d1cwordmFsdWUgb24gb3RoZXIgbW9kZWxzLgorCitTb21lIExlbm92byBUaGlua1BhZHMgc3VwcG9ydCBhIHNlY29uZGFyeSBmYW4uICBUaGlzIGZhbiBjYW5ub3QgYmUKK2NvbnRyb2xsZWQgc2VwYXJhdGVseSwgaXQgc2hhcmVzIHRoZSBtYWluIGZhbiBjb250cm9sLgorCitGYW4gbGV2ZWxzOgorCitNb3N0IFRoaW5rUGFkIGZhbnMgd29yayBpbiAibGV2ZWxzIiBhdCB0aGUgZmlybXdhcmUgaW50ZXJmYWNlLiAgTGV2ZWwgMAorc3RvcHMgdGhlIGZhbi4gIFRoZSBoaWdoZXIgdGhlIGxldmVsLCB0aGUgaGlnaGVyIHRoZSBmYW4gc3BlZWQsIGFsdGhvdWdoCithZGphY2VudCBsZXZlbHMgb2Z0ZW4gbWFwIHRvIHRoZSBzYW1lIGZhbiBzcGVlZC4gIDcgaXMgdGhlIGhpZ2hlc3QKK2xldmVsLCB3aGVyZSB0aGUgZmFuIHJlYWNoZXMgdGhlIG1heGltdW0gcmVjb21tZW5kZWQgc3BlZWQuCisKK0xldmVsICJhdXRvIiBtZWFucyB0aGUgRUMgY2hhbmdlcyB0aGUgZmFuIGxldmVsIGFjY29yZGluZyB0byBzb21lCitpbnRlcm5hbCBhbGdvcml0aG0sIHVzdWFsbHkgYmFzZWQgb24gcmVhZGluZ3MgZnJvbSB0aGUgdGhlcm1hbCBzZW5zb3JzLgorCitUaGVyZSBpcyBhbHNvIGEgImZ1bGwtc3BlZWQiIGxldmVsLCBhbHNvIGtub3duIGFzICJkaXNlbmdhZ2VkIiBsZXZlbC4KK0luIHRoaXMgbGV2ZWwsIHRoZSBFQyBkaXNhYmxlcyB0aGUgc3BlZWQtbG9ja2VkIGNsb3NlZC1sb29wIGZhbiBjb250cm9sLAorYW5kIGRyaXZlcyB0aGUgZmFuIGFzIGZhc3QgYXMgaXQgY2FuIGdvLCB3aGljaCBtaWdodCBleGNlZWQgaGFyZHdhcmUKK2xpbWl0cywgc28gdXNlIHRoaXMgbGV2ZWwgd2l0aCBjYXV0aW9uLgorCitUaGUgZmFuIHVzdWFsbHkgcmFtcHMgdXAgb3IgZG93biBzbG93bHkgZnJvbSBvbmUgc3BlZWQgdG8gYW5vdGhlciwgYW5kCitpdCBpcyBub3JtYWwgZm9yIHRoZSBFQyB0byB0YWtlIHNldmVyYWwgc2Vjb25kcyB0byByZWFjdCB0byBmYW4KK2NvbW1hbmRzLiAgVGhlIGZ1bGwtc3BlZWQgbGV2ZWwgbWF5IHRha2UgdXAgdG8gdHdvIG1pbnV0ZXMgdG8gcmFtcCB1cCB0bworbWF4aW11bSBzcGVlZCwgYW5kIGluIHNvbWUgVGhpbmtQYWRzLCB0aGUgdGFjaG9tZXRlciByZWFkaW5ncyBnbyBzdGFsZQord2hpbGUgdGhlIEVDIGlzIHRyYW5zaXRpb25pbmcgdG8gdGhlIGZ1bGwtc3BlZWQgbGV2ZWwuCisKK1dBUk5JTkcgV0FSTklORyBXQVJOSU5HOiBkbyBub3QgbGVhdmUgdGhlIGZhbiBkaXNhYmxlZCB1bmxlc3MgeW91IGFyZQorbW9uaXRvcmluZyBhbGwgb2YgdGhlIHRlbXBlcmF0dXJlIHNlbnNvciByZWFkaW5ncyBhbmQgeW91IGFyZSByZWFkeSB0bworZW5hYmxlIGl0IGlmIG5lY2Vzc2FyeSB0byBhdm9pZCBvdmVyaGVhdGluZy4KKworQW4gZW5hYmxlZCBmYW4gaW4gbGV2ZWwgImF1dG8iIG1heSBzdG9wIHNwaW5uaW5nIGlmIHRoZSBFQyBkZWNpZGVzIHRoZQorVGhpbmtQYWQgaXMgY29vbCBlbm91Z2ggYW5kIGRvZXNuJ3QgbmVlZCB0aGUgZXh0cmEgYWlyZmxvdy4gIFRoaXMgaXMKK25vcm1hbCwgYW5kIHRoZSBFQyB3aWxsIHNwaW4gdGhlIGZhbiB1cCBpZiB0aGUgdmFyaW91cyB0aGVybWFsIHJlYWRpbmdzCityaXNlIHRvbyBtdWNoLgorCitPbiB0aGUgWDQwLCB0aGlzIHNlZW1zIHRvIGRlcGVuZCBvbiB0aGUgQ1BVIGFuZCBIREQgdGVtcGVyYXR1cmVzLgorU3BlY2lmaWNhbGx5LCB0aGUgZmFuIGlzIHR1cm5lZCBvbiB3aGVuIGVpdGhlciB0aGUgQ1BVIHRlbXBlcmF0dXJlCitjbGltYnMgdG8gNTYgZGVncmVlcyBvciB0aGUgSEREIHRlbXBlcmF0dXJlIGNsaW1icyB0byA0NiBkZWdyZWVzLiAgVGhlCitmYW4gaXMgdHVybmVkIG9mZiB3aGVuIHRoZSBDUFUgdGVtcGVyYXR1cmUgZHJvcHMgdG8gNDkgZGVncmVlcyBhbmQgdGhlCitIREQgdGVtcGVyYXR1cmUgZHJvcHMgdG8gNDEgZGVncmVlcy4gIFRoZXNlIHRocmVzaG9sZHMgY2Fubm90CitjdXJyZW50bHkgYmUgY29udHJvbGxlZC4KKworVGhlIFRoaW5rUGFkJ3MgQUNQSSBEU0RUIGNvZGUgd2lsbCByZXByb2dyYW0gdGhlIGZhbiBvbiBpdHMgb3duIHdoZW4KK2NlcnRhaW4gY29uZGl0aW9ucyBhcmUgbWV0LiAgSXQgd2lsbCBvdmVycmlkZSBhbnkgZmFuIHByb2dyYW1taW5nIGRvbmUKK3Rocm91Z2ggdGhpbmtwYWQtYWNwaS4KKworVGhlIHRoaW5rcGFkLWFjcGkga2VybmVsIGRyaXZlciBjYW4gYmUgcHJvZ3JhbW1lZCB0byByZXZlcnQgdGhlIGZhbgorbGV2ZWwgdG8gYSBzYWZlIHNldHRpbmcgaWYgdXNlcnNwYWNlIGRvZXMgbm90IGlzc3VlIG9uZSBvZiB0aGUgcHJvY2ZzCitmYW4gY29tbWFuZHM6ICJlbmFibGUiLCAiZGlzYWJsZSIsICJsZXZlbCIgb3IgIndhdGNoZG9nIiwgb3IgaWYgdGhlcmUKK2FyZSBubyB3cml0ZXMgdG8gcHdtMV9lbmFibGUgKG9yIHRvIHB3bTEgKmlmIGFuZCBvbmx5IGlmKiBwd20xX2VuYWJsZSBpcworc2V0IHRvIDEsIG1hbnVhbCBtb2RlKSB3aXRoaW4gYSBjb25maWd1cmFibGUgYW1vdW50IG9mIHRpbWUgb2YgdXAgdG8KKzEyMCBzZWNvbmRzLiAgVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGNhbGxlZCBmYW4gc2FmZXR5IHdhdGNoZG9nLgorCitOb3RlIHRoYXQgdGhlIHdhdGNoZG9nIHRpbWVyIHN0b3BzIGFmdGVyIGl0IGVuYWJsZXMgdGhlIGZhbi4gIEl0IHdpbGwgYmUKK3JlYXJtZWQgYWdhaW4gYXV0b21hdGljYWxseSAodXNpbmcgdGhlIHNhbWUgaW50ZXJ2YWwpIHdoZW4gb25lIG9mIHRoZQorYWJvdmUgbWVudGlvbmVkIGZhbiBjb21tYW5kcyBpcyByZWNlaXZlZC4gIFRoZSBmYW4gd2F0Y2hkb2cgaXMsCit0aGVyZWZvcmUsIG5vdCBzdWl0YWJsZSB0byBwcm90ZWN0IGFnYWluc3QgZmFuIG1vZGUgY2hhbmdlcyBtYWRlIHRocm91Z2gKK21lYW5zIG90aGVyIHRoYW4gdGhlICJlbmFibGUiLCAiZGlzYWJsZSIsIGFuZCAibGV2ZWwiIHByb2NmcyBmYW4KK2NvbW1hbmRzLCBvciB0aGUgaHdtb24gZmFuIGNvbnRyb2wgc3lzZnMgaW50ZXJmYWNlLgorCitQcm9jZnMgbm90ZXM6CisKK1RoZSBmYW4gbWF5IGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOgorCisJZWNobyBlbmFibGUgID4vcHJvYy9hY3BpL2libS9mYW4KKwllY2hvIGRpc2FibGUgPi9wcm9jL2FjcGkvaWJtL2ZhbgorCitQbGFjaW5nIGEgZmFuIG9uIGxldmVsIDAgaXMgdGhlIHNhbWUgYXMgZGlzYWJsaW5nIGl0LiAgRW5hYmxpbmcgYSBmYW4KK3dpbGwgdHJ5IHRvIHBsYWNlIGl0IGluIGEgc2FmZSBsZXZlbCBpZiBpdCBpcyB0b28gc2xvdyBvciBkaXNhYmxlZC4KKworVGhlIGZhbiBsZXZlbCBjYW4gYmUgY29udHJvbGxlZCB3aXRoIHRoZSBjb21tYW5kOgorCisJZWNobyAnbGV2ZWwgPGxldmVsPicgPiAvcHJvYy9hY3BpL2libS9mYW4KKworV2hlcmUgPGxldmVsPiBpcyBhbiBpbnRlZ2VyIGZyb20gMCB0byA3LCBvciBvbmUgb2YgdGhlIHdvcmRzICJhdXRvIiBvcgorImZ1bGwtc3BlZWQiICh3aXRob3V0IHRoZSBxdW90ZXMpLiAgTm90IGFsbCBUaGlua1BhZHMgc3VwcG9ydCB0aGUgImF1dG8iCithbmQgImZ1bGwtc3BlZWQiIGxldmVscy4gIFRoZSBkcml2ZXIgYWNjZXB0cyAiZGlzZW5nYWdlZCIgYXMgYW4gYWxpYXMgZm9yCisiZnVsbC1zcGVlZCIsIGFuZCByZXBvcnRzIGl0IGFzICJkaXNlbmdhZ2VkIiBmb3IgYmFja3dhcmRzCitjb21wYXRpYmlsaXR5LgorCitPbiB0aGUgWDMxIGFuZCBYNDAgKGFuZCBPTkxZIG9uIHRob3NlIG1vZGVscyksIHRoZSBmYW4gc3BlZWQgY2FuIGJlCitjb250cm9sbGVkIHRvIGEgY2VydGFpbiBkZWdyZWUuICBPbmNlIHRoZSBmYW4gaXMgcnVubmluZywgaXQgY2FuIGJlCitmb3JjZWQgdG8gcnVuIGZhc3RlciBvciBzbG93ZXIgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CisKKwllY2hvICdzcGVlZCA8c3BlZWQ+JyA+IC9wcm9jL2FjcGkvaWJtL2ZhbgorCitUaGUgc3VzdGFpbmFibGUgcmFuZ2Ugb2YgZmFuIHNwZWVkcyBvbiB0aGUgWDQwIGFwcGVhcnMgdG8gYmUgZnJvbSBhYm91dAorMzcwMCB0byBhYm91dCA3MzUwLiBWYWx1ZXMgb3V0c2lkZSB0aGlzIHJhbmdlIGVpdGhlciBkbyBub3QgaGF2ZSBhbnkKK2VmZmVjdCBvciB0aGUgZmFuIHNwZWVkIGV2ZW50dWFsbHkgc2V0dGxlcyBzb21ld2hlcmUgaW4gdGhhdCByYW5nZS4gIFRoZQorZmFuIGNhbm5vdCBiZSBzdG9wcGVkIG9yIHN0YXJ0ZWQgd2l0aCB0aGlzIGNvbW1hbmQuICBUaGlzIGZ1bmN0aW9uYWxpdHkKK2lzIGluY29tcGxldGUsIGFuZCBub3QgYXZhaWxhYmxlIHRocm91Z2ggdGhlIHN5c2ZzIGludGVyZmFjZS4KKworVG8gcHJvZ3JhbSB0aGUgc2FmZXR5IHdhdGNoZG9nLCB1c2UgdGhlICJ3YXRjaGRvZyIgY29tbWFuZC4KKworCWVjaG8gJ3dhdGNoZG9nIDxpbnRlcnZhbCBpbiBzZWNvbmRzPicgPiAvcHJvYy9hY3BpL2libS9mYW4KKworSWYgeW91IHdhbnQgdG8gZGlzYWJsZSB0aGUgd2F0Y2hkb2csIHVzZSAwIGFzIHRoZSBpbnRlcnZhbC4KKworU3lzZnMgbm90ZXM6CisKK1RoZSBzeXNmcyBpbnRlcmZhY2UgZm9sbG93cyB0aGUgaHdtb24gc3Vic3lzdGVtIGd1aWRlbGluZXMgZm9yIHRoZSBtb3N0CitwYXJ0LCBhbmQgdGhlIGV4Y2VwdGlvbiBpcyB0aGUgZmFuIHNhZmV0eSB3YXRjaGRvZy4KKworV3JpdGVzIHRvIGFueSBvZiB0aGUgc3lzZnMgYXR0cmlidXRlcyBtYXkgcmV0dXJuIHRoZSBFSU5WQUwgZXJyb3IgaWYKK3RoYXQgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gYSBnaXZlbiBUaGlua1BhZCBvciBpZiB0aGUgcGFyYW1ldGVyCitpcyBvdXQtb2YtYm91bmRzLCBhbmQgRVBFUk0gaWYgaXQgaXMgZm9yYmlkZGVuLiAgVGhleSBtYXkgYWxzbyByZXR1cm4KK0VJTlRSIChpbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbCksIGFuZCBFSU8gKEkvTyBlcnJvciB3aGlsZSB0cnlpbmcgdG8gdGFsawordG8gdGhlIGZpcm13YXJlKS4KKworRmVhdHVyZXMgbm90IHlldCBpbXBsZW1lbnRlZCBieSB0aGUgZHJpdmVyIHJldHVybiBFTk9TWVMuCisKK2h3bW9uIGRldmljZSBhdHRyaWJ1dGUgcHdtMV9lbmFibGU6CisJMDogUFdNIG9mZmxpbmUgKGZhbiBpcyBzZXQgdG8gZnVsbC1zcGVlZCBtb2RlKQorCTE6IE1hbnVhbCBQV00gY29udHJvbCAodXNlIHB3bTEgdG8gc2V0IGZhbiBsZXZlbCkKKwkyOiBIYXJkd2FyZSBQV00gY29udHJvbCAoRUMgImF1dG8iIG1vZGUpCisJMzogcmVzZXJ2ZWQgKFNvZnR3YXJlIFBXTSBjb250cm9sLCBub3QgaW1wbGVtZW50ZWQgeWV0KQorCisJTW9kZXMgMCBhbmQgMiBhcmUgbm90IHN1cHBvcnRlZCBieSBhbGwgVGhpbmtQYWRzLCBhbmQgdGhlCisJZHJpdmVyIGlzIG5vdCBhbHdheXMgYWJsZSB0byBkZXRlY3QgdGhpcy4gIElmIGl0IGRvZXMga25vdyBhCisJbW9kZSBpcyB1bnN1cHBvcnRlZCwgaXQgd2lsbCByZXR1cm4gLUVJTlZBTC4KKworaHdtb24gZGV2aWNlIGF0dHJpYnV0ZSBwd20xOgorCUZhbiBsZXZlbCwgc2NhbGVkIGZyb20gdGhlIGZpcm13YXJlIHZhbHVlcyBvZiAwLTcgdG8gdGhlIGh3bW9uCisJc2NhbGUgb2YgMC0yNTUuICAwIG1lYW5zIGZhbiBzdG9wcGVkLCAyNTUgbWVhbnMgaGlnaGVzdCBub3JtYWwKKwlzcGVlZCAobGV2ZWwgNykuCisKKwlUaGlzIGF0dHJpYnV0ZSBvbmx5IGNvbW1hbmRzIHRoZSBmYW4gaWYgcG13MV9lbmFibGUgaXMgc2V0IHRvIDEKKwkobWFudWFsIFBXTSBjb250cm9sKS4KKworaHdtb24gZGV2aWNlIGF0dHJpYnV0ZSBmYW4xX2lucHV0OgorCUZhbiB0YWNob21ldGVyIHJlYWRpbmcsIGluIFJQTS4gIE1heSBnbyBzdGFsZSBvbiBjZXJ0YWluCisJVGhpbmtQYWRzIHdoaWxlIHRoZSBFQyB0cmFuc2l0aW9ucyB0aGUgUFdNIHRvIG9mZmxpbmUgbW9kZSwKKwl3aGljaCBjYW4gdGFrZSB1cCB0byB0d28gbWludXRlcy4gIE1heSByZXR1cm4gcnViYmlzaCBvbiBvbGRlcgorCVRoaW5rUGFkcy4KKworaHdtb24gZGV2aWNlIGF0dHJpYnV0ZSBmYW4yX2lucHV0OgorCUZhbiB0YWNob21ldGVyIHJlYWRpbmcsIGluIFJQTSwgZm9yIHRoZSBzZWNvbmRhcnkgZmFuLgorCUF2YWlsYWJsZSBvbmx5IG9uIHNvbWUgVGhpbmtQYWRzLiAgSWYgdGhlIHNlY29uZGFyeSBmYW4gaXMKKwlub3QgaW5zdGFsbGVkLCB3aWxsIGFsd2F5cyByZWFkIDAuCisKK2h3bW9uIGRyaXZlciBhdHRyaWJ1dGUgZmFuX3dhdGNoZG9nOgorCUZhbiBzYWZldHkgd2F0Y2hkb2cgdGltZXIgaW50ZXJ2YWwsIGluIHNlY29uZHMuICBNaW5pbXVtIGlzCisJMSBzZWNvbmQsIG1heGltdW0gaXMgMTIwIHNlY29uZHMuICAwIGRpc2FibGVzIHRoZSB3YXRjaGRvZy4KKworVG8gc3RvcCB0aGUgZmFuOiBzZXQgcHdtMSB0byB6ZXJvLCBhbmQgcHdtMV9lbmFibGUgdG8gMS4KKworVG8gc3RhcnQgdGhlIGZhbiBpbiBhIHNhZmUgbW9kZTogc2V0IHB3bTFfZW5hYmxlIHRvIDIuICBJZiB0aGF0IGZhaWxzCit3aXRoIEVJTlZBTCwgdHJ5IHRvIHNldCBwd20xX2VuYWJsZSB0byAxIGFuZCBwd20xIHRvIGF0IGxlYXN0IDEyOCAoMjU1Cit3b3VsZCBiZSB0aGUgc2FmZXN0IGNob2ljZSwgdGhvdWdoKS4KKworCitXQU4KKy0tLQorCitwcm9jZnM6IC9wcm9jL2FjcGkvaWJtL3dhbgorc3lzZnMgZGV2aWNlIGF0dHJpYnV0ZTogd3dhbl9lbmFibGUgKGRlcHJlY2F0ZWQpCitzeXNmcyByZmtpbGwgY2xhc3M6IHN3aXRjaCAidHBhY3BpX3d3YW5fc3ciCisKK1RoaXMgZmVhdHVyZSBzaG93cyB0aGUgcHJlc2VuY2UgYW5kIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGJ1aWx0LWluCitXaXJlbGVzcyBXQU4gZGV2aWNlLgorCitJZiB0aGUgVGhpbmtQYWQgc3VwcG9ydHMgaXQsIHRoZSBXV0FOIHN0YXRlIGlzIHN0b3JlZCBpbiBOVlJBTSwKK3NvIGl0IGlzIGtlcHQgYWNyb3NzIHJlYm9vdHMgYW5kIHBvd2VyLW9mZi4KKworSXQgd2FzIHRlc3RlZCBvbiBhIExlbm92byBUaGlua1BhZCBYNjAuIEl0IHNob3VsZCBwcm9iYWJseSB3b3JrIG9uIG90aGVyCitUaGlua1BhZCBtb2RlbHMgd2hpY2ggY29tZSB3aXRoIHRoaXMgbW9kdWxlIGluc3RhbGxlZC4KKworUHJvY2ZzIG5vdGVzOgorCitJZiB0aGUgVy1XQU4gY2FyZCBpcyBpbnN0YWxsZWQsIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgY2FuIGJlIHVzZWQ6CisKKwllY2hvIGVuYWJsZSA+IC9wcm9jL2FjcGkvaWJtL3dhbgorCWVjaG8gZGlzYWJsZSA+IC9wcm9jL2FjcGkvaWJtL3dhbgorCitTeXNmcyBub3RlczoKKworCUlmIHRoZSBXLVdBTiBjYXJkIGlzIGluc3RhbGxlZCwgaXQgY2FuIGJlIGVuYWJsZWQgLworCWRpc2FibGVkIHRocm91Z2ggdGhlICJ3d2FuX2VuYWJsZSIgdGhpbmtwYWQtYWNwaSBkZXZpY2UKKwlhdHRyaWJ1dGUsIGFuZCBpdHMgY3VycmVudCBzdGF0dXMgY2FuIGFsc28gYmUgcXVlcmllZC4KKworCWVuYWJsZToKKwkJMDogZGlzYWJsZXMgV1dBTiBjYXJkIC8gV1dBTiBjYXJkIGlzIGRpc2FibGVkCisJCTE6IGVuYWJsZXMgV1dBTiBjYXJkIC8gV1dBTiBjYXJkIGlzIGVuYWJsZWQuCisKKwlOb3RlOiB0aGlzIGludGVyZmFjZSBoYXMgYmVlbiBzdXBlcnNlZGVkIGJ5IHRoZQlnZW5lcmljIHJma2lsbAorCWNsYXNzLiAgSXQgaGFzIGJlZW4gZGVwcmVjYXRlZCwgYW5kIGl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB5ZWFyCisJMjAxMC4KKworCXJma2lsbCBjb250cm9sbGVyIHN3aXRjaCAidHBhY3BpX3d3YW5fc3ciOiByZWZlciB0bworCURvY3VtZW50YXRpb24vcmZraWxsLnR4dCBmb3IgZGV0YWlscy4KKworCitFWFBFUklNRU5UQUw6IFVXQgorLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBmZWF0dXJlIGlzIGNvbnNpZGVyZWQgRVhQRVJJTUVOVEFMIGJlY2F1c2UgaXQgaGFzIG5vdCBiZWVuIGV4dGVuc2l2ZWx5Cit0ZXN0ZWQgYW5kIHZhbGlkYXRlZCBpbiB2YXJpb3VzIFRoaW5rUGFkIG1vZGVscyB5ZXQuICBUaGUgZmVhdHVyZSBtYXkgbm90Cit3b3JrIGFzIGV4cGVjdGVkLiBVU0UgV0lUSCBDQVVUSU9OISBUbyB1c2UgdGhpcyBmZWF0dXJlLCB5b3UgbmVlZCB0byBzdXBwbHkKK3RoZSBleHBlcmltZW50YWw9MSBwYXJhbWV0ZXIgd2hlbiBsb2FkaW5nIHRoZSBtb2R1bGUuCisKK3N5c2ZzIHJma2lsbCBjbGFzczogc3dpdGNoICJ0cGFjcGlfdXdiX3N3IgorCitUaGlzIGZlYXR1cmUgZXhwb3J0cyBhbiByZmtpbGwgY29udHJvbGxlciBmb3IgdGhlIFVXQiBkZXZpY2UsIGlmIG9uZSBpcworcHJlc2VudCBhbmQgZW5hYmxlZCBpbiB0aGUgQklPUy4KKworU3lzZnMgbm90ZXM6CisKKwlyZmtpbGwgY29udHJvbGxlciBzd2l0Y2ggInRwYWNwaV91d2Jfc3ciOiByZWZlciB0bworCURvY3VtZW50YXRpb24vcmZraWxsLnR4dCBmb3IgZGV0YWlscy4KKworQWRhcHRpdmUga2V5Ym9hcmQKKy0tLS0tLS0tLS0tLS0tLS0tCisKK3N5c2ZzIGRldmljZSBhdHRyaWJ1dGU6IGFkYXB0aXZlX2tiZF9tb2RlCisKK1RoaXMgc3lzZnMgYXR0cmlidXRlIGNvbnRyb2xzIHRoZSBrZXlib2FyZCAiZmFjZSIgdGhhdCB3aWxsIGJlIHNob3duIG9uIHRoZQorTGVub3ZvIFgxIENhcmJvbiAybmQgZ2VuICgyMDE0KSdzIGFkYXB0aXZlIGtleWJvYXJkLiBUaGUgdmFsdWUgY2FuIGJlIHJlYWQKK2FuZCBzZXQuCisKKzEgPSBIb21lIG1vZGUKKzIgPSBXZWItYnJvd3NlciBtb2RlCiszID0gV2ViLWNvbmZlcmVuY2UgbW9kZQorNCA9IEZ1bmN0aW9uIG1vZGUKKzUgPSBMYXlmbGF0IG1vZGUKKworRm9yIG1vcmUgZGV0YWlscyBhYm91dCB3aGljaCBidXR0b25zIHdpbGwgYXBwZWFyIGRlcGVuZGluZyBvbiB0aGUgbW9kZSwgcGxlYXNlCityZXZpZXcgdGhlIGxhcHRvcCdzIHVzZXIgZ3VpZGU6CitodHRwOi8vd3d3Lmxlbm92by5jb20vc2hvcC9hbWVyaWNhcy9jb250ZW50L3VzZXJfZ3VpZGVzL3gxY2FyYm9uXzJfdWdfZW4ucGRmCisKK011bHRpcGxlIENvbW1hbmRzLCBNb2R1bGUgUGFyYW1ldGVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK011bHRpcGxlIGNvbW1hbmRzIGNhbiBiZSB3cml0dGVuIHRvIHRoZSBwcm9jIGZpbGVzIGluIG9uZSBzaG90IGJ5CitzZXBhcmF0aW5nIHRoZW0gd2l0aCBjb21tYXMsIGZvciBleGFtcGxlOgorCisJZWNobyBlbmFibGUsMHhmZmZmID4gL3Byb2MvYWNwaS9pYm0vaG90a2V5CisJZWNobyBsY2RfZGlzYWJsZSxjcnRfZW5hYmxlID4gL3Byb2MvYWNwaS9pYm0vdmlkZW8KKworQ29tbWFuZHMgY2FuIGFsc28gYmUgc3BlY2lmaWVkIHdoZW4gbG9hZGluZyB0aGUgdGhpbmtwYWQtYWNwaSBtb2R1bGUsCitmb3IgZXhhbXBsZToKKworCW1vZHByb2JlIHRoaW5rcGFkX2FjcGkgaG90a2V5PWVuYWJsZSwweGZmZmYgdmlkZW89YXV0b19kaXNhYmxlCisKKworRW5hYmxpbmcgZGVidWdnaW5nIG91dHB1dAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbW9kdWxlIHRha2VzIGEgZGVidWcgcGFyYW1ldGVyIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHNlbGVjdGl2ZWx5CitlbmFibGUgdmFyaW91cyBjbGFzc2VzIG9mIGRlYnVnZ2luZyBvdXRwdXQsIGZvciBleGFtcGxlOgorCisJIG1vZHByb2JlIHRoaW5rcGFkX2FjcGkgZGVidWc9MHhmZmZmCisKK3dpbGwgZW5hYmxlIGFsbCBkZWJ1Z2dpbmcgb3V0cHV0IGNsYXNzZXMuICBJdCB0YWtlcyBhIGJpdG1hc2ssIHNvCit0byBlbmFibGUgbW9yZSB0aGFuIG9uZSBvdXRwdXQgY2xhc3MsIGp1c3QgYWRkIHRoZWlyIHZhbHVlcy4KKworCURlYnVnIGJpdG1hc2sJCURlc2NyaXB0aW9uCisJMHg4MDAwCQkJRGlzY2xvc2UgUElEIG9mIHVzZXJzcGFjZSBwcm9ncmFtcworCQkJCWFjY2Vzc2luZyBzb21lIGZ1bmN0aW9ucyBvZiB0aGUgZHJpdmVyCisJMHgwMDAxCQkJSW5pdGlhbGl6YXRpb24gYW5kIHByb2JpbmcKKwkweDAwMDIJCQlSZW1vdmFsCisJMHgwMDA0CQkJUkYgVHJhbnNtaXR0ZXIgY29udHJvbCAoUkZLSUxMKQorCQkJCShibHVldG9vdGgsIFdXQU4sIFVXQi4uLikKKwkweDAwMDgJCQlIS0VZIGV2ZW50IGludGVyZmFjZSwgaG90a2V5cworCTB4MDAxMAkJCUZhbiBjb250cm9sCisJMHgwMDIwCQkJQmFja2xpZ2h0IGJyaWdodG5lc3MKKwkweDAwNDAJCQlBdWRpbyBtaXhlci92b2x1bWUgY29udHJvbAorCitUaGVyZSBpcyBhbHNvIGEga2VybmVsIGJ1aWxkIG9wdGlvbiB0byBlbmFibGUgbW9yZSBkZWJ1Z2dpbmcKK2luZm9ybWF0aW9uLCB3aGljaCBtYXkgYmUgbmVjZXNzYXJ5IHRvIGRlYnVnIGRyaXZlciBwcm9ibGVtcy4KKworVGhlIGxldmVsIG9mIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBvdXRwdXQgYnkgdGhlIGRyaXZlciBjYW4gYmUgY2hhbmdlZAorYXQgcnVudGltZSB0aHJvdWdoIHN5c2ZzLCB1c2luZyB0aGUgZHJpdmVyIGF0dHJpYnV0ZSBkZWJ1Z19sZXZlbC4gIFRoZQorYXR0cmlidXRlIHRha2VzIHRoZSBzYW1lIGJpdG1hc2sgYXMgdGhlIGRlYnVnIG1vZHVsZSBwYXJhbWV0ZXIgYWJvdmUuCisKKworRm9yY2UgbG9hZGluZyBvZiBtb2R1bGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHRoaW5rcGFkLWFjcGkgcmVmdXNlcyB0byBkZXRlY3QgeW91ciBUaGlua1BhZCwgeW91IGNhbiB0cnkgdG8gc3BlY2lmeQordGhlIG1vZHVsZSBwYXJhbWV0ZXIgZm9yY2VfbG9hZD0xLiAgUmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoaXMgd29ya3Mgb3IKK25vdCwgcGxlYXNlIGNvbnRhY3QgaWJtLWFjcGktZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0IHdpdGggYSByZXBvcnQuCisKKworU3lzZnMgaW50ZXJmYWNlIGNoYW5nZWxvZzoKKworMHgwMDAxMDA6CUluaXRpYWwgc3lzZnMgc3VwcG9ydCwgYXMgYSBzaW5nbGUgcGxhdGZvcm0gZHJpdmVyIGFuZAorCQlkZXZpY2UuCisweDAwMDIwMDoJSG90IGtleSBzdXBwb3J0IGZvciAzMiBob3Qga2V5cywgYW5kIHJhZGlvIHNsaWRlciBzd2l0Y2gKKwkJc3VwcG9ydC4KKzB4MDEwMDAwOglIb3Qga2V5cyBhcmUgbm93IGhhbmRsZWQgYnkgZGVmYXVsdCBvdmVyIHRoZSBpbnB1dAorCQlsYXllciwgdGhlIHJhZGlvIHN3aXRjaCBnZW5lcmF0ZXMgaW5wdXQgZXZlbnQgRVZfUkFESU8sCisJCWFuZCB0aGUgZHJpdmVyIGVuYWJsZXMgaG90IGtleSBoYW5kbGluZyBieSBkZWZhdWx0IGluCisJCXRoZSBmaXJtd2FyZS4KKworMHgwMjAwMDA6CUFCSSBmaXg6IGFkZGVkIGEgc2VwYXJhdGUgaHdtb24gcGxhdGZvcm0gZGV2aWNlIGFuZAorCQlkcml2ZXIsIHdoaWNoIG11c3QgYmUgbG9jYXRlZCBieSBuYW1lICh0aGlua3BhZCkKKwkJYW5kIHRoZSBod21vbiBjbGFzcyBmb3IgbGlic2Vuc29yczQgKGxtLXNlbnNvcnMgMykKKwkJY29tcGF0aWJpbGl0eS4gIE1vdmVkIGFsbCBod21vbiBhdHRyaWJ1dGVzIHRvIHRoaXMKKwkJbmV3IHBsYXRmb3JtIGRldmljZS4KKworMHgwMjAxMDA6CU1hcmtlciBmb3IgdGhpbmtwYWQtYWNwaSB3aXRoIGhvdCBrZXkgTlZSQU0gcG9sbGluZworCQlzdXBwb3J0LiAgSWYgeW91IG11c3QsIHVzZSBpdCB0byBrbm93IHlvdSBzaG91bGQgbm90CisJCXN0YXJ0IGEgdXNlcnNwYWNlIE5WUkFNIHBvbGxlciAoYWxsb3dzIHRvIGRldGVjdCB3aGVuCisJCU5WUkFNIGlzIGNvbXBpbGVkIG91dCBieSB0aGUgdXNlciBiZWNhdXNlIGl0IGlzCisJCXVubmVlZGVkL3VuZGVzaXJlZCBpbiB0aGUgZmlyc3QgcGxhY2UpLgorMHgwMjAxMDE6CU1hcmtlciBmb3IgdGhpbmtwYWQtYWNwaSB3aXRoIGhvdCBrZXkgTlZSQU0gcG9sbGluZworCQlhbmQgcHJvcGVyIGhvdGtleV9tYXNrIHNlbWFudGljcyAodmVyc2lvbiA4IG9mIHRoZQorCQlOVlJBTSBwb2xsaW5nIHBhdGNoKS4gIFNvbWUgZGV2ZWxvcG1lbnQgc25hcHNob3RzIG9mCisJCTAuMTggaGFkIGFuIGVhcmxpZXIgdmVyc2lvbiB0aGF0IGRpZCBzdHJhbmdlIHRoaW5ncworCQl0byBob3RrZXlfbWFzay4KKworMHgwMjAyMDA6CUFkZCBwb2xsKCkvc2VsZWN0KCkgc3VwcG9ydCB0byB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CisJCWhvdGtleV9yYWRpb19zdywgd2FrZXVwX2hvdHVucGx1Z19jb21wbGV0ZSwgd2FrZXVwX3JlYXNvbgorCisweDAyMDMwMDoJaG90a2V5IGVuYWJsZS9kaXNhYmxlIHN1cHBvcnQgcmVtb3ZlZCwgYXR0cmlidXRlcworCQlob3RrZXlfYmlvc19lbmFibGVkIGFuZCBob3RrZXlfZW5hYmxlIGRlcHJlY2F0ZWQgYW5kCisJCW1hcmtlZCBmb3IgcmVtb3ZhbC4KKworMHgwMjA0MDA6CU1hcmtlciBmb3IgMTYgTEVEcyBzdXBwb3J0LiAgQWxzbywgTEVEcyB0aGF0IGFyZSBrbm93bgorCQl0byBub3QgZXhpc3QgaW4gYSBnaXZlbiBtb2RlbCBhcmUgbm90IHJlZ2lzdGVyZWQgd2l0aAorCQl0aGUgTEVEIHN5c2ZzIGNsYXNzIGFueW1vcmUuCisKKzB4MDIwNTAwOglVcGRhdGVkIGhvdGtleSBkcml2ZXIsIGhvdGtleV9tYXNrIGlzIGFsd2F5cyBhdmFpbGFibGUKKwkJYW5kIGl0IGlzIGFsd2F5cyBhYmxlIHRvIGRpc2FibGUgaG90IGtleXMuICBWZXJ5IG9sZAorCQl0aGlua3BhZHMgYXJlIHByb3Blcmx5IHN1cHBvcnRlZC4gIGhvdGtleV9iaW9zX21hc2sKKwkJaXMgZGVwcmVjYXRlZCBhbmQgbWFya2VkIGZvciByZW1vdmFsLgorCisweDAyMDYwMDoJTWFya2VyIGZvciBiYWNrbGlnaHQgY2hhbmdlIGV2ZW50IHN1cHBvcnQuCisKKzB4MDIwNzAwOglTdXBwb3J0IGZvciBtdXRlLW9ubHkgbWl4ZXJzLgorCQlWb2x1bWUgY29udHJvbCBpbiByZWFkLW9ubHkgbW9kZSBieSBkZWZhdWx0LgorCQlNYXJrZXIgZm9yIEFMU0EgbWl4ZXIgc3VwcG9ydC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbGFwdG9wcy90b3NoaWJhX2hhcHMudHh0IGIvRG9jdW1lbnRhdGlvbi9sYXB0b3BzL3Rvc2hpYmFfaGFwcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFkYmNmZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbGFwdG9wcy90b3NoaWJhX2hhcHMudHh0CkBAIC0wLDAgKzEsNzYgQEAKK0tlcm5lbCBkcml2ZXIgdG9zaGliYV9oYXBzCitUb3NoaWJhIEhERCBBY3RpdmUgUHJvdGVjdGlvbiBTZW5zb3IKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBdXRob3I6IEF6YWVsIEF2YWxvcyA8Y29wcm9zY2VmYWxvQGdtYWlsLmNvbT4KKworCiswLiBDb250ZW50cworLS0tLS0tLS0tLS0KKworMS4gRGVzY3JpcHRpb24KKzIuIEludGVyZmFjZQorMy4gQWNjZWxlcm9tZXRlciBheGVzCis0LiBTdXBwb3J0ZWQgZGV2aWNlcworNS4gVXNhZ2UKKworCisxLiBEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlIGFjY2VsZXJvbWV0ZXIgZm91bmQgaW4gdmFyaW91cyBUb3NoaWJhCitsYXB0b3BzLCBiZWluZyBjYWxsZWQgIlRvc2hpYmEgSEREIFByb3RlY3Rpb24gLSBTaG9jayBTZW5zb3IiIG9mZmljaWFseSwKK2FuZCBkZXRlY3RzIGxhcHRvcHMgYXV0b21hdGljYWxseSB3aXRoIHRoaXMgZGV2aWNlLgorT24gV2luZG93cywgVG9zaGliYSBwcm92aWRlZCBzb2Z0d2FyZSBtb25pdG9ycyB0aGlzIGRldmljZSBhbmQgcHJvdmlkZXMKK2F1dG9tYXRpYyBIREQgcHJvdGVjdGlvbiAoaGVhZCB1bmxvYWQpIG9uIHN1ZGRlbiBtb3ZlcyBvciBoYXJzaCB2aWJyYXRpb25zLAoraG93ZXZlciwgdGhpcyBkcml2ZXIgb25seSBwcm92aWRlcyBhIG5vdGlmaWNhdGlvbiB2aWEgYSBzeXNmcyBmaWxlIHRvIGxldAordXNlcnNwYWNlIHRvb2xzIG9yIGRhZW1vbnMgYWN0IGFjY29yZGluZ2x5LCBhcyB3ZWxsIGFzIHByb3ZpZGluZyBhIHN5c2ZzCitmaWxlIHRvIHNldCB0aGUgZGVzaXJlZCBwcm90ZWN0aW9uIGxldmVsIG9yIHNlbnNvciBzZW5zaWJpbGl0eS4KKworCisyLiBJbnRlcmZhY2UKKy0tLS0tLS0tLS0tLQorCitUaGlzIGRldmljZSBjb21lcyB3aXRoIDMgbWV0aG9kczoKK19TVEEgLSAgQ2hlY2tzIGV4aXN0ZW5jZSBvZiB0aGUgZGV2aWNlLCByZXR1cm5pbmcgWmVybyBpZiB0aGUgZGV2aWNlIGRvZXMgbm90CisJZXhpc3RzIG9yIGlzIG5vdCBzdXBwb3J0ZWQuCitQVExWIC0gIFNldHMgdGhlIGRlc2lyZWQgcHJvdGVjdGlvbiBsZXZlbC4KK1JTU1MgLSAgU2h1dHMgZG93biB0aGUgSEREIHByb3RlY3Rpb24gaW50ZXJmYWNlIGZvciBhIGZldyBzZWNvbmRzLAorCXRoZW4gcmVzdG9yZXMgbm9ybWFsIG9wZXJhdGlvbi4KKworTm90ZToKK1RoZSBwcmVzZW5jZSBvZiBTb2xpZCBTdGF0ZSBEcml2ZXMgKFNTRCkgY2FuIG1ha2UgdGhpcyBkcml2ZXIgdG8gZmFpbCBsb2FkaW5nLAorZ2l2ZW4gdGhlIGZhY3QgdGhhdCBzdWNoIGRyaXZlcyBoYXZlIG5vIG1vdmFibGUgcGFydHMsIGFuZCB0aHVzLCBub3QgcmVxdWlyaW5nCithbnkgInByb3RlY3Rpb24iIGFzIHdlbGwgYXMgZmFpbGluZyBkdXJpbmcgdGhlIGV2YWx1YXRpb24gb2YgdGhlIF9TVEEgbWV0aG9kCitmb3VuZCB1bmRlciB0aGlzIGRldmljZS4KKworCiszLiBBY2NlbGVyb21ldGVyIGF4ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGRldmljZSBkb2VzIG5vdCByZXBvcnQgYW55IGF4ZXMsIGhvd2V2ZXIsIHRvIHF1ZXJ5IHRoZSBzZW5zb3IgcG9zaXRpb24KK2EgY291cGxlIEhDSSAoSGFyZHdhcmUgQ29uZmlndXJhdGlvbiBJbnRlcmZhY2UpIGNhbGxzICgweDZEIGFuZCAweEE2KSBhcmUKK3Byb3ZpZGVkIHRvIHF1ZXJ5IHN1Y2ggaW5mb3JtYXRpb24sIGhhbmRsZWQgYnkgdGhlIGtlcm5lbCBtb2R1bGUgdG9zaGliYV9hY3BpCitzaW5jZSBrZXJuZWwgdmVyc2lvbiAzLjE1LgorCisKKzQuIFN1cHBvcnRlZCBkZXZpY2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBiaW5kcyBpdHNlbGYgdG8gdGhlIEFDUEkgZGV2aWNlIFRPUzYyMEEsIGFuZCBhbnkgVG9zaGliYSBsYXB0b3AKK3dpdGggdGhpcyBkZXZpY2UgaXMgc3VwcG9ydGVkLCBnaXZlbiB0aGUgZmFjdCB0aGF0IHRoZXkgaGF2ZSB0aGUgcHJlc2VuY2Ugb2YKK2NvbnZlbnRpb25hbCBIREQgYW5kIG5vdCBvbmx5IFNTRCwgb3IgYSBjb21iaW5hdGlvbiBvZiBib3RoIEhERCBhbmQgU1NELgorCisKKzUuIFVzYWdlCistLS0tLS0tLQorCitUaGUgc3lzZnMgZmlsZXMgdW5kZXIgL3N5cy9kZXZpY2VzL0xOWFNZU1RNOjAwL0xOWFNZQlVTOjAwL1RPUzYyMEE6MDAvIGFyZToKK3Byb3RlY3Rpb25fbGV2ZWwgLSBUaGUgcHJvdGVjdGlvbl9sZXZlbCBpcyByZWFkYWJsZSBhbmQgd3JpdGVhYmxlLCBhbmQKKwkJICAgcHJvdmlkZXMgYSB3YXkgdG8gbGV0IHVzZXJzcGFjZSBxdWVyeSB0aGUgY3VycmVudCBwcm90ZWN0aW9uCisJCSAgIGxldmVsLCBhcyB3ZWxsIGFzIHNldCB0aGUgZGVzaXJlZCBwcm90ZWN0aW9uIGxldmVsLCB0aGUKKwkJICAgYXZhaWxhYmxlIHByb3RlY3Rpb24gbGV2ZWxzIGFyZToKKwkJICAgMCAtIERpc2FibGVkIHwgMSAtIExvdyB8IDIgLSBNZWRpdW0gfCAzIC0gSGlnaAorcmVzZXRfcHJvdGVjdGlvbiAtIFRoZSByZXNldF9wcm90ZWN0aW9uIGVudHJ5IGlzIHdyaXRlYWJsZSBvbmx5LCBiZWluZyAiMSIKKwkJICAgdGhlIG9ubHkgcGFyYW1ldGVyIGl0IGFjY2VwdHMsIGl0IGlzIHVzZWQgdG8gdHJpZ2dlcgorCQkgICBhIHJlc2V0IG9mIHRoZSBwcm90ZWN0aW9uIGludGVyZmFjZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbGRtLnR4dCBiL0RvY3VtZW50YXRpb24vbGRtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjgwZWRkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9sZG0udHh0CkBAIC0wLDAgKzEsMTA5IEBACisKKyAgICAgICAgICAgIExETSAtIExvZ2ljYWwgRGlzayBNYW5hZ2VyIChEeW5hbWljIERpc2tzKQorICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK09yaWdpbmFsbHkgV3JpdHRlbiBieSBGbGF0Q2FwIC0gUmljaGFyZCBSdXNzb24gPGxkbUBmbGF0Y2FwLm9yZz4uCitMYXN0IFVwZGF0ZWQgYnkgQW50b24gQWx0YXBhcm1ha292IG9uIDMwIE1hcmNoIDIwMDcgZm9yIFdpbmRvd3MgVmlzdGEuCisKK092ZXJ2aWV3CistLS0tLS0tLQorCitXaW5kb3dzIDIwMDAsIFhQLCBhbmQgVmlzdGEgdXNlIGEgbmV3IHBhcnRpdGlvbmluZyBzY2hlbWUuICBJdCBpcyBhIGNvbXBsZXRlCityZXBsYWNlbWVudCBmb3IgdGhlIE1TRE9TIHN0eWxlIHBhcnRpdGlvbnMuICBJdCBzdG9yZXMgaXRzIGluZm9ybWF0aW9uIGluIGEKKzFNaUIgam91cm5hbGxlZCBkYXRhYmFzZSBhdCB0aGUgZW5kIG9mIHRoZSBwaHlzaWNhbCBkaXNrLiAgVGhlIHNpemUgb2YKK3BhcnRpdGlvbnMgaXMgbGltaXRlZCBvbmx5IGJ5IGRpc2sgc3BhY2UuICBUaGUgbWF4aW11bSBudW1iZXIgb2YgcGFydGl0aW9ucyBpcworbmVhcmx5IDIwMDAuCisKK0FueSBwYXJ0aXRpb25zIGNyZWF0ZWQgdW5kZXIgdGhlIExETSBhcmUgY2FsbGVkICJEeW5hbWljIERpc2tzIi4gIFRoZXJlIGFyZSBubworbG9uZ2VyIGFueSBwcmltYXJ5IG9yIGV4dGVuZGVkIHBhcnRpdGlvbnMuICBOb3JtYWwgTVNET1Mgc3R5bGUgcGFydGl0aW9ucyBhcmUKK25vdyBrbm93biBhcyBCYXNpYyBEaXNrcy4KKworSWYgeW91IHdpc2ggdG8gdXNlIFNwYW5uZWQsIFN0cmlwZWQsIE1pcnJvcmVkIG9yIFJBSUQgNSBWb2x1bWVzLCB5b3UgbXVzdCB1c2UKK0R5bmFtaWMgRGlza3MuICBUaGUgam91cm5hbGxpbmcgYWxsb3dzIFdpbmRvd3MgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoZXNlCitwYXJ0aXRpb25zIGFuZCBmaWxlc3lzdGVtcyB3aXRob3V0IHRoZSBuZWVkIHRvIHJlYm9vdC4KKworT25jZSB0aGUgTERNIGRyaXZlciBoYXMgZGl2aWRlZCB1cCB0aGUgZGlzaywgeW91IGNhbiB1c2UgdGhlIE1EIGRyaXZlciB0bworYXNzZW1ibGUgYW55IG11bHRpLXBhcnRpdGlvbiB2b2x1bWVzLCBlLmcuICBTdHJpcGVzLCBSQUlENS4KKworVG8gcHJldmVudCBsZWdhY3kgYXBwbGljYXRpb25zIGZyb20gcmVwYXJ0aXRpb25pbmcgdGhlIGRpc2ssIHRoZSBMRE0gY3JlYXRlcyBhCitkdW1teSBNU0RPUyBwYXJ0aXRpb24gY29udGFpbmluZyBvbmUgZGlzay1zaXplZCBwYXJ0aXRpb24uICBUaGlzIGlzIHdoYXQgaXMKK3N1cHBvcnRlZCB3aXRoIHRoZSBMaW51eCBMRE0gZHJpdmVyLgorCitBIG5ld2VyIGFwcHJvYWNoIHRoYXQgaGFzIGJlZW4gaW1wbGVtZW50ZWQgd2l0aCBWaXN0YSBpcyB0byBwdXQgTERNIG9uIHRvcCBvZiBhCitHUFQgbGFiZWwgZGlzay4gIFRoaXMgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgTGludXggTERNIGRyaXZlciB5ZXQuCisKKworRXhhbXBsZQorLS0tLS0tLQorCitCZWxvdyB3ZSBoYXZlIGEgNTBNaUIgZGlzaywgZGl2aWRlZCBpbnRvIHNldmVuIHBhcnRpdGlvbnMuCitOLkIuICBUaGUgbWlzc2luZyAxTWlCIGF0IHRoZSBlbmQgb2YgdGhlIGRpc2sgaXMgd2hlcmUgdGhlIExETSBkYXRhYmFzZSBpcworICAgICAgc3RvcmVkLgorCisgIERldmljZSB8IE9mZnNldCBCeXRlcyAgU2VjdG9ycyAgTWlCIHwgU2l6ZSAgIEJ5dGVzICBTZWN0b3JzICBNaUIKKyAgLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBoZGEgICAgfCAgICAgICAgICAgIDAgICAgICAgIDAgICAgMCB8ICAgICA1MjQyODgwMCAgIDEwMjQwMCAgIDUwCisgIGhkYTEgICB8ICAgICA1MTM4MDIyNCAgIDEwMDM1MiAgIDQ5IHwgICAgICAxMDQ4NTc2ICAgICAyMDQ4ICAgIDEKKyAgaGRhMiAgIHwgICAgICAgIDE2Mzg0ICAgICAgIDMyICAgIDAgfCAgICAgIDY5Nzk1ODQgICAgMTM2MzIgICAgNgorICBoZGEzICAgfCAgICAgIDY5OTU5NjggICAgMTM2NjQgICAgNiB8ICAgICAxMDQ4NTc2MCAgICAyMDQ4MCAgIDEwCisgIGhkYTQgICB8ICAgICAxNzQ4MTcyOCAgICAzNDE0NCAgIDE2IHwgICAgICA0MTk0MzA0ICAgICA4MTkyICAgIDQKKyAgaGRhNSAgIHwgICAgIDIxNjc2MDMyICAgIDQyMzM2ICAgMjAgfCAgICAgIDUyNDI4ODAgICAgMTAyNDAgICAgNQorICBoZGE2ICAgfCAgICAgMjY5MTg5MTIgICAgNTI1NzYgICAyNSB8ICAgICAxMDQ4NTc2MCAgICAyMDQ4MCAgIDEwCisgIGhkYTcgICB8ICAgICAzNzQwNDY3MiAgICA3MzA1NiAgIDM1IHwgICAgIDEzOTU5MTY4ICAgIDI3MjY0ICAgMTMKKworVGhlIExETSBEYXRhYmFzZSBtYXkgbm90IHN0b3JlIHRoZSBwYXJ0aXRpb25zIGluIHRoZSBvcmRlciB0aGF0IHRoZXkgYXBwZWFyIG9uCitkaXNrLCBidXQgdGhlIGRyaXZlciB3aWxsIHNvcnQgdGhlbS4KKworV2hlbiBMaW51eCBib290cywgeW91IHdpbGwgc2VlIHNvbWV0aGluZyBsaWtlOgorCisgIGhkYTogMTAyNDAwIHNlY3RvcnMgdy8zMktpQiBDYWNoZSwgQ0hTPTUwLzY0LzMyCisgIGhkYTogW0xETV0gaGRhMSBoZGEyIGhkYTMgaGRhNCBoZGE1IGhkYTYgaGRhNworCisKK0NvbXBpbGluZyBMRE0gU3VwcG9ydAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RvIGVuYWJsZSBMRE0sIGNob29zZSB0aGUgZm9sbG93aW5nIHR3byBvcHRpb25zOiAKKworICAiQWR2YW5jZWQgcGFydGl0aW9uIHNlbGVjdGlvbiIgQ09ORklHX1BBUlRJVElPTl9BRFZBTkNFRAorICAiV2luZG93cyBMb2dpY2FsIERpc2sgTWFuYWdlciAoRHluYW1pYyBEaXNrKSBzdXBwb3J0IiBDT05GSUdfTERNX1BBUlRJVElPTgorCitJZiB5b3UgYmVsaWV2ZSB0aGUgZHJpdmVyIGlzbid0IHdvcmtpbmcgYXMgaXQgc2hvdWxkLCB5b3UgY2FuIGVuYWJsZSB0aGUgZXh0cmEKK2RlYnVnZ2luZyBjb2RlLiAgVGhpcyB3aWxsIHByb2R1Y2UgYSBMT1Qgb2Ygb3V0cHV0LiAgVGhlIG9wdGlvbiBpczoKKworICAiV2luZG93cyBMRE0gZXh0cmEgbG9nZ2luZyIgQ09ORklHX0xETV9ERUJVRworCitOLkIuIFRoZSBwYXJ0aXRpb24gY29kZSBjYW5ub3QgYmUgY29tcGlsZWQgYXMgYSBtb2R1bGUuCisKK0FzIHdpdGggYWxsIHRoZSBwYXJ0aXRpb24gY29kZSwgaWYgdGhlIGRyaXZlciBkb2Vzbid0IHNlZSBzaWducyBvZiBpdHMgdHlwZSBvZgorcGFydGl0aW9uLCBpdCB3aWxsIHBhc3MgY29udHJvbCB0byBhbm90aGVyIGRyaXZlciwgc28gdGhlcmUgaXMgbm8gaGFybSBpbgorZW5hYmxpbmcgaXQuCisKK0lmIHlvdSBoYXZlIER5bmFtaWMgRGlza3MgYnV0IGRvbid0IGVuYWJsZSB0aGUgZHJpdmVyLCB0aGVuIGFsbCB5b3Ugd2lsbCBzZWUKK2lzIGEgZHVtbXkgTVNET1MgcGFydGl0aW9uIGZpbGxpbmcgdGhlIHdob2xlIGRpc2suICBZb3Ugd29uJ3QgYmUgYWJsZSB0byBtb3VudAorYW55IG9mIHRoZSB2b2x1bWVzIG9uIHRoZSBkaXNrLgorCisKK0Jvb3RpbmcKKy0tLS0tLS0KKworSWYgeW91IGVuYWJsZSBMRE0gc3VwcG9ydCwgdGhlbiBsaWxvIGlzIGNhcGFibGUgb2YgYm9vdGluZyBmcm9tIGFueSBvZiB0aGUKK2Rpc2NvdmVyZWQgcGFydGl0aW9ucy4gIEhvd2V2ZXIsIGdydWIgZG9lcyBub3QgdW5kZXJzdGFuZCB0aGUgTERNIHBhcnRpdGlvbmluZworYW5kIGNhbm5vdCBib290IGZyb20gYSBEeW5hbWljIERpc2suCisKKworTW9yZSBEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgaXMgYW4gT3ZlcnZpZXcgb2YgdGhlIExETSB0b2dldGhlciB3aXRoIGNvbXBsZXRlIFRlY2huaWNhbCBEb2N1bWVudGF0aW9uLgorSXQgaXMgYXZhaWxhYmxlIGZvciBkb3dubG9hZC4KKworICBodHRwOi8vd3d3LmxpbnV4LW50ZnMub3JnLworCitJZiB5b3UgaGF2ZSBhbnkgTERNIHF1ZXN0aW9ucyB0aGF0IGFyZW4ndCBhbnN3ZXJlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiwgZW1haWwKK21lLgorCitDaGVlcnMsCisgICAgRmxhdENhcCAtIFJpY2hhcmQgUnVzc29uCisgICAgbGRtQGZsYXRjYXAub3JnCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbGVkcy8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vbGVkcy8wMC1JTkRFWApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGVmMWYzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9sZWRzLzAwLUlOREVYCkBAIC0wLDAgKzEsMjIgQEAKKzAwLUlOREVYCisJLSBUaGlzIGZpbGUKK2xlZHMtYmxpbmttLnR4dAorCS0gRHJpdmVyIGZvciBCbGlua00gTEVELWRldmljZXMuCitsZWRzLWNsYXNzLnR4dAorCS0gZG9jdW1lbnRzIExFRCBoYW5kbGluZyB1bmRlciBMaW51eC4KK2xlZHMtbHAzOTQ0LnR4dAorCS0gbm90ZXMgb24gaG93IHRvIHVzZSB0aGUgbGVkcy1scDM5NDQgZHJpdmVyLgorbGVkcy1scDU1MjEudHh0CisJLSBub3RlcyBvbiBob3cgdG8gdXNlIHRoZSBsZWRzLWxwNTUyMSBkcml2ZXIuCitsZWRzLWxwNTUyMy50eHQKKwktIG5vdGVzIG9uIGhvdyB0byB1c2UgdGhlIGxlZHMtbHA1NTIzIGRyaXZlci4KK2xlZHMtbHA1NTYyLnR4dAorCS0gbm90ZXMgb24gaG93IHRvIHVzZSB0aGUgbGVkcy1scDU1NjIgZHJpdmVyLgorbGVkcy1scDU1eHgudHh0CisJLSBkZXNjcmlwdGlvbiBhYm91dCBscDU1eHggY29tbW9uIGRyaXZlci4KK2xlZHMtbG0zNTU2LnR4dAorCS0gbm90ZXMgb24gaG93IHRvIHVzZSB0aGUgbGVkcy1sbTM1NTYgZHJpdmVyLgorbGVkdHJpZy1vbmVzaG90LnR4dAorCS0gT25lLXNob3QgTEVEIHRyaWdnZXIgZm9yIGJvdGggc3BvcmFkaWMgYW5kIGRlbnNlIGV2ZW50cy4KK2xlZHRyaWctdHJhbnNpZW50LnR4dAorCS0gTEVEIFRyYW5zaWVudCBUcmlnZ2VyLCBvbmUgc2hvdCB0aW1lciBhY3RpdmF0aW9uLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9sZWRzL2xlZHMtYmxpbmttLnR4dCBiL0RvY3VtZW50YXRpb24vbGVkcy9sZWRzLWJsaW5rbS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRkOTJmNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbGVkcy9sZWRzLWJsaW5rbS50eHQKQEAgLTAsMCArMSw4MCBAQAorVGhlIGxlZHMtYmxpbmttIGRyaXZlciBzdXBwb3J0cyB0aGUgZGV2aWNlcyBvZiB0aGUgQmxpbmtNIGZhbWlseS4KKworVGhleSBhcmUgUkdCLUxFRCBtb2R1bGVzIGRyaXZlbiBieSBhIChBVCl0aW55IG1pY3JvY29udHJvbGxlciBhbmQKK2NvbW11bmljYXRlIHRocm91Z2ggSTJDLiBUaGUgZGVmYXVsdCBhZGRyZXNzIG9mIHRoZXNlIG1vZHVsZXMgaXMKKzB4MDkgYnV0IHRoaXMgY2FuIGJlIGNoYW5nZWQgdGhyb3VnaCBhIGNvbW1hbmQuIEJ5IHRoaXMgeW91IGNvdWxkCitkYXN5LWNoYWluIHVwIHRvIDEyNyBCbGlua01zIG9uIGFuIEkyQyBidXMuCisKK1RoZSBkZXZpY2UgYWNjZXB0cyBSR0IgYW5kIEhTQiBjb2xvciB2YWx1ZXMgdGhyb3VnaCBzZXBhcmF0ZSBjb21tYW5kcy4KK0Fsc28geW91IGNhbiBzdG9yZSBibGlua2luZyBzZXF1ZW5jZXMgYXMgInNjcmlwdHMiIGluCit0aGUgY29udHJvbGxlciBhbmQgcnVuIHRoZW0uIEFsc28gZmFkaW5nIGlzIGFuIG9wdGlvbi4KKworVGhlIGludGVyZmFjZSB0aGlzIGRyaXZlciBwcm92aWRlcyBpcyAyLWZvbGQ6CisKK2EpIExFRCBjbGFzcyBpbnRlcmZhY2UgZm9yIHVzZSB3aXRoIHRyaWdnZXJzCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitUaGUgcmVnaXN0cmF0aW9uIGZvbGxvd3MgdGhlIHNjaGVtZToKK2JsaW5rbS08aTJjLWJ1cy1ucj4tPGkyYy1kZXZpY2UtbnI+LTxjb2xvcj4KKworJCBscyAtaCAvc3lzL2NsYXNzL2xlZHMvYmxpbmttLTYtKgorL3N5cy9jbGFzcy9sZWRzL2JsaW5rbS02LTktYmx1ZToKK2JyaWdodG5lc3MgIGRldmljZSAgbWF4X2JyaWdodG5lc3MgIHBvd2VyICBzdWJzeXN0ZW0gIHRyaWdnZXIgIHVldmVudAorCisvc3lzL2NsYXNzL2xlZHMvYmxpbmttLTYtOS1ncmVlbjoKK2JyaWdodG5lc3MgIGRldmljZSAgbWF4X2JyaWdodG5lc3MgIHBvd2VyICBzdWJzeXN0ZW0gIHRyaWdnZXIgIHVldmVudAorCisvc3lzL2NsYXNzL2xlZHMvYmxpbmttLTYtOS1yZWQ6CiticmlnaHRuZXNzICBkZXZpY2UgIG1heF9icmlnaHRuZXNzICBwb3dlciAgc3Vic3lzdGVtICB0cmlnZ2VyICB1ZXZlbnQKKworKHNhbWUgaXMgL3N5cy9idXMvaTJjL2RldmljZXMvNi0wMDA5L2xlZHMpCisKK1dlIGNhbiBjb250cm9sIHRoZSBjb2xvcnMgc2VwYXJhdGVkIGludG8gcmVkLCBncmVlbiBhbmQgYmx1ZSBhbmQKK2Fzc2lnbiB0cmlnZ2VycyBvbiBlYWNoIGNvbG9yLgorCitFLmcuOgorCiskIGNhdCBibGlua20tNi05LWJsdWUvYnJpZ2h0bmVzcworMDUKKworJCBlY2hvIDIwMCA+IGJsaW5rbS02LTktYmx1ZS9icmlnaHRuZXNzCiskCisKKyQgbW9kcHJvYmUgbGVkdHJpZy1oZWFydGJlYXQKKyQgZWNobyBoZWFydGJlYXQgPiBibGlua20tNi05LWdyZWVuL3RyaWdnZXIKKyQKKworCitiKSBTeXNmcyBncm91cCB0byBjb250cm9sIHJnYiwgZmFkZSwgaHNiLCBzY3JpcHRzIC4uLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworVGhpcyBleHRlbmRlZCBpbnRlcmZhY2UgaXMgYXZhaWxhYmxlIGFzIGZvbGRlciBibGlua20KK2luIHRoZSBzeXNmcyBmb2xkZXIgb2YgdGhlIEkyQyBkZXZpY2UuCitFLmcuIGJlbG93IC9zeXMvYnVzL2kyYy9kZXZpY2VzLzYtMDAwOS9ibGlua20KKworJCBscyAtaCAvc3lzL2J1cy9pMmMvZGV2aWNlcy82LTAwMDkvYmxpbmttLworYmx1ZSAgZ3JlZW4gIHJlZCAgdGVzdAorCitDdXJyZW50bHkgc3VwcG9ydGVkIGlzIGp1c3Qgc2V0dGluZyByZWQsIGdyZWVuLCBibHVlCithbmQgYSB0ZXN0IHNlcXVlbmNlLgorCitFLmcuOgorCiskIGNhdCAqCiswMAorMDAKKzAwCisjV3JpdGUgaW50byB0ZXN0IHRvIHN0YXJ0IHRlc3Qgc2VxdWVuY2UhIworCiskIGVjaG8gMSA+IHRlc3QKKyQKKworJCBlY2hvIDI1NSA+IHJlZAorJAorCisKKworYXMgb2YgNi8yMDEyCisKK2RsOXBmIDxhdD4gZ214IDxkb3Q+IGRlCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbGVkcy9sZWRzLWNsYXNzLWZsYXNoLnR4dCBiL0RvY3VtZW50YXRpb24vbGVkcy9sZWRzLWNsYXNzLWZsYXNoLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGEzYzZmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9sZWRzL2xlZHMtY2xhc3MtZmxhc2gudHh0CkBAIC0wLDAgKzEsNzMgQEAKKworRmxhc2ggTEVEIGhhbmRsaW5nIHVuZGVyIExpbnV4Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU29tZSBMRUQgZGV2aWNlcyBwcm92aWRlIHR3byBtb2RlcyAtIHRvcmNoIGFuZCBmbGFzaC4gSW4gdGhlIExFRCBzdWJzeXN0ZW0KK3Rob3NlIG1vZGVzIGFyZSBzdXBwb3J0ZWQgYnkgTEVEIGNsYXNzIChzZWUgRG9jdW1lbnRhdGlvbi9sZWRzL2xlZHMtY2xhc3MudHh0KQorYW5kIExFRCBGbGFzaCBjbGFzcyByZXNwZWN0aXZlbHkuIFRoZSB0b3JjaCBtb2RlIHJlbGF0ZWQgZmVhdHVyZXMgYXJlIGVuYWJsZWQKK2J5IGRlZmF1bHQgYW5kIHRoZSBmbGFzaCBvbmVzIG9ubHkgaWYgYSBkcml2ZXIgZGVjbGFyZXMgaXQgYnkgc2V0dGluZworTEVEX0RFVl9DQVBfRkxBU0ggZmxhZy4KKworSW4gb3JkZXIgdG8gZW5hYmxlIHRoZSBzdXBwb3J0IGZvciBmbGFzaCBMRURzIENPTkZJR19MRURTX0NMQVNTX0ZMQVNIIHN5bWJvbAorbXVzdCBiZSBkZWZpbmVkIGluIHRoZSBrZXJuZWwgY29uZmlnLiBBIExFRCBGbGFzaCBjbGFzcyBkcml2ZXIgbXVzdCBiZQorcmVnaXN0ZXJlZCBpbiB0aGUgTEVEIHN1YnN5c3RlbSB3aXRoIGxlZF9jbGFzc2Rldl9mbGFzaF9yZWdpc3RlciBmdW5jdGlvbi4KKworRm9sbG93aW5nIHN5c2ZzIGF0dHJpYnV0ZXMgYXJlIGV4cG9zZWQgZm9yIGNvbnRyb2xsaW5nIGZsYXNoIExFRCBkZXZpY2VzOgorKHNlZSBEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLWxlZC1mbGFzaCkKKwktIGZsYXNoX2JyaWdodG5lc3MKKwktIG1heF9mbGFzaF9icmlnaHRuZXNzCisJLSBmbGFzaF90aW1lb3V0CisJLSBtYXhfZmxhc2hfdGltZW91dAorCS0gZmxhc2hfc3Ryb2JlCisJLSBmbGFzaF9mYXVsdAorCisKK1Y0TDIgZmxhc2ggd3JhcHBlciBmb3IgZmxhc2ggTEVEcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0EgTEVEIHN1YnN5c3RlbSBkcml2ZXIgY2FuIGJlIGNvbnRyb2xsZWQgYWxzbyBmcm9tIHRoZSBsZXZlbCBvZiBWaWRlb0ZvckxpbnV4Mgorc3Vic3lzdGVtLiBJbiBvcmRlciB0byBlbmFibGUgdGhpcyBDT05GSUdfVjRMMl9GTEFTSF9MRURfQ0xBU1Mgc3ltYm9sIGhhcyB0bworYmUgZGVmaW5lZCBpbiB0aGUga2VybmVsIGNvbmZpZy4KKworVGhlIGRyaXZlciBtdXN0IGNhbGwgdGhlIHY0bDJfZmxhc2hfaW5pdCBmdW5jdGlvbiB0byBnZXQgcmVnaXN0ZXJlZCBpbiB0aGUKK1Y0TDIgc3Vic3lzdGVtLiBUaGUgZnVuY3Rpb24gdGFrZXMgc2l4IGFyZ3VtZW50czoKKy0gZGV2ICAgICAgIDogZmxhc2ggZGV2aWNlLCBlLmcuIGFuIEkyQyBkZXZpY2UKKy0gb2Zfbm9kZSAgIDogb2Zfbm9kZSBvZiB0aGUgTEVELCBtYXkgYmUgTlVMTCBpZiB0aGUgc2FtZSBhcyBkZXZpY2UncworLSBmbGVkX2NkZXYgOiBMRUQgZmxhc2ggY2xhc3MgZGV2aWNlIHRvIHdyYXAKKy0gaWxlZF9jZGV2IDogTEVEIGZsYXNoIGNsYXNzIGRldmljZSByZXByZXNlbnRpbmcgaW5kaWNhdG9yIExFRCBhc3NvY2lhdGVkIHdpdGgKKwkgICAgICBmbGVkX2NkZXYsIG1heSBiZSBOVUxMCistIG9wcyA6IFY0TDIgc3BlY2lmaWMgb3BzCisJKiBleHRlcm5hbF9zdHJvYmVfc2V0IC0gZGVmaW5lcyB0aGUgc291cmNlIG9mIHRoZSBmbGFzaCBMRUQgc3Ryb2JlIC0KKwkJVjRMMl9DSURfRkxBU0hfU1RST0JFIGNvbnRyb2wgb3IgZXh0ZXJuYWwgc291cmNlLCB0eXBpY2FsbHkKKwkJYSBzZW5zb3IsIHdoaWNoIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHN5bmNocm9uaXNlIHRoZSBmbGFzaAorCQlzdHJvYmUgc3RhcnQgd2l0aCBleHBvc3VyZSBzdGFydCwKKwkqIGludGVuc2l0eV90b19sZWRfYnJpZ2h0bmVzcyBhbmQgbGVkX2JyaWdodG5lc3NfdG9faW50ZW5zaXR5IC0gcGVyZm9ybQorCQllbnVtIGxlZF9icmlnaHRuZXNzIDwtPiBWNEwyIGludGVuc2l0eSBjb252ZXJzaW9uIGluIGEgZGV2aWNlCisJCXNwZWNpZmljIG1hbm5lciAtIHRoZXkgY2FuIGJlIHVzZWQgZm9yIGRldmljZXMgd2l0aCBub24tbGluZWFyCisJCUxFRCBjdXJyZW50IHNjYWxlLgorLSBjb25maWcgOiBjb25maWd1cmF0aW9uIGZvciBWNEwyIEZsYXNoIHN1Yi1kZXZpY2UKKwkqIGRldl9uYW1lIC0gdGhlIG5hbWUgb2YgdGhlIG1lZGlhIGVudGl0eSwgdW5pcXVlIGluIHRoZSBzeXN0ZW0sCisJKiBmbGFzaF9mYXVsdHMgLSBiaXRtYXNrIG9mIGZsYXNoIGZhdWx0cyB0aGF0IHRoZSBMRUQgZmxhc2ggY2xhc3MKKwkJZGV2aWNlIGNhbiByZXBvcnQ7IGNvcnJlc3BvbmRpbmcgTEVEX0ZBVUxUKiBiaXQgZGVmaW5pdGlvbnMgYXJlCisJCWF2YWlsYWJsZSBpbiA8bGludXgvbGVkLWNsYXNzLWZsYXNoLmg+LAorCSogdG9yY2hfaW50ZW5zaXR5IC0gY29uc3RyYWludHMgZm9yIHRoZSBMRUQgaW4gVE9SQ0ggbW9kZQorCQlpbiBtaWNyb2FtcGVyZXMsCisJKiBpbmRpY2F0b3JfaW50ZW5zaXR5IC0gY29uc3RyYWludHMgZm9yIHRoZSBpbmRpY2F0b3IgTEVECisJCWluIG1pY3JvYW1wZXJlcywKKwkqIGhhc19leHRlcm5hbF9zdHJvYmUgLSBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGZsYXNoIHN0cm9iZSBzb3VyY2UKKwkJY2FuIGJlIHN3aXRjaGVkIHRvIGV4dGVybmFsLAorCitPbiByZW1vdmUgdGhlIHY0bDJfZmxhc2hfcmVsZWFzZSBmdW5jdGlvbiBoYXMgdG8gYmUgY2FsbGVkLCB3aGljaCB0YWtlcyBvbmUKK2FyZ3VtZW50IC0gc3RydWN0IHY0bDJfZmxhc2ggcG9pbnRlciByZXR1cm5lZCBwcmV2aW91c2x5IGJ5IHY0bDJfZmxhc2hfaW5pdC4KK1RoaXMgZnVuY3Rpb24gY2FuIGJlIHNhZmVseSBjYWxsZWQgd2l0aCBOVUxMIG9yIGVycm9yIHBvaW50ZXIgYXJndW1lbnQuCisKK1BsZWFzZSByZWZlciB0byBkcml2ZXJzL2xlZHMvbGVkcy1tYXg3NzY5My5jIGZvciBhbiBleGVtcGxhcnkgdXNhZ2Ugb2YgdGhlCit2NGwyIGZsYXNoIHdyYXBwZXIuCisKK09uY2UgdGhlIFY0TDIgc3ViLWRldmljZSBpcyByZWdpc3RlcmVkIGJ5IHRoZSBkcml2ZXIgd2hpY2ggY3JlYXRlZCB0aGUgTWVkaWEKK2NvbnRyb2xsZXIgZGV2aWNlLCB0aGUgc3ViLWRldmljZSBub2RlIGFjdHMganVzdCBhcyBhIG5vZGUgb2YgYSBuYXRpdmUgVjRMMgorZmxhc2ggQVBJIGRldmljZSB3b3VsZC4gVGhlIGNhbGxzIGFyZSBzaW1wbHkgcm91dGVkIHRvIHRoZSBMRUQgZmxhc2ggQVBJLgorCitPcGVuaW5nIHRoZSBWNEwyIGZsYXNoIHN1Yi1kZXZpY2UgbWFrZXMgdGhlIExFRCBzdWJzeXN0ZW0gc3lzZnMgaW50ZXJmYWNlCit1bmF2YWlsYWJsZS4gVGhlIGludGVyZmFjZSBpcyByZS1lbmFibGVkIGFmdGVyIHRoZSBWNEwyIGZsYXNoIHN1Yi1kZXZpY2UKK2lzIGNsb3NlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbGVkcy9sZWRzLWNsYXNzLnR4dCBiL0RvY3VtZW50YXRpb24vbGVkcy9sZWRzLWNsYXNzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjI2MWMwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9sZWRzL2xlZHMtY2xhc3MudHh0CkBAIC0wLDAgKzEsOTQgQEAKKworTEVEIGhhbmRsaW5nIHVuZGVyIExpbnV4Cis9PT09PT09PT09PT09PT09PT09PT09PT0KKworSW4gaXRzIHNpbXBsZXN0IGZvcm0sIHRoZSBMRUQgY2xhc3MganVzdCBhbGxvd3MgY29udHJvbCBvZiBMRURzIGZyb20KK3VzZXJzcGFjZS4gTEVEcyBhcHBlYXIgaW4gL3N5cy9jbGFzcy9sZWRzLy4gVGhlIG1heGltdW0gYnJpZ2h0bmVzcyBvZiB0aGUKK0xFRCBpcyBkZWZpbmVkIGluIG1heF9icmlnaHRuZXNzIGZpbGUuIFRoZSBicmlnaHRuZXNzIGZpbGUgd2lsbCBzZXQgdGhlIGJyaWdodG5lc3MKK29mIHRoZSBMRUQgKHRha2luZyBhIHZhbHVlIDAtbWF4X2JyaWdodG5lc3MpLiBNb3N0IExFRHMgZG9uJ3QgaGF2ZSBoYXJkd2FyZQorYnJpZ2h0bmVzcyBzdXBwb3J0IHNvIHdpbGwganVzdCBiZSB0dXJuZWQgb24gZm9yIG5vbi16ZXJvIGJyaWdodG5lc3Mgc2V0dGluZ3MuCisKK1RoZSBjbGFzcyBhbHNvIGludHJvZHVjZXMgdGhlIG9wdGlvbmFsIGNvbmNlcHQgb2YgYW4gTEVEIHRyaWdnZXIuIEEgdHJpZ2dlcgoraXMgYSBrZXJuZWwgYmFzZWQgc291cmNlIG9mIGxlZCBldmVudHMuIFRyaWdnZXJzIGNhbiBlaXRoZXIgYmUgc2ltcGxlIG9yCitjb21wbGV4LiBBIHNpbXBsZSB0cmlnZ2VyIGlzbid0IGNvbmZpZ3VyYWJsZSBhbmQgaXMgZGVzaWduZWQgdG8gc2xvdCBpbnRvCitleGlzdGluZyBzdWJzeXN0ZW1zIHdpdGggbWluaW1hbCBhZGRpdGlvbmFsIGNvZGUuIEV4YW1wbGVzIGFyZSB0aGUgaWRlLWRpc2ssCituYW5kLWRpc2sgYW5kIHNoYXJwc2wtY2hhcmdlIHRyaWdnZXJzLiBXaXRoIGxlZCB0cmlnZ2VycyBkaXNhYmxlZCwgdGhlIGNvZGUKK29wdGltaXNlcyBhd2F5LgorCitDb21wbGV4IHRyaWdnZXJzIHdoaWxzdCBhdmFpbGFibGUgdG8gYWxsIExFRHMgaGF2ZSBMRUQgc3BlY2lmaWMKK3BhcmFtZXRlcnMgYW5kIHdvcmsgb24gYSBwZXIgTEVEIGJhc2lzLiBUaGUgdGltZXIgdHJpZ2dlciBpcyBhbiBleGFtcGxlLgorVGhlIHRpbWVyIHRyaWdnZXIgd2lsbCBwZXJpb2RpY2FsbHkgY2hhbmdlIHRoZSBMRUQgYnJpZ2h0bmVzcyBiZXR3ZWVuCitMRURfT0ZGIGFuZCB0aGUgY3VycmVudCBicmlnaHRuZXNzIHNldHRpbmcuIFRoZSAib24iIGFuZCAib2ZmIiB0aW1lIGNhbgorYmUgc3BlY2lmaWVkIHZpYSAvc3lzL2NsYXNzL2xlZHMvPGRldmljZT4vZGVsYXlfe29uLG9mZn0gaW4gbWlsbGlzZWNvbmRzLgorWW91IGNhbiBjaGFuZ2UgdGhlIGJyaWdodG5lc3MgdmFsdWUgb2YgYSBMRUQgaW5kZXBlbmRlbnRseSBvZiB0aGUgdGltZXIKK3RyaWdnZXIuIEhvd2V2ZXIsIGlmIHlvdSBzZXQgdGhlIGJyaWdodG5lc3MgdmFsdWUgdG8gTEVEX09GRiBpdCB3aWxsCithbHNvIGRpc2FibGUgdGhlIHRpbWVyIHRyaWdnZXIuCisKK1lvdSBjYW4gY2hhbmdlIHRyaWdnZXJzIGluIGEgc2ltaWxhciBtYW5uZXIgdG8gdGhlIHdheSBhbiBJTyBzY2hlZHVsZXIKK2lzIGNob3NlbiAodmlhIC9zeXMvY2xhc3MvbGVkcy88ZGV2aWNlPi90cmlnZ2VyKS4gVHJpZ2dlciBzcGVjaWZpYworcGFyYW1ldGVycyBjYW4gYXBwZWFyIGluIC9zeXMvY2xhc3MvbGVkcy88ZGV2aWNlPiBvbmNlIGEgZ2l2ZW4gdHJpZ2dlciBpcworc2VsZWN0ZWQuCisKKworRGVzaWduIFBoaWxvc29waHkKKz09PT09PT09PT09PT09PT09CisKK1RoZSB1bmRlcmx5aW5nIGRlc2lnbiBwaGlsb3NvcGh5IGlzIHNpbXBsaWNpdHkuIExFRHMgYXJlIHNpbXBsZSBkZXZpY2VzCithbmQgdGhlIGFpbSBpcyB0byBrZWVwIGEgc21hbGwgYW1vdW50IG9mIGNvZGUgZ2l2aW5nIGFzIG11Y2ggZnVuY3Rpb25hbGl0eQorYXMgcG9zc2libGUuICBQbGVhc2Uga2VlcCB0aGlzIGluIG1pbmQgd2hlbiBzdWdnZXN0aW5nIGVuaGFuY2VtZW50cy4KKworCitMRUQgRGV2aWNlIE5hbWluZworPT09PT09PT09PT09PT09PT0KKworSXMgY3VycmVudGx5IG9mIHRoZSBmb3JtOgorCisiZGV2aWNlbmFtZTpjb2xvdXI6ZnVuY3Rpb24iCisKK1RoZXJlIGhhdmUgYmVlbiBjYWxscyBmb3IgTEVEIHByb3BlcnRpZXMgc3VjaCBhcyBjb2xvdXIgdG8gYmUgZXhwb3J0ZWQgYXMKK2luZGl2aWR1YWwgbGVkIGNsYXNzIGF0dHJpYnV0ZXMuIEFzIGEgc29sdXRpb24gd2hpY2ggZG9lc24ndCBpbmN1ciBhcyBtdWNoCitvdmVyaGVhZCwgSSBzdWdnZXN0IHRoZXNlIGJlY29tZSBwYXJ0IG9mIHRoZSBkZXZpY2UgbmFtZS4gVGhlIG5hbWluZyBzY2hlbWUKK2Fib3ZlIGxlYXZlcyBzY29wZSBmb3IgZnVydGhlciBhdHRyaWJ1dGVzIHNob3VsZCB0aGV5IGJlIG5lZWRlZC4gSWYgc2VjdGlvbnMKK29mIHRoZSBuYW1lIGRvbid0IGFwcGx5LCBqdXN0IGxlYXZlIHRoYXQgc2VjdGlvbiBibGFuay4KKworCitIYXJkd2FyZSBhY2NlbGVyYXRlZCBibGluayBvZiBMRURzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1NvbWUgTEVEcyBjYW4gYmUgcHJvZ3JhbW1lZCB0byBibGluayB3aXRob3V0IGFueSBDUFUgaW50ZXJhY3Rpb24uIFRvCitzdXBwb3J0IHRoaXMgZmVhdHVyZSwgYSBMRUQgZHJpdmVyIGNhbiBvcHRpb25hbGx5IGltcGxlbWVudCB0aGUKK2JsaW5rX3NldCgpIGZ1bmN0aW9uIChzZWUgPGxpbnV4L2xlZHMuaD4pLiBUbyBzZXQgYW4gTEVEIHRvIGJsaW5raW5nLAoraG93ZXZlciwgaXQgaXMgYmV0dGVyIHRvIHVzZSB0aGUgQVBJIGZ1bmN0aW9uIGxlZF9ibGlua19zZXQoKSwgYXMgaXQKK3dpbGwgY2hlY2sgYW5kIGltcGxlbWVudCBzb2Z0d2FyZSBmYWxsYmFjayBpZiBuZWNlc3NhcnkuCisKK1RvIHR1cm4gb2ZmIGJsaW5raW5nIGFnYWluLCB1c2UgdGhlIEFQSSBmdW5jdGlvbiBsZWRfYnJpZ2h0bmVzc19zZXQoKQorYXMgdGhhdCB3aWxsIG5vdCBqdXN0IHNldCB0aGUgTEVEIGJyaWdodG5lc3MgYnV0IGFsc28gc3RvcCBhbnkgc29mdHdhcmUKK3RpbWVycyB0aGF0IG1heSBoYXZlIGJlZW4gcmVxdWlyZWQgZm9yIGJsaW5raW5nLgorCitUaGUgYmxpbmtfc2V0KCkgZnVuY3Rpb24gc2hvdWxkIGNob29zZSBhIHVzZXIgZnJpZW5kbHkgYmxpbmtpbmcgdmFsdWUKK2lmIGl0IGlzIGNhbGxlZCB3aXRoICpkZWxheV9vbj09MCAmJiAqZGVsYXlfb2ZmPT0wIHBhcmFtZXRlcnMuIEluIHRoaXMKK2Nhc2UgdGhlIGRyaXZlciBzaG91bGQgZ2l2ZSBiYWNrIHRoZSBjaG9zZW4gdmFsdWUgdGhyb3VnaCBkZWxheV9vbiBhbmQKK2RlbGF5X29mZiBwYXJhbWV0ZXJzIHRvIHRoZSBsZWRzIHN1YnN5c3RlbS4KKworU2V0dGluZyB0aGUgYnJpZ2h0bmVzcyB0byB6ZXJvIHdpdGggYnJpZ2h0bmVzc19zZXQoKSBjYWxsYmFjayBmdW5jdGlvbgorc2hvdWxkIGNvbXBsZXRlbHkgdHVybiBvZmYgdGhlIExFRCBhbmQgY2FuY2VsIHRoZSBwcmV2aW91c2x5IHByb2dyYW1tZWQKK2hhcmR3YXJlIGJsaW5raW5nIGZ1bmN0aW9uLCBpZiBhbnkuCisKKworS25vd24gSXNzdWVzCis9PT09PT09PT09PT0KKworVGhlIExFRCBUcmlnZ2VyIGNvcmUgY2Fubm90IGJlIGEgbW9kdWxlIGFzIHRoZSBzaW1wbGUgdHJpZ2dlciBmdW5jdGlvbnMKK3dvdWxkIGNhdXNlIG5pZ2h0bWFyZSBkZXBlbmRlbmN5IGlzc3Vlcy4gSSBzZWUgdGhpcyBhcyBhIG1pbm9yIGlzc3VlCitjb21wYXJlZCB0byB0aGUgYmVuZWZpdHMgdGhlIHNpbXBsZSB0cmlnZ2VyIGZ1bmN0aW9uYWxpdHkgYnJpbmdzLiBUaGUKK3Jlc3Qgb2YgdGhlIExFRCBzdWJzeXN0ZW0gY2FuIGJlIG1vZHVsYXIuCisKKworRnV0dXJlIERldmVsb3BtZW50Cis9PT09PT09PT09PT09PT09PT0KKworQXQgdGhlIG1vbWVudCwgYSB0cmlnZ2VyIGNhbid0IGJlIGNyZWF0ZWQgc3BlY2lmaWNhbGx5IGZvciBhIHNpbmdsZSBMRUQuCitUaGVyZSBhcmUgYSBudW1iZXIgb2YgY2FzZXMgd2hlcmUgYSB0cmlnZ2VyIG1pZ2h0IG9ubHkgYmUgbWFwcGFibGUgdG8gYQorcGFydGljdWxhciBMRUQgKEFDUEk/KS4gVGhlIGFkZGl0aW9uIG9mIHRyaWdnZXJzIHByb3ZpZGVkIGJ5IHRoZSBMRUQgZHJpdmVyCitzaG91bGQgY292ZXIgdGhpcyBvcHRpb24gYW5kIGJlIHBvc3NpYmxlIHRvIGFkZCB3aXRob3V0IGJyZWFraW5nIHRoZQorY3VycmVudCBpbnRlcmZhY2UuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2xlZHMvbGVkcy1sbTM1NTYudHh0IGIvRG9jdW1lbnRhdGlvbi9sZWRzL2xlZHMtbG0zNTU2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjI3OGU4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9sZWRzL2xlZHMtbG0zNTU2LnR4dApAQCAtMCwwICsxLDg1IEBACitLZXJuZWwgZHJpdmVyIGZvciBsbTM1NTYKKz09PT09PT09PT09PT09PT09PT09PT09PQorCisqVGV4YXMgSW5zdHJ1bWVudDoKKyAxLjUgQSBTeW5jaHJvbm91cyBCb29zdCBMRUQgRmxhc2ggRHJpdmVyIHcvIEhpZ2gtU2lkZSBDdXJyZW50IFNvdXJjZQorKiBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cubmF0aW9uYWwuY29tL2RzL0xNL0xNMzU1Ni5wZGYKKworQXV0aG9yczoKKwlEYW5pZWwgSmVvbmcKKwlDb250YWN0OkRhbmllbCBKZW9uZyhkYW5pZWwuamVvbmctYXQtdGkuY29tLCBnc2hhcmsuamVvbmctYXQtZ21haWwuY29tKQorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KK1RoZXJlIGFyZSAzIGZ1bmN0aW9ucyBpbiBMTTM1NTYsIEZsYXNoLCBUb3JjaCBhbmQgSW5kaWNhdG9yLgorCitGTEFTSCBNT0RFCitJbiBGbGFzaCBNb2RlLCB0aGUgTEVEIGN1cnJlbnQgc291cmNlKExFRCkgcHJvdmlkZXMgMTYgdGFyZ2V0IGN1cnJlbnQgbGV2ZWxzCitmcm9tIDkzLjc1IG1BIHRvIDE1MDAgbUEuVGhlIEZsYXNoIGN1cnJlbnRzIGFyZSBhZGp1c3RlZCB2aWEgdGhlIENVUlJFTlQKK0NPTlRST0wgUkVHSVNURVIoMHgwOSkuRmxhc2ggbW9kZSBpcyBhY3RpdmF0ZWQgYnkgdGhlIEVOQUJMRSBSRUdJU1RFUigweDBBKSwKK29yIGJ5IHB1bGxpbmcgdGhlIFNUUk9CRSBwaW4gSElHSC4KK0xNMzU1NiBGbGFzaCBjYW4gYmUgY29udHJvbGxlZCB0aHJvdWdoIHN5cy9jbGFzcy9sZWRzL2ZsYXNoL2JyaWdodG5lc3MgZmlsZQorKiBpZiBTVFJPQkUgcGluIGlzIGVuYWJsZWQsIGJlbG93IGV4YW1wbGUgY29udHJvbCBicmlnaHRuZXNzIG9ubHksIGFuZAorT04gLyBPRkYgd2lsbCBiZSBjb250cm9sbGVkIGJ5IFNUUk9CRSBwaW4uCisKK0ZsYXNoIEV4YW1wbGU6CitPRkYgICAgIDogI2VjaG8gMCA+IHN5cy9jbGFzcy9sZWRzL2ZsYXNoL2JyaWdodG5lc3MKKzkzLjc1IG1BOiAjZWNobyAxID4gc3lzL2NsYXNzL2xlZHMvZmxhc2gvYnJpZ2h0bmVzcworLi4uIC4uLi4uCisxNTAwICBtQTogI2VjaG8gMTYgPiBzeXMvY2xhc3MvbGVkcy9mbGFzaC9icmlnaHRuZXNzCisKK1RPUkNIIE1PREUKK0luIFRvcmNoIE1vZGUsIHRoZSBjdXJyZW50IHNvdXJjZShMRUQpIGlzIHByb2dyYW1tZWQgdmlhIHRoZSBDVVJSRU5UIENPTlRST0wKK1JFR0lTVEVSKDB4MDkpLlRvcmNoIE1vZGUgaXMgYWN0aXZhdGVkIGJ5IHRoZSBFTkFCTEUgUkVHSVNURVIoMHgwQSkgb3IgYnkgdGhlCitoYXJkd2FyZSBUT1JDSCBpbnB1dC4KK0xNMzU1NiB0b3JjaCBjYW4gYmUgY29udHJvbGxlZCB0aHJvdWdoIHN5cy9jbGFzcy9sZWRzL3RvcmNoL2JyaWdodG5lc3MgZmlsZS4KKyogaWYgVE9SQ0ggcGluIGlzIGVuYWJsZWQsIGJlbG93IGV4YW1wbGUgY29udHJvbCBicmlnaHRuZXNzIG9ubHksCithbmQgT04gLyBPRkYgd2lsbCBiZSBjb250cm9sbGVkIGJ5IFRPUkNIIHBpbi4KKworVG9yY2ggRXhhbXBsZToKK09GRiAgICAgOiAjZWNobyAwID4gc3lzL2NsYXNzL2xlZHMvdG9yY2gvYnJpZ2h0bmVzcworNDYuODggbUE6ICNlY2hvIDEgPiBzeXMvY2xhc3MvbGVkcy90b3JjaC9icmlnaHRuZXNzCisuLi4gLi4uLi4KKzM3NSBtQSAgOiAjZWNobyA4ID4gc3lzL2NsYXNzL2xlZHMvdG9yY2gvYnJpZ2h0bmVzcworCitJTkRJQ0FUT1IgTU9ERQorSW5kaWNhdG9yIHBhdHRlcm4gY2FuIGJlIHNldCB0aHJvdWdoIHN5cy9jbGFzcy9sZWRzL2luZGljYXRvci9wYXR0ZXJuIGZpbGUsCithbmQgNCBwYXR0ZXJucyBhcmUgcHJlLWRlZmluZWQgaW4gaW5kaWNhdG9yX3BhdHRlcm4gYXJyYXkuCitBY2NvcmRpbmcgdG8gTi1sYW5rLCBQdWxzZSB0aW1lIGFuZCBOIFBlcmlvZCB2YWx1ZXMsIGRpZmZlcmVudCBwYXR0ZXJuIHdpaWxsCitiZSBnZW5lcmF0ZWQuSWYgeW91IHdhbnQgbmV3IHBhdHRlcm5zIGZvciB5b3VyIG93biBkZXZpY2UsIGNoYW5nZQoraW5kaWNhdG9yX3BhdHRlcm4gYXJyYXkgd2l0aCB5b3VyIG93biB2YWx1ZXMgYW5kIElORElDX1BBVFRFUk5fU0laRS4KK1BsZWFzZSByZWZlciBkYXRhc2hlZXQgZm9yIG1vcmUgZGV0YWlsIGFib3V0IE4tQmxhbmssIFB1bHNlIHRpbWUgYW5kIE4gUGVyaW9kLgorCitJbmRpY2F0b3IgcGF0dGVybiBleGFtcGxlOgorcGF0dGVybiAwOiAjZWNobyAwID4gc3lzL2NsYXNzL2xlZHMvaW5kaWNhdG9yL3BhdHRlcm4KKy4uLi4KK3BhdHRlcm4gMzogI2VjaG8gMyA+IHN5cy9jbGFzcy9sZWRzL2luZGljYXRvci9wYXR0ZXJuCisKK0luZGljYXRvciBicmlnaHRuZXNzIGNhbiBiZSBjb250cm9sbGVkIHRocm91Z2gKK3N5cy9jbGFzcy9sZWRzL2luZGljYXRvci9icmlnaHRuZXNzIGZpbGUuCisKK0V4YW1wbGU6CitPRkYgICAgICA6ICNlY2hvIDAgPiBzeXMvY2xhc3MvbGVkcy9pbmRpY2F0b3IvYnJpZ2h0bmVzcworNS44NiBtQSAgOiAjZWNobyAxID4gc3lzL2NsYXNzL2xlZHMvaW5kaWNhdG9yL2JyaWdodG5lc3MKKy4uLi4uLi4uCis0Ni44NzVtQSA6ICNlY2hvIDggPiBzeXMvY2xhc3MvbGVkcy9pbmRpY2F0b3IvYnJpZ2h0bmVzcworCitOb3RlcworLS0tLS0KK0RyaXZlciBleHBlY3RzIGl0IGlzIHJlZ2lzdGVyZWQgdXNpbmcgdGhlIGkyY19ib2FyZF9pbmZvIG1lY2hhbmlzbS4KK1RvIHJlZ2lzdGVyIHRoZSBjaGlwIGF0IGFkZHJlc3MgMHg2MyBvbiBzcGVjaWZpYyBhZGFwdGVyLCBzZXQgdGhlIHBsYXRmb3JtIGRhdGEKK2FjY29yZGluZyB0byBpbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbGVkcy1sbTM1NTYuaCwgc2V0IHRoZSBpMmMgYm9hcmQgaW5mbworCitFeGFtcGxlOgorCXN0YXRpYyBzdHJ1Y3QgaTJjX2JvYXJkX2luZm8gYm9hcmRfaTJjX2NoNFtdIF9faW5pdGRhdGEgPSB7CisJCXsKKwkJCSBJMkNfQk9BUkRfSU5GTyhMTTM1NTZfTkFNRSwgMHg2MyksCisJCQkgLnBsYXRmb3JtX2RhdGEgPSAmbG0zNTU2X3BkYXRhLAorCQkgfSwKKwl9OworCithbmQgcmVnaXN0ZXIgaXQgaW4gdGhlIHBsYXRmb3JtIGluaXQgZnVuY3Rpb24KKworRXhhbXBsZToKKwlib2FyZF9yZWdpc3Rlcl9pMmNfYnVzKDQsIDQwMCwKKwkJCQlib2FyZF9pMmNfY2g0LCBBUlJBWV9TSVpFKGJvYXJkX2kyY19jaDQpKTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbGVkcy9sZWRzLWxwMzk0NC50eHQgYi9Eb2N1bWVudGF0aW9uL2xlZHMvbGVkcy1scDM5NDQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4OGFjM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2xlZHMvbGVkcy1scDM5NDQudHh0CkBAIC0wLDAgKzEsNTAgQEAKK0tlcm5lbCBkcml2ZXIgbHAzOTQ0Cis9PT09PT09PT09PT09PT09PT09PQorCisgICogTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciBMUDM5NDQgRnVuLWxpZ2h0IENoaXAKKyAgICBQcmVmaXg6ICdscDM5NDQnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IE5vbmUgKHNlZSB0aGUgTm90ZXMgc2VjdGlvbiBiZWxvdykKKyAgICBEYXRhc2hlZXQ6IFB1YmxpY2x5IGF2YWlsYWJsZSBhdCB0aGUgTmF0aW9uYWwgU2VtaWNvbmR1Y3RvciB3ZWJzaXRlCisgICAgICAgICAgICAgICBodHRwOi8vd3d3Lm5hdGlvbmFsLmNvbS9wZi9MUC9MUDM5NDQuaHRtbAorCitBdXRob3JzOgorICAgICAgICBBbnRvbmlvIE9zcGl0ZSA8b3NwaXRlQHN0dWRlbnRpLnVuaW5hLml0PgorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorVGhlIExQMzk0NCBpcyBhIGhlbHBlciBjaGlwIHRoYXQgY2FuIGRyaXZlIHVwIHRvIDggbGVkcywgd2l0aCB0d28gcHJvZ3JhbW1hYmxlCitESU0gbW9kZXM7IGl0IGNvdWxkIGV2ZW4gYmUgdXNlZCBhcyBhIGdwaW8gZXhwYW5kZXIgYnV0IHRoaXMgZHJpdmVyIGFzc3VtZXMgaXQKK2lzIHVzZWQgYXMgYSBsZWQgY29udHJvbGxlci4KKworVGhlIERJTSBtb2RlcyBhcmUgdXNlZCB0byBzZXQgX2JsaW5rXyBwYXR0ZXJucyBmb3IgbGVkcywgdGhlIHBhdHRlcm4gaXMKK3NwZWNpZmllZCBzdXBwbHlpbmcgdHdvIHBhcmFtZXRlcnM6CisgIC0gcGVyaW9kOiBmcm9tIDBzIHRvIDEuNnMKKyAgLSBkdXR5IGN5Y2xlOiBwZXJjZW50YWdlIG9mIHRoZSBwZXJpb2QgdGhlIGxlZCBpcyBvbiwgZnJvbSAwIHRvIDEwMAorCitTZXR0aW5nIGEgbGVkIGluIERJTTAgb3IgRElNMSBtb2RlIG1ha2VzIGl0IGJsaW5rIGFjY29yZGluZyB0byB0aGUgcGF0dGVybi4KK1NlZSB0aGUgZGF0YXNoZWV0IGZvciBkZXRhaWxzLgorCitMUDM5NDQgY2FuIGJlIGZvdW5kIG9uIE1vdG9yb2xhIEE5MTAgc21hcnRwaG9uZSwgd2hlcmUgaXQgZHJpdmVzIHRoZSByZ2IKK2xlZHMsIHRoZSBjYW1lcmEgZmxhc2ggbGlnaHQgYW5kIHRoZSBsY2RzIHBvd2VyLgorCisKK05vdGVzCistLS0tLQorVGhlIGNoaXAgaXMgdXNlZCBtYWlubHkgaW4gZW1iZWRkZWQgY29udGV4dHMsIHNvIHRoaXMgZHJpdmVyIGV4cGVjdHMgaXQgaXMKK3JlZ2lzdGVyZWQgdXNpbmcgdGhlIGkyY19ib2FyZF9pbmZvIG1lY2hhbmlzbS4KKworVG8gcmVnaXN0ZXIgdGhlIGNoaXAgYXQgYWRkcmVzcyAweDYwIG9uIGFkYXB0ZXIgMCwgc2V0IHRoZSBwbGF0Zm9ybSBkYXRhCithY2NvcmRpbmcgdG8gaW5jbHVkZS9saW51eC9sZWRzLWxwMzk0NC5oLCBzZXQgdGhlIGkyYyBib2FyZCBpbmZvOgorCisJc3RhdGljIHN0cnVjdCBpMmNfYm9hcmRfaW5mbyBhOTEwX2kyY19ib2FyZF9pbmZvW10gX19pbml0ZGF0YSA9IHsKKwkJeworCQkJSTJDX0JPQVJEX0lORk8oImxwMzk0NCIsIDB4NjApLAorCQkJLnBsYXRmb3JtX2RhdGEgPSAmYTkxMF9scDM5NDRfbGVkcywKKwkJfSwKKwl9OworCithbmQgcmVnaXN0ZXIgaXQgaW4gdGhlIHBsYXRmb3JtIGluaXQgZnVuY3Rpb24KKworCWkyY19yZWdpc3Rlcl9ib2FyZF9pbmZvKDAsIGE5MTBfaTJjX2JvYXJkX2luZm8sCisJCQlBUlJBWV9TSVpFKGE5MTBfaTJjX2JvYXJkX2luZm8pKTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbGVkcy9sZWRzLWxwNTUyMS50eHQgYi9Eb2N1bWVudGF0aW9uL2xlZHMvbGVkcy1scDU1MjEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwOGQ4YzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2xlZHMvbGVkcy1scDU1MjEudHh0CkBAIC0wLDAgKzEsMTAxIEBACitLZXJuZWwgZHJpdmVyIGZvciBscDU1MjEKKz09PT09PT09PT09PT09PT09PT09PT09PQorCisqIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgTFA1NTIxIGxlZCBkcml2ZXIgY2hpcAorKiBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cubmF0aW9uYWwuY29tL3BmL0xQL0xQNTUyMS5odG1sCisKK0F1dGhvcnM6IE1hdGhpYXMgTnltYW4sIFl1cmkgWmFwb3JvemhldHMsIFNhbXUgT25rYWxvCitDb250YWN0OiBTYW11IE9ua2FsbyAoc2FtdS5wLm9ua2Fsby1hdC1ub2tpYS5jb20pCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitMUDU1MjEgY2FuIGRyaXZlIHVwIHRvIDMgY2hhbm5lbHMuIExlZHMgY2FuIGJlIGNvbnRyb2xsZWQgZGlyZWN0bHkgdmlhCit0aGUgbGVkIGNsYXNzIGNvbnRyb2wgaW50ZXJmYWNlLiBDaGFubmVscyBoYXZlIGdlbmVyaWMgbmFtZXM6CitscDU1MjE6Y2hhbm5lbHgsIHdoZXJlIHggaXMgMCAuLiAyCisKK0FsbCB0aHJlZSBjaGFubmVscyBjYW4gYmUgYWxzbyBjb250cm9sbGVkIHVzaW5nIHRoZSBlbmdpbmUgbWljcm8gcHJvZ3JhbXMuCitNb3JlIGRldGFpbHMgb2YgdGhlIGluc3RydWN0aW9ucyBjYW4gYmUgZm91bmQgZnJvbSB0aGUgcHVibGljIGRhdGEgc2hlZXQuCisKK0xQNTUyMSBoYXMgdGhlIGludGVybmFsIHByb2dyYW0gbWVtb3J5IGZvciBydW5uaW5nIHZhcmlvdXMgTEVEIHBhdHRlcm5zLgorVGhlcmUgYXJlIHR3byB3YXlzIHRvIHJ1biBMRUQgcGF0dGVybnMuCisKKzEpIExlZ2FjeSBpbnRlcmZhY2UgLSBlbmdpbmV4X21vZGUgYW5kIGVuZ2luZXhfbG9hZAorICBDb250cm9sIGludGVyZmFjZSBmb3IgdGhlIGVuZ2luZXM6CisgIHggaXMgMSAuLiAzCisgIGVuZ2luZXhfbW9kZSA6IGRpc2FibGVkLCBsb2FkLCBydW4KKyAgZW5naW5leF9sb2FkIDogc3RvcmUgcHJvZ3JhbSAodmlzaWJsZSBvbmx5IGluIGVuZ2luZSBsb2FkIG1vZGUpCisKKyAgRXhhbXBsZSAoc3RhcnQgdG8gYmxpbmsgdGhlIGNoYW5uZWwgMiBsZWQpOgorICBjZCAgIC9zeXMvY2xhc3MvbGVkcy9scDU1MjE6Y2hhbm5lbDIvZGV2aWNlCisgIGVjaG8gImxvYWQiID4gZW5naW5lM19tb2RlCisgIGVjaG8gIjAzN2Y0ZDAwMDNmZjYwMDAiID4gZW5naW5lM19sb2FkCisgIGVjaG8gInJ1biIgPiBlbmdpbmUzX21vZGUKKworICBUbyBzdG9wIHRoZSBlbmdpbmU6CisgIGVjaG8gImRpc2FibGVkIiA+IGVuZ2luZTNfbW9kZQorCisyKSBGaXJtd2FyZSBpbnRlcmZhY2UgLSBMUDU1eHggY29tbW9uIGludGVyZmFjZQorICBGb3IgdGhlIGRldGFpbHMsIHBsZWFzZSByZWZlciB0byAnZmlybXdhcmUnIHNlY3Rpb24gaW4gbGVkcy1scDU1eHgudHh0CisKK3N5c2ZzIGNvbnRhaW5zIGEgc2VsZnRlc3QgZW50cnkuCitUaGUgdGVzdCBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgY2hpcCBhbmQgY2hlY2tzIHRoYXQKK3RoZSBjbG9jayBtb2RlIGlzIGF1dG9tYXRpY2FsbHkgc2V0IHRvIHRoZSByZXF1ZXN0ZWQgb25lLgorCitFYWNoIGNoYW5uZWwgaGFzIGl0cyBvd24gbGVkIGN1cnJlbnQgc2V0dGluZ3MuCisvc3lzL2NsYXNzL2xlZHMvbHA1NTIxOmNoYW5uZWwwL2xlZF9jdXJyZW50IC0gUlcKKy9zeXMvY2xhc3MvbGVkcy9scDU1MjE6Y2hhbm5lbDAvbWF4X2N1cnJlbnQgLSBSTworRm9ybWF0OiAxMHggbUEgaS5lIDEwIG1lYW5zIDEuMCBtQQorCitleGFtcGxlIHBsYXRmb3JtIGRhdGE6CisKK05vdGU6IGNoYW5fbnIgY2FuIGhhdmUgdmFsdWVzIGJldHdlZW4gMCBhbmQgMi4KK1RoZSBuYW1lIG9mIGVhY2ggY2hhbm5lbCBjYW4gYmUgY29uZmlndXJhYmxlLgorSWYgdGhlIG5hbWUgZmllbGQgaXMgbm90IGRlZmluZWQsIHRoZSBkZWZhdWx0IG5hbWUgd2lsbCBiZSBzZXQgdG8gJ3h4eHg6Y2hhbm5lbE4nCisoWFhYWCA6IHBkYXRhLT5sYWJlbCBvciBpMmMgY2xpZW50IG5hbWUsIE4gOiBjaGFubmVsIG51bWJlcikKKworc3RhdGljIHN0cnVjdCBscDU1eHhfbGVkX2NvbmZpZyBscDU1MjFfbGVkX2NvbmZpZ1tdID0geworICAgICAgICB7CisJCS5uYW1lID0gInJlZCIsCisgICAgICAgICAgICAgICAgLmNoYW5fbnIgICAgICAgID0gMCwKKyAgICAgICAgICAgICAgICAubGVkX2N1cnJlbnQgICAgPSA1MCwKKwkJLm1heF9jdXJyZW50ICAgID0gMTMwLAorICAgICAgICB9LCB7CisJCS5uYW1lID0gImdyZWVuIiwKKyAgICAgICAgICAgICAgICAuY2hhbl9uciAgICAgICAgPSAxLAorICAgICAgICAgICAgICAgIC5sZWRfY3VycmVudCAgICA9IDAsCisJCS5tYXhfY3VycmVudCAgICA9IDEzMCwKKyAgICAgICAgfSwgeworCQkubmFtZSA9ICJibHVlIiwKKyAgICAgICAgICAgICAgICAuY2hhbl9uciAgICAgICAgPSAyLAorICAgICAgICAgICAgICAgIC5sZWRfY3VycmVudCAgICA9IDAsCisJCS5tYXhfY3VycmVudCAgICA9IDEzMCwKKyAgICAgICAgfQorfTsKKworc3RhdGljIGludCBscDU1MjFfc2V0dXAodm9pZCkKK3sKKwkvKiBzZXR1cCBIVyByZXNvdXJjZXMgKi8KK30KKworc3RhdGljIHZvaWQgbHA1NTIxX3JlbGVhc2Uodm9pZCkKK3sKKwkvKiBSZWxlYXNlIEhXIHJlc291cmNlcyAqLworfQorCitzdGF0aWMgdm9pZCBscDU1MjFfZW5hYmxlKGJvb2wgc3RhdGUpCit7CisJLyogQ29udHJvbCBvZiBjaGlwIGVuYWJsZSBzaWduYWwgKi8KK30KKworc3RhdGljIHN0cnVjdCBscDU1eHhfcGxhdGZvcm1fZGF0YSBscDU1MjFfcGxhdGZvcm1fZGF0YSA9IHsKKyAgICAgICAgLmxlZF9jb25maWcgICAgID0gbHA1NTIxX2xlZF9jb25maWcsCisgICAgICAgIC5udW1fY2hhbm5lbHMgICA9IEFSUkFZX1NJWkUobHA1NTIxX2xlZF9jb25maWcpLAorICAgICAgICAuY2xvY2tfbW9kZSAgICAgPSBMUDU1WFhfQ0xPQ0tfRVhULAorICAgICAgICAuc2V0dXBfcmVzb3VyY2VzICAgPSBscDU1MjFfc2V0dXAsCisgICAgICAgIC5yZWxlYXNlX3Jlc291cmNlcyA9IGxwNTUyMV9yZWxlYXNlLAorICAgICAgICAuZW5hYmxlICAgICAgICAgICAgPSBscDU1MjFfZW5hYmxlLAorfTsKKworSWYgdGhlIGN1cnJlbnQgaXMgc2V0IHRvIDAgaW4gdGhlIHBsYXRmb3JtIGRhdGEsIHRoYXQgY2hhbm5lbCBpcworZGlzYWJsZWQgYW5kIGl0IGlzIG5vdCB2aXNpYmxlIGluIHRoZSBzeXNmcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbGVkcy9sZWRzLWxwNTUyMy50eHQgYi9Eb2N1bWVudGF0aW9uL2xlZHMvbGVkcy1scDU1MjMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkYmJkMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2xlZHMvbGVkcy1scDU1MjMudHh0CkBAIC0wLDAgKzEsMTMwIEBACitLZXJuZWwgZHJpdmVyIGZvciBscDU1MjMKKz09PT09PT09PT09PT09PT09PT09PT09PQorCisqIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgTFA1NTIzIGxlZCBkcml2ZXIgY2hpcAorKiBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cubmF0aW9uYWwuY29tL3BmL0xQL0xQNTUyMy5odG1sCisKK0F1dGhvcnM6IE1hdGhpYXMgTnltYW4sIFl1cmkgWmFwb3JvemhldHMsIFNhbXUgT25rYWxvCitDb250YWN0OiBTYW11IE9ua2FsbyAoc2FtdS5wLm9ua2Fsby1hdC1ub2tpYS5jb20pCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorTFA1NTIzIGNhbiBkcml2ZSB1cCB0byA5IGNoYW5uZWxzLiBMZWRzIGNhbiBiZSBjb250cm9sbGVkIGRpcmVjdGx5IHZpYQordGhlIGxlZCBjbGFzcyBjb250cm9sIGludGVyZmFjZS4KK1RoZSBuYW1lIG9mIGVhY2ggY2hhbm5lbCBpcyBjb25maWd1cmFibGUgaW4gdGhlIHBsYXRmb3JtIGRhdGEgLSBuYW1lIGFuZCBsYWJlbC4KK1RoZXJlIGFyZSB0aHJlZSBvcHRpb25zIHRvIG1ha2UgdGhlIGNoYW5uZWwgbmFtZS4KKworYSkgRGVmaW5lIHRoZSAnbmFtZScgaW4gdGhlIHBsYXRmb3JtIGRhdGEKK1RvIG1ha2Ugc3BlY2lmaWMgY2hhbm5lbCBuYW1lLCB0aGVuIHVzZSAnbmFtZScgcGxhdGZvcm0gZGF0YS4KKy9zeXMvY2xhc3MvbGVkcy9SMSAgICAgICAgICAgICAgIChuYW1lOiAnUjEnKQorL3N5cy9jbGFzcy9sZWRzL0IxICAgICAgICAgICAgICAgKG5hbWU6ICdCMScpCisKK2IpIFVzZSB0aGUgJ2xhYmVsJyB3aXRoIG5vICduYW1lJyBmaWVsZAorRm9yIG9uZSBkZXZpY2UgbmFtZSB3aXRoIGNoYW5uZWwgbnVtYmVyLCB0aGVuIHVzZSAnbGFiZWwnLgorL3N5cy9jbGFzcy9sZWRzL1JHQjpjaGFubmVsTiAgICAgKGxhYmVsOiAnUkdCJywgTjogMCB+IDgpCisKK2MpIERlZmF1bHQKK0lmIGJvdGggZmllbGRzIGFyZSBOVUxMLCAnbHA1NTIzJyBpcyB1c2VkIGJ5IGRlZmF1bHQuCisvc3lzL2NsYXNzL2xlZHMvbHA1NTIzOmNoYW5uZWxOICAoTjogMCB+IDgpCisKK0xQNTUyMyBoYXMgdGhlIGludGVybmFsIHByb2dyYW0gbWVtb3J5IGZvciBydW5uaW5nIHZhcmlvdXMgTEVEIHBhdHRlcm5zLgorVGhlcmUgYXJlIHR3byB3YXlzIHRvIHJ1biBMRUQgcGF0dGVybnMuCisKKzEpIExlZ2FjeSBpbnRlcmZhY2UgLSBlbmdpbmV4X21vZGUsIGVuZ2luZXhfbG9hZCBhbmQgZW5naW5leF9sZWRzCisgIENvbnRyb2wgaW50ZXJmYWNlIGZvciB0aGUgZW5naW5lczoKKyAgeCBpcyAxIC4uIDMKKyAgZW5naW5leF9tb2RlIDogZGlzYWJsZWQsIGxvYWQsIHJ1bgorICBlbmdpbmV4X2xvYWQgOiBtaWNyb2NvZGUgbG9hZCAodmlzaWJsZSBvbmx5IGluIGxvYWQgbW9kZSkKKyAgZW5naW5leF9sZWRzIDogbGVkIG11eCBjb250cm9sICh2aXNpYmxlIG9ubHkgaW4gbG9hZCBtb2RlKQorCisgIGNkIC9zeXMvY2xhc3MvbGVkcy9scDU1MjM6Y2hhbm5lbDIvZGV2aWNlCisgIGVjaG8gImxvYWQiID4gZW5naW5lM19tb2RlCisgIGVjaG8gIjlkODA0MDAwMDRmZjA1ZmY0MzdmMDAwMCIgPiBlbmdpbmUzX2xvYWQKKyAgZWNobyAiMTExMTExMTExIiA+IGVuZ2luZTNfbGVkcworICBlY2hvICJydW4iID4gZW5naW5lM19tb2RlCisKKyAgVG8gc3RvcCB0aGUgZW5naW5lOgorICBlY2hvICJkaXNhYmxlZCIgPiBlbmdpbmUzX21vZGUKKworMikgRmlybXdhcmUgaW50ZXJmYWNlIC0gTFA1NXh4IGNvbW1vbiBpbnRlcmZhY2UKKyAgRm9yIHRoZSBkZXRhaWxzLCBwbGVhc2UgcmVmZXIgdG8gJ2Zpcm13YXJlJyBzZWN0aW9uIGluIGxlZHMtbHA1NXh4LnR4dAorCitMUDU1MjMgaGFzIHRocmVlIG1hc3RlciBmYWRlcnMuIElmIGEgY2hhbm5lbCBpcyBtYXBwZWQgdG8gb25lIG9mCit0aGUgbWFzdGVyIGZhZGVycywgaXRzIG91dHB1dCBpcyBkaW1tZWQgYmFzZWQgb24gdGhlIHZhbHVlIG9mIHRoZSBtYXN0ZXIKK2ZhZGVyLgorCitGb3IgZXhhbXBsZSwKKworICBlY2hvICIxMjMwMDAxMjMiID4gbWFzdGVyX2ZhZGVyX2xlZHMKKworY3JlYXRlcyB0aGUgZm9sbG93aW5nIGNoYW5uZWwtZmFkZXIgbWFwcGluZ3M6CisKKyAgY2hhbm5lbCAwLDYgdG8gbWFzdGVyX2ZhZGVyMQorICBjaGFubmVsIDEsNyB0byBtYXN0ZXJfZmFkZXIyCisgIGNoYW5uZWwgMiw4IHRvIG1hc3Rlcl9mYWRlcjMKKworVGhlbiwgdG8gaGF2ZSAyNSUgb2YgdGhlIG9yaWdpbmFsIG91dHB1dCBvbiBjaGFubmVsIDAsNjoKKworICBlY2hvIDY0ID4gbWFzdGVyX2ZhZGVyMQorCitUbyBoYXZlIDAlIG9mIHRoZSBvcmlnaW5hbCBvdXRwdXQgKGkuZS4gbm8gb3V0cHV0KSBjaGFubmVsIDEsNzoKKworICBlY2hvIDAgPiBtYXN0ZXJfZmFkZXIyCisKK1RvIGhhdmUgMTAwJSBvZiB0aGUgb3JpZ2luYWwgb3V0cHV0IChpLmUuIG5vIGRpbW1pbmcpIG9uIGNoYW5uZWwgMiw4OgorCisgIGVjaG8gMjU1ID4gbWFzdGVyX2ZhZGVyMworCitUbyBjbGVhciBhbGwgbWFzdGVyIGZhZGVyIGNvbnRyb2xzOgorCisgIGVjaG8gIjAwMDAwMDAwMCIgPiBtYXN0ZXJfZmFkZXJfbGVkcworCitTZWxmdGVzdCB1c2VzIGFsd2F5cyB0aGUgY3VycmVudCBmcm9tIHRoZSBwbGF0Zm9ybSBkYXRhLgorCitFYWNoIGNoYW5uZWwgY29udGFpbnMgbGVkIGN1cnJlbnQgc2V0dGluZ3MuCisvc3lzL2NsYXNzL2xlZHMvbHA1NTIzOmNoYW5uZWwyL2xlZF9jdXJyZW50IC0gUlcKKy9zeXMvY2xhc3MvbGVkcy9scDU1MjM6Y2hhbm5lbDIvbWF4X2N1cnJlbnQgLSBSTworRm9ybWF0OiAxMHggbUEgaS5lIDEwIG1lYW5zIDEuMCBtQQorCitFeGFtcGxlIHBsYXRmb3JtIGRhdGE6CisKK05vdGUgLSBjaGFuX25yIGNhbiBoYXZlIHZhbHVlcyBiZXR3ZWVuIDAgYW5kIDguCisKK3N0YXRpYyBzdHJ1Y3QgbHA1NXh4X2xlZF9jb25maWcgbHA1NTIzX2xlZF9jb25maWdbXSA9IHsKKyAgICAgICAgeworCQkubmFtZQkJPSAiRDEiLAorICAgICAgICAgICAgICAgIC5jaGFuX25yICAgICAgICA9IDAsCisgICAgICAgICAgICAgICAgLmxlZF9jdXJyZW50ICAgID0gNTAsCisJCS5tYXhfY3VycmVudCAgICA9IDEzMCwKKyAgICAgICAgfSwKKy4uLgorICAgICAgICB7CisgICAgICAgICAgICAgICAgLmNoYW5fbnIgICAgICAgID0gOCwKKyAgICAgICAgICAgICAgICAubGVkX2N1cnJlbnQgICAgPSA1MCwKKwkJLm1heF9jdXJyZW50ICAgID0gMTMwLAorICAgICAgICB9Cit9OworCitzdGF0aWMgaW50IGxwNTUyM19zZXR1cCh2b2lkKQoreworCS8qIFNldHVwIEhXIHJlc291cmNlcyAqLworfQorCitzdGF0aWMgdm9pZCBscDU1MjNfcmVsZWFzZSh2b2lkKQoreworCS8qIFJlbGVhc2UgSFcgcmVzb3VyY2VzICovCit9CisKK3N0YXRpYyB2b2lkIGxwNTUyM19lbmFibGUoYm9vbCBzdGF0ZSkKK3sKKwkvKiBDb250cm9sIGNoaXAgZW5hYmxlIHNpZ25hbCAqLworfQorCitzdGF0aWMgc3RydWN0IGxwNTV4eF9wbGF0Zm9ybV9kYXRhIGxwNTUyM19wbGF0Zm9ybV9kYXRhID0geworICAgICAgICAubGVkX2NvbmZpZyAgICAgPSBscDU1MjNfbGVkX2NvbmZpZywKKyAgICAgICAgLm51bV9jaGFubmVscyAgID0gQVJSQVlfU0laRShscDU1MjNfbGVkX2NvbmZpZyksCisgICAgICAgIC5jbG9ja19tb2RlICAgICA9IExQNTVYWF9DTE9DS19FWFQsCisgICAgICAgIC5zZXR1cF9yZXNvdXJjZXMgICA9IGxwNTUyM19zZXR1cCwKKyAgICAgICAgLnJlbGVhc2VfcmVzb3VyY2VzID0gbHA1NTIzX3JlbGVhc2UsCisgICAgICAgIC5lbmFibGUgICAgICAgICAgICA9IGxwNTUyM19lbmFibGUsCit9OwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9sZWRzL2xlZHMtbHA1NTYyLnR4dCBiL0RvY3VtZW50YXRpb24vbGVkcy9sZWRzLWxwNTU2Mi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE4MjNmZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbGVkcy9sZWRzLWxwNTU2Mi50eHQKQEAgLTAsMCArMSwxMjAgQEAKK0tlcm5lbCBkcml2ZXIgZm9yIExQNTU2MgorPT09PT09PT09PT09PT09PT09PT09PT09CisKKyogVEkgTFA1NTYyIExFRCBEcml2ZXIKKworQXV0aG9yOiBNaWxvKFdvb2d5b20pIEtpbSA8bWlsby5raW1AdGkuY29tPgorCitEZXNjcmlwdGlvbgorCisgIExQNTU2MiBjYW4gZHJpdmUgdXAgdG8gNCBjaGFubmVscy4gUi9HL0IgYW5kIFdoaXRlLgorICBMRURzIGNhbiBiZSBjb250cm9sbGVkIGRpcmVjdGx5IHZpYSB0aGUgbGVkIGNsYXNzIGNvbnRyb2wgaW50ZXJmYWNlLgorCisgIEFsbCBmb3VyIGNoYW5uZWxzIGNhbiBiZSBhbHNvIGNvbnRyb2xsZWQgdXNpbmcgdGhlIGVuZ2luZSBtaWNybyBwcm9ncmFtcy4KKyAgTFA1NTYyIGhhcyB0aGUgaW50ZXJuYWwgcHJvZ3JhbSBtZW1vcnkgZm9yIHJ1bm5pbmcgdmFyaW91cyBMRUQgcGF0dGVybnMuCisgIEZvciB0aGUgZGV0YWlscywgcGxlYXNlIHJlZmVyIHRvICdmaXJtd2FyZScgc2VjdGlvbiBpbiBsZWRzLWxwNTV4eC50eHQKKworRGV2aWNlIGF0dHJpYnV0ZTogZW5naW5lX211eAorCisgIDMgRW5naW5lcyBhcmUgYWxsb2NhdGVkIGluIExQNTU2MiwgYnV0IHRoZSBudW1iZXIgb2YgY2hhbm5lbCBpcyA0LgorICBUaGVyZWZvcmUgZWFjaCBjaGFubmVsIHNob3VsZCBiZSBtYXBwZWQgdG8gdGhlIGVuZ2luZSBudW1iZXIuCisgIFZhbHVlIDogUkdCIG9yIFcKKworICBUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIGZvciBwcm9ncmFtbWluZyBMRUQgZGF0YSB3aXRoIHRoZSBmaXJtd2FyZSBpbnRlcmZhY2UuCisgIFVubGlrZSB0aGUgTFA1NTIxL0xQNTUyMy81NTIzMSwgTFA1NTYyIGhhcyB1bmlxdWUgZmVhdHVyZSBmb3IgdGhlIGVuZ2luZSBtdXgsCisgIHNvIGFkZGl0aW9uYWwgc3lzZnMgaXMgcmVxdWlyZWQuCisKKyAgTEVEIE1hcAorICBSZWQgICAuLi4gRW5naW5lIDEgKGZpeGVkKQorICBHcmVlbiAuLi4gRW5naW5lIDIgKGZpeGVkKQorICBCbHVlICAuLi4gRW5naW5lIDMgKGZpeGVkKQorICBXaGl0ZSAuLi4gRW5naW5lIDEgb3IgMiBvciAzIChzZWxlY3RpdmUpCisKK0hvdyB0byBsb2FkIHRoZSBwcm9ncmFtIGRhdGEgdXNpbmcgZW5naW5lX211eAorCisgIEJlZm9yZSBsb2FkaW5nIHRoZSBMUDU1NjIgcHJvZ3JhbSBkYXRhLCBlbmdpbmVfbXV4IHNob3VsZCBiZSB3cml0dGVuIGJldHdlZW4KKyAgdGhlIGVuZ2luZSBzZWxlY3Rpb24gYW5kIGxvYWRpbmcgdGhlIGZpcm13YXJlLgorICBFbmdpbmUgbXV4IGhhcyB0d28gZGlmZmVyZW50IG1vZGUsIFJHQiBhbmQgVy4KKyAgUkdCIGlzIHVzZWQgZm9yIGxvYWRpbmcgUkdCIHByb2dyYW0gZGF0YSwgVyBpcyB1c2VkIGZvciBXIHByb2dyYW0gZGF0YS4KKworICBGb3IgZXhhbXBsZSwgcnVuIGJsaW5raW5nIGdyZWVuIGNoYW5uZWwgcGF0dGVybiwKKyAgZWNobyAyID4gL3N5cy9idXMvaTJjL2RldmljZXMveHh4eC9zZWxlY3RfZW5naW5lICAgICAjIDIgaXMgZm9yIGdyZWVuIGNoYW5uZWwKKyAgZWNobyAiUkdCIiA+IC9zeXMvYnVzL2kyYy9kZXZpY2VzL3h4eHgvZW5naW5lX211eCAgICAjIGVuZ2luZSBtdXggZm9yIFJHQgorICBlY2hvIDEgPiAvc3lzL2NsYXNzL2Zpcm13YXJlL2xwNTU2Mi9sb2FkaW5nCisgIGVjaG8gIjQwMDA2MDAwNDBGRjYwMDAiID4gL3N5cy9jbGFzcy9maXJtd2FyZS9scDU1NjIvZGF0YQorICBlY2hvIDAgPiAvc3lzL2NsYXNzL2Zpcm13YXJlL2xwNTU2Mi9sb2FkaW5nCisgIGVjaG8gMSA+IC9zeXMvYnVzL2kyYy9kZXZpY2VzL3h4eHgvcnVuX2VuZ2luZQorCisgIFRvIHJ1biBhIGJsaW5raW5nIHdoaXRlIHBhdHRlcm4sCisgIGVjaG8gMSBvciAyIG9yIDMgPiAvc3lzL2J1cy9pMmMvZGV2aWNlcy94eHh4L3NlbGVjdF9lbmdpbmUKKyAgZWNobyAiVyIgPiAvc3lzL2J1cy9pMmMvZGV2aWNlcy94eHh4L2VuZ2luZV9tdXgKKyAgZWNobyAxID4gL3N5cy9jbGFzcy9maXJtd2FyZS9scDU1NjIvbG9hZGluZworICBlY2hvICI0MDAwNjAwMDQwRkY2MDAwIiA+IC9zeXMvY2xhc3MvZmlybXdhcmUvbHA1NTYyL2RhdGEKKyAgZWNobyAwID4gL3N5cy9jbGFzcy9maXJtd2FyZS9scDU1NjIvbG9hZGluZworICBlY2hvIDEgPiAvc3lzL2J1cy9pMmMvZGV2aWNlcy94eHh4L3J1bl9lbmdpbmUKKworSG93IHRvIGxvYWQgdGhlIHByZWRlZmluZWQgcGF0dGVybnMKKworICBQbGVhc2UgcmVmZXIgdG8gJ2xlZHMtbHA1NXh4LnR4dCIKKworU2V0dGluZyBDdXJyZW50IG9mIEVhY2ggQ2hhbm5lbAorCisgIExpa2UgTFA1NTIxIGFuZCBMUDU1MjMvNTUyMzEsIExQNTU2MiBwcm92aWRlcyBMRUQgY3VycmVudCBzZXR0aW5ncy4KKyAgVGhlICdsZWRfY3VycmVudCcgYW5kICdtYXhfY3VycmVudCcgYXJlIHVzZWQuCisKKyhFeGFtcGxlIG9mIFBsYXRmb3JtIGRhdGEpCisKK1RvIGNvbmZpZ3VyZSB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgZGF0YSwgbHA1NXh4X3BsYXRmb3JtX2RhdGEgc3RydWN0dXJlIGlzIHVzZWQuCisKK3N0YXRpYyBzdHJ1Y3QgbHA1NXh4X2xlZF9jb25maWcgbHA1NTYyX2xlZF9jb25maWdbXSA9IHsKKwl7CisJCS5uYW1lIAkJPSAiUiIsCisJCS5jaGFuX25yCT0gMCwKKwkJLmxlZF9jdXJyZW50CT0gMjAsCisJCS5tYXhfY3VycmVudAk9IDQwLAorCX0sCisJeworCQkubmFtZSAJCT0gIkciLAorCQkuY2hhbl9ucgk9IDEsCisJCS5sZWRfY3VycmVudAk9IDIwLAorCQkubWF4X2N1cnJlbnQJPSA0MCwKKwl9LAorCXsKKwkJLm5hbWUgCQk9ICJCIiwKKwkJLmNoYW5fbnIJPSAyLAorCQkubGVkX2N1cnJlbnQJPSAyMCwKKwkJLm1heF9jdXJyZW50CT0gNDAsCisJfSwKKwl7CisJCS5uYW1lIAkJPSAiVyIsCisJCS5jaGFuX25yCT0gMywKKwkJLmxlZF9jdXJyZW50CT0gMjAsCisJCS5tYXhfY3VycmVudAk9IDQwLAorCX0sCit9OworCitzdGF0aWMgaW50IGxwNTU2Ml9zZXR1cCh2b2lkKQoreworCS8qIHNldHVwIEhXIHJlc291cmNlcyAqLworfQorCitzdGF0aWMgdm9pZCBscDU1NjJfcmVsZWFzZSh2b2lkKQoreworCS8qIFJlbGVhc2UgSFcgcmVzb3VyY2VzICovCit9CisKK3N0YXRpYyB2b2lkIGxwNTU2Ml9lbmFibGUoYm9vbCBzdGF0ZSkKK3sKKwkvKiBDb250cm9sIG9mIGNoaXAgZW5hYmxlIHNpZ25hbCAqLworfQorCitzdGF0aWMgc3RydWN0IGxwNTV4eF9wbGF0Zm9ybV9kYXRhIGxwNTU2Ml9wbGF0Zm9ybV9kYXRhID0geworICAgICAgICAubGVkX2NvbmZpZyAgICAgPSBscDU1NjJfbGVkX2NvbmZpZywKKyAgICAgICAgLm51bV9jaGFubmVscyAgID0gQVJSQVlfU0laRShscDU1NjJfbGVkX2NvbmZpZyksCisgICAgICAgIC5zZXR1cF9yZXNvdXJjZXMgICA9IGxwNTU2Ml9zZXR1cCwKKyAgICAgICAgLnJlbGVhc2VfcmVzb3VyY2VzID0gbHA1NTYyX3JlbGVhc2UsCisgICAgICAgIC5lbmFibGUgICAgICAgICAgICA9IGxwNTU2Ml9lbmFibGUsCit9OworCitJZiB0aGUgY3VycmVudCBpcyBzZXQgdG8gMCBpbiB0aGUgcGxhdGZvcm0gZGF0YSwgdGhhdCBjaGFubmVsIGlzCitkaXNhYmxlZCBhbmQgaXQgaXMgbm90IHZpc2libGUgaW4gdGhlIHN5c2ZzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9sZWRzL2xlZHMtbHA1NXh4LnR4dCBiL0RvY3VtZW50YXRpb24vbGVkcy9sZWRzLWxwNTV4eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNlYTEyYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbGVkcy9sZWRzLWxwNTV4eC50eHQKQEAgLTAsMCArMSwxOTQgQEAKK0xQNTUyMS9MUDU1MjMvTFA1NTIzMS9MUDU1NjIvTFA4NTAxIENvbW1vbiBEcml2ZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQXV0aG9yczogTWlsbyhXb29neW9tKSBLaW0gPG1pbG8ua2ltQHRpLmNvbT4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCitMUDU1MjEsIExQNTUyMy81NTIzMSwgTFA1NTYyIGFuZCBMUDg1MDEgaGF2ZSBjb21tb24gZmVhdHVyZXMgYXMgYmVsb3cuCisKKyAgUmVnaXN0ZXIgYWNjZXNzIHZpYSB0aGUgSTJDCisgIERldmljZSBpbml0aWFsaXphdGlvbi9kZWluaXRpYWxpemF0aW9uCisgIENyZWF0ZSBMRUQgY2xhc3MgZGV2aWNlcyBmb3IgbXVsdGlwbGUgb3V0cHV0IGNoYW5uZWxzCisgIERldmljZSBhdHRyaWJ1dGVzIGZvciB1c2VyLXNwYWNlIGludGVyZmFjZQorICBQcm9ncmFtIG1lbW9yeSBmb3IgcnVubmluZyBMRUQgcGF0dGVybnMKKworVGhlIExQNTV4eCBjb21tb24gZHJpdmVyIHByb3ZpZGVzIHRoZXNlIGZlYXR1cmVzIHVzaW5nIGV4cG9ydGVkIGZ1bmN0aW9ucy4KKyAgbHA1NXh4X2luaXRfZGV2aWNlKCkgLyBscDU1eHhfZGVpbml0X2RldmljZSgpCisgIGxwNTV4eF9yZWdpc3Rlcl9sZWRzKCkgLyBscDU1eHhfdW5yZWdpc3Rlcl9sZWRzKCkKKyAgbHA1NXh4X3JlZ3Npc3Rlcl9zeXNmcygpIC8gbHA1NXh4X3VucmVnaXN0ZXJfc3lzZnMoKQorCisoIERyaXZlciBTdHJ1Y3R1cmUgRGF0YSApCisKK0luIGxwNTV4eCBjb21tb24gZHJpdmVyLCB0d28gZGlmZmVyZW50IGRhdGEgc3RydWN0dXJlIGlzIHVzZWQuCisKK28gbHA1NXh4X2xlZAorICBjb250cm9sIG11bHRpIG91dHB1dCBMRUQgY2hhbm5lbHMgc3VjaCBhcyBsZWQgY3VycmVudCwgY2hhbm5lbCBpbmRleC4KK28gbHA1NXh4X2NoaXAKKyAgZ2VuZXJhbCBjaGlwIGNvbnRyb2wgc3VjaCBsaWtlIHRoZSBJMkMgYW5kIHBsYXRmb3JtIGRhdGEuCisKK0ZvciBleGFtcGxlLCBMUDU1MjEgaGFzIG1heGltdW0gMyBMRUQgY2hhbm5lbHMuCitMUDU1MjMvNTUyMzEgaGFzIDkgb3V0cHV0IGNoYW5uZWxzLgorCitscDU1eHhfY2hpcCBmb3IgTFA1NTIxIC4uLiBscDU1eHhfbGVkICMxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBscDU1eHhfbGVkICMyCisgICAgICAgICAgICAgICAgICAgICAgICAgICBscDU1eHhfbGVkICMzCisKK2xwNTV4eF9jaGlwIGZvciBMUDU1MjMgLi4uIGxwNTV4eF9sZWQgIzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxwNTV4eF9sZWQgIzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxwNTV4eF9sZWQgIzkKKworKCBDaGlwIERlcGVuZGVudCBDb2RlICkKKworVG8gc3VwcG9ydCBkZXZpY2Ugc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIHNwZWNpYWwgc3RydWN0dXJlCisnbHB4eF9kZXZpY2VfY29uZmlnJyBpcyB1c2VkLgorCisgIE1heGltdW0gbnVtYmVyIG9mIGNoYW5uZWxzCisgIFJlc2V0IGNvbW1hbmQsIGNoaXAgZW5hYmxlIGNvbW1hbmQKKyAgQ2hpcCBzcGVjaWZpYyBpbml0aWFsaXphdGlvbgorICBCcmlnaHRuZXNzIGNvbnRyb2wgcmVnaXN0ZXIgYWNjZXNzCisgIFNldHRpbmcgTEVEIG91dHB1dCBjdXJyZW50CisgIFByb2dyYW0gbWVtb3J5IGFkZHJlc3MgYWNjZXNzIGZvciBydW5uaW5nIHBhdHRlcm5zCisgIEFkZGl0aW9uYWwgZGV2aWNlIHNwZWNpZmljIGF0dHJpYnV0ZXMKKworKCBGaXJtd2FyZSBJbnRlcmZhY2UgKQorCitMUDU1eHggZmFtaWx5IGRldmljZXMgaGF2ZSB0aGUgaW50ZXJuYWwgcHJvZ3JhbSBtZW1vcnkgZm9yIHJ1bm5pbmcKK3ZhcmlvdXMgTEVEIHBhdHRlcm5zLgorVGhpcyBwYXR0ZXJuIGRhdGEgaXMgc2F2ZWQgYXMgYSBmaWxlIGluIHRoZSB1c2VyLWxhbmQgb3IKK2hleCBieXRlIHN0cmluZyBpcyB3cml0dGVuIGludG8gdGhlIG1lbW9yeSB0aHJvdWdoIHRoZSBJMkMuCitMUDU1eHggY29tbW9uIGRyaXZlciBzdXBwb3J0cyB0aGUgZmlybXdhcmUgaW50ZXJmYWNlLgorCitMUDU1eHggY2hpcHMgaGF2ZSB0aHJlZSBwcm9ncmFtIGVuZ2luZXMuCitUbyBsb2FkIGFuZCBydW4gdGhlIHBhdHRlcm4sIHRoZSBwcm9ncmFtbWluZyBzZXF1ZW5jZSBpcyBmb2xsb3dpbmcuCisgICgxKSBTZWxlY3QgYW4gZW5naW5lIG51bWJlciAoMS8yLzMpCisgICgyKSBNb2RlIGNoYW5nZSB0byBsb2FkCisgICgzKSBXcml0ZSBwYXR0ZXJuIGRhdGEgaW50byBzZWxlY3RlZCBhcmVhCisgICg0KSBNb2RlIGNoYW5nZSB0byBydW4KKworVGhlIExQNTV4eCBjb21tb24gZHJpdmVyIHByb3ZpZGVzIHNpbXBsZSBpbnRlcmZhY2VzIGFzIGJlbG93Lgorc2VsZWN0X2VuZ2luZSA6IFNlbGVjdCB3aGljaCBlbmdpbmUgaXMgdXNlZCBmb3IgcnVubmluZyBwcm9ncmFtCitydW5fZW5naW5lICAgIDogU3RhcnQgcHJvZ3JhbSB3aGljaCBpcyBsb2FkZWQgdmlhIHRoZSBmaXJtd2FyZSBpbnRlcmZhY2UKK2Zpcm13YXJlICAgICAgOiBMb2FkIHByb2dyYW0gZGF0YQorCitJbiBjYXNlIG9mIExQNTUyMywgb25lIG1vcmUgY29tbWFuZCBpcyByZXF1aXJlZCwgJ2VuZ2luZXhfbGVkcycuCitJdCBpcyB1c2VkIGZvciBzZWxlY3RpbmcgTEVEIG91dHB1dChzKSBhdCBlYWNoIGVuZ2luZSBudW1iZXIuCitJbiBtb3JlIGRldGFpbHMsIHBsZWFzZSByZWZlciB0byAnbGVkcy1scDU1MjMudHh0Jy4KKworRm9yIGV4YW1wbGUsIHJ1biBibGlua2luZyBwYXR0ZXJuIGluIGVuZ2luZSAjMSBvZiBMUDU1MjEKK2VjaG8gMSA+IC9zeXMvYnVzL2kyYy9kZXZpY2VzL3h4eHgvc2VsZWN0X2VuZ2luZQorZWNobyAxID4gL3N5cy9jbGFzcy9maXJtd2FyZS9scDU1MjEvbG9hZGluZworZWNobyAiNDAwMDYwMDA0MEZGNjAwMCIgPiAvc3lzL2NsYXNzL2Zpcm13YXJlL2xwNTUyMS9kYXRhCitlY2hvIDAgPiAvc3lzL2NsYXNzL2Zpcm13YXJlL2xwNTUyMS9sb2FkaW5nCitlY2hvIDEgPiAvc3lzL2J1cy9pMmMvZGV2aWNlcy94eHh4L3J1bl9lbmdpbmUKKworRm9yIGV4YW1wbGUsIHJ1biBibGlua2luZyBwYXR0ZXJuIGluIGVuZ2luZSAjMyBvZiBMUDU1MjMxCitUd28gTEVEcyBhcmUgY29uZmlndXJlZCBhcyBwYXR0ZXJuIG91dHB1dCBjaGFubmVscy4KK2VjaG8gMyA+IC9zeXMvYnVzL2kyYy9kZXZpY2VzL3h4eHgvc2VsZWN0X2VuZ2luZQorZWNobyAxID4gL3N5cy9jbGFzcy9maXJtd2FyZS9scDU1MjMxL2xvYWRpbmcKK2VjaG8gIjlkMDc0MGZmN2UwMDQwMDA3ZTAwYTAwMTAwMDAiID4gL3N5cy9jbGFzcy9maXJtd2FyZS9scDU1MjMxL2RhdGEKK2VjaG8gMCA+IC9zeXMvY2xhc3MvZmlybXdhcmUvbHA1NTIzMS9sb2FkaW5nCitlY2hvICIwMDAwMDExMDAiID4gL3N5cy9idXMvaTJjL2RldmljZXMveHh4eC9lbmdpbmUzX2xlZHMKK2VjaG8gMSA+IC9zeXMvYnVzL2kyYy9kZXZpY2VzL3h4eHgvcnVuX2VuZ2luZQorCitUbyBzdGFydCBibGlua2luZyBwYXR0ZXJucyBpbiBlbmdpbmUgIzIgYW5kICMzIHNpbXVsdGFuZW91c2x5LAorZm9yIGlkeCBpbiAyIDMKK2RvCisgIGVjaG8gJGlkeCA+IC9zeXMvY2xhc3MvbGVkcy9yZWQvZGV2aWNlL3NlbGVjdF9lbmdpbmUKKyAgc2xlZXAgMC4xCisgIGVjaG8gMSA+IC9zeXMvY2xhc3MvZmlybXdhcmUvbHA1NTIxL2xvYWRpbmcKKyAgZWNobyAiNDAwMDYwMDA0MEZGNjAwMCIgPiAvc3lzL2NsYXNzL2Zpcm13YXJlL2xwNTUyMS9kYXRhCisgIGVjaG8gMCA+IC9zeXMvY2xhc3MvZmlybXdhcmUvbHA1NTIxL2xvYWRpbmcKK2RvbmUKK2VjaG8gMSA+IC9zeXMvY2xhc3MvbGVkcy9yZWQvZGV2aWNlL3J1bl9lbmdpbmUKKworSGVyZSBpcyBhbm90aGVyIGV4YW1wbGUgZm9yIExQNTUyMy4KK0Z1bGwgTEVEIHN0cmluZ3MgYXJlIHNlbGVjdGVkIGJ5ICdlbmdpbmUyX2xlZHMnLgorZWNobyAyID4gL3N5cy9idXMvaTJjL2RldmljZXMveHh4eC9zZWxlY3RfZW5naW5lCitlY2hvIDEgPiAvc3lzL2NsYXNzL2Zpcm13YXJlL2xwNTUyMy9sb2FkaW5nCitlY2hvICI5ZDgwNDAwMDA0ZmYwNWZmNDM3ZjAwMDAiID4gL3N5cy9jbGFzcy9maXJtd2FyZS9scDU1MjMvZGF0YQorZWNobyAwID4gL3N5cy9jbGFzcy9maXJtd2FyZS9scDU1MjMvbG9hZGluZworZWNobyAiMTExMTExMTExIiA+IC9zeXMvYnVzL2kyYy9kZXZpY2VzL3h4eHgvZW5naW5lMl9sZWRzCitlY2hvIDEgPiAvc3lzL2J1cy9pMmMvZGV2aWNlcy94eHh4L3J1bl9lbmdpbmUKKworQXMgc29vbiBhcyAnbG9hZGluZycgaXMgc2V0IHRvIDAsIHJlZ2lzdGVyZWQgY2FsbGJhY2sgaXMgY2FsbGVkLgorSW5zaWRlIHRoZSBjYWxsYmFjaywgdGhlIHNlbGVjdGVkIGVuZ2luZSBpcyBsb2FkZWQgYW5kIG1lbW9yeSBpcyB1cGRhdGVkLgorVG8gcnVuIHByb2dyYW1tZWQgcGF0dGVybiwgJ3J1bl9lbmdpbmUnIGF0dHJpYnV0ZSBzaG91bGQgYmUgZW5hYmxlZC4KKworVGhlIHBhdHRlcm4gc3FldWVuY2Ugb2YgTFA4NTAxIGlzIHNpbWlsYXIgdG8gTFA1NTIzLgorSG93ZXZlciBwYXR0ZXJuIGRhdGEgaXMgc3BlY2lmaWMuCitFeCAxKSBFbmdpbmUgMSBpcyB1c2VkCitlY2hvIDEgPiAvc3lzL2J1cy9pMmMvZGV2aWNlcy94eHh4L3NlbGVjdF9lbmdpbmUKK2VjaG8gMSA+IC9zeXMvY2xhc3MvZmlybXdhcmUvbHA4NTAxL2xvYWRpbmcKK2VjaG8gIjlkMDE0MGZmN2UwMDQwMDA3ZTAwYTAwMWMwMDAiID4gL3N5cy9jbGFzcy9maXJtd2FyZS9scDg1MDEvZGF0YQorZWNobyAwID4gL3N5cy9jbGFzcy9maXJtd2FyZS9scDg1MDEvbG9hZGluZworZWNobyAxID4gL3N5cy9idXMvaTJjL2RldmljZXMveHh4eC9ydW5fZW5naW5lCisKK0V4IDIpIEVuZ2luZSAyIGFuZCAzIGFyZSB1c2VkIGF0IHRoZSBzYW1lIHRpbWUKK2VjaG8gMiA+IC9zeXMvYnVzL2kyYy9kZXZpY2VzL3h4eHgvc2VsZWN0X2VuZ2luZQorc2xlZXAgMQorZWNobyAxID4gL3N5cy9jbGFzcy9maXJtd2FyZS9scDg1MDEvbG9hZGluZworZWNobyAiOWQwMTQwZmY3ZTAwNDAwMDdlMDBhMDAxYzAwMCIgPiAvc3lzL2NsYXNzL2Zpcm13YXJlL2xwODUwMS9kYXRhCitlY2hvIDAgPiAvc3lzL2NsYXNzL2Zpcm13YXJlL2xwODUwMS9sb2FkaW5nCitzbGVlcCAxCitlY2hvIDMgPiAvc3lzL2J1cy9pMmMvZGV2aWNlcy94eHh4L3NlbGVjdF9lbmdpbmUKK3NsZWVwIDEKK2VjaG8gMSA+IC9zeXMvY2xhc3MvZmlybXdhcmUvbHA4NTAxL2xvYWRpbmcKK2VjaG8gIjlkMDM0MGZmN2UwMDQwMDA3ZTAwYTAwMWMwMDAiID4gL3N5cy9jbGFzcy9maXJtd2FyZS9scDg1MDEvZGF0YQorZWNobyAwID4gL3N5cy9jbGFzcy9maXJtd2FyZS9scDg1MDEvbG9hZGluZworc2xlZXAgMQorZWNobyAxID4gL3N5cy9jbGFzcy9sZWRzL2QxL2RldmljZS9ydW5fZW5naW5lCisKKyggJ3J1bl9lbmdpbmUnIGFuZCAnZmlybXdhcmVfY2InICkKK1RoZSBzZXF1ZW5jZSBvZiBydW5uaW5nIHRoZSBwcm9ncmFtIGRhdGEgaXMgY29tbW9uLgorQnV0IGVhY2ggZGV2aWNlIGhhcyBvd24gc3BlY2lmaWMgcmVnaXN0ZXIgYWRkcmVzc2VzIGZvciBjb21tYW5kcy4KK1RvIHN1cHBvcnQgdGhpcywgJ3J1bl9lbmdpbmUnIGFuZCAnZmlybXdhcmVfY2InIGFyZSBjb25maWd1cmFibGUgaW4gZWFjaCBkcml2ZXIuCitydW5fZW5naW5lICA6IENvbnRyb2wgdGhlIHNlbGVjdGVkIGVuZ2luZQorZmlybXdhcmVfY2IgOiBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gYWZ0ZXIgbG9hZGluZyB0aGUgZmlybXdhcmUgaXMgZG9uZS4KKyAgICAgICAgICAgICAgQ2hpcCBzcGVjaWZpYyBjb21tYW5kcyBmb3IgbG9hZGluZyBhbmQgdXBkYXRpbmcgcHJvZ3JhbSBtZW1vcnkuCisKKyggUHJlZGVmaW5lZCBwYXR0ZXJuIGRhdGEgKQorCitXaXRob3V0IHRoZSBmaXJtd2FyZSBpbnRlcmZhY2UsIExQNTV4eCBkcml2ZXIgcHJvdmlkZXMgYW5vdGhlciBtZXRob2QgZm9yCitsb2FkaW5nIGEgTEVEIHBhdHRlcm4uIFRoYXQgaXMgJ3ByZWRlZmluZWQnIHBhdHRlcm4uCitBIHByZWRlZmluZWQgcGF0dGVybiBpcyBkZWZpbmVkIGluIHRoZSBwbGF0Zm9ybSBkYXRhIGFuZCBsb2FkIGl0KG9yIHRoZW0pCit2aWEgdGhlIHN5c2ZzIGlmIG5lZWRlZC4KK1RvIHVzZSB0aGUgcHJlZGVmaW5lZCBwYXR0ZXJuIGNvbmNlcHQsICdwYXR0ZXJucycgYW5kICdudW1fcGF0dGVybnMnIHNob3VsZCBiZQorY29uZmlndXJlZC4KKworICBFeGFtcGxlIG9mIHByZWRlZmluZWQgcGF0dGVybiBkYXRhOgorCisgIC8qIG1vZGVfMTogYmxpbmtpbmcgZGF0YSAqLworICBzdGF0aWMgY29uc3QgdTggbW9kZV8xW10gPSB7CisJCTB4NDAsIDB4MDAsIDB4NjAsIDB4MDAsIDB4NDAsIDB4RkYsIDB4NjAsIDB4MDAsCisJCX07CisKKyAgLyogbW9kZV8yOiBhbHdheXMgb24gKi8KKyAgc3RhdGljIGNvbnN0IHU4IG1vZGVfMltdID0geyAweDQwLCAweEZGLCB9OworCisgIHN0cnVjdCBscDU1eHhfcHJlZGVmX3BhdHRlcm4gYm9hcmRfbGVkX3BhdHRlcm5zW10gPSB7CisJeworCQkuciA9IG1vZGVfMSwKKwkJLnNpemVfciA9IEFSUkFZX1NJWkUobW9kZV8xKSwKKwl9LAorCXsKKwkJLmIgPSBtb2RlXzIsCisJCS5zaXplX2IgPSBBUlJBWV9TSVpFKG1vZGVfMiksCisJfSwKKyAgfQorCisgIHN0cnVjdCBscDU1eHhfcGxhdGZvcm1fZGF0YSBscDU1NjJfcGRhdGEgPSB7CisgIC4uLgorCS5wYXR0ZXJucyAgICAgID0gYm9hcmRfbGVkX3BhdHRlcm5zLAorCS5udW1fcGF0dGVybnMgID0gQVJSQVlfU0laRShib2FyZF9sZWRfcGF0dGVybnMpLAorICB9OworCitUaGVuLCBtb2RlXzEgYW5kIG1vZGVfMiBjYW4gYmUgcnVuIHZpYSB0aHJvdWdoIHRoZSBzeXNmcy4KKworICBlY2hvIDEgPiAvc3lzL2J1cy9pMmMvZGV2aWNlcy94eHh4L2xlZF9wYXR0ZXJuICAgICMgcmVkIGJsaW5raW5nIExFRCBwYXR0ZXJuCisgIGVjaG8gMiA+IC9zeXMvYnVzL2kyYy9kZXZpY2VzL3h4eHgvbGVkX3BhdHRlcm4gICAgIyBibHVlIExFRCBhbHdheXMgb24KKworVG8gc3RvcCBydW5uaW5nIHBhdHRlcm4sCisgIGVjaG8gMCA+IC9zeXMvYnVzL2kyYy9kZXZpY2VzL3h4eHgvbGVkX3BhdHRlcm4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbGVkcy9sZWR0cmlnLW9uZXNob3QudHh0IGIvRG9jdW1lbnRhdGlvbi9sZWRzL2xlZHRyaWctb25lc2hvdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdjZDFmYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbGVkcy9sZWR0cmlnLW9uZXNob3QudHh0CkBAIC0wLDAgKzEsNTkgQEAKK09uZS1zaG90IExFRCBUcmlnZ2VyCis9PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGlzIGEgTEVEIHRyaWdnZXIgdXNlZnVsIGZvciBzaWduYWxpbmcgdGhlIHVzZXIgb2YgYW4gZXZlbnQgd2hlcmUgdGhlcmUgYXJlCitubyBjbGVhciB0cmFwIHBvaW50cyB0byBwdXQgc3RhbmRhcmQgbGVkLW9uIGFuZCBsZWQtb2ZmIHNldHRpbmdzLiAgVXNpbmcgdGhpcwordHJpZ2dlciwgdGhlIGFwcGxpY2F0aW9uIG5lZWRzIG9ubHkgdG8gc2lnbmFsIHRoZSB0cmlnZ2VyIHdoZW4gYW4gZXZlbnQgaGFzCitoYXBwZW5lZCwgdGhhbiB0aGUgdHJpZ2dlciB0dXJucyB0aGUgTEVEIG9uIGFuZCB0aGFuIGtlZXBzIGl0IG9mZiBmb3IgYQorc3BlY2lmaWVkIGFtb3VudCBvZiB0aW1lLgorCitUaGlzIHRyaWdnZXIgaXMgbWVhbnQgdG8gYmUgdXNhYmxlIGJvdGggZm9yIHNwb3JhZGljIGFuZCBkZW5zZSBldmVudHMuICBJbiB0aGUKK2ZpcnN0IGNhc2UsIHRoZSB0cmlnZ2VyIHByb2R1Y2VzIGEgY2xlYXIgc2luZ2xlIGNvbnRyb2xsZWQgYmxpbmsgZm9yIGVhY2gKK2V2ZW50LCB3aGlsZSBpbiB0aGUgbGF0dGVyIGl0IGtlZXBzIGJsaW5raW5nIGF0IGNvbnN0YW50IHJhdGUsIGFzIHRvIHNpZ25hbAordGhhdCB0aGUgZXZlbnRzIGFyZSBhcnJpdmluZyBjb250aW51b3VzbHkuCisKK0Egb25lLXNob3QgTEVEIG9ubHkgc3RheXMgaW4gYSBjb25zdGFudCBzdGF0ZSB3aGVuIHRoZXJlIGFyZSBubyBldmVudHMuICBBbgorYWRkaXRpb25hbCAiaW52ZXJ0IiBwcm9wZXJ0eSBzcGVjaWZpZXMgaWYgdGhlIExFRCBoYXMgdG8gc3RheSBvZmYgKG5vcm1hbCkgb3IKK29uIChpbnZlcnRlZCkgd2hlbiBub3QgcmVhcm1lZC4KKworVGhlIHRyaWdnZXIgY2FuIGJlIGFjdGl2YXRlZCBmcm9tIHVzZXIgc3BhY2Ugb24gbGVkIGNsYXNzIGRldmljZXMgYXMgc2hvd24KK2JlbG93OgorCisgIGVjaG8gb25lc2hvdCA+IHRyaWdnZXIKKworVGhpcyBhZGRzIHRoZSBmb2xsb3dpbmcgc3lzZnMgYXR0cmlidXRlcyB0byB0aGUgTEVEOgorCisgIGRlbGF5X29uIC0gc3BlY2lmaWVzIGZvciBob3cgbWFueSBtaWxsaXNlY29uZHMgdGhlIExFRCBoYXMgdG8gc3RheSBhdAorICAgICAgICAgICAgIExFRF9GVUxMIGJyaWdodG5lc3MgYWZ0ZXIgaXQgaGFzIGJlZW4gYXJtZWQuCisgICAgICAgICAgICAgRGVmYXVsdCB0byAxMDAgbXMuCisKKyAgZGVsYXlfb2ZmIC0gc3BlY2lmaWVzIGZvciBob3cgbWFueSBtaWxsaXNlY29uZHMgdGhlIExFRCBoYXMgdG8gc3RheSBhdAorICAgICAgICAgICAgICBMRURfT0ZGIGJyaWdodG5lc3MgYWZ0ZXIgaXQgaGFzIGJlZW4gYXJtZWQuCisgICAgICAgICAgICAgIERlZmF1bHQgdG8gMTAwIG1zLgorCisgIGludmVydCAtIHJldmVyc2UgdGhlIGJsaW5rIGxvZ2ljLiAgSWYgc2V0IHRvIDAgKGRlZmF1bHQpIGJsaW5rIG9uIGZvciBkZWxheV9vbgorICAgICAgICAgICBtcywgdGhlbiBibGluayBvZmYgZm9yIGRlbGF5X29mZiBtcywgbGVhdmluZyB0aGUgTEVEIG5vcm1hbGx5IG9mZi4gIElmCisgICAgICAgICAgIHNldCB0byAxLCBibGluayBvZmYgZm9yIGRlbGF5X29mZiBtcywgdGhlbiBibGluayBvbiBmb3IgZGVsYXlfb24gbXMsCisgICAgICAgICAgIGxlYXZpbmcgdGhlIExFRCBub3JtYWxseSBvbi4KKyAgICAgICAgICAgU2V0dGluZyB0aGlzIHZhbHVlIGFsc28gaW1tZWRpYXRlbHkgY2hhbmdlIHRoZSBMRUQgc3RhdGUuCisKKyAgc2hvdCAtIHdyaXRlIGFueSBub24tZW1wdHkgc3RyaW5nIHRvIHNpZ25hbCBhbiBldmVudHMsIHRoaXMgc3RhcnRzIGEgYmxpbmsKKyAgICAgICAgIHNlcXVlbmNlIGlmIG5vdCBhbHJlYWR5IHJ1bm5pbmcuCisKK0V4YW1wbGUgdXNlLWNhc2U6IG5ldHdvcmsgZGV2aWNlcywgaW5pdGlhbGl6YXRpb246CisKKyAgZWNobyBvbmVzaG90ID4gdHJpZ2dlciAjIHNldCB0cmlnZ2VyIGZvciB0aGlzIGxlZAorICBlY2hvIDMzID4gZGVsYXlfb24gICAgICMgYmxpbmsgYXQgMSAvICgzMyArIDMzKSBIeiBvbiBjb250aW51b3VzIHRyYWZmaWMKKyAgZWNobyAzMyA+IGRlbGF5X29mZgorCitpbnRlcmZhY2UgZ29lcyB1cDoKKworICBlY2hvIDEgPiBpbnZlcnQgIyBzZXQgbGVkIGFzIG5vcm1hbGx5LW9uLCB0dXJuIHRoZSBsZWQgb24KKworcGFja2V0IHJlY2VpdmVkL3RyYW5zbWl0dGVkOgorCisgIGVjaG8gMSA+IHNob3QgIyBsZWQgc3RhcnRzIGJsaW5raW5nLCBpZ25vcmVkIGlmIGFscmVhZHkgYmxpbmtpbmcKKworaW50ZXJmYWNlIGdvZXMgZG93bgorCisgIGVjaG8gMCA+IGludmVydCAjIHNldCBsZWQgYXMgbm9ybWFsbHktb2ZmLCB0dXJuIHRoZSBsZWQgb2ZmCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2xlZHMvbGVkdHJpZy10cmFuc2llbnQudHh0IGIvRG9jdW1lbnRhdGlvbi9sZWRzL2xlZHRyaWctdHJhbnNpZW50LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmQzOGI0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9sZWRzL2xlZHRyaWctdHJhbnNpZW50LnR4dApAQCAtMCwwICsxLDE1MiBAQAorTEVEIFRyYW5zaWVudCBUcmlnZ2VyCis9PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGxlZHMgdGltZXIgdHJpZ2dlciBkb2VzIG5vdCBjdXJyZW50bHkgaGF2ZSBhbiBpbnRlcmZhY2UgdG8gYWN0aXZhdGUKK2Egb25lIHNob3QgdGltZXIuIFRoZSBjdXJyZW50IHN1cHBvcnQgYWxsb3dzIGZvciBzZXR0aW5nIHR3byB0aW1lcnMsIG9uZSBmb3IKK3NwZWNpZnlpbmcgaG93IGxvbmcgYSBzdGF0ZSB0byBiZSBvbiwgYW5kIHRoZSBzZWNvbmQgZm9yIGhvdyBsb25nIHRoZSBzdGF0ZQordG8gYmUgb2ZmLiBUaGUgZGVsYXlfb24gdmFsdWUgc3BlY2lmaWVzIHRoZSB0aW1lIHBlcmlvZCBhbiBMRUQgc2hvdWxkIHN0YXkKK2luIG9uIHN0YXRlLCBmb2xsb3dlZCBieSBhIGRlbGF5X29mZiB2YWx1ZSB0aGF0IHNwZWNpZmllcyBob3cgbG9uZyB0aGUgTEVECitzaG91bGQgc3RheSBpbiBvZmYgc3RhdGUuIFRoZSBvbiBhbmQgb2ZmIGN5Y2xlIHJlcGVhdHMgdW50aWwgdGhlIHRyaWdnZXIKK2dldHMgZGVhY3RpdmF0ZWQuIFRoZXJlIGlzIG5vIHByb3Zpc2lvbiBmb3Igb25lIHRpbWUgYWN0aXZhdGlvbiB0byBpbXBsZW1lbnQKK2ZlYXR1cmVzIHRoYXQgcmVxdWlyZSBhbiBvbiBvciBvZmYgc3RhdGUgdG8gYmUgaGVsZCBqdXN0IG9uY2UgYW5kIHRoZW4gc3RheSBpbgordGhlIG9yaWdpbmFsIHN0YXRlIGZvcmV2ZXIuCisKK1dpdGhvdXQgb25lIHNob3QgdGltZXIgaW50ZXJmYWNlLCB1c2VyIHNwYWNlIGNhbiBzdGlsbCB1c2UgdGltZXIgdHJpZ2dlciB0bworc2V0IGEgdGltZXIgdG8gaG9sZCBhIHN0YXRlLCBob3dldmVyIHdoZW4gdXNlciBzcGFjZSBhcHBsaWNhdGlvbiBjcmFzaGVzIG9yCitnb2VzIGF3YXkgd2l0aG91dCBkZWFjdGl2YXRpbmcgdGhlIHRpbWVyLCB0aGUgaGFyZHdhcmUgd2lsbCBiZSBsZWZ0IGluIHRoYXQKK3N0YXRlIHBlcm1hbmVudGx5LgorCitBcyBhIHNwZWNpZmljIGV4YW1wbGUgb2YgdGhpcyB1c2UtY2FzZSwgbGV0J3MgbG9vayBhdCB2aWJyYXRlIGZlYXR1cmUgb24KK3Bob25lcy4gVmlicmF0ZSBmdW5jdGlvbiBvbiBwaG9uZXMgaXMgaW1wbGVtZW50ZWQgdXNpbmcgUFdNIHBpbnMgb24gU29DIG9yCitQTUlDLiBUaGVyZSBpcyBhIG5lZWQgdG8gYWN0aXZhdGUgb25lIHNob3QgdGltZXIgdG8gY29udHJvbCB0aGUgdmlicmF0ZQorZmVhdHVyZSwgdG8gcHJldmVudCB1c2VyIHNwYWNlIGNyYXNoZXMgbGVhdmluZyB0aGUgcGhvbmUgaW4gdmlicmF0ZSBtb2RlCitwZXJtYW5lbnRseSBjYXVzaW5nIHRoZSBiYXR0ZXJ5IHRvIGRyYWluLgorCitUcmFuc2llbnQgdHJpZ2dlciBhZGRyZXNzZXMgdGhlIG5lZWQgZm9yIG9uZSBzaG90IHRpbWVyIGFjdGl2YXRpb24uIFRoZQordHJhbnNpZW50IHRyaWdnZXIgY2FuIGJlIGVuYWJsZWQgYW5kIGRpc2FibGVkIGp1c3QgbGlrZSB0aGUgb3RoZXIgbGVkcwordHJpZ2dlcnMuCisKK1doZW4gYW4gbGVkIGNsYXNzIGRldmljZSBkcml2ZXIgcmVnaXN0ZXJzIGl0c2VsZiwgaXQgY2FuIHNwZWNpZnkgYWxsIGxlZHMKK3RyaWdnZXJzIGl0IHN1cHBvcnRzIGFuZCBhIGRlZmF1bHQgdHJpZ2dlci4gRHVyaW5nIHJlZ2lzdHJhdGlvbiwgYWN0aXZhdGlvbgorcm91dGluZSBmb3IgdGhlIGRlZmF1bHQgdHJpZ2dlciBnZXRzIGNhbGxlZC4gRHVyaW5nIHJlZ2lzdHJhdGlvbiBvZiBhbiBsZWQKK2NsYXNzIGRldmljZSwgdGhlIExFRCBzdGF0ZSBkb2VzIG5vdCBjaGFuZ2UuCisKK1doZW4gdGhlIGRyaXZlciB1bnJlZ2lzdGVycywgZGVhY3RpdmF0aW9uIHJvdXRpbmUgZm9yIHRoZSBjdXJyZW50bHkgYWN0aXZlCit0cmlnZ2VyIHdpbGwgYmUgY2FsbGVkLCBhbmQgTEVEIHN0YXRlIGlzIGNoYW5nZWQgdG8gTEVEX09GRi4KKworRHJpdmVyIHN1c3BlbmQgY2hhbmdlcyB0aGUgTEVEIHN0YXRlIHRvIExFRF9PRkYgYW5kIHJlc3VtZSBkb2Vzbid0IGNoYW5nZQordGhlIHN0YXRlLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXJlIGlzIG5vIGV4cGxpY2l0IGludGVyYWN0aW9uIGJldHdlZW4gdGhlCitzdXNwZW5kIGFuZCByZXN1bWUgYWN0aW9ucyBhbmQgdGhlIGN1cnJlbnRseSBlbmFibGVkIHRyaWdnZXIuIExFRCBzdGF0ZQorY2hhbmdlcyBhcmUgc3VzcGVuZGVkIHdoaWxlIHRoZSBkcml2ZXIgaXMgaW4gc3VzcGVuZCBzdGF0ZS4gQW55IHRpbWVycwordGhhdCBhcmUgYWN0aXZlIGF0IHRoZSB0aW1lIGRyaXZlciBnZXRzIHN1c3BlbmRlZCwgY29udGludWUgdG8gcnVuLCB3aXRob3V0CitiZWluZyBhYmxlIHRvIGFjdHVhbGx5IGNoYW5nZSB0aGUgTEVEIHN0YXRlLiBPbmNlIGRyaXZlciBpcyByZXN1bWVkLCB0cmlnZ2Vycworc3RhcnQgZnVuY3Rpb25pbmcgYWdhaW4uCisKK0xFRCBzdGF0ZSBjaGFuZ2VzIGFyZSBjb250cm9sbGVkIHVzaW5nIGJyaWdodG5lc3Mgd2hpY2ggaXMgYSBjb21tb24gbGVkCitjbGFzcyBkZXZpY2UgcHJvcGVydHkuIFdoZW4gYnJpZ2h0bmVzcyBpcyBzZXQgdG8gMCBmcm9tIHVzZXIgc3BhY2UgdmlhCitlY2hvIDAgPiBicmlnaHRuZXNzLCBpdCB3aWxsIHJlc3VsdCBpbiBkZWFjdGl2YXRpbmcgdGhlIGN1cnJlbnQgdHJpZ2dlci4KKworVHJhbnNpZW50IHRyaWdnZXIgdXNlcyBzdGFuZGFyZCByZWdpc3RlciBhbmQgdW5yZWdpc3RlciBpbnRlcmZhY2VzLiBEdXJpbmcKK3RyaWdnZXIgcmVnaXN0cmF0aW9uLCBmb3IgZWFjaCBsZWQgY2xhc3MgZGV2aWNlIHRoYXQgc3BlY2lmaWVzIHRoaXMgdHJpZ2dlcgorYXMgaXRzIGRlZmF1bHQgdHJpZ2dlciwgdHJpZ2dlciBhY3RpdmF0aW9uIHJvdXRpbmUgd2lsbCBnZXQgY2FsbGVkLiBEdXJpbmcKK3JlZ2lzdHJhdGlvbiwgdGhlIExFRCBzdGF0ZSBkb2VzIG5vdCBjaGFuZ2UsIHVubGVzcyB0aGVyZSBpcyBhbm90aGVyIHRyaWdnZXIKK2FjdGl2ZSwgaW4gd2hpY2ggY2FzZSBMRUQgc3RhdGUgY2hhbmdlcyB0byBMRURfT0ZGLgorCitEdXJpbmcgdHJpZ2dlciB1bnJlZ2lzdHJhdGlvbiwgTEVEIHN0YXRlIGdldHMgY2hhbmdlZCB0byBMRURfT0ZGLgorCitUcmFuc2llbnQgdHJpZ2dlciBhY3RpdmF0aW9uIHJvdXRpbmUgZG9lc24ndCBjaGFuZ2UgdGhlIExFRCBzdGF0ZS4gSXQKK2NyZWF0ZXMgaXRzIHByb3BlcnRpZXMgYW5kIGRvZXMgaXRzIGluaXRpYWxpemF0aW9uLiBUcmFuc2llbnQgdHJpZ2dlcgorZGVhY3RpdmF0aW9uIHJvdXRpbmUsIHdpbGwgY2FuY2VsIGFueSB0aW1lciB0aGF0IGlzIGFjdGl2ZSBiZWZvcmUgaXQgY2xlYW5zCit1cCBhbmQgcmVtb3ZlcyB0aGUgcHJvcGVydGllcyBpdCBjcmVhdGVkLiBJdCB3aWxsIHJlc3RvcmUgdGhlIExFRCBzdGF0ZSB0bworbm9uLXRyYW5zaWVudCBzdGF0ZS4gV2hlbiBkcml2ZXIgZ2V0cyBzdXNwZW5kZWQsIGlycmVzcGVjdGl2ZSBvZiB0aGUgdHJhbnNpZW50CitzdGF0ZSwgdGhlIExFRCBzdGF0ZSBjaGFuZ2VzIHRvIExFRF9PRkYuCisKK1RyYW5zaWVudCB0cmlnZ2VyIGNhbiBiZSBlbmFibGVkIGFuZCBkaXNhYmxlZCBmcm9tIHVzZXIgc3BhY2Ugb24gbGVkIGNsYXNzCitkZXZpY2VzLCB0aGF0IHN1cHBvcnQgdGhpcyB0cmlnZ2VyIGFzIHNob3duIGJlbG93OgorCitlY2hvIHRyYW5zaWVudCA+IHRyaWdnZXIKK2VjaG8gbm9uZSA+IHRyaWdnZXIKKworTk9URTogQWRkIGEgbmV3IHByb3BlcnR5IHRyaWdnZXIgc3RhdGUgdG8gY29udHJvbCB0aGUgc3RhdGUuCisKK1RoaXMgdHJpZ2dlciBleHBvcnRzIHRocmVlIHByb3BlcnRpZXMsIGFjdGl2YXRlLCBzdGF0ZSwgYW5kIGR1cmF0aW9uLiBXaGVuCit0cmFuc2llbnQgdHJpZ2dlciBpcyBhY3RpdmF0ZWQgdGhlc2UgcHJvcGVydGllcyBhcmUgc2V0IHRvIGRlZmF1bHQgdmFsdWVzLgorCistIGR1cmF0aW9uIGFsbG93cyBzZXR0aW5nIHRpbWVyIHZhbHVlIGluIG1zZWNzLiBUaGUgaW5pdGlhbCB2YWx1ZSBpcyAwLgorLSBhY3RpdmF0ZSBhbGxvd3MgYWN0aXZhdGluZyBhbmQgZGVhY3RpdmF0aW5nIHRoZSB0aW1lciBzcGVjaWZpZWQgYnkKKyAgZHVyYXRpb24gYXMgbmVlZGVkLiBUaGUgaW5pdGlhbCBhbmQgZGVmYXVsdCB2YWx1ZSBpcyAwLiAgVGhpcyB3aWxsIGFsbG93CisgIGR1cmF0aW9uIHRvIGJlIHNldCBhZnRlciB0cmlnZ2VyIGFjdGl2YXRpb24uCistIHN0YXRlIGFsbG93cyB1c2VyIHRvIHNwZWNpZnkgYSB0cmFuc2llbnQgc3RhdGUgdG8gYmUgaGVsZCBmb3IgdGhlIHNwZWNpZmllZAorICBkdXJhdGlvbi4KKworCWFjdGl2YXRlIC0gb25lIHNob3QgdGltZXIgYWN0aXZhdGUgbWVjaGFuaXNtLgorCQkxIHdoZW4gYWN0aXZhdGVkLCAwIHdoZW4gZGVhY3RpdmF0ZWQuCisJCWRlZmF1bHQgdmFsdWUgaXMgemVybyB3aGVuIHRyYW5zaWVudCB0cmlnZ2VyIGlzIGVuYWJsZWQsCisJCXRvIGFsbG93IGR1cmF0aW9uIHRvIGJlIHNldC4KKworCQlhY3RpdmF0ZSBzdGF0ZSBpbmRpY2F0ZXMgYSB0aW1lciB3aXRoIGEgdmFsdWUgb2Ygc3BlY2lmaWVkCisJCWR1cmF0aW9uIHJ1bm5pbmcuCisJCWRlYWN0aXZhdGVkIHN0YXRlIGluZGljYXRlcyB0aGF0IHRoZXJlIGlzIG5vIGFjdGl2ZSB0aW1lcgorCQlydW5uaW5nLgorCisJZHVyYXRpb24gLSBvbmUgc2hvdCB0aW1lciB2YWx1ZS4gV2hlbiBhY3RpdmF0ZSBpcyBzZXQsIGR1cmF0aW9uIHZhbHVlCisJCWlzIHVzZWQgdG8gc3RhcnQgYSB0aW1lciB0aGF0IHJ1bnMgb25jZS4gVGhpcyB2YWx1ZSBkb2Vzbid0CisJCWdldCBjaGFuZ2VkIGJ5IHRoZSB0cmlnZ2VyIHVubGVzcyB1c2VyIGRvZXMgYSBzZXQgdmlhCisJCWVjaG8gbmV3X3ZhbHVlID4gZHVyYXRpb24KKworCXN0YXRlIC0gdHJhbnNpZW50IHN0YXRlIHRvIGJlIGhlbGQuIEl0IGhhcyB0d28gdmFsdWVzIDAgb3IgMS4gMCBtYXBzCisJCXRvIExFRF9PRkYgYW5kIDEgbWFwcyB0byBMRURfRlVMTC4gVGhlIHNwZWNpZmllZCBzdGF0ZSBpcworCQloZWxkIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIG9uZSBzaG90IHRpbWVyIGFuZCB0aGVuIHRoZQorCQlzdGF0ZSBnZXRzIGNoYW5nZWQgdG8gdGhlIG5vbi10cmFuc2llbnQgc3RhdGUgd2hpY2ggaXMgdGhlCisJCWludmVyc2Ugb2YgdHJhbnNpZW50IHN0YXRlLgorCQlJZiBzdGF0ZSA9IExFRF9GVUxMLCB3aGVuIHRoZSB0aW1lciBydW5zIG91dCB0aGUgc3RhdGUgd2lsbAorCQlnbyBiYWNrIHRvIExFRF9PRkYuCisJCUlmIHN0YXRlID0gTEVEX09GRiwgd2hlbiB0aGUgdGltZXIgcnVucyBvdXQgdGhlIHN0YXRlIHdpbGwKKwkJZ28gYmFjayB0byBMRURfRlVMTC4KKwkJUGxlYXNlIG5vdGUgdGhhdCBjdXJyZW50IExFRCBzdGF0ZSBpcyBub3QgY2hlY2tlZCBwcmlvciB0bworCQljaGFuZ2luZyB0aGUgc3RhdGUgdG8gdGhlIHNwZWNpZmllZCBzdGF0ZS4KKwkJRHJpdmVyIGNvdWxkIG1hcCB0aGVzZSB2YWx1ZXMgdG8gaW52ZXJ0ZWQgZGVwZW5kaW5nIG9uIHRoZQorCQlkZWZhdWx0IHN0YXRlcyBpdCBkZWZpbmVzIGZvciB0aGUgTEVEIGluIGl0cyBicmlnaHRuZXNzX3NldCgpCisJCWludGVyZmFjZSB3aGljaCBpcyBjYWxsZWQgZnJvbSB0aGUgbGVkIGJyaWdodG5lc3Nfc2V0KCkKKwkJaW50ZXJmYWNlcyB0byBjb250cm9sIHRoZSBMRUQgc3RhdGUuCisKK1doZW4gdGltZXIgZXhwaXJlcyBhY3RpdmF0ZSBnb2VzIGJhY2sgdG8gZGVhY3RpdmF0ZWQgc3RhdGUsIGR1cmF0aW9uIGlzIGxlZnQKK2F0IHRoZSBzZXQgdmFsdWUgdG8gYmUgdXNlZCB3aGVuIGFjdGl2YXRlIGlzIHNldCBhdCBhIGZ1dHVyZSB0aW1lLiBUaGlzIHdpbGwKK2FsbG93IHVzZXIgYXBwIHRvIHNldCB0aGUgdGltZSBvbmNlIGFuZCBhY3RpdmF0ZSBpdCB0byBydW4gaXQgb25jZSBmb3IgdGhlCitzcGVjaWZpZWQgdmFsdWUgYXMgbmVlZGVkLiBXaGVuIHRpbWVyIGV4cGlyZXMsIHN0YXRlIGlzIHJlc3RvcmVkIHRvIHRoZQorbm9uLXRyYW5zaWVudCBzdGF0ZSB3aGljaCBpcyB0aGUgaW52ZXJzZSBvZiB0aGUgdHJhbnNpZW50IHN0YXRlLgorCisJZWNobyAxID4gYWN0aXZhdGUgLSBzdGFydHMgdGltZXIgPSBkdXJhdGlvbiB3aGVuIGR1cmF0aW9uIGlzIG5vdCAwLgorCWVjaG8gMCA+IGFjdGl2YXRlIC0gY2FuY2VscyBjdXJyZW50bHkgcnVubmluZyB0aW1lci4KKwllY2hvIG4gPiBkdXJhdGlvbiAtIHN0b3JlcyB0aW1lciB2YWx1ZSB0byBiZSB1c2VkIHVwb24gbmV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2YXRlLiBDdXJyZW50bHkgYWN0aXZlIHRpbWVyIGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55LCBjb250aW51ZXMgdG8gcnVuIGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuCisJZWNobyAwID4gZHVyYXRpb24gLSBzdG9yZXMgdGltZXIgdmFsdWUgdG8gYmUgdXNlZCB1cG9uIG5leHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmF0ZS4gQ3VycmVudGx5IGFjdGl2ZSB0aW1lciBpZiBhbnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWVzIHRvIHJ1biBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLgorCWVjaG8gMSA+IHN0YXRlICAgIC0gc3RvcmVzIGRlc2lyZWQgdHJhbnNpZW50IHN0YXRlIExFRF9GVUxMIHRvIGJlCisJCQkgICAgaGVsZCBmb3IgdGhlIHNwZWNpZmllZCBkdXJhdGlvbi4KKwllY2hvIDAgPiBzdGF0ZSAgICAtIHN0b3JlcyBkZXNpcmVkIHRyYW5zaWVudCBzdGF0ZSBMRURfT0ZGIHRvIGJlCisJCQkgICAgaGVsZCBmb3IgdGhlIHNwZWNpZmllZCBkdXJhdGlvbi4KKworV2hhdCBpcyBub3Qgc3VwcG9ydGVkOgorPT09PT09PT09PT09PT09PT09PT09PQorLSBUaW1lciBhY3RpdmF0aW9uIGlzIG9uZSBzaG90IGFuZCBleHRlbmRpbmcgYW5kL29yIHNob3J0ZW5pbmcgdGhlIHRpbWVyCisgIGlzIG5vdCBzdXBwb3J0ZWQuCisKK0V4YW1wbGUgdXNlLWNhc2UgMToKKwllY2hvIHRyYW5zaWVudCA+IHRyaWdnZXIKKwllY2hvIG4gPiBkdXJhdGlvbgorCWVjaG8gMSA+IHN0YXRlCityZXBlYXQgdGhlIGZvbGxvd2luZyBzdGVwIGFzIG5lZWRlZDoKKwllY2hvIDEgPiBhY3RpdmF0ZSAtIHN0YXJ0IHRpbWVyID0gZHVyYXRpb24gdG8gcnVuIG9uY2UKKwllY2hvIDEgPiBhY3RpdmF0ZSAtIHN0YXJ0IHRpbWVyID0gZHVyYXRpb24gdG8gcnVuIG9uY2UKKwllY2hvIG5vbmUgPiB0cmlnZ2VyCisKK1RoaXMgdHJpZ2dlciBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBmb3IgdGhlIGZvbGxvd2luZyBleGFtcGxlIHVzZSBjYXNlczoKKyAtIENvbnRyb2wgb2YgdmlicmF0ZSAocGhvbmVzLCB0YWJsZXRzIGV0Yy4pIGhhcmR3YXJlIGJ5IHVzZXIgc3BhY2UgYXBwLgorIC0gVXNlIG9mIExFRCBieSB1c2VyIHNwYWNlIGFwcCBhcyBhY3Rpdml0eSBpbmRpY2F0b3IuCisgLSBVc2Ugb2YgTEVEIGJ5IHVzZXIgc3BhY2UgYXBwIGFzIGEga2luZCBvZiB3YXRjaGRvZyBpbmRpY2F0b3IgLS0gYXMKKyAgICAgICBsb25nIGFzIHRoZSBhcHAgaXMgYWxpdmUsIGl0IGNhbiBrZWVwIHRoZSBMRUQgaWxsdW1pbmF0ZWQsIGlmIGl0IGRpZXMKKyAgICAgICB0aGUgTEVEIHdpbGwgYmUgZXh0aW5ndWlzaGVkIGF1dG9tYXRpY2FsbHkuCisgLSBVc2UgYnkgYW55IHVzZXIgc3BhY2UgYXBwIHRoYXQgbmVlZHMgYSB0cmFuc2llbnQgR1BJTyBvdXRwdXQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2xvY2FsX29wcy50eHQgYi9Eb2N1bWVudGF0aW9uL2xvY2FsX29wcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA3NTc2YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbG9jYWxfb3BzLnR4dApAQCAtMCwwICsxLDE5MSBAQAorCSAgICAgU2VtYW50aWNzIGFuZCBCZWhhdmlvciBvZiBMb2NhbCBBdG9taWMgT3BlcmF0aW9ucworCisJCQkgICAgTWF0aGlldSBEZXNub3llcnMKKworCisJVGhpcyBkb2N1bWVudCBleHBsYWlucyB0aGUgcHVycG9zZSBvZiB0aGUgbG9jYWwgYXRvbWljIG9wZXJhdGlvbnMsIGhvdwordG8gaW1wbGVtZW50IHRoZW0gZm9yIGFueSBnaXZlbiBhcmNoaXRlY3R1cmUgYW5kIHNob3dzIGhvdyB0aGV5IGNhbiBiZSB1c2VkCitwcm9wZXJseS4gSXQgYWxzbyBzdHJlc3NlcyBvbiB0aGUgcHJlY2F1dGlvbnMgdGhhdCBtdXN0IGJlIHRha2VuIHdoZW4gcmVhZGluZwordGhvc2UgbG9jYWwgdmFyaWFibGVzIGFjcm9zcyBDUFVzIHdoZW4gdGhlIG9yZGVyIG9mIG1lbW9yeSB3cml0ZXMgbWF0dGVycy4KKworTm90ZSB0aGF0IGxvY2FsX3QgYmFzZWQgb3BlcmF0aW9ucyBhcmUgbm90IHJlY29tbWVuZGVkIGZvciBnZW5lcmFsIGtlcm5lbCB1c2UuCitQbGVhc2UgdXNlIHRoZSB0aGlzX2NwdSBvcGVyYXRpb25zIGluc3RlYWQgdW5sZXNzIHRoZXJlIGlzIHJlYWxseSBhIHNwZWNpYWwgcHVycG9zZS4KK01vc3QgdXNlcyBvZiBsb2NhbF90IGluIHRoZSBrZXJuZWwgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5IHRoaXNfY3B1IG9wZXJhdGlvbnMuCit0aGlzX2NwdSBvcGVyYXRpb25zIGNvbWJpbmUgdGhlIHJlbG9jYXRpb24gd2l0aCB0aGUgbG9jYWxfdCBsaWtlIHNlbWFudGljcyBpbgorYSBzaW5nbGUgaW5zdHJ1Y3Rpb24gYW5kIHlpZWxkIG1vcmUgY29tcGFjdCBhbmQgZmFzdGVyIGV4ZWN1dGluZyBjb2RlLgorCisKKyogUHVycG9zZSBvZiBsb2NhbCBhdG9taWMgb3BlcmF0aW9ucworCitMb2NhbCBhdG9taWMgb3BlcmF0aW9ucyBhcmUgbWVhbnQgdG8gcHJvdmlkZSBmYXN0IGFuZCBoaWdobHkgcmVlbnRyYW50IHBlciBDUFUKK2NvdW50ZXJzLiBUaGV5IG1pbmltaXplIHRoZSBwZXJmb3JtYW5jZSBjb3N0IG9mIHN0YW5kYXJkIGF0b21pYyBvcGVyYXRpb25zIGJ5CityZW1vdmluZyB0aGUgTE9DSyBwcmVmaXggYW5kIG1lbW9yeSBiYXJyaWVycyBub3JtYWxseSByZXF1aXJlZCB0byBzeW5jaHJvbml6ZQorYWNyb3NzIENQVXMuCisKK0hhdmluZyBmYXN0IHBlciBDUFUgYXRvbWljIGNvdW50ZXJzIGlzIGludGVyZXN0aW5nIGluIG1hbnkgY2FzZXMgOiBpdCBkb2VzIG5vdAorcmVxdWlyZSBkaXNhYmxpbmcgaW50ZXJydXB0cyB0byBwcm90ZWN0IGZyb20gaW50ZXJydXB0IGhhbmRsZXJzIGFuZCBpdCBwZXJtaXRzCitjb2hlcmVudCBjb3VudGVycyBpbiBOTUkgaGFuZGxlcnMuIEl0IGlzIGVzcGVjaWFsbHkgdXNlZnVsIGZvciB0cmFjaW5nIHB1cnBvc2VzCithbmQgZm9yIHZhcmlvdXMgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyBjb3VudGVycy4KKworTG9jYWwgYXRvbWljIG9wZXJhdGlvbnMgb25seSBndWFyYW50ZWUgdmFyaWFibGUgbW9kaWZpY2F0aW9uIGF0b21pY2l0eSB3cnQgdGhlCitDUFUgd2hpY2ggb3ducyB0aGUgZGF0YS4gVGhlcmVmb3JlLCBjYXJlIG11c3QgdGFrZW4gdG8gbWFrZSBzdXJlIHRoYXQgb25seSBvbmUKK0NQVSB3cml0ZXMgdG8gdGhlIGxvY2FsX3QgZGF0YS4gVGhpcyBpcyBkb25lIGJ5IHVzaW5nIHBlciBjcHUgZGF0YSBhbmQgbWFraW5nCitzdXJlIHRoYXQgd2UgbW9kaWZ5IGl0IGZyb20gd2l0aGluIGEgcHJlZW1wdGlvbiBzYWZlIGNvbnRleHQuIEl0IGlzIGhvd2V2ZXIKK3Blcm1pdHRlZCB0byByZWFkIGxvY2FsX3QgZGF0YSBmcm9tIGFueSBDUFUgOiBpdCB3aWxsIHRoZW4gYXBwZWFyIHRvIGJlIHdyaXR0ZW4KK291dCBvZiBvcmRlciB3cnQgb3RoZXIgbWVtb3J5IHdyaXRlcyBieSB0aGUgb3duZXIgQ1BVLgorCisKKyogSW1wbGVtZW50YXRpb24gZm9yIGEgZ2l2ZW4gYXJjaGl0ZWN0dXJlCisKK0l0IGNhbiBiZSBkb25lIGJ5IHNsaWdodGx5IG1vZGlmeWluZyB0aGUgc3RhbmRhcmQgYXRvbWljIG9wZXJhdGlvbnMgOiBvbmx5Cit0aGVpciBVUCB2YXJpYW50IG11c3QgYmUga2VwdC4gSXQgdHlwaWNhbGx5IG1lYW5zIHJlbW92aW5nIExPQ0sgcHJlZml4IChvbgoraTM4NiBhbmQgeDg2XzY0KSBhbmQgYW55IFNNUCBzeW5jaHJvbml6YXRpb24gYmFycmllci4gSWYgdGhlIGFyY2hpdGVjdHVyZSBkb2VzCitub3QgaGF2ZSBhIGRpZmZlcmVudCBiZWhhdmlvciBiZXR3ZWVuIFNNUCBhbmQgVVAsIGluY2x1ZGluZyBhc20tZ2VuZXJpYy9sb2NhbC5oCitpbiB5b3VyIGFyY2hpdGVjdHVyZSdzIGxvY2FsLmggaXMgc3VmZmljaWVudC4KKworVGhlIGxvY2FsX3QgdHlwZSBpcyBkZWZpbmVkIGFzIGFuIG9wYXF1ZSBzaWduZWQgbG9uZyBieSBlbWJlZGRpbmcgYW4KK2F0b21pY19sb25nX3QgaW5zaWRlIGEgc3RydWN0dXJlLiBUaGlzIGlzIG1hZGUgc28gYSBjYXN0IGZyb20gdGhpcyB0eXBlIHRvIGEKK2xvbmcgZmFpbHMuIFRoZSBkZWZpbml0aW9uIGxvb2tzIGxpa2UgOgorCit0eXBlZGVmIHN0cnVjdCB7IGF0b21pY19sb25nX3QgYTsgfSBsb2NhbF90OworCisKKyogUnVsZXMgdG8gZm9sbG93IHdoZW4gdXNpbmcgbG9jYWwgYXRvbWljIG9wZXJhdGlvbnMKKworLSBWYXJpYWJsZXMgdG91Y2hlZCBieSBsb2NhbCBvcHMgbXVzdCBiZSBwZXIgY3B1IHZhcmlhYmxlcy4KKy0gX09ubHlfIHRoZSBDUFUgb3duZXIgb2YgdGhlc2UgdmFyaWFibGVzIG11c3Qgd3JpdGUgdG8gdGhlbS4KKy0gVGhpcyBDUFUgY2FuIHVzZSBsb2NhbCBvcHMgZnJvbSBhbnkgY29udGV4dCAocHJvY2VzcywgaXJxLCBzb2Z0aXJxLCBubWksIC4uLikKKyAgdG8gdXBkYXRlIGl0cyBsb2NhbF90IHZhcmlhYmxlcy4KKy0gUHJlZW1wdGlvbiAob3IgaW50ZXJydXB0cykgbXVzdCBiZSBkaXNhYmxlZCB3aGVuIHVzaW5nIGxvY2FsIG9wcyBpbgorICBwcm9jZXNzIGNvbnRleHQgdG8gICBtYWtlIHN1cmUgdGhlIHByb2Nlc3Mgd29uJ3QgYmUgbWlncmF0ZWQgdG8gYQorICBkaWZmZXJlbnQgQ1BVIGJldHdlZW4gZ2V0dGluZyB0aGUgcGVyLWNwdSB2YXJpYWJsZSBhbmQgZG9pbmcgdGhlCisgIGFjdHVhbCBsb2NhbCBvcC4KKy0gV2hlbiB1c2luZyBsb2NhbCBvcHMgaW4gaW50ZXJydXB0IGNvbnRleHQsIG5vIHNwZWNpYWwgY2FyZSBtdXN0IGJlCisgIHRha2VuIG9uIGEgbWFpbmxpbmUga2VybmVsLCBzaW5jZSB0aGV5IHdpbGwgcnVuIG9uIHRoZSBsb2NhbCBDUFUgd2l0aAorICBwcmVlbXB0aW9uIGFscmVhZHkgZGlzYWJsZWQuIEkgc3VnZ2VzdCwgaG93ZXZlciwgdG8gZXhwbGljaXRseQorICBkaXNhYmxlIHByZWVtcHRpb24gYW55d2F5IHRvIG1ha2Ugc3VyZSBpdCB3aWxsIHN0aWxsIHdvcmsgY29ycmVjdGx5IG9uCisgIC1ydCBrZXJuZWxzLgorLSBSZWFkaW5nIHRoZSBsb2NhbCBjcHUgdmFyaWFibGUgd2lsbCBwcm92aWRlIHRoZSBjdXJyZW50IGNvcHkgb2YgdGhlCisgIHZhcmlhYmxlLgorLSBSZWFkcyBvZiB0aGVzZSB2YXJpYWJsZXMgY2FuIGJlIGRvbmUgZnJvbSBhbnkgQ1BVLCBiZWNhdXNlIHVwZGF0ZXMgdG8KKyAgImxvbmciLCBhbGlnbmVkLCB2YXJpYWJsZXMgYXJlIGFsd2F5cyBhdG9taWMuIFNpbmNlIG5vIG1lbW9yeQorICBzeW5jaHJvbml6YXRpb24gaXMgZG9uZSBieSB0aGUgd3JpdGVyIENQVSwgYW4gb3V0ZGF0ZWQgY29weSBvZiB0aGUKKyAgdmFyaWFibGUgY2FuIGJlIHJlYWQgd2hlbiByZWFkaW5nIHNvbWUgX290aGVyXyBjcHUncyB2YXJpYWJsZXMuCisKKworKiBIb3cgdG8gdXNlIGxvY2FsIGF0b21pYyBvcGVyYXRpb25zCisKKyNpbmNsdWRlIDxsaW51eC9wZXJjcHUuaD4KKyNpbmNsdWRlIDxhc20vbG9jYWwuaD4KKworc3RhdGljIERFRklORV9QRVJfQ1BVKGxvY2FsX3QsIGNvdW50ZXJzKSA9IExPQ0FMX0lOSVQoMCk7CisKKworKiBDb3VudGluZworCitDb3VudGluZyBpcyBkb25lIG9uIGFsbCB0aGUgYml0cyBvZiBhIHNpZ25lZCBsb25nLgorCitJbiBwcmVlbXB0aWJsZSBjb250ZXh0LCB1c2UgZ2V0X2NwdV92YXIoKSBhbmQgcHV0X2NwdV92YXIoKSBhcm91bmQgbG9jYWwgYXRvbWljCitvcGVyYXRpb25zIDogaXQgbWFrZXMgc3VyZSB0aGF0IHByZWVtcHRpb24gaXMgZGlzYWJsZWQgYXJvdW5kIHdyaXRlIGFjY2VzcyB0bwordGhlIHBlciBjcHUgdmFyaWFibGUuIEZvciBpbnN0YW5jZSA6CisKKwlsb2NhbF9pbmMoJmdldF9jcHVfdmFyKGNvdW50ZXJzKSk7CisJcHV0X2NwdV92YXIoY291bnRlcnMpOworCitJZiB5b3UgYXJlIGFscmVhZHkgaW4gYSBwcmVlbXB0aW9uLXNhZmUgY29udGV4dCwgeW91IGNhbiB1c2UKK3RoaXNfY3B1X3B0cigpIGluc3RlYWQuCisKKwlsb2NhbF9pbmModGhpc19jcHVfcHRyKCZjb3VudGVycykpOworCisKKworKiBSZWFkaW5nIHRoZSBjb3VudGVycworCitUaG9zZSBsb2NhbCBjb3VudGVycyBjYW4gYmUgcmVhZCBmcm9tIGZvcmVpZ24gQ1BVcyB0byBzdW0gdGhlIGNvdW50LiBOb3RlIHRoYXQKK3RoZSBkYXRhIHNlZW4gYnkgbG9jYWxfcmVhZCBhY3Jvc3MgQ1BVcyBtdXN0IGJlIGNvbnNpZGVyZWQgdG8gYmUgb3V0IG9mIG9yZGVyCityZWxhdGl2ZWx5IHRvIG90aGVyIG1lbW9yeSB3cml0ZXMgaGFwcGVuaW5nIG9uIHRoZSBDUFUgdGhhdCBvd25zIHRoZSBkYXRhLgorCisJbG9uZyBzdW0gPSAwOworCWZvcl9lYWNoX29ubGluZV9jcHUoY3B1KQorCQlzdW0gKz0gbG9jYWxfcmVhZCgmcGVyX2NwdShjb3VudGVycywgY3B1KSk7CisKK0lmIHlvdSB3YW50IHRvIHVzZSBhIHJlbW90ZSBsb2NhbF9yZWFkIHRvIHN5bmNocm9uaXplIGFjY2VzcyB0byBhIHJlc291cmNlCitiZXR3ZWVuIENQVXMsIGV4cGxpY2l0IHNtcF93bWIoKSBhbmQgc21wX3JtYigpIG1lbW9yeSBiYXJyaWVycyBtdXN0IGJlIHVzZWQKK3Jlc3BlY3RpdmVseSBvbiB0aGUgd3JpdGVyIGFuZCB0aGUgcmVhZGVyIENQVXMuIEl0IHdvdWxkIGJlIHRoZSBjYXNlIGlmIHlvdSB1c2UKK3RoZSBsb2NhbF90IHZhcmlhYmxlIGFzIGEgY291bnRlciBvZiBieXRlcyB3cml0dGVuIGluIGEgYnVmZmVyIDogdGhlcmUgc2hvdWxkCitiZSBhIHNtcF93bWIoKSBiZXR3ZWVuIHRoZSBidWZmZXIgd3JpdGUgYW5kIHRoZSBjb3VudGVyIGluY3JlbWVudCBhbmQgYWxzbyBhCitzbXBfcm1iKCkgYmV0d2VlbiB0aGUgY291bnRlciByZWFkIGFuZCB0aGUgYnVmZmVyIHJlYWQuCisKKworSGVyZSBpcyBhIHNhbXBsZSBtb2R1bGUgd2hpY2ggaW1wbGVtZW50cyBhIGJhc2ljIHBlciBjcHUgY291bnRlciB1c2luZyBsb2NhbC5oLgorCistLS0gQkVHSU4gLS0tCisvKiB0ZXN0LWxvY2FsLmMKKyAqCisgKiBTYW1wbGUgbW9kdWxlIGZvciBsb2NhbC5oIHVzYWdlLgorICovCisKKworI2luY2x1ZGUgPGFzbS9sb2NhbC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3RpbWVyLmg+CisKK3N0YXRpYyBERUZJTkVfUEVSX0NQVShsb2NhbF90LCBjb3VudGVycykgPSBMT0NBTF9JTklUKDApOworCitzdGF0aWMgc3RydWN0IHRpbWVyX2xpc3QgdGVzdF90aW1lcjsKKworLyogSVBJIGNhbGxlZCBvbiBlYWNoIENQVS4gKi8KK3N0YXRpYyB2b2lkIHRlc3RfZWFjaCh2b2lkICppbmZvKQoreworCS8qIEluY3JlbWVudCB0aGUgY291bnRlciBmcm9tIGEgbm9uIHByZWVtcHRpYmxlIGNvbnRleHQgKi8KKwlwcmludGsoIkluY3JlbWVudCBvbiBjcHUgJWRcbiIsIHNtcF9wcm9jZXNzb3JfaWQoKSk7CisJbG9jYWxfaW5jKHRoaXNfY3B1X3B0cigmY291bnRlcnMpKTsKKworCS8qIFRoaXMgaXMgd2hhdCBpbmNyZW1lbnRpbmcgdGhlIHZhcmlhYmxlIHdvdWxkIGxvb2sgbGlrZSB3aXRoaW4gYQorCSAqIHByZWVtcHRpYmxlIGNvbnRleHQgKGl0IGRpc2FibGVzIHByZWVtcHRpb24pIDoKKwkgKgorCSAqIGxvY2FsX2luYygmZ2V0X2NwdV92YXIoY291bnRlcnMpKTsKKwkgKiBwdXRfY3B1X3Zhcihjb3VudGVycyk7CisJICovCit9CisKK3N0YXRpYyB2b2lkIGRvX3Rlc3RfdGltZXIodW5zaWduZWQgbG9uZyBkYXRhKQoreworCWludCBjcHU7CisKKwkvKiBJbmNyZW1lbnQgdGhlIGNvdW50ZXJzICovCisJb25fZWFjaF9jcHUodGVzdF9lYWNoLCBOVUxMLCAxKTsKKwkvKiBSZWFkIGFsbCB0aGUgY291bnRlcnMgKi8KKwlwcmludGsoIkNvdW50ZXJzIHJlYWQgZnJvbSBDUFUgJWRcbiIsIHNtcF9wcm9jZXNzb3JfaWQoKSk7CisJZm9yX2VhY2hfb25saW5lX2NwdShjcHUpIHsKKwkJcHJpbnRrKCJSZWFkIDogQ1BVICVkLCBjb3VudCAlbGRcbiIsIGNwdSwKKwkJCWxvY2FsX3JlYWQoJnBlcl9jcHUoY291bnRlcnMsIGNwdSkpKTsKKwl9CisJZGVsX3RpbWVyKCZ0ZXN0X3RpbWVyKTsKKwl0ZXN0X3RpbWVyLmV4cGlyZXMgPSBqaWZmaWVzICsgMTAwMDsKKwlhZGRfdGltZXIoJnRlc3RfdGltZXIpOworfQorCitzdGF0aWMgaW50IF9faW5pdCB0ZXN0X2luaXQodm9pZCkKK3sKKwkvKiBpbml0aWFsaXplIHRoZSB0aW1lciB0aGF0IHdpbGwgaW5jcmVtZW50IHRoZSBjb3VudGVyICovCisJaW5pdF90aW1lcigmdGVzdF90aW1lcik7CisJdGVzdF90aW1lci5mdW5jdGlvbiA9IGRvX3Rlc3RfdGltZXI7CisJdGVzdF90aW1lci5leHBpcmVzID0gamlmZmllcyArIDE7CisJYWRkX3RpbWVyKCZ0ZXN0X3RpbWVyKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgdGVzdF9leGl0KHZvaWQpCit7CisJZGVsX3RpbWVyX3N5bmMoJnRlc3RfdGltZXIpOworfQorCittb2R1bGVfaW5pdCh0ZXN0X2luaXQpOworbW9kdWxlX2V4aXQodGVzdF9leGl0KTsKKworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FVVEhPUigiTWF0aGlldSBEZXNub3llcnMiKTsKK01PRFVMRV9ERVNDUklQVElPTigiTG9jYWwgQXRvbWljIE9wcyIpOworLS0tIEVORCAtLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbG9ja2luZy8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vbG9ja2luZy8wMC1JTkRFWApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjU2YzliCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9sb2NraW5nLzAwLUlOREVYCkBAIC0wLDAgKzEsMTYgQEAKKzAwLUlOREVYCisJLSB0aGlzIGZpbGUuCitsb2NrZGVwLWRlc2lnbi50eHQKKwktIGRvY3VtZW50YXRpb24gb24gdGhlIHJ1bnRpbWUgbG9ja2luZyBjb3JyZWN0bmVzcyB2YWxpZGF0b3IuCitsb2Nrc3RhdC50eHQKKwktIGluZm8gb24gY29sbGVjdGluZyBzdGF0aXN0aWNzIG9uIGxvY2tzIChhbmQgY29udGVudGlvbikuCittdXRleC1kZXNpZ24udHh0CisJLSBpbmZvIG9uIHRoZSBnZW5lcmljIG11dGV4IHN1YnN5c3RlbS4KK3J0LW11dGV4LWRlc2lnbi50eHQKKwktIGRlc2NyaXB0aW9uIG9mIHRoZSBSZWFsVGltZSBtdXRleCBpbXBsZW1lbnRhdGlvbiBkZXNpZ24uCitydC1tdXRleC50eHQKKwktIGRlc2MuIG9mIFJULW11dGV4IHN1YnN5c3RlbSB3aXRoIFBJIChQcmlvcml0eSBJbmhlcml0YW5jZSkgc3VwcG9ydC4KK3NwaW5sb2Nrcy50eHQKKwktIGluZm8gb24gdXNpbmcgc3BpbmxvY2tzIHRvIHByb3ZpZGUgZXhjbHVzaXZlIGFjY2VzcyBpbiBrZXJuZWwuCit3dy1tdXRleC1kZXNpZ24udHh0CisJLSBJbnRybyB0byBNdXRleCB3YWl0L3dvdWxkIGRlYWRsb2NrIGhhbmRsaW5nLnMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbG9ja2luZy9sZ2xvY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9sb2NraW5nL2xnbG9jay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY5NzFlMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbG9ja2luZy9sZ2xvY2sudHh0CkBAIC0wLDAgKzEsMTY2IEBACitsZ2xvY2sgLSBsb2NhbC9nbG9iYWwgbG9ja3MgZm9yIG1vc3RseSBsb2NhbCBhY2Nlc3MgcGF0dGVybnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPcmlnaW46IE5pY2sgUGlnZ2luJ3MgVkZTIHNjYWxhYmlsaXR5IHNlcmllcyBpbnRyb2R1Y2VkIGR1cmluZworCTIuNi4zNSsrIFsxXSBbMl0KK0xvY2F0aW9uOiBrZXJuZWwvbG9ja2luZy9sZ2xvY2suYworCWluY2x1ZGUvbGludXgvbGdsb2NrLmgKK1VzZXJzOiBjdXJyZW50bHkgb25seSB0aGUgVkZTIGFuZCBzdG9wX21hY2hpbmUgcmVsYXRlZCBjb2RlCisKK0Rlc2lnbiBHb2FsOgorLS0tLS0tLS0tLS0tCisKK0ltcHJvdmUgc2NhbGFiaWxpdHkgb2YgZ2xvYmFsbHkgdXNlZCBsYXJnZSBkYXRhIHNldHMgdGhhdCBhcmUKK2Rpc3RyaWJ1dGVkIG92ZXIgYWxsIENQVXMgYXMgcGVyX2NwdSBlbGVtZW50cy4KKworVG8gbWFuYWdlIGdsb2JhbCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhcmUgcGFydGl0aW9uZWQgb3ZlciBhbGwgQ1BVcworYXMgcGVyX2NwdSBlbGVtZW50cyBidXQgY2FuIGJlIG1vc3RseSBoYW5kbGVkIGJ5IENQVSBsb2NhbCBhY3Rpb25zCitsZ2xvY2sgd2lsbCBiZSB1c2VkIHdoZXJlIHRoZSBtYWpvcml0eSBvZiBhY2Nlc3NlcyBhcmUgY3B1IGxvY2FsCityZWFkaW5nIGFuZCBvY2Nhc2lvbmFsIGNwdSBsb2NhbCB3cml0aW5nIHdpdGggdmVyeSBpbmZyZXF1ZW50CitnbG9iYWwgd3JpdGUgYWNjZXNzLgorCisKKyogZGVhbCB3aXRoIHRoaW5ncyBsb2NhbGx5IHdoZW5ldmVyIHBvc3NpYmxlCisJLSB2ZXJ5IGZhc3QgYWNjZXNzIHRvIHRoZSBsb2NhbCBwZXJfY3B1IGRhdGEKKwktIHJlYXNvbmFibHkgZmFzdCBhY2Nlc3MgdG8gc3BlY2lmaWMgcGVyX2NwdSBkYXRhIG9uIGEgZGlmZmVyZW50CisJICBDUFUKKyogd2hpbGUgbWFraW5nIGdsb2JhbCBhY3Rpb24gcG9zc2libGUgd2hlbiBuZWVkZWQKKwktIGJ5IGV4cGVuc2l2ZSBhY2Nlc3MgdG8gYWxsIENQVXMgbG9ja3MgLSBlZmZlY3RpdmVseQorCSAgcmVzdWx0aW5nIGluIGEgZ2xvYmFsbHkgdmlzaWJsZSBjcml0aWNhbCBzZWN0aW9uLgorCitEZXNpZ246CistLS0tLS0tCisKK0Jhc2ljYWxseSBpdCBpcyBhbiBhcnJheSBvZiBwZXJfY3B1IHNwaW5sb2NrcyB3aXRoIHRoZQorbGdfbG9jYWxfbG9jay91bmxvY2sgYWNjZXNzaW5nIHRoZSBsb2NhbCBDUFVzIGxvY2sgb2JqZWN0IGFuZCB0aGUKK2xnX2xvY2FsX2xvY2tfY3B1L3VubG9ja19jcHUgYWNjZXNzaW5nIGEgcmVtb3RlIENQVXMgbG9jayBvYmplY3QKK3RoZSBsZ19sb2NhbF9sb2NrIGhhcyB0byBkaXNhYmxlIHByZWVtcHRpb24gYXMgbWlncmF0aW9uIHByb3RlY3Rpb24gc28KK3RoYXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgbG9jYWwgQ1BVcyBsb2NrIGRvZXMgbm90IGdvIG91dCBvZiBzY29wZS4KK0R1ZSB0byB0aGUgbGdfbG9jYWxfbG9jay91bmxvY2sgb25seSB0b3VjaGluZyBjcHUtbG9jYWwgcmVzb3VyY2VzIGl0CitpcyBmYXN0LiBUYWtpbmcgdGhlIGxvY2FsIGxvY2sgb24gYSBkaWZmZXJlbnQgQ1BVIHdpbGwgYmUgbW9yZQorZXhwZW5zaXZlIGJ1dCBzdGlsbCByZWxhdGl2ZWx5IGNoZWFwLgorCitPbmUgY2FuIHJlbGF4IHRoZSBtaWdyYXRpb24gY29uc3RyYWludHMgYnkgYWNxdWlyaW5nIHRoZSBjdXJyZW50CitDUFVzIGxvY2sgd2l0aCBsZ19sb2NhbF9sb2NrX2NwdSwgcmVtZW1iZXIgdGhlIGNwdSwgYW5kIHJlbGVhc2UgdGhhdAorbG9jayBhdCB0aGUgZW5kIG9mIHRoZSBjcml0aWNhbCBzZWN0aW9uIGV2ZW4gaWYgbWlncmF0ZWQuIFRoaXMgc2hvdWxkCitnaXZlIG1vc3Qgb2YgdGhlIHBlcmZvcm1hbmNlIGJlbmVmaXRzIHdpdGhvdXQgaW5oaWJpdGluZyBtaWdyYXRpb24KK3Rob3VnaCBuZWVkcyBjYXJlZnVsIGNvbnNpZGVyYXRpb25zIGZvciBuZXN0aW5nIG9mIGxnbG9ja3MgYW5kCitjb25zaWRlcmF0aW9uIG9mIGRlYWRsb2NrcyB3aXRoIGxnX2dsb2JhbF9sb2NrLgorCitUaGUgbGdfZ2xvYmFsX2xvY2svdW5sb2NrIGxvY2tzIGFsbCB1bmRlcmx5aW5nIHNwaW5sb2NrcyBvZiBhbGwKK3Bvc3NpYmxlIENQVXMgKGluY2x1ZGluZyB0aG9zZSBvZmYtbGluZSkuIFRoZSBwcmVlbXB0aW9uIGRpc2FibGUvZW5hYmxlCithcmUgbmVlZGVkIGluIHRoZSBub24tUlQga2VybmVscyB0byBwcmV2ZW50IGRlYWRsb2NrcyBsaWtlOgorCisgICAgICAgICAgICAgICAgICAgICBvbiBjcHUgMQorCisgICAgICAgICAgICAgIHRhc2sgQSAgICAgICAgICB0YXNrIEIKKyAgICAgICAgIGxnX2dsb2JhbF9sb2NrCisgICAgICAgICAgIGdvdCBjcHUgMCBsb2NrCisgICAgICAgICAgICAgICAgIDw8PDwgcHJlZW1wdCA8PDw8CisgICAgICAgICAgICAgICAgICAgICAgICAgbGdfbG9jYWxfbG9ja19jcHUgZm9yIGNwdSAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGluIG9uIGNwdSAwIGxvY2sKKworT24gLVJUIHRoaXMgZGVhZGxvY2sgc2NlbmFyaW8gaXMgcmVzb2x2ZWQgYnkgdGhlIGFyY2hfc3Bpbl9sb2NrcyBpbiB0aGUKK2xnbG9ja3MgYmVpbmcgcmVwbGFjZWQgYnkgcnRfbXV0ZXhlcyB3aGljaCByZXNvbHZlIHRoZSBhYm92ZSBkZWFkbG9jaworYnkgYm9vc3RpbmcgdGhlIGxvY2staG9sZGVyLgorCisKK0ltcGxlbWVudGF0aW9uOgorLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBpbml0aWFsIGxnbG9jayBpbXBsZW1lbnRhdGlvbiBmcm9tIE5pY2sgUGlnZ2luIHVzZWQgc29tZSBjb21wbGV4CittYWNyb3MgdG8gZ2VuZXJhdGUgdGhlIGxnbG9jay9icmxvY2sgaW4gbGdsb2NrLmggLSB0aGV5IHdlcmUgbGF0ZXIKK3R1cm5lZCBpbnRvIGEgc2V0IG9mIGZ1bmN0aW9ucyBieSBBbmRpIEtsZWVuIFs3XS4gVGhlIGNoYW5nZSB0byBmdW5jdGlvbnMKK3dhcyBtb3RpdmF0ZWQgYnkgdGhlIHByZXNlbmNlIG9mIG11bHRpcGxlIGxvY2sgdXNlcnMgYW5kIGFsc28gYnkgdGhlbQorYmVpbmcgZWFzaWVyIHRvIG1haW50YWluIHRoYW4gdGhlIGdlbmVyYXRpbmcgbWFjcm9zLiBUaGlzIGNoYW5nZSB0bworZnVuY3Rpb25zIGlzIGFsc28gdGhlIGJhc2lzIHRvIGVsaW1pbmF0ZWQgdGhlIHJlc3RyaWN0aW9uIG9mIG5vdAorYmVpbmcgaW5pdGlhbGl6ZWFibGUgaW4ga2VybmVsIG1vZHVsZXMgKHRoZSByZW1haW5pbmcgcHJvYmxlbSBpcyB0aGF0Citsb2NrcyBhcmUgbm90IGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgLSBzZWUgbG9ja2RlcC1kZXNpZ24udHh0KQorCitEZWNsYXJhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb246CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgI2luY2x1ZGUgPGxpbnV4L2xnbG9jay5oPgorCisgIERFRklORV9MR0xPQ0sobmFtZSkKKyAgb3I6CisgIERFRklORV9TVEFUSUNfTEdMT0NLKG5hbWUpOworCisgIGxnX2xvY2tfaW5pdCgmbmFtZSwgImxvY2tkZXBfbmFtZV9zdHJpbmciKTsKKworICBvbiBVUCB0aGlzIGlzIG1hcHBlZCB0byBERUZJTkVfU1BJTkxPQ0sobmFtZSkgaW4gYm90aCBjYXNlcywgbm90ZQorICBhbHNvIHRoYXQgYXMgb2YgMy4xOC1yYzYgYWxsIGRlY2xhcmF0aW9uIGluIHVzZSBhcmUgb2YgdGhlIF9TVEFUSUNfCisgIHZhcmlhbnQgKGFuZCBpdCBzZWVtcyB0aGF0IHRoZSBub24tc3RhdGljIHdhcyBuZXZlciBpbiB1c2UpLgorICBsZ19sb2NrX2luaXQgaXMgaW5pdGlhbGl6aW5nIHRoZSBsb2NrZGVwIG1hcCBvbmx5LgorCitVc2FnZToKKy0tLS0tLQorCitGcm9tIHRoZSBsb2NraW5nIHNlbWFudGljcyBpdCBpcyBhIHNwaW5sb2NrLiBJdCBjb3VsZCBiZSBjYWxsZWQgYQorbG9jYWxpdHkgYXdhcmUgc3BpbmxvY2suIGxnX2xvY2FsXyogYmVoYXZlcyBsaWtlIGEgcGVyX2NwdQorc3BpbmxvY2sgYW5kIGxnX2dsb2JhbF8qIGxpa2UgYSBnbG9iYWwgc3BpbmxvY2suCitObyBzdXJwcmlzZXMgaW4gdGhlIEFQSS4KKworICBsZ19sb2NhbF9sb2NrKCpsZ2xvY2spOworICAgICBhY2Nlc3MgdG8gcHJvdGVjdGVkIHBlcl9jcHUgb2JqZWN0IG9uIHRoaXMgQ1BVCisgIGxnX2xvY2FsX3VubG9jaygqbGdsb2NrKTsKKworICBsZ19sb2NhbF9sb2NrX2NwdSgqbGdsb2NrLCBjcHUpOworICAgICBhY2Nlc3MgdG8gcHJvdGVjdGVkIHBlcl9jcHUgb2JqZWN0IG9uIG90aGVyIENQVSBjcHUKKyAgbGdfbG9jYWxfdW5sb2NrX2NwdSgqbGdsb2NrLCBjcHUpOworCisgIGxnX2dsb2JhbF9sb2NrKCpsZ2xvY2spOworICAgICBhY2Nlc3MgYWxsIHByb3RlY3RlZCBwZXJfY3B1IG9iamVjdHMgb24gYWxsIENQVXMKKyAgbGdfZ2xvYmFsX3VubG9jaygqbGdsb2NrKTsKKworICBUaGVyZSBhcmUgbm8gX3RyeWxvY2sgdmFyaWFudHMgb2YgdGhlIGxnbG9ja3MuCisKK05vdGUgdGhhdCB0aGUgbGdfZ2xvYmFsX2xvY2svdW5sb2NrIGhhcyB0byBpdGVyYXRlIG92ZXIgYWxsIHBvc3NpYmxlCitDUFVzIHJhdGhlciB0aGFuIHRoZSBhY3R1YWxseSBwcmVzZW50IENQVXMgb3IgYSBDUFUgY291bGQgZ28gb2ZmLWxpbmUKK3dpdGggYSBoZWxkIGxvY2sgWzRdIGFuZCB0aGF0IG1ha2VzIGl0IHZlcnkgZXhwZW5zaXZlLiBBIGRpc2N1c3Npb24gb24KK3RoZXNlIGlzc3VlcyBjYW4gYmUgZm91bmQgYXQgWzVdCisKK0NvbnN0cmFpbnRzOgorLS0tLS0tLS0tLS0tCisKKyAgKiBjdXJyZW50bHkgdGhlIGRlY2xhcmF0aW9uIG9mIGxnbG9ja3MgaW4ga2VybmVsIG1vZHVsZXMgaXMgbm90CisgICAgcG9zc2libGUsIHRob3VnaCB0aGlzIHNob3VsZCBiZSBkb2FibGUgd2l0aCBsaXR0bGUgY2hhbmdlLgorICAqIGxnbG9ja3MgYXJlIG5vdCByZWN1cnNpdmUuCisgICogc3VpdGFibGUgZm9yIGNvZGUgdGhhdCBjYW4gZG8gbW9zdCBvcGVyYXRpb25zIG9uIHRoZSBDUFUgbG9jYWwKKyAgICBkYXRhIGFuZCB3aWxsIHZlcnkgcmFyZWx5IG5lZWQgdGhlIGdsb2JhbCBsb2NrCisgICogbGdfZ2xvYmFsX2xvY2svdW5sb2NrIGlzICp2ZXJ5KiBleHBlbnNpdmUgYW5kIGRvZXMgbm90IHNjYWxlCisgICogb24gVVAgc3lzdGVtcyBhbGwgbGdfKiBwcmltaXRpdmVzIGFyZSBzaW1wbHkgc3BpbmxvY2tzCisgICogaW4gUFJFRU1QVF9SVCB0aGUgc3BpbmxvY2sgYmVjb21lcyBhbiBydC1tdXRleCBhbmQgY2FuIHNsZWVwIGJ1dAorICAgIGRvZXMgbm90IGNoYW5nZSB0aGUgdGFza3Mgc3RhdGUgd2hpbGUgc2xlZXBpbmcgWzZdLgorICAqIGluIFBSRUVNUFRfUlQgdGhlIHByZWVtcHRfZGlzYWJsZS9lbmFibGUgaW4gbGdfbG9jYWxfbG9jay91bmxvY2sKKyAgICBpcyBkb3duZ3JhZGVkIHRvIGEgbWlncmF0ZV9kaXNhYmxlL2VuYWJsZSwgdGhlIG90aGVyCisgICAgcHJlZW1wdF9kaXNhYmxlL2VuYWJsZSBhcmUgZG93bmdyYWRlZCB0byBiYXJyaWVycyBbNl0uCisgICAgVGhlIGRlYWRsb2NrIG5vdGVkIGZvciBub24tUlQgYWJvdmUgaXMgcmVzb2x2ZWQgZHVlIHRvIHJ0X211dGV4ZXMKKyAgICBib29zdGluZyB0aGUgbG9jay1ob2xkZXIgaW4gdGhpcyBjYXNlIHdoaWNoIGFyY2hfc3Bpbl9sb2NrcyBkbworICAgIG5vdCBkby4KKworbGdsb2NrcyB3ZXJlIGRlc2lnbmVkIGZvciB2ZXJ5IHNwZWNpZmljIHByb2JsZW1zIGluIHRoZSBWRlMgYW5kIHByb2JhYmx5Citvbmx5IGFyZSB0aGUgcmlnaHQgYW5zd2VyIGluIHRoZXNlIGNvcm5lciBjYXNlcy4gQW55IG5ldyB1c2VyIHRoYXQgbG9va3MKK2F0IGxnbG9ja3MgcHJvYmFibHkgd2FudHMgdG8gbG9vayBhdCB0aGUgc2VxbG9jayBhbmQgUkNVIGFsdGVybmF0aXZlcyBhcworaGVyIGZpcnN0IGNob2ljZS4gVGhlcmUgYXJlIGFsc28gZWZmb3J0cyB0byByZXNvbHZlIHRoZSBSQ1UgaXNzdWVzIHRoYXQKK2N1cnJlbnRseSBwcmV2ZW50IHVzaW5nIFJDVSBpbiBwbGFjZSBvZiB2aWV3IHJlbWFpbmluZyBsZ2xvY2tzLgorCitOb3RlIG9uIGJybG9jayBoaXN0b3J5OgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlICdCaWcgUmVhZGVyJyByZWFkLXdyaXRlIHNwaW5sb2NrcyB3ZXJlIG9yaWdpbmFsbHkgaW50cm9kdWNlZCBieQorSW5nbyBNb2xuYXIgaW4gMjAwMCAoMi40LzIuNSBrZXJuZWwgc2VyaWVzKSBhbmQgcmVtb3ZlZCBpbiAyMDAzLiBUaGV5CitsYXRlciB3ZXJlIGludHJvZHVjZWQgYnkgdGhlIFZGUyBzY2FsYWJpbGl0eSBwYXRjaCBzZXQgaW4gMi42IHNlcmllcworYWdhaW4gYXMgdGhlICJiaWcgcmVhZGVyIGxvY2siIGJybG9jayBbMl0gdmFyaWFudCBvZiBsZ2xvY2sgd2hpY2ggaGFzCitiZWVuIHJlcGxhY2VkIGJ5IHNlcWxvY2sgcHJpbWl0aXZlcyBvciBieSBSQ1UgYmFzZWQgcHJpbWl0aXZlcyBpbiB0aGUKKzMuMTMga2VybmVsIHNlcmllcyBhcyB3YXMgc3VnZ2VzdGVkIGluIFszXSBpbiAyMDAzLiBUaGUgYnJsb2NrIHdhcworZW50aXJlbHkgcmVtb3ZlZCBpbiB0aGUgMy4xMyBrZXJuZWwgc2VyaWVzLgorCitMaW5rOiAxIGh0dHA6Ly9sa21sLm9yZy9sa21sLzIwMTAvOC8yLzgxCitMaW5rOiAyIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzQwMTczOC8KK0xpbms6IDMgaHR0cDovL2xrbWwub3JnL2xrbWwvMjAwMy8zLzkvMjA1CitMaW5rOiA0IGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDExLzgvMjQvMTg1CitMaW5rOiA1IGh0dHA6Ly9sa21sLm9yZy9sa21sLzIwMTEvMTIvMTgvMTg5CitMaW5rOiA2IGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L2tlcm5lbC9wcm9qZWN0cy9ydC8KKyAgICAgICAgcGF0Y2ggc2VyaWVzIC0gbGdsb2Nrcy1ydC5wYXRjaC5wYXRjaAorTGluazogNyBodHRwOi8vbGttbC5vcmcvbGttbC8yMDEyLzMvNS8yNgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9sb2NraW5nL2xvY2tkZXAtZGVzaWduLnR4dCBiL0RvY3VtZW50YXRpb24vbG9ja2luZy9sb2NrZGVwLWRlc2lnbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTAwMTI4MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbG9ja2luZy9sb2NrZGVwLWRlc2lnbi50eHQKQEAgLTAsMCArMSwyODYgQEAKK1J1bnRpbWUgbG9ja2luZyBjb3JyZWN0bmVzcyB2YWxpZGF0b3IKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworc3RhcnRlZCBieSBJbmdvIE1vbG5hciA8bWluZ29AcmVkaGF0LmNvbT4KK2FkZGl0aW9ucyBieSBBcmphbiB2YW4gZGUgVmVuIDxhcmphbkBsaW51eC5pbnRlbC5jb20+CisKK0xvY2stY2xhc3MKKy0tLS0tLS0tLS0KKworVGhlIGJhc2ljIG9iamVjdCB0aGUgdmFsaWRhdG9yIG9wZXJhdGVzIHVwb24gaXMgYSAnY2xhc3MnIG9mIGxvY2tzLgorCitBIGNsYXNzIG9mIGxvY2tzIGlzIGEgZ3JvdXAgb2YgbG9ja3MgdGhhdCBhcmUgbG9naWNhbGx5IHRoZSBzYW1lIHdpdGgKK3Jlc3BlY3QgdG8gbG9ja2luZyBydWxlcywgZXZlbiBpZiB0aGUgbG9ja3MgbWF5IGhhdmUgbXVsdGlwbGUgKHBvc3NpYmx5Cit0ZW5zIG9mIHRob3VzYW5kcyBvZikgaW5zdGFudGlhdGlvbnMuIEZvciBleGFtcGxlIGEgbG9jayBpbiB0aGUgaW5vZGUKK3N0cnVjdCBpcyBvbmUgY2xhc3MsIHdoaWxlIGVhY2ggaW5vZGUgaGFzIGl0cyBvd24gaW5zdGFudGlhdGlvbiBvZiB0aGF0Citsb2NrIGNsYXNzLgorCitUaGUgdmFsaWRhdG9yIHRyYWNrcyB0aGUgJ3N0YXRlJyBvZiBsb2NrLWNsYXNzZXMsIGFuZCBpdCB0cmFja3MKK2RlcGVuZGVuY2llcyBiZXR3ZWVuIGRpZmZlcmVudCBsb2NrLWNsYXNzZXMuIFRoZSB2YWxpZGF0b3IgbWFpbnRhaW5zIGEKK3JvbGxpbmcgcHJvb2YgdGhhdCB0aGUgc3RhdGUgYW5kIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGNvcnJlY3QuCisKK1VubGlrZSBhbiBsb2NrIGluc3RhbnRpYXRpb24sIHRoZSBsb2NrLWNsYXNzIGl0c2VsZiBuZXZlciBnb2VzIGF3YXk6IHdoZW4KK2EgbG9jay1jbGFzcyBpcyB1c2VkIGZvciB0aGUgZmlyc3QgdGltZSBhZnRlciBib290dXAgaXQgZ2V0cyByZWdpc3RlcmVkLAorYW5kIGFsbCBzdWJzZXF1ZW50IHVzZXMgb2YgdGhhdCBsb2NrLWNsYXNzIHdpbGwgYmUgYXR0YWNoZWQgdG8gdGhpcworbG9jay1jbGFzcy4KKworU3RhdGUKKy0tLS0tCisKK1RoZSB2YWxpZGF0b3IgdHJhY2tzIGxvY2stY2xhc3MgdXNhZ2UgaGlzdG9yeSBpbnRvIDRuICsgMSBzZXBhcmF0ZSBzdGF0ZSBiaXRzOgorCistICdldmVyIGhlbGQgaW4gU1RBVEUgY29udGV4dCcKKy0gJ2V2ZXIgaGVsZCBhcyByZWFkbG9jayBpbiBTVEFURSBjb250ZXh0JworLSAnZXZlciBoZWxkIHdpdGggU1RBVEUgZW5hYmxlZCcKKy0gJ2V2ZXIgaGVsZCBhcyByZWFkbG9jayB3aXRoIFNUQVRFIGVuYWJsZWQnCisKK1doZXJlIFNUQVRFIGNhbiBiZSBlaXRoZXIgb25lIG9mIChrZXJuZWwvbG9ja2luZy9sb2NrZGVwX3N0YXRlcy5oKQorIC0gaGFyZGlycQorIC0gc29mdGlycQorIC0gcmVjbGFpbV9mcworCistICdldmVyIHVzZWQnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyA9PSAhdW51c2VkICAgICAgICBdCisKK1doZW4gbG9ja2luZyBydWxlcyBhcmUgdmlvbGF0ZWQsIHRoZXNlIHN0YXRlIGJpdHMgYXJlIHByZXNlbnRlZCBpbiB0aGUKK2xvY2tpbmcgZXJyb3IgbWVzc2FnZXMsIGluc2lkZSBjdXJsaWVzLiBBIGNvbnRyaXZlZCBleGFtcGxlOgorCisgICBtb2Rwcm9iZS8yMjg3IGlzIHRyeWluZyB0byBhY3F1aXJlIGxvY2s6CisgICAgKCZzaW9fbG9ja3NbaV0ubG9jayl7LS4tLi4ufSwgYXQ6IFs8YzAyODY3ZmQ+XSBtdXRleF9sb2NrKzB4MjEvMHgyNAorCisgICBidXQgdGFzayBpcyBhbHJlYWR5IGhvbGRpbmcgbG9jazoKKyAgICAoJnNpb19sb2Nrc1tpXS5sb2NrKXstLi0uLi59LCBhdDogWzxjMDI4NjdmZD5dIG11dGV4X2xvY2srMHgyMS8weDI0CisKKworVGhlIGJpdCBwb3NpdGlvbiBpbmRpY2F0ZXMgU1RBVEUsIFNUQVRFLXJlYWQsIGZvciBlYWNoIG9mIHRoZSBzdGF0ZXMgbGlzdGVkCithYm92ZSwgYW5kIHRoZSBjaGFyYWN0ZXIgZGlzcGxheWVkIGluIGVhY2ggaW5kaWNhdGVzOgorCisgICAnLicgIGFjcXVpcmVkIHdoaWxlIGlycXMgZGlzYWJsZWQgYW5kIG5vdCBpbiBpcnEgY29udGV4dAorICAgJy0nICBhY3F1aXJlZCBpbiBpcnEgY29udGV4dAorICAgJysnICBhY3F1aXJlZCB3aXRoIGlycXMgZW5hYmxlZAorICAgJz8nICBhY3F1aXJlZCBpbiBpcnEgY29udGV4dCB3aXRoIGlycXMgZW5hYmxlZC4KKworVW51c2VkIG11dGV4ZXMgY2Fubm90IGJlIHBhcnQgb2YgdGhlIGNhdXNlIG9mIGFuIGVycm9yLgorCisKK1NpbmdsZS1sb2NrIHN0YXRlIHJ1bGVzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Egc29mdGlycS11bnNhZmUgbG9jay1jbGFzcyBpcyBhdXRvbWF0aWNhbGx5IGhhcmRpcnEtdW5zYWZlIGFzIHdlbGwuIFRoZQorZm9sbG93aW5nIHN0YXRlcyBhcmUgZXhjbHVzaXZlLCBhbmQgb25seSBvbmUgb2YgdGhlbSBpcyBhbGxvd2VkIHRvIGJlCitzZXQgZm9yIGFueSBsb2NrLWNsYXNzOgorCisgPGhhcmRpcnEtc2FmZT4gYW5kIDxoYXJkaXJxLXVuc2FmZT4KKyA8c29mdGlycS1zYWZlPiBhbmQgPHNvZnRpcnEtdW5zYWZlPgorCitUaGUgdmFsaWRhdG9yIGRldGVjdHMgYW5kIHJlcG9ydHMgbG9jayB1c2FnZSB0aGF0IHZpb2xhdGUgdGhlc2UKK3NpbmdsZS1sb2NrIHN0YXRlIHJ1bGVzLgorCitNdWx0aS1sb2NrIGRlcGVuZGVuY3kgcnVsZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBzYW1lIGxvY2stY2xhc3MgbXVzdCBub3QgYmUgYWNxdWlyZWQgdHdpY2UsIGJlY2F1c2UgdGhpcyBjb3VsZCBsZWFkCit0byBsb2NrIHJlY3Vyc2lvbiBkZWFkbG9ja3MuCisKK0Z1cnRoZXJtb3JlLCB0d28gbG9ja3MgbWF5IG5vdCBiZSB0YWtlbiBpbiBkaWZmZXJlbnQgb3JkZXI6CisKKyA8TDE+IC0+IDxMMj4KKyA8TDI+IC0+IDxMMT4KKworYmVjYXVzZSB0aGlzIGNvdWxkIGxlYWQgdG8gbG9jayBpbnZlcnNpb24gZGVhZGxvY2tzLiAoVGhlIHZhbGlkYXRvcgorZmluZHMgc3VjaCBkZXBlbmRlbmNpZXMgaW4gYXJiaXRyYXJ5IGNvbXBsZXhpdHksIGkuZS4gdGhlcmUgY2FuIGJlIGFueQorb3RoZXIgbG9ja2luZyBzZXF1ZW5jZSBiZXR3ZWVuIHRoZSBhY3F1aXJlLWxvY2sgb3BlcmF0aW9ucywgdGhlCit2YWxpZGF0b3Igd2lsbCBzdGlsbCB0cmFjayBhbGwgZGVwZW5kZW5jaWVzIGJldHdlZW4gbG9ja3MuKQorCitGdXJ0aGVybW9yZSwgdGhlIGZvbGxvd2luZyB1c2FnZSBiYXNlZCBsb2NrIGRlcGVuZGVuY2llcyBhcmUgbm90IGFsbG93ZWQKK2JldHdlZW4gYW55IHR3byBsb2NrLWNsYXNzZXM6CisKKyAgIDxoYXJkaXJxLXNhZmU+ICAgLT4gIDxoYXJkaXJxLXVuc2FmZT4KKyAgIDxzb2Z0aXJxLXNhZmU+ICAgLT4gIDxzb2Z0aXJxLXVuc2FmZT4KKworVGhlIGZpcnN0IHJ1bGUgY29tZXMgZnJvbSB0aGUgZmFjdCB0aGUgYSBoYXJkaXJxLXNhZmUgbG9jayBjb3VsZCBiZQordGFrZW4gYnkgYSBoYXJkaXJxIGNvbnRleHQsIGludGVycnVwdGluZyBhIGhhcmRpcnEtdW5zYWZlIGxvY2sgLSBhbmQKK3RodXMgY291bGQgcmVzdWx0IGluIGEgbG9jayBpbnZlcnNpb24gZGVhZGxvY2suIExpa2V3aXNlLCBhIHNvZnRpcnEtc2FmZQorbG9jayBjb3VsZCBiZSB0YWtlbiBieSBhbiBzb2Z0aXJxIGNvbnRleHQsIGludGVycnVwdGluZyBhIHNvZnRpcnEtdW5zYWZlCitsb2NrLgorCitUaGUgYWJvdmUgcnVsZXMgYXJlIGVuZm9yY2VkIGZvciBhbnkgbG9ja2luZyBzZXF1ZW5jZSB0aGF0IG9jY3VycyBpbiB0aGUKK2tlcm5lbDogd2hlbiBhY3F1aXJpbmcgYSBuZXcgbG9jaywgdGhlIHZhbGlkYXRvciBjaGVja3Mgd2hldGhlciB0aGVyZSBpcworYW55IHJ1bGUgdmlvbGF0aW9uIGJldHdlZW4gdGhlIG5ldyBsb2NrIGFuZCBhbnkgb2YgdGhlIGhlbGQgbG9ja3MuCisKK1doZW4gYSBsb2NrLWNsYXNzIGNoYW5nZXMgaXRzIHN0YXRlLCB0aGUgZm9sbG93aW5nIGFzcGVjdHMgb2YgdGhlIGFib3ZlCitkZXBlbmRlbmN5IHJ1bGVzIGFyZSBlbmZvcmNlZDoKKworLSBpZiBhIG5ldyBoYXJkaXJxLXNhZmUgbG9jayBpcyBkaXNjb3ZlcmVkLCB3ZSBjaGVjayB3aGV0aGVyIGl0CisgIHRvb2sgYW55IGhhcmRpcnEtdW5zYWZlIGxvY2sgaW4gdGhlIHBhc3QuCisKKy0gaWYgYSBuZXcgc29mdGlycS1zYWZlIGxvY2sgaXMgZGlzY292ZXJlZCwgd2UgY2hlY2sgd2hldGhlciBpdCB0b29rCisgIGFueSBzb2Z0aXJxLXVuc2FmZSBsb2NrIGluIHRoZSBwYXN0LgorCistIGlmIGEgbmV3IGhhcmRpcnEtdW5zYWZlIGxvY2sgaXMgZGlzY292ZXJlZCwgd2UgY2hlY2sgd2hldGhlciBhbnkKKyAgaGFyZGlycS1zYWZlIGxvY2sgdG9vayBpdCBpbiB0aGUgcGFzdC4KKworLSBpZiBhIG5ldyBzb2Z0aXJxLXVuc2FmZSBsb2NrIGlzIGRpc2NvdmVyZWQsIHdlIGNoZWNrIHdoZXRoZXIgYW55CisgIHNvZnRpcnEtc2FmZSBsb2NrIHRvb2sgaXQgaW4gdGhlIHBhc3QuCisKKyhBZ2Fpbiwgd2UgZG8gdGhlc2UgY2hlY2tzIHRvbyBvbiB0aGUgYmFzaXMgdGhhdCBhbiBpbnRlcnJ1cHQgY29udGV4dAorY291bGQgaW50ZXJydXB0IF9hbnlfIG9mIHRoZSBpcnEtdW5zYWZlIG9yIGhhcmRpcnEtdW5zYWZlIGxvY2tzLCB3aGljaAorY291bGQgbGVhZCB0byBhIGxvY2sgaW52ZXJzaW9uIGRlYWRsb2NrIC0gZXZlbiBpZiB0aGF0IGxvY2sgc2NlbmFyaW8gZGlkCitub3QgdHJpZ2dlciBpbiBwcmFjdGljZSB5ZXQuKQorCitFeGNlcHRpb246IE5lc3RlZCBkYXRhIGRlcGVuZGVuY2llcyBsZWFkaW5nIHRvIG5lc3RlZCBsb2NraW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXJlIGFyZSBhIGZldyBjYXNlcyB3aGVyZSB0aGUgTGludXgga2VybmVsIGFjcXVpcmVzIG1vcmUgdGhhbiBvbmUKK2luc3RhbmNlIG9mIHRoZSBzYW1lIGxvY2stY2xhc3MuIFN1Y2ggY2FzZXMgdHlwaWNhbGx5IGhhcHBlbiB3aGVuIHRoZXJlCitpcyBzb21lIHNvcnQgb2YgaGllcmFyY2h5IHdpdGhpbiBvYmplY3RzIG9mIHRoZSBzYW1lIHR5cGUuIEluIHRoZXNlCitjYXNlcyB0aGVyZSBpcyBhbiBpbmhlcmVudCAibmF0dXJhbCIgb3JkZXJpbmcgYmV0d2VlbiB0aGUgdHdvIG9iamVjdHMKKyhkZWZpbmVkIGJ5IHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBoaWVyYXJjaHkpLCBhbmQgdGhlIGtlcm5lbCBncmFicyB0aGUKK2xvY2tzIGluIHRoaXMgZml4ZWQgb3JkZXIgb24gZWFjaCBvZiB0aGUgb2JqZWN0cy4KKworQW4gZXhhbXBsZSBvZiBzdWNoIGFuIG9iamVjdCBoaWVyYXJjaHkgdGhhdCByZXN1bHRzIGluICJuZXN0ZWQgbG9ja2luZyIKK2lzIHRoYXQgb2YgYSAid2hvbGUgZGlzayIgYmxvY2stZGV2IG9iamVjdCBhbmQgYSAicGFydGl0aW9uIiBibG9jay1kZXYKK29iamVjdDsgdGhlIHBhcnRpdGlvbiBpcyAicGFydCBvZiIgdGhlIHdob2xlIGRldmljZSBhbmQgYXMgbG9uZyBhcyBvbmUKK2Fsd2F5cyB0YWtlcyB0aGUgd2hvbGUgZGlzayBsb2NrIGFzIGEgaGlnaGVyIGxvY2sgdGhhbiB0aGUgcGFydGl0aW9uCitsb2NrLCB0aGUgbG9jayBvcmRlcmluZyBpcyBmdWxseSBjb3JyZWN0LiBUaGUgdmFsaWRhdG9yIGRvZXMgbm90CithdXRvbWF0aWNhbGx5IGRldGVjdCB0aGlzIG5hdHVyYWwgb3JkZXJpbmcsIGFzIHRoZSBsb2NraW5nIHJ1bGUgYmVoaW5kCit0aGUgb3JkZXJpbmcgaXMgbm90IHN0YXRpYy4KKworSW4gb3JkZXIgdG8gdGVhY2ggdGhlIHZhbGlkYXRvciBhYm91dCB0aGlzIGNvcnJlY3QgdXNhZ2UgbW9kZWwsIG5ldwordmVyc2lvbnMgb2YgdGhlIHZhcmlvdXMgbG9ja2luZyBwcmltaXRpdmVzIHdlcmUgYWRkZWQgdGhhdCBhbGxvdyB5b3UgdG8KK3NwZWNpZnkgYSAibmVzdGluZyBsZXZlbCIuIEFuIGV4YW1wbGUgY2FsbCwgZm9yIHRoZSBibG9jayBkZXZpY2UgbXV0ZXgsCitsb29rcyBsaWtlIHRoaXM6CisKK2VudW0gYmRldl9iZF9tdXRleF9sb2NrX2NsYXNzCit7CisgICAgICAgQkRfTVVURVhfTk9STUFMLAorICAgICAgIEJEX01VVEVYX1dIT0xFLAorICAgICAgIEJEX01VVEVYX1BBUlRJVElPTgorfTsKKworIG11dGV4X2xvY2tfbmVzdGVkKCZiZGV2LT5iZF9jb250YWlucy0+YmRfbXV0ZXgsIEJEX01VVEVYX1BBUlRJVElPTik7CisKK0luIHRoaXMgY2FzZSB0aGUgbG9ja2luZyBpcyBkb25lIG9uIGEgYmRldiBvYmplY3QgdGhhdCBpcyBrbm93biB0byBiZSBhCitwYXJ0aXRpb24uCisKK1RoZSB2YWxpZGF0b3IgdHJlYXRzIGEgbG9jayB0aGF0IGlzIHRha2VuIGluIHN1Y2ggYSBuZXN0ZWQgZmFzaGlvbiBhcyBhCitzZXBhcmF0ZSAoc3ViKWNsYXNzIGZvciB0aGUgcHVycG9zZXMgb2YgdmFsaWRhdGlvbi4KKworTm90ZTogV2hlbiBjaGFuZ2luZyBjb2RlIHRvIHVzZSB0aGUgX25lc3RlZCgpIHByaW1pdGl2ZXMsIGJlIGNhcmVmdWwgYW5kCitjaGVjayByZWFsbHkgdGhvcm91Z2hseSB0aGF0IHRoZSBoaWVyYXJjaHkgaXMgY29ycmVjdGx5IG1hcHBlZDsgb3RoZXJ3aXNlCit5b3UgY2FuIGdldCBmYWxzZSBwb3NpdGl2ZXMgb3IgZmFsc2UgbmVnYXRpdmVzLgorCitQcm9vZiBvZiAxMDAlIGNvcnJlY3RuZXNzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHZhbGlkYXRvciBhY2hpZXZlcyBwZXJmZWN0LCBtYXRoZW1hdGljYWwgJ2Nsb3N1cmUnIChwcm9vZiBvZiBsb2NraW5nCitjb3JyZWN0bmVzcykgaW4gdGhlIHNlbnNlIHRoYXQgZm9yIGV2ZXJ5IHNpbXBsZSwgc3RhbmRhbG9uZSBzaW5nbGUtdGFzaworbG9ja2luZyBzZXF1ZW5jZSB0aGF0IG9jY3VycmVkIGF0IGxlYXN0IG9uY2UgZHVyaW5nIHRoZSBsaWZldGltZSBvZiB0aGUKK2tlcm5lbCwgdGhlIHZhbGlkYXRvciBwcm92ZXMgaXQgd2l0aCBhIDEwMCUgY2VydGFpbnR5IHRoYXQgbm8KK2NvbWJpbmF0aW9uIGFuZCB0aW1pbmcgb2YgdGhlc2UgbG9ja2luZyBzZXF1ZW5jZXMgY2FuIGNhdXNlIGFueSBjbGFzcyBvZgorbG9jayByZWxhdGVkIGRlYWRsb2NrLiBbKl0KKworSS5lLiBjb21wbGV4IG11bHRpLUNQVSBhbmQgbXVsdGktdGFzayBsb2NraW5nIHNjZW5hcmlvcyBkbyBub3QgaGF2ZSB0bworb2NjdXIgaW4gcHJhY3RpY2UgdG8gcHJvdmUgYSBkZWFkbG9jazogb25seSB0aGUgc2ltcGxlICdjb21wb25lbnQnCitsb2NraW5nIGNoYWlucyBoYXZlIHRvIG9jY3VyIGF0IGxlYXN0IG9uY2UgKGFueXRpbWUsIGluIGFueQordGFzay9jb250ZXh0KSBmb3IgdGhlIHZhbGlkYXRvciB0byBiZSBhYmxlIHRvIHByb3ZlIGNvcnJlY3RuZXNzLiAoRm9yCitleGFtcGxlLCBjb21wbGV4IGRlYWRsb2NrcyB0aGF0IHdvdWxkIG5vcm1hbGx5IG5lZWQgbW9yZSB0aGFuIDMgQ1BVcyBhbmQKK2EgdmVyeSB1bmxpa2VseSBjb25zdGVsbGF0aW9uIG9mIHRhc2tzLCBpcnEtY29udGV4dHMgYW5kIHRpbWluZ3MgdG8KK29jY3VyLCBjYW4gYmUgZGV0ZWN0ZWQgb24gYSBwbGFpbiwgbGlnaHRseSBsb2FkZWQgc2luZ2xlLUNQVSBzeXN0ZW0gYXMKK3dlbGwhKQorCitUaGlzIHJhZGljYWxseSBkZWNyZWFzZXMgdGhlIGNvbXBsZXhpdHkgb2YgbG9ja2luZyByZWxhdGVkIFFBIG9mIHRoZQora2VybmVsOiB3aGF0IGhhcyB0byBiZSBkb25lIGR1cmluZyBRQSBpcyB0byB0cmlnZ2VyIGFzIG1hbnkgInNpbXBsZSIKK3NpbmdsZS10YXNrIGxvY2tpbmcgZGVwZW5kZW5jaWVzIGluIHRoZSBrZXJuZWwgYXMgcG9zc2libGUsIGF0IGxlYXN0CitvbmNlLCB0byBwcm92ZSBsb2NraW5nIGNvcnJlY3RuZXNzIC0gaW5zdGVhZCBvZiBoYXZpbmcgdG8gdHJpZ2dlciBldmVyeQorcG9zc2libGUgY29tYmluYXRpb24gb2YgbG9ja2luZyBpbnRlcmFjdGlvbiBiZXR3ZWVuIENQVXMsIGNvbWJpbmVkIHdpdGgKK2V2ZXJ5IHBvc3NpYmxlIGhhcmRpcnEgYW5kIHNvZnRpcnEgbmVzdGluZyBzY2VuYXJpbyAod2hpY2ggaXMgaW1wb3NzaWJsZQordG8gZG8gaW4gcHJhY3RpY2UpLgorCitbKl0gYXNzdW1pbmcgdGhhdCB0aGUgdmFsaWRhdG9yIGl0c2VsZiBpcyAxMDAlIGNvcnJlY3QsIGFuZCBubyBvdGhlcgorICAgIHBhcnQgb2YgdGhlIHN5c3RlbSBjb3JydXB0cyB0aGUgc3RhdGUgb2YgdGhlIHZhbGlkYXRvciBpbiBhbnkgd2F5LgorICAgIFdlIGFsc28gYXNzdW1lIHRoYXQgYWxsIE5NSS9TTU0gcGF0aHMgW3doaWNoIGNvdWxkIGludGVycnVwdAorICAgIGV2ZW4gaGFyZGlycS1kaXNhYmxlZCBjb2RlcGF0aHNdIGFyZSBjb3JyZWN0IGFuZCBkbyBub3QgaW50ZXJmZXJlCisgICAgd2l0aCB0aGUgdmFsaWRhdG9yLiBXZSBhbHNvIGFzc3VtZSB0aGF0IHRoZSA2NC1iaXQgJ2NoYWluIGhhc2gnCisgICAgdmFsdWUgaXMgdW5pcXVlIGZvciBldmVyeSBsb2NrLWNoYWluIGluIHRoZSBzeXN0ZW0uIEFsc28sIGxvY2sKKyAgICByZWN1cnNpb24gbXVzdCBub3QgYmUgaGlnaGVyIHRoYW4gMjAuCisKK1BlcmZvcm1hbmNlOgorLS0tLS0tLS0tLS0tCisKK1RoZSBhYm92ZSBydWxlcyByZXF1aXJlIF9tYXNzaXZlXyBhbW91bnRzIG9mIHJ1bnRpbWUgY2hlY2tpbmcuIElmIHdlIGRpZAordGhhdCBmb3IgZXZlcnkgbG9jayB0YWtlbiBhbmQgZm9yIGV2ZXJ5IGlycXMtZW5hYmxlIGV2ZW50LCBpdCB3b3VsZAorcmVuZGVyIHRoZSBzeXN0ZW0gcHJhY3RpY2FsbHkgdW51c2FibHkgc2xvdy4gVGhlIGNvbXBsZXhpdHkgb2YgY2hlY2tpbmcKK2lzIE8oTl4yKSwgc28gZXZlbiB3aXRoIGp1c3QgYSBmZXcgaHVuZHJlZCBsb2NrLWNsYXNzZXMgd2UnZCBoYXZlIHRvIGRvCit0ZW5zIG9mIHRob3VzYW5kcyBvZiBjaGVja3MgZm9yIGV2ZXJ5IGV2ZW50LgorCitUaGlzIHByb2JsZW0gaXMgc29sdmVkIGJ5IGNoZWNraW5nIGFueSBnaXZlbiAnbG9ja2luZyBzY2VuYXJpbycgKHVuaXF1ZQorc2VxdWVuY2Ugb2YgbG9ja3MgdGFrZW4gYWZ0ZXIgZWFjaCBvdGhlcikgb25seSBvbmNlLiBBIHNpbXBsZSBzdGFjayBvZgoraGVsZCBsb2NrcyBpcyBtYWludGFpbmVkLCBhbmQgYSBsaWdodHdlaWdodCA2NC1iaXQgaGFzaCB2YWx1ZSBpcworY2FsY3VsYXRlZCwgd2hpY2ggaGFzaCBpcyB1bmlxdWUgZm9yIGV2ZXJ5IGxvY2sgY2hhaW4uIFRoZSBoYXNoIHZhbHVlLAord2hlbiB0aGUgY2hhaW4gaXMgdmFsaWRhdGVkIGZvciB0aGUgZmlyc3QgdGltZSwgaXMgdGhlbiBwdXQgaW50byBhIGhhc2gKK3RhYmxlLCB3aGljaCBoYXNoLXRhYmxlIGNhbiBiZSBjaGVja2VkIGluIGEgbG9ja2ZyZWUgbWFubmVyLiBJZiB0aGUKK2xvY2tpbmcgY2hhaW4gb2NjdXJzIGFnYWluIGxhdGVyIG9uLCB0aGUgaGFzaCB0YWJsZSB0ZWxscyB1cyB0aGF0IHdlCitkb250IGhhdmUgdG8gdmFsaWRhdGUgdGhlIGNoYWluIGFnYWluLgorCitUcm91Ymxlc2hvb3Rpbmc6CistLS0tLS0tLS0tLS0tLS0tCisKK1RoZSB2YWxpZGF0b3IgdHJhY2tzIGEgbWF4aW11bSBvZiBNQVhfTE9DS0RFUF9LRVlTIG51bWJlciBvZiBsb2NrIGNsYXNzZXMuCitFeGNlZWRpbmcgdGhpcyBudW1iZXIgd2lsbCB0cmlnZ2VyIHRoZSBmb2xsb3dpbmcgbG9ja2RlcCB3YXJuaW5nOgorCisJKERFQlVHX0xPQ0tTX1dBUk5fT04oaWQgPj0gTUFYX0xPQ0tERVBfS0VZUykpCisKK0J5IGRlZmF1bHQsIE1BWF9MT0NLREVQX0tFWVMgaXMgY3VycmVudGx5IHNldCB0byA4MTkxLCBhbmQgdHlwaWNhbAorZGVza3RvcCBzeXN0ZW1zIGhhdmUgbGVzcyB0aGFuIDEsMDAwIGxvY2sgY2xhc3Nlcywgc28gdGhpcyB3YXJuaW5nCitub3JtYWxseSByZXN1bHRzIGZyb20gbG9jay1jbGFzcyBsZWFrYWdlIG9yIGZhaWx1cmUgdG8gcHJvcGVybHkKK2luaXRpYWxpemUgbG9ja3MuICBUaGVzZSB0d28gcHJvYmxlbXMgYXJlIGlsbHVzdHJhdGVkIGJlbG93OgorCisxLglSZXBlYXRlZCBtb2R1bGUgbG9hZGluZyBhbmQgdW5sb2FkaW5nIHdoaWxlIHJ1bm5pbmcgdGhlIHZhbGlkYXRvcgorCXdpbGwgcmVzdWx0IGluIGxvY2stY2xhc3MgbGVha2FnZS4gIFRoZSBpc3N1ZSBoZXJlIGlzIHRoYXQgZWFjaAorCWxvYWQgb2YgdGhlIG1vZHVsZSB3aWxsIGNyZWF0ZSBhIG5ldyBzZXQgb2YgbG9jayBjbGFzc2VzIGZvcgorCXRoYXQgbW9kdWxlJ3MgbG9ja3MsIGJ1dCBtb2R1bGUgdW5sb2FkaW5nIGRvZXMgbm90IHJlbW92ZSBvbGQKKwljbGFzc2VzIChzZWUgYmVsb3cgZGlzY3Vzc2lvbiBvZiByZXVzZSBvZiBsb2NrIGNsYXNzZXMgZm9yIHdoeSkuCisJVGhlcmVmb3JlLCBpZiB0aGF0IG1vZHVsZSBpcyBsb2FkZWQgYW5kIHVubG9hZGVkIHJlcGVhdGVkbHksCisJdGhlIG51bWJlciBvZiBsb2NrIGNsYXNzZXMgd2lsbCBldmVudHVhbGx5IHJlYWNoIHRoZSBtYXhpbXVtLgorCisyLglVc2luZyBzdHJ1Y3R1cmVzIHN1Y2ggYXMgYXJyYXlzIHRoYXQgaGF2ZSBsYXJnZSBudW1iZXJzIG9mCisJbG9ja3MgdGhhdCBhcmUgbm90IGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQuICBGb3IgZXhhbXBsZSwKKwlhIGhhc2ggdGFibGUgd2l0aCA4MTkyIGJ1Y2tldHMgd2hlcmUgZWFjaCBidWNrZXQgaGFzIGl0cyBvd24KKwlzcGlubG9ja190IHdpbGwgY29uc3VtZSA4MTkyIGxvY2sgY2xhc3NlcyAtdW5sZXNzLSBlYWNoIHNwaW5sb2NrCisJaXMgZXhwbGljaXRseSBpbml0aWFsaXplZCBhdCBydW50aW1lLCBmb3IgZXhhbXBsZSwgdXNpbmcgdGhlCisJcnVuLXRpbWUgc3Bpbl9sb2NrX2luaXQoKSBhcyBvcHBvc2VkIHRvIGNvbXBpbGUtdGltZSBpbml0aWFsaXplcnMKKwlzdWNoIGFzIF9fU1BJTl9MT0NLX1VOTE9DS0VEKCkuICBGYWlsdXJlIHRvIHByb3Blcmx5IGluaXRpYWxpemUKKwl0aGUgcGVyLWJ1Y2tldCBzcGlubG9ja3Mgd291bGQgZ3VhcmFudGVlIGxvY2stY2xhc3Mgb3ZlcmZsb3cuCisJSW4gY29udHJhc3QsIGEgbG9vcCB0aGF0IGNhbGxlZCBzcGluX2xvY2tfaW5pdCgpIG9uIGVhY2ggbG9jaworCXdvdWxkIHBsYWNlIGFsbCA4MTkyIGxvY2tzIGludG8gYSBzaW5nbGUgbG9jayBjbGFzcy4KKworCVRoZSBtb3JhbCBvZiB0aGlzIHN0b3J5IGlzIHRoYXQgeW91IHNob3VsZCBhbHdheXMgZXhwbGljaXRseQorCWluaXRpYWxpemUgeW91ciBsb2Nrcy4KKworT25lIG1pZ2h0IGFyZ3VlIHRoYXQgdGhlIHZhbGlkYXRvciBzaG91bGQgYmUgbW9kaWZpZWQgdG8gYWxsb3cKK2xvY2sgY2xhc3NlcyB0byBiZSByZXVzZWQuICBIb3dldmVyLCBpZiB5b3UgYXJlIHRlbXB0ZWQgdG8gbWFrZSB0aGlzCithcmd1bWVudCwgZmlyc3QgcmV2aWV3IHRoZSBjb2RlIGFuZCB0aGluayB0aHJvdWdoIHRoZSBjaGFuZ2VzIHRoYXQgd291bGQKK2JlIHJlcXVpcmVkLCBrZWVwaW5nIGluIG1pbmQgdGhhdCB0aGUgbG9jayBjbGFzc2VzIHRvIGJlIHJlbW92ZWQgYXJlCitsaWtlbHkgdG8gYmUgbGlua2VkIGludG8gdGhlIGxvY2stZGVwZW5kZW5jeSBncmFwaC4gIFRoaXMgdHVybnMgb3V0IHRvCitiZSBoYXJkZXIgdG8gZG8gdGhhbiB0byBzYXkuCisKK09mIGNvdXJzZSwgaWYgeW91IGRvIHJ1biBvdXQgb2YgbG9jayBjbGFzc2VzLCB0aGUgbmV4dCB0aGluZyB0byBkbyBpcwordG8gZmluZCB0aGUgb2ZmZW5kaW5nIGxvY2sgY2xhc3Nlcy4gIEZpcnN0LCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgZ2l2ZXMKK3lvdSB0aGUgbnVtYmVyIG9mIGxvY2sgY2xhc3NlcyBjdXJyZW50bHkgaW4gdXNlIGFsb25nIHdpdGggdGhlIG1heGltdW06CisKKwlncmVwICJsb2NrLWNsYXNzZXMiIC9wcm9jL2xvY2tkZXBfc3RhdHMKKworVGhpcyBjb21tYW5kIHByb2R1Y2VzIHRoZSBmb2xsb3dpbmcgb3V0cHV0IG9uIGEgbW9kZXN0IHN5c3RlbToKKworCSBsb2NrLWNsYXNzZXM6ICAgICAgICAgICAgICAgICAgICAgICAgICA3NDggW21heDogODE5MV0KKworSWYgdGhlIG51bWJlciBhbGxvY2F0ZWQgKDc0OCBhYm92ZSkgaW5jcmVhc2VzIGNvbnRpbnVhbGx5IG92ZXIgdGltZSwKK3RoZW4gdGhlcmUgaXMgbGlrZWx5IGEgbGVhay4gIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBjYW4gYmUgdXNlZCB0bworaWRlbnRpZnkgdGhlIGxlYWtpbmcgbG9jayBjbGFzc2VzOgorCisJZ3JlcCAiQkQiIC9wcm9jL2xvY2tkZXAKKworUnVuIHRoZSBjb21tYW5kIGFuZCBzYXZlIHRoZSBvdXRwdXQsIHRoZW4gY29tcGFyZSBhZ2FpbnN0IHRoZSBvdXRwdXQgZnJvbQorYSBsYXRlciBydW4gb2YgdGhpcyBjb21tYW5kIHRvIGlkZW50aWZ5IHRoZSBsZWFrZXJzLiAgVGhpcyBzYW1lIG91dHB1dAorY2FuIGFsc28gaGVscCB5b3UgZmluZCBzaXR1YXRpb25zIHdoZXJlIHJ1bnRpbWUgbG9jayBpbml0aWFsaXphdGlvbiBoYXMKK2JlZW4gb21pdHRlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbG9ja2luZy9sb2Nrc3RhdC50eHQgYi9Eb2N1bWVudGF0aW9uL2xvY2tpbmcvbG9ja3N0YXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ODZhZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2xvY2tpbmcvbG9ja3N0YXQudHh0CkBAIC0wLDAgKzEsMTgzIEBACisKK0xPQ0sgU1RBVElTVElDUworCistIFdIQVQKKworQXMgdGhlIG5hbWUgc3VnZ2VzdHMsIGl0IHByb3ZpZGVzIHN0YXRpc3RpY3Mgb24gbG9ja3MuCisKKy0gV0hZCisKK0JlY2F1c2UgdGhpbmdzIGxpa2UgbG9jayBjb250ZW50aW9uIGNhbiBzZXZlcmVseSBpbXBhY3QgcGVyZm9ybWFuY2UuCisKKy0gSE9XCisKK0xvY2tkZXAgYWxyZWFkeSBoYXMgaG9va3MgaW4gdGhlIGxvY2sgZnVuY3Rpb25zIGFuZCBtYXBzIGxvY2sgaW5zdGFuY2VzIHRvCitsb2NrIGNsYXNzZXMuIFdlIGJ1aWxkIG9uIHRoYXQgKHNlZSBEb2N1bWVudGF0aW9uL2xvY2tpbmcvbG9ja2RlcC1kZXNpZ24udHh0KS4KK1RoZSBncmFwaCBiZWxvdyBzaG93cyB0aGUgcmVsYXRpb24gYmV0d2VlbiB0aGUgbG9jayBmdW5jdGlvbnMgYW5kIHRoZSB2YXJpb3VzCitob29rcyB0aGVyZWluLgorCisgICAgICAgIF9fYWNxdWlyZQorICAgICAgICAgICAgfAorICAgICAgICAgICBsb2NrIF9fX19fCisgICAgICAgICAgICB8ICAgICAgICBcCisgICAgICAgICAgICB8ICAgIF9fY29udGVuZGVkCisgICAgICAgICAgICB8ICAgICAgICAgfAorICAgICAgICAgICAgfCAgICAgICA8d2FpdD4KKyAgICAgICAgICAgIHwgX19fX19fXy8KKyAgICAgICAgICAgIHwvCisgICAgICAgICAgICB8CisgICAgICAgX19hY3F1aXJlZAorICAgICAgICAgICAgfAorICAgICAgICAgICAgLgorICAgICAgICAgIDxob2xkPgorICAgICAgICAgICAgLgorICAgICAgICAgICAgfAorICAgICAgIF9fcmVsZWFzZQorICAgICAgICAgICAgfAorICAgICAgICAgdW5sb2NrCisKK2xvY2ssIHVubG9jawktIHRoZSByZWd1bGFyIGxvY2sgZnVuY3Rpb25zCitfXyoJCS0gdGhlIGhvb2tzCis8PiAJCS0gc3RhdGVzCisKK1dpdGggdGhlc2UgaG9va3Mgd2UgcHJvdmlkZSB0aGUgZm9sbG93aW5nIHN0YXRpc3RpY3M6CisKKyBjb24tYm91bmNlcyAgICAgICAtIG51bWJlciBvZiBsb2NrIGNvbnRlbnRpb24gdGhhdCBpbnZvbHZlZCB4LWNwdSBkYXRhCisgY29udGVudGlvbnMgICAgICAgLSBudW1iZXIgb2YgbG9jayBhY3F1aXNpdGlvbnMgdGhhdCBoYWQgdG8gd2FpdAorIHdhaXQgdGltZSBtaW4gICAgIC0gc2hvcnRlc3QgKG5vbi0wKSB0aW1lIHdlIGV2ZXIgaGFkIHRvIHdhaXQgZm9yIGEgbG9jaworICAgICAgICAgICBtYXggICAgIC0gbG9uZ2VzdCB0aW1lIHdlIGV2ZXIgaGFkIHRvIHdhaXQgZm9yIGEgbG9jaworCSAgIHRvdGFsICAgLSB0b3RhbCB0aW1lIHdlIHNwZW5kIHdhaXRpbmcgb24gdGhpcyBsb2NrCisJICAgYXZnICAgICAtIGF2ZXJhZ2UgdGltZSBzcGVudCB3YWl0aW5nIG9uIHRoaXMgbG9jaworIGFjcS1ib3VuY2VzICAgICAgIC0gbnVtYmVyIG9mIGxvY2sgYWNxdWlzaXRpb25zIHRoYXQgaW52b2x2ZWQgeC1jcHUgZGF0YQorIGFjcXVpc2l0aW9ucyAgICAgIC0gbnVtYmVyIG9mIHRpbWVzIHdlIHRvb2sgdGhlIGxvY2sKKyBob2xkIHRpbWUgbWluICAgICAtIHNob3J0ZXN0IChub24tMCkgdGltZSB3ZSBldmVyIGhlbGQgdGhlIGxvY2sKKwkgICBtYXggICAgIC0gbG9uZ2VzdCB0aW1lIHdlIGV2ZXIgaGVsZCB0aGUgbG9jaworCSAgIHRvdGFsICAgLSB0b3RhbCB0aW1lIHRoaXMgbG9jayB3YXMgaGVsZAorCSAgIGF2ZyAgICAgLSBhdmVyYWdlIHRpbWUgdGhpcyBsb2NrIHdhcyBoZWxkCisKK1RoZXNlIG51bWJlcnMgYXJlIGdhdGhlcmVkIHBlciBsb2NrIGNsYXNzLCBwZXIgcmVhZC93cml0ZSBzdGF0ZSAod2hlbgorYXBwbGljYWJsZSkuCisKK0l0IGFsc28gdHJhY2tzIDQgY29udGVudGlvbiBwb2ludHMgcGVyIGNsYXNzLiBBIGNvbnRlbnRpb24gcG9pbnQgaXMgYSBjYWxsIHNpdGUKK3RoYXQgaGFkIHRvIHdhaXQgb24gbG9jayBhY3F1aXNpdGlvbi4KKworIC0gQ09ORklHVVJBVElPTgorCitMb2NrIHN0YXRpc3RpY3MgYXJlIGVuYWJsZWQgdmlhIENPTkZJR19MT0NLX1NUQVQuCisKKyAtIFVTQUdFCisKK0VuYWJsZSBjb2xsZWN0aW9uIG9mIHN0YXRpc3RpY3M6CisKKyMgZWNobyAxID4vcHJvYy9zeXMva2VybmVsL2xvY2tfc3RhdAorCitEaXNhYmxlIGNvbGxlY3Rpb24gb2Ygc3RhdGlzdGljczoKKworIyBlY2hvIDAgPi9wcm9jL3N5cy9rZXJuZWwvbG9ja19zdGF0CisKK0xvb2sgYXQgdGhlIGN1cnJlbnQgbG9jayBzdGF0aXN0aWNzOgorCisoIGxpbmUgbnVtYmVycyBub3QgcGFydCBvZiBhY3R1YWwgb3V0cHV0LCBkb25lIGZvciBjbGFyaXR5IGluIHRoZSBleHBsYW5hdGlvbgorICBiZWxvdyApCisKKyMgbGVzcyAvcHJvYy9sb2NrX3N0YXQKKworMDEgbG9ja19zdGF0IHZlcnNpb24gMC40CiswMi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiswMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIG5hbWUgICAgY29uLWJvdW5jZXMgICAgY29udGVudGlvbnMgICB3YWl0dGltZS1taW4gICB3YWl0dGltZS1tYXggd2FpdHRpbWUtdG90YWwgICB3YWl0dGltZS1hdmcgICAgYWNxLWJvdW5jZXMgICBhY3F1aXNpdGlvbnMgICBob2xkdGltZS1taW4gICBob2xkdGltZS1tYXggaG9sZHRpbWUtdG90YWwgICBob2xkdGltZS1hdmcKKzA0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzA1CiswNiAgICAgICAgICAgICAgICAgICAgICAgICAmbW0tPm1tYXBfc2VtLVc6ICAgICAgICAgICAgNDYgICAgICAgICAgICAgODQgICAgICAgICAgIDAuMjYgICAgICAgICA5MzkuMTAgICAgICAgMTYzNzEuNTMgICAgICAgICAxOTQuOTAgICAgICAgICAgNDcyOTEgICAgICAgIDI5MjIzNjUgICAgICAgICAgIDAuMTYgICAgIDIyMjAzMDEuNjkgMTc0NjQwMjY5MTYuMzIgICAgICAgIDU5NzUuOTkKKzA3ICAgICAgICAgICAgICAgICAgICAgICAgICZtbS0+bW1hcF9zZW0tUjogICAgICAgICAgICAzNyAgICAgICAgICAgIDEwMCAgICAgICAgICAgMS4zMSAgICAgIDI5OTUwMi42MSAgICAgIDMyNTYyOS41MiAgICAgICAgMzI1Ni4zMCAgICAgICAgIDIxMjM0NCAgICAgICAzNDMxNjY4NSAgICAgICAgICAgMC4xMCAgICAgICAgNzc0NC45MSAgICA5NTAxNjkxMC4yMCAgICAgICAgICAgMi43NworMDggICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tCiswOSAgICAgICAgICAgICAgICAgICAgICAgICAgICZtbS0+bW1hcF9zZW0gICAgICAgICAgICAgIDEgICAgICAgICAgWzxmZmZmZmZmZjgxMTUwMmE3Pl0ga2h1Z2VwYWdlZF9zY2FuX21tX3Nsb3QrMHg1Ny8weDI4MAorMTkgICAgICAgICAgICAgICAgICAgICAgICAgICAmbW0tPm1tYXBfc2VtICAgICAgICAgICAgIDk2ICAgICAgICAgIFs8ZmZmZmZmZmY4MTUzNTFjND5dIF9fZG9fcGFnZV9mYXVsdCsweDFkNC8weDUxMAorMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAmbW0tPm1tYXBfc2VtICAgICAgICAgICAgIDM0ICAgICAgICAgIFs8ZmZmZmZmZmY4MTExM2Q3Nz5dIHZtX21tYXBfcGdvZmYrMHg4Ny8weGQwCisxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICZtbS0+bW1hcF9zZW0gICAgICAgICAgICAgMTcgICAgICAgICAgWzxmZmZmZmZmZjgxMTI3ZTcxPl0gdm1fbXVubWFwKzB4NDEvMHg4MAorMTMgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tCisxNCAgICAgICAgICAgICAgICAgICAgICAgICAgICZtbS0+bW1hcF9zZW0gICAgICAgICAgICAgIDEgICAgICAgICAgWzxmZmZmZmZmZjgxMDQ2ZmRhPl0gZHVwX21tYXArMHgyYS8weDNmMAorMTUgICAgICAgICAgICAgICAgICAgICAgICAgICAmbW0tPm1tYXBfc2VtICAgICAgICAgICAgIDYwICAgICAgICAgIFs8ZmZmZmZmZmY4MTEyOWUyOT5dIFN5U19tcHJvdGVjdCsweGU5LzB4MjUwCisxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICZtbS0+bW1hcF9zZW0gICAgICAgICAgICAgNDEgICAgICAgICAgWzxmZmZmZmZmZjgxNTM1MWM0Pl0gX19kb19wYWdlX2ZhdWx0KzB4MWQ0LzB4NTEwCisxNyAgICAgICAgICAgICAgICAgICAgICAgICAgICZtbS0+bW1hcF9zZW0gICAgICAgICAgICAgNjggICAgICAgICAgWzxmZmZmZmZmZjgxMTEzZDc3Pl0gdm1fbW1hcF9wZ29mZisweDg3LzB4ZDAKKzE4CisxOS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisyMAorMjEgICAgICAgICAgICAgICAgICAgICAgICAgdW5peF90YWJsZV9sb2NrOiAgICAgICAgICAgMTEwICAgICAgICAgICAgMTEyICAgICAgICAgICAwLjIxICAgICAgICAgIDQ5LjI0ICAgICAgICAgMTYzLjkxICAgICAgICAgICAxLjQ2ICAgICAgICAgIDIxMDk0ICAgICAgICAgIDY2MzEyICAgICAgICAgICAwLjEyICAgICAgICAgNjI0LjQyICAgICAgIDMxNTg5LjgxICAgICAgICAgICAwLjQ4CisyMiAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0KKzIzICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXhfdGFibGVfbG9jayAgICAgICAgICAgICA0NSAgICAgICAgICBbPGZmZmZmZmZmODE1MGFkOGU+XSB1bml4X2NyZWF0ZTErMHgxNmUvMHgxYjAKKzI0ICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXhfdGFibGVfbG9jayAgICAgICAgICAgICA0NyAgICAgICAgICBbPGZmZmZmZmZmODE1MGIxMTE+XSB1bml4X3JlbGVhc2Vfc29jaysweDMxLzB4MjUwCisyNSAgICAgICAgICAgICAgICAgICAgICAgICB1bml4X3RhYmxlX2xvY2sgICAgICAgICAgICAgMTUgICAgICAgICAgWzxmZmZmZmZmZjgxNTBjYTM3Pl0gdW5peF9maW5kX290aGVyKzB4MTE3LzB4MjMwCisyNiAgICAgICAgICAgICAgICAgICAgICAgICB1bml4X3RhYmxlX2xvY2sgICAgICAgICAgICAgIDUgICAgICAgICAgWzxmZmZmZmZmZjgxNTBhMDlmPl0gdW5peF9hdXRvYmluZCsweDExZi8weDFiMAorMjcgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tCisyOCAgICAgICAgICAgICAgICAgICAgICAgICB1bml4X3RhYmxlX2xvY2sgICAgICAgICAgICAgMzkgICAgICAgICAgWzxmZmZmZmZmZjgxNTBiMTExPl0gdW5peF9yZWxlYXNlX3NvY2srMHgzMS8weDI1MAorMjkgICAgICAgICAgICAgICAgICAgICAgICAgdW5peF90YWJsZV9sb2NrICAgICAgICAgICAgIDQ5ICAgICAgICAgIFs8ZmZmZmZmZmY4MTUwYWQ4ZT5dIHVuaXhfY3JlYXRlMSsweDE2ZS8weDFiMAorMzAgICAgICAgICAgICAgICAgICAgICAgICAgdW5peF90YWJsZV9sb2NrICAgICAgICAgICAgIDIwICAgICAgICAgIFs8ZmZmZmZmZmY4MTUwY2EzNz5dIHVuaXhfZmluZF9vdGhlcisweDExNy8weDIzMAorMzEgICAgICAgICAgICAgICAgICAgICAgICAgdW5peF90YWJsZV9sb2NrICAgICAgICAgICAgICA0ICAgICAgICAgIFs8ZmZmZmZmZmY4MTUwYTA5Zj5dIHVuaXhfYXV0b2JpbmQrMHgxMWYvMHgxYjAKKworCitUaGlzIGV4Y2VycHQgc2hvd3MgdGhlIGZpcnN0IHR3byBsb2NrIGNsYXNzIHN0YXRpc3RpY3MuIExpbmUgMDEgc2hvd3MgdGhlCitvdXRwdXQgdmVyc2lvbiAtIGVhY2ggdGltZSB0aGUgZm9ybWF0IGNoYW5nZXMgdGhpcyB3aWxsIGJlIHVwZGF0ZWQuIExpbmUgMDItMDQKK3Nob3cgdGhlIGhlYWRlciB3aXRoIGNvbHVtbiBkZXNjcmlwdGlvbnMuIExpbmVzIDA1LTE4IGFuZCAyMC0zMSBzaG93IHRoZSBhY3R1YWwKK3N0YXRpc3RpY3MuIFRoZXNlIHN0YXRpc3RpY3MgY29tZSBpbiB0d28gcGFydHM7IHRoZSBhY3R1YWwgc3RhdHMgc2VwYXJhdGVkIGJ5IGEKK3Nob3J0IHNlcGFyYXRvciAobGluZSAwOCwgMTMpIGZyb20gdGhlIGNvbnRlbnRpb24gcG9pbnRzLgorCitMaW5lcyAwOS0xMiBzaG93IHRoZSBmaXJzdCA0IHJlY29yZGVkIGNvbnRlbnRpb24gcG9pbnRzICh0aGUgY29kZQord2hpY2ggdHJpZXMgdG8gZ2V0IHRoZSBsb2NrKSBhbmQgbGluZXMgMTQtMTcgc2hvdyB0aGUgZmlyc3QgNCByZWNvcmRlZAorY29udGVuZGVkIHBvaW50cyAodGhlIGxvY2sgaG9sZGVyKS4gSXQgaXMgcG9zc2libGUgdGhhdCB0aGUgbWF4Citjb24tYm91bmNlcyBwb2ludCBpcyBtaXNzaW5nIGluIHRoZSBzdGF0aXN0aWNzLgorCitUaGUgZmlyc3QgbG9jayAoMDUtMTgpIGlzIGEgcmVhZC93cml0ZSBsb2NrLCBhbmQgc2hvd3MgdHdvIGxpbmVzIGFib3ZlIHRoZQorc2hvcnQgc2VwYXJhdG9yLiBUaGUgY29udGVudGlvbiBwb2ludHMgZG9uJ3QgbWF0Y2ggdGhlIGNvbHVtbiBkZXNjcmlwdG9ycywKK3RoZXkgaGF2ZSB0d286IGNvbnRlbnRpb25zIGFuZCBbPElQPl0gc3ltYm9sLiBUaGUgc2Vjb25kIHNldCBvZiBjb250ZW50aW9uCitwb2ludHMgYXJlIHRoZSBwb2ludHMgd2UncmUgY29udGVuZGluZyB3aXRoLgorCitUaGUgaW50ZWdlciBwYXJ0IG9mIHRoZSB0aW1lIHZhbHVlcyBpcyBpbiB1cy4KKworRGVhbGluZyB3aXRoIG5lc3RlZCBsb2Nrcywgc3ViY2xhc3NlcyBtYXkgYXBwZWFyOgorCiszMi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorMzMKKzM0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZycS0+bG9jazogICAgICAgMTMxMjggICAgICAgICAgMTMxMjggICAgICAgICAgIDAuNDMgICAgICAgICAxOTAuNTMgICAgICAxMDM4ODEuMjYgICAgICAgICAgIDcuOTEgICAgICAgICAgOTc0NTQgICAgICAgIDM0NTM0MDQgICAgICAgICAgIDAuMDAgICAgICAgICA0MDEuMTEgICAgMTMyMjQ2ODMuMTEgICAgICAgICAgIDMuODIKKzM1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLQorMzYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJxLT5sb2NrICAgICAgICAgIDY0NSAgICAgICAgICBbPGZmZmZmZmZmODEwM2JmYzQ+XSB0YXNrX3JxX2xvY2srMHg0My8weDc1CiszNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcnEtPmxvY2sgICAgICAgICAgMjk3ICAgICAgICAgIFs8ZmZmZmZmZmY4MTA0YmE2NT5dIHRyeV90b193YWtlX3VwKzB4MTI3LzB4MjVhCiszOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcnEtPmxvY2sgICAgICAgICAgMzYwICAgICAgICAgIFs8ZmZmZmZmZmY4MTAzYzRjNT5dIHNlbGVjdF90YXNrX3JxX2ZhaXIrMHgxZjAvMHg3NGEKKzM5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZycS0+bG9jayAgICAgICAgICA0MjggICAgICAgICAgWzxmZmZmZmZmZjgxMDQ1Zjk4Pl0gc2NoZWR1bGVyX3RpY2srMHg0Ni8weDFmYgorNDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tCis0MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcnEtPmxvY2sgICAgICAgICAgIDc3ICAgICAgICAgIFs8ZmZmZmZmZmY4MTAzYmZjND5dIHRhc2tfcnFfbG9jaysweDQzLzB4NzUKKzQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZycS0+bG9jayAgICAgICAgICAxNzQgICAgICAgICAgWzxmZmZmZmZmZjgxMDRiYTY1Pl0gdHJ5X3RvX3dha2VfdXArMHgxMjcvMHgyNWEKKzQzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZycS0+bG9jayAgICAgICAgIDQ3MTUgICAgICAgICAgWzxmZmZmZmZmZjgxMDNlZDRiPl0gZG91YmxlX3JxX2xvY2srMHg0Mi8weDU0Cis0NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcnEtPmxvY2sgICAgICAgICAgODkzICAgICAgICAgIFs8ZmZmZmZmZmY4MTM0MDUyND5dIHNjaGVkdWxlKzB4MTU3LzB4N2I4Cis0NQorNDYuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKzQ3Cis0OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJxLT5sb2NrLzE6ICAgICAgICAxNTI2ICAgICAgICAgIDExNDg4ICAgICAgICAgICAwLjMzICAgICAgICAgMzg4LjczICAgICAgMTM2Mjk0LjMxICAgICAgICAgIDExLjg2ICAgICAgICAgIDIxNDYxICAgICAgICAgIDM4NDA0ICAgICAgICAgICAwLjAwICAgICAgICAgIDM3LjkzICAgICAgMTA5Mzg4LjUzICAgICAgICAgICAyLjg0Cis0OSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0KKzUwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcnEtPmxvY2svMSAgICAgICAgMTE1MjYgICAgICAgICAgWzxmZmZmZmZmZjgxMDNlZDU4Pl0gZG91YmxlX3JxX2xvY2srMHg0Zi8weDU0Cis1MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0KKzUyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcnEtPmxvY2svMSAgICAgICAgIDU2NDUgICAgICAgICAgWzxmZmZmZmZmZjgxMDNlZDRiPl0gZG91YmxlX3JxX2xvY2srMHg0Mi8weDU0Cis1MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJxLT5sb2NrLzEgICAgICAgICAxMjI0ICAgICAgICAgIFs8ZmZmZmZmZmY4MTM0MDUyND5dIHNjaGVkdWxlKzB4MTU3LzB4N2I4Cis1NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJxLT5sb2NrLzEgICAgICAgICA0MzM2ICAgICAgICAgIFs8ZmZmZmZmZmY4MTAzZWQ1OD5dIGRvdWJsZV9ycV9sb2NrKzB4NGYvMHg1NAorNTUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZycS0+bG9jay8xICAgICAgICAgIDE4MSAgICAgICAgICBbPGZmZmZmZmZmODEwNGJhNjU+XSB0cnlfdG9fd2FrZV91cCsweDEyNy8weDI1YQorCitMaW5lIDQ4IHNob3dzIHN0YXRpc3RpY3MgZm9yIHRoZSBzZWNvbmQgc3ViY2xhc3MgKC8xKSBvZiAmcnEtPmxvY2sgY2xhc3MKKyhzdWJjbGFzcyBzdGFydHMgZnJvbSAwKSwgc2luY2UgaW4gdGhpcyBjYXNlLCBhcyBsaW5lIDUwIHN1Z2dlc3RzLAorZG91YmxlX3JxX2xvY2sgYWN0dWFsbHkgYWNxdWlyZXMgYSBuZXN0ZWQgbG9jayBvZiB0d28gc3BpbmxvY2tzLgorCitWaWV3IHRoZSB0b3AgY29udGVuZGluZyBsb2NrczoKKworIyBncmVwIDogL3Byb2MvbG9ja19zdGF0IHwgaGVhZAorCQkJY2xvY2tldmVudHNfbG9jazogICAgICAgMjkyNjE1OSAgICAgICAgMjk0NzYzNiAgICAgICAgICAgMC4xNSAgICAgICA0Njg4Mi44MSAgMTc4NDU0MDQ2Ni4zNCAgICAgICAgIDYwNS40MSAgICAgICAgMzM4MTM0NSAgICAgICAgMzg3OTE2MSAgICAgICAgICAgMC4wMCAgICAgICAgMjI2MC45NyAgICA1MzE3ODM5NS42OCAgICAgICAgICAxMy43MQorCQkgICAgIHRpY2tfYnJvYWRjYXN0X2xvY2s6ICAgICAgICAzNDY0NjAgICAgICAgICAzNDY3MTcgICAgICAgICAgIDAuMTggICAgICAgIDIyNTcuNDMgICAgMzkzNjQ2MjIuNzEgICAgICAgICAxMTMuNTQgICAgICAgIDM2NDI5MTkgICAgICAgIDQyNDI2OTYgICAgICAgICAgIDAuMDAgICAgICAgIDIyNjMuNzkgICAgNDkxNzM2NDYuNjAgICAgICAgICAgMTEuNTkKKwkJICAmbWFwcGluZy0+aV9tbWFwX211dGV4OiAgICAgICAgMjAzODk2ICAgICAgICAgMjAzODk5ICAgICAgICAgICAzLjM2ICAgICAgNjQ1NTMwLjA1IDMxNzY3NTA3OTg4LjM5ICAgICAgMTU1ODAwLjIxICAgICAgICAzMzYxNzc2ICAgICAgICA4ODkzOTg0ICAgICAgICAgICAwLjE3ICAgICAgICAyMjU0LjE1ICAgIDE0MTEwMTIxLjAyICAgICAgICAgICAxLjU5CisJCQkgICAgICAgJnJxLT5sb2NrOiAgICAgICAgMTM1MDE0ICAgICAgICAgMTM2OTA5ICAgICAgICAgICAwLjE4ICAgICAgICAgNjA2LjA5ICAgICAgODQyMTYwLjY4ICAgICAgICAgICA2LjE1ICAgICAgICAxNTQwNzI4ICAgICAgIDEwNDM2MTQ2ICAgICAgICAgICAwLjAwICAgICAgICAgNzI4LjcyICAgIDE3NjA2NjgzLjQxICAgICAgICAgICAxLjY5CisJICAgICAgICYoJnpvbmUtPmxydV9sb2NrKS0+cmxvY2s6ICAgICAgICAgOTMwMDAgICAgICAgICAgOTQ5MzQgICAgICAgICAgIDAuMTYgICAgICAgICAgNTkuMTggICAgICAxODgyNTMuNzggICAgICAgICAgIDEuOTggICAgICAgIDExOTk5MTIgICAgICAgIDM4MDk4OTQgICAgICAgICAgIDAuMTUgICAgICAgICAzOTEuNDAgICAgIDM1NTk1MTguODEgICAgICAgICAgIDAuOTMKKwkJCSB0YXNrbGlzdF9sb2NrLVc6ICAgICAgICAgNDA2NjcgICAgICAgICAgNDExMzAgICAgICAgICAgIDAuMjMgICAgICAgIDExODkuNDIgICAgICA0Mjg5ODAuNTEgICAgICAgICAgMTAuNDMgICAgICAgICAyNzAyNzggICAgICAgICA1MTAxMDYgICAgICAgICAgIDAuMTYgICAgICAgICA2NTMuNTEgICAgIDM5Mzk2NzQuOTEgICAgICAgICAgIDcuNzIKKwkJCSB0YXNrbGlzdF9sb2NrLVI6ICAgICAgICAgMjEyOTggICAgICAgICAgMjEzMDUgICAgICAgICAgIDAuMjAgICAgICAgIDEzMTAuMDUgICAgICAyMTU1MTEuMTIgICAgICAgICAgMTAuMTIgICAgICAgICAxODYyMDQgICAgICAgICAyNDEyNTggICAgICAgICAgIDAuMTQgICAgICAgIDExNjIuMzMgICAgIDExNzk3NzkuMjMgICAgICAgICAgIDQuODkKKwkJCSAgICAgIHJjdV9ub2RlXzE6ICAgICAgICAgNDc2NTYgICAgICAgICAgNDkwMjIgICAgICAgICAgIDAuMTYgICAgICAgICA2MzUuNDEgICAgICAxOTM2MTYuNDEgICAgICAgICAgIDMuOTUgICAgICAgICA4NDQ4ODggICAgICAgIDE4NjU0MjMgICAgICAgICAgIDAuMDAgICAgICAgICA3NjQuMjYgICAgIDE2NTYyMjYuOTYgICAgICAgICAgIDAuODkKKyAgICAgICAmKCZkZW50cnktPmRfbG9ja3JlZi5sb2NrKS0+cmxvY2s6ICAgICAgICAgMzk3OTEgICAgICAgICAgNDAxNzkgICAgICAgICAgIDAuMTUgICAgICAgIDEzMDIuMDggICAgICAgODg4NTEuOTYgICAgICAgICAgIDIuMjEgICAgICAgIDI3OTA4NTEgICAgICAgMTI1MjcwMjUgICAgICAgICAgIDAuMTAgICAgICAgIDE5MTAuNzUgICAgIDMzNzk3MTQuMjcgICAgICAgICAgIDAuMjcKKwkJCSAgICAgIHJjdV9ub2RlXzA6ICAgICAgICAgMjkyMDMgICAgICAgICAgMzAwNjQgICAgICAgICAgIDAuMTYgICAgICAgICA3ODYuNTUgICAgIDE1NTU1NzMuMDAgICAgICAgICAgNTEuNzQgICAgICAgICAgODg5NjMgICAgICAgICAyNDQyNTQgICAgICAgICAgIDAuMDAgICAgICAgICAzOTguODcgICAgICA0Mjg4NzIuNTEgICAgICAgICAgIDEuNzYKKworQ2xlYXIgdGhlIHN0YXRpc3RpY3M6CisKKyMgZWNobyAwID4gL3Byb2MvbG9ja19zdGF0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2xvY2tpbmcvbG9ja3RvcnR1cmUudHh0IGIvRG9jdW1lbnRhdGlvbi9sb2NraW5nL2xvY2t0b3J0dXJlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmVmM2E5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9sb2NraW5nL2xvY2t0b3J0dXJlLnR4dApAQCAtMCwwICsxLDE1MCBAQAorS2VybmVsIExvY2sgVG9ydHVyZSBUZXN0IE9wZXJhdGlvbgorCitDT05GSUdfTE9DS19UT1JUVVJFX1RFU1QKKworVGhlIENPTkZJRyBMT0NLX1RPUlRVUkVfVEVTVCBjb25maWcgb3B0aW9uIHByb3ZpZGVzIGEga2VybmVsIG1vZHVsZQordGhhdCBydW5zIHRvcnR1cmUgdGVzdHMgb24gY29yZSBrZXJuZWwgbG9ja2luZyBwcmltaXRpdmVzLiBUaGUga2VybmVsCittb2R1bGUsICdsb2NrdG9ydHVyZScsIG1heSBiZSBidWlsdCBhZnRlciB0aGUgZmFjdCBvbiB0aGUgcnVubmluZwora2VybmVsIHRvIGJlIHRlc3RlZCwgaWYgZGVzaXJlZC4gVGhlIHRlc3RzIHBlcmlvZGljYWxseSBvdXRwdXQgc3RhdHVzCittZXNzYWdlcyB2aWEgcHJpbnRrKCksIHdoaWNoIGNhbiBiZSBleGFtaW5lZCB2aWEgdGhlIGRtZXNnIChwZXJoYXBzCitncmVwcGluZyBmb3IgInRvcnR1cmUiKS4gIFRoZSB0ZXN0IGlzIHN0YXJ0ZWQgd2hlbiB0aGUgbW9kdWxlIGlzIGxvYWRlZCwKK2FuZCBzdG9wcyB3aGVuIHRoZSBtb2R1bGUgaXMgdW5sb2FkZWQuIFRoaXMgcHJvZ3JhbSBpcyBiYXNlZCBvbiBob3cgUkNVCitpcyB0b3J0dXJlZCwgdmlhIHJjdXRvcnR1cmUuCisKK1RoaXMgdG9ydHVyZSB0ZXN0IGNvbnNpc3RzIG9mIGNyZWF0aW5nIGEgbnVtYmVyIG9mIGtlcm5lbCB0aHJlYWRzIHdoaWNoCithY3F1aXJlIHRoZSBsb2NrIGFuZCBob2xkIGl0IGZvciBzcGVjaWZpYyBhbW91bnQgb2YgdGltZSwgdGh1cyBzaW11bGF0aW5nCitkaWZmZXJlbnQgY3JpdGljYWwgcmVnaW9uIGJlaGF2aW9ycy4gVGhlIGFtb3VudCBvZiBjb250ZW50aW9uIG9uIHRoZSBsb2NrCitjYW4gYmUgc2ltdWxhdGVkIGJ5IGVpdGhlciBlbmxhcmdpbmcgdGhpcyBjcml0aWNhbCByZWdpb24gaG9sZCB0aW1lIGFuZC9vcgorY3JlYXRpbmcgbW9yZSBrdGhyZWFkcy4KKworCitNT0RVTEUgUEFSQU1FVEVSUworCitUaGlzIG1vZHVsZSBoYXMgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOgorCisKKwkgICAgKiogTG9ja3RvcnR1cmUtc3BlY2lmaWMgKioKKworbndyaXRlcnNfc3RyZXNzICAgTnVtYmVyIG9mIGtlcm5lbCB0aHJlYWRzIHRoYXQgd2lsbCBzdHJlc3MgZXhjbHVzaXZlIGxvY2sKKwkJICBvd25lcnNoaXAgKHdyaXRlcnMpLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB0d2ljZSB0aGUgbnVtYmVyCisJCSAgb2Ygb25saW5lIENQVXMuCisKK25yZWFkZXJzX3N0cmVzcyAgIE51bWJlciBvZiBrZXJuZWwgdGhyZWFkcyB0aGF0IHdpbGwgc3RyZXNzIHNoYXJlZCBsb2NrCisJCSAgb3duZXJzaGlwIChyZWFkZXJzKS4gVGhlIGRlZmF1bHQgaXMgdGhlIHNhbWUgYW1vdW50IG9mIHdyaXRlcgorCQkgIGxvY2tzLiBJZiB0aGUgdXNlciBkaWQgbm90IHNwZWNpZnkgbndyaXRlcnNfc3RyZXNzLCB0aGVuCisJCSAgYm90aCByZWFkZXJzIGFuZCB3cml0ZXJzIGJlIHRoZSBhbW91bnQgb2Ygb25saW5lIENQVXMuCisKK3RvcnR1cmVfdHlwZQkgIFR5cGUgb2YgbG9jayB0byB0b3J0dXJlLiBCeSBkZWZhdWx0LCBvbmx5IHNwaW5sb2NrcyB3aWxsCisJCSAgYmUgdG9ydHVyZWQuIFRoaXMgbW9kdWxlIGNhbiB0b3J0dXJlIHRoZSBmb2xsb3dpbmcgbG9ja3MsCisJCSAgd2l0aCBzdHJpbmcgdmFsdWVzIGFzIGZvbGxvd3M6CisKKwkJICAgICBvICJsb2NrX2J1c3RlZCI6IFNpbXVsYXRlcyBhIGJ1Z2d5IGxvY2sgaW1wbGVtZW50YXRpb24uCisKKwkJICAgICBvICJzcGluX2xvY2siOiBzcGluX2xvY2soKSBhbmQgc3Bpbl91bmxvY2soKSBwYWlycy4KKworCQkgICAgIG8gInNwaW5fbG9ja19pcnEiOiBzcGluX2xvY2tfaXJxKCkgYW5kIHNwaW5fdW5sb2NrX2lycSgpCisJCQkJCXBhaXJzLgorCisJCSAgICAgbyAicndfbG9jayI6IHJlYWQvd3JpdGUgbG9jaygpIGFuZCB1bmxvY2soKSByd2xvY2sgcGFpcnMuCisKKwkJICAgICBvICJyd19sb2NrX2lycSI6IHJlYWQvd3JpdGUgbG9ja19pcnEoKSBhbmQgdW5sb2NrX2lycSgpCisJCQkJICAgICAgcndsb2NrIHBhaXJzLgorCisJCSAgICAgbyAibXV0ZXhfbG9jayI6IG11dGV4X2xvY2soKSBhbmQgbXV0ZXhfdW5sb2NrKCkgcGFpcnMuCisKKwkJICAgICBvICJydG11dGV4X2xvY2siOiBydG11dGV4X2xvY2soKSBhbmQgcnRtdXRleF91bmxvY2soKQorCQkJCSAgICAgICBwYWlycy4gS2VybmVsIG11c3QgaGF2ZSBDT05GSUdfUlRfTVVURVg9eS4KKworCQkgICAgIG8gInJ3c2VtX2xvY2siOiByZWFkL3dyaXRlIGRvd24oKSBhbmQgdXAoKSBzZW1hcGhvcmUgcGFpcnMuCisKK3RvcnR1cmVfcnVubmFibGUgIFN0YXJ0IGxvY2t0b3J0dXJlIGF0IGJvb3QgdGltZSBpbiB0aGUgY2FzZSB3aGVyZSB0aGUKKwkJICBtb2R1bGUgaXMgYnVpbHQgaW50byB0aGUga2VybmVsLCBvdGhlcndpc2Ugd2FpdCBmb3IKKwkJICB0b3J0dXJlX3J1bm5hYmxlIHRvIGJlIHNldCB2aWEgc3lzZnMgYmVmb3JlIHN0YXJ0aW5nLgorCQkgIEJ5IGRlZmF1bHQgaXQgd2lsbCBiZWdpbiBvbmNlIHRoZSBtb2R1bGUgaXMgbG9hZGVkLgorCisKKwkgICAgKiogVG9ydHVyZS1mcmFtZXdvcmsgKFJDVSArIGxvY2tpbmcpICoqCisKK3NodXRkb3duX3NlY3MJICBUaGUgbnVtYmVyIG9mIHNlY29uZHMgdG8gcnVuIHRoZSB0ZXN0IGJlZm9yZSB0ZXJtaW5hdGluZworCQkgIHRoZSB0ZXN0IGFuZCBwb3dlcmluZyBvZmYgdGhlIHN5c3RlbS4gIFRoZSBkZWZhdWx0IGlzCisJCSAgemVybywgd2hpY2ggZGlzYWJsZXMgdGVzdCB0ZXJtaW5hdGlvbiBhbmQgc3lzdGVtIHNodXRkb3duLgorCQkgIFRoaXMgY2FwYWJpbGl0eSBpcyB1c2VmdWwgZm9yIGF1dG9tYXRlZCB0ZXN0aW5nLgorCitvbm9mZl9pbnRlcnZhbAkgIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyBiZXR3ZWVuIGVhY2ggYXR0ZW1wdCB0byBleGVjdXRlIGEKKwkJICByYW5kb21seSBzZWxlY3RlZCBDUFUtaG90cGx1ZyBvcGVyYXRpb24uICBEZWZhdWx0cworCQkgIHRvIHplcm8sIHdoaWNoIGRpc2FibGVzIENQVSBob3RwbHVnZ2luZy4gIEluCisJCSAgQ09ORklHX0hPVFBMVUdfQ1BVPW4ga2VybmVscywgbG9ja3RvcnR1cmUgd2lsbCBzaWxlbnRseQorCQkgIHJlZnVzZSB0byBkbyBhbnkgQ1BVLWhvdHBsdWcgb3BlcmF0aW9ucyByZWdhcmRsZXNzIG9mCisJCSAgd2hhdCB2YWx1ZSBpcyBzcGVjaWZpZWQgZm9yIG9ub2ZmX2ludGVydmFsLgorCitvbm9mZl9ob2xkb2ZmCSAgVGhlIG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQgdW50aWwgc3RhcnRpbmcgQ1BVLWhvdHBsdWcKKwkJICBvcGVyYXRpb25zLiAgVGhpcyB3b3VsZCBub3JtYWxseSBvbmx5IGJlIHVzZWQgd2hlbgorCQkgIGxvY2t0b3J0dXJlIHdhcyBidWlsdCBpbnRvIHRoZSBrZXJuZWwgYW5kIHN0YXJ0ZWQKKwkJICBhdXRvbWF0aWNhbGx5IGF0IGJvb3QgdGltZSwgaW4gd2hpY2ggY2FzZSBpdCBpcyB1c2VmdWwKKwkJICBpbiBvcmRlciB0byBhdm9pZCBjb25mdXNpbmcgYm9vdC10aW1lIGNvZGUgd2l0aCBDUFVzCisJCSAgY29taW5nIGFuZCBnb2luZy4gVGhpcyBwYXJhbWV0ZXIgaXMgb25seSB1c2VmdWwgaWYKKwkJICBDT05GSUdfSE9UUExVR19DUFUgaXMgZW5hYmxlZC4KKworc3RhdF9pbnRlcnZhbAkgIE51bWJlciBvZiBzZWNvbmRzIGJldHdlZW4gc3RhdGlzdGljcy1yZWxhdGVkIHByaW50aygpcy4KKwkJICBCeSBkZWZhdWx0LCBsb2NrdG9ydHVyZSB3aWxsIHJlcG9ydCBzdGF0cyBldmVyeSA2MCBzZWNvbmRzLgorCQkgIFNldHRpbmcgdGhlIGludGVydmFsIHRvIHplcm8gY2F1c2VzIHRoZSBzdGF0aXN0aWNzIHRvCisJCSAgYmUgcHJpbnRlZCAtb25seS0gd2hlbiB0aGUgbW9kdWxlIGlzIHVubG9hZGVkLCBhbmQgdGhpcworCQkgIGlzIHRoZSBkZWZhdWx0LgorCitzdHV0dGVyCQkgIFRoZSBsZW5ndGggb2YgdGltZSB0byBydW4gdGhlIHRlc3QgYmVmb3JlIHBhdXNpbmcgZm9yIHRoaXMKKwkJICBzYW1lIHBlcmlvZCBvZiB0aW1lLiAgRGVmYXVsdHMgdG8gInN0dXR0ZXI9NSIsIHNvIGFzCisJCSAgdG8gcnVuIGFuZCBwYXVzZSBmb3IgKHJvdWdobHkpIGZpdmUtc2Vjb25kIGludGVydmFscy4KKwkJICBTcGVjaWZ5aW5nICJzdHV0dGVyPTAiIGNhdXNlcyB0aGUgdGVzdCB0byBydW4gY29udGludW91c2x5CisJCSAgd2l0aG91dCBwYXVzaW5nLCB3aGljaCBpcyB0aGUgb2xkIGRlZmF1bHQgYmVoYXZpb3IuCisKK3NodWZmbGVfaW50ZXJ2YWwgIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0byBrZWVwIHRoZSB0ZXN0IHRocmVhZHMgYWZmaW5pdGllZAorCQkgIHRvIGEgcGFydGljdWxhciBzdWJzZXQgb2YgdGhlIENQVXMsIGRlZmF1bHRzIHRvIDMgc2Vjb25kcy4KKwkJICBVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGVzdF9ub19pZGxlX2h6LgorCit2ZXJib3NlCQkgIEVuYWJsZSB2ZXJib3NlIGRlYnVnZ2luZyBwcmludGluZywgdmlhIHByaW50aygpLiBFbmFibGVkCisJCSAgYnkgZGVmYXVsdC4gVGhpcyBleHRyYSBpbmZvcm1hdGlvbiBpcyBtb3N0bHkgcmVsYXRlZCB0bworCQkgIGhpZ2gtbGV2ZWwgZXJyb3JzIGFuZCByZXBvcnRzIGZyb20gdGhlIG1haW4gJ3RvcnR1cmUnCisJCSAgZnJhbWV3b3JrLgorCisKK1NUQVRJU1RJQ1MKKworU3RhdGlzdGljcyBhcmUgcHJpbnRlZCBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDoKKworc3Bpbl9sb2NrLXRvcnR1cmU6IFdyaXRlczogIFRvdGFsOiA5Mzc0NjA2NCAgTWF4L01pbjogMC8wICAgRmFpbDogMAorICAgKEEpCQkgICAgKEIpCQkgICAoQykJCSAgKEQpCSAgICAgICAoRSkKKworKEEpOiBMb2NrIHR5cGUgdGhhdCBpcyBiZWluZyB0b3J0dXJlZCAtLSB0b3J0dXJlX3R5cGUgcGFyYW1ldGVyLgorCisoQik6IE51bWJlciBvZiB3cml0ZXIgbG9jayBhY3F1aXNpdGlvbnMuIElmIGRlYWxpbmcgd2l0aCBhIHJlYWQvd3JpdGUgcHJpbWl0aXZlCisgICAgIGEgc2Vjb25kICJSZWFkcyIgc3RhdGlzdGljcyBsaW5lIGlzIHByaW50ZWQuCisKKyhDKTogTnVtYmVyIG9mIHRpbWVzIHRoZSBsb2NrIHdhcyBhY3F1aXJlZC4KKworKEQpOiBNaW4gYW5kIG1heCBudW1iZXIgb2YgdGltZXMgdGhyZWFkcyBmYWlsZWQgdG8gYWNxdWlyZSB0aGUgbG9jay4KKworKEUpOiB0cnVlL2ZhbHNlIHZhbHVlcyBpZiB0aGVyZSB3ZXJlIGVycm9ycyBhY3F1aXJpbmcgdGhlIGxvY2suIFRoaXMgc2hvdWxkCisgICAgIC1vbmx5LSBiZSBwb3NpdGl2ZSBpZiB0aGVyZSBpcyBhIGJ1ZyBpbiB0aGUgbG9ja2luZyBwcmltaXRpdmUncworICAgICBpbXBsZW1lbnRhdGlvbi4gT3RoZXJ3aXNlIGEgbG9jayBzaG91bGQgbmV2ZXIgZmFpbCAoaS5lLiwgc3Bpbl9sb2NrKCkpLgorICAgICBPZiBjb3Vyc2UsIHRoZSBzYW1lIGFwcGxpZXMgZm9yIChDKSwgYWJvdmUuIEEgZHVtbXkgZXhhbXBsZSBvZiB0aGlzIGlzCisgICAgIHRoZSAibG9ja19idXN0ZWQiIHR5cGUuCisKK1VTQUdFCisKK1RoZSBmb2xsb3dpbmcgc2NyaXB0IG1heSBiZSB1c2VkIHRvIHRvcnR1cmUgbG9ja3M6CisKKwkjIS9iaW4vc2gKKworCW1vZHByb2JlIGxvY2t0b3J0dXJlCisJc2xlZXAgMzYwMAorCXJtbW9kIGxvY2t0b3J0dXJlCisJZG1lc2cgfCBncmVwIHRvcnR1cmU6CisKK1RoZSBvdXRwdXQgY2FuIGJlIG1hbnVhbGx5IGluc3BlY3RlZCBmb3IgdGhlIGVycm9yIGZsYWcgb2YgIiEhISIuCitPbmUgY291bGQgb2YgY291cnNlIGNyZWF0ZSBhIG1vcmUgZWxhYm9yYXRlIHNjcmlwdCB0aGF0IGF1dG9tYXRpY2FsbHkKK2NoZWNrZWQgZm9yIHN1Y2ggZXJyb3JzLiAgVGhlICJybW1vZCIgY29tbWFuZCBmb3JjZXMgYSAiU1VDQ0VTUyIsCisiRkFJTFVSRSIsIG9yICJSQ1VfSE9UUExVRyIgaW5kaWNhdGlvbiB0byBiZSBwcmludGsoKWVkLiAgVGhlIGZpcnN0Cit0d28gYXJlIHNlbGYtZXhwbGFuYXRvcnksIHdoaWxlIHRoZSBsYXN0IGluZGljYXRlcyB0aGF0IHdoaWxlIHRoZXJlCit3ZXJlIG5vIGxvY2tpbmcgZmFpbHVyZXMsIENQVS1ob3RwbHVnIHByb2JsZW1zIHdlcmUgZGV0ZWN0ZWQuCisKK0Fsc28gc2VlOiBEb2N1bWVudGF0aW9uL1JDVS90b3J0dXJlLnR4dApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9sb2NraW5nL211dGV4LWRlc2lnbi50eHQgYi9Eb2N1bWVudGF0aW9uL2xvY2tpbmcvbXV0ZXgtZGVzaWduLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGM0ODJkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9sb2NraW5nL211dGV4LWRlc2lnbi50eHQKQEAgLTAsMCArMSwxNTcgQEAKK0dlbmVyaWMgTXV0ZXggU3Vic3lzdGVtCisKK3N0YXJ0ZWQgYnkgSW5nbyBNb2xuYXIgPG1pbmdvQHJlZGhhdC5jb20+Cit1cGRhdGVkIGJ5IERhdmlkbG9ociBCdWVzbyA8ZGF2aWRsb2hyQGhwLmNvbT4KKworV2hhdCBhcmUgbXV0ZXhlcz8KKy0tLS0tLS0tLS0tLS0tLS0tCisKK0luIHRoZSBMaW51eCBrZXJuZWwsIG11dGV4ZXMgcmVmZXIgdG8gYSBwYXJ0aWN1bGFyIGxvY2tpbmcgcHJpbWl0aXZlCit0aGF0IGVuZm9yY2VzIHNlcmlhbGl6YXRpb24gb24gc2hhcmVkIG1lbW9yeSBzeXN0ZW1zLCBhbmQgbm90IG9ubHkgdG8KK3RoZSBnZW5lcmljIHRlcm0gcmVmZXJyaW5nIHRvICdtdXR1YWwgZXhjbHVzaW9uJyBmb3VuZCBpbiBhY2FkZW1pYQorb3Igc2ltaWxhciB0aGVvcmV0aWNhbCB0ZXh0IGJvb2tzLiBNdXRleGVzIGFyZSBzbGVlcGluZyBsb2NrcyB3aGljaAorYmVoYXZlIHNpbWlsYXJseSB0byBiaW5hcnkgc2VtYXBob3JlcywgYW5kIHdlcmUgaW50cm9kdWNlZCBpbiAyMDA2WzFdCithcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGVzZS4gVGhpcyBuZXcgZGF0YSBzdHJ1Y3R1cmUgcHJvdmlkZWQgYSBudW1iZXIKK29mIGFkdmFudGFnZXMsIGluY2x1ZGluZyBzaW1wbGVyIGludGVyZmFjZXMsIGFuZCBhdCB0aGF0IHRpbWUgc21hbGxlcgorY29kZSAoc2VlIERpc2FkdmFudGFnZXMpLgorCitbMV0gaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvMTY0ODAyLworCitJbXBsZW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0KKworTXV0ZXhlcyBhcmUgcmVwcmVzZW50ZWQgYnkgJ3N0cnVjdCBtdXRleCcsIGRlZmluZWQgaW4gaW5jbHVkZS9saW51eC9tdXRleC5oCithbmQgaW1wbGVtZW50ZWQgaW4ga2VybmVsL2xvY2tpbmcvbXV0ZXguYy4gVGhlc2UgbG9ja3MgdXNlIGEgdGhyZWUKK3N0YXRlIGF0b21pYyBjb3VudGVyICgtPmNvdW50KSB0byByZXByZXNlbnQgdGhlIGRpZmZlcmVudCBwb3NzaWJsZQordHJhbnNpdGlvbnMgdGhhdCBjYW4gb2NjdXIgZHVyaW5nIHRoZSBsaWZldGltZSBvZiBhIGxvY2s6CisKKwkgIDE6IHVubG9ja2VkCisJICAwOiBsb2NrZWQsIG5vIHdhaXRlcnMKKyAgIG5lZ2F0aXZlOiBsb2NrZWQsIHdpdGggcG90ZW50aWFsIHdhaXRlcnMKKworSW4gaXRzIG1vc3QgYmFzaWMgZm9ybSBpdCBhbHNvIGluY2x1ZGVzIGEgd2FpdC1xdWV1ZSBhbmQgYSBzcGlubG9jawordGhhdCBzZXJpYWxpemVzIGFjY2VzcyB0byBpdC4gQ09ORklHX1NNUCBzeXN0ZW1zIGNhbiBhbHNvIGluY2x1ZGUKK2EgcG9pbnRlciB0byB0aGUgbG9jayB0YXNrIG93bmVyICgtPm93bmVyKSBhcyB3ZWxsIGFzIGEgc3Bpbm5lciBNQ1MKK2xvY2sgKC0+b3NxKSwgYm90aCBkZXNjcmliZWQgYmVsb3cgaW4gKGlpKS4KKworV2hlbiBhY3F1aXJpbmcgYSBtdXRleCwgdGhlcmUgYXJlIHRocmVlIHBvc3NpYmxlIHBhdGhzIHRoYXQgY2FuIGJlCit0YWtlbiwgZGVwZW5kaW5nIG9uIHRoZSBzdGF0ZSBvZiB0aGUgbG9jazoKKworKGkpIGZhc3RwYXRoOiB0cmllcyB0byBhdG9taWNhbGx5IGFjcXVpcmUgdGhlIGxvY2sgYnkgZGVjcmVtZW50aW5nIHRoZQorICAgIGNvdW50ZXIuIElmIGl0IHdhcyBhbHJlYWR5IHRha2VuIGJ5IGFub3RoZXIgdGFzayBpdCBnb2VzIHRvIHRoZSBuZXh0CisgICAgcG9zc2libGUgcGF0aC4gVGhpcyBsb2dpYyBpcyBhcmNoaXRlY3R1cmUgc3BlY2lmaWMuIE9uIHg4Ni02NCwgdGhlCisgICAgbG9ja2luZyBmYXN0cGF0aCBpcyAyIGluc3RydWN0aW9uczoKKworICAgIDAwMDAwMDAwMDAwMDBlMTAgPG11dGV4X2xvY2s+OgorICAgIGUyMTogICBmMCBmZiAwYiAgICAgICAgICAgICAgICBsb2NrIGRlY2wgKCVyYngpCisgICAgZTI0OiAgIDc5IDA4ICAgICAgICAgICAgICAgICAgIGpucyAgICBlMmUgPG11dGV4X2xvY2srMHgxZT4KKworICAgdGhlIHVubG9ja2luZyBmYXN0cGF0aCBpcyBlcXVhbGx5IHRpZ2h0OgorCisgICAgMDAwMDAwMDAwMDAwMGJjMCA8bXV0ZXhfdW5sb2NrPjoKKyAgICBiYzg6ICAgZjAgZmYgMDcgICAgICAgICAgICAgICAgbG9jayBpbmNsICglcmRpKQorICAgIGJjYjogICA3ZiAwYSAgICAgICAgICAgICAgICAgICBqZyAgICAgYmQ3IDxtdXRleF91bmxvY2srMHgxNz4KKworCisoaWkpIG1pZHBhdGg6IGFrYSBvcHRpbWlzdGljIHNwaW5uaW5nLCB0cmllcyB0byBzcGluIGZvciBhY3F1aXNpdGlvbgorICAgICB3aGlsZSB0aGUgbG9jayBvd25lciBpcyBydW5uaW5nIGFuZCB0aGVyZSBhcmUgbm8gb3RoZXIgdGFza3MgcmVhZHkKKyAgICAgdG8gcnVuIHRoYXQgaGF2ZSBoaWdoZXIgcHJpb3JpdHkgKG5lZWRfcmVzY2hlZCkuIFRoZSByYXRpb25hbGUgaXMKKyAgICAgdGhhdCBpZiB0aGUgbG9jayBvd25lciBpcyBydW5uaW5nLCBpdCBpcyBsaWtlbHkgdG8gcmVsZWFzZSB0aGUgbG9jaworICAgICBzb29uLiBUaGUgbXV0ZXggc3Bpbm5lcnMgYXJlIHF1ZXVlZCB1cCB1c2luZyBNQ1MgbG9jayBzbyB0aGF0IG9ubHkKKyAgICAgb25lIHNwaW5uZXIgY2FuIGNvbXBldGUgZm9yIHRoZSBtdXRleC4KKworICAgICBUaGUgTUNTIGxvY2sgKHByb3Bvc2VkIGJ5IE1lbGxvci1DcnVtbWV5IGFuZCBTY290dCkgaXMgYSBzaW1wbGUgc3BpbmxvY2sKKyAgICAgd2l0aCB0aGUgZGVzaXJhYmxlIHByb3BlcnRpZXMgb2YgYmVpbmcgZmFpciBhbmQgd2l0aCBlYWNoIGNwdSB0cnlpbmcKKyAgICAgdG8gYWNxdWlyZSB0aGUgbG9jayBzcGlubmluZyBvbiBhIGxvY2FsIHZhcmlhYmxlLiBJdCBhdm9pZHMgZXhwZW5zaXZlCisgICAgIGNhY2hlbGluZSBib3VuY2luZyB0aGF0IGNvbW1vbiB0ZXN0LWFuZC1zZXQgc3BpbmxvY2sgaW1wbGVtZW50YXRpb25zCisgICAgIGluY3VyLiBBbiBNQ1MtbGlrZSBsb2NrIGlzIHNwZWNpYWxseSB0YWlsb3JlZCBmb3Igb3B0aW1pc3RpYyBzcGlubmluZworICAgICBmb3Igc2xlZXBpbmcgbG9jayBpbXBsZW1lbnRhdGlvbi4gQW4gaW1wb3J0YW50IGZlYXR1cmUgb2YgdGhlIGN1c3RvbWl6ZWQKKyAgICAgTUNTIGxvY2sgaXMgdGhhdCBpdCBoYXMgdGhlIGV4dHJhIHByb3BlcnR5IHRoYXQgc3Bpbm5lcnMgYXJlIGFibGUgdG8gZXhpdAorICAgICB0aGUgTUNTIHNwaW5sb2NrIHF1ZXVlIHdoZW4gdGhleSBuZWVkIHRvIHJlc2NoZWR1bGUuIFRoaXMgZnVydGhlciBoZWxwcworICAgICBhdm9pZCBzaXR1YXRpb25zIHdoZXJlIE1DUyBzcGlubmVycyB0aGF0IG5lZWQgdG8gcmVzY2hlZHVsZSB3b3VsZCBjb250aW51ZQorICAgICB3YWl0aW5nIHRvIHNwaW4gb24gbXV0ZXggb3duZXIsIG9ubHkgdG8gZ28gZGlyZWN0bHkgdG8gc2xvd3BhdGggdXBvbgorICAgICBvYnRhaW5pbmcgdGhlIE1DUyBsb2NrLgorCisKKyhpaWkpIHNsb3dwYXRoOiBsYXN0IHJlc29ydCwgaWYgdGhlIGxvY2sgaXMgc3RpbGwgdW5hYmxlIHRvIGJlIGFjcXVpcmVkLAorICAgICAgdGhlIHRhc2sgaXMgYWRkZWQgdG8gdGhlIHdhaXQtcXVldWUgYW5kIHNsZWVwcyB1bnRpbCB3b2tlbiB1cCBieSB0aGUKKyAgICAgIHVubG9jayBwYXRoLiBVbmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcyBpdCBibG9ja3MgYXMgVEFTS19VTklOVEVSUlVQVElCTEUuCisKK1doaWxlIGZvcm1hbGx5IGtlcm5lbCBtdXRleGVzIGFyZSBzbGVlcGFibGUgbG9ja3MsIGl0IGlzIHBhdGggKGlpKSB0aGF0CittYWtlcyB0aGVtIG1vcmUgcHJhY3RpY2FsbHkgYSBoeWJyaWQgdHlwZS4gQnkgc2ltcGx5IG5vdCBpbnRlcnJ1cHRpbmcgYQordGFzayBhbmQgYnVzeS13YWl0aW5nIGZvciBhIGZldyBjeWNsZXMgaW5zdGVhZCBvZiBpbW1lZGlhdGVseSBzbGVlcGluZywKK3RoZSBwZXJmb3JtYW5jZSBvZiB0aGlzIGxvY2sgaGFzIGJlZW4gc2VlbiB0byBzaWduaWZpY2FudGx5IGltcHJvdmUgYQorbnVtYmVyIG9mIHdvcmtsb2Fkcy4gTm90ZSB0aGF0IHRoaXMgdGVjaG5pcXVlIGlzIGFsc28gdXNlZCBmb3Igcnctc2VtYXBob3Jlcy4KKworU2VtYW50aWNzCistLS0tLS0tLS0KKworVGhlIG11dGV4IHN1YnN5c3RlbSBjaGVja3MgYW5kIGVuZm9yY2VzIHRoZSBmb2xsb3dpbmcgcnVsZXM6CisKKyAgICAtIE9ubHkgb25lIHRhc2sgY2FuIGhvbGQgdGhlIG11dGV4IGF0IGEgdGltZS4KKyAgICAtIE9ubHkgdGhlIG93bmVyIGNhbiB1bmxvY2sgdGhlIG11dGV4LgorICAgIC0gTXVsdGlwbGUgdW5sb2NrcyBhcmUgbm90IHBlcm1pdHRlZC4KKyAgICAtIFJlY3Vyc2l2ZSBsb2NraW5nL3VubG9ja2luZyBpcyBub3QgcGVybWl0dGVkLgorICAgIC0gQSBtdXRleCBtdXN0IG9ubHkgYmUgaW5pdGlhbGl6ZWQgdmlhIHRoZSBBUEkgKHNlZSBiZWxvdykuCisgICAgLSBBIHRhc2sgbWF5IG5vdCBleGl0IHdpdGggYSBtdXRleCBoZWxkLgorICAgIC0gTWVtb3J5IGFyZWFzIHdoZXJlIGhlbGQgbG9ja3MgcmVzaWRlIG11c3Qgbm90IGJlIGZyZWVkLgorICAgIC0gSGVsZCBtdXRleGVzIG11c3Qgbm90IGJlIHJlaW5pdGlhbGl6ZWQuCisgICAgLSBNdXRleGVzIG1heSBub3QgYmUgdXNlZCBpbiBoYXJkd2FyZSBvciBzb2Z0d2FyZSBpbnRlcnJ1cHQKKyAgICAgIGNvbnRleHRzIHN1Y2ggYXMgdGFza2xldHMgYW5kIHRpbWVycy4KKworVGhlc2Ugc2VtYW50aWNzIGFyZSBmdWxseSBlbmZvcmNlZCB3aGVuIENPTkZJRyBERUJVR19NVVRFWEVTIGlzIGVuYWJsZWQuCitJbiBhZGRpdGlvbiwgdGhlIG11dGV4IGRlYnVnZ2luZyBjb2RlIGFsc28gaW1wbGVtZW50cyBhIG51bWJlciBvZiBvdGhlcgorZmVhdHVyZXMgdGhhdCBtYWtlIGxvY2sgZGVidWdnaW5nIGVhc2llciBhbmQgZmFzdGVyOgorCisgICAgLSBVc2VzIHN5bWJvbGljIG5hbWVzIG9mIG11dGV4ZXMsIHdoZW5ldmVyIHRoZXkgYXJlIHByaW50ZWQKKyAgICAgIGluIGRlYnVnIG91dHB1dC4KKyAgICAtIFBvaW50LW9mLWFjcXVpcmUgdHJhY2tpbmcsIHN5bWJvbGljIGxvb2t1cCBvZiBmdW5jdGlvbiBuYW1lcywKKyAgICAgIGxpc3Qgb2YgYWxsIGxvY2tzIGhlbGQgaW4gdGhlIHN5c3RlbSwgcHJpbnRvdXQgb2YgdGhlbS4KKyAgICAtIE93bmVyIHRyYWNraW5nLgorICAgIC0gRGV0ZWN0cyBzZWxmLXJlY3Vyc2luZyBsb2NrcyBhbmQgcHJpbnRzIG91dCBhbGwgcmVsZXZhbnQgaW5mby4KKyAgICAtIERldGVjdHMgbXVsdGktdGFzayBjaXJjdWxhciBkZWFkbG9ja3MgYW5kIHByaW50cyBvdXQgYWxsIGFmZmVjdGVkCisgICAgICBsb2NrcyBhbmQgdGFza3MgKGFuZCBvbmx5IHRob3NlIHRhc2tzKS4KKworCitJbnRlcmZhY2VzCistLS0tLS0tLS0tCitTdGF0aWNhbGx5IGRlZmluZSB0aGUgbXV0ZXg6CisgICBERUZJTkVfTVVURVgobmFtZSk7CisKK0R5bmFtaWNhbGx5IGluaXRpYWxpemUgdGhlIG11dGV4OgorICAgbXV0ZXhfaW5pdChtdXRleCk7CisKK0FjcXVpcmUgdGhlIG11dGV4LCB1bmludGVycnVwdGlibGU6CisgICB2b2lkIG11dGV4X2xvY2soc3RydWN0IG11dGV4ICpsb2NrKTsKKyAgIHZvaWQgbXV0ZXhfbG9ja19uZXN0ZWQoc3RydWN0IG11dGV4ICpsb2NrLCB1bnNpZ25lZCBpbnQgc3ViY2xhc3MpOworICAgaW50ICBtdXRleF90cnlsb2NrKHN0cnVjdCBtdXRleCAqbG9jayk7CisKK0FjcXVpcmUgdGhlIG11dGV4LCBpbnRlcnJ1cHRpYmxlOgorICAgaW50IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZV9uZXN0ZWQoc3RydWN0IG11dGV4ICpsb2NrLAorCQkJCSAgICAgICB1bnNpZ25lZCBpbnQgc3ViY2xhc3MpOworICAgaW50IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZShzdHJ1Y3QgbXV0ZXggKmxvY2spOworCitBY3F1aXJlIHRoZSBtdXRleCwgaW50ZXJydXB0aWJsZSwgaWYgZGVjIHRvIDA6CisgICBpbnQgYXRvbWljX2RlY19hbmRfbXV0ZXhfbG9jayhhdG9taWNfdCAqY250LCBzdHJ1Y3QgbXV0ZXggKmxvY2spOworCitVbmxvY2sgdGhlIG11dGV4OgorICAgdm9pZCBtdXRleF91bmxvY2soc3RydWN0IG11dGV4ICpsb2NrKTsKKworVGVzdCBpZiB0aGUgbXV0ZXggaXMgdGFrZW46CisgICBpbnQgbXV0ZXhfaXNfbG9ja2VkKHN0cnVjdCBtdXRleCAqbG9jayk7CisKK0Rpc2FkdmFudGFnZXMKKy0tLS0tLS0tLS0tLS0KKworVW5saWtlIGl0cyBvcmlnaW5hbCBkZXNpZ24gYW5kIHB1cnBvc2UsICdzdHJ1Y3QgbXV0ZXgnIGlzIGxhcmdlciB0aGFuCittb3N0IGxvY2tzIGluIHRoZSBrZXJuZWwuIEUuZzogb24geDg2LTY0IGl0IGlzIDQwIGJ5dGVzLCBhbG1vc3QgdHdpY2UKK2FzIGxhcmdlIGFzICdzdHJ1Y3Qgc2VtYXBob3JlJyAoMjQgYnl0ZXMpIGFuZCB0aWVkLCBhbG9uZyB3aXRoIHJ3c2VtcywKK2ZvciB0aGUgbGFyZ2VzdCBsb2NrIGluIHRoZSBrZXJuZWwuIExhcmdlciBzdHJ1Y3R1cmUgc2l6ZXMgbWVhbiBtb3JlCitDUFUgY2FjaGUgYW5kIG1lbW9yeSBmb290cHJpbnQuCisKK1doZW4gdG8gdXNlIG11dGV4ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVW5sZXNzIHRoZSBzdHJpY3Qgc2VtYW50aWNzIG9mIG11dGV4ZXMgYXJlIHVuc3VpdGFibGUgYW5kL29yIHRoZSBjcml0aWNhbAorcmVnaW9uIHByZXZlbnRzIHRoZSBsb2NrIGZyb20gYmVpbmcgc2hhcmVkLCBhbHdheXMgcHJlZmVyIHRoZW0gdG8gYW55IG90aGVyCitsb2NraW5nIHByaW1pdGl2ZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbG9ja2luZy9ydC1tdXRleC1kZXNpZ24udHh0IGIvRG9jdW1lbnRhdGlvbi9sb2NraW5nL3J0LW11dGV4LWRlc2lnbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY2NjA3MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbG9ja2luZy9ydC1tdXRleC1kZXNpZ24udHh0CkBAIC0wLDAgKzEsNzgxIEBACisjCisjIENvcHlyaWdodCAoYykgMjAwNiBTdGV2ZW4gUm9zdGVkdAorIyBMaWNlbnNlZCB1bmRlciB0aGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLCBWZXJzaW9uIDEuMgorIworCitSVC1tdXRleCBpbXBsZW1lbnRhdGlvbiBkZXNpZ24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGRvY3VtZW50IHRyaWVzIHRvIGRlc2NyaWJlIHRoZSBkZXNpZ24gb2YgdGhlIHJ0bXV0ZXguYyBpbXBsZW1lbnRhdGlvbi4KK0l0IGRvZXNuJ3QgZGVzY3JpYmUgdGhlIHJlYXNvbnMgd2h5IHJ0bXV0ZXguYyBleGlzdHMuIEZvciB0aGF0IHBsZWFzZSBzZWUKK0RvY3VtZW50YXRpb24vcnQtbXV0ZXgudHh0LiAgQWx0aG91Z2ggdGhpcyBkb2N1bWVudCBkb2VzIGV4cGxhaW4gcHJvYmxlbXMKK3RoYXQgaGFwcGVuIHdpdGhvdXQgdGhpcyBjb2RlLCBidXQgdGhhdCBpcyBpbiB0aGUgY29uY2VwdCB0byB1bmRlcnN0YW5kCit3aGF0IHRoZSBjb2RlIGFjdHVhbGx5IGlzIGRvaW5nLgorCitUaGUgZ29hbCBvZiB0aGlzIGRvY3VtZW50IGlzIHRvIGhlbHAgb3RoZXJzIHVuZGVyc3RhbmQgdGhlIHByaW9yaXR5Citpbmhlcml0YW5jZSAoUEkpIGFsZ29yaXRobSB0aGF0IGlzIHVzZWQsIGFzIHdlbGwgYXMgcmVhc29ucyBmb3IgdGhlCitkZWNpc2lvbnMgdGhhdCB3ZXJlIG1hZGUgdG8gaW1wbGVtZW50IFBJIGluIHRoZSBtYW5uZXIgdGhhdCB3YXMgZG9uZS4KKworCitVbmJvdW5kZWQgUHJpb3JpdHkgSW52ZXJzaW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1ByaW9yaXR5IGludmVyc2lvbiBpcyB3aGVuIGEgbG93ZXIgcHJpb3JpdHkgcHJvY2VzcyBleGVjdXRlcyB3aGlsZSBhIGhpZ2hlcgorcHJpb3JpdHkgcHJvY2VzcyB3YW50cyB0byBydW4uICBUaGlzIGhhcHBlbnMgZm9yIHNldmVyYWwgcmVhc29ucywgYW5kCittb3N0IG9mIHRoZSB0aW1lIGl0IGNhbid0IGJlIGhlbHBlZC4gIEFueXRpbWUgYSBoaWdoIHByaW9yaXR5IHByb2Nlc3Mgd2FudHMKK3RvIHVzZSBhIHJlc291cmNlIHRoYXQgYSBsb3dlciBwcmlvcml0eSBwcm9jZXNzIGhhcyAoYSBtdXRleCBmb3IgZXhhbXBsZSksCit0aGUgaGlnaCBwcmlvcml0eSBwcm9jZXNzIG11c3Qgd2FpdCB1bnRpbCB0aGUgbG93ZXIgcHJpb3JpdHkgcHJvY2VzcyBpcyBkb25lCit3aXRoIHRoZSByZXNvdXJjZS4gIFRoaXMgaXMgYSBwcmlvcml0eSBpbnZlcnNpb24uICBXaGF0IHdlIHdhbnQgdG8gcHJldmVudAoraXMgc29tZXRoaW5nIGNhbGxlZCB1bmJvdW5kZWQgcHJpb3JpdHkgaW52ZXJzaW9uLiAgVGhhdCBpcyB3aGVuIHRoZSBoaWdoCitwcmlvcml0eSBwcm9jZXNzIGlzIHByZXZlbnRlZCBmcm9tIHJ1bm5pbmcgYnkgYSBsb3dlciBwcmlvcml0eSBwcm9jZXNzIGZvcgorYW4gdW5kZXRlcm1pbmVkIGFtb3VudCBvZiB0aW1lLgorCitUaGUgY2xhc3NpYyBleGFtcGxlIG9mIHVuYm91bmRlZCBwcmlvcml0eSBpbnZlcnNpb24gaXMgd2hlcmUgeW91IGhhdmUgdGhyZWUKK3Byb2Nlc3NlcywgbGV0J3MgY2FsbCB0aGVtIHByb2Nlc3NlcyBBLCBCLCBhbmQgQywgd2hlcmUgQSBpcyB0aGUgaGlnaGVzdAorcHJpb3JpdHkgcHJvY2VzcywgQyBpcyB0aGUgbG93ZXN0LCBhbmQgQiBpcyBpbiBiZXR3ZWVuLiBBIHRyaWVzIHRvIGdyYWIgYSBsb2NrCit0aGF0IEMgb3ducyBhbmQgbXVzdCB3YWl0IGFuZCBsZXRzIEMgcnVuIHRvIHJlbGVhc2UgdGhlIGxvY2suIEJ1dCBpbiB0aGUKK21lYW50aW1lLCBCIGV4ZWN1dGVzLCBhbmQgc2luY2UgQiBpcyBvZiBhIGhpZ2hlciBwcmlvcml0eSB0aGFuIEMsIGl0IHByZWVtcHRzIEMsCitidXQgYnkgZG9pbmcgc28sIGl0IGlzIGluIGZhY3QgcHJlZW1wdGluZyBBIHdoaWNoIGlzIGEgaGlnaGVyIHByaW9yaXR5IHByb2Nlc3MuCitOb3cgdGhlcmUncyBubyB3YXkgb2Yga25vd2luZyBob3cgbG9uZyBBIHdpbGwgYmUgc2xlZXBpbmcgd2FpdGluZyBmb3IgQwordG8gcmVsZWFzZSB0aGUgbG9jaywgYmVjYXVzZSBmb3IgYWxsIHdlIGtub3csIEIgaXMgYSBDUFUgaG9nIGFuZCB3aWxsCituZXZlciBnaXZlIEMgYSBjaGFuY2UgdG8gcmVsZWFzZSB0aGUgbG9jay4gIFRoaXMgaXMgY2FsbGVkIHVuYm91bmRlZCBwcmlvcml0eQoraW52ZXJzaW9uLgorCitIZXJlJ3MgYSBsaXR0bGUgQVNDSUkgYXJ0IHRvIHNob3cgdGhlIHByb2JsZW0uCisKKyAgIGdyYWIgbG9jayBMMSAob3duZWQgYnkgQykKKyAgICAgfAorQSAtLS0rCisgICAgICAgIEMgcHJlZW1wdGVkIGJ5IEIKKyAgICAgICAgICB8CitDICAgICstLS0tKworCitCICAgICAgICAgKy0tLS0tLS0tPgorICAgICAgICAgICAgICAgIEIgbm93IGtlZXBzIEEgZnJvbSBydW5uaW5nLgorCisKK1ByaW9yaXR5IEluaGVyaXRhbmNlIChQSSkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgYXJlIHNldmVyYWwgd2F5cyB0byBzb2x2ZSB0aGlzIGlzc3VlLCBidXQgb3RoZXIgd2F5cyBhcmUgb3V0IG9mIHNjb3BlCitmb3IgdGhpcyBkb2N1bWVudC4gIEhlcmUgd2Ugb25seSBkaXNjdXNzIFBJLgorCitQSSBpcyB3aGVyZSBhIHByb2Nlc3MgaW5oZXJpdHMgdGhlIHByaW9yaXR5IG9mIGFub3RoZXIgcHJvY2VzcyBpZiB0aGUgb3RoZXIKK3Byb2Nlc3MgYmxvY2tzIG9uIGEgbG9jayBvd25lZCBieSB0aGUgY3VycmVudCBwcm9jZXNzLiAgVG8gbWFrZSB0aGlzIGVhc2llcgordG8gdW5kZXJzdGFuZCwgbGV0J3MgdXNlIHRoZSBwcmV2aW91cyBleGFtcGxlLCB3aXRoIHByb2Nlc3NlcyBBLCBCLCBhbmQgQyBhZ2Fpbi4KKworVGhpcyB0aW1lLCB3aGVuIEEgYmxvY2tzIG9uIHRoZSBsb2NrIG93bmVkIGJ5IEMsIEMgd291bGQgaW5oZXJpdCB0aGUgcHJpb3JpdHkKK29mIEEuICBTbyBub3cgaWYgQiBiZWNvbWVzIHJ1bm5hYmxlLCBpdCB3b3VsZCBub3QgcHJlZW1wdCBDLCBzaW5jZSBDIG5vdyBoYXMKK3RoZSBoaWdoIHByaW9yaXR5IG9mIEEuICBBcyBzb29uIGFzIEMgcmVsZWFzZXMgdGhlIGxvY2ssIGl0IGxvc2VzIGl0cworaW5oZXJpdGVkIHByaW9yaXR5LCBhbmQgQSB0aGVuIGNhbiBjb250aW51ZSB3aXRoIHRoZSByZXNvdXJjZSB0aGF0IEMgaGFkLgorCitUZXJtaW5vbG9neQorLS0tLS0tLS0tLS0KKworSGVyZSBJIGV4cGxhaW4gc29tZSB0ZXJtaW5vbG9neSB0aGF0IGlzIHVzZWQgaW4gdGhpcyBkb2N1bWVudCB0byBoZWxwIGRlc2NyaWJlCit0aGUgZGVzaWduIHRoYXQgaXMgdXNlZCB0byBpbXBsZW1lbnQgUEkuCisKK1BJIGNoYWluIC0gVGhlIFBJIGNoYWluIGlzIGFuIG9yZGVyZWQgc2VyaWVzIG9mIGxvY2tzIGFuZCBwcm9jZXNzZXMgdGhhdCBjYXVzZQorICAgICAgICAgICBwcm9jZXNzZXMgdG8gaW5oZXJpdCBwcmlvcml0aWVzIGZyb20gYSBwcmV2aW91cyBwcm9jZXNzIHRoYXQgaXMKKyAgICAgICAgICAgYmxvY2tlZCBvbiBvbmUgb2YgaXRzIGxvY2tzLiAgVGhpcyBpcyBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwKKyAgICAgICAgICAgbGF0ZXIgaW4gdGhpcyBkb2N1bWVudC4KKworbXV0ZXggICAgLSBJbiB0aGlzIGRvY3VtZW50LCB0byBkaWZmZXJlbnRpYXRlIGZyb20gbG9ja3MgdGhhdCBpbXBsZW1lbnQKKyAgICAgICAgICAgUEkgYW5kIHNwaW4gbG9ja3MgdGhhdCBhcmUgdXNlZCBpbiB0aGUgUEkgY29kZSwgZnJvbSBub3cgb24KKyAgICAgICAgICAgdGhlIFBJIGxvY2tzIHdpbGwgYmUgY2FsbGVkIGEgbXV0ZXguCisKK2xvY2sgICAgIC0gSW4gdGhpcyBkb2N1bWVudCBmcm9tIG5vdyBvbiwgSSB3aWxsIHVzZSB0aGUgdGVybSBsb2NrIHdoZW4KKyAgICAgICAgICAgcmVmZXJyaW5nIHRvIHNwaW4gbG9ja3MgdGhhdCBhcmUgdXNlZCB0byBwcm90ZWN0IHBhcnRzIG9mIHRoZSBQSQorICAgICAgICAgICBhbGdvcml0aG0uICBUaGVzZSBsb2NrcyBkaXNhYmxlIHByZWVtcHRpb24gZm9yIFVQICh3aGVuCisgICAgICAgICAgIENPTkZJR19QUkVFTVBUIGlzIGVuYWJsZWQpIGFuZCBvbiBTTVAgcHJldmVudHMgbXVsdGlwbGUgQ1BVcyBmcm9tCisgICAgICAgICAgIGVudGVyaW5nIGNyaXRpY2FsIHNlY3Rpb25zIHNpbXVsdGFuZW91c2x5LgorCitzcGluIGxvY2sgLSBTYW1lIGFzIGxvY2sgYWJvdmUuCisKK3dhaXRlciAgIC0gQSB3YWl0ZXIgaXMgYSBzdHJ1Y3QgdGhhdCBpcyBzdG9yZWQgb24gdGhlIHN0YWNrIG9mIGEgYmxvY2tlZAorICAgICAgICAgICBwcm9jZXNzLiAgU2luY2UgdGhlIHNjb3BlIG9mIHRoZSB3YWl0ZXIgaXMgd2l0aGluIHRoZSBjb2RlIGZvcgorICAgICAgICAgICBhIHByb2Nlc3MgYmVpbmcgYmxvY2tlZCBvbiB0aGUgbXV0ZXgsIGl0IGlzIGZpbmUgdG8gYWxsb2NhdGUKKyAgICAgICAgICAgdGhlIHdhaXRlciBvbiB0aGUgcHJvY2VzcydzIHN0YWNrIChsb2NhbCB2YXJpYWJsZSkuICBUaGlzCisgICAgICAgICAgIHN0cnVjdHVyZSBob2xkcyBhIHBvaW50ZXIgdG8gdGhlIHRhc2ssIGFzIHdlbGwgYXMgdGhlIG11dGV4IHRoYXQKKyAgICAgICAgICAgdGhlIHRhc2sgaXMgYmxvY2tlZCBvbi4gIEl0IGFsc28gaGFzIHRoZSBwbGlzdCBub2RlIHN0cnVjdHVyZXMgdG8KKyAgICAgICAgICAgcGxhY2UgdGhlIHRhc2sgaW4gdGhlIHdhaXRlcl9saXN0IG9mIGEgbXV0ZXggYXMgd2VsbCBhcyB0aGUKKyAgICAgICAgICAgcGlfbGlzdCBvZiBhIG11dGV4IG93bmVyIHRhc2sgKGRlc2NyaWJlZCBiZWxvdykuCisKKyAgICAgICAgICAgd2FpdGVyIGlzIHNvbWV0aW1lcyB1c2VkIGluIHJlZmVyZW5jZSB0byB0aGUgdGFzayB0aGF0IGlzIHdhaXRpbmcKKyAgICAgICAgICAgb24gYSBtdXRleC4gVGhpcyBpcyB0aGUgc2FtZSBhcyB3YWl0ZXItPnRhc2suCisKK3dhaXRlcnMgIC0gQSBsaXN0IG9mIHByb2Nlc3NlcyB0aGF0IGFyZSBibG9ja2VkIG9uIGEgbXV0ZXguCisKK3RvcCB3YWl0ZXIgLSBUaGUgaGlnaGVzdCBwcmlvcml0eSBwcm9jZXNzIHdhaXRpbmcgb24gYSBzcGVjaWZpYyBtdXRleC4KKwordG9wIHBpIHdhaXRlciAtIFRoZSBoaWdoZXN0IHByaW9yaXR5IHByb2Nlc3Mgd2FpdGluZyBvbiBvbmUgb2YgdGhlIG11dGV4ZXMKKyAgICAgICAgICAgICAgICB0aGF0IGEgc3BlY2lmaWMgcHJvY2VzcyBvd25zLgorCitOb3RlOiAgdGFzayBhbmQgcHJvY2VzcyBhcmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgaW4gdGhpcyBkb2N1bWVudCwgbW9zdGx5IHRvCisgICAgICAgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHR3byBwcm9jZXNzZXMgdGhhdCBhcmUgYmVpbmcgZGVzY3JpYmVkIHRvZ2V0aGVyLgorCisKK1BJIGNoYWluCistLS0tLS0tLQorCitUaGUgUEkgY2hhaW4gaXMgYSBsaXN0IG9mIHByb2Nlc3NlcyBhbmQgbXV0ZXhlcyB0aGF0IG1heSBjYXVzZSBwcmlvcml0eQoraW5oZXJpdGFuY2UgdG8gdGFrZSBwbGFjZS4gIE11bHRpcGxlIGNoYWlucyBtYXkgY29udmVyZ2UsIGJ1dCBhIGNoYWluCit3b3VsZCBuZXZlciBkaXZlcmdlLCBzaW5jZSBhIHByb2Nlc3MgY2FuJ3QgYmUgYmxvY2tlZCBvbiBtb3JlIHRoYW4gb25lCittdXRleCBhdCBhIHRpbWUuCisKK0V4YW1wbGU6CisKKyAgIFByb2Nlc3M6ICBBLCBCLCBDLCBELCBFCisgICBNdXRleGVzOiAgTDEsIEwyLCBMMywgTDQKKworICAgQSBvd25zOiBMMQorICAgICAgICAgICBCIGJsb2NrZWQgb24gTDEKKyAgICAgICAgICAgQiBvd25zIEwyCisgICAgICAgICAgICAgICAgICBDIGJsb2NrZWQgb24gTDIKKyAgICAgICAgICAgICAgICAgIEMgb3ducyBMMworICAgICAgICAgICAgICAgICAgICAgICAgIEQgYmxvY2tlZCBvbiBMMworICAgICAgICAgICAgICAgICAgICAgICAgIEQgb3ducyBMNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFIGJsb2NrZWQgb24gTDQKKworVGhlIGNoYWluIHdvdWxkIGJlOgorCisgICBFLT5MNC0+RC0+TDMtPkMtPkwyLT5CLT5MMS0+QQorCitUbyBzaG93IHdoZXJlIHR3byBjaGFpbnMgbWVyZ2UsIHdlIGNvdWxkIGFkZCBhbm90aGVyIHByb2Nlc3MgRiBhbmQKK2Fub3RoZXIgbXV0ZXggTDUgd2hlcmUgQiBvd25zIEw1IGFuZCBGIGlzIGJsb2NrZWQgb24gbXV0ZXggTDUuCisKK1RoZSBjaGFpbiBmb3IgRiB3b3VsZCBiZToKKworICAgRi0+TDUtPkItPkwxLT5BCisKK1NpbmNlIGEgcHJvY2VzcyBtYXkgb3duIG1vcmUgdGhhbiBvbmUgbXV0ZXgsIGJ1dCBuZXZlciBiZSBibG9ja2VkIG9uIG1vcmUgdGhhbgorb25lLCB0aGUgY2hhaW5zIG1lcmdlLgorCitIZXJlIHdlIHNob3cgYm90aCBjaGFpbnM6CisKKyAgIEUtPkw0LT5ELT5MMy0+Qy0+TDItKworICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICstPkItPkwxLT5BCisgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgRi0+TDUtKworCitGb3IgUEkgdG8gd29yaywgdGhlIHByb2Nlc3NlcyBhdCB0aGUgcmlnaHQgZW5kIG9mIHRoZXNlIGNoYWlucyAob3Igd2UgbWF5CithbHNvIGNhbGwgaXQgdGhlIFRvcCBvZiB0aGUgY2hhaW4pIG11c3QgYmUgZXF1YWwgdG8gb3IgaGlnaGVyIGluIHByaW9yaXR5Cit0aGFuIHRoZSBwcm9jZXNzZXMgdG8gdGhlIGxlZnQgb3IgYmVsb3cgaW4gdGhlIGNoYWluLgorCitBbHNvIHNpbmNlIGEgbXV0ZXggbWF5IGhhdmUgbW9yZSB0aGFuIG9uZSBwcm9jZXNzIGJsb2NrZWQgb24gaXQsIHdlIGNhbgoraGF2ZSBtdWx0aXBsZSBjaGFpbnMgbWVyZ2UgYXQgbXV0ZXhlcy4gIElmIHdlIGFkZCBhbm90aGVyIHByb2Nlc3MgRyB0aGF0IGlzCitibG9ja2VkIG9uIG11dGV4IEwyOgorCisgIEctPkwyLT5CLT5MMS0+QQorCitBbmQgb25jZSBhZ2FpbiwgdG8gc2hvdyBob3cgdGhpcyBjYW4gZ3JvdyBJIHdpbGwgc2hvdyB0aGUgbWVyZ2luZyBjaGFpbnMKK2FnYWluLgorCisgICBFLT5MNC0+RC0+TDMtPkMtKworICAgICAgICAgICAgICAgICAgICstPkwyLSsKKyAgICAgICAgICAgICAgICAgICB8ICAgICB8CisgICAgICAgICAgICAgICAgIEctKyAgICAgKy0+Qi0+TDEtPkEKKyAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgRi0+TDUtKworCisKK1BsaXN0CistLS0tLQorCitCZWZvcmUgSSBnbyBmdXJ0aGVyIGFuZCB0YWxrIGFib3V0IGhvdyB0aGUgUEkgY2hhaW4gaXMgc3RvcmVkIHRocm91Z2ggbGlzdHMKK29uIGJvdGggbXV0ZXhlcyBhbmQgcHJvY2Vzc2VzLCBJJ2xsIGV4cGxhaW4gdGhlIHBsaXN0LiAgVGhpcyBpcyBzaW1pbGFyIHRvCit0aGUgc3RydWN0IGxpc3RfaGVhZCBmdW5jdGlvbmFsaXR5IHRoYXQgaXMgYWxyZWFkeSBpbiB0aGUga2VybmVsLgorVGhlIGltcGxlbWVudGF0aW9uIG9mIHBsaXN0IGlzIG91dCBvZiBzY29wZSBmb3IgdGhpcyBkb2N1bWVudCwgYnV0IGl0IGlzCit2ZXJ5IGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHdoYXQgaXQgZG9lcy4KKworVGhlcmUgYXJlIGEgZmV3IGRpZmZlcmVuY2VzIGJldHdlZW4gcGxpc3QgYW5kIGxpc3QsIHRoZSBtb3N0IGltcG9ydGFudCBvbmUKK2JlaW5nIHRoYXQgcGxpc3QgaXMgYSBwcmlvcml0eSBzb3J0ZWQgbGlua2VkIGxpc3QuICBUaGlzIG1lYW5zIHRoYXQgdGhlCitwcmlvcml0aWVzIG9mIHRoZSBwbGlzdCBhcmUgc29ydGVkLCBzdWNoIHRoYXQgaXQgdGFrZXMgTygxKSB0byByZXRyaWV2ZSB0aGUKK2hpZ2hlc3QgcHJpb3JpdHkgaXRlbSBpbiB0aGUgbGlzdC4gIE9idmlvdXNseSB0aGlzIGlzIHVzZWZ1bCB0byBzdG9yZSBwcm9jZXNzZXMKK2Jhc2VkIG9uIHRoZWlyIHByaW9yaXRpZXMuCisKK0Fub3RoZXIgZGlmZmVyZW5jZSwgd2hpY2ggaXMgaW1wb3J0YW50IGZvciBpbXBsZW1lbnRhdGlvbiwgaXMgdGhhdCwgdW5saWtlCitsaXN0LCB0aGUgaGVhZCBvZiB0aGUgbGlzdCBpcyBhIGRpZmZlcmVudCBlbGVtZW50IHRoYW4gdGhlIG5vZGVzIG9mIGEgbGlzdC4KK1NvIHRoZSBoZWFkIG9mIHRoZSBsaXN0IGlzIGRlY2xhcmVkIGFzIHN0cnVjdCBwbGlzdF9oZWFkIGFuZCBub2RlcyB0aGF0IHdpbGwKK2JlIGFkZGVkIHRvIHRoZSBsaXN0IGFyZSBkZWNsYXJlZCBhcyBzdHJ1Y3QgcGxpc3Rfbm9kZS4KKworCitNdXRleCBXYWl0ZXIgTGlzdAorLS0tLS0tLS0tLS0tLS0tLS0KKworRXZlcnkgbXV0ZXgga2VlcHMgdHJhY2sgb2YgYWxsIHRoZSB3YWl0ZXJzIHRoYXQgYXJlIGJsb2NrZWQgb24gaXRzZWxmLiBUaGUgbXV0ZXgKK2hhcyBhIHBsaXN0IHRvIHN0b3JlIHRoZXNlIHdhaXRlcnMgYnkgcHJpb3JpdHkuICBUaGlzIGxpc3QgaXMgcHJvdGVjdGVkIGJ5CithIHNwaW4gbG9jayB0aGF0IGlzIGxvY2F0ZWQgaW4gdGhlIHN0cnVjdCBvZiB0aGUgbXV0ZXguIFRoaXMgbG9jayBpcyBjYWxsZWQKK3dhaXRfbG9jay4gIFNpbmNlIHRoZSBtb2RpZmljYXRpb24gb2YgdGhlIHdhaXRlciBsaXN0IGlzIG5ldmVyIGRvbmUgaW4KK2ludGVycnVwdCBjb250ZXh0LCB0aGUgd2FpdF9sb2NrIGNhbiBiZSB0YWtlbiB3aXRob3V0IGRpc2FibGluZyBpbnRlcnJ1cHRzLgorCisKK1Rhc2sgUEkgTGlzdAorLS0tLS0tLS0tLS0tCisKK1RvIGtlZXAgdHJhY2sgb2YgdGhlIFBJIGNoYWlucywgZWFjaCBwcm9jZXNzIGhhcyBpdHMgb3duIFBJIGxpc3QuICBUaGlzIGlzCithIGxpc3Qgb2YgYWxsIHRvcCB3YWl0ZXJzIG9mIHRoZSBtdXRleGVzIHRoYXQgYXJlIG93bmVkIGJ5IHRoZSBwcm9jZXNzLgorTm90ZSB0aGF0IHRoaXMgbGlzdCBvbmx5IGhvbGRzIHRoZSB0b3Agd2FpdGVycyBhbmQgbm90IGFsbCB3YWl0ZXJzIHRoYXQgYXJlCitibG9ja2VkIG9uIG11dGV4ZXMgb3duZWQgYnkgdGhlIHByb2Nlc3MuCisKK1RoZSB0b3Agb2YgdGhlIHRhc2sncyBQSSBsaXN0IGlzIGFsd2F5cyB0aGUgaGlnaGVzdCBwcmlvcml0eSB0YXNrIHRoYXQKK2lzIHdhaXRpbmcgb24gYSBtdXRleCB0aGF0IGlzIG93bmVkIGJ5IHRoZSB0YXNrLiAgU28gaWYgdGhlIHRhc2sgaGFzCitpbmhlcml0ZWQgYSBwcmlvcml0eSwgaXQgd2lsbCBhbHdheXMgYmUgdGhlIHByaW9yaXR5IG9mIHRoZSB0YXNrIHRoYXQgaXMKK2F0IHRoZSB0b3Agb2YgdGhpcyBsaXN0LgorCitUaGlzIGxpc3QgaXMgc3RvcmVkIGluIHRoZSB0YXNrIHN0cnVjdHVyZSBvZiBhIHByb2Nlc3MgYXMgYSBwbGlzdCBjYWxsZWQKK3BpX2xpc3QuICBUaGlzIGxpc3QgaXMgcHJvdGVjdGVkIGJ5IGEgc3BpbiBsb2NrIGFsc28gaW4gdGhlIHRhc2sgc3RydWN0dXJlLAorY2FsbGVkIHBpX2xvY2suICBUaGlzIGxvY2sgbWF5IGFsc28gYmUgdGFrZW4gaW4gaW50ZXJydXB0IGNvbnRleHQsIHNvIHdoZW4KK2xvY2tpbmcgdGhlIHBpX2xvY2ssIGludGVycnVwdHMgbXVzdCBiZSBkaXNhYmxlZC4KKworCitEZXB0aCBvZiB0aGUgUEkgQ2hhaW4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbWF4aW11bSBkZXB0aCBvZiB0aGUgUEkgY2hhaW4gaXMgbm90IGR5bmFtaWMsIGFuZCBjb3VsZCBhY3R1YWxseSBiZQorZGVmaW5lZC4gIEJ1dCBpcyB2ZXJ5IGNvbXBsZXggdG8gZmlndXJlIGl0IG91dCwgc2luY2UgaXQgZGVwZW5kcyBvbiBhbGwKK3RoZSBuZXN0aW5nIG9mIG11dGV4ZXMuICBMZXQncyBsb29rIGF0IHRoZSBleGFtcGxlIHdoZXJlIHdlIGhhdmUgMyBtdXRleGVzLAorTDEsIEwyLCBhbmQgTDMsIGFuZCBmb3VyIHNlcGFyYXRlIGZ1bmN0aW9ucyBmdW5jMSwgZnVuYzIsIGZ1bmMzIGFuZCBmdW5jNC4KK1RoZSBmb2xsb3dpbmcgc2hvd3MgYSBsb2NraW5nIG9yZGVyIG9mIEwxLT5MMi0+TDMsIGJ1dCBtYXkgbm90IGFjdHVhbGx5CitiZSBkaXJlY3RseSBuZXN0ZWQgdGhhdCB3YXkuCisKK3ZvaWQgZnVuYzEodm9pZCkKK3sKKwltdXRleF9sb2NrKEwxKTsKKworCS8qIGRvIGFueXRoaW5nICovCisKKwltdXRleF91bmxvY2soTDEpOworfQorCit2b2lkIGZ1bmMyKHZvaWQpCit7CisJbXV0ZXhfbG9jayhMMSk7CisJbXV0ZXhfbG9jayhMMik7CisKKwkvKiBkbyBzb21ldGhpbmcgKi8KKworCW11dGV4X3VubG9jayhMMik7CisJbXV0ZXhfdW5sb2NrKEwxKTsKK30KKwordm9pZCBmdW5jMyh2b2lkKQoreworCW11dGV4X2xvY2soTDIpOworCW11dGV4X2xvY2soTDMpOworCisJLyogZG8gc29tZXRoaW5nIGVsc2UgKi8KKworCW11dGV4X3VubG9jayhMMyk7CisJbXV0ZXhfdW5sb2NrKEwyKTsKK30KKwordm9pZCBmdW5jNCh2b2lkKQoreworCW11dGV4X2xvY2soTDMpOworCisJLyogZG8gc29tZXRoaW5nIGFnYWluICovCisKKwltdXRleF91bmxvY2soTDMpOworfQorCitOb3cgd2UgYWRkIDQgcHJvY2Vzc2VzIHRoYXQgcnVuIGVhY2ggb2YgdGhlc2UgZnVuY3Rpb25zIHNlcGFyYXRlbHkuCitQcm9jZXNzZXMgQSwgQiwgQywgYW5kIEQgd2hpY2ggcnVuIGZ1bmN0aW9ucyBmdW5jMSwgZnVuYzIsIGZ1bmMzIGFuZCBmdW5jNAorcmVzcGVjdGl2ZWx5LCBhbmQgc3VjaCB0aGF0IEQgcnVucyBmaXJzdCBhbmQgQSBsYXN0LiAgV2l0aCBEIGJlaW5nIHByZWVtcHRlZAoraW4gZnVuYzQgaW4gdGhlICJkbyBzb21ldGhpbmcgYWdhaW4iIGFyZWEsIHdlIGhhdmUgYSBsb2NraW5nIHRoYXQgZm9sbG93czoKKworRCBvd25zIEwzCisgICAgICAgQyBibG9ja2VkIG9uIEwzCisgICAgICAgQyBvd25zIEwyCisgICAgICAgICAgICAgIEIgYmxvY2tlZCBvbiBMMgorICAgICAgICAgICAgICBCIG93bnMgTDEKKyAgICAgICAgICAgICAgICAgICAgIEEgYmxvY2tlZCBvbiBMMQorCitBbmQgdGh1cyB3ZSBoYXZlIHRoZSBjaGFpbiBBLT5MMS0+Qi0+TDItPkMtPkwzLT5ELgorCitUaGlzIGdpdmVzIHVzIGEgUEkgZGVwdGggb2YgNCAoZm91ciBwcm9jZXNzZXMpLCBidXQgbG9va2luZyBhdCBhbnkgb2YgdGhlCitmdW5jdGlvbnMgaW5kaXZpZHVhbGx5LCBpdCBzZWVtcyBhcyB0aG91Z2ggdGhleSBvbmx5IGhhdmUgYXQgbW9zdCBhIGxvY2tpbmcKK2RlcHRoIG9mIHR3by4gIFNvLCBhbHRob3VnaCB0aGUgbG9ja2luZyBkZXB0aCBpcyBkZWZpbmVkIGF0IGNvbXBpbGUgdGltZSwKK2l0IHN0aWxsIGlzIHZlcnkgZGlmZmljdWx0IHRvIGZpbmQgdGhlIHBvc3NpYmlsaXRpZXMgb2YgdGhhdCBkZXB0aC4KKworTm93IHNpbmNlIG11dGV4ZXMgY2FuIGJlIGRlZmluZWQgYnkgdXNlci1sYW5kIGFwcGxpY2F0aW9ucywgd2UgZG9uJ3Qgd2FudCBhIERPUwordHlwZSBvZiBhcHBsaWNhdGlvbiB0aGF0IG5lc3RzIGxhcmdlIGFtb3VudHMgb2YgbXV0ZXhlcyB0byBjcmVhdGUgYSBsYXJnZQorUEkgY2hhaW4sIGFuZCBoYXZlIHRoZSBjb2RlIGhvbGRpbmcgc3BpbiBsb2NrcyB3aGlsZSBsb29raW5nIGF0IGEgbGFyZ2UKK2Ftb3VudCBvZiBkYXRhLiAgU28gdG8gcHJldmVudCB0aGlzLCB0aGUgaW1wbGVtZW50YXRpb24gbm90IG9ubHkgaW1wbGVtZW50cworYSBtYXhpbXVtIGxvY2sgZGVwdGgsIGJ1dCBhbHNvIG9ubHkgaG9sZHMgYXQgbW9zdCB0d28gZGlmZmVyZW50IGxvY2tzIGF0IGEKK3RpbWUsIGFzIGl0IHdhbGtzIHRoZSBQSSBjaGFpbi4gIE1vcmUgYWJvdXQgdGhpcyBiZWxvdy4KKworCitNdXRleCBvd25lciBhbmQgZmxhZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbXV0ZXggc3RydWN0dXJlIGNvbnRhaW5zIGEgcG9pbnRlciB0byB0aGUgb3duZXIgb2YgdGhlIG11dGV4LiAgSWYgdGhlCittdXRleCBpcyBub3Qgb3duZWQsIHRoaXMgb3duZXIgaXMgc2V0IHRvIE5VTEwuICBTaW5jZSBhbGwgYXJjaGl0ZWN0dXJlcworaGF2ZSB0aGUgdGFzayBzdHJ1Y3R1cmUgb24gYXQgbGVhc3QgYSBmb3VyIGJ5dGUgYWxpZ25tZW50IChhbmQgaWYgdGhpcyBpcworbm90IHRydWUsIHRoZSBydG11dGV4LmMgY29kZSB3aWxsIGJlIGJyb2tlbiEpLCB0aGlzIGFsbG93cyBmb3IgdGhlIHR3bworbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyB0byBiZSB1c2VkIGFzIGZsYWdzLiAgVGhpcyBwYXJ0IGlzIGFsc28gZGVzY3JpYmVkCitpbiBEb2N1bWVudGF0aW9uL3J0LW11dGV4LnR4dCwgYnV0IHdpbGwgYWxzbyBiZSBicmllZmx5IGRlc2NyaWJlZCBoZXJlLgorCitCaXQgMCBpcyB1c2VkIGFzIHRoZSAiUGVuZGluZyBPd25lciIgZmxhZy4gIFRoaXMgaXMgZGVzY3JpYmVkIGxhdGVyLgorQml0IDEgaXMgdXNlZCBhcyB0aGUgIkhhcyBXYWl0ZXJzIiBmbGFncy4gIFRoaXMgaXMgYWxzbyBkZXNjcmliZWQgbGF0ZXIKKyAgaW4gbW9yZSBkZXRhaWwsIGJ1dCBpcyBzZXQgd2hlbmV2ZXIgdGhlcmUgYXJlIHdhaXRlcnMgb24gYSBtdXRleC4KKworCitjbXB4Y2hnIFRyaWNrcworLS0tLS0tLS0tLS0tLS0KKworU29tZSBhcmNoaXRlY3R1cmVzIGltcGxlbWVudCBhbiBhdG9taWMgY21weGNoZyAoQ29tcGFyZSBhbmQgRXhjaGFuZ2UpLiAgVGhpcworaXMgdXNlZCAod2hlbiBhcHBsaWNhYmxlKSB0byBrZWVwIHRoZSBmYXN0IHBhdGggb2YgZ3JhYmJpbmcgYW5kIHJlbGVhc2luZworbXV0ZXhlcyBzaG9ydC4KKworY21weGNoZyBpcyBiYXNpY2FsbHkgdGhlIGZvbGxvd2luZyBmdW5jdGlvbiBwZXJmb3JtZWQgYXRvbWljYWxseToKKwordW5zaWduZWQgbG9uZyBfY21weGNoZyh1bnNpZ25lZCBsb25nICpBLCB1bnNpZ25lZCBsb25nICpCLCB1bnNpZ25lZCBsb25nICpDKQoreworCXVuc2lnbmVkIGxvbmcgVCA9ICpBOworCWlmICgqQSA9PSAqQikgeworCQkqQSA9ICpDOworCX0KKwlyZXR1cm4gVDsKK30KKyNkZWZpbmUgY21weGNoZyhhLGIsYykgX2NtcHhjaGcoJmEsJmIsJmMpCisKK1RoaXMgaXMgcmVhbGx5IG5pY2UgdG8gaGF2ZSwgc2luY2UgaXQgYWxsb3dzIHlvdSB0byBvbmx5IHVwZGF0ZSBhIHZhcmlhYmxlCitpZiB0aGUgdmFyaWFibGUgaXMgd2hhdCB5b3UgZXhwZWN0IGl0IHRvIGJlLiAgWW91IGtub3cgaWYgaXQgc3VjY2VlZGVkIGlmCit0aGUgcmV0dXJuIHZhbHVlICh0aGUgb2xkIHZhbHVlIG9mIEEpIGlzIGVxdWFsIHRvIEIuCisKK1RoZSBtYWNybyBydF9tdXRleF9jbXB4Y2hnIGlzIHVzZWQgdG8gdHJ5IHRvIGxvY2sgYW5kIHVubG9jayBtdXRleGVzLiBJZgordGhlIGFyY2hpdGVjdHVyZSBkb2VzIG5vdCBzdXBwb3J0IENNUFhDSEcsIHRoZW4gdGhpcyBtYWNybyBpcyBzaW1wbHkgc2V0Cit0byBmYWlsIGV2ZXJ5IHRpbWUuICBCdXQgaWYgQ01QWENIRyBpcyBzdXBwb3J0ZWQsIHRoZW4gdGhpcyB3aWxsCitoZWxwIG91dCBleHRyZW1lbHkgdG8ga2VlcCB0aGUgZmFzdCBwYXRoIHNob3J0LgorCitUaGUgdXNlIG9mIHJ0X211dGV4X2NtcHhjaGcgd2l0aCB0aGUgZmxhZ3MgaW4gdGhlIG93bmVyIGZpZWxkIGhlbHAgb3B0aW1pemUKK3RoZSBzeXN0ZW0gZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBzdXBwb3J0IGl0LiAgVGhpcyB3aWxsIGFsc28gYmUgZXhwbGFpbmVkCitsYXRlciBpbiB0aGlzIGRvY3VtZW50LgorCisKK1ByaW9yaXR5IGFkanVzdG1lbnRzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFBJIGNvZGUgaW4gcnRtdXRleC5jIGhhcyBzZXZlcmFsIHBsYWNlcyB0aGF0IGEKK3Byb2Nlc3MgbXVzdCBhZGp1c3QgaXRzIHByaW9yaXR5LiAgV2l0aCB0aGUgaGVscCBvZiB0aGUgcGlfbGlzdCBvZiBhCitwcm9jZXNzIHRoaXMgaXMgcmF0aGVyIGVhc3kgdG8ga25vdyB3aGF0IG5lZWRzIHRvIGJlIGFkanVzdGVkLgorCitUaGUgZnVuY3Rpb25zIGltcGxlbWVudGluZyB0aGUgdGFzayBhZGp1c3RtZW50cyBhcmUgcnRfbXV0ZXhfYWRqdXN0X3ByaW8sCitfX3J0X211dGV4X2FkanVzdF9wcmlvIChzYW1lIGFzIHRoZSBmb3JtZXIsIGJ1dCBleHBlY3RzIHRoZSB0YXNrIHBpX2xvY2sKK3RvIGFscmVhZHkgYmUgdGFrZW4pLCBydF9tdXRleF9nZXRwcmlvLCBhbmQgcnRfbXV0ZXhfc2V0cHJpby4KKworcnRfbXV0ZXhfZ2V0cHJpbyBhbmQgcnRfbXV0ZXhfc2V0cHJpbyBhcmUgb25seSB1c2VkIGluIF9fcnRfbXV0ZXhfYWRqdXN0X3ByaW8uCisKK3J0X211dGV4X2dldHByaW8gcmV0dXJucyB0aGUgcHJpb3JpdHkgdGhhdCB0aGUgdGFzayBzaG91bGQgaGF2ZS4gIEVpdGhlciB0aGUKK3Rhc2sncyBvd24gbm9ybWFsIHByaW9yaXR5LCBvciBpZiBhIHByb2Nlc3Mgb2YgYSBoaWdoZXIgcHJpb3JpdHkgaXMgd2FpdGluZyBvbgorYSBtdXRleCBvd25lZCBieSB0aGUgdGFzaywgdGhlbiB0aGF0IGhpZ2hlciBwcmlvcml0eSBzaG91bGQgYmUgcmV0dXJuZWQuCitTaW5jZSB0aGUgcGlfbGlzdCBvZiBhIHRhc2sgaG9sZHMgYW4gb3JkZXIgYnkgcHJpb3JpdHkgbGlzdCBvZiBhbGwgdGhlIHRvcAord2FpdGVycyBvZiBhbGwgdGhlIG11dGV4ZXMgdGhhdCB0aGUgdGFzayBvd25zLCBydF9tdXRleF9nZXRwcmlvIHNpbXBseSBuZWVkcwordG8gY29tcGFyZSB0aGUgdG9wIHBpIHdhaXRlciB0byBpdHMgb3duIG5vcm1hbCBwcmlvcml0eSwgYW5kIHJldHVybiB0aGUgaGlnaGVyCitwcmlvcml0eSBiYWNrLgorCisoTm90ZTogIGlmIGxvb2tpbmcgYXQgdGhlIGNvZGUsIHlvdSB3aWxsIG5vdGljZSB0aGF0IHRoZSBsb3dlciBudW1iZXIgb2YKKyAgICAgICAgcHJpbyBpcyByZXR1cm5lZC4gIFRoaXMgaXMgYmVjYXVzZSB0aGUgcHJpbyBmaWVsZCBpbiB0aGUgdGFzayBzdHJ1Y3R1cmUKKyAgICAgICAgaXMgYW4gaW52ZXJzZSBvcmRlciBvZiB0aGUgYWN0dWFsIHByaW9yaXR5LiAgU28gYSAicHJpbyIgb2YgNSBpcworICAgICAgICBvZiBoaWdoZXIgcHJpb3JpdHkgdGhhbiBhICJwcmlvIiBvZiAxMC4pCisKK19fcnRfbXV0ZXhfYWRqdXN0X3ByaW8gZXhhbWluZXMgdGhlIHJlc3VsdCBvZiBydF9tdXRleF9nZXRwcmlvLCBhbmQgaWYgdGhlCityZXN1bHQgZG9lcyBub3QgZXF1YWwgdGhlIHRhc2sncyBjdXJyZW50IHByaW9yaXR5LCB0aGVuIHJ0X211dGV4X3NldHByaW8KK2lzIGNhbGxlZCB0byBhZGp1c3QgdGhlIHByaW9yaXR5IG9mIHRoZSB0YXNrIHRvIHRoZSBuZXcgcHJpb3JpdHkuCitOb3RlIHRoYXQgcnRfbXV0ZXhfc2V0cHJpbyBpcyBkZWZpbmVkIGluIGtlcm5lbC9zY2hlZC9jb3JlLmMgdG8gaW1wbGVtZW50IHRoZQorYWN0dWFsIGNoYW5nZSBpbiBwcmlvcml0eS4KKworSXQgaXMgaW50ZXJlc3RpbmcgdG8gbm90ZSB0aGF0IF9fcnRfbXV0ZXhfYWRqdXN0X3ByaW8gY2FuIGVpdGhlciBpbmNyZWFzZQorb3IgZGVjcmVhc2UgdGhlIHByaW9yaXR5IG9mIHRoZSB0YXNrLiAgSW4gdGhlIGNhc2UgdGhhdCBhIGhpZ2hlciBwcmlvcml0eQorcHJvY2VzcyBoYXMganVzdCBibG9ja2VkIG9uIGEgbXV0ZXggb3duZWQgYnkgdGhlIHRhc2ssIF9fcnRfbXV0ZXhfYWRqdXN0X3ByaW8KK3dvdWxkIGluY3JlYXNlL2Jvb3N0IHRoZSB0YXNrJ3MgcHJpb3JpdHkuICBCdXQgaWYgYSBoaWdoZXIgcHJpb3JpdHkgdGFzaword2VyZSBmb3Igc29tZSByZWFzb24gdG8gbGVhdmUgdGhlIG11dGV4ICh0aW1lb3V0IG9yIHNpZ25hbCksIHRoaXMgc2FtZSBmdW5jdGlvbgord291bGQgZGVjcmVhc2UvdW5ib29zdCB0aGUgcHJpb3JpdHkgb2YgdGhlIHRhc2suICBUaGF0IGlzIGJlY2F1c2UgdGhlIHBpX2xpc3QKK2Fsd2F5cyBjb250YWlucyB0aGUgaGlnaGVzdCBwcmlvcml0eSB0YXNrIHRoYXQgaXMgd2FpdGluZyBvbiBhIG11dGV4IG93bmVkCitieSB0aGUgdGFzaywgc28gd2Ugb25seSBuZWVkIHRvIGNvbXBhcmUgdGhlIHByaW9yaXR5IG9mIHRoYXQgdG9wIHBpIHdhaXRlcgordG8gdGhlIG5vcm1hbCBwcmlvcml0eSBvZiB0aGUgZ2l2ZW4gdGFzay4KKworCitIaWdoIGxldmVsIG92ZXJ2aWV3IG9mIHRoZSBQSSBjaGFpbiB3YWxrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBQSSBjaGFpbiB3YWxrIGlzIGltcGxlbWVudGVkIGJ5IHRoZSBmdW5jdGlvbiBydF9tdXRleF9hZGp1c3RfcHJpb19jaGFpbi4KKworVGhlIGltcGxlbWVudGF0aW9uIGhhcyBnb25lIHRocm91Z2ggc2V2ZXJhbCBpdGVyYXRpb25zLCBhbmQgaGFzIGVuZGVkIHVwCit3aXRoIHdoYXQgd2UgYmVsaWV2ZSBpcyB0aGUgYmVzdC4gIEl0IHdhbGtzIHRoZSBQSSBjaGFpbiBieSBvbmx5IGdyYWJiaW5nCithdCBtb3N0IHR3byBsb2NrcyBhdCBhIHRpbWUsIGFuZCBpcyB2ZXJ5IGVmZmljaWVudC4KKworVGhlIHJ0X211dGV4X2FkanVzdF9wcmlvX2NoYWluIGNhbiBiZSB1c2VkIGVpdGhlciB0byBib29zdCBvciBsb3dlciBwcm9jZXNzCitwcmlvcml0aWVzLgorCitydF9tdXRleF9hZGp1c3RfcHJpb19jaGFpbiBpcyBjYWxsZWQgd2l0aCBhIHRhc2sgdG8gYmUgY2hlY2tlZCBmb3IgUEkKKyhkZSlib29zdGluZyAodGhlIG93bmVyIG9mIGEgbXV0ZXggdGhhdCBhIHByb2Nlc3MgaXMgYmxvY2tpbmcgb24pLCBhIGZsYWcgdG8KK2NoZWNrIGZvciBkZWFkbG9ja2luZywgdGhlIG11dGV4IHRoYXQgdGhlIHRhc2sgb3ducywgYW5kIGEgcG9pbnRlciB0byBhIHdhaXRlcgordGhhdCBpcyB0aGUgcHJvY2VzcydzIHdhaXRlciBzdHJ1Y3QgdGhhdCBpcyBibG9ja2VkIG9uIHRoZSBtdXRleCAoYWx0aG91Z2ggdGhpcworcGFyYW1ldGVyIG1heSBiZSBOVUxMIGZvciBkZWJvb3N0aW5nKS4KKworRm9yIHRoaXMgZXhwbGFuYXRpb24sIEkgd2lsbCBub3QgbWVudGlvbiBkZWFkbG9jayBkZXRlY3Rpb24uIFRoaXMgZXhwbGFuYXRpb24KK3dpbGwgdHJ5IHRvIHN0YXkgYXQgYSBoaWdoIGxldmVsLgorCitXaGVuIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLCB0aGVyZSBhcmUgbm8gbG9ja3MgaGVsZC4gIFRoYXQgYWxzbyBtZWFucwordGhhdCB0aGUgc3RhdGUgb2YgdGhlIG93bmVyIGFuZCBsb2NrIGNhbiBjaGFuZ2Ugd2hlbiBlbnRlcmVkIGludG8gdGhpcyBmdW5jdGlvbi4KKworQmVmb3JlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLCB0aGUgdGFzayBoYXMgYWxyZWFkeSBoYWQgcnRfbXV0ZXhfYWRqdXN0X3ByaW8KK3BlcmZvcm1lZCBvbiBpdC4gIFRoaXMgbWVhbnMgdGhhdCB0aGUgdGFzayBpcyBzZXQgdG8gdGhlIHByaW9yaXR5IHRoYXQgaXQKK3Nob3VsZCBiZSBhdCwgYnV0IHRoZSBwbGlzdCBub2RlcyBvZiB0aGUgdGFzaydzIHdhaXRlciBoYXZlIG5vdCBiZWVuIHVwZGF0ZWQKK3dpdGggdGhlIG5ldyBwcmlvcml0aWVzLCBhbmQgdGhhdCB0aGlzIHRhc2sgbWF5IG5vdCBiZSBpbiB0aGUgcHJvcGVyIGxvY2F0aW9ucworaW4gdGhlIHBpX2xpc3RzIGFuZCB3YWl0X2xpc3RzIHRoYXQgdGhlIHRhc2sgaXMgYmxvY2tlZCBvbi4gIFRoaXMgZnVuY3Rpb24KK3NvbHZlcyBhbGwgdGhhdC4KKworQSBsb29wIGlzIGVudGVyZWQsIHdoZXJlIHRhc2sgaXMgdGhlIG93bmVyIHRvIGJlIGNoZWNrZWQgZm9yIFBJIGNoYW5nZXMgdGhhdAord2FzIHBhc3NlZCBieSBwYXJhbWV0ZXIgKGZvciB0aGUgZmlyc3QgaXRlcmF0aW9uKS4gIFRoZSBwaV9sb2NrIG9mIHRoaXMgdGFzayBpcwordGFrZW4gdG8gcHJldmVudCBhbnkgbW9yZSBjaGFuZ2VzIHRvIHRoZSBwaV9saXN0IG9mIHRoZSB0YXNrLiAgVGhpcyBhbHNvCitwcmV2ZW50cyBuZXcgdGFza3MgZnJvbSBjb21wbGV0aW5nIHRoZSBibG9ja2luZyBvbiBhIG11dGV4IHRoYXQgaXMgb3duZWQgYnkgdGhpcwordGFzay4KKworSWYgdGhlIHRhc2sgaXMgbm90IGJsb2NrZWQgb24gYSBtdXRleCB0aGVuIHRoZSBsb29wIGlzIGV4aXRlZC4gIFdlIGFyZSBhdAordGhlIHRvcCBvZiB0aGUgUEkgY2hhaW4uCisKK0EgY2hlY2sgaXMgbm93IGRvbmUgdG8gc2VlIGlmIHRoZSBvcmlnaW5hbCB3YWl0ZXIgKHRoZSBwcm9jZXNzIHRoYXQgaXMgYmxvY2tlZAorb24gdGhlIGN1cnJlbnQgbXV0ZXgpIGlzIHRoZSB0b3AgcGkgd2FpdGVyIG9mIHRoZSB0YXNrLiAgVGhhdCBpcywgaXMgdGhpcword2FpdGVyIG9uIHRoZSB0b3Agb2YgdGhlIHRhc2sncyBwaV9saXN0LiAgSWYgaXQgaXMgbm90LCBpdCBlaXRoZXIgbWVhbnMgdGhhdAordGhlcmUgaXMgYW5vdGhlciBwcm9jZXNzIGhpZ2hlciBpbiBwcmlvcml0eSB0aGF0IGlzIGJsb2NrZWQgb24gb25lIG9mIHRoZQorbXV0ZXhlcyB0aGF0IHRoZSB0YXNrIG93bnMsIG9yIHRoYXQgdGhlIHdhaXRlciBoYXMganVzdCB3b2tlbiB1cCB2aWEgYSBzaWduYWwKK29yIHRpbWVvdXQgYW5kIGhhcyBsZWZ0IHRoZSBQSSBjaGFpbi4gIEluIGVpdGhlciBjYXNlLCB0aGUgbG9vcCBpcyBleGl0ZWQsIHNpbmNlCit3ZSBkb24ndCBuZWVkIHRvIGRvIGFueSBtb3JlIGNoYW5nZXMgdG8gdGhlIHByaW9yaXR5IG9mIHRoZSBjdXJyZW50IHRhc2ssIG9yIGFueQordGFzayB0aGF0IG93bnMgYSBtdXRleCB0aGF0IHRoaXMgY3VycmVudCB0YXNrIGlzIHdhaXRpbmcgb24uICBBIHByaW9yaXR5IGNoYWluCit3YWxrIGlzIG9ubHkgbmVlZGVkIHdoZW4gYSBuZXcgdG9wIHBpIHdhaXRlciBpcyBtYWRlIHRvIGEgdGFzay4KKworVGhlIG5leHQgY2hlY2sgc2VlcyBpZiB0aGUgdGFzaydzIHdhaXRlciBwbGlzdCBub2RlIGhhcyB0aGUgcHJpb3JpdHkgZXF1YWwgdG8KK3RoZSBwcmlvcml0eSB0aGUgdGFzayBpcyBzZXQgYXQuICBJZiB0aGV5IGFyZSBlcXVhbCwgdGhlbiB3ZSBhcmUgZG9uZSB3aXRoCit0aGUgbG9vcC4gIFJlbWVtYmVyIHRoYXQgdGhlIGZ1bmN0aW9uIHN0YXJ0ZWQgd2l0aCB0aGUgcHJpb3JpdHkgb2YgdGhlCit0YXNrIGFkanVzdGVkLCBidXQgdGhlIHBsaXN0IG5vZGVzIHRoYXQgaG9sZCB0aGUgdGFzayBpbiBvdGhlciBwcm9jZXNzZXMKK3BpX2xpc3RzIGhhdmUgbm90IGJlZW4gYWRqdXN0ZWQuCisKK05leHQsIHdlIGxvb2sgYXQgdGhlIG11dGV4IHRoYXQgdGhlIHRhc2sgaXMgYmxvY2tlZCBvbi4gVGhlIG11dGV4J3Mgd2FpdF9sb2NrCitpcyB0YWtlbi4gIFRoaXMgaXMgZG9uZSBieSBhIHNwaW5fdHJ5bG9jaywgYmVjYXVzZSB0aGUgbG9ja2luZyBvcmRlciBvZiB0aGUKK3BpX2xvY2sgYW5kIHdhaXRfbG9jayBnb2VzIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24uIElmIHdlIGZhaWwgdG8gZ3JhYiB0aGUKK2xvY2ssIHRoZSBwaV9sb2NrIGlzIHJlbGVhc2VkLCBhbmQgd2UgcmVzdGFydCB0aGUgbG9vcC4KKworTm93IHRoYXQgd2UgaGF2ZSBib3RoIHRoZSBwaV9sb2NrIG9mIHRoZSB0YXNrIGFzIHdlbGwgYXMgdGhlIHdhaXRfbG9jayBvZgordGhlIG11dGV4IHRoZSB0YXNrIGlzIGJsb2NrZWQgb24sIHdlIHVwZGF0ZSB0aGUgdGFzaydzIHdhaXRlcidzIHBsaXN0IG5vZGUKK3RoYXQgaXMgbG9jYXRlZCBvbiB0aGUgbXV0ZXgncyB3YWl0X2xpc3QuCisKK05vdyB3ZSByZWxlYXNlIHRoZSBwaV9sb2NrIG9mIHRoZSB0YXNrLgorCitOZXh0IHRoZSBvd25lciBvZiB0aGUgbXV0ZXggaGFzIGl0cyBwaV9sb2NrIHRha2VuLCBzbyB3ZSBjYW4gdXBkYXRlIHRoZQordGFzaydzIGVudHJ5IGluIHRoZSBvd25lcidzIHBpX2xpc3QuICBJZiB0aGUgdGFzayBpcyB0aGUgaGlnaGVzdCBwcmlvcml0eQorcHJvY2VzcyBvbiB0aGUgbXV0ZXgncyB3YWl0X2xpc3QsIHRoZW4gd2UgcmVtb3ZlIHRoZSBwcmV2aW91cyB0b3Agd2FpdGVyCitmcm9tIHRoZSBvd25lcidzIHBpX2xpc3QsIGFuZCByZXBsYWNlIGl0IHdpdGggdGhlIHRhc2suCisKK05vdGU6IEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIHRhc2sgd2FzIHRoZSBjdXJyZW50IHRvcCB3YWl0ZXIgb24gdGhlIG11dGV4LAorICAgICAgaW4gd2hpY2ggY2FzZSB0aGUgdGFzayBpcyBub3QgeWV0IG9uIHRoZSBwaV9saXN0IG9mIHRoZSB3YWl0ZXIuICBUaGlzCisgICAgICBpcyBPSywgc2luY2UgcGxpc3RfZGVsIGRvZXMgbm90aGluZyBpZiB0aGUgcGxpc3Qgbm9kZSBpcyBub3Qgb24gYW55CisgICAgICBsaXN0LgorCitJZiB0aGUgdGFzayB3YXMgbm90IHRoZSB0b3Agd2FpdGVyIG9mIHRoZSBtdXRleCwgYnV0IGl0IHdhcyBiZWZvcmUgd2UKK2RpZCB0aGUgcHJpb3JpdHkgdXBkYXRlcywgdGhhdCBtZWFucyB3ZSBhcmUgZGVib29zdGluZy9sb3dlcmluZyB0aGUKK3Rhc2suICBJbiB0aGlzIGNhc2UsIHRoZSB0YXNrIGlzIHJlbW92ZWQgZnJvbSB0aGUgcGlfbGlzdCBvZiB0aGUgb3duZXIsCithbmQgdGhlIG5ldyB0b3Agd2FpdGVyIGlzIGFkZGVkLgorCitMYXN0bHksIHdlIHVubG9jayBib3RoIHRoZSBwaV9sb2NrIG9mIHRoZSB0YXNrLCBhcyB3ZWxsIGFzIHRoZSBtdXRleCdzCit3YWl0X2xvY2ssIGFuZCBjb250aW51ZSB0aGUgbG9vcCBhZ2Fpbi4gIE9uIHRoZSBuZXh0IGl0ZXJhdGlvbiBvZiB0aGUKK2xvb3AsIHRoZSBwcmV2aW91cyBvd25lciBvZiB0aGUgbXV0ZXggd2lsbCBiZSB0aGUgdGFzayB0aGF0IHdpbGwgYmUKK3Byb2Nlc3NlZC4KKworTm90ZTogT25lIG1pZ2h0IHRoaW5rIHRoYXQgdGhlIG93bmVyIG9mIHRoaXMgbXV0ZXggbWlnaHQgaGF2ZSBjaGFuZ2VkCisgICAgICBzaW5jZSB3ZSBqdXN0IGdyYWIgdGhlIG11dGV4J3Mgd2FpdF9sb2NrLiBBbmQgb25lIGNvdWxkIGJlIHJpZ2h0LgorICAgICAgVGhlIGltcG9ydGFudCB0aGluZyB0byByZW1lbWJlciBpcyB0aGF0IHRoZSBvd25lciBjb3VsZCBub3QgaGF2ZQorICAgICAgYmVjb21lIHRoZSB0YXNrIHRoYXQgaXMgYmVpbmcgcHJvY2Vzc2VkIGluIHRoZSBQSSBjaGFpbiwgc2luY2UKKyAgICAgIHdlIGhhdmUgdGFrZW4gdGhhdCB0YXNrJ3MgcGlfbG9jayBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsb29wLgorICAgICAgU28gYXMgbG9uZyBhcyB0aGVyZSBpcyBhbiBvd25lciBvZiB0aGlzIG11dGV4IHRoYXQgaXMgbm90IHRoZSBzYW1lCisgICAgICBwcm9jZXNzIGFzIHRoZSB0YXNrZWQgYmVpbmcgd29ya2VkIG9uLCB3ZSBhcmUgT0suCisKKyAgICAgIExvb2tpbmcgY2xvc2VseSBhdCB0aGUgY29kZSwgb25lIG1pZ2h0IGJlIGNvbmZ1c2VkLiAgVGhlIGNoZWNrIGZvciB0aGUKKyAgICAgIGVuZCBvZiB0aGUgUEkgY2hhaW4gaXMgd2hlbiB0aGUgdGFzayBpc24ndCBibG9ja2VkIG9uIGFueXRoaW5nIG9yIHRoZQorICAgICAgdGFzaydzIHdhaXRlciBzdHJ1Y3R1cmUgInRhc2siIGVsZW1lbnQgaXMgTlVMTC4gIFRoaXMgY2hlY2sgaXMKKyAgICAgIHByb3RlY3RlZCBvbmx5IGJ5IHRoZSB0YXNrJ3MgcGlfbG9jay4gIEJ1dCB0aGUgY29kZSB0byB1bmxvY2sgdGhlIG11dGV4CisgICAgICBzZXRzIHRoZSB0YXNrJ3Mgd2FpdGVyIHN0cnVjdHVyZSAidGFzayIgZWxlbWVudCB0byBOVUxMIHdpdGggb25seQorICAgICAgdGhlIHByb3RlY3Rpb24gb2YgdGhlIG11dGV4J3Mgd2FpdF9sb2NrLCB3aGljaCB3YXMgbm90IHRha2VuIHlldC4KKyAgICAgIElzbid0IHRoaXMgYSByYWNlIGNvbmRpdGlvbiBpZiB0aGUgdGFzayBiZWNvbWVzIHRoZSBuZXcgb3duZXI/CisKKyAgICAgIFRoZSBhbnN3ZXIgaXMgTm8hICBUaGUgdHJpY2sgaXMgdGhlIHNwaW5fdHJ5bG9jayBvZiB0aGUgbXV0ZXgncworICAgICAgd2FpdF9sb2NrLiAgSWYgd2UgZmFpbCB0aGF0IGxvY2ssIHdlIHJlbGVhc2UgdGhlIHBpX2xvY2sgb2YgdGhlCisgICAgICB0YXNrIGFuZCBjb250aW51ZSB0aGUgbG9vcCwgZG9pbmcgdGhlIGVuZCBvZiBQSSBjaGFpbiBjaGVjayBhZ2Fpbi4KKworICAgICAgSW4gdGhlIGNvZGUgdG8gcmVsZWFzZSB0aGUgbG9jaywgdGhlIHdhaXRfbG9jayBvZiB0aGUgbXV0ZXggaXMgaGVsZAorICAgICAgdGhlIGVudGlyZSB0aW1lLCBhbmQgaXQgaXMgbm90IGxldCBnbyB3aGVuIHdlIGdyYWIgdGhlIHBpX2xvY2sgb2YgdGhlCisgICAgICBuZXcgb3duZXIgb2YgdGhlIG11dGV4LiAgU28gaWYgdGhlIHN3aXRjaCBvZiBhIG5ldyBvd25lciB3ZXJlIHRvIGhhcHBlbgorICAgICAgYWZ0ZXIgdGhlIGNoZWNrIGZvciBlbmQgb2YgdGhlIFBJIGNoYWluIGFuZCB0aGUgZ3JhYmJpbmcgb2YgdGhlCisgICAgICB3YWl0X2xvY2ssIHRoZSB1bmxvY2tpbmcgY29kZSB3b3VsZCBzcGluIG9uIHRoZSBuZXcgb3duZXIncyBwaV9sb2NrCisgICAgICBidXQgbmV2ZXIgZ2l2ZSB1cCB0aGUgd2FpdF9sb2NrLiAgU28gdGhlIFBJIGNoYWluIGxvb3AgaXMgZ3VhcmFudGVlZCB0bworICAgICAgZmFpbCB0aGUgc3Bpbl90cnlsb2NrIG9uIHRoZSB3YWl0X2xvY2ssIHJlbGVhc2UgdGhlIHBpX2xvY2ssIGFuZAorICAgICAgdHJ5IGFnYWluLgorCisgICAgICBJZiB5b3UgZG9uJ3QgcXVpdGUgdW5kZXJzdGFuZCB0aGUgYWJvdmUsIHRoYXQncyBPSy4gWW91IGRvbid0IGhhdmUgdG8sCisgICAgICB1bmxlc3MgeW91IHJlYWxseSB3YW50IHRvIG1ha2UgYSBwcm9vZiBvdXQgb2YgaXQgOykKKworCitQZW5kaW5nIE93bmVycyBhbmQgTG9jayBzdGVhbGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT25lIG9mIHRoZSBmbGFncyBpbiB0aGUgb3duZXIgZmllbGQgb2YgdGhlIG11dGV4IHN0cnVjdHVyZSBpcyAiUGVuZGluZyBPd25lciIuCitXaGF0IHRoaXMgbWVhbnMgaXMgdGhhdCBhbiBvd25lciB3YXMgY2hvc2VuIGJ5IHRoZSBwcm9jZXNzIHJlbGVhc2luZyB0aGUKK211dGV4LCBidXQgdGhhdCBvd25lciBoYXMgeWV0IHRvIHdha2UgdXAgYW5kIGFjdHVhbGx5IHRha2UgdGhlIG11dGV4LgorCitXaHkgaXMgdGhpcyBpbXBvcnRhbnQ/ICBXaHkgY2FuJ3Qgd2UganVzdCBnaXZlIHRoZSBtdXRleCB0byBhbm90aGVyIHByb2Nlc3MKK2FuZCBiZSBkb25lIHdpdGggaXQ/CisKK1RoZSBQSSBjb2RlIGlzIHRvIGhlbHAgd2l0aCByZWFsLXRpbWUgcHJvY2Vzc2VzLCBhbmQgdG8gbGV0IHRoZSBoaWdoZXN0Citwcmlvcml0eSBwcm9jZXNzIHJ1biBhcyBsb25nIGFzIHBvc3NpYmxlIHdpdGggbGl0dGxlIGxhdGVuY2llcyBhbmQgZGVsYXlzLgorSWYgYSBoaWdoIHByaW9yaXR5IHByb2Nlc3Mgb3ducyBhIG11dGV4IHRoYXQgYSBsb3dlciBwcmlvcml0eSBwcm9jZXNzIGlzCitibG9ja2VkIG9uLCB3aGVuIHRoZSBtdXRleCBpcyByZWxlYXNlZCBpdCB3b3VsZCBiZSBnaXZlbiB0byB0aGUgbG93ZXIgcHJpb3JpdHkKK3Byb2Nlc3MuICBXaGF0IGlmIHRoZSBoaWdoZXIgcHJpb3JpdHkgcHJvY2VzcyB3YW50cyB0byB0YWtlIHRoYXQgbXV0ZXggYWdhaW4uCitUaGUgaGlnaCBwcmlvcml0eSBwcm9jZXNzIHdvdWxkIGZhaWwgdG8gdGFrZSB0aGF0IG11dGV4IHRoYXQgaXQganVzdCBnYXZlIHVwCithbmQgaXQgd291bGQgbmVlZCB0byBib29zdCB0aGUgbG93ZXIgcHJpb3JpdHkgcHJvY2VzcyB0byBydW4gd2l0aCBmdWxsCitsYXRlbmN5IG9mIHRoYXQgY3JpdGljYWwgc2VjdGlvbiAoc2luY2UgdGhlIGxvdyBwcmlvcml0eSBwcm9jZXNzIGp1c3QgZW50ZXJlZAoraXQpLgorCitUaGVyZSdzIG5vIHJlYXNvbiBhIGhpZ2ggcHJpb3JpdHkgcHJvY2VzcyB0aGF0IGdpdmVzIHVwIGEgbXV0ZXggc2hvdWxkIGJlCitwZW5hbGl6ZWQgaWYgaXQgdHJpZXMgdG8gdGFrZSB0aGF0IG11dGV4IGFnYWluLiAgSWYgdGhlIG5ldyBvd25lciBvZiB0aGUKK211dGV4IGhhcyBub3Qgd29rZW4gdXAgeWV0LCB0aGVyZSdzIG5vIHJlYXNvbiB0aGF0IHRoZSBoaWdoZXIgcHJpb3JpdHkgcHJvY2VzcworY291bGQgbm90IHRha2UgdGhhdCBtdXRleCBhd2F5LgorCitUbyBzb2x2ZSB0aGlzLCB3ZSBpbnRyb2R1Y2VkIFBlbmRpbmcgT3duZXJzaGlwIGFuZCBMb2NrIFN0ZWFsaW5nLiAgV2hlbiBhCituZXcgcHJvY2VzcyBpcyBnaXZlbiBhIG11dGV4IHRoYXQgaXQgd2FzIGJsb2NrZWQgb24sIGl0IGlzIG9ubHkgZ2l2ZW4KK3BlbmRpbmcgb3duZXJzaGlwLiAgVGhpcyBtZWFucyB0aGF0IGl0J3MgdGhlIG5ldyBvd25lciwgdW5sZXNzIGEgaGlnaGVyCitwcmlvcml0eSBwcm9jZXNzIGNvbWVzIGluIGFuZCB0cmllcyB0byBncmFiIHRoYXQgbXV0ZXguICBJZiBhIGhpZ2hlciBwcmlvcml0eQorcHJvY2VzcyBkb2VzIGNvbWUgYWxvbmcgYW5kIHdhbnRzIHRoYXQgbXV0ZXgsIHdlIGxldCB0aGUgaGlnaGVyIHByaW9yaXR5Citwcm9jZXNzICJzdGVhbCIgdGhlIG11dGV4IGZyb20gdGhlIHBlbmRpbmcgb3duZXIgKG9ubHkgaWYgaXQgaXMgc3RpbGwgcGVuZGluZykKK2FuZCBjb250aW51ZSB3aXRoIHRoZSBtdXRleC4KKworCitUYWtpbmcgb2YgYSBtdXRleCAoVGhlIHdhbGsgdGhyb3VnaCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPSywgbm93IGxldCdzIHRha2UgYSBsb29rIGF0IHRoZSBkZXRhaWxlZCB3YWxrIHRocm91Z2ggb2Ygd2hhdCBoYXBwZW5zIHdoZW4KK3Rha2luZyBhIG11dGV4LgorCitUaGUgZmlyc3QgdGhpbmcgdGhhdCBpcyB0cmllZCBpcyB0aGUgZmFzdCB0YWtpbmcgb2YgdGhlIG11dGV4LiAgVGhpcyBpcworZG9uZSB3aGVuIHdlIGhhdmUgQ01QWENIRyBlbmFibGVkIChvdGhlcndpc2UgdGhlIGZhc3QgdGFraW5nIGF1dG9tYXRpY2FsbHkKK2ZhaWxzKS4gIE9ubHkgd2hlbiB0aGUgb3duZXIgZmllbGQgb2YgdGhlIG11dGV4IGlzIE5VTEwgY2FuIHRoZSBsb2NrIGJlCit0YWtlbiB3aXRoIHRoZSBDTVBYQ0hHIGFuZCBub3RoaW5nIGVsc2UgbmVlZHMgdG8gYmUgZG9uZS4KKworSWYgdGhlcmUgaXMgY29udGVudGlvbiBvbiB0aGUgbG9jaywgd2hldGhlciBpdCBpcyBvd25lZCBvciBwZW5kaW5nIG93bmVyCit3ZSBnbyBhYm91dCB0aGUgc2xvdyBwYXRoIChydF9tdXRleF9zbG93bG9jaykuCisKK1RoZSBzbG93IHBhdGggZnVuY3Rpb24gaXMgd2hlcmUgdGhlIHRhc2sncyB3YWl0ZXIgc3RydWN0dXJlIGlzIGNyZWF0ZWQgb24KK3RoZSBzdGFjay4gIFRoaXMgaXMgYmVjYXVzZSB0aGUgd2FpdGVyIHN0cnVjdHVyZSBpcyBvbmx5IG5lZWRlZCBmb3IgdGhlCitzY29wZSBvZiB0aGlzIGZ1bmN0aW9uLiAgVGhlIHdhaXRlciBzdHJ1Y3R1cmUgaG9sZHMgdGhlIG5vZGVzIHRvIHN0b3JlCit0aGUgdGFzayBvbiB0aGUgd2FpdF9saXN0IG9mIHRoZSBtdXRleCwgYW5kIGlmIG5lZWQgYmUsIHRoZSBwaV9saXN0IG9mCit0aGUgb3duZXIuCisKK1RoZSB3YWl0X2xvY2sgb2YgdGhlIG11dGV4IGlzIHRha2VuIHNpbmNlIHRoZSBzbG93IHBhdGggb2YgdW5sb2NraW5nIHRoZQorbXV0ZXggYWxzbyB0YWtlcyB0aGlzIGxvY2suCisKK1dlIHRoZW4gY2FsbCB0cnlfdG9fdGFrZV9ydF9tdXRleC4gIFRoaXMgaXMgd2hlcmUgdGhlIGFyY2hpdGVjdHVyZSB0aGF0Citkb2VzIG5vdCBpbXBsZW1lbnQgQ01QWENIRyB3b3VsZCBhbHdheXMgZ3JhYiB0aGUgbG9jayAoaWYgdGhlcmUncyBubworY29udGVudGlvbikuCisKK3RyeV90b190YWtlX3J0X211dGV4IGlzIHVzZWQgZXZlcnkgdGltZSB0aGUgdGFzayB0cmllcyB0byBncmFiIGEgbXV0ZXggaW4gdGhlCitzbG93IHBhdGguICBUaGUgZmlyc3QgdGhpbmcgdGhhdCBpcyBkb25lIGhlcmUgaXMgYW4gYXRvbWljIHNldHRpbmcgb2YKK3RoZSAiSGFzIFdhaXRlcnMiIGZsYWcgb2YgdGhlIG11dGV4J3Mgb3duZXIgZmllbGQuICBZZXMsIHRoaXMgY291bGQgcmVhbGx5CitiZSBmYWxzZSwgYmVjYXVzZSBpZiB0aGUgbXV0ZXggaGFzIG5vIG93bmVyLCB0aGVyZSBhcmUgbm8gd2FpdGVycyBhbmQKK3RoZSBjdXJyZW50IHRhc2sgYWxzbyB3b24ndCBoYXZlIGFueSB3YWl0ZXJzLiAgQnV0IHdlIGRvbid0IGhhdmUgdGhlIGxvY2sKK3lldCwgc28gd2UgYXNzdW1lIHdlIGFyZSBnb2luZyB0byBiZSBhIHdhaXRlci4gIFRoZSByZWFzb24gZm9yIHRoaXMgaXMgdG8KK3BsYXkgbmljZSBmb3IgdGhvc2UgYXJjaGl0ZWN0dXJlcyB0aGF0IGRvIGhhdmUgQ01QWENIRy4gIEJ5IHNldHRpbmcgdGhpcyBmbGFnCitub3csIHRoZSBvd25lciBvZiB0aGUgbXV0ZXggY2FuJ3QgcmVsZWFzZSB0aGUgbXV0ZXggd2l0aG91dCBnb2luZyBpbnRvIHRoZQorc2xvdyB1bmxvY2sgcGF0aCwgYW5kIGl0IHdvdWxkIHRoZW4gbmVlZCB0byBncmFiIHRoZSB3YWl0X2xvY2ssIHdoaWNoIHRoaXMKK2NvZGUgY3VycmVudGx5IGhvbGRzLiAgU28gc2V0dGluZyB0aGUgIkhhcyBXYWl0ZXJzIiBmbGFnIGZvcmNlcyB0aGUgb3duZXIKK3RvIHN5bmNocm9uaXplIHdpdGggdGhpcyBjb2RlLgorCitOb3cgdGhhdCB3ZSBrbm93IHRoYXQgd2UgY2FuJ3QgaGF2ZSBhbnkgcmFjZXMgd2l0aCB0aGUgb3duZXIgcmVsZWFzaW5nIHRoZQorbXV0ZXgsIHdlIGNoZWNrIHRvIHNlZSBpZiB3ZSBjYW4gdGFrZSB0aGUgb3duZXJzaGlwLiAgVGhpcyBpcyBkb25lIGlmIHRoZQorbXV0ZXggZG9lc24ndCBoYXZlIGEgb3duZXIsIG9yIGlmIHdlIGNhbiBzdGVhbCB0aGUgbXV0ZXggZnJvbSBhIHBlbmRpbmcKK293bmVyLiAgTGV0J3MgbG9vayBhdCB0aGUgc2l0dWF0aW9ucyB3ZSBoYXZlIGhlcmUuCisKKyAgMSkgSGFzIG93bmVyIHRoYXQgaXMgcGVuZGluZworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlIG11dGV4IGhhcyBhIG93bmVyLCBidXQgaXQgaGFzbid0IHdva2VuIHVwIGFuZCB0aGUgbXV0ZXggZmxhZworICAiUGVuZGluZyBPd25lciIgaXMgc2V0LiAgVGhlIGZpcnN0IGNoZWNrIGlzIHRvIHNlZSBpZiB0aGUgb3duZXIgaXNuJ3QgdGhlCisgIGN1cnJlbnQgdGFzay4gIFRoaXMgaXMgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGFsc28gdXNlZCBmb3IgdGhlIHBlbmRpbmcKKyAgb3duZXIgdG8gZ3JhYiB0aGUgbXV0ZXguICBXaGVuIGEgcGVuZGluZyBvd25lciB3YWtlcyB1cCwgaXQgY2hlY2tzIHRvIHNlZQorICBpZiBpdCBjYW4gdGFrZSB0aGUgbXV0ZXgsIGFuZCB0aGlzIGlzIGRvbmUgaWYgdGhlIG93bmVyIGlzIGFscmVhZHkgc2V0IHRvCisgIGl0c2VsZi4gIElmIHNvLCB3ZSBzdWNjZWVkIGFuZCBsZWF2ZSB0aGUgZnVuY3Rpb24sIGNsZWFyaW5nIHRoZSAiUGVuZGluZworICBPd25lciIgYml0LgorCisgIElmIHRoZSBwZW5kaW5nIG93bmVyIGlzIG5vdCBjdXJyZW50LCB3ZSBjaGVjayB0byBzZWUgaWYgdGhlIGN1cnJlbnQgcHJpb3JpdHkgaXMKKyAgaGlnaGVyIHRoYW4gdGhlIHBlbmRpbmcgb3duZXIuICBJZiBub3QsIHdlIGZhaWwgdGhlIGZ1bmN0aW9uIGFuZCByZXR1cm4uCisKKyAgVGhlcmUncyBhbHNvIHNvbWV0aGluZyBzcGVjaWFsIGFib3V0IGEgcGVuZGluZyBvd25lci4gIFRoYXQgaXMgYSBwZW5kaW5nIG93bmVyCisgIGlzIG5ldmVyIGJsb2NrZWQgb24gYSBtdXRleC4gIFNvIHRoZXJlIGlzIG5vIFBJIGNoYWluIHRvIHdvcnJ5IGFib3V0LiAgSXQgYWxzbworICBtZWFucyB0aGF0IGlmIHRoZSBtdXRleCBkb2Vzbid0IGhhdmUgYW55IHdhaXRlcnMsIHRoZXJlJ3Mgbm8gYWNjb3VudGluZyBuZWVkZWQKKyAgdG8gdXBkYXRlIHRoZSBwZW5kaW5nIG93bmVyJ3MgcGlfbGlzdCwgc2luY2Ugd2Ugb25seSB3b3JyeSBhYm91dCBwcm9jZXNzZXMKKyAgYmxvY2tlZCBvbiB0aGUgY3VycmVudCBtdXRleC4KKworICBJZiB0aGVyZSBhcmUgd2FpdGVycyBvbiB0aGlzIG11dGV4LCBhbmQgd2UganVzdCBzdG9sZSB0aGUgb3duZXJzaGlwLCB3ZSBuZWVkCisgIHRvIHRha2UgdGhlIHRvcCB3YWl0ZXIsIHJlbW92ZSBpdCBmcm9tIHRoZSBwaV9saXN0IG9mIHRoZSBwZW5kaW5nIG93bmVyLCBhbmQKKyAgYWRkIGl0IHRvIHRoZSBjdXJyZW50IHBpX2xpc3QuICBOb3RlIHRoYXQgYXQgdGhpcyBtb21lbnQsIHRoZSBwZW5kaW5nIG93bmVyCisgIGlzIG5vIGxvbmdlciBvbiB0aGUgbGlzdCBvZiB3YWl0ZXJzLiAgVGhpcyBpcyBmaW5lLCBzaW5jZSB0aGUgcGVuZGluZyBvd25lcgorICB3b3VsZCBhZGQgaXRzZWxmIGJhY2sgd2hlbiBpdCByZWFsaXplcyB0aGF0IGl0IGhhZCB0aGUgb3duZXJzaGlwIHN0b2xlbgorICBmcm9tIGl0c2VsZi4gIFdoZW4gdGhlIHBlbmRpbmcgb3duZXIgdHJpZXMgdG8gZ3JhYiB0aGUgbXV0ZXgsIGl0IHdpbGwgZmFpbAorICBpbiB0cnlfdG9fdGFrZV9ydF9tdXRleCBpZiB0aGUgb3duZXIgZmllbGQgcG9pbnRzIHRvIGFub3RoZXIgcHJvY2Vzcy4KKworICAyKSBObyBvd25lcgorICAtLS0tLS0tLS0tLQorCisgIElmIHRoZXJlIGlzIG5vIG93bmVyIChvciB3ZSBzdWNjZXNzZnVsbHkgc3RvbGUgdGhlIGxvY2spLCB3ZSBzZXQgdGhlIG93bmVyCisgIG9mIHRoZSBtdXRleCB0byBjdXJyZW50LCBhbmQgc2V0IHRoZSBmbGFnIG9mICJIYXMgV2FpdGVycyIgaWYgdGhlIGN1cnJlbnQKKyAgbXV0ZXggYWN0dWFsbHkgaGFzIHdhaXRlcnMsIG9yIHdlIGNsZWFyIHRoZSBmbGFnIGlmIGl0IGRvZXNuJ3QuICBTZWUsIGl0IHdhcworICBPSyB0aGF0IHdlIHNldCB0aGF0IGZsYWcgZWFybHksIHNpbmNlIG5vdyBpdCBpcyBjbGVhcmVkLgorCisgIDMpIEZhaWxlZCB0byBncmFiIG93bmVyc2hpcAorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGUgbW9zdCBpbnRlcmVzdGluZyBjYXNlIGlzIHdoZW4gd2UgZmFpbCB0byB0YWtlIG93bmVyc2hpcC4gVGhpcyBtZWFucyB0aGF0CisgIHRoZXJlIGV4aXN0cyBhbiBvd25lciwgb3IgdGhlcmUncyBhIHBlbmRpbmcgb3duZXIgd2l0aCBlcXVhbCBvciBoaWdoZXIKKyAgcHJpb3JpdHkgdGhhbiB0aGUgY3VycmVudCB0YXNrLgorCitXZSdsbCBjb250aW51ZSBvbiB0aGUgZmFpbGVkIGNhc2UuCisKK0lmIHRoZSBtdXRleCBoYXMgYSB0aW1lb3V0LCB3ZSBzZXQgdXAgYSB0aW1lciB0byBnbyBvZmYgdG8gYnJlYWsgdXMgb3V0CitvZiB0aGlzIG11dGV4IGlmIHdlIGZhaWxlZCB0byBnZXQgaXQgYWZ0ZXIgYSBzcGVjaWZpZWQgYW1vdW50IG9mIHRpbWUuCisKK05vdyB3ZSBlbnRlciBhIGxvb3AgdGhhdCB3aWxsIGNvbnRpbnVlIHRvIHRyeSB0byB0YWtlIG93bmVyc2hpcCBvZiB0aGUgbXV0ZXgsIG9yCitmYWlsIGZyb20gYSB0aW1lb3V0IG9yIHNpZ25hbC4KKworT25jZSBhZ2FpbiB3ZSB0cnkgdG8gdGFrZSB0aGUgbXV0ZXguICBUaGlzIHdpbGwgdXN1YWxseSBmYWlsIHRoZSBmaXJzdCB0aW1lCitpbiB0aGUgbG9vcCwgc2luY2UgaXQgaGFkIGp1c3QgZmFpbGVkIHRvIGdldCB0aGUgbXV0ZXguICBCdXQgdGhlIHNlY29uZCB0aW1lCitpbiB0aGUgbG9vcCwgdGhpcyB3b3VsZCBsaWtlbHkgc3VjY2VlZCwgc2luY2UgdGhlIHRhc2sgd291bGQgbGlrZWx5IGJlCit0aGUgcGVuZGluZyBvd25lci4KKworSWYgdGhlIG11dGV4IGlzIFRBU0tfSU5URVJSVVBUSUJMRSBhIGNoZWNrIGZvciBzaWduYWxzIGFuZCB0aW1lb3V0IGlzIGRvbmUKK2hlcmUuCisKK1RoZSB3YWl0ZXIgc3RydWN0dXJlIGhhcyBhICJ0YXNrIiBmaWVsZCB0aGF0IHBvaW50cyB0byB0aGUgdGFzayB0aGF0IGlzIGJsb2NrZWQKK29uIHRoZSBtdXRleC4gIFRoaXMgZmllbGQgY2FuIGJlIE5VTEwgdGhlIGZpcnN0IHRpbWUgaXQgZ29lcyB0aHJvdWdoIHRoZSBsb29wCitvciBpZiB0aGUgdGFzayBpcyBhIHBlbmRpbmcgb3duZXIgYW5kIGhhZCBpdHMgbXV0ZXggc3RvbGVuLiAgSWYgdGhlICJ0YXNrIgorZmllbGQgaXMgTlVMTCB0aGVuIHdlIG5lZWQgdG8gc2V0IHVwIHRoZSBhY2NvdW50aW5nIGZvciBpdC4KKworVGFzayBibG9ja3Mgb24gbXV0ZXgKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBhY2NvdW50aW5nIG9mIGEgbXV0ZXggYW5kIHByb2Nlc3MgaXMgZG9uZSB3aXRoIHRoZSB3YWl0ZXIgc3RydWN0dXJlIG9mCit0aGUgcHJvY2Vzcy4gIFRoZSAidGFzayIgZmllbGQgaXMgc2V0IHRvIHRoZSBwcm9jZXNzLCBhbmQgdGhlICJsb2NrIiBmaWVsZAordG8gdGhlIG11dGV4LiAgVGhlIHBsaXN0IG5vZGVzIGFyZSBpbml0aWFsaXplZCB0byB0aGUgcHJvY2Vzc2VzIGN1cnJlbnQKK3ByaW9yaXR5LgorCitTaW5jZSB0aGUgd2FpdF9sb2NrIHdhcyB0YWtlbiBhdCB0aGUgZW50cnkgb2YgdGhlIHNsb3cgbG9jaywgd2UgY2FuIHNhZmVseQorYWRkIHRoZSB3YWl0ZXIgdG8gdGhlIHdhaXRfbGlzdC4gIElmIHRoZSBjdXJyZW50IHByb2Nlc3MgaXMgdGhlIGhpZ2hlc3QKK3ByaW9yaXR5IHByb2Nlc3MgY3VycmVudGx5IHdhaXRpbmcgb24gdGhpcyBtdXRleCwgdGhlbiB3ZSByZW1vdmUgdGhlCitwcmV2aW91cyB0b3Agd2FpdGVyIHByb2Nlc3MgKGlmIGl0IGV4aXN0cykgZnJvbSB0aGUgcGlfbGlzdCBvZiB0aGUgb3duZXIsCithbmQgYWRkIHRoZSBjdXJyZW50IHByb2Nlc3MgdG8gdGhhdCBsaXN0LiAgU2luY2UgdGhlIHBpX2xpc3Qgb2YgdGhlIG93bmVyCitoYXMgY2hhbmdlZCwgd2UgY2FsbCBydF9tdXRleF9hZGp1c3RfcHJpbyBvbiB0aGUgb3duZXIgdG8gc2VlIGlmIHRoZSBvd25lcgorc2hvdWxkIGFkanVzdCBpdHMgcHJpb3JpdHkgYWNjb3JkaW5nbHkuCisKK0lmIHRoZSBvd25lciBpcyBhbHNvIGJsb2NrZWQgb24gYSBsb2NrLCBhbmQgaGFkIGl0cyBwaV9saXN0IGNoYW5nZWQKKyhvciBkZWFkbG9jayBjaGVja2luZyBpcyBvbiksIHdlIHVubG9jayB0aGUgd2FpdF9sb2NrIG9mIHRoZSBtdXRleCBhbmQgZ28gYWhlYWQKK2FuZCBydW4gcnRfbXV0ZXhfYWRqdXN0X3ByaW9fY2hhaW4gb24gdGhlIG93bmVyLCBhcyBkZXNjcmliZWQgZWFybGllci4KKworTm93IGFsbCBsb2NrcyBhcmUgcmVsZWFzZWQsIGFuZCBpZiB0aGUgY3VycmVudCBwcm9jZXNzIGlzIHN0aWxsIGJsb2NrZWQgb24gYQorbXV0ZXggKHdhaXRlciAidGFzayIgZmllbGQgaXMgbm90IE5VTEwpLCB0aGVuIHdlIGdvIHRvIHNsZWVwIChjYWxsIHNjaGVkdWxlKS4KKworV2FraW5nIHVwIGluIHRoZSBsb29wCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHNjaGVkdWxlIGNhbiB0aGVuIHdha2UgdXAgZm9yIGEgZmV3IHJlYXNvbnMuCisgIDEpIHdlIHdlcmUgZ2l2ZW4gcGVuZGluZyBvd25lcnNoaXAgb2YgdGhlIG11dGV4LgorICAyKSB3ZSByZWNlaXZlZCBhIHNpZ25hbCBhbmQgd2FzIFRBU0tfSU5URVJSVVBUSUJMRQorICAzKSB3ZSBoYWQgYSB0aW1lb3V0IGFuZCB3YXMgVEFTS19JTlRFUlJVUFRJQkxFCisKK0luIGFueSBvZiB0aGVzZSBjYXNlcywgd2UgY29udGludWUgdGhlIGxvb3AgYW5kIG9uY2UgYWdhaW4gdHJ5IHRvIGdyYWIgdGhlCitvd25lcnNoaXAgb2YgdGhlIG11dGV4LiAgSWYgd2Ugc3VjY2VlZCwgd2UgZXhpdCB0aGUgbG9vcCwgb3RoZXJ3aXNlIHdlIGNvbnRpbnVlCithbmQgb24gc2lnbmFsIGFuZCB0aW1lb3V0LCB3aWxsIGV4aXQgdGhlIGxvb3AsIG9yIGlmIHdlIGhhZCB0aGUgbXV0ZXggc3RvbGVuCit3ZSBqdXN0IHNpbXBseSBhZGQgb3Vyc2VsdmVzIGJhY2sgb24gdGhlIGxpc3RzIGFuZCBnbyBiYWNrIHRvIHNsZWVwLgorCitOb3RlOiBGb3IgdmFyaW91cyByZWFzb25zLCBiZWNhdXNlIG9mIHRpbWVvdXQgYW5kIHNpZ25hbHMsIHRoZSBzdGVhbCBtdXRleAorICAgICAgYWxnb3JpdGhtIG5lZWRzIHRvIGJlIGNhcmVmdWwuIFRoaXMgaXMgYmVjYXVzZSB0aGUgY3VycmVudCBwcm9jZXNzIGlzCisgICAgICBzdGlsbCBvbiB0aGUgd2FpdF9saXN0LiBBbmQgYmVjYXVzZSBvZiBkeW5hbWljIGNoYW5naW5nIG9mIHByaW9yaXRpZXMsCisgICAgICBlc3BlY2lhbGx5IG9uIFNDSEVEX09USEVSIHRhc2tzLCB0aGUgY3VycmVudCBwcm9jZXNzIGNhbiBiZSB0aGUKKyAgICAgIGhpZ2hlc3QgcHJpb3JpdHkgdGFzayBvbiB0aGUgd2FpdF9saXN0LgorCitGYWlsZWQgdG8gZ2V0IG11dGV4IG9uIFRpbWVvdXQgb3IgU2lnbmFsCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIGEgdGltZW91dCBvciBzaWduYWwgb2NjdXJyZWQsIHRoZSB3YWl0ZXIncyAidGFzayIgZmllbGQgd291bGQgbm90IGJlCitOVUxMIGFuZCB0aGUgdGFzayBuZWVkcyB0byBiZSB0YWtlbiBvZmYgdGhlIHdhaXRfbGlzdCBvZiB0aGUgbXV0ZXggYW5kIHBlcmhhcHMKK3BpX2xpc3Qgb2YgdGhlIG93bmVyLiAgSWYgdGhpcyBwcm9jZXNzIHdhcyBhIGhpZ2ggcHJpb3JpdHkgcHJvY2VzcywgdGhlbgordGhlIHJ0X211dGV4X2FkanVzdF9wcmlvX2NoYWluIG5lZWRzIHRvIGJlIGV4ZWN1dGVkIGFnYWluIG9uIHRoZSBvd25lciwKK2J1dCB0aGlzIHRpbWUgaXQgd2lsbCBiZSBsb3dlcmluZyB0aGUgcHJpb3JpdGllcy4KKworCitVbmxvY2tpbmcgdGhlIE11dGV4CistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSB1bmxvY2tpbmcgb2YgYSBtdXRleCBhbHNvIGhhcyBhIGZhc3QgcGF0aCBmb3IgdGhvc2UgYXJjaGl0ZWN0dXJlcyB3aXRoCitDTVBYQ0hHLiAgU2luY2UgdGhlIHRha2luZyBvZiBhIG11dGV4IG9uIGNvbnRlbnRpb24gYWx3YXlzIHNldHMgdGhlCisiSGFzIFdhaXRlcnMiIGZsYWcgb2YgdGhlIG11dGV4J3Mgb3duZXIsIHdlIHVzZSB0aGlzIHRvIGtub3cgaWYgd2UgbmVlZCB0bwordGFrZSB0aGUgc2xvdyBwYXRoIHdoZW4gdW5sb2NraW5nIHRoZSBtdXRleC4gIElmIHRoZSBtdXRleCBkb2Vzbid0IGhhdmUgYW55Cit3YWl0ZXJzLCB0aGUgb3duZXIgZmllbGQgb2YgdGhlIG11dGV4IHdvdWxkIGVxdWFsIHRoZSBjdXJyZW50IHByb2Nlc3MgYW5kCit0aGUgbXV0ZXggY2FuIGJlIHVubG9ja2VkIGJ5IGp1c3QgcmVwbGFjaW5nIHRoZSBvd25lciBmaWVsZCB3aXRoIE5VTEwuCisKK0lmIHRoZSBvd25lciBmaWVsZCBoYXMgdGhlICJIYXMgV2FpdGVycyIgYml0IHNldCAob3IgQ01QWENIRyBpcyBub3QgYXZhaWxhYmxlKSwKK3RoZSBzbG93IHVubG9jayBwYXRoIGlzIHRha2VuLgorCitUaGUgZmlyc3QgdGhpbmcgZG9uZSBpbiB0aGUgc2xvdyB1bmxvY2sgcGF0aCBpcyB0byB0YWtlIHRoZSB3YWl0X2xvY2sgb2YgdGhlCittdXRleC4gIFRoaXMgc3luY2hyb25pemVzIHRoZSBsb2NraW5nIGFuZCB1bmxvY2tpbmcgb2YgdGhlIG11dGV4LgorCitBIGNoZWNrIGlzIG1hZGUgdG8gc2VlIGlmIHRoZSBtdXRleCBoYXMgd2FpdGVycyBvciBub3QuICBPbiBhcmNoaXRlY3R1cmVzIHRoYXQKK2RvIG5vdCBoYXZlIENNUFhDSEcsIHRoaXMgaXMgdGhlIGxvY2F0aW9uIHRoYXQgdGhlIG93bmVyIG9mIHRoZSBtdXRleCB3aWxsCitkZXRlcm1pbmUgaWYgYSB3YWl0ZXIgbmVlZHMgdG8gYmUgYXdva2VuIG9yIG5vdC4gIE9uIGFyY2hpdGVjdHVyZXMgdGhhdAorZG8gaGF2ZSBDTVBYQ0hHLCB0aGF0IGNoZWNrIGlzIGRvbmUgaW4gdGhlIGZhc3QgcGF0aCwgYnV0IGl0IGlzIHN0aWxsIG5lZWRlZAoraW4gdGhlIHNsb3cgcGF0aCB0b28uICBJZiBhIHdhaXRlciBvZiBhIG11dGV4IHdva2UgdXAgYmVjYXVzZSBvZiBhIHNpZ25hbAorb3IgdGltZW91dCBiZXR3ZWVuIHRoZSB0aW1lIHRoZSBvd25lciBmYWlsZWQgdGhlIGZhc3QgcGF0aCBDTVBYQ0hHIGNoZWNrIGFuZAordGhlIGdyYWJiaW5nIG9mIHRoZSB3YWl0X2xvY2ssIHRoZSBtdXRleCBtYXkgbm90IGhhdmUgYW55IHdhaXRlcnMsIHRodXMgdGhlCitvd25lciBzdGlsbCBuZWVkcyB0byBtYWtlIHRoaXMgY2hlY2suIElmIHRoZXJlIGFyZSBubyB3YWl0ZXJzIHRoZW4gdGhlIG11dGV4Citvd25lciBmaWVsZCBpcyBzZXQgdG8gTlVMTCwgdGhlIHdhaXRfbG9jayBpcyByZWxlYXNlZCBhbmQgbm90aGluZyBtb3JlIGlzCituZWVkZWQuCisKK0lmIHRoZXJlIGFyZSB3YWl0ZXJzLCB0aGVuIHdlIG5lZWQgdG8gd2FrZSBvbmUgdXAgYW5kIGdpdmUgdGhhdCB3YWl0ZXIKK3BlbmRpbmcgb3duZXJzaGlwLgorCitPbiB0aGUgd2FrZSB1cCBjb2RlLCB0aGUgcGlfbG9jayBvZiB0aGUgY3VycmVudCBvd25lciBpcyB0YWtlbi4gIFRoZSB0b3AKK3dhaXRlciBvZiB0aGUgbG9jayBpcyBmb3VuZCBhbmQgcmVtb3ZlZCBmcm9tIHRoZSB3YWl0X2xpc3Qgb2YgdGhlIG11dGV4CithcyB3ZWxsIGFzIHRoZSBwaV9saXN0IG9mIHRoZSBjdXJyZW50IG93bmVyLiAgVGhlIHRhc2sgZmllbGQgb2YgdGhlIG5ldworcGVuZGluZyBvd25lcidzIHdhaXRlciBzdHJ1Y3R1cmUgaXMgc2V0IHRvIE5VTEwsIGFuZCB0aGUgb3duZXIgZmllbGQgb2YgdGhlCittdXRleCBpcyBzZXQgdG8gdGhlIG5ldyBvd25lciB3aXRoIHRoZSAiUGVuZGluZyBPd25lciIgYml0IHNldCwgYXMgd2VsbAorYXMgdGhlICJIYXMgV2FpdGVycyIgYml0IGlmIHRoZXJlIHN0aWxsIGFyZSBvdGhlciBwcm9jZXNzZXMgYmxvY2tlZCBvbiB0aGUKK211dGV4LgorCitUaGUgcGlfbG9jayBvZiB0aGUgcHJldmlvdXMgb3duZXIgaXMgcmVsZWFzZWQsIGFuZCB0aGUgbmV3IHBlbmRpbmcgb3duZXIncworcGlfbG9jayBpcyB0YWtlbi4gIFJlbWVtYmVyIHRoYXQgdGhpcyBpcyB0aGUgdHJpY2sgdG8gcHJldmVudCB0aGUgcmFjZQorY29uZGl0aW9uIGluIHJ0X211dGV4X2FkanVzdF9wcmlvX2NoYWluIGZyb20gYWRkaW5nIGl0c2VsZiBhcyBhIHdhaXRlcgorb24gdGhlIG11dGV4LgorCitXZSBub3cgY2xlYXIgdGhlICJwaV9ibG9ja2VkX29uIiBmaWVsZCBvZiB0aGUgbmV3IHBlbmRpbmcgb3duZXIsIGFuZCBpZgordGhlIG11dGV4IHN0aWxsIGhhcyB3YWl0ZXJzIHBlbmRpbmcsIHdlIGFkZCB0aGUgbmV3IHRvcCB3YWl0ZXIgdG8gdGhlIHBpX2xpc3QKK29mIHRoZSBwZW5kaW5nIG93bmVyLgorCitGaW5hbGx5IHdlIHVubG9jayB0aGUgcGlfbG9jayBvZiB0aGUgcGVuZGluZyBvd25lciBhbmQgd2FrZSBpdCB1cC4KKworCitDb250YWN0CistLS0tLS0tCisKK0ZvciB1cGRhdGVzIG9uIHRoaXMgZG9jdW1lbnQsIHBsZWFzZSBlbWFpbCBTdGV2ZW4gUm9zdGVkdCA8cm9zdGVkdEBnb29kbWlzLm9yZz4KKworCitDcmVkaXRzCistLS0tLS0tCisKK0F1dGhvcjogIFN0ZXZlbiBSb3N0ZWR0IDxyb3N0ZWR0QGdvb2RtaXMub3JnPgorCitSZXZpZXdlcnM6ICBJbmdvIE1vbG5hciwgVGhvbWFzIEdsZWl4bmVyLCBUaG9tYXMgRHVldHNjaCwgYW5kIFJhbmR5IER1bmxhcAorCitVcGRhdGVzCistLS0tLS0tCisKK1RoaXMgZG9jdW1lbnQgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBmb3IgMi42LjE3LXJjMy1tbTEKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbG9ja2luZy9ydC1tdXRleC50eHQgYi9Eb2N1bWVudGF0aW9uL2xvY2tpbmcvcnQtbXV0ZXgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MzM5M2QKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2xvY2tpbmcvcnQtbXV0ZXgudHh0CkBAIC0wLDAgKzEsNzkgQEAKK1JULW11dGV4IHN1YnN5c3RlbSB3aXRoIFBJIHN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUlQtbXV0ZXhlcyB3aXRoIHByaW9yaXR5IGluaGVyaXRhbmNlIGFyZSB1c2VkIHRvIHN1cHBvcnQgUEktZnV0ZXhlcywKK3doaWNoIGVuYWJsZSBwdGhyZWFkX211dGV4X3QgcHJpb3JpdHkgaW5oZXJpdGFuY2UgYXR0cmlidXRlcworKFBUSFJFQURfUFJJT19JTkhFUklUKS4gW1NlZSBEb2N1bWVudGF0aW9uL3BpLWZ1dGV4LnR4dCBmb3IgbW9yZSBkZXRhaWxzCithYm91dCBQSS1mdXRleGVzLl0KKworVGhpcyB0ZWNobm9sb2d5IHdhcyBkZXZlbG9wZWQgaW4gdGhlIC1ydCB0cmVlIGFuZCBzdHJlYW1saW5lZCBmb3IKK3B0aHJlYWRfbXV0ZXggc3VwcG9ydC4KKworQmFzaWMgcHJpbmNpcGxlczoKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1JULW11dGV4ZXMgZXh0ZW5kIHRoZSBzZW1hbnRpY3Mgb2Ygc2ltcGxlIG11dGV4ZXMgYnkgdGhlIHByaW9yaXR5Citpbmhlcml0YW5jZSBwcm90b2NvbC4KKworQSBsb3cgcHJpb3JpdHkgb3duZXIgb2YgYSBydC1tdXRleCBpbmhlcml0cyB0aGUgcHJpb3JpdHkgb2YgYSBoaWdoZXIKK3ByaW9yaXR5IHdhaXRlciB1bnRpbCB0aGUgcnQtbXV0ZXggaXMgcmVsZWFzZWQuIElmIHRoZSB0ZW1wb3JhcmlseQorYm9vc3RlZCBvd25lciBibG9ja3Mgb24gYSBydC1tdXRleCBpdHNlbGYgaXQgcHJvcGFnYXRlcyB0aGUgcHJpb3JpdHkKK2Jvb3N0aW5nIHRvIHRoZSBvd25lciBvZiB0aGUgb3RoZXIgcnRfbXV0ZXggaXQgZ2V0cyBibG9ja2VkIG9uLiBUaGUKK3ByaW9yaXR5IGJvb3N0aW5nIGlzIGltbWVkaWF0ZWx5IHJlbW92ZWQgb25jZSB0aGUgcnRfbXV0ZXggaGFzIGJlZW4KK3VubG9ja2VkLgorCitUaGlzIGFwcHJvYWNoIGFsbG93cyB1cyB0byBzaG9ydGVuIHRoZSBibG9jayBvZiBoaWdoLXByaW8gdGFza3Mgb24KK211dGV4ZXMgd2hpY2ggcHJvdGVjdCBzaGFyZWQgcmVzb3VyY2VzLiBQcmlvcml0eSBpbmhlcml0YW5jZSBpcyBub3QgYQorbWFnaWMgYnVsbGV0IGZvciBwb29ybHkgZGVzaWduZWQgYXBwbGljYXRpb25zLCBidXQgaXQgYWxsb3dzCit3ZWxsLWRlc2lnbmVkIGFwcGxpY2F0aW9ucyB0byB1c2UgdXNlcnNwYWNlIGxvY2tzIGluIGNyaXRpY2FsIHBhcnRzIG9mCithbiBoaWdoIHByaW9yaXR5IHRocmVhZCwgd2l0aG91dCBsb3NpbmcgZGV0ZXJtaW5pc20uCisKK1RoZSBlbnF1ZXVlaW5nIG9mIHRoZSB3YWl0ZXJzIGludG8gdGhlIHJ0bXV0ZXggd2FpdGVyIGxpc3QgaXMgZG9uZSBpbgorcHJpb3JpdHkgb3JkZXIuIEZvciBzYW1lIHByaW9yaXRpZXMgRklGTyBvcmRlciBpcyBjaG9zZW4uIEZvciBlYWNoCitydG11dGV4LCBvbmx5IHRoZSB0b3AgcHJpb3JpdHkgd2FpdGVyIGlzIGVucXVldWVkIGludG8gdGhlIG93bmVyJ3MKK3ByaW9yaXR5IHdhaXRlcnMgbGlzdC4gVGhpcyBsaXN0IHRvbyBxdWV1ZXMgaW4gcHJpb3JpdHkgb3JkZXIuIFdoZW5ldmVyCit0aGUgdG9wIHByaW9yaXR5IHdhaXRlciBvZiBhIHRhc2sgY2hhbmdlcyAoZm9yIGV4YW1wbGUgaXQgdGltZWQgb3V0IG9yCitnb3QgYSBzaWduYWwpLCB0aGUgcHJpb3JpdHkgb2YgdGhlIG93bmVyIHRhc2sgaXMgcmVhZGp1c3RlZC4gW1RoZQorcHJpb3JpdHkgZW5xdWV1ZWluZyBpcyBoYW5kbGVkIGJ5ICJwbGlzdHMiLCBzZWUgaW5jbHVkZS9saW51eC9wbGlzdC5oCitmb3IgbW9yZSBkZXRhaWxzLl0KKworUlQtbXV0ZXhlcyBhcmUgb3B0aW1pemVkIGZvciBmYXN0cGF0aCBvcGVyYXRpb25zIGFuZCBoYXZlIG5vIGludGVybmFsCitsb2NraW5nIG92ZXJoZWFkIHdoZW4gbG9ja2luZyBhbiB1bmNvbnRlbmRlZCBtdXRleCBvciB1bmxvY2tpbmcgYSBtdXRleAord2l0aG91dCB3YWl0ZXJzLiBUaGUgb3B0aW1pemVkIGZhc3RwYXRoIG9wZXJhdGlvbnMgcmVxdWlyZSBjbXB4Y2hnCitzdXBwb3J0LiBbSWYgdGhhdCBpcyBub3QgYXZhaWxhYmxlIHRoZW4gdGhlIHJ0LW11dGV4IGludGVybmFsIHNwaW5sb2NrCitpcyB1c2VkXQorCitUaGUgc3RhdGUgb2YgdGhlIHJ0LW11dGV4IGlzIHRyYWNrZWQgdmlhIHRoZSBvd25lciBmaWVsZCBvZiB0aGUgcnQtbXV0ZXgKK3N0cnVjdHVyZToKKworcnRfbXV0ZXgtPm93bmVyIGhvbGRzIHRoZSB0YXNrX3N0cnVjdCBwb2ludGVyIG9mIHRoZSBvd25lci4gQml0IDAgYW5kIDEKK2FyZSB1c2VkIHRvIGtlZXAgdHJhY2sgb2YgdGhlICJvd25lciBpcyBwZW5kaW5nIiBhbmQgInJ0bXV0ZXggaGFzCit3YWl0ZXJzIiBzdGF0ZS4KKworIG93bmVyCQliaXQxCWJpdDAKKyBOVUxMCQkwCTAJbXV0ZXggaXMgZnJlZSAoZmFzdCBhY3F1aXJlIHBvc3NpYmxlKQorIE5VTEwJCTAJMQlpbnZhbGlkIHN0YXRlCisgTlVMTAkJMQkwCVRyYW5zaXRpb25hbCBzdGF0ZSoKKyBOVUxMCQkxCTEJaW52YWxpZCBzdGF0ZQorIHRhc2twb2ludGVyCTAJMAltdXRleCBpcyBoZWxkIChmYXN0IHJlbGVhc2UgcG9zc2libGUpCisgdGFza3BvaW50ZXIJMAkxCXRhc2sgaXMgcGVuZGluZyBvd25lcgorIHRhc2twb2ludGVyCTEJMAltdXRleCBpcyBoZWxkIGFuZCBoYXMgd2FpdGVycworIHRhc2twb2ludGVyCTEJMQl0YXNrIGlzIHBlbmRpbmcgb3duZXIgYW5kIG11dGV4IGhhcyB3YWl0ZXJzCisKK1BlbmRpbmctb3duZXJzaGlwIGhhbmRsaW5nIGlzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uOgorcGVuZGluZy1vd25lcnNoaXAgaXMgYXNzaWduZWQgdG8gdGhlIGZpcnN0IChoaWdoZXN0IHByaW9yaXR5KSB3YWl0ZXIgb2YKK3RoZSBtdXRleCwgd2hlbiB0aGUgbXV0ZXggaXMgcmVsZWFzZWQuIFRoZSB0aHJlYWQgaXMgd29rZW4gdXAgYW5kIG9uY2UKK2l0IHN0YXJ0cyBleGVjdXRpbmcgaXQgY2FuIGFjcXVpcmUgdGhlIG11dGV4LiBVbnRpbCB0aGUgbXV0ZXggaXMgdGFrZW4KK2J5IGl0IChiaXQgMCBpcyBjbGVhcmVkKSBhIGNvbXBldGluZyBoaWdoZXIgcHJpb3JpdHkgdGhyZWFkIGNhbiAic3RlYWwiCit0aGUgbXV0ZXggd2hpY2ggcHV0cyB0aGUgd29rZW4gdXAgdGhyZWFkIGJhY2sgb24gdGhlIHdhaXRlcnMgbGlzdC4KKworVGhlIHBlbmRpbmctb3duZXJzaGlwIG9wdGltaXphdGlvbiBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBmb3IgdGhlCit1bmludGVycnVwdGVkIHdvcmtmbG93IG9mIGhpZ2gtcHJpbyB0YXNrcyB3aGljaCByZXBlYXRlZGx5Cit0YWtlcy9yZWxlYXNlcyBsb2NrcyB0aGF0IGhhdmUgbG93ZXItcHJpbyB3YWl0ZXJzLiBXaXRob3V0IHRoaXMKK29wdGltaXphdGlvbiB0aGUgaGlnaGVyLXByaW8gdGhyZWFkIHdvdWxkIHBpbmctcG9uZyB0byB0aGUgbG93ZXItcHJpbwordGFzayBbYmVjYXVzZSBhdCB1bmxvY2sgdGltZSB3ZSBhbHdheXMgYXNzaWduIGEgbmV3IG93bmVyXS4KKworKCopIFRoZSAibXV0ZXggaGFzIHdhaXRlcnMiIGJpdCBnZXRzIHNldCB0byB0YWtlIHRoZSBsb2NrLiBJZiB0aGUgbG9jaworZG9lc24ndCBhbHJlYWR5IGhhdmUgYW4gb3duZXIsIHRoaXMgYml0IGlzIHF1aWNrbHkgY2xlYXJlZCBpZiB0aGVyZSBhcmUKK25vIHdhaXRlcnMuICBTbyB0aGlzIGlzIGEgdHJhbnNpdGlvbmFsIHN0YXRlIHRvIHN5bmNocm9uaXplIHdpdGggbG9va2luZworYXQgdGhlIG93bmVyIGZpZWxkIG9mIHRoZSBtdXRleCBhbmQgdGhlIG11dGV4IG93bmVyIHJlbGVhc2luZyB0aGUgbG9jay4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbG9ja2luZy9zcGlubG9ja3MudHh0IGIvRG9jdW1lbnRhdGlvbi9sb2NraW5nL3NwaW5sb2Nrcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYzNWU0MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbG9ja2luZy9zcGlubG9ja3MudHh0CkBAIC0wLDAgKzEsMTY3IEBACitMZXNzb24gMTogU3BpbiBsb2NrcworCitUaGUgbW9zdCBiYXNpYyBwcmltaXRpdmUgZm9yIGxvY2tpbmcgaXMgc3BpbmxvY2suCisKK3N0YXRpYyBERUZJTkVfU1BJTkxPQ0soeHh4X2xvY2spOworCisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZ4eHhfbG9jaywgZmxhZ3MpOworCS4uLiBjcml0aWNhbCBzZWN0aW9uIGhlcmUgLi4KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ4eHhfbG9jaywgZmxhZ3MpOworCitUaGUgYWJvdmUgaXMgYWx3YXlzIHNhZmUuIEl0IHdpbGwgZGlzYWJsZSBpbnRlcnJ1cHRzIF9sb2NhbGx5XywgYnV0IHRoZQorc3BpbmxvY2sgaXRzZWxmIHdpbGwgZ3VhcmFudGVlIHRoZSBnbG9iYWwgbG9jaywgc28gaXQgd2lsbCBndWFyYW50ZWUgdGhhdAordGhlcmUgaXMgb25seSBvbmUgdGhyZWFkLW9mLWNvbnRyb2wgd2l0aGluIHRoZSByZWdpb24ocykgcHJvdGVjdGVkIGJ5IHRoYXQKK2xvY2suIFRoaXMgd29ya3Mgd2VsbCBldmVuIHVuZGVyIFVQIGFsc28sIHNvIHRoZSBjb2RlIGRvZXMgX25vdF8gbmVlZCB0bword29ycnkgYWJvdXQgVVAgdnMgU01QIGlzc3VlczogdGhlIHNwaW5sb2NrcyB3b3JrIGNvcnJlY3RseSB1bmRlciBib3RoLgorCisgICBOT1RFISBJbXBsaWNhdGlvbnMgb2Ygc3Bpbl9sb2NrcyBmb3IgbWVtb3J5IGFyZSBmdXJ0aGVyIGRlc2NyaWJlZCBpbjoKKworICAgICBEb2N1bWVudGF0aW9uL21lbW9yeS1iYXJyaWVycy50eHQKKyAgICAgICAoNSkgTE9DSyBvcGVyYXRpb25zLgorICAgICAgICg2KSBVTkxPQ0sgb3BlcmF0aW9ucy4KKworVGhlIGFib3ZlIGlzIHVzdWFsbHkgcHJldHR5IHNpbXBsZSAoeW91IHVzdWFsbHkgbmVlZCBhbmQgd2FudCBvbmx5IG9uZQorc3BpbmxvY2sgZm9yIG1vc3QgdGhpbmdzIC0gdXNpbmcgbW9yZSB0aGFuIG9uZSBzcGlubG9jayBjYW4gbWFrZSB0aGluZ3MgYQorbG90IG1vcmUgY29tcGxleCBhbmQgZXZlbiBzbG93ZXIgYW5kIGlzIHVzdWFsbHkgd29ydGggaXQgb25seSBmb3IKK3NlcXVlbmNlcyB0aGF0IHlvdSBfa25vd18gbmVlZCB0byBiZSBzcGxpdCB1cDogYXZvaWQgaXQgYXQgYWxsIGNvc3QgaWYgeW91CithcmVuJ3Qgc3VyZSkuCisKK1RoaXMgaXMgcmVhbGx5IHRoZSBvbmx5IHJlYWxseSBoYXJkIHBhcnQgYWJvdXQgc3BpbmxvY2tzOiBvbmNlIHlvdSBzdGFydAordXNpbmcgc3BpbmxvY2tzIHRoZXkgdGVuZCB0byBleHBhbmQgdG8gYXJlYXMgeW91IG1pZ2h0IG5vdCBoYXZlIG5vdGljZWQKK2JlZm9yZSwgYmVjYXVzZSB5b3UgaGF2ZSB0byBtYWtlIHN1cmUgdGhlIHNwaW5sb2NrcyBjb3JyZWN0bHkgcHJvdGVjdCB0aGUKK3NoYXJlZCBkYXRhIHN0cnVjdHVyZXMgX2V2ZXJ5d2hlcmVfIHRoZXkgYXJlIHVzZWQuIFRoZSBzcGlubG9ja3MgYXJlIG1vc3QKK2Vhc2lseSBhZGRlZCB0byBwbGFjZXMgdGhhdCBhcmUgY29tcGxldGVseSBpbmRlcGVuZGVudCBvZiBvdGhlciBjb2RlIChmb3IKK2V4YW1wbGUsIGludGVybmFsIGRyaXZlciBkYXRhIHN0cnVjdHVyZXMgdGhhdCBub2JvZHkgZWxzZSBldmVyIHRvdWNoZXMpLgorCisgICBOT1RFISBUaGUgc3Bpbi1sb2NrIGlzIHNhZmUgb25seSB3aGVuIHlvdSBfYWxzb18gdXNlIHRoZSBsb2NrIGl0c2VsZgorICAgdG8gZG8gbG9ja2luZyBhY3Jvc3MgQ1BVJ3MsIHdoaWNoIGltcGxpZXMgdGhhdCBFVkVSWVRISU5HIHRoYXQKKyAgIHRvdWNoZXMgYSBzaGFyZWQgdmFyaWFibGUgaGFzIHRvIGFncmVlIGFib3V0IHRoZSBzcGlubG9jayB0aGV5IHdhbnQKKyAgIHRvIHVzZS4KKworLS0tLQorCitMZXNzb24gMjogcmVhZGVyLXdyaXRlciBzcGlubG9ja3MuCisKK0lmIHlvdXIgZGF0YSBhY2Nlc3NlcyBoYXZlIGEgdmVyeSBuYXR1cmFsIHBhdHRlcm4gd2hlcmUgeW91IHVzdWFsbHkgdGVuZAordG8gbW9zdGx5IHJlYWQgZnJvbSB0aGUgc2hhcmVkIHZhcmlhYmxlcywgdGhlIHJlYWRlci13cml0ZXIgbG9ja3MKKyhyd19sb2NrKSB2ZXJzaW9ucyBvZiB0aGUgc3BpbmxvY2tzIGFyZSBzb21ldGltZXMgdXNlZnVsLiBUaGV5IGFsbG93IG11bHRpcGxlCityZWFkZXJzIHRvIGJlIGluIHRoZSBzYW1lIGNyaXRpY2FsIHJlZ2lvbiBhdCBvbmNlLCBidXQgaWYgc29tZWJvZHkgd2FudHMKK3RvIGNoYW5nZSB0aGUgdmFyaWFibGVzIGl0IGhhcyB0byBnZXQgYW4gZXhjbHVzaXZlIHdyaXRlIGxvY2suCisKKyAgIE5PVEUhIHJlYWRlci13cml0ZXIgbG9ja3MgcmVxdWlyZSBtb3JlIGF0b21pYyBtZW1vcnkgb3BlcmF0aW9ucyB0aGFuCisgICBzaW1wbGUgc3BpbmxvY2tzLiAgVW5sZXNzIHRoZSByZWFkZXIgY3JpdGljYWwgc2VjdGlvbiBpcyBsb25nLCB5b3UKKyAgIGFyZSBiZXR0ZXIgb2ZmIGp1c3QgdXNpbmcgc3BpbmxvY2tzLgorCitUaGUgcm91dGluZXMgbG9vayB0aGUgc2FtZSBhcyBhYm92ZToKKworICAgcndsb2NrX3QgeHh4X2xvY2sgPSBfX1JXX0xPQ0tfVU5MT0NLRUQoeHh4X2xvY2spOworCisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXJlYWRfbG9ja19pcnFzYXZlKCZ4eHhfbG9jaywgZmxhZ3MpOworCS4uIGNyaXRpY2FsIHNlY3Rpb24gdGhhdCBvbmx5IHJlYWRzIHRoZSBpbmZvIC4uLgorCXJlYWRfdW5sb2NrX2lycXJlc3RvcmUoJnh4eF9sb2NrLCBmbGFncyk7CisKKwl3cml0ZV9sb2NrX2lycXNhdmUoJnh4eF9sb2NrLCBmbGFncyk7CisJLi4gcmVhZCBhbmQgd3JpdGUgZXhjbHVzaXZlIGFjY2VzcyB0byB0aGUgaW5mbyAuLi4KKwl3cml0ZV91bmxvY2tfaXJxcmVzdG9yZSgmeHh4X2xvY2ssIGZsYWdzKTsKKworVGhlIGFib3ZlIGtpbmQgb2YgbG9jayBtYXkgYmUgdXNlZnVsIGZvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBsaWtlCitsaW5rZWQgbGlzdHMsIGVzcGVjaWFsbHkgc2VhcmNoaW5nIGZvciBlbnRyaWVzIHdpdGhvdXQgY2hhbmdpbmcgdGhlIGxpc3QKK2l0c2VsZi4gIFRoZSByZWFkIGxvY2sgYWxsb3dzIG1hbnkgY29uY3VycmVudCByZWFkZXJzLiAgQW55dGhpbmcgdGhhdAorX2NoYW5nZXNfIHRoZSBsaXN0IHdpbGwgaGF2ZSB0byBnZXQgdGhlIHdyaXRlIGxvY2suCisKKyAgIE5PVEUhIFJDVSBpcyBiZXR0ZXIgZm9yIGxpc3QgdHJhdmVyc2FsLCBidXQgcmVxdWlyZXMgY2FyZWZ1bAorICAgYXR0ZW50aW9uIHRvIGRlc2lnbiBkZXRhaWwgKHNlZSBEb2N1bWVudGF0aW9uL1JDVS9saXN0UkNVLnR4dCkuCisKK0Fsc28sIHlvdSBjYW5ub3QgInVwZ3JhZGUiIGEgcmVhZC1sb2NrIHRvIGEgd3JpdGUtbG9jaywgc28gaWYgeW91IGF0IF9hbnlfCit0aW1lIG5lZWQgdG8gZG8gYW55IGNoYW5nZXMgKGV2ZW4gaWYgeW91IGRvbid0IGRvIGl0IGV2ZXJ5IHRpbWUpLCB5b3UgaGF2ZQordG8gZ2V0IHRoZSB3cml0ZS1sb2NrIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZy4KKworICAgTk9URSEgV2UgYXJlIHdvcmtpbmcgaGFyZCB0byByZW1vdmUgcmVhZGVyLXdyaXRlciBzcGlubG9ja3MgaW4gbW9zdAorICAgY2FzZXMsIHNvIHBsZWFzZSBkb24ndCBhZGQgYSBuZXcgb25lIHdpdGhvdXQgY29uc2Vuc3VzLiAgKEluc3RlYWQsIHNlZQorICAgRG9jdW1lbnRhdGlvbi9SQ1UvcmN1LnR4dCBmb3IgY29tcGxldGUgaW5mb3JtYXRpb24uKQorCistLS0tCisKK0xlc3NvbiAzOiBzcGlubG9ja3MgcmV2aXNpdGVkLgorCitUaGUgc2luZ2xlIHNwaW4tbG9jayBwcmltaXRpdmVzIGFib3ZlIGFyZSBieSBubyBtZWFucyB0aGUgb25seSBvbmVzLiBUaGV5CithcmUgdGhlIG1vc3Qgc2FmZSBvbmVzLCBhbmQgdGhlIG9uZXMgdGhhdCB3b3JrIHVuZGVyIGFsbCBjaXJjdW1zdGFuY2VzLAorYnV0IHBhcnRseSBfYmVjYXVzZV8gdGhleSBhcmUgc2FmZSB0aGV5IGFyZSBhbHNvIGZhaXJseSBzbG93LiBUaGV5IGFyZSBzbG93ZXIKK3RoYW4gdGhleSdkIG5lZWQgdG8gYmUsIGJlY2F1c2UgdGhleSBkbyBoYXZlIHRvIGRpc2FibGUgaW50ZXJydXB0cworKHdoaWNoIGlzIGp1c3QgYSBzaW5nbGUgaW5zdHJ1Y3Rpb24gb24gYSB4ODYsIGJ1dCBpdCdzIGFuIGV4cGVuc2l2ZSBvbmUgLQorYW5kIG9uIG90aGVyIGFyY2hpdGVjdHVyZXMgaXQgY2FuIGJlIHdvcnNlKS4KKworSWYgeW91IGhhdmUgYSBjYXNlIHdoZXJlIHlvdSBoYXZlIHRvIHByb3RlY3QgYSBkYXRhIHN0cnVjdHVyZSBhY3Jvc3MKK3NldmVyYWwgQ1BVJ3MgYW5kIHlvdSB3YW50IHRvIHVzZSBzcGlubG9ja3MgeW91IGNhbiBwb3RlbnRpYWxseSB1c2UKK2NoZWFwZXIgdmVyc2lvbnMgb2YgdGhlIHNwaW5sb2Nrcy4gSUZGIHlvdSBrbm93IHRoYXQgdGhlIHNwaW5sb2NrcyBhcmUKK25ldmVyIHVzZWQgaW4gaW50ZXJydXB0IGhhbmRsZXJzLCB5b3UgY2FuIHVzZSB0aGUgbm9uLWlycSB2ZXJzaW9uczoKKworCXNwaW5fbG9jaygmbG9jayk7CisJLi4uCisJc3Bpbl91bmxvY2soJmxvY2spOworCisoYW5kIHRoZSBlcXVpdmFsZW50IHJlYWQtd3JpdGUgdmVyc2lvbnMgdG9vLCBvZiBjb3Vyc2UpLiBUaGUgc3BpbmxvY2sgd2lsbAorZ3VhcmFudGVlIHRoZSBzYW1lIGtpbmQgb2YgZXhjbHVzaXZlIGFjY2VzcywgYW5kIGl0IHdpbGwgYmUgbXVjaCBmYXN0ZXIuCitUaGlzIGlzIHVzZWZ1bCBpZiB5b3Uga25vdyB0aGF0IHRoZSBkYXRhIGluIHF1ZXN0aW9uIGlzIG9ubHkgZXZlcgorbWFuaXB1bGF0ZWQgZnJvbSBhICJwcm9jZXNzIGNvbnRleHQiLCBpZSBubyBpbnRlcnJ1cHRzIGludm9sdmVkLgorCitUaGUgcmVhc29ucyB5b3UgbXVzdG4ndCB1c2UgdGhlc2UgdmVyc2lvbnMgaWYgeW91IGhhdmUgaW50ZXJydXB0cyB0aGF0CitwbGF5IHdpdGggdGhlIHNwaW5sb2NrIGlzIHRoYXQgeW91IGNhbiBnZXQgZGVhZGxvY2tzOgorCisJc3Bpbl9sb2NrKCZsb2NrKTsKKwkuLi4KKwkJPC0gaW50ZXJydXB0IGNvbWVzIGluOgorCQkJc3Bpbl9sb2NrKCZsb2NrKTsKKword2hlcmUgYW4gaW50ZXJydXB0IHRyaWVzIHRvIGxvY2sgYW4gYWxyZWFkeSBsb2NrZWQgdmFyaWFibGUuIFRoaXMgaXMgb2sgaWYKK3RoZSBvdGhlciBpbnRlcnJ1cHQgaGFwcGVucyBvbiBhbm90aGVyIENQVSwgYnV0IGl0IGlzIF9ub3RfIG9rIGlmIHRoZQoraW50ZXJydXB0IGhhcHBlbnMgb24gdGhlIHNhbWUgQ1BVIHRoYXQgYWxyZWFkeSBob2xkcyB0aGUgbG9jaywgYmVjYXVzZSB0aGUKK2xvY2sgd2lsbCBvYnZpb3VzbHkgbmV2ZXIgYmUgcmVsZWFzZWQgKGJlY2F1c2UgdGhlIGludGVycnVwdCBpcyB3YWl0aW5nCitmb3IgdGhlIGxvY2ssIGFuZCB0aGUgbG9jay1ob2xkZXIgaXMgaW50ZXJydXB0ZWQgYnkgdGhlIGludGVycnVwdCBhbmQgd2lsbAorbm90IGNvbnRpbnVlIHVudGlsIHRoZSBpbnRlcnJ1cHQgaGFzIGJlZW4gcHJvY2Vzc2VkKS4KKworKFRoaXMgaXMgYWxzbyB0aGUgcmVhc29uIHdoeSB0aGUgaXJxLXZlcnNpb25zIG9mIHRoZSBzcGlubG9ja3Mgb25seSBuZWVkCit0byBkaXNhYmxlIHRoZSBfbG9jYWxfIGludGVycnVwdHMgLSBpdCdzIG9rIHRvIHVzZSBzcGlubG9ja3MgaW4gaW50ZXJydXB0cworb24gb3RoZXIgQ1BVJ3MsIGJlY2F1c2UgYW4gaW50ZXJydXB0IG9uIGFub3RoZXIgQ1BVIGRvZXNuJ3QgaW50ZXJydXB0IHRoZQorQ1BVIHRoYXQgaG9sZHMgdGhlIGxvY2ssIHNvIHRoZSBsb2NrLWhvbGRlciBjYW4gY29udGludWUgYW5kIGV2ZW50dWFsbHkKK3JlbGVhc2VzIHRoZSBsb2NrKS4KKworTm90ZSB0aGF0IHlvdSBjYW4gYmUgY2xldmVyIHdpdGggcmVhZC13cml0ZSBsb2NrcyBhbmQgaW50ZXJydXB0cy4gRm9yCitleGFtcGxlLCBpZiB5b3Uga25vdyB0aGF0IHRoZSBpbnRlcnJ1cHQgb25seSBldmVyIGdldHMgYSByZWFkLWxvY2ssIHRoZW4KK3lvdSBjYW4gdXNlIGEgbm9uLWlycSB2ZXJzaW9uIG9mIHJlYWQgbG9ja3MgZXZlcnl3aGVyZSAtIGJlY2F1c2UgdGhleQorZG9uJ3QgYmxvY2sgb24gZWFjaCBvdGhlciAoYW5kIHRodXMgdGhlcmUgaXMgbm8gZGVhZC1sb2NrIHdydCBpbnRlcnJ1cHRzLgorQnV0IHdoZW4geW91IGRvIHRoZSB3cml0ZS1sb2NrLCB5b3UgaGF2ZSB0byB1c2UgdGhlIGlycS1zYWZlIHZlcnNpb24uCisKK0ZvciBhbiBleGFtcGxlIG9mIGJlaW5nIGNsZXZlciB3aXRoIHJ3LWxvY2tzLCBzZWUgdGhlICJ3YWl0cXVldWVfbG9jayIKK2hhbmRsaW5nIGluIGtlcm5lbC9zY2hlZC9jb3JlLmMgLSBub3RoaW5nIGV2ZXIgX2NoYW5nZXNfIGEgd2FpdC1xdWV1ZSBmcm9tCit3aXRoaW4gYW4gaW50ZXJydXB0LCB0aGV5IG9ubHkgcmVhZCB0aGUgcXVldWUgaW4gb3JkZXIgdG8ga25vdyB3aG9tIHRvCit3YWtlIHVwLiBTbyByZWFkLWxvY2tzIGFyZSBzYWZlICh3aGljaCBpcyBnb29kOiB0aGV5IGFyZSB2ZXJ5IGNvbW1vbgoraW5kZWVkKSwgd2hpbGUgd3JpdGUtbG9ja3MgbmVlZCB0byBwcm90ZWN0IHRoZW1zZWx2ZXMgYWdhaW5zdCBpbnRlcnJ1cHRzLgorCisJCUxpbnVzCisKKy0tLS0KKworUmVmZXJlbmNlIGluZm9ybWF0aW9uOgorCitGb3IgZHluYW1pYyBpbml0aWFsaXphdGlvbiwgdXNlIHNwaW5fbG9ja19pbml0KCkgb3Igcndsb2NrX2luaXQoKSBhcworYXBwcm9wcmlhdGU6CisKKyAgIHNwaW5sb2NrX3QgeHh4X2xvY2s7CisgICByd2xvY2tfdCB4eHhfcndfbG9jazsKKworICAgc3RhdGljIGludCBfX2luaXQgeHh4X2luaXQodm9pZCkKKyAgIHsKKwlzcGluX2xvY2tfaW5pdCgmeHh4X2xvY2spOworCXJ3bG9ja19pbml0KCZ4eHhfcndfbG9jayk7CisJLi4uCisgICB9CisKKyAgIG1vZHVsZV9pbml0KHh4eF9pbml0KTsKKworRm9yIHN0YXRpYyBpbml0aWFsaXphdGlvbiwgdXNlIERFRklORV9TUElOTE9DSygpIC8gREVGSU5FX1JXTE9DSygpIG9yCitfX1NQSU5fTE9DS19VTkxPQ0tFRCgpIC8gX19SV19MT0NLX1VOTE9DS0VEKCkgYXMgYXBwcm9wcmlhdGUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2xvY2tpbmcvd3ctbXV0ZXgtZGVzaWduLnR4dCBiL0RvY3VtZW50YXRpb24vbG9ja2luZy93dy1tdXRleC1kZXNpZ24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhMTEyZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2xvY2tpbmcvd3ctbXV0ZXgtZGVzaWduLnR4dApAQCAtMCwwICsxLDM0NCBAQAorV2FpdC9Xb3VuZCBEZWFkbG9jay1Qcm9vZiBNdXRleCBEZXNpZ24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1BsZWFzZSByZWFkIG11dGV4LWRlc2lnbi50eHQgZmlyc3QsIGFzIGl0IGFwcGxpZXMgdG8gd2FpdC93b3VuZCBtdXRleGVzIHRvby4KKworTW90aXZhdGlvbiBmb3IgV1ctTXV0ZXhlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitHUFUncyBkbyBvcGVyYXRpb25zIHRoYXQgY29tbW9ubHkgaW52b2x2ZSBtYW55IGJ1ZmZlcnMuICBUaG9zZSBidWZmZXJzCitjYW4gYmUgc2hhcmVkIGFjcm9zcyBjb250ZXh0cy9wcm9jZXNzZXMsIGV4aXN0IGluIGRpZmZlcmVudCBtZW1vcnkKK2RvbWFpbnMgKGZvciBleGFtcGxlIFZSQU0gdnMgc3lzdGVtIG1lbW9yeSksIGFuZCBzbyBvbi4gIEFuZCB3aXRoCitQUklNRSAvIGRtYWJ1ZiwgdGhleSBjYW4gZXZlbiBiZSBzaGFyZWQgYWNyb3NzIGRldmljZXMuICBTbyB0aGVyZSBhcmUKK2EgaGFuZGZ1bCBvZiBzaXR1YXRpb25zIHdoZXJlIHRoZSBkcml2ZXIgbmVlZHMgdG8gd2FpdCBmb3IgYnVmZmVycyB0bworYmVjb21lIHJlYWR5LiAgSWYgeW91IHRoaW5rIGFib3V0IHRoaXMgaW4gdGVybXMgb2Ygd2FpdGluZyBvbiBhIGJ1ZmZlcgorbXV0ZXggZm9yIGl0IHRvIGJlY29tZSBhdmFpbGFibGUsIHRoaXMgcHJlc2VudHMgYSBwcm9ibGVtIGJlY2F1c2UKK3RoZXJlIGlzIG5vIHdheSB0byBndWFyYW50ZWUgdGhhdCBidWZmZXJzIGFwcGVhciBpbiBhIGV4ZWNidWYvYmF0Y2ggaW4KK3RoZSBzYW1lIG9yZGVyIGluIGFsbCBjb250ZXh0cy4gIFRoYXQgaXMgZGlyZWN0bHkgdW5kZXIgY29udHJvbCBvZgordXNlcnNwYWNlLCBhbmQgYSByZXN1bHQgb2YgdGhlIHNlcXVlbmNlIG9mIEdMIGNhbGxzIHRoYXQgYW4gYXBwbGljYXRpb24KK21ha2VzLglXaGljaCByZXN1bHRzIGluIHRoZSBwb3RlbnRpYWwgZm9yIGRlYWRsb2NrLiAgVGhlIHByb2JsZW0gZ2V0cworbW9yZSBjb21wbGV4IHdoZW4geW91IGNvbnNpZGVyIHRoYXQgdGhlIGtlcm5lbCBtYXkgbmVlZCB0byBtaWdyYXRlIHRoZQorYnVmZmVyKHMpIGludG8gVlJBTSBiZWZvcmUgdGhlIEdQVSBvcGVyYXRlcyBvbiB0aGUgYnVmZmVyKHMpLCB3aGljaAorbWF5IGluIHR1cm4gcmVxdWlyZSBldmljdGluZyBzb21lIG90aGVyIGJ1ZmZlcnMgKGFuZCB5b3UgZG9uJ3Qgd2FudCB0bworZXZpY3Qgb3RoZXIgYnVmZmVycyB3aGljaCBhcmUgYWxyZWFkeSBxdWV1ZWQgdXAgdG8gdGhlIEdQVSksIGJ1dCBmb3IgYQorc2ltcGxpZmllZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwcm9ibGVtIHlvdSBjYW4gaWdub3JlIHRoaXMuCisKK1RoZSBhbGdvcml0aG0gdGhhdCB0aGUgVFRNIGdyYXBoaWNzIHN1YnN5c3RlbSBjYW1lIHVwIHdpdGggZm9yIGRlYWxpbmcgd2l0aAordGhpcyBwcm9ibGVtIGlzIHF1aXRlIHNpbXBsZS4gIEZvciBlYWNoIGdyb3VwIG9mIGJ1ZmZlcnMgKGV4ZWNidWYpIHRoYXQgbmVlZAordG8gYmUgbG9ja2VkLCB0aGUgY2FsbGVyIHdvdWxkIGJlIGFzc2lnbmVkIGEgdW5pcXVlIHJlc2VydmF0aW9uIGlkL3RpY2tldCwKK2Zyb20gYSBnbG9iYWwgY291bnRlci4gIEluIGNhc2Ugb2YgZGVhZGxvY2sgd2hpbGUgbG9ja2luZyBhbGwgdGhlIGJ1ZmZlcnMKK2Fzc29jaWF0ZWQgd2l0aCBhIGV4ZWNidWYsIHRoZSBvbmUgd2l0aCB0aGUgbG93ZXN0IHJlc2VydmF0aW9uIHRpY2tldCAoaS5lLgordGhlIG9sZGVzdCB0YXNrKSB3aW5zLCBhbmQgdGhlIG9uZSB3aXRoIHRoZSBoaWdoZXIgcmVzZXJ2YXRpb24gaWQgKGkuZS4gdGhlCit5b3VuZ2VyIHRhc2spIHVubG9ja3MgYWxsIG9mIHRoZSBidWZmZXJzIHRoYXQgaXQgaGFzIGFscmVhZHkgbG9ja2VkLCBhbmQgdGhlbgordHJpZXMgYWdhaW4uCisKK0luIHRoZSBSREJNUyBsaXRlcmF0dXJlIHRoaXMgZGVhZGxvY2sgaGFuZGxpbmcgYXBwcm9hY2ggaXMgY2FsbGVkIHdhaXQvd291bmQ6CitUaGUgb2xkZXIgdGFza3Mgd2FpdHMgdW50aWwgaXQgY2FuIGFjcXVpcmUgdGhlIGNvbnRlbmRlZCBsb2NrLiBUaGUgeW91bmdlciB0YXNrcworbmVlZHMgdG8gYmFjayBvZmYgYW5kIGRyb3AgYWxsIHRoZSBsb2NrcyBpdCBpcyBjdXJyZW50bHkgaG9sZGluZywgaS5lLiB0aGUKK3lvdW5nZXIgdGFzayBpcyB3b3VuZGVkLgorCitDb25jZXB0cworLS0tLS0tLS0KKworQ29tcGFyZWQgdG8gbm9ybWFsIG11dGV4ZXMgdHdvIGFkZGl0aW9uYWwgY29uY2VwdHMvb2JqZWN0cyBzaG93IHVwIGluIHRoZSBsb2NrCitpbnRlcmZhY2UgZm9yIHcvdyBtdXRleGVzOgorCitBY3F1aXJlIGNvbnRleHQ6IFRvIGVuc3VyZSBldmVudHVhbCBmb3J3YXJkIHByb2dyZXNzIGl0IGlzIGltcG9ydGFudCB0aGUgYSB0YXNrCit0cnlpbmcgdG8gYWNxdWlyZSBsb2NrcyBkb2Vzbid0IGdyYWIgYSBuZXcgcmVzZXJ2YXRpb24gaWQsIGJ1dCBrZWVwcyB0aGUgb25lIGl0CithY3F1aXJlZCB3aGVuIHN0YXJ0aW5nIHRoZSBsb2NrIGFjcXVpc2l0aW9uLiBUaGlzIHRpY2tldCBpcyBzdG9yZWQgaW4gdGhlCithY3F1aXJlIGNvbnRleHQuIEZ1cnRoZXJtb3JlIHRoZSBhY3F1aXJlIGNvbnRleHQga2VlcHMgdHJhY2sgb2YgZGVidWdnaW5nIHN0YXRlCit0byBjYXRjaCB3L3cgbXV0ZXggaW50ZXJmYWNlIGFidXNlLgorCitXL3cgY2xhc3M6IEluIGNvbnRyYXN0IHRvIG5vcm1hbCBtdXRleGVzIHRoZSBsb2NrIGNsYXNzIG5lZWRzIHRvIGJlIGV4cGxpY2l0IGZvcgordy93IG11dGV4ZXMsIHNpbmNlIGl0IGlzIHJlcXVpcmVkIHRvIGluaXRpYWxpemUgdGhlIGFjcXVpcmUgY29udGV4dC4KKworRnVydGhlcm1vcmUgdGhlcmUgYXJlIHRocmVlIGRpZmZlcmVudCBjbGFzcyBvZiB3L3cgbG9jayBhY3F1aXJlIGZ1bmN0aW9uczoKKworKiBOb3JtYWwgbG9jayBhY3F1aXNpdGlvbiB3aXRoIGEgY29udGV4dCwgdXNpbmcgd3dfbXV0ZXhfbG9jay4KKworKiBTbG93cGF0aCBsb2NrIGFjcXVpc2l0aW9uIG9uIHRoZSBjb250ZW5kaW5nIGxvY2ssIHVzZWQgYnkgdGhlIHdvdW5kZWQgdGFzaworICBhZnRlciBoYXZpbmcgZHJvcHBlZCBhbGwgYWxyZWFkeSBhY3F1aXJlZCBsb2Nrcy4gVGhlc2UgZnVuY3Rpb25zIGhhdmUgdGhlCisgIF9zbG93IHBvc3RmaXguCisKKyAgRnJvbSBhIHNpbXBsZSBzZW1hbnRpY3MgcG9pbnQtb2YtdmlldyB0aGUgX3Nsb3cgZnVuY3Rpb25zIGFyZSBub3Qgc3RyaWN0bHkKKyAgcmVxdWlyZWQsIHNpbmNlIHNpbXBseSBjYWxsaW5nIHRoZSBub3JtYWwgd3dfbXV0ZXhfbG9jayBmdW5jdGlvbnMgb24gdGhlCisgIGNvbnRlbmRpbmcgbG9jayAoYWZ0ZXIgaGF2aW5nIGRyb3BwZWQgYWxsIG90aGVyIGFscmVhZHkgYWNxdWlyZWQgbG9ja3MpIHdpbGwKKyAgd29yayBjb3JyZWN0bHkuIEFmdGVyIGFsbCBpZiBubyBvdGhlciB3dyBtdXRleCBoYXMgYmVlbiBhY3F1aXJlZCB5ZXQgdGhlcmUncworICBubyBkZWFkbG9jayBwb3RlbnRpYWwgYW5kIGhlbmNlIHRoZSB3d19tdXRleF9sb2NrIGNhbGwgd2lsbCBibG9jayBhbmQgbm90CisgIHByZW1hdHVyZWx5IHJldHVybiAtRURFQURMSy4gVGhlIGFkdmFudGFnZSBvZiB0aGUgX3Nsb3cgZnVuY3Rpb25zIGlzIGluCisgIGludGVyZmFjZSBzYWZldHk6CisgIC0gd3dfbXV0ZXhfbG9jayBoYXMgYSBfX211c3RfY2hlY2sgaW50IHJldHVybiB0eXBlLCB3aGVyZWFzIHd3X211dGV4X2xvY2tfc2xvdworICAgIGhhcyBhIHZvaWQgcmV0dXJuIHR5cGUuIE5vdGUgdGhhdCBzaW5jZSB3dyBtdXRleCBjb2RlIG5lZWRzIGxvb3BzL3JldHJpZXMKKyAgICBhbnl3YXkgdGhlIF9fbXVzdF9jaGVjayBkb2Vzbid0IHJlc3VsdCBpbiBzcHVyaW91cyB3YXJuaW5ncywgZXZlbiB0aG91Z2ggdGhlCisgICAgdmVyeSBmaXJzdCBsb2NrIG9wZXJhdGlvbiBjYW4gbmV2ZXIgZmFpbC4KKyAgLSBXaGVuIGZ1bGwgZGVidWdnaW5nIGlzIGVuYWJsZWQgd3dfbXV0ZXhfbG9ja19zbG93IGNoZWNrcyB0aGF0IGFsbCBhY3F1aXJlZAorICAgIHd3IG11dGV4IGhhdmUgYmVlbiByZWxlYXNlZCAocHJldmVudGluZyBkZWFkbG9ja3MpIGFuZCBtYWtlcyBzdXJlIHRoYXQgd2UKKyAgICBibG9jayBvbiB0aGUgY29udGVuZGluZyBsb2NrIChwcmV2ZW50aW5nIHNwaW5uaW5nIHRocm91Z2ggdGhlIC1FREVBRExLCisgICAgc2xvd3BhdGggdW50aWwgdGhlIGNvbnRlbmRlZCBsb2NrIGNhbiBiZSBhY3F1aXJlZCkuCisKKyogRnVuY3Rpb25zIHRvIG9ubHkgYWNxdWlyZSBhIHNpbmdsZSB3L3cgbXV0ZXgsIHdoaWNoIHJlc3VsdHMgaW4gdGhlIGV4YWN0IHNhbWUKKyAgc2VtYW50aWNzIGFzIGEgbm9ybWFsIG11dGV4LiBUaGlzIGlzIGRvbmUgYnkgY2FsbGluZyB3d19tdXRleF9sb2NrIHdpdGggYSBOVUxMCisgIGNvbnRleHQuCisKKyAgQWdhaW4gdGhpcyBpcyBub3Qgc3RyaWN0bHkgcmVxdWlyZWQuIEJ1dCBvZnRlbiB5b3Ugb25seSB3YW50IHRvIGFjcXVpcmUgYQorICBzaW5nbGUgbG9jayBpbiB3aGljaCBjYXNlIGl0J3MgcG9pbnRsZXNzIHRvIHNldCB1cCBhbiBhY3F1aXJlIGNvbnRleHQgKGFuZCBzbworICBiZXR0ZXIgdG8gYXZvaWQgZ3JhYmJpbmcgYSBkZWFkbG9jayBhdm9pZGFuY2UgdGlja2V0KS4KKworT2YgY291cnNlLCBhbGwgdGhlIHVzdWFsIHZhcmlhbnRzIGZvciBoYW5kbGluZyB3YWtlLXVwcyBkdWUgdG8gc2lnbmFscyBhcmUgYWxzbworcHJvdmlkZWQuCisKK1VzYWdlCistLS0tLQorCitUaHJlZSBkaWZmZXJlbnQgd2F5cyB0byBhY3F1aXJlIGxvY2tzIHdpdGhpbiB0aGUgc2FtZSB3L3cgY2xhc3MuIENvbW1vbgorZGVmaW5pdGlvbnMgZm9yIG1ldGhvZHMgIzEgYW5kICMyOgorCitzdGF0aWMgREVGSU5FX1dXX0NMQVNTKHd3X2NsYXNzKTsKKworc3RydWN0IG9iaiB7CisJc3RydWN0IHd3X211dGV4IGxvY2s7CisJLyogb2JqIGRhdGEgKi8KK307CisKK3N0cnVjdCBvYmpfZW50cnkgeworCXN0cnVjdCBsaXN0X2hlYWQgaGVhZDsKKwlzdHJ1Y3Qgb2JqICpvYmo7Cit9OworCitNZXRob2QgMSwgdXNpbmcgYSBsaXN0IGluIGV4ZWNidWYtPmJ1ZmZlcnMgdGhhdCdzIG5vdCBhbGxvd2VkIHRvIGJlIHJlb3JkZXJlZC4KK1RoaXMgaXMgdXNlZnVsIGlmIGEgbGlzdCBvZiByZXF1aXJlZCBvYmplY3RzIGlzIGFscmVhZHkgdHJhY2tlZCBzb21ld2hlcmUuCitGdXJ0aGVybW9yZSB0aGUgbG9jayBoZWxwZXIgY2FuIHVzZSBwcm9wYWdhdGUgdGhlIC1FQUxSRUFEWSByZXR1cm4gY29kZSBiYWNrIHRvCit0aGUgY2FsbGVyIGFzIGEgc2lnbmFsIHRoYXQgYW4gb2JqZWN0IGlzIHR3aWNlIG9uIHRoZSBsaXN0LiBUaGlzIGlzIHVzZWZ1bCBpZgordGhlIGxpc3QgaXMgY29uc3RydWN0ZWQgZnJvbSB1c2Vyc3BhY2UgaW5wdXQgYW5kIHRoZSBBQkkgcmVxdWlyZXMgdXNlcnNwYWNlIHRvCitub3QgaGF2ZSBkdXBsaWNhdGUgZW50cmllcyAoZS5nLiBmb3IgYSBncHUgY29tbWFuZGJ1ZmZlciBzdWJtaXNzaW9uIGlvY3RsKS4KKworaW50IGxvY2tfb2JqcyhzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKmN0eCkKK3sKKwlzdHJ1Y3Qgb2JqICpyZXNfb2JqID0gTlVMTDsKKwlzdHJ1Y3Qgb2JqX2VudHJ5ICpjb250ZW5kZWRfZW50cnkgPSBOVUxMOworCXN0cnVjdCBvYmpfZW50cnkgKmVudHJ5OworCisJd3dfYWNxdWlyZV9pbml0KGN0eCwgJnd3X2NsYXNzKTsKKworcmV0cnk6CisJbGlzdF9mb3JfZWFjaF9lbnRyeSAoZW50cnksIGxpc3QsIGhlYWQpIHsKKwkJaWYgKGVudHJ5LT5vYmogPT0gcmVzX29iaikgeworCQkJcmVzX29iaiA9IE5VTEw7CisJCQljb250aW51ZTsKKwkJfQorCQlyZXQgPSB3d19tdXRleF9sb2NrKCZlbnRyeS0+b2JqLT5sb2NrLCBjdHgpOworCQlpZiAocmV0IDwgMCkgeworCQkJY29udGVuZGVkX2VudHJ5ID0gZW50cnk7CisJCQlnb3RvIGVycjsKKwkJfQorCX0KKworCXd3X2FjcXVpcmVfZG9uZShjdHgpOworCXJldHVybiAwOworCitlcnI6CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yZXZlcnNlIChlbnRyeSwgbGlzdCwgaGVhZCkKKwkJd3dfbXV0ZXhfdW5sb2NrKCZlbnRyeS0+b2JqLT5sb2NrKTsKKworCWlmIChyZXNfb2JqKQorCQl3d19tdXRleF91bmxvY2soJnJlc19vYmotPmxvY2spOworCisJaWYgKHJldCA9PSAtRURFQURMSykgeworCQkvKiB3ZSBsb3N0IG91dCBpbiBhIHNlcW5vIHJhY2UsIGxvY2sgYW5kIHJldHJ5Li4gKi8KKwkJd3dfbXV0ZXhfbG9ja19zbG93KCZjb250ZW5kZWRfZW50cnktPm9iai0+bG9jaywgY3R4KTsKKwkJcmVzX29iaiA9IGNvbnRlbmRlZF9lbnRyeS0+b2JqOworCQlnb3RvIHJldHJ5OworCX0KKwl3d19hY3F1aXJlX2ZpbmkoY3R4KTsKKworCXJldHVybiByZXQ7Cit9CisKK01ldGhvZCAyLCB1c2luZyBhIGxpc3QgaW4gZXhlY2J1Zi0+YnVmZmVycyB0aGF0IGNhbiBiZSByZW9yZGVyZWQuIFNhbWUgc2VtYW50aWNzCitvZiBkdXBsaWNhdGUgZW50cnkgZGV0ZWN0aW9uIHVzaW5nIC1FQUxSRUFEWSBhcyBtZXRob2QgMSBhYm92ZS4gQnV0IHRoZQorbGlzdC1yZW9yZGVyaW5nIGFsbG93cyBmb3IgYSBiaXQgbW9yZSBpZGlvbWF0aWMgY29kZS4KKworaW50IGxvY2tfb2JqcyhzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKmN0eCkKK3sKKwlzdHJ1Y3Qgb2JqX2VudHJ5ICplbnRyeSwgKmVudHJ5MjsKKworCXd3X2FjcXVpcmVfaW5pdChjdHgsICZ3d19jbGFzcyk7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5IChlbnRyeSwgbGlzdCwgaGVhZCkgeworCQlyZXQgPSB3d19tdXRleF9sb2NrKCZlbnRyeS0+b2JqLT5sb2NrLCBjdHgpOworCQlpZiAocmV0IDwgMCkgeworCQkJZW50cnkyID0gZW50cnk7CisKKwkJCWxpc3RfZm9yX2VhY2hfZW50cnlfY29udGludWVfcmV2ZXJzZSAoZW50cnkyLCBsaXN0LCBoZWFkKQorCQkJCXd3X211dGV4X3VubG9jaygmZW50cnkyLT5vYmotPmxvY2spOworCisJCQlpZiAocmV0ICE9IC1FREVBRExLKSB7CisJCQkJd3dfYWNxdWlyZV9maW5pKGN0eCk7CisJCQkJcmV0dXJuIHJldDsKKwkJCX0KKworCQkJLyogd2UgbG9zdCBvdXQgaW4gYSBzZXFubyByYWNlLCBsb2NrIGFuZCByZXRyeS4uICovCisJCQl3d19tdXRleF9sb2NrX3Nsb3coJmVudHJ5LT5vYmotPmxvY2ssIGN0eCk7CisKKwkJCS8qCisJCQkgKiBNb3ZlIGJ1ZiB0byBoZWFkIG9mIHRoZSBsaXN0LCB0aGlzIHdpbGwgcG9pbnQKKwkJCSAqIGJ1Zi0+bmV4dCB0byB0aGUgZmlyc3QgdW5sb2NrZWQgZW50cnksCisJCQkgKiByZXN0YXJ0aW5nIHRoZSBmb3IgbG9vcC4KKwkJCSAqLworCQkJbGlzdF9kZWwoJmVudHJ5LT5oZWFkKTsKKwkJCWxpc3RfYWRkKCZlbnRyeS0+aGVhZCwgbGlzdCk7CisJCX0KKwl9CisKKwl3d19hY3F1aXJlX2RvbmUoY3R4KTsKKwlyZXR1cm4gMDsKK30KKworVW5sb2NraW5nIHdvcmtzIHRoZSBzYW1lIHdheSBmb3IgYm90aCBtZXRob2RzICMxIGFuZCAjMjoKKwordm9pZCB1bmxvY2tfb2JqcyhzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKmN0eCkKK3sKKwlzdHJ1Y3Qgb2JqX2VudHJ5ICplbnRyeTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnkgKGVudHJ5LCBsaXN0LCBoZWFkKQorCQl3d19tdXRleF91bmxvY2soJmVudHJ5LT5vYmotPmxvY2spOworCisJd3dfYWNxdWlyZV9maW5pKGN0eCk7Cit9CisKK01ldGhvZCAzIGlzIHVzZWZ1bCBpZiB0aGUgbGlzdCBvZiBvYmplY3RzIGlzIGNvbnN0cnVjdGVkIGFkLWhvYyBhbmQgbm90IHVwZnJvbnQsCitlLmcuIHdoZW4gYWRqdXN0aW5nIGVkZ2VzIGluIGEgZ3JhcGggd2hlcmUgZWFjaCBub2RlIGhhcyBpdHMgb3duIHd3X211dGV4IGxvY2ssCithbmQgZWRnZXMgY2FuIG9ubHkgYmUgY2hhbmdlZCB3aGVuIGhvbGRpbmcgdGhlIGxvY2tzIG9mIGFsbCBpbnZvbHZlZCBub2Rlcy4gdy93CittdXRleGVzIGFyZSBhIG5hdHVyYWwgZml0IGZvciBzdWNoIGEgY2FzZSBmb3IgdHdvIHJlYXNvbnM6CistIFRoZXkgY2FuIGhhbmRsZSBsb2NrLWFjcXVpc2l0aW9uIGluIGFueSBvcmRlciB3aGljaCBhbGxvd3MgdXMgdG8gc3RhcnQgd2Fsa2luZworICBhIGdyYXBoIGZyb20gYSBzdGFydGluZyBwb2ludCBhbmQgdGhlbiBpdGVyYXRpdmVseSBkaXNjb3ZlcmluZyBuZXcgZWRnZXMgYW5kCisgIGxvY2tpbmcgZG93biB0aGUgbm9kZXMgdGhvc2UgZWRnZXMgY29ubmVjdCB0by4KKy0gRHVlIHRvIHRoZSAtRUFMUkVBRFkgcmV0dXJuIGNvZGUgc2lnbmFsbGluZyB0aGF0IGEgZ2l2ZW4gb2JqZWN0cyBpcyBhbHJlYWR5CisgIGhlbGQgdGhlcmUncyBubyBuZWVkIGZvciBhZGRpdGlvbmFsIGJvb2sta2VlcGluZyB0byBicmVhayBjeWNsZXMgaW4gdGhlIGdyYXBoCisgIG9yIGtlZXAgdHJhY2sgb2ZmIHdoaWNoIGxvb2tzIGFyZSBhbHJlYWR5IGhlbGQgKHdoZW4gdXNpbmcgbW9yZSB0aGFuIG9uZSBub2RlCisgIGFzIGEgc3RhcnRpbmcgcG9pbnQpLgorCitOb3RlIHRoYXQgdGhpcyBhcHByb2FjaCBkaWZmZXJzIGluIHR3byBpbXBvcnRhbnQgd2F5cyBmcm9tIHRoZSBhYm92ZSBtZXRob2RzOgorLSBTaW5jZSB0aGUgbGlzdCBvZiBvYmplY3RzIGlzIGR5bmFtaWNhbGx5IGNvbnN0cnVjdGVkIChhbmQgbWlnaHQgdmVyeSB3ZWxsIGJlCisgIGRpZmZlcmVudCB3aGVuIHJldHJ5aW5nIGR1ZSB0byBoaXR0aW5nIHRoZSAtRURFQURMSyB3b3VuZCBjb25kaXRpb24pIHRoZXJlJ3MKKyAgbm8gbmVlZCB0byBrZWVwIGFueSBvYmplY3Qgb24gYSBwZXJzaXN0ZW50IGxpc3Qgd2hlbiBpdCdzIG5vdCBsb2NrZWQuIFdlIGNhbgorICB0aGVyZWZvcmUgbW92ZSB0aGUgbGlzdF9oZWFkIGludG8gdGhlIG9iamVjdCBpdHNlbGYuCistIE9uIHRoZSBvdGhlciBoYW5kIHRoZSBkeW5hbWljIG9iamVjdCBsaXN0IGNvbnN0cnVjdGlvbiBhbHNvIG1lYW5zIHRoYXQgdGhlIC1FQUxSRUFEWSByZXR1cm4KKyAgY29kZSBjYW4ndCBiZSBwcm9wYWdhdGVkLgorCitOb3RlIGFsc28gdGhhdCBtZXRob2RzICMxIGFuZCAjMiBhbmQgbWV0aG9kICMzIGNhbiBiZSBjb21iaW5lZCwgZS5nLiB0byBmaXJzdCBsb2NrIGEKK2xpc3Qgb2Ygc3RhcnRpbmcgbm9kZXMgKHBhc3NlZCBpbiBmcm9tIHVzZXJzcGFjZSkgdXNpbmcgb25lIG9mIHRoZSBhYm92ZQorbWV0aG9kcy4gQW5kIHRoZW4gbG9jayBhbnkgYWRkaXRpb25hbCBvYmplY3RzIGFmZmVjdGVkIGJ5IHRoZSBvcGVyYXRpb25zIHVzaW5nCittZXRob2QgIzMgYmVsb3cuIFRoZSBiYWNrb2ZmL3JldHJ5IHByb2NlZHVyZSB3aWxsIGJlIGEgYml0IG1vcmUgaW52b2x2ZWQsIHNpbmNlCit3aGVuIHRoZSBkeW5hbWljIGxvY2tpbmcgc3RlcCBoaXRzIC1FREVBRExLIHdlIGFsc28gbmVlZCB0byB1bmxvY2sgYWxsIHRoZQorb2JqZWN0cyBhY3F1aXJlZCB3aXRoIHRoZSBmaXhlZCBsaXN0LiBCdXQgdGhlIHcvdyBtdXRleCBkZWJ1ZyBjaGVja3Mgd2lsbCBjYXRjaAorYW55IGludGVyZmFjZSBtaXN1c2UgZm9yIHRoZXNlIGNhc2VzLgorCitBbHNvLCBtZXRob2QgMyBjYW4ndCBmYWlsIHRoZSBsb2NrIGFjcXVpc2l0aW9uIHN0ZXAgc2luY2UgaXQgZG9lc24ndCByZXR1cm4KKy1FQUxSRUFEWS4gT2YgY291cnNlIHRoaXMgd291bGQgYmUgZGlmZmVyZW50IHdoZW4gdXNpbmcgdGhlIF9pbnRlcnJ1cHRpYmxlCit2YXJpYW50cywgYnV0IHRoYXQncyBvdXRzaWRlIG9mIHRoZSBzY29wZSBvZiB0aGVzZSBleGFtcGxlcyBoZXJlLgorCitzdHJ1Y3Qgb2JqIHsKKwlzdHJ1Y3Qgd3dfbXV0ZXggd3dfbXV0ZXg7CisJc3RydWN0IGxpc3RfaGVhZCBsb2NrZWRfbGlzdDsKK307CisKK3N0YXRpYyBERUZJTkVfV1dfQ0xBU1Mod3dfY2xhc3MpOworCit2b2lkIF9fdW5sb2NrX29ianMoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCkKK3sKKwlzdHJ1Y3Qgb2JqICplbnRyeSwgKnRlbXA7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUgKGVudHJ5LCB0ZW1wLCBsaXN0LCBsb2NrZWRfbGlzdCkgeworCQkvKiBuZWVkIHRvIGRvIHRoYXQgYmVmb3JlIHVubG9ja2luZywgc2luY2Ugb25seSB0aGUgY3VycmVudCBsb2NrIGhvbGRlciBpcworCQlhbGxvd2VkIHRvIHVzZSBvYmplY3QgKi8KKwkJbGlzdF9kZWwoJmVudHJ5LT5sb2NrZWRfbGlzdCk7CisJCXd3X211dGV4X3VubG9jayhlbnRyeS0+d3dfbXV0ZXgpCisJfQorfQorCit2b2lkIGxvY2tfb2JqcyhzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKmN0eCkKK3sKKwlzdHJ1Y3Qgb2JqICpvYmo7CisKKwl3d19hY3F1aXJlX2luaXQoY3R4LCAmd3dfY2xhc3MpOworCityZXRyeToKKwkvKiByZS1pbml0IGxvb3Agc3RhcnQgc3RhdGUgKi8KKwlsb29wIHsKKwkJLyogbWFnaWMgY29kZSB3aGljaCB3YWxrcyBvdmVyIGEgZ3JhcGggYW5kIGRlY2lkZXMgd2hpY2ggb2JqZWN0cworCQkgKiB0byBsb2NrICovCisKKwkJcmV0ID0gd3dfbXV0ZXhfbG9jayhvYmotPnd3X211dGV4LCBjdHgpOworCQlpZiAocmV0ID09IC1FQUxSRUFEWSkgeworCQkJLyogd2UgaGF2ZSB0aGF0IG9uZSBhbHJlYWR5LCBnZXQgdG8gdGhlIG5leHQgb2JqZWN0ICovCisJCQljb250aW51ZTsKKwkJfQorCQlpZiAocmV0ID09IC1FREVBRExLKSB7CisJCQlfX3VubG9ja19vYmpzKGxpc3QpOworCisJCQl3d19tdXRleF9sb2NrX3Nsb3cob2JqLCBjdHgpOworCQkJbGlzdF9hZGQoJmVudHJ5LT5sb2NrZWRfbGlzdCwgbGlzdCk7CisJCQlnb3RvIHJldHJ5OworCQl9CisKKwkJLyogbG9ja2VkIGEgbmV3IG9iamVjdCwgYWRkIGl0IHRvIHRoZSBsaXN0ICovCisJCWxpc3RfYWRkX3RhaWwoJmVudHJ5LT5sb2NrZWRfbGlzdCwgbGlzdCk7CisJfQorCisJd3dfYWNxdWlyZV9kb25lKGN0eCk7CisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgdW5sb2NrX29ianMoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwgc3RydWN0IHd3X2FjcXVpcmVfY3R4ICpjdHgpCit7CisJX191bmxvY2tfb2JqcyhsaXN0KTsKKwl3d19hY3F1aXJlX2ZpbmkoY3R4KTsKK30KKworTWV0aG9kIDQ6IE9ubHkgbG9jayBvbmUgc2luZ2xlIG9iamVjdHMuIEluIHRoYXQgY2FzZSBkZWFkbG9jayBkZXRlY3Rpb24gYW5kCitwcmV2ZW50aW9uIGlzIG9idmlvdXNseSBvdmVya2lsbCwgc2luY2Ugd2l0aCBncmFiYmluZyBqdXN0IG9uZSBsb2NrIHlvdSBjYW4ndAorcHJvZHVjZSBhIGRlYWRsb2NrIHdpdGhpbiBqdXN0IG9uZSBjbGFzcy4gVG8gc2ltcGxpZnkgdGhpcyBjYXNlIHRoZSB3L3cgbXV0ZXgKK2FwaSBjYW4gYmUgdXNlZCB3aXRoIGEgTlVMTCBjb250ZXh0LgorCitJbXBsZW1lbnRhdGlvbiBEZXRhaWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Rlc2lnbjoKKyAgd3dfbXV0ZXggY3VycmVudGx5IGVuY2Fwc3VsYXRlcyBhIHN0cnVjdCBtdXRleCwgdGhpcyBtZWFucyBubyBleHRyYSBvdmVyaGVhZCBmb3IKKyAgbm9ybWFsIG11dGV4IGxvY2tzLCB3aGljaCBhcmUgZmFyIG1vcmUgY29tbW9uLiBBcyBzdWNoIHRoZXJlIGlzIG9ubHkgYSBzbWFsbAorICBpbmNyZWFzZSBpbiBjb2RlIHNpemUgaWYgd2FpdC93b3VuZCBtdXRleGVzIGFyZSBub3QgdXNlZC4KKworICBJbiBnZW5lcmFsLCBub3QgbXVjaCBjb250ZW50aW9uIGlzIGV4cGVjdGVkLiBUaGUgbG9ja3MgYXJlIHR5cGljYWxseSB1c2VkIHRvCisgIHNlcmlhbGl6ZSBhY2Nlc3MgdG8gcmVzb3VyY2VzIGZvciBkZXZpY2VzLiBUaGUgb25seSB3YXkgdG8gbWFrZSB3YWtldXBzCisgIHNtYXJ0ZXIgd291bGQgYmUgYXQgdGhlIGNvc3Qgb2YgYWRkaW5nIGEgZmllbGQgdG8gc3RydWN0IG11dGV4X3dhaXRlci4gVGhpcworICB3b3VsZCBhZGQgb3ZlcmhlYWQgdG8gYWxsIGNhc2VzIHdoZXJlIG5vcm1hbCBtdXRleGVzIGFyZSB1c2VkLCBhbmQKKyAgd3dfbXV0ZXhlcyBhcmUgZ2VuZXJhbGx5IGxlc3MgcGVyZm9ybWFuY2Ugc2Vuc2l0aXZlLgorCitMb2NrZGVwOgorICBTcGVjaWFsIGNhcmUgaGFzIGJlZW4gdGFrZW4gdG8gd2FybiBmb3IgYXMgbWFueSBjYXNlcyBvZiBhcGkgYWJ1c2UKKyAgYXMgcG9zc2libGUuIFNvbWUgY29tbW9uIGFwaSBhYnVzZXMgd2lsbCBiZSBjYXVnaHQgd2l0aAorICBDT05GSUdfREVCVUdfTVVURVhFUywgYnV0IENPTkZJR19QUk9WRV9MT0NLSU5HIGlzIHJlY29tbWVuZGVkLgorCisgIFNvbWUgb2YgdGhlIGVycm9ycyB3aGljaCB3aWxsIGJlIHdhcm5lZCBhYm91dDoKKyAgIC0gRm9yZ2V0dGluZyB0byBjYWxsIHd3X2FjcXVpcmVfZmluaSBvciB3d19hY3F1aXJlX2luaXQuCisgICAtIEF0dGVtcHRpbmcgdG8gbG9jayBtb3JlIG11dGV4ZXMgYWZ0ZXIgd3dfYWNxdWlyZV9kb25lLgorICAgLSBBdHRlbXB0aW5nIHRvIGxvY2sgdGhlIHdyb25nIG11dGV4IGFmdGVyIC1FREVBRExLIGFuZAorICAgICB1bmxvY2tpbmcgYWxsIG11dGV4ZXMuCisgICAtIEF0dGVtcHRpbmcgdG8gbG9jayB0aGUgcmlnaHQgbXV0ZXggYWZ0ZXIgLUVERUFETEssCisgICAgIGJlZm9yZSB1bmxvY2tpbmcgYWxsIG11dGV4ZXMuCisKKyAgIC0gQ2FsbGluZyB3d19tdXRleF9sb2NrX3Nsb3cgYmVmb3JlIC1FREVBRExLIHdhcyByZXR1cm5lZC4KKworICAgLSBVbmxvY2tpbmcgbXV0ZXhlcyB3aXRoIHRoZSB3cm9uZyB1bmxvY2sgZnVuY3Rpb24uCisgICAtIENhbGxpbmcgb25lIG9mIHRoZSB3d19hY3F1aXJlXyogdHdpY2Ugb24gdGhlIHNhbWUgY29udGV4dC4KKyAgIC0gVXNpbmcgYSBkaWZmZXJlbnQgd3dfY2xhc3MgZm9yIHRoZSBtdXRleCB0aGFuIGZvciB0aGUgd3dfYWNxdWlyZV9jdHguCisgICAtIE5vcm1hbCBsb2NrZGVwIGVycm9ycyB0aGF0IGNhbiByZXN1bHQgaW4gZGVhZGxvY2tzLgorCisgIFNvbWUgb2YgdGhlIGxvY2tkZXAgZXJyb3JzIHRoYXQgY2FuIHJlc3VsdCBpbiBkZWFkbG9ja3M6CisgICAtIENhbGxpbmcgd3dfYWNxdWlyZV9pbml0IHRvIGluaXRpYWxpemUgYSBzZWNvbmQgd3dfYWNxdWlyZV9jdHggYmVmb3JlCisgICAgIGhhdmluZyBjYWxsZWQgd3dfYWNxdWlyZV9maW5pIG9uIHRoZSBmaXJzdC4KKyAgIC0gJ25vcm1hbCcgZGVhZGxvY2tzIHRoYXQgY2FuIG9jY3VyLgorCitGSVhNRTogVXBkYXRlIHRoaXMgc2VjdGlvbiBvbmNlIHdlIGhhdmUgdGhlIFRBU0tfREVBRExPQ0sgdGFzayBzdGF0ZSBmbGFnIG1hZ2ljCitpbXBsZW1lbnRlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbG9ja3VwLXdhdGNoZG9ncy50eHQgYi9Eb2N1bWVudGF0aW9uL2xvY2t1cC13YXRjaGRvZ3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNmUzM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2xvY2t1cC13YXRjaGRvZ3MudHh0CkBAIC0wLDAgKzEsODIgQEAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorU29mdGxvY2t1cCBkZXRlY3RvciBhbmQgaGFyZGxvY2t1cCBkZXRlY3RvciAoYWthIG5taV93YXRjaGRvZykKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgTGludXgga2VybmVsIGNhbiBhY3QgYXMgYSB3YXRjaGRvZyB0byBkZXRlY3QgYm90aCBzb2Z0IGFuZCBoYXJkCitsb2NrdXBzLgorCitBICdzb2Z0bG9ja3VwJyBpcyBkZWZpbmVkIGFzIGEgYnVnIHRoYXQgY2F1c2VzIHRoZSBrZXJuZWwgdG8gbG9vcCBpbgora2VybmVsIG1vZGUgZm9yIG1vcmUgdGhhbiAyMCBzZWNvbmRzIChzZWUgIkltcGxlbWVudGF0aW9uIiBiZWxvdyBmb3IKK2RldGFpbHMpLCB3aXRob3V0IGdpdmluZyBvdGhlciB0YXNrcyBhIGNoYW5jZSB0byBydW4uIFRoZSBjdXJyZW50CitzdGFjayB0cmFjZSBpcyBkaXNwbGF5ZWQgdXBvbiBkZXRlY3Rpb24gYW5kLCBieSBkZWZhdWx0LCB0aGUgc3lzdGVtCit3aWxsIHN0YXkgbG9ja2VkIHVwLiBBbHRlcm5hdGl2ZWx5LCB0aGUga2VybmVsIGNhbiBiZSBjb25maWd1cmVkIHRvCitwYW5pYzsgYSBzeXNjdGwsICJrZXJuZWwuc29mdGxvY2t1cF9wYW5pYyIsIGEga2VybmVsIHBhcmFtZXRlciwKKyJzb2Z0bG9ja3VwX3BhbmljIiAoc2VlICJEb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCIgZm9yCitkZXRhaWxzKSwgYW5kIGEgY29tcGlsZSBvcHRpb24sICJCT09UUEFSQU1fU09GVExPQ0tVUF9QQU5JQyIsIGFyZQorcHJvdmlkZWQgZm9yIHRoaXMuCisKK0EgJ2hhcmRsb2NrdXAnIGlzIGRlZmluZWQgYXMgYSBidWcgdGhhdCBjYXVzZXMgdGhlIENQVSB0byBsb29wIGluCitrZXJuZWwgbW9kZSBmb3IgbW9yZSB0aGFuIDEwIHNlY29uZHMgKHNlZSAiSW1wbGVtZW50YXRpb24iIGJlbG93IGZvcgorZGV0YWlscyksIHdpdGhvdXQgbGV0dGluZyBvdGhlciBpbnRlcnJ1cHRzIGhhdmUgYSBjaGFuY2UgdG8gcnVuLgorU2ltaWxhcmx5IHRvIHRoZSBzb2Z0bG9ja3VwIGNhc2UsIHRoZSBjdXJyZW50IHN0YWNrIHRyYWNlIGlzIGRpc3BsYXllZAordXBvbiBkZXRlY3Rpb24gYW5kIHRoZSBzeXN0ZW0gd2lsbCBzdGF5IGxvY2tlZCB1cCB1bmxlc3MgdGhlIGRlZmF1bHQKK2JlaGF2aW9yIGlzIGNoYW5nZWQsIHdoaWNoIGNhbiBiZSBkb25lIHRocm91Z2ggYSBzeXNjdGwsCisnaGFyZGxvY2t1cF9wYW5pYycsIGEgY29tcGlsZSB0aW1lIGtub2IsICJCT09UUEFSQU1fSEFSRExPQ0tVUF9QQU5JQyIsCithbmQgYSBrZXJuZWwgcGFyYW1ldGVyLCAibm1pX3dhdGNoZG9nIgorKHNlZSAiRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQiIGZvciBkZXRhaWxzKS4KKworVGhlIHBhbmljIG9wdGlvbiBjYW4gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHBhbmljX3RpbWVvdXQgKHRoaXMKK3RpbWVvdXQgaXMgc2V0IHRocm91Z2ggdGhlIGNvbmZ1c2luZ2x5IG5hbWVkICJrZXJuZWwucGFuaWMiIHN5c2N0bCksCit0byBjYXVzZSB0aGUgc3lzdGVtIHRvIHJlYm9vdCBhdXRvbWF0aWNhbGx5IGFmdGVyIGEgc3BlY2lmaWVkIGFtb3VudAorb2YgdGltZS4KKworPT09IEltcGxlbWVudGF0aW9uID09PQorCitUaGUgc29mdCBhbmQgaGFyZCBsb2NrdXAgZGV0ZWN0b3JzIGFyZSBidWlsdCBvbiB0b3Agb2YgdGhlIGhydGltZXIgYW5kCitwZXJmIHN1YnN5c3RlbXMsIHJlc3BlY3RpdmVseS4gQSBkaXJlY3QgY29uc2VxdWVuY2Ugb2YgdGhpcyBpcyB0aGF0LAoraW4gcHJpbmNpcGxlLCB0aGV5IHNob3VsZCB3b3JrIGluIGFueSBhcmNoaXRlY3R1cmUgd2hlcmUgdGhlc2UKK3N1YnN5c3RlbXMgYXJlIHByZXNlbnQuCisKK0EgcGVyaW9kaWMgaHJ0aW1lciBydW5zIHRvIGdlbmVyYXRlIGludGVycnVwdHMgYW5kIGtpY2sgdGhlIHdhdGNoZG9nCit0YXNrLiBBbiBOTUkgcGVyZiBldmVudCBpcyBnZW5lcmF0ZWQgZXZlcnkgIndhdGNoZG9nX3RocmVzaCIKKyhjb21waWxlLXRpbWUgaW5pdGlhbGl6ZWQgdG8gMTAgYW5kIGNvbmZpZ3VyYWJsZSB0aHJvdWdoIHN5c2N0bCBvZiB0aGUKK3NhbWUgbmFtZSkgc2Vjb25kcyB0byBjaGVjayBmb3IgaGFyZGxvY2t1cHMuIElmIGFueSBDUFUgaW4gdGhlIHN5c3RlbQorZG9lcyBub3QgcmVjZWl2ZSBhbnkgaHJ0aW1lciBpbnRlcnJ1cHQgZHVyaW5nIHRoYXQgdGltZSB0aGUKKydoYXJkbG9ja3VwIGRldGVjdG9yJyAodGhlIGhhbmRsZXIgZm9yIHRoZSBOTUkgcGVyZiBldmVudCkgd2lsbAorZ2VuZXJhdGUgYSBrZXJuZWwgd2FybmluZyBvciBjYWxsIHBhbmljLCBkZXBlbmRpbmcgb24gdGhlCitjb25maWd1cmF0aW9uLgorCitUaGUgd2F0Y2hkb2cgdGFzayBpcyBhIGhpZ2ggcHJpb3JpdHkga2VybmVsIHRocmVhZCB0aGF0IHVwZGF0ZXMgYQordGltZXN0YW1wIGV2ZXJ5IHRpbWUgaXQgaXMgc2NoZWR1bGVkLiBJZiB0aGF0IHRpbWVzdGFtcCBpcyBub3QgdXBkYXRlZAorZm9yIDIqd2F0Y2hkb2dfdGhyZXNoIHNlY29uZHMgKHRoZSBzb2Z0bG9ja3VwIHRocmVzaG9sZCkgdGhlCisnc29mdGxvY2t1cCBkZXRlY3RvcicgKGNvZGVkIGluc2lkZSB0aGUgaHJ0aW1lciBjYWxsYmFjayBmdW5jdGlvbikKK3dpbGwgZHVtcCB1c2VmdWwgZGVidWcgaW5mb3JtYXRpb24gdG8gdGhlIHN5c3RlbSBsb2csIGFmdGVyIHdoaWNoIGl0Cit3aWxsIGNhbGwgcGFuaWMgaWYgaXQgd2FzIGluc3RydWN0ZWQgdG8gZG8gc28gb3IgcmVzdW1lIGV4ZWN1dGlvbiBvZgorb3RoZXIga2VybmVsIGNvZGUuCisKK1RoZSBwZXJpb2Qgb2YgdGhlIGhydGltZXIgaXMgMip3YXRjaGRvZ190aHJlc2gvNSwgd2hpY2ggbWVhbnMgaXQgaGFzCit0d28gb3IgdGhyZWUgY2hhbmNlcyB0byBnZW5lcmF0ZSBhbiBpbnRlcnJ1cHQgYmVmb3JlIHRoZSBoYXJkbG9ja3VwCitkZXRlY3RvciBraWNrcyBpbi4KKworQXMgZXhwbGFpbmVkIGFib3ZlLCBhIGtlcm5lbCBrbm9iIGlzIHByb3ZpZGVkIHRoYXQgYWxsb3dzCithZG1pbmlzdHJhdG9ycyB0byBjb25maWd1cmUgdGhlIHBlcmlvZCBvZiB0aGUgaHJ0aW1lciBhbmQgdGhlIHBlcmYKK2V2ZW50LiBUaGUgcmlnaHQgdmFsdWUgZm9yIGEgcGFydGljdWxhciBlbnZpcm9ubWVudCBpcyBhIHRyYWRlLW9mZgorYmV0d2VlbiBmYXN0IHJlc3BvbnNlIHRvIGxvY2t1cHMgYW5kIGRldGVjdGlvbiBvdmVyaGVhZC4KKworQnkgZGVmYXVsdCwgdGhlIHdhdGNoZG9nIHJ1bnMgb24gYWxsIG9ubGluZSBjb3Jlcy4gIEhvd2V2ZXIsIG9uIGEKK2tlcm5lbCBjb25maWd1cmVkIHdpdGggTk9fSFpfRlVMTCwgYnkgZGVmYXVsdCB0aGUgd2F0Y2hkb2cgcnVucyBvbmx5CitvbiB0aGUgaG91c2VrZWVwaW5nIGNvcmVzLCBub3QgdGhlIGNvcmVzIHNwZWNpZmllZCBpbiB0aGUgIm5vaHpfZnVsbCIKK2Jvb3QgYXJndW1lbnQuICBJZiB3ZSBhbGxvd2VkIHRoZSB3YXRjaGRvZyB0byBydW4gYnkgZGVmYXVsdCBvbgordGhlICJub2h6X2Z1bGwiIGNvcmVzLCB3ZSB3b3VsZCBoYXZlIHRvIHJ1biB0aW1lciB0aWNrcyB0byBhY3RpdmF0ZQordGhlIHNjaGVkdWxlciwgd2hpY2ggd291bGQgcHJldmVudCB0aGUgIm5vaHpfZnVsbCIgZnVuY3Rpb25hbGl0eQorZnJvbSBwcm90ZWN0aW5nIHRoZSB1c2VyIGNvZGUgb24gdGhvc2UgY29yZXMgZnJvbSB0aGUga2VybmVsLgorT2YgY291cnNlLCBkaXNhYmxpbmcgaXQgYnkgZGVmYXVsdCBvbiB0aGUgbm9oel9mdWxsIGNvcmVzIG1lYW5zIHRoYXQKK3doZW4gdGhvc2UgY29yZXMgZG8gZW50ZXIgdGhlIGtlcm5lbCwgYnkgZGVmYXVsdCB3ZSB3aWxsIG5vdCBiZQorYWJsZSB0byBkZXRlY3QgaWYgdGhleSBsb2NrIHVwLiAgSG93ZXZlciwgYWxsb3dpbmcgdGhlIHdhdGNoZG9nCit0byBjb250aW51ZSB0byBydW4gb24gdGhlIGhvdXNla2VlcGluZyAobm9uLXRpY2tsZXNzKSBjb3JlcyBtZWFucwordGhhdCB3ZSB3aWxsIGNvbnRpbnVlIHRvIGRldGVjdCBsb2NrdXBzIHByb3Blcmx5IG9uIHRob3NlIGNvcmVzLgorCitJbiBlaXRoZXIgY2FzZSwgdGhlIHNldCBvZiBjb3JlcyBleGNsdWRlZCBmcm9tIHJ1bm5pbmcgdGhlIHdhdGNoZG9nCittYXkgYmUgYWRqdXN0ZWQgdmlhIHRoZSBrZXJuZWwud2F0Y2hkb2dfY3B1bWFzayBzeXNjdGwuICBGb3IKK25vaHpfZnVsbCBjb3JlcywgdGhpcyBtYXkgYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgYSBjYXNlIHdoZXJlIHRoZQora2VybmVsIHNlZW1zIHRvIGJlIGhhbmdpbmcgb24gdGhlIG5vaHpfZnVsbCBjb3Jlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbG9nby5naWYgYi9Eb2N1bWVudGF0aW9uL2xvZ28uZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlYWU3NWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2xvZ28uZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbG9nby50eHQgYi9Eb2N1bWVudGF0aW9uL2xvZ28udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5NmYwZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2xvZ28udHh0CkBAIC0wLDAgKzEsMTMgQEAKK1RoaXMgaXMgdGhlIGZ1bGwtY29sb3VyIHZlcnNpb24gb2YgdGhlIGN1cnJlbnRseSB1bm9mZmljaWFsIExpbnV4IGxvZ28KKygiY3VycmVudGx5IHVub2ZmaWNpYWwiIGp1c3QgbWVhbnMgdGhhdCB0aGVyZSBoYXMgYmVlbiBubyBwYXBlcndvcmsgYW5kCit0aGF0IEkgaGF2ZSBub3QgcmVhbGx5IGFubm91bmNlZCBpdCB5ZXQpLiAgSXQgd2FzIGNyZWF0ZWQgYnkgTGFycnkgRXdpbmcsCithbmQgaXMgZnJlZWx5IHVzYWJsZSBhcyBsb25nIGFzIHlvdSBhY2tub3dsZWRnZSBMYXJyeSBhcyB0aGUgb3JpZ2luYWwKK2FydGlzdC4gCisKK05vdGUgdGhhdCB0aGVyZSBhcmUgYmxhY2stYW5kLXdoaXRlIHZlcnNpb25zIG9mIHRoaXMgYXZhaWxhYmxlIHRoYXQKK3NjYWxlIGRvd24gdG8gc21hbGxlciBzaXplcyBhbmQgYXJlIGJldHRlciBmb3IgbGV0dGVyaGVhZHMgb3Igd2hhdGV2ZXIKK3lvdSB3YW50IHRvIHVzZSBpdCBmb3I6IGZvciB0aGUgZnVsbCByYW5nZSBvZiBsb2dvcyB0YWtlIGEgbG9vayBhdAorTGFycnkncyB3ZWItcGFnZToKKworCWh0dHA6Ly93d3cuaXNjLnRhbXUuZWR1L35sZXdpbmcvbGludXgvCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbHpvLnR4dCBiL0RvY3VtZW50YXRpb24vbHpvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTQ1ZGQzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9sem8udHh0CkBAIC0wLDAgKzEsMTY0IEBACisKK0xaTyBzdHJlYW0gZm9ybWF0IGFzIHVuZGVyc3Rvb2QgYnkgTGludXgncyBMWk8gZGVjb21wcmVzc29yCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbnRyb2R1Y3Rpb24KKworICBUaGlzIGlzIG5vdCBhIHNwZWNpZmljYXRpb24uIE5vIHNwZWNpZmljYXRpb24gc2VlbXMgdG8gYmUgcHVibGljbHkgYXZhaWxhYmxlCisgIGZvciB0aGUgTFpPIHN0cmVhbSBmb3JtYXQuIFRoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHdoYXQgaW5wdXQgZm9ybWF0IHRoZSBMWk8KKyAgZGVjb21wcmVzc29yIGFzIGltcGxlbWVudGVkIGluIHRoZSBMaW51eCBrZXJuZWwgdW5kZXJzdGFuZHMuIFRoZSBmaWxlIHN1YmplY3QKKyAgb2YgdGhpcyBhbmFseXNpcyBpcyBsaWIvbHpvL2x6bzF4X2RlY29tcHJlc3Nfc2FmZS5jLiBObyBhbmFseXNpcyB3YXMgbWFkZSBvbgorICB0aGUgY29tcHJlc3NvciBub3Igb24gYW55IG90aGVyIGltcGxlbWVudGF0aW9ucyB0aG91Z2ggaXQgc2VlbXMgbGlrZWx5IHRoYXQKKyAgdGhlIGZvcm1hdCBtYXRjaGVzIHRoZSBzdGFuZGFyZCBvbmUuIFRoZSBwdXJwb3NlIG9mIHRoaXMgZG9jdW1lbnQgaXMgdG8KKyAgYmV0dGVyIHVuZGVyc3RhbmQgd2hhdCB0aGUgY29kZSBkb2VzIGluIG9yZGVyIHRvIHByb3Bvc2UgbW9yZSBlZmZpY2llbnQgZml4ZXMKKyAgZm9yIGZ1dHVyZSBidWcgcmVwb3J0cy4KKworRGVzY3JpcHRpb24KKworICBUaGUgc3RyZWFtIGlzIGNvbXBvc2VkIG9mIGEgc2VyaWVzIG9mIGluc3RydWN0aW9ucywgb3BlcmFuZHMsIGFuZCBkYXRhLiBUaGUKKyAgaW5zdHJ1Y3Rpb25zIGNvbnNpc3QgaW4gYSBmZXcgYml0cyByZXByZXNlbnRpbmcgYW4gb3Bjb2RlLCBhbmQgYml0cyBmb3JtaW5nCisgIHRoZSBvcGVyYW5kcyBmb3IgdGhlIGluc3RydWN0aW9uLCB3aG9zZSBzaXplIGFuZCBwb3NpdGlvbiBkZXBlbmQgb24gdGhlCisgIG9wY29kZSBhbmQgb24gdGhlIG51bWJlciBvZiBsaXRlcmFscyBjb3BpZWQgYnkgcHJldmlvdXMgaW5zdHJ1Y3Rpb24uIFRoZQorICBvcGVyYW5kcyBhcmUgdXNlZCB0byBpbmRpY2F0ZSA6CisKKyAgICAtIGEgZGlzdGFuY2Ugd2hlbiBjb3B5aW5nIGRhdGEgZnJvbSB0aGUgZGljdGlvbmFyeSAocGFzdCBvdXRwdXQgYnVmZmVyKQorICAgIC0gYSBsZW5ndGggKG51bWJlciBvZiBieXRlcyB0byBjb3B5IGZyb20gZGljdGlvbmFyeSkKKyAgICAtIHRoZSBudW1iZXIgb2YgbGl0ZXJhbHMgdG8gY29weSwgd2hpY2ggaXMgcmV0YWluZWQgaW4gdmFyaWFibGUgInN0YXRlIgorICAgICAgYXMgYSBwaWVjZSBvZiBpbmZvcm1hdGlvbiBmb3IgbmV4dCBpbnN0cnVjdGlvbnMuCisKKyAgT3B0aW9uYWxseSBkZXBlbmRpbmcgb24gdGhlIG9wY29kZSBhbmQgb3BlcmFuZHMsIGV4dHJhIGRhdGEgbWF5IGZvbGxvdy4gVGhlc2UKKyAgZXh0cmEgZGF0YSBjYW4gYmUgYSBjb21wbGVtZW50IGZvciB0aGUgb3BlcmFuZCAoZWc6IGEgbGVuZ3RoIG9yIGEgZGlzdGFuY2UKKyAgZW5jb2RlZCBvbiBsYXJnZXIgdmFsdWVzKSwgb3IgYSBsaXRlcmFsIHRvIGJlIGNvcGllZCB0byB0aGUgb3V0cHV0IGJ1ZmZlci4KKworICBUaGUgZmlyc3QgYnl0ZSBvZiB0aGUgYmxvY2sgZm9sbG93cyBhIGRpZmZlcmVudCBlbmNvZGluZyBmcm9tIG90aGVyIGJ5dGVzLCBpdAorICBzZWVtcyB0byBiZSBvcHRpbWl6ZWQgZm9yIGxpdGVyYWwgdXNlIG9ubHksIHNpbmNlIHRoZXJlIGlzIG5vIGRpY3Rpb25hcnkgeWV0CisgIHByaW9yIHRvIHRoYXQgYnl0ZS4KKworICBMZW5ndGhzIGFyZSBhbHdheXMgZW5jb2RlZCBvbiBhIHZhcmlhYmxlIHNpemUgc3RhcnRpbmcgd2l0aCBhIHNtYWxsIG51bWJlcgorICBvZiBiaXRzIGluIHRoZSBvcGVyYW5kLiBJZiB0aGUgbnVtYmVyIG9mIGJpdHMgaXNuJ3QgZW5vdWdoIHRvIHJlcHJlc2VudCB0aGUKKyAgbGVuZ3RoLCB1cCB0byAyNTUgbWF5IGJlIGFkZGVkIGluIGluY3JlbWVudHMgYnkgY29uc3VtaW5nIG1vcmUgYnl0ZXMgd2l0aCBhCisgIHJhdGUgb2YgYXQgbW9zdCAyNTUgcGVyIGV4dHJhIGJ5dGUgKHRodXMgdGhlIGNvbXByZXNzaW9uIHJhdGlvIGNhbm5vdCBleGNlZWQKKyAgYXJvdW5kIDI1NToxKS4gVGhlIHZhcmlhYmxlIGxlbmd0aCBlbmNvZGluZyB1c2luZyAjYml0cyBpcyBhbHdheXMgdGhlIHNhbWUgOgorCisgICAgICAgbGVuZ3RoID0gYnl0ZSAmICgoMSA8PCAjYml0cykgLSAxKQorICAgICAgIGlmICghbGVuZ3RoKSB7CisgICAgICAgICAgICAgICBsZW5ndGggPSAoKDEgPDwgI2JpdHMpIC0gMSkKKyAgICAgICAgICAgICAgIGxlbmd0aCArPSAyNTUqKG51bWJlciBvZiB6ZXJvIGJ5dGVzKQorICAgICAgICAgICAgICAgbGVuZ3RoICs9IGZpcnN0LW5vbi16ZXJvLWJ5dGUKKyAgICAgICB9CisgICAgICAgbGVuZ3RoICs9IGNvbnN0YW50IChnZW5lcmFsbHkgMiBvciAzKQorCisgIEZvciByZWZlcmVuY2VzIHRvIHRoZSBkaWN0aW9uYXJ5LCBkaXN0YW5jZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBvdXRwdXQKKyAgcG9pbnRlci4gRGlzdGFuY2VzIGFyZSBlbmNvZGVkIHVzaW5nIHZlcnkgZmV3IGJpdHMgYmVsb25naW5nIHRvIGNlcnRhaW4KKyAgcmFuZ2VzLCByZXN1bHRpbmcgaW4gbXVsdGlwbGUgY29weSBpbnN0cnVjdGlvbnMgdXNpbmcgZGlmZmVyZW50IGVuY29kaW5ncy4KKyAgQ2VydGFpbiBlbmNvZGluZ3MgaW52b2x2ZSBvbmUgZXh0cmEgYnl0ZSwgb3RoZXJzIGludm9sdmUgdHdvIGV4dHJhIGJ5dGVzCisgIGZvcm1pbmcgYSBsaXR0bGUtZW5kaWFuIDE2LWJpdCBxdWFudGl0eSAobWFya2VkIExFMTYgYmVsb3cpLgorCisgIEFmdGVyIGFueSBpbnN0cnVjdGlvbiBleGNlcHQgdGhlIGxhcmdlIGxpdGVyYWwgY29weSwgMCwgMSwgMiBvciAzIGxpdGVyYWxzCisgIGFyZSBjb3BpZWQgYmVmb3JlIHN0YXJ0aW5nIHRoZSBuZXh0IGluc3RydWN0aW9uLiBUaGUgbnVtYmVyIG9mIGxpdGVyYWxzIHRoYXQKKyAgd2VyZSBjb3BpZWQgbWF5IGNoYW5nZSB0aGUgbWVhbmluZyBhbmQgYmVoYXZpb3VyIG9mIHRoZSBuZXh0IGluc3RydWN0aW9uLiBJbgorICBwcmFjdGljZSwgb25seSBvbmUgaW5zdHJ1Y3Rpb24gbmVlZHMgdG8ga25vdyB3aGV0aGVyIDAsIGxlc3MgdGhhbiA0LCBvciBtb3JlCisgIGxpdGVyYWxzIHdlcmUgY29waWVkLiBUaGlzIGlzIHRoZSBpbmZvcm1hdGlvbiBzdG9yZWQgaW4gdGhlIDxzdGF0ZT4gdmFyaWFibGUKKyAgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbi4gVGhpcyBudW1iZXIgb2YgaW1tZWRpYXRlIGxpdGVyYWxzIHRvIGJlIGNvcGllZCBpcworICBnZW5lcmFsbHkgZW5jb2RlZCBpbiB0aGUgbGFzdCB0d28gYml0cyBvZiB0aGUgaW5zdHJ1Y3Rpb24gYnV0IG1heSBhbHNvIGJlCisgIHRha2VuIGZyb20gdGhlIGxhc3QgdHdvIGJpdHMgb2YgYW4gZXh0cmEgb3BlcmFuZCAoZWc6IGRpc3RhbmNlKS4KKworICBFbmQgb2Ygc3RyZWFtIGlzIGRlY2xhcmVkIHdoZW4gYSBibG9jayBjb3B5IG9mIGRpc3RhbmNlIDAgaXMgc2Vlbi4gT25seSBvbmUKKyAgaW5zdHJ1Y3Rpb24gbWF5IGVuY29kZSB0aGlzIGRpc3RhbmNlICgwMDAxSExMTCksIGl0IHRha2VzIG9uZSBMRTE2IG9wZXJhbmQKKyAgZm9yIHRoZSBkaXN0YW5jZSwgdGh1cyByZXF1aXJpbmcgMyBieXRlcy4KKworICBJTVBPUlRBTlQgTk9URSA6IGluIHRoZSBjb2RlIHNvbWUgbGVuZ3RoIGNoZWNrcyBhcmUgbWlzc2luZyBiZWNhdXNlIGNlcnRhaW4KKyAgaW5zdHJ1Y3Rpb25zIGFyZSBjYWxsZWQgdW5kZXIgdGhlIGFzc3VtcHRpb24gdGhhdCBhIGNlcnRhaW4gbnVtYmVyIG9mIGJ5dGVzCisgIGZvbGxvdyBiZWNhdXNlIGl0IGhhcyBhbHJlYWR5IGJlZW4gZ2FyYW50ZWVkIGJlZm9yZSBwYXJzaW5nIHRoZSBpbnN0cnVjdGlvbnMuCisgIFRoZXkganVzdCBoYXZlIHRvICJyZWZpbGwiIHRoaXMgY3JlZGl0IGlmIHRoZXkgY29uc3VtZSBleHRyYSBieXRlcy4gVGhpcyBpcworICBhbiBpbXBsZW1lbnRhdGlvbiBkZXNpZ24gY2hvaWNlIGluZGVwZW5kYW50IG9uIHRoZSBhbGdvcml0aG0gb3IgZW5jb2RpbmcuCisKK0J5dGUgc2VxdWVuY2VzCisKKyAgRmlyc3QgYnl0ZSBlbmNvZGluZyA6CisKKyAgICAgIDAuLjE3ICAgOiBmb2xsb3cgcmVndWxhciBpbnN0cnVjdGlvbiBlbmNvZGluZywgc2VlIGJlbG93LiBJdCBpcyB3b3J0aAorICAgICAgICAgICAgICAgIG5vdGluZyB0aGF0IGNvZGVzIDE2IGFuZCAxNyB3aWxsIHJlcHJlc2VudCBhIGJsb2NrIGNvcHkgZnJvbQorICAgICAgICAgICAgICAgIHRoZSBkaWN0aW9uYXJ5IHdoaWNoIGlzIGVtcHR5LCBhbmQgdGhhdCB0aGV5IHdpbGwgYWx3YXlzIGJlCisgICAgICAgICAgICAgICAgaW52YWxpZCBhdCB0aGlzIHBsYWNlLgorCisgICAgICAxOC4uMjEgIDogY29weSAwLi4zIGxpdGVyYWxzCisgICAgICAgICAgICAgICAgc3RhdGUgPSAoYnl0ZSAtIDE3KSA9IDAuLjMgIFsgY29weSA8c3RhdGU+IGxpdGVyYWxzIF0KKyAgICAgICAgICAgICAgICBza2lwIGJ5dGUKKworICAgICAgMjIuLjI1NSA6IGNvcHkgbGl0ZXJhbCBzdHJpbmcKKyAgICAgICAgICAgICAgICBsZW5ndGggPSAoYnl0ZSAtIDE3KSA9IDQuLjIzOAorICAgICAgICAgICAgICAgIHN0YXRlID0gNCBbIGRvbid0IGNvcHkgZXh0cmEgbGl0ZXJhbHMgXQorICAgICAgICAgICAgICAgIHNraXAgYnl0ZQorCisgIEluc3RydWN0aW9uIGVuY29kaW5nIDoKKworICAgICAgMCAwIDAgMCBYIFggWCBYICAoMC4uMTUpCisgICAgICAgIERlcGVuZHMgb24gdGhlIG51bWJlciBvZiBsaXRlcmFscyBjb3BpZWQgYnkgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24uCisgICAgICAgIElmIGxhc3QgaW5zdHJ1Y3Rpb24gZGlkIG5vdCBjb3B5IGFueSBsaXRlcmFsIChzdGF0ZSA9PSAwKSwgdGhpcworICAgICAgICBlbmNvZGluZyB3aWxsIGJlIGEgY29weSBvZiA0IG9yIG1vcmUgbGl0ZXJhbCwgYW5kIG11c3QgYmUgaW50ZXJwcmV0ZWQKKyAgICAgICAgbGlrZSB0aGlzIDoKKworICAgICAgICAgICAwIDAgMCAwIEwgTCBMIEwgICgwLi4xNSkgIDogY29weSBsb25nIGxpdGVyYWwgc3RyaW5nCisgICAgICAgICAgIGxlbmd0aCA9IDMgKyAoTCA/OiAxNSArICh6ZXJvX2J5dGVzICogMjU1KSArIG5vbl96ZXJvX2J5dGUpCisgICAgICAgICAgIHN0YXRlID0gNCAgKG5vIGV4dHJhIGxpdGVyYWxzIGFyZSBjb3BpZWQpCisKKyAgICAgICAgSWYgbGFzdCBpbnN0cnVjdGlvbiB1c2VkIHRvIGNvcHkgYmV0d2VlbiAxIHRvIDMgbGl0ZXJhbHMgKGVuY29kZWQgaW4KKyAgICAgICAgdGhlIGluc3RydWN0aW9uJ3Mgb3Bjb2RlIG9yIGRpc3RhbmNlKSwgdGhlIGluc3RydWN0aW9uIGlzIGEgY29weSBvZiBhCisgICAgICAgIDItYnl0ZSBibG9jayBmcm9tIHRoZSBkaWN0aW9uYXJ5IHdpdGhpbiBhIDFrQiBkaXN0YW5jZS4gSXQgaXMgd29ydGgKKyAgICAgICAgbm90aW5nIHRoYXQgdGhpcyBpbnN0cnVjdGlvbiBwcm92aWRlcyBsaXR0bGUgc2F2aW5ncyBzaW5jZSBpdCB1c2VzIDIKKyAgICAgICAgYnl0ZXMgdG8gZW5jb2RlIGEgY29weSBvZiAyIG90aGVyIGJ5dGVzIGJ1dCBpdCBlbmNvZGVzIHRoZSBudW1iZXIgb2YKKyAgICAgICAgZm9sbG93aW5nIGxpdGVyYWxzIGZvciBmcmVlLiBJdCBtdXN0IGJlIGludGVycHJldGVkIGxpa2UgdGhpcyA6CisKKyAgICAgICAgICAgMCAwIDAgMCBEIEQgUyBTICAoMC4uMTUpICA6IGNvcHkgMiBieXRlcyBmcm9tIDw9IDFrQiBkaXN0YW5jZQorICAgICAgICAgICBsZW5ndGggPSAyCisgICAgICAgICAgIHN0YXRlID0gUyAoY29weSBTIGxpdGVyYWxzIGFmdGVyIHRoaXMgYmxvY2spCisgICAgICAgICBBbHdheXMgZm9sbG93ZWQgYnkgZXhhY3RseSBvbmUgYnl0ZSA6IEggSCBIIEggSCBIIEggSAorICAgICAgICAgICBkaXN0YW5jZSA9IChIIDw8IDIpICsgRCArIDEKKworICAgICAgICBJZiBsYXN0IGluc3RydWN0aW9uIHVzZWQgdG8gY29weSA0IG9yIG1vcmUgbGl0ZXJhbHMgKGFzIGRldGVjdGVkIGJ5CisgICAgICAgIHN0YXRlID09IDQpLCB0aGUgaW5zdHJ1Y3Rpb24gYmVjb21lcyBhIGNvcHkgb2YgYSAzLWJ5dGUgYmxvY2sgZnJvbSB0aGUKKyAgICAgICAgZGljdGlvbmFyeSBmcm9tIGEgMi4uM2tCIGRpc3RhbmNlLCBhbmQgbXVzdCBiZSBpbnRlcnByZXRlZCBsaWtlIHRoaXMgOgorCisgICAgICAgICAgIDAgMCAwIDAgRCBEIFMgUyAgKDAuLjE1KSAgOiBjb3B5IDMgYnl0ZXMgZnJvbSAyLi4zIGtCIGRpc3RhbmNlCisgICAgICAgICAgIGxlbmd0aCA9IDMKKyAgICAgICAgICAgc3RhdGUgPSBTIChjb3B5IFMgbGl0ZXJhbHMgYWZ0ZXIgdGhpcyBibG9jaykKKyAgICAgICAgIEFsd2F5cyBmb2xsb3dlZCBieSBleGFjdGx5IG9uZSBieXRlIDogSCBIIEggSCBIIEggSCBICisgICAgICAgICAgIGRpc3RhbmNlID0gKEggPDwgMikgKyBEICsgMjA0OQorCisgICAgICAwIDAgMCAxIEggTCBMIEwgICgxNi4uMzEpCisgICAgICAgICAgIENvcHkgb2YgYSBibG9jayB3aXRoaW4gMTYuLjQ4a0IgZGlzdGFuY2UgKHByZWZlcmFibHkgbGVzcyB0aGFuIDEwQikKKyAgICAgICAgICAgbGVuZ3RoID0gMiArIChMID86IDcgKyAoemVyb19ieXRlcyAqIDI1NSkgKyBub25femVyb19ieXRlKQorICAgICAgICBBbHdheXMgZm9sbG93ZWQgYnkgZXhhY3RseSBvbmUgTEUxNiA6ICBEIEQgRCBEIEQgRCBEIEQgOiBEIEQgRCBEIEQgRCBTIFMKKyAgICAgICAgICAgZGlzdGFuY2UgPSAxNjM4NCArIChIIDw8IDE0KSArIEQKKyAgICAgICAgICAgc3RhdGUgPSBTIChjb3B5IFMgbGl0ZXJhbHMgYWZ0ZXIgdGhpcyBibG9jaykKKyAgICAgICAgICAgRW5kIG9mIHN0cmVhbSBpcyByZWFjaGVkIGlmIGRpc3RhbmNlID09IDE2Mzg0CisKKyAgICAgIDAgMCAxIEwgTCBMIEwgTCAgKDMyLi42MykKKyAgICAgICAgICAgQ29weSBvZiBzbWFsbCBibG9jayB3aXRoaW4gMTZrQiBkaXN0YW5jZSAocHJlZmVyYWJseSBsZXNzIHRoYW4gMzRCKQorICAgICAgICAgICBsZW5ndGggPSAyICsgKEwgPzogMzEgKyAoemVyb19ieXRlcyAqIDI1NSkgKyBub25femVyb19ieXRlKQorICAgICAgICBBbHdheXMgZm9sbG93ZWQgYnkgZXhhY3RseSBvbmUgTEUxNiA6ICBEIEQgRCBEIEQgRCBEIEQgOiBEIEQgRCBEIEQgRCBTIFMKKyAgICAgICAgICAgZGlzdGFuY2UgPSBEICsgMQorICAgICAgICAgICBzdGF0ZSA9IFMgKGNvcHkgUyBsaXRlcmFscyBhZnRlciB0aGlzIGJsb2NrKQorCisgICAgICAwIDEgTCBEIEQgRCBTIFMgICg2NC4uMTI3KQorICAgICAgICAgICBDb3B5IDMtNCBieXRlcyBmcm9tIGJsb2NrIHdpdGhpbiAya0IgZGlzdGFuY2UKKyAgICAgICAgICAgc3RhdGUgPSBTIChjb3B5IFMgbGl0ZXJhbHMgYWZ0ZXIgdGhpcyBibG9jaykKKyAgICAgICAgICAgbGVuZ3RoID0gMyArIEwKKyAgICAgICAgIEFsd2F5cyBmb2xsb3dlZCBieSBleGFjdGx5IG9uZSBieXRlIDogSCBIIEggSCBIIEggSCBICisgICAgICAgICAgIGRpc3RhbmNlID0gKEggPDwgMykgKyBEICsgMQorCisgICAgICAxIEwgTCBEIEQgRCBTIFMgICgxMjguLjI1NSkKKyAgICAgICAgICAgQ29weSA1LTggYnl0ZXMgZnJvbSBibG9jayB3aXRoaW4gMmtCIGRpc3RhbmNlCisgICAgICAgICAgIHN0YXRlID0gUyAoY29weSBTIGxpdGVyYWxzIGFmdGVyIHRoaXMgYmxvY2spCisgICAgICAgICAgIGxlbmd0aCA9IDUgKyBMCisgICAgICAgICBBbHdheXMgZm9sbG93ZWQgYnkgZXhhY3RseSBvbmUgYnl0ZSA6IEggSCBIIEggSCBIIEggSAorICAgICAgICAgICBkaXN0YW5jZSA9IChIIDw8IDMpICsgRCArIDEKKworQXV0aG9ycworCisgIFRoaXMgZG9jdW1lbnQgd2FzIHdyaXR0ZW4gYnkgV2lsbHkgVGFycmVhdSA8d0Axd3QuZXU+IG9uIDIwMTQvMDcvMTkgZHVyaW5nIGFuCisgIGFuYWx5c2lzIG9mIHRoZSBkZWNvbXByZXNzaW9uIGNvZGUgYXZhaWxhYmxlIGluIExpbnV4IDMuMTYtcmM1LiBUaGUgY29kZSBpcworICB0cmlja3ksIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhpcyBkb2N1bWVudCBjb250YWlucyBtaXN0YWtlcyBvciB0aGF0IGEgZmV3CisgIGNvcm5lciBjYXNlcyB3ZXJlIG92ZXJsb29rZWQuIEluIGFueSBjYXNlLCBwbGVhc2UgcmVwb3J0IGFueSBkb3VidCwgZml4LCBvcgorICBwcm9wb3NlZCB1cGRhdGVzIHRvIHRoZSBhdXRob3Iocykgc28gdGhhdCB0aGUgZG9jdW1lbnQgY2FuIGJlIHVwZGF0ZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL202OGsvMDAtSU5ERVggYi9Eb2N1bWVudGF0aW9uL202OGsvMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJlOGM2YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbTY4ay8wMC1JTkRFWApAQCAtMCwwICsxLDcgQEAKKzAwLUlOREVYCisJLSB0aGlzIGZpbGUKK1JFQURNRS5idWRkaGEKKwktIEFtaWdhIEJ1ZGRoYSBhbmQgQ2F0d2Vhc2VsIElERSBEcml2ZXIKK2tlcm5lbC1vcHRpb25zLnR4dAorCS0gY29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIExpbnV4L202OGsKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9tNjhrL1JFQURNRS5idWRkaGEgYi9Eb2N1bWVudGF0aW9uL202OGsvUkVBRE1FLmJ1ZGRoYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWE5ODI3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9tNjhrL1JFQURNRS5idWRkaGEKQEAgLTAsMCArMSwyMTAgQEAKKworVGhlIEFtaWdhIEJ1ZGRoYSBhbmQgQ2F0d2Vhc2VsIElERSBEcml2ZXIgKHBhcnQgb2YgaWRlLmMpIHdhcyB3cml0dGVuIGJ5CitHZWVydCBVeXR0ZXJob2V2ZW4gYmFzZWQgb24gdGhlIGZvbGxvd2luZyBzcGVjaWZpY2F0aW9uczoKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlZ2lzdGVyIG1hcCBvZiB0aGUgQnVkZGhhIElERSBjb250cm9sbGVyIGFuZCB0aGUKK0J1ZGRoYS1wYXJ0IG9mIHRoZSBDYXR3ZWFzZWwgWm9ycm8tSUkgdmVyc2lvbgorCitUaGUgQXV0b2NvbmZpZ3VyYXRpb24gaGFzIGJlZW4gaW1wbGVtZW50ZWQganVzdCBhcyBDb21tb2RvcmUKK2Rlc2NyaWJlZCAgaW4gIHRoZWlyICBtYW51YWxzLCBubyB0cmlja3MgaGF2ZSBiZWVuIHVzZWQgKGZvcgorZXhhbXBsZSBsZWF2aW5nIHNvbWUgYWRkcmVzcyBsaW5lcyBvdXQgb2YgdGhlIGVxdWF0aW9ucy4uLikuCitJZiB5b3Ugd2FudCB0byBjb25maWd1cmUgdGhlIGJvYXJkIHlvdXJzZWxmIChmb3IgZXhhbXBsZSBsZXQKK2EgIExpbnV4ICBrZXJuZWwgIGNvbmZpZ3VyZSB0aGUgY2FyZCksIGxvb2sgYXQgdGhlIENvbW1vZG9yZQorRG9jcy4gIFJlYWRpbmcgdGhlIG5pYmJsZXMgc2hvdWxkIGdpdmUgdGhpcyBpbmZvcm1hdGlvbjoKKworVmVuZG9yIG51bWJlcjogNDYyNiAoJDEyMTIpCitwcm9kdWN0IG51bWJlcjogMCAoNDIgZm9yIENhdHdlYXNlbCBaLUlJKQorU2VyaWFsIG51bWJlcjogMAorUm9tLXZlY3RvcjogJDEwMDAKKworVGhlICBjYXJkICBzaG91bGQgYmUgYSBaLUlJIGJvYXJkLCBzaXplIDY0Sywgbm90IGZvciBmcmVlbWVtCitsaXN0LCBSb20tVmVrdG9yIGlzIHZhbGlkLCBubyBzZWNvbmQgQXV0b2NvbmZpZy1ib2FyZCBvbiB0aGUKK3NhbWUgY2FyZCwgbm8gc3BhY2UgcHJlZmVyZW5jZSwgc3VwcG9ydHMgIlNodXR1cF9mb3JldmVyIi4KKworU2V0dGluZyAgdGhlICBiYXNlIGFkZHJlc3Mgc2hvdWxkIGJlIGRvbmUgaW4gdHdvIHN0ZXBzLCBqdXN0CithcyAgdGhlIEFtaWdhIEtpY2tzdGFydCBkb2VzOiAgVGhlIGxvd2VyIG5pYmJsZSBvZiB0aGUgOC1CaXQKK2FkZHJlc3MgaXMgd3JpdHRlbiB0byAkNGEsIHRoZW4gdGhlIHdob2xlIEJ5dGUgaXMgd3JpdHRlbiB0bworJDQ4LCB3aGlsZSBpdCBkb2Vzbid0IG1hdHRlciBob3cgb2Z0ZW4geW91J3JlIHdyaXRpbmcgdG8gJDRhCithcyAgbG9uZyBhcyAkNDggaXMgbm90IHRvdWNoZWQuICBBZnRlciAkNDggaGFzIGJlZW4gd3JpdHRlbiwKK3RoZSAgd2hvbGUgY2FyZCBkaXNhcHBlYXJzIGZyb20gJGU4IGFuZCBpcyBtYXBwZWQgdG8gdGhlIG5ldworYWRkcmVzcyBqdXN0IHdyaXR0ZW4uICBNYWtlIHN1cmUgJDRhIGlzIHdyaXR0ZW4gYmVmb3JlICQ0OCwKK290aGVyd2lzZSB5b3VyIGNoYW5jZSBpcyBvbmx5IDE6MTYgdG8gZmluZCB0aGUgYm9hcmQgOi0pLgorCitUaGUgbG9jYWwgbWVtb3J5LW1hcCBpcyBldmVuIGFjdGl2ZSB3aGVuIG1hcHBlZCB0byAkZTg6CisKKyQwLSQ3ZQkJQXV0b2tvbmZpZy1zcGFjZSwgc2VlIFotSUkgZG9jcy4KKworJDgwLSQ3ZmQJcmVzZXJ2ZWQKKworJDdmZQkJU3BlZWQtc2VsZWN0IFJlZ2lzdGVyOiBSZWFkICYgV3JpdGUKKwkJKGRlc2NyaXB0aW9uIHNlZSBmdXJ0aGVyIGRvd24pCisKKyQ4MDAtJDhmZglJREUtU2VsZWN0IDAgKFBvcnQgMCwgUmVnaXN0ZXIgc2V0IDApCisKKyQ5MDAtJDlmZglJREUtU2VsZWN0IDEgKFBvcnQgMCwgUmVnaXN0ZXIgc2V0IDEpCisKKyRhMDAtJGFmZglJREUtU2VsZWN0IDIgKFBvcnQgMSwgUmVnaXN0ZXIgc2V0IDApCisKKyRiMDAtJGJmZglJREUtU2VsZWN0IDMgKFBvcnQgMSwgUmVnaXN0ZXIgc2V0IDEpCisKKyRjMDAtJGNmZglJREUtU2VsZWN0IDQgKFBvcnQgMiwgUmVnaXN0ZXIgc2V0IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIENhdHdlYXNlbCBvbmx5ISkKKworJGQwMC0kZGZmCUlERS1TZWxlY3QgNSAoUG9ydCAzLCBSZWdpc3RlciBzZXQgMSwKKwkJCSAgICAgIENhdHdlYXNlbCBvbmx5ISkKKworJGUwMC0kZWZmCWxvY2FsIGV4cGFuc2lvbiBwb3J0LCBvbiBDYXR3ZWFzZWwgWi1JSSB0aGUgCisJCUNhdHdlYXNlbCByZWdpc3RlcnMgYXJlIGFsc28gbWFwcGVkIGhlcmUuCisJCU5ldmVyIHRvdWNoLCB1c2UgbXVsdGlkaXNrLmRldmljZSEKKwkJCiskZjAwCQlyZWFkIG9ubHksIEJ5dGUtYWNjZXNzOiBCaXQgNyBzaG93cyB0aGUgCisJCWxldmVsIG9mIHRoZSBJUlEtbGluZSBvZiBJREUgcG9ydCAwLiAKKworJGYwMS0kZjNmCW1pcnJvciBvZiAkZjAwCisKKyRmNDAJCXJlYWQgb25seSwgQnl0ZS1hY2Nlc3M6IEJpdCA3IHNob3dzIHRoZSAKKwkJbGV2ZWwgb2YgdGhlIElSUS1saW5lIG9mIElERSBwb3J0IDEuIAorCiskZjQxLSRmN2YJbWlycm9yIG9mICRmNDAKKworJGY4MAkJcmVhZCBvbmx5LCBCeXRlLWFjY2VzczogQml0IDcgc2hvd3MgdGhlIAorCQlsZXZlbCBvZiB0aGUgSVJRLWxpbmUgb2YgSURFIHBvcnQgMi4gCisJCShDYXR3ZWFzZWwgb25seSEpCisKKyRmODEtJGZiZgltaXJyb3Igb2YgJGY4MAorCiskZmMwCQl3cml0ZS1vbmx5OiBXcml0aW5nIGFueSB2YWx1ZSB0byB0aGlzCisJCXJlZ2lzdGVyIGVuYWJsZXMgSVJRcyB0byBiZSBwYXNzZWQgZnJvbSB0aGUgCisJCUlERSBwb3J0cyB0byB0aGUgWm9ycm8gYnVzLiBUaGlzIG1lY2hhbmlzbSAKKwkJaGFzIGJlZW4gaW1wbGVtZW50ZWQgdG8gYmUgY29tcGF0aWJsZSB3aXRoIAorCQloYXJkZGlza3MgdGhhdCBhcmUgZWl0aGVyIGRlZmVjdGl2ZSBvciBoYXZlCisJCWEgYnVnZ3kgZmlybXdhcmUgYW5kIHB1bGwgdGhlIElSUSBsaW5lIHVwIAorCQl3aGlsZSBzdGFydGluZyB1cC4gSWYgaW50ZXJydXB0cyB3b3VsZCAKKwkJYWx3YXlzIGJlIHBhc3NlZCB0byB0aGUgYnVzLCB0aGUgY29tcHV0ZXIgCisJCW1pZ2h0IG5vdCBzdGFydCB1cC4gT25jZSBlbmFibGVkLCB0aGlzIGZsYWcgCisJCWNhbiBub3QgYmUgZGlzYWJsZWQgYWdhaW4uIFRoZSBsZXZlbCBvZiB0aGUgCisJCWZsYWcgY2FuIG5vdCBiZSBkZXRlcm1pbmVkIGJ5IHNvZnR3YXJlIAorCQkod2hhdCBmb3I/IFdyaXRlIHRvIG1lIGlmIGl0J3MgbmVjZXNzYXJ5ISkuCisKKyRmYzEtJGZmZgltaXJyb3Igb2YgJGZjMAorCiskMTAwMC0kZmZmZglCdWRkaGEtUm9tIHdpdGggb2Zmc2V0ICQxMDAwIGluIHRoZSByb20KKwkJY2hpcC4gVGhlIGFkZHJlc3NlcyAkMCB0byAkZmZmIG9mIHRoZSByb20gCisJCWNoaXAgY2Fubm90IGJlIHJlYWQuIFJvbSBpcyBCeXRlLXdpZGUgYW5kCisJCW1hcHBlZCB0byBldmVuIGFkZHJlc3Nlcy4KKworVGhlICBJREUgcG9ydHMgaXNzdWUgYW4gSU5UMi4gIFlvdSBjYW4gcmVhZCB0aGUgbGV2ZWwgb2YgdGhlCitJUlEtbGluZXMgIG9mICB0aGUgIElERS1wb3J0cyBieSByZWFkaW5nIGZyb20gdGhlIHRocmVlICh0d28KK2ZvciAgQnVkZGhhLW9ubHkpICByZWdpc3RlcnMgICRmMDAsICRmNDAgYW5kICRmODAuICBUaGlzIHdheQorbW9yZSAgdGhhbiBvbmUgSS9PIHJlcXVlc3QgY2FuIGJlIGhhbmRsZWQgYW5kIHlvdSBjYW4gZWFzaWx5CitkZXRlcm1pbmUgIHdoYXQgIGRyaXZlciAgaGFzICB0byBzZXJ2ZSB0aGUgSU5UMi4gIEJ1ZGRoYSBhbmQKK0NhdHdlYXNlbCAgZXhwYW5zaW9uICBib2FyZHMgIGNhbiBpc3N1ZSBhbiBJTlQ2LiAgQSBzZXBhcmF0ZQorbWVtb3J5ICBtYXAgIGlzIGF2YWlsYWJsZSBmb3IgdGhlIEkvTyBtb2R1bGUgYW5kIHRoZSBzeXNvcCdzCitJL08gbW9kdWxlLgorCitUaGUgSURFIHBvcnRzIGFyZSBmZWQgYnkgdGhlIGFkZHJlc3MgbGluZXMgQTIgdG8gQTQsIGp1c3QgYXMKK3RoZSAgQW1pZ2EgIDEyMDAgIGFuZCAgQW1pZ2EgIDQwMDAgIElERSBwb3J0cyBhcmUuICBUaGlzIHdheQorZXhpc3RpbmcgIGRyaXZlcnMgIGNhbiBiZSBlYXNpbHkgcG9ydGVkIHRvIEJ1ZGRoYS4gIEEgbW92ZS5sCitwb2xscyAgdHdvICB3b3JkcyAgb3V0IG9mIHRoZSBzYW1lIGFkZHJlc3Mgb2YgSURFIHBvcnQgc2luY2UKK2V2ZXJ5ICB3b3JkICBpcyAgbWlycm9yZWQgIG9uY2UuICBtb3ZlbSBpcyBub3QgcG9zc2libGUsIGJ1dAoraXQncyAgbm90ICBuZWNlc3NhcnkgIGVpdGhlciwgIGJlY2F1c2UgIHlvdSBjYW4gb25seSBzcGVlZHVwCis2ODAwMCAgc3lzdGVtcyAgd2l0aCAgdGhpcyAgdGVjaG5pcXVlLiAgIEEgNjgwMjAgc3lzdGVtIHdpdGgKK2Zhc3RtZW0gaXMgZmFzdGVyIHdpdGggbW92ZS5sLgorCitJZiB5b3UncmUgdXNpbmcgdGhlIG1pcnJvcmVkIHJlZ2lzdGVycyBvZiB0aGUgSURFLXBvcnRzIHdpdGgKK0E2PTEsICB0aGUgQnVkZGhhIGRvZXNuJ3QgY2FyZSBhYm91dCB0aGUgc3BlZWQgdGhhdCB5b3UgaGF2ZQorc2VsZWN0ZWQgIGluICB0aGUgIHNwZWVkICByZWdpc3RlciAoc2VlIGZ1cnRoZXIgZG93bikuICBXaXRoCitBNj0xICAoZm9yIGV4YW1wbGUgJDg0MCBmb3IgcG9ydCAwLCByZWdpc3RlciBzZXQgMCksIGEgNzgwbnMKK2FjY2VzcyAgaXMgYmVpbmcgbWFkZS4gIFRoZXNlIHJlZ2lzdGVycyBzaG91bGQgYmUgdXNlZCBmb3IgYQorY29tbWFuZCAgIGFjY2VzcyAgIHRvICB0aGUgIGhhcmRkaXNrL0NELVJvbSwgIHNpbmNlICBjb21tYW5kCithY2Nlc3NlcyAgYXJlIEJ5dGUtd2lkZSBhbmQgaGF2ZSB0byBiZSBtYWRlIHNsb3dlciBhY2NvcmRpbmcKK3RvIHRoZSBBVEEtWDNUOSBtYW51YWwuCisKK05vdyAgZm9yIHRoZSBzcGVlZC1yZWdpc3RlcjogIFRoZSByZWdpc3RlciBpcyBieXRlLXdpZGUsIGFuZAorb25seSAgdGhlICB1cHBlciAgdGhyZWUgIGJpdHMgYXJlIHVzZWQgKEJpdHMgNyB0byA1KS4gIEJpdCA0CittdXN0ICBhbHdheXMgIGJlIHNldCB0byAxIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBsYXRlciBCdWRkaGEKK3ZlcnNpb25zICAoaWYgIEknbGwgIGV2ZXIgIHVwZGF0ZSB0aGlzIG9uZSkuICBJIHByZXN1bWUgdGhhdAorSSdsbCAgbmV2ZXIgdXNlIHRoZSBsb3dlciBmb3VyIGJpdHMsIGJ1dCB0aGV5IGhhdmUgdG8gYmUgc2V0Cit0byAxIGJ5IGRlZmluaXRpb24uCisgIFRoZSAgdmFsdWVzIGluIHRoaXMgdGFibGUgaGF2ZSB0byBiZSBzaGlmdGVkIDUgYml0cyB0byB0aGUKK2xlZnQgYW5kIG9yJ2Qgd2l0aCAkMWYgKHRoaXMgc2V0cyB0aGUgbG93ZXIgNSBiaXRzKS4KKworQWxsICB0aGUgdGltaW5ncyBoYXZlIGluIGNvbW1vbjogIFNlbGVjdCBhbmQgSU9SL0lPVyByaXNlIGF0Cit0aGUgIHNhbWUgIHRpbWUuICAgSU9SICBhbmQgIElPVyBoYXZlIGEgcHJvcGFnYXRpb24gZGVsYXkgb2YKK2Fib3V0ICAzMG5zICB0byAgdGhlIGNsb2NrcyBvbiB0aGUgWm9ycm8gYnVzLCB0aGF0J3Mgd2h5IHRoZQordmFsdWVzICBhcmUgbm8gbXVsdGlwbGUgb2YgNzEuICBPbmUgY2xvY2stY3ljbGUgaXMgNzFucyBsb25nCisoZXhhY3RseSA3MCw1IGF0IDE0LDE4IE1oeiBvbiBQQUwgc3lzdGVtcykuCisKK3ZhbHVlIDAgKERlZmF1bHQgYWZ0ZXIgcmVzZXQpCisKKzQ5N25zIFNlbGVjdCAoNyBjbG9jayBjeWNsZXMpICwgSU9SL0lPVyBhZnRlciAxNzJucyAoMiBjbG9jayBjeWNsZXMpCisoc2FtZSB0aW1pbmcgYXMgdGhlIEFtaWdhIDEyMDAgZG9lcyBvbiBpdCdzIElERSBwb3J0IHdpdGhvdXQKK2FjY2VsZXJhdG9yIGNhcmQpCisKK3ZhbHVlIDEKKworNjM5bnMgU2VsZWN0ICg5IGNsb2NrIGN5Y2xlcyksIElPUi9JT1cgYWZ0ZXIgMjQzbnMgKDMgY2xvY2sgY3ljbGVzKQorCit2YWx1ZSAyCisKKzc4MW5zIFNlbGVjdCAoMTEgY2xvY2sgY3ljbGVzKSwgSU9SL0lPVyBhZnRlciAzMTRucyAoNCBjbG9jayBjeWNsZXMpCisKK3ZhbHVlIDMKKworMzU1bnMgU2VsZWN0ICg1IGNsb2NrIGN5Y2xlcyksIElPUi9JT1cgYWZ0ZXIgMTAxbnMgKDEgY2xvY2sgY3ljbGUpCisKK3ZhbHVlIDQKKworMzU1bnMgU2VsZWN0ICg1IGNsb2NrIGN5Y2xlcyksIElPUi9JT1cgYWZ0ZXIgMTcybnMgKDIgY2xvY2sgY3ljbGVzKQorCit2YWx1ZSA1CisKKzM1NW5zIFNlbGVjdCAoNSBjbG9jayBjeWNsZXMpLCBJT1IvSU9XIGFmdGVyIDI0M25zICgzIGNsb2NrIGN5Y2xlcykKKwordmFsdWUgNgorCisxMDY1bnMgU2VsZWN0ICgxNSBjbG9jayBjeWNsZXMpLCBJT1IvSU9XIGFmdGVyIDMxNG5zICg0IGNsb2NrIGN5Y2xlcykKKwordmFsdWUgNworCiszNTVucyBTZWxlY3QsICg1IGNsb2NrIGN5Y2xlcyksIElPUi9JT1cgYWZ0ZXIgMTAxbnMgKDEgY2xvY2sgY3ljbGUpCisKK1doZW4gYWNjZXNzaW5nIElERSByZWdpc3RlcnMgd2l0aCBBNj0xIChmb3IgZXhhbXBsZSAkODR4KSwKK3RoZSB0aW1pbmcgd2lsbCBhbHdheXMgYmUgbW9kZSAwIDgtYml0IGNvbXBhdGlibGUsIG5vIG1hdHRlcgord2hhdCB5b3UgaGF2ZSBzZWxlY3RlZCBpbiB0aGUgc3BlZWQgcmVnaXN0ZXI6CisKKzc4MW5zIHNlbGVjdCwgSU9SL0lPVyBhZnRlciA0IGNsb2NrIGN5Y2xlcyAoPTMxNG5zKSBha3RpdmUuIAorCitBbGwgIHRoZSAgdGltaW5ncyB3aXRoIGEgdmVyeSBzaG9ydCBzZWxlY3Qtc2lnbmFsICh0aGUgMzU1bnMKK2Zhc3QgIGFjY2Vzc2VzKSAgZGVwZW5kICBvbiB0aGUgYWNjZWxlcmF0b3IgY2FyZCB1c2VkIGluIHRoZQorc3lzdGVtOiAgU29tZXRpbWVzIHR3byBtb3JlIGNsb2NrIGN5Y2xlcyBhcmUgaW5zZXJ0ZWQgYnkgdGhlCitidXMgIGludGVyZmFjZSwgIG1ha2luZyAgdGhlICB3aG9sZSBhY2Nlc3MgNDk3bnMgbG9uZy4gIFRoaXMKK2RvZXNuJ3QgIGFmZmVjdCAgdGhlICByZWxpYWJpbGl0eSAgb2YgdGhlIGNvbnRyb2xsZXIgbm9yIHRoZQorcGVyZm9ybWFuY2UgIG9mICB0aGUgIGNhcmQsICBzaW5jZSAgdGhpcyBkb2Vzbid0IGhhcHBlbiB2ZXJ5CitvZnRlbi4KKworQWxsICB0aGUgIHRpbWluZ3MgIGFyZSAgY2FsY3VsYXRlZCAgYW5kICBvbmx5ICBjb25maXJtZWQgIGJ5CittZWFzdXJlbWVudHMgIHRoYXQgYWxsb3dlZCBtZSB0byBjb3VudCB0aGUgY2xvY2sgY3ljbGVzLiAgSWYKK3RoZSAgc3lzdGVtICBpcyBjbG9ja2VkIGJ5IGFuIG9zY2lsbGF0b3Igb3RoZXIgdGhhbiAyOCwzNzUxNgorTWh6ICAoZm9yICBleGFtcGxlICB0aGUgIE5UU0MtZnJlcXVlbmN5ICAyOCw2MzYzNiBNaHopLCBlYWNoCitjbG9jayAgY3ljbGUgaXMgc2hvcnRlbmVkIHRvIGEgYml0IGxlc3MgdGhhbiA3MG5zIChub3Qgd29ydGgKK21lbnRpb25pbmcpLiAgIFlvdSAgY291bGQgdGhpbmsgb2YgYSBzbWFsbCBwZXJmb3JtYW5jZSBib29zdAorYnkgIG92ZXJjbG9ja2luZyAgdGhlICBzeXN0ZW0sICBidXQgIHlvdSB3b3VsZCBlaXRoZXIgbmVlZCBhCittdWx0aXN5bmMgIG1vbml0b3IsICBvciAgYSAgZ3JhcGhpY3MgY2FyZCwgYW5kIHlvdXIgaW50ZXJuYWwKK2Rpc2tkcml2ZSB3b3VsZCBnbyBjcmF6eSwgdGhhdCdzIHdoeSB5b3Ugc2hvdWxkbid0IHR1bmUgeW91cgorQW1pZ2EgdGhpcyB3YXkuCisKK0dpdmluZyAgeW91ICB0aGUgIHBvc3NpYmlsaXR5ICB0byAgd3JpdGUgIHNvZnR3YXJlICB0aGF0ICBpcworY29tcGF0aWJsZSAgd2l0aCBib3RoIHRoZSBCdWRkaGEgYW5kIHRoZSBDYXR3ZWFzZWwgWi1JSSwgVGhlCitCdWRkaGEgIGFjdHMgIGp1c3QgIGxpa2UgIGEgIENhdHdlYXNlbCAgWi1JSSAgd2l0aCBubyBkZXZpY2UKK2Nvbm5lY3RlZCAgdG8gIHRoZSAgdGhpcmQgIElERS1wb3J0LiAgIFRoZSBJUlEtcmVnaXN0ZXIgJGY4MAorYWx3YXlzICBzaG93cyBhICJubyBJUlEgaGVyZSIgb24gdGhlIEJ1ZGRoYSwgYW5kIGFjY2Vzc2VzIHRvCit0aGUgIHRoaXJkICBJREUgIHBvcnQgIGFyZSAgZ29pbmcgaW50byBkYXRhJ3MgTmlyd2FuYSBvbiB0aGUKK0J1ZGRoYS4KKworCQkJICAgIEplbnMgU2Now7ZuZmVsZCBmZWJydWFyeSAxOXRoLCAxOTk3CisJCQkJCXVwZGF0ZWQgbWF5IDI3dGgsIDE5OTcKKwkJCSAgICAgZU1haWw6IHN5c29wQG5vc3RsZ2ljLnRuZy5vY2hlLmRlCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbTY4ay9rZXJuZWwtb3B0aW9ucy50eHQgYi9Eb2N1bWVudGF0aW9uL202OGsva2VybmVsLW9wdGlvbnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZjMyYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL202OGsva2VybmVsLW9wdGlvbnMudHh0CkBAIC0wLDAgKzEsODg0IEBACisKKworCQkJCSAgQ29tbWFuZCBMaW5lIE9wdGlvbnMgZm9yIExpbnV4L202OGsKKwkJCQkgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0xhc3QgVXBkYXRlOiAyIE1heSAxOTk5CitMaW51eC9tNjhrIHZlcnNpb246IDIuMi42CitBdXRob3I6IFJvbWFuLkhvZGVrQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlIChSb21hbiBIb2RlaykKK1VwZGF0ZTogamRzQGtvbS5hdWMuZGsgKEplcyBTb3JlbnNlbikgYW5kIGZhcUBsaW51eC1tNjhrLm9yZyAoQ2hyaXMgTGF3cmVuY2UpCisKKzApIEludHJvZHVjdGlvbgorPT09PT09PT09PT09PT09CisKKyAgT2Z0ZW4gSSd2ZSBiZWVuIGFza2VkIHdoaWNoIGNvbW1hbmQgbGluZSBvcHRpb25zIHRoZSBMaW51eC9tNjhrCitrZXJuZWwgdW5kZXJzdGFuZHMsIG9yIGhvdyB0aGUgZXhhY3Qgc3ludGF4IGZvciB0aGUgLi4uIG9wdGlvbiBpcywgb3IKKy4uLiBhYm91dCB0aGUgb3B0aW9uIC4uLiAuIEkgaG9wZSwgdGhpcyBkb2N1bWVudCBzdXBwbGllcyBhbGwgdGhlCithbnN3ZXJzLi4uCisKKyAgTm90ZSB0aGF0IHNvbWUgb3B0aW9ucyBtaWdodCBiZSBvdXRkYXRlZCwgdGhlaXIgZGVzY3JpcHRpb25zIGJlaW5nCitpbmNvbXBsZXRlIG9yIG1pc3NpbmcuIFBsZWFzZSB1cGRhdGUgdGhlIGluZm9ybWF0aW9uIGFuZCBzZW5kIGluIHRoZQorcGF0Y2hlcy4KKworCisxKSBPdmVydmlldyBvZiB0aGUgS2VybmVsJ3MgT3B0aW9uIFByb2Nlc3NpbmcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUga2VybmVsIGtub3dzIHRocmVlIGtpbmRzIG9mIG9wdGlvbnMgb24gaXRzIGNvbW1hbmQgbGluZToKKworICAxKSBrZXJuZWwgb3B0aW9ucworICAyKSBlbnZpcm9ubWVudCBzZXR0aW5ncworICAzKSBhcmd1bWVudHMgZm9yIGluaXQKKworVG8gd2hpY2ggb2YgdGhlc2UgY2xhc3NlcyBhbiBhcmd1bWVudCBiZWxvbmdzIGlzIGRldGVybWluZWQgYXMKK2ZvbGxvd3M6IElmIHRoZSBvcHRpb24gaXMga25vd24gdG8gdGhlIGtlcm5lbCBpdHNlbGYsIGkuZS4gaWYgdGhlIG5hbWUKKyh0aGUgcGFydCBiZWZvcmUgdGhlICc9Jykgb3IsIGluIHNvbWUgY2FzZXMsIHRoZSB3aG9sZSBhcmd1bWVudCBzdHJpbmcKK2lzIGtub3duIHRvIHRoZSBrZXJuZWwsIGl0IGJlbG9uZ3MgdG8gY2xhc3MgMS4gT3RoZXJ3aXNlLCBpZiB0aGUKK2FyZ3VtZW50IGNvbnRhaW5zIGFuICc9JywgaXQgaXMgb2YgY2xhc3MgMiwgYW5kIHRoZSBkZWZpbml0aW9uIGlzIHB1dAoraW50byBpbml0J3MgZW52aXJvbm1lbnQuIEFsbCBvdGhlciBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byBpbml0IGFzCitjb21tYW5kIGxpbmUgb3B0aW9ucy4KKworICBUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgdmFsaWQga2VybmVsIG9wdGlvbnMgZm9yIExpbnV4L202OGsgaW4KK3RoZSB2ZXJzaW9uIG1lbnRpb25lZCBhdCB0aGUgc3RhcnQgb2YgdGhpcyBmaWxlLiBMYXRlciByZXZpc2lvbnMgbWF5CithZGQgbmV3IHN1Y2ggb3B0aW9ucywgYW5kIHNvbWUgbWF5IGJlIG1pc3NpbmcgaW4gb2xkZXIgdmVyc2lvbnMuCisKKyAgSW4gZ2VuZXJhbCwgdGhlIHZhbHVlICh0aGUgcGFydCBhZnRlciB0aGUgJz0nKSBvZiBhbiBvcHRpb24gaXMgYQorbGlzdCBvZiB2YWx1ZXMgc2VwYXJhdGVkIGJ5IGNvbW1hcy4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoZXNlIHZhbHVlcworaXMgdXAgdG8gdGhlIGRyaXZlciB0aGF0ICJvd25zIiB0aGUgb3B0aW9uLiBUaGlzIGFzc29jaWF0aW9uIG9mCitvcHRpb25zIHdpdGggZHJpdmVycyBpcyBhbHNvIHRoZSByZWFzb24gdGhhdCBzb21lIGFyZSBmdXJ0aGVyCitzdWJkaXZpZGVkLgorCisKKzIpIEdlbmVyYWwgS2VybmVsIE9wdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworMi4xKSByb290PQorLS0tLS0tLS0tLQorCitTeW50YXg6IHJvb3Q9L2Rldi88ZGV2aWNlPgorICAgIG9yOiByb290PTxoZXhfbnVtYmVyPgorCitUaGlzIHRlbGxzIHRoZSBrZXJuZWwgd2hpY2ggZGV2aWNlIGl0IHNob3VsZCBtb3VudCBhcyB0aGUgcm9vdAorZmlsZXN5c3RlbS4gVGhlIGRldmljZSBtdXN0IGJlIGEgYmxvY2sgZGV2aWNlIHdpdGggYSB2YWxpZCBmaWxlc3lzdGVtCitvbiBpdC4KKworICBUaGUgZmlyc3Qgc3ludGF4IGdpdmVzIHRoZSBkZXZpY2UgYnkgbmFtZS4gVGhlc2UgbmFtZXMgYXJlIGNvbnZlcnRlZAoraW50byBhIG1ham9yL21pbm9yIG51bWJlciBpbnRlcm5hbGx5IGluIHRoZSBrZXJuZWwgaW4gYW4gdW51c3VhbCB3YXkuCitOb3JtYWxseSwgdGhpcyAiY29udmVyc2lvbiIgaXMgZG9uZSBieSB0aGUgZGV2aWNlIGZpbGVzIGluIC9kZXYsIGJ1dAordGhpcyBpc24ndCBwb3NzaWJsZSBoZXJlLCBiZWNhdXNlIHRoZSByb290IGZpbGVzeXN0ZW0gKHdpdGggL2RldikKK2lzbid0IG1vdW50ZWQgeWV0Li4uIFNvIHRoZSBrZXJuZWwgcGFyc2VzIHRoZSBuYW1lIGl0c2VsZiwgd2l0aCBzb21lCitoYXJkY29kZWQgbmFtZSB0byBudW1iZXIgbWFwcGluZ3MuIFRoZSBuYW1lIG11c3QgYWx3YXlzIGJlIGEKK2NvbWJpbmF0aW9uIG9mIHR3byBvciB0aHJlZSBsZXR0ZXJzLCBmb2xsb3dlZCBieSBhIGRlY2ltYWwgbnVtYmVyLgorVmFsaWQgbmFtZXMgYXJlOgorCisgIC9kZXYvcmFtOiAtPiAweDAxMDAgKGluaXRpYWwgcmFtZGlzaykKKyAgL2Rldi9oZGE6IC0+IDB4MDMwMCAoZmlyc3QgSURFIGRpc2spCisgIC9kZXYvaGRiOiAtPiAweDAzNDAgKHNlY29uZCBJREUgZGlzaykKKyAgL2Rldi9zZGE6IC0+IDB4MDgwMCAoZmlyc3QgU0NTSSBkaXNrKQorICAvZGV2L3NkYjogLT4gMHgwODEwIChzZWNvbmQgU0NTSSBkaXNrKQorICAvZGV2L3NkYzogLT4gMHgwODIwICh0aGlyZCBTQ1NJIGRpc2spCisgIC9kZXYvc2RkOiAtPiAweDA4MzAgKGZvcnRoIFNDU0kgZGlzaykKKyAgL2Rldi9zZGU6IC0+IDB4MDg0MCAoZmlmdGggU0NTSSBkaXNrKQorICAvZGV2L2ZkIDogLT4gMHgwMjAwIChmbG9wcHkgZGlzaykKKworICBUaGUgbmFtZSBtdXN0IGJlIGZvbGxvd2VkIGJ5IGEgZGVjaW1hbCBudW1iZXIsIHRoYXQgc3RhbmRzIGZvciB0aGUKK3BhcnRpdGlvbiBudW1iZXIuIEludGVybmFsbHksIHRoZSB2YWx1ZSBvZiB0aGUgbnVtYmVyIGlzIGp1c3QKK2FkZGVkIHRvIHRoZSBkZXZpY2UgbnVtYmVyIG1lbnRpb25lZCBpbiB0aGUgdGFibGUgYWJvdmUuIFRoZQorZXhjZXB0aW9ucyBhcmUgL2Rldi9yYW0gYW5kIC9kZXYvZmQsIHdoZXJlIC9kZXYvcmFtIHJlZmVycyB0byBhbgoraW5pdGlhbCByYW1kaXNrIGxvYWRlZCBieSB5b3VyIGJvb3RzdHJhcCBwcm9ncmFtIChwbGVhc2UgY29uc3VsdCB0aGUKK2luc3RydWN0aW9ucyBmb3IgeW91ciBib290c3RyYXAgcHJvZ3JhbSB0byBmaW5kIG91dCBob3cgdG8gbG9hZCBhbgoraW5pdGlhbCByYW1kaXNrKS4gQXMgb2Yga2VybmVsIHZlcnNpb24gMi4wLjE4IHlvdSBtdXN0IHNwZWNpZnkKKy9kZXYvcmFtIGFzIHRoZSByb290IGRldmljZSBpZiB5b3Ugd2FudCB0byBib290IGZyb20gYW4gaW5pdGlhbAorcmFtZGlzay4gRm9yIHRoZSBmbG9wcHkgZGV2aWNlcywgL2Rldi9mZCwgdGhlIG51bWJlciBzdGFuZHMgZm9yIHRoZQorZmxvcHB5IGRyaXZlIG51bWJlciAodGhlcmUgYXJlIG5vIHBhcnRpdGlvbnMgb24gZmxvcHB5IGRpc2tzKS4gSS5lLiwKKy9kZXYvZmQwIHN0YW5kcyBmb3IgdGhlIGZpcnN0IGRyaXZlLCAvZGV2L2ZkMSBmb3IgdGhlIHNlY29uZCwgYW5kIHNvCitvbi4gU2luY2UgdGhlIG51bWJlciBpcyBqdXN0IGFkZGVkLCB5b3UgY2FuIGFsc28gZm9yY2UgdGhlIGRpc2sgZm9ybWF0CitieSBhZGRpbmcgYSBudW1iZXIgZ3JlYXRlciB0aGFuIDMuIElmIHlvdSBsb29rIGludG8geW91ciAvZGV2CitkaXJlY3RvcnksIHVzZSBjYW4gc2VlIHRoZSAvZGV2L2ZkMEQ3MjAgaGFzIG1ham9yIDIgYW5kIG1pbm9yIDE2LiBZb3UKK2NhbiBzcGVjaWZ5IHRoaXMgZGV2aWNlIGZvciB0aGUgcm9vdCBGUyBieSB3cml0aW5nICJyb290PS9kZXYvZmQxNiIgb24KK3RoZSBrZXJuZWwgY29tbWFuZCBsaW5lLgorCitbU3RyYW5nZSBhbmQgbWF5YmUgdW5pbnRlcmVzdGluZyBzdHVmZiBPTl0KKworICBUaGlzIHVudXN1YWwgdHJhbnNsYXRpb24gb2YgZGV2aWNlIG5hbWVzIGhhcyBzb21lIHN0cmFuZ2UKK2NvbnNlcXVlbmNlczogSWYsIGZvciBleGFtcGxlLCB5b3UgaGF2ZSBhIHN5bWJvbGljIGxpbmsgZnJvbSAvZGV2L2ZkCit0byAvZGV2L2ZkMEQ3MjAgYXMgYW4gYWJicmV2aWF0aW9uIGZvciBmbG9wcHkgZHJpdmVyICMwIGluIEREIGZvcm1hdCwKK3lvdSBjYW5ub3QgdXNlIHRoaXMgbmFtZSBmb3Igc3BlY2lmeWluZyB0aGUgcm9vdCBkZXZpY2UsIGJlY2F1c2UgdGhlCitrZXJuZWwgY2Fubm90IHNlZSB0aGlzIHN5bWxpbmsgYmVmb3JlIG1vdW50aW5nIHRoZSByb290IEZTIGFuZCBpdAoraXNuJ3QgaW4gdGhlIHRhYmxlIGFib3ZlLiBJZiB5b3UgdXNlIGl0LCB0aGUgcm9vdCBkZXZpY2Ugd2lsbCBub3QgYmUgCitzZXQgYXQgYWxsLCB3aXRob3V0IGFuIGVycm9yIG1lc3NhZ2UuIEFub3RoZXIgZXhhbXBsZTogWW91IGNhbm5vdCB1c2UgYQorcGFydGl0aW9uIG9uIGUuZy4gdGhlIHNpeHRoIFNDU0kgZGlzayBhcyB0aGUgcm9vdCBmaWxlc3lzdGVtLCBpZiB5b3UKK3dhbnQgdG8gc3BlY2lmeSBpdCBieSBuYW1lLiBUaGlzIGlzLCBiZWNhdXNlIG9ubHkgdGhlIGRldmljZXMgdXAgdG8KKy9kZXYvc2RlIGFyZSBpbiB0aGUgdGFibGUgYWJvdmUsIGJ1dCBub3QgL2Rldi9zZGYuIEFsdGhvdWdoLCB5b3UgY2FuCit1c2UgdGhlIHNpeHRoIFNDU0kgZGlzayBmb3IgdGhlIHJvb3QgRlMsIGJ1dCB5b3UgaGF2ZSB0byBzcGVjaWZ5IHRoZQorZGV2aWNlIGJ5IG51bWJlci4uLiAoc2VlIGJlbG93KS4gT3IsIGV2ZW4gbW9yZSBzdHJhbmdlLCB5b3UgY2FuIHVzZSB0aGUKK2ZhY3QgdGhhdCB0aGVyZSBpcyBubyByYW5nZSBjaGVja2luZyBvZiB0aGUgcGFydGl0aW9uIG51bWJlciwgYW5kIHlvdXIKK2tub3dsZWRnZSB0aGF0IGVhY2ggZGlzayB1c2VzIDE2IG1pbm9ycywgYW5kIHdyaXRlICJyb290PS9kZXYvc2RlMTciCisoZm9yIC9kZXYvc2RmMSkuCisKK1tTdHJhbmdlIGFuZCBtYXliZSB1bmludGVyZXN0aW5nIHN0dWZmIE9GRl0KKworICBJZiB0aGUgZGV2aWNlIGNvbnRhaW5pbmcgeW91ciByb290IHBhcnRpdGlvbiBpc24ndCBpbiB0aGUgdGFibGUKK2Fib3ZlLCB5b3UgY2FuIGFsc28gc3BlY2lmeSBpdCBieSBtYWpvciBhbmQgbWlub3IgbnVtYmVycy4gVGhlc2UgYXJlCit3cml0dGVuIGluIGhleCwgd2l0aCBubyBwcmVmaXggYW5kIG5vIHNlcGFyYXRvciBiZXR3ZWVuLiBFLmcuLCBpZiB5b3UKK2hhdmUgYSBDRCB3aXRoIGNvbnRlbnRzIGFwcHJvcHJpYXRlIGFzIGEgcm9vdCBmaWxlc3lzdGVtIGluIHRoZSBmaXJzdAorU0NTSSBDRC1ST00gZHJpdmUsIHlvdSBib290IGZyb20gaXQgYnkgInJvb3Q9MGIwMCIuIEhlcmUsIGhleCAiMGIiID0KK2RlY2ltYWwgMTEgaXMgdGhlIG1ham9yIG9mIFNDU0kgQ0QtUk9NcywgYW5kIHRoZSBtaW5vciAwIHN0YW5kcyBmb3IKK3RoZSBmaXJzdCBvZiB0aGVzZS4gWW91IGNhbiBmaW5kIG91dCBhbGwgdmFsaWQgbWFqb3IgbnVtYmVycyBieQorbG9va2luZyBpbnRvIGluY2x1ZGUvbGludXgvbWFqb3IuaC4KKworSW4gYWRkaXRpb24gdG8gbWFqb3IgYW5kIG1pbm9yIG51bWJlcnMsIGlmIHRoZSBkZXZpY2UgY29udGFpbmluZyB5b3VyCityb290IHBhcnRpdGlvbiB1c2VzIGEgcGFydGl0aW9uIHRhYmxlIGZvcm1hdCB3aXRoIHVuaXF1ZSBwYXJ0aXRpb24KK2lkZW50aWZpZXJzLCB0aGVuIHlvdSBtYXkgdXNlIHRoZW0uICBGb3IgaW5zdGFuY2UsCisicm9vdD1QQVJUVVVJRD0wMDExMjIzMy00NDU1LTY2NzctODg5OS1BQUJCQ0NEREVFRkYiLiAgSXQgaXMgYWxzbworcG9zc2libGUgdG8gcmVmZXJlbmNlIGFub3RoZXIgcGFydGl0aW9uIG9uIHRoZSBzYW1lIGRldmljZSB1c2luZyBhCitrbm93biBwYXJ0aXRpb24gVVVJRCBhcyB0aGUgc3RhcnRpbmcgcG9pbnQuICBGb3IgZXhhbXBsZSwKK2lmIHBhcnRpdGlvbiA1IG9mIHRoZSBkZXZpY2UgaGFzIHRoZSBVVUlEIG9mCiswMDExMjIzMy00NDU1LTY2NzctODg5OS1BQUJCQ0NEREVFRkYgdGhlbiBwYXJ0aXRpb24gMyBtYXkgYmUgZm91bmQgYXMKK2ZvbGxvd3M6CisgIFBBUlRVVUlEPTAwMTEyMjMzLTQ0NTUtNjY3Ny04ODk5LUFBQkJDQ0RERUVGRi9QQVJUTlJPRkY9LTIKKworQXV0aG9yaXRhdGl2ZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4KKyJEb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCIuCisKKworMi4yKSBybywgcncKKy0tLS0tLS0tLS0tCisKK1N5bnRheDogcm8KKyAgICBvcjogcncKKworVGhlc2UgdHdvIG9wdGlvbnMgdGVsbCB0aGUga2VybmVsIHdoZXRoZXIgaXQgc2hvdWxkIG1vdW50IHRoZSByb290CitmaWxlc3lzdGVtIHJlYWQtb25seSBvciByZWFkLXdyaXRlLiBUaGUgZGVmYXVsdCBpcyByZWFkLW9ubHksIGV4Y2VwdAorZm9yIHJhbWRpc2tzLCB3aGljaCBkZWZhdWx0IHRvIHJlYWQtd3JpdGUuCisKKworMi4zKSBkZWJ1ZworLS0tLS0tLS0tLQorCitTeW50YXg6IGRlYnVnCisKK1RoaXMgcmFpc2VzIHRoZSBrZXJuZWwgbG9nIGxldmVsIHRvIDEwICh0aGUgZGVmYXVsdCBpcyA3KS4gVGhpcyBpcyB0aGUKK3NhbWUgbGV2ZWwgYXMgc2V0IGJ5IHRoZSAiZG1lc2ciIGNvbW1hbmQsIGp1c3QgdGhhdCB0aGUgbWF4aW11bSBsZXZlbAorc2VsZWN0YWJsZSBieSBkbWVzZyBpcyA4LgorCisKKzIuNCkgZGVidWc9CistLS0tLS0tLS0tLQorCitTeW50YXg6IGRlYnVnPTxkZXZpY2U+CisKK1RoaXMgb3B0aW9uIGNhdXNlcyBjZXJ0YWluIGtlcm5lbCBtZXNzYWdlcyBiZSBwcmludGVkIHRvIHRoZSBzZWxlY3RlZAorZGVidWdnaW5nIGRldmljZS4gVGhpcyBjYW4gYWlkIGRlYnVnZ2luZyB0aGUga2VybmVsLCBzaW5jZSB0aGUKK21lc3NhZ2VzIGNhbiBiZSBjYXB0dXJlZCBhbmQgYW5hbHl6ZWQgb24gc29tZSBvdGhlciBtYWNoaW5lLiBXaGljaAorZGV2aWNlcyBhcmUgcG9zc2libGUgZGVwZW5kcyBvbiB0aGUgbWFjaGluZSB0eXBlLiBUaGVyZSBhcmUgbm8gY2hlY2tzCitmb3IgdGhlIHZhbGlkaXR5IG9mIHRoZSBkZXZpY2UgbmFtZS4gSWYgdGhlIGRldmljZSBpc24ndCBpbXBsZW1lbnRlZCwKK25vdGhpbmcgaGFwcGVucy4KKworICBNZXNzYWdlcyBsb2dnZWQgdGhpcyB3YXkgYXJlIGluIGdlbmVyYWwgc3RhY2sgZHVtcHMgYWZ0ZXIga2VybmVsCittZW1vcnkgZmF1bHRzIG9yIGJhZCBrZXJuZWwgdHJhcHMsIGFuZCBrZXJuZWwgcGFuaWNzLiBUbyBiZSBleGFjdDogYWxsCittZXNzYWdlcyBvZiBsZXZlbCAwIChwYW5pYyBtZXNzYWdlcykgYW5kIGFsbCBtZXNzYWdlcyBwcmludGVkIHdoaWxlCit0aGUgbG9nIGxldmVsIGlzIDggb3IgbW9yZSAodGhlaXIgbGV2ZWwgZG9lc24ndCBtYXR0ZXIpLiBCZWZvcmUgc3RhY2sKK2R1bXBzLCB0aGUga2VybmVsIHNldHMgdGhlIGxvZyBsZXZlbCB0byAxMCBhdXRvbWF0aWNhbGx5LiBBIGxldmVsIG9mCithdCBsZWFzdCA4IGNhbiBhbHNvIGJlIHNldCBieSB0aGUgImRlYnVnIiBjb21tYW5kIGxpbmUgb3B0aW9uIChzZWUKKzIuMykgYW5kIGF0IHJ1biB0aW1lIHdpdGggImRtZXNnIC1uIDgiLgorCitEZXZpY2VzIHBvc3NpYmxlIGZvciBBbWlnYToKKworIC0gInNlciI6IGJ1aWx0LWluIHNlcmlhbCBwb3J0OyBwYXJhbWV0ZXJzOiA5NjAwYnBzLCA4TjEKKyAtICJtZW0iOiBTYXZlIHRoZSBtZXNzYWdlcyB0byBhIHJlc2VydmVkIGFyZWEgaW4gY2hpcCBtZW0uIEFmdGVyCisgICAgICAgICAgcmVib290aW5nLCB0aGV5IGNhbiBiZSByZWFkIHVuZGVyIEFtaWdhT1Mgd2l0aCB0aGUgdG9vbAorICAgICAgICAgICdkbWVzZycuCisKK0RldmljZXMgcG9zc2libGUgZm9yIEF0YXJpOgorCisgLSAic2VyMSI6IFNULU1GUCBzZXJpYWwgcG9ydCAoIk1vZGVtMSIpOyBwYXJhbWV0ZXJzOiA5NjAwYnBzLCA4TjEKKyAtICJzZXIyIjogU0NDIGNoYW5uZWwgQiBzZXJpYWwgcG9ydCAoIk1vZGVtMiIpOyBwYXJhbWV0ZXJzOiA5NjAwYnBzLCA4TjEKKyAtICJzZXIiIDogZGVmYXVsdCBzZXJpYWwgcG9ydAorICAgICAgICAgICBUaGlzIGlzICJzZXIyIiBmb3IgYSBGYWxjb24sIGFuZCAic2VyMSIgZm9yIGFueSBvdGhlciBtYWNoaW5lCisgLSAibWlkaSI6IFRoZSBNSURJIHBvcnQ7IHBhcmFtZXRlcnM6IDMxMjUwYnBzLCA4TjEKKyAtICJwYXIiIDogcGFyYWxsZWwgcG9ydAorICAgICAgICAgICBUaGUgcHJpbnRpbmcgcm91dGluZSBmb3IgdGhpcyBpbXBsZW1lbnRzIGEgdGltZW91dCBmb3IgdGhlCisgICAgICAgICAgIGNhc2UgdGhlcmUncyBubyBwcmludGVyIGNvbm5lY3RlZCAoZWxzZSB0aGUga2VybmVsIHdvdWxkCisgICAgICAgICAgIGxvY2sgdXApLiBUaGUgdGltZW91dCBpcyBub3QgZXhhY3QsIGJ1dCB1c3VhbGx5IGEgZmV3CisgICAgICAgICAgIHNlY29uZHMuCisKKworMi42KSByYW1kaXNrX3NpemU9CistLS0tLS0tLS0tLS0tCisKK1N5bnRheDogcmFtZGlza19zaXplPTxzaXplPgorCisgIFRoaXMgb3B0aW9uIGluc3RydWN0cyB0aGUga2VybmVsIHRvIHNldCB1cCBhIHJhbWRpc2sgb2YgdGhlIGdpdmVuCitzaXplIGluIEtCeXRlcy4gRG8gbm90IHVzZSB0aGlzIG9wdGlvbiBpZiB0aGUgcmFtZGlzayBjb250ZW50cyBhcmUKK3Bhc3NlZCBieSBib290c3RyYXAhIEluIHRoaXMgY2FzZSwgdGhlIHNpemUgaXMgc2VsZWN0ZWQgYXV0b21hdGljYWxseQorYW5kIHNob3VsZCBub3QgYmUgb3ZlcndyaXR0ZW4uCisKKyAgVGhlIG9ubHkgYXBwbGljYXRpb24gaXMgZm9yIHJvb3QgZmlsZXN5c3RlbXMgb24gZmxvcHB5IGRpc2tzLCB0aGF0CitzaG91bGQgYmUgbG9hZGVkIGludG8gbWVtb3J5LiBUbyBkbyB0aGF0LCBzZWxlY3QgdGhlIGNvcnJlc3BvbmRpbmcKK3NpemUgb2YgdGhlIGRpc2sgYXMgcmFtZGlzayBzaXplLCBhbmQgc2V0IHRoZSByb290IGRldmljZSB0byB0aGUgZGlzaworZHJpdmUgKHdpdGggInJvb3Q9IikuCisKKworMi43KSBzd2FwPQorMi44KSBidWZmPQorLS0tLS0tLS0tLS0KKworICBJIGNhbid0IGZpbmQgYW55IHNpZ24gb2YgdGhlc2Ugb3B0aW9ucyBpbiAyLjIuNi4KKworCiszKSBHZW5lcmFsIERldmljZSBPcHRpb25zIChBbWlnYSBhbmQgQXRhcmkpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzMuMSkgZXRoZXI9CistLS0tLS0tLS0tLQorCitTeW50YXg6IGV0aGVyPVs8aXJxPlssPGJhc2VfYWRkcj5bLDxtZW1fc3RhcnQ+Wyw8bWVtX2VuZD5dXV1dLDxkZXYtbmFtZT4KKworICA8ZGV2LW5hbWU+IGlzIHRoZSBuYW1lIG9mIGEgbmV0IGRyaXZlciwgYXMgc3BlY2lmaWVkIGluCitkcml2ZXJzL25ldC9TcGFjZS5jIGluIHRoZSBMaW51eCBzb3VyY2UuIE1vc3QgcHJvbWluZW50IGFyZSBldGgwLCAuLi4KK2V0aDMsIHNsMCwgLi4uIHNsMywgcHBwMCwgLi4uLCBwcHAzLCBkdW1teSwgYW5kIGxvLgorCisgIFRoZSBub24tZXRoZXJuZXQgZHJpdmVycyAoc2wsIHBwcCwgZHVtbXksIGxvKSBvYnZpb3VzbHkgaWdub3JlIHRoZQorc2V0dGluZ3MgYnkgdGhpcyBvcHRpb25zLiBBbHNvLCB0aGUgZXhpc3RpbmcgZXRoZXJuZXQgZHJpdmVycyBmb3IKK0xpbnV4L202OGsgKGFyaWFkbmUsIGEyMDY1LCBoeWRyYSkgZG9uJ3QgdXNlIHRoZW0gYmVjYXVzZSBab3JybyBib2FyZHMKK2FyZSByZWFsbHkgUGx1Zy0nbi1QbGF5LCBzbyB0aGUgImV0aGVyPSIgb3B0aW9uIGlzIHVzZWxlc3MgYWx0b2dldGhlcgorZm9yIExpbnV4L202OGsuCisKKworMy4yKSBoZD0KKy0tLS0tLS0tCisKK1N5bnRheDogaGQ9PGN5bGluZGVycz4sPGhlYWRzPiw8c2VjdG9ycz4KKworICBUaGlzIG9wdGlvbiBzZXRzIHRoZSBkaXNrIGdlb21ldHJ5IG9mIGFuIElERSBkaXNrLiBUaGUgZmlyc3QgaGQ9CitvcHRpb24gaXMgZm9yIHRoZSBmaXJzdCBJREUgZGlzaywgdGhlIHNlY29uZCBmb3IgdGhlIHNlY29uZCBvbmUuCisoSS5lLiwgeW91IGNhbiBnaXZlIHRoaXMgb3B0aW9uIHR3aWNlLikgSW4gbW9zdCBjYXNlcywgeW91IHdvbid0IGhhdmUKK3RvIHVzZSB0aGlzIG9wdGlvbiwgc2luY2UgdGhlIGtlcm5lbCBjYW4gb2J0YWluIHRoZSBnZW9tZXRyeSBkYXRhCitpdHNlbGYuIEl0IGV4aXN0cyBqdXN0IGZvciB0aGUgY2FzZSB0aGF0IHRoaXMgZmFpbHMgZm9yIG9uZSBvZiB5b3VyCitkaXNrcy4KKworCiszLjMpIG1heF9zY3NpX2x1bnM9CistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1N5bnRheDogbWF4X3Njc2lfbHVucz08bj4KKworICBTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBMVU5zIChsb2dpY2FsIHVuaXRzKSBvZiBTQ1NJIGRldmljZXMgdG8KK2JlIHNjYW5uZWQuIFZhbGlkIHZhbHVlcyBmb3IgPG4+IGFyZSBiZXR3ZWVuIDEgYW5kIDguIERlZmF1bHQgaXMgOCBpZgorIlByb2JlIGFsbCBMVU5zIG9uIGVhY2ggU0NTSSBkZXZpY2UiIHdhcyBzZWxlY3RlZCBkdXJpbmcgdGhlIGtlcm5lbAorY29uZmlndXJhdGlvbiwgZWxzZSAxLgorCisKKzMuNCkgc3Q9CistLS0tLS0tLQorCitTeW50YXg6IHN0PTxidWZmZXJfc2l6ZT4sWzx3cml0ZV90aHJlcz4sWzxtYXhfYnVmZmVycz5dXQorCisgIFNldHMgc2V2ZXJhbCBwYXJhbWV0ZXJzIG9mIHRoZSBTQ1NJIHRhcGUgZHJpdmVyLiA8YnVmZmVyX3NpemU+IGlzCit0aGUgbnVtYmVyIG9mIDUxMi1ieXRlIGJ1ZmZlcnMgcmVzZXJ2ZWQgZm9yIHRhcGUgb3BlcmF0aW9ucyBmb3IgZWFjaAorZGV2aWNlLiA8d3JpdGVfdGhyZXM+IHNldHMgdGhlIG51bWJlciBvZiBibG9ja3Mgd2hpY2ggbXVzdCBiZSBmaWxsZWQKK3RvIHN0YXJ0IGFuIGFjdHVhbCB3cml0ZSBvcGVyYXRpb24gdG8gdGhlIHRhcGUuIE1heGltdW0gdmFsdWUgaXMgdGhlCit0b3RhbCBudW1iZXIgb2YgYnVmZmVycy4gPG1heF9idWZmZXI+IGxpbWl0cyB0aGUgdG90YWwgbnVtYmVyIG9mCitidWZmZXJzIGFsbG9jYXRlZCBmb3IgYWxsIHRhcGUgZGV2aWNlcy4KKworCiszLjUpIGRtYXNvdW5kPQorLS0tLS0tLS0tLS0tLS0KKworU3ludGF4OiBkbWFzb3VuZD1bPGJ1ZmZlcnM+LDxidWZmZXItc2l6ZT5bLDxjYXRjaC1yYWRpdXM+XV0KKworICBUaGlzIG9wdGlvbiBjb250cm9scyBzb21lIGNvbmZpZ3VyYXRpb25zIG9mIHRoZSBMaW51eC9tNjhrIERNQSBzb3VuZAorZHJpdmVyIChBbWlnYSBhbmQgQXRhcmkpOiA8YnVmZmVycz4gaXMgdGhlIG51bWJlciBvZiBidWZmZXJzIHlvdSB3YW50Cit0byB1c2UgKG1pbmltdW0gNCwgZGVmYXVsdCA0KSwgPGJ1ZmZlci1zaXplPiBpcyB0aGUgc2l6ZSBvZiBlYWNoCitidWZmZXIgaW4ga2lsb2J5dGVzIChtaW5pbXVtIDQsIGRlZmF1bHQgMzIpIGFuZCA8Y2F0Y2gtcmFkaXVzPiBzYXlzCitob3cgbXVjaCBwZXJjZW50IG9mIGVycm9yIHdpbGwgYmUgdG9sZXJhdGVkIHdoZW4gc2V0dGluZyBhIGZyZXF1ZW5jeQorKG1heGltdW0gMTAsIGRlZmF1bHQgMCkuIEZvciBleGFtcGxlIHdpdGggMyUgeW91IGNhbiBwbGF5IDgwMDBIegorQVUtRmlsZXMgb24gdGhlIEZhbGNvbiB3aXRoIGl0cyBoYXJkd2FyZSBmcmVxdWVuY3kgb2YgODE5NUh6IGFuZCB0aHVzCitkb24ndCBuZWVkIHRvIGV4cGFuZCB0aGUgc291bmQuCisKKworCis0KSBPcHRpb25zIGZvciBBdGFyaSBPbmx5Cis9PT09PT09PT09PT09PT09PT09PT09PT09CisKKzQuMSkgdmlkZW89CistLS0tLS0tLS0tLQorCitTeW50YXg6IHZpZGVvPTxmYm5hbWU+OjxzdWItb3B0aW9ucy4uLj4KKworVGhlIDxmYm5hbWU+IHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIGZyYW1lIGJ1ZmZlciwKK2VnLiBtb3N0IGF0YXJpIHVzZXJzIHdpbGwgd2FudCB0byBzcGVjaWZ5IGBhdGFmYicgaGVyZS4gVGhlCis8c3ViLW9wdGlvbnM+IGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIHN1Yi1vcHRpb25zIGxpc3RlZAorYmVsb3cuCisKK05COiBQbGVhc2Ugbm90aWNlIHRoYXQgdGhpcyBvcHRpb24gd2FzIHJlbmFtZWQgZnJvbSBgYXRhdmlkZW8nIHRvCisgICAgYHZpZGVvJyBkdXJpbmcgdGhlIGRldmVsb3BtZW50IG9mIHRoZSAxLjMueCBrZXJuZWxzLCB0aHVzIHlvdQorICAgIG1pZ2h0IG5lZWQgdG8gdXBkYXRlIHlvdXIgYm9vdC1zY3JpcHRzIGlmIHVwZ3JhZGluZyB0byAyLnggZnJvbQorICAgIGFuIDEuMi54IGtlcm5lbC4KKworTkJCOiBUaGUgYmVoYXZpb3Igb2YgdmlkZW89IHdhcyBjaGFuZ2VkIGluIDIuMS41NyBzbyB0aGUgcmVjb21tZW5kZWQKK29wdGlvbiBpcyB0byBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSBmcmFtZSBidWZmZXIuCisKKzQuMS4xKSBWaWRlbyBNb2RlCistLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIHN1Yi1vcHRpb24gbWF5IGJlIGFueSBvZiB0aGUgcHJlZGVmaW5lZCB2aWRlbyBtb2RlcywgYXMgbGlzdGVkCitpbiBhdGFyaS9hdGFmYi5jIGluIHRoZSBMaW51eC9tNjhrIHNvdXJjZSB0cmVlLiBUaGUga2VybmVsIHdpbGwKK2FjdGl2YXRlIHRoZSBnaXZlbiB2aWRlbyBtb2RlIGF0IGJvb3QgdGltZSBhbmQgbWFrZSBpdCB0aGUgZGVmYXVsdAorbW9kZSwgaWYgdGhlIGhhcmR3YXJlIGFsbG93cy4gQ3VycmVudGx5IGRlZmluZWQgbmFtZXMgYXJlOgorCisgLSBzdGxvdyAgICAgICAgICAgOiAzMjB4MjAweDQKKyAtIHN0bWlkLCBkZWZhdWx0NSA6IDY0MHgyMDB4MgorIC0gc3RoaWdoLCBkZWZhdWx0NDogNjQweDQwMHgxCisgLSB0dGxvdyAgICAgICAgICAgOiAzMjB4NDgweDgsIFRUIG9ubHkKKyAtIHR0bWlkLCBkZWZhdWx0MSA6IDY0MHg0ODB4NCwgVFQgb25seQorIC0gdHRoaWdoLCBkZWZhdWx0MjogMTI4MHg5NjB4MSwgVFQgb25seQorIC0gdmdhMiAgICAgICAgICAgIDogNjQweDQ4MHgxLCBGYWxjb24gb25seQorIC0gdmdhNCAgICAgICAgICAgIDogNjQweDQ4MHgyLCBGYWxjb24gb25seQorIC0gdmdhMTYsIGRlZmF1bHQzIDogNjQweDQ4MHg0LCBGYWxjb24gb25seQorIC0gdmdhMjU2ICAgICAgICAgIDogNjQweDQ4MHg4LCBGYWxjb24gb25seQorIC0gZmFsaDIgICAgICAgICAgIDogODk2eDYwOHgxLCBGYWxjb24gb25seQorIC0gZmFsaDE2ICAgICAgICAgIDogODk2eDYwOHg0LCBGYWxjb24gb25seQorCisgIElmIG5vIHZpZGVvIG1vZGUgaXMgZ2l2ZW4gb24gdGhlIGNvbW1hbmQgbGluZSwgdGhlIGtlcm5lbCB0cmllcyB0aGUKK21vZGVzIG5hbWVzICJkZWZhdWx0PG4+IiBpbiB0dXJuLCB1bnRpbCBvbmUgaXMgcG9zc2libGUgd2l0aCB0aGUKK2hhcmR3YXJlIGluIHVzZS4KKworICBBIHZpZGVvIG1vZGUgc2V0dGluZyBkb2Vzbid0IG1ha2Ugc2Vuc2UsIGlmIHRoZSBleHRlcm5hbCBkcml2ZXIgaXMKK2FjdGl2YXRlZCBieSBhICJleHRlcm5hbDoiIHN1Yi1vcHRpb24uCisKKzQuMS4yKSBpbnZlcnNlCistLS0tLS0tLS0tLS0tLQorCitJbnZlcnQgdGhlIGRpc3BsYXkuIFRoaXMgYWZmZWN0cyBib3RoLCB0ZXh0IChjb25zb2xlcykgYW5kIGdyYXBoaWNzCisoWCkgZGlzcGxheS4gVXN1YWxseSwgdGhlIGJhY2tncm91bmQgaXMgY2hvc2VuIHRvIGJlIGJsYWNrLiBXaXRoIHRoaXMKK29wdGlvbiwgeW91IGNhbiBtYWtlIHRoZSBiYWNrZ3JvdW5kIHdoaXRlLgorCis0LjEuMykgZm9udAorLS0tLS0tLS0tLS0KKworU3ludGF4OiBmb250Ojxmb250bmFtZT4KKworU3BlY2lmeSB0aGUgZm9udCB0byB1c2UgaW4gdGV4dCBtb2Rlcy4gQ3VycmVudGx5IHlvdSBjYW4gY2hvb3NlIG9ubHkKK2JldHdlZW4gYFZHQTh4OCcsIGBWR0E4eDE2JyBhbmQgYFBFQVJMOHg4Jy4gYFZHQTh4OCcgaXMgZGVmYXVsdCwgaWYgdGhlCit2ZXJ0aWNhbCBzaXplIG9mIHRoZSBkaXNwbGF5IGlzIGxlc3MgdGhhbiA0MDAgcGl4ZWwgcm93cy4gT3RoZXJ3aXNlLCB0aGUKK2BWR0E4eDE2JyBmb250IGlzIHRoZSBkZWZhdWx0LgorCis0LjEuNCkgaHdzY3JvbGxfCistLS0tLS0tLS0tLS0tLS0tCisKK1N5bnRheDogaHdzY3JvbGxfPG4+CisKK1RoZSBudW1iZXIgb2YgYWRkaXRpb25hbCBsaW5lcyBvZiB2aWRlbyBtZW1vcnkgdG8gcmVzZXJ2ZSBmb3IKK3NwZWVkaW5nIHVwIHRoZSBzY3JvbGxpbmcgKCJoYXJkd2FyZSBzY3JvbGxpbmciKS4gSGFyZHdhcmUgc2Nyb2xsaW5nCitpcyBwb3NzaWJsZSBvbmx5IGlmIHRoZSBrZXJuZWwgY2FuIHNldCB0aGUgdmlkZW8gYmFzZSBhZGRyZXNzIGluIHN0ZXBzCitmaW5lIGVub3VnaC4gVGhpcyBpcyB0cnVlIGZvciBTVEUsIE1lZ2FTVEUsIFRULCBhbmQgRmFsY29uLiBJdCBpcyBub3QKK3Bvc3NpYmxlIHdpdGggcGxhaW4gU1RzIGFuZCBncmFwaGljcyBjYXJkcyAoVGhlIGZvcm1lciBiZWNhdXNlIHRoZQorYmFzZSBhZGRyZXNzIG11c3QgYmUgb24gYSAyNTYgYnl0ZSBib3VuZGFyeSB0aGVyZSwgdGhlIGxhdHRlciBiZWNhdXNlCit0aGUga2VybmVsIGRvZXNuJ3Qga25vdyBob3cgdG8gc2V0IHRoZSBiYXNlIGFkZHJlc3MgYXQgYWxsLikKKworICBCeSBkZWZhdWx0LCA8bj4gaXMgc2V0IHRvIHRoZSBudW1iZXIgb2YgdmlzaWJsZSB0ZXh0IGxpbmVzIG9uIHRoZQorZGlzcGxheS4gVGh1cywgdGhlIGFtb3VudCBvZiB2aWRlbyBtZW1vcnkgaXMgZG91YmxlZCwgY29tcGFyZWQgdG8gbm8KK2hhcmR3YXJlIHNjcm9sbGluZy4gWW91IGNhbiB0dXJuIG9mZiB0aGUgaGFyZHdhcmUgc2Nyb2xsaW5nIGFsdG9nZXRoZXIKK2J5IHNldHRpbmcgPG4+IHRvIDAuCisKKzQuMS41KSBpbnRlcm5hbDoKKy0tLS0tLS0tLS0tLS0tLS0KKworU3ludGF4OiBpbnRlcm5hbDo8eHJlcz47PHlyZXM+Wzs8eHJlc19tYXg+Ozx5cmVzX21heD47PG9mZnNldD5dCisKK1RoaXMgb3B0aW9uIHNwZWNpZmllcyB0aGUgY2FwYWJpbGl0aWVzIG9mIHNvbWUgZXh0ZW5kZWQgaW50ZXJuYWwgdmlkZW8KK2hhcmR3YXJlLCBsaWtlIGUuZy4gT3ZlclNjYW4uIDx4cmVzPiBhbmQgPHlyZXM+IGdpdmUgdGhlIChleHRlbmRlZCkKK2RpbWVuc2lvbnMgb2YgdGhlIHNjcmVlbi4KKworICBJZiB5b3VyIE92ZXJTY2FuIG5lZWRzIGEgYmxhY2sgYm9yZGVyLCB5b3UgaGF2ZSB0byB3cml0ZSB0aGUgbGFzdAordGhyZWUgYXJndW1lbnRzIG9mIHRoZSAiaW50ZXJuYWw6Ii4gPHhyZXNfbWF4PiBpcyB0aGUgbWF4aW11bSBsaW5lCitsZW5ndGggdGhlIGhhcmR3YXJlIGFsbG93cywgPHlyZXNfbWF4PiB0aGUgbWF4aW11bSBudW1iZXIgb2YgbGluZXMuCis8b2Zmc2V0PiBpcyB0aGUgb2Zmc2V0IG9mIHRoZSB2aXNpYmxlIHBhcnQgb2YgdGhlIHNjcmVlbiBtZW1vcnkgdG8gaXRzCitwaHlzaWNhbCBzdGFydCwgaW4gYnl0ZXMuCisKKyAgT2Z0ZW4sIGV4dGVuZGVkIGludGVydmFsIHZpZGVvIGhhcmR3YXJlIGhhcyB0byBiZSBhY3RpdmF0ZWQgc29tZWhvdy4KK0ZvciB0aGlzLCBzZWUgdGhlICJzd18qIiBvcHRpb25zIGJlbG93LgorCis0LjEuNikgZXh0ZXJuYWw6CistLS0tLS0tLS0tLS0tLS0tCisKK1N5bnRheDoKKyAgZXh0ZXJuYWw6PHhyZXM+Ozx5cmVzPjs8ZGVwdGg+Ozxvcmc+OzxzY3JtZW0+Wzs8c2NybGVuPls7PHZnYWJhc2U+XAorICAgICAgICAgICBbOzxjb2x3Pls7PGNvbHR5cGU+Wzs8eHJlc192aXJ0dWFsPl1dXV1dCisKK1tJIGhhZCB0byBicmVhayB0aGlzIGxpbmUuLi5dCisKKyAgVGhpcyBpcyBwcm9iYWJseSB0aGUgbW9zdCBjb21wbGljYXRlZCBwYXJhbWV0ZXIuLi4gSXQgc3BlY2lmaWVzIHRoYXQKK3lvdSBoYXZlIHNvbWUgZXh0ZXJuYWwgdmlkZW8gaGFyZHdhcmUgKGEgZ3JhcGhpY3MgYm9hcmQpLCBhbmQgaG93IHRvCit1c2UgaXQgdW5kZXIgTGludXgvbTY4ay4gVGhlIGtlcm5lbCBjYW5ub3Qga25vdyBtb3JlIGFib3V0IHRoZSBoYXJkd2FyZQordGhhbiB5b3UgdGVsbCBpdCBoZXJlISBUaGUga2VybmVsIGFsc28gaXMgdW5hYmxlIHRvIHNldCBvciBjaGFuZ2UgYW55Cit2aWRlbyBtb2Rlcywgc2luY2UgaXQgZG9lc24ndCBrbm93IGFib3V0IGFueSBib2FyZCBpbnRlcm5hbC4gU28sIHlvdQoraGF2ZSB0byBzd2l0Y2ggdG8gdGhhdCB2aWRlbyBtb2RlIGJlZm9yZSB5b3Ugc3RhcnQgTGludXgsIGFuZCBjYW5ub3QKK3N3aXRjaCB0byBhbm90aGVyIG1vZGUgb25jZSBMaW51eCBoYXMgc3RhcnRlZC4KKworICBUaGUgZmlyc3QgMyBwYXJhbWV0ZXJzIG9mIHRoaXMgc3ViLW9wdGlvbiBzaG91bGQgYmUgb2J2aW91czogPHhyZXM+LAorPHlyZXM+IGFuZCA8ZGVwdGg+IGdpdmUgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIHNjcmVlbiBhbmQgdGhlIG51bWJlciBvZgorcGxhbmVzIChkZXB0aCkuIFRoZSBkZXB0aCBpcyB0aGUgbG9nYXJpdGhtIHRvIGJhc2UgMiBvZiB0aGUgbnVtYmVyCitvZiBjb2xvcnMgcG9zc2libGUuIChPciwgdGhlIG90aGVyIHdheSByb3VuZDogVGhlIG51bWJlciBvZiBjb2xvcnMgaXMKKzJeZGVwdGgpLgorCisgIFlvdSBoYXZlIHRvIHRlbGwgdGhlIGtlcm5lbCBmdXJ0aGVybW9yZSBob3cgdGhlIHZpZGVvIG1lbW9yeSBpcworb3JnYW5pemVkLiBUaGlzIGlzIGRvbmUgYnkgYSBsZXR0ZXIgYXMgPG9yZz4gcGFyYW1ldGVyOgorCisgJ24nOiAibm9ybWFsIHBsYW5lcyIsIGkuZS4gb25lIHdob2xlIHBsYW5lIGFmdGVyIGFub3RoZXIKKyAnaSc6ICJpbnRlcmxlYXZlZCBwbGFuZXMiLCBpLmUuIDE2IGJpdCBvZiB0aGUgZmlyc3QgcGxhbmUsIHRoYW4gMTYgYml0CisgICAgICBvZiB0aGUgbmV4dCwgYW5kIHNvIG9uLi4uIFRoaXMgbW9kZSBpcyB1c2VkIG9ubHkgd2l0aCB0aGUKKwkgIGJ1aWx0LWluIEF0YXJpIHZpZGVvIG1vZGVzLCBJIHRoaW5rIHRoZXJlIGlzIG5vIGNhcmQgdGhhdAorCSAgc3VwcG9ydHMgdGhpcyBtb2RlLgorICdwJzogInBhY2tlZCBwaXhlbHMiLCBpLmUuIDxkZXB0aD4gY29uc2VjdXRpdmUgYml0cyBzdGFuZCBmb3IgYWxsCisJICBwbGFuZXMgb2Ygb25lIHBpeGVsOyB0aGlzIGlzIHRoZSBtb3N0IGNvbW1vbiBtb2RlIGZvciA4IHBsYW5lcworCSAgKDI1NiBjb2xvcnMpIG9uIGdyYXBoaWMgY2FyZHMKKyAndCc6ICJ0cnVlIGNvbG9yIiAobW9yZSBvciBsZXNzIHBhY2tlZCBwaXhlbHMsIGJ1dCB3aXRob3V0IGEgY29sb3IKKwkgIGxvb2t1cCB0YWJsZSk7IHVzdWFsbHkgZGVwdGggaXMgMjQKKworRm9yIG1vbm9jaHJvbWUgbW9kZXMgKGkuZS4sIDxkZXB0aD4gaXMgMSksIHRoZSA8b3JnPiBsZXR0ZXIgaGFzIGEKK2RpZmZlcmVudCBtZWFuaW5nOgorCisgJ24nOiBub3JtYWwgY29sb3JzLCBpLmUuIDA9d2hpdGUsIDE9YmxhY2sKKyAnaSc6IGludmVydGVkIGNvbG9ycywgaS5lLiAwPWJsYWNrLCAxPXdoaXRlCisKKyAgVGhlIG5leHQgaW1wb3J0YW50IGluZm9ybWF0aW9uIGFib3V0IHRoZSB2aWRlbyBoYXJkd2FyZSBpcyB0aGUgYmFzZQorYWRkcmVzcyBvZiB0aGUgdmlkZW8gbWVtb3J5LiBUaGF0IGlzIGdpdmVuIGluIHRoZSA8c2NybWVtPiBwYXJhbWV0ZXIsCithcyBhIGhleGFkZWNpbWFsIG51bWJlciB3aXRoIGEgIjB4IiBwcmVmaXguIFlvdSBoYXZlIHRvIGZpbmQgb3V0IHRoaXMKK2FkZHJlc3MgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgeW91ciBoYXJkd2FyZS4KKworICBUaGUgbmV4dCBwYXJhbWV0ZXIsIDxzY3JsZW4+LCB0ZWxscyB0aGUga2VybmVsIGFib3V0IHRoZSBzaXplIG9mIHRoZQordmlkZW8gbWVtb3J5LiBJZiBpdCdzIG1pc3NpbmcsIHRoZSBzaXplIGlzIGNhbGN1bGF0ZWQgZnJvbSA8eHJlcz4sCis8eXJlcz4sIGFuZCA8ZGVwdGg+LiBGb3Igbm93LCBpdCBpcyBub3QgdXNlZnVsIHRvIHdyaXRlIGEgdmFsdWUgaGVyZS4KK0l0IHdvdWxkIGJlIHVzZWQgb25seSBmb3IgaGFyZHdhcmUgc2Nyb2xsaW5nICh3aGljaCBpc24ndCBwb3NzaWJsZQord2l0aCB0aGUgZXh0ZXJuYWwgZHJpdmVyLCBiZWNhdXNlIHRoZSBrZXJuZWwgY2Fubm90IHNldCB0aGUgdmlkZW8gYmFzZQorYWRkcmVzcyksIG9yIGZvciB2aXJ0dWFsIHJlc29sdXRpb25zIHVuZGVyIFggKHdoaWNoIHRoZSBYIHNlcnZlcgorZG9lc24ndCBzdXBwb3J0IHlldCkuIFNvLCBpdCdzIGN1cnJlbnRseSBiZXN0IHRvIGxlYXZlIHRoaXMgZmllbGQKK2VtcHR5LCBlaXRoZXIgYnkgZW5kaW5nIHRoZSAiZXh0ZXJuYWw6IiBhZnRlciB0aGUgdmlkZW8gYWRkcmVzcyBvciBieQord3JpdGluZyB0d28gY29uc2VjdXRpdmUgc2VtaWNvbG9ucywgaWYgeW91IHdhbnQgdG8gZ2l2ZSBhIDx2Z2FiYXNlPgorKGl0IGlzIGFsbG93ZWQgdG8gbGVhdmUgdGhpcyBwYXJhbWV0ZXIgZW1wdHkpLgorCisgIFRoZSA8dmdhYmFzZT4gcGFyYW1ldGVyIGlzIG9wdGlvbmFsLiBJZiBpdCBpcyBub3QgZ2l2ZW4sIHRoZSBrZXJuZWwKK2Nhbm5vdCByZWFkIG9yIHdyaXRlIGFueSBjb2xvciByZWdpc3RlcnMgb2YgdGhlIHZpZGVvIGhhcmR3YXJlLCBhbmQKK3RodXMgeW91IGhhdmUgdG8gc2V0IGFwcHJvcHJpYXRlIGNvbG9ycyBiZWZvcmUgeW91IHN0YXJ0IExpbnV4LiBCdXQgaWYKK3lvdXIgY2FyZCBpcyBzb21laG93IFZHQSBjb21wYXRpYmxlLCB5b3UgY2FuIHRlbGwgdGhlIGtlcm5lbCB0aGUgYmFzZQorYWRkcmVzcyBvZiB0aGUgVkdBIHJlZ2lzdGVyIHNldCwgc28gaXQgY2FuIGNoYW5nZSB0aGUgY29sb3IgbG9va3VwCit0YWJsZS4gWW91IGhhdmUgdG8gbG9vayB1cCB0aGlzIGFkZHJlc3MgaW4geW91ciBib2FyZCdzIGRvY3VtZW50YXRpb24uCitUbyBhdm9pZCBtaXN1bmRlcnN0YW5kaW5nczogPHZnYWJhc2U+IGlzIHRoZSBfYmFzZV8gYWRkcmVzcywgaS5lLiBhIDRrCithbGlnbmVkIGFkZHJlc3MuIEZvciByZWFkL3dyaXRpbmcgdGhlIGNvbG9yIHJlZ2lzdGVycywgdGhlIGtlcm5lbAordXNlcyB0aGUgYWRkcmVzc2VzIHZnYWJhc2UrMHgzYzcuLi52Z2FiYXNlKzB4M2M5LiBUaGUgPHZnYWJhc2U+CitwYXJhbWV0ZXIgaXMgd3JpdHRlbiBpbiBoZXhhZGVjaW1hbCB3aXRoIGEgIjB4IiBwcmVmaXgsIGp1c3QgYXMKKzxzY3JtZW0+LgorCisgIDxjb2x3PiBpcyBtZWFuaW5nZnVsIG9ubHkgaWYgPHZnYWJhc2U+IGlzIHNwZWNpZmllZC4gSXQgdGVsbHMgdGhlCitrZXJuZWwgaG93IHdpZGUgZWFjaCBvZiB0aGUgY29sb3IgcmVnaXN0ZXIgaXMsIGkuZS4gdGhlIG51bWJlciBvZiBiaXRzCitwZXIgc2luZ2xlIGNvbG9yIChyZWQvZ3JlZW4vYmx1ZSkuIERlZmF1bHQgaXMgNiwgYW5vdGhlciBxdWl0ZSB1c3VhbAordmFsdWUgaXMgOC4KKworICBBbHNvIDxjb2x0eXBlPiBpcyB1c2VkIHRvZ2V0aGVyIHdpdGggPHZnYWJhc2U+LiBJdCB0ZWxscyB0aGUga2VybmVsCithYm91dCB0aGUgY29sb3IgcmVnaXN0ZXIgbW9kZWwgb2YgeW91ciBnZnggYm9hcmQuIEN1cnJlbnRseSwgdGhlIHR5cGVzCisidmdhIiAod2hpY2ggaXMgYWxzbyB0aGUgZGVmYXVsdCkgYW5kICJtdjMwMCIgKFNBTkcgTVYzMDApIGFyZQoraW1wbGVtZW50ZWQuCisKKyAgUGFyYW1ldGVyIDx4cmVzX3ZpcnR1YWw+IGlzIHJlcXVpcmVkIGZvciBQcm9NU1Qgb3IgRVQ0MDAwIGNhcmRzIHdoZXJlCit0aGUgcGh5c2ljYWwgbGluZWxlbmd0aCBkaWZmZXJzIGZyb20gdGhlIHZpc2libGUgbGVuZ3RoLiBXaXRoIFByb01TVCwgCit4cmVzX3ZpcnR1YWwgbXVzdCBiZSBzZXQgdG8gMjA0OC4gRm9yIEVUNDAwMCwgeHJlc192aXJ0dWFsIGRlcGVuZHMgb24gdGhlCitpbml0aWFsaXNhdGlvbiBvZiB0aGUgdmlkZW8tY2FyZC4KK0lmIHlvdSdyZSBtaXNzaW5nIGEgY29ycmVzcG9uZGluZyB5cmVzX3ZpcnR1YWw6IHRoZSBleHRlcm5hbCBwYXJ0IGlzIGxlZ2FjeSwKK3RoZXJlZm9yZSB3ZSBkb24ndCBzdXBwb3J0IGhhcmR3YXJlLWRlcGVuZGVudCBmdW5jdGlvbnMgbGlrZSBoYXJkd2FyZS1zY3JvbGwsCitwYW5uaW5nIG9yIGJsYW5raW5nLgorCis0LjEuNykgZWNsb2NrOgorLS0tLS0tLS0tLS0tLS0KKworVGhlIGV4dGVybmFsIHBpeGVsIGNsb2NrIGF0dGFjaGVkIHRvIHRoZSBGYWxjb24gVklERUwgc2hpZnRlci4gVGhpcworY3VycmVudGx5IHdvcmtzIG9ubHkgd2l0aCB0aGUgU2NyZWVuV29uZGVyIQorCis0LjEuOCkgbW9uaXRvcmNhcDoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworU3ludGF4OiBtb25pdG9yY2FwOjx2bWluPjs8dm1heD47PGhtaW4+OzxobWF4PgorCitUaGlzIGRlc2NyaWJlcyB0aGUgY2FwYWJpbGl0aWVzIG9mIGEgbXVsdGlzeW5jIG1vbml0b3IuIERvbid0IHVzZSBpdAord2l0aCBhIGZpeGVkLWZyZXF1ZW5jeSBtb25pdG9yISBGb3Igbm93LCBvbmx5IHRoZSBGYWxjb24gZnJhbWUgYnVmZmVyCit1c2VzIHRoZSBzZXR0aW5ncyBvZiAibW9uaXRvcmNhcDoiLgorCisgIDx2bWluPiBhbmQgPHZtYXg+IGFyZSB0aGUgbWluaW11bSBhbmQgbWF4aW11bSwgcmVzcC4sIHZlcnRpY2FsIGZyZXF1ZW5jaWVzCit5b3VyIG1vbml0b3IgY2FuIHdvcmsgd2l0aCwgaW4gSHouIDxobWluPiBhbmQgPGhtYXg+IGFyZSB0aGUgc2FtZSBmb3IKK3RoZSBob3Jpem9udGFsIGZyZXF1ZW5jeSwgaW4ga0h6LgorCisgIFRoZSBkZWZhdWx0cyBhcmUgNTg7NjI7MzE7MzIgKFZHQSBjb21wYXRpYmxlKS4KKworICBUaGUgZGVmYXVsdHMgZm9yIFRWL1NDMTIyNC9TQzE0MzUgY292ZXIgYm90aCBQQUwgYW5kIE5UU0Mgc3RhbmRhcmRzLgorCis0LjEuOSkga2VlcAorLS0tLS0tLS0tLS0tCisKK0lmIHRoaXMgb3B0aW9uIGlzIGdpdmVuLCB0aGUgZnJhbWVidWZmZXIgZGV2aWNlIGRvZXNuJ3QgZG8gYW55IHZpZGVvCittb2RlIGNhbGN1bGF0aW9ucyBhbmQgc2V0dGluZ3Mgb24gaXRzIG93bi4gVGhlIG9ubHkgQXRhcmkgZmIgZGV2aWNlCit0aGF0IGRvZXMgdGhpcyBjdXJyZW50bHkgaXMgdGhlIEZhbGNvbi4KKworICBXaGF0IHlvdSByZWFjaCB3aXRoIHRoaXM6IFNldHRpbmdzIGZvciB1bmtub3duIHZpZGVvIGV4dGVuc2lvbnMKK2FyZW4ndCBvdmVycmlkZGVuIGJ5IHRoZSBkcml2ZXIsIHNvIHlvdSBjYW4gc3RpbGwgdXNlIHRoZSBtb2RlIGZvdW5kCit3aGVuIGJvb3RpbmcsIHdoZW4gdGhlIGRyaXZlciBkb2Vzbid0IGtub3cgdG8gc2V0IHRoaXMgbW9kZSBpdHNlbGYuCitCdXQgdGhpcyBhbHNvIG1lYW5zLCB0aGF0IHlvdSBjYW4ndCBzd2l0Y2ggdmlkZW8gbW9kZXMgYW55bW9yZS4uLgorCisgIEFuIGV4YW1wbGUgd2hlcmUgeW91IG1heSB3YW50IHRvIHVzZSAia2VlcCIgaXMgdGhlIFNjcmVlbkJsYXN0ZXIgZm9yCit0aGUgRmFsY29uLgorCisKKzQuMikgYXRhbW91c2U9CistLS0tLS0tLS0tLS0tLQorCitTeW50YXg6IGF0YW1vdXNlPTx4LXRocmVzaG9sZD4sWzx5LXRocmVzaG9sZD5dCisKKyAgV2l0aCB0aGlzIG9wdGlvbiwgeW91IGNhbiBzZXQgdGhlIG1vdXNlIG1vdmVtZW50IHJlcG9ydGluZyB0aHJlc2hvbGQuCitUaGlzIGlzIHRoZSBudW1iZXIgb2YgcGl4ZWxzIG9mIG1vdXNlIG1vdmVtZW50IHRoYXQgaGF2ZSB0byBhY2N1bXVsYXRlCitiZWZvcmUgdGhlIElLQkQgc2VuZHMgYSBuZXcgbW91c2UgcGFja2V0IHRvIHRoZSBrZXJuZWwuIEhpZ2hlciB2YWx1ZXMKK3JlZHVjZSB0aGUgbW91c2UgaW50ZXJydXB0IGxvYWQgYW5kIHRodXMgcmVkdWNlIHRoZSBjaGFuY2Ugb2Yga2V5Ym9hcmQKK292ZXJydW5zLiBMb3dlciB2YWx1ZXMgZ2l2ZSBhIHNsaWdodGx5IGZhc3RlciBtb3VzZSByZXNwb25zZXMgYW5kCitzbGlnaHRseSBiZXR0ZXIgbW91c2UgdHJhY2tpbmcuCisKKyAgWW91IGNhbiBzZXQgdGhlIHRocmVzaG9sZCBpbiB4IGFuZCB5IHNlcGFyYXRlbHksIGJ1dCB1c3VhbGx5IHRoaXMgaXMKK29mIGxpdHRsZSBwcmFjdGljYWwgdXNlLiBJZiB0aGVyZSdzIGp1c3Qgb25lIG51bWJlciBpbiB0aGUgb3B0aW9uLCBpdAoraXMgdXNlZCBmb3IgYm90aCBkaW1lbnNpb25zLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAyIGZvciBib3RoCit0aHJlc2hvbGRzLgorCisKKzQuMykgYXRhZmxvcD0KKy0tLS0tLS0tLS0tLS0KKworU3ludGF4OiBhdGFmbG9wPTxkcml2ZSB0eXBlPlssPHRyYWNrYnVmZmVyaW5nPlssPHN0ZXByYXRlQT5bLDxzdGVwcmF0ZUI+XV1dCisKKyAgIFRoZSBkcml2ZSB0eXBlIG1heSBiZSAwLCAxLCBvciAyLCBmb3IgREQsIEhELCBhbmQgRUQsIHJlc3AuIFRoaXMKKyAgIHNldHRpbmcgYWZmZWN0cyBob3cgbWFueSBidWZmZXJzIGFyZSByZXNlcnZlZCBhbmQgd2hpY2ggZm9ybWF0cyBhcmUKKyAgIHByb2JlZCAoc2VlIGFsc28gYmVsb3cpLiBUaGUgZGVmYXVsdCBpcyAxIChIRCkuIE9ubHkgb25lIGRyaXZlIHR5cGUKKyAgIGNhbiBiZSBzZWxlY3RlZC4gSWYgeW91IGhhdmUgdHdvIGRpc2sgZHJpdmVzLCBzZWxlY3QgdGhlICJiZXR0ZXIiCisgICB0eXBlLgorCisgICBUaGUgc2Vjb25kIHBhcmFtZXRlciA8dHJhY2tidWZmZXI+IHRlbGxzIHRoZSBrZXJuZWwgd2hldGhlciB0byB1c2UKKyAgIHRyYWNrIGJ1ZmZlcmluZyAoMSkgb3Igbm90ICgwKS4gVGhlIGRlZmF1bHQgaXMgbWFjaGluZS1kZXBlbmRlbnQ6CisgICBubyBmb3IgdGhlIE1lZHVzYSBhbmQgeWVzIGZvciBhbGwgb3RoZXJzLgorCisgICBXaXRoIHRoZSB0d28gZm9sbG93aW5nIHBhcmFtZXRlcnMsIHlvdSBjYW4gY2hhbmdlIHRoZSBkZWZhdWx0CisgICBzdGVwcmF0ZSB1c2VkIGZvciBkcml2ZSBBIGFuZCBCLCByZXNwLiAKKworCis0LjQpIGF0YXNjc2k9CistLS0tLS0tLS0tLS0tCisKK1N5bnRheDogYXRhc2NzaT08Y2FuX3F1ZXVlPlssPGNtZF9wZXJfbHVuPlssPHNjYXQtZ2F0PlssPGhvc3QtaWQ+Wyw8dGFnZ2VkPl1dXV0KKworICBUaGlzIG9wdGlvbiBzZXRzIHNvbWUgcGFyYW1ldGVycyBmb3IgdGhlIEF0YXJpIG5hdGl2ZSBTQ1NJIGRyaXZlci4KK0dlbmVyYWxseSwgYW55IG51bWJlciBvZiBhcmd1bWVudHMgY2FuIGJlIG9taXR0ZWQgZnJvbSB0aGUgZW5kLiBBbmQKK2ZvciBlYWNoIG9mIHRoZSBudW1iZXJzLCBhIG5lZ2F0aXZlIHZhbHVlIG1lYW5zICJ1c2UgZGVmYXVsdCIuIFRoZQorZGVmYXVsdHMgZGVwZW5kIG9uIHdoZXRoZXIgVFQtc3R5bGUgb3IgRmFsY29uLXN0eWxlIFNDU0kgaXMgdXNlZC4KK0JlbG93LCBkZWZhdWx0cyBhcmUgbm90ZWQgYXMgbi9tLCB3aGVyZSB0aGUgZmlyc3QgdmFsdWUgcmVmZXJzIHRvCitUVC1TQ1NJIGFuZCB0aGUgbGF0dGVyIHRvIEZhbGNvbi1TQ1NJLiBJZiBhbiBpbGxlZ2FsIHZhbHVlIGlzIGdpdmVuCitmb3Igb25lIHBhcmFtZXRlciwgYW4gZXJyb3IgbWVzc2FnZSBpcyBwcmludGVkIGFuZCB0aGF0IG9uZSBzZXR0aW5nIGlzCitpZ25vcmVkIChvdGhlcnMgYXJlbid0IGFmZmVjdGVkKS4KKworICA8Y2FuX3F1ZXVlPjoKKyAgICBUaGlzIGlzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBTQ1NJIGNvbW1hbmRzIHF1ZXVlZCBpbnRlcm5hbGx5IHRvIHRoZQorICAgIEF0YXJpIFNDU0kgZHJpdmVyLiBBIHZhbHVlIG9mIDEgZWZmZWN0aXZlbHkgdHVybnMgb2ZmIHRoZSBkcml2ZXIKKyAgICBpbnRlcm5hbCBtdWx0aXRhc2tpbmcgKGlmIGl0IGNhdXNlcyBwcm9ibGVtcykuIExlZ2FsIHZhbHVlcyBhcmUgPj0KKyAgICAxLiA8Y2FuX3F1ZXVlPiBjYW4gYmUgYXMgaGlnaCBhcyB5b3UgbGlrZSwgYnV0IHZhbHVlcyBncmVhdGVyIHRoYW4KKyAgICA8Y21kX3Blcl9sdW4+IHRpbWVzIHRoZSBudW1iZXIgb2YgU0NTSSB0YXJnZXRzIChMVU5zKSB5b3UgaGF2ZQorICAgIGRvbid0IG1ha2Ugc2Vuc2UuIERlZmF1bHQ6IDE2LzguCisKKyAgPGNtZF9wZXJfbHVuPjoKKyAgICBNYXhpbXVtIG51bWJlciBvZiBTQ1NJIGNvbW1hbmRzIGlzc3VlZCB0byB0aGUgZHJpdmVyIGZvciBvbmUKKyAgICBsb2dpY2FsIHVuaXQgKExVTiwgdXN1YWxseSBvbmUgU0NTSSB0YXJnZXQpLiBMZWdhbCB2YWx1ZXMgc3RhcnQKKyAgICBmcm9tIDEuIElmIHRhZ2dlZCBxdWV1aW5nIChzZWUgYmVsb3cpIGlzIG5vdCB1c2VkLCB2YWx1ZXMgZ3JlYXRlcgorICAgIHRoYW4gMiBkb24ndCBtYWtlIHNlbnNlLCBidXQgd2FzdGUgbWVtb3J5LiBPdGhlcndpc2UsIHRoZSBtYXhpbXVtCisgICAgaXMgdGhlIG51bWJlciBvZiBjb21tYW5kIHRhZ3MgYXZhaWxhYmxlIHRvIHRoZSBkcml2ZXIgKGN1cnJlbnRseQorICAgIDMyKS4gRGVmYXVsdDogOC8xLiAoTm90ZTogVmFsdWVzID4gMSBzZWVtIHRvIGNhdXNlIHByb2JsZW1zIG9uIGEKKyAgICBGYWxjb24sIGNhdXNlIG5vdCB5ZXQga25vd24uKQorCisgICAgICBUaGUgPGNtZF9wZXJfbHVuPiB2YWx1ZSBhdCBhIGdyZWF0IHBhcnQgZGV0ZXJtaW5lcyB0aGUgYW1vdW50IG9mCisgICAgbWVtb3J5IFNDU0kgcmVzZXJ2ZXMgZm9yIGl0c2VsZi4gVGhlIGZvcm11bGEgaXMgcmF0aGVyCisgICAgY29tcGxpY2F0ZWQsIGJ1dCBJIGNhbiBnaXZlIHlvdSBzb21lIGhpbnRzOgorICAgICAgbm8gc2NhdHRlci1nYXRoZXIgIDogY21kX3Blcl9sdW4gKiAyMzIgYnl0ZXMKKyAgICAgIGZ1bGwgc2NhdHRlci1nYXRoZXI6IGNtZF9wZXJfbHVuICogYXBwcm94LiAxNyBLYnl0ZXMKKworICA8c2NhdC1nYXQ+OgorICAgIFNpemUgb2YgdGhlIHNjYXR0ZXItZ2F0aGVyIHRhYmxlLCBpLmUuIHRoZSBudW1iZXIgb2YgcmVxdWVzdHMKKyAgICBjb25zZWN1dGl2ZSBvbiB0aGUgZGlzayB0aGF0IGNhbiBiZSBtZXJnZWQgaW50byBvbmUgU0NTSSBjb21tYW5kLgorICAgIExlZ2FsIHZhbHVlcyBhcmUgYmV0d2VlbiAwIGFuZCAyNTUuIERlZmF1bHQ6IDI1NS8wLiBOb3RlOiBUaGlzCisgICAgdmFsdWUgaXMgZm9yY2VkIHRvIDAgb24gYSBGYWxjb24sIHNpbmNlIHNjYXR0ZXItZ2F0aGVyIGlzbid0CisgICAgcG9zc2libGUgd2l0aCB0aGUgU1QtRE1BLiBOb3QgdXNpbmcgc2NhdHRlci1nYXRoZXIgaHVydHMKKyAgICBwZXJmb3JtYW5jZSBzaWduaWZpY2FudGx5LgorCisgIDxob3N0LWlkPjoKKyAgICBUaGUgU0NTSSBJRCB0byBiZSB1c2VkIGJ5IHRoZSBpbml0aWF0b3IgKHlvdXIgQXRhcmkpLiBUaGlzIGlzCisgICAgdXN1YWxseSA3LCB0aGUgaGlnaGVzdCBwb3NzaWJsZSBJRC4gRXZlcnkgSUQgb24gdGhlIFNDU0kgYnVzIG11c3QKKyAgICBiZSB1bmlxdWUuIERlZmF1bHQ6IGRldGVybWluZWQgYXQgcnVuIHRpbWU6IElmIHRoZSBOVi1SQU0gY2hlY2tzdW0KKyAgICBpcyB2YWxpZCwgYW5kIGJpdCA3IGluIGJ5dGUgMzAgb2YgdGhlIE5WLVJBTSBpcyBzZXQsIHRoZSBsb3dlciAzCisgICAgYml0cyBvZiB0aGlzIGJ5dGUgYXJlIHVzZWQgYXMgdGhlIGhvc3QgSUQuIChUaGlzIG1ldGhvZCBpcyBkZWZpbmVkCisgICAgYnkgQXRhcmkgYW5kIGFsc28gdXNlZCBieSBzb21lIFRPUyBIRCBkcml2ZXJzLikgSWYgdGhlIGFib3ZlCisgICAgaXNuJ3QgZ2l2ZW4sIHRoZSBkZWZhdWx0IElEIGlzIDcuIChib3RoLCBUVCBhbmQgRmFsY29uKS4KKworICA8dGFnZ2VkPjoKKyAgICAwIG1lYW5zIHR1cm4gb2ZmIHRhZ2dlZCBxdWV1aW5nIHN1cHBvcnQsIGFsbCBvdGhlciB2YWx1ZXMgPiAwIG1lYW4KKyAgICB1c2UgdGFnZ2VkIHF1ZXVpbmcgZm9yIHRhcmdldHMgdGhhdCBzdXBwb3J0IGl0LiBEZWZhdWx0OiBjdXJyZW50bHkKKyAgICBvZmYsIGJ1dCB0aGlzIG1heSBjaGFuZ2Ugd2hlbiB0YWdnZWQgcXVldWluZyBoYW5kbGluZyBoYXMgYmVlbgorICAgIHByb3ZlZCB0byBiZSByZWxpYWJsZS4KKworICAgIFRhZ2dlZCBxdWV1aW5nIG1lYW5zIHRoYXQgbW9yZSB0aGFuIG9uZSBjb21tYW5kIGNhbiBiZSBpc3N1ZWQgdG8KKyAgICBvbmUgTFVOLCBhbmQgdGhlIFNDU0kgZGV2aWNlIGl0c2VsZiBvcmRlcnMgdGhlIHJlcXVlc3RzIHNvIHRoZXkKKyAgICBjYW4gYmUgcGVyZm9ybWVkIGluIG9wdGltYWwgb3JkZXIuIE5vdCBhbGwgU0NTSSBkZXZpY2VzIHN1cHBvcnQKKyAgICB0YWdnZWQgcXVldWluZyAoOi0oKS4KKworNC41IHN3aXRjaGVzPQorLS0tLS0tLS0tLS0tLQorCitTeW50YXg6IHN3aXRjaGVzPTxsaXN0IG9mIHN3aXRjaGVzPgorCisgIFdpdGggdGhpcyBvcHRpb24geW91IGNhbiBzd2l0Y2ggc29tZSBoYXJkd2FyZSBsaW5lcyB0aGF0IGFyZSBvZnRlbgordXNlZCB0byBlbmFibGUvZGlzYWJsZSBjZXJ0YWluIGhhcmR3YXJlIGV4dGVuc2lvbnMuIEV4YW1wbGVzIGFyZQorT3ZlclNjYW4sIG92ZXJjbG9ja2luZywgLi4uCisKKyAgVGhlIDxsaXN0IG9mIHN3aXRjaGVzPiBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBmb2xsb3dpbmcKK2l0ZW1zOgorCisgIGlrYmQ6IHNldCBSVFMgb2YgdGhlIGtleWJvYXJkIEFDSUEgaGlnaAorICBtaWRpOiBzZXQgUlRTIG9mIHRoZSBNSURJIEFDSUEgaGlnaAorICBzbmQ2OiBzZXQgYml0IDYgb2YgdGhlIFBTRyBwb3J0IEEKKyAgc25kNzogc2V0IGJpdCA2IG9mIHRoZSBQU0cgcG9ydCBBCisKK0l0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBtZW50aW9uIGEgc3dpdGNoIG1vcmUgdGhhbiBvbmNlIChubworZGlmZmVyZW5jZSB0byBvbmx5IG9uY2UpLCBidXQgeW91IGNhbiBnaXZlIGFzIG1hbnkgc3dpdGNoZXMgYXMgeW91Cit3YW50IHRvIGVuYWJsZSBkaWZmZXJlbnQgZmVhdHVyZXMuIFRoZSBzd2l0Y2ggbGluZXMgYXJlIHNldCBhcyBlYXJseQorYXMgcG9zc2libGUgZHVyaW5nIGtlcm5lbCBpbml0aWFsaXphdGlvbiAoZXZlbiBiZWZvcmUgZGV0ZXJtaW5pbmcgdGhlCitwcmVzZW50IGhhcmR3YXJlLikKKworICBBbGwgb2YgdGhlIGl0ZW1zIGNhbiBhbHNvIGJlIHByZWZpeGVkIHdpdGggIm92XyIsIGkuZS4gIm92X2lrYmQiLAorIm92X21pZGkiLCAuLi4gVGhlc2Ugb3B0aW9ucyBhcmUgbWVhbnQgZm9yIHN3aXRjaGluZyBvbiBhbiBPdmVyU2NhbgordmlkZW8gZXh0ZW5zaW9uLiBUaGUgZGlmZmVyZW5jZSB0byB0aGUgYmFyZSBvcHRpb24gaXMgdGhhdCB0aGUKK3N3aXRjaC1vbiBpcyBkb25lIGFmdGVyIHZpZGVvIGluaXRpYWxpemF0aW9uLCBhbmQgc29tZWhvdyBzeW5jaHJvbml6ZWQKK3RvIHRoZSBIQkxBTksuIEEgc3BlY2lhbGl0eSBpcyB0aGF0IG92X2lrYmQgYW5kIG92X21pZGkgYXJlIHN3aXRjaGVkCitvZmYgYmVmb3JlIHJlYm9vdGluZywgc28gdGhhdCBPdmVyU2NhbiBpcyBkaXNhYmxlZCBhbmQgVE9TIGJvb3RzCitjb3JyZWN0bHkuCisKKyAgSWYgeW91IGdpdmUgYW4gb3B0aW9uIGJvdGgsIHdpdGggYW5kIHdpdGhvdXQgdGhlICJvdl8iIHByZWZpeCwgdGhlCitlYXJsaWVyIGluaXRpYWxpemF0aW9uICgib3ZfIi1sZXNzKSB0YWtlcyBwcmVjZWRlbmNlLiBCdXQgdGhlCitzd2l0Y2hpbmctb2ZmIG9uIHJlc2V0IHN0aWxsIGhhcHBlbnMgaW4gdGhpcyBjYXNlLgorCis1KSBPcHRpb25zIGZvciBBbWlnYSBPbmx5OgorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworNS4xKSB2aWRlbz0KKy0tLS0tLS0tLS0tCisKK1N5bnRheDogdmlkZW89PGZibmFtZT46PHN1Yi1vcHRpb25zLi4uPgorCitUaGUgPGZibmFtZT4gcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgZnJhbWUgYnVmZmVyLCB2YWxpZAorb3B0aW9ucyBhcmUgYGFtaWZiJywgYGN5YmVyJywgJ3ZpcmdlJywgYHJldHozJyBhbmQgYGNsZ2VuJywgcHJvdmlkZWQKK3RoYXQgdGhlIHJlc3BlY3RpdmUgZnJhbWUgYnVmZmVyIGRldmljZXMgaGF2ZSBiZWVuIGNvbXBpbGVkIGludG8gdGhlCitrZXJuZWwgKG9yIGNvbXBpbGVkIGFzIGxvYWRhYmxlIG1vZHVsZXMpLiBUaGUgYmVoYXZpb3Igb2YgdGhlIDxmYm5hbWU+CitvcHRpb24gd2FzIGNoYW5nZWQgaW4gMi4xLjU3IHNvIGl0IGlzIG5vdyByZWNvbW1lbmRlZCB0byBzcGVjaWZ5IHRoaXMKK29wdGlvbi4KKworVGhlIDxzdWItb3B0aW9ucz4gaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgc3ViLW9wdGlvbnMgbGlzdGVkCitiZWxvdy4gVGhpcyBvcHRpb24gaXMgb3JnYW5pemVkIHNpbWlsYXIgdG8gdGhlIEF0YXJpIHZlcnNpb24gb2YgdGhlCisidmlkZW8iLW9wdGlvbiAoNC4xKSwgYnV0IGtub3dzIGZld2VyIHN1Yi1vcHRpb25zLgorCis1LjEuMSkgdmlkZW8gbW9kZQorLS0tLS0tLS0tLS0tLS0tLS0KKworQWdhaW4sIHNpbWlsYXIgdG8gdGhlIHZpZGVvIG1vZGUgZm9yIHRoZSBBdGFyaSAoc2VlIDQuMS4xKS4gUHJlZGVmaW5lZAorbW9kZXMgZGVwZW5kIG9uIHRoZSB1c2VkIGZyYW1lIGJ1ZmZlciBkZXZpY2UuCisKK09DUywgRUNTIGFuZCBBR0EgbWFjaGluZXMgYWxsIHVzZSB0aGUgY29sb3IgZnJhbWUgYnVmZmVyLiBUaGUgZm9sbG93aW5nCitwcmVkZWZpbmVkIHZpZGVvIG1vZGVzIGFyZSBhdmFpbGFibGU6CisKK05UU0MgbW9kZXM6CisgLSBudHNjICAgICAgICAgICAgOiA2NDB4MjAwLCAxNSBrSHosIDYwIEh6CisgLSBudHNjLWxhY2UgICAgICAgOiA2NDB4NDAwLCAxNSBrSHosIDYwIEh6IGludGVybGFjZWQKK1BBTCBtb2RlczoKKyAtIHBhbCAgICAgICAgICAgICA6IDY0MHgyNTYsIDE1IGtIeiwgNTAgSHoKKyAtIHBhbC1sYWNlICAgICAgICA6IDY0MHg1MTIsIDE1IGtIeiwgNTAgSHogaW50ZXJsYWNlZAorRUNTIG1vZGVzOgorIC0gbXVsdGlzY2FuICAgICAgIDogNjQweDQ4MCwgMjkga0h6LCA1NyBIegorIC0gbXVsdGlzY2FuLWxhY2UgIDogNjQweDk2MCwgMjkga0h6LCA1NyBIeiBpbnRlcmxhY2VkCisgLSBldXJvMzYgICAgICAgICAgOiA2NDB4MjAwLCAxNSBrSHosIDcyIEh6CisgLSBldXJvMzYtbGFjZSAgICAgOiA2NDB4NDAwLCAxNSBrSHosIDcyIEh6IGludGVybGFjZWQKKyAtIGV1cm83MiAgICAgICAgICA6IDY0MHg0MDAsIDI5IGtIeiwgNjggSHoKKyAtIGV1cm83Mi1sYWNlICAgICA6IDY0MHg4MDAsIDI5IGtIeiwgNjggSHogaW50ZXJsYWNlZAorIC0gc3VwZXI3MiAgICAgICAgIDogODAweDMwMCwgMjMga0h6LCA3MCBIegorIC0gc3VwZXI3Mi1sYWNlICAgIDogODAweDYwMCwgMjMga0h6LCA3MCBIeiBpbnRlcmxhY2VkCisgLSBkYmxudHNjLWZmICAgICAgOiA2NDB4NDAwLCAyNyBrSHosIDU3IEh6CisgLSBkYmxudHNjLWxhY2UgICAgOiA2NDB4ODAwLCAyNyBrSHosIDU3IEh6IGludGVybGFjZWQKKyAtIGRibHBhbC1mZiAgICAgICA6IDY0MHg1MTIsIDI3IGtIeiwgNDcgSHoKKyAtIGRibHBhbC1sYWNlICAgICA6IDY0MHgxMDI0LCAyNyBrSHosIDQ3IEh6IGludGVybGFjZWQKKyAtIGRibG50c2MgICAgICAgICA6IDY0MHgyMDAsIDI3IGtIeiwgNTcgSHogZG91Ymxlc2NhbgorIC0gZGJscGFsICAgICAgICAgIDogNjQweDI1NiwgMjcga0h6LCA0NyBIeiBkb3VibGVzY2FuCitWR0EgbW9kZXM6CisgLSB2Z2EgICAgICAgICAgICAgOiA2NDB4NDgwLCAzMSBrSHosIDYwIEh6CisgLSB2Z2E3MCAgICAgICAgICAgOiA2NDB4NDAwLCAzMSBrSHosIDcwIEh6CisKK1BsZWFzZSBub3RpY2UgdGhhdCB0aGUgRUNTIGFuZCBWR0EgbW9kZXMgcmVxdWlyZSBlaXRoZXIgYW4gRUNTIG9yIEFHQQorY2hpcHNldCwgYW5kIHRoYXQgdGhlc2UgbW9kZXMgYXJlIGxpbWl0ZWQgdG8gMi1iaXQgY29sb3IgZm9yIHRoZSBFQ1MKK2NoaXBzZXQgYW5kIDgtYml0IGNvbG9yIGZvciB0aGUgQUdBIGNoaXBzZXQuCisKKzUuMS4yKSBkZXB0aAorLS0tLS0tLS0tLS0tCisKK1N5bnRheDogZGVwdGg6PG5yLiBvZiBiaXQtcGxhbmVzPgorCitTcGVjaWZ5IHRoZSBudW1iZXIgb2YgYml0LXBsYW5lcyBmb3IgdGhlIHNlbGVjdGVkIHZpZGVvLW1vZGUuCisKKzUuMS4zKSBpbnZlcnNlCistLS0tLS0tLS0tLS0tLQorCitVc2UgaW52ZXJ0ZWQgZGlzcGxheSAoYmxhY2sgb24gd2hpdGUpLiBGdW5jdGlvbmFsbHkgdGhlIHNhbWUgYXMgdGhlCisiaW52ZXJzZSIgc3ViLW9wdGlvbiBmb3IgdGhlIEF0YXJpLgorCis1LjEuNCkgZm9udAorLS0tLS0tLS0tLS0KKworU3ludGF4OiBmb250Ojxmb250bmFtZT4KKworU3BlY2lmeSB0aGUgZm9udCB0byB1c2UgaW4gdGV4dCBtb2Rlcy4gRnVuY3Rpb25hbGx5IHRoZSBzYW1lIGFzIHRoZQorImZvbnQiIHN1Yi1vcHRpb24gZm9yIHRoZSBBdGFyaSwgZXhjZXB0IHRoYXQgYFBFQVJMOHg4JyBpcyB1c2VkIGluc3RlYWQKK29mIGBWR0E4eDgnIGlmIHRoZSB2ZXJ0aWNhbCBzaXplIG9mIHRoZSBkaXNwbGF5IGlzIGxlc3MgdGhhbiA0MDAgcGl4ZWwKK3Jvd3MuCisKKzUuMS41KSBtb25pdG9yY2FwOgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTeW50YXg6IG1vbml0b3JjYXA6PHZtaW4+Ozx2bWF4Pjs8aG1pbj47PGhtYXg+CisKK1RoaXMgZGVzY3JpYmVzIHRoZSBjYXBhYmlsaXRpZXMgb2YgYSBtdWx0aXN5bmMgbW9uaXRvci4gRm9yIG5vdywgb25seQordGhlIGNvbG9yIGZyYW1lIGJ1ZmZlciB1c2VzIHRoZSBzZXR0aW5ncyBvZiAibW9uaXRvcmNhcDoiLgorCisgIDx2bWluPiBhbmQgPHZtYXg+IGFyZSB0aGUgbWluaW11bSBhbmQgbWF4aW11bSwgcmVzcC4sIHZlcnRpY2FsIGZyZXF1ZW5jaWVzCit5b3VyIG1vbml0b3IgY2FuIHdvcmsgd2l0aCwgaW4gSHouIDxobWluPiBhbmQgPGhtYXg+IGFyZSB0aGUgc2FtZSBmb3IKK3RoZSBob3Jpem9udGFsIGZyZXF1ZW5jeSwgaW4ga0h6LgorCisgIFRoZSBkZWZhdWx0cyBhcmUgNTA7OTA7MTU7MzggKEdlbmVyaWMgQW1pZ2EgbXVsdGlzeW5jIG1vbml0b3IpLgorCisKKzUuMikgZmRfZGVmX2RmMD0KKy0tLS0tLS0tLS0tLS0tLS0KKworU3ludGF4OiBmZF9kZWZfZGYwPTx2YWx1ZT4KKworU2V0cyB0aGUgZGYwIHZhbHVlIGZvciAic2lsZW50IiBmbG9wcHkgZHJpdmVzLiBUaGUgdmFsdWUgc2hvdWxkIGJlIGluCitoZXhhZGVjaW1hbCB3aXRoICIweCIgcHJlZml4LgorCisKKzUuMykgd2QzM2M5Mz0KKy0tLS0tLS0tLS0tLS0KKworU3ludGF4OiB3ZDMzYzkzPTxzdWItb3B0aW9ucy4uLj4KKworVGhlc2Ugb3B0aW9ucyBhZmZlY3QgdGhlIEE1OTAvQTIwOTEsIEEzMDAwIGFuZCBHVlAgU2VyaWVzIElJIFNDU0kKK2NvbnRyb2xsZXJzLgorCitUaGUgPHN1Yi1vcHRpb25zPiBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBzdWItb3B0aW9ucyBsaXN0ZWQKK2JlbG93LgorCis1LjMuMSkgbm9zeW5jCistLS0tLS0tLS0tLS0tCisKK1N5bnRheDogbm9zeW5jOmJpdG1hc2sKKworICBiaXRtYXNrIGlzIGEgYnl0ZSB3aGVyZSB0aGUgMXN0IDcgYml0cyBjb3JyZXNwb25kIHdpdGggdGhlIDcKK3Bvc3NpYmxlIFNDU0kgZGV2aWNlcy4gU2V0IGEgYml0IHRvIHByZXZlbnQgc3luYyBuZWdvdGlhdGlvbiBvbiB0aGF0CitkZXZpY2UuIFRvIG1haW50YWluIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBhIGNvbW1hbmQtbGluZSBzdWNoIGFzCisid2QzM2M5Mz0yNTUiIHdpbGwgYmUgYXV0b21hdGljYWxseSB0cmFuc2xhdGVkIHRvCisid2QzM2M5Mz1ub3N5bmM6MHhmZiIuIFRoZSBkZWZhdWx0IGlzIHRvIGRpc2FibGUgc3luYyBuZWdvdGlhdGlvbiBmb3IKK2FsbCBkZXZpY2VzLCBlZy4gbm9zeW5jOjB4ZmYuCisKKzUuMy4yKSBwZXJpb2QKKy0tLS0tLS0tLS0tLS0KKworU3ludGF4OiBwZXJpb2Q6bnMKKworICBgbnMnIGlzIHRoZSBtaW5pbXVtICMgb2YgbmFub3NlY29uZHMgaW4gYSBTQ1NJIGRhdGEgdHJhbnNmZXIKK3BlcmlvZC4gRGVmYXVsdCBpcyA1MDA7IGFjY2VwdGFibGUgdmFsdWVzIGFyZSAyNTAgLSAxMDAwLgorCis1LjMuMykgZGlzY29ubmVjdAorLS0tLS0tLS0tLS0tLS0tLS0KKworU3ludGF4OiBkaXNjb25uZWN0OngKKworICBTcGVjaWZ5IHggPSAwIHRvIG5ldmVyIGFsbG93IGRpc2Nvbm5lY3RzLCAyIHRvIGFsd2F5cyBhbGxvdyB0aGVtLgoreCA9IDEgZG9lcyAnYWRhcHRpdmUnIGRpc2Nvbm5lY3RzLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBhbmQgZ2VuZXJhbGx5Cit0aGUgYmVzdCBjaG9pY2UuCisKKzUuMy40KSBkZWJ1ZworLS0tLS0tLS0tLS0tCisKK1N5bnRheDogZGVidWc6eAorCisgIElmIGBERUJVR0dJTkdfT04nIGlzIGRlZmluZWQsIHggaXMgYSBiaXQgbWFzayB0aGF0IGNhdXNlcyB2YXJpb3VzCit0eXBlcyBvZiBkZWJ1ZyBvdXRwdXQgdG8gcHJpbnRlZCAtIHNlZSB0aGUgREJfeHh4IGRlZmluZXMgaW4KK3dkMzNjOTMuaC4KKworNS4zLjUpIGNsb2NrCistLS0tLS0tLS0tLS0KKworU3ludGF4OiBjbG9jazp4CisKKyAgeCA9IGNsb2NrIGlucHV0IGluIE1IeiBmb3IgV0QzM2M5MyBjaGlwLiBOb3JtYWwgdmFsdWVzIHdvdWxkIGJlIGZyb20KKzggdGhyb3VnaCAyMC4gVGhlIGRlZmF1bHQgdmFsdWUgZGVwZW5kcyBvbiB5b3VyIGhvc3RhZGFwdGVyKHMpLAorZGVmYXVsdCBmb3IgdGhlIEEzMDAwIGludGVybmFsIGNvbnRyb2xsZXIgaXMgMTQsIGZvciB0aGUgQTIwOTEgaXQncyA4CithbmQgZm9yIHRoZSBHVlAgaG9zdGFkYXB0ZXJzIGl0J3MgZWl0aGVyIDggb3IgMTQsIGRlcGVuZGluZyBvbiB0aGUKK2hvc3RhZGFwdGVyIGFuZCB0aGUgU0NTSS1jbG9jayBqdW1wZXIgcHJlc2VudCBvbiBzb21lIEdWUAoraG9zdGFkYXB0ZXJzLgorCis1LjMuNikgbmV4dAorLS0tLS0tLS0tLS0KKworICBObyBhcmd1bWVudC4gVXNlZCB0byBzZXBhcmF0ZSBibG9ja3Mgb2Yga2V5d29yZHMgd2hlbiB0aGVyZSdzIG1vcmUKK3RoYW4gb25lIHdkMzNjOTMtYmFzZWQgaG9zdCBhZGFwdGVyIGluIHRoZSBzeXN0ZW0uCisKKzUuMy43KSBub2RtYQorLS0tLS0tLS0tLS0tCisKK1N5bnRheDogbm9kbWE6eAorCisgIElmIHggaXMgMSAob3IgaWYgdGhlIG9wdGlvbiBpcyBqdXN0IHdyaXR0ZW4gYXMgIm5vZG1hIiksIHRoZSBXRDMzYzkzCitjb250cm9sbGVyIHdpbGwgbm90IHVzZSBETUEgKD0gZGlyZWN0IG1lbW9yeSBhY2Nlc3MpIHRvIGFjY2VzcyB0aGUKK0FtaWdhJ3MgbWVtb3J5LiAgVGhpcyBpcyB1c2VmdWwgZm9yIHNvbWUgc3lzdGVtcyAobGlrZSBBMzAwMCdzIGFuZAorQTQwMDAncyB3aXRoIHRoZSBBMzY0MCBhY2NlbGVyYXRvciwgcmV2aXNpb24gMy4wKSB0aGF0IGhhdmUgcHJvYmxlbXMKK3VzaW5nIERNQSB0byBjaGlwIG1lbW9yeS4gIFRoZSBkZWZhdWx0IGlzIDAsIGkuZS4gdG8gdXNlIERNQSBpZgorcG9zc2libGUuCisKKworNS40KSBndnAxMT0KKy0tLS0tLS0tLS0tCisKK1N5bnRheDogZ3ZwMTE9PGFkZHItbWFzaz4KKworICBUaGUgZWFybGllciB2ZXJzaW9ucyBvZiB0aGUgR1ZQIGRyaXZlciBkaWQgbm90IGhhbmRsZSBETUEKK2FkZHJlc3MtbWFzayBzZXR0aW5ncyBjb3JyZWN0bHkgd2hpY2ggbWFkZSBpdCBuZWNlc3NhcnkgZm9yIHNvbWUKK3Blb3BsZSB0byB1c2UgdGhpcyBvcHRpb24sIGluIG9yZGVyIHRvIGdldCB0aGVpciBHVlAgY29udHJvbGxlcgorcnVubmluZyB1bmRlciBMaW51eC4gVGhlc2UgcHJvYmxlbXMgaGF2ZSBob3BlZnVsbHkgYmVlbiBzb2x2ZWQgYW5kIHRoZQordXNlIG9mIHRoaXMgb3B0aW9uIGlzIG5vdyBoaWdobHkgdW5yZWNvbW1lbmRlZCEKKworICBJbmNvcnJlY3QgdXNlIGNhbiBsZWFkIHRvIHVucHJlZGljdGFibGUgYmVoYXZpb3IsIHNvIHBsZWFzZSBvbmx5IHVzZQordGhpcyBvcHRpb24gaWYgeW91ICprbm93KiB3aGF0IHlvdSBhcmUgZG9pbmcgYW5kIGhhdmUgYSByZWFzb24gdG8gZG8KK3NvLiBJbiBhbnkgY2FzZSBpZiB5b3UgZXhwZXJpZW5jZSBwcm9ibGVtcyBhbmQgbmVlZCB0byB1c2UgdGhpcworb3B0aW9uLCBwbGVhc2UgaW5mb3JtIHVzIGFib3V0IGl0IGJ5IG1haWxpbmcgdG8gdGhlIExpbnV4LzY4ayBrZXJuZWwKK21haWxpbmcgbGlzdC4KKworICBUaGUgYWRkcmVzcyBtYXNrIHNldCBieSB0aGlzIG9wdGlvbiBzcGVjaWZpZXMgd2hpY2ggYWRkcmVzc2VzIGFyZQordmFsaWQgZm9yIERNQSB3aXRoIHRoZSBHVlAgU2VyaWVzIElJIFNDU0kgY29udHJvbGxlci4gQW4gYWRkcmVzcyBpcwordmFsaWQsIGlmIG5vIGJpdHMgYXJlIHNldCBleGNlcHQgdGhlIGJpdHMgdGhhdCBhcmUgc2V0IGluIHRoZSBtYXNrLAordG9vLgorCisgIFNvbWUgdmVyc2lvbnMgb2YgdGhlIEdWUCBjYW4gb25seSBETUEgaW50byBhIDI0IGJpdCBhZGRyZXNzIHJhbmdlLAorc29tZSBjYW4gYWRkcmVzcyBhIDI1IGJpdCBhZGRyZXNzIHJhbmdlIHdoaWxlIG90aGVycyBjYW4gdXNlIHRoZSB3aG9sZQorMzIgYml0IGFkZHJlc3MgcmFuZ2UgZm9yIERNQS4gVGhlIGNvcnJlY3Qgc2V0dGluZyBkZXBlbmRzIG9uIHlvdXIKK2NvbnRyb2xsZXIgYW5kIHNob3VsZCBiZSBhdXRvZGV0ZWN0ZWQgYnkgdGhlIGRyaXZlci4gQW4gZXhhbXBsZSBpcyB0aGUKKzI0IGJpdCByZWdpb24gd2hpY2ggaXMgc3BlY2lmaWVkIGJ5IGEgbWFzayBvZiAweDAwZmZmZmZlLgorCisKKy8qIExvY2FsIFZhcmlhYmxlczogKi8KKy8qIG1vZGU6IHRleHQgICAgICAgKi8KKy8qIEVuZDogICAgICAgICAgICAgKi8KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbWFnaWMtbnVtYmVyLnR4dCBiL0RvY3VtZW50YXRpb24vbWFnaWMtbnVtYmVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGJlZmVkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9tYWdpYy1udW1iZXIudHh0CkBAIC0wLDAgKzEsMTU4IEBACitUaGlzIGZpbGUgaXMgYSByZWdpc3RyeSBvZiBtYWdpYyBudW1iZXJzIHdoaWNoIGFyZSBpbiB1c2UuICBXaGVuIHlvdQorYWRkIGEgbWFnaWMgbnVtYmVyIHRvIGEgc3RydWN0dXJlLCB5b3Ugc2hvdWxkIGFsc28gYWRkIGl0IHRvIHRoaXMKK2ZpbGUsIHNpbmNlIGl0IGlzIGJlc3QgaWYgdGhlIG1hZ2ljIG51bWJlcnMgdXNlZCBieSB2YXJpb3VzIHN0cnVjdHVyZXMKK2FyZSB1bmlxdWUuCisKK0l0IGlzIGEgKnZlcnkqIGdvb2QgaWRlYSB0byBwcm90ZWN0IGtlcm5lbCBkYXRhIHN0cnVjdHVyZXMgd2l0aCBtYWdpYworbnVtYmVycy4gIFRoaXMgYWxsb3dzIHlvdSB0byBjaGVjayBhdCBydW4gdGltZSB3aGV0aGVyIChhKSBhIHN0cnVjdHVyZQoraGFzIGJlZW4gY2xvYmJlcmVkLCBvciAoYikgeW91J3ZlIHBhc3NlZCB0aGUgd3Jvbmcgc3RydWN0dXJlIHRvIGEKK3JvdXRpbmUuICBUaGlzIGxhc3QgaXMgZXNwZWNpYWxseSB1c2VmdWwgLS0tIHBhcnRpY3VsYXJseSB3aGVuIHlvdSBhcmUKK3Bhc3NpbmcgcG9pbnRlcnMgdG8gc3RydWN0dXJlcyB2aWEgYSB2b2lkICogcG9pbnRlci4gIFRoZSB0dHkgY29kZSwKK2ZvciBleGFtcGxlLCBkb2VzIHRoaXMgZnJlcXVlbnRseSB0byBwYXNzIGRyaXZlci1zcGVjaWZpYyBhbmQgbGluZQorZGlzY2lwbGluZS1zcGVjaWZpYyBzdHJ1Y3R1cmVzIGJhY2sgYW5kIGZvcnRoLgorCitUaGUgd2F5IHRvIHVzZSBtYWdpYyBudW1iZXJzIGlzIHRvIGRlY2xhcmUgdGhlbiBhdCB0aGUgYmVnaW5uaW5nIG9mCit0aGUgc3RydWN0dXJlLCBsaWtlIHNvOgorCitzdHJ1Y3QgdHR5X2xkaXNjIHsKKwlpbnQJbWFnaWM7CisJLi4uCit9OworCitQbGVhc2UgZm9sbG93IHRoaXMgZGlzY2lwbGluZSB3aGVuIHlvdSBhcmUgYWRkaW5nIGZ1dHVyZSBlbmhhbmNlbWVudHMKK3RvIHRoZSBrZXJuZWwhICBJdCBoYXMgc2F2ZWQgbWUgY291bnRsZXNzIGhvdXJzIG9mIGRlYnVnZ2luZywKK2VzcGVjaWFsbHkgaW4gdGhlIHNjcmV3eSBjYXNlcyB3aGVyZSBhbiBhcnJheSBoYXMgYmVlbiBvdmVycnVuIGFuZAorc3RydWN0dXJlcyBmb2xsb3dpbmcgdGhlIGFycmF5IGhhdmUgYmVlbiBvdmVyd3JpdHRlbi4gIFVzaW5nIHRoaXMKK2Rpc2NpcGxpbmUsIHRoZXNlIGNhc2VzIGdldCBkZXRlY3RlZCBxdWlja2x5IGFuZCBzYWZlbHkuCisKKwkJCQkJVGhlb2RvcmUgVHMnbworCQkJCQkzMSBNYXIgOTQKKworVGhlIG1hZ2ljIHRhYmxlIGlzIGN1cnJlbnQgdG8gTGludXggMi4xLjU1LgorCisJCQkJCU1pY2hhZWwgQ2hhc3RhaW4KKwkJCQkJPG1haWx0bzptZWNAc2hvdXQubmV0PgorCQkJCQkyMiBTZXAgMTk5NworCitOb3cgaXQgc2hvdWxkIGJlIHVwIHRvIGRhdGUgd2l0aCBMaW51eCAyLjEuMTEyLiBCZWNhdXNlCit3ZSBhcmUgaW4gZmVhdHVyZSBmcmVlemUgdGltZSBpdCBpcyB2ZXJ5IHVubGlrZWx5IHRoYXQKK3NvbWV0aGluZyB3aWxsIGNoYW5nZSBiZWZvcmUgMi4yLnguIFRoZSBlbnRyaWVzIGFyZQorc29ydGVkIGJ5IG51bWJlciBmaWVsZC4KKworCQkJCQlLcnp5c3p0b2YgRy4gQmFyYW5vd3NraQorCQkJCQk8bWFpbHRvOiBrZ2JAa25tLm9yZy5wbD4KKwkJCQkJMjkgSnVsIDE5OTgKKworVXBkYXRlZCB0aGUgbWFnaWMgdGFibGUgdG8gTGludXggMi41LjQ1LiBSaWdodCBvdmVyIHRoZSBmZWF0dXJlIGZyZWV6ZSwKK2J1dCBpdCBpcyBwb3NzaWJsZSB0aGF0IHNvbWUgbmV3IG1hZ2ljIG51bWJlcnMgd2lsbCBzbmVhayBpbnRvIHRoZQora2VybmVsIGJlZm9yZSAyLjYueCB5ZXQuCisKKwkJCQkJUGV0ciBCYXVkaXMKKwkJCQkJPHBhc2t5QHVjdy5jej4KKwkJCQkJMDMgTm92IDIwMDIKKworVXBkYXRlZCB0aGUgbWFnaWMgdGFibGUgdG8gTGludXggMi41Ljc0LgorCisJCQkJCUZhYmlhbiBGcmVkZXJpY2sKKwkJCQkJPGZmcmVkZXJpY2tAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCQkJCQkwOSBKdWwgMjAwMworCisKK01hZ2ljIE5hbWUgICAgICAgICAgICBOdW1iZXIgICAgICBTdHJ1Y3R1cmUgICAgICAgICAgICBGaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1BHX01BR0lDICAgICAgICAgICAgICAnUCcgICAgICAgICBwZ197cmVhZCx3cml0ZX1faGRyIGluY2x1ZGUvbGludXgvcGcuaAorQ01BR0lDICAgICAgICAgICAgICAgIDB4MDExMSAgICAgIHVzZXIgICAgICAgICAgICAgIGluY2x1ZGUvbGludXgvYS5vdXQuaAorTUtJU1NfRFJJVkVSX01BR0lDICAgIDB4MDRiZiAgICAgIG1raXNzX2NoYW5uZWwgICAgIGRyaXZlcnMvbmV0L21raXNzLmgKK0hETENfTUFHSUMgICAgICAgICAgICAweDIzOWUgICAgICBuX2hkbGMgICAgICAgICAgICBkcml2ZXJzL2NoYXIvbl9oZGxjLmMKK0FQTV9CSU9TX01BR0lDICAgICAgICAweDQxMDEgICAgICBhcG1fdXNlciAgICAgICAgICBhcmNoL3g4Ni9rZXJuZWwvYXBtXzMyLmMKK0NZQ0xBREVTX01BR0lDICAgICAgICAweDQzNTkgICAgICBjeWNsYWRlc19wb3J0ICAgICBpbmNsdWRlL2xpbnV4L2N5Y2xhZGVzLmgKK0RCX01BR0lDICAgICAgICAgICAgICAweDQ0NDIgICAgICBmY19pbmZvICAgICAgICAgICBkcml2ZXJzL25ldC9pcGg1NTI2X25vdnJhbS5jCitETF9NQUdJQyAgICAgICAgICAgICAgMHg0NDRkICAgICAgZmNfaW5mbyAgICAgICAgICAgZHJpdmVycy9uZXQvaXBoNTUyNl9ub3ZyYW0uYworRkFTWU5DX01BR0lDICAgICAgICAgIDB4NDYwMSAgICAgIGZhc3luY19zdHJ1Y3QgICAgIGluY2x1ZGUvbGludXgvZnMuaAorRkZfTUFHSUMgICAgICAgICAgICAgIDB4NDY0NiAgICAgIGZjX2luZm8gICAgICAgICAgIGRyaXZlcnMvbmV0L2lwaDU1MjZfbm92cmFtLmMKK0lTSUNPTV9NQUdJQyAgICAgICAgICAweDRkNTQgICAgICBpc2lfcG9ydCAgICAgICAgICBpbmNsdWRlL2xpbnV4L2lzaWNvbS5oCitQVFlfTUFHSUMgICAgICAgICAgICAgMHg1MDAxICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVycy9jaGFyL3B0eS5jCitQUFBfTUFHSUMgICAgICAgICAgICAgMHg1MDAyICAgICAgcHBwICAgICAgICAgICAgICAgaW5jbHVkZS9saW51eC9pZl9wcHB2YXIuaAorU0VSSUFMX01BR0lDICAgICAgICAgIDB4NTMwMSAgICAgIGFzeW5jX3N0cnVjdCAgICAgIGluY2x1ZGUvbGludXgvc2VyaWFsLmgKK1NTVEFURV9NQUdJQyAgICAgICAgICAweDUzMDIgICAgICBzZXJpYWxfc3RhdGUgICAgICBpbmNsdWRlL2xpbnV4L3NlcmlhbC5oCitTTElQX01BR0lDICAgICAgICAgICAgMHg1MzAyICAgICAgc2xpcCAgICAgICAgICAgICAgZHJpdmVycy9uZXQvc2xpcC5oCitTVFJJUF9NQUdJQyAgICAgICAgICAgMHg1MzAzICAgICAgc3RyaXAgICAgICAgICAgICAgZHJpdmVycy9uZXQvc3RyaXAuYworWDI1X0FTWV9NQUdJQyAgICAgICAgIDB4NTMwMyAgICAgIHgyNV9hc3kgICAgICAgICAgIGRyaXZlcnMvbmV0L3gyNV9hc3kuaAorU0lYUEFDS19NQUdJQyAgICAgICAgIDB4NTMwNCAgICAgIHNpeHBhY2sgICAgICAgICAgIGRyaXZlcnMvbmV0L2hhbXJhZGlvLzZwYWNrLmgKK0FYMjVfTUFHSUMgICAgICAgICAgICAweDUzMTYgICAgICBheF9kaXNwICAgICAgICAgICBkcml2ZXJzL25ldC9ta2lzcy5oCitUVFlfTUFHSUMgICAgICAgICAgICAgMHg1NDAxICAgICAgdHR5X3N0cnVjdCAgICAgICAgaW5jbHVkZS9saW51eC90dHkuaAorTUdTTF9NQUdJQyAgICAgICAgICAgIDB4NTQwMSAgICAgIG1nc2xfaW5mbyAgICAgICAgIGRyaXZlcnMvY2hhci9zeW5jbGluay5jCitUVFlfRFJJVkVSX01BR0lDICAgICAgMHg1NDAyICAgICAgdHR5X2RyaXZlciAgICAgICAgaW5jbHVkZS9saW51eC90dHlfZHJpdmVyLmgKK01HU0xQQ19NQUdJQyAgICAgICAgICAweDU0MDIgICAgICBtZ3NscGNfaW5mbyAgICAgICBkcml2ZXJzL2NoYXIvcGNtY2lhL3N5bmNsaW5rX2NzLmMKK1RUWV9MRElTQ19NQUdJQyAgICAgICAweDU0MDMgICAgICB0dHlfbGRpc2MgICAgICAgICBpbmNsdWRlL2xpbnV4L3R0eV9sZGlzYy5oCitVU0JfU0VSSUFMX01BR0lDICAgICAgMHg2NzAyICAgICAgdXNiX3NlcmlhbCAgICAgICAgZHJpdmVycy91c2Ivc2VyaWFsL3VzYi1zZXJpYWwuaAorRlVMTF9EVVBMRVhfTUFHSUMgICAgIDB4Njk2OSAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlcnMvbmV0L2V0aGVybmV0L2RlYy90dWxpcC9kZTIxMDR4LmMKK1VTQl9CTFVFVE9PVEhfTUFHSUMgICAweDZkMDIgICAgICB1c2JfYmx1ZXRvb3RoICAgICBkcml2ZXJzL3VzYi9jbGFzcy9ibHVldHR5LmMKK1JGQ09NTV9UVFlfTUFHSUMgICAgICAweDZkMDIgICAgICAgICAgICAgICAgICAgICAgICBuZXQvYmx1ZXRvb3RoL3JmY29tbS90dHkuYworVVNCX1NFUklBTF9QT1JUX01BR0lDIDB4NzMwMSAgICAgIHVzYl9zZXJpYWxfcG9ydCAgIGRyaXZlcnMvdXNiL3NlcmlhbC91c2Itc2VyaWFsLmgKK0NHX01BR0lDICAgICAgICAgICAgICAweDAwMDkwMjU1ICB1ZnNfY3lsaW5kZXJfZ3JvdXAgaW5jbHVkZS9saW51eC91ZnNfZnMuaAorUlBPUlRfTUFHSUMgICAgICAgICAgIDB4MDA1MjUwMDEgIHJfcG9ydCAgICAgICAgICAgIGRyaXZlcnMvY2hhci9yb2NrZXRfaW50LmgKK0xTRU1BR0lDICAgICAgICAgICAgICAweDA1MDkxOTk4ICBsc2UgICAgICAgICAgICAgICBkcml2ZXJzL2ZjNC9mYy5jCitHRFRJT0NUTF9NQUdJQyAgICAgICAgMHgwNjAzMGYwNyAgZ2R0aF9pb3dyX3N0ciAgICAgZHJpdmVycy9zY3NpL2dkdGhfaW9jdGwuaAorUklFQkxfTUFHSUMgICAgICAgICAgIDB4MDkwNTE5OTAgICAgICAgICAgICAgICAgICAgIGRyaXZlcnMvbmV0L2F0YXJpbGFuY2UuYworTkJEX1JFUVVFU1RfTUFHSUMgICAgIDB4MTI1NjA5NTMgIG5iZF9yZXF1ZXN0ICAgICAgIGluY2x1ZGUvbGludXgvbmJkLmgKK1JFRF9NQUdJQzIgICAgICAgICAgICAweDE3MGZjMmE1ICAoYW55KSAgICAgICAgICAgICBtbS9zbGFiLmMKK0JBWUNPTV9NQUdJQyAgICAgICAgICAweDE5NzMwNTEwICBiYXljb21fc3RhdGUgICAgICBkcml2ZXJzL25ldC9iYXljb21fZXBwLmMKK0lTRE5fWDI1SUZBQ0VfTUFHSUMgICAweDFlNzVhMmI5ICBpc2RuX3gyNWlmYWNlX3Byb3RvX2RhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXJzL2lzZG4vaXNkbl94MjVpZmFjZS5oCitFQ1BfTUFHSUMgICAgICAgICAgICAgMHgyMTUwNDM0NSAgY2RrZWNwc2lnICAgICAgICAgaW5jbHVkZS9saW51eC9jZGsuaAorTFNPTUFHSUMgICAgICAgICAgICAgIDB4MjcwOTE5OTcgIGxzbyAgICAgICAgICAgICAgIGRyaXZlcnMvZmM0L2ZjLmMKK0xTTUFHSUMgICAgICAgICAgICAgICAweDJhM2I0ZDJhICBscyAgICAgICAgICAgICAgICBkcml2ZXJzL2ZjNC9mYy5jCitXQU5QSVBFX01BR0lDICAgICAgICAgMHg0MTRDNDQ1MyAgc2RsYV97ZHVtcCxleGVjfSAgaW5jbHVkZS9saW51eC93YW5waXBlLmgKK0NTX0NBUkRfTUFHSUMgICAgICAgICAweDQzNTI1NTUzICBjc19jYXJkICAgICAgICAgICBzb3VuZC9vc3MvY3M0Nnh4LmMKK0xBQkVMQ0xfTUFHSUMgICAgICAgICAweDQ4NTc0MzRjICBsYWJlbGNsX2luZm9fcyAgICBpbmNsdWRlL2FzbS9pYTY0L3NuL2xhYmVsY2wuaAorSVNETl9BU1lOQ19NQUdJQyAgICAgIDB4NDkzNDRDMDEgIG1vZGVtX2luZm8gICAgICAgIGluY2x1ZGUvbGludXgvaXNkbi5oCitDVENfQVNZTkNfTUFHSUMgICAgICAgMHg0OTM0NEMwMSAgY3RjX3R0eV9pbmZvICAgICAgZHJpdmVycy9zMzkwL25ldC9jdGN0dHkuYworSVNETl9ORVRfTUFHSUMgICAgICAgIDB4NDkzNDRDMDIgIGlzZG5fbmV0X2xvY2FsX3MgIGRyaXZlcnMvaXNkbi9pNGwvaXNkbl9uZXRfbGliLmgKK1NBVkVLTVNHX01BR0lDMiAgICAgICAweDRCNEQ1MzQ3ICBzYXZla21zZyAgICAgICAgICBhcmNoLyovYW1pZ2EvY29uZmlnLmMKK0NTX1NUQVRFX01BR0lDICAgICAgICAweDRjNGY0NzQ5ICBjc19zdGF0ZSAgICAgICAgICBzb3VuZC9vc3MvY3M0Nnh4LmMKK1NMQUJfQ19NQUdJQyAgICAgICAgICAweDRmMTdhMzZkICBrbWVtX2NhY2hlICAgICAgICBtbS9zbGFiLmMKK0NPV19NQUdJQyAgICAgICAgICAgICAweDRmNGY0ZjRkICBjb3dfaGVhZGVyX3YxICAgICBhcmNoL3VtL2RyaXZlcnMvdWJkX3VzZXIuYworSTgxMF9DQVJEX01BR0lDICAgICAgIDB4NTA3MjY5NkUgIGk4MTBfY2FyZCAgICAgICAgIHNvdW5kL29zcy9pODEwX2F1ZGlvLmMKK1RSSURFTlRfQ0FSRF9NQUdJQyAgICAweDUwNzI2OTZFICB0cmlkZW50X2NhcmQgICAgICBzb3VuZC9vc3MvdHJpZGVudC5jCitST1VURVJfTUFHSUMgICAgICAgICAgMHg1MjRkNDE1NyAgd2FuX2RldmljZSAgICAgICAgW2luIHdhbnJvdXRlci5oIHByZSAzLjldCitTQVZFS01TR19NQUdJQzEgICAgICAgMHg1MzQxNTY0NSAgc2F2ZWttc2cgICAgICAgICAgYXJjaC8qL2FtaWdhL2NvbmZpZy5jCitHREFfTUFHSUMgICAgICAgICAgICAgMHg1ODQ2NDU1MiAgZ2RhICAgICAgICAgICAgICAgYXJjaC9taXBzL2luY2x1ZGUvYXNtL3NuL2dkYS5oCitSRURfTUFHSUMxICAgICAgICAgICAgMHg1YTJjZjA3MSAgKGFueSkgICAgICAgICAgICAgbW0vc2xhYi5jCitFRVBST01fTUFHSUNfVkFMVUUgICAgMHg1YWI0NzhkMiAgbGFuYWlfZGV2ICAgICAgICAgZHJpdmVycy9hdG0vbGFuYWkuYworSERMQ0RSVl9NQUdJQyAgICAgICAgIDB4NWFjNmU3NzggIGhkbGNkcnZfc3RhdGUgICAgIGluY2x1ZGUvbGludXgvaGRsY2Rydi5oCitQQ1hYX01BR0lDICAgICAgICAgICAgMHg1YzZkZjEwNCAgY2hhbm5lbCAgICAgICAgICAgZHJpdmVycy9jaGFyL3BjeHguaAorS1ZfTUFHSUMgICAgICAgICAgICAgIDB4NWY0YjU2NWYgIGtlcm5lbF92YXJzX3MgICAgIGFyY2gvbWlwcy9pbmNsdWRlL2FzbS9zbi9rbGtlcm52YXJzLmgKK0k4MTBfU1RBVEVfTUFHSUMgICAgICAweDYzNjU3MzczICBpODEwX3N0YXRlICAgICAgICBzb3VuZC9vc3MvaTgxMF9hdWRpby5jCitUUklERU5UX1NUQVRFX01BR0lDICAgMHg2MzY1NzM3MyAgdHJpZW50X3N0YXRlICAgICAgc291bmQvb3NzL3RyaWRlbnQuYworTTNfQ0FSRF9NQUdJQyAgICAgICAgIDB4NjQ2ZTZmNTAgIG0zX2NhcmQgICAgICAgICAgIHNvdW5kL29zcy9tYWVzdHJvMy5jCitGV19IRUFERVJfTUFHSUMgICAgICAgMHg2NTcyNkY2NiAgZndfaGVhZGVyICAgICAgICAgZHJpdmVycy9hdG0vZm9yZTIwMGUuaAorU0xPVF9NQUdJQyAgICAgICAgICAgIDB4NjcyNjczMjEgIHNsb3QgICAgICAgICAgICAgIGRyaXZlcnMvaG90cGx1Zy9jcHFwaHAuaAorU0xPVF9NQUdJQyAgICAgICAgICAgIDB4NjcyNjczMjIgIHNsb3QgICAgICAgICAgICAgIGRyaXZlcnMvaG90cGx1Zy9hY3BpcGhwLmgKK0xPX01BR0lDICAgICAgICAgICAgICAweDY4Nzk3NTQ4ICBuYmRfZGV2aWNlICAgICAgICBpbmNsdWRlL2xpbnV4L25iZC5oCitPUFJPRklMRV9NQUdJQyAgICAgICAgMHg2ZjcwNzI2ZiAgc3VwZXJfYmxvY2sgICAgICAgZHJpdmVycy9vcHJvZmlsZS9vcHJvZmlsZWZzLmgKK00zX1NUQVRFX01BR0lDICAgICAgICAweDczNGQ3MjRkICBtM19zdGF0ZSAgICAgICAgICBzb3VuZC9vc3MvbWFlc3RybzMuYworVk1BTExPQ19NQUdJQyAgICAgICAgIDB4ODc2NTQzMjAgIHNuZF9hbGxvY190cmFjayAgIHNvdW5kL2NvcmUvbWVtb3J5LmMKK0tNQUxMT0NfTUFHSUMgICAgICAgICAweDg3NjU0MzIxICBzbmRfYWxsb2NfdHJhY2sgICBzb3VuZC9jb3JlL21lbW9yeS5jCitQV0NfTUFHSUMgICAgICAgICAgICAgMHg4OURDMTBBQiAgcHdjX2RldmljZSAgICAgICAgZHJpdmVycy91c2IvbWVkaWEvcHdjLmgKK05CRF9SRVBMWV9NQUdJQyAgICAgICAweDk2NzQ0NjY4ICBuYmRfcmVwbHkgICAgICAgICBpbmNsdWRlL2xpbnV4L25iZC5oCitFTkkxNTVfTUFHSUMgICAgICAgICAgMHhhNTRiODcyZCAgbWlkd2F5X2Vwcm9tCSAgICBkcml2ZXJzL2F0bS9lbmkuaAorQ09EQV9NQUdJQyAgICAgICAgICAgIDB4QzBEQUMwREEgIGNvZGFfZmlsZV9pbmZvICAgIGZzL2NvZGEvY29kYV9mc19pLmgKK0RQTUVNX01BR0lDICAgICAgICAgICAweGMwZmZlZTExICBnZHRfcGNpX3NyYW0gICAgICBkcml2ZXJzL3Njc2kvZ2R0aC5oCitZQU1fTUFHSUMgICAgICAgICAgICAgMHhGMTBBNzY1NCAgeWFtX3BvcnQgICAgICAgICAgZHJpdmVycy9uZXQvaGFtcmFkaW8veWFtLmMKK0NDQl9NQUdJQyAgICAgICAgICAgICAweGYyNjkxYWQyICBjY2IgICAgICAgICAgICAgICBkcml2ZXJzL3Njc2kvbmNyNTNjOHh4LmMKK1FVRVVFX01BR0lDX0ZSRUUgICAgICAweGY3ZTFjOWEzICBxdWV1ZV9lbnRyeSAgICAgICBkcml2ZXJzL3Njc2kvYXJtL3F1ZXVlLmMKK1FVRVVFX01BR0lDX1VTRUQgICAgICAweGY3ZTFjYzMzICBxdWV1ZV9lbnRyeSAgICAgICBkcml2ZXJzL3Njc2kvYXJtL3F1ZXVlLmMKK0hUQl9DTUFHSUMgICAgICAgICAgICAweEZFRkFGRUYxICBodGJfY2xhc3MgICAgICAgICBuZXQvc2NoZWQvc2NoX2h0Yi5jCitOTUlfTUFHSUMgICAgICAgICAgICAgMHg0ODQxNGQ0ZDQ1NTIwMSBubWlfcyAgICAgICAgYXJjaC9taXBzL2luY2x1ZGUvYXNtL3NuL25taS5oCisKK05vdGUgdGhhdCB0aGVyZSBhcmUgYWxzbyBkZWZpbmVkIHNwZWNpYWwgcGVyLWRyaXZlciBtYWdpYyBudW1iZXJzIGluIHNvdW5kCittZW1vcnkgbWFuYWdlbWVudC4gU2VlIGluY2x1ZGUvc291bmQvc25kbWFnaWMuaCBmb3IgY29tcGxldGUgbGlzdCBvZiB0aGVtLiBNYW55CitPU1Mgc291bmQgZHJpdmVycyBoYXZlIHRoZWlyIG1hZ2ljIG51bWJlcnMgY29uc3RydWN0ZWQgZnJvbSB0aGUgc291bmRjYXJkIFBDSQorSUQgLSB0aGVzZSBhcmUgbm90IGxpc3RlZCBoZXJlIGFzIHdlbGwuCisKK0lyREEgc3Vic3lzdGVtIGFsc28gdXNlcyBsYXJnZSBudW1iZXIgb2Ygb3duIG1hZ2ljIG51bWJlcnMsIHNlZQoraW5jbHVkZS9uZXQvaXJkYS9pcmRhLmggZm9yIGEgY29tcGxldGUgbGlzdCBvZiB0aGVtLgorCitIRlMgaXMgYW5vdGhlciBsYXJnZXIgdXNlciBvZiBtYWdpYyBudW1iZXJzIC0geW91IGNhbiBmaW5kIHRoZW0gaW4KK2ZzL2hmcy9oZnMuaC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbWFpbGJveC50eHQgYi9Eb2N1bWVudGF0aW9uL21haWxib3gudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlZDM3MWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL21haWxib3gudHh0CkBAIC0wLDAgKzEsMTIwIEBACisJCVRoZSBDb21tb24gTWFpbGJveCBGcmFtZXdvcmsKKwkJSmFzc2kgQnJhciA8amFzd2luZGVyLnNpbmdoQGxpbmFyby5vcmc+CisKKyBUaGlzIGRvY3VtZW50IGFpbXMgdG8gaGVscCBkZXZlbG9wZXJzIHdyaXRlIGNsaWVudCBhbmQgY29udHJvbGxlcgorZHJpdmVycyBmb3IgdGhlIEFQSS4gQnV0IGJlZm9yZSB3ZSBzdGFydCwgbGV0IHVzIG5vdGUgdGhhdCB0aGUKK2NsaWVudCAoZXNwZWNpYWxseSkgYW5kIGNvbnRyb2xsZXIgZHJpdmVycyBhcmUgbGlrZWx5IGdvaW5nIHRvIGJlCit2ZXJ5IHBsYXRmb3JtIHNwZWNpZmljIGJlY2F1c2UgdGhlIHJlbW90ZSBmaXJtd2FyZSBpcyBsaWtlbHkgdG8gYmUKK3Byb3ByaWV0YXJ5IGFuZCBpbXBsZW1lbnQgbm9uLXN0YW5kYXJkIHByb3RvY29sLiBTbyBldmVuIGlmIHR3bworcGxhdGZvcm1zIGVtcGxveSwgc2F5LCBQTDMyMCBjb250cm9sbGVyLCB0aGUgY2xpZW50IGRyaXZlcnMgY2FuJ3QKK2JlIHNoYXJlZCBhY3Jvc3MgdGhlbS4gRXZlbiB0aGUgUEwzMjAgZHJpdmVyIG1pZ2h0IG5lZWQgdG8gYWNjb21tb2RhdGUKK3NvbWUgcGxhdGZvcm0gc3BlY2lmaWMgcXVpcmtzLiBTbyB0aGUgQVBJIGlzIG1lYW50IG1haW5seSB0byBhdm9pZAorc2ltaWxhciBjb3BpZXMgb2YgY29kZSB3cml0dGVuIGZvciBlYWNoIHBsYXRmb3JtLiBIYXZpbmcgc2FpZCB0aGF0LAorbm90aGluZyBwcmV2ZW50cyB0aGUgcmVtb3RlIGYvdyB0byBhbHNvIGJlIExpbnV4IGJhc2VkIGFuZCB1c2UgdGhlCitzYW1lIGFwaSB0aGVyZS4gSG93ZXZlciBub25lIG9mIHRoYXQgaGVscHMgdXMgbG9jYWxseSBiZWNhdXNlIHdlIG9ubHkKK2V2ZXIgZGVhbCBhdCBjbGllbnQncyBwcm90b2NvbCBsZXZlbC4KKyBTb21lIG9mIHRoZSBjaG9pY2VzIG1hZGUgZHVyaW5nIGltcGxlbWVudGF0aW9uIGFyZSB0aGUgcmVzdWx0IG9mIHRoaXMKK3BlY3VsaWFyaXR5IG9mIHRoaXMgImNvbW1vbiIgZnJhbWV3b3JrLgorCisKKworCVBhcnQgMSAtIENvbnRyb2xsZXIgRHJpdmVyIChTZWUgaW5jbHVkZS9saW51eC9tYWlsYm94X2NvbnRyb2xsZXIuaCkKKworIEFsbG9jYXRlIG1ib3hfY29udHJvbGxlciBhbmQgdGhlIGFycmF5IG9mIG1ib3hfY2hhbi4KK1BvcHVsYXRlIG1ib3hfY2hhbl9vcHMsIGV4Y2VwdCBwZWVrX2RhdGEoKSBhbGwgYXJlIG1hbmRhdG9yeS4KK1RoZSBjb250cm9sbGVyIGRyaXZlciBtaWdodCBrbm93IGEgbWVzc2FnZSBoYXMgYmVlbiBjb25zdW1lZAorYnkgdGhlIHJlbW90ZSBieSBnZXR0aW5nIGFuIElSUSBvciBwb2xsaW5nIHNvbWUgaGFyZHdhcmUgZmxhZworb3IgaXQgY2FuIG5ldmVyIGtub3cgKHRoZSBjbGllbnQga25vd3MgYnkgd2F5IG9mIHRoZSBwcm90b2NvbCkuCitUaGUgbWV0aG9kIGluIG9yZGVyIG9mIHByZWZlcmVuY2UgaXMgSVJRIC0+IFBvbGwgLT4gTm9uZSwgd2hpY2gKK3RoZSBjb250cm9sbGVyIGRyaXZlciBzaG91bGQgc2V0IHZpYSAndHhkb25lX2lycScgb3IgJ3R4ZG9uZV9wb2xsJworb3IgbmVpdGhlci4KKworCisJUGFydCAyIC0gQ2xpZW50IERyaXZlciAoU2VlIGluY2x1ZGUvbGludXgvbWFpbGJveF9jbGllbnQuaCkKKworIFRoZSBjbGllbnQgbWlnaHQgd2FudCB0byBvcGVyYXRlIGluIGJsb2NraW5nIG1vZGUgKHN5bmNocm9ub3VzbHkKK3NlbmQgYSBtZXNzYWdlIHRocm91Z2ggYmVmb3JlIHJldHVybmluZykgb3Igbm9uLWJsb2NraW5nL2FzeW5jIG1vZGUgKHN1Ym1pdAorYSBtZXNzYWdlIGFuZCBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHRoZSBBUEkgYW5kIHJldHVybiBpbW1lZGlhdGVseSkuCisKKworc3RydWN0IGRlbW9fY2xpZW50IHsKKwlzdHJ1Y3QgbWJveF9jbGllbnQgY2w7CisJc3RydWN0IG1ib3hfY2hhbiAqbWJveDsKKwlzdHJ1Y3QgY29tcGxldGlvbiBjOworCWJvb2wgYXN5bmM7CisJLyogLi4uICovCit9OworCisvKgorICogVGhpcyBpcyB0aGUgaGFuZGxlciBmb3IgZGF0YSByZWNlaXZlZCBmcm9tIHJlbW90ZS4gVGhlIGJlaGF2aW91ciBpcyBwdXJlbHkKKyAqIGRlcGVuZGVudCB1cG9uIHRoZSBwcm90b2NvbC4gVGhpcyBpcyBqdXN0IGFuIGV4YW1wbGUuCisgKi8KK3N0YXRpYyB2b2lkIG1lc3NhZ2VfZnJvbV9yZW1vdGUoc3RydWN0IG1ib3hfY2xpZW50ICpjbCwgdm9pZCAqbXNzZykKK3sKKwlzdHJ1Y3QgZGVtb19jbGllbnQgKmRjID0gY29udGFpbmVyX29mKGNsLCBzdHJ1Y3QgZGVtb19jbGllbnQsIGNsKTsKKwlpZiAoZGMtPmFzeW5jKSB7CisJCWlmIChpc19hbl9hY2sobXNzZykpIHsKKwkJCS8qIEFuIEFDSyB0byBvdXIgbGFzdCBzYW1wbGUgc2VudCAqLworCQkJcmV0dXJuOyAvKiBPciBkbyBzb21ldGhpbmcgZWxzZSBoZXJlICovCisJCX0gZWxzZSB7IC8qIEEgbmV3IG1lc3NhZ2UgZnJvbSByZW1vdGUgKi8KKwkJCXF1ZXVlX3JlcShtc3NnKTsKKwkJfQorCX0gZWxzZSB7CisJCS8qIFJlbW90ZSBmL3cgc2VuZHMgb25seSBBQ0sgcGFja2V0cyBvbiB0aGlzIGNoYW5uZWwgKi8KKwkJcmV0dXJuOworCX0KK30KKworc3RhdGljIHZvaWQgc2FtcGxlX3NlbnQoc3RydWN0IG1ib3hfY2xpZW50ICpjbCwgdm9pZCAqbXNzZywgaW50IHIpCit7CisJc3RydWN0IGRlbW9fY2xpZW50ICpkYyA9IGNvbnRhaW5lcl9vZihjbCwgc3RydWN0IGRlbW9fY2xpZW50LCBjbCk7CisJY29tcGxldGUoJmRjLT5jKTsKK30KKworc3RhdGljIHZvaWQgY2xpZW50X2RlbW8oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgZGVtb19jbGllbnQgKmRjX3N5bmMsICpkY19hc3luYzsKKwkvKiBUaGUgY29udHJvbGxlciBhbHJlYWR5IGtub3dzIGFzeW5jX3BrdCBhbmQgc3luY19wa3QgKi8KKwlzdHJ1Y3QgYXN5bmNfcGt0IGFwOworCXN0cnVjdCBzeW5jX3BrdCBzcDsKKworCWRjX3N5bmMgPSBremFsbG9jKHNpemVvZigqZGNfc3luYyksIEdGUF9LRVJORUwpOworCWRjX2FzeW5jID0ga3phbGxvYyhzaXplb2YoKmRjX2FzeW5jKSwgR0ZQX0tFUk5FTCk7CisKKwkvKiBQb3B1bGF0ZSBub24tYmxvY2tpbmcgbW9kZSBjbGllbnQgKi8KKwlkY19hc3luYy0+Y2wuZGV2ID0gJnBkZXYtPmRldjsKKwlkY19hc3luYy0+Y2wucnhfY2FsbGJhY2sgPSBtZXNzYWdlX2Zyb21fcmVtb3RlOworCWRjX2FzeW5jLT5jbC50eF9kb25lID0gc2FtcGxlX3NlbnQ7CisJZGNfYXN5bmMtPmNsLnR4X2Jsb2NrID0gZmFsc2U7CisJZGNfYXN5bmMtPmNsLnR4X3RvdXQgPSAwOyAvKiBkb2Vzbid0IG1hdHRlciBoZXJlICovCisJZGNfYXN5bmMtPmNsLmtub3dzX3R4ZG9uZSA9IGZhbHNlOyAvKiBkZXBlbmRpbmcgdXBvbiBwcm90b2NvbCAqLworCWRjX2FzeW5jLT5hc3luYyA9IHRydWU7CisJaW5pdF9jb21wbGV0aW9uKCZkY19hc3luYy0+Yyk7CisKKwkvKiBQb3B1bGF0ZSBibG9ja2luZyBtb2RlIGNsaWVudCAqLworCWRjX3N5bmMtPmNsLmRldiA9ICZwZGV2LT5kZXY7CisJZGNfc3luYy0+Y2wucnhfY2FsbGJhY2sgPSBtZXNzYWdlX2Zyb21fcmVtb3RlOworCWRjX3N5bmMtPmNsLnR4X2RvbmUgPSBOVUxMOyAvKiBvcGVyYXRlIGluIGJsb2NraW5nIG1vZGUgKi8KKwlkY19zeW5jLT5jbC50eF9ibG9jayA9IHRydWU7CisJZGNfc3luYy0+Y2wudHhfdG91dCA9IDUwMDsgLyogYnkgaGFsZiBhIHNlY29uZCAqLworCWRjX3N5bmMtPmNsLmtub3dzX3R4ZG9uZSA9IGZhbHNlOyAvKiBkZXBlbmRpbmcgdXBvbiBwcm90b2NvbCAqLworCWRjX3N5bmMtPmFzeW5jID0gZmFsc2U7CisKKwkvKiBBU3luYyBtYWlsYm94IGlzIGxpc3RlZCBzZWNvbmQgaW4gJ21ib3hlcycgcHJvcGVydHkgKi8KKwlkY19hc3luYy0+bWJveCA9IG1ib3hfcmVxdWVzdF9jaGFubmVsKCZkY19hc3luYy0+Y2wsIDEpOworCS8qIFBvcHVsYXRlIGRhdGEgcGFja2V0ICovCisJLyogYXAueHh4ID0gMTIzOyBldGMgKi8KKwkvKiBTZW5kIGFzeW5jIG1lc3NhZ2UgdG8gcmVtb3RlICovCisJbWJveF9zZW5kX21lc3NhZ2UoZGNfYXN5bmMtPm1ib3gsICZhcCk7CisKKwkvKiBTeW5jIG1haWxib3ggaXMgbGlzdGVkIGZpcnN0IGluICdtYm94ZXMnIHByb3BlcnR5ICovCisJZGNfc3luYy0+bWJveCA9IG1ib3hfcmVxdWVzdF9jaGFubmVsKCZkY19zeW5jLT5jbCwgMCk7CisJLyogUG9wdWxhdGUgZGF0YSBwYWNrZXQgKi8KKwkvKiBzcC5hYmMgPSAxMjM7IGV0YyAqLworCS8qIFNlbmQgbWVzc2FnZSB0byByZW1vdGUgaW4gYmxvY2tpbmcgbW9kZSAqLworCW1ib3hfc2VuZF9tZXNzYWdlKGRjX3N5bmMtPm1ib3gsICZzcCk7CisJLyogQXQgdGhpcyBwb2ludCAnc3AnIGhhcyBiZWVuIHNlbnQgKi8KKworCS8qIE5vdyB3YWl0IGZvciBhc3luYyBjaGFuIHRvIGJlIGRvbmUgKi8KKwl3YWl0X2Zvcl9jb21wbGV0aW9uKCZkY19hc3luYy0+Yyk7Cit9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21kLWNsdXN0ZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9tZC1jbHVzdGVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjc5NDM2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9tZC1jbHVzdGVyLnR4dApAQCAtMCwwICsxLDE3NiBAQAorVGhlIGNsdXN0ZXIgTUQgaXMgYSBzaGFyZWQtZGV2aWNlIFJBSUQgZm9yIGEgY2x1c3Rlci4KKworCisxLiBPbi1kaXNrIGZvcm1hdAorCitTZXBhcmF0ZSB3cml0ZS1pbnRlbnQtYml0bWFwIGFyZSB1c2VkIGZvciBlYWNoIGNsdXN0ZXIgbm9kZS4KK1RoZSBiaXRtYXBzIHJlY29yZCBhbGwgd3JpdGVzIHRoYXQgbWF5IGhhdmUgYmVlbiBzdGFydGVkIG9uIHRoYXQgbm9kZSwKK2FuZCBtYXkgbm90IHlldCBoYXZlIGZpbmlzaGVkLiBUaGUgb24tZGlzayBsYXlvdXQgaXM6CisKKzAgICAgICAgICAgICAgICAgICAgIDRrICAgICAgICAgICAgICAgICAgICAgOGsgICAgICAgICAgICAgICAgICAgIDEyaworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorfCBpZGxlICAgICAgICAgICAgICAgIHwgbWQgc3VwZXIgICAgICAgICAgICB8IGJtIHN1cGVyIFswXSArIGJpdHMgfAorfCBibSBiaXRzWzAsIGNvbnRkXSAgIHwgYm0gc3VwZXJbMV0gKyBiaXRzICB8IGJtIGJpdHNbMSwgY29udGRdICAgfAorfCBibSBzdXBlclsyXSArIGJpdHMgIHwgYm0gYml0cyBbMiwgY29udGRdICB8IGJtIHN1cGVyWzNdICsgYml0cyAgfAorfCBibSBiaXRzIFszLCBjb250ZF0gIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorCitEdXJpbmcgIm5vcm1hbCIgZnVuY3Rpb25pbmcgd2UgYXNzdW1lIHRoZSBmaWxlc3lzdGVtIGVuc3VyZXMgdGhhdCBvbmx5IG9uZQorbm9kZSB3cml0ZXMgdG8gYW55IGdpdmVuIGJsb2NrIGF0IGEgdGltZSwgc28gYSB3cml0ZQorcmVxdWVzdCB3aWxsCisgLSBzZXQgdGhlIGFwcHJvcHJpYXRlIGJpdCAoaWYgbm90IGFscmVhZHkgc2V0KQorIC0gY29tbWl0IHRoZSB3cml0ZSB0byBhbGwgbWlycm9ycworIC0gc2NoZWR1bGUgdGhlIGJpdCB0byBiZSBjbGVhcmVkIGFmdGVyIGEgdGltZW91dC4KKworUmVhZHMgYXJlIGp1c3QgaGFuZGxlZCBub3JtYWxseS4gIEl0IGlzIHVwIHRvIHRoZSBmaWxlc3lzdGVtIHRvCitlbnN1cmUgb25lIG5vZGUgZG9lc24ndCByZWFkIGZyb20gYSBsb2NhdGlvbiB3aGVyZSBhbm90aGVyIG5vZGUgKG9yIHRoZSBzYW1lCitub2RlKSBpcyB3cml0aW5nLgorCisKKzIuIERMTSBMb2NrcyBmb3IgbWFuYWdlbWVudAorCitUaGVyZSBhcmUgdHdvIGxvY2tzIGZvciBtYW5hZ2luZyB0aGUgZGV2aWNlOgorCisyLjEgQml0bWFwIGxvY2sgcmVzb3VyY2UgKGJtX2xvY2tyZXMpCisKKyBUaGUgYm1fbG9ja3JlcyBwcm90ZWN0cyBpbmRpdmlkdWFsIG5vZGUgYml0bWFwcy4gVGhleSBhcmUgbmFtZWQgaW4gdGhlCisgZm9ybSBiaXRtYXAwMDEgZm9yIG5vZGUgMSwgYml0bWFwMDAyIGZvciBub2RlIGFuZCBzbyBvbi4gV2hlbiBhIG5vZGUKKyBqb2lucyB0aGUgY2x1c3RlciwgaXQgYWNxdWlyZXMgdGhlIGxvY2sgaW4gUFcgbW9kZSBhbmQgaXQgc3RheXMgc28KKyBkdXJpbmcgdGhlIGxpZmV0aW1lIHRoZSBub2RlIGlzIHBhcnQgb2YgdGhlIGNsdXN0ZXIuIFRoZSBsb2NrIHJlc291cmNlCisgbnVtYmVyIGlzIGJhc2VkIG9uIHRoZSBzbG90IG51bWJlciByZXR1cm5lZCBieSB0aGUgRExNIHN1YnN5c3RlbS4gU2luY2UKKyBETE0gc3RhcnRzIG5vZGUgY291bnQgZnJvbSBvbmUgYW5kIGJpdG1hcCBzbG90cyBzdGFydCBmcm9tIHplcm8sIG9uZSBpcworIHN1YnRyYWN0ZWQgZnJvbSB0aGUgRExNIHNsb3QgbnVtYmVyIHRvIGFycml2ZSBhdCB0aGUgYml0bWFwIHNsb3QgbnVtYmVyLgorCiszLiBDb21tdW5pY2F0aW9uCisKK0VhY2ggbm9kZSBoYXMgdG8gY29tbXVuaWNhdGUgd2l0aCBvdGhlciBub2RlcyB3aGVuIHN0YXJ0aW5nIG9yIGVuZGluZworcmVzeW5jLCBhbmQgbWV0YWRhdGEgc3VwZXJibG9jayB1cGRhdGVzLgorCiszLjEgTWVzc2FnZSBUeXBlcworCisgVGhlcmUgYXJlIDMgdHlwZXMsIG9mIG1lc3NhZ2VzIHdoaWNoIGFyZSBwYXNzZWQKKworIDMuMS4xIE1FVEFEQVRBX1VQREFURUQ6IGluZm9ybXMgb3RoZXIgbm9kZXMgdGhhdCB0aGUgbWV0YWRhdGEgaGFzIGJlZW4KKyAgIHVwZGF0ZWQsIGFuZCB0aGUgbm9kZSBtdXN0IHJlLXJlYWQgdGhlIG1kIHN1cGVyYmxvY2suIFRoaXMgaXMgcGVyZm9ybWVkCisgICBzeW5jaHJvbm91c2x5LgorCisgMy4xLjIgUkVTWU5DOiBpbmZvcm1zIG90aGVyIG5vZGVzIHRoYXQgYSByZXN5bmMgaXMgaW5pdGlhdGVkIG9yIGVuZGVkCisgICBzbyB0aGF0IGVhY2ggbm9kZSBtYXkgc3VzcGVuZCBvciByZXN1bWUgdGhlIHJlZ2lvbi4KKworMy4yIENvbW11bmljYXRpb24gbWVjaGFuaXNtCisKKyBUaGUgRExNIExWQiBpcyB1c2VkIHRvIGNvbW11bmljYXRlIHdpdGhpbiBub2RlcyBvZiB0aGUgY2x1c3Rlci4gVGhlcmUKKyBhcmUgdGhyZWUgcmVzb3VyY2VzIHVzZWQgZm9yIHRoZSBwdXJwb3NlOgorCisgIDMuMi4xIFRva2VuOiBUaGUgcmVzb3VyY2Ugd2hpY2ggcHJvdGVjdHMgdGhlIGVudGlyZSBjb21tdW5pY2F0aW9uCisgICBzeXN0ZW0uIFRoZSBub2RlIGhhdmluZyB0aGUgdG9rZW4gcmVzb3VyY2UgaXMgYWxsb3dlZCB0bworICAgY29tbXVuaWNhdGUuCisKKyAgMy4yLjIgTWVzc2FnZTogVGhlIGxvY2sgcmVzb3VyY2Ugd2hpY2ggY2FycmllcyB0aGUgZGF0YSB0bworICAgY29tbXVuaWNhdGUuCisKKyAgMy4yLjMgQWNrOiBUaGUgcmVzb3VyY2UsIGFjcXVpcmluZyB3aGljaCBtZWFucyB0aGUgbWVzc2FnZSBoYXMgYmVlbgorICAgYWNrbm93bGVkZ2VkIGJ5IGFsbCBub2RlcyBpbiB0aGUgY2x1c3Rlci4gVGhlIEJBU1Qgb2YgdGhlIHJlc291cmNlCisgICBpcyB1c2VkIHRvIGluZm9ybSB0aGUgcmVjZWl2ZSBub2RlIHRoYXQgYSBub2RlIHdhbnRzIHRvIGNvbW11bmljYXRlLgorCitUaGUgYWxnb3JpdGhtIGlzOgorCisgMS4gcmVjZWl2ZSBzdGF0dXMKKworICAgc2VuZGVyICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyCisgICBBQ0s6Q1IgICAgICAgICAgICAgICAgICAgICAgICAgIEFDSzpDUiAgICAgICAgICAgICAgICAgICAgIEFDSzpDUgorCisgMi4gc2VuZGVyIGdldCBFWCBvZiBUT0tFTgorICAgIHNlbmRlciBnZXQgRVggb2YgTUVTU0FHRQorICAgIHNlbmRlciAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyICAgICAgICAgICAgICAgICByZWNlaXZlcgorICAgIFRPS0VOOkVYICAgICAgICAgICAgICAgICAgICAgICBBQ0s6Q1IgICAgICAgICAgICAgICAgICAgQUNLOkNSCisgICAgTUVTU0FHRTpFWAorICAgIEFDSzpDUgorCisgICAgU2VuZGVyIGNoZWNrcyB0aGF0IGl0IHN0aWxsIG5lZWRzIHRvIHNlbmQgYSBtZXNzYWdlLiBNZXNzYWdlcyByZWNlaXZlZAorICAgIG9yIG90aGVyIGV2ZW50cyB0aGF0IGhhcHBlbmVkIHdoaWxlIHdhaXRpbmcgZm9yIHRoZSBUT0tFTiBtYXkgaGF2ZSBtYWRlCisgICAgdGhpcyBtZXNzYWdlIGluYXBwcm9wcmlhdGUgb3IgcmVkdW5kYW50LgorCisgMy4gc2VuZGVyIHdyaXRlIExWQi4KKyAgICBzZW5kZXIgZG93bi1jb252ZXJ0IE1FU1NBR0UgZnJvbSBFWCB0byBDVworICAgIHNlbmRlciB0cnkgdG8gZ2V0IEVYIG9mIEFDSworICAgIFsgd2FpdCB1bnRpbCBhbGwgcmVjZWl2ZXIgaGFzICpwcm9jZXNzZWQqIHRoZSBNRVNTQUdFIF0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgdHJpZ2dlcmVkIGJ5IGJhc3Qgb2YgQUNLIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlciBnZXQgQ1Igb2YgTUVTU0FHRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyIHJlYWQgTFZCCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIgcHJvY2Vzc2VzIHRoZSBtZXNzYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyB3YWl0IGZpbmlzaCBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIgcmVsZWFzZSBBQ0sKKworICAgc2VuZGVyICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyCisgICBUT0tFTjpFWCAgICAgICAgICAgICAgICAgICAgICAgTUVTU0FHRTpDUiAgICAgICAgICAgICAgICAgTUVTU0FHRTpDUgorICAgTUVTU0FHRTpDUgorICAgQUNLOkVYCisKKyA0LiB0cmlnZ2VyZWQgYnkgZ3JhbnQgb2YgRVggb24gQUNLIChpbmRpY2F0aW5nIGFsbCByZWNlaXZlcnMgaGF2ZSBwcm9jZXNzZWQKKyAgICBtZXNzYWdlKQorICAgIHNlbmRlciBkb3duLWNvbnZlcnQgQUNLIGZyb20gRVggdG8gQ1IKKyAgICBzZW5kZXIgcmVsZWFzZSBNRVNTQUdFCisgICAgc2VuZGVyIHJlbGVhc2UgVE9LRU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlciB1cGNvbnZlcnQgdG8gUFIgb2YgTUVTU0FHRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyIGdldCBDUiBvZiBBQ0sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlciByZWxlYXNlIE1FU1NBR0UKKworICAgc2VuZGVyICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyCisgICBBQ0s6Q1IgICAgICAgICAgICAgICAgICAgICAgIEFDSzpDUiAgICAgICAgICAgICAgICAgICAgIEFDSzpDUgorCisKKzQuIEhhbmRsaW5nIEZhaWx1cmVzCisKKzQuMSBOb2RlIEZhaWx1cmUKKyBXaGVuIGEgbm9kZSBmYWlscywgdGhlIERMTSBpbmZvcm1zIHRoZSBjbHVzdGVyIHdpdGggdGhlIHNsb3QuIFRoZSBub2RlCisgc3RhcnRzIGEgY2x1c3RlciByZWNvdmVyeSB0aHJlYWQuIFRoZSBjbHVzdGVyIHJlY292ZXJ5IHRocmVhZDoKKwktIGFjcXVpcmVzIHRoZSBiaXRtYXA8bnVtYmVyPiBsb2NrIG9mIHRoZSBmYWlsZWQgbm9kZQorCS0gb3BlbnMgdGhlIGJpdG1hcAorCS0gcmVhZHMgdGhlIGJpdG1hcCBvZiB0aGUgZmFpbGVkIG5vZGUKKwktIGNvcGllcyB0aGUgc2V0IGJpdG1hcCB0byBsb2NhbCBub2RlCisJLSBjbGVhbnMgdGhlIGJpdG1hcCBvZiB0aGUgZmFpbGVkIG5vZGUKKwktIHJlbGVhc2VzIGJpdG1hcDxudW1iZXI+IGxvY2sgb2YgdGhlIGZhaWxlZCBub2RlCisJLSBpbml0aWF0ZXMgcmVzeW5jIG9mIHRoZSBiaXRtYXAgb24gdGhlIGN1cnJlbnQgbm9kZQorCisgVGhlIHJlc3luYyBwcm9jZXNzLCBpcyB0aGUgcmVndWxhciBtZCByZXN5bmMuIEhvd2V2ZXIsIGluIGEgY2x1c3RlcmVkCisgZW52aXJvbm1lbnQgd2hlbiBhIHJlc3luYyBpcyBwZXJmb3JtZWQsIGl0IG5lZWRzIHRvIHRlbGwgb3RoZXIgbm9kZXMKKyBvZiB0aGUgYXJlYXMgd2hpY2ggYXJlIHN1c3BlbmRlZC4gQmVmb3JlIGEgcmVzeW5jIHN0YXJ0cywgdGhlIG5vZGUKKyBzZW5kIG91dCBSRVNZTkNfU1RBUlQgd2l0aCB0aGUgKGxvLGhpKSByYW5nZSBvZiB0aGUgYXJlYSB3aGljaCBuZWVkcworIHRvIGJlIHN1c3BlbmRlZC4gRWFjaCBub2RlIG1haW50YWlucyBhIHN1c3BlbmRfbGlzdCwgd2hpY2ggY29udGFpbnMKKyB0aGUgbGlzdCAgb2YgcmFuZ2VzIHdoaWNoIGFyZSBjdXJyZW50bHkgc3VzcGVuZGVkLiBPbiByZWNlaXZpbmcKKyBSRVNZTkNfU1RBUlQsIHRoZSBub2RlIGFkZHMgdGhlIHJhbmdlIHRvIHRoZSBzdXNwZW5kX2xpc3QuIFNpbWlsYXJseSwKKyB3aGVuIHRoZSBub2RlIHBlcmZvcm1pbmcgcmVzeW5jIGZpbmlzaGVzLCBpdCBzZW5kIFJFU1lOQ19GSU5JU0hFRAorIHRvIG90aGVyIG5vZGVzIGFuZCBvdGhlciBub2RlcyByZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgZW50cnkgZnJvbQorIHRoZSBzdXNwZW5kX2xpc3QuCisKKyBBIGhlbHBlciBmdW5jdGlvbiwgc2hvdWxkX3N1c3BlbmQoKSBjYW4gYmUgdXNlZCB0byBjaGVjayBpZiBhIHBhcnRpY3VsYXIKKyBJL08gcmFuZ2Ugc2hvdWxkIGJlIHN1c3BlbmRlZCBvciBub3QuCisKKzQuMiBEZXZpY2UgRmFpbHVyZQorIERldmljZSBmYWlsdXJlcyBhcmUgaGFuZGxlZCBhbmQgY29tbXVuaWNhdGVkIHdpdGggdGhlIG1ldGFkYXRhIHVwZGF0ZQorIHJvdXRpbmUuCisKKzUuIEFkZGluZyBhIG5ldyBEZXZpY2UKK0ZvciBhZGRpbmcgYSBuZXcgZGV2aWNlLCBpdCBpcyBuZWNlc3NhcnkgdGhhdCBhbGwgbm9kZXMgInNlZSIgdGhlIG5ldyBkZXZpY2UKK3RvIGJlIGFkZGVkLiBGb3IgdGhpcywgdGhlIGZvbGxvd2luZyBhbGdvcml0aG0gaXMgdXNlZDoKKworICAgIDEuIE5vZGUgMSBpc3N1ZXMgbWRhZG0gLS1tYW5hZ2UgL2Rldi9tZFggLS1hZGQgL2Rldi9zZFlZIHdoaWNoIGlzc3VlcworICAgICAgIGlvY3RsKEFERF9ORVdfRElTQyB3aXRoIGRpc2Muc3RhdGUgc2V0IHRvIE1EX0RJU0tfQ0xVU1RFUl9BREQpCisgICAgMi4gTm9kZSAxIHNlbmRzIE5FV0RJU0sgd2l0aCB1dWlkIGFuZCBzbG90IG51bWJlcgorICAgIDMuIE90aGVyIG5vZGVzIGlzc3VlIGtvYmplY3RfdWV2ZW50X2VudiB3aXRoIHV1aWQgYW5kIHNsb3QgbnVtYmVyCisgICAgICAgKFN0ZXBzIDQsNSBjb3VsZCBiZSBhIHVkZXYgcnVsZSkKKyAgICA0LiBJbiB1c2Vyc3BhY2UsIHRoZSBub2RlIHNlYXJjaGVzIGZvciB0aGUgZGlzaywgcGVyaGFwcworICAgICAgIHVzaW5nIGJsa2lkIC10IFNVQl9VVUlEPSIiCisgICAgNS4gT3RoZXIgbm9kZXMgaXNzdWUgZWl0aGVyIG9mIHRoZSBmb2xsb3dpbmcgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGRpc2sKKyAgICAgICB3YXMgZm91bmQ6CisgICAgICAgaW9jdGwoQUREX05FV19ESVNLIHdpdGggZGlzYy5zdGF0ZSBzZXQgdG8gTURfRElTS19DQU5ESURBVEUgYW5kCisgICAgICAgICAgICAgICAgZGlzYy5udW1iZXIgc2V0IHRvIHNsb3QgbnVtYmVyKQorICAgICAgIGlvY3RsKENMVVNURVJFRF9ESVNLX05BQ0spCisgICAgNi4gT3RoZXIgbm9kZXMgZHJvcCBsb2NrIG9uIG5vLW5ldy1kZXZzIChDUikgaWYgZGV2aWNlIGlzIGZvdW5kCisgICAgNy4gTm9kZSAxIGF0dGVtcHRzIEVYIGxvY2sgb24gbm8tbmV3LWRldnMKKyAgICA4LiBJZiBub2RlIDEgZ2V0cyB0aGUgbG9jaywgaXQgc2VuZHMgTUVUQURBVEFfVVBEQVRFRCBhZnRlciB1bm1hcmtpbmcgdGhlIGRpc2sKKyAgICAgICBhcyBTcGFyZUxvY2FsCisgICAgOS4gSWYgbm90IChnZXQgbm8tbmV3LWRldiBsb2NrKSwgaXQgZmFpbHMgdGhlIG9wZXJhdGlvbiBhbmQgc2VuZHMgTUVUQURBVEFfVVBEQVRFRAorICAgIDEwLiBPdGhlciBub2RlcyBnZXQgdGhlIGluZm9ybWF0aW9uIHdoZXRoZXIgYSBkaXNrIGlzIGFkZGVkIG9yIG5vdAorCWJ5IHRoZSBmb2xsb3dpbmcgTUVUQURBVEFfVVBEQVRFRC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbWQudHh0IGIvRG9jdW1lbnRhdGlvbi9tZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWEyYWRhNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbWQudHh0CkBAIC0wLDAgKzEsNjEzIEBACitUb29scyB0aGF0IG1hbmFnZSBtZCBkZXZpY2VzIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9yYWlkLyAKKworCitCb290IHRpbWUgYXNzZW1ibHkgb2YgUkFJRCBhcnJheXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitZb3UgY2FuIGJvb3Qgd2l0aCB5b3VyIG1kIGRldmljZSB3aXRoIHRoZSBmb2xsb3dpbmcga2VybmVsIGNvbW1hbmQKK2xpbmVzOgorCitmb3Igb2xkIHJhaWQgYXJyYXlzIHdpdGhvdXQgcGVyc2lzdGVudCBzdXBlcmJsb2NrczoKKyAgbWQ9PG1kIGRldmljZSBuby4+LDxyYWlkIGxldmVsPiw8Y2h1bmsgc2l6ZSBmYWN0b3I+LDxmYXVsdCBsZXZlbD4sZGV2MCxkZXYxLC4uLixkZXZuCisKK2ZvciByYWlkIGFycmF5cyB3aXRoIHBlcnNpc3RlbnQgc3VwZXJibG9ja3MKKyAgbWQ9PG1kIGRldmljZSBuby4+LGRldjAsZGV2MSwuLi4sZGV2bgorb3IsIHRvIGFzc2VtYmxlIGEgcGFydGl0aW9uYWJsZSBhcnJheToKKyAgbWQ9ZDxtZCBkZXZpY2Ugbm8uPixkZXYwLGRldjEsLi4uLGRldm4KKyAgCittZCBkZXZpY2Ugbm8uID0gdGhlIG51bWJlciBvZiB0aGUgbWQgZGV2aWNlIC4uLiAKKyAgICAgICAgICAgICAgMCBtZWFucyBtZDAsIAorCSAgICAgIDEgbWQxLAorCSAgICAgIDIgbWQyLAorCSAgICAgIDMgbWQzLAorCSAgICAgIDQgbWQ0CisKK3JhaWQgbGV2ZWwgPSAtMSBsaW5lYXIgbW9kZQorICAgICAgICAgICAgICAwIHN0cmlwZWQgbW9kZQorCSAgICAgIG90aGVyIG1vZGVzIGFyZSBvbmx5IHN1cHBvcnRlZCB3aXRoIHBlcnNpc3RlbnQgc3VwZXIgYmxvY2tzCisKK2NodW5rIHNpemUgZmFjdG9yID0gKHJhaWQtMCBhbmQgcmFpZC0xIG9ubHkpCisgICAgICAgICAgICAgIFNldCAgdGhlIGNodW5rIHNpemUgYXMgNGsgPDwgbi4KKwkgICAgICAKK2ZhdWx0IGxldmVsID0gdG90YWxseSBpZ25vcmVkCisJCQkgICAgCitkZXYwLWRldm46IGUuZy4gL2Rldi9oZGExLC9kZXYvaGRjMSwvZGV2L3NkYTEsL2Rldi9zZGIxCisJCQkgICAgCitBIHBvc3NpYmxlIGxvYWRsaW4gbGluZSAoSGFyYWxkIEhveWVyIDxIYXJyeUhAUm95YWwuTmV0PikgIGxvb2tzIGxpa2UgdGhpczoKKworZTpcbG9hZGxpblxsb2FkbGluIGU6XHppbWFnZSByb290PS9kZXYvbWQwIG1kPTAsMCw0LDAsL2Rldi9oZGIyLC9kZXYvaGRjMyBybworCisKK0Jvb3QgdGltZSBhdXRvZGV0ZWN0aW9uIG9mIFJBSUQgYXJyYXlzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaGVuIG1kIGlzIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCAobm90IGFzIG1vZHVsZSksIHBhcnRpdGlvbnMgb2YKK3R5cGUgMHhmZCBhcmUgc2Nhbm5lZCBhbmQgYXV0b21hdGljYWxseSBhc3NlbWJsZWQgaW50byBSQUlEIGFycmF5cy4KK1RoaXMgYXV0b2RldGVjdGlvbiBtYXkgYmUgc3VwcHJlc3NlZCB3aXRoIHRoZSBrZXJuZWwgcGFyYW1ldGVyCisicmFpZD1ub2F1dG9kZXRlY3QiLiAgQXMgb2Yga2VybmVsIDIuNi45LCBvbmx5IGRyaXZlcyB3aXRoIGEgdHlwZSAwCitzdXBlcmJsb2NrIGNhbiBiZSBhdXRvZGV0ZWN0ZWQgYW5kIHJ1biBhdCBib290IHRpbWUuCisKK1RoZSBrZXJuZWwgcGFyYW1ldGVyICJyYWlkPXBhcnRpdGlvbmFibGUiIChvciAicmFpZD1wYXJ0IikgbWVhbnMKK3RoYXQgYWxsIGF1dG8tZGV0ZWN0ZWQgYXJyYXlzIGFyZSBhc3NlbWJsZWQgYXMgcGFydGl0aW9uYWJsZS4KKworQm9vdCB0aW1lIGFzc2VtYmx5IG9mIGRlZ3JhZGVkL2RpcnR5IGFycmF5cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJZiBhIHJhaWQ1IG9yIHJhaWQ2IGFycmF5IGlzIGJvdGggZGlydHkgYW5kIGRlZ3JhZGVkLCBpdCBjb3VsZCBoYXZlCit1bmRldGVjdGFibGUgZGF0YSBjb3JydXB0aW9uLiAgVGhpcyBpcyBiZWNhdXNlIHRoZSBmYWN0IHRoYXQgaXQgaXMKKydkaXJ0eScgbWVhbnMgdGhhdCB0aGUgcGFyaXR5IGNhbm5vdCBiZSB0cnVzdGVkLCBhbmQgdGhlIGZhY3QgdGhhdCBpdAoraXMgZGVncmFkZWQgbWVhbnMgdGhhdCBzb21lIGRhdGFibG9ja3MgYXJlIG1pc3NpbmcgYW5kIGNhbm5vdCByZWxpYWJseQorYmUgcmVjb25zdHJ1Y3RlZCAoZHVlIHRvIG5vIHBhcml0eSkuCisKK0ZvciB0aGlzIHJlYXNvbiwgbWQgd2lsbCBub3JtYWxseSByZWZ1c2UgdG8gc3RhcnQgc3VjaCBhbiBhcnJheS4gIFRoaXMKK3JlcXVpcmVzIHRoZSBzeXNhZG1pbiB0byB0YWtlIGFjdGlvbiB0byBleHBsaWNpdGx5IHN0YXJ0IHRoZSBhcnJheQorZGVzcGl0ZSBwb3NzaWJsZSBjb3JydXB0aW9uLiAgVGhpcyBpcyBub3JtYWxseSBkb25lIHdpdGgKKyAgIG1kYWRtIC0tYXNzZW1ibGUgLS1mb3JjZSAuLi4uCisKK1RoaXMgb3B0aW9uIGlzIG5vdCByZWFsbHkgYXZhaWxhYmxlIGlmIHRoZSBhcnJheSBoYXMgdGhlIHJvb3QKK2ZpbGVzeXN0ZW0gb24gaXQuICBJbiBvcmRlciB0byBzdXBwb3J0IHRoaXMgYm9vdGluZyBmcm9tIHN1Y2ggYW4KK2FycmF5LCBtZCBzdXBwb3J0cyBhIG1vZHVsZSBwYXJhbWV0ZXIgInN0YXJ0X2RpcnR5X2RlZ3JhZGVkIiB3aGljaCwKK3doZW4gc2V0IHRvIDEsIGJ5cGFzc2VkIHRoZSBjaGVja3MgYW5kIHdpbGwgYWxsb3dzIGRpcnR5IGRlZ3JhZGVkCithcnJheXMgdG8gYmUgc3RhcnRlZC4KKworU28sIHRvIGJvb3Qgd2l0aCBhIHJvb3QgZmlsZXN5c3RlbSBvZiBhIGRpcnR5IGRlZ3JhZGVkIHJhaWRbNTZdLCB1c2UKKworICAgbWQtbW9kLnN0YXJ0X2RpcnR5X2RlZ3JhZGVkPTEKKworCitTdXBlcmJsb2NrIGZvcm1hdHMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbWQgZHJpdmVyIGNhbiBzdXBwb3J0IGEgdmFyaWV0eSBvZiBkaWZmZXJlbnQgc3VwZXJibG9jayBmb3JtYXRzLgorQ3VycmVudGx5LCBpdCBzdXBwb3J0cyBzdXBlcmJsb2NrIGZvcm1hdHMgIjAuOTAuMCIgYW5kIHRoZSAibWQtMSIgZm9ybWF0CitpbnRyb2R1Y2VkIGluIHRoZSAyLjUgZGV2ZWxvcG1lbnQgc2VyaWVzLgorCitUaGUga2VybmVsIHdpbGwgYXV0b2RldGVjdCB3aGljaCBmb3JtYXQgc3VwZXJibG9jayBpcyBiZWluZyB1c2VkLgorCitTdXBlcmJsb2NrIGZvcm1hdCAnMCcgaXMgdHJlYXRlZCBkaWZmZXJlbnRseSB0byBvdGhlcnMgZm9yIGxlZ2FjeQorcmVhc29ucyAtIGl0IGlzIHRoZSBvcmlnaW5hbCBzdXBlcmJsb2NrIGZvcm1hdC4KKworCitHZW5lcmFsIFJ1bGVzIC0gYXBwbHkgZm9yIGFsbCBzdXBlcmJsb2NrIGZvcm1hdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbiBhcnJheSBpcyAnY3JlYXRlZCcgYnkgd3JpdGluZyBhcHByb3ByaWF0ZSBzdXBlcmJsb2NrcyB0byBhbGwKK2RldmljZXMuCisKK0l0IGlzICdhc3NlbWJsZWQnIGJ5IGFzc29jaWF0aW5nIGVhY2ggb2YgdGhlc2UgZGV2aWNlcyB3aXRoIGFuCitwYXJ0aWN1bGFyIG1kIHZpcnR1YWwgZGV2aWNlLiAgT25jZSBpdCBpcyBjb21wbGV0ZWx5IGFzc2VtYmxlZCwgaXQgY2FuCitiZSBhY2Nlc3NlZC4KKworQW4gYXJyYXkgc2hvdWxkIGJlIGNyZWF0ZWQgYnkgYSB1c2VyLXNwYWNlIHRvb2wuICBUaGlzIHdpbGwgd3JpdGUKK3N1cGVyYmxvY2tzIHRvIGFsbCBkZXZpY2VzLiAgSXQgd2lsbCB1c3VhbGx5IG1hcmsgdGhlIGFycmF5IGFzCisndW5jbGVhbicsIG9yIHdpdGggc29tZSBkZXZpY2VzIG1pc3Npbmcgc28gdGhhdCB0aGUga2VybmVsIG1kIGRyaXZlcgorY2FuIGNyZWF0ZSBhcHByb3ByaWF0ZSByZWR1bmRhbmN5IChjb3B5aW5nIGluIHJhaWQxLCBwYXJpdHkKK2NhbGN1bGF0aW9uIGluIHJhaWQ0LzUpLgorCitXaGVuIGFuIGFycmF5IGlzIGFzc2VtYmxlZCwgaXQgaXMgZmlyc3QgaW5pdGlhbGl6ZWQgd2l0aCB0aGUKK1NFVF9BUlJBWV9JTkZPIGlvY3RsLiAgVGhpcyBjb250YWlucywgaW4gcGFydGljdWxhciwgYSBtYWpvciBhbmQgbWlub3IKK3ZlcnNpb24gbnVtYmVyLiAgVGhlIG1ham9yIHZlcnNpb24gbnVtYmVyIHNlbGVjdHMgd2hpY2ggc3VwZXJibG9jaworZm9ybWF0IGlzIHRvIGJlIHVzZWQuICBUaGUgbWlub3IgbnVtYmVyIG1pZ2h0IGJlIHVzZWQgdG8gdHVuZSBoYW5kbGluZworb2YgdGhlIGZvcm1hdCwgc3VjaCBhcyBzdWdnZXN0aW5nIHdoZXJlIG9uIGVhY2ggZGV2aWNlIHRvIGxvb2sgZm9yIHRoZQorc3VwZXJibG9jay4KKworVGhlbiBlYWNoIGRldmljZSBpcyBhZGRlZCB1c2luZyB0aGUgQUREX05FV19ESVNLIGlvY3RsLiAgVGhpcworcHJvdmlkZXMsIGluIHBhcnRpY3VsYXIsIGEgbWFqb3IgYW5kIG1pbm9yIG51bWJlciBpZGVudGlmeWluZyB0aGUKK2RldmljZSB0byBhZGQuCisKK1RoZSBhcnJheSBpcyBzdGFydGVkIHdpdGggdGhlIFJVTl9BUlJBWSBpb2N0bC4KKworT25jZSBzdGFydGVkLCBuZXcgZGV2aWNlcyBjYW4gYmUgYWRkZWQuICBUaGV5IHNob3VsZCBoYXZlIGFuCithcHByb3ByaWF0ZSBzdXBlcmJsb2NrIHdyaXR0ZW4gdG8gdGhlbSwgYW5kIHRoZW4gYmUgcGFzc2VkIGluIHdpdGgKK0FERF9ORVdfRElTSy4KKworRGV2aWNlcyB0aGF0IGhhdmUgZmFpbGVkIG9yIGFyZSBub3QgeWV0IGFjdGl2ZSBjYW4gYmUgZGV0YWNoZWQgZnJvbSBhbgorYXJyYXkgdXNpbmcgSE9UX1JFTU9WRV9ESVNLLgorCisKK1NwZWNpZmljIFJ1bGVzIHRoYXQgYXBwbHkgdG8gZm9ybWF0LTAgc3VwZXIgYmxvY2sgYXJyYXlzLCBhbmQKKyAgICAgICBhcnJheXMgd2l0aCBubyBzdXBlcmJsb2NrIChub24tcGVyc2lzdGVudCkuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FuIGFycmF5IGNhbiBiZSAnY3JlYXRlZCcgYnkgZGVzY3JpYmluZyB0aGUgYXJyYXkgKGxldmVsLCBjaHVua3NpemUKK2V0YykgaW4gYSBTRVRfQVJSQVlfSU5GTyBpb2N0bC4gIFRoaXMgbXVzdCBoYXZlIG1ham9yX3ZlcnNpb249PTAgYW5kCityYWlkX2Rpc2tzICE9IDAuCisKK1RoZW4gdW5pbml0aWFsaXplZCBkZXZpY2VzIGNhbiBiZSBhZGRlZCB3aXRoIEFERF9ORVdfRElTSy4gIFRoZQorc3RydWN0dXJlIHBhc3NlZCB0byBBRERfTkVXX0RJU0sgbXVzdCBzcGVjaWZ5IHRoZSBzdGF0ZSBvZiB0aGUgZGV2aWNlCithbmQgaXRzIHJvbGUgaW4gdGhlIGFycmF5LgorCitPbmNlIHN0YXJ0ZWQgd2l0aCBSVU5fQVJSQVksIHVuaW5pdGlhbGl6ZWQgc3BhcmVzIGNhbiBiZSBhZGRlZCB3aXRoCitIT1RfQUREX0RJU0suCisKKworCitNRCBkZXZpY2VzIGluIHN5c2ZzCistLS0tLS0tLS0tLS0tLS0tLS0tCittZCBkZXZpY2VzIGFwcGVhciBpbiBzeXNmcyAoL3N5cykgYXMgcmVndWxhciBibG9jayBkZXZpY2VzLAorZS5nLgorICAgL3N5cy9ibG9jay9tZDAKKworRWFjaCAnbWQnIGRldmljZSB3aWxsIGNvbnRhaW4gYSBzdWJkaXJlY3RvcnkgY2FsbGVkICdtZCcgd2hpY2gKK2NvbnRhaW5zIGZ1cnRoZXIgbWQtc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRldmljZS4KKworQWxsIG1kIGRldmljZXMgY29udGFpbjoKKyAgbGV2ZWwKKyAgICAgYSB0ZXh0IGZpbGUgaW5kaWNhdGluZyB0aGUgJ3JhaWQgbGV2ZWwnLiBlLmcuIHJhaWQwLCByYWlkMSwKKyAgICAgcmFpZDUsIGxpbmVhciwgbXVsdGlwYXRoLCBmYXVsdHkuCisgICAgIElmIG5vIHJhaWQgbGV2ZWwgaGFzIGJlZW4gc2V0IHlldCAoYXJyYXkgaXMgc3RpbGwgYmVpbmcKKyAgICAgYXNzZW1ibGVkKSwgdGhlIHZhbHVlIHdpbGwgcmVmbGVjdCB3aGF0ZXZlciBoYXMgYmVlbiB3cml0dGVuCisgICAgIHRvIGl0LCB3aGljaCBtYXkgYmUgYSBuYW1lIGxpa2UgdGhlIGFib3ZlLCBvciBtYXkgYmUgYSBudW1iZXIKKyAgICAgc3VjaCBhcyAnMCcsICc1JywgZXRjLgorCisgIHJhaWRfZGlza3MKKyAgICAgYSB0ZXh0IGZpbGUgd2l0aCBhIHNpbXBsZSBudW1iZXIgaW5kaWNhdGluZyB0aGUgbnVtYmVyIG9mIGRldmljZXMKKyAgICAgaW4gYSBmdWxseSBmdW5jdGlvbmFsIGFycmF5LiAgSWYgdGhpcyBpcyBub3QgeWV0IGtub3duLCB0aGUgZmlsZQorICAgICB3aWxsIGJlIGVtcHR5LiAgSWYgYW4gYXJyYXkgaXMgYmVpbmcgcmVzaXplZCB0aGlzIHdpbGwgY29udGFpbgorICAgICB0aGUgbmV3IG51bWJlciBvZiBkZXZpY2VzLgorICAgICBTb21lIHJhaWQgbGV2ZWxzIGFsbG93IHRoaXMgdmFsdWUgdG8gYmUgc2V0IHdoaWxlIHRoZSBhcnJheSBpcworICAgICBhY3RpdmUuICBUaGlzIHdpbGwgcmVjb25maWd1cmUgdGhlIGFycmF5LiAgIE90aGVyd2lzZSBpdCBjYW4gb25seQorICAgICBiZSBzZXQgd2hpbGUgYXNzZW1ibGluZyBhbiBhcnJheS4KKyAgICAgQSBjaGFuZ2UgdG8gdGhpcyBhdHRyaWJ1dGUgd2lsbCBub3QgYmUgcGVybWl0dGVkIGlmIGl0IHdvdWxkCisgICAgIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgYXJyYXkuICBUbyByZWR1Y2UgdGhlIG51bWJlciBvZiBkcml2ZXMKKyAgICAgaW4gYW4gZS5nLiByYWlkNSwgdGhlIGFycmF5IHNpemUgbXVzdCBmaXJzdCBiZSByZWR1Y2VkIGJ5CisgICAgIHNldHRpbmcgdGhlICdhcnJheV9zaXplJyBhdHRyaWJ1dGUuCisKKyAgY2h1bmtfc2l6ZQorICAgICBUaGlzIGlzIHRoZSBzaXplIGluIGJ5dGVzIGZvciAnY2h1bmtzJyBhbmQgaXMgb25seSByZWxldmFudCB0bworICAgICByYWlkIGxldmVscyB0aGF0IGludm9sdmUgc3RyaXBpbmcgKDAsNCw1LDYsMTApLiBUaGUgYWRkcmVzcyBzcGFjZQorICAgICBvZiB0aGUgYXJyYXkgaXMgY29uY2VwdHVhbGx5IGRpdmlkZWQgaW50byBjaHVua3MgYW5kIGNvbnNlY3V0aXZlCisgICAgIGNodW5rcyBhcmUgc3RyaXBlZCBvbnRvIG5laWdoYm91cmluZyBkZXZpY2VzLgorICAgICBUaGUgc2l6ZSBzaG91bGQgYmUgYXQgbGVhc3QgUEFHRV9TSVpFICg0aykgYW5kIHNob3VsZCBiZSBhIHBvd2VyCisgICAgIG9mIDIuICBUaGlzIGNhbiBvbmx5IGJlIHNldCB3aGlsZSBhc3NlbWJsaW5nIGFuIGFycmF5CisKKyAgbGF5b3V0CisgICAgIFRoZSAibGF5b3V0IiBmb3IgdGhlIGFycmF5IGZvciB0aGUgcGFydGljdWxhciBsZXZlbC4gIFRoaXMgaXMKKyAgICAgc2ltcGx5IGEgbnVtYmVyIHRoYXQgaXMgaW50ZXJwcmV0dGVkIGRpZmZlcmVudGx5IGJ5IGRpZmZlcmVudAorICAgICBsZXZlbHMuICBJdCBjYW4gYmUgd3JpdHRlbiB3aGlsZSBhc3NlbWJsaW5nIGFuIGFycmF5LgorCisgIGFycmF5X3NpemUKKyAgICAgVGhpcyBjYW4gYmUgdXNlZCB0byBhcnRpZmljaWFsbHkgY29uc3RyYWluIHRoZSBhdmFpbGFibGUgc3BhY2UgaW4KKyAgICAgdGhlIGFycmF5IHRvIGJlIGxlc3MgdGhhbiBpcyBhY3R1YWxseSBhdmFpbGFibGUgb24gdGhlIGNvbWJpbmVkCisgICAgIGRldmljZXMuICBXcml0aW5nIGEgbnVtYmVyIChpbiBLaWxvYnl0ZXMpIHdoaWNoIGlzIGxlc3MgdGhhbgorICAgICB0aGUgYXZhaWxhYmxlIHNpemUgd2lsbCBzZXQgdGhlIHNpemUuICBBbnkgcmVjb25maWd1cmF0aW9uIG9mIHRoZQorICAgICBhcnJheSAoZS5nLiBhZGRpbmcgZGV2aWNlcykgd2lsbCBub3QgY2F1c2UgdGhlIHNpemUgdG8gY2hhbmdlLgorICAgICBXcml0aW5nIHRoZSB3b3JkICdkZWZhdWx0JyB3aWxsIGNhdXNlIHRoZSBlZmZlY3RpdmUgc2l6ZSBvZiB0aGUKKyAgICAgYXJyYXkgdG8gYmUgd2hhdGV2ZXIgc2l6ZSBpcyBhY3R1YWxseSBhdmFpbGFibGUgYmFzZWQgb24KKyAgICAgJ2xldmVsJywgJ2NodW5rX3NpemUnIGFuZCAnY29tcG9uZW50X3NpemUnLgorCisgICAgIFRoaXMgY2FuIGJlIHVzZWQgdG8gcmVkdWNlIHRoZSBzaXplIG9mIHRoZSBhcnJheSBiZWZvcmUgcmVkdWNpbmcKKyAgICAgdGhlIG51bWJlciBvZiBkZXZpY2VzIGluIGEgcmFpZDQvNS82LCBvciB0byBzdXBwb3J0IGV4dGVybmFsCisgICAgIG1ldGFkYXRhIGZvcm1hdHMgd2hpY2ggbWFuZGF0ZSBzdWNoIGNsaXBwaW5nLgorCisgIHJlc2hhcGVfcG9zaXRpb24KKyAgICAgVGhpcyBpcyBlaXRoZXIgIm5vbmUiIG9yIGEgc2VjdG9yIG51bWJlciB3aXRoaW4gdGhlIGRldmljZXMgb2YKKyAgICAgdGhlIGFycmF5IHdoZXJlICJyZXNoYXBlIiBpcyB1cCB0by4gIElmIHRoaXMgaXMgc2V0LCB0aGUgdGhyZWUKKyAgICAgYXR0cmlidXRlcyBtZW50aW9uZWQgYWJvdmUgKHJhaWRfZGlza3MsIGNodW5rX3NpemUsIGxheW91dCkgY2FuCisgICAgIHBvdGVudGlhbGx5IGhhdmUgMiB2YWx1ZXMsIGFuIG9sZCBhbmQgYSBuZXcgdmFsdWUuICBJZiB0aGVzZQorICAgICB2YWx1ZXMgZGlmZmVyLCByZWFkaW5nIHRoZSBhdHRyaWJ1dGUgcmV0dXJucworICAgICAgICBuZXcgKG9sZCkKKyAgICAgYW5kIHdyaXRpbmcgd2lsbCBlZmZlY3QgdGhlICduZXcnIHZhbHVlLCBsZWF2aW5nIHRoZSAnb2xkJworICAgICB1bmNoYW5nZWQuCisKKyAgY29tcG9uZW50X3NpemUKKyAgICAgRm9yIGFycmF5cyB3aXRoIGRhdGEgcmVkdW5kYW5jeSAoaS5lLiBub3QgcmFpZDAsIGxpbmVhciwgZmF1bHR5LAorICAgICBtdWx0aXBhdGgpLCBhbGwgY29tcG9uZW50cyBtdXN0IGJlIHRoZSBzYW1lIHNpemUgLSBvciBhdCBsZWFzdAorICAgICB0aGVyZSBtdXN0IGEgc2l6ZSB0aGF0IHRoZXkgYWxsIHByb3ZpZGUgc3BhY2UgZm9yLiAgVGhpcyBpcyBhIGtleQorICAgICBwYXJ0IG9yIHRoZSBnZW9tZXRyeSBvZiB0aGUgYXJyYXkuICBJdCBpcyBtZWFzdXJlZCBpbiBzZWN0b3JzCisgICAgIGFuZCBjYW4gYmUgcmVhZCBmcm9tIGhlcmUuICBXcml0aW5nIHRvIHRoaXMgdmFsdWUgbWF5IHJlc2l6ZQorICAgICB0aGUgYXJyYXkgaWYgdGhlIHBlcnNvbmFsaXR5IHN1cHBvcnRzIGl0IChyYWlkMSwgcmFpZDUsIHJhaWQ2KSwKKyAgICAgYW5kIGlmIHRoZSBjb21wb25lbnQgZHJpdmVzIGFyZSBsYXJnZSBlbm91Z2guCisKKyAgbWV0YWRhdGFfdmVyc2lvbgorICAgICBUaGlzIGluZGljYXRlcyB0aGUgZm9ybWF0IHRoYXQgaXMgYmVpbmcgdXNlZCB0byByZWNvcmQgbWV0YWRhdGEKKyAgICAgYWJvdXQgdGhlIGFycmF5LiAgSXQgY2FuIGJlIDAuOTAgKHRyYWRpdGlvbmFsIGZvcm1hdCksIDEuMCwgMS4xLAorICAgICAxLjIgKG5ld2VyIGZvcm1hdCBpbiB2YXJ5aW5nIGxvY2F0aW9ucykgb3IgIm5vbmUiIGluZGljYXRpbmcgdGhhdAorICAgICB0aGUga2VybmVsIGlzbid0IG1hbmFnaW5nIG1ldGFkYXRhIGF0IGFsbC4KKyAgICAgQWx0ZXJuYXRlbHkgaXQgY2FuIGJlICJleHRlcm5hbDoiIGZvbGxvd2VkIGJ5IGEgc3RyaW5nIHdoaWNoCisgICAgIGlzIHNldCBieSB1c2VyLXNwYWNlLiAgVGhpcyBpbmRpY2F0ZXMgdGhhdCBtZXRhZGF0YSBpcyBtYW5hZ2VkCisgICAgIGJ5IGEgdXNlci1zcGFjZSBwcm9ncmFtLiAgQW55IGRldmljZSBmYWlsdXJlIG9yIG90aGVyIGV2ZW50IHRoYXQKKyAgICAgcmVxdWlyZXMgYSBtZXRhZGF0YSB1cGRhdGUgd2lsbCBjYXVzZSBhcnJheSBhY3Rpdml0eSB0byBiZQorICAgICBzdXNwZW5kZWQgdW50aWwgdGhlIGV2ZW50IGlzIGFja25vd2xlZGdlZC4KKworICByZXN5bmNfc3RhcnQKKyAgICAgVGhlIHBvaW50IGF0IHdoaWNoIHJlc3luYyBzaG91bGQgc3RhcnQuICBJZiBubyByZXN5bmMgaXMgbmVlZGVkLAorICAgICB0aGlzIHdpbGwgYmUgYSB2ZXJ5IGxhcmdlIG51bWJlciAob3IgJ25vbmUnIHNpbmNlIDIuNi4zMC1yYzEpLiAgQXQKKyAgICAgYXJyYXkgY3JlYXRpb24gaXQgd2lsbCBkZWZhdWx0IHRvIDAsIHRob3VnaCBzdGFydGluZyB0aGUgYXJyYXkgYXMKKyAgICAgJ2NsZWFuJyB3aWxsIHNldCBpdCBtdWNoIGxhcmdlci4KKworICAgbmV3X2RldgorICAgICBUaGlzIGZpbGUgY2FuIGJlIHdyaXR0ZW4gYnV0IG5vdCByZWFkLiAgVGhlIHZhbHVlIHdyaXR0ZW4gc2hvdWxkCisgICAgIGJlIGEgYmxvY2sgZGV2aWNlIG51bWJlciBhcyBtYWpvcjptaW5vci4gIGUuZy4gODowCisgICAgIFRoaXMgd2lsbCBjYXVzZSB0aGF0IGRldmljZSB0byBiZSBhdHRhY2hlZCB0byB0aGUgYXJyYXksIGlmIGl0IGlzCisgICAgIGF2YWlsYWJsZS4gIEl0IHdpbGwgdGhlbiBhcHBlYXIgYXQgbWQvZGV2LVhYWCAoZGVwZW5kaW5nIG9uIHRoZQorICAgICBuYW1lIG9mIHRoZSBkZXZpY2UpIGFuZCBmdXJ0aGVyIGNvbmZpZ3VyYXRpb24gaXMgdGhlbiBwb3NzaWJsZS4KKworICAgc2FmZV9tb2RlX2RlbGF5CisgICAgIFdoZW4gYW4gbWQgYXJyYXkgaGFzIHNlZW4gbm8gd3JpdGUgcmVxdWVzdHMgZm9yIGEgY2VydGFpbiBwZXJpb2QKKyAgICAgb2YgdGltZSwgaXQgd2lsbCBiZSBtYXJrZWQgYXMgJ2NsZWFuJy4gIFdoZW4gYW5vdGhlciB3cml0ZQorICAgICByZXF1ZXN0IGFycml2ZXMsIHRoZSBhcnJheSBpcyBtYXJrZWQgYXMgJ2RpcnR5JyBiZWZvcmUgdGhlIHdyaXRlCisgICAgIGNvbW1lbmNlcy4gIFRoaXMgaXMga25vd24gYXMgJ3NhZmVfbW9kZScuCisgICAgIFRoZSAnY2VydGFpbiBwZXJpb2QnIGlzIGNvbnRyb2xsZWQgYnkgdGhpcyBmaWxlIHdoaWNoIHN0b3JlcyB0aGUKKyAgICAgcGVyaW9kIGFzIGEgbnVtYmVyIG9mIHNlY29uZHMuICBUaGUgZGVmYXVsdCBpcyAyMDBtc2VjICgwLjIwMCkuCisgICAgIFdyaXRpbmcgYSB2YWx1ZSBvZiAwIGRpc2FibGVzIHNhZmVtb2RlLgorCisgICBhcnJheV9zdGF0ZQorICAgICBUaGlzIGZpbGUgY29udGFpbnMgYSBzaW5nbGUgd29yZCB3aGljaCBkZXNjcmliZXMgdGhlIGN1cnJlbnQKKyAgICAgc3RhdGUgb2YgdGhlIGFycmF5LiAgSW4gbWFueSBjYXNlcywgdGhlIHN0YXRlIGNhbiBiZSBzZXQgYnkKKyAgICAgd3JpdGluZyB0aGUgd29yZCBmb3IgdGhlIGRlc2lyZWQgc3RhdGUsIGhvd2V2ZXIgc29tZSBzdGF0ZXMKKyAgICAgY2Fubm90IGJlIGV4cGxpY2l0bHkgc2V0LCBhbmQgc29tZSB0cmFuc2l0aW9ucyBhcmUgbm90IGFsbG93ZWQuCisKKyAgICAgU2VsZWN0L3BvbGwgd29ya3Mgb24gdGhpcyBmaWxlLiAgQWxsIGNoYW5nZXMgZXhjZXB0IGJldHdlZW4KKyAgICAgCWFjdGl2ZV9pZGxlIGFuZCBhY3RpdmUgKHdoaWNoIGNhbiBiZSBmcmVxdWVudCBhbmQgYXJlIG5vdAorCXZlcnkgaW50ZXJlc3RpbmcpIGFyZSBub3RpZmllZC4gIGFjdGl2ZS0+YWN0aXZlX2lkbGUgaXMKKwlyZXBvcnRlZCBpZiB0aGUgbWV0YWRhdGEgaXMgZXh0ZXJuYWxseSBtYW5hZ2VkLgorCisgICAgIGNsZWFyCisgICAgICAgICBObyBkZXZpY2VzLCBubyBzaXplLCBubyBsZXZlbAorICAgICAgICAgV3JpdGluZyBpcyBlcXVpdmFsZW50IHRvIFNUT1BfQVJSQVkgaW9jdGwKKyAgICAgaW5hY3RpdmUKKyAgICAgICAgIE1heSBoYXZlIHNvbWUgc2V0dGluZ3MsIGJ1dCBhcnJheSBpcyBub3QgYWN0aXZlCisgICAgICAgICAgICBhbGwgSU8gcmVzdWx0cyBpbiBlcnJvcgorICAgICAgICAgV2hlbiB3cml0dGVuLCBkb2Vzbid0IHRlYXIgZG93biBhcnJheSwgYnV0IGp1c3Qgc3RvcHMgaXQKKyAgICAgc3VzcGVuZGVkIChub3Qgc3VwcG9ydGVkIHlldCkKKyAgICAgICAgIEFsbCBJTyByZXF1ZXN0cyB3aWxsIGJsb2NrLiBUaGUgYXJyYXkgY2FuIGJlIHJlY29uZmlndXJlZC4KKyAgICAgICAgIFdyaXRpbmcgdGhpcywgaWYgYWNjZXB0ZWQsIHdpbGwgYmxvY2sgdW50aWwgYXJyYXkgaXMgcXVpZXNzZW50CisgICAgIHJlYWRvbmx5CisgICAgICAgICBubyByZXN5bmMgY2FuIGhhcHBlbi4gIG5vIHN1cGVyYmxvY2tzIGdldCB3cml0dGVuLgorICAgICAgICAgd3JpdGUgcmVxdWVzdHMgZmFpbAorICAgICByZWFkLWF1dG8KKyAgICAgICAgIGxpa2UgcmVhZG9ubHksIGJ1dCBiZWhhdmVzIGxpa2UgJ2NsZWFuJyBvbiBhIHdyaXRlIHJlcXVlc3QuCisKKyAgICAgY2xlYW4gLSBubyBwZW5kaW5nIHdyaXRlcywgYnV0IG90aGVyd2lzZSBhY3RpdmUuCisgICAgICAgICBXaGVuIHdyaXR0ZW4gdG8gaW5hY3RpdmUgYXJyYXksIHN0YXJ0cyB3aXRob3V0IHJlc3luYworICAgICAgICAgSWYgYSB3cml0ZSByZXF1ZXN0IGFycml2ZXMgdGhlbgorICAgICAgICAgICBpZiBtZXRhZGF0YSBpcyBrbm93biwgbWFyayAnZGlydHknIGFuZCBzd2l0Y2ggdG8gJ2FjdGl2ZScuCisgICAgICAgICAgIGlmIG5vdCBrbm93biwgYmxvY2sgYW5kIHN3aXRjaCB0byB3cml0ZS1wZW5kaW5nCisgICAgICAgICBJZiB3cml0dGVuIHRvIGFuIGFjdGl2ZSBhcnJheSB0aGF0IGhhcyBwZW5kaW5nIHdyaXRlcywgdGhlbiBmYWlscy4KKyAgICAgYWN0aXZlCisgICAgICAgICBmdWxseSBhY3RpdmU6IElPIGFuZCByZXN5bmMgY2FuIGJlIGhhcHBlbmluZy4KKyAgICAgICAgIFdoZW4gd3JpdHRlbiB0byBpbmFjdGl2ZSBhcnJheSwgc3RhcnRzIHdpdGggcmVzeW5jCisKKyAgICAgd3JpdGUtcGVuZGluZworICAgICAgICAgY2xlYW4sIGJ1dCB3cml0ZXMgYXJlIGJsb2NrZWQgd2FpdGluZyBmb3IgJ2FjdGl2ZScgdG8gYmUgd3JpdHRlbi4KKworICAgICBhY3RpdmUtaWRsZQorICAgICAgICAgbGlrZSBhY3RpdmUsIGJ1dCBubyB3cml0ZXMgaGF2ZSBiZWVuIHNlZW4gZm9yIGEgd2hpbGUgKHNhZmVfbW9kZV9kZWxheSkuCisKKyAgYml0bWFwL2xvY2F0aW9uCisgICAgIFRoaXMgaW5kaWNhdGVzIHdoZXJlIHRoZSB3cml0ZS1pbnRlbnQgYml0bWFwIGZvciB0aGUgYXJyYXkgaXMKKyAgICAgc3RvcmVkLgorICAgICBJdCBjYW4gYmUgb25lIG9mICJub25lIiwgImZpbGUiIG9yICJbKy1dTiIuCisgICAgICJmaWxlIiBtYXkgbGF0ZXIgYmUgZXh0ZW5kZWQgdG8gImZpbGU6L2ZpbGUvbmFtZSIKKyAgICAgIlsrLV1OIiBtZWFucyB0aGF0IG1hbnkgc2VjdG9ycyBmcm9tIHRoZSBzdGFydCBvZiB0aGUgbWV0YWRhdGEuCisgICAgICAgVGhpcyBpcyByZXBsaWNhdGVkIG9uIGFsbCBkZXZpY2VzLiAgRm9yIGFycmF5cyB3aXRoIGV4dGVybmFsbHkKKyAgICAgICBtYW5hZ2VkIG1ldGFkYXRhLCB0aGUgb2Zmc2V0IGlzIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUKKyAgICAgICBkZXZpY2UuCisgIGJpdG1hcC9jaHVua3NpemUKKyAgICAgVGhlIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgY2h1bmsgd2hpY2ggd2lsbCBiZSByZXByZXNlbnRlZCBieSBhCisgICAgIHNpbmdsZSBiaXQuICBGb3IgUkFJRDQ1NiwgaXQgaXMgYSBwb3J0aW9uIG9mIGFuIGluZGl2aWR1YWwKKyAgICAgZGV2aWNlLiBGb3IgUkFJRDEwLCBpdCBpcyBhIHBvcnRpb24gb2YgdGhlIGFycmF5LiAgRm9yIFJBSUQxLCBpdAorICAgICBpcyBib3RoICh0aGV5IGNvbWUgdG8gdGhlIHNhbWUgdGhpbmcpLgorICBiaXRtYXAvdGltZV9iYXNlCisgICAgIFRoZSB0aW1lLCBpbiBzZWNvbmRzLCBiZXR3ZWVuIGxvb2tpbmcgZm9yIGJpdHMgaW4gdGhlIGJpdG1hcCB0bworICAgICBiZSBjbGVhcmVkLiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgYSBiaXQgd2lsbCBiZSBjbGVhcmVkCisgICAgIGJldHdlZW4gMiBhbmQgMyB0aW1lcyAidGltZV9iYXNlIiBhZnRlciBhbGwgdGhlIGNvdmVyZWQgYmxvY2tzCisgICAgIGFyZSBrbm93biB0byBiZSBpbi1zeW5jLgorICBiaXRtYXAvYmFja2xvZworICAgICBXaGVuIHdyaXRlLW1vc3RseSBkZXZpY2VzIGFyZSBhY3RpdmUgaW4gYSBSQUlEMSwgd3JpdGUgcmVxdWVzdHMKKyAgICAgdG8gdGhvc2UgZGV2aWNlcyBwcm9jZWVkIGluIHRoZSBiYWNrZ3JvdW5kIC0gdGhlIGZpbGVzeXN0ZW0gKG9yCisgICAgIG90aGVyIHVzZXIgb2YgdGhlIGRldmljZSkgZG9lcyBub3QgaGF2ZSB0byB3YWl0IGZvciB0aGVtLgorICAgICAnYmFja2xvZycgc2V0cyBhIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgY29uY3VycmVudCBiYWNrZ3JvdW5kCisgICAgIHdyaXRlcy4gIElmIHRoZXJlIGFyZSBtb3JlIHRoYW4gdGhpcywgbmV3IHdyaXRlcyB3aWxsIGJ5CisgICAgIHN5bmNocm9ub3VzLgorICBiaXRtYXAvbWV0YWRhdGEKKyAgICAgVGhpcyBjYW4gYmUgZWl0aGVyICdpbnRlcm5hbCcgb3IgJ2V4dGVybmFsJy4KKyAgICAgJ2ludGVybmFsJyBpcyB0aGUgZGVmYXVsdCBhbmQgbWVhbnMgdGhlIG1ldGFkYXRhIGZvciB0aGUgYml0bWFwCisgICAgIGlzIHN0b3JlZCBpbiB0aGUgZmlyc3QgMjU2IGJ5dGVzIG9mIHRoZSBhbGxvY2F0ZWQgc3BhY2UgYW5kIGlzCisgICAgIG1hbmFnZWQgYnkgdGhlIG1kIG1vZHVsZS4KKyAgICAgJ2V4dGVybmFsJyBtZWFucyB0aGF0IGJpdG1hcCBtZXRhZGF0YSBpcyBtYW5hZ2VkIGV4dGVybmFsbHkgdG8KKyAgICAgdGhlIGtlcm5lbCAoaS5lLiBieSBzb21lIHVzZXJzcGFjZSBwcm9ncmFtKQorICBiaXRtYXAvY2FuX2NsZWFyCisgICAgIFRoaXMgaXMgZWl0aGVyICd0cnVlJyBvciAnZmFsc2UnLiAgSWYgJ3RydWUnLCB0aGVuIGJpdHMgaW4gdGhlCisgICAgIGJpdG1hcCB3aWxsIGJlIGNsZWFyZWQgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBibG9ja3MgYXJlIHRob3VnaHQKKyAgICAgdG8gYmUgaW4tc3luYy4gIElmICdmYWxzZScsIGJpdHMgd2lsbCBuZXZlciBiZSBjbGVhcmVkLgorICAgICBUaGlzIGlzIGF1dG9tYXRpY2FsbHkgc2V0IHRvICdmYWxzZScgaWYgYSB3cml0ZSBoYXBwZW5zIG9uIGEKKyAgICAgZGVncmFkZWQgYXJyYXksIG9yIGlmIHRoZSBhcnJheSBiZWNvbWVzIGRlZ3JhZGVkIGR1cmluZyBhIHdyaXRlLgorICAgICBXaGVuIG1ldGFkYXRhIGlzIG1hbmFnZWQgZXh0ZXJuYWxseSwgaXQgc2hvdWxkIGJlIHNldCB0byB0cnVlCisgICAgIG9uY2UgdGhlIGFycmF5IGJlY29tZXMgbm9uLWRlZ3JhZGVkLCBhbmQgdGhpcyBmYWN0IGhhcyBiZWVuCisgICAgIHJlY29yZGVkIGluIHRoZSBtZXRhZGF0YS4KKyAgICAgCisgICAgIAorICAgICAKKworQXMgY29tcG9uZW50IGRldmljZXMgYXJlIGFkZGVkIHRvIGFuIG1kIGFycmF5LCB0aGV5IGFwcGVhciBpbiB0aGUgJ21kJworZGlyZWN0b3J5IGFzIG5ldyBkaXJlY3RvcmllcyBuYW1lZAorICAgICAgZGV2LVhYWAord2hlcmUgWFhYIGlzIGEgbmFtZSB0aGF0IHRoZSBrZXJuZWwga25vd3MgZm9yIHRoZSBkZXZpY2UsIGUuZy4gaGRiMS4KK0VhY2ggZGlyZWN0b3J5IGNvbnRhaW5zOgorCisgICAgICBibG9jaworICAgICAgICBhIHN5bWxpbmsgdG8gdGhlIGJsb2NrIGRldmljZSBpbiAvc3lzL2Jsb2NrLCBlLmcuCisJICAgICAvc3lzL2Jsb2NrL21kMC9tZC9kZXYtaGRiMS9ibG9jayAtPiAuLi8uLi8uLi8uLi9ibG9jay9oZGIvaGRiMQorCisgICAgICBzdXBlcgorICAgICAgICBBIGZpbGUgY29udGFpbmluZyBhbiBpbWFnZSBvZiB0aGUgc3VwZXJibG9jayByZWFkIGZyb20sIG9yCisgICAgICAgIHdyaXR0ZW4gdG8sIHRoYXQgZGV2aWNlLgorCisgICAgICBzdGF0ZQorCUEgZmlsZSByZWNvcmRpbmcgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGRldmljZSBpbiB0aGUgYXJyYXkKKwl3aGljaCBjYW4gYmUgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZgorCSAgICAgIGZhdWx0eSAgIC0gZGV2aWNlIGhhcyBiZWVuIGtpY2tlZCBmcm9tIGFjdGl2ZSB1c2UgZHVlIHRvCisJCQkgYSBkZXRlY3RlZCBmYXVsdCwgb3IgaXQgaGFzIHVuYWNrbm93bGVkZ2VkIGJhZAorCQkJIGJsb2NrcworCSAgICAgIGluX3N5bmMgIC0gZGV2aWNlIGlzIGEgZnVsbHkgaW4tc3luYyBtZW1iZXIgb2YgdGhlIGFycmF5CisJICAgICAgd3JpdGVtb3N0bHkgLSBkZXZpY2Ugd2lsbCBvbmx5IGJlIHN1YmplY3QgdG8gcmVhZAorCQkJIHJlcXVlc3RzIGlmIHRoZXJlIGFyZSBubyBvdGhlciBvcHRpb25zLgorCQkJIFRoaXMgYXBwbGllcyBvbmx5IHRvIHJhaWQxIGFycmF5cy4KKwkgICAgICBibG9ja2VkICAtIGRldmljZSBoYXMgZmFpbGVkLCBhbmQgdGhlIGZhaWx1cmUgaGFzbid0IGJlZW4KKwkJCSBhY2tub3dsZWRnZWQgeWV0IGJ5IHRoZSBtZXRhZGF0YSBoYW5kbGVyLgorCQkJIFdyaXRlcyB0aGF0IHdvdWxkIHdyaXRlIHRvIHRoaXMgZGV2aWNlIGlmCisJCQkgaXQgd2VyZSBub3QgZmF1bHR5IGFyZSBibG9ja2VkLgorCSAgICAgIHNwYXJlICAgIC0gZGV2aWNlIGlzIHdvcmtpbmcsIGJ1dCBub3QgYSBmdWxsIG1lbWJlci4KKwkJCSBUaGlzIGluY2x1ZGVzIHNwYXJlcyB0aGF0IGFyZSBpbiB0aGUgcHJvY2VzcworCQkJIG9mIGJlaW5nIHJlY292ZXJlZCB0bworCSAgICAgIHdyaXRlX2Vycm9yIC0gZGV2aWNlIGhhcyBldmVyIHNlZW4gYSB3cml0ZSBlcnJvci4KKwkgICAgICB3YW50X3JlcGxhY2VtZW50IC0gZGV2aWNlIGlzIChtb3N0bHkpIHdvcmtpbmcgYnV0IHByb2JhYmx5CisJCQkgc2hvdWxkIGJlIHJlcGxhY2VkLCBlaXRoZXIgZHVlIHRvIGVycm9ycyBvcgorCQkJIGR1ZSB0byB1c2VyIHJlcXVlc3QuCisJICAgICAgcmVwbGFjZW1lbnQgLSBkZXZpY2UgaXMgYSByZXBsYWNlbWVudCBmb3IgYW5vdGhlciBhY3RpdmUKKwkJCSBkZXZpY2Ugd2l0aCBzYW1lIHJhaWRfZGlzay4KKworCisJVGhpcyBsaXN0IG1heSBncm93IGluIGZ1dHVyZS4KKwlUaGlzIGNhbiBiZSB3cml0dGVuIHRvLgorCVdyaXRpbmcgImZhdWx0eSIgIHNpbXVsYXRlcyBhIGZhaWx1cmUgb24gdGhlIGRldmljZS4KKwlXcml0aW5nICJyZW1vdmUiIHJlbW92ZXMgdGhlIGRldmljZSBmcm9tIHRoZSBhcnJheS4KKwlXcml0aW5nICJ3cml0ZW1vc3RseSIgc2V0cyB0aGUgd3JpdGVtb3N0bHkgZmxhZy4KKwlXcml0aW5nICItd3JpdGVtb3N0bHkiIGNsZWFycyB0aGUgd3JpdGVtb3N0bHkgZmxhZy4KKwlXcml0aW5nICJibG9ja2VkIiBzZXRzIHRoZSAiYmxvY2tlZCIgZmxhZy4KKwlXcml0aW5nICItYmxvY2tlZCIgY2xlYXJzIHRoZSAiYmxvY2tlZCIgZmxhZ3MgYW5kIGFsbG93cyB3cml0ZXMKKwkJdG8gY29tcGxldGUgYW5kIHBvc3NpYmx5IHNpbXVsYXRlcyBhbiBlcnJvci4KKwlXcml0aW5nICJpbl9zeW5jIiBzZXRzIHRoZSBpbl9zeW5jIGZsYWcuCisJV3JpdGluZyAid3JpdGVfZXJyb3IiIHNldHMgd3JpdGVlcnJvcnNlZW4gZmxhZy4KKwlXcml0aW5nICItd3JpdGVfZXJyb3IiIGNsZWFycyB3cml0ZWVycm9yc2VlbiBmbGFnLgorCVdyaXRpbmcgIndhbnRfcmVwbGFjZW1lbnQiIGlzIGFsbG93ZWQgYXQgYW55IHRpbWUgZXhjZXB0IHRvIGEKKwkJcmVwbGFjZW1lbnQgZGV2aWNlIG9yIGEgc3BhcmUuICBJdCBzZXRzIHRoZSBmbGFnLgorCVdyaXRpbmcgIi13YW50X3JlcGxhY2VtZW50IiBpcyBhbGxvd2VkIGF0IGFueSB0aW1lLiAgSXQgY2xlYXJzCisJCXRoZSBmbGFnLgorCVdyaXRpbmcgInJlcGxhY2VtZW50IiBvciAiLXJlcGxhY2VtZW50IiBpcyBvbmx5IGFsbG93ZWQgYmVmb3JlCisJCXN0YXJ0aW5nIHRoZSBhcnJheS4gIEl0IHNldHMgb3IgY2xlYXJzIHRoZSBmbGFnLgorCisKKwlUaGlzIGZpbGUgcmVzcG9uZHMgdG8gc2VsZWN0L3BvbGwuIEFueSBjaGFuZ2UgdG8gJ2ZhdWx0eScKKwlvciAnYmxvY2tlZCcgY2F1c2VzIGFuIGV2ZW50LgorCisgICAgICBlcnJvcnMKKwlBbiBhcHByb3hpbWF0ZSBjb3VudCBvZiByZWFkIGVycm9ycyB0aGF0IGhhdmUgYmVlbiBkZXRlY3RlZCBvbgorCXRoaXMgZGV2aWNlIGJ1dCBoYXZlIG5vdCBjYXVzZWQgdGhlIGRldmljZSB0byBiZSBldmljdGVkIGZyb20KKwl0aGUgYXJyYXkgKGVpdGhlciBiZWNhdXNlIHRoZXkgd2VyZSBjb3JyZWN0ZWQgb3IgYmVjYXVzZSB0aGV5CisJaGFwcGVuZWQgd2hpbGUgdGhlIGFycmF5IHdhcyByZWFkLW9ubHkpLiAgV2hlbiB1c2luZyB2ZXJzaW9uLTEKKwltZXRhZGF0YSwgdGhpcyB2YWx1ZSBwZXJzaXN0cyBhY3Jvc3MgcmVzdGFydHMgb2YgdGhlIGFycmF5LgorCisJVGhpcyB2YWx1ZSBjYW4gYmUgd3JpdHRlbiB3aGlsZSBhc3NlbWJsaW5nIGFuIGFycmF5IHRodXMKKwlwcm92aWRpbmcgYW4gb25nb2luZyBjb3VudCBmb3IgYXJyYXlzIHdpdGggbWV0YWRhdGEgbWFuYWdlZCBieQorCXVzZXJzcGFjZS4KKworICAgICAgc2xvdAorICAgICAgICBUaGlzIGdpdmVzIHRoZSByb2xlIHRoYXQgdGhlIGRldmljZSBoYXMgaW4gdGhlIGFycmF5LiAgSXQgd2lsbAorCWVpdGhlciBiZSAnbm9uZScgaWYgdGhlIGRldmljZSBpcyBub3QgYWN0aXZlIGluIHRoZSBhcnJheQorICAgICAgICAoaS5lLiBpcyBhIHNwYXJlIG9yIGhhcyBmYWlsZWQpIG9yIGFuIGludGVnZXIgbGVzcyB0aGFuIHRoZQorCSdyYWlkX2Rpc2tzJyBudW1iZXIgZm9yIHRoZSBhcnJheSBpbmRpY2F0aW5nIHdoaWNoIHBvc2l0aW9uCisJaXQgY3VycmVudGx5IGZpbGxzLiAgVGhpcyBjYW4gb25seSBiZSBzZXQgd2hpbGUgYXNzZW1ibGluZyBhbgorCWFycmF5LiAgQSBkZXZpY2UgZm9yIHdoaWNoIHRoaXMgaXMgc2V0IGlzIGFzc3VtZWQgdG8gYmUgd29ya2luZy4KKworICAgICAgb2Zmc2V0CisgICAgICAgIFRoaXMgZ2l2ZXMgdGhlIGxvY2F0aW9uIGluIHRoZSBkZXZpY2UgKGluIHNlY3RvcnMgZnJvbSB0aGUKKyAgICAgICAgc3RhcnQpIHdoZXJlIGRhdGEgZnJvbSB0aGUgYXJyYXkgd2lsbCBiZSBzdG9yZWQuICBBbnkgcGFydCBvZgorICAgICAgICB0aGUgZGV2aWNlIGJlZm9yZSB0aGlzIG9mZnNldCBpcyBub3QgdG91Y2hlZCwgdW5sZXNzIGl0IGlzCisgICAgICAgIHVzZWQgZm9yIHN0b3JpbmcgbWV0YWRhdGEgKEZvcm1hdHMgMS4xIGFuZCAxLjIpLgorCisgICAgICBzaXplCisgICAgICAgIFRoZSBhbW91bnQgb2YgdGhlIGRldmljZSwgYWZ0ZXIgdGhlIG9mZnNldCwgdGhhdCBjYW4gYmUgdXNlZAorICAgICAgICBmb3Igc3RvcmFnZSBvZiBkYXRhLiAgVGhpcyB3aWxsIG5vcm1hbGx5IGJlIHRoZSBzYW1lIGFzIHRoZQorCWNvbXBvbmVudF9zaXplLiAgVGhpcyBjYW4gYmUgd3JpdHRlbiB3aGlsZSBhc3NlbWJsaW5nIGFuCisgICAgICAgIGFycmF5LiAgSWYgYSB2YWx1ZSBsZXNzIHRoYW4gdGhlIGN1cnJlbnQgY29tcG9uZW50X3NpemUgaXMKKyAgICAgICAgd3JpdHRlbiwgaXQgd2lsbCBiZSByZWplY3RlZC4KKworICAgICAgcmVjb3Zlcnlfc3RhcnQKKyAgICAgICAgV2hlbiB0aGUgZGV2aWNlIGlzIG5vdCAnaW5fc3luYycsIHRoaXMgcmVjb3JkcyB0aGUgbnVtYmVyIG9mCisJc2VjdG9ycyBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZGV2aWNlIHdoaWNoIGFyZSBrbm93biB0byBiZQorCWNvcnJlY3QuICBUaGlzIGlzIG5vcm1hbGx5IHplcm8sIGJ1dCBkdXJpbmcgYSByZWNvdmVyeQorCW9wZXJhdGlvbiBpdCB3aWxsIHN0ZWFkaWx5IGluY3JlYXNlLCBhbmQgaWYgdGhlIHJlY292ZXJ5IGlzCisJaW50ZXJydXB0ZWQsIHJlc3RvcmluZyB0aGlzIHZhbHVlIGNhbiBjYXVzZSByZWNvdmVyeSB0bworCWF2b2lkIHJlcGVhdGluZyB0aGUgZWFybGllciBibG9ja3MuICBXaXRoIHYxLnggbWV0YWRhdGEsIHRoaXMKKwl2YWx1ZSBpcyBzYXZlZCBhbmQgcmVzdG9yZWQgYXV0b21hdGljYWxseS4KKworCVRoaXMgY2FuIGJlIHNldCB3aGVuZXZlciB0aGUgZGV2aWNlIGlzIG5vdCBhbiBhY3RpdmUgbWVtYmVyIG9mCisJdGhlIGFycmF5LCBlaXRoZXIgYmVmb3JlIHRoZSBhcnJheSBpcyBhY3RpdmF0ZWQsIG9yIGJlZm9yZQorCXRoZSAnc2xvdCcgaXMgc2V0LgorCisJU2V0dGluZyB0aGlzIHRvICdub25lJyBpcyBlcXVpdmFsZW50IHRvIHNldHRpbmcgJ2luX3N5bmMnLgorCVNldHRpbmcgdG8gYW55IG90aGVyIHZhbHVlIGFsc28gY2xlYXJzIHRoZSAnaW5fc3luYycgZmxhZy4KKwkKKyAgICAgIGJhZF9ibG9ja3MKKwlUaGlzIGdpdmVzIHRoZSBsaXN0IG9mIGFsbCBrbm93biBiYWQgYmxvY2tzIGluIHRoZSBmb3JtIG9mCisJc3RhcnQgYWRkcmVzcyBhbmQgbGVuZ3RoIChpbiBzZWN0b3JzIHJlc3BlY3RpdmVseSkuIElmIG91dHB1dAorCWlzIHRvbyBiaWcgdG8gZml0IGluIGEgcGFnZSwgaXQgd2lsbCBiZSB0cnVuY2F0ZWQuIFdyaXRpbmcKKwkic2VjdG9yIGxlbmd0aCIgdG8gdGhpcyBmaWxlIGFkZHMgbmV3IGFja25vd2xlZGdlZCAoaS5lLgorCXJlY29yZGVkIHRvIGRpc2sgc2FmZWx5KSBiYWQgYmxvY2tzLgorCisgICAgICB1bmFja25vd2xlZGdlZF9iYWRfYmxvY2tzCisJVGhpcyBnaXZlcyB0aGUgbGlzdCBvZiBrbm93bi1idXQtbm90LXlldC1zYXZlZC10by1kaXNrIGJhZAorCWJsb2NrcyBpbiB0aGUgc2FtZSBmb3JtIG9mICdiYWRfYmxvY2tzJy4gSWYgb3V0cHV0IGlzIHRvbyBiaWcKKwl0byBmaXQgaW4gYSBwYWdlLCBpdCB3aWxsIGJlIHRydW5jYXRlZC4gV3JpdGluZyB0byB0aGlzIGZpbGUKKwlhZGRzIGJhZCBibG9ja3Mgd2l0aG91dCBhY2tub3dsZWRnaW5nIHRoZW0uIFRoaXMgaXMgbGFyZ2VseQorCWZvciB0ZXN0aW5nLgorCisKKworQW4gYWN0aXZlIG1kIGRldmljZSB3aWxsIGFsc28gY29udGFpbiBhbiBlbnRyeSBmb3IgZWFjaCBhY3RpdmUgZGV2aWNlCitpbiB0aGUgYXJyYXkuICBUaGVzZSBhcmUgbmFtZWQKKworICAgIHJkTk4KKword2hlcmUgJ05OJyBpcyB0aGUgcG9zaXRpb24gaW4gdGhlIGFycmF5LCBzdGFydGluZyBmcm9tIDAuCitTbyBmb3IgYSAzIGRyaXZlIGFycmF5IHRoZXJlIHdpbGwgYmUgcmQwLCByZDEsIHJkMi4KK1RoZXNlIGFyZSBzeW1ib2xpYyBsaW5rcyB0byB0aGUgYXBwcm9wcmlhdGUgJ2Rldi1YWFgnIGVudHJ5LgorVGh1cywgZm9yIGV4YW1wbGUsCisgICAgICAgY2F0IC9zeXMvYmxvY2svbWQqL21kL3JkKi9zdGF0ZQord2lsbCBzaG93ICdpbl9zeW5jJyBvbiBldmVyeSBsaW5lLgorCisKKworQWN0aXZlIG1kIGRldmljZXMgZm9yIGxldmVscyB0aGF0IHN1cHBvcnQgZGF0YSByZWR1bmRhbmN5ICgxLDQsNSw2LDEwKQorYWxzbyBoYXZlCisKKyAgIHN5bmNfYWN0aW9uCisgICAgIGEgdGV4dCBmaWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gbW9uaXRvciBhbmQgY29udHJvbCB0aGUgcmVidWlsZAorICAgICBwcm9jZXNzLiAgSXQgY29udGFpbnMgb25lIHdvcmQgd2hpY2ggY2FuIGJlIG9uZSBvZjoKKyAgICAgICByZXN5bmMgICAgICAgIC0gcmVkdW5kYW5jeSBpcyBiZWluZyByZWNhbGN1bGF0ZWQgYWZ0ZXIgdW5jbGVhbgorICAgICAgICAgICAgICAgICAgICAgICBzaHV0ZG93biBvciBjcmVhdGlvbgorICAgICAgIHJlY292ZXIgICAgICAgLSBhIGhvdCBzcGFyZSBpcyBiZWluZyBidWlsdCB0byByZXBsYWNlIGEKKyAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVkL21pc3NpbmcgZGV2aWNlCisgICAgICAgaWRsZSAgICAgICAgICAtIG5vdGhpbmcgaXMgaGFwcGVuaW5nCisgICAgICAgY2hlY2sgICAgICAgICAtIEEgZnVsbCBjaGVjayBvZiByZWR1bmRhbmN5IHdhcyByZXF1ZXN0ZWQgYW5kIGlzCisgICAgICAgICAgICAgICAgICAgICAgIGhhcHBlbmluZy4gIFRoaXMgcmVhZHMgYWxsIGJsb2NrcyBhbmQgY2hlY2tzCisgICAgICAgICAgICAgICAgICAgICAgIHRoZW0uIEEgcmVwYWlyIG1heSBhbHNvIGhhcHBlbiBmb3Igc29tZSByYWlkCisgICAgICAgICAgICAgICAgICAgICAgIGxldmVscy4KKyAgICAgICByZXBhaXIgICAgICAgIC0gQSBmdWxsIGNoZWNrIGFuZCByZXBhaXIgaXMgaGFwcGVuaW5nLiAgVGhpcyBpcworICAgICAgICAgICAgICAgICAgICAgICBzaW1pbGFyIHRvICdyZXN5bmMnLCBidXQgd2FzIHJlcXVlc3RlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgdXNlciwgYW5kIHRoZSB3cml0ZS1pbnRlbnQgYml0bWFwIGlzIE5PVCB1c2VkIHRvCisJCSAgICAgICBvcHRpbWlzZSB0aGUgcHJvY2Vzcy4KKworICAgICAgVGhpcyBmaWxlIGlzIHdyaXRhYmxlLCBhbmQgZWFjaCBvZiB0aGUgc3RyaW5ncyB0aGF0IGNvdWxkIGJlCisgICAgICByZWFkIGFyZSBtZWFuaW5nZnVsIGZvciB3cml0aW5nLgorCisgICAgICAgJ2lkbGUnIHdpbGwgc3RvcCBhbiBhY3RpdmUgcmVzeW5jL3JlY292ZXJ5IGV0Yy4gIFRoZXJlIGlzIG5vCisgICAgICAgICAgIGd1YXJhbnRlZSB0aGF0IGFub3RoZXIgcmVzeW5jL3JlY292ZXJ5IG1heSBub3QgYmUgYXV0b21hdGljYWxseQorCSAgIHN0YXJ0ZWQgYWdhaW4sIHRob3VnaCBzb21lIGV2ZW50IHdpbGwgYmUgbmVlZGVkIHRvIHRyaWdnZXIKKyAgICAgICAgICAgdGhpcy4KKwkncmVzeW5jJyBvciAncmVjb3ZlcnknIGNhbiBiZSB1c2VkIHRvIHJlc3RhcnQgdGhlCisgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIGlmIGl0IHdhcyBzdG9wcGVkIHdpdGggJ2lkbGUnLgorCSdjaGVjaycgYW5kICdyZXBhaXInIHdpbGwgc3RhcnQgdGhlIGFwcHJvcHJpYXRlIHByb2Nlc3MKKyAgICAgICAgICAgcHJvdmlkaW5nIHRoZSBjdXJyZW50IHN0YXRlIGlzICdpZGxlJy4KKworICAgICAgVGhpcyBmaWxlIHJlc3BvbmRzIHRvIHNlbGVjdC9wb2xsLiAgQW55IGltcG9ydGFudCBjaGFuZ2UgaW4gdGhlIHZhbHVlCisgICAgICB0cmlnZ2VycyBhIHBvbGwgZXZlbnQuICBTb21ldGltZXMgdGhlIHZhbHVlIHdpbGwgYnJpZWZseSBiZQorICAgICAgInJlY292ZXIiIGlmIGEgcmVjb3Zlcnkgc2VlbXMgdG8gYmUgbmVlZGVkLCBidXQgY2Fubm90IGJlCisgICAgICBhY2hpZXZlZC4gSW4gdGhhdCBjYXNlLCB0aGUgdHJhbnNpdGlvbiB0byAicmVjb3ZlciIgaXNuJ3QKKyAgICAgIG5vdGlmaWVkLCBidXQgdGhlIHRyYW5zaXRpb24gYXdheSBpcy4KKworICAgZGVncmFkZWQKKyAgICAgIFRoaXMgY29udGFpbnMgYSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIGRldmljZXMgYnkgd2hpY2ggdGhlCisgICAgICBhcnJheXMgaXMgZGVncmFkZWQuICBTbyBhbiBvcHRpbWFsIGFycmF5IHdpbGwgc2hvdyAnMCcuICBBCisgICAgICBzaW5nbGUgZmFpbGVkL21pc3NpbmcgZHJpdmUgd2lsbCBzaG93ICcxJywgZXRjLgorICAgICAgVGhpcyBmaWxlIHJlc3BvbmRzIHRvIHNlbGVjdC9wb2xsLCBhbnkgaW5jcmVhc2Ugb3IgZGVjcmVhc2UKKyAgICAgIGluIHRoZSBjb3VudCBvZiBtaXNzaW5nIGRldmljZXMgd2lsbCB0cmlnZ2VyIGFuIGV2ZW50LgorCisgICBtaXNtYXRjaF9jb3VudAorICAgICAgV2hlbiBwZXJmb3JtaW5nICdjaGVjaycgYW5kICdyZXBhaXInLCBhbmQgcG9zc2libHkgd2hlbgorICAgICAgcGVyZm9ybWluZyAncmVzeW5jJywgbWQgd2lsbCBjb3VudCB0aGUgbnVtYmVyIG9mIGVycm9ycyB0aGF0IGFyZQorICAgICAgZm91bmQuICBUaGUgY291bnQgaW4gJ21pc21hdGNoX2NudCcgaXMgdGhlIG51bWJlciBvZiBzZWN0b3JzCisgICAgICB0aGF0IHdlcmUgcmUtd3JpdHRlbiwgb3IgKGZvciAnY2hlY2snKSB3b3VsZCBoYXZlIGJlZW4KKyAgICAgIHJlLXdyaXR0ZW4uICBBcyBtb3N0IHJhaWQgbGV2ZWxzIHdvcmsgaW4gdW5pdHMgb2YgcGFnZXMgcmF0aGVyCisgICAgICB0aGFuIHNlY3RvcnMsIHRoaXMgbWF5IGJlIGxhcmdlciB0aGFuIHRoZSBudW1iZXIgb2YgYWN0dWFsIGVycm9ycworICAgICAgYnkgYSBmYWN0b3Igb2YgdGhlIG51bWJlciBvZiBzZWN0b3JzIGluIGEgcGFnZS4KKworICAgYml0bWFwX3NldF9iaXRzCisgICAgICBJZiB0aGUgYXJyYXkgaGFzIGEgd3JpdGUtaW50ZW50IGJpdG1hcCwgdGhlbiB3cml0aW5nIHRvIHRoaXMKKyAgICAgIGF0dHJpYnV0ZSBjYW4gc2V0IGJpdHMgaW4gdGhlIGJpdG1hcCwgaW5kaWNhdGluZyB0aGF0IGEgcmVzeW5jCisgICAgICB3b3VsZCBuZWVkIHRvIGNoZWNrIHRoZSBjb3JyZXNwb25kaW5nIGJsb2Nrcy4gRWl0aGVyIGluZGl2aWR1YWwKKyAgICAgIG51bWJlcnMgb3Igc3RhcnQtZW5kIHBhaXJzIGNhbiBiZSB3cml0dGVuLiAgTXVsdGlwbGUgbnVtYmVycworICAgICAgY2FuIGJlIHNlcGFyYXRlZCBieSBhIHNwYWNlLgorICAgICAgTm90ZSB0aGF0IHRoZSBudW1iZXJzIGFyZSAnYml0JyBudW1iZXJzLCBub3QgJ2Jsb2NrJyBudW1iZXJzLgorICAgICAgVGhleSBzaG91bGQgYmUgc2NhbGVkIGJ5IHRoZSBiaXRtYXBfY2h1bmtzaXplLgorCisgICBzeW5jX3NwZWVkX21pbgorICAgc3luY19zcGVlZF9tYXgKKyAgICAgVGhpcyBhcmUgc2ltaWxhciB0byAvcHJvYy9zeXMvZGV2L3JhaWQvc3BlZWRfbGltaXRfe21pbixtYXh9CisgICAgIGhvd2V2ZXIgdGhleSBvbmx5IGFwcGx5IHRvIHRoZSBwYXJ0aWN1bGFyIGFycmF5LgorICAgICBJZiBubyB2YWx1ZSBoYXMgYmVlbiB3cml0dGVuIHRvIHRoZXNlLCBvciBpZiB0aGUgd29yZCAnc3lzdGVtJworICAgICBpcyB3cml0dGVuLCB0aGVuIHRoZSBzeXN0ZW0td2lkZSB2YWx1ZSBpcyB1c2VkLiAgSWYgYSB2YWx1ZSwKKyAgICAgaW4ga2liaWJ5dGVzLXBlci1zZWNvbmQgaXMgd3JpdHRlbiwgdGhlbiBpdCBpcyB1c2VkLgorICAgICBXaGVuIHRoZSBmaWxlcyBhcmUgcmVhZCwgdGhleSBzaG93IHRoZSBjdXJyZW50bHkgYWN0aXZlIHZhbHVlCisgICAgIGZvbGxvd2VkIGJ5ICIobG9jYWwpIiBvciAiKHN5c3RlbSkiIGRlcGVuZGluZyBvbiB3aGV0aGVyIGl0IGlzCisgICAgIGEgbG9jYWxseSBzZXQgb3Igc3lzdGVtLXdpZGUgdmFsdWUuCisKKyAgIHN5bmNfY29tcGxldGVkCisgICAgIFRoaXMgc2hvd3MgdGhlIG51bWJlciBvZiBzZWN0b3JzIHRoYXQgaGF2ZSBiZWVuIGNvbXBsZXRlZCBvZgorICAgICB3aGF0ZXZlciB0aGUgY3VycmVudCBzeW5jX2FjdGlvbiBpcywgZm9sbG93ZWQgYnkgdGhlIG51bWJlciBvZgorICAgICBzZWN0b3JzIGluIHRvdGFsIHRoYXQgY291bGQgbmVlZCB0byBiZSBwcm9jZXNzZWQuICBUaGUgdHdvCisgICAgIG51bWJlcnMgYXJlIHNlcGFyYXRlZCBieSBhICcvJyAgdGh1cyBlZmZlY3RpdmVseSBzaG93aW5nIG9uZQorICAgICB2YWx1ZSwgYSBmcmFjdGlvbiBvZiB0aGUgcHJvY2VzcyB0aGF0IGlzIGNvbXBsZXRlLgorICAgICBBICdzZWxlY3QnIG9uIHRoaXMgYXR0cmlidXRlIHdpbGwgcmV0dXJuIHdoZW4gcmVzeW5jIGNvbXBsZXRlcywKKyAgICAgd2hlbiBpdCByZWFjaGVzIHRoZSBjdXJyZW50IHN5bmNfbWF4IChiZWxvdykgYW5kIHBvc3NpYmx5IGF0CisgICAgIG90aGVyIHRpbWVzLgorCisgICBzeW5jX3NwZWVkCisgICAgIFRoaXMgc2hvd3MgdGhlIGN1cnJlbnQgYWN0dWFsIHNwZWVkLCBpbiBLL3NlYywgb2YgdGhlIGN1cnJlbnQKKyAgICAgc3luY19hY3Rpb24uICBJdCBpcyBhdmVyYWdlZCBvdmVyIHRoZSBsYXN0IDMwIHNlY29uZHMuCisKKyAgIHN1c3BlbmRfbG8KKyAgIHN1c3BlbmRfaGkKKyAgICAgVGhlIHR3byB2YWx1ZXMsIGdpdmVuIGFzIG51bWJlcnMgb2Ygc2VjdG9ycywgaW5kaWNhdGUgYSByYW5nZQorICAgICB3aXRoaW4gdGhlIGFycmF5IHdoZXJlIElPIHdpbGwgYmUgYmxvY2tlZC4gIFRoaXMgaXMgY3VycmVudGx5CisgICAgIG9ubHkgc3VwcG9ydGVkIGZvciByYWlkNC81LzYuCisKKyAgIHN5bmNfbWluCisgICBzeW5jX21heAorICAgICBUaGUgdHdvIHZhbHVlcywgZ2l2ZW4gYXMgbnVtYmVycyBvZiBzZWN0b3JzLCBpbmRpY2F0ZSBhIHJhbmdlCisgICAgIHdpdGhpbiB0aGUgYXJyYXkgd2hlcmUgJ2NoZWNrJy8ncmVwYWlyJyB3aWxsIG9wZXJhdGUuIE11c3QgYmUKKyAgICAgYSBtdWx0aXBsZSBvZiBjaHVua19zaXplLiBXaGVuIGl0IHJlYWNoZXMgInN5bmNfbWF4IiBpdCB3aWxsCisgICAgIHBhdXNlLCByYXRoZXIgdGhhbiBjb21wbGV0ZS4KKyAgICAgWW91IGNhbiB1c2UgJ3NlbGVjdCcgb3IgJ3BvbGwnIG9uICJzeW5jX2NvbXBsZXRlZCIgdG8gd2FpdCBmb3IKKyAgICAgdGhhdCBudW1iZXIgdG8gcmVhY2ggc3luY19tYXguICBUaGVuIHlvdSBjYW4gZWl0aGVyIGluY3JlYXNlCisgICAgICJzeW5jX21heCIsIG9yIGNhbiB3cml0ZSAnaWRsZScgdG8gInN5bmNfYWN0aW9uIi4KKworICAgICBUaGUgdmFsdWUgb2YgJ21heCcgZm9yICJzeW5jX21heCIgZWZmZWN0aXZlbHkgZGlzYWJsZXMgdGhlIGxpbWl0LgorICAgICBXaGVuIGEgcmVzeW5jIGlzIGFjdGl2ZSwgdGhlIHZhbHVlIGNhbiBvbmx5IGV2ZXIgYmUgaW5jcmVhc2VkLAorICAgICBuZXZlciBkZWNyZWFzZWQuCisgICAgIFRoZSB2YWx1ZSBvZiAnMCcgaXMgdGhlIG1pbmltdW0gZm9yICJzeW5jX21pbiIuCisKKworCitFYWNoIGFjdGl2ZSBtZCBkZXZpY2UgbWF5IGFsc28gaGF2ZSBhdHRyaWJ1dGVzIHNwZWNpZmljIHRvIHRoZQorcGVyc29uYWxpdHkgbW9kdWxlIHRoYXQgbWFuYWdlcyBpdC4KK1RoZXNlIGFyZSBzcGVjaWZpYyB0byB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZHVsZSBhbmQgY291bGQKK2NoYW5nZSBzdWJzdGFudGlhbGx5IGlmIHRoZSBpbXBsZW1lbnRhdGlvbiBjaGFuZ2VzLgorCitUaGVzZSBjdXJyZW50bHkgaW5jbHVkZQorCisgIHN0cmlwZV9jYWNoZV9zaXplICAoY3VycmVudGx5IHJhaWQ1IG9ubHkpCisgICAgICBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgc3RyaXBlIGNhY2hlLiAgVGhpcyBpcyB3cml0YWJsZSwgYnV0CisgICAgICB0aGVyZSBhcmUgdXBwZXIgYW5kIGxvd2VyIGxpbWl0cyAoMzI3NjgsIDE2KS4gIERlZmF1bHQgaXMgMTI4LgorICBzdHJpcF9jYWNoZV9hY3RpdmUgKGN1cnJlbnRseSByYWlkNSBvbmx5KQorICAgICAgbnVtYmVyIG9mIGFjdGl2ZSBlbnRyaWVzIGluIHRoZSBzdHJpcGUgY2FjaGUKKyAgcHJlcmVhZF9ieXBhc3NfdGhyZXNob2xkIChjdXJyZW50bHkgcmFpZDUgb25seSkKKyAgICAgIG51bWJlciBvZiB0aW1lcyBhIHN0cmlwZSByZXF1aXJpbmcgcHJlcmVhZCB3aWxsIGJlIGJ5cGFzc2VkIGJ5CisgICAgICBhIHN0cmlwZSB0aGF0IGRvZXMgbm90IHJlcXVpcmUgcHJlcmVhZC4gIEZvciBmYWlybmVzcyBkZWZhdWx0cworICAgICAgdG8gMS4gIFNldHRpbmcgdGhpcyB0byAwIGRpc2FibGVzIGJ5cGFzcyBhY2NvdW50aW5nIGFuZAorICAgICAgcmVxdWlyZXMgcHJlcmVhZCBzdHJpcGVzIHRvIHdhaXQgdW50aWwgYWxsIGZ1bGwtd2lkdGggc3RyaXBlLQorICAgICAgd3JpdGVzIGFyZSBjb21wbGV0ZS4gIFZhbGlkIHZhbHVlcyBhcmUgMCB0byBzdHJpcGVfY2FjaGVfc2l6ZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbWVkaWEtZnJhbWV3b3JrLnR4dCBiL0RvY3VtZW50YXRpb24vbWVkaWEtZnJhbWV3b3JrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTUyYTc1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9tZWRpYS1mcmFtZXdvcmsudHh0CkBAIC0wLDAgKzEsMzcyIEBACitMaW51eCBrZXJuZWwgbWVkaWEgZnJhbWV3b3JrCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBMaW51eCBrZXJuZWwgbWVkaWEgZnJhbWV3b3JrLCBpdHMgZGF0YSBzdHJ1Y3R1cmVzLAorZnVuY3Rpb25zIGFuZCB0aGVpciB1c2FnZS4KKworCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLQorCitUaGUgbWVkaWEgY29udHJvbGxlciBBUEkgaXMgZG9jdW1lbnRlZCBpbiBEb2NCb29rIGZvcm1hdCBpbgorRG9jdW1lbnRhdGlvbi9Eb2NCb29rL21lZGlhL3Y0bC9tZWRpYS1jb250cm9sbGVyLnhtbC4gVGhpcyBkb2N1bWVudCB3aWxsIGZvY3VzCitvbiB0aGUga2VybmVsLXNpZGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIG1lZGlhIGZyYW1ld29yay4KKworCitBYnN0cmFjdCBtZWRpYSBkZXZpY2UgbW9kZWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEaXNjb3ZlcmluZyBhIGRldmljZSBpbnRlcm5hbCB0b3BvbG9neSwgYW5kIGNvbmZpZ3VyaW5nIGl0IGF0IHJ1bnRpbWUsIGlzIG9uZQorb2YgdGhlIGdvYWxzIG9mIHRoZSBtZWRpYSBmcmFtZXdvcmsuIFRvIGFjaGlldmUgdGhpcywgaGFyZHdhcmUgZGV2aWNlcyBhcmUKK21vZGVsbGVkIGFzIGFuIG9yaWVudGVkIGdyYXBoIG9mIGJ1aWxkaW5nIGJsb2NrcyBjYWxsZWQgZW50aXRpZXMgY29ubmVjdGVkCit0aHJvdWdoIHBhZHMuCisKK0FuIGVudGl0eSBpcyBhIGJhc2ljIG1lZGlhIGhhcmR3YXJlIGJ1aWxkaW5nIGJsb2NrLiBJdCBjYW4gY29ycmVzcG9uZCB0bworYSBsYXJnZSB2YXJpZXR5IG9mIGxvZ2ljYWwgYmxvY2tzIHN1Y2ggYXMgcGh5c2ljYWwgaGFyZHdhcmUgZGV2aWNlcworKENNT1Mgc2Vuc29yIGZvciBpbnN0YW5jZSksIGxvZ2ljYWwgaGFyZHdhcmUgZGV2aWNlcyAoYSBidWlsZGluZyBibG9jaworaW4gYSBTeXN0ZW0tb24tQ2hpcCBpbWFnZSBwcm9jZXNzaW5nIHBpcGVsaW5lKSwgRE1BIGNoYW5uZWxzIG9yIHBoeXNpY2FsCitjb25uZWN0b3JzLgorCitBIHBhZCBpcyBhIGNvbm5lY3Rpb24gZW5kcG9pbnQgdGhyb3VnaCB3aGljaCBhbiBlbnRpdHkgY2FuIGludGVyYWN0IHdpdGgKK290aGVyIGVudGl0aWVzLiBEYXRhIChub3QgcmVzdHJpY3RlZCB0byB2aWRlbykgcHJvZHVjZWQgYnkgYW4gZW50aXR5CitmbG93cyBmcm9tIHRoZSBlbnRpdHkncyBvdXRwdXQgdG8gb25lIG9yIG1vcmUgZW50aXR5IGlucHV0cy4gUGFkcyBzaG91bGQKK25vdCBiZSBjb25mdXNlZCB3aXRoIHBoeXNpY2FsIHBpbnMgYXQgY2hpcCBib3VuZGFyaWVzLgorCitBIGxpbmsgaXMgYSBwb2ludC10by1wb2ludCBvcmllbnRlZCBjb25uZWN0aW9uIGJldHdlZW4gdHdvIHBhZHMsIGVpdGhlcgorb24gdGhlIHNhbWUgZW50aXR5IG9yIG9uIGRpZmZlcmVudCBlbnRpdGllcy4gRGF0YSBmbG93cyBmcm9tIGEgc291cmNlCitwYWQgdG8gYSBzaW5rIHBhZC4KKworCitNZWRpYSBkZXZpY2UKKy0tLS0tLS0tLS0tLQorCitBIG1lZGlhIGRldmljZSBpcyByZXByZXNlbnRlZCBieSBhIHN0cnVjdCBtZWRpYV9kZXZpY2UgaW5zdGFuY2UsIGRlZmluZWQgaW4KK2luY2x1ZGUvbWVkaWEvbWVkaWEtZGV2aWNlLmguIEFsbG9jYXRpb24gb2YgdGhlIHN0cnVjdHVyZSBpcyBoYW5kbGVkIGJ5IHRoZQorbWVkaWEgZGV2aWNlIGRyaXZlciwgdXN1YWxseSBieSBlbWJlZGRpbmcgdGhlIG1lZGlhX2RldmljZSBpbnN0YW5jZSBpbiBhCitsYXJnZXIgZHJpdmVyLXNwZWNpZmljIHN0cnVjdHVyZS4KKworRHJpdmVycyByZWdpc3RlciBtZWRpYSBkZXZpY2UgaW5zdGFuY2VzIGJ5IGNhbGxpbmcKKworCW1lZGlhX2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgbWVkaWFfZGV2aWNlICptZGV2KTsKKworVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgaW5pdGlhbGl6aW5nIHRoZSBtZWRpYV9kZXZpY2Ugc3RydWN0dXJlIGJlZm9yZQorcmVnaXN0cmF0aW9uLiBUaGUgZm9sbG93aW5nIGZpZWxkcyBtdXN0IGJlIHNldDoKKworIC0gZGV2IG11c3QgcG9pbnQgdG8gdGhlIHBhcmVudCBkZXZpY2UgKHVzdWFsbHkgYSBwY2lfZGV2LCB1c2JfaW50ZXJmYWNlIG9yCisgICBwbGF0Zm9ybV9kZXZpY2UgaW5zdGFuY2UpLgorCisgLSBtb2RlbCBtdXN0IGJlIGZpbGxlZCB3aXRoIHRoZSBkZXZpY2UgbW9kZWwgbmFtZSBhcyBhIE5VTC10ZXJtaW5hdGVkIFVURi04CisgICBzdHJpbmcuIFRoZSBkZXZpY2UvbW9kZWwgcmV2aXNpb24gbXVzdCBub3QgYmUgc3RvcmVkIGluIHRoaXMgZmllbGQuCisKK1RoZSBmb2xsb3dpbmcgZmllbGRzIGFyZSBvcHRpb25hbDoKKworIC0gc2VyaWFsIGlzIGEgdW5pcXVlIHNlcmlhbCBudW1iZXIgc3RvcmVkIGFzIGEgTlVMLXRlcm1pbmF0ZWQgQVNDSUkgc3RyaW5nLgorICAgVGhlIGZpZWxkIGlzIGJpZyBlbm91Z2ggdG8gc3RvcmUgYSBHVUlEIGluIHRleHQgZm9ybS4gSWYgdGhlIGhhcmR3YXJlCisgICBkb2Vzbid0IHByb3ZpZGUgYSB1bmlxdWUgc2VyaWFsIG51bWJlciB0aGlzIGZpZWxkIG11c3QgYmUgbGVmdCBlbXB0eS4KKworIC0gYnVzX2luZm8gcmVwcmVzZW50cyB0aGUgbG9jYXRpb24gb2YgdGhlIGRldmljZSBpbiB0aGUgc3lzdGVtIGFzIGEKKyAgIE5VTC10ZXJtaW5hdGVkIEFTQ0lJIHN0cmluZy4gRm9yIFBDSS9QQ0llIGRldmljZXMgYnVzX2luZm8gbXVzdCBiZSBzZXQgdG8KKyAgICJQQ0k6IiAob3IgIlBDSWU6IikgZm9sbG93ZWQgYnkgdGhlIHZhbHVlIG9mIHBjaV9uYW1lKCkuIEZvciBVU0IgZGV2aWNlcywKKyAgIHRoZSB1c2JfbWFrZV9wYXRoKCkgZnVuY3Rpb24gbXVzdCBiZSB1c2VkLiBUaGlzIGZpZWxkIGlzIHVzZWQgYnkKKyAgIGFwcGxpY2F0aW9ucyB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIG90aGVyd2lzZSBpZGVudGljYWwgZGV2aWNlcyB0aGF0IGRvbid0CisgICBwcm92aWRlIGEgc2VyaWFsIG51bWJlci4KKworIC0gaHdfcmV2aXNpb24gaXMgdGhlIGhhcmR3YXJlIGRldmljZSByZXZpc2lvbiBpbiBhIGRyaXZlci1zcGVjaWZpYyBmb3JtYXQuCisgICBXaGVuIHBvc3NpYmxlIHRoZSByZXZpc2lvbiBzaG91bGQgYmUgZm9ybWF0dGVkIHdpdGggdGhlIEtFUk5FTF9WRVJTSU9OCisgICBtYWNyby4KKworIC0gZHJpdmVyX3ZlcnNpb24gaXMgZm9ybWF0dGVkIHdpdGggdGhlIEtFUk5FTF9WRVJTSU9OIG1hY3JvLiBUaGUgdmVyc2lvbgorICAgbWlub3IgbXVzdCBiZSBpbmNyZW1lbnRlZCB3aGVuIG5ldyBmZWF0dXJlcyBhcmUgYWRkZWQgdG8gdGhlIHVzZXJzcGFjZSBBUEkKKyAgIHdpdGhvdXQgYnJlYWtpbmcgYmluYXJ5IGNvbXBhdGliaWxpdHkuIFRoZSB2ZXJzaW9uIG1ham9yIG11c3QgYmUKKyAgIGluY3JlbWVudGVkIHdoZW4gYmluYXJ5IGNvbXBhdGliaWxpdHkgaXMgYnJva2VuLgorCitVcG9uIHN1Y2Nlc3NmdWwgcmVnaXN0cmF0aW9uIGEgY2hhcmFjdGVyIGRldmljZSBuYW1lZCBtZWRpYVswLTldKyBpcyBjcmVhdGVkLgorVGhlIGRldmljZSBtYWpvciBhbmQgbWlub3IgbnVtYmVycyBhcmUgZHluYW1pYy4gVGhlIG1vZGVsIG5hbWUgaXMgZXhwb3J0ZWQgYXMKK2Egc3lzZnMgYXR0cmlidXRlLgorCitEcml2ZXJzIHVucmVnaXN0ZXIgbWVkaWEgZGV2aWNlIGluc3RhbmNlcyBieSBjYWxsaW5nCisKKwltZWRpYV9kZXZpY2VfdW5yZWdpc3RlcihzdHJ1Y3QgbWVkaWFfZGV2aWNlICptZGV2KTsKKworVW5yZWdpc3RlcmluZyBhIG1lZGlhIGRldmljZSB0aGF0IGhhc24ndCBiZWVuIHJlZ2lzdGVyZWQgaXMgKk5PVCogc2FmZS4KKworCitFbnRpdGllcywgcGFkcyBhbmQgbGlua3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIEVudGl0aWVzCisKK0VudGl0aWVzIGFyZSByZXByZXNlbnRlZCBieSBhIHN0cnVjdCBtZWRpYV9lbnRpdHkgaW5zdGFuY2UsIGRlZmluZWQgaW4KK2luY2x1ZGUvbWVkaWEvbWVkaWEtZW50aXR5LmguIFRoZSBzdHJ1Y3R1cmUgaXMgdXN1YWxseSBlbWJlZGRlZCBpbnRvIGEKK2hpZ2hlci1sZXZlbCBzdHJ1Y3R1cmUsIHN1Y2ggYXMgYSB2NGwyX3N1YmRldiBvciB2aWRlb19kZXZpY2UgaW5zdGFuY2UsCithbHRob3VnaCBkcml2ZXJzIGNhbiBhbGxvY2F0ZSBlbnRpdGllcyBkaXJlY3RseS4KKworRHJpdmVycyBpbml0aWFsaXplIGVudGl0aWVzIGJ5IGNhbGxpbmcKKworCW1lZGlhX2VudGl0eV9pbml0KHN0cnVjdCBtZWRpYV9lbnRpdHkgKmVudGl0eSwgdTE2IG51bV9wYWRzLAorCQkJICBzdHJ1Y3QgbWVkaWFfcGFkICpwYWRzLCB1MTYgZXh0cmFfbGlua3MpOworCitUaGUgbWVkaWFfZW50aXR5IG5hbWUsIHR5cGUsIGZsYWdzLCByZXZpc2lvbiBhbmQgZ3JvdXBfaWQgZmllbGRzIGNhbiBiZQoraW5pdGlhbGl6ZWQgYmVmb3JlIG9yIGFmdGVyIGNhbGxpbmcgbWVkaWFfZW50aXR5X2luaXQuIEVudGl0aWVzIGVtYmVkZGVkIGluCitoaWdoZXItbGV2ZWwgc3RhbmRhcmQgc3RydWN0dXJlcyBjYW4gaGF2ZSBzb21lIG9mIHRob3NlIGZpZWxkcyBzZXQgYnkgdGhlCitoaWdoZXItbGV2ZWwgZnJhbWV3b3JrLgorCitBcyB0aGUgbnVtYmVyIG9mIHBhZHMgaXMga25vd24gaW4gYWR2YW5jZSwgdGhlIHBhZHMgYXJyYXkgaXMgbm90IGFsbG9jYXRlZAorZHluYW1pY2FsbHkgYnV0IGlzIG1hbmFnZWQgYnkgdGhlIGVudGl0eSBkcml2ZXIuIE1vc3QgZHJpdmVycyB3aWxsIGVtYmVkIHRoZQorcGFkcyBhcnJheSBpbiBhIGRyaXZlci1zcGVjaWZpYyBzdHJ1Y3R1cmUsIGF2b2lkaW5nIGR5bmFtaWMgYWxsb2NhdGlvbi4KKworRHJpdmVycyBtdXN0IHNldCB0aGUgZGlyZWN0aW9uIG9mIGV2ZXJ5IHBhZCBpbiB0aGUgcGFkcyBhcnJheSBiZWZvcmUgY2FsbGluZworbWVkaWFfZW50aXR5X2luaXQuIFRoZSBmdW5jdGlvbiB3aWxsIGluaXRpYWxpemUgdGhlIG90aGVyIHBhZHMgZmllbGRzLgorCitVbmxpa2UgdGhlIG51bWJlciBvZiBwYWRzLCB0aGUgdG90YWwgbnVtYmVyIG9mIGxpbmtzIGlzbid0IGFsd2F5cyBrbm93biBpbgorYWR2YW5jZSBieSB0aGUgZW50aXR5IGRyaXZlci4gQXMgYW4gaW5pdGlhbCBlc3RpbWF0ZSwgbWVkaWFfZW50aXR5X2luaXQKK3ByZS1hbGxvY2F0ZXMgYSBudW1iZXIgb2YgbGlua3MgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBwYWRzIHBsdXMgYW4gb3B0aW9uYWwKK251bWJlciBvZiBleHRyYSBsaW5rcy4gVGhlIGxpbmtzIGFycmF5IHdpbGwgYmUgcmVhbGxvY2F0ZWQgaWYgaXQgZ3Jvd3MgYmV5b25kCit0aGUgaW5pdGlhbCBlc3RpbWF0ZS4KKworRHJpdmVycyByZWdpc3RlciBlbnRpdGllcyB3aXRoIGEgbWVkaWEgZGV2aWNlIGJ5IGNhbGxpbmcKKworCW1lZGlhX2RldmljZV9yZWdpc3Rlcl9lbnRpdHkoc3RydWN0IG1lZGlhX2RldmljZSAqbWRldiwKKwkJCQkgICAgIHN0cnVjdCBtZWRpYV9lbnRpdHkgKmVudGl0eSk7CisKK0VudGl0aWVzIGFyZSBpZGVudGlmaWVkIGJ5IGEgdW5pcXVlIHBvc2l0aXZlIGludGVnZXIgSUQuIERyaXZlcnMgY2FuIHByb3ZpZGUgYW4KK0lEIGJ5IGZpbGxpbmcgdGhlIG1lZGlhX2VudGl0eSBpZCBmaWVsZCBwcmlvciB0byByZWdpc3RyYXRpb24sIG9yIHJlcXVlc3QgdGhlCittZWRpYSBjb250cm9sbGVyIGZyYW1ld29yayB0byBhc3NpZ24gYW4gSUQgYXV0b21hdGljYWxseS4gRHJpdmVycyB0aGF0IHByb3ZpZGUKK0lEcyBtYW51YWxseSBtdXN0IGVuc3VyZSB0aGF0IGFsbCBJRHMgYXJlIHVuaXF1ZS4gSURzIGFyZSBub3QgZ3VhcmFudGVlZCB0byBiZQorY29udGlndW91cyBldmVuIHdoZW4gdGhleSBhcmUgYWxsIGFzc2lnbmVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIGZyYW1ld29yay4KKworRHJpdmVycyB1bnJlZ2lzdGVyIGVudGl0aWVzIGJ5IGNhbGxpbmcKKworCW1lZGlhX2RldmljZV91bnJlZ2lzdGVyX2VudGl0eShzdHJ1Y3QgbWVkaWFfZW50aXR5ICplbnRpdHkpOworCitVbnJlZ2lzdGVyaW5nIGFuIGVudGl0eSB3aWxsIG5vdCBjaGFuZ2UgdGhlIElEcyBvZiB0aGUgb3RoZXIgZW50aXRpZXMsIGFuZCB0aGUKK0lEIHdpbGwgbmV2ZXIgYmUgcmV1c2VkIGZvciBhIG5ld2x5IHJlZ2lzdGVyZWQgZW50aXR5LgorCitXaGVuIGEgbWVkaWEgZGV2aWNlIGlzIHVucmVnaXN0ZXJlZCwgYWxsIGl0cyBlbnRpdGllcyBhcmUgdW5yZWdpc3RlcmVkCithdXRvbWF0aWNhbGx5LiBObyBtYW51YWwgZW50aXRpZXMgdW5yZWdpc3RyYXRpb24gaXMgdGhlbiByZXF1aXJlZC4KKworRHJpdmVycyBmcmVlIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggYW4gZW50aXR5IGJ5IGNhbGxpbmcKKworCW1lZGlhX2VudGl0eV9jbGVhbnVwKHN0cnVjdCBtZWRpYV9lbnRpdHkgKmVudGl0eSk7CisKK1RoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgZHVyaW5nIHRoZSBjbGVhbnVwIHBoYXNlIGFmdGVyIHVucmVnaXN0ZXJpbmcgdGhlCitlbnRpdHkuIE5vdGUgdGhhdCB0aGUgbWVkaWFfZW50aXR5IGluc3RhbmNlIGl0c2VsZiBtdXN0IGJlIGZyZWVkIGV4cGxpY2l0bHkgYnkKK3RoZSBkcml2ZXIgaWYgcmVxdWlyZWQuCisKK0VudGl0aWVzIGhhdmUgZmxhZ3MgdGhhdCBkZXNjcmliZSB0aGUgZW50aXR5IGNhcGFiaWxpdGllcyBhbmQgc3RhdGUuCisKKwlNRURJQV9FTlRfRkxfREVGQVVMVCBpbmRpY2F0ZXMgdGhlIGRlZmF1bHQgZW50aXR5IGZvciBhIGdpdmVuIHR5cGUuCisJVGhpcyBjYW4gYmUgdXNlZCB0byByZXBvcnQgdGhlIGRlZmF1bHQgYXVkaW8gYW5kIHZpZGVvIGRldmljZXMgb3IgdGhlCisJZGVmYXVsdCBjYW1lcmEgc2Vuc29yLgorCitMb2dpY2FsIGVudGl0eSBncm91cHMgY2FuIGJlIGRlZmluZWQgYnkgc2V0dGluZyB0aGUgZ3JvdXAgSUQgb2YgYWxsIG1lbWJlcgorZW50aXRpZXMgdG8gdGhlIHNhbWUgbm9uLXplcm8gdmFsdWUuIEFuIGVudGl0eSBncm91cCBzZXJ2ZXMgbm8gcHVycG9zZSBpbiB0aGUKK2tlcm5lbCwgYnV0IGlzIHJlcG9ydGVkIHRvIHVzZXJzcGFjZSBkdXJpbmcgZW50aXRpZXMgZW51bWVyYXRpb24uIFRoZSBncm91cF9pZAorZmllbGQgYmVsb25ncyB0byB0aGUgbWVkaWEgZGV2aWNlIGRyaXZlciBhbmQgbXVzdCBub3QgYnkgdG91Y2hlZCBieSBlbnRpdHkKK2RyaXZlcnMuCisKK01lZGlhIGRldmljZSBkcml2ZXJzIHNob3VsZCBkZWZpbmUgZ3JvdXBzIGlmIHNldmVyYWwgZW50aXRpZXMgYXJlIGxvZ2ljYWxseQorYm91bmQgdG9nZXRoZXIuIEV4YW1wbGUgdXNhZ2VzIGluY2x1ZGUgcmVwb3J0aW5nCisKKwktIEFMU0EsIFZCSSBhbmQgdmlkZW8gbm9kZXMgdGhhdCBjYXJyeSB0aGUgc2FtZSBtZWRpYSBzdHJlYW0KKwktIGxlbnMgYW5kIGZsYXNoIGNvbnRyb2xsZXJzIGFzc29jaWF0ZWQgd2l0aCBhIHNlbnNvcgorCistIFBhZHMKKworUGFkcyBhcmUgcmVwcmVzZW50ZWQgYnkgYSBzdHJ1Y3QgbWVkaWFfcGFkIGluc3RhbmNlLCBkZWZpbmVkIGluCitpbmNsdWRlL21lZGlhL21lZGlhLWVudGl0eS5oLiBFYWNoIGVudGl0eSBzdG9yZXMgaXRzIHBhZHMgaW4gYSBwYWRzIGFycmF5CittYW5hZ2VkIGJ5IHRoZSBlbnRpdHkgZHJpdmVyLiBEcml2ZXJzIHVzdWFsbHkgZW1iZWQgdGhlIGFycmF5IGluIGEKK2RyaXZlci1zcGVjaWZpYyBzdHJ1Y3R1cmUuCisKK1BhZHMgYXJlIGlkZW50aWZpZWQgYnkgdGhlaXIgZW50aXR5IGFuZCB0aGVpciAwLWJhc2VkIGluZGV4IGluIHRoZSBwYWRzIGFycmF5LgorQm90aCBpbmZvcm1hdGlvbiBhcmUgc3RvcmVkIGluIHRoZSBtZWRpYV9wYWQgc3RydWN0dXJlLCBtYWtpbmcgdGhlIG1lZGlhX3BhZAorcG9pbnRlciB0aGUgY2Fub25pY2FsIHdheSB0byBzdG9yZSBhbmQgcGFzcyBsaW5rIHJlZmVyZW5jZXMuCisKK1BhZHMgaGF2ZSBmbGFncyB0aGF0IGRlc2NyaWJlIHRoZSBwYWQgY2FwYWJpbGl0aWVzIGFuZCBzdGF0ZS4KKworCU1FRElBX1BBRF9GTF9TSU5LIGluZGljYXRlcyB0aGF0IHRoZSBwYWQgc3VwcG9ydHMgc2lua2luZyBkYXRhLgorCU1FRElBX1BBRF9GTF9TT1VSQ0UgaW5kaWNhdGVzIHRoYXQgdGhlIHBhZCBzdXBwb3J0cyBzb3VyY2luZyBkYXRhLgorCitPbmUgYW5kIG9ubHkgb25lIG9mIE1FRElBX1BBRF9GTF9TSU5LIGFuZCBNRURJQV9QQURfRkxfU09VUkNFIG11c3QgYmUgc2V0IGZvcgorZWFjaCBwYWQuCisKKy0gTGlua3MKKworTGlua3MgYXJlIHJlcHJlc2VudGVkIGJ5IGEgc3RydWN0IG1lZGlhX2xpbmsgaW5zdGFuY2UsIGRlZmluZWQgaW4KK2luY2x1ZGUvbWVkaWEvbWVkaWEtZW50aXR5LmguIEVhY2ggZW50aXR5IHN0b3JlcyBhbGwgbGlua3Mgb3JpZ2luYXRpbmcgYXQgb3IKK3RhcmdldGluZyBhbnkgb2YgaXRzIHBhZHMgaW4gYSBsaW5rcyBhcnJheS4gQSBnaXZlbiBsaW5rIGlzIHRodXMgc3RvcmVkCit0d2ljZSwgb25jZSBpbiB0aGUgc291cmNlIGVudGl0eSBhbmQgb25jZSBpbiB0aGUgdGFyZ2V0IGVudGl0eS4gVGhlIGFycmF5IGlzCitwcmUtYWxsb2NhdGVkIGFuZCBncm93cyBkeW5hbWljYWxseSBhcyBuZWVkZWQuCisKK0RyaXZlcnMgY3JlYXRlIGxpbmtzIGJ5IGNhbGxpbmcKKworCW1lZGlhX2VudGl0eV9jcmVhdGVfbGluayhzdHJ1Y3QgbWVkaWFfZW50aXR5ICpzb3VyY2UsIHUxNiBzb3VyY2VfcGFkLAorCQkJCSBzdHJ1Y3QgbWVkaWFfZW50aXR5ICpzaW5rLCAgIHUxNiBzaW5rX3BhZCwKKwkJCQkgdTMyIGZsYWdzKTsKKworQW4gZW50cnkgaW4gdGhlIGxpbmsgYXJyYXkgb2YgZWFjaCBlbnRpdHkgaXMgYWxsb2NhdGVkIGFuZCBzdG9yZXMgcG9pbnRlcnMKK3RvIHNvdXJjZSBhbmQgc2luayBwYWRzLgorCitMaW5rcyBoYXZlIGZsYWdzIHRoYXQgZGVzY3JpYmUgdGhlIGxpbmsgY2FwYWJpbGl0aWVzIGFuZCBzdGF0ZS4KKworCU1FRElBX0xOS19GTF9FTkFCTEVEIGluZGljYXRlcyB0aGF0IHRoZSBsaW5rIGlzIGVuYWJsZWQgYW5kIGNhbiBiZSB1c2VkCisJdG8gdHJhbnNmZXIgbWVkaWEgZGF0YS4gV2hlbiB0d28gb3IgbW9yZSBsaW5rcyB0YXJnZXQgYSBzaW5rIHBhZCwgb25seQorCW9uZSBvZiB0aGVtIGNhbiBiZSBlbmFibGVkIGF0IGEgdGltZS4KKwlNRURJQV9MTktfRkxfSU1NVVRBQkxFIGluZGljYXRlcyB0aGF0IHRoZSBsaW5rIGVuYWJsZWQgc3RhdGUgY2FuJ3QgYmUKKwltb2RpZmllZCBhdCBydW50aW1lLiBJZiBNRURJQV9MTktfRkxfSU1NVVRBQkxFIGlzIHNldCwgdGhlbgorCU1FRElBX0xOS19GTF9FTkFCTEVEIG11c3QgYWxzbyBiZSBzZXQgc2luY2UgYW4gaW1tdXRhYmxlIGxpbmsgaXMgYWx3YXlzCisJZW5hYmxlZC4KKworCitHcmFwaCB0cmF2ZXJzYWwKKy0tLS0tLS0tLS0tLS0tLQorCitUaGUgbWVkaWEgZnJhbWV3b3JrIHByb3ZpZGVzIEFQSXMgdG8gaXRlcmF0ZSBvdmVyIGVudGl0aWVzIGluIGEgZ3JhcGguCisKK1RvIGl0ZXJhdGUgb3ZlciBhbGwgZW50aXRpZXMgYmVsb25naW5nIHRvIGEgbWVkaWEgZGV2aWNlLCBkcml2ZXJzIGNhbiB1c2UgdGhlCittZWRpYV9kZXZpY2VfZm9yX2VhY2hfZW50aXR5IG1hY3JvLCBkZWZpbmVkIGluIGluY2x1ZGUvbWVkaWEvbWVkaWEtZGV2aWNlLmguCisKKwlzdHJ1Y3QgbWVkaWFfZW50aXR5ICplbnRpdHk7CisKKwltZWRpYV9kZXZpY2VfZm9yX2VhY2hfZW50aXR5KGVudGl0eSwgbWRldikgeworCQkvKiBlbnRpdHkgd2lsbCBwb2ludCB0byBlYWNoIGVudGl0eSBpbiB0dXJuICovCisJCS4uLgorCX0KKworRHJpdmVycyBtaWdodCBhbHNvIG5lZWQgdG8gaXRlcmF0ZSBvdmVyIGFsbCBlbnRpdGllcyBpbiBhIGdyYXBoIHRoYXQgY2FuIGJlCityZWFjaGVkIG9ubHkgdGhyb3VnaCBlbmFibGVkIGxpbmtzIHN0YXJ0aW5nIGF0IGEgZ2l2ZW4gZW50aXR5LiBUaGUgbWVkaWEKK2ZyYW1ld29yayBwcm92aWRlcyBhIGRlcHRoLWZpcnN0IGdyYXBoIHRyYXZlcnNhbCBBUEkgZm9yIHRoYXQgcHVycG9zZS4KKworTm90ZSB0aGF0IGdyYXBocyB3aXRoIGN5Y2xlcyAod2hldGhlciBkaXJlY3RlZCBvciB1bmRpcmVjdGVkKSBhcmUgKk5PVCoKK3N1cHBvcnRlZCBieSB0aGUgZ3JhcGggdHJhdmVyc2FsIEFQSS4gVG8gcHJldmVudCBpbmZpbml0ZSBsb29wcywgdGhlIGdyYXBoCit0cmF2ZXJzYWwgY29kZSBsaW1pdHMgdGhlIG1heGltdW0gZGVwdGggdG8gTUVESUFfRU5USVRZX0VOVU1fTUFYX0RFUFRILAorY3VycmVudGx5IGRlZmluZWQgYXMgMTYuCisKK0RyaXZlcnMgaW5pdGlhdGUgYSBncmFwaCB0cmF2ZXJzYWwgYnkgY2FsbGluZworCisJbWVkaWFfZW50aXR5X2dyYXBoX3dhbGtfc3RhcnQoc3RydWN0IG1lZGlhX2VudGl0eV9ncmFwaCAqZ3JhcGgsCisJCQkJICAgICAgc3RydWN0IG1lZGlhX2VudGl0eSAqZW50aXR5KTsKKworVGhlIGdyYXBoIHN0cnVjdHVyZSwgcHJvdmlkZWQgYnkgdGhlIGNhbGxlciwgaXMgaW5pdGlhbGl6ZWQgdG8gc3RhcnQgZ3JhcGgKK3RyYXZlcnNhbCBhdCB0aGUgZ2l2ZW4gZW50aXR5LgorCitEcml2ZXJzIGNhbiB0aGVuIHJldHJpZXZlIHRoZSBuZXh0IGVudGl0eSBieSBjYWxsaW5nCisKKwltZWRpYV9lbnRpdHlfZ3JhcGhfd2Fsa19uZXh0KHN0cnVjdCBtZWRpYV9lbnRpdHlfZ3JhcGggKmdyYXBoKTsKKworV2hlbiB0aGUgZ3JhcGggdHJhdmVyc2FsIGlzIGNvbXBsZXRlIHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiBOVUxMLgorCitHcmFwaCB0cmF2ZXJzYWwgY2FuIGJlIGludGVycnVwdGVkIGF0IGFueSBtb21lbnQuIE5vIGNsZWFudXAgZnVuY3Rpb24gY2FsbCBpcworcmVxdWlyZWQgYW5kIHRoZSBncmFwaCBzdHJ1Y3R1cmUgY2FuIGJlIGZyZWVkIG5vcm1hbGx5LgorCitIZWxwZXIgZnVuY3Rpb25zIGNhbiBiZSB1c2VkIHRvIGZpbmQgYSBsaW5rIGJldHdlZW4gdHdvIGdpdmVuIHBhZHMsIG9yIGEgcGFkCitjb25uZWN0ZWQgdG8gYW5vdGhlciBwYWQgdGhyb3VnaCBhbiBlbmFibGVkIGxpbmsKKworCW1lZGlhX2VudGl0eV9maW5kX2xpbmsoc3RydWN0IG1lZGlhX3BhZCAqc291cmNlLAorCQkJICAgICAgIHN0cnVjdCBtZWRpYV9wYWQgKnNpbmspOworCisJbWVkaWFfZW50aXR5X3JlbW90ZV9wYWQoc3RydWN0IG1lZGlhX3BhZCAqcGFkKTsKKworUmVmZXIgdG8gdGhlIGtlcm5lbGRvYyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisKK1VzZSBjb3VudCBhbmQgcG93ZXIgaGFuZGxpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRHVlIHRvIHRoZSB3aWRlIGRpZmZlcmVuY2VzIGJldHdlZW4gZHJpdmVycyByZWdhcmRpbmcgcG93ZXIgbWFuYWdlbWVudCBuZWVkcywKK3RoZSBtZWRpYSBjb250cm9sbGVyIGRvZXMgbm90IGltcGxlbWVudCBwb3dlciBtYW5hZ2VtZW50LiBIb3dldmVyLCB0aGUKK21lZGlhX2VudGl0eSBzdHJ1Y3R1cmUgaW5jbHVkZXMgYSB1c2VfY291bnQgZmllbGQgdGhhdCBtZWRpYSBkcml2ZXJzIGNhbiB1c2UgdG8KK3RyYWNrIHRoZSBudW1iZXIgb2YgdXNlcnMgb2YgZXZlcnkgZW50aXR5IGZvciBwb3dlciBtYW5hZ2VtZW50IG5lZWRzLgorCitUaGUgdXNlX2NvdW50IGZpZWxkIGlzIG93bmVkIGJ5IG1lZGlhIGRyaXZlcnMgYW5kIG11c3Qgbm90IGJlIHRvdWNoZWQgYnkgZW50aXR5Citkcml2ZXJzLiBBY2Nlc3MgdG8gdGhlIGZpZWxkIG11c3QgYmUgcHJvdGVjdGVkIGJ5IHRoZSBtZWRpYSBkZXZpY2UgZ3JhcGhfbXV0ZXgKK2xvY2suCisKKworTGlua3Mgc2V0dXAKKy0tLS0tLS0tLS0tCisKK0xpbmsgcHJvcGVydGllcyBjYW4gYmUgbW9kaWZpZWQgYXQgcnVudGltZSBieSBjYWxsaW5nCisKKwltZWRpYV9lbnRpdHlfc2V0dXBfbGluayhzdHJ1Y3QgbWVkaWFfbGluayAqbGluaywgdTMyIGZsYWdzKTsKKworVGhlIGZsYWdzIGFyZ3VtZW50IGNvbnRhaW5zIHRoZSByZXF1ZXN0ZWQgbmV3IGxpbmsgZmxhZ3MuCisKK1RoZSBvbmx5IGNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSBpcyB0aGUgRU5BQkxFRCBsaW5rIGZsYWcgdG8gZW5hYmxlL2Rpc2FibGUgYQorbGluay4gTGlua3MgbWFya2VkIHdpdGggdGhlIElNTVVUQUJMRSBsaW5rIGZsYWcgY2FuIG5vdCBiZSBlbmFibGVkIG9yIGRpc2FibGVkLgorCitXaGVuIGEgbGluayBpcyBlbmFibGVkIG9yIGRpc2FibGVkLCB0aGUgbWVkaWEgZnJhbWV3b3JrIGNhbGxzIHRoZQorbGlua19zZXR1cCBvcGVyYXRpb24gZm9yIHRoZSB0d28gZW50aXRpZXMgYXQgdGhlIHNvdXJjZSBhbmQgc2luayBvZiB0aGUgbGluaywKK2luIHRoYXQgb3JkZXIuIElmIHRoZSBzZWNvbmQgbGlua19zZXR1cCBjYWxsIGZhaWxzLCBhbm90aGVyIGxpbmtfc2V0dXAgY2FsbCBpcworbWFkZSBvbiB0aGUgZmlyc3QgZW50aXR5IHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGxpbmsgZmxhZ3MuCisKK01lZGlhIGRldmljZSBkcml2ZXJzIGNhbiBiZSBub3RpZmllZCBvZiBsaW5rIHNldHVwIG9wZXJhdGlvbnMgYnkgc2V0dGluZyB0aGUKK21lZGlhX2RldmljZTo6bGlua19ub3RpZnkgcG9pbnRlciB0byBhIGNhbGxiYWNrIGZ1bmN0aW9uLiBJZiBwcm92aWRlZCwgdGhlCitub3RpZmljYXRpb24gY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIGVuYWJsaW5nIGFuZCBhZnRlciBkaXNhYmxpbmcKK2xpbmtzLgorCitFbnRpdHkgZHJpdmVycyBtdXN0IGltcGxlbWVudCB0aGUgbGlua19zZXR1cCBvcGVyYXRpb24gaWYgYW55IG9mIHRoZWlyIGxpbmtzCitpcyBub24taW1tdXRhYmxlLiBUaGUgb3BlcmF0aW9uIG11c3QgZWl0aGVyIGNvbmZpZ3VyZSB0aGUgaGFyZHdhcmUgb3Igc3RvcmUKK3RoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIHRvIGJlIGFwcGxpZWQgbGF0ZXIuCisKK0xpbmsgY29uZmlndXJhdGlvbiBtdXN0IG5vdCBoYXZlIGFueSBzaWRlIGVmZmVjdCBvbiBvdGhlciBsaW5rcy4gSWYgYW4gZW5hYmxlZAorbGluayBhdCBhIHNpbmsgcGFkIHByZXZlbnRzIGFub3RoZXIgbGluayBhdCB0aGUgc2FtZSBwYWQgZnJvbSBiZWluZyBlbmFibGVkLAordGhlIGxpbmtfc2V0dXAgb3BlcmF0aW9uIG11c3QgcmV0dXJuIC1FQlVTWSBhbmQgY2FuJ3QgaW1wbGljaXRseSBkaXNhYmxlIHRoZQorZmlyc3QgZW5hYmxlZCBsaW5rLgorCisKK1BpcGVsaW5lcyBhbmQgbWVkaWEgc3RyZWFtcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doZW4gc3RhcnRpbmcgc3RyZWFtaW5nLCBkcml2ZXJzIG11c3Qgbm90aWZ5IGFsbCBlbnRpdGllcyBpbiB0aGUgcGlwZWxpbmUgdG8KK3ByZXZlbnQgbGluayBzdGF0ZXMgZnJvbSBiZWluZyBtb2RpZmllZCBkdXJpbmcgc3RyZWFtaW5nIGJ5IGNhbGxpbmcKKworCW1lZGlhX2VudGl0eV9waXBlbGluZV9zdGFydChzdHJ1Y3QgbWVkaWFfZW50aXR5ICplbnRpdHksCisJCQkJICAgIHN0cnVjdCBtZWRpYV9waXBlbGluZSAqcGlwZSk7CisKK1RoZSBmdW5jdGlvbiB3aWxsIG1hcmsgYWxsIGVudGl0aWVzIGNvbm5lY3RlZCB0byB0aGUgZ2l2ZW4gZW50aXR5IHRocm91Z2gKK2VuYWJsZWQgbGlua3MsIGVpdGhlciBkaXJlY3RseSBvciBpbmRpcmVjdGx5LCBhcyBzdHJlYW1pbmcuCisKK1RoZSBtZWRpYV9waXBlbGluZSBpbnN0YW5jZSBwb2ludGVkIHRvIGJ5IHRoZSBwaXBlIGFyZ3VtZW50IHdpbGwgYmUgc3RvcmVkIGluCitldmVyeSBlbnRpdHkgaW4gdGhlIHBpcGVsaW5lLiBEcml2ZXJzIHNob3VsZCBlbWJlZCB0aGUgbWVkaWFfcGlwZWxpbmUgc3RydWN0dXJlCitpbiBoaWdoZXItbGV2ZWwgcGlwZWxpbmUgc3RydWN0dXJlcyBhbmQgY2FuIHRoZW4gYWNjZXNzIHRoZSBwaXBlbGluZSB0aHJvdWdoCit0aGUgbWVkaWFfZW50aXR5IHBpcGUgZmllbGQuCisKK0NhbGxzIHRvIG1lZGlhX2VudGl0eV9waXBlbGluZV9zdGFydCgpIGNhbiBiZSBuZXN0ZWQuIFRoZSBwaXBlbGluZSBwb2ludGVyIG11c3QKK2JlIGlkZW50aWNhbCBmb3IgYWxsIG5lc3RlZCBjYWxscyB0byB0aGUgZnVuY3Rpb24uCisKK21lZGlhX2VudGl0eV9waXBlbGluZV9zdGFydCgpIG1heSByZXR1cm4gYW4gZXJyb3IuIEluIHRoYXQgY2FzZSwgaXQgd2lsbAorY2xlYW4gdXAgYW55IG9mIHRoZSBjaGFuZ2VzIGl0IGRpZCBieSBpdHNlbGYuCisKK1doZW4gc3RvcHBpbmcgdGhlIHN0cmVhbSwgZHJpdmVycyBtdXN0IG5vdGlmeSB0aGUgZW50aXRpZXMgd2l0aAorCisJbWVkaWFfZW50aXR5X3BpcGVsaW5lX3N0b3Aoc3RydWN0IG1lZGlhX2VudGl0eSAqZW50aXR5KTsKKworSWYgbXVsdGlwbGUgY2FsbHMgdG8gbWVkaWFfZW50aXR5X3BpcGVsaW5lX3N0YXJ0KCkgaGF2ZSBiZWVuIG1hZGUgdGhlIHNhbWUKK251bWJlciBvZiBtZWRpYV9lbnRpdHlfcGlwZWxpbmVfc3RvcCgpIGNhbGxzIGFyZSByZXF1aXJlZCB0byBzdG9wIHN0cmVhbWluZy4gVGhlCittZWRpYV9lbnRpdHkgcGlwZSBmaWVsZCBpcyByZXNldCB0byBOVUxMIG9uIHRoZSBsYXN0IG5lc3RlZCBzdG9wIGNhbGwuCisKK0xpbmsgY29uZmlndXJhdGlvbiB3aWxsIGZhaWwgd2l0aCAtRUJVU1kgYnkgZGVmYXVsdCBpZiBlaXRoZXIgZW5kIG9mIHRoZSBsaW5rIGlzCithIHN0cmVhbWluZyBlbnRpdHkuIExpbmtzIHRoYXQgY2FuIGJlIG1vZGlmaWVkIHdoaWxlIHN0cmVhbWluZyBtdXN0IGJlIG1hcmtlZAord2l0aCB0aGUgTUVESUFfTE5LX0ZMX0RZTkFNSUMgZmxhZy4KKworSWYgb3RoZXIgb3BlcmF0aW9ucyBuZWVkIHRvIGJlIGRpc2FsbG93ZWQgb24gc3RyZWFtaW5nIGVudGl0aWVzIChzdWNoIGFzCitjaGFuZ2luZyBlbnRpdGllcyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMpIGRyaXZlcnMgY2FuIGV4cGxpY2l0bHkgY2hlY2sgdGhlCittZWRpYV9lbnRpdHkgc3RyZWFtX2NvdW50IGZpZWxkIHRvIGZpbmQgb3V0IGlmIGFuIGVudGl0eSBpcyBzdHJlYW1pbmcuIFRoaXMKK29wZXJhdGlvbiBtdXN0IGJlIGRvbmUgd2l0aCB0aGUgbWVkaWFfZGV2aWNlIGdyYXBoX211dGV4IGhlbGQuCisKKworTGluayB2YWxpZGF0aW9uCistLS0tLS0tLS0tLS0tLS0KKworTGluayB2YWxpZGF0aW9uIGlzIHBlcmZvcm1lZCBieSBtZWRpYV9lbnRpdHlfcGlwZWxpbmVfc3RhcnQoKSBmb3IgYW55CitlbnRpdHkgd2hpY2ggaGFzIHNpbmsgcGFkcyBpbiB0aGUgcGlwZWxpbmUuIFRoZQorbWVkaWFfZW50aXR5OjpsaW5rX3ZhbGlkYXRlKCkgY2FsbGJhY2sgaXMgdXNlZCBmb3IgdGhhdCBwdXJwb3NlLiBJbgorbGlua192YWxpZGF0ZSgpIGNhbGxiYWNrLCBlbnRpdHkgZHJpdmVyIHNob3VsZCBjaGVjayB0aGF0IHRoZSBwcm9wZXJ0aWVzIG9mCit0aGUgc291cmNlIHBhZCBvZiB0aGUgY29ubmVjdGVkIGVudGl0eSBhbmQgaXRzIG93biBzaW5rIHBhZCBtYXRjaC4gSXQgaXMgdXAKK3RvIHRoZSB0eXBlIG9mIHRoZSBlbnRpdHkgKGFuZCBpbiB0aGUgZW5kLCB0aGUgcHJvcGVydGllcyBvZiB0aGUgaGFyZHdhcmUpCit3aGF0IG1hdGNoaW5nIGFjdHVhbGx5IG1lYW5zLgorCitTdWJzeXN0ZW1zIHNob3VsZCBmYWNpbGl0YXRlIGxpbmsgdmFsaWRhdGlvbiBieSBwcm92aWRpbmcgc3Vic3lzdGVtIHNwZWNpZmljCitoZWxwZXIgZnVuY3Rpb25zIHRvIHByb3ZpZGUgZWFzeSBhY2Nlc3MgZm9yIGNvbW1vbmx5IG5lZWRlZCBpbmZvcm1hdGlvbiwgYW5kCitpbiB0aGUgZW5kIHByb3ZpZGUgYSB3YXkgdG8gdXNlIGRyaXZlci1zcGVjaWZpYyBjYWxsYmFja3MuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21lbW9yeS1iYXJyaWVycy50eHQgYi9Eb2N1bWVudGF0aW9uL21lbW9yeS1iYXJyaWVycy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVmOTQ4NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbWVtb3J5LWJhcnJpZXJzLnR4dApAQCAtMCwwICsxLDMwMjEgQEAKKwkJCSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJCQkgTElOVVggS0VSTkVMIE1FTU9SWSBCQVJSSUVSUworCQkJID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnk6IERhdmlkIEhvd2VsbHMgPGRob3dlbGxzQHJlZGhhdC5jb20+CisgICAgUGF1bCBFLiBNY0tlbm5leSA8cGF1bG1ja0BsaW51eC52bmV0LmlibS5jb20+CisKK0NvbnRlbnRzOgorCisgKCopIEFic3RyYWN0IG1lbW9yeSBhY2Nlc3MgbW9kZWwuCisKKyAgICAgLSBEZXZpY2Ugb3BlcmF0aW9ucy4KKyAgICAgLSBHdWFyYW50ZWVzLgorCisgKCopIFdoYXQgYXJlIG1lbW9yeSBiYXJyaWVycz8KKworICAgICAtIFZhcmlldGllcyBvZiBtZW1vcnkgYmFycmllci4KKyAgICAgLSBXaGF0IG1heSBub3QgYmUgYXNzdW1lZCBhYm91dCBtZW1vcnkgYmFycmllcnM/CisgICAgIC0gRGF0YSBkZXBlbmRlbmN5IGJhcnJpZXJzLgorICAgICAtIENvbnRyb2wgZGVwZW5kZW5jaWVzLgorICAgICAtIFNNUCBiYXJyaWVyIHBhaXJpbmcuCisgICAgIC0gRXhhbXBsZXMgb2YgbWVtb3J5IGJhcnJpZXIgc2VxdWVuY2VzLgorICAgICAtIFJlYWQgbWVtb3J5IGJhcnJpZXJzIHZzIGxvYWQgc3BlY3VsYXRpb24uCisgICAgIC0gVHJhbnNpdGl2aXR5CisKKyAoKikgRXhwbGljaXQga2VybmVsIGJhcnJpZXJzLgorCisgICAgIC0gQ29tcGlsZXIgYmFycmllci4KKyAgICAgLSBDUFUgbWVtb3J5IGJhcnJpZXJzLgorICAgICAtIE1NSU8gd3JpdGUgYmFycmllci4KKworICgqKSBJbXBsaWNpdCBrZXJuZWwgbWVtb3J5IGJhcnJpZXJzLgorCisgICAgIC0gTG9ja2luZyBmdW5jdGlvbnMuCisgICAgIC0gSW50ZXJydXB0IGRpc2FibGluZyBmdW5jdGlvbnMuCisgICAgIC0gU2xlZXAgYW5kIHdha2UtdXAgZnVuY3Rpb25zLgorICAgICAtIE1pc2NlbGxhbmVvdXMgZnVuY3Rpb25zLgorCisgKCopIEludGVyLUNQVSBsb2NraW5nIGJhcnJpZXIgZWZmZWN0cy4KKworICAgICAtIExvY2tzIHZzIG1lbW9yeSBhY2Nlc3Nlcy4KKyAgICAgLSBMb2NrcyB2cyBJL08gYWNjZXNzZXMuCisKKyAoKikgV2hlcmUgYXJlIG1lbW9yeSBiYXJyaWVycyBuZWVkZWQ/CisKKyAgICAgLSBJbnRlcnByb2Nlc3NvciBpbnRlcmFjdGlvbi4KKyAgICAgLSBBdG9taWMgb3BlcmF0aW9ucy4KKyAgICAgLSBBY2Nlc3NpbmcgZGV2aWNlcy4KKyAgICAgLSBJbnRlcnJ1cHRzLgorCisgKCopIEtlcm5lbCBJL08gYmFycmllciBlZmZlY3RzLgorCisgKCopIEFzc3VtZWQgbWluaW11bSBleGVjdXRpb24gb3JkZXJpbmcgbW9kZWwuCisKKyAoKikgVGhlIGVmZmVjdHMgb2YgdGhlIGNwdSBjYWNoZS4KKworICAgICAtIENhY2hlIGNvaGVyZW5jeS4KKyAgICAgLSBDYWNoZSBjb2hlcmVuY3kgdnMgRE1BLgorICAgICAtIENhY2hlIGNvaGVyZW5jeSB2cyBNTUlPLgorCisgKCopIFRoZSB0aGluZ3MgQ1BVcyBnZXQgdXAgdG8uCisKKyAgICAgLSBBbmQgdGhlbiB0aGVyZSdzIHRoZSBBbHBoYS4KKworICgqKSBFeGFtcGxlIHVzZXMuCisKKyAgICAgLSBDaXJjdWxhciBidWZmZXJzLgorCisgKCopIFJlZmVyZW5jZXMuCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQUJTVFJBQ1QgTUVNT1JZIEFDQ0VTUyBNT0RFTAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitDb25zaWRlciB0aGUgZm9sbG93aW5nIGFic3RyYWN0IG1vZGVsIG9mIHRoZSBzeXN0ZW06CisKKwkJICAgICAgICAgICAgOiAgICAgICAgICAgICAgICA6CisJCSAgICAgICAgICAgIDogICAgICAgICAgICAgICAgOgorCQkgICAgICAgICAgICA6ICAgICAgICAgICAgICAgIDoKKwkJKy0tLS0tLS0rICAgOiAgICstLS0tLS0tLSsgICA6ICAgKy0tLS0tLS0rCisJCXwgICAgICAgfCAgIDogICB8ICAgICAgICB8ICAgOiAgIHwgICAgICAgfAorCQl8ICAgICAgIHwgICA6ICAgfCAgICAgICAgfCAgIDogICB8ICAgICAgIHwKKwkJfCBDUFUgMSB8PC0tLS0tPnwgTWVtb3J5IHw8LS0tLS0+fCBDUFUgMiB8CisJCXwgICAgICAgfCAgIDogICB8ICAgICAgICB8ICAgOiAgIHwgICAgICAgfAorCQl8ICAgICAgIHwgICA6ICAgfCAgICAgICAgfCAgIDogICB8ICAgICAgIHwKKwkJKy0tLS0tLS0rICAgOiAgICstLS0tLS0tLSsgICA6ICAgKy0tLS0tLS0rCisJCSAgICBeICAgICAgIDogICAgICAgXiAgICAgICAgOiAgICAgICBeCisJCSAgICB8ICAgICAgIDogICAgICAgfCAgICAgICAgOiAgICAgICB8CisJCSAgICB8ICAgICAgIDogICAgICAgfCAgICAgICAgOiAgICAgICB8CisJCSAgICB8ICAgICAgIDogICAgICAgdiAgICAgICAgOiAgICAgICB8CisJCSAgICB8ICAgICAgIDogICArLS0tLS0tLS0rICAgOiAgICAgICB8CisJCSAgICB8ICAgICAgIDogICB8ICAgICAgICB8ICAgOiAgICAgICB8CisJCSAgICB8ICAgICAgIDogICB8ICAgICAgICB8ICAgOiAgICAgICB8CisJCSAgICArLS0tLS0tLS0tLT58IERldmljZSB8PC0tLS0tLS0tLS0rCisJCSAgICAgICAgICAgIDogICB8ICAgICAgICB8ICAgOgorCQkgICAgICAgICAgICA6ICAgfCAgICAgICAgfCAgIDoKKwkJICAgICAgICAgICAgOiAgICstLS0tLS0tLSsgICA6CisJCSAgICAgICAgICAgIDogICAgICAgICAgICAgICAgOgorCitFYWNoIENQVSBleGVjdXRlcyBhIHByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgbWVtb3J5IGFjY2VzcyBvcGVyYXRpb25zLiAgSW4gdGhlCithYnN0cmFjdCBDUFUsIG1lbW9yeSBvcGVyYXRpb24gb3JkZXJpbmcgaXMgdmVyeSByZWxheGVkLCBhbmQgYSBDUFUgbWF5IGFjdHVhbGx5CitwZXJmb3JtIHRoZSBtZW1vcnkgb3BlcmF0aW9ucyBpbiBhbnkgb3JkZXIgaXQgbGlrZXMsIHByb3ZpZGVkIHByb2dyYW0gY2F1c2FsaXR5CithcHBlYXJzIHRvIGJlIG1haW50YWluZWQuICBTaW1pbGFybHksIHRoZSBjb21waWxlciBtYXkgYWxzbyBhcnJhbmdlIHRoZQoraW5zdHJ1Y3Rpb25zIGl0IGVtaXRzIGluIGFueSBvcmRlciBpdCBsaWtlcywgcHJvdmlkZWQgaXQgZG9lc24ndCBhZmZlY3QgdGhlCithcHBhcmVudCBvcGVyYXRpb24gb2YgdGhlIHByb2dyYW0uCisKK1NvIGluIHRoZSBhYm92ZSBkaWFncmFtLCB0aGUgZWZmZWN0cyBvZiB0aGUgbWVtb3J5IG9wZXJhdGlvbnMgcGVyZm9ybWVkIGJ5IGEKK0NQVSBhcmUgcGVyY2VpdmVkIGJ5IHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0gYXMgdGhlIG9wZXJhdGlvbnMgY3Jvc3MgdGhlCitpbnRlcmZhY2UgYmV0d2VlbiB0aGUgQ1BVIGFuZCByZXN0IG9mIHRoZSBzeXN0ZW0gKHRoZSBkb3R0ZWQgbGluZXMpLgorCisKK0ZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIHNlcXVlbmNlIG9mIGV2ZW50czoKKworCUNQVSAxCQlDUFUgMgorCT09PT09PT09PT09PT09PQk9PT09PT09PT09PT09PT0KKwl7IEEgPT0gMTsgQiA9PSAyIH0KKwlBID0gMzsJCXggPSBCOworCUIgPSA0OwkJeSA9IEE7CisKK1RoZSBzZXQgb2YgYWNjZXNzZXMgYXMgc2VlbiBieSB0aGUgbWVtb3J5IHN5c3RlbSBpbiB0aGUgbWlkZGxlIGNhbiBiZSBhcnJhbmdlZAoraW4gMjQgZGlmZmVyZW50IGNvbWJpbmF0aW9uczoKKworCVNUT1JFIEE9MywJU1RPUkUgQj00LAl5PUxPQUQgQS0+MywJeD1MT0FEIEItPjQKKwlTVE9SRSBBPTMsCVNUT1JFIEI9NCwJeD1MT0FEIEItPjQsCXk9TE9BRCBBLT4zCisJU1RPUkUgQT0zLAl5PUxPQUQgQS0+MywJU1RPUkUgQj00LAl4PUxPQUQgQi0+NAorCVNUT1JFIEE9MywJeT1MT0FEIEEtPjMsCXg9TE9BRCBCLT4yLAlTVE9SRSBCPTQKKwlTVE9SRSBBPTMsCXg9TE9BRCBCLT4yLAlTVE9SRSBCPTQsCXk9TE9BRCBBLT4zCisJU1RPUkUgQT0zLAl4PUxPQUQgQi0+MiwJeT1MT0FEIEEtPjMsCVNUT1JFIEI9NAorCVNUT1JFIEI9NCwJU1RPUkUgQT0zLAl5PUxPQUQgQS0+MywJeD1MT0FEIEItPjQKKwlTVE9SRSBCPTQsIC4uLgorCS4uLgorCithbmQgY2FuIHRodXMgcmVzdWx0IGluIGZvdXIgZGlmZmVyZW50IGNvbWJpbmF0aW9ucyBvZiB2YWx1ZXM6CisKKwl4ID09IDIsIHkgPT0gMQorCXggPT0gMiwgeSA9PSAzCisJeCA9PSA0LCB5ID09IDEKKwl4ID09IDQsIHkgPT0gMworCisKK0Z1cnRoZXJtb3JlLCB0aGUgc3RvcmVzIGNvbW1pdHRlZCBieSBhIENQVSB0byB0aGUgbWVtb3J5IHN5c3RlbSBtYXkgbm90IGJlCitwZXJjZWl2ZWQgYnkgdGhlIGxvYWRzIG1hZGUgYnkgYW5vdGhlciBDUFUgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHN0b3JlcyB3ZXJlCitjb21taXR0ZWQuCisKKworQXMgYSBmdXJ0aGVyIGV4YW1wbGUsIGNvbnNpZGVyIHRoaXMgc2VxdWVuY2Ugb2YgZXZlbnRzOgorCisJQ1BVIDEJCUNQVSAyCisJPT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PQorCXsgQSA9PSAxLCBCID09IDIsIEMgPSAzLCBQID09ICZBLCBRID09ICZDIH0KKwlCID0gNDsJCVEgPSBQOworCVAgPSAmQgkJRCA9ICpROworCitUaGVyZSBpcyBhbiBvYnZpb3VzIGRhdGEgZGVwZW5kZW5jeSBoZXJlLCBhcyB0aGUgdmFsdWUgbG9hZGVkIGludG8gRCBkZXBlbmRzIG9uCit0aGUgYWRkcmVzcyByZXRyaWV2ZWQgZnJvbSBQIGJ5IENQVSAyLiAgQXQgdGhlIGVuZCBvZiB0aGUgc2VxdWVuY2UsIGFueSBvZiB0aGUKK2ZvbGxvd2luZyByZXN1bHRzIGFyZSBwb3NzaWJsZToKKworCShRID09ICZBKSBhbmQgKEQgPT0gMSkKKwkoUSA9PSAmQikgYW5kIChEID09IDIpCisJKFEgPT0gJkIpIGFuZCAoRCA9PSA0KQorCitOb3RlIHRoYXQgQ1BVIDIgd2lsbCBuZXZlciB0cnkgYW5kIGxvYWQgQyBpbnRvIEQgYmVjYXVzZSB0aGUgQ1BVIHdpbGwgbG9hZCBQCitpbnRvIFEgYmVmb3JlIGlzc3VpbmcgdGhlIGxvYWQgb2YgKlEuCisKKworREVWSUNFIE9QRVJBVElPTlMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1NvbWUgZGV2aWNlcyBwcmVzZW50IHRoZWlyIGNvbnRyb2wgaW50ZXJmYWNlcyBhcyBjb2xsZWN0aW9ucyBvZiBtZW1vcnkKK2xvY2F0aW9ucywgYnV0IHRoZSBvcmRlciBpbiB3aGljaCB0aGUgY29udHJvbCByZWdpc3RlcnMgYXJlIGFjY2Vzc2VkIGlzIHZlcnkKK2ltcG9ydGFudC4gIEZvciBpbnN0YW5jZSwgaW1hZ2luZSBhbiBldGhlcm5ldCBjYXJkIHdpdGggYSBzZXQgb2YgaW50ZXJuYWwKK3JlZ2lzdGVycyB0aGF0IGFyZSBhY2Nlc3NlZCB0aHJvdWdoIGFuIGFkZHJlc3MgcG9ydCByZWdpc3RlciAoQSkgYW5kIGEgZGF0YQorcG9ydCByZWdpc3RlciAoRCkuICBUbyByZWFkIGludGVybmFsIHJlZ2lzdGVyIDUsIHRoZSBmb2xsb3dpbmcgY29kZSBtaWdodCB0aGVuCitiZSB1c2VkOgorCisJKkEgPSA1OworCXggPSAqRDsKKworYnV0IHRoaXMgbWlnaHQgc2hvdyB1cCBhcyBlaXRoZXIgb2YgdGhlIGZvbGxvd2luZyB0d28gc2VxdWVuY2VzOgorCisJU1RPUkUgKkEgPSA1LCB4ID0gTE9BRCAqRAorCXggPSBMT0FEICpELCBTVE9SRSAqQSA9IDUKKwordGhlIHNlY29uZCBvZiB3aGljaCB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgcmVzdWx0IGluIGEgbWFsZnVuY3Rpb24sIHNpbmNlIGl0IHNldAordGhlIGFkZHJlc3MgX2FmdGVyXyBhdHRlbXB0aW5nIHRvIHJlYWQgdGhlIHJlZ2lzdGVyLgorCisKK0dVQVJBTlRFRVMKKy0tLS0tLS0tLS0KKworVGhlcmUgYXJlIHNvbWUgbWluaW1hbCBndWFyYW50ZWVzIHRoYXQgbWF5IGJlIGV4cGVjdGVkIG9mIGEgQ1BVOgorCisgKCopIE9uIGFueSBnaXZlbiBDUFUsIGRlcGVuZGVudCBtZW1vcnkgYWNjZXNzZXMgd2lsbCBiZSBpc3N1ZWQgaW4gb3JkZXIsIHdpdGgKKyAgICAgcmVzcGVjdCB0byBpdHNlbGYuICBUaGlzIG1lYW5zIHRoYXQgZm9yOgorCisJV1JJVEVfT05DRShRLCBQKTsgc21wX3JlYWRfYmFycmllcl9kZXBlbmRzKCk7IEQgPSBSRUFEX09OQ0UoKlEpOworCisgICAgIHRoZSBDUFUgd2lsbCBpc3N1ZSB0aGUgZm9sbG93aW5nIG1lbW9yeSBvcGVyYXRpb25zOgorCisJUSA9IExPQUQgUCwgRCA9IExPQUQgKlEKKworICAgICBhbmQgYWx3YXlzIGluIHRoYXQgb3JkZXIuICBPbiBtb3N0IHN5c3RlbXMsIHNtcF9yZWFkX2JhcnJpZXJfZGVwZW5kcygpCisgICAgIGRvZXMgbm90aGluZywgYnV0IGl0IGlzIHJlcXVpcmVkIGZvciBERUMgQWxwaGEuICBUaGUgUkVBRF9PTkNFKCkKKyAgICAgYW5kIFdSSVRFX09OQ0UoKSBhcmUgcmVxdWlyZWQgdG8gcHJldmVudCBjb21waWxlciBtaXNjaGllZi4gIFBsZWFzZQorICAgICBub3RlIHRoYXQgeW91IHNob3VsZCBub3JtYWxseSB1c2Ugc29tZXRoaW5nIGxpa2UgcmN1X2RlcmVmZXJlbmNlKCkKKyAgICAgaW5zdGVhZCBvZiBvcGVuLWNvZGluZyBzbXBfcmVhZF9iYXJyaWVyX2RlcGVuZHMoKS4KKworICgqKSBPdmVybGFwcGluZyBsb2FkcyBhbmQgc3RvcmVzIHdpdGhpbiBhIHBhcnRpY3VsYXIgQ1BVIHdpbGwgYXBwZWFyIHRvIGJlCisgICAgIG9yZGVyZWQgd2l0aGluIHRoYXQgQ1BVLiAgVGhpcyBtZWFucyB0aGF0IGZvcjoKKworCWEgPSBSRUFEX09OQ0UoKlgpOyBXUklURV9PTkNFKCpYLCBiKTsKKworICAgICB0aGUgQ1BVIHdpbGwgb25seSBpc3N1ZSB0aGUgZm9sbG93aW5nIHNlcXVlbmNlIG9mIG1lbW9yeSBvcGVyYXRpb25zOgorCisJYSA9IExPQUQgKlgsIFNUT1JFICpYID0gYgorCisgICAgIEFuZCBmb3I6CisKKwlXUklURV9PTkNFKCpYLCBjKTsgZCA9IFJFQURfT05DRSgqWCk7CisKKyAgICAgdGhlIENQVSB3aWxsIG9ubHkgaXNzdWU6CisKKwlTVE9SRSAqWCA9IGMsIGQgPSBMT0FEICpYCisKKyAgICAgKExvYWRzIGFuZCBzdG9yZXMgb3ZlcmxhcCBpZiB0aGV5IGFyZSB0YXJnZXRlZCBhdCBvdmVybGFwcGluZyBwaWVjZXMgb2YKKyAgICAgbWVtb3J5KS4KKworQW5kIHRoZXJlIGFyZSBhIG51bWJlciBvZiB0aGluZ3MgdGhhdCBfbXVzdF8gb3IgX211c3Rfbm90XyBiZSBhc3N1bWVkOgorCisgKCopIEl0IF9tdXN0X25vdF8gYmUgYXNzdW1lZCB0aGF0IHRoZSBjb21waWxlciB3aWxsIGRvIHdoYXQgeW91IHdhbnQKKyAgICAgd2l0aCBtZW1vcnkgcmVmZXJlbmNlcyB0aGF0IGFyZSBub3QgcHJvdGVjdGVkIGJ5IFJFQURfT05DRSgpIGFuZAorICAgICBXUklURV9PTkNFKCkuICBXaXRob3V0IHRoZW0sIHRoZSBjb21waWxlciBpcyB3aXRoaW4gaXRzIHJpZ2h0cyB0bworICAgICBkbyBhbGwgc29ydHMgb2YgImNyZWF0aXZlIiB0cmFuc2Zvcm1hdGlvbnMsIHdoaWNoIGFyZSBjb3ZlcmVkIGluCisgICAgIHRoZSBDb21waWxlciBCYXJyaWVyIHNlY3Rpb24uCisKKyAoKikgSXQgX211c3Rfbm90XyBiZSBhc3N1bWVkIHRoYXQgaW5kZXBlbmRlbnQgbG9hZHMgYW5kIHN0b3JlcyB3aWxsIGJlIGlzc3VlZAorICAgICBpbiB0aGUgb3JkZXIgZ2l2ZW4uICBUaGlzIG1lYW5zIHRoYXQgZm9yOgorCisJWCA9ICpBOyBZID0gKkI7ICpEID0gWjsKKworICAgICB3ZSBtYXkgZ2V0IGFueSBvZiB0aGUgZm9sbG93aW5nIHNlcXVlbmNlczoKKworCVggPSBMT0FEICpBLCAgWSA9IExPQUQgKkIsICBTVE9SRSAqRCA9IFoKKwlYID0gTE9BRCAqQSwgIFNUT1JFICpEID0gWiwgWSA9IExPQUQgKkIKKwlZID0gTE9BRCAqQiwgIFggPSBMT0FEICpBLCAgU1RPUkUgKkQgPSBaCisJWSA9IExPQUQgKkIsICBTVE9SRSAqRCA9IFosIFggPSBMT0FEICpBCisJU1RPUkUgKkQgPSBaLCBYID0gTE9BRCAqQSwgIFkgPSBMT0FEICpCCisJU1RPUkUgKkQgPSBaLCBZID0gTE9BRCAqQiwgIFggPSBMT0FEICpBCisKKyAoKikgSXQgX211c3RfIGJlIGFzc3VtZWQgdGhhdCBvdmVybGFwcGluZyBtZW1vcnkgYWNjZXNzZXMgbWF5IGJlIG1lcmdlZCBvcgorICAgICBkaXNjYXJkZWQuICBUaGlzIG1lYW5zIHRoYXQgZm9yOgorCisJWCA9ICpBOyBZID0gKihBICsgNCk7CisKKyAgICAgd2UgbWF5IGdldCBhbnkgb25lIG9mIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2VzOgorCisJWCA9IExPQUQgKkE7IFkgPSBMT0FEICooQSArIDQpOworCVkgPSBMT0FEICooQSArIDQpOyBYID0gTE9BRCAqQTsKKwl7WCwgWX0gPSBMT0FEIHsqQSwgKihBICsgNCkgfTsKKworICAgICBBbmQgZm9yOgorCisJKkEgPSBYOyAqKEEgKyA0KSA9IFk7CisKKyAgICAgd2UgbWF5IGdldCBhbnkgb2Y6CisKKwlTVE9SRSAqQSA9IFg7IFNUT1JFICooQSArIDQpID0gWTsKKwlTVE9SRSAqKEEgKyA0KSA9IFk7IFNUT1JFICpBID0gWDsKKwlTVE9SRSB7KkEsICooQSArIDQpIH0gPSB7WCwgWX07CisKK0FuZCB0aGVyZSBhcmUgYW50aS1ndWFyYW50ZWVzOgorCisgKCopIFRoZXNlIGd1YXJhbnRlZXMgZG8gbm90IGFwcGx5IHRvIGJpdGZpZWxkcywgYmVjYXVzZSBjb21waWxlcnMgb2Z0ZW4KKyAgICAgZ2VuZXJhdGUgY29kZSB0byBtb2RpZnkgdGhlc2UgdXNpbmcgbm9uLWF0b21pYyByZWFkLW1vZGlmeS13cml0ZQorICAgICBzZXF1ZW5jZXMuICBEbyBub3QgYXR0ZW1wdCB0byB1c2UgYml0ZmllbGRzIHRvIHN5bmNocm9uaXplIHBhcmFsbGVsCisgICAgIGFsZ29yaXRobXMuCisKKyAoKikgRXZlbiBpbiBjYXNlcyB3aGVyZSBiaXRmaWVsZHMgYXJlIHByb3RlY3RlZCBieSBsb2NrcywgYWxsIGZpZWxkcworICAgICBpbiBhIGdpdmVuIGJpdGZpZWxkIG11c3QgYmUgcHJvdGVjdGVkIGJ5IG9uZSBsb2NrLiAgSWYgdHdvIGZpZWxkcworICAgICBpbiBhIGdpdmVuIGJpdGZpZWxkIGFyZSBwcm90ZWN0ZWQgYnkgZGlmZmVyZW50IGxvY2tzLCB0aGUgY29tcGlsZXIncworICAgICBub24tYXRvbWljIHJlYWQtbW9kaWZ5LXdyaXRlIHNlcXVlbmNlcyBjYW4gY2F1c2UgYW4gdXBkYXRlIHRvIG9uZQorICAgICBmaWVsZCB0byBjb3JydXB0IHRoZSB2YWx1ZSBvZiBhbiBhZGphY2VudCBmaWVsZC4KKworICgqKSBUaGVzZSBndWFyYW50ZWVzIGFwcGx5IG9ubHkgdG8gcHJvcGVybHkgYWxpZ25lZCBhbmQgc2l6ZWQgc2NhbGFyCisgICAgIHZhcmlhYmxlcy4gICJQcm9wZXJseSBzaXplZCIgY3VycmVudGx5IG1lYW5zIHZhcmlhYmxlcyB0aGF0IGFyZQorICAgICB0aGUgc2FtZSBzaXplIGFzICJjaGFyIiwgInNob3J0IiwgImludCIgYW5kICJsb25nIi4gICJQcm9wZXJseQorICAgICBhbGlnbmVkIiBtZWFucyB0aGUgbmF0dXJhbCBhbGlnbm1lbnQsIHRodXMgbm8gY29uc3RyYWludHMgZm9yCisgICAgICJjaGFyIiwgdHdvLWJ5dGUgYWxpZ25tZW50IGZvciAic2hvcnQiLCBmb3VyLWJ5dGUgYWxpZ25tZW50IGZvcgorICAgICAiaW50IiwgYW5kIGVpdGhlciBmb3VyLWJ5dGUgb3IgZWlnaHQtYnl0ZSBhbGlnbm1lbnQgZm9yICJsb25nIiwKKyAgICAgb24gMzItYml0IGFuZCA2NC1iaXQgc3lzdGVtcywgcmVzcGVjdGl2ZWx5LiAgTm90ZSB0aGF0IHRoZXNlCisgICAgIGd1YXJhbnRlZXMgd2VyZSBpbnRyb2R1Y2VkIGludG8gdGhlIEMxMSBzdGFuZGFyZCwgc28gYmV3YXJlIHdoZW4KKyAgICAgdXNpbmcgb2xkZXIgcHJlLUMxMSBjb21waWxlcnMgKGZvciBleGFtcGxlLCBnY2MgNC42KS4gIFRoZSBwb3J0aW9uCisgICAgIG9mIHRoZSBzdGFuZGFyZCBjb250YWluaW5nIHRoaXMgZ3VhcmFudGVlIGlzIFNlY3Rpb24gMy4xNCwgd2hpY2gKKyAgICAgZGVmaW5lcyAibWVtb3J5IGxvY2F0aW9uIiBhcyBmb2xsb3dzOgorCisgICAgIAltZW1vcnkgbG9jYXRpb24KKwkJZWl0aGVyIGFuIG9iamVjdCBvZiBzY2FsYXIgdHlwZSwgb3IgYSBtYXhpbWFsIHNlcXVlbmNlCisJCW9mIGFkamFjZW50IGJpdC1maWVsZHMgYWxsIGhhdmluZyBub256ZXJvIHdpZHRoCisKKwkJTk9URSAxOiBUd28gdGhyZWFkcyBvZiBleGVjdXRpb24gY2FuIHVwZGF0ZSBhbmQgYWNjZXNzCisJCXNlcGFyYXRlIG1lbW9yeSBsb2NhdGlvbnMgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoCisJCWVhY2ggb3RoZXIuCisKKwkJTk9URSAyOiBBIGJpdC1maWVsZCBhbmQgYW4gYWRqYWNlbnQgbm9uLWJpdC1maWVsZCBtZW1iZXIKKwkJYXJlIGluIHNlcGFyYXRlIG1lbW9yeSBsb2NhdGlvbnMuIFRoZSBzYW1lIGFwcGxpZXMKKwkJdG8gdHdvIGJpdC1maWVsZHMsIGlmIG9uZSBpcyBkZWNsYXJlZCBpbnNpZGUgYSBuZXN0ZWQKKwkJc3RydWN0dXJlIGRlY2xhcmF0aW9uIGFuZCB0aGUgb3RoZXIgaXMgbm90LCBvciBpZiB0aGUgdHdvCisJCWFyZSBzZXBhcmF0ZWQgYnkgYSB6ZXJvLWxlbmd0aCBiaXQtZmllbGQgZGVjbGFyYXRpb24sCisJCW9yIGlmIHRoZXkgYXJlIHNlcGFyYXRlZCBieSBhIG5vbi1iaXQtZmllbGQgbWVtYmVyCisJCWRlY2xhcmF0aW9uLiBJdCBpcyBub3Qgc2FmZSB0byBjb25jdXJyZW50bHkgdXBkYXRlIHR3bworCQliaXQtZmllbGRzIGluIHRoZSBzYW1lIHN0cnVjdHVyZSBpZiBhbGwgbWVtYmVycyBkZWNsYXJlZAorCQliZXR3ZWVuIHRoZW0gYXJlIGFsc28gYml0LWZpZWxkcywgbm8gbWF0dGVyIHdoYXQgdGhlCisJCXNpemVzIG9mIHRob3NlIGludGVydmVuaW5nIGJpdC1maWVsZHMgaGFwcGVuIHRvIGJlLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT0KK1dIQVQgQVJFIE1FTU9SWSBCQVJSSUVSUz8KKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQXMgY2FuIGJlIHNlZW4gYWJvdmUsIGluZGVwZW5kZW50IG1lbW9yeSBvcGVyYXRpb25zIGFyZSBlZmZlY3RpdmVseSBwZXJmb3JtZWQKK2luIHJhbmRvbSBvcmRlciwgYnV0IHRoaXMgY2FuIGJlIGEgcHJvYmxlbSBmb3IgQ1BVLUNQVSBpbnRlcmFjdGlvbiBhbmQgZm9yIEkvTy4KK1doYXQgaXMgcmVxdWlyZWQgaXMgc29tZSB3YXkgb2YgaW50ZXJ2ZW5pbmcgdG8gaW5zdHJ1Y3QgdGhlIGNvbXBpbGVyIGFuZCB0aGUKK0NQVSB0byByZXN0cmljdCB0aGUgb3JkZXIuCisKK01lbW9yeSBiYXJyaWVycyBhcmUgc3VjaCBpbnRlcnZlbnRpb25zLiAgVGhleSBpbXBvc2UgYSBwZXJjZWl2ZWQgcGFydGlhbAorb3JkZXJpbmcgb3ZlciB0aGUgbWVtb3J5IG9wZXJhdGlvbnMgb24gZWl0aGVyIHNpZGUgb2YgdGhlIGJhcnJpZXIuCisKK1N1Y2ggZW5mb3JjZW1lbnQgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhlIENQVXMgYW5kIG90aGVyIGRldmljZXMgaW4gYSBzeXN0ZW0KK2NhbiB1c2UgYSB2YXJpZXR5IG9mIHRyaWNrcyB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLCBpbmNsdWRpbmcgcmVvcmRlcmluZywKK2RlZmVycmFsIGFuZCBjb21iaW5hdGlvbiBvZiBtZW1vcnkgb3BlcmF0aW9uczsgc3BlY3VsYXRpdmUgbG9hZHM7IHNwZWN1bGF0aXZlCiticmFuY2ggcHJlZGljdGlvbiBhbmQgdmFyaW91cyB0eXBlcyBvZiBjYWNoaW5nLiAgTWVtb3J5IGJhcnJpZXJzIGFyZSB1c2VkIHRvCitvdmVycmlkZSBvciBzdXBwcmVzcyB0aGVzZSB0cmlja3MsIGFsbG93aW5nIHRoZSBjb2RlIHRvIHNhbmVseSBjb250cm9sIHRoZQoraW50ZXJhY3Rpb24gb2YgbXVsdGlwbGUgQ1BVcyBhbmQvb3IgZGV2aWNlcy4KKworCitWQVJJRVRJRVMgT0YgTUVNT1JZIEJBUlJJRVIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitNZW1vcnkgYmFycmllcnMgY29tZSBpbiBmb3VyIGJhc2ljIHZhcmlldGllczoKKworICgxKSBXcml0ZSAob3Igc3RvcmUpIG1lbW9yeSBiYXJyaWVycy4KKworICAgICBBIHdyaXRlIG1lbW9yeSBiYXJyaWVyIGdpdmVzIGEgZ3VhcmFudGVlIHRoYXQgYWxsIHRoZSBTVE9SRSBvcGVyYXRpb25zCisgICAgIHNwZWNpZmllZCBiZWZvcmUgdGhlIGJhcnJpZXIgd2lsbCBhcHBlYXIgdG8gaGFwcGVuIGJlZm9yZSBhbGwgdGhlIFNUT1JFCisgICAgIG9wZXJhdGlvbnMgc3BlY2lmaWVkIGFmdGVyIHRoZSBiYXJyaWVyIHdpdGggcmVzcGVjdCB0byB0aGUgb3RoZXIKKyAgICAgY29tcG9uZW50cyBvZiB0aGUgc3lzdGVtLgorCisgICAgIEEgd3JpdGUgYmFycmllciBpcyBhIHBhcnRpYWwgb3JkZXJpbmcgb24gc3RvcmVzIG9ubHk7IGl0IGlzIG5vdCByZXF1aXJlZAorICAgICB0byBoYXZlIGFueSBlZmZlY3Qgb24gbG9hZHMuCisKKyAgICAgQSBDUFUgY2FuIGJlIHZpZXdlZCBhcyBjb21taXR0aW5nIGEgc2VxdWVuY2Ugb2Ygc3RvcmUgb3BlcmF0aW9ucyB0byB0aGUKKyAgICAgbWVtb3J5IHN5c3RlbSBhcyB0aW1lIHByb2dyZXNzZXMuICBBbGwgc3RvcmVzIGJlZm9yZSBhIHdyaXRlIGJhcnJpZXIgd2lsbAorICAgICBvY2N1ciBpbiB0aGUgc2VxdWVuY2UgX2JlZm9yZV8gYWxsIHRoZSBzdG9yZXMgYWZ0ZXIgdGhlIHdyaXRlIGJhcnJpZXIuCisKKyAgICAgWyFdIE5vdGUgdGhhdCB3cml0ZSBiYXJyaWVycyBzaG91bGQgbm9ybWFsbHkgYmUgcGFpcmVkIHdpdGggcmVhZCBvciBkYXRhCisgICAgIGRlcGVuZGVuY3kgYmFycmllcnM7IHNlZSB0aGUgIlNNUCBiYXJyaWVyIHBhaXJpbmciIHN1YnNlY3Rpb24uCisKKworICgyKSBEYXRhIGRlcGVuZGVuY3kgYmFycmllcnMuCisKKyAgICAgQSBkYXRhIGRlcGVuZGVuY3kgYmFycmllciBpcyBhIHdlYWtlciBmb3JtIG9mIHJlYWQgYmFycmllci4gIEluIHRoZSBjYXNlCisgICAgIHdoZXJlIHR3byBsb2FkcyBhcmUgcGVyZm9ybWVkIHN1Y2ggdGhhdCB0aGUgc2Vjb25kIGRlcGVuZHMgb24gdGhlIHJlc3VsdAorICAgICBvZiB0aGUgZmlyc3QgKGVnOiB0aGUgZmlyc3QgbG9hZCByZXRyaWV2ZXMgdGhlIGFkZHJlc3MgdG8gd2hpY2ggdGhlIHNlY29uZAorICAgICBsb2FkIHdpbGwgYmUgZGlyZWN0ZWQpLCBhIGRhdGEgZGVwZW5kZW5jeSBiYXJyaWVyIHdvdWxkIGJlIHJlcXVpcmVkIHRvCisgICAgIG1ha2Ugc3VyZSB0aGF0IHRoZSB0YXJnZXQgb2YgdGhlIHNlY29uZCBsb2FkIGlzIHVwZGF0ZWQgYmVmb3JlIHRoZSBhZGRyZXNzCisgICAgIG9idGFpbmVkIGJ5IHRoZSBmaXJzdCBsb2FkIGlzIGFjY2Vzc2VkLgorCisgICAgIEEgZGF0YSBkZXBlbmRlbmN5IGJhcnJpZXIgaXMgYSBwYXJ0aWFsIG9yZGVyaW5nIG9uIGludGVyZGVwZW5kZW50IGxvYWRzCisgICAgIG9ubHk7IGl0IGlzIG5vdCByZXF1aXJlZCB0byBoYXZlIGFueSBlZmZlY3Qgb24gc3RvcmVzLCBpbmRlcGVuZGVudCBsb2FkcworICAgICBvciBvdmVybGFwcGluZyBsb2Fkcy4KKworICAgICBBcyBtZW50aW9uZWQgaW4gKDEpLCB0aGUgb3RoZXIgQ1BVcyBpbiB0aGUgc3lzdGVtIGNhbiBiZSB2aWV3ZWQgYXMKKyAgICAgY29tbWl0dGluZyBzZXF1ZW5jZXMgb2Ygc3RvcmVzIHRvIHRoZSBtZW1vcnkgc3lzdGVtIHRoYXQgdGhlIENQVSBiZWluZworICAgICBjb25zaWRlcmVkIGNhbiB0aGVuIHBlcmNlaXZlLiAgQSBkYXRhIGRlcGVuZGVuY3kgYmFycmllciBpc3N1ZWQgYnkgdGhlIENQVQorICAgICB1bmRlciBjb25zaWRlcmF0aW9uIGd1YXJhbnRlZXMgdGhhdCBmb3IgYW55IGxvYWQgcHJlY2VkaW5nIGl0LCBpZiB0aGF0CisgICAgIGxvYWQgdG91Y2hlcyBvbmUgb2YgYSBzZXF1ZW5jZSBvZiBzdG9yZXMgZnJvbSBhbm90aGVyIENQVSwgdGhlbiBieSB0aGUKKyAgICAgdGltZSB0aGUgYmFycmllciBjb21wbGV0ZXMsIHRoZSBlZmZlY3RzIG9mIGFsbCB0aGUgc3RvcmVzIHByaW9yIHRvIHRoYXQKKyAgICAgdG91Y2hlZCBieSB0aGUgbG9hZCB3aWxsIGJlIHBlcmNlcHRpYmxlIHRvIGFueSBsb2FkcyBpc3N1ZWQgYWZ0ZXIgdGhlIGRhdGEKKyAgICAgZGVwZW5kZW5jeSBiYXJyaWVyLgorCisgICAgIFNlZSB0aGUgIkV4YW1wbGVzIG9mIG1lbW9yeSBiYXJyaWVyIHNlcXVlbmNlcyIgc3Vic2VjdGlvbiBmb3IgZGlhZ3JhbXMKKyAgICAgc2hvd2luZyB0aGUgb3JkZXJpbmcgY29uc3RyYWludHMuCisKKyAgICAgWyFdIE5vdGUgdGhhdCB0aGUgZmlyc3QgbG9hZCByZWFsbHkgaGFzIHRvIGhhdmUgYSBfZGF0YV8gZGVwZW5kZW5jeSBhbmQKKyAgICAgbm90IGEgY29udHJvbCBkZXBlbmRlbmN5LiAgSWYgdGhlIGFkZHJlc3MgZm9yIHRoZSBzZWNvbmQgbG9hZCBpcyBkZXBlbmRlbnQKKyAgICAgb24gdGhlIGZpcnN0IGxvYWQsIGJ1dCB0aGUgZGVwZW5kZW5jeSBpcyB0aHJvdWdoIGEgY29uZGl0aW9uYWwgcmF0aGVyIHRoYW4KKyAgICAgYWN0dWFsbHkgbG9hZGluZyB0aGUgYWRkcmVzcyBpdHNlbGYsIHRoZW4gaXQncyBhIF9jb250cm9sXyBkZXBlbmRlbmN5IGFuZAorICAgICBhIGZ1bGwgcmVhZCBiYXJyaWVyIG9yIGJldHRlciBpcyByZXF1aXJlZC4gIFNlZSB0aGUgIkNvbnRyb2wgZGVwZW5kZW5jaWVzIgorICAgICBzdWJzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisgICAgIFshXSBOb3RlIHRoYXQgZGF0YSBkZXBlbmRlbmN5IGJhcnJpZXJzIHNob3VsZCBub3JtYWxseSBiZSBwYWlyZWQgd2l0aAorICAgICB3cml0ZSBiYXJyaWVyczsgc2VlIHRoZSAiU01QIGJhcnJpZXIgcGFpcmluZyIgc3Vic2VjdGlvbi4KKworCisgKDMpIFJlYWQgKG9yIGxvYWQpIG1lbW9yeSBiYXJyaWVycy4KKworICAgICBBIHJlYWQgYmFycmllciBpcyBhIGRhdGEgZGVwZW5kZW5jeSBiYXJyaWVyIHBsdXMgYSBndWFyYW50ZWUgdGhhdCBhbGwgdGhlCisgICAgIExPQUQgb3BlcmF0aW9ucyBzcGVjaWZpZWQgYmVmb3JlIHRoZSBiYXJyaWVyIHdpbGwgYXBwZWFyIHRvIGhhcHBlbiBiZWZvcmUKKyAgICAgYWxsIHRoZSBMT0FEIG9wZXJhdGlvbnMgc3BlY2lmaWVkIGFmdGVyIHRoZSBiYXJyaWVyIHdpdGggcmVzcGVjdCB0byB0aGUKKyAgICAgb3RoZXIgY29tcG9uZW50cyBvZiB0aGUgc3lzdGVtLgorCisgICAgIEEgcmVhZCBiYXJyaWVyIGlzIGEgcGFydGlhbCBvcmRlcmluZyBvbiBsb2FkcyBvbmx5OyBpdCBpcyBub3QgcmVxdWlyZWQgdG8KKyAgICAgaGF2ZSBhbnkgZWZmZWN0IG9uIHN0b3Jlcy4KKworICAgICBSZWFkIG1lbW9yeSBiYXJyaWVycyBpbXBseSBkYXRhIGRlcGVuZGVuY3kgYmFycmllcnMsIGFuZCBzbyBjYW4gc3Vic3RpdHV0ZQorICAgICBmb3IgdGhlbS4KKworICAgICBbIV0gTm90ZSB0aGF0IHJlYWQgYmFycmllcnMgc2hvdWxkIG5vcm1hbGx5IGJlIHBhaXJlZCB3aXRoIHdyaXRlIGJhcnJpZXJzOworICAgICBzZWUgdGhlICJTTVAgYmFycmllciBwYWlyaW5nIiBzdWJzZWN0aW9uLgorCisKKyAoNCkgR2VuZXJhbCBtZW1vcnkgYmFycmllcnMuCisKKyAgICAgQSBnZW5lcmFsIG1lbW9yeSBiYXJyaWVyIGdpdmVzIGEgZ3VhcmFudGVlIHRoYXQgYWxsIHRoZSBMT0FEIGFuZCBTVE9SRQorICAgICBvcGVyYXRpb25zIHNwZWNpZmllZCBiZWZvcmUgdGhlIGJhcnJpZXIgd2lsbCBhcHBlYXIgdG8gaGFwcGVuIGJlZm9yZSBhbGwKKyAgICAgdGhlIExPQUQgYW5kIFNUT1JFIG9wZXJhdGlvbnMgc3BlY2lmaWVkIGFmdGVyIHRoZSBiYXJyaWVyIHdpdGggcmVzcGVjdCB0bworICAgICB0aGUgb3RoZXIgY29tcG9uZW50cyBvZiB0aGUgc3lzdGVtLgorCisgICAgIEEgZ2VuZXJhbCBtZW1vcnkgYmFycmllciBpcyBhIHBhcnRpYWwgb3JkZXJpbmcgb3ZlciBib3RoIGxvYWRzIGFuZCBzdG9yZXMuCisKKyAgICAgR2VuZXJhbCBtZW1vcnkgYmFycmllcnMgaW1wbHkgYm90aCByZWFkIGFuZCB3cml0ZSBtZW1vcnkgYmFycmllcnMsIGFuZCBzbworICAgICBjYW4gc3Vic3RpdHV0ZSBmb3IgZWl0aGVyLgorCisKK0FuZCBhIGNvdXBsZSBvZiBpbXBsaWNpdCB2YXJpZXRpZXM6CisKKyAoNSkgQUNRVUlSRSBvcGVyYXRpb25zLgorCisgICAgIFRoaXMgYWN0cyBhcyBhIG9uZS13YXkgcGVybWVhYmxlIGJhcnJpZXIuICBJdCBndWFyYW50ZWVzIHRoYXQgYWxsIG1lbW9yeQorICAgICBvcGVyYXRpb25zIGFmdGVyIHRoZSBBQ1FVSVJFIG9wZXJhdGlvbiB3aWxsIGFwcGVhciB0byBoYXBwZW4gYWZ0ZXIgdGhlCisgICAgIEFDUVVJUkUgb3BlcmF0aW9uIHdpdGggcmVzcGVjdCB0byB0aGUgb3RoZXIgY29tcG9uZW50cyBvZiB0aGUgc3lzdGVtLgorICAgICBBQ1FVSVJFIG9wZXJhdGlvbnMgaW5jbHVkZSBMT0NLIG9wZXJhdGlvbnMgYW5kIHNtcF9sb2FkX2FjcXVpcmUoKQorICAgICBvcGVyYXRpb25zLgorCisgICAgIE1lbW9yeSBvcGVyYXRpb25zIHRoYXQgb2NjdXIgYmVmb3JlIGFuIEFDUVVJUkUgb3BlcmF0aW9uIG1heSBhcHBlYXIgdG8KKyAgICAgaGFwcGVuIGFmdGVyIGl0IGNvbXBsZXRlcy4KKworICAgICBBbiBBQ1FVSVJFIG9wZXJhdGlvbiBzaG91bGQgYWxtb3N0IGFsd2F5cyBiZSBwYWlyZWQgd2l0aCBhIFJFTEVBU0UKKyAgICAgb3BlcmF0aW9uLgorCisKKyAoNikgUkVMRUFTRSBvcGVyYXRpb25zLgorCisgICAgIFRoaXMgYWxzbyBhY3RzIGFzIGEgb25lLXdheSBwZXJtZWFibGUgYmFycmllci4gIEl0IGd1YXJhbnRlZXMgdGhhdCBhbGwKKyAgICAgbWVtb3J5IG9wZXJhdGlvbnMgYmVmb3JlIHRoZSBSRUxFQVNFIG9wZXJhdGlvbiB3aWxsIGFwcGVhciB0byBoYXBwZW4KKyAgICAgYmVmb3JlIHRoZSBSRUxFQVNFIG9wZXJhdGlvbiB3aXRoIHJlc3BlY3QgdG8gdGhlIG90aGVyIGNvbXBvbmVudHMgb2YgdGhlCisgICAgIHN5c3RlbS4gUkVMRUFTRSBvcGVyYXRpb25zIGluY2x1ZGUgVU5MT0NLIG9wZXJhdGlvbnMgYW5kCisgICAgIHNtcF9zdG9yZV9yZWxlYXNlKCkgb3BlcmF0aW9ucy4KKworICAgICBNZW1vcnkgb3BlcmF0aW9ucyB0aGF0IG9jY3VyIGFmdGVyIGEgUkVMRUFTRSBvcGVyYXRpb24gbWF5IGFwcGVhciB0bworICAgICBoYXBwZW4gYmVmb3JlIGl0IGNvbXBsZXRlcy4KKworICAgICBUaGUgdXNlIG9mIEFDUVVJUkUgYW5kIFJFTEVBU0Ugb3BlcmF0aW9ucyBnZW5lcmFsbHkgcHJlY2x1ZGVzIHRoZSBuZWVkCisgICAgIGZvciBvdGhlciBzb3J0cyBvZiBtZW1vcnkgYmFycmllciAoYnV0IG5vdGUgdGhlIGV4Y2VwdGlvbnMgbWVudGlvbmVkIGluCisgICAgIHRoZSBzdWJzZWN0aW9uICJNTUlPIHdyaXRlIGJhcnJpZXIiKS4gIEluIGFkZGl0aW9uLCBhIFJFTEVBU0UrQUNRVUlSRQorICAgICBwYWlyIGlzIC1ub3QtIGd1YXJhbnRlZWQgdG8gYWN0IGFzIGEgZnVsbCBtZW1vcnkgYmFycmllci4gIEhvd2V2ZXIsIGFmdGVyCisgICAgIGFuIEFDUVVJUkUgb24gYSBnaXZlbiB2YXJpYWJsZSwgYWxsIG1lbW9yeSBhY2Nlc3NlcyBwcmVjZWRpbmcgYW55IHByaW9yCisgICAgIFJFTEVBU0Ugb24gdGhhdCBzYW1lIHZhcmlhYmxlIGFyZSBndWFyYW50ZWVkIHRvIGJlIHZpc2libGUuICBJbiBvdGhlcgorICAgICB3b3Jkcywgd2l0aGluIGEgZ2l2ZW4gdmFyaWFibGUncyBjcml0aWNhbCBzZWN0aW9uLCBhbGwgYWNjZXNzZXMgb2YgYWxsCisgICAgIHByZXZpb3VzIGNyaXRpY2FsIHNlY3Rpb25zIGZvciB0aGF0IHZhcmlhYmxlIGFyZSBndWFyYW50ZWVkIHRvIGhhdmUKKyAgICAgY29tcGxldGVkLgorCisgICAgIFRoaXMgbWVhbnMgdGhhdCBBQ1FVSVJFIGFjdHMgYXMgYSBtaW5pbWFsICJhY3F1aXJlIiBvcGVyYXRpb24gYW5kCisgICAgIFJFTEVBU0UgYWN0cyBhcyBhIG1pbmltYWwgInJlbGVhc2UiIG9wZXJhdGlvbi4KKworCitNZW1vcnkgYmFycmllcnMgYXJlIG9ubHkgcmVxdWlyZWQgd2hlcmUgdGhlcmUncyBhIHBvc3NpYmlsaXR5IG9mIGludGVyYWN0aW9uCitiZXR3ZWVuIHR3byBDUFVzIG9yIGJldHdlZW4gYSBDUFUgYW5kIGEgZGV2aWNlLiAgSWYgaXQgY2FuIGJlIGd1YXJhbnRlZWQgdGhhdAordGhlcmUgd29uJ3QgYmUgYW55IHN1Y2ggaW50ZXJhY3Rpb24gaW4gYW55IHBhcnRpY3VsYXIgcGllY2Ugb2YgY29kZSwgdGhlbgorbWVtb3J5IGJhcnJpZXJzIGFyZSB1bm5lY2Vzc2FyeSBpbiB0aGF0IHBpZWNlIG9mIGNvZGUuCisKKworTm90ZSB0aGF0IHRoZXNlIGFyZSB0aGUgX21pbmltdW1fIGd1YXJhbnRlZXMuICBEaWZmZXJlbnQgYXJjaGl0ZWN0dXJlcyBtYXkgZ2l2ZQorbW9yZSBzdWJzdGFudGlhbCBndWFyYW50ZWVzLCBidXQgdGhleSBtYXkgX25vdF8gYmUgcmVsaWVkIHVwb24gb3V0c2lkZSBvZiBhcmNoCitzcGVjaWZpYyBjb2RlLgorCisKK1dIQVQgTUFZIE5PVCBCRSBBU1NVTUVEIEFCT1VUIE1FTU9SWSBCQVJSSUVSUz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgYXJlIGNlcnRhaW4gdGhpbmdzIHRoYXQgdGhlIExpbnV4IGtlcm5lbCBtZW1vcnkgYmFycmllcnMgZG8gbm90IGd1YXJhbnRlZToKKworICgqKSBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBhbnkgb2YgdGhlIG1lbW9yeSBhY2Nlc3NlcyBzcGVjaWZpZWQgYmVmb3JlIGEKKyAgICAgbWVtb3J5IGJhcnJpZXIgd2lsbCBiZSBfY29tcGxldGVfIGJ5IHRoZSBjb21wbGV0aW9uIG9mIGEgbWVtb3J5IGJhcnJpZXIKKyAgICAgaW5zdHJ1Y3Rpb247IHRoZSBiYXJyaWVyIGNhbiBiZSBjb25zaWRlcmVkIHRvIGRyYXcgYSBsaW5lIGluIHRoYXQgQ1BVJ3MKKyAgICAgYWNjZXNzIHF1ZXVlIHRoYXQgYWNjZXNzZXMgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUgbWF5IG5vdCBjcm9zcy4KKworICgqKSBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBpc3N1aW5nIGEgbWVtb3J5IGJhcnJpZXIgb24gb25lIENQVSB3aWxsIGhhdmUKKyAgICAgYW55IGRpcmVjdCBlZmZlY3Qgb24gYW5vdGhlciBDUFUgb3IgYW55IG90aGVyIGhhcmR3YXJlIGluIHRoZSBzeXN0ZW0uICBUaGUKKyAgICAgaW5kaXJlY3QgZWZmZWN0IHdpbGwgYmUgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBzZWNvbmQgQ1BVIHNlZXMgdGhlIGVmZmVjdHMKKyAgICAgb2YgdGhlIGZpcnN0IENQVSdzIGFjY2Vzc2VzIG9jY3VyLCBidXQgc2VlIHRoZSBuZXh0IHBvaW50OgorCisgKCopIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGEgQ1BVIHdpbGwgc2VlIHRoZSBjb3JyZWN0IG9yZGVyIG9mIGVmZmVjdHMKKyAgICAgZnJvbSBhIHNlY29uZCBDUFUncyBhY2Nlc3NlcywgZXZlbiBfaWZfIHRoZSBzZWNvbmQgQ1BVIHVzZXMgYSBtZW1vcnkKKyAgICAgYmFycmllciwgdW5sZXNzIHRoZSBmaXJzdCBDUFUgX2Fsc29fIHVzZXMgYSBtYXRjaGluZyBtZW1vcnkgYmFycmllciAoc2VlCisgICAgIHRoZSBzdWJzZWN0aW9uIG9uICJTTVAgQmFycmllciBQYWlyaW5nIikuCisKKyAoKikgVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgc29tZSBpbnRlcnZlbmluZyBwaWVjZSBvZiBvZmYtdGhlLUNQVQorICAgICBoYXJkd2FyZVsqXSB3aWxsIG5vdCByZW9yZGVyIHRoZSBtZW1vcnkgYWNjZXNzZXMuICBDUFUgY2FjaGUgY29oZXJlbmN5CisgICAgIG1lY2hhbmlzbXMgc2hvdWxkIHByb3BhZ2F0ZSB0aGUgaW5kaXJlY3QgZWZmZWN0cyBvZiBhIG1lbW9yeSBiYXJyaWVyCisgICAgIGJldHdlZW4gQ1BVcywgYnV0IG1pZ2h0IG5vdCBkbyBzbyBpbiBvcmRlci4KKworCVsqXSBGb3IgaW5mb3JtYXRpb24gb24gYnVzIG1hc3RlcmluZyBETUEgYW5kIGNvaGVyZW5jeSBwbGVhc2UgcmVhZDoKKworCSAgICBEb2N1bWVudGF0aW9uL1BDSS9wY2kudHh0CisJICAgIERvY3VtZW50YXRpb24vRE1BLUFQSS1IT1dUTy50eHQKKwkgICAgRG9jdW1lbnRhdGlvbi9ETUEtQVBJLnR4dAorCisKK0RBVEEgREVQRU5ERU5DWSBCQVJSSUVSUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSB1c2FnZSByZXF1aXJlbWVudHMgb2YgZGF0YSBkZXBlbmRlbmN5IGJhcnJpZXJzIGFyZSBhIGxpdHRsZSBzdWJ0bGUsIGFuZAoraXQncyBub3QgYWx3YXlzIG9idmlvdXMgdGhhdCB0aGV5J3JlIG5lZWRlZC4gIFRvIGlsbHVzdHJhdGUsIGNvbnNpZGVyIHRoZQorZm9sbG93aW5nIHNlcXVlbmNlIG9mIGV2ZW50czoKKworCUNQVSAxCQkgICAgICBDUFUgMgorCT09PT09PT09PT09PT09PQkgICAgICA9PT09PT09PT09PT09PT0KKwl7IEEgPT0gMSwgQiA9PSAyLCBDID0gMywgUCA9PSAmQSwgUSA9PSAmQyB9CisJQiA9IDQ7CisJPHdyaXRlIGJhcnJpZXI+CisJV1JJVEVfT05DRShQLCAmQikKKwkJCSAgICAgIFEgPSBSRUFEX09OQ0UoUCk7CisJCQkgICAgICBEID0gKlE7CisKK1RoZXJlJ3MgYSBjbGVhciBkYXRhIGRlcGVuZGVuY3kgaGVyZSwgYW5kIGl0IHdvdWxkIHNlZW0gdGhhdCBieSB0aGUgZW5kIG9mIHRoZQorc2VxdWVuY2UsIFEgbXVzdCBiZSBlaXRoZXIgJkEgb3IgJkIsIGFuZCB0aGF0OgorCisJKFEgPT0gJkEpIGltcGxpZXMgKEQgPT0gMSkKKwkoUSA9PSAmQikgaW1wbGllcyAoRCA9PSA0KQorCitCdXQhICBDUFUgMidzIHBlcmNlcHRpb24gb2YgUCBtYXkgYmUgdXBkYXRlZCBfYmVmb3JlXyBpdHMgcGVyY2VwdGlvbiBvZiBCLCB0aHVzCitsZWFkaW5nIHRvIHRoZSBmb2xsb3dpbmcgc2l0dWF0aW9uOgorCisJKFEgPT0gJkIpIGFuZCAoRCA9PSAyKSA/Pz8/CisKK1doaWxzdCB0aGlzIG1heSBzZWVtIGxpa2UgYSBmYWlsdXJlIG9mIGNvaGVyZW5jeSBvciBjYXVzYWxpdHkgbWFpbnRlbmFuY2UsIGl0Citpc24ndCwgYW5kIHRoaXMgYmVoYXZpb3VyIGNhbiBiZSBvYnNlcnZlZCBvbiBjZXJ0YWluIHJlYWwgQ1BVcyAoc3VjaCBhcyB0aGUgREVDCitBbHBoYSkuCisKK1RvIGRlYWwgd2l0aCB0aGlzLCBhIGRhdGEgZGVwZW5kZW5jeSBiYXJyaWVyIG9yIGJldHRlciBtdXN0IGJlIGluc2VydGVkCitiZXR3ZWVuIHRoZSBhZGRyZXNzIGxvYWQgYW5kIHRoZSBkYXRhIGxvYWQ6CisKKwlDUFUgMQkJICAgICAgQ1BVIDIKKwk9PT09PT09PT09PT09PT0JICAgICAgPT09PT09PT09PT09PT09CisJeyBBID09IDEsIEIgPT0gMiwgQyA9IDMsIFAgPT0gJkEsIFEgPT0gJkMgfQorCUIgPSA0OworCTx3cml0ZSBiYXJyaWVyPgorCVdSSVRFX09OQ0UoUCwgJkIpOworCQkJICAgICAgUSA9IFJFQURfT05DRShQKTsKKwkJCSAgICAgIDxkYXRhIGRlcGVuZGVuY3kgYmFycmllcj4KKwkJCSAgICAgIEQgPSAqUTsKKworVGhpcyBlbmZvcmNlcyB0aGUgb2NjdXJyZW5jZSBvZiBvbmUgb2YgdGhlIHR3byBpbXBsaWNhdGlvbnMsIGFuZCBwcmV2ZW50cyB0aGUKK3RoaXJkIHBvc3NpYmlsaXR5IGZyb20gYXJpc2luZy4KKworWyFdIE5vdGUgdGhhdCB0aGlzIGV4dHJlbWVseSBjb3VudGVyaW50dWl0aXZlIHNpdHVhdGlvbiBhcmlzZXMgbW9zdCBlYXNpbHkgb24KK21hY2hpbmVzIHdpdGggc3BsaXQgY2FjaGVzLCBzbyB0aGF0LCBmb3IgZXhhbXBsZSwgb25lIGNhY2hlIGJhbmsgcHJvY2Vzc2VzCitldmVuLW51bWJlcmVkIGNhY2hlIGxpbmVzIGFuZCB0aGUgb3RoZXIgYmFuayBwcm9jZXNzZXMgb2RkLW51bWJlcmVkIGNhY2hlCitsaW5lcy4gIFRoZSBwb2ludGVyIFAgbWlnaHQgYmUgc3RvcmVkIGluIGFuIG9kZC1udW1iZXJlZCBjYWNoZSBsaW5lLCBhbmQgdGhlCit2YXJpYWJsZSBCIG1pZ2h0IGJlIHN0b3JlZCBpbiBhbiBldmVuLW51bWJlcmVkIGNhY2hlIGxpbmUuICBUaGVuLCBpZiB0aGUKK2V2ZW4tbnVtYmVyZWQgYmFuayBvZiB0aGUgcmVhZGluZyBDUFUncyBjYWNoZSBpcyBleHRyZW1lbHkgYnVzeSB3aGlsZSB0aGUKK29kZC1udW1iZXJlZCBiYW5rIGlzIGlkbGUsIG9uZSBjYW4gc2VlIHRoZSBuZXcgdmFsdWUgb2YgdGhlIHBvaW50ZXIgUCAoJkIpLAorYnV0IHRoZSBvbGQgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIEIgKDIpLgorCisKK0Fub3RoZXIgZXhhbXBsZSBvZiB3aGVyZSBkYXRhIGRlcGVuZGVuY3kgYmFycmllcnMgbWlnaHQgYmUgcmVxdWlyZWQgaXMgd2hlcmUgYQorbnVtYmVyIGlzIHJlYWQgZnJvbSBtZW1vcnkgYW5kIHRoZW4gdXNlZCB0byBjYWxjdWxhdGUgdGhlIGluZGV4IGZvciBhbiBhcnJheQorYWNjZXNzOgorCisJQ1BVIDEJCSAgICAgIENQVSAyCisJPT09PT09PT09PT09PT09CSAgICAgID09PT09PT09PT09PT09PQorCXsgTVswXSA9PSAxLCBNWzFdID09IDIsIE1bM10gPSAzLCBQID09IDAsIFEgPT0gMyB9CisJTVsxXSA9IDQ7CisJPHdyaXRlIGJhcnJpZXI+CisJV1JJVEVfT05DRShQLCAxKTsKKwkJCSAgICAgIFEgPSBSRUFEX09OQ0UoUCk7CisJCQkgICAgICA8ZGF0YSBkZXBlbmRlbmN5IGJhcnJpZXI+CisJCQkgICAgICBEID0gTVtRXTsKKworCitUaGUgZGF0YSBkZXBlbmRlbmN5IGJhcnJpZXIgaXMgdmVyeSBpbXBvcnRhbnQgdG8gdGhlIFJDVSBzeXN0ZW0sCitmb3IgZXhhbXBsZS4gIFNlZSByY3VfYXNzaWduX3BvaW50ZXIoKSBhbmQgcmN1X2RlcmVmZXJlbmNlKCkgaW4KK2luY2x1ZGUvbGludXgvcmN1cGRhdGUuaC4gIFRoaXMgcGVybWl0cyB0aGUgY3VycmVudCB0YXJnZXQgb2YgYW4gUkNVJ2QKK3BvaW50ZXIgdG8gYmUgcmVwbGFjZWQgd2l0aCBhIG5ldyBtb2RpZmllZCB0YXJnZXQsIHdpdGhvdXQgdGhlIHJlcGxhY2VtZW50Cit0YXJnZXQgYXBwZWFyaW5nIHRvIGJlIGluY29tcGxldGVseSBpbml0aWFsaXNlZC4KKworU2VlIGFsc28gdGhlIHN1YnNlY3Rpb24gb24gIkNhY2hlIENvaGVyZW5jeSIgZm9yIGEgbW9yZSB0aG9yb3VnaCBleGFtcGxlLgorCisKK0NPTlRST0wgREVQRU5ERU5DSUVTCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBIGxvYWQtbG9hZCBjb250cm9sIGRlcGVuZGVuY3kgcmVxdWlyZXMgYSBmdWxsIHJlYWQgbWVtb3J5IGJhcnJpZXIsIG5vdAorc2ltcGx5IGEgZGF0YSBkZXBlbmRlbmN5IGJhcnJpZXIgdG8gbWFrZSBpdCB3b3JrIGNvcnJlY3RseS4gIENvbnNpZGVyIHRoZQorZm9sbG93aW5nIGJpdCBvZiBjb2RlOgorCisJcSA9IFJFQURfT05DRShhKTsKKwlpZiAocSkgeworCQk8ZGF0YSBkZXBlbmRlbmN5IGJhcnJpZXI+ICAvKiBCVUc6IE5vIGRhdGEgZGVwZW5kZW5jeSEhISAqLworCQlwID0gUkVBRF9PTkNFKGIpOworCX0KKworVGhpcyB3aWxsIG5vdCBoYXZlIHRoZSBkZXNpcmVkIGVmZmVjdCBiZWNhdXNlIHRoZXJlIGlzIG5vIGFjdHVhbCBkYXRhCitkZXBlbmRlbmN5LCBidXQgcmF0aGVyIGEgY29udHJvbCBkZXBlbmRlbmN5IHRoYXQgdGhlIENQVSBtYXkgc2hvcnQtY2lyY3VpdAorYnkgYXR0ZW1wdGluZyB0byBwcmVkaWN0IHRoZSBvdXRjb21lIGluIGFkdmFuY2UsIHNvIHRoYXQgb3RoZXIgQ1BVcyBzZWUKK3RoZSBsb2FkIGZyb20gYiBhcyBoYXZpbmcgaGFwcGVuZWQgYmVmb3JlIHRoZSBsb2FkIGZyb20gYS4gIEluIHN1Y2ggYQorY2FzZSB3aGF0J3MgYWN0dWFsbHkgcmVxdWlyZWQgaXM6CisKKwlxID0gUkVBRF9PTkNFKGEpOworCWlmIChxKSB7CisJCTxyZWFkIGJhcnJpZXI+CisJCXAgPSBSRUFEX09OQ0UoYik7CisJfQorCitIb3dldmVyLCBzdG9yZXMgYXJlIG5vdCBzcGVjdWxhdGVkLiAgVGhpcyBtZWFucyB0aGF0IG9yZGVyaW5nIC1pcy0gcHJvdmlkZWQKK2ZvciBsb2FkLXN0b3JlIGNvbnRyb2wgZGVwZW5kZW5jaWVzLCBhcyBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGU6CisKKwlxID0gUkVBRF9PTkNFKGEpOworCWlmIChxKSB7CisJCVdSSVRFX09OQ0UoYiwgcCk7CisJfQorCitDb250cm9sIGRlcGVuZGVuY2llcyBwYWlyIG5vcm1hbGx5IHdpdGggb3RoZXIgdHlwZXMgb2YgYmFycmllcnMuICBUaGF0CitzYWlkLCBwbGVhc2Ugbm90ZSB0aGF0IFJFQURfT05DRSgpIGlzIG5vdCBvcHRpb25hbCEgV2l0aG91dCB0aGUKK1JFQURfT05DRSgpLCB0aGUgY29tcGlsZXIgbWlnaHQgY29tYmluZSB0aGUgbG9hZCBmcm9tICdhJyB3aXRoIG90aGVyCitsb2FkcyBmcm9tICdhJywgYW5kIHRoZSBzdG9yZSB0byAnYicgd2l0aCBvdGhlciBzdG9yZXMgdG8gJ2InLCB3aXRoCitwb3NzaWJsZSBoaWdobHkgY291bnRlcmludHVpdGl2ZSBlZmZlY3RzIG9uIG9yZGVyaW5nLgorCitXb3JzZSB5ZXQsIGlmIHRoZSBjb21waWxlciBpcyBhYmxlIHRvIHByb3ZlIChzYXkpIHRoYXQgdGhlIHZhbHVlIG9mCit2YXJpYWJsZSAnYScgaXMgYWx3YXlzIG5vbi16ZXJvLCBpdCB3b3VsZCBiZSB3ZWxsIHdpdGhpbiBpdHMgcmlnaHRzCit0byBvcHRpbWl6ZSB0aGUgb3JpZ2luYWwgZXhhbXBsZSBieSBlbGltaW5hdGluZyB0aGUgImlmIiBzdGF0ZW1lbnQKK2FzIGZvbGxvd3M6CisKKwlxID0gYTsKKwliID0gcDsgIC8qIEJVRzogQ29tcGlsZXIgYW5kIENQVSBjYW4gYm90aCByZW9yZGVyISEhICovCisKK1NvIGRvbid0IGxlYXZlIG91dCB0aGUgUkVBRF9PTkNFKCkuCisKK0l0IGlzIHRlbXB0aW5nIHRvIHRyeSB0byBlbmZvcmNlIG9yZGVyaW5nIG9uIGlkZW50aWNhbCBzdG9yZXMgb24gYm90aAorYnJhbmNoZXMgb2YgdGhlICJpZiIgc3RhdGVtZW50IGFzIGZvbGxvd3M6CisKKwlxID0gUkVBRF9PTkNFKGEpOworCWlmIChxKSB7CisJCWJhcnJpZXIoKTsKKwkJV1JJVEVfT05DRShiLCBwKTsKKwkJZG9fc29tZXRoaW5nKCk7CisJfSBlbHNlIHsKKwkJYmFycmllcigpOworCQlXUklURV9PTkNFKGIsIHApOworCQlkb19zb21ldGhpbmdfZWxzZSgpOworCX0KKworVW5mb3J0dW5hdGVseSwgY3VycmVudCBjb21waWxlcnMgd2lsbCB0cmFuc2Zvcm0gdGhpcyBhcyBmb2xsb3dzIGF0IGhpZ2gKK29wdGltaXphdGlvbiBsZXZlbHM6CisKKwlxID0gUkVBRF9PTkNFKGEpOworCWJhcnJpZXIoKTsKKwlXUklURV9PTkNFKGIsIHApOyAgLyogQlVHOiBObyBvcmRlcmluZyB2cy4gbG9hZCBmcm9tIGEhISEgKi8KKwlpZiAocSkgeworCQkvKiBXUklURV9PTkNFKGIsIHApOyAtLSBtb3ZlZCB1cCwgQlVHISEhICovCisJCWRvX3NvbWV0aGluZygpOworCX0gZWxzZSB7CisJCS8qIFdSSVRFX09OQ0UoYiwgcCk7IC0tIG1vdmVkIHVwLCBCVUchISEgKi8KKwkJZG9fc29tZXRoaW5nX2Vsc2UoKTsKKwl9CisKK05vdyB0aGVyZSBpcyBubyBjb25kaXRpb25hbCBiZXR3ZWVuIHRoZSBsb2FkIGZyb20gJ2EnIGFuZCB0aGUgc3RvcmUgdG8KKydiJywgd2hpY2ggbWVhbnMgdGhhdCB0aGUgQ1BVIGlzIHdpdGhpbiBpdHMgcmlnaHRzIHRvIHJlb3JkZXIgdGhlbToKK1RoZSBjb25kaXRpb25hbCBpcyBhYnNvbHV0ZWx5IHJlcXVpcmVkLCBhbmQgbXVzdCBiZSBwcmVzZW50IGluIHRoZQorYXNzZW1ibHkgY29kZSBldmVuIGFmdGVyIGFsbCBjb21waWxlciBvcHRpbWl6YXRpb25zIGhhdmUgYmVlbiBhcHBsaWVkLgorVGhlcmVmb3JlLCBpZiB5b3UgbmVlZCBvcmRlcmluZyBpbiB0aGlzIGV4YW1wbGUsIHlvdSBuZWVkIGV4cGxpY2l0CittZW1vcnkgYmFycmllcnMsIGZvciBleGFtcGxlLCBzbXBfc3RvcmVfcmVsZWFzZSgpOgorCisJcSA9IFJFQURfT05DRShhKTsKKwlpZiAocSkgeworCQlzbXBfc3RvcmVfcmVsZWFzZSgmYiwgcCk7CisJCWRvX3NvbWV0aGluZygpOworCX0gZWxzZSB7CisJCXNtcF9zdG9yZV9yZWxlYXNlKCZiLCBwKTsKKwkJZG9fc29tZXRoaW5nX2Vsc2UoKTsKKwl9CisKK0luIGNvbnRyYXN0LCB3aXRob3V0IGV4cGxpY2l0IG1lbW9yeSBiYXJyaWVycywgdHdvLWxlZ2dlZC1pZiBjb250cm9sCitvcmRlcmluZyBpcyBndWFyYW50ZWVkIG9ubHkgd2hlbiB0aGUgc3RvcmVzIGRpZmZlciwgZm9yIGV4YW1wbGU6CisKKwlxID0gUkVBRF9PTkNFKGEpOworCWlmIChxKSB7CisJCVdSSVRFX09OQ0UoYiwgcCk7CisJCWRvX3NvbWV0aGluZygpOworCX0gZWxzZSB7CisJCVdSSVRFX09OQ0UoYiwgcik7CisJCWRvX3NvbWV0aGluZ19lbHNlKCk7CisJfQorCitUaGUgaW5pdGlhbCBSRUFEX09OQ0UoKSBpcyBzdGlsbCByZXF1aXJlZCB0byBwcmV2ZW50IHRoZSBjb21waWxlciBmcm9tCitwcm92aW5nIHRoZSB2YWx1ZSBvZiAnYScuCisKK0luIGFkZGl0aW9uLCB5b3UgbmVlZCB0byBiZSBjYXJlZnVsIHdoYXQgeW91IGRvIHdpdGggdGhlIGxvY2FsIHZhcmlhYmxlICdxJywKK290aGVyd2lzZSB0aGUgY29tcGlsZXIgbWlnaHQgYmUgYWJsZSB0byBndWVzcyB0aGUgdmFsdWUgYW5kIGFnYWluIHJlbW92ZQordGhlIG5lZWRlZCBjb25kaXRpb25hbC4gIEZvciBleGFtcGxlOgorCisJcSA9IFJFQURfT05DRShhKTsKKwlpZiAocSAlIE1BWCkgeworCQlXUklURV9PTkNFKGIsIHApOworCQlkb19zb21ldGhpbmcoKTsKKwl9IGVsc2UgeworCQlXUklURV9PTkNFKGIsIHIpOworCQlkb19zb21ldGhpbmdfZWxzZSgpOworCX0KKworSWYgTUFYIGlzIGRlZmluZWQgdG8gYmUgMSwgdGhlbiB0aGUgY29tcGlsZXIga25vd3MgdGhhdCAocSAlIE1BWCkgaXMKK2VxdWFsIHRvIHplcm8sIGluIHdoaWNoIGNhc2UgdGhlIGNvbXBpbGVyIGlzIHdpdGhpbiBpdHMgcmlnaHRzIHRvCit0cmFuc2Zvcm0gdGhlIGFib3ZlIGNvZGUgaW50byB0aGUgZm9sbG93aW5nOgorCisJcSA9IFJFQURfT05DRShhKTsKKwlXUklURV9PTkNFKGIsIHApOworCWRvX3NvbWV0aGluZ19lbHNlKCk7CisKK0dpdmVuIHRoaXMgdHJhbnNmb3JtYXRpb24sIHRoZSBDUFUgaXMgbm90IHJlcXVpcmVkIHRvIHJlc3BlY3QgdGhlIG9yZGVyaW5nCitiZXR3ZWVuIHRoZSBsb2FkIGZyb20gdmFyaWFibGUgJ2EnIGFuZCB0aGUgc3RvcmUgdG8gdmFyaWFibGUgJ2InLiAgSXQgaXMKK3RlbXB0aW5nIHRvIGFkZCBhIGJhcnJpZXIoKSwgYnV0IHRoaXMgZG9lcyBub3QgaGVscC4gIFRoZSBjb25kaXRpb25hbAoraXMgZ29uZSwgYW5kIHRoZSBiYXJyaWVyIHdvbid0IGJyaW5nIGl0IGJhY2suICBUaGVyZWZvcmUsIGlmIHlvdSBhcmUKK3JlbHlpbmcgb24gdGhpcyBvcmRlcmluZywgeW91IHNob3VsZCBtYWtlIHN1cmUgdGhhdCBNQVggaXMgZ3JlYXRlciB0aGFuCitvbmUsIHBlcmhhcHMgYXMgZm9sbG93czoKKworCXEgPSBSRUFEX09OQ0UoYSk7CisJQlVJTERfQlVHX09OKE1BWCA8PSAxKTsgLyogT3JkZXIgbG9hZCBmcm9tIGEgd2l0aCBzdG9yZSB0byBiLiAqLworCWlmIChxICUgTUFYKSB7CisJCVdSSVRFX09OQ0UoYiwgcCk7CisJCWRvX3NvbWV0aGluZygpOworCX0gZWxzZSB7CisJCVdSSVRFX09OQ0UoYiwgcik7CisJCWRvX3NvbWV0aGluZ19lbHNlKCk7CisJfQorCitQbGVhc2Ugbm90ZSBvbmNlIGFnYWluIHRoYXQgdGhlIHN0b3JlcyB0byAnYicgZGlmZmVyLiAgSWYgdGhleSB3ZXJlCitpZGVudGljYWwsIGFzIG5vdGVkIGVhcmxpZXIsIHRoZSBjb21waWxlciBjb3VsZCBwdWxsIHRoaXMgc3RvcmUgb3V0c2lkZQorb2YgdGhlICdpZicgc3RhdGVtZW50LgorCitZb3UgbXVzdCBhbHNvIGJlIGNhcmVmdWwgbm90IHRvIHJlbHkgdG9vIG11Y2ggb24gYm9vbGVhbiBzaG9ydC1jaXJjdWl0CitldmFsdWF0aW9uLiAgQ29uc2lkZXIgdGhpcyBleGFtcGxlOgorCisJcSA9IFJFQURfT05DRShhKTsKKwlpZiAocSB8fCAxID4gMCkKKwkJV1JJVEVfT05DRShiLCAxKTsKKworQmVjYXVzZSB0aGUgZmlyc3QgY29uZGl0aW9uIGNhbm5vdCBmYXVsdCBhbmQgdGhlIHNlY29uZCBjb25kaXRpb24gaXMKK2Fsd2F5cyB0cnVlLCB0aGUgY29tcGlsZXIgY2FuIHRyYW5zZm9ybSB0aGlzIGV4YW1wbGUgYXMgZm9sbG93aW5nLAorZGVmZWF0aW5nIGNvbnRyb2wgZGVwZW5kZW5jeToKKworCXEgPSBSRUFEX09OQ0UoYSk7CisJV1JJVEVfT05DRShiLCAxKTsKKworVGhpcyBleGFtcGxlIHVuZGVyc2NvcmVzIHRoZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBjb21waWxlciBjYW5ub3QKK291dC1ndWVzcyB5b3VyIGNvZGUuICBNb3JlIGdlbmVyYWxseSwgYWx0aG91Z2ggUkVBRF9PTkNFKCkgZG9lcyBmb3JjZQordGhlIGNvbXBpbGVyIHRvIGFjdHVhbGx5IGVtaXQgY29kZSBmb3IgYSBnaXZlbiBsb2FkLCBpdCBkb2VzIG5vdCBmb3JjZQordGhlIGNvbXBpbGVyIHRvIHVzZSB0aGUgcmVzdWx0cy4KKworRmluYWxseSwgY29udHJvbCBkZXBlbmRlbmNpZXMgZG8gLW5vdC0gcHJvdmlkZSB0cmFuc2l0aXZpdHkuICBUaGlzIGlzCitkZW1vbnN0cmF0ZWQgYnkgdHdvIHJlbGF0ZWQgZXhhbXBsZXMsIHdpdGggdGhlIGluaXRpYWwgdmFsdWVzIG9mCit4IGFuZCB5IGJvdGggYmVpbmcgemVybzoKKworCUNQVSAwICAgICAgICAgICAgICAgICAgICAgQ1BVIDEKKwk9PT09PT09PT09PT09PT09PT09PT09PSAgID09PT09PT09PT09PT09PT09PT09PT09CisJcjEgPSBSRUFEX09OQ0UoeCk7ICAgICAgICByMiA9IFJFQURfT05DRSh5KTsKKwlpZiAocjEgPiAwKSAgICAgICAgICAgICAgIGlmIChyMiA+IDApCisJICBXUklURV9PTkNFKHksIDEpOyAgICAgICAgIFdSSVRFX09OQ0UoeCwgMSk7CisKKwlhc3NlcnQoIShyMSA9PSAxICYmIHIyID09IDEpKTsKKworVGhlIGFib3ZlIHR3by1DUFUgZXhhbXBsZSB3aWxsIG5ldmVyIHRyaWdnZXIgdGhlIGFzc2VydCgpLiAgSG93ZXZlciwKK2lmIGNvbnRyb2wgZGVwZW5kZW5jaWVzIGd1YXJhbnRlZWQgdHJhbnNpdGl2aXR5ICh3aGljaCB0aGV5IGRvIG5vdCksCit0aGVuIGFkZGluZyB0aGUgZm9sbG93aW5nIENQVSB3b3VsZCBndWFyYW50ZWUgYSByZWxhdGVkIGFzc2VydGlvbjoKKworCUNQVSAyCisJPT09PT09PT09PT09PT09PT09PT09CisJV1JJVEVfT05DRSh4LCAyKTsKKworCWFzc2VydCghKHIxID09IDIgJiYgcjIgPT0gMSAmJiB4ID09IDIpKTsgLyogRkFJTFMhISEgKi8KKworQnV0IGJlY2F1c2UgY29udHJvbCBkZXBlbmRlbmNpZXMgZG8gLW5vdC0gcHJvdmlkZSB0cmFuc2l0aXZpdHksIHRoZSBhYm92ZQorYXNzZXJ0aW9uIGNhbiBmYWlsIGFmdGVyIHRoZSBjb21iaW5lZCB0aHJlZS1DUFUgZXhhbXBsZSBjb21wbGV0ZXMuICBJZiB5b3UKK25lZWQgdGhlIHRocmVlLUNQVSBleGFtcGxlIHRvIHByb3ZpZGUgb3JkZXJpbmcsIHlvdSB3aWxsIG5lZWQgc21wX21iKCkKK2JldHdlZW4gdGhlIGxvYWRzIGFuZCBzdG9yZXMgaW4gdGhlIENQVSAwIGFuZCBDUFUgMSBjb2RlIGZyYWdtZW50cywKK3RoYXQgaXMsIGp1c3QgYmVmb3JlIG9yIGp1c3QgYWZ0ZXIgdGhlICJpZiIgc3RhdGVtZW50cy4gIEZ1cnRoZXJtb3JlLAordGhlIG9yaWdpbmFsIHR3by1DUFUgZXhhbXBsZSBpcyB2ZXJ5IGZyYWdpbGUgYW5kIHNob3VsZCBiZSBhdm9pZGVkLgorCitUaGVzZSB0d28gZXhhbXBsZXMgYXJlIHRoZSBMQiBhbmQgV1dDIGxpdG11cyB0ZXN0cyBmcm9tIHRoaXMgcGFwZXI6CitodHRwOi8vd3d3LmNsLmNhbS5hYy51ay91c2Vycy9wZXMyMC9wcGMtc3VwcGxlbWVudGFsL3Rlc3Q2LnBkZiBhbmQgdGhpcworc2l0ZTogaHR0cHM6Ly93d3cuY2wuY2FtLmFjLnVrL35wZXMyMC9wcGNtZW0vaW5kZXguaHRtbC4KKworSW4gc3VtbWFyeToKKworICAoKikgQ29udHJvbCBkZXBlbmRlbmNpZXMgY2FuIG9yZGVyIHByaW9yIGxvYWRzIGFnYWluc3QgbGF0ZXIgc3RvcmVzLgorICAgICAgSG93ZXZlciwgdGhleSBkbyAtbm90LSBndWFyYW50ZWUgYW55IG90aGVyIHNvcnQgb2Ygb3JkZXJpbmc6CisgICAgICBOb3QgcHJpb3IgbG9hZHMgYWdhaW5zdCBsYXRlciBsb2Fkcywgbm9yIHByaW9yIHN0b3JlcyBhZ2FpbnN0CisgICAgICBsYXRlciBhbnl0aGluZy4gIElmIHlvdSBuZWVkIHRoZXNlIG90aGVyIGZvcm1zIG9mIG9yZGVyaW5nLAorICAgICAgdXNlIHNtcF9ybWIoKSwgc21wX3dtYigpLCBvciwgaW4gdGhlIGNhc2Ugb2YgcHJpb3Igc3RvcmVzIGFuZAorICAgICAgbGF0ZXIgbG9hZHMsIHNtcF9tYigpLgorCisgICgqKSBJZiBib3RoIGxlZ3Mgb2YgdGhlICJpZiIgc3RhdGVtZW50IGJlZ2luIHdpdGggaWRlbnRpY2FsIHN0b3JlcworICAgICAgdG8gdGhlIHNhbWUgdmFyaWFibGUsIGEgYmFycmllcigpIHN0YXRlbWVudCBpcyByZXF1aXJlZCBhdCB0aGUKKyAgICAgIGJlZ2lubmluZyBvZiBlYWNoIGxlZyBvZiB0aGUgImlmIiBzdGF0ZW1lbnQuCisKKyAgKCopIENvbnRyb2wgZGVwZW5kZW5jaWVzIHJlcXVpcmUgYXQgbGVhc3Qgb25lIHJ1bi10aW1lIGNvbmRpdGlvbmFsCisgICAgICBiZXR3ZWVuIHRoZSBwcmlvciBsb2FkIGFuZCB0aGUgc3Vic2VxdWVudCBzdG9yZSwgYW5kIHRoaXMKKyAgICAgIGNvbmRpdGlvbmFsIG11c3QgaW52b2x2ZSB0aGUgcHJpb3IgbG9hZC4gIElmIHRoZSBjb21waWxlciBpcyBhYmxlCisgICAgICB0byBvcHRpbWl6ZSB0aGUgY29uZGl0aW9uYWwgYXdheSwgaXQgd2lsbCBoYXZlIGFsc28gb3B0aW1pemVkCisgICAgICBhd2F5IHRoZSBvcmRlcmluZy4gIENhcmVmdWwgdXNlIG9mIFJFQURfT05DRSgpIGFuZCBXUklURV9PTkNFKCkKKyAgICAgIGNhbiBoZWxwIHRvIHByZXNlcnZlIHRoZSBuZWVkZWQgY29uZGl0aW9uYWwuCisKKyAgKCopIENvbnRyb2wgZGVwZW5kZW5jaWVzIHJlcXVpcmUgdGhhdCB0aGUgY29tcGlsZXIgYXZvaWQgcmVvcmRlcmluZyB0aGUKKyAgICAgIGRlcGVuZGVuY3kgaW50byBub25leGlzdGVuY2UuICBDYXJlZnVsIHVzZSBvZiBSRUFEX09OQ0UoKSBvcgorICAgICAgYXRvbWljeyw2NH1fcmVhZCgpIGNhbiBoZWxwIHRvIHByZXNlcnZlIHlvdXIgY29udHJvbCBkZXBlbmRlbmN5LgorICAgICAgUGxlYXNlIHNlZSB0aGUgQ29tcGlsZXIgQmFycmllciBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisgICgqKSBDb250cm9sIGRlcGVuZGVuY2llcyBwYWlyIG5vcm1hbGx5IHdpdGggb3RoZXIgdHlwZXMgb2YgYmFycmllcnMuCisKKyAgKCopIENvbnRyb2wgZGVwZW5kZW5jaWVzIGRvIC1ub3QtIHByb3ZpZGUgdHJhbnNpdGl2aXR5LiAgSWYgeW91CisgICAgICBuZWVkIHRyYW5zaXRpdml0eSwgdXNlIHNtcF9tYigpLgorCisKK1NNUCBCQVJSSUVSIFBBSVJJTkcKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hlbiBkZWFsaW5nIHdpdGggQ1BVLUNQVSBpbnRlcmFjdGlvbnMsIGNlcnRhaW4gdHlwZXMgb2YgbWVtb3J5IGJhcnJpZXIgc2hvdWxkCithbHdheXMgYmUgcGFpcmVkLiAgQSBsYWNrIG9mIGFwcHJvcHJpYXRlIHBhaXJpbmcgaXMgYWxtb3N0IGNlcnRhaW5seSBhbiBlcnJvci4KKworR2VuZXJhbCBiYXJyaWVycyBwYWlyIHdpdGggZWFjaCBvdGhlciwgdGhvdWdoIHRoZXkgYWxzbyBwYWlyIHdpdGggbW9zdAorb3RoZXIgdHlwZXMgb2YgYmFycmllcnMsIGFsYmVpdCB3aXRob3V0IHRyYW5zaXRpdml0eS4gIEFuIGFjcXVpcmUgYmFycmllcgorcGFpcnMgd2l0aCBhIHJlbGVhc2UgYmFycmllciwgYnV0IGJvdGggbWF5IGFsc28gcGFpciB3aXRoIG90aGVyIGJhcnJpZXJzLAoraW5jbHVkaW5nIG9mIGNvdXJzZSBnZW5lcmFsIGJhcnJpZXJzLiAgQSB3cml0ZSBiYXJyaWVyIHBhaXJzIHdpdGggYSBkYXRhCitkZXBlbmRlbmN5IGJhcnJpZXIsIGEgY29udHJvbCBkZXBlbmRlbmN5LCBhbiBhY3F1aXJlIGJhcnJpZXIsIGEgcmVsZWFzZQorYmFycmllciwgYSByZWFkIGJhcnJpZXIsIG9yIGEgZ2VuZXJhbCBiYXJyaWVyLiAgU2ltaWxhcmx5IGEgcmVhZCBiYXJyaWVyLAorY29udHJvbCBkZXBlbmRlbmN5LCBvciBhIGRhdGEgZGVwZW5kZW5jeSBiYXJyaWVyIHBhaXJzIHdpdGggYSB3cml0ZQorYmFycmllciwgYW4gYWNxdWlyZSBiYXJyaWVyLCBhIHJlbGVhc2UgYmFycmllciwgb3IgYSBnZW5lcmFsIGJhcnJpZXI6CisKKwlDUFUgMQkJICAgICAgQ1BVIDIKKwk9PT09PT09PT09PT09PT0JICAgICAgPT09PT09PT09PT09PT09CisJV1JJVEVfT05DRShhLCAxKTsKKwk8d3JpdGUgYmFycmllcj4KKwlXUklURV9PTkNFKGIsIDIpOyAgICAgeCA9IFJFQURfT05DRShiKTsKKwkJCSAgICAgIDxyZWFkIGJhcnJpZXI+CisJCQkgICAgICB5ID0gUkVBRF9PTkNFKGEpOworCitPcjoKKworCUNQVSAxCQkgICAgICBDUFUgMgorCT09PT09PT09PT09PT09PQkgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJYSA9IDE7CisJPHdyaXRlIGJhcnJpZXI+CisJV1JJVEVfT05DRShiLCAmYSk7ICAgIHggPSBSRUFEX09OQ0UoYik7CisJCQkgICAgICA8ZGF0YSBkZXBlbmRlbmN5IGJhcnJpZXI+CisJCQkgICAgICB5ID0gKng7CisKK09yIGV2ZW46CisKKwlDUFUgMQkJICAgICAgQ1BVIDIKKwk9PT09PT09PT09PT09PT0JICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCXIxID0gUkVBRF9PTkNFKHkpOworCTxnZW5lcmFsIGJhcnJpZXI+CisJV1JJVEVfT05DRSh5LCAxKTsgICAgIGlmIChyMiA9IFJFQURfT05DRSh4KSkgeworCQkJICAgICAgICAgPGltcGxpY2l0IGNvbnRyb2wgZGVwZW5kZW5jeT4KKwkJCSAgICAgICAgIFdSSVRFX09OQ0UoeSwgMSk7CisJCQkgICAgICB9CisKKwlhc3NlcnQocjEgPT0gMCB8fCByMiA9PSAwKTsKKworQmFzaWNhbGx5LCB0aGUgcmVhZCBiYXJyaWVyIGFsd2F5cyBoYXMgdG8gYmUgdGhlcmUsIGV2ZW4gdGhvdWdoIGl0IGNhbiBiZSBvZgordGhlICJ3ZWFrZXIiIHR5cGUuCisKK1shXSBOb3RlIHRoYXQgdGhlIHN0b3JlcyBiZWZvcmUgdGhlIHdyaXRlIGJhcnJpZXIgd291bGQgbm9ybWFsbHkgYmUgZXhwZWN0ZWQgdG8KK21hdGNoIHRoZSBsb2FkcyBhZnRlciB0aGUgcmVhZCBiYXJyaWVyIG9yIHRoZSBkYXRhIGRlcGVuZGVuY3kgYmFycmllciwgYW5kIHZpY2UKK3ZlcnNhOgorCisJQ1BVIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1BVIDIKKwk9PT09PT09PT09PT09PT09PT09ICAgICAgICAgICAgICAgICA9PT09PT09PT09PT09PT09PT09CisJV1JJVEVfT05DRShhLCAxKTsgICAgfS0tLS0gICAtLS0+eyAgdiA9IFJFQURfT05DRShjKTsKKwlXUklURV9PTkNFKGIsIDIpOyAgICB9ICAgIFwgLyAgICB7ICB3ID0gUkVBRF9PTkNFKGQpOworCTx3cml0ZSBiYXJyaWVyPiAgICAgICAgICAgIFwgICAgICAgIDxyZWFkIGJhcnJpZXI+CisJV1JJVEVfT05DRShjLCAzKTsgICAgfSAgICAvIFwgICAgeyAgeCA9IFJFQURfT05DRShhKTsKKwlXUklURV9PTkNFKGQsIDQpOyAgICB9LS0tLSAgIC0tLT57ICB5ID0gUkVBRF9PTkNFKGIpOworCisKK0VYQU1QTEVTIE9GIE1FTU9SWSBCQVJSSUVSIFNFUVVFTkNFUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpcnN0bHksIHdyaXRlIGJhcnJpZXJzIGFjdCBhcyBwYXJ0aWFsIG9yZGVyaW5ncyBvbiBzdG9yZSBvcGVyYXRpb25zLgorQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBvZiBldmVudHM6CisKKwlDUFUgMQorCT09PT09PT09PT09PT09PT09PT09PT09CisJU1RPUkUgQSA9IDEKKwlTVE9SRSBCID0gMgorCVNUT1JFIEMgPSAzCisJPHdyaXRlIGJhcnJpZXI+CisJU1RPUkUgRCA9IDQKKwlTVE9SRSBFID0gNQorCitUaGlzIHNlcXVlbmNlIG9mIGV2ZW50cyBpcyBjb21taXR0ZWQgdG8gdGhlIG1lbW9yeSBjb2hlcmVuY2Ugc3lzdGVtIGluIGFuIG9yZGVyCit0aGF0IHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0gbWlnaHQgcGVyY2VpdmUgYXMgdGhlIHVub3JkZXJlZCBzZXQgb2YgeyBTVE9SRSBBLAorU1RPUkUgQiwgU1RPUkUgQyB9IGFsbCBvY2N1cnJpbmcgYmVmb3JlIHRoZSB1bm9yZGVyZWQgc2V0IG9mIHsgU1RPUkUgRCwgU1RPUkUgRQorfToKKworCSstLS0tLS0tKyAgICAgICA6ICAgICAgOgorCXwgICAgICAgfCAgICAgICArLS0tLS0tKworCXwgICAgICAgfC0tLS0tLT58IEM9MyAgfCAgICAgfSAgICAgL1wKKwl8ICAgICAgIHwgIDogICAgKy0tLS0tLSsgICAgIH0tLS0tLSAgXCAgLS0tLS0+IEV2ZW50cyBwZXJjZXB0aWJsZSB0bworCXwgICAgICAgfCAgOiAgICB8IEE9MSAgfCAgICAgfSAgICAgICAgXC8gICAgICAgdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbQorCXwgICAgICAgfCAgOiAgICArLS0tLS0tKyAgICAgfQorCXwgQ1BVIDEgfCAgOiAgICB8IEI9MiAgfCAgICAgfQorCXwgICAgICAgfCAgICAgICArLS0tLS0tKyAgICAgfQorCXwgICAgICAgfCAgIHd3d3d3d3d3d3d3d3d3d3cgfSAgIDwtLS0gQXQgdGhpcyBwb2ludCB0aGUgd3JpdGUgYmFycmllcgorCXwgICAgICAgfCAgICAgICArLS0tLS0tKyAgICAgfSAgICAgICAgcmVxdWlyZXMgYWxsIHN0b3JlcyBwcmlvciB0byB0aGUKKwl8ICAgICAgIHwgIDogICAgfCBFPTUgIHwgICAgIH0gICAgICAgIGJhcnJpZXIgdG8gYmUgY29tbWl0dGVkIGJlZm9yZQorCXwgICAgICAgfCAgOiAgICArLS0tLS0tKyAgICAgfSAgICAgICAgZnVydGhlciBzdG9yZXMgbWF5IHRha2UgcGxhY2UKKwl8ICAgICAgIHwtLS0tLS0+fCBEPTQgIHwgICAgIH0KKwl8ICAgICAgIHwgICAgICAgKy0tLS0tLSsKKwkrLS0tLS0tLSsgICAgICAgOiAgICAgIDoKKwkgICAgICAgICAgICAgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICB8IFNlcXVlbmNlIGluIHdoaWNoIHN0b3JlcyBhcmUgY29tbWl0dGVkIHRvIHRoZQorCSAgICAgICAgICAgICAgICAgICB8IG1lbW9yeSBzeXN0ZW0gYnkgQ1BVIDEKKwkgICAgICAgICAgICAgICAgICAgVgorCisKK1NlY29uZGx5LCBkYXRhIGRlcGVuZGVuY3kgYmFycmllcnMgYWN0IGFzIHBhcnRpYWwgb3JkZXJpbmdzIG9uIGRhdGEtZGVwZW5kZW50Citsb2Fkcy4gIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2Ugb2YgZXZlbnRzOgorCisJQ1BVIDEJCQlDUFUgMgorCT09PT09PT09PT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PT09PT09PT09CisJCXsgQiA9IDc7IFggPSA5OyBZID0gODsgQyA9ICZZIH0KKwlTVE9SRSBBID0gMQorCVNUT1JFIEIgPSAyCisJPHdyaXRlIGJhcnJpZXI+CisJU1RPUkUgQyA9ICZCCQlMT0FEIFgKKwlTVE9SRSBEID0gNAkJTE9BRCBDIChnZXRzICZCKQorCQkJCUxPQUQgKkMgKHJlYWRzIEIpCisKK1dpdGhvdXQgaW50ZXJ2ZW50aW9uLCBDUFUgMiBtYXkgcGVyY2VpdmUgdGhlIGV2ZW50cyBvbiBDUFUgMSBpbiBzb21lCitlZmZlY3RpdmVseSByYW5kb20gb3JkZXIsIGRlc3BpdGUgdGhlIHdyaXRlIGJhcnJpZXIgaXNzdWVkIGJ5IENQVSAxOgorCisJKy0tLS0tLS0rICAgICAgIDogICAgICA6ICAgICAgICAgICAgICAgIDogICAgICAgOgorCXwgICAgICAgfCAgICAgICArLS0tLS0tKyAgICAgICAgICAgICAgICArLS0tLS0tLSsgIHwgU2VxdWVuY2Ugb2YgdXBkYXRlCisJfCAgICAgICB8LS0tLS0tPnwgQj0yICB8LS0tLS0gICAgICAgLS0tPnwgWS0+OCAgfCAgfCBvZiBwZXJjZXB0aW9uIG9uCisJfCAgICAgICB8ICA6ICAgICstLS0tLS0rICAgICBcICAgICAgICAgICstLS0tLS0tKyAgfCBDUFUgMgorCXwgQ1BVIDEgfCAgOiAgICB8IEE9MSAgfCAgICAgIFwgICAgIC0tLT58IEMtPiZZIHwgIFYKKwl8ICAgICAgIHwgICAgICAgKy0tLS0tLSsgICAgICAgfCAgICAgICAgKy0tLS0tLS0rCisJfCAgICAgICB8ICAgd3d3d3d3d3d3d3d3d3d3dyAgIHwgICAgICAgIDogICAgICAgOgorCXwgICAgICAgfCAgICAgICArLS0tLS0tKyAgICAgICB8ICAgICAgICA6ICAgICAgIDoKKwl8ICAgICAgIHwgIDogICAgfCBDPSZCIHwtLS0gICAgfCAgICAgICAgOiAgICAgICA6ICAgICAgICstLS0tLS0tKworCXwgICAgICAgfCAgOiAgICArLS0tLS0tKyAgIFwgICB8ICAgICAgICArLS0tLS0tLSsgICAgICAgfCAgICAgICB8CisJfCAgICAgICB8LS0tLS0tPnwgRD00ICB8ICAgIC0tLS0tLS0tLS0tPnwgQy0+JkIgfC0tLS0tLT58ICAgICAgIHwKKwl8ICAgICAgIHwgICAgICAgKy0tLS0tLSsgICAgICAgfCAgICAgICAgKy0tLS0tLS0rICAgICAgIHwgICAgICAgfAorCSstLS0tLS0tKyAgICAgICA6ICAgICAgOiAgICAgICB8ICAgICAgICA6ICAgICAgIDogICAgICAgfCAgICAgICB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgIDogICAgICAgOiAgICAgICB8ICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgOiAgICAgICA6ICAgICAgIHwgQ1BVIDIgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICArLS0tLS0tLSsgICAgICAgfCAgICAgICB8CisJICAgIEFwcGFyZW50bHkgaW5jb3JyZWN0IC0tLT4gIHwgICAgICAgIHwgQi0+NyAgfC0tLS0tLT58ICAgICAgIHwKKwkgICAgcGVyY2VwdGlvbiBvZiBCICghKSAgICAgICAgfCAgICAgICAgKy0tLS0tLS0rICAgICAgIHwgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICA6ICAgICAgIDogICAgICAgfCAgICAgICB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICstLS0tLS0tKyAgICAgICB8ICAgICAgIHwKKwkgICAgVGhlIGxvYWQgb2YgWCBob2xkcyAtLS0+ICAgIFwgICAgICAgfCBYLT45ICB8LS0tLS0tPnwgICAgICAgfAorCSAgICB1cCB0aGUgbWFpbnRlbmFuY2UgICAgICAgICAgIFwgICAgICArLS0tLS0tLSsgICAgICAgfCAgICAgICB8CisJICAgIG9mIGNvaGVyZW5jZSBvZiBCICAgICAgICAgICAgIC0tLS0tPnwgQi0+MiAgfCAgICAgICArLS0tLS0tLSsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0rCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogICAgICAgOgorCisKK0luIHRoZSBhYm92ZSBleGFtcGxlLCBDUFUgMiBwZXJjZWl2ZXMgdGhhdCBCIGlzIDcsIGRlc3BpdGUgdGhlIGxvYWQgb2YgKkMKKyh3aGljaCB3b3VsZCBiZSBCKSBjb21pbmcgYWZ0ZXIgdGhlIExPQUQgb2YgQy4KKworSWYsIGhvd2V2ZXIsIGEgZGF0YSBkZXBlbmRlbmN5IGJhcnJpZXIgd2VyZSB0byBiZSBwbGFjZWQgYmV0d2VlbiB0aGUgbG9hZCBvZiBDCithbmQgdGhlIGxvYWQgb2YgKkMgKGllOiBCKSBvbiBDUFUgMjoKKworCUNQVSAxCQkJQ1BVIDIKKwk9PT09PT09PT09PT09PT09PT09PT09PQk9PT09PT09PT09PT09PT09PT09PT09PQorCQl7IEIgPSA3OyBYID0gOTsgWSA9IDg7IEMgPSAmWSB9CisJU1RPUkUgQSA9IDEKKwlTVE9SRSBCID0gMgorCTx3cml0ZSBiYXJyaWVyPgorCVNUT1JFIEMgPSAmQgkJTE9BRCBYCisJU1RPUkUgRCA9IDQJCUxPQUQgQyAoZ2V0cyAmQikKKwkJCQk8ZGF0YSBkZXBlbmRlbmN5IGJhcnJpZXI+CisJCQkJTE9BRCAqQyAocmVhZHMgQikKKwordGhlbiB0aGUgZm9sbG93aW5nIHdpbGwgb2NjdXI6CisKKwkrLS0tLS0tLSsgICAgICAgOiAgICAgIDogICAgICAgICAgICAgICAgOiAgICAgICA6CisJfCAgICAgICB8ICAgICAgICstLS0tLS0rICAgICAgICAgICAgICAgICstLS0tLS0tKworCXwgICAgICAgfC0tLS0tLT58IEI9MiAgfC0tLS0tICAgICAgIC0tLT58IFktPjggIHwKKwl8ICAgICAgIHwgIDogICAgKy0tLS0tLSsgICAgIFwgICAgICAgICAgKy0tLS0tLS0rCisJfCBDUFUgMSB8ICA6ICAgIHwgQT0xICB8ICAgICAgXCAgICAgLS0tPnwgQy0+JlkgfAorCXwgICAgICAgfCAgICAgICArLS0tLS0tKyAgICAgICB8ICAgICAgICArLS0tLS0tLSsKKwl8ICAgICAgIHwgICB3d3d3d3d3d3d3d3d3d3d3ICAgfCAgICAgICAgOiAgICAgICA6CisJfCAgICAgICB8ICAgICAgICstLS0tLS0rICAgICAgIHwgICAgICAgIDogICAgICAgOgorCXwgICAgICAgfCAgOiAgICB8IEM9JkIgfC0tLSAgICB8ICAgICAgICA6ICAgICAgIDogICAgICAgKy0tLS0tLS0rCisJfCAgICAgICB8ICA6ICAgICstLS0tLS0rICAgXCAgIHwgICAgICAgICstLS0tLS0tKyAgICAgICB8ICAgICAgIHwKKwl8ICAgICAgIHwtLS0tLS0+fCBEPTQgIHwgICAgLS0tLS0tLS0tLS0+fCBDLT4mQiB8LS0tLS0tPnwgICAgICAgfAorCXwgICAgICAgfCAgICAgICArLS0tLS0tKyAgICAgICB8ICAgICAgICArLS0tLS0tLSsgICAgICAgfCAgICAgICB8CisJKy0tLS0tLS0rICAgICAgIDogICAgICA6ICAgICAgIHwgICAgICAgIDogICAgICAgOiAgICAgICB8ICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgOiAgICAgICA6ICAgICAgIHwgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICA6ICAgICAgIDogICAgICAgfCBDUFUgMiB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICstLS0tLS0tKyAgICAgICB8ICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgfCBYLT45ICB8LS0tLS0tPnwgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICArLS0tLS0tLSsgICAgICAgfCAgICAgICB8CisJICBNYWtlcyBzdXJlIGFsbCBlZmZlY3RzIC0tLT4gICBcICAgZGRkZGRkZGRkZGRkZGRkZGQgICB8ICAgICAgIHwKKwkgIHByaW9yIHRvIHRoZSBzdG9yZSBvZiBDICAgICAgICBcICAgICAgKy0tLS0tLS0rICAgICAgIHwgICAgICAgfAorCSAgYXJlIHBlcmNlcHRpYmxlIHRvICAgICAgICAgICAgICAtLS0tLT58IEItPjIgIHwtLS0tLS0+fCAgICAgICB8CisJICBzdWJzZXF1ZW50IGxvYWRzICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tKyAgICAgICB8ICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgICAgICA6ICAgICAgICstLS0tLS0tKworCisKK0FuZCB0aGlyZGx5LCBhIHJlYWQgYmFycmllciBhY3RzIGFzIGEgcGFydGlhbCBvcmRlciBvbiBsb2Fkcy4gIENvbnNpZGVyIHRoZQorZm9sbG93aW5nIHNlcXVlbmNlIG9mIGV2ZW50czoKKworCUNQVSAxCQkJQ1BVIDIKKwk9PT09PT09PT09PT09PT09PT09PT09PQk9PT09PT09PT09PT09PT09PT09PT09PQorCQl7IEEgPSAwLCBCID0gOSB9CisJU1RPUkUgQT0xCisJPHdyaXRlIGJhcnJpZXI+CisJU1RPUkUgQj0yCisJCQkJTE9BRCBCCisJCQkJTE9BRCBBCisKK1dpdGhvdXQgaW50ZXJ2ZW50aW9uLCBDUFUgMiBtYXkgdGhlbiBjaG9vc2UgdG8gcGVyY2VpdmUgdGhlIGV2ZW50cyBvbiBDUFUgMSBpbgorc29tZSBlZmZlY3RpdmVseSByYW5kb20gb3JkZXIsIGRlc3BpdGUgdGhlIHdyaXRlIGJhcnJpZXIgaXNzdWVkIGJ5IENQVSAxOgorCisJKy0tLS0tLS0rICAgICAgIDogICAgICA6ICAgICAgICAgICAgICAgIDogICAgICAgOgorCXwgICAgICAgfCAgICAgICArLS0tLS0tKyAgICAgICAgICAgICAgICArLS0tLS0tLSsKKwl8ICAgICAgIHwtLS0tLS0+fCBBPTEgIHwtLS0tLS0gICAgICAtLS0+fCBBLT4wICB8CisJfCAgICAgICB8ICAgICAgICstLS0tLS0rICAgICAgXCAgICAgICAgICstLS0tLS0tKworCXwgQ1BVIDEgfCAgIHd3d3d3d3d3d3d3d3d3d3cgICBcICAgIC0tLT58IEItPjkgIHwKKwl8ICAgICAgIHwgICAgICAgKy0tLS0tLSsgICAgICAgIHwgICAgICAgKy0tLS0tLS0rCisJfCAgICAgICB8LS0tLS0tPnwgQj0yICB8LS0tICAgICB8ICAgICAgIDogICAgICAgOgorCXwgICAgICAgfCAgICAgICArLS0tLS0tKyAgIFwgICAgfCAgICAgICA6ICAgICAgIDogICAgICAgKy0tLS0tLS0rCisJKy0tLS0tLS0rICAgICAgIDogICAgICA6ICAgIFwgICB8ICAgICAgICstLS0tLS0tKyAgICAgICB8ICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0+fCBCLT4yICB8LS0tLS0tPnwgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICArLS0tLS0tLSsgICAgICAgfCBDUFUgMiB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwgQS0+MCAgfC0tLS0tLT58ICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgKy0tLS0tLS0rICAgICAgIHwgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICA6ICAgICAgIDogICAgICAgKy0tLS0tLS0rCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCAgICAgIDogICAgICAgOgorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcICAgICArLS0tLS0tLSsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0+fCBBLT4xICB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tKworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICAgICAgIDoKKworCitJZiwgaG93ZXZlciwgYSByZWFkIGJhcnJpZXIgd2VyZSB0byBiZSBwbGFjZWQgYmV0d2VlbiB0aGUgbG9hZCBvZiBCIGFuZCB0aGUKK2xvYWQgb2YgQSBvbiBDUFUgMjoKKworCUNQVSAxCQkJQ1BVIDIKKwk9PT09PT09PT09PT09PT09PT09PT09PQk9PT09PT09PT09PT09PT09PT09PT09PQorCQl7IEEgPSAwLCBCID0gOSB9CisJU1RPUkUgQT0xCisJPHdyaXRlIGJhcnJpZXI+CisJU1RPUkUgQj0yCisJCQkJTE9BRCBCCisJCQkJPHJlYWQgYmFycmllcj4KKwkJCQlMT0FEIEEKKwordGhlbiB0aGUgcGFydGlhbCBvcmRlcmluZyBpbXBvc2VkIGJ5IENQVSAxIHdpbGwgYmUgcGVyY2VpdmVkIGNvcnJlY3RseSBieSBDUFUKKzI6CisKKwkrLS0tLS0tLSsgICAgICAgOiAgICAgIDogICAgICAgICAgICAgICAgOiAgICAgICA6CisJfCAgICAgICB8ICAgICAgICstLS0tLS0rICAgICAgICAgICAgICAgICstLS0tLS0tKworCXwgICAgICAgfC0tLS0tLT58IEE9MSAgfC0tLS0tLSAgICAgIC0tLT58IEEtPjAgIHwKKwl8ICAgICAgIHwgICAgICAgKy0tLS0tLSsgICAgICBcICAgICAgICAgKy0tLS0tLS0rCisJfCBDUFUgMSB8ICAgd3d3d3d3d3d3d3d3d3d3dyAgIFwgICAgLS0tPnwgQi0+OSAgfAorCXwgICAgICAgfCAgICAgICArLS0tLS0tKyAgICAgICAgfCAgICAgICArLS0tLS0tLSsKKwl8ICAgICAgIHwtLS0tLS0+fCBCPTIgIHwtLS0gICAgIHwgICAgICAgOiAgICAgICA6CisJfCAgICAgICB8ICAgICAgICstLS0tLS0rICAgXCAgICB8ICAgICAgIDogICAgICAgOiAgICAgICArLS0tLS0tLSsKKwkrLS0tLS0tLSsgICAgICAgOiAgICAgIDogICAgXCAgIHwgICAgICAgKy0tLS0tLS0rICAgICAgIHwgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLT58IEItPjIgIHwtLS0tLS0+fCAgICAgICB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICstLS0tLS0tKyAgICAgICB8IENQVSAyIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgOiAgICAgICA6ICAgICAgIHwgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICA6ICAgICAgIDogICAgICAgfCAgICAgICB8CisJICBBdCB0aGlzIHBvaW50IHRoZSByZWFkIC0tLS0+ICAgXCAgcnJycnJycnJycnJycnJycnIgICB8ICAgICAgIHwKKwkgIGJhcnJpZXIgY2F1c2VzIGFsbCBlZmZlY3RzICAgICAgXCAgICAgKy0tLS0tLS0rICAgICAgIHwgICAgICAgfAorCSAgcHJpb3IgdG8gdGhlIHN0b3JhZ2Ugb2YgQiAgICAgICAgLS0tLT58IEEtPjEgIHwtLS0tLS0+fCAgICAgICB8CisJICB0byBiZSBwZXJjZXB0aWJsZSB0byBDUFUgMiAgICAgICAgICAgICstLS0tLS0tKyAgICAgICB8ICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgICAgICA6ICAgICAgICstLS0tLS0tKworCisKK1RvIGlsbHVzdHJhdGUgdGhpcyBtb3JlIGNvbXBsZXRlbHksIGNvbnNpZGVyIHdoYXQgY291bGQgaGFwcGVuIGlmIHRoZSBjb2RlCitjb250YWluZWQgYSBsb2FkIG9mIEEgZWl0aGVyIHNpZGUgb2YgdGhlIHJlYWQgYmFycmllcjoKKworCUNQVSAxCQkJQ1BVIDIKKwk9PT09PT09PT09PT09PT09PT09PT09PQk9PT09PT09PT09PT09PT09PT09PT09PQorCQl7IEEgPSAwLCBCID0gOSB9CisJU1RPUkUgQT0xCisJPHdyaXRlIGJhcnJpZXI+CisJU1RPUkUgQj0yCisJCQkJTE9BRCBCCisJCQkJTE9BRCBBIFtmaXJzdCBsb2FkIG9mIEFdCisJCQkJPHJlYWQgYmFycmllcj4KKwkJCQlMT0FEIEEgW3NlY29uZCBsb2FkIG9mIEFdCisKK0V2ZW4gdGhvdWdoIHRoZSB0d28gbG9hZHMgb2YgQSBib3RoIG9jY3VyIGFmdGVyIHRoZSBsb2FkIG9mIEIsIHRoZXkgbWF5IGJvdGgKK2NvbWUgdXAgd2l0aCBkaWZmZXJlbnQgdmFsdWVzOgorCisJKy0tLS0tLS0rICAgICAgIDogICAgICA6ICAgICAgICAgICAgICAgIDogICAgICAgOgorCXwgICAgICAgfCAgICAgICArLS0tLS0tKyAgICAgICAgICAgICAgICArLS0tLS0tLSsKKwl8ICAgICAgIHwtLS0tLS0+fCBBPTEgIHwtLS0tLS0gICAgICAtLS0+fCBBLT4wICB8CisJfCAgICAgICB8ICAgICAgICstLS0tLS0rICAgICAgXCAgICAgICAgICstLS0tLS0tKworCXwgQ1BVIDEgfCAgIHd3d3d3d3d3d3d3d3d3d3cgICBcICAgIC0tLT58IEItPjkgIHwKKwl8ICAgICAgIHwgICAgICAgKy0tLS0tLSsgICAgICAgIHwgICAgICAgKy0tLS0tLS0rCisJfCAgICAgICB8LS0tLS0tPnwgQj0yICB8LS0tICAgICB8ICAgICAgIDogICAgICAgOgorCXwgICAgICAgfCAgICAgICArLS0tLS0tKyAgIFwgICAgfCAgICAgICA6ICAgICAgIDogICAgICAgKy0tLS0tLS0rCisJKy0tLS0tLS0rICAgICAgIDogICAgICA6ICAgIFwgICB8ICAgICAgICstLS0tLS0tKyAgICAgICB8ICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0+fCBCLT4yICB8LS0tLS0tPnwgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICArLS0tLS0tLSsgICAgICAgfCBDUFUgMiB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIDogICAgICAgOiAgICAgICB8ICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgOiAgICAgICA6ICAgICAgIHwgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICArLS0tLS0tLSsgICAgICAgfCAgICAgICB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwgQS0+MCAgfC0tLS0tLT58IDFzdCAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgKy0tLS0tLS0rICAgICAgIHwgICAgICAgfAorCSAgQXQgdGhpcyBwb2ludCB0aGUgcmVhZCAtLS0tPiAgIFwgIHJycnJycnJycnJycnJycnJyICAgfCAgICAgICB8CisJICBiYXJyaWVyIGNhdXNlcyBhbGwgZWZmZWN0cyAgICAgIFwgICAgICstLS0tLS0tKyAgICAgICB8ICAgICAgIHwKKwkgIHByaW9yIHRvIHRoZSBzdG9yYWdlIG9mIEIgICAgICAgIC0tLS0+fCBBLT4xICB8LS0tLS0tPnwgMm5kICAgfAorCSAgdG8gYmUgcGVyY2VwdGlibGUgdG8gQ1BVIDIgICAgICAgICAgICArLS0tLS0tLSsgICAgICAgfCAgICAgICB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogICAgICAgOiAgICAgICArLS0tLS0tLSsKKworCitCdXQgaXQgbWF5IGJlIHRoYXQgdGhlIHVwZGF0ZSB0byBBIGZyb20gQ1BVIDEgYmVjb21lcyBwZXJjZXB0aWJsZSB0byBDUFUgMgorYmVmb3JlIHRoZSByZWFkIGJhcnJpZXIgY29tcGxldGVzIGFueXdheToKKworCSstLS0tLS0tKyAgICAgICA6ICAgICAgOiAgICAgICAgICAgICAgICA6ICAgICAgIDoKKwl8ICAgICAgIHwgICAgICAgKy0tLS0tLSsgICAgICAgICAgICAgICAgKy0tLS0tLS0rCisJfCAgICAgICB8LS0tLS0tPnwgQT0xICB8LS0tLS0tICAgICAgLS0tPnwgQS0+MCAgfAorCXwgICAgICAgfCAgICAgICArLS0tLS0tKyAgICAgIFwgICAgICAgICArLS0tLS0tLSsKKwl8IENQVSAxIHwgICB3d3d3d3d3d3d3d3d3d3d3ICAgXCAgICAtLS0+fCBCLT45ICB8CisJfCAgICAgICB8ICAgICAgICstLS0tLS0rICAgICAgICB8ICAgICAgICstLS0tLS0tKworCXwgICAgICAgfC0tLS0tLT58IEI9MiAgfC0tLSAgICAgfCAgICAgICA6ICAgICAgIDoKKwl8ICAgICAgIHwgICAgICAgKy0tLS0tLSsgICBcICAgIHwgICAgICAgOiAgICAgICA6ICAgICAgICstLS0tLS0tKworCSstLS0tLS0tKyAgICAgICA6ICAgICAgOiAgICBcICAgfCAgICAgICArLS0tLS0tLSsgICAgICAgfCAgICAgICB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tPnwgQi0+MiAgfC0tLS0tLT58ICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgKy0tLS0tLS0rICAgICAgIHwgQ1BVIDIgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICA6ICAgICAgIDogICAgICAgfCAgICAgICB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCAgICAgIDogICAgICAgOiAgICAgICB8ICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCAgICAgKy0tLS0tLS0rICAgICAgIHwgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLT58IEEtPjEgIHwtLS0tLS0+fCAxc3QgICB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tKyAgICAgICB8ICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBycnJycnJycnJycnJycnJyciAgIHwgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLSsgICAgICAgfCAgICAgICB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQS0+MSAgfC0tLS0tLT58IDJuZCAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0rICAgICAgIHwgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICAgICAgIDogICAgICAgKy0tLS0tLS0rCisKKworVGhlIGd1YXJhbnRlZSBpcyB0aGF0IHRoZSBzZWNvbmQgbG9hZCB3aWxsIGFsd2F5cyBjb21lIHVwIHdpdGggQSA9PSAxIGlmIHRoZQorbG9hZCBvZiBCIGNhbWUgdXAgd2l0aCBCID09IDIuICBObyBzdWNoIGd1YXJhbnRlZSBleGlzdHMgZm9yIHRoZSBmaXJzdCBsb2FkIG9mCitBOyB0aGF0IG1heSBjb21lIHVwIHdpdGggZWl0aGVyIEEgPT0gMCBvciBBID09IDEuCisKKworUkVBRCBNRU1PUlkgQkFSUklFUlMgVlMgTE9BRCBTUEVDVUxBVElPTgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitNYW55IENQVXMgc3BlY3VsYXRlIHdpdGggbG9hZHM6IHRoYXQgaXMgdGhleSBzZWUgdGhhdCB0aGV5IHdpbGwgbmVlZCB0byBsb2FkIGFuCitpdGVtIGZyb20gbWVtb3J5LCBhbmQgdGhleSBmaW5kIGEgdGltZSB3aGVyZSB0aGV5J3JlIG5vdCB1c2luZyB0aGUgYnVzIGZvciBhbnkKK290aGVyIGxvYWRzLCBhbmQgc28gZG8gdGhlIGxvYWQgaW4gYWR2YW5jZSAtIGV2ZW4gdGhvdWdoIHRoZXkgaGF2ZW4ndCBhY3R1YWxseQorZ290IHRvIHRoYXQgcG9pbnQgaW4gdGhlIGluc3RydWN0aW9uIGV4ZWN1dGlvbiBmbG93IHlldC4gIFRoaXMgcGVybWl0cyB0aGUKK2FjdHVhbCBsb2FkIGluc3RydWN0aW9uIHRvIHBvdGVudGlhbGx5IGNvbXBsZXRlIGltbWVkaWF0ZWx5IGJlY2F1c2UgdGhlIENQVQorYWxyZWFkeSBoYXMgdGhlIHZhbHVlIHRvIGhhbmQuCisKK0l0IG1heSB0dXJuIG91dCB0aGF0IHRoZSBDUFUgZGlkbid0IGFjdHVhbGx5IG5lZWQgdGhlIHZhbHVlIC0gcGVyaGFwcyBiZWNhdXNlIGEKK2JyYW5jaCBjaXJjdW12ZW50ZWQgdGhlIGxvYWQgLSBpbiB3aGljaCBjYXNlIGl0IGNhbiBkaXNjYXJkIHRoZSB2YWx1ZSBvciBqdXN0CitjYWNoZSBpdCBmb3IgbGF0ZXIgdXNlLgorCitDb25zaWRlcjoKKworCUNQVSAxCQkJQ1BVIDIKKwk9PT09PT09PT09PT09PT09PT09PT09PQk9PT09PT09PT09PT09PT09PT09PT09PQorCQkJCUxPQUQgQgorCQkJCURJVklERQkJfSBEaXZpZGUgaW5zdHJ1Y3Rpb25zIGdlbmVyYWxseQorCQkJCURJVklERQkJfSB0YWtlIGEgbG9uZyB0aW1lIHRvIHBlcmZvcm0KKwkJCQlMT0FEIEEKKworV2hpY2ggbWlnaHQgYXBwZWFyIGFzIHRoaXM6CisKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgICAgICA6ICAgICAgICstLS0tLS0tKworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLSsgICAgICAgfCAgICAgICB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tPnwgQi0+MiAgfC0tLS0tLT58ICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0rICAgICAgIHwgQ1BVIDIgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICAgICAgIDpESVZJREUgfCAgICAgICB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tKyAgICAgICB8ICAgICAgIHwKKwlUaGUgQ1BVIGJlaW5nIGJ1c3kgZG9pbmcgYSAtLS0+ICAgICAtLS0+fCBBLT4wICB8fn5+fiAgIHwgICAgICAgfAorCWRpdmlzaW9uIHNwZWN1bGF0ZXMgb24gdGhlICAgICAgICAgICAgICArLS0tLS0tLSsgICB+ICAgfCAgICAgICB8CisJTE9BRCBvZiBBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogICAgICAgOiAgIH4gICB8ICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgICAgICA6RElWSURFIHwgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICAgICAgIDogICB+ICAgfCAgICAgICB8CisJT25jZSB0aGUgZGl2aXNpb25zIGFyZSBjb21wbGV0ZSAtLT4gICAgIDogICAgICAgOiAgIH4tLT58ICAgICAgIHwKKwl0aGUgQ1BVIGNhbiB0aGVuIHBlcmZvcm0gdGhlICAgICAgICAgICAgOiAgICAgICA6ICAgICAgIHwgICAgICAgfAorCUxPQUQgd2l0aCBpbW1lZGlhdGUgZWZmZWN0ICAgICAgICAgICAgICA6ICAgICAgIDogICAgICAgKy0tLS0tLS0rCisKKworUGxhY2luZyBhIHJlYWQgYmFycmllciBvciBhIGRhdGEgZGVwZW5kZW5jeSBiYXJyaWVyIGp1c3QgYmVmb3JlIHRoZSBzZWNvbmQKK2xvYWQ6CisKKwlDUFUgMQkJCUNQVSAyCisJPT09PT09PT09PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT0KKwkJCQlMT0FEIEIKKwkJCQlESVZJREUKKwkJCQlESVZJREUKKwkJCQk8cmVhZCBiYXJyaWVyPgorCQkJCUxPQUQgQQorCit3aWxsIGZvcmNlIGFueSB2YWx1ZSBzcGVjdWxhdGl2ZWx5IG9idGFpbmVkIHRvIGJlIHJlY29uc2lkZXJlZCB0byBhbiBleHRlbnQKK2RlcGVuZGVudCBvbiB0aGUgdHlwZSBvZiBiYXJyaWVyIHVzZWQuICBJZiB0aGVyZSB3YXMgbm8gY2hhbmdlIG1hZGUgdG8gdGhlCitzcGVjdWxhdGVkIG1lbW9yeSBsb2NhdGlvbiwgdGhlbiB0aGUgc3BlY3VsYXRlZCB2YWx1ZSB3aWxsIGp1c3QgYmUgdXNlZDoKKworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICAgICAgIDogICAgICAgKy0tLS0tLS0rCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tKyAgICAgICB8ICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0+fCBCLT4yICB8LS0tLS0tPnwgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLSsgICAgICAgfCBDUFUgMiB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogICAgICAgOkRJVklERSB8ICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0rICAgICAgIHwgICAgICAgfAorCVRoZSBDUFUgYmVpbmcgYnVzeSBkb2luZyBhIC0tLT4gICAgIC0tLT58IEEtPjAgIHx+fn5+ICAgfCAgICAgICB8CisJZGl2aXNpb24gc3BlY3VsYXRlcyBvbiB0aGUgICAgICAgICAgICAgICstLS0tLS0tKyAgIH4gICB8ICAgICAgIHwKKwlMT0FEIG9mIEEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgICAgICA6ICAgfiAgIHwgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICAgICAgIDpESVZJREUgfCAgICAgICB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogICAgICAgOiAgIH4gICB8ICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgICAgICA6ICAgfiAgIHwgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJycnJycnJycnJycnJycnJ+ICAgfCAgICAgICB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogICAgICAgOiAgIH4gICB8ICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgICAgICA6ICAgfi0tPnwgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICAgICAgIDogICAgICAgfCAgICAgICB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogICAgICAgOiAgICAgICArLS0tLS0tLSsKKworCitidXQgaWYgdGhlcmUgd2FzIGFuIHVwZGF0ZSBvciBhbiBpbnZhbGlkYXRpb24gZnJvbSBhbm90aGVyIENQVSBwZW5kaW5nLCB0aGVuCit0aGUgc3BlY3VsYXRpb24gd2lsbCBiZSBjYW5jZWxsZWQgYW5kIHRoZSB2YWx1ZSByZWxvYWRlZDoKKworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICAgICAgIDogICAgICAgKy0tLS0tLS0rCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tKyAgICAgICB8ICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0+fCBCLT4yICB8LS0tLS0tPnwgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLSsgICAgICAgfCBDUFUgMiB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogICAgICAgOkRJVklERSB8ICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0rICAgICAgIHwgICAgICAgfAorCVRoZSBDUFUgYmVpbmcgYnVzeSBkb2luZyBhIC0tLT4gICAgIC0tLT58IEEtPjAgIHx+fn5+ICAgfCAgICAgICB8CisJZGl2aXNpb24gc3BlY3VsYXRlcyBvbiB0aGUgICAgICAgICAgICAgICstLS0tLS0tKyAgIH4gICB8ICAgICAgIHwKKwlMT0FEIG9mIEEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgICAgICA6ICAgfiAgIHwgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICAgICAgIDpESVZJREUgfCAgICAgICB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogICAgICAgOiAgIH4gICB8ICAgICAgIHwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgICAgICA6ICAgfiAgIHwgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJycnJycnJycnJycnJycnJyICAgfCAgICAgICB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tKyAgICAgICB8ICAgICAgIHwKKwlUaGUgc3BlY3VsYXRpb24gaXMgZGlzY2FyZGVkIC0tLT4gICAtLS0+fCBBLT4xICB8LS0tLS0tPnwgICAgICAgfAorCWFuZCBhbiB1cGRhdGVkIHZhbHVlIGlzICAgICAgICAgICAgICAgICArLS0tLS0tLSsgICAgICAgfCAgICAgICB8CisJcmV0cmlldmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogICAgICAgOiAgICAgICArLS0tLS0tLSsKKworCitUUkFOU0lUSVZJVFkKKy0tLS0tLS0tLS0tLQorCitUcmFuc2l0aXZpdHkgaXMgYSBkZWVwbHkgaW50dWl0aXZlIG5vdGlvbiBhYm91dCBvcmRlcmluZyB0aGF0IGlzIG5vdAorYWx3YXlzIHByb3ZpZGVkIGJ5IHJlYWwgY29tcHV0ZXIgc3lzdGVtcy4gIFRoZSBmb2xsb3dpbmcgZXhhbXBsZQorZGVtb25zdHJhdGVzIHRyYW5zaXRpdml0eSAoYWxzbyBjYWxsZWQgImN1bXVsYXRpdml0eSIpOgorCisJQ1BVIDEJCQlDUFUgMgkJCUNQVSAzCisJPT09PT09PT09PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT0KKwkJeyBYID0gMCwgWSA9IDAgfQorCVNUT1JFIFg9MQkJTE9BRCBYCQkJU1RPUkUgWT0xCisJCQkJPGdlbmVyYWwgYmFycmllcj4JPGdlbmVyYWwgYmFycmllcj4KKwkJCQlMT0FEIFkJCQlMT0FEIFgKKworU3VwcG9zZSB0aGF0IENQVSAyJ3MgbG9hZCBmcm9tIFggcmV0dXJucyAxIGFuZCBpdHMgbG9hZCBmcm9tIFkgcmV0dXJucyAwLgorVGhpcyBpbmRpY2F0ZXMgdGhhdCBDUFUgMidzIGxvYWQgZnJvbSBYIGluIHNvbWUgc2Vuc2UgZm9sbG93cyBDUFUgMSdzCitzdG9yZSB0byBYIGFuZCB0aGF0IENQVSAyJ3MgbG9hZCBmcm9tIFkgaW4gc29tZSBzZW5zZSBwcmVjZWRlZCBDUFUgMydzCitzdG9yZSB0byBZLiAgVGhlIHF1ZXN0aW9uIGlzIHRoZW4gIkNhbiBDUFUgMydzIGxvYWQgZnJvbSBYIHJldHVybiAwPyIKKworQmVjYXVzZSBDUFUgMidzIGxvYWQgZnJvbSBYIGluIHNvbWUgc2Vuc2UgY2FtZSBhZnRlciBDUFUgMSdzIHN0b3JlLCBpdAoraXMgbmF0dXJhbCB0byBleHBlY3QgdGhhdCBDUFUgMydzIGxvYWQgZnJvbSBYIG11c3QgdGhlcmVmb3JlIHJldHVybiAxLgorVGhpcyBleHBlY3RhdGlvbiBpcyBhbiBleGFtcGxlIG9mIHRyYW5zaXRpdml0eTogaWYgYSBsb2FkIGV4ZWN1dGluZyBvbgorQ1BVIEEgZm9sbG93cyBhIGxvYWQgZnJvbSB0aGUgc2FtZSB2YXJpYWJsZSBleGVjdXRpbmcgb24gQ1BVIEIsIHRoZW4KK0NQVSBBJ3MgbG9hZCBtdXN0IGVpdGhlciByZXR1cm4gdGhlIHNhbWUgdmFsdWUgdGhhdCBDUFUgQidzIGxvYWQgZGlkLAorb3IgbXVzdCByZXR1cm4gc29tZSBsYXRlciB2YWx1ZS4KKworSW4gdGhlIExpbnV4IGtlcm5lbCwgdXNlIG9mIGdlbmVyYWwgbWVtb3J5IGJhcnJpZXJzIGd1YXJhbnRlZXMKK3RyYW5zaXRpdml0eS4gIFRoZXJlZm9yZSwgaW4gdGhlIGFib3ZlIGV4YW1wbGUsIGlmIENQVSAyJ3MgbG9hZCBmcm9tIFgKK3JldHVybnMgMSBhbmQgaXRzIGxvYWQgZnJvbSBZIHJldHVybnMgMCwgdGhlbiBDUFUgMydzIGxvYWQgZnJvbSBYIG11c3QKK2Fsc28gcmV0dXJuIDEuCisKK0hvd2V2ZXIsIHRyYW5zaXRpdml0eSBpcyAtbm90LSBndWFyYW50ZWVkIGZvciByZWFkIG9yIHdyaXRlIGJhcnJpZXJzLgorRm9yIGV4YW1wbGUsIHN1cHBvc2UgdGhhdCBDUFUgMidzIGdlbmVyYWwgYmFycmllciBpbiB0aGUgYWJvdmUgZXhhbXBsZQoraXMgY2hhbmdlZCB0byBhIHJlYWQgYmFycmllciBhcyBzaG93biBiZWxvdzoKKworCUNQVSAxCQkJQ1BVIDIJCQlDUFUgMworCT09PT09PT09PT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PT09PT09PT09CisJCXsgWCA9IDAsIFkgPSAwIH0KKwlTVE9SRSBYPTEJCUxPQUQgWAkJCVNUT1JFIFk9MQorCQkJCTxyZWFkIGJhcnJpZXI+CQk8Z2VuZXJhbCBiYXJyaWVyPgorCQkJCUxPQUQgWQkJCUxPQUQgWAorCitUaGlzIHN1YnN0aXR1dGlvbiBkZXN0cm95cyB0cmFuc2l0aXZpdHk6IGluIHRoaXMgZXhhbXBsZSwgaXQgaXMgcGVyZmVjdGx5CitsZWdhbCBmb3IgQ1BVIDIncyBsb2FkIGZyb20gWCB0byByZXR1cm4gMSwgaXRzIGxvYWQgZnJvbSBZIHRvIHJldHVybiAwLAorYW5kIENQVSAzJ3MgbG9hZCBmcm9tIFggdG8gcmV0dXJuIDAuCisKK1RoZSBrZXkgcG9pbnQgaXMgdGhhdCBhbHRob3VnaCBDUFUgMidzIHJlYWQgYmFycmllciBvcmRlcnMgaXRzIHBhaXIKK29mIGxvYWRzLCBpdCBkb2VzIG5vdCBndWFyYW50ZWUgdG8gb3JkZXIgQ1BVIDEncyBzdG9yZS4gIFRoZXJlZm9yZSwgaWYKK3RoaXMgZXhhbXBsZSBydW5zIG9uIGEgc3lzdGVtIHdoZXJlIENQVXMgMSBhbmQgMiBzaGFyZSBhIHN0b3JlIGJ1ZmZlcgorb3IgYSBsZXZlbCBvZiBjYWNoZSwgQ1BVIDIgbWlnaHQgaGF2ZSBlYXJseSBhY2Nlc3MgdG8gQ1BVIDEncyB3cml0ZXMuCitHZW5lcmFsIGJhcnJpZXJzIGFyZSB0aGVyZWZvcmUgcmVxdWlyZWQgdG8gZW5zdXJlIHRoYXQgYWxsIENQVXMgYWdyZWUKK29uIHRoZSBjb21iaW5lZCBvcmRlciBvZiBDUFUgMSdzIGFuZCBDUFUgMidzIGFjY2Vzc2VzLgorCitUbyByZWl0ZXJhdGUsIGlmIHlvdXIgY29kZSByZXF1aXJlcyB0cmFuc2l0aXZpdHksIHVzZSBnZW5lcmFsIGJhcnJpZXJzCit0aHJvdWdob3V0LgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PQorRVhQTElDSVQgS0VSTkVMIEJBUlJJRVJTCis9PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIExpbnV4IGtlcm5lbCBoYXMgYSB2YXJpZXR5IG9mIGRpZmZlcmVudCBiYXJyaWVycyB0aGF0IGFjdCBhdCBkaWZmZXJlbnQKK2xldmVsczoKKworICAoKikgQ29tcGlsZXIgYmFycmllci4KKworICAoKikgQ1BVIG1lbW9yeSBiYXJyaWVycy4KKworICAoKikgTU1JTyB3cml0ZSBiYXJyaWVyLgorCisKK0NPTVBJTEVSIEJBUlJJRVIKKy0tLS0tLS0tLS0tLS0tLS0KKworVGhlIExpbnV4IGtlcm5lbCBoYXMgYW4gZXhwbGljaXQgY29tcGlsZXIgYmFycmllciBmdW5jdGlvbiB0aGF0IHByZXZlbnRzIHRoZQorY29tcGlsZXIgZnJvbSBtb3ZpbmcgdGhlIG1lbW9yeSBhY2Nlc3NlcyBlaXRoZXIgc2lkZSBvZiBpdCB0byB0aGUgb3RoZXIgc2lkZToKKworCWJhcnJpZXIoKTsKKworVGhpcyBpcyBhIGdlbmVyYWwgYmFycmllciAtLSB0aGVyZSBhcmUgbm8gcmVhZC1yZWFkIG9yIHdyaXRlLXdyaXRlCit2YXJpYW50cyBvZiBiYXJyaWVyKCkuICBIb3dldmVyLCBSRUFEX09OQ0UoKSBhbmQgV1JJVEVfT05DRSgpIGNhbiBiZQordGhvdWdodCBvZiBhcyB3ZWFrIGZvcm1zIG9mIGJhcnJpZXIoKSB0aGF0IGFmZmVjdCBvbmx5IHRoZSBzcGVjaWZpYworYWNjZXNzZXMgZmxhZ2dlZCBieSB0aGUgUkVBRF9PTkNFKCkgb3IgV1JJVEVfT05DRSgpLgorCitUaGUgYmFycmllcigpIGZ1bmN0aW9uIGhhcyB0aGUgZm9sbG93aW5nIGVmZmVjdHM6CisKKyAoKikgUHJldmVudHMgdGhlIGNvbXBpbGVyIGZyb20gcmVvcmRlcmluZyBhY2Nlc3NlcyBmb2xsb3dpbmcgdGhlCisgICAgIGJhcnJpZXIoKSB0byBwcmVjZWRlIGFueSBhY2Nlc3NlcyBwcmVjZWRpbmcgdGhlIGJhcnJpZXIoKS4KKyAgICAgT25lIGV4YW1wbGUgdXNlIGZvciB0aGlzIHByb3BlcnR5IGlzIHRvIGVhc2UgY29tbXVuaWNhdGlvbiBiZXR3ZWVuCisgICAgIGludGVycnVwdC1oYW5kbGVyIGNvZGUgYW5kIHRoZSBjb2RlIHRoYXQgd2FzIGludGVycnVwdGVkLgorCisgKCopIFdpdGhpbiBhIGxvb3AsIGZvcmNlcyB0aGUgY29tcGlsZXIgdG8gbG9hZCB0aGUgdmFyaWFibGVzIHVzZWQKKyAgICAgaW4gdGhhdCBsb29wJ3MgY29uZGl0aW9uYWwgb24gZWFjaCBwYXNzIHRocm91Z2ggdGhhdCBsb29wLgorCitUaGUgUkVBRF9PTkNFKCkgYW5kIFdSSVRFX09OQ0UoKSBmdW5jdGlvbnMgY2FuIHByZXZlbnQgYW55IG51bWJlciBvZgorb3B0aW1pemF0aW9ucyB0aGF0LCB3aGlsZSBwZXJmZWN0bHkgc2FmZSBpbiBzaW5nbGUtdGhyZWFkZWQgY29kZSwgY2FuCitiZSBmYXRhbCBpbiBjb25jdXJyZW50IGNvZGUuICBIZXJlIGFyZSBzb21lIGV4YW1wbGVzIG9mIHRoZXNlIHNvcnRzCitvZiBvcHRpbWl6YXRpb25zOgorCisgKCopIFRoZSBjb21waWxlciBpcyB3aXRoaW4gaXRzIHJpZ2h0cyB0byByZW9yZGVyIGxvYWRzIGFuZCBzdG9yZXMKKyAgICAgdG8gdGhlIHNhbWUgdmFyaWFibGUsIGFuZCBpbiBzb21lIGNhc2VzLCB0aGUgQ1BVIGlzIHdpdGhpbiBpdHMKKyAgICAgcmlnaHRzIHRvIHJlb3JkZXIgbG9hZHMgdG8gdGhlIHNhbWUgdmFyaWFibGUuICBUaGlzIG1lYW5zIHRoYXQKKyAgICAgdGhlIGZvbGxvd2luZyBjb2RlOgorCisJYVswXSA9IHg7CisJYVsxXSA9IHg7CisKKyAgICAgTWlnaHQgcmVzdWx0IGluIGFuIG9sZGVyIHZhbHVlIG9mIHggc3RvcmVkIGluIGFbMV0gdGhhbiBpbiBhWzBdLgorICAgICBQcmV2ZW50IGJvdGggdGhlIGNvbXBpbGVyIGFuZCB0aGUgQ1BVIGZyb20gZG9pbmcgdGhpcyBhcyBmb2xsb3dzOgorCisJYVswXSA9IFJFQURfT05DRSh4KTsKKwlhWzFdID0gUkVBRF9PTkNFKHgpOworCisgICAgIEluIHNob3J0LCBSRUFEX09OQ0UoKSBhbmQgV1JJVEVfT05DRSgpIHByb3ZpZGUgY2FjaGUgY29oZXJlbmNlIGZvcgorICAgICBhY2Nlc3NlcyBmcm9tIG11bHRpcGxlIENQVXMgdG8gYSBzaW5nbGUgdmFyaWFibGUuCisKKyAoKikgVGhlIGNvbXBpbGVyIGlzIHdpdGhpbiBpdHMgcmlnaHRzIHRvIG1lcmdlIHN1Y2Nlc3NpdmUgbG9hZHMgZnJvbQorICAgICB0aGUgc2FtZSB2YXJpYWJsZS4gIFN1Y2ggbWVyZ2luZyBjYW4gY2F1c2UgdGhlIGNvbXBpbGVyIHRvICJvcHRpbWl6ZSIKKyAgICAgdGhlIGZvbGxvd2luZyBjb2RlOgorCisJd2hpbGUgKHRtcCA9IGEpCisJCWRvX3NvbWV0aGluZ193aXRoKHRtcCk7CisKKyAgICAgaW50byB0aGUgZm9sbG93aW5nIGNvZGUsIHdoaWNoLCBhbHRob3VnaCBpbiBzb21lIHNlbnNlIGxlZ2l0aW1hdGUKKyAgICAgZm9yIHNpbmdsZS10aHJlYWRlZCBjb2RlLCBpcyBhbG1vc3QgY2VydGFpbmx5IG5vdCB3aGF0IHRoZSBkZXZlbG9wZXIKKyAgICAgaW50ZW5kZWQ6CisKKwlpZiAodG1wID0gYSkKKwkJZm9yICg7OykKKwkJCWRvX3NvbWV0aGluZ193aXRoKHRtcCk7CisKKyAgICAgVXNlIFJFQURfT05DRSgpIHRvIHByZXZlbnQgdGhlIGNvbXBpbGVyIGZyb20gZG9pbmcgdGhpcyB0byB5b3U6CisKKwl3aGlsZSAodG1wID0gUkVBRF9PTkNFKGEpKQorCQlkb19zb21ldGhpbmdfd2l0aCh0bXApOworCisgKCopIFRoZSBjb21waWxlciBpcyB3aXRoaW4gaXRzIHJpZ2h0cyB0byByZWxvYWQgYSB2YXJpYWJsZSwgZm9yIGV4YW1wbGUsCisgICAgIGluIGNhc2VzIHdoZXJlIGhpZ2ggcmVnaXN0ZXIgcHJlc3N1cmUgcHJldmVudHMgdGhlIGNvbXBpbGVyIGZyb20KKyAgICAga2VlcGluZyBhbGwgZGF0YSBvZiBpbnRlcmVzdCBpbiByZWdpc3RlcnMuICBUaGUgY29tcGlsZXIgbWlnaHQKKyAgICAgdGhlcmVmb3JlIG9wdGltaXplIHRoZSB2YXJpYWJsZSAndG1wJyBvdXQgb2Ygb3VyIHByZXZpb3VzIGV4YW1wbGU6CisKKwl3aGlsZSAodG1wID0gYSkKKwkJZG9fc29tZXRoaW5nX3dpdGgodG1wKTsKKworICAgICBUaGlzIGNvdWxkIHJlc3VsdCBpbiB0aGUgZm9sbG93aW5nIGNvZGUsIHdoaWNoIGlzIHBlcmZlY3RseSBzYWZlIGluCisgICAgIHNpbmdsZS10aHJlYWRlZCBjb2RlLCBidXQgY2FuIGJlIGZhdGFsIGluIGNvbmN1cnJlbnQgY29kZToKKworCXdoaWxlIChhKQorCQlkb19zb21ldGhpbmdfd2l0aChhKTsKKworICAgICBGb3IgZXhhbXBsZSwgdGhlIG9wdGltaXplZCB2ZXJzaW9uIG9mIHRoaXMgY29kZSBjb3VsZCByZXN1bHQgaW4KKyAgICAgcGFzc2luZyBhIHplcm8gdG8gZG9fc29tZXRoaW5nX3dpdGgoKSBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgdmFyaWFibGUKKyAgICAgYSB3YXMgbW9kaWZpZWQgYnkgc29tZSBvdGhlciBDUFUgYmV0d2VlbiB0aGUgIndoaWxlIiBzdGF0ZW1lbnQgYW5kCisgICAgIHRoZSBjYWxsIHRvIGRvX3NvbWV0aGluZ193aXRoKCkuCisKKyAgICAgQWdhaW4sIHVzZSBSRUFEX09OQ0UoKSB0byBwcmV2ZW50IHRoZSBjb21waWxlciBmcm9tIGRvaW5nIHRoaXM6CisKKwl3aGlsZSAodG1wID0gUkVBRF9PTkNFKGEpKQorCQlkb19zb21ldGhpbmdfd2l0aCh0bXApOworCisgICAgIE5vdGUgdGhhdCBpZiB0aGUgY29tcGlsZXIgcnVucyBzaG9ydCBvZiByZWdpc3RlcnMsIGl0IG1pZ2h0IHNhdmUKKyAgICAgdG1wIG9udG8gdGhlIHN0YWNrLiAgVGhlIG92ZXJoZWFkIG9mIHRoaXMgc2F2aW5nIGFuZCBsYXRlciByZXN0b3JpbmcKKyAgICAgaXMgd2h5IGNvbXBpbGVycyByZWxvYWQgdmFyaWFibGVzLiAgRG9pbmcgc28gaXMgcGVyZmVjdGx5IHNhZmUgZm9yCisgICAgIHNpbmdsZS10aHJlYWRlZCBjb2RlLCBzbyB5b3UgbmVlZCB0byB0ZWxsIHRoZSBjb21waWxlciBhYm91dCBjYXNlcworICAgICB3aGVyZSBpdCBpcyBub3Qgc2FmZS4KKworICgqKSBUaGUgY29tcGlsZXIgaXMgd2l0aGluIGl0cyByaWdodHMgdG8gb21pdCBhIGxvYWQgZW50aXJlbHkgaWYgaXQga25vd3MKKyAgICAgd2hhdCB0aGUgdmFsdWUgd2lsbCBiZS4gIEZvciBleGFtcGxlLCBpZiB0aGUgY29tcGlsZXIgY2FuIHByb3ZlIHRoYXQKKyAgICAgdGhlIHZhbHVlIG9mIHZhcmlhYmxlICdhJyBpcyBhbHdheXMgemVybywgaXQgY2FuIG9wdGltaXplIHRoaXMgY29kZToKKworCXdoaWxlICh0bXAgPSBhKQorCQlkb19zb21ldGhpbmdfd2l0aCh0bXApOworCisgICAgIEludG8gdGhpczoKKworCWRvIHsgfSB3aGlsZSAoMCk7CisKKyAgICAgVGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyBhIHdpbiBmb3Igc2luZ2xlLXRocmVhZGVkIGNvZGUgYmVjYXVzZSBpdAorICAgICBnZXRzIHJpZCBvZiBhIGxvYWQgYW5kIGEgYnJhbmNoLiAgVGhlIHByb2JsZW0gaXMgdGhhdCB0aGUgY29tcGlsZXIKKyAgICAgd2lsbCBjYXJyeSBvdXQgaXRzIHByb29mIGFzc3VtaW5nIHRoYXQgdGhlIGN1cnJlbnQgQ1BVIGlzIHRoZSBvbmx5CisgICAgIG9uZSB1cGRhdGluZyB2YXJpYWJsZSAnYScuICBJZiB2YXJpYWJsZSAnYScgaXMgc2hhcmVkLCB0aGVuIHRoZQorICAgICBjb21waWxlcidzIHByb29mIHdpbGwgYmUgZXJyb25lb3VzLiAgVXNlIFJFQURfT05DRSgpIHRvIHRlbGwgdGhlCisgICAgIGNvbXBpbGVyIHRoYXQgaXQgZG9lc24ndCBrbm93IGFzIG11Y2ggYXMgaXQgdGhpbmtzIGl0IGRvZXM6CisKKwl3aGlsZSAodG1wID0gUkVBRF9PTkNFKGEpKQorCQlkb19zb21ldGhpbmdfd2l0aCh0bXApOworCisgICAgIEJ1dCBwbGVhc2Ugbm90ZSB0aGF0IHRoZSBjb21waWxlciBpcyBhbHNvIGNsb3NlbHkgd2F0Y2hpbmcgd2hhdCB5b3UKKyAgICAgZG8gd2l0aCB0aGUgdmFsdWUgYWZ0ZXIgdGhlIFJFQURfT05DRSgpLiAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91CisgICAgIGRvIHRoZSBmb2xsb3dpbmcgYW5kIE1BWCBpcyBhIHByZXByb2Nlc3NvciBtYWNybyB3aXRoIHRoZSB2YWx1ZSAxOgorCisJd2hpbGUgKCh0bXAgPSBSRUFEX09OQ0UoYSkpICUgTUFYKQorCQlkb19zb21ldGhpbmdfd2l0aCh0bXApOworCisgICAgIFRoZW4gdGhlIGNvbXBpbGVyIGtub3dzIHRoYXQgdGhlIHJlc3VsdCBvZiB0aGUgIiUiIG9wZXJhdG9yIGFwcGxpZWQKKyAgICAgdG8gTUFYIHdpbGwgYWx3YXlzIGJlIHplcm8sIGFnYWluIGFsbG93aW5nIHRoZSBjb21waWxlciB0byBvcHRpbWl6ZQorICAgICB0aGUgY29kZSBpbnRvIG5lYXItbm9uZXhpc3RlbmNlLiAgKEl0IHdpbGwgc3RpbGwgbG9hZCBmcm9tIHRoZQorICAgICB2YXJpYWJsZSAnYScuKQorCisgKCopIFNpbWlsYXJseSwgdGhlIGNvbXBpbGVyIGlzIHdpdGhpbiBpdHMgcmlnaHRzIHRvIG9taXQgYSBzdG9yZSBlbnRpcmVseQorICAgICBpZiBpdCBrbm93cyB0aGF0IHRoZSB2YXJpYWJsZSBhbHJlYWR5IGhhcyB0aGUgdmFsdWUgYmVpbmcgc3RvcmVkLgorICAgICBBZ2FpbiwgdGhlIGNvbXBpbGVyIGFzc3VtZXMgdGhhdCB0aGUgY3VycmVudCBDUFUgaXMgdGhlIG9ubHkgb25lCisgICAgIHN0b3JpbmcgaW50byB0aGUgdmFyaWFibGUsIHdoaWNoIGNhbiBjYXVzZSB0aGUgY29tcGlsZXIgdG8gZG8gdGhlCisgICAgIHdyb25nIHRoaW5nIGZvciBzaGFyZWQgdmFyaWFibGVzLiAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgeW91IGhhdmUKKyAgICAgdGhlIGZvbGxvd2luZzoKKworCWEgPSAwOworCS8qIENvZGUgdGhhdCBkb2VzIG5vdCBzdG9yZSB0byB2YXJpYWJsZSBhLiAqLworCWEgPSAwOworCisgICAgIFRoZSBjb21waWxlciBzZWVzIHRoYXQgdGhlIHZhbHVlIG9mIHZhcmlhYmxlICdhJyBpcyBhbHJlYWR5IHplcm8sIHNvCisgICAgIGl0IG1pZ2h0IHdlbGwgb21pdCB0aGUgc2Vjb25kIHN0b3JlLiAgVGhpcyB3b3VsZCBjb21lIGFzIGEgZmF0YWwKKyAgICAgc3VycHJpc2UgaWYgc29tZSBvdGhlciBDUFUgbWlnaHQgaGF2ZSBzdG9yZWQgdG8gdmFyaWFibGUgJ2EnIGluIHRoZQorICAgICBtZWFudGltZS4KKworICAgICBVc2UgV1JJVEVfT05DRSgpIHRvIHByZXZlbnQgdGhlIGNvbXBpbGVyIGZyb20gbWFraW5nIHRoaXMgc29ydCBvZgorICAgICB3cm9uZyBndWVzczoKKworCVdSSVRFX09OQ0UoYSwgMCk7CisJLyogQ29kZSB0aGF0IGRvZXMgbm90IHN0b3JlIHRvIHZhcmlhYmxlIGEuICovCisJV1JJVEVfT05DRShhLCAwKTsKKworICgqKSBUaGUgY29tcGlsZXIgaXMgd2l0aGluIGl0cyByaWdodHMgdG8gcmVvcmRlciBtZW1vcnkgYWNjZXNzZXMgdW5sZXNzCisgICAgIHlvdSB0ZWxsIGl0IG5vdCB0by4gIEZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93aW5nIGludGVyYWN0aW9uCisgICAgIGJldHdlZW4gcHJvY2Vzcy1sZXZlbCBjb2RlIGFuZCBhbiBpbnRlcnJ1cHQgaGFuZGxlcjoKKworCXZvaWQgcHJvY2Vzc19sZXZlbCh2b2lkKQorCXsKKwkJbXNnID0gZ2V0X21lc3NhZ2UoKTsKKwkJZmxhZyA9IHRydWU7CisJfQorCisJdm9pZCBpbnRlcnJ1cHRfaGFuZGxlcih2b2lkKQorCXsKKwkJaWYgKGZsYWcpCisJCQlwcm9jZXNzX21lc3NhZ2UobXNnKTsKKwl9CisKKyAgICAgVGhlcmUgaXMgbm90aGluZyB0byBwcmV2ZW50IHRoZSBjb21waWxlciBmcm9tIHRyYW5zZm9ybWluZworICAgICBwcm9jZXNzX2xldmVsKCkgdG8gdGhlIGZvbGxvd2luZywgaW4gZmFjdCwgdGhpcyBtaWdodCB3ZWxsIGJlIGEKKyAgICAgd2luIGZvciBzaW5nbGUtdGhyZWFkZWQgY29kZToKKworCXZvaWQgcHJvY2Vzc19sZXZlbCh2b2lkKQorCXsKKwkJZmxhZyA9IHRydWU7CisJCW1zZyA9IGdldF9tZXNzYWdlKCk7CisJfQorCisgICAgIElmIHRoZSBpbnRlcnJ1cHQgb2NjdXJzIGJldHdlZW4gdGhlc2UgdHdvIHN0YXRlbWVudCwgdGhlbgorICAgICBpbnRlcnJ1cHRfaGFuZGxlcigpIG1pZ2h0IGJlIHBhc3NlZCBhIGdhcmJsZWQgbXNnLiAgVXNlIFdSSVRFX09OQ0UoKQorICAgICB0byBwcmV2ZW50IHRoaXMgYXMgZm9sbG93czoKKworCXZvaWQgcHJvY2Vzc19sZXZlbCh2b2lkKQorCXsKKwkJV1JJVEVfT05DRShtc2csIGdldF9tZXNzYWdlKCkpOworCQlXUklURV9PTkNFKGZsYWcsIHRydWUpOworCX0KKworCXZvaWQgaW50ZXJydXB0X2hhbmRsZXIodm9pZCkKKwl7CisJCWlmIChSRUFEX09OQ0UoZmxhZykpCisJCQlwcm9jZXNzX21lc3NhZ2UoUkVBRF9PTkNFKG1zZykpOworCX0KKworICAgICBOb3RlIHRoYXQgdGhlIFJFQURfT05DRSgpIGFuZCBXUklURV9PTkNFKCkgd3JhcHBlcnMgaW4KKyAgICAgaW50ZXJydXB0X2hhbmRsZXIoKSBhcmUgbmVlZGVkIGlmIHRoaXMgaW50ZXJydXB0IGhhbmRsZXIgY2FuIGl0c2VsZgorICAgICBiZSBpbnRlcnJ1cHRlZCBieSBzb21ldGhpbmcgdGhhdCBhbHNvIGFjY2Vzc2VzICdmbGFnJyBhbmQgJ21zZycsCisgICAgIGZvciBleGFtcGxlLCBhIG5lc3RlZCBpbnRlcnJ1cHQgb3IgYW4gTk1JLiAgT3RoZXJ3aXNlLCBSRUFEX09OQ0UoKQorICAgICBhbmQgV1JJVEVfT05DRSgpIGFyZSBub3QgbmVlZGVkIGluIGludGVycnVwdF9oYW5kbGVyKCkgb3RoZXIgdGhhbgorICAgICBmb3IgZG9jdW1lbnRhdGlvbiBwdXJwb3Nlcy4gIChOb3RlIGFsc28gdGhhdCBuZXN0ZWQgaW50ZXJydXB0cworICAgICBkbyBub3QgdHlwaWNhbGx5IG9jY3VyIGluIG1vZGVybiBMaW51eCBrZXJuZWxzLCBpbiBmYWN0LCBpZiBhbgorICAgICBpbnRlcnJ1cHQgaGFuZGxlciByZXR1cm5zIHdpdGggaW50ZXJydXB0cyBlbmFibGVkLCB5b3Ugd2lsbCBnZXQgYQorICAgICBXQVJOX09OQ0UoKSBzcGxhdC4pCisKKyAgICAgWW91IHNob3VsZCBhc3N1bWUgdGhhdCB0aGUgY29tcGlsZXIgY2FuIG1vdmUgUkVBRF9PTkNFKCkgYW5kCisgICAgIFdSSVRFX09OQ0UoKSBwYXN0IGNvZGUgbm90IGNvbnRhaW5pbmcgUkVBRF9PTkNFKCksIFdSSVRFX09OQ0UoKSwKKyAgICAgYmFycmllcigpLCBvciBzaW1pbGFyIHByaW1pdGl2ZXMuCisKKyAgICAgVGhpcyBlZmZlY3QgY291bGQgYWxzbyBiZSBhY2hpZXZlZCB1c2luZyBiYXJyaWVyKCksIGJ1dCBSRUFEX09OQ0UoKQorICAgICBhbmQgV1JJVEVfT05DRSgpIGFyZSBtb3JlIHNlbGVjdGl2ZTogIFdpdGggUkVBRF9PTkNFKCkgYW5kCisgICAgIFdSSVRFX09OQ0UoKSwgdGhlIGNvbXBpbGVyIG5lZWQgb25seSBmb3JnZXQgdGhlIGNvbnRlbnRzIG9mIHRoZQorICAgICBpbmRpY2F0ZWQgbWVtb3J5IGxvY2F0aW9ucywgd2hpbGUgd2l0aCBiYXJyaWVyKCkgdGhlIGNvbXBpbGVyIG11c3QKKyAgICAgZGlzY2FyZCB0aGUgdmFsdWUgb2YgYWxsIG1lbW9yeSBsb2NhdGlvbnMgdGhhdCBpdCBoYXMgY3VycmVudGVkCisgICAgIGNhY2hlZCBpbiBhbnkgbWFjaGluZSByZWdpc3RlcnMuICBPZiBjb3Vyc2UsIHRoZSBjb21waWxlciBtdXN0IGFsc28KKyAgICAgcmVzcGVjdCB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIFJFQURfT05DRSgpcyBhbmQgV1JJVEVfT05DRSgpcyBvY2N1ciwKKyAgICAgdGhvdWdoIHRoZSBDUFUgb2YgY291cnNlIG5lZWQgbm90IGRvIHNvLgorCisgKCopIFRoZSBjb21waWxlciBpcyB3aXRoaW4gaXRzIHJpZ2h0cyB0byBpbnZlbnQgc3RvcmVzIHRvIGEgdmFyaWFibGUsCisgICAgIGFzIGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKKworCWlmIChhKQorCQliID0gYTsKKwllbHNlCisJCWIgPSA0MjsKKworICAgICBUaGUgY29tcGlsZXIgbWlnaHQgc2F2ZSBhIGJyYW5jaCBieSBvcHRpbWl6aW5nIHRoaXMgYXMgZm9sbG93czoKKworCWIgPSA0MjsKKwlpZiAoYSkKKwkJYiA9IGE7CisKKyAgICAgSW4gc2luZ2xlLXRocmVhZGVkIGNvZGUsIHRoaXMgaXMgbm90IG9ubHkgc2FmZSwgYnV0IGFsc28gc2F2ZXMKKyAgICAgYSBicmFuY2guICBVbmZvcnR1bmF0ZWx5LCBpbiBjb25jdXJyZW50IGNvZGUsIHRoaXMgb3B0aW1pemF0aW9uCisgICAgIGNvdWxkIGNhdXNlIHNvbWUgb3RoZXIgQ1BVIHRvIHNlZSBhIHNwdXJpb3VzIHZhbHVlIG9mIDQyIC0tIGV2ZW4KKyAgICAgaWYgdmFyaWFibGUgJ2EnIHdhcyBuZXZlciB6ZXJvIC0tIHdoZW4gbG9hZGluZyB2YXJpYWJsZSAnYicuCisgICAgIFVzZSBXUklURV9PTkNFKCkgdG8gcHJldmVudCB0aGlzIGFzIGZvbGxvd3M6CisKKwlpZiAoYSkKKwkJV1JJVEVfT05DRShiLCBhKTsKKwllbHNlCisJCVdSSVRFX09OQ0UoYiwgNDIpOworCisgICAgIFRoZSBjb21waWxlciBjYW4gYWxzbyBpbnZlbnQgbG9hZHMuICBUaGVzZSBhcmUgdXN1YWxseSBsZXNzCisgICAgIGRhbWFnaW5nLCBidXQgdGhleSBjYW4gcmVzdWx0IGluIGNhY2hlLWxpbmUgYm91bmNpbmcgYW5kIHRodXMgaW4KKyAgICAgcG9vciBwZXJmb3JtYW5jZSBhbmQgc2NhbGFiaWxpdHkuICBVc2UgUkVBRF9PTkNFKCkgdG8gcHJldmVudAorICAgICBpbnZlbnRlZCBsb2Fkcy4KKworICgqKSBGb3IgYWxpZ25lZCBtZW1vcnkgbG9jYXRpb25zIHdob3NlIHNpemUgYWxsb3dzIHRoZW0gdG8gYmUgYWNjZXNzZWQKKyAgICAgd2l0aCBhIHNpbmdsZSBtZW1vcnktcmVmZXJlbmNlIGluc3RydWN0aW9uLCBwcmV2ZW50cyAibG9hZCB0ZWFyaW5nIgorICAgICBhbmQgInN0b3JlIHRlYXJpbmcsIiBpbiB3aGljaCBhIHNpbmdsZSBsYXJnZSBhY2Nlc3MgaXMgcmVwbGFjZWQgYnkKKyAgICAgbXVsdGlwbGUgc21hbGxlciBhY2Nlc3Nlcy4gIEZvciBleGFtcGxlLCBnaXZlbiBhbiBhcmNoaXRlY3R1cmUgaGF2aW5nCisgICAgIDE2LWJpdCBzdG9yZSBpbnN0cnVjdGlvbnMgd2l0aCA3LWJpdCBpbW1lZGlhdGUgZmllbGRzLCB0aGUgY29tcGlsZXIKKyAgICAgbWlnaHQgYmUgdGVtcHRlZCB0byB1c2UgdHdvIDE2LWJpdCBzdG9yZS1pbW1lZGlhdGUgaW5zdHJ1Y3Rpb25zIHRvCisgICAgIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIDMyLWJpdCBzdG9yZToKKworCXAgPSAweDAwMDEwMDAyOworCisgICAgIFBsZWFzZSBub3RlIHRoYXQgR0NDIHJlYWxseSBkb2VzIHVzZSB0aGlzIHNvcnQgb2Ygb3B0aW1pemF0aW9uLAorICAgICB3aGljaCBpcyBub3Qgc3VycHJpc2luZyBnaXZlbiB0aGF0IGl0IHdvdWxkIGxpa2VseSB0YWtlIG1vcmUKKyAgICAgdGhhbiB0d28gaW5zdHJ1Y3Rpb25zIHRvIGJ1aWxkIHRoZSBjb25zdGFudCBhbmQgdGhlbiBzdG9yZSBpdC4KKyAgICAgVGhpcyBvcHRpbWl6YXRpb24gY2FuIHRoZXJlZm9yZSBiZSBhIHdpbiBpbiBzaW5nbGUtdGhyZWFkZWQgY29kZS4KKyAgICAgSW4gZmFjdCwgYSByZWNlbnQgYnVnIChzaW5jZSBmaXhlZCkgY2F1c2VkIEdDQyB0byBpbmNvcnJlY3RseSB1c2UKKyAgICAgdGhpcyBvcHRpbWl6YXRpb24gaW4gYSB2b2xhdGlsZSBzdG9yZS4gIEluIHRoZSBhYnNlbmNlIG9mIHN1Y2ggYnVncywKKyAgICAgdXNlIG9mIFdSSVRFX09OQ0UoKSBwcmV2ZW50cyBzdG9yZSB0ZWFyaW5nIGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKKworCVdSSVRFX09OQ0UocCwgMHgwMDAxMDAwMik7CisKKyAgICAgVXNlIG9mIHBhY2tlZCBzdHJ1Y3R1cmVzIGNhbiBhbHNvIHJlc3VsdCBpbiBsb2FkIGFuZCBzdG9yZSB0ZWFyaW5nLAorICAgICBhcyBpbiB0aGlzIGV4YW1wbGU6CisKKwlzdHJ1Y3QgX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpIGZvbyB7CisJCXNob3J0IGE7CisJCWludCBiOworCQlzaG9ydCBjOworCX07CisJc3RydWN0IGZvbyBmb28xLCBmb28yOworCS4uLgorCisJZm9vMi5hID0gZm9vMS5hOworCWZvbzIuYiA9IGZvbzEuYjsKKwlmb28yLmMgPSBmb28xLmM7CisKKyAgICAgQmVjYXVzZSB0aGVyZSBhcmUgbm8gUkVBRF9PTkNFKCkgb3IgV1JJVEVfT05DRSgpIHdyYXBwZXJzIGFuZCBubworICAgICB2b2xhdGlsZSBtYXJraW5ncywgdGhlIGNvbXBpbGVyIHdvdWxkIGJlIHdlbGwgd2l0aGluIGl0cyByaWdodHMgdG8KKyAgICAgaW1wbGVtZW50IHRoZXNlIHRocmVlIGFzc2lnbm1lbnQgc3RhdGVtZW50cyBhcyBhIHBhaXIgb2YgMzItYml0CisgICAgIGxvYWRzIGZvbGxvd2VkIGJ5IGEgcGFpciBvZiAzMi1iaXQgc3RvcmVzLiAgVGhpcyB3b3VsZCByZXN1bHQgaW4KKyAgICAgbG9hZCB0ZWFyaW5nIG9uICdmb28xLmInIGFuZCBzdG9yZSB0ZWFyaW5nIG9uICdmb28yLmInLiAgUkVBRF9PTkNFKCkKKyAgICAgYW5kIFdSSVRFX09OQ0UoKSBhZ2FpbiBwcmV2ZW50IHRlYXJpbmcgaW4gdGhpcyBleGFtcGxlOgorCisJZm9vMi5hID0gZm9vMS5hOworCVdSSVRFX09OQ0UoZm9vMi5iLCBSRUFEX09OQ0UoZm9vMS5iKSk7CisJZm9vMi5jID0gZm9vMS5jOworCitBbGwgdGhhdCBhc2lkZSwgaXQgaXMgbmV2ZXIgbmVjZXNzYXJ5IHRvIHVzZSBSRUFEX09OQ0UoKSBhbmQKK1dSSVRFX09OQ0UoKSBvbiBhIHZhcmlhYmxlIHRoYXQgaGFzIGJlZW4gbWFya2VkIHZvbGF0aWxlLiAgRm9yIGV4YW1wbGUsCitiZWNhdXNlICdqaWZmaWVzJyBpcyBtYXJrZWQgdm9sYXRpbGUsIGl0IGlzIG5ldmVyIG5lY2Vzc2FyeSB0bworc2F5IFJFQURfT05DRShqaWZmaWVzKS4gIFRoZSByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCBSRUFEX09OQ0UoKSBhbmQKK1dSSVRFX09OQ0UoKSBhcmUgaW1wbGVtZW50ZWQgYXMgdm9sYXRpbGUgY2FzdHMsIHdoaWNoIGhhcyBubyBlZmZlY3Qgd2hlbgoraXRzIGFyZ3VtZW50IGlzIGFscmVhZHkgbWFya2VkIHZvbGF0aWxlLgorCitQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIGNvbXBpbGVyIGJhcnJpZXJzIGhhdmUgbm8gZGlyZWN0IGVmZmVjdCBvbiB0aGUgQ1BVLAord2hpY2ggbWF5IHRoZW4gcmVvcmRlciB0aGluZ3MgaG93ZXZlciBpdCB3aXNoZXMuCisKKworQ1BVIE1FTU9SWSBCQVJSSUVSUworLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgTGludXgga2VybmVsIGhhcyBlaWdodCBiYXNpYyBDUFUgbWVtb3J5IGJhcnJpZXJzOgorCisJVFlQRQkJTUFOREFUT1JZCQlTTVAgQ09ORElUSU9OQUwKKwk9PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT09PT09CisJR0VORVJBTAkJbWIoKQkJCXNtcF9tYigpCisJV1JJVEUJCXdtYigpCQkJc21wX3dtYigpCisJUkVBRAkJcm1iKCkJCQlzbXBfcm1iKCkKKwlEQVRBIERFUEVOREVOQ1kJcmVhZF9iYXJyaWVyX2RlcGVuZHMoKQlzbXBfcmVhZF9iYXJyaWVyX2RlcGVuZHMoKQorCisKK0FsbCBtZW1vcnkgYmFycmllcnMgZXhjZXB0IHRoZSBkYXRhIGRlcGVuZGVuY3kgYmFycmllcnMgaW1wbHkgYSBjb21waWxlcgorYmFycmllci4gRGF0YSBkZXBlbmRlbmNpZXMgZG8gbm90IGltcG9zZSBhbnkgYWRkaXRpb25hbCBjb21waWxlciBvcmRlcmluZy4KKworQXNpZGU6IEluIHRoZSBjYXNlIG9mIGRhdGEgZGVwZW5kZW5jaWVzLCB0aGUgY29tcGlsZXIgd291bGQgYmUgZXhwZWN0ZWQKK3RvIGlzc3VlIHRoZSBsb2FkcyBpbiB0aGUgY29ycmVjdCBvcmRlciAoZWcuIGBhW2JdYCB3b3VsZCBoYXZlIHRvIGxvYWQKK3RoZSB2YWx1ZSBvZiBiIGJlZm9yZSBsb2FkaW5nIGFbYl0pLCBob3dldmVyIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSBpbgordGhlIEMgc3BlY2lmaWNhdGlvbiB0aGF0IHRoZSBjb21waWxlciBtYXkgbm90IHNwZWN1bGF0ZSB0aGUgdmFsdWUgb2YgYgorKGVnLiBpcyBlcXVhbCB0byAxKSBhbmQgbG9hZCBhIGJlZm9yZSBiIChlZy4gdG1wID0gYVsxXTsgaWYgKGIgIT0gMSkKK3RtcCA9IGFbYl07ICkuIFRoZXJlIGlzIGFsc28gdGhlIHByb2JsZW0gb2YgYSBjb21waWxlciByZWxvYWRpbmcgYiBhZnRlcgoraGF2aW5nIGxvYWRlZCBhW2JdLCB0aHVzIGhhdmluZyBhIG5ld2VyIGNvcHkgb2YgYiB0aGFuIGFbYl0uIEEgY29uc2Vuc3VzCitoYXMgbm90IHlldCBiZWVuIHJlYWNoZWQgYWJvdXQgdGhlc2UgcHJvYmxlbXMsIGhvd2V2ZXIgdGhlIFJFQURfT05DRSgpCittYWNybyBpcyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgbG9va2luZy4KKworU01QIG1lbW9yeSBiYXJyaWVycyBhcmUgcmVkdWNlZCB0byBjb21waWxlciBiYXJyaWVycyBvbiB1bmlwcm9jZXNzb3IgY29tcGlsZWQKK3N5c3RlbXMgYmVjYXVzZSBpdCBpcyBhc3N1bWVkIHRoYXQgYSBDUFUgd2lsbCBhcHBlYXIgdG8gYmUgc2VsZi1jb25zaXN0ZW50LAorYW5kIHdpbGwgb3JkZXIgb3ZlcmxhcHBpbmcgYWNjZXNzZXMgY29ycmVjdGx5IHdpdGggcmVzcGVjdCB0byBpdHNlbGYuCisKK1shXSBOb3RlIHRoYXQgU01QIG1lbW9yeSBiYXJyaWVycyBfbXVzdF8gYmUgdXNlZCB0byBjb250cm9sIHRoZSBvcmRlcmluZyBvZgorcmVmZXJlbmNlcyB0byBzaGFyZWQgbWVtb3J5IG9uIFNNUCBzeXN0ZW1zLCB0aG91Z2ggdGhlIHVzZSBvZiBsb2NraW5nIGluc3RlYWQKK2lzIHN1ZmZpY2llbnQuCisKK01hbmRhdG9yeSBiYXJyaWVycyBzaG91bGQgbm90IGJlIHVzZWQgdG8gY29udHJvbCBTTVAgZWZmZWN0cywgc2luY2UgbWFuZGF0b3J5CitiYXJyaWVycyB1bm5lY2Vzc2FyaWx5IGltcG9zZSBvdmVyaGVhZCBvbiBVUCBzeXN0ZW1zLiBUaGV5IG1heSwgaG93ZXZlciwgYmUKK3VzZWQgdG8gY29udHJvbCBNTUlPIGVmZmVjdHMgb24gYWNjZXNzZXMgdGhyb3VnaCByZWxheGVkIG1lbW9yeSBJL08gd2luZG93cy4KK1RoZXNlIGFyZSByZXF1aXJlZCBldmVuIG9uIG5vbi1TTVAgc3lzdGVtcyBhcyB0aGV5IGFmZmVjdCB0aGUgb3JkZXIgaW4gd2hpY2gKK21lbW9yeSBvcGVyYXRpb25zIGFwcGVhciB0byBhIGRldmljZSBieSBwcm9oaWJpdGluZyBib3RoIHRoZSBjb21waWxlciBhbmQgdGhlCitDUFUgZnJvbSByZW9yZGVyaW5nIHRoZW0uCisKKworVGhlcmUgYXJlIHNvbWUgbW9yZSBhZHZhbmNlZCBiYXJyaWVyIGZ1bmN0aW9uczoKKworICgqKSBzbXBfc3RvcmVfbWIodmFyLCB2YWx1ZSkKKworICAgICBUaGlzIGFzc2lnbnMgdGhlIHZhbHVlIHRvIHRoZSB2YXJpYWJsZSBhbmQgdGhlbiBpbnNlcnRzIGEgZnVsbCBtZW1vcnkKKyAgICAgYmFycmllciBhZnRlciBpdCwgZGVwZW5kaW5nIG9uIHRoZSBmdW5jdGlvbi4gIEl0IGlzbid0IGd1YXJhbnRlZWQgdG8KKyAgICAgaW5zZXJ0IGFueXRoaW5nIG1vcmUgdGhhbiBhIGNvbXBpbGVyIGJhcnJpZXIgaW4gYSBVUCBjb21waWxhdGlvbi4KKworCisgKCopIHNtcF9tYl9fYmVmb3JlX2F0b21pYygpOworICgqKSBzbXBfbWJfX2FmdGVyX2F0b21pYygpOworCisgICAgIFRoZXNlIGFyZSBmb3IgdXNlIHdpdGggYXRvbWljIChzdWNoIGFzIGFkZCwgc3VidHJhY3QsIGluY3JlbWVudCBhbmQKKyAgICAgZGVjcmVtZW50KSBmdW5jdGlvbnMgdGhhdCBkb24ndCByZXR1cm4gYSB2YWx1ZSwgZXNwZWNpYWxseSB3aGVuIHVzZWQgZm9yCisgICAgIHJlZmVyZW5jZSBjb3VudGluZy4gIFRoZXNlIGZ1bmN0aW9ucyBkbyBub3QgaW1wbHkgbWVtb3J5IGJhcnJpZXJzLgorCisgICAgIFRoZXNlIGFyZSBhbHNvIHVzZWQgZm9yIGF0b21pYyBiaXRvcCBmdW5jdGlvbnMgdGhhdCBkbyBub3QgcmV0dXJuIGEKKyAgICAgdmFsdWUgKHN1Y2ggYXMgc2V0X2JpdCBhbmQgY2xlYXJfYml0KS4KKworICAgICBBcyBhbiBleGFtcGxlLCBjb25zaWRlciBhIHBpZWNlIG9mIGNvZGUgdGhhdCBtYXJrcyBhbiBvYmplY3QgYXMgYmVpbmcgZGVhZAorICAgICBhbmQgdGhlbiBkZWNyZW1lbnRzIHRoZSBvYmplY3QncyByZWZlcmVuY2UgY291bnQ6CisKKwlvYmotPmRlYWQgPSAxOworCXNtcF9tYl9fYmVmb3JlX2F0b21pYygpOworCWF0b21pY19kZWMoJm9iai0+cmVmX2NvdW50KTsKKworICAgICBUaGlzIG1ha2VzIHN1cmUgdGhhdCB0aGUgZGVhdGggbWFyayBvbiB0aGUgb2JqZWN0IGlzIHBlcmNlaXZlZCB0byBiZSBzZXQKKyAgICAgKmJlZm9yZSogdGhlIHJlZmVyZW5jZSBjb3VudGVyIGlzIGRlY3JlbWVudGVkLgorCisgICAgIFNlZSBEb2N1bWVudGF0aW9uL2F0b21pY19vcHMudHh0IGZvciBtb3JlIGluZm9ybWF0aW9uLiAgU2VlIHRoZSAiQXRvbWljCisgICAgIG9wZXJhdGlvbnMiIHN1YnNlY3Rpb24gZm9yIGluZm9ybWF0aW9uIG9uIHdoZXJlIHRvIHVzZSB0aGVzZS4KKworCisgKCopIGxvY2tsZXNzX2RlcmVmZXJlbmNlKCk7CisgICAgIFRoaXMgY2FuIGJlIHRob3VnaHQgb2YgYXMgYSBwb2ludGVyLWZldGNoIHdyYXBwZXIgYXJvdW5kIHRoZQorICAgICBzbXBfcmVhZF9iYXJyaWVyX2RlcGVuZHMoKSBkYXRhLWRlcGVuZGVuY3kgYmFycmllci4KKworICAgICBUaGlzIGlzIGFsc28gc2ltaWxhciB0byByY3VfZGVyZWZlcmVuY2UoKSwgYnV0IGluIGNhc2VzIHdoZXJlCisgICAgIG9iamVjdCBsaWZldGltZSBpcyBoYW5kbGVkIGJ5IHNvbWUgbWVjaGFuaXNtIG90aGVyIHRoYW4gUkNVLCBmb3IKKyAgICAgZXhhbXBsZSwgd2hlbiB0aGUgb2JqZWN0cyByZW1vdmVkIG9ubHkgd2hlbiB0aGUgc3lzdGVtIGdvZXMgZG93bi4KKyAgICAgSW4gYWRkaXRpb24sIGxvY2tsZXNzX2RlcmVmZXJlbmNlKCkgaXMgdXNlZCBpbiBzb21lIGRhdGEgc3RydWN0dXJlcworICAgICB0aGF0IGNhbiBiZSB1c2VkIGJvdGggd2l0aCBhbmQgd2l0aG91dCBSQ1UuCisKKworICgqKSBkbWFfd21iKCk7CisgKCopIGRtYV9ybWIoKTsKKworICAgICBUaGVzZSBhcmUgZm9yIHVzZSB3aXRoIGNvbnNpc3RlbnQgbWVtb3J5IHRvIGd1YXJhbnRlZSB0aGUgb3JkZXJpbmcKKyAgICAgb2Ygd3JpdGVzIG9yIHJlYWRzIG9mIHNoYXJlZCBtZW1vcnkgYWNjZXNzaWJsZSB0byBib3RoIHRoZSBDUFUgYW5kIGEKKyAgICAgRE1BIGNhcGFibGUgZGV2aWNlLgorCisgICAgIEZvciBleGFtcGxlLCBjb25zaWRlciBhIGRldmljZSBkcml2ZXIgdGhhdCBzaGFyZXMgbWVtb3J5IHdpdGggYSBkZXZpY2UKKyAgICAgYW5kIHVzZXMgYSBkZXNjcmlwdG9yIHN0YXR1cyB2YWx1ZSB0byBpbmRpY2F0ZSBpZiB0aGUgZGVzY3JpcHRvciBiZWxvbmdzCisgICAgIHRvIHRoZSBkZXZpY2Ugb3IgdGhlIENQVSwgYW5kIGEgZG9vcmJlbGwgdG8gbm90aWZ5IGl0IHdoZW4gbmV3CisgICAgIGRlc2NyaXB0b3JzIGFyZSBhdmFpbGFibGU6CisKKwlpZiAoZGVzYy0+c3RhdHVzICE9IERFVklDRV9PV04pIHsKKwkJLyogZG8gbm90IHJlYWQgZGF0YSB1bnRpbCB3ZSBvd24gZGVzY3JpcHRvciAqLworCQlkbWFfcm1iKCk7CisKKwkJLyogcmVhZC9tb2RpZnkgZGF0YSAqLworCQlyZWFkX2RhdGEgPSBkZXNjLT5kYXRhOworCQlkZXNjLT5kYXRhID0gd3JpdGVfZGF0YTsKKworCQkvKiBmbHVzaCBtb2RpZmljYXRpb25zIGJlZm9yZSBzdGF0dXMgdXBkYXRlICovCisJCWRtYV93bWIoKTsKKworCQkvKiBhc3NpZ24gb3duZXJzaGlwICovCisJCWRlc2MtPnN0YXR1cyA9IERFVklDRV9PV047CisKKwkJLyogZm9yY2UgbWVtb3J5IHRvIHN5bmMgYmVmb3JlIG5vdGlmeWluZyBkZXZpY2UgdmlhIE1NSU8gKi8KKwkJd21iKCk7CisKKwkJLyogbm90aWZ5IGRldmljZSBvZiBuZXcgZGVzY3JpcHRvcnMgKi8KKwkJd3JpdGVsKERFU0NfTk9USUZZLCBkb29yYmVsbCk7CisJfQorCisgICAgIFRoZSBkbWFfcm1iKCkgYWxsb3dzIHVzIGd1YXJhbnRlZSB0aGUgZGV2aWNlIGhhcyByZWxlYXNlZCBvd25lcnNoaXAKKyAgICAgYmVmb3JlIHdlIHJlYWQgdGhlIGRhdGEgZnJvbSB0aGUgZGVzY3JpcHRvciwgYW5kIHRoZSBkbWFfd21iKCkgYWxsb3dzCisgICAgIHVzIHRvIGd1YXJhbnRlZSB0aGUgZGF0YSBpcyB3cml0dGVuIHRvIHRoZSBkZXNjcmlwdG9yIGJlZm9yZSB0aGUgZGV2aWNlCisgICAgIGNhbiBzZWUgaXQgbm93IGhhcyBvd25lcnNoaXAuICBUaGUgd21iKCkgaXMgbmVlZGVkIHRvIGd1YXJhbnRlZSB0aGF0IHRoZQorICAgICBjYWNoZSBjb2hlcmVudCBtZW1vcnkgd3JpdGVzIGhhdmUgY29tcGxldGVkIGJlZm9yZSBhdHRlbXB0aW5nIGEgd3JpdGUgdG8KKyAgICAgdGhlIGNhY2hlIGluY29oZXJlbnQgTU1JTyByZWdpb24uCisKKyAgICAgU2VlIERvY3VtZW50YXRpb24vRE1BLUFQSS50eHQgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29uc2lzdGVudCBtZW1vcnkuCisKK01NSU8gV1JJVEUgQkFSUklFUgorLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBMaW51eCBrZXJuZWwgYWxzbyBoYXMgYSBzcGVjaWFsIGJhcnJpZXIgZm9yIHVzZSB3aXRoIG1lbW9yeS1tYXBwZWQgSS9PCit3cml0ZXM6CisKKwltbWlvd2IoKTsKKworVGhpcyBpcyBhIHZhcmlhdGlvbiBvbiB0aGUgbWFuZGF0b3J5IHdyaXRlIGJhcnJpZXIgdGhhdCBjYXVzZXMgd3JpdGVzIHRvIHdlYWtseQorb3JkZXJlZCBJL08gcmVnaW9ucyB0byBiZSBwYXJ0aWFsbHkgb3JkZXJlZC4gIEl0cyBlZmZlY3RzIG1heSBnbyBiZXlvbmQgdGhlCitDUFUtPkhhcmR3YXJlIGludGVyZmFjZSBhbmQgYWN0dWFsbHkgYWZmZWN0IHRoZSBoYXJkd2FyZSBhdCBzb21lIGxldmVsLgorCitTZWUgdGhlIHN1YnNlY3Rpb24gIkxvY2tzIHZzIEkvTyBhY2Nlc3NlcyIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorSU1QTElDSVQgS0VSTkVMIE1FTU9SWSBCQVJSSUVSUworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitTb21lIG9mIHRoZSBvdGhlciBmdW5jdGlvbnMgaW4gdGhlIGxpbnV4IGtlcm5lbCBpbXBseSBtZW1vcnkgYmFycmllcnMsIGFtb25nc3QKK3doaWNoIGFyZSBsb2NraW5nIGFuZCBzY2hlZHVsaW5nIGZ1bmN0aW9ucy4KKworVGhpcyBzcGVjaWZpY2F0aW9uIGlzIGEgX21pbmltdW1fIGd1YXJhbnRlZTsgYW55IHBhcnRpY3VsYXIgYXJjaGl0ZWN0dXJlIG1heQorcHJvdmlkZSBtb3JlIHN1YnN0YW50aWFsIGd1YXJhbnRlZXMsIGJ1dCB0aGVzZSBtYXkgbm90IGJlIHJlbGllZCB1cG9uIG91dHNpZGUKK29mIGFyY2ggc3BlY2lmaWMgY29kZS4KKworCitBQ1FVSVJJTkcgRlVOQ1RJT05TCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBMaW51eCBrZXJuZWwgaGFzIGEgbnVtYmVyIG9mIGxvY2tpbmcgY29uc3RydWN0czoKKworICgqKSBzcGluIGxvY2tzCisgKCopIFIvVyBzcGluIGxvY2tzCisgKCopIG11dGV4ZXMKKyAoKikgc2VtYXBob3JlcworICgqKSBSL1cgc2VtYXBob3JlcworCitJbiBhbGwgY2FzZXMgdGhlcmUgYXJlIHZhcmlhbnRzIG9uICJBQ1FVSVJFIiBvcGVyYXRpb25zIGFuZCAiUkVMRUFTRSIgb3BlcmF0aW9ucworZm9yIGVhY2ggY29uc3RydWN0LiAgVGhlc2Ugb3BlcmF0aW9ucyBhbGwgaW1wbHkgY2VydGFpbiBiYXJyaWVyczoKKworICgxKSBBQ1FVSVJFIG9wZXJhdGlvbiBpbXBsaWNhdGlvbjoKKworICAgICBNZW1vcnkgb3BlcmF0aW9ucyBpc3N1ZWQgYWZ0ZXIgdGhlIEFDUVVJUkUgd2lsbCBiZSBjb21wbGV0ZWQgYWZ0ZXIgdGhlCisgICAgIEFDUVVJUkUgb3BlcmF0aW9uIGhhcyBjb21wbGV0ZWQuCisKKyAgICAgTWVtb3J5IG9wZXJhdGlvbnMgaXNzdWVkIGJlZm9yZSB0aGUgQUNRVUlSRSBtYXkgYmUgY29tcGxldGVkIGFmdGVyCisgICAgIHRoZSBBQ1FVSVJFIG9wZXJhdGlvbiBoYXMgY29tcGxldGVkLiAgQW4gc21wX21iX19iZWZvcmVfc3BpbmxvY2soKSwKKyAgICAgY29tYmluZWQgd2l0aCBhIGZvbGxvd2luZyBBQ1FVSVJFLCBvcmRlcnMgcHJpb3Igc3RvcmVzIGFnYWluc3QKKyAgICAgc3Vic2VxdWVudCBsb2FkcyBhbmQgc3RvcmVzLiBOb3RlIHRoYXQgdGhpcyBpcyB3ZWFrZXIgdGhhbiBzbXBfbWIoKSEKKyAgICAgVGhlIHNtcF9tYl9fYmVmb3JlX3NwaW5sb2NrKCkgcHJpbWl0aXZlIGlzIGZyZWUgb24gbWFueSBhcmNoaXRlY3R1cmVzLgorCisgKDIpIFJFTEVBU0Ugb3BlcmF0aW9uIGltcGxpY2F0aW9uOgorCisgICAgIE1lbW9yeSBvcGVyYXRpb25zIGlzc3VlZCBiZWZvcmUgdGhlIFJFTEVBU0Ugd2lsbCBiZSBjb21wbGV0ZWQgYmVmb3JlIHRoZQorICAgICBSRUxFQVNFIG9wZXJhdGlvbiBoYXMgY29tcGxldGVkLgorCisgICAgIE1lbW9yeSBvcGVyYXRpb25zIGlzc3VlZCBhZnRlciB0aGUgUkVMRUFTRSBtYXkgYmUgY29tcGxldGVkIGJlZm9yZSB0aGUKKyAgICAgUkVMRUFTRSBvcGVyYXRpb24gaGFzIGNvbXBsZXRlZC4KKworICgzKSBBQ1FVSVJFIHZzIEFDUVVJUkUgaW1wbGljYXRpb246CisKKyAgICAgQWxsIEFDUVVJUkUgb3BlcmF0aW9ucyBpc3N1ZWQgYmVmb3JlIGFub3RoZXIgQUNRVUlSRSBvcGVyYXRpb24gd2lsbCBiZQorICAgICBjb21wbGV0ZWQgYmVmb3JlIHRoYXQgQUNRVUlSRSBvcGVyYXRpb24uCisKKyAoNCkgQUNRVUlSRSB2cyBSRUxFQVNFIGltcGxpY2F0aW9uOgorCisgICAgIEFsbCBBQ1FVSVJFIG9wZXJhdGlvbnMgaXNzdWVkIGJlZm9yZSBhIFJFTEVBU0Ugb3BlcmF0aW9uIHdpbGwgYmUKKyAgICAgY29tcGxldGVkIGJlZm9yZSB0aGUgUkVMRUFTRSBvcGVyYXRpb24uCisKKyAoNSkgRmFpbGVkIGNvbmRpdGlvbmFsIEFDUVVJUkUgaW1wbGljYXRpb246CisKKyAgICAgQ2VydGFpbiBsb2NraW5nIHZhcmlhbnRzIG9mIHRoZSBBQ1FVSVJFIG9wZXJhdGlvbiBtYXkgZmFpbCwgZWl0aGVyIGR1ZSB0bworICAgICBiZWluZyB1bmFibGUgdG8gZ2V0IHRoZSBsb2NrIGltbWVkaWF0ZWx5LCBvciBkdWUgdG8gcmVjZWl2aW5nIGFuIHVuYmxvY2tlZAorICAgICBzaWduYWwgd2hpbHN0IGFzbGVlcCB3YWl0aW5nIGZvciB0aGUgbG9jayB0byBiZWNvbWUgYXZhaWxhYmxlLiAgRmFpbGVkCisgICAgIGxvY2tzIGRvIG5vdCBpbXBseSBhbnkgc29ydCBvZiBiYXJyaWVyLgorCitbIV0gTm90ZTogb25lIG9mIHRoZSBjb25zZXF1ZW5jZXMgb2YgbG9jayBBQ1FVSVJFcyBhbmQgUkVMRUFTRXMgYmVpbmcgb25seQorb25lLXdheSBiYXJyaWVycyBpcyB0aGF0IHRoZSBlZmZlY3RzIG9mIGluc3RydWN0aW9ucyBvdXRzaWRlIG9mIGEgY3JpdGljYWwKK3NlY3Rpb24gbWF5IHNlZXAgaW50byB0aGUgaW5zaWRlIG9mIHRoZSBjcml0aWNhbCBzZWN0aW9uLgorCitBbiBBQ1FVSVJFIGZvbGxvd2VkIGJ5IGEgUkVMRUFTRSBtYXkgbm90IGJlIGFzc3VtZWQgdG8gYmUgZnVsbCBtZW1vcnkgYmFycmllcgorYmVjYXVzZSBpdCBpcyBwb3NzaWJsZSBmb3IgYW4gYWNjZXNzIHByZWNlZGluZyB0aGUgQUNRVUlSRSB0byBoYXBwZW4gYWZ0ZXIgdGhlCitBQ1FVSVJFLCBhbmQgYW4gYWNjZXNzIGZvbGxvd2luZyB0aGUgUkVMRUFTRSB0byBoYXBwZW4gYmVmb3JlIHRoZSBSRUxFQVNFLCBhbmQKK3RoZSB0d28gYWNjZXNzZXMgY2FuIHRoZW1zZWx2ZXMgdGhlbiBjcm9zczoKKworCSpBID0gYTsKKwlBQ1FVSVJFIE0KKwlSRUxFQVNFIE0KKwkqQiA9IGI7CisKK21heSBvY2N1ciBhczoKKworCUFDUVVJUkUgTSwgU1RPUkUgKkIsIFNUT1JFICpBLCBSRUxFQVNFIE0KKworV2hlbiB0aGUgQUNRVUlSRSBhbmQgUkVMRUFTRSBhcmUgYSBsb2NrIGFjcXVpc2l0aW9uIGFuZCByZWxlYXNlLAorcmVzcGVjdGl2ZWx5LCB0aGlzIHNhbWUgcmVvcmRlcmluZyBjYW4gb2NjdXIgaWYgdGhlIGxvY2sncyBBQ1FVSVJFIGFuZAorUkVMRUFTRSBhcmUgdG8gdGhlIHNhbWUgbG9jayB2YXJpYWJsZSwgYnV0IG9ubHkgZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YKK2Fub3RoZXIgQ1BVIG5vdCBob2xkaW5nIHRoYXQgbG9jay4gIEluIHNob3J0LCBhIEFDUVVJUkUgZm9sbG93ZWQgYnkgYW4KK1JFTEVBU0UgbWF5IC1ub3QtIGJlIGFzc3VtZWQgdG8gYmUgYSBmdWxsIG1lbW9yeSBiYXJyaWVyLgorCitTaW1pbGFybHksIHRoZSByZXZlcnNlIGNhc2Ugb2YgYSBSRUxFQVNFIGZvbGxvd2VkIGJ5IGFuIEFDUVVJUkUgZG9lcworbm90IGltcGx5IGEgZnVsbCBtZW1vcnkgYmFycmllci4gIFRoZXJlZm9yZSwgdGhlIENQVSdzIGV4ZWN1dGlvbiBvZiB0aGUKK2NyaXRpY2FsIHNlY3Rpb25zIGNvcnJlc3BvbmRpbmcgdG8gdGhlIFJFTEVBU0UgYW5kIHRoZSBBQ1FVSVJFIGNhbiBjcm9zcywKK3NvIHRoYXQ6CisKKwkqQSA9IGE7CisJUkVMRUFTRSBNCisJQUNRVUlSRSBOCisJKkIgPSBiOworCitjb3VsZCBvY2N1ciBhczoKKworCUFDUVVJUkUgTiwgU1RPUkUgKkIsIFNUT1JFICpBLCBSRUxFQVNFIE0KKworSXQgbWlnaHQgYXBwZWFyIHRoYXQgdGhpcyByZW9yZGVyaW5nIGNvdWxkIGludHJvZHVjZSBhIGRlYWRsb2NrLgorSG93ZXZlciwgdGhpcyBjYW5ub3QgaGFwcGVuIGJlY2F1c2UgaWYgc3VjaCBhIGRlYWRsb2NrIHRocmVhdGVuZWQsCit0aGUgUkVMRUFTRSB3b3VsZCBzaW1wbHkgY29tcGxldGUsIHRoZXJlYnkgYXZvaWRpbmcgdGhlIGRlYWRsb2NrLgorCisJV2h5IGRvZXMgdGhpcyB3b3JrPworCisJT25lIGtleSBwb2ludCBpcyB0aGF0IHdlIGFyZSBvbmx5IHRhbGtpbmcgYWJvdXQgdGhlIENQVSBkb2luZworCXRoZSByZW9yZGVyaW5nLCBub3QgdGhlIGNvbXBpbGVyLiAgSWYgdGhlIGNvbXBpbGVyIChvciwgZm9yCisJdGhhdCBtYXR0ZXIsIHRoZSBkZXZlbG9wZXIpIHN3aXRjaGVkIHRoZSBvcGVyYXRpb25zLCBkZWFkbG9jaworCS1jb3VsZC0gb2NjdXIuCisKKwlCdXQgc3VwcG9zZSB0aGUgQ1BVIHJlb3JkZXJlZCB0aGUgb3BlcmF0aW9ucy4gIEluIHRoaXMgY2FzZSwKKwl0aGUgdW5sb2NrIHByZWNlZGVzIHRoZSBsb2NrIGluIHRoZSBhc3NlbWJseSBjb2RlLiAgVGhlIENQVQorCXNpbXBseSBlbGVjdGVkIHRvIHRyeSBleGVjdXRpbmcgdGhlIGxhdGVyIGxvY2sgb3BlcmF0aW9uIGZpcnN0LgorCUlmIHRoZXJlIGlzIGEgZGVhZGxvY2ssIHRoaXMgbG9jayBvcGVyYXRpb24gd2lsbCBzaW1wbHkgc3BpbiAob3IKKwl0cnkgdG8gc2xlZXAsIGJ1dCBtb3JlIG9uIHRoYXQgbGF0ZXIpLglUaGUgQ1BVIHdpbGwgZXZlbnR1YWxseQorCWV4ZWN1dGUgdGhlIHVubG9jayBvcGVyYXRpb24gKHdoaWNoIHByZWNlZGVkIHRoZSBsb2NrIG9wZXJhdGlvbgorCWluIHRoZSBhc3NlbWJseSBjb2RlKSwgd2hpY2ggd2lsbCB1bnJhdmVsIHRoZSBwb3RlbnRpYWwgZGVhZGxvY2ssCisJYWxsb3dpbmcgdGhlIGxvY2sgb3BlcmF0aW9uIHRvIHN1Y2NlZWQuCisKKwlCdXQgd2hhdCBpZiB0aGUgbG9jayBpcyBhIHNsZWVwbG9jaz8gIEluIHRoYXQgY2FzZSwgdGhlIGNvZGUgd2lsbAorCXRyeSB0byBlbnRlciB0aGUgc2NoZWR1bGVyLCB3aGVyZSBpdCB3aWxsIGV2ZW50dWFsbHkgZW5jb3VudGVyCisJYSBtZW1vcnkgYmFycmllciwgd2hpY2ggd2lsbCBmb3JjZSB0aGUgZWFybGllciB1bmxvY2sgb3BlcmF0aW9uCisJdG8gY29tcGxldGUsIGFnYWluIHVucmF2ZWxpbmcgdGhlIGRlYWRsb2NrLiAgVGhlcmUgbWlnaHQgYmUKKwlhIHNsZWVwLXVubG9jayByYWNlLCBidXQgdGhlIGxvY2tpbmcgcHJpbWl0aXZlIG5lZWRzIHRvIHJlc29sdmUKKwlzdWNoIHJhY2VzIHByb3Blcmx5IGluIGFueSBjYXNlLgorCitMb2NrcyBhbmQgc2VtYXBob3JlcyBtYXkgbm90IHByb3ZpZGUgYW55IGd1YXJhbnRlZSBvZiBvcmRlcmluZyBvbiBVUCBjb21waWxlZAorc3lzdGVtcywgYW5kIHNvIGNhbm5vdCBiZSBjb3VudGVkIG9uIGluIHN1Y2ggYSBzaXR1YXRpb24gdG8gYWN0dWFsbHkgYWNoaWV2ZQorYW55dGhpbmcgYXQgYWxsIC0gZXNwZWNpYWxseSB3aXRoIHJlc3BlY3QgdG8gSS9PIGFjY2Vzc2VzIC0gdW5sZXNzIGNvbWJpbmVkCit3aXRoIGludGVycnVwdCBkaXNhYmxpbmcgb3BlcmF0aW9ucy4KKworU2VlIGFsc28gdGhlIHNlY3Rpb24gb24gIkludGVyLUNQVSBsb2NraW5nIGJhcnJpZXIgZWZmZWN0cyIuCisKKworQXMgYW4gZXhhbXBsZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZzoKKworCSpBID0gYTsKKwkqQiA9IGI7CisJQUNRVUlSRQorCSpDID0gYzsKKwkqRCA9IGQ7CisJUkVMRUFTRQorCSpFID0gZTsKKwkqRiA9IGY7CisKK1RoZSBmb2xsb3dpbmcgc2VxdWVuY2Ugb2YgZXZlbnRzIGlzIGFjY2VwdGFibGU6CisKKwlBQ1FVSVJFLCB7KkYsKkF9LCAqRSwgeypDLCpEfSwgKkIsIFJFTEVBU0UKKworCVsrXSBOb3RlIHRoYXQgeypGLCpBfSBpbmRpY2F0ZXMgYSBjb21iaW5lZCBhY2Nlc3MuCisKK0J1dCBub25lIG9mIHRoZSBmb2xsb3dpbmcgYXJlOgorCisJeypGLCpBfSwgKkIsCUFDUVVJUkUsICpDLCAqRCwJUkVMRUFTRSwgKkUKKwkqQSwgKkIsICpDLAlBQ1FVSVJFLCAqRCwJCVJFTEVBU0UsICpFLCAqRgorCSpBLCAqQiwJCUFDUVVJUkUsICpDLAkJUkVMRUFTRSwgKkQsICpFLCAqRgorCSpCLAkJQUNRVUlSRSwgKkMsICpELAlSRUxFQVNFLCB7KkYsKkF9LCAqRQorCisKKworSU5URVJSVVBUIERJU0FCTElORyBGVU5DVElPTlMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Z1bmN0aW9ucyB0aGF0IGRpc2FibGUgaW50ZXJydXB0cyAoQUNRVUlSRSBlcXVpdmFsZW50KSBhbmQgZW5hYmxlIGludGVycnVwdHMKKyhSRUxFQVNFIGVxdWl2YWxlbnQpIHdpbGwgYWN0IGFzIGNvbXBpbGVyIGJhcnJpZXJzIG9ubHkuICBTbyBpZiBtZW1vcnkgb3IgSS9PCitiYXJyaWVycyBhcmUgcmVxdWlyZWQgaW4gc3VjaCBhIHNpdHVhdGlvbiwgdGhleSBtdXN0IGJlIHByb3ZpZGVkIGZyb20gc29tZQorb3RoZXIgbWVhbnMuCisKKworU0xFRVAgQU5EIFdBS0UtVVAgRlVOQ1RJT05TCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU2xlZXBpbmcgYW5kIHdha2luZyBvbiBhbiBldmVudCBmbGFnZ2VkIGluIGdsb2JhbCBkYXRhIGNhbiBiZSB2aWV3ZWQgYXMgYW4KK2ludGVyYWN0aW9uIGJldHdlZW4gdHdvIHBpZWNlcyBvZiBkYXRhOiB0aGUgdGFzayBzdGF0ZSBvZiB0aGUgdGFzayB3YWl0aW5nIGZvcgordGhlIGV2ZW50IGFuZCB0aGUgZ2xvYmFsIGRhdGEgdXNlZCB0byBpbmRpY2F0ZSB0aGUgZXZlbnQuICBUbyBtYWtlIHN1cmUgdGhhdAordGhlc2UgYXBwZWFyIHRvIGhhcHBlbiBpbiB0aGUgcmlnaHQgb3JkZXIsIHRoZSBwcmltaXRpdmVzIHRvIGJlZ2luIHRoZSBwcm9jZXNzCitvZiBnb2luZyB0byBzbGVlcCwgYW5kIHRoZSBwcmltaXRpdmVzIHRvIGluaXRpYXRlIGEgd2FrZSB1cCBpbXBseSBjZXJ0YWluCitiYXJyaWVycy4KKworRmlyc3RseSwgdGhlIHNsZWVwZXIgbm9ybWFsbHkgZm9sbG93cyBzb21ldGhpbmcgbGlrZSB0aGlzIHNlcXVlbmNlIG9mIGV2ZW50czoKKworCWZvciAoOzspIHsKKwkJc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19VTklOVEVSUlVQVElCTEUpOworCQlpZiAoZXZlbnRfaW5kaWNhdGVkKQorCQkJYnJlYWs7CisJCXNjaGVkdWxlKCk7CisJfQorCitBIGdlbmVyYWwgbWVtb3J5IGJhcnJpZXIgaXMgaW50ZXJwb2xhdGVkIGF1dG9tYXRpY2FsbHkgYnkgc2V0X2N1cnJlbnRfc3RhdGUoKQorYWZ0ZXIgaXQgaGFzIGFsdGVyZWQgdGhlIHRhc2sgc3RhdGU6CisKKwlDUFUgMQorCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwlzZXRfY3VycmVudF9zdGF0ZSgpOworCSAgc21wX3N0b3JlX21iKCk7CisJICAgIFNUT1JFIGN1cnJlbnQtPnN0YXRlCisJICAgIDxnZW5lcmFsIGJhcnJpZXI+CisJTE9BRCBldmVudF9pbmRpY2F0ZWQKKworc2V0X2N1cnJlbnRfc3RhdGUoKSBtYXkgYmUgd3JhcHBlZCBieToKKworCXByZXBhcmVfdG9fd2FpdCgpOworCXByZXBhcmVfdG9fd2FpdF9leGNsdXNpdmUoKTsKKword2hpY2ggdGhlcmVmb3JlIGFsc28gaW1wbHkgYSBnZW5lcmFsIG1lbW9yeSBiYXJyaWVyIGFmdGVyIHNldHRpbmcgdGhlIHN0YXRlLgorVGhlIHdob2xlIHNlcXVlbmNlIGFib3ZlIGlzIGF2YWlsYWJsZSBpbiB2YXJpb3VzIGNhbm5lZCBmb3JtcywgYWxsIG9mIHdoaWNoCitpbnRlcnBvbGF0ZSB0aGUgbWVtb3J5IGJhcnJpZXIgaW4gdGhlIHJpZ2h0IHBsYWNlOgorCisJd2FpdF9ldmVudCgpOworCXdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZSgpOworCXdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZV9leGNsdXNpdmUoKTsKKwl3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dCgpOworCXdhaXRfZXZlbnRfa2lsbGFibGUoKTsKKwl3YWl0X2V2ZW50X3RpbWVvdXQoKTsKKwl3YWl0X29uX2JpdCgpOworCXdhaXRfb25fYml0X2xvY2soKTsKKworCitTZWNvbmRseSwgY29kZSB0aGF0IHBlcmZvcm1zIGEgd2FrZSB1cCBub3JtYWxseSBmb2xsb3dzIHNvbWV0aGluZyBsaWtlIHRoaXM6CisKKwlldmVudF9pbmRpY2F0ZWQgPSAxOworCXdha2VfdXAoJmV2ZW50X3dhaXRfcXVldWUpOworCitvcjoKKworCWV2ZW50X2luZGljYXRlZCA9IDE7CisJd2FrZV91cF9wcm9jZXNzKGV2ZW50X2RhZW1vbik7CisKK0Egd3JpdGUgbWVtb3J5IGJhcnJpZXIgaXMgaW1wbGllZCBieSB3YWtlX3VwKCkgYW5kIGNvLiBpZiBhbmQgb25seSBpZiB0aGV5IHdha2UKK3NvbWV0aGluZyB1cC4gIFRoZSBiYXJyaWVyIG9jY3VycyBiZWZvcmUgdGhlIHRhc2sgc3RhdGUgaXMgY2xlYXJlZCwgYW5kIHNvIHNpdHMKK2JldHdlZW4gdGhlIFNUT1JFIHRvIGluZGljYXRlIHRoZSBldmVudCBhbmQgdGhlIFNUT1JFIHRvIHNldCBUQVNLX1JVTk5JTkc6CisKKwlDUFUgMQkJCQlDUFUgMgorCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCXNldF9jdXJyZW50X3N0YXRlKCk7CQlTVE9SRSBldmVudF9pbmRpY2F0ZWQKKwkgIHNtcF9zdG9yZV9tYigpOwkJd2FrZV91cCgpOworCSAgICBTVE9SRSBjdXJyZW50LT5zdGF0ZQkgIDx3cml0ZSBiYXJyaWVyPgorCSAgICA8Z2VuZXJhbCBiYXJyaWVyPgkJICBTVE9SRSBjdXJyZW50LT5zdGF0ZQorCUxPQUQgZXZlbnRfaW5kaWNhdGVkCisKK1RvIHJlcGVhdCwgdGhpcyB3cml0ZSBtZW1vcnkgYmFycmllciBpcyBwcmVzZW50IGlmIGFuZCBvbmx5IGlmIHNvbWV0aGluZworaXMgYWN0dWFsbHkgYXdha2VuZWQuICBUbyBzZWUgdGhpcywgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBvZgorZXZlbnRzLCB3aGVyZSBYIGFuZCBZIGFyZSBib3RoIGluaXRpYWxseSB6ZXJvOgorCisJQ1BVIDEJCQkJQ1BVIDIKKwk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwlYID0gMTsJCQkJU1RPUkUgZXZlbnRfaW5kaWNhdGVkCisJc21wX21iKCk7CQkJd2FrZV91cCgpOworCVkgPSAxOwkJCQl3YWl0X2V2ZW50KHdxLCBZID09IDEpOworCXdha2VfdXAoKTsJCQkgIGxvYWQgZnJvbSBZIHNlZXMgMSwgbm8gbWVtb3J5IGJhcnJpZXIKKwkJCQkJbG9hZCBmcm9tIFggbWlnaHQgc2VlIDAKKworSW4gY29udHJhc3QsIGlmIGEgd2FrZXVwIGRvZXMgb2NjdXIsIENQVSAyJ3MgbG9hZCBmcm9tIFggd291bGQgYmUgZ3VhcmFudGVlZAordG8gc2VlIDEuCisKK1RoZSBhdmFpbGFibGUgd2FrZXIgZnVuY3Rpb25zIGluY2x1ZGU6CisKKwljb21wbGV0ZSgpOworCXdha2VfdXAoKTsKKwl3YWtlX3VwX2FsbCgpOworCXdha2VfdXBfYml0KCk7CisJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCk7CisJd2FrZV91cF9pbnRlcnJ1cHRpYmxlX2FsbCgpOworCXdha2VfdXBfaW50ZXJydXB0aWJsZV9ucigpOworCXdha2VfdXBfaW50ZXJydXB0aWJsZV9wb2xsKCk7CisJd2FrZV91cF9pbnRlcnJ1cHRpYmxlX3N5bmMoKTsKKwl3YWtlX3VwX2ludGVycnVwdGlibGVfc3luY19wb2xsKCk7CisJd2FrZV91cF9sb2NrZWQoKTsKKwl3YWtlX3VwX2xvY2tlZF9wb2xsKCk7CisJd2FrZV91cF9ucigpOworCXdha2VfdXBfcG9sbCgpOworCXdha2VfdXBfcHJvY2VzcygpOworCisKK1shXSBOb3RlIHRoYXQgdGhlIG1lbW9yeSBiYXJyaWVycyBpbXBsaWVkIGJ5IHRoZSBzbGVlcGVyIGFuZCB0aGUgd2FrZXIgZG8gX25vdF8KK29yZGVyIG11bHRpcGxlIHN0b3JlcyBiZWZvcmUgdGhlIHdha2UtdXAgd2l0aCByZXNwZWN0IHRvIGxvYWRzIG9mIHRob3NlIHN0b3JlZAordmFsdWVzIGFmdGVyIHRoZSBzbGVlcGVyIGhhcyBjYWxsZWQgc2V0X2N1cnJlbnRfc3RhdGUoKS4gIEZvciBpbnN0YW5jZSwgaWYgdGhlCitzbGVlcGVyIGRvZXM6CisKKwlzZXRfY3VycmVudF9zdGF0ZShUQVNLX0lOVEVSUlVQVElCTEUpOworCWlmIChldmVudF9pbmRpY2F0ZWQpCisJCWJyZWFrOworCV9fc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19SVU5OSU5HKTsKKwlkb19zb21ldGhpbmcobXlfZGF0YSk7CisKK2FuZCB0aGUgd2FrZXIgZG9lczoKKworCW15X2RhdGEgPSB2YWx1ZTsKKwlldmVudF9pbmRpY2F0ZWQgPSAxOworCXdha2VfdXAoJmV2ZW50X3dhaXRfcXVldWUpOworCit0aGVyZSdzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBjaGFuZ2UgdG8gZXZlbnRfaW5kaWNhdGVkIHdpbGwgYmUgcGVyY2VpdmVkIGJ5Cit0aGUgc2xlZXBlciBhcyBjb21pbmcgYWZ0ZXIgdGhlIGNoYW5nZSB0byBteV9kYXRhLiAgSW4gc3VjaCBhIGNpcmN1bXN0YW5jZSwgdGhlCitjb2RlIG9uIGJvdGggc2lkZXMgbXVzdCBpbnRlcnBvbGF0ZSBpdHMgb3duIG1lbW9yeSBiYXJyaWVycyBiZXR3ZWVuIHRoZQorc2VwYXJhdGUgZGF0YSBhY2Nlc3Nlcy4gIFRodXMgdGhlIGFib3ZlIHNsZWVwZXIgb3VnaHQgdG8gZG86CisKKwlzZXRfY3VycmVudF9zdGF0ZShUQVNLX0lOVEVSUlVQVElCTEUpOworCWlmIChldmVudF9pbmRpY2F0ZWQpIHsKKwkJc21wX3JtYigpOworCQlkb19zb21ldGhpbmcobXlfZGF0YSk7CisJfQorCithbmQgdGhlIHdha2VyIHNob3VsZCBkbzoKKworCW15X2RhdGEgPSB2YWx1ZTsKKwlzbXBfd21iKCk7CisJZXZlbnRfaW5kaWNhdGVkID0gMTsKKwl3YWtlX3VwKCZldmVudF93YWl0X3F1ZXVlKTsKKworCitNSVNDRUxMQU5FT1VTIEZVTkNUSU9OUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT3RoZXIgZnVuY3Rpb25zIHRoYXQgaW1wbHkgYmFycmllcnM6CisKKyAoKikgc2NoZWR1bGUoKSBhbmQgc2ltaWxhciBpbXBseSBmdWxsIG1lbW9yeSBiYXJyaWVycy4KKworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorSU5URVItQ1BVIEFDUVVJUklORyBCQVJSSUVSIEVGRkVDVFMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK09uIFNNUCBzeXN0ZW1zIGxvY2tpbmcgcHJpbWl0aXZlcyBnaXZlIGEgbW9yZSBzdWJzdGFudGlhbCBmb3JtIG9mIGJhcnJpZXI6IG9uZQordGhhdCBkb2VzIGFmZmVjdCBtZW1vcnkgYWNjZXNzIG9yZGVyaW5nIG9uIG90aGVyIENQVXMsIHdpdGhpbiB0aGUgY29udGV4dCBvZgorY29uZmxpY3Qgb24gYW55IHBhcnRpY3VsYXIgbG9jay4KKworCitBQ1FVSVJFUyBWUyBNRU1PUlkgQUNDRVNTRVMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb25zaWRlciB0aGUgZm9sbG93aW5nOiB0aGUgc3lzdGVtIGhhcyBhIHBhaXIgb2Ygc3BpbmxvY2tzIChNKSBhbmQgKFEpLCBhbmQKK3RocmVlIENQVXM7IHRoZW4gc2hvdWxkIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2Ugb2YgZXZlbnRzIG9jY3VyOgorCisJQ1BVIDEJCQkJQ1BVIDIKKwk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwlXUklURV9PTkNFKCpBLCBhKTsJCVdSSVRFX09OQ0UoKkUsIGUpOworCUFDUVVJUkUgTQkJCUFDUVVJUkUgUQorCVdSSVRFX09OQ0UoKkIsIGIpOwkJV1JJVEVfT05DRSgqRiwgZik7CisJV1JJVEVfT05DRSgqQywgYyk7CQlXUklURV9PTkNFKCpHLCBnKTsKKwlSRUxFQVNFIE0JCQlSRUxFQVNFIFEKKwlXUklURV9PTkNFKCpELCBkKTsJCVdSSVRFX09OQ0UoKkgsIGgpOworCitUaGVuIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSBhcyB0byB3aGF0IG9yZGVyIENQVSAzIHdpbGwgc2VlIHRoZSBhY2Nlc3NlcyB0byAqQQordGhyb3VnaCAqSCBvY2N1ciBpbiwgb3RoZXIgdGhhbiB0aGUgY29uc3RyYWludHMgaW1wb3NlZCBieSB0aGUgc2VwYXJhdGUgbG9ja3MKK29uIHRoZSBzZXBhcmF0ZSBDUFVzLiBJdCBtaWdodCwgZm9yIGV4YW1wbGUsIHNlZToKKworCSpFLCBBQ1FVSVJFIE0sIEFDUVVJUkUgUSwgKkcsICpDLCAqRiwgKkEsICpCLCBSRUxFQVNFIFEsICpELCAqSCwgUkVMRUFTRSBNCisKK0J1dCBpdCB3b24ndCBzZWUgYW55IG9mOgorCisJKkIsICpDIG9yICpEIHByZWNlZGluZyBBQ1FVSVJFIE0KKwkqQSwgKkIgb3IgKkMgZm9sbG93aW5nIFJFTEVBU0UgTQorCSpGLCAqRyBvciAqSCBwcmVjZWRpbmcgQUNRVUlSRSBRCisJKkUsICpGIG9yICpHIGZvbGxvd2luZyBSRUxFQVNFIFEKKworCisKK0FDUVVJUkVTIFZTIEkvTyBBQ0NFU1NFUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1VuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyAoZXNwZWNpYWxseSBpbnZvbHZpbmcgTlVNQSksIEkvTyBhY2Nlc3NlcyB3aXRoaW4KK3R3byBzcGlubG9ja2VkIHNlY3Rpb25zIG9uIHR3byBkaWZmZXJlbnQgQ1BVcyBtYXkgYmUgc2VlbiBhcyBpbnRlcmxlYXZlZCBieSB0aGUKK1BDSSBicmlkZ2UsIGJlY2F1c2UgdGhlIFBDSSBicmlkZ2UgZG9lcyBub3QgbmVjZXNzYXJpbHkgcGFydGljaXBhdGUgaW4gdGhlCitjYWNoZS1jb2hlcmVuY2UgcHJvdG9jb2wsIGFuZCBpcyB0aGVyZWZvcmUgaW5jYXBhYmxlIG9mIGlzc3VpbmcgdGhlIHJlcXVpcmVkCityZWFkIG1lbW9yeSBiYXJyaWVycy4KKworRm9yIGV4YW1wbGU6CisKKwlDUFUgMQkJCQlDUFUgMgorCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCXNwaW5fbG9jayhRKQorCXdyaXRlbCgwLCBBRERSKQorCXdyaXRlbCgxLCBEQVRBKTsKKwlzcGluX3VubG9jayhRKTsKKwkJCQkJc3Bpbl9sb2NrKFEpOworCQkJCQl3cml0ZWwoNCwgQUREUik7CisJCQkJCXdyaXRlbCg1LCBEQVRBKTsKKwkJCQkJc3Bpbl91bmxvY2soUSk7CisKK21heSBiZSBzZWVuIGJ5IHRoZSBQQ0kgYnJpZGdlIGFzIGZvbGxvd3M6CisKKwlTVE9SRSAqQUREUiA9IDAsIFNUT1JFICpBRERSID0gNCwgU1RPUkUgKkRBVEEgPSAxLCBTVE9SRSAqREFUQSA9IDUKKword2hpY2ggd291bGQgcHJvYmFibHkgY2F1c2UgdGhlIGhhcmR3YXJlIHRvIG1hbGZ1bmN0aW9uLgorCisKK1doYXQgaXMgbmVjZXNzYXJ5IGhlcmUgaXMgdG8gaW50ZXJ2ZW5lIHdpdGggYW4gbW1pb3diKCkgYmVmb3JlIGRyb3BwaW5nIHRoZQorc3BpbmxvY2ssIGZvciBleGFtcGxlOgorCisJQ1BVIDEJCQkJQ1BVIDIKKwk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwlzcGluX2xvY2soUSkKKwl3cml0ZWwoMCwgQUREUikKKwl3cml0ZWwoMSwgREFUQSk7CisJbW1pb3diKCk7CisJc3Bpbl91bmxvY2soUSk7CisJCQkJCXNwaW5fbG9jayhRKTsKKwkJCQkJd3JpdGVsKDQsIEFERFIpOworCQkJCQl3cml0ZWwoNSwgREFUQSk7CisJCQkJCW1taW93YigpOworCQkJCQlzcGluX3VubG9jayhRKTsKKwordGhpcyB3aWxsIGVuc3VyZSB0aGF0IHRoZSB0d28gc3RvcmVzIGlzc3VlZCBvbiBDUFUgMSBhcHBlYXIgYXQgdGhlIFBDSSBicmlkZ2UKK2JlZm9yZSBlaXRoZXIgb2YgdGhlIHN0b3JlcyBpc3N1ZWQgb24gQ1BVIDIuCisKKworRnVydGhlcm1vcmUsIGZvbGxvd2luZyBhIHN0b3JlIGJ5IGEgbG9hZCBmcm9tIHRoZSBzYW1lIGRldmljZSBvYnZpYXRlcyB0aGUgbmVlZAorZm9yIHRoZSBtbWlvd2IoKSwgYmVjYXVzZSB0aGUgbG9hZCBmb3JjZXMgdGhlIHN0b3JlIHRvIGNvbXBsZXRlIGJlZm9yZSB0aGUgbG9hZAoraXMgcGVyZm9ybWVkOgorCisJQ1BVIDEJCQkJQ1BVIDIKKwk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwlzcGluX2xvY2soUSkKKwl3cml0ZWwoMCwgQUREUikKKwlhID0gcmVhZGwoREFUQSk7CisJc3Bpbl91bmxvY2soUSk7CisJCQkJCXNwaW5fbG9jayhRKTsKKwkJCQkJd3JpdGVsKDQsIEFERFIpOworCQkJCQliID0gcmVhZGwoREFUQSk7CisJCQkJCXNwaW5fdW5sb2NrKFEpOworCisKK1NlZSBEb2N1bWVudGF0aW9uL0RvY0Jvb2svZGV2aWNlaW9ib29rLnRtcGwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitXSEVSRSBBUkUgTUVNT1JZIEJBUlJJRVJTIE5FRURFRD8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitVbmRlciBub3JtYWwgb3BlcmF0aW9uLCBtZW1vcnkgb3BlcmF0aW9uIHJlb3JkZXJpbmcgaXMgZ2VuZXJhbGx5IG5vdCBnb2luZyB0bworYmUgYSBwcm9ibGVtIGFzIGEgc2luZ2xlLXRocmVhZGVkIGxpbmVhciBwaWVjZSBvZiBjb2RlIHdpbGwgc3RpbGwgYXBwZWFyIHRvCit3b3JrIGNvcnJlY3RseSwgZXZlbiBpZiBpdCdzIGluIGFuIFNNUCBrZXJuZWwuICBUaGVyZSBhcmUsIGhvd2V2ZXIsIGZvdXIKK2NpcmN1bXN0YW5jZXMgaW4gd2hpY2ggcmVvcmRlcmluZyBkZWZpbml0ZWx5IF9jb3VsZF8gYmUgYSBwcm9ibGVtOgorCisgKCopIEludGVycHJvY2Vzc29yIGludGVyYWN0aW9uLgorCisgKCopIEF0b21pYyBvcGVyYXRpb25zLgorCisgKCopIEFjY2Vzc2luZyBkZXZpY2VzLgorCisgKCopIEludGVycnVwdHMuCisKKworSU5URVJQUk9DRVNTT1IgSU5URVJBQ1RJT04KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doZW4gdGhlcmUncyBhIHN5c3RlbSB3aXRoIG1vcmUgdGhhbiBvbmUgcHJvY2Vzc29yLCBtb3JlIHRoYW4gb25lIENQVSBpbiB0aGUKK3N5c3RlbSBtYXkgYmUgd29ya2luZyBvbiB0aGUgc2FtZSBkYXRhIHNldCBhdCB0aGUgc2FtZSB0aW1lLiAgVGhpcyBjYW4gY2F1c2UKK3N5bmNocm9uaXNhdGlvbiBwcm9ibGVtcywgYW5kIHRoZSB1c3VhbCB3YXkgb2YgZGVhbGluZyB3aXRoIHRoZW0gaXMgdG8gdXNlCitsb2Nrcy4gIExvY2tzLCBob3dldmVyLCBhcmUgcXVpdGUgZXhwZW5zaXZlLCBhbmQgc28gaXQgbWF5IGJlIHByZWZlcmFibGUgdG8KK29wZXJhdGUgd2l0aG91dCB0aGUgdXNlIG9mIGEgbG9jayBpZiBhdCBhbGwgcG9zc2libGUuICBJbiBzdWNoIGEgY2FzZQorb3BlcmF0aW9ucyB0aGF0IGFmZmVjdCBib3RoIENQVXMgbWF5IGhhdmUgdG8gYmUgY2FyZWZ1bGx5IG9yZGVyZWQgdG8gcHJldmVudAorYSBtYWxmdW5jdGlvbi4KKworQ29uc2lkZXIsIGZvciBleGFtcGxlLCB0aGUgUi9XIHNlbWFwaG9yZSBzbG93IHBhdGguICBIZXJlIGEgd2FpdGluZyBwcm9jZXNzIGlzCitxdWV1ZWQgb24gdGhlIHNlbWFwaG9yZSwgYnkgdmlydHVlIG9mIGl0IGhhdmluZyBhIHBpZWNlIG9mIGl0cyBzdGFjayBsaW5rZWQgdG8KK3RoZSBzZW1hcGhvcmUncyBsaXN0IG9mIHdhaXRpbmcgcHJvY2Vzc2VzOgorCisJc3RydWN0IHJ3X3NlbWFwaG9yZSB7CisJCS4uLgorCQlzcGlubG9ja190IGxvY2s7CisJCXN0cnVjdCBsaXN0X2hlYWQgd2FpdGVyczsKKwl9OworCisJc3RydWN0IHJ3c2VtX3dhaXRlciB7CisJCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKwkJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOworCX07CisKK1RvIHdha2UgdXAgYSBwYXJ0aWN1bGFyIHdhaXRlciwgdGhlIHVwX3JlYWQoKSBvciB1cF93cml0ZSgpIGZ1bmN0aW9ucyBoYXZlIHRvOgorCisgKDEpIHJlYWQgdGhlIG5leHQgcG9pbnRlciBmcm9tIHRoaXMgd2FpdGVyJ3MgcmVjb3JkIHRvIGtub3cgYXMgdG8gd2hlcmUgdGhlCisgICAgIG5leHQgd2FpdGVyIHJlY29yZCBpczsKKworICgyKSByZWFkIHRoZSBwb2ludGVyIHRvIHRoZSB3YWl0ZXIncyB0YXNrIHN0cnVjdHVyZTsKKworICgzKSBjbGVhciB0aGUgdGFzayBwb2ludGVyIHRvIHRlbGwgdGhlIHdhaXRlciBpdCBoYXMgYmVlbiBnaXZlbiB0aGUgc2VtYXBob3JlOworCisgKDQpIGNhbGwgd2FrZV91cF9wcm9jZXNzKCkgb24gdGhlIHRhc2s7IGFuZAorCisgKDUpIHJlbGVhc2UgdGhlIHJlZmVyZW5jZSBoZWxkIG9uIHRoZSB3YWl0ZXIncyB0YXNrIHN0cnVjdC4KKworSW4gb3RoZXIgd29yZHMsIGl0IGhhcyB0byBwZXJmb3JtIHRoaXMgc2VxdWVuY2Ugb2YgZXZlbnRzOgorCisJTE9BRCB3YWl0ZXItPmxpc3QubmV4dDsKKwlMT0FEIHdhaXRlci0+dGFzazsKKwlTVE9SRSB3YWl0ZXItPnRhc2s7CisJQ0FMTCB3YWtldXAKKwlSRUxFQVNFIHRhc2sKKworYW5kIGlmIGFueSBvZiB0aGVzZSBzdGVwcyBvY2N1ciBvdXQgb2Ygb3JkZXIsIHRoZW4gdGhlIHdob2xlIHRoaW5nIG1heQorbWFsZnVuY3Rpb24uCisKK09uY2UgaXQgaGFzIHF1ZXVlZCBpdHNlbGYgYW5kIGRyb3BwZWQgdGhlIHNlbWFwaG9yZSBsb2NrLCB0aGUgd2FpdGVyIGRvZXMgbm90CitnZXQgdGhlIGxvY2sgYWdhaW47IGl0IGluc3RlYWQganVzdCB3YWl0cyBmb3IgaXRzIHRhc2sgcG9pbnRlciB0byBiZSBjbGVhcmVkCitiZWZvcmUgcHJvY2VlZGluZy4gIFNpbmNlIHRoZSByZWNvcmQgaXMgb24gdGhlIHdhaXRlcidzIHN0YWNrLCB0aGlzIG1lYW5zIHRoYXQKK2lmIHRoZSB0YXNrIHBvaW50ZXIgaXMgY2xlYXJlZCBfYmVmb3JlXyB0aGUgbmV4dCBwb2ludGVyIGluIHRoZSBsaXN0IGlzIHJlYWQsCithbm90aGVyIENQVSBtaWdodCBzdGFydCBwcm9jZXNzaW5nIHRoZSB3YWl0ZXIgYW5kIG1pZ2h0IGNsb2JiZXIgdGhlIHdhaXRlcidzCitzdGFjayBiZWZvcmUgdGhlIHVwKigpIGZ1bmN0aW9uIGhhcyBhIGNoYW5jZSB0byByZWFkIHRoZSBuZXh0IHBvaW50ZXIuCisKK0NvbnNpZGVyIHRoZW4gd2hhdCBtaWdodCBoYXBwZW4gdG8gdGhlIGFib3ZlIHNlcXVlbmNlIG9mIGV2ZW50czoKKworCUNQVSAxCQkJCUNQVSAyCisJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJCQkJCWRvd25feHh4KCkKKwkJCQkJUXVldWUgd2FpdGVyCisJCQkJCVNsZWVwCisJdXBfeXl5KCkKKwlMT0FEIHdhaXRlci0+dGFzazsKKwlTVE9SRSB3YWl0ZXItPnRhc2s7CisJCQkJCVdva2VuIHVwIGJ5IG90aGVyIGV2ZW50CisJPHByZWVtcHQ+CisJCQkJCVJlc3VtZSBwcm9jZXNzaW5nCisJCQkJCWRvd25feHh4KCkgcmV0dXJucworCQkJCQljYWxsIGZvbygpCisJCQkJCWZvbygpIGNsb2JiZXJzICp3YWl0ZXIKKwk8L3ByZWVtcHQ+CisJTE9BRCB3YWl0ZXItPmxpc3QubmV4dDsKKwktLS0gT09QUyAtLS0KKworVGhpcyBjb3VsZCBiZSBkZWFsdCB3aXRoIHVzaW5nIHRoZSBzZW1hcGhvcmUgbG9jaywgYnV0IHRoZW4gdGhlIGRvd25feHh4KCkKK2Z1bmN0aW9uIGhhcyB0byBuZWVkbGVzc2x5IGdldCB0aGUgc3BpbmxvY2sgYWdhaW4gYWZ0ZXIgYmVpbmcgd29rZW4gdXAuCisKK1RoZSB3YXkgdG8gZGVhbCB3aXRoIHRoaXMgaXMgdG8gaW5zZXJ0IGEgZ2VuZXJhbCBTTVAgbWVtb3J5IGJhcnJpZXI6CisKKwlMT0FEIHdhaXRlci0+bGlzdC5uZXh0OworCUxPQUQgd2FpdGVyLT50YXNrOworCXNtcF9tYigpOworCVNUT1JFIHdhaXRlci0+dGFzazsKKwlDQUxMIHdha2V1cAorCVJFTEVBU0UgdGFzaworCitJbiB0aGlzIGNhc2UsIHRoZSBiYXJyaWVyIG1ha2VzIGEgZ3VhcmFudGVlIHRoYXQgYWxsIG1lbW9yeSBhY2Nlc3NlcyBiZWZvcmUgdGhlCitiYXJyaWVyIHdpbGwgYXBwZWFyIHRvIGhhcHBlbiBiZWZvcmUgYWxsIHRoZSBtZW1vcnkgYWNjZXNzZXMgYWZ0ZXIgdGhlIGJhcnJpZXIKK3dpdGggcmVzcGVjdCB0byB0aGUgb3RoZXIgQ1BVcyBvbiB0aGUgc3lzdGVtLiAgSXQgZG9lcyBfbm90XyBndWFyYW50ZWUgdGhhdCBhbGwKK3RoZSBtZW1vcnkgYWNjZXNzZXMgYmVmb3JlIHRoZSBiYXJyaWVyIHdpbGwgYmUgY29tcGxldGUgYnkgdGhlIHRpbWUgdGhlIGJhcnJpZXIKK2luc3RydWN0aW9uIGl0c2VsZiBpcyBjb21wbGV0ZS4KKworT24gYSBVUCBzeXN0ZW0gLSB3aGVyZSB0aGlzIHdvdWxkbid0IGJlIGEgcHJvYmxlbSAtIHRoZSBzbXBfbWIoKSBpcyBqdXN0IGEKK2NvbXBpbGVyIGJhcnJpZXIsIHRodXMgbWFraW5nIHN1cmUgdGhlIGNvbXBpbGVyIGVtaXRzIHRoZSBpbnN0cnVjdGlvbnMgaW4gdGhlCityaWdodCBvcmRlciB3aXRob3V0IGFjdHVhbGx5IGludGVydmVuaW5nIGluIHRoZSBDUFUuICBTaW5jZSB0aGVyZSdzIG9ubHkgb25lCitDUFUsIHRoYXQgQ1BVJ3MgZGVwZW5kZW5jeSBvcmRlcmluZyBsb2dpYyB3aWxsIHRha2UgY2FyZSBvZiBldmVyeXRoaW5nIGVsc2UuCisKKworQVRPTUlDIE9QRVJBVElPTlMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1doaWxzdCB0aGV5IGFyZSB0ZWNobmljYWxseSBpbnRlcnByb2Nlc3NvciBpbnRlcmFjdGlvbiBjb25zaWRlcmF0aW9ucywgYXRvbWljCitvcGVyYXRpb25zIGFyZSBub3RlZCBzcGVjaWFsbHkgYXMgc29tZSBvZiB0aGVtIGltcGx5IGZ1bGwgbWVtb3J5IGJhcnJpZXJzIGFuZAorc29tZSBkb24ndCwgYnV0IHRoZXkncmUgdmVyeSBoZWF2aWx5IHJlbGllZCBvbiBhcyBhIGdyb3VwIHRocm91Z2hvdXQgdGhlCitrZXJuZWwuCisKK0FueSBhdG9taWMgb3BlcmF0aW9uIHRoYXQgbW9kaWZpZXMgc29tZSBzdGF0ZSBpbiBtZW1vcnkgYW5kIHJldHVybnMgaW5mb3JtYXRpb24KK2Fib3V0IHRoZSBzdGF0ZSAob2xkIG9yIG5ldykgaW1wbGllcyBhbiBTTVAtY29uZGl0aW9uYWwgZ2VuZXJhbCBtZW1vcnkgYmFycmllcgorKHNtcF9tYigpKSBvbiBlYWNoIHNpZGUgb2YgdGhlIGFjdHVhbCBvcGVyYXRpb24gKHdpdGggdGhlIGV4Y2VwdGlvbiBvZgorZXhwbGljaXQgbG9jayBvcGVyYXRpb25zLCBkZXNjcmliZWQgbGF0ZXIpLiAgVGhlc2UgaW5jbHVkZToKKworCXhjaGcoKTsKKwlhdG9taWNfeGNoZygpOwkJCWF0b21pY19sb25nX3hjaGcoKTsKKwlhdG9taWNfaW5jX3JldHVybigpOwkJYXRvbWljX2xvbmdfaW5jX3JldHVybigpOworCWF0b21pY19kZWNfcmV0dXJuKCk7CQlhdG9taWNfbG9uZ19kZWNfcmV0dXJuKCk7CisJYXRvbWljX2FkZF9yZXR1cm4oKTsJCWF0b21pY19sb25nX2FkZF9yZXR1cm4oKTsKKwlhdG9taWNfc3ViX3JldHVybigpOwkJYXRvbWljX2xvbmdfc3ViX3JldHVybigpOworCWF0b21pY19pbmNfYW5kX3Rlc3QoKTsJCWF0b21pY19sb25nX2luY19hbmRfdGVzdCgpOworCWF0b21pY19kZWNfYW5kX3Rlc3QoKTsJCWF0b21pY19sb25nX2RlY19hbmRfdGVzdCgpOworCWF0b21pY19zdWJfYW5kX3Rlc3QoKTsJCWF0b21pY19sb25nX3N1Yl9hbmRfdGVzdCgpOworCWF0b21pY19hZGRfbmVnYXRpdmUoKTsJCWF0b21pY19sb25nX2FkZF9uZWdhdGl2ZSgpOworCXRlc3RfYW5kX3NldF9iaXQoKTsKKwl0ZXN0X2FuZF9jbGVhcl9iaXQoKTsKKwl0ZXN0X2FuZF9jaGFuZ2VfYml0KCk7CisKKwkvKiB3aGVuIHN1Y2NlZWRzICovCisJY21weGNoZygpOworCWF0b21pY19jbXB4Y2hnKCk7CQlhdG9taWNfbG9uZ19jbXB4Y2hnKCk7CisJYXRvbWljX2FkZF91bmxlc3MoKTsJCWF0b21pY19sb25nX2FkZF91bmxlc3MoKTsKKworVGhlc2UgYXJlIHVzZWQgZm9yIHN1Y2ggdGhpbmdzIGFzIGltcGxlbWVudGluZyBBQ1FVSVJFLWNsYXNzIGFuZCBSRUxFQVNFLWNsYXNzCitvcGVyYXRpb25zIGFuZCBhZGp1c3RpbmcgcmVmZXJlbmNlIGNvdW50ZXJzIHRvd2FyZHMgb2JqZWN0IGRlc3RydWN0aW9uLCBhbmQgYXMKK3N1Y2ggdGhlIGltcGxpY2l0IG1lbW9yeSBiYXJyaWVyIGVmZmVjdHMgYXJlIG5lY2Vzc2FyeS4KKworCitUaGUgZm9sbG93aW5nIG9wZXJhdGlvbnMgYXJlIHBvdGVudGlhbCBwcm9ibGVtcyBhcyB0aGV5IGRvIF9ub3RfIGltcGx5IG1lbW9yeQorYmFycmllcnMsIGJ1dCBtaWdodCBiZSB1c2VkIGZvciBpbXBsZW1lbnRpbmcgc3VjaCB0aGluZ3MgYXMgUkVMRUFTRS1jbGFzcworb3BlcmF0aW9uczoKKworCWF0b21pY19zZXQoKTsKKwlzZXRfYml0KCk7CisJY2xlYXJfYml0KCk7CisJY2hhbmdlX2JpdCgpOworCitXaXRoIHRoZXNlIHRoZSBhcHByb3ByaWF0ZSBleHBsaWNpdCBtZW1vcnkgYmFycmllciBzaG91bGQgYmUgdXNlZCBpZiBuZWNlc3NhcnkKKyhzbXBfbWJfX2JlZm9yZV9hdG9taWMoKSBmb3IgaW5zdGFuY2UpLgorCisKK1RoZSBmb2xsb3dpbmcgYWxzbyBkbyBfbm90XyBpbXBseSBtZW1vcnkgYmFycmllcnMsIGFuZCBzbyBtYXkgcmVxdWlyZSBleHBsaWNpdAorbWVtb3J5IGJhcnJpZXJzIHVuZGVyIHNvbWUgY2lyY3Vtc3RhbmNlcyAoc21wX21iX19iZWZvcmVfYXRvbWljKCkgZm9yCitpbnN0YW5jZSk6CisKKwlhdG9taWNfYWRkKCk7CisJYXRvbWljX3N1YigpOworCWF0b21pY19pbmMoKTsKKwlhdG9taWNfZGVjKCk7CisKK0lmIHRoZXkncmUgdXNlZCBmb3Igc3RhdGlzdGljcyBnZW5lcmF0aW9uLCB0aGVuIHRoZXkgcHJvYmFibHkgZG9uJ3QgbmVlZCBtZW1vcnkKK2JhcnJpZXJzLCB1bmxlc3MgdGhlcmUncyBhIGNvdXBsaW5nIGJldHdlZW4gc3RhdGlzdGljYWwgZGF0YS4KKworSWYgdGhleSdyZSB1c2VkIGZvciByZWZlcmVuY2UgY291bnRpbmcgb24gYW4gb2JqZWN0IHRvIGNvbnRyb2wgaXRzIGxpZmV0aW1lLAordGhleSBwcm9iYWJseSBkb24ndCBuZWVkIG1lbW9yeSBiYXJyaWVycyBiZWNhdXNlIGVpdGhlciB0aGUgcmVmZXJlbmNlIGNvdW50Cit3aWxsIGJlIGFkanVzdGVkIGluc2lkZSBhIGxvY2tlZCBzZWN0aW9uLCBvciB0aGUgY2FsbGVyIHdpbGwgYWxyZWFkeSBob2xkCitzdWZmaWNpZW50IHJlZmVyZW5jZXMgdG8gbWFrZSB0aGUgbG9jaywgYW5kIHRodXMgYSBtZW1vcnkgYmFycmllciB1bm5lY2Vzc2FyeS4KKworSWYgdGhleSdyZSB1c2VkIGZvciBjb25zdHJ1Y3RpbmcgYSBsb2NrIG9mIHNvbWUgZGVzY3JpcHRpb24sIHRoZW4gdGhleSBwcm9iYWJseQorZG8gbmVlZCBtZW1vcnkgYmFycmllcnMgYXMgYSBsb2NrIHByaW1pdGl2ZSBnZW5lcmFsbHkgaGFzIHRvIGRvIHRoaW5ncyBpbiBhCitzcGVjaWZpYyBvcmRlci4KKworQmFzaWNhbGx5LCBlYWNoIHVzYWdlIGNhc2UgaGFzIHRvIGJlIGNhcmVmdWxseSBjb25zaWRlcmVkIGFzIHRvIHdoZXRoZXIgbWVtb3J5CitiYXJyaWVycyBhcmUgbmVlZGVkIG9yIG5vdC4KKworVGhlIGZvbGxvd2luZyBvcGVyYXRpb25zIGFyZSBzcGVjaWFsIGxvY2tpbmcgcHJpbWl0aXZlczoKKworCXRlc3RfYW5kX3NldF9iaXRfbG9jaygpOworCWNsZWFyX2JpdF91bmxvY2soKTsKKwlfX2NsZWFyX2JpdF91bmxvY2soKTsKKworVGhlc2UgaW1wbGVtZW50IEFDUVVJUkUtY2xhc3MgYW5kIFJFTEVBU0UtY2xhc3Mgb3BlcmF0aW9ucy4gVGhlc2Ugc2hvdWxkIGJlIHVzZWQgaW4KK3ByZWZlcmVuY2UgdG8gb3RoZXIgb3BlcmF0aW9ucyB3aGVuIGltcGxlbWVudGluZyBsb2NraW5nIHByaW1pdGl2ZXMsIGJlY2F1c2UKK3RoZWlyIGltcGxlbWVudGF0aW9ucyBjYW4gYmUgb3B0aW1pc2VkIG9uIG1hbnkgYXJjaGl0ZWN0dXJlcy4KKworWyFdIE5vdGUgdGhhdCBzcGVjaWFsIG1lbW9yeSBiYXJyaWVyIHByaW1pdGl2ZXMgYXJlIGF2YWlsYWJsZSBmb3IgdGhlc2UKK3NpdHVhdGlvbnMgYmVjYXVzZSBvbiBzb21lIENQVXMgdGhlIGF0b21pYyBpbnN0cnVjdGlvbnMgdXNlZCBpbXBseSBmdWxsIG1lbW9yeQorYmFycmllcnMsIGFuZCBzbyBiYXJyaWVyIGluc3RydWN0aW9ucyBhcmUgc3VwZXJmbHVvdXMgaW4gY29uanVuY3Rpb24gd2l0aCB0aGVtLAorYW5kIGluIHN1Y2ggY2FzZXMgdGhlIHNwZWNpYWwgYmFycmllciBwcmltaXRpdmVzIHdpbGwgYmUgbm8tb3BzLgorCitTZWUgRG9jdW1lbnRhdGlvbi9hdG9taWNfb3BzLnR4dCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworCitBQ0NFU1NJTkcgREVWSUNFUworLS0tLS0tLS0tLS0tLS0tLS0KKworTWFueSBkZXZpY2VzIGNhbiBiZSBtZW1vcnkgbWFwcGVkLCBhbmQgc28gYXBwZWFyIHRvIHRoZSBDUFUgYXMgaWYgdGhleSdyZSBqdXN0CithIHNldCBvZiBtZW1vcnkgbG9jYXRpb25zLiAgVG8gY29udHJvbCBzdWNoIGEgZGV2aWNlLCB0aGUgZHJpdmVyIHVzdWFsbHkgaGFzIHRvCittYWtlIHRoZSByaWdodCBtZW1vcnkgYWNjZXNzZXMgaW4gZXhhY3RseSB0aGUgcmlnaHQgb3JkZXIuCisKK0hvd2V2ZXIsIGhhdmluZyBhIGNsZXZlciBDUFUgb3IgYSBjbGV2ZXIgY29tcGlsZXIgY3JlYXRlcyBhIHBvdGVudGlhbCBwcm9ibGVtCitpbiB0aGF0IHRoZSBjYXJlZnVsbHkgc2VxdWVuY2VkIGFjY2Vzc2VzIGluIHRoZSBkcml2ZXIgY29kZSB3b24ndCByZWFjaCB0aGUKK2RldmljZSBpbiB0aGUgcmVxdWlzaXRlIG9yZGVyIGlmIHRoZSBDUFUgb3IgdGhlIGNvbXBpbGVyIHRoaW5rcyBpdCBpcyBtb3JlCitlZmZpY2llbnQgdG8gcmVvcmRlciwgY29tYmluZSBvciBtZXJnZSBhY2Nlc3NlcyAtIHNvbWV0aGluZyB0aGF0IHdvdWxkIGNhdXNlCit0aGUgZGV2aWNlIHRvIG1hbGZ1bmN0aW9uLgorCitJbnNpZGUgb2YgdGhlIExpbnV4IGtlcm5lbCwgSS9PIHNob3VsZCBiZSBkb25lIHRocm91Z2ggdGhlIGFwcHJvcHJpYXRlIGFjY2Vzc29yCityb3V0aW5lcyAtIHN1Y2ggYXMgaW5iKCkgb3Igd3JpdGVsKCkgLSB3aGljaCBrbm93IGhvdyB0byBtYWtlIHN1Y2ggYWNjZXNzZXMKK2FwcHJvcHJpYXRlbHkgc2VxdWVudGlhbC4gIFdoaWxzdCB0aGlzLCBmb3IgdGhlIG1vc3QgcGFydCwgcmVuZGVycyB0aGUgZXhwbGljaXQKK3VzZSBvZiBtZW1vcnkgYmFycmllcnMgdW5uZWNlc3NhcnksIHRoZXJlIGFyZSBhIGNvdXBsZSBvZiBzaXR1YXRpb25zIHdoZXJlIHRoZXkKK21pZ2h0IGJlIG5lZWRlZDoKKworICgxKSBPbiBzb21lIHN5c3RlbXMsIEkvTyBzdG9yZXMgYXJlIG5vdCBzdHJvbmdseSBvcmRlcmVkIGFjcm9zcyBhbGwgQ1BVcywgYW5kCisgICAgIHNvIGZvciBfYWxsXyBnZW5lcmFsIGRyaXZlcnMgbG9ja3Mgc2hvdWxkIGJlIHVzZWQgYW5kIG1taW93YigpIG11c3QgYmUKKyAgICAgaXNzdWVkIHByaW9yIHRvIHVubG9ja2luZyB0aGUgY3JpdGljYWwgc2VjdGlvbi4KKworICgyKSBJZiB0aGUgYWNjZXNzb3IgZnVuY3Rpb25zIGFyZSB1c2VkIHRvIHJlZmVyIHRvIGFuIEkvTyBtZW1vcnkgd2luZG93IHdpdGgKKyAgICAgcmVsYXhlZCBtZW1vcnkgYWNjZXNzIHByb3BlcnRpZXMsIHRoZW4gX21hbmRhdG9yeV8gbWVtb3J5IGJhcnJpZXJzIGFyZQorICAgICByZXF1aXJlZCB0byBlbmZvcmNlIG9yZGVyaW5nLgorCitTZWUgRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2RldmljZWlvYm9vay50bXBsIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisKK0lOVEVSUlVQVFMKKy0tLS0tLS0tLS0KKworQSBkcml2ZXIgbWF5IGJlIGludGVycnVwdGVkIGJ5IGl0cyBvd24gaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZSwgYW5kIHRodXMgdGhlCit0d28gcGFydHMgb2YgdGhlIGRyaXZlciBtYXkgaW50ZXJmZXJlIHdpdGggZWFjaCBvdGhlcidzIGF0dGVtcHRzIHRvIGNvbnRyb2wgb3IKK2FjY2VzcyB0aGUgZGV2aWNlLgorCitUaGlzIG1heSBiZSBhbGxldmlhdGVkIC0gYXQgbGVhc3QgaW4gcGFydCAtIGJ5IGRpc2FibGluZyBsb2NhbCBpbnRlcnJ1cHRzIChhCitmb3JtIG9mIGxvY2tpbmcpLCBzdWNoIHRoYXQgdGhlIGNyaXRpY2FsIG9wZXJhdGlvbnMgYXJlIGFsbCBjb250YWluZWQgd2l0aGluCit0aGUgaW50ZXJydXB0LWRpc2FibGVkIHNlY3Rpb24gaW4gdGhlIGRyaXZlci4gIFdoaWxzdCB0aGUgZHJpdmVyJ3MgaW50ZXJydXB0Cityb3V0aW5lIGlzIGV4ZWN1dGluZywgdGhlIGRyaXZlcidzIGNvcmUgbWF5IG5vdCBydW4gb24gdGhlIHNhbWUgQ1BVLCBhbmQgaXRzCitpbnRlcnJ1cHQgaXMgbm90IHBlcm1pdHRlZCB0byBoYXBwZW4gYWdhaW4gdW50aWwgdGhlIGN1cnJlbnQgaW50ZXJydXB0IGhhcyBiZWVuCitoYW5kbGVkLCB0aHVzIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBkb2VzIG5vdCBuZWVkIHRvIGxvY2sgYWdhaW5zdCB0aGF0LgorCitIb3dldmVyLCBjb25zaWRlciBhIGRyaXZlciB0aGF0IHdhcyB0YWxraW5nIHRvIGFuIGV0aGVybmV0IGNhcmQgdGhhdCBzcG9ydHMgYW4KK2FkZHJlc3MgcmVnaXN0ZXIgYW5kIGEgZGF0YSByZWdpc3Rlci4gIElmIHRoYXQgZHJpdmVyJ3MgY29yZSB0YWxrcyB0byB0aGUgY2FyZAordW5kZXIgaW50ZXJydXB0LWRpc2FibGVtZW50IGFuZCB0aGVuIHRoZSBkcml2ZXIncyBpbnRlcnJ1cHQgaGFuZGxlciBpcyBpbnZva2VkOgorCisJTE9DQUwgSVJRIERJU0FCTEUKKwl3cml0ZXcoQUREUiwgMyk7CisJd3JpdGV3KERBVEEsIHkpOworCUxPQ0FMIElSUSBFTkFCTEUKKwk8aW50ZXJydXB0PgorCXdyaXRldyhBRERSLCA0KTsKKwlxID0gcmVhZHcoREFUQSk7CisJPC9pbnRlcnJ1cHQ+CisKK1RoZSBzdG9yZSB0byB0aGUgZGF0YSByZWdpc3RlciBtaWdodCBoYXBwZW4gYWZ0ZXIgdGhlIHNlY29uZCBzdG9yZSB0byB0aGUKK2FkZHJlc3MgcmVnaXN0ZXIgaWYgb3JkZXJpbmcgcnVsZXMgYXJlIHN1ZmZpY2llbnRseSByZWxheGVkOgorCisJU1RPUkUgKkFERFIgPSAzLCBTVE9SRSAqQUREUiA9IDQsIFNUT1JFICpEQVRBID0geSwgcSA9IExPQUQgKkRBVEEKKworCitJZiBvcmRlcmluZyBydWxlcyBhcmUgcmVsYXhlZCwgaXQgbXVzdCBiZSBhc3N1bWVkIHRoYXQgYWNjZXNzZXMgZG9uZSBpbnNpZGUgYW4KK2ludGVycnVwdCBkaXNhYmxlZCBzZWN0aW9uIG1heSBsZWFrIG91dHNpZGUgb2YgaXQgYW5kIG1heSBpbnRlcmxlYXZlIHdpdGgKK2FjY2Vzc2VzIHBlcmZvcm1lZCBpbiBhbiBpbnRlcnJ1cHQgLSBhbmQgdmljZSB2ZXJzYSAtIHVubGVzcyBpbXBsaWNpdCBvcgorZXhwbGljaXQgYmFycmllcnMgYXJlIHVzZWQuCisKK05vcm1hbGx5IHRoaXMgd29uJ3QgYmUgYSBwcm9ibGVtIGJlY2F1c2UgdGhlIEkvTyBhY2Nlc3NlcyBkb25lIGluc2lkZSBzdWNoCitzZWN0aW9ucyB3aWxsIGluY2x1ZGUgc3luY2hyb25vdXMgbG9hZCBvcGVyYXRpb25zIG9uIHN0cmljdGx5IG9yZGVyZWQgSS9PCityZWdpc3RlcnMgdGhhdCBmb3JtIGltcGxpY2l0IEkvTyBiYXJyaWVycy4gSWYgdGhpcyBpc24ndCBzdWZmaWNpZW50IHRoZW4gYW4KK21taW93YigpIG1heSBuZWVkIHRvIGJlIHVzZWQgZXhwbGljaXRseS4KKworCitBIHNpbWlsYXIgc2l0dWF0aW9uIG1heSBvY2N1ciBiZXR3ZWVuIGFuIGludGVycnVwdCByb3V0aW5lIGFuZCB0d28gcm91dGluZXMKK3J1bm5pbmcgb24gc2VwYXJhdGUgQ1BVcyB0aGF0IGNvbW11bmljYXRlIHdpdGggZWFjaCBvdGhlci4gSWYgc3VjaCBhIGNhc2UgaXMKK2xpa2VseSwgdGhlbiBpbnRlcnJ1cHQtZGlzYWJsaW5nIGxvY2tzIHNob3VsZCBiZSB1c2VkIHRvIGd1YXJhbnRlZSBvcmRlcmluZy4KKworCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorS0VSTkVMIEkvTyBCQVJSSUVSIEVGRkVDVFMKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1doZW4gYWNjZXNzaW5nIEkvTyBtZW1vcnksIGRyaXZlcnMgc2hvdWxkIHVzZSB0aGUgYXBwcm9wcmlhdGUgYWNjZXNzb3IKK2Z1bmN0aW9uczoKKworICgqKSBpblgoKSwgb3V0WCgpOgorCisgICAgIFRoZXNlIGFyZSBpbnRlbmRlZCB0byB0YWxrIHRvIEkvTyBzcGFjZSByYXRoZXIgdGhhbiBtZW1vcnkgc3BhY2UsIGJ1dAorICAgICB0aGF0J3MgcHJpbWFyaWx5IGEgQ1BVLXNwZWNpZmljIGNvbmNlcHQuIFRoZSBpMzg2IGFuZCB4ODZfNjQgcHJvY2Vzc29ycyBkbworICAgICBpbmRlZWQgaGF2ZSBzcGVjaWFsIEkvTyBzcGFjZSBhY2Nlc3MgY3ljbGVzIGFuZCBpbnN0cnVjdGlvbnMsIGJ1dCBtYW55CisgICAgIENQVXMgZG9uJ3QgaGF2ZSBzdWNoIGEgY29uY2VwdC4KKworICAgICBUaGUgUENJIGJ1cywgYW1vbmdzdCBvdGhlcnMsIGRlZmluZXMgYW4gSS9PIHNwYWNlIGNvbmNlcHQgd2hpY2ggLSBvbiBzdWNoCisgICAgIENQVXMgYXMgaTM4NiBhbmQgeDg2XzY0IC0gcmVhZGlseSBtYXBzIHRvIHRoZSBDUFUncyBjb25jZXB0IG9mIEkvTworICAgICBzcGFjZS4gIEhvd2V2ZXIsIGl0IG1heSBhbHNvIGJlIG1hcHBlZCBhcyBhIHZpcnR1YWwgSS9PIHNwYWNlIGluIHRoZSBDUFUncworICAgICBtZW1vcnkgbWFwLCBwYXJ0aWN1bGFybHkgb24gdGhvc2UgQ1BVcyB0aGF0IGRvbid0IHN1cHBvcnQgYWx0ZXJuYXRlIEkvTworICAgICBzcGFjZXMuCisKKyAgICAgQWNjZXNzZXMgdG8gdGhpcyBzcGFjZSBtYXkgYmUgZnVsbHkgc3luY2hyb25vdXMgKGFzIG9uIGkzODYpLCBidXQKKyAgICAgaW50ZXJtZWRpYXJ5IGJyaWRnZXMgKHN1Y2ggYXMgdGhlIFBDSSBob3N0IGJyaWRnZSkgbWF5IG5vdCBmdWxseSBob25vdXIKKyAgICAgdGhhdC4KKworICAgICBUaGV5IGFyZSBndWFyYW50ZWVkIHRvIGJlIGZ1bGx5IG9yZGVyZWQgd2l0aCByZXNwZWN0IHRvIGVhY2ggb3RoZXIuCisKKyAgICAgVGhleSBhcmUgbm90IGd1YXJhbnRlZWQgdG8gYmUgZnVsbHkgb3JkZXJlZCB3aXRoIHJlc3BlY3QgdG8gb3RoZXIgdHlwZXMgb2YKKyAgICAgbWVtb3J5IGFuZCBJL08gb3BlcmF0aW9uLgorCisgKCopIHJlYWRYKCksIHdyaXRlWCgpOgorCisgICAgIFdoZXRoZXIgdGhlc2UgYXJlIGd1YXJhbnRlZWQgdG8gYmUgZnVsbHkgb3JkZXJlZCBhbmQgdW5jb21iaW5lZCB3aXRoCisgICAgIHJlc3BlY3QgdG8gZWFjaCBvdGhlciBvbiB0aGUgaXNzdWluZyBDUFUgZGVwZW5kcyBvbiB0aGUgY2hhcmFjdGVyaXN0aWNzCisgICAgIGRlZmluZWQgZm9yIHRoZSBtZW1vcnkgd2luZG93IHRocm91Z2ggd2hpY2ggdGhleSdyZSBhY2Nlc3NpbmcuIE9uIGxhdGVyCisgICAgIGkzODYgYXJjaGl0ZWN0dXJlIG1hY2hpbmVzLCBmb3IgZXhhbXBsZSwgdGhpcyBpcyBjb250cm9sbGVkIGJ5IHdheSBvZiB0aGUKKyAgICAgTVRSUiByZWdpc3RlcnMuCisKKyAgICAgT3JkaW5hcmlseSwgdGhlc2Ugd2lsbCBiZSBndWFyYW50ZWVkIHRvIGJlIGZ1bGx5IG9yZGVyZWQgYW5kIHVuY29tYmluZWQsCisgICAgIHByb3ZpZGVkIHRoZXkncmUgbm90IGFjY2Vzc2luZyBhIHByZWZldGNoYWJsZSBkZXZpY2UuCisKKyAgICAgSG93ZXZlciwgaW50ZXJtZWRpYXJ5IGhhcmR3YXJlIChzdWNoIGFzIGEgUENJIGJyaWRnZSkgbWF5IGluZHVsZ2UgaW4KKyAgICAgZGVmZXJyYWwgaWYgaXQgc28gd2lzaGVzOyB0byBmbHVzaCBhIHN0b3JlLCBhIGxvYWQgZnJvbSB0aGUgc2FtZSBsb2NhdGlvbgorICAgICBpcyBwcmVmZXJyZWRbKl0sIGJ1dCBhIGxvYWQgZnJvbSB0aGUgc2FtZSBkZXZpY2Ugb3IgZnJvbSBjb25maWd1cmF0aW9uCisgICAgIHNwYWNlIHNob3VsZCBzdWZmaWNlIGZvciBQQ0kuCisKKyAgICAgWypdIE5PVEUhIGF0dGVtcHRpbmcgdG8gbG9hZCBmcm9tIHRoZSBzYW1lIGxvY2F0aW9uIGFzIHdhcyB3cml0dGVuIHRvIG1heQorCSBjYXVzZSBhIG1hbGZ1bmN0aW9uIC0gY29uc2lkZXIgdGhlIDE2NTUwIFJ4L1R4IHNlcmlhbCByZWdpc3RlcnMgZm9yCisJIGV4YW1wbGUuCisKKyAgICAgVXNlZCB3aXRoIHByZWZldGNoYWJsZSBJL08gbWVtb3J5LCBhbiBtbWlvd2IoKSBiYXJyaWVyIG1heSBiZSByZXF1aXJlZCB0bworICAgICBmb3JjZSBzdG9yZXMgdG8gYmUgb3JkZXJlZC4KKworICAgICBQbGVhc2UgcmVmZXIgdG8gdGhlIFBDSSBzcGVjaWZpY2F0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGludGVyYWN0aW9ucworICAgICBiZXR3ZWVuIFBDSSB0cmFuc2FjdGlvbnMuCisKKyAoKikgcmVhZFhfcmVsYXhlZCgpLCB3cml0ZVhfcmVsYXhlZCgpCisKKyAgICAgVGhlc2UgYXJlIHNpbWlsYXIgdG8gcmVhZFgoKSBhbmQgd3JpdGVYKCksIGJ1dCBwcm92aWRlIHdlYWtlciBtZW1vcnkKKyAgICAgb3JkZXJpbmcgZ3VhcmFudGVlcy4gU3BlY2lmaWNhbGx5LCB0aGV5IGRvIG5vdCBndWFyYW50ZWUgb3JkZXJpbmcgd2l0aAorICAgICByZXNwZWN0IHRvIG5vcm1hbCBtZW1vcnkgYWNjZXNzZXMgKGUuZy4gRE1BIGJ1ZmZlcnMpIG5vciBkbyB0aGV5IGd1YXJhbnRlZQorICAgICBvcmRlcmluZyB3aXRoIHJlc3BlY3QgdG8gTE9DSyBvciBVTkxPQ0sgb3BlcmF0aW9ucy4gSWYgdGhlIGxhdHRlciBpcworICAgICByZXF1aXJlZCwgYW4gbW1pb3diKCkgYmFycmllciBjYW4gYmUgdXNlZC4gTm90ZSB0aGF0IHJlbGF4ZWQgYWNjZXNzZXMgdG8KKyAgICAgdGhlIHNhbWUgcGVyaXBoZXJhbCBhcmUgZ3VhcmFudGVlZCB0byBiZSBvcmRlcmVkIHdpdGggcmVzcGVjdCB0byBlYWNoCisgICAgIG90aGVyLgorCisgKCopIGlvcmVhZFgoKSwgaW93cml0ZVgoKQorCisgICAgIFRoZXNlIHdpbGwgcGVyZm9ybSBhcHByb3ByaWF0ZWx5IGZvciB0aGUgdHlwZSBvZiBhY2Nlc3MgdGhleSdyZSBhY3R1YWxseQorICAgICBkb2luZywgYmUgaXQgaW5YKCkvb3V0WCgpIG9yIHJlYWRYKCkvd3JpdGVYKCkuCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQVNTVU1FRCBNSU5JTVVNIEVYRUNVVElPTiBPUkRFUklORyBNT0RFTAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJdCBoYXMgdG8gYmUgYXNzdW1lZCB0aGF0IHRoZSBjb25jZXB0dWFsIENQVSBpcyB3ZWFrbHktb3JkZXJlZCBidXQgdGhhdCBpdCB3aWxsCittYWludGFpbiB0aGUgYXBwZWFyYW5jZSBvZiBwcm9ncmFtIGNhdXNhbGl0eSB3aXRoIHJlc3BlY3QgdG8gaXRzZWxmLiAgU29tZSBDUFVzCisoc3VjaCBhcyBpMzg2IG9yIHg4Nl82NCkgYXJlIG1vcmUgY29uc3RyYWluZWQgdGhhbiBvdGhlcnMgKHN1Y2ggYXMgcG93ZXJwYyBvcgorZnJ2KSwgYW5kIHNvIHRoZSBtb3N0IHJlbGF4ZWQgY2FzZSAobmFtZWx5IERFQyBBbHBoYSkgbXVzdCBiZSBhc3N1bWVkIG91dHNpZGUKK29mIGFyY2gtc3BlY2lmaWMgY29kZS4KKworVGhpcyBtZWFucyB0aGF0IGl0IG11c3QgYmUgY29uc2lkZXJlZCB0aGF0IHRoZSBDUFUgd2lsbCBleGVjdXRlIGl0cyBpbnN0cnVjdGlvbgorc3RyZWFtIGluIGFueSBvcmRlciBpdCBmZWVscyBsaWtlIC0gb3IgZXZlbiBpbiBwYXJhbGxlbCAtIHByb3ZpZGVkIHRoYXQgaWYgYW4KK2luc3RydWN0aW9uIGluIHRoZSBzdHJlYW0gZGVwZW5kcyBvbiBhbiBlYXJsaWVyIGluc3RydWN0aW9uLCB0aGVuIHRoYXQKK2VhcmxpZXIgaW5zdHJ1Y3Rpb24gbXVzdCBiZSBzdWZmaWNpZW50bHkgY29tcGxldGVbKl0gYmVmb3JlIHRoZSBsYXRlcgoraW5zdHJ1Y3Rpb24gbWF5IHByb2NlZWQ7IGluIG90aGVyIHdvcmRzOiBwcm92aWRlZCB0aGF0IHRoZSBhcHBlYXJhbmNlIG9mCitjYXVzYWxpdHkgaXMgbWFpbnRhaW5lZC4KKworIFsqXSBTb21lIGluc3RydWN0aW9ucyBoYXZlIG1vcmUgdGhhbiBvbmUgZWZmZWN0IC0gc3VjaCBhcyBjaGFuZ2luZyB0aGUKKyAgICAgY29uZGl0aW9uIGNvZGVzLCBjaGFuZ2luZyByZWdpc3RlcnMgb3IgY2hhbmdpbmcgbWVtb3J5IC0gYW5kIGRpZmZlcmVudAorICAgICBpbnN0cnVjdGlvbnMgbWF5IGRlcGVuZCBvbiBkaWZmZXJlbnQgZWZmZWN0cy4KKworQSBDUFUgbWF5IGFsc28gZGlzY2FyZCBhbnkgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UgdGhhdCB3aW5kcyB1cCBoYXZpbmcgbm8KK3VsdGltYXRlIGVmZmVjdC4gIEZvciBleGFtcGxlLCBpZiB0d28gYWRqYWNlbnQgaW5zdHJ1Y3Rpb25zIGJvdGggbG9hZCBhbgoraW1tZWRpYXRlIHZhbHVlIGludG8gdGhlIHNhbWUgcmVnaXN0ZXIsIHRoZSBmaXJzdCBtYXkgYmUgZGlzY2FyZGVkLgorCisKK1NpbWlsYXJseSwgaXQgaGFzIHRvIGJlIGFzc3VtZWQgdGhhdCBjb21waWxlciBtaWdodCByZW9yZGVyIHRoZSBpbnN0cnVjdGlvbgorc3RyZWFtIGluIGFueSB3YXkgaXQgc2VlcyBmaXQsIGFnYWluIHByb3ZpZGVkIHRoZSBhcHBlYXJhbmNlIG9mIGNhdXNhbGl0eSBpcworbWFpbnRhaW5lZC4KKworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CitUSEUgRUZGRUNUUyBPRiBUSEUgQ1BVIENBQ0hFCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSB3YXkgY2FjaGVkIG1lbW9yeSBvcGVyYXRpb25zIGFyZSBwZXJjZWl2ZWQgYWNyb3NzIHRoZSBzeXN0ZW0gaXMgYWZmZWN0ZWQgdG8KK2EgY2VydGFpbiBleHRlbnQgYnkgdGhlIGNhY2hlcyB0aGF0IGxpZSBiZXR3ZWVuIENQVXMgYW5kIG1lbW9yeSwgYW5kIGJ5IHRoZQorbWVtb3J5IGNvaGVyZW5jZSBzeXN0ZW0gdGhhdCBtYWludGFpbnMgdGhlIGNvbnNpc3RlbmN5IG9mIHN0YXRlIGluIHRoZSBzeXN0ZW0uCisKK0FzIGZhciBhcyB0aGUgd2F5IGEgQ1BVIGludGVyYWN0cyB3aXRoIGFub3RoZXIgcGFydCBvZiB0aGUgc3lzdGVtIHRocm91Z2ggdGhlCitjYWNoZXMgZ29lcywgdGhlIG1lbW9yeSBzeXN0ZW0gaGFzIHRvIGluY2x1ZGUgdGhlIENQVSdzIGNhY2hlcywgYW5kIG1lbW9yeQorYmFycmllcnMgZm9yIHRoZSBtb3N0IHBhcnQgYWN0IGF0IHRoZSBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgQ1BVIGFuZCBpdHMgY2FjaGUKKyhtZW1vcnkgYmFycmllcnMgbG9naWNhbGx5IGFjdCBvbiB0aGUgZG90dGVkIGxpbmUgaW4gdGhlIGZvbGxvd2luZyBkaWFncmFtKToKKworCSAgICA8LS0tIENQVSAtLS0+ICAgICAgICAgOiAgICAgICA8LS0tLS0tLS0tLS0gTWVtb3J5IC0tLS0tLS0tLS0tPgorCSAgICAgICAgICAgICAgICAgICAgICAgICAgOgorCSstLS0tLS0tLSsgICAgKy0tLS0tLS0tKyAgOiAgICstLS0tLS0tLSsgICAgKy0tLS0tLS0tLS0tKworCXwgICAgICAgIHwgICAgfCAgICAgICAgfCAgOiAgIHwgICAgICAgIHwgICAgfCAgICAgICAgICAgfCAgICArLS0tLS0tLS0rCisJfCAgQ1BVICAgfCAgICB8IE1lbW9yeSB8ICA6ICAgfCBDUFUgICAgfCAgICB8ICAgICAgICAgICB8ICAgIHwgICAgICAgIHwKKwl8ICBDb3JlICB8LS0tPnwgQWNjZXNzIHwtLS0tLT58IENhY2hlICB8PC0tPnwgICAgICAgICAgIHwgICAgfCAgICAgICAgfAorCXwgICAgICAgIHwgICAgfCBRdWV1ZSAgfCAgOiAgIHwgICAgICAgIHwgICAgfCAgICAgICAgICAgfC0tLT58IE1lbW9yeSB8CisJfCAgICAgICAgfCAgICB8ICAgICAgICB8ICA6ICAgfCAgICAgICAgfCAgICB8ICAgICAgICAgICB8ICAgIHwgICAgICAgIHwKKwkrLS0tLS0tLS0rICAgICstLS0tLS0tLSsgIDogICArLS0tLS0tLS0rICAgIHwgICAgICAgICAgIHwgICAgfCAgICAgICAgfAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgICAgICAgICAgICAgICAgfCBDYWNoZSAgICAgfCAgICArLS0tLS0tLS0rCisJICAgICAgICAgICAgICAgICAgICAgICAgICA6ICAgICAgICAgICAgICAgICB8IENvaGVyZW5jeSB8CisJICAgICAgICAgICAgICAgICAgICAgICAgICA6ICAgICAgICAgICAgICAgICB8IE1lY2hhbmlzbSB8ICAgICstLS0tLS0tLSsKKwkrLS0tLS0tLS0rICAgICstLS0tLS0tLSsgIDogICArLS0tLS0tLS0rICAgIHwgICAgICAgICAgIHwgICAgfAkgICAgICB8CisJfCAgICAgICAgfCAgICB8ICAgICAgICB8ICA6ICAgfCAgICAgICAgfCAgICB8ICAgICAgICAgICB8ICAgIHwgICAgICAgIHwKKwl8ICBDUFUgICB8ICAgIHwgTWVtb3J5IHwgIDogICB8IENQVSAgICB8ICAgIHwgICAgICAgICAgIHwtLS0+fCBEZXZpY2UgfAorCXwgIENvcmUgIHwtLS0+fCBBY2Nlc3MgfC0tLS0tPnwgQ2FjaGUgIHw8LS0+fCAgICAgICAgICAgfCAgICB8ICAgICAgICB8CisJfCAgICAgICAgfCAgICB8IFF1ZXVlICB8ICA6ICAgfCAgICAgICAgfCAgICB8ICAgICAgICAgICB8ICAgIHwgICAgICAgIHwKKwl8ICAgICAgICB8ICAgIHwgICAgICAgIHwgIDogICB8ICAgICAgICB8ICAgIHwgICAgICAgICAgIHwgICAgKy0tLS0tLS0tKworCSstLS0tLS0tLSsgICAgKy0tLS0tLS0tKyAgOiAgICstLS0tLS0tLSsgICAgKy0tLS0tLS0tLS0tKworCSAgICAgICAgICAgICAgICAgICAgICAgICAgOgorCSAgICAgICAgICAgICAgICAgICAgICAgICAgOgorCitBbHRob3VnaCBhbnkgcGFydGljdWxhciBsb2FkIG9yIHN0b3JlIG1heSBub3QgYWN0dWFsbHkgYXBwZWFyIG91dHNpZGUgb2YgdGhlCitDUFUgdGhhdCBpc3N1ZWQgaXQgc2luY2UgaXQgbWF5IGhhdmUgYmVlbiBzYXRpc2ZpZWQgd2l0aGluIHRoZSBDUFUncyBvd24gY2FjaGUsCitpdCB3aWxsIHN0aWxsIGFwcGVhciBhcyBpZiB0aGUgZnVsbCBtZW1vcnkgYWNjZXNzIGhhZCB0YWtlbiBwbGFjZSBhcyBmYXIgYXMgdGhlCitvdGhlciBDUFVzIGFyZSBjb25jZXJuZWQgc2luY2UgdGhlIGNhY2hlIGNvaGVyZW5jeSBtZWNoYW5pc21zIHdpbGwgbWlncmF0ZSB0aGUKK2NhY2hlbGluZSBvdmVyIHRvIHRoZSBhY2Nlc3NpbmcgQ1BVIGFuZCBwcm9wYWdhdGUgdGhlIGVmZmVjdHMgdXBvbiBjb25mbGljdC4KKworVGhlIENQVSBjb3JlIG1heSBleGVjdXRlIGluc3RydWN0aW9ucyBpbiBhbnkgb3JkZXIgaXQgZGVlbXMgZml0LCBwcm92aWRlZCB0aGUKK2V4cGVjdGVkIHByb2dyYW0gY2F1c2FsaXR5IGFwcGVhcnMgdG8gYmUgbWFpbnRhaW5lZC4gIFNvbWUgb2YgdGhlIGluc3RydWN0aW9ucworZ2VuZXJhdGUgbG9hZCBhbmQgc3RvcmUgb3BlcmF0aW9ucyB3aGljaCB0aGVuIGdvIGludG8gdGhlIHF1ZXVlIG9mIG1lbW9yeQorYWNjZXNzZXMgdG8gYmUgcGVyZm9ybWVkLiAgVGhlIGNvcmUgbWF5IHBsYWNlIHRoZXNlIGluIHRoZSBxdWV1ZSBpbiBhbnkgb3JkZXIKK2l0IHdpc2hlcywgYW5kIGNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCBpdCBpcyBmb3JjZWQgdG8gd2FpdCBmb3IgYW4gaW5zdHJ1Y3Rpb24KK3RvIGNvbXBsZXRlLgorCitXaGF0IG1lbW9yeSBiYXJyaWVycyBhcmUgY29uY2VybmVkIHdpdGggaXMgY29udHJvbGxpbmcgdGhlIG9yZGVyIGluIHdoaWNoCithY2Nlc3NlcyBjcm9zcyBmcm9tIHRoZSBDUFUgc2lkZSBvZiB0aGluZ3MgdG8gdGhlIG1lbW9yeSBzaWRlIG9mIHRoaW5ncywgYW5kCit0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIGVmZmVjdHMgYXJlIHBlcmNlaXZlZCB0byBoYXBwZW4gYnkgdGhlIG90aGVyIG9ic2VydmVycworaW4gdGhlIHN5c3RlbS4KKworWyFdIE1lbW9yeSBiYXJyaWVycyBhcmUgX25vdF8gbmVlZGVkIHdpdGhpbiBhIGdpdmVuIENQVSwgYXMgQ1BVcyBhbHdheXMgc2VlCit0aGVpciBvd24gbG9hZHMgYW5kIHN0b3JlcyBhcyBpZiB0aGV5IGhhZCBoYXBwZW5lZCBpbiBwcm9ncmFtIG9yZGVyLgorCitbIV0gTU1JTyBvciBvdGhlciBkZXZpY2UgYWNjZXNzZXMgbWF5IGJ5cGFzcyB0aGUgY2FjaGUgc3lzdGVtLiAgVGhpcyBkZXBlbmRzIG9uCit0aGUgcHJvcGVydGllcyBvZiB0aGUgbWVtb3J5IHdpbmRvdyB0aHJvdWdoIHdoaWNoIGRldmljZXMgYXJlIGFjY2Vzc2VkIGFuZC9vcgordGhlIHVzZSBvZiBhbnkgc3BlY2lhbCBkZXZpY2UgY29tbXVuaWNhdGlvbiBpbnN0cnVjdGlvbnMgdGhlIENQVSBtYXkgaGF2ZS4KKworCitDQUNIRSBDT0hFUkVOQ1kKKy0tLS0tLS0tLS0tLS0tLQorCitMaWZlIGlzbid0IHF1aXRlIGFzIHNpbXBsZSBhcyBpdCBtYXkgYXBwZWFyIGFib3ZlLCBob3dldmVyOiBmb3Igd2hpbGUgdGhlCitjYWNoZXMgYXJlIGV4cGVjdGVkIHRvIGJlIGNvaGVyZW50LCB0aGVyZSdzIG5vIGd1YXJhbnRlZSB0aGF0IHRoYXQgY29oZXJlbmN5Cit3aWxsIGJlIG9yZGVyZWQuICBUaGlzIG1lYW5zIHRoYXQgd2hpbHN0IGNoYW5nZXMgbWFkZSBvbiBvbmUgQ1BVIHdpbGwKK2V2ZW50dWFsbHkgYmVjb21lIHZpc2libGUgb24gYWxsIENQVXMsIHRoZXJlJ3Mgbm8gZ3VhcmFudGVlIHRoYXQgdGhleSB3aWxsCitiZWNvbWUgYXBwYXJlbnQgaW4gdGhlIHNhbWUgb3JkZXIgb24gdGhvc2Ugb3RoZXIgQ1BVcy4KKworCitDb25zaWRlciBkZWFsaW5nIHdpdGggYSBzeXN0ZW0gdGhhdCBoYXMgYSBwYWlyIG9mIENQVXMgKDEgJiAyKSwgZWFjaCBvZiB3aGljaAoraGFzIGEgcGFpciBvZiBwYXJhbGxlbCBkYXRhIGNhY2hlcyAoQ1BVIDEgaGFzIEEvQiwgYW5kIENQVSAyIGhhcyBDL0QpOgorCisJICAgICAgICAgICAgOgorCSAgICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLSsKKwkgICAgICAgICAgICA6ICAgICAgKy0tLS0tLS0tLSsgICAgICAgICB8ICAgICAgICB8CisJKy0tLS0tLS0tKyAgOiArLS0tPnwgQ2FjaGUgQSB8PC0tLS0tLS0+fCAgICAgICAgfAorCXwgICAgICAgIHwgIDogfCAgICArLS0tLS0tLS0tKyAgICAgICAgIHwgICAgICAgIHwKKwl8ICBDUFUgMSB8PC0tLSsgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICB8CisJfCAgICAgICAgfCAgOiB8ICAgICstLS0tLS0tLS0rICAgICAgICAgfCAgICAgICAgfAorCSstLS0tLS0tLSsgIDogKy0tLT58IENhY2hlIEIgfDwtLS0tLS0tPnwgICAgICAgIHwKKwkgICAgICAgICAgICA6ICAgICAgKy0tLS0tLS0tLSsgICAgICAgICB8ICAgICAgICB8CisJICAgICAgICAgICAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNZW1vcnkgfAorCSAgICAgICAgICAgIDogICAgICArLS0tLS0tLS0tKyAgICAgICAgIHwgU3lzdGVtIHwKKwkrLS0tLS0tLS0rICA6ICstLS0+fCBDYWNoZSBDIHw8LS0tLS0tLT58ICAgICAgICB8CisJfCAgICAgICAgfCAgOiB8ICAgICstLS0tLS0tLS0rICAgICAgICAgfCAgICAgICAgfAorCXwgIENQVSAyIHw8LS0tKyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgIHwKKwl8ICAgICAgICB8ICA6IHwgICAgKy0tLS0tLS0tLSsgICAgICAgICB8ICAgICAgICB8CisJKy0tLS0tLS0tKyAgOiArLS0tPnwgQ2FjaGUgRCB8PC0tLS0tLS0+fCAgICAgICAgfAorCSAgICAgICAgICAgIDogICAgICArLS0tLS0tLS0tKyAgICAgICAgIHwgICAgICAgIHwKKwkgICAgICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0rCisJICAgICAgICAgICAgOgorCitJbWFnaW5lIHRoZSBzeXN0ZW0gaGFzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKKworICgqKSBhbiBvZGQtbnVtYmVyZWQgY2FjaGUgbGluZSBtYXkgYmUgaW4gY2FjaGUgQSwgY2FjaGUgQyBvciBpdCBtYXkgc3RpbGwgYmUKKyAgICAgcmVzaWRlbnQgaW4gbWVtb3J5OworCisgKCopIGFuIGV2ZW4tbnVtYmVyZWQgY2FjaGUgbGluZSBtYXkgYmUgaW4gY2FjaGUgQiwgY2FjaGUgRCBvciBpdCBtYXkgc3RpbGwgYmUKKyAgICAgcmVzaWRlbnQgaW4gbWVtb3J5OworCisgKCopIHdoaWxzdCB0aGUgQ1BVIGNvcmUgaXMgaW50ZXJyb2dhdGluZyBvbmUgY2FjaGUsIHRoZSBvdGhlciBjYWNoZSBtYXkgYmUKKyAgICAgbWFraW5nIHVzZSBvZiB0aGUgYnVzIHRvIGFjY2VzcyB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtIC0gcGVyaGFwcyB0bworICAgICBkaXNwbGFjZSBhIGRpcnR5IGNhY2hlbGluZSBvciB0byBkbyBhIHNwZWN1bGF0aXZlIGxvYWQ7CisKKyAoKikgZWFjaCBjYWNoZSBoYXMgYSBxdWV1ZSBvZiBvcGVyYXRpb25zIHRoYXQgbmVlZCB0byBiZSBhcHBsaWVkIHRvIHRoYXQgY2FjaGUKKyAgICAgdG8gbWFpbnRhaW4gY29oZXJlbmN5IHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbTsKKworICgqKSB0aGUgY29oZXJlbmN5IHF1ZXVlIGlzIG5vdCBmbHVzaGVkIGJ5IG5vcm1hbCBsb2FkcyB0byBsaW5lcyBhbHJlYWR5CisgICAgIHByZXNlbnQgaW4gdGhlIGNhY2hlLCBldmVuIHRob3VnaCB0aGUgY29udGVudHMgb2YgdGhlIHF1ZXVlIG1heQorICAgICBwb3RlbnRpYWxseSBhZmZlY3QgdGhvc2UgbG9hZHMuCisKK0ltYWdpbmUsIHRoZW4sIHRoYXQgdHdvIHdyaXRlcyBhcmUgbWFkZSBvbiB0aGUgZmlyc3QgQ1BVLCB3aXRoIGEgd3JpdGUgYmFycmllcgorYmV0d2VlbiB0aGVtIHRvIGd1YXJhbnRlZSB0aGF0IHRoZXkgd2lsbCBhcHBlYXIgdG8gcmVhY2ggdGhhdCBDUFUncyBjYWNoZXMgaW4KK3RoZSByZXF1aXNpdGUgb3JkZXI6CisKKwlDUFUgMQkJQ1BVIDIJCUNPTU1FTlQKKwk9PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCQkJCQl1ID09IDAsIHYgPT0gMSBhbmQgcCA9PSAmdSwgcSA9PSAmdQorCXYgPSAyOworCXNtcF93bWIoKTsJCQlNYWtlIHN1cmUgY2hhbmdlIHRvIHYgaXMgdmlzaWJsZSBiZWZvcmUKKwkJCQkJIGNoYW5nZSB0byBwCisJPEE6bW9kaWZ5IHY9Mj4JCQl2IGlzIG5vdyBpbiBjYWNoZSBBIGV4Y2x1c2l2ZWx5CisJcCA9ICZ2OworCTxCOm1vZGlmeSBwPSZ2PgkJCXAgaXMgbm93IGluIGNhY2hlIEIgZXhjbHVzaXZlbHkKKworVGhlIHdyaXRlIG1lbW9yeSBiYXJyaWVyIGZvcmNlcyB0aGUgb3RoZXIgQ1BVcyBpbiB0aGUgc3lzdGVtIHRvIHBlcmNlaXZlIHRoYXQKK3RoZSBsb2NhbCBDUFUncyBjYWNoZXMgaGF2ZSBhcHBhcmVudGx5IGJlZW4gdXBkYXRlZCBpbiB0aGUgY29ycmVjdCBvcmRlci4gIEJ1dAorbm93IGltYWdpbmUgdGhhdCB0aGUgc2Vjb25kIENQVSB3YW50cyB0byByZWFkIHRob3NlIHZhbHVlczoKKworCUNQVSAxCQlDUFUgMgkJQ09NTUVOVAorCT09PT09PT09PT09PT09PQk9PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJLi4uCisJCQlxID0gcDsKKwkJCXggPSAqcTsKKworVGhlIGFib3ZlIHBhaXIgb2YgcmVhZHMgbWF5IHRoZW4gZmFpbCB0byBoYXBwZW4gaW4gdGhlIGV4cGVjdGVkIG9yZGVyLCBhcyB0aGUKK2NhY2hlbGluZSBob2xkaW5nIHAgbWF5IGdldCB1cGRhdGVkIGluIG9uZSBvZiB0aGUgc2Vjb25kIENQVSdzIGNhY2hlcyB3aGlsc3QKK3RoZSB1cGRhdGUgdG8gdGhlIGNhY2hlbGluZSBob2xkaW5nIHYgaXMgZGVsYXllZCBpbiB0aGUgb3RoZXIgb2YgdGhlIHNlY29uZAorQ1BVJ3MgY2FjaGVzIGJ5IHNvbWUgb3RoZXIgY2FjaGUgZXZlbnQ6CisKKwlDUFUgMQkJQ1BVIDIJCUNPTU1FTlQKKwk9PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCQkJCQl1ID09IDAsIHYgPT0gMSBhbmQgcCA9PSAmdSwgcSA9PSAmdQorCXYgPSAyOworCXNtcF93bWIoKTsKKwk8QTptb2RpZnkgdj0yPgk8QzpidXN5PgorCQkJPEM6cXVldWUgdj0yPgorCXAgPSAmdjsJCXEgPSBwOworCQkJPEQ6cmVxdWVzdCBwPgorCTxCOm1vZGlmeSBwPSZ2Pgk8RDpjb21taXQgcD0mdj4KKwkJCTxEOnJlYWQgcD4KKwkJCXggPSAqcTsKKwkJCTxDOnJlYWQgKnE+CVJlYWRzIGZyb20gdiBiZWZvcmUgdiB1cGRhdGVkIGluIGNhY2hlCisJCQk8Qzp1bmJ1c3k+CisJCQk8Qzpjb21taXQgdj0yPgorCitCYXNpY2FsbHksIHdoaWxzdCBib3RoIGNhY2hlbGluZXMgd2lsbCBiZSB1cGRhdGVkIG9uIENQVSAyIGV2ZW50dWFsbHksIHRoZXJlJ3MKK25vIGd1YXJhbnRlZSB0aGF0LCB3aXRob3V0IGludGVydmVudGlvbiwgdGhlIG9yZGVyIG9mIHVwZGF0ZSB3aWxsIGJlIHRoZSBzYW1lCithcyB0aGF0IGNvbW1pdHRlZCBvbiBDUFUgMS4KKworCitUbyBpbnRlcnZlbmUsIHdlIG5lZWQgdG8gaW50ZXJwb2xhdGUgYSBkYXRhIGRlcGVuZGVuY3kgYmFycmllciBvciBhIHJlYWQKK2JhcnJpZXIgYmV0d2VlbiB0aGUgbG9hZHMuICBUaGlzIHdpbGwgZm9yY2UgdGhlIGNhY2hlIHRvIGNvbW1pdCBpdHMgY29oZXJlbmN5CitxdWV1ZSBiZWZvcmUgcHJvY2Vzc2luZyBhbnkgZnVydGhlciByZXF1ZXN0czoKKworCUNQVSAxCQlDUFUgMgkJQ09NTUVOVAorCT09PT09PT09PT09PT09PQk9PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJCQkJCXUgPT0gMCwgdiA9PSAxIGFuZCBwID09ICZ1LCBxID09ICZ1CisJdiA9IDI7CisJc21wX3dtYigpOworCTxBOm1vZGlmeSB2PTI+CTxDOmJ1c3k+CisJCQk8QzpxdWV1ZSB2PTI+CisJcCA9ICZ2OwkJcSA9IHA7CisJCQk8RDpyZXF1ZXN0IHA+CisJPEI6bW9kaWZ5IHA9JnY+CTxEOmNvbW1pdCBwPSZ2PgorCQkJPEQ6cmVhZCBwPgorCQkJc21wX3JlYWRfYmFycmllcl9kZXBlbmRzKCkKKwkJCTxDOnVuYnVzeT4KKwkJCTxDOmNvbW1pdCB2PTI+CisJCQl4ID0gKnE7CisJCQk8QzpyZWFkICpxPglSZWFkcyBmcm9tIHYgYWZ0ZXIgdiB1cGRhdGVkIGluIGNhY2hlCisKKworVGhpcyBzb3J0IG9mIHByb2JsZW0gY2FuIGJlIGVuY291bnRlcmVkIG9uIERFQyBBbHBoYSBwcm9jZXNzb3JzIGFzIHRoZXkgaGF2ZSBhCitzcGxpdCBjYWNoZSB0aGF0IGltcHJvdmVzIHBlcmZvcm1hbmNlIGJ5IG1ha2luZyBiZXR0ZXIgdXNlIG9mIHRoZSBkYXRhIGJ1cy4KK1doaWxzdCBtb3N0IENQVXMgZG8gaW1wbHkgYSBkYXRhIGRlcGVuZGVuY3kgYmFycmllciBvbiB0aGUgcmVhZCB3aGVuIGEgbWVtb3J5CithY2Nlc3MgZGVwZW5kcyBvbiBhIHJlYWQsIG5vdCBhbGwgZG8sIHNvIGl0IG1heSBub3QgYmUgcmVsaWVkIG9uLgorCitPdGhlciBDUFVzIG1heSBhbHNvIGhhdmUgc3BsaXQgY2FjaGVzLCBidXQgbXVzdCBjb29yZGluYXRlIGJldHdlZW4gdGhlIHZhcmlvdXMKK2NhY2hlbGV0cyBmb3Igbm9ybWFsIG1lbW9yeSBhY2Nlc3Nlcy4gIFRoZSBzZW1hbnRpY3Mgb2YgdGhlIEFscGhhIHJlbW92ZXMgdGhlCituZWVkIGZvciBjb29yZGluYXRpb24gaW4gdGhlIGFic2VuY2Ugb2YgbWVtb3J5IGJhcnJpZXJzLgorCisKK0NBQ0hFIENPSEVSRU5DWSBWUyBETUEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTm90IGFsbCBzeXN0ZW1zIG1haW50YWluIGNhY2hlIGNvaGVyZW5jeSB3aXRoIHJlc3BlY3QgdG8gZGV2aWNlcyBkb2luZyBETUEuICBJbgorc3VjaCBjYXNlcywgYSBkZXZpY2UgYXR0ZW1wdGluZyBETUEgbWF5IG9idGFpbiBzdGFsZSBkYXRhIGZyb20gUkFNIGJlY2F1c2UKK2RpcnR5IGNhY2hlIGxpbmVzIG1heSBiZSByZXNpZGVudCBpbiB0aGUgY2FjaGVzIG9mIHZhcmlvdXMgQ1BVcywgYW5kIG1heSBub3QKK2hhdmUgYmVlbiB3cml0dGVuIGJhY2sgdG8gUkFNIHlldC4gIFRvIGRlYWwgd2l0aCB0aGlzLCB0aGUgYXBwcm9wcmlhdGUgcGFydCBvZgordGhlIGtlcm5lbCBtdXN0IGZsdXNoIHRoZSBvdmVybGFwcGluZyBiaXRzIG9mIGNhY2hlIG9uIGVhY2ggQ1BVIChhbmQgbWF5YmUKK2ludmFsaWRhdGUgdGhlbSBhcyB3ZWxsKS4KKworSW4gYWRkaXRpb24sIHRoZSBkYXRhIERNQSdkIHRvIFJBTSBieSBhIGRldmljZSBtYXkgYmUgb3ZlcndyaXR0ZW4gYnkgZGlydHkKK2NhY2hlIGxpbmVzIGJlaW5nIHdyaXR0ZW4gYmFjayB0byBSQU0gZnJvbSBhIENQVSdzIGNhY2hlIGFmdGVyIHRoZSBkZXZpY2UgaGFzCitpbnN0YWxsZWQgaXRzIG93biBkYXRhLCBvciBjYWNoZSBsaW5lcyBwcmVzZW50IGluIHRoZSBDUFUncyBjYWNoZSBtYXkgc2ltcGx5CitvYnNjdXJlIHRoZSBmYWN0IHRoYXQgUkFNIGhhcyBiZWVuIHVwZGF0ZWQsIHVudGlsIGF0IHN1Y2ggdGltZSBhcyB0aGUgY2FjaGVsaW5lCitpcyBkaXNjYXJkZWQgZnJvbSB0aGUgQ1BVJ3MgY2FjaGUgYW5kIHJlbG9hZGVkLiAgVG8gZGVhbCB3aXRoIHRoaXMsIHRoZQorYXBwcm9wcmlhdGUgcGFydCBvZiB0aGUga2VybmVsIG11c3QgaW52YWxpZGF0ZSB0aGUgb3ZlcmxhcHBpbmcgYml0cyBvZiB0aGUKK2NhY2hlIG9uIGVhY2ggQ1BVLgorCitTZWUgRG9jdW1lbnRhdGlvbi9jYWNoZXRsYi50eHQgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY2FjaGUgbWFuYWdlbWVudC4KKworCitDQUNIRSBDT0hFUkVOQ1kgVlMgTU1JTworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTWVtb3J5IG1hcHBlZCBJL08gdXN1YWxseSB0YWtlcyBwbGFjZSB0aHJvdWdoIG1lbW9yeSBsb2NhdGlvbnMgdGhhdCBhcmUgcGFydCBvZgorYSB3aW5kb3cgaW4gdGhlIENQVSdzIG1lbW9yeSBzcGFjZSB0aGF0IGhhcyBkaWZmZXJlbnQgcHJvcGVydGllcyBhc3NpZ25lZCB0aGFuCit0aGUgdXN1YWwgUkFNIGRpcmVjdGVkIHdpbmRvdy4KKworQW1vbmdzdCB0aGVzZSBwcm9wZXJ0aWVzIGlzIHVzdWFsbHkgdGhlIGZhY3QgdGhhdCBzdWNoIGFjY2Vzc2VzIGJ5cGFzcyB0aGUKK2NhY2hpbmcgZW50aXJlbHkgYW5kIGdvIGRpcmVjdGx5IHRvIHRoZSBkZXZpY2UgYnVzZXMuICBUaGlzIG1lYW5zIE1NSU8gYWNjZXNzZXMKK21heSwgaW4gZWZmZWN0LCBvdmVydGFrZSBhY2Nlc3NlcyB0byBjYWNoZWQgbWVtb3J5IHRoYXQgd2VyZSBlbWl0dGVkIGVhcmxpZXIuCitBIG1lbW9yeSBiYXJyaWVyIGlzbid0IHN1ZmZpY2llbnQgaW4gc3VjaCBhIGNhc2UsIGJ1dCByYXRoZXIgdGhlIGNhY2hlIG11c3QgYmUKK2ZsdXNoZWQgYmV0d2VlbiB0aGUgY2FjaGVkIG1lbW9yeSB3cml0ZSBhbmQgdGhlIE1NSU8gYWNjZXNzIGlmIHRoZSB0d28gYXJlIGluCithbnkgd2F5IGRlcGVuZGVudC4KKworCis9PT09PT09PT09PT09PT09PT09PT09PT09CitUSEUgVEhJTkdTIENQVVMgR0VUIFVQIFRPCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK0EgcHJvZ3JhbW1lciBtaWdodCB0YWtlIGl0IGZvciBncmFudGVkIHRoYXQgdGhlIENQVSB3aWxsIHBlcmZvcm0gbWVtb3J5CitvcGVyYXRpb25zIGluIGV4YWN0bHkgdGhlIG9yZGVyIHNwZWNpZmllZCwgc28gdGhhdCBpZiB0aGUgQ1BVIGlzLCBmb3IgZXhhbXBsZSwKK2dpdmVuIHRoZSBmb2xsb3dpbmcgcGllY2Ugb2YgY29kZSB0byBleGVjdXRlOgorCisJYSA9IFJFQURfT05DRSgqQSk7CisJV1JJVEVfT05DRSgqQiwgYik7CisJYyA9IFJFQURfT05DRSgqQyk7CisJZCA9IFJFQURfT05DRSgqRCk7CisJV1JJVEVfT05DRSgqRSwgZSk7CisKK3RoZXkgd291bGQgdGhlbiBleHBlY3QgdGhhdCB0aGUgQ1BVIHdpbGwgY29tcGxldGUgdGhlIG1lbW9yeSBvcGVyYXRpb24gZm9yIGVhY2gKK2luc3RydWN0aW9uIGJlZm9yZSBtb3Zpbmcgb24gdG8gdGhlIG5leHQgb25lLCBsZWFkaW5nIHRvIGEgZGVmaW5pdGUgc2VxdWVuY2Ugb2YKK29wZXJhdGlvbnMgYXMgc2VlbiBieSBleHRlcm5hbCBvYnNlcnZlcnMgaW4gdGhlIHN5c3RlbToKKworCUxPQUQgKkEsIFNUT1JFICpCLCBMT0FEICpDLCBMT0FEICpELCBTVE9SRSAqRS4KKworCitSZWFsaXR5IGlzLCBvZiBjb3Vyc2UsIG11Y2ggbWVzc2llci4gIFdpdGggbWFueSBDUFVzIGFuZCBjb21waWxlcnMsIHRoZSBhYm92ZQorYXNzdW1wdGlvbiBkb2Vzbid0IGhvbGQgYmVjYXVzZToKKworICgqKSBsb2FkcyBhcmUgbW9yZSBsaWtlbHkgdG8gbmVlZCB0byBiZSBjb21wbGV0ZWQgaW1tZWRpYXRlbHkgdG8gcGVybWl0CisgICAgIGV4ZWN1dGlvbiBwcm9ncmVzcywgd2hlcmVhcyBzdG9yZXMgY2FuIG9mdGVuIGJlIGRlZmVycmVkIHdpdGhvdXQgYQorICAgICBwcm9ibGVtOworCisgKCopIGxvYWRzIG1heSBiZSBkb25lIHNwZWN1bGF0aXZlbHksIGFuZCB0aGUgcmVzdWx0IGRpc2NhcmRlZCBzaG91bGQgaXQgcHJvdmUKKyAgICAgdG8gaGF2ZSBiZWVuIHVubmVjZXNzYXJ5OworCisgKCopIGxvYWRzIG1heSBiZSBkb25lIHNwZWN1bGF0aXZlbHksIGxlYWRpbmcgdG8gdGhlIHJlc3VsdCBoYXZpbmcgYmVlbiBmZXRjaGVkCisgICAgIGF0IHRoZSB3cm9uZyB0aW1lIGluIHRoZSBleHBlY3RlZCBzZXF1ZW5jZSBvZiBldmVudHM7CisKKyAoKikgdGhlIG9yZGVyIG9mIHRoZSBtZW1vcnkgYWNjZXNzZXMgbWF5IGJlIHJlYXJyYW5nZWQgdG8gcHJvbW90ZSBiZXR0ZXIgdXNlCisgICAgIG9mIHRoZSBDUFUgYnVzZXMgYW5kIGNhY2hlczsKKworICgqKSBsb2FkcyBhbmQgc3RvcmVzIG1heSBiZSBjb21iaW5lZCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIHdoZW4gdGFsa2luZyB0bworICAgICBtZW1vcnkgb3IgSS9PIGhhcmR3YXJlIHRoYXQgY2FuIGRvIGJhdGNoZWQgYWNjZXNzZXMgb2YgYWRqYWNlbnQgbG9jYXRpb25zLAorICAgICB0aHVzIGN1dHRpbmcgZG93biBvbiB0cmFuc2FjdGlvbiBzZXR1cCBjb3N0cyAobWVtb3J5IGFuZCBQQ0kgZGV2aWNlcyBtYXkKKyAgICAgYm90aCBiZSBhYmxlIHRvIGRvIHRoaXMpOyBhbmQKKworICgqKSB0aGUgQ1BVJ3MgZGF0YSBjYWNoZSBtYXkgYWZmZWN0IHRoZSBvcmRlcmluZywgYW5kIHdoaWxzdCBjYWNoZS1jb2hlcmVuY3kKKyAgICAgbWVjaGFuaXNtcyBtYXkgYWxsZXZpYXRlIHRoaXMgLSBvbmNlIHRoZSBzdG9yZSBoYXMgYWN0dWFsbHkgaGl0IHRoZSBjYWNoZQorICAgICAtIHRoZXJlJ3Mgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIGNvaGVyZW5jeSBtYW5hZ2VtZW50IHdpbGwgYmUgcHJvcGFnYXRlZCBpbgorICAgICBvcmRlciB0byBvdGhlciBDUFVzLgorCitTbyB3aGF0IGFub3RoZXIgQ1BVLCBzYXksIG1pZ2h0IGFjdHVhbGx5IG9ic2VydmUgZnJvbSB0aGUgYWJvdmUgcGllY2Ugb2YgY29kZQoraXM6CisKKwlMT0FEICpBLCAuLi4sIExPQUQgeypDLCpEfSwgU1RPUkUgKkUsIFNUT1JFICpCCisKKwkoV2hlcmUgIkxPQUQgeypDLCpEfSIgaXMgYSBjb21iaW5lZCBsb2FkKQorCisKK0hvd2V2ZXIsIGl0IGlzIGd1YXJhbnRlZWQgdGhhdCBhIENQVSB3aWxsIGJlIHNlbGYtY29uc2lzdGVudDogaXQgd2lsbCBzZWUgaXRzCitfb3duXyBhY2Nlc3NlcyBhcHBlYXIgdG8gYmUgY29ycmVjdGx5IG9yZGVyZWQsIHdpdGhvdXQgdGhlIG5lZWQgZm9yIGEgbWVtb3J5CitiYXJyaWVyLiAgRm9yIGluc3RhbmNlIHdpdGggdGhlIGZvbGxvd2luZyBjb2RlOgorCisJVSA9IFJFQURfT05DRSgqQSk7CisJV1JJVEVfT05DRSgqQSwgVik7CisJV1JJVEVfT05DRSgqQSwgVyk7CisJWCA9IFJFQURfT05DRSgqQSk7CisJV1JJVEVfT05DRSgqQSwgWSk7CisJWiA9IFJFQURfT05DRSgqQSk7CisKK2FuZCBhc3N1bWluZyBubyBpbnRlcnZlbnRpb24gYnkgYW4gZXh0ZXJuYWwgaW5mbHVlbmNlLCBpdCBjYW4gYmUgYXNzdW1lZCB0aGF0Cit0aGUgZmluYWwgcmVzdWx0IHdpbGwgYXBwZWFyIHRvIGJlOgorCisJVSA9PSB0aGUgb3JpZ2luYWwgdmFsdWUgb2YgKkEKKwlYID09IFcKKwlaID09IFkKKwkqQSA9PSBZCisKK1RoZSBjb2RlIGFib3ZlIG1heSBjYXVzZSB0aGUgQ1BVIHRvIGdlbmVyYXRlIHRoZSBmdWxsIHNlcXVlbmNlIG9mIG1lbW9yeQorYWNjZXNzZXM6CisKKwlVPUxPQUQgKkEsIFNUT1JFICpBPVYsIFNUT1JFICpBPVcsIFg9TE9BRCAqQSwgU1RPUkUgKkE9WSwgWj1MT0FEICpBCisKK2luIHRoYXQgb3JkZXIsIGJ1dCwgd2l0aG91dCBpbnRlcnZlbnRpb24sIHRoZSBzZXF1ZW5jZSBtYXkgaGF2ZSBhbG1vc3QgYW55Citjb21iaW5hdGlvbiBvZiBlbGVtZW50cyBjb21iaW5lZCBvciBkaXNjYXJkZWQsIHByb3ZpZGVkIHRoZSBwcm9ncmFtJ3Mgdmlldworb2YgdGhlIHdvcmxkIHJlbWFpbnMgY29uc2lzdGVudC4gIE5vdGUgdGhhdCBSRUFEX09OQ0UoKSBhbmQgV1JJVEVfT05DRSgpCithcmUgLW5vdC0gb3B0aW9uYWwgaW4gdGhlIGFib3ZlIGV4YW1wbGUsIGFzIHRoZXJlIGFyZSBhcmNoaXRlY3R1cmVzCit3aGVyZSBhIGdpdmVuIENQVSBtaWdodCByZW9yZGVyIHN1Y2Nlc3NpdmUgbG9hZHMgdG8gdGhlIHNhbWUgbG9jYXRpb24uCitPbiBzdWNoIGFyY2hpdGVjdHVyZXMsIFJFQURfT05DRSgpIGFuZCBXUklURV9PTkNFKCkgZG8gd2hhdGV2ZXIgaXMKK25lY2Vzc2FyeSB0byBwcmV2ZW50IHRoaXMsIGZvciBleGFtcGxlLCBvbiBJdGFuaXVtIHRoZSB2b2xhdGlsZSBjYXN0cwordXNlZCBieSBSRUFEX09OQ0UoKSBhbmQgV1JJVEVfT05DRSgpIGNhdXNlIEdDQyB0byBlbWl0IHRoZSBzcGVjaWFsIGxkLmFjcQorYW5kIHN0LnJlbCBpbnN0cnVjdGlvbnMgKHJlc3BlY3RpdmVseSkgdGhhdCBwcmV2ZW50IHN1Y2ggcmVvcmRlcmluZy4KKworVGhlIGNvbXBpbGVyIG1heSBhbHNvIGNvbWJpbmUsIGRpc2NhcmQgb3IgZGVmZXIgZWxlbWVudHMgb2YgdGhlIHNlcXVlbmNlIGJlZm9yZQordGhlIENQVSBldmVuIHNlZXMgdGhlbS4KKworRm9yIGluc3RhbmNlOgorCisJKkEgPSBWOworCSpBID0gVzsKKworbWF5IGJlIHJlZHVjZWQgdG86CisKKwkqQSA9IFc7CisKK3NpbmNlLCB3aXRob3V0IGVpdGhlciBhIHdyaXRlIGJhcnJpZXIgb3IgYW4gV1JJVEVfT05DRSgpLCBpdCBjYW4gYmUKK2Fzc3VtZWQgdGhhdCB0aGUgZWZmZWN0IG9mIHRoZSBzdG9yYWdlIG9mIFYgdG8gKkEgaXMgbG9zdC4gIFNpbWlsYXJseToKKworCSpBID0gWTsKKwlaID0gKkE7CisKK21heSwgd2l0aG91dCBhIG1lbW9yeSBiYXJyaWVyIG9yIGFuIFJFQURfT05DRSgpIGFuZCBXUklURV9PTkNFKCksIGJlCityZWR1Y2VkIHRvOgorCisJKkEgPSBZOworCVogPSBZOworCithbmQgdGhlIExPQUQgb3BlcmF0aW9uIG5ldmVyIGFwcGVhciBvdXRzaWRlIG9mIHRoZSBDUFUuCisKKworQU5EIFRIRU4gVEhFUkUnUyBUSEUgQUxQSEEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBERUMgQWxwaGEgQ1BVIGlzIG9uZSBvZiB0aGUgbW9zdCByZWxheGVkIENQVXMgdGhlcmUgaXMuICBOb3Qgb25seSB0aGF0LAorc29tZSB2ZXJzaW9ucyBvZiB0aGUgQWxwaGEgQ1BVIGhhdmUgYSBzcGxpdCBkYXRhIGNhY2hlLCBwZXJtaXR0aW5nIHRoZW0gdG8gaGF2ZQordHdvIHNlbWFudGljYWxseS1yZWxhdGVkIGNhY2hlIGxpbmVzIHVwZGF0ZWQgYXQgc2VwYXJhdGUgdGltZXMuICBUaGlzIGlzIHdoZXJlCit0aGUgZGF0YSBkZXBlbmRlbmN5IGJhcnJpZXIgcmVhbGx5IGJlY29tZXMgbmVjZXNzYXJ5IGFzIHRoaXMgc3luY2hyb25pc2VzIGJvdGgKK2NhY2hlcyB3aXRoIHRoZSBtZW1vcnkgY29oZXJlbmNlIHN5c3RlbSwgdGh1cyBtYWtpbmcgaXQgc2VlbSBsaWtlIHBvaW50ZXIKK2NoYW5nZXMgdnMgbmV3IGRhdGEgb2NjdXIgaW4gdGhlIHJpZ2h0IG9yZGVyLgorCitUaGUgQWxwaGEgZGVmaW5lcyB0aGUgTGludXgga2VybmVsJ3MgbWVtb3J5IGJhcnJpZXIgbW9kZWwuCisKK1NlZSB0aGUgc3Vic2VjdGlvbiBvbiAiQ2FjaGUgQ29oZXJlbmN5IiBhYm92ZS4KKworCis9PT09PT09PT09PT0KK0VYQU1QTEUgVVNFUworPT09PT09PT09PT09CisKK0NJUkNVTEFSIEJVRkZFUlMKKy0tLS0tLS0tLS0tLS0tLS0KKworTWVtb3J5IGJhcnJpZXJzIGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudCBjaXJjdWxhciBidWZmZXJpbmcgd2l0aG91dCB0aGUgbmVlZAorb2YgYSBsb2NrIHRvIHNlcmlhbGlzZSB0aGUgcHJvZHVjZXIgd2l0aCB0aGUgY29uc3VtZXIuICBTZWU6CisKKwlEb2N1bWVudGF0aW9uL2NpcmN1bGFyLWJ1ZmZlcnMudHh0CisKK2ZvciBkZXRhaWxzLgorCisKKz09PT09PT09PT0KK1JFRkVSRU5DRVMKKz09PT09PT09PT0KKworQWxwaGEgQVhQIEFyY2hpdGVjdHVyZSBSZWZlcmVuY2UgTWFudWFsLCBTZWNvbmQgRWRpdGlvbiAoU2l0ZXMgJiBXaXRlaywKK0RpZ2l0YWwgUHJlc3MpCisJQ2hhcHRlciA1LjI6IFBoeXNpY2FsIEFkZHJlc3MgU3BhY2UgQ2hhcmFjdGVyaXN0aWNzCisJQ2hhcHRlciA1LjQ6IENhY2hlcyBhbmQgV3JpdGUgQnVmZmVycworCUNoYXB0ZXIgNS41OiBEYXRhIFNoYXJpbmcKKwlDaGFwdGVyIDUuNjogUmVhZC9Xcml0ZSBPcmRlcmluZworCitBTUQ2NCBBcmNoaXRlY3R1cmUgUHJvZ3JhbW1lcidzIE1hbnVhbCBWb2x1bWUgMjogU3lzdGVtIFByb2dyYW1taW5nCisJQ2hhcHRlciA3LjE6IE1lbW9yeS1BY2Nlc3MgT3JkZXJpbmcKKwlDaGFwdGVyIDcuNDogQnVmZmVyaW5nIGFuZCBDb21iaW5pbmcgTWVtb3J5IFdyaXRlcworCitJQS0zMiBJbnRlbCBBcmNoaXRlY3R1cmUgU29mdHdhcmUgRGV2ZWxvcGVyJ3MgTWFudWFsLCBWb2x1bWUgMzoKK1N5c3RlbSBQcm9ncmFtbWluZyBHdWlkZQorCUNoYXB0ZXIgNy4xOiBMb2NrZWQgQXRvbWljIE9wZXJhdGlvbnMKKwlDaGFwdGVyIDcuMjogTWVtb3J5IE9yZGVyaW5nCisJQ2hhcHRlciA3LjQ6IFNlcmlhbGl6aW5nIEluc3RydWN0aW9ucworCitUaGUgU1BBUkMgQXJjaGl0ZWN0dXJlIE1hbnVhbCwgVmVyc2lvbiA5CisJQ2hhcHRlciA4OiBNZW1vcnkgTW9kZWxzCisJQXBwZW5kaXggRDogRm9ybWFsIFNwZWNpZmljYXRpb24gb2YgdGhlIE1lbW9yeSBNb2RlbHMKKwlBcHBlbmRpeCBKOiBQcm9ncmFtbWluZyB3aXRoIHRoZSBNZW1vcnkgTW9kZWxzCisKK1VsdHJhU1BBUkMgUHJvZ3JhbW1lciBSZWZlcmVuY2UgTWFudWFsCisJQ2hhcHRlciA1OiBNZW1vcnkgQWNjZXNzZXMgYW5kIENhY2hlYWJpbGl0eQorCUNoYXB0ZXIgMTU6IFNwYXJjLVY5IE1lbW9yeSBNb2RlbHMKKworVWx0cmFTUEFSQyBJSUkgQ3UgVXNlcidzIE1hbnVhbAorCUNoYXB0ZXIgOTogTWVtb3J5IE1vZGVscworCitVbHRyYVNQQVJDIElJSWkgUHJvY2Vzc29yIFVzZXIncyBNYW51YWwKKwlDaGFwdGVyIDg6IE1lbW9yeSBNb2RlbHMKKworVWx0cmFTUEFSQyBBcmNoaXRlY3R1cmUgMjAwNQorCUNoYXB0ZXIgOTogTWVtb3J5CisJQXBwZW5kaXggRDogRm9ybWFsIFNwZWNpZmljYXRpb25zIG9mIHRoZSBNZW1vcnkgTW9kZWxzCisKK1VsdHJhU1BBUkMgVDEgU3VwcGxlbWVudCB0byB0aGUgVWx0cmFTUEFSQyBBcmNoaXRlY3R1cmUgMjAwNQorCUNoYXB0ZXIgODogTWVtb3J5IE1vZGVscworCUFwcGVuZGl4IEY6IENhY2hlcyBhbmQgQ2FjaGUgQ29oZXJlbmN5CisKK1NvbGFyaXMgSW50ZXJuYWxzLCBDb3JlIEtlcm5lbCBBcmNoaXRlY3R1cmUsIHA2My02ODoKKwlDaGFwdGVyIDMuMzogSGFyZHdhcmUgQ29uc2lkZXJhdGlvbnMgZm9yIExvY2tzIGFuZAorCQkJU3luY2hyb25pemF0aW9uCisKK1VuaXggU3lzdGVtcyBmb3IgTW9kZXJuIEFyY2hpdGVjdHVyZXMsIFN5bW1ldHJpYyBNdWx0aXByb2Nlc3NpbmcgYW5kIENhY2hpbmcKK2ZvciBLZXJuZWwgUHJvZ3JhbW1lcnM6CisJQ2hhcHRlciAxMzogT3RoZXIgTWVtb3J5IE1vZGVscworCitJbnRlbCBJdGFuaXVtIEFyY2hpdGVjdHVyZSBTb2Z0d2FyZSBEZXZlbG9wZXIncyBNYW51YWw6IFZvbHVtZSAxOgorCVNlY3Rpb24gMi42OiBTcGVjdWxhdGlvbgorCVNlY3Rpb24gNC40OiBNZW1vcnkgQWNjZXNzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21lbW9yeS1kZXZpY2VzL3RpLWVtaWYudHh0IGIvRG9jdW1lbnRhdGlvbi9tZW1vcnktZGV2aWNlcy90aS1lbWlmLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGFkOWE3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9tZW1vcnktZGV2aWNlcy90aS1lbWlmLnR4dApAQCAtMCwwICsxLDU3IEBACitUSSBFTUlGIFNEUkFNIENvbnRyb2xsZXIgRHJpdmVyOgorCitBdXRob3IKKz09PT09PT09CitBbmVlc2ggViA8YW5lZXNoQHRpLmNvbT4KKworTG9jYXRpb24KKz09PT09PT09PT09PQorZHJpdmVyL21lbW9yeS9lbWlmLmMKKworU3VwcG9ydGVkIFNvQ3M6Cis9PT09PT09PT09PT09PT09PT09CitUSSBPTUFQNDR4eAorVEkgT01BUDU0eHgKKworTWVudWNvbmZpZyBvcHRpb246Cis9PT09PT09PT09PT09PT09PT09PT09PT09PQorRGV2aWNlIERyaXZlcnMKKwlNZW1vcnkgZGV2aWNlcworCQlUZXhhcyBJbnN0cnVtZW50cyBFTUlGIGRyaXZlcgorCitEZXNjcmlwdGlvbgorPT09PT09PT09PT0KK1RoaXMgZHJpdmVyIGlzIGZvciB0aGUgRU1JRiBtb2R1bGUgYXZhaWxhYmxlIGluIFRleGFzIEluc3RydW1lbnRzCitTb0NzLiBFTUlGIGlzIGFuIFNEUkFNIGNvbnRyb2xsZXIgdGhhdCwgYmFzZWQgb24gaXRzIHJldmlzaW9uLAorc3VwcG9ydHMgb25lIG9yIG1vcmUgb2YgRERSMiwgRERSMywgYW5kIExQRERSMiBTRFJBTSBwcm90b2NvbHMuCitUaGlzIGRyaXZlciB0YWtlcyBjYXJlIG9mIG9ubHkgTFBERFIyIG1lbW9yaWVzIHByZXNlbnRseS4gVGhlCitmdW5jdGlvbnMgb2YgdGhlIGRyaXZlciBpbmNsdWRlcyByZS1jb25maWd1cmluZyBBQyB0aW1pbmcKK3BhcmFtZXRlcnMgYW5kIG90aGVyIHNldHRpbmdzIGR1cmluZyBmcmVxdWVuY3ksIHZvbHRhZ2UgYW5kCit0ZW1wZXJhdHVyZSBjaGFuZ2VzCisKK1BsYXRmb3JtIERhdGEgKHNlZSBpbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvZW1pZl9wbGF0LmgpOgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitERFIgZGV2aWNlIGRldGFpbHMgYW5kIG90aGVyIGJvYXJkIGRlcGVuZGVudCBhbmQgU29DIGRlcGVuZGVudAoraW5mb3JtYXRpb24gY2FuIGJlIHBhc3NlZCB0aHJvdWdoIHBsYXRmb3JtIGRhdGEgKHN0cnVjdCBlbWlmX3BsYXRmb3JtX2RhdGEpCistIEREUiBkZXZpY2UgZGV0YWlsczogJ3N0cnVjdCBkZHJfZGV2aWNlX2luZm8nCistIERldmljZSBBQyB0aW1pbmdzOiAnc3RydWN0IGxwZGRyMl90aW1pbmdzJyBhbmQgJ3N0cnVjdCBscGRkcjJfbWluX3RjaycKKy0gQ3VzdG9tIGNvbmZpZ3VyYXRpb25zOiBjdXN0b21pemFibGUgcG9saWN5IG9wdGlvbnMgdGhyb3VnaAorICAnc3RydWN0IGVtaWZfY3VzdG9tX2NvbmZpZ3MnCistIElQIHJldmlzaW9uCistIFBIWSB0eXBlCisKK0ludGVyZmFjZSB0byB0aGUgZXh0ZXJuYWwgd29ybGQ6Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorRU1JRiBkcml2ZXIgcmVnaXN0ZXJzIG5vdGlmaWVycyBmb3Igdm9sdGFnZSBhbmQgZnJlcXVlbmN5IGNoYW5nZXMKK2FmZmVjdGluZyBFTUlGIGFuZCB0YWtlcyBhcHByb3ByaWF0ZSBhY3Rpb25zIHdoZW4gdGhlc2UgYXJlIGludm9rZWQuCistIGZyZXFfcHJlX25vdGlmeV9oYW5kbGluZygpCistIGZyZXFfcG9zdF9ub3RpZnlfaGFuZGxpbmcoKQorLSB2b2x0X25vdGlmeV9oYW5kbGluZygpCisKK0RlYnVnZnMKKz09PT09PT09CitUaGUgZHJpdmVyIGNyZWF0ZXMgdHdvIGRlYnVnZnMgZW50cmllcyBwZXIgZGV2aWNlLgorLSByZWdjYWNoZV9kdW1wIDogZHVtcCBvZiByZWdpc3RlciB2YWx1ZXMgY2FsY3VsYXRlZCBhbmQgc2F2ZWQgZm9yIGFsbAorICBmcmVxdWVuY2llcyB1c2VkIHNvIGZhci4KKy0gbXI0IDogbGFzdCBwb2xsZWQgdmFsdWUgb2YgTVI0IHJlZ2lzdGVyIGluIHRoZSBMUEREUjIgZGV2aWNlLiBNUjQKKyAgaW5kaWNhdGVzIHRoZSBjdXJyZW50IHRlbXBlcmF0dXJlIGxldmVsIG9mIHRoZSBkZXZpY2UuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21lbW9yeS1ob3RwbHVnLnR4dCBiL0RvY3VtZW50YXRpb24vbWVtb3J5LWhvdHBsdWcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlMmNmY2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL21lbW9yeS1ob3RwbHVnLnR4dApAQCAtMCwwICsxLDQ1MCBAQAorPT09PT09PT09PT09PT0KK01lbW9yeSBIb3RwbHVnCis9PT09PT09PT09PT09PQorCitDcmVhdGVkOgkJCQkJSnVsIDI4IDIwMDcKK0FkZCBkZXNjcmlwdGlvbiBvZiBub3RpZmllciBvZiBtZW1vcnkgaG90cGx1ZwlPY3QgMTEgMjAwNworCitUaGlzIGRvY3VtZW50IGlzIGFib3V0IG1lbW9yeSBob3RwbHVnIGluY2x1ZGluZyBob3ctdG8tdXNlIGFuZCBjdXJyZW50IHN0YXR1cy4KK0JlY2F1c2UgTWVtb3J5IEhvdHBsdWcgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQsIGNvbnRlbnRzIG9mIHRoaXMgdGV4dCB3aWxsCitiZSBjaGFuZ2VkIG9mdGVuLgorCisxLiBJbnRyb2R1Y3Rpb24KKyAgMS4xIHB1cnBvc2Ugb2YgbWVtb3J5IGhvdHBsdWcKKyAgMS4yLiBQaGFzZXMgb2YgbWVtb3J5IGhvdHBsdWcKKyAgMS4zLiBVbml0IG9mIE1lbW9yeSBvbmxpbmUvb2ZmbGluZSBvcGVyYXRpb24KKzIuIEtlcm5lbCBDb25maWd1cmF0aW9uCiszLiBzeXNmcyBmaWxlcyBmb3IgbWVtb3J5IGhvdHBsdWcKKzQuIFBoeXNpY2FsIG1lbW9yeSBob3QtYWRkIHBoYXNlCisgIDQuMSBIYXJkd2FyZShGaXJtd2FyZSkgU3VwcG9ydAorICA0LjIgTm90aWZ5IG1lbW9yeSBob3QtYWRkIGV2ZW50IGJ5IGhhbmQKKzUuIExvZ2ljYWwgTWVtb3J5IGhvdC1hZGQgcGhhc2UKKyAgNS4xLiBTdGF0ZSBvZiBtZW1vcnkKKyAgNS4yLiBIb3cgdG8gb25saW5lIG1lbW9yeQorNi4gTG9naWNhbCBtZW1vcnkgcmVtb3ZlCisgIDYuMSBNZW1vcnkgb2ZmbGluZSBhbmQgWk9ORV9NT1ZBQkxFCisgIDYuMi4gSG93IHRvIG9mZmxpbmUgbWVtb3J5Cis3LiBQaHlzaWNhbCBtZW1vcnkgcmVtb3ZlCis4LiBNZW1vcnkgaG90cGx1ZyBldmVudCBub3RpZmllcgorOS4gRnV0dXJlIFdvcmsgTGlzdAorCitOb3RlKDEpOiB4ODZfNjQncyBoYXMgc3BlY2lhbCBpbXBsZW1lbnRhdGlvbiBmb3IgbWVtb3J5IGhvdHBsdWcuCisgICAgICAgICBUaGlzIHRleHQgZG9lcyBub3QgZGVzY3JpYmUgaXQuCitOb3RlKDIpOiBUaGlzIHRleHQgYXNzdW1lcyB0aGF0IHN5c2ZzIGlzIG1vdW50ZWQgYXQgL3N5cy4KKworCistLS0tLS0tLS0tLS0tLS0KKzEuIEludHJvZHVjdGlvbgorLS0tLS0tLS0tLS0tLS0tCisKKzEuMSBwdXJwb3NlIG9mIG1lbW9yeSBob3RwbHVnCistLS0tLS0tLS0tLS0KK01lbW9yeSBIb3RwbHVnIGFsbG93cyB1c2VycyB0byBpbmNyZWFzZS9kZWNyZWFzZSB0aGUgYW1vdW50IG9mIG1lbW9yeS4KK0dlbmVyYWxseSwgdGhlcmUgYXJlIHR3byBwdXJwb3Nlcy4KKworKEEpIEZvciBjaGFuZ2luZyB0aGUgYW1vdW50IG9mIG1lbW9yeS4KKyAgICBUaGlzIGlzIHRvIGFsbG93IGEgZmVhdHVyZSBsaWtlIGNhcGFjaXR5IG9uIGRlbWFuZC4KKyhCKSBGb3IgaW5zdGFsbGluZy9yZW1vdmluZyBESU1NcyBvciBOVU1BLW5vZGVzIHBoeXNpY2FsbHkuCisgICAgVGhpcyBpcyB0byBleGNoYW5nZSBESU1Ncy9OVU1BLW5vZGVzLCByZWR1Y2UgcG93ZXIgY29uc3VtcHRpb24sIGV0Yy4KKworKEEpIGlzIHJlcXVpcmVkIGJ5IGhpZ2hseSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIChCKSBpcyByZXF1aXJlZCBieQoraGFyZHdhcmUgd2hpY2ggc3VwcG9ydHMgbWVtb3J5IHBvd2VyIG1hbmFnZW1lbnQuCisKK0xpbnV4IG1lbW9yeSBob3RwbHVnIGlzIGRlc2lnbmVkIGZvciBib3RoIHB1cnBvc2UuCisKKworMS4yLiBQaGFzZXMgb2YgbWVtb3J5IGhvdHBsdWcKKy0tLS0tLS0tLS0tLS0tLQorVGhlcmUgYXJlIDIgcGhhc2VzIGluIE1lbW9yeSBIb3RwbHVnLgorICAxKSBQaHlzaWNhbCBNZW1vcnkgSG90cGx1ZyBwaGFzZQorICAyKSBMb2dpY2FsIE1lbW9yeSBIb3RwbHVnIHBoYXNlLgorCitUaGUgRmlyc3QgcGhhc2UgaXMgdG8gY29tbXVuaWNhdGUgaGFyZHdhcmUvZmlybXdhcmUgYW5kIG1ha2UvZXJhc2UKK2Vudmlyb25tZW50IGZvciBob3RwbHVnZ2VkIG1lbW9yeS4gQmFzaWNhbGx5LCB0aGlzIHBoYXNlIGlzIG5lY2Vzc2FyeQorZm9yIHRoZSBwdXJwb3NlIChCKSwgYnV0IHRoaXMgaXMgZ29vZCBwaGFzZSBmb3IgY29tbXVuaWNhdGlvbiBiZXR3ZWVuCitoaWdobHkgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHRvby4KKworV2hlbiBtZW1vcnkgaXMgaG90cGx1Z2dlZCwgdGhlIGtlcm5lbCByZWNvZ25pemVzIG5ldyBtZW1vcnksIG1ha2VzIG5ldyBtZW1vcnkKK21hbmFnZW1lbnQgdGFibGVzLCBhbmQgbWFrZXMgc3lzZnMgZmlsZXMgZm9yIG5ldyBtZW1vcnkncyBvcGVyYXRpb24uCisKK0lmIGZpcm13YXJlIHN1cHBvcnRzIG5vdGlmaWNhdGlvbiBvZiBjb25uZWN0aW9uIG9mIG5ldyBtZW1vcnkgdG8gT1MsCit0aGlzIHBoYXNlIGlzIHRyaWdnZXJlZCBhdXRvbWF0aWNhbGx5LiBBQ1BJIGNhbiBub3RpZnkgdGhpcyBldmVudC4gSWYgbm90LAorInByb2JlIiBvcGVyYXRpb24gYnkgc3lzdGVtIGFkbWluaXN0cmF0aW9uIGlzIHVzZWQgaW5zdGVhZC4KKyhzZWUgU2VjdGlvbiA0LikuCisKK0xvZ2ljYWwgTWVtb3J5IEhvdHBsdWcgcGhhc2UgaXMgdG8gY2hhbmdlIG1lbW9yeSBzdGF0ZSBpbnRvCithdmFpbGFibGUvdW5hdmFpbGFibGUgZm9yIHVzZXJzLiBBbW91bnQgb2YgbWVtb3J5IGZyb20gdXNlcidzIHZpZXcgaXMKK2NoYW5nZWQgYnkgdGhpcyBwaGFzZS4gVGhlIGtlcm5lbCBtYWtlcyBhbGwgbWVtb3J5IGluIGl0IGFzIGZyZWUgcGFnZXMKK3doZW4gYSBtZW1vcnkgcmFuZ2UgaXMgYXZhaWxhYmxlLgorCitJbiB0aGlzIGRvY3VtZW50LCB0aGlzIHBoYXNlIGlzIGRlc2NyaWJlZCBhcyBvbmxpbmUvb2ZmbGluZS4KKworTG9naWNhbCBNZW1vcnkgSG90cGx1ZyBwaGFzZSBpcyB0cmlnZ2VyZWQgYnkgd3JpdGUgb2Ygc3lzZnMgZmlsZSBieSBzeXN0ZW0KK2FkbWluaXN0cmF0b3IuIEZvciB0aGUgaG90LWFkZCBjYXNlLCBpdCBtdXN0IGJlIGV4ZWN1dGVkIGFmdGVyIFBoeXNpY2FsIEhvdHBsdWcKK3BoYXNlIGJ5IGhhbmQuCisoSG93ZXZlciwgaWYgeW91IHdyaXRlcyB1ZGV2J3MgaG90cGx1ZyBzY3JpcHRzIGZvciBtZW1vcnkgaG90cGx1ZywgdGhlc2UKKyBwaGFzZXMgY2FuIGJlIGV4ZWN1dGUgaW4gc2VhbWxlc3Mgd2F5LikKKworCisxLjMuIFVuaXQgb2YgTWVtb3J5IG9ubGluZS9vZmZsaW5lIG9wZXJhdGlvbgorLS0tLS0tLS0tLS0tCitNZW1vcnkgaG90cGx1ZyB1c2VzIFNQQVJTRU1FTSBtZW1vcnkgbW9kZWwgd2hpY2ggYWxsb3dzIG1lbW9yeSB0byBiZSBkaXZpZGVkCitpbnRvIGNodW5rcyBvZiB0aGUgc2FtZSBzaXplLiBUaGVzZSBjaHVua3MgYXJlIGNhbGxlZCAic2VjdGlvbnMiLiBUaGUgc2l6ZSBvZgorYSBtZW1vcnkgc2VjdGlvbiBpcyBhcmNoaXRlY3R1cmUgZGVwZW5kZW50LiBGb3IgZXhhbXBsZSwgcG93ZXIgdXNlcyAxNk1pQiwgaWE2NAordXNlcyAxR2lCLgorCitNZW1vcnkgc2VjdGlvbnMgYXJlIGNvbWJpbmVkIGludG8gY2h1bmtzIHJlZmVycmVkIHRvIGFzICJtZW1vcnkgYmxvY2tzIi4gVGhlCitzaXplIG9mIGEgbWVtb3J5IGJsb2NrIGlzIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQgYW5kIHJlcHJlc2VudHMgdGhlIGxvZ2ljYWwKK3VuaXQgdXBvbiB3aGljaCBtZW1vcnkgb25saW5lL29mZmxpbmUgb3BlcmF0aW9ucyBhcmUgdG8gYmUgcGVyZm9ybWVkLiBUaGUKK2RlZmF1bHQgc2l6ZSBvZiBhIG1lbW9yeSBibG9jayBpcyB0aGUgc2FtZSBhcyBtZW1vcnkgc2VjdGlvbiBzaXplIHVubGVzcyBhbgorYXJjaGl0ZWN0dXJlIHNwZWNpZmllcyBvdGhlcndpc2UuIChzZWUgU2VjdGlvbiAzLikKKworVG8gZGV0ZXJtaW5lIHRoZSBzaXplIChpbiBieXRlcykgb2YgYSBtZW1vcnkgYmxvY2sgcGxlYXNlIHJlYWQgdGhpcyBmaWxlOgorCisvc3lzL2RldmljZXMvc3lzdGVtL21lbW9yeS9ibG9ja19zaXplX2J5dGVzCisKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzIuIEtlcm5lbCBDb25maWd1cmF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVG8gdXNlIG1lbW9yeSBob3RwbHVnIGZlYXR1cmUsIGtlcm5lbCBtdXN0IGJlIGNvbXBpbGVkIHdpdGggZm9sbG93aW5nCitjb25maWcgb3B0aW9ucy4KKworLSBGb3IgYWxsIG1lbW9yeSBob3RwbHVnCisgICAgTWVtb3J5IG1vZGVsIC0+IFNwYXJzZSBNZW1vcnkgIChDT05GSUdfU1BBUlNFTUVNKQorICAgIEFsbG93IGZvciBtZW1vcnkgaG90LWFkZCAgICAgICAoQ09ORklHX01FTU9SWV9IT1RQTFVHKQorCistIFRvIGVuYWJsZSBtZW1vcnkgcmVtb3ZhbCwgdGhlIGZvbGxvd2luZ3MgYXJlIGFsc28gbmVjZXNzYXJ5CisgICAgQWxsb3cgZm9yIG1lbW9yeSBob3QgcmVtb3ZlICAgIChDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSkKKyAgICBQYWdlIE1pZ3JhdGlvbiAgICAgICAgICAgICAgICAgKENPTkZJR19NSUdSQVRJT04pCisKKy0gRm9yIEFDUEkgbWVtb3J5IGhvdHBsdWcsIHRoZSBmb2xsb3dpbmdzIGFyZSBhbHNvIG5lY2Vzc2FyeQorICAgIE1lbW9yeSBob3RwbHVnICh1bmRlciBBQ1BJIFN1cHBvcnQgbWVudSkgKENPTkZJR19BQ1BJX0hPVFBMVUdfTUVNT1JZKQorICAgIFRoaXMgb3B0aW9uIGNhbiBiZSBrZXJuZWwgbW9kdWxlLgorCistIEFzIGEgcmVsYXRlZCBjb25maWd1cmF0aW9uLCBpZiB5b3VyIGJveCBoYXMgYSBmZWF0dXJlIG9mIE5VTUEtbm9kZSBob3RwbHVnCisgIHZpYSBBQ1BJLCB0aGVuIHRoaXMgb3B0aW9uIGlzIG5lY2Vzc2FyeSB0b28uCisgICAgQUNQSTAwMDQsUE5QMEEwNSBhbmQgUE5QMEEwNiBDb250YWluZXIgRHJpdmVyICh1bmRlciBBQ1BJIFN1cHBvcnQgbWVudSkKKyAgICAoQ09ORklHX0FDUElfQ09OVEFJTkVSKS4KKyAgICBUaGlzIG9wdGlvbiBjYW4gYmUga2VybmVsIG1vZHVsZSB0b28uCisKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzMgc3lzZnMgZmlsZXMgZm9yIG1lbW9yeSBob3RwbHVnCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQWxsIG1lbW9yeSBibG9ja3MgaGF2ZSB0aGVpciBkZXZpY2UgaW5mb3JtYXRpb24gaW4gc3lzZnMuICBFYWNoIG1lbW9yeSBibG9jaworaXMgZGVzY3JpYmVkIHVuZGVyIC9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5IGFzCisKKy9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L21lbW9yeVhYWAorKFhYWCBpcyB0aGUgbWVtb3J5IGJsb2NrIGlkLikKKworRm9yIHRoZSBtZW1vcnkgYmxvY2sgY292ZXJlZCBieSB0aGUgc3lzZnMgZGlyZWN0b3J5LiAgSXQgaXMgZXhwZWN0ZWQgdGhhdCBhbGwKK21lbW9yeSBzZWN0aW9ucyBpbiB0aGlzIHJhbmdlIGFyZSBwcmVzZW50IGFuZCBubyBtZW1vcnkgaG9sZXMgZXhpc3QgaW4gdGhlCityYW5nZS4gQ3VycmVudGx5IHRoZXJlIGlzIG5vIHdheSB0byBkZXRlcm1pbmUgaWYgdGhlcmUgaXMgYSBtZW1vcnkgaG9sZSwgYnV0Cit0aGUgZXhpc3RlbmNlIG9mIG9uZSBzaG91bGQgbm90IGFmZmVjdCB0aGUgaG90cGx1ZyBjYXBhYmlsaXRpZXMgb2YgdGhlIG1lbW9yeQorYmxvY2suCisKK0ZvciBleGFtcGxlLCBhc3N1bWUgMUdpQiBtZW1vcnkgYmxvY2sgc2l6ZS4gQSBkZXZpY2UgZm9yIGEgbWVtb3J5IHN0YXJ0aW5nIGF0CisweDEwMDAwMDAwMCBpcyAvc3lzL2RldmljZS9zeXN0ZW0vbWVtb3J5L21lbW9yeTQKKygweDEwMDAwMDAwMCAvIDFHaWIgPSA0KQorVGhpcyBkZXZpY2UgY292ZXJzIGFkZHJlc3MgcmFuZ2UgWzB4MTAwMDAwMDAwIC4uLiAweDE0MDAwMDAwMCkKKworVW5kZXIgZWFjaCBtZW1vcnkgYmxvY2ssIHlvdSBjYW4gc2VlIDUgZmlsZXM6CisKKy9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L21lbW9yeVhYWC9waHlzX2luZGV4Cisvc3lzL2RldmljZXMvc3lzdGVtL21lbW9yeS9tZW1vcnlYWFgvcGh5c19kZXZpY2UKKy9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L21lbW9yeVhYWC9zdGF0ZQorL3N5cy9kZXZpY2VzL3N5c3RlbS9tZW1vcnkvbWVtb3J5WFhYL3JlbW92YWJsZQorL3N5cy9kZXZpY2VzL3N5c3RlbS9tZW1vcnkvbWVtb3J5WFhYL3ZhbGlkX3pvbmVzCisKKydwaHlzX2luZGV4JyAgICAgIDogcmVhZC1vbmx5IGFuZCBjb250YWlucyBtZW1vcnkgYmxvY2sgaWQsIHNhbWUgYXMgWFhYLgorJ3N0YXRlJyAgICAgICAgICAgOiByZWFkLXdyaXRlCisgICAgICAgICAgICAgICAgICAgIGF0IHJlYWQ6ICBjb250YWlucyBvbmxpbmUvb2ZmbGluZSBzdGF0ZSBvZiBtZW1vcnkuCisgICAgICAgICAgICAgICAgICAgIGF0IHdyaXRlOiB1c2VyIGNhbiBzcGVjaWZ5ICJvbmxpbmVfa2VybmVsIiwKKyAgICAgICAgICAgICAgICAgICAgIm9ubGluZV9tb3ZhYmxlIiwgIm9ubGluZSIsICJvZmZsaW5lIiBjb21tYW5kCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIHdpbGwgYmUgcGVyZm9ybWVkIG9uIGFsbCBzZWN0aW9ucyBpbiB0aGUgYmxvY2suCisncGh5c19kZXZpY2UnICAgICA6IHJlYWQtb25seTogZGVzaWduZWQgdG8gc2hvdyB0aGUgbmFtZSBvZiBwaHlzaWNhbCBtZW1vcnkKKyAgICAgICAgICAgICAgICAgICAgZGV2aWNlLiAgVGhpcyBpcyBub3Qgd2VsbCBpbXBsZW1lbnRlZCBub3cuCisncmVtb3ZhYmxlJyAgICAgICA6IHJlYWQtb25seTogY29udGFpbnMgYW4gaW50ZWdlciB2YWx1ZSBpbmRpY2F0aW5nCisgICAgICAgICAgICAgICAgICAgIHdoZXRoZXIgdGhlIG1lbW9yeSBibG9jayBpcyByZW1vdmFibGUgb3Igbm90CisgICAgICAgICAgICAgICAgICAgIHJlbW92YWJsZS4gIEEgdmFsdWUgb2YgMSBpbmRpY2F0ZXMgdGhhdCB0aGUgbWVtb3J5CisgICAgICAgICAgICAgICAgICAgIGJsb2NrIGlzIHJlbW92YWJsZSBhbmQgYSB2YWx1ZSBvZiAwIGluZGljYXRlcyB0aGF0CisgICAgICAgICAgICAgICAgICAgIGl0IGlzIG5vdCByZW1vdmFibGUuIEEgbWVtb3J5IGJsb2NrIGlzIHJlbW92YWJsZSBvbmx5IGlmCisgICAgICAgICAgICAgICAgICAgIGV2ZXJ5IHNlY3Rpb24gaW4gdGhlIGJsb2NrIGlzIHJlbW92YWJsZS4KKyd2YWxpZF96b25lcycgICAgIDogcmVhZC1vbmx5OiBkZXNpZ25lZCB0byBzaG93IHdoaWNoIHpvbmVzIHRoaXMgbWVtb3J5IGJsb2NrCisJCSAgICBjYW4gYmUgb25saW5lZCB0by4KKwkJICAgIFRoZSBmaXJzdCBjb2x1bW4gc2hvd3MgaXQncyBkZWZhdWx0IHpvbmUuCisJCSAgICAibWVtb3J5Ni92YWxpZF96b25lczogTm9ybWFsIE1vdmFibGUiIHNob3dzIHRoaXMgbWVtb3J5YmxvY2sKKwkJICAgIGNhbiBiZSBvbmxpbmVkIHRvIFpPTkVfTk9STUFMIGJ5IGRlZmF1bHQgYW5kIHRvIFpPTkVfTU9WQUJMRQorCQkgICAgYnkgb25saW5lX21vdmFibGUuCisJCSAgICAibWVtb3J5Ny92YWxpZF96b25lczogTW92YWJsZSBOb3JtYWwiIHNob3dzIHRoaXMgbWVtb3J5YmxvY2sKKwkJICAgIGNhbiBiZSBvbmxpbmVkIHRvIFpPTkVfTU9WQUJMRSBieSBkZWZhdWx0IGFuZCB0byBaT05FX05PUk1BTAorCQkgICAgYnkgb25saW5lX2tlcm5lbC4KKworTk9URToKKyAgVGhlc2UgZGlyZWN0b3JpZXMvZmlsZXMgYXBwZWFyIGFmdGVyIHBoeXNpY2FsIG1lbW9yeSBob3RwbHVnIHBoYXNlLgorCitJZiBDT05GSUdfTlVNQSBpcyBlbmFibGVkIHRoZSBtZW1vcnlYWFgvIGRpcmVjdG9yaWVzIGNhbiBhbHNvIGJlIGFjY2Vzc2VkCit2aWEgc3ltYm9saWMgbGlua3MgbG9jYXRlZCBpbiB0aGUgL3N5cy9kZXZpY2VzL3N5c3RlbS9ub2RlL25vZGUqIGRpcmVjdG9yaWVzLgorCitGb3IgZXhhbXBsZToKKy9zeXMvZGV2aWNlcy9zeXN0ZW0vbm9kZS9ub2RlMC9tZW1vcnk5IC0+IC4uLy4uL21lbW9yeS9tZW1vcnk5CisKK0EgYmFja2xpbmsgd2lsbCBhbHNvIGJlIGNyZWF0ZWQ6Cisvc3lzL2RldmljZXMvc3lzdGVtL21lbW9yeS9tZW1vcnk5L25vZGUwIC0+IC4uLy4uL25vZGUvbm9kZTAKKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorNC4gUGh5c2ljYWwgbWVtb3J5IGhvdC1hZGQgcGhhc2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzQuMSBIYXJkd2FyZShGaXJtd2FyZSkgU3VwcG9ydAorLS0tLS0tLS0tLS0tCitPbiB4ODZfNjQvaWE2NCBwbGF0Zm9ybSwgbWVtb3J5IGhvdHBsdWcgYnkgQUNQSSBpcyBzdXBwb3J0ZWQuCisKK0luIGdlbmVyYWwsIHRoZSBmaXJtd2FyZSAoQUNQSSkgd2hpY2ggc3VwcG9ydHMgbWVtb3J5IGhvdHBsdWcgZGVmaW5lcworbWVtb3J5IGNsYXNzIG9iamVjdCBvZiBfSElEICJQTlAwQzgwIi4gV2hlbiBhIG5vdGlmeSBpcyBhc3NlcnRlZCB0byBQTlAwQzgwLAorTGludXgncyBBQ1BJIGhhbmRsZXIgZG9lcyBob3QtYWRkIG1lbW9yeSB0byB0aGUgc3lzdGVtIGFuZCBjYWxscyBhIGhvdHBsdWcgdWRldgorc2NyaXB0LiBUaGlzIHdpbGwgYmUgZG9uZSBhdXRvbWF0aWNhbGx5LgorCitCdXQgc2NyaXB0cyBmb3IgbWVtb3J5IGhvdHBsdWcgYXJlIG5vdCBjb250YWluZWQgaW4gZ2VuZXJpYyB1ZGV2IHBhY2thZ2Uobm93KS4KK1lvdSBtYXkgaGF2ZSB0byB3cml0ZSBpdCBieSB5b3Vyc2VsZiBvciBvbmxpbmUvb2ZmbGluZSBtZW1vcnkgYnkgaGFuZC4KK1BsZWFzZSBzZWUgIkhvdyB0byBvbmxpbmUgbWVtb3J5IiwgIkhvdyB0byBvZmZsaW5lIG1lbW9yeSIgaW4gdGhpcyB0ZXh0LgorCitJZiBmaXJtd2FyZSBzdXBwb3J0cyBOVU1BLW5vZGUgaG90cGx1ZywgYW5kIGRlZmluZXMgYW4gb2JqZWN0IF9ISUQgIkFDUEkwMDA0IiwKKyJQTlAwQTA1Iiwgb3IgIlBOUDBBMDYiLCBub3RpZmljYXRpb24gaXMgYXNzZXJ0ZWQgdG8gaXQsIGFuZCBBQ1BJIGhhbmRsZXIKK2NhbGxzIGhvdHBsdWcgY29kZSBmb3IgYWxsIG9mIG9iamVjdHMgd2hpY2ggYXJlIGRlZmluZWQgaW4gaXQuCitJZiBtZW1vcnkgZGV2aWNlIGlzIGZvdW5kLCBtZW1vcnkgaG90cGx1ZyBjb2RlIHdpbGwgYmUgY2FsbGVkLgorCisKKzQuMiBOb3RpZnkgbWVtb3J5IGhvdC1hZGQgZXZlbnQgYnkgaGFuZAorLS0tLS0tLS0tLS0tCitPbiBzb21lIGFyY2hpdGVjdHVyZXMsIHRoZSBmaXJtd2FyZSBtYXkgbm90IG5vdGlmeSB0aGUga2VybmVsIG9mIGEgbWVtb3J5Citob3RwbHVnIGV2ZW50LiAgVGhlcmVmb3JlLCB0aGUgbWVtb3J5ICJwcm9iZSIgaW50ZXJmYWNlIGlzIHN1cHBvcnRlZCB0bworZXhwbGljaXRseSBub3RpZnkgdGhlIGtlcm5lbC4gIFRoaXMgaW50ZXJmYWNlIGRlcGVuZHMgb24KK0NPTkZJR19BUkNIX01FTU9SWV9QUk9CRSBhbmQgY2FuIGJlIGNvbmZpZ3VyZWQgb24gcG93ZXJwYywgc2gsIGFuZCB4ODYKK2lmIGhvdHBsdWcgaXMgc3VwcG9ydGVkLCBhbHRob3VnaCBmb3IgeDg2IHRoaXMgc2hvdWxkIGJlIGhhbmRsZWQgYnkgQUNQSQorbm90aWZpY2F0aW9uLgorCitQcm9iZSBpbnRlcmZhY2UgaXMgbG9jYXRlZCBhdAorL3N5cy9kZXZpY2VzL3N5c3RlbS9tZW1vcnkvcHJvYmUKKworWW91IGNhbiB0ZWxsIHRoZSBwaHlzaWNhbCBhZGRyZXNzIG9mIG5ldyBtZW1vcnkgdG8gdGhlIGtlcm5lbCBieQorCislIGVjaG8gc3RhcnRfYWRkcmVzc19vZl9uZXdfbWVtb3J5ID4gL3N5cy9kZXZpY2VzL3N5c3RlbS9tZW1vcnkvcHJvYmUKKworVGhlbiwgW3N0YXJ0X2FkZHJlc3Nfb2ZfbmV3X21lbW9yeSwgc3RhcnRfYWRkcmVzc19vZl9uZXdfbWVtb3J5ICsKK21lbW9yeV9ibG9ja19zaXplXSBtZW1vcnkgcmFuZ2UgaXMgaG90LWFkZGVkLiBJbiB0aGlzIGNhc2UsIGhvdHBsdWcgc2NyaXB0IGlzCitub3QgY2FsbGVkIChpbiBjdXJyZW50IGltcGxlbWVudGF0aW9uKS4gWW91J2xsIGhhdmUgdG8gb25saW5lIG1lbW9yeSBieQoreW91cnNlbGYuICBQbGVhc2Ugc2VlICJIb3cgdG8gb25saW5lIG1lbW9yeSIgaW4gdGhpcyB0ZXh0LgorCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorNS4gTG9naWNhbCBNZW1vcnkgaG90LWFkZCBwaGFzZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzUuMS4gU3RhdGUgb2YgbWVtb3J5CistLS0tLS0tLS0tLS0KK1RvIHNlZSAob25saW5lL29mZmxpbmUpIHN0YXRlIG9mIGEgbWVtb3J5IGJsb2NrLCByZWFkICdzdGF0ZScgZmlsZS4KKworJSBjYXQgL3N5cy9kZXZpY2Uvc3lzdGVtL21lbW9yeS9tZW1vcnlYWFgvc3RhdGUKKworCitJZiB0aGUgbWVtb3J5IGJsb2NrIGlzIG9ubGluZSwgeW91J2xsIHJlYWQgIm9ubGluZSIuCitJZiB0aGUgbWVtb3J5IGJsb2NrIGlzIG9mZmxpbmUsIHlvdSdsbCByZWFkICJvZmZsaW5lIi4KKworCis1LjIuIEhvdyB0byBvbmxpbmUgbWVtb3J5CistLS0tLS0tLS0tLS0KK0V2ZW4gaWYgdGhlIG1lbW9yeSBpcyBob3QtYWRkZWQsIGl0IGlzIG5vdCBhdCByZWFkeS10by11c2Ugc3RhdGUuCitGb3IgdXNpbmcgbmV3bHkgYWRkZWQgbWVtb3J5LCB5b3UgaGF2ZSB0byAib25saW5lIiB0aGUgbWVtb3J5IGJsb2NrLgorCitGb3Igb25saW5pbmcsIHlvdSBoYXZlIHRvIHdyaXRlICJvbmxpbmUiIHRvIHRoZSBtZW1vcnkgYmxvY2sncyBzdGF0ZSBmaWxlIGFzOgorCislIGVjaG8gb25saW5lID4gL3N5cy9kZXZpY2VzL3N5c3RlbS9tZW1vcnkvbWVtb3J5WFhYL3N0YXRlCisKK1RoaXMgb25saW5pbmcgd2lsbCBub3QgY2hhbmdlIHRoZSBaT05FIHR5cGUgb2YgdGhlIHRhcmdldCBtZW1vcnkgYmxvY2ssCitJZiB0aGUgbWVtb3J5IGJsb2NrIGlzIGluIFpPTkVfTk9STUFMLCB5b3UgY2FuIGNoYW5nZSBpdCB0byBaT05FX01PVkFCTEU6CisKKyUgZWNobyBvbmxpbmVfbW92YWJsZSA+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L21lbW9yeVhYWC9zdGF0ZQorKE5PVEU6IGN1cnJlbnQgbGltaXQ6IHRoaXMgbWVtb3J5IGJsb2NrIG11c3QgYmUgYWRqYWNlbnQgdG8gWk9ORV9NT1ZBQkxFKQorCitBbmQgaWYgdGhlIG1lbW9yeSBibG9jayBpcyBpbiBaT05FX01PVkFCTEUsIHlvdSBjYW4gY2hhbmdlIGl0IHRvIFpPTkVfTk9STUFMOgorCislIGVjaG8gb25saW5lX2tlcm5lbCA+IC9zeXMvZGV2aWNlcy9zeXN0ZW0vbWVtb3J5L21lbW9yeVhYWC9zdGF0ZQorKE5PVEU6IGN1cnJlbnQgbGltaXQ6IHRoaXMgbWVtb3J5IGJsb2NrIG11c3QgYmUgYWRqYWNlbnQgdG8gWk9ORV9OT1JNQUwpCisKK0FmdGVyIHRoaXMsIG1lbW9yeSBibG9jayBYWFgncyBzdGF0ZSB3aWxsIGJlICdvbmxpbmUnIGFuZCB0aGUgYW1vdW50IG9mCithdmFpbGFibGUgbWVtb3J5IHdpbGwgYmUgaW5jcmVhc2VkLgorCitDdXJyZW50bHksIG5ld2x5IGFkZGVkIG1lbW9yeSBpcyBhZGRlZCBhcyBaT05FX05PUk1BTCAoZm9yIHBvd2VycGMsIFpPTkVfRE1BKS4KK1RoaXMgbWF5IGJlIGNoYW5nZWQgaW4gZnV0dXJlLgorCisKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis2LiBMb2dpY2FsIG1lbW9yeSByZW1vdmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis2LjEgTWVtb3J5IG9mZmxpbmUgYW5kIFpPTkVfTU9WQUJMRQorLS0tLS0tLS0tLS0tCitNZW1vcnkgb2ZmbGluaW5nIGlzIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiBtZW1vcnkgb25saW5lLiBCZWNhdXNlIG1lbW9yeSBvZmZsaW5lCitoYXMgdG8gbWFrZSB0aGUgd2hvbGUgbWVtb3J5IGJsb2NrIGJlIHVudXNlZCwgbWVtb3J5IG9mZmxpbmUgY2FuIGZhaWwgaWYKK3RoZSBtZW1vcnkgYmxvY2sgaW5jbHVkZXMgbWVtb3J5IHdoaWNoIGNhbm5vdCBiZSBmcmVlZC4KKworSW4gZ2VuZXJhbCwgbWVtb3J5IG9mZmxpbmUgY2FuIHVzZSAyIHRlY2huaXF1ZXMuCisKKygxKSByZWNsYWltIGFuZCBmcmVlIGFsbCBtZW1vcnkgaW4gdGhlIG1lbW9yeSBibG9jay4KKygyKSBtaWdyYXRlIGFsbCBwYWdlcyBpbiB0aGUgbWVtb3J5IGJsb2NrLgorCitJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgTGludXgncyBtZW1vcnkgb2ZmbGluZSB1c2VzIG1ldGhvZCAoMiksIGZyZWVpbmcKK2FsbCAgcGFnZXMgaW4gdGhlIG1lbW9yeSBibG9jayBieSBwYWdlIG1pZ3JhdGlvbi4gQnV0IG5vdCBhbGwgcGFnZXMgYXJlCittaWdyYXRhYmxlLiBVbmRlciBjdXJyZW50IExpbnV4LCBtaWdyYXRhYmxlIHBhZ2VzIGFyZSBhbm9ueW1vdXMgcGFnZXMgYW5kCitwYWdlIGNhY2hlcy4gRm9yIG9mZmxpbmluZyBhIG1lbW9yeSBibG9jayBieSBtaWdyYXRpb24sIHRoZSBrZXJuZWwgaGFzIHRvCitndWFyYW50ZWUgdGhhdCB0aGUgbWVtb3J5IGJsb2NrIGNvbnRhaW5zIG9ubHkgbWlncmF0YWJsZSBwYWdlcy4KKworTm93LCBhIGJvb3Qgb3B0aW9uIGZvciBtYWtpbmcgYSBtZW1vcnkgYmxvY2sgd2hpY2ggY29uc2lzdHMgb2YgbWlncmF0YWJsZSBwYWdlcworaXMgc3VwcG9ydGVkLiBCeSBzcGVjaWZ5aW5nICJrZXJuZWxjb3JlPSIgb3IgIm1vdmFibGVjb3JlPSIgYm9vdCBvcHRpb24sIHlvdSBjYW4KK2NyZWF0ZSBaT05FX01PVkFCTEUuLi5hIHpvbmUgd2hpY2ggaXMganVzdCB1c2VkIGZvciBtb3ZhYmxlIHBhZ2VzLgorKFNlZSBhbHNvIERvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0KQorCitBc3N1bWUgdGhlIHN5c3RlbSBoYXMgIlRPVEFMIiBhbW91bnQgb2YgbWVtb3J5IGF0IGJvb3QgdGltZSwgdGhpcyBib290IG9wdGlvbgorY3JlYXRlcyBaT05FX01PVkFCTEUgYXMgZm9sbG93aW5nLgorCisxKSBXaGVuIGtlcm5lbGNvcmU9WVlZWSBib290IG9wdGlvbiBpcyB1c2VkLAorICBTaXplIG9mIG1lbW9yeSBub3QgZm9yIG1vdmFibGUgcGFnZXMgKG5vdCBmb3Igb2ZmbGluZSkgaXMgWVlZWS4KKyAgU2l6ZSBvZiBtZW1vcnkgZm9yIG1vdmFibGUgcGFnZXMgKGZvciBvZmZsaW5lKSBpcyBUT1RBTC1ZWVlZLgorCisyKSBXaGVuIG1vdmFibGVjb3JlPVpaWlogYm9vdCBvcHRpb24gaXMgdXNlZCwKKyAgU2l6ZSBvZiBtZW1vcnkgbm90IGZvciBtb3ZhYmxlIHBhZ2VzIChub3QgZm9yIG9mZmxpbmUpIGlzIFRPVEFMIC0gWlpaWi4KKyAgU2l6ZSBvZiBtZW1vcnkgZm9yIG1vdmFibGUgcGFnZXMgKGZvciBvZmZsaW5lKSBpcyBaWlpaLgorCisKK05vdGU6IFVuZm9ydHVuYXRlbHksIHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uIHRvIHNob3cgd2hpY2ggbWVtb3J5IGJsb2NrIGJlbG9uZ3MKK3RvIFpPTkVfTU9WQUJMRS4gVGhpcyBpcyBUQkQuCisKKworNi4yLiBIb3cgdG8gb2ZmbGluZSBtZW1vcnkKKy0tLS0tLS0tLS0tLQorWW91IGNhbiBvZmZsaW5lIGEgbWVtb3J5IGJsb2NrIGJ5IHVzaW5nIHRoZSBzYW1lIHN5c2ZzIGludGVyZmFjZSB0aGF0IHdhcyB1c2VkCitpbiBtZW1vcnkgb25saW5pbmcuCisKKyUgZWNobyBvZmZsaW5lID4gL3N5cy9kZXZpY2VzL3N5c3RlbS9tZW1vcnkvbWVtb3J5WFhYL3N0YXRlCisKK0lmIG9mZmxpbmUgc3VjY2VlZHMsIHRoZSBzdGF0ZSBvZiB0aGUgbWVtb3J5IGJsb2NrIGlzIGNoYW5nZWQgdG8gYmUgIm9mZmxpbmUiLgorSWYgaXQgZmFpbHMsIHNvbWUgZXJyb3IgY29yZSAobGlrZSAtRUJVU1kpIHdpbGwgYmUgcmV0dXJuZWQgYnkgdGhlIGtlcm5lbC4KK0V2ZW4gaWYgYSBtZW1vcnkgYmxvY2sgZG9lcyBub3QgYmVsb25nIHRvIFpPTkVfTU9WQUJMRSwgeW91IGNhbiB0cnkgdG8gb2ZmbGluZQoraXQuICBJZiBpdCBkb2Vzbid0IGNvbnRhaW4gJ3VubW92YWJsZScgbWVtb3J5LCB5b3UnbGwgZ2V0IHN1Y2Nlc3MuCisKK0EgbWVtb3J5IGJsb2NrIHVuZGVyIFpPTkVfTU9WQUJMRSBpcyBjb25zaWRlcmVkIHRvIGJlIGFibGUgdG8gYmUgb2ZmbGluZWQKK2Vhc2lseS4gIEJ1dCB1bmRlciBzb21lIGJ1c3kgc3RhdGUsIGl0IG1heSByZXR1cm4gLUVCVVNZLiBFdmVuIGlmIGEgbWVtb3J5CitibG9jayBjYW5ub3QgYmUgb2ZmbGluZWQgZHVlIHRvIC1FQlVTWSwgeW91IGNhbiByZXRyeSBvZmZsaW5pbmcgaXQgYW5kIG1heSBiZQorYWJsZSB0byBvZmZsaW5lIGl0IChvciBub3QpLiAoRm9yIGV4YW1wbGUsIGEgcGFnZSBpcyByZWZlcnJlZCB0byBieSBzb21lIGtlcm5lbAoraW50ZXJuYWwgY2FsbCBhbmQgcmVsZWFzZWQgc29vbi4pCisKK0NvbnNpZGVyYXRpb246CitNZW1vcnkgaG90cGx1ZydzIGRlc2lnbiBkaXJlY3Rpb24gaXMgdG8gbWFrZSB0aGUgcG9zc2liaWxpdHkgb2YgbWVtb3J5IG9mZmxpbmluZworaGlnaGVyIGFuZCB0byBndWFyYW50ZWUgdW5wbHVnZ2luZyBtZW1vcnkgdW5kZXIgYW55IHNpdHVhdGlvbi4gQnV0IGl0IG5lZWRzCittb3JlIHdvcmsuIFJldHVybmluZyAtRUJVU1kgdW5kZXIgc29tZSBzaXR1YXRpb24gbWF5IGJlIGdvb2QgYmVjYXVzZSB0aGUgdXNlcgorY2FuIGRlY2lkZSB0byByZXRyeSBtb3JlIG9yIG5vdCBieSBoaW1zZWxmLiBDdXJyZW50bHksIG1lbW9yeSBvZmZsaW5pbmcgY29kZQorZG9lcyBzb21lIGFtb3VudCBvZiByZXRyeSB3aXRoIDEyMCBzZWNvbmRzIHRpbWVvdXQuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzcuIFBoeXNpY2FsIG1lbW9yeSByZW1vdmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05lZWQgbW9yZSBpbXBsZW1lbnRhdGlvbiB5ZXQuLi4uCisgLSBOb3RpZmljYXRpb24gY29tcGxldGlvbiBvZiByZW1vdmUgd29ya3MgYnkgT1MgdG8gZmlybXdhcmUuCisgLSBHdWFyZCBmcm9tIHJlbW92ZSBpZiBub3QgeWV0LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorOC4gTWVtb3J5IGhvdHBsdWcgZXZlbnQgbm90aWZpZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitIb3RwbHVnZ2luZyBldmVudHMgYXJlIHNlbnQgdG8gYSBub3RpZmljYXRpb24gcXVldWUuCisKK1RoZXJlIGFyZSBzaXggdHlwZXMgb2Ygbm90aWZpY2F0aW9uIGRlZmluZWQgaW4gaW5jbHVkZS9saW51eC9tZW1vcnkuaDoKKworTUVNX0dPSU5HX09OTElORQorICBHZW5lcmF0ZWQgYmVmb3JlIG5ldyBtZW1vcnkgYmVjb21lcyBhdmFpbGFibGUgaW4gb3JkZXIgdG8gYmUgYWJsZSB0bworICBwcmVwYXJlIHN1YnN5c3RlbXMgdG8gaGFuZGxlIG1lbW9yeS4gVGhlIHBhZ2UgYWxsb2NhdG9yIGlzIHN0aWxsIHVuYWJsZQorICB0byBhbGxvY2F0ZSBmcm9tIHRoZSBuZXcgbWVtb3J5LgorCitNRU1fQ0FOQ0VMX09OTElORQorICBHZW5lcmF0ZWQgaWYgTUVNT1JZX0dPSU5HX09OTElORSBmYWlscy4KKworTUVNX09OTElORQorICBHZW5lcmF0ZWQgd2hlbiBtZW1vcnkgaGFzIHN1Y2Nlc3NmdWxseSBicm91Z2h0IG9ubGluZS4gVGhlIGNhbGxiYWNrIG1heQorICBhbGxvY2F0ZSBwYWdlcyBmcm9tIHRoZSBuZXcgbWVtb3J5LgorCitNRU1fR09JTkdfT0ZGTElORQorICBHZW5lcmF0ZWQgdG8gYmVnaW4gdGhlIHByb2Nlc3Mgb2Ygb2ZmbGluaW5nIG1lbW9yeS4gQWxsb2NhdGlvbnMgYXJlIG5vCisgIGxvbmdlciBwb3NzaWJsZSBmcm9tIHRoZSBtZW1vcnkgYnV0IHNvbWUgb2YgdGhlIG1lbW9yeSB0byBiZSBvZmZsaW5lZAorICBpcyBzdGlsbCBpbiB1c2UuIFRoZSBjYWxsYmFjayBjYW4gYmUgdXNlZCB0byBmcmVlIG1lbW9yeSBrbm93biB0byBhCisgIHN1YnN5c3RlbSBmcm9tIHRoZSBpbmRpY2F0ZWQgbWVtb3J5IGJsb2NrLgorCitNRU1fQ0FOQ0VMX09GRkxJTkUKKyAgR2VuZXJhdGVkIGlmIE1FTU9SWV9HT0lOR19PRkZMSU5FIGZhaWxzLiBNZW1vcnkgaXMgYXZhaWxhYmxlIGFnYWluIGZyb20KKyAgdGhlIG1lbW9yeSBibG9jayB0aGF0IHdlIGF0dGVtcHRlZCB0byBvZmZsaW5lLgorCitNRU1fT0ZGTElORQorICBHZW5lcmF0ZWQgYWZ0ZXIgb2ZmbGluaW5nIG1lbW9yeSBpcyBjb21wbGV0ZS4KKworQSBjYWxsYmFjayByb3V0aW5lIGNhbiBiZSByZWdpc3RlcmVkIGJ5IGNhbGxpbmcKKworICBob3RwbHVnX21lbW9yeV9ub3RpZmllcihjYWxsYmFja19mdW5jLCBwcmlvcml0eSkKKworQ2FsbGJhY2sgZnVuY3Rpb25zIHdpdGggaGlnaGVyIHZhbHVlcyBvZiBwcmlvcml0eSBhcmUgY2FsbGVkIGJlZm9yZSBjYWxsYmFjaworZnVuY3Rpb25zIHdpdGggbG93ZXIgdmFsdWVzLgorCitBIGNhbGxiYWNrIGZ1bmN0aW9uIG11c3QgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3RvdHlwZToKKworICBpbnQgY2FsbGJhY2tfZnVuYygKKyAgICBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnNlbGYsIHVuc2lnbmVkIGxvbmcgYWN0aW9uLCB2b2lkICphcmcpOworCitUaGUgZmlyc3QgYXJndW1lbnQgb2YgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIChzZWxmKSBpcyBhIHBvaW50ZXIgdG8gdGhlIGJsb2NrCitvZiB0aGUgbm90aWZpZXIgY2hhaW4gdGhhdCBwb2ludHMgdG8gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGl0c2VsZi4KK1RoZSBzZWNvbmQgYXJndW1lbnQgKGFjdGlvbikgaXMgb25lIG9mIHRoZSBldmVudCB0eXBlcyBkZXNjcmliZWQgYWJvdmUuCitUaGUgdGhpcmQgYXJndW1lbnQgKGFyZykgcGFzc2VzIGEgcG9pbnRlciBvZiBzdHJ1Y3QgbWVtb3J5X25vdGlmeS4KKworc3RydWN0IG1lbW9yeV9ub3RpZnkgeworICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuOworICAgICAgIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXM7CisgICAgICAgaW50IHN0YXR1c19jaGFuZ2VfbmlkX25vcm1hbDsKKyAgICAgICBpbnQgc3RhdHVzX2NoYW5nZV9uaWRfaGlnaDsKKyAgICAgICBpbnQgc3RhdHVzX2NoYW5nZV9uaWQ7Cit9CisKK3N0YXJ0X3BmbiBpcyBzdGFydF9wZm4gb2Ygb25saW5lL29mZmxpbmUgbWVtb3J5LgorbnJfcGFnZXMgaXMgIyBvZiBwYWdlcyBvZiBvbmxpbmUvb2ZmbGluZSBtZW1vcnkuCitzdGF0dXNfY2hhbmdlX25pZF9ub3JtYWwgaXMgc2V0IG5vZGUgaWQgd2hlbiBOX05PUk1BTF9NRU1PUlkgb2Ygbm9kZW1hc2sKK2lzICh3aWxsIGJlKSBzZXQvY2xlYXIsIGlmIHRoaXMgaXMgLTEsIHRoZW4gbm9kZW1hc2sgc3RhdHVzIGlzIG5vdCBjaGFuZ2VkLgorc3RhdHVzX2NoYW5nZV9uaWRfaGlnaCBpcyBzZXQgbm9kZSBpZCB3aGVuIE5fSElHSF9NRU1PUlkgb2Ygbm9kZW1hc2sKK2lzICh3aWxsIGJlKSBzZXQvY2xlYXIsIGlmIHRoaXMgaXMgLTEsIHRoZW4gbm9kZW1hc2sgc3RhdHVzIGlzIG5vdCBjaGFuZ2VkLgorc3RhdHVzX2NoYW5nZV9uaWQgaXMgc2V0IG5vZGUgaWQgd2hlbiBOX01FTU9SWSBvZiBub2RlbWFzayBpcyAod2lsbCBiZSkKK3NldC9jbGVhci4gSXQgbWVhbnMgYSBuZXcobWVtb3J5bGVzcykgbm9kZSBnZXRzIG5ldyBtZW1vcnkgYnkgb25saW5lIGFuZCBhCitub2RlIGxvc2VzIGFsbCBtZW1vcnkuIElmIHRoaXMgaXMgLTEsIHRoZW4gbm9kZW1hc2sgc3RhdHVzIGlzIG5vdCBjaGFuZ2VkLgorSWYgc3RhdHVzX2NoYW5nZWRfbmlkKiA+PSAwLCBjYWxsYmFjayBzaG91bGQgY3JlYXRlL2Rpc2NhcmQgc3RydWN0dXJlcyBmb3IgdGhlCitub2RlIGlmIG5lY2Vzc2FyeS4KKworVGhlIGNhbGxiYWNrIHJvdXRpbmUgc2hhbGwgcmV0dXJuIG9uZSBvZiB0aGUgdmFsdWVzCitOT1RJRllfRE9ORSwgTk9USUZZX09LLCBOT1RJRllfQkFELCBOT1RJRllfU1RPUAorZGVmaW5lZCBpbiBpbmNsdWRlL2xpbnV4L25vdGlmaWVyLmgKKworTk9USUZZX0RPTkUgYW5kIE5PVElGWV9PSyBoYXZlIG5vIGVmZmVjdCBvbiB0aGUgZnVydGhlciBwcm9jZXNzaW5nLgorCitOT1RJRllfQkFEIGlzIHVzZWQgYXMgcmVzcG9uc2UgdG8gdGhlIE1FTV9HT0lOR19PTkxJTkUsIE1FTV9HT0lOR19PRkZMSU5FLAorTUVNX09OTElORSwgb3IgTUVNX09GRkxJTkUgYWN0aW9uIHRvIGNhbmNlbCBob3RwbHVnZ2luZy4gSXQgc3RvcHMKK2Z1cnRoZXIgcHJvY2Vzc2luZyBvZiB0aGUgbm90aWZpY2F0aW9uIHF1ZXVlLgorCitOT1RJRllfU1RPUCBzdG9wcyBmdXJ0aGVyIHByb2Nlc3Npbmcgb2YgdGhlIG5vdGlmaWNhdGlvbiBxdWV1ZS4KKworLS0tLS0tLS0tLS0tLS0KKzkuIEZ1dHVyZSBXb3JrCistLS0tLS0tLS0tLS0tLQorICAtIGFsbG93aW5nIG1lbW9yeSBob3QtYWRkIHRvIFpPTkVfTU9WQUJMRS4gbWF5YmUgd2UgbmVlZCBzb21lIHN3aXRjaCBsaWtlCisgICAgc3lzY3RsIG9yIG5ldyBjb250cm9sIGZpbGUuCisgIC0gc2hvd2luZyBtZW1vcnkgYmxvY2sgYW5kIHBoeXNpY2FsIGRldmljZSByZWxhdGlvbnNoaXAuCisgIC0gdGVzdCBhbmQgbWFrZSBpdCBiZXR0ZXIgbWVtb3J5IG9mZmxpbmluZy4KKyAgLSBzdXBwb3J0IEh1Z2VUTEIgcGFnZSBtaWdyYXRpb24gYW5kIG9mZmxpbmluZy4KKyAgLSBtZW1tYXAgcmVtb3ZpbmcgYXQgbWVtb3J5IG9mZmxpbmUuCisgIC0gcGh5c2ljYWwgcmVtb3ZlIG1lbW9yeS4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9tZW4tY2hhbWVsZW9uLWJ1cy50eHQgYi9Eb2N1bWVudGF0aW9uL21lbi1jaGFtZWxlb24tYnVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGRlZDczCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9tZW4tY2hhbWVsZW9uLWJ1cy50eHQKQEAgLTAsMCArMSwxNjMgQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRU4gQ2hhbWVsZW9uIEJ1cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PT09PT09PT09PT09PT09CisKK1RhYmxlIG9mIENvbnRlbnRzCis9PT09PT09PT09PT09PT09PQorMSBJbnRyb2R1Y3Rpb24KKyAgICAxLjEgU2NvcGUgb2YgdGhpcyBEb2N1bWVudAorICAgIDEuMiBMaW1pdGF0aW9ucyBvZiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbgorMiBBcmNoaXRlY3R1cmUKKyAgICAyLjEgTUVOIENoYW1lbGVvbiBCdXMKKyAgICAyLjIgQ2FycmllciBEZXZpY2VzCisgICAgMi4zIFBhcnNlcgorMyBSZXNvdXJjZSBoYW5kbGluZworICAgIDMuMSBNZW1vcnkgUmVzb3VyY2VzCisgICAgMy4yIElSUXMKKzQgV3JpdGluZyBhbiBNQ0IgZHJpdmVyCisgICAgNC4xIFRoZSBkcml2ZXIgc3RydWN0dXJlCisgICAgNC4yIFByb2JpbmcgYW5kIGF0dGFjaGluZworICAgIDQuMyBJbml0aWFsaXppbmcgdGhlIGRyaXZlcgorCisKKzEgSW50cm9kdWN0aW9uCis9PT09PT09PT09PT09PT0KKyAgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIGFyY2hpdGVjdHVyZSBhbmQgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1FTgorICBDaGFtZWxlb24gQnVzIChjYWxsZWQgTUNCIHRocm91Z2hvdXQgdGhpcyBkb2N1bWVudCkuCisKKzEuMSBTY29wZSBvZiB0aGlzIERvY3VtZW50CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgVGhpcyBkb2N1bWVudCBpcyBpbnRlbmRlZCB0byBiZSBhIHNob3J0IG92ZXJ2aWV3IG9mIHRoZSBjdXJyZW50CisgIGltcGxlbWVudGF0aW9uIGFuZCBkb2VzIGJ5IG5vIG1lYW5zIGRlc2NyaWJlIHRoZSBjb21wbGV0ZSBwb3NzaWJpbGl0aWVzIG9mIE1DQgorICBiYXNlZCBkZXZpY2VzLgorCisxLjIgTGltaXRhdGlvbnMgb2YgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgbGltaXRlZCB0byBQQ0kgYW5kIFBDSWUgYmFzZWQgY2FycmllciBkZXZpY2VzCisgIHRoYXQgb25seSB1c2UgYSBzaW5nbGUgbWVtb3J5IHJlc291cmNlIGFuZCBzaGFyZSB0aGUgUENJIGxlZ2FjeSBJUlEuICBOb3QKKyAgaW1wbGVtZW50ZWQgYXJlOgorICAtIE11bHRpLXJlc291cmNlIE1DQiBkZXZpY2VzIGxpa2UgdGhlIFZNRSBDb250cm9sbGVyIG9yIE0tTW9kdWxlIGNhcnJpZXIuCisgIC0gTUNCIGRldmljZXMgdGhhdCBuZWVkIGFub3RoZXIgTUNCIGRldmljZSwgbGlrZSBTUkFNIGZvciBhIERNQSBDb250cm9sbGVyJ3MKKyAgICBidWZmZXIgZGVzY3JpcHRvcnMgb3IgYSB2aWRlbyBjb250cm9sbGVyJ3MgdmlkZW8gbWVtb3J5LgorICAtIEEgcGVyLWNhcnJpZXIgSVJRIGRvbWFpbiBmb3IgY2FycmllciBkZXZpY2VzIHRoYXQgaGF2ZSBvbmUgKG9yIG1vcmUpIElSUXMKKyAgICBwZXIgTUNCIGRldmljZSBsaWtlIFBDSWUgYmFzZWQgY2FycmllcnMgd2l0aCBNU0kgb3IgTVNJLVggc3VwcG9ydC4KKworMiBBcmNoaXRlY3R1cmUKKz09PT09PT09PT09PT09PQorICBNQ0IgaXMgZGl2aWRlZCBpbnRvIDMgZnVuY3Rpb25hbCBibG9ja3M6CisgIC0gVGhlIE1FTiBDaGFtZWxlb24gQnVzIGl0c2VsZiwKKyAgLSBkcml2ZXJzIGZvciBNQ0IgQ2FycmllciBEZXZpY2VzIGFuZAorICAtIHRoZSBwYXJzZXIgZm9yIHRoZSBDaGFtZWxlb24gdGFibGUuCisKKzIuMSBNRU4gQ2hhbWVsZW9uIEJ1cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgVGhlIE1FTiBDaGFtZWxlb24gQnVzIGlzIGFuIGFydGlmaWNpYWwgYnVzIHN5c3RlbSB0aGF0IGF0dGFjaGVzIHRvIGEgc28KKyAgIGNhbGxlZCBDaGFtZWxlb24gRlBHQSBkZXZpY2UgZm91bmQgb24gc29tZSBoYXJkd2FyZSBwcm9kdWNlZCBteSBNRU4gTWlrcm8KKyAgIEVsZWt0cm9uaWsgR21iSC4gVGhlc2UgZGV2aWNlcyBhcmUgbXVsdGktZnVuY3Rpb24gZGV2aWNlcyBpbXBsZW1lbnRlZCBpbiBhCisgICBzaW5nbGUgRlBHQSBhbmQgdXN1YWxseSBhdHRhY2hlZCB2aWEgc29tZSBzb3J0IG9mIFBDSSBvciBQQ0llIGxpbmsuIEVhY2gKKyAgIEZQR0EgY29udGFpbnMgYSBoZWFkZXIgc2VjdGlvbiBkZXNjcmliaW5nIHRoZSBjb250ZW50IG9mIHRoZSBGUEdBLiBUaGUKKyAgIGhlYWRlciBsaXN0cyB0aGUgZGV2aWNlIGlkLCBQQ0kgQkFSLCBvZmZzZXQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBQQ0kKKyAgIEJBUiwgc2l6ZSBpbiB0aGUgRlBHQSwgaW50ZXJydXB0IG51bWJlciBhbmQgc29tZSBvdGhlciBwcm9wZXJ0aWVzIGN1cnJlbnRseQorICAgbm90IGhhbmRsZWQgYnkgdGhlIE1DQiBpbXBsZW1lbnRhdGlvbi4KKworMi4yIENhcnJpZXIgRGV2aWNlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIEEgY2FycmllciBkZXZpY2UgaXMganVzdCBhbiBhYnN0cmFjdGlvbiBmb3IgdGhlIHJlYWwgd29ybGQgcGh5c2ljYWwgYnVzIHRoZQorICAgQ2hhbWVsZW9uIEZQR0EgaXMgYXR0YWNoZWQgdG8uIFNvbWUgSVAgQ29yZSBkcml2ZXJzIG1heSBuZWVkIHRvIGludGVyYWN0IHdpdGgKKyAgIHByb3BlcnRpZXMgb2YgdGhlIGNhcnJpZXIgZGV2aWNlIChsaWtlIHF1ZXJ5aW5nIHRoZSBJUlEgbnVtYmVyIG9mIGEgUENJCisgICBkZXZpY2UpLiBUbyBwcm92aWRlIGFic3RyYWN0aW9uIGZyb20gdGhlIHJlYWwgaGFyZHdhcmUgYnVzLCBhbiBNQ0IgY2FycmllcgorICAgZGV2aWNlIHByb3ZpZGVzIGNhbGxiYWNrIG1ldGhvZHMgdG8gdHJhbnNsYXRlIHRoZSBkcml2ZXIncyBNQ0IgZnVuY3Rpb24gY2FsbHMKKyAgIHRvIGhhcmR3YXJlIHJlbGF0ZWQgZnVuY3Rpb24gY2FsbHMuIEZvciBleGFtcGxlIGEgY2FycmllciBkZXZpY2UgbWF5CisgICBpbXBsZW1lbnQgdGhlIGdldF9pcnEoKSBtZXRob2Qgd2hpY2ggY2FuIGJlIHRyYW5zbGF0ZWQgaW50byBhIGhhcmR3YXJlIGJ1cworICAgcXVlcnkgZm9yIHRoZSBJUlEgbnVtYmVyIHRoZSBkZXZpY2Ugc2hvdWxkIHVzZS4KKworMi4zIFBhcnNlcgorLS0tLS0tLS0tLS0KKyAgIFRoZSBwYXJzZXIgcmVhZHMgdGhlIGZpcnN0IDUxMiBieXRlcyBvZiBhIENoYW1lbGVvbiBkZXZpY2UgYW5kIHBhcnNlcyB0aGUKKyAgIENoYW1lbGVvbiB0YWJsZS4gQ3VycmVudGx5IHRoZSBwYXJzZXIgb25seSBzdXBwb3J0cyB0aGUgQ2hhbWVsZW9uIHYyIHZhcmlhbnQKKyAgIG9mIHRoZSBDaGFtZWxlb24gdGFibGUgYnV0IGNhbiBlYXNpbHkgYmUgYWRvcHRlZCB0byBzdXBwb3J0IGFuIG9sZGVyIG9yCisgICBwb3NzaWJsZSBmdXR1cmUgdmFyaWFudC4gV2hpbGUgcGFyc2luZyB0aGUgdGFibGUncyBlbnRyaWVzIG5ldyBNQ0IgZGV2aWNlcworICAgYXJlIGFsbG9jYXRlZCBhbmQgdGhlaXIgcmVzb3VyY2VzIGFyZSBhc3NpZ25lZCBhY2NvcmRpbmcgdG8gdGhlIHJlc291cmNlCisgICBhc3NpZ25tZW50IGluIHRoZSBDaGFtZWxlb24gdGFibGUuIEFmdGVyIHJlc291cmNlIGFzc2lnbm1lbnQgaXMgZmluaXNoZWQsIHRoZQorICAgTUNCIGRldmljZXMgYXJlIHJlZ2lzdGVyZWQgYXQgdGhlIE1DQiBhbmQgdGh1cyBhdCB0aGUgZHJpdmVyIGNvcmUgb2YgdGhlCisgICBMaW51eCBrZXJuZWwuCisKKzMgUmVzb3VyY2UgaGFuZGxpbmcKKz09PT09PT09PT09PT09PT09PT09CisgIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGFzc2lnbnMgZXhhY3RseSBvbmUgbWVtb3J5IGFuZCBvbmUgSVJRIHJlc291cmNlCisgIHBlciBNQ0IgZGV2aWNlLiBCdXQgdGhpcyBpcyBsaWtlbHkgZ29pbmcgdG8gY2hhbmdlIGluIHRoZSBmdXR1cmUuCisKKzMuMSBNZW1vcnkgUmVzb3VyY2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIEVhY2ggTUNCIGRldmljZSBoYXMgZXhhY3RseSBvbmUgbWVtb3J5IHJlc291cmNlLCB3aGljaCBjYW4gYmUgcmVxdWVzdGVkIGZyb20KKyAgIHRoZSBNQ0IgYnVzLiBUaGlzIG1lbW9yeSByZXNvdXJjZSBpcyB0aGUgcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgTUNCIGRldmljZQorICAgaW5zaWRlIHRoZSBjYXJyaWVyIGFuZCBpcyBpbnRlbmRlZCB0byBiZSBwYXNzZWQgdG8gaW9yZW1hcCgpIGFuZCBmcmllbmRzLiBJdAorICAgaXMgYWxyZWFkeSByZXF1ZXN0ZWQgZnJvbSB0aGUga2VybmVsIGJ5IGNhbGxpbmcgcmVxdWVzdF9tZW1fcmVnaW9uKCkuCisKKzMuMiBJUlFzCistLS0tLS0tLS0KKyAgIEVhY2ggTUNCIGRldmljZSBoYXMgZXhhY3RseSBvbmUgSVJRIHJlc291cmNlLCB3aGljaCBjYW4gYmUgcmVxdWVzdGVkIGZyb20gdGhlCisgICBNQ0IgYnVzLiBJZiBhIGNhcnJpZXIgZGV2aWNlIGRyaXZlciBpbXBsZW1lbnRzIHRoZSAtPmdldF9pcnEoKSBjYWxsYmFjaworICAgbWV0aG9kLCB0aGUgSVJRIG51bWJlciBhc3NpZ25lZCBieSB0aGUgY2FycmllciBkZXZpY2Ugd2lsbCBiZSByZXR1cm5lZCwKKyAgIG90aGVyd2lzZSB0aGUgSVJRIG51bWJlciBpbnNpZGUgdGhlIENoYW1lbGVvbiB0YWJsZSB3aWxsIGJlIHJldHVybmVkLiBUaGlzCisgICBudW1iZXIgaXMgc3VpdGFibGUgdG8gYmUgcGFzc2VkIHRvIHJlcXVlc3RfaXJxKCkuCisKKzQgV3JpdGluZyBhbiBNQ0IgZHJpdmVyCis9PT09PT09PT09PT09PT09PT09PT09PQorCis0LjEgVGhlIGRyaXZlciBzdHJ1Y3R1cmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBFYWNoIE1DQiBkcml2ZXIgaGFzIGEgc3RydWN0dXJlIHRvIGlkZW50aWZ5IHRoZSBkZXZpY2UgZHJpdmVyIGFzIHdlbGwgYXMKKyAgICBkZXZpY2UgaWRzIHdoaWNoIGlkZW50aWZ5IHRoZSBJUCBDb3JlIGluc2lkZSB0aGUgRlBHQS4gVGhlIGRyaXZlciBzdHJ1Y3R1cmUKKyAgICBhbHNvIGNvbnRhaW5zIGNhbGxiYWNrIG1ldGhvZHMgd2hpY2ggZ2V0IGV4ZWN1dGVkIG9uIGRyaXZlciBwcm9iZSBhbmQKKyAgICByZW1vdmFsIGZyb20gdGhlIHN5c3RlbS4KKworCisgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWNiX2RldmljZV9pZCBmb29faWRzW10gPSB7CisgICAgICAgICAgeyAuZGV2aWNlID0gMHgxMjMgfSwKKyAgICAgICAgICB7IH0KKyAgfTsKKyAgTU9EVUxFX0RFVklDRV9UQUJMRShtY2IsIGZvb19pZHMpOworCisgIHN0YXRpYyBzdHJ1Y3QgbWNiX2RyaXZlciBmb29fZHJpdmVyID0geworICAgICAgICAgIGRyaXZlciA9IHsKKyAgICAgICAgICAgICAgICAgIC5uYW1lID0gImZvby1iYXIiLAorICAgICAgICAgICAgICAgICAgLm93bmVyID0gVEhJU19NT0RVTEUsCisgICAgICAgICAgfSwKKyAgICAgICAgICAucHJvYmUgPSBmb29fcHJvYmUsCisgICAgICAgICAgLnJlbW92ZSA9IGZvb19yZW1vdmUsCisgICAgICAgICAgLmlkX3RhYmxlID0gZm9vX2lkcywKKyAgfTsKKworNC4yIFByb2JpbmcgYW5kIGF0dGFjaGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFdoZW4gYSBkcml2ZXIgaXMgbG9hZGVkIGFuZCB0aGUgTUNCIGRldmljZXMgaXQgc2VydmljZXMgYXJlIGZvdW5kLCB0aGUgTUNCCisgICBjb3JlIHdpbGwgY2FsbCB0aGUgZHJpdmVyJ3MgcHJvYmUgY2FsbGJhY2sgbWV0aG9kLiBXaGVuIHRoZSBkcml2ZXIgaXMgcmVtb3ZlZAorICAgZnJvbSB0aGUgc3lzdGVtLCB0aGUgTUNCIGNvcmUgd2lsbCBjYWxsIHRoZSBkcml2ZXIncyByZW1vdmUgY2FsbGJhY2sgbWV0aG9kLgorCisKKyAgc3RhdGljIGluaXQgZm9vX3Byb2JlKHN0cnVjdCBtY2JfZGV2aWNlICptZGV2LCBjb25zdCBzdHJ1Y3QgbWNiX2RldmljZV9pZCAqaWQpOworICBzdGF0aWMgdm9pZCBmb29fcmVtb3ZlKHN0cnVjdCBtY2JfZGV2aWNlICptZGV2KTsKKworNC4zIEluaXRpYWxpemluZyB0aGUgZHJpdmVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBXaGVuIHRoZSBrZXJuZWwgaXMgYm9vdGVkIG9yIHlvdXIgZm9vIGRyaXZlciBtb2R1bGUgaXMgaW5zZXJ0ZWQsIHlvdSBoYXZlIHRvCisgICBwZXJmb3JtIGRyaXZlciBpbml0aWFsaXphdGlvbi4gVXN1YWxseSBpdCBpcyBlbm91Z2ggdG8gcmVnaXN0ZXIgeW91ciBkcml2ZXIKKyAgIG1vZHVsZSBhdCB0aGUgTUNCIGNvcmUuCisKKworICBzdGF0aWMgaW50IF9faW5pdCBmb29faW5pdCh2b2lkKQorICB7CisgICAgICAgICAgcmV0dXJuIG1jYl9yZWdpc3Rlcl9kcml2ZXIoJmZvb19kcml2ZXIpOworICB9CisgIG1vZHVsZV9pbml0KGZvb19pbml0KTsKKworICBzdGF0aWMgdm9pZCBfX2V4aXQgZm9vX2V4aXQodm9pZCkKKyAgeworICAgICAgICAgIG1jYl91bnJlZ2lzdGVyX2RyaXZlcigmZm9vX2RyaXZlcik7CisgIH0KKyAgbW9kdWxlX2V4aXQoZm9vX2V4aXQpOworCisgICBUaGUgbW9kdWxlX21jYl9kcml2ZXIoKSBtYWNybyBjYW4gYmUgdXNlZCB0byByZWR1Y2UgdGhlIGFib3ZlIGNvZGUuCisKKworICBtb2R1bGVfbWNiX2RyaXZlcihmb29fZHJpdmVyKTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbWV0YWcvMDAtSU5ERVggYi9Eb2N1bWVudGF0aW9uL21ldGFnLzAwLUlOREVYCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiMTFjNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL21ldGFnLzAwLUlOREVYCkBAIC0wLDAgKzEsNCBAQAorMDAtSU5ERVgKKwktIHRoaXMgZmlsZQora2VybmVsLUFCSS50eHQKKwktIERvY3VtZW50cyBtZXRhZyBBQkkgZGV0YWlscwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9tZXRhZy9rZXJuZWwtQUJJLnR4dCBiL0RvY3VtZW50YXRpb24vbWV0YWcva2VybmVsLUFCSS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI4MjE2NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbWV0YWcva2VybmVsLUFCSS50eHQKQEAgLTAsMCArMSwyNTYgQEAKKwkJCT09PT09PT09PT09PT09PT09PT09PT09PT09CisJCQlLRVJORUwgQUJJUyBGT1IgTUVUQUcgQVJDSAorCQkJPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIExpbnV4IEFCSXMgZm9yIHRoZSBtZXRhZyBhcmNoaXRlY3R1cmUsIGFuZCBoYXMgdGhlCitmb2xsb3dpbmcgc2VjdGlvbnM6CisKKyAoKikgT3V0bGluZSBvZiByZWdpc3RlcnMKKyAoKikgVXNlcmxhbmQgcmVnaXN0ZXJzCisgKCopIEtlcm5lbCByZWdpc3RlcnMKKyAoKikgU3lzdGVtIGNhbGwgQUJJCisgKCopIENhbGxpbmcgY29udmVudGlvbnMKKworCis9PT09PT09PT09PT09PT09PT09PQorT1VUTElORSBPRiBSRUdJU1RFUlMKKz09PT09PT09PT09PT09PT09PT09CisKK1RoZSBtYWluIE1ldGEgY29yZSByZWdpc3RlcnMgYXJlIGFycmFuZ2VkIGluIHVuaXRzOgorCisJVU5JVAlUeXBlCURFU0NSSVBUSU9OCUdQCUVYVAlQUklWCUdMT0JBTAorCT09PT09PT0JPT09PT09PQk9PT09PT09PT09PT09PT0JPT09PT09PQk9PT09PT09CT09PT09PT0JPT09PT09PQorCUNUCVNwZWNpYWwJQ29udHJvbCB1bml0CisJRDAJR2VuZXJhbAlEYXRhIHVuaXQgMAkwLTcJOC0xNQkxNi0zMQkxNi0zMQorCUQxCUdlbmVyYWwJRGF0YSB1bml0IDEJMC03CTgtMTUJMTYtMzEJMTYtMzEKKwlBMAlHZW5lcmFsCUFkZHJlc3MgdW5pdCAwCTAtMwk0LTcJIDgtMTUJIDgtMTUKKwlBMQlHZW5lcmFsCUFkZHJlc3MgdW5pdCAxCTAtMwk0LTcJIDgtMTUJIDgtMTUKKwlQQwlTcGVjaWFsCVBDIHVuaXQJCTAJCSAxCisJUE9SVAlTcGVjaWFsCVBvcnRzCisJVFIJU3BlY2lhbAlUcmlnZ2VyIHVuaXQJCQkgMC03CisJVFQJU3BlY2lhbAlUcmFjZSB1bml0CQkJIDAtNQorCUZYCUdlbmVyYWwJRlAgdW5pdAkJCTAtMTUKKworR1AgcmVnaXN0ZXJzIGZvcm0gcGFydCBvZiB0aGUgbWFpbiBjb250ZXh0LgorCitFeHRlbmRlZCBjb250ZXh0IHJlZ2lzdGVycyAoRVhUKSBtYXkgbm90IGJlIHByZXNlbnQgb24gYWxsIGhhcmR3YXJlIHRocmVhZHMgYW5kCitjYW4gYmUgY29udGV4dCBzd2l0Y2hlZCBpZiBzdXBwb3J0IGlzIGVuYWJsZWQgYW5kIHRoZSBhcHByb3ByaWF0ZSBiaXRzIGFyZSBzZXQKK2luIGUuZy4gdGhlIEQwLjggcmVnaXN0ZXIgdG8gaW5kaWNhdGUgd2hhdCBleHRlbmRlZCBzdGF0ZSB0byBwcmVzZXJ2ZS4KKworR2xvYmFsIHJlZ2lzdGVycyBhcmUgc2hhcmVkIGJldHdlZW4gdGhyZWFkcyBhbmQgYXJlIHByaXZpbGVnZSBwcm90ZWN0ZWQuCisKK1NlZSBhcmNoL21ldGFnL2luY2x1ZGUvYXNtL21ldGFnX3JlZ3MuaCBmb3IgZGVmaW5pdGlvbnMgcmVsYXRpbmcgdG8gY29yZQorcmVnaXN0ZXJzIGFuZCB0aGUgZmllbGRzIGFuZCBiaXRzIHRoZXkgY29udGFpbi4gU2VlIHRoZSBUUk1zIGZvciBmdXJ0aGVyIGRldGFpbHMKK2Fib3V0IHNwZWNpYWwgcmVnaXN0ZXJzLgorCitTZXZlcmFsIHNwZWNpYWwgcmVnaXN0ZXJzIGFyZSBwcmVzZXJ2ZWQgaW4gdGhlIG1haW4gY29udGV4dCwgdGhlc2UgYXJlIHRoZQoraW50ZXJlc3Rpbmcgb25lczoKKworCVJFRwkoQUxJQVMpCQlQVVJQT1NFCisJPT09PT09PT09PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwlDVC4xCShUWE1PREUpCVByb2Nlc3NvciBtb2RlIGJpdHMgKHBhcnRpY3VsYXJseSBmb3IgRFNQKQorCUNULjIJKFRYU1RBVFVTKQlDb25kaXRpb24gZmxhZ3MgYW5kIExTTV9TVEVQIChNR0VUL01TRVQgc3RlcCkKKwlDVC4zCShUWFJQVCkJCUJyYW5jaCByZXBlYXQgY291bnRlcgorCVBDLjAJKFBDKQkJUHJvZ3JhbSBjb3VudGVyCisKK1NvbWUgb2YgdGhlIGdlbmVyYWwgcmVnaXN0ZXJzIGhhdmUgc3BlY2lhbCBwdXJwb3NlcyBpbiB0aGUgQUJJIGFuZCB0aGVyZWZvcmUKK2hhdmUgYWxpYXNlczoKKworCUQwIFJFRwkoQUxJQVMpCVBVUlBPU0UJCUQxIFJFRwkoQUxJQVMpCVBVUlBPU0UKKwk9PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PQk9PT09PT09PT09PT09PT09PT09PT09PQorCUQwLjAJKEQwUmUwKQkzMmJpdCByZXN1bHQJRDEuMAkoRDFSZTApCVRvcCBoYWxmIG9mIDY0Yml0IHJlc3VsdAorCUQwLjEJKEQwQXI2KQlBcmd1bWVudCA2CUQxLjEJKEQxQXI1KQlBcmd1bWVudCA1CisJRDAuMgkoRDBBcjQpCUFyZ3VtZW50IDQJRDEuMgkoRDFBcjMpCUFyZ3VtZW50IDMKKwlEMC4zCShEMEFyMikJQXJndW1lbnQgMglEMS4zCShEMUFyMSkJQXJndW1lbnQgMQorCUQwLjQJKEQwRnJUKQlGcmFtZSB0ZW1wCUQxLjQJKEQxUnRQKQlSZXR1cm4gcG9pbnRlcgorCUQwLjUJCUNhbGwgcHJlc2VydmVkCUQxLjUJCUNhbGwgcHJlc2VydmVkCisJRDAuNgkJQ2FsbCBwcmVzZXJ2ZWQJRDEuNgkJQ2FsbCBwcmVzZXJ2ZWQKKwlEMC43CQlDYWxsIHByZXNlcnZlZAlEMS43CQlDYWxsIHByZXNlcnZlZAorCisJQTAgUkVHCShBTElBUykJUFVSUE9TRQkJQTEgUkVHCShBTElBUykJUFVSUE9TRQorCT09PT09PT09PT09PT09PQk9PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PT09PT09PT09CisJQTAuMAkoQTBTdFApCVN0YWNrIHBvaW50ZXIJQTEuMAkoQTFHYlApCUdsb2JhbCBiYXNlIHBvaW50ZXIKKwlBMC4xCShBMEZyUCkJRnJhbWUgcG9pbnRlcglBMS4xCShBMUxiUCkJTG9jYWwgYmFzZSBwb2ludGVyCisJQTAuMgkJCQlBMS4yCisJQTAuMwkJCQlBMS4zCisKKworPT09PT09PT09PT09PT09PT09CitVU0VSTEFORCBSRUdJU1RFUlMKKz09PT09PT09PT09PT09PT09PQorCitBbGwgdGhlIGdlbmVyYWwgcHVycG9zZSBEMCwgRDEsIEEwLCBBMSByZWdpc3RlcnMgYXJlIHByZXNlcnZlZCB3aGVuIGVudGVyaW5nIHRoZQora2VybmVsIChpbmNsdWRpbmcgYXN5bmNocm9ub3VzIGV2ZW50cyBzdWNoIGFzIGludGVycnVwdHMgYW5kIHRpbWVyIHRpY2tzKSBleGNlcHQKK3RoZSBmb2xsb3dpbmcgd2hpY2ggaGF2ZSBzcGVjaWFsIHB1cnBvc2VzIGluIHRoZSBBQkk6CisKKwlSRUdJU1RFUlMJV0hFTglTVEFUVVMJCVBVUlBPU0UKKwk9PT09PT09PT09PT09PT0JPT09PT09PQk9PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCUQwLjgJCURTUAlQcmVzZXJ2ZWQJRUNILCBkZXRlcm1pbmVzIHdoYXQgZXh0ZW5kZWQKKwkJCQkJCURTUCBzdGF0ZSB0byBwcmVzZXJ2ZS4KKwlBMC4wCShBMFN0UCkJQUxXQVlTCVByZXNlcnZlZAlTdGFjayA+PSBBMFN0UCBtYXkgYmUgY2xvYmJlcmVkCisJCQkJCQlhdCBhbnkgdGltZSBieSB0aGUgY3JlYXRpb24gb2YgYQorCQkJCQkJc2lnbmFsIGZyYW1lLgorCUExLjAJKEExR2JQKQlTTVAJQ2xvYmJlcmVkCVVzZWQgYXMgdGVtcG9yYXJ5IGZvciBsb2FkaW5nCisJCQkJCQlrZXJuZWwgc3RhY2sgcG9pbnRlciBhbmQgc2F2aW5nCisJCQkJCQljb3JlIGNvbnRleHQuCisJQTAuMTUJCSFTTVAJUHJvdGVjdGVkCVN0b3JlcyBrZXJuZWwgc3RhY2sgcG9pbnRlci4KKwlBMS4xNQkJQUxXQVlTCVByb3RlY3RlZAlTdG9yZXMga2VybmVsIGJhc2UgcG9pbnRlci4KKworT24gVVAgQTAuMTUgaXMgdXNlZCB0byBzdG9yZSB0aGUga2VybmVsIHN0YWNrIHBvaW50ZXIgZm9yIHN0b3JpbmcgdGhlIHVzZXJsYW5kCitjb250ZXh0LiBBMC4xNSBpcyBnbG9iYWwgYmV0d2VlbiBoYXJkd2FyZSB0aHJlYWRzIHRob3VnaCB3aGljaCBtZWFucyBpdCBjYW5ub3QKK2JlIHVzZWQgb24gU01QIGZvciB0aGlzIHB1cnBvc2UuIFNpbmNlIG5vIHByb3RlY3RlZCBsb2NhbCByZWdpc3RlcnMgYXJlCithdmFpbGFibGUgQTFHYlAgaXMgcmVzZXJ2ZWQgZm9yIHVzZSBhcyBhIHRlbXBvcmFyeSB0byBhbGxvdyBhIHBlcmNwdSBzdGFjaworcG9pbnRlciB0byBiZSBsb2FkZWQgZm9yIHN0b3JpbmcgdGhlIHJlc3Qgb2YgdGhlIGNvbnRleHQuCisKKworPT09PT09PT09PT09PT09PQorS0VSTkVMIFJFR0lTVEVSUworPT09PT09PT09PT09PT09PQorCitXaGVuIGluIHRoZSBrZXJuZWwgdGhlIGZvbGxvd2luZyByZWdpc3RlcnMgaGF2ZSBzcGVjaWFsIHB1cnBvc2VzIGluIHRoZSBBQkk6CisKKwlSRUdJU1RFUlMJV0hFTglTVEFUVVMJCVBVUlBPU0UKKwk9PT09PT09PT09PT09PT0JPT09PT09PQk9PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCUEwLjAJKEEwU3RQKQlBTFdBWVMJUHJlc2VydmVkCVN0YWNrID49IEEwU3RQIG1heSBiZSBjbG9iYmVyZWQKKwkJCQkJCWF0IGFueSB0aW1lIGJ5IHRoZSBjcmVhdGlvbiBvZgorCQkJCQkJYW4gaXJxIHNpZ25hbCBmcmFtZS4KKwlBMS4wCShBMUdiUCkJQUxXQVlTCVByZXNlcnZlZAlSZXNlcnZlZCAoa2VybmVsIGJhc2UgcG9pbnRlcikuCisKKworPT09PT09PT09PT09PT09CitTWVNURU0gQ0FMTCBBQkkKKz09PT09PT09PT09PT09PQorCitXaGVuIGEgc3lzdGVtIGNhbGwgaXMgbWFkZSwgdGhlIGZvbGxvd2luZyByZWdpc3RlcnMgYXJlIGVmZmVjdGl2ZToKKworCVJFR0lTVEVSUwlDQUxMCQkJUkVUVVJOCisJPT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwlEMC4wCShEMFJlMCkJCQkJUmV0dXJuIHZhbHVlIChvciAtZXJybm8pCisJRDEuMAkoRDFSZTApCVN5c3RlbSBjYWxsIG51bWJlcglDbG9iYmVyZWQKKwlEMC4xCShEMEFyNikJU3lzY2FsbCBhcmcgIzYJCVByZXNlcnZlZAorCUQxLjEJKEQxQXI1KQlTeXNjYWxsIGFyZyAjNQkJUHJlc2VydmVkCisJRDAuMgkoRDBBcjQpCVN5c2NhbGwgYXJnICM0CQlQcmVzZXJ2ZWQKKwlEMS4yCShEMUFyMykJU3lzY2FsbCBhcmcgIzMJCVByZXNlcnZlZAorCUQwLjMJKEQwQXIyKQlTeXNjYWxsIGFyZyAjMgkJUHJlc2VydmVkCisJRDEuMwkoRDFBcjEpCVN5c2NhbGwgYXJnICMxCQlQcmVzZXJ2ZWQKKworRHVlIHRvIHRoZSBsaW1pdGVkIG51bWJlciBvZiBhcmd1bWVudCByZWdpc3RlcnMgYW5kIHNvbWUgc3lzdGVtIGNhbGxzIHdpdGggYmFkbHkKK2FsaWduZWQgNjQtYml0IGFyZ3VtZW50cywgNjQtYml0IHZhbHVlcyBhcmUgYWx3YXlzIHBhY2tlZCBpbiBjb25zZWN1dGl2ZQorYXJndW1lbnRzLCBldmVuIGlmIHRoaXMgaXMgY29udHJhcnkgdG8gdGhlIG5vcm1hbCBjYWxsaW5nIGNvbnZlbnRpb25zICh3aGVyZSB0aGUKK3R3byBoYWx2ZXMgd291bGQgZ28gaW4gYSBtYXRjaGluZyBwYWlyIG9mIGRhdGEgcmVnaXN0ZXJzKS4KKworRm9yIGV4YW1wbGUgZmFkdmlzZTY0XzY0IHVzdWFsbHkgaGFzIHRoZSBzaWduYXR1cmU6CisKKwlsb25nIHN5c19mYWR2aXNlNjRfNjQoaTMyIGZkLCBpNjQgb2ZmcywgaTY0IGxlbiwgaTMyIGFkdmljZSk7CisKK0J1dCBmb3IgbWV0YWcgZmFkdmlzZTY0XzY0IGlzIHdyYXBwZWQgc28gdGhhdCB0aGUgNjQtYml0IGFyZ3VtZW50cyBhcmUgcGFja2VkOgorCisJbG9uZyBzeXNfZmFkdmlzZTY0XzY0X21ldGFnKGkzMiBmZCwgICAgICBpMzIgb2Zmc19sbywKKwkJCQkgICAgaTMyIG9mZnNfaGksIGkzMiBsZW5fbG8sCisJCQkJICAgIGkzMiBsZW5faGksICBpMzIgYWR2aWNlKQorCitTbyB0aGUgYXJndW1lbnRzIGFyZSBwYWNrZWQgaW4gdGhlIHJlZ2lzdGVycyBsaWtlIHRoaXM6CisKKwlEMCBSRUcJKEFMSUFTKQlWQUxVRQkJRDEgUkVHCShBTElBUykJVkFMVUUKKwk9PT09PT09PT09PT09PT0JPT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PQk9PT09PT09PT09PT09PT09PT09PT09PQorCUQwLjEJKEQwQXI2KQlhZHZpY2UJCUQxLjEJKEQxQXI1KQloaShsZW4pCisJRDAuMgkoRDBBcjQpCWxvKGxlbikJCUQxLjIJKEQxQXIzKQloaShvZmZzKQorCUQwLjMJKEQwQXIyKQlsbyhvZmZzKQlEMS4zCShEMUFyMSkJZmQKKworCis9PT09PT09PT09PT09PT09PT09CitDQUxMSU5HIENPTlZFTlRJT05TCis9PT09PT09PT09PT09PT09PT09CisKK1RoZXNlIGNhbGxpbmcgY29udmVudGlvbnMgYXBwbHkgdG8gYm90aCB1c2VyIGFuZCBrZXJuZWwgY29kZS4gVGhlIHN0YWNrIGdyb3dzCitmcm9tIGxvdyBhZGRyZXNzZXMgdG8gaGlnaCBhZGRyZXNzZXMgaW4gdGhlIG1ldGFnIEFCSS4gVGhlIHN0YWNrIHBvaW50ZXIgKEEwU3RQKQorc2hvdWxkIGFsd2F5cyBwb2ludCB0byB0aGUgbmV4dCBmcmVlIGFkZHJlc3Mgb24gdGhlIHN0YWNrIGFuZCBzaG91bGQgYXQgYWxsCit0aW1lcyBiZSA2NC1iaXQgYWxpZ25lZC4gVGhlIGZvbGxvd2luZyByZWdpc3RlcnMgYXJlIGVmZmVjdGl2ZSBhdCB0aGUgcG9pbnQgb2YgYQorY2FsbDoKKworCVJFR0lTVEVSUwlDQUxMCQkJUkVUVVJOCisJPT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwlEMC4wCShEMFJlMCkJCQkJMzJiaXQgcmV0dXJuIHZhbHVlCisJRDEuMAkoRDFSZTApCQkJCVVwcGVyIGhhbGYgb2YgNjRiaXQgcmV0dXJuIHZhbHVlCisJRDAuMQkoRDBBcjYpCTMyYml0IGFyZ3VtZW50ICM2CUNsb2JiZXJlZAorCUQxLjEJKEQxQXI1KQkzMmJpdCBhcmd1bWVudCAjNQlDbG9iYmVyZWQKKwlEMC4yCShEMEFyNCkJMzJiaXQgYXJndW1lbnQgIzQJQ2xvYmJlcmVkCisJRDEuMgkoRDFBcjMpCTMyYml0IGFyZ3VtZW50ICMzCUNsb2JiZXJlZAorCUQwLjMJKEQwQXIyKQkzMmJpdCBhcmd1bWVudCAjMglDbG9iYmVyZWQKKwlEMS4zCShEMUFyMSkJMzJiaXQgYXJndW1lbnQgIzEJQ2xvYmJlcmVkCisJRDAuNAkoRDBGclQpCQkJCUNsb2JiZXJlZAorCUQxLjQJKEQxUnRQKQlSZXR1cm4gcG9pbnRlcgkJQ2xvYmJlcmVkCisJRHswLTF9Lns1LTd9CQkJCVByZXNlcnZlZAorCUEwLjAJKEEwU3RQKQlTdGFjayBwb2ludGVyCQlQcmVzZXJ2ZWQKKwlBMS4wCShBMEdiUCkJCQkJUHJlc2VydmVkCisJQTAuMQkoQTBGclApCUZyYW1lIHBvaW50ZXIJCVByZXNlcnZlZAorCUExLjEJKEEwTGJQKQkJCQlQcmVzZXJ2ZWQKKwlBezAtMX0sezItM30JCQkJQ2xvYmJlcmVkCisKKzY0LWJpdCBhcmd1bWVudHMgYXJlIHBsYWNlZCBpbiBtYXRjaGluZyBwYWlycyBvZiByZWdpc3RlcnMgKGkuZS4gdGhlIHNhbWUKK3JlZ2lzdGVyIG51bWJlciBpbiBib3RoIEQwIGFuZCBEMSB1bml0cyksIHdpdGggdGhlIGxlYXN0IHNpZ25pZmljYW50IGhhbGYgaW4gRDAKK2FuZCB0aGUgbW9zdCBzaWduaWZpY2FudCBoYWxmIGluIEQxLCBsZWF2aW5nIGEgZ2FwIHdoZXJlIG5lY2Vzc2FyeS4gRnVydGhlcgorYXJndW1lbnRzIGFyZSBzdG9yZWQgb24gdGhlIHN0YWNrIGluIHJldmVyc2Ugb3JkZXIgKGVhcmxpZXIgYXJndW1lbnRzIGF0IGhpZ2hlcgorYWRkcmVzc2VzKToKKworCUFERFJFU1MJCTAgICAgIDEgICAgIDIgICAgIDMJNCAgICAgNSAgICAgNiAgICAgNworCT09PT09PT09PT09PT09PQk9PT09PSA9PT09PSA9PT09PSA9PT09PQk9PT09PSA9PT09PSA9PT09PSA9PT09PQorCUEwU3RQICAgICAgIC0tPgorCUEwU3RQLTB4MDgJMzJiaXQgYXJndW1lbnQgIzgJMzJiaXQgYXJndW1lbnQgIzcKKwlBMFN0UC0weDEwCTMyYml0IGFyZ3VtZW50ICMxMAkzMmJpdCBhcmd1bWVudCAjOQorCitGdW5jdGlvbiBwcm9sb2d1ZXMgdGVuZCB0byBsb29rIGEgYml0IGxpa2UgdGhpczoKKworCS8qIElmIGZyYW1lIHBvaW50ZXIgaW4gdXNlLCBtb3ZlIGl0IHRvIGZyYW1lIHRlbXAgcmVnaXN0ZXIgc28gaXQgY2FuIGJlCisJICAgZWFzaWx5IHB1c2hlZCBvbnRvIHN0YWNrICovCisJTU9WCUQwRnJULEEwRnJQCisKKwkvKiBJZiBmcmFtZSBwb2ludGVyIGluIHVzZSwgc2V0IGl0IHRvIHN0YWNrIHBvaW50ZXIgKi8KKwlBREQJQTBGclAsQTBTdFAsIzAKKworCS8qIFByZXNlcnZlIEQwRnJULCBEMVJ0UCwgRHswLTF9Lns1LTd9IG9uIHN0YWNrLCBpbmNyZW1lbnRpbmcgQTBTdFAgKi8KKwlNU0VUTAlbQTBTdFArK10sRDBGclQsRDAuNSxEMC42LEQwLjcKKworCS8qIEFsbG9jYXRlIHNvbWUgc3RhY2sgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcyAqLworCUFERAlBMFN0UCxBMFN0UCwjMHgxMAorCitBdCB0aGlzIHBvaW50IHRoZSBzdGFjayB3b3VsZCBsb29rIGxpa2UgdGhpczoKKworCUFERFJFU1MJCTAgICAgIDEgICAgIDIgICAgIDMJNCAgICAgNSAgICAgNiAgICAgNworCT09PT09PT09PT09PT09PQk9PT09PSA9PT09PSA9PT09PSA9PT09PQk9PT09PSA9PT09PSA9PT09PSA9PT09PQorCUEwU3RQICAgICAgIC0tPgorCUEwU3RQLTB4MDgKKwlBMFN0UC0weDEwCisJQTBTdFAtMHgxOAlPbGQgRDAuNwkJT2xkIEQxLjcKKwlBMFN0UC0weDIwCU9sZCBEMC42CQlPbGQgRDEuNgorCUEwU3RQLTB4MjgJT2xkIEQwLjUJCU9sZCBEMS41CisJQTBGclAgICAgICAgLS0+CU9sZCBBMEZyUCAoZnJhbWUgcHRyKQlPbGQgRDFSdFAgKHJldHVybiBwdHIpCisJQTBGclAtMHgwOAkzMmJpdCBhcmd1bWVudCAjOAkzMmJpdCBhcmd1bWVudCAjNworCUEwRnJQLTB4MTAJMzJiaXQgYXJndW1lbnQgIzEwCTMyYml0IGFyZ3VtZW50ICM5CisKK0Z1bmN0aW9uIGVwaWxvZ3VlcyB0ZW5kIHRvIGRpZmZlciBkZXBlbmRpbmcgb24gdGhlIHVzZSBvZiBhIGZyYW1lIHBvaW50ZXIuIEFuCitleGFtcGxlIG9mIGEgZnJhbWUgcG9pbnRlciBlcGlsb2d1ZToKKworCS8qIFJlc3RvcmUgRDBGclQsIEQxUnRQLCBEezAtMX0uezUtN30gZnJvbSBzdGFjaywgaW5jcmVtZW50aW5nIEEwRnJQICovCisJTUdFVEwJRDBGclQsRDAuNSxEMC42LEQwLjcsW0EwRnJQKytdCisJLyogUmVzdG9yZSBzdGFjayBwb2ludGVyIHRvIHdoZXJlIGZyYW1lIHBvaW50ZXIgd2FzIGJlZm9yZSBpbmNyZW1lbnQgKi8KKwlTVUIJQTBTdFAsQTBGclAsIzB4MjAKKwkvKiBSZXN0b3JlIGZyYW1lIHBvaW50ZXIgZnJvbSBmcmFtZSB0ZW1wICovCisJTU9WCUEwRnJQLEQwRnJUCisJLyogUmV0dXJuIHRvIGNhbGxlciB2aWEgcmVzdG9yZWQgcmV0dXJuIHBvaW50ZXIgKi8KKwlNT1YJUEMsRDFSdFAKKworSWYgdGhlIGZ1bmN0aW9uIGhhc24ndCB0b3VjaGVkIHRoZSBmcmFtZSBwb2ludGVyLCBNR0VUTCBjYW5ub3QgYmUgc2FmZWx5IHVzZWQKK3dpdGggQTBTdFAgYXMgaXQgYWx3YXlzIGluY3JlbWVudHMgYW5kIHRoYXQgd291bGQgZXhwb3NlIHRoZSBzdGFjayB0byBjbG9iYmVyaW5nCitieSBpbnRlcnJ1cHRzIChrZXJuZWwpIG9yIHNpZ25hbHMgKHVzZXIpLiBUaGVyZWZvcmUgaXQncyBjb21tb24gdG8gc2VlIHRoZSBNR0VUTAorc3BsaXQgaW50byBzZXBhcmF0ZSBHRVRMIGluc3RydWN0aW9uczoKKworCS8qIFJlc3RvcmUgRDBGclQsIEQxUnRQLCBEezAtMX0uezUtN30gZnJvbSBzdGFjayAqLworCUdFVEwJRDBGclQsRDFSdFAsW0EwU3RQKyMtMHgzMF0KKwlHRVRMCUQwLjUsRDEuNSxbQTBTdFArIy0weDI4XQorCUdFVEwJRDAuNixEMS42LFtBMFN0UCsjLTB4MjBdCisJR0VUTAlEMC43LEQxLjcsW0EwU3RQKyMtMHgxOF0KKwkvKiBSZXN0b3JlIHN0YWNrIHBvaW50ZXIgKi8KKwlTVUIJQTBTdFAsQTBTdFAsIzB4MzAKKwkvKiBSZXR1cm4gdG8gY2FsbGVyIHZpYSByZXN0b3JlZCByZXR1cm4gcG9pbnRlciAqLworCU1PVglQQyxEMVJ0UApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9taWMvbWljX292ZXJ2aWV3LnR4dCBiL0RvY3VtZW50YXRpb24vbWljL21pY19vdmVydmlldy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNmNDRmYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbWljL21pY19vdmVydmlldy50eHQKQEAgLTAsMCArMSw3NSBAQAorQW4gSW50ZWwgTUlDIFgxMDAgZGV2aWNlIGlzIGEgUENJZSBmb3JtIGZhY3RvciBhZGQtaW4gY29wcm9jZXNzb3IKK2NhcmQgYmFzZWQgb24gdGhlIEludGVsIE1hbnkgSW50ZWdyYXRlZCBDb3JlIChNSUMpIGFyY2hpdGVjdHVyZQordGhhdCBydW5zIGEgTGludXggT1MuIEl0IGlzIGEgUENJZSBlbmRwb2ludCBpbiBhIHBsYXRmb3JtIGFuZCB0aGVyZWZvcmUKK2ltcGxlbWVudHMgdGhlIHRocmVlIHJlcXVpcmVkIHN0YW5kYXJkIGFkZHJlc3Mgc3BhY2VzIGkuZS4gY29uZmlndXJhdGlvbiwKK21lbW9yeSBhbmQgSS9PLiBUaGUgaG9zdCBPUyBsb2FkcyBhIGRldmljZSBkcml2ZXIgYXMgaXMgdHlwaWNhbCBmb3IKK1BDSWUgZGV2aWNlcy4gVGhlIGNhcmQgaXRzZWxmIHJ1bnMgYSBib290c3RyYXAgYWZ0ZXIgcmVzZXQgdGhhdAordHJhbnNmZXJzIGNvbnRyb2wgdG8gdGhlIGNhcmQgT1MgZG93bmxvYWRlZCBmcm9tIHRoZSBob3N0IGRyaXZlci4gVGhlCitob3N0IGRyaXZlciBzdXBwb3J0cyBPU1BNIHN1c3BlbmQgYW5kIHJlc3VtZSBvcGVyYXRpb25zLiBJdCBzaHV0cyBkb3duCit0aGUgY2FyZCBkdXJpbmcgc3VzcGVuZCBhbmQgcmVib290cyB0aGUgY2FyZCBPUyBkdXJpbmcgcmVzdW1lLgorVGhlIGNhcmQgT1MgYXMgc2hpcHBlZCBieSBJbnRlbCBpcyBhIExpbnV4IGtlcm5lbCB3aXRoIG1vZGlmaWNhdGlvbnMKK2ZvciB0aGUgWDEwMCBkZXZpY2VzLgorCitTaW5jZSBpdCBpcyBhIFBDSWUgY2FyZCwgaXQgZG9lcyBub3QgaGF2ZSB0aGUgYWJpbGl0eSB0byBob3N0IGhhcmR3YXJlCitkZXZpY2VzIGZvciBuZXR3b3JraW5nLCBzdG9yYWdlIGFuZCBjb25zb2xlLiBXZSBwcm92aWRlIHRoZXNlIGRldmljZXMKK29uIFgxMDAgY29wcm9jZXNzb3JzIHRodXMgZW5hYmxpbmcgYSBzZWxmLWJvb3RhYmxlIGVxdWl2YWxlbnQgZW52aXJvbm1lbnQKK2ZvciBhcHBsaWNhdGlvbnMuIEEga2V5IGJlbmVmaXQgb2Ygb3VyIHNvbHV0aW9uIGlzIHRoYXQgaXQgbGV2ZXJhZ2VzCit0aGUgc3RhbmRhcmQgdmlydGlvIGZyYW1ld29yayBmb3IgbmV0d29yaywgZGlzayBhbmQgY29uc29sZSBkZXZpY2VzLAordGhvdWdoIGluIG91ciBjYXNlIHRoZSB2aXJ0aW8gZnJhbWV3b3JrIGlzIHVzZWQgYWNyb3NzIGEgUENJZSBidXMuCisKK01JQyBQQ0llIGNhcmQgaGFzIGEgZG1hIGNvbnRyb2xsZXIgd2l0aCA4IGNoYW5uZWxzLiBUaGVzZSBjaGFubmVscyBhcmUKK3NoYXJlZCBiZXR3ZWVuIHRoZSBob3N0IHMvdyBhbmQgdGhlIGNhcmQgcy93LiAwIHRvIDMgYXJlIHVzZWQgYnkgaG9zdAorYW5kIDQgdG8gNyBieSBjYXJkLiBBcyB0aGUgZG1hIGRldmljZSBkb2Vzbid0IHNob3cgdXAgYXMgUENJZSBkZXZpY2UsCithIHZpcnR1YWwgYnVzIGNhbGxlZCBtaWMgYnVzIGlzIGNyZWF0ZWQgYW5kIHZpcnR1YWwgZG1hIGRldmljZXMgYXJlCitjcmVhdGVkIG9uIGl0IGJ5IHRoZSBob3N0L2NhcmQgZHJpdmVycy4gT24gaG9zdCB0aGUgY2hhbm5lbHMgYXJlIHByaXZhdGUKK2FuZCB1c2VkIG9ubHkgYnkgdGhlIGhvc3QgZHJpdmVyIHRvIHRyYW5zZmVyIGRhdGEgZm9yIHRoZSB2aXJ0aW8gZGV2aWNlcy4KKworVGhlIFN5bW1ldHJpYyBDb21tdW5pY2F0aW9uIEludGVyZmFjZSAoU0NJRiAocHJvbm91bmNlZCBhcyBza2lmZikpIGlzIGEKK2xvdyBsZXZlbCBjb21tdW5pY2F0aW9ucyBBUEkgYWNyb3NzIFBDSWUgY3VycmVudGx5IGltcGxlbWVudGVkIGZvciBNSUMuCitNb3JlIGRldGFpbHMgYXJlIGF2YWlsYWJsZSBhdCBzY2lmX292ZXJ2aWV3LnR4dC4KKworVGhlIENvcHJvY2Vzc29yIFN0YXRlIE1hbmFnZW1lbnQgKENPU00pIGRyaXZlciBvbiB0aGUgaG9zdCBhbGxvd3MgZm9yCitib290LCBzaHV0ZG93biBhbmQgcmVzZXQgb2YgSW50ZWwgTUlDIGRldmljZXMuIEl0IGNvbW11bmljYXRlcyB3aXRoIGEgQ09TTQorImNsaWVudCIgZHJpdmVyIG9uIHRoZSBNSUMgY2FyZHMgb3ZlciBTQ0lGIHRvIHBlcmZvcm0gdGhlc2UgZnVuY3Rpb25zLgorCitIZXJlIGlzIGEgYmxvY2sgZGlhZ3JhbSBvZiB0aGUgdmFyaW91cyBjb21wb25lbnRzIGRlc2NyaWJlZCBhYm92ZS4gVGhlCit2aXJ0aW8gYmFja2VuZHMgYXJlIHNpdHVhdGVkIG9uIHRoZSBob3N0IHJhdGhlciB0aGFuIHRoZSBjYXJkIGdpdmVuIGJldHRlcgorc2luZ2xlIHRocmVhZGVkIHBlcmZvcm1hbmNlIGZvciB0aGUgaG9zdCBjb21wYXJlZCB0byBNSUMsIHRoZSBhYmlsaXR5IG9mCit0aGUgaG9zdCB0byBpbml0aWF0ZSBETUEncyB0by9mcm9tIHRoZSBjYXJkIHVzaW5nIHRoZSBNSUMgRE1BIGVuZ2luZSBhbmQKK3RoZSBmYWN0IHRoYXQgdGhlIHZpcnRpbyBibG9jayBzdG9yYWdlIGJhY2tlbmQgY2FuIG9ubHkgYmUgb24gdGhlIGhvc3QuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0rICAgICAgICAgICB8ICAgICAgICAgICAgICstLS0tLS0tLS0tKworICAgICAgICAgICAgICAgfCBDYXJkIE9TICB8ICAgICAgICAgICB8ICAgICAgICAgICAgIHwgSG9zdCBPUyAgfAorICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0rICAgICAgICAgICB8ICAgICAgICAgICAgICstLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICstLS0tLS0tKyArLS0tLS0tLS0rICstLS0tLS0rIHwgKy0tLS0tLS0tLSsgICstLS0tLS0tLSsgKy0tLS0tLS0tKworICAgICAgICB8IFZpcnRpb3wgfFZpcnRpbyAgfCB8VmlydGlvfCB8IHxWaXJ0aW8gICB8ICB8VmlydGlvICB8IHxWaXJ0aW8gIHwKKyAgICAgICAgfCBOZXQgICB8IHxDb25zb2xlIHwgfEJsb2NrIHwgfCB8TmV0ICAgICAgfCAgfENvbnNvbGUgfCB8QmxvY2sgICB8CisgICAgICAgIHwgRHJpdmVyfCB8RHJpdmVyICB8IHxEcml2ZXJ8IHwgfGJhY2tlbmQgIHwgIHxiYWNrZW5kIHwgfGJhY2tlbmQgfAorICAgICAgICArLS0tLS0tLSsgKy0tLS0tLS0tKyArLS0tLS0tKyB8ICstLS0tLS0tLS0rICArLS0tLS0tLS0rICstLS0tLS0tLSsKKyAgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCAgICAgfCAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgfAorICAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICB8VXNlciAgfCAgICAgICAgICAgIHwgICAgICAgICB8CisgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgICAgIHwtLS0tLS18LS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tCisgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgIHxLZXJuZWwgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgIHwgVmlydGlvIG92ZXIgUENJZSBJT0NUTHMgIHwKKyAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisrLS0tLS0tLS0tLS0rICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfCAgKy0tLS0tLS0tLS0tKworfCBNSUMgRE1BICAgfCAgICAgICAgIHwgICAgICArLS0tLS0tKyB8ICstLS0tLS0rICstLS0tLS0rIHwgIHwgTUlDIERNQSAgIHwKK3wgRHJpdmVyICAgIHwgICAgICAgICB8ICAgICAgfCBTQ0lGIHwgfCB8IFNDSUYgfCB8IENPU00gfCB8ICB8IERyaXZlciAgICB8CisrLS0tLS0tLS0tLS0rICAgICAgICAgfCAgICAgICstLS0tLS0rIHwgKy0tLS0tLSsgKy0tKy0tLSsgfCAgKy0tLS0tLS0tLS0tKworICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICB8ICAgICB8ICAgIHwgICAgICAgIHwgICAgIHwgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0rICAgICB8ICAgICAgKy0tLS0tLSsgfCArLS0rLS0tKyArLS0rLS0tKyB8ICstLS0tLS0tLS0tLS0tLS0tKworfE1JQyB2aXJ0dWFsIEJ1c3wgICAgIHwgICAgICB8U0NJRiAgfCB8IHxTQ0lGICB8IHwgQ09TTSB8IHwgfE1JQyB2aXJ0dWFsIEJ1cyB8CisrLS0tLS0tLS0tLS0tLS0tKyAgICAgfCAgICAgIHxIVyBCdXN8IHwgfEhXIEJ1c3wgfCBCdXMgIHwgfCArLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgKy0tLS0tLSsgfCArLS0rLS0tKyArLS0tLS0tKyB8ICAgICAgICAgICAgICB8CisgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgIHwgICAgIHwgICAgICAgfCAgICAgfCAgICAgfCAgICAgICAgICAgICAgfAorICAgICAgfCAgICstLS0tLS0tLS0tLSstLS0rICAgICB8ICAgICB8ICAgICAgIHwgICAgKy0tLS0tLS0tLS0tLS0tLSsgICAgIHwKKyAgICAgIHwgICB8SW50ZWwgTUlDICAgICAgfCAgICAgfCAgICAgfCAgICAgICB8ICAgIHxJbnRlbCBNSUMgICAgICB8ICAgICB8CisgICAgICArLS0tfENhcmQgRHJpdmVyICAgIHwgICAgIHwgICAgIHwgICAgICAgfCAgICB8SG9zdCBEcml2ZXIgICAgfCAgICAgfAorICAgICAgICAgICstLS0tLS0tLS0tLS0rLS0tLS0tLS0rICAgICB8ICAgICAgICstLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgUENJZSBCdXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21pYy9zY2lmX292ZXJ2aWV3LnR4dCBiL0RvY3VtZW50YXRpb24vbWljL3NjaWZfb3ZlcnZpZXcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhMjgwZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL21pYy9zY2lmX292ZXJ2aWV3LnR4dApAQCAtMCwwICsxLDk4IEBACitUaGUgU3ltbWV0cmljIENvbW11bmljYXRpb24gSW50ZXJmYWNlIChTQ0lGIChwcm9ub3VuY2VkIGFzIHNraWZmKSkgaXMgYSBsb3cKK2xldmVsIGNvbW11bmljYXRpb25zIEFQSSBhY3Jvc3MgUENJZSBjdXJyZW50bHkgaW1wbGVtZW50ZWQgZm9yIE1JQy4gQ3VycmVudGx5CitTQ0lGIHByb3ZpZGVzIGludGVyLW5vZGUgY29tbXVuaWNhdGlvbiB3aXRoaW4gYSBzaW5nbGUgaG9zdCBwbGF0Zm9ybSwgd2hlcmUgYQorbm9kZSBpcyBhIE1JQyBDb3Byb2Nlc3NvciBvciBYZW9uIGJhc2VkIGhvc3QuIFNDSUYgYWJzdHJhY3RzIHRoZSBkZXRhaWxzIG9mCitjb21tdW5pY2F0aW5nIG92ZXIgdGhlIFBDSWUgYnVzIHdoaWxlIHByb3ZpZGluZyBhbiBBUEkgdGhhdCBpcyBzeW1tZXRyaWMKK2Fjcm9zcyBhbGwgdGhlIG5vZGVzIGluIHRoZSBQQ0llIG5ldHdvcmsuIEFuIGltcG9ydGFudCBkZXNpZ24gb2JqZWN0aXZlIGZvciBTQ0lGCitpcyB0byBkZWxpdmVyIHRoZSBtYXhpbXVtIHBvc3NpYmxlIHBlcmZvcm1hbmNlIGdpdmVuIHRoZSBjb21tdW5pY2F0aW9uCithYmlsaXRpZXMgb2YgdGhlIGhhcmR3YXJlLiBTQ0lGIGhhcyBiZWVuIHVzZWQgdG8gaW1wbGVtZW50IGFuIG9mZmxvYWQgY29tcGlsZXIKK3J1bnRpbWUgYW5kIE9GRUQgc3VwcG9ydCBmb3IgTVBJIGltcGxlbWVudGF0aW9ucyBmb3IgTUlDIGNvcHJvY2Vzc29ycy4KKworPT09PSBTQ0lGIEFQSSBDb21wb25lbnRzID09PT0KK1RoZSBTQ0lGIEFQSSBoYXMgdGhlIGZvbGxvd2luZyBwYXJ0czoKKzEuIENvbm5lY3Rpb24gZXN0YWJsaXNobWVudCB1c2luZyBhIGNsaWVudCBzZXJ2ZXIgbW9kZWwKKzIuIEJ5dGUgc3RyZWFtIG1lc3NhZ2luZyBpbnRlbmRlZCBmb3Igc2hvcnQgbWVzc2FnZXMKKzMuIE5vZGUgZW51bWVyYXRpb24gdG8gZGV0ZXJtaW5lIG9ubGluZSBub2RlcworNC4gUG9sbCBzZW1hbnRpY3MgZm9yIGRldGVjdGlvbiBvZiBpbmNvbWluZyBjb25uZWN0aW9ucyBhbmQgbWVzc2FnZXMKKzUuIE1lbW9yeSByZWdpc3RyYXRpb24gdG8gcGluIGRvd24gcGFnZXMKKzYuIFJlbW90ZSBtZW1vcnkgbWFwcGluZyBmb3IgbG93IGxhdGVuY3kgQ1BVIGFjY2Vzc2VzIHZpYSBtbWFwCis3LiBSZW1vdGUgRE1BIChSRE1BKSBmb3IgaGlnaCBiYW5kd2lkdGggRE1BIHRyYW5zZmVycworOC4gRmVuY2UgQVBJcyBmb3IgUkRNQSBzeW5jaHJvbml6YXRpb24KKworU0NJRiBleHBvc2VzIHRoZSBub3Rpb24gb2YgYSBjb25uZWN0aW9uIHdoaWNoIGNhbiBiZSB1c2VkIGJ5IHBlZXIgcHJvY2Vzc2VzIG9uCitub2RlcyBpbiBhIFNDSUYgUENJZSAibmV0d29yayIgdG8gc2hhcmUgbWVtb3J5ICJ3aW5kb3dzIiBhbmQgdG8gY29tbXVuaWNhdGUuIEEKK3Byb2Nlc3MgaW4gYSBTQ0lGIG5vZGUgaW5pdGlhdGVzIGEgU0NJRiBjb25uZWN0aW9uIHRvIGEgcGVlciBwcm9jZXNzIG9uIGEKK2RpZmZlcmVudCBub2RlIHZpYSBhIFNDSUYgImVuZHBvaW50Ii4gU0NJRiBlbmRwb2ludHMgc3VwcG9ydCBtZXNzYWdpbmcgQVBJcword2hpY2ggYXJlIHNpbWlsYXIgdG8gY29ubmVjdGlvbiBvcmllbnRlZCBzb2NrZXQgQVBJcy4gQ29ubmVjdGVkIFNDSUYgZW5kcG9pbnRzCitjYW4gYWxzbyByZWdpc3RlciBsb2NhbCBtZW1vcnkgd2hpY2ggaXMgZm9sbG93ZWQgYnkgZGF0YSB0cmFuc2ZlciB1c2luZyBlaXRoZXIKK0RNQSwgQ1BVIGNvcGllcyBvciByZW1vdGUgbWVtb3J5IG1hcHBpbmcgdmlhIG1tYXAuIFNDSUYgc3VwcG9ydHMgYm90aCB1c2VyIGFuZAora2VybmVsIG1vZGUgY2xpZW50cyB3aGljaCBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQuCisKKz09PT0gU0NJRiBQZXJmb3JtYW5jZSBmb3IgTUlDID09PT0KK0RNQSBiYW5kd2lkdGggY29tcGFyaXNvbiBiZXR3ZWVuIHRoZSBUQ1AgKG92ZXIgZXRoZXJuZXQgb3ZlciBQQ0llKSBzdGFjayB2ZXJzdXMKK1NDSUYgc2hvd3MgdGhlIHBlcmZvcm1hbmNlIGFkdmFudGFnZXMgb2YgU0NJRiBmb3IgSFBDIGFwcGxpY2F0aW9ucyBhbmQgcnVudGltZXMuCisKKyAgICAgICAgICAgICBDb21wYXJpc29uIG9mIFRDUCBhbmQgU0NJRiBiYXNlZCBCVworCisgIFRocm91Z2hwdXQgKEdCL3NlYykKKyAgICA4ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0llIEJhbmR3aWR0aCAqKioqKioKKyAgICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDUCAjIyMjIyMKKyAgICA3ICsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAgICAgICAgICAgU0NJRiAlJSUlJSUKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICUlJSUlJSUlJSUlJSUlJSUlJSUKKyAgICA2ICsgICAgICAgICAgICAgICAgICAgJSUlJQorICAgICAgfCAgICAgICAgICAgICAgICAgJSUKKyAgICAgIHwgICAgICAgICAgICAgICAlJSUKKyAgICA1ICsgICAgICAgICAgICAgICUlCisgICAgICB8ICAgICAgICAgICAgJSUKKyAgICA0ICsgICAgICAgICAgICUlCisgICAgICB8ICAgICAgICAgICUlCisgICAgMyArICAgICAgICAgJSUKKyAgICAgIHwgICAgICAgICUKKyAgICAyICsgICAgICAlJQorICAgICAgfCAgICAgJSUKKyAgICAgIHwgICAgJQorICAgIDEgKworICAgICAgKyAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgIDAgKysrLS0tKysrLS0rLS0rLSstLSstLSstKystKy0tKy0rKy0rLS0rLSsrLSstCisgICAgICAxICAgICAgIDEwICAgICAxMDAgICAgICAxMDAwICAgMTAwMDAgICAxMDAwMDAKKyAgICAgICAgICAgICAgICAgICBUcmFuc2ZlciBTaXplIChLQnl0ZXMpCisKK1NDSUYgYWxsb3dzIG1lbW9yeSBzaGFyaW5nIHZpYSBtbWFwKC4uKSBiZXR3ZWVuIHByb2Nlc3NlcyBvbiBkaWZmZXJlbnQgUENJZQorbm9kZXMgYW5kIHRodXMgcHJvdmlkZXMgYmFyZS1tZXRhbCBQQ0llIGxhdGVuY3kuIFRoZSByb3VuZCB0cmlwIFNDSUYgbW1hcAorbGF0ZW5jeSBmcm9tIHRoZSBob3N0IHRvIGFuIHgxMDAgTUlDIGZvciBhbiA4IGJ5dGUgbWVzc2FnZSBpcyAwLjQ0IHVzZWNzLgorCitTQ0lGIGhhcyBhIHVzZXIgc3BhY2UgbGlicmFyeSB3aGljaCBpcyBhIHRoaW4gSU9DVEwgd3JhcHBlciBwcm92aWRpbmcgYSB1c2VyCitzcGFjZSBBUEkgc2ltaWxhciB0byB0aGUga2VybmVsIEFQSSBpbiBzY2lmLmguIFRoZSBTQ0lGIHVzZXIgc3BhY2UgbGlicmFyeQoraXMgZGlzdHJpYnV0ZWQgQCBodHRwczovL3NvZnR3YXJlLmludGVsLmNvbS9lbi11cy9taWMtZGV2ZWxvcGVyCisKK0hlcmUgaXMgc29tZSBwc2V1ZG8gY29kZSBmb3IgYW4gZXhhbXBsZSBvZiBob3cgdHdvIGFwcGxpY2F0aW9ucyBvbiB0d28gUENJZQorbm9kZXMgd291bGQgdHlwaWNhbGx5IHVzZSB0aGUgU0NJRiBBUEk6CisKK1Byb2Nlc3MgQSAob24gbm9kZSBBKQkJCVByb2Nlc3MgQiAob24gbm9kZSBCKQorCisvKiBnZXQgb25saW5lIG5vZGUgaW5mb3JtYXRpb24gKi8KK3NjaWZfZ2V0X25vZGVfaWRzKC4uKQkJCXNjaWZfZ2V0X25vZGVfaWRzKC4uKQorc2NpZl9vcGVuKC4uKQkJCQlzY2lmX29wZW4oLi4pCitzY2lmX2JpbmQoLi4pCQkJCXNjaWZfYmluZCguLikKK3NjaWZfbGlzdGVuKC4uKQorc2NpZl9hY2NlcHQoLi4pCQkJCXNjaWZfY29ubmVjdCguLikKKy8qIFNDSUYgY29ubmVjdGlvbiBlc3RhYmxpc2hlZCAqLworCisvKiBTZW5kIGFuZCByZWNlaXZlIHNob3J0IG1lc3NhZ2VzICovCitzY2lmX3NlbmQoLi4pL3NjaWZfcmVjdiguLikJCXNjaWZfc2VuZCguLikvc2NpZl9yZWN2KC4uKQorCisvKiBSZWdpc3RlciBtZW1vcnkgKi8KK3NjaWZfcmVnaXN0ZXIoLi4pCQkJc2NpZl9yZWdpc3RlciguLikKKworLyogUkRNQSAqLworc2NpZl9yZWFkZnJvbSguLikvc2NpZl93cml0ZXRvKC4uKQlzY2lmX3JlYWRmcm9tKC4uKS9zY2lmX3dyaXRldG8oLi4pCisKKy8qIEZlbmNlIERNQXMgKi8KK3NjaWZfZmVuY2Vfc2lnbmFsKC4uKQkJCXNjaWZfZmVuY2Vfc2lnbmFsKC4uKQorCittbWFwKC4uKQkJCQltbWFwKC4uKQorCisvKiBBY2Nlc3MgcmVtb3RlIHJlZ2lzdGVyZWQgbWVtb3J5ICovCisKKy8qIENsb3NlIHRoZSBlbmRwb2ludHMgKi8KK3NjaWZfY2xvc2UoLi4pCQkJCXNjaWZfY2xvc2UoLi4pCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21pcHMvMDAtSU5ERVggYi9Eb2N1bWVudGF0aW9uL21pcHMvMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFlOWNmZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbWlwcy8wMC1JTkRFWApAQCAtMCwwICsxLDQgQEAKKzAwLUlOREVYCisJLSB0aGlzIGZpbGUuCitBVTF4eHhfSURFLlJFQURNRQorCS0gUkVBRE1FIGZvciBNSVBTIEFVMVhYWCBJREUgZHJpdmVyLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9taXBzL0FVMXh4eF9JREUuUkVBRE1FIGIvRG9jdW1lbnRhdGlvbi9taXBzL0FVMXh4eF9JREUuUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyODQ0YTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL21pcHMvQVUxeHh4X0lERS5SRUFETUUKQEAgLTAsMCArMSwxMjIgQEAKK1JFQURNRSBmb3IgTUlQUyBBVTFYWFggSURFIGRyaXZlciAtIFJlbGVhc2VkIDIwMDUtMDctMTUKKworQUJPVVQKKy0tLS0tCitUaGlzIGZpbGUgZGVzY3JpYmVzIHRoZSAnZHJpdmVycy9pZGUvYXUxeHh4LWlkZS5jJywgcmVsYXRlZCBmaWxlcyBhbmQgdGhlCitzZXJ2aWNlcyB0aGV5IHByb3ZpZGUuCisKK0lmIHlvdSBhcmUgc2hvcnQgaW4gcGF0aWVuY2UgYW5kIGp1c3Qgd2FudCB0byBrbm93IGhvdyB0byBhZGQgeW91ciBoYXJkIGRpc2MgdG8KK3RoZSB3aGl0ZSBvciBibGFjayBsaXN0LCBnbyB0byB0aGUgJ0FERCBORVcgSEFSRCBESVNDIFRPIFdISVRFIE9SIEJMQUNLIExJU1QnCitzZWN0aW9uLgorCisKK0xJQ0VOU0UKKy0tLS0tLS0KKworQ29weXJpZ2h0IChjKSAyMDAzLTIwMDUgQU1ELCBQZXJzb25hbCBDb25uZWN0aXZpdHkgU29sdXRpb25zCisKK1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCit0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIKK3ZlcnNpb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCitJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5ECitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUgorQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKK1NVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KK0NPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCitBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKK3RoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisKK05vdGU6IGZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgcmVmZXIgIkFNRCBBbGNoZW15IEF1MTIwMC9BdTE1NTAgSURFCisgICAgICBJbnRlcmZhY2UgYW5kIExpbnV4IERldmljZSBEcml2ZXIiIEFwcGxpY2F0aW9uIE5vdGUuCisKKworRklMRVMsIENPTkZJR1MgQU5EIENPTVBBVElCSUxJVFkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1R3byBmaWxlcyBhcmUgaW50cm9kdWNlZDoKKworICBhKSAnYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtYXUxeDAwL2F1MXh4eF9pZGUuaCcKKyAgICAgY29udGFpbnMgOiBzdHJ1Y3QgX2F1aWRlX2h3aWYKKyAgICAgICAgICAgICAgICAgdGltaW5nIHBhcmFtZXRlcnMgZm9yIFBJTyBtb2RlIDAvMS8yLzMvNAorICAgICAgICAgICAgICAgICB0aW1pbmcgcGFyYW1ldGVycyBmb3IgTVdETUEgMC8xLzIKKworICBiKSAnZHJpdmVycy9pZGUvbWlwcy9hdTF4eHgtaWRlLmMnCisgICAgIGNvbnRhaW5zIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBBVTFYWFggSURFIGRyaXZlcgorCitGb2xsb3dpbmcgZXh0cmEgY29uZmlncyB2YXJpYWJsZXMgYXJlIGludHJvZHVjZWQ6CisKKyAgQ09ORklHX0JMS19ERVZfSURFX0FVMVhYWF9QSU9fREJETUEgICAgLSBlbmFibGUgdGhlIFBJTytEQkRNQSBtb2RlCisgIENPTkZJR19CTEtfREVWX0lERV9BVTFYWFhfTURNQTJfREJETUEgIC0gZW5hYmxlIHRoZSBNV0RNQSBtb2RlCisgIENPTkZJR19CTEtfREVWX0lERV9BVTFYWFhfQlVSU1RBQkxFX09OIC0gc2V0IEJ1cnN0YWJsZSBGSUZPIGluIERCRE1BCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlcgorCisKK1NVUFBPUlRFRCBJREUgTU9ERVMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIEFVMVhYWCBJREUgZHJpdmVyIHN1cHBvcnRlZCBhbGwgUElPIG1vZGVzIC0gUElPIG1vZGUgMC8xLzIvMy80IC0gYW5kIGFsbAorTVdETUEgbW9kZXMgLSBNV0RNQSAwLzEvMiAtLiBUaGVyZSBpcyBubyBzdXBwb3J0IGZvciBTV0RNQSBhbmQgVURNQSBtb2RlLgorCitUbyBjaGFuZ2UgdGhlIFBJTyBtb2RlIHVzZSB0aGUgcHJvZ3JhbSBoZHBhcm0gd2l0aCBvcHRpb24gLXAsIGUuZy4KKydoZHBhcm0gLXAwIFtkZXZpY2VdJyBmb3IgUElPIG1vZGUgMC4gVG8gZW5hYmxlIHRoZSBNV0RNQSBtb2RlIHVzZSB0aGUgb3B0aW9uCistWCwgZS5nLiAnaGRwYXJtIC1YMzIgW2RldmljZV0nIGZvciBNV0RNQSBtb2RlIDAuCisKKworUEVSRk9STUFOQ0UgQ09ORklHVVJBVElPTlMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHRoZSB1c2VkIHN5c3RlbSBkb2Vzbid0IG5lZWQgVVNCIHN1cHBvcnQgZW5hYmxlIHRoZSBmb2xsb3dpbmcga2VybmVsIGNvbmZpZ3M6CisKK0NPTkZJR19JREU9eQorQ09ORklHX0JMS19ERVZfSURFPXkKK0NPTkZJR19JREVfR0VORVJJQz15CitDT05GSUdfQkxLX0RFVl9JREVQQ0k9eQorQ09ORklHX0JMS19ERVZfR0VORVJJQz15CitDT05GSUdfQkxLX0RFVl9JREVETUFfUENJPXkKK0NPTkZJR19JREVETUFfUENJX0FVVE89eQorQ09ORklHX0JMS19ERVZfSURFX0FVMVhYWD15CitDT05GSUdfQkxLX0RFVl9JREVfQVUxWFhYX01ETUEyX0RCRE1BPXkKK0NPTkZJR19CTEtfREVWX0lERURNQT15CitDT05GSUdfSURFRE1BX0FVVE89eQorCitBbHNvIGRlZmluZSAnSURFX0FVMVhYWF9CVVJTVE1PREUnIGluICdkcml2ZXJzL2lkZS9taXBzL2F1MXh4eC1pZGUuYycgdG8gZW5hYmxlCit0aGUgYnVyc3Qgc3VwcG9ydCBvbiBEQkRNQSBjb250cm9sbGVyLgorCitJZiB0aGUgdXNlZCBzeXN0ZW0gbmVlZCB0aGUgVVNCIHN1cHBvcnQgZW5hYmxlIHRoZSBmb2xsb3dpbmcga2VybmVsIGNvbmZpZ3MgZm9yCitoaWdoIElERSB0byBVU0IgdGhyb3VnaHB1dC4KKworQ09ORklHX0JMS19ERVZfSURFRElTSz15CitDT05GSUdfSURFX0dFTkVSSUM9eQorQ09ORklHX0JMS19ERVZfSURFUENJPXkKK0NPTkZJR19CTEtfREVWX0dFTkVSSUM9eQorQ09ORklHX0JMS19ERVZfSURFRE1BX1BDST15CitDT05GSUdfSURFRE1BX1BDSV9BVVRPPXkKK0NPTkZJR19CTEtfREVWX0lERV9BVTFYWFg9eQorQ09ORklHX0JMS19ERVZfSURFX0FVMVhYWF9NRE1BMl9EQkRNQT15CitDT05GSUdfQkxLX0RFVl9JREVETUE9eQorQ09ORklHX0lERURNQV9BVVRPPXkKKworQWxzbyB1bmRlZmluZSAnSURFX0FVMVhYWF9CVVJTVE1PREUnIGluICdkcml2ZXJzL2lkZS9taXBzL2F1MXh4eC1pZGUuYycgdG8KK2Rpc2FibGUgdGhlIGJ1cnN0IHN1cHBvcnQgb24gREJETUEgY29udHJvbGxlci4KKworCitBQ0tOT1dMRURHTUVOVFMKKy0tLS0tLS0tLS0tLS0tLQorCitUaGVzZSBkcml2ZXJzIHdvdWxkbid0IGhhdmUgYmVlbiBkb25lIHdpdGhvdXQgdGhlIGJhc2Ugb2Yga2VybmVsIDIuNC54IEFVMVhYWAorSURFIGRyaXZlciBmcm9tIEFNRC4KKworQWRkaXRpb25hbCBpbnB1dCBhbHNvIGZyb206CitNYXR0aGlhcyBMZW5rIDxtYXR0aGlhcy5sZW5rQGFtZC5jb20+CisKK0hhcHB5IGhhY2tpbmchCitFbnJpY28gV2FsdGhlciA8ZW5yaWNvLndhbHRoZXJAYW1kLmNvbT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL01ha2VmaWxlIGIvRG9jdW1lbnRhdGlvbi9taXNjLWRldmljZXMvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJiN2FhNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL01ha2VmaWxlCkBAIC0wLDAgKzEgQEAKK3N1YmRpci15IDo9IG1laQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9taXNjLWRldmljZXMvYWQ1MjV4X2Rwb3QudHh0IGIvRG9jdW1lbnRhdGlvbi9taXNjLWRldmljZXMvYWQ1MjV4X2Rwb3QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjOTQxM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9hZDUyNXhfZHBvdC50eHQKQEAgLTAsMCArMSw1NyBAQAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIEFENTI1eCBEaWdpdGFsIFBvdGVudGlvbWV0ZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGFkNTI1eF9kcG90IGRyaXZlciBleHBvcnRzIGEgc2ltcGxlIHN5c2ZzIGludGVyZmFjZS4gIFRoaXMgYWxsb3dzIHlvdSB0bword29yayB3aXRoIHRoZSBpbW1lZGlhdGUgcmVzaXN0YW5jZSBzZXR0aW5ncyBhcyB3ZWxsIGFzIHVwZGF0ZSB0aGUgc2F2ZWQgc3RhcnR1cAorc2V0dGluZ3MuICBBY2Nlc3MgdG8gdGhlIGZhY3RvcnkgcHJvZ3JhbW1lZCB0b2xlcmFuY2UgaXMgYWxzbyBwcm92aWRlZCwgYnV0CitpbnRlcnByZXRhdGlvbiBvZiB0aGlzIHNldHRpbmdzIGlzIHJlcXVpcmVkIGJ5IHRoZSBlbmQgYXBwbGljYXRpb24gYWNjb3JkaW5nIHRvCit0aGUgc3BlY2lmaWMgcGFydCBpbiB1c2UuCisKKy0tLS0tLS0tLQorICBGaWxlcworLS0tLS0tLS0tCisKK0VhY2ggZHBvdCBkZXZpY2Ugd2lsbCBoYXZlIGEgc2V0IG9mIGVlcHJvbSwgcmRhYywgYW5kIHRvbGVyYW5jZSBmaWxlcy4gIEhvdworbWFueSBkZXBlbmRzIG9uIHRoZSBhY3R1YWwgcGFydCB5b3UgaGF2ZSwgYXMgd2lsbCB0aGUgcmFuZ2Ugb2YgYWxsb3dlZCB2YWx1ZXMuCisKK1RoZSBlZXByb20gZmlsZXMgYXJlIHVzZWQgdG8gcHJvZ3JhbSB0aGUgc3RhcnR1cCB2YWx1ZSBvZiB0aGUgZGV2aWNlLgorCitUaGUgcmRhYyBmaWxlcyBhcmUgdXNlZCB0byBwcm9ncmFtIHRoZSBpbW1lZGlhdGUgdmFsdWUgb2YgdGhlIGRldmljZS4KKworVGhlIHRvbGVyYW5jZSBmaWxlcyBhcmUgdGhlIHJlYWQtb25seSBmYWN0b3J5IHByb2dyYW1tZWQgdG9sZXJhbmNlIHNldHRpbmdzCithbmQgbWF5IHZhcnkgZ3JlYXRseSBvbiBhIHBhcnQtYnktcGFydCBiYXNpcy4gIEZvciBleGFjdCBpbnRlcnByZXRhdGlvbiBvZgordGhpcyBmaWVsZCwgcGxlYXNlIGNvbnN1bHQgdGhlIGRhdGFzaGVldCBmb3IgeW91ciBwYXJ0LiAgVGhpcyBpcyBwcmVzZW50ZWQKK2FzIGEgaGV4IGZpbGUgZm9yIGVhc2llciBwYXJzaW5nLgorCistLS0tLS0tLS0tLQorICBFeGFtcGxlCistLS0tLS0tLS0tLQorCitMb2NhdGUgdGhlIGRldmljZSBpbiB5b3VyIHN5c2ZzIHRyZWUuICBUaGlzIGlzIHByb2JhYmx5IGVhc2llc3QgYnkgZ29pbmcgaW50bwordGhlIGNvbW1vbiBpMmMgZGlyZWN0b3J5IGFuZCBsb2NhdGluZyB0aGUgZGV2aWNlIGJ5IHRoZSBpMmMgc2xhdmUgYWRkcmVzcy4KKworCSMgbHMgL3N5cy9idXMvaTJjL2RldmljZXMvCisJMC0wMDIyICAwLTAwMjcgIDAtMDAyZgorCitTbyBhc3N1bWluZyB0aGUgZGV2aWNlIGluIHF1ZXN0aW9uIGlzIG9uIHRoZSBmaXJzdCBpMmMgYnVzIGFuZCBoYXMgdGhlIHNsYXZlCithZGRyZXNzIG9mIDB4MmYsIHdlIGRlc2NlbmQgKHVucmVsYXRlZCBzeXNmcyBlbnRyaWVzIGhhdmUgYmVlbiB0cmltbWVkKS4KKworCSMgbHMgL3N5cy9idXMvaTJjL2RldmljZXMvMC0wMDJmLworCWVlcHJvbTAgcmRhYzAgdG9sZXJhbmNlMAorCitZb3UgY2FuIHVzZSBzaW1wbGUgcmVhZHMvd3JpdGVzIHRvIGFjY2VzcyB0aGVzZSBmaWxlczoKKworCSMgY2QgL3N5cy9idXMvaTJjL2RldmljZXMvMC0wMDJmLworCisJIyBjYXQgZWVwcm9tMAorCTAKKwkjIGVjaG8gMTAgPiBlZXByb20wCisJIyBjYXQgZWVwcm9tMAorCTEwCisKKwkjIGNhdCByZGFjMAorCTUKKwkjIGVjaG8gMyA+IHJkYWMwCisJIyBjYXQgcmRhYzAKKwkzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9hcGRzOTkweC50eHQgYi9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9hcGRzOTkweC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU0ZDk1ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL2FwZHM5OTB4LnR4dApAQCAtMCwwICsxLDExMSBAQAorS2VybmVsIGRyaXZlciBhcGRzOTkweAorPT09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CitBdmFnbyBBUERTOTkwWAorCitEYXRhIHNoZWV0OgorTm90IGZyZWVseSBhdmFpbGFibGUKKworQXV0aG9yOgorU2FtdSBPbmthbG8gPHNhbXUucC5vbmthbG9Abm9raWEuY29tPgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KKworQVBEUzk5MHggaXMgYSBjb21iaW5lZCBhbWJpZW50IGxpZ2h0IGFuZCBwcm94aW1pdHkgc2Vuc29yLiBBTFMgYW5kIHByb3hpbWl0eQorZnVuY3Rpb25hbGl0eSBhcmUgaGlnaGx5IGNvbm5lY3RlZC4gQUxTIG1lYXN1cmVtZW50IHBhdGggbXVzdCBiZSBydW5uaW5nCit3aGlsZSB0aGUgcHJveGltaXR5IGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZC4KKworQUxTIHByb2R1Y2VzIHJhdyBtZWFzdXJlbWVudCB2YWx1ZXMgZm9yIHR3byBjaGFubmVsczogQ2xlYXIgY2hhbm5lbAorKGluZnJhcmVkICsgdmlzaWJsZSBsaWdodCkgYW5kIElSIG9ubHkuIEhvd2V2ZXIsIHRocmVzaG9sZCBjb21wYXJpc29ucyBoYXBwZW4KK3VzaW5nIGNsZWFyIGNoYW5uZWwgb25seS4gTHV4IHZhbHVlIGFuZCB0aGUgdGhyZXNob2xkIGxldmVsIG9uIHRoZSBIVworbWlnaHQgdmFyeSBxdWl0ZSBtdWNoIGRlcGVuZGluZyB0aGUgc3BlY3RydW0gb2YgdGhlIGxpZ2h0IHNvdXJjZS4KKworRHJpdmVyIG1ha2VzIG5lY2Vzc2FyeSBjb252ZXJzaW9ucyB0byBib3RoIGRpcmVjdGlvbnMgc28gdGhhdCB1c2VyIGhhbmRsZXMKK29ubHkgbHV4IHZhbHVlcy4gTHV4IHZhbHVlIGlzIGNhbGN1bGF0ZWQgdXNpbmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgYm90aAorY2hhbm5lbHMuIEhXIHRocmVzaG9sZCBsZXZlbCBpcyBjYWxjdWxhdGVkIGZyb20gdGhlIGdpdmVuIGx1eCB2YWx1ZSB0byBtYXRjaAord2l0aCBjdXJyZW50IHR5cGUgb2YgdGhlIGxpZ2h0bmluZy4gU29tZXRpbWVzIGluYWNjdXJhY3kgb2YgdGhlIGVzdGltYXRpb25zCitsZWFkIHRvIGZhbHNlIGludGVycnVwdCwgYnV0IHRoYXQgZG9lc24ndCBoYXJtLgorCitBTFMgY29udGFpbnMgNCBkaWZmZXJlbnQgZ2FpbiBzdGVwcy4gRHJpdmVyIGF1dG9tYXRpY2FsbHkKK3NlbGVjdHMgc3VpdGFibGUgZ2FpbiBzdGVwLiBBZnRlciBlYWNoIG1lYXN1cmVtZW50LCByZWxpYWJpbGl0eSBvZiB0aGUgcmVzdWx0cworaXMgZXN0aW1hdGVkIGFuZCBuZXcgbWVhc3VyZW1lbnQgaXMgdHJpZ2dlcmVkIGlmIG5lY2Vzc2FyeS4KKworUGxhdGZvcm0gZGF0YSBjYW4gcHJvdmlkZSB0dW5lZCB2YWx1ZXMgdG8gdGhlIGNvbnZlcnNpb24gZm9ybXVsYXMgaWYKK3ZhbHVlcyBhcmUga25vd24uIE90aGVyd2lzZSBwbGFpbiBzZW5zb3IgZGVmYXVsdCB2YWx1ZXMgYXJlIHVzZWQuCisKK1Byb3hpbWl0eSBzaWRlIGlzIGxpdHRsZSBiaXQgc2ltcGxlci4gVGhlcmUgaXMgbm8gbmVlZCBmb3IgY29tcGxleCBjb252ZXJzaW9ucy4KK0l0IHByb2R1Y2VzIGRpcmVjdGx5IHVzYWJsZSB2YWx1ZXMuCisKK0RyaXZlciBjb250cm9scyBjaGlwIG9wZXJhdGlvbmFsIHN0YXRlIHVzaW5nIHBtX3J1bnRpbWUgZnJhbWV3b3JrLgorVm9sdGFnZSByZWd1bGF0b3JzIGFyZSBjb250cm9sbGVkIGJhc2VkIG9uIGNoaXAgb3BlcmF0aW9uYWwgc3RhdGUuCisKK1NZU0ZTCistLS0tLQorCisKK2NoaXBfaWQKKwlSTyAtIHNob3dzIGRldGVjdGVkIGNoaXAgdHlwZSBhbmQgdmVyc2lvbgorCitwb3dlcl9zdGF0ZQorCVJXIC0gZW5hYmxlIC8gZGlzYWJsZSBjaGlwLiBVc2VzIGNvdW50aW5nIGxvZ2ljCisJICAgICAxIGVuYWJsZXMgdGhlIGNoaXAKKwkgICAgIDAgZGlzYWJsZXMgdGhlIGNoaXAKK2x1eDBfaW5wdXQKKwlSTyAtIG1lYXN1cmVkIGx1eCB2YWx1ZQorCSAgICAgc3lzZnNfbm90aWZ5IGNhbGxlZCB3aGVuIHRocmVzaG9sZCBpbnRlcnJ1cHQgb2NjdXJzCisKK2x1eDBfc2Vuc29yX3JhbmdlCisJUk8gLSBsdXgwX2lucHV0IG1heCB2YWx1ZS4gQWN0dWFsbHkgbmV2ZXIgcmVhY2hlcyBzaW5jZSBzZW5zb3IgdGVuZHMKKwkgICAgIHRvIHNhdHVyYXRlIG11Y2ggYmVmb3JlIHRoYXQuIFJlYWwgbWF4IHZhbHVlIHZhcmllcyBkZXBlbmRpbmcKKwkgICAgIG9uIHRoZSBsaWdodCBzcGVjdHJ1bSBldGMuCisKK2x1eDBfcmF0ZQorCVJXIC0gbWVhc3VyZW1lbnQgcmF0ZSBpbiBIegorCitsdXgwX3JhdGVfYXZhaWwKKwlSTyAtIHN1cHBvcnRlZCBtZWFzdXJlbWVudCByYXRlcworCitsdXgwX2NhbGlic2NhbGUKKwlSVyAtIGNhbGlicmF0aW9uIHZhbHVlLiBTZXQgdG8gbmV1dHJhbCB2YWx1ZSBieSBkZWZhdWx0LgorCSAgICAgT3V0cHV0IHJlc3VsdHMgYXJlIG11bHRpcGxpZWQgd2l0aCBjYWxpYnNjYWxlIC8gY2FsaWJzY2FsZV9kZWZhdWx0CisJICAgICB2YWx1ZS4KKworbHV4MF9jYWxpYnNjYWxlX2RlZmF1bHQKKwlSTyAtIG5ldXRyYWwgY2FsaWJyYXRpb24gdmFsdWUKKworbHV4MF90aHJlc2hfYWJvdmVfdmFsdWUKKwlSVyAtIEhJIGxldmVsIHRocmVzaG9sZCB2YWx1ZS4gQWxsIHJlc3VsdHMgYWJvdmUgdGhlIHZhbHVlCisJICAgICB0cmlncyBhbiBpbnRlcnJ1cHQuIDY1NTM1IChpLmUuIHNlbnNvcl9yYW5nZSkgZGlzYWJsZXMgdGhlIGFib3ZlCisJICAgICBpbnRlcnJ1cHQuCisKK2x1eDBfdGhyZXNoX2JlbG93X3ZhbHVlCisJUlcgLSBMTyBsZXZlbCB0aHJlc2hvbGQgdmFsdWUuIEFsbCByZXN1bHRzIGJlbG93IHRoZSB2YWx1ZQorCSAgICAgdHJpZ3MgYW4gaW50ZXJydXB0LiAwIGRpc2FibGVzIHRoZSBiZWxvdyBpbnRlcnJ1cHQuCisKK3Byb3gwX3JhdworCVJPIC0gbWVhc3VyZWQgcHJveGltaXR5IHZhbHVlCisJICAgICBzeXNmc19ub3RpZnkgY2FsbGVkIHdoZW4gdGhyZXNob2xkIGludGVycnVwdCBvY2N1cnMKKworcHJveDBfc2Vuc29yX3JhbmdlCisJUk8gLSBwcm94MF9yYXcgbWF4IHZhbHVlICgxMDIzKQorCitwcm94MF9yYXdfZW4KKwlSVyAtIGVuYWJsZSAvIGRpc2FibGUgcHJveGltaXR5IC0gdXNlcyBjb3VudGluZyBsb2dpYworCSAgICAgMSBlbmFibGVzIHRoZSBwcm94aW1pdHkKKwkgICAgIDAgZGlzYWJsZXMgdGhlIHByb3hpbWl0eQorCitwcm94MF9yZXBvcnRpbmdfbW9kZQorCVJXIC0gdHJpZ2dlciAvIHBlcmlvZGljLiBJbiAidHJpZ2dlciIgbW9kZSB0aGUgZHJpdmVyIHRlbGxzIHR3byBwb3NzaWJsZQorCSAgICAgdmFsdWVzOiAwIG9yIHByb3gwX3NlbnNvcl9yYW5nZSB2YWx1ZS4gMCBtZWFucyBubyBwcm94aW1pdHksCisJICAgICAxMDIzIG1lYW5zIHByb3hpbWl0eS4gVGhpcyBjYXVzZXMgbWluaW1hbCBudW1iZXIgb2YgaW50ZXJydXB0cy4KKwkgICAgIEluICJwZXJpb2RpYyIgbW9kZSB0aGUgZHJpdmVyIHJlcG9ydHMgYWxsIHZhbHVlcyBhYm92ZQorCSAgICAgcHJveDBfdGhyZXNoX2Fib3ZlLiBUaGlzIGNhdXNlcyBtb3JlIGludGVycnVwdHMsIGJ1dCBpdCBjYW4gZ2l2ZQorCSAgICAgX3JvdWdoXyBlc3RpbWF0ZSBhYm91dCB0aGUgZGlzdGFuY2UuCisKK3Byb3gwX3JlcG9ydGluZ19tb2RlX2F2YWlsCisJUk8gLSBhY2NlcHRlZCB2YWx1ZXMgdG8gcHJveDBfcmVwb3J0aW5nX21vZGUgKHRyaWdnZXIsIHBlcmlvZGljKQorCitwcm94MF90aHJlc2hfYWJvdmVfdmFsdWUKKwlSVyAtIHRocmVzaG9sZCBsZXZlbCB3aGljaCB0cmlncyBwcm94aW1pdHkgZXZlbnRzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9taXNjLWRldmljZXMvYmgxNzcwZ2xjLnR4dCBiL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL2JoMTc3MGdsYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q2NGMwMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL2JoMTc3MGdsYy50eHQKQEAgLTAsMCArMSwxMTYgQEAKK0tlcm5lbCBkcml2ZXIgYmgxNzcwZ2xjCis9PT09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CitST0hNIEJIMTc3MEdMQworT1NSQU0gU0ZINzc3MAorCitEYXRhIHNoZWV0OgorTm90IGZyZWVseSBhdmFpbGFibGUKKworQXV0aG9yOgorU2FtdSBPbmthbG8gPHNhbXUucC5vbmthbG9Abm9raWEuY29tPgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0KK0JIMTc3MEdMQyBhbmQgU0ZINzc3MCBhcmUgY29tYmluZWQgYW1iaWVudCBsaWdodCBhbmQgcHJveGltaXR5IHNlbnNvcnMuCitBTFMgYW5kIHByb3hpbWl0eSBwYXJ0cyBvcGVyYXRlcyBvbiB0aGVpciBvd24sIGJ1dCB0aGV5IHNoYXJlcyBjb21tb24gSTJDCitpbnRlcmZhY2UgYW5kIGludGVycnVwdCBsb2dpYy4gSW4gcHJpbmNpcGxlIHRoZXkgY2FuIHJ1biBvbiB0aGVpciBvd24sCitidXQgQUxTIHNpZGUgcmVzdWx0cyBhcmUgdXNlZCB0byBlc3RpbWF0ZSByZWxpYWJpbGl0eSBvZiB0aGUgcHJveGltaXR5IHNlbnNvci4KKworQUxTIHByb2R1Y2VzIDE2IGJpdCBsdXggdmFsdWVzLiBUaGUgY2hpcCBjb250YWlucyBpbnRlcnJ1cHQgbG9naWMgdG8gcHJvZHVjZQorbG93IGFuZCBoaWdoIHRocmVzaG9sZCBpbnRlcnJ1cHRzLgorCitQcm94aW1pdHkgcGFydCBjb250YWlucyBJUi1sZWQgZHJpdmVyIHVwIHRvIDMgSVIgbGVkcy4gVGhlIGNoaXAgbWVhc3VyZXMKK2Ftb3VudCBvZiByZWZsZWN0ZWQgSVIgbGlnaHQgYW5kIHByb2R1Y2VzIHByb3hpbWl0eSByZXN1bHQuIFJlc29sdXRpb24gaXMKKzggYml0LiBEcml2ZXIgc3VwcG9ydHMgb25seSBvbmUgY2hhbm5lbC4gRHJpdmVyIHVzZXMgQUxTIHJlc3VsdHMgdG8gZXN0aW1hdGUKK3JlbGlhYmlsaXR5IG9mIHRoZSBwcm94aW1pdHkgcmVzdWx0cy4gVGh1cyBBTFMgaXMgYWx3YXlzIHJ1bm5pbmcgd2hpbGUKK3Byb3hpbWl0eSBkZXRlY3Rpb24gaXMgbmVlZGVkLgorCitEcml2ZXIgdXNlcyB0aHJlc2hvbGQgaW50ZXJydXB0cyB0byBhdm9pZCBuZWVkIGZvciBwb2xsaW5nIHRoZSB2YWx1ZXMuCitQcm94aW1pdHkgbG93IGludGVycnVwdCBkb2Vzbid0IGV4aXN0cyBpbiB0aGUgY2hpcC4gVGhpcyBpcyBzaW11bGF0ZWQKK2J5IHVzaW5nIGEgZGVsYXllZCB3b3JrLiBBcyBsb25nIGFzIHRoZXJlIGlzIHByb3hpbWl0eSB0aHJlc2hvbGQgYWJvdmUKK2ludGVycnVwdHMgdGhlIGRlbGF5ZWQgd29yayBpcyBwdXNoZWQgZm9yd2FyZC4gU28sIHdoZW4gcHJveGltaXR5IGxldmVsIGdvZXMKK2JlbG93IHRoZSB0aHJlc2hvbGQgdmFsdWUsIHRoZXJlIGlzIG5vIGludGVycnVwdCBhbmQgdGhlIGRlbGF5ZWQgd29yayB3aWxsCitmaW5hbGx5IHJ1bi4gVGhpcyBpcyBoYW5kbGVkIGFzIG5vIHByb3hpbWl0eSBpbmRpY2F0aW9uLgorCitDaGlwIHN0YXRlIGlzIGNvbnRyb2xsZWQgdmlhIHJ1bnRpbWUgcG0gZnJhbWV3b3JrIHdoZW4gZW5hYmxlZCBpbiBjb25maWcuCisKK0NhbGlic2NhbGUgZmFjdG9yIGlzIHVzZWQgdG8gaGlkZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBjaGlwcy4gQnkgZGVmYXVsdAordmFsdWUgc2V0IHRvIG5ldXRyYWwgc3RhdGUgbWVhbmluZyBmYWN0b3Igb2YgMS4wMC4gVG8gZ2V0IHByb3BlciB2YWx1ZXMsCitjYWxpYnJhdGVkIHNvdXJjZSBvZiBsaWdodCBpcyBuZWVkZWQgYXMgYSByZWZlcmVuY2UuIENhbGlic2NhbGUgZmFjdG9yIGlzIHNldAorc28gdGhhdCBtZWFzdXJlbWVudCBwcm9kdWNlcyBhYm91dCB0aGUgZXhwZWN0ZWQgbHV4IHZhbHVlLgorCitTWVNGUworLS0tLS0KKworY2hpcF9pZAorCVJPIC0gc2hvd3MgZGV0ZWN0ZWQgY2hpcCB0eXBlIGFuZCB2ZXJzaW9uCisKK3Bvd2VyX3N0YXRlCisJUlcgLSBlbmFibGUgLyBkaXNhYmxlIGNoaXAuIFVzZXMgY291bnRpbmcgbG9naWMKKwkgICAgIDEgZW5hYmxlcyB0aGUgY2hpcAorCSAgICAgMCBkaXNhYmxlcyB0aGUgY2hpcAorCitsdXgwX2lucHV0CisJUk8gLSBtZWFzdXJlZCBsdXggdmFsdWUKKwkgICAgIHN5c2ZzX25vdGlmeSBjYWxsZWQgd2hlbiB0aHJlc2hvbGQgaW50ZXJydXB0IG9jY3VycworCitsdXgwX3NlbnNvcl9yYW5nZQorCVJPIC0gbHV4MF9pbnB1dCBtYXggdmFsdWUKKworbHV4MF9yYXRlCisJUlcgLSBtZWFzdXJlbWVudCByYXRlIGluIEh6CisKK2x1eDBfcmF0ZV9hdmFpbAorCVJPIC0gc3VwcG9ydGVkIG1lYXN1cmVtZW50IHJhdGVzCisKK2x1eDBfdGhyZXNoX2Fib3ZlX3ZhbHVlCisJUlcgLSBISSBsZXZlbCB0aHJlc2hvbGQgdmFsdWUuIEFsbCByZXN1bHRzIGFib3ZlIHRoZSB2YWx1ZQorCSAgICAgdHJpZ3MgYW4gaW50ZXJydXB0LiA2NTUzNSAoaS5lLiBzZW5zb3JfcmFuZ2UpIGRpc2FibGVzIHRoZSBhYm92ZQorCSAgICAgaW50ZXJydXB0LgorCitsdXgwX3RocmVzaF9iZWxvd192YWx1ZQorCVJXIC0gTE8gbGV2ZWwgdGhyZXNob2xkIHZhbHVlLiBBbGwgcmVzdWx0cyBiZWxvdyB0aGUgdmFsdWUKKwkgICAgIHRyaWdzIGFuIGludGVycnVwdC4gMCBkaXNhYmxlcyB0aGUgYmVsb3cgaW50ZXJydXB0LgorCitsdXgwX2NhbGlic2NhbGUKKwlSVyAtIGNhbGlicmF0aW9uIHZhbHVlLiBTZXQgdG8gbmV1dHJhbCB2YWx1ZSBieSBkZWZhdWx0LgorCSAgICAgT3V0cHV0IHJlc3VsdHMgYXJlIG11bHRpcGxpZWQgd2l0aCBjYWxpYnNjYWxlIC8gY2FsaWJzY2FsZV9kZWZhdWx0CisJICAgICB2YWx1ZS4KKworbHV4MF9jYWxpYnNjYWxlX2RlZmF1bHQKKwlSTyAtIG5ldXRyYWwgY2FsaWJyYXRpb24gdmFsdWUKKworcHJveDBfcmF3CisJUk8gLSBtZWFzdXJlZCBwcm94aW1pdHkgdmFsdWUKKwkgICAgIHN5c2ZzX25vdGlmeSBjYWxsZWQgd2hlbiB0aHJlc2hvbGQgaW50ZXJydXB0IG9jY3VycworCitwcm94MF9zZW5zb3JfcmFuZ2UKKwlSTyAtIHByb3gwX3JhdyBtYXggdmFsdWUKKworcHJveDBfcmF3X2VuCisJUlcgLSBlbmFibGUgLyBkaXNhYmxlIHByb3hpbWl0eSAtIHVzZXMgY291bnRpbmcgbG9naWMKKwkgICAgIDEgZW5hYmxlcyB0aGUgcHJveGltaXR5CisJICAgICAwIGRpc2FibGVzIHRoZSBwcm94aW1pdHkKKworcHJveDBfdGhyZXNoX2Fib3ZlX2NvdW50CisJUlcgLSBudW1iZXIgb2YgcHJveGltaXR5IGludGVycnVwdHMgbmVlZGVkIGJlZm9yZSB0cmlnZ2VyaW5nIHRoZSBldmVudAorCitwcm94MF9yYXRlX2Fib3ZlCisJUlcgLSBNZWFzdXJlbWVudCByYXRlIChpbiBIeikgd2hlbiB0aGUgbGV2ZWwgaXMgYWJvdmUgdGhyZXNob2xkCisJICAgICBpLmUuIHdoZW4gcHJveGltaXR5IG9uIGhhcyBiZWVuIHJlcG9ydGVkLgorCitwcm94MF9yYXRlX2JlbG93CisJUlcgLSBNZWFzdXJlbWVudCByYXRlIChpbiBIeikgd2hlbiB0aGUgbGV2ZWwgaXMgYmVsb3cgdGhyZXNob2xkCisJICAgICBpLmUuIHdoZW4gcHJveGltaXR5IG9mZiBoYXMgYmVlbiByZXBvcnRlZC4KKworcHJveDBfcmF0ZV9hdmFpbAorCVJPIC0gU3VwcG9ydGVkIHByb3hpbWl0eSBtZWFzdXJlbWVudCByYXRlcyBpbiBIegorCitwcm94MF90aHJlc2hfYWJvdmUwX3ZhbHVlCisJUlcgLSB0aHJlc2hvbGQgbGV2ZWwgd2hpY2ggdHJpZ3MgcHJveGltaXR5IGV2ZW50cy4KKwkgICAgIEZpbHRlcmVkIGJ5IHBlcnNpc3RlbmNlIGZpbHRlciAocHJveDBfdGhyZXNoX2Fib3ZlX2NvdW50KQorCitwcm94MF90aHJlc2hfYWJvdmUxX3ZhbHVlCisJUlcgLSB0aHJlc2hvbGQgbGV2ZWwgd2hpY2ggdHJpZ3MgZXZlbnQgaW1tZWRpYXRlbHkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL2MycG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9jMnBvcnQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhNzM0NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9jMnBvcnQudHh0CkBAIC0wLDAgKzEsOTAgQEAKKwkJCUMyIHBvcnQgc3VwcG9ydAorCQkJLS0tLS0tLS0tLS0tLS0tCisKKyhDKSBDb3B5cmlnaHQgMjAwNyBSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBlbm5lZW5uZS5jb20+CisKK1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CitpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQordGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyhhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKK1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKK01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKworCitPdmVydmlldworLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgaW1wbGVtZW50cyB0aGUgc3VwcG9ydCBmb3IgTGludXggb2YgU2lsaWNvbiBMYWJzIChTaWxhYnMpCitDMiBJbnRlcmZhY2UgdXNlZCBmb3IgaW4tc3lzdGVtIHByb2dyYW1taW5nIG9mIG1pY3JvIGNvbnRyb2xsZXJzLgorCitCeSB1c2luZyB0aGlzIGRyaXZlciB5b3UgY2FuIHJlcHJvZ3JhbSB0aGUgaW4tc3lzdGVtIGZsYXNoIHdpdGhvdXQgRUMyCitvciBFQzMgZGVidWcgYWRhcHRlci4gVGhpcyBzb2x1dGlvbiBpcyBhbHNvIHVzZWZ1bCBpbiB0aG9zZSBzeXN0ZW1zCit3aGVyZSB0aGUgbWljcm8gY29udHJvbGxlciBpcyBjb25uZWN0ZWQgdmlhIHNwZWNpYWwgR1BJT3MgcGlucy4KKworUmVmZXJlbmNlcworLS0tLS0tLS0tLQorCitUaGUgQzIgSW50ZXJmYWNlIG1haW4gcmVmZXJlbmNlcyBhcmUgYXQgKGh0dHA6Ly93d3cuc2lsYWJzLmNvbSkKK1NpbGljb24gTGFib3JhdG9yaWVzIHNpdGVdLCBzZWU6CisKKy0gQU4xMjc6IEZMQVNIIFByb2dyYW1taW5nIHZpYSB0aGUgQzIgSW50ZXJmYWNlIGF0CitodHRwOi8vd3d3LnNpbGFicy5jb20vU3VwcG9ydCBEb2N1bWVudHMvVGVjaG5pY2FsRG9jcy9hbjEyNy5wZGYgCisKKy0gQzIgU3BlY2lmaWNhdGlvbiBhdAoraHR0cDovL3d3dy5zaWxhYnMuY29tL3BhZ2VzL0Rvd25sb2FkRG9jLmFzcHg/RklMRVVSTD1TdXBwb3J0JTIwRG9jdW1lbnRzL1RlY2huaWNhbERvY3MvYW4xMjcucGRmJnNyYz1TZWFyY2hSZXN1bHRzCisKK2hvd2V2ZXIgaXQgaW1wbGVtZW50cyBhIHR3byB3aXJlIHNlcmlhbCBjb21tdW5pY2F0aW9uIHByb3RvY29sIChiaXQKK2JhbmdpbmcpIGRlc2lnbmVkIHRvIGVuYWJsZSBpbi1zeXN0ZW0gcHJvZ3JhbW1pbmcsIGRlYnVnZ2luZywgYW5kCitib3VuZGFyeS1zY2FuIHRlc3Rpbmcgb24gbG93IHBpbi1jb3VudCBTaWxpY29uIExhYnMgZGV2aWNlcy4gQ3VycmVudGx5Cit0aGlzIGNvZGUgc3VwcG9ydHMgb25seSBmbGFzaCBwcm9ncmFtbWluZyBidXQgZXh0ZW5zaW9ucyBhcmUgZWFzeSB0bworYWRkLgorCitVc2luZyB0aGUgZHJpdmVyCistLS0tLS0tLS0tLS0tLS0tCisKK09uY2UgdGhlIGRyaXZlciBpcyBsb2FkZWQgeW91IGNhbiB1c2Ugc3lzZnMgc3VwcG9ydCB0byBnZXQgQzJwb3J0J3MKK2luZm8gb3IgcmVhZC93cml0ZSBpbi1zeXN0ZW0gZmxhc2guCisKKyMgbHMgL3N5cy9jbGFzcy9jMnBvcnQvYzJwb3J0MC8KK2FjY2VzcyAgICAgICAgICAgIGZsYXNoX2Jsb2NrX3NpemUgIGZsYXNoX2VyYXNlICAgICAgIHJldl9pZAorZGV2X2lkICAgICAgICAgICAgZmxhc2hfYmxvY2tzX251bSAgZmxhc2hfc2l6ZSAgICAgICAgc3Vic3lzdGVtLworZmxhc2hfYWNjZXNzICAgICAgZmxhc2hfZGF0YSAgICAgICAgcmVzZXQgICAgICAgICAgICAgdWV2ZW50CisKK0luaXRpYWxseSB0aGUgQzJwb3J0IGFjY2VzcyBpcyBkaXNhYmxlZCBzaW5jZSB5b3UgaGFyZHdhcmUgbWF5IGhhdmUKK3N1Y2ggbGluZXMgbXVsdGlwbGV4ZWQgd2l0aCBvdGhlciBkZXZpY2VzIHNvLCB0byBnZXQgYWNjZXNzIHRvIHRoZQorQzJwb3J0LCB5b3UgbmVlZCB0aGUgY29tbWFuZDoKKworIyBlY2hvIDEgPiAvc3lzL2NsYXNzL2MycG9ydC9jMnBvcnQwL2FjY2VzcworCithZnRlciB0aGF0IHlvdSBzaG91bGQgcmVhZCB0aGUgZGV2aWNlIElEIGFuZCByZXZpc2lvbiBJRCBvZiB0aGUKK2Nvbm5lY3RlZCBtaWNybyBjb250cm9sbGVyOgorCisjIGNhdCAvc3lzL2NsYXNzL2MycG9ydC9jMnBvcnQwL2Rldl9pZAorOAorIyBjYXQgL3N5cy9jbGFzcy9jMnBvcnQvYzJwb3J0MC9yZXZfaWQKKzEKKworSG93ZXZlciwgZm9yIHNlY3VyaXR5IHJlYXNvbnMsIHRoZSBpbi1zeXN0ZW0gZmxhc2ggYWNjZXNzIGluIG5vdAorZW5hYmxlZCB5ZXQsIHRvIGRvIHNvIHlvdSBuZWVkIHRoZSBjb21tYW5kOgorCisjIGVjaG8gMSA+IC9zeXMvY2xhc3MvYzJwb3J0L2MycG9ydDAvZmxhc2hfYWNjZXNzCisKK0FmdGVyIHRoYXQgeW91IGNhbiByZWFkIHRoZSB3aG9sZSBmbGFzaDoKKworIyBjYXQgL3N5cy9jbGFzcy9jMnBvcnQvYzJwb3J0MC9mbGFzaF9kYXRhID4gaW1hZ2UKKworZXJhc2UgaXQ6CisKKyMgZWNobyAxID4gL3N5cy9jbGFzcy9jMnBvcnQvYzJwb3J0MC9mbGFzaF9lcmFzZQorCithbmQgd3JpdGUgaXQ6CisKKyMgY2F0IGltYWdlID4gL3N5cy9jbGFzcy9jMnBvcnQvYzJwb3J0MC9mbGFzaF9kYXRhCisKK2FmdGVyIHdyaXRpbmcgeW91IGhhdmUgdG8gcmVzZXQgdGhlIGRldmljZSB0byBleGVjdXRlIHRoZSBuZXcgY29kZToKKworIyBlY2hvIDEgPiAvc3lzL2NsYXNzL2MycG9ydC9jMnBvcnQwL3Jlc2V0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9lZXByb20gYi9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9lZXByb20KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE2OTIwMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL2VlcHJvbQpAQCAtMCwwICsxLDk2IEBACitLZXJuZWwgZHJpdmVyIGVlcHJvbQorPT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIEFueSBFRVBST00gY2hpcCBpbiB0aGUgZGVzaWduYXRlZCBhZGRyZXNzIHJhbmdlCisgICAgUHJlZml4OiAnZWVwcm9tJworICAgIEFkZHJlc3NlcyBzY2FubmVkOiBJMkMgMHg1MCAtIDB4NTcKKyAgICBEYXRhc2hlZXRzOiBQdWJsaWNseSBhdmFpbGFibGUgZnJvbToKKyAgICAgICAgICAgICAgICBBdG1lbCAod3d3LmF0bWVsLmNvbSksCisgICAgICAgICAgICAgICAgQ2F0YWx5c3QgKHd3dy5jYXRzZW1pLmNvbSksCisgICAgICAgICAgICAgICAgRmFpcmNoaWxkICh3d3cuZmFpcmNoaWxkc2VtaS5jb20pLAorICAgICAgICAgICAgICAgIE1pY3JvY2hpcCAod3d3Lm1pY3JvY2hpcC5jb20pLAorICAgICAgICAgICAgICAgIFBoaWxpcHMgKHd3dy5zZW1pY29uZHVjdG9yLnBoaWxpcHMuY29tKSwKKyAgICAgICAgICAgICAgICBSb2htICh3d3cucm9obS5jb20pLAorICAgICAgICAgICAgICAgIFNUICh3d3cuc3QuY29tKSwKKyAgICAgICAgICAgICAgICBYaWNvciAod3d3LnhpY29yLmNvbSksCisgICAgICAgICAgICAgICAgYW5kIG90aGVycy4KKworICAgICAgICBDaGlwICAgICBTaXplIChiaXRzKSAgICBBZGRyZXNzCisgICAgICAgIDI0QzAxICAgICAxSyAgICAgICAgICAgIDB4NTAgKHNoYWRvd3MgYXQgMHg1MSAtIDB4NTcpCisgICAgICAgIDI0QzAxQSAgICAxSyAgICAgICAgICAgIDB4NTAgLSAweDU3IChUeXBpY2FsIGRldmljZSBvbiBESU1NcykKKyAgICAgICAgMjRDMDIgICAgIDJLICAgICAgICAgICAgMHg1MCAtIDB4NTcKKyAgICAgICAgMjRDMDQgICAgIDRLICAgICAgICAgICAgMHg1MCwgMHg1MiwgMHg1NCwgMHg1NgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkaXRpb25hbCBkYXRhIGF0IDB4NTEsIDB4NTMsIDB4NTUsIDB4NTcpCisgICAgICAgIDI0QzA4ICAgICA4SyAgICAgICAgICAgIDB4NTAsIDB4NTQgKGFkZGl0aW9uYWwgZGF0YSBhdCAweDUxLCAweDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDUzLCAweDU1LCAweDU2LCAweDU3KQorICAgICAgICAyNEMxNiAgICAxNksgICAgICAgICAgICAweDUwIChhZGRpdGlvbmFsIGRhdGEgYXQgMHg1MSAtIDB4NTcpCisgICAgICAgIFNvbnkgICAgICAySyAgICAgICAgICAgIDB4NTcKKworICAgICAgICBBdG1lbCAgICAgMzRDMDJCICAySyAgICAweDUwIC0gMHg1NywgU1cgd3JpdGUgcHJvdGVjdCBhdCAweDMwLTM3CisgICAgICAgIENhdGFseXN0ICAzNEZDMDIgIDJLICAgIDB4NTAgLSAweDU3LCBTVyB3cml0ZSBwcm90ZWN0IGF0IDB4MzAtMzcKKyAgICAgICAgQ2F0YWx5c3QgIDM0UkMwMiAgMksgICAgMHg1MCAtIDB4NTcsIFNXIHdyaXRlIHByb3RlY3QgYXQgMHgzMC0zNworICAgICAgICBGYWlyY2hpbGQgMzRXMDIgICAySyAgICAweDUwIC0gMHg1NywgU1cgd3JpdGUgcHJvdGVjdCBhdCAweDMwLTM3CisgICAgICAgIE1pY3JvY2hpcCAyNEFBNTIgIDJLICAgIDB4NTAgLSAweDU3LCBTVyB3cml0ZSBwcm90ZWN0IGF0IDB4MzAtMzcKKyAgICAgICAgU1QgICAgICAgIE0zNEMwMiAgMksgICAgMHg1MCAtIDB4NTcsIFNXIHdyaXRlIHByb3RlY3QgYXQgMHgzMC0zNworCisKK0F1dGhvcnM6CisgICAgICAgIEZyb2RvIExvb2lqYWFyZCA8ZnJvZG9sQGRkcy5ubD4sCisgICAgICAgIFBoaWxpcCBFZGVsYnJvY2sgPHBoaWxAbmV0cm9lZGdlLmNvbT4sCisgICAgICAgIEplYW4gRGVsdmFyZSA8amRlbHZhcmVAc3VzZS5kZT4sCisgICAgICAgIEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ0Brcm9haC5jb20+LAorICAgICAgICBJQk0gQ29ycC4KKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgaXMgYSBzaW1wbGUgRUVQUk9NIG1vZHVsZSBtZWFudCB0byBlbmFibGUgcmVhZGluZyB0aGUgZmlyc3QgMjU2IGJ5dGVzCitvZiBhbiBFRVBST00gKG9uIGEgU0RSQU0gRElNTSBmb3IgZXhhbXBsZSkuIEhvd2V2ZXIsIGl0IHdpbGwgYWNjZXNzIHNlcmlhbAorRUVQUk9NcyBvbiBhbnkgSTJDIGFkYXB0ZXIuIFRoZSBzdXBwb3J0ZWQgZGV2aWNlcyBhcmUgZ2VuZXJpY2FsbHkgY2FsbGVkCisyNEN4eCwgYW5kIGFyZSBsaXN0ZWQgYWJvdmU7IGhvd2V2ZXIgdGhlIG51bWJlcmluZyBmb3IgdGhlc2UKK2luZHVzdHJ5LXN0YW5kYXJkIGRldmljZXMgbWF5IHZhcnkgYnkgbWFudWZhY3R1cmVyLgorCitUaGlzIG1vZHVsZSB3YXMgYSBwcm9ncmFtbWluZyBleGVyY2lzZSB0byBnZXQgdXNlZCB0byB0aGUgbmV3IHByb2plY3QKK29yZ2FuaXphdGlvbiBsYWlkIG91dCBieSBGcm9kbywgYnV0IGl0IHNob3VsZCBiZSBhdCBsZWFzdCBjb21wbGV0ZWx5CitlZmZlY3RpdmUgZm9yIGRlY29kaW5nIHRoZSBjb250ZW50cyBvZiBFRVBST01zIG9uIERJTU1zLgorCitESU1NUyB3aWxsIHR5cGljYWxseSBjb250YWluIGEgMjRDMDFBIG9yIDI0QzAyLCBvciB0aGUgMzRDMDIgdmFyaWFudHMuCitUaGUgb3RoZXIgZGV2aWNlcyB3aWxsIG5vdCBiZSBmb3VuZCBvbiBhIERJTU0gYmVjYXVzZSB0aGV5IHJlc3BvbmQgdG8gbW9yZQordGhhbiBvbmUgYWRkcmVzcy4KKworRERDIE1vbml0b3JzIG1heSBjb250YWluIGFueSBkZXZpY2UuIE9mdGVuIGEgMjRDMDEsIHdoaWNoIHJlc3BvbmRzIHRvIGFsbCA4CithZGRyZXNzZXMsIGlzIGZvdW5kLgorCitSZWNlbnQgU29ueSBWYWlvIGxhcHRvcHMgaGF2ZSBhbiBFRVBST00gYXQgMHg1Ny4gV2UgY291bGRuJ3QgZ2V0IHRoZQorc3BlY2lmaWNhdGlvbiwgc28gaXQgaXMgZ3Vlc3Mgd29yayBhbmQgZmFyIGZyb20gYmVpbmcgY29tcGxldGUuCisKK1RoZSBNaWNyb2NoaXAgMjRBQTUyLzI0TENTNTIsIFNUIE0zNEMwMiwgYW5kIG90aGVycyBzdXBwb3J0IGFuIGFkZGl0aW9uYWwKK3NvZnR3YXJlIHdyaXRlIHByb3RlY3QgcmVnaXN0ZXIgYXQgMHgzMCAtIDB4MzcgKDB4MjAgbGVzcyB0aGFuIHRoZSBtZW1vcnkKK2xvY2F0aW9uKS4gVGhlIGNoaXAgcmVzcG9uZHMgdG8gIndyaXRlIHF1aWNrIiBkZXRlY3Rpb24gYXQgdGhpcyBhZGRyZXNzIGJ1dAorZG9lcyBub3QgcmVzcG9uZCB0byBieXRlIHJlYWRzLiBJZiB0aGlzIHJlZ2lzdGVyIGlzIHByZXNlbnQsIHRoZSBsb3dlciAxMjgKK2J5dGVzIG9mIHRoZSBtZW1vcnkgYXJyYXkgYXJlIG5vdCB3cml0ZSBwcm90ZWN0ZWQuIEFueSBieXRlIGRhdGEgd3JpdGUgdG8KK3RoaXMgYWRkcmVzcyB3aWxsIHdyaXRlIHByb3RlY3QgdGhlIG1lbW9yeSBhcnJheSBwZXJtYW5lbnRseSwgYW5kIHRoZQorZGV2aWNlIHdpbGwgbm8gbG9uZ2VyIHJlc3BvbmQgYXQgdGhlIDB4MzAtMzcgYWRkcmVzcy4gVGhlIGVlcHJvbSBkcml2ZXIKK2RvZXMgbm90IHN1cHBvcnQgdGhpcyByZWdpc3Rlci4KKworTGFja2luZyBmdW5jdGlvbmFsaXR5OgorCisqIEZ1bGwgc3VwcG9ydCBmb3IgbGFyZ2VyIGRldmljZXMgKDI0QzA0LCAyNEMwOCwgMjRDMTYpLiBUaGVzZSBhcmUgbm90Cit0eXBpY2FsbHkgZm91bmQgb24gYSBQQy4gVGhlc2UgZGV2aWNlcyB3aWxsIGFwcGVhciBhcyBzZXBhcmF0ZSBkZXZpY2VzIGF0CittdWx0aXBsZSBhZGRyZXNzZXMuCisKKyogU3VwcG9ydCBmb3IgcmVhbGx5IGxhcmdlIGRldmljZXMgKDI0QzMyLCAyNEM2NCwgMjRDMTI4LCAyNEMyNTYsIDI0QzUxMikuCitUaGVzZSBkZXZpY2VzIHJlcXVpcmUgdHdvLWJ5dGUgYWRkcmVzcyBmaWVsZHMgYW5kIGFyZSBub3Qgc3VwcG9ydGVkLgorCisqIEVuYWJsZSBXcml0aW5nLiBBZ2Fpbiwgbm8gdGVjaG5pY2FsIHJlYXNvbiB3aHkgbm90LCBidXQgbWFraW5nIGl0IGVhc3kKK3RvIGNoYW5nZSB0aGUgY29udGVudHMgb2YgdGhlIEVFUFJPTXMgKG9uIERJTU1zIGFueXdheSkgYWxzbyBtYWtlcyBpdCBlYXN5Cit0byBkaXNhYmxlIHRoZSBESU1NcyAocG90ZW50aWFsbHkgcHJldmVudGluZyB0aGUgY29tcHV0ZXIgZnJvbSBib290aW5nKQordW50aWwgdGhlIHZhbHVlcyBhcmUgcmVzdG9yZWQgc29tZWhvdy4KKworVXNlOgorCitBZnRlciBpbnNlcnRpbmcgdGhlIG1vZHVsZSAoYW5kIGFueSBvdGhlciByZXF1aXJlZCBTTUJ1cy9pMmMgbW9kdWxlcyksIHlvdQorc2hvdWxkIGhhdmUgc29tZSBFRVBST00gZGlyZWN0b3JpZXMgaW4gL3N5cy9idXMvaTJjL2RldmljZXMvKiBvZiBuYW1lcyBzdWNoCithcyAiMC0wMDUwIi4gSW5zaWRlIGVhY2ggb2YgdGhlc2UgaXMgYSBzZXJpZXMgb2YgZmlsZXMsIHRoZSBlZXByb20gZmlsZQorY29udGFpbnMgdGhlIGJpbmFyeSBkYXRhIGZyb20gRUVQUk9NLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9taXNjLWRldmljZXMvaWNzOTMyczQwMSBiL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL2ljczkzMnM0MDEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRhYzY3ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL2ljczkzMnM0MDEKQEAgLTAsMCArMSwzMSBAQAorS2VybmVsIGRyaXZlciBpY3M5MzJzNDAxCis9PT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBJRFQgSUNTOTMyUzQwMQorICAgIFByZWZpeDogJ2ljczkzMnM0MDEnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IEkyQyAweDY5CisgICAgRGF0YXNoZWV0OiBQdWJsaWNseSBhdmFpbGFibGUgYXQgdGhlIElEVCB3ZWJzaXRlCisKK0F1dGhvcjogRGFycmljayBKLiBXb25nCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBJRFQgSUNTOTMyUzQwMSBjaGlwIGZhbWlseS4KKworVGhpcyBjaGlwIGhhcyA0IGNsb2NrIG91dHB1dHMtLWEgYmFzZSBjbG9jayBmb3IgdGhlIENQVSAod2hpY2ggaXMgbGlrZWx5CittdWx0aXBsaWVkIHRvIGdldCB0aGUgcmVhbCBDUFUgY2xvY2spLCBhIHN5c3RlbSBjbG9jaywgYSBQQ0kgY2xvY2ssIGEgVVNCCitjbG9jaywgYW5kIGEgcmVmZXJlbmNlIGNsb2NrLiAgVGhlIGRyaXZlciByZXBvcnRzIHNlbGVjdGVkIGFuZCBhY3R1YWwKK2ZyZXF1ZW5jeS4gIElmIHNwcmVhZCBzcGVjdHJ1bSBtb2RlIGlzIGVuYWJsZWQsIHRoZSBkcml2ZXIgYWxzbyByZXBvcnRzIGJ5IHdoYXQKK3BlcmNlbnQgdGhlIGNsb2NrIHNpZ25hbCBpcyBiZWluZyBzcHJlYWQsIHdoaWNoIHNob3VsZCBiZSBiZXR3ZWVuIDAgYW5kIC0wLjUlLgorQWxsIGZyZXF1ZW5jaWVzIGFyZSByZXBvcnRlZCBpbiBLSHouCisKK1RoZSBJQ1M5MzJTNDAxIG1vbml0b3JzIGFsbCBpbnB1dHMgY29udGludW91c2x5LiBUaGUgZHJpdmVyIHdpbGwgbm90IHJlYWQKK3RoZSByZWdpc3RlcnMgbW9yZSBvZnRlbiB0aGFuIG9uY2UgZXZlcnkgb3RoZXIgc2Vjb25kLgorCitTcGVjaWFsIEZlYXR1cmVzCistLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBjbG9ja3MgY291bGQgYmUgcmVwcm9ncmFtbWVkIHRvIGluY3JlYXNlIHN5c3RlbSBzcGVlZC4gIEkgd2lsbCBub3QgaGVscCB5b3UKK2RvIHRoaXMsIGFzIHlvdSByaXNrIGRhbWFnaW5nIHlvdXIgc3lzdGVtIQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9taXNjLWRldmljZXMvaXNsMjkwMDMgYi9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9pc2wyOTAwMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGI5NTJmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9taXNjLWRldmljZXMvaXNsMjkwMDMKQEAgLTAsMCArMSw2MiBAQAorS2VybmVsIGRyaXZlciBpc2wyOTAwMworPT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyogSW50ZXJzaWwgSVNMMjkwMDMKK1ByZWZpeDogJ2lzbDI5MDAzJworQWRkcmVzc2VzIHNjYW5uZWQ6IG5vbmUKK0RhdGFzaGVldDoKK2h0dHA6Ly93d3cuaW50ZXJzaWwuY29tL2RhdGEvZm4vZm43NDY0LnBkZgorCitBdXRob3I6IERhbmllbCBNYWNrIDxkYW5pZWxAY2FpYXEuZGU+CisKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCitUaGUgSVNMMjkwMDMgaXMgYW4gaW50ZWdyYXRlZCBsaWdodCBzZW5zb3Igd2l0aCBhIDE2LWJpdCBpbnRlZ3JhdGluZyB0eXBlCitBREMsIEkyQyB1c2VyIHByb2dyYW1tYWJsZSBsdXggcmFuZ2Ugc2VsZWN0IGZvciBvcHRpbWl6ZWQgY291bnRzL2x1eCwgYW5kCitJMkMgbXVsdGktZnVuY3Rpb24gY29udHJvbCBhbmQgbW9uaXRvcmluZyBjYXBhYmlsaXRpZXMuIFRoZSBpbnRlcm5hbCBBREMKK3Byb3ZpZGVzIDE2LWJpdCByZXNvbHV0aW9uIHdoaWxlIHJlamVjdGluZyA1MEh6IGFuZCA2MEh6IGZsaWNrZXIgY2F1c2VkIGJ5CithcnRpZmljaWFsIGxpZ2h0IHNvdXJjZXMuCisKK1RoZSBkcml2ZXIgYWxsb3dzIHRvIHNldCB0aGUgbHV4IHJhbmdlLCB0aGUgYml0IHJlc29sdXRpb24sIHRoZSBvcGVyYXRpb25hbAorbW9kZSAoc2VlIGJlbG93KSBhbmQgdGhlIHBvd2VyIHN0YXRlIG9mIGRldmljZSBhbmQgY2FuIHJlYWQgdGhlIGN1cnJlbnQgbHV4Cit2YWx1ZSwgb2YgY291cnNlLgorCisKK0RldGVjdGlvbgorLS0tLS0tLS0tCisKK1RoZSBJU0wyOTAwMyBkb2VzIG5vdCBoYXZlIGFuIElEIHJlZ2lzdGVyIHdoaWNoIGNvdWxkIGJlIHVzZWQgdG8gaWRlbnRpZnkKK2l0LCBzbyB0aGUgZGV0ZWN0aW9uIHJvdXRpbmUgd2lsbCBqdXN0IHRyeSB0byByZWFkIGZyb20gdGhlIGNvbmZpZ3VyZWQgSTJDCithZGRyZXNzIGFuZCBjb25zaWRlciB0aGUgZGV2aWNlIHRvIGJlIHByZXNlbnQgYXMgc29vbiBhcyBpdCBBQ0tzIHRoZQordHJhbnNmZXIuCisKKworU3lzZnMgZW50cmllcworLS0tLS0tLS0tLS0tLQorCityYW5nZToKKwkwOiAwIGx1eCB0byAxMDAwIGx1eCAoZGVmYXVsdCkKKwkxOiAwIGx1eCB0byA0MDAwIGx1eAorCTI6IDAgbHV4IHRvIDE2LDAwMCBsdXgKKwkzOiAwIGx1eCB0byA2NCwwMDAgbHV4CisKK3Jlc29sdXRpb246CisJMDogMl4xNiBjeWNsZXMgKGRlZmF1bHQpCisJMTogMl4xMiBjeWNsZXMKKwkyOiAyXjggY3ljbGVzCisJMzogMl40IGN5Y2xlcworCittb2RlOgorCTA6IGRpb2RlMSdzIGN1cnJlbnQgKHVuc2lnbmVkIDE2Yml0KSAoZGVmYXVsdCkKKwkxOiBkaW9kZTEncyBjdXJyZW50ICh1bnNpZ25lZCAxNmJpdCkKKwkyOiBkaWZmZXJlbmNlIGJldHdlZW4gZGlvZGVzIChsMSAtIGwyLCBzaWduZWQgMTViaXQpCisKK3Bvd2VyX3N0YXRlOgorCTA6IGRldmljZSBpcyBkaXNhYmxlZCAoZGVmYXVsdCkKKwkxOiBkZXZpY2UgaXMgZW5hYmxlZAorCitsdXggKHJlYWQgb25seSk6CisJcmV0dXJucyB0aGUgdmFsdWUgZnJvbSB0aGUgbGFzdCBzZW5zb3IgcmVhZGluZworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9saXMzbHYwMmQgYi9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9saXMzbHYwMmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg5OTYwYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL2xpczNsdjAyZApAQCAtMCwwICsxLDkzIEBACitLZXJuZWwgZHJpdmVyIGxpczNsdjAyZAorPT09PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorCisgICogU1RNaWNyb2VsZWN0cm9uaWNzIExJUzNMVjAyREwsIExJUzNMVjAyRFEgKDEyIGJpdHMgcHJlY2lzaW9uKQorICAqIFNUTWljcm9lbGVjdHJvbmljcyBMSVMzMDJETCwgTElTM0wwMkRRLCBMSVMzMzFETCAoOCBiaXRzKSBhbmQKKyAgICBMSVMzMzFETEggKDE2IGJpdHMpCisKK0F1dGhvcnM6CisgICAgICAgIFlhbiBCdXJtYW4gPGJ1cm1hbi55YW5AZ21haWwuY29tPgorCUVyaWMgUGllbCA8ZXJpYy5waWVsQHRyZW1wbGluLXV0Yy5uZXQ+CisKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIHByb3ZpZGVzIHN1cHBvcnQgZm9yIHRoZSBhY2NlbGVyb21ldGVyIGZvdW5kIGluIHZhcmlvdXMgSFAgbGFwdG9wcworc3BvcnRpbmcgdGhlIGZlYXR1cmUgb2ZmaWNpYWxseSBjYWxsZWQgIkhQIE1vYmlsZSBEYXRhIFByb3RlY3Rpb24gU3lzdGVtIDNEIiBvcgorIkhQIDNEIERyaXZlR3VhcmQiLiBJdCBkZXRlY3RzIGF1dG9tYXRpY2FsbHkgbGFwdG9wcyB3aXRoIHRoaXMgc2Vuc29yLiBLbm93bgorbW9kZWxzIChmdWxsIGxpc3QgY2FuIGJlIGZvdW5kIGluIGRyaXZlcnMvcGxhdGZvcm0veDg2L2hwX2FjY2VsLmMpIHdpbGwgaGF2ZQordGhlaXIgYXhpcyBhdXRvbWF0aWNhbGx5IG9yaWVudGVkIG9uIHN0YW5kYXJkIHdheSAoZWc6IHlvdSBjYW4gZGlyZWN0bHkgcGxheQorbmV2ZXJiYWxsKS4gVGhlIGFjY2VsZXJvbWV0ZXIgZGF0YSBpcyByZWFkYWJsZSB2aWEKKy9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9saXMzbHYwMmQuIFJlcG9ydGVkIHZhbHVlcyBhcmUgc2NhbGVkCit0byBtZyB2YWx1ZXMgKDEvMTAwMHRoIG9mIGVhcnRoIGdyYXZpdHkpLgorCitTeXNmcyBhdHRyaWJ1dGVzIHVuZGVyIC9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9saXMzbHYwMmQvOgorcG9zaXRpb24gLSAzRCBwb3NpdGlvbiB0aGF0IHRoZSBhY2NlbGVyb21ldGVyIHJlcG9ydHMuIEZvcm1hdDogIih4LHkseikiCityYXRlIC0gcmVhZCByZXBvcnRzIHRoZSBzYW1wbGluZyByYXRlIG9mIHRoZSBhY2NlbGVyb21ldGVyIGRldmljZSBpbiBIWi4KKwl3cml0ZSBjaGFuZ2VzIHNhbXBsaW5nIHJhdGUgb2YgdGhlIGFjY2VsZXJvbWV0ZXIgZGV2aWNlLgorCU9ubHkgdmFsdWVzIHdoaWNoIGFyZSBzdXBwb3J0ZWQgYnkgSFcgYXJlIGFjY2VwdGVkLgorc2VsZnRlc3QgLSBwZXJmb3JtcyBzZWxmdGVzdCBmb3IgdGhlIGNoaXAgYXMgc3BlY2lmaWVkIGJ5IGNoaXAgbWFudWZhY3R1cmVyLgorCitUaGlzIGRyaXZlciBhbHNvIHByb3ZpZGVzIGFuIGFic29sdXRlIGlucHV0IGNsYXNzIGRldmljZSwgYWxsb3dpbmcKK3RoZSBsYXB0b3AgdG8gYWN0IGFzIGEgcGluYmFsbCBtYWNoaW5lLWVzcXVlIGpveXN0aWNrLiBKb3lzdGljayBkZXZpY2UgY2FuIGJlCitjYWxpYnJhdGVkLiBKb3lzdGljayBkZXZpY2UgY2FuIGJlIGluIHR3byBkaWZmZXJlbnQgbW9kZXMuCitCeSBkZWZhdWx0IG91dHB1dCB2YWx1ZXMgYXJlIHNjYWxlZCBiZXR3ZWVuIC0zMjc2OCAuLiAzMjc2Ny4gSW4gam95c3RpY2sgcmF3Cittb2RlLCBqb3lzdGljayBhbmQgc3lzZnMgcG9zaXRpb24gZW50cnkgaGF2ZSB0aGUgc2FtZSBzY2FsZS4gVGhlcmUgY2FuIGJlCitzbWFsbCBkaWZmZXJlbmNlIGR1ZSB0byBpbnB1dCBzeXN0ZW0gZnV6emluZXNzIGZlYXR1cmUuCitFdmVudHMgYXJlIGFsc28gYXZhaWxhYmxlIGFzIGlucHV0IGV2ZW50IGRldmljZS4KKworU2VsZnRlc3QgaXMgbWVhbnQgb25seSBmb3IgaGFyZHdhcmUgZGlhZ25vc3RpYyBwdXJwb3Nlcy4gSXQgaXMgbm90IG1lYW50IHRvIGJlCit1c2VkIGR1cmluZyBub3JtYWwgb3BlcmF0aW9ucy4gUG9zaXRpb24gZGF0YSBpcyBub3QgY29ycnVwdGVkIGR1cmluZyBzZWxmdGVzdAorYnV0IGludGVycnVwdCBiZWhhdmlvdXIgaXMgbm90IGd1YXJhbnRlZWQgdG8gd29yayByZWxpYWJseS4gSW4gdGVzdCBtb2RlLCB0aGUKK3NlbnNpbmcgZWxlbWVudCBpcyBpbnRlcm5hbGx5IG1vdmVkIGxpdHRsZSBiaXQuIFNlbGZ0ZXN0IG1lYXN1cmVzIGRpZmZlcmVuY2UKK2JldHdlZW4gbm9ybWFsIG1vZGUgYW5kIHRlc3QgbW9kZS4gQ2hpcCBzcGVjaWZpY2F0aW9ucyB0ZWxsIHRoZSBhY2NlcHRhbmNlCitsaW1pdCBmb3IgZWFjaCB0eXBlIG9mIHRoZSBjaGlwLiBMaW1pdHMgYXJlIHByb3ZpZGVkIHZpYSBwbGF0Zm9ybSBkYXRhCit0byBhbGxvdyBhZGp1c3RtZW50IG9mIHRoZSBsaW1pdHMgd2l0aG91dCBhIGNoYW5nZSB0byB0aGUgYWN0dWFsIGRyaXZlci4KK1NlbHRlc3QgcmV0dXJucyBlaXRoZXIgIk9LIHggeSB6IiBvciAiRkFJTCB4IHkgeiIgd2hlcmUgeCwgeSBhbmQgeiBhcmUKK21lYXN1cmVkIGRpZmZlcmVuY2UgYmV0d2VlbiBtb2Rlcy4gQXhlcyBhcmUgbm90IHJlbWFwcGVkIGluIHNlbGZ0ZXN0IG1vZGUuCitNZWFzdXJlbWVudCB2YWx1ZXMgYXJlIHByb3ZpZGVkIHRvIGhlbHAgSFcgZGlhZ25vc3RpYyBhcHBsaWNhdGlvbnMgdG8gbWFrZQorZmluYWwgZGVjaXNpb24uCisKK09uIEhQIGxhcHRvcHMsIGlmIHRoZSBsZWQgaW5mcmFzdHJ1Y3R1cmUgaXMgYWN0aXZhdGVkLCBzdXBwb3J0IGZvciBhIGxlZAoraW5kaWNhdGluZyBkaXNrIHByb3RlY3Rpb24gd2lsbCBiZSBwcm92aWRlZCBhcyAvc3lzL2NsYXNzL2xlZHMvaHA6OmhkZHByb3RlY3QuCisKK0Fub3RoZXIgZmVhdHVyZSBvZiB0aGUgZHJpdmVyIGlzIG1pc2MgZGV2aWNlIGNhbGxlZCAiZnJlZWZhbGwiIHRoYXQKK2FjdHMgc2ltaWxhciB0byAvZGV2L3J0YyBhbmQgcmVhY3RzIG9uIGZyZWUtZmFsbCBpbnRlcnJ1cHRzIHJlY2VpdmVkCitmcm9tIHRoZSBkZXZpY2UuIEl0IHN1cHBvcnRzIGJsb2NraW5nIG9wZXJhdGlvbnMsIHBvbGwvc2VsZWN0IGFuZAorZmFzeW5jIG9wZXJhdGlvbiBtb2Rlcy4gWW91IG11c3QgcmVhZCAxIGJ5dGVzIGZyb20gdGhlIGRldmljZS4gIFRoZQorcmVzdWx0IGlzIG51bWJlciBvZiBmcmVlLWZhbGwgaW50ZXJydXB0cyBzaW5jZSB0aGUgbGFzdCBzdWNjZXNzZnVsCityZWFkIChvciAyNTUgaWYgbnVtYmVyIG9mIGludGVycnVwdHMgd291bGQgbm90IGZpdCkuIFNlZSB0aGUgZnJlZWZhbGwuYworZmlsZSBmb3IgYW4gZXhhbXBsZSBvbiB1c2luZyB0aGUgZGV2aWNlLgorCisKK0F4ZXMgb3JpZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0KKworRm9yIGJldHRlciBjb21wYXRpYmlsaXR5IGJldHdlZW4gdGhlIHZhcmlvdXMgbGFwdG9wcy4gVGhlIHZhbHVlcyByZXBvcnRlZCBieQordGhlIGFjY2VsZXJvbWV0ZXIgYXJlIGNvbnZlcnRlZCBpbnRvIGEgInN0YW5kYXJkIiBvcmdhbmlzYXRpb24gb2YgdGhlIGF4ZXMKKyhha2EgImNhbiBwbGF5IG5ldmVyYmFsbCBvdXQgb2YgdGhlIGJveCIpOgorICogV2hlbiB0aGUgbGFwdG9wIGlzIGhvcml6b250YWwgdGhlIHBvc2l0aW9uIHJlcG9ydGVkIGlzIGFib3V0IDAgZm9yIFggYW5kIFkKKwlhbmQgYSBwb3NpdGl2ZSB2YWx1ZSBmb3IgWgorICogSWYgdGhlIGxlZnQgc2lkZSBpcyBlbGV2YXRlZCwgWCBpbmNyZWFzZXMgKGJlY29tZXMgcG9zaXRpdmUpCisgKiBJZiB0aGUgZnJvbnQgc2lkZSAod2hlcmUgdGhlIHRvdWNocGFkIGlzKSBpcyBlbGV2YXRlZCwgWSBkZWNyZWFzZXMKKwkoYmVjb21lcyBuZWdhdGl2ZSkKKyAqIElmIHRoZSBsYXB0b3AgaXMgcHV0IHVwc2lkZS1kb3duLCBaIGJlY29tZXMgbmVnYXRpdmUKKworSWYgeW91ciBsYXB0b3AgbW9kZWwgaXMgbm90IHJlY29nbml6ZWQgKGNmICJkbWVzZyIpLCB5b3UgY2FuIHNlbmQgYW4KK2VtYWlsIHRvIHRoZSBtYWludGFpbmVyIHRvIGFkZCBpdCB0byB0aGUgZGF0YWJhc2UuICBXaGVuIHJlcG9ydGluZyBhIG5ldworbGFwdG9wLCBwbGVhc2UgaW5jbHVkZSB0aGUgb3V0cHV0IG9mICJkbWlkZWNvZGUiIHBsdXMgdGhlIHZhbHVlIG9mCisvc3lzL2RldmljZXMvcGxhdGZvcm0vbGlzM2x2MDJkL3Bvc2l0aW9uIGluIHRoZXNlIGZvdXIgY2FzZXMuCisKK1EmQQorLS0tCisKK1E6IEhvdyBkbyBJIHNhZmVseSBzaW11bGF0ZSBmcmVlZmFsbD8gSSBoYXZlIGFuIEhQICJwb3J0YWJsZQord29ya3N0YXRpb24iIHdoaWNoIGhhcyBhYm91dCAzLjVrZyBhbmQgYSBwbGFzdGljIGNhc2UsIHNvIGxldHRpbmcgaXQKK2ZhbGwgdG8gdGhlIGdyb3VuZCBpcyBvdXQgb2YgcXVlc3Rpb24uLi4KKworQTogVGhlIHNlbnNvciBpcyBwcmV0dHkgc2Vuc2l0aXZlLCBzbyB5b3VyIGhhbmRzIGNhbiBkbyBpdC4gTGlmdCBpdAoraW50byBmcmVlIHNwYWNlLCBmb2xsb3cgdGhlIGZhbGwgd2l0aCB5b3VyIGhhbmRzIGZvciBsaWtlIDEwCitjZW50aW1ldGVycy4gVGhhdCBzaG91bGQgYmUgZW5vdWdoIHRvIHRyaWdnZXIgdGhlIGRldGVjdGlvbi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL21heDY4NzUgYi9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9tYXg2ODc1Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmMmJkMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9tYXg2ODc1CkBAIC0wLDAgKzEsMTEwIEBACitLZXJuZWwgZHJpdmVyIG1heDY4NzUKKz09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogTWF4aW0gTUFYNjg3NCwgTUFYNjg3NQorICAgIFByZWZpeDogJ21heDY4NzUnCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IE5vbmUgKHNlZSBiZWxvdykKKyAgICBEYXRhc2hlZXQ6CisgICAgICAgIGh0dHA6Ly9wZGZzZXJ2Lm1heGltLWljLmNvbS9lbi9kcy9NQVg2ODc0LU1BWDY4NzUucGRmCisKK0F1dGhvcjogQmVuIEdhcmRuZXIgPGJnYXJkbmVyQHdhYnRlYy5jb20+CisKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoZSBNYXhpbSBNQVg2ODc1IGlzIGFuIEVFUFJPTS1wcm9ncmFtbWFibGUgcG93ZXItc3VwcGx5IHNlcXVlbmNlci9zdXBlcnZpc29yLgorSXQgcHJvdmlkZXMgdGltZWQgb3V0cHV0cyB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgd2F0Y2hkb2csIGlmIHByb3Blcmx5IHdpcmVkLgorSXQgYWxzbyBwcm92aWRlcyA1MTIgYnl0ZXMgb2YgdXNlciBFRVBST00uCisKK0F0IHJlc2V0LCB0aGUgTUFYNjg3NSByZWFkcyB0aGUgY29uZmlndXJhdGlvbiBFRVBST00gaW50byBpdHMgY29uZmlndXJhdGlvbgorcmVnaXN0ZXJzLiAgVGhlIGNoaXAgdGhlbiBiZWdpbnMgdG8gb3BlcmF0ZSBhY2NvcmRpbmcgdG8gdGhlIHZhbHVlcyBpbiB0aGUKK3JlZ2lzdGVycy4KKworVGhlIE1heGltIE1BWDY4NzQgaXMgYSBzaW1pbGFyLCBtb3N0bHkgY29tcGF0aWJsZSBkZXZpY2UsIHdpdGggbW9yZSBpbnB1dHMKK2FuZCBvdXRwdXRzOgorICAgICAgICAgICAgIHZpbiAgICAgZ3BpICAgIHZvdXQKK01BWDY4NzQgICAgICAgIDYgICAgICAgNCAgICAgICA4CitNQVg2ODc1ICAgICAgICA0ICAgICAgIDMgICAgICAgNQorCitTZWUgdGhlIGRhdGFzaGVldCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworCitTeXNmcyBlbnRyaWVzCistLS0tLS0tLS0tLS0tCisKK2VlcHJvbSAgICAgICAgLSA1MTIgYnl0ZXMgb2YgdXNlci1kZWZpbmVkIEVFUFJPTSBzcGFjZS4KKworCitHZW5lcmFsIFJlbWFya3MKKy0tLS0tLS0tLS0tLS0tLQorCitWYWxpZCBhZGRyZXNzZXMgZm9yIHRoZSBNQVg2ODc1IGFyZSAweDUwIGFuZCAweDUyLgorVmFsaWQgYWRkcmVzc2VzIGZvciB0aGUgTUFYNjg3NCBhcmUgMHg1MCwgMHg1MiwgMHg1NCBhbmQgMHg1Ni4KK1RoZSBkcml2ZXIgZG9lcyBub3QgcHJvYmUgYW55IGFkZHJlc3MsIHNvIHlvdSBleHBsaWNpdGx5IGluc3RhbnRpYXRlIHRoZQorZGV2aWNlcy4KKworRXhhbXBsZToKKyQgbW9kcHJvYmUgbWF4Njg3NQorJCBlY2hvIG1heDY4NzUgMHg1MCA+IC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0wL25ld19kZXZpY2UKKworVGhlIE1BWDY4NzQvTUFYNjg3NSBpZ25vcmVzIGFkZHJlc3MgYml0IDAsIHNvIHRoaXMgZHJpdmVyIGF0dGFjaGVzIHRvIG11bHRpcGxlCithZGRyZXNzZXMuICBGb3IgZXhhbXBsZSwgZm9yIGFkZHJlc3MgMHg1MCwgaXQgYWxzbyByZXNlcnZlcyAweDUxLgorVGhlIGV2ZW4tYWRkcmVzcyBpbnN0YW5jZSBpcyBjYWxsZWQgJ21heDY4NzUnLCB0aGUgb2RkIG9uZSBpcyAnZHVtbXknLgorCisKK1Byb2dyYW1taW5nIHRoZSBjaGlwIHVzaW5nIGkyYy1kZXYKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVXNlIHRoZSBpMmMtZGV2IGludGVyZmFjZSB0byBhY2Nlc3MgYW5kIHByb2dyYW0gdGhlIGNoaXBzLgorUmVhZHMgYW5kIHdyaXRlcyBhcmUgcGVyZm9ybWVkIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB0aGUgYWRkcmVzcyByYW5nZS4KKworVGhlIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGFyZSBhdCBhZGRyZXNzZXMgMHgwMCAtIDB4NDUuCitVc2UgaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YSgpIHRvIHdyaXRlIGEgcmVnaXN0ZXIgYW5kCitpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoKSB0byByZWFkIGEgcmVnaXN0ZXIuCitUaGUgY29tbWFuZCBpcyB0aGUgcmVnaXN0ZXIgbnVtYmVyLgorCitFeGFtcGxlczoKK1RvIHdyaXRlIGEgMSB0byByZWdpc3RlciAweDQ1OgorICBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGZkLCAweDQ1LCAxKTsKKworVG8gcmVhZCByZWdpc3RlciAweDQ1OgorICB2YWx1ZSA9IGkyY19zbWJ1c19yZWFkX2J5dGVfZGF0YShmZCwgMHg0NSk7CisKKworVGhlIGNvbmZpZ3VyYXRpb24gRUVQUk9NIGlzIGF0IGFkZHJlc3NlcyAweDgwMDAgLSAweDgwNDUuCitUaGUgdXNlciBFRVBST00gaXMgYXQgYWRkcmVzc2VzIDB4ODEwMCAtIDB4ODJmZi4KKworVXNlIGkyY19zbWJ1c193cml0ZV93b3JkX2RhdGEoKSB0byB3cml0ZSBhIGJ5dGUgdG8gRUVQUk9NLgorCitUaGUgY29tbWFuZCBpcyB0aGUgdXBwZXIgYnl0ZSBvZiB0aGUgYWRkcmVzczogMHg4MCwgMHg4MSwgb3IgMHg4Mi4KK1RoZSBkYXRhIHdvcmQgaXMgdGhlIGxvd2VyIHBhcnQgb2YgdGhlIGFkZHJlc3Mgb3InZCB3aXRoIGRhdGEgPDwgOC4KKyAgY21kID0gYWRkcmVzcyA+PiA4OworICB2YWwgPSAoYWRkcmVzcyAmIDB4ZmYpIHwgKGRhdGEgPDwgOCk7CisKK0V4YW1wbGU6CitUbyB3cml0ZSAweDVhIHRvIGFkZHJlc3MgMHg4MDAzOgorICBpMmNfc21idXNfd3JpdGVfd29yZF9kYXRhKGZkLCAweDgwLCAweDVhMDMpOworCisKK1JlYWRpbmcgZGF0YSBmcm9tIHRoZSBFRVBST00gaXMgYSBsaXR0bGUgbW9yZSBjb21wbGljYXRlZC4KK1VzZSBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKCkgdG8gc2V0IHRoZSByZWFkIGFkZHJlc3MgYW5kIHRoZW4KK2kyY19zbWJ1c19yZWFkX2J5dGUoKSBvciBpMmNfc21idXNfcmVhZF9pMmNfYmxvY2tfZGF0YSgpIHRvIHJlYWQgdGhlIGRhdGEuCisKK0V4YW1wbGU6CitUbyByZWFkIGRhdGEgc3RhcnRpbmcgYXQgb2Zmc2V0IDB4ODEwMCwgZmlyc3Qgc2V0IHRoZSBhZGRyZXNzOgorICBpMmNfc21idXNfd3JpdGVfYnl0ZV9kYXRhKGZkLCAweDgxLCAweDAwKTsKKworQW5kIHRoZW4gcmVhZCB0aGUgZGF0YQorICB2YWx1ZSA9IGkyY19zbWJ1c19yZWFkX2J5dGUoZmQpOworCisgIG9yCisKKyAgY291bnQgPSBpMmNfc21idXNfcmVhZF9pMmNfYmxvY2tfZGF0YShmZCwgMHg4NCwgMTYsIGJ1ZmZlcik7CisKK1RoZSBibG9jayByZWFkIHNob3VsZCByZWFkIDE2IGJ5dGVzLgorMHg4NCBpcyB0aGUgYmxvY2sgcmVhZCBjb21tYW5kLgorCitTZWUgdGhlIGRhdGFzaGVldCBmb3IgbW9yZSBkZXRhaWxzLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9tZWkvLmdpdGlnbm9yZSBiL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL21laS8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNTZiODEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9tZWkvLmdpdGlnbm9yZQpAQCAtMCwwICsxIEBACittZWktYW10LXZlcnNpb24KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL21laS9NYWtlZmlsZSBiL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL21laS9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzU4MDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9taXNjLWRldmljZXMvbWVpL01ha2VmaWxlCkBAIC0wLDAgKzEsNSBAQAorIyBMaXN0IG9mIHByb2dyYW1zIHRvIGJ1aWxkCitob3N0cHJvZ3MteSA6PSBtZWktYW10LXZlcnNpb24KK0hPU1RDRkxBR1NfbWVpLWFtdC12ZXJzaW9uLm8gKz0gLUkkKG9ianRyZWUpL3Vzci9pbmNsdWRlCisjIFRlbGwga2J1aWxkIHRvIGFsd2F5cyBidWlsZCB0aGUgcHJvZ3JhbXMKK2Fsd2F5cyA6PSAkKGhvc3Rwcm9ncy15KQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9taXNjLWRldmljZXMvbWVpL1RPRE8gYi9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9tZWkvVE9ETwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjM2MjVkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9taXNjLWRldmljZXMvbWVpL1RPRE8KQEAgLTAsMCArMSwyIEBACitUT0RPOgorCS0gQ2xlYW51cCBhbmQgc3BsaXQgdGhlIHRpbWVyIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9tZWkvbWVpLWFtdC12ZXJzaW9uLmMgYi9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9tZWkvbWVpLWFtdC12ZXJzaW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdkMGQ4NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL21laS9tZWktYW10LXZlcnNpb24uYwpAQCAtMCwwICsxLDQ3OSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogSW50ZWwgTWFuYWdlbWVudCBFbmdpbmUgSW50ZXJmYWNlIChJbnRlbCBNRUkpIExpbnV4IGRyaXZlcgorICogSW50ZWwgTUVJIEludGVyZmFjZSBIZWFkZXIKKyAqCisgKiBUaGlzIGZpbGUgaXMgcHJvdmlkZWQgdW5kZXIgYSBkdWFsIEJTRC9HUEx2MiBsaWNlbnNlLiAgV2hlbiB1c2luZyBvcgorICogcmVkaXN0cmlidXRpbmcgdGhpcyBmaWxlLCB5b3UgbWF5IGRvIHNvIHVuZGVyIGVpdGhlciBsaWNlbnNlLgorICoKKyAqIEdQTCBMSUNFTlNFIFNVTU1BUlkKKyAqCisgKiBDb3B5cmlnaHQoYykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHZlcnNpb24gMiBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyAqIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLAorICogVVNBCisgKgorICogVGhlIGZ1bGwgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgaW5jbHVkZWQgaW4gdGhpcyBkaXN0cmlidXRpb24KKyAqIGluIHRoZSBmaWxlIGNhbGxlZCBMSUNFTlNFLkdQTC4KKyAqCisgKiBDb250YWN0IEluZm9ybWF0aW9uOgorICoJSW50ZWwgQ29ycG9yYXRpb24uCisgKglsaW51eC1tZWlAbGludXguaW50ZWwuY29tCisgKglodHRwOi8vd3d3LmludGVsLmNvbQorICoKKyAqIEJTRCBMSUNFTlNFCisgKgorICogQ29weXJpZ2h0KGMpIDIwMDMgLSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorICogICAgdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogICogTmVpdGhlciB0aGUgbmFtZSBJbnRlbCBDb3Jwb3JhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8Yml0cy93b3Jkc2l6ZS5oPgorI2luY2x1ZGUgPGxpbnV4L21laS5oPgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEludGVsIE1hbmFnZW1lbnQgRW5naW5lIEludGVyZmFjZQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIG1laV9tc2coX21lLCBmbXQsIEFSR1MuLi4pIGRvIHsgICAgICAgICBcCisJaWYgKF9tZS0+dmVyYm9zZSkgICAgICAgICAgICAgICAgICAgICAgIFwKKwkJZnByaW50ZihzdGRlcnIsIGZtdCwgIyNBUkdTKTsJXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBtZWlfZXJyKF9tZSwgZm10LCBBUkdTLi4uKSBkbyB7ICAgICAgICAgXAorCWZwcmludGYoc3RkZXJyLCAiRXJyb3I6ICIgZm10LCAjI0FSR1MpOyBcCit9IHdoaWxlICgwKQorCitzdHJ1Y3QgbWVpIHsKKwl1dWlkX2xlIGd1aWQ7CisJYm9vbCBpbml0aWFsaXplZDsKKwlib29sIHZlcmJvc2U7CisJdW5zaWduZWQgaW50IGJ1Zl9zaXplOworCXVuc2lnbmVkIGNoYXIgcHJvdF92ZXI7CisJaW50IGZkOworfTsKKworc3RhdGljIHZvaWQgbWVpX2RlaW5pdChzdHJ1Y3QgbWVpICpjbCkKK3sKKwlpZiAoY2wtPmZkICE9IC0xKQorCQljbG9zZShjbC0+ZmQpOworCWNsLT5mZCA9IC0xOworCWNsLT5idWZfc2l6ZSA9IDA7CisJY2wtPnByb3RfdmVyID0gMDsKKwljbC0+aW5pdGlhbGl6ZWQgPSBmYWxzZTsKK30KKworc3RhdGljIGJvb2wgbWVpX2luaXQoc3RydWN0IG1laSAqbWUsIGNvbnN0IHV1aWRfbGUgKmd1aWQsCisJCXVuc2lnbmVkIGNoYXIgcmVxX3Byb3RvY29sX3ZlcnNpb24sIGJvb2wgdmVyYm9zZSkKK3sKKwlpbnQgcmVzdWx0OworCXN0cnVjdCBtZWlfY2xpZW50ICpjbDsKKwlzdHJ1Y3QgbWVpX2Nvbm5lY3RfY2xpZW50X2RhdGEgZGF0YTsKKworCW1lLT52ZXJib3NlID0gdmVyYm9zZTsKKworCW1lLT5mZCA9IG9wZW4oIi9kZXYvbWVpIiwgT19SRFdSKTsKKwlpZiAobWUtPmZkID09IC0xKSB7CisJCW1laV9lcnIobWUsICJDYW5ub3QgZXN0YWJsaXNoIGEgaGFuZGxlIHRvIHRoZSBJbnRlbCBNRUkgZHJpdmVyXG4iKTsKKwkJZ290byBlcnI7CisJfQorCW1lbWNweSgmbWUtPmd1aWQsIGd1aWQsIHNpemVvZigqZ3VpZCkpOworCW1lbXNldCgmZGF0YSwgMCwgc2l6ZW9mKGRhdGEpKTsKKwltZS0+aW5pdGlhbGl6ZWQgPSB0cnVlOworCisJbWVtY3B5KCZkYXRhLmluX2NsaWVudF91dWlkLCAmbWUtPmd1aWQsIHNpemVvZihtZS0+Z3VpZCkpOworCXJlc3VsdCA9IGlvY3RsKG1lLT5mZCwgSU9DVExfTUVJX0NPTk5FQ1RfQ0xJRU5ULCAmZGF0YSk7CisJaWYgKHJlc3VsdCkgeworCQltZWlfZXJyKG1lLCAiSU9DVExfTUVJX0NPTk5FQ1RfQ0xJRU5UIHJlY2VpdmUgbWVzc2FnZS4gZXJyPSVkXG4iLCByZXN1bHQpOworCQlnb3RvIGVycjsKKwl9CisJY2wgPSAmZGF0YS5vdXRfY2xpZW50X3Byb3BlcnRpZXM7CisJbWVpX21zZyhtZSwgIm1heF9tZXNzYWdlX2xlbmd0aCAlZFxuIiwgY2wtPm1heF9tc2dfbGVuZ3RoKTsKKwltZWlfbXNnKG1lLCAicHJvdG9jb2xfdmVyc2lvbiAlZFxuIiwgY2wtPnByb3RvY29sX3ZlcnNpb24pOworCisJaWYgKChyZXFfcHJvdG9jb2xfdmVyc2lvbiA+IDApICYmCisJICAgICAoY2wtPnByb3RvY29sX3ZlcnNpb24gIT0gcmVxX3Byb3RvY29sX3ZlcnNpb24pKSB7CisJCW1laV9lcnIobWUsICJJbnRlbCBNRUkgcHJvdG9jb2wgdmVyc2lvbiBub3Qgc3VwcG9ydGVkXG4iKTsKKwkJZ290byBlcnI7CisJfQorCisJbWUtPmJ1Zl9zaXplID0gY2wtPm1heF9tc2dfbGVuZ3RoOworCW1lLT5wcm90X3ZlciA9IGNsLT5wcm90b2NvbF92ZXJzaW9uOworCisJcmV0dXJuIHRydWU7CitlcnI6CisJbWVpX2RlaW5pdChtZSk7CisJcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgc3NpemVfdCBtZWlfcmVjdl9tc2coc3RydWN0IG1laSAqbWUsIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwKKwkJCXNzaXplX3QgbGVuLCB1bnNpZ25lZCBsb25nIHRpbWVvdXQpCit7CisJc3NpemVfdCByYzsKKworCW1laV9tc2cobWUsICJjYWxsIHJlYWQgbGVuZ3RoID0gJXpkXG4iLCBsZW4pOworCisJcmMgPSByZWFkKG1lLT5mZCwgYnVmZmVyLCBsZW4pOworCWlmIChyYyA8IDApIHsKKwkJbWVpX2VycihtZSwgInJlYWQgZmFpbGVkIHdpdGggc3RhdHVzICV6ZCAlc1xuIiwKKwkJCQlyYywgc3RyZXJyb3IoZXJybm8pKTsKKwkJbWVpX2RlaW5pdChtZSk7CisJfSBlbHNlIHsKKwkJbWVpX21zZyhtZSwgInJlYWQgc3VjY2VlZGVkIHdpdGggcmVzdWx0ICV6ZFxuIiwgcmMpOworCX0KKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBzc2l6ZV90IG1laV9zZW5kX21zZyhzdHJ1Y3QgbWVpICptZSwgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmZmVyLAorCQkJc3NpemVfdCBsZW4sIHVuc2lnbmVkIGxvbmcgdGltZW91dCkKK3sKKwlzdHJ1Y3QgdGltZXZhbCB0djsKKwlzc2l6ZV90IHdyaXR0ZW47CisJc3NpemVfdCByYzsKKwlmZF9zZXQgc2V0OworCisJdHYudHZfc2VjID0gdGltZW91dCAvIDEwMDA7CisJdHYudHZfdXNlYyA9ICh0aW1lb3V0ICUgMTAwMCkgKiAxMDAwMDAwOworCisJbWVpX21zZyhtZSwgImNhbGwgd3JpdGUgbGVuZ3RoID0gJXpkXG4iLCBsZW4pOworCisJd3JpdHRlbiA9IHdyaXRlKG1lLT5mZCwgYnVmZmVyLCBsZW4pOworCWlmICh3cml0dGVuIDwgMCkgeworCQlyYyA9IC1lcnJubzsKKwkJbWVpX2VycihtZSwgIndyaXRlIGZhaWxlZCB3aXRoIHN0YXR1cyAlemQgJXNcbiIsCisJCQl3cml0dGVuLCBzdHJlcnJvcihlcnJubykpOworCQlnb3RvIG91dDsKKwl9CisKKwlGRF9aRVJPKCZzZXQpOworCUZEX1NFVChtZS0+ZmQsICZzZXQpOworCXJjID0gc2VsZWN0KG1lLT5mZCArIDEgLCAmc2V0LCBOVUxMLCBOVUxMLCAmdHYpOworCWlmIChyYyA+IDAgJiYgRkRfSVNTRVQobWUtPmZkLCAmc2V0KSkgeworCQltZWlfbXNnKG1lLCAid3JpdGUgc3VjY2Vzc1xuIik7CisJfSBlbHNlIGlmIChyYyA9PSAwKSB7CisJCW1laV9lcnIobWUsICJ3cml0ZSBmYWlsZWQgb24gdGltZW91dCB3aXRoIHN0YXR1c1xuIik7CisJCWdvdG8gb3V0OworCX0gZWxzZSB7IC8qIHJjIDwgMCAqLworCQltZWlfZXJyKG1lLCAid3JpdGUgZmFpbGVkIG9uIHNlbGVjdCB3aXRoIHN0YXR1cyAlemRcbiIsIHJjKTsKKwkJZ290byBvdXQ7CisJfQorCisJcmMgPSB3cml0dGVuOworb3V0OgorCWlmIChyYyA8IDApCisJCW1laV9kZWluaXQobWUpOworCisJcmV0dXJuIHJjOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBJbnRlbCBBZHZhbmNlZCBNYW5hZ2VtZW50IFRlY2hub2xvZ3kgTUUgQ2xpZW50CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIEFNVF9NQUpPUl9WRVJTSU9OIDEKKyNkZWZpbmUgQU1UX01JTk9SX1ZFUlNJT04gMQorCisjZGVmaW5lIEFNVF9TVEFUVVNfU1VDQ0VTUyAgICAgICAgICAgICAgICAweDAKKyNkZWZpbmUgQU1UX1NUQVRVU19JTlRFUk5BTF9FUlJPUiAgICAgICAgIDB4MQorI2RlZmluZSBBTVRfU1RBVFVTX05PVF9SRUFEWSAgICAgICAgICAgICAgMHgyCisjZGVmaW5lIEFNVF9TVEFUVVNfSU5WQUxJRF9BTVRfTU9ERSAgICAgICAweDMKKyNkZWZpbmUgQU1UX1NUQVRVU19JTlZBTElEX01FU1NBR0VfTEVOR1RIIDB4NAorCisjZGVmaW5lIEFNVF9TVEFUVVNfSE9TVF9JRl9FTVBUWV9SRVNQT05TRSAgMHg0MDAwCisjZGVmaW5lIEFNVF9TVEFUVVNfU0RLX1JFU09VUkNFUyAgICAgIDB4MTAwNAorCisKKyNkZWZpbmUgQU1UX0JJT1NfVkVSU0lPTl9MRU4gICA2NQorI2RlZmluZSBBTVRfVkVSU0lPTlNfTlVNQkVSICAgIDUwCisjZGVmaW5lIEFNVF9VTklDT0RFX1NUUklOR19MRU4gMjAKKworc3RydWN0IGFtdF91bmljb2RlX3N0cmluZyB7CisJdWludDE2X3QgbGVuZ3RoOworCWNoYXIgc3RyaW5nW0FNVF9VTklDT0RFX1NUUklOR19MRU5dOworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworc3RydWN0IGFtdF92ZXJzaW9uX3R5cGUgeworCXN0cnVjdCBhbXRfdW5pY29kZV9zdHJpbmcgZGVzY3JpcHRpb247CisJc3RydWN0IGFtdF91bmljb2RlX3N0cmluZyB2ZXJzaW9uOworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworc3RydWN0IGFtdF92ZXJzaW9uIHsKKwl1aW50OF90IG1ham9yOworCXVpbnQ4X3QgbWlub3I7Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCitzdHJ1Y3QgYW10X2NvZGVfdmVyc2lvbnMgeworCXVpbnQ4X3QgYmlvc1tBTVRfQklPU19WRVJTSU9OX0xFTl07CisJdWludDMyX3QgY291bnQ7CisJc3RydWN0IGFtdF92ZXJzaW9uX3R5cGUgdmVyc2lvbnNbQU1UX1ZFUlNJT05TX05VTUJFUl07Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBJbnRlbCBBZHZhbmNlZCBNYW5hZ2VtZW50IFRlY2hub2xvZ3kgSG9zdCBJbnRlcmZhY2UKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0cnVjdCBhbXRfaG9zdF9pZl9tc2dfaGVhZGVyIHsKKwlzdHJ1Y3QgYW10X3ZlcnNpb24gdmVyc2lvbjsKKwl1aW50MTZfdCBfcmVzZXJ2ZWQ7CisJdWludDMyX3QgY29tbWFuZDsKKwl1aW50MzJfdCBsZW5ndGg7Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCitzdHJ1Y3QgYW10X2hvc3RfaWZfcmVzcF9oZWFkZXIgeworCXN0cnVjdCBhbXRfaG9zdF9pZl9tc2dfaGVhZGVyIGhlYWRlcjsKKwl1aW50MzJfdCBzdGF0dXM7CisJdW5zaWduZWQgY2hhciBkYXRhWzBdOworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworY29uc3QgdXVpZF9sZSBNRUlfSUFNVEhJRiA9IFVVSURfTEUoMHgxMmY4MDAyOCwgMHhiNGI3LCAweDRiMmQsICBcCisJCQkJMHhhYywgMHhhOCwgMHg0NiwgMHhlMCwgMHhmZiwgMHg2NSwgMHg4MSwgMHg0Yyk7CisKKyNkZWZpbmUgQU1UX0hPU1RfSUZfQ09ERV9WRVJTSU9OU19SRVFVRVNUICAweDA0MDAwMDFBCisjZGVmaW5lIEFNVF9IT1NUX0lGX0NPREVfVkVSU0lPTlNfUkVTUE9OU0UgMHgwNDgwMDAxQQorCitjb25zdCBzdHJ1Y3QgYW10X2hvc3RfaWZfbXNnX2hlYWRlciBDT0RFX1ZFUlNJT05fUkVRID0geworCS52ZXJzaW9uID0ge0FNVF9NQUpPUl9WRVJTSU9OLCBBTVRfTUlOT1JfVkVSU0lPTn0sCisJLl9yZXNlcnZlZCA9IDAsCisJLmNvbW1hbmQgPSBBTVRfSE9TVF9JRl9DT0RFX1ZFUlNJT05TX1JFUVVFU1QsCisJLmxlbmd0aCA9IDAKK307CisKKworc3RydWN0IGFtdF9ob3N0X2lmIHsKKwlzdHJ1Y3QgbWVpIG1laV9jbDsKKwl1bnNpZ25lZCBsb25nIHNlbmRfdGltZW91dDsKKwlib29sIGluaXRpYWxpemVkOworfTsKKworCitzdGF0aWMgYm9vbCBhbXRfaG9zdF9pZl9pbml0KHN0cnVjdCBhbXRfaG9zdF9pZiAqYWNtZCwKKwkJICAgICAgdW5zaWduZWQgbG9uZyBzZW5kX3RpbWVvdXQsIGJvb2wgdmVyYm9zZSkKK3sKKwlhY21kLT5zZW5kX3RpbWVvdXQgPSAoc2VuZF90aW1lb3V0KSA/IHNlbmRfdGltZW91dCA6IDIwMDAwOworCWFjbWQtPmluaXRpYWxpemVkID0gbWVpX2luaXQoJmFjbWQtPm1laV9jbCwgJk1FSV9JQU1USElGLCAwLCB2ZXJib3NlKTsKKwlyZXR1cm4gYWNtZC0+aW5pdGlhbGl6ZWQ7Cit9CisKK3N0YXRpYyB2b2lkIGFtdF9ob3N0X2lmX2RlaW5pdChzdHJ1Y3QgYW10X2hvc3RfaWYgKmFjbWQpCit7CisJbWVpX2RlaW5pdCgmYWNtZC0+bWVpX2NsKTsKKwlhY21kLT5pbml0aWFsaXplZCA9IGZhbHNlOworfQorCitzdGF0aWMgdWludDMyX3QgYW10X3ZlcmlmeV9jb2RlX3ZlcnNpb25zKGNvbnN0IHN0cnVjdCBhbXRfaG9zdF9pZl9yZXNwX2hlYWRlciAqcmVzcCkKK3sKKwl1aW50MzJfdCBzdGF0dXMgPSBBTVRfU1RBVFVTX1NVQ0NFU1M7CisJc3RydWN0IGFtdF9jb2RlX3ZlcnNpb25zICpjb2RlX3ZlcjsKKwlzaXplX3QgY29kZV92ZXJfbGVuOworCXVpbnQzMl90IHZlcl90eXBlX2NudDsKKwl1aW50MzJfdCBsZW47CisJdWludDMyX3QgaTsKKworCWNvZGVfdmVyID0gKHN0cnVjdCBhbXRfY29kZV92ZXJzaW9ucyAqKXJlc3AtPmRhdGE7CisJLyogbGVuZ3RoIC0gc2l6ZW9mKHN0YXR1cykgKi8KKwljb2RlX3Zlcl9sZW4gPSByZXNwLT5oZWFkZXIubGVuZ3RoIC0gc2l6ZW9mKHVpbnQzMl90KTsKKwl2ZXJfdHlwZV9jbnQgPSBjb2RlX3Zlcl9sZW4gLQorCQkJc2l6ZW9mKGNvZGVfdmVyLT5iaW9zKSAtCisJCQlzaXplb2YoY29kZV92ZXItPmNvdW50KTsKKwlpZiAoY29kZV92ZXItPmNvdW50ICE9IHZlcl90eXBlX2NudCAvIHNpemVvZihzdHJ1Y3QgYW10X3ZlcnNpb25fdHlwZSkpIHsKKwkJc3RhdHVzID0gQU1UX1NUQVRVU19JTlRFUk5BTF9FUlJPUjsKKwkJZ290byBvdXQ7CisJfQorCisJZm9yIChpID0gMDsgaSA8IGNvZGVfdmVyLT5jb3VudDsgaSsrKSB7CisJCWxlbiA9IGNvZGVfdmVyLT52ZXJzaW9uc1tpXS5kZXNjcmlwdGlvbi5sZW5ndGg7CisKKwkJaWYgKGxlbiA+IEFNVF9VTklDT0RFX1NUUklOR19MRU4pIHsKKwkJCXN0YXR1cyA9IEFNVF9TVEFUVVNfSU5URVJOQUxfRVJST1I7CisJCQlnb3RvIG91dDsKKwkJfQorCisJCWxlbiA9IGNvZGVfdmVyLT52ZXJzaW9uc1tpXS52ZXJzaW9uLmxlbmd0aDsKKwkJaWYgKGNvZGVfdmVyLT52ZXJzaW9uc1tpXS52ZXJzaW9uLnN0cmluZ1tsZW5dICE9ICdcMCcgfHwKKwkJICAgIGxlbiAhPSBzdHJsZW4oY29kZV92ZXItPnZlcnNpb25zW2ldLnZlcnNpb24uc3RyaW5nKSkgeworCQkJc3RhdHVzID0gQU1UX1NUQVRVU19JTlRFUk5BTF9FUlJPUjsKKwkJCWdvdG8gb3V0OworCQl9CisJfQorb3V0OgorCXJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBhbXRfdmVyaWZ5X3Jlc3BvbnNlX2hlYWRlcih1aW50MzJfdCBjb21tYW5kLAorCQkJCWNvbnN0IHN0cnVjdCBhbXRfaG9zdF9pZl9tc2dfaGVhZGVyICpyZXNwX2hkciwKKwkJCQl1aW50MzJfdCByZXNwb25zZV9zaXplKQoreworCWlmIChyZXNwb25zZV9zaXplIDwgc2l6ZW9mKHN0cnVjdCBhbXRfaG9zdF9pZl9yZXNwX2hlYWRlcikpIHsKKwkJcmV0dXJuIEFNVF9TVEFUVVNfSU5URVJOQUxfRVJST1I7CisJfSBlbHNlIGlmIChyZXNwb25zZV9zaXplICE9IChyZXNwX2hkci0+bGVuZ3RoICsKKwkJCQlzaXplb2Yoc3RydWN0IGFtdF9ob3N0X2lmX21zZ19oZWFkZXIpKSkgeworCQlyZXR1cm4gQU1UX1NUQVRVU19JTlRFUk5BTF9FUlJPUjsKKwl9IGVsc2UgaWYgKHJlc3BfaGRyLT5jb21tYW5kICE9IGNvbW1hbmQpIHsKKwkJcmV0dXJuIEFNVF9TVEFUVVNfSU5URVJOQUxfRVJST1I7CisJfSBlbHNlIGlmIChyZXNwX2hkci0+X3Jlc2VydmVkICE9IDApIHsKKwkJcmV0dXJuIEFNVF9TVEFUVVNfSU5URVJOQUxfRVJST1I7CisJfSBlbHNlIGlmIChyZXNwX2hkci0+dmVyc2lvbi5tYWpvciAhPSBBTVRfTUFKT1JfVkVSU0lPTiB8fAorCQkgICByZXNwX2hkci0+dmVyc2lvbi5taW5vciA8IEFNVF9NSU5PUl9WRVJTSU9OKSB7CisJCXJldHVybiBBTVRfU1RBVFVTX0lOVEVSTkFMX0VSUk9SOworCX0KKwlyZXR1cm4gQU1UX1NUQVRVU19TVUNDRVNTOworfQorCitzdGF0aWMgdWludDMyX3QgYW10X2hvc3RfaWZfY2FsbChzdHJ1Y3QgYW10X2hvc3RfaWYgKmFjbWQsCisJCQljb25zdCB1bnNpZ25lZCBjaGFyICpjb21tYW5kLCBzc2l6ZV90IGNvbW1hbmRfc3osCisJCQl1aW50OF90ICoqcmVhZF9idWYsIHVpbnQzMl90IHJjbWQsCisJCQl1bnNpZ25lZCBpbnQgZXhwZWN0ZWRfc3opCit7CisJdWludDMyX3QgaW5fYnVmX3N6OworCXVpbnQzMl90IG91dF9idWZfc3o7CisJc3NpemVfdCB3cml0dGVuOworCXVpbnQzMl90IHN0YXR1czsKKwlzdHJ1Y3QgYW10X2hvc3RfaWZfcmVzcF9oZWFkZXIgKm1zZ19oZHI7CisKKwlpbl9idWZfc3ogPSBhY21kLT5tZWlfY2wuYnVmX3NpemU7CisJKnJlYWRfYnVmID0gKHVpbnQ4X3QgKiltYWxsb2Moc2l6ZW9mKHVpbnQ4X3QpICogaW5fYnVmX3N6KTsKKwlpZiAoKnJlYWRfYnVmID09IE5VTEwpCisJCXJldHVybiBBTVRfU1RBVFVTX1NES19SRVNPVVJDRVM7CisJbWVtc2V0KCpyZWFkX2J1ZiwgMCwgaW5fYnVmX3N6KTsKKwltc2dfaGRyID0gKHN0cnVjdCBhbXRfaG9zdF9pZl9yZXNwX2hlYWRlciAqKSpyZWFkX2J1ZjsKKworCXdyaXR0ZW4gPSBtZWlfc2VuZF9tc2coJmFjbWQtPm1laV9jbCwKKwkJCQljb21tYW5kLCBjb21tYW5kX3N6LCBhY21kLT5zZW5kX3RpbWVvdXQpOworCWlmICh3cml0dGVuICE9IGNvbW1hbmRfc3opCisJCXJldHVybiBBTVRfU1RBVFVTX0lOVEVSTkFMX0VSUk9SOworCisJb3V0X2J1Zl9zeiA9IG1laV9yZWN2X21zZygmYWNtZC0+bWVpX2NsLCAqcmVhZF9idWYsIGluX2J1Zl9zeiwgMjAwMCk7CisJaWYgKG91dF9idWZfc3ogPD0gMCkKKwkJcmV0dXJuIEFNVF9TVEFUVVNfSE9TVF9JRl9FTVBUWV9SRVNQT05TRTsKKworCXN0YXR1cyA9IG1zZ19oZHItPnN0YXR1czsKKwlpZiAoc3RhdHVzICE9IEFNVF9TVEFUVVNfU1VDQ0VTUykKKwkJcmV0dXJuIHN0YXR1czsKKworCXN0YXR1cyA9IGFtdF92ZXJpZnlfcmVzcG9uc2VfaGVhZGVyKHJjbWQsCisJCQkJJm1zZ19oZHItPmhlYWRlciwgb3V0X2J1Zl9zeik7CisJaWYgKHN0YXR1cyAhPSBBTVRfU1RBVFVTX1NVQ0NFU1MpCisJCXJldHVybiBzdGF0dXM7CisKKwlpZiAoZXhwZWN0ZWRfc3ogJiYgZXhwZWN0ZWRfc3ogIT0gb3V0X2J1Zl9zeikKKwkJcmV0dXJuIEFNVF9TVEFUVVNfSU5URVJOQUxfRVJST1I7CisKKwlyZXR1cm4gQU1UX1NUQVRVU19TVUNDRVNTOworfQorCisKK3N0YXRpYyB1aW50MzJfdCBhbXRfZ2V0X2NvZGVfdmVyc2lvbnMoc3RydWN0IGFtdF9ob3N0X2lmICpjbWQsCisJCQkgICAgICAgc3RydWN0IGFtdF9jb2RlX3ZlcnNpb25zICp2ZXJzaW9ucykKK3sKKwlzdHJ1Y3QgYW10X2hvc3RfaWZfcmVzcF9oZWFkZXIgKnJlc3BvbnNlID0gTlVMTDsKKwl1aW50MzJfdCBzdGF0dXM7CisKKwlzdGF0dXMgPSBhbXRfaG9zdF9pZl9jYWxsKGNtZCwKKwkJCShjb25zdCB1bnNpZ25lZCBjaGFyICopJkNPREVfVkVSU0lPTl9SRVEsCisJCQlzaXplb2YoQ09ERV9WRVJTSU9OX1JFUSksCisJCQkodWludDhfdCAqKikmcmVzcG9uc2UsCisJCQlBTVRfSE9TVF9JRl9DT0RFX1ZFUlNJT05TX1JFU1BPTlNFLCAwKTsKKworCWlmIChzdGF0dXMgIT0gQU1UX1NUQVRVU19TVUNDRVNTKQorCQlnb3RvIG91dDsKKworCXN0YXR1cyA9IGFtdF92ZXJpZnlfY29kZV92ZXJzaW9ucyhyZXNwb25zZSk7CisJaWYgKHN0YXR1cyAhPSBBTVRfU1RBVFVTX1NVQ0NFU1MpCisJCWdvdG8gb3V0OworCisJbWVtY3B5KHZlcnNpb25zLCByZXNwb25zZS0+ZGF0YSwgc2l6ZW9mKHN0cnVjdCBhbXRfY29kZV92ZXJzaW9ucykpOworb3V0OgorCWlmIChyZXNwb25zZSAhPSBOVUxMKQorCQlmcmVlKHJlc3BvbnNlKTsKKworCXJldHVybiBzdGF0dXM7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKiBlbmQgb2YgYW10X2hvc3RfaWZfY29tbWFuZCAqKioqKioqKioqKioqKioqKioqKioqKi8KK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlzdHJ1Y3QgYW10X2NvZGVfdmVyc2lvbnMgdmVyOworCXN0cnVjdCBhbXRfaG9zdF9pZiBhY21kOworCXVuc2lnbmVkIGludCBpOworCXVpbnQzMl90IHN0YXR1czsKKwlpbnQgcmV0OworCWJvb2wgdmVyYm9zZTsKKworCXZlcmJvc2UgPSAoYXJnYyA+IDEgJiYgc3RyY21wKGFyZ3ZbMV0sICItdiIpID09IDApOworCisJaWYgKCFhbXRfaG9zdF9pZl9pbml0KCZhY21kLCA1MDAwLCB2ZXJib3NlKSkgeworCQlyZXQgPSAxOworCQlnb3RvIG91dDsKKwl9CisKKwlzdGF0dXMgPSBhbXRfZ2V0X2NvZGVfdmVyc2lvbnMoJmFjbWQsICZ2ZXIpOworCisJYW10X2hvc3RfaWZfZGVpbml0KCZhY21kKTsKKworCXN3aXRjaCAoc3RhdHVzKSB7CisJY2FzZSBBTVRfU1RBVFVTX0hPU1RfSUZfRU1QVFlfUkVTUE9OU0U6CisJCXByaW50ZigiSW50ZWwgQU1UOiBESVNBQkxFRFxuIik7CisJCXJldCA9IDA7CisJCWJyZWFrOworCWNhc2UgQU1UX1NUQVRVU19TVUNDRVNTOgorCQlwcmludGYoIkludGVsIEFNVDogRU5BQkxFRFxuIik7CisJCWZvciAoaSA9IDA7IGkgPCB2ZXIuY291bnQ7IGkrKykgeworCQkJcHJpbnRmKCIlczpcdCVzXG4iLCB2ZXIudmVyc2lvbnNbaV0uZGVzY3JpcHRpb24uc3RyaW5nLAorCQkJCXZlci52ZXJzaW9uc1tpXS52ZXJzaW9uLnN0cmluZyk7CisJCX0KKwkJcmV0ID0gMDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcHJpbnRmKCJBbiBlcnJvciBoYXMgb2NjdXJyZWRcbiIpOworCQlyZXQgPSAxOworCQlicmVhazsKKwl9CisKK291dDoKKwlyZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9taXNjLWRldmljZXMvbWVpL21laS1jbGllbnQtYnVzLnR4dCBiL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL21laS9tZWktY2xpZW50LWJ1cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQzYmU0ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL21laS9tZWktY2xpZW50LWJ1cy50eHQKQEAgLTAsMCArMSwxNDEgQEAKK0ludGVsKFIpIE1hbmFnZW1lbnQgRW5naW5lIChNRSkgQ2xpZW50IGJ1cyBBUEkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCitSYXRpb25hbGUKKz09PT09PT09PQorCitNRUkgbWlzYyBjaGFyYWN0ZXIgZGV2aWNlIGlzIHVzZWZ1bCBmb3IgZGVkaWNhdGVkIGFwcGxpY2F0aW9ucyB0byBzZW5kIGFuZCByZWNlaXZlCitkYXRhIHRvIHRoZSBtYW55IEZXIGFwcGxpYW5jZSBmb3VuZCBpbiBJbnRlbCdzIE1FIGZyb20gdGhlIHVzZXIgc3BhY2UuCitIb3dldmVyIGZvciBzb21lIG9mIHRoZSBNRSBmdW5jdGlvbmFsaXRpZXMgaXQgbWFrZSBzZW5zZSB0byBsZXZlcmFnZSBleGlzdGluZyBzb2Z0d2FyZQorc3RhY2sgYW5kIGV4cG9zZSB0aGVtIHRocm91Z2ggZXhpc3Rpbmcga2VybmVsIHN1YnN5c3RlbXMuCisKK0luIG9yZGVyIHRvIHBsdWcgc2VhbWxlc3NseSBpbnRvIHRoZSBrZXJuZWwgZGV2aWNlIGRyaXZlciBtb2RlbCB3ZSBhZGQga2VybmVsIHZpcnR1YWwKK2J1cyBhYnN0cmFjdGlvbiBvbiB0b3Agb2YgdGhlIE1FSSBkcml2ZXIuIFRoaXMgYWxsb3dzIGltcGxlbWVudGluZyBsaW51eCBrZXJuZWwgZHJpdmVycworZm9yIHRoZSB2YXJpb3VzIE1FSSBmZWF0dXJlcyBhcyBhIHN0YW5kIGFsb25lIGVudGl0aWVzIGZvdW5kIGluIHRoZWlyIHJlc3BlY3RpdmUgc3Vic3lzdGVtLgorRXhpc3RpbmcgZGV2aWNlIGRyaXZlcnMgY2FuIGV2ZW4gcG90ZW50aWFsbHkgYmUgcmUtdXNlZCBieSBhZGRpbmcgYW4gTUVJIENMIGJ1cyBsYXllciB0bwordGhlIGV4aXN0aW5nIGNvZGUuCisKKworTUVJIENMIGJ1cyBBUEkKKz09PT09PT09PT09PT09CisKK0EgZHJpdmVyIGltcGxlbWVudGF0aW9uIGZvciBhbiBNRUkgQ2xpZW50IGlzIHZlcnkgc2ltaWxhciB0byBleGlzdGluZyBidXMKK2Jhc2VkIGRldmljZSBkcml2ZXJzLiBUaGUgZHJpdmVyIHJlZ2lzdGVycyBpdHNlbGYgYXMgYW4gTUVJIENMIGJ1cyBkcml2ZXIgdGhyb3VnaAordGhlIG1laV9jbF9kcml2ZXIgc3RydWN0dXJlOgorCitzdHJ1Y3QgbWVpX2NsX2RyaXZlciB7CisJc3RydWN0IGRldmljZV9kcml2ZXIgZHJpdmVyOworCWNvbnN0IGNoYXIgKm5hbWU7CisKKwljb25zdCBzdHJ1Y3QgbWVpX2NsX2RldmljZV9pZCAqaWRfdGFibGU7CisKKwlpbnQgKCpwcm9iZSkoc3RydWN0IG1laV9jbF9kZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IG1laV9jbF9pZCAqaWQpOworCWludCAoKnJlbW92ZSkoc3RydWN0IG1laV9jbF9kZXZpY2UgKmRldik7Cit9OworCitzdHJ1Y3QgbWVpX2NsX2lkIHsKKwljaGFyIG5hbWVbTUVJX05BTUVfU0laRV07CisJa2VybmVsX3Vsb25nX3QgZHJpdmVyX2luZm87Cit9OworCitUaGUgbWVpX2NsX2lkIHN0cnVjdHVyZSBhbGxvd3MgdGhlIGRyaXZlciB0byBiaW5kIGl0c2VsZiBhZ2FpbnN0IGEgZGV2aWNlIG5hbWUuCisKK1RvIGFjdHVhbGx5IHJlZ2lzdGVyIGEgZHJpdmVyIG9uIHRoZSBNRSBDbGllbnQgYnVzIG9uZSBtdXN0IGNhbGwgdGhlIG1laV9jbF9hZGRfZHJpdmVyKCkKK0FQSS4gVGhpcyBpcyB0eXBpY2FsbHkgY2FsbGVkIGF0IG1vZHVsZSBpbml0IHRpbWUuCisKK09uY2UgcmVnaXN0ZXJlZCBvbiB0aGUgTUUgQ2xpZW50IGJ1cywgYSBkcml2ZXIgd2lsbCB0eXBpY2FsbHkgdHJ5IHRvIGRvIHNvbWUgSS9PIG9uCit0aGlzIGJ1cyBhbmQgdGhpcyBzaG91bGQgYmUgZG9uZSB0aHJvdWdoIHRoZSBtZWlfY2xfc2VuZCgpIGFuZCBtZWlfY2xfcmVjdigpCityb3V0aW5lcy4gVGhlIGxhdHRlciBpcyBzeW5jaHJvbm91cyAoYmxvY2tzIGFuZCBzbGVlcHMgdW50aWwgZGF0YSBzaG93cyB1cCkuCitJbiBvcmRlciBmb3IgZHJpdmVycyB0byBiZSBub3RpZmllZCBvZiBwZW5kaW5nIGV2ZW50cyB3YWl0aW5nIGZvciB0aGVtIChlLmcuCithbiBSeCBldmVudCkgdGhleSBjYW4gcmVnaXN0ZXIgYW4gZXZlbnQgaGFuZGxlciB0aHJvdWdoIHRoZQorbWVpX2NsX3JlZ2lzdGVyX2V2ZW50X2NiKCkgcm91dGluZS4gQ3VycmVudGx5IG9ubHkgdGhlIE1FSV9FVkVOVF9SWCBldmVudAord2lsbCB0cmlnZ2VyIGFuIGV2ZW50IGhhbmRsZXIgY2FsbCBhbmQgdGhlIGRyaXZlciBpbXBsZW1lbnRhdGlvbiBpcyBzdXBwb3NlZAordG8gY2FsbCBtZWlfcmVjdigpIGZyb20gdGhlIGV2ZW50IGhhbmRsZXIgaW4gb3JkZXIgdG8gZmV0Y2ggdGhlIHBlbmRpbmcKK3JlY2VpdmVkIGJ1ZmZlcnMuCisKKworRXhhbXBsZQorPT09PT09PQorCitBcyBhIHRoZW9yZXRpY2FsIGV4YW1wbGUgbGV0J3MgcHJldGVuZCB0aGUgTUUgY29tZXMgd2l0aCBhICJjb250YWN0IiBORkMgSVAuCitUaGUgZHJpdmVyIGluaXQgYW5kIGV4aXQgcm91dGluZXMgZm9yIHRoaXMgZGV2aWNlIHdvdWxkIGxvb2sgbGlrZToKKworI2RlZmluZSBDT05UQUNUX0RSSVZFUl9OQU1FICJjb250YWN0IgorCitzdGF0aWMgc3RydWN0IG1laV9jbF9kZXZpY2VfaWQgY29udGFjdF9tZWlfY2xfdGJsW10gPSB7CisJeyBDT05UQUNUX0RSSVZFUl9OQU1FLCB9LAorCisJLyogcmVxdWlyZWQgbGFzdCBlbnRyeSAqLworCXsgfQorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUobWVpX2NsLCBjb250YWN0X21laV9jbF90YmwpOworCitzdGF0aWMgc3RydWN0IG1laV9jbF9kcml2ZXIgY29udGFjdF9kcml2ZXIgPSB7CisJLmlkX3RhYmxlID0gY29udGFjdF9tZWlfdGJsLAorCS5uYW1lID0gQ09OVEFDVF9EUklWRVJfTkFNRSwKKworCS5wcm9iZSA9IGNvbnRhY3RfcHJvYmUsCisJLnJlbW92ZSA9IGNvbnRhY3RfcmVtb3ZlLAorfTsKKworc3RhdGljIGludCBjb250YWN0X2luaXQodm9pZCkKK3sKKwlpbnQgcjsKKworCXIgPSBtZWlfY2xfZHJpdmVyX3JlZ2lzdGVyKCZjb250YWN0X2RyaXZlcik7CisJaWYgKHIpIHsKKwkJcHJfZXJyKENPTlRBQ1RfRFJJVkVSX05BTUUgIjogZHJpdmVyIHJlZ2lzdHJhdGlvbiBmYWlsZWRcbiIpOworCQlyZXR1cm4gcjsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgX19leGl0IGNvbnRhY3RfZXhpdCh2b2lkKQoreworCW1laV9jbF9kcml2ZXJfdW5yZWdpc3RlcigmY29udGFjdF9kcml2ZXIpOworfQorCittb2R1bGVfaW5pdChjb250YWN0X2luaXQpOworbW9kdWxlX2V4aXQoY29udGFjdF9leGl0KTsKKworQW5kIHRoZSBkcml2ZXIncyBzaW1wbGlmaWVkIHByb2JlIHJvdXRpbmUgd291bGQgbG9vayBsaWtlIHRoYXQ6CisKK2ludCBjb250YWN0X3Byb2JlKHN0cnVjdCBtZWlfY2xfZGV2aWNlICpkZXYsIHN0cnVjdCBtZWlfY2xfZGV2aWNlX2lkICppZCkKK3sKKwlzdHJ1Y3QgY29udGFjdF9kcml2ZXIgKmNvbnRhY3Q7CisKKwlbLi4uXQorCW1laV9jbF9lbmFibGVfZGV2aWNlKGRldik7CisKKwltZWlfY2xfcmVnaXN0ZXJfZXZlbnRfY2IoZGV2LCBjb250YWN0X2V2ZW50X2NiLCBjb250YWN0KTsKKworCXJldHVybiAwOworfQorCitJbiB0aGUgcHJvYmUgcm91dGluZSB0aGUgZHJpdmVyIGZpcnN0IGVuYWJsZSB0aGUgTUVJIGRldmljZSBhbmQgdGhlbiByZWdpc3RlcnMKK2FuIE1FIGJ1cyBldmVudCBoYW5kbGVyIHdoaWNoIGlzIGFzIGNsb3NlIGFzIGl0IGNhbiBnZXQgdG8gcmVnaXN0ZXJpbmcgYQordGhyZWFkZWQgSVJRIGhhbmRsZXIuCitUaGUgaGFuZGxlciBpbXBsZW1lbnRhdGlvbiB3aWxsIHR5cGljYWxseSBjYWxsIHNvbWUgSS9PIHJvdXRpbmUgZGVwZW5kaW5nIG9uCit0aGUgcGVuZGluZyBldmVudHM6CisKKyNkZWZpbmUgTUFYX05GQ19QQVlMT0FEIDEyOAorCitzdGF0aWMgdm9pZCBjb250YWN0X2V2ZW50X2NiKHN0cnVjdCBtZWlfY2xfZGV2aWNlICpkZXYsIHUzMiBldmVudHMsCisJCQkgICAgIHZvaWQgKmNvbnRleHQpCit7CisJc3RydWN0IGNvbnRhY3RfZHJpdmVyICpjb250YWN0ID0gY29udGV4dDsKKworCWlmIChldmVudHMgJiBCSVQoTUVJX0VWRU5UX1JYKSkgeworCQl1OCBwYXlsb2FkW01BWF9ORkNfUEFZTE9BRF07CisJCWludCBwYXlsb2FkX3NpemU7CisKKwkJcGF5bG9hZF9zaXplID0gbWVpX3JlY3YoZGV2LCBwYXlsb2FkLCBNQVhfTkZDX1BBWUxPQUQpOworCQlpZiAocGF5bG9hZF9zaXplIDw9IDApCisJCQlyZXR1cm47CisKKwkJLyogSG9vayB0byB0aGUgTkZDIHN1YnN5c3RlbSAqLworCQluZmNfaGNpX3JlY3ZfZnJhbWUoY29udGFjdC0+aGRldiwgcGF5bG9hZCwgcGF5bG9hZF9zaXplKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9tZWkvbWVpLnR4dCBiL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL21laS9tZWkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxYzFmYTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9tZWkvbWVpLnR4dApAQCAtMCwwICsxLDI2NiBAQAorSW50ZWwoUikgTWFuYWdlbWVudCBFbmdpbmUgSW50ZXJmYWNlIChJbnRlbChSKSBNRUkpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW50cm9kdWN0aW9uCis9PT09PT09PT09PT0KKworVGhlIEludGVsIE1hbmFnZW1lbnQgRW5naW5lIChJbnRlbCBNRSkgaXMgYW4gaXNvbGF0ZWQgYW5kIHByb3RlY3RlZCBjb21wdXRpbmcKK3Jlc291cmNlIChDby1wcm9jZXNzb3IpIHJlc2lkaW5nIGluc2lkZSBjZXJ0YWluIEludGVsIGNoaXBzZXRzLiBUaGUgSW50ZWwgTUUKK3Byb3ZpZGVzIHN1cHBvcnQgZm9yIGNvbXB1dGVyL0lUIG1hbmFnZW1lbnQgZmVhdHVyZXMuIFRoZSBmZWF0dXJlIHNldAorZGVwZW5kcyBvbiB0aGUgSW50ZWwgY2hpcHNldCBTS1UuCisKK1RoZSBJbnRlbCBNYW5hZ2VtZW50IEVuZ2luZSBJbnRlcmZhY2UgKEludGVsIE1FSSwgcHJldmlvdXNseSBrbm93biBhcyBIRUNJKQoraXMgdGhlIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBIb3N0IGFuZCBJbnRlbCBNRS4gVGhpcyBpbnRlcmZhY2UgaXMgZXhwb3NlZAordG8gdGhlIGhvc3QgYXMgYSBQQ0kgZGV2aWNlLiBUaGUgSW50ZWwgTUVJIERyaXZlciBpcyBpbiBjaGFyZ2Ugb2YgdGhlCitjb21tdW5pY2F0aW9uIGNoYW5uZWwgYmV0d2VlbiBhIGhvc3QgYXBwbGljYXRpb24gYW5kIHRoZSBJbnRlbCBNRSBmZWF0dXJlLgorCitFYWNoIEludGVsIE1FIGZlYXR1cmUgKEludGVsIE1FIENsaWVudCkgaXMgYWRkcmVzc2VkIGJ5IGEgR1VJRC9VVUlEIGFuZAorZWFjaCBjbGllbnQgaGFzIGl0cyBvd24gcHJvdG9jb2wuIFRoZSBwcm90b2NvbCBpcyBtZXNzYWdlLWJhc2VkIHdpdGggYQoraGVhZGVyIGFuZCBwYXlsb2FkIHVwIHRvIDUxMiBieXRlcy4KKworUHJvbWluZW50IHVzYWdlIG9mIHRoZSBJbnRlbCBNRSBJbnRlcmZhY2UgaXMgdG8gY29tbXVuaWNhdGUgd2l0aCBJbnRlbChSKQorQWN0aXZlIE1hbmFnZW1lbnQgVGVjaG5vbG9neSAoSW50ZWwgQU1UKSBpbXBsZW1lbnRlZCBpbiBmaXJtd2FyZSBydW5uaW5nIG9uCit0aGUgSW50ZWwgTUUuCisKK0ludGVsIEFNVCBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBtYW5hZ2UgYSBob3N0IHJlbW90ZWx5IG91dC1vZi1iYW5kIChPT0IpCitldmVuIHdoZW4gdGhlIG9wZXJhdGluZyBzeXN0ZW0gcnVubmluZyBvbiB0aGUgaG9zdCBwcm9jZXNzb3IgaGFzIGNyYXNoZWQgb3IKK2lzIGluIGEgc2xlZXAgc3RhdGUuCisKK1NvbWUgZXhhbXBsZXMgb2YgSW50ZWwgQU1UIHVzYWdlIGFyZToKKyAgIC0gTW9uaXRvcmluZyBoYXJkd2FyZSBzdGF0ZSBhbmQgcGxhdGZvcm0gY29tcG9uZW50cworICAgLSBSZW1vdGUgcG93ZXIgb2ZmL29uICh1c2VmdWwgZm9yIGdyZWVuIGNvbXB1dGluZyBvciBvdmVybmlnaHQgSVQKKyAgICAgbWFpbnRlbmFuY2UpCisgICAtIE9TIHVwZGF0ZXMKKyAgIC0gU3RvcmFnZSBvZiB1c2VmdWwgcGxhdGZvcm0gaW5mb3JtYXRpb24gc3VjaCBhcyBzb2Z0d2FyZSBhc3NldHMKKyAgIC0gQnVpbHQtaW4gaGFyZHdhcmUgS1ZNCisgICAtIFNlbGVjdGl2ZSBuZXR3b3JrIGlzb2xhdGlvbiBvZiBFdGhlcm5ldCBhbmQgSVAgcHJvdG9jb2wgZmxvd3MgYmFzZWQKKyAgICAgb24gcG9saWNpZXMgc2V0IGJ5IGEgcmVtb3RlIG1hbmFnZW1lbnQgY29uc29sZQorICAgLSBJREUgZGV2aWNlIHJlZGlyZWN0aW9uIGZyb20gcmVtb3RlIG1hbmFnZW1lbnQgY29uc29sZQorCitJbnRlbCBBTVQgKE9PQikgY29tbXVuaWNhdGlvbiBpcyBiYXNlZCBvbiBTT0FQIChkZXByZWNhdGVkCitzdGFydGluZyB3aXRoIFJlbGVhc2UgNi4wKSBvdmVyIEhUVFAvUyBvciBXUy1NYW5hZ2VtZW50IHByb3RvY29sIG92ZXIKK0hUVFAvUyB0aGF0IGFyZSByZWNlaXZlZCBmcm9tIGEgcmVtb3RlIG1hbmFnZW1lbnQgY29uc29sZSBhcHBsaWNhdGlvbi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgSW50ZWwgQU1UOgoraHR0cDovL3NvZnR3YXJlLmludGVsLmNvbS9zaXRlcy9tYW5hZ2VhYmlsaXR5L0FNVF9JbXBsZW1lbnRhdGlvbl9hbmRfUmVmZXJlbmNlX0d1aWRlCisKKworSW50ZWwgTUVJIERyaXZlcgorPT09PT09PT09PT09PT09PQorCitUaGUgZHJpdmVyIGV4cG9zZXMgYSBtaXNjIGRldmljZSBjYWxsZWQgL2Rldi9tZWkuCisKK0FuIGFwcGxpY2F0aW9uIG1haW50YWlucyBjb21tdW5pY2F0aW9uIHdpdGggYW4gSW50ZWwgTUUgZmVhdHVyZSB3aGlsZQorL2Rldi9tZWkgaXMgb3Blbi4gVGhlIGJpbmRpbmcgdG8gYSBzcGVjaWZpYyBmZWF0dXJlIGlzIHBlcmZvcm1lZCBieSBjYWxsaW5nCitNRUlfQ09OTkVDVF9DTElFTlRfSU9DVEwsIHdoaWNoIHBhc3NlcyB0aGUgZGVzaXJlZCBVVUlELgorVGhlIG51bWJlciBvZiBpbnN0YW5jZXMgb2YgYW4gSW50ZWwgTUUgZmVhdHVyZSB0aGF0IGNhbiBiZSBvcGVuZWQKK2F0IHRoZSBzYW1lIHRpbWUgZGVwZW5kcyBvbiB0aGUgSW50ZWwgTUUgZmVhdHVyZSwgYnV0IG1vc3Qgb2YgdGhlCitmZWF0dXJlcyBhbGxvdyBvbmx5IGEgc2luZ2xlIGluc3RhbmNlLgorCitUaGUgSW50ZWwgQU1UIEhvc3QgSW50ZXJmYWNlIChJbnRlbCBBTVRISSkgZmVhdHVyZSBzdXBwb3J0cyBtdWx0aXBsZQorc2ltdWx0YW5lb3VzIHVzZXIgY29ubmVjdGVkIGFwcGxpY2F0aW9ucy4gVGhlIEludGVsIE1FSSBkcml2ZXIKK2hhbmRsZXMgdGhpcyBpbnRlcm5hbGx5IGJ5IG1haW50YWluaW5nIHJlcXVlc3QgcXVldWVzIGZvciB0aGUgYXBwbGljYXRpb25zLgorCitUaGUgZHJpdmVyIGlzIHRyYW5zcGFyZW50IHRvIGRhdGEgdGhhdCBhcmUgcGFzc2VkIGJldHdlZW4gZmlybXdhcmUgZmVhdHVyZQorYW5kIGhvc3QgYXBwbGljYXRpb24uCisKK0JlY2F1c2Ugc29tZSBvZiB0aGUgSW50ZWwgTUUgZmVhdHVyZXMgY2FuIGNoYW5nZSB0aGUgc3lzdGVtCitjb25maWd1cmF0aW9uLCB0aGUgZHJpdmVyIGJ5IGRlZmF1bHQgYWxsb3dzIG9ubHkgYSBwcml2aWxlZ2VkCit1c2VyIHRvIGFjY2VzcyBpdC4KKworQSBjb2RlIHNuaXBwZXQgZm9yIGFuIGFwcGxpY2F0aW9uIGNvbW11bmljYXRpbmcgd2l0aCBJbnRlbCBBTVRISSBjbGllbnQ6CisKKwlzdHJ1Y3QgbWVpX2Nvbm5lY3RfY2xpZW50X2RhdGEgZGF0YTsKKwlmZCA9IG9wZW4oTUVJX0RFVklDRSk7CisKKwlkYXRhLmQuaW5fY2xpZW50X3V1aWQgPSBBTVRISV9VVUlEOworCisJaW9jdGwoZmQsIElPQ1RMX01FSV9DT05ORUNUX0NMSUVOVCwgJmRhdGEpOworCisJcHJpbnRmKCJWZXI9JWQsIE1heExlbj0lbGRcbiIsCisJCQlkYXRhLmQuaW5fY2xpZW50X3V1aWQucHJvdG9jb2xfdmVyc2lvbiwKKwkJCWRhdGEuZC5pbl9jbGllbnRfdXVpZC5tYXhfbXNnX2xlbmd0aCk7CisKKwlbLi4uXQorCisJd3JpdGUoZmQsIGFtdGhpX3JlcV9kYXRhLCBhbXRoaV9yZXFfZGF0YV9sZW4pOworCisJWy4uLl0KKworCXJlYWQoZmQsICZhbXRoaV9yZXNfZGF0YSwgYW10aGlfcmVzX2RhdGFfbGVuKTsKKworCVsuLi5dCisJY2xvc2UoZmQpOworCisKK0lPQ1RMCis9PT09PQorCitUaGUgSW50ZWwgTUVJIERyaXZlciBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIElPQ1RMIGNvbW1hbmRzOgorCUlPQ1RMX01FSV9DT05ORUNUX0NMSUVOVAlDb25uZWN0IHRvIGZpcm13YXJlIEZlYXR1cmUgKGNsaWVudCkuCisKKwl1c2FnZToKKwkJc3RydWN0IG1laV9jb25uZWN0X2NsaWVudF9kYXRhIGNsaWVudERhdGE7CisJCWlvY3RsKGZkLCBJT0NUTF9NRUlfQ09OTkVDVF9DTElFTlQsICZjbGllbnREYXRhKTsKKworCWlucHV0czoKKwkJbWVpX2Nvbm5lY3RfY2xpZW50X2RhdGEgc3RydWN0IGNvbnRhaW4gdGhlIGZvbGxvd2luZworCQlpbnB1dCBmaWVsZDoKKworCQlpbl9jbGllbnRfdXVpZCAtCVVVSUQgb2YgdGhlIEZXIEZlYXR1cmUgdGhhdCBuZWVkcworCQkJCQl0byBjb25uZWN0IHRvLgorCW91dHB1dHM6CisJCW91dF9jbGllbnRfcHJvcGVydGllcyAtIENsaWVudCBQcm9wZXJ0aWVzOiBNVFUgYW5kIFByb3RvY29sIFZlcnNpb24uCisKKwllcnJvciByZXR1cm5zOgorCQlFSU5WQUwJV3JvbmcgSU9DVEwgTnVtYmVyCisJCUVOT0RFVglEZXZpY2Ugb3IgQ29ubmVjdGlvbiBpcyBub3QgaW5pdGlhbGl6ZWQgb3IgcmVhZHkuCisJCQkoZS5nLiBXcm9uZyBVVUlEKQorCQlFTk9NRU0JVW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSB0byBjbGllbnQgaW50ZXJuYWwgZGF0YS4KKwkJRUZBVUxUCUZhdGFsIEVycm9yIChlLmcuIFVuYWJsZSB0byBhY2Nlc3MgdXNlciBpbnB1dCBkYXRhKQorCQlFQlVTWQlDb25uZWN0aW9uIEFscmVhZHkgT3BlbgorCisJTm90ZXM6CisgICAgICAgIG1heF9tc2dfbGVuZ3RoIChNVFUpIGluIGNsaWVudCBwcm9wZXJ0aWVzIGRlc2NyaWJlcyB0aGUgbWF4aW11bQorICAgICAgICBkYXRhIHRoYXQgY2FuIGJlIHNlbnQgb3IgcmVjZWl2ZWQuIChlLmcuIGlmIE1UVT0ySywgY2FuIHNlbmQKKyAgICAgICAgcmVxdWVzdHMgdXAgdG8gYnl0ZXMgMmsgYW5kIHJlY2VpdmVkIHJlc3BvbnNlcyB1cCB0byAyayBieXRlcykuCisKKwlJT0NUTF9NRUlfTk9USUZZX1NFVDogZW5hYmxlIG9yIGRpc2FibGUgZXZlbnQgbm90aWZpY2F0aW9ucworCisJVXNhZ2U6CisJCXVpbnQzMl90IGVuYWJsZTsKKwkJaW9jdGwoZmQsIElPQ1RMX01FSV9OT1RJRllfU0VULCAmZW5hYmxlKTsKKworCUlucHV0czoKKwkJdWludDMyX3QgZW5hYmxlID0gMTsKKwkJb3IKKwkJdWludDMyX3QgZW5hYmxlW2Rpc2FibGVdID0gMDsKKworCUVycm9yIHJldHVybnM6CisJCUVJTlZBTAlXcm9uZyBJT0NUTCBOdW1iZXIKKwkJRU5PREVWCURldmljZSAgaXMgbm90IGluaXRpYWxpemVkIG9yIHRoZSBjbGllbnQgbm90IGNvbm5lY3RlZAorCQlFTk9NRU0JVW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSB0byBjbGllbnQgaW50ZXJuYWwgZGF0YS4KKwkJRUZBVUxUCUZhdGFsIEVycm9yIChlLmcuIFVuYWJsZSB0byBhY2Nlc3MgdXNlciBpbnB1dCBkYXRhKQorCQlFT1BOT1RTVVBQIGlmIHRoZSBkZXZpY2UgZG9lc24ndCBzdXBwb3J0IHRoZSBmZWF0dXJlCisKKwlOb3RlczoKKwlUaGUgY2xpZW50IG11c3QgYmUgY29ubmVjdGVkIGluIG9yZGVyIHRvIGVuYWJsZSBub3RpZmljYXRpb24gZXZlbnRzCisKKworCUlPQ1RMX01FSV9OT1RJRllfR0VUIDogcmV0cmlldmUgZXZlbnQKKworCVVzYWdlOgorCQl1aW50MzJfdCBldmVudDsKKwkJaW9jdGwoZmQsIElPQ1RMX01FSV9OT1RJRllfR0VULCAmZXZlbnQpOworCisJT3V0cHV0czoKKwkJMSAtIGlmIGFuIGV2ZW50IGlzIHBlbmRpbmcKKwkJMCAtIGlmIHRoZXJlIGlzIG5vIGV2ZW4gcGVuZGluZworCisJRXJyb3IgcmV0dXJuczoKKwkJRUlOVkFMCVdyb25nIElPQ1RMIE51bWJlcgorCQlFTk9ERVYJRGV2aWNlIGlzIG5vdCBpbml0aWFsaXplZCBvciB0aGUgY2xpZW50IG5vdCBjb25uZWN0ZWQKKwkJRU5PTUVNCVVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgdG8gY2xpZW50IGludGVybmFsIGRhdGEuCisJCUVGQVVMVAlGYXRhbCBFcnJvciAoZS5nLiBVbmFibGUgdG8gYWNjZXNzIHVzZXIgaW5wdXQgZGF0YSkKKwkJRU9QTk9UU1VQUCBpZiB0aGUgZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgZmVhdHVyZQorCisJTm90ZXM6CisJVGhlIGNsaWVudCBtdXN0IGJlIGNvbm5lY3RlZCBhbmQgZXZlbnQgbm90aWZpY2F0aW9uIGhhcyB0byBiZSBlbmFibGVkCisJaW4gb3JkZXIgdG8gcmVjZWl2ZSBhbiBldmVudAorCisKK0ludGVsIE1FIEFwcGxpY2F0aW9ucworPT09PT09PT09PT09PT09PT09PT09CisKKwkxKSBJbnRlbCBMb2NhbCBNYW5hZ2VtZW50IFNlcnZpY2UgKEludGVsIExNUykKKworCSAgIEFwcGxpY2F0aW9ucyBydW5uaW5nIGxvY2FsbHkgb24gdGhlIHBsYXRmb3JtIGNvbW11bmljYXRlIHdpdGggSW50ZWwgQU1UIFJlbGVhc2UKKwkgICAyLjAgYW5kIGxhdGVyIHJlbGVhc2VzIGluIHRoZSBzYW1lIHdheSB0aGF0IG5ldHdvcmsgYXBwbGljYXRpb25zIGRvIHZpYSBTT0FQCisJICAgb3ZlciBIVFRQIChkZXByZWNhdGVkIHN0YXJ0aW5nIHdpdGggUmVsZWFzZSA2LjApIG9yIHdpdGggV1MtTWFuYWdlbWVudCBvdmVyCisJICAgU09BUCBvdmVyIEhUVFAuIFRoaXMgbWVhbnMgdGhhdCBzb21lIEludGVsIEFNVCBmZWF0dXJlcyBjYW4gYmUgYWNjZXNzZWQgZnJvbSBhCisJICAgbG9jYWwgYXBwbGljYXRpb24gdXNpbmcgdGhlIHNhbWUgbmV0d29yayBpbnRlcmZhY2UgYXMgYSByZW1vdGUgYXBwbGljYXRpb24KKwkgICBjb21tdW5pY2F0aW5nIHdpdGggSW50ZWwgQU1UIG92ZXIgdGhlIG5ldHdvcmsuCisKKwkgICBXaGVuIGEgbG9jYWwgYXBwbGljYXRpb24gc2VuZHMgYSBtZXNzYWdlIGFkZHJlc3NlZCB0byB0aGUgbG9jYWwgSW50ZWwgQU1UIGhvc3QKKwkgICBuYW1lLCB0aGUgSW50ZWwgTE1TLCB3aGljaCBsaXN0ZW5zIGZvciB0cmFmZmljIGRpcmVjdGVkIHRvIHRoZSBob3N0IG5hbWUsCisJICAgaW50ZXJjZXB0cyB0aGUgbWVzc2FnZSBhbmQgcm91dGVzIGl0IHRvIHRoZSBJbnRlbCBNRUkuCisJICAgRm9yIG1vcmUgaW5mb3JtYXRpb246CisJICAgaHR0cDovL3NvZnR3YXJlLmludGVsLmNvbS9zaXRlcy9tYW5hZ2VhYmlsaXR5L0FNVF9JbXBsZW1lbnRhdGlvbl9hbmRfUmVmZXJlbmNlX0d1aWRlCisJICAgVW5kZXIgIkFib3V0IEludGVsIEFNVCIgPT4gIkxvY2FsIEFjY2VzcyIKKworCSAgIEZvciBkb3dubG9hZGluZyBJbnRlbCBMTVM6CisJICAgaHR0cDovL3NvZnR3YXJlLmludGVsLmNvbS9lbi11cy9hcnRpY2xlcy9kb3dubG9hZC10aGUtbGF0ZXN0LWludGVsLWFtdC1vcGVuLXNvdXJjZS1kcml2ZXJzLworCisJICAgVGhlIEludGVsIExNUyBvcGVucyBhIGNvbm5lY3Rpb24gdXNpbmcgdGhlIEludGVsIE1FSSBkcml2ZXIgdG8gdGhlIEludGVsIExNUworCSAgIGZpcm13YXJlIGZlYXR1cmUgdXNpbmcgYSBkZWZpbmVkIFVVSUQgYW5kIHRoZW4gY29tbXVuaWNhdGVzIHdpdGggdGhlIGZlYXR1cmUKKwkgICB1c2luZyBhIHByb3RvY29sIGNhbGxlZCBJbnRlbCBBTVQgUG9ydCBGb3J3YXJkaW5nIFByb3RvY29sIChJbnRlbCBBUEYgcHJvdG9jb2wpLgorCSAgIFRoZSBwcm90b2NvbCBpcyB1c2VkIHRvIG1haW50YWluIG11bHRpcGxlIHNlc3Npb25zIHdpdGggSW50ZWwgQU1UIGZyb20gYQorCSAgIHNpbmdsZSBhcHBsaWNhdGlvbi4KKworCSAgIFNlZSB0aGUgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbiBpbiB0aGUgSW50ZWwgQU1UIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoU0RLKQorCSAgIGh0dHA6Ly9zb2Z0d2FyZS5pbnRlbC5jb20vc2l0ZXMvbWFuYWdlYWJpbGl0eS9BTVRfSW1wbGVtZW50YXRpb25fYW5kX1JlZmVyZW5jZV9HdWlkZQorCSAgIFVuZGVyICJTREsgUmVzb3VyY2VzIiA9PiAiSW50ZWwoUikgdlBybyhUTSkgR2F0ZXdheSAoTVBTKSIKKwkgICA9PiAiSW5mb3JtYXRpb24gZm9yIEludGVsKFIpIHZQcm8oVE0pIEdhdGV3YXkgRGV2ZWxvcGVycyIKKwkgICA9PiAiRGVzY3JpcHRpb24gb2YgdGhlIEludGVsIEFNVCBQb3J0IEZvcndhcmRpbmcgKEFQRikgUHJvdG9jb2wiCisKKwkyKSBJbnRlbCBBTVQgUmVtb3RlIGNvbmZpZ3VyYXRpb24gdXNpbmcgYSBMb2NhbCBBZ2VudAorCisJICAgQSBMb2NhbCBBZ2VudCBlbmFibGVzIElUIHBlcnNvbm5lbCB0byBjb25maWd1cmUgSW50ZWwgQU1UIG91dC1vZi10aGUtYm94CisJICAgd2l0aG91dCByZXF1aXJpbmcgaW5zdGFsbGluZyBhZGRpdGlvbmFsIGRhdGEgdG8gZW5hYmxlIHNldHVwLiBUaGUgcmVtb3RlCisJICAgY29uZmlndXJhdGlvbiBwcm9jZXNzIG1heSBpbnZvbHZlIGFuIElTVi1kZXZlbG9wZWQgcmVtb3RlIGNvbmZpZ3VyYXRpb24KKwkgICBhZ2VudCB0aGF0IHJ1bnMgb24gdGhlIGhvc3QuCisJICAgRm9yIG1vcmUgaW5mb3JtYXRpb246CisJICAgaHR0cDovL3NvZnR3YXJlLmludGVsLmNvbS9zaXRlcy9tYW5hZ2VhYmlsaXR5L0FNVF9JbXBsZW1lbnRhdGlvbl9hbmRfUmVmZXJlbmNlX0d1aWRlCisJICAgVW5kZXIgIlNldHVwIGFuZCBDb25maWd1cmF0aW9uIG9mIEludGVsIEFNVCIgPT4KKwkgICAiU0RLIFRvb2xzIFN1cHBvcnRpbmcgU2V0dXAgYW5kIENvbmZpZ3VyYXRpb24iID0+CisJICAgIlVzaW5nIHRoZSBMb2NhbCBBZ2VudCBTYW1wbGUiCisKKwkgICBBbiBvcGVuIHNvdXJjZSBJbnRlbCBBTVQgY29uZmlndXJhdGlvbiB1dGlsaXR5LAlpbXBsZW1lbnRpbmcgYSBsb2NhbCBhZ2VudAorCSAgIHRoYXQgYWNjZXNzZXMgdGhlIEludGVsIE1FSSBkcml2ZXIsIGNhbiBiZSBmb3VuZCBoZXJlOgorCSAgIGh0dHA6Ly9zb2Z0d2FyZS5pbnRlbC5jb20vZW4tdXMvYXJ0aWNsZXMvZG93bmxvYWQtdGhlLWxhdGVzdC1pbnRlbC1hbXQtb3Blbi1zb3VyY2UtZHJpdmVycy8KKworCitJbnRlbCBBTVQgT1MgSGVhbHRoIFdhdGNoZG9nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBJbnRlbCBBTVQgV2F0Y2hkb2cgaXMgYW4gT1MgSGVhbHRoIChIYW5nL0NyYXNoKSB3YXRjaGRvZy4KK1doZW5ldmVyIHRoZSBPUyBoYW5ncyBvciBjcmFzaGVzLCBJbnRlbCBBTVQgd2lsbCBzZW5kIGFuIGV2ZW50Cit0byBhbnkgc3Vic2NyaWJlciB0byB0aGlzIGV2ZW50LiBUaGlzIG1lY2hhbmlzbSBtZWFucyB0aGF0CitJVCBrbm93cyB3aGVuIGEgcGxhdGZvcm0gY3Jhc2hlcyBldmVuIHdoZW4gdGhlcmUgaXMgYSBoYXJkIGZhaWx1cmUgb24gdGhlIGhvc3QuCisKK1RoZSBJbnRlbCBBTVQgV2F0Y2hkb2cgaXMgY29tcG9zZWQgb2YgdHdvIHBhcnRzOgorCTEpIEZpcm13YXJlIGZlYXR1cmUgLSByZWNlaXZlcyB0aGUgaGVhcnRiZWF0cworCSAgIGFuZCBzZW5kcyBhbiBldmVudCB3aGVuIHRoZSBoZWFydGJlYXRzIHN0b3AuCisJMikgSW50ZWwgTUVJIGRyaXZlciAtIGNvbm5lY3RzIHRvIHRoZSB3YXRjaGRvZyBmZWF0dXJlLCBjb25maWd1cmVzIHRoZQorCSAgIHdhdGNoZG9nIGFuZCBzZW5kcyB0aGUgaGVhcnRiZWF0cy4KKworVGhlIEludGVsIE1FSSBkcml2ZXIgdXNlcyB0aGUga2VybmVsIHdhdGNoZG9nIEFQSSB0byBjb25maWd1cmUgdGhlIEludGVsIEFNVAorV2F0Y2hkb2cgYW5kIHRvIHNlbmQgaGVhcnRiZWF0cyB0byBpdC4gVGhlIGRlZmF1bHQgdGltZW91dCBvZiB0aGUKK3dhdGNoZG9nIGlzIDEyMCBzZWNvbmRzLgorCitJZiB0aGUgSW50ZWwgQU1UIFdhdGNoZG9nIGZlYXR1cmUgZG9lcyBub3QgZXhpc3QgKGkuZS4gdGhlIGNvbm5lY3Rpb24gZmFpbGVkKSwKK3RoZSBJbnRlbCBNRUkgZHJpdmVyIHdpbGwgZGlzYWJsZSB0aGUgc2VuZGluZyBvZiBoZWFydGJlYXRzLgorCisKK1N1cHBvcnRlZCBDaGlwc2V0cworPT09PT09PT09PT09PT09PT09CisKKzcgU2VyaWVzIENoaXBzZXQgRmFtaWx5Cis2IFNlcmllcyBDaGlwc2V0IEZhbWlseQorNSBTZXJpZXMgQ2hpcHNldCBGYW1pbHkKKzQgU2VyaWVzIENoaXBzZXQgRmFtaWx5CitNb2JpbGUgNCBTZXJpZXMgQ2hpcHNldCBGYW1pbHkKK0lDSDkKKzgyOTQ2R1ovR0wKKzgyRzM1IEV4cHJlc3MKKzgyUTk2My9ROTY1Cis4MlA5NjUvRzk2NQorTW9iaWxlIFBNOTY1L0dNOTY1CitNb2JpbGUgR01FOTY1L0dMRTk2MAorODJRMzUgRXhwcmVzcworODJHMzMvRzMxL1AzNS9QMzEgRXhwcmVzcworODJRMzMgRXhwcmVzcworODJYMzgvWDQ4IEV4cHJlc3MKKworLS0tCitsaW51eC1tZWlAbGludXguaW50ZWwuY29tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9zcGVhci1wY2llLWdhZGdldC50eHQgYi9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9zcGVhci1wY2llLWdhZGdldC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODliODhkZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL3NwZWFyLXBjaWUtZ2FkZ2V0LnR4dApAQCAtMCwwICsxLDEzMCBAQAorU3BlYXIgUENJZSBHYWRnZXQgRHJpdmVyOgorCitBdXRob3IKKz09PT09PT09PT09PT0KK1ByYXR5dXNoIEFuYW5kIChwcmF0eXVzaC5hbmFuZEBnbWFpbC5jb20pCisKK0xvY2F0aW9uCis9PT09PT09PT09PT0KK2RyaXZlci9taXNjL3NwZWFyMTN4eF9wY2llX2dhZGdldC5jCisKK1N1cHBvcnRlZCBDaGlwOgorPT09PT09PT09PT09PT09PT09PQorU1BFQXIxMzAwCitTUEVBcjEzMTAKKworTWVudWNvbmZpZyBvcHRpb246Cis9PT09PT09PT09PT09PT09PT09PT09PT09PQorRGV2aWNlIERyaXZlcnMKKwlNaXNjIGRldmljZXMKKwkJUENJZSBnYWRnZXQgc3VwcG9ydCBmb3IgU1BFQXIxM1hYIHBsYXRmb3JtCitwdXJwb3NlCis9PT09PT09PT09PQorVGhpcyBkcml2ZXIgaGFzIHNldmVyYWwgbm9kZXMgd2hpY2ggY2FuIGJlIHJlYWQvd3JpdHRlbiBieSBjb25maWdmcyBpbnRlcmZhY2UuCitJdHMgbWFpbiBwdXJwb3NlIGlzIHRvIGNvbmZpZ3VyZSBzZWxlY3RlZCBkdWFsIG1vZGUgUENJZSBjb250cm9sbGVyIGFzIGRldmljZQorYW5kIHRoZW4gcHJvZ3JhbSBpdHMgdmFyaW91cyByZWdpc3RlcnMgdG8gY29uZmlndXJlIGl0IGFzIGEgcGFydGljdWxhciBkZXZpY2UKK3R5cGUuIFRoaXMgZHJpdmVyIGNhbiBiZSB1c2VkIHRvIHNob3cgc3BlYXIncyBQQ0llIGRldmljZSBjYXBhYmlsaXR5LgorCitEZXNjcmlwdGlvbiBvZiBkaWZmZXJlbnQgbm9kZXM6Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcmVhZCBiZWhhdmlvciBvZiBub2RlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbGluayAJCTpnaXZlcyBsdHNzbSBzdGF0dXMuCitpbnRfdHlwZSAJOnR5cGUgb2Ygc3VwcG9ydGVkIGludGVycnVwdAorbm9fb2ZfbXNpIAk6emVybyBpZiBNU0kgaXMgbm90IGVuYWJsZWQgYnkgaG9zdC4gQSBwb3NpdGl2ZSB2YWx1ZSBpcyB0aGUKKwkJbnVtYmVyIG9mIE1TSSB2ZWN0b3IgZ3JhbnRlZC4KK3ZlbmRvcl9pZAk6cmV0dXJucyBwcm9ncmFtbWVkIHZlbmRvciBpZCAoaGV4KQorZGV2aWNlX2lkCTpyZXR1cm5zIHByb2dyYW1tZWQgZGV2aWNlIGlkKGhleCkKK2JhcjBfc2l6ZToJOnJldHVybnMgc2l6ZSBvZiBiYXIwIGluIGhleC4KK2JhcjBfYWRkcmVzcwk6cmV0dXJucyBhZGRyZXNzIG9mIGJhcjAgbWFwcGVkIGFyZWEgaW4gaGV4LgorYmFyMF9yd19vZmZzZXQJOnJldHVybnMgb2Zmc2V0IG9mIGJhcjAgZm9yIHdoaWNoIGJhcjBfZGF0YSB3aWxsIHJldHVybiB2YWx1ZS4KK2JhcjBfZGF0YQk6cmV0dXJucyBkYXRhIGF0IGJhcjBfcndfb2Zmc2V0LgorCit3cml0ZSBiZWhhdmlvciBvZiBub2RlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbGluayAJCTp3cml0ZSBVUCB0byBlbmFibGUgbHRzbW0gRE9XTiB0byBkaXNhYmxlCitpbnRfdHlwZQk6d3JpdGUgaW50ZXJydXB0IHR5cGUgdG8gYmUgY29uZmlndXJlZCBhbmQgKGludF90eXBlIGNvdWxkIGJlCisJCUlOVEEsIE1TSSBvciBOT19JTlQpLiBTZWxlY3QgTVNJIG9ubHkgd2hlbiB5b3UgaGF2ZSBwcm9ncmFtbWVkCisJCW5vX29mX21zaSBub2RlLgorbm9fb2ZfbXNpCTpudW1iZXIgb2YgTVNJIHZlY3RvciBuZWVkZWQuCitpbnRhCQk6d3JpdGUgMSB0byBhc3NlcnQgSU5UQSBhbmQgMCB0byBkZS1hc3NlcnQuCitzZW5kX21zaQk6d3JpdGUgTVNJIHZlY3RvciB0byBiZSBzZW50LgordmVuZG9yX2lkCTp3cml0ZSB2ZW5kb3IgaWQoaGV4KSB0byBiZSBwcm9ncmFtbWVkLgorZGV2aWNlX2lkCTp3cml0ZSBkZXZpY2UgaWQoaGV4KSB0byBiZSBwcm9ncmFtbWVkLgorYmFyMF9zaXplCTp3cml0ZSBzaXplIG9mIGJhcjAgaW4gaGV4LiBkZWZhdWx0IGJhcjAgc2l6ZSBpcyAxMDAwIChoZXgpCisJCWJ5dGVzLgorYmFyMF9hZGRyZXNzCTp3cml0ZQlhZGRyZXNzIG9mIGJhcjAgbWFwcGVkIGFyZWEgaW4gaGV4LiAoZGVmYXVsdCBtYXBwaW5nIG9mCisJCWJhcjAgaXMgU1lTUkFNMShFMDgwMDAwMCkuIEFsd2F5cyBwcm9ncmFtIGJhciBzaXplIGJlZm9yZSBiYXIKKwkJYWRkcmVzcy4gS2VybmVsIG1pZ2h0IG1vZGlmeSBiYXIgc2l6ZSBhbmQgYWRkcmVzcyBmb3IgYWxpZ25tZW50LCBzbworCQlyZWFkIGJhY2sgYmFyIHNpemUgYW5kIGFkZHJlc3MgYWZ0ZXIgd3JpdGluZyB0byBjcm9zcyBjaGVjay4KK2JhcjBfcndfb2Zmc2V0CTp3cml0ZSBvZmZzZXQgb2YgYmFyMCBmb3Igd2hpY2gJYmFyMF9kYXRhIHdpbGwgd3JpdGUgdmFsdWUuCitiYXIwX2RhdGEJOndyaXRlIGRhdGEgdG8gYmUgd3JpdHRlbiBhdCBiYXIwX3J3X29mZnNldC4KKworTm9kZSBwcm9ncmFtbWluZyBleGFtcGxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1Byb2dyYW0gYWxsIFBDSWUgcmVnaXN0ZXJzIGluIHN1Y2ggYSB3YXkgdGhhdCB3aGVuIHRoaXMgZGV2aWNlIGlzIGNvbm5lY3RlZAordG8gdGhlIFBDSWUgaG9zdCwgdGhlbiBob3N0IHNlZXMgdGhpcyBkZXZpY2UgYXMgMU1CIFJBTS4KKyNtb3VudCAtdCBjb25maWdmcyBub25lIC9Db25maWcKK0ZvciBudGggUENJZSBEZXZpY2UgQ29udHJvbGxlcgorIyBjZCAvY29uZmlnL3BjaWVfZ2FkZ2V0Lm4vCitOb3cgeW91IGhhdmUgYWxsIHRoZSBub2RlcyBpbiB0aGlzIGRpcmVjdG9yeS4KK3Byb2dyYW0gdmVuZG9yIGlkIGFzIDB4MTA0YQorIyBlY2hvIDEwNEEgPj4gdmVuZG9yX2lkCisKK3Byb2dyYW0gZGV2aWNlIGlkIGFzIDB4Q0Q4MAorIyBlY2hvIENEODAgPj4gZGV2aWNlX2lkCisKK3Byb2dyYW0gQkFSMCBzaXplIGFzIDFNQgorIyBlY2hvIDEwMDAwMCA+PiBiYXIwX3NpemUKKworY2hlY2sgZm9yIHByb2dyYW1tZWQgYmFyMCBzaXplCisjIGNhdCBiYXIwX3NpemUKKworUHJvZ3JhbSBCQVIwIEFkZHJlc3MgYXMgRERSICgweDIxMDAwMDApLiBUaGlzIGlzIHRoZSBwaHlzaWNhbCBhZGRyZXNzIG9mCittZW1vcnksIHdoaWNoIGlzIHRvIGJlIG1hZGUgdmlzaWJsZSB0byBQQ0llIGhvc3QuIFNpbWlsYXJseSBhbnkgb3RoZXIgcGVyaXBoZXJhbAorY2FuIGFsc28gYmUgbWFkZSB2aXNpYmxlIHRvIFBDSWUgaG9zdC4gRS5nLiwgaWYgeW91IHByb2dyYW0gYmFzZSBhZGRyZXNzIG9mIFVBUlQKK2FzIEJBUjAgYWRkcmVzcyB0aGVuIHdoZW4gdGhpcyBkZXZpY2Ugd2lsbCBiZSBjb25uZWN0ZWQgdG8gYSBob3N0LCBpdCB3aWxsIGJlCit2aXNpYmxlIGFzIFVBUlQuCisjIGVjaG8gMjEwMDAwMCA+PiBiYXIwX2FkZHJlc3MKKworcHJvZ3JhbSBpbnRlcnJ1cHQgdHlwZSA6IElOVEEKKyMgZWNobyBJTlRBID4+IGludF90eXBlCisKK2dvIGZvciBsaW5rIHVwIG5vdy4KKyMgZWNobyBVUCA+PiBsaW5rCisKK0l0IHdpbGwgaGF2ZSB0byBiZSBpbnN1cmVkIHRoYXQsIG9uY2UgbGluayB1cCBpcyBkb25lIG9uIGdhZGdldCwgdGhlbiBvbmx5IGhvc3QKK2lzIGluaXRpYWxpemVkIGFuZCBzdGFydCB0byBzZWFyY2ggUENJZSBkZXZpY2VzIG9uIGl0cyBwb3J0LgorCisvKndhaXQgdGlsbCBsaW5rIGlzIHVwKi8KKyMgY2F0IGxpbmsKK3dhaXQgdGlsbCBpdCByZXR1cm5zIFVQLgorCitUbyBhc3NlcnQgSU5UQQorIyBlY2hvIDEgPj4gaW50YQorCitUbyBkZS1hc3NlcnQgSU5UQQorIyBlY2hvIDAgPj4gaW50YQorCitpZiBNU0kgaXMgdG8gYmUgdXNlZCBhcyBpbnRlcnJ1cHQsIHByb2dyYW0gbm8gb2YgbXNpIHZlY3RvciBuZWVkZWQgKHNheTQpCisjIGVjaG8gNCA+PiBub19vZl9tc2kKKworc2VsZWN0IE1TSSBhcyBpbnRlcnJ1cHQgdHlwZQorIyBlY2hvIE1TSSA+PiBpbnRfdHlwZQorCitnbyBmb3IgbGluayB1cCBub3cKKyMgZWNobyBVUCA+PiBsaW5rCisKK3dhaXQgdGlsbCBsaW5rIGlzIHVwCisjIGNhdCBsaW5rCitBbiBhcHBsaWNhdGlvbiBjYW4gcmVwZXRpdGl2ZWx5IHJlYWQgdGhpcyBub2RlIHRpbGwgbGluayBpcyBmb3VuZCBVUC4gSXQgY2FuCitzbGVlcCBiZXR3ZWVuIHR3byByZWFkLgorCit3YWl0IHRpbGwgbXNpIGlzIGVuYWJsZWQKKyMgY2F0IG5vX29mX21zaQorU2hvdWxkIHJldHVybiA0IChudW1iZXIgb2YgcmVxdWVzdGVkIE1TSSB2ZWN0b3IpCisKK3RvIHNlbmQgbXNpIHZlY3RvciAyCisjIGVjaG8gMiA+PiBzZW5kX21zaQorI2NkIC0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbW1jLzAwLUlOREVYIGIvRG9jdW1lbnRhdGlvbi9tbWMvMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTliYTY3MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbW1jLzAwLUlOREVYCkBAIC0wLDAgKzEsOCBAQAorMDAtSU5ERVgKKyAgICAgICAgLSB0aGlzIGZpbGUKK21tYy1kZXYtYXR0cnMudHh0CisgICAgICAgIC0gaW5mbyBvbiBTRCBhbmQgTU1DIGRldmljZSBhdHRyaWJ1dGVzCittbWMtZGV2LXBhcnRzLnR4dAorICAgICAgICAtIGluZm8gb24gU0QgYW5kIE1NQyBkZXZpY2UgcGFydGl0aW9ucworbW1jLWFzeW5jLXJlcS50eHQKKyAgICAgICAgLSBpbmZvIG9uIG1tYyBhc3luY2hyb25vdXMgcmVxdWVzdHMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbW1jL21tYy1hc3luYy1yZXEudHh0IGIvRG9jdW1lbnRhdGlvbi9tbWMvbW1jLWFzeW5jLXJlcS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWUxOTA3YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbW1jL21tYy1hc3luYy1yZXEudHh0CkBAIC0wLDAgKzEsODcgQEAKK1JhdGlvbmFsZQorPT09PT09PT09CisKK0hvdyBzaWduaWZpY2FudCBpcyB0aGUgY2FjaGUgbWFpbnRlbmFuY2Ugb3ZlcmhlYWQ/CitJdCBkZXBlbmRzLiBGYXN0IGVNTUMgYW5kIG11bHRpcGxlIGNhY2hlIGxldmVscyB3aXRoIHNwZWN1bGF0aXZlIGNhY2hlCitwcmUtZmV0Y2ggbWFrZXMgdGhlIGNhY2hlIG92ZXJoZWFkIHJlbGF0aXZlbHkgc2lnbmlmaWNhbnQuIElmIHRoZSBETUEKK3ByZXBhcmF0aW9ucyBmb3IgdGhlIG5leHQgcmVxdWVzdCBhcmUgZG9uZSBpbiBwYXJhbGxlbCB3aXRoIHRoZSBjdXJyZW50Cit0cmFuc2ZlciwgdGhlIERNQSBwcmVwYXJhdGlvbiBvdmVyaGVhZCB3b3VsZCBub3QgYWZmZWN0IHRoZSBNTUMgcGVyZm9ybWFuY2UuCitUaGUgaW50ZW50aW9uIG9mIG5vbi1ibG9ja2luZyAoYXN5bmNocm9ub3VzKSBNTUMgcmVxdWVzdHMgaXMgdG8gbWluaW1pemUgdGhlCit0aW1lIGJldHdlZW4gd2hlbiBhbiBNTUMgcmVxdWVzdCBlbmRzIGFuZCBhbm90aGVyIE1NQyByZXF1ZXN0IGJlZ2lucy4KK1VzaW5nIG1tY193YWl0X2Zvcl9yZXEoKSwgdGhlIE1NQyBjb250cm9sbGVyIGlzIGlkbGUgd2hpbGUgZG1hX21hcF9zZyBhbmQKK2RtYV91bm1hcF9zZyBhcmUgcHJvY2Vzc2luZy4gVXNpbmcgbm9uLWJsb2NraW5nIE1NQyByZXF1ZXN0cyBtYWtlcyBpdAorcG9zc2libGUgdG8gcHJlcGFyZSB0aGUgY2FjaGVzIGZvciBuZXh0IGpvYiBpbiBwYXJhbGxlbCB3aXRoIGFuIGFjdGl2ZQorTU1DIHJlcXVlc3QuCisKK01NQyBibG9jayBkcml2ZXIKKz09PT09PT09PT09PT09PT0KKworVGhlIG1tY19ibGtfaXNzdWVfcndfcnEoKSBpbiB0aGUgTU1DIGJsb2NrIGRyaXZlciBpcyBtYWRlIG5vbi1ibG9ja2luZy4KK1RoZSBpbmNyZWFzZSBpbiB0aHJvdWdocHV0IGlzIHByb3BvcnRpb25hbCB0byB0aGUgdGltZSBpdCB0YWtlcyB0bworcHJlcGFyZSAobWFqb3IgcGFydCBvZiBwcmVwYXJhdGlvbnMgYXJlIGRtYV9tYXBfc2coKSBhbmQgZG1hX3VubWFwX3NnKCkpCithIHJlcXVlc3QgYW5kIGhvdyBmYXN0IHRoZSBtZW1vcnkgaXMuIFRoZSBmYXN0ZXIgdGhlIE1NQy9TRCBpcyB0aGUKK21vcmUgc2lnbmlmaWNhbnQgdGhlIHByZXBhcmUgcmVxdWVzdCB0aW1lIGJlY29tZXMuIFJvdWdobHkgdGhlIGV4cGVjdGVkCitwZXJmb3JtYW5jZSBnYWluIGlzIDUlIGZvciBsYXJnZSB3cml0ZXMgYW5kIDEwJSBvbiBsYXJnZSByZWFkcyBvbiBhIEwyIGNhY2hlCitwbGF0Zm9ybS4gSW4gcG93ZXIgc2F2ZSBtb2RlLCB3aGVuIGNsb2NrcyBydW4gb24gYSBsb3dlciBmcmVxdWVuY3ksIHRoZSBETUEKK3ByZXBhcmF0aW9uIG1heSBjb3N0IGV2ZW4gbW9yZS4gQXMgbG9uZyBhcyB0aGVzZSBzbG93ZXIgcHJlcGFyYXRpb25zIGFyZSBydW4KK2luIHBhcmFsbGVsIHdpdGggdGhlIHRyYW5zZmVyIHBlcmZvcm1hbmNlIHdvbid0IGJlIGFmZmVjdGVkLgorCitEZXRhaWxzIG9uIG1lYXN1cmVtZW50cyBmcm9tIElPWm9uZSBhbmQgbW1jX3Rlc3QKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitodHRwczovL3dpa2kubGluYXJvLm9yZy9Xb3JraW5nR3JvdXBzL0tlcm5lbC9TcGVjcy9TdG9yYWdlUGVyZk1NQy1hc3luYy1yZXEKKworTU1DIGNvcmUgQVBJIGV4dGVuc2lvbgorPT09PT09PT09PT09PT09PT09PT09PQorCitUaGVyZSBpcyBvbmUgbmV3IHB1YmxpYyBmdW5jdGlvbiBtbWNfc3RhcnRfcmVxKCkuCitJdCBzdGFydHMgYSBuZXcgTU1DIGNvbW1hbmQgcmVxdWVzdCBmb3IgYSBob3N0LiBUaGUgZnVuY3Rpb24gaXNuJ3QKK3RydWx5IG5vbi1ibG9ja2luZy4gSWYgdGhlcmUgaXMgYW4gb25nb2luZyBhc3luYyByZXF1ZXN0IGl0IHdhaXRzCitmb3IgY29tcGxldGlvbiBvZiB0aGF0IHJlcXVlc3QgYW5kIHN0YXJ0cyB0aGUgbmV3IG9uZSBhbmQgcmV0dXJucy4gSXQKK2RvZXNuJ3Qgd2FpdCBmb3IgdGhlIG5ldyByZXF1ZXN0IHRvIGNvbXBsZXRlLiBJZiB0aGVyZSBpcyBubyBvbmdvaW5nCityZXF1ZXN0IGl0IHN0YXJ0cyB0aGUgbmV3IHJlcXVlc3QgYW5kIHJldHVybnMgaW1tZWRpYXRlbHkuCisKK01NQyBob3N0IGV4dGVuc2lvbnMKKz09PT09PT09PT09PT09PT09PT0KKworVGhlcmUgYXJlIHR3byBvcHRpb25hbCBtZW1iZXJzIGluIHRoZSBtbWNfaG9zdF9vcHMgLS0gcHJlX3JlcSgpIGFuZAorcG9zdF9yZXEoKSAtLSB0aGF0IHRoZSBob3N0IGRyaXZlciBtYXkgaW1wbGVtZW50IGluIG9yZGVyIHRvIG1vdmUgd29yawordG8gYmVmb3JlIGFuZCBhZnRlciB0aGUgYWN0dWFsIG1tY19ob3N0X29wcy5yZXF1ZXN0KCkgZnVuY3Rpb24gaXMgY2FsbGVkLgorSW4gdGhlIERNQSBjYXNlIHByZV9yZXEoKSBtYXkgZG8gZG1hX21hcF9zZygpIGFuZCBwcmVwYXJlIHRoZSBETUEKK2Rlc2NyaXB0b3IsIGFuZCBwb3N0X3JlcSgpIHJ1bnMgdGhlIGRtYV91bm1hcF9zZygpLgorCitPcHRpbWl6ZSBmb3IgdGhlIGZpcnN0IHJlcXVlc3QKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZmlyc3QgcmVxdWVzdCBpbiBhIHNlcmllcyBvZiByZXF1ZXN0cyBjYW4ndCBiZSBwcmVwYXJlZCBpbiBwYXJhbGxlbAord2l0aCB0aGUgcHJldmlvdXMgdHJhbnNmZXIsIHNpbmNlIHRoZXJlIGlzIG5vIHByZXZpb3VzIHJlcXVlc3QuCitUaGUgYXJndW1lbnQgaXNfZmlyc3RfcmVxIGluIHByZV9yZXEoKSBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBpcyBubyBwcmV2aW91cworcmVxdWVzdC4gVGhlIGhvc3QgZHJpdmVyIG1heSBvcHRpbWl6ZSBmb3IgdGhpcyBzY2VuYXJpbyB0byBtaW5pbWl6ZQordGhlIHBlcmZvcm1hbmNlIGxvc3MuIEEgd2F5IHRvIG9wdGltaXplIGZvciB0aGlzIGlzIHRvIHNwbGl0IHRoZSBjdXJyZW50CityZXF1ZXN0IGluIHR3byBjaHVua3MsIHByZXBhcmUgdGhlIGZpcnN0IGNodW5rIGFuZCBzdGFydCB0aGUgcmVxdWVzdCwKK2FuZCBmaW5hbGx5IHByZXBhcmUgdGhlIHNlY29uZCBjaHVuayBhbmQgc3RhcnQgdGhlIHRyYW5zZmVyLgorCitQc2V1ZG9jb2RlIHRvIGhhbmRsZSBpc19maXJzdF9yZXEgc2NlbmFyaW8gd2l0aCBtaW5pbWFsIHByZXBhcmUgb3ZlcmhlYWQ6CisKK2lmIChpc19maXJzdF9yZXEgJiYgcmVxLT5zaXplID4gdGhyZXNob2xkKQorICAgLyogc3RhcnQgTU1DIHRyYW5zZmVyIGZvciB0aGUgY29tcGxldGUgdHJhbnNmZXIgc2l6ZSAqLworICAgbW1jX3N0YXJ0X2NvbW1hbmQoTU1DX0NNRF9UUkFOU0ZFUl9GVUxMX1NJWkUpOworCisgICAvKgorICAgICogQmVnaW4gdG8gcHJlcGFyZSBETUEgd2hpbGUgY21kIGlzIGJlaW5nIHByb2Nlc3NlZCBieSBNTUMuCisgICAgKiBUaGUgZmlyc3QgY2h1bmsgb2YgdGhlIHJlcXVlc3Qgc2hvdWxkIHRha2UgdGhlIHNhbWUgdGltZQorICAgICogdG8gcHJlcGFyZSBhcyB0aGUgIk1NQyBwcm9jZXNzIGNvbW1hbmQgdGltZSIuCisgICAgKiBJZiBwcmVwYXJlIHRpbWUgZXhjZWVkcyBNTUMgY21kIHRpbWUKKyAgICAqIHRoZSB0cmFuc2ZlciBpcyBkZWxheWVkLCBndWVzc3RpbWF0ZSBtYXggNGsgYXMgZmlyc3QgY2h1bmsgc2l6ZS4KKyAgICAqLworICAgIHByZXBhcmVfMXN0X2NodW5rX2Zvcl9kbWEocmVxKTsKKyAgICAvKiBmbHVzaCBwZW5kaW5nIGRlc2MgdG8gdGhlIERNQUMgKGRtYWVuZ2luZS5oKSAqLworICAgIGRtYV9pc3N1ZV9wZW5kaW5nKHJlcS0+ZG1hX2Rlc2MpOworCisgICAgcHJlcGFyZV8ybmRfY2h1bmtfZm9yX2RtYShyZXEpOworICAgIC8qCisgICAgICogVGhlIHNlY29uZCBpc3N1ZV9wZW5kaW5nIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIE1NQyBydW5zIG91dAorICAgICAqIG9mIHRoZSBmaXJzdCBjaHVuay4gSWYgdGhlIE1NQyBydW5zIG91dCBvZiB0aGUgZmlyc3QgZGF0YSBjaHVuaworICAgICAqIGJlZm9yZSB0aGlzIGNhbGwsIHRoZSB0cmFuc2ZlciBpcyBkZWxheWVkLgorICAgICAqLworICAgIGRtYV9pc3N1ZV9wZW5kaW5nKHJlcS0+ZG1hX2Rlc2MpOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9tbWMvbW1jLWRldi1hdHRycy50eHQgYi9Eb2N1bWVudGF0aW9uL21tYy9tbWMtZGV2LWF0dHJzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWE1NTU3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9tbWMvbW1jLWRldi1hdHRycy50eHQKQEAgLTAsMCArMSw3NCBAQAorU0QgYW5kIE1NQyBCbG9jayBEZXZpY2UgQXR0cmlidXRlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGVzZSBhdHRyaWJ1dGVzIGFyZSBkZWZpbmVkIGZvciB0aGUgYmxvY2sgZGV2aWNlcyBhc3NvY2lhdGVkIHdpdGggdGhlCitTRCBvciBNTUMgZGV2aWNlLgorCitUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgYXJlIHJlYWQvd3JpdGUuCisKKwlmb3JjZV9ybwkJRW5mb3JjZSByZWFkLW9ubHkgYWNjZXNzIGV2ZW4gaWYgd3JpdGUgcHJvdGVjdCBzd2l0Y2ggaXMgb2ZmLgorCitTRCBhbmQgTU1DIERldmljZSBBdHRyaWJ1dGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FsbCBhdHRyaWJ1dGVzIGFyZSByZWFkLW9ubHkuCisKKwljaWQJCQlDYXJkIElkZW50aWZhY3Rpb24gUmVnaXN0ZXIKKwljc2QJCQlDYXJkIFNwZWNpZmljIERhdGEgUmVnaXN0ZXIKKwlzY3IJCQlTRCBDYXJkIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgKFNEIG9ubHkpCisJZGF0ZQkJCU1hbnVmYWN0dXJpbmcgRGF0ZSAoZnJvbSBDSUQgUmVnaXN0ZXIpCisJZndyZXYJCQlGaXJtd2FyZS9Qcm9kdWN0IFJldmlzaW9uIChmcm9tIENJRCBSZWdpc3RlcikgKFNEIGFuZCBNTUN2MSBvbmx5KQorCWh3cmV2CQkJSGFyZHdhcmUvUHJvZHVjdCBSZXZpc2lvbiAoZnJvbSBDSUQgUmVnaXN0ZXIpIChTRCBhbmQgTU1DdjEgb25seSkKKwltYW5maWQJCQlNYW51ZmFjdHVyZXIgSUQgKGZyb20gQ0lEIFJlZ2lzdGVyKQorCW5hbWUJCQlQcm9kdWN0IE5hbWUgKGZyb20gQ0lEIFJlZ2lzdGVyKQorCW9lbWlkCQkJT0VNL0FwcGxpY2F0aW9uIElEIChmcm9tIENJRCBSZWdpc3RlcikKKwlwcnYJCQlQcm9kdWN0IFJldmlzaW9uIChmcm9tIENJRCBSZWdpc3RlcikgKFNEIGFuZCBNTUN2NCBvbmx5KQorCXNlcmlhbAkJCVByb2R1Y3QgU2VyaWFsIE51bWJlciAoZnJvbSBDSUQgUmVnaXN0ZXIpCisJZXJhc2Vfc2l6ZQkJRXJhc2UgZ3JvdXAgc2l6ZQorCXByZWZlcnJlZF9lcmFzZV9zaXplCVByZWZlcnJlZCBlcmFzZSBzaXplCisJcmF3X3JwbWJfc2l6ZV9tdWx0CVJQTUIgcGFydGl0aW9uIHNpemUKKwlyZWxfc2VjdG9ycwkJUmVsaWFibGUgd3JpdGUgc2VjdG9yIGNvdW50CisKK05vdGUgb24gRXJhc2UgU2l6ZSBhbmQgUHJlZmVycmVkIEVyYXNlIFNpemU6CisKKwkiZXJhc2Vfc2l6ZSIgaXMgdGhlICBtaW5pbXVtIHNpemUsIGluIGJ5dGVzLCBvZiBhbiBlcmFzZQorCW9wZXJhdGlvbi4gIEZvciBNTUMsICJlcmFzZV9zaXplIiBpcyB0aGUgZXJhc2UgZ3JvdXAgc2l6ZQorCXJlcG9ydGVkIGJ5IHRoZSBjYXJkLiAgTm90ZSB0aGF0ICJlcmFzZV9zaXplIiBkb2VzIG5vdCBhcHBseQorCXRvIHRyaW0gb3Igc2VjdXJlIHRyaW0gb3BlcmF0aW9ucyB3aGVyZSB0aGUgbWluaW11bSBzaXplIGlzCisJYWx3YXlzIG9uZSA1MTIgYnl0ZSBzZWN0b3IuICBGb3IgU0QsICJlcmFzZV9zaXplIiBpcyA1MTIKKwlpZiB0aGUgY2FyZCBpcyBibG9jay1hZGRyZXNzZWQsIDAgb3RoZXJ3aXNlLgorCisJU0QvTU1DIGNhcmRzIGNhbiBlcmFzZSBhbiBhcmJpdHJhcmlseSBsYXJnZSBhcmVhIHVwIHRvIGFuZAorCWluY2x1ZGluZyB0aGUgd2hvbGUgY2FyZC4gIFdoZW4gZXJhc2luZyBhIGxhcmdlIGFyZWEgaXQgbWF5CisJYmUgZGVzaXJhYmxlIHRvIGRvIGl0IGluIHNtYWxsZXIgY2h1bmtzIGZvciB0aHJlZSByZWFzb25zOgorCQkxLiBBIHNpbmdsZSBlcmFzZSBjb21tYW5kIHdpbGwgbWFrZSBhbGwgb3RoZXIgSS9PIG9uCisJCXRoZSBjYXJkIHdhaXQuICBUaGlzIGlzIG5vdCBhIHByb2JsZW0gaWYgdGhlIHdob2xlIGNhcmQKKwkJaXMgYmVpbmcgZXJhc2VkLCBidXQgZXJhc2luZyBvbmUgcGFydGl0aW9uIHdpbGwgbWFrZQorCQlJL08gZm9yIGFub3RoZXIgcGFydGl0aW9uIG9uIHRoZSBzYW1lIGNhcmQgd2FpdCBmb3IgdGhlCisJCWR1cmF0aW9uIG9mIHRoZSBlcmFzZSAtIHdoaWNoIGNvdWxkIGJlIGEgc2V2ZXJhbAorCQltaW51dGVzLgorCQkyLiBUbyBiZSBhYmxlIHRvIGluZm9ybSB0aGUgdXNlciBvZiBlcmFzZSBwcm9ncmVzcy4KKwkJMy4gVGhlIGVyYXNlIHRpbWVvdXQgYmVjb21lcyB0b28gbGFyZ2UgdG8gYmUgdmVyeQorCQl1c2VmdWwuICBCZWNhdXNlIHRoZSBlcmFzZSB0aW1lb3V0IGNvbnRhaW5zIGEgbWFyZ2luCisJCXdoaWNoIGlzIG11bHRpcGxpZWQgYnkgdGhlIHNpemUgb2YgdGhlIGVyYXNlIGFyZWEsCisJCXRoZSB2YWx1ZSBjYW4gZW5kIHVwIGJlaW5nIHNldmVyYWwgbWludXRlcyBmb3IgbGFyZ2UKKwkJYXJlYXMuCisKKwkiZXJhc2Vfc2l6ZSIgaXMgbm90IHRoZSBtb3N0IGVmZmljaWVudCB1bml0IHRvIGVyYXNlCisJKGVzcGVjaWFsbHkgZm9yIFNEIHdoZXJlIGl0IGlzIGp1c3Qgb25lIHNlY3RvciksCisJaGVuY2UgInByZWZlcnJlZF9lcmFzZV9zaXplIiBwcm92aWRlcyBhIGdvb2QgY2h1bmsKKwlzaXplIGZvciBlcmFzaW5nIGxhcmdlIGFyZWFzLgorCisJRm9yIE1NQywgInByZWZlcnJlZF9lcmFzZV9zaXplIiBpcyB0aGUgaGlnaC1jYXBhY2l0eQorCWVyYXNlIHNpemUgaWYgYSBjYXJkIHNwZWNpZmllcyBvbmUsIG90aGVyd2lzZSBpdCBpcworCWJhc2VkIG9uIHRoZSBjYXBhY2l0eSBvZiB0aGUgY2FyZC4KKworCUZvciBTRCwgInByZWZlcnJlZF9lcmFzZV9zaXplIiBpcyB0aGUgYWxsb2NhdGlvbiB1bml0CisJc2l6ZSBzcGVjaWZpZWQgYnkgdGhlIGNhcmQuCisKKwkicHJlZmVycmVkX2VyYXNlX3NpemUiIGlzIGluIGJ5dGVzLgorCitOb3RlIG9uIHJhd19ycG1iX3NpemVfbXVsdDoKKwkicmF3X3JwbWJfc2l6ZV9tdWx0IiBpcyBhIG11dGxpcGxlIG9mIDEyOGtCIGJsb2NrLgorCVJQTUIgc2l6ZSBpbiBieXRlIGlzIGNhbGN1bGF0ZWQgYnkgdXNpbmcgdGhlIGZvbGxvd2luZyBlcXVhdGlvbjoKKwlSUE1CIHBhcnRpdGlvbiBzaXplID0gMTI4a0IgeCByYXdfcnBtYl9zaXplX211bHQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbW1jL21tYy1kZXYtcGFydHMudHh0IGIvRG9jdW1lbnRhdGlvbi9tbWMvbW1jLWRldi1wYXJ0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA4ZDA3OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbW1jL21tYy1kZXYtcGFydHMudHh0CkBAIC0wLDAgKzEsNDAgQEAKK1NEIGFuZCBNTUMgRGV2aWNlIFBhcnRpdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRGV2aWNlIHBhcnRpdGlvbnMgYXJlIGFkZGl0aW9uYWwgbG9naWNhbCBibG9jayBkZXZpY2VzIHByZXNlbnQgb24gdGhlCitTRC9NTUMgZGV2aWNlLgorCitBcyBvZiB0aGlzIHdyaXRpbmcsIE1NQyBib290IHBhcnRpdGlvbnMgYXMgc3VwcG9ydGVkIGFuZCBleHBvc2VkIGFzCisvZGV2L21tY2Jsa1hib290MCBhbmQgL2Rldi9tbWNibGtYYm9vdDEsIHdoZXJlIFggaXMgdGhlIGluZGV4IG9mIHRoZQorcGFyZW50IC9kZXYvbW1jYmxrWC4KKworTU1DIEJvb3QgUGFydGl0aW9ucworPT09PT09PT09PT09PT09PT09PQorCitSZWFkIGFuZCB3cml0ZSBhY2Nlc3MgaXMgcHJvdmlkZWQgdG8gdGhlIHR3byBNTUMgYm9vdCBwYXJ0aXRpb25zLiBEdWUgdG8KK3RoZSBzZW5zaXRpdmUgbmF0dXJlIG9mIHRoZSBib290IHBhcnRpdGlvbiBjb250ZW50cywgd2hpY2ggb2Z0ZW4gc3RvcmUKK2EgYm9vdGxvYWRlciBvciBib290bG9hZGVyIGNvbmZpZ3VyYXRpb24gdGFibGVzIGNydWNpYWwgdG8gYm9vdGluZyB0aGUKK3BsYXRmb3JtLCB3cml0ZSBhY2Nlc3MgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCB0byByZWR1Y2UgdGhlIGNoYW5jZSBvZgorYWNjaWRlbnRhbCBicmlja2luZy4KKworVG8gZW5hYmxlIHdyaXRlIGFjY2VzcyB0byAvZGV2L21tY2Jsa1hib290WSwgZGlzYWJsZSB0aGUgZm9yY2VkIHJlYWQtb25seQorYWNjZXNzIHdpdGg6CisKK2VjaG8gMCA+IC9zeXMvYmxvY2svbW1jYmxrWGJvb3RZL2ZvcmNlX3JvCisKK1RvIHJlLWVuYWJsZSByZWFkLW9ubHkgYWNjZXNzOgorCitlY2hvIDEgPiAvc3lzL2Jsb2NrL21tY2Jsa1hib290WS9mb3JjZV9ybworCitUaGUgYm9vdCBwYXJ0aXRpb25zIGNhbiBhbHNvIGJlIGxvY2tlZCByZWFkIG9ubHkgdW50aWwgdGhlIG5leHQgcG93ZXIgb24sCit3aXRoOgorCitlY2hvIDEgPiAvc3lzL2Jsb2NrL21tY2Jsa1hib290WS9yb19sb2NrX3VudGlsX25leHRfcG93ZXJfb24KKworVGhpcyBpcyBhIGZlYXR1cmUgb2YgdGhlIGNhcmQgYW5kIG5vdCBvZiB0aGUga2VybmVsLiBJZiB0aGUgY2FyZCBkb2VzCitub3Qgc3VwcG9ydCBib290IHBhcnRpdGlvbiBsb2NraW5nLCB0aGUgZmlsZSB3aWxsIG5vdCBleGlzdC4gSWYgdGhlCitmZWF0dXJlIGhhcyBiZWVuIGRpc2FibGVkIG9uIHRoZSBjYXJkLCB0aGUgZmlsZSB3aWxsIGJlIHJlYWQtb25seS4KKworVGhlIGJvb3QgcGFydGl0aW9ucyBjYW4gYWxzbyBiZSBsb2NrZWQgcGVybWFuZW50bHksIGJ1dCB0aGlzIGZlYXR1cmUgaXMKK25vdCBhY2Nlc3NpYmxlIHRocm91Z2ggc3lzZnMgaW4gb3JkZXIgdG8gYXZvaWQgYWNjaWRlbnRhbCBvciBtYWxpY2lvdXMKK2JyaWNraW5nLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9tbjEwMzAwL0FCSS50eHQgYi9Eb2N1bWVudGF0aW9uL21uMTAzMDAvQUJJLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzUwN2JhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9tbjEwMzAwL0FCSS50eHQKQEAgLTAsMCArMSwxNDkgQEAKKwkJCSAgID09PT09PT09PT09PT09PT09PT09PT09PT0KKwkJCSAgIE1OMTAzMDAgRlVOQ1RJT04gQ0FMTCBBQkkKKwkJCSAgID09PT09PT09PT09PT09PT09PT09PT09PT0KKworPT09PT09PQorR0VORVJBTAorPT09PT09PQorCitUaGUgTU4xMDMwMC9BTTMzIGtlcm5lbCBydW5zIGluIGxpdHRsZS1lbmRpYW4gbW9kZTsgYmlnLWVuZGlhbiBtb2RlIGlzIG5vdAorc3VwcG9ydGVkLgorCitUaGUgc3RhY2sgZ3Jvd3MgZG93bndhcmRzLCBhbmQgc2hvdWxkIGFsd2F5cyBiZSAzMi1iaXQgYWxpZ25lZC4gVGhlcmUgYXJlCitzZXBhcmF0ZSBzdGFjayBwb2ludGVyIHJlZ2lzdGVycyBmb3IgdXNlcnNwYWNlIGFuZCB0aGUga2VybmVsLgorCisKKz09PT09PT09PT09PT09PT0KK0FSR1VNRU5UIFBBU1NJTkcKKz09PT09PT09PT09PT09PT0KKworVGhlIGZpcnN0IHR3byBhcmd1bWVudHMgKGFzc3VtaW5nIHVwIHRvIDMyLWJpdHMgcGVyIGFyZ3VtZW50KSB0byBhIGZ1bmN0aW9uIGFyZQorcGFzc2VkIGluIHRoZSBEMCBhbmQgRDEgcmVnaXN0ZXJzIHJlc3BlY3RpdmVseTsgYWxsIG90aGVyIGFyZ3VtZW50cyBhcmUgcGFzc2VkCitvbiB0aGUgc3RhY2suCisKK0lmIDY0LWJpdCBhcmd1bWVudHMgYXJlIGJlaW5nIHBhc3NlZCwgdGhlbiB0aGV5IGFyZSBuZXZlciBzcGxpdCBiZXR3ZWVuCityZWdpc3RlcnMgYW5kIHRoZSBzdGFjay4gSWYgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgNjQtYml0IHZhbHVlLCBpdCB3aWxsIGJlCitwYXNzZWQgaW4gRDA6RDEuIElmIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBub3QgYSA2NC1iaXQgdmFsdWUsIGJ1dCB0aGUgc2Vjb25kCitpcywgdGhlIHNlY29uZCB3aWxsIGJlIHBhc3NlZCBlbnRpcmVseSBvbiB0aGUgc3RhY2sgYW5kIEQxIHdpbGwgYmUgdW51c2VkLgorCitBcmd1bWVudHMgc21hbGxlciB0aGFuIDMyLWJpdHMgYXJlIG5vdCBjb2FsZXNjZWQgd2l0aGluIGEgcmVnaXN0ZXIgb3IgYSBzdGFjaword29yZC4gRm9yIGV4YW1wbGUsIHR3byBieXRlLXNpemVkIGFyZ3VtZW50cyB3aWxsIGFsd2F5cyBiZSBwYXNzZWQgaW4gc2VwYXJhdGUKK3JlZ2lzdGVycyBvciB3b3JkLXNpemVkIHN0YWNrIHNsb3RzLgorCisKKz09PT09PT09PT09PT09PT09CitDQUxMSU5HIEZVTkNUSU9OUworPT09PT09PT09PT09PT09PT0KKworVGhlIGNhbGxlciBtdXN0IGFsbG9jYXRlIHR3ZWx2ZSBieXRlcyBvbiB0aGUgc3RhY2sgZm9yIHRoZSBjYWxsZWUncyB1c2UgYmVmb3JlCitpdCBpbnNlcnRzIGEgQ0FMTCBpbnN0cnVjdGlvbi4gVGhlIENBTEwgaW5zdHJ1Y3Rpb24gd2lsbCB3cml0ZSBpbnRvIHRoZSBUT1MKK3dvcmQsIGJ1dCB3b24ndCBhY3R1YWxseSBtb2RpZnkgdGhlIHN0YWNrIHBvaW50ZXI7IHNpbWlsYXJseSwgdGhlIFJFVAoraW5zdHJ1Y3Rpb24gcmVhZHMgZnJvbSB0aGUgVE9TIHdvcmQgb2YgdGhlIHN0YWNrLCBidXQgZG9lc24ndCBtb3ZlIHRoZSBzdGFjaworcG9pbnRlciBiZXlvbmQgaXQuCisKKworCVN0YWNrOgorCXwJCXwKKwl8CQl8CisJfC0tLS0tLS0tLS0tLS0tLXwgU1ArMjAKKwl8IDR0aCBBcmcJfAorCXwtLS0tLS0tLS0tLS0tLS18IFNQKzE2CisJfCAzcmQgQXJnCXwKKwl8LS0tLS0tLS0tLS0tLS0tfCBTUCsxMgorCXwgRDEgU2F2ZSBTbG90CXwKKwl8LS0tLS0tLS0tLS0tLS0tfCBTUCs4CisJfCBEMCBTYXZlIFNsb3QJfAorCXwtLS0tLS0tLS0tLS0tLS18IFNQKzQKKwl8IFJldHVybiBBZGRyCXwKKwl8LS0tLS0tLS0tLS0tLS0tfCBTUAorCXwJCXwKKwl8CQl8CisKKworVGhlIGNhbGxlciBtdXN0IGxlYXZlIHNwYWNlIG9uIHRoZSBzdGFjayAoaGVuY2UgYW4gYWxsb2NhdGlvbiBvZiB0d2VsdmUgYnl0ZXMpCitpbiB3aGljaCB0aGUgY2FsbGVlIG1heSBzdG9yZSB0aGUgZmlyc3QgdHdvIGFyZ3VtZW50cy4KKworCis9PT09PT09PT09PT0KK1JFVFVSTiBWQUxVRQorPT09PT09PT09PT09CisKK1RoZSByZXR1cm4gdmFsdWUgaXMgcGFzc2VkIGluIEQwIGZvciBhbiBpbnRlZ2VyIChvciBEMDpEMSBmb3IgYSA2NC1iaXQgdmFsdWUpLAorb3IgQTAgZm9yIGEgcG9pbnRlci4KKworSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBhIHZhbHVlIGxhcmdlciB0aGFuIDY0LWJpdHMsIG9yIGlzIGEgc3RydWN0dXJlIG9yIGFuCithcnJheSwgdGhlbiBhIGhpZGRlbiBmaXJzdCBhcmd1bWVudCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgY2FsbGVlIGJ5IHRoZSBjYWxsZXI6Cit0aGlzIHdpbGwgcG9pbnQgdG8gYSBwaWVjZSBvZiBtZW1vcnkgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgdGhlIHJlc3VsdCBvZiB0aGUKK2Z1bmN0aW9uLiBJbiB0aGlzIGNhc2UsIHRoZSBjYWxsZWUgd2lsbCByZXR1cm4gdGhlIHZhbHVlIGluIHRoYXQgcGllY2Ugb2YKK21lbW9yeSwgYW5kIG5vIHZhbHVlIHdpbGwgYmUgcmV0dXJuZWQgaW4gRDAgb3IgQTAuCisKKworPT09PT09PT09PT09PT09PT09PQorUkVHSVNURVIgQ0xPQkJFUklORworPT09PT09PT09PT09PT09PT09PQorCitUaGUgdmFsdWVzIGluIGNlcnRhaW4gcmVnaXN0ZXJzIG1heSBiZSBjbG9iYmVyZWQgYnkgdGhlIGNhbGxlZSwgYW5kIG90aGVyCit2YWx1ZXMgbXVzdCBiZSBzYXZlZDoKKworCUNsb2JiZXI6CUQwLUQxLCBBMC1BMSwgRTAtRTMKKwlTYXZlOgkJRDItRDMsIEEyLUEzLCBFNC1FNywgU1AKKworQWxsIG90aGVyIG5vbi1zdXBlcnZpc29yLW9ubHkgcmVnaXN0ZXJzIGFyZSBjbG9iYmVyYWJsZSAoc3VjaCBhcyBNRFIsIE1DUkwsCitNQ1JIKS4KKworCis9PT09PT09PT09PT09PT09PQorU1BFQ0lBTCBSRUdJU1RFUlMKKz09PT09PT09PT09PT09PT09CisKK0NlcnRhaW4gb3JkaW5hcnkgcmVnaXN0ZXJzIG1heSBjYXJyeSBzcGVjaWFsIHVzYWdlIGZvciB0aGUgY29tcGlsZXI6CisKKwlBMzoJRnJhbWUgcG9pbnRlcgorCUUyOglUTFMgcG9pbnRlcgorCisKKz09PT09PT09PT0KK0tFUk5FTCBBQkkKKz09PT09PT09PT0KKworVGhlIGtlcm5lbCBtYXkgdXNlIGEgc2xpZ2h0bHkgZGlmZmVyZW50IEFCSSBpbnRlcm5hbGx5LgorCisgKCopIEUyCisKKyAgICAgSWYgQ09ORklHX01OMTAzMDBfQ1VSUkVOVF9JTl9FMiBpcyBkZWZpbmVkLCB0aGVuIHRoZSBjdXJyZW50IHRhc2sgcG9pbnRlcgorICAgICB3aWxsIGJlIGtlcHQgaW4gdGhlIEUyIHJlZ2lzdGVyLCBhbmQgdGhhdCByZWdpc3RlciB3aWxsIGJlIG1hcmtlZAorICAgICB1bmF2YWlsYWJsZSBmb3IgdGhlIGNvbXBpbGVyIHRvIHVzZSBhcyBhIHNjcmF0Y2ggcmVnaXN0ZXIuCisKKyAgICAgTm9ybWFsbHkgdGhlIGtlcm5lbCB1c2VzIHNvbWV0aGluZyBsaWtlOgorCisJTU9WCVNQLEFuCisJQU5ECTB4RkZGRkUwMDAsQW4KKwlNT1YJKEFuKSxSbQkJLy8gUm0gaG9sZHMgY3VycmVudAorCU1PVgkoeXl5LFJtKQkvLyBBY2Nlc3MgY3VycmVudC0+eXl5CisKKyAgICAgVG8gZmluZCB0aGUgYWRkcmVzcyBvZiBjdXJyZW50OyBidXQgc2luY2UgdGhpcyBvcHRpb24gcGVybWl0cyBjdXJyZW50IHRvCisgICAgIGJlIGNhcnJpZWQgZ2xvYmFsbHkgaW4gYW4gcmVnaXN0ZXIsIGl0IGNhbiB1c2U6CisKKwlNT1YJKHl5eSxFMikJLy8gQWNjZXNzIGN1cnJlbnQtPnl5eQorCisgICAgIGluc3RlYWQuCisKKworPT09PT09PT09PT09PT09CitTWVNURU0gQ0FMTCBBQkkKKz09PT09PT09PT09PT09PQorCitTeXN0ZW0gY2FsbHMgYXJlIGNhbGxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgY29udmVudGlvbjoKKworCVJFR0lTVEVSCUVOVFJZCQkJRVhJVAorCT09PT09PT09PT09PT09PQk9PT09PT09PT09PT09PT09PT09PT09PQk9PT09PT09PT09PT09PT09PT09PT09PQorCUQwCQlTeXNjYWxsIG51bWJlcgkJUmV0dXJuIHZhbHVlCisJQTAJCTFzdCBzeXNjYWxsIGFyZ3VtZW50CVNhdmVkCisJRDEJCTJuZCBzeXNjYWxsIGFyZ3VtZW50CVNhdmVkCisJQTMJCTNyZCBzeXNjYWxsIGFyZ3VtZW50CVNhdmVkCisJQTIJCTR0aCBzeXNjYWxsIGFyZ3VtZW50CVNhdmVkCisJRDMJCTV0aCBzeXNjYWxsIGFyZ3VtZW50CVNhdmVkCisJRDIJCTZ0aCBzeXNjYWxsIGFyZ3VtZW50CVNhdmVkCisKK0FsbCBvdGhlciByZWdpc3RlcnMgYXJlIHNhdmVkLiAgVGhlIGxheW91dCBpcyBhIGNvbnNlcXVlbmNlIG9mIHRoZSB3YXkgdGhlIE1PVk0KK2luc3RydWN0aW9uIHN0b3JlcyByZWdpc3RlcnMgb250byB0aGUgc3RhY2suCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21uMTAzMDAvY29tcGFydG1lbnRhbGlzYXRpb24udHh0IGIvRG9jdW1lbnRhdGlvbi9tbjEwMzAwL2NvbXBhcnRtZW50YWxpc2F0aW9uLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTU4YjUxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9tbjEwMzAwL2NvbXBhcnRtZW50YWxpc2F0aW9uLnR4dApAQCAtMCwwICsxLDYwIEBACisJCSAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJCSAgIFBBUlQtU1BFQ0lGSUMgU09VUkNFIENPTVBBUlRNRU5UQUxJU0FUSU9OCisJCSAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBzb3VyY2VzIGZvciB2YXJpb3VzIHBhcnRzIGFyZSBjb21wYXJ0bWVudGFsaXNlZCBhdCB0d28gZGlmZmVyZW50IGxldmVsczoKKworICgxKSBQcm9jZXNzb3IgbGV2ZWwKKworICAgICBUaGUgInByb2Nlc3NvciBsZXZlbCIgaXMgYSBDUFUgY29yZSBwbHVzIHRoZSBvdGhlciBvbi1zaWxpY29uCisgICAgIHBlcmlwaGVyYWxzLgorCisgICAgIFByb2Nlc3Nvci1zcGVjaWZpYyBoZWFkZXIgZmlsZXMgYXJlIGRpdmlkZWQgYW1vbmcgZGlyZWN0b3JpZXMgaW4gYSBzaW1pbGFyCisgICAgIHdheSB0byB0aGUgQ1BVIGxldmVsOgorCisJKCopIGluY2x1ZGUvYXNtLW1uMTAzMDAvcHJvYy1tbjEwM2UwMTAvCisKKwkgICAgU3VwcG9ydCBmb3IgdGhlIEFNMzN2MiBDUFUgY29yZS4KKworICAgICBUaGUgYXBwcm9wcmlhdGUgcHJvY2Vzc29yIGlzIHNlbGVjdGVkIGJ5IGEgQ09ORklHX01OMTAzMDBfUFJPQ19ZWVlZIG9wdGlvbgorICAgICBmcm9tIHRoZSAiUHJvY2Vzc29yIHN1cHBvcnQiIGNob2ljZSBtZW51IGluIHRoZSBhcmNoL21uMTAzMDAvS2NvbmZpZyBmaWxlLgorCisKKyAoMikgVW5pdCBsZXZlbAorCisgICAgIFRoZSAidW5pdCBsZXZlbCIgaXMgYSBwcm9jZXNzb3IgcGx1cyBhbGwgdGhlIGV4dGVybmFsIHBlcmlwaGVyYWxzCisgICAgIGNvbnRyb2xsZWQgYnkgdGhhdCBwcm9jZXNzb3IuCisKKyAgICAgVW5pdC1zcGVjaWZpYyBoZWFkZXIgZmlsZXMgYXJlIGRpdmlkZWQgYW1vbmcgZGlyZWN0b3JpZXMgaW4gYSBzaW1pbGFyIHdheQorICAgICB0byB0aGUgQ1BVIGxldmVsOyBub3Qgb25seSB0aGF0LCBidXQgc3BlY2lmaWMgc291cmNlcyBtYXkgYWxzbyBiZQorICAgICBzZWdyZWdhdGVkIGludG8gc2VwYXJhdGUgZGlyZWN0b3JpZXMgdW5kZXIgdGhlIGFyY2ggZGlyZWN0b3J5OgorCisJKCopIGluY2x1ZGUvYXNtLW1uMTAzMDAvdW5pdC1hc2IyMzAzLworCSgqKSBhcmNoL21uMTAzMDAvdW5pdC1hc2IyMzAzLworCisJICAgIFN1cHBvcnQgZm9yIHRoZSBBU0IyMzAzIGJvYXJkIHdpdGggYW4gQVNCMjMwOCBkYXVnaHRlciBib2FyZC4KKworCSgqKSBpbmNsdWRlL2FzbS1tbjEwMzAwL3VuaXQtYXNiMjMwNS8KKwkoKikgYXJjaC9tbjEwMzAwL3VuaXQtYXNiMjMwNS8KKworCSAgICBTdXBwb3J0IGZvciB0aGUgQVNCMjMwNSBib2FyZC4KKworICAgICBUaGUgYXBwcm9wcmlhdGUgcHJvY2Vzc29yIGlzIHNlbGVjdGVkIGJ5IGEgQ09ORklHX01OMTAzMDBfVU5JVF9aWlpaIG9wdGlvbgorICAgICBmcm9tIHRoZSAiVW5pdCB0eXBlIiBjaG9pY2UgbWVudSBpbiB0aGUgYXJjaC9tbjEwMzAwL0tjb25maWcgZmlsZS4KKworCis9PT09PT09PT09PT0KK0NPTVBJTEUgVElNRQorPT09PT09PT09PT09CisKK1doZW4gdGhlIGtlcm5lbCBpcyBjb21waWxlZCwgc3ltYm9saWMgbGlua3Mgd2lsbCBiZSBtYWRlIGluIHRoZSBhc20gaGVhZGVyIGZpbGUKK2RpcmVjdG9yeSBmb3IgdGhpcyBhcmNoOgorCisJaW5jbHVkZS9hc20tbW4xMDMwMC9wcm9jID0+IGluY2x1ZGUvYXNtLW1uMTAzMDAvcHJvYy1ZWVlZLworCWluY2x1ZGUvYXNtLW1uMTAzMDAvdW5pdCA9PiBpbmNsdWRlL2FzbS1tbjEwMzAwL3VuaXQtWlpaWi8KKworU28gdGhhdCB0aGUgaGVhZGVyIGZpbGVzIGNvbnRhaW5lZCBpbiB0aG9zZSBkaXJlY3RvcmllcyBjYW4gYmUgYWNjZXNzZWQgd2l0aG91dAorbG90cyBvZiAjaWZkZWYtYWdlLgorCitUaGUgYXBwcm9wcmlhdGUgYXJjaC9tbjEwMzAwL3VuaXQtWlpaWiBkaXJlY3Rvcnkgd2lsbCBhbHNvIGJlIGVudGVyZWQgYnkgdGhlCitjb21waWxhdGlvbiBwcm9jZXNzOyBhbGwgb3RoZXIgdW5pdC1zcGVjaWZpYyBkaXJlY3RvcmllcyB3aWxsIGJlIGlnbm9yZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21vZHVsZS1zaWduaW5nLnR4dCBiL0RvY3VtZW50YXRpb24vbW9kdWxlLXNpZ25pbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5YjdmNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL21vZHVsZS1zaWduaW5nLnR4dApAQCAtMCwwICsxLDI3OSBAQAorCQkJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJCQlLRVJORUwgTU9EVUxFIFNJR05JTkcgRkFDSUxJVFkKKwkJCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitDT05URU5UUworCisgLSBPdmVydmlldy4KKyAtIENvbmZpZ3VyaW5nIG1vZHVsZSBzaWduaW5nLgorIC0gR2VuZXJhdGluZyBzaWduaW5nIGtleXMuCisgLSBQdWJsaWMga2V5cyBpbiB0aGUga2VybmVsLgorIC0gTWFudWFsbHkgc2lnbmluZyBtb2R1bGVzLgorIC0gU2lnbmVkIG1vZHVsZXMgYW5kIHN0cmlwcGluZy4KKyAtIExvYWRpbmcgc2lnbmVkIG1vZHVsZXMuCisgLSBOb24tdmFsaWQgc2lnbmF0dXJlcyBhbmQgdW5zaWduZWQgbW9kdWxlcy4KKyAtIEFkbWluaXN0ZXJpbmcvcHJvdGVjdGluZyB0aGUgcHJpdmF0ZSBrZXkuCisKKworPT09PT09PT0KK09WRVJWSUVXCis9PT09PT09PQorCitUaGUga2VybmVsIG1vZHVsZSBzaWduaW5nIGZhY2lsaXR5IGNyeXB0b2dyYXBoaWNhbGx5IHNpZ25zIG1vZHVsZXMgZHVyaW5nCitpbnN0YWxsYXRpb24gYW5kIHRoZW4gY2hlY2tzIHRoZSBzaWduYXR1cmUgdXBvbiBsb2FkaW5nIHRoZSBtb2R1bGUuICBUaGlzCithbGxvd3MgaW5jcmVhc2VkIGtlcm5lbCBzZWN1cml0eSBieSBkaXNhbGxvd2luZyB0aGUgbG9hZGluZyBvZiB1bnNpZ25lZCBtb2R1bGVzCitvciBtb2R1bGVzIHNpZ25lZCB3aXRoIGFuIGludmFsaWQga2V5LiAgTW9kdWxlIHNpZ25pbmcgaW5jcmVhc2VzIHNlY3VyaXR5IGJ5CittYWtpbmcgaXQgaGFyZGVyIHRvIGxvYWQgYSBtYWxpY2lvdXMgbW9kdWxlIGludG8gdGhlIGtlcm5lbC4gIFRoZSBtb2R1bGUKK3NpZ25hdHVyZSBjaGVja2luZyBpcyBkb25lIGJ5IHRoZSBrZXJuZWwgc28gdGhhdCBpdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGhhdmUKK3RydXN0ZWQgdXNlcnNwYWNlIGJpdHMuCisKK1RoaXMgZmFjaWxpdHkgdXNlcyBYLjUwOSBJVFUtVCBzdGFuZGFyZCBjZXJ0aWZpY2F0ZXMgdG8gZW5jb2RlIHRoZSBwdWJsaWMga2V5cworaW52b2x2ZWQuICBUaGUgc2lnbmF0dXJlcyBhcmUgbm90IHRoZW1zZWx2ZXMgZW5jb2RlZCBpbiBhbnkgaW5kdXN0cmlhbCBzdGFuZGFyZAordHlwZS4gIFRoZSBmYWNpbGl0eSBjdXJyZW50bHkgb25seSBzdXBwb3J0cyB0aGUgUlNBIHB1YmxpYyBrZXkgZW5jcnlwdGlvbgorc3RhbmRhcmQgKHRob3VnaCBpdCBpcyBwbHVnZ2FibGUgYW5kIHBlcm1pdHMgb3RoZXJzIHRvIGJlIHVzZWQpLiAgVGhlIHBvc3NpYmxlCitoYXNoIGFsZ29yaXRobXMgdGhhdCBjYW4gYmUgdXNlZCBhcmUgU0hBLTEsIFNIQS0yMjQsIFNIQS0yNTYsIFNIQS0zODQsIGFuZAorU0hBLTUxMiAodGhlIGFsZ29yaXRobSBpcyBzZWxlY3RlZCBieSBkYXRhIGluIHRoZSBzaWduYXR1cmUpLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09CitDT05GSUdVUklORyBNT0RVTEUgU0lHTklORworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIG1vZHVsZSBzaWduaW5nIGZhY2lsaXR5IGlzIGVuYWJsZWQgYnkgZ29pbmcgdG8gdGhlICJFbmFibGUgTG9hZGFibGUgTW9kdWxlCitTdXBwb3J0IiBzZWN0aW9uIG9mIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQgdHVybmluZyBvbgorCisJQ09ORklHX01PRFVMRV9TSUcJIk1vZHVsZSBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIgorCitUaGlzIGhhcyBhIG51bWJlciBvZiBvcHRpb25zIGF2YWlsYWJsZToKKworICgxKSAiUmVxdWlyZSBtb2R1bGVzIHRvIGJlIHZhbGlkbHkgc2lnbmVkIiAoQ09ORklHX01PRFVMRV9TSUdfRk9SQ0UpCisKKyAgICAgVGhpcyBzcGVjaWZpZXMgaG93IHRoZSBrZXJuZWwgc2hvdWxkIGRlYWwgd2l0aCBhIG1vZHVsZSB0aGF0IGhhcyBhCisgICAgIHNpZ25hdHVyZSBmb3Igd2hpY2ggdGhlIGtleSBpcyBub3Qga25vd24gb3IgYSBtb2R1bGUgdGhhdCBpcyB1bnNpZ25lZC4KKworICAgICBJZiB0aGlzIGlzIG9mZiAoaWUuICJwZXJtaXNzaXZlIiksIHRoZW4gbW9kdWxlcyBmb3Igd2hpY2ggdGhlIGtleSBpcyBub3QKKyAgICAgYXZhaWxhYmxlIGFuZCBtb2R1bGVzIHRoYXQgYXJlIHVuc2lnbmVkIGFyZSBwZXJtaXR0ZWQsIGJ1dCB0aGUga2VybmVsIHdpbGwKKyAgICAgYmUgbWFya2VkIGFzIGJlaW5nIHRhaW50ZWQsIGFuZCB0aGUgY29uY2VybmVkIG1vZHVsZXMgd2lsbCBiZSBtYXJrZWQgYXMKKyAgICAgdGFpbnRlZCwgc2hvd24gd2l0aCB0aGUgY2hhcmFjdGVyICdFJy4KKworICAgICBJZiB0aGlzIGlzIG9uIChpZS4gInJlc3RyaWN0aXZlIiksIG9ubHkgbW9kdWxlcyB0aGF0IGhhdmUgYSB2YWxpZAorICAgICBzaWduYXR1cmUgdGhhdCBjYW4gYmUgdmVyaWZpZWQgYnkgYSBwdWJsaWMga2V5IGluIHRoZSBrZXJuZWwncyBwb3NzZXNzaW9uCisgICAgIHdpbGwgYmUgbG9hZGVkLiAgQWxsIG90aGVyIG1vZHVsZXMgd2lsbCBnZW5lcmF0ZSBhbiBlcnJvci4KKworICAgICBJcnJlc3BlY3RpdmUgb2YgdGhlIHNldHRpbmcgaGVyZSwgaWYgdGhlIG1vZHVsZSBoYXMgYSBzaWduYXR1cmUgYmxvY2sgdGhhdAorICAgICBjYW5ub3QgYmUgcGFyc2VkLCBpdCB3aWxsIGJlIHJlamVjdGVkIG91dCBvZiBoYW5kLgorCisKKyAoMikgIkF1dG9tYXRpY2FsbHkgc2lnbiBhbGwgbW9kdWxlcyIgKENPTkZJR19NT0RVTEVfU0lHX0FMTCkKKworICAgICBJZiB0aGlzIGlzIG9uIHRoZW4gbW9kdWxlcyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc2lnbmVkIGR1cmluZyB0aGUKKyAgICAgbW9kdWxlc19pbnN0YWxsIHBoYXNlIG9mIGEgYnVpbGQuICBJZiB0aGlzIGlzIG9mZiwgdGhlbiB0aGUgbW9kdWxlcyBtdXN0CisgICAgIGJlIHNpZ25lZCBtYW51YWxseSB1c2luZzoKKworCXNjcmlwdHMvc2lnbi1maWxlCisKKworICgzKSAiV2hpY2ggaGFzaCBhbGdvcml0aG0gc2hvdWxkIG1vZHVsZXMgYmUgc2lnbmVkIHdpdGg/IgorCisgICAgIFRoaXMgcHJlc2VudHMgYSBjaG9pY2Ugb2Ygd2hpY2ggaGFzaCBhbGdvcml0aG0gdGhlIGluc3RhbGxhdGlvbiBwaGFzZSB3aWxsCisgICAgIHNpZ24gdGhlIG1vZHVsZXMgd2l0aDoKKworCUNPTkZJR19NT0RVTEVfU0lHX1NIQTEJCSJTaWduIG1vZHVsZXMgd2l0aCBTSEEtMSIKKwlDT05GSUdfTU9EVUxFX1NJR19TSEEyMjQJIlNpZ24gbW9kdWxlcyB3aXRoIFNIQS0yMjQiCisJQ09ORklHX01PRFVMRV9TSUdfU0hBMjU2CSJTaWduIG1vZHVsZXMgd2l0aCBTSEEtMjU2IgorCUNPTkZJR19NT0RVTEVfU0lHX1NIQTM4NAkiU2lnbiBtb2R1bGVzIHdpdGggU0hBLTM4NCIKKwlDT05GSUdfTU9EVUxFX1NJR19TSEE1MTIJIlNpZ24gbW9kdWxlcyB3aXRoIFNIQS01MTIiCisKKyAgICAgVGhlIGFsZ29yaXRobSBzZWxlY3RlZCBoZXJlIHdpbGwgYWxzbyBiZSBidWlsdCBpbnRvIHRoZSBrZXJuZWwgKHJhdGhlcgorICAgICB0aGFuIGJlaW5nIGEgbW9kdWxlKSBzbyB0aGF0IG1vZHVsZXMgc2lnbmVkIHdpdGggdGhhdCBhbGdvcml0aG0gY2FuIGhhdmUKKyAgICAgdGhlaXIgc2lnbmF0dXJlcyBjaGVja2VkIHdpdGhvdXQgY2F1c2luZyBhIGRlcGVuZGVuY3kgbG9vcC4KKworCisgKDQpICJGaWxlIG5hbWUgb3IgUEtDUyMxMSBVUkkgb2YgbW9kdWxlIHNpZ25pbmcga2V5IiAoQ09ORklHX01PRFVMRV9TSUdfS0VZKQorCisgICAgIFNldHRpbmcgdGhpcyBvcHRpb24gdG8gc29tZXRoaW5nIG90aGVyIHRoYW4gaXRzIGRlZmF1bHQgb2YKKyAgICAgImNlcnRzL3NpZ25pbmdfa2V5LnBlbSIgd2lsbCBkaXNhYmxlIHRoZSBhdXRvZ2VuZXJhdGlvbiBvZiBzaWduaW5nIGtleXMKKyAgICAgYW5kIGFsbG93IHRoZSBrZXJuZWwgbW9kdWxlcyB0byBiZSBzaWduZWQgd2l0aCBhIGtleSBvZiB5b3VyIGNob29zaW5nLgorICAgICBUaGUgc3RyaW5nIHByb3ZpZGVkIHNob3VsZCBpZGVudGlmeSBhIGZpbGUgY29udGFpbmluZyBib3RoIGEgcHJpdmF0ZSBrZXkKKyAgICAgYW5kIGl0cyBjb3JyZXNwb25kaW5nIFguNTA5IGNlcnRpZmljYXRlIGluIFBFTSBmb3JtLCBvciDigJQgb24gc3lzdGVtcyB3aGVyZQorICAgICB0aGUgT3BlblNTTCBFTkdJTkVfcGtjczExIGlzIGZ1bmN0aW9uYWwg4oCUIGEgUEtDUyMxMSBVUkkgYXMgZGVmaW5lZCBieQorICAgICBSRkM3NTEyLiBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBQS0NTIzExIFVSSSBzaG91bGQgcmVmZXJlbmNlIGJvdGggYQorICAgICBjZXJ0aWZpY2F0ZSBhbmQgYSBwcml2YXRlIGtleS4KKworICAgICBJZiB0aGUgUEVNIGZpbGUgY29udGFpbmluZyB0aGUgcHJpdmF0ZSBrZXkgaXMgZW5jcnlwdGVkLCBvciBpZiB0aGUKKyAgICAgUEtDUyMxMSB0b2tlbiByZXF1cmllcyBhIFBJTiwgdGhpcyBjYW4gYmUgcHJvdmlkZWQgYXQgYnVpbGQgdGltZSBieQorICAgICBtZWFucyBvZiB0aGUgS0JVSUxEX1NJR05fUElOIHZhcmlhYmxlLgorCisKKyAoNSkgIkFkZGl0aW9uYWwgWC41MDkga2V5cyBmb3IgZGVmYXVsdCBzeXN0ZW0ga2V5cmluZyIgKENPTkZJR19TWVNURU1fVFJVU1RFRF9LRVlTKQorCisgICAgIFRoaXMgb3B0aW9uIGNhbiBiZSBzZXQgdG8gdGhlIGZpbGVuYW1lIG9mIGEgUEVNLWVuY29kZWQgZmlsZSBjb250YWluaW5nCisgICAgIGFkZGl0aW9uYWwgY2VydGlmaWNhdGVzIHdoaWNoIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIHN5c3RlbSBrZXlyaW5nIGJ5CisgICAgIGRlZmF1bHQuCisKK05vdGUgdGhhdCBlbmFibGluZyBtb2R1bGUgc2lnbmluZyBhZGRzIGEgZGVwZW5kZW5jeSBvbiB0aGUgT3BlblNTTCBkZXZlbAorcGFja2FnZXMgdG8gdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzZXMgZm9yIHRoZSB0b29sIHRoYXQgZG9lcyB0aGUgc2lnbmluZy4KKworCis9PT09PT09PT09PT09PT09PT09PT09PQorR0VORVJBVElORyBTSUdOSU5HIEtFWVMKKz09PT09PT09PT09PT09PT09PT09PT09CisKK0NyeXB0b2dyYXBoaWMga2V5cGFpcnMgYXJlIHJlcXVpcmVkIHRvIGdlbmVyYXRlIGFuZCBjaGVjayBzaWduYXR1cmVzLiAgQQorcHJpdmF0ZSBrZXkgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIHNpZ25hdHVyZSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgcHVibGljIGtleSBpcwordXNlZCB0byBjaGVjayBpdC4gIFRoZSBwcml2YXRlIGtleSBpcyBvbmx5IG5lZWRlZCBkdXJpbmcgdGhlIGJ1aWxkLCBhZnRlciB3aGljaAoraXQgY2FuIGJlIGRlbGV0ZWQgb3Igc3RvcmVkIHNlY3VyZWx5LiAgVGhlIHB1YmxpYyBrZXkgZ2V0cyBidWlsdCBpbnRvIHRoZQora2VybmVsIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sgdGhlIHNpZ25hdHVyZXMgYXMgdGhlIG1vZHVsZXMgYXJlCitsb2FkZWQuCisKK1VuZGVyIG5vcm1hbCBjb25kaXRpb25zLCB3aGVuIENPTkZJR19NT0RVTEVfU0lHX0tFWSBpcyB1bmNoYW5nZWQgZnJvbSBpdHMKK2RlZmF1bHQsIHRoZSBrZXJuZWwgYnVpbGQgd2lsbCBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgbmV3IGtleXBhaXIgdXNpbmcKK29wZW5zc2wgaWYgb25lIGRvZXMgbm90IGV4aXN0IGluIHRoZSBmaWxlOgorCisJY2VydHMvc2lnbmluZ19rZXkucGVtCisKK2R1cmluZyB0aGUgYnVpbGRpbmcgb2Ygdm1saW51eCAodGhlIHB1YmxpYyBwYXJ0IG9mIHRoZSBrZXkgbmVlZHMgdG8gYmUgYnVpbHQKK2ludG8gdm1saW51eCkgdXNpbmcgcGFyYW1ldGVycyBpbiB0aGU6CisKKwljZXJ0cy94NTA5LmdlbmtleQorCitmaWxlICh3aGljaCBpcyBhbHNvIGdlbmVyYXRlZCBpZiBpdCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0KS4KKworSXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdGhhdCB5b3UgcHJvdmlkZSB5b3VyIG93biB4NTA5LmdlbmtleSBmaWxlLgorCitNb3N0IG5vdGFibHksIGluIHRoZSB4NTA5LmdlbmtleSBmaWxlLCB0aGUgcmVxX2Rpc3Rpbmd1aXNoZWRfbmFtZSBzZWN0aW9uCitzaG91bGQgYmUgYWx0ZXJlZCBmcm9tIHRoZSBkZWZhdWx0OgorCisJWyByZXFfZGlzdGluZ3Vpc2hlZF9uYW1lIF0KKwkjTyA9IFVuc3BlY2lmaWVkIGNvbXBhbnkKKwlDTiA9IEJ1aWxkIHRpbWUgYXV0b2dlbmVyYXRlZCBrZXJuZWwga2V5CisJI2VtYWlsQWRkcmVzcyA9IHVuc3BlY2lmaWVkLnVzZXJAdW5zcGVjaWZpZWQuY29tcGFueQorCitUaGUgZ2VuZXJhdGVkIFJTQSBrZXkgc2l6ZSBjYW4gYWxzbyBiZSBzZXQgd2l0aDoKKworCVsgcmVxIF0KKwlkZWZhdWx0X2JpdHMgPSA0MDk2CisKKworSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBtYW51YWxseSBnZW5lcmF0ZSB0aGUga2V5IHByaXZhdGUvcHVibGljIGZpbGVzIHVzaW5nIHRoZQoreDUwOS5nZW5rZXkga2V5IGdlbmVyYXRpb24gY29uZmlndXJhdGlvbiBmaWxlIGluIHRoZSByb290IG5vZGUgb2YgdGhlIExpbnV4CitrZXJuZWwgc291cmNlcyB0cmVlIGFuZCB0aGUgb3BlbnNzbCBjb21tYW5kLiAgVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHRvCitnZW5lcmF0ZSB0aGUgcHVibGljL3ByaXZhdGUga2V5IGZpbGVzOgorCisJb3BlbnNzbCByZXEgLW5ldyAtbm9kZXMgLXV0ZjggLXNoYTI1NiAtZGF5cyAzNjUwMCAtYmF0Y2ggLXg1MDkgXAorCSAgIC1jb25maWcgeDUwOS5nZW5rZXkgLW91dGZvcm0gUEVNIC1vdXQga2VybmVsX2tleS5wZW0gXAorCSAgIC1rZXlvdXQga2VybmVsX2tleS5wZW0KKworVGhlIGZ1bGwgcGF0aG5hbWUgZm9yIHRoZSByZXN1bHRpbmcga2VybmVsX2tleS5wZW0gZmlsZSBjYW4gdGhlbiBiZSBzcGVjaWZpZWQKK2luIHRoZSBDT05GSUdfTU9EVUxFX1NJR19LRVkgb3B0aW9uLCBhbmQgdGhlIGNlcnRpZmljYXRlIGFuZCBrZXkgdGhlcmVpbiB3aWxsCitiZSB1c2VkIGluc3RlYWQgb2YgYW4gYXV0b2dlbmVyYXRlZCBrZXlwYWlyLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT0KK1BVQkxJQyBLRVlTIElOIFRIRSBLRVJORUwKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGtlcm5lbCBjb250YWlucyBhIHJpbmcgb2YgcHVibGljIGtleXMgdGhhdCBjYW4gYmUgdmlld2VkIGJ5IHJvb3QuICBUaGV5J3JlCitpbiBhIGtleXJpbmcgY2FsbGVkICIuc3lzdGVtX2tleXJpbmciIHRoYXQgY2FuIGJlIHNlZW4gYnk6CisKKwlbcm9vdEBkZW5lYiB+XSMgY2F0IC9wcm9jL2tleXMKKwkuLi4KKwkyMjNjNzg1MyBJLS0tLS0tICAgICAxIHBlcm0gMWYwMzAwMDAgICAgIDAgICAgIDAga2V5cmluZyAgIC5zeXN0ZW1fa2V5cmluZzogMQorCTMwMmQyZDUyIEktLS0tLS0gICAgIDEgcGVybSAxZjAxMDAwMCAgICAgMCAgICAgMCBhc3ltbWV0cmkgRmVkb3JhIGtlcm5lbCBzaWduaW5nIGtleTogZDY5YTg0ZTZiY2UzZDIxNmI5NzllOTUwNWIzZTNlZjlhNzExODA3OTogWDUwOS5SU0EgYTcxMTgwNzkgW10KKwkuLi4KKworQmV5b25kIHRoZSBwdWJsaWMga2V5IGdlbmVyYXRlZCBzcGVjaWZpY2FsbHkgZm9yIG1vZHVsZSBzaWduaW5nLCBhZGRpdGlvbmFsCit0cnVzdGVkIGNlcnRpZmljYXRlcyBjYW4gYmUgcHJvdmlkZWQgaW4gYSBQRU0tZW5jb2RlZCBmaWxlIHJlZmVyZW5jZWQgYnkgdGhlCitDT05GSUdfU1lTVEVNX1RSVVNURURfS0VZUyBjb25maWd1cmF0aW9uIG9wdGlvbi4KKworRnVydGhlciwgdGhlIGFyY2hpdGVjdHVyZSBjb2RlIG1heSB0YWtlIHB1YmxpYyBrZXlzIGZyb20gYSBoYXJkd2FyZSBzdG9yZSBhbmQKK2FkZCB0aG9zZSBpbiBhbHNvIChlLmcuIGZyb20gdGhlIFVFRkkga2V5IGRhdGFiYXNlKS4KKworRmluYWxseSwgaXQgaXMgcG9zc2libGUgdG8gYWRkIGFkZGl0aW9uYWwgcHVibGljIGtleXMgYnkgZG9pbmc6CisKKwlrZXljdGwgcGFkZCBhc3ltbWV0cmljICIiIFsuc3lzdGVtX2tleXJpbmctSURdIDxba2V5LWZpbGVdCisKK2UuZy46CisKKwlrZXljdGwgcGFkZCBhc3ltbWV0cmljICIiIDB4MjIzYzc4NTMgPG15X3B1YmxpY19rZXkueDUwOQorCitOb3RlLCBob3dldmVyLCB0aGF0IHRoZSBrZXJuZWwgd2lsbCBvbmx5IHBlcm1pdCBrZXlzIHRvIGJlIGFkZGVkIHRvCisuc3lzdGVtX2tleXJpbmcgX2lmXyB0aGUgbmV3IGtleSdzIFguNTA5IHdyYXBwZXIgaXMgdmFsaWRseSBzaWduZWQgYnkgYSBrZXkKK3RoYXQgaXMgYWxyZWFkeSByZXNpZGVudCBpbiB0aGUgLnN5c3RlbV9rZXlyaW5nIGF0IHRoZSB0aW1lIHRoZSBrZXkgd2FzIGFkZGVkLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT0KK01BTlVBTExZIFNJR05JTkcgTU9EVUxFUworPT09PT09PT09PT09PT09PT09PT09PT09PQorCitUbyBtYW51YWxseSBzaWduIGEgbW9kdWxlLCB1c2UgdGhlIHNjcmlwdHMvc2lnbi1maWxlIHRvb2wgYXZhaWxhYmxlIGluCit0aGUgTGludXgga2VybmVsIHNvdXJjZSB0cmVlLiAgVGhlIHNjcmlwdCByZXF1aXJlcyA0IGFyZ3VtZW50czoKKworCTEuICBUaGUgaGFzaCBhbGdvcml0aG0gKGUuZy4sIHNoYTI1NikKKwkyLiAgVGhlIHByaXZhdGUga2V5IGZpbGVuYW1lIG9yIFBLQ1MjMTEgVVJJCisJMy4gIFRoZSBwdWJsaWMga2V5IGZpbGVuYW1lCisJNC4gIFRoZSBrZXJuZWwgbW9kdWxlIHRvIGJlIHNpZ25lZAorCitUaGUgZm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgdG8gc2lnbiBhIGtlcm5lbCBtb2R1bGU6CisKKwlzY3JpcHRzL3NpZ24tZmlsZSBzaGE1MTIga2VybmVsLXNpZ25rZXkucHJpdiBcCisJCWtlcm5lbC1zaWdua2V5Lng1MDkgbW9kdWxlLmtvCisKK1RoZSBoYXNoIGFsZ29yaXRobSB1c2VkIGRvZXMgbm90IGhhdmUgdG8gbWF0Y2ggdGhlIG9uZSBjb25maWd1cmVkLCBidXQgaWYgaXQKK2RvZXNuJ3QsIHlvdSBzaG91bGQgbWFrZSBzdXJlIHRoYXQgaGFzaCBhbGdvcml0aG0gaXMgZWl0aGVyIGJ1aWx0IGludG8gdGhlCitrZXJuZWwgb3IgY2FuIGJlIGxvYWRlZCB3aXRob3V0IHJlcXVpcmluZyBpdHNlbGYuCisKK0lmIHRoZSBwcml2YXRlIGtleSByZXF1aXJlcyBhIHBhc3NwaHJhc2Ugb3IgUElOLCBpdCBjYW4gYmUgcHJvdmlkZWQgaW4gdGhlCiskS0JVSUxEX1NJR05fUElOIGVudmlyb25tZW50IHZhcmlhYmxlLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1NJR05FRCBNT0RVTEVTIEFORCBTVFJJUFBJTkcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQSBzaWduZWQgbW9kdWxlIGhhcyBhIGRpZ2l0YWwgc2lnbmF0dXJlIHNpbXBseSBhcHBlbmRlZCBhdCB0aGUgZW5kLiAgVGhlIHN0cmluZworIn5Nb2R1bGUgc2lnbmF0dXJlIGFwcGVuZGVkfi4iIGF0IHRoZSBlbmQgb2YgdGhlIG1vZHVsZSdzIGZpbGUgY29uZmlybXMgdGhhdCBhCitzaWduYXR1cmUgaXMgcHJlc2VudCBidXQgaXQgZG9lcyBub3QgY29uZmlybSB0aGF0IHRoZSBzaWduYXR1cmUgaXMgdmFsaWQhCisKK1NpZ25lZCBtb2R1bGVzIGFyZSBCUklUVExFIGFzIHRoZSBzaWduYXR1cmUgaXMgb3V0c2lkZSBvZiB0aGUgZGVmaW5lZCBFTEYKK2NvbnRhaW5lci4gIFRodXMgdGhleSBNQVkgTk9UIGJlIHN0cmlwcGVkIG9uY2UgdGhlIHNpZ25hdHVyZSBpcyBjb21wdXRlZCBhbmQKK2F0dGFjaGVkLiAgTm90ZSB0aGUgZW50aXJlIG1vZHVsZSBpcyB0aGUgc2lnbmVkIHBheWxvYWQsIGluY2x1ZGluZyBhbnkgYW5kIGFsbAorZGVidWcgaW5mb3JtYXRpb24gcHJlc2VudCBhdCB0aGUgdGltZSBvZiBzaWduaW5nLgorCisKKz09PT09PT09PT09PT09PT09PT09PT0KK0xPQURJTkcgU0lHTkVEIE1PRFVMRVMKKz09PT09PT09PT09PT09PT09PT09PT0KKworTW9kdWxlcyBhcmUgbG9hZGVkIHdpdGggaW5zbW9kLCBtb2Rwcm9iZSwgaW5pdF9tb2R1bGUoKSBvciBmaW5pdF9tb2R1bGUoKSwKK2V4YWN0bHkgYXMgZm9yIHVuc2lnbmVkIG1vZHVsZXMgYXMgbm8gcHJvY2Vzc2luZyBpcyBkb25lIGluIHVzZXJzcGFjZS4gIFRoZQorc2lnbmF0dXJlIGNoZWNraW5nIGlzIGFsbCBkb25lIHdpdGhpbiB0aGUga2VybmVsLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitOT04tVkFMSUQgU0lHTkFUVVJFUyBBTkQgVU5TSUdORUQgTU9EVUxFUworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSWYgQ09ORklHX01PRFVMRV9TSUdfRk9SQ0UgaXMgZW5hYmxlZCBvciBlbmZvcmNlbW9kdWxlc2lnPTEgaXMgc3VwcGxpZWQgb24KK3RoZSBrZXJuZWwgY29tbWFuZCBsaW5lLCB0aGUga2VybmVsIHdpbGwgb25seSBsb2FkIHZhbGlkbHkgc2lnbmVkIG1vZHVsZXMKK2ZvciB3aGljaCBpdCBoYXMgYSBwdWJsaWMga2V5LiAgIE90aGVyd2lzZSwgaXQgd2lsbCBhbHNvIGxvYWQgbW9kdWxlcyB0aGF0IGFyZQordW5zaWduZWQuICAgQW55IG1vZHVsZSBmb3Igd2hpY2ggdGhlIGtlcm5lbCBoYXMgYSBrZXksIGJ1dCB3aGljaCBwcm92ZXMgdG8gaGF2ZQorYSBzaWduYXR1cmUgbWlzbWF0Y2ggd2lsbCBub3QgYmUgcGVybWl0dGVkIHRvIGxvYWQuCisKK0FueSBtb2R1bGUgdGhhdCBoYXMgYW4gdW5wYXJzZWFibGUgc2lnbmF0dXJlIHdpbGwgYmUgcmVqZWN0ZWQuCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0FETUlOSVNURVJJTkcvUFJPVEVDVElORyBUSEUgUFJJVkFURSBLRVkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1NpbmNlIHRoZSBwcml2YXRlIGtleSBpcyB1c2VkIHRvIHNpZ24gbW9kdWxlcywgdmlydXNlcyBhbmQgbWFsd2FyZSBjb3VsZCB1c2UKK3RoZSBwcml2YXRlIGtleSB0byBzaWduIG1vZHVsZXMgYW5kIGNvbXByb21pc2UgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBUaGUKK3ByaXZhdGUga2V5IG11c3QgYmUgZWl0aGVyIGRlc3Ryb3llZCBvciBtb3ZlZCB0byBhIHNlY3VyZSBsb2NhdGlvbiBhbmQgbm90IGtlcHQKK2luIHRoZSByb290IG5vZGUgb2YgdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4KKworSWYgeW91IHVzZSB0aGUgc2FtZSBwcml2YXRlIGtleSB0byBzaWduIG1vZHVsZXMgZm9yIG11bHRpcGxlIGtlcm5lbAorY29uZmlndXJhdGlvbnMsIHlvdSBtdXN0IGVuc3VyZSB0aGF0IHRoZSBtb2R1bGUgdmVyc2lvbiBpbmZvcm1hdGlvbiBpcworc3VmZmljaWVudCB0byBwcmV2ZW50IGxvYWRpbmcgYSBtb2R1bGUgaW50byBhIGRpZmZlcmVudCBrZXJuZWwuICBFaXRoZXIKK3NldCBDT05GSUdfTU9EVkVSU0lPTlM9eSBvciBlbnN1cmUgdGhhdCBlYWNoIGNvbmZpZ3VyYXRpb24gaGFzIGEgZGlmZmVyZW50CitrZXJuZWwgcmVsZWFzZSBzdHJpbmcgYnkgY2hhbmdpbmcgRVhUUkFWRVJTSU9OIG9yIENPTkZJR19MT0NBTFZFUlNJT04uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21vbm8udHh0IGIvRG9jdW1lbnRhdGlvbi9tb25vLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDFhYzYwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9tb25vLnR4dApAQCAtMCwwICsxLDY2IEBACisgICAgICAgICAgICAgICBNb25vKHRtKSBCaW5hcnkgS2VybmVsIFN1cHBvcnQgZm9yIExpbnV4CisgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUbyBjb25maWd1cmUgTGludXggdG8gYXV0b21hdGljYWxseSBleGVjdXRlIE1vbm8tYmFzZWQgLk5FVCBiaW5hcmllcworKGluIHRoZSBmb3JtIG9mIC5leGUgZmlsZXMpIHdpdGhvdXQgdGhlIG5lZWQgdG8gdXNlIHRoZSBtb25vIENMUgord3JhcHBlciwgeW91IGNhbiB1c2UgdGhlIEJJTkZNVF9NSVNDIGtlcm5lbCBzdXBwb3J0LgorCitUaGlzIHdpbGwgYWxsb3cgeW91IHRvIGV4ZWN1dGUgTW9uby1iYXNlZCAuTkVUIGJpbmFyaWVzIGp1c3QgbGlrZSBhbnkKK290aGVyIHByb2dyYW0gYWZ0ZXIgeW91IGhhdmUgZG9uZSB0aGUgZm9sbG93aW5nOgorCisxKSBZb3UgTVVTVCBGSVJTVCBpbnN0YWxsIHRoZSBNb25vIENMUiBzdXBwb3J0LCBlaXRoZXIgYnkgZG93bmxvYWRpbmcKKyAgIGEgYmluYXJ5IHBhY2thZ2UsIGEgc291cmNlIHRhcmJhbGwgb3IgYnkgaW5zdGFsbGluZyBmcm9tIENWUy4gQmluYXJ5CisgICBwYWNrYWdlcyBmb3Igc2V2ZXJhbCBkaXN0cmlidXRpb25zIGNhbiBiZSBmb3VuZCBhdDoKKworCWh0dHA6Ly9nby1tb25vLmNvbS9kb3dubG9hZC5odG1sCisKKyAgIEluc3RydWN0aW9ucyBmb3IgY29tcGlsaW5nIE1vbm8gY2FuIGJlIGZvdW5kIGF0OgorCisJaHR0cDovL3d3dy5nby1tb25vLmNvbS9jb21waWxpbmcuaHRtbAorCisgICBPbmNlIHRoZSBNb25vIENMUiBzdXBwb3J0IGhhcyBiZWVuIGluc3RhbGxlZCwganVzdCBjaGVjayB0aGF0CisgICAvdXNyL2Jpbi9tb25vICh3aGljaCBjb3VsZCBiZSBsb2NhdGVkIGVsc2V3aGVyZSwgZm9yIGV4YW1wbGUKKyAgIC91c3IvbG9jYWwvYmluL21vbm8pIGlzIHdvcmtpbmcuCisKKzIpIFlvdSBoYXZlIHRvIGNvbXBpbGUgQklORk1UX01JU0MgZWl0aGVyIGFzIGEgbW9kdWxlIG9yIGludG8KKyAgIHRoZSBrZXJuZWwgKENPTkZJR19CSU5GTVRfTUlTQykgYW5kIHNldCBpdCB1cCBwcm9wZXJseS4KKyAgIElmIHlvdSBjaG9vc2UgdG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgeW91IHdpbGwgaGF2ZQorICAgdG8gaW5zZXJ0IGl0IG1hbnVhbGx5IHdpdGggbW9kcHJvYmUvaW5zbW9kLCBhcyBrbW9kCisgICBjYW5ub3QgYmUgZWFzaWx5IHN1cHBvcnRlZCB3aXRoIGJpbmZtdF9taXNjLiAKKyAgIFJlYWQgdGhlIGZpbGUgJ2JpbmZtdF9taXNjLnR4dCcgaW4gdGhpcyBkaXJlY3RvcnkgdG8ga25vdworICAgbW9yZSBhYm91dCB0aGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLgorCiszKSBBZGQgdGhlIGZvbGxvd2luZyBlbnRyaWVzIHRvIC9ldGMvcmMubG9jYWwgb3Igc2ltaWxhciBzY3JpcHQKKyAgIHRvIGJlIHJ1biBhdCBzeXN0ZW0gc3RhcnR1cDoKKworIyBJbnNlcnQgQklORk1UX01JU0MgbW9kdWxlIGludG8gdGhlIGtlcm5lbAoraWYgWyAhIC1lIC9wcm9jL3N5cy9mcy9iaW5mbXRfbWlzYy9yZWdpc3RlciBdOyB0aGVuCisgICAgICAgIC9zYmluL21vZHByb2JlIGJpbmZtdF9taXNjCisJIyBTb21lIGRpc3RyaWJ1dGlvbnMsIGxpa2UgRmVkb3JhIENvcmUsIHBlcmZvcm0KKwkjIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlCisJIyBiaW5mbXRfbWlzYyBtb2R1bGUgaXMgbG9hZGVkIGludG8gdGhlIGtlcm5lbAorCSMgb3IgZHVyaW5nIG5vcm1hbCBib290IHVwIChzeXN0ZW1kLWJhc2VkIHN5c3RlbXMpLgorCSMgVGh1cywgaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgZm9sbG93aW5nIGxpbmUKKwkjIGlzIG5vdCBuZWVkZWQgYXQgYWxsLgorCW1vdW50IC10IGJpbmZtdF9taXNjIG5vbmUgL3Byb2Mvc3lzL2ZzL2JpbmZtdF9taXNjCitmaQorCisjIFJlZ2lzdGVyIHN1cHBvcnQgZm9yIC5ORVQgQ0xSIGJpbmFyaWVzCitpZiBbIC1lIC9wcm9jL3N5cy9mcy9iaW5mbXRfbWlzYy9yZWdpc3RlciBdOyB0aGVuCisJIyBSZXBsYWNlIC91c3IvYmluL21vbm8gd2l0aCB0aGUgY29ycmVjdCBwYXRobmFtZSB0bworCSMgdGhlIE1vbm8gQ0xSIHJ1bnRpbWUgKHVzdWFsbHkgL3Vzci9sb2NhbC9iaW4vbW9ubworCSMgd2hlbiBjb21waWxpbmcgZnJvbSBzb3VyY2VzIG9yIENWUykuCisgICAgICAgIGVjaG8gJzpDTFI6TTo6TVo6Oi91c3IvYmluL21vbm86JyA+IC9wcm9jL3N5cy9mcy9iaW5mbXRfbWlzYy9yZWdpc3RlcgorZWxzZQorICAgICAgICBlY2hvICJObyBiaW5mbXRfbWlzYyBzdXBwb3J0IgorICAgICAgICBleGl0IDEKK2ZpCisKKzQpIENoZWNrIHRoYXQgLmV4ZSBiaW5hcmllcyBjYW4gYmUgcmFuIHdpdGhvdXQgdGhlIG5lZWQgb2YgYQorICAgd3JhcHBlciBzY3JpcHQsIHNpbXBseSBieSBsYXVuY2hpbmcgdGhlIC5leGUgZmlsZSBkaXJlY3RseQorICAgZnJvbSBhIGNvbW1hbmQgcHJvbXB0LCBmb3IgZXhhbXBsZToKKworCS91c3IvYmluL3hzZC5leGUKKworICAgTk9URTogSWYgdGhpcyBmYWlscyB3aXRoIGEgcGVybWlzc2lvbiBkZW5pZWQgZXJyb3IsIGNoZWNrCisgICAgICAgICB0aGF0IHRoZSAuZXhlIGZpbGUgaGFzIGV4ZWN1dGUgcGVybWlzc2lvbnMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL210ZC9uYW5kL3B4YTN4eC1uYW5kLnR4dCBiL0RvY3VtZW50YXRpb24vbXRkL25hbmQvcHhhM3h4LW5hbmQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNzRjYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL210ZC9uYW5kL3B4YTN4eC1uYW5kLnR4dApAQCAtMCwwICsxLDExMyBAQAorCitBYm91dCB0aGlzIGRvY3VtZW50Cis9PT09PT09PT09PT09PT09PT09CisKK1NvbWUgbm90ZXMgYWJvdXQgTWFydmVsbCdzIE5BTkQgY29udHJvbGxlciBhdmFpbGFibGUgaW4gUFhBIGFuZCBBcm1hZGEgMzcwL1hQCitTb0MgKGFrYSBORkN2MSBhbmQgTkZDdjIpLCB3aXRoIGFuIGVtcGhhc2lzIG9uIHRoZSBsYXR0ZXIuCisKK05GQ3YyIGNvbnRyb2xsZXIgYmFja2dyb3VuZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBjb250cm9sbGVyIGhhcyBhIDIxNzYgYnl0ZXMgRklGTyBidWZmZXIuIFRoZXJlZm9yZSwgaW4gb3JkZXIgdG8gc3VwcG9ydAorbGFyZ2VyIHBhZ2VzLCBJL08gb3BlcmF0aW9ucyBvbiA0IEtpQiBhbmQgOCBLaUIgcGFnZXMgaXMgZG9uZSB3aXRoIGEgc2V0IG9mCitjaHVua2VkIHRyYW5zZmVycy4KKworRm9yIGluc3RhbmNlLCBpZiB3ZSBjaG9vc2UgYSAyMDQ4IGRhdGEgY2h1bmsgYW5kIHNldCAiQkNIIiBFQ0MgKHNlZSBiZWxvdykKK3dlJ2xsIGhhdmUgdGhpcyBsYXlvdXQgaW4gdGhlIHBhZ2VzOgorCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICB8IDIwNDhCIGRhdGEgfCAzMkIgc3BhcmUgfCAzMEIgRUNDIHx8IDIwNDhCIGRhdGEgfCAzMkIgc3BhcmUgfCAzMEIgRUNDIHwgLi4uIHwKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBkcml2ZXIgcmVhZHMgdGhlIGRhdGEgYW5kIHNwYXJlIHBvcnRpb25zIGluZGVwZW5kZW50bHkgYW5kIGJ1aWxkcyBhbiBpbnRlcm5hbAorYnVmZmVyIHdpdGggdGhpcyBsYXlvdXQgKGluIHRoZSA0IEtpQiBwYWdlIGNhc2UpOgorCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICB8ICAgICA0MDk2QiBkYXRhICAgICB8ICAgICA2NEIgc3BhcmUgICAgIHwKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Fsc28sIGZvciB0aGUgUkVBRE9PQiBjb21tYW5kIHRoZSBkcml2ZXIgZGlzYWJsZXMgdGhlIEVDQyBhbmQgcmVhZHMgYSAnc3BhcmUgKyBFQ0MnCitPT0IsIG9uZSBwZXIgY2h1bmsgcmVhZC4KKworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIHwgICAgIDQwOTZCIGRhdGEgICAgIHwgIDMyQiBzcGFyZSB8IDMwQiBFQ0MgfCAzMkIgc3BhcmUgfCAzMEIgRUNDIHwKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTbywgaW4gb3JkZXIgdG8gYWNoaWV2ZSByZWFkaW5nIChmb3IgaW5zdGFuY2UpLCB3ZSBpc3N1ZSBzZXZlcmFsIFJFQUQwIGNvbW1hbmRzCisod2l0aCBzb21lIGFkZGl0aW9uYWwgY29udHJvbGxlci1zcGVjaWZpYyBtYWdpYykgYW5kIHJlYWQgdHdvIGNodW5rcyBvZiAyMDgwQgorKDIwNDggZGF0YSArIDMyIHNwYXJlKSBlYWNoLgorVGhlIGRyaXZlciBhY2NvbW1vZGF0ZXMgdGhpcyBkYXRhIHRvIGV4cG9zZSB0aGUgTkFORCBjb3JlIGEgY29udGlndW91cyBidWZmZXIKKyg0MDk2IGRhdGEgKyBzcGFyZSkgb3IgKDQwOTYgKyBzcGFyZSArIEVDQyArIHNwYXJlICsgRUNDKS4KKworRUNDCis9PT0KKworVGhlIGNvbnRyb2xsZXIgaGFzIGJ1aWx0LWluIGhhcmR3YXJlIEVDQyBjYXBhYmlsaXRpZXMuIEluIGFkZGl0aW9uIGl0IGlzCitjb25maWd1cmFibGUgYmV0d2VlbiB0d28gbW9kZXM6IDEpIEhhbW1pbmcsIDIpIEJDSC4KKworTm90ZSB0aGF0IHRoZSBhY3R1YWwgQkNIIG1vZGU6IEJDSC00IG9yIEJDSC04IHdpbGwgZGVwZW5kIG9uIHRoZSB3YXkKK3RoZSBjb250cm9sbGVyIGlzIGNvbmZpZ3VyZWQgdG8gdHJhbnNmZXIgdGhlIGRhdGEuCisKK0luIHRoZSBCQ0ggbW9kZSB0aGUgRUNDIGNvZGUgd2lsbCBiZSBjYWxjdWxhdGVkIGZvciBlYWNoIHRyYW5zZmVycmVkIGNodW5rCithbmQgZXhwZWN0ZWQgdG8gYmUgbG9jYXRlZCAod2hlbiByZWFkaW5nL3Byb2dyYW1taW5nKSByaWdodCBhZnRlciB0aGUgc3BhcmUKK2J5dGVzIGFzIHRoZSBmaWd1cmUgYWJvdmUgc2hvd3MuCisKK1NvLCByZXBlYXRpbmcgdGhlIGFib3ZlIHNjaGVtZSwgYSAyMDQ4QiBkYXRhIGNodW5rIHdpbGwgYmUgZm9sbG93ZWQgYnkgMzJCCitzcGFyZSwgYW5kIHRoZW4gdGhlIEVDQyBjb250cm9sbGVyIHdpbGwgcmVhZC93cml0ZSB0aGUgRUNDIGNvZGUgKDMwQiBpbgordGhpcyBjYXNlKToKKworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgfCAyMDQ4QiBkYXRhIHwgMzJCIHNwYXJlIHwgMzBCIEVDQyB8CisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJZiB0aGUgRUNDIG1vZGUgaXMgJ0JDSCcgdGhlbiB0aGUgRUNDIGlzICphbHdheXMqIDMwIGJ5dGVzIGxvbmcuCitJZiB0aGUgRUNDIG1vZGUgaXMgJ0hhbW1pbmcnIHRoZSBFQ0MgaXMgNiBieXRlcyBsb25nLCBmb3IgZWFjaCA1MTJCIGJsb2NrLgorU28gaW4gSGFtbWluZyBtb2RlLCBhIDIwNDhCIHBhZ2Ugd2lsbCBoYXZlIGEgMjRCIEVDQy4KKworRGVzcGl0ZSBhbGwgb2YgdGhlIGFib3ZlLCB0aGUgY29udHJvbGxlciByZXF1aXJlcyB0aGUgZHJpdmVyIHRvIG9ubHkgcmVhZCBvcgord3JpdGUgaW4gbXVsdGlwbGVzIG9mIDgtYnl0ZXMsIGJlY2F1c2UgdGhlIGRhdGEgYnVmZmVyIGlzIDY0LWJpdHMuCisKK09PQgorPT09CisKK0JlY2F1c2Ugb2YgdGhlIGFib3ZlIHNjaGVtZSwgYW5kIGJlY2F1c2UgdGhlICJzcGFyZSIgT09CIGlzIHJlYWxseSBsb2NhdGVkIGluCit0aGUgbWlkZGxlIG9mIGEgcGFnZSwgc3BhcmUgT09CIGNhbm5vdCBiZSByZWFkIG9yIHdyaXRlIGluZGVwZW5kZW50bHkgb2YgdGhlCitkYXRhIGFyZWEuIEluIG90aGVyIHdvcmRzLCBpbiBvcmRlciB0byByZWFkIHRoZSBPT0IgKGFrYSBSRUFET09CKSwgdGhlIGVudGlyZQorcGFnZSAoYWthIFJFQUQwKSBoYXMgdG8gYmUgcmVhZC4KKworSW4gdGhlIHNhbWUgc2Vuc2UsIGluIG9yZGVyIHRvIHdyaXRlIHRvIHRoZSBzcGFyZSBPT0IgdGhlIGRyaXZlciBoYXMgdG8gd3JpdGUKK2FuICplbnRpcmUqIHBhZ2UuCisKK0ZhY3RvcnkgYmFkIGJsb2NrcyBoYW5kbGluZworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0dpdmVuIHRoZSBFQ0MgQkNIIHJlcXVpcmVzIHRvIGxheW91dCB0aGUgZGV2aWNlJ3MgcGFnZXMgaW4gYSBzcGxpdAorZGF0YS9PT0IvZGF0YS9PT0Igd2F5LCB0aGUgY29udHJvbGxlciBoYXMgYSB2aWV3IG9mIHRoZSBmbGFzaCBwYWdlIHRoYXQncworZGlmZmVyZW50IGZyb20gdGhlIHNwZWNpZmllZCAoYWthIHRoZSBtYW51ZmFjdHVyZXIncykgdmlldy4gSW4gb3RoZXIgd29yZHMsCisKK0ZhY3RvcnkgdmlldzoKKworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICB8ICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgICB8eCAgT09CICAgfAorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEcml2ZXIncyB2aWV3OgorCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIHwgICAgICBEYXRhICAgICAgfCBPT0IgfCAgICAgIERhdGEgICB4ICB8IE9PQiB8CisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0l0IGNhbiBiZSBzZWVuIGZyb20gdGhlIGFib3ZlLCB0aGF0IHRoZSBmYWN0b3J5IGJhZCBibG9jayBtYXJrZXIgbXVzdCBiZQorc2VhcmNoZWQgd2l0aGluIHRoZSAnZGF0YScgcmVnaW9uLCBhbmQgbm90IGluIHRoZSB1c3VhbCBPT0IgcmVnaW9uLgorCitJbiBhZGRpdGlvbiwgdGhpcyBtZWFucyB1bmRlciByZWd1bGFyIHVzYWdlIHRoZSBkcml2ZXIgd2lsbCB3cml0ZSBzdWNoCitwb3NpdGlvbiAoc2luY2UgaXQgYmVsb25ncyB0byB0aGUgZGF0YSByZWdpb24pIGFuZCBldmVyeSB1c2VkIGJsb2NrIGlzCitsaWtlbHkgdG8gYmUgbWFya2VkIGFzIGJhZC4KKworRm9yIHRoaXMgcmVhc29uLCBtYXJraW5nIHRoZSBibG9jayBhcyBiYWQgaW4gdGhlIE9PQiBpcyBleHBsaWNpdGx5CitkaXNhYmxlZCBieSB1c2luZyB0aGUgTkFORF9CQlRfTk9fT09CX0JCTSBvcHRpb24gaW4gdGhlIGRyaXZlci4gVGhlIHJhdGlvbmFsZQorZm9yIHRoaXMgaXMgdGhhdCB0aGVyZSdzIG5vIHBvaW50IGluIG1hcmtpbmcgYSBibG9jayBhcyBiYWQsIGJlY2F1c2UgZ29vZAorYmxvY2tzIGFyZSBhbHNvICdtYXJrZWQgYXMgYmFkJyAoaW4gdGhlIE9PQiBCQk0gc2Vuc2UpIHVuZGVyIG5vcm1hbCB1c2FnZS4KKworSW5zdGVhZCwgdGhlIGRyaXZlciByZWxpZXMgb24gdGhlIGJhZCBibG9jayB0YWJsZSBhbG9uZSwgYW5kIHNob3VsZCBvbmx5IHBlcmZvcm0KK3RoZSBiYWQgYmxvY2sgc2NhbiBvbiB0aGUgdmVyeSBmaXJzdCB0aW1lICh3aGVuIHRoZSBkZXZpY2UgaGFzbid0IGJlZW4gdXNlZCkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL210ZC9uYW5kX2VjYy50eHQgYi9Eb2N1bWVudGF0aW9uL210ZC9uYW5kX2VjYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTEyOWIyNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbXRkL25hbmRfZWNjLnR4dApAQCAtMCwwICsxLDcxNCBAQAorSW50cm9kdWN0aW9uCis9PT09PT09PT09PT0KKworSGF2aW5nIGxvb2tlZCBhdCB0aGUgbGludXggbXRkL25hbmQgZHJpdmVyIGFuZCBtb3JlIHNwZWNpZmljIGF0IG5hbmRfZWNjLmMKK0kgZmVsdCB0aGVyZSB3YXMgcm9vbSBmb3Igb3B0aW1pc2F0aW9uLiBJIGJhc2hlZCB0aGUgY29kZSBmb3IgYSBmZXcgaG91cnMKK3BlcmZvcm1pbmcgdHJpY2tzIGxpa2UgdGFibGUgbG9va3VwIHJlbW92aW5nIHN1cGVyZmx1b3VzIGNvZGUgZXRjLgorQWZ0ZXIgdGhhdCB0aGUgc3BlZWQgd2FzIGluY3JlYXNlZCBieSAzNS00MCUuCitTdGlsbCBJIHdhcyBub3QgdG9vIGhhcHB5IGFzIEkgZmVsdCB0aGVyZSB3YXMgYWRkaXRpb25hbCByb29tIGZvciBpbXByb3ZlbWVudC4KKworQmFkISBJIHdhcyBob29rZWQuCitJIGRlY2lkZWQgdG8gYW5ub3RhdGUgbXkgc3RlcHMgaW4gdGhpcyBmaWxlLiBQZXJoYXBzIGl0IGlzIHVzZWZ1bCB0byBzb21lb25lCitvciBzb21lb25lIGxlYXJucyBzb21ldGhpbmcgZnJvbSBpdC4KKworCitUaGUgcHJvYmxlbQorPT09PT09PT09PT0KKworTkFORCBmbGFzaCAoYXQgbGVhc3QgU0xDIG9uZSkgdHlwaWNhbGx5IGhhcyBzZWN0b3JzIG9mIDI1NiBieXRlcy4KK0hvd2V2ZXIgTkFORCBmbGFzaCBpcyBub3QgZXh0cmVtZWx5IHJlbGlhYmxlIHNvIHNvbWUgZXJyb3IgZGV0ZWN0aW9uCisoYW5kIHNvbWV0aW1lcyBjb3JyZWN0aW9uKSBpcyBuZWVkZWQuCisKK1RoaXMgaXMgZG9uZSBieSBtZWFucyBvZiBhIEhhbW1pbmcgY29kZS4gSSdsbCB0cnkgdG8gZXhwbGFpbiBpdCBpbgorbGF5bWFucyB0ZXJtcyAoYW5kIGFwb2xvZ2llcyB0byBhbGwgdGhlIHBybydzIGluIHRoZSBmaWVsZCBpbiBjYXNlIEkgZG8KK25vdCB1c2UgdGhlIHJpZ2h0IHRlcm1pbm9sb2d5LCBteSBjb2RpbmcgdGhlb3J5IGNsYXNzIHdhcyBhbG1vc3QgMzAKK3llYXJzIGFnbywgYW5kIEkgbXVzdCBhZG1pdCBpdCB3YXMgbm90IG9uZSBvZiBteSBmYXZvdXJpdGVzKS4KKworQXMgSSBzYWlkIGJlZm9yZSB0aGUgZWNjIGNhbGN1bGF0aW9uIGlzIHBlcmZvcm1lZCBvbiBzZWN0b3JzIG9mIDI1NgorYnl0ZXMuIFRoaXMgaXMgZG9uZSBieSBjYWxjdWxhdGluZyBzZXZlcmFsIHBhcml0eSBiaXRzIG92ZXIgdGhlIHJvd3MgYW5kCitjb2x1bW5zLiBUaGUgcGFyaXR5IHVzZWQgaXMgZXZlbiBwYXJpdHkgd2hpY2ggbWVhbnMgdGhhdCB0aGUgcGFyaXR5IGJpdCA9IDEKK2lmIHRoZSBkYXRhIG92ZXIgd2hpY2ggdGhlIHBhcml0eSBpcyBjYWxjdWxhdGVkIGlzIDEgYW5kIHRoZSBwYXJpdHkgYml0ID0gMAoraWYgdGhlIGRhdGEgb3ZlciB3aGljaCB0aGUgcGFyaXR5IGlzIGNhbGN1bGF0ZWQgaXMgMC4gU28gdGhlIHRvdGFsCitudW1iZXIgb2YgYml0cyBvdmVyIHRoZSBkYXRhIG92ZXIgd2hpY2ggdGhlIHBhcml0eSBpcyBjYWxjdWxhdGVkICsgdGhlCitwYXJpdHkgYml0IGlzIGV2ZW4uIChzZWUgd2lraXBlZGlhIGlmIHlvdSBjYW4ndCBmb2xsb3cgdGhpcykuCitQYXJpdHkgaXMgb2Z0ZW4gY2FsY3VsYXRlZCBieSBtZWFucyBvZiBhbiBleGNsdXNpdmUgb3Igb3BlcmF0aW9uLAorc29tZXRpbWVzIGFsc28gcmVmZXJyZWQgdG8gYXMgeG9yLiBJbiBDIHRoZSBvcGVyYXRvciBmb3IgeG9yIGlzIF4KKworQmFjayB0byBlY2MuCitMZXQncyBnaXZlIGEgc21hbGwgZmlndXJlOgorCitieXRlICAgMDogIGJpdDcgYml0NiBiaXQ1IGJpdDQgYml0MyBiaXQyIGJpdDEgYml0MCAgIHJwMCBycDIgcnA0IC4uLiBycDE0CitieXRlICAgMTogIGJpdDcgYml0NiBiaXQ1IGJpdDQgYml0MyBiaXQyIGJpdDEgYml0MCAgIHJwMSBycDIgcnA0IC4uLiBycDE0CitieXRlICAgMjogIGJpdDcgYml0NiBiaXQ1IGJpdDQgYml0MyBiaXQyIGJpdDEgYml0MCAgIHJwMCBycDMgcnA0IC4uLiBycDE0CitieXRlICAgMzogIGJpdDcgYml0NiBiaXQ1IGJpdDQgYml0MyBiaXQyIGJpdDEgYml0MCAgIHJwMSBycDMgcnA0IC4uLiBycDE0CitieXRlICAgNDogIGJpdDcgYml0NiBiaXQ1IGJpdDQgYml0MyBiaXQyIGJpdDEgYml0MCAgIHJwMCBycDIgcnA1IC4uLiBycDE0CisuLi4uCitieXRlIDI1NDogIGJpdDcgYml0NiBiaXQ1IGJpdDQgYml0MyBiaXQyIGJpdDEgYml0MCAgIHJwMCBycDMgcnA1IC4uLiBycDE1CitieXRlIDI1NTogIGJpdDcgYml0NiBiaXQ1IGJpdDQgYml0MyBiaXQyIGJpdDEgYml0MCAgIHJwMSBycDMgcnA1IC4uLiBycDE1CisgICAgICAgICAgIGNwMSAgY3AwICBjcDEgIGNwMCAgY3AxICBjcDAgIGNwMSAgY3AwCisgICAgICAgICAgIGNwMyAgY3AzICBjcDIgIGNwMiAgY3AzICBjcDMgIGNwMiAgY3AyCisgICAgICAgICAgIGNwNSAgY3A1ICBjcDUgIGNwNSAgY3A0ICBjcDQgIGNwNCAgY3A0CisKK1RoaXMgZmlndXJlIHJlcHJlc2VudHMgYSBzZWN0b3Igb2YgMjU2IGJ5dGVzLgorY3AgaXMgbXkgYWJicmV2aWF0aW9uIGZvciBjb2x1bW4gcGFyaXR5LCBycCBmb3Igcm93IHBhcml0eS4KKworTGV0J3Mgc3RhcnQgdG8gZXhwbGFpbiBjb2x1bW4gcGFyaXR5LgorY3AwIGlzIHRoZSBwYXJpdHkgdGhhdCBiZWxvbmdzIHRvIGFsbCBiaXQwLCBiaXQyLCBiaXQ0LCBiaXQ2Lgorc28gdGhlIHN1bSBvZiBhbGwgYml0MCwgYml0MiwgYml0NCBhbmQgYml0NiB2YWx1ZXMgKyBjcDAgaXRzZWxmIGlzIGV2ZW4uCitTaW1pbGFybHkgY3AxIGlzIHRoZSBzdW0gb2YgYWxsIGJpdDEsIGJpdDMsIGJpdDUgYW5kIGJpdDcuCitjcDIgaXMgdGhlIHBhcml0eSBvdmVyIGJpdDAsIGJpdDEsIGJpdDQgYW5kIGJpdDUKK2NwMyBpcyB0aGUgcGFyaXR5IG92ZXIgYml0MiwgYml0MywgYml0NiBhbmQgYml0Ny4KK2NwNCBpcyB0aGUgcGFyaXR5IG92ZXIgYml0MCwgYml0MSwgYml0MiBhbmQgYml0My4KK2NwNSBpcyB0aGUgcGFyaXR5IG92ZXIgYml0NCwgYml0NSwgYml0NiBhbmQgYml0Ny4KK05vdGUgdGhhdCBlYWNoIG9mIGNwMCAuLiBjcDUgaXMgZXhhY3RseSBvbmUgYml0LgorCitSb3cgcGFyaXR5IGFjdHVhbGx5IHdvcmtzIGFsbW9zdCB0aGUgc2FtZS4KK3JwMCBpcyB0aGUgcGFyaXR5IG9mIGFsbCBldmVuIGJ5dGVzICgwLCAyLCA0LCA2LCAuLi4gMjUyLCAyNTQpCitycDEgaXMgdGhlIHBhcml0eSBvZiBhbGwgb2RkIGJ5dGVzICgxLCAzLCA1LCA3LCAuLi4sIDI1MywgMjU1KQorcnAyIGlzIHRoZSBwYXJpdHkgb2YgYWxsIGJ5dGVzIDAsIDEsIDQsIDUsIDgsIDksIC4uLgorKHNvIGhhbmRsZSB0d28gYnl0ZXMsIHRoZW4gc2tpcCAyIGJ5dGVzKS4KK3JwMyBpcyBjb3ZlcnMgdGhlIGhhbGYgcnAyIGRvZXMgbm90IGNvdmVyIChieXRlcyAyLCAzLCA2LCA3LCAxMCwgMTEsIC4uLikKK2ZvciBycDQgdGhlIHJ1bGUgaXMgY292ZXIgNCBieXRlcywgc2tpcCA0IGJ5dGVzLCBjb3ZlciA0IGJ5dGVzLCBza2lwIDQgZXRjLgorc28gcnA0IGNhbGN1bGF0ZXMgcGFyaXR5IG92ZXIgYnl0ZXMgMCwgMSwgMiwgMywgOCwgOSwgMTAsIDExLCAxNiwgLi4uKQorYW5kIHJwNSBjb3ZlcnMgdGhlIG90aGVyIGhhbGYsIHNvIGJ5dGVzIDQsIDUsIDYsIDcsIDEyLCAxMywgMTQsIDE1LCAyMCwgLi4KK1RoZSBzdG9yeSBub3cgYmVjb21lcyBxdWl0ZSBib3JpbmcuIEkgZ3Vlc3MgeW91IGdldCB0aGUgaWRlYS4KK3JwNiBjb3ZlcnMgOCBieXRlcyB0aGVuIHNraXBzIDggZXRjCitycDcgc2tpcHMgOCBieXRlcyB0aGVuIGNvdmVycyA4IGV0YworcnA4IGNvdmVycyAxNiBieXRlcyB0aGVuIHNraXBzIDE2IGV0YworcnA5IHNraXBzIDE2IGJ5dGVzIHRoZW4gY292ZXJzIDE2IGV0YworcnAxMCBjb3ZlcnMgMzIgYnl0ZXMgdGhlbiBza2lwcyAzMiBldGMKK3JwMTEgc2tpcHMgMzIgYnl0ZXMgdGhlbiBjb3ZlcnMgMzIgZXRjCitycDEyIGNvdmVycyA2NCBieXRlcyB0aGVuIHNraXBzIDY0IGV0YworcnAxMyBza2lwcyA2NCBieXRlcyB0aGVuIGNvdmVycyA2NCBldGMKK3JwMTQgY292ZXJzIDEyOCBieXRlcyB0aGVuIHNraXBzIDEyOAorcnAxNSBza2lwcyAxMjggYnl0ZXMgdGhlbiBjb3ZlcnMgMTI4CisKK0luIHRoZSBlbmQgdGhlIHBhcml0eSBiaXRzIGFyZSBncm91cGVkIHRvZ2V0aGVyIGluIHRocmVlIGJ5dGVzIGFzCitmb2xsb3dzOgorRUNDICAgIEJpdCA3IEJpdCA2IEJpdCA1IEJpdCA0IEJpdCAzIEJpdCAyIEJpdCAxIEJpdCAwCitFQ0MgMCAgIHJwMDcgIHJwMDYgIHJwMDUgIHJwMDQgIHJwMDMgIHJwMDIgIHJwMDEgIHJwMDAKK0VDQyAxICAgcnAxNSAgcnAxNCAgcnAxMyAgcnAxMiAgcnAxMSAgcnAxMCAgcnAwOSAgcnAwOAorRUNDIDIgICBjcDUgICBjcDQgICBjcDMgICBjcDIgICBjcDEgICBjcDAgICAgICAxICAgICAxCisKK0kgZGV0ZWN0ZWQgYWZ0ZXIgd3JpdGluZyB0aGlzIHRoYXQgU1QgYXBwbGljYXRpb24gbm90ZSBBTjE4MjMKKyhodHRwOi8vd3d3LnN0LmNvbS9zdG9ubGluZS8pIGdpdmVzIGEgbXVjaAorbmljZXIgcGljdHVyZS4oYnV0IHRoZXkgdXNlIGxpbmUgcGFyaXR5IGFzIHRlcm0gd2hlcmUgSSB1c2Ugcm93IHBhcml0eSkKK09oIHdlbGwsIEknbSBncmFwaGljYWxseSBjaGFsbGVuZ2VkLCBzbyBzdWZmZXIgd2l0aCBtZSBmb3IgYSBtb21lbnQgOi0pCitBbmQgSSBjb3VsZCBub3QgcmV1c2UgdGhlIFNUIHBpY3R1cmUgYW55d2F5IGZvciBjb3B5cmlnaHQgcmVhc29ucy4KKworCitBdHRlbXB0IDAKKz09PT09PT09PQorCitJbXBsZW1lbnRpbmcgdGhlIHBhcml0eSBjYWxjdWxhdGlvbiBpcyBwcmV0dHkgc2ltcGxlLgorSW4gQyBwc2V1ZG9jb2RlOgorZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQoreworICAgIGlmIChpICYgMHgwMSkKKyAgICAgICBycDEgPSBiaXQ3IF4gYml0NiBeIGJpdDUgXiBiaXQ0IF4gYml0MyBeIGJpdDIgXiBiaXQxIF4gYml0MCBeIHJwMTsKKyAgICBlbHNlCisgICAgICAgcnAwID0gYml0NyBeIGJpdDYgXiBiaXQ1IF4gYml0NCBeIGJpdDMgXiBiaXQyIF4gYml0MSBeIGJpdDAgXiBycDE7CisgICAgaWYgKGkgJiAweDAyKQorICAgICAgIHJwMyA9IGJpdDcgXiBiaXQ2IF4gYml0NSBeIGJpdDQgXiBiaXQzIF4gYml0MiBeIGJpdDEgXiBiaXQwIF4gcnAzOworICAgIGVsc2UKKyAgICAgICBycDIgPSBiaXQ3IF4gYml0NiBeIGJpdDUgXiBiaXQ0IF4gYml0MyBeIGJpdDIgXiBiaXQxIF4gYml0MCBeIHJwMjsKKyAgICBpZiAoaSAmIDB4MDQpCisgICAgICBycDUgPSBiaXQ3IF4gYml0NiBeIGJpdDUgXiBiaXQ0IF4gYml0MyBeIGJpdDIgXiBiaXQxIF4gYml0MCBeIHJwNTsKKyAgICBlbHNlCisgICAgICBycDQgPSBiaXQ3IF4gYml0NiBeIGJpdDUgXiBiaXQ0IF4gYml0MyBeIGJpdDIgXiBiaXQxIF4gYml0MCBeIHJwNDsKKyAgICBpZiAoaSAmIDB4MDgpCisgICAgICBycDcgPSBiaXQ3IF4gYml0NiBeIGJpdDUgXiBiaXQ0IF4gYml0MyBeIGJpdDIgXiBiaXQxIF4gYml0MCBeIHJwNzsKKyAgICBlbHNlCisgICAgICBycDYgPSBiaXQ3IF4gYml0NiBeIGJpdDUgXiBiaXQ0IF4gYml0MyBeIGJpdDIgXiBiaXQxIF4gYml0MCBeIHJwNjsKKyAgICBpZiAoaSAmIDB4MTApCisgICAgICBycDkgPSBiaXQ3IF4gYml0NiBeIGJpdDUgXiBiaXQ0IF4gYml0MyBeIGJpdDIgXiBiaXQxIF4gYml0MCBeIHJwOTsKKyAgICBlbHNlCisgICAgICBycDggPSBiaXQ3IF4gYml0NiBeIGJpdDUgXiBiaXQ0IF4gYml0MyBeIGJpdDIgXiBiaXQxIF4gYml0MCBeIHJwODsKKyAgICBpZiAoaSAmIDB4MjApCisgICAgICBycDExID0gYml0NyBeIGJpdDYgXiBiaXQ1IF4gYml0NCBeIGJpdDMgXiBiaXQyIF4gYml0MSBeIGJpdDAgXiBycDExOworICAgIGVsc2UKKyAgICBycDEwID0gYml0NyBeIGJpdDYgXiBiaXQ1IF4gYml0NCBeIGJpdDMgXiBiaXQyIF4gYml0MSBeIGJpdDAgXiBycDEwOworICAgIGlmIChpICYgMHg0MCkKKyAgICAgIHJwMTMgPSBiaXQ3IF4gYml0NiBeIGJpdDUgXiBiaXQ0IF4gYml0MyBeIGJpdDIgXiBiaXQxIF4gYml0MCBeIHJwMTM7CisgICAgZWxzZQorICAgICAgcnAxMiA9IGJpdDcgXiBiaXQ2IF4gYml0NSBeIGJpdDQgXiBiaXQzIF4gYml0MiBeIGJpdDEgXiBiaXQwIF4gcnAxMjsKKyAgICBpZiAoaSAmIDB4ODApCisgICAgICBycDE1ID0gYml0NyBeIGJpdDYgXiBiaXQ1IF4gYml0NCBeIGJpdDMgXiBiaXQyIF4gYml0MSBeIGJpdDAgXiBycDE1OworICAgIGVsc2UKKyAgICAgIHJwMTQgPSBiaXQ3IF4gYml0NiBeIGJpdDUgXiBiaXQ0IF4gYml0MyBeIGJpdDIgXiBiaXQxIF4gYml0MCBeIHJwMTQ7CisgICAgY3AwID0gYml0NiBeIGJpdDQgXiBiaXQyIF4gYml0MCBeIGNwMDsKKyAgICBjcDEgPSBiaXQ3IF4gYml0NSBeIGJpdDMgXiBiaXQxIF4gY3AxOworICAgIGNwMiA9IGJpdDUgXiBiaXQ0IF4gYml0MSBeIGJpdDAgXiBjcDI7CisgICAgY3AzID0gYml0NyBeIGJpdDYgXiBiaXQzIF4gYml0MiBeIGNwMworICAgIGNwNCA9IGJpdDMgXiBiaXQyIF4gYml0MSBeIGJpdDAgXiBjcDQKKyAgICBjcDUgPSBiaXQ3IF4gYml0NiBeIGJpdDUgXiBiaXQ0IF4gY3A1Cit9CisKKworQW5hbHlzaXMgMAorPT09PT09PT09PQorCitDIGRvZXMgaGF2ZSBiaXR3aXNlIG9wZXJhdG9ycyBidXQgbm90IHJlYWxseSBvcGVyYXRvcnMgdG8gZG8gdGhlIGFib3ZlCitlZmZpY2llbnRseSAoYW5kIG1vc3QgaGFyZHdhcmUgaGFzIG5vIHN1Y2ggaW5zdHJ1Y3Rpb25zIGVpdGhlcikuCitUaGVyZWZvcmUgd2l0aG91dCBpbXBsZW1lbnRpbmcgdGhpcyBpdCB3YXMgY2xlYXIgdGhhdCB0aGUgY29kZSBhYm92ZSB3YXMKK25vdCBnb2luZyB0byBicmluZyBtZSBhIE5vYmVsIHByaXplIDotKQorCitGb3J0dW5hdGVseSB0aGUgZXhjbHVzaXZlIG9yIG9wZXJhdGlvbiBpcyBjb21tdXRhdGl2ZSwgc28gd2UgY2FuIGNvbWJpbmUKK3RoZSB2YWx1ZXMgaW4gYW55IG9yZGVyLiBTbyBpbnN0ZWFkIG9mIGNhbGN1bGF0aW5nIGFsbCB0aGUgYml0cworaW5kaXZpZHVhbGx5LCBsZXQgdXMgdHJ5IHRvIHJlYXJyYW5nZSB0aGluZ3MuCitGb3IgdGhlIGNvbHVtbiBwYXJpdHkgdGhpcyBpcyBlYXN5LiBXZSBjYW4ganVzdCB4b3IgdGhlIGJ5dGVzIGFuZCBpbiB0aGUKK2VuZCBmaWx0ZXIgb3V0IHRoZSByZWxldmFudCBiaXRzLiBUaGlzIGlzIHByZXR0eSBuaWNlIGFzIGl0IHdpbGwgYnJpbmcKK2FsbCBjcCBjYWxjdWxhdGlvbiBvdXQgb2YgdGhlIGlmIGxvb3AuCisKK1NpbWlsYXJseSB3ZSBjYW4gZmlyc3QgeG9yIHRoZSBieXRlcyBmb3IgdGhlIHZhcmlvdXMgcm93cy4KK1RoaXMgbGVhZHMgdG86CisKKworQXR0ZW1wdCAxCis9PT09PT09PT0KKworY29uc3QgY2hhciBwYXJpdHlbMjU2XSA9IHsKKyAgICAwLCAxLCAxLCAwLCAxLCAwLCAwLCAxLCAxLCAwLCAwLCAxLCAwLCAxLCAxLCAwLAorICAgIDEsIDAsIDAsIDEsIDAsIDEsIDEsIDAsIDAsIDEsIDEsIDAsIDEsIDAsIDAsIDEsCisgICAgMSwgMCwgMCwgMSwgMCwgMSwgMSwgMCwgMCwgMSwgMSwgMCwgMSwgMCwgMCwgMSwKKyAgICAwLCAxLCAxLCAwLCAxLCAwLCAwLCAxLCAxLCAwLCAwLCAxLCAwLCAxLCAxLCAwLAorICAgIDEsIDAsIDAsIDEsIDAsIDEsIDEsIDAsIDAsIDEsIDEsIDAsIDEsIDAsIDAsIDEsCisgICAgMCwgMSwgMSwgMCwgMSwgMCwgMCwgMSwgMSwgMCwgMCwgMSwgMCwgMSwgMSwgMCwKKyAgICAwLCAxLCAxLCAwLCAxLCAwLCAwLCAxLCAxLCAwLCAwLCAxLCAwLCAxLCAxLCAwLAorICAgIDEsIDAsIDAsIDEsIDAsIDEsIDEsIDAsIDAsIDEsIDEsIDAsIDEsIDAsIDAsIDEsCisgICAgMSwgMCwgMCwgMSwgMCwgMSwgMSwgMCwgMCwgMSwgMSwgMCwgMSwgMCwgMCwgMSwKKyAgICAwLCAxLCAxLCAwLCAxLCAwLCAwLCAxLCAxLCAwLCAwLCAxLCAwLCAxLCAxLCAwLAorICAgIDAsIDEsIDEsIDAsIDEsIDAsIDAsIDEsIDEsIDAsIDAsIDEsIDAsIDEsIDEsIDAsCisgICAgMSwgMCwgMCwgMSwgMCwgMSwgMSwgMCwgMCwgMSwgMSwgMCwgMSwgMCwgMCwgMSwKKyAgICAwLCAxLCAxLCAwLCAxLCAwLCAwLCAxLCAxLCAwLCAwLCAxLCAwLCAxLCAxLCAwLAorICAgIDEsIDAsIDAsIDEsIDAsIDEsIDEsIDAsIDAsIDEsIDEsIDAsIDEsIDAsIDAsIDEsCisgICAgMSwgMCwgMCwgMSwgMCwgMSwgMSwgMCwgMCwgMSwgMSwgMCwgMSwgMCwgMCwgMSwKKyAgICAwLCAxLCAxLCAwLCAxLCAwLCAwLCAxLCAxLCAwLCAwLCAxLCAwLCAxLCAxLCAwCit9OworCit2b2lkIGVjYzEoY29uc3QgdW5zaWduZWQgY2hhciAqYnVmLCB1bnNpZ25lZCBjaGFyICpjb2RlKQoreworICAgIGludCBpOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJwID0gYnVmOworICAgIHVuc2lnbmVkIGNoYXIgY3VyOworICAgIHVuc2lnbmVkIGNoYXIgcnAwLCBycDEsIHJwMiwgcnAzLCBycDQsIHJwNSwgcnA2LCBycDc7CisgICAgdW5zaWduZWQgY2hhciBycDgsIHJwOSwgcnAxMCwgcnAxMSwgcnAxMiwgcnAxMywgcnAxNCwgcnAxNTsKKyAgICB1bnNpZ25lZCBjaGFyIHBhcjsKKworICAgIHBhciA9IDA7CisgICAgcnAwID0gMDsgcnAxID0gMDsgcnAyID0gMDsgcnAzID0gMDsKKyAgICBycDQgPSAwOyBycDUgPSAwOyBycDYgPSAwOyBycDcgPSAwOworICAgIHJwOCA9IDA7IHJwOSA9IDA7IHJwMTAgPSAwOyBycDExID0gMDsKKyAgICBycDEyID0gMDsgcnAxMyA9IDA7IHJwMTQgPSAwOyBycDE1ID0gMDsKKworICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKKyAgICB7CisgICAgICAgIGN1ciA9ICpicCsrOworICAgICAgICBwYXIgXj0gY3VyOworICAgICAgICBpZiAoaSAmIDB4MDEpIHJwMSBePSBjdXI7IGVsc2UgcnAwIF49IGN1cjsKKyAgICAgICAgaWYgKGkgJiAweDAyKSBycDMgXj0gY3VyOyBlbHNlIHJwMiBePSBjdXI7CisgICAgICAgIGlmIChpICYgMHgwNCkgcnA1IF49IGN1cjsgZWxzZSBycDQgXj0gY3VyOworICAgICAgICBpZiAoaSAmIDB4MDgpIHJwNyBePSBjdXI7IGVsc2UgcnA2IF49IGN1cjsKKyAgICAgICAgaWYgKGkgJiAweDEwKSBycDkgXj0gY3VyOyBlbHNlIHJwOCBePSBjdXI7CisgICAgICAgIGlmIChpICYgMHgyMCkgcnAxMSBePSBjdXI7IGVsc2UgcnAxMCBePSBjdXI7CisgICAgICAgIGlmIChpICYgMHg0MCkgcnAxMyBePSBjdXI7IGVsc2UgcnAxMiBePSBjdXI7CisgICAgICAgIGlmIChpICYgMHg4MCkgcnAxNSBePSBjdXI7IGVsc2UgcnAxNCBePSBjdXI7CisgICAgfQorICAgIGNvZGVbMF0gPQorICAgICAgICAocGFyaXR5W3JwN10gPDwgNykgfAorICAgICAgICAocGFyaXR5W3JwNl0gPDwgNikgfAorICAgICAgICAocGFyaXR5W3JwNV0gPDwgNSkgfAorICAgICAgICAocGFyaXR5W3JwNF0gPDwgNCkgfAorICAgICAgICAocGFyaXR5W3JwM10gPDwgMykgfAorICAgICAgICAocGFyaXR5W3JwMl0gPDwgMikgfAorICAgICAgICAocGFyaXR5W3JwMV0gPDwgMSkgfAorICAgICAgICAocGFyaXR5W3JwMF0pOworICAgIGNvZGVbMV0gPQorICAgICAgICAocGFyaXR5W3JwMTVdIDw8IDcpIHwKKyAgICAgICAgKHBhcml0eVtycDE0XSA8PCA2KSB8CisgICAgICAgIChwYXJpdHlbcnAxM10gPDwgNSkgfAorICAgICAgICAocGFyaXR5W3JwMTJdIDw8IDQpIHwKKyAgICAgICAgKHBhcml0eVtycDExXSA8PCAzKSB8CisgICAgICAgIChwYXJpdHlbcnAxMF0gPDwgMikgfAorICAgICAgICAocGFyaXR5W3JwOV0gIDw8IDEpIHwKKyAgICAgICAgKHBhcml0eVtycDhdKTsKKyAgICBjb2RlWzJdID0KKyAgICAgICAgKHBhcml0eVtwYXIgJiAweGYwXSA8PCA3KSB8CisgICAgICAgIChwYXJpdHlbcGFyICYgMHgwZl0gPDwgNikgfAorICAgICAgICAocGFyaXR5W3BhciAmIDB4Y2NdIDw8IDUpIHwKKyAgICAgICAgKHBhcml0eVtwYXIgJiAweDMzXSA8PCA0KSB8CisgICAgICAgIChwYXJpdHlbcGFyICYgMHhhYV0gPDwgMykgfAorICAgICAgICAocGFyaXR5W3BhciAmIDB4NTVdIDw8IDIpOworICAgIGNvZGVbMF0gPSB+Y29kZVswXTsKKyAgICBjb2RlWzFdID0gfmNvZGVbMV07CisgICAgY29kZVsyXSA9IH5jb2RlWzJdOworfQorCitTdGlsbCBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBUaGUgbGFzdCB0aHJlZSBpbnZlcnQgc3RhdGVtZW50cyBhcmUgdGhlcmUgdG8KK2dpdmUgYSBjaGVja3N1bSBvZiAweGZmIDB4ZmYgMHhmZiBmb3IgYW4gZW1wdHkgZmxhc2guIEluIGFuIGVtcHR5IGZsYXNoCithbGwgZGF0YSBpcyAweGZmLCBzbyB0aGUgY2hlY2tzdW0gdGhlbiBtYXRjaGVzLgorCitJIGFsc28gaW50cm9kdWNlZCB0aGUgcGFyaXR5IGxvb2t1cC4gSSBleHBlY3RlZCB0aGlzIHRvIGJlIHRoZSBmYXN0ZXN0Cit3YXkgdG8gY2FsY3VsYXRlIHRoZSBwYXJpdHksIGJ1dCBJIHdpbGwgaW52ZXN0aWdhdGUgYWx0ZXJuYXRpdmVzIGxhdGVyCitvbi4KKworCitBbmFseXNpcyAxCis9PT09PT09PT09CisKK1RoZSBjb2RlIHdvcmtzLCBidXQgaXMgbm90IHRlcnJpYmx5IGVmZmljaWVudC4gT24gbXkgc3lzdGVtIGl0IHRvb2sKK2FsbW9zdCA0IHRpbWVzIGFzIG11Y2ggdGltZSBhcyB0aGUgbGludXggZHJpdmVyIGNvZGUuIEJ1dCBoZXksIGlmIGl0IHdhcworKnRoYXQqIGVhc3kgdGhpcyB3b3VsZCBoYXZlIGJlZW4gZG9uZSBsb25nIGJlZm9yZS4KK05vIHBhaW4uIG5vIGdhaW4uCisKK0ZvcnR1bmF0ZWx5IHRoZXJlIGlzIHBsZW50eSBvZiByb29tIGZvciBpbXByb3ZlbWVudC4KKworSW4gc3RlcCAxIHdlIG1vdmVkIGZyb20gYml0LXdpc2UgY2FsY3VsYXRpb24gdG8gYnl0ZS13aXNlIGNhbGN1bGF0aW9uLgorSG93ZXZlciBpbiBDIHdlIGNhbiBhbHNvIHVzZSB0aGUgdW5zaWduZWQgbG9uZyBkYXRhIHR5cGUgYW5kIHZpcnR1YWxseQorZXZlcnkgbW9kZXJuIG1pY3JvcHJvY2Vzc29yIHN1cHBvcnRzIDMyIGJpdCBvcGVyYXRpb25zLCBzbyB3aHkgbm90IHRyeQordG8gd3JpdGUgb3VyIGNvZGUgaW4gc3VjaCBhIHdheSB0aGF0IHdlIHByb2Nlc3MgZGF0YSBpbiAzMiBiaXQgY2h1bmtzLgorCitPZiBjb3Vyc2UgdGhpcyBtZWFucyBzb21lIG1vZGlmaWNhdGlvbiBhcyB0aGUgcm93IHBhcml0eSBpcyBieXRlIGJ5CitieXRlLiBBIHF1aWNrIGFuYWx5c2lzOgorZm9yIHRoZSBjb2x1bW4gcGFyaXR5IHdlIHVzZSB0aGUgcGFyIHZhcmlhYmxlLiBXaGVuIGV4dGVuZGluZyB0byAzMiBiaXRzCit3ZSBjYW4gaW4gdGhlIGVuZCBlYXNpbHkgY2FsY3VsYXRlIHAwIGFuZCBwMSBmcm9tIGl0LgorKGJlY2F1c2UgcGFyIG5vdyBjb25zaXN0cyBvZiA0IGJ5dGVzLCBjb250cmlidXRpbmcgdG8gcnAxLCBycDAsIHJwMSwgcnAwCityZXNwZWN0aXZlbHkpCithbHNvIHJwMiBhbmQgcnAzIGNhbiBiZSBlYXNpbHkgcmV0cmlldmVkIGZyb20gcGFyIGFzIHJwMyBjb3ZlcnMgdGhlCitmaXJzdCB0d28gYnl0ZXMgYW5kIHJwMiB0aGUgbGFzdCB0d28gYnl0ZXMuCisKK05vdGUgdGhhdCBvZiBjb3Vyc2Ugbm93IHRoZSBsb29wIGlzIGV4ZWN1dGVkIG9ubHkgNjQgdGltZXMgKDI1Ni80KS4KK0FuZCBub3RlIHRoYXQgY2FyZSBtdXN0IHRha2VuIHdydCBieXRlIG9yZGVyaW5nLiBUaGUgd2F5IGJ5dGVzIGFyZQorb3JkZXJlZCBpbiBhIGxvbmcgaXMgbWFjaGluZSBkZXBlbmRlbnQsIGFuZCBtaWdodCBhZmZlY3QgdXMuCitBbnl3YXksIGlmIHRoZXJlIGlzIGFuIGlzc3VlOiB0aGlzIGNvZGUgaXMgZGV2ZWxvcGVkIG9uIHg4NiAodG8gYmUKK3ByZWNpc2U6IGEgREVMTCBQQyB3aXRoIGEgRDkyMCBJbnRlbCBDUFUpCisKK0FuZCBvZiBjb3Vyc2UgdGhlIHBlcmZvcm1hbmNlIG1pZ2h0IGRlcGVuZCBvbiBhbGlnbm1lbnQsIGJ1dCBJIGV4cGVjdAordGhhdCB0aGUgSS9PIGJ1ZmZlcnMgaW4gdGhlIG5hbmQgZHJpdmVyIGFyZSBhbGlnbmVkIHByb3Blcmx5IChhbmQKK290aGVyd2lzZSB0aGF0IHNob3VsZCBiZSBmaXhlZCB0byBnZXQgbWF4aW11bSBwZXJmb3JtYW5jZSkuCisKK0xldCdzIGdpdmUgaXQgYSB0cnkuLi4KKworCitBdHRlbXB0IDIKKz09PT09PT09PQorCitleHRlcm4gY29uc3QgY2hhciBwYXJpdHlbMjU2XTsKKwordm9pZCBlY2MyKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiwgdW5zaWduZWQgY2hhciAqY29kZSkKK3sKKyAgICBpbnQgaTsKKyAgICBjb25zdCB1bnNpZ25lZCBsb25nICpicCA9ICh1bnNpZ25lZCBsb25nICopYnVmOworICAgIHVuc2lnbmVkIGxvbmcgY3VyOworICAgIHVuc2lnbmVkIGxvbmcgcnAwLCBycDEsIHJwMiwgcnAzLCBycDQsIHJwNSwgcnA2LCBycDc7CisgICAgdW5zaWduZWQgbG9uZyBycDgsIHJwOSwgcnAxMCwgcnAxMSwgcnAxMiwgcnAxMywgcnAxNCwgcnAxNTsKKyAgICB1bnNpZ25lZCBsb25nIHBhcjsKKworICAgIHBhciA9IDA7CisgICAgcnAwID0gMDsgcnAxID0gMDsgcnAyID0gMDsgcnAzID0gMDsKKyAgICBycDQgPSAwOyBycDUgPSAwOyBycDYgPSAwOyBycDcgPSAwOworICAgIHJwOCA9IDA7IHJwOSA9IDA7IHJwMTAgPSAwOyBycDExID0gMDsKKyAgICBycDEyID0gMDsgcnAxMyA9IDA7IHJwMTQgPSAwOyBycDE1ID0gMDsKKworICAgIGZvciAoaSA9IDA7IGkgPCA2NDsgaSsrKQorICAgIHsKKyAgICAgICAgY3VyID0gKmJwKys7CisgICAgICAgIHBhciBePSBjdXI7CisgICAgICAgIGlmIChpICYgMHgwMSkgcnA1IF49IGN1cjsgZWxzZSBycDQgXj0gY3VyOworICAgICAgICBpZiAoaSAmIDB4MDIpIHJwNyBePSBjdXI7IGVsc2UgcnA2IF49IGN1cjsKKyAgICAgICAgaWYgKGkgJiAweDA0KSBycDkgXj0gY3VyOyBlbHNlIHJwOCBePSBjdXI7CisgICAgICAgIGlmIChpICYgMHgwOCkgcnAxMSBePSBjdXI7IGVsc2UgcnAxMCBePSBjdXI7CisgICAgICAgIGlmIChpICYgMHgxMCkgcnAxMyBePSBjdXI7IGVsc2UgcnAxMiBePSBjdXI7CisgICAgICAgIGlmIChpICYgMHgyMCkgcnAxNSBePSBjdXI7IGVsc2UgcnAxNCBePSBjdXI7CisgICAgfQorICAgIC8qCisgICAgICAgd2UgbmVlZCB0byBhZGFwdCB0aGUgY29kZSBnZW5lcmF0aW9uIGZvciB0aGUgZmFjdCB0aGF0IHJwIHZhcnMgYXJlIG5vdworICAgICAgIGxvbmc7IGFsc28gdGhlIGNvbHVtbiBwYXJpdHkgY2FsY3VsYXRpb24gbmVlZHMgdG8gYmUgY2hhbmdlZC4KKyAgICAgICB3ZSdsbCBicmluZyBycDQgdG8gMTUgYmFjayB0byBzaW5nbGUgYnl0ZSBlbnRpdGllcyBieSBzaGlmdGluZyBhbmQKKyAgICAgICB4b3JpbmcKKyAgICAqLworICAgIHJwNCBePSAocnA0ID4+IDE2KTsgcnA0IF49IChycDQgPj4gOCk7IHJwNCAmPSAweGZmOworICAgIHJwNSBePSAocnA1ID4+IDE2KTsgcnA1IF49IChycDUgPj4gOCk7IHJwNSAmPSAweGZmOworICAgIHJwNiBePSAocnA2ID4+IDE2KTsgcnA2IF49IChycDYgPj4gOCk7IHJwNiAmPSAweGZmOworICAgIHJwNyBePSAocnA3ID4+IDE2KTsgcnA3IF49IChycDcgPj4gOCk7IHJwNyAmPSAweGZmOworICAgIHJwOCBePSAocnA4ID4+IDE2KTsgcnA4IF49IChycDggPj4gOCk7IHJwOCAmPSAweGZmOworICAgIHJwOSBePSAocnA5ID4+IDE2KTsgcnA5IF49IChycDkgPj4gOCk7IHJwOSAmPSAweGZmOworICAgIHJwMTAgXj0gKHJwMTAgPj4gMTYpOyBycDEwIF49IChycDEwID4+IDgpOyBycDEwICY9IDB4ZmY7CisgICAgcnAxMSBePSAocnAxMSA+PiAxNik7IHJwMTEgXj0gKHJwMTEgPj4gOCk7IHJwMTEgJj0gMHhmZjsKKyAgICBycDEyIF49IChycDEyID4+IDE2KTsgcnAxMiBePSAocnAxMiA+PiA4KTsgcnAxMiAmPSAweGZmOworICAgIHJwMTMgXj0gKHJwMTMgPj4gMTYpOyBycDEzIF49IChycDEzID4+IDgpOyBycDEzICY9IDB4ZmY7CisgICAgcnAxNCBePSAocnAxNCA+PiAxNik7IHJwMTQgXj0gKHJwMTQgPj4gOCk7IHJwMTQgJj0gMHhmZjsKKyAgICBycDE1IF49IChycDE1ID4+IDE2KTsgcnAxNSBePSAocnAxNSA+PiA4KTsgcnAxNSAmPSAweGZmOworICAgIHJwMyA9IChwYXIgPj4gMTYpOyBycDMgXj0gKHJwMyA+PiA4KTsgcnAzICY9IDB4ZmY7CisgICAgcnAyID0gcGFyICYgMHhmZmZmOyBycDIgXj0gKHJwMiA+PiA4KTsgcnAyICY9IDB4ZmY7CisgICAgcGFyIF49IChwYXIgPj4gMTYpOworICAgIHJwMSA9IChwYXIgPj4gOCk7IHJwMSAmPSAweGZmOworICAgIHJwMCA9IChwYXIgJiAweGZmKTsKKyAgICBwYXIgXj0gKHBhciA+PiA4KTsgcGFyICY9IDB4ZmY7CisKKyAgICBjb2RlWzBdID0KKyAgICAgICAgKHBhcml0eVtycDddIDw8IDcpIHwKKyAgICAgICAgKHBhcml0eVtycDZdIDw8IDYpIHwKKyAgICAgICAgKHBhcml0eVtycDVdIDw8IDUpIHwKKyAgICAgICAgKHBhcml0eVtycDRdIDw8IDQpIHwKKyAgICAgICAgKHBhcml0eVtycDNdIDw8IDMpIHwKKyAgICAgICAgKHBhcml0eVtycDJdIDw8IDIpIHwKKyAgICAgICAgKHBhcml0eVtycDFdIDw8IDEpIHwKKyAgICAgICAgKHBhcml0eVtycDBdKTsKKyAgICBjb2RlWzFdID0KKyAgICAgICAgKHBhcml0eVtycDE1XSA8PCA3KSB8CisgICAgICAgIChwYXJpdHlbcnAxNF0gPDwgNikgfAorICAgICAgICAocGFyaXR5W3JwMTNdIDw8IDUpIHwKKyAgICAgICAgKHBhcml0eVtycDEyXSA8PCA0KSB8CisgICAgICAgIChwYXJpdHlbcnAxMV0gPDwgMykgfAorICAgICAgICAocGFyaXR5W3JwMTBdIDw8IDIpIHwKKyAgICAgICAgKHBhcml0eVtycDldICA8PCAxKSB8CisgICAgICAgIChwYXJpdHlbcnA4XSk7CisgICAgY29kZVsyXSA9CisgICAgICAgIChwYXJpdHlbcGFyICYgMHhmMF0gPDwgNykgfAorICAgICAgICAocGFyaXR5W3BhciAmIDB4MGZdIDw8IDYpIHwKKyAgICAgICAgKHBhcml0eVtwYXIgJiAweGNjXSA8PCA1KSB8CisgICAgICAgIChwYXJpdHlbcGFyICYgMHgzM10gPDwgNCkgfAorICAgICAgICAocGFyaXR5W3BhciAmIDB4YWFdIDw8IDMpIHwKKyAgICAgICAgKHBhcml0eVtwYXIgJiAweDU1XSA8PCAyKTsKKyAgICBjb2RlWzBdID0gfmNvZGVbMF07CisgICAgY29kZVsxXSA9IH5jb2RlWzFdOworICAgIGNvZGVbMl0gPSB+Y29kZVsyXTsKK30KKworVGhlIHBhcml0eSBhcnJheSBpcyBub3Qgc2hvd24gYW55IG1vcmUuIE5vdGUgYWxzbyB0aGF0IGZvciB0aGVzZQorZXhhbXBsZXMgSSBraW5kYSBkZXZpYXRlZCBmcm9tIG15IHJlZ3VsYXIgcHJvZ3JhbW1pbmcgc3R5bGUgYnkgYWxsb3dpbmcKK211bHRpcGxlIHN0YXRlbWVudHMgb24gYSBsaW5lLCBub3QgdXNpbmcgeyB9IGluIHRoZW4gYW5kIGVsc2UgYmxvY2tzCit3aXRoIG9ubHkgYSBzaW5nbGUgc3RhdGVtZW50IGFuZCBieSB1c2luZyBvcGVyYXRvcnMgbGlrZSBePQorCisKK0FuYWx5c2lzIDIKKz09PT09PT09PT0KKworVGhlIGNvZGUgKG9mIGNvdXJzZSkgd29ya3MsIGFuZCBodXJyYXk6IHdlIGFyZSBhIGxpdHRsZSBiaXQgZmFzdGVyIHRoYW4KK3RoZSBsaW51eCBkcml2ZXIgY29kZSAoYWJvdXQgMTUlKS4gQnV0IHdhaXQsIGRvbid0IGNoZWVyIHRvbyBxdWlja2x5LgorVEhlcmUgaXMgbW9yZSB0byBiZSBnYWluZWQuCitJZiB3ZSBsb29rIGF0IGUuZy4gcnAxNCBhbmQgcnAxNSB3ZSBzZWUgdGhhdCB3ZSBlaXRoZXIgeG9yIG91ciBkYXRhIHdpdGgKK3JwMTQgb3Igd2l0aCBycDE1LiBIb3dldmVyIHdlIGFsc28gaGF2ZSBwYXIgd2hpY2ggZ29lcyBvdmVyIGFsbCBkYXRhLgorVGhpcyBtZWFucyB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGN1bGF0ZSBycDE0IGFzIGl0IGNhbiBiZSBjYWxjdWxhdGVkIGZyb20KK3JwMTUgdGhyb3VnaCBycDE0ID0gcGFyIF4gcnAxNTsKKyhvciBpZiBkZXNpcmVkIHdlIGNhbiBhdm9pZCBjYWxjdWxhdGluZyBycDE1IGFuZCBjYWxjdWxhdGUgaXQgZnJvbQorcnAxNCkuICBUaGF0IGlzIHdoeSBzb21lIHBsYWNlcyByZWZlciB0byBpbnZlcnNlIHBhcml0eS4KK09mIGNvdXJzZSB0aGUgc2FtZSB0aGluZyBob2xkcyBmb3IgcnA0LzUsIHJwNi83LCBycDgvOSwgcnAxMC8xMSBhbmQgcnAxMi8xMy4KK0VmZmVjdGl2ZWx5IHRoaXMgbWVhbnMgd2UgY2FuIGVsaW1pbmF0ZSB0aGUgZWxzZSBjbGF1c2UgZnJvbSB0aGUgaWYKK3N0YXRlbWVudHMuIEFsc28gd2UgY2FuIG9wdGltaXNlIHRoZSBjYWxjdWxhdGlvbiBpbiB0aGUgZW5kIGEgbGl0dGxlIGJpdAorYnkgZ29pbmcgZnJvbSBsb25nIHRvIGJ5dGUgZmlyc3QuIEFjdHVhbGx5IHdlIGNhbiBldmVuIGF2b2lkIHRoZSB0YWJsZQorbG9va3VwcworCitBdHRlbXB0IDMKKz09PT09PT09PQorCitPZGQgcmVwbGFjZWQ6CisgICAgICAgIGlmIChpICYgMHgwMSkgcnA1IF49IGN1cjsgZWxzZSBycDQgXj0gY3VyOworICAgICAgICBpZiAoaSAmIDB4MDIpIHJwNyBePSBjdXI7IGVsc2UgcnA2IF49IGN1cjsKKyAgICAgICAgaWYgKGkgJiAweDA0KSBycDkgXj0gY3VyOyBlbHNlIHJwOCBePSBjdXI7CisgICAgICAgIGlmIChpICYgMHgwOCkgcnAxMSBePSBjdXI7IGVsc2UgcnAxMCBePSBjdXI7CisgICAgICAgIGlmIChpICYgMHgxMCkgcnAxMyBePSBjdXI7IGVsc2UgcnAxMiBePSBjdXI7CisgICAgICAgIGlmIChpICYgMHgyMCkgcnAxNSBePSBjdXI7IGVsc2UgcnAxNCBePSBjdXI7Cit3aXRoCisgICAgICAgIGlmIChpICYgMHgwMSkgcnA1IF49IGN1cjsKKyAgICAgICAgaWYgKGkgJiAweDAyKSBycDcgXj0gY3VyOworICAgICAgICBpZiAoaSAmIDB4MDQpIHJwOSBePSBjdXI7CisgICAgICAgIGlmIChpICYgMHgwOCkgcnAxMSBePSBjdXI7CisgICAgICAgIGlmIChpICYgMHgxMCkgcnAxMyBePSBjdXI7CisgICAgICAgIGlmIChpICYgMHgyMCkgcnAxNSBePSBjdXI7CisKKyAgICAgICAgYW5kIG91dHNpZGUgdGhlIGxvb3AgYWRkZWQ6CisgICAgcnA0ICA9IHBhciBeIHJwNTsKKyAgICBycDYgID0gcGFyIF4gcnA3OworICAgIHJwOCAgPSBwYXIgXiBycDk7CisgICAgcnAxMCAgPSBwYXIgXiBycDExOworICAgIHJwMTIgID0gcGFyIF4gcnAxMzsKKyAgICBycDE0ICA9IHBhciBeIHJwMTU7CisKK0FuZCBhZnRlciB0aGF0IHRoZSBjb2RlIHRha2VzIGFib3V0IDMwJSBtb3JlIHRpbWUsIGFsdGhvdWdoIHRoZSBudW1iZXIgb2YKK3N0YXRlbWVudHMgaXMgcmVkdWNlZC4gVGhpcyBpcyBhbHNvIHJlZmxlY3RlZCBpbiB0aGUgYXNzZW1ibHkgY29kZS4KKworCitBbmFseXNpcyAzCis9PT09PT09PT09CisKK1Zlcnkgd2VpcmQuIEd1ZXNzIGl0IGhhcyB0byBkbyB3aXRoIGNhY2hpbmcgb3IgaW5zdHJ1Y3Rpb24gcGFyYWxsZWxsaXNtCitvciBzby4gSSBhbHNvIHRyaWVkIG9uIGFuIGVlZVBDIChDZWxlcm9uLCBjbG9ja2VkIGF0IDkwMCBNaHopLiBJbnRlcmVzdGluZworb2JzZXJ2YXRpb24gd2FzIHRoYXQgdGhpcyBvbmUgaXMgb25seSAzMCUgc2xvd2VyIChhY2NvcmRpbmcgdG8gdGltZSkKK2V4ZWN1dGluZyB0aGUgY29kZSBhcyBteSAzR2h6IEQ5MjAgcHJvY2Vzc29yLgorCitXZWxsLCBpdCB3YXMgZXhwZWN0ZWQgbm90IHRvIGJlIGVhc3kgc28gbWF5YmUgaW5zdGVhZCBtb3ZlIHRvIGEKK2RpZmZlcmVudCB0cmFjazogbGV0J3MgbW92ZSBiYWNrIHRvIHRoZSBjb2RlIGZyb20gYXR0ZW1wdDIgYW5kIGRvIHNvbWUKK2xvb3AgdW5yb2xsaW5nLiBUaGlzIHdpbGwgZWxpbWluYXRlIGEgZmV3IGlmIHN0YXRlbWVudHMuIEknbGwgdHJ5CitkaWZmZXJlbnQgYW1vdW50cyBvZiB1bnJvbGxpbmcgdG8gc2VlIHdoYXQgd29ya3MgYmVzdC4KKworCitBdHRlbXB0IDQKKz09PT09PT09PQorCitVbnJvbGxlZCB0aGUgbG9vcCAxLCAyLCAzIGFuZCA0IHRpbWVzLgorRm9yIDQgdGhlIGNvZGUgc3RhcnRzIHdpdGg6CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQorICAgIHsKKyAgICAgICAgY3VyID0gKmJwKys7CisgICAgICAgIHBhciBePSBjdXI7CisgICAgICAgIHJwNCBePSBjdXI7CisgICAgICAgIHJwNiBePSBjdXI7CisgICAgICAgIHJwOCBePSBjdXI7CisgICAgICAgIHJwMTAgXj0gY3VyOworICAgICAgICBpZiAoaSAmIDB4MSkgcnAxMyBePSBjdXI7IGVsc2UgcnAxMiBePSBjdXI7CisgICAgICAgIGlmIChpICYgMHgyKSBycDE1IF49IGN1cjsgZWxzZSBycDE0IF49IGN1cjsKKyAgICAgICAgY3VyID0gKmJwKys7CisgICAgICAgIHBhciBePSBjdXI7CisgICAgICAgIHJwNSBePSBjdXI7CisgICAgICAgIHJwNiBePSBjdXI7CisgICAgICAgIC4uLgorCisKK0FuYWx5c2lzIDQKKz09PT09PT09PT0KKworVW5yb2xsaW5nIG9uY2UgZ2FpbnMgYWJvdXQgMTUlCitVbnJvbGxpbmcgdHdpY2Uga2VlcHMgdGhlIGdhaW4gYXQgYWJvdXQgMTUlCitVbnJvbGxpbmcgdGhyZWUgdGltZXMgZ2l2ZXMgYSBnYWluIG9mIDMwJSBjb21wYXJlZCB0byBhdHRlbXB0IDIuCitVbnJvbGxpbmcgZm91ciB0aW1lcyBnaXZlcyBhIG1hcmdpbmFsIGltcHJvdmVtZW50IGNvbXBhcmVkIHRvIHVucm9sbGluZwordGhyZWUgdGltZXMuCisKK0kgZGVjaWRlZCB0byBwcm9jZWVkIHdpdGggYSBmb3VyIHRpbWUgdW5yb2xsZWQgbG9vcCBhbnl3YXkuIEl0IHdhcyBteSBndXQKK2ZlZWxpbmcgdGhhdCBpbiB0aGUgbmV4dCBzdGVwcyBJIHdvdWxkIG9idGFpbiBhZGRpdGlvbmFsIGdhaW4gZnJvbSBpdC4KKworVGhlIG5leHQgc3RlcCB3YXMgdHJpZ2dlcmVkIGJ5IHRoZSBmYWN0IHRoYXQgcGFyIGNvbnRhaW5zIHRoZSB4b3Igb2YgYWxsCitieXRlcyBhbmQgcnA0IGFuZCBycDUgZWFjaCBjb250YWluIHRoZSB4b3Igb2YgaGFsZiBvZiB0aGUgYnl0ZXMuCitTbyBpbiBlZmZlY3QgcGFyID0gcnA0IF4gcnA1LiBCdXQgYXMgeG9yIGlzIGNvbW11dGF0aXZlIHdlIGNhbiBhbHNvIHNheQordGhhdCBycDUgPSBwYXIgXiBycDQuIFNvIG5vIG5lZWQgdG8ga2VlcCBib3RoIHJwNCBhbmQgcnA1IGFyb3VuZC4gV2UgY2FuCitlbGltaW5hdGUgcnA1IChvciBycDQsIGJ1dCBJIGFscmVhZHkgZm9yZXNhdyBhbm90aGVyIG9wdGltaXNhdGlvbikuCitUaGUgc2FtZSBob2xkcyBmb3IgcnA2LzcsIHJwOC85LCBycDEwLzExIHJwMTIvMTMgYW5kIHJwMTQvMTUuCisKKworQXR0ZW1wdCA1Cis9PT09PT09PT0KKworRWZmZWN0aXZlbHkgc28gYWxsIG9kZCBkaWdpdCBycCBhc3NpZ25tZW50cyBpbiB0aGUgbG9vcCB3ZXJlIHJlbW92ZWQuCitUaGlzIGluY2x1ZGVkIHRoZSBlbHNlIGNsYXVzZSBvZiB0aGUgaWYgc3RhdGVtZW50cy4KK09mIGNvdXJzZSBhZnRlciB0aGUgbG9vcCB3ZSBuZWVkIHRvIGNvcnJlY3QgdGhpbmdzIGJ5IGFkZGluZyBjb2RlIGxpa2U6CisgICAgcnA1ID0gcGFyIF4gcnA0OworQWxzbyB0aGUgaW5pdGlhbCBhc3NpZ25tZW50cyAocnA1ID0gMDsgZXRjKSBjb3VsZCBiZSByZW1vdmVkLgorQWxvbmcgdGhlIGxpbmUgSSBhbHNvIHJlbW92ZWQgdGhlIGluaXRpYWxpc2F0aW9uIG9mIHJwMC8xLzIvMy4KKworCitBbmFseXNpcyA1Cis9PT09PT09PT09CisKK01lYXN1cmVtZW50cyBzaG93ZWQgdGhpcyB3YXMgYSBnb29kIG1vdmUuIFRoZSBydW4tdGltZSByb3VnaGx5IGhhbHZlZAorY29tcGFyZWQgd2l0aCBhdHRlbXB0IDQgd2l0aCA0IHRpbWVzIHVucm9sbGVkLCBhbmQgd2Ugb25seSByZXF1aXJlIDEvM3JkCitvZiB0aGUgcHJvY2Vzc29yIHRpbWUgY29tcGFyZWQgdG8gdGhlIGN1cnJlbnQgY29kZSBpbiB0aGUgbGludXgga2VybmVsLgorCitIb3dldmVyLCBzdGlsbCBJIHRob3VnaHQgdGhlcmUgd2FzIG1vcmUuIEkgZGlkbid0IGxpa2UgYWxsIHRoZSBpZgorc3RhdGVtZW50cy4gV2h5IG5vdCBrZWVwIGEgcnVubmluZyBwYXJpdHkgYW5kIG9ubHkga2VlcCB0aGUgbGFzdCBpZgorc3RhdGVtZW50LiBUaW1lIGZvciB5ZXQgYW5vdGhlciB2ZXJzaW9uIQorCisKK0F0dGVtcHQgNgorPT09PT09PT09CisKK1RIZSBjb2RlIHdpdGhpbiB0aGUgZm9yIGxvb3Agd2FzIGNoYW5nZWQgdG86CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQorICAgIHsKKyAgICAgICAgY3VyID0gKmJwKys7IHRtcHBhciAgPSBjdXI7IHJwNCBePSBjdXI7CisgICAgICAgIGN1ciA9ICpicCsrOyB0bXBwYXIgXj0gY3VyOyBycDYgXj0gdG1wcGFyOworICAgICAgICBjdXIgPSAqYnArKzsgdG1wcGFyIF49IGN1cjsgcnA0IF49IGN1cjsKKyAgICAgICAgY3VyID0gKmJwKys7IHRtcHBhciBePSBjdXI7IHJwOCBePSB0bXBwYXI7CisKKyAgICAgICAgY3VyID0gKmJwKys7IHRtcHBhciBePSBjdXI7IHJwNCBePSBjdXI7IHJwNiBePSBjdXI7CisgICAgICAgIGN1ciA9ICpicCsrOyB0bXBwYXIgXj0gY3VyOyBycDYgXj0gY3VyOworCSAgICBjdXIgPSAqYnArKzsgdG1wcGFyIF49IGN1cjsgcnA0IF49IGN1cjsKKwkgICAgY3VyID0gKmJwKys7IHRtcHBhciBePSBjdXI7IHJwMTAgXj0gdG1wcGFyOworCisJICAgIGN1ciA9ICpicCsrOyB0bXBwYXIgXj0gY3VyOyBycDQgXj0gY3VyOyBycDYgXj0gY3VyOyBycDggXj0gY3VyOworICAgICAgICBjdXIgPSAqYnArKzsgdG1wcGFyIF49IGN1cjsgcnA2IF49IGN1cjsgcnA4IF49IGN1cjsKKwkgICAgY3VyID0gKmJwKys7IHRtcHBhciBePSBjdXI7IHJwNCBePSBjdXI7IHJwOCBePSBjdXI7CisgICAgICAgIGN1ciA9ICpicCsrOyB0bXBwYXIgXj0gY3VyOyBycDggXj0gY3VyOworCisgICAgICAgIGN1ciA9ICpicCsrOyB0bXBwYXIgXj0gY3VyOyBycDQgXj0gY3VyOyBycDYgXj0gY3VyOworICAgICAgICBjdXIgPSAqYnArKzsgdG1wcGFyIF49IGN1cjsgcnA2IF49IGN1cjsKKyAgICAgICAgY3VyID0gKmJwKys7IHRtcHBhciBePSBjdXI7IHJwNCBePSBjdXI7CisgICAgICAgIGN1ciA9ICpicCsrOyB0bXBwYXIgXj0gY3VyOworCisJICAgIHBhciBePSB0bXBwYXI7CisgICAgICAgIGlmICgoaSAmIDB4MSkgPT0gMCkgcnAxMiBePSB0bXBwYXI7CisgICAgICAgIGlmICgoaSAmIDB4MikgPT0gMCkgcnAxNCBePSB0bXBwYXI7CisgICAgfQorCitBcyB5b3UgY2FuIHNlZSB0bXBwYXIgaXMgdXNlZCB0byBhY2N1bXVsYXRlIHRoZSBwYXJpdHkgd2l0aGluIGEgZm9yCitpdGVyYXRpb24uIEluIHRoZSBsYXN0IDMgc3RhdGVtZW50cyBpcyBhZGRlZCB0byBwYXIgYW5kLCBpZiBuZWVkZWQsCit0byBycDEyIGFuZCBycDE0LgorCitXaGlsZSBtYWtpbmcgdGhlIGNoYW5nZXMgSSBhbHNvIGZvdW5kIHRoYXQgSSBjb3VsZCBleHBsb2l0IHRoYXQgdG1wcGFyCitjb250YWlucyB0aGUgcnVubmluZyBwYXJpdHkgZm9yIHRoaXMgaXRlcmF0aW9uLiBTbyBpbnN0ZWFkIG9mIGhhdmluZzoKK3JwNCBePSBjdXI7IHJwNiA9IGN1cjsKK0kgcmVtb3ZlZCB0aGUgcnA2ID0gY3VyOyBzdGF0ZW1lbnQgYW5kIGRpZCBycDYgXj0gdG1wcGFyOyBvbiBuZXh0CitzdGF0ZW1lbnQuIEEgc2ltaWxhciBjaGFuZ2Ugd2FzIGRvbmUgZm9yIHJwOCBhbmQgcnAxMAorCisKK0FuYWx5c2lzIDYKKz09PT09PT09PT0KKworTWVhc3VyaW5nIHRoaXMgY29kZSBhZ2FpbiBzaG93ZWQgYmlnIGdhaW4uIFdoZW4gZXhlY3V0aW5nIHRoZSBvcmlnaW5hbAorbGludXggY29kZSAxIG1pbGxpb24gdGltZXMsIHRoaXMgdG9vayBhYm91dCAxIHNlY29uZCBvbiBteSBzeXN0ZW0uCisodXNpbmcgdGltZSB0byBtZWFzdXJlIHRoZSBwZXJmb3JtYW5jZSkuIEFmdGVyIHRoaXMgaXRlcmF0aW9uIEkgd2FzIGJhY2sKK3RvIDAuMDc1IHNlYy4gQWN0dWFsbHkgSSBoYWQgdG8gZGVjaWRlIHRvIHN0YXJ0IG1lYXN1cmluZyBvdmVyIDEwCittaWxsaW9uIGl0ZXJhdGlvbnMgaW4gb3JkZXIgbm90IHRvIGxvc2UgdG9vIG11Y2ggYWNjdXJhY3kuIFRoaXMgb25lCitkZWZpbml0ZWx5IHNlZW1lZCB0byBiZSB0aGUgamFja3BvdCEKKworVGhlcmUgaXMgYSBsaXR0bGUgYml0IG1vcmUgcm9vbSBmb3IgaW1wcm92ZW1lbnQgdGhvdWdoLiBUaGVyZSBhcmUgdGhyZWUKK3BsYWNlcyB3aXRoIHN0YXRlbWVudHM6CitycDQgXj0gY3VyOyBycDYgXj0gY3VyOworSXQgc2VlbXMgbW9yZSBlZmZpY2llbnQgdG8gYWxzbyBtYWludGFpbiBhIHZhcmlhYmxlIHJwNF82IGluIHRoZSB3aGlsZQorbG9vcDsgVGhpcyBlbGltaW5hdGVzIDMgc3RhdGVtZW50cyBwZXIgbG9vcC4gT2YgY291cnNlIGFmdGVyIHRoZSBsb29wIHdlCituZWVkIHRvIGNvcnJlY3QgYnkgYWRkaW5nOgorICAgIHJwNCBePSBycDRfNjsKKyAgICBycDYgXj0gcnA0XzYKK0Z1cnRoZXJtb3JlIHRoZXJlIGFyZSA0IHNlcXVlbnRpYWwgYXNzaWdubWVudHMgdG8gcnA4LiBUaGlzIGNhbiBiZQorZW5jb2RlZCBzbGlnaHRseSBtb3JlIGVmZmljaWVudGx5IGJ5IHNhdmluZyB0bXBwYXIgYmVmb3JlIHRob3NlIDQgbGluZXMKK2FuZCBsYXRlciBkbyBycDggPSBycDggXiB0bXBwYXIgXiBub3RycDg7Cisod2hlcmUgbm90cnA4IGlzIHRoZSB2YWx1ZSBvZiBycDggYmVmb3JlIHRob3NlIDQgbGluZXMpLgorQWdhaW4gYSB1c2Ugb2YgdGhlIGNvbW11dGF0aXZlIHByb3BlcnR5IG9mIHhvci4KK1RpbWUgZm9yIGEgbmV3IHRlc3QhCisKKworQXR0ZW1wdCA3Cis9PT09PT09PT0KKworVGhlIG5ldyBjb2RlIG5vdyBsb29rcyBsaWtlOgorCisgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKKyAgICB7CisgICAgICAgIGN1ciA9ICpicCsrOyB0bXBwYXIgID0gY3VyOyBycDQgXj0gY3VyOworICAgICAgICBjdXIgPSAqYnArKzsgdG1wcGFyIF49IGN1cjsgcnA2IF49IHRtcHBhcjsKKyAgICAgICAgY3VyID0gKmJwKys7IHRtcHBhciBePSBjdXI7IHJwNCBePSBjdXI7CisgICAgICAgIGN1ciA9ICpicCsrOyB0bXBwYXIgXj0gY3VyOyBycDggXj0gdG1wcGFyOworCisgICAgICAgIGN1ciA9ICpicCsrOyB0bXBwYXIgXj0gY3VyOyBycDRfNiBePSBjdXI7CisgICAgICAgIGN1ciA9ICpicCsrOyB0bXBwYXIgXj0gY3VyOyBycDYgXj0gY3VyOworCSAgICBjdXIgPSAqYnArKzsgdG1wcGFyIF49IGN1cjsgcnA0IF49IGN1cjsKKwkgICAgY3VyID0gKmJwKys7IHRtcHBhciBePSBjdXI7IHJwMTAgXj0gdG1wcGFyOworCisJICAgIG5vdHJwOCA9IHRtcHBhcjsKKwkgICAgY3VyID0gKmJwKys7IHRtcHBhciBePSBjdXI7IHJwNF82IF49IGN1cjsKKyAgICAgICAgY3VyID0gKmJwKys7IHRtcHBhciBePSBjdXI7IHJwNiBePSBjdXI7CisJICAgIGN1ciA9ICpicCsrOyB0bXBwYXIgXj0gY3VyOyBycDQgXj0gY3VyOworICAgICAgICBjdXIgPSAqYnArKzsgdG1wcGFyIF49IGN1cjsKKwkgICAgcnA4ID0gcnA4IF4gdG1wcGFyIF4gbm90cnA4OworCisgICAgICAgIGN1ciA9ICpicCsrOyB0bXBwYXIgXj0gY3VyOyBycDRfNiBePSBjdXI7CisgICAgICAgIGN1ciA9ICpicCsrOyB0bXBwYXIgXj0gY3VyOyBycDYgXj0gY3VyOworICAgICAgICBjdXIgPSAqYnArKzsgdG1wcGFyIF49IGN1cjsgcnA0IF49IGN1cjsKKyAgICAgICAgY3VyID0gKmJwKys7IHRtcHBhciBePSBjdXI7CisKKwkgICAgcGFyIF49IHRtcHBhcjsKKyAgICAgICAgaWYgKChpICYgMHgxKSA9PSAwKSBycDEyIF49IHRtcHBhcjsKKyAgICAgICAgaWYgKChpICYgMHgyKSA9PSAwKSBycDE0IF49IHRtcHBhcjsKKyAgICB9CisgICAgcnA0IF49IHJwNF82OworICAgIHJwNiBePSBycDRfNjsKKworCitOb3QgYSBiaWcgY2hhbmdlLCBidXQgZXZlcnkgcGVubnkgY291bnRzIDotKQorCisKK0FuYWx5c2lzIDcKKz09PT09PT09PT0KKworQWN0dWFsbHkgdGhpcyBtYWRlIHRoaW5ncyB3b3JzZS4gTm90IHZlcnkgbXVjaCwgYnV0IEkgZG9uJ3Qgd2FudCB0byBtb3ZlCitpbnRvIHRoZSB3cm9uZyBkaXJlY3Rpb24uIE1heWJlIHNvbWV0aGluZyB0byBpbnZlc3RpZ2F0ZSBsYXRlci4gQ291bGQKK2hhdmUgdG8gZG8gd2l0aCBjYWNoaW5nIGFnYWluLgorCitHdWVzcyB0aGF0IGlzIHdoYXQgdGhlcmUgaXMgdG8gd2luIHdpdGhpbiB0aGUgbG9vcC4gTWF5YmUgdW5yb2xsaW5nIG9uZQorbW9yZSB0aW1lIHdpbGwgaGVscC4gSSdsbCBrZWVwIHRoZSBvcHRpbWlzYXRpb25zIGZyb20gNyBmb3Igbm93LgorCisKK0F0dGVtcHQgOAorPT09PT09PT09CisKK1Vucm9sbGVkIHRoZSBsb29wIG9uZSBtb3JlIHRpbWUuCisKKworQW5hbHlzaXMgOAorPT09PT09PT09PQorCitUaGlzIG1ha2VzIHRoaW5ncyB3b3JzZS4gTGV0J3Mgc3RpY2sgd2l0aCBhdHRlbXB0IDYgYW5kIGNvbnRpbnVlIGZyb20gdGhlcmUuCitBbHRob3VnaCBpdCBzZWVtcyB0aGF0IHRoZSBjb2RlIHdpdGhpbiB0aGUgbG9vcCBjYW5ub3QgYmUgb3B0aW1pc2VkCitmdXJ0aGVyIHRoZXJlIGlzIHN0aWxsIHJvb20gdG8gb3B0aW1pemUgdGhlIGdlbmVyYXRpb24gb2YgdGhlIGVjYyBjb2Rlcy4KK1dlIGNhbiBzaW1wbHkgY2FsY3VsYXRlIHRoZSB0b3RhbCBwYXJpdHkuIElmIHRoaXMgaXMgMCB0aGVuIHJwNCA9IHJwNQorZXRjLiBJZiB0aGUgcGFyaXR5IGlzIDEsIHRoZW4gcnA0ID0gIXJwNTsKK0J1dCBpZiBycDQgPSBycDUgd2UgZG8gbm90IG5lZWQgcnA1IGV0Yy4gV2UgY2FuIGp1c3Qgd3JpdGUgdGhlIGV2ZW4gYml0cworaW4gdGhlIHJlc3VsdCBieXRlIGFuZCB0aGVuIGRvIHNvbWV0aGluZyBsaWtlCisgICAgY29kZVswXSB8PSAoY29kZVswXSA8PCAxKTsKK0xldHMgdGVzdCB0aGlzLgorCisKK0F0dGVtcHQgOQorPT09PT09PT09CisKK0NoYW5nZWQgdGhlIGNvZGUgYnV0IGFnYWluIHRoaXMgc2xpZ2h0bHkgZGVncmFkZXMgcGVyZm9ybWFuY2UuIFRyaWVkIGFsbAora2luZCBvZiBvdGhlciB0aGluZ3MsIGxpa2UgaGF2aW5nIGRlZGljYXRlZCBwYXJpdHkgYXJyYXlzIHRvIGF2b2lkIHRoZQorc2hpZnQgYWZ0ZXIgcGFyaXR5W3JwN10gPDwgNzsgTm8gZ2Fpbi4KK0NoYW5nZSB0aGUgbG9va3VwIHVzaW5nIHRoZSBwYXJpdHkgYXJyYXkgYnkgdXNpbmcgc2hpZnQgb3BlcmF0b3JzIChlLmcuCityZXBsYWNlIHBhcml0eVtycDddIDw8IDcgd2l0aDoKK3JwNyBePSAocnA3IDw8IDQpOworcnA3IF49IChycDcgPDwgMik7CitycDcgXj0gKHJwNyA8PCAxKTsKK3JwNyAmPSAweDgwOworTm8gZ2Fpbi4KKworVGhlIG9ubHkgbWFyZ2luYWwgY2hhbmdlIHdhcyBpbnZlcnRpbmcgdGhlIHBhcml0eSBiaXRzLCBzbyB3ZSBjYW4gcmVtb3ZlCit0aGUgbGFzdCB0aHJlZSBpbnZlcnQgc3RhdGVtZW50cy4KKworQWggd2VsbCwgcGl0eSB0aGlzIGRvZXMgbm90IGRlbGl2ZXIgbW9yZS4gVGhlbiBhZ2FpbiAxMCBtaWxsaW9uCitpdGVyYXRpb25zIHVzaW5nIHRoZSBsaW51eCBkcml2ZXIgY29kZSB0YWtlcyBiZXR3ZWVuIDEzIGFuZCAxMy41CitzZWNvbmRzLCB3aGVyZWFzIG15IGNvZGUgbm93IHRha2VzIGFib3V0IDAuNzMgc2Vjb25kcyBmb3IgdGhvc2UgMTAKK21pbGxpb24gaXRlcmF0aW9ucy4gU28gYmFzaWNhbGx5IEkndmUgaW1wcm92ZWQgdGhlIHBlcmZvcm1hbmNlIGJ5IGEKK2ZhY3RvciAxOCBvbiBteSBzeXN0ZW0uIE5vdCB0aGF0IGJhZC4gT2YgY291cnNlIG9uIGRpZmZlcmVudCBoYXJkd2FyZQoreW91IHdpbGwgZ2V0IGRpZmZlcmVudCByZXN1bHRzLiBObyB3YXJyYW50aWVzIQorCitCdXQgb2YgY291cnNlIHRoZXJlIGlzIG5vIHN1Y2ggdGhpbmcgYXMgYSBmcmVlIGx1bmNoLiBUaGUgY29kZXNpemUgYWxtb3N0Cit0cmlwbGVkIChmcm9tIDU2MiBieXRlcyB0byAxNDM0IGJ5dGVzKS4gVGhlbiBhZ2FpbiwgaXQgaXMgbm90IHRoYXQgbXVjaC4KKworCitDb3JyZWN0aW5nIGVycm9ycworPT09PT09PT09PT09PT09PT0KKworRm9yIGNvcnJlY3RpbmcgZXJyb3JzIEkgYWdhaW4gdXNlZCB0aGUgU1QgYXBwbGljYXRpb24gbm90ZSBhcyBhIHN0YXJ0ZXIsCitidXQgSSBhbHNvIHBlZWtlZCBhdCB0aGUgZXhpc3RpbmcgY29kZS4KK1RoZSBhbGdvcml0aG0gaXRzZWxmIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEp1c3QgeG9yIHRoZSBnaXZlbiBhbmQKK3RoZSBjYWxjdWxhdGVkIGVjYy4gSWYgYWxsIGJ5dGVzIGFyZSAwIHRoZXJlIGlzIG5vIHByb2JsZW0uIElmIDExIGJpdHMKK2FyZSAxIHdlIGhhdmUgb25lIGNvcnJlY3RhYmxlIGJpdCBlcnJvci4gSWYgdGhlcmUgaXMgMSBiaXQgMSwgd2UgaGF2ZSBhbgorZXJyb3IgaW4gdGhlIGdpdmVuIGVjYyBjb2RlLgorSXQgcHJvdmVkIHRvIGJlIGZhc3Rlc3QgdG8gZG8gc29tZSB0YWJsZSBsb29rdXBzLiBQZXJmb3JtYW5jZSBnYWluCitpbnRyb2R1Y2VkIGJ5IHRoaXMgaXMgYWJvdXQgYSBmYWN0b3IgMiBvbiBteSBzeXN0ZW0gd2hlbiBhIHJlcGFpciBoYWQgdG8KK2JlIGRvbmUsIGFuZCAxJSBvciBzbyBpZiBubyByZXBhaXIgaGFkIHRvIGJlIGRvbmUuCitDb2RlIHNpemUgaW5jcmVhc2VkIGZyb20gMzMwIGJ5dGVzIHRvIDY4NiBieXRlcyBmb3IgdGhpcyBmdW5jdGlvbi4KKyhnY2MgNC4yLCAtTzMpCisKKworQ29uY2x1c2lvbgorPT09PT09PT09PQorCitUaGUgZ2FpbiB3aGVuIGNhbGN1bGF0aW5nIHRoZSBlY2MgaXMgdHJlbWVuZG91cy4gT20gbXkgZGV2ZWxvcG1lbnQgaGFyZHdhcmUKK2Egc3BlZWR1cCBvZiBhIGZhY3RvciBvZiAxOCBmb3IgZWNjIGNhbGN1bGF0aW9uIHdhcyBhY2hpZXZlZC4gT24gYSB0ZXN0IG9uIGFuCitlbWJlZGRlZCBzeXN0ZW0gd2l0aCBhIE1JUFMgY29yZSBhIGZhY3RvciA3IHdhcyBvYnRhaW5lZC4KK09uICBhIHRlc3Qgd2l0aCBhIExpbmtzeXMgTlNMVTIgKEFSTXY1VEUgcHJvY2Vzc29yKSB0aGUgc3BlZWR1cCB3YXMgYSBmYWN0b3IKKzUgKGJpZyBlbmRpYW4gbW9kZSwgZ2NjIDQuMS4yLCAtTzMpCitGb3IgY29ycmVjdGlvbiBub3QgbXVjaCBnYWluIGNvdWxkIGJlIG9idGFpbmVkIChhcyBiaXRmbGlwcyBhcmUgcmFyZSkuIFRoZW4KK2FnYWluIHRoZXJlIGFyZSBhbHNvIG11Y2ggbGVzcyBjeWNsZXMgc3BlbnQgdGhlcmUuCisKK0l0IHNlZW1zIHRoZXJlIGlzIG5vdCBtdWNoIG1vcmUgZ2FpbiBwb3NzaWJsZSBpbiB0aGlzLCBhdCBsZWFzdCB3aGVuCitwcm9ncmFtbWVkIGluIEMuIE9mIGNvdXJzZSBpdCBtaWdodCBiZSBwb3NzaWJsZSB0byBzcXVlZXplIHNvbWV0aGluZyBtb3JlCitvdXQgb2YgaXQgd2l0aCBhbiBhc3NlbWJsZXIgcHJvZ3JhbSwgYnV0IGR1ZSB0byBwaXBlbGluZSBiZWhhdmlvdXIgZXRjCit0aGlzIGlzIHZlcnkgdHJpY2t5IChhdCBsZWFzdCBmb3IgaW50ZWwgaHcpLgorCitBdXRob3I6IEZyYW5zIE1ldWxlbmJyb2VrcworQ29weXJpZ2h0IChDKSAyMDA4IEtvbmlua2xpamtlIFBoaWxpcHMgRWxlY3Ryb25pY3MgTlYuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL210ZC9zcGktbm9yLnR4dCBiL0RvY3VtZW50YXRpb24vbXRkL3NwaS1ub3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0OGQ2MzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL210ZC9zcGktbm9yLnR4dApAQCAtMCwwICsxLDYyIEBACisgICAgICAgICAgICAgICAgICAgICAgICAgIFNQSSBOT1IgZnJhbWV3b3JrCisgICAgICAgICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQYXJ0IEkgLSBXaHkgZG8gd2UgbmVlZCB0aGlzIGZyYW1ld29yaz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTUEkgYnVzIGNvbnRyb2xsZXJzIChkcml2ZXJzL3NwaS8pIG9ubHkgZGVhbCB3aXRoIHN0cmVhbXMgb2YgYnl0ZXM7IHRoZSBidXMKK2NvbnRyb2xsZXIgb3BlcmF0ZXMgYWdub3N0aWMgb2YgdGhlIHNwZWNpZmljIGRldmljZSBhdHRhY2hlZC4gSG93ZXZlciwgc29tZQorY29udHJvbGxlcnMgKHN1Y2ggYXMgRnJlZXNjYWxlJ3MgUXVhZFNQSSBjb250cm9sbGVyKSBjYW5ub3QgZWFzaWx5IGhhbmRsZQorYXJiaXRyYXJ5IHN0cmVhbXMgb2YgYnl0ZXMsIGJ1dCByYXRoZXIgYXJlIGRlc2lnbmVkIHNwZWNpZmljYWxseSBmb3IgU1BJIE5PUi4KKworSW4gcGFydGljdWxhciwgRnJlZXNjYWxlJ3MgUXVhZFNQSSBjb250cm9sbGVyIG11c3Qga25vdyB0aGUgTk9SIGNvbW1hbmRzIHRvCitmaW5kIHRoZSByaWdodCBMVVQgc2VxdWVuY2UuIFVuZm9ydHVuYXRlbHksIHRoZSBTUEkgc3Vic3lzdGVtIGhhcyBubyBub3Rpb24gb2YKK29wY29kZXMsIGFkZHJlc3Nlcywgb3IgZGF0YSBwYXlsb2FkczsgYSBTUEkgY29udHJvbGxlciBzaW1wbHkga25vd3MgdG8gc2VuZCBvcgorcmVjZWl2ZSBieXRlcyAoVHggYW5kIFJ4KS4gVGhlcmVmb3JlLCB3ZSBtdXN0IGRlZmluZSBhIG5ldyBsYXllcmluZyBzY2hlbWUgdW5kZXIKK3doaWNoIHRoZSBjb250cm9sbGVyIGRyaXZlciBpcyBhd2FyZSBvZiB0aGUgb3Bjb2RlcywgYWRkcmVzc2luZywgYW5kIG90aGVyCitkZXRhaWxzIG9mIHRoZSBTUEkgTk9SIHByb3RvY29sLgorCitQYXJ0IElJIC0gSG93IGRvZXMgdGhlIGZyYW1ld29yayB3b3JrPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBmcmFtZXdvcmsganVzdCBhZGRzIGEgbmV3IGxheWVyIGJldHdlZW4gdGhlIE1URCBhbmQgdGhlIFNQSSBidXMgZHJpdmVyLgorV2l0aCB0aGlzIG5ldyBsYXllciwgdGhlIFNQSSBOT1IgY29udHJvbGxlciBkcml2ZXIgZG9lcyBub3QgZGVwZW5kIG9uIHRoZQorbTI1cDgwIGNvZGUgYW55bW9yZS4KKworICAgQmVmb3JlIHRoaXMgZnJhbWV3b3JrLCB0aGUgbGF5ZXIgaXMgbGlrZToKKworICAgICAgICAgICAgICAgICAgIE1URAorICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICBtMjVwODAKKyAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCSAgICAgICBTUEkgYnVzIGRyaXZlcgorICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICAgICAgICBTUEkgTk9SIGNoaXAKKworICAgQWZ0ZXIgdGhpcyBmcmFtZXdvcmssIHRoZSBsYXllciBpcyBsaWtlOgorICAgICAgICAgICAgICAgICAgIE1URAorICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIFNQSSBOT1IgZnJhbWV3b3JrCisgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgIG0yNXA4MAorICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICAgICAgIFNQSSBidXMgZHJpdmVyCisgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkgICAgICAgU1BJIE5PUiBjaGlwCisKKyAgV2l0aCB0aGUgU1BJIE5PUiBjb250cm9sbGVyIGRyaXZlciAoRnJlZXNjYWxlIFF1YWRTUEkpLCBpdCBsb29rcyBsaWtlOgorICAgICAgICAgICAgICAgICAgIE1URAorICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIFNQSSBOT1IgZnJhbWV3b3JrCisgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICBmc2wtcXVhZFNQSQorICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICAgICAgIFNQSSBOT1IgY2hpcAorCitQYXJ0IElJSSAtIEhvdyBjYW4gZHJpdmVycyB1c2UgdGhlIGZyYW1ld29yaz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbWFpbiBBUEkgaXMgc3BpX25vcl9zY2FuKCkuIEJlZm9yZSB5b3UgY2FsbCB0aGUgaG9vaywgYSBkcml2ZXIgc2hvdWxkCitpbml0aWFsaXplIHRoZSBuZWNlc3NhcnkgZmllbGRzIGZvciBzcGlfbm9ye30uIFBsZWFzZSBzZWUKK2RyaXZlcnMvbXRkL3NwaS1ub3Ivc3BpLW5vci5jIGZvciBkZXRhaWwuIFBsZWFzZSBhbHNvIHJlZmVyIHRvIGZzbC1xdWFkc3BpLmMKK3doZW4geW91IHdhbnQgdG8gd3JpdGUgYSBuZXcgZHJpdmVyIGZvciBhIFNQSSBOT1IgY29udHJvbGxlci4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmFtZXNwYWNlcy9jb21wYXRpYmlsaXR5LWxpc3QudHh0IGIvRG9jdW1lbnRhdGlvbi9uYW1lc3BhY2VzL2NvbXBhdGliaWxpdHktbGlzdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVmYzU1OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmFtZXNwYWNlcy9jb21wYXRpYmlsaXR5LWxpc3QudHh0CkBAIC0wLDAgKzEsMzkgQEAKKwlOYW1lc3BhY2VzIGNvbXBhdGliaWxpdHkgbGlzdAorCitUaGlzIGRvY3VtZW50IGNvbnRhaW5zIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJvYmxlbXMgdXNlcgorbWF5IGhhdmUgd2hlbiBjcmVhdGluZyB0YXNrcyBsaXZpbmcgaW4gZGlmZmVyZW50IG5hbWVzcGFjZXMuCisKK0hlcmUncyB0aGUgc3VtbWFyeS4gVGhpcyBtYXRyaXggc2hvd3MgdGhlIGtub3duIHByb2JsZW1zLCB0aGF0CitvY2N1ciB3aGVuIHRhc2tzIHNoYXJlIHNvbWUgbmFtZXNwYWNlICh0aGUgY29sdW1ucykgd2hpbGUgbGl2aW5nCitpbiBkaWZmZXJlbnQgb3RoZXIgbmFtZXNwYWNlcyAodGhlIHJvd3MpOgorCisJVVRTCUlQQwlWRlMJUElECVVzZXIJTmV0CitVVFMJIFgKK0lQQwkJIFgJIDEKK1ZGUwkJCSBYCitQSUQJCSAxCSAxCSBYCitVc2VyCQkgMgkgMgkJIFgKK05ldAkJCQkJCSBYCisKKzEuIEJvdGggdGhlIElQQyBhbmQgdGhlIFBJRCBuYW1lc3BhY2VzIHByb3ZpZGUgSURzIHRvIGFkZHJlc3MKKyAgIG9iamVjdCBpbnNpZGUgdGhlIGtlcm5lbC4gRS5nLiBzZW1hcGhvcmUgd2l0aCBJUENJRCBvcgorICAgcHJvY2VzcyBncm91cCB3aXRoIHBpZC4KKworICAgSW4gYm90aCBjYXNlcywgdGFza3Mgc2hvdWxkbid0IHRyeSBleHBvc2luZyB0aGlzIElEIHRvIHNvbWUKKyAgIG90aGVyIHRhc2sgbGl2aW5nIGluIGEgZGlmZmVyZW50IG5hbWVzcGFjZSB2aWEgYSBzaGFyZWQgZmlsZXN5c3RlbQorICAgb3IgSVBDIHNobWVtL21lc3NhZ2UuIFRoZSBmYWN0IGlzIHRoYXQgdGhpcyBJRCBpcyBvbmx5IHZhbGlkCisgICB3aXRoaW4gdGhlIG5hbWVzcGFjZSBpdCB3YXMgb2J0YWluZWQgaW4gYW5kIG1heSByZWZlciB0byBzb21lCisgICBvdGhlciBvYmplY3QgaW4gYW5vdGhlciBuYW1lc3BhY2UuCisKKzIuIEludGVudGlvbmFsbHksIHR3byBlcXVhbCB1c2VyIElEcyBpbiBkaWZmZXJlbnQgdXNlciBuYW1lc3BhY2VzCisgICBzaG91bGQgbm90IGJlIGVxdWFsIGZyb20gdGhlIFZGUyBwb2ludCBvZiB2aWV3LiBJbiBvdGhlcgorICAgd29yZHMsIHVzZXIgMTAgaW4gb25lIHVzZXIgbmFtZXNwYWNlIHNob3VsZG4ndCBoYXZlIHRoZSBzYW1lCisgICBhY2Nlc3MgcGVybWlzc2lvbnMgdG8gZmlsZXMsIGJlbG9uZ2luZyB0byB1c2VyIDEwIGluIGFub3RoZXIKKyAgIG5hbWVzcGFjZS4KKworICAgVGhlIHNhbWUgaXMgdHJ1ZSBmb3IgdGhlIElQQyBuYW1lc3BhY2VzIGJlaW5nIHNoYXJlZCAtIHR3byB1c2VycworICAgZnJvbSBkaWZmZXJlbnQgdXNlciBuYW1lc3BhY2VzIHNob3VsZCBub3QgYWNjZXNzIHRoZSBzYW1lIElQQyBvYmplY3RzCisgICBldmVuIGhhdmluZyBlcXVhbCBVSURzLgorCisgICBCdXQgY3VycmVudGx5IHRoaXMgaXMgbm90IHNvLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25hbWVzcGFjZXMvcmVzb3VyY2UtY29udHJvbC50eHQgYi9Eb2N1bWVudGF0aW9uL25hbWVzcGFjZXMvcmVzb3VyY2UtY29udHJvbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJjMTNjMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmFtZXNwYWNlcy9yZXNvdXJjZS1jb250cm9sLnR4dApAQCAtMCwwICsxLDE0IEBACitUaGVyZSBhcmUgYSBsb3Qgb2Yga2luZHMgb2Ygb2JqZWN0cyBpbiB0aGUga2VybmVsIHRoYXQgZG9uJ3QgaGF2ZQoraW5kaXZpZHVhbCBsaW1pdHMgb3IgdGhhdCBoYXZlIGxpbWl0cyB0aGF0IGFyZSBpbmVmZmVjdGl2ZSB3aGVuIGEgc2V0CitvZiBwcm9jZXNzZXMgaXMgYWxsb3dlZCB0byBzd2l0Y2ggdXNlciBpZHMuICBXaXRoIHVzZXIgbmFtZXNwYWNlcworZW5hYmxlZCBpbiBhIGtlcm5lbCBmb3IgcGVvcGxlIHdobyBkb24ndCB0cnVzdCB0aGVpciB1c2VycyBvciB0aGVpcgordXNlcnMgcHJvZ3JhbXMgdG8gcGxheSBuaWNlIHRoaXMgcHJvYmxlbXMgYmVjb21lcyBtb3JlIGFjdXRlLgorCitUaGVyZWZvcmUgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCBtZW1vcnkgY29udHJvbCBncm91cHMgYmUgZW5hYmxlZCBpbgora2VybmVscyB0aGF0IGVuYWJsZSB1c2VyIG5hbWVzcGFjZXMsIGFuZCBpdCBpcyBmdXJ0aGVyIHJlY29tbWVuZGVkCit0aGF0IHVzZXJzcGFjZSBjb25maWd1cmUgbWVtb3J5IGNvbnRyb2wgZ3JvdXBzIHRvIGxpbWl0IGhvdyBtdWNoCittZW1vcnkgdXNlcidzIHRoZXkgZG9uJ3QgdHJ1c3QgdG8gcGxheSBuaWNlIGNhbiB1c2UuCisKK01lbW9yeSBjb250cm9sIGdyb3VwcyBjYW4gYmUgY29uZmlndXJlZCBieSBpbnN0YWxsaW5nIHRoZSBsaWJjZ3JvdXAKK3BhY2thZ2UgcHJlc2VudCBvbiBtb3N0IGRpc3Ryb3MgZWRpdGluZyAvZXRjL2NncnVsZXMuY29uZiwKKy9ldGMvY2djb25maWcuY29uZiBhbmQgc2V0dGluZyB1cCBsaWJwYW0tY2dyb3VwLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsYWJlbC8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vbmV0bGFiZWwvMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM3YmYzNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0bGFiZWwvMDAtSU5ERVgKQEAgLTAsMCArMSwxMCBAQAorMDAtSU5ERVgKKwktIHRoaXMgZmlsZS4KK2NpcHNvX2lwdjQudHh0CisJLSBkb2N1bWVudGF0aW9uIG9uIHRoZSBJUHY0IENJUFNPIHByb3RvY29sIGVuZ2luZS4KK2RyYWZ0LWlldGYtY2lwc28taXBzZWN1cml0eS0wMS50eHQKKwktIElFVEYgZHJhZnQgb2YgdGhlIENJUFNPIHByb3RvY29sLCBkYXRlZCAxNiBKdWx5IDE5OTIuCitpbnRyb2R1Y3Rpb24udHh0CisJLSBOZXRMYWJlbCBpbnRyb2R1Y3Rpb24sIFJFQUQgVEhJUyBGSVJTVC4KK2xzbV9pbnRlcmZhY2UudHh0CisJLSBkb2N1bWVudGF0aW9uIG9uIHRoZSBOZXRMYWJlbCBrZXJuZWwgc2VjdXJpdHkgbW9kdWxlIEFQSS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0bGFiZWwvY2lwc29faXB2NC50eHQgYi9Eb2N1bWVudGF0aW9uL25ldGxhYmVsL2NpcHNvX2lwdjQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzZGFjYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldGxhYmVsL2NpcHNvX2lwdjQudHh0CkBAIC0wLDAgKzEsNDggQEAKK05ldExhYmVsIENJUFNPL0lQdjQgUHJvdG9jb2wgRW5naW5lCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1BhdWwgTW9vcmUsIHBhdWwubW9vcmVAaHAuY29tCisKK01heSAxNywgMjAwNgorCisgKiBPdmVydmlldworCitUaGUgTmV0TGFiZWwgQ0lQU08vSVB2NCBwcm90b2NvbCBlbmdpbmUgaXMgYmFzZWQgb24gdGhlIElFVEYgQ29tbWVyY2lhbCBJUAorU2VjdXJpdHkgT3B0aW9uIChDSVBTTykgZHJhZnQgZnJvbSBKdWx5IDE2LCAxOTkyLiAgQSBjb3B5IG9mIHRoaXMgZHJhZnQgY2FuIGJlCitmb3VuZCBpbiB0aGlzIGRpcmVjdG9yeSwgY29uc3VsdCAnMDAtSU5ERVgnIGZvciB0aGUgZmlsZW5hbWUuICBXaGlsZSB0aGUgSUVURgorZHJhZnQgbmV2ZXIgbWFkZSBpdCB0byBhbiBSRkMgc3RhbmRhcmQgaXQgaGFzIGJlY29tZSBhIGRlLWZhY3RvIHN0YW5kYXJkIGZvcgorbGFiZWxlZCBuZXR3b3JraW5nIGFuZCBpcyB1c2VkIGluIG1hbnkgdHJ1c3RlZCBvcGVyYXRpbmcgc3lzdGVtcy4KKworICogT3V0Ym91bmQgUGFja2V0IFByb2Nlc3NpbmcKKworVGhlIENJUFNPL0lQdjQgcHJvdG9jb2wgZW5naW5lIGFwcGxpZXMgdGhlIENJUFNPIElQIG9wdGlvbiB0byBwYWNrZXRzIGJ5CithZGRpbmcgdGhlIENJUFNPIGxhYmVsIHRvIHRoZSBzb2NrZXQuICBUaGlzIGNhdXNlcyBhbGwgcGFja2V0cyBsZWF2aW5nIHRoZQorc3lzdGVtIHRocm91Z2ggdGhlIHNvY2tldCB0byBoYXZlIHRoZSBDSVBTTyBJUCBvcHRpb24gYXBwbGllZC4gIFRoZSBzb2NrZXQncworQ0lQU08gbGFiZWwgY2FuIGJlIGNoYW5nZWQgYXQgYW55IHBvaW50IGluIHRpbWUsIGhvd2V2ZXIsIGl0IGlzIHJlY29tbWVuZGVkCit0aGF0IGl0IGlzIHNldCB1cG9uIHRoZSBzb2NrZXQncyBjcmVhdGlvbi4gIFRoZSBMU00gY2FuIHNldCB0aGUgc29ja2V0J3MgQ0lQU08KK2xhYmVsIGJ5IHVzaW5nIHRoZSBOZXRMYWJlbCBzZWN1cml0eSBtb2R1bGUgQVBJOyBpZiB0aGUgTmV0TGFiZWwgImRvbWFpbiIgaXMKK2NvbmZpZ3VyZWQgdG8gdXNlIENJUFNPIGZvciBwYWNrZXQgbGFiZWxpbmcgdGhlbiBhIENJUFNPIElQIG9wdGlvbiB3aWxsIGJlCitnZW5lcmF0ZWQgYW5kIGF0dGFjaGVkIHRvIHRoZSBzb2NrZXQuCisKKyAqIEluYm91bmQgUGFja2V0IFByb2Nlc3NpbmcKKworVGhlIENJUFNPL0lQdjQgcHJvdG9jb2wgZW5naW5lIHZhbGlkYXRlcyBldmVyeSBDSVBTTyBJUCBvcHRpb24gaXQgZmluZHMgYXQgdGhlCitJUCBsYXllciB3aXRob3V0IGFueSBzcGVjaWFsIGhhbmRsaW5nIHJlcXVpcmVkIGJ5IHRoZSBMU00uICBIb3dldmVyLCBpbiBvcmRlcgordG8gZGVjb2RlIGFuZCB0cmFuc2xhdGUgdGhlIENJUFNPIGxhYmVsIG9uIHRoZSBwYWNrZXQgdGhlIExTTSBtdXN0IHVzZSB0aGUKK05ldExhYmVsIHNlY3VyaXR5IG1vZHVsZSBBUEkgdG8gZXh0cmFjdCB0aGUgc2VjdXJpdHkgYXR0cmlidXRlcyBvZiB0aGUgcGFja2V0LgorVGhpcyBpcyB0eXBpY2FsbHkgZG9uZSBhdCB0aGUgc29ja2V0IGxheWVyIHVzaW5nIHRoZSAnc29ja2V0X3NvY2tfcmN2X3NrYigpJworTFNNIGhvb2suCisKKyAqIExhYmVsIFRyYW5zbGF0aW9uCisKK1RoZSBDSVBTTy9JUHY0IHByb3RvY29sIGVuZ2luZSBjb250YWlucyBhIG1lY2hhbmlzbSB0byB0cmFuc2xhdGUgQ0lQU08gc2VjdXJpdHkKK2F0dHJpYnV0ZXMgc3VjaCBhcyBzZW5zaXRpdml0eSBsZXZlbCBhbmQgY2F0ZWdvcnkgdG8gdmFsdWVzIHdoaWNoIGFyZQorYXBwcm9wcmlhdGUgZm9yIHRoZSBob3N0LiAgVGhlc2UgbWFwcGluZ3MgYXJlIGRlZmluZWQgYXMgcGFydCBvZiBhIENJUFNPCitEb21haW4gT2YgSW50ZXJwcmV0YXRpb24gKERPSSkgZGVmaW5pdGlvbiBhbmQgYXJlIGNvbmZpZ3VyZWQgdGhyb3VnaCB0aGUKK05ldExhYmVsIHVzZXIgc3BhY2UgY29tbXVuaWNhdGlvbiBsYXllci4gIEVhY2ggRE9JIGRlZmluaXRpb24gY2FuIGhhdmUgYQorZGlmZmVyZW50IHNlY3VyaXR5IGF0dHJpYnV0ZSBtYXBwaW5nIHRhYmxlLgorCisgKiBMYWJlbCBUcmFuc2xhdGlvbiBDYWNoZQorCitUaGUgTmV0TGFiZWwgc3lzdGVtIHByb3ZpZGVzIGEgZnJhbWV3b3JrIGZvciBjYWNoaW5nIHNlY3VyaXR5IGF0dHJpYnV0ZQorbWFwcGluZ3MgZnJvbSB0aGUgbmV0d29yayBsYWJlbHMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgTFNNIGlkZW50aWZpZXJzLiAgVGhlCitDSVBTTy9JUHY0IHByb3RvY29sIGVuZ2luZSBzdXBwb3J0cyB0aGlzIGNhY2hpbmcgbWVjaGFuaXNtLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsYWJlbC9kcmFmdC1pZXRmLWNpcHNvLWlwc2VjdXJpdHktMDEudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXRsYWJlbC9kcmFmdC1pZXRmLWNpcHNvLWlwc2VjdXJpdHktMDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NmMyYzkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldGxhYmVsL2RyYWZ0LWlldGYtY2lwc28taXBzZWN1cml0eS0wMS50eHQKQEAgLTAsMCArMSw3OTEgQEAKK0lFVEYgQ0lQU08gV29ya2luZyBHcm91cAorMTYgSnVseSwgMTk5MgorCisKKworICAgICAgICAgICAgICAgICBDT01NRVJDSUFMIElQIFNFQ1VSSVRZIE9QVElPTiAoQ0lQU08gMi4yKQorCisKKworMS4gICAgU3RhdHVzCisKK1RoaXMgSW50ZXJuZXQgRHJhZnQgcHJvdmlkZXMgdGhlIGhpZ2ggbGV2ZWwgc3BlY2lmaWNhdGlvbiBmb3IgYSBDb21tZXJjaWFsCitJUCBTZWN1cml0eSBPcHRpb24gKENJUFNPKS4gIFRoaXMgZHJhZnQgcmVmbGVjdHMgdGhlIHZlcnNpb24gYXMgYXBwcm92ZWQgYnkKK3RoZSBDSVBTTyBJRVRGIFdvcmtpbmcgR3JvdXAuICBEaXN0cmlidXRpb24gb2YgdGhpcyBtZW1vIGlzIHVubGltaXRlZC4KKworVGhpcyBkb2N1bWVudCBpcyBhbiBJbnRlcm5ldCBEcmFmdC4gIEludGVybmV0IERyYWZ0cyBhcmUgd29ya2luZyBkb2N1bWVudHMKK29mIHRoZSBJbnRlcm5ldCBFbmdpbmVlcmluZyBUYXNrIEZvcmNlIChJRVRGKSwgaXRzIEFyZWFzLCBhbmQgaXRzIFdvcmtpbmcKK0dyb3Vwcy4gTm90ZSB0aGF0IG90aGVyIGdyb3VwcyBtYXkgYWxzbyBkaXN0cmlidXRlIHdvcmtpbmcgZG9jdW1lbnRzIGFzCitJbnRlcm5ldCBEcmFmdHMuCisKK0ludGVybmV0IERyYWZ0cyBhcmUgZHJhZnQgZG9jdW1lbnRzIHZhbGlkIGZvciBhIG1heGltdW0gb2Ygc2l4IG1vbnRocy4KK0ludGVybmV0IERyYWZ0cyBtYXkgYmUgdXBkYXRlZCwgcmVwbGFjZWQsIG9yIG9ic29sZXRlZCBieSBvdGhlciBkb2N1bWVudHMKK2F0IGFueSB0aW1lLiAgSXQgaXMgbm90IGFwcHJvcHJpYXRlIHRvIHVzZSBJbnRlcm5ldCBEcmFmdHMgYXMgcmVmZXJlbmNlCittYXRlcmlhbCBvciB0byBjaXRlIHRoZW0gb3RoZXIgdGhhbiBhcyBhICJ3b3JraW5nIGRyYWZ0IiBvciAid29yayBpbgorcHJvZ3Jlc3MuIgorCitQbGVhc2UgY2hlY2sgdGhlIEktRCBhYnN0cmFjdCBsaXN0aW5nIGNvbnRhaW5lZCBpbiBlYWNoIEludGVybmV0IERyYWZ0CitkaXJlY3RvcnkgdG8gbGVhcm4gdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoaXMgb3IgYW55IG90aGVyIEludGVybmV0IERyYWZ0LgorCisKKworCisyLiAgICBCYWNrZ3JvdW5kCisKK0N1cnJlbnRseSB0aGUgSW50ZXJuZXQgUHJvdG9jb2wgaW5jbHVkZXMgdHdvIHNlY3VyaXR5IG9wdGlvbnMuICBPbmUgb2YKK3RoZXNlIG9wdGlvbnMgaXMgdGhlIERvRCBCYXNpYyBTZWN1cml0eSBPcHRpb24gKEJTTykgKFR5cGUgMTMwKSB3aGljaCBhbGxvd3MKK0lQIGRhdGFncmFtcyB0byBiZSBsYWJlbGVkIHdpdGggc2VjdXJpdHkgY2xhc3NpZmljYXRpb25zLiAgVGhpcyBvcHRpb24KK3Byb3ZpZGVzIHNpeHRlZW4gc2VjdXJpdHkgY2xhc3NpZmljYXRpb25zIGFuZCBhIHZhcmlhYmxlIG51bWJlciBvZiBoYW5kbGluZworcmVzdHJpY3Rpb25zLiAgVG8gaGFuZGxlIGFkZGl0aW9uYWwgc2VjdXJpdHkgaW5mb3JtYXRpb24sIHN1Y2ggYXMgc2VjdXJpdHkKK2NhdGVnb3JpZXMgb3IgY29tcGFydG1lbnRzLCBhbm90aGVyIHNlY3VyaXR5IG9wdGlvbiAoVHlwZSAxMzMpIGV4aXN0cyBhbmQKK2lzIHJlZmVycmVkIHRvIGFzIHRoZSBEb0QgRXh0ZW5kZWQgU2VjdXJpdHkgT3B0aW9uIChFU08pLiAgVGhlIHZhbHVlcyBmb3IKK3RoZSBmaXhlZCBmaWVsZHMgd2l0aGluIHRoZXNlIHR3byBvcHRpb25zIGFyZSBhZG1pbmlzdGVyZWQgYnkgdGhlIERlZmVuc2UKK0luZm9ybWF0aW9uIFN5c3RlbXMgQWdlbmN5IChESVNBKS4KKworQ29tcHV0ZXIgdmVuZG9ycyBhcmUgbm93IGJ1aWxkaW5nIGNvbW1lcmNpYWwgb3BlcmF0aW5nIHN5c3RlbXMgd2l0aAorbWFuZGF0b3J5IGFjY2VzcyBjb250cm9scyBhbmQgbXVsdGktbGV2ZWwgc2VjdXJpdHkuICBUaGVzZSBzeXN0ZW1zIGFyZQorbm8gbG9uZ2VyIGJ1aWx0IHNwZWNpZmljYWxseSBmb3IgYSBwYXJ0aWN1bGFyIGdyb3VwIGluIHRoZSBkZWZlbnNlIG9yCitpbnRlbGxpZ2VuY2UgY29tbXVuaXRpZXMuICBUaGV5IGFyZSBnZW5lcmFsbHkgYXZhaWxhYmxlIGNvbW1lcmNpYWwgc3lzdGVtcworZm9yIHVzZSBpbiBhIHZhcmlldHkgb2YgZ292ZXJubWVudCBhbmQgY2l2aWwgc2VjdG9yIGVudmlyb25tZW50cy4KKworVGhlIHNtYWxsIG51bWJlciBvZiBFU08gZm9ybWF0IGNvZGVzIGNhbiBub3Qgc3VwcG9ydCBhbGwgdGhlIHBvc3NpYmxlCithcHBsaWNhdGlvbnMgb2YgYSBjb21tZXJjaWFsIHNlY3VyaXR5IG9wdGlvbi4gIFRoZSBCU08gYW5kIEVTTyB3ZXJlCitkZXNpZ25lZCB0byBvbmx5IHN1cHBvcnQgdGhlIFVuaXRlZCBTdGF0ZXMgRG9ELiAgQ0lQU08gaGFzIGJlZW4gZGVzaWduZWQKK3RvIHN1cHBvcnQgbXVsdGlwbGUgc2VjdXJpdHkgcG9saWNpZXMuICBUaGlzIEludGVybmV0IERyYWZ0IHByb3ZpZGVzIHRoZQorZm9ybWF0IGFuZCBwcm9jZWR1cmVzIHJlcXVpcmVkIHRvIHN1cHBvcnQgYSBNYW5kYXRvcnkgQWNjZXNzIENvbnRyb2wKK3NlY3VyaXR5IHBvbGljeS4gIFN1cHBvcnQgZm9yIGFkZGl0aW9uYWwgc2VjdXJpdHkgcG9saWNpZXMgc2hhbGwgYmUKK2RlZmluZWQgaW4gZnV0dXJlIFJGQ3MuCisKKworCisKK0ludGVybmV0IERyYWZ0LCBFeHBpcmVzIDE1IEphbiA5MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtQQUdFIDFdCisKKworCitDSVBTTyBJTlRFUk5FVCBEUkFGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYgSnVseSwgMTk5MgorCisKKworCiszLiAgICBDSVBTTyBGb3JtYXQKKworT3B0aW9uIHR5cGU6IDEzNCAoQ2xhc3MgMCwgTnVtYmVyIDYsIENvcHkgb24gRnJhZ21lbnRhdGlvbikKK09wdGlvbiBsZW5ndGg6IFZhcmlhYmxlCisKK1RoaXMgb3B0aW9uIHBlcm1pdHMgc2VjdXJpdHkgcmVsYXRlZCBpbmZvcm1hdGlvbiB0byBiZSBwYXNzZWQgYmV0d2Vlbgorc3lzdGVtcyB3aXRoaW4gYSBzaW5nbGUgRG9tYWluIG9mIEludGVycHJldGF0aW9uIChET0kpLiAgQSBET0kgaXMgYQorY29sbGVjdGlvbiBvZiBzeXN0ZW1zIHdoaWNoIGFncmVlIG9uIHRoZSBtZWFuaW5nIG9mIHBhcnRpY3VsYXIgdmFsdWVzCitpbiB0aGUgc2VjdXJpdHkgb3B0aW9uLiAgQW4gYXV0aG9yaXR5IHRoYXQgaGFzIGJlZW4gYXNzaWduZWQgYSBET0kKK2lkZW50aWZpZXIgd2lsbCBkZWZpbmUgYSBtYXBwaW5nIGJldHdlZW4gYXBwcm9wcmlhdGUgQ0lQU08gZmllbGQgdmFsdWVzCithbmQgdGhlaXIgaHVtYW4gcmVhZGFibGUgZXF1aXZhbGVudC4gIFRoaXMgYXV0aG9yaXR5IHdpbGwgZGlzdHJpYnV0ZSB0aGF0CittYXBwaW5nIHRvIGhvc3RzIHdpdGhpbiB0aGUgYXV0aG9yaXR5J3MgZG9tYWluLiAgVGhlc2UgbWFwcGluZ3MgbWF5IGJlCitzZW5zaXRpdmUsIHRoZXJlZm9yZSBhIERPSSBhdXRob3JpdHkgaXMgbm90IHJlcXVpcmVkIHRvIG1ha2UgdGhlc2UKK21hcHBpbmdzIGF2YWlsYWJsZSB0byBhbnlvbmUgb3RoZXIgdGhhbiB0aGUgc3lzdGVtcyB0aGF0IGFyZSBpbmNsdWRlZCBpbgordGhlIERPSS4KKworVGhpcyBvcHRpb24gTVVTVCBiZSBjb3BpZWQgb24gZnJhZ21lbnRhdGlvbi4gIFRoaXMgb3B0aW9uIGFwcGVhcnMgYXQgbW9zdAorb25jZSBpbiBhIGRhdGFncmFtLiAgQWxsIG11bHRpLW9jdGV0IGZpZWxkcyBpbiB0aGUgb3B0aW9uIGFyZSBkZWZpbmVkIHRvIGJlCit0cmFuc21pdHRlZCBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIuICBUaGUgZm9ybWF0IG9mIHRoaXMgb3B0aW9uIGlzIGFzIGZvbGxvd3M6CisKKystLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLy8tLS0tLS0rLS0tLS0tLS0tLS0vLy0tLS0tLS0tLSsKK3wgMTAwMDAxMTAgfCBMTExMTExMTCB8IERERERERERERERERCB8IFRUVFRUVFRUVFRUVFRUVFRUVFRUIHwKKystLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLy8tLS0tLS0rLS0tLS0tLS0tLS0vLy0tLS0tLS0tLSsKKworICBUWVBFPTEzNCAgICBPUFRJT04gICAgRE9NQUlOIE9GICAgICAgICAgICAgICAgVEFHUworICAgICAgICAgICAgICBMRU5HVEggICAgSU5URVJQUkVUQVRJT04KKworCisgICAgICAgICAgICAgICAgRmlndXJlIDEuIENJUFNPIEZvcm1hdAorCisKKzMuMSAgICBUeXBlCisKK1RoaXMgZmllbGQgaXMgMSBvY3RldCBpbiBsZW5ndGguICBJdHMgdmFsdWUgaXMgMTM0LgorCisKKzMuMiAgICBMZW5ndGgKKworVGhpcyBmaWVsZCBpcyAxIG9jdGV0IGluIGxlbmd0aC4gIEl0IGlzIHRoZSB0b3RhbCBsZW5ndGggb2YgdGhlIG9wdGlvbgoraW5jbHVkaW5nIHRoZSB0eXBlIGFuZCBsZW5ndGggZmllbGRzLiAgV2l0aCB0aGUgY3VycmVudCBJUCBoZWFkZXIgbGVuZ3RoCityZXN0cmljdGlvbiBvZiA0MCBvY3RldHMgdGhlIHZhbHVlIG9mIHRoaXMgZmllbGQgTVVTVCBub3QgZXhjZWVkIDQwLgorCisKKzMuMyAgICBEb21haW4gb2YgSW50ZXJwcmV0YXRpb24gSWRlbnRpZmllcgorCitUaGlzIGZpZWxkIGlzIGFuIHVuc2lnbmVkIDMyIGJpdCBpbnRlZ2VyLiAgVGhlIHZhbHVlIDAgaXMgcmVzZXJ2ZWQgYW5kIE1VU1QKK25vdCBhcHBlYXIgYXMgdGhlIERPSSBpZGVudGlmaWVyIGluIGFueSBDSVBTTyBvcHRpb24uICBJbXBsZW1lbnRhdGlvbnMKK3Nob3VsZCBhc3N1bWUgdGhhdCB0aGUgRE9JIGlkZW50aWZpZXIgZmllbGQgaXMgbm90IGFsaWduZWQgb24gYW55IHBhcnRpY3VsYXIKK2J5dGUgYm91bmRhcnkuCisKK1RvIGNvbnNlcnZlIHNwYWNlIGluIHRoZSBwcm90b2NvbCwgc2VjdXJpdHkgbGV2ZWxzIGFuZCBjYXRlZ29yaWVzIGFyZQorcmVwcmVzZW50ZWQgYnkgbnVtYmVycyByYXRoZXIgdGhhbiB0aGVpciBBU0NJSSBlcXVpdmFsZW50LiAgVGhpcyByZXF1aXJlcworYSBtYXBwaW5nIHRhYmxlIHdpdGhpbiBDSVBTTyBob3N0cyB0byBtYXAgdGhlc2UgbnVtYmVycyB0byB0aGVpcgorY29ycmVzcG9uZGluZyBBU0NJSSByZXByZXNlbnRhdGlvbnMuICBOb24tcmVsYXRlZCBncm91cHMgb2Ygc3lzdGVtcyBtYXkKKworCisKK0ludGVybmV0IERyYWZ0LCBFeHBpcmVzIDE1IEphbiA5MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtQQUdFIDJdCisKKworCitDSVBTTyBJTlRFUk5FVCBEUkFGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYgSnVseSwgMTk5MgorCisKKworaGF2ZSB0aGVpciBvd24gdW5pcXVlIG1hcHBpbmdzLiAgRm9yIGV4YW1wbGUsIG9uZSBncm91cCBvZiBzeXN0ZW1zIG1heQordXNlIHRoZSBudW1iZXIgNSB0byByZXByZXNlbnQgVW5jbGFzc2lmaWVkIHdoaWxlIGFub3RoZXIgZ3JvdXAgbWF5IHVzZSB0aGUKK251bWJlciAxIHRvIHJlcHJlc2VudCB0aGF0IHNhbWUgc2VjdXJpdHkgbGV2ZWwuICBUaGUgRE9JIGlkZW50aWZpZXIgaXMgdXNlZAordG8gaWRlbnRpZnkgd2hpY2ggbWFwcGluZyB3YXMgdXNlZCBmb3IgdGhlIHZhbHVlcyB3aXRoaW4gdGhlIG9wdGlvbi4KKworCiszLjQgICAgVGFnIFR5cGVzCisKK0EgY29tbW9uIGZvcm1hdCBmb3IgcGFzc2luZyBzZWN1cml0eSByZWxhdGVkIGluZm9ybWF0aW9uIGlzIG5lY2Vzc2FyeQorZm9yIGludGVyb3BlcmFiaWxpdHkuICBDSVBTTyB1c2VzIHNldHMgb2YgInRhZ3MiIHRvIGNvbnRhaW4gdGhlIHNlY3VyaXR5CitpbmZvcm1hdGlvbiByZWxldmFudCB0byB0aGUgZGF0YSBpbiB0aGUgSVAgcGFja2V0LiAgRWFjaCB0YWcgYmVnaW5zIHdpdGgKK2EgdGFnIHR5cGUgaWRlbnRpZmllciBmb2xsb3dlZCBieSB0aGUgbGVuZ3RoIG9mIHRoZSB0YWcgYW5kIGVuZHMgd2l0aCB0aGUKK2FjdHVhbCBzZWN1cml0eSBpbmZvcm1hdGlvbiB0byBiZSBwYXNzZWQuICBBbGwgbXVsdGktb2N0ZXQgZmllbGRzIGluIGEgdGFnCithcmUgZGVmaW5lZCB0byBiZSB0cmFuc21pdHRlZCBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIuICBMaWtlIHRoZSBET0kKK2lkZW50aWZpZXIgZmllbGQgaW4gdGhlIENJUFNPIGhlYWRlciwgaW1wbGVtZW50YXRpb25zIHNob3VsZCBhc3N1bWUgdGhhdAorYWxsIHRhZ3MsIGFzIHdlbGwgYXMgZmllbGRzIHdpdGhpbiBhIHRhZywgYXJlIG5vdCBhbGlnbmVkIG9uIGFueSBwYXJ0aWN1bGFyCitvY3RldCBib3VuZGFyeS4gICBUaGUgdGFnIHR5cGVzIGRlZmluZWQgaW4gdGhpcyBkb2N1bWVudCBjb250YWluIGFsaWdubWVudAorYnl0ZXMgdG8gYXNzaXN0IGFsaWdubWVudCBvZiBzb21lIGluZm9ybWF0aW9uLCBob3dldmVyIGFsaWdubWVudCBjYW4gbm90CitiZSBndWFyYW50ZWVkIGlmIENJUFNPIGlzIG5vdCB0aGUgZmlyc3QgSVAgb3B0aW9uLgorCitDSVBTTyB0YWcgdHlwZXMgMCB0aHJvdWdoIDEyNyBhcmUgcmVzZXJ2ZWQgZm9yIGRlZmluaW5nIHN0YW5kYXJkIHRhZworZm9ybWF0cy4gIFRoZWlyIGRlZmluaXRpb25zIHdpbGwgYmUgcHVibGlzaGVkIGluIFJGQ3MuICBUYWcgdHlwZXMgd2hvc2UKK2lkZW50aWZpZXJzIGFyZSBncmVhdGVyIHRoYW4gMTI3IGFyZSBkZWZpbmVkIGJ5IHRoZSBET0kgYXV0aG9yaXR5IGFuZCBtYXkKK29ubHkgYmUgbWVhbmluZ2Z1bCBpbiBjZXJ0YWluIERvbWFpbnMgb2YgSW50ZXJwcmV0YXRpb24uICBGb3IgdGhlc2UgdGFnCit0eXBlcywgaW1wbGVtZW50YXRpb25zIHdpbGwgcmVxdWlyZSB0aGUgRE9JIGlkZW50aWZpZXIgYXMgd2VsbCBhcyB0aGUgdGFnCitudW1iZXIgdG8gZGV0ZXJtaW5lIHRoZSBzZWN1cml0eSBwb2xpY3kgYW5kIHRoZSBmb3JtYXQgYXNzb2NpYXRlZCB3aXRoIHRoZQordGFnLiAgVXNlIG9mIHRhZyB0eXBlcyBhYm92ZSAxMjcgYXJlIHJlc3RyaWN0ZWQgdG8gY2xvc2VkIG5ldHdvcmtzIHdoZXJlCitpbnRlcm9wZXJhYmlsaXR5IHdpdGggb3RoZXIgbmV0d29ya3Mgd2lsbCBub3QgYmUgYW4gaXNzdWUuICBJbXBsZW1lbnRhdGlvbnMKK3RoYXQgc3VwcG9ydCBhIHRhZyB0eXBlIGdyZWF0ZXIgdGhhbiAxMjcgTVVTVCBzdXBwb3J0IGF0IGxlYXN0IG9uZSBET0kgdGhhdAorcmVxdWlyZXMgb25seSB0YWcgdHlwZXMgMSB0byAxMjcuCisKK1RhZyB0eXBlIDAgaXMgcmVzZXJ2ZWQuIFRhZyB0eXBlcyAxLCAyLCBhbmQgNSBhcmUgZGVmaW5lZCBpbiB0aGlzCitJbnRlcm5ldCBEcmFmdC4gIFR5cGVzIDMgYW5kIDQgYXJlIHJlc2VydmVkIGZvciB3b3JrIGluIHByb2dyZXNzLgorVGhlIHN0YW5kYXJkIGZvcm1hdCBmb3IgYWxsIGN1cnJlbnQgYW5kIGZ1dHVyZSBDSVBTTyB0YWdzIGlzIHNob3duIGJlbG93OgorCisrLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLy8tLS0tLS0tLSsKK3wgVFRUVFRUVFQgfCBMTExMTExMTCB8IElJSUlJSUlJSUlJSUlJSUkgfAorKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS8vLS0tLS0tLS0rCisgICAgVEFHICAgICAgIFRBRyAgICAgICAgIFRBRworICAgIFRZUEUgICAgICBMRU5HVEggICAgICBJTkZPUk1BVElPTgorCisgICAgRmlndXJlIDI6ICBTdGFuZGFyZCBUYWcgRm9ybWF0CisKK0luIHRoZSB0aHJlZSB0YWcgdHlwZXMgZGVzY3JpYmVkIGluIHRoaXMgZG9jdW1lbnQsIHRoZSBsZW5ndGggYW5kIGNvdW50CityZXN0cmljdGlvbnMgYXJlIGJhc2VkIG9uIHRoZSBjdXJyZW50IElQIGxpbWl0YXRpb24gb2YgNDAgb2N0ZXRzIGZvciBhbGwKK0lQIG9wdGlvbnMuICBJZiB0aGUgSVAgaGVhZGVyIGlzIGxhdGVyIGV4cGFuZGVkLCB0aGVuIHRoZSBsZW5ndGggYW5kIGNvdW50CityZXN0cmljdGlvbnMgc3BlY2lmaWVkIGluIHRoaXMgZG9jdW1lbnQgbWF5IGluY3JlYXNlIHRvIHVzZSB0aGUgZnVsbCBhcmVhCitwcm92aWRlZCBmb3IgSVAgb3B0aW9ucy4KKworCiszLjQuMSAgICBUYWcgVHlwZSBDbGFzc2VzCisKK1RhZyBjbGFzc2VzIGNvbnNpc3Qgb2YgdGFnIHR5cGVzIHRoYXQgaGF2ZSBjb21tb24gcHJvY2Vzc2luZyByZXF1aXJlbWVudHMKK2FuZCBzdXBwb3J0IHRoZSBzYW1lIHNlY3VyaXR5IHBvbGljeS4gIFRoZSB0aHJlZSB0YWdzIGRlZmluZWQgaW4gdGhpcworSW50ZXJuZXQgRHJhZnQgYmVsb25nIHRvIHRoZSBNYW5kYXRvcnkgQWNjZXNzIENvbnRyb2wgKE1BQykgU2Vuc2l0aXZpdHkKKworCisKK0ludGVybmV0IERyYWZ0LCBFeHBpcmVzIDE1IEphbiA5MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtQQUdFIDNdCisKKworCitDSVBTTyBJTlRFUk5FVCBEUkFGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYgSnVseSwgMTk5MgorCisKKworY2xhc3MgYW5kIHN1cHBvcnQgdGhlIE1BQyBTZW5zaXRpdml0eSBzZWN1cml0eSBwb2xpY3kuCisKKworMy40LjIgICAgVGFnIFR5cGUgMQorCitUaGlzIGlzIHJlZmVycmVkIHRvIGFzIHRoZSAiYml0LW1hcHBlZCIgdGFnIHR5cGUuICBUYWcgdHlwZSAxIGlzIGluY2x1ZGVkCitpbiB0aGUgTUFDIFNlbnNpdGl2aXR5IHRhZyB0eXBlIGNsYXNzLiAgVGhlIGZvcm1hdCBvZiB0aGlzIHRhZyB0eXBlIGlzIGFzCitmb2xsb3dzOgorCisrLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS8vLS0tLS0tLS0tKworfCAwMDAwMDAwMSB8IExMTExMTExMIHwgMDAwMDAwMDAgfCBMTExMTExMTCB8IENDQ0NDQ0NDQ0NDQ0NDQ0NDIHwKKystLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLy8tLS0tLS0tLS0rCisKKyAgICBUQUcgICAgICAgVEFHICAgICAgQUxJR05NRU5UICBTRU5TSVRJVklUWSAgICBCSVQgTUFQIE9GCisgICAgVFlQRSAgICAgIExFTkdUSCAgIE9DVEVUICAgICAgTEVWRUwgICAgICAgICAgQ0FURUdPUklFUworCisgICAgICAgICAgICBGaWd1cmUgMy4gVGFnIFR5cGUgMSBGb3JtYXQKKworCiszLjQuMi4xICAgIFRhZyBUeXBlCisKK1RoaXMgZmllbGQgaXMgMSBvY3RldCBpbiBsZW5ndGggYW5kIGhhcyBhIHZhbHVlIG9mIDEuCisKKworMy40LjIuMiAgICBUYWcgTGVuZ3RoCisKK1RoaXMgZmllbGQgaXMgMSBvY3RldCBpbiBsZW5ndGguICBJdCBpcyB0aGUgdG90YWwgbGVuZ3RoIG9mIHRoZSB0YWcgdHlwZQoraW5jbHVkaW5nIHRoZSB0eXBlIGFuZCBsZW5ndGggZmllbGRzLiAgV2l0aCB0aGUgY3VycmVudCBJUCBoZWFkZXIgbGVuZ3RoCityZXN0cmljdGlvbiBvZiA0MCBieXRlcyB0aGUgdmFsdWUgd2l0aGluIHRoaXMgZmllbGQgaXMgYmV0d2VlbiA0IGFuZCAzNC4KKworCiszLjQuMi4zICAgIEFsaWdubWVudCBPY3RldAorCitUaGlzIGZpZWxkIGlzIDEgb2N0ZXQgaW4gbGVuZ3RoIGFuZCBhbHdheXMgaGFzIHRoZSB2YWx1ZSBvZiAwLiAgSXRzIHB1cnBvc2UKK2lzIHRvIGFsaWduIHRoZSBjYXRlZ29yeSBiaXRtYXAgZmllbGQgb24gYW4gZXZlbiBvY3RldCBib3VuZGFyeS4gIFRoaXMgd2lsbAorc3BlZWQgbWFueSBpbXBsZW1lbnRhdGlvbnMgaW5jbHVkaW5nIHJvdXRlciBpbXBsZW1lbnRhdGlvbnMuCisKKworMy40LjIuNCAgICBTZW5zaXRpdml0eSBMZXZlbAorCitUaGlzIGZpZWxkIGlzIDEgb2N0ZXQgaW4gbGVuZ3RoLiAgSXRzIHZhbHVlIGlzIGZyb20gMCB0byAyNTUuICBUaGUgdmFsdWVzCithcmUgb3JkZXJlZCB3aXRoIDAgYmVpbmcgdGhlIG1pbmltdW0gdmFsdWUgYW5kIDI1NSByZXByZXNlbnRpbmcgdGhlIG1heGltdW0KK3ZhbHVlLgorCisKKzMuNC4yLjUgICAgQml0IE1hcCBvZiBDYXRlZ29yaWVzCisKK1RoZSBsZW5ndGggb2YgdGhpcyBmaWVsZCBpcyB2YXJpYWJsZSBhbmQgcmFuZ2VzIGZyb20gMCB0byAzMCBvY3RldHMuICBUaGlzCitwcm92aWRlcyByZXByZXNlbnRhdGlvbiBvZiBjYXRlZ29yaWVzIDAgdG8gMjM5LiAgVGhlIG9yZGVyaW5nIG9mIHRoZSBiaXRzCitpcyBsZWZ0IHRvIHJpZ2h0IG9yIE1TQiB0byBMU0IuICBGb3IgZXhhbXBsZSBjYXRlZ29yeSAwIGlzIHJlcHJlc2VudGVkIGJ5Cit0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgb2YgdGhlIGZpcnN0IGJ5dGUgYW5kIGNhdGVnb3J5IDE1IGlzIHJlcHJlc2VudGVkCitieSB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IG9mIHRoZSBzZWNvbmQgYnl0ZS4gIEZpZ3VyZSA0IGdyYXBoaWNhbGx5CitzaG93cyB0aGlzIG9yZGVyaW5nLiAgQml0IE4gaXMgYmluYXJ5IDEgaWYgY2F0ZWdvcnkgTiBpcyBwYXJ0IG9mIHRoZSBsYWJlbAorZm9yIHRoZSBkYXRhZ3JhbSwgYW5kIGJpdCBOIGlzIGJpbmFyeSAwIGlmIGNhdGVnb3J5IE4gaXMgbm90IHBhcnQgb2YgdGhlCitsYWJlbC4gIEV4Y2VwdCBmb3IgdGhlIG9wdGltaXplZCB0YWcgMSBmb3JtYXQgZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24sCisKKworCitJbnRlcm5ldCBEcmFmdCwgRXhwaXJlcyAxNSBKYW4gOTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUEFHRSA0XQorCisKKworQ0lQU08gSU5URVJORVQgRFJBRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2IEp1bHksIDE5OTIKKworCisKK21pbmltYWwgZW5jb2RpbmcgU0hPVUxEIGJlIHVzZWQgcmVzdWx0aW5nIGluIG5vIHRyYWlsaW5nIHplcm8gb2N0ZXRzIGluIHRoZQorY2F0ZWdvcnkgYml0bWFwLgorCisgICAgICAgIG9jdGV0IDAgIG9jdGV0IDEgIG9jdGV0IDIgIG9jdGV0IDMgIG9jdGV0IDQgIG9jdGV0IDUKKyAgICAgICAgWFhYWFhYWFggWFhYWFhYWFggWFhYWFhYWFggWFhYWFhYWFggWFhYWFhYWFggWFhYWFhYWFggLiAuIC4KK2JpdCAgICAgMDEyMzQ1NjcgODkxMTExMTEgMTExMTIyMjIgMjIyMjIyMzMgMzMzMzMzMzMgNDQ0NDQ0NDQKK251bWJlciAgICAgICAgICAgICAwMTIzNDUgNjc4OTAxMjMgNDU2Nzg5MDEgMjM0NTY3ODkgMDEyMzQ1NjcKKworICAgICAgICAgICAgRmlndXJlIDQuIE9yZGVyaW5nIG9mIEJpdHMgaW4gVGFnIDEgQml0IE1hcAorCisKKzMuNC4yLjYgICAgT3B0aW1pemVkIFRhZyAxIEZvcm1hdAorCitSb3V0ZXJzIHdvcmsgbW9zdCBlZmZpY2llbnRseSB3aGVuIHByb2Nlc3NpbmcgZml4ZWQgbGVuZ3RoIGZpZWxkcy4gIFRvCitzdXBwb3J0IHRoZXNlIHJvdXRlcnMgdGhlcmUgaXMgYW4gb3B0aW1pemVkIGZvcm0gb2YgdGFnIHR5cGUgMS4gIFRoZSBmb3JtYXQKK2RvZXMgbm90IGNoYW5nZS4gIFRoZSBvbmx5IGNoYW5nZSBpcyB0byB0aGUgY2F0ZWdvcnkgYml0bWFwIHdoaWNoIGlzIHNldCB0bworYSBjb25zdGFudCBsZW5ndGggb2YgMTAgb2N0ZXRzLiAgVHJhaWxpbmcgb2N0ZXRzIHJlcXVpcmVkIHRvIGZpbGwgb3V0IHRoZSAxMAorb2N0ZXRzIGFyZSB6ZXJvIGZpbGxlZC4gIFRlbiBvY3RldHMsIGFsbG93aW5nIGZvciA4MCBjYXRlZ29yaWVzLCB3YXMgY2hvc2VuCitiZWNhdXNlIGl0IG1ha2VzIHRoZSB0b3RhbCBsZW5ndGggb2YgdGhlIENJUFNPIG9wdGlvbiAyMCBvY3RldHMuICBJZiBDSVBTTworaXMgdGhlIG9ubHkgb3B0aW9uIHRoZW4gdGhlIG9wdGlvbiB3aWxsIGJlIGZ1bGwgd29yZCBhbGlnbmVkIGFuZCBhZGRpdGlvbmFsCitmaWxsZXIgb2N0ZXRzIHdpbGwgbm90IGJlIHJlcXVpcmVkLgorCisKKzMuNC4zICAgIFRhZyBUeXBlIDIKKworVGhpcyBpcyByZWZlcnJlZCB0byBhcyB0aGUgImVudW1lcmF0ZWQiIHRhZyB0eXBlLiAgSXQgaXMgdXNlZCB0byBkZXNjcmliZQorbGFyZ2UgYnV0IHNwYXJzZWx5IHBvcHVsYXRlZCBzZXRzIG9mIGNhdGVnb3JpZXMuICBUYWcgdHlwZSAyIGlzIGluIHRoZSBNQUMKK1NlbnNpdGl2aXR5IHRhZyB0eXBlIGNsYXNzLiAgVGhlIGZvcm1hdCBvZiB0aGlzIHRhZyB0eXBlIGlzIGFzIGZvbGxvd3M6CisKKystLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0vLy0tLS0tLS0tLS0tLS0rCit8IDAwMDAwMDEwIHwgTExMTExMTEwgfCAwMDAwMDAwMCB8IExMTExMTExMIHwgQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0MgfAorKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS8vLS0tLS0tLS0tLS0tLSsKKworICAgIFRBRyAgICAgICBUQUcgICAgICBBTElHTk1FTlQgIFNFTlNJVElWSVRZICAgICAgICAgRU5VTUVSQVRFRAorICAgIFRZUEUgICAgICBMRU5HVEggICBPQ1RFVCAgICAgIExFVkVMICAgICAgICAgICAgICAgQ0FURUdPUklFUworCisgICAgICAgICAgICAgICAgRmlndXJlIDUuIFRhZyBUeXBlIDIgRm9ybWF0CisKKworMy40LjMuMSAgICAgVGFnIFR5cGUKKworVGhpcyBmaWVsZCBpcyBvbmUgb2N0ZXQgaW4gbGVuZ3RoIGFuZCBoYXMgYSB2YWx1ZSBvZiAyLgorCisKKzMuNC4zLjIgICAgVGFnIExlbmd0aAorCitUaGlzIGZpZWxkIGlzIDEgb2N0ZXQgaW4gbGVuZ3RoLiBJdCBpcyB0aGUgdG90YWwgbGVuZ3RoIG9mIHRoZSB0YWcgdHlwZQoraW5jbHVkaW5nIHRoZSB0eXBlIGFuZCBsZW5ndGggZmllbGRzLiAgV2l0aCB0aGUgY3VycmVudCBJUCBoZWFkZXIgbGVuZ3RoCityZXN0cmljdGlvbiBvZiA0MCBieXRlcyB0aGUgdmFsdWUgd2l0aGluIHRoaXMgZmllbGQgaXMgYmV0d2VlbiA0IGFuZCAzNC4KKworCiszLjQuMy4zICAgIEFsaWdubWVudCBPY3RldAorCitUaGlzIGZpZWxkIGlzIDEgb2N0ZXQgaW4gbGVuZ3RoIGFuZCBhbHdheXMgaGFzIHRoZSB2YWx1ZSBvZiAwLiAgSXRzIHB1cnBvc2UKK2lzIHRvIGFsaWduIHRoZSBjYXRlZ29yeSBmaWVsZCBvbiBhbiBldmVuIG9jdGV0IGJvdW5kYXJ5LiAgVGhpcyB3aWxsCisKKworCitJbnRlcm5ldCBEcmFmdCwgRXhwaXJlcyAxNSBKYW4gOTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUEFHRSA1XQorCisKKworQ0lQU08gSU5URVJORVQgRFJBRlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2IEp1bHksIDE5OTIKKworCisKK3NwZWVkIG1hbnkgaW1wbGVtZW50YXRpb25zIGluY2x1ZGluZyByb3V0ZXIgaW1wbGVtZW50YXRpb25zLgorCisKKzMuNC4zLjQgICAgU2Vuc2l0aXZpdHkgTGV2ZWwKKworVGhpcyBmaWVsZCBpcyAxIG9jdGV0IGluIGxlbmd0aC4gSXRzIHZhbHVlIGlzIGZyb20gMCB0byAyNTUuICBUaGUgdmFsdWVzCithcmUgb3JkZXJlZCB3aXRoIDAgYmVpbmcgdGhlIG1pbmltdW0gdmFsdWUgYW5kIDI1NSByZXByZXNlbnRpbmcgdGhlCittYXhpbXVtIHZhbHVlLgorCisKKzMuNC4zLjUgICAgRW51bWVyYXRlZCBDYXRlZ29yaWVzCisKK0luIHRoaXMgdGFnLCBjYXRlZ29yaWVzIGFyZSByZXByZXNlbnRlZCBieSB0aGVpciBhY3R1YWwgdmFsdWUgcmF0aGVyIHRoYW4KK2J5IHRoZWlyIHBvc2l0aW9uIHdpdGhpbiBhIGJpdCBmaWVsZC4gIFRoZSBsZW5ndGggb2YgZWFjaCBjYXRlZ29yeSBpcyAyCitvY3RldHMuICBVcCB0byAxNSBjYXRlZ29yaWVzIG1heSBiZSByZXByZXNlbnRlZCBieSB0aGlzIHRhZy4gIFZhbGlkIHZhbHVlcworZm9yIGNhdGVnb3JpZXMgYXJlIDAgdG8gNjU1MzQuICBDYXRlZ29yeSA2NTUzNSBpcyBub3QgYSB2YWxpZCBjYXRlZ29yeQordmFsdWUuICBUaGUgY2F0ZWdvcmllcyBNVVNUIGJlIGxpc3RlZCBpbiBhc2NlbmRpbmcgb3JkZXIgd2l0aGluIHRoZSB0YWcuCisKKworMy40LjQgICAgVGFnIFR5cGUgNQorCitUaGlzIGlzIHJlZmVycmVkIHRvIGFzIHRoZSAicmFuZ2UiIHRhZyB0eXBlLiAgSXQgaXMgdXNlZCB0byByZXByZXNlbnQKK2xhYmVscyB3aGVyZSBhbGwgY2F0ZWdvcmllcyBpbiBhIHJhbmdlLCBvciBzZXQgb2YgcmFuZ2VzLCBhcmUgaW5jbHVkZWQKK2luIHRoZSBzZW5zaXRpdml0eSBsYWJlbC4gIFRhZyB0eXBlIDUgaXMgaW4gdGhlIE1BQyBTZW5zaXRpdml0eSB0YWcgdHlwZQorY2xhc3MuICBUaGUgZm9ybWF0IG9mIHRoaXMgdGFnIHR5cGUgaXMgYXMgZm9sbG93czoKKworKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLy8tLS0tLS0tLS0tLS0tKworfCAwMDAwMDEwMSB8IExMTExMTExMIHwgMDAwMDAwMDAgfCBMTExMTExMTCB8ICBUb3AvQm90dG9tIHwgVG9wL0JvdHRvbSAgfAorKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLy8tLS0tLS0tLS0tLS0tKworCisgICAgVEFHICAgICAgIFRBRyAgICAgIEFMSUdOTUVOVCAgU0VOU0lUSVZJVFkgICAgICAgIENBVEVHT1JZIFJBTkdFUworICAgIFRZUEUgICAgICBMRU5HVEggICBPQ1RFVCAgICAgIExFVkVMCisKKyAgICAgICAgICAgICAgICAgICAgIEZpZ3VyZSA2LiBUYWcgVHlwZSA1IEZvcm1hdAorCisKKzMuNC40LjEgICAgIFRhZyBUeXBlCisKK1RoaXMgZmllbGQgaXMgb25lIG9jdGV0IGluIGxlbmd0aCBhbmQgaGFzIGEgdmFsdWUgb2YgNS4KKworCiszLjQuNC4yICAgIFRhZyBMZW5ndGgKKworVGhpcyBmaWVsZCBpcyAxIG9jdGV0IGluIGxlbmd0aC4gSXQgaXMgdGhlIHRvdGFsIGxlbmd0aCBvZiB0aGUgdGFnIHR5cGUKK2luY2x1ZGluZyB0aGUgdHlwZSBhbmQgbGVuZ3RoIGZpZWxkcy4gIFdpdGggdGhlIGN1cnJlbnQgSVAgaGVhZGVyIGxlbmd0aAorcmVzdHJpY3Rpb24gb2YgNDAgYnl0ZXMgdGhlIHZhbHVlIHdpdGhpbiB0aGlzIGZpZWxkIGlzIGJldHdlZW4gNCBhbmQgMzQuCisKKworMy40LjQuMyAgICBBbGlnbm1lbnQgT2N0ZXQKKworVGhpcyBmaWVsZCBpcyAxIG9jdGV0IGluIGxlbmd0aCBhbmQgYWx3YXlzIGhhcyB0aGUgdmFsdWUgb2YgMC4gIEl0cyBwdXJwb3NlCitpcyB0byBhbGlnbiB0aGUgY2F0ZWdvcnkgcmFuZ2UgZmllbGQgb24gYW4gZXZlbiBvY3RldCBib3VuZGFyeS4gIFRoaXMgd2lsbAorc3BlZWQgbWFueSBpbXBsZW1lbnRhdGlvbnMgaW5jbHVkaW5nIHJvdXRlciBpbXBsZW1lbnRhdGlvbnMuCisKKworCisKKworSW50ZXJuZXQgRHJhZnQsIEV4cGlyZXMgMTUgSmFuIDkzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1BBR0UgNl0KKworCisKK0NJUFNPIElOVEVSTkVUIERSQUZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiBKdWx5LCAxOTkyCisKKworCiszLjQuNC40ICAgIFNlbnNpdGl2aXR5IExldmVsCisKK1RoaXMgZmllbGQgaXMgMSBvY3RldCBpbiBsZW5ndGguIEl0cyB2YWx1ZSBpcyBmcm9tIDAgdG8gMjU1LiAgVGhlIHZhbHVlcworYXJlIG9yZGVyZWQgd2l0aCAwIGJlaW5nIHRoZSBtaW5pbXVtIHZhbHVlIGFuZCAyNTUgcmVwcmVzZW50aW5nIHRoZSBtYXhpbXVtCit2YWx1ZS4KKworCiszLjQuNC41ICAgIENhdGVnb3J5IFJhbmdlcworCitBIGNhdGVnb3J5IHJhbmdlIGlzIGEgNCBvY3RldCBmaWVsZCBjb21wcmlzZWQgb2YgdGhlIDIgb2N0ZXQgaW5kZXggb2YgdGhlCitoaWdoZXN0IG51bWJlcmVkIGNhdGVnb3J5IGZvbGxvd2VkIGJ5IHRoZSAyIG9jdGV0IGluZGV4IG9mIHRoZSBsb3dlc3QKK251bWJlcmVkIGNhdGVnb3J5LiAgVGhlc2UgcmFuZ2UgZW5kcG9pbnRzIGFyZSBpbmNsdXNpdmUgd2l0aGluIHRoZSByYW5nZSBvZgorY2F0ZWdvcmllcy4gIEFsbCBjYXRlZ29yaWVzIHdpdGhpbiBhIHJhbmdlIGFyZSBpbmNsdWRlZCBpbiB0aGUgc2Vuc2l0aXZpdHkKK2xhYmVsLiAgVGhpcyB0YWcgbWF5IGNvbnRhaW4gYSBtYXhpbXVtIG9mIDcgY2F0ZWdvcnkgcGFpcnMuICBUaGUgYm90dG9tCitjYXRlZ29yeSBlbmRwb2ludCBmb3IgdGhlIGxhc3QgcGFpciBpbiB0aGUgdGFnIE1BWSBiZSBvbWl0dGVkIGFuZCBTSE9VTEQgYmUKK2Fzc3VtZWQgdG8gYmUgMC4gIFRoZSByYW5nZXMgTVVTVCBiZSBub24tb3ZlcmxhcHBpbmcgYW5kIGJlIGxpc3RlZCBpbgorZGVzY2VuZGluZyBvcmRlci4gIFZhbGlkIHZhbHVlcyBmb3IgY2F0ZWdvcmllcyBhcmUgMCB0byA2NTUzNC4gIENhdGVnb3J5Cis2NTUzNSBpcyBub3QgYSB2YWxpZCBjYXRlZ29yeSB2YWx1ZS4KKworCiszLjQuNSAgICAgTWluaW11bSBSZXF1aXJlbWVudHMKKworQSBDSVBTTyBpbXBsZW1lbnRhdGlvbiBNVVNUIGJlIGNhcGFibGUgb2YgZ2VuZXJhdGluZyBhdCBsZWFzdCB0YWcgdHlwZSAxIGluCit0aGUgbm9uLW9wdGltaXplZCBmb3JtLiAgSW4gYWRkaXRpb24sIGEgQ0lQU08gaW1wbGVtZW50YXRpb24gTVVTVCBiZSBhYmxlCit0byByZWNlaXZlIGFueSB2YWxpZCB0YWcgdHlwZSAxIGV2ZW4gdGhvc2UgdXNpbmcgdGhlIG9wdGltaXplZCB0YWcgdHlwZSAxCitmb3JtYXQuCisKKworNC4gICAgQ29uZmlndXJhdGlvbiBQYXJhbWV0ZXJzCisKK1RoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZGVmaW5lZCBiZWxvdyBhcmUgcmVxdWlyZWQgZm9yIGFsbCBDSVBTTyBob3N0cywKK2dhdGV3YXlzLCBhbmQgcm91dGVycyB0aGF0IHN1cHBvcnQgbXVsdGlwbGUgc2Vuc2l0aXZpdHkgbGFiZWxzLiAgQSBDSVBTTworaG9zdCBpcyBkZWZpbmVkIHRvIGJlIHRoZSBvcmlnaW5hdGlvbiBvciBkZXN0aW5hdGlvbiBzeXN0ZW0gZm9yIGFuIElQCitkYXRhZ3JhbS4gIEEgQ0lQU08gZ2F0ZXdheSBwcm92aWRlcyBJUCByb3V0aW5nIHNlcnZpY2VzIGJldHdlZW4gdHdvIG9yIG1vcmUKK0lQIG5ldHdvcmtzIGFuZCBtYXkgYmUgcmVxdWlyZWQgdG8gcGVyZm9ybSBsYWJlbCB0cmFuc2xhdGlvbnMgYmV0d2VlbgorbmV0d29ya3MuICBBIENJUFNPIGdhdGV3YXkgbWF5IGJlIGFuIGVuaGFuY2VkIENJUFNPIGhvc3Qgb3IgaXQgbWF5IGp1c3QKK3Byb3ZpZGUgZ2F0ZXdheSBzZXJ2aWNlcyB3aXRoIG5vIGVuZCBzeXN0ZW0gQ0lQU08gY2FwYWJpbGl0aWVzLiAgQSBDSVBTTworcm91dGVyIGlzIGEgZGVkaWNhdGVkIElQIHJvdXRlciB0aGF0IHJvdXRlcyBJUCBkYXRhZ3JhbXMgYmV0d2VlbiB0d28gb3IgbW9yZQorSVAgbmV0d29ya3MuCisKK0FuIGltcGxlbWVudGF0aW9uIG9mIENJUFNPIG9uIGEgaG9zdCBNVVNUIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gcmVqZWN0IGEKK2RhdGFncmFtIGZvciByZWFzb25zIHRoYXQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBjYW4gbm90IGJlIGFkZXF1YXRlbHkKK3Byb3RlY3RlZCBieSB0aGUgcmVjZWl2aW5nIGhvc3Qgb3IgaWYgYWNjZXB0YW5jZSBtYXkgcmVzdWx0IGluIHZpb2xhdGlvbiBvZgordGhlIGhvc3Qgb3IgbmV0d29yayBzZWN1cml0eSBwb2xpY3kuICBJbiBhZGRpdGlvbiwgYSBDSVBTTyBnYXRld2F5IG9yIHJvdXRlcgorTVVTVCBiZSBhYmxlIHRvIHJlamVjdCBkYXRhZ3JhbXMgZ29pbmcgdG8gbmV0d29ya3MgdGhhdCBjYW4gbm90IHByb3ZpZGUKK2FkZXF1YXRlIHByb3RlY3Rpb24gb3IgbWF5IHZpb2xhdGUgdGhlIG5ldHdvcmsncyBzZWN1cml0eSBwb2xpY3kuICBUbworcHJvdmlkZSB0aGlzIGNhcGFiaWxpdHkgdGhlIGZvbGxvd2luZyBtaW5pbWFsIHNldCBvZiBjb25maWd1cmF0aW9uCitwYXJhbWV0ZXJzIGFyZSByZXF1aXJlZCBmb3IgQ0lQU08gaW1wbGVtZW50YXRpb25zOgorCitIT1NUX0xBQkVMX01BWCAtIFRoaXMgcGFyYW1ldGVyIGNvbnRhaW5zIHRoZSBtYXhpbXVtIHNlbnNpdGl2aXR5IGxhYmVsIHRoYXQKK2EgQ0lQU08gaG9zdCBpcyBhdXRob3JpemVkIHRvIGhhbmRsZS4gIEFsbCBkYXRhZ3JhbXMgdGhhdCBoYXZlIGEgbGFiZWwKK2dyZWF0ZXIgdGhhbiB0aGlzIG1heGltdW0gTVVTVCBiZSByZWplY3RlZCBieSB0aGUgQ0lQU08gaG9zdC4gIFRoaXMKK3BhcmFtZXRlciBkb2VzIG5vdCBhcHBseSB0byBDSVBTTyBnYXRld2F5cyBvciByb3V0ZXJzLiAgVGhpcyBwYXJhbWV0ZXIgbmVlZAorbm90IGJlIGRlZmluZWQgZXhwbGljaXRseSBhcyBpdCBjYW4gYmUgaW1wbGljaXRseSBkZXJpdmVkIGZyb20gdGhlCitQT1JUX0xBQkVMX01BWCBwYXJhbWV0ZXJzIGZvciB0aGUgYXNzb2NpYXRlZCBpbnRlcmZhY2VzLgorCisKKworSW50ZXJuZXQgRHJhZnQsIEV4cGlyZXMgMTUgSmFuIDkzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1BBR0UgN10KKworCisKK0NJUFNPIElOVEVSTkVUIERSQUZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiBKdWx5LCAxOTkyCisKKworCisKK0hPU1RfTEFCRUxfTUlOIC0gVGhpcyBwYXJhbWV0ZXIgY29udGFpbnMgdGhlIG1pbmltdW0gc2Vuc2l0aXZpdHkgbGFiZWwgdGhhdAorYSBDSVBTTyBob3N0IGlzIGF1dGhvcml6ZWQgdG8gaGFuZGxlLiAgQWxsIGRhdGFncmFtcyB0aGF0IGhhdmUgYSBsYWJlbCBsZXNzCit0aGFuIHRoaXMgbWluaW11bSBNVVNUIGJlIHJlamVjdGVkIGJ5IHRoZSBDSVBTTyBob3N0LiAgVGhpcyBwYXJhbWV0ZXIgZG9lcworbm90IGFwcGx5IHRvIENJUFNPIGdhdGV3YXlzIG9yIHJvdXRlcnMuICBUaGlzIHBhcmFtZXRlciBuZWVkIG5vdCBiZSBkZWZpbmVkCitleHBsaWNpdGx5IGFzIGl0IGNhbiBiZSBpbXBsaWNpdGx5IGRlcml2ZWQgZnJvbSB0aGUgUE9SVF9MQUJFTF9NSU4KK3BhcmFtZXRlcnMgZm9yIHRoZSBhc3NvY2lhdGVkIGludGVyZmFjZXMuCisKK1BPUlRfTEFCRUxfTUFYIC0gVGhpcyBwYXJhbWV0ZXIgY29udGFpbnMgdGhlIG1heGltdW0gc2Vuc2l0aXZpdHkgbGFiZWwgZm9yCithbGwgZGF0YWdyYW1zIHRoYXQgbWF5IGV4aXQgYSBwYXJ0aWN1bGFyIG5ldHdvcmsgaW50ZXJmYWNlIHBvcnQuICBBbGwKK291dGdvaW5nIGRhdGFncmFtcyB0aGF0IGhhdmUgYSBsYWJlbCBncmVhdGVyIHRoYW4gdGhpcyBtYXhpbXVtIE1VU1QgYmUKK3JlamVjdGVkIGJ5IHRoZSBDSVBTTyBzeXN0ZW0uICBUaGUgbGFiZWwgd2l0aGluIHRoaXMgcGFyYW1ldGVyIE1VU1QgYmUKK2xlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgbGFiZWwgd2l0aGluIHRoZSBIT1NUX0xBQkVMX01BWCBwYXJhbWV0ZXIuICBUaGlzCitwYXJhbWV0ZXIgZG9lcyBub3QgYXBwbHkgdG8gQ0lQU08gaG9zdHMgdGhhdCBzdXBwb3J0IG9ubHkgb25lIG5ldHdvcmsgcG9ydC4KKworUE9SVF9MQUJFTF9NSU4gLSBUaGlzIHBhcmFtZXRlciBjb250YWlucyB0aGUgbWluaW11bSBzZW5zaXRpdml0eSBsYWJlbCBmb3IKK2FsbCBkYXRhZ3JhbXMgdGhhdCBtYXkgZXhpdCBhIHBhcnRpY3VsYXIgbmV0d29yayBpbnRlcmZhY2UgcG9ydC4gIEFsbAorb3V0Z29pbmcgZGF0YWdyYW1zIHRoYXQgaGF2ZSBhIGxhYmVsIGxlc3MgdGhhbiB0aGlzIG1pbmltdW0gTVVTVCBiZQorcmVqZWN0ZWQgYnkgdGhlIENJUFNPIHN5c3RlbS4gIFRoZSBsYWJlbCB3aXRoaW4gdGhpcyBwYXJhbWV0ZXIgTVVTVCBiZQorZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBsYWJlbCB3aXRoaW4gdGhlIEhPU1RfTEFCRUxfTUlOIHBhcmFtZXRlci4KK1RoaXMgcGFyYW1ldGVyIGRvZXMgbm90IGFwcGx5IHRvIENJUFNPIGhvc3RzIHRoYXQgc3VwcG9ydCBvbmx5IG9uZSBuZXR3b3JrCitwb3J0LgorCitQT1JUX0RPSSAtIFRoaXMgcGFyYW1ldGVyIGlzIHVzZWQgdG8gYXNzaWduIGEgRE9JIGlkZW50aWZpZXIgdmFsdWUgdG8gYQorcGFydGljdWxhciBuZXR3b3JrIGludGVyZmFjZSBwb3J0LiAgQWxsIENJUFNPIGxhYmVscyB3aXRoaW4gZGF0YWdyYW1zCitnb2luZyBvdXQgdGhpcyBwb3J0IE1VU1QgdXNlIHRoZSBzcGVjaWZpZWQgRE9JIGlkZW50aWZpZXIuICBBbGwgQ0lQU08KK2hvc3RzIGFuZCBnYXRld2F5cyBNVVNUIHN1cHBvcnQgZWl0aGVyIHRoaXMgcGFyYW1ldGVyLCB0aGUgTkVUX0RPSQorcGFyYW1ldGVyLCBvciB0aGUgSE9TVF9ET0kgcGFyYW1ldGVyLgorCitORVRfRE9JIC0gVGhpcyBwYXJhbWV0ZXIgaXMgdXNlZCB0byBhc3NpZ24gYSBET0kgaWRlbnRpZmllciB2YWx1ZSB0byBhCitwYXJ0aWN1bGFyIElQIG5ldHdvcmsgYWRkcmVzcy4gIEFsbCBDSVBTTyBsYWJlbHMgd2l0aGluIGRhdGFncmFtcyBkZXN0aW5lZAorZm9yIHRoZSBwYXJ0aWN1bGFyIElQIG5ldHdvcmsgTVVTVCB1c2UgdGhlIHNwZWNpZmllZCBET0kgaWRlbnRpZmllci4gIEFsbAorQ0lQU08gaG9zdHMgYW5kIGdhdGV3YXlzIE1VU1Qgc3VwcG9ydCBlaXRoZXIgdGhpcyBwYXJhbWV0ZXIsIHRoZSBQT1JUX0RPSQorcGFyYW1ldGVyLCBvciB0aGUgSE9TVF9ET0kgcGFyYW1ldGVyLgorCitIT1NUX0RPSSAtIFRoaXMgcGFyYW1ldGVyIGlzIHVzZWQgdG8gYXNzaWduIGEgRE9JIGlkZW50aWZpZXIgdmFsdWUgdG8gYQorcGFydGljdWxhciBJUCBob3N0IGFkZHJlc3MuICBBbGwgQ0lQU08gbGFiZWxzIHdpdGhpbiBkYXRhZ3JhbXMgZGVzdGluZWQgZm9yCit0aGUgcGFydGljdWxhciBJUCBob3N0IHdpbGwgdXNlIHRoZSBzcGVjaWZpZWQgRE9JIGlkZW50aWZpZXIuICBBbGwgQ0lQU08KK2hvc3RzIGFuZCBnYXRld2F5cyBNVVNUIHN1cHBvcnQgZWl0aGVyIHRoaXMgcGFyYW1ldGVyLCB0aGUgUE9SVF9ET0kKK3BhcmFtZXRlciwgb3IgdGhlIE5FVF9ET0kgcGFyYW1ldGVyLgorCitUaGlzIGxpc3QgcmVwcmVzZW50cyB0aGUgbWluaW1hbCBzZXQgb2YgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHJlcXVpcmVkCit0byBiZSBjb21wbGlhbnQuICBJbXBsZW1lbnRvcnMgYXJlIGVuY291cmFnZWQgdG8gYWRkIHRvIHRoaXMgbGlzdCB0bworcHJvdmlkZSBlbmhhbmNlZCBmdW5jdGlvbmFsaXR5IGFuZCBjb250cm9sLiAgRm9yIGV4YW1wbGUsIG1hbnkgc2VjdXJpdHkKK3BvbGljaWVzIG1heSByZXF1aXJlIGJvdGggaW5jb21pbmcgYW5kIG91dGdvaW5nIGRhdGFncmFtcyBiZSBjaGVja2VkIGFnYWluc3QKK3RoZSBwb3J0IGFuZCBob3N0IGxhYmVsIHJhbmdlcy4KKworCis0LjEgICAgUG9ydCBSYW5nZSBQYXJhbWV0ZXJzCisKK1RoZSBsYWJlbHMgcmVwcmVzZW50ZWQgYnkgdGhlIFBPUlRfTEFCRUxfTUFYIGFuZCBQT1JUX0xBQkVMX01JTiBwYXJhbWV0ZXJzCitNQVkgYmUgaW4gQ0lQU08gb3IgbG9jYWwgZm9ybWF0LiAgU29tZSBDSVBTTyBzeXN0ZW1zLCBzdWNoIGFzIHJvdXRlcnMsIG1heQord2FudCB0byBoYXZlIHRoZSByYW5nZSBwYXJhbWV0ZXJzIGV4cHJlc3NlZCBpbiBDSVBTTyBmb3JtYXQgc28gdGhhdCBpbmNvbWluZworbGFiZWxzIGRvIG5vdCBoYXZlIHRvIGJlIGNvbnZlcnRlZCB0byBhIGxvY2FsIGZvcm1hdCBiZWZvcmUgYmVpbmcgY29tcGFyZWQKK2FnYWluc3QgdGhlIHJhbmdlLiAgSWYgbXVsdGlwbGUgRE9JcyBhcmUgc3VwcG9ydGVkIGJ5IG9uZSBvZiB0aGVzZSBDSVBTTworCisKKworSW50ZXJuZXQgRHJhZnQsIEV4cGlyZXMgMTUgSmFuIDkzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1BBR0UgOF0KKworCisKK0NJUFNPIElOVEVSTkVUIERSQUZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiBKdWx5LCAxOTkyCisKKworCitzeXN0ZW1zIHRoZW4gbXVsdGlwbGUgcG9ydCByYW5nZSBwYXJhbWV0ZXJzIHdvdWxkIGJlIG5lZWRlZCwgb25lIHNldCBmb3IKK2VhY2ggRE9JIHN1cHBvcnRlZCBvbiBhIHBhcnRpY3VsYXIgcG9ydC4KKworVGhlIHBvcnQgcmFuZ2Ugd2lsbCB1c3VhbGx5IHJlcHJlc2VudCB0aGUgdG90YWwgc2V0IG9mIGxhYmVscyB0aGF0IG1heQorZXhpc3Qgb24gdGhlIGxvZ2ljYWwgbmV0d29yayBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBjb3JyZXNwb25kaW5nIG5ldHdvcmsKK2ludGVyZmFjZS4gIEl0IG1heSwgaG93ZXZlciwgcmVwcmVzZW50IGEgc3Vic2V0IG9mIHRoZXNlIGxhYmVscyB0aGF0IGFyZQorYWxsb3dlZCB0byBlbnRlciB0aGUgQ0lQU08gc3lzdGVtLgorCisKKzQuMiAgICBTaW5nbGUgTGFiZWwgQ0lQU08gSG9zdHMKKworQ0lQU08gaW1wbGVtZW50YXRpb25zIHRoYXQgc3VwcG9ydCBvbmx5IG9uZSBsYWJlbCBhcmUgbm90IHJlcXVpcmVkIHRvCitzdXBwb3J0IHRoZSBwYXJhbWV0ZXJzIGRlc2NyaWJlZCBhYm92ZS4gIFRoZXNlIGxpbWl0ZWQgaW1wbGVtZW50YXRpb25zIGFyZQorb25seSByZXF1aXJlZCB0byBzdXBwb3J0IGEgTkVUX0xBQkVMIHBhcmFtZXRlci4gIFRoaXMgcGFyYW1ldGVyIGNvbnRhaW5zCit0aGUgQ0lQU08gbGFiZWwgdGhhdCBtYXkgYmUgaW5zZXJ0ZWQgaW4gZGF0YWdyYW1zIHRoYXQgZXhpdCB0aGUgaG9zdC4gIEluCithZGRpdGlvbiwgdGhlIGhvc3QgTVVTVCByZWplY3QgYW55IGluY29taW5nIGRhdGFncmFtIHRoYXQgaGFzIGEgbGFiZWwgd2hpY2gKK2lzIG5vdCBlcXVpdmFsZW50IHRvIHRoZSBORVRfTEFCRUwgcGFyYW1ldGVyLgorCisKKzUuICAgIEhhbmRsaW5nIFByb2NlZHVyZXMKKworVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgcHJvY2Vzc2luZyByZXF1aXJlbWVudHMgZm9yIGluY29taW5nIGFuZAorb3V0Z29pbmcgSVAgZGF0YWdyYW1zLiAgSnVzdCBwcm92aWRpbmcgdGhlIGNvcnJlY3QgQ0lQU08gbGFiZWwgZm9ybWF0CitpcyBub3QgZW5vdWdoLiAgQXNzdW1wdGlvbnMgd2lsbCBiZSBtYWRlIGJ5IG9uZSBzeXN0ZW0gb24gaG93IGEKK3JlY2VpdmluZyBzeXN0ZW0gd2lsbCBoYW5kbGUgdGhlIENJUFNPIGxhYmVsLiAgV3JvbmcgYXNzdW1wdGlvbnMgbWF5CitsZWFkIHRvIG5vbi1pbnRlcm9wZXJhYmlsaXR5IG9yIGV2ZW4gYSBzZWN1cml0eSBpbmNpZGVudC4gIFRoZQorcmVxdWlyZW1lbnRzIGRlc2NyaWJlZCBiZWxvdyByZXByZXNlbnQgdGhlIG1pbmltYWwgc2V0IG5lZWRlZCBmb3IKK2ludGVyb3BlcmFiaWxpdHkgYW5kIHRoYXQgcHJvdmlkZSB1c2VycyBzb21lIGxldmVsIG9mIGNvbmZpZGVuY2UuCitNYW55IG90aGVyIHJlcXVpcmVtZW50cyBjb3VsZCBiZSBhZGRlZCB0byBpbmNyZWFzZSB1c2VyIGNvbmZpZGVuY2UsCitob3dldmVyIGF0IHRoZSByaXNrIG9mIHJlc3RyaWN0aW5nIGNyZWF0aXZpdHkgYW5kIGxpbWl0aW5nIHZlbmRvcgorcGFydGljaXBhdGlvbi4KKworCis1LjEgICAgSW5wdXQgUHJvY2VkdXJlcworCitBbGwgZGF0YWdyYW1zIHJlY2VpdmVkIHRocm91Z2ggYSBuZXR3b3JrIHBvcnQgTVVTVCBoYXZlIGEgc2VjdXJpdHkgbGFiZWwKK2Fzc29jaWF0ZWQgd2l0aCB0aGVtLCBlaXRoZXIgY29udGFpbmVkIGluIHRoZSBkYXRhZ3JhbSBvciBhc3NpZ25lZCB0byB0aGUKK3JlY2VpdmluZyBwb3J0LiAgV2l0aG91dCB0aGlzIGxhYmVsIHRoZSBob3N0LCBnYXRld2F5LCBvciByb3V0ZXIgd2lsbCBub3QKK2hhdmUgdGhlIGluZm9ybWF0aW9uIGl0IG5lZWRzIHRvIG1ha2Ugc2VjdXJpdHkgZGVjaXNpb25zLiAgVGhpcyBzZWN1cml0eQorbGFiZWwgd2lsbCBiZSBvYnRhaW5lZCBmcm9tIHRoZSBDSVBTTyBpZiB0aGUgb3B0aW9uIGlzIHByZXNlbnQgaW4gdGhlCitkYXRhZ3JhbS4gIFNlZSBzZWN0aW9uIDQuMS4yIGZvciBoYW5kbGluZyBwcm9jZWR1cmVzIGZvciB1bmxhYmVsZWQKK2RhdGFncmFtcy4gIFRoaXMgbGFiZWwgd2lsbCBiZSBjb21wYXJlZCBhZ2FpbnN0IHRoZSBQT1JUIChpZiBhcHByb3ByaWF0ZSkKK2FuZCBIT1NUIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBkZWZpbmVkIGluIHNlY3Rpb24gMy4KKworSWYgYW55IGZpZWxkIHdpdGhpbiB0aGUgQ0lQU08gb3B0aW9uLCBzdWNoIGFzIHRoZSBET0kgaWRlbnRpZmllciwgaXMgbm90CityZWNvZ25pemVkIHRoZSBJUCBkYXRhZ3JhbSBpcyBkaXNjYXJkZWQgYW5kIGFuIElDTVAgInBhcmFtZXRlciBwcm9ibGVtIgorKHR5cGUgMTIpIGlzIGdlbmVyYXRlZCBhbmQgcmV0dXJuZWQuICBUaGUgSUNNUCBjb2RlIGZpZWxkIGlzIHNldCB0byAiYmFkCitwYXJhbWV0ZXIiIChjb2RlIDApIGFuZCB0aGUgcG9pbnRlciBpcyBzZXQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBDSVBTTyBmaWVsZAordGhhdCBpcyB1bnJlY29nbml6ZWQuCisKK0lmIHRoZSBjb250ZW50cyBvZiB0aGUgQ0lQU08gYXJlIHZhbGlkIGJ1dCB0aGUgc2VjdXJpdHkgbGFiZWwgaXMKK291dHNpZGUgb2YgdGhlIGNvbmZpZ3VyZWQgaG9zdCBvciBwb3J0IGxhYmVsIHJhbmdlLCB0aGUgZGF0YWdyYW0gaXMKK2Rpc2NhcmRlZCBhbmQgYW4gSUNNUCAiZGVzdGluYXRpb24gdW5yZWFjaGFibGUiICh0eXBlIDMpIGlzIGdlbmVyYXRlZAorYW5kIHJldHVybmVkLiAgVGhlIGNvZGUgZmllbGQgb2YgdGhlIElDTVAgaXMgc2V0IHRvICJjb21tdW5pY2F0aW9uIHdpdGgKK2Rlc3RpbmF0aW9uIG5ldHdvcmsgYWRtaW5pc3RyYXRpdmVseSBwcm9oaWJpdGVkIiAoY29kZSA5KSBvciB0bworCisKKworSW50ZXJuZXQgRHJhZnQsIEV4cGlyZXMgMTUgSmFuIDkzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1BBR0UgOV0KKworCisKK0NJUFNPIElOVEVSTkVUIERSQUZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiBKdWx5LCAxOTkyCisKKworCisiY29tbXVuaWNhdGlvbiB3aXRoIGRlc3RpbmF0aW9uIGhvc3QgYWRtaW5pc3RyYXRpdmVseSBwcm9oaWJpdGVkIgorKGNvZGUgMTApLiAgVGhlIHZhbHVlIG9mIHRoZSBjb2RlIGZpZWxkIHVzZWQgaXMgZGVwZW5kZW50IHVwb24gd2hldGhlcgordGhlIG9yaWdpbmF0b3Igb2YgdGhlIElDTVAgbWVzc2FnZSBpcyBhY3RpbmcgYXMgYSBDSVBTTyBob3N0IG9yIGEgQ0lQU08KK2dhdGV3YXkuICBUaGUgcmVjaXBpZW50IG9mIHRoZSBJQ01QIG1lc3NhZ2UgTVVTVCBiZSBhYmxlIHRvIGhhbmRsZSBlaXRoZXIKK3ZhbHVlLiAgVGhlIHNhbWUgcHJvY2VkdXJlIGlzIHBlcmZvcm1lZCBpZiBhIENJUFNPIGNhbiBub3QgYmUgYWRkZWQgdG8gYW4KK0lQIHBhY2tldCBiZWNhdXNlIGl0IGlzIHRvbyBsYXJnZSB0byBmaXQgaW4gdGhlIElQIG9wdGlvbnMgYXJlYS4KKworSWYgdGhlIGVycm9yIGlzIHRyaWdnZXJlZCBieSByZWNlaXB0IG9mIGFuIElDTVAgbWVzc2FnZSwgdGhlIG1lc3NhZ2UKK2lzIGRpc2NhcmRlZCBhbmQgbm8gcmVzcG9uc2UgaXMgcGVybWl0dGVkIChjb25zaXN0ZW50IHdpdGggZ2VuZXJhbCBJQ01QCitwcm9jZXNzaW5nIHJ1bGVzKS4KKworCis1LjEuMSAgICBVbnJlY29nbml6ZWQgdGFnIHR5cGVzCisKK1RoZSBkZWZhdWx0IGNvbmRpdGlvbiBmb3IgYW55IENJUFNPIGltcGxlbWVudGF0aW9uIGlzIHRoYXQgYW4KK3VucmVjb2duaXplZCB0YWcgdHlwZSBNVVNUIGJlIHRyZWF0ZWQgYXMgYSAicGFyYW1ldGVyIHByb2JsZW0iIGFuZAoraGFuZGxlZCBhcyBkZXNjcmliZWQgaW4gc2VjdGlvbiA0LjEuICBBIENJUFNPIGltcGxlbWVudGF0aW9uIE1BWSBhbGxvdwordGhlIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHRvIGlkZW50aWZ5IHRhZyB0eXBlcyB0aGF0IG1heSBzYWZlbHkgYmUKK2lnbm9yZWQuICBUaGlzIGNhcGFiaWxpdHkgaXMgYW4gYWxsb3dhYmxlIGVuaGFuY2VtZW50LCBub3QgYQorcmVxdWlyZW1lbnQuCisKKworNS4xLjIgICAgVW5sYWJlbGVkIFBhY2tldHMKKworQSBuZXR3b3JrIHBvcnQgbWF5IGJlIGNvbmZpZ3VyZWQgdG8gbm90IHJlcXVpcmUgYSBDSVBTTyBsYWJlbCBmb3IgYWxsCitpbmNvbWluZyAgZGF0YWdyYW1zLiAgRm9yIHRoaXMgY29uZmlndXJhdGlvbiBhIENJUFNPIGxhYmVsIG11c3QgYmUKK2Fzc2lnbmVkIHRvIHRoYXQgbmV0d29yayBwb3J0IGFuZCBhc3NvY2lhdGVkIHdpdGggYWxsIHVubGFiZWxlZCBJUAorZGF0YWdyYW1zLiAgVGhpcyBjYXBhYmlsaXR5IG1pZ2h0IGJlIHVzZWQgZm9yIHNpbmdsZSBsZXZlbCBuZXR3b3JrcyBvcgorbmV0d29ya3MgdGhhdCBoYXZlIENJUFNPIGFuZCBub24tQ0lQU08gaG9zdHMgYW5kIHRoZSBub24tQ0lQU08gaG9zdHMKK2FsbCBvcGVyYXRlIGF0IHRoZSBzYW1lIGxhYmVsLgorCitJZiBhIENJUFNPIG9wdGlvbiBpcyByZXF1aXJlZCBhbmQgbm9uZSBpcyBmb3VuZCwgdGhlIGRhdGFncmFtIGlzCitkaXNjYXJkZWQgYW5kIGFuIElDTVAgInBhcmFtZXRlciBwcm9ibGVtIiAodHlwZSAxMikgaXMgZ2VuZXJhdGVkIGFuZAorcmV0dXJuZWQgdG8gdGhlIG9yaWdpbmF0b3Igb2YgdGhlIGRhdGFncmFtLiAgVGhlIGNvZGUgZmllbGQgb2YgdGhlIElDTVAKK2lzIHNldCB0byAib3B0aW9uIG1pc3NpbmciIChjb2RlIDEpIGFuZCB0aGUgSUNNUCBwb2ludGVyIGlzIHNldCB0byAxMzQKKyh0aGUgdmFsdWUgb2YgdGhlIG9wdGlvbiB0eXBlIGZvciB0aGUgbWlzc2luZyBDSVBTTyBvcHRpb24pLgorCisKKzUuMiAgICBPdXRwdXQgUHJvY2VkdXJlcworCitBIENJUFNPIG9wdGlvbiBNVVNUIGFwcGVhciBvbmx5IG9uY2UgaW4gYSBkYXRhZ3JhbS4gIE9ubHkgb25lIHRhZyB0eXBlCitmcm9tIHRoZSBNQUMgU2Vuc2l0aXZpdHkgY2xhc3MgTUFZIGJlIGluY2x1ZGVkIGluIGEgQ0lQU08gb3B0aW9uLiAgR2l2ZW4KK3RoZSBjdXJyZW50IHNldCBvZiBkZWZpbmVkIHRhZyB0eXBlcywgdGhpcyBtZWFucyB0aGF0IENJUFNPIGxhYmVscyBhdAorZmlyc3Qgd2lsbCBjb250YWluIG9ubHkgb25lIHRhZy4KKworQWxsIGRhdGFncmFtcyBsZWF2aW5nIGEgQ0lQU08gc3lzdGVtIE1VU1QgbWVldCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbjoKKworICAgICAgICBQT1JUX0xBQkVMX01JTiA8PSBDSVBTTyBsYWJlbCA8PSBQT1JUX0xBQkVMX01BWAorCitJZiB0aGlzIGNvbmRpdGlvbiBpcyBub3Qgc2F0aXNmaWVkIHRoZSBkYXRhZ3JhbSBNVVNUIGJlIGRpc2NhcmRlZC4KK0lmIHRoZSBDSVBTTyBzeXN0ZW0gb25seSBzdXBwb3J0cyBvbmUgcG9ydCwgdGhlIEhPU1RfTEFCRUxfTUlOIGFuZCB0aGUKK0hPU1RfTEFCRUxfTUFYIHBhcmFtZXRlcnMgTUFZIGJlIHN1YnN0aXR1dGVkIGZvciB0aGUgUE9SVCBwYXJhbWV0ZXJzIGluCit0aGUgYWJvdmUgY29uZGl0aW9uLgorCitUaGUgRE9JIGlkZW50aWZpZXIgdG8gYmUgdXNlZCBmb3IgYWxsIG91dGdvaW5nIGRhdGFncmFtcyBpcyBjb25maWd1cmVkIGJ5CisKKworCitJbnRlcm5ldCBEcmFmdCwgRXhwaXJlcyAxNSBKYW4gOTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbUEFHRSAxMF0KKworCisKK0NJUFNPIElOVEVSTkVUIERSQUZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiBKdWx5LCAxOTkyCisKKworCit0aGUgYWRtaW5pc3RyYXRvci4gIElmIHBvcnQgbGV2ZWwgRE9JIGlkZW50aWZpZXIgYXNzaWdubWVudCBpcyB1c2VkLCB0aGVuCit0aGUgUE9SVF9ET0kgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgTVVTVCBjb250YWluIHRoZSBET0kgaWRlbnRpZmllciB0bwordXNlLiAgSWYgbmV0d29yayBsZXZlbCBET0kgYXNzaWdubWVudCBpcyB1c2VkLCB0aGVuIHRoZSBORVRfRE9JIHBhcmFtZXRlcgorTVVTVCBjb250YWluIHRoZSBET0kgaWRlbnRpZmllciB0byB1c2UuICBBbmQgaWYgaG9zdCBsZXZlbCBET0kgYXNzaWdubWVudAoraXMgZW1wbG95ZWQsIHRoZW4gdGhlIEhPU1RfRE9JIHBhcmFtZXRlciBNVVNUIGNvbnRhaW4gdGhlIERPSSBpZGVudGlmaWVyCit0byB1c2UuICBBIENJUFNPIGltcGxlbWVudGF0aW9uIG5lZWQgb25seSBzdXBwb3J0IG9uZSBsZXZlbCBvZiBET0kKK2Fzc2lnbm1lbnQuCisKKworNS4zICAgIERPSSBQcm9jZXNzaW5nIFJlcXVpcmVtZW50cworCitBIENJUFNPIGltcGxlbWVudGF0aW9uIE1VU1Qgc3VwcG9ydCBhdCBsZWFzdCBvbmUgRE9JIGFuZCBTSE9VTEQgc3VwcG9ydAorbXVsdGlwbGUgRE9Jcy4gIFN5c3RlbSBhbmQgbmV0d29yayBhZG1pbmlzdHJhdG9ycyBhcmUgY2F1dGlvbmVkIHRvCitlbnN1cmUgdGhhdCBhdCBsZWFzdCBvbmUgRE9JIGlzIGNvbW1vbiB3aXRoaW4gYW4gSVAgbmV0d29yayB0byBhbGxvdyBmb3IKK2Jyb2FkY2FzdGluZyBvZiBJUCBkYXRhZ3JhbXMuCisKK0NJUFNPIGdhdGV3YXlzIE1VU1QgYmUgY2FwYWJsZSBvZiB0cmFuc2xhdGluZyBhIENJUFNPIG9wdGlvbiBmcm9tIG9uZQorRE9JIHRvIGFub3RoZXIgd2hlbiBmb3J3YXJkaW5nIGRhdGFncmFtcyBiZXR3ZWVuIG5ldHdvcmtzLiAgRm9yCitlZmZpY2llbmN5IHB1cnBvc2VzIHRoaXMgY2FwYWJpbGl0eSBpcyBvbmx5IGEgZGVzaXJlZCBmZWF0dXJlIGZvciBDSVBTTworcm91dGVycy4KKworCis1LjQgICAgTGFiZWwgb2YgSUNNUCBNZXNzYWdlcworCitUaGUgQ0lQU08gbGFiZWwgdG8gYmUgdXNlZCBvbiBhbGwgb3V0Z29pbmcgSUNNUCBtZXNzYWdlcyBNVVNUIGJlIGVxdWl2YWxlbnQKK3RvIHRoZSBsYWJlbCBvZiB0aGUgZGF0YWdyYW0gdGhhdCBjYXVzZWQgdGhlIElDTVAgbWVzc2FnZS4gIElmIHRoZSBJQ01QIHdhcworZ2VuZXJhdGVkIGR1ZSB0byBhIHByb2JsZW0gYXNzb2NpYXRlZCB3aXRoIHRoZSBvcmlnaW5hbCBDSVBTTyBsYWJlbCB0aGVuIHRoZQorZm9sbG93aW5nIHJlc3BvbnNlcyBhcmUgYWxsb3dlZDoKKworICBhLiAgVXNlIHRoZSBDSVBTTyBsYWJlbCBvZiB0aGUgb3JpZ2luYWwgSVAgZGF0YWdyYW0KKyAgYi4gIERyb3AgdGhlIG9yaWdpbmFsIGRhdGFncmFtIHdpdGggbm8gcmV0dXJuIG1lc3NhZ2UgZ2VuZXJhdGVkCisKK0luIG1vc3QgY2FzZXMgdGhlc2Ugb3B0aW9ucyB3aWxsIGhhdmUgdGhlIHNhbWUgZWZmZWN0LiAgSWYgeW91IGNhbiBub3QKK2ludGVycHJldCB0aGUgbGFiZWwgb3IgaWYgaXQgaXMgb3V0c2lkZSB0aGUgbGFiZWwgcmFuZ2Ugb2YgeW91ciBob3N0IG9yCitpbnRlcmZhY2UgdGhlbiBhbiBJQ01QIG1lc3NhZ2Ugd2l0aCB0aGUgc2FtZSBsYWJlbCB3aWxsIHByb2JhYmx5IG5vdCBiZQorYWJsZSB0byBleGl0IHRoZSBzeXN0ZW0uCisKKworNi4gICAgQXNzaWdubWVudCBvZiBET0kgSWRlbnRpZmllciBOdW1iZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9CisKK1JlcXVlc3RzIGZvciBhc3NpZ25tZW50IG9mIGEgRE9JIGlkZW50aWZpZXIgbnVtYmVyIHNob3VsZCBiZSBhZGRyZXNzZWQgdG8KK3RoZSBJbnRlcm5ldCBBc3NpZ25lZCBOdW1iZXJzIEF1dGhvcml0eSAoSUFOQSkuCisKKworNy4gICAgQWNrbm93bGVkZ2VtZW50cworCitNdWNoIG9mIHRoZSBtYXRlcmlhbCBpbiB0aGlzIFJGQyBpcyBiYXNlZCBvbiAoYW5kIGNvcGllZCBmcm9tKSB3b3JrCitkb25lIGJ5IEdhcnkgV2luaWdlciBvZiBTdW4gTWljcm9zeXN0ZW1zIGFuZCBwdWJsaXNoZWQgYXMgQ29tbWVyY2lhbAorSVAgU2VjdXJpdHkgT3B0aW9uIGF0IHRoZSBJTlRFUk9QIDg5LCBDb21tZXJjaWFsIElQU08gV29ya3Nob3AuCisKKworOC4gICAgQXV0aG9yJ3MgQWRkcmVzcworCitUbyBzdWJtaXQgbWFpbCBmb3IgZGlzdHJpYnV0aW9uIHRvIG1lbWJlcnMgb2YgdGhlIElFVEYgQ0lQU08gV29ya2luZworR3JvdXAsIHNlbmQgbWFpbCB0bzogY2lwc29Ad2RsMS53ZGwubG9yYWwuY29tLgorCisKKworSW50ZXJuZXQgRHJhZnQsIEV4cGlyZXMgMTUgSmFuIDkzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1BBR0UgMTFdCisKKworCitDSVBTTyBJTlRFUk5FVCBEUkFGVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYgSnVseSwgMTk5MgorCisKKworCitUbyBiZSBhZGRlZCB0byBvciBkZWxldGVkIGZyb20gdGhpcyBkaXN0cmlidXRpb24sIHNlbmQgbWFpbCB0bzoKK2NpcHNvLXJlcXVlc3RAd2RsMS53ZGwubG9yYWwuY29tLgorCisKKzkuICAgIFJlZmVyZW5jZXMKKworUkZDIDEwMzgsICJEcmFmdCBSZXZpc2VkIElQIFNlY3VyaXR5IE9wdGlvbiIsIE0uIFN0LiBKb2hucywgSUVURiwgSmFudWFyeQorMTk4OC4KKworUkZDIDExMDgsICJVLlMuIERlcGFydG1lbnQgb2YgRGVmZW5zZSBTZWN1cml0eSBPcHRpb25zCitmb3IgdGhlIEludGVybmV0IFByb3RvY29sIiwgU3RlcGhlbiBLZW50LCBJQUIsIDEgTWFyY2gsIDE5OTEuCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKK0ludGVybmV0IERyYWZ0LCBFeHBpcmVzIDE1IEphbiA5MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtQQUdFIDEyXQorCisKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXRsYWJlbC9pbnRyb2R1Y3Rpb24udHh0IGIvRG9jdW1lbnRhdGlvbi9uZXRsYWJlbC9pbnRyb2R1Y3Rpb24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlY2Q4ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldGxhYmVsL2ludHJvZHVjdGlvbi50eHQKQEAgLTAsMCArMSw0NiBAQAorTmV0TGFiZWwgSW50cm9kdWN0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1BhdWwgTW9vcmUsIHBhdWwubW9vcmVAaHAuY29tCisKK0F1Z3VzdCAyLCAyMDA2CisKKyAqIE92ZXJ2aWV3CisKK05ldExhYmVsIGlzIGEgbWVjaGFuaXNtIHdoaWNoIGNhbiBiZSB1c2VkIGJ5IGtlcm5lbCBzZWN1cml0eSBtb2R1bGVzIHRvIGF0dGFjaAorc2VjdXJpdHkgYXR0cmlidXRlcyB0byBvdXRnb2luZyBuZXR3b3JrIHBhY2tldHMgZ2VuZXJhdGVkIGZyb20gdXNlciBzcGFjZQorYXBwbGljYXRpb25zIGFuZCByZWFkIHNlY3VyaXR5IGF0dHJpYnV0ZXMgZnJvbSBpbmNvbWluZyBuZXR3b3JrIHBhY2tldHMuICBJdAoraXMgY29tcG9zZWQgb2YgdGhyZWUgbWFpbiBjb21wb25lbnRzLCB0aGUgcHJvdG9jb2wgZW5naW5lcywgdGhlIGNvbW11bmljYXRpb24KK2xheWVyLCBhbmQgdGhlIGtlcm5lbCBzZWN1cml0eSBtb2R1bGUgQVBJLgorCisgKiBQcm90b2NvbCBFbmdpbmVzCisKK1RoZSBwcm90b2NvbCBlbmdpbmVzIGFyZSByZXNwb25zaWJsZSBmb3IgYm90aCBhcHBseWluZyBhbmQgcmV0cmlldmluZyB0aGUKK25ldHdvcmsgcGFja2V0J3Mgc2VjdXJpdHkgYXR0cmlidXRlcy4gIElmIGFueSB0cmFuc2xhdGlvbiBiZXR3ZWVuIHRoZSBuZXR3b3JrCitzZWN1cml0eSBhdHRyaWJ1dGVzIGFuZCB0aG9zZSBvbiB0aGUgaG9zdCBhcmUgcmVxdWlyZWQgdGhlbiB0aGUgcHJvdG9jb2wKK2VuZ2luZSB3aWxsIGhhbmRsZSB0aG9zZSB0YXNrcyBhcyB3ZWxsLiAgT3RoZXIga2VybmVsIHN1YnN5c3RlbXMgc2hvdWxkCityZWZyYWluIGZyb20gY2FsbGluZyB0aGUgcHJvdG9jb2wgZW5naW5lcyBkaXJlY3RseSwgaW5zdGVhZCB0aGV5IHNob3VsZCB1c2UKK3RoZSBOZXRMYWJlbCBrZXJuZWwgc2VjdXJpdHkgbW9kdWxlIEFQSSBkZXNjcmliZWQgYmVsb3cuCisKK0RldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGVhY2ggTmV0TGFiZWwgcHJvdG9jb2wgZW5naW5lIGNhbiBiZSBmb3VuZCBpbiB0aGlzCitkaXJlY3RvcnksIGNvbnN1bHQgJzAwLUlOREVYJyBmb3IgZmlsZW5hbWVzLgorCisgKiBDb21tdW5pY2F0aW9uIExheWVyCisKK1RoZSBjb21tdW5pY2F0aW9uIGxheWVyIGV4aXN0cyB0byBhbGxvdyBOZXRMYWJlbCBjb25maWd1cmF0aW9uIGFuZCBtb25pdG9yaW5nCitmcm9tIHVzZXIgc3BhY2UuICBUaGUgTmV0TGFiZWwgY29tbXVuaWNhdGlvbiBsYXllciB1c2VzIGEgbWVzc2FnZSBiYXNlZAorcHJvdG9jb2wgYnVpbHQgb24gdG9wIG9mIHRoZSBHZW5lcmljIE5FVExJTksgdHJhbnNwb3J0IG1lY2hhbmlzbS4gIFRoZSBleGFjdAorZm9ybWF0dGluZyBvZiB0aGVzZSBOZXRMYWJlbCBtZXNzYWdlcyBhcyB3ZWxsIGFzIHRoZSBHZW5lcmljIE5FVExJTksgZmFtaWx5CituYW1lcyBjYW4gYmUgZm91bmQgaW4gdGhlICduZXQvbmV0bGFiZWwvJyBkaXJlY3RvcnkgYXMgY29tbWVudHMgaW4gdGhlCitoZWFkZXIgZmlsZXMgYXMgd2VsbCBhcyBpbiAnaW5jbHVkZS9uZXQvbmV0bGFiZWwuaCcuCisKKyAqIFNlY3VyaXR5IE1vZHVsZSBBUEkKKworVGhlIHB1cnBvc2Ugb2YgdGhlIE5ldExhYmVsIHNlY3VyaXR5IG1vZHVsZSBBUEkgaXMgdG8gcHJvdmlkZSBhIHByb3RvY29sCitpbmRlcGVuZGVudCBpbnRlcmZhY2UgdG8gdGhlIHVuZGVybHlpbmcgTmV0TGFiZWwgcHJvdG9jb2wgZW5naW5lcy4gIEluIGFkZGl0aW9uCit0byBwcm90b2NvbCBpbmRlcGVuZGVuY2UsIHRoZSBzZWN1cml0eSBtb2R1bGUgQVBJIGlzIGRlc2lnbmVkIHRvIGJlIGNvbXBsZXRlbHkKK0xTTSBpbmRlcGVuZGVudCB3aGljaCBzaG91bGQgYWxsb3cgbXVsdGlwbGUgTFNNcyB0byBsZXZlcmFnZSB0aGUgc2FtZSBjb2RlCitiYXNlLgorCitEZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgTmV0TGFiZWwgc2VjdXJpdHkgbW9kdWxlIEFQSSBjYW4gYmUgZm91bmQgaW4gdGhlCisnaW5jbHVkZS9uZXQvbmV0bGFiZWwuaCcgaGVhZGVyIGZpbGUgYXMgd2VsbCBhcyB0aGUgJ2xzbV9pbnRlcmZhY2UudHh0JyBmaWxlCitmb3VuZCBpbiB0aGlzIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0bGFiZWwvbHNtX2ludGVyZmFjZS50eHQgYi9Eb2N1bWVudGF0aW9uL25ldGxhYmVsL2xzbV9pbnRlcmZhY2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzOGM3NGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldGxhYmVsL2xzbV9pbnRlcmZhY2UudHh0CkBAIC0wLDAgKzEsNDcgQEAKK05ldExhYmVsIExpbnV4IFNlY3VyaXR5IE1vZHVsZSBJbnRlcmZhY2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUGF1bCBNb29yZSwgcGF1bC5tb29yZUBocC5jb20KKworTWF5IDE3LCAyMDA2CisKKyAqIE92ZXJ2aWV3CisKK05ldExhYmVsIGlzIGEgbWVjaGFuaXNtIHdoaWNoIGNhbiBzZXQgYW5kIHJldHJpZXZlIHNlY3VyaXR5IGF0dHJpYnV0ZXMgZnJvbQorbmV0d29yayBwYWNrZXRzLiAgSXQgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSBMU00gZGV2ZWxvcGVycyB3aG8gd2FudCB0byBtYWtlCit1c2Ugb2YgYSBjb21tb24gY29kZSBiYXNlIGZvciBzZXZlcmFsIGRpZmZlcmVudCBwYWNrZXQgbGFiZWxpbmcgcHJvdG9jb2xzLgorVGhlIE5ldExhYmVsIHNlY3VyaXR5IG1vZHVsZSBBUEkgaXMgZGVmaW5lZCBpbiAnaW5jbHVkZS9uZXQvbmV0bGFiZWwuaCcgYnV0IGEKK2JyaWVmIG92ZXJ2aWV3IGlzIGdpdmVuIGJlbG93LgorCisgKiBOZXRMYWJlbCBTZWN1cml0eSBBdHRyaWJ1dGVzCisKK1NpbmNlIE5ldExhYmVsIHN1cHBvcnRzIG11bHRpcGxlIGRpZmZlcmVudCBwYWNrZXQgbGFiZWxpbmcgcHJvdG9jb2xzIGFuZCBMU01zCitpdCB1c2VzIHRoZSBjb25jZXB0IG9mIHNlY3VyaXR5IGF0dHJpYnV0ZXMgdG8gcmVmZXIgdG8gdGhlIHBhY2tldCdzIHNlY3VyaXR5CitsYWJlbHMuICBUaGUgTmV0TGFiZWwgc2VjdXJpdHkgYXR0cmlidXRlcyBhcmUgZGVmaW5lZCBieSB0aGUKKyduZXRsYmxfbHNtX3NlY2F0dHInIHN0cnVjdHVyZSBpbiB0aGUgTmV0TGFiZWwgaGVhZGVyIGZpbGUuICBJbnRlcm5hbGx5IHRoZQorTmV0TGFiZWwgc3Vic3lzdGVtIGNvbnZlcnRzIHRoZSBzZWN1cml0eSBhdHRyaWJ1dGVzIHRvIGFuZCBmcm9tIHRoZSBjb3JyZWN0Citsb3ctbGV2ZWwgcGFja2V0IGxhYmVsIGRlcGVuZGluZyBvbiB0aGUgTmV0TGFiZWwgYnVpbGQgdGltZSBhbmQgcnVuIHRpbWUKK2NvbmZpZ3VyYXRpb24uICBJdCBpcyB1cCB0byB0aGUgTFNNIGRldmVsb3BlciB0byB0cmFuc2xhdGUgdGhlIE5ldExhYmVsCitzZWN1cml0eSBhdHRyaWJ1dGVzIGludG8gd2hhdGV2ZXIgc2VjdXJpdHkgaWRlbnRpZmllcnMgYXJlIGluIHVzZSBmb3IgdGhlaXIKK3BhcnRpY3VsYXIgTFNNLgorCisgKiBOZXRMYWJlbCBMU00gUHJvdG9jb2wgT3BlcmF0aW9ucworCitUaGVzZSBhcmUgdGhlIGZ1bmN0aW9ucyB3aGljaCBhbGxvdyB0aGUgTFNNIGRldmVsb3BlciB0byBtYW5pcHVsYXRlIHRoZSBsYWJlbHMKK29uIG91dGdvaW5nIHBhY2tldHMgYXMgd2VsbCBhcyByZWFkIHRoZSBsYWJlbHMgb24gaW5jb21pbmcgcGFja2V0cy4gIEZ1bmN0aW9ucworZXhpc3QgdG8gb3BlcmF0ZSBib3RoIG9uIHNvY2tldHMgYXMgd2VsbCBhcyB0aGUgc2tfYnVmZnMgZGlyZWN0bHkuICBUaGVzZSBoaWdoCitsZXZlbCBmdW5jdGlvbnMgYXJlIHRyYW5zbGF0ZWQgaW50byBsb3cgbGV2ZWwgcHJvdG9jb2wgb3BlcmF0aW9ucyBiYXNlZCBvbiBob3cKK3RoZSBhZG1pbmlzdHJhdG9yIGhhcyBjb25maWd1cmVkIHRoZSBOZXRMYWJlbCBzdWJzeXN0ZW0uCisKKyAqIE5ldExhYmVsIExhYmVsIE1hcHBpbmcgQ2FjaGUgT3BlcmF0aW9ucworCitEZXBlbmRpbmcgb24gdGhlIGV4YWN0IGNvbmZpZ3VyYXRpb24sIHRyYW5zbGF0aW9uIGJldHdlZW4gdGhlIG5ldHdvcmsgcGFja2V0CitsYWJlbCBhbmQgdGhlIGludGVybmFsIExTTSBzZWN1cml0eSBpZGVudGlmaWVyIGNhbiBiZSB0aW1lIGNvbnN1bWluZy4gIFRoZQorTmV0TGFiZWwgbGFiZWwgbWFwcGluZyBjYWNoZSBpcyBhIGNhY2hpbmcgbWVjaGFuaXNtIHdoaWNoIGNhbiBiZSB1c2VkIHRvCitzaWRlc3RlcCBtdWNoIG9mIHRoaXMgb3ZlcmhlYWQgb25jZSBhIG1hcHBpbmcgaGFzIGJlZW4gZXN0YWJsaXNoZWQuICBPbmNlIHRoZQorTFNNIGhhcyByZWNlaXZlZCBhIHBhY2tldCwgdXNlZCBOZXRMYWJlbCB0byBkZWNvZGUgaXRzIHNlY3VyaXR5IGF0dHJpYnV0ZXMsCithbmQgdHJhbnNsYXRlZCB0aGUgc2VjdXJpdHkgYXR0cmlidXRlcyBpbnRvIGEgTFNNIGludGVybmFsIGlkZW50aWZpZXIgdGhlIExTTQorY2FuIHVzZSB0aGUgTmV0TGFiZWwgY2FjaGluZyBmdW5jdGlvbnMgdG8gYXNzb2NpYXRlIHRoZSBMU00gaW50ZXJuYWwKK2lkZW50aWZpZXIgd2l0aCB0aGUgbmV0d29yayBwYWNrZXQncyBsYWJlbC4gIFRoaXMgbWVhbnMgdGhhdCBpbiB0aGUgZnV0dXJlCit3aGVuIGEgaW5jb21pbmcgcGFja2V0IG1hdGNoZXMgYSBjYWNoZWQgdmFsdWUgbm90IG9ubHkgYXJlIHRoZSBpbnRlcm5hbAorTmV0TGFiZWwgdHJhbnNsYXRpb24gbWVjaGFuaXNtcyBieXBhc3NlZCBidXQgdGhlIExTTSB0cmFuc2xhdGlvbiBtZWNoYW5pc21zIGFyZQorYnlwYXNzZWQgYXMgd2VsbCB3aGljaCBzaG91bGQgcmVzdWx0IGluIGEgc2lnbmlmaWNhbnQgcmVkdWN0aW9uIGluIG92ZXJoZWFkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nLzAwLUlOREVYIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nLzAwLUlOREVYCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmMjdhMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvMDAtSU5ERVgKQEAgLTAsMCArMSwyMzggQEAKKzAwLUlOREVYCisJLSB0aGlzIGZpbGUKKzNjNTA5LnR4dAorCS0gaW5mb3JtYXRpb24gb24gdGhlIDNDb20gRXRoZXJsaW5rIElJSSBTZXJpZXMgRXRoZXJuZXQgY2FyZHMuCis2cGFjay50eHQKKwktIGluZm8gb24gdGhlIDZwYWNrIHByb3RvY29sLCBhbiBhbHRlcm5hdGl2ZSB0byBLSVNTIGZvciBBWC4yNQorTElDRU5TRS5xbGEzeHh4CisJLSBHUEx2MiBmb3IgUUxvZ2ljIExpbnV4IE5ldHdvcmtpbmcgSEJBIERyaXZlcgorTElDRU5TRS5xbGdlCisJLSBHUEx2MiBmb3IgUUxvZ2ljIExpbnV4IHFsZ2UgTklDIERyaXZlcgorTElDRU5TRS5xbGNuaWMKKwktIEdQTHYyIGZvciBRTG9naWMgTGludXggcWxjbmljIE5JQyBEcml2ZXIKK01ha2VmaWxlCisJLSBNYWtlZmlsZSBmb3IgZG9jc3JjLgorUExJUC50eHQKKwktIFBMSVA6IFRoZSBQYXJhbGxlbCBMaW5lIEludGVybmV0IFByb3RvY29sIGRldmljZSBkcml2ZXIKK1JFQURNRS5pcHcyMTAwCisJLSBSRUFETUUgZm9yIHRoZSBJbnRlbCBQUk8vV2lyZWxlc3MgMjEwMCBkcml2ZXIuCitSRUFETUUuaXB3MjIwMAorCS0gUkVBRE1FIGZvciB0aGUgSW50ZWwgUFJPL1dpcmVsZXNzIDI5MTVBQkcgYW5kIDIyMDBCRyBkcml2ZXIuCitSRUFETUUuc2IxMDAwCisJLSBpbmZvIG9uIEdlbmVyYWwgSW5zdHJ1bWVudC9OZXh0TGV2ZWwgU1VSRmJvYXJkMTAwMCBjYWJsZSBtb2RlbS4KK2FsaWFzLnR4dAorCS0gaW5mbyBvbiB1c2luZyBhbGlhcyBuZXR3b3JrIGRldmljZXMuCithbHRlcmFfdHNlLnR4dAorCS0gQWx0ZXJhIFRyaXBsZS1TcGVlZCBFdGhlcm5ldCBjb250cm9sbGVyLgorYXJjbmV0LWhhcmR3YXJlLnR4dAorCS0gdG9ucyBvZiBpbmZvIG9uIEFSQ25ldCwgaHVicywganVtcGVyIHNldHRpbmdzIGZvciBBUkNuZXQgY2FyZHMsIGV0Yy4KK2FyY25ldC50eHQKKwktIGluZm8gb24gdGhlIHVzaW5nIHRoZSBBUkNuZXQgZHJpdmVyIGl0c2VsZi4KK2F0bS50eHQKKwktIGluZm8gb24gd2hlcmUgdG8gZ2V0IEFUTSBwcm9ncmFtcyBhbmQgc3VwcG9ydCBmb3IgTGludXguCitheDI1LnR4dAorCS0gaW5mbyBvbiB1c2luZyBBWC4yNSBhbmQgTkVUL1JPTSBjb2RlIGZvciBMaW51eAorYmF0bWFuLWFkdi50eHQKKwktIEIuQS5ULk0uQS5OIHJvdXRpbmcgcHJvdG9jb2wgb24gdG9wIG9mIGxheWVyIDIgRXRoZXJuZXQgRnJhbWVzLgorYmF5Y29tLnR4dAorCS0gaW5mbyBvbiB0aGUgZHJpdmVyIGZvciBCYXljb20gc3R5bGUgYW1hdGV1ciByYWRpbyBtb2RlbXMKK2JvbmRpbmcudHh0CisJLSBMaW51eCBFdGhlcm5ldCBCb25kaW5nIERyaXZlciBIT1dUTzogbGluayBhZ2dyZWdhdGlvbiBpbiBMaW51eC4KK2JyaWRnZS50eHQKKwktIHdoZXJlIHRvIGdldCB1c2VyIHNwYWNlIHByb2dyYW1zIGZvciBldGhlcm5ldCBicmlkZ2luZyB3aXRoIExpbnV4LgorY2FuLnR4dAorCS0gZG9jdW1lbnRhdGlvbiBvbiBDQU4gcHJvdG9jb2wgZmFtaWx5LgorY2RjX21iaW0udHh0CisJLSAzRy9MVEUgVVNCIG1vZGVtIChNb2JpbGUgQnJvYWRiYW5kIEludGVyZmFjZSBNb2RlbCkKK2NvcHMudHh0CisJLSBpbmZvIG9uIHRoZSBDT1BTIExvY2FsVGFsayBMaW51eCBkcml2ZXIKK2NzODl4MC50eHQKKwktIHRoZSBDcnlzdGFsIExBTiAoQ1M4OTAwLzIwLWJhc2VkKSBFdGhlcm5ldCBJU0EgYWRhcHRlciBkcml2ZXIKK2N4YWNydS50eHQKKwktIENvbmV4YW50IEFjY2Vzc1J1bm5lciBVU0IgQURTTCBNb2RlbQorY3hhY3J1LWNmLnB5CisJLSBDb25leGFudCBBY2Nlc3NSdW5uZXIgVVNCIEFEU0wgTW9kZW0gY29uZmlndXJhdGlvbiBmaWxlIHBhcnNlcgorY3hnYi50eHQKKwktIFJlbGVhc2UgTm90ZXMgZm9yIHRoZSBDaGVsc2lvIE4yMTAgTGludXggZGV2aWNlIGRyaXZlci4KK2RjY3AudHh0CisJLSB0aGUgRGF0YWdyYW0gQ29uZ2VzdGlvbiBDb250cm9sIFByb3RvY29sIChEQ0NQKSAoUkZDIDQzNDAuLjQyKS4KK2RjdGNwLnR4dAorCS0gRGF0YUNlbnRlciBUQ1AgY29uZ2VzdGlvbiBjb250cm9sCitkZTR4NS50eHQKKwktIHRoZSBEaWdpdGFsIEV0aGVyV09SS1MgREU0Pz8gYW5kIERFNT8/IFBDSSBFdGhlcm5ldCBkcml2ZXIKK2RlY25ldC50eHQKKwktIGluZm8gb24gdXNpbmcgdGhlIERFQ25ldCBuZXR3b3JraW5nIGxheWVyIGluIExpbnV4LgorZGwyay50eHQKKwktIFJFQURNRSBmb3IgRC1MaW5rIERMMjAwMC1iYXNlZCBHaWdhYml0IEV0aGVybmV0IEFkYXB0ZXJzIChkbDJrLmtvKS4KK2RtOTAwMC50eHQKKwktIFJFQURNRSBmb3IgdGhlIFNpbXRlYyBETTkwMDAgTmV0d29yayBkcml2ZXIuCitkbWZlLnR4dAorCS0gaW5mbyBvbiB0aGUgRGF2aWNvbSBETTkxMDIoQSkvRE05MTMyL0RNOTgwMSBmYXN0IGV0aGVybmV0IGRyaXZlci4KK2Ruc19yZXNvbHZlci50eHQKKwktIFRoZSBETlMgcmVzb2x2ZXIgbW9kdWxlIGFsbG93cyBrZXJuZWwgc2VydmllcyB0byBtYWtlIEROUyBxdWVyaWVzLgorZHJpdmVyLnR4dAorCS0gU29mdG5ldCBkcml2ZXIgaXNzdWVzLgorZTEwMC50eHQKKwktIGluZm8gb24gSW50ZWwncyBFdGhlckV4cHJlc3MgUFJPLzEwMCBsaW5lIG9mIDEwLzEwMCBib2FyZHMKK2UxMDAwLnR4dAorCS0gaW5mbyBvbiBJbnRlbCdzIEUxMDAwIGxpbmUgb2YgZ2lnYWJpdCBldGhlcm5ldCBib2FyZHMKK2UxMDAwZS50eHQKKwktIFJFQURNRSBmb3IgdGhlIEludGVsIEdpZ2FiaXQgRXRoZXJuZXQgRHJpdmVyIChlMTAwMGUpLgorZXFsLnR4dAorCS0gc2VyaWFsIElQIGxvYWQgYmFsYW5jaW5nCitmaWJfdHJpZS50eHQKKwktIExldmVsIENvbXByZXNzZWQgVHJpZSAoTEMtdHJpZSkgbm90ZXM6IGEgc3RydWN0dXJlIGZvciByb3V0aW5nLgorZmlsdGVyLnR4dAorCS0gTGludXggU29ja2V0IEZpbHRlcmluZworZm9yZTIwMGUudHh0CisJLSBGT1JFIFN5c3RlbXMgUENBLTIwMEUvU0JBLTIwMEUgQVRNIE5JQyBkcml2ZXIgaW5mby4KK2ZyYW1lcmVsYXkudHh0CisJLSBpbmZvIG9uIHVzaW5nIEZyYW1lIFJlbGF5L0RhdGEgTGluayBDb25uZWN0aW9uIElkZW50aWZpZXIgKERMQ0kpLgorZ2VuX3N0YXRzLnR4dAorCS0gR2VuZXJpYyBuZXR3b3JraW5nIHN0YXRpc3RpY3MgZm9yIG5ldGxpbmsgdXNlcnMuCitnZW5lcmljLWhkbGMudHh0CisJLSBUaGUgZ2VuZXJpYyBIaWdoIExldmVsIERhdGEgTGluayBDb250cm9sIChIRExDKSBsYXllci4KK2dlbmVyaWNfbmV0bGluay50eHQKKwktIGluZm8gb24gR2VuZXJpYyBOZXRsaW5rCitnaWFuZmFyLnR4dAorCS0gR2lhbmZhciBFdGhlcm5ldCBEcml2ZXIuCitpNDBlLnR4dAorCS0gUkVBRE1FIGZvciB0aGUgSW50ZWwgRXRoZXJuZXQgQ29udHJvbGxlciBYTDcxMCBEcml2ZXIgKGk0MGUpLgoraTQwZXZmLnR4dAorCS0gU2hvcnQgbm90ZSBvbiB0aGUgRHJpdmVyIGZvciB0aGUgSW50ZWwoUikgWEw3MTAgWDcxMCBWaXJ0dWFsIEZ1bmN0aW9uCitpZWVlODAyMTU0LnR4dAorCS0gTGludXggSUVFRSA4MDIuMTUuNCBpbXBsZW1lbnRhdGlvbiwgQVBJIGFuZCBkcml2ZXJzCitpZ2IudHh0CisJLSBSRUFETUUgZm9yIHRoZSBJbnRlbCBHaWdhYml0IEV0aGVybmV0IERyaXZlciAoaWdiKS4KK2lnYnZmLnR4dAorCS0gUkVBRE1FIGZvciB0aGUgSW50ZWwgR2lnYWJpdCBFdGhlcm5ldCBEcml2ZXIgKGlnYnZmKS4KK2lwLXN5c2N0bC50eHQKKwktIC9wcm9jL3N5cy9uZXQvaXB2NC8qIHZhcmlhYmxlcworaXBfZHluYWRkci50eHQKKwktIElQIGR5bmFtaWMgYWRkcmVzcyBoYWNrIGUuZy4gZm9yIGF1dG8tZGlhbHVwIGxpbmtzCitpcGRkcC50eHQKKwktIEFwcGxlVGFsay1JUCBEZWNhcHN1bGF0aW9uIGFuZCBBcHBsZVRhbGstSVAgRW5jYXBzdWxhdGlvbgoraXBoYXNlLnR4dAorCS0gSW50ZXJwaGFzZSBQQ0kgQVRNIChpKUNoaXAgSUEgTGludXggZHJpdmVyIGluZm8uCitpcHNlYy50eHQKKwktIE5vdGUgb24gbm90IGNvbXByZXNzaW5nIElQU2VjIHBheWxvYWQgYW5kIHJlc3VsdGluZyBmYWlsZWQgcG9saWN5IGNoZWNrLgoraXB2Ni50eHQKKwktIE9wdGlvbnMgdG8gdGhlIGlwdjYga2VybmVsIG1vZHVsZS4KK2lwdnMtc3lzY3RsLnR4dAorCS0gUGVyLWlub2RlIGV4cGxhbmF0aW9uIG9mIHRoZSAvcHJvYy9zeXMvbmV0L2lwdjQvdnMgaW50ZXJmYWNlLgoraXJkYS50eHQKKwktIHdoZXJlIHRvIGdldCBJckRBIChpbmZyYXJlZCkgdXRpbGl0aWVzIGFuZCBpbmZvIGZvciBMaW51eC4KK2l4Z2IudHh0CisJLSBSRUFETUUgZm9yIHRoZSBJbnRlbCAxMCBHaWdhYml0IEV0aGVybmV0IERyaXZlciAoaXhnYikuCitpeGdiZS50eHQKKwktIFJFQURNRSBmb3IgdGhlIEludGVsIDEwIEdpZ2FiaXQgRXRoZXJuZXQgRHJpdmVyIChpeGdiZSkuCitpeGdiZXZmLnR4dAorCS0gUkVBRE1FIGZvciB0aGUgSW50ZWwgVmlydHVhbCBGdW5jdGlvbiAoVkYpIERyaXZlciAoaXhnYmV2ZikuCitsMnRwLnR4dAorCS0gVXNlciBndWlkZSB0byB0aGUgTDJUUCB0dW5uZWwgcHJvdG9jb2wuCitsYXBiLW1vZHVsZS50eHQKKwktIHByb2dyYW1taW5nIGluZm9ybWF0aW9uIG9mIHRoZSBMQVBCIG1vZHVsZS4KK2x0cGMudHh0CisJLSB0aGUgQXBwbGUgb3IgRmFyYWxsb24gTG9jYWxUYWxrIFBDIGNhcmQgZHJpdmVyCittYWM4MDIxMS1hdXRoLWFzc29jLWRlYXV0aC50eHQKKwktIGF1dGhlbnRpY2F0aW9uIGFuZCBhc3NvY2lhdGlvbiAvIGRlYXV0aC1kaXNhc3NvYyB3aXRoIG1heDgwMjExCittYWM4MDIxMS1pbmplY3Rpb24udHh0CisJLSBIT1dUTyB1c2UgcGFja2V0IGluamVjdGlvbiB3aXRoIG1hYzgwMjExCittdWx0aXF1ZXVlLnR4dAorCS0gSE9XVE8gZm9yIG11bHRpcXVldWUgbmV0d29yayBkZXZpY2Ugc3VwcG9ydC4KK25ldGNvbnNvbGUudHh0CisJLSBUaGUgbmV0d29yayBjb25zb2xlIG1vZHVsZSBuZXRjb25zb2xlLmtvOiBjb25maWd1cmF0aW9uIGFuZCBub3Rlcy4KK25ldGRldi1GQVEudHh0CisJLSBGQVEgZGVzY3JpYmluZyBob3cgdG8gc3VibWl0IG5ldCBjaGFuZ2VzIHRvIG5ldGRldiBtYWlsaW5nIGxpc3QuCituZXRkZXYtZmVhdHVyZXMudHh0CisJLSBOZXR3b3JrIGludGVyZmFjZSBmZWF0dXJlcyBBUEkgZGVzY3JpcHRpb24uCituZXRkZXZpY2VzLnR4dAorCS0gaW5mbyBvbiBuZXR3b3JrIGRldmljZSBkcml2ZXIgZnVuY3Rpb25zIGV4cG9ydGVkIHRvIHRoZSBrZXJuZWwuCituZXRpZi1tc2cudHh0CisJLSBEZXNpZ24gb2YgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIG1lc3NhZ2UgbGV2ZWwgc2V0dGluZyAoTkVUSUZfTVNHXyopLgorbmV0bGlua19tbWFwLnR4dAorCS0gbWVtb3J5IG1hcHBlZCBJL08gd2l0aCBuZXRsaW5rCituZl9jb25udHJhY2stc3lzY3RsLnR4dAorCS0gbGlzdCBvZiBuZXRmaWx0ZXItc3lzY3RsIGtub2JzLgorbmZjLnR4dAorCS0gVGhlIExpbnV4IE5lYXIgRmllbGQgQ29tbXVuaWNhdGlvbiAoTkZTKSBzdWJzeXN0ZW0uCitvcGVudnN3aXRjaC50eHQKKwktIE9wZW4gdlN3aXRjaCBkZXZlbG9wZXIgZG9jdW1lbnRhdGlvbi4KK29wZXJzdGF0ZXMudHh0CisJLSBPdmVydmlldyBvZiBuZXR3b3JrIGludGVyZmFjZSBvcGVyYXRpb25hbCBzdGF0ZXMuCitwYWNrZXRfbW1hcC50eHQKKwktIFVzZXIgZ3VpZGUgdG8gbWVtb3J5IG1hcHBlZCBwYWNrZXQgc29ja2V0IHJpbmdzIChQQUNLRVRfW1JUXVhfUklORykuCitwaG9uZXQudHh0CisJLSBUaGUgUGhvbmV0IHBhY2tldCBwcm90b2NvbCB1c2VkIGluIE5va2lhIGNlbGx1bGFyIG1vZGVtcy4KK3BoeS50eHQKKwktIFRoZSBQSFkgYWJzdHJhY3Rpb24gbGF5ZXIuCitwa3RnZW4udHh0CisJLSBVc2VyIGd1aWRlIHRvIHRoZSBrZXJuZWwgcGFja2V0IGdlbmVyYXRvciAocGt0Z2VuLmtvKS4KK3BvbGljeS1yb3V0aW5nLnR4dAorCS0gSVAgcG9saWN5LWJhc2VkIHJvdXRpbmcKK3BwcF9nZW5lcmljLnR4dAorCS0gSW5mb3JtYXRpb24gYWJvdXQgdGhlIGdlbmVyaWMgUFBQIGRyaXZlci4KK3Byb2NfbmV0X3RjcC50eHQKKwktIFBlciBpbm9kZSBvdmVydmlldyBvZiB0aGUgL3Byb2MvbmV0L3RjcCBhbmQgL3Byb2MvbmV0L3RjcDYgaW50ZXJmYWNlcy4KK3JhZGlvdGFwLWhlYWRlcnMudHh0CisJLSBCYWNrZ3JvdW5kIG9uIHJhZGlvdGFwIGhlYWRlcnMuCityYXlfY3MudHh0CisJLSBSYXlsaW5rIFdpcmVsZXNzIExBTiBjYXJkIGRyaXZlciBpbmZvLgorcmRzLnR4dAorCS0gQmFja2dyb3VuZCBvbiB0aGUgcmVsaWFibGUsIG9yZGVyZWQgZGF0YWdyYW0gZGVsaXZlcnkgbWV0aG9kIFJEUy4KK3JlZ3VsYXRvcnkudHh0CisJLSBPdmVydmlldyBvZiB0aGUgTGludXggd2lyZWxlc3MgcmVndWxhdG9yeSBpbmZyYXN0cnVjdHVyZS4KK3J4cnBjLnR4dAorCS0gR3VpZGUgdG8gdGhlIFJ4UlBDIHByb3RvY29sLgorczJpby50eHQKKwktIFJlbGVhc2Ugbm90ZXMgZm9yIE5ldGVyaW9uIFhmcmFtZSBJL0lJIDEwR2JFIGRyaXZlci4KK3NjYWxpbmcudHh0CisJLSBFeHBsYW5hdGlvbiBvZiBuZXR3b3JrIHNjYWxpbmcgdGVjaG5pcXVlczogUlNTLCBSUFMsIFJGUywgYVJGUywgWFBTLgorc2N0cC50eHQKKwktIE5vdGVzIG9uIHRoZSBMaW51eCBrZXJuZWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNDVFAgcHJvdG9jb2wuCitzZWNpZC50eHQKKwktIEV4cGxhbmF0aW9uIG9mIHRoZSBzZWNpZCBtZW1iZXIgaW4gZmxvdyBzdHJ1Y3R1cmVzLgorc2tmcC50eHQKKwktIFN5c0tvbm5lY3QgRkRESSAoU0stNXh4eCwgQ29tcGFxIE5ldGVsbGlnZW50KSBkcml2ZXIgaW5mby4KK3NtYzkudHh0CisJLSB0aGUgZHJpdmVyIGZvciBTTUMncyA5MDAwIHNlcmllcyBvZiBFdGhlcm5ldCBjYXJkcworc3BpZGVyX25ldC50eHQKKwktIFJFQURNRSBmb3IgdGhlIFNwaWRlcm5ldCBEcml2ZXIgKGFzIGZvdW5kIGluIFBTMyAvIENlbGwgQkUpLgorc3RtbWFjLnR4dAorCS0gUkVBRE1FIGZvciB0aGUgU1RNaWNybyBTeW5vcHN5cyBFdGhlcm5ldCBkcml2ZXIuCit0Yy1hY3Rpb25zLWVudi1ydWxlcy50eHQKKwktIHJ1bGVzIGZvciB0cmFmZmljIGNvbnRyb2wgKHRjKSBhY3Rpb25zLgordGltZXN0YW1waW5nLnR4dAorCS0gb3ZlcnZpZXcgb2YgbmV0d29yayBwYWNrZXQgdGltZXN0YW1waW5nIHZhcmlhbnRzLgordGNwLnR4dAorCS0gc2hvcnQgYmx1cmIgb24gaG93IFRDUCBvdXRwdXQgdGFrZXMgcGxhY2UuCit0Y3AtdGhpbi50eHQKKwktIGtlcm5lbCB0dW5pbmcgb3B0aW9ucyBmb3IgbG93IHJhdGUgJ3RoaW4nIFRDUCBzdHJlYW1zLgordGVhbS50eHQKKwktIHBvaW50ZXIgdG8gaW5mb3JtYXRpb24gZm9yIGV0aGVybmV0IHRlYW1pbmcgZGV2aWNlcy4KK3RsYW4udHh0CisJLSBUaHVuZGVyTEFOIChDb21wYXEgTmV0ZWxsaWdlbnQgMTAvMTAwLCBPbGljb20gT0MtMnh4eCkgZHJpdmVyIGluZm8uCit0cHJveHkudHh0CisJLSBUcmFuc3BhcmVudCBwcm94eSBzdXBwb3J0IHVzZXIgZ3VpZGUuCit0dW50YXAudHh0CisJLSBUVU4vVEFQIGRldmljZSBkcml2ZXIsIGFsbG93aW5nIHVzZXIgc3BhY2UgUngvVHggb2YgcGFja2V0cy4KK3VkcGxpdGUudHh0CisJLSBVRFAtTGl0ZSBwcm90b2NvbCAoUkZDIDM4MjgpIGludHJvZHVjdGlvbi4KK3ZvcnRleC50eHQKKwktIGluZm8gb24gdXNpbmcgM0NvbSBWb3J0ZXggKDNjNTkwLCAzYzU5MiwgM2M1OTUsIDNjNTk3KSBFdGhlcm5ldCBjYXJkcy4KK3Z4Z2UudHh0CisJLSBSRUFETUUgZm9yIHRoZSBOZXRlcmlvbiBYMzEwMCBQQ0llIFNlcnZlciBBZGFwdGVyLgordnhsYW4udHh0CisJLSBWaXJ0dWFsIGV4dGVuc2libGUgTEFOIG92ZXJ2aWV3Cit4MjUudHh0CisJLSBnZW5lcmFsIGluZm8gb24gWC4yNSBkZXZlbG9wbWVudC4KK3gyNS1pZmFjZS50eHQKKwktIGRlc2NyaXB0aW9uIG9mIHRoZSBYLjI1IFBhY2tldCBMYXllciB0byBMQVBCIGRldmljZSBpbnRlcmZhY2UuCit4ZnJtX3Byb2MudHh0CisJLSBkZXNjcmlwdGlvbiBvZiB0aGUgc3RhdGlzdGljcyBwYWNrYWdlIGZvciBYRlJNLgoreGZybV9zeW5jLnR4dAorCS0gc3luYyBwYXRjaGVzIGZvciBYRlJNIGVuYWJsZSBtaWdyYXRpb24gb2YgYW4gU0EgYmV0d2VlbiBob3N0cy4KK3hmcm1fc3lzY3RsLnR4dAorCS0gZGVzY3JpcHRpb24gb2YgdGhlIFhGUk0gY29uZmlndXJhdGlvbiBvcHRpb25zLgorejg1MzBkcnYudHh0CisJLSBpbmZvIGFib3V0IExpbnV4IGRyaXZlciBmb3IgWjg1MzAgYmFzZWQgSERMQyBjYXJkcyBmb3IgQVguMjUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy8zYzUwOS50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvM2M1MDkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiZjcyMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvM2M1MDkudHh0CkBAIC0wLDAgKzEsMjEzIEBACitMaW51eCBhbmQgdGhlIDNDb20gRXRoZXJMaW5rIElJSSBTZXJpZXMgRXRoZXJjYXJkcyAoZHJpdmVyIHYxLjE4YyBhbmQgaGlnaGVyKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGZpbGUgY29udGFpbnMgdGhlIGluc3RydWN0aW9ucyBhbmQgY2F2ZWF0cyBmb3IgdjEuMThjIGFuZCBoaWdoZXIgdmVyc2lvbnMKK29mIHRoZSAzYzUwOSBkcml2ZXIuIFlvdSBzaG91bGQgbm90IHVzZSB0aGUgZHJpdmVyIHdpdGhvdXQgcmVhZGluZyB0aGlzIGZpbGUuCisKK3JlbGVhc2UgMS4wCisyOCBGZWJydWFyeSAyMDAyCitDdXJyZW50IG1haW50YWluZXIgKGNvcnJlY3Rpb25zIHRvKToKKyAgRGF2aWQgUnVnZ2llcm8gPGpkckBmYXJmYWxsZS5jb20+CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKDApIEludHJvZHVjdGlvbgorCitUaGUgZm9sbG93aW5nIGFyZSBub3RlcyBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlIDNDb20gRXRoZXJMaW5rIElJSSBzZXJpZXMKK2V0aGVyY2FyZHMgaW4gTGludXguIFRoZXNlIGNhcmRzIGFyZSBjb21tb25seSBrbm93biBieSB0aGUgbW9zdCB3aWRlbHktdXNlZAorY2FyZCdzIDNDb20gbW9kZWwgbnVtYmVyLCAzYzUwOS4gVGhleSBhcmUgYWxsIDEwbWIvcyBJU0EtYnVzIGNhcmRzIGFuZCBzaG91bGRuJ3QKK2JlIChidXQgc29tZXRpbWVzIGFyZSkgY29uZnVzZWQgd2l0aCB0aGUgc2ltaWxhcmx5LW51bWJlcmVkIFBDSS1idXMgIjNjOTA1IgorKGFrYSAiVm9ydGV4IiBvciAiQm9vbWVyYW5nIikgc2VyaWVzLiAgS2VybmVsIHN1cHBvcnQgZm9yIHRoZSAzYzUwOSBmYW1pbHkgaXMKK3Byb3ZpZGVkIGJ5IHRoZSBtb2R1bGUgM2M1MDkuYywgd2hpY2ggaGFzIGNvZGUgdG8gc3VwcG9ydCBhbGwgb2YgdGhlIGZvbGxvd2luZworbW9kZWxzOgorCisgIDNjNTA5IChvcmlnaW5hbCBJU0EgY2FyZCkKKyAgM2M1MDlCIChsYXRlciByZXZpc2lvbiBvZiB0aGUgSVNBIGNhcmQ7IHN1cHBvcnRzIGZ1bGwtZHVwbGV4KQorICAzYzU4OSAoUENNQ0lBKQorICAzYzU4OUIgKGxhdGVyIHJldmlzaW9uIG9mIHRoZSAzYzU4OTsgc3VwcG9ydHMgZnVsbC1kdXBsZXgpCisgIDNjNTc5IChFSVNBKQorCitMYXJnZSBwb3J0aW9ucyBvZiB0aGlzIGRvY3VtZW50YXRpb24gd2VyZSBoZWF2aWx5IGJvcnJvd2VkIGZyb20gdGhlIGd1aWRlCit3cml0dGVuIHRoZSBvcmlnaW5hbCBhdXRob3Igb2YgdGhlIDNjNTA5IGRyaXZlciwgRG9uYWxkIEJlY2tlci4gVGhlIG1hc3RlcgorY29weSBvZiB0aGF0IGRvY3VtZW50LCB3aGljaCBjb250YWlucyBub3RlcyBvbiBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgZHJpdmVyLAorY3VycmVudGx5IHJlc2lkZXMgb24gU2N5bGQgd2ViIHNlcnZlcjogaHR0cDovL3d3dy5zY3lsZC5jb20vLgorCisKKygxKSBTcGVjaWFsIERyaXZlciBGZWF0dXJlcworCitPdmVycmlkaW5nIGNhcmQgc2V0dGluZ3MKKworVGhlIGRyaXZlciBhbGxvd3MgYm9vdC0gb3IgbG9hZC10aW1lIG92ZXJyaWRpbmcgb2YgdGhlIGNhcmQncyBkZXRlY3RlZCBJT0FERFIsCitJUlEsIGFuZCB0cmFuc2NlaXZlciBzZXR0aW5ncywgYWx0aG91Z2ggdGhpcyBjYXBhYmlsaXR5IHNob3VsZG4ndCBnZW5lcmFsbHkgYmUKK25lZWRlZCBleGNlcHQgdG8gZW5hYmxlIGZ1bGwtZHVwbGV4IG1vZGUgKHNlZSBiZWxvdykuIEFuIGV4YW1wbGUgb2YgdGhlIHN5bnRheAorZm9yIExJTE8gcGFyYW1ldGVycyBmb3IgZG9pbmcgdGhpczoKKworICAgIGV0aGVyPTEwLDB4MzEwLDMsMHgzYzUwOSxldGgwIAorCitUaGlzIGNvbmZpZ3VyZXMgdGhlIGZpcnN0IGZvdW5kIDNjNTA5IGNhcmQgZm9yIElSUSAxMCwgYmFzZSBJL08gMHgzMTAsIGFuZAordHJhbnNjZWl2ZXIgdHlwZSAzICgxMGJhc2UyKS4gVGhlIGZsYWcgIjB4M2M1MDkiIG11c3QgYmUgc2V0IHRvIGF2b2lkIGNvbmZsaWN0cword2l0aCBvdGhlciBjYXJkIHR5cGVzIHdoZW4gb3ZlcnJpZGluZyB0aGUgSS9PIGFkZHJlc3MuIFdoZW4gdGhlIGRyaXZlciBpcworbG9hZGVkIGFzIGEgbW9kdWxlLCBvbmx5IHRoZSBJUlEgbWF5IGJlIG92ZXJyaWRkZW4uIEZvciBleGFtcGxlLAorc2V0dGluZyB0d28gY2FyZHMgdG8gSVJRMTAgYW5kIElSUTExIGlzIGRvbmUgYnkgdXNpbmcgdGhlIGlycSBtb2R1bGUKK29wdGlvbjoKKworICAgb3B0aW9ucyAzYzUwOSBpcnE9MTAsMTEKKworCisoMikgRnVsbC1kdXBsZXggbW9kZQorCitUaGUgdjEuMThjIGRyaXZlciBhZGRlZCBzdXBwb3J0IGZvciB0aGUgM2M1MDlCJ3MgZnVsbC1kdXBsZXggY2FwYWJpbGl0aWVzLgorSW4gb3JkZXIgdG8gZW5hYmxlIGFuZCBzdWNjZXNzZnVsbHkgdXNlIGZ1bGwtZHVwbGV4IG1vZGUsIHRocmVlIGNvbmRpdGlvbnMKK211c3QgYmUgbWV0OiAKKworKGEpIFlvdSBtdXN0IGhhdmUgYSBFdGhlcmxpbmsgSUlJIGNhcmQgbW9kZWwgd2hvc2UgaGFyZHdhcmUgc3VwcG9ydHMgZnVsbC0KK2R1cGxleCBvcGVyYXRpb25zLiBDdXJyZW50bHksIHRoZSBvbmx5IG1lbWJlcnMgb2YgdGhlIDNjNTA5IGZhbWlseSB0aGF0IGFyZQorcG9zaXRpdmVseSBrbm93biB0byBzdXBwb3J0IGZ1bGwtZHVwbGV4IGFyZSB0aGUgM2M1MDlCIChJU0EgYnVzKSBhbmQgM2M1ODlCCisoUENNQ0lBKSBjYXJkcy4gQ2FyZHMgd2l0aG91dCB0aGUgIkIiIG1vZGVsIGRlc2lnbmF0aW9uIGRvICpub3QqIHN1cHBvcnQKK2Z1bGwtZHVwbGV4IG1vZGU7IHRoZXNlIGluY2x1ZGUgdGhlIG9yaWdpbmFsIDNjNTA5IChubyAiQiIpLCB0aGUgb3JpZ2luYWwKKzNjNTg5LCB0aGUgM2M1MjkgKE1DQSBidXMpLCBhbmQgdGhlIDNjNTc5IChFSVNBIGJ1cykuCisKKyhiKSBZb3UgbXVzdCBiZSB1c2luZyB5b3VyIGNhcmQncyAxMGJhc2VUIHRyYW5zY2VpdmVyIChpLmUuLCB0aGUgUkotNDUKK2Nvbm5lY3RvciksIG5vdCBpdHMgQVVJICh0aGljay1uZXQpIG9yIDEwYmFzZTIgKHRoaW4tbmV0L2NvYXgpIGludGVyZmFjZXMuCitBVUkgYW5kIDEwYmFzZTIgbmV0d29yayBjYWJsaW5nIGlzIHBoeXNpY2FsbHkgaW5jYXBhYmxlIG9mIGZ1bGwtZHVwbGV4CitvcGVyYXRpb24uCisKKyhjKSBNb3N0IGltcG9ydGFudGx5LCB5b3VyIDNjNTA5QiBtdXN0IGJlIGNvbm5lY3RlZCB0byBhIGxpbmsgcGFydG5lciB0aGF0IGlzCitpdHNlbGYgZnVsbC1kdXBsZXggY2FwYWJsZS4gVGhpcyBpcyBhbG1vc3QgY2VydGFpbmx5IG9uZSBvZiB0d28gdGhpbmdzOiBhIGZ1bGwtCitkdXBsZXgtY2FwYWJsZSAgRXRoZXJuZXQgc3dpdGNoICgqbm90KiBhIGh1YiksIG9yIGEgZnVsbC1kdXBsZXgtY2FwYWJsZSBOSUMgb24KK2Fub3RoZXIgc3lzdGVtIHRoYXQncyBjb25uZWN0ZWQgZGlyZWN0bHkgdG8gdGhlIDNjNTA5QiB2aWEgYSBjcm9zc292ZXIgY2FibGUuCisKK0Z1bGwtZHVwbGV4IG1vZGUgY2FuIGJlIGVuYWJsZWQgdXNpbmcgJ2V0aHRvb2wnLgorIAorLy8vLy9FeHRyZW1lbHkgaW1wb3J0YW50IGNhdXRpb24gY29uY2VybmluZyBmdWxsLWR1cGxleCBtb2RlLy8vLy8KK1VuZGVyc3RhbmQgdGhhdCB0aGUgM2M1MDlCJ3MgaGFyZHdhcmUncyBmdWxsLWR1cGxleCBzdXBwb3J0IGlzIG11Y2ggbW9yZQorbGltaXRlZCB0aGFuIHRoYXQgcHJvdmlkZSBieSBtb3JlIG1vZGVybiBuZXR3b3JrIGludGVyZmFjZSBjYXJkcy4gQWx0aG91Z2gKK2F0IHRoZSBwaHlzaWNhbCBsYXllciBvZiB0aGUgbmV0d29yayBpdCBmdWxseSBzdXBwb3J0cyBmdWxsLWR1cGxleCBvcGVyYXRpb24sCit0aGUgY2FyZCB3YXMgZGVzaWduZWQgYmVmb3JlIHRoZSBjdXJyZW50IEV0aGVybmV0IGF1dG8tbmVnb3RpYXRpb24gKE4td2F5KQorc3BlYyB3YXMgd3JpdHRlbi4gVGhpcyBtZWFucyB0aGF0IHRoZSAzYzUwOUIgZmFtaWx5ICoqKmNhbm5vdCBhbmQgd2lsbCBub3QKK2F1dG8tbmVnb3RpYXRlIGEgZnVsbC1kdXBsZXggY29ubmVjdGlvbiB3aXRoIGl0cyBsaW5rIHBhcnRuZXIgdW5kZXIgYW55CitjaXJjdW1zdGFuY2VzLCBubyBtYXR0ZXIgaG93IGl0IGlzIGluaXRpYWxpemVkKioqLiBJZiB0aGUgZnVsbC1kdXBsZXggbW9kZQorb2YgdGhlIDNjNTA5QiBpcyBlbmFibGVkLCBpdHMgbGluayBwYXJ0bmVyIHdpbGwgdmVyeSBsaWtlbHkgbmVlZCB0byBiZQoraW5kZXBlbmRlbnRseSBfZm9yY2VkXyBpbnRvIGZ1bGwtZHVwbGV4IG1vZGUgYXMgd2VsbDsgb3RoZXJ3aXNlIHZhcmlvdXMgbmFzdHkKK2ZhaWx1cmVzIHdpbGwgb2NjdXIgLSBhdCB0aGUgdmVyeSBsZWFzdCwgeW91J2xsIHNlZSBtYXNzaXZlIG51bWJlcnMgb2YgcGFja2V0Citjb2xsaXNpb25zLiBUaGlzIGlzIG9uZSBvZiB2ZXJ5IHJhcmUgY2lyY3Vtc3RhbmNlcyB3aGVyZSBkaXNhYmxpbmcgYXV0by0KK25lZ290aWF0aW9uIGFuZCBmb3JjaW5nIHRoZSBkdXBsZXggbW9kZSBvZiBhIG5ldHdvcmsgaW50ZXJmYWNlIGNhcmQgb3Igc3dpdGNoCit3b3VsZCBldmVyIGJlIG5lY2Vzc2FyeSBvciBkZXNpcmFibGUuCisKKworKDMpIEF2YWlsYWJsZSBUcmFuc2NlaXZlciBUeXBlcworCitGb3IgdmVyc2lvbnMgb2YgdGhlIGRyaXZlciB2MS4xOGMgYW5kIGFib3ZlLCB0aGUgYXZhaWxhYmxlIHRyYW5zY2VpdmVyIHR5cGVzIGFyZToKKyAKKzAgIHRyYW5zY2VpdmVyIHR5cGUgZnJvbSBFRVBST00gY29uZmlnIChub3JtYWxseSAxMGJhc2VUKTsgZm9yY2UgaGFsZi1kdXBsZXgKKzEgIEFVSSAodGhpY2stbmV0IC8gREIxNSBjb25uZWN0b3IpCisyICAodW5kZWZpbmVkKQorMyAgMTBiYXNlMiAodGhpbi1uZXQgPT0gY29heCAvIEJOQyBjb25uZWN0b3IpCis0ICAxMGJhc2VUIChSSi00NSBjb25uZWN0b3IpOyBmb3JjZSBoYWxmLWR1cGxleCBtb2RlCis4ICB0cmFuc2NlaXZlciB0eXBlIGFuZCBkdXBsZXggbW9kZSB0YWtlbiBmcm9tIGNhcmQncyBFRVBST00gY29uZmlnIHNldHRpbmdzCisxMiAxMGJhc2VUIChSSi00NSBjb25uZWN0b3IpOyBmb3JjZSBmdWxsLWR1cGxleCBtb2RlCisKK1ByaW9yIHRvIGRyaXZlciB2ZXJzaW9uIDEuMThjLCBvbmx5IHRyYW5zY2VpdmVyIGNvZGVzIDAtNCB3ZXJlIHN1cHBvcnRlZC4gTm90ZQordGhhdCB0aGUgbmV3IHRyYW5zY2VpdmVyIGNvZGVzIDggYW5kIDEyIGFyZSB0aGUgKm9ubHkqIG9uZXMgdGhhdCB3aWxsIGVuYWJsZQorZnVsbC1kdXBsZXggbW9kZSwgbm8gbWF0dGVyIHdoYXQgdGhlIGNhcmQncyBkZXRlY3RlZCBFRVBST00gc2V0dGluZ3MgbWlnaHQgYmUuCitUaGlzIGluc3VyZWQgdGhhdCBtZXJlbHkgdXBncmFkaW5nIHRoZSBkcml2ZXIgZnJvbSBhbiBlYXJsaWVyIHZlcnNpb24gd291bGQKK25ldmVyIGF1dG9tYXRpY2FsbHkgZW5hYmxlIGZ1bGwtZHVwbGV4IG1vZGUgaW4gYW4gZXhpc3RpbmcgaW5zdGFsbGF0aW9uOworaXQgbXVzdCBhbHdheXMgYmUgZXhwbGljaXRseSBlbmFibGVkIHZpYSBvbmUgb2YgdGhlc2UgY29kZSBpbiBvcmRlciB0byBiZQorYWN0aXZhdGVkLgorCitUaGUgdHJhbnNjZWl2ZXIgdHlwZSBjYW4gYmUgY2hhbmdlZCB1c2luZyAnZXRodG9vbCcuCisgIAorCisoNGEpIEludGVycHJldGF0aW9uIG9mIGVycm9yIG1lc3NhZ2VzIGFuZCBjb21tb24gcHJvYmxlbXMKKworRXJyb3IgTWVzc2FnZXMKKworZXRoMDogSW5maW5pdGUgbG9vcCBpbiBpbnRlcnJ1cHQsIHN0YXR1cyAyMDExLiAKK1RoZXNlIGFyZSAibW9zdGx5IGhhcm1sZXNzIiBtZXNzYWdlIGluZGljYXRpbmcgdGhhdCB0aGUgZHJpdmVyIGhhZCB0b28gbXVjaAord29yayBkdXJpbmcgdGhhdCBpbnRlcnJ1cHQgY3ljbGUuIFdpdGggYSBzdGF0dXMgb2YgMHgyMDExIHlvdSBhcmUgcmVjZWl2aW5nCitwYWNrZXRzIGZhc3RlciB0aGFuIHRoZXkgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgY2FyZC4gVGhpcyBzaG91bGQgYmUgcmFyZQorb3IgaW1wb3NzaWJsZSBpbiBub3JtYWwgb3BlcmF0aW9uLiBQb3NzaWJsZSBjYXVzZXMgb2YgdGhpcyBlcnJvciByZXBvcnQgYXJlOgorIAorICAgLSBhICJncmVlbiIgbW9kZSBlbmFibGVkIHRoYXQgc2xvd3MgdGhlIHByb2Nlc3NvciBkb3duIHdoZW4gdGhlcmUgaXMgbm8KKyAgICAga2V5Ym9hcmQgYWN0aXZpdHkuIAorCisgICAtIHNvbWUgb3RoZXIgZGV2aWNlIG9yIGRldmljZSBkcml2ZXIgaG9nZ2luZyB0aGUgYnVzIG9yIGRpc2FibGluZyBpbnRlcnJ1cHRzLgorICAgICBDaGVjayAvcHJvYy9pbnRlcnJ1cHRzIGZvciBleGNlc3NpdmUgaW50ZXJydXB0IGNvdW50cy4gVGhlIHRpbWVyIHRpY2sKKyAgICAgaW50ZXJydXB0IHNob3VsZCBhbHdheXMgYmUgaW5jcmVtZW50aW5nIGZhc3RlciB0aGFuIHRoZSBvdGhlcnMuIAorCitObyByZWNlaXZlZCBwYWNrZXRzIAorSWYgYSAzYzUwOSwgM2M1NjIgb3IgM2M1ODkgY2FuIHN1Y2Nlc3NmdWxseSB0cmFuc21pdCBwYWNrZXRzLCBidXQgbmV2ZXIKK3JlY2VpdmVzIHBhY2tldHMgKGFzIHJlcG9ydGVkIGJ5IC9wcm9jL25ldC9kZXYgb3IgJ2lmY29uZmlnJykgeW91IGxpa2VseQoraGF2ZSBhbiBpbnRlcnJ1cHQgbGluZSBwcm9ibGVtLiBDaGVjayAvcHJvYy9pbnRlcnJ1cHRzIHRvIHZlcmlmeSB0aGF0IHRoZQorY2FyZCBpcyBhY3R1YWxseSBnZW5lcmF0aW5nIGludGVycnVwdHMuIElmIHRoZSBpbnRlcnJ1cHQgY291bnQgaXMgbm90CitpbmNyZWFzaW5nIHlvdSBsaWtlbHkgaGF2ZSBhIHBoeXNpY2FsIGNvbmZsaWN0IHdpdGggdHdvIGRldmljZXMgdHJ5aW5nIHRvCit1c2UgdGhlIHNhbWUgSVNBIElSUSBsaW5lLiBUaGUgY29tbW9uIGNvbmZsaWN0IGlzIHdpdGggYSBzb3VuZCBjYXJkIG9uIElSUTEwCitvciBJUlE1LCBhbmQgdGhlIGVhc2llc3Qgc29sdXRpb24gaXMgdG8gbW92ZSB0aGUgM2M1MDkgdG8gYSBkaWZmZXJlbnQKK2ludGVycnVwdCBsaW5lLiBJZiB0aGUgZGV2aWNlIGlzIHJlY2VpdmluZyBwYWNrZXRzIGJ1dCAncGluZycgZG9lc24ndCB3b3JrLAoreW91IGhhdmUgYSByb3V0aW5nIHByb2JsZW0uCisKK1R4IENhcnJpZXIgRXJyb3JzIFJlcG9ydGVkIGluIC9wcm9jL25ldC9kZXYgCitJZiBhbiBFdGhlckxpbmsgSUlJIGFwcGVhcnMgdG8gdHJhbnNtaXQgcGFja2V0cywgYnV0IHRoZSAiVHggY2FycmllciBlcnJvcnMiCitmaWVsZCBpbiAvcHJvYy9uZXQvZGV2IGluY3JlbWVudHMgYXMgcXVpY2tseSBhcyB0aGUgVHggcGFja2V0IGNvdW50LCB5b3UKK2xpa2VseSBoYXZlIGFuIHVudGVybWluYXRlZCBuZXR3b3JrIG9yIHRoZSBpbmNvcnJlY3QgbWVkaWEgdHJhbnNjZWl2ZXIgc2VsZWN0ZWQuIAorCiszYzUwOUIgY2FyZCBpcyBub3QgZGV0ZWN0ZWQgb24gbWFjaGluZXMgd2l0aCBhbiBJU0EgUG5QIEJJT1MuIAorV2hpbGUgdGhlIHVwZGF0ZWQgZHJpdmVyIHdvcmtzIHdpdGggbW9zdCBQblAgQklPUyBwcm9ncmFtcywgaXQgZG9lcyBub3Qgd29yaword2l0aCBhbGwuIFRoaXMgY2FuIGJlIGZpeGVkIGJ5IGRpc2FibGluZyBQblAgc3VwcG9ydCB1c2luZyB0aGUgM0NvbS1zdXBwbGllZAorc2V0dXAgcHJvZ3JhbS4gCisKKzNjNTA5IGNhcmQgaXMgbm90IGRldGVjdGVkIG9uIG92ZXJjbG9ja2VkIG1hY2hpbmVzIAorSW5jcmVhc2UgdGhlIGRlbGF5IHRpbWUgaW4gaWRfcmVhZF9lZXByb20oKSBmcm9tIHRoZSBjdXJyZW50IHZhbHVlLCA1MDAsCit0byBhbiBhYnN1cmRseSBoaWdoIHZhbHVlLCBzdWNoIGFzIDUwMDAuIAorCisKKyg0YikgRGVjb2RpbmcgU3RhdHVzIGFuZCBFcnJvciBNZXNzYWdlcworCitUaGUgYml0cyBpbiB0aGUgbWFpbiBzdGF0dXMgcmVnaXN0ZXIgYXJlOiAKKwordmFsdWUgCWRlc2NyaXB0aW9uCisweDAxIAlJbnRlcnJ1cHQgbGF0Y2gKKzB4MDIgCVR4IG92ZXJydW4sIG9yIFJ4IHVuZGVycnVuCisweDA0IAlUeCBjb21wbGV0ZQorMHgwOCAJVHggRklGTyByb29tIGF2YWlsYWJsZQorMHgxMCAJQSBjb21wbGV0ZSBSeCBwYWNrZXQgaGFzIGFycml2ZWQKKzB4MjAgCUEgUnggcGFja2V0IGhhcyBzdGFydGVkIHRvIGFycml2ZQorMHg0MCAJVGhlIGRyaXZlciBoYXMgcmVxdWVzdGVkIGFuIGludGVycnVwdAorMHg4MCAJU3RhdGlzdGljcyBjb3VudGVyIG5lYXJseSBmdWxsCisKK1RoZSBiaXRzIGluIHRoZSB0cmFuc21pdCAoVHgpIHN0YXR1cyB3b3JkIGFyZTogCisKK3ZhbHVlIAlkZXNjcmlwdGlvbgorMHgwMiAJT3V0LW9mLXdpbmRvdyBjb2xsaXNpb24uCisweDA0IAlTdGF0dXMgc3RhY2sgb3ZlcmZsb3cgKG5vcm1hbGx5IGltcG9zc2libGUpLgorMHgwOCAJMTYgY29sbGlzaW9ucy4KKzB4MTAgCVR4IHVuZGVycnVuIChub3QgZW5vdWdoIFBDSSBidXMgYmFuZHdpZHRoKS4KKzB4MjAgCVR4IGphYmJlci4KKzB4NDAgCVR4IGludGVycnVwdCByZXF1ZXN0ZWQuCisweDgwIAlTdGF0dXMgaXMgdmFsaWQgKHRoaXMgc2hvdWxkIGFsd2F5cyBiZSBzZXQpLgorCisKK1doZW4gYSB0cmFuc21pdCBlcnJvciBvY2N1cnMgdGhlIGRyaXZlciBwcm9kdWNlcyBhIHN0YXR1cyBtZXNzYWdlIHN1Y2ggYXMgCisKKyAgIGV0aDA6IFRyYW5zbWl0IGVycm9yLCBUeCBzdGF0dXMgcmVnaXN0ZXIgODIKKworVGhlIHR3byB2YWx1ZXMgdHlwaWNhbGx5IHNlZW4gaGVyZSBhcmU6CisKKzB4ODIgCitPdXQgb2Ygd2luZG93IGNvbGxpc2lvbi4gVGhpcyB0eXBpY2FsbHkgb2NjdXJzIHdoZW4gc29tZSBvdGhlciBFdGhlcm5ldAoraG9zdCBpcyBpbmNvcnJlY3RseSBzZXQgdG8gZnVsbCBkdXBsZXggb24gYSBoYWxmIGR1cGxleCBuZXR3b3JrLiAKKworMHg4OCAKKzE2IGNvbGxpc2lvbnMuIFRoaXMgdHlwaWNhbGx5IG9jY3VycyB3aGVuIHRoZSBuZXR3b3JrIGlzIGV4Y2VwdGlvbmFsbHkgYnVzeQorb3Igd2hlbiBhbm90aGVyIGhvc3QgZG9lc24ndCBjb3JyZWN0bHkgYmFjayBvZmYgYWZ0ZXIgYSBjb2xsaXNpb24uIElmIHRoaXMKK2Vycm9yIGlzIG1peGVkIHdpdGggMHg4MiBlcnJvcnMgaXQgaXMgdGhlIHJlc3VsdCBvZiBhIGhvc3QgaW5jb3JyZWN0bHkgc2V0Cit0byBmdWxsIGR1cGxleCAoc2VlIGFib3ZlKS4KKworQm90aCBvZiB0aGVzZSBlcnJvcnMgYXJlIHRoZSByZXN1bHQgb2YgbmV0d29yayBwcm9ibGVtcyB0aGF0IHNob3VsZCBiZQorY29ycmVjdGVkLiBUaGV5IGRvIG5vdCByZXByZXNlbnQgZHJpdmVyIG1hbGZ1bmN0aW9uLgorCisKKyg1KSBSZXZpc2lvbiBoaXN0b3J5ICh0aGlzIGZpbGUpCisKKzI4RmViMDIgdjEuMCAgRFIgICBOZXc7IG1ham9yIHBvcnRpb25zIGJhc2VkIG9uIEJlY2tlciBvcmlnaW5hbCAzYzUwOSBkb2NzCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy82bG93cGFuLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy82bG93cGFuLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2RjN2U5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nLzZsb3dwYW4udHh0CkBAIC0wLDAgKzEsNTAgQEAKKworTmV0ZGV2IHByaXZhdGUgZGF0YXJvb20gZm9yIDZsb3dwYW4gaW50ZXJmYWNlczoKKworQWxsIDZsb3dwYW4gYWJsZSBuZXQgZGV2aWNlcywgbWVhbnMgYWxsIGludGVyZmFjZXMgd2l0aCBBUlBIUkRfNkxPV1BBTiwKK211c3QgaGF2ZSAic3RydWN0IGxvd3Bhbl9wcml2IiBwbGFjZWQgYXQgYmVnaW5uaW5nIG9mIG5ldGRldl9wcml2LgorCitUaGUgcHJpdl9zaXplIG9mIGVhY2ggaW50ZXJmYWNlIHNob3VsZCBiZSBjYWxjdWxhdGUgYnk6CisKKyBkZXYtPnByaXZfc2l6ZSA9IExPV1BBTl9QUklWX1NJWkUoTExfNkxPV1BBTl9QUklWX0RBVEEpOworCitXaGVyZSBMTF9QUklWXzZMT1dQQU5fREFUQSBpcyBzaXplb2YgbGlua2xheWVyIDZsb3dwYW4gcHJpdmF0ZSBkYXRhIHN0cnVjdC4KK1RvIGFjY2VzcyB0aGUgTExfUFJJVl82TE9XUEFOX0RBVEEgc3RydWN0dXJlIHlvdSBjYW4gY2FzdDoKKworIGxvd3Bhbl9wcml2KGRldiktcHJpdjsKKwordG8geW91ciBMTF82TE9XUEFOX1BSSVZfREFUQSBzdHJ1Y3R1cmUuCisKK0JlZm9yZSByZWdpc3RlcmluZyB0aGUgbG93cGFuIG5ldGRldiBpbnRlcmZhY2UgeW91IG11c3QgcnVuOgorCisgbG93cGFuX25ldGRldl9zZXR1cChkZXYsIExPV1BBTl9MTFRZUEVfRk9PQkFSKTsKKword2hlcmVzIExPV1BBTl9MTFRZUEVfRk9PQkFSIGlzIGEgZGVmaW5lIGZvciB5b3VyIDZMb1dQQU4gbGlua2xheWVyIHR5cGUgb2YKK2VudW0gbG93cGFuX2xsdHlwZXMuCisKK0V4YW1wbGUgdG8gZXZhbHVhdGUgdGhlIHByaXZhdGUgdXN1YWxseSB5b3UgY2FuIGRvOgorCitzdGF0aWMgaW5saW5lIHN0dXJjdCBsb3dwYW5fcHJpdl9mb29iYXIgKgorbG93cGFuX2Zvb2Jhcl9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCit7CisJcmV0dXJuIChzdHVyY3QgbG93cGFuX3ByaXZfZm9vYmFyICopbG93cGFuX3ByaXYoZGV2KS0+cHJpdjsKK30KKworc3dpdGNoIChkZXYtPnR5cGUpIHsKK2Nhc2UgQVJQSFJEXzZMT1dQQU46CisJbG93cGFuX3ByaXYgPSBsb3dwYW5fcHJpdihkZXYpOworCS8qIGRvIGdyZWF0IHN0dWZmIHdoaWNoIGlzIEFSUEhSRF82TE9XUEFOIHJlbGF0ZWQgKi8KKwlzd2l0Y2ggKGxvd3Bhbl9wcml2LT5sbHR5cGUpIHsKKwljYXNlIExPV1BBTl9MTFRZUEVfRk9PQkFSOgorCQkvKiBkbyA4MDIuMTUuNCA2TG9XUEFOIGhhbmRsaW5nIGhlcmUgKi8KKwkJbG93cGFuX2Zvb2Jhcl9wcml2KGRldiktPmJhciA9IGZvbzsKKwkJYnJlYWs7CisJLi4uCisJfQorCWJyZWFrOworLi4uCit9CisKK0luIGNhc2Ugb2YgZ2VuZXJpYyA2bG93cGFuIGJyYW5jaCAoIm5ldC82bG93cGFuIikgeW91IGNhbiByZW1vdmUgdGhlIGNoZWNrCitvbiBBUlBIUkRfNkxPV1BBTiwgYmVjYXVzZSB5b3UgY2FuIGJlIHN1cmUgdGhhdCB0aGVzZSBmdW5jdGlvbiBhcmUgY2FsbGVkCitieSBBUlBIUkRfNkxPV1BBTiBpbnRlcmZhY2VzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nLzZwYWNrLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy82cGFjay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYzMzk0MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy82cGFjay50eHQKQEAgLTAsMCArMSwxNzUgQEAKK1RoaXMgaXMgdGhlIDZwYWNrLW1pbmktSE9XVE8sIHdyaXR0ZW4gYnkKKworQW5kcmVhcyBLw7Zuc2dlbiBERzNLUQorSW50ZXJuZXQ6IGFqa0Bjb21uZXRzLnVuaS1icmVtZW4uZGUKK0FNUFItbmV0OiBkZzNrcUBkYjBwcmEuYW1wci5vcmcKK0FYLjI1OiAgICBkZzNrcUBkYjBhY2guI25ydy5kZXUuZXUKKworTGFzdCB1cGRhdGU6IEFwcmlsIDcsIDE5OTgKKworMS4gV2hhdCBpcyA2cGFjaywgYW5kIHdoYXQgYXJlIHRoZSBhZHZhbnRhZ2VzIHRvIEtJU1M/CisKKzZwYWNrIGlzIGEgdHJhbnNtaXNzaW9uIHByb3RvY29sIGZvciBkYXRhIGV4Y2hhbmdlIGJldHdlZW4gdGhlIFBDIGFuZAordGhlIFROQyBvdmVyIGEgc2VyaWFsIGxpbmUuIEl0IGNhbiBiZSB1c2VkIGFzIGFuIGFsdGVybmF0aXZlIHRvIEtJU1MuCisKKzZwYWNrIGhhcyB0d28gbWFqb3IgYWR2YW50YWdlczoKKy0gVGhlIFBDIGlzIGdpdmVuIGZ1bGwgY29udHJvbCBvdmVyIHRoZSByYWRpbworICBjaGFubmVsLiBTcGVjaWFsIGNvbnRyb2wgZGF0YSBpcyBleGNoYW5nZWQgYmV0d2VlbiB0aGUgUEMgYW5kIHRoZSBUTkMgc28KKyAgdGhhdCB0aGUgUEMga25vd3MgYXQgYW55IHRpbWUgaWYgdGhlIFROQyBpcyByZWNlaXZpbmcgZGF0YSwgaWYgYSBUTkMKKyAgYnVmZmVyIHVuZGVycnVuIG9yIG92ZXJydW4gaGFzIG9jY3VycmVkLCBpZiB0aGUgUFRUIGlzCisgIHNldCBhbmQgc28gb24uIFRoaXMgY29udHJvbCBkYXRhIGlzIHByb2Nlc3NlZCBhdCBhIGhpZ2hlciBwcmlvcml0eSB0aGFuCisgIG5vcm1hbCBkYXRhLCBzbyBhIGRhdGEgc3RyZWFtIGNhbiBiZSBpbnRlcnJ1cHRlZCBhdCBhbnkgdGltZSB0byBpc3N1ZSBhbgorICBpbXBvcnRhbnQgZXZlbnQuIFRoaXMgaGVscHMgdG8gaW1wcm92ZSB0aGUgY2hhbm5lbCBhY2Nlc3MgYW5kIHRpbWluZyAKKyAgYWxnb3JpdGhtcyBhcyBldmVyeXRoaW5nIGlzIGNvbXB1dGVkIGluIHRoZSBQQy4gSXQgd291bGQgZXZlbiBiZSBwb3NzaWJsZSAKKyAgdG8gZXhwZXJpbWVudCB3aXRoIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudCBmcm9tIHRoZSBrbm93biBDU01BIGFuZCAKKyAgREFNQSBjaGFubmVsIGFjY2VzcyBtZXRob2RzLgorICBUaGlzIGtpbmQgb2YgcmVhbC10aW1lIGNvbnRyb2wgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgdG8gc3VwcGx5IHNldmVyYWwKKyAgVE5DcyB0aGF0IGFyZSBjb25uZWN0ZWQgYmV0d2VlbiBlYWNoIG90aGVyIGFuZCB0aGUgUEMgYnkgYSBkYWlzeSBjaGFpbgorICAoaG93ZXZlciwgdGhpcyBmZWF0dXJlIGlzIG5vdCBzdXBwb3J0ZWQgeWV0IGJ5IHRoZSBMaW51eCA2cGFjayBkcml2ZXIpLgorCistIEVhY2ggcGFja2V0IHRyYW5zZmVycmVkIG92ZXIgdGhlIHNlcmlhbCBsaW5lIGlzIHN1cHBsaWVkIHdpdGggYSBjaGVja3N1bSwKKyAgc28gaXQgaXMgZWFzeSB0byBkZXRlY3QgZXJyb3JzIGR1ZSB0byBwcm9ibGVtcyBvbiB0aGUgc2VyaWFsIGxpbmUuCisgIFJlY2VpdmVkIHBhY2tldHMgdGhhdCBhcmUgY29ycnVwdCBhcmUgbm90IHBhc3NlZCBvbiB0byB0aGUgQVguMjUgbGF5ZXIuCisgIERhbWFnZWQgcGFja2V0cyB0aGF0IHRoZSBUTkMgaGFzIHJlY2VpdmVkIGZyb20gdGhlIFBDIGFyZSBub3QgdHJhbnNtaXR0ZWQuCisKK01vcmUgZGV0YWlscyBhYm91dCA2cGFjayBhcmUgZGVzY3JpYmVkIGluIHRoZSBmaWxlIDZwYWNrLnBzIHRoYXQgaXMgbG9jYXRlZAoraW4gdGhlIGRvYyBkaXJlY3Rvcnkgb2YgdGhlIEFYLjI1IHV0aWxpdGllcyBwYWNrYWdlLgorCisyLiBXaG8gaGFzIGRldmVsb3BlZCB0aGUgNnBhY2sgcHJvdG9jb2w/CisKK1RoZSA2cGFjayBwcm90b2NvbCBoYXMgYmVlbiBkZXZlbG9wZWQgYnkgRWtraSBQbGljaHQgREY0T1IsIEhlbm5pbmcgUmVjaAorREY5SUMgYW5kIEd1bnRlciBKb3N0IERLN1dKLiBBIGRyaXZlciBmb3IgNnBhY2ssIHdyaXR0ZW4gYnkgR3VudGVyIEpvc3QgYW5kCitNYXR0aGlhcyBXZWx3YXJza3kgREcyRkVGLCBjb21lcyBhbG9uZyB3aXRoIHRoZSBQQyB2ZXJzaW9uIG9mIEZsZXhOZXQuCitUaGV5IGhhdmUgYWxzbyB3cml0dGVuIGEgZmlybXdhcmUgZm9yIFROQ3MgdG8gcGVyZm9ybSB0aGUgNnBhY2sKK3Byb3RvY29sIChzZWUgc2VjdGlvbiA0IGJlbG93KS4KKworMy4gV2hlcmUgY2FuIEkgZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiA2cGFjayBmb3IgTGludVg/CisKK0F0IHRoZSBtb21lbnQsIHRoZSA2cGFjayBzdHVmZiBjYW4gb2J0YWluZWQgdmlhIGFub255bW91cyBmdHAgZnJvbQorZGIwYm0uYXV0b21hdGlvbi5maC1hYWNoZW4uZGUuIEluIHRoZSBkaXJlY3RvcnkgL2luY29taW5nL2RnM2txLAordGhlcmUgaXMgYSBmaWxlIG5hbWVkIDZwYWNrLnRnei4KKworNC4gUHJlcGFyaW5nIHRoZSBUTkMgZm9yIDZwYWNrIG9wZXJhdGlvbgorCitUbyBiZSBhYmxlIHRvIHVzZSA2cGFjaywgYSBzcGVjaWFsIGZpcm13YXJlIGZvciB0aGUgVE5DIGlzIG5lZWRlZC4gVGhlIEVQUk9NCitvZiBhIG5ld2x5IGJvdWdodCBUTkMgZG9lcyBub3QgY29udGFpbiA2cGFjaywgc28geW91IHdpbGwgaGF2ZSB0bworcHJvZ3JhbSBhbiBFUFJPTSB5b3Vyc2VsZi4gVGhlIGltYWdlIGZpbGUgZm9yIDZwYWNrIEVQUk9NcyBzaG91bGQgYmUKK2F2YWlsYWJsZSBvbiBhbnkgcGFja2V0IHJhZGlvIGJveCB3aGVyZSBQQy9GbGV4TmV0IGNhbiBiZSBmb3VuZC4gVGhlIG5hbWUgb2YKK3RoZSBmaWxlIGlzIDZwYWNrLmJpbi4gVGhpcyBmaWxlIGlzIGNvcHlyaWdodGVkIGFuZCBtYWludGFpbmVkIGJ5IHRoZSBGbGV4TmV0Cit0ZWFtLiBJdCBjYW4gYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIGxpY2Vuc2UgdGhhdCBjb21lcyBhbG9uZword2l0aCBQQy9GbGV4TmV0LiBQbGVhc2UgZG8gbm90IGFzayBtZSBhYm91dCB0aGUgaW50ZXJuYWxzIG9mIHRoaXMgZmlsZSBhcyBJCitkb24ndCBrbm93IGFueXRoaW5nIGFib3V0IGl0LiBJIHVzZWQgYSB0ZXh0dWFsIGRlc2NyaXB0aW9uIG9mIHRoZSA2cGFjaworcHJvdG9jb2wgdG8gcHJvZ3JhbSB0aGUgTGludXggZHJpdmVyLgorCitUTkNzIGNvbnRhaW4gYSA2NGtCeXRlIEVQUk9NLCB0aGUgbG93ZXIgaGFsZiBvZiB3aGljaCBpcyB1c2VkIGZvcgordGhlIGZpcm13YXJlL0tJU1MuIFRoZSB1cHBlciBoYWxmIGlzIGVpdGhlciBlbXB0eSBvciBpcyBzb21ldGltZXMKK3Byb2dyYW1tZWQgd2l0aCBzb2Z0d2FyZSBjYWxsZWQgVEFQUi4gSW4gdGhlIGxhdHRlciBjYXNlLCB0aGUgVE5DCitpcyBzdXBwbGllZCB3aXRoIGEgRElQIHN3aXRjaCBzbyB5b3UgY2FuIGVhc2lseSBjaGFuZ2UgYmV0d2VlbiB0aGUKK3R3byBzeXN0ZW1zLiBXaGVuIHByb2dyYW1taW5nIGEgbmV3IEVQUk9NLCBvbmUgb2YgdGhlIHN5c3RlbXMgaXMgcmVwbGFjZWQKK2J5IDZwYWNrLiBJdCBpcyB1c2VmdWwgdG8gcmVwbGFjZSBUQVBSLCBhcyB0aGlzIHNvZnR3YXJlIGlzIHJhcmVseSB1c2VkCitub3dhZGF5cy4gSWYgeW91ciBUTkMgaXMgbm90IGVxdWlwcGVkIHdpdGggdGhlIHN3aXRjaCBtZW50aW9uZWQgYWJvdmUsIHlvdQorY2FuIGJ1aWxkIGluIG9uZSB5b3Vyc2VsZiB0aGF0IHN3aXRjaGVzIG92ZXIgdGhlIGhpZ2hlc3QgYWRkcmVzcyBwaW4KK29mIHRoZSBFUFJPTSBiZXR3ZWVuIEhJR0ggYW5kIExPVyBsZXZlbC4gQWZ0ZXIgaGF2aW5nIGluc2VydGVkIHRoZSBuZXcgRVBST00KK2FuZCBzd2l0Y2hlZCB0byA2cGFjaywgYXBwbHkgcG93ZXIgdG8gdGhlIFROQyBmb3IgYSBmaXJzdCB0ZXN0LiBUaGUgY29ubmVjdAorYW5kIHRoZSBzdGF0dXMgTEVEIGFyZSBsaXQgZm9yIGFib3V0IGEgc2Vjb25kIGlmIHRoZSBmaXJtd2FyZSBpbml0aWFsaXNlcwordGhlIFROQyBjb3JyZWN0bHkuCisKKzUuIEJ1aWxkaW5nIGFuZCBpbnN0YWxsaW5nIHRoZSA2cGFjayBkcml2ZXIKKworVGhlIGRyaXZlciBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCBrZXJuZWwgdmVyc2lvbiAyLjEuOTAuIFVzZSB3aXRoIG9sZGVyCitrZXJuZWxzIG1heSBsZWFkIHRvIGEgY29tcGlsYXRpb24gZXJyb3IgYmVjYXVzZSB0aGUgaW50ZXJmYWNlIHRvIGEga2VybmVsCitmdW5jdGlvbiBoYXMgYmVlbiBjaGFuZ2VkIGluIHRoZSAyLjEuOHgga2VybmVscy4KKworSG93IHRvIHR1cm4gb24gNnBhY2sgc3VwcG9ydDoKKworLSBJbiB0aGUgbGludXgga2VybmVsIGNvbmZpZ3VyYXRpb24gcHJvZ3JhbSwgc2VsZWN0IHRoZSBjb2RlIG1hdHVyaXR5IGxldmVsCisgIG9wdGlvbnMgbWVudSBhbmQgdHVybiBvbiB0aGUgcHJvbXB0aW5nIGZvciBkZXZlbG9wbWVudCBkcml2ZXJzLgorCistIFNlbGVjdCB0aGUgYW1hdGV1ciByYWRpbyBzdXBwb3J0IG1lbnUgYW5kIHR1cm4gb24gdGhlIHNlcmlhbCBwb3J0IDZwYWNrCisgIGRyaXZlci4KKworLSBDb21waWxlIGFuZCBpbnN0YWxsIHRoZSBrZXJuZWwgYW5kIHRoZSBtb2R1bGVzLgorCitUbyB1c2UgdGhlIGRyaXZlciwgdGhlIGtpc3NhdHRhY2ggcHJvZ3JhbSBkZWxpdmVyZWQgd2l0aCB0aGUgQVguMjUgdXRpbGl0aWVzCitoYXMgdG8gYmUgbW9kaWZpZWQuCisKKy0gRG8gYSBjZCB0byB0aGUgZGlyZWN0b3J5IHRoYXQgaG9sZHMgdGhlIGtpc3NhdHRhY2ggc291cmNlcy4gRWRpdCB0aGUKKyAga2lzc2F0dGFjaC5jIGZpbGUuIEF0IHRoZSB0b3AsIGluc2VydCB0aGUgZm9sbG93aW5nIGxpbmVzOgorCisgICNpZm5kZWYgTl82UEFDSworICAjZGVmaW5lIE5fNlBBQ0sgKE5fQVgyNSsxKQorICAjZW5kaWYKKworICBUaGVuIGZpbmQgdGhlIGxpbmUKKyAgIAorICBpbnQgZGlzYyA9IE5fQVgyNTsKKworICBhbmQgcmVwbGFjZSBOX0FYMjUgYnkgTl82UEFDSy4KKworLSBSZWNvbXBpbGUga2lzc2F0dGFjaC4gUmVuYW1lIGl0IHRvIHNwYXR0YWNoIHRvIGF2b2lkIGNvbmZ1c2lvbnMuCisKK0luc3RhbGxpbmcgdGhlIGRyaXZlcjoKKworLSBEbyBhbiBpbnNtb2QgNnBhY2suIExvb2sgYXQgeW91ciAvdmFyL2xvZy9tZXNzYWdlcyBmaWxlIHRvIGNoZWNrIGlmIHRoZSAKKyAgbW9kdWxlIGhhcyBwcmludGVkIGl0cyBpbml0aWFsaXphdGlvbiBtZXNzYWdlLgorCistIERvIGEgc3BhdHRhY2ggYXMgeW91IHdvdWxkIGxhdW5jaCBraXNzYXR0YWNoIHdoZW4gc3RhcnRpbmcgYSBLSVNTIHBvcnQuCisgIENoZWNrIGlmIHRoZSBrZXJuZWwgcHJpbnRzIHRoZSBtZXNzYWdlICc2cGFjazogVE5DIGZvdW5kJy4gCisKKy0gRnJvbSBoZXJlLCBldmVyeXRoaW5nIHNob3VsZCB3b3JrIGFzIGlmIHlvdSB3ZXJlIHNldHRpbmcgdXAgYSBLSVNTIHBvcnQuCisgIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdCB0aGUgbmV0d29yayBkZXZpY2UgdGhhdCByZXByZXNlbnRzCisgIHRoZSA2cGFjayBwb3J0IGlzIGNhbGxlZCBzcCBpbnN0ZWFkIG9mIHNsIG9yIGF4LiBTbywgc3AwIHdvdWxkIGJlIHRoZQorICBmaXJzdCA2cGFjayBwb3J0LgorCitBbHRob3VnaCB0aGUgZHJpdmVyIGhhcyBiZWVuIHRlc3RlZCBvbiB2YXJpb3VzIHBsYXRmb3JtcywgSSBzdGlsbCBkZWNsYXJlIGl0CitBTFBIQS4gQkUgQ0FSRUZVTCEgU3luYyB5b3VyIGRpc2tzIGJlZm9yZSBpbnNtb2RpbmcgdGhlIDZwYWNrIG1vZHVsZQorYW5kIHNwYXR0YWNoaW5nLiBXYXRjaCBvdXQgaWYgeW91ciBjb21wdXRlciBiZWhhdmVzIHN0cmFuZ2VseS4gUmVhZCBzZWN0aW9uCis2IG9mIHRoaXMgZmlsZSBhYm91dCBrbm93biBwcm9ibGVtcy4KKworTm90ZSB0aGF0IHRoZSBjb25uZWN0IGFuZCBzdGF0dXMgTEVEcyBvZiB0aGUgVE5DIGFyZSBjb250cm9sbGVkIGluIGEKK2RpZmZlcmVudCB3YXkgdGhhbiB0aGV5IGFyZSB3aGVuIHRoZSBUTkMgaXMgdXNlZCB3aXRoIFBDL0ZsZXhOZXQuIFdoZW4gdXNpbmcKK0ZsZXhOZXQsIHRoZSBjb25uZWN0IExFRCBpcyBvbiBpZiB0aGVyZSBpcyBhIGNvbm5lY3Rpb247IHRoZSBzdGF0dXMgTEVEIGlzCitvbiBpZiB0aGVyZSBpcyBkYXRhIGluIHRoZSBidWZmZXIgb2YgdGhlIFBDJ3MgQVguMjUgZW5naW5lIHRoYXQgaGFzIHRvIGJlCit0cmFuc21pdHRlZC4gVW5kZXIgTGludXgsIHRoZSA2cGFjayBsYXllciBpcyBiZXlvbmQgdGhlIEFYLjI1IGxheWVyLAorc28gdGhlIDZwYWNrIGRyaXZlciBkb2Vzbid0IGtub3cgYW55dGhpbmcgYWJvdXQgY29ubmVjdHMgb3IgZGF0YSB0aGF0CitoYXMgbm90IHlldCBiZWVuIHRyYW5zbWl0dGVkLiBUaGVyZWZvcmUgdGhlIExFRHMgYXJlIGNvbnRyb2xsZWQKK2FzIHRoZXkgYXJlIGluIEtJU1MgbW9kZTogVGhlIGNvbm5lY3QgTEVEIGlzIHR1cm5lZCBvbiBpZiBkYXRhIGlzIHRyYW5zZmVycmVkCitmcm9tIHRoZSBQQyB0byB0aGUgVE5DIG92ZXIgdGhlIHNlcmlhbCBsaW5lLCB0aGUgc3RhdHVzIExFRCBpZiBkYXRhIGlzCitzZW50IHRvIHRoZSBQQy4KKworNi4gS25vd24gcHJvYmxlbXMKKworV2hlbiB0ZXN0aW5nIHRoZSBkcml2ZXIgd2l0aCAyLjAuM3gga2VybmVscyBhbmQKK29wZXJhdGluZyB3aXRoIGRhdGEgcmF0ZXMgb24gdGhlIHJhZGlvIGNoYW5uZWwgb2YgOTYwMCBCYXVkIG9yIGhpZ2hlciwKK3RoZSBkcml2ZXIgbWF5LCBvbiBjZXJ0YWluIHN5c3RlbXMsIHNvbWV0aW1lcyBwcmludCB0aGUgbWVzc2FnZSAnNnBhY2s6CitiYWQgY2hlY2tzdW0nLCB3aGljaCBpcyBkdWUgdG8gZGF0YSBsb3NzIGlmIHRoZSBvdGhlciBzdGF0aW9uIHNlbmRzIHR3bworb3IgbW9yZSBzdWJzZXF1ZW50IHBhY2tldHMuIEkgaGF2ZSBiZWVuIHRvbGQgdGhhdCB0aGlzIGlzIGR1ZSB0byBhIHByb2JsZW0KK3dpdGggdGhlIHNlcmlhbCBkcml2ZXIgb2YgMi4wLjN4IGtlcm5lbHMuIEkgZG9uJ3Qga25vdyB5ZXQgaWYgdGhlIHByb2JsZW0KK3N0aWxsIGV4aXN0cyB3aXRoIDIuMS54IGtlcm5lbHMsIGFzIEkgaGF2ZSBoZWFyZCB0aGF0IHRoZSBzZXJpYWwgZHJpdmVyCitjb2RlIGhhcyBiZWVuIGNoYW5nZWQgd2l0aCAyLjEueC4KKworV2hlbiBzaHV0dGluZyBkb3duIHRoZSBzcCBpbnRlcmZhY2Ugd2l0aCBpZmNvbmZpZywgdGhlIGtlcm5lbCBjcmFzaGVzIGlmCit0aGVyZSBpcyBzdGlsbCBhbiBBWC4yNSBjb25uZWN0aW9uIGxlZnQgb3ZlciB3aGljaCBhbiBJUCBjb25uZWN0aW9uIHdhcworcnVubmluZywgZXZlbiBpZiB0aGF0IElQIGNvbm5lY3Rpb24gaXMgYWxyZWFkeSBjbG9zZWQuIFRoZSBwcm9ibGVtIGRvZXMgbm90CitvY2N1ciB3aGVuIHRoZXJlIGlzIGEgYmFyZSBBWC4yNSBjb25uZWN0aW9uIHN0aWxsIHJ1bm5pbmcuIEkgZG9uJ3Qga25vdyBpZgordGhpcyBpcyBhIHByb2JsZW0gb2YgdGhlIDZwYWNrIGRyaXZlciBvciBzb21ldGhpbmcgZWxzZSBpbiB0aGUga2VybmVsLgorCitUaGUgZHJpdmVyIGhhcyBiZWVuIHRlc3RlZCBhcyBhIG1vZHVsZSwgbm90IHlldCBhcyBhIGtlcm5lbC1idWlsdGluIGRyaXZlci4KKworVGhlIDZwYWNrIHByb3RvY29sIHN1cHBvcnRzIGRhaXN5LWNoYWluaW5nIG9mIFROQ3MgaW4gYSB0b2tlbiByaW5nLCB3aGljaCBpcworY29ubmVjdGVkIHRvIG9uZSBzZXJpYWwgcG9ydCBvZiB0aGUgUEMuIFRoaXMgZmVhdHVyZSBpcyBub3QgaW1wbGVtZW50ZWQKK2FuZCBhdCBsZWFzdCBhdCB0aGUgbW9tZW50IEkgd29uJ3QgYmUgYWJsZSB0byBkbyBpdCBiZWNhdXNlIEkgZG8gbm90IGhhdmUKK3RoZSBvcHBvcnR1bml0eSB0byBidWlsZCBhIFROQyBkYWlzeS1jaGFpbiBhbmQgdGVzdCBpdC4KKworU29tZSBvZiB0aGUgY29tbWVudHMgaW4gdGhlIHNvdXJjZSBjb2RlIGFyZSBpbmFjY3VyYXRlLiBUaGV5IGFyZSBsZWZ0IGZyb20KK3RoZSBTTElQL0tJU1MgZHJpdmVyLCBmcm9tIHdoaWNoIHRoZSA2cGFjayBkcml2ZXIgaGFzIGJlZW4gZGVyaXZlZC4KK0kgaGF2ZW4ndCBtb2RpZmllZCBvciByZW1vdmVkIHRoZW0geWV0IC0tIHNvcnJ5ISBUaGUgY29kZSBpdHNlbGYgbmVlZHMKK3NvbWUgY2xlYW5pbmcgYW5kIG9wdGltaXppbmcuIFRoaXMgd2lsbCBiZSBkb25lIGluIGEgbGF0ZXIgcmVsZWFzZS4KKworSWYgeW91IGVuY291bnRlciBhIGJ1ZyBvciBpZiB5b3UgaGF2ZSBhIHF1ZXN0aW9uIG9yIHN1Z2dlc3Rpb24gY29uY2VybmluZyB0aGUKK2RyaXZlciwgZmVlbCBmcmVlIHRvIG1haWwgbWUsIHVzaW5nIHRoZSBhZGRyZXNzZXMgZ2l2ZW4gYXQgdGhlIGJlZ2lubmluZyBvZgordGhpcyBmaWxlLgorCitIYXZlIGZ1biEKKworQW5kcmVhcwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL0xJQ0VOU0UucWxhM3h4eCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9MSUNFTlNFLnFsYTN4eHgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmYyMDc3ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9MSUNFTlNFLnFsYTN4eHgKQEAgLTAsMCArMSw0NiBAQAorQ29weXJpZ2h0IChjKSAgMjAwMy0yMDA2IFFMb2dpYyBDb3Jwb3JhdGlvbgorUUxvZ2ljIExpbnV4IE5ldHdvcmtpbmcgSEJBIERyaXZlcgorCitUaGlzIHByb2dyYW0gaW5jbHVkZXMgYSBkZXZpY2UgZHJpdmVyIGZvciBMaW51eCAyLjYgdGhhdCBtYXkgYmUKK2Rpc3RyaWJ1dGVkIHdpdGggUUxvZ2ljIGhhcmR3YXJlIHNwZWNpZmljIGZpcm13YXJlIGJpbmFyeSBmaWxlLgorWW91IG1heSBtb2RpZnkgYW5kIHJlZGlzdHJpYnV0ZSB0aGUgZGV2aWNlIGRyaXZlciBjb2RlIHVuZGVyIHRoZQorR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCitGb3VuZGF0aW9uICh2ZXJzaW9uIDIgb3IgYSBsYXRlciB2ZXJzaW9uKS4KKworWW91IG1heSByZWRpc3RyaWJ1dGUgdGhlIGhhcmR3YXJlIHNwZWNpZmljIGZpcm13YXJlIGJpbmFyeSBmaWxlCit1bmRlciB0aGUgZm9sbG93aW5nIHRlcm1zOgorCisJMS4gUmVkaXN0cmlidXRpb24gb2Ygc291cmNlIGNvZGUgKG9ubHkgaWYgYXBwbGljYWJsZSksCisJICAgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZgorCSAgIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKworCTIuIFJlZGlzdHJpYnV0aW9uIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorCSAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUKKwkgICBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIKKwkgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCisJMy4gVGhlIG5hbWUgb2YgUUxvZ2ljIENvcnBvcmF0aW9uIG1heSBub3QgYmUgdXNlZCB0bworCSAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorCSAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uCisKK1JFR0FSRExFU1MgT0YgV0hBVCBMSUNFTlNJTkcgTUVDSEFOSVNNIElTIFVTRUQgT1IgQVBQTElDQUJMRSwKK1RISVMgUFJPR1JBTSBJUyBQUk9WSURFRCBCWSBRTE9HSUMgQ09SUE9SQVRJT04gIkFTIElTJycgQU5EIEFOWQorRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKK0lNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKK1BBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUgorQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKK0VYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KK0FOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKK09VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKK1BPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitVU0VSIEFDS05PV0xFREdFUyBBTkQgQUdSRUVTIFRIQVQgVVNFIE9GIFRISVMgUFJPR1JBTSBXSUxMIE5PVAorQ1JFQVRFIE9SIEdJVkUgR1JPVU5EUyBGT1IgQSBMSUNFTlNFIEJZIElNUExJQ0FUSU9OLCBFU1RPUFBFTCwgT1IKK09USEVSV0lTRSBJTiBBTlkgSU5URUxMRUNUVUFMIFBST1BFUlRZIFJJR0hUUyAoUEFURU5ULCBDT1BZUklHSFQsCitUUkFERSBTRUNSRVQsIE1BU0sgV09SSywgT1IgT1RIRVIgUFJPUFJJRVRBUlkgUklHSFQpIEVNQk9ESUVEIElOCitBTlkgT1RIRVIgUUxPR0lDIEhBUkRXQVJFIE9SIFNPRlRXQVJFIEVJVEhFUiBTT0xFTFkgT1IgSU4KK0NPTUJJTkFUSU9OIFdJVEggVEhJUyBQUk9HUkFNLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvTElDRU5TRS5xbGNuaWMgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvTElDRU5TRS5xbGNuaWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFlM2I2NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9MSUNFTlNFLnFsY25pYwpAQCAtMCwwICsxLDI4OCBAQAorQ29weXJpZ2h0IChjKSAyMDA5LTIwMTMgUUxvZ2ljIENvcnBvcmF0aW9uCitRTG9naWMgTGludXggcWxjbmljIE5JQyBEcml2ZXIKKworWW91IG1heSBtb2RpZnkgYW5kIHJlZGlzdHJpYnV0ZSB0aGUgZGV2aWNlIGRyaXZlciBjb2RlIHVuZGVyIHRoZQorR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKGEgY29weSBvZiB3aGljaCBpcyBhdHRhY2hlZCBoZXJldG8gYXMKK0V4aGliaXQgQSkgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gKHZlcnNpb24gMikuCisKKworRVhISUJJVCBBCisKKwkJICAgIEdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCisJCSAgICAgICBWZXJzaW9uIDIsIEp1bmUgMTk5MQorCisgQ29weXJpZ2h0IChDKSAxOTg5LCAxOTkxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcworIG9mIHRoaXMgbGljZW5zZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLgorCisJCQkgICAgUHJlYW1ibGUKKworICBUaGUgbGljZW5zZXMgZm9yIG1vc3Qgc29mdHdhcmUgYXJlIGRlc2lnbmVkIHRvIHRha2UgYXdheSB5b3VyCitmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgZnJlZQorc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4gIFRoaXMKK0dlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBtb3N0IG9mIHRoZSBGcmVlIFNvZnR3YXJlCitGb3VuZGF0aW9uJ3Mgc29mdHdhcmUgYW5kIHRvIGFueSBvdGhlciBwcm9ncmFtIHdob3NlIGF1dGhvcnMgY29tbWl0IHRvCit1c2luZyBpdC4gIChTb21lIG90aGVyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBzb2Z0d2FyZSBpcyBjb3ZlcmVkIGJ5Cit0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSAgWW91IGNhbiBhcHBseSBpdCB0bworeW91ciBwcm9ncmFtcywgdG9vLgorCisgIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKK3ByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UKK2hhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZSBmb3IKK3RoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAoraWYgeW91IHdhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQKK2luIG5ldyBmcmVlIHByb2dyYW1zOyBhbmQgdGhhdCB5b3Uga25vdyB5b3UgY2FuIGRvIHRoZXNlIHRoaW5ncy4KKworICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCithbnlvbmUgdG8gZGVueSB5b3UgdGhlc2UgcmlnaHRzIG9yIHRvIGFzayB5b3UgdG8gc3VycmVuZGVyIHRoZSByaWdodHMuCitUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmIHlvdQorZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZiB5b3UgbW9kaWZ5IGl0LgorCisgIEZvciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3VjaCBhIHByb2dyYW0sIHdoZXRoZXIKK2dyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IGdpdmUgdGhlIHJlY2lwaWVudHMgYWxsIHRoZSByaWdodHMgdGhhdAoreW91IGhhdmUuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUgb3IgY2FuIGdldCB0aGUKK3NvdXJjZSBjb2RlLiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIKK3JpZ2h0cy4KKworICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggdHdvIHN0ZXBzOiAoMSkgY29weXJpZ2h0IHRoZSBzb2Z0d2FyZSwgYW5kCisoMikgb2ZmZXIgeW91IHRoaXMgbGljZW5zZSB3aGljaCBnaXZlcyB5b3UgbGVnYWwgcGVybWlzc2lvbiB0byBjb3B5LAorZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBzb2Z0d2FyZS4KKworICBBbHNvLCBmb3IgZWFjaCBhdXRob3IncyBwcm90ZWN0aW9uIGFuZCBvdXJzLCB3ZSB3YW50IHRvIG1ha2UgY2VydGFpbgordGhhdCBldmVyeW9uZSB1bmRlcnN0YW5kcyB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IGZvciB0aGlzIGZyZWUKK3NvZnR3YXJlLiAgSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZQord2FudCBpdHMgcmVjaXBpZW50cyB0byBrbm93IHRoYXQgd2hhdCB0aGV5IGhhdmUgaXMgbm90IHRoZSBvcmlnaW5hbCwgc28KK3RoYXQgYW55IHByb2JsZW1zIGludHJvZHVjZWQgYnkgb3RoZXJzIHdpbGwgbm90IHJlZmxlY3Qgb24gdGhlIG9yaWdpbmFsCithdXRob3JzJyByZXB1dGF0aW9ucy4KKworICBGaW5hbGx5LCBhbnkgZnJlZSBwcm9ncmFtIGlzIHRocmVhdGVuZWQgY29uc3RhbnRseSBieSBzb2Z0d2FyZQorcGF0ZW50cy4gIFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZQorcHJvZ3JhbSB3aWxsIGluZGl2aWR1YWxseSBvYnRhaW4gcGF0ZW50IGxpY2Vuc2VzLCBpbiBlZmZlY3QgbWFraW5nIHRoZQorcHJvZ3JhbSBwcm9wcmlldGFyeS4gIFRvIHByZXZlbnQgdGhpcywgd2UgaGF2ZSBtYWRlIGl0IGNsZWFyIHRoYXQgYW55CitwYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3IgZXZlcnlvbmUncyBmcmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgorCisgIFRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kCittb2RpZmljYXRpb24gZm9sbG93LgorCisJCSAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQorICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCisKKyAgMC4gVGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8gYW55IHByb2dyYW0gb3Igb3RoZXIgd29yayB3aGljaCBjb250YWlucworYSBub3RpY2UgcGxhY2VkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVyIHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQKK3VuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGUgIlByb2dyYW0iLCBiZWxvdywKK3JlZmVycyB0byBhbnkgc3VjaCBwcm9ncmFtIG9yIHdvcmssIGFuZCBhICJ3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtIgorbWVhbnMgZWl0aGVyIHRoZSBQcm9ncmFtIG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIgY29weXJpZ2h0IGxhdzoKK3RoYXQgaXMgdG8gc2F5LCBhIHdvcmsgY29udGFpbmluZyB0aGUgUHJvZ3JhbSBvciBhIHBvcnRpb24gb2YgaXQsCitlaXRoZXIgdmVyYmF0aW0gb3Igd2l0aCBtb2RpZmljYXRpb25zIGFuZC9vciB0cmFuc2xhdGVkIGludG8gYW5vdGhlcgorbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzIGluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbgordGhlIHRlcm0gIm1vZGlmaWNhdGlvbiIuKSAgRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuCisKK0FjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90Citjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZTsgdGhleSBhcmUgb3V0c2lkZSBpdHMgc2NvcGUuICBUaGUgYWN0IG9mCitydW5uaW5nIHRoZSBQcm9ncmFtIGlzIG5vdCByZXN0cmljdGVkLCBhbmQgdGhlIG91dHB1dCBmcm9tIHRoZSBQcm9ncmFtCitpcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkIG9uIHRoZQorUHJvZ3JhbSAoaW5kZXBlbmRlbnQgb2YgaGF2aW5nIGJlZW4gbWFkZSBieSBydW5uaW5nIHRoZSBQcm9ncmFtKS4KK1doZXRoZXIgdGhhdCBpcyB0cnVlIGRlcGVuZHMgb24gd2hhdCB0aGUgUHJvZ3JhbSBkb2VzLgorCisgIDEuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIFByb2dyYW0ncworc291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91Citjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlCitjb3B5cmlnaHQgbm90aWNlIGFuZCBkaXNjbGFpbWVyIG9mIHdhcnJhbnR5OyBrZWVwIGludGFjdCBhbGwgdGhlCitub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7CithbmQgZ2l2ZSBhbnkgb3RoZXIgcmVjaXBpZW50cyBvZiB0aGUgUHJvZ3JhbSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlCithbG9uZyB3aXRoIHRoZSBQcm9ncmFtLgorCitZb3UgbWF5IGNoYXJnZSBhIGZlZSBmb3IgdGhlIHBoeXNpY2FsIGFjdCBvZiB0cmFuc2ZlcnJpbmcgYSBjb3B5LCBhbmQKK3lvdSBtYXkgYXQgeW91ciBvcHRpb24gb2ZmZXIgd2FycmFudHkgcHJvdGVjdGlvbiBpbiBleGNoYW5nZSBmb3IgYSBmZWUuCisKKyAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbgorb2YgaXQsIHRodXMgZm9ybWluZyBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0sIGFuZCBjb3B5IGFuZAorZGlzdHJpYnV0ZSBzdWNoIG1vZGlmaWNhdGlvbnMgb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiAxCithYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgorCisgICAgYSkgWW91IG11c3QgY2F1c2UgdGhlIG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCisgICAgc3RhdGluZyB0aGF0IHlvdSBjaGFuZ2VkIHRoZSBmaWxlcyBhbmQgdGhlIGRhdGUgb2YgYW55IGNoYW5nZS4KKworICAgIGIpIFlvdSBtdXN0IGNhdXNlIGFueSB3b3JrIHRoYXQgeW91IGRpc3RyaWJ1dGUgb3IgcHVibGlzaCwgdGhhdCBpbgorICAgIHdob2xlIG9yIGluIHBhcnQgY29udGFpbnMgb3IgaXMgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtIG9yIGFueQorICAgIHBhcnQgdGhlcmVvZiwgdG8gYmUgbGljZW5zZWQgYXMgYSB3aG9sZSBhdCBubyBjaGFyZ2UgdG8gYWxsIHRoaXJkCisgICAgcGFydGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgorCisgICAgYykgSWYgdGhlIG1vZGlmaWVkIHByb2dyYW0gbm9ybWFsbHkgcmVhZHMgY29tbWFuZHMgaW50ZXJhY3RpdmVseQorICAgIHdoZW4gcnVuLCB5b3UgbXVzdCBjYXVzZSBpdCwgd2hlbiBzdGFydGVkIHJ1bm5pbmcgZm9yIHN1Y2gKKyAgICBpbnRlcmFjdGl2ZSB1c2UgaW4gdGhlIG1vc3Qgb3JkaW5hcnkgd2F5LCB0byBwcmludCBvciBkaXNwbGF5IGFuCisgICAgYW5ub3VuY2VtZW50IGluY2x1ZGluZyBhbiBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCBhCisgICAgbm90aWNlIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgKG9yIGVsc2UsIHNheWluZyB0aGF0IHlvdSBwcm92aWRlCisgICAgYSB3YXJyYW50eSkgYW5kIHRoYXQgdXNlcnMgbWF5IHJlZGlzdHJpYnV0ZSB0aGUgcHJvZ3JhbSB1bmRlcgorICAgIHRoZXNlIGNvbmRpdGlvbnMsIGFuZCB0ZWxsaW5nIHRoZSB1c2VyIGhvdyB0byB2aWV3IGEgY29weSBvZiB0aGlzCisgICAgTGljZW5zZS4gIChFeGNlcHRpb246IGlmIHRoZSBQcm9ncmFtIGl0c2VsZiBpcyBpbnRlcmFjdGl2ZSBidXQKKyAgICBkb2VzIG5vdCBub3JtYWxseSBwcmludCBzdWNoIGFuIGFubm91bmNlbWVudCwgeW91ciB3b3JrIGJhc2VkIG9uCisgICAgdGhlIFByb2dyYW0gaXMgbm90IHJlcXVpcmVkIHRvIHByaW50IGFuIGFubm91bmNlbWVudC4pCisKK1RoZXNlIHJlcXVpcmVtZW50cyBhcHBseSB0byB0aGUgbW9kaWZpZWQgd29yayBhcyBhIHdob2xlLiAgSWYKK2lkZW50aWZpYWJsZSBzZWN0aW9ucyBvZiB0aGF0IHdvcmsgYXJlIG5vdCBkZXJpdmVkIGZyb20gdGhlIFByb2dyYW0sCithbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KK3RoZW1zZWx2ZXMsIHRoZW4gdGhpcyBMaWNlbnNlLCBhbmQgaXRzIHRlcm1zLCBkbyBub3QgYXBwbHkgdG8gdGhvc2UKK3NlY3Rpb25zIHdoZW4geW91IGRpc3RyaWJ1dGUgdGhlbSBhcyBzZXBhcmF0ZSB3b3Jrcy4gIEJ1dCB3aGVuIHlvdQorZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCitvbiB0aGUgUHJvZ3JhbSwgdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgd2hvbGUgbXVzdCBiZSBvbiB0aGUgdGVybXMgb2YKK3RoaXMgTGljZW5zZSwgd2hvc2UgcGVybWlzc2lvbnMgZm9yIG90aGVyIGxpY2Vuc2VlcyBleHRlbmQgdG8gdGhlCitlbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUgaXQuCisKK1RodXMsIGl0IGlzIG5vdCB0aGUgaW50ZW50IG9mIHRoaXMgc2VjdGlvbiB0byBjbGFpbSByaWdodHMgb3IgY29udGVzdAoreW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCitleGVyY2lzZSB0aGUgcmlnaHQgdG8gY29udHJvbCB0aGUgZGlzdHJpYnV0aW9uIG9mIGRlcml2YXRpdmUgb3IKK2NvbGxlY3RpdmUgd29ya3MgYmFzZWQgb24gdGhlIFByb2dyYW0uCisKK0luIGFkZGl0aW9uLCBtZXJlIGFnZ3JlZ2F0aW9uIG9mIGFub3RoZXIgd29yayBub3QgYmFzZWQgb24gdGhlIFByb2dyYW0KK3dpdGggdGhlIFByb2dyYW0gKG9yIHdpdGggYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtKSBvbiBhIHZvbHVtZSBvZgorYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKK3RoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuCisKKyAgMy4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhIHdvcmsgYmFzZWQgb24gaXQsCit1bmRlciBTZWN0aW9uIDIpIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB1bmRlciB0aGUgdGVybXMgb2YKK1NlY3Rpb25zIDEgYW5kIDIgYWJvdmUgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBkbyBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKworICAgIGEpIEFjY29tcGFueSBpdCB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nIG1hY2hpbmUtcmVhZGFibGUKKyAgICBzb3VyY2UgY29kZSwgd2hpY2ggbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMKKyAgICAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwKKworICAgIGIpIEFjY29tcGFueSBpdCB3aXRoIGEgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlCisgICAgeWVhcnMsIHRvIGdpdmUgYW55IHRoaXJkIHBhcnR5LCBmb3IgYSBjaGFyZ2Ugbm8gbW9yZSB0aGFuIHlvdXIKKyAgICBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyBzb3VyY2UgZGlzdHJpYnV0aW9uLCBhIGNvbXBsZXRlCisgICAgbWFjaGluZS1yZWFkYWJsZSBjb3B5IG9mIHRoZSBjb3JyZXNwb25kaW5nIHNvdXJjZSBjb2RlLCB0byBiZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtCisgICAgY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLAorCisgICAgYykgQWNjb21wYW55IGl0IHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSByZWNlaXZlZCBhcyB0byB0aGUgb2ZmZXIKKyAgICB0byBkaXN0cmlidXRlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUuICAoVGhpcyBhbHRlcm5hdGl2ZSBpcworICAgIGFsbG93ZWQgb25seSBmb3Igbm9uY29tbWVyY2lhbCBkaXN0cmlidXRpb24gYW5kIG9ubHkgaWYgeW91CisgICAgcmVjZWl2ZWQgdGhlIHByb2dyYW0gaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHdpdGggc3VjaAorICAgIGFuIG9mZmVyLCBpbiBhY2NvcmQgd2l0aCBTdWJzZWN0aW9uIGIgYWJvdmUuKQorCitUaGUgc291cmNlIGNvZGUgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCittYWtpbmcgbW9kaWZpY2F0aW9ucyB0byBpdC4gIEZvciBhbiBleGVjdXRhYmxlIHdvcmssIGNvbXBsZXRlIHNvdXJjZQorY29kZSBtZWFucyBhbGwgdGhlIHNvdXJjZSBjb2RlIGZvciBhbGwgbW9kdWxlcyBpdCBjb250YWlucywgcGx1cyBhbnkKK2Fzc29jaWF0ZWQgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0bworY29udHJvbCBjb21waWxhdGlvbiBhbmQgaW5zdGFsbGF0aW9uIG9mIHRoZSBleGVjdXRhYmxlLiAgSG93ZXZlciwgYXMgYQorc3BlY2lhbCBleGNlcHRpb24sIHRoZSBzb3VyY2UgY29kZSBkaXN0cmlidXRlZCBuZWVkIG5vdCBpbmNsdWRlCithbnl0aGluZyB0aGF0IGlzIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIChpbiBlaXRoZXIgc291cmNlIG9yIGJpbmFyeQorZm9ybSkgd2l0aCB0aGUgbWFqb3IgY29tcG9uZW50cyAoY29tcGlsZXIsIGtlcm5lbCwgYW5kIHNvIG9uKSBvZiB0aGUKK29wZXJhdGluZyBzeXN0ZW0gb24gd2hpY2ggdGhlIGV4ZWN1dGFibGUgcnVucywgdW5sZXNzIHRoYXQgY29tcG9uZW50CitpdHNlbGYgYWNjb21wYW5pZXMgdGhlIGV4ZWN1dGFibGUuCisKK0lmIGRpc3RyaWJ1dGlvbiBvZiBleGVjdXRhYmxlIG9yIG9iamVjdCBjb2RlIGlzIG1hZGUgYnkgb2ZmZXJpbmcKK2FjY2VzcyB0byBjb3B5IGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5nIGVxdWl2YWxlbnQKK2FjY2VzcyB0byBjb3B5IHRoZSBzb3VyY2UgY29kZSBmcm9tIHRoZSBzYW1lIHBsYWNlIGNvdW50cyBhcworZGlzdHJpYnV0aW9uIG9mIHRoZSBzb3VyY2UgY29kZSwgZXZlbiB0aG91Z2ggdGhpcmQgcGFydGllcyBhcmUgbm90Citjb21wZWxsZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLgorCisgIDQuIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgb3IgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbQorZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdAorb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGlzCit2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2UuCitIb3dldmVyLCBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcywgb3IgcmlnaHRzLCBmcm9tIHlvdSB1bmRlcgordGhpcyBMaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5zZXMgdGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2gKK3BhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4KKworICA1LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlLCBzaW5jZSB5b3UgaGF2ZSBub3QKK3NpZ25lZCBpdC4gIEhvd2V2ZXIsIG5vdGhpbmcgZWxzZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gbW9kaWZ5IG9yCitkaXN0cmlidXRlIHRoZSBQcm9ncmFtIG9yIGl0cyBkZXJpdmF0aXZlIHdvcmtzLiAgVGhlc2UgYWN0aW9ucyBhcmUKK3Byb2hpYml0ZWQgYnkgbGF3IGlmIHlvdSBkbyBub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkKK21vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQorUHJvZ3JhbSksIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLCBhbmQKK2FsbCBpdHMgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGluZyBvciBtb2RpZnlpbmcKK3RoZSBQcm9ncmFtIG9yIHdvcmtzIGJhc2VkIG9uIGl0LgorCisgIDYuIEVhY2ggdGltZSB5b3UgcmVkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKK1Byb2dyYW0pLCB0aGUgcmVjaXBpZW50IGF1dG9tYXRpY2FsbHkgcmVjZWl2ZXMgYSBsaWNlbnNlIGZyb20gdGhlCitvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlIG9yIG1vZGlmeSB0aGUgUHJvZ3JhbSBzdWJqZWN0IHRvCit0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIFlvdSBtYXkgbm90IGltcG9zZSBhbnkgZnVydGhlcgorcmVzdHJpY3Rpb25zIG9uIHRoZSByZWNpcGllbnRzJyBleGVyY2lzZSBvZiB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLgorWW91IGFyZSBub3QgcmVzcG9uc2libGUgZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBhcnRpZXMgdG8KK3RoaXMgTGljZW5zZS4KKworICA3LiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CitpbmZyaW5nZW1lbnQgb3IgZm9yIGFueSBvdGhlciByZWFzb24gKG5vdCBsaW1pdGVkIHRvIHBhdGVudCBpc3N1ZXMpLAorY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgorb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdAorZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZS4gIElmIHlvdSBjYW5ub3QKK2Rpc3RyaWJ1dGUgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMKK0xpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKK21heSBub3QgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgYSBwYXRlbnQKK2xpY2Vuc2Ugd291bGQgbm90IHBlcm1pdCByb3lhbHR5LWZyZWUgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gYnkKK2FsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgordGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggaXQgYW5kIHRoaXMgTGljZW5zZSB3b3VsZCBiZSB0bworcmVmcmFpbiBlbnRpcmVseSBmcm9tIGRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbS4KKworSWYgYW55IHBvcnRpb24gb2YgdGhpcyBzZWN0aW9uIGlzIGhlbGQgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyCithbnkgcGFydGljdWxhciBjaXJjdW1zdGFuY2UsIHRoZSBiYWxhbmNlIG9mIHRoZSBzZWN0aW9uIGlzIGludGVuZGVkIHRvCithcHBseSBhbmQgdGhlIHNlY3Rpb24gYXMgYSB3aG9sZSBpcyBpbnRlbmRlZCB0byBhcHBseSBpbiBvdGhlcgorY2lyY3Vtc3RhbmNlcy4KKworSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB0byBpbmR1Y2UgeW91IHRvIGluZnJpbmdlIGFueQorcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKK3N1Y2ggY2xhaW1zOyB0aGlzIHNlY3Rpb24gaGFzIHRoZSBzb2xlIHB1cnBvc2Ugb2YgcHJvdGVjdGluZyB0aGUKK2ludGVncml0eSBvZiB0aGUgZnJlZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtLCB3aGljaCBpcworaW1wbGVtZW50ZWQgYnkgcHVibGljIGxpY2Vuc2UgcHJhY3RpY2VzLiAgTWFueSBwZW9wbGUgaGF2ZSBtYWRlCitnZW5lcm91cyBjb250cmlidXRpb25zIHRvIHRoZSB3aWRlIHJhbmdlIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkCit0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdAorc3lzdGVtOyBpdCBpcyB1cCB0byB0aGUgYXV0aG9yL2Rvbm9yIHRvIGRlY2lkZSBpZiBoZSBvciBzaGUgaXMgd2lsbGluZwordG8gZGlzdHJpYnV0ZSBzb2Z0d2FyZSB0aHJvdWdoIGFueSBvdGhlciBzeXN0ZW0gYW5kIGEgbGljZW5zZWUgY2Fubm90CitpbXBvc2UgdGhhdCBjaG9pY2UuCisKK1RoaXMgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBtYWtlIHRob3JvdWdobHkgY2xlYXIgd2hhdCBpcyBiZWxpZXZlZCB0bworYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCisKKyAgOC4gSWYgdGhlIGRpc3RyaWJ1dGlvbiBhbmQvb3IgdXNlIG9mIHRoZSBQcm9ncmFtIGlzIHJlc3RyaWN0ZWQgaW4KK2NlcnRhaW4gY291bnRyaWVzIGVpdGhlciBieSBwYXRlbnRzIG9yIGJ5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZQorb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBQcm9ncmFtIHVuZGVyIHRoaXMgTGljZW5zZQorbWF5IGFkZCBhbiBleHBsaWNpdCBnZW9ncmFwaGljYWwgZGlzdHJpYnV0aW9uIGxpbWl0YXRpb24gZXhjbHVkaW5nCit0aG9zZSBjb3VudHJpZXMsIHNvIHRoYXQgZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBvbmx5IGluIG9yIGFtb25nCitjb3VudHJpZXMgbm90IHRodXMgZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMKK3RoZSBsaW1pdGF0aW9uIGFzIGlmIHdyaXR0ZW4gaW4gdGhlIGJvZHkgb2YgdGhpcyBMaWNlbnNlLgorCisgIDkuIFRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gbWF5IHB1Ymxpc2ggcmV2aXNlZCBhbmQvb3IgbmV3IHZlcnNpb25zCitvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmcm9tIHRpbWUgdG8gdGltZS4gIFN1Y2ggbmV3IHZlcnNpb25zIHdpbGwKK2JlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bworYWRkcmVzcyBuZXcgcHJvYmxlbXMgb3IgY29uY2VybnMuCisKK0VhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlIFByb2dyYW0KK3NwZWNpZmllcyBhIHZlcnNpb24gbnVtYmVyIG9mIHRoaXMgTGljZW5zZSB3aGljaCBhcHBsaWVzIHRvIGl0IGFuZCAiYW55CitsYXRlciB2ZXJzaW9uIiwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zCitlaXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQorU29mdHdhcmUgRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZgordGhpcyBMaWNlbnNlLCB5b3UgbWF5IGNob29zZSBhbnkgdmVyc2lvbiBldmVyIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorRm91bmRhdGlvbi4KKworICAxMC4gSWYgeW91IHdpc2ggdG8gaW5jb3Jwb3JhdGUgcGFydHMgb2YgdGhlIFByb2dyYW0gaW50byBvdGhlciBmcmVlCitwcm9ncmFtcyB3aG9zZSBkaXN0cmlidXRpb24gY29uZGl0aW9ucyBhcmUgZGlmZmVyZW50LCB3cml0ZSB0byB0aGUgYXV0aG9yCit0byBhc2sgZm9yIHBlcm1pc3Npb24uICBGb3Igc29mdHdhcmUgd2hpY2ggaXMgY29weXJpZ2h0ZWQgYnkgdGhlIEZyZWUKK1NvZnR3YXJlIEZvdW5kYXRpb24sIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHdlIHNvbWV0aW1lcworbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyIGRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMKK29mIHByZXNlcnZpbmcgdGhlIGZyZWUgc3RhdHVzIG9mIGFsbCBkZXJpdmF0aXZlcyBvZiBvdXIgZnJlZSBzb2Z0d2FyZSBhbmQKK29mIHByb21vdGluZyB0aGUgc2hhcmluZyBhbmQgcmV1c2Ugb2Ygc29mdHdhcmUgZ2VuZXJhbGx5LgorCisJCQkgICAgTk8gV0FSUkFOVFkKKworICAxMS4gQkVDQVVTRSBUSEUgUFJPR1JBTSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8gV0FSUkFOVFkKK0ZPUiBUSEUgUFJPR1JBTSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkgQVBQTElDQUJMRSBMQVcuICBFWENFUFQgV0hFTgorT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IgT1RIRVIgUEFSVElFUworUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQKK09SIElNUExJRUQsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCitNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTCitUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0gSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFCitQUk9HUkFNIFBST1ZFIERFRkVDVElWRSwgWU9VIEFTU1VNRSBUSEUgQ09TVCBPRiBBTEwgTkVDRVNTQVJZIFNFUlZJQ0lORywKK1JFUEFJUiBPUiBDT1JSRUNUSU9OLgorCisgIDEyLiBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcKK1dJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZIE1PRElGWSBBTkQvT1IKK1JFRElTVFJJQlVURSBUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJPVkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsCitJTkNMVURJTkcgQU5ZIEdFTkVSQUwsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcKK09VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFIFBST0dSQU0gKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQKK1RPIExPU1MgT0YgREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWQorWU9VIE9SIFRISVJEIFBBUlRJRVMgT1IgQSBGQUlMVVJFIE9GIFRIRSBQUk9HUkFNIFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVIKK1BST0dSQU1TKSwgRVZFTiBJRiBTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRQorUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL0xJQ0VOU0UucWxnZSBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9MSUNFTlNFLnFsZ2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U2NGU0ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9MSUNFTlNFLnFsZ2UKQEAgLTAsMCArMSwyODggQEAKK0NvcHlyaWdodCAoYykgMjAwMy0yMDExIFFMb2dpYyBDb3Jwb3JhdGlvbgorUUxvZ2ljIExpbnV4IHFsZ2UgTklDIERyaXZlcgorCitZb3UgbWF5IG1vZGlmeSBhbmQgcmVkaXN0cmlidXRlIHRoZSBkZXZpY2UgZHJpdmVyIGNvZGUgdW5kZXIgdGhlCitHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoYSBjb3B5IG9mIHdoaWNoIGlzIGF0dGFjaGVkIGhlcmV0byBhcworRXhoaWJpdCBBKSBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiAodmVyc2lvbiAyKS4KKworCitFWEhJQklUIEEKKworCQkgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKKwkJICAgICAgIFZlcnNpb24gMiwgSnVuZSAxOTkxCisKKyBDb3B5cmlnaHQgKEMpIDE5ODksIDE5OTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCisgb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCisKKwkJCSAgICBQcmVhbWJsZQorCisgIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhcmUgZGVzaWduZWQgdG8gdGFrZSBhd2F5IHlvdXIKK2ZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBpdC4gIEJ5IGNvbnRyYXN0LCB0aGUgR05VIEdlbmVyYWwgUHVibGljCitMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBmcmVlCitzb2Z0d2FyZS0tdG8gbWFrZSBzdXJlIHRoZSBzb2Z0d2FyZSBpcyBmcmVlIGZvciBhbGwgaXRzIHVzZXJzLiAgVGhpcworR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcHBsaWVzIHRvIG1vc3Qgb2YgdGhlIEZyZWUgU29mdHdhcmUKK0ZvdW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8KK3VzaW5nIGl0LiAgKFNvbWUgb3RoZXIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIHNvZnR3YXJlIGlzIGNvdmVyZWQgYnkKK3RoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW5zdGVhZC4pICBZb3UgY2FuIGFwcGx5IGl0IHRvCit5b3VyIHByb2dyYW1zLCB0b28uCisKKyAgV2hlbiB3ZSBzcGVhayBvZiBmcmVlIHNvZnR3YXJlLCB3ZSBhcmUgcmVmZXJyaW5nIHRvIGZyZWVkb20sIG5vdAorcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQoraGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmlidXRlIGNvcGllcyBvZiBmcmVlIHNvZnR3YXJlIChhbmQgY2hhcmdlIGZvcgordGhpcyBzZXJ2aWNlIGlmIHlvdSB3aXNoKSwgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0IGl0CitpZiB5b3Ugd2FudCBpdCwgdGhhdCB5b3UgY2FuIGNoYW5nZSB0aGUgc29mdHdhcmUgb3IgdXNlIHBpZWNlcyBvZiBpdAoraW4gbmV3IGZyZWUgcHJvZ3JhbXM7IGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgorCisgIFRvIHByb3RlY3QgeW91ciByaWdodHMsIHdlIG5lZWQgdG8gbWFrZSByZXN0cmljdGlvbnMgdGhhdCBmb3JiaWQKK2FueW9uZSB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4KK1RoZXNlIHJlc3RyaWN0aW9ucyB0cmFuc2xhdGUgdG8gY2VydGFpbiByZXNwb25zaWJpbGl0aWVzIGZvciB5b3UgaWYgeW91CitkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgc29mdHdhcmUsIG9yIGlmIHlvdSBtb2RpZnkgaXQuCisKKyAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiBzdWNoIGEgcHJvZ3JhbSwgd2hldGhlcgorZ3JhdGlzIG9yIGZvciBhIGZlZSwgeW91IG11c3QgZ2l2ZSB0aGUgcmVjaXBpZW50cyBhbGwgdGhlIHJpZ2h0cyB0aGF0Cit5b3UgaGF2ZS4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZSBvciBjYW4gZ2V0IHRoZQorc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkga25vdyB0aGVpcgorcmlnaHRzLgorCisgIFdlIHByb3RlY3QgeW91ciByaWdodHMgd2l0aCB0d28gc3RlcHM6ICgxKSBjb3B5cmlnaHQgdGhlIHNvZnR3YXJlLCBhbmQKKygyKSBvZmZlciB5b3UgdGhpcyBsaWNlbnNlIHdoaWNoIGdpdmVzIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksCitkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhlIHNvZnR3YXJlLgorCisgIEFsc28sIGZvciBlYWNoIGF1dGhvcidzIHByb3RlY3Rpb24gYW5kIG91cnMsIHdlIHdhbnQgdG8gbWFrZSBjZXJ0YWluCit0aGF0IGV2ZXJ5b25lIHVuZGVyc3RhbmRzIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZQorc29mdHdhcmUuICBJZiB0aGUgc29mdHdhcmUgaXMgbW9kaWZpZWQgYnkgc29tZW9uZSBlbHNlIGFuZCBwYXNzZWQgb24sIHdlCit3YW50IGl0cyByZWNpcGllbnRzIHRvIGtub3cgdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsLCBzbwordGhhdCBhbnkgcHJvYmxlbXMgaW50cm9kdWNlZCBieSBvdGhlcnMgd2lsbCBub3QgcmVmbGVjdCBvbiB0aGUgb3JpZ2luYWwKK2F1dGhvcnMnIHJlcHV0YXRpb25zLgorCisgIEZpbmFsbHksIGFueSBmcmVlIHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlCitwYXRlbnRzLiAgV2Ugd2lzaCB0byBhdm9pZCB0aGUgZGFuZ2VyIHRoYXQgcmVkaXN0cmlidXRvcnMgb2YgYSBmcmVlCitwcm9ncmFtIHdpbGwgaW5kaXZpZHVhbGx5IG9idGFpbiBwYXRlbnQgbGljZW5zZXMsIGluIGVmZmVjdCBtYWtpbmcgdGhlCitwcm9ncmFtIHByb3ByaWV0YXJ5LiAgVG8gcHJldmVudCB0aGlzLCB3ZSBoYXZlIG1hZGUgaXQgY2xlYXIgdGhhdCBhbnkKK3BhdGVudCBtdXN0IGJlIGxpY2Vuc2VkIGZvciBldmVyeW9uZSdzIGZyZWUgdXNlIG9yIG5vdCBsaWNlbnNlZCBhdCBhbGwuCisKKyAgVGhlIHByZWNpc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQKK21vZGlmaWNhdGlvbiBmb2xsb3cuCisKKwkJICAgIEdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCisgICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgQ09QWUlORywgRElTVFJJQlVUSU9OIEFORCBNT0RJRklDQVRJT04KKworICAwLiBUaGlzIExpY2Vuc2UgYXBwbGllcyB0byBhbnkgcHJvZ3JhbSBvciBvdGhlciB3b3JrIHdoaWNoIGNvbnRhaW5zCithIG5vdGljZSBwbGFjZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXIgc2F5aW5nIGl0IG1heSBiZSBkaXN0cmlidXRlZAordW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoZSAiUHJvZ3JhbSIsIGJlbG93LAorcmVmZXJzIHRvIGFueSBzdWNoIHByb2dyYW0gb3Igd29yaywgYW5kIGEgIndvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0iCittZWFucyBlaXRoZXIgdGhlIFByb2dyYW0gb3IgYW55IGRlcml2YXRpdmUgd29yayB1bmRlciBjb3B5cmlnaHQgbGF3OgordGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBQcm9ncmFtIG9yIGEgcG9ydGlvbiBvZiBpdCwKK2VpdGhlciB2ZXJiYXRpbSBvciB3aXRoIG1vZGlmaWNhdGlvbnMgYW5kL29yIHRyYW5zbGF0ZWQgaW50byBhbm90aGVyCitsYW5ndWFnZS4gIChIZXJlaW5hZnRlciwgdHJhbnNsYXRpb24gaXMgaW5jbHVkZWQgd2l0aG91dCBsaW1pdGF0aW9uIGluCit0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4KKworQWN0aXZpdGllcyBvdGhlciB0aGFuIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQgbW9kaWZpY2F0aW9uIGFyZSBub3QKK2NvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKK3J1bm5pbmcgdGhlIFByb2dyYW0gaXMgbm90IHJlc3RyaWN0ZWQsIGFuZCB0aGUgb3V0cHV0IGZyb20gdGhlIFByb2dyYW0KK2lzIGNvdmVyZWQgb25seSBpZiBpdHMgY29udGVudHMgY29uc3RpdHV0ZSBhIHdvcmsgYmFzZWQgb24gdGhlCitQcm9ncmFtIChpbmRlcGVuZGVudCBvZiBoYXZpbmcgYmVlbiBtYWRlIGJ5IHJ1bm5pbmcgdGhlIFByb2dyYW0pLgorV2hldGhlciB0aGF0IGlzIHRydWUgZGVwZW5kcyBvbiB3aGF0IHRoZSBQcm9ncmFtIGRvZXMuCisKKyAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzCitzb3VyY2UgY29kZSBhcyB5b3UgcmVjZWl2ZSBpdCwgaW4gYW55IG1lZGl1bSwgcHJvdmlkZWQgdGhhdCB5b3UKK2NvbnNwaWN1b3VzbHkgYW5kIGFwcHJvcHJpYXRlbHkgcHVibGlzaCBvbiBlYWNoIGNvcHkgYW4gYXBwcm9wcmlhdGUKK2NvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0IGFsbCB0aGUKK25vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UgYW5kIHRvIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsKK2FuZCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBQcm9ncmFtIGEgY29weSBvZiB0aGlzIExpY2Vuc2UKK2Fsb25nIHdpdGggdGhlIFByb2dyYW0uCisKK1lvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksIGFuZAoreW91IG1heSBhdCB5b3VyIG9wdGlvbiBvZmZlciB3YXJyYW50eSBwcm90ZWN0aW9uIGluIGV4Y2hhbmdlIGZvciBhIGZlZS4KKworICAyLiBZb3UgbWF5IG1vZGlmeSB5b3VyIGNvcHkgb3IgY29waWVzIG9mIHRoZSBQcm9ncmFtIG9yIGFueSBwb3J0aW9uCitvZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgYW5kIGNvcHkgYW5kCitkaXN0cmlidXRlIHN1Y2ggbW9kaWZpY2F0aW9ucyBvciB3b3JrIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9uIDEKK2Fib3ZlLCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CisKKyAgICBhKSBZb3UgbXVzdCBjYXVzZSB0aGUgbW9kaWZpZWQgZmlsZXMgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKKyAgICBzdGF0aW5nIHRoYXQgeW91IGNoYW5nZWQgdGhlIGZpbGVzIGFuZCB0aGUgZGF0ZSBvZiBhbnkgY2hhbmdlLgorCisgICAgYikgWW91IG11c3QgY2F1c2UgYW55IHdvcmsgdGhhdCB5b3UgZGlzdHJpYnV0ZSBvciBwdWJsaXNoLCB0aGF0IGluCisgICAgd2hvbGUgb3IgaW4gcGFydCBjb250YWlucyBvciBpcyBkZXJpdmVkIGZyb20gdGhlIFByb2dyYW0gb3IgYW55CisgICAgcGFydCB0aGVyZW9mLCB0byBiZSBsaWNlbnNlZCBhcyBhIHdob2xlIGF0IG5vIGNoYXJnZSB0byBhbGwgdGhpcmQKKyAgICBwYXJ0aWVzIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UuCisKKyAgICBjKSBJZiB0aGUgbW9kaWZpZWQgcHJvZ3JhbSBub3JtYWxseSByZWFkcyBjb21tYW5kcyBpbnRlcmFjdGl2ZWx5CisgICAgd2hlbiBydW4sIHlvdSBtdXN0IGNhdXNlIGl0LCB3aGVuIHN0YXJ0ZWQgcnVubmluZyBmb3Igc3VjaAorICAgIGludGVyYWN0aXZlIHVzZSBpbiB0aGUgbW9zdCBvcmRpbmFyeSB3YXksIHRvIHByaW50IG9yIGRpc3BsYXkgYW4KKyAgICBhbm5vdW5jZW1lbnQgaW5jbHVkaW5nIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGEKKyAgICBub3RpY2UgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSAob3IgZWxzZSwgc2F5aW5nIHRoYXQgeW91IHByb3ZpZGUKKyAgICBhIHdhcnJhbnR5KSBhbmQgdGhhdCB1c2VycyBtYXkgcmVkaXN0cmlidXRlIHRoZSBwcm9ncmFtIHVuZGVyCisgICAgdGhlc2UgY29uZGl0aW9ucywgYW5kIHRlbGxpbmcgdGhlIHVzZXIgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMKKyAgICBMaWNlbnNlLiAgKEV4Y2VwdGlvbjogaWYgdGhlIFByb2dyYW0gaXRzZWxmIGlzIGludGVyYWN0aXZlIGJ1dAorICAgIGRvZXMgbm90IG5vcm1hbGx5IHByaW50IHN1Y2ggYW4gYW5ub3VuY2VtZW50LCB5b3VyIHdvcmsgYmFzZWQgb24KKyAgICB0aGUgUHJvZ3JhbSBpcyBub3QgcmVxdWlyZWQgdG8gcHJpbnQgYW4gYW5ub3VuY2VtZW50LikKKworVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgoraWRlbnRpZmlhYmxlIHNlY3Rpb25zIG9mIHRoYXQgd29yayBhcmUgbm90IGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSwKK2FuZCBjYW4gYmUgcmVhc29uYWJseSBjb25zaWRlcmVkIGluZGVwZW5kZW50IGFuZCBzZXBhcmF0ZSB3b3JrcyBpbgordGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQorc2VjdGlvbnMgd2hlbiB5b3UgZGlzdHJpYnV0ZSB0aGVtIGFzIHNlcGFyYXRlIHdvcmtzLiAgQnV0IHdoZW4geW91CitkaXN0cmlidXRlIHRoZSBzYW1lIHNlY3Rpb25zIGFzIHBhcnQgb2YgYSB3aG9sZSB3aGljaCBpcyBhIHdvcmsgYmFzZWQKK29uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgordGhpcyBMaWNlbnNlLCB3aG9zZSBwZXJtaXNzaW9ucyBmb3Igb3RoZXIgbGljZW5zZWVzIGV4dGVuZCB0byB0aGUKK2VudGlyZSB3aG9sZSwgYW5kIHRodXMgdG8gZWFjaCBhbmQgZXZlcnkgcGFydCByZWdhcmRsZXNzIG9mIHdobyB3cm90ZSBpdC4KKworVGh1cywgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhpcyBzZWN0aW9uIHRvIGNsYWltIHJpZ2h0cyBvciBjb250ZXN0Cit5b3VyIHJpZ2h0cyB0byB3b3JrIHdyaXR0ZW4gZW50aXJlbHkgYnkgeW91OyByYXRoZXIsIHRoZSBpbnRlbnQgaXMgdG8KK2V4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgorY29sbGVjdGl2ZSB3b3JrcyBiYXNlZCBvbiB0aGUgUHJvZ3JhbS4KKworSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJvZ3JhbQord2l0aCB0aGUgUHJvZ3JhbSAob3Igd2l0aCBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0pIG9uIGEgdm9sdW1lIG9mCithIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSBkb2VzIG5vdCBicmluZyB0aGUgb3RoZXIgd29yayB1bmRlcgordGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KKworICAzLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGEgd29yayBiYXNlZCBvbiBpdCwKK3VuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZgorU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCisgICAgYSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZQorICAgIHNvdXJjZSBjb2RlLCB3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucworICAgIDEgYW5kIDIgYWJvdmUgb24gYSBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLAorCisgICAgYikgQWNjb21wYW55IGl0IHdpdGggYSB3cml0dGVuIG9mZmVyLCB2YWxpZCBmb3IgYXQgbGVhc3QgdGhyZWUKKyAgICB5ZWFycywgdG8gZ2l2ZSBhbnkgdGhpcmQgcGFydHksIGZvciBhIGNoYXJnZSBubyBtb3JlIHRoYW4geW91cgorICAgIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5nIHNvdXJjZSBkaXN0cmlidXRpb24sIGEgY29tcGxldGUKKyAgICBtYWNoaW5lLXJlYWRhYmxlIGNvcHkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUsIHRvIGJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgb24gYSBtZWRpdW0KKyAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCisKKyAgICBjKSBBY2NvbXBhbnkgaXQgd2l0aCB0aGUgaW5mb3JtYXRpb24geW91IHJlY2VpdmVkIGFzIHRvIHRoZSBvZmZlcgorICAgIHRvIGRpc3RyaWJ1dGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZS4gIChUaGlzIGFsdGVybmF0aXZlIGlzCisgICAgYWxsb3dlZCBvbmx5IGZvciBub25jb21tZXJjaWFsIGRpc3RyaWJ1dGlvbiBhbmQgb25seSBpZiB5b3UKKyAgICByZWNlaXZlZCB0aGUgcHJvZ3JhbSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0gd2l0aCBzdWNoCisgICAgYW4gb2ZmZXIsIGluIGFjY29yZCB3aXRoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCisKK1RoZSBzb3VyY2UgY29kZSBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29yayBmb3IKK21ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGFuIGV4ZWN1dGFibGUgd29yaywgY29tcGxldGUgc291cmNlCitjb2RlIG1lYW5zIGFsbCB0aGUgc291cmNlIGNvZGUgZm9yIGFsbCBtb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueQorYXNzb2NpYXRlZCBpbnRlcmZhY2UgZGVmaW5pdGlvbiBmaWxlcywgcGx1cyB0aGUgc2NyaXB0cyB1c2VkIHRvCitjb250cm9sIGNvbXBpbGF0aW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGV4ZWN1dGFibGUuICBIb3dldmVyLCBhcyBhCitzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHNvdXJjZSBjb2RlIGRpc3RyaWJ1dGVkIG5lZWQgbm90IGluY2x1ZGUKK2FueXRoaW5nIHRoYXQgaXMgbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5Citmb3JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChjb21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZQorb3BlcmF0aW5nIHN5c3RlbSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSBydW5zLCB1bmxlc3MgdGhhdCBjb21wb25lbnQKK2l0c2VsZiBhY2NvbXBhbmllcyB0aGUgZXhlY3V0YWJsZS4KKworSWYgZGlzdHJpYnV0aW9uIG9mIGV4ZWN1dGFibGUgb3Igb2JqZWN0IGNvZGUgaXMgbWFkZSBieSBvZmZlcmluZworYWNjZXNzIHRvIGNvcHkgZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudAorYWNjZXNzIHRvIGNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFzCitkaXN0cmlidXRpb24gb2YgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKK2NvbXBlbGxlZCB0byBjb3B5IHRoZSBzb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGNvZGUuCisKKyAgNC4gWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtCitleGNlcHQgYXMgZXhwcmVzc2x5IHByb3ZpZGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEFueSBhdHRlbXB0CitvdGhlcndpc2UgdG8gY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gaXMKK3ZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4KK0hvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLCBvciByaWdodHMsIGZyb20geW91IHVuZGVyCit0aGlzIExpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcyB0ZXJtaW5hdGVkIHNvIGxvbmcgYXMgc3VjaAorcGFydGllcyByZW1haW4gaW4gZnVsbCBjb21wbGlhbmNlLgorCisgIDUuIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UsIHNpbmNlIHlvdSBoYXZlIG5vdAorc2lnbmVkIGl0LiAgSG93ZXZlciwgbm90aGluZyBlbHNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBtb2RpZnkgb3IKK2Rpc3RyaWJ1dGUgdGhlIFByb2dyYW0gb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQorcHJvaGliaXRlZCBieSBsYXcgaWYgeW91IGRvIG5vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3JlLCBieQorbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlCitQcm9ncmFtKSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZAorYWxsIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW5nIG9yIG1vZGlmeWluZwordGhlIFByb2dyYW0gb3Igd29ya3MgYmFzZWQgb24gaXQuCisKKyAgNi4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQorUHJvZ3JhbSksIHRoZSByZWNpcGllbnQgYXV0b21hdGljYWxseSByZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUKK29yaWdpbmFsIGxpY2Vuc29yIHRvIGNvcHksIGRpc3RyaWJ1dGUgb3IgbW9kaWZ5IHRoZSBQcm9ncmFtIHN1YmplY3QgdG8KK3RoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyCityZXN0cmljdGlvbnMgb24gdGhlIHJlY2lwaWVudHMnIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJlaW4uCitZb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB0bwordGhpcyBMaWNlbnNlLgorCisgIDcuIElmLCBhcyBhIGNvbnNlcXVlbmNlIG9mIGEgY291cnQganVkZ21lbnQgb3IgYWxsZWdhdGlvbiBvZiBwYXRlbnQKK2luZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCitjb25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3VydCBvcmRlciwgYWdyZWVtZW50IG9yCitvdGhlcndpc2UpIHRoYXQgY29udHJhZGljdCB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8gbm90CitleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdAorZGlzdHJpYnV0ZSBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcworTGljZW5zZSBhbmQgYW55IG90aGVyIHBlcnRpbmVudCBvYmxpZ2F0aW9ucywgdGhlbiBhcyBhIGNvbnNlcXVlbmNlIHlvdQorbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudAorbGljZW5zZSB3b3VsZCBub3QgcGVybWl0IHJveWFsdHktZnJlZSByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBieQorYWxsIHRob3NlIHdobyByZWNlaXZlIGNvcGllcyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggeW91LCB0aGVuCit0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCityZWZyYWluIGVudGlyZWx5IGZyb20gZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtLgorCitJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIKK2FueSBwYXJ0aWN1bGFyIGNpcmN1bXN0YW5jZSwgdGhlIGJhbGFuY2Ugb2YgdGhlIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8KK2FwcGx5IGFuZCB0aGUgc2VjdGlvbiBhcyBhIHdob2xlIGlzIGludGVuZGVkIHRvIGFwcGx5IGluIG90aGVyCitjaXJjdW1zdGFuY2VzLgorCitJdCBpcyBub3QgdGhlIHB1cnBvc2Ugb2YgdGhpcyBzZWN0aW9uIHRvIGluZHVjZSB5b3UgdG8gaW5mcmluZ2UgYW55CitwYXRlbnRzIG9yIG90aGVyIHByb3BlcnR5IHJpZ2h0IGNsYWltcyBvciB0byBjb250ZXN0IHZhbGlkaXR5IG9mIGFueQorc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQoraW50ZWdyaXR5IG9mIHRoZSBmcmVlIHNvZnR3YXJlIGRpc3RyaWJ1dGlvbiBzeXN0ZW0sIHdoaWNoIGlzCitpbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKK2dlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHdpZGUgcmFuZ2Ugb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQKK3Rocm91Z2ggdGhhdCBzeXN0ZW0gaW4gcmVsaWFuY2Ugb24gY29uc2lzdGVudCBhcHBsaWNhdGlvbiBvZiB0aGF0CitzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCit0byBkaXN0cmlidXRlIHNvZnR3YXJlIHRocm91Z2ggYW55IG90aGVyIHN5c3RlbSBhbmQgYSBsaWNlbnNlZSBjYW5ub3QKK2ltcG9zZSB0aGF0IGNob2ljZS4KKworVGhpcyBzZWN0aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBjbGVhciB3aGF0IGlzIGJlbGlldmVkIHRvCitiZSBhIGNvbnNlcXVlbmNlIG9mIHRoZSByZXN0IG9mIHRoaXMgTGljZW5zZS4KKworICA4LiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIFByb2dyYW0gaXMgcmVzdHJpY3RlZCBpbgorY2VydGFpbiBjb3VudHJpZXMgZWl0aGVyIGJ5IHBhdGVudHMgb3IgYnkgY29weXJpZ2h0ZWQgaW50ZXJmYWNlcywgdGhlCitvcmlnaW5hbCBjb3B5cmlnaHQgaG9sZGVyIHdobyBwbGFjZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBMaWNlbnNlCittYXkgYWRkIGFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRpbmcKK3Rob3NlIGNvdW50cmllcywgc28gdGhhdCBkaXN0cmlidXRpb24gaXMgcGVybWl0dGVkIG9ubHkgaW4gb3IgYW1vbmcKK2NvdW50cmllcyBub3QgdGh1cyBleGNsdWRlZC4gIEluIHN1Y2ggY2FzZSwgdGhpcyBMaWNlbnNlIGluY29ycG9yYXRlcwordGhlIGxpbWl0YXRpb24gYXMgaWYgd3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCisKKyAgOS4gVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMKK29mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMgd2lsbAorYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvCithZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KKworRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUgUHJvZ3JhbQorc3BlY2lmaWVzIGEgdmVyc2lvbiBudW1iZXIgb2YgdGhpcyBMaWNlbnNlIHdoaWNoIGFwcGxpZXMgdG8gaXQgYW5kICJhbnkKK2xhdGVyIHZlcnNpb24iLCB5b3UgaGF2ZSB0aGUgb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMKK2VpdGhlciBvZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5IHRoZSBGcmVlCitTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgSWYgdGhlIFByb2dyYW0gZG9lcyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mCit0aGlzIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCitGb3VuZGF0aW9uLgorCisgIDEwLiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgUHJvZ3JhbSBpbnRvIG90aGVyIGZyZWUKK3Byb2dyYW1zIHdob3NlIGRpc3RyaWJ1dGlvbiBjb25kaXRpb25zIGFyZSBkaWZmZXJlbnQsIHdyaXRlIHRvIHRoZSBhdXRob3IKK3RvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcyBjb3B5cmlnaHRlZCBieSB0aGUgRnJlZQorU29mdHdhcmUgRm91bmRhdGlvbiwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2Ugc29tZXRpbWVzCittYWtlIGV4Y2VwdGlvbnMgZm9yIHRoaXMuICBPdXIgZGVjaXNpb24gd2lsbCBiZSBndWlkZWQgYnkgdGhlIHR3byBnb2Fscworb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMgb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZAorb2YgcHJvbW90aW5nIHRoZSBzaGFyaW5nIGFuZCByZXVzZSBvZiBzb2Z0d2FyZSBnZW5lcmFsbHkuCisKKwkJCSAgICBOTyBXQVJSQU5UWQorCisgIDExLiBCRUNBVVNFIFRIRSBQUk9HUkFNIElTIExJQ0VOU0VEIEZSRUUgT0YgQ0hBUkdFLCBUSEVSRSBJUyBOTyBXQVJSQU5UWQorRk9SIFRIRSBQUk9HUkFNLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4gIEVYQ0VQVCBXSEVOCitPVEhFUldJU0UgU1RBVEVEIElOIFdSSVRJTkcgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORC9PUiBPVEhFUiBQQVJUSUVTCitQUk9WSURFIFRIRSBQUk9HUkFNICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRAorT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKK01FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBUSEUgRU5USVJFIFJJU0sgQVMKK1RPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUgUFJPR1JBTSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUKK1BST0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FIFRIRSBDT1NUIE9GIEFMTCBORUNFU1NBUlkgU0VSVklDSU5HLAorUkVQQUlSIE9SIENPUlJFQ1RJT04uCisKKyAgMTIuIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORworV0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9USEVSIFBBUlRZIFdITyBNQVkgTU9ESUZZIEFORC9PUgorUkVESVNUUklCVVRFIFRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywKK0lOQ0xVRElORyBBTlkgR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORworT1VUIE9GIFRIRSBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgUFJPR1JBTSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRAorVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZCitZT1UgT1IgVEhJUkQgUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUgorUFJPR1JBTVMpLCBFVkVOIElGIFNVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFCitQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvTWFrZWZpbGUgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM1ZDdjNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9NYWtlZmlsZQpAQCAtMCwwICsxIEBACitzdWJkaXIteSA6PSB0aW1lc3RhbXBpbmcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9QTElQLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9QTElQLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDdlM2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL1BMSVAudHh0CkBAIC0wLDAgKzEsMjE1IEBACitQTElQOiBUaGUgUGFyYWxsZWwgTGluZSBJbnRlcm5ldCBQcm90b2NvbCBEZXZpY2UKKworRG9uYWxkIEJlY2tlciAoYmVja2VyQHN1cGVyLm9yZykKK0kuRC5BLiBTdXBlcmNvbXB1dGluZyBSZXNlYXJjaCBDZW50ZXIsIEJvd2llIE1EIDIwNzE1CisKK0F0IHNvbWUgcG9pbnQgVC4gVGhvcm4gd2lsbCBwcm9iYWJseSBjb250cmlidXRlIHRleHQsCitUb21teSBUaG9ybiAodHRob3JuQGRhaW1pLmFhdS5kaykKKworUExJUCBJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBwYXJhbGxlbCBwb3J0IHBhY2tldCBwdXNoZXIgZm9yIE5ldC9MR1guCitUaGlzIGRldmljZSBpbnRlcmZhY2UgYWxsb3dzIGEgcG9pbnQtdG8tcG9pbnQgY29ubmVjdGlvbiBiZXR3ZWVuIHR3bworcGFyYWxsZWwgcG9ydHMgdG8gYXBwZWFyIGFzIGEgSVAgbmV0d29yayBpbnRlcmZhY2UuCisKK1doYXQgaXMgUExJUD8KKz09PT09PT09PT09PT0KKworUExJUCBpcyBQYXJhbGxlbCBMaW5lIElQLCB0aGF0IGlzLCB0aGUgdHJhbnNwb3J0YXRpb24gb2YgSVAgcGFja2FnZXMKK292ZXIgYSBwYXJhbGxlbCBwb3J0LiBJbiB0aGUgY2FzZSBvZiBhIFBDLCB0aGUgb2J2aW91cyBjaG9pY2UgaXMgdGhlCitwcmludGVyIHBvcnQuICBQTElQIGlzIGEgbm9uLXN0YW5kYXJkLCBidXQgW2NhbiB1c2VdIHVzZXMgdGhlIHN0YW5kYXJkCitMYXBMaW5rIG51bGwtcHJpbnRlciBjYWJsZSBbY2FuIGFsc28gd29yayBpbiB0dXJibyBtb2RlLCB3aXRoIGEgUExJUAorY2FibGVdLiBbVGhlIHByb3RvY29sIHVzZWQgdG8gcGFjayBJUCBwYWNrYWdlcywgaXMgYSBzaW1wbGUgb25lCitpbml0aWF0ZWQgYnkgQ3J5bndyLl0KKworQWR2YW50YWdlcyBvZiBQTElQCis9PT09PT09PT09PT09PT09PT0KKworSXQncyBjaGVhcCwgaXQncyBhdmFpbGFibGUgZXZlcnl3aGVyZSwgYW5kIGl0J3MgZWFzeS4KKworVGhlIFBMSVAgY2FibGUgaXMgYWxsIHRoYXQncyBuZWVkZWQgdG8gY29ubmVjdCB0d28gTGludXggYm94ZXMsIGFuZCBpdAorY2FuIGJlIGJ1aWx0IGZvciB2ZXJ5IGZldyBidWNrcy4KKworQ29ubmVjdGluZyB0d28gTGludXggYm94ZXMgdGFrZXMgb25seSBhIHNlY29uZCdzIGRlY2lzaW9uIGFuZCBhIGZldworbWludXRlcycgd29yaywgbm8gbmVlZCB0byBzZWFyY2ggZm9yIGEgW3N1cHBvcnRlZF0gbmV0Y2FyZC4gVGhpcyBtaWdodAorZXZlbiBiZSBlc3BlY2lhbGx5IGltcG9ydGFudCBpbiB0aGUgY2FzZSBvZiBub3RlYm9va3MsIHdoZXJlIG5ldGNhcmRzCithcmUgbm90IGVhc2lseSBhdmFpbGFibGUuCisKK05vdCByZXF1aXJpbmcgYSBuZXRjYXJkIGFsc28gbWVhbnMgdGhhdCBhcGFydCBmcm9tIGNvbm5lY3RpbmcgdGhlCitjYWJsZXMsIGV2ZXJ5dGhpbmcgZWxzZSBpcyBzb2Z0d2FyZSBjb25maWd1cmF0aW9uIFt3aGljaCBpbiBwcmluY2lwbGUKK2NvdWxkIGJlIG1hZGUgdmVyeSBlYXN5Ll0KKworRGlzYWR2YW50YWdlcyBvZiBQTElQCis9PT09PT09PT09PT09PT09PT09PT0KKworRG9lc24ndCB3b3JrIG92ZXIgYSBtb2RlbSwgbGlrZSBTTElQIGFuZCBQUFAuIExpbWl0ZWQgcmFuZ2UsIDE1IG0uCitDYW4gb25seSBiZSB1c2VkIHRvIGNvbm5lY3QgdGhyZWUgKD8pIExpbnV4IGJveGVzLiBEb2Vzbid0IGNvbm5lY3QgdG8KK2FuIGV4aXN0aW5nIEV0aGVybmV0LiBJc24ndCBzdGFuZGFyZCAobm90IGV2ZW4gZGUgZmFjdG8gc3RhbmRhcmQsIGxpa2UKK1NMSVApLgorCitQZXJmb3JtYW5jZQorPT09PT09PT09PT0KKworUExJUCBlYXNpbHkgb3V0cGVyZm9ybXMgRXRoZXJuZXQgY2FyZHMuLi4uKHVwcywgSSB3YXMgZHJlYW1pbmcsIGJ1dAoraXQgKmlzKiBnZXR0aW5nIGxhdGUuIEVPQikKKworUExJUCBkcml2ZXIgZGV0YWlscworLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgTGludXggUExJUCBkcml2ZXIgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG9yaWdpbmFsIENyeW53ciBwcm90b2NvbCwKK3RoYXQgdXNlcyB0aGUgcGFyYWxsZWwgcG9ydCBzdWJzeXN0ZW0gb2YgdGhlIGtlcm5lbCBpbiBvcmRlciB0byBwcm9wZXJseQorc2hhcmUgcGFyYWxsZWwgcG9ydHMgYmV0d2VlbiBQTElQIGFuZCBvdGhlciBzZXJ2aWNlcy4KKworSVJRcyBhbmQgdHJpZ2dlciB0aW1lb3V0cworPT09PT09PT09PT09PT09PT09PT09PT09PQorCitXaGVuIGEgcGFyYWxsZWwgcG9ydCB1c2VkIGZvciBhIFBMSVAgZHJpdmVyIGhhcyBhbiBJUlEgY29uZmlndXJlZCB0byBpdCwgdGhlCitQTElQIGRyaXZlciBpcyBzaWduYWxlZCB3aGVuZXZlciBkYXRhIGlzIHNlbnQgdG8gaXQgdmlhIHRoZSBjYWJsZSwgc3VjaCB0aGF0Cit3aGVuIG5vIGRhdGEgaXMgYXZhaWxhYmxlLCB0aGUgZHJpdmVyIGlzbid0IGJlaW5nIHVzZWQuCisKK0hvd2V2ZXIsIG9uIHNvbWUgbWFjaGluZXMgaXQgaXMgaGFyZCwgaWYgbm90IGltcG9zc2libGUsIHRvIGNvbmZpZ3VyZSBhbiBJUlEKK3RvIGEgY2VydGFpbiBwYXJhbGxlbCBwb3J0LCBtYWlubHkgYmVjYXVzZSBpdCBpcyB1c2VkIGJ5IHNvbWUgb3RoZXIgZGV2aWNlLgorT24gdGhlc2UgbWFjaGluZXMsIHRoZSBQTElQIGRyaXZlciBjYW4gYmUgdXNlZCBpbiBJUlEtbGVzcyBtb2RlLCB3aGVyZQordGhlIFBMSVAgZHJpdmVyIHdvdWxkIGNvbnN0YW50bHkgcG9sbCB0aGUgcGFyYWxsZWwgcG9ydCBmb3IgZGF0YSB3YWl0aW5nLAorYW5kIGlmIHN1Y2ggZGF0YSBpcyBhdmFpbGFibGUsIHByb2Nlc3MgaXQuIFRoaXMgbW9kZSBpcyBsZXNzIGVmZmljaWVudCB0aGFuCit0aGUgSVJRIG1vZGUsIGJlY2F1c2UgdGhlIGRyaXZlciBoYXMgdG8gY2hlY2sgdGhlIHBhcmFsbGVsIHBvcnQgbWFueSB0aW1lcworcGVyIHNlY29uZCwgZXZlbiB3aGVuIG5vIGRhdGEgYXQgYWxsIGlzIHNlbnQuIFNvbWUgcm91Z2ggbWVhc3VyZW1lbnRzCitpbmRpY2F0ZSB0aGF0IHRoZXJlIGlzbid0IGEgbm90aWNlYWJsZSBwZXJmb3JtYW5jZSBkcm9wIHdoZW4gdXNpbmcgSVJRLWxlc3MKK21vZGUgYXMgY29tcGFyZWQgdG8gSVJRIG1vZGUgYXMgZmFyIGFzIHRoZSBkYXRhIHRyYW5zZmVyIHNwZWVkIGlzIGludm9sdmVkLgorVGhlcmUgaXMgYSBwZXJmb3JtYW5jZSBkcm9wIG9uIHRoZSBtYWNoaW5lIGhvc3RpbmcgdGhlIGRyaXZlci4KKworV2hlbiB0aGUgUExJUCBkcml2ZXIgaXMgdXNlZCBpbiBJUlEgbW9kZSwgdGhlIHRpbWVvdXQgdXNlZCBmb3IgdHJpZ2dlcmluZyBhCitkYXRhIHRyYW5zZmVyICh0aGUgbWF4aW1hbCB0aW1lIHRoZSBQTElQIGRyaXZlciB3b3VsZCBhbGxvdyB0aGUgb3RoZXIgc2lkZQorYmVmb3JlIGFubm91bmNpbmcgYSB0aW1lb3V0LCB3aGVuIHRyeWluZyB0byBoYW5kc2hha2UgYSB0cmFuc2ZlciBvZiBzb21lCitkYXRhKSBpcywgYnkgZGVmYXVsdCwgNTAwdXNlYy4gQXMgSVJRIGRlbGl2ZXJ5IGlzIG1vcmUgb3IgbGVzcyBpbW1lZGlhdGUsCit0aGlzIHRpbWVvdXQgaXMgcXVpdGUgc3VmZmljaWVudC4gCisKK1doZW4gaW4gSVJRLWxlc3MgbW9kZSwgdGhlIFBMSVAgZHJpdmVyIHBvbGxzIHRoZSBwYXJhbGxlbCBwb3J0IEhaIHRpbWVzCitwZXIgc2Vjb25kICh3aGVyZSBIWiBpcyB0eXBpY2FsbHkgMTAwIG9uIG1vc3QgcGxhdGZvcm1zLCBhbmQgMTAyNCBvbiBhbgorQWxwaGEsIGFzIG9mIHRoaXMgd3JpdGluZykuIEJldHdlZW4gdHdvIHN1Y2ggcG9sbHMsIHRoZXJlIGFyZSAxMF42L0haIHVzZWNzLgorT24gYW4gaTM4NiwgZm9yIGV4YW1wbGUsIDEwXjYvMTAwID0gMTAwMDB1c2VjLiBJdCBpcyBlYXN5IHRvIHNlZSB0aGF0IGl0IGlzCitxdWl0ZSBwb3NzaWJsZSBmb3IgdGhlIHRyaWdnZXIgdGltZW91dCB0byBleHBpcmUgYmV0d2VlbiB0d28gc3VjaCBwb2xscywgYXMKK3RoZSB0aW1lb3V0IGlzIG9ubHkgNTAwdXNlYyBsb25nLiBBcyBhIHJlc3VsdCwgaXQgaXMgcmVxdWlyZWQgdG8gY2hhbmdlIHRoZQordHJpZ2dlciB0aW1lb3V0IG9uIHRoZSAqb3RoZXIqIHNpZGUgb2YgYSBQTElQIGNvbm5lY3Rpb24sIHRvIGFib3V0CisxMF42L0haIHVzZWNzLiBJZiBib3RoIHNpZGVzIG9mIGEgUExJUCBjb25uZWN0aW9uIGFyZSB1c2VkIGluIElSUS1sZXNzIG1vZGUsCit0aGlzIHRpbWVvdXQgaXMgcmVxdWlyZWQgb24gYm90aCBzaWRlcy4KKworSXQgYXBwZWFycyB0aGF0IGluIHByYWN0aWNlLCB0aGUgdHJpZ2dlciB0aW1lb3V0IGNhbiBiZSBzaG9ydGVyIHRoYW4gaW4gdGhlCithYm92ZSBjYWxjdWxhdGlvbi4gSXQgaXNuJ3QgYW4gaW1wb3J0YW50IGlzc3VlLCB1bmxlc3MgdGhlIHdpcmUgaXMgZmF1bHR5LAoraW4gd2hpY2ggY2FzZSBhIGxvbmcgdGltZW91dCB3b3VsZCBzdGFsbCB0aGUgbWFjaGluZSB3aGVuLCBmb3Igd2hhdGV2ZXIKK3JlYXNvbiwgYml0cyBhcmUgZHJvcHBlZC4KKworQSB1dGlsaXR5IHRoYXQgY2FuIHBlcmZvcm0gdGhpcyBjaGFuZ2UgaW4gTGludXggaXMgcGxpcGNvbmZpZywgd2hpY2ggaXMgcGFydAorb2YgdGhlIG5ldC10b29scyBwYWNrYWdlIChpdHMgbG9jYXRpb24gY2FuIGJlIGZvdW5kIGluIHRoZQorRG9jdW1lbnRhdGlvbi9DaGFuZ2VzIGZpbGUpLiBBbiBleGFtcGxlIGNvbW1hbmQgd291bGQgYmUKKydwbGlwY29uZmlnIHBsaXBYIHRyaWdnZXIgMTAwMDAnLCB3aGVyZSBwbGlwWCBpcyB0aGUgYXBwcm9wcmlhdGUKK1BMSVAgZGV2aWNlLgorCitQTElQIGhhcmR3YXJlIGludGVyY29ubmVjdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUExJUCB1c2VzIHNldmVyYWwgZGlmZmVyZW50IGRhdGEgdHJhbnNmZXIgbWV0aG9kcy4gIFRoZSBmaXJzdCAoYW5kIHRoZQorb25seSBvbmUgaW1wbGVtZW50ZWQgaW4gdGhlIGVhcmx5IHZlcnNpb24gb2YgdGhlIGNvZGUpIHVzZXMgYSBzdGFuZGFyZAorcHJpbnRlciAibnVsbCIgY2FibGUgdG8gdHJhbnNmZXIgZGF0YSBmb3VyIGJpdHMgYXQgYSB0aW1lIHVzaW5nCitkYXRhIGJpdCBvdXRwdXRzIGNvbm5lY3RlZCB0byBzdGF0dXMgYml0IGlucHV0cy4KKworVGhlIHNlY29uZCBkYXRhIHRyYW5zZmVyIG1ldGhvZCByZWxpZXMgb24gYm90aCBtYWNoaW5lcyBoYXZpbmcKK2JpLWRpcmVjdGlvbmFsIHBhcmFsbGVsIHBvcnRzLCByYXRoZXIgdGhhbiBvdXRwdXQtb25seSBgYHByaW50ZXInJworcG9ydHMuICBUaGlzIGFsbG93cyBieXRlLXdpZGUgdHJhbnNmZXJzIGFuZCBhdm9pZHMgcmVjb25zdHJ1Y3RpbmcKK25pYmJsZXMgaW50byBieXRlcywgbGVhZGluZyB0byBtdWNoIGZhc3RlciB0cmFuc2ZlcnMuCisKK1BhcmFsbGVsIFRyYW5zZmVyIE1vZGUgMCBDYWJsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBjYWJsZSBmb3IgdGhlIGZpcnN0IHRyYW5zZmVyIG1vZGUgaXMgYSBzdGFuZGFyZAorcHJpbnRlciAibnVsbCIgY2FibGUgd2hpY2ggdHJhbnNmZXJzIGRhdGEgZm91ciBiaXRzIGF0IGEgdGltZSB1c2luZworZGF0YSBiaXQgb3V0cHV0cyBvZiB0aGUgZmlyc3QgcG9ydCAobWFjaGluZSBUKSBjb25uZWN0ZWQgdG8gdGhlCitzdGF0dXMgYml0IGlucHV0cyBvZiB0aGUgc2Vjb25kIHBvcnQgKG1hY2hpbmUgUikuICBUaGVyZSBhcmUgZml2ZQorc3RhdHVzIGlucHV0cywgYW5kIHRoZXkgYXJlIHVzZWQgYXMgZm91ciBkYXRhIGlucHV0cyBhbmQgYSBjbG9jayAoZGF0YQorc3Ryb2JlKSBpbnB1dCwgYXJyYW5nZWQgc28gdGhhdCB0aGUgZGF0YSBpbnB1dCBiaXRzIGFwcGVhciBhcyBjb250aWd1b3VzCitiaXRzIHdpdGggc3RhbmRhcmQgc3RhdHVzIHJlZ2lzdGVyIGltcGxlbWVudGF0aW9uLgorCitBIGNhYmxlIHRoYXQgaW1wbGVtZW50cyB0aGlzIHByb3RvY29sIGlzIGF2YWlsYWJsZSBjb21tZXJjaWFsbHkgYXMgYQorIk51bGwgUHJpbnRlciIgb3IgIlR1cmJvIExhcGxpbmsiIGNhYmxlLiAgSXQgY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGgKK3R3byBEQi0yNSBtYWxlIGNvbm5lY3RvcnMgc3ltbWV0cmljYWxseSBjb25uZWN0ZWQgYXMgZm9sbG93czoKKworICAgIFNUUk9CRSBvdXRwdXQJMSoKKyAgICBEMC0+RVJST1IJMiAtIDE1CQkxNSAtIDIKKyAgICBEMS0+U0xDVAkzIC0gMTMJCTEzIC0gMworICAgIEQyLT5QQVBPVVQJNCAtIDEyCQkxMiAtIDQKKyAgICBEMy0+QUNLCTUgLSAxMAkJMTAgLSA1CisgICAgRDQtPkJVU1kJNiAtIDExCQkxMSAtIDYKKyAgICBENSxENixENyBhcmUgICA3KiwgOCosIDkqCisgICAgQVVUT0ZEIG91dHB1dCAxNCoKKyAgICBJTklUICAgb3V0cHV0IDE2KgorICAgIFNMQ1RJTgkxNyAtIDE3CisgICAgZXh0cmEgZ3JvdW5kcyBhcmUgMTgqLDE5KiwyMCosMjEqLDIyKiwyMyosMjQqCisgICAgR1JPVU5ECTI1IC0gMjUKKyogRG8gbm90IGNvbm5lY3QgdGhlc2UgcGlucyBvbiBlaXRoZXIgZW5kCisKK0lmIHRoZSBjYWJsZSB5b3UgYXJlIHVzaW5nIGhhcyBhIG1ldGFsbGljIHNoaWVsZCBpdCBzaG91bGQgYmUKK2Nvbm5lY3RlZCB0byB0aGUgbWV0YWxsaWMgREItMjUgc2hlbGwgYXQgb25lIGVuZCBvbmx5LgorCitQYXJhbGxlbCBUcmFuc2ZlciBNb2RlIDEKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgc2Vjb25kIGRhdGEgdHJhbnNmZXIgbWV0aG9kIHJlbGllcyBvbiBib3RoIG1hY2hpbmVzIGhhdmluZworYmktZGlyZWN0aW9uYWwgcGFyYWxsZWwgcG9ydHMsIHJhdGhlciB0aGFuIG91dHB1dC1vbmx5IGBgcHJpbnRlcicnCitwb3J0cy4gIFRoaXMgYWxsb3dzIGJ5dGUtd2lkZSB0cmFuc2ZlcnMsIGFuZCBhdm9pZHMgcmVjb25zdHJ1Y3RpbmcKK25pYmJsZXMgaW50byBieXRlcy4gIFRoaXMgY2FibGUgc2hvdWxkIG5vdCBiZSB1c2VkIG9uIHVuaWRpcmVjdGlvbmFsCitgYHByaW50ZXInJyAoYXMgb3Bwb3NlZCB0byBgYHBhcmFsbGVsJycpIHBvcnRzIG9yIHdoZW4gdGhlIG1hY2hpbmUKK2lzbid0IGNvbmZpZ3VyZWQgZm9yIFBMSVAsIGFzIGl0IHdpbGwgcmVzdWx0IGluIG91dHB1dCBkcml2ZXIKK2NvbmZsaWN0cyBhbmQgdGhlICh1bmxpa2VseSkgcG9zc2liaWxpdHkgb2YgZGFtYWdlLgorCitUaGUgY2FibGUgZm9yIHRoaXMgdHJhbnNmZXIgbW9kZSBzaG91bGQgYmUgY29uc3RydWN0ZWQgYXMgZm9sbG93czoKKworICAgIFNUUk9CRS0+QlVTWSAxIC0gMTEKKyAgICBEMC0+RDAJMiAtIDIKKyAgICBEMS0+RDEJMyAtIDMKKyAgICBEMi0+RDIJNCAtIDQKKyAgICBEMy0+RDMJNSAtIDUKKyAgICBENC0+RDQJNiAtIDYKKyAgICBENS0+RDUJNyAtIDcKKyAgICBENi0+RDYJOCAtIDgKKyAgICBENy0+RDcJOSAtIDkKKyAgICBJTklUIC0+IEFDSyAgMTYgLSAxMAorICAgIEFVVE9GRC0+UEFQT1VUIDE0IC0gMTIKKyAgICBTTENULT5TTENUSU4gMTMgLSAxNworICAgIEdORC0+RVJST1IJMTggLSAxNQorICAgIGV4dHJhIGdyb3VuZHMgYXJlIDE5KiwyMCosMjEqLDIyKiwyMyosMjQqCisgICAgR1JPVU5ECTI1IC0gMjUKKyogRG8gbm90IGNvbm5lY3QgdGhlc2UgcGlucyBvbiBlaXRoZXIgZW5kCisKK09uY2UgYWdhaW4sIGlmIHRoZSBjYWJsZSB5b3UgYXJlIHVzaW5nIGhhcyBhIG1ldGFsbGljIHNoaWVsZCBpdCBzaG91bGQKK2JlIGNvbm5lY3RlZCB0byB0aGUgbWV0YWxsaWMgREItMjUgc2hlbGwgYXQgb25lIGVuZCBvbmx5LgorCitQTElQIE1vZGUgMCB0cmFuc2ZlciBwcm90b2NvbAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIFBMSVAgZHJpdmVyIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgIkNyeW53ciIgcGFyYWxsZWwgcG9ydCB0cmFuc2Zlcgorc3RhbmRhcmQgaW4gTW9kZSAwLiAgVGhhdCBzdGFuZGFyZCBzcGVjaWZpZXMgdGhlIGZvbGxvd2luZyBwcm90b2NvbDoKKworICAgc2VuZCBoZWFkZXIgbmliYmxlICcweDgnCisgICBjb3VudC1sb3cgb2N0ZXQKKyAgIGNvdW50LWhpZ2ggb2N0ZXQKKyAgIC4uLiBkYXRhIG9jdGV0cworICAgY2hlY2tzdW0gb2N0ZXQKKworRWFjaCBvY3RldCBpcyBzZW50IGFzCisJPHdhaXQgZm9yIHJ4LiAnMHgxPyc+CTxzZW5kIDB4MTArKG9jdGV0JjB4MEYpPgorCTx3YWl0IGZvciByeC4gJzB4MD8nPgk8c2VuZCAweDAwKygob2N0ZXQ+PjQpJjB4MEYpPgorCitUbyBzdGFydCBhIHRyYW5zZmVyIHRoZSB0cmFuc21pdHRpbmcgbWFjaGluZSBvdXRwdXRzIGEgbmliYmxlIDB4MDguCitUaGF0IHJhaXNlcyB0aGUgQUNLIGxpbmUsIHRyaWdnZXJpbmcgYW4gaW50ZXJydXB0IGluIHRoZSByZWNlaXZpbmcKK21hY2hpbmUuICBUaGUgcmVjZWl2aW5nIG1hY2hpbmUgZGlzYWJsZXMgaW50ZXJydXB0cyBhbmQgcmFpc2VzIGl0cyBvd24gQUNLCitsaW5lLiAKKworUmVzdGF0ZWQ6CisKKyhPVVQgaXMgYml0IDAtNCwgT1VULmogaXMgYml0IGogZnJvbSBPVVQuIElOIGxpa2V3aXNlKQorU2VuZF9CeXRlOgorICAgT1VUIDo9IGxvdyBuaWJibGUsIE9VVC40IDo9IDEKKyAgIFdBSVQgRk9SIElOLjQgPSAxCisgICBPVVQgOj0gaGlnaCBuaWJibGUsIE9VVC40IDo9IDAKKyAgIFdBSVQgRk9SIElOLjQgPSAwCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvUkVBRE1FLmlwdzIxMDAgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvUkVBRE1FLmlwdzIxMDAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY4NWUxZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9SRUFETUUuaXB3MjEwMApAQCAtMCwwICsxLDI5MyBAQAorCitJbnRlbChSKSBQUk8vV2lyZWxlc3MgMjEwMCBEcml2ZXIgZm9yIExpbnV4IGluIHN1cHBvcnQgb2Y6CisKK0ludGVsKFIpIFBSTy9XaXJlbGVzcyAyMTAwIE5ldHdvcmsgQ29ubmVjdGlvbgorCitDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNiwgSW50ZWwgQ29ycG9yYXRpb24KKworUkVBRE1FLmlwdzIxMDAKKworVmVyc2lvbjogZ2l0LTEuMS41CitEYXRlICAgOiBKYW51YXJ5IDI1LCAyMDA2CisKK0luZGV4CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMC4gSU1QT1JUQU5UIElORk9STUFUSU9OIEJFRk9SRSBVU0lORyBUSElTIERSSVZFUgorMS4gSW50cm9kdWN0aW9uCisyLiBSZWxlYXNlIGdpdC0xLjEuNSBDdXJyZW50IEZlYXR1cmVzCiszLiBDb21tYW5kIExpbmUgUGFyYW1ldGVycworNC4gU3lzZnMgSGVscGVyIEZpbGVzCis1LiBSYWRpbyBLaWxsIFN3aXRjaAorNi4gRHluYW1pYyBGaXJtd2FyZQorNy4gUG93ZXIgTWFuYWdlbWVudAorOC4gU3VwcG9ydAorOS4gTGljZW5zZQorCisKKzAuICAgSU1QT1JUQU5UIElORk9STUFUSU9OIEJFRk9SRSBVU0lORyBUSElTIERSSVZFUgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW1wb3J0YW50IE5vdGljZSBGT1IgQUxMIFVTRVJTIE9SIERJU1RSSUJVVE9SUyEhISEKKworSW50ZWwgd2lyZWxlc3MgTEFOIGFkYXB0ZXJzIGFyZSBlbmdpbmVlcmVkLCBtYW51ZmFjdHVyZWQsIHRlc3RlZCwgYW5kCitxdWFsaXR5IGNoZWNrZWQgdG8gZW5zdXJlIHRoYXQgdGhleSBtZWV0IGFsbCBuZWNlc3NhcnkgbG9jYWwgYW5kCitnb3Zlcm5tZW50YWwgcmVndWxhdG9yeSBhZ2VuY3kgcmVxdWlyZW1lbnRzIGZvciB0aGUgcmVnaW9ucyB0aGF0IHRoZXkKK2FyZSBkZXNpZ25hdGVkIGFuZC9vciBtYXJrZWQgdG8gc2hpcCBpbnRvLiBTaW5jZSB3aXJlbGVzcyBMQU5zIGFyZQorZ2VuZXJhbGx5IHVubGljZW5zZWQgZGV2aWNlcyB0aGF0IHNoYXJlIHNwZWN0cnVtIHdpdGggcmFkYXJzLAorc2F0ZWxsaXRlcywgYW5kIG90aGVyIGxpY2Vuc2VkIGFuZCB1bmxpY2Vuc2VkIGRldmljZXMsIGl0IGlzIHNvbWV0aW1lcworbmVjZXNzYXJ5IHRvIGR5bmFtaWNhbGx5IGRldGVjdCwgYXZvaWQsIGFuZCBsaW1pdCB1c2FnZSB0byBhdm9pZAoraW50ZXJmZXJlbmNlIHdpdGggdGhlc2UgZGV2aWNlcy4gSW4gbWFueSBpbnN0YW5jZXMgSW50ZWwgaXMgcmVxdWlyZWQgdG8KK3Byb3ZpZGUgdGVzdCBkYXRhIHRvIHByb3ZlIHJlZ2lvbmFsIGFuZCBsb2NhbCBjb21wbGlhbmNlIHRvIHJlZ2lvbmFsIGFuZAorZ292ZXJubWVudGFsIHJlZ3VsYXRpb25zIGJlZm9yZSBjZXJ0aWZpY2F0aW9uIG9yIGFwcHJvdmFsIHRvIHVzZSB0aGUKK3Byb2R1Y3QgaXMgZ3JhbnRlZC4gSW50ZWwncyB3aXJlbGVzcyBMQU4ncyBFRVBST00sIGZpcm13YXJlLCBhbmQKK3NvZnR3YXJlIGRyaXZlciBhcmUgZGVzaWduZWQgdG8gY2FyZWZ1bGx5IGNvbnRyb2wgcGFyYW1ldGVycyB0aGF0IGFmZmVjdAorcmFkaW8gb3BlcmF0aW9uIGFuZCB0byBlbnN1cmUgZWxlY3Ryb21hZ25ldGljIGNvbXBsaWFuY2UgKEVNQykuIFRoZXNlCitwYXJhbWV0ZXJzIGluY2x1ZGUsIHdpdGhvdXQgbGltaXRhdGlvbiwgUkYgcG93ZXIsIHNwZWN0cnVtIHVzYWdlLAorY2hhbm5lbCBzY2FubmluZywgYW5kIGh1bWFuIGV4cG9zdXJlLgorCitGb3IgdGhlc2UgcmVhc29ucyBJbnRlbCBjYW5ub3QgcGVybWl0IGFueSBtYW5pcHVsYXRpb24gYnkgdGhpcmQgcGFydGllcworb2YgdGhlIHNvZnR3YXJlIHByb3ZpZGVkIGluIGJpbmFyeSBmb3JtYXQgd2l0aCB0aGUgd2lyZWxlc3MgV0xBTgorYWRhcHRlcnMgKGUuZy4sIHRoZSBFRVBST00gYW5kIGZpcm13YXJlKS4gRnVydGhlcm1vcmUsIGlmIHlvdSB1c2UgYW55CitwYXRjaGVzLCB1dGlsaXRpZXMsIG9yIGNvZGUgd2l0aCB0aGUgSW50ZWwgd2lyZWxlc3MgTEFOIGFkYXB0ZXJzIHRoYXQKK2hhdmUgYmVlbiBtYW5pcHVsYXRlZCBieSBhbiB1bmF1dGhvcml6ZWQgcGFydHkgKGkuZS4sIHBhdGNoZXMsCit1dGlsaXRpZXMsIG9yIGNvZGUgKGluY2x1ZGluZyBvcGVuIHNvdXJjZSBjb2RlIG1vZGlmaWNhdGlvbnMpIHdoaWNoIGhhdmUKK25vdCBiZWVuIHZhbGlkYXRlZCBieSBJbnRlbCksIChpKSB5b3Ugd2lsbCBiZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yCitlbnN1cmluZyB0aGUgcmVndWxhdG9yeSBjb21wbGlhbmNlIG9mIHRoZSBwcm9kdWN0cywgKGlpKSBJbnRlbCB3aWxsIGJlYXIKK25vIGxpYWJpbGl0eSwgdW5kZXIgYW55IHRoZW9yeSBvZiBsaWFiaWxpdHkgZm9yIGFueSBpc3N1ZXMgYXNzb2NpYXRlZAord2l0aCB0aGUgbW9kaWZpZWQgcHJvZHVjdHMsIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24sIGNsYWltcyB1bmRlcgordGhlIHdhcnJhbnR5IGFuZC9vciBpc3N1ZXMgYXJpc2luZyBmcm9tIHJlZ3VsYXRvcnkgbm9uLWNvbXBsaWFuY2UsIGFuZAorKGlpaSkgSW50ZWwgd2lsbCBub3QgcHJvdmlkZSBvciBiZSByZXF1aXJlZCB0byBhc3Npc3QgaW4gcHJvdmlkaW5nCitzdXBwb3J0IHRvIGFueSB0aGlyZCBwYXJ0aWVzIGZvciBzdWNoIG1vZGlmaWVkIHByb2R1Y3RzLgorCitOb3RlOiBNYW55IHJlZ3VsYXRvcnkgYWdlbmNpZXMgY29uc2lkZXIgV2lyZWxlc3MgTEFOIGFkYXB0ZXJzIHRvIGJlCittb2R1bGVzLCBhbmQgYWNjb3JkaW5nbHksIGNvbmRpdGlvbiBzeXN0ZW0tbGV2ZWwgcmVndWxhdG9yeSBhcHByb3ZhbAordXBvbiByZWNlaXB0IGFuZCByZXZpZXcgb2YgdGVzdCBkYXRhIGRvY3VtZW50aW5nIHRoYXQgdGhlIGFudGVubmFzIGFuZAorc3lzdGVtIGNvbmZpZ3VyYXRpb24gZG8gbm90IGNhdXNlIHRoZSBFTUMgYW5kIHJhZGlvIG9wZXJhdGlvbiB0byBiZQorbm9uLWNvbXBsaWFudC4KKworVGhlIGRyaXZlcnMgYXZhaWxhYmxlIGZvciBkb3dubG9hZCBmcm9tIFNvdXJjZUZvcmdlIGFyZSBwcm92aWRlZCBhcyBhCitwYXJ0IG9mIGEgZGV2ZWxvcG1lbnQgcHJvamVjdC4gIENvbmZvcm1hbmNlIHRvIGxvY2FsIHJlZ3VsYXRvcnkKK3JlcXVpcmVtZW50cyBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGluZGl2aWR1YWwgZGV2ZWxvcGVyLiAgQXMKK3N1Y2gsIGlmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiBkZXBsb3lpbmcgb3Igc2hpcHBpbmcgYSBkcml2ZXIgYXMgcGFydCBvZgorc29sdXRpb24gaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgcHVycG9zZXMgb3RoZXIgdGhhbiBkZXZlbG9wbWVudCwgcGxlYXNlCitvYnRhaW4gYSB0ZXN0ZWQgZHJpdmVyIGZyb20gSW50ZWwgQ3VzdG9tZXIgU3VwcG9ydCBhdDoKKworaHR0cDovL3d3dy5pbnRlbC5jb20vc3VwcG9ydC93aXJlbGVzcy9zYi9DUy0wMDY0MDguaHRtCisKKzEuIEludHJvZHVjdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBkb2N1bWVudCBwcm92aWRlcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIHRoZSBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgdGhlIAorSVBXMjEwMCBkcml2ZXIgcHJvamVjdC4gIFRoZSBtYWluIHByb2plY3Qgd2Vic2l0ZSwgd2hlcmUgdGhlIGxhdGVzdCAKK2RldmVsb3BtZW50IHZlcnNpb24gb2YgdGhlIGRyaXZlciBjYW4gYmUgZm91bmQsIGlzOgorCisJaHR0cDovL2lwdzIxMDAuc291cmNlZm9yZ2UubmV0CisKK1RoZXJlIHlvdSBjYW4gZmluZCB0aGUgbm90IG9ubHkgdGhlIGxhdGVzdCByZWxlYXNlcywgYnV0IGFsc28gaW5mb3JtYXRpb24gYWJvdXQKK3BvdGVudGlhbCBmaXhlcyBhbmQgcGF0Y2hlcywgYXMgd2VsbCBhcyBsaW5rcyB0byB0aGUgZGV2ZWxvcG1lbnQgbWFpbGluZyBsaXN0Citmb3IgdGhlIGRyaXZlciBwcm9qZWN0LgorCisKKzIuIFJlbGVhc2UgZ2l0LTEuMS41IEN1cnJlbnQgU3VwcG9ydGVkIEZlYXR1cmVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLSBNYW5hZ2VkIChCU1MpIGFuZCBBZC1Ib2MgKElCU1MpCistIFdFUCAoc2hhcmVkIGtleSBhbmQgb3BlbikKKy0gV2lyZWxlc3MgVG9vbHMgc3VwcG9ydCAKKy0gODAyLjF4ICh0ZXN0ZWQgd2l0aCBYU3VwcGxpY2FudCAxLjAuMSkKKworRW5hYmxlZCAoYnV0IG5vdCBzdXBwb3J0ZWQpIGZlYXR1cmVzOgorLSBNb25pdG9yL1JGTW9uIG1vZGUKKy0gV1BBL1dQQTIKKworVGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gb2ZmaWNpYWxseSBzdXBwb3J0ZWQgYW5kIGVuYWJsZWQgaXMgYSByZWZsZWN0aW9uCitvbiB0aGUgYW1vdW50IG9mIHZhbGlkYXRpb24gYW5kIGludGVyb3BlcmFiaWxpdHkgdGVzdGluZyB0aGF0IGhhcyBiZWVuCitwZXJmb3JtZWQgb24gYSBnaXZlbiBmZWF0dXJlLgorCisKKzMuIENvbW1hbmQgTGluZSBQYXJhbWV0ZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJZiB0aGUgZHJpdmVyIGlzIGJ1aWx0IGFzIGEgbW9kdWxlLCB0aGUgZm9sbG93aW5nIG9wdGlvbmFsIHBhcmFtZXRlcnMgYXJlIHVzZWQKK2J5IGVudGVyaW5nIHRoZW0gb24gdGhlIGNvbW1hbmQgbGluZSB3aXRoIHRoZSBtb2Rwcm9iZSBjb21tYW5kIHVzaW5nIHRoaXMKK3N5bnRheDoKKworCW1vZHByb2JlIGlwdzIxMDAgWzxvcHRpb24+PTxWQUwxPjwsVkFMMj4uLi5dCisKK0ZvciBleGFtcGxlLCB0byBkaXNhYmxlIHRoZSByYWRpbyBvbiBkcml2ZXIgbG9hZGluZywgZW50ZXI6CisKKwltb2Rwcm9iZSBpcHcyMTAwIGRpc2FibGU9MQorCitUaGUgaXB3MjEwMCBkcml2ZXIgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBtb2R1bGUgcGFyYW1ldGVyczoKKworTmFtZQkJVmFsdWUJCUV4YW1wbGU6CitkZWJ1ZwkJMHgwLTB4ZmZmZmZmZmYJZGVidWc9MTAyNAorbW9kZQkJMCwxLDIJCW1vZGU9MSAgIC8qIEFkSG9jICovCitjaGFubmVsCQlpbnQJCWNoYW5uZWw9MyAvKiBPbmx5IHZhbGlkIGluIEFkSG9jIG9yIE1vbml0b3IgKi8KK2Fzc29jaWF0ZQlib29sZWFuCQlhc3NvY2lhdGU9MCAvKiBEbyBOT1QgYXV0byBhc3NvY2lhdGUgKi8KK2Rpc2FibGUJCWJvb2xlYW4JCWRpc2FibGU9MSAvKiBEbyBub3QgcG93ZXIgdGhlIEhXICovCisKKworNC4gU3lzZnMgSGVscGVyIEZpbGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgYXJlIHNldmVyYWwgd2F5cyB0byBjb250cm9sIHRoZSBiZWhhdmlvciBvZiB0aGUgZHJpdmVyLiAgTWFueSBvZiB0aGUgCitnZW5lcmFsIGNhcGFiaWxpdGllcyBhcmUgZXhwb3NlZCB0aHJvdWdoIHRoZSBXaXJlbGVzcyBUb29scyAoaXdjb25maWcpLiAgVGhlcmUKK2FyZSBhIGZldyBjYXBhYmlsaXRpZXMgdGhhdCBhcmUgZXhwb3NlZCB0aHJvdWdoIGVudHJpZXMgaW4gdGhlIExpbnV4IFN5c2ZzLgorCisKKy0tLS0tIERyaXZlciBMZXZlbCAtLS0tLS0KK0ZvciB0aGUgZHJpdmVyIGxldmVsIGZpbGVzLCBsb29rIGluIC9zeXMvYnVzL3BjaS9kcml2ZXJzL2lwdzIxMDAvCisKKyAgZGVidWdfbGV2ZWwgIAorCQorCVRoaXMgY29udHJvbHMgdGhlIHNhbWUgZ2xvYmFsIGFzIHRoZSAnZGVidWcnIG1vZHVsZSBwYXJhbWV0ZXIuICBGb3IgCisgICAgICAgIGluZm9ybWF0aW9uIG9uIHRoZSB2YXJpb3VzIGRlYnVnZ2luZyBsZXZlbHMgYXZhaWxhYmxlLCBydW4gdGhlICdkdmFscycKKwlzY3JpcHQgZm91bmQgaW4gdGhlIGRyaXZlciBzb3VyY2UgZGlyZWN0b3J5LgorCisJTk9URTogICdkZWJ1Z19sZXZlbCcgaXMgb25seSBlbmFibGVkIGlmIENPTkZJR19JUFcyMTAwX0RFQlVHIGlzIHR1cm4KKwkgICAgICAgb24uCisKKy0tLS0tIERldmljZSBMZXZlbCAtLS0tLS0KK0ZvciB0aGUgZGV2aWNlIGxldmVsIGZpbGVzIGxvb2sgaW4KKwkKKwkvc3lzL2J1cy9wY2kvZHJpdmVycy9pcHcyMTAwL3tQQ0ktSUR9LworCitGb3IgZXhhbXBsZToKKwkvc3lzL2J1cy9wY2kvZHJpdmVycy9pcHcyMTAwLzAwMDA6MDI6MDEuMAorCitGb3IgdGhlIGRldmljZSBsZXZlbCBmaWxlcywgc2VlIC9zeXMvYnVzL3BjaS9kcml2ZXJzL2lwdzIxMDA6CisKKyAgcmZfa2lsbAorCXJlYWQgLSAKKwkwID0gUkYga2lsbCBub3QgZW5hYmxlZCAocmFkaW8gb24pCisJMSA9IFNXIGJhc2VkIFJGIGtpbGwgYWN0aXZlIChyYWRpbyBvZmYpCisJMiA9IEhXIGJhc2VkIFJGIGtpbGwgYWN0aXZlIChyYWRpbyBvZmYpCisJMyA9IEJvdGggSFcgYW5kIFNXIFJGIGtpbGwgYWN0aXZlIChyYWRpbyBvZmYpCisJd3JpdGUgLQorCTAgPSBJZiBTVyBiYXNlZCBSRiBraWxsIGFjdGl2ZSwgdHVybiB0aGUgcmFkaW8gYmFjayBvbgorCTEgPSBJZiByYWRpbyBpcyBvbiwgYWN0aXZhdGUgU1cgYmFzZWQgUkYga2lsbAorCisJTk9URTogSWYgeW91IGVuYWJsZSB0aGUgU1cgYmFzZWQgUkYga2lsbCBhbmQgdGhlbiB0b2dnbGUgdGhlIEhXCisgIAliYXNlZCBSRiBraWxsIGZyb20gT04gLT4gT0ZGIC0+IE9OLCB0aGUgcmFkaW8gd2lsbCBOT1QgY29tZSBiYWNrIG9uCisKKworNS4gUmFkaW8gS2lsbCBTd2l0Y2gKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitNb3N0IGxhcHRvcHMgcHJvdmlkZSB0aGUgYWJpbGl0eSBmb3IgdGhlIHVzZXIgdG8gcGh5c2ljYWxseSBkaXNhYmxlIHRoZSByYWRpby4KK1NvbWUgdmVuZG9ycyBoYXZlIGltcGxlbWVudGVkIHRoaXMgYXMgYSBwaHlzaWNhbCBzd2l0Y2ggdGhhdCByZXF1aXJlcyBubworc29mdHdhcmUgdG8gdHVybiB0aGUgcmFkaW8gb2ZmIGFuZCBvbi4gIE9uIG90aGVyIGxhcHRvcHMsIGhvd2V2ZXIsIHRoZSBzd2l0Y2gKK2lzIGNvbnRyb2xsZWQgdGhyb3VnaCBhIGJ1dHRvbiBiZWluZyBwcmVzc2VkIGFuZCBhIHNvZnR3YXJlIGRyaXZlciB0aGVuIG1ha2luZworY2FsbHMgdG8gdHVybiB0aGUgcmFkaW8gb2ZmIGFuZCBvbi4gIFRoaXMgaXMgcmVmZXJyZWQgdG8gYXMgYSAic29mdHdhcmUgYmFzZWQKK1JGIGtpbGwgc3dpdGNoIgorCitTZWUgdGhlIFN5c2ZzIGhlbHBlciBmaWxlICdyZl9raWxsJyBmb3IgZGV0ZXJtaW5pbmcgdGhlIHN0YXRlIG9mIHRoZSBSRiBzd2l0Y2gKK29uIHlvdXIgc3lzdGVtLgorCisKKzYuIER5bmFtaWMgRmlybXdhcmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBcyB0aGUgZmlybXdhcmUgaXMgbGljZW5zZWQgdW5kZXIgYSByZXN0cmljdGVkIHVzZSBsaWNlbnNlLCBpdCBjYW4gbm90IGJlIAoraW5jbHVkZWQgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlcy4gIFRvIGVuYWJsZSB0aGUgSVBXMjEwMCB5b3Ugd2lsbCBuZWVkIGEgCitmaXJtd2FyZSBpbWFnZSB0byBsb2FkIGludG8gdGhlIHdpcmVsZXNzIE5JQydzIHByb2Nlc3NvcnMuCisKK1lvdSBjYW4gb2J0YWluIHRoZXNlIGltYWdlcyBmcm9tIDxodHRwOi8vaXB3MjEwMC5zZi5uZXQvZmlybXdhcmUucGhwPi4KKworU2VlIElOU1RBTEwgZm9yIGluc3RydWN0aW9ucyBvbiBpbnN0YWxsaW5nIHRoZSBmaXJtd2FyZS4KKworCis3LiBQb3dlciBNYW5hZ2VtZW50CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIElQVzIxMDAgc3VwcG9ydHMgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIFBvd2VyIFNhdmUgUHJvdG9jb2wgCit0aHJvdWdoIGEgcHJpdmF0ZSB3aXJlbGVzcyBleHRlbnNpb24gaW50ZXJmYWNlLiAgVGhlIElQVzIxMDAgc3VwcG9ydHMgCit0aGUgZm9sbG93aW5nIGRpZmZlcmVudCBtb2RlczoKKworCW9mZglObyBwb3dlciBtYW5hZ2VtZW50LiAgUmFkaW8gaXMgYWx3YXlzIG9uLgorCW9uCUF1dG9tYXRpYyBwb3dlciBtYW5hZ2VtZW50CisJMS01CURpZmZlcmVudCBsZXZlbHMgb2YgcG93ZXIgbWFuYWdlbWVudC4gIFRoZSBoaWdoZXIgdGhlIAorCQludW1iZXIgdGhlIGdyZWF0ZXIgdGhlIHBvd2VyIHNhdmluZ3MsIGJ1dCB3aXRoIGFuIGltcGFjdCB0byAKKwkJcGFja2V0IGxhdGVuY2llcy4gCisKK1Bvd2VyIG1hbmFnZW1lbnQgd29ya3MgYnkgcG93ZXJpbmcgZG93biB0aGUgcmFkaW8gYWZ0ZXIgYSBjZXJ0YWluIAoraW50ZXJ2YWwgb2YgdGltZSBoYXMgcGFzc2VkIHdoZXJlIG5vIHBhY2tldHMgYXJlIHBhc3NlZCB0aHJvdWdoIHRoZSAKK3JhZGlvLiAgT25jZSBwb3dlcmVkIGRvd24sIHRoZSByYWRpbyByZW1haW5zIGluIHRoYXQgc3RhdGUgZm9yIGEgZ2l2ZW4gCitwZXJpb2Qgb2YgdGltZS4gIEZvciBoaWdoZXIgcG93ZXIgc2F2aW5ncywgdGhlIGludGVydmFsIGJldHdlZW4gbGFzdCAKK3BhY2tldCBwcm9jZXNzZWQgdG8gc2xlZXAgaXMgc2hvcnRlciBhbmQgdGhlIHNsZWVwIHBlcmlvZCBpcyBsb25nZXIuCisKK1doZW4gdGhlIHJhZGlvIGlzIGFzbGVlcCwgdGhlIGFjY2VzcyBwb2ludCBzZW5kaW5nIGRhdGEgdG8gdGhlIHN0YXRpb24gCittdXN0IGJ1ZmZlciBwYWNrZXRzIGF0IHRoZSBBUCB1bnRpbCB0aGUgc3RhdGlvbiB3YWtlcyB1cCBhbmQgcmVxdWVzdHMgCithbnkgYnVmZmVyZWQgcGFja2V0cy4gIElmIHlvdSBoYXZlIGFuIEFQIHRoYXQgZG9lcyBub3QgY29ycmVjdGx5IHN1cHBvcnQgCit0aGUgUFNQIHByb3RvY29sIHlvdSBtYXkgZXhwZXJpZW5jZSBwYWNrZXQgbG9zcyBvciB2ZXJ5IHBvb3IgcGVyZm9ybWFuY2UgCit3aGlsZSBwb3dlciBtYW5hZ2VtZW50IGlzIGVuYWJsZWQuICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB5b3Ugd2lsbCBuZWVkIAordG8gdHJ5IGFuZCBmaW5kIGEgZmlybXdhcmUgdXBkYXRlIGZvciB5b3VyIEFQLCBvciBkaXNhYmxlIHBvd2VyIAorbWFuYWdlbWVudCAodmlhIGBpd2NvbmZpZyBldGgxIHBvd2VyIG9mZmApCisKK1RvIGNvbmZpZ3VyZSB0aGUgcG93ZXIgbGV2ZWwgb24gdGhlIElQVzIxMDAgeW91IHVzZSBhIGNvbWJpbmF0aW9uIG9mIAoraXdjb25maWcgYW5kIGl3cHJpdi4gIGl3Y29uZmlnIGlzIHVzZWQgdG8gdHVybiBwb3dlciBtYW5hZ2VtZW50IG9uLCBvZmYsIAorYW5kIHNldCBpdCB0byBhdXRvLgorCisJaXdjb25maWcgZXRoMSBwb3dlciBvZmYgICAgRGlzYWJsZXMgcmFkaW8gcG93ZXIgZG93bgorCWl3Y29uZmlnIGV0aDEgcG93ZXIgb24gICAgIEVuYWJsZXMgcmFkaW8gcG93ZXIgbWFuYWdlbWVudCB0byAKKwkJCQkgICBsYXN0IHNldCBsZXZlbCAoZGVmYXVsdHMgdG8gQVVUTykKKwlpd3ByaXYgZXRoMSBzZXRfcG93ZXIgMCAgICBTZXRzIHBvd2VyIGxldmVsIHRvIEFVVE8gYW5kIGVuYWJsZXMgCisJCQkJICAgcG93ZXIgbWFuYWdlbWVudCBpZiBub3QgcHJldmlvdXNseSAKKwkJCQkgICBlbmFibGVkLgorCWl3cHJpdiBldGgxIHNldF9wb3dlciAxLTUgIFNldCB0aGUgcG93ZXIgbGV2ZWwgYXMgc3BlY2lmaWVkLCAKKwkJCQkgICBlbmFibGluZyBwb3dlciBtYW5hZ2VtZW50IGlmIG5vdCAKKwkJCQkgICBwcmV2aW91c2x5IGVuYWJsZWQuCisKK1lvdSBjYW4gdmlldyB0aGUgY3VycmVudCBwb3dlciBsZXZlbCBzZXR0aW5nIHZpYToKKwkKKwlpd3ByaXYgZXRoMSBnZXRfcG93ZXIKKworSXQgd2lsbCByZXR1cm4gdGhlIGN1cnJlbnQgcGVyaW9kIG9yIHRpbWVvdXQgdGhhdCBpcyBjb25maWd1cmVkIGFzIGEgc3RyaW5nCitpbiB0aGUgZm9ybSBvZiB4eHh4L3l5eXkgKHopIHdoZXJlIHh4eHggaXMgdGhlIHRpbWVvdXQgaW50ZXJ2YWwgKGFtb3VudCBvZgordGltZSBhZnRlciBwYWNrZXQgcHJvY2Vzc2luZyksIHl5eXkgaXMgdGhlIHBlcmlvZCB0byBzbGVlcCAoYW1vdW50IG9mIHRpbWUgdG8gCit3YWl0IGJlZm9yZSBwb3dlcmluZyB0aGUgcmFkaW8gYW5kIHF1ZXJ5aW5nIHRoZSBhY2Nlc3MgcG9pbnQgZm9yIGJ1ZmZlcmVkCitwYWNrZXRzKSwgYW5kIHogaXMgdGhlICdwb3dlciBsZXZlbCcuICBJZiBwb3dlciBtYW5hZ2VtZW50IGlzIHR1cm5lZCBvZmYgdGhlCit4eHh4L3l5eXkgd2lsbCBiZSByZXBsYWNlZCB3aXRoICdvZmYnIC0tIHRoZSBsZXZlbCByZXBvcnRlZCB3aWxsIGJlIHRoZSBhY3RpdmUKK2xldmVsIGlmIGBpd2NvbmZpZyBldGgxIHBvd2VyIG9uYCBpcyBpbnZva2VkLgorCisKKzguIFN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZvciBnZW5lcmFsIGRldmVsb3BtZW50IGluZm9ybWF0aW9uIGFuZCBzdXBwb3J0LAorZ28gdG86CisJCisgICAgaHR0cDovL2lwdzIxMDAuc2YubmV0LworCitUaGUgaXB3MjEwMCAxLjEuMCBkcml2ZXIgYW5kIGZpcm13YXJlIGNhbiBiZSBkb3dubG9hZGVkIGZyb206ICAKKworICAgIGh0dHA6Ly9zdXBwb3J0LmludGVsLmNvbQorCitGb3IgaW5zdGFsbGF0aW9uIHN1cHBvcnQgb24gdGhlIGlwdzIxMDAgMS4xLjAgZHJpdmVyIG9uIExpbnV4IGtlcm5lbHMgCisyLjYuOCBvciBncmVhdGVyLCBlbWFpbCBzdXBwb3J0IGlzIGF2YWlsYWJsZSBmcm9tOiAgCisKKyAgICBodHRwOi8vc3VwcG9ydG1haWwuaW50ZWwuY29tCisKKzkuIExpY2Vuc2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgQ29weXJpZ2h0KGMpIDIwMDMgLSAyMDA2IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IAorICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIAorICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAgCisgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCAKKyAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIAorICBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIAorICBtb3JlIGRldGFpbHMuCisgIAorICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSAKKyAgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3LCBVU0EuCisgIAorICBUaGUgZnVsbCBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBpbmNsdWRlZCBpbiB0aGlzIGRpc3RyaWJ1dGlvbiBpbiB0aGUKKyAgZmlsZSBjYWxsZWQgTElDRU5TRS4KKyAgCisgIExpY2Vuc2UgQ29udGFjdCBJbmZvcm1hdGlvbjoKKyAgSmFtZXMgUC4gS2V0cmVub3MgPGlwdzIxMDAtYWRtaW5AbGludXguaW50ZWwuY29tPgorICBJbnRlbCBDb3Jwb3JhdGlvbiwgNTIwMCBOLkUuIEVsYW0gWW91bmcgUGFya3dheSwgSGlsbHNib3JvLCBPUiA5NzEyNC02NDk3CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9SRUFETUUuaXB3MjIwMCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9SRUFETUUuaXB3MjIwMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzY1OGJlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL1JFQURNRS5pcHcyMjAwCkBAIC0wLDAgKzEsNDcyIEBACisKK0ludGVsKFIpIFBSTy9XaXJlbGVzcyAyOTE1QUJHIERyaXZlciBmb3IgTGludXggaW4gc3VwcG9ydCBvZjoKKworSW50ZWwoUikgUFJPL1dpcmVsZXNzIDIyMDBCRyBOZXR3b3JrIENvbm5lY3Rpb24KK0ludGVsKFIpIFBSTy9XaXJlbGVzcyAyOTE1QUJHIE5ldHdvcmsgQ29ubmVjdGlvbgorCitOb3RlOiBUaGUgSW50ZWwoUikgUFJPL1dpcmVsZXNzIDI5MTVBQkcgRHJpdmVyIGZvciBMaW51eCBhbmQgSW50ZWwoUikKK1BSTy9XaXJlbGVzcyAyMjAwQkcgRHJpdmVyIGZvciBMaW51eCBpcyBhIHVuaWZpZWQgZHJpdmVyIHRoYXQgd29ya3Mgb24KK2JvdGggaGFyZHdhcmUgYWRhcHRlcnMgbGlzdGVkIGFib3ZlLiBJbiB0aGlzIGRvY3VtZW50IHRoZSBJbnRlbChSKQorUFJPL1dpcmVsZXNzIDI5MTVBQkcgRHJpdmVyIGZvciBMaW51eCB3aWxsIGJlIHVzZWQgdG8gcmVmZXJlbmNlIHRoZQordW5pZmllZCBkcml2ZXIuCisKK0NvcHlyaWdodCAoQykgMjAwNC0yMDA2LCBJbnRlbCBDb3Jwb3JhdGlvbgorCitSRUFETUUuaXB3MjIwMAorCitWZXJzaW9uOiAxLjEuMgorRGF0ZSAgIDogTWFyY2ggMzAsIDIwMDYKKworCitJbmRleAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzAuICAgSU1QT1JUQU5UIElORk9STUFUSU9OIEJFRk9SRSBVU0lORyBUSElTIERSSVZFUgorMS4gICBJbnRyb2R1Y3Rpb24KKzEuMS4gT3ZlcnZpZXcgb2YgZmVhdHVyZXMKKzEuMi4gTW9kdWxlIHBhcmFtZXRlcnMKKzEuMy4gV2lyZWxlc3MgRXh0ZW5zaW9uIFByaXZhdGUgTWV0aG9kcworMS40LiBTeXNmcyBIZWxwZXIgRmlsZXMKKzEuNS4gU3VwcG9ydGVkIGNoYW5uZWxzCisyLiAgIEFkLUhvYyBOZXR3b3JraW5nCiszLiAgIEludGVyYWN0aW5nIHdpdGggV2lyZWxlc3MgVG9vbHMKKzMuMS4gaXdjb25maWcgbW9kZQorMy4yLiBpd2NvbmZpZyBzZW5zCis0LiAgIEFib3V0IHRoZSBWZXJzaW9uIE51bWJlcnMKKzUuICAgRmlybXdhcmUgaW5zdGFsbGF0aW9uCis2LiAgIFN1cHBvcnQKKzcuICAgTGljZW5zZQorCisKKzAuICAgSU1QT1JUQU5UIElORk9STUFUSU9OIEJFRk9SRSBVU0lORyBUSElTIERSSVZFUgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW1wb3J0YW50IE5vdGljZSBGT1IgQUxMIFVTRVJTIE9SIERJU1RSSUJVVE9SUyEhISEgCisKK0ludGVsIHdpcmVsZXNzIExBTiBhZGFwdGVycyBhcmUgZW5naW5lZXJlZCwgbWFudWZhY3R1cmVkLCB0ZXN0ZWQsIGFuZAorcXVhbGl0eSBjaGVja2VkIHRvIGVuc3VyZSB0aGF0IHRoZXkgbWVldCBhbGwgbmVjZXNzYXJ5IGxvY2FsIGFuZAorZ292ZXJubWVudGFsIHJlZ3VsYXRvcnkgYWdlbmN5IHJlcXVpcmVtZW50cyBmb3IgdGhlIHJlZ2lvbnMgdGhhdCB0aGV5CithcmUgZGVzaWduYXRlZCBhbmQvb3IgbWFya2VkIHRvIHNoaXAgaW50by4gU2luY2Ugd2lyZWxlc3MgTEFOcyBhcmUKK2dlbmVyYWxseSB1bmxpY2Vuc2VkIGRldmljZXMgdGhhdCBzaGFyZSBzcGVjdHJ1bSB3aXRoIHJhZGFycywKK3NhdGVsbGl0ZXMsIGFuZCBvdGhlciBsaWNlbnNlZCBhbmQgdW5saWNlbnNlZCBkZXZpY2VzLCBpdCBpcyBzb21ldGltZXMKK25lY2Vzc2FyeSB0byBkeW5hbWljYWxseSBkZXRlY3QsIGF2b2lkLCBhbmQgbGltaXQgdXNhZ2UgdG8gYXZvaWQKK2ludGVyZmVyZW5jZSB3aXRoIHRoZXNlIGRldmljZXMuIEluIG1hbnkgaW5zdGFuY2VzIEludGVsIGlzIHJlcXVpcmVkIHRvCitwcm92aWRlIHRlc3QgZGF0YSB0byBwcm92ZSByZWdpb25hbCBhbmQgbG9jYWwgY29tcGxpYW5jZSB0byByZWdpb25hbCBhbmQKK2dvdmVybm1lbnRhbCByZWd1bGF0aW9ucyBiZWZvcmUgY2VydGlmaWNhdGlvbiBvciBhcHByb3ZhbCB0byB1c2UgdGhlCitwcm9kdWN0IGlzIGdyYW50ZWQuIEludGVsJ3Mgd2lyZWxlc3MgTEFOJ3MgRUVQUk9NLCBmaXJtd2FyZSwgYW5kCitzb2Z0d2FyZSBkcml2ZXIgYXJlIGRlc2lnbmVkIHRvIGNhcmVmdWxseSBjb250cm9sIHBhcmFtZXRlcnMgdGhhdCBhZmZlY3QKK3JhZGlvIG9wZXJhdGlvbiBhbmQgdG8gZW5zdXJlIGVsZWN0cm9tYWduZXRpYyBjb21wbGlhbmNlIChFTUMpLiBUaGVzZQorcGFyYW1ldGVycyBpbmNsdWRlLCB3aXRob3V0IGxpbWl0YXRpb24sIFJGIHBvd2VyLCBzcGVjdHJ1bSB1c2FnZSwKK2NoYW5uZWwgc2Nhbm5pbmcsIGFuZCBodW1hbiBleHBvc3VyZS4gCisKK0ZvciB0aGVzZSByZWFzb25zIEludGVsIGNhbm5vdCBwZXJtaXQgYW55IG1hbmlwdWxhdGlvbiBieSB0aGlyZCBwYXJ0aWVzCitvZiB0aGUgc29mdHdhcmUgcHJvdmlkZWQgaW4gYmluYXJ5IGZvcm1hdCB3aXRoIHRoZSB3aXJlbGVzcyBXTEFOCithZGFwdGVycyAoZS5nLiwgdGhlIEVFUFJPTSBhbmQgZmlybXdhcmUpLiBGdXJ0aGVybW9yZSwgaWYgeW91IHVzZSBhbnkKK3BhdGNoZXMsIHV0aWxpdGllcywgb3IgY29kZSB3aXRoIHRoZSBJbnRlbCB3aXJlbGVzcyBMQU4gYWRhcHRlcnMgdGhhdAoraGF2ZSBiZWVuIG1hbmlwdWxhdGVkIGJ5IGFuIHVuYXV0aG9yaXplZCBwYXJ0eSAoaS5lLiwgcGF0Y2hlcywKK3V0aWxpdGllcywgb3IgY29kZSAoaW5jbHVkaW5nIG9wZW4gc291cmNlIGNvZGUgbW9kaWZpY2F0aW9ucykgd2hpY2ggaGF2ZQorbm90IGJlZW4gdmFsaWRhdGVkIGJ5IEludGVsKSwgKGkpIHlvdSB3aWxsIGJlIHNvbGVseSByZXNwb25zaWJsZSBmb3IKK2Vuc3VyaW5nIHRoZSByZWd1bGF0b3J5IGNvbXBsaWFuY2Ugb2YgdGhlIHByb2R1Y3RzLCAoaWkpIEludGVsIHdpbGwgYmVhcgorbm8gbGlhYmlsaXR5LCB1bmRlciBhbnkgdGhlb3J5IG9mIGxpYWJpbGl0eSBmb3IgYW55IGlzc3VlcyBhc3NvY2lhdGVkCit3aXRoIHRoZSBtb2RpZmllZCBwcm9kdWN0cywgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiwgY2xhaW1zIHVuZGVyCit0aGUgd2FycmFudHkgYW5kL29yIGlzc3VlcyBhcmlzaW5nIGZyb20gcmVndWxhdG9yeSBub24tY29tcGxpYW5jZSwgYW5kCisoaWlpKSBJbnRlbCB3aWxsIG5vdCBwcm92aWRlIG9yIGJlIHJlcXVpcmVkIHRvIGFzc2lzdCBpbiBwcm92aWRpbmcKK3N1cHBvcnQgdG8gYW55IHRoaXJkIHBhcnRpZXMgZm9yIHN1Y2ggbW9kaWZpZWQgcHJvZHVjdHMuICAKKworTm90ZTogTWFueSByZWd1bGF0b3J5IGFnZW5jaWVzIGNvbnNpZGVyIFdpcmVsZXNzIExBTiBhZGFwdGVycyB0byBiZQorbW9kdWxlcywgYW5kIGFjY29yZGluZ2x5LCBjb25kaXRpb24gc3lzdGVtLWxldmVsIHJlZ3VsYXRvcnkgYXBwcm92YWwKK3Vwb24gcmVjZWlwdCBhbmQgcmV2aWV3IG9mIHRlc3QgZGF0YSBkb2N1bWVudGluZyB0aGF0IHRoZSBhbnRlbm5hcyBhbmQKK3N5c3RlbSBjb25maWd1cmF0aW9uIGRvIG5vdCBjYXVzZSB0aGUgRU1DIGFuZCByYWRpbyBvcGVyYXRpb24gdG8gYmUKK25vbi1jb21wbGlhbnQuCisKK1RoZSBkcml2ZXJzIGF2YWlsYWJsZSBmb3IgZG93bmxvYWQgZnJvbSBTb3VyY2VGb3JnZSBhcmUgcHJvdmlkZWQgYXMgYSAKK3BhcnQgb2YgYSBkZXZlbG9wbWVudCBwcm9qZWN0LiAgQ29uZm9ybWFuY2UgdG8gbG9jYWwgcmVndWxhdG9yeSAKK3JlcXVpcmVtZW50cyBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGluZGl2aWR1YWwgZGV2ZWxvcGVyLiAgQXMgCitzdWNoLCBpZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4gZGVwbG95aW5nIG9yIHNoaXBwaW5nIGEgZHJpdmVyIGFzIHBhcnQgb2YgCitzb2x1dGlvbiBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBwdXJwb3NlcyBvdGhlciB0aGFuIGRldmVsb3BtZW50LCBwbGVhc2UgCitvYnRhaW4gYSB0ZXN0ZWQgZHJpdmVyIGZyb20gSW50ZWwgQ3VzdG9tZXIgU3VwcG9ydCBhdDoKKworaHR0cDovL3N1cHBvcnQuaW50ZWwuY29tCisKKworMS4gICBJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgZm9sbG93aW5nIHNlY3Rpb25zIGF0dGVtcHQgdG8gcHJvdmlkZSBhIGJyaWVmIGludHJvZHVjdGlvbiB0byB1c2luZyAKK3RoZSBJbnRlbChSKSBQUk8vV2lyZWxlc3MgMjkxNUFCRyBEcml2ZXIgZm9yIExpbnV4LgorCitUaGlzIGRvY3VtZW50IGlzIG5vdCBtZWFudCB0byBiZSBhIGNvbXByZWhlbnNpdmUgbWFudWFsIG9uIAordW5kZXJzdGFuZGluZyBvciB1c2luZyB3aXJlbGVzcyB0ZWNobm9sb2dpZXMsIGJ1dCBzaG91bGQgYmUgc3VmZmljaWVudCAKK3RvIGdldCB5b3UgbW92aW5nIHdpdGhvdXQgd2lyZXMgb24gTGludXguCisKK0ZvciBpbmZvcm1hdGlvbiBvbiBidWlsZGluZyBhbmQgaW5zdGFsbGluZyB0aGUgZHJpdmVyLCBzZWUgdGhlIElOU1RBTEwKK2ZpbGUuCisKKworMS4xLiBPdmVydmlldyBvZiBGZWF0dXJlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBjdXJyZW50IHJlbGVhc2UgKDEuMS4yKSBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGZlYXR1cmVzOgorCisrIEJTUyBtb2RlIChJbmZyYXN0cnVjdHVyZSwgTWFuYWdlZCkKKysgSUJTUyBtb2RlIChBZC1Ib2MpCisrIFdFUCAoT1BFTiBhbmQgU0hBUkVEIEtFWSBtb2RlKQorKyA4MDIuMXggRUFQIHZpYSB3cGFfc3VwcGxpY2FudCBhbmQgeHN1cHBsaWNhbnQKKysgV2lyZWxlc3MgRXh0ZW5zaW9uIHN1cHBvcnQgCisrIEZ1bGwgQiBhbmQgRyByYXRlIHN1cHBvcnQgKDIyMDAgYW5kIDI5MTUpCisrIEZ1bGwgQSByYXRlIHN1cHBvcnQgKDI5MTUgb25seSkKKysgVHJhbnNtaXQgcG93ZXIgY29udHJvbAorKyBTIHN0YXRlIHN1cHBvcnQgKEFDUEkgc3VzcGVuZC9yZXN1bWUpCisKK1RoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGN1cnJlbnRseSBlbmFibGVkLCBidXQgbm90IG9mZmljaWFsbHkKK3N1cHBvcnRlZDoKKworKyBXUEEKKysgbG9uZy9zaG9ydCBwcmVhbWJsZSBzdXBwb3J0CisrIE1vbml0b3IgbW9kZSAoYWthIFJGTW9uKQorCitUaGUgZGlzdGluY3Rpb24gYmV0d2VlbiBvZmZpY2lhbGx5IHN1cHBvcnRlZCBhbmQgZW5hYmxlZCBpcyBhIHJlZmxlY3Rpb24gCitvbiB0aGUgYW1vdW50IG9mIHZhbGlkYXRpb24gYW5kIGludGVyb3BlcmFiaWxpdHkgdGVzdGluZyB0aGF0IGhhcyBiZWVuCitwZXJmb3JtZWQgb24gYSBnaXZlbiBmZWF0dXJlLiAKKworCisKKzEuMi4gQ29tbWFuZCBMaW5lIFBhcmFtZXRlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0xpa2UgbWFueSBtb2R1bGVzIHVzZWQgaW4gdGhlIExpbnV4IGtlcm5lbCwgdGhlIEludGVsKFIpIFBSTy9XaXJlbGVzcworMjkxNUFCRyBEcml2ZXIgZm9yIExpbnV4IGFsbG93cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gYmUgcHJvdmlkZWQgCithcyBtb2R1bGUgcGFyYW1ldGVycy4gIFRoZSBtb3N0IGNvbW1vbiB3YXkgdG8gc3BlY2lmeSBhIG1vZHVsZSBwYXJhbWV0ZXIgCitpcyB2aWEgdGhlIGNvbW1hbmQgbGluZS4gIAorCitUaGUgZ2VuZXJhbCBmb3JtIGlzOgorCislIG1vZHByb2JlIGlwdzIyMDAgcGFyYW1ldGVyPXZhbHVlCisKK1doZXJlIHRoZSBzdXBwb3J0ZWQgcGFyYW1ldGVyIGFyZToKKworICBhc3NvY2lhdGUKKwlTZXQgdG8gMCB0byBkaXNhYmxlIHRoZSBhdXRvIHNjYW4tYW5kLWFzc29jaWF0ZSBmdW5jdGlvbmFsaXR5IG9mIHRoZQorCWRyaXZlci4gIElmIGRpc2FibGVkLCB0aGUgZHJpdmVyIHdpbGwgbm90IGF0dGVtcHQgdG8gc2NhbiAKKwlmb3IgYW5kIGFzc29jaWF0ZSB0byBhIG5ldHdvcmsgdW50aWwgaXQgaGFzIGJlZW4gY29uZmlndXJlZCB3aXRoIAorCW9uZSBvciBtb3JlIHByb3BlcnRpZXMgZm9yIHRoZSB0YXJnZXQgbmV0d29yaywgZm9yIGV4YW1wbGUgY29uZmlndXJpbmcgCisJdGhlIG5ldHdvcmsgU1NJRC4gIERlZmF1bHQgaXMgMCAoZG8gbm90IGF1dG8tYXNzb2NpYXRlKQorCQorCUV4YW1wbGU6ICUgbW9kcHJvYmUgaXB3MjIwMCBhc3NvY2lhdGU9MAorCisgIGF1dG9fY3JlYXRlCisJU2V0IHRvIDAgdG8gZGlzYWJsZSB0aGUgYXV0byBjcmVhdGlvbiBvZiBhbiBBZC1Ib2MgbmV0d29yayAKKwltYXRjaGluZyB0aGUgY2hhbm5lbCBhbmQgbmV0d29yayBuYW1lIHBhcmFtZXRlcnMgcHJvdmlkZWQuICAKKwlEZWZhdWx0IGlzIDEuCisKKyAgY2hhbm5lbAorCWNoYW5uZWwgbnVtYmVyIGZvciBhc3NvY2lhdGlvbi4gIFRoZSBub3JtYWwgbWV0aG9kIGZvciBzZXR0aW5nCisgICAgICAgIHRoZSBjaGFubmVsIHdvdWxkIGJlIHRvIHVzZSB0aGUgc3RhbmRhcmQgd2lyZWxlc3MgdG9vbHMKKyAgICAgICAgKGkuZS4gYGl3Y29uZmlnIGV0aDEgY2hhbm5lbCAxMGApLCBidXQgaXQgaXMgdXNlZnVsIHNvbWV0aW1lcworCXRvIHNldCB0aGlzIHdoaWxlIGRlYnVnZ2luZy4gIENoYW5uZWwgMCBtZWFucyAnQU5ZJworCisgIGRlYnVnCisJSWYgdXNpbmcgYSBkZWJ1ZyBidWlsZCwgdGhpcyBpcyB1c2VkIHRvIGNvbnRyb2wgdGhlIGFtb3VudCBvZiBkZWJ1ZworCWluZm8gaXMgbG9nZ2VkLiAgU2VlIHRoZSAnZHZhbHMnIGFuZCAnbG9hZCcgc2NyaXB0IGZvciBtb3JlIGluZm8gb24KKwlob3cgdG8gdXNlIHRoaXMgKHRoZSBkdmFscyBhbmQgbG9hZCBzY3JpcHRzIGFyZSBwcm92aWRlZCBhcyBwYXJ0IAorCW9mIHRoZSBpcHcyMjAwIGRldmVsb3BtZW50IHNuYXBzaG90IHJlbGVhc2VzIGF2YWlsYWJsZSBmcm9tIHRoZSAKKwlTb3VyY2VGb3JnZSBwcm9qZWN0IGF0IGh0dHA6Ly9pcHcyMjAwLnNmLm5ldCkKKyAgCisgIGxlZAorCUNhbiBiZSB1c2VkIHRvIHR1cm4gb24gZXhwZXJpbWVudGFsIExFRCBjb2RlLgorCTAgPSBPZmYsIDEgPSBPbi4gIERlZmF1bHQgaXMgMS4KKworICBtb2RlCisJQ2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBkZWZhdWx0IG1vZGUgb2YgdGhlIGFkYXB0ZXIuICAKKwkwID0gTWFuYWdlZCwgMSA9IEFkLUhvYywgMiA9IE1vbml0b3IKKworCisxLjMuIFdpcmVsZXNzIEV4dGVuc2lvbiBQcml2YXRlIE1ldGhvZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FzIGFuIGludGVyZmFjZSBkZXNpZ25lZCB0byBoYW5kbGUgZ2VuZXJpYyBoYXJkd2FyZSwgdGhlcmUgYXJlIGNlcnRhaW4gCitjYXBhYmlsaXRpZXMgbm90IGV4cG9zZWQgdGhyb3VnaCB0aGUgbm9ybWFsIFdpcmVsZXNzIFRvb2wgaW50ZXJmYWNlLiAgQXMgCitzdWNoLCBhIHByb3Zpc2lvbiBpcyBwcm92aWRlZCBmb3IgYSBkcml2ZXIgdG8gZGVjbGFyZSBjdXN0b20sIG9yIAorcHJpdmF0ZSwgbWV0aG9kcy4gIFRoZSBJbnRlbChSKSBQUk8vV2lyZWxlc3MgMjkxNUFCRyBEcml2ZXIgZm9yIExpbnV4IAorZGVmaW5lcyBzZXZlcmFsIG9mIHRoZXNlIHRvIGNvbmZpZ3VyZSB2YXJpb3VzIHNldHRpbmdzLgorCitUaGUgZ2VuZXJhbCBmb3JtIG9mIHVzaW5nIHRoZSBwcml2YXRlIHdpcmVsZXNzIG1ldGhvZHMgaXM6CisKKwklIGl3cHJpdiAkSUZOQU1FIG1ldGhvZCBwYXJhbWV0ZXJzCisKK1doZXJlICRJRk5BTUUgaXMgdGhlIGludGVyZmFjZSBuYW1lIHRoZSBkZXZpY2UgaXMgcmVnaXN0ZXJlZCB3aXRoIAorKHR5cGljYWxseSBldGgxLCBjdXN0b21pemVkIHZpYSBvbmUgb2YgdGhlIHZhcmlvdXMgbmV0d29yayBpbnRlcmZhY2UKK25hbWUgbWFuYWdlcnMsIHN1Y2ggYXMgaWZyZW5hbWUpCisKK1RoZSBzdXBwb3J0ZWQgcHJpdmF0ZSBtZXRob2RzIGFyZToKKworICBnZXRfbW9kZQorCUNhbiBiZSB1c2VkIHRvIHJlcG9ydCBvdXQgd2hpY2ggSUVFRSBtb2RlIHRoZSBkcml2ZXIgaXMgCisJY29uZmlndXJlZCB0byBzdXBwb3J0LiAgRXhhbXBsZToKKwkKKwklIGl3cHJpdiBldGgxIGdldF9tb2RlCisJZXRoMQlnZXRfbW9kZTo4MDIuMTFiZyAoNikKKworICBzZXRfbW9kZQorCUNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSB3aGljaCBJRUVFIG1vZGUgdGhlIGRyaXZlciB3aWxsIAorCXN1cHBvcnQuICAKKworCVVzYWdlOgorCSUgaXdwcml2IGV0aDEgc2V0X21vZGUge21vZGV9CisJV2hlcmUge21vZGV9IGlzIGEgbnVtYmVyIGluIHRoZSByYW5nZSAxLTc6CisJMQk4MDIuMTFhICgyOTE1IG9ubHkpCisJMgk4MDIuMTFiCisJMwk4MDIuMTFhYiAoMjkxNSBvbmx5KQorCTQJODAyLjExZyAKKwk1CTgwMi4xMWFnICgyOTE1IG9ubHkpCisJNgk4MDIuMTFiZworCTcJODAyLjExYWJnICgyOTE1IG9ubHkpCisKKyAgZ2V0X3ByZWFtYmxlCisJQ2FuIGJlIHVzZWQgdG8gcmVwb3J0IGNvbmZpZ3VyYXRpb24gb2YgcHJlYW1ibGUgbGVuZ3RoLgorCisgIHNldF9wcmVhbWJsZQorCUNhbiBiZSB1c2VkIHRvIHNldCB0aGUgY29uZmlndXJhdGlvbiBvZiBwcmVhbWJsZSBsZW5ndGg6CisKKwlVc2FnZToKKwklIGl3cHJpdiBldGgxIHNldF9wcmVhbWJsZSB7bW9kZX0KKwlXaGVyZSB7bW9kZX0gaXMgb25lIG9mOgorCTEJTG9uZyBwcmVhbWJsZSBvbmx5CisJMAlBdXRvIChsb25nIG9yIHNob3J0IGJhc2VkIG9uIGNvbm5lY3Rpb24pCisJCisKKzEuNC4gU3lzZnMgSGVscGVyIEZpbGVzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIExpbnV4IGtlcm5lbCBwcm92aWRlcyBhIHBzZXVkbyBmaWxlIHN5c3RlbSB0aGF0IGNhbiBiZSB1c2VkIHRvIAorYWNjZXNzIHZhcmlvdXMgY29tcG9uZW50cyBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gIFRoZSBJbnRlbChSKQorUFJPL1dpcmVsZXNzIDI5MTVBQkcgRHJpdmVyIGZvciBMaW51eCBleHBvc2VzIHNldmVyYWwgY29uZmlndXJhdGlvbgorcGFyYW1ldGVycyB0aHJvdWdoIHRoaXMgbWVjaGFuaXNtLgorCitBbiBlbnRyeSBpbiB0aGUgc3lzZnMgY2FuIHN1cHBvcnQgcmVhZGluZyBhbmQvb3Igd3JpdGluZy4gIFlvdSBjYW4gCit0eXBpY2FsbHkgcXVlcnkgdGhlIGNvbnRlbnRzIG9mIGEgc3lzZnMgZW50cnkgdGhyb3VnaCB0aGUgdXNlIG9mIGNhdCwgCithbmQgY2FuIHNldCB0aGUgY29udGVudHMgdmlhIGVjaG8uICBGb3IgZXhhbXBsZToKKworJSBjYXQgL3N5cy9idXMvcGNpL2RyaXZlcnMvaXB3MjIwMC9kZWJ1Z19sZXZlbAorCitXaWxsIHJlcG9ydCB0aGUgY3VycmVudCBkZWJ1ZyBsZXZlbCBvZiB0aGUgZHJpdmVyJ3MgbG9nZ2luZyBzdWJzeXN0ZW0gCisob25seSBhdmFpbGFibGUgaWYgQ09ORklHX0lQVzIyMDBfREVCVUcgd2FzIGNvbmZpZ3VyZWQgd2hlbiB0aGUgZHJpdmVyCit3YXMgYnVpbHQpLgorCitZb3UgY2FuIHNldCB0aGUgZGVidWcgbGV2ZWwgdmlhOgorCislIGVjaG8gJFZBTFVFID4gL3N5cy9idXMvcGNpL2RyaXZlcnMvaXB3MjIwMC9kZWJ1Z19sZXZlbAorCitXaGVyZSAkVkFMVUUgd291bGQgYmUgYSBudW1iZXIgaW4gdGhlIGNhc2Ugb2YgdGhpcyBzeXNmcyBlbnRyeS4gIFRoZSAKK2lucHV0IHRvIHN5c2ZzIGZpbGVzIGRvZXMgbm90IGhhdmUgdG8gYmUgYSBudW1iZXIuICBGb3IgZXhhbXBsZSwgdGhlIAorZmlybXdhcmUgbG9hZGVyIHVzZWQgYnkgaG90cGx1ZyB1dGlsaXplcyBzeXNmcyBlbnRyaWVzIGZvciB0cmFuc2ZlcnJpbmcgCit0aGUgZmlybXdhcmUgaW1hZ2UgZnJvbSB1c2VyIHNwYWNlIGludG8gdGhlIGRyaXZlci4KKworVGhlIEludGVsKFIpIFBSTy9XaXJlbGVzcyAyOTE1QUJHIERyaXZlciBmb3IgTGludXggZXhwb3NlcyBzeXNmcyBlbnRyaWVzIAorYXQgdHdvIGxldmVscyAtLSBkcml2ZXIgbGV2ZWwsIHdoaWNoIGFwcGx5IHRvIGFsbCBpbnN0YW5jZXMgb2YgdGhlIGRyaXZlciAKKyhpbiB0aGUgZXZlbnQgdGhhdCB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSBkZXZpY2UgaW5zdGFsbGVkKSBhbmQgZGV2aWNlIAorbGV2ZWwsIHdoaWNoIGFwcGxpZXMgb25seSB0byB0aGUgc2luZ2xlIHNwZWNpZmljIGluc3RhbmNlLgorCisKKzEuNC4xIERyaXZlciBMZXZlbCBTeXNmcyBIZWxwZXIgRmlsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZvciB0aGUgZHJpdmVyIGxldmVsIGZpbGVzLCBsb29rIGluIC9zeXMvYnVzL3BjaS9kcml2ZXJzL2lwdzIyMDAvCisKKyAgZGVidWdfbGV2ZWwgIAorCQorCVRoaXMgY29udHJvbHMgdGhlIHNhbWUgZ2xvYmFsIGFzIHRoZSAnZGVidWcnIG1vZHVsZSBwYXJhbWV0ZXIKKworCisKKzEuNC4yIERldmljZSBMZXZlbCBTeXNmcyBIZWxwZXIgRmlsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZvciB0aGUgZGV2aWNlIGxldmVsIGZpbGVzLCBsb29rIGluCisJCisJL3N5cy9idXMvcGNpL2RyaXZlcnMvaXB3MjIwMC97UENJLUlEfS8KKworRm9yIGV4YW1wbGU6CisJL3N5cy9idXMvcGNpL2RyaXZlcnMvaXB3MjIwMC8wMDAwOjAyOjAxLjAKKworRm9yIHRoZSBkZXZpY2UgbGV2ZWwgZmlsZXMsIHNlZSAvc3lzL2J1cy9wY2kvZHJpdmVycy9pcHcyMjAwOgorCisgIHJmX2tpbGwKKwlyZWFkIC0gCisJMCA9IFJGIGtpbGwgbm90IGVuYWJsZWQgKHJhZGlvIG9uKQorCTEgPSBTVyBiYXNlZCBSRiBraWxsIGFjdGl2ZSAocmFkaW8gb2ZmKQorCTIgPSBIVyBiYXNlZCBSRiBraWxsIGFjdGl2ZSAocmFkaW8gb2ZmKQorCTMgPSBCb3RoIEhXIGFuZCBTVyBSRiBraWxsIGFjdGl2ZSAocmFkaW8gb2ZmKQorCXdyaXRlIC0KKwkwID0gSWYgU1cgYmFzZWQgUkYga2lsbCBhY3RpdmUsIHR1cm4gdGhlIHJhZGlvIGJhY2sgb24KKwkxID0gSWYgcmFkaW8gaXMgb24sIGFjdGl2YXRlIFNXIGJhc2VkIFJGIGtpbGwKKworCU5PVEU6IElmIHlvdSBlbmFibGUgdGhlIFNXIGJhc2VkIFJGIGtpbGwgYW5kIHRoZW4gdG9nZ2xlIHRoZSBIVworICAJYmFzZWQgUkYga2lsbCBmcm9tIE9OIC0+IE9GRiAtPiBPTiwgdGhlIHJhZGlvIHdpbGwgTk9UIGNvbWUgYmFjayBvbgorCQorICB1Y29kZSAKKwlyZWFkLW9ubHkgYWNjZXNzIHRvIHRoZSB1Y29kZSB2ZXJzaW9uIG51bWJlcgorCisgIGxlZAorCXJlYWQgLQorCTAgPSBMRUQgY29kZSBkaXNhYmxlZAorCTEgPSBMRUQgY29kZSBlbmFibGVkCisJd3JpdGUgLQorCTAgPSBEaXNhYmxlIExFRCBjb2RlCisJMSA9IEVuYWJsZSBMRUQgY29kZQorCisJTk9URTogVGhlIExFRCBjb2RlIGhhcyBiZWVuIHJlcG9ydGVkIHRvIGhhbmcgc29tZSBzeXN0ZW1zIHdoZW4gCisJcnVubmluZyBpZmNvbmZpZyBhbmQgaXMgdGhlcmVmb3JlIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisKKworMS41LiBTdXBwb3J0ZWQgY2hhbm5lbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1Vwb24gbG9hZGluZyB0aGUgSW50ZWwoUikgUFJPL1dpcmVsZXNzIDI5MTVBQkcgRHJpdmVyIGZvciBMaW51eCwgYQorbWVzc2FnZSBzdGF0aW5nIHRoZSBkZXRlY3RlZCBnZW9ncmFwaHkgY29kZSBhbmQgdGhlIG51bWJlciBvZiA4MDIuMTEKK2NoYW5uZWxzIHN1cHBvcnRlZCBieSB0aGUgY2FyZCB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgbG9nLgorCitUaGUgZ2VvZ3JhcGh5IGNvZGUgY29ycmVzcG9uZHMgdG8gYSByZWd1bGF0b3J5IGRvbWFpbiBhcyBzaG93biBpbiB0aGUKK3RhYmxlIGJlbG93LgorCisJCQkJCSAgU3VwcG9ydGVkIGNoYW5uZWxzCitDb2RlCUdlb2dyYXBoeQkJCTgwMi4xMWJnCTgwMi4xMWEKKworLS0tCVJlc3RyaWN0ZWQJCQkxMSAJIAkgMAorWlpGCUN1c3RvbSBVUy9DYW5hZGEJCTExCSAJIDgKK1paRAlSZXN0IG9mIFdvcmxkCQkJMTMJIAkgMAorWlpBCUN1c3RvbSBVU0EgJiBFdXJvcGUgJiBIaWdoCTExCQkxMworWlpCCUN1c3RvbSBOQSAmIEV1cm9wZSAgICAJCTExCQkxMworWlpDCUN1c3RvbSBKYXBhbgkJCTExCSAJIDQKK1paTQlDdXN0b20gCQkJCTExCSAJIDAKK1paRQlFdXJvcGUJCQkJMTMJCTE5CitaWkoJQ3VzdG9tIEphcGFuCQkJMTQJIAkgNAorWlpSCVJlc3Qgb2YgV29ybGQJCQkxNAkgCSAwCitaWkgJSGlnaCBCYW5kCQkJMTMJIAkgNAorWlpHCUN1c3RvbSBFdXJvcGUJCQkxMwkgCSA0CitaWksJRXVyb3BlIAkJCQkxMwkJMjQKK1paTAlFdXJvcGUJCQkJMTEJCTEzCisKKworMi4gICBBZC1Ib2MgTmV0d29ya2luZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hlbiB1c2luZyBhIGRldmljZSBpbiBhbiBBZC1Ib2MgbmV0d29yaywgaXQgaXMgdXNlZnVsIHRvIHVuZGVyc3RhbmQgdGhlIAorc2VxdWVuY2UgYW5kIHJlcXVpcmVtZW50cyBmb3IgdGhlIGRyaXZlciB0byBiZSBhYmxlIHRvIGNyZWF0ZSwgam9pbiwgb3IgCittZXJnZSBuZXR3b3Jrcy4KKworVGhlIGZvbGxvd2luZyBhdHRlbXB0cyB0byBwcm92aWRlIGVub3VnaCBpbmZvcm1hdGlvbiBzbyB0aGF0IHlvdSBjYW4gCitoYXZlIGEgY29uc2lzdGVudCBleHBlcmllbmNlIHdoaWxlIHVzaW5nIHRoZSBkcml2ZXIgYXMgYSBtZW1iZXIgb2YgYW4gCitBZC1Ib2MgbmV0d29yay4KKworMi4xLiBKb2luaW5nIGFuIEFkLUhvYyBOZXR3b3JrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZWFzaWVzdCB3YXkgdG8gZ2V0IG9udG8gYW4gQWQtSG9jIG5ldHdvcmsgaXMgdG8gam9pbiBvbmUgdGhhdCAKK2FscmVhZHkgZXhpc3RzLgorCisyLjIuIENyZWF0aW5nIGFuIEFkLUhvYyBOZXR3b3JrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbiBBZC1Ib2MgbmV0d29ya3MgaXMgY3JlYXRlZCB1c2luZyB0aGUgc3ludGF4IG9mIHRoZSBXaXJlbGVzcyB0b29sLgorCitGb3IgRXhhbXBsZToKK2l3Y29uZmlnIGV0aDEgbW9kZSBhZC1ob2MgZXNzaWQgdGVzdGluZyBjaGFubmVsIDIKKworMi4zLiBNZXJnaW5nIEFkLUhvYyBOZXR3b3JrcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCiszLiAgSW50ZXJhY3Rpb24gd2l0aCBXaXJlbGVzcyBUb29scworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworMy4xIGl3Y29uZmlnIG1vZGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doZW4gY29uZmlndXJpbmcgdGhlIG1vZGUgb2YgdGhlIGFkYXB0ZXIsIGFsbCBydW4tdGltZSBjb25maWd1cmVkIHBhcmFtZXRlcnMKK2FyZSByZXNldCB0byB0aGUgdmFsdWUgdXNlZCB3aGVuIHRoZSBtb2R1bGUgd2FzIGxvYWRlZC4gIFRoaXMgaW5jbHVkZXMKK2NoYW5uZWxzLCByYXRlcywgRVNTSUQsIGV0Yy4KKworMy4yIGl3Y29uZmlnIHNlbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSAnaXdjb25maWcgZXRoWCBzZW5zIFhYJyBjb21tYW5kIHdpbGwgbm90IHNldCB0aGUgc2lnbmFsIHNlbnNpdGl2aXR5Cit0aHJlc2hvbGQsIGFzIGRlc2NyaWJlZCBpbiBpd2NvbmZpZyBkb2N1bWVudGF0aW9uLCBidXQgcmF0aGVyIHRoZSBudW1iZXIKK29mIGNvbnNlY3V0aXZlIG1pc3NlZCBiZWFjb25zIHRoYXQgd2lsbCB0cmlnZ2VyIGhhbmRvdmVyLCBpLmUuIHJvYW1pbmcKK3RvIGFub3RoZXIgYWNjZXNzIHBvaW50LiBBdCB0aGUgc2FtZSB0aW1lLCBpdCB3aWxsIHNldCB0aGUgZGlzYXNzb2NpYXRpb24KK3RocmVzaG9sZCB0byAzIHRpbWVzIHRoZSBnaXZlbiB2YWx1ZS4KKworCis0LiAgIEFib3V0IHRoZSBWZXJzaW9uIE51bWJlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0R1ZSB0byB0aGUgbmF0dXJlIG9mIG9wZW4gc291cmNlIGRldmVsb3BtZW50IHByb2plY3RzLCB0aGVyZSBhcmUgCitmcmVxdWVudGx5IGNoYW5nZXMgYmVpbmcgaW5jb3Jwb3JhdGVkIHRoYXQgaGF2ZSBub3QgZ29uZSB0aHJvdWdoIAorYSBjb21wbGV0ZSB2YWxpZGF0aW9uIHByb2Nlc3MuICBUaGVzZSBjaGFuZ2VzIGFyZSBpbmNvcnBvcmF0ZWQgaW50byAKK2RldmVsb3BtZW50IHNuYXBzaG90IHJlbGVhc2VzLgorCitSZWxlYXNlcyBhcmUgbnVtYmVyZWQgd2l0aCBhIHRocmVlIGxldmVsIHNjaGVtZTogCisKKwltYWpvci5taW5vci5kZXZlbG9wbWVudAorCitBbnkgdmVyc2lvbiB3aGVyZSB0aGUgJ2RldmVsb3BtZW50JyBwb3J0aW9uIGlzIDAgKGZvciBleGFtcGxlCisxLjAuMCwgMS4xLjAsIGV0Yy4pIGluZGljYXRlcyBhIHN0YWJsZSB2ZXJzaW9uIHRoYXQgd2lsbCBiZSBtYWRlIAorYXZhaWxhYmxlIGZvciBrZXJuZWwgaW5jbHVzaW9uLgorCitBbnkgdmVyc2lvbiB3aGVyZSB0aGUgJ2RldmVsb3BtZW50JyBwb3J0aW9uIGlzIG5vdCBhIDAgKGZvcgorZXhhbXBsZSAxLjAuMSwgMS4xLjUsIGV0Yy4pIGluZGljYXRlcyBhIGRldmVsb3BtZW50IHZlcnNpb24gdGhhdCBpcworYmVpbmcgbWFkZSBhdmFpbGFibGUgZm9yIHRlc3RpbmcgYW5kIGN1dHRpbmcgZWRnZSB1c2Vycy4gIFRoZSBzdGFiaWxpdHkgCithbmQgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZGV2ZWxvcG1lbnQgcmVsZWFzZXMgYXJlIG5vdCBrbm93LiAgV2UgbWFrZQorZWZmb3J0cyB0byB0cnkgYW5kIGtlZXAgYWxsIHNuYXBzaG90cyByZWFzb25hYmx5IHN0YWJsZSwgYnV0IGR1ZSB0byB0aGUKK2ZyZXF1ZW5jeSBvZiB0aGVpciByZWxlYXNlLCBhbmQgdGhlIGRlc2lyZSB0byBnZXQgdGhvc2UgcmVsZWFzZXMgCithdmFpbGFibGUgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSwgdW5rbm93biBhbm9tYWxpZXMgc2hvdWxkIGJlIGV4cGVjdGVkLgorCitUaGUgbWFqb3IgdmVyc2lvbiBudW1iZXIgd2lsbCBiZSBpbmNyZW1lbnRlZCB3aGVuIHNpZ25pZmljYW50IGNoYW5nZXMKK2FyZSBtYWRlIHRvIHRoZSBkcml2ZXIuICBDdXJyZW50bHksIHRoZXJlIGFyZSBubyBtYWpvciBjaGFuZ2VzIHBsYW5uZWQuCisKKzUuICBGaXJtd2FyZSBpbnN0YWxsYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGRyaXZlciByZXF1aXJlcyBhIGZpcm13YXJlIGltYWdlLCBkb3dubG9hZCBpdCBhbmQgZXh0cmFjdCB0aGUKK2ZpbGVzIHVuZGVyIC9saWIvZmlybXdhcmUgKG9yIHdoZXJldmVyIHlvdXIgaG90cGx1ZydzIGZpcm13YXJlLmFnZW50Cit3aWxsIGxvb2sgZm9yIGZpcm13YXJlIGZpbGVzKQorCitUaGUgZmlybXdhcmUgY2FuIGJlIGRvd25sb2FkZWQgZnJvbSB0aGUgZm9sbG93aW5nIFVSTDoKKworICAgIGh0dHA6Ly9pcHcyMjAwLnNmLm5ldC8KKworCis2LiAgU3VwcG9ydAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRm9yIGRpcmVjdCBzdXBwb3J0IG9mIHRoZSAxLjAuMCB2ZXJzaW9uLCB5b3UgY2FuIGNvbnRhY3QgCitodHRwOi8vc3VwcG9ydG1haWwuaW50ZWwuY29tLCBvciB5b3UgY2FuIHVzZSB0aGUgb3BlbiBzb3VyY2UgcHJvamVjdAorc3VwcG9ydC4KKworRm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gYW5kIHN1cHBvcnQsIGdvIHRvOgorCQorICAgIGh0dHA6Ly9pcHcyMjAwLnNmLm5ldC8KKworCis3LiAgTGljZW5zZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBDb3B5cmlnaHQoYykgMjAwMyAtIDIwMDYgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKyAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgCisgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzIAorICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAgCisgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCAKKyAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIAorICBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIAorICBtb3JlIGRldGFpbHMuCisgIAorICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSAKKyAgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3LCBVU0EuCisgIAorICBUaGUgZnVsbCBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBpbmNsdWRlZCBpbiB0aGlzIGRpc3RyaWJ1dGlvbiBpbiB0aGUKKyAgZmlsZSBjYWxsZWQgTElDRU5TRS4KKyAgCisgIENvbnRhY3QgSW5mb3JtYXRpb246CisgIEphbWVzIFAuIEtldHJlbm9zIDxpcHcyMTAwLWFkbWluQGxpbnV4LmludGVsLmNvbT4KKyAgSW50ZWwgQ29ycG9yYXRpb24sIDUyMDAgTi5FLiBFbGFtIFlvdW5nIFBhcmt3YXksIEhpbGxzYm9ybywgT1IgOTcxMjQtNjQ5NworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvUkVBRE1FLnNiMTAwMCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9SRUFETUUuc2IxMDAwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5MmMyYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvUkVBRE1FLnNiMTAwMApAQCAtMCwwICsxLDIwNyBAQAorc2IxMDAwIGlzIGEgbW9kdWxlIG5ldHdvcmsgZGV2aWNlIGRyaXZlciBmb3IgdGhlIEdlbmVyYWwgSW5zdHJ1bWVudCAoYWxzbyBrbm93bgorYXMgTmV4dExldmVsKSBTVVJGYm9hcmQxMDAwIGludGVybmFsIGNhYmxlIG1vZGVtIGJvYXJkLiAgVGhpcyBpcyBhbiBJU0EgY2FyZAord2hpY2ggaXMgdXNlZCBieSBhIG51bWJlciBvZiBjYWJsZSBUViBjb21wYW5pZXMgdG8gcHJvdmlkZSBjYWJsZSBtb2RlbSBhY2Nlc3MuCitJdCdzIGEgb25lLXdheSBkb3duc3RyZWFtLW9ubHkgY2FibGUgbW9kZW0sIG1lYW5pbmcgdGhhdCB5b3VyIHVwc3RyZWFtIG5ldCBsaW5rCitpcyBwcm92aWRlZCBieSB5b3VyIHJlZ3VsYXIgcGhvbmUgbW9kZW0uCisKK1RoaXMgZHJpdmVyIHdhcyB3cml0dGVuIGJ5IEZyYW5jbyBWZW50dXJpIDxmdmVudHVyaUBtZWRpYW9uZS5uZXQ+LiAgSGUgZGVzZXJ2ZXMKK2EgZ3JlYXQgZGVhbCBvZiB0aGFua3MgZm9yIHRoaXMgd29uZGVyZnVsIHBpZWNlIG9mIGNvZGUhCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1N1cHBvcnQgZm9yIHRoaXMgZGV2aWNlIGlzIG5vdyBhIHBhcnQgb2YgdGhlIHN0YW5kYXJkIExpbnV4IGtlcm5lbC4gIFRoZQorZHJpdmVyIHNvdXJjZSBjb2RlIGZpbGUgaXMgZHJpdmVycy9uZXQvc2IxMDAwLmMuICBJbiBhZGRpdGlvbiB0byB0aGlzCit5b3Ugd2lsbCBuZWVkOgorCisxLikgVGhlICJjbWNvbmZpZyIgcHJvZ3JhbS4gIFRoaXMgaXMgYSB1dGlsaXR5IHdoaWNoIHN1cHBsZW1lbnRzICJpZmNvbmZpZyIKK3RvIGNvbmZpZ3VyZSB0aGUgY2FibGUgbW9kZW0gYW5kIG5ldHdvcmsgaW50ZXJmYWNlICh1c3VhbGx5IGNhbGxlZCAiY20wIik7CithbmQKKworMi4pIFNldmVyYWwgUFBQIHNjcmlwdHMgd2hpY2ggbGl2ZSBpbiAvZXRjL3BwcCB0byBtYWtlIGNvbm5lY3RpbmcgdmlhIHlvdXIKK2NhYmxlIG1vZGVtIGVhc3kuCisKKyAgIFRoZXNlIHV0aWxpdGllcyBjYW4gYmUgb2J0YWluZWQgZnJvbToKKworICAgICAgaHR0cDovL3d3dy5qYWNrc29udmlsbGUubmV0L35mdmVudHVyaS8KKworICAgaW4gRnJhbmNvJ3Mgb3JpZ2luYWwgc291cmNlIGNvZGUgZGlzdHJpYnV0aW9uIC50YXIuZ3ogZmlsZS4gIFN1cHBvcnQgZm9yCisgICB0aGUgc2IxMDAwIGRyaXZlciBjYW4gYmUgZm91bmQgYXQ6CisKKyAgICAgIGh0dHA6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLyovaHR0cDovL2hvbWUuYWRlbHBoaWEubmV0L35zaWdsZXJjbS9zYjEwMDAuaHRtbAorICAgICAgaHR0cDovL3dlYi5hcmNoaXZlLm9yZy93ZWIvKi9odHRwOi8vbGludXhwb3dlci5jeC9+Y2FibGUvCisKKyAgIGFsb25nIHdpdGggdGhlc2UgdXRpbGl0aWVzLgorCiszLikgVGhlIHN0YW5kYXJkIGlzYXBucCB0b29scy4gIFRoZXNlIGFyZSBuZWNlc3NhcnkgdG8gY29uZmlndXJlIHlvdXIgU0IxMDAwCitjYXJkIGF0IGJvb3QgdGltZSAob3IgYWZ0ZXJ3YXJkcyBieSBoYW5kKSBzaW5jZSBpdCdzIGEgUG5QIGNhcmQuCisKKyAgIElmIHlvdSBkb24ndCBoYXZlIHRoZXNlIGluc3RhbGxlZCBhcyBhIHN0YW5kYXJkIHBhcnQgb2YgeW91ciBMaW51eAorICAgZGlzdHJpYnV0aW9uLCB5b3UgY2FuIGZpbmQgdGhlbSBhdDoKKworICAgICAgaHR0cDovL3d3dy5yb2VzdG9jay5kZW1vbi5jby51ay9pc2FwbnB0b29scy8KKworICAgb3IgY2hlY2sgeW91ciBMaW51eCBkaXN0cmlidXRpb24gYmluYXJ5IENEIG9yIHRoZWlyIHdlYiBzaXRlLiAgRm9yIGhlbHAgd2l0aAorICAgaXNhcG5wLCBwbnBkdW1wLCBvciAvZXRjL2lzYXBucC5jb25mLCBnbyB0bzoKKworICAgICAgaHR0cDovL3d3dy5yb2VzdG9jay5kZW1vbi5jby51ay9pc2FwbnB0b29scy9pc2FwbnBmYXEuaHRtbAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUbyBtYWtlIHRoZSBTQjEwMDAgY2FyZCB3b3JrLCBmb2xsb3cgdGhlc2Ugc3RlcHM6CisKKzEuKSBSdW4gYG1ha2UgY29uZmlnJywgb3IgYG1ha2UgbWVudWNvbmZpZycsIG9yIGBtYWtlIHhjb25maWcnLCB3aGljaGV2ZXIKK3lvdSBwcmVmZXIsIGluIHRoZSB0b3Aga2VybmVsIHRyZWUgZGlyZWN0b3J5IHRvIHNldCB1cCB5b3VyIGtlcm5lbAorY29uZmlndXJhdGlvbi4gIE1ha2Ugc3VyZSB0byBzYXkgIlkiIHRvICJQcm9tcHQgZm9yIGRldmVsb3BtZW50IGRyaXZlcnMiCithbmQgdG8gc2F5ICJNIiB0byB0aGUgc2IxMDAwIGRyaXZlci4gIEFsc28gc2F5ICJZIiBvciAiTSIgdG8gYWxsIHRoZSBzdGFuZGFyZAorbmV0d29ya2luZyBxdWVzdGlvbnMgdG8gZ2V0IFRDUC9JUCBhbmQgUFBQIG5ldHdvcmtpbmcgc3VwcG9ydC4KKworMi4pICpCRUZPUkUqIHlvdSBidWlsZCB0aGUga2VybmVsLCBlZGl0IGRyaXZlcnMvbmV0L3NiMTAwMC5jLiAgTWFrZSBzdXJlCit0byByZWRlZmluZSB0aGUgdmFsdWUgb2YgUkVBRF9EQVRBX1BPUlQgdG8gbWF0Y2ggdGhlIEkvTyBhZGRyZXNzIHVzZWQKK2J5IGlzYXBucCB0byBhY2Nlc3MgeW91ciBQblAgY2FyZHMuICBUaGlzIGlzIHRoZSB2YWx1ZSBvZiBSRUFEUE9SVCBpbgorL2V0Yy9pc2FwbnAuY29uZiBvciBnaXZlbiBieSB0aGUgb3V0cHV0IG9mIHBucGR1bXAuCisKKzMuKSBCdWlsZCBhbmQgaW5zdGFsbCB0aGUga2VybmVsIGFuZCBtb2R1bGVzIGFzIHVzdWFsLgorCis0LikgQm9vdCB5b3VyIG5ldyBrZXJuZWwgZm9sbG93aW5nIHRoZSB1c3VhbCBwcm9jZWR1cmVzLgorCis1LikgU2V0IHVwIHRvIGNvbmZpZ3VyZSB0aGUgbmV3IFNCMTAwMCBQblAgY2FyZCBieSBjYXB0dXJpbmcgdGhlIG91dHB1dAorb2YgInBucGR1bXAiIHRvIGEgZmlsZSBhbmQgZWRpdGluZyB0aGlzIGZpbGUgdG8gc2V0IHRoZSBjb3JyZWN0IEkvTyBwb3J0cywKK0lSUSwgYW5kIERNQSBzZXR0aW5ncyBmb3IgYWxsIHlvdXIgUG5QIGNhcmRzLiAgTWFrZSBzdXJlIG5vbmUgb2YgdGhlIHNldHRpbmdzCitjb25mbGljdCB3aXRoIG9uZSBhbm90aGVyLiAgVGhlbiB0ZXN0IHRoaXMgY29uZmlndXJhdGlvbiBieSBydW5uaW5nIHRoZQorImlzYXBucCIgY29tbWFuZCB3aXRoIHlvdXIgbmV3IGNvbmZpZyBmaWxlIGFzIHRoZSBpbnB1dC4gIENoZWNrIGZvcgorZXJyb3JzIGFuZCBmaXggYXMgbmVjZXNzYXJ5LiAgKEFzIGFuIGFzaWRlLCBJIHVzZSBJL08gcG9ydHMgMHgxMTAgYW5kCisweDMxMCBhbmQgSVJRIDExIGZvciBteSBTQjEwMDAgY2FyZCBhbmQgdGhlc2Ugd29yayB3ZWxsIGZvciBtZS4gIFlNTVYuKQorVGhlbiBzYXZlIHRoZSBmaW5pc2hlZCBjb25maWcgZmlsZSBhcyAvZXRjL2lzYXBucC5jb25mIGZvciBwcm9wZXIgY29uZmlndXJhdGlvbgorb24gc3Vic2VxdWVudCByZWJvb3RzLgorCis2LikgRG93bmxvYWQgdGhlIG9yaWdpbmFsIGZpbGUgc2IxMDAwLTEuMS4yLnRhci5neiBmcm9tIEZyYW5jbydzIHNpdGUgb3Igb25lIG9mCit0aGUgb3RoZXJzIHJlZmVyZW5jZWQgYWJvdmUuICBBcyByb290LCB1bnBhY2sgaXQgaW50byBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgYW5kCitkbyBhIGBtYWtlIGNtY29uZmlnJyBhbmQgdGhlbiBgaW5zdGFsbCAtYyBjbWNvbmZpZyAvdXNyL2xvY2FsL3NiaW4nLiAgRG9uJ3QgZG8KK2BtYWtlIGluc3RhbGwnIGJlY2F1c2UgaXQgZXhwZWN0cyB0byBmaW5kIGFsbCB0aGUgdXRpbGl0aWVzIGJ1aWx0IGFuZCByZWFkeSBmb3IKK2luc3RhbGxhdGlvbiwgbm90IGp1c3QgY21jb25maWcuCisKKzcuKSBBcyByb290LCBjb3B5IGFsbCB0aGUgZmlsZXMgdW5kZXIgdGhlIHBwcC8gc3ViZGlyZWN0b3J5IGluIEZyYW5jbydzCit0YXIgZmlsZSBpbnRvIC9ldGMvcHBwLCBiZWluZyBjYXJlZnVsIG5vdCB0byBvdmVyd3JpdGUgYW55IGZpbGVzIHRoYXQgYXJlCithbHJlYWR5IGluIHRoZXJlLiAgVGhlbiBtb2RpZnkgcHBwQGdpLW9uIHRvIHNldCB0aGUgY29ycmVjdCBsb2dpbiBuYW1lLAorcGhvbmUgbnVtYmVyLCBhbmQgZnJlcXVlbmN5IGZvciB0aGUgY2FibGUgbW9kZW0uICBBbHNvIGVkaXQgcGFwLXNlY3JldHMKK3RvIHNwZWNpZnkgeW91ciBsb2dpbiBuYW1lIGFuZCBwYXNzd29yZCBhbmQgYW55IHNpdGUtc3BlY2lmaWMgaW5mb3JtYXRpb24KK3lvdSBuZWVkLgorCis4LikgQmUgc3VyZSB0byBtb2RpZnkgL2V0Yy9wcHAvZmlyZXdhbGwgdG8gdXNlIGlwY2hhaW5zIGluc3RlYWQgb2YKK3RoZSBvbGRlciBpcGZ3YWRtIGNvbW1hbmRzIGZyb20gdGhlIDIuMC54IGtlcm5lbHMuICBUaGVyZSdzIGEgbmVhdCB1dGlsaXR5IHRvCitjb252ZXJ0IGlwZndhZG0gY29tbWFuZHMgdG8gaXBjaGFpbnMgY29tbWFuZHM6CisKKyAgIGh0dHA6Ly91c2Vycy5kaHAuY29tL353aGlzcGVyL2lwZndhZG0yaXBjaGFpbnMvCisKK1lvdSBtYXkgYWxzbyB3aXNoIHRvIG1vZGlmeSB0aGUgZmlyZXdhbGwgc2NyaXB0IHRvIGltcGxlbWVudCBhIGRpZmZlcmVudAorZmlyZXdhbGxpbmcgc2NoZW1lLgorCis5LikgU3RhcnQgdGhlIFBQUCBjb25uZWN0aW9uIHZpYSB0aGUgc2NyaXB0IC9ldGMvcHBwL3BwcEBnaS1vbi4gIFlvdSBtdXN0IGJlCityb290IHRvIGRvIHRoaXMuICBJdCdzIGJldHRlciB0byB1c2UgYSB1dGlsaXR5IGxpa2Ugc3VkbyB0byBleGVjdXRlCitmcmVxdWVudGx5IHVzZWQgY29tbWFuZHMgbGlrZSB0aGlzIHdpdGggcm9vdCBwZXJtaXNzaW9ucyBpZiBwb3NzaWJsZS4gIElmIHlvdQorY29ubmVjdCBzdWNjZXNzZnVsbHkgdGhlIGNhYmxlIG1vZGVtIGludGVyZmFjZSB3aWxsIGNvbWUgdXAgYW5kIHlvdSdsbCBzZWUgYQorZHJpdmVyIG1lc3NhZ2UgbGlrZSB0aGlzIGF0IHRoZSBjb25zb2xlOgorCisgICAgICAgICBjbTA6IHNiMTAwMCBhdCAoMHgxMTAsMHgzMTApLCBjc24gMSwgUy9OIDB4MmEwZDE2ZDgsIElSUSAxMS4KKyAgICAgICAgIHNiMTAwMC5jOnYxLjEuMiA2LzAxLzk4IChmdmVudHVyaUBtZWRpYW9uZS5uZXQpCisKK1RoZSAiaWZjb25maWciIGNvbW1hbmQgc2hvdWxkIHNob3cgdHdvIG5ldyBpbnRlcmZhY2VzLCBwcHAwIGFuZCBjbTAuCitUaGUgY29tbWFuZCAiY21jb25maWcgY20wIiB3aWxsIGdpdmUgeW91IGluZm9ybWF0aW9uIGFib3V0IHRoZSBjYWJsZSBtb2RlbQoraW50ZXJmYWNlLgorCisxMC4pIFRyeSBwaW5naW5nIGEgc2l0ZSB2aWEgYHBpbmcgLWMgNSB3d3cueWFob28uY29tJywgZm9yIGV4YW1wbGUuICBZb3Ugc2hvdWxkCitzZWUgcGFja2V0cyByZWNlaXZlZC4KKworMTEuKSBJZiB5b3UgY2FuJ3QgZ2V0IHNpdGUgbmFtZXMgKGxpa2Ugd3d3LnlhaG9vLmNvbSkgdG8gcmVzb2x2ZSBpbnRvCitJUCBhZGRyZXNzZXMgKGxpa2UgMjA0LjcxLjIwMC42NyksIGJlIHN1cmUgeW91ciAvZXRjL3Jlc29sdi5jb25mIGZpbGUKK2hhcyBubyBzeW50YXggZXJyb3JzIGFuZCBoYXMgdGhlIHJpZ2h0IG5hbWVzZXJ2ZXIgSVAgYWRkcmVzc2VzIGluIGl0LgorSWYgdGhpcyBkb2Vzbid0IGhlbHAsIHRyeSBzb21ldGhpbmcgbGlrZSBgcGluZyAtYyA1IDIwNC43MS4yMDAuNjcnIHRvCitzZWUgaWYgdGhlIG5ldHdvcmtpbmcgaXMgcnVubmluZyBidXQgdGhlIEROUyByZXNvbHV0aW9uIGlzIHdoZXJlIHRoZQorcHJvYmxlbSBsaWVzLgorCisxMi4pIElmIHlvdSBzdGlsbCBoYXZlIHByb2JsZW1zLCBnbyB0byB0aGUgc3VwcG9ydCB3ZWIgc2l0ZXMgbWVudGlvbmVkIGFib3ZlCithbmQgcmVhZCB0aGUgaW5mb3JtYXRpb24gYW5kIGRvY3VtZW50YXRpb24gdGhlcmUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvbW1vbiBwcm9ibGVtczoKKworMS4pIFBhY2tldHMgZ28gb3V0IG9uIHRoZSBwcHAwIGludGVyZmFjZSBidXQgZG9uJ3QgY29tZSBiYWNrIG9uIHRoZSBjbTAKK2ludGVyZmFjZS4gIEl0IGxvb2tzIGxpa2UgSSdtIGNvbm5lY3RlZCBidXQgSSBjYW4ndCBldmVuIHBpbmcgYW55CitudW1lcmljYWwgSVAgYWRkcmVzc2VzLiAgKFRoaXMgaGFwcGVucyBwcmVkb21pbmFudGx5IG9uIERlYmlhbiBzeXN0ZW1zIGR1ZQordG8gYSBkZWZhdWx0IGJvb3QtdGltZSBjb25maWd1cmF0aW9uIHNjcmlwdC4pCisKK1NvbHV0aW9uIC0tIEFzIHJvb3QgYGVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9jb25mL2NtMC9ycF9maWx0ZXInIHNvIGl0CitjYW4gc2hhcmUgdGhlIHNhbWUgSVAgYWRkcmVzcyBhcyB0aGUgcHBwMCBpbnRlcmZhY2UuICBOb3RlIHRoYXQgdGhpcworY29tbWFuZCBzaG91bGQgcHJvYmFibHkgYmUgYWRkZWQgdG8gdGhlIC9ldGMvcHBwL2NhYmxlbW9kZW0gc2NyaXB0CisqcmlnaHQqYmV0d2VlbiogdGhlICIvc2Jpbi9pZmNvbmZpZyIgYW5kICIvc2Jpbi9jbWNvbmZpZyIgY29tbWFuZHMuCitZb3UgbWF5IG5lZWQgdG8gZG8gdGhpcyB0byAvcHJvYy9zeXMvbmV0L2lwdjQvY29uZi9wcHAwL3JwX2ZpbHRlciBhcyB3ZWxsLgorSWYgeW91IGRvIHRoaXMgdG8gL3Byb2Mvc3lzL25ldC9pcHY0L2NvbmYvZGVmYXVsdC9ycF9maWx0ZXIgb24gZWFjaCByZWJvb3QKKyhpbiByYy5sb2NhbCBvciBzb21lIHN1Y2gpIHRoZW4gYW55IGludGVyZmFjZXMgY2FuIHNoYXJlIHRoZSBzYW1lIElQCithZGRyZXNzZXMuCisKKzIuKSBJIGdldCAidW5yZXNvbHZlZCBzeW1ib2wiIGVycm9yIG1lc3NhZ2VzIG9uIGV4ZWN1dGluZyBgaW5zbW9kIHNiMTAwMC5vJy4KKworU29sdXRpb24gLS0gWW91IHByb2JhYmx5IGhhdmUgYSBub24tbWF0Y2hpbmcga2VybmVsIHNvdXJjZSB0cmVlIGFuZAorL3Vzci9pbmNsdWRlL2xpbnV4IGFuZCAvdXNyL2luY2x1ZGUvYXNtIGhlYWRlciBmaWxlcy4gIE1ha2Ugc3VyZSB5b3UKK2luc3RhbGwgdGhlIGNvcnJlY3QgdmVyc2lvbnMgb2YgdGhlIGhlYWRlciBmaWxlcyBpbiB0aGVzZSB0d28gZGlyZWN0b3JpZXMuCitUaGVuIHJlYnVpbGQgYW5kIHJlaW5zdGFsbCB0aGUga2VybmVsLgorCiszLikgV2hlbiBpc2FwbnAgcnVucyBpdCByZXBvcnRzIGFuIGVycm9yLCBhbmQgbXkgU0IxMDAwIGNhcmQgaXNuJ3Qgd29ya2luZy4KKworU29sdXRpb24gLS0gVGhlcmUncyBhIHByb2JsZW0gd2l0aCBsYXRlciB2ZXJzaW9ucyBvZiBpc2FwbnAgdXNpbmcgdGhlICIoQ0hFQ0spIgorb3B0aW9uIGluIHRoZSBsaW5lcyB0aGF0IGFsbG9jYXRlIHRoZSB0d28gSS9PIGFkZHJlc3NlcyBmb3IgdGhlIFNCMTAwMCBjYXJkLgorVGhpcyBmaXJzdCBwb3BwZWQgdXAgb24gUkggNi4wLiAgRGVsZXRlICIoQ0hFQ0spIiBmb3IgdGhlIFNCMTAwMCBJL08gYWRkcmVzc2VzLgorTWFrZSBzdXJlIHRoZXkgZG9uJ3QgY29uZmxpY3Qgd2l0aCBhbnkgb3RoZXIgcGllY2VzIG9mIGhhcmR3YXJlIGZpcnN0ISAgVGhlbgorcmVydW4gaXNhcG5wIGFuZCBnbyBmcm9tIHRoZXJlLgorCis0LikgSSBjYW4ndCBleGVjdXRlIHRoZSAvZXRjL3BwcC9wcHBAZ2ktb24gZmlsZS4KKworU29sdXRpb24gLS0gQXMgcm9vdCBkbyBgY2htb2QgdWcreCAvZXRjL3BwcC9wcHBAZ2ktb24nLgorCis1LikgVGhlIGZpcmV3YWxsIHNjcmlwdCBpc24ndCB3b3JraW5nICh3aXRoIDIuMi54IGFuZCBoaWdoZXIga2VybmVscykuCisKK1NvbHV0aW9uIC0tIFVzZSB0aGUgaXBmd2FkbTJpcGNoYWlucyBzY3JpcHQgcmVmZXJlbmNlZCBhYm92ZSB0byBjb252ZXJ0IHRoZQorL2V0Yy9wcHAvZmlyZXdhbGwgc2NyaXB0IGZyb20gdGhlIGRlcHJlY2F0ZWQgaXBmd2FkbSBjb21tYW5kcyB0byBpcGNoYWlucy4KKworNi4pIEknbSBnZXR0aW5nICp0b25zKiBvZiBmaXJld2FsbCBkZW55IG1lc3NhZ2VzIGluIHRoZSAvdmFyL2tlcm4ubG9nLAorL3Zhci9tZXNzYWdlcywgYW5kL29yIC92YXIvc3lzbG9nIGZpbGVzLCBhbmQgdGhleSdyZSBmaWxsaW5nIHVwIG15IC92YXIKK3BhcnRpdGlvbiEhIQorCitTb2x1dGlvbiAtLSBGaXJzdCwgdGVsbCB5b3VyIElTUCB0aGF0IHlvdSdyZSByZWNlaXZpbmcgRG9TIChEZW5pYWwgb2YgU2VydmljZSkKK2FuZC9vciBwb3J0c2Nhbm5pbmcgKFVEUCBjb25uZWN0aW9uIGF0dGVtcHRzKSBhdHRhY2tzISAgTG9vayBvdmVyIHRoZSBkZW55CittZXNzYWdlcyB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIGF0dGFjayBpcyBhbmQgd2hlcmUgaXQncyBjb21pbmcgZnJvbS4gIE5leHQsCitlZGl0IC9ldGMvcHBwL2NhYmxlbW9kZW0gYW5kIG1ha2Ugc3VyZSB0aGUgIixub2Jyb2FkY2FzdCIgb3B0aW9uIGlzIHR1cm5lZCBvbgordG8gdGhlICJjbWNvbmZpZyIgY29tbWFuZCAodW5jb21tZW50IHRoYXQgbGluZSkuICBJZiB5b3UncmUgbm90IHJlY2VpdmluZyB0aGVzZQorZGVuaWVkIHBhY2tldHMgb24geW91ciBicm9hZGNhc3QgaW50ZXJmYWNlIChJUCBhZGRyZXNzIHh4eC55eXkuenp6LjI1NQordHlwaWNhbGx5KSwgdGhlbiBzb21lb25lIGlzIGF0dGFja2luZyB5b3VyIG1hY2hpbmUgaW4gcGFydGljdWxhci4gIEJlIGNhcmVmdWwKK291dCB0aGVyZS4uLi4KKworNy4pIEV2ZXJ5dGhpbmcgc2VlbXMgdG8gd29yayBmaW5lIGJ1dCBteSBjb21wdXRlciBsb2NrcyB1cCBhZnRlciBhIHdoaWxlCisoYW5kIHR5cGljYWxseSBkdXJpbmcgYSBsZW5ndGh5IGRvd25sb2FkIHRocm91Z2ggdGhlIGNhYmxlIG1vZGVtKSEKKworU29sdXRpb24gLS0gWW91IG1heSBuZWVkIHRvIGFkZCBhIHNob3J0IGRlbGF5IGluIHRoZSBkcml2ZXIgdG8gJ3Nsb3cgZG93bicgdGhlCitTVVJGYm9hcmQgYmVjYXVzZSB5b3VyIFBDIG1pZ2h0IG5vdCBiZSBhYmxlIHRvIGtlZXAgdXAgd2l0aCB0aGUgdHJhbnNmZXIgcmF0ZQorb2YgdGhlIFNCMTAwMC4gVG8gZG8gdGhpcywgaXQncyBwcm9iYWJseSBiZXN0IHRvIGRvd25sb2FkIEZyYW5jbydzCitzYjEwMDAtMS4xLjIudGFyLmd6IGFyY2hpdmUgYW5kIGJ1aWxkIGFuZCBpbnN0YWxsIHNiMTAwMC5vIG1hbnVhbGx5LiAgWW91J2xsCit3YW50IHRvIGVkaXQgdGhlICdNYWtlZmlsZScgYW5kIGxvb2sgZm9yIHRoZSAnU0IxMDAwX0RFTEFZJworZGVmaW5lLiAgVW5jb21tZW50IHRob3NlICdDRkxBR1MnIGxpbmVzIChhbmQgY29tbWVudCBvdXQgdGhlIGRlZmF1bHQgb25lcykKK2FuZCB0cnkgc2V0dGluZyB0aGUgZGVsYXkgdG8gc29tZXRoaW5nIGxpa2UgNjAgbWljcm9zZWNvbmRzIHdpdGg6CisnLURTQjEwMDBfREVMQVk9NjAnLiAgVGhlbiBkbyBgbWFrZScgYW5kIGFzIHJvb3QgYG1ha2UgaW5zdGFsbCcgYW5kIHRyeQoraXQgb3V0LiAgSWYgaXQgc3RpbGwgZG9lc24ndCB3b3JrIG9yIHlvdSBsaWtlIHBsYXlpbmcgd2l0aCB0aGUgZHJpdmVyLCB5b3UgbWF5Cit0cnkgb3RoZXIgbnVtYmVycy4gIFJlbWVtYmVyIHRob3VnaCB0aGF0IHRoZSBoaWdoZXIgdGhlIGRlbGF5LCB0aGUgc2xvd2VyIHRoZQorZHJpdmVyICh3aGljaCBzbG93cyBkb3duIHRoZSByZXN0IG9mIHRoZSBQQyB0b28gd2hlbiBpdCBpcyBhY3RpdmVseQordXNlZCkuIFRoYW5rcyB0byBFZCBEYWlnYSBmb3IgdGhpcyB0aXAhCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NyZWRpdHM6ICBUaGlzIFJFQURNRSBjYW1lIGZyb20gRnJhbmNvIFZlbnR1cmkncyBvcmlnaW5hbCBSRUFETUUgZmlsZSB3aGljaCBpcworc3RpbGwgc3VwcGxpZWQgd2l0aCBoaXMgZHJpdmVyIC50YXIuZ3ogYXJjaGl2ZS4gIEkgYW5kIGFsbCBvdGhlciBzYjEwMDAgdXNlcnMKK293ZSBGcmFuY28gYSB0cmVtZW5kb3VzICJUaGFuayB5b3UhIiAgQWRkaXRpb25hbCB0aGFua3MgZ29lcyB0byBDYXJsIFBhdHRlbgorYW5kIFJhbHBoIEJvbm5lbGwgd2hvIGFyZSBub3cgbWFuYWdpbmcgdGhlIExpbnV4IFNCMTAwMCB3ZWIgc2l0ZSwgYW5kIHRvCit0aGUgU0IxMDAwIHVzZXJzIHdobyByZXBvcnRlZCBhbmQgaGVscGVkIGRlYnVnIHRoZSBjb21tb24gcHJvYmxlbXMgbGlzdGVkCithYm92ZS4KKworCisJCQkJCUNsZW1taXR0IFNpZ2xlcgorCQkJCQljc2lnbGVyQHZ0LmVkdQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2FsaWFzLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9hbGlhcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUwNDZmNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9hbGlhcy50eHQKQEAgLTAsMCArMSw0MCBAQAorCitJUC1BbGlhc2luZzoKKz09PT09PT09PT09PQorCitJUC1hbGlhc2VzIGFyZSBhbiBvYnNvbGV0ZSB3YXkgdG8gbWFuYWdlIG11bHRpcGxlIElQLWFkZHJlc3Nlcy9tYXNrcworcGVyIGludGVyZmFjZS4gTmV3ZXIgdG9vbHMgc3VjaCBhcyBpcHJvdXRlMiBzdXBwb3J0IG11bHRpcGxlCithZGRyZXNzL3ByZWZpeGVzIHBlciBpbnRlcmZhY2UsIGJ1dCBhbGlhc2VzIGFyZSBzdGlsbCBzdXBwb3J0ZWQKK2ZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KKworQW4gYWxpYXMgaXMgZm9ybWVkIGJ5IGFkZGluZyBhIGNvbG9uIGFuZCBhIHN0cmluZyB3aGVuIHJ1bm5pbmcgaWZjb25maWcuCitUaGlzIHN0cmluZyBpcyB1c3VhbGx5IG51bWVyaWMsIGJ1dCB0aGlzIGlzIG5vdCBhIG11c3QuCisKK28gQWxpYXMgY3JlYXRpb24uCisgIEFsaWFzIGNyZWF0aW9uIGlzIGRvbmUgYnkgJ21hZ2ljJyBpbnRlcmZhY2UgbmFtaW5nOiBlZy4gdG8gY3JlYXRlIGEKKyAgMjAwLjEuMS4xIGFsaWFzIGZvciBldGgwIC4uLgorICAKKyAgICAjIGlmY29uZmlnIGV0aDA6MCAyMDAuMS4xLjEgIGV0YyxldGMuLi4uCisgICAgICAgICAgICAgICAgICAgfn4gLT4gcmVxdWVzdCBhbGlhcyAjMCBjcmVhdGlvbiAoaWYgbm90IHlldCBleGlzdHMpIGZvciBldGgwCisKKyAgICBUaGUgY29ycmVzcG9uZGluZyByb3V0ZSBpcyBhbHNvIHNldCB1cCBieSB0aGlzIGNvbW1hbmQuIAorICAgIFBsZWFzZSBub3RlOiBUaGUgcm91dGUgYWx3YXlzIHBvaW50cyB0byB0aGUgYmFzZSBpbnRlcmZhY2UuCisJCisKK28gQWxpYXMgZGVsZXRpb24uCisgIFRoZSBhbGlhcyBpcyByZW1vdmVkIGJ5IHNodXR0aW5nIHRoZSBhbGlhcyBkb3duOgorCisgICAgIyBpZmNvbmZpZyBldGgwOjAgZG93bgorICAgICAgICAgICAgICAgICB+fn5+fn5+fn5+IC0+IHdpbGwgZGVsZXRlIGFsaWFzCisKKyAgCQkgICAJCSAgIAorbyBBbGlhcyAocmUtKWNvbmZpZ3VyaW5nCisKKyAgQWxpYXNlcyBhcmUgbm90IHJlYWwgZGV2aWNlcywgYnV0IHByb2dyYW1zIHNob3VsZCBiZSBhYmxlIHRvIGNvbmZpZ3VyZSBhbmQKKyAgcmVmZXIgdG8gdGhlbSBhcyB1c3VhbCAoaWZjb25maWcsIHJvdXRlLCBldGMpLgorCisKK28gUmVsYXRpb25zaGlwIHdpdGggbWFpbiBkZXZpY2UKKworICBJZiB0aGUgYmFzZSBkZXZpY2UgaXMgc2h1dCBkb3duIHRoZSBhZGRlZCBhbGlhc2VzIHdpbGwgYmUgZGVsZXRlZCAKKyAgdG9vLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2FsdGVyYV90c2UudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2FsdGVyYV90c2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmMjRkZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYWx0ZXJhX3RzZS50eHQKQEAgLTAsMCArMSwyNjMgQEAKKyAgICAgICBBbHRlcmEgVHJpcGxlLVNwZWVkIEV0aGVybmV0IE1BQyBkcml2ZXIKKworQ29weXJpZ2h0IChDKSAyMDA4LTIwMTQgQWx0ZXJhIENvcnBvcmF0aW9uCisKK1RoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEFsdGVyYSBUcmlwbGUtU3BlZWQgRXRoZXJuZXQgKFRTRSkgY29udHJvbGxlcnMKK3VzaW5nIHRoZSBTR0RNQSBhbmQgTVNHRE1BIHNvZnQgRE1BIElQIGNvbXBvbmVudHMuIFRoZSBkcml2ZXIgdXNlcyB0aGUKK3BsYXRmb3JtIGJ1cyB0byBvYnRhaW4gY29tcG9uZW50IHJlc291cmNlcy4gVGhlIGRlc2lnbnMgdXNlZCB0byB0ZXN0IHRoaXMKK2RyaXZlciB3ZXJlIGJ1aWx0IGZvciBhIEN5Y2xvbmUoUikgViBTT0MgRlBHQSBib2FyZCwgYSBDeWNsb25lKFIpIFYgRlBHQSBib2FyZCwKK2FuZCB0ZXN0ZWQgd2l0aCBBUk0gYW5kIE5JT1MgcHJvY2Vzc29yIGhvc3RzIHNlcGVyYXRlbHkuIFRoZSBhbnRpY2lwYXRlZCB1c2UKK2Nhc2VzIGFyZSBzaW1wbGUgY29tbXVuaWNhdGlvbnMgYmV0d2VlbiBhbiBlbWJlZGRlZCBzeXN0ZW0gYW5kIGFuIGV4dGVybmFsIHBlZXIKK2ZvciBzdGF0dXMgYW5kIHNpbXBsZSBjb25maWd1cmF0aW9uIG9mIHRoZSBlbWJlZGRlZCBzeXN0ZW0uCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uIHZpc2l0IHd3dy5hbHRlcmEuY29tIGFuZCB3d3cucm9ja2V0Ym9hcmRzLm9yZy4gU3VwcG9ydAorZm9ydW1zIGZvciB0aGUgZHJpdmVyIG1heSBiZSBmb3VuZCBvbiB3d3cucm9ja2V0Ym9hcmRzLm9yZywgYW5kIGEgZGVzaWduIHVzZWQKK3RvIHRlc3QgdGhpcyBkcml2ZXIgbWF5IGJlIGZvdW5kIHRoZXJlIGFzIHdlbGwuIFN1cHBvcnQgaXMgYWxzbyBhdmFpbGFibGUgZnJvbQordGhlIG1haW50YWluZXIgb2YgdGhpcyBkcml2ZXIsIGZvdW5kIGluIE1BSU5UQUlORVJTLgorCitUaGUgVHJpcGxlLVNwZWVkIEV0aGVybmV0LCBTR0RNQSwgYW5kIE1TR0RNQSBjb21wb25lbnRzIGFyZSBhbGwgc29mdCBJUAorY29tcG9uZW50cyB0aGF0IGNhbiBiZSBhc3NlbWJsZWQgYW5kIGJ1aWx0IGludG8gYW4gRlBHQSB1c2luZyB0aGUgQWx0ZXJhCitRdWFydHVzIHRvb2xjaGFpbi4gUXVhcnR1cyAxMy4xIGFuZCAxNC4wIHdlcmUgdXNlZCB0byBidWlsZCB0aGUgZGVzaWduIHRoYXQKK3RoaXMgZHJpdmVyIHdhcyB0ZXN0ZWQgYWdhaW5zdC4gVGhlIHNvcGMyZHRzIHRvb2wgaXMgdXNlZCB0byBjcmVhdGUgdGhlCitkZXZpY2UgdHJlZSBmb3IgdGhlIGRyaXZlciwgYW5kIG1heSBiZSBmb3VuZCBhdCByb2NrZXRib2FyZHMub3JnLgorCitUaGUgZHJpdmVyIHByb2JlIGZ1bmN0aW9uIGV4YW1pbmVzIHRoZSBkZXZpY2UgdHJlZSBhbmQgZGV0ZXJtaW5lcyBpZiB0aGUKK1RyaXBsZS1TcGVlZCBFdGhlcm5ldCBpbnN0YW5jZSBpcyB1c2luZyBhbiBTR0RNQSBvciBNU0dETUEgY29tcG9uZW50LiBUaGUKK3Byb2JlIGZ1bmN0aW9uIHRoZW4gaW5zdGFsbHMgdGhlIGFwcHJvcHJpYXRlIHNldCBvZiBETUEgcm91dGluZXMgdG8KK2luaXRpYWxpemUsIHNldHVwIHRyYW5zbWl0cywgcmVjZWl2ZXMsIGFuZCBpbnRlcnJ1cHQgaGFuZGxpbmcgcHJpbWl0aXZlcyBmb3IKK3RoZSByZXNwZWN0aXZlIGNvbmZpZ3VyYXRpb25zLgorCitUaGUgU0dETUEgY29tcG9uZW50IGlzIHRvIGJlIGRlcHJlY2F0ZWQgaW4gdGhlIG5lYXIgZnV0dXJlIChvdmVyIHRoZSBuZXh0IDEtMgoreWVhcnMgYXMgb2YgdGhpcyB3cml0aW5nIGluIGVhcmx5IDIwMTQpIGluIGZhdm9yIG9mIHRoZSBNU0dETUEgY29tcG9uZW50LgorU0dETUEgc3VwcG9ydCBpcyBpbmNsdWRlZCBmb3IgZXhpc3RpbmcgZGVzaWducyBhbmQgcmVmZXJlbmNlIGluIGNhc2UgYQorZGV2ZWxvcGVyIHdpc2hlcyB0byBzdXBwb3J0IHRoZWlyIG93biBzb2Z0IERNQSBsb2dpYyBhbmQgZHJpdmVyIHN1cHBvcnQuIEFueQorbmV3IGRlc2lnbnMgc2hvdWxkIG5vdCB1c2UgdGhlIFNHRE1BLgorCitUaGUgU0dETUEgc3VwcG9ydHMgb25seSBhIHNpbmdsZSB0cmFuc21pdCBvciByZWNlaXZlIG9wZXJhdGlvbiBhdCBhIHRpbWUsIGFuZAordGhlcmVmb3JlIHdpbGwgbm90IHBlcmZvcm0gYXMgd2VsbCBjb21wYXJlZCB0byB0aGUgTVNHRE1BIHNvZnQgSVAuIFBsZWFzZQordmlzaXQgd3d3LmFsdGVyYS5jb20gZm9yIGtub3duLCBkb2N1bWVudGVkIFNHRE1BIGVycmF0YS4KKworU2NhdHRlci1nYXRoZXIgRE1BIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIFNHRE1BIG9yIE1TR0RNQSBhdCB0aGlzIHRpbWUuCitTY2F0dGVyLWdhdGhlciBETUEgd2lsbCBiZSBhZGRlZCB0byBhIGZ1dHVyZSBtYWludGVuYW5jZSB1cGRhdGUgdG8gdGhpcworZHJpdmVyLgorCitKdW1ibyBmcmFtZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyB0aW1lLgorCitUaGUgZHJpdmVyIGxpbWl0cyBQSFkgb3BlcmF0aW9ucyB0byAxMC8xMDBNYnBzLCBhbmQgaGFzIG5vdCB5ZXQgYmVlbiBmdWxseQordGVzdGVkIGZvciAxR2Jwcy4gVGhpcyBzdXBwb3J0IHdpbGwgYmUgYWRkZWQgaW4gYSBmdXR1cmUgbWFpbnRlbmFuY2UgdXBkYXRlLgorCisxKSBLZXJuZWwgQ29uZmlndXJhdGlvbgorVGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBBTFRFUkFfVFNFOgorIERldmljZSBEcml2ZXJzIC0tLT4gTmV0d29yayBkZXZpY2Ugc3VwcG9ydCAtLS0+IEV0aGVybmV0IGRyaXZlciBzdXBwb3J0IC0tLT4KKyBBbHRlcmEgVHJpcGxlLVNwZWVkIEV0aGVybmV0IE1BQyBzdXBwb3J0IChBTFRFUkFfVFNFKQorCisyKSBEcml2ZXIgcGFyYW1ldGVycyBsaXN0OgorCWRlYnVnOiBtZXNzYWdlIGxldmVsICgwOiBubyBvdXRwdXQsIDE2OiBhbGwpOworCWRtYV9yeF9udW06IE51bWJlciBvZiBkZXNjcmlwdG9ycyBpbiB0aGUgUlggbGlzdCAoZGVmYXVsdCBpcyA2NCk7CisJZG1hX3R4X251bTogTnVtYmVyIG9mIGRlc2NyaXB0b3JzIGluIHRoZSBUWCBsaXN0IChkZWZhdWx0IGlzIDY0KS4KKworMykgQ29tbWFuZCBsaW5lIG9wdGlvbnMKK0RyaXZlciBwYXJhbWV0ZXJzIGNhbiBiZSBhbHNvIHBhc3NlZCBpbiBjb21tYW5kIGxpbmUgYnkgdXNpbmc6CisJYWx0ZXJhX3RzZT1kbWFfcnhfbnVtOjEyOCxkbWFfdHhfbnVtOjUxMgorCis0KSBEcml2ZXIgaW5mb3JtYXRpb24gYW5kIG5vdGVzCisKKzQuMSkgVHJhbnNtaXQgcHJvY2VzcworV2hlbiB0aGUgZHJpdmVyJ3MgdHJhbnNtaXQgcm91dGluZSBpcyBjYWxsZWQgYnkgdGhlIGtlcm5lbCwgaXQgc2V0cyB1cCBhCit0cmFuc21pdCBkZXNjcmlwdG9yIGJ5IGNhbGxpbmcgdGhlIHVuZGVybHlpbmcgRE1BIHRyYW5zbWl0IHJvdXRpbmUgKFNHRE1BIG9yCitNU0dETUEpLCBhbmQgaW5pdGl0ZXMgYSB0cmFuc21pdCBvcGVyYXRpb24uIE9uY2UgdGhlIHRyYW5zbWl0IGlzIGNvbXBsZXRlLCBhbgoraW50ZXJydXB0IGlzIGRyaXZlbiBieSB0aGUgdHJhbnNtaXQgRE1BIGxvZ2ljLiBUaGUgZHJpdmVyIGhhbmRsZXMgdGhlIHRyYW5zbWl0Citjb21wbGV0aW9uIGluIHRoZSBjb250ZXh0IG9mIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgY2hhaW4gYnkgcmVjeWNsaW5nCityZXNvdXJjZSByZXF1aXJlZCB0byBzZW5kIGFuZCB0cmFjayB0aGUgcmVxdWVzdGVkIHRyYW5zbWl0IG9wZXJhdGlvbi4KKworNC4yKSBSZWNlaXZlIHByb2Nlc3MKK1RoZSBkcml2ZXIgd2lsbCBwb3N0IHJlY2VpdmUgYnVmZmVycyB0byB0aGUgcmVjZWl2ZSBETUEgbG9naWMgZHVyaW5nIGRyaXZlcgoraW50aWFsaXphdGlvbi4gUmVjZWl2ZSBidWZmZXJzIG1heSBvciBtYXkgbm90IGJlIHF1ZXVlZCBkZXBlbmRpbmcgdXBvbiB0aGUKK3VuZGVybHlpbmcgRE1BIGxvZ2ljIChNU0dETUEgaXMgYWJsZSBxdWV1ZSByZWNlaXZlIGJ1ZmZlcnMsIFNHRE1BIGlzIG5vdCBhYmxlCit0byBxdWV1ZSByZWNlaXZlIGJ1ZmZlcnMgdG8gdGhlIFNHRE1BIHJlY2VpdmUgbG9naWMpLiBXaGVuIGEgcGFja2V0IGlzCityZWNlaXZlZCwgdGhlIERNQSBsb2dpYyBnZW5lcmF0ZXMgYW4gaW50ZXJydXB0LiBUaGUgZHJpdmVyIGhhbmRsZXMgYSByZWNlaXZlCitpbnRlcnJ1cHQgYnkgb2J0YWluaW5nIHRoZSBETUEgcmVjZWl2ZSBsb2dpYyBzdGF0dXMsIHJlYXBpbmcgcmVjZWl2ZQorY29tcGxldGlvbnMgdW50aWwgbm8gbW9yZSByZWNlaXZlIGNvbXBsZXRpb25zIGFyZSBhdmFpbGFibGUuCisKKzQuMykgSW50ZXJydXB0IE1pdGlnYXRpb24KK1RoZSBkcml2ZXIgaXMgYWJsZSB0byBtaXRpZ2F0ZSB0aGUgbnVtYmVyIG9mIGl0cyBETUEgaW50ZXJydXB0cwordXNpbmcgTkFQSSBmb3IgcmVjZWl2ZSBvcGVyYXRpb25zLiBJbnRlcnJ1cHQgbWl0aWdhdGlvbiBpcyBub3QgeWV0IHN1cHBvcnRlZAorZm9yIHRyYW5zbWl0IG9wZXJhdGlvbnMsIGJ1dCB3aWxsIGJlIGFkZGVkIGluIGEgZnV0dXJlIG1haW50ZW5hbmNlIHJlbGVhc2UuCisKKzQuNCkgRXRodG9vbCBzdXBwb3J0CitFdGh0b29sIGlzIHN1cHBvcnRlZC4gRHJpdmVyIHN0YXRpc3RpY3MgYW5kIGludGVybmFsIGVycm9ycyBjYW4gYmUgdGFrZW4gdXNpbmc6CitldGh0b29sIC1TIGV0aFggY29tbWFuZC4gSXQgaXMgcG9zc2libGUgdG8gZHVtcCByZWdpc3RlcnMgZXRjLgorCis0LjUpIFBIWSBTdXBwb3J0CitUaGUgZHJpdmVyIGlzIGNvbXBhdGlibGUgd2l0aCBQQUwgdG8gd29yayB3aXRoIFBIWSBhbmQgR1BIWSBkZXZpY2VzLgorCis0LjcpIExpc3Qgb2Ygc291cmNlIGZpbGVzOgorIG8gS2NvbmZpZworIG8gTWFrZWZpbGUKKyBvIGFsdGVyYV90c2VfbWFpbi5jOiBtYWluIG5ldHdvcmsgZGV2aWNlIGRyaXZlcgorIG8gYWx0ZXJhX3RzZV9ldGh0b29sLmM6IGV0aHRvb2wgc3VwcG9ydAorIG8gYWx0ZXJhX3RzZS5oOiBwcml2YXRlIGRyaXZlciBzdHJ1Y3R1cmUgYW5kIGNvbW1vbiBkZWZpbml0aW9ucworIG8gYWx0ZXJhX21zZ2RtYS5oOiBNU0dETUEgaW1wbGVtZW50YXRpb24gZnVuY3Rpb24gZGVmaW5pdGlvbnMKKyBvIGFsdGVyYV9zZ2RtYS5oOiBTR0RNQSBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbiBkZWZpbml0aW9ucworIG8gYWx0ZXJhX21zZ2RtYS5jOiBNU0dETUEgaW1wbGVtZW50YXRpb24KKyBvIGFsdGVyYV9zZ2RtYS5jOiBTR0RNQSBpbXBsZW1lbnRhdGlvbgorIG8gYWx0ZXJhX3NnZG1haHcuaDogU0dETUEgcmVnaXN0ZXIgYW5kIGRlc2NyaXB0b3IgZGVmaW5pdGlvbnMKKyBvIGFsdGVyYV9tc2dkbWFody5oOiBNU0dETUEgcmVnaXN0ZXIgYW5kIGRlc2NyaXB0b3IgZGVmaW5pdGlvbnMKKyBvIGFsdGVyYV91dGlscy5jOiBEcml2ZXIgdXRpbGl0eSBmdW5jdGlvbnMKKyBvIGFsdGVyYV91dGlscy5oOiBEcml2ZXIgdXRpbGl0eSBmdW5jdGlvbiBkZWZpbml0aW9ucworCis1KSBEZWJ1ZyBJbmZvcm1hdGlvbgorCitUaGUgZHJpdmVyIGV4cG9ydHMgZGVidWcgaW5mb3JtYXRpb24gc3VjaCBhcyBpbnRlcm5hbCBzdGF0aXN0aWNzLAorZGVidWcgaW5mb3JtYXRpb24sIE1BQyBhbmQgRE1BIHJlZ2lzdGVycyBldGMuCisKK0EgdXNlciBtYXkgdXNlIHRoZSBldGh0b29sIHN1cHBvcnQgdG8gZ2V0IHN0YXRpc3RpY3M6CitlLmcuIHVzaW5nOiBldGh0b29sIC1TIGV0aFggKHRoYXQgc2hvd3MgdGhlIHN0YXRpc3RpY3MgY291bnRlcnMpCitvciBzZWVzIHRoZSBNQUMgcmVnaXN0ZXJzOiBlLmcuIHVzaW5nOiBldGh0b29sIC1kIGV0aFgKKworVGhlIGRldmVsb3BlciBjYW4gYWxzbyB1c2UgdGhlICJkZWJ1ZyIgbW9kdWxlIHBhcmFtZXRlciB0byBnZXQKK2Z1cnRoZXIgZGVidWcgaW5mb3JtYXRpb24uCisKKzYpIFN0YXRpc3RpY3MgU3VwcG9ydAorCitUaGUgY29udHJvbGxlciBhbmQgZHJpdmVyIHN1cHBvcnQgYSBtaXggb2YgSUVFRSBzdGFuZGFyZCBkZWZpbmVkIHN0YXRpc3RpY3MsCitSRkMgZGVmaW5lZCBzdGF0aXN0aWNzLCBhbmQgZHJpdmVyIG9yIEFsdGVyYSBkZWZpbmVkIHN0YXRpc3RpY3MuIFRoZSBmb3VyCitzcGVjaWZpY2F0aW9ucyBjb250YWluaW5nIHRoZSBzdGFuZGFyZCBkZWZpbml0aW9ucyBmb3IgdGhlc2Ugc3RhdGlzdGljcyBhcmUKK2FzIGZvbGxvd3M6CisKKyBvIElFRUUgODAyLjMtMjAxMiAtIElFRUUgU3RhbmRhcmQgZm9yIEV0aGVybmV0LgorIG8gUkZDIDI4NjMgZm91bmQgYXQgaHR0cDovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjMjg2My50eHQuCisgbyBSRkMgMjgxOSBmb3VuZCBhdCBodHRwOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmMyODE5LnR4dC4KKyBvIEFsdGVyYSBUcmlwbGUgU3BlZWQgRXRoZXJuZXQgVXNlciBHdWlkZSwgZm91bmQgYXQgaHR0cDovL3d3dy5hbHRlcmEuY29tCisKK1RoZSBzdGF0aXN0aWNzIHN1cHBvcnRlZCBieSB0aGUgVFNFIGFuZCB0aGUgZGV2aWNlIGRyaXZlciBhcmUgYXMgZm9sbG93czoKKworInR4X3BhY2tldHMiIGlzIGVxdWl2YWxlbnQgdG8gYUZyYW1lc1RyYW5zbWl0dGVkT0sgZGVmaW5lZCBpbiBJRUVFIDgwMi4zLTIwMTIsCitTZWN0aW9uIDUuMi4yLjEuMi4gVGhpcyBzdGF0aXN0aWNzIGlzIHRoZSBjb3VudCBvZiBmcmFtZXMgdGhhdCBhcmUgc3VjY2Vzc2Z1bGx5Cit0cmFuc21pdHRlZC4KKworInJ4X3BhY2tldHMiIGlzIGVxdWl2YWxlbnQgdG8gYUZyYW1lc1JlY2VpdmVkT0sgZGVmaW5lZCBpbiBJRUVFIDgwMi4zLTIwMTIsCitTZWN0aW9uIDUuMi4yLjEuNS4gVGhpcyBzdGF0aXN0aWMgaXMgdGhlIGNvdW50IG9mIGZyYW1lcyB0aGF0IGFyZSBzdWNjZXNzZnVsbHkKK3JlY2VpdmVkLiBUaGlzIGNvdW50IGRvZXMgbm90IGluY2x1ZGUgYW55IGVycm9yIHBhY2tldHMgc3VjaCBhcyBDUkMgZXJyb3JzLAorbGVuZ3RoIGVycm9ycywgb3IgYWxpZ25tZW50IGVycm9ycy4KKworInJ4X2NyY19lcnJvcnMiIGlzIGVxdWl2YWxlbnQgdG8gYUZyYW1lQ2hlY2tTZXF1ZW5jZUVycm9ycyBkZWZpbmVkIGluIElFRUUKKzgwMi4zLTIwMTIsIFNlY3Rpb24gNS4yLjIuMS42LiBUaGlzIHN0YXRpc3RpYyBpcyB0aGUgY291bnQgb2YgZnJhbWVzIHRoYXQgYXJlCithbiBpbnRlZ3JhbCBudW1iZXIgb2YgYnl0ZXMgaW4gbGVuZ3RoIGFuZCBkbyBub3QgcGFzcyB0aGUgQ1JDIHRlc3QgYXMgdGhlIGZyYW1lCitpcyByZWNlaXZlZC4KKworInJ4X2FsaWduX2Vycm9ycyIgaXMgZXF1aXZhbGVudCB0byBhQWxpZ25tZW50RXJyb3JzIGRlZmluZWQgaW4gSUVFRSA4MDIuMy0yMDEyLAorU2VjdGlvbiA1LjIuMi4xLjcuIFRoaXMgc3RhdGlzdGljIGlzIHRoZSBjb3VudCBvZiBmcmFtZXMgdGhhdCBhcmUgbm90IGFuCitpbnRlZ3JhbCBudW1iZXIgb2YgYnl0ZXMgaW4gbGVuZ3RoIGFuZCBkbyBub3QgcGFzcyB0aGUgQ1JDIHRlc3QgYXMgdGhlIGZyYW1lIGlzCityZWNlaXZlZC4KKworInR4X2J5dGVzIiBpcyBlcXVpdmFsZW50IHRvIGFPY3RldHNUcmFuc21pdHRlZE9LIGRlZmluZWQgaW4gSUVFRSA4MDIuMy0yMDEyLAorU2VjdGlvbiA1LjIuMi4xLjguIFRoaXMgc3RhdGlzdGljIGlzIHRoZSBjb3VudCBvZiBkYXRhIGFuZCBwYWQgYnl0ZXMKK3N1Y2Nlc3NmdWxseSB0cmFuc21pdHRlZCBmcm9tIHRoZSBpbnRlcmZhY2UuCisKKyJyeF9ieXRlcyIgaXMgZXF1aXZhbGVudCB0byBhT2N0ZXRzUmVjZWl2ZWRPSyBkZWZpbmVkIGluIElFRUUgODAyLjMtMjAxMiwKK1NlY3Rpb24gNS4yLjIuMS4xNC4gVGhpcyBzdGF0aXN0aWMgaXMgdGhlIGNvdW50IG9mIGRhdGEgYW5kIHBhZCBieXRlcworc3VjY2Vzc2Z1bGx5IHJlY2VpdmVkIGJ5IHRoZSBjb250cm9sbGVyLgorCisidHhfcGF1c2UiIGlzIGVxdWl2YWxlbnQgdG8gYVBBVVNFTUFDQ3RybEZyYW1lc1RyYW5zbWl0dGVkIGRlZmluZWQgaW4gSUVFRQorODAyLjMtMjAxMiwgU2VjdGlvbiAzMC4zLjQuMi4gVGhpcyBzdGF0aXN0aWMgaXMgYSBjb3VudCBvZiBQQVVTRSBmcmFtZXMKK3RyYW5zbWl0dGVkIGZyb20gdGhlIG5ldHdvcmsgY29udHJvbGxlci4KKworInJ4X3BhdXNlIiBpcyBlcXVpdmFsZW50IHRvIGFQQVVTRU1BQ0N0cmxGcmFtZXNSZWNlaXZlZCBkZWZpbmVkIGluIElFRUUKKzgwMi4zLTIwMTIsIFNlY3Rpb24gMzAuMy40LjMuIFRoaXMgc3RhdGlzdGljIGlzIGEgY291bnQgb2YgUEFVU0UgZnJhbWVzCityZWNlaXZlZCBieSB0aGUgbmV0d29yayBjb250cm9sbGVyLgorCisicnhfZXJyb3JzIiBpcyBlcXVpdmFsZW50IHRvIGlmSW5FcnJvcnMgZGVmaW5lZCBpbiBSRkMgMjg2My4gVGhpcyBzdGF0aXN0aWMgaXMKK2EgY291bnQgb2YgdGhlIG51bWJlciBvZiBwYWNrZXRzIHJlY2VpdmVkIGNvbnRhaW5pbmcgZXJyb3JzIHRoYXQgcHJldmVudGVkIHRoZQorcGFja2V0IGZyb20gYmVpbmcgZGVsaXZlcmVkIHRvIGEgaGlnaGVyIGxldmVsIHByb3RvY29sLgorCisidHhfZXJyb3JzIiBpcyBlcXVpdmFsZW50IHRvIGlmT3V0RXJyb3JzIGRlZmluZWQgaW4gUkZDIDI4NjMuIFRoaXMgc3RhdGlzdGljCitpcyBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgcGFja2V0cyB0aGF0IGNvdWxkIG5vdCBiZSB0cmFuc21pdHRlZCBkdWUgdG8gZXJyb3JzLgorCisicnhfdW5pY2FzdCIgaXMgZXF1aXZhbGVudCB0byBpZkluVWNhc3RQa3RzIGRlZmluZWQgaW4gUkZDIDI4NjMuIFRoaXMKK3N0YXRpc3RpYyBpcyBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgcGFja2V0cyByZWNlaXZlZCB0aGF0IHdlcmUgbm90IGFkZHJlc3NlZAordG8gdGhlIGJyb2FkY2FzdCBhZGRyZXNzIG9yIGEgbXVsdGljYXN0IGdyb3VwLgorCisicnhfbXVsdGljYXN0IiBpcyBlcXVpdmFsZW50IHRvIGlmSW5NdWx0aWNhc3RQa3RzIGRlZmluZWQgaW4gUkZDIDI4NjMuIFRoaXMKK3N0YXRpc3RpYyBpcyBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgcGFja2V0cyByZWNlaXZlZCB0aGF0IHdlcmUgYWRkcmVzc2VkIHRvCithIG11bHRpY2FzdCBhZGRyZXNzIGdyb3VwLgorCisicnhfYnJvYWRjYXN0IiBpcyBlcXVpdmFsZW50IHRvIGlmSW5Ccm9hZGNhc3RQa3RzIGRlZmluZWQgaW4gUkZDIDI4NjMuIFRoaXMKK3N0YXRpc3RpYyBpcyBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgcGFja2V0cyByZWNlaXZlZCB0aGF0IHdlcmUgYWRkcmVzc2VkIHRvCit0aGUgYnJvYWRjYXN0IGFkZHJlc3MuCisKKyJ0eF9kaXNjYXJkcyIgaXMgZXF1aXZhbGVudCB0byBpZk91dERpc2NhcmRzIGRlZmluZWQgaW4gUkZDIDI4NjMuIFRoaXMKK3N0YXRpc3RpYyBpcyB0aGUgbnVtYmVyIG9mIG91dGJvdW5kIHBhY2tldHMgbm90IHRyYW5zbWl0dGVkIGV2ZW4gdGhvdWdoIGFuCitlcnJvciB3YXMgbm90IGRldGVjdGVkLiBBbiBleGFtcGxlIG9mIGEgcmVhc29uIHRoaXMgbWlnaHQgb2NjdXIgaXMgdG8gZnJlZSB1cAoraW50ZXJuYWwgYnVmZmVyIHNwYWNlLgorCisidHhfdW5pY2FzdCIgaXMgZXF1aXZhbGVudCB0byBpZk91dFVjYXN0UGt0cyBkZWZpbmVkIGluIFJGQyAyODYzLiBUaGlzCitzdGF0aXN0aWMgY291bnRzIHRoZSBudW1iZXIgb2YgcGFja2V0cyB0cmFuc21pdHRlZCB0aGF0IHdlcmUgbm90IGFkZHJlc3NlZCB0bworYSBtdWx0aWNhc3QgZ3JvdXAgb3IgYnJvYWRjYXN0IGFkZHJlc3MuCisKKyJ0eF9tdWx0aWNhc3QiIGlzIGVxdWl2YWxlbnQgdG8gaWZPdXRNdWx0aWNhc3RQa3RzIGRlZmluZWQgaW4gUkZDIDI4NjMuIFRoaXMKK3N0YXRpc3RpYyBjb3VudHMgdGhlIG51bWJlciBvZiBwYWNrZXRzIHRyYW5zbWl0dGVkIHRoYXQgd2VyZSBhZGRyZXNzZWQgdG8gYQorbXVsdGljYXN0IGdyb3VwLgorCisidHhfYnJvYWRjYXN0IiBpcyBlcXVpdmFsZW50IHRvIGlmT3V0QnJvYWRjYXN0UGt0cyBkZWZpbmVkIGluIFJGQyAyODYzLiBUaGlzCitzdGF0aXN0aWMgY291bnRzIHRoZSBudW1iZXIgb2YgcGFja2V0cyB0cmFuc21pdHRlZCB0aGF0IHdlcmUgYWRkcmVzc2VkIHRvIGEKK2Jyb2FkY2FzdCBhZGRyZXNzLgorCisiZXRoZXJfZHJvcHMiIGlzIGVxdWl2YWxlbnQgdG8gZXRoZXJTdGF0c0Ryb3BFdmVudHMgZGVmaW5lZCBpbiBSRkMgMjgxOS4KK1RoaXMgc3RhdGlzdGljIGNvdW50cyB0aGUgbnVtYmVyIG9mIHBhY2tldHMgZHJvcHBlZCBkdWUgdG8gbGFjayBvZiBpbnRlcm5hbAorY29udHJvbGxlciByZXNvdXJjZXMuCisKKyJyeF90b3RhbF9ieXRlcyIgaXMgZXF1aXZhbGVudCB0byBldGhlclN0YXRzT2N0ZXRzIGRlZmluZWQgaW4gUkZDIDI4MTkuCitUaGlzIHN0YXRpc3RpYyBjb3VudHMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyByZWNlaXZlZCBieSB0aGUgY29udHJvbGxlciwKK2luY2x1ZGluZyBlcnJvciBhbmQgZGlzY2FyZGVkIHBhY2tldHMuCisKKyJyeF90b3RhbF9wYWNrZXRzIiBpcyBlcXVpdmFsZW50IHRvIGV0aGVyU3RhdHNQa3RzIGRlZmluZWQgaW4gUkZDIDI4MTkuCitUaGlzIHN0YXRpc3RpYyBjb3VudHMgdGhlIHRvdGFsIG51bWJlciBvZiBwYWNrZXRzIHJlY2VpdmVkIGJ5IHRoZSBjb250cm9sbGVyLAoraW5jbHVkaW5nIGVycm9yLCBkaXNjYXJkZWQsIHVuaWNhc3QsIG11bHRpY2FzdCwgYW5kIGJyb2FkY2FzdCBwYWNrZXRzLgorCisicnhfdW5kZXJzaXplIiBpcyBlcXVpdmFsZW50IHRvIGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzIGRlZmluZWQgaW4gUkZDIDI4MTkuCitUaGlzIHN0YXRpc3RpYyBjb3VudHMgdGhlIG51bWJlciBvZiBjb3JyZWN0bHkgZm9ybWVkIHBhY2tldHMgcmVjZWl2ZWQgbGVzcwordGhhbiA2NCBieXRlcyBsb25nLgorCisicnhfb3ZlcnNpemUiIGlzIGVxdWl2YWxlbnQgdG8gZXRoZXJTdGF0c092ZXJzaXplUGt0cyBkZWZpbmVkIGluIFJGQyAyODE5LgorVGhpcyBzdGF0aXN0aWMgY291bnRzIHRoZSBudW1iZXIgb2YgY29ycmVjdGx5IGZvcm1lZCBwYWNrZXRzIGdyZWF0ZXIgdGhhbiAxNTE4CitieXRlcyBsb25nLgorCisicnhfNjRfYnl0ZXMiIGlzIGVxdWl2YWxlbnQgdG8gZXRoZXJTdGF0c1BrdHM2NE9jdGV0cyBkZWZpbmVkIGluIFJGQyAyODE5LgorVGhpcyBzdGF0aXN0aWMgY291bnRzIHRoZSB0b3RhbCBudW1iZXIgb2YgcGFja2V0cyByZWNlaXZlZCB0aGF0IHdlcmUgNjQgb2N0ZXRzCitpbiBsZW5ndGguCisKKyJyeF82NV8xMjdfYnl0ZXMiIGlzIGVxdWl2YWxlbnQgdG8gZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzIGRlZmluZWQgaW4gUkZDCisyODE5LiBUaGlzIHN0YXRpc3RpYyBjb3VudHMgdGhlIHRvdGFsIG51bWJlciBvZiBwYWNrZXRzIHJlY2VpdmVkIHRoYXQgd2VyZQorYmV0d2VlbiA2NSBhbmQgMTI3IG9jdGV0cyBpbiBsZW5ndGggaW5jbHVzaXZlLgorCisicnhfMTI4XzI1NV9ieXRlcyIgaXMgZXF1aXZhbGVudCB0byBldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzIGRlZmluZWQgaW4KK1JGQyAyODE5LiBUaGlzIHN0YXRpc3RpYyBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgcmVjZWl2ZWQgdGhhdCB3ZXJlCitiZXR3ZWVuIDEyOCBhbmQgMjU1IG9jdGV0cyBpbiBsZW5ndGggaW5jbHVzaXZlLgorCisicnhfMjU2XzUxMV9ieXRlcyIgaXMgZXF1aXZhbGVudCB0byBldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzIGRlZmluZWQgaW4KK1JGQyAyODE5LiBUaGlzIHN0YXRpc3RpYyBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgcmVjZWl2ZWQgdGhhdCB3ZXJlCitiZXR3ZWVuIDI1NiBhbmQgNTExIG9jdGV0cyBpbiBsZW5ndGggaW5jbHVzaXZlLgorCisicnhfNTEyXzEwMjNfYnl0ZXMiIGlzIGVxdWl2YWxlbnQgdG8gZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHMgZGVmaW5lZCBpbgorUkZDIDI4MTkuIFRoaXMgc3RhdGlzdGljIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgcGFja2V0cyByZWNlaXZlZCB0aGF0IHdlcmUKK2JldHdlZW4gNTEyIGFuZCAxMDIzIG9jdGV0cyBpbiBsZW5ndGggaW5jbHVzaXZlLgorCisicnhfMTAyNF8xNTE4X2J5dGVzIiBpcyBlcXVpdmFsZW50IHRvIGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0cyBkZWZpbmUKK2luIFJGQyAyODE5LiBUaGlzIHN0YXRpc3RpYyBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgcmVjZWl2ZWQgdGhhdCB3ZXJlCitiZXR3ZWVuIDEwMjQgYW5kIDE1MTggb2N0ZXRzIGluIGxlbmd0aCBpbmNsdXNpdmUuCisKKyJyeF9ndGVfMTUxOV9ieXRlcyIgaXMgYSBzdGF0aXN0aWMgZGVmaW5lZCBzcGVjaWZpYyB0byB0aGUgYmVoYXZpb3Igb2YgdGhlCitBbHRlcmEgVFNFLiBUaGlzIHN0YXRpc3RpY3MgY291bnRzIHRoZSBudW1iZXIgb2YgcmVjZWl2ZWQgZ29vZCBhbmQgZXJyb3JlZAorZnJhbWVzIGJldHdlZW4gdGhlIGxlbmd0aCBvZiAxNTE5IGFuZCB0aGUgbWF4aW11bSBmcmFtZSBsZW5ndGggY29uZmlndXJlZAoraW4gdGhlIGZybV9sZW5ndGggcmVnaXN0ZXIuIFNlZSB0aGUgQWx0ZXJhIFRTRSBVc2VyIEd1aWRlIGZvciBNb3JlIGRldGFpbHMuCisKKyJyeF9qYWJiZXJzIiBpcyBlcXVpdmFsZW50IHRvIGV0aGVyU3RhdHNKYWJiZXJzIGRlZmluZWQgaW4gUkZDIDI4MTkuIFRoaXMKK3N0YXRpc3RpYyBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgcmVjZWl2ZWQgdGhhdCB3ZXJlIGxvbmdlciB0aGFuIDE1MTgKK29jdGV0cywgYW5kIGhhZCBlaXRoZXIgYSBiYWQgQ1JDIHdpdGggYW4gaW50ZWdyYWwgbnVtYmVyIG9mIG9jdGV0cyAoQ1JDIEVycm9yKQorb3IgYSBiYWQgQ1JDIHdpdGggYSBub24taW50ZWdyYWwgbnVtYmVyIG9mIG9jdGV0cyAoQWxpZ25tZW50IEVycm9yKS4KKworInJ4X3J1bnRzIiBpcyBlcXVpdmFsZW50IHRvIGV0aGVyU3RhdHNGcmFnbWVudHMgZGVmaW5lZCBpbiBSRkMgMjgxOS4gVGhpcworc3RhdGlzdGljIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgcGFja2V0cyByZWNlaXZlZCB0aGF0IHdlcmUgbGVzcyB0aGFuIDY0IG9jdGV0cworaW4gbGVuZ3RoIGFuZCBoYWQgZWl0aGVyIGEgYmFkIENSQyB3aXRoIGFuIGludGVncmFsIG51bWJlciBvZiBvY3RldHMgKENSQworZXJyb3IpIG9yIGEgYmFkIENSQyB3aXRoIGEgbm9uLWludGVncmFsIG51bWJlciBvZiBvY3RldHMgKEFsaWdubWVudCBFcnJvcikuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYXJjbmV0LWhhcmR3YXJlLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9hcmNuZXQtaGFyZHdhcmUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczMWRlNDEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYXJjbmV0LWhhcmR3YXJlLnR4dApAQCAtMCwwICsxLDMxMzMgQEAKKyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisxKSBUaGlzIGZpbGUgaXMgYSBzdXBwbGVtZW50IHRvIGFyY25ldC50eHQuICBQbGVhc2UgcmVhZCB0aGF0IGZvciBnZW5lcmFsCisgICBkcml2ZXIgY29uZmlndXJhdGlvbiBoZWxwLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzIpIFRoaXMgZmlsZSBpcyBubyBsb25nZXIgTGludXgtc3BlY2lmaWMuICBJdCBzaG91bGQgcHJvYmFibHkgYmUgbW92ZWQgb3V0IG9mCisgICB0aGUga2VybmVsIHNvdXJjZXMuICBJZGVhcz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JlY2F1c2Ugc28gbWFueSBwZW9wbGUgKG15c2VsZiBpbmNsdWRlZCkgc2VlbSB0byBoYXZlIG9idGFpbmVkIEFSQ25ldCBjYXJkcword2l0aG91dCBtYW51YWxzLCB0aGlzIGZpbGUgY29udGFpbnMgYSBxdWljayBpbnRyb2R1Y3Rpb24gdG8gQVJDbmV0IGhhcmR3YXJlLAorc29tZSBjYWJsaW5nIHRpcHMsIGFuZCBhIGxpc3Rpbmcgb2YgYWxsIGp1bXBlciBzZXR0aW5ncyBJIGNhbiBmaW5kLiBQbGVhc2UKK2UtbWFpbCBhcGVud2FyckB3b3JsZHZpc2lvbnMuY2Egd2l0aCBhbnkgc2V0dGluZ3MgZm9yIHlvdXIgcGFydGljdWxhciBjYXJkLAorb3IgYW55IG90aGVyIGluZm9ybWF0aW9uIHlvdSBoYXZlIQorCisKK0lOVFJPRFVDVElPTiBUTyBBUkNORVQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQVJDbmV0IGlzIGEgbmV0d29yayB0eXBlIHdoaWNoIHdvcmtzIGluIGEgd2F5IHNpbWlsYXIgdG8gcG9wdWxhciBFdGhlcm5ldAorbmV0d29ya3MgYnV0IHdoaWNoIGlzIGFsc28gZGlmZmVyZW50IGluIHNvbWUgdmVyeSBpbXBvcnRhbnQgd2F5cy4KKworRmlyc3Qgb2YgYWxsLCB5b3UgY2FuIGdldCBBUkNuZXQgY2FyZHMgaW4gYXQgbGVhc3QgdHdvIHNwZWVkczogMi41IE1icHMKKyhzbG93ZXIgdGhhbiBFdGhlcm5ldCkgYW5kIDEwMCBNYnBzIChmYXN0ZXIgdGhhbiBub3JtYWwgRXRoZXJuZXQpLiAgSW4gZmFjdCwKK3RoZXJlIGFyZSBvdGhlcnMgYXMgd2VsbCwgYnV0IHRoZXNlIGFyZSBsZXNzIGNvbW1vbi4gIFRoZSBkaWZmZXJlbnQgaGFyZHdhcmUKK3R5cGVzLCBhcyBmYXIgYXMgSSdtIGF3YXJlLCBhcmUgbm90IGNvbXBhdGlibGUgYW5kIHNvIHlvdSBjYW5ub3Qgd2lyZSBhCisxMDAgTWJwcyBjYXJkIHRvIGEgMi41IE1icHMgY2FyZCwgYW5kIHNvIG9uLiAgRnJvbSB3aGF0IEkgaGVhciwgbXkgZHJpdmVyIGRvZXMKK3dvcmsgd2l0aCAxMDAgTWJwcyBjYXJkcywgYnV0IEkgaGF2ZW4ndCBiZWVuIGFibGUgdG8gdmVyaWZ5IHRoaXMgbXlzZWxmLAorc2luY2UgSSBvbmx5IGhhdmUgdGhlIDIuNSBNYnBzIHZhcmlldHkuICBJdCBpcyBwcm9iYWJseSBub3QgZ29pbmcgdG8gc2F0dXJhdGUKK3lvdXIgMTAwIE1icHMgY2FyZC4gIFN0b3AgY29tcGxhaW5pbmcuIDopCisKK1lvdSBhbHNvIGNhbm5vdCBjb25uZWN0IGFuIEFSQ25ldCBjYXJkIHRvIGFueSBraW5kIG9mIEV0aGVybmV0IGNhcmQgYW5kCitleHBlY3QgaXQgdG8gd29yay4gIAorCitUaGVyZSBhcmUgdHdvICJ0eXBlcyIgb2YgQVJDbmV0IC0gU1RBUiB0b3BvbG9neSBhbmQgQlVTIHRvcG9sb2d5LiAgVGhpcworcmVmZXJzIHRvIGhvdyB0aGUgY2FyZHMgYXJlIG1lYW50IHRvIGJlIHdpcmVkIHRvZ2V0aGVyLiAgQWNjb3JkaW5nIHRvIG1vc3QKK2F2YWlsYWJsZSBkb2N1bWVudGF0aW9uLCB5b3UgY2FuIG9ubHkgY29ubmVjdCBTVEFSIGNhcmRzIHRvIFNUQVIgY2FyZHMgYW5kCitCVVMgY2FyZHMgdG8gQlVTIGNhcmRzLiAgVGhhdCBtYWtlcyBzZW5zZSwgcmlnaHQ/ICBXZWxsLCBpdCdzIG5vdCBxdWl0ZQordHJ1ZTsgc2VlIGJlbG93IHVuZGVyICJDYWJsaW5nLiIKKworT25jZSB5b3UgZ2V0IHBhc3QgdGhlc2UgbGl0dGxlIHN0dW1ibGluZyBibG9ja3MsIEFSQ25ldCBpcyBhY3R1YWxseSBxdWl0ZSBhCit3ZWxsLWRlc2lnbmVkIHN0YW5kYXJkLiAgSXQgdXNlcyBzb21ldGhpbmcgY2FsbGVkICJtb2RpZmllZCB0b2tlbiBwYXNzaW5nIgord2hpY2ggbWFrZXMgaXQgY29tcGxldGVseSBpbmNvbXBhdGlibGUgd2l0aCBzby1jYWxsZWQgIlRva2VuIFJpbmciIGNhcmRzLAorYnV0IHdoaWNoIG1ha2VzIHRyYW5zZmVycyBtdWNoIG1vcmUgcmVsaWFibGUgdGhhbiBFdGhlcm5ldCBkb2VzLiAgSW4gZmFjdCwKK0FSQ25ldCB3aWxsIGd1YXJhbnRlZSB0aGF0IGEgcGFja2V0IGFycml2ZXMgc2FmZWx5IGF0IHRoZSBkZXN0aW5hdGlvbiwgYW5kCitldmVuIGlmIGl0IGNhbid0IHBvc3NpYmx5IGJlIGRlbGl2ZXJlZCBwcm9wZXJseSAoaWUuIGJlY2F1c2Ugb2YgYSBjYWJsZQorYnJlYWssIG9yIGJlY2F1c2UgdGhlIGRlc3RpbmF0aW9uIGNvbXB1dGVyIGRvZXMgbm90IGV4aXN0KSBpdCB3aWxsIGF0IGxlYXN0Cit0ZWxsIHRoZSBzZW5kZXIgYWJvdXQgaXQuCisKK0JlY2F1c2Ugb2YgdGhlIGNhcmVmdWxseSBkZWZpbmVkIGFjdGlvbiBvZiB0aGUgInRva2VuIiwgaXQgd2lsbCBhbHdheXMgbWFrZQorYSBwYXNzIGFyb3VuZCB0aGUgInJpbmciIHdpdGhpbiBhIG1heGltdW0gbGVuZ3RoIG9mIHRpbWUuICBUaGlzIG1ha2VzIGl0Cit1c2VmdWwgZm9yIHJlYWx0aW1lIG5ldHdvcmtzLgorCitJbiBhZGRpdGlvbiwgYWxsIGtub3duIEFSQ25ldCBjYXJkcyBoYXZlIGFuIChhbG1vc3QpIGlkZW50aWNhbCBwcm9ncmFtbWluZworaW50ZXJmYWNlLiAgVGhpcyBtZWFucyB0aGF0IHdpdGggb25lIEFSQ25ldCBkcml2ZXIgeW91IGNhbiBzdXBwb3J0IGFueQorY2FyZCwgd2hlcmVhcyB3aXRoIEV0aGVybmV0IGVhY2ggbWFudWZhY3R1cmVyIHVzZXMgd2hhdCBpcyBzb21ldGltZXMgYQorY29tcGxldGVseSBkaWZmZXJlbnQgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlLCBsZWFkaW5nIHRvIGEgbG90IG9mIGRpZmZlcmVudCwKK3NvbWV0aW1lcyB2ZXJ5IHNpbWlsYXIsIEV0aGVybmV0IGRyaXZlcnMuICBPZiBjb3Vyc2UsIGFsd2F5cyB1c2luZyB0aGUgc2FtZQorcHJvZ3JhbW1pbmcgaW50ZXJmYWNlIGFsc28gbWVhbnMgdGhhdCB3aGVuIGhpZ2gtcGVyZm9ybWFuY2UgaGFyZHdhcmUKK2ZhY2lsaXRpZXMgbGlrZSBQQ0kgYnVzIG1hc3RlcmluZyBETUEgYXBwZWFyLCBpdCdzIGhhcmQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YKK3RoZW0uICBMZXQncyBub3QgZ28gaW50byB0aGF0LgorCitPbmUgdGhpbmcgdGhhdCBtYWtlcyBBUkNuZXQgY2FyZHMgZGlmZmljdWx0IHRvIHByb2dyYW0gZm9yLCBob3dldmVyLCBpcyB0aGUKK2xpbWl0IG9uIHRoZWlyIHBhY2tldCBzaXplczsgc3RhbmRhcmQgQVJDbmV0IGNhbiBvbmx5IHNlbmQgcGFja2V0cyB0aGF0IGFyZQordXAgdG8gNTA4IGJ5dGVzIGluIGxlbmd0aC4gIFRoaXMgaXMgc21hbGxlciB0aGFuIHRoZSBJbnRlcm5ldCAiYmFyZSBtaW5pbXVtIgorb2YgNTc2IGJ5dGVzLCBsZXQgYWxvbmUgdGhlIEV0aGVybmV0IE1UVSBvZiAxNTAwLiAgVG8gY29tcGVuc2F0ZSwgYW4gZXh0cmEKK2xldmVsIG9mIGVuY2Fwc3VsYXRpb24gaXMgZGVmaW5lZCBieSBSRkMxMjAxLCB3aGljaCBJIGNhbGwgInBhY2tldAorc3BsaXR0aW5nLCIgdGhhdCBhbGxvd3MgInZpcnR1YWwgcGFja2V0cyIgdG8gZ3JvdyBhcyBsYXJnZSBhcyA2NEsgZWFjaCwKK2FsdGhvdWdoIHRoZXkgYXJlIGdlbmVyYWxseSBrZXB0IGRvd24gdG8gdGhlIEV0aGVybmV0LXN0eWxlIDE1MDAgYnl0ZXMuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBhZHZhbnRhZ2VzIGFuZCBkaXNhZHZhbnRhZ2VzIChtb3N0bHkgdGhlCithZHZhbnRhZ2VzKSBvZiBBUkNuZXQgbmV0d29ya3MsIHlvdSBtaWdodCB0cnkgdGhlICJBUkNuZXQgVHJhZGUgQXNzb2NpYXRpb24iCitXV1cgcGFnZToKKwlodHRwOi8vd3d3LmFyY25ldC5jb20KKworCitDQUJMSU5HIEFSQ05FVCBORVRXT1JLUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBzZWN0aW9uIHdhcyByZXdyaXR0ZW4gYnkgCisgICAgICAgIFZvanRlY2ggUGF2bGlrICAgICA8dm9qdGVjaEBzdXNlLmN6PgordXNpbmcgaW5mb3JtYXRpb24gZnJvbSBzZXZlcmFsIHBlb3BsZSwgaW5jbHVkaW5nOgorICAgICAgICBBdmVyeSBQZW5ucmF1biAgICAgPGFwZW53YXJyQHdvcmxkdmlzaW9ucy5jYT4KKyAJU3RlcGhlbiBBLiBXb29kICAgIDxzYXdAaGFsbGMxLmNlYmFmLmdvdj4KKyAJSm9obiBQYXVsIE1vcnJpc29uIDxqbW9ycmlzb0Bib2dvbWlwcy5lZS51YmMuY2E+CisgCUpvYWNoaW0gS29lbmlnICAgICA8am9qb0ByZXBhcy5kZT4KK2FuZCBBdmVyeSB0b3VjaGVkIGl0IHVwIGEgYml0LCBhdCBWb2p0ZWNoJ3MgcmVxdWVzdC4KKworQVJDbmV0ICh0aGUgY2xhc3NpYyAyLjUgTWJwcyB2ZXJzaW9uKSBjYW4gYmUgY29ubmVjdGVkIGJ5IHR3byBkaWZmZXJlbnQKK3R5cGVzIG9mIGNhYmxpbmc6IGNvYXggYW5kIHR3aXN0ZWQgcGFpci4gIFRoZSBvdGhlciBBUkNuZXQtdHlwZSBuZXR3b3JrcworKDEwMCBNYnBzIFRDTlMgYW5kIDMyMCBrYnBzIC0gMzIgTWJwcyBBUkNuZXQgUGx1cykgdXNlIGRpZmZlcmVudCB0eXBlcyBvZgorY2FibGluZyAoVHlwZTEsIEZpYmVyLCBDMSwgQzQsIEM1KS4KKworRm9yIGEgY29heCBuZXR3b3JrLCB5b3UgInNob3VsZCIgdXNlIDkzIE9obSBSRy02MiBjYWJsZS4gIEJ1dCBvdGhlciBjYWJsZXMKK2Fsc28gd29yayBmaW5lLCBiZWNhdXNlIEFSQ25ldCBpcyBhIHZlcnkgc3RhYmxlIG5ldHdvcmsuIEkgcGVyc29uYWxseSB1c2UgNzUKK09obSBUViBhbnRlbm5hIGNhYmxlLgorCitDYXJkcyBmb3IgY29heCBjYWJsaW5nIGFyZSBzaGlwcGVkIGluIHR3byBkaWZmZXJlbnQgdmFyaWFudHM6IGZvciBCVVMgYW5kCitTVEFSIG5ldHdvcmsgdG9wb2xvZ2llcy4gIFRoZXkgYXJlIG1vc3RseSB0aGUgc2FtZS4gIFRoZSBvbmx5IGRpZmZlcmVuY2UKK2xpZXMgaW4gdGhlIGh5YnJpZCBjaGlwIGluc3RhbGxlZC4gIEJVUyBjYXJkcyB1c2UgaGlnaCBpbXBlZGFuY2Ugb3V0cHV0LAord2hpbGUgU1RBUiB1c2UgbG93IGltcGVkYW5jZS4gIExvdyBpbXBlZGFuY2UgY2FyZCAoU1RBUikgaXMgZWxlY3RyaWNhbGx5CitlcXVhbCB0byBhIGhpZ2ggaW1wZWRhbmNlIG9uZSB3aXRoIGEgdGVybWluYXRvciBpbnN0YWxsZWQuCisKK1VzdWFsbHksIHRoZSBBUkNuZXQgbmV0d29ya3MgYXJlIGJ1aWx0IHVwIGZyb20gU1RBUiBjYXJkcyBhbmQgaHVicy4gIFRoZXJlCithcmUgdHdvIHR5cGVzIG9mIGh1YnMgLSBhY3RpdmUgYW5kIHBhc3NpdmUuICBQYXNzaXZlIGh1YnMgYXJlIHNtYWxsIGJveGVzCit3aXRoIGZvdXIgQk5DIGNvbm5lY3RvcnMgY29udGFpbmluZyBmb3VyIDQ3IE9obSByZXNpc3RvcnM6CisKKyAgIHwgICAgICAgICB8IHdpcmVzCisgICBSICAgICAgICAgKyBqdW5jdGlvbgorLVItKy1SLSAgICAgIFIgNDcgT2htIHJlc2lzdG9ycworICAgUgorICAgfAorCitUaGUgc2hpZWxkaW5nIGlzIGNvbm5lY3RlZCB0b2dldGhlci4gIEFjdGl2ZSBodWJzIGFyZSBtdWNoIG1vcmUgY29tcGxpY2F0ZWQ7Cit0aGV5IGFyZSBwb3dlcmVkIGFuZCBjb250YWluIGVsZWN0cm9uaWNzIHRvIGFtcGxpZnkgdGhlIHNpZ25hbCBhbmQgc2VuZCBpdAordG8gb3RoZXIgc2VnbWVudHMgb2YgdGhlIG5ldC4gIFRoZXkgdXN1YWxseSBoYXZlIGVpZ2h0IGNvbm5lY3RvcnMuICBBY3RpdmUKK2h1YnMgY29tZSBpbiB0d28gdmFyaWFudHMgLSBkdW1iIGFuZCBzbWFydC4gIFRoZSBkdW1iIHZhcmlhbnQganVzdAorYW1wbGlmaWVzLCBidXQgdGhlIHNtYXJ0IG9uZSBkZWNvZGVzIHRvIGRpZ2l0YWwgYW5kIGVuY29kZXMgYmFjayBhbGwgcGFja2V0cworY29taW5nIHRocm91Z2guICBUaGlzIGlzIG11Y2ggYmV0dGVyIGlmIHlvdSBoYXZlIHNldmVyYWwgaHVicyBpbiB0aGUgbmV0LAorc2luY2UgbWFueSBkdW1iIGFjdGl2ZSBodWJzIG1heSB3b3JzZW4gdGhlIHNpZ25hbCBxdWFsaXR5LgorCitBbmQgbm93IHRvIHRoZSBjYWJsaW5nLiAgV2hhdCB5b3UgY2FuIGNvbm5lY3QgdG9nZXRoZXI6CisKKzEuIEEgY2FyZCB0byBhIGNhcmQuICBUaGlzIGlzIHRoZSBzaW1wbGVzdCB3YXkgb2YgY3JlYXRpbmcgYSAyLWNvbXB1dGVyCisgICBuZXR3b3JrLgorCisyLiBBIGNhcmQgdG8gYSBwYXNzaXZlIGh1Yi4gIFJlbWVtYmVyIHRoYXQgYWxsIHVudXNlZCBjb25uZWN0b3JzIG9uIHRoZSBodWIKKyAgIG11c3QgYmUgcHJvcGVybHkgdGVybWluYXRlZCB3aXRoIDkzIE9obSAob3Igc29tZXRoaW5nIGVsc2UgaWYgeW91IGRvbid0CisgICBoYXZlIHRoZSByaWdodCBvbmVzKSB0ZXJtaW5hdG9ycy4KKyAgIAkoQXZlcnkncyBub3RlOiBvb3BzLCBJIGRpZG4ndCBrbm93IHRoYXQuICBNaW5lIChUViBjYWJsZSkgd29ya3MKKwlhbnl3YXksIHRob3VnaC4pCisKKzMuIEEgY2FyZCB0byBhbiBhY3RpdmUgaHViLiAgSGVyZSBpcyBubyBuZWVkIHRvIHRlcm1pbmF0ZSB0aGUgdW51c2VkCisgICBjb25uZWN0b3JzIGV4Y2VwdCBzb21lIGtpbmQgb2YgYWVzdGhldGljIGZlZWxpbmcuICBCdXQsIHRoZXJlIG1heSBub3QgYmUKKyAgIG1vcmUgdGhhbiBlbGV2ZW4gYWN0aXZlIGh1YnMgYmV0d2VlbiBhbnkgdHdvIGNvbXB1dGVycy4gIFRoYXQgb2YgY291cnNlCisgICBkb2Vzbid0IGxpbWl0IHRoZSBudW1iZXIgb2YgYWN0aXZlIGh1YnMgb24gdGhlIG5ldHdvcmsuCisgICAKKzQuIEFuIGFjdGl2ZSBodWIgdG8gYW5vdGhlci4KKworNS4gQW4gYWN0aXZlIGh1YiB0byBwYXNzaXZlIGh1Yi4KKworUmVtZW1iZXIgdGhhdCB5b3UgY2Fubm90IGNvbm5lY3QgdHdvIHBhc3NpdmUgaHVicyB0b2dldGhlci4gIFRoZSBwb3dlciBsb3NzCitpbXBsaWVkIGJ5IHN1Y2ggYSBjb25uZWN0aW9uIGlzIHRvbyBoaWdoIGZvciB0aGUgbmV0IHRvIG9wZXJhdGUgcmVsaWFibHkuCisKK0FuIGV4YW1wbGUgb2YgYSB0eXBpY2FsIEFSQ25ldCBuZXR3b3JrOgorCisgICAgICAgICAgIFIgICAgICAgICAgICAgICAgICAgICBTIC0gU1RBUiB0eXBlIGNhcmQgICAgICAgICAgICAgIAorICAgIFMtLS0tLS1ILS0tLS0tLS1BLS0tLS0tLVMgICAgUiAtIFRlcm1pbmF0b3IKKyAgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgICAgIEggLSBIdWIgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICAgICBBIC0gQWN0aXZlIGh1YiAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICB8ICAgUy0tLS1ILS0tLVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgUyAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitUaGUgQlVTIHRvcG9sb2d5IGlzIHZlcnkgc2ltaWxhciB0byB0aGUgb25lIHVzZWQgYnkgRXRoZXJuZXQuICBUaGUgb25seQorZGlmZmVyZW5jZSBpcyBpbiBjYWJsZSBhbmQgdGVybWluYXRvcnM6IHRoZXkgc2hvdWxkIGJlIDkzIE9obS4gIEV0aGVybmV0Cit1c2VzIDUwIE9obSBpbXBlZGFuY2UuIFlvdSB1c2UgVCBjb25uZWN0b3JzIHRvIHB1dCB0aGUgY29tcHV0ZXJzIG9uIGEgc2luZ2xlCitsaW5lIG9mIGNhYmxlLCB0aGUgYnVzLiBZb3UgaGF2ZSB0byBwdXQgdGVybWluYXRvcnMgYXQgYm90aCBlbmRzIG9mIHRoZQorY2FibGUuIEEgdHlwaWNhbCBCVVMgQVJDbmV0IG5ldHdvcmsgbG9va3MgbGlrZToKKworICAgIFJULS0tLVQtLS0tLS1ULS0tLS0tVC0tLS0tLVQtLS0tLS1UUgorICAgICBCICAgIEIgICAgICBCICAgICAgQiAgICAgIEIgICAgICBCCisKKyAgQiAtIEJVUyB0eXBlIGNhcmQKKyAgUiAtIFRlcm1pbmF0b3IKKyAgVCAtIFQgY29ubmVjdG9yCisKK0J1dCB0aGF0IGlzIG5vdCBhbGwhIFRoZSB0d28gdHlwZXMgY2FuIGJlIGNvbm5lY3RlZCB0b2dldGhlci4gIEFjY29yZGluZyB0bwordGhlIG9mZmljaWFsIGRvY3VtZW50YXRpb24gdGhlIG9ubHkgd2F5IG9mIGNvbm5lY3RpbmcgdGhlbSBpcyB1c2luZyBhbiBhY3RpdmUKK2h1YjoKKworICAgICAgICAgQS0tLS0tLVQtLS0tLS1ULS0tLS0tVFIKKyAgICAgICAgIHwgICAgICBCICAgICAgQiAgICAgIEIKKyAgICAgUy0tLUgtLS1TCisgICAgICAgICB8CisgICAgICAgICBTCisKK1RoZSBvZmZpY2lhbCBkb2NzIGFsc28gc3RhdGUgdGhhdCB5b3UgY2FuIHVzZSBTVEFSIGNhcmRzIGF0IHRoZSBlbmRzIG9mCitCVVMgbmV0d29yayBpbiBwbGFjZSBvZiBhIEJVUyBjYXJkIGFuZCBhIHRlcm1pbmF0b3I6CisKKyAgICAgUy0tLS0tLVQtLS0tLS1ULS0tLS0tUworICAgICAgICAgICAgQiAgICAgIEIKKworQnV0LCBhY2NvcmRpbmcgdG8gbXkgb3duIGV4cGVyaW1lbnRzLCB5b3UgY2FuIHNpbXBseSBoYW5nIGEgQlVTIHR5cGUgY2FyZAorYW55d2hlcmUgaW4gbWlkZGxlIG9mIGEgY2FibGUgaW4gYSBTVEFSIHRvcG9sb2d5IG5ldHdvcmsuICBBbmQgbW9yZSAtIHlvdQorY2FuIHVzZSB0aGUgYnVzIGNhcmQgaW4gcGxhY2Ugb2YgYW55IHN0YXIgY2FyZCBpZiB5b3UgdXNlIGEgdGVybWluYXRvci4gVGhlbgoreW91IGNhbiBidWlsZCB2ZXJ5IGNvbXBsaWNhdGVkIG5ldHdvcmtzIGZ1bGZpbGxpbmcgYWxsIHlvdXIgbmVlZHMhICBBbgorZXhhbXBsZToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgIFJULS0tLS0tVC0tLS0tLS1ULS0tLS0tSC0tLS0tLVMKKyAgICAgICAgICAgIEIgICAgICBCICAgICAgIEIgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICBSCisgICAgUy0tLS0tLUEtLS0tLS1ULS0tLS0tLVQtLS0tLS0tQS0tLS0tLS1ILS0tLS0tVFIgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICB8ICAgICAgQiAgICAgICBCICAgICAgIHwgICAgICAgfCAgICAgIEIgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgIHwgICBTICAgICAgICAgICAgICAgICBCVCAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgIHwgICB8ICAgICAgICAgICAgICAgICAgfCAgUy0tLS1BLS0tLS1TCisgICAgUy0tLS0tLUgtLS1BLS0tLVMgICAgICAgICAgICAgfCAgICAgICB8IAorICAgICAgICAgICB8ICAgfCAgICAgIFMtLS0tLS1ULS0tLUgtLS1TICAgfAorICAgICAgICAgICBTICAgUyAgICAgICAgICAgICBCICAgIFIgICAgICAgUyAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK0EgYmFzaWNhbGx5IGRpZmZlcmVudCBjYWJsaW5nIHNjaGVtZSBpcyB1c2VkIHdpdGggVHdpc3RlZCBQYWlyIGNhYmxpbmcuIEVhY2gKK29mIHRoZSBUUCBjYXJkcyBoYXMgdHdvIFJKIChwaG9uZS1jb3JkIHN0eWxlKSBjb25uZWN0b3JzLiAgVGhlIGNhcmRzIGFyZQordGhlbiBkYWlzeS1jaGFpbmVkIHRvZ2V0aGVyIHVzaW5nIGEgY2FibGUgY29ubmVjdGluZyBldmVyeSB0d28gbmVpZ2hib3JpbmcKK2NhcmRzLiAgVGhlIGVuZHMgYXJlIHRlcm1pbmF0ZWQgd2l0aCBSSiA5MyBPaG0gdGVybWluYXRvcnMgd2hpY2ggcGx1ZyBpbnRvCit0aGUgZW1wdHkgY29ubmVjdG9ycyBvZiBjYXJkcyBvbiB0aGUgZW5kcyBvZiB0aGUgY2hhaW4uICBBbiBleGFtcGxlOgorCisgICAgICAgICAgX19fX19fX19fX18gICBfX19fX19fX19fXworICAgICAgX1JffF8gICAgICAgICBffF98XyAgICAgICAgIF98X1JfICAKKyAgICAgfCAgICAgfCAgICAgICB8ICAgICB8ICAgICAgIHwgICAgIHwgICAgICAKKyAgICAgfENhcmQgfCAgICAgICB8Q2FyZCB8ICAgICAgIHxDYXJkIHwgICAgIAorICAgICB8X19fX198ICAgICAgIHxfX19fX3wgICAgICAgfF9fX19ffCAgICAgICAgICAKKworCitUaGVyZSBhcmUgYWxzbyBodWJzIGZvciB0aGUgVFAgdG9wb2xvZ3kuICBUaGVyZSBpcyBub3RoaW5nIGRpZmZpY3VsdAoraW52b2x2ZWQgaW4gdXNpbmcgdGhlbTsgeW91IGp1c3QgY29ubmVjdCBhIFRQIGNoYWluIHRvIGEgaHViIG9uIGFueSBlbmQgb3IKK2V2ZW4gYXQgYm90aC4gIFRoaXMgd2F5IHlvdSBjYW4gY3JlYXRlIGFsbW9zdCBhbnkgbmV0d29yayBjb25maWd1cmF0aW9uLiAKK1RoZSBtYXhpbXVtIG9mIDExIGh1YnMgYmV0d2VlbiBhbnkgdHdvIGNvbXB1dGVycyBvbiB0aGUgbmV0IGFwcGxpZXMgaGVyZSBhcword2VsbC4gIEFuIGV4YW1wbGU6CisKKyAgICBSUC0tLS0tLS1QLS0tLS0tLS1QLS0tLS0tLS1ILS0tLS1QLS0tLS0tUC0tLS0tUFIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICBSUC0tLS0tSC0tLS0tLS0tUC0tLS0tLS0tSC0tLS0tUC0tLS0tLVBSCisgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgIFBSICAgICAgICAgICAgICAgIFBSCisKKyAgICBSIC0gUkogVGVybWluYXRvcgorICAgIFAgLSBUUCBDYXJkCisgICAgSCAtIFRQIEh1YgorCitMaWtlIGFueSBuZXR3b3JrLCBBUkNuZXQgaGFzIGEgbGltaXRlZCBjYWJsZSBsZW5ndGguICBUaGVzZSBhcmUgdGhlIG1heGltdW0KK2NhYmxlIGxlbmd0aHMgYmV0d2VlbiB0d28gYWN0aXZlIGVuZHMgKGFuIGFjdGl2ZSBlbmQgYmVpbmcgYW4gYWN0aXZlIGh1YiBvcgorYSBTVEFSIGNhcmQpLgorCisJCVJHLTYyICAgICAgIDkzIE9obSB1cCB0byA2NTAgbQorCQlSRy01OS9VICAgICA3NSBPaG0gdXAgdG8gNDU3IG0KKwkJUkctMTEvVSAgICAgNzUgT2htIHVwIHRvIDUzMyBtCisJCUlCTSBUeXBlIDEgMTUwIE9obSB1cCB0byAyMDAgbQorCQlJQk0gVHlwZSAzIDEwMCBPaG0gdXAgdG8gMTAwIG0KKworVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFsbCBjYWJsZXMgY29ubmVjdGVkIHRvIGEgcGFzc2l2ZSBodWIgaXMgbGltaXRlZCB0byA2NQorbWV0ZXJzIGZvciBSRy02MiBjYWJsaW5nOyBsZXNzIGZvciBvdGhlcnMuICBZb3UgY2FuIHNlZSB0aGF0IHVzaW5nIHBhc3NpdmUKK2h1YnMgaW4gYSBsYXJnZSBuZXR3b3JrIGlzIGEgYmFkIGlkZWEuIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIHNpbmdsZSAiQlVTCitUcnVuayIgaXMgYWJvdXQgMzAwIG1ldGVycyBmb3IgUkctNjIuIFRoZSBtYXhpbXVtIGRpc3RhbmNlIGJldHdlZW4gdGhlIHR3bworbW9zdCBkaXN0YW50IHBvaW50cyBvZiB0aGUgbmV0IGlzIGxpbWl0ZWQgdG8gMzAwMCBtZXRlcnMuIFRoZSBtYXhpbXVtIGxlbmd0aAorb2YgYSBUUCBjYWJsZSBiZXR3ZWVuIHR3byBjYXJkcy9odWJzIGlzIDY1MCBtZXRlcnMuCisKKworU0VUVElORyBUSEUgSlVNUEVSUworLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbGwgQVJDbmV0IGNhcmRzIHNob3VsZCBoYXZlIGEgdG90YWwgb2YgZm91ciBvciBmaXZlIGRpZmZlcmVudCBzZXR0aW5nczoKKworICAtIHRoZSBJL08gYWRkcmVzczogIHRoaXMgaXMgdGhlICJwb3J0IiB5b3VyIEFSQ25ldCBjYXJkIGlzIG9uLiAgUHJvYmVkCisgICAgdmFsdWVzIGluIHRoZSBMaW51eCBBUkNuZXQgZHJpdmVyIGFyZSBvbmx5IGZyb20gMHgyMDAgdGhyb3VnaCAweDNGMC4gKElmCisgICAgeW91ciBjYXJkIGhhcyBhZGRpdGlvbmFsIG9uZXMsIHdoaWNoIGlzIHBvc3NpYmxlLCBwbGVhc2UgdGVsbCBtZS4pIFRoaXMKKyAgICBzaG91bGQgbm90IGJlIHRoZSBzYW1lIGFzIGFueSBvdGhlciBkZXZpY2Ugb24geW91ciBzeXN0ZW0uICBBY2NvcmRpbmcgdG8KKyAgICBhIGRvYyBJIGdvdCBmcm9tIE5vdmVsbCwgTVMgV2luZG93cyBwcmVmZXJzIHZhbHVlcyBvZiAweDMwMCBvciBtb3JlLAorICAgIGVhdGluZyBuZXQgY29ubmVjdGlvbnMgb24gbXkgc3lzdGVtIChhdCBsZWFzdCkgb3RoZXJ3aXNlLiAgTXkgZ3Vlc3MgaXMKKyAgICB0aGlzIG1heSBiZSBiZWNhdXNlLCBpZiB5b3VyIGNhcmQgaXMgYXQgMHgyRTAsIHByb2JpbmcgZm9yIGEgc2VyaWFsIHBvcnQKKyAgICBhdCAweDJFOCB3aWxsIHJlc2V0IHRoZSBjYXJkIGFuZCBwcm9iYWJseSBtZXNzIHRoaW5ncyB1cCByb3lhbGx5LgorCS0gQXZlcnkncyBmYXZvdXJpdGU6IDB4MzAwLgorCisgIC0gdGhlIElSUTogb24gIDgtYml0IGNhcmRzLCBpdCBtaWdodCBiZSAyICg5KSwgMywgNCwgNSwgb3IgNy4KKyAgICAgICAgICAgICBvbiAxNi1iaXQgY2FyZHMsIGl0IG1pZ2h0IGJlIDIgKDkpLCAzLCA0LCA1LCA3LCBvciAxMC0xNS4KKyAgICAgICAgICAgICAKKyAgICBNYWtlIHN1cmUgdGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBhbnkgb3RoZXIgY2FyZCBvbiB5b3VyIHN5c3RlbS4gIE5vdGUKKyAgICB0aGF0IElSUTIgaXMgdGhlIHNhbWUgYXMgSVJROSwgYXMgZmFyIGFzIExpbnV4IGlzIGNvbmNlcm5lZC4gIFlvdSBjYW4KKyAgICAiY2F0IC9wcm9jL2ludGVycnVwdHMiIGZvciBhIHNvbWV3aGF0IGNvbXBsZXRlIGxpc3Qgb2Ygd2hpY2ggb25lcyBhcmUgaW4KKyAgICB1c2UgYXQgYW55IGdpdmVuIHRpbWUuICBIZXJlIGlzIGEgbGlzdCBvZiBjb21tb24gdXNhZ2VzIGZyb20gVm9qdGVjaAorICAgIFBhdmxpayA8dm9qdGVjaEBzdXNlLmN6PjoKKyAgICAJKCJOb3Qgb24gYnVzIiBtZWFucyB0aGVyZSBpcyBubyB3YXkgZm9yIGEgY2FyZCB0byBnZW5lcmF0ZSB0aGlzCisJaW50ZXJydXB0KQorCUlSUSAgMCAtIFRpbWVyIDAgKE5vdCBvbiBidXMpCisJSVJRICAxIC0gS2V5Ym9hcmQgKE5vdCBvbiBidXMpCisJSVJRICAyIC0gSVJRIENvbnRyb2xsZXIgMiAoTm90IG9uIGJ1cywgbm9yIGRvZXMgaW50ZXJydXB0IHRoZSBDUFUpCisJSVJRICAzIC0gQ09NMgorCUlSUSAgNCAtIENPTTEKKwlJUlEgIDUgLSBGUkVFIChMUFQyIGlmIHlvdSBoYXZlIGl0OyBzb21ldGltZXMgQ09NMzsgbWF5YmUgUExJUCkKKwlJUlEgIDYgLSBGbG9wcHkgZGlzayBjb250cm9sbGVyCisJSVJRICA3IC0gRlJFRSAoTFBUMSBpZiB5b3UgZG9uJ3QgdXNlIHRoZSBwb2xsaW5nIGRyaXZlcjsgUExJUCkgCisJSVJRICA4IC0gUmVhbHRpbWUgQ2xvY2sgSW50ZXJydXB0IChOb3Qgb24gYnVzKQorCUlSUSAgOSAtIEZSRUUgKFZHQSB2ZXJ0aWNhbCBzeW5jIGludGVycnVwdCBpZiBlbmFibGVkKQorCUlSUSAxMCAtIEZSRUUKKwlJUlEgMTEgLSBGUkVFCisJSVJRIDEyIC0gRlJFRQorCUlSUSAxMyAtIE51bWVyaWMgQ29wcm9jZXNzb3IgKE5vdCBvbiBidXMpCisJSVJRIDE0IC0gRml4ZWQgRGlzayBDb250cm9sbGVyCisJSVJRIDE1IC0gRlJFRSAoRml4ZWQgRGlzayBDb250cm9sbGVyIDIgaWYgeW91IGhhdmUgaXQpIAorCQorCU5vdGU6IElSUSA5IGlzIHVzZWQgb24gc29tZSB2aWRlbyBjYXJkcyBmb3IgdGhlICJ2ZXJ0aWNhbCByZXRyYWNlIgorCWludGVycnVwdC4gIFRoaXMgaW50ZXJydXB0IHdvdWxkIGhhdmUgYmVlbiBoYW5keSBmb3IgdGhpbmdzIGxpa2UKKwl2aWRlbyBnYW1lcywgYXMgaXQgb2NjdXJzIGV4YWN0bHkgb25jZSBwZXIgc2NyZWVuIHJlZnJlc2gsIGJ1dAorCXVuZm9ydHVuYXRlbHkgSUJNIGNhbmNlbGxlZCB0aGlzIGZlYXR1cmUgc3RhcnRpbmcgd2l0aCB0aGUgb3JpZ2luYWwKKwlWR0EgYW5kIHRodXMgbWFueSBWR0EvU1ZHQSBjYXJkcyBkbyBub3Qgc3VwcG9ydCBpdC4gIEZvciB0aGlzCisJcmVhc29uLCBubyBtb2Rlcm4gc29mdHdhcmUgdXNlcyB0aGlzIGludGVycnVwdCBhbmQgaXQgY2FuIGFsbW9zdAorCWFsd2F5cyBiZSBzYWZlbHkgZGlzYWJsZWQsIGlmIHlvdXIgdmlkZW8gY2FyZCBzdXBwb3J0cyBpdCBhdCBhbGwuCisJCisJSWYgeW91ciBjYXJkIGZvciBzb21lIHJlYXNvbiBDQU5OT1QgZGlzYWJsZSB0aGlzIElSUSAodXN1YWxseSB0aGVyZQorCWlzIGEganVtcGVyKSwgb25lIHNvbHV0aW9uIHdvdWxkIGJlIHRvIGNsaXAgdGhlIHByaW50ZWQgY2lyY3VpdAorCWNvbnRhY3Qgb24gdGhlIGJvYXJkOiBpdCdzIHRoZSBmb3VydGggY29udGFjdCBmcm9tIHRoZSBsZWZ0IG9uIHRoZQorCWJhY2sgc2lkZS4gIEkgdGFrZSBubyByZXNwb25zaWJpbGl0eSBpZiB5b3UgdHJ5IHRoaXMuCisKKwktIEF2ZXJ5J3MgZmF2b3VyaXRlOiBJUlEyIChhY3R1YWxseSBJUlE5KS4gIFdhdGNoIHRoYXQgVkdBLCB0aG91Z2guCisKKyAgLSB0aGUgbWVtb3J5IGFkZHJlc3M6ICBVbmxpa2UgbW9zdCBjYXJkcywgQVJDbmV0cyB1c2UgInNoYXJlZCBtZW1vcnkiIGZvcgorICAgIGNvcHlpbmcgYnVmZmVycyBhcm91bmQuICBNYWtlIFNVUkUgaXQgZG9lc24ndCBjb25mbGljdCB3aXRoIGFueSBvdGhlcgorICAgIHVzZWQgbWVtb3J5IGluIHlvdXIgc3lzdGVtIQorCUEwMDAwCQktIFZHQSBncmFwaGljcyBtZW1vcnkgKG9rIGlmIHlvdSBkb24ndCBoYXZlIFZHQSkKKyAgICAgICAgQjAwMDAJCS0gTW9ub2Nocm9tZSB0ZXh0IG1vZGUKKyAgICAgICAgQzAwMDAJCVwgIE9uZSBvZiB0aGVzZSBpcyB5b3VyIFZHQSBCSU9TIC0gdXN1YWxseSBDMDAwMC4KKyAgICAgICAgRTAwMDAJCS8KKyAgICAgICAgRjAwMDAJCS0gU3lzdGVtIEJJT1MKKworICAgIEFueXRoaW5nIGxlc3MgdGhhbiAweEEwMDAwIGlzLCB3ZWxsLCBhIEJBRCBpZGVhIHNpbmNlIGl0IGlzbid0IGFib3ZlCisgICAgNjQway4KKwktIEF2ZXJ5J3MgZmF2b3VyaXRlOiAweEQwMDAwCisKKyAgLSB0aGUgc3RhdGlvbiBhZGRyZXNzOiAgRXZlcnkgQVJDbmV0IGNhcmQgaGFzIGl0cyBvd24gInVuaXF1ZSIgbmV0d29yaworICAgIGFkZHJlc3MgZnJvbSAwIHRvIDI1NS4gIFVubGlrZSBFdGhlcm5ldCwgeW91IGNhbiBzZXQgdGhpcyBhZGRyZXNzCisgICAgeW91cnNlbGYgd2l0aCBhIGp1bXBlciBvciBzd2l0Y2ggKG9yIG9uIHNvbWUgY2FyZHMsIHdpdGggc3BlY2lhbAorICAgIHNvZnR3YXJlKS4gIFNpbmNlIGl0J3Mgb25seSA4IGJpdHMsIHlvdSBjYW4gb25seSBoYXZlIDI1NCBBUkNuZXQgY2FyZHMKKyAgICBvbiBhIG5ldHdvcmsuICBET04nVCB1c2UgMCBvciAyNTUsIHNpbmNlIHRoZXNlIGFyZSByZXNlcnZlZCAoYWx0aG91Z2gKKyAgICBuZWF0IHN0dWZmIHdpbGwgcHJvYmFibHkgaGFwcGVuIGlmIHlvdSBETyB1c2UgdGhlbSkuICBCeSB0aGUgd2F5LCBpZiB5b3UKKyAgICBoYXZlbid0IGFscmVhZHkgZ3Vlc3NlZCwgZG9uJ3Qgc2V0IHRoaXMgdGhlIHNhbWUgYXMgYW55IG90aGVyIEFSQ25ldCBvbgorICAgIHlvdXIgbmV0d29yayEKKwktIEF2ZXJ5J3MgZmF2b3VyaXRlOiAgMyBhbmQgNC4gIE5vdCB0aGF0IGl0IG1hdHRlcnMuCisKKyAgLSBUaGVyZSBtYXkgYmUgRVRTMSBhbmQgRVRTMiBzZXR0aW5ncy4gIFRoZXNlIG1heSBvciBtYXkgbm90IG1ha2UgYQorICAgIGRpZmZlcmVuY2Ugb24geW91ciBjYXJkIChtYW55IG1hbnVhbHMgY2FsbCB0aGVtICJyZXNlcnZlZCIpLCBidXQgYXJlCisgICAgdXNlZCB0byBjaGFuZ2UgdGhlIGRlbGF5cyB1c2VkIHdoZW4gcG93ZXJpbmcgdXAgYSBjb21wdXRlciBvbiB0aGUKKyAgICBuZXR3b3JrLiAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSB3aGVuIHdpcmluZyBWRVJZIGxvbmcgcmFuZ2UgQVJDbmV0CisgICAgbmV0d29ya3MsIG9uIHRoZSBvcmRlciBvZiA0a20gb3Igc287IGluIGFueSBjYXNlLCB0aGUgb25seSByZWFsCisgICAgcmVxdWlyZW1lbnQgaGVyZSBpcyB0aGF0IGFsbCBjYXJkcyBvbiB0aGUgbmV0d29yayB3aXRoIEVUUzEgYW5kIEVUUzIKKyAgICBqdW1wZXJzIGhhdmUgdGhlbSBpbiB0aGUgc2FtZSBwb3NpdGlvbi4gIENocmlzIEhpbmR5IDxjaHJpc2hAaW8ub3JnPgorICAgIHNlbnQgaW4gYSBjaGFydCB3aXRoIGFjdHVhbCB2YWx1ZXMgZm9yIHRoaXM6CisJRVQxCUVUMglSZXNwb25zZSBUaW1lCVJlY29uZmlndXJhdGlvbiBUaW1lCisJLS0tCS0tLQktLS0tLS0tLS0tLS0tCS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJb3BlbglvcGVuCTc0Ljd1cwkJODQwdXMKKwlvcGVuCWNsb3NlZAkyODMuNHVzCQkxNjgwdXMKKwljbG9zZWQJb3Blbgk1NjEuOHVzCQkxNjgwdXMKKwljbG9zZWQJY2xvc2VkCTExMTguNnVzCTE2ODB1cworICAgIAorICAgIE1ha2Ugc3VyZSB5b3Ugc2V0IEVUUzEgYW5kIEVUUzIgdG8gdGhlIFNBTUUgVkFMVUUgZm9yIGFsbCBjYXJkcyBvbiB5b3VyCisgICAgbmV0d29yay4KKyAgICAKK0Fsc28sIG9uIG1hbnkgY2FyZHMgKG5vdCBtaW5lLCB0aG91Z2gpIHRoZXJlIGFyZSByZWQgYW5kIGdyZWVuIExFRCdzLiAKK1ZvanRlY2ggUGF2bGlrIDx2b2p0ZWNoQHN1c2UuY3o+IHRlbGxzIG1lIHRoaXMgaXMgd2hhdCB0aGV5IG1lYW46CisJR1JFRU4gICAgICAgICAgIFJFRCAgICAgICAgICAgICBTdGF0dXMKKwktLS0tLQkJLS0tCQktLS0tLS0KKwlPRkYgICAgICAgICAgICAgT0ZGICAgICAgICAgICAgIFBvd2VyIG9mZgorCU9GRiAgICAgICAgICAgICBTaG9ydCBmbGFzaGVzICAgQ2FibGluZyBwcm9ibGVtcyAoYnJva2VuIGNhYmxlIG9yIG5vdAorCQkJCQkgIHRlcm1pbmF0ZWQpCisJT0ZGIChzaG9ydCkgICAgIE9OICAgICAgICAgICAgICBDYXJkIGluaXQKKwlPTiAgICAgICAgICAgICAgT04gICAgICAgICAgICAgIE5vcm1hbCBzdGF0ZSAtIGV2ZXJ5dGhpbmcgT0ssIG5vdGhpbmcKKwkJCQkJICBoYXBwZW5zCisJT04gICAgICAgICAgICAgIExvbmcgZmxhc2hlcyAgICBEYXRhIHRyYW5zZmVyCisJT04gICAgICAgICAgICAgIE9GRiAgICAgICAgICAgICBOZXZlciBoYXBwZW5zIChtYXliZSB3aGVuIHdyb25nIElEKQorCisKK1RoZSBmb2xsb3dpbmcgaXMgYWxsIHRoZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBwZW9wbGUgaGF2ZSBzZW50IG1lIGFib3V0Cit0aGVpciBvd24gcGFydGljdWxhciBBUkNuZXQgY2FyZHMuICBJdCBpcyBvZmZpY2lhbGx5IGEgbWVzcywgYW5kIGNvbnRhaW5zCitodWdlIGFtb3VudHMgb2YgZHVwbGljYXRlZCBpbmZvcm1hdGlvbi4gIEkgaGF2ZSBubyB0aW1lIHRvIGZpeCBpdC4gIElmIHlvdQord2FudCB0bywgUExFQVNFIERPISAgSnVzdCBzZW5kIG1lIGEgJ2RpZmYgLXUnIG9mIGFsbCB5b3VyIGNoYW5nZXMuCisKK1RoZSBtb2RlbCAjIGlzIGxpc3RlZCByaWdodCBhYm92ZSBzcGVjaWZpY3MgZm9yIHRoYXQgY2FyZCwgc28geW91IHNob3VsZCBiZQorYWJsZSB0byB1c2UgeW91ciB0ZXh0IHZpZXdlcidzICJzZWFyY2giIGZ1bmN0aW9uIHRvIGZpbmQgdGhlIGVudHJ5IHlvdSB3YW50LiAKK0lmIHlvdSBkb24ndCBLTk9XIHdoYXQga2luZCBvZiBjYXJkIHlvdSBoYXZlLCB0cnkgbG9va2luZyB0aHJvdWdoIHRoZQordmFyaW91cyBkaWFncmFtcyB0byBzZWUgaWYgeW91IGNhbiB0ZWxsLgorCitJZiB5b3VyIG1vZGVsIGlzbid0IGxpc3RlZCBhbmQvb3IgaGFzIGRpZmZlcmVudCBzZXR0aW5ncywgUExFQVNFIFBMRUFTRQordGVsbCBtZS4gIEkgaGFkIHRvIGZpZ3VyZSBtaW5lIG91dCB3aXRob3V0IHRoZSBtYW51YWwsIGFuZCBpdCBXQVNOJ1QgRlVOIQorCitFdmVuIGlmIHlvdXIgQVJDbmV0IG1vZGVsIGlzbid0IGxpc3RlZCwgYnV0IGhhcyB0aGUgc2FtZSBqdW1wZXJzIGFzIGFub3RoZXIKK21vZGVsIHRoYXQgaXMsIHBsZWFzZSBlLW1haWwgbWUgdG8gc2F5IHNvLgorCitDYXJkcyBMaXN0ZWQgaW4gdGhpcyBmaWxlIChpbiB0aGlzIG9yZGVyLCBtb3N0bHkpOgorCisJTWFudWZhY3R1cmVyCU1vZGVsICMJCQlCaXRzCisJLS0tLS0tLS0tLS0tCS0tLS0tLS0JCQktLS0tCisJU01DCQlQQzEwMAkJCTgKKwlTTUMJCVBDMTEwCQkJOAorCVNNQwkJUEMxMjAJCQk4CisJU01DCQlQQzEzMAkJCTgKKwlTTUMJCVBDMjcwRQkJCTgKKwlTTUMJCVBDNTAwCQkJMTYKKwlTTUMJCVBDNTAwTG9uZ2JvYXJkCQkxNgorCVNNQwkJUEM1NTBMb25nYm9hcmQJCTE2CisJU01DCQlQQzYwMAkJCTE2CisJU01DCQlQQzcxMAkJCTgKKwlTTUM/CQlMQ1MtODgzMCgtVCkJCTgvMTYKKwlQdXJlZGF0YQlQREk1MDcJCQk4CisJQ05ldCBUZWNoCUNOMTIwLVNlcmllcwkJOAorCUNOZXQgVGVjaAlDTjE2MC1TZXJpZXMJCTE2CisJTGFudGVjaD8JVU05MDY1TCBjaGlwc2V0CQk4CisJQWNlcgkJNTIxMC0wMDMJCTgKKwlEYXRhcG9pbnQ/CUxBTi1BUkMtOAkJOAorCVRvcHdhcmUJCVRBLUFSQy8xMAkJOAorCVRob21hcy1Db25yYWQJNTAwLTYyNDItMDA5NyBSRVYgQQk4CisJV2F0ZXJsb28/CShDKTE5ODUgV2F0ZXJsb28gTWljcm8uIDgKKwlObyBOYW1lCQktLQkJCTgvMTYKKwlObyBOYW1lCQlUYWl3YW4gUi5PLkM/CQk4CisJTm8gTmFtZQkJTW9kZWwgOTA1OAkJOAorCVRpYXJhCQlUaWFyYSBMYW5jYXJkPwkJOAorCQorCisqKiBTTUMgPSBTdGFuZGFyZCBNaWNyb3N5c3RlbXMgQ29ycC4KKyoqIENOZXQgVGVjaCA9IENOZXQgVGVjaG5vbG9neSwgSW5jLgorCisKK1VuY2xhc3NpZmllZCBTdHVmZgorLS0tLS0tLS0tLS0tLS0tLS0tCisgIC0gUGxlYXNlIHNlbmQgYW55IG90aGVyIGluZm9ybWF0aW9uIHlvdSBjYW4gZmluZC4KKyAgCisgIC0gQW5kIHNvbWUgb3RoZXIgc3R1ZmYgKG1vcmUgaW5mbyBpcyB3ZWxjb21lISk6CisgICAgIEZyb206IHJvb3RAdWx0cmF3b3JsZC54czRhbGwubmwgKFRpbW8gSGlsYnJpbmspCisgICAgIFRvOiBhcGVud2FyckBmb3huZXQubmV0IChBdmVyeSBQZW5uYXJ1bikKKyAgICAgRGF0ZTogV2VkLCAyNiBPY3QgMTk5NCAwMjoxMDozMiArMDAwMCAoR01UKQorICAgICBSZXBseS1UbzogdGltb2hAeHM0YWxsLm5sCisKKyAgICAgWy4uLnBhcnRzIGRlbGV0ZWQuLi5dCisKKyAgICAgQWJvdXQgdGhlIGp1bXBlcnM6IE9uIG15IFBDMTMwIHRoZXJlIGlzIG9uZSBtb3JlIGp1bXBlciwgbG9jYXRlZCBuZWFyIHRoZQorICAgICBjYWJsZS1jb25uZWN0b3IgYW5kIGl0J3MgZm9yIGNoYW5naW5nIHRvIHN0YXIgb3IgYnVzIHRvcG9sb2d5OyAKKyAgICAgY2xvc2VkOiBzdGFyIC0gb3BlbjogYnVzCisgICAgIE9uIHRoZSBQQzUwMCBhcmUgc29tZSBtb3JlIGp1bXBlci1waW5zLCBvbmUgYmxvY2sgbGFiZWxlZCB3aXRoIFJYLFBETixUWEkKKyAgICAgYW5kIGFub3RoZXIgd2l0aCBBTEUsTEExNyxMQTE4LExBMTkgdGhlc2UgYXJlIHVuZG9jdW1lbnRlZC4uCisKKyAgICAgWy4uLm1vcmUgcGFydHMgZGVsZXRlZC4uLl0KKworICAgICAtLS0gQ1VUIC0tLQorCisKKyoqIFN0YW5kYXJkIE1pY3Jvc3lzdGVtcyBDb3JwIChTTUMpICoqCitQQzEwMCwgUEMxMTAsIFBDMTIwLCBQQzEzMCAoOC1iaXQgY2FyZHMpCitQQzUwMCwgUEM2MDAgKDE2LWJpdCBjYXJkcykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAtIG1haW5seSBmcm9tIEF2ZXJ5IFBlbm5hcnVuIDxhcGVud2FyckB3b3JsZHZpc2lvbnMuY2E+LiAgVmFsdWVzIGRlcGljdGVkCisgICAgYXJlIGZyb20gQXZlcnkncyBzZXR1cC4KKyAgLSBzcGVjaWFsIHRoYW5rcyB0byBUaW1vIEhpbGJyaW5rIDx0aW1vaEB4czRhbGwubmw+IGZvciBub3RpbmcgdGhhdCBQQzEyMCwKKyAgICAxMzAsIDUwMCwgYW5kIDYwMCBhbGwgaGF2ZSB0aGUgc2FtZSBzd2l0Y2hlcyBhcyBBdmVyeSdzIFBDMTAwLiAKKyAgICBQQzUwMC82MDAgaGF2ZSBzZXZlcmFsIGV4dHJhLCB1bmRvY3VtZW50ZWQgcGlucyB0aG91Z2guICg/KQorICAtIFBDMTEwIHNldHRpbmdzIHdlcmUgdmVyaWZpZWQgYnkgU3RlcGhlbiBBLiBXb29kIDxzYXdAY2ViYWYuZ292PgorICAtIEFsc28sIHRoZSBKUC0gYW5kIFMtbnVtYmVycyBwcm9iYWJseSBkb24ndCBtYXRjaCB5b3VyIGNhcmQgZXhhY3RseS4gIFRyeQorICAgIHRvIGZpbmQganVtcGVycy9zd2l0Y2hlcyB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBzZXR0aW5ncyAtIGl0J3MKKyAgICBwcm9iYWJseSBtb3JlIHJlbGlhYmxlLgorICAKKworICAgICBKUDUJCSAgICAgICBbfF0gICAgOiAgICA6ICAgIDogICAgOgorKElSUSBTZXR0aW5nKQkJICAgICAgSVJRMiAgSVJRMyBJUlE0IElSUTUgSVJRNworCQlQdXQgZXhhY3RseSBvbmUganVtcGVyIG9uIGV4YWN0bHkgb25lIHNldCBvZiBwaW5zLgorCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMSAgMiAgIDMgIDQgIDUgIDYgICA3ICA4ICA5IDEwCisgICAgIFMxICAgICAgICAgICAgICAgIC8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXAorKEkvTyBhbmQgTWVtb3J5ICAgICAgICB8ICAxICAxICogMCAgMCAgMCAgMCAqIDEgIDEgIDAgIDEgIHwKKyBhZGRyZXNzZXMpICAgICAgICAgICAgXC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vCisgICAgICAgICAgICAgICAgICAgICAgICAgIHwtLXwgICB8LS0tLS0tLS18ICAgfC0tLS0tLS0tfAorICAgICAgICAgICAgICAgICAgICAgICAgICAoYSkgICAgICAgKGIpICAgICAgICAgICAobSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgV0FSTklORy4gIEl0J3MgdmVyeSBpbXBvcnRhbnQgd2hlbiBzZXR0aW5nIHRoZXNlIHdoaWNoIHdheQorICAgICAgICAgICAgICAgIHlvdSdyZSBob2xkaW5nIHRoZSBjYXJkLCBhbmQgd2hpY2ggd2F5IHlvdSB0aGluayBpcyAnMSchCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgSWYgeW91IHN1c3BlY3QgdGhhdCB5b3VyIHNldHRpbmdzIGFyZSBub3QgYmVpbmcgbWFkZQorCQljb3JyZWN0bHksIHRyeSByZXZlcnNpbmcgdGhlIGRpcmVjdGlvbiBvciBpbnZlcnRpbmcgdGhlCisJCXN3aXRjaCBwb3NpdGlvbnMuCisKKwkJYTogVGhlIGZpcnN0IGRpZ2l0IG9mIHRoZSBJL08gYWRkcmVzcy4KKwkJCVNldHRpbmcJCVZhbHVlCisJCQktLS0tLS0tCQktLS0tLQorCQkJMDAJCTAKKwkJCTAxCQkxCisJCQkxMAkJMgorCQkJMTEJCTMKKworCQliOiBUaGUgc2Vjb25kIGRpZ2l0IG9mIHRoZSBJL08gYWRkcmVzcy4KKwkJCVNldHRpbmcJCVZhbHVlCisJCQktLS0tLS0tCQktLS0tLQorCQkJMDAwMAkJMAorCQkJMDAwMQkJMQorCQkJMDAxMAkJMgorCQkJLi4uCQkuLi4KKwkJCTExMTAJCUUKKwkJCTExMTEJCUYKKworCQlUaGUgSS9PIGFkZHJlc3MgaXMgaW4gdGhlIGZvcm0gYWIwLiAgRm9yIGV4YW1wbGUsIGlmCisJCWEgaXMgMHgyIGFuZCBiIGlzIDB4RSwgdGhlIGFkZHJlc3Mgd2lsbCBiZSAweDJFMC4KKworCQlETyBOT1QgU0VUIFRISVMgTEVTUyBUSEFOIDB4MjAwISEhISEKKworCisJCW06IFRoZSBmaXJzdCBkaWdpdCBvZiB0aGUgbWVtb3J5IGFkZHJlc3MuCisJCQlTZXR0aW5nCQlWYWx1ZQorCQkJLS0tLS0tLQkJLS0tLS0KKwkJCTAwMDAJCTAKKwkJCTAwMDEJCTEKKwkJCTAwMTAJCTIKKwkJCS4uLgkJLi4uCisJCQkxMTEwCQlFCisJCQkxMTExCQlGCisKKwkJVGhlIG1lbW9yeSBhZGRyZXNzIGlzIGluIHRoZSBmb3JtIG0wMDAwLiAgRm9yIGV4YW1wbGUsIGlmCisJCW0gaXMgRCwgdGhlIGFkZHJlc3Mgd2lsbCBiZSAweEQwMDAwLgorCisJCURPIE5PVCBTRVQgVEhJUyBUTyBDMDAwMCwgRjAwMDAsIE9SIExFU1MgVEhBTiBBMDAwMCEKKworICAgICAgICAgICAgICAgICAgICAgICAgICAxICAyICAzICA0ICA1ICA2ICA3ICA4CisgICAgIFMyICAgICAgICAgICAgICAgIC8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwKKyhTdGF0aW9uIEFkZHJlc3MpICAgICAgfCAgMSAgMSAgMCAgMCAgMCAgMCAgMCAgMCAgfAorICAgICAgICAgICAgICAgICAgICAgICBcLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vCisKKwkJCVNldHRpbmcJCVZhbHVlCisJCQktLS0tLS0tCQktLS0tLQorCQkJMDAwMDAwMDAJMDAKKwkJCTEwMDAwMDAwCTAxCisJCQkwMTAwMDAwMAkwMgorCQkJLi4uCisJCQkwMTExMTExMQlGRQorCQkJMTExMTExMTEJRkYKKworCQlOb3RlIHRoYXQgdGhpcyBpcyBiaW5hcnkgd2l0aCB0aGUgZGlnaXRzIHJldmVyc2VkIQorCisJCURPIE5PVCBTRVQgVEhJUyBUTyAwIE9SIDI1NSAoMHhGRikhCisKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworKiogU3RhbmRhcmQgTWljcm9zeXN0ZW1zIENvcnAgKFNNQykgKioKK1BDMTMwRS9QQzI3MEUgKDgtYml0IGNhcmRzKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIC0gZnJvbSBKdWVyZ2VuIFNlaWZlcnQgPHNlaWZlcnRAaHR3bS5kZT4KKworCitTVEFOREFSRCBNSUNST1NZU1RFTVMgQ09SUE9SQVRJT04gKFNNQykgQVJDTkVUKFIpLVBDMTMwRS9QQzI3MEUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGRlc2NyaXB0aW9uIGhhcyBiZWVuIHdyaXR0ZW4gYnkgSnVlcmdlbiBTZWlmZXJ0IDxzZWlmZXJ0QGh0d20uZGU+Cit1c2luZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBmb2xsb3dpbmcgT3JpZ2luYWwgU01DIE1hbnVhbCAKKworICAgICAgICAgICAgICJDb25maWd1cmF0aW9uIEd1aWRlIGZvcgorICAgICAgICAgICAgIEFSQ05FVChSKS1QQzEzMEUvUEMyNzAKKyAgICAgICAgICAgIE5ldHdvcmsgQ29udHJvbGxlciBCb2FyZHMKKyAgICAgICAgICAgICAgICBQdWIuICMgOTAwLjA0NEEKKyAgICAgICAgICAgICAgICAgICBKdW5lLCAxOTg5IgorCitBUkNORVQgaXMgYSByZWdpc3RlcmVkIHRyYWRlbWFyayBvZiB0aGUgRGF0YXBvaW50IENvcnBvcmF0aW9uCitTTUMgaXMgYSByZWdpc3RlcmVkIHRyYWRlbWFyayBvZiB0aGUgU3RhbmRhcmQgTWljcm9zeXN0ZW1zIENvcnBvcmF0aW9uICAKKworVGhlIFBDMTMwRSBpcyBhbiBlbmhhbmNlZCB2ZXJzaW9uIG9mIHRoZSBQQzEzMCBib2FyZCwgaXMgZXF1aXBwZWQgd2l0aCBhIAorc3RhbmRhcmQgQk5DIGZlbWFsZSBjb25uZWN0b3IgZm9yIGNvbm5lY3Rpb24gdG8gUkctNjIvVSBjb2F4IGNhYmxlLgorU2luY2UgdGhpcyBib2FyZCBpcyBkZXNpZ25lZCBib3RoIGZvciBwb2ludC10by1wb2ludCBjb25uZWN0aW9uIGluIHN0YXIKK25ldHdvcmtzIGFuZCBmb3IgY29ubmVjdGlvbiB0byBidXMgbmV0d29ya3MsIGl0IGlzIGRvd253YXJkbHkgY29tcGF0aWJsZSAKK3dpdGggYWxsIHRoZSBvdGhlciBzdGFuZGFyZCBib2FyZHMgZGVzaWduZWQgZm9yIGNvYXggbmV0d29ya3MgKHRoYXQgaXMsCit0aGUgUEMxMjAsIFBDMTEwIGFuZCBQQzEwMCBzdGFyIHRvcG9sb2d5IGJvYXJkcyBhbmQgdGhlIFBDMjIwLCBQQzIxMCBhbmQgCitQQzIwMCBidXMgdG9wb2xvZ3kgYm9hcmRzKS4KKworVGhlIFBDMjcwRSBpcyBhbiBlbmhhbmNlZCB2ZXJzaW9uIG9mIHRoZSBQQzI2MCBib2FyZCwgaXMgZXF1aXBwZWQgd2l0aCB0d28gCittb2R1bGFyIFJKMTEtdHlwZSBqYWNrcyBmb3IgY29ubmVjdGlvbiB0byB0d2lzdGVkIHBhaXIgd2lyaW5nLgorSXQgY2FuIGJlIHVzZWQgaW4gYSBzdGFyIG9yIGEgZGFpc3ktY2hhaW5lZCBuZXR3b3JrLgorCisKKyAgICAgICAgIDggNyA2IDUgNCAzIDIgMQorICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKyAgIHwgICB8ICAgICAgIFMxICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgIHxfX19fX19fX19fX19fX19fX3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8ICAgIE9mZnN8QmFzZSB8SS9PIEFkZHIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgIFJBTSBBZGRyIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19ffAorICAgfCAgICAgICAgIF9fXyAgX19fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1IzIHxfX198CisgICB8ICAgICAgICB8ICAgXC8gICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUjQgfF9fX3wKKyAgIHwgICAgICAgIHwgIFBST00gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19ffAorICAgfCAgICAgICAgfCAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOIHwgICB8IDgKKyAgIHwgICAgICAgIHwgU09DS0VUIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyB8ICAgfCA3CisgICB8ICAgICAgICB8X19fX19fX198ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgfCAgIHwgNgorICAgfCAgICAgICAgICAgICAgICAgICBfX19fX19fX19fX19fX19fX19fICAgICAgICAgICAgICAgICAgICBlIHwgICB8IDUKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgQSB8IFMgfCA0CisgICB8ICAgICAgIHxvb3wgRVhUMiAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIGQgfCAyIHwgMworICAgfCAgICAgICB8b298IEVYVDEgIHwgICAgICAgU01DICAgICAgICAgfCAgICAgICAgICAgICAgICAgICBkIHwgICB8IDIKKyAgIHwgICAgICAgfG9vfCBST00gICB8ICAgICAgOTBDNjMgICAgICAgIHwgICAgICAgICAgICAgICAgICAgciB8X19ffCAxCisgICB8ICAgICAgIHxvb3wgSVJRNyAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfG98ICBfX19fX3wKKyAgIHwgICAgICAgfG9vfCBJUlE1ICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8b3wgfCBKMSAgfAorICAgfCAgICAgICB8b298IElSUTQgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgU1RBUiB8X19fX198CisgICB8ICAgICAgIHxvb3wgSVJRMyAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgSjIgIHwKKyAgIHwgICAgICAgfG9vfCBJUlEyICB8X19fX19fX19fX19fX19fX19fX3wgICAgICAgICAgICAgICAgICAgfF9fX19ffAorICAgfF9fXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19fX19fX19fX19fX198CisgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffAorCitMZWdlbmQ6CisKK1NNQyA5MEM2MwlBUkNORVQgQ29udHJvbGxlciAvIFRyYW5zY2VpdmVyIC9Mb2dpYworUzEJMS0zOglJL08gQmFzZSBBZGRyZXNzIFNlbGVjdAorCTQtNjoJTWVtb3J5IEJhc2UgQWRkcmVzcyBTZWxlY3QKKwk3LTg6CVJBTSBPZmZzZXQgU2VsZWN0CitTMgkxLTg6CU5vZGUgSUQgU2VsZWN0CitFWFQJCUV4dGVuZGVkIFRpbWVvdXQgU2VsZWN0CitST00JCVJPTSBFbmFibGUgU2VsZWN0CitTVEFSCQlTZWxlY3RlZCAtIFN0YXIgVG9wb2xvZ3kJKFBDMTMwRSBvbmx5KQorCQlEZXNlbGVjdGVkIC0gQnVzIFRvcG9sb2d5CShQQzEzMEUgb25seSkKK0NSMy9DUjQJCURpYWdub3N0aWMgTEVEcworSjEJCUJOQyBSRzYyL1UgQ29ubmVjdG9yCQkoUEMxMzBFIG9ubHkpCitKMQkJNi1wb3NpdGlvbiBUZWxlcGhvbmUgSmFjawkoUEMyNzBFIG9ubHkpCitKMgkJNi1wb3NpdGlvbiBUZWxlcGhvbmUgSmFjawkoUEMyNzBFIG9ubHkpCisKK1NldHRpbmcgb25lIG9mIHRoZSBzd2l0Y2hlcyB0byBPZmYvT3BlbiBtZWFucyAiMSIsIE9uL0Nsb3NlZCBtZWFucyAiMCIuCisKKworU2V0dGluZyB0aGUgTm9kZSBJRAorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZWlnaHQgc3dpdGNoZXMgaW4gZ3JvdXAgUzIgYXJlIHVzZWQgdG8gc2V0IHRoZSBub2RlIElELgorVGhlc2Ugc3dpdGNoZXMgd29yayBpbiBhIHdheSBzaW1pbGFyIHRvIHRoZSBQQzEwMC1zZXJpZXMgY2FyZHM7IHNlZSB0aGF0CitlbnRyeSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworCitTZXR0aW5nIHRoZSBJL08gQmFzZSBBZGRyZXNzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBmaXJzdCB0aHJlZSBzd2l0Y2hlcyBpbiBzd2l0Y2ggZ3JvdXAgUzEgYXJlIHVzZWQgdG8gc2VsZWN0IG9uZQorb2YgZWlnaHQgcG9zc2libGUgSS9PIEJhc2UgYWRkcmVzc2VzIHVzaW5nIHRoZSBmb2xsb3dpbmcgdGFibGUKKworCisgICBTd2l0Y2ggfCBIZXggSS9PCisgICAxIDIgMyAgfCBBZGRyZXNzCisgICAtLS0tLS0tfC0tLS0tLS0tCisgICAwIDAgMCAgfCAgMjYwCisgICAwIDAgMSAgfCAgMjkwCisgICAwIDEgMCAgfCAgMkUwICAoTWFudWZhY3R1cmVyJ3MgZGVmYXVsdCkKKyAgIDAgMSAxICB8ICAyRjAKKyAgIDEgMCAwICB8ICAzMDAKKyAgIDEgMCAxICB8ICAzNTAKKyAgIDEgMSAwICB8ICAzODAKKyAgIDEgMSAxICB8ICAzRTAKKworCitTZXR0aW5nIHRoZSBCYXNlIE1lbW9yeSAoUkFNKSBidWZmZXIgQWRkcmVzcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG1lbW9yeSBidWZmZXIgcmVxdWlyZXMgMksgb2YgYSAxNksgYmxvY2sgb2YgUkFNLiBUaGUgYmFzZSBvZiB0aGlzCisxNksgYmxvY2sgY2FuIGJlIGxvY2F0ZWQgaW4gYW55IG9mIGVpZ2h0IHBvc2l0aW9ucy4KK1N3aXRjaGVzIDQtNiBvZiBzd2l0Y2ggZ3JvdXAgUzEgc2VsZWN0IHRoZSBCYXNlIG9mIHRoZSAxNksgYmxvY2suCitXaXRoaW4gdGhhdCAxNksgYWRkcmVzcyBzcGFjZSwgdGhlIGJ1ZmZlciBtYXkgYmUgYXNzaWduZWQgYW55IG9uZSBvZiBmb3VyIAorcG9zaXRpb25zLCBkZXRlcm1pbmVkIGJ5IHRoZSBvZmZzZXQsIHN3aXRjaGVzIDcgYW5kIDggb2YgZ3JvdXAgUzEuCisKKyAgIFN3aXRjaCAgICAgfCBIZXggUkFNIHwgSGV4IFJPTQorICAgNCA1IDYgIDcgOCB8IEFkZHJlc3MgfCBBZGRyZXNzICopCisgICAtLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLS0KKyAgIDAgMCAwICAwIDAgfCAgQzAwMDAgIHwgIEMyMDAwCisgICAwIDAgMCAgMCAxIHwgIEMwODAwICB8ICBDMjAwMAorICAgMCAwIDAgIDEgMCB8ICBDMTAwMCAgfCAgQzIwMDAKKyAgIDAgMCAwICAxIDEgfCAgQzE4MDAgIHwgIEMyMDAwCisgICAgICAgICAgICAgIHwgICAgICAgICB8CisgICAwIDAgMSAgMCAwIHwgIEM0MDAwICB8ICBDNjAwMAorICAgMCAwIDEgIDAgMSB8ICBDNDgwMCAgfCAgQzYwMDAKKyAgIDAgMCAxICAxIDAgfCAgQzUwMDAgIHwgIEM2MDAwCisgICAwIDAgMSAgMSAxIHwgIEM1ODAwICB8ICBDNjAwMAorICAgICAgICAgICAgICB8ICAgICAgICAgfAorICAgMCAxIDAgIDAgMCB8ICBDQzAwMCAgfCAgQ0UwMDAKKyAgIDAgMSAwICAwIDEgfCAgQ0M4MDAgIHwgIENFMDAwCisgICAwIDEgMCAgMSAwIHwgIENEMDAwICB8ICBDRTAwMAorICAgMCAxIDAgIDEgMSB8ICBDRDgwMCAgfCAgQ0UwMDAKKyAgICAgICAgICAgICAgfCAgICAgICAgIHwKKyAgIDAgMSAxICAwIDAgfCAgRDAwMDAgIHwgIEQyMDAwICAoTWFudWZhY3R1cmVyJ3MgZGVmYXVsdCkKKyAgIDAgMSAxICAwIDEgfCAgRDA4MDAgIHwgIEQyMDAwCisgICAwIDEgMSAgMSAwIHwgIEQxMDAwICB8ICBEMjAwMAorICAgMCAxIDEgIDEgMSB8ICBEMTgwMCAgfCAgRDIwMDAKKyAgICAgICAgICAgICAgfCAgICAgICAgIHwKKyAgIDEgMCAwICAwIDAgfCAgRDQwMDAgIHwgIEQ2MDAwCisgICAxIDAgMCAgMCAxIHwgIEQ0ODAwICB8ICBENjAwMAorICAgMSAwIDAgIDEgMCB8ICBENTAwMCAgfCAgRDYwMDAKKyAgIDEgMCAwICAxIDEgfCAgRDU4MDAgIHwgIEQ2MDAwCisgICAgICAgICAgICAgIHwgICAgICAgICB8CisgICAxIDAgMSAgMCAwIHwgIEQ4MDAwICB8ICBEQTAwMAorICAgMSAwIDEgIDAgMSB8ICBEODgwMCAgfCAgREEwMDAKKyAgIDEgMCAxICAxIDAgfCAgRDkwMDAgIHwgIERBMDAwCisgICAxIDAgMSAgMSAxIHwgIEQ5ODAwICB8ICBEQTAwMAorICAgICAgICAgICAgICB8ICAgICAgICAgfAorICAgMSAxIDAgIDAgMCB8ICBEQzAwMCAgfCAgREUwMDAKKyAgIDEgMSAwICAwIDEgfCAgREM4MDAgIHwgIERFMDAwCisgICAxIDEgMCAgMSAwIHwgIEREMDAwICB8ICBERTAwMAorICAgMSAxIDAgIDEgMSB8ICBERDgwMCAgfCAgREUwMDAKKyAgICAgICAgICAgICAgfCAgICAgICAgIHwKKyAgIDEgMSAxICAwIDAgfCAgRTAwMDAgIHwgIEUyMDAwCisgICAxIDEgMSAgMCAxIHwgIEUwODAwICB8ICBFMjAwMAorICAgMSAxIDEgIDEgMCB8ICBFMTAwMCAgfCAgRTIwMDAKKyAgIDEgMSAxICAxIDEgfCAgRTE4MDAgIHwgIEUyMDAwCisgIAorKikgVG8gZW5hYmxlIHRoZSA4SyBCb290IFBST00gaW5zdGFsbCB0aGUganVtcGVyIFJPTS4KKyAgIFRoZSBkZWZhdWx0IGlzIGp1bXBlciBST00gbm90IGluc3RhbGxlZC4KKworCitTZXR0aW5nIHRoZSBUaW1lb3V0cyBhbmQgSW50ZXJydXB0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBqdW1wZXJzIGxhYmVsZWQgRVhUMSBhbmQgRVhUMiBhcmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHRpbWVvdXQgCitwYXJhbWV0ZXJzLiBUaGVzZSB0d28ganVtcGVycyBhcmUgbm9ybWFsbHkgbGVmdCBvcGVuLgorCitUbyBzZWxlY3QgYSBoYXJkd2FyZSBpbnRlcnJ1cHQgbGV2ZWwgc2V0IG9uZSAob25seSBvbmUhKSBvZiB0aGUganVtcGVycworSVJRMiwgSVJRMywgSVJRNCwgSVJRNSwgSVJRNy4gVGhlIE1hbnVmYWN0dXJlcidzIGRlZmF1bHQgaXMgSVJRMi4KKyAKKworQ29uZmlndXJpbmcgdGhlIFBDMTMwRSBmb3IgU3RhciBvciBCdXMgVG9wb2xvZ3kKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBzaW5nbGUganVtcGVyIGxhYmVsZWQgU1RBUiBpcyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgUEMxMzBFIGJvYXJkIGZvciAKK3N0YXIgb3IgYnVzIHRvcG9sb2d5LgorV2hlbiB0aGUganVtcGVyIGlzIGluc3RhbGxlZCwgdGhlIGJvYXJkIG1heSBiZSB1c2VkIGluIGEgc3RhciBuZXR3b3JrLCB3aGVuIAoraXQgaXMgcmVtb3ZlZCwgdGhlIGJvYXJkIGNhbiBiZSB1c2VkIGluIGEgYnVzIHRvcG9sb2d5LgorCisKK0RpYWdub3N0aWMgTEVEcworLS0tLS0tLS0tLS0tLS0tCisKK1R3byBkaWFnbm9zdGljIExFRHMgYXJlIHZpc2libGUgb24gdGhlIHJlYXIgYnJhY2tldCBvZiB0aGUgYm9hcmQuCitUaGUgZ3JlZW4gTEVEIG1vbml0b3JzIHRoZSBuZXR3b3JrIGFjdGl2aXR5OiB0aGUgcmVkIG9uZSBzaG93cyB0aGUKK2JvYXJkIGFjdGl2aXR5OgorCisgR3JlZW4gIHwgU3RhdHVzICAgICAgICAgICAgICAgUmVkICAgICAgfCBTdGF0dXMKKyAtLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0gICAtLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLQorICBvbiAgICB8IG5vcm1hbCBhY3Rpdml0eSAgICAgIGZsYXNoL29uIHwgZGF0YSB0cmFuc2ZlcgorICBibGluayB8IHJlY29uZmlndXJhdGlvbiAgICAgIG9mZiAgICAgIHwgbm8gZGF0YSB0cmFuc2ZlcjsKKyAgb2ZmICAgfCBkZWZlY3RpdmUgYm9hcmQgb3IgICAgICAgICAgICB8IGluY29ycmVjdCBtZW1vcnkgb3IKKyAgICAgICAgfCBub2RlIElEIGlzIHplcm8gICAgICAgICAgICAgICB8IEkvTyBhZGRyZXNzCisKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworKiogU3RhbmRhcmQgTWljcm9zeXN0ZW1zIENvcnAgKFNNQykgKioKK1BDNTAwL1BDNTUwIExvbmdib2FyZCAoMTYtYml0IGNhcmRzKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAtIGZyb20gSnVlcmdlbiBTZWlmZXJ0IDxzZWlmZXJ0QGh0d20uZGU+CisKKworU1RBTkRBUkQgTUlDUk9TWVNURU1TIENPUlBPUkFUSU9OIChTTUMpIEFSQ05FVC1QQzUwMC9QQzU1MCBMb25nIEJvYXJkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworTm90ZTogVGhlcmUgaXMgYW5vdGhlciBWZXJzaW9uIG9mIHRoZSBQQzUwMCBjYWxsZWQgU2hvcnQgVmVyc2lvbiwgd2hpY2ggCisgICAgICBpcyBkaWZmZXJlbnQgaW4gaGFyZC0gYW5kIHNvZnR3YXJlISBUaGUgbW9zdCBpbXBvcnRhbnQgZGlmZmVyZW5jZXMKKyAgICAgIGFyZToKKyAgICAgIC0gVGhlIGxvbmcgYm9hcmQgaGFzIG5vIFNoYXJlZCBtZW1vcnkuCisgICAgICAtIE9uIHRoZSBsb25nIGJvYXJkIHRoZSBzZWxlY3Rpb24gb2YgdGhlIGludGVycnVwdCBpcyBkb25lIGJ5IGJpbmFyeQorICAgICAgICBjb2RlZCBzd2l0Y2gsIG9uIHRoZSBzaG9ydCBib2FyZCBkaXJlY3RseSBieSBqdW1wZXIuCisgICAgICAgIAorW0F2ZXJ5J3Mgbm90ZTogcGF5IHNwZWNpYWwgYXR0ZW50aW9uIHRvIHRoYXQ6IHRoZSBsb25nIGJvYXJkIEhBUyBOTyBTSEFSRUQKK01FTU9SWS4gIFRoaXMgbWVhbnMgdGhlIGN1cnJlbnQgTGludXgtQVJDbmV0IGRyaXZlciBjYW4ndCB1c2UgdGhlc2UgY2FyZHMuIAorSSBoYXZlIG9idGFpbmVkIGEgUEM1MDBMb25nYm9hcmQgYW5kIHdpbGwgYmUgZG9pbmcgc29tZSBleHBlcmltZW50cyBvbiBpdCBpbgordGhlIGZ1dHVyZSwgYnV0IGRvbid0IGhvbGQgeW91ciBicmVhdGguICBUaGFua3MgYWdhaW4gdG8gSnVlcmdlbiBTZWlmZXJ0IGZvcgoraGlzIGFkdmljZSBhYm91dCB0aGlzIV0KKworVGhpcyBkZXNjcmlwdGlvbiBoYXMgYmVlbiB3cml0dGVuIGJ5IEp1ZXJnZW4gU2VpZmVydCA8c2VpZmVydEBodHdtLmRlPgordXNpbmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgZm9sbG93aW5nIE9yaWdpbmFsIFNNQyBNYW51YWwgCisKKyAgICAgICAgICAgICAiQ29uZmlndXJhdGlvbiBHdWlkZSBmb3IKKyAgICAgICAgICAgICBTTUMgQVJDTkVULVBDNTAwL1BDNTUwCisgICAgICAgICBTZXJpZXMgTmV0d29yayBDb250cm9sbGVyIEJvYXJkcworICAgICAgICAgICAgIFB1Yi4gIyA5MDAuMDMzIFJldi4gQQorICAgICAgICAgICAgICAgIE5vdmVtYmVyLCAxOTg5IgorCitBUkNORVQgaXMgYSByZWdpc3RlcmVkIHRyYWRlbWFyayBvZiB0aGUgRGF0YXBvaW50IENvcnBvcmF0aW9uCitTTUMgaXMgYSByZWdpc3RlcmVkIHRyYWRlbWFyayBvZiB0aGUgU3RhbmRhcmQgTWljcm9zeXN0ZW1zIENvcnBvcmF0aW9uICAKKworVGhlIFBDNTAwIGlzIGVxdWlwcGVkIHdpdGggYSBzdGFuZGFyZCBCTkMgZmVtYWxlIGNvbm5lY3RvciBmb3IgY29ubmVjdGlvbgordG8gUkctNjIvVSBjb2F4IGNhYmxlLgorVGhlIGJvYXJkIGlzIGRlc2lnbmVkIGJvdGggZm9yIHBvaW50LXRvLXBvaW50IGNvbm5lY3Rpb24gaW4gc3RhciBuZXR3b3JrcworYW5kIGZvciBjb25uZWN0aW9uIHRvIGJ1cyBuZXR3b3Jrcy4KKworVGhlIFBDNTUwIGlzIGVxdWlwcGVkIHdpdGggdHdvIG1vZHVsYXIgUkoxMS10eXBlIGphY2tzIGZvciBjb25uZWN0aW9uCit0byB0d2lzdGVkIHBhaXIgd2lyaW5nLgorSXQgY2FuIGJlIHVzZWQgaW4gYSBzdGFyIG9yIGEgZGFpc3ktY2hhaW5lZCAoQlVTKSBuZXR3b3JrLgorCisgICAgICAgMSAKKyAgICAgICAwIDkgOCA3IDYgNSA0IDMgMiAxICAgICA2IDUgNCAzIDIgMQorICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisgICA8IHwgICAgICAgICBTVzEgICAgICAgICB8IHwgICAgIFNXMiAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICA+IHxfX19fX19fX19fX19fX19fX19fX198IHxfX19fX19fX19fX19ffCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICA8ICAgSVJRICAgIHxJL08gQWRkciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX198CisgICA8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1I0IHxfX198CisgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1IzIHxfX198CisgICA8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX198CisgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOIHwgICB8IDgKKyAgIDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gfCAgIHwgNworICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCB8IFMgfCA2CisgICA8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlIHwgVyB8IDUKKyAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgfCAzIHwgNAorICAgPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCB8ICAgfCAzCisgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkIHwgICB8IDIKKyAgIDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgfF9fX3wgMQorICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfG98ICAgIF9fX19ffAorICAgPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfG98ICAgfCBKMSAgfAorICAgPiAgMyAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlA2ICAgfF9fX19ffAorICAgPCB8b3xvfCBKUDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBKMiAgfAorICAgPiB8b3xvfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfF9fX19ffAorICAgPCAgNCAyX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX19fX19fX19fX19ffAorICAgPiAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgPF9fX198ICB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffAorCitMZWdlbmQ6CisKK1NXMQkxLTY6CUkvTyBCYXNlIEFkZHJlc3MgU2VsZWN0CisJNy0xMDoJSW50ZXJydXB0IFNlbGVjdAorU1cyCTEtNjoJUmVzZXJ2ZWQgZm9yIEZ1dHVyZSBVc2UKK1NXMwkxLTg6CU5vZGUgSUQgU2VsZWN0CitKUDIJMS00OglFeHRlbmRlZCBUaW1lb3V0IFNlbGVjdAorSlA2CQlTZWxlY3RlZCAtIFN0YXIgVG9wb2xvZ3kJKFBDNTAwIG9ubHkpCisJCURlc2VsZWN0ZWQgLSBCdXMgVG9wb2xvZ3kJKFBDNTAwIG9ubHkpCitDUjMJR3JlZW4JTW9uaXRvcnMgTmV0d29yayBBY3Rpdml0eQorQ1I0CVJlZAlNb25pdG9ycyBCb2FyZCBBY3Rpdml0eQorSjEJCUJOQyBSRzYyL1UgQ29ubmVjdG9yCQkoUEM1MDAgb25seSkKK0oxCQk2LXBvc2l0aW9uIFRlbGVwaG9uZSBKYWNrCShQQzU1MCBvbmx5KQorSjIJCTYtcG9zaXRpb24gVGVsZXBob25lIEphY2sJKFBDNTUwIG9ubHkpCisKK1NldHRpbmcgb25lIG9mIHRoZSBzd2l0Y2hlcyB0byBPZmYvT3BlbiBtZWFucyAiMSIsIE9uL0Nsb3NlZCBtZWFucyAiMCIuCisKKworU2V0dGluZyB0aGUgTm9kZSBJRAorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZWlnaHQgc3dpdGNoZXMgaW4gZ3JvdXAgU1czIGFyZSB1c2VkIHRvIHNldCB0aGUgbm9kZSBJRC4gRWFjaCBub2RlCithdHRhY2hlZCB0byB0aGUgbmV0d29yayBtdXN0IGhhdmUgYW4gdW5pcXVlIG5vZGUgSUQgd2hpY2ggbXVzdCBiZSAKK2RpZmZlcmVudCBmcm9tIDAuCitTd2l0Y2ggMSBzZXJ2ZXMgYXMgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCAoTFNCKS4KKworVGhlIG5vZGUgSUQgaXMgdGhlIHN1bSBvZiB0aGUgdmFsdWVzIG9mIGFsbCBzd2l0Y2hlcyBzZXQgdG8gIjEiICAKK1RoZXNlIHZhbHVlcyBhcmU6CisKKyAgICBTd2l0Y2ggfCBWYWx1ZQorICAgIC0tLS0tLS18LS0tLS0tLQorICAgICAgMSAgICB8ICAgMQorICAgICAgMiAgICB8ICAgMgorICAgICAgMyAgICB8ICAgNAorICAgICAgNCAgICB8ICAgOAorICAgICAgNSAgICB8ICAxNgorICAgICAgNiAgICB8ICAzMgorICAgICAgNyAgICB8ICA2NAorICAgICAgOCAgICB8IDEyOAorCitTb21lIEV4YW1wbGVzOgorCisgICAgU3dpdGNoICAgICAgICAgfCBIZXggICAgIHwgRGVjaW1hbCAKKyAgIDggNyA2IDUgNCAzIDIgMSB8IE5vZGUgSUQgfCBOb2RlIElECisgICAtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0KKyAgIDAgMCAwIDAgMCAwIDAgMCB8ICAgIG5vdCBhbGxvd2VkCisgICAwIDAgMCAwIDAgMCAwIDEgfCAgICAxICAgIHwgICAgMSAKKyAgIDAgMCAwIDAgMCAwIDEgMCB8ICAgIDIgICAgfCAgICAyCisgICAwIDAgMCAwIDAgMCAxIDEgfCAgICAzICAgIHwgICAgMworICAgICAgIC4gLiAuICAgICAgIHwgICAgICAgICB8CisgICAwIDEgMCAxIDAgMSAwIDEgfCAgIDU1ICAgIHwgICA4NQorICAgICAgIC4gLiAuICAgICAgIHwgICAgICAgICB8CisgICAxIDAgMSAwIDEgMCAxIDAgfCAgIEFBICAgIHwgIDE3MAorICAgICAgIC4gLiAuICAgICAgIHwgICAgICAgICB8ICAKKyAgIDEgMSAxIDEgMSAxIDAgMSB8ICAgRkQgICAgfCAgMjUzCisgICAxIDEgMSAxIDEgMSAxIDAgfCAgIEZFICAgIHwgIDI1NAorICAgMSAxIDEgMSAxIDEgMSAxIHwgICBGRiAgICB8ICAyNTUgCisKKworU2V0dGluZyB0aGUgSS9PIEJhc2UgQWRkcmVzcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZmlyc3Qgc2l4IHN3aXRjaGVzIGluIHN3aXRjaCBncm91cCBTVzEgYXJlIHVzZWQgdG8gc2VsZWN0IG9uZQorb2YgMzIgcG9zc2libGUgSS9PIEJhc2UgYWRkcmVzc2VzIHVzaW5nIHRoZSBmb2xsb3dpbmcgdGFibGUKKworICAgU3dpdGNoICAgICAgIHwgSGV4IEkvTworICAgNiA1ICA0IDMgMiAxIHwgQWRkcmVzcworICAgLS0tLS0tLS0tLS0tLXwtLS0tLS0tLQorICAgMCAxICAwIDAgMCAwIHwgIDIwMAorICAgMCAxICAwIDAgMCAxIHwgIDIxMAorICAgMCAxICAwIDAgMSAwIHwgIDIyMAorICAgMCAxICAwIDAgMSAxIHwgIDIzMAorICAgMCAxICAwIDEgMCAwIHwgIDI0MAorICAgMCAxICAwIDEgMCAxIHwgIDI1MAorICAgMCAxICAwIDEgMSAwIHwgIDI2MAorICAgMCAxICAwIDEgMSAxIHwgIDI3MAorICAgMCAxICAxIDAgMCAwIHwgIDI4MAorICAgMCAxICAxIDAgMCAxIHwgIDI5MAorICAgMCAxICAxIDAgMSAwIHwgIDJBMAorICAgMCAxICAxIDAgMSAxIHwgIDJCMAorICAgMCAxICAxIDEgMCAwIHwgIDJDMAorICAgMCAxICAxIDEgMCAxIHwgIDJEMAorICAgMCAxICAxIDEgMSAwIHwgIDJFMCAoTWFudWZhY3R1cmVyJ3MgZGVmYXVsdCkKKyAgIDAgMSAgMSAxIDEgMSB8ICAyRjAKKyAgIDEgMSAgMCAwIDAgMCB8ICAzMDAKKyAgIDEgMSAgMCAwIDAgMSB8ICAzMTAKKyAgIDEgMSAgMCAwIDEgMCB8ICAzMjAKKyAgIDEgMSAgMCAwIDEgMSB8ICAzMzAKKyAgIDEgMSAgMCAxIDAgMCB8ICAzNDAKKyAgIDEgMSAgMCAxIDAgMSB8ICAzNTAKKyAgIDEgMSAgMCAxIDEgMCB8ICAzNjAKKyAgIDEgMSAgMCAxIDEgMSB8ICAzNzAKKyAgIDEgMSAgMSAwIDAgMCB8ICAzODAKKyAgIDEgMSAgMSAwIDAgMSB8ICAzOTAKKyAgIDEgMSAgMSAwIDEgMCB8ICAzQTAKKyAgIDEgMSAgMSAwIDEgMSB8ICAzQjAKKyAgIDEgMSAgMSAxIDAgMCB8ICAzQzAKKyAgIDEgMSAgMSAxIDAgMSB8ICAzRDAKKyAgIDEgMSAgMSAxIDEgMCB8ICAzRTAKKyAgIDEgMSAgMSAxIDEgMSB8ICAzRjAKKworCitTZXR0aW5nIHRoZSBJbnRlcnJ1cHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTd2l0Y2hlcyBzZXZlbiB0aHJvdWdoIHRlbiBvZiBzd2l0Y2ggZ3JvdXAgU1cxIGFyZSB1c2VkIHRvIHNlbGVjdCB0aGUgCitpbnRlcnJ1cHQgbGV2ZWwuIFRoZSBpbnRlcnJ1cHQgbGV2ZWwgaXMgYmluYXJ5IGNvZGVkLCBzbyBzZWxlY3Rpb25zIAorZnJvbSAwIHRvIDE1IHdvdWxkIGJlIHBvc3NpYmxlLCBidXQgb25seSB0aGUgZm9sbG93aW5nIGVpZ2h0IHZhbHVlcyB3aWxsCitiZSBzdXBwb3J0ZWQ6IDMsIDQsIDUsIDcsIDksIDEwLCAxMSwgMTIuCisKKyAgIFN3aXRjaCAgIHwgSVJRCisgICAxMCA5IDggNyB8IAorICAgLS0tLS0tLS0tfC0tLS0tLS0tIAorICAgIDAgMCAxIDEgfCAgMworICAgIDAgMSAwIDAgfCAgNAorICAgIDAgMSAwIDEgfCAgNQorICAgIDAgMSAxIDEgfCAgNworICAgIDEgMCAwIDEgfCAgOSAoPTIpIChkZWZhdWx0KQorICAgIDEgMCAxIDAgfCAxMAorICAgIDEgMCAxIDEgfCAxMQorICAgIDEgMSAwIDAgfCAxMgorCisKK1NldHRpbmcgdGhlIFRpbWVvdXRzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHR3byBqdW1wZXJzIEpQMiAoMS00KSBhcmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHRpbWVvdXQgcGFyYW1ldGVycy4gCitUaGVzZSB0d28ganVtcGVycyBhcmUgbm9ybWFsbHkgbGVmdCBvcGVuLgorUmVmZXIgdG8gdGhlIENPTTkwMjYgRGF0YSBTaGVldCBmb3IgYWx0ZXJuYXRlIGNvbmZpZ3VyYXRpb25zLgorCisKK0NvbmZpZ3VyaW5nIHRoZSBQQzUwMCBmb3IgU3RhciBvciBCdXMgVG9wb2xvZ3kKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHNpbmdsZSBqdW1wZXIgbGFiZWxlZCBKUDYgaXMgdXNlZCB0byBjb25maWd1cmUgdGhlIFBDNTAwIGJvYXJkIGZvciAKK3N0YXIgb3IgYnVzIHRvcG9sb2d5LgorV2hlbiB0aGUganVtcGVyIGlzIGluc3RhbGxlZCwgdGhlIGJvYXJkIG1heSBiZSB1c2VkIGluIGEgc3RhciBuZXR3b3JrLCB3aGVuIAoraXQgaXMgcmVtb3ZlZCwgdGhlIGJvYXJkIGNhbiBiZSB1c2VkIGluIGEgYnVzIHRvcG9sb2d5LgorCisKK0RpYWdub3N0aWMgTEVEcworLS0tLS0tLS0tLS0tLS0tCisKK1R3byBkaWFnbm9zdGljIExFRHMgYXJlIHZpc2libGUgb24gdGhlIHJlYXIgYnJhY2tldCBvZiB0aGUgYm9hcmQuCitUaGUgZ3JlZW4gTEVEIG1vbml0b3JzIHRoZSBuZXR3b3JrIGFjdGl2aXR5OiB0aGUgcmVkIG9uZSBzaG93cyB0aGUKK2JvYXJkIGFjdGl2aXR5OgorCisgR3JlZW4gIHwgU3RhdHVzICAgICAgICAgICAgICAgUmVkICAgICAgfCBTdGF0dXMKKyAtLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0gICAtLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLQorICBvbiAgICB8IG5vcm1hbCBhY3Rpdml0eSAgICAgIGZsYXNoL29uIHwgZGF0YSB0cmFuc2ZlcgorICBibGluayB8IHJlY29uZmlndXJhdGlvbiAgICAgIG9mZiAgICAgIHwgbm8gZGF0YSB0cmFuc2ZlcjsKKyAgb2ZmICAgfCBkZWZlY3RpdmUgYm9hcmQgb3IgICAgICAgICAgICB8IGluY29ycmVjdCBtZW1vcnkgb3IKKyAgICAgICAgfCBub2RlIElEIGlzIHplcm8gICAgICAgICAgICAgICB8IEkvTyBhZGRyZXNzCisKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworKiogU01DICoqCitQQzcxMCAoOC1iaXQgY2FyZCkKKy0tLS0tLS0tLS0tLS0tLS0tLQorICAtIGZyb20gSi5TLiB2YW4gT29zdGVuIDxqdm9vc3RlbkBjb21waWxlci50ZGNuZXQubmw+CisgIAorTm90ZTogdGhpcyBkYXRhIGlzIGdhdGhlcmVkIGJ5IGV4cGVyaW1lbnRpbmcgYW5kIGxvb2tpbmcgYXQgaW5mbyBvZiBvdGhlcgorY2FyZHMuIEhvd2V2ZXIsIEknbSBzdXJlIEkgZ290IDk5JSBvZiB0aGUgc2V0dGluZ3MgcmlnaHQuCisKK1RoZSBTTUM3MTAgY2FyZCByZXNlbWJsZXMgdGhlIFBDMjcwIGNhcmQsIGJ1dCBpcyBtdWNoIG1vcmUgYmFzaWMgKGkuZS4gbm8KK0xFRHMsIFJKMTEgamFja3MsIGV0Yy4pIGFuZCA4IGJpdC4gSGVyZSdzIGEgbGl0dGxlIGRyYXdpbmc6CisKKyAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICAKKyAgIHwgKy0tLS0tLS0tLSsgICstLS0tLS0tLS0rICAgICAgICAgICAgICB8X19fXworICAgfCB8ICAgUzIgICAgfCAgfCAgIFMxICAgIHwgICAgICAgICAgICAgIHwKKyAgIHwgKy0tLS0tLS0tLSsgICstLS0tLS0tLS0rICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgKz09PSsgICAgX18gICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgIHwgUiB8ICAgfCAgfCBYLXRhbCAgICAgICAgICAgICAgICAgIyMjX19fCisgICB8ICB8IE8gfCAgIHxfX3wgICAgICAgICAgICAgICAgICAgICAgIyMjI19fJ3wKKyAgIHwgIHwgTSB8ICAgIHx8ICAgICAgICAgICAgICAgICAgICAgICAgIyMjCisgICB8ICArPT09KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAuLiBKUDEgICArLS0tLS0tLS0tLSsgICAgICAgICAgICAgICB8CisgICB8ICAgLi4gICAgICAgfCBiaWcgY2hpcCB8ICAgICAgICAgICAgICAgfCAgIAorICAgfCAgIC4uICAgICAgIHwgIDkwQzYzICAgfCAgICAgICAgICAgICAgIHwKKyAgIHwgICAuLiAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICB8CisgICB8ICAgLi4gICAgICAgKy0tLS0tLS0tLS0rICAgICAgICAgICAgICAgfAorICAgIC0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLQorICAgICAgICAgICB8fHx8fHx8fHx8fHx8fHx8fHx8fHwKKworVGhlIHJvdyBvZiBqdW1wZXJzIGF0IEpQMSBhY3R1YWxseSBjb25zaXN0cyBvZiA4IGp1bXBlcnMsIChzb21ldGltZXMKK2xhYmVsbGVkKSB0aGUgc2FtZSBhcyBvbiB0aGUgUEMyNzAsIGZyb20gdG9wIHRvIGJvdHRvbTogRVhUMiwgRVhUMSwgUk9NLAorSVJRNywgSVJRNSwgSVJRNCwgSVJRMywgSVJRMiAoZ2VlLCB3b25kZXIgd2hhdCB0aGV5IHdvdWxkIGRvPyA6LSkgKQorCitTMSBhbmQgUzIgcGVyZm9ybSB0aGUgc2FtZSBmdW5jdGlvbiBhcyBvbiB0aGUgUEMyNzAsIG9ubHkgdGhlaXIgbnVtYmVycworYXJlIHN3YXBwZWQgKFMxIGlzIHRoZSBub2RlYWRkcmVzcywgUzIgc2V0cyBJTy0gYW5kIFJBTS1hZGRyZXNzKS4KKworSSBrbm93IGl0IHdvcmtzIHdoZW4gY29ubmVjdGVkIHRvIGEgUEMxMTAgdHlwZSBBUkNuZXQgYm9hcmQuCisKKwkKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyoqIFBvc3NpYmx5IFNNQyAqKgorTENTLTg4MzAoLVQpICg4IGFuZCAxNi1iaXQgY2FyZHMpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgLSBmcm9tIE1hdGhpYXMgS2F0emVyIDxta2F0emVyQEhSWi5VbmktQmllbGVmZWxkLkRFPgorICAtIE1hcmVrIE1pY2hhbGtpZXdpY3ogPG1hcmVrbUBpMTdsaW51eGIuaXN0cy5wd3Iud3JvYy5wbD4gc2F5cyB0aGUKKyAgICBMQ1MtODgzMCBpcyBzbGlnaHRseSBkaWZmZXJlbnQgZnJvbSBMQ1MtODgzMC1ULiAgVGhlc2UgYXJlIDggYml0LCBCVVMKKyAgICBvbmx5ICh0aGUgSlAwIGp1bXBlciBpcyBoYXJkd2lyZWQpLCBhbmQgQk5DIG9ubHkuCisJCitUaGlzIGlzIGEgTENTLTg4MzAtVCBtYWRlIGJ5IFNNQywgSSB0aGluayAoJ1NNQycgb25seSBhcHBlYXJzIG9uIG9uZSBQTENDLAorbm93aGVyZSBlbHNlLCBub3QgZXZlbiBvbiB0aGUgZmV3IFhlcm94ZWQgc2hlZXRzIGZyb20gdGhlIG1hbnVhbCkuCisKK1NNQyBBUkNuZXQgQm9hcmQgVHlwZSBMQ1MtODgzMC1UCisKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICB8ICAgICAgICAgICAgICBKUDMgODggIDggSlAyICAgICAgICAgfAorICB8ICAgICAgICMjIyMjICAgICAgfCBcICAgICAgICAgICAgICAgfAorICB8ICAgICAgICMjIyMjICAgIEVUMSBFVDIgICAgICAgICAgIyMjfAorICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCAgIyMjfAorICB8ICBVMyAgIFNXIDEgICAgICAgICAgICAgICAgICBKUDAgIyMjfCAgUGhvbmUgSmFja3MKKyAgfCAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjI3wKKyAgfCB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgfCB8ICB8ICAgU1cyICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgfCB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgfCB8ICB8ICAjIyMjIyAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgfCAgLS0gICAjIyMjIyAgICAgICAgICAgICAgICAgICAgICAgIyMjIyAgQk5DIENvbm5lY3RvciAKKyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjIworICB8ICAgODg4ODg4IEpQMSAgICAgICAgICAgICAgICAgICAgICAgfAorICB8ICAgMjM0NTY3ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0tCisgICAgIHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fAorICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitTVzE6IERJUC1Td2l0Y2hlcyBmb3IgU3RhdGlvbiBBZGRyZXNzCitTVzI6IERJUC1Td2l0Y2hlcyBmb3IgTWVtb3J5IEJhc2UgYW5kIEkvTyBCYXNlIGFkZHJlc3NlcworCitKUDA6IElmIGNsb3NlZCwgaW50ZXJuYWwgdGVybWluYXRpb24gb24gKGRlZmF1bHQgb3BlbikKK0pQMTogSVJRIEp1bXBlcnMKK0pQMjogQm9vdC1ST00gZW5hYmxlZCBpZiBjbG9zZWQKK0pQMzogSnVtcGVycyBmb3IgcmVzcG9uc2UgdGltZW91dAorIAorVTM6IEJvb3QtUk9NIFNvY2tldCAgICAgICAgICAKKworCitFVDEgRVQyICAgICBSZXNwb25zZSBUaW1lICAgICBJZGxlIFRpbWUgICAgUmVjb25maWd1cmF0aW9uIFRpbWUKKworICAgICAgICAgICAgICAgNzggICAgICAgICAgICAgICAgODYgICAgICAgICAgICAgICA4NDAKKyBYICAgICAgICAgICAgMjg1ICAgICAgICAgICAgICAgMzE2ICAgICAgICAgICAgICAxNjgwCisgICAgIFggICAgICAgIDU2MyAgICAgICAgICAgICAgIDYyNCAgICAgICAgICAgICAgMTY4MAorIFggICBYICAgICAgIDExMzAgICAgICAgICAgICAgIDEyMzcgICAgICAgICAgICAgIDE2ODAKKworKFggbWVhbnMgY2xvc2VkIGp1bXBlcikKKworKERJUC1Td2l0Y2ggZG93bndhcmRzIG1lYW5zICIwIikKKworVGhlIHN0YXRpb24gYWRkcmVzcyBpcyBiaW5hcnktY29kZWQgd2l0aCBTVzEuCisKK1RoZSBJL08gYmFzZSBhZGRyZXNzIGlzIGNvZGVkIHdpdGggRElQLVN3aXRjaGVzIDYsNyBhbmQgOCBvZiBTVzI6CisKK1N3aXRjaGVzICAgICAgICBCYXNlCis2NzggICAgICAgICAgICAgQWRkcmVzcworMDAwCQkyNjAtMjZmCisxMDAJCTI5MC0yOWYKKzAxMAkJMmUwLTJlZgorMTEwCQkyZjAtMmZmCiswMDEJCTMwMC0zMGYKKzEwMQkJMzUwLTM1ZgorMDExCQkzODAtMzhmCisxMTEgCQkzZTAtM2VmCisKKworRElQIFN3aXRjaGVzIDEtNSBvZiBTVzIgZW5jb2RlIHRoZSBSQU0gYW5kIFJPTSBBZGRyZXNzIFJhbmdlOgorCitTd2l0Y2hlcyAgICAgICAgUkFNICAgICAgICAgICBST00KKzEyMzQ1ICAgICAgICAgICBBZGRyZXNzIFJhbmdlICBBZGRyZXNzIFJhbmdlCiswMDAwMAkJQzowMDAwLUM6MDdmZglDOjIwMDAtQzozZmZmCisxMDAwMAkJQzowODAwLUM6MGZmZgorMDEwMDAJCUM6MTAwMC1DOjE3ZmYKKzExMDAwCQlDOjE4MDAtQzoxZmZmCiswMDEwMAkJQzo0MDAwLUM6NDdmZglDOjYwMDAtQzo3ZmZmCisxMDEwMAkJQzo0ODAwLUM6NGZmZgorMDExMDAJCUM6NTAwMC1DOjU3ZmYgCisxMTEwMAkJQzo1ODAwLUM6NWZmZgorMDAwMTAJCUM6QzAwMC1DOkM3ZmYJQzpFMDAwLUM6ZmZmZgorMTAwMTAJCUM6QzgwMC1DOkNmZmYKKzAxMDEwCQlDOkQwMDAtQzpEN2ZmCisxMTAxMAkJQzpEODAwLUM6RGZmZgorMDAxMTAJCUQ6MDAwMC1EOjA3ZmYJRDoyMDAwLUQ6M2ZmZgorMTAxMTAJCUQ6MDgwMC1EOjBmZmYKKzAxMTEwCQlEOjEwMDAtRDoxN2ZmCisxMTExMAkJRDoxODAwLUQ6MWZmZgorMDAwMDEJCUQ6NDAwMC1EOjQ3ZmYJRDo2MDAwLUQ6N2ZmZgorMTAwMDEJCUQ6NDgwMC1EOjRmZmYKKzAxMDAxCQlEOjUwMDAtRDo1N2ZmCisxMTAwMQkJRDo1ODAwLUQ6NWZmZgorMDAxMDEJCUQ6ODAwMC1EOjg3ZmYJRDpBMDAwLUQ6YmZmZgorMTAxMDEJCUQ6ODgwMC1EOjhmZmYKKzAxMTAxCQlEOjkwMDAtRDo5N2ZmCisxMTEwMQkJRDo5ODAwLUQ6OWZmZiAKKzAwMDExCQlEOkMwMDAtRDpjN2ZmCUQ6RTAwMC1EOmZmZmYKKzEwMDExCQlEOkM4MDAtRDpjZmZmCiswMTAxMQkJRDpEMDAwLUQ6ZDdmZgorMTEwMTEJCUQ6RDgwMC1EOmRmZmYKKzAwMTExCQlFOjAwMDAtRTowN2ZmCUU6MjAwMC1FOjNmZmYKKzEwMTExCQlFOjA4MDAtRTowZmZmCiswMTExMQkJRToxMDAwLUU6MTdmZgorMTExMTEJCUU6MTgwMC1FOjFmZmYKKworCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisqKiBQdXJlRGF0YSBDb3JwICoqCitQREk1MDcgKDgtYml0IGNhcmQpCistLS0tLS0tLS0tLS0tLS0tLS0tLQorICAtIGZyb20gTWFyayBSZWpob24gPG1kcmVqaG9uQG1hZ2kuY29tPiAoc2xpZ2h0IG1vZGlmaWNhdGlvbnMgYnkgQXZlcnkpCisgIC0gQXZlcnkncyBub3RlOiBJIHRoaW5rIFBESTUwOCBjYXJkcyAoYnV0IGRlZmluaXRlbHkgTk9UIFBESTUwOFBsdXMgY2FyZHMpCisgICAgYXJlIG1vc3RseSB0aGUgc2FtZSBhcyB0aGlzLiAgUERJNTA4UGx1cyBjYXJkcyBhcHBlYXIgdG8gYmUgbWFpbmx5CisgICAgc29mdHdhcmUtY29uZmlndXJlZC4KKworSnVtcGVyczoKKwlUaGVyZSBpcyBhIGp1bXBlciBhcnJheSBhdCB0aGUgYm90dG9tIG9mIHRoZSBjYXJkLCBuZWFyIHRoZSBlZGdlCisgICAgICAgIGNvbm5lY3Rvci4gIFRoaXMgYXJyYXkgaXMgbGFiZWxsZWQgSjEuICBUaGV5IGNvbnRyb2wgdGhlIElSUXMgYW5kCisgICAgICAgIHNvbWV0aGluZyBlbHNlLiAgUHV0IG9ubHkgb25lIGp1bXBlciBvbiB0aGUgSVJRIHBpbnMuCisKKwlFVFMxLCBFVFMyIGFyZSBmb3IgdGltaW5nIG9uIHZlcnkgbG9uZyBkaXN0YW5jZSBuZXR3b3Jrcy4gIFNlZSB0aGUKKwltb3JlIGdlbmVyYWwgaW5mb3JtYXRpb24gbmVhciB0aGUgdG9wIG9mIHRoaXMgZmlsZS4KKworCVRoZXJlIGlzIGEgSjIganVtcGVyIG9uIHR3byBwaW5zLiAgQSBqdW1wZXIgc2hvdWxkIGJlIHB1dCBvbiB0aGVtLAorICAgICAgICBzaW5jZSBpdCB3YXMgYWxyZWFkeSB0aGVyZSB3aGVuIEkgZ290IHRoZSBjYXJkLiAgSSBkb24ndCBrbm93IHdoYXQKKyAgICAgICAgdGhpcyBqdW1wZXIgaXMgZm9yIHRob3VnaC4KKworCVRoZXJlIGlzIGEgdHdvLWp1bXBlciBhcnJheSBmb3IgSjMuICBJIGRvbid0IGtub3cgd2hhdCBpdCBpcyBmb3IsCisgICAgICAgIGJ1dCB0aGVyZSB3ZXJlIGFscmVhZHkgdHdvIGp1bXBlcnMgb24gaXQgd2hlbiBJIGdvdCB0aGUgY2FyZC4gIEl0J3MKKyAgICAgICAgYSBzaXggcGluIGdyaWQgaW4gYSB0d28tYnktdGhyZWUgZmFzaGlvbi4gIFRoZSBqdW1wZXJzIHdlcmUKKyAgICAgICAgY29uZmlndXJlZCBhcyBmb2xsb3dzOgorCisJICAgLi0tLS0tLS0uCisJIG8gfCBvICAgbyB8CisJICAgOi0tLS0tLS06ICAgIC0tLS0tLT4gQWNjZXNzaWJsZSBlbmQgb2YgY2FyZCB3aXRoIGNvbm5lY3RvcnMKKwkgbyB8IG8gICBvIHwgICAgICAgICAgICAgaW4gdGhpcyBkaXJlY3Rpb24gLS0tLS0tLT4KKwkgICBgLS0tLS0tLScKKworQ2FybCBkZSBCaWxseSA8Q0FSTEBjYXJhaW5mby5jb20+IGV4cGxhaW5zIEozIGFuZCBKNDoKKworCUozIERpYWdyYW06CisKKyAgICAgICAgICAgLi0tLS0tLS0uCisgICAgICAgICBvIHwgbyAgIG8gfAorICAgICAgICAgICA6LS0tLS0tLTogICAgVFdJU1QgVGVjaG5vbG9neQorICAgICAgICAgbyB8IG8gICBvIHwKKyAgICAgICAgICAgYC0tLS0tLS0nCisgICAgICAgICAgIC4tLS0tLS0tLgorICAgICAgICAgICB8IG8gICBvIHwgbworICAgICAgICAgICA6LS0tLS0tLTogICAgQ09BWCBUZWNobm9sb2d5CisgICAgICAgICAgIHwgbyAgIG8gfCBvCisgICAgICAgICAgIGAtLS0tLS0tJworCisgIC0gSWYgdXNpbmcgY29heCBjYWJsZSBpbiBhIGJ1cyB0b3BvbG9neSB0aGUgSjQganVtcGVyIG11c3QgYmUgcmVtb3ZlZDsKKyAgICBwbGFjZSBpdCBvbiBvbmUgcGluLgorCisgIC0gSWYgdXNpbmcgYnVzIHRvcG9sb2d5IHdpdGggdHdpc3RlZCBwYWlyIHdpcmluZyBtb3ZlIHRoZSBKMyAKKyAgICBqdW1wZXJzIHNvIHRoZXkgY29ubmVjdCB0aGUgbWlkZGxlIHBpbiBhbmQgdGhlIHBpbnMgY2xvc2VzdCB0byB0aGUgUkoxMQorICAgIENvbm5lY3RvcnMuICBBbHNvIHRoZSBKNCBqdW1wZXIgbXVzdCBiZSByZW1vdmVkOyBwbGFjZSBpdCBvbiBvbmUgcGluIG9mCisgICAgSjQganVtcGVyIGZvciBzdG9yYWdlLgorCisgIC0gSWYgdXNpbmcgIHN0YXIgdG9wb2xvZ3kgd2l0aCB0d2lzdGVkIHBhaXIgd2lyaW5nIG1vdmUgdGhlIEozIAorICAgIGp1bXBlcnMgc28gdGhleSBjb25uZWN0IHRoZSBtaWRkbGUgcGluIGFuZCB0aGUgcGlucyBjbG9zZXN0IHRvIHRoZSBSSjExCisgICAgY29ubmVjdG9ycy4KKworCitESVAgU3dpdGNoZXM6CisKKwlUaGUgRElQIHN3aXRjaGVzIGFjY2Vzc2libGUgb24gdGhlIGFjY2Vzc2libGUgZW5kIG9mIHRoZSBjYXJkIHdoaWxlCisgICAgICAgIGl0IGlzIGluc3RhbGxlZCwgaXMgdXNlZCB0byBzZXQgdGhlIEFSQ25ldCBhZGRyZXNzLiAgVGhlcmUgYXJlIDgKKyAgICAgICAgc3dpdGNoZXMuICBVc2UgYW4gYWRkcmVzcyBmcm9tIDEgdG8gMjU0LgorCisJU3dpdGNoIE5vLgorCTEyMzQ1Njc4CUFSQ25ldCBhZGRyZXNzCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkwMDAwMDAwMAlGRiAgCShEb24ndCB1c2UgdGhpcyEpCisJMDAwMDAwMDEJRkUKKwkwMDAwMDAxMAlGRAorCS4uLi4KKwkxMTExMTEwMQkyCQorCTExMTExMTEwCTEKKwkxMTExMTExMQkwCShEb24ndCB1c2UgdGhpcyEpCisKKwlUaGVyZSBpcyBhbm90aGVyIGFycmF5IG9mIGVpZ2h0IERJUCBzd2l0Y2hlcyBhdCB0aGUgdG9wIG9mIHRoZQorICAgICAgICBjYXJkLiAgVGhlcmUgYXJlIGZpdmUgbGFiZWxsZWQgTVMwLU1TNCB3aGljaCBzZWVtIHRvIGNvbnRyb2wgdGhlCisgICAgICAgIG1lbW9yeSBhZGRyZXNzLCBhbmQgYW5vdGhlciB0aHJlZSBsYWJlbGxlZCBJTzAtSU8yIHdoaWNoIHNlZW0gdG8KKyAgICAgICAgY29udHJvbCB0aGUgYmFzZSBJL08gYWRkcmVzcyBvZiB0aGUgY2FyZC4KKworCVRoaXMgd2FzIGRpZmZpY3VsdCB0byB0ZXN0IGJ5IHRyaWFsIGFuZCBlcnJvciwgYW5kIHRoZSBJL08gYWRkcmVzc2VzCisgICAgICAgIGFyZSBpbiBhIHdlaXJkIG9yZGVyLiAgVGhpcyB3YXMgdGVzdGVkIGJ5IHNldHRpbmcgdGhlIERJUCBzd2l0Y2hlcywKKyAgICAgICAgcmVib290aW5nIHRoZSBjb21wdXRlciwgYW5kIGF0dGVtcHRpbmcgdG8gbG9hZCBBUkNFVEhFUiBhdCB2YXJpb3VzCisgICAgICAgIGFkZHJlc3NlcyAobW9zdGx5IGJldHdlZW4gMHgyMDAgYW5kIDB4NDAwKS4gIFRoZSBhZGRyZXNzIHRoYXQgY2F1c2VkCisgICAgICAgIHRoZSByZWQgdHJhbnNtaXQgTEVEIHRvIGJsaW5rLCBpcyB0aGUgb25lIHRoYXQgSSB0aG91Z2h0IHdvcmtzLgorCisJQWxzbywgdGhlIGFkZHJlc3MgMHgzRDAgc2VlbSB0byBoYXZlIGEgc3BlY2lhbCBtZWFuaW5nLCBzaW5jZSB0aGUKKyAgICAgICAgQVJDRVRIRVIgcGFja2V0IGRyaXZlciBsb2FkZWQgZmluZSwgYnV0IHdpdGhvdXQgdGhlIHJlZCBMRUQKKyAgICAgICAgYmxpbmtpbmcuICBJIGRvbid0IGtub3cgd2hhdCAweDNEMCBpcyBmb3IgdGhvdWdoLiAgSSByZWNvbW1lbmQgdXNpbmcKKyAgICAgICAgYW4gYWRkcmVzcyBvZiAweDMwMCBzaW5jZSBXaW5kb3dzIG1heSBub3QgbGlrZSBhZGRyZXNzZXMgYmVsb3cKKyAgICAgICAgMHgzMDAuCisKKwlJTyBTd2l0Y2ggTm8uCisJMjEwICAgICAgICAgICAgIEkvTyBhZGRyZXNzCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCTExMSAgICAgICAgICAgICAweDI2MAorCTExMCAgICAgICAgICAgICAweDI5MAorCTEwMSAgICAgICAgICAgICAweDJFMAorCTEwMCAgICAgICAgICAgICAweDJGMAorCTAxMSAgICAgICAgICAgICAweDMwMAorCTAxMCAgICAgICAgICAgICAweDM1MAorCTAwMSAgICAgICAgICAgICAweDM4MAorCTAwMCAgICAgICAgICAgICAweDNFMAorCisJVGhlIG1lbW9yeSBzd2l0Y2hlcyBzZXQgYSByZXNlcnZlZCBhZGRyZXNzIHNwYWNlIG9mIDB4MTAwMCBieXRlcworICAgICAgICAoMHgxMDAgc2VnbWVudCB1bml0cywgb3IgNGspLiAgRm9yIGV4YW1wbGUgaWYgSSBzZXQgYW4gYWRkcmVzcyBvZgorICAgICAgICAweEQwMDAsIGl0IHdpbGwgdXNlIHVwIGFkZHJlc3NlcyAweEQwMDAgdG8gMHhEMTAwLgorCisJVGhlIG1lbW9yeSBzd2l0Y2hlcyB3ZXJlIHRlc3RlZCBieSBib290aW5nIHVzaW5nIFFFTU0zODYgc3RlYWx0aCwKKyAgICAgICAgYW5kIHVzaW5nIExPQURISSB0byBzZWUgd2hhdCBhZGRyZXNzIGF1dG9tYXRpY2FsbHkgYmVjYW1lIGV4Y2x1ZGVkCisgICAgICAgIGZyb20gdGhlIHVwcGVyIG1lbW9yeSByZWdpb25zLCBhbmQgdGhlbiBhdHRlbXB0aW5nIHRvIGxvYWQgQVJDRVRIRVIKKyAgICAgICAgdXNpbmcgdGhlc2UgYWRkcmVzc2VzLgorCisJSSByZWNvbW1lbmQgdXNpbmcgYW4gQVJDbmV0IG1lbW9yeSBhZGRyZXNzIG9mIDB4RDAwMCwgYW5kIHB1dHRpbmcKKyAgICAgICAgdGhlIEVNUyBwYWdlIGZyYW1lIGF0IDB4QzAwMCB3aGlsZSB1c2luZyBRRU1NIHN0ZWFsdGggbW9kZS4gIFRoYXQKKyAgICAgICAgd2F5LCB5b3UgZ2V0IGNvbnRpZ3VvdXMgaGlnaCBtZW1vcnkgZnJvbSAweEQxMDAgYWxtb3N0IGFsbCB0aGUgd2F5CisgICAgICAgIHRoZSBlbmQgb2YgdGhlIG1lZ2FieXRlLgorCisJTWVtb3J5IFN3aXRjaCAwIChNUzApIGRpZG4ndCBzZWVtIHRvIHdvcmsgcHJvcGVybHkgd2hlbiBzZXQgdG8gT0ZGCisgICAgICAgIG9uIG15IGNhcmQuICBJdCBjb3VsZCBiZSBtYWxmdW5jdGlvbmluZyBvbiBteSBjYXJkLiAgRXhwZXJpbWVudCB3aXRoCisgICAgICAgIGl0IE9OIGZpcnN0LCBhbmQgaWYgaXQgZG9lc24ndCB3b3JrLCBzZXQgaXQgdG8gT0ZGLiAgKEl0IG1heSBiZSBhCisgICAgICAgIG1vZGlmaWVyIGZvciB0aGUgMHgyMDAgYml0PykKKworCU1TIFN3aXRjaCBOby4KKwk0MzIxMCAgICAgICAgICAgTWVtb3J5IGFkZHJlc3MKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCTAwMDAxICAgICAgICAgICAweEUxMDAgIChndWVzc2VkIC0gd2FzIG5vdCBkZXRlY3RlZCBieSBRRU1NKQorCTAwMDExICAgICAgICAgICAweEUwMDAgIChndWVzc2VkIC0gd2FzIG5vdCBkZXRlY3RlZCBieSBRRU1NKQorCTAwMTAxICAgICAgICAgICAweEREMDAKKwkwMDExMSAgICAgICAgICAgMHhEQzAwCisJMDEwMDEgICAgICAgICAgIDB4RDkwMAorCTAxMDExICAgICAgICAgICAweEQ4MDAKKwkwMTEwMSAgICAgICAgICAgMHhENTAwCisJMDExMTEgICAgICAgICAgIDB4RDQwMAorCTEwMDAxICAgICAgICAgICAweEQxMDAKKwkxMDAxMSAgICAgICAgICAgMHhEMDAwCisJMTAxMDEgICAgICAgICAgIDB4Q0QwMAorCTEwMTExICAgICAgICAgICAweENDMDAKKwkxMTAwMSAgICAgICAgICAgMHhDOTAwIChndWVzc2VkIC0gY3Jhc2hlcyB0ZXN0ZWQgc3lzdGVtKQorCTExMDExICAgICAgICAgICAweEM4MDAgKGd1ZXNzZWQgLSBjcmFzaGVzIHRlc3RlZCBzeXN0ZW0pCisJMTExMDEgICAgICAgICAgIDB4QzUwMCAoZ3Vlc3NlZCAtIGNyYXNoZXMgdGVzdGVkIHN5c3RlbSkKKwkxMTExMSAgICAgICAgICAgMHhDNDAwIChndWVzc2VkIC0gY3Jhc2hlcyB0ZXN0ZWQgc3lzdGVtKQorCQorCQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworKiogQ05ldCBUZWNobm9sb2d5IEluYy4gKioKKzEyMCBTZXJpZXMgKDgtYml0IGNhcmRzKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIC0gZnJvbSBKdWVyZ2VuIFNlaWZlcnQgPHNlaWZlcnRAaHR3bS5kZT4KKworCitDTkVUIFRFQ0hOT0xPR1kgSU5DLiAoQ05ldCkgQVJDTkVUIDEyMEEgU0VSSUVTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgZGVzY3JpcHRpb24gaGFzIGJlZW4gd3JpdHRlbiBieSBKdWVyZ2VuIFNlaWZlcnQgPHNlaWZlcnRAaHR3bS5kZT4KK3VzaW5nIGluZm9ybWF0aW9uIGZyb20gdGhlIGZvbGxvd2luZyBPcmlnaW5hbCBDTmV0IE1hbnVhbCAKKworICAgICAgICAgICAgICAiQVJDTkVUCisgICAgICAgICAgICBVU0VSJ1MgTUFOVUFMIAorICAgICAgICAgICAgICAgIGZvcgorICAgICAgICAgICAgICAgQ04xMjBBCisgICAgICAgICAgICAgICBDTjEyMEFCCisgICAgICAgICAgICAgICBDTjEyMFRQCisgICAgICAgICAgICAgICBDTjEyMFNUCisgICAgICAgICAgICAgICBDTjEyMFNCVAorICAgICAgICAgICAgIFAvTjoxMi0wMS0wMDA3CisgICAgICAgICAgICAgUmV2aXNpb24gMy4wMCIKKworQVJDTkVUIGlzIGEgcmVnaXN0ZXJlZCB0cmFkZW1hcmsgb2YgdGhlIERhdGFwb2ludCBDb3Jwb3JhdGlvbgorCitQL04gMTIwQSAgIEFSQ05FVCA4IGJpdCBYVC9BVCBTdGFyCitQL04gMTIwQUIgIEFSQ05FVCA4IGJpdCBYVC9BVCBCdXMKK1AvTiAxMjBUUCAgQVJDTkVUIDggYml0IFhUL0FUIFR3aXN0ZWQgUGFpcgorUC9OIDEyMFNUICBBUkNORVQgOCBiaXQgWFQvQVQgU3RhciwgVHdpc3RlZCBQYWlyCitQL04gMTIwU0JUIEFSQ05FVCA4IGJpdCBYVC9BVCBTdGFyLCBCdXMsIFR3aXN0ZWQgUGFpcgorCisgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX3wKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEVEIHxfX198CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19ffAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE4gfCAgIHwgSUQ3CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyB8ICAgfCBJRDYKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkIHwgUyB8IElENQorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgfCBXIHwgSUQ0CisgICB8ICAgICAgICAgICAgICAgICAgICAgX19fX19fX19fX19fX19fX19fXyAgICAgICAgICAgICAgICAgICAgQSB8IDIgfCBJRDMKKyAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICBkIHwgICB8IElEMgorICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8ICAxIDIgMyA0IDUgNiA3IDggIGQgfCAgIHwgSUQxCisgICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgX19fX19fX19fX19fX19fX18gciB8X19ffCBJRDAKKyAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICA5MEM2NSAgICAgICAgfHwgICAgICAgU1cxICAgICAgIHwgIF9fX198CisgICB8ICBKUCA4IDcgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHx8X19fX19fX19fX19fX19fX198IHwgICAgfAorICAgfCAgICB8b3xvfCAgSlAxICAgICAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8IEoyIHwKKyAgIHwgICAgfG98b3wgIHxvb3wgICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIEpQIDEgMSAxICAgfCAgICB8CisgICB8ICAgX19fX19fX19fX19fX18gICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAwIDEgMiAgIHxfX19ffAorICAgfCAgfCAgUFJPTSAgICAgICAgfCAgfF9fX19fX19fX19fX19fX19fX198ICAgICAgICAgICB8b3xvfG98ICBfX19fX3wKKyAgIHwgID4gIFNPQ0tFVCAgICAgIHwgIEpQIDYgNSA0IDMgMiAgICAgICAgICAgICAgICAgICAgfG98b3xvfCB8IEoxICB8CisgICB8ICB8X19fX19fX19fX19fX198ICAgIHxvfG98b3xvfG98ICAgICAgICAgICAgICAgICAgIHxvfG98b3wgfF9fX19ffAorICAgfF9fX19fICAgICAgICAgICAgICAgICB8b3xvfG98b3xvfCAgICAgICAgICAgICAgICAgICBfX19fX19fX19fX19fX3wKKyAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffAorCitMZWdlbmQ6CisKKzkwQzY1ICAgICAgIEFSQ05FVCBQcm9iZQorUzEgIDEtNTogICAgQmFzZSBNZW1vcnkgQWRkcmVzcyBTZWxlY3QKKyAgICA2LTg6ICAgIEJhc2UgSS9PIEFkZHJlc3MgU2VsZWN0CitTMiAgMS04OiAgICBOb2RlIElEIFNlbGVjdCAoSUQwLUlENykKK0pQMSAgICAgUk9NIEVuYWJsZSBTZWxlY3QKK0pQMiAgICAgSVJRMgorSlAzICAgICBJUlEzCitKUDQgICAgIElSUTQKK0pQNSAgICAgSVJRNQorSlA2ICAgICBJUlE3CitKUDcvSlA4ICAgICBFVDEsIEVUMiBUaW1lb3V0IFBhcmFtZXRlcnMKK0pQMTAvSlAxMSAgIENvYXggLyBUd2lzdGVkIFBhaXIgU2VsZWN0ICAoQ04xMjBTVC9TQlQgb25seSkKK0pQMTIgICAgICAgIFRlcm1pbmF0b3IgU2VsZWN0ICAgICAgIChDTjEyMEFCL1NUL1NCVCBvbmx5KQorSjEgICAgICBCTkMgUkc2Mi9VIENvbm5lY3RvciAgICAgICAgKGFsbCBleGNlcHQgQ04xMjBUUCkKK0oyICAgICAgVHdvIDYtcG9zaXRpb24gVGVsZXBob25lIEphY2sgICAoQ04xMjBUUC9TVC9TQlQgb25seSkKKworU2V0dGluZyBvbmUgb2YgdGhlIHN3aXRjaGVzIHRvIE9mZiBtZWFucyAiMSIsIE9uIG1lYW5zICIwIi4KKworCitTZXR0aW5nIHRoZSBOb2RlIElECistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBlaWdodCBzd2l0Y2hlcyBpbiBTVzIgYXJlIHVzZWQgdG8gc2V0IHRoZSBub2RlIElELiBFYWNoIG5vZGUgYXR0YWNoZWQKK3RvIHRoZSBuZXR3b3JrIG11c3QgaGF2ZSBhbiB1bmlxdWUgbm9kZSBJRCB3aGljaCBtdXN0IGJlIGRpZmZlcmVudCBmcm9tIDAuCitTd2l0Y2ggMSAoSUQwKSBzZXJ2ZXMgYXMgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCAoTFNCKS4KKworVGhlIG5vZGUgSUQgaXMgdGhlIHN1bSBvZiB0aGUgdmFsdWVzIG9mIGFsbCBzd2l0Y2hlcyBzZXQgdG8gIjEiICAKK1RoZXNlIHZhbHVlcyBhcmU6CisKKyAgIFN3aXRjaCB8IExhYmVsIHwgVmFsdWUKKyAgIC0tLS0tLS18LS0tLS0tLXwtLS0tLS0tCisgICAgIDEgICAgfCBJRDAgICB8ICAgMQorICAgICAyICAgIHwgSUQxICAgfCAgIDIKKyAgICAgMyAgICB8IElEMiAgIHwgICA0CisgICAgIDQgICAgfCBJRDMgICB8ICAgOAorICAgICA1ICAgIHwgSUQ0ICAgfCAgMTYKKyAgICAgNiAgICB8IElENSAgIHwgIDMyCisgICAgIDcgICAgfCBJRDYgICB8ICA2NAorICAgICA4ICAgIHwgSUQ3ICAgfCAxMjgKKworU29tZSBFeGFtcGxlczoKKworICAgIFN3aXRjaCAgICAgICAgIHwgSGV4ICAgICB8IERlY2ltYWwgCisgICA4IDcgNiA1IDQgMyAyIDEgfCBOb2RlIElEIHwgTm9kZSBJRAorICAgLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tCisgICAwIDAgMCAwIDAgMCAwIDAgfCAgICBub3QgYWxsb3dlZAorICAgMCAwIDAgMCAwIDAgMCAxIHwgICAgMSAgICB8ICAgIDEgCisgICAwIDAgMCAwIDAgMCAxIDAgfCAgICAyICAgIHwgICAgMgorICAgMCAwIDAgMCAwIDAgMSAxIHwgICAgMyAgICB8ICAgIDMKKyAgICAgICAuIC4gLiAgICAgICB8ICAgICAgICAgfAorICAgMCAxIDAgMSAwIDEgMCAxIHwgICA1NSAgICB8ICAgODUKKyAgICAgICAuIC4gLiAgICAgICB8ICAgICAgICAgfAorICAgMSAwIDEgMCAxIDAgMSAwIHwgICBBQSAgICB8ICAxNzAKKyAgICAgICAuIC4gLiAgICAgICB8ICAgICAgICAgfCAgCisgICAxIDEgMSAxIDEgMSAwIDEgfCAgIEZEICAgIHwgIDI1MworICAgMSAxIDEgMSAxIDEgMSAwIHwgICBGRSAgICB8ICAyNTQKKyAgIDEgMSAxIDEgMSAxIDEgMSB8ICAgRkYgICAgfCAgMjU1CisKKworU2V0dGluZyB0aGUgSS9PIEJhc2UgQWRkcmVzcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbGFzdCB0aHJlZSBzd2l0Y2hlcyBpbiBzd2l0Y2ggYmxvY2sgU1cxIGFyZSB1c2VkIHRvIHNlbGVjdCBvbmUKK29mIGVpZ2h0IHBvc3NpYmxlIEkvTyBCYXNlIGFkZHJlc3NlcyB1c2luZyB0aGUgZm9sbG93aW5nIHRhYmxlCisKKworICAgU3dpdGNoICAgICAgfCBIZXggSS9PCisgICAgNiAgIDcgICA4ICB8IEFkZHJlc3MKKyAgIC0tLS0tLS0tLS0tLXwtLS0tLS0tLQorICAgT04gIE9OICBPTiAgfCAgMjYwCisgICBPRkYgT04gIE9OICB8ICAyOTAKKyAgIE9OICBPRkYgT04gIHwgIDJFMCAgKE1hbnVmYWN0dXJlcidzIGRlZmF1bHQpCisgICBPRkYgT0ZGIE9OICB8ICAyRjAKKyAgIE9OICBPTiAgT0ZGIHwgIDMwMAorICAgT0ZGIE9OICBPRkYgfCAgMzUwCisgICBPTiAgT0ZGIE9GRiB8ICAzODAKKyAgIE9GRiBPRkYgT0ZGIHwgIDNFMAorCisKK1NldHRpbmcgdGhlIEJhc2UgTWVtb3J5IChSQU0pIGJ1ZmZlciBBZGRyZXNzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbWVtb3J5IGJ1ZmZlciAoUkFNKSByZXF1aXJlcyAySy4gVGhlIGJhc2Ugb2YgdGhpcyBidWZmZXIgY2FuIGJlIAorbG9jYXRlZCBpbiBhbnkgb2YgZWlnaHQgcG9zaXRpb25zLiBUaGUgYWRkcmVzcyBvZiB0aGUgQm9vdCBQcm9tIGlzCittZW1vcnkgYmFzZSArIDhLIG9yIG1lbW9yeSBiYXNlICsgMHgyMDAwLgorU3dpdGNoZXMgMS01IG9mIHN3aXRjaCBibG9jayBTVzEgc2VsZWN0IHRoZSBNZW1vcnkgQmFzZSBhZGRyZXNzLgorCisgICBTd2l0Y2ggICAgICAgICAgICAgIHwgSGV4IFJBTSB8IEhleCBST00KKyAgICAxICAgMiAgIDMgICA0ICAgNSAgfCBBZGRyZXNzIHwgQWRkcmVzcyAqKQorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tCisgICBPTiAgT04gIE9OICBPTiAgT04gIHwgIEMwMDAwICB8ICBDMjAwMAorICAgT04gIE9OICBPRkYgT04gIE9OICB8ICBDNDAwMCAgfCAgQzYwMDAKKyAgIE9OICBPTiAgT04gIE9GRiBPTiAgfCAgQ0MwMDAgIHwgIENFMDAwCisgICBPTiAgT04gIE9GRiBPRkYgT04gIHwgIEQwMDAwICB8ICBEMjAwMCAgKE1hbnVmYWN0dXJlcidzIGRlZmF1bHQpCisgICBPTiAgT04gIE9OICBPTiAgT0ZGIHwgIEQ0MDAwICB8ICBENjAwMAorICAgT04gIE9OICBPRkYgT04gIE9GRiB8ICBEODAwMCAgfCAgREEwMDAKKyAgIE9OICBPTiAgT04gIE9GRiBPRkYgfCAgREMwMDAgIHwgIERFMDAwCisgICBPTiAgT04gIE9GRiBPRkYgT0ZGIHwgIEUwMDAwICB8ICBFMjAwMAorICAKKyopIFRvIGVuYWJsZSB0aGUgQm9vdCBST00gaW5zdGFsbCB0aGUganVtcGVyIEpQMQorCitOb3RlOiBTaW5jZSB0aGUgc3dpdGNoZXMgMSBhbmQgMiBhcmUgYWx3YXlzIHNldCB0byBPTiBpdCBtYXkgYmUgcG9zc2libGUKKyAgICAgIHRoYXQgdGhleSBjYW4gYmUgdXNlZCB0byBhZGQgYW4gb2Zmc2V0IG9mIDJLLCA0SyBvciA2SyB0byB0aGUgYmFzZQorICAgICAgYWRkcmVzcywgYnV0IHRoaXMgZmVhdHVyZSBpcyBub3QgZG9jdW1lbnRlZCBpbiB0aGUgbWFudWFsIGFuZCBJCisgICAgICBoYXZlbid0IHRlc3RlZCBpdCB5ZXQuCisKKworU2V0dGluZyB0aGUgSW50ZXJydXB0IExpbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RvIHNlbGVjdCBhIGhhcmR3YXJlIGludGVycnVwdCBsZXZlbCBpbnN0YWxsIG9uZSAob25seSBvbmUhKSBvZiB0aGUganVtcGVycworSlAyLCBKUDMsIEpQNCwgSlA1LCBKUDYuIEpQMiBpcyB0aGUgZGVmYXVsdC4KKworICAgSnVtcGVyIHwgSVJRICAgICAKKyAgIC0tLS0tLS18LS0tLS0KKyAgICAgMiAgICB8ICAyCisgICAgIDMgICAgfCAgMworICAgICA0ICAgIHwgIDQKKyAgICAgNSAgICB8ICA1CisgICAgIDYgICAgfCAgNworCisKK1NldHRpbmcgdGhlIEludGVybmFsIFRlcm1pbmF0b3Igb24gQ04xMjBBQi9UUC9TQlQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBqdW1wZXIgSlAxMiBpcyB1c2VkIHRvIGVuYWJsZSB0aGUgaW50ZXJuYWwgdGVybWluYXRvci4gCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLQorICAgICAgIDAgICAgICAgICAgICAgICAgfCAgMCAgfCAgICAgCisgICAgIC0tLS0tICAgT04gICAgICAgICB8ICAgICB8ICBPTgorICAgIHwgIDAgIHwgICAgICAgICAgICAgfCAgMCAgfAorICAgIHwgICAgIHwgIE9GRiAgICAgICAgIC0tLS0tICAgT0ZGCisgICAgfCAgMCAgfCAgICAgICAgICAgICAgICAwCisgICAgIC0tLS0tCisgICBUZXJtaW5hdG9yICAgICAgICAgIFRlcm1pbmF0b3IgCisgICAgZGlzYWJsZWQgICAgICAgICAgICBlbmFibGVkCisgIAorCitTZWxlY3RpbmcgdGhlIENvbm5lY3RvciBUeXBlIG9uIENOMTIwU1QvU0JUCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgSlAxMCAgICBKUDExICAgICAgICBKUDEwICAgIEpQMTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLSAgIC0tLS0tCisgICAgICAgMCAgICAgICAwICAgICAgICB8ICAwICB8IHwgIDAgIHwgICAgICAgCisgICAgIC0tLS0tICAgLS0tLS0gICAgICB8ICAgICB8IHwgICAgIHwKKyAgICB8ICAwICB8IHwgIDAgIHwgICAgIHwgIDAgIHwgfCAgMCAgfAorICAgIHwgICAgIHwgfCAgICAgfCAgICAgIC0tLS0tICAgLS0tLS0KKyAgICB8ICAwICB8IHwgIDAgIHwgICAgICAgIDAgICAgICAgMCAKKyAgICAgLS0tLS0gICAtLS0tLQorICAgICBDb2F4aWFsIENhYmxlICAgICAgIFR3aXN0ZWQgUGFpciBDYWJsZSAKKyAgICAgICAoRGVmYXVsdCkKKworCitTZXR0aW5nIHRoZSBUaW1lb3V0IFBhcmFtZXRlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUganVtcGVycyBsYWJlbGVkIEVYVDEgYW5kIEVYVDIgYXJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB0aW1lb3V0IAorcGFyYW1ldGVycy4gVGhlc2UgdHdvIGp1bXBlcnMgYXJlIG5vcm1hbGx5IGxlZnQgb3Blbi4KKworCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyoqIENOZXQgVGVjaG5vbG9neSBJbmMuICoqCisxNjAgU2VyaWVzICgxNi1iaXQgY2FyZHMpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIC0gZnJvbSBKdWVyZ2VuIFNlaWZlcnQgPHNlaWZlcnRAaHR3bS5kZT4KKworQ05FVCBURUNITk9MT0dZIElOQy4gKENOZXQpIEFSQ05FVCAxNjBBIFNFUklFUworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGRlc2NyaXB0aW9uIGhhcyBiZWVuIHdyaXR0ZW4gYnkgSnVlcmdlbiBTZWlmZXJ0IDxzZWlmZXJ0QGh0d20uZGU+Cit1c2luZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBmb2xsb3dpbmcgT3JpZ2luYWwgQ05ldCBNYW51YWwgCisKKyAgICAgICAgICAgICAgIkFSQ05FVAorICAgICAgICAgICAgVVNFUidTIE1BTlVBTCAKKyAgICAgICAgICAgICAgICBmb3IKKyAgICAgICAgICAgICAgIENOMTYwQQorICAgICAgICAgICAgICAgQ04xNjBBQgorICAgICAgICAgICAgICAgQ04xNjBUUAorICAgICAgICAgICAgIFAvTjoxMi0wMS0wMDA2CisgICAgICAgICAgICAgUmV2aXNpb24gMy4wMCIKKworQVJDTkVUIGlzIGEgcmVnaXN0ZXJlZCB0cmFkZW1hcmsgb2YgdGhlIERhdGFwb2ludCBDb3Jwb3JhdGlvbgorCitQL04gMTYwQSAgIEFSQ05FVCAxNiBiaXQgWFQvQVQgU3RhcgorUC9OIDE2MEFCICBBUkNORVQgMTYgYml0IFhUL0FUIEJ1cworUC9OIDE2MFRQICBBUkNORVQgMTYgYml0IFhUL0FUIFR3aXN0ZWQgUGFpcgorCisgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisgIDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX19fX19fX19fX19fX19fX19fX19fX18gICAgICAgICAgX19ffAorICA+ICAgICAgICAgICAgICAgfG9vfCBKUDIgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICBMRUQgfF9fX3wKKyAgPCAgICAgICAgICAgICAgIHxvb3wgSlAxICAgICB8ICAgICAgICA5MDI2ICAgICAgICAgICAgIHwgICAgTEVEIHxfX198CisgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfF9fX19fX19fX19fX19fX19fX19fX19fX198ICAgICAgICAgX19ffAorICA8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE4gfCAgIHwgSUQ3CisgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxICAgICAgbyB8ICAgfCBJRDYKKyAgPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgMiAzIDQgNSA2IDcgOCA5IDAgICAgICBkIHwgUyB8IElENQorICA+ICAgICAgICAgX19fX19fX19fX19fX19fICAgICAgICAgICBfX19fX19fX19fX19fX19fX19fX18gICAgIGUgfCBXIHwgSUQ0CisgIDwgICAgICAgIHwgICAgIFBST00gICAgICB8ICAgICAgICAgfCAgICAgICAgIFNXMSAgICAgICAgIHwgICAgQSB8IDIgfCBJRDMKKyAgPiAgICAgICAgPiAgICBTT0NLRVQgICAgIHwgICAgICAgICB8X19fX19fX19fX19fX19fX19fX19ffCAgICBkIHwgICB8IElEMgorICA8ICAgICAgICB8X19fX19fX19fX19fX19ffCAgICAgICAgICB8IElPLUJhc2UgICB8IE1FTSAgIHwgICAgIGQgfCAgIHwgSUQxCisgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciB8X19ffCBJRDAKKyAgPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX198CisgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgfAorICA8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEoxIHwKKyAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICB8CisgIDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxfX19ffAorICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgMSAxIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgPCAgMyA0IDUgNiA3ICAgICAgSlAgICAgIDggOSAwIDEgMiAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgID4gfG98b3xvfG98b3wgICAgICAgICAgIHxvfG98b3xvfG98b3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICA8IHxvfG98b3xvfG98IF9fICAgICAgICB8b3xvfG98b3xvfG98ICAgICAgICAgICAgICAgICAgICBfX19fX19fX19fX3wKKyAgPiAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgIDxfX19fX19fX19fX198ICB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffAorCitMZWdlbmQ6CisKKzkwMjYgICAgICAgICAgICBBUkNORVQgUHJvYmUKK1NXMSAxLTY6ICAgIEJhc2UgSS9PIEFkZHJlc3MgU2VsZWN0CisgICAgNy0xMDogICBCYXNlIE1lbW9yeSBBZGRyZXNzIFNlbGVjdAorU1cyIDEtODogICAgTm9kZSBJRCBTZWxlY3QgKElEMC1JRDcpCitKUDEvSlAyICAgICBFVDEsIEVUMiBUaW1lb3V0IFBhcmFtZXRlcnMKK0pQMy1KUDEzICAgIEludGVycnVwdCBTZWxlY3QKK0oxICAgICAgQk5DIFJHNjIvVSBDb25uZWN0b3IgICAgICAgIChDTjE2MEEvQUIgb25seSkKK0oxICAgICAgVHdvIDYtcG9zaXRpb24gVGVsZXBob25lIEphY2sgICAoQ04xNjBUUCBvbmx5KQorTEVECisKK1NldHRpbmcgb25lIG9mIHRoZSBzd2l0Y2hlcyB0byBPZmYgbWVhbnMgIjEiLCBPbiBtZWFucyAiMCIuCisKKworU2V0dGluZyB0aGUgTm9kZSBJRAorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZWlnaHQgc3dpdGNoZXMgaW4gU1cyIGFyZSB1c2VkIHRvIHNldCB0aGUgbm9kZSBJRC4gRWFjaCBub2RlIGF0dGFjaGVkCit0byB0aGUgbmV0d29yayBtdXN0IGhhdmUgYW4gdW5pcXVlIG5vZGUgSUQgd2hpY2ggbXVzdCBiZSBkaWZmZXJlbnQgZnJvbSAwLgorU3dpdGNoIDEgKElEMCkgc2VydmVzIGFzIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgKExTQikuCisKK1RoZSBub2RlIElEIGlzIHRoZSBzdW0gb2YgdGhlIHZhbHVlcyBvZiBhbGwgc3dpdGNoZXMgc2V0IHRvICIxIiAgCitUaGVzZSB2YWx1ZXMgYXJlOgorCisgICBTd2l0Y2ggfCBMYWJlbCB8IFZhbHVlCisgICAtLS0tLS0tfC0tLS0tLS18LS0tLS0tLQorICAgICAxICAgIHwgSUQwICAgfCAgIDEKKyAgICAgMiAgICB8IElEMSAgIHwgICAyCisgICAgIDMgICAgfCBJRDIgICB8ICAgNAorICAgICA0ICAgIHwgSUQzICAgfCAgIDgKKyAgICAgNSAgICB8IElENCAgIHwgIDE2CisgICAgIDYgICAgfCBJRDUgICB8ICAzMgorICAgICA3ICAgIHwgSUQ2ICAgfCAgNjQKKyAgICAgOCAgICB8IElENyAgIHwgMTI4CisKK1NvbWUgRXhhbXBsZXM6CisKKyAgICBTd2l0Y2ggICAgICAgICB8IEhleCAgICAgfCBEZWNpbWFsIAorICAgOCA3IDYgNSA0IDMgMiAxIHwgTm9kZSBJRCB8IE5vZGUgSUQKKyAgIC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLQorICAgMCAwIDAgMCAwIDAgMCAwIHwgICAgbm90IGFsbG93ZWQKKyAgIDAgMCAwIDAgMCAwIDAgMSB8ICAgIDEgICAgfCAgICAxIAorICAgMCAwIDAgMCAwIDAgMSAwIHwgICAgMiAgICB8ICAgIDIKKyAgIDAgMCAwIDAgMCAwIDEgMSB8ICAgIDMgICAgfCAgICAzCisgICAgICAgLiAuIC4gICAgICAgfCAgICAgICAgIHwKKyAgIDAgMSAwIDEgMCAxIDAgMSB8ICAgNTUgICAgfCAgIDg1CisgICAgICAgLiAuIC4gICAgICAgfCAgICAgICAgIHwKKyAgIDEgMCAxIDAgMSAwIDEgMCB8ICAgQUEgICAgfCAgMTcwCisgICAgICAgLiAuIC4gICAgICAgfCAgICAgICAgIHwgIAorICAgMSAxIDEgMSAxIDEgMCAxIHwgICBGRCAgICB8ICAyNTMKKyAgIDEgMSAxIDEgMSAxIDEgMCB8ICAgRkUgICAgfCAgMjU0CisgICAxIDEgMSAxIDEgMSAxIDEgfCAgIEZGICAgIHwgIDI1NQorCisKK1NldHRpbmcgdGhlIEkvTyBCYXNlIEFkZHJlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZpcnN0IHNpeCBzd2l0Y2hlcyBpbiBzd2l0Y2ggYmxvY2sgU1cxIGFyZSB1c2VkIHRvIHNlbGVjdCB0aGUgSS9PIEJhc2UKK2FkZHJlc3MgdXNpbmcgdGhlIGZvbGxvd2luZyB0YWJsZToKKworICAgICAgICAgICAgIFN3aXRjaCAgICAgICAgfCBIZXggSS9PCisgICAgMSAgIDIgICAzICAgNCAgIDUgICA2ICB8IEFkZHJlc3MKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLQorICAgT0ZGIE9OICBPTiAgT0ZGIE9GRiBPTiAgfCAgMjYwCisgICBPRkYgT04gIE9GRiBPTiAgT04gIE9GRiB8ICAyOTAKKyAgIE9GRiBPTiAgT0ZGIE9GRiBPRkYgT04gIHwgIDJFMCAgKE1hbnVmYWN0dXJlcidzIGRlZmF1bHQpCisgICBPRkYgT04gIE9GRiBPRkYgT0ZGIE9GRiB8ICAyRjAKKyAgIE9GRiBPRkYgT04gIE9OICBPTiAgT04gIHwgIDMwMAorICAgT0ZGIE9GRiBPTiAgT0ZGIE9OICBPRkYgfCAgMzUwCisgICBPRkYgT0ZGIE9GRiBPTiAgT04gIE9OICB8ICAzODAKKyAgIE9GRiBPRkYgT0ZGIE9GRiBPRkYgT04gIHwgIDNFMAorCitOb3RlOiBPdGhlciBJTy1CYXNlIGFkZHJlc3NlcyBzZWVtIHRvIGJlIHNlbGVjdGFibGUsIGJ1dCBvbmx5IHRoZSBhYm92ZQorICAgICAgY29tYmluYXRpb25zIGFyZSBkb2N1bWVudGVkLgorCisKK1NldHRpbmcgdGhlIEJhc2UgTWVtb3J5IChSQU0pIGJ1ZmZlciBBZGRyZXNzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgc3dpdGNoZXMgNy0xMCBvZiBzd2l0Y2ggYmxvY2sgU1cxIGFyZSB1c2VkIHRvIHNlbGVjdCB0aGUgTWVtb3J5CitCYXNlIGFkZHJlc3Mgb2YgdGhlIFJBTSAoMkspIGFuZCB0aGUgUFJPTS4KKworICAgU3dpdGNoICAgICAgICAgIHwgSGV4IFJBTSB8IEhleCBST00KKyAgICA3ICAgOCAgIDkgIDEwICB8IEFkZHJlc3MgfCBBZGRyZXNzCisgICAtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLQorICAgT0ZGIE9GRiBPTiAgT04gIHwgIEMwMDAwICB8ICBDODAwMAorICAgT0ZGIE9GRiBPTiAgT0ZGIHwgIEQwMDAwICB8ICBEODAwMCAoRGVmYXVsdCkKKyAgIE9GRiBPRkYgT0ZGIE9OICB8ICBFMDAwMCAgfCAgRTgwMDAKKworTm90ZTogT3RoZXIgTUVNLUJhc2UgYWRkcmVzc2VzIHNlZW0gdG8gYmUgc2VsZWN0YWJsZSwgYnV0IG9ubHkgdGhlIGFib3ZlCisgICAgICBjb21iaW5hdGlvbnMgYXJlIGRvY3VtZW50ZWQuCisKKworU2V0dGluZyB0aGUgSW50ZXJydXB0IExpbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RvIHNlbGVjdCBhIGhhcmR3YXJlIGludGVycnVwdCBsZXZlbCBpbnN0YWxsIG9uZSAob25seSBvbmUhKSBvZiB0aGUganVtcGVycworSlAzIHRocm91Z2ggSlAxMyB1c2luZyB0aGUgZm9sbG93aW5nIHRhYmxlOgorCisgICBKdW1wZXIgfCBJUlEgICAgIAorICAgLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLQorICAgICAzICAgIHwgIDE0CisgICAgIDQgICAgfCAgMTUKKyAgICAgNSAgICB8ICAxMgorICAgICA2ICAgIHwgIDExCisgICAgIDcgICAgfCAgMTAKKyAgICAgOCAgICB8ICAgMworICAgICA5ICAgIHwgICA0CisgICAgMTAgICAgfCAgIDUKKyAgICAxMSAgICB8ICAgNgorICAgIDEyICAgIHwgICA3CisgICAgMTMgICAgfCAgIDIgKD05KSBEZWZhdWx0IQorCitOb3RlOiAgLSBEbyBub3QgdXNlIEpQMTE9SVJRNiwgaXQgbWF5IGNvbmZsaWN0IHdpdGggeW91ciBGbG9wcHkgRGlzaworICAgICAgICAgQ29udHJvbGxlcgorICAgICAgIC0gVXNlIEpQMz1JUlExNCBvbmx5LCBpZiB5b3UgZG9uJ3QgaGF2ZSBhbiBJREUtLCBNRk0tLCBvciBSTEwtCisgICAgICAgICBIYXJkIERpc2ssIGl0IG1heSBjb25mbGljdCB3aXRoIHRoZWlyIGNvbnRyb2xsZXJzCisKKworU2V0dGluZyB0aGUgVGltZW91dCBQYXJhbWV0ZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGp1bXBlcnMgbGFiZWxlZCBKUDEgYW5kIEpQMiBhcmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHRpbWVvdXQKK3BhcmFtZXRlcnMuIFRoZXNlIHR3byBqdW1wZXJzIGFyZSBub3JtYWxseSBsZWZ0IG9wZW4uCisKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworKiogTGFudGVjaCAqKgorOC1iaXQgY2FyZCwgdW5rbm93biBtb2RlbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAtIGZyb20gVmxhZCBMdW5ndSA8dmx1bmd1QHVnYWwucm8+IC0gaGlzIGUtbWFpbCBhZGRyZXNzIHNlZW1lZCBicm9rZW4gYXQKKyAgICB0aGUgdGltZSBJIHRyaWVkIHRvIHJlYWNoIGhpbS4gIFNvcnJ5IFZsYWQsIGlmIHlvdSBkaWRuJ3QgZ2V0IG15IHJlcGx5LgorCisgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisgICB8ICAgMSAgICAgICAgIDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgIF9fX19fX19fX19fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3wKKyAgIHwgICB8ICAgU1cxICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExFRCB8X198CisgICB8ICAgfF9fX19fX19fX198ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX3wKKyAgIHwgICAgICAgICAgICAgICAgX19fX19fX19fX19fX19fX19fX19fICAgICAgICAgICAgICAgICAgICAgICB8UyB8IDgKKyAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8VyB8CisgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfDIgfAorICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxfX3wgMQorICAgfCAgICAgICAgICAgICAgICB8ICAgICAgVU05MDY1TCAgICAgIHwgICAgIHxvfCAgSlA0ICAgICAgICAgX19fX3xfX19fCisgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgfG98ICAgICAgICAgICAgICB8ICBDTiAgICB8CisgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8X19fX19fX198CisgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICB8X19fX19fX19fX19fX19fX19fX3wgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgIF9fX19fX19fX19fX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgfCAgICBQUk9NICAgIHwgICAgICAgIHxvb29vb3wgIEpQNiAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgIHxfX19fX19fX19fX198ICAgICAgICB8b29vb298ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHxfX19fX19fX19fX19fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF98CisgICAgICAgICAgICAgICAgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffCB8X198CisKKworVU05MDY1TCA6IEFSQ25ldCBDb250cm9sbGVyCisKK1NXIDEgICAgOiBTaGFyZWQgTWVtb3J5IEFkZHJlc3MgYW5kIEkvTyBCYXNlCisKKyAgICAgICAgT049MAorCisgICAgICAgIDEyMzQ1fE1lbW9yeSBBZGRyZXNzCisgICAgICAgIC0tLS0tfC0tLS0tLS0tLS0tLS0tCisgICAgICAgIDAwMDAxfCAgRDQwMDAKKyAgICAgICAgMDAwMTB8ICBDQzAwMAorICAgICAgICAwMDExMHwgIEQwMDAwCisgICAgICAgIDAxMTEwfCAgRDEwMDAKKyAgICAgICAgMDExMDF8ICBEOTAwMAorICAgICAgICAxMDAxMHwgIENDODAwCisgICAgICAgIDEwMDExfCAgREM4MDAKKyAgICAgICAgMTExMTB8ICBEMTgwMAorCitJdCBzZWVtcyB0aGF0IHRoZSBiaXRzIGFyZSBjb25zaWRlcmVkIGluIHJldmVyc2Ugb3JkZXIuICBBbHNvLCB5b3UgbXVzdAorb2JzZXJ2ZSB0aGF0IHNvbWUgb2YgdGhvc2UgYWRkcmVzc2VzIGFyZSB1bnVzdWFsIGFuZCBJIGRpZG4ndCBwcm9iZSB0aGVtOyBJCit1c2VkIGEgbWVtb3J5IGR1bXAgaW4gRE9TIHRvIGlkZW50aWZ5IHRoZW0uICBGb3IgdGhlIDAwMDAwIGNvbmZpZ3VyYXRpb24gYW5kCitzb21lIG90aGVycyB0aGF0IEkgZGlkbid0IHdyaXRlIGhlcmUgdGhlIGNhcmQgc2VlbXMgdG8gY29uZmxpY3Qgd2l0aCB0aGUKK3ZpZGVvIGNhcmQgKGFuIFMzIEdFTkRBQykuIEkgbGVhdmUgdGhlIGZ1bGwgZGVjb2Rpbmcgb2YgdGhvc2UgYWRkcmVzc2VzIHRvCit5b3UuCisKKyAgICAgICAgNjc4fCBJL08gQWRkcmVzcworICAgICAgICAtLS18LS0tLS0tLS0tLS0tCisgICAgICAgIDAwMHwgICAgMjYwCisgICAgICAgIDAwMXwgICAgZmFpbGVkIHByb2JlCisgICAgICAgIDAxMHwgICAgMkUwCisgICAgICAgIDAxMXwgICAgMzgwCisgICAgICAgIDEwMHwgICAgMjkwCisgICAgICAgIDEwMXwgICAgMzUwCisgICAgICAgIDExMHwgICAgZmFpbGVkIHByb2JlCisgICAgICAgIDExMXwgICAgM0UwCisKK1NXIDIgIDogTm9kZSBJRCAoYmluYXJ5IGNvZGVkKQorCitKUCA0ICA6IEJvb3QgUFJPTSBlbmFibGUgICBDTE9TRSAtIGVuYWJsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QRU4gIC0gZGlzYWJsZWQKKworSlAgNiAgOiBJUlEgc2V0IChPTkxZIE9ORSBqdW1wZXIgb24gMS01IGZvciBJUlEgMi02KQorCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyoqIEFjZXIgKioKKzgtYml0IGNhcmQsIE1vZGVsIDUyMTAtMDAzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAtIGZyb20gVm9qdGVjaCBQYXZsaWsgPHZvanRlY2hAc3VzZS5jej4gdXNpbmcgcG9ydGlvbnMgb2YgdGhlIGV4aXN0aW5nCisgICAgYXJjbmV0LWhhcmR3YXJlIGZpbGUuCisKK1RoaXMgaXMgYSA5MEMyNiBiYXNlZCBjYXJkLiAgSXRzIGNvbmZpZ3VyYXRpb24gc2VlbXMgc2ltaWxhciB0byB0aGUgU01DCitQQzEwMCwgYnV0IGhhcyBzb21lIGFkZGl0aW9uYWwganVtcGVycyBJIGRvbid0IGtub3cgdGhlIG1lYW5pbmcgb2YuCisKKyAgICAgICAgICAgICAgIF9fCisgICAgICAgICAgICAgIHwgIHwKKyAgIF9fX19fX19fX19ffF9ffF9fX19fX19fX19fX19fX19fX19fX19fX18KKyAgfCAgICAgICAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8CisgIHwgICAgICAgICB8IEJOQyAgfCAgICAgICAgICAgICAgICAgICAgICAgfAorICB8ICAgICAgICAgfF9fX19fX3wgICAgICAgICAgICAgICAgICAgIF9fX3wKKyAgfCAgX19fX19fX19fX19fX19fX19fX19fICAgICAgICAgICAgIHxfX18gIAorICB8IHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwKKyAgfCB8IEh5YnJpZCBJQyAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8CisgIHwgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgb3xvIEoxICAgfAorICB8IHxfX19fX19fX19fX19fX19fX19fX198ICAgICAgIDh8OCAgICAgIHwKKyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4fDggSjUgICB8CisgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3xvICAgICAgfAorICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDh8OCAgICAgIHwKKyAgfF9fICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4fDggICAgICB8CisgKHxfX3wgTEVEICAgICAgICAgICAgICAgICAgICAgICAgb3xvICAgICAgfAorICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDh8OCAgICAgIHwKKyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4fDggSjE1ICB8CisgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICB8ICAgICAgICAgICAgICAgICAgICBfX19fXyAgICAgICAgICAgICAgIHwKKyAgfCAgICAgICAgICAgICAgICAgICB8ICAgICB8ICAgX19fX18gICAgICB8CisgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgfCAgfCAgICAgfCAgX19ffAorICB8ICAgICAgICAgICAgICAgICAgIHwgICAgIHwgIHwgICAgIHwgfCAgICAKKyAgfCAgX19fX18gICAgICAgICAgICB8IFJPTSB8ICB8IFVGUyB8IHwgICAgCisgIHwgfCAgICAgfCAgICAgICAgICAgfCAgICAgfCAgfCAgICAgfCB8ICAgCisgIHwgfCAgICAgfCAgICAgX19fICAgfCAgICAgfCAgfCAgICAgfCB8ICAgCisgIHwgfCAgICAgfCAgICB8ICAgfCAgfF9fLl9ffCAgfF9fLl9ffCB8ICAgCisgIHwgfCBOQ1IgfCAgICB8WFRMfCAgIF9fX19fICAgIF9fX19fICB8ICAgCisgIHwgfCAgICAgfCAgICB8X19ffCAgfCAgICAgfCAgfCAgICAgfCB8ICAgCisgIHwgfDkwQzI2fCAgICAgICAgICAgfCAgICAgfCAgfCAgICAgfCB8ICAgCisgIHwgfCAgICAgfCAgICAgICAgICAgfCBSQU0gfCAgfCBVRlMgfCB8ICAgCisgIHwgfCAgICAgfCBKMTcgb3xvICAgfCAgICAgfCAgfCAgICAgfCB8ICAgCisgIHwgfCAgICAgfCBKMTYgb3xvICAgfCAgICAgfCAgfCAgICAgfCB8ICAgCisgIHwgfF9fLl9ffCAgICAgICAgICAgfF9fLl9ffCAgfF9fLl9ffCB8ICAgCisgIHwgIF9fXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgCisgIHwgfCAgIHw4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgCisgIHwgfFNXMnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgCisgIHwgfCAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgCisgIHwgfF9fX3wxICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgCisgIHwgIF9fXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgCisgIHwgfCAgIHwxMCAgICAgICAgICAgSjE4IG98byAgICAgICAgICB8ICAgCisgIHwgfCAgIHwgICAgICAgICAgICAgICAgIG98byAgICAgICAgICB8ICAgCisgIHwgfFNXMXwgICAgICAgICAgICAgICAgIG98byAgICAgICAgICB8ICAgCisgIHwgfCAgIHwgICAgICAgICAgICAgSjIxIG98byAgICAgICAgICB8ICAgCisgIHwgfF9fX3wxICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgCisgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgCisgIHxfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198ICAgCisKKworTGVnZW5kOgorCis5MEMyNiAgICAgICBBUkNORVQgQ2hpcAorWFRMICAgICAgICAgMjAgTUh6IENyeXN0YWwKK1NXMSAxLTYgICAgIEJhc2UgSS9PIEFkZHJlc3MgU2VsZWN0CisgICAgNy0xMCAgICBNZW1vcnkgQWRkcmVzcyBTZWxlY3QKK1NXMiAxLTggICAgIE5vZGUgSUQgU2VsZWN0IChJRDAtSUQ3KQorSjEtSjUgICAgICAgSVJRIFNlbGVjdAorSjYtSjIxICAgICAgVW5rbm93biAoUHJvYmFibHkgZXh0cmEgdGltZW91dHMgJiBST00gZW5hYmxlIC4uLikKK0xFRDEgICAgICAgIEFjdGl2aXR5IExFRCAKK0JOQyAgICAgICAgIENvYXggY29ubmVjdG9yIChTVEFSIEFSQ25ldCkKK1JBTSAgICAgICAgIDJrIG9mIFNSQU0KK1JPTSAgICAgICAgIEJvb3QgUk9NIHNvY2tldAorVUZTICAgICAgICAgVW5pZGVudGlmaWVkIEZseWluZyBTb2NrZXRzCisKKworU2V0dGluZyB0aGUgTm9kZSBJRAorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZWlnaHQgc3dpdGNoZXMgaW4gU1cyIGFyZSB1c2VkIHRvIHNldCB0aGUgbm9kZSBJRC4gRWFjaCBub2RlIGF0dGFjaGVkCit0byB0aGUgbmV0d29yayBtdXN0IGhhdmUgYW4gdW5pcXVlIG5vZGUgSUQgd2hpY2ggbXVzdCBub3QgYmUgMC4KK1N3aXRjaCAxIChJRDApIHNlcnZlcyBhcyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IChMU0IpLgorCitTZXR0aW5nIG9uZSBvZiB0aGUgc3dpdGNoZXMgdG8gT0ZGIG1lYW5zICIxIiwgT04gbWVhbnMgIjAiLgorCitUaGUgbm9kZSBJRCBpcyB0aGUgc3VtIG9mIHRoZSB2YWx1ZXMgb2YgYWxsIHN3aXRjaGVzIHNldCB0byAiMSIKK1RoZXNlIHZhbHVlcyBhcmU6CisKKyAgIFN3aXRjaCB8IFZhbHVlCisgICAtLS0tLS0tfC0tLS0tLS0KKyAgICAgMSAgICB8ICAgMQorICAgICAyICAgIHwgICAyCisgICAgIDMgICAgfCAgIDQKKyAgICAgNCAgICB8ICAgOAorICAgICA1ICAgIHwgIDE2CisgICAgIDYgICAgfCAgMzIKKyAgICAgNyAgICB8ICA2NAorICAgICA4ICAgIHwgMTI4CisKK0Rvbid0IHNldCB0aGlzIHRvIDAgb3IgMjU1OyB0aGVzZSB2YWx1ZXMgYXJlIHJlc2VydmVkLgorCisKK1NldHRpbmcgdGhlIEkvTyBCYXNlIEFkZHJlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHN3aXRjaGVzIDEgdG8gNiBvZiBzd2l0Y2ggYmxvY2sgU1cxIGFyZSB1c2VkIHRvIHNlbGVjdCBvbmUKK29mIDMyIHBvc3NpYmxlIEkvTyBCYXNlIGFkZHJlc3NlcyB1c2luZyB0aGUgZm9sbG93aW5nIHRhYmxlcworICAgCisgICAgICAgICAgfCBIZXgKKyAgIFN3aXRjaCB8IFZhbHVlCisgICAtLS0tLS0tfC0tLS0tLS0KKyAgICAgMSAgICB8IDIwMCAgCisgICAgIDIgICAgfCAxMDAgIAorICAgICAzICAgIHwgIDgwICAKKyAgICAgNCAgICB8ICA0MCAgCisgICAgIDUgICAgfCAgMjAgIAorICAgICA2ICAgIHwgIDEwIAorCitUaGUgSS9PIGFkZHJlc3MgaXMgc3VtIG9mIGFsbCBzd2l0Y2hlcyBzZXQgdG8gIjEiLiBSZW1lbWJlciB0aGF0Cit0aGUgSS9PIGFkZHJlc3Mgc3BhY2UgYmVsbG93IDB4MjAwIGlzIFJFU0VSVkVEIGZvciBtYWluYm9hcmQsIHNvCitzd2l0Y2ggMSBzaG91bGQgYmUgQUxXQVlTIFNFVCBUTyBPRkYuIAorCisKK1NldHRpbmcgdGhlIEJhc2UgTWVtb3J5IChSQU0pIGJ1ZmZlciBBZGRyZXNzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbWVtb3J5IGJ1ZmZlciAoUkFNKSByZXF1aXJlcyAySy4gVGhlIGJhc2Ugb2YgdGhpcyBidWZmZXIgY2FuIGJlCitsb2NhdGVkIGluIGFueSBvZiBzaXh0ZWVuIHBvc2l0aW9ucy4gSG93ZXZlciwgdGhlIGFkZHJlc3NlcyBiZWxvdworQTAwMDAgYXJlIGxpa2VseSB0byBjYXVzZSBzeXN0ZW0gaGFuZyBiZWNhdXNlIHRoZXJlJ3MgbWFpbiBSQU0uCisKK0p1bXBlcnMgNy0xMCBvZiBzd2l0Y2ggYmxvY2sgU1cxIHNlbGVjdCB0aGUgTWVtb3J5IEJhc2UgYWRkcmVzcy4KKworICAgU3dpdGNoICAgICAgICAgIHwgSGV4IFJBTQorICAgIDcgICA4ICAgOSAgMTAgIHwgQWRkcmVzcworICAgLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0KKyAgIE9GRiBPRkYgT0ZGIE9GRiB8ICBGMDAwMCAoY29uZmxpY3RzIHdpdGggbWFpbiBCSU9TKQorICAgT0ZGIE9GRiBPRkYgT04gIHwgIEUwMDAwIAorICAgT0ZGIE9GRiBPTiAgT0ZGIHwgIEQwMDAwCisgICBPRkYgT0ZGIE9OICBPTiAgfCAgQzAwMDAgKGNvbmZsaWN0cyB3aXRoIHZpZGVvIEJJT1MpCisgICBPRkYgT04gIE9GRiBPRkYgfCAgQjAwMDAgKGNvbmZsaWN0cyB3aXRoIG1vbm8gdmlkZW8pCisgICBPRkYgT04gIE9GRiBPTiAgfCAgQTAwMDAgKGNvbmZsaWN0cyB3aXRoIGdyYXBoaWNzKQorCisKK1NldHRpbmcgdGhlIEludGVycnVwdCBMaW5lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitKdW1wZXJzIDEtNSBvZiB0aGUganVtcGVyIGJsb2NrIEoxIGNvbnRyb2wgdGhlIElSUSBsZXZlbC4gT04gbWVhbnMgCitzaG9ydGVkLCBPRkYgbWVhbnMgb3Blbi4KKworICAgIEp1bXBlciAgICAgICAgICAgICAgfCAgSVJRCisgICAgMSAgIDIgICAzICAgNCAgIDUgICB8CisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgT04gIE9GRiBPRkYgT0ZGIE9GRiB8ICA3CisgICAgT0ZGIE9OICBPRkYgT0ZGIE9GRiB8ICA1CisgICAgT0ZGIE9GRiBPTiAgT0ZGIE9GRiB8ICA0CisgICAgT0ZGIE9GRiBPRkYgT04gIE9GRiB8ICAzCisgICAgT0ZGIE9GRiBPRkYgT0ZGIE9OICB8ICAyCisKKworVW5rbm93biBqdW1wZXJzICYgc29ja2V0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJIGtub3cgbm90aGluZyBhYm91dCB0aGVzZS4gSSBqdXN0IGd1ZXNzIHRoYXQgSjE2JkoxNyBhcmUgdGltZW91dAoranVtcGVycyBhbmQgbWF5YmUgb25lIG9mIEoxOC1KMjEgc2VsZWN0cyBST00uIEFsc28gSjYtSjEwIGFuZAorSjExLUoxNSBhcmUgY29ubmVjdGluZyBJUlEyLTcgdG8gc29tZSBwaW5zIG9uIHRoZSBVRlNzLiBJIGNhbid0CitndWVzcyB0aGUgcHVycG9zZS4KKworCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisqKiBEYXRhcG9pbnQ/ICoqCitMQU4tQVJDLTgsIGFuIDgtYml0IGNhcmQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAtIGZyb20gVm9qdGVjaCBQYXZsaWsgPHZvanRlY2hAc3VzZS5jej4KKworVGhpcyBpcyBhbm90aGVyIFNNQyA5MEM2NS1iYXNlZCBBUkNuZXQgY2FyZC4gSSBjb3VsZG4ndCBpZGVudGlmeSB0aGUKK21hbnVmYWN0dXJlciwgYnV0IGl0IG1pZ2h0IGJlIERhdGFQb2ludCwgYmVjYXVzZSB0aGUgY2FyZCBoYXMgdGhlCitvcmlnaW5hbCBhcmNOZXQgbG9nbyBpbiBpdHMgdXBwZXIgcmlnaHQgY29ybmVyLgorCisgICAgICAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBfX19fX19fX18gICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIFNXMiAgIHwgT04gICAgICBhcmNOZXQgICAgIHwKKyAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8X19fX19fX19ffCBPRkYgICAgICAgICAgICAgX19ffAorICAgICAgICAgfCAgX19fX19fX19fX19fXyAgICAgICAgIDEgX19fX19fICA4ICAgICAgICAgICAgICAgIHwgICB8IDggIAorICAgICAgICAgfCB8ICAgICAgICAgICAgIHwgU1cxICAgICB8IFhUQUwgfCBfX19fX19fX19fX18gICAgIHwgUyB8ICAgIAorICAgICAgICAgfCA+IFJBTSAoMmspICAgIHwgICAgICAgICB8X19fX19ffHwgICAgICAgICAgICB8ICAgIHwgVyB8ICAgIAorICAgICAgICAgfCB8X19fX19fX19fX19fX3wgICAgICAgICAgICAgICAgIHwgICAgICBIICAgICB8ICAgIHwgMyB8ICAgIAorICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIF9fX19fX19fX3xfX19fXyB5ICAgICB8ICAgIHxfX198IDEgIAorICAgICAgICAgfCAgX19fX19fX19fICAgICAgICAgICAgfCAgICAgICAgIHwgICAgIHxiICAgICB8ICAgICAgICB8ICAgIAorICAgICAgICAgfCB8X19fX19fX19ffCAgICAgICAgICAgfCAgICAgICAgIHwgICAgIHxyICAgICB8ICAgICAgICB8ICAgIAorICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgU01DIHwgICAgIHxpICAgICB8ICAgICAgICB8ICAgIAorICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5MEM2NXwgICAgIHxkICAgICB8ICAgICAgICB8ICAgICAgCisgICAgICAgICB8ICBfX19fX19fX18gICAgICAgICAgICB8ICAgICAgICAgfCAgICAgfCAgICAgIHwgICAgICAgIHwKKyAgICAgICAgIHwgfCAgIFNXMSAgIHwgT04gICAgICAgIHwgICAgICAgICB8ICAgICB8SSAgICAgfCAgICAgICAgfAorICAgICAgICAgfCB8X19fX19fX19ffCBPRkYgICAgICAgfF9fX19fX19fX3xfX19fXy9DICAgICB8ICAgX19fX198CisgICAgICAgICB8ICAxICAgICAgIDggICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgIHwgICAgIHxfX18KKyAgICAgICAgIHwgIF9fX19fX19fX19fX19fICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgfCBCTkMgfF9fX3wKKyAgICAgICAgIHwgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8X19fX19fX19fX19ffCAgfF9fX19ffAorICAgICAgICAgfCA+IEVQUk9NIFNPQ0tFVCB8ICAgICAgICAgICAgICBfX19fX19fX19fX19fICAgICAgICAgICB8CisgICAgICAgICB8IHxfX19fX19fX19fX19fX3wgICAgICAgICAgICAgfF9fX19fX19fX19fX198ICAgICAgICAgIHwKKyAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX19fX19fX19fX19ffAorICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IAorICAgICAgICAgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198CisKK0xlZ2VuZDoKKworOTBDNjUgICAgICAgQVJDTkVUIENoaXAgCitTVzEgMS01OiAgICBCYXNlIE1lbW9yeSBBZGRyZXNzIFNlbGVjdAorICAgIDYtODogICAgQmFzZSBJL08gQWRkcmVzcyBTZWxlY3QKK1NXMiAxLTg6ICAgIE5vZGUgSUQgU2VsZWN0CitTVzMgMS01OiAgICBJUlEgU2VsZWN0ICAgCisgICAgNi03OiAgICBFeHRyYSBUaW1lb3V0CisgICAgOCAgOiAgICBST00gRW5hYmxlICAgCitCTkMgICAgICAgICBDb2F4IGNvbm5lY3RvcgorWFRBTCAgICAgICAgMjAgTUh6IENyeXN0YWwKKworCitTZXR0aW5nIHRoZSBOb2RlIElECistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBlaWdodCBzd2l0Y2hlcyBpbiBTVzMgYXJlIHVzZWQgdG8gc2V0IHRoZSBub2RlIElELiBFYWNoIG5vZGUgYXR0YWNoZWQKK3RvIHRoZSBuZXR3b3JrIG11c3QgaGF2ZSBhbiB1bmlxdWUgbm9kZSBJRCB3aGljaCBtdXN0IG5vdCBiZSAwLgorU3dpdGNoIDEgc2VydmVzIGFzIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgKExTQikuCisKK1NldHRpbmcgb25lIG9mIHRoZSBzd2l0Y2hlcyB0byBPZmYgbWVhbnMgIjEiLCBPbiBtZWFucyAiMCIuCisKK1RoZSBub2RlIElEIGlzIHRoZSBzdW0gb2YgdGhlIHZhbHVlcyBvZiBhbGwgc3dpdGNoZXMgc2V0IHRvICIxIiAgCitUaGVzZSB2YWx1ZXMgYXJlOgorCisgICBTd2l0Y2ggfCBWYWx1ZQorICAgLS0tLS0tLXwtLS0tLS0tCisgICAgIDEgICAgfCAgIDEKKyAgICAgMiAgICB8ICAgMgorICAgICAzICAgIHwgICA0CisgICAgIDQgICAgfCAgIDgKKyAgICAgNSAgICB8ICAxNgorICAgICA2ICAgIHwgIDMyCisgICAgIDcgICAgfCAgNjQKKyAgICAgOCAgICB8IDEyOAorCisKK1NldHRpbmcgdGhlIEkvTyBCYXNlIEFkZHJlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGxhc3QgdGhyZWUgc3dpdGNoZXMgaW4gc3dpdGNoIGJsb2NrIFNXMSBhcmUgdXNlZCB0byBzZWxlY3Qgb25lCitvZiBlaWdodCBwb3NzaWJsZSBJL08gQmFzZSBhZGRyZXNzZXMgdXNpbmcgdGhlIGZvbGxvd2luZyB0YWJsZQorCisKKyAgIFN3aXRjaCAgICAgIHwgSGV4IEkvTworICAgIDYgICA3ICAgOCAgfCBBZGRyZXNzCisgICAtLS0tLS0tLS0tLS18LS0tLS0tLS0KKyAgIE9OICBPTiAgT04gIHwgIDI2MAorICAgT0ZGIE9OICBPTiAgfCAgMjkwCisgICBPTiAgT0ZGIE9OICB8ICAyRTAgIChNYW51ZmFjdHVyZXIncyBkZWZhdWx0KQorICAgT0ZGIE9GRiBPTiAgfCAgMkYwCisgICBPTiAgT04gIE9GRiB8ICAzMDAKKyAgIE9GRiBPTiAgT0ZGIHwgIDM1MAorICAgT04gIE9GRiBPRkYgfCAgMzgwCisgICBPRkYgT0ZGIE9GRiB8ICAzRTAKKworCitTZXR0aW5nIHRoZSBCYXNlIE1lbW9yeSAoUkFNKSBidWZmZXIgQWRkcmVzcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG1lbW9yeSBidWZmZXIgKFJBTSkgcmVxdWlyZXMgMksuIFRoZSBiYXNlIG9mIHRoaXMgYnVmZmVyIGNhbiBiZSAKK2xvY2F0ZWQgaW4gYW55IG9mIGVpZ2h0IHBvc2l0aW9ucy4gVGhlIGFkZHJlc3Mgb2YgdGhlIEJvb3QgUHJvbSBpcworbWVtb3J5IGJhc2UgKyAweDIwMDAuCitKdW1wZXJzIDMtNSBvZiBzd2l0Y2ggYmxvY2sgU1cxIHNlbGVjdCB0aGUgTWVtb3J5IEJhc2UgYWRkcmVzcy4KKworICAgU3dpdGNoICAgICAgICAgICAgICB8IEhleCBSQU0gfCBIZXggUk9NCisgICAgMSAgIDIgICAzICAgNCAgIDUgIHwgQWRkcmVzcyB8IEFkZHJlc3MgKikKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLQorICAgT04gIE9OICBPTiAgT04gIE9OICB8ICBDMDAwMCAgfCAgQzIwMDAKKyAgIE9OICBPTiAgT0ZGIE9OICBPTiAgfCAgQzQwMDAgIHwgIEM2MDAwCisgICBPTiAgT04gIE9OICBPRkYgT04gIHwgIENDMDAwICB8ICBDRTAwMAorICAgT04gIE9OICBPRkYgT0ZGIE9OICB8ICBEMDAwMCAgfCAgRDIwMDAgIChNYW51ZmFjdHVyZXIncyBkZWZhdWx0KQorICAgT04gIE9OICBPTiAgT04gIE9GRiB8ICBENDAwMCAgfCAgRDYwMDAKKyAgIE9OICBPTiAgT0ZGIE9OICBPRkYgfCAgRDgwMDAgIHwgIERBMDAwCisgICBPTiAgT04gIE9OICBPRkYgT0ZGIHwgIERDMDAwICB8ICBERTAwMAorICAgT04gIE9OICBPRkYgT0ZGIE9GRiB8ICBFMDAwMCAgfCAgRTIwMDAKKyAgCisqKSBUbyBlbmFibGUgdGhlIEJvb3QgUk9NIHNldCB0aGUgc3dpdGNoIDggb2Ygc3dpdGNoIGJsb2NrIFNXMyB0byBwb3NpdGlvbiBPTi4KKworVGhlIHN3aXRjaGVzIDEgYW5kIDIgcHJvYmFibHkgYWRkIDB4MDgwMCBhbmQgMHgxMDAwIHRvIFJBTSBiYXNlIGFkZHJlc3MuCisKKworU2V0dGluZyB0aGUgSW50ZXJydXB0IExpbmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1N3aXRjaGVzIDEtNSBvZiB0aGUgc3dpdGNoIGJsb2NrIFNXMyBjb250cm9sIHRoZSBJUlEgbGV2ZWwuCisKKyAgICBKdW1wZXIgICAgICAgICAgICAgIHwgIElSUQorICAgIDEgICAyICAgMyAgIDQgICA1ICAgfAorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIE9OICBPRkYgT0ZGIE9GRiBPRkYgfCAgMworICAgIE9GRiBPTiAgT0ZGIE9GRiBPRkYgfCAgNAorICAgIE9GRiBPRkYgT04gIE9GRiBPRkYgfCAgNQorICAgIE9GRiBPRkYgT0ZGIE9OICBPRkYgfCAgNworICAgIE9GRiBPRkYgT0ZGIE9GRiBPTiAgfCAgMgorCisKK1NldHRpbmcgdGhlIFRpbWVvdXQgUGFyYW1ldGVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBzd2l0Y2hlcyA2LTcgb2YgdGhlIHN3aXRjaCBibG9jayBTVzMgYXJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB0aW1lb3V0CitwYXJhbWV0ZXJzLiAgVGhlc2UgdHdvIHN3aXRjaGVzIGFyZSBub3JtYWxseSBsZWZ0IGluIHRoZSBPRkYgcG9zaXRpb24uCisKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworKiogVG9wd2FyZSAqKgorOC1iaXQgY2FyZCwgVEEtQVJDLzEwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIC0gZnJvbSBWb2p0ZWNoIFBhdmxpayA8dm9qdGVjaEBzdXNlLmN6PgorCitUaGlzIGlzIGFub3RoZXIgdmVyeSBzaW1pbGFyIDkwQzY1IGNhcmQuIE1vc3Qgb2YgdGhlIHN3aXRjaGVzIGFuZCBqdW1wZXJzCithcmUgdGhlIHNhbWUgYXMgb24gb3RoZXIgY2xvbmVzLgorCisgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCit8ICBfX19fX19fX19fXyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIF9fX19fXyAgICAgICAgfAorfCB8U1cyIE5PREUgSUR8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgWFRBTCB8ICAgICAgIHwKK3wgfF9fX19fX19fX19ffCAgfCAgSHlicmlkIElDICAgICAgICAgICAgICB8ICAgICAgICAgICB8X19fX19ffCAgICAgICB8Cit8ICBfX19fX19fX19fXyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIF9ffCAgICAKK3wgfFNXMSBNRU0rSS9PfCAgfF9fX19fX19fX19fX19fX19fX19fX19fX198ICAgICAgICAgICAgICAgICAgIExFRDF8X198KSAgIAorfCB8X19fX19fX19fX198ICAgICAgICAgICAxIDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIAorfCAgICAgICAgICAgICAgICAgICAgIEozIHxvfG98IFRJTUVPVVQgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX19fX3wgICAgCit8ICAgICBfX19fX19fX19fX19fXyAgICAgfG98b3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgfCAgICAKK3wgICAgfCAgICAgICAgICAgICAgfCAgX19fX19fX19fX19fX19fX19fXyAgICAgICAgICAgICAgICAgICAgIHwgUkogICB8ICAgIAorfCAgICA+IEVQUk9NIFNPQ0tFVCB8IHwgICAgICAgICAgICAgICAgICAgXCAgICAgICAgICAgICAgICAgICAgfC0tLS0tLXwgICAgIAorfEoyICB8X19fX19fX19fX19fX198IHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgIHwgICAgCit8fG98ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8X19fX19ffAorfHxvfCBST00gRU5BQkxFICAgICAgIHwgICAgICAgIFNNQyAgICAgICAgIHwgICAgX19fX19fX19fICAgICAgICAgICAgIHwKK3wgICAgIF9fX19fX19fX19fX18gICB8ICAgICAgIDkwQzY1ICAgICAgICB8ICAgfF9fX19fX19fX3wgICAgICAgX19fX198ICAgIAorfCAgICB8ICAgICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgIHxfX18gCit8ICAgID4gUkFNICgyaykgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCBCTkMgfF9fX3wKK3wgICAgfF9fX19fX19fX19fX198ICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8X19fX198ICAgIAorfCAgICAgICAgICAgICAgICAgICAgIHxfX19fX19fX19fX19fX19fX19fX3wgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgCit8IF9fX19fX19fIElSUSAyIDMgNCA1IDcgICAgICAgICAgICAgICAgICBfX19fX19fX19fXyAgICAgICAgICAgICAgICAgfAorfHxfX19fX19fX3wgICB8b3xvfG98b3xvfCAgICAgICAgICAgICAgICB8X19fX19fX19fX198ICAgICAgICAgICAgICAgIHwKK3xfX19fX19fXyAgIEoxfG98b3xvfG98b3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19fX19fX19fX19fX198CisgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wKKworTGVnZW5kOgorCis5MEM2NSAgICAgICBBUkNORVQgQ2hpcAorWFRBTCAgICAgICAgMjAgTUh6IENyeXN0YWwKK1NXMSAxLTUgICAgIEJhc2UgTWVtb3J5IEFkZHJlc3MgU2VsZWN0CisgICAgNi04ICAgICBCYXNlIEkvTyBBZGRyZXNzIFNlbGVjdAorU1cyIDEtOCAgICAgTm9kZSBJRCBTZWxlY3QgKElEMC1JRDcpCitKMSAgICAgICAgICBJUlEgU2VsZWN0CitKMiAgICAgICAgICBST00gRW5hYmxlCitKMyAgICAgICAgICBFeHRyYSBUaW1lb3V0CitMRUQxICAgICAgICBBY3Rpdml0eSBMRUQgCitCTkMgICAgICAgICBDb2F4IGNvbm5lY3RvciAoQlVTIEFSQ25ldCkKK1JKICAgICAgICAgIFR3aXN0ZWQgUGFpciBDb25uZWN0b3IgKGRhaXN5IGNoYWluKQorCisKK1NldHRpbmcgdGhlIE5vZGUgSUQKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGVpZ2h0IHN3aXRjaGVzIGluIFNXMiBhcmUgdXNlZCB0byBzZXQgdGhlIG5vZGUgSUQuIEVhY2ggbm9kZSBhdHRhY2hlZCB0bwordGhlIG5ldHdvcmsgbXVzdCBoYXZlIGFuIHVuaXF1ZSBub2RlIElEIHdoaWNoIG11c3Qgbm90IGJlIDAuICBTd2l0Y2ggMSAoSUQwKQorc2VydmVzIGFzIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgKExTQikuCisKK1NldHRpbmcgb25lIG9mIHRoZSBzd2l0Y2hlcyB0byBPZmYgbWVhbnMgIjEiLCBPbiBtZWFucyAiMCIuCisKK1RoZSBub2RlIElEIGlzIHRoZSBzdW0gb2YgdGhlIHZhbHVlcyBvZiBhbGwgc3dpdGNoZXMgc2V0IHRvICIxIgorVGhlc2UgdmFsdWVzIGFyZToKKworICAgU3dpdGNoIHwgTGFiZWwgfCBWYWx1ZQorICAgLS0tLS0tLXwtLS0tLS0tfC0tLS0tLS0KKyAgICAgMSAgICB8IElEMCAgIHwgICAxCisgICAgIDIgICAgfCBJRDEgICB8ICAgMgorICAgICAzICAgIHwgSUQyICAgfCAgIDQKKyAgICAgNCAgICB8IElEMyAgIHwgICA4CisgICAgIDUgICAgfCBJRDQgICB8ICAxNgorICAgICA2ICAgIHwgSUQ1ICAgfCAgMzIKKyAgICAgNyAgICB8IElENiAgIHwgIDY0CisgICAgIDggICAgfCBJRDcgICB8IDEyOAorCitTZXR0aW5nIHRoZSBJL08gQmFzZSBBZGRyZXNzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBsYXN0IHRocmVlIHN3aXRjaGVzIGluIHN3aXRjaCBibG9jayBTVzEgYXJlIHVzZWQgdG8gc2VsZWN0IG9uZQorb2YgZWlnaHQgcG9zc2libGUgSS9PIEJhc2UgYWRkcmVzc2VzIHVzaW5nIHRoZSBmb2xsb3dpbmcgdGFibGU6CisKKworICAgU3dpdGNoICAgICAgfCBIZXggSS9PCisgICAgNiAgIDcgICA4ICB8IEFkZHJlc3MKKyAgIC0tLS0tLS0tLS0tLXwtLS0tLS0tLQorICAgT04gIE9OICBPTiAgfCAgMjYwICAoTWFudWZhY3R1cmVyJ3MgZGVmYXVsdCkKKyAgIE9GRiBPTiAgT04gIHwgIDI5MAorICAgT04gIE9GRiBPTiAgfCAgMkUwICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgT0ZGIE9GRiBPTiAgfCAgMkYwCisgICBPTiAgT04gIE9GRiB8ICAzMDAKKyAgIE9GRiBPTiAgT0ZGIHwgIDM1MAorICAgT04gIE9GRiBPRkYgfCAgMzgwCisgICBPRkYgT0ZGIE9GRiB8ICAzRTAKKworCitTZXR0aW5nIHRoZSBCYXNlIE1lbW9yeSAoUkFNKSBidWZmZXIgQWRkcmVzcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG1lbW9yeSBidWZmZXIgKFJBTSkgcmVxdWlyZXMgMksuIFRoZSBiYXNlIG9mIHRoaXMgYnVmZmVyIGNhbiBiZQorbG9jYXRlZCBpbiBhbnkgb2YgZWlnaHQgcG9zaXRpb25zLiBUaGUgYWRkcmVzcyBvZiB0aGUgQm9vdCBQcm9tIGlzCittZW1vcnkgYmFzZSArIDB4MjAwMC4KK0p1bXBlcnMgMy01IG9mIHN3aXRjaCBibG9jayBTVzEgc2VsZWN0IHRoZSBNZW1vcnkgQmFzZSBhZGRyZXNzLgorCisgICBTd2l0Y2ggICAgICAgICAgICAgIHwgSGV4IFJBTSB8IEhleCBST00KKyAgICAxICAgMiAgIDMgICA0ICAgNSAgfCBBZGRyZXNzIHwgQWRkcmVzcyAqKQorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tCisgICBPTiAgT04gIE9OICBPTiAgT04gIHwgIEMwMDAwICB8ICBDMjAwMAorICAgT04gIE9OICBPRkYgT04gIE9OICB8ICBDNDAwMCAgfCAgQzYwMDAgIChNYW51ZmFjdHVyZXIncyBkZWZhdWx0KSAKKyAgIE9OICBPTiAgT04gIE9GRiBPTiAgfCAgQ0MwMDAgIHwgIENFMDAwCisgICBPTiAgT04gIE9GRiBPRkYgT04gIHwgIEQwMDAwICB8ICBEMjAwMCAgCisgICBPTiAgT04gIE9OICBPTiAgT0ZGIHwgIEQ0MDAwICB8ICBENjAwMAorICAgT04gIE9OICBPRkYgT04gIE9GRiB8ICBEODAwMCAgfCAgREEwMDAKKyAgIE9OICBPTiAgT04gIE9GRiBPRkYgfCAgREMwMDAgIHwgIERFMDAwCisgICBPTiAgT04gIE9GRiBPRkYgT0ZGIHwgIEUwMDAwICB8ICBFMjAwMAorCisqKSBUbyBlbmFibGUgdGhlIEJvb3QgUk9NIHNob3J0IHRoZSBqdW1wZXIgSjIuCisKK1RoZSBqdW1wZXJzIDEgYW5kIDIgcHJvYmFibHkgYWRkIDB4MDgwMCBhbmQgMHgxMDAwIHRvIFJBTSBhZGRyZXNzLgorCisKK1NldHRpbmcgdGhlIEludGVycnVwdCBMaW5lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitKdW1wZXJzIDEtNSBvZiB0aGUganVtcGVyIGJsb2NrIEoxIGNvbnRyb2wgdGhlIElSUSBsZXZlbC4gIE9OIG1lYW5zCitzaG9ydGVkLCBPRkYgbWVhbnMgb3Blbi4KKworICAgIEp1bXBlciAgICAgICAgICAgICAgfCAgSVJRCisgICAgMSAgIDIgICAzICAgNCAgIDUgICB8CisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgT04gIE9GRiBPRkYgT0ZGIE9GRiB8ICAyCisgICAgT0ZGIE9OICBPRkYgT0ZGIE9GRiB8ICAzCisgICAgT0ZGIE9GRiBPTiAgT0ZGIE9GRiB8ICA0CisgICAgT0ZGIE9GRiBPRkYgT04gIE9GRiB8ICA1CisgICAgT0ZGIE9GRiBPRkYgT0ZGIE9OICB8ICA3CisKKworU2V0dGluZyB0aGUgVGltZW91dCBQYXJhbWV0ZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGp1bXBlcnMgSjMgYXJlIHVzZWQgdG8gc2V0IHRoZSB0aW1lb3V0IHBhcmFtZXRlcnMuIFRoZXNlIHR3byAKK2p1bXBlcnMgYXJlIG5vcm1hbGx5IGxlZnQgb3Blbi4KKworICAKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyoqIFRob21hcy1Db25yYWQgKioKK01vZGVsICM1MDAtNjI0Mi0wMDk3IFJFViBBICg4LWJpdCBjYXJkKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIC0gZnJvbSBMYXJzIEthcmxzc29uIDwxMDA2MTcuMzQ3M0Bjb21wdXNlcnZlLmNvbT4KKworICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworICAgfCAgICAgICAgICBfX19fX19fXyAgIF9fX19fX19fICAgICAgICAgICAgICAgICAgICAgICAgICAgfF9fX19fCisgICB8ICAgICAgICAgfC4uLi4uLi4ufCB8Li4uLi4uLi58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICB8X19fX19fX198IHxfX19fX19fX3wgICAgICAgICAgICAgICAgICAgICAgICAgX19ffAorICAgfCAgICAgICAgICAgIFNXIDMgICAgICAgU1cgMSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICB8CisgICB8ICAgICAgICAgQmFzZSBJL08gICBCYXNlIEFkZHIuICAgICAgICAgICAgICAgIFN0YXRpb24gfCAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyB8ICAgfAorICAgfCAgICBfX19fX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggIHwgICB8CisgICB8ICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIHwKKyAgIHwgICB8ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8X19ffCAgICAKKyAgIHwgICB8ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX19fXyAgICAgICAgfF9fXy5fCisgICB8ICAgfF9fX19fX3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxfX19fX198ICAgICAgICAgX19fX3wgQk5DCisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKdW1wZXItICAgICAgICBfX19fX3wgQ29ubmVjdG9yCisgICB8ICAgTWFpbiBjaGlwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jayAgXyAgICBfX3wgICAnICAKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgfCAgICBSSiBDb25uZWN0b3IKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxffCAgfCAgICB3aXRoIDExMCBPaG0KKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfF9fICBUZXJtaW5hdG9yCisgICB8ICAgIF9fX19fX19fX19fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3wKKyAgIHwgICB8Li4uLi4uLi4uLi58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICBSSi1qYWNrCisgICB8ICAgfC4uLi4uLi4uLi4ufCAgICBfX19fXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgKHVudXNlZCkKKyAgIHwgICB8X19fX19fX19fX198ICAgfF9fX19ffCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfF9fCisgICB8ICBCb290IFBST00gc29ja2V0IElSUS1qdW1wZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxfICBEaWFnbm9zdGljCisgICB8X19fX19fX18gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXyAgICAgICAgICBffCBMRUQgKHJlZCkKKyAgICAgICAgICAgIHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCAgfCAgICAgICAgfAorICAgICAgICAgICAgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8IHwgfCB8ICB8X19fX19fX198CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCitBbmQgaGVyZSBhcmUgdGhlIHNldHRpbmdzIGZvciBzb21lIG9mIHRoZSBzd2l0Y2hlcyBhbmQganVtcGVycyBvbiB0aGUgY2FyZHMuCisKKworICAgICAgICAgIEkvTworCisgICAgICAgICAxIDIgMyA0IDUgNiA3IDgKKworMkUwLS0tLS0gMCAwIDAgMSAwIDAgMCAxCisyRjAtLS0tLSAwIDAgMCAxIDAgMCAwIDAKKzMwMC0tLS0tIDAgMCAwIDAgMSAxIDEgMQorMzUwLS0tLS0gMCAwIDAgMCAxIDEgMSAwCisKKyIwIiBpbiB0aGUgYWJvdmUgZXhhbXBsZSBtZWFucyBzd2l0Y2ggaXMgb2ZmICIxIiBtZWFucyB0aGF0IGl0IGlzIG9uLgorCisKKyAgICBTaE1lbSBhZGRyZXNzLgorCisgICAgICAxIDIgMyA0IDUgNiA3IDgKKworQ1gwMC0tMCAwIDEgMSB8IHwgICB8CitEWDAwLS0wIDAgMSAwICAgICAgIHwKK1gwMDAtLS0tLS0tLS0gMSAxICAgfAorWDQwMC0tLS0tLS0tLSAxIDAgICB8CitYODAwLS0tLS0tLS0tIDAgMSAgIHwKK1hDMDAtLS0tLS0tLS0gMCAwICAgCitFTkhBTkNFRC0tLS0tLS0tLS0tIDEKK0NPTVBBVElCTEUtLS0tLS0tLS0gMAorCisKKyAgICAgICBJUlEKKworCisgICAzIDQgNSA3IDIKKyAgIC4gLiAuIC4gLgorICAgLiAuIC4gLiAuCisKKworVGhlcmUgaXMgYSBESVAtc3dpdGNoIHdpdGggOCBzd2l0Y2hlcywgdXNlZCB0byBzZXQgdGhlIHNoYXJlZCBtZW1vcnkgYWRkcmVzcwordG8gYmUgdXNlZC4gVGhlIGZpcnN0IDYgc3dpdGNoZXMgc2V0IHRoZSBhZGRyZXNzLCB0aGUgN3RoIGRvZXNuJ3QgaGF2ZSBhbnkKK2Z1bmN0aW9uLCBhbmQgdGhlIDh0aCBzd2l0Y2ggaXMgdXNlZCB0byBzZWxlY3QgImNvbXBhdGlibGUiIG9yICJlbmhhbmNlZCIuCitXaGVuIEkgZ290IG15IHR3byBjYXJkcywgb25lIG9mIHRoZW0gaGFkIHRoaXMgc3dpdGNoIHNldCB0byAiZW5oYW5jZWQiLiBUaGF0CitjYXJkIGRpZG4ndCB3b3JrIGF0IGFsbCwgaXQgd2Fzbid0IGV2ZW4gcmVjb2duaXplZCBieSB0aGUgZHJpdmVyLiBUaGUgb3RoZXIKK2NhcmQgaGFkIHRoaXMgc3dpdGNoIHNldCB0byAiY29tcGF0aWJsZSIgYW5kIGl0IGJlaGF2ZWQgYWJzb2x1dGVseSBub3JtYWxseS4gSQorZ3Vlc3MgdGhhdCB0aGUgc3dpdGNoIG9uIG9uZSBvZiB0aGUgY2FyZHMsIG11c3QgaGF2ZSBiZWVuIGNoYW5nZWQgYWNjaWRlbnRhbGx5Cit3aGVuIHRoZSBjYXJkIHdhcyB0YWtlbiBvdXQgb2YgaXRzIGZvcm1lciBob3N0LiBUaGUgcXVlc3Rpb24gcmVtYWlucwordW5hbnN3ZXJlZCwgd2hhdCBpcyB0aGUgcHVycG9zZSBvZiB0aGUgImVuaGFuY2VkIiBwb3NpdGlvbj8KKworW0F2ZXJ5J3Mgbm90ZTogImVuaGFuY2VkIiBwcm9iYWJseSBlaXRoZXIgZGlzYWJsZXMgc2hhcmVkIG1lbW9yeSAodXNlIElPCitwb3J0cyBpbnN0ZWFkKSBvciBkaXNhYmxlcyBJTyBwb3J0cyAodXNlIG1lbW9yeSBhZGRyZXNzZXMgaW5zdGVhZCkuICBUaGlzCit2YXJpZXMgYnkgdGhlIHR5cGUgb2YgY2FyZCBpbnZvbHZlZC4gIEkgZmFpbCB0byBzZWUgaG93IGVpdGhlciBvZiB0aGVzZQorZW5oYW5jZSBhbnl0aGluZy4gIFNlbmQgbWUgbW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIG1vZGUsIG9yCitqdXN0IHVzZSAiY29tcGF0aWJsZSIgbW9kZSBpbnN0ZWFkLl0KKworCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisqKiBXYXRlcmxvbyBNaWNyb3N5c3RlbXMgSW5jLiA/PyAqKgorOC1iaXQgY2FyZCAoQykgMTk4NQorLS0tLS0tLS0tLS0tLS0tLS0tLQorICAtIGZyb20gUm9iZXJ0IE1pY2hhZWwgQmVzdCA8cm1iMTE3QGNzLnVzYXNrLmNhPgorCitbQXZlcnkncyBub3RlOiB0aGVzZSBkb24ndCB3b3JrIHdpdGggbXkgZHJpdmVyIGZvciBzb21lIHJlYXNvbi4gIFRoZXNlIGNhcmRzCitTRUVNIHRvIGhhdmUgc2V0dGluZ3Mgc2ltaWxhciB0byB0aGUgUERJNTA4UGx1cywgd2hpY2ggaXMKK3NvZnR3YXJlLWNvbmZpZ3VyZWQgYW5kIGRvZXNuJ3Qgd29yayB3aXRoIG15IGRyaXZlciBlaXRoZXIuICBUaGUgIldhdGVybG9vCitjaGlwIiBpcyBhIGJvb3QgUFJPTSwgcHJvYmFibHkgZGVzaWduZWQgc3BlY2lmaWNhbGx5IGZvciB0aGUgVW5pdmVyc2l0eSBvZgorV2F0ZXJsb28uICBJZiB5b3UgaGF2ZSBhbnkgZnVydGhlciBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGNhcmQsIHBsZWFzZQorZS1tYWlsIG1lLl0KKworVGhlIHByb2JlIGhhcyBub3QgYmVlbiBhYmxlIHRvIGRldGVjdCB0aGUgY2FyZCBvbiBhbnkgb2YgdGhlIEoyIHNldHRpbmdzLAorYW5kIEkgdHJpZWQgdGhlbSBhZ2FpbiB3aXRoIHRoZSAiV2F0ZXJsb28iIGNoaXAgcmVtb3ZlZC4KKyAKKyBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KK3wgXC8gIFwvICAgICAgICAgICAgICBfX18gIF9fIF9fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IEM0ICBDNCAgICAgfF58ICAgICB8IE0gfHwgIF4gIHx8XnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAtLSAgLS0gICAgIHxffCAgICAgfCA1IHx8ICAgICB8fCB8IEMzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgXC8gIFwvICAgICAgQzEwICAgIHxfX198fCAgICAgfHxffCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IAorfCBDNCAgQzQgICAgICAgICAgICAgXyAgXyB8ICAgICB8ICAgICAgICAgICAgICAgICA/PyAgICAgICAgICAgICAgICAgIHwgCit8IC0tICAtLSAgICAgICAgICAgIHwgXC8gfHwgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAKK3wgICAgICAgICAgICAgICAgICAgfCAgICB8fCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IAorfCAgICAgICAgICAgICAgICAgICB8ICAgIHx8ICBDMSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgCit8ICAgICAgICAgICAgICAgICAgIHwgICAgfHwgICAgIHwgIFwvICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX19ffCAgICAKK3wgICAgICAgICAgICAgICAgICAgfCBDNiB8fCAgICAgfCAgQzkgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8X19fIAorfCAgICAgICAgICAgICAgICAgICB8ICAgIHx8ICAgICB8ICAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQk5DIHxfX198IAorfCAgICAgICAgICAgICAgICAgICB8ICAgIHx8ICAgICB8ICAgICAgICAgID5DN3wgICAgICAgICAgICAgICAgIHxfX19fX3wKK3wgICAgICAgICAgICAgICAgICAgfCAgICB8fCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IF9fIF9fICAgICAgICAgICAgIHxfX19ffHxfX19fX3wgICAgICAgMSAyIDMgICAgIDYgICAgICAgICAgICAgICAgICAgfAorfHwgIF4gIHwgICAgID5DNHwgICAgICAgICAgICAgICAgICAgICAgfG98b3xvfG98b3xvfCBKMiAgICA+QzR8ICAgICAgIHwKK3x8ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxvfG98b3xvfG98b3wgICAgICAgICAgICAgICAgICB8Cit8fCBDMiAgfCAgICAgPkM0fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5DNHwgICAgICAgfAorfHwgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5DOHwgICAgICAgICAgICAgICAgICAgICAgIHwKK3x8ICAgICB8ICAgICAgIDIgMyA0IDUgNiA3ICBJUlEgICAgICAgICAgICAgICAgICAgICAgICAgICAgPkM0fCAgICAgICB8Cit8fF9fX19ffCAgICAgIHxvfG98b3xvfG98b3wgSjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfF9fX19fX18gICAgICB8b3xvfG98b3xvfG98ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX19fX19fX19fX19fX3wKKyAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wKKworQzEgLS0gIkNPTTkwMjYKKyAgICAgICBTTUMgODYzOCIKKyAgICAgIEluIGEgY2hpcCBzb2NrZXQuCisKK0MyIC0tICJAQ29weXJpZ2h0CisgICAgICAgV2F0ZXJsb28gTWljcm9zeXN0ZW1zIEluYy4KKyAgICAgICAxOTg1IgorICAgICAgSW4gYSBjaGlwIFNvY2tldCB3aXRoIGluZm8gcHJpbnRlZCBvbiBhIGxhYmVsIGNvdmVyaW5nIGEgcm91bmQgd2luZG93CisgICAgICBzaG93aW5nIHRoZSBjaXJjdWl0IGluc2lkZS4gKFRoZSB3aW5kb3cgaW5kaWNhdGVzIGl0IGlzIGFuIEVQUk9NIGNoaXAuKQorCitDMyAtLSAiQ09NOTAzMgorICAgICAgIFNNQyA4NjQzIgorICAgICAgSW4gYSBjaGlwIHNvY2tldC4KKworQzQgLS0gIjc0TFMiCisgICAgICA5IHRvdGFsIG5vIHNvY2tldHMuCisKK001IC0tICI1MDAwNi0xMzYKKyAgICAgICAyMC4wMDAwMDAgTUhaCisgICAgICAgTVRRLVQxLVMzCisgICAgICAgMCBNLVRST04gODYtNDAiCisgICAgICBNZXRhbGxpYyBjYXNlIHdpdGggNCBwaW5zLCBubyBzb2NrZXQuCisKK0M2IC0tICJNT1NURUtAVEM4NjQzCisgICAgICAgTUs2MTE2Ti0yMAorICAgICAgIE1BTEFZU0lBIgorICAgICAgTm8gc29ja2V0LgorCitDNyAtLSBObyBzdGFtcCBvciBsYWJlbCBidXQgaW4gYSAyMCBwaW4gY2hpcCBzb2NrZXQuCisKK0M4IC0tICJQQUwxMEw4Q04KKyAgICAgICA4NjIzIgorICAgICAgSW4gYSAyMCBwaW4gc29ja2V0LgorCitDOSAtLSAiUEFsMTZSNEEtMkNOCisgICAgICAgODY0MSIKKyAgICAgIEluIGEgMjAgcGluIHNvY2tldC4KKworQzEwIC0tICJNODY0MAorICAgICAgICAgIE5NQworICAgICAgICA5MzA2TiIKKyAgICAgICBJbiBhbiA4IHBpbiBzb2NrZXQuCisKKz8/IC0tIFNvbWUgY29tcG9uZW50cyBvbiBhIHNtYWxsZXIgYm9hcmQgYW5kIGF0dGFjaGVkIHdpdGggMjAgcGlucyBhbGwgCisgICAgICBhbG9uZyB0aGUgc2lkZSBjbG9zZXN0IHRvIHRoZSBCTkMgY29ubmVjdG9yLiAgVGhlIGFyZSBjb2F0ZWQgaW4gYSBkYXJrIAorICAgICAgcmVzaW4uCisKK09uIHRoZSBib2FyZCB0aGVyZSBhcmUgdHdvIGp1bXBlciBiYW5rcyBsYWJlbGVkIEoyIGFuZCBKMy4gVGhlIAorbWFudWZhY3R1cmVyIGRpZG4ndCBwdXQgYSBKMSBvbiB0aGUgYm9hcmQuIFRoZSB0d28gYm9hcmRzIEkgaGF2ZSBib3RoIAorY2FtZSB3aXRoIGEganVtcGVyIGJveCBmb3IgZWFjaCBiYW5rLgorCitKMiAtLSBOdW1iZXJlZCAxIDIgMyA0IDUgNi4gCisgICAgICA0IGFuZCA1IGFyZSBub3Qgc3RhbXBlZCBkdWUgdG8gc29sZGVyIHBvaW50cy4KKyAgICAgICAKK0ozIC0tIElSUSAyIDMgNCA1IDYgNworCitUaGUgYm9hcmQgaXRzZWxmIGhhcyBhIG1hcGxlIGxlYWYgc3RhbXBlZCBqdXN0IGFib3ZlIHRoZSBpcnEganVtcGVycyAKK2FuZCAiLTIgNDYtODYiIGJlc2lkZSBDMi4gQmV0d2VlbiBDMSBhbmQgQzYgIkFTUyAnWSAzMDAxNjMiIGFuZCAiQDE5ODYgCitDT1JNQU4gQ1VTVE9NIEVMRUNUUk9OSUNTIENPUlAuIiBzdGFtcGVkIGp1c3QgYmVsb3cgdGhlIEJOQyBjb25uZWN0b3IuCitCZWxvdyB0aGF0ICJNQURFIElOIENBTkFEQSIKKworICAKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyoqIE5vIE5hbWUgKioKKzgtYml0IGNhcmRzLCAxNi1iaXQgY2FyZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgLSBmcm9tIEp1ZXJnZW4gU2VpZmVydCA8c2VpZmVydEBodHdtLmRlPgorICAKK05PTkFNRSA4LUJJVCBBUkNORVQKKz09PT09PT09PT09PT09PT09PT0KKworSSBoYXZlIG5hbWVkIHRoaXMgQVJDbmV0IGNhcmQgIk5PTkFNRSIsIHNpbmNlIHRoZXJlIGlzIG5vIG5hbWUgb2YgYW55CittYW51ZmFjdHVyZXIgb24gdGhlIEluc3RhbGxhdGlvbiBtYW51YWwgbm9yIG9uIHRoZSBzaGlwcGluZyBib3guIFRoZSBvbmx5CitoaW50IHRvIHRoZSBleGlzdGVuY2Ugb2YgYSBtYW51ZmFjdHVyZXIgYXQgYWxsIGlzIHdyaXR0ZW4gaW4gY29wcGVyLAoraXQgaXMgIk1hZGUgaW4gVGFpd2FuIgorCitUaGlzIGRlc2NyaXB0aW9uIGhhcyBiZWVuIHdyaXR0ZW4gYnkgSnVlcmdlbiBTZWlmZXJ0IDxzZWlmZXJ0QGh0d20uZGU+Cit1c2luZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBPcmlnaW5hbAorICAgICAgICAgICAgICAgICAgICAiQVJDbmV0IEluc3RhbGxhdGlvbiBNYW51YWwiCisKKworICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKyAgIHwgfFNUQVJ8IEJVU3wgVC9QfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCB8X19fX3xfX19ffF9fX198ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX19fX19fX19fX19fX19fX19fXyAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICBTTUMgICAgICAgICAgfCAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICBDT005MEM2NSAgICAgIHwgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfF9fX19fX19fX18tX19fX19fX19fX3wgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX19ffAorICAgfCAgICAgIF9fX19fX19fX19fX19fXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICBDTiB8CisgICB8ICAgICB8IFBST00gICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxfX19fX3wKKyAgIHwgICAgID4gU09DS0VUICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgfF9fX19fX19fX19fX19fX3wgICAgICAgICAxIDIgMyA0IDUgNiA3IDggIDEgMiAzIDQgNSA2IDcgOCB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX19fX19fX19fX19fXyAgX19fX19fX19fX19fX19fIHwKKyAgIHwgICAgICAgICAgIHxvfG98b3xvfG98b3xvfG98ICB8ICAgICAgU1cxICAgICAgfHwgICAgICBTVzIgICAgICB8fAorICAgfCAgICAgICAgICAgfG98b3xvfG98b3xvfG98b3wgIHxfX19fX19fX19fX19fX198fF9fX19fX19fX19fX19fX3x8CisgICB8X19fICAgICAgICAgMiAzIDQgNSA3IEUgRSBSICAgICAgICBOb2RlIElEICAgICAgIElPQl9ffF9fTUVNX19fX3wKKyAgICAgICB8ICAgICAgICBcIElSUSAgIC8gVCBUIE8gICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgIHxfX19fX19fX19fX19fX19fX18xXzJfTV9fX19fX19fX19fX19fX19fX19fX198CisKK0xlZ2VuZDoKKworQ09NOTBDNjU6ICAgICAgIEFSQ25ldCBQcm9iZQorUzEgIDEtODogICAgTm9kZSBJRCBTZWxlY3QKK1MyICAxLTM6ICAgIEkvTyBCYXNlIEFkZHJlc3MgU2VsZWN0CisgICAgNC02OiAgICBNZW1vcnkgQmFzZSBBZGRyZXNzIFNlbGVjdAorICAgIDctODogICAgUkFNIE9mZnNldCBTZWxlY3QKK0VUMSwgRVQyICAgIEV4dGVuZGVkIFRpbWVvdXQgU2VsZWN0CitST00gICAgIFJPTSBFbmFibGUgU2VsZWN0CitDTiAgICAgICAgICAgICAgUkc2MiBDb2F4IENvbm5lY3RvcgorU1RBUnwgQlVTIHwgVC9QIFRocmVlIGZpZWxkcyBmb3IgcGxhY2luZyBhIHNpZ24gKGNvbG9yZWQgY2lyY2xlKQorICAgICAgICAgICAgICAgIGluZGljYXRpbmcgdGhlIHRvcG9sb2d5IG9mIHRoZSBjYXJkCisKK1NldHRpbmcgb25lIG9mIHRoZSBzd2l0Y2hlcyB0byBPZmYgbWVhbnMgIjEiLCBPbiBtZWFucyAiMCIuCisKKworU2V0dGluZyB0aGUgTm9kZSBJRAorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZWlnaHQgc3dpdGNoZXMgaW4gZ3JvdXAgU1cxIGFyZSB1c2VkIHRvIHNldCB0aGUgbm9kZSBJRC4KK0VhY2ggbm9kZSBhdHRhY2hlZCB0byB0aGUgbmV0d29yayBtdXN0IGhhdmUgYW4gdW5pcXVlIG5vZGUgSUQgd2hpY2gKK211c3QgYmUgZGlmZmVyZW50IGZyb20gMC4KK1N3aXRjaCA4IHNlcnZlcyBhcyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IChMU0IpLgorCitUaGUgbm9kZSBJRCBpcyB0aGUgc3VtIG9mIHRoZSB2YWx1ZXMgb2YgYWxsIHN3aXRjaGVzIHNldCB0byAiMSIgIAorVGhlc2UgdmFsdWVzIGFyZToKKworICAgIFN3aXRjaCB8IFZhbHVlCisgICAgLS0tLS0tLXwtLS0tLS0tCisgICAgICA4ICAgIHwgICAxCisgICAgICA3ICAgIHwgICAyCisgICAgICA2ICAgIHwgICA0CisgICAgICA1ICAgIHwgICA4CisgICAgICA0ICAgIHwgIDE2CisgICAgICAzICAgIHwgIDMyCisgICAgICAyICAgIHwgIDY0CisgICAgICAxICAgIHwgMTI4CisKK1NvbWUgRXhhbXBsZXM6CisKKyAgICBTd2l0Y2ggICAgICAgICB8IEhleCAgICAgfCBEZWNpbWFsIAorICAgMSAyIDMgNCA1IDYgNyA4IHwgTm9kZSBJRCB8IE5vZGUgSUQKKyAgIC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLQorICAgMCAwIDAgMCAwIDAgMCAwIHwgICAgbm90IGFsbG93ZWQKKyAgIDAgMCAwIDAgMCAwIDAgMSB8ICAgIDEgICAgfCAgICAxIAorICAgMCAwIDAgMCAwIDAgMSAwIHwgICAgMiAgICB8ICAgIDIKKyAgIDAgMCAwIDAgMCAwIDEgMSB8ICAgIDMgICAgfCAgICAzCisgICAgICAgLiAuIC4gICAgICAgfCAgICAgICAgIHwKKyAgIDAgMSAwIDEgMCAxIDAgMSB8ICAgNTUgICAgfCAgIDg1CisgICAgICAgLiAuIC4gICAgICAgfCAgICAgICAgIHwKKyAgIDEgMCAxIDAgMSAwIDEgMCB8ICAgQUEgICAgfCAgMTcwCisgICAgICAgLiAuIC4gICAgICAgfCAgICAgICAgIHwgIAorICAgMSAxIDEgMSAxIDEgMCAxIHwgICBGRCAgICB8ICAyNTMKKyAgIDEgMSAxIDEgMSAxIDEgMCB8ICAgRkUgICAgfCAgMjU0CisgICAxIDEgMSAxIDEgMSAxIDEgfCAgIEZGICAgIHwgIDI1NQorCisKK1NldHRpbmcgdGhlIEkvTyBCYXNlIEFkZHJlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZpcnN0IHRocmVlIHN3aXRjaGVzIGluIHN3aXRjaCBncm91cCBTVzIgYXJlIHVzZWQgdG8gc2VsZWN0IG9uZQorb2YgZWlnaHQgcG9zc2libGUgSS9PIEJhc2UgYWRkcmVzc2VzIHVzaW5nIHRoZSBmb2xsb3dpbmcgdGFibGUKKworICAgU3dpdGNoICAgICAgfCBIZXggSS9PCisgICAgMSAgIDIgICAzICB8IEFkZHJlc3MKKyAgIC0tLS0tLS0tLS0tLXwtLS0tLS0tLQorICAgT04gIE9OICBPTiAgfCAgMjYwCisgICBPTiAgT04gIE9GRiB8ICAyOTAKKyAgIE9OICBPRkYgT04gIHwgIDJFMCAgKE1hbnVmYWN0dXJlcidzIGRlZmF1bHQpCisgICBPTiAgT0ZGIE9GRiB8ICAyRjAKKyAgIE9GRiBPTiAgT04gIHwgIDMwMAorICAgT0ZGIE9OICBPRkYgfCAgMzUwCisgICBPRkYgT0ZGIE9OICB8ICAzODAKKyAgIE9GRiBPRkYgT0ZGIHwgIDNFMAorCisKK1NldHRpbmcgdGhlIEJhc2UgTWVtb3J5IChSQU0pIGJ1ZmZlciBBZGRyZXNzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbWVtb3J5IGJ1ZmZlciByZXF1aXJlcyAySyBvZiBhIDE2SyBibG9jayBvZiBSQU0uIFRoZSBiYXNlIG9mIHRoaXMKKzE2SyBibG9jayBjYW4gYmUgbG9jYXRlZCBpbiBhbnkgb2YgZWlnaHQgcG9zaXRpb25zLgorU3dpdGNoZXMgNC02IG9mIHN3aXRjaCBncm91cCBTVzIgc2VsZWN0IHRoZSBCYXNlIG9mIHRoZSAxNksgYmxvY2suCitXaXRoaW4gdGhhdCAxNksgYWRkcmVzcyBzcGFjZSwgdGhlIGJ1ZmZlciBtYXkgYmUgYXNzaWduZWQgYW55IG9uZSBvZiBmb3VyCitwb3NpdGlvbnMsIGRldGVybWluZWQgYnkgdGhlIG9mZnNldCwgc3dpdGNoZXMgNyBhbmQgOCBvZiBncm91cCBTVzIuCisKKyAgIFN3aXRjaCAgICAgfCBIZXggUkFNIHwgSGV4IFJPTQorICAgNCA1IDYgIDcgOCB8IEFkZHJlc3MgfCBBZGRyZXNzICopCisgICAtLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLS0KKyAgIDAgMCAwICAwIDAgfCAgQzAwMDAgIHwgIEMyMDAwCisgICAwIDAgMCAgMCAxIHwgIEMwODAwICB8ICBDMjAwMAorICAgMCAwIDAgIDEgMCB8ICBDMTAwMCAgfCAgQzIwMDAKKyAgIDAgMCAwICAxIDEgfCAgQzE4MDAgIHwgIEMyMDAwCisgICAgICAgICAgICAgIHwgICAgICAgICB8CisgICAwIDAgMSAgMCAwIHwgIEM0MDAwICB8ICBDNjAwMAorICAgMCAwIDEgIDAgMSB8ICBDNDgwMCAgfCAgQzYwMDAKKyAgIDAgMCAxICAxIDAgfCAgQzUwMDAgIHwgIEM2MDAwCisgICAwIDAgMSAgMSAxIHwgIEM1ODAwICB8ICBDNjAwMAorICAgICAgICAgICAgICB8ICAgICAgICAgfAorICAgMCAxIDAgIDAgMCB8ICBDQzAwMCAgfCAgQ0UwMDAKKyAgIDAgMSAwICAwIDEgfCAgQ0M4MDAgIHwgIENFMDAwCisgICAwIDEgMCAgMSAwIHwgIENEMDAwICB8ICBDRTAwMAorICAgMCAxIDAgIDEgMSB8ICBDRDgwMCAgfCAgQ0UwMDAKKyAgICAgICAgICAgICAgfCAgICAgICAgIHwKKyAgIDAgMSAxICAwIDAgfCAgRDAwMDAgIHwgIEQyMDAwICAoTWFudWZhY3R1cmVyJ3MgZGVmYXVsdCkKKyAgIDAgMSAxICAwIDEgfCAgRDA4MDAgIHwgIEQyMDAwCisgICAwIDEgMSAgMSAwIHwgIEQxMDAwICB8ICBEMjAwMAorICAgMCAxIDEgIDEgMSB8ICBEMTgwMCAgfCAgRDIwMDAKKyAgICAgICAgICAgICAgfCAgICAgICAgIHwKKyAgIDEgMCAwICAwIDAgfCAgRDQwMDAgIHwgIEQ2MDAwCisgICAxIDAgMCAgMCAxIHwgIEQ0ODAwICB8ICBENjAwMAorICAgMSAwIDAgIDEgMCB8ICBENTAwMCAgfCAgRDYwMDAKKyAgIDEgMCAwICAxIDEgfCAgRDU4MDAgIHwgIEQ2MDAwCisgICAgICAgICAgICAgIHwgICAgICAgICB8CisgICAxIDAgMSAgMCAwIHwgIEQ4MDAwICB8ICBEQTAwMAorICAgMSAwIDEgIDAgMSB8ICBEODgwMCAgfCAgREEwMDAKKyAgIDEgMCAxICAxIDAgfCAgRDkwMDAgIHwgIERBMDAwCisgICAxIDAgMSAgMSAxIHwgIEQ5ODAwICB8ICBEQTAwMAorICAgICAgICAgICAgICB8ICAgICAgICAgfAorICAgMSAxIDAgIDAgMCB8ICBEQzAwMCAgfCAgREUwMDAKKyAgIDEgMSAwICAwIDEgfCAgREM4MDAgIHwgIERFMDAwCisgICAxIDEgMCAgMSAwIHwgIEREMDAwICB8ICBERTAwMAorICAgMSAxIDAgIDEgMSB8ICBERDgwMCAgfCAgREUwMDAKKyAgICAgICAgICAgICAgfCAgICAgICAgIHwKKyAgIDEgMSAxICAwIDAgfCAgRTAwMDAgIHwgIEUyMDAwCisgICAxIDEgMSAgMCAxIHwgIEUwODAwICB8ICBFMjAwMAorICAgMSAxIDEgIDEgMCB8ICBFMTAwMCAgfCAgRTIwMDAKKyAgIDEgMSAxICAxIDEgfCAgRTE4MDAgIHwgIEUyMDAwCisgIAorKikgVG8gZW5hYmxlIHRoZSA4SyBCb290IFBST00gaW5zdGFsbCB0aGUganVtcGVyIFJPTS4KKyAgIFRoZSBkZWZhdWx0IGlzIGp1bXBlciBST00gbm90IGluc3RhbGxlZC4KKworCitTZXR0aW5nIEludGVycnVwdCBSZXF1ZXN0IExpbmVzIChJUlEpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RvIHNlbGVjdCBhIGhhcmR3YXJlIGludGVycnVwdCBsZXZlbCBzZXQgb25lIChvbmx5IG9uZSEpIG9mIHRoZSBqdW1wZXJzCitJUlEyLCBJUlEzLCBJUlE0LCBJUlE1IG9yIElSUTcuIFRoZSBtYW51ZmFjdHVyZXIncyBkZWZhdWx0IGlzIElSUTIuCisgCisKK1NldHRpbmcgdGhlIFRpbWVvdXRzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgdHdvIGp1bXBlcnMgbGFiZWxlZCBFVDEgYW5kIEVUMiBhcmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHRpbWVvdXQKK3BhcmFtZXRlcnMgKHJlc3BvbnNlIGFuZCByZWNvbmZpZ3VyYXRpb24gdGltZSkuIEV2ZXJ5IG5vZGUgaW4gYSBuZXR3b3JrCittdXN0IGJlIHNldCB0byB0aGUgc2FtZSB0aW1lb3V0IHZhbHVlcy4KKworICAgRVQxIEVUMiB8IFJlc3BvbnNlIFRpbWUgKHVzKSB8IFJlY29uZmlndXJhdGlvbiBUaW1lIChtcykKKyAgIC0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBPZmYgT2ZmIHwgICAgICAgIDc4ICAgICAgICAgIHwgICAgICAgICAgODQwICAgKERlZmF1bHQpCisgICBPZmYgT24gIHwgICAgICAgMjg1ICAgICAgICAgIHwgICAgICAgICAxNjgwCisgICBPbiAgT2ZmIHwgICAgICAgNTYzICAgICAgICAgIHwgICAgICAgICAxNjgwCisgICBPbiAgT24gIHwgICAgICAxMTMwICAgICAgICAgIHwgICAgICAgICAxNjgwCisKK09uIG1lYW5zIGp1bXBlciBpbnN0YWxsZWQsIE9mZiBtZWFucyBqdW1wZXIgbm90IGluc3RhbGxlZAorCisKK05PTkFNRSAxNi1CSVQgQVJDTkVUCis9PT09PT09PT09PT09PT09PT09PQorCitUaGUgbWFudWFsIG9mIG15IDgtQml0IE5PTkFNRSBBUkNuZXQgQ2FyZCBjb250YWlucyBhbm90aGVyIGRlc2NyaXB0aW9uCitvZiBhIDE2LUJpdCBDb2F4IC8gVHdpc3RlZCBQYWlyIENhcmQuIFRoaXMgZGVzY3JpcHRpb24gaXMgaW5jb21wbGV0ZSwKK2JlY2F1c2UgdGhlcmUgYXJlIG1pc3NpbmcgdHdvIHBhZ2VzIGluIHRoZSBtYW51YWwgYm9va2xldC4gKFRoZSB0YWJsZQorb2YgY29udGVudHMgcmVwb3J0cyBwYWdlcyAuLi4gMi05LCAyLTExLCAyLTEyLCAzLTEsIC4uLiBidXQgaW5zaWRlCit0aGUgYm9va2xldCB0aGVyZSBpcyBhIGRpZmZlcmVudCB3YXkgb2YgY291bnRpbmcgLi4uIDItOSwgMi0xMCwgQS0xLAorKGVtcHR5IHBhZ2UpLCAzLTEsIC4uLiwgMy0xOCwgQS0xIChhZ2FpbiksIEEtMikKK0Fsc28gdGhlIHBpY3R1cmUgb2YgdGhlIGJvYXJkIGxheW91dCBpcyBub3QgYXMgZ29vZCBhcyB0aGUgcGljdHVyZSBvZgorOC1CaXQgY2FyZCwgYmVjYXVzZSB0aGVyZSBpc24ndCBhbnkgbGV0dGVyIGxpa2UgIlNXMSIgd3JpdHRlbiB0byB0aGUKK3BpY3R1cmUuCitTaG91bGQgc29tZWJvZHkgaGF2ZSBzdWNoIGEgYm9hcmQsIHBsZWFzZSBmZWVsIGZyZWUgdG8gY29tcGxldGUgdGhpcworZGVzY3JpcHRpb24gb3IgdG8gc2VuZCBhIG1haWwgdG8gbWUhCisKK1RoaXMgZGVzY3JpcHRpb24gaGFzIGJlZW4gd3JpdHRlbiBieSBKdWVyZ2VuIFNlaWZlcnQgPHNlaWZlcnRAaHR3bS5kZT4KK3VzaW5nIGluZm9ybWF0aW9uIGZyb20gdGhlIE9yaWdpbmFsCisgICAgICAgICAgICAgICAgICAgICJBUkNuZXQgSW5zdGFsbGF0aW9uIE1hbnVhbCIKKworCisgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisgIDwgICAgICAgICAgICAgICAgICAgIF9fX19fX19fX19fX19fX19fICBfX19fX19fX19fX19fX19fXyAgICAgICAgICAgfAorICA+ICAgICAgICAgICAgICAgICAgIHwgICAgICAgU1c/ICAgICAgIHx8ICAgICAgU1c/ICAgICAgICB8ICAgICAgICAgIHwKKyAgPCAgICAgICAgICAgICAgICAgICB8X19fX19fX19fX19fX19fX198fF9fX19fX19fX19fX19fX19ffCAgICAgICAgICB8CisgID4gICAgICAgICAgICAgICAgICAgICAgIF9fX19fX19fX19fX19fX19fX19fICAgICAgICAgICAgICAgICAgICAgICAgfAorICA8ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgPiAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8CisgIDwgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAorICA+ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgPCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8CisgID4gICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAorICA8ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgPiAgICAgICAgICAgICAgICAgICAgICB8X19fX19fX19fX19fX19fX19fX198ICAgICAgICAgICAgICAgICAgICAgICB8CisgIDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX19ffAorICA+ICAgICAgICAgICAgICAgICAgICAgICBfX19fX19fX19fX19fX19fX19fXyAgICAgICAgICAgICAgICAgICB8ICAgIHwKKyAgPCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgfCBKMSB8CisgID4gICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgPCAgICAgICAgICAgICAgICAgIHwgICAgfAorICA8ICAgICAgICAgICAgICAgICAgICAgIHxfX19fX19fX19fX19fX19fX19fX3wgID8gPyA/ID8gPyA/ICAgICB8X19fX3wKKyAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxvfG98b3xvfG98b3wgICAgICAgICB8CisgIDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8b3xvfG98b3xvfG98ICAgICAgICAgfAorICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgPCAgICAgICAgICAgICBfXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19fX19fX19fX198CisgID4gICAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICA8X19fX19fX19fX19ffCAgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wKKworCitTZXR0aW5nIG9uZSBvZiB0aGUgc3dpdGNoZXMgdG8gT2ZmIG1lYW5zICIxIiwgT24gbWVhbnMgIjAiLgorCisKK1NldHRpbmcgdGhlIE5vZGUgSUQKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGVpZ2h0IHN3aXRjaGVzIGluIGdyb3VwIFNXMiBhcmUgdXNlZCB0byBzZXQgdGhlIG5vZGUgSUQuCitFYWNoIG5vZGUgYXR0YWNoZWQgdG8gdGhlIG5ldHdvcmsgbXVzdCBoYXZlIGFuIHVuaXF1ZSBub2RlIElEIHdoaWNoCittdXN0IGJlIGRpZmZlcmVudCBmcm9tIDAuCitTd2l0Y2ggOCBzZXJ2ZXMgYXMgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCAoTFNCKS4KKworVGhlIG5vZGUgSUQgaXMgdGhlIHN1bSBvZiB0aGUgdmFsdWVzIG9mIGFsbCBzd2l0Y2hlcyBzZXQgdG8gIjEiICAKK1RoZXNlIHZhbHVlcyBhcmU6CisKKyAgICBTd2l0Y2ggfCBWYWx1ZQorICAgIC0tLS0tLS18LS0tLS0tLQorICAgICAgOCAgICB8ICAgMQorICAgICAgNyAgICB8ICAgMgorICAgICAgNiAgICB8ICAgNAorICAgICAgNSAgICB8ICAgOAorICAgICAgNCAgICB8ICAxNgorICAgICAgMyAgICB8ICAzMgorICAgICAgMiAgICB8ICA2NAorICAgICAgMSAgICB8IDEyOAorCitTb21lIEV4YW1wbGVzOgorCisgICAgU3dpdGNoICAgICAgICAgfCBIZXggICAgIHwgRGVjaW1hbCAKKyAgIDEgMiAzIDQgNSA2IDcgOCB8IE5vZGUgSUQgfCBOb2RlIElECisgICAtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0KKyAgIDAgMCAwIDAgMCAwIDAgMCB8ICAgIG5vdCBhbGxvd2VkCisgICAwIDAgMCAwIDAgMCAwIDEgfCAgICAxICAgIHwgICAgMSAKKyAgIDAgMCAwIDAgMCAwIDEgMCB8ICAgIDIgICAgfCAgICAyCisgICAwIDAgMCAwIDAgMCAxIDEgfCAgICAzICAgIHwgICAgMworICAgICAgIC4gLiAuICAgICAgIHwgICAgICAgICB8CisgICAwIDEgMCAxIDAgMSAwIDEgfCAgIDU1ICAgIHwgICA4NQorICAgICAgIC4gLiAuICAgICAgIHwgICAgICAgICB8CisgICAxIDAgMSAwIDEgMCAxIDAgfCAgIEFBICAgIHwgIDE3MAorICAgICAgIC4gLiAuICAgICAgIHwgICAgICAgICB8ICAKKyAgIDEgMSAxIDEgMSAxIDAgMSB8ICAgRkQgICAgfCAgMjUzCisgICAxIDEgMSAxIDEgMSAxIDAgfCAgIEZFICAgIHwgIDI1NAorICAgMSAxIDEgMSAxIDEgMSAxIHwgICBGRiAgICB8ICAyNTUKKworCitTZXR0aW5nIHRoZSBJL08gQmFzZSBBZGRyZXNzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBmaXJzdCB0aHJlZSBzd2l0Y2hlcyBpbiBzd2l0Y2ggZ3JvdXAgU1cxIGFyZSB1c2VkIHRvIHNlbGVjdCBvbmUKK29mIGVpZ2h0IHBvc3NpYmxlIEkvTyBCYXNlIGFkZHJlc3NlcyB1c2luZyB0aGUgZm9sbG93aW5nIHRhYmxlCisKKyAgIFN3aXRjaCAgICAgIHwgSGV4IEkvTworICAgIDMgICAyICAgMSAgfCBBZGRyZXNzCisgICAtLS0tLS0tLS0tLS18LS0tLS0tLS0KKyAgIE9OICBPTiAgT04gIHwgIDI2MAorICAgT04gIE9OICBPRkYgfCAgMjkwCisgICBPTiAgT0ZGIE9OICB8ICAyRTAgIChNYW51ZmFjdHVyZXIncyBkZWZhdWx0KQorICAgT04gIE9GRiBPRkYgfCAgMkYwCisgICBPRkYgT04gIE9OICB8ICAzMDAKKyAgIE9GRiBPTiAgT0ZGIHwgIDM1MAorICAgT0ZGIE9GRiBPTiAgfCAgMzgwCisgICBPRkYgT0ZGIE9GRiB8ICAzRTAKKworCitTZXR0aW5nIHRoZSBCYXNlIE1lbW9yeSAoUkFNKSBidWZmZXIgQWRkcmVzcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG1lbW9yeSBidWZmZXIgcmVxdWlyZXMgMksgb2YgYSAxNksgYmxvY2sgb2YgUkFNLiBUaGUgYmFzZSBvZiB0aGlzCisxNksgYmxvY2sgY2FuIGJlIGxvY2F0ZWQgaW4gYW55IG9mIGVpZ2h0IHBvc2l0aW9ucy4KK1N3aXRjaGVzIDYtOCBvZiBzd2l0Y2ggZ3JvdXAgU1cxIHNlbGVjdCB0aGUgQmFzZSBvZiB0aGUgMTZLIGJsb2NrLgorV2l0aGluIHRoYXQgMTZLIGFkZHJlc3Mgc3BhY2UsIHRoZSBidWZmZXIgbWF5IGJlIGFzc2lnbmVkIGFueSBvbmUgb2YgZm91cgorcG9zaXRpb25zLCBkZXRlcm1pbmVkIGJ5IHRoZSBvZmZzZXQsIHN3aXRjaGVzIDQgYW5kIDUgb2YgZ3JvdXAgU1cxLgorCisgICBTd2l0Y2ggICAgIHwgSGV4IFJBTSB8IEhleCBST00KKyAgIDggNyA2ICA1IDQgfCBBZGRyZXNzIHwgQWRkcmVzcworICAgLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tCisgICAwIDAgMCAgMCAwIHwgIEMwMDAwICB8ICBDMjAwMAorICAgMCAwIDAgIDAgMSB8ICBDMDgwMCAgfCAgQzIwMDAKKyAgIDAgMCAwICAxIDAgfCAgQzEwMDAgIHwgIEMyMDAwCisgICAwIDAgMCAgMSAxIHwgIEMxODAwICB8ICBDMjAwMAorICAgICAgICAgICAgICB8ICAgICAgICAgfAorICAgMCAwIDEgIDAgMCB8ICBDNDAwMCAgfCAgQzYwMDAKKyAgIDAgMCAxICAwIDEgfCAgQzQ4MDAgIHwgIEM2MDAwCisgICAwIDAgMSAgMSAwIHwgIEM1MDAwICB8ICBDNjAwMAorICAgMCAwIDEgIDEgMSB8ICBDNTgwMCAgfCAgQzYwMDAKKyAgICAgICAgICAgICAgfCAgICAgICAgIHwKKyAgIDAgMSAwICAwIDAgfCAgQ0MwMDAgIHwgIENFMDAwCisgICAwIDEgMCAgMCAxIHwgIENDODAwICB8ICBDRTAwMAorICAgMCAxIDAgIDEgMCB8ICBDRDAwMCAgfCAgQ0UwMDAKKyAgIDAgMSAwICAxIDEgfCAgQ0Q4MDAgIHwgIENFMDAwCisgICAgICAgICAgICAgIHwgICAgICAgICB8CisgICAwIDEgMSAgMCAwIHwgIEQwMDAwICB8ICBEMjAwMCAgKE1hbnVmYWN0dXJlcidzIGRlZmF1bHQpCisgICAwIDEgMSAgMCAxIHwgIEQwODAwICB8ICBEMjAwMAorICAgMCAxIDEgIDEgMCB8ICBEMTAwMCAgfCAgRDIwMDAKKyAgIDAgMSAxICAxIDEgfCAgRDE4MDAgIHwgIEQyMDAwCisgICAgICAgICAgICAgIHwgICAgICAgICB8CisgICAxIDAgMCAgMCAwIHwgIEQ0MDAwICB8ICBENjAwMAorICAgMSAwIDAgIDAgMSB8ICBENDgwMCAgfCAgRDYwMDAKKyAgIDEgMCAwICAxIDAgfCAgRDUwMDAgIHwgIEQ2MDAwCisgICAxIDAgMCAgMSAxIHwgIEQ1ODAwICB8ICBENjAwMAorICAgICAgICAgICAgICB8ICAgICAgICAgfAorICAgMSAwIDEgIDAgMCB8ICBEODAwMCAgfCAgREEwMDAKKyAgIDEgMCAxICAwIDEgfCAgRDg4MDAgIHwgIERBMDAwCisgICAxIDAgMSAgMSAwIHwgIEQ5MDAwICB8ICBEQTAwMAorICAgMSAwIDEgIDEgMSB8ICBEOTgwMCAgfCAgREEwMDAKKyAgICAgICAgICAgICAgfCAgICAgICAgIHwKKyAgIDEgMSAwICAwIDAgfCAgREMwMDAgIHwgIERFMDAwCisgICAxIDEgMCAgMCAxIHwgIERDODAwICB8ICBERTAwMAorICAgMSAxIDAgIDEgMCB8ICBERDAwMCAgfCAgREUwMDAKKyAgIDEgMSAwICAxIDEgfCAgREQ4MDAgIHwgIERFMDAwCisgICAgICAgICAgICAgIHwgICAgICAgICB8CisgICAxIDEgMSAgMCAwIHwgIEUwMDAwICB8ICBFMjAwMAorICAgMSAxIDEgIDAgMSB8ICBFMDgwMCAgfCAgRTIwMDAKKyAgIDEgMSAxICAxIDAgfCAgRTEwMDAgIHwgIEUyMDAwCisgICAxIDEgMSAgMSAxIHwgIEUxODAwICB8ICBFMjAwMAorICAKKworU2V0dGluZyBJbnRlcnJ1cHQgUmVxdWVzdCBMaW5lcyAoSVJRKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/PworCisKK1NldHRpbmcgdGhlIFRpbWVvdXRzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCis/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/Pz8/PworCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyoqIE5vIE5hbWUgKioKKzgtYml0IGNhcmRzICgiTWFkZSBpbiBUYWl3YW4gUi5PLkMuIikKKy0tLS0tLS0tLS0tCisgIC0gZnJvbSBWb2p0ZWNoIFBhdmxpayA8dm9qdGVjaEBzdXNlLmN6PgorCitJIGhhdmUgbmFtZWQgdGhpcyBBUkNuZXQgY2FyZCAiTk9OQU1FIiwgc2luY2UgSSBnb3Qgb25seSB0aGUgY2FyZCB3aXRoCitubyBtYW51YWwgYXQgYWxsIGFuZCB0aGUgb25seSB0ZXh0IGlkZW50aWZ5aW5nIHRoZSBtYW51ZmFjdHVyZXIgaXMgCisiTUFERSBJTiBUQUlXQU4gUi5PLkMiIHByaW50ZWQgb24gdGhlIGNhcmQuCisKKyAgICAgICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKyAgICAgICAgIHwgICAgICAgICAgICAgICAgIDEgMiAzIDQgNSA2IDcgOCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICB8IHxvfG98IEpQMSAgICAgICBvfG98b3xvfG98b3xvfG98IE9OICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgfCAgKyAgICAgICAgICAgICAgb3xvfG98b3xvfG98b3xvfCAgICAgICAgICAgICAgICAgICAgICAgIF9fX3wKKyAgICAgICAgIHwgIF9fX19fX19fX19fX18gIG98b3xvfG98b3xvfG98b3wgT0ZGICAgICAgICAgX19fX18gICAgIHwgICB8IElENworICAgICAgICAgfCB8ICAgICAgICAgICAgIHwgU1cxICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgICAgfCAgIHwgSUQ2CisgICAgICAgICB8ID4gUkFNICgyaykgICAgfCAgICAgICAgX19fX19fX19fX19fX19fX19fX18gfCAgSCAgfCAgICB8IFMgfCBJRDUKKyAgICAgICAgIHwgfF9fX19fX19fX19fX198ICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHx8ICB5ICB8ICAgIHwgVyB8IElENAorICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgfHwgIGIgIHwgICAgfCAyIHwgSUQzCisgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8fCAgciAgfCAgICB8ICAgfCBJRDIKKyAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHx8ICBpICB8ICAgIHwgICB8IElEMQorICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICA5MEM2NSAgICAgICAgfHwgIGQgIHwgICAgfF9fX3wgSUQwCisgICAgICAgICB8ICAgICAgU1czICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICB8fCAgICAgfCAgICAgICAgfCAgICAgIAorICAgICAgICAgfCB8b3xvfG98b3xvfG98b3xvfCBPTiAgfCAgICAgICAgICAgICAgICAgICAgfHwgIEkgIHwgICAgICAgIHwKKyAgICAgICAgIHwgfG98b3xvfG98b3xvfG98b3wgICAgIHwgICAgICAgICAgICAgICAgICAgIHx8ICBDICB8ICAgICAgICB8CisgICAgICAgICB8IHxvfG98b3xvfG98b3xvfG98IE9GRiB8X19fX19fX19fX19fX19fX19fX198fCAgICAgfCAgIF9fX19ffAorICAgICAgICAgfCAgMSAyIDMgNCA1IDYgNyA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgIHwgICAgIHxfX18KKyAgICAgICAgIHwgIF9fX19fX19fX19fX19fICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8ICB8IEJOQyB8X19ffAorICAgICAgICAgfCB8ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxfX19fX3wgIHxfX19fX3wKKyAgICAgICAgIHwgPiBFUFJPTSBTT0NLRVQgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICB8IHxfX19fX19fX19fX19fX3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX19fX19fX19fX19fX3wKKyAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffAorCitMZWdlbmQ6CisKKzkwQzY1ICAgICAgIEFSQ05FVCBDaGlwIAorU1cxIDEtNTogICAgQmFzZSBNZW1vcnkgQWRkcmVzcyBTZWxlY3QKKyAgICA2LTg6ICAgIEJhc2UgSS9PIEFkZHJlc3MgU2VsZWN0CitTVzIgMS04OiAgICBOb2RlIElEIFNlbGVjdCAoSUQwLUlENykKK1NXMyAxLTU6ICAgIElSUSBTZWxlY3QgICAKKyAgICA2LTc6ICAgIEV4dHJhIFRpbWVvdXQKKyAgICA4ICA6ICAgIFJPTSBFbmFibGUgICAKK0pQMSAgICAgICAgIExlZCBjb25uZWN0b3IKK0JOQyAgICAgICAgIENvYXggY29ubmVjdG9yCisKK0FsdGhvdWdoIHRoZSBqdW1wZXJzIFNXMSBhbmQgU1czIGFyZSBtYXJrZWQgU1csIG5vdCBKUCwgdGhleSBhcmUganVtcGVycywgbm90IAorc3dpdGNoZXMuCisKK1NldHRpbmcgdGhlIGp1bXBlcnMgdG8gT04gbWVhbnMgY29ubmVjdGluZyB0aGUgdXBwZXIgdHdvIHBpbnMsIG9mZiB0aGUgYm90dG9tIAordHdvIC0gb3IgLSBpbiBjYXNlIG9mIElSUSBzZXR0aW5nLCBjb25uZWN0aW5nIG5vbmUgb2YgdGhlbSBhdCBhbGwuCisKK1NldHRpbmcgdGhlIE5vZGUgSUQKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGVpZ2h0IHN3aXRjaGVzIGluIFNXMiBhcmUgdXNlZCB0byBzZXQgdGhlIG5vZGUgSUQuIEVhY2ggbm9kZSBhdHRhY2hlZAordG8gdGhlIG5ldHdvcmsgbXVzdCBoYXZlIGFuIHVuaXF1ZSBub2RlIElEIHdoaWNoIG11c3Qgbm90IGJlIDAuCitTd2l0Y2ggMSAoSUQwKSBzZXJ2ZXMgYXMgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCAoTFNCKS4KKworU2V0dGluZyBvbmUgb2YgdGhlIHN3aXRjaGVzIHRvIE9mZiBtZWFucyAiMSIsIE9uIG1lYW5zICIwIi4KKworVGhlIG5vZGUgSUQgaXMgdGhlIHN1bSBvZiB0aGUgdmFsdWVzIG9mIGFsbCBzd2l0Y2hlcyBzZXQgdG8gIjEiICAKK1RoZXNlIHZhbHVlcyBhcmU6CisKKyAgIFN3aXRjaCB8IExhYmVsIHwgVmFsdWUKKyAgIC0tLS0tLS18LS0tLS0tLXwtLS0tLS0tCisgICAgIDEgICAgfCBJRDAgICB8ICAgMQorICAgICAyICAgIHwgSUQxICAgfCAgIDIKKyAgICAgMyAgICB8IElEMiAgIHwgICA0CisgICAgIDQgICAgfCBJRDMgICB8ICAgOAorICAgICA1ICAgIHwgSUQ0ICAgfCAgMTYKKyAgICAgNiAgICB8IElENSAgIHwgIDMyCisgICAgIDcgICAgfCBJRDYgICB8ICA2NAorICAgICA4ICAgIHwgSUQ3ICAgfCAxMjgKKworU29tZSBFeGFtcGxlczoKKworICAgIFN3aXRjaCAgICAgICAgIHwgSGV4ICAgICB8IERlY2ltYWwgCisgICA4IDcgNiA1IDQgMyAyIDEgfCBOb2RlIElEIHwgTm9kZSBJRAorICAgLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tCisgICAwIDAgMCAwIDAgMCAwIDAgfCAgICBub3QgYWxsb3dlZAorICAgMCAwIDAgMCAwIDAgMCAxIHwgICAgMSAgICB8ICAgIDEgCisgICAwIDAgMCAwIDAgMCAxIDAgfCAgICAyICAgIHwgICAgMgorICAgMCAwIDAgMCAwIDAgMSAxIHwgICAgMyAgICB8ICAgIDMKKyAgICAgICAuIC4gLiAgICAgICB8ICAgICAgICAgfAorICAgMCAxIDAgMSAwIDEgMCAxIHwgICA1NSAgICB8ICAgODUKKyAgICAgICAuIC4gLiAgICAgICB8ICAgICAgICAgfAorICAgMSAwIDEgMCAxIDAgMSAwIHwgICBBQSAgICB8ICAxNzAKKyAgICAgICAuIC4gLiAgICAgICB8ICAgICAgICAgfCAgCisgICAxIDEgMSAxIDEgMSAwIDEgfCAgIEZEICAgIHwgIDI1MworICAgMSAxIDEgMSAxIDEgMSAwIHwgICBGRSAgICB8ICAyNTQKKyAgIDEgMSAxIDEgMSAxIDEgMSB8ICAgRkYgICAgfCAgMjU1CisKKworU2V0dGluZyB0aGUgSS9PIEJhc2UgQWRkcmVzcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbGFzdCB0aHJlZSBzd2l0Y2hlcyBpbiBzd2l0Y2ggYmxvY2sgU1cxIGFyZSB1c2VkIHRvIHNlbGVjdCBvbmUKK29mIGVpZ2h0IHBvc3NpYmxlIEkvTyBCYXNlIGFkZHJlc3NlcyB1c2luZyB0aGUgZm9sbG93aW5nIHRhYmxlCisKKworICAgU3dpdGNoICAgICAgfCBIZXggSS9PCisgICAgNiAgIDcgICA4ICB8IEFkZHJlc3MKKyAgIC0tLS0tLS0tLS0tLXwtLS0tLS0tLQorICAgT04gIE9OICBPTiAgfCAgMjYwCisgICBPRkYgT04gIE9OICB8ICAyOTAKKyAgIE9OICBPRkYgT04gIHwgIDJFMCAgKE1hbnVmYWN0dXJlcidzIGRlZmF1bHQpCisgICBPRkYgT0ZGIE9OICB8ICAyRjAKKyAgIE9OICBPTiAgT0ZGIHwgIDMwMAorICAgT0ZGIE9OICBPRkYgfCAgMzUwCisgICBPTiAgT0ZGIE9GRiB8ICAzODAKKyAgIE9GRiBPRkYgT0ZGIHwgIDNFMAorCisKK1NldHRpbmcgdGhlIEJhc2UgTWVtb3J5IChSQU0pIGJ1ZmZlciBBZGRyZXNzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbWVtb3J5IGJ1ZmZlciAoUkFNKSByZXF1aXJlcyAySy4gVGhlIGJhc2Ugb2YgdGhpcyBidWZmZXIgY2FuIGJlIAorbG9jYXRlZCBpbiBhbnkgb2YgZWlnaHQgcG9zaXRpb25zLiBUaGUgYWRkcmVzcyBvZiB0aGUgQm9vdCBQcm9tIGlzCittZW1vcnkgYmFzZSArIDB4MjAwMC4KK0p1bXBlcnMgMy01IG9mIGp1bXBlciBibG9jayBTVzEgc2VsZWN0IHRoZSBNZW1vcnkgQmFzZSBhZGRyZXNzLgorCisgICBTd2l0Y2ggICAgICAgICAgICAgIHwgSGV4IFJBTSB8IEhleCBST00KKyAgICAxICAgMiAgIDMgICA0ICAgNSAgfCBBZGRyZXNzIHwgQWRkcmVzcyAqKQorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tCisgICBPTiAgT04gIE9OICBPTiAgT04gIHwgIEMwMDAwICB8ICBDMjAwMAorICAgT04gIE9OICBPRkYgT04gIE9OICB8ICBDNDAwMCAgfCAgQzYwMDAKKyAgIE9OICBPTiAgT04gIE9GRiBPTiAgfCAgQ0MwMDAgIHwgIENFMDAwCisgICBPTiAgT04gIE9GRiBPRkYgT04gIHwgIEQwMDAwICB8ICBEMjAwMCAgKE1hbnVmYWN0dXJlcidzIGRlZmF1bHQpCisgICBPTiAgT04gIE9OICBPTiAgT0ZGIHwgIEQ0MDAwICB8ICBENjAwMAorICAgT04gIE9OICBPRkYgT04gIE9GRiB8ICBEODAwMCAgfCAgREEwMDAKKyAgIE9OICBPTiAgT04gIE9GRiBPRkYgfCAgREMwMDAgIHwgIERFMDAwCisgICBPTiAgT04gIE9GRiBPRkYgT0ZGIHwgIEUwMDAwICB8ICBFMjAwMAorICAKKyopIFRvIGVuYWJsZSB0aGUgQm9vdCBST00gc2V0IHRoZSBqdW1wZXIgOCBvZiBqdW1wZXIgYmxvY2sgU1czIHRvIHBvc2l0aW9uIE9OLgorCitUaGUganVtcGVycyAxIGFuZCAyIHByb2JhYmx5IGFkZCAweDA4MDAsIDB4MTAwMCBhbmQgMHgxODAwIHRvIFJBTSBhZGRlcnMuCisKK1NldHRpbmcgdGhlIEludGVycnVwdCBMaW5lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitKdW1wZXJzIDEtNSBvZiB0aGUganVtcGVyIGJsb2NrIFNXMyBjb250cm9sIHRoZSBJUlEgbGV2ZWwuCisKKyAgICBKdW1wZXIgICAgICAgICAgICAgIHwgIElSUQorICAgIDEgICAyICAgMyAgIDQgICA1ICAgfAorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIE9OICBPRkYgT0ZGIE9GRiBPRkYgfCAgMgorICAgIE9GRiBPTiAgT0ZGIE9GRiBPRkYgfCAgMworICAgIE9GRiBPRkYgT04gIE9GRiBPRkYgfCAgNAorICAgIE9GRiBPRkYgT0ZGIE9OICBPRkYgfCAgNQorICAgIE9GRiBPRkYgT0ZGIE9GRiBPTiAgfCAgNworCisKK1NldHRpbmcgdGhlIFRpbWVvdXQgUGFyYW1ldGVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBqdW1wZXJzIDYtNyBvZiB0aGUganVtcGVyIGJsb2NrIFNXMyBhcmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHRpbWVvdXQgCitwYXJhbWV0ZXJzLiBUaGVzZSB0d28ganVtcGVycyBhcmUgbm9ybWFsbHkgbGVmdCBpbiB0aGUgT0ZGIHBvc2l0aW9uLgorCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyoqIE5vIE5hbWUgKioKKyhHZW5lcmljIE1vZGVsIDkwNTgpCistLS0tLS0tLS0tLS0tLS0tLS0tLQorICAtIGZyb20gQW5kcmV3IEouIEtyb2xsIDxhZzc4NEBmcmVlbmV0LmJ1ZmZhbG8uZWR1PgorICAtIFNvcnJ5IHRoaXMgc2F0IGluIG15IHRvLWRvIGJveCBmb3Igc28gbG9uZywgQW5kcmV3ISAoeWlrZXMgLSBvdmVyIGEKKyAgICB5ZWFyISkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX19fXworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IC4tLS0nCisgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyB8IHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICBTVzIgICAgIHwgICAgICAgICAgICAgICAgICAgICAgfCAgfAorICAgfCAgIF9fX19fX19fX19fICAgICAgICAgICAgIHxfX19fX19fX19fX19ffCAgICAgICAgICAgICAgICAgICAgICB8ICB8CisgICB8ICB8ICAgICAgICAgICB8ICAgICAgICAgICAgICAxIDIgMyA0IDUgNiAgICAgICAgICAgICAgICAgICAgIF9fX3wgIHwKKyAgIHwgID4gIDYxMTYgUkFNIHwgICAgICAgICBfX19fX19fX18gICAgICAgICAgICAgICAgICAgICAgICAgOCB8ICAgfCAgfAorICAgfCAgfF9fX19fX19fX19ffCAgICAgICAgfDIwTUh6WHRhbHwgICAgICAgICAgICAgICAgICAgICAgICA3IHwgICB8ICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICB8X19fX19fX19ffCAgICAgICBfX19fX19fX19fICAgICAgIDYgfCBTIHwgIHwKKyAgIHwgICAgNzRMUzM3MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8LSAgICAgNSB8IFcgfCAgfAorICAgfCAgIF9fX19fX19fXyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgRSAgIHwtICAgICA0IHwgICB8ICB8CisgICB8ICAgPl9fX19fX198ICAgICAgICAgICAgICBfX19fX19fX19fX19fX3wuLi4uLiBQICAgfC0gICAgIDMgfCAzIHwgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICA6IE8gICB8LSAgICAgMiB8ICAgfCAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgIDogWCAgIHwtICAgICAxIHxfX198ICB8CisgICB8ICAgX19fX19fX19fX19fX19fXyAgICAgIHwgICAgICAgICAgICAgIHwgICAgOiBZICAgfC0gICAgICAgICAgIHwgIHwKKyAgIHwgIHwgICAgICBTVzEgICAgICAgfCAgICAgfCAgICAgIFNMOTBDNjUgfCAgICA6ICAgICB8LSAgICAgICAgICAgfCAgfAorICAgfCAgfF9fX19fX19fX19fX19fX198ICAgICB8ICAgICAgICAgICAgICB8ICAgIDogQiAgIHwtICAgICAgICAgICB8ICB8CisgICB8ICAgIDEgMiAzIDQgNSA2IDcgOCAgICAgIHwgICAgICAgICAgICAgIHwgICAgOiBPICAgfC0gICAgICAgICAgIHwgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfF9fX19fX19fX29fX19ffC4uLi4vIEEgICB8LSAgICBfX19fX19ffCAgfAorICAgfCAgICBfX19fX19fX19fX19fX19fX19fXyAgICAgICAgICAgICAgICB8ICAgICAgUiAgIHwtICAgfCAgICAgICB8LS0tLS0tLCAgIAorICAgfCAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgRCAgIHwtICAgfCAgQk5DICB8ICAgIyAgfAorICAgfCAgID4gMjc2NCBQUk9NIFNPQ0tFVCAgIHwgICAgICAgICAgICAgICB8X19fX19fX19fX3wtICAgfF9fX19fX198LS0tLS0tJworICAgfCAgIHxfX19fX19fX19fX19fX19fX19fX3wgICAgICAgICAgICAgIF9fX19fX19fXyAgICAgICAgICAgICAgICB8ICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPl9fX19fX19ffCA8LSA3NExTMjQ1ICAgIHwgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAorICAgfF9fXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19fX19fX19fX19fX198ICB8CisgICAgICAgfEggSCBIIEggSCBIIEggSCBIIEggSCBIIEggSCBIIEggSCBIIEggSCBIIEggSHwgICAgICAgICAgICAgICB8IHwKKyAgICAgICB8VV9VX1VfVV9VX1VfVV9VX1VfVV9VX1VfVV9VX1VfVV9VX1VfVV9VX1VfVV9VfCAgICAgICAgICAgICAgIHwgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx8CitMZWdlbmQ6CisKK1NMOTBDNjUgCUFSQ05FVCBDb250cm9sbGVyIC8gVHJhbnNjZWl2ZXIgL0xvZ2ljCitTVzEJMS01OglJUlEgU2VsZWN0CisJICA2OglFVDEKKwkgIDc6CUVUMgorCSAgODoJUk9NIEVOQUJMRSAKK1NXMgkxLTM6ICAgIE1lbW9yeSBCdWZmZXIvUFJPTSBBZGRyZXNzCisJMy02OglJL08gQWRkcmVzcyBNYXAKK1NXMwkxLTg6CU5vZGUgSUQgU2VsZWN0CitCTkMJCUJOQyBSRzYyL1UgQ29ubmVjdGlvbiAKKwkJKkkqIGhhdmUgaGFkIHN1Y2Nlc3MgdXNpbmcgUkc1OUIvVSB3aXRoICpOTyogdGVybWluYXRvcnMhCisJCVdoYXQgZ2l2ZXM/IQorCitTVzE6IFRpbWVvdXRzLCBJbnRlcnJ1cHQgYW5kIFJPTQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RvIHNlbGVjdCBhIGhhcmR3YXJlIGludGVycnVwdCBsZXZlbCBzZXQgb25lIChvbmx5IG9uZSEpIG9mIHRoZSBkaXAgc3dpdGNoZXMKK3VwIChvbikgU1cxLi4uKHN3aXRjaGVzIDEtNSkKK0lSUTMsIElSUTQsIElSUTUsIElSUTcsIElSUTIuIFRoZSBNYW51ZmFjdHVyZXIncyBkZWZhdWx0IGlzIElSUTIuCisKK1RoZSBzd2l0Y2hlcyBvbiBTVzEgbGFiZWxlZCBFWFQxIChzd2l0Y2ggNikgYW5kIEVYVDIgKHN3aXRjaCA3KQorYXJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB0aW1lb3V0IHBhcmFtZXRlcnMuIFRoZXNlIHR3byBkaXAgc3dpdGNoZXMKK2FyZSBub3JtYWxseSBsZWZ0IG9mZiAoZG93bikuCisKKyAgIFRvIGVuYWJsZSB0aGUgOEsgQm9vdCBQUk9NIHBvc2l0aW9uIFNXMSBzd2l0Y2ggOCBvbiAoVVApIGxhYmVsZWQgUk9NLgorICAgVGhlIGRlZmF1bHQgaXMganVtcGVyIFJPTSBub3QgaW5zdGFsbGVkLgorCisKK1NldHRpbmcgdGhlIEkvTyBCYXNlIEFkZHJlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGxhc3QgdGhyZWUgc3dpdGNoZXMgaW4gc3dpdGNoIGdyb3VwIFNXMiBhcmUgdXNlZCB0byBzZWxlY3Qgb25lCitvZiBlaWdodCBwb3NzaWJsZSBJL08gQmFzZSBhZGRyZXNzZXMgdXNpbmcgdGhlIGZvbGxvd2luZyB0YWJsZQorCisKKyAgIFN3aXRjaCB8IEhleCBJL08KKyAgIDQgNSA2ICB8IEFkZHJlc3MKKyAgIC0tLS0tLS18LS0tLS0tLS0KKyAgIDAgMCAwICB8ICAyNjAKKyAgIDAgMCAxICB8ICAyOTAKKyAgIDAgMSAwICB8ICAyRTAgIChNYW51ZmFjdHVyZXIncyBkZWZhdWx0KQorICAgMCAxIDEgIHwgIDJGMAorICAgMSAwIDAgIHwgIDMwMAorICAgMSAwIDEgIHwgIDM1MAorICAgMSAxIDAgIHwgIDM4MAorICAgMSAxIDEgIHwgIDNFMAorCisKK1NldHRpbmcgdGhlIEJhc2UgTWVtb3J5IEFkZHJlc3MgKFJBTSAmIFJPTSkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG1lbW9yeSBidWZmZXIgcmVxdWlyZXMgMksgb2YgYSAxNksgYmxvY2sgb2YgUkFNLiBUaGUgYmFzZSBvZiB0aGlzCisxNksgYmxvY2sgY2FuIGJlIGxvY2F0ZWQgaW4gYW55IG9mIGVpZ2h0IHBvc2l0aW9ucy4KK1N3aXRjaGVzIDEtMyBvZiBzd2l0Y2ggZ3JvdXAgU1cyIHNlbGVjdCB0aGUgQmFzZSBvZiB0aGUgMTZLIGJsb2NrLgorKDAgPSBET1dOLCAxID0gVVApCitJIGNvdWxkLCBob3dldmVyLCBvbmx5IHZlcmlmeSB0d28gc2V0dGluZ3MuLi4KKworICAgU3dpdGNofCBIZXggUkFNIHwgSGV4IFJPTQorICAgMSAyIDMgfCBBZGRyZXNzIHwgQWRkcmVzcworICAgLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLQorICAgMCAwIDAgfCAgRTAwMDAgIHwgIEUyMDAwCisgICAwIDAgMSB8ICBEMDAwMCAgfCAgRDIwMDAgIChNYW51ZmFjdHVyZXIncyBkZWZhdWx0KQorICAgMCAxIDAgfCAgPz8/Pz8gIHwgID8/Pz8/CisgICAwIDEgMSB8ICA/Pz8/PyAgfCAgPz8/Pz8gIAorICAgMSAwIDAgfCAgPz8/Pz8gIHwgID8/Pz8/CisgICAxIDAgMSB8ICA/Pz8/PyAgfCAgPz8/Pz8KKyAgIDEgMSAwIHwgID8/Pz8/ICB8ICA/Pz8/PworICAgMSAxIDEgfCAgPz8/Pz8gIHwgID8/Pz8/CisKKworU2V0dGluZyB0aGUgTm9kZSBJRAorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZWlnaHQgc3dpdGNoZXMgaW4gZ3JvdXAgU1czIGFyZSB1c2VkIHRvIHNldCB0aGUgbm9kZSBJRC4KK0VhY2ggbm9kZSBhdHRhY2hlZCB0byB0aGUgbmV0d29yayBtdXN0IGhhdmUgYW4gdW5pcXVlIG5vZGUgSUQgd2hpY2gKK211c3QgYmUgZGlmZmVyZW50IGZyb20gMC4KK1N3aXRjaCAxIHNlcnZlcyBhcyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IChMU0IpLgorc3dpdGNoZXMgaW4gdGhlIERPV04gcG9zaXRpb24gYXJlIE9GRiAoMCkgYW5kIGluIHRoZSBVUCBwb3NpdGlvbiBhcmUgT04gKDEpCisKK1RoZSBub2RlIElEIGlzIHRoZSBzdW0gb2YgdGhlIHZhbHVlcyBvZiBhbGwgc3dpdGNoZXMgc2V0IHRvICIxIiAgCitUaGVzZSB2YWx1ZXMgYXJlOgorICAgIFN3aXRjaCB8IFZhbHVlCisgICAgLS0tLS0tLXwtLS0tLS0tCisgICAgICAxICAgIHwgICAxCisgICAgICAyICAgIHwgICAyCisgICAgICAzICAgIHwgICA0CisgICAgICA0ICAgIHwgICA4CisgICAgICA1ICAgIHwgIDE2CisgICAgICA2ICAgIHwgIDMyCisgICAgICA3ICAgIHwgIDY0CisgICAgICA4ICAgIHwgMTI4CisKK1NvbWUgRXhhbXBsZXM6CisKKyAgICBTd2l0Y2gjICAgICB8ICAgSGV4ICAgfCBEZWNpbWFsIAorOCA3IDYgNSA0IDMgMiAxIHwgTm9kZSBJRCB8IE5vZGUgSUQKKy0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLQorMCAwIDAgMCAwIDAgMCAwIHwgICAgbm90IGFsbG93ZWQgIDwtLgorMCAwIDAgMCAwIDAgMCAxIHwgICAgMSAgICB8ICAgIDEgICAgfCAKKzAgMCAwIDAgMCAwIDEgMCB8ICAgIDIgICAgfCAgICAyICAgIHwKKzAgMCAwIDAgMCAwIDEgMSB8ICAgIDMgICAgfCAgICAzICAgIHwKKyAgICAuIC4gLiAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwKKzAgMSAwIDEgMCAxIDAgMSB8ICAgNTUgICAgfCAgIDg1ICAgIHwKKyAgICAuIC4gLiAgICAgICB8ICAgICAgICAgfCAgICAgICAgICsgRG9uJ3QgdXNlIDAgb3IgMjU1IQorMSAwIDEgMCAxIDAgMSAwIHwgICBBQSAgICB8ICAxNzAgICAgfAorICAgIC4gLiAuICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfAorMSAxIDEgMSAxIDEgMCAxIHwgICBGRCAgICB8ICAyNTMgICAgfAorMSAxIDEgMSAxIDEgMSAwIHwgICBGRSAgICB8ICAyNTQgICAgfAorMSAxIDEgMSAxIDEgMSAxIHwgICBGRiAgICB8ICAyNTUgIDwtJworICAKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworKiogVGlhcmEgKioKKyhtb2RlbCB1bmtub3duKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAtIGZyb20gQ2hyaXN0b3BoIExhbWV0ZXIgPGNocmlzdG9waEBsYW1ldGVyLmNvbT4KKyAgCisKK0hlcmUgaXMgaW5mb3JtYXRpb24gYWJvdXQgbXkgY2FyZCBhcyBmYXIgYXMgSSBjb3VsZCBmaWd1cmUgaXQgb3V0OgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gdGlhcmEKK1RpYXJhIExhbkNhcmQgb2YgVGlhcmEgQ29tcHV0ZXIgU3lzdGVtcy4KKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCishICAgICAgICAgICAhIFRyYW5zbWl0dGVyIFVuaXQgISAgICAgICAgICAgICAgICEKKyEgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgIC0tLS0tLS0KKyEgICAgICAgICAgTUVNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29heCBDb25uZWN0b3IKKyEgIFJPTSAgICA3NjU0MzIxIDwtIEkvTyAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0KKyEgIDogIDogICArLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIQorISAgOiAgOiAgICEgOTBDNjZMSiEgICAgICAgICAgICAgICAgICAgICAgICAgKysrCishICA6ICA6ICAgISAgICAgICAgISAgICAgICAgICAgICAgICAgICAgICAgICAhRCAgU3dpdGNoIHRvIHNldAorISAgOiAgOiAgICEgICAgICAgICEgICAgICAgICAgICAgICAgICAgICAgICAgIUkgIHRoZSBOb2RlbnVtYmVyCishICA6ICA6ICAgKy0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAhUAorISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISsrCishICAgICAgICAgMjM0NTY3IDwtIElSUSAgICAgICAgICAgICAgICAgICAgICAhCisrLS0tLS0tLS0tLS0tISEhISEhISEhISEhISEhISEhISEhISEhLS0tLS0tLS0rCisgICAgICAgICAgICAgISEhISEhISEhISEhISEhISEhISEhISEhCisKKzAgPSBKdW1wZXIgSW5zdGFsbGVkCisxID0gT3BlbgorCitUb3AgSnVtcGVyIGxpbmUgQml0IDcgPSBST00gRW5hYmxlIDY1ND1NZW1vcnkgbG9jYXRpb24gMzIxPUkvTworCitTZXR0aW5ncyBmb3IgTWVtb3J5IExvY2F0aW9uIChUb3AgSnVtcGVyIExpbmUpCis0NTYgICAgIEFkZHJlc3Mgc2VsZWN0ZWQKKzAwMAlDMDAwMAorMDAxICAgICBDNDAwMAorMDEwICAgICBDQzAwMAorMDExICAgICBEMDAwMAorMTAwICAgICBENDAwMAorMTAxICAgICBEODAwMAorMTEwICAgICBEQzAwMCAgICAgCisxMTEgICAgIEUwMDAwCisKK1NldHRpbmdzIGZvciBJL08gQWRkcmVzcyAoVG9wIEp1bXBlciBMaW5lKQorMTIzICAgICBQb3J0CiswMDAJMjYwCiswMDEJMjkwCiswMTAJMkUwCiswMTEJMkYwCisxMDAJMzAwCisxMDEJMzUwCisxMTAJMzgwCisxMTEJM0UwCisKK1NldHRpbmdzIGZvciBJUlEgU2VsZWN0aW9uIChMb3dlciBKdW1wZXIgTGluZSkKKzIzNDU2NworMDExMTExIElSUSAyCisxMDExMTEgSVJRIDMKKzExMDExMSBJUlEgNAorMTExMDExIElSUSA1CisxMTExMTAgSVJRIDcKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworCitPdGhlciBDYXJkcworLS0tLS0tLS0tLS0KKworSSBoYXZlIG5vIGluZm9ybWF0aW9uIG9uIG90aGVyIG1vZGVscyBvZiBBUkNuZXQgY2FyZHMgYXQgdGhlIG1vbWVudC4gIFBsZWFzZQorc2VuZCBhbnkgYW5kIGFsbCBpbmZvIHRvOgorCWFwZW53YXJyQHdvcmxkdmlzaW9ucy5jYQorCitUaGFua3MuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYXJjbmV0LnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9hcmNuZXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmZjk3ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYXJjbmV0LnR4dApAQCAtMCwwICsxLDU1NiBAQAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTk9URTogIFNlZSBhbHNvIGFyY25ldC1oYXJkd2FyZS50eHQgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGp1bXBlci1zZXR0aW5nCithbmQgY2FibGluZyBpbmZvcm1hdGlvbiBpZiB5b3UncmUgbGlrZSBtYW55IG9mIHVzIGFuZCBkaWRuJ3QgaGFwcGVuIHRvIGdldCBhCittYW51YWwgd2l0aCB5b3VyIEFSQ25ldCBjYXJkLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTaW5jZSBubyBvbmUgc2VlbXMgdG8gbGlzdGVuIHRvIG1lIG90aGVyd2lzZSwgcGVyaGFwcyBhIHBvZW0gd2lsbCBnZXQgeW91cgorYXR0ZW50aW9uOgorCQlUaGlzIGRyaXZlcidzIGdldHRpbmcgZmF0IGFuZCBiZWVmeSwKKwkJQnV0IG15IGNhdCBpcyBzdGlsbCBuYW1lZCBGaWZpLgorCitIbW0sIEkgdGhpbmsgSSdtIGFsbG93ZWQgdG8gY2FsbCB0aGF0IGEgcG9lbSwgZXZlbiB0aG91Z2ggaXQncyBvbmx5IHR3bworbGluZXMuICBIZXksIEknbSBpbiBDb21wdXRlciBTY2llbmNlLCBub3QgRW5nbGlzaC4gIEdpdmUgbWUgYSBicmVhay4KKworVGhlIHBvaW50IGlzOiAgSSBSRUFMTFkgUkVBTExZIFJFQUxMWSBSRUFMTFkgUkVBTExZIHdhbnQgdG8gaGVhciBmcm9tIHlvdSBpZgoreW91IHRlc3QgdGhpcyBhbmQgZ2V0IGl0IHdvcmtpbmcuICBPciBpZiB5b3UgZG9uJ3QuICBPciBhbnl0aGluZy4KKworQVJDbmV0IDAuMzIgQUxQSEEgZmlyc3QgbWFkZSBpdCBpbnRvIHRoZSBMaW51eCBrZXJuZWwgMS4xLjgwIC0gdGhpcyB3YXMKK25pY2UsIGJ1dCBhZnRlciB0aGF0IGV2ZW4gRkVXRVIgcGVvcGxlIHN0YXJ0ZWQgd3JpdGluZyB0byBtZSBiZWNhdXNlIHRoZXkKK2RpZG4ndCBldmVuIGhhdmUgdG8gaW5zdGFsbCB0aGUgcGF0Y2guICA8c2lnaD4KKworQ29tZSBvbiwgYmUgYSBzcG9ydCEgIFNlbmQgbWUgYSBzdWNjZXNzIHJlcG9ydCEKKworKGhleSwgdGhhdCB3YXMgZXZlbiBiZXR0ZXIgdGhhbiBteSBvcmlnaW5hbCBwb2VtLi4uIHRoaXMgaXMgZ2V0dGluZyBiYWQhKQorCisKKy0tLS0tLS0tCitXQVJOSU5HOgorLS0tLS0tLS0KKworSWYgeW91IGRvbid0IGUtbWFpbCBtZSBhYm91dCB5b3VyIHN1Y2Nlc3MvZmFpbHVyZSBzb29uLCBJIG1heSBiZSBmb3JjZWQgdG8KK3N0YXJ0IFNJTkdJTkcuICBBbmQgd2UgZG9uJ3Qgd2FudCB0aGF0LCBkbyB3ZT8KKworKFlvdSBrbm93LCBpdCBtaWdodCBiZSBhcmd1ZWQgdGhhdCBJJ20gcHVzaGluZyB0aGlzIHBvaW50IGEgbGl0dGxlIHRvbyBtdWNoLiAKK0lmIHlvdSB0aGluayBzbywgd2h5IG5vdCBmbGFtZSBtZSBpbiBhIHF1aWNrIGxpdHRsZSBlLW1haWw/ICBQbGVhc2UgYWxzbworaW5jbHVkZSB0aGUgdHlwZSBvZiBjYXJkKHMpIHlvdSdyZSB1c2luZywgc29mdHdhcmUsIHNpemUgb2YgbmV0d29yaywgYW5kCit3aGV0aGVyIGl0J3Mgd29ya2luZyBvciBub3QuKQorCitNeSBlLW1haWwgYWRkcmVzcyBpczogYXBlbndhcnJAd29ybGR2aXNpb25zLmNhCisKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwkJCQorVGhlc2UgYXJlIHRoZSBBUkNuZXQgZHJpdmVycyBmb3IgTGludXguCisKKworVGhpcyBuZXcgcmVsZWFzZSAoMi45MSkgaGFzIGJlZW4gcHV0IHRvZ2V0aGVyIGJ5IERhdmlkIFdvb2Rob3VzZSAKKzxkd213MkBpbmZyYWRlYWQub3JnPiwgaW4gYW4gYXR0ZW1wdCB0byB0aWR5IHVwIHRoZSBkcml2ZXIgYWZ0ZXIgYWRkaW5nIHN1cHBvcnQKK2ZvciB5ZXQgYW5vdGhlciBjaGlwc2V0LiBOb3cgdGhlIGdlbmVyaWMgc3VwcG9ydCBoYXMgYmVlbiBzZXBhcmF0ZWQgZnJvbSB0aGUKK2luZGl2aWR1YWwgY2hpcHNldCBkcml2ZXJzLCBhbmQgdGhlIHNvdXJjZSBmaWxlcyBhcmVuJ3QgcXVpdGUgc28gcGFja2VkIHdpdGgKKyNpZmRlZnMhIEkndmUgY2hhbmdlZCB0aGlzIGZpbGUgYSBiaXQsIGJ1dCBrZXB0IGl0IGluIHRoZSBmaXJzdCBwZXJzb24gZnJvbQorQXZlcnksIGJlY2F1c2UgSSBkaWRuJ3Qgd2FudCB0byBjb21wbGV0ZWx5IHJld3JpdGUgaXQuCisKK1RoZSBwcmV2aW91cyByZWxlYXNlIHJlc3VsdGVkIGZyb20gbWFueSBtb250aHMgb2Ygb24tYW5kLW9mZiBlZmZvcnQgZnJvbSBtZQorKEF2ZXJ5IFBlbm5hcnVuKSwgbWFueSBidWcgcmVwb3J0cy9maXhlcyBhbmQgc3VnZ2VzdGlvbnMgZnJvbSBvdGhlcnMsIGFuZCBpbgorcGFydGljdWxhciBhIGxvdCBvZiBpbnB1dCBhbmQgY29kaW5nIGZyb20gVG9tYXN6IE1vdHlsZXdza2kuICBTdGFydGluZyB3aXRoCitBUkNuZXQgMi4xMCBBTFBIQSwgVG9tYXN6J3MgYWxsLW5ldy1hbmQtaW1wcm92ZWQgUkZDMTA1MSBzdXBwb3J0IGhhcyBiZWVuCitpbmNsdWRlZCBhbmQgc2VlbXMgdG8gYmUgd29ya2luZyBmaW5lIQorCisKK1doZXJlIGRvIEkgZGlzY3VzcyB0aGVzZSBkcml2ZXJzPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RvbWFzeiBoYXMgYmVlbiBzbyBraW5kIGFzIHRvIHNldCB1cCBhIG5ldyBhbmQgaW1wcm92ZWQgbWFpbGluZyBsaXN0LiAKK1N1YnNjcmliZSBieSBzZW5kaW5nIGEgbWVzc2FnZSB3aXRoIHRoZSBCT0RZICJzdWJzY3JpYmUgbGludXgtYXJjbmV0IFlPVVIKK1JFQUwgTkFNRSIgdG8gbGlzdHNlcnZAdGljaHkuY2gudWouZWR1LnBsLiAgVGhlbiwgdG8gc3VibWl0IG1lc3NhZ2VzIHRvIHRoZQorbGlzdCwgbWFpbCB0byBsaW51eC1hcmNuZXRAdGljaHkuY2gudWouZWR1LnBsLgorCitUaGVyZSBhcmUgYXJjaGl2ZXMgb2YgdGhlIG1haWxpbmcgbGlzdCBhdDoKKwlodHRwOi8vZXBpc3RvbGFyeS5vcmcvbWFpbG1hbi9saXN0aW5mby5jZ2kvYXJjbmV0CisKK1RoZSBwZW9wbGUgb24gbGludXgtbmV0QHZnZXIua2VybmVsLm9yZyAobm93IGRlZnVuY3QsIHJlcGxhY2VkIGJ5CituZXRkZXZAdmdlci5rZXJuZWwub3JnKSBoYXZlIGFsc28gYmVlbiBrbm93biB0byBiZSB2ZXJ5IGhlbHBmdWwsIGVzcGVjaWFsbHkKK3doZW4gd2UncmUgdGFsa2luZyBhYm91dCBBTFBIQSBMaW51eCBrZXJuZWxzIHRoYXQgbWF5IG9yIG1heSBub3Qgd29yayByaWdodAoraW4gdGhlIGZpcnN0IHBsYWNlLgorCisKK090aGVyIERyaXZlcnMgYW5kIEluZm8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWW91IGNhbiB0cnkgbXkgQVJDTkVUIHBhZ2Ugb24gdGhlIFdvcmxkIFdpZGUgV2ViIGF0OgorCWh0dHA6Ly93d3cucWlzLm5ldC9+anNjaG1pdHovYXJjbmV0LwkKKworQWxzbywgU01DIChvbmUgb2YgdGhlIGNvbXBhbmllcyB0aGF0IG1ha2VzIEFSQ25ldCBjYXJkcykgaGFzIGEgV1dXIHNpdGUgeW91CittaWdodCBiZSBpbnRlcmVzdGVkIGluLCB3aGljaCBpbmNsdWRlcyBzZXZlcmFsIGRyaXZlcnMgZm9yIHZhcmlvdXMgY2FyZHMKK2luY2x1ZGluZyBBUkNuZXQuICBUcnk6CisJaHR0cDovL3d3dy5zbWMuY29tLworCQorUGVyZm9ybWFuY2UgVGVjaG5vbG9naWVzIG1ha2VzIHZhcmlvdXMgbmV0d29yayBzb2Z0d2FyZSB0aGF0IHN1cHBvcnRzCitBUkNuZXQ6CisJaHR0cDovL3d3dy5wZXJmdGVjaC5jb20vIG9yIGZ0cCB0byBmdHAucGVyZnRlY2guY29tLgorCQorTm92ZWxsIG1ha2VzIGEgbmV0d29ya2luZyBzdGFjayBmb3IgRE9TIHdoaWNoIGluY2x1ZGVzIEFSQ25ldCBkcml2ZXJzLiAgVHJ5CitGVFBpbmcgdG8gZnRwLm5vdmVsbC5jb20uCisKK1lvdSBjYW4gZ2V0IHRoZSBDcnlud3IgcGFja2V0IGRyaXZlciBjb2xsZWN0aW9uIChpbmNsdWRpbmcgYXJjZXRoZXIuY29tLCB0aGUKK29uZSB5b3UnbGwgd2FudCB0byB1c2Ugd2l0aCBBUkNuZXQgY2FyZHMpIGZyb20KK29hay5vYWtsYW5kLmVkdTovc2ltdGVsL21zZG9zL3BrdGRydnIuIEl0IHdvbid0IHdvcmsgcGVyZmVjdGx5IG9uIGEgMzg2Kword2l0aG91dCBwYXRjaGVzLCB0aG91Z2gsIGFuZCBhbHNvIGRvZXNuJ3QgbGlrZSBzZXZlcmFsIGNhcmRzLiAgRml4ZWQKK3ZlcnNpb25zIGFyZSBhdmFpbGFibGUgb24gbXkgV1dXIHBhZ2UsIG9yIHZpYSBlLW1haWwgaWYgeW91IGRvbid0IGhhdmUgV1dXCithY2Nlc3MuIAorCisKK0luc3RhbGxpbmcgdGhlIERyaXZlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FsbCB5b3Ugd2lsbCBuZWVkIHRvIGRvIGluIG9yZGVyIHRvIGluc3RhbGwgdGhlIGRyaXZlciBpczoKKwltYWtlIGNvbmZpZworCQkoYmUgc3VyZSB0byBjaG9vc2UgQVJDbmV0IGluIHRoZSBuZXR3b3JrIGRldmljZXMgCisJCWFuZCBhdCBsZWFzdCBvbmUgY2hpcHNldCBkcml2ZXIuKQorCW1ha2UgY2xlYW4KKwltYWtlIHpJbWFnZQorCQorSWYgeW91IG9idGFpbmVkIHRoaXMgQVJDbmV0IHBhY2thZ2UgYXMgYW4gdXBncmFkZSB0byB0aGUgQVJDbmV0IGRyaXZlciBpbgoreW91ciBjdXJyZW50IGtlcm5lbCwgeW91IHdpbGwgbmVlZCB0byBmaXJzdCBjb3B5IGFyY25ldC5jIG92ZXIgdGhlIG9uZSBpbgordGhlIGxpbnV4L2RyaXZlcnMvbmV0IGRpcmVjdG9yeS4KKworWW91IHdpbGwga25vdyB0aGUgZHJpdmVyIGlzIGluc3RhbGxlZCBwcm9wZXJseSBpZiB5b3UgZ2V0IHNvbWUgQVJDbmV0CittZXNzYWdlcyB3aGVuIHlvdSByZWJvb3QgaW50byB0aGUgbmV3IExpbnV4IGtlcm5lbC4KKworVGhlcmUgYXJlIGZvdXIgY2hpcHNldCBvcHRpb25zOgorCisgMS4gU3RhbmRhcmQgQVJDbmV0IENPTTkweHggY2hpcHNldC4KKworVGhpcyBpcyB0aGUgbm9ybWFsIEFSQ25ldCBjYXJkLCB3aGljaCB5b3UndmUgcHJvYmFibHkgZ290LiBUaGlzIGlzIHRoZSBvbmx5CitjaGlwc2V0IGRyaXZlciB3aGljaCB3aWxsIGF1dG9wcm9iZSBpZiBub3QgdG9sZCB3aGVyZSB0aGUgY2FyZCBpcy4KK0l0IGZvbGxvd2luZyBvcHRpb25zIG9uIHRoZSBjb21tYW5kIGxpbmU6CisgY29tOTB4eD1bPGlvPlssPGlycT5bLDxzaG1lbT5dXV1bLDxuYW1lPl0gfCA8bmFtZT4KKworSWYgeW91IGxvYWQgdGhlIGNoaXBzZXQgc3VwcG9ydCBhcyBhIG1vZHVsZSwgdGhlIG9wdGlvbnMgYXJlOgorIGlvPTxpbz4gaXJxPTxpcnE+IHNobWVtPTxzaG1lbT4gZGV2aWNlPTxuYW1lPgorCitUbyBkaXNhYmxlIHRoZSBhdXRvcHJvYmUsIGp1c3Qgc3BlY2lmeSAiY29tOTB4eD0iIG9uIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lLgorVG8gc3BlY2lmeSB0aGUgbmFtZSBhbG9uZSwgYnV0IGFsbG93IGF1dG9wcm9iZSwganVzdCBwdXQgImNvbTkweHg9PG5hbWU+IgorCisgMi4gQVJDbmV0IENPTTIwMDIwIGNoaXBzZXQuCisKK1RoaXMgaXMgdGhlIG5ldyBjaGlwc2V0IGZyb20gU01DIHdpdGggc3VwcG9ydCBmb3IgcHJvbWlzY3VvdXMgbW9kZSAocGFja2V0IAorc25pZmZpbmcpLCBleHRyYSBkaWFnbm9zdGljIGluZm9ybWF0aW9uLCBldGMuIFVuZm9ydHVuYXRlbHksIHRoZXJlIGlzIG5vCitzZW5zaWJsZSBtZXRob2Qgb2YgYXV0b3Byb2JpbmcgZm9yIHRoZXNlIGNhcmRzLiBZb3UgbXVzdCBzcGVjaWZ5IHRoZSBJL08KK2FkZHJlc3Mgb24gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUuCitUaGUgY29tbWFuZCBsaW5lIG9wdGlvbnMgYXJlOgorIGNvbTIwMDIwPTxpbz5bLDxpcnE+Wyw8bm9kZV9JRD5bLGJhY2twbGFuZVssQ0tQWyx0aW1lb3V0XV1dXV1bLG5hbWVdCisKK0lmIHlvdSBsb2FkIHRoZSBjaGlwc2V0IHN1cHBvcnQgYXMgYSBtb2R1bGUsIHRoZSBvcHRpb25zIGFyZToKKyBpbz08aW8+IGlycT08aXJxPiBub2RlPTxub2RlX0lEPiBiYWNrcGxhbmU9PGJhY2twbGFuZT4gY2xvY2s9PENLUD4KKyB0aW1lb3V0PTx0aW1lb3V0PiBkZXZpY2U9PG5hbWU+CisKK1RoZSBDT00yMDAyMCBjaGlwc2V0IGFsbG93cyB5b3UgdG8gc2V0IHRoZSBub2RlIElEIGluIHNvZnR3YXJlLCBvdmVycmlkaW5nIHRoZQorZGVmYXVsdCB3aGljaCBpcyBzdGlsbCBzZXQgaW4gRElQIHN3aXRjaGVzIG9uIHRoZSBjYXJkLiBJZiB5b3UgZG9uJ3QgaGF2ZSB0aGUKK0NPTTIwMDIwIGRhdGEgc2hlZXRzLCBhbmQgeW91IGRvbid0IGtub3cgd2hhdCB0aGUgb3RoZXIgdGhyZWUgb3B0aW9ucyByZWZlcgordG8sIHRoZW4gdGhleSB3b24ndCBpbnRlcmVzdCB5b3UgLSBmb3JnZXQgdGhlbS4KKworIDMuIEFSQ25ldCBDT005MHh4IGNoaXBzZXQgaW4gSU8tbWFwcGVkIG1vZGUuCisKK1RoaXMgd2lsbCBhbHNvIHdvcmsgd2l0aCB0aGUgbm9ybWFsIEFSQ25ldCBjYXJkcywgYnV0IGRvZXNuJ3QgdXNlIHRoZSBzaGFyZWQKK21lbW9yeS4gSXQgcGVyZm9ybXMgbGVzcyB3ZWxsIHRoYW4gdGhlIGFib3ZlIGRyaXZlciwgYnV0IGlzIHByb3ZpZGVkIGluIGNhc2UKK3lvdSBoYXZlIGEgY2FyZCB3aGljaCBkb2Vzbid0IHN1cHBvcnQgc2hhcmVkIG1lbW9yeSwgb3IgKHN0cmFuZ2VseSkgaW4gY2FzZQoreW91IGhhdmUgc28gbWFueSBBUkNuZXQgY2FyZHMgaW4geW91ciBtYWNoaW5lIHRoYXQgeW91IHJ1biBvdXQgb2Ygc2htZW0gc2xvdHMuCitJZiB5b3UgZG9uJ3QgZ2l2ZSB0aGUgSU8gYWRkcmVzcyBvbiB0aGUga2VybmVsIGNvbW1hbmQgbGluZSwgdGhlbiB0aGUgZHJpdmVyCit3aWxsIG5vdCBmaW5kIHRoZSBjYXJkLgorVGhlIGNvbW1hbmQgbGluZSBvcHRpb25zIGFyZToKKyBjb205MGlvPTxpbz5bLDxpcnE+XVssPG5hbWU+XSAKKworSWYgeW91IGxvYWQgdGhlIGNoaXBzZXQgc3VwcG9ydCBhcyBhIG1vZHVsZSwgdGhlIG9wdGlvbnMgYXJlOgorIGlvPTxpbz4gaXJxPTxpcnE+IGRldmljZT08bmFtZT4KKworIDQuIEFSQ25ldCBSSU0gSSBjYXJkcy4KKworVGhlc2UgYXJlIENPTTkweHggY2hpcHMgd2hpY2ggYXJlIF9jb21wbGV0ZWx5XyBtZW1vcnkgbWFwcGVkLiBUaGUgc3VwcG9ydCBmb3IKK3RoZXNlIGlzIG5vdCB0ZXN0ZWQuIElmIHlvdSBoYXZlIG9uZSwgcGxlYXNlIG1haWwgdGhlIGF1dGhvciB3aXRoIGEgc3VjY2VzcyAKK3JlcG9ydC4gQWxsIG9wdGlvbnMgbXVzdCBiZSBzcGVjaWZpZWQsIGV4Y2VwdCB0aGUgZGV2aWNlIG5hbWUuCitDb21tYW5kIGxpbmUgb3B0aW9uczoKKyBhcmNyaW1pPTxzaG1lbT4sPGlycT4sPG5vZGVfSUQ+Wyw8bmFtZT5dCisKK0lmIHlvdSBsb2FkIHRoZSBjaGlwc2V0IHN1cHBvcnQgYXMgYSBtb2R1bGUsIHRoZSBvcHRpb25zIGFyZToKKyBzaG1lbT08c2htZW0+IGlycT08aXJxPiBub2RlPTxub2RlX0lEPiBkZXZpY2U9PG5hbWU+CisKKworTG9hZGFibGUgTW9kdWxlIFN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvbmZpZ3VyZSBhbmQgcmVidWlsZCBMaW51eC4gIFdoZW4gYXNrZWQsIGFuc3dlciAnbScgdG8gIkdlbmVyaWMgQVJDbmV0IAorc3VwcG9ydCIgYW5kIHRvIHN1cHBvcnQgZm9yIHlvdXIgQVJDbmV0IGNoaXBzZXQgaWYgeW91IHdhbnQgdG8gdXNlIHRoZQorbG9hZGFibGUgbW9kdWxlLiBZb3UgY2FuIGFsc28gc2F5ICd5JyB0byAiR2VuZXJpYyBBUkNuZXQgc3VwcG9ydCIgYW5kICdtJyAKK3RvIHRoZSBjaGlwc2V0IHN1cHBvcnQgaWYgeW91IHdpc2guCisKKwltYWtlIGNvbmZpZworCW1ha2UgY2xlYW4JCisJbWFrZSB6SW1hZ2UKKwltYWtlIG1vZHVsZXMKKwkKK0lmIHlvdSdyZSB1c2luZyBhIGxvYWRhYmxlIG1vZHVsZSwgeW91IG5lZWQgdG8gdXNlIGluc21vZCB0byBsb2FkIGl0LCBhbmQKK3lvdSBjYW4gc3BlY2lmeSB2YXJpb3VzIGNoYXJhY3RlcmlzdGljcyBvZiB5b3VyIGNhcmQgb24gdGhlIGNvbW1hbmQKK2xpbmUuICAoSW4gcmVjZW50IHZlcnNpb25zIG9mIHRoZSBkcml2ZXIsIGF1dG9wcm9iaW5nIGlzIG11Y2ggbW9yZSByZWxpYWJsZQorYW5kIHdvcmtzIGFzIGEgbW9kdWxlLCBzbyBtb3N0IG9mIHRoaXMgaXMgbm93IHVubmVjZXNzYXJ5LikKKworRm9yIGV4YW1wbGU6CisJY2QgL3Vzci9zcmMvbGludXgvbW9kdWxlcworCWluc21vZCBhcmNuZXQubworCWluc21vZCBjb205MHh4Lm8KKwlpbnNtb2QgY29tMjAwMjAubyBpbz0weDJlMCBkZXZpY2U9ZXRoMQorCQorCitVc2luZyB0aGUgRHJpdmVyCistLS0tLS0tLS0tLS0tLS0tCisKK0lmIHlvdSBidWlsZCB5b3VyIGtlcm5lbCB3aXRoIEFSQ25ldCBDT005MHh4IHN1cHBvcnQgaW5jbHVkZWQsIGl0IHNob3VsZCAKK3Byb2JlIGZvciB5b3VyIGNhcmQgYXV0b21hdGljYWxseSB3aGVuIHlvdSBib290LiBJZiB5b3UgdXNlIGEgZGlmZmVyZW50CitjaGlwc2V0IGRyaXZlciBjb21wbGllZCBpbnRvIHRoZSBrZXJuZWwsIHlvdSBtdXN0IGdpdmUgdGhlIG5lY2Vzc2FyeSBvcHRpb25zCitvbiB0aGUga2VybmVsIGNvbW1hbmQgbGluZSwgYXMgZGV0YWlsZWQgYWJvdmUuCisKK0dvIHJlYWQgdGhlIE5FVC0yLUhPV1RPIGFuZCBFVEhFUk5FVC1IT1dUTyBmb3IgTGludXg7IHRoZXkgc2hvdWxkIGJlCithdmFpbGFibGUgd2hlcmUgeW91IHBpY2tlZCB1cCB0aGlzIGRyaXZlci4gIFRoaW5rIG9mIHlvdXIgQVJDbmV0IGFzIGEKK3NvdXBlZC11cCAob3IgZG93biwgYXMgdGhlIGNhc2UgbWF5IGJlKSBFdGhlcm5ldCBjYXJkLgorCitCeSB0aGUgd2F5LCBiZSBzdXJlIHRvIGNoYW5nZSBhbGwgcmVmZXJlbmNlcyBmcm9tICJldGgwIiB0byAiYXJjMCIgaW4gdGhlCitIT1dUT3MuICBSZW1lbWJlciB0aGF0IEFSQ25ldCBpc24ndCBhICJ0cnVlIiBFdGhlcm5ldCwgYW5kIHRoZSBkZXZpY2UgbmFtZQoraXMgRElGRkVSRU5ULgorCisKK011bHRpcGxlIENhcmRzIGluIE9uZSBDb21wdXRlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0xpbnV4IGhhcyBwcmV0dHkgZ29vZCBzdXBwb3J0IGZvciB0aGlzIG5vdywgYnV0IHNpbmNlIEkndmUgYmVlbiBidXN5LCB0aGUKK0FSQ25ldCBkcml2ZXIgaGFzIHNvbWV3aGF0IHN1ZmZlcmVkIGluIHRoaXMgcmVzcGVjdC4gQ09NOTB4eCBzdXBwb3J0LCBpZiAKK2NvbXBpbGVkIGludG8gdGhlIGtlcm5lbCwgd2lsbCAodHJ5IHRvKSBhdXRvZGV0ZWN0IGFsbCB0aGUgaW5zdGFsbGVkIGNhcmRzLiAKKworSWYgeW91IGhhdmUgb3RoZXIgY2FyZHMsIHdpdGggc3VwcG9ydCBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwsIHRoZW4geW91IGNhbiAKK2p1c3QgcmVwZWF0IHRoZSBvcHRpb25zIG9uIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lLCBlLmcuOgorTElMTzogbGludXggY29tMjAwMjA9MHgyZTAgY29tMjAwMjA9MHgzODAgY29tOTBpbz0weDI2MAorCitJZiB5b3UgaGF2ZSB0aGUgY2hpcHNldCBzdXBwb3J0IGJ1aWx0IGFzIGEgbG9hZGFibGUgbW9kdWxlLCB0aGVuIHlvdSBuZWVkIHRvIAorZG8gc29tZXRoaW5nIGxpa2UgdGhpczoKKwlpbnNtb2QgLW8gYXJjMCBjb205MHh4CisJaW5zbW9kIC1vIGFyYzEgY29tMjAwMjAgaW89MHgyZTAKKwlpbnNtb2QgLW8gYXJjMiBjb205MHh4CitUaGUgQVJDbmV0IGRyaXZlcnMgd2lsbCBub3cgc29ydCBvdXQgdGhlaXIgbmFtZXMgYXV0b21hdGljYWxseS4KKworCitIb3cgZG8gSSBnZXQgaXQgdG8gd29yayB3aXRoLi4uPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTkZTOiBTaG91bGQgYmUgZmluZSBsaW51eC0+bGludXgsIGp1c3QgcHJldGVuZCB5b3UncmUgdXNpbmcgRXRoZXJuZXQgY2FyZHMuIAorICAgICAgICBvYWsub2FrbGFuZC5lZHU6L3NpbXRlbC9tc2Rvcy9uZnMgaGFzIHNvbWUgbmljZSBET1MgY2xpZW50cy4gIFRoZXJlCisgICAgICAgIGlzIGFsc28gYSBET1MtYmFzZWQgTkZTIHNlcnZlciBjYWxsZWQgU09TUy4gIEl0IGRvZXNuJ3QgbXVsdGl0YXNrCisgICAgICAgIHF1aXRlIHRoZSB3YXkgTGludXggZG9lcyAoYWN0dWFsbHksIGl0IGRvZXNuJ3QgbXVsdGl0YXNrIEFUIEFMTCkgYnV0CisgICAgICAgIHlvdSBuZXZlciBrbm93IHdoYXQgeW91IG1pZ2h0IG5lZWQuCisgICAgICAgIAorICAgICAgICBXaXRoIEFtaVRDUCAoYW5kIHBvc3NpYmx5IG90aGVycyksIHlvdSBtYXkgbmVlZCB0byBzZXQgdGhlIGZvbGxvd2luZworICAgICAgICBvcHRpb25zIGluIHlvdXIgQW1pZ2EgbmZzdGFiOiAgTUQgMTAyNCBNUiAxMDI0IE1XIDEwMjQKKyAgICAgICAgKFRoYW5rcyB0byBDaHJpc3RpYW4gR290dHNjaGxpbmcgPGZlcmtzeUBpbmRpZ28udG5nLm9jaGUuZGU+CisJZm9yIHRoaXMuKQorCQorCVByb2JhYmx5IHRoZXNlIHJlZmVyIHRvIG1heGltdW0gTkZTIGRhdGEvcmVhZC93cml0ZSBibG9jayBzaXplcy4gIEkKKwlkb24ndCBrbm93IHdoeSB0aGUgZGVmYXVsdHMgb24gdGhlIEFtaWdhIGRpZG4ndCB3b3JrOyB3cml0ZSB0byBtZSBpZgorCXlvdSBrbm93IG1vcmUuCisKK0RPUzogSWYgeW91J3JlIHVzaW5nIHRoZSBmcmVld2FyZSBhcmNldGhlci5jb20sIHlvdSBtaWdodCB3YW50IHRvIGluc3RhbGwKKyAgICAgICAgdGhlIGRyaXZlciBwYXRjaCBmcm9tIG15IHdlYiBwYWdlLiAgSXQgaGVscHMgd2l0aCBQQy9UQ1AsIGFuZCBhbHNvCisgICAgICAgIGNhbiBnZXQgYXJjZXRoZXIgdG8gbG9hZCBpZiBpdCB0aW1lZCBvdXQgdG9vIHF1aWNrbHkgZHVyaW5nCisgICAgICAgIGluaXRpYWxpemF0aW9uLiAgSW4gZmFjdCwgaWYgeW91IHVzZSBpdCBvbiBhIDM4NisgeW91IFJFQUxMWSBuZWVkCisgICAgICAgIHRoZSBwYXRjaCwgcmVhbGx5LgorCQorV2luZG93czogIFNlZSBET1MgOikgIFRydW1wZXQgV2luc29jayB3b3JrcyBmaW5lIHdpdGggZWl0aGVyIHRoZSBOb3ZlbGwgb3IKKwlBcmNldGhlciBjbGllbnQsIGFzc3VtaW5nIHlvdSByZW1lbWJlciB0byBsb2FkIHdpbnBrdCBvZiBjb3Vyc2UuCisKK0xBTiBNYW5hZ2VyIGFuZCBXaW5kb3dzIGZvciBXb3JrZ3JvdXBzOiBUaGVzZSBwcm9ncmFtcyB1c2UgcHJvdG9jb2xzIHRoYXQKKyAgICAgICAgYXJlIGluY29tcGF0aWJsZSB3aXRoIHRoZSBJbnRlcm5ldCBzdGFuZGFyZC4gIFRoZXkgdHJ5IHRvIHByZXRlbmQKKyAgICAgICAgdGhlIGNhcmRzIGFyZSBFdGhlcm5ldCwgYW5kIGNvbmZ1c2UgZXZlcnlvbmUgZWxzZSBvbiB0aGUgbmV0d29yay4gCisgICAgICAgIAorICAgICAgICBIb3dldmVyLCB2Mi4wMCBhbmQgaGlnaGVyIG9mIHRoZSBMaW51eCBBUkNuZXQgZHJpdmVyIHN1cHBvcnRzIHRoaXMKKyAgICAgICAgcHJvdG9jb2wgdmlhIHRoZSAnYXJjMGUnIGRldmljZS4gIFNlZSB0aGUgc2VjdGlvbiBvbiAiTXVsdGlwcm90b2NvbAorICAgICAgICBTdXBwb3J0IiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworCVVzaW5nIHRoZSBmcmVld2FyZSBTYW1iYSBzZXJ2ZXIgYW5kIGNsaWVudHMgZm9yIExpbnV4LCB5b3UgY2FuIG5vdworCWludGVyZmFjZSBxdWl0ZSBuaWNlbHkgd2l0aCBUQ1AvSVAtYmFzZWQgV2ZXZyBvciBMYW4gTWFuYWdlcgorCW5ldHdvcmtzLgorCQorV2luZG93cyA5NTogVG9vbHMgYXJlIGluY2x1ZGVkIHdpdGggV2luOTUgdGhhdCBsZXQgeW91IHVzZSBlaXRoZXIgdGhlIExBTk1BTgorCXN0eWxlIG5ldHdvcmsgZHJpdmVycyAoTkRJUykgb3IgTm92ZWxsIGRyaXZlcnMgKE9ESSkgdG8gaGFuZGxlIHlvdXIKKwlBUkNuZXQgcGFja2V0cy4gIElmIHlvdSB1c2UgT0RJLCB5b3UnbGwgbmVlZCB0byB1c2UgdGhlICdhcmMwJworCWRldmljZSB3aXRoIExpbnV4LiAgSWYgeW91IHVzZSBORElTLCB0aGVuIHRyeSB0aGUgJ2FyYzBlJyBkZXZpY2UuIAorCVNlZSB0aGUgIk11bHRpcHJvdG9jb2wgU3VwcG9ydCIgc2VjdGlvbiBiZWxvdyBpZiB5b3UgbmVlZCBhcmMwZSwKKwl5b3UncmUgY29tcGxldGVseSBpbnNhbmUsIGFuZC9vciB5b3UgbmVlZCB0byBidWlsZCBzb21lIGtpbmQgb2YKKwloeWJyaWQgbmV0d29yayB0aGF0IHVzZXMgYm90aCBlbmNhcHN1bGF0aW9uIHR5cGVzLgorCitPUy8yOiBJJ3ZlIGJlZW4gdG9sZCBpdCB3b3JrcyB1bmRlciBXYXJwIENvbm5lY3Qgd2l0aCBhbiBBUkNuZXQgZHJpdmVyIGZyb20KKwlTTUMuICBZb3UgbmVlZCB0byB1c2UgdGhlICdhcmMwZScgaW50ZXJmYWNlIGZvciB0aGlzLiAgSWYgeW91IGdldAorCXRoZSBTTUMgZHJpdmVyIHRvIHdvcmsgd2l0aCB0aGUgVENQL0lQIHN0dWZmIGluY2x1ZGVkIGluIHRoZQorCSJub3JtYWwiIFdhcnAgQm9udXMgUGFjaywgbGV0IG1lIGtub3cuCisKKwlmdHAubWljcm9zb2Z0LmNvbSBhbHNvIGhhcyBhIGZyZWV3YXJlICJMYW4gTWFuYWdlciBmb3IgT1MvMiIgY2xpZW50CisJd2hpY2ggc2hvdWxkIHVzZSB0aGUgc2FtZSBwcm90b2NvbCBhcyBXZldnIGRvZXMuICBJIGhhZCBubyBsdWNrCisJaW5zdGFsbGluZyBpdCB1bmRlciBXYXJwLCBob3dldmVyLiAgUGxlYXNlIG1haWwgbWUgd2l0aCBhbnkgcmVzdWx0cy4KKworTmV0QlNEL0FtaVRDUDogVGhlc2UgdXNlIGFuIG9sZCB2ZXJzaW9uIG9mIHRoZSBJbnRlcm5ldCBzdGFuZGFyZCBBUkNuZXQKKwlwcm90b2NvbCAoUkZDMTA1MSkgd2hpY2ggaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBMaW51eCBkcml2ZXIgdjIuMTAKKwlBTFBIQSBhbmQgYWJvdmUgdXNpbmcgdGhlIGFyYzBzIGRldmljZS4gKFNlZSAiTXVsdGlwcm90b2NvbCBBUkNuZXQiCisJYmVsb3cuKSAgKiogTmV3ZXIgdmVyc2lvbnMgb2YgTmV0QlNEIGFwcGFyZW50bHkgc3VwcG9ydCBSRkMxMjAxLgorCisKK1VzaW5nIE11bHRpcHJvdG9jb2wgQVJDbmV0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgQVJDbmV0IGRyaXZlciB2Mi4xMCBBTFBIQSBzdXBwb3J0cyB0aHJlZSBwcm90b2NvbHMsIGVhY2ggb24gaXRzIG93bgorInZpcnR1YWwgbmV0d29yayBkZXZpY2UiOgorCisJYXJjMCAgLSBSRkMxMjAxIHByb3RvY29sLCB0aGUgb2ZmaWNpYWwgSW50ZXJuZXQgc3RhbmRhcmQgd2hpY2gganVzdAorCQloYXBwZW5zIHRvIGJlIDEwMCUgY29tcGF0aWJsZSB3aXRoIE5vdmVsbCdzIFRSWE5FVCBkcml2ZXIuIAorCQlWZXJzaW9uIDEuMDAgb2YgdGhlIEFSQ25ldCBkcml2ZXIgc3VwcG9ydGVkIF9vbmx5XyB0aGlzCisJCXByb3RvY29sLiAgYXJjMCBpcyB0aGUgZmFzdGVzdCBvZiB0aGUgdGhyZWUgcHJvdG9jb2xzIChmb3IKKwkJd2hhdGV2ZXIgcmVhc29uKSwgYW5kIGFsbG93cyBsYXJnZXIgcGFja2V0cyB0byBiZSB1c2VkCisJCWJlY2F1c2UgaXQgc3VwcG9ydHMgUkZDMTIwMSAicGFja2V0IHNwbGl0dGluZyIgb3BlcmF0aW9ucy4gCisJCVVubGVzcyB5b3UgaGF2ZSBhIHNwZWNpZmljIG5lZWQgdG8gdXNlIGEgZGlmZmVyZW50IHByb3RvY29sLAorCQlJIHN0cm9uZ2x5IHN1Z2dlc3QgdGhhdCB5b3Ugc3RpY2sgd2l0aCB0aGlzIG9uZS4KKwkJCisJYXJjMGUgLSAiRXRoZXJuZXQtRW5jYXBzdWxhdGlvbiIgd2hpY2ggc2VuZHMgcGFja2V0cyBvdmVyIEFSQ25ldAorCQl0aGF0IGFyZSBhY3R1YWxseSBhIGxvdCBsaWtlIEV0aGVybmV0IHBhY2tldHMsIGluY2x1ZGluZyB0aGUKKwkJNi1ieXRlIGhhcmR3YXJlIGFkZHJlc3Nlcy4gIFRoaXMgcHJvdG9jb2wgaXMgY29tcGF0aWJsZSB3aXRoCisJCU1pY3Jvc29mdCdzIE5ESVMgQVJDbmV0IGRyaXZlciwgbGlrZSB0aGUgb25lIGluIFdmV2cgYW5kCisJCUxBTk1BTi4gIEJlY2F1c2UgdGhlIE1UVSBvZiA0OTMgaXMgYWN0dWFsbHkgc21hbGxlciB0aGFuIHRoZQorCQlvbmUgInJlcXVpcmVkIiBieSBUQ1AvSVAgKDU3NiksIHRoZXJlIGlzIGEgY2hhbmNlIHRoYXQgc29tZQorCQluZXR3b3JrIG9wZXJhdGlvbnMgd2lsbCBub3QgZnVuY3Rpb24gcHJvcGVybHkuICBUaGUgTGludXgKKwkJVENQL0lQIGxheWVyIGNhbiBjb21wZW5zYXRlIGluIG1vc3QgY2FzZXMsIGhvd2V2ZXIsIGJ5CisJCWF1dG9tYXRpY2FsbHkgZnJhZ21lbnRpbmcgdGhlIFRDUC9JUCBwYWNrZXRzIHRvIG1ha2UgdGhlbQorCQlmaXQuICBhcmMwZSBhbHNvIHdvcmtzIHNsaWdodGx5IG1vcmUgc2xvd2x5IHRoYW4gYXJjMCwgZm9yCisJCXJlYXNvbnMgeWV0IHRvIGJlIGRldGVybWluZWQuICAoUHJvYmFibHkgaXQncyB0aGUgc21hbGxlcgorCQlNVFUgdGhhdCBkb2VzIGl0LikKKwkJCisJYXJjMHMgLSBUaGUgIltzXWltcGxlIiBSRkMxMDUxIHByb3RvY29sIGlzIHRoZSAicHJldmlvdXMiIEludGVybmV0CisJCXN0YW5kYXJkIHRoYXQgaXMgY29tcGxldGVseSBpbmNvbXBhdGlibGUgd2l0aCB0aGUgbmV3CisJCXN0YW5kYXJkLiAgU29tZSBzb2Z0d2FyZSB0b2RheSwgaG93ZXZlciwgY29udGludWVzIHRvCisJCXN1cHBvcnQgdGhlIG9sZCBzdGFuZGFyZCAoYW5kIG9ubHkgdGhlIG9sZCBzdGFuZGFyZCkKKwkJaW5jbHVkaW5nIE5ldEJTRCBhbmQgQW1pVENQLiAgUkZDMTA1MSBhbHNvIGRvZXMgbm90IHN1cHBvcnQKKwkJUkZDMTIwMSdzIHBhY2tldCBzcGxpdHRpbmcsIGFuZCB0aGUgTVRVIG9mIDUwNyBpcyBzdGlsbAorCQlzbWFsbGVyIHRoYW4gdGhlIEludGVybmV0ICJyZXF1aXJlbWVudCwiIHNvIGl0J3MgcXVpdGUKKwkJcG9zc2libGUgdGhhdCB5b3UgbWF5IHJ1biBpbnRvIHByb2JsZW1zLiAgSXQncyBhbHNvIHNsb3dlcgorCQl0aGFuIFJGQzEyMDEgYnkgYWJvdXQgMjUlLCBmb3IgdGhlIHNhbWUgcmVhc29uIGFzIGFyYzBlLgorCQkKKwkJVGhlIGFyYzBzIHN1cHBvcnQgd2FzIGNvbnRyaWJ1dGVkIGJ5IFRvbWFzeiBNb3R5bGV3c2tpCisJCWFuZCBtb2RpZmllZCBzb21ld2hhdCBieSBtZS4gIEJ1Z3MgYXJlIHByb2JhYmx5IG15IGZhdWx0LgorCitZb3UgY2FuIGNob29zZSBub3QgdG8gY29tcGlsZSBhcmMwZSBhbmQgYXJjMHMgaW50byB0aGUgZHJpdmVyIGlmIHlvdSB3YW50IC0KK3RoaXMgd2lsbCBzYXZlIHlvdSBhIGJpdCBvZiBtZW1vcnkgYW5kIGF2b2lkIGNvbmZ1c2lvbiB3aGVuIGVnLiB0cnlpbmcgdG8KK3VzZSB0aGUgIk5GUy1yb290IiBzdHVmZiBpbiByZWNlbnQgTGludXgga2VybmVscy4KKworVGhlIGFyYzBlIGFuZCBhcmMwcyBkZXZpY2VzIGFyZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB5b3UgZmlyc3QKK2lmY29uZmlnIHRoZSBhcmMwIGRldmljZS4gIFRvIGFjdHVhbGx5IHVzZSB0aGVtLCB0aG91Z2gsIHlvdSBuZWVkIHRvIGFsc28KK2lmY29uZmlnIHRoZSBvdGhlciB2aXJ0dWFsIGRldmljZXMgeW91IG5lZWQuICBUaGVyZSBhcmUgYSBudW1iZXIgb2Ygd2F5cyB5b3UKK2NhbiBzZXQgdXAgeW91ciBuZXR3b3JrIHRoZW46CisKKworMS4gU2luZ2xlIFByb3RvY29sLgorCisgICBUaGlzIGlzIHRoZSBzaW1wbGVzdCB3YXkgdG8gY29uZmlndXJlIHlvdXIgbmV0d29yazogdXNlIGp1c3Qgb25lIG9mIHRoZQorICAgdHdvIGF2YWlsYWJsZSBwcm90b2NvbHMuICBBcyBtZW50aW9uZWQgYWJvdmUsIGl0J3MgYSBnb29kIGlkZWEgdG8gdXNlCisgICBvbmx5IGFyYzAgdW5sZXNzIHlvdSBoYXZlIGEgZ29vZCByZWFzb24gKGxpa2Ugc29tZSBvdGhlciBzb2Z0d2FyZSwgaWUuCisgICBXZldnLCB0aGF0IG9ubHkgd29ya3Mgd2l0aCBhcmMwZSkuCisgICAKKyAgIElmIHlvdSBuZWVkIG9ubHkgYXJjMCwgdGhlbiB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIHNob3VsZCBnZXQgeW91IGdvaW5nOgorICAgCWlmY29uZmlnIGFyYzAgTVkuSVAuQURELlJFU1MKKyAgIAlyb3V0ZSBhZGQgTVkuSVAuQURELlJFU1MgYXJjMAorICAgCXJvdXRlIGFkZCAtbmV0IFNVQi5ORVQuQURELlJFU1MgYXJjMAorICAgCVthZGQgb3RoZXIgbG9jYWwgcm91dGVzIGhlcmVdCisgICAJCisgICBJZiB5b3UgbmVlZCBhcmMwZSAoYW5kIG9ubHkgYXJjMGUpLCBpdCdzIGEgbGl0dGxlIGRpZmZlcmVudDoKKyAgIAlpZmNvbmZpZyBhcmMwIE1ZLklQLkFERC5SRVNTCisgICAJaWZjb25maWcgYXJjMGUgTVkuSVAuQURELlJFU1MKKyAgIAlyb3V0ZSBhZGQgTVkuSVAuQURELlJFU1MgYXJjMGUKKyAgIAlyb3V0ZSBhZGQgLW5ldCBTVUIuTkVULkFERC5SRVNTIGFyYzBlCisgICAKKyAgIGFyYzBzIHdvcmtzIG11Y2ggdGhlIHNhbWUgd2F5IGFzIGFyYzBlLgorCisKKzIuIE1vcmUgdGhhbiBvbmUgcHJvdG9jb2wgb24gdGhlIHNhbWUgd2lyZS4KKworICAgTm93IHRoaW5ncyBzdGFydCBnZXR0aW5nIGNvbmZ1c2luZy4gIFRvIGV2ZW4gdHJ5IGl0LCB5b3UgbWF5IG5lZWQgdG8gYmUKKyAgIHBhcnRseSBjcmF6eS4gIEhlcmUncyB3aGF0ICpJKiBkaWQuIDopIE5vdGUgdGhhdCBJIGRvbid0IGluY2x1ZGUgYXJjMHMgaW4KKyAgIG15IGhvbWUgbmV0d29yazsgSSBkb24ndCBoYXZlIGFueSBOZXRCU0Qgb3IgQW1pVENQIGNvbXB1dGVycywgc28gSSBvbmx5CisgICB1c2UgYXJjMHMgZHVyaW5nIGxpbWl0ZWQgdGVzdGluZy4KKworICAgSSBoYXZlIHRocmVlIGNvbXB1dGVycyBvbiBteSBob21lIG5ldHdvcms7IHR3byBMaW51eCBib3hlcyAod2hpY2ggcHJlZmVyCisgICBSRkMxMjAxIHByb3RvY29sLCBmb3IgcmVhc29ucyBsaXN0ZWQgYWJvdmUpLCBhbmQgb25lIFhUIHRoYXQgY2FuJ3QgcnVuCisgICBMaW51eCBidXQgcnVucyB0aGUgZnJlZSBNaWNyb3NvZnQgTEFOTUFOIENsaWVudCBpbnN0ZWFkLgorCisgICBXb3JzZSwgb25lIG9mIHRoZSBMaW51eCBjb21wdXRlcnMgKGZyZWVkb20pIGFsc28gaGFzIGEgbW9kZW0gYW5kIGFjdHMgYXMKKyAgIGEgcm91dGVyIHRvIG15IEludGVybmV0IHByb3ZpZGVyLiAgVGhlIG90aGVyIExpbnV4IGJveCAoaW5zaWdodCkgYWxzbyBoYXMKKyAgIGl0cyBvd24gSVAgYWRkcmVzcyBhbmQgbmVlZHMgdG8gdXNlIGZyZWVkb20gYXMgaXRzIGRlZmF1bHQgZ2F0ZXdheS4gIFRoZQorICAgWFQgKHBhdGllbmNlKSwgaG93ZXZlciwgZG9lcyBub3QgaGF2ZSBpdHMgb3duIEludGVybmV0IElQIGFkZHJlc3MgYW5kIHNvCisgICBJIGFzc2lnbmVkIGl0IG9uZSBvbiBhICJwcml2YXRlIHN1Ym5ldCIgKGFzIGRlZmluZWQgYnkgUkZDMTU5NykuCisKKyAgIFRvIHN0YXJ0IHdpdGgsIHRha2UgYSBzaW1wbGUgbmV0d29yayB3aXRoIGp1c3QgaW5zaWdodCBhbmQgZnJlZWRvbS4gCisgICBJbnNpZ2h0IG5lZWRzIHRvOgorICAgCS0gdGFsayB0byBmcmVlZG9tIHZpYSBSRkMxMjAxIChhcmMwKSBwcm90b2NvbCwgYmVjYXVzZSBJIGxpa2UgaXQKKwkgIG1vcmUgYW5kIGl0J3MgZmFzdGVyLgorCS0gdXNlIGZyZWVkb20gYXMgaXRzIEludGVybmV0IGdhdGV3YXkuCisJCisgICBUaGF0J3MgcHJldHR5IGVhc3kgdG8gZG8uICBTZXQgdXAgaW5zaWdodCBsaWtlIHRoaXM6CisgICAJaWZjb25maWcgYXJjMCBpbnNpZ2h0CisgICAJcm91dGUgYWRkIGluc2lnaHQgYXJjMAorICAgCXJvdXRlIGFkZCBmcmVlZG9tIGFyYzAJLyogSSB3b3VsZCB1c2UgdGhlIHN1Ym5ldCBoZXJlIChsaWtlIEkgc2FpZAorCQkJCQl0byB0byBpbiAic2luZ2xlIHByb3RvY29sIiBhYm92ZSksCisgICAJCQkJCWJ1dCB0aGUgcmVzdCBvZiB0aGUgc3VibmV0CisgICAJCQkJCXVuZm9ydHVuYXRlbHkgbGllcyBhY3Jvc3MgdGhlIFBQUAorICAgCQkJCQlsaW5rIG9uIGZyZWVkb20sIHdoaWNoIGNvbmZ1c2VzCisgICAJCQkJCXRoaW5ncy4gKi8KKyAgIAlyb3V0ZSBhZGQgZGVmYXVsdCBndyBmcmVlZG9tCisgICAJCisgICBBbmQgZnJlZWRvbSBnZXRzIGNvbmZpZ3VyZWQgbGlrZSBzbzoKKyAgIAlpZmNvbmZpZyBhcmMwIGZyZWVkb20KKyAgIAlyb3V0ZSBhZGQgZnJlZWRvbSBhcmMwCisgICAJcm91dGUgYWRkIGluc2lnaHQgYXJjMAorICAgCS8qIGFuZCBkZWZhdWx0IGdhdGV3YXkgaXMgY29uZmlndXJlZCBieSBwcHBkICovCisgICAJCisgICBHcmVhdCwgbm93IGluc2lnaHQgdGFsa3MgdG8gZnJlZWRvbSBkaXJlY3RseSBvbiBhcmMwLCBhbmQgc2VuZHMgcGFja2V0cworICAgdG8gdGhlIEludGVybmV0IHRocm91Z2ggZnJlZWRvbS4gIElmIHlvdSBkaWRuJ3Qga25vdyBob3cgdG8gZG8gdGhlIGFib3ZlLAorICAgeW91IHNob3VsZCBwcm9iYWJseSBzdG9wIHJlYWRpbmcgdGhpcyBzZWN0aW9uIG5vdyBiZWNhdXNlIGl0IG9ubHkgZ2V0cworICAgd29yc2UuCisKKyAgIE5vdywgaG93IGRvIEkgYWRkIHBhdGllbmNlIGludG8gdGhlIG5ldHdvcms/ICBJdCB3aWxsIGJlIHVzaW5nIExBTk1BTgorICAgQ2xpZW50LCB3aGljaCBtZWFucyBJIG5lZWQgdGhlIGFyYzBlIGRldmljZS4gIEl0IG5lZWRzIHRvIGJlIGFibGUgdG8gdGFsaworICAgdG8gYm90aCBpbnNpZ2h0IGFuZCBmcmVlZG9tLCBhbmQgYWxzbyB1c2UgZnJlZWRvbSBhcyBhIGdhdGV3YXkgdG8gdGhlCisgICBJbnRlcm5ldC4gIChSZWNhbGwgdGhhdCBwYXRpZW5jZSBoYXMgYSAicHJpdmF0ZSBJUCBhZGRyZXNzIiB3aGljaCB3b24ndAorICAgd29yayBvbiB0aGUgSW50ZXJuZXQ7IHRoYXQncyBva2F5LCBJIGNvbmZpZ3VyZWQgTGludXggSVAgbWFzcXVlcmFkaW5nIG9uCisgICBmcmVlZG9tIGZvciB0aGlzIHN1Ym5ldCkuCisgICAKKyAgIFNvIHBhdGllbmNlIChuZWNlc3NhcmlseTsgSSBkb24ndCBoYXZlIGFub3RoZXIgSVAgbnVtYmVyIGZyb20gbXkKKyAgIHByb3ZpZGVyKSBoYXMgYW4gSVAgYWRkcmVzcyBvbiBhIGRpZmZlcmVudCBzdWJuZXQgdGhhbiBmcmVlZG9tIGFuZAorICAgaW5zaWdodCwgYnV0IG5lZWRzIHRvIHVzZSBmcmVlZG9tIGFzIGFuIEludGVybmV0IGdhdGV3YXkuICBXb3JzZSwgbW9zdAorICAgRE9TIG5ldHdvcmtpbmcgcHJvZ3JhbXMsIGluY2x1ZGluZyBMQU5NQU4sIGhhdmUgYnJhaW5kZWFkIG5ldHdvcmtpbmcKKyAgIHNjaGVtZXMgdGhhdCByZWx5IGNvbXBsZXRlbHkgb24gdGhlIG5ldG1hc2sgYW5kIGEgJ2RlZmF1bHQgZ2F0ZXdheScgdG8KKyAgIGRldGVybWluZSBob3cgdG8gcm91dGUgcGFja2V0cy4gIFRoaXMgbWVhbnMgdGhhdCB0byBnZXQgdG8gZnJlZWRvbSBvcgorICAgaW5zaWdodCwgcGF0aWVuY2UgV0lMTCBzZW5kIHRocm91Z2ggaXRzIGRlZmF1bHQgZ2F0ZXdheSwgcmVnYXJkbGVzcyBvZgorICAgdGhlIGZhY3QgdGhhdCBib3RoIGZyZWVkb20gYW5kIGluc2lnaHQgKGNvdXJ0ZXN5IG9mIHRoZSBhcmMwZSBkZXZpY2UpCisgICBjb3VsZCB1bmRlcnN0YW5kIGEgZGlyZWN0IHRyYW5zbWlzc2lvbi4KKyAgIAorICAgSSBjb21wZW5zYXRlIGJ5IGdpdmluZyBmcmVlZG9tIGFuIGV4dHJhIElQIGFkZHJlc3MgLSBhbGlhc2VkICdnYXRla2VlcGVyJworICAgLSB0aGF0IGlzIG9uIG15IHByaXZhdGUgc3VibmV0LCB0aGUgc2FtZSBzdWJuZXQgdGhhdCBwYXRpZW5jZSBpcyBvbi4gIEkKKyAgIHRoZW4gZGVmaW5lIGdhdGVrZWVwZXIgdG8gYmUgdGhlIGRlZmF1bHQgZ2F0ZXdheSBmb3IgcGF0aWVuY2UuCisgICAKKyAgIFRvIGNvbmZpZ3VyZSBmcmVlZG9tIChpbiBhZGRpdGlvbiB0byB0aGUgY29tbWFuZHMgYWJvdmUpOgorICAgCWlmY29uZmlnIGFyYzBlIGdhdGVrZWVwZXIKKyAgIAlyb3V0ZSBhZGQgZ2F0ZWtlZXBlciBhcmMwZQorICAgCXJvdXRlIGFkZCBwYXRpZW5jZSBhcmMwZQorICAgCisgICBUaGlzIHdheSwgZnJlZWRvbSB3aWxsIHNlbmQgYWxsIHBhY2tldHMgZm9yIHBhdGllbmNlIHRocm91Z2ggYXJjMGUsCisgICBnaXZpbmcgaXRzIElQIGFkZHJlc3MgYXMgZ2F0ZWtlZXBlciAob24gdGhlIHByaXZhdGUgc3VibmV0KS4gIFdoZW4gaXQKKyAgIHRhbGtzIHRvIGluc2lnaHQgb3IgdGhlIEludGVybmV0LCBpdCB3aWxsIHVzZSBpdHMgImZyZWVkb20iIEludGVybmV0IElQCisgICBhZGRyZXNzLgorICAgCisgICBZb3Ugd2lsbCBub3RpY2UgdGhhdCB3ZSBoYXZlbid0IGNvbmZpZ3VyZWQgdGhlIGFyYzBlIGRldmljZSBvbiBpbnNpZ2h0LiAKKyAgIFRoaXMgd291bGQgd29yaywgYnV0IGlzIG5vdCByZWFsbHkgbmVjZXNzYXJ5LCBhbmQgd291bGQgcmVxdWlyZSBtZSB0bworICAgYXNzaWduIGluc2lnaHQgYW5vdGhlciBzcGVjaWFsIElQIG51bWJlciBmcm9tIG15IHByaXZhdGUgc3VibmV0LiAgU2luY2UKKyAgIGJvdGggaW5zaWdodCBhbmQgcGF0aWVuY2UgYXJlIHVzaW5nIGZyZWVkb20gYXMgdGhlaXIgZGVmYXVsdCBnYXRld2F5LCB0aGUKKyAgIHR3byBjYW4gYWxyZWFkeSB0YWxrIHRvIGVhY2ggb3RoZXIuCisgICAKKyAgIEl0J3MgcXVpdGUgZm9ydHVuYXRlIHRoYXQgSSBzZXQgdGhpbmdzIHVwIGxpa2UgdGhpcyB0aGUgZmlyc3QgdGltZSAoY291Z2gKKyAgIGNvdWdoKSBiZWNhdXNlIGl0J3MgcmVhbGx5IGhhbmR5IHdoZW4gSSBib290IGluc2lnaHQgaW50byBET1MuICBUaGVyZSwgaXQKKyAgIHJ1bnMgdGhlIE5vdmVsbCBPREkgcHJvdG9jb2wgc3RhY2ssIHdoaWNoIG9ubHkgd29ya3Mgd2l0aCBSRkMxMjAxIEFSQ25ldC4gCisgICBJbiB0aGlzIG1vZGUgaXQgd291bGQgYmUgaW1wb3NzaWJsZSBmb3IgaW5zaWdodCB0byBjb21tdW5pY2F0ZSBkaXJlY3RseQorICAgd2l0aCBwYXRpZW5jZSwgc2luY2UgdGhlIE5vdmVsbCBzdGFjayBpcyBpbmNvbXBhdGlibGUgd2l0aCBNaWNyb3NvZnQncworICAgRXRoZXJuZXQtRW5jYXAuICBXaXRob3V0IGNoYW5naW5nIGFueSBzZXR0aW5ncyBvbiBmcmVlZG9tIG9yIHBhdGllbmNlLCBJCisgICBzaW1wbHkgc2V0IGZyZWVkb20gYXMgdGhlIGRlZmF1bHQgZ2F0ZXdheSBmb3IgaW5zaWdodCAobm93IGluIERPUywKKyAgIHJlbWVtYmVyKSBhbmQgYWxsIHRoZSBmb3J3YXJkaW5nIGhhcHBlbnMgImF1dG9tYWdpY2FsbHkiIGJldHdlZW4gdGhlIHR3bworICAgaG9zdHMgdGhhdCB3b3VsZCBub3JtYWxseSBub3QgYmUgYWJsZSB0byBjb21tdW5pY2F0ZSBhdCBhbGwuCisgICAKKyAgIEZvciB0aG9zZSB3aG8gbGlrZSBkaWFncmFtcywgSSBoYXZlIGNyZWF0ZWQgdHdvICJ2aXJ0dWFsIHN1Ym5ldHMiIG9uIHRoZQorICAgc2FtZSBwaHlzaWNhbCBBUkNuZXQgd2lyZS4gIFlvdSBjYW4gcGljdHVyZSBpdCBsaWtlIHRoaXM6CisgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICBbUkZDMTIwMSBORVRXT1JLXSAgICAgICAgICAgICAgICAgICBbRVRIRVItRU5DQVAgTkVUV09SS10KKyAgICAgIChyZWdpc3RlcmVkIEludGVybmV0IHN1Ym5ldCkgICAgICAgICAgIChSRkMxNTk3IHByaXZhdGUgc3VibmV0KQorICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKElQIE1hc3F1ZXJhZGUpCisgICAgICAgICAgLy0tLS0tLS0tLS0tLS0tLVwgICAgICAgICAqICAgICAgICAgICAgLy0tLS0tLS0tLS0tLS0tLVwKKyAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICogICAgICAgICAgICB8ICAgICAgICAgICAgICAgfAorICAgICAgICAgIHwgICAgICAgICAgICAgICArLUZyZWVkb20tKi1HYXRla2VlcGVyLSsgICAgICAgICAgICAgICB8CisgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgfCAgICAqICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwKKyAgICAgICAgICBcLS0tLS0tLSstLS0tLS0tLyAgICB8ICAgICogICAgICAgICAgICBcLS0tLS0tLSstLS0tLS0tLworICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgSW5zaWdodCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgUGF0aWVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChJbnRlcm5ldCkKKworCisKK0l0IHdvcmtzOiB3aGF0IG5vdz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworU2VuZCBtYWlsIGRlc2NyaWJpbmcgeW91ciBzZXR1cCwgcHJlZmVyYWJseSBpbmNsdWRpbmcgZHJpdmVyIHZlcnNpb24sIGtlcm5lbAordmVyc2lvbiwgQVJDbmV0IGNhcmQgbW9kZWwsIENQVSB0eXBlLCBudW1iZXIgb2Ygc3lzdGVtcyBvbiB5b3VyIG5ldHdvcmssIGFuZAorbGlzdCBvZiBzb2Z0d2FyZSBpbiB1c2UgdG8gbWUgYXQgdGhlIGZvbGxvd2luZyBhZGRyZXNzOgorCWFwZW53YXJyQHdvcmxkdmlzaW9ucy5jYQorCitJIGRvIHNlbmQgKHNvbWV0aW1lcyBhdXRvbWF0ZWQpIHJlcGxpZXMgdG8gYWxsIG1lc3NhZ2VzIEkgcmVjZWl2ZS4gIE15IGVtYWlsCitjYW4gYmUgd2VpcmQgKGFuZCBhbHNvIHVzdWFsbHkgZ2V0cyBmb3J3YXJkZWQgYWxsIG92ZXIgdGhlIHBsYWNlIGFsb25nIHRoZQord2F5IHRvIG1lKSwgc28gaWYgeW91IGRvbid0IGdldCBhIHJlcGx5IHdpdGhpbiBhIHJlYXNvbmFibGUgdGltZSwgcGxlYXNlCityZXNlbmQuCisKKworSXQgZG9lc24ndCB3b3JrOiB3aGF0IG5vdz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RvIHRoZSBzYW1lIGFzIGFib3ZlLCBidXQgYWxzbyBpbmNsdWRlIHRoZSBvdXRwdXQgb2YgdGhlIGlmY29uZmlnIGFuZCByb3V0ZQorY29tbWFuZHMsIGFzIHdlbGwgYXMgYW55IHBlcnRpbmVudCBsb2cgZW50cmllcyAoaWUuIGFueXRoaW5nIHRoYXQgc3RhcnRzCit3aXRoICJhcmNuZXQ6IiBhbmQgaGFzIHNob3duIHVwIHNpbmNlIHRoZSBsYXN0IHJlYm9vdCkgaW4geW91ciBtYWlsLgorCitJZiB5b3Ugd2FudCB0byB0cnkgZml4aW5nIGl0IHlvdXJzZWxmIChJIHN0cm9uZ2x5IHJlY29tbWVuZCB0aGF0IHlvdSBtYWlsIG1lCithYm91dCB0aGUgcHJvYmxlbSBmaXJzdCwgc2luY2UgaXQgbWlnaHQgYWxyZWFkeSBoYXZlIGJlZW4gc29sdmVkKSB5b3UgbWF5Cit3YW50IHRvIHRyeSBzb21lIG9mIHRoZSBkZWJ1ZyBsZXZlbHMgYXZhaWxhYmxlLiAgRm9yIGhlYXZ5IHRlc3Rpbmcgb24KK0RfRFVSSU5HIG9yIG1vcmUsIGl0IHdvdWxkIGJlIGEgUkVBTExZIGdvb2QgaWRlYSB0byBraWxsIHlvdXIga2xvZ2QgZGFlbW9uCitmaXJzdCEgIERfRFVSSU5HIGRpc3BsYXlzIDQtNSBsaW5lcyBmb3IgZWFjaCBwYWNrZXQgc2VudCBvciByZWNlaXZlZC4gIERfVFgsCitEX1JYLCBhbmQgRF9TS0IgYWN0dWFsbHkgRElTUExBWSBlYWNoIHBhY2tldCBhcyBpdCBpcyBzZW50IG9yIHJlY2VpdmVkLAord2hpY2ggaXMgb2J2aW91c2x5IHF1aXRlIGJpZy4KKworU3RhcnRpbmcgd2l0aCB2Mi40MCBBTFBIQSwgdGhlIGF1dG9wcm9iZSByb3V0aW5lcyBoYXZlIGNoYW5nZWQKK3NpZ25pZmljYW50bHkuICBJbiBwYXJ0aWN1bGFyLCB0aGV5IHdvbid0IHRlbGwgeW91IHdoeSB0aGUgY2FyZCB3YXMgbm90Citmb3VuZCB1bmxlc3MgeW91IHR1cm4gb24gdGhlIERfSU5JVF9SRUFTT05TIGRlYnVnZ2luZyBmbGFnLgorCitPbmNlIHRoZSBkcml2ZXIgaXMgcnVubmluZywgeW91IGNhbiBydW4gdGhlIGFyY2R1bXAgc2hlbGwgc2NyaXB0IChhdmFpbGFibGUKK2Zyb20gbWUgb3IgaW4gdGhlIGZ1bGwgQVJDbmV0IHBhY2thZ2UsIGlmIHlvdSBoYXZlIGl0KSBhcyByb290IHRvIGxpc3QgdGhlCitjb250ZW50cyBvZiB0aGUgYXJjbmV0IGJ1ZmZlcnMgYXQgYW55IHRpbWUuICBUbyBtYWtlIGFueSBzZW5zZSBhdCBhbGwgb3V0IG9mCit0aGlzLCB5b3Ugc2hvdWxkIGdyYWIgdGhlIHBlcnRpbmVudCBSRkNzLiAoc29tZSBhcmUgbGlzdGVkIG5lYXIgdGhlIHRvcCBvZgorYXJjbmV0LmMpLiAgYXJjZHVtcCBhc3N1bWVzIHlvdXIgY2FyZCBpcyBhdCAweEQwMDAwLiAgSWYgaXQgaXNuJ3QsIGVkaXQgdGhlCitzY3JpcHQuCisKK0J1ZmZlcnMgMCBhbmQgMSBhcmUgdXNlZCBmb3IgcmVjZWl2aW5nLCBhbmQgQnVmZmVycyAyIGFuZCAzIGFyZSBmb3Igc2VuZGluZy4gCitQaW5nLXBvbmcgYnVmZmVycyBhcmUgaW1wbGVtZW50ZWQgYm90aCB3YXlzLgorCitJZiB5b3VyIGRlYnVnIGxldmVsIGluY2x1ZGVzIERfRFVSSU5HIGFuZCB5b3UgZGlkIE5PVCBkZWZpbmUgU0xPV19YTUlUX0NPUFksCit0aGUgYnVmZmVycyBhcmUgY2xlYXJlZCB0byBhIGNvbnN0YW50IHZhbHVlIG9mIDB4NDIgZXZlcnkgdGltZSB0aGUgY2FyZCBpcworcmVzZXQgKHdoaWNoIHNob3VsZCBvbmx5IGhhcHBlbiB3aGVuIHlvdSBkbyBhbiBpZmNvbmZpZyB1cCwgb3Igd2hlbiBMaW51eAorZGVjaWRlcyB0aGF0IHRoZSBkcml2ZXIgaXMgYnJva2VuKS4gIER1cmluZyBhIHRyYW5zbWl0LCB1bnVzZWQgcGFydHMgb2YgdGhlCitidWZmZXIgd2lsbCBiZSBjbGVhcmVkIHRvIDB4NDIgYXMgd2VsbC4gIFRoaXMgaXMgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZmlndXJlCitvdXQgd2hpY2ggYnl0ZXMgYXJlIGJlaW5nIHVzZWQgYnkgYSBwYWNrZXQuCisKK1lvdSBjYW4gY2hhbmdlIHRoZSBkZWJ1ZyBsZXZlbCB3aXRob3V0IHJlY29tcGlsaW5nIHRoZSBrZXJuZWwgYnkgdHlwaW5nOgorCWlmY29uZmlnIGFyYzAgZG93biBtZXRyaWMgMXh4eAorCS9ldGMvcmMuZC9yYy5pbmV0MQord2hlcmUgInh4eCIgaXMgdGhlIGRlYnVnIGxldmVsIHlvdSB3YW50LiAgRm9yIGV4YW1wbGUsICJtZXRyaWMgMTAxNSIgd291bGQgcHV0Cit5b3UgYXQgZGVidWcgbGV2ZWwgMTUuICBEZWJ1ZyBsZXZlbCA3IGlzIGN1cnJlbnRseSB0aGUgZGVmYXVsdC4KKworTm90ZSB0aGF0IHRoZSBkZWJ1ZyBsZXZlbCBpcyAoc3RhcnRpbmcgd2l0aCB2MS45MCBBTFBIQSkgYSBiaW5hcnkKK2NvbWJpbmF0aW9uIG9mIGRpZmZlcmVudCBkZWJ1ZyBmbGFnczsgc28gZGVidWcgbGV2ZWwgNyBpcyByZWFsbHkgMSsyKzQgb3IKK0RfTk9STUFMK0RfRVhUUkErRF9JTklULiAgVG8gaW5jbHVkZSBEX0RVUklORywgeW91IHdvdWxkIGFkZCAxNiB0byB0aGlzLAorcmVzdWx0aW5nIGluIGRlYnVnIGxldmVsIDIzLgorCitJZiB5b3UgZG9uJ3QgdW5kZXJzdGFuZCB0aGF0LCB5b3UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byBrbm93IGFueXdheS4gCitFLW1haWwgbWUgYWJvdXQgeW91ciBwcm9ibGVtLgorCisKK0kgd2FudCB0byBzZW5kIG1vbmV5OiB3aGF0IG5vdz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworR28gdGFrZSBhIG5hcCBvciBzb21ldGhpbmcuICBZb3UnbGwgZmVlbCBiZXR0ZXIgaW4gdGhlIG1vcm5pbmcuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYXRtLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9hdG0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyOTIxY2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYXRtLnR4dApAQCAtMCwwICsxLDggQEAKK0luIG9yZGVyIHRvIHVzZSBhbnl0aGluZyBidXQgdGhlIG1vc3QgcHJpbWl0aXZlIGZ1bmN0aW9ucyBvZiBBVE0sCitzZXZlcmFsIHVzZXItbW9kZSBwcm9ncmFtcyBhcmUgcmVxdWlyZWQgdG8gYXNzaXN0IHRoZSBrZXJuZWwuIFRoZXNlCitwcm9ncmFtcyBhbmQgcmVsYXRlZCBtYXRlcmlhbCBjYW4gYmUgZm91bmQgdmlhIHRoZSBBVE0gb24gTGludXggV2ViCitwYWdlIGF0IGh0dHA6Ly9saW51eC1hdG0uc291cmNlZm9yZ2UubmV0LworCitJZiB5b3UgZW5jb3VudGVyIHByb2JsZW1zIHdpdGggQVRNLCBwbGVhc2UgcmVwb3J0IHRoZW0gb24gdGhlIEFUTQorb24gTGludXggbWFpbGluZyBsaXN0LiBTdWJzY3JpcHRpb24gaW5mb3JtYXRpb24sIGFyY2hpdmVzLCBldGMuLAorY2FuIGJlIGZvdW5kIG9uIGh0dHA6Ly9saW51eC1hdG0uc291cmNlZm9yZ2UubmV0LwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2F4MjUudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2F4MjUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNTdkYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYXgyNS50eHQKQEAgLTAsMCArMSwxMCBAQAorVG8gdXNlIHRoZSBhbWF0ZXVyIHJhZGlvIHByb3RvY29scyB3aXRoaW4gTGludXggeW91IHdpbGwgbmVlZCB0byBnZXQgYQorc3VpdGFibGUgY29weSBvZiB0aGUgQVguMjUgVXRpbGl0aWVzLiBNb3JlIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0CitBWC4yNSwgTkVUL1JPTSBhbmQgUk9TRSwgYXNzb2NpYXRlZCBwcm9ncmFtcyBhbmQgYW5kIHV0aWxpdGllcyBjYW4gYmUKK2ZvdW5kIG9uIGh0dHA6Ly93d3cubGludXgtYXgyNS5vcmcuCisKK1RoZXJlIGlzIGFuIGFjdGl2ZSBtYWlsaW5nIGxpc3QgZm9yIGRpc2N1c3NpbmcgTGludXggYW1hdGV1ciByYWRpbyBtYXR0ZXJzCitjYWxsZWQgbGludXgtaGFtc0B2Z2VyLmtlcm5lbC5vcmcuIFRvIHN1YnNjcmliZSB0byBpdCwgc2VuZCBhIG1lc3NhZ2UgdG8KK21ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcgd2l0aCB0aGUgd29yZHMgInN1YnNjcmliZSBsaW51eC1oYW1zIiBpbiB0aGUgYm9keQorb2YgdGhlIG1lc3NhZ2UsIHRoZSBzdWJqZWN0IGZpZWxkIGlzIGlnbm9yZWQuICBZb3UgZG9uJ3QgbmVlZCB0byBiZQorc3Vic2NyaWJlZCB0byBwb3N0IGJ1dCBvZiBjb3Vyc2UgdGhhdCBtZWFucyB5b3UgbWlnaHQgbWlzcyBhbiBhbnN3ZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYmF0bWFuLWFkdi50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYmF0bWFuLWFkdi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThlNDkwNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9iYXRtYW4tYWR2LnR4dApAQCAtMCwwICsxLDIwMiBAQAorQkFUTUFOLUFEVgorLS0tLS0tLS0tLQorCitCYXRtYW4gIGFkdmFuY2VkICBpcyAgYSBuZXcgYXBwcm9hY2ggdG8gd2lyZWxlc3MgbmV0d29ya2luZyB3aGljaAorZG9lcyBubyBsb25nZXIgb3BlcmF0ZSBvbiB0aGUgSVAgYmFzaXMuIFVubGlrZSB0aGUgYmF0bWFuIGRhZW1vbiwKK3doaWNoICBleGNoYW5nZXMgIGluZm9ybWF0aW9uICB1c2luZyBVRFAgcGFja2V0cyBhbmQgc2V0cyByb3V0aW5nCit0YWJsZXMsIGJhdG1hbi1hZHZhbmNlZCBvcGVyYXRlcyBvbiBJU08vT1NJIExheWVyIDIgb25seSBhbmQgdXNlcworYW5kICByb3V0ZXMgIChvciAgYmV0dGVyOiBicmlkZ2VzKSBFdGhlcm5ldCBGcmFtZXMuIEl0IGVtdWxhdGVzIGEKK3ZpcnR1YWwgbmV0d29yayBzd2l0Y2ggb2YgYWxsIG5vZGVzIHBhcnRpY2lwYXRpbmcuICBUaGVyZWZvcmUgYWxsCitub2RlcyAgYXBwZWFyICB0byBiZSBsaW5rIGxvY2FsLCB0aHVzIGFsbCBoaWdoZXIgb3BlcmF0aW5nIHByb3RvLQorY29scyB3b24ndCBiZSBhZmZlY3RlZCBieSBhbnkgY2hhbmdlcyB3aXRoaW4gdGhlIG5ldHdvcmsuIFlvdSBjYW4KK3J1biBhbG1vc3QgYW55IHByb3RvY29sIGFib3ZlIGJhdG1hbiBhZHZhbmNlZCwgcHJvbWluZW50IGV4YW1wbGVzCithcmU6IElQdjQsIElQdjYsIERIQ1AsIElQWC4KKworQmF0bWFuIGFkdmFuY2VkIHdhcyBpbXBsZW1lbnRlZCBhcyBhIExpbnV4IGtlcm5lbCBkcml2ZXIgIHRvICByZS0KK2R1Y2UgdGhlIG92ZXJoZWFkIHRvIGEgbWluaW11bS4gSXQgZG9lcyBub3QgZGVwZW5kIG9uIGFueSAob3RoZXIpCituZXR3b3JrIGRyaXZlciwgYW5kIGNhbiBiZSB1c2VkIG9uIHdpZmkgYXMgd2VsbCBhcyBldGhlcm5ldCAgbGFuLAordnBuLCAgZXRjIC4uLiAoYW55dGhpbmcgd2l0aCBldGhlcm5ldC1zdHlsZSBsYXllciAyKS4KKworCitDT05GSUdVUkFUSU9OCistLS0tLS0tLS0tLS0tCisKK0xvYWQgdGhlIGJhdG1hbi1hZHYgbW9kdWxlIGludG8geW91ciBrZXJuZWw6CisKKyMgaW5zbW9kIGJhdG1hbi1hZHYua28KKworVGhlICBtb2R1bGUgIGlzIG5vdyB3YWl0aW5nIGZvciBhY3RpdmF0aW9uLiBZb3UgbXVzdCBhZGQgc29tZSBpbi0KK3RlcmZhY2VzIG9uIHdoaWNoIGJhdG1hbiBjYW4gb3BlcmF0ZS4gQWZ0ZXIgIGxvYWRpbmcgIHRoZSAgbW9kdWxlCitiYXRtYW4gIGFkdmFuY2VkICB3aWxsIHNjYW4geW91ciBzeXN0ZW1zIGludGVyZmFjZXMgdG8gc2VhcmNoIGZvcgorY29tcGF0aWJsZSBpbnRlcmZhY2VzLiBPbmNlIGZvdW5kLCBpdCB3aWxsIGNyZWF0ZSAgc3ViZm9sZGVycyAgaW4KK3RoZSAvc3lzIGRpcmVjdG9yaWVzIG9mIGVhY2ggc3VwcG9ydGVkIGludGVyZmFjZSwgZS5nLgorCisjIGxzIC9zeXMvY2xhc3MvbmV0L2V0aDAvYmF0bWFuX2Fkdi8KKyMgaWZhY2Vfc3RhdHVzICBtZXNoX2lmYWNlCisKK0lmIGFuIGludGVyZmFjZSBkb2VzIG5vdCBoYXZlIHRoZSAiYmF0bWFuX2FkdiIgc3ViZm9sZGVyIGl0IHByb2ItCithYmx5IGlzIG5vdCBzdXBwb3J0ZWQuIE5vdCBzdXBwb3J0ZWQgIGludGVyZmFjZXMgIGFyZTogIGxvb3BiYWNrLAorbm9uLWV0aGVybmV0IGFuZCBiYXRtYW4ncyBvd24gaW50ZXJmYWNlcy4KKworTm90ZTogIEFmdGVyIHRoZSBtb2R1bGUgd2FzIGxvYWRlZCBpdCB3aWxsIGNvbnRpbnVvdXNseSB3YXRjaCBmb3IKK25ldyBpbnRlcmZhY2VzIHRvIHZlcmlmeSB0aGUgY29tcGF0aWJpbGl0eS4gVGhlcmUgaXMgbm8gIG5lZWQgIHRvCityZWxvYWQgdGhlIG1vZHVsZSBpZiB5b3UgcGx1ZyB5b3VyIFVTQiB3aWZpIGFkYXB0ZXIgaW50byB5b3VyIG1hLQorY2hpbmUgYWZ0ZXIgYmF0bWFuIGFkdmFuY2VkIHdhcyBpbml0aWFsbHkgbG9hZGVkLgorCitUbyBhY3RpdmF0ZSBhICBnaXZlbiAgaW50ZXJmYWNlICBzaW1wbHkgIHdyaXRlICAiYmF0MCIgIGludG8gIGl0cworIm1lc2hfaWZhY2UiIGZpbGUgaW5zaWRlIHRoZSBiYXRtYW5fYWR2IHN1YmZvbGRlcjoKKworIyBlY2hvIGJhdDAgPiAvc3lzL2NsYXNzL25ldC9ldGgwL2JhdG1hbl9hZHYvbWVzaF9pZmFjZQorCitSZXBlYXQgIHRoaXMgc3RlcCBmb3IgYWxsIGludGVyZmFjZXMgeW91IHdpc2ggdG8gYWRkLiAgTm93IGJhdG1hbgorc3RhcnRzIHVzaW5nL2Jyb2FkY2FzdGluZyBvbiB0aGlzL3RoZXNlIGludGVyZmFjZShzKS4KKworQnkgcmVhZGluZyB0aGUgImlmYWNlX3N0YXR1cyIgZmlsZSB5b3UgY2FuIGNoZWNrIGl0cyBzdGF0dXM6CisKKyMgY2F0IC9zeXMvY2xhc3MvbmV0L2V0aDAvYmF0bWFuX2Fkdi9pZmFjZV9zdGF0dXMKKyMgYWN0aXZlCisKK1RvIGRlYWN0aXZhdGUgYW4gaW50ZXJmYWNlIHlvdSBoYXZlICB0byAgd3JpdGUgICJub25lIiAgaW50byAgaXRzCisibWVzaF9pZmFjZSIgZmlsZToKKworIyBlY2hvIG5vbmUgPiAvc3lzL2NsYXNzL25ldC9ldGgwL2JhdG1hbl9hZHYvbWVzaF9pZmFjZQorCisKK0FsbCAgbWVzaCAgd2lkZSAgc2V0dGluZ3MgIGNhbiBiZSBmb3VuZCBpbiBiYXRtYW4ncyBvd24gaW50ZXJmYWNlCitmb2xkZXI6CisKKyMgbHMgL3N5cy9jbGFzcy9uZXQvYmF0MC9tZXNoLworI2FnZ3JlZ2F0ZWRfb2dtcyAgICAgICAgZGlzdHJpYnV0ZWRfYXJwX3RhYmxlICBnd19zZWxfY2xhc3MgICAgb3JpZ19pbnRlcnZhbAorI2FwX2lzb2xhdGlvbiAgICAgICAgICAgZnJhZ21lbnRhdGlvbiAgICAgICAgICBob3BfcGVuYWx0eSAgICAgcm91dGluZ19hbGdvCisjYm9uZGluZyAgICAgICAgICAgICAgICBnd19iYW5kd2lkdGggICAgICAgICAgIGlzb2xhdGlvbl9tYXJrICB2bGFuMAorI2JyaWRnZV9sb29wX2F2b2lkYW5jZSAgZ3dfbW9kZSAgICAgICAgICAgICAgICBsb2dfbGV2ZWwKKworVGhlcmUgaXMgYSBzcGVjaWFsIGZvbGRlciBmb3IgZGVidWdnaW5nIGluZm9ybWF0aW9uOgorCisjIGxzIC9zeXMva2VybmVsL2RlYnVnL2JhdG1hbl9hZHYvYmF0MC8KKyMgYmxhX2JhY2tib25lX3RhYmxlICBsb2cgICAgICAgICAgICAgICAgIHRyYW5zdGFibGVfZ2xvYmFsCisjIGJsYV9jbGFpbV90YWJsZSAgICAgb3JpZ2luYXRvcnMgICAgICAgICB0cmFuc3RhYmxlX2xvY2FsCisjIGdhdGV3YXlzICAgICAgICAgICAgc29ja2V0CisKK1NvbWUgb2YgdGhlIGZpbGVzIGNvbnRhaW4gYWxsIHNvcnQgb2Ygc3RhdHVzIGluZm9ybWF0aW9uICByZWdhcmQtCitpbmcgIHRoZSAgbWVzaCAgbmV0d29yay4gIEZvciAgZXhhbXBsZSwgeW91IGNhbiB2aWV3IHRoZSB0YWJsZSBvZgorb3JpZ2luYXRvcnMgKG1lc2ggcGFydGljaXBhbnRzKSB3aXRoOgorCisjIGNhdCAvc3lzL2tlcm5lbC9kZWJ1Zy9iYXRtYW5fYWR2L2JhdDAvb3JpZ2luYXRvcnMKKworT3RoZXIgZmlsZXMgYWxsb3cgdG8gY2hhbmdlIGJhdG1hbidzIGJlaGF2aW91ciB0byBiZXR0ZXIgZml0IHlvdXIKK3JlcXVpcmVtZW50cy4gIEZvciBpbnN0YW5jZSwgeW91IGNhbiBjaGVjayB0aGUgY3VycmVudCBvcmlnaW5hdG9yCitpbnRlcnZhbCAodmFsdWUgaW4gbWlsbGlzZWNvbmRzIHdoaWNoIGRldGVybWluZXMgaG93IG9mdGVuIGJhdG1hbgorc2VuZHMgaXRzIGJyb2FkY2FzdCBwYWNrZXRzKToKKworIyBjYXQgL3N5cy9jbGFzcy9uZXQvYmF0MC9tZXNoL29yaWdfaW50ZXJ2YWwKKyMgMTAwMAorCithbmQgYWxzbyBjaGFuZ2UgaXRzIHZhbHVlOgorCisjIGVjaG8gMzAwMCA+IC9zeXMvY2xhc3MvbmV0L2JhdDAvbWVzaC9vcmlnX2ludGVydmFsCisKK0luIHZlcnkgbW9iaWxlIHNjZW5hcmlvcywgeW91IG1pZ2h0IHdhbnQgdG8gYWRqdXN0IHRoZSBvcmlnaW5hdG9yCitpbnRlcnZhbCB0byBhIGxvd2VyIHZhbHVlLiBUaGlzIHdpbGwgbWFrZSB0aGUgbWVzaCAgbW9yZSAgcmVzcG9uLQorc2l2ZSB0byB0b3BvbG9neSBjaGFuZ2VzLCBidXQgd2lsbCBhbHNvIGluY3JlYXNlIHRoZSBvdmVyaGVhZC4KKworCitVU0FHRQorLS0tLS0KKworVG8gIG1ha2UgdXNlIG9mIHlvdXIgbmV3bHkgY3JlYXRlZCBtZXNoLCBiYXRtYW4gYWR2YW5jZWQgcHJvdmlkZXMKK2EgbmV3IGludGVyZmFjZSAiYmF0MCIgd2hpY2ggeW91IHNob3VsZCB1c2UgZnJvbSB0aGlzICBwb2ludCAgb24uCitBbGwgIGludGVyZmFjZXMgIGFkZGVkICB0byAgYmF0bWFuICBhZHZhbmNlZCBhcmUgbm90IHJlbGV2YW50IGFueQorbG9uZ2VyIGJlY2F1c2UgYmF0bWFuIGhhbmRsZXMgdGhlbSBmb3IgeW91LiBCYXNpY2FsbHksIG9uZSAiaGFuZHMKK292ZXIiIHRoZSBkYXRhIGJ5IHVzaW5nIHRoZSBiYXRtYW4gaW50ZXJmYWNlIGFuZCBiYXRtYW4gd2lsbCBtYWtlCitzdXJlIGl0IHJlYWNoZXMgaXRzIGRlc3RpbmF0aW9uLgorCitUaGUgImJhdDAiIGludGVyZmFjZSBjYW4gYmUgdXNlZCBsaWtlIGFueSAgb3RoZXIgIHJlZ3VsYXIgIGludGVyLQorZmFjZS4gIEl0IG5lZWRzIGFuIElQIGFkZHJlc3Mgd2hpY2ggY2FuIGJlIGVpdGhlciBzdGF0aWNhbGx5IGNvbi0KK2ZpZ3VyZWQgb3IgZHluYW1pY2FsbHkgKGJ5IHVzaW5nIERIQ1Agb3Igc2ltaWxhciBzZXJ2aWNlcyk6CisKKyMgTm9kZUE6IGlmY29uZmlnIGJhdDAgMTkyLjE2OC4wLjEKKyMgTm9kZUI6IGlmY29uZmlnIGJhdDAgMTkyLjE2OC4wLjIKKyMgTm9kZUI6IHBpbmcgMTkyLjE2OC4wLjEKKworTm90ZTogIEluICBvcmRlciB0byBhdm9pZCBwcm9ibGVtcyByZW1vdmUgYWxsIElQIGFkZHJlc3NlcyBwcmV2aS0KK291c2x5IGFzc2lnbmVkIHRvIGludGVyZmFjZXMgbm93IHVzZWQgYnkgYmF0bWFuIGFkdmFuY2VkLCBlLmcuCisKKyMgaWZjb25maWcgZXRoMCAwLjAuMC4wCisKKworTE9HR0lORy9ERUJVR0dJTkcKKy0tLS0tLS0tLS0tLS0tLS0tCisKK0FsbCBlcnJvciBtZXNzYWdlcywgd2FybmluZ3MgYW5kIGluZm9ybWF0aW9uIG1lc3NhZ2VzIGFyZSBzZW50IHRvCit0aGUga2VybmVsIGxvZy4gRGVwZW5kaW5nIG9uIHlvdXIgb3BlcmF0aW5nICBzeXN0ZW0gIGRpc3RyaWJ1dGlvbgordGhpcyAgY2FuICBiZSByZWFkIGluIG9uZSBvZiBhIG51bWJlciBvZiB3YXlzLiBUcnkgdXNpbmcgdGhlIGNvbS0KK21hbmRzOiBkbWVzZywgbG9ncmVhZCwgb3IgbG9va2luZyBpbiB0aGUgZmlsZXMgIC92YXIvbG9nL2tlcm4ubG9nCitvciAgL3Zhci9sb2cvc3lzbG9nLiAgQWxsICBiYXRtYW4tYWR2ICBtZXNzYWdlcyBhcmUgcHJlZml4ZWQgd2l0aAorImJhdG1hbi1hZHY6IiBTbyB0byBzZWUganVzdCB0aGVzZSBtZXNzYWdlcyB0cnkKKworIyBkbWVzZyB8IGdyZXAgYmF0bWFuLWFkdgorCitXaGVuIGludmVzdGlnYXRpbmcgcHJvYmxlbXMgd2l0aCB5b3VyIG1lc2ggbmV0d29yayAgaXQgIGlzICBzb21lLQordGltZXMgIG5lY2Vzc2FyeSAgdG8gc2VlIG1vcmUgZGV0YWlsIGRlYnVnIG1lc3NhZ2VzLiBUaGlzIG11c3QgYmUKK2VuYWJsZWQgd2hlbiBjb21waWxpbmcgdGhlIGJhdG1hbi1hZHYgbW9kdWxlLiBXaGVuIGJ1aWxkaW5nICBiYXQtCittYW4tYWR2ICBhcyAgcGFydCBvZiBrZXJuZWwsIHVzZSAibWFrZSBtZW51Y29uZmlnIiBhbmQgZW5hYmxlIHRoZQorb3B0aW9uICJCLkEuVC5NLkEuTi4gZGVidWdnaW5nIi4KKworVGhvc2UgYWRkaXRpb25hbCAgZGVidWcgbWVzc2FnZXMgY2FuIGJlIGFjY2Vzc2VkICB1c2luZyBhIHNwZWNpYWwKK2ZpbGUgaW4gZGVidWdmcworCisjIGNhdCAvc3lzL2tlcm5lbC9kZWJ1Zy9iYXRtYW5fYWR2L2JhdDAvbG9nCisKK1RoZSBhZGRpdGlvbmFsIGRlYnVnIG91dHB1dCBpcyBieSBkZWZhdWx0IGRpc2FibGVkLiBJdCBjYW4gYmUgZW4tCithYmxlZCAgZHVyaW5nIHJ1biB0aW1lLiBGb2xsb3dpbmcgbG9nX2xldmVscyBhcmUgZGVmaW5lZDoKKworMCAtIEFsbCAgZGVidWcgIG91dHB1dCAgZGlzYWJsZWQKKzEgLSBFbmFibGUgbWVzc2FnZXMgcmVsYXRlZCB0byByb3V0aW5nIC8gZmxvb2RpbmcgLyBicm9hZGNhc3RpbmcKKzIgLSBFbmFibGUgbWVzc2FnZXMgcmVsYXRlZCB0byByb3V0ZSBhZGRlZCAvIGNoYW5nZWQgLyBkZWxldGVkCis0IC0gRW5hYmxlIG1lc3NhZ2VzIHJlbGF0ZWQgdG8gdHJhbnNsYXRpb24gdGFibGUgb3BlcmF0aW9ucworOCAtIEVuYWJsZSBtZXNzYWdlcyByZWxhdGVkIHRvIGJyaWRnZSBsb29wIGF2b2lkYW5jZQorMTYgLSBFbmFibGUgbWVzc2FnZWQgcmVsYXRlZCB0byBEQVQsIEFSUCBzbm9vcGluZyBhbmQgcGFyc2luZworMzEgLSBFbmFibGUgYWxsIG1lc3NhZ2VzCisKK1RoZSBkZWJ1ZyBvdXRwdXQgY2FuIGJlIGNoYW5nZWQgYXQgcnVudGltZSAgdXNpbmcgIHRoZSAgZmlsZQorL3N5cy9jbGFzcy9uZXQvYmF0MC9tZXNoL2xvZ19sZXZlbC4gZS5nLgorCisjIGVjaG8gNiA+IC9zeXMvY2xhc3MvbmV0L2JhdDAvbWVzaC9sb2dfbGV2ZWwKKword2lsbCBlbmFibGUgZGVidWcgbWVzc2FnZXMgZm9yIHdoZW4gcm91dGVzIGNoYW5nZS4KKworQ291bnRlcnMgZm9yIGRpZmZlcmVudCB0eXBlcyBvZiBwYWNrZXRzIGVudGVyaW5nIGFuZCBsZWF2aW5nIHRoZQorYmF0bWFuLWFkdiBtb2R1bGUgYXJlIGF2YWlsYWJsZSB0aHJvdWdoIGV0aHRvb2w6CisKKyMgZXRodG9vbCAtLXN0YXRpc3RpY3MgYmF0MAorCisKK0JBVENUTAorLS0tLS0tCisKK0FzIGJhdG1hbiBhZHZhbmNlZCBvcGVyYXRlcyBvbiBsYXllciAyIGFsbCBob3N0cyBwYXJ0aWNpcGF0aW5nIGluCit0aGUgIHZpcnR1YWwgc3dpdGNoIGFyZSBjb21wbGV0ZWx5IHRyYW5zcGFyZW50IGZvciBhbGwgIHByb3RvY29scworYWJvdmUgbGF5ZXIgMi4gVGhlcmVmb3JlIHRoZSBjb21tb24gZGlhZ25vc2lzIHRvb2xzIGRvICBub3QgIHdvcmsKK2FzICBleHBlY3RlZC4gIFRvICBvdmVyY29tZSB0aGVzZSBwcm9ibGVtcyBiYXRjdGwgd2FzIGNyZWF0ZWQuIEF0Cit0aGUgIG1vbWVudCB0aGUgIGJhdGN0bCBjb250YWlucyBwaW5nLCAgdHJhY2Vyb3V0ZSwgIHRjcGR1bXAgIGFuZAoraW50ZXJmYWNlcyB0byB0aGUga2VybmVsIG1vZHVsZSBzZXR0aW5ncy4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBzZWUgdGhlIG1hbnBhZ2UgKG1hbiBiYXRjdGwpLgorCitiYXRjdGwgaXMgYXZhaWxhYmxlIG9uIGh0dHA6Ly93d3cub3Blbi1tZXNoLm9yZy8KKworCitDT05UQUNUCistLS0tLS0tCisKK1BsZWFzZSBzZW5kIHVzIGNvbW1lbnRzLCBleHBlcmllbmNlcywgcXVlc3Rpb25zLCBhbnl0aGluZyA6KQorCitJUkM6ICAgICAgICAgICAgI2JhdG1hbiAgIG9uICAgaXJjLmZyZWVub2RlLm9yZworTWFpbGluZy1saXN0OiAgIGIuYS50Lm0uYS5uQG9wZW4tbWVzaC5vcmcgKG9wdGlvbmFsICBzdWJzY3JpcHRpb24KKyAgICAgICAgICBhdCBodHRwczovL2xpc3RzLm9wZW4tbWVzaC5vcmcvbW0vbGlzdGluZm8vYi5hLnQubS5hLm4pCisKK1lvdSBjYW4gYWxzbyBjb250YWN0IHRoZSBBdXRob3JzOgorCitNYXJlayAgTGluZG5lciAgPG1hcmVrbGluZG5lckBuZW9tYWlsYm94LmNoPgorU2ltb24gIFd1bmRlcmxpY2ggIDxzd0BzaW1vbnd1bmRlcmxpY2guZGU+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYmF5Y29tLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9iYXljb20udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4OGYxOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYmF5Y29tLnR4dApAQCAtMCwwICsxLDE1OCBAQAorCQkgICAgTElOVVggRFJJVkVSUyBGT1IgQkFZQ09NIE1PREVNUworCisgICAgICAgVGhvbWFzIE0uIFNhaWxlciwgSEI5Sk5YL0FFNFdBLCA8c2FpbGVyQGlmZS5lZS5ldGh6LmNoPgorCishIU5FVyEhICgwNC85OCkgVGhlIGRyaXZlcnMgZm9yIHRoZSBiYXljb20gbW9kZW1zIGhhdmUgYmVlbiBzcGxpdCBpbnRvCitzZXBhcmF0ZSBkcml2ZXJzIGFzIHRoZXkgZGlkIG5vdCBzaGFyZSBhbnkgY29kZSwgYW5kIHRoZSBkcml2ZXIKK2FuZCBkZXZpY2UgbmFtZXMgaGF2ZSBjaGFuZ2VkLgorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgTGludXggS2VybmVsIERyaXZlcnMgZm9yIHNpbXBsZSBCYXljb20gc3R5bGUKK2FtYXRldXIgcmFkaW8gbW9kZW1zLiAKKworVGhlIGZvbGxvd2luZyBkcml2ZXJzIGFyZSBhdmFpbGFibGU6CisKK2JheWNvbV9zZXJfZmR4OgorICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgU0VSMTIgbW9kZW1zIGVpdGhlciBmdWxsIG9yIGhhbGYgZHVwbGV4LgorICBJdHMgYmF1ZCByYXRlIG1heSBiZSBjaGFuZ2VkIHZpYSB0aGUgYGJhdWQnIG1vZHVsZSBwYXJhbWV0ZXIsCisgIHRoZXJlZm9yZSBpdCBzdXBwb3J0cyBqdXN0IGFib3V0IGV2ZXJ5IGJpdCBiYW5nIG1vZGVtIG9uIGEKKyAgc2VyaWFsIHBvcnQuIEl0cyBkZXZpY2VzIGFyZSBjYWxsZWQgYmNzZjAgdGhyb3VnaCBiY3NmMy4KKyAgVGhpcyBpcyB0aGUgcmVjb21tZW5kZWQgZHJpdmVyIGZvciBTRVIxMiB0eXBlIG1vZGVtcywKKyAgaG93ZXZlciBpZiB5b3UgaGF2ZSBhIGJyb2tlbiBVQVJUIGNsb25lIHRoYXQgZG9lcyBub3QgaGF2ZSB3b3JraW5nCisgIGRlbHRhIHN0YXR1cyBiaXRzLCB5b3UgbWF5IHRyeSBiYXljb21fc2VyX2hkeC4gCisKK2JheWNvbV9zZXJfaGR4OiAKKyAgVGhpcyBpcyBhbiBhbHRlcm5hdGl2ZSBkcml2ZXIgZm9yIFNFUjEyIHR5cGUgbW9kZW1zLgorICBJdCBvbmx5IHN1cHBvcnRzIGhhbGYgZHVwbGV4LCBhbmQgb25seSAxMjAwIGJhdWQuIEl0cyBkZXZpY2VzCisgIGFyZSBjYWxsZWQgYmNzaDAgdGhyb3VnaCBiY3NoMy4gVXNlIHRoaXMgZHJpdmVyIG9ubHkgaWYgYmF5Y29tX3Nlcl9mZHgKKyAgZG9lcyBub3Qgd29yayB3aXRoIHlvdXIgVUFSVC4KKworYmF5Y29tX3BhcjoKKyAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIHBhcjk2IGFuZCBwaWNwYXIgbW9kZW1zLgorICBJdHMgZGV2aWNlcyBhcmUgY2FsbGVkIGJjcDAgdGhyb3VnaCBiY3AzLgorCitiYXljb21fZXBwOgorICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgRVBQIG1vZGVtLgorICBJdHMgZGV2aWNlcyBhcmUgY2FsbGVkIGJjZTAgdGhyb3VnaCBiY2UzLgorICBUaGlzIGRyaXZlciBpcyB3b3JrLWluLXByb2dyZXNzLgorCitUaGUgZm9sbG93aW5nIG1vZGVtcyBhcmUgc3VwcG9ydGVkOgorCitzZXIxMjogIFRoaXMgaXMgYSB2ZXJ5IHNpbXBsZSAxMjAwIGJhdWQgQUZTSyBtb2RlbS4gVGhlIG1vZGVtIGNvbnNpc3RzIG9ubHkKKyAgICAgICAgb2YgYSBtb2R1bGF0b3IvZGVtb2R1bGF0b3IgY2hpcCwgdXN1YWxseSBhIFRJIFRDTTMxMDUuIFRoZSBjb21wdXRlcgorICAgICAgICBpcyByZXNwb25zaWJsZSBmb3IgcmVnZW5lcmF0aW5nIHRoZSByZWNlaXZlciBiaXQgY2xvY2ssIGFzIHdlbGwgYXMKKyAgICAgICAgZm9yIGhhbmRsaW5nIHRoZSBIRExDIHByb3RvY29sLiBUaGUgbW9kZW0gY29ubmVjdHMgdG8gYSBzZXJpYWwgcG9ydCwKKyAgICAgICAgaGVuY2UgdGhlIG5hbWUuIFNpbmNlIHRoZSBzZXJpYWwgcG9ydCBpcyBub3QgdXNlZCBhcyBhbiBhc3luYyBzZXJpYWwKKyAgICAgICAgcG9ydCwgdGhlIGtlcm5lbCBkcml2ZXIgZm9yIHNlcmlhbCBwb3J0cyBjYW5ub3QgYmUgdXNlZCwgYW5kIHRoaXMKKyAgICAgICAgZHJpdmVyIG9ubHkgc3VwcG9ydHMgc3RhbmRhcmQgc2VyaWFsIGhhcmR3YXJlICg4MjUwLCAxNjQ1MCwgMTY1NTApCisKK3Bhcjk2OiAgVGhpcyBpcyBhIG1vZGVtIGZvciA5NjAwIGJhdWQgRlNLIGNvbXBhdGlibGUgdG8gdGhlIEczUlVIIHN0YW5kYXJkLgorICAgICAgICBUaGUgbW9kZW0gZG9lcyBhbGwgdGhlIGZpbHRlcmluZyBhbmQgcmVnZW5lcmF0ZXMgdGhlIHJlY2VpdmVyIGNsb2NrLgorICAgICAgICBEYXRhIGlzIHRyYW5zZmVycmVkIGZyb20gYW5kIHRvIHRoZSBQQyB2aWEgYSBzaGlmdCByZWdpc3Rlci4KKyAgICAgICAgVGhlIHNoaWZ0IHJlZ2lzdGVyIGlzIGZpbGxlZCB3aXRoIDE2IGJpdHMgYW5kIGFuIGludGVycnVwdCBpcyBzaWduYWxsZWQuCisgICAgICAgIFRoZSBQQyB0aGVuIGVtcHRpZXMgdGhlIHNoaWZ0IHJlZ2lzdGVyIGluIGEgYnVyc3QuIFRoaXMgbW9kZW0gY29ubmVjdHMKKyAgICAgICAgdG8gdGhlIHBhcmFsbGVsIHBvcnQsIGhlbmNlIHRoZSBuYW1lLiBUaGUgbW9kZW0gbGVhdmVzIHRoZSAKKyAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgdGhlIEhETEMgcHJvdG9jb2wgYW5kIHRoZSBzY3JhbWJsZXIgcG9seW5vbWlhbCB0bworICAgICAgICB0aGUgUEMuCisKK3BpY3BhcjogVGhpcyBpcyBhIHJlZGVzaWduIG9mIHRoZSBwYXI5NiBtb2RlbSBieSBIZW5uaW5nIFJlY2gsIERGOUlDLiBUaGUgbW9kZW0KKyAgICAgICAgaXMgcHJvdG9jb2wgY29tcGF0aWJsZSB0byBwYXI5NiwgYnV0IHVzZXMgb25seSB0aHJlZSBsb3cgcG93ZXIgSUNzCisgICAgICAgIGFuZCBjYW4gdGhlcmVmb3JlIGJlIGZlZCBmcm9tIHRoZSBwYXJhbGxlbCBwb3J0IGFuZCBkb2VzIG5vdCByZXF1aXJlCisgICAgICAgIGFuIGFkZGl0aW9uYWwgcG93ZXIgc3VwcGx5LiBGdXJ0aGVybW9yZSwgaXQgaW5jb3Jwb3JhdGVzIGEgY2FycmllcgorICAgICAgICBkZXRlY3QgY2lyY3VpdHJ5LgorCitFUFA6ICAgIFRoaXMgaXMgYSBoaWdoLXNwZWVkIG1vZGVtIGFkYXB0b3IgdGhhdCBjb25uZWN0cyB0byBhbiBlbmhhbmNlZCBwYXJhbGxlbCBwb3J0LgorICAgICAgICBJdHMgdGFyZ2V0IGF1ZGllbmNlIGlzIHVzZXJzIHdvcmtpbmcgb3ZlciBhIGhpZ2ggc3BlZWQgaHViICg3Ni44a2JpdC9zKS4KKworZXBwZnBnYTogVGhpcyBpcyBhIHJlZGVzaWduIG9mIHRoZSBFUFAgYWRhcHRvci4KKworCisKK0FsbCBvZiB0aGUgYWJvdmUgbW9kZW1zIG9ubHkgc3VwcG9ydCBoYWxmIGR1cGxleCBjb21tdW5pY2F0aW9ucy4gSG93ZXZlciwKK3RoZSBkcml2ZXIgc3VwcG9ydHMgdGhlIEtJU1MgKHNlZSBiZWxvdykgZnVsbGR1cGxleCBjb21tYW5kLiBJdCB0aGVuIHNpbXBseQorc3RhcnRzIHRvIHNlbmQgYXMgc29vbiBhcyB0aGVyZSdzIGEgcGFja2V0IHRvIHRyYW5zbWl0IGFuZCBkb2VzIG5vdCBjYXJlCithYm91dCBEQ0QsIGkuZS4gaXQgc3RhcnRzIHRvIHNlbmQgZXZlbiBpZiB0aGVyZSdzIHNvbWVvbmUgZWxzZSBvbiB0aGUgY2hhbm5lbC4KK1RoaXMgY29tbWFuZCBpcyByZXF1aXJlZCBieSBzb21lIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgREFNQSBjaGFubmVsIAorYWNjZXNzIHByb3RvY29sLgorCisKK1RoZSBJbnRlcmZhY2Ugb2YgdGhlIGRyaXZlcnMKKworVW5saWtlIHByZXZpb3VzIGRyaXZlcnMsIHRoZXNlIGRyaXZlcnMgYXJlIG5vIGxvbmdlciBjaGFyYWN0ZXIgZGV2aWNlcywKK2J1dCB0aGV5IGFyZSBub3cgdHJ1ZSBrZXJuZWwgbmV0d29yayBpbnRlcmZhY2VzLiBJbnN0YWxsYXRpb24gaXMgdGhlcmVmb3JlCitzaW1wbGUuIE9uY2UgaW5zdGFsbGVkLCBmb3VyIGludGVyZmFjZXMgbmFtZWQgYmN7c2Ysc2gscCxlfVswLTNdIGFyZSBhdmFpbGFibGUuCitzZXRoZGxjIGZyb20gdGhlIGF4MjUgdXRpbGl0aWVzIG1heSBiZSB1c2VkIHRvIHNldCBkcml2ZXIgc3RhdGVzIGV0Yy4KK1VzZXJzIG9mIHVzZXJsYW5kIEFYLjI1IHN0YWNrcyBtYXkgdXNlIHRoZSBuZXQya2lzcyB1dGlsaXR5IChhbHNvIGF2YWlsYWJsZQoraW4gdGhlIGF4MjUgdXRpbGl0aWVzIHBhY2thZ2UpIHRvIGNvbnZlcnQgcGFja2V0cyBvZiBhIG5ldHdvcmsgaW50ZXJmYWNlCit0byBhIEtJU1Mgc3RyZWFtIG9uIGEgcHNldWRvIHR0eS4gVGhlcmUncyBhbHNvIGEgcGF0Y2ggYXZhaWxhYmxlIGZyb20KK21lIGZvciBXQU1QRVMgd2hpY2ggYWxsb3dzIGF0dGFjaGluZyBhIGtlcm5lbCBuZXR3b3JrIGludGVyZmFjZSBkaXJlY3RseS4KKworCitDb25maWd1cmluZyB0aGUgZHJpdmVyCisKK0V2ZXJ5IHRpbWUgYSBkcml2ZXIgaXMgaW5zZXJ0ZWQgaW50byB0aGUga2VybmVsLCBpdCBoYXMgdG8ga25vdyB3aGljaAorbW9kZW1zIGl0IHNob3VsZCBhY2Nlc3MgYXQgd2hpY2ggcG9ydHMuIFRoaXMgY2FuIGJlIGRvbmUgd2l0aCB0aGUgc2V0YmF5Y29tCit1dGlsaXR5LiBJZiB5b3UgYXJlIG9ubHkgdXNpbmcgb25lIG1vZGVtLCB5b3UgY2FuIGFsc28gY29uZmlndXJlIHRoZQorZHJpdmVyIGZyb20gdGhlIGluc21vZCBjb21tYW5kIGxpbmUgKG9yIGJ5IG1lYW5zIG9mIGFuIG9wdGlvbiBsaW5lIGluCisvZXRjL21vZHByb2JlLmQvKi5jb25mKS4KKworRXhhbXBsZXM6CisgIG1vZHByb2JlIGJheWNvbV9zZXJfZmR4IG1vZGU9InNlcjEyKiIgaW9iYXNlPTB4M2Y4IGlycT00CisgIHNldGhkbGMgLWkgYmNzZjAgLXAgbW9kZSAic2VyMTIqIiBpbyAweDNmOCBpcnEgNAorCitCb3RoIGxpbmVzIGNvbmZpZ3VyZSB0aGUgZmlyc3QgcG9ydCB0byBkcml2ZSBhIHNlcjEyIG1vZGVtIGF0IHRoZSBmaXJzdAorc2VyaWFsIHBvcnQgKENPTTEgdW5kZXIgRE9TKS4gVGhlICogaW4gdGhlIG1vZGUgcGFyYW1ldGVyIGluc3RydWN0cyB0aGUgZHJpdmVyIHRvIHVzZQordGhlIHNvZnR3YXJlIERDRCBhbGdvcml0aG0gKHNlZSBiZWxvdykuCisKKyAgaW5zbW9kIGJheWNvbV9wYXIgbW9kZT0icGljcGFyIiBpb2Jhc2U9MHgzNzgKKyAgc2V0aGRsYyAtaSBiY3AwIC1wIG1vZGUgInBpY3BhciIgaW8gMHgzNzgKKworQm90aCBsaW5lcyBjb25maWd1cmUgdGhlIGZpcnN0IHBvcnQgdG8gZHJpdmUgYSBwaWNwYXIgbW9kZW0gYXQgdGhlCitmaXJzdCBwYXJhbGxlbCBwb3J0IChMUFQxIHVuZGVyIERPUykuIChOb3RlOiBwaWNwYXIgaW1wbGllcworaGFyZHdhcmUgRENELCBwYXI5NiBpbXBsaWVzIHNvZnR3YXJlIERDRCkuCisKK1RoZSBjaGFubmVsIGFjY2VzcyBwYXJhbWV0ZXJzIGNhbiBiZSBzZXQgd2l0aCBzZXRoZGxjIC1hIG9yIGtpc3NwYXJtcy4KK05vdGUgdGhhdCBib3RoIHV0aWxpdGllcyBpbnRlcnByZXQgdGhlIHZhbHVlcyBzbGlnaHRseSBkaWZmZXJlbnRseS4KKworCitIYXJkd2FyZSBEQ0QgdmVyc3VzIFNvZnR3YXJlIERDRAorCitUbyBhdm9pZCBjb2xsaXNpb25zIG9uIHRoZSBhaXIsIHRoZSBkcml2ZXIgbXVzdCBrbm93IHdoZW4gdGhlIGNoYW5uZWwgaXMKK2J1c3kuIFRoaXMgaXMgdGhlIHRhc2sgb2YgdGhlIERDRCBjaXJjdWl0cnkvc29mdHdhcmUuIFRoZSBkcml2ZXIgbWF5IGVpdGhlcgordXRpbGlzZSBhIHNvZnR3YXJlIERDRCBhbGdvcml0aG0gKG9wdGlvbnM9MSkgb3IgdXNlIGEgRENEIHNpZ25hbCBmcm9tCit0aGUgaGFyZHdhcmUgKG9wdGlvbnM9MCkuCisKK3NlcjEyOiAgaWYgc29mdHdhcmUgRENEIGlzIHV0aWxpc2VkLCB0aGUgcmFkaW8ncyBzcXVlbGNoIHNob3VsZCBhbHdheXMgYmUKKyAgICAgICAgb3Blbi4gSXQgaXMgaGlnaGx5IHJlY29tbWVuZGVkIHRvIHVzZSB0aGUgc29mdHdhcmUgRENEIGFsZ29yaXRobSwKKyAgICAgICAgYXMgaXQgaXMgbXVjaCBmYXN0ZXIgdGhhbiBtb3N0IGhhcmR3YXJlIHNxdWVsY2ggY2lyY3VpdHJ5LiBUaGUKKyAgICAgICAgZGlzYWR2YW50YWdlIGlzIGEgc2xpZ2h0bHkgaGlnaGVyIGxvYWQgb24gdGhlIHN5c3RlbS4KKworcGFyOTY6ICB0aGUgc29mdHdhcmUgRENEIGFsZ29yaXRobSBmb3IgdGhpcyB0eXBlIG9mIG1vZGVtIGlzIHJhdGhlciBwb29yLgorICAgICAgICBUaGUgbW9kZW0gc2ltcGx5IGRvZXMgbm90IHByb3ZpZGUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIGltcGxlbWVudAorICAgICAgICBhIHJlYXNvbmFibGUgRENEIGFsZ29yaXRobSBpbiBzb2Z0d2FyZS4gVGhlcmVmb3JlLCBpZiB5b3VyIHJhZGlvCisgICAgICAgIGZlZWRzIHRoZSBEQ0QgaW5wdXQgb2YgdGhlIFBBUjk2IG1vZGVtLCB0aGUgdXNlIG9mIHRoZSBoYXJkd2FyZQorICAgICAgICBEQ0QgY2lyY3VpdHJ5IGlzIHJlY29tbWVuZGVkLgorCitwaWNwYXI6IHRoZSBwaWNwYXIgbW9kZW0gZmVhdHVyZXMgYSBidWlsdGluIERDRCBoYXJkd2FyZSwgd2hpY2ggaXMgaGlnaGx5CisgICAgICAgIHJlY29tbWVuZGVkLgorCisKKworQ29tcGF0aWJpbGl0eSB3aXRoIHRoZSByZXN0IG9mIHRoZSBMaW51eCBrZXJuZWwKKworVGhlIHNlcmlhbCBkcml2ZXIgYW5kIHRoZSBiYXljb20gc2VyaWFsIGRyaXZlcnMgY29tcGV0ZQorZm9yIHRoZSBzYW1lIGhhcmR3YXJlIHJlc291cmNlcy4gT2YgY291cnNlIG9ubHkgb25lIGRyaXZlciBjYW4gYWNjZXNzIGEgZ2l2ZW4KK2ludGVyZmFjZSBhdCBhIHRpbWUuIFRoZSBzZXJpYWwgZHJpdmVyIGdyYWJzIGFsbCBpbnRlcmZhY2VzIGl0IGNhbiBmaW5kIGF0CitzdGFydHVwIHRpbWUuIFRoZXJlZm9yZSB0aGUgYmF5Y29tIGRyaXZlcnMgc3Vic2VxdWVudGx5IHdvbid0IGJlIGFibGUgdG8KK2FjY2VzcyBhIHNlcmlhbCBwb3J0LiBZb3UgbWlnaHQgdGhlcmVmb3JlIGZpbmQgaXQgbmVjZXNzYXJ5IHRvIHJlbGVhc2UKK2EgcG9ydCBvd25lZCBieSB0aGUgc2VyaWFsIGRyaXZlciB3aXRoICdzZXRzZXJpYWwgL2Rldi90dHlTIyB1YXJ0IG5vbmUnLCB3aGVyZQorIyBpcyB0aGUgbnVtYmVyIG9mIHRoZSBpbnRlcmZhY2UuIFRoZSBiYXljb20gZHJpdmVycyBkbyBub3QgcmVzZXJ2ZSBhbnkKK3BvcnRzIGF0IHN0YXJ0dXAsIHVubGVzcyBvbmUgaXMgc3BlY2lmaWVkIG9uIHRoZSAnaW5zbW9kJyBjb21tYW5kIGxpbmUuIEFub3RoZXIKK21ldGhvZCB0byBzb2x2ZSB0aGUgcHJvYmxlbSBpcyB0byBjb21waWxlIGFsbCBkcml2ZXJzIGFzIG1vZHVsZXMgYW5kCitsZWF2ZSBpdCB0byBrbW9kIHRvIGxvYWQgdGhlIGNvcnJlY3QgZHJpdmVyIGRlcGVuZGluZyBvbiB0aGUgYXBwbGljYXRpb24uCisKK1RoZSBwYXJhbGxlbCBwb3J0IGRyaXZlcnMgKGJheWNvbV9wYXIsIGJheWNvbV9lcHApIG5vdyB1c2UgdGhlIHBhcnBvcnQgc3Vic3lzdGVtCit0byBhcmJpdHJhdGUgdGhlIHBvcnRzIGJldHdlZW4gZGlmZmVyZW50IGNsaWVudCBkcml2ZXJzLgorCit2eSA3M3MgZGUKK1RvbSBTYWlsZXIsIHNhaWxlckBpZmUuZWUuZXRoei5jaAoraGI5am54IEAgaGI5dy5hbXByLm9yZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2JvbmRpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2JvbmRpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNGI0OWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYm9uZGluZy50eHQKQEAgLTAsMCArMSwyODI3IEBACisKKwkJTGludXggRXRoZXJuZXQgQm9uZGluZyBEcml2ZXIgSE9XVE8KKworCQlMYXRlc3QgdXBkYXRlOiAyNyBBcHJpbCAyMDExCisKK0luaXRpYWwgcmVsZWFzZSA6IFRob21hcyBEYXZpcyA8dGFkYXZpcyBhdCBsYmwuZ292PgorQ29ycmVjdGlvbnMsIEhBIGV4dGVuc2lvbnMgOiAyMDAwLzEwLzAzLTE1IDoKKyAgLSBXaWxseSBUYXJyZWF1IDx3aWxseSBhdCBtZXRhLXgub3JnPgorICAtIENvbnN0YW50aW5lIEdhdnJpbG92IDxjb25zdC1nIGF0IHhwZXJ0LmNvbT4KKyAgLSBDaGFkIE4uIFRpbmRlbCA8Y3RpbmRlbCBhdCBpZWVlIGRvdCBvcmc+CisgIC0gSmFuaWNlIEdpcm91YXJkIDxnaXJvdWFyZCBhdCB1cyBkb3QgaWJtIGRvdCBjb20+CisgIC0gSmF5IFZvc2J1cmdoIDxmdWJhciBhdCB1cyBkb3QgaWJtIGRvdCBjb20+CisKK1Jlb3JnYW5pemVkIGFuZCB1cGRhdGVkIEZlYiAyMDA1IGJ5IEpheSBWb3NidXJnaAorQWRkZWQgU3lzZnMgaW5mb3JtYXRpb246IDIwMDYvMDQvMjQKKyAgLSBNaXRjaCBXaWxsaWFtcyA8bWl0Y2guYS53aWxsaWFtcyBhdCBpbnRlbC5jb20+CisKK0ludHJvZHVjdGlvbgorPT09PT09PT09PT09CisKKwlUaGUgTGludXggYm9uZGluZyBkcml2ZXIgcHJvdmlkZXMgYSBtZXRob2QgZm9yIGFnZ3JlZ2F0aW5nCittdWx0aXBsZSBuZXR3b3JrIGludGVyZmFjZXMgaW50byBhIHNpbmdsZSBsb2dpY2FsICJib25kZWQiIGludGVyZmFjZS4KK1RoZSBiZWhhdmlvciBvZiB0aGUgYm9uZGVkIGludGVyZmFjZXMgZGVwZW5kcyB1cG9uIHRoZSBtb2RlOyBnZW5lcmFsbHkKK3NwZWFraW5nLCBtb2RlcyBwcm92aWRlIGVpdGhlciBob3Qgc3RhbmRieSBvciBsb2FkIGJhbGFuY2luZyBzZXJ2aWNlcy4KK0FkZGl0aW9uYWxseSwgbGluayBpbnRlZ3JpdHkgbW9uaXRvcmluZyBtYXkgYmUgcGVyZm9ybWVkLgorCQorCVRoZSBib25kaW5nIGRyaXZlciBvcmlnaW5hbGx5IGNhbWUgZnJvbSBEb25hbGQgQmVja2VyJ3MKK2Jlb3d1bGYgcGF0Y2hlcyBmb3Iga2VybmVsIDIuMC4gSXQgaGFzIGNoYW5nZWQgcXVpdGUgYSBiaXQgc2luY2UsIGFuZAordGhlIG9yaWdpbmFsIHRvb2xzIGZyb20gZXh0cmVtZS1saW51eCBhbmQgYmVvd3VsZiBzaXRlcyB3aWxsIG5vdCB3b3JrCit3aXRoIHRoaXMgdmVyc2lvbiBvZiB0aGUgZHJpdmVyLgorCisJRm9yIG5ldyB2ZXJzaW9ucyBvZiB0aGUgZHJpdmVyLCB1cGRhdGVkIHVzZXJzcGFjZSB0b29scywgYW5kCit3aG8gdG8gYXNrIGZvciBoZWxwLCBwbGVhc2UgZm9sbG93IHRoZSBsaW5rcyBhdCB0aGUgZW5kIG9mIHRoaXMgZmlsZS4KKworVGFibGUgb2YgQ29udGVudHMKKz09PT09PT09PT09PT09PT09CisKKzEuIEJvbmRpbmcgRHJpdmVyIEluc3RhbGxhdGlvbgorCisyLiBCb25kaW5nIERyaXZlciBPcHRpb25zCisKKzMuIENvbmZpZ3VyaW5nIEJvbmRpbmcgRGV2aWNlcworMy4xCUNvbmZpZ3VyYXRpb24gd2l0aCBTeXNjb25maWcgU3VwcG9ydAorMy4xLjEJCVVzaW5nIERIQ1Agd2l0aCBTeXNjb25maWcKKzMuMS4yCQlDb25maWd1cmluZyBNdWx0aXBsZSBCb25kcyB3aXRoIFN5c2NvbmZpZworMy4yCUNvbmZpZ3VyYXRpb24gd2l0aCBJbml0c2NyaXB0cyBTdXBwb3J0CiszLjIuMQkJVXNpbmcgREhDUCB3aXRoIEluaXRzY3JpcHRzCiszLjIuMgkJQ29uZmlndXJpbmcgTXVsdGlwbGUgQm9uZHMgd2l0aCBJbml0c2NyaXB0cworMy4zCUNvbmZpZ3VyaW5nIEJvbmRpbmcgTWFudWFsbHkgd2l0aCBJZmVuc2xhdmUKKzMuMy4xCQlDb25maWd1cmluZyBNdWx0aXBsZSBCb25kcyBNYW51YWxseQorMy40CUNvbmZpZ3VyaW5nIEJvbmRpbmcgTWFudWFsbHkgdmlhIFN5c2ZzCiszLjUJQ29uZmlndXJhdGlvbiB3aXRoIEludGVyZmFjZXMgU3VwcG9ydAorMy42CU92ZXJyaWRpbmcgQ29uZmlndXJhdGlvbiBmb3IgU3BlY2lhbCBDYXNlcworMy43IENvbmZpZ3VyaW5nIExBQ1AgZm9yIDgwMi4zYWQgbW9kZSBpbiBhIG1vcmUgc2VjdXJlIHdheQorCis0LiBRdWVyeWluZyBCb25kaW5nIENvbmZpZ3VyYXRpb24KKzQuMQlCb25kaW5nIENvbmZpZ3VyYXRpb24KKzQuMglOZXR3b3JrIENvbmZpZ3VyYXRpb24KKworNS4gU3dpdGNoIENvbmZpZ3VyYXRpb24KKworNi4gODAyLjFxIFZMQU4gU3VwcG9ydAorCis3LiBMaW5rIE1vbml0b3JpbmcKKzcuMQlBUlAgTW9uaXRvciBPcGVyYXRpb24KKzcuMglDb25maWd1cmluZyBNdWx0aXBsZSBBUlAgVGFyZ2V0cworNy4zCU1JSSBNb25pdG9yIE9wZXJhdGlvbgorCis4LiBQb3RlbnRpYWwgVHJvdWJsZSBTb3VyY2VzCis4LjEJQWR2ZW50dXJlcyBpbiBSb3V0aW5nCis4LjIJRXRoZXJuZXQgRGV2aWNlIFJlbmFtaW5nCis4LjMJUGFpbmZ1bGx5IFNsb3cgT3IgTm8gRmFpbGVkIExpbmsgRGV0ZWN0aW9uIEJ5IE1paW1vbgorCis5LiBTTk1QIGFnZW50cworCisxMC4gUHJvbWlzY3VvdXMgbW9kZQorCisxMS4gQ29uZmlndXJpbmcgQm9uZGluZyBmb3IgSGlnaCBBdmFpbGFiaWxpdHkKKzExLjEJSGlnaCBBdmFpbGFiaWxpdHkgaW4gYSBTaW5nbGUgU3dpdGNoIFRvcG9sb2d5CisxMS4yCUhpZ2ggQXZhaWxhYmlsaXR5IGluIGEgTXVsdGlwbGUgU3dpdGNoIFRvcG9sb2d5CisxMS4yLjEJCUhBIEJvbmRpbmcgTW9kZSBTZWxlY3Rpb24gZm9yIE11bHRpcGxlIFN3aXRjaCBUb3BvbG9neQorMTEuMi4yCQlIQSBMaW5rIE1vbml0b3JpbmcgZm9yIE11bHRpcGxlIFN3aXRjaCBUb3BvbG9neQorCisxMi4gQ29uZmlndXJpbmcgQm9uZGluZyBmb3IgTWF4aW11bSBUaHJvdWdocHV0CisxMi4xCU1heGltdW0gVGhyb3VnaHB1dCBpbiBhIFNpbmdsZSBTd2l0Y2ggVG9wb2xvZ3kKKzEyLjEuMQkJTVQgQm9uZGluZyBNb2RlIFNlbGVjdGlvbiBmb3IgU2luZ2xlIFN3aXRjaCBUb3BvbG9neQorMTIuMS4yCQlNVCBMaW5rIE1vbml0b3JpbmcgZm9yIFNpbmdsZSBTd2l0Y2ggVG9wb2xvZ3kKKzEyLjIJTWF4aW11bSBUaHJvdWdocHV0IGluIGEgTXVsdGlwbGUgU3dpdGNoIFRvcG9sb2d5CisxMi4yLjEJCU1UIEJvbmRpbmcgTW9kZSBTZWxlY3Rpb24gZm9yIE11bHRpcGxlIFN3aXRjaCBUb3BvbG9neQorMTIuMi4yCQlNVCBMaW5rIE1vbml0b3JpbmcgZm9yIE11bHRpcGxlIFN3aXRjaCBUb3BvbG9neQorCisxMy4gU3dpdGNoIEJlaGF2aW9yIElzc3VlcworMTMuMQlMaW5rIEVzdGFibGlzaG1lbnQgYW5kIEZhaWxvdmVyIERlbGF5cworMTMuMglEdXBsaWNhdGVkIEluY29taW5nIFBhY2tldHMKKworMTQuIEhhcmR3YXJlIFNwZWNpZmljIENvbnNpZGVyYXRpb25zCisxNC4xCUlCTSBCbGFkZUNlbnRlcgorCisxNS4gRnJlcXVlbnRseSBBc2tlZCBRdWVzdGlvbnMKKworMTYuIFJlc291cmNlcyBhbmQgTGlua3MKKworCisxLiBCb25kaW5nIERyaXZlciBJbnN0YWxsYXRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisJTW9zdCBwb3B1bGFyIGRpc3RybyBrZXJuZWxzIHNoaXAgd2l0aCB0aGUgYm9uZGluZyBkcml2ZXIKK2FscmVhZHkgYXZhaWxhYmxlIGFzIGEgbW9kdWxlLiBJZiB5b3VyIGRpc3RybyBkb2VzIG5vdCwgb3IgeW91CitoYXZlIG5lZWQgdG8gY29tcGlsZSBib25kaW5nIGZyb20gc291cmNlIChlLmcuLCBjb25maWd1cmluZyBhbmQKK2luc3RhbGxpbmcgYSBtYWlubGluZSBrZXJuZWwgZnJvbSBrZXJuZWwub3JnKSwgeW91J2xsIG5lZWQgdG8gcGVyZm9ybQordGhlIGZvbGxvd2luZyBzdGVwczoKKworMS4xIENvbmZpZ3VyZSBhbmQgYnVpbGQgdGhlIGtlcm5lbCB3aXRoIGJvbmRpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBib25kaW5nIGRyaXZlciBpcyBhdmFpbGFibGUgaW4gdGhlCitkcml2ZXJzL25ldC9ib25kaW5nIHN1YmRpcmVjdG9yeSBvZiB0aGUgbW9zdCByZWNlbnQga2VybmVsIHNvdXJjZQorKHdoaWNoIGlzIGF2YWlsYWJsZSBvbiBodHRwOi8va2VybmVsLm9yZykuICBNb3N0IHVzZXJzICJyb2xsaW5nIHRoZWlyCitvd24iIHdpbGwgd2FudCB0byB1c2UgdGhlIG1vc3QgcmVjZW50IGtlcm5lbCBmcm9tIGtlcm5lbC5vcmcuCisKKwlDb25maWd1cmUga2VybmVsIHdpdGggIm1ha2UgbWVudWNvbmZpZyIgKG9yICJtYWtlIHhjb25maWciIG9yCisibWFrZSBjb25maWciKSwgdGhlbiBzZWxlY3QgIkJvbmRpbmcgZHJpdmVyIHN1cHBvcnQiIGluIHRoZSAiTmV0d29yaworZGV2aWNlIHN1cHBvcnQiIHNlY3Rpb24uICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSBjb25maWd1cmUgdGhlCitkcml2ZXIgYXMgbW9kdWxlIHNpbmNlIGl0IGlzIGN1cnJlbnRseSB0aGUgb25seSB3YXkgdG8gcGFzcyBwYXJhbWV0ZXJzCit0byB0aGUgZHJpdmVyIG9yIGNvbmZpZ3VyZSBtb3JlIHRoYW4gb25lIGJvbmRpbmcgZGV2aWNlLgorCisJQnVpbGQgYW5kIGluc3RhbGwgdGhlIG5ldyBrZXJuZWwgYW5kIG1vZHVsZXMuCisKKzEuMiBCb25kaW5nIENvbnRyb2wgVXRpbGl0eQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJIEl0IGlzIHJlY29tbWVuZGVkIHRvIGNvbmZpZ3VyZSBib25kaW5nIHZpYSBpcHJvdXRlMiAobmV0bGluaykKK29yIHN5c2ZzLCB0aGUgb2xkIGlmZW5zbGF2ZSBjb250cm9sIHV0aWxpdHkgaXMgb2Jzb2xldGUuCisKKzIuIEJvbmRpbmcgRHJpdmVyIE9wdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworCU9wdGlvbnMgZm9yIHRoZSBib25kaW5nIGRyaXZlciBhcmUgc3VwcGxpZWQgYXMgcGFyYW1ldGVycyB0byB0aGUKK2JvbmRpbmcgbW9kdWxlIGF0IGxvYWQgdGltZSwgb3IgYXJlIHNwZWNpZmllZCB2aWEgc3lzZnMuCisKKwlNb2R1bGUgb3B0aW9ucyBtYXkgYmUgZ2l2ZW4gYXMgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyB0byB0aGUKK2luc21vZCBvciBtb2Rwcm9iZSBjb21tYW5kLCBidXQgYXJlIHVzdWFsbHkgc3BlY2lmaWVkIGluIGVpdGhlciB0aGUKKy9ldGMvbW9kcm9iZS5kLyouY29uZiBjb25maWd1cmF0aW9uIGZpbGVzLCBvciBpbiBhIGRpc3Ryby1zcGVjaWZpYworY29uZmlndXJhdGlvbiBmaWxlIChzb21lIG9mIHdoaWNoIGFyZSBkZXRhaWxlZCBpbiB0aGUgbmV4dCBzZWN0aW9uKS4KKworCURldGFpbHMgb24gYm9uZGluZyBzdXBwb3J0IGZvciBzeXNmcyBpcyBwcm92aWRlZCBpbiB0aGUKKyJDb25maWd1cmluZyBCb25kaW5nIE1hbnVhbGx5IHZpYSBTeXNmcyIgc2VjdGlvbiwgYmVsb3cuCisKKwlUaGUgYXZhaWxhYmxlIGJvbmRpbmcgZHJpdmVyIHBhcmFtZXRlcnMgYXJlIGxpc3RlZCBiZWxvdy4gSWYgYQorcGFyYW1ldGVyIGlzIG5vdCBzcGVjaWZpZWQgdGhlIGRlZmF1bHQgdmFsdWUgaXMgdXNlZC4gIFdoZW4gaW5pdGlhbGx5Citjb25maWd1cmluZyBhIGJvbmQsIGl0IGlzIHJlY29tbWVuZGVkICJ0YWlsIC1mIC92YXIvbG9nL21lc3NhZ2VzIiBiZQorcnVuIGluIGEgc2VwYXJhdGUgd2luZG93IHRvIHdhdGNoIGZvciBib25kaW5nIGRyaXZlciBlcnJvciBtZXNzYWdlcy4KKworCUl0IGlzIGNyaXRpY2FsIHRoYXQgZWl0aGVyIHRoZSBtaWltb24gb3IgYXJwX2ludGVydmFsIGFuZAorYXJwX2lwX3RhcmdldCBwYXJhbWV0ZXJzIGJlIHNwZWNpZmllZCwgb3RoZXJ3aXNlIHNlcmlvdXMgbmV0d29yaworZGVncmFkYXRpb24gd2lsbCBvY2N1ciBkdXJpbmcgbGluayBmYWlsdXJlcy4gIFZlcnkgZmV3IGRldmljZXMgZG8gbm90CitzdXBwb3J0IGF0IGxlYXN0IG1paW1vbiwgc28gdGhlcmUgaXMgcmVhbGx5IG5vIHJlYXNvbiBub3QgdG8gdXNlIGl0LgorCisJT3B0aW9ucyB3aXRoIHRleHR1YWwgdmFsdWVzIHdpbGwgYWNjZXB0IGVpdGhlciB0aGUgdGV4dCBuYW1lCitvciwgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGUgb3B0aW9uIHZhbHVlLiAgRS5nLiwKKyJtb2RlPTgwMi4zYWQiIGFuZCAibW9kZT00IiBzZXQgdGhlIHNhbWUgbW9kZS4KKworCVRoZSBwYXJhbWV0ZXJzIGFyZSBhcyBmb2xsb3dzOgorCithY3RpdmVfc2xhdmUKKworCVNwZWNpZmllcyB0aGUgbmV3IGFjdGl2ZSBzbGF2ZSBmb3IgbW9kZXMgdGhhdCBzdXBwb3J0IGl0CisJKGFjdGl2ZS1iYWNrdXAsIGJhbGFuY2UtYWxiIGFuZCBiYWxhbmNlLXRsYikuICBQb3NzaWJsZSB2YWx1ZXMKKwlhcmUgdGhlIG5hbWUgb2YgYW55IGN1cnJlbnRseSBlbnNsYXZlZCBpbnRlcmZhY2UsIG9yIGFuIGVtcHR5CisJc3RyaW5nLiAgSWYgYSBuYW1lIGlzIGdpdmVuLCB0aGUgc2xhdmUgYW5kIGl0cyBsaW5rIG11c3QgYmUgdXAgaW4gb3JkZXIKKwl0byBiZSBzZWxlY3RlZCBhcyB0aGUgbmV3IGFjdGl2ZSBzbGF2ZS4gIElmIGFuIGVtcHR5IHN0cmluZyBpcworCXNwZWNpZmllZCwgdGhlIGN1cnJlbnQgYWN0aXZlIHNsYXZlIGlzIGNsZWFyZWQsIGFuZCBhIG5ldyBhY3RpdmUKKwlzbGF2ZSBpcyBzZWxlY3RlZCBhdXRvbWF0aWNhbGx5LgorCisJTm90ZSB0aGF0IHRoaXMgaXMgb25seSBhdmFpbGFibGUgdGhyb3VnaCB0aGUgc3lzZnMgaW50ZXJmYWNlLiBObyBtb2R1bGUKKwlwYXJhbWV0ZXIgYnkgdGhpcyBuYW1lIGV4aXN0cy4KKworCVRoZSBub3JtYWwgdmFsdWUgb2YgdGhpcyBvcHRpb24gaXMgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnRseQorCWFjdGl2ZSBzbGF2ZSwgb3IgdGhlIGVtcHR5IHN0cmluZyBpZiB0aGVyZSBpcyBubyBhY3RpdmUgc2xhdmUgb3IKKwl0aGUgY3VycmVudCBtb2RlIGRvZXMgbm90IHVzZSBhbiBhY3RpdmUgc2xhdmUuCisKK2FkX2FjdG9yX3N5c19wcmlvCisKKwlJbiBhbiBBRCBzeXN0ZW0sIHRoaXMgc3BlY2lmaWVzIHRoZSBzeXN0ZW0gcHJpb3JpdHkuIFRoZSBhbGxvd2VkIHJhbmdlCisJaXMgMSAtIDY1NTM1LiBJZiB0aGUgdmFsdWUgaXMgbm90IHNwZWNpZmllZCwgaXQgdGFrZXMgNjU1MzUgYXMgdGhlCisJZGVmYXVsdCB2YWx1ZS4KKworCVRoaXMgcGFyYW1ldGVyIGhhcyBlZmZlY3Qgb25seSBpbiA4MDIuM2FkIG1vZGUgYW5kIGlzIGF2YWlsYWJsZSB0aHJvdWdoCisJU3lzRnMgaW50ZXJmYWNlLgorCithZF9hY3Rvcl9zeXN0ZW0KKworCUluIGFuIEFEIHN5c3RlbSwgdGhpcyBzcGVjaWZpZXMgdGhlIG1hYy1hZGRyZXNzIGZvciB0aGUgYWN0b3IgaW4KKwlwcm90b2NvbCBwYWNrZXQgZXhjaGFuZ2VzIChMQUNQRFVzKS4gVGhlIHZhbHVlIGNhbm5vdCBiZSBOVUxMIG9yCisJbXVsdGljYXN0LiBJdCBpcyBwcmVmZXJyZWQgdG8gaGF2ZSB0aGUgbG9jYWwtYWRtaW4gYml0IHNldCBmb3IgdGhpcworCW1hYyBidXQgZHJpdmVyIGRvZXMgbm90IGVuZm9yY2UgaXQuIElmIHRoZSB2YWx1ZSBpcyBub3QgZ2l2ZW4gdGhlbgorCXN5c3RlbSBkZWZhdWx0cyB0byB1c2luZyB0aGUgbWFzdGVycycgbWFjIGFkZHJlc3MgYXMgYWN0b3JzJyBzeXN0ZW0KKwlhZGRyZXNzLgorCisJVGhpcyBwYXJhbWV0ZXIgaGFzIGVmZmVjdCBvbmx5IGluIDgwMi4zYWQgbW9kZSBhbmQgaXMgYXZhaWxhYmxlIHRocm91Z2gKKwlTeXNGcyBpbnRlcmZhY2UuCisKK2FkX3NlbGVjdAorCisJU3BlY2lmaWVzIHRoZSA4MDIuM2FkIGFnZ3JlZ2F0aW9uIHNlbGVjdGlvbiBsb2dpYyB0byB1c2UuICBUaGUKKwlwb3NzaWJsZSB2YWx1ZXMgYW5kIHRoZWlyIGVmZmVjdHMgYXJlOgorCisJc3RhYmxlIG9yIDAKKworCQlUaGUgYWN0aXZlIGFnZ3JlZ2F0b3IgaXMgY2hvc2VuIGJ5IGxhcmdlc3QgYWdncmVnYXRlCisJCWJhbmR3aWR0aC4KKworCQlSZXNlbGVjdGlvbiBvZiB0aGUgYWN0aXZlIGFnZ3JlZ2F0b3Igb2NjdXJzIG9ubHkgd2hlbiBhbGwKKwkJc2xhdmVzIG9mIHRoZSBhY3RpdmUgYWdncmVnYXRvciBhcmUgZG93biBvciB0aGUgYWN0aXZlCisJCWFnZ3JlZ2F0b3IgaGFzIG5vIHNsYXZlcy4KKworCQlUaGlzIGlzIHRoZSBkZWZhdWx0IHZhbHVlLgorCisJYmFuZHdpZHRoIG9yIDEKKworCQlUaGUgYWN0aXZlIGFnZ3JlZ2F0b3IgaXMgY2hvc2VuIGJ5IGxhcmdlc3QgYWdncmVnYXRlCisJCWJhbmR3aWR0aC4gIFJlc2VsZWN0aW9uIG9jY3VycyBpZjoKKworCQktIEEgc2xhdmUgaXMgYWRkZWQgdG8gb3IgcmVtb3ZlZCBmcm9tIHRoZSBib25kCisKKwkJLSBBbnkgc2xhdmUncyBsaW5rIHN0YXRlIGNoYW5nZXMKKworCQktIEFueSBzbGF2ZSdzIDgwMi4zYWQgYXNzb2NpYXRpb24gc3RhdGUgY2hhbmdlcworCisJCS0gVGhlIGJvbmQncyBhZG1pbmlzdHJhdGl2ZSBzdGF0ZSBjaGFuZ2VzIHRvIHVwCisKKwljb3VudCBvciAyCisKKwkJVGhlIGFjdGl2ZSBhZ2dyZWdhdG9yIGlzIGNob3NlbiBieSB0aGUgbGFyZ2VzdCBudW1iZXIgb2YKKwkJcG9ydHMgKHNsYXZlcykuICBSZXNlbGVjdGlvbiBvY2N1cnMgYXMgZGVzY3JpYmVkIHVuZGVyIHRoZQorCQkiYmFuZHdpZHRoIiBzZXR0aW5nLCBhYm92ZS4KKworCVRoZSBiYW5kd2lkdGggYW5kIGNvdW50IHNlbGVjdGlvbiBwb2xpY2llcyBwZXJtaXQgZmFpbG92ZXIgb2YKKwk4MDIuM2FkIGFnZ3JlZ2F0aW9ucyB3aGVuIHBhcnRpYWwgZmFpbHVyZSBvZiB0aGUgYWN0aXZlIGFnZ3JlZ2F0b3IKKwlvY2N1cnMuICBUaGlzIGtlZXBzIHRoZSBhZ2dyZWdhdG9yIHdpdGggdGhlIGhpZ2hlc3QgYXZhaWxhYmlsaXR5CisJKGVpdGhlciBpbiBiYW5kd2lkdGggb3IgaW4gbnVtYmVyIG9mIHBvcnRzKSBhY3RpdmUgYXQgYWxsIHRpbWVzLgorCisJVGhpcyBvcHRpb24gd2FzIGFkZGVkIGluIGJvbmRpbmcgdmVyc2lvbiAzLjQuMC4KKworYWRfdXNlcl9wb3J0X2tleQorCisJSW4gYW4gQUQgc3lzdGVtLCB0aGUgcG9ydC1rZXkgaGFzIHRocmVlIHBhcnRzIGFzIHNob3duIGJlbG93IC0KKworCSAgIEJpdHMgICBVc2UKKwkgICAwMCAgICAgRHVwbGV4CisJICAgMDEtMDUgIFNwZWVkCisJICAgMDYtMTUgIFVzZXItZGVmaW5lZAorCisJVGhpcyBkZWZpbmVzIHRoZSB1cHBlciAxMCBiaXRzIG9mIHRoZSBwb3J0IGtleS4gVGhlIHZhbHVlcyBjYW4gYmUKKwlmcm9tIDAgLSAxMDIzLiBJZiBub3QgZ2l2ZW4sIHRoZSBzeXN0ZW0gZGVmYXVsdHMgdG8gMC4KKworCVRoaXMgcGFyYW1ldGVyIGhhcyBlZmZlY3Qgb25seSBpbiA4MDIuM2FkIG1vZGUgYW5kIGlzIGF2YWlsYWJsZSB0aHJvdWdoCisJU3lzRnMgaW50ZXJmYWNlLgorCithbGxfc2xhdmVzX2FjdGl2ZQorCisJU3BlY2lmaWVzIHRoYXQgZHVwbGljYXRlIGZyYW1lcyAocmVjZWl2ZWQgb24gaW5hY3RpdmUgcG9ydHMpIHNob3VsZCBiZQorCWRyb3BwZWQgKDApIG9yIGRlbGl2ZXJlZCAoMSkuCisKKwlOb3JtYWxseSwgYm9uZGluZyB3aWxsIGRyb3AgZHVwbGljYXRlIGZyYW1lcyAocmVjZWl2ZWQgb24gaW5hY3RpdmUKKwlwb3J0cyksIHdoaWNoIGlzIGRlc2lyYWJsZSBmb3IgbW9zdCB1c2Vycy4gQnV0IHRoZXJlIGFyZSBzb21lIHRpbWVzCisJaXQgaXMgbmljZSB0byBhbGxvdyBkdXBsaWNhdGUgZnJhbWVzIHRvIGJlIGRlbGl2ZXJlZC4KKworCVRoZSBkZWZhdWx0IHZhbHVlIGlzIDAgKGRyb3AgZHVwbGljYXRlIGZyYW1lcyByZWNlaXZlZCBvbiBpbmFjdGl2ZQorCXBvcnRzKS4KKworYXJwX2ludGVydmFsCisKKwlTcGVjaWZpZXMgdGhlIEFSUCBsaW5rIG1vbml0b3JpbmcgZnJlcXVlbmN5IGluIG1pbGxpc2Vjb25kcy4KKworCVRoZSBBUlAgbW9uaXRvciB3b3JrcyBieSBwZXJpb2RpY2FsbHkgY2hlY2tpbmcgdGhlIHNsYXZlCisJZGV2aWNlcyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGV5IGhhdmUgc2VudCBvciByZWNlaXZlZAorCXRyYWZmaWMgcmVjZW50bHkgKHRoZSBwcmVjaXNlIGNyaXRlcmlhIGRlcGVuZHMgdXBvbiB0aGUKKwlib25kaW5nIG1vZGUsIGFuZCB0aGUgc3RhdGUgb2YgdGhlIHNsYXZlKS4gIFJlZ3VsYXIgdHJhZmZpYyBpcworCWdlbmVyYXRlZCB2aWEgQVJQIHByb2JlcyBpc3N1ZWQgZm9yIHRoZSBhZGRyZXNzZXMgc3BlY2lmaWVkIGJ5CisJdGhlIGFycF9pcF90YXJnZXQgb3B0aW9uLgorCisJVGhpcyBiZWhhdmlvciBjYW4gYmUgbW9kaWZpZWQgYnkgdGhlIGFycF92YWxpZGF0ZSBvcHRpb24sCisJYmVsb3cuCisKKwlJZiBBUlAgbW9uaXRvcmluZyBpcyB1c2VkIGluIGFuIGV0aGVyY2hhbm5lbCBjb21wYXRpYmxlIG1vZGUKKwkobW9kZXMgMCBhbmQgMiksIHRoZSBzd2l0Y2ggc2hvdWxkIGJlIGNvbmZpZ3VyZWQgaW4gYSBtb2RlCisJdGhhdCBldmVubHkgZGlzdHJpYnV0ZXMgcGFja2V0cyBhY3Jvc3MgYWxsIGxpbmtzLiBJZiB0aGUKKwlzd2l0Y2ggaXMgY29uZmlndXJlZCB0byBkaXN0cmlidXRlIHRoZSBwYWNrZXRzIGluIGFuIFhPUgorCWZhc2hpb24sIGFsbCByZXBsaWVzIGZyb20gdGhlIEFSUCB0YXJnZXRzIHdpbGwgYmUgcmVjZWl2ZWQgb24KKwl0aGUgc2FtZSBsaW5rIHdoaWNoIGNvdWxkIGNhdXNlIHRoZSBvdGhlciB0ZWFtIG1lbWJlcnMgdG8KKwlmYWlsLiAgQVJQIG1vbml0b3Jpbmcgc2hvdWxkIG5vdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGgKKwltaWltb24uICBBIHZhbHVlIG9mIDAgZGlzYWJsZXMgQVJQIG1vbml0b3JpbmcuICBUaGUgZGVmYXVsdAorCXZhbHVlIGlzIDAuCisKK2FycF9pcF90YXJnZXQKKworCVNwZWNpZmllcyB0aGUgSVAgYWRkcmVzc2VzIHRvIHVzZSBhcyBBUlAgbW9uaXRvcmluZyBwZWVycyB3aGVuCisJYXJwX2ludGVydmFsIGlzID4gMC4gIFRoZXNlIGFyZSB0aGUgdGFyZ2V0cyBvZiB0aGUgQVJQIHJlcXVlc3QKKwlzZW50IHRvIGRldGVybWluZSB0aGUgaGVhbHRoIG9mIHRoZSBsaW5rIHRvIHRoZSB0YXJnZXRzLgorCVNwZWNpZnkgdGhlc2UgdmFsdWVzIGluIGRkZC5kZGQuZGRkLmRkZCBmb3JtYXQuICBNdWx0aXBsZSBJUAorCWFkZHJlc3NlcyBtdXN0IGJlIHNlcGFyYXRlZCBieSBhIGNvbW1hLiAgQXQgbGVhc3Qgb25lIElQCisJYWRkcmVzcyBtdXN0IGJlIGdpdmVuIGZvciBBUlAgbW9uaXRvcmluZyB0byBmdW5jdGlvbi4gIFRoZQorCW1heGltdW0gbnVtYmVyIG9mIHRhcmdldHMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGlzIDE2LiAgVGhlCisJZGVmYXVsdCB2YWx1ZSBpcyBubyBJUCBhZGRyZXNzZXMuCisKK2FycF92YWxpZGF0ZQorCisJU3BlY2lmaWVzIHdoZXRoZXIgb3Igbm90IEFSUCBwcm9iZXMgYW5kIHJlcGxpZXMgc2hvdWxkIGJlCisJdmFsaWRhdGVkIGluIGFueSBtb2RlIHRoYXQgc3VwcG9ydHMgYXJwIG1vbml0b3JpbmcsIG9yIHdoZXRoZXIKKwlub24tQVJQIHRyYWZmaWMgc2hvdWxkIGJlIGZpbHRlcmVkIChkaXNyZWdhcmRlZCkgZm9yIGxpbmsKKwltb25pdG9yaW5nIHB1cnBvc2VzLgorCisJUG9zc2libGUgdmFsdWVzIGFyZToKKworCW5vbmUgb3IgMAorCisJCU5vIHZhbGlkYXRpb24gb3IgZmlsdGVyaW5nIGlzIHBlcmZvcm1lZC4KKworCWFjdGl2ZSBvciAxCisKKwkJVmFsaWRhdGlvbiBpcyBwZXJmb3JtZWQgb25seSBmb3IgdGhlIGFjdGl2ZSBzbGF2ZS4KKworCWJhY2t1cCBvciAyCisKKwkJVmFsaWRhdGlvbiBpcyBwZXJmb3JtZWQgb25seSBmb3IgYmFja3VwIHNsYXZlcy4KKworCWFsbCBvciAzCisKKwkJVmFsaWRhdGlvbiBpcyBwZXJmb3JtZWQgZm9yIGFsbCBzbGF2ZXMuCisKKwlmaWx0ZXIgb3IgNAorCisJCUZpbHRlcmluZyBpcyBhcHBsaWVkIHRvIGFsbCBzbGF2ZXMuIE5vIHZhbGlkYXRpb24gaXMKKwkJcGVyZm9ybWVkLgorCisJZmlsdGVyX2FjdGl2ZSBvciA1CisKKwkJRmlsdGVyaW5nIGlzIGFwcGxpZWQgdG8gYWxsIHNsYXZlcywgdmFsaWRhdGlvbiBpcyBwZXJmb3JtZWQKKwkJb25seSBmb3IgdGhlIGFjdGl2ZSBzbGF2ZS4KKworCWZpbHRlcl9iYWNrdXAgb3IgNgorCisJCUZpbHRlcmluZyBpcyBhcHBsaWVkIHRvIGFsbCBzbGF2ZXMsIHZhbGlkYXRpb24gaXMgcGVyZm9ybWVkCisJCW9ubHkgZm9yIGJhY2t1cCBzbGF2ZXMuCisKKwlWYWxpZGF0aW9uOgorCisJRW5hYmxpbmcgdmFsaWRhdGlvbiBjYXVzZXMgdGhlIEFSUCBtb25pdG9yIHRvIGV4YW1pbmUgdGhlIGluY29taW5nCisJQVJQIHJlcXVlc3RzIGFuZCByZXBsaWVzLCBhbmQgb25seSBjb25zaWRlciBhIHNsYXZlIHRvIGJlIHVwIGlmIGl0CisJaXMgcmVjZWl2aW5nIHRoZSBhcHByb3ByaWF0ZSBBUlAgdHJhZmZpYy4KKworCUZvciBhbiBhY3RpdmUgc2xhdmUsIHRoZSB2YWxpZGF0aW9uIGNoZWNrcyBBUlAgcmVwbGllcyB0byBjb25maXJtCisJdGhhdCB0aGV5IHdlcmUgZ2VuZXJhdGVkIGJ5IGFuIGFycF9pcF90YXJnZXQuICBTaW5jZSBiYWNrdXAgc2xhdmVzCisJZG8gbm90IHR5cGljYWxseSByZWNlaXZlIHRoZXNlIHJlcGxpZXMsIHRoZSB2YWxpZGF0aW9uIHBlcmZvcm1lZAorCWZvciBiYWNrdXAgc2xhdmVzIGlzIG9uIHRoZSBicm9hZGNhc3QgQVJQIHJlcXVlc3Qgc2VudCBvdXQgdmlhIHRoZQorCWFjdGl2ZSBzbGF2ZS4gIEl0IGlzIHBvc3NpYmxlIHRoYXQgc29tZSBzd2l0Y2ggb3IgbmV0d29yaworCWNvbmZpZ3VyYXRpb25zIG1heSByZXN1bHQgaW4gc2l0dWF0aW9ucyB3aGVyZWluIHRoZSBiYWNrdXAgc2xhdmVzCisJZG8gbm90IHJlY2VpdmUgdGhlIEFSUCByZXF1ZXN0czsgaW4gc3VjaCBhIHNpdHVhdGlvbiwgdmFsaWRhdGlvbgorCW9mIGJhY2t1cCBzbGF2ZXMgbXVzdCBiZSBkaXNhYmxlZC4KKworCVRoZSB2YWxpZGF0aW9uIG9mIEFSUCByZXF1ZXN0cyBvbiBiYWNrdXAgc2xhdmVzIGlzIG1haW5seSBoZWxwaW5nCisJYm9uZGluZyB0byBkZWNpZGUgd2hpY2ggc2xhdmVzIGFyZSBtb3JlIGxpa2VseSB0byB3b3JrIGluIGNhc2Ugb2YKKwl0aGUgYWN0aXZlIHNsYXZlIGZhaWx1cmUsIGl0IGRvZXNuJ3QgcmVhbGx5IGd1YXJhbnRlZSB0aGF0IHRoZQorCWJhY2t1cCBzbGF2ZSB3aWxsIHdvcmsgaWYgaXQncyBzZWxlY3RlZCBhcyB0aGUgbmV4dCBhY3RpdmUgc2xhdmUuCisKKwlWYWxpZGF0aW9uIGlzIHVzZWZ1bCBpbiBuZXR3b3JrIGNvbmZpZ3VyYXRpb25zIGluIHdoaWNoIG11bHRpcGxlCisJYm9uZGluZyBob3N0cyBhcmUgY29uY3VycmVudGx5IGlzc3VpbmcgQVJQcyB0byBvbmUgb3IgbW9yZSB0YXJnZXRzCisJYmV5b25kIGEgY29tbW9uIHN3aXRjaC4gIFNob3VsZCB0aGUgbGluayBiZXR3ZWVuIHRoZSBzd2l0Y2ggYW5kCisJdGFyZ2V0IGZhaWwgKGJ1dCBub3QgdGhlIHN3aXRjaCBpdHNlbGYpLCB0aGUgcHJvYmUgdHJhZmZpYworCWdlbmVyYXRlZCBieSB0aGUgbXVsdGlwbGUgYm9uZGluZyBpbnN0YW5jZXMgd2lsbCBmb29sIHRoZSBzdGFuZGFyZAorCUFSUCBtb25pdG9yIGludG8gY29uc2lkZXJpbmcgdGhlIGxpbmtzIGFzIHN0aWxsIHVwLiAgVXNlIG9mCisJdmFsaWRhdGlvbiBjYW4gcmVzb2x2ZSB0aGlzLCBhcyB0aGUgQVJQIG1vbml0b3Igd2lsbCBvbmx5IGNvbnNpZGVyCisJQVJQIHJlcXVlc3RzIGFuZCByZXBsaWVzIGFzc29jaWF0ZWQgd2l0aCBpdHMgb3duIGluc3RhbmNlIG9mCisJYm9uZGluZy4KKworCUZpbHRlcmluZzoKKworCUVuYWJsaW5nIGZpbHRlcmluZyBjYXVzZXMgdGhlIEFSUCBtb25pdG9yIHRvIG9ubHkgdXNlIGluY29taW5nIEFSUAorCXBhY2tldHMgZm9yIGxpbmsgYXZhaWxhYmlsaXR5IHB1cnBvc2VzLiAgQXJyaXZpbmcgcGFja2V0cyB0aGF0IGFyZQorCW5vdCBBUlBzIGFyZSBkZWxpdmVyZWQgbm9ybWFsbHksIGJ1dCBkbyBub3QgY291bnQgd2hlbiBkZXRlcm1pbmluZworCWlmIGEgc2xhdmUgaXMgYXZhaWxhYmxlLgorCisJRmlsdGVyaW5nIG9wZXJhdGVzIGJ5IG9ubHkgY29uc2lkZXJpbmcgdGhlIHJlY2VwdGlvbiBvZiBBUlAKKwlwYWNrZXRzIChhbnkgQVJQIHBhY2tldCwgcmVnYXJkbGVzcyBvZiBzb3VyY2Ugb3IgZGVzdGluYXRpb24pIHdoZW4KKwlkZXRlcm1pbmluZyBpZiBhIHNsYXZlIGhhcyByZWNlaXZlZCB0cmFmZmljIGZvciBsaW5rIGF2YWlsYWJpbGl0eQorCXB1cnBvc2VzLgorCisJRmlsdGVyaW5nIGlzIHVzZWZ1bCBpbiBuZXR3b3JrIGNvbmZpZ3VyYXRpb25zIGluIHdoaWNoIHNpZ25pZmljYW50CisJbGV2ZWxzIG9mIHRoaXJkIHBhcnR5IGJyb2FkY2FzdCB0cmFmZmljIHdvdWxkIGZvb2wgdGhlIHN0YW5kYXJkCisJQVJQIG1vbml0b3IgaW50byBjb25zaWRlcmluZyB0aGUgbGlua3MgYXMgc3RpbGwgdXAuICBVc2Ugb2YKKwlmaWx0ZXJpbmcgY2FuIHJlc29sdmUgdGhpcywgYXMgb25seSBBUlAgdHJhZmZpYyBpcyBjb25zaWRlcmVkIGZvcgorCWxpbmsgYXZhaWxhYmlsaXR5IHB1cnBvc2VzLgorCisJVGhpcyBvcHRpb24gd2FzIGFkZGVkIGluIGJvbmRpbmcgdmVyc2lvbiAzLjEuMC4KKworYXJwX2FsbF90YXJnZXRzCisKKwlTcGVjaWZpZXMgdGhlIHF1YW50aXR5IG9mIGFycF9pcF90YXJnZXRzIHRoYXQgbXVzdCBiZSByZWFjaGFibGUKKwlpbiBvcmRlciBmb3IgdGhlIEFSUCBtb25pdG9yIHRvIGNvbnNpZGVyIGEgc2xhdmUgYXMgYmVpbmcgdXAuCisJVGhpcyBvcHRpb24gYWZmZWN0cyBvbmx5IGFjdGl2ZS1iYWNrdXAgbW9kZSBmb3Igc2xhdmVzIHdpdGgKKwlhcnBfdmFsaWRhdGlvbiBlbmFibGVkLgorCisJUG9zc2libGUgdmFsdWVzIGFyZToKKworCWFueSBvciAwCisKKwkJY29uc2lkZXIgdGhlIHNsYXZlIHVwIG9ubHkgd2hlbiBhbnkgb2YgdGhlIGFycF9pcF90YXJnZXRzCisJCWlzIHJlYWNoYWJsZQorCisJYWxsIG9yIDEKKworCQljb25zaWRlciB0aGUgc2xhdmUgdXAgb25seSB3aGVuIGFsbCBvZiB0aGUgYXJwX2lwX3RhcmdldHMKKwkJYXJlIHJlYWNoYWJsZQorCitkb3duZGVsYXkKKworCVNwZWNpZmllcyB0aGUgdGltZSwgaW4gbWlsbGlzZWNvbmRzLCB0byB3YWl0IGJlZm9yZSBkaXNhYmxpbmcKKwlhIHNsYXZlIGFmdGVyIGEgbGluayBmYWlsdXJlIGhhcyBiZWVuIGRldGVjdGVkLiAgVGhpcyBvcHRpb24KKwlpcyBvbmx5IHZhbGlkIGZvciB0aGUgbWlpbW9uIGxpbmsgbW9uaXRvci4gIFRoZSBkb3duZGVsYXkKKwl2YWx1ZSBzaG91bGQgYmUgYSBtdWx0aXBsZSBvZiB0aGUgbWlpbW9uIHZhbHVlOyBpZiBub3QsIGl0CisJd2lsbCBiZSByb3VuZGVkIGRvd24gdG8gdGhlIG5lYXJlc3QgbXVsdGlwbGUuICBUaGUgZGVmYXVsdAorCXZhbHVlIGlzIDAuCisKK2ZhaWxfb3Zlcl9tYWMKKworCVNwZWNpZmllcyB3aGV0aGVyIGFjdGl2ZS1iYWNrdXAgbW9kZSBzaG91bGQgc2V0IGFsbCBzbGF2ZXMgdG8KKwl0aGUgc2FtZSBNQUMgYWRkcmVzcyBhdCBlbnNsYXZlbWVudCAodGhlIHRyYWRpdGlvbmFsCisJYmVoYXZpb3IpLCBvciwgd2hlbiBlbmFibGVkLCBwZXJmb3JtIHNwZWNpYWwgaGFuZGxpbmcgb2YgdGhlCisJYm9uZCdzIE1BQyBhZGRyZXNzIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgc2VsZWN0ZWQgcG9saWN5LgorCisJUG9zc2libGUgdmFsdWVzIGFyZToKKworCW5vbmUgb3IgMAorCisJCVRoaXMgc2V0dGluZyBkaXNhYmxlcyBmYWlsX292ZXJfbWFjLCBhbmQgY2F1c2VzCisJCWJvbmRpbmcgdG8gc2V0IGFsbCBzbGF2ZXMgb2YgYW4gYWN0aXZlLWJhY2t1cCBib25kIHRvCisJCXRoZSBzYW1lIE1BQyBhZGRyZXNzIGF0IGVuc2xhdmVtZW50IHRpbWUuICBUaGlzIGlzIHRoZQorCQlkZWZhdWx0LgorCisJYWN0aXZlIG9yIDEKKworCQlUaGUgImFjdGl2ZSIgZmFpbF9vdmVyX21hYyBwb2xpY3kgaW5kaWNhdGVzIHRoYXQgdGhlCisJCU1BQyBhZGRyZXNzIG9mIHRoZSBib25kIHNob3VsZCBhbHdheXMgYmUgdGhlIE1BQworCQlhZGRyZXNzIG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIHNsYXZlLiAgVGhlIE1BQworCQlhZGRyZXNzIG9mIHRoZSBzbGF2ZXMgaXMgbm90IGNoYW5nZWQ7IGluc3RlYWQsIHRoZSBNQUMKKwkJYWRkcmVzcyBvZiB0aGUgYm9uZCBjaGFuZ2VzIGR1cmluZyBhIGZhaWxvdmVyLgorCisJCVRoaXMgcG9saWN5IGlzIHVzZWZ1bCBmb3IgZGV2aWNlcyB0aGF0IGNhbm5vdCBldmVyCisJCWFsdGVyIHRoZWlyIE1BQyBhZGRyZXNzLCBvciBmb3IgZGV2aWNlcyB0aGF0IHJlZnVzZQorCQlpbmNvbWluZyBicm9hZGNhc3RzIHdpdGggdGhlaXIgb3duIHNvdXJjZSBNQUMgKHdoaWNoCisJCWludGVyZmVyZXMgd2l0aCB0aGUgQVJQIG1vbml0b3IpLgorCisJCVRoZSBkb3duIHNpZGUgb2YgdGhpcyBwb2xpY3kgaXMgdGhhdCBldmVyeSBkZXZpY2Ugb24KKwkJdGhlIG5ldHdvcmsgbXVzdCBiZSB1cGRhdGVkIHZpYSBncmF0dWl0b3VzIEFSUCwKKwkJdnMuIGp1c3QgdXBkYXRpbmcgYSBzd2l0Y2ggb3Igc2V0IG9mIHN3aXRjaGVzICh3aGljaAorCQlvZnRlbiB0YWtlcyBwbGFjZSBmb3IgYW55IHRyYWZmaWMsIG5vdCBqdXN0IEFSUAorCQl0cmFmZmljLCBpZiB0aGUgc3dpdGNoIHNub29wcyBpbmNvbWluZyB0cmFmZmljIHRvCisJCXVwZGF0ZSBpdHMgdGFibGVzKSBmb3IgdGhlIHRyYWRpdGlvbmFsIG1ldGhvZC4gIElmIHRoZQorCQlncmF0dWl0b3VzIEFSUCBpcyBsb3N0LCBjb21tdW5pY2F0aW9uIG1heSBiZQorCQlkaXNydXB0ZWQuCisKKwkJV2hlbiB0aGlzIHBvbGljeSBpcyB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIG1paQorCQltb25pdG9yLCBkZXZpY2VzIHdoaWNoIGFzc2VydCBsaW5rIHVwIHByaW9yIHRvIGJlaW5nCisJCWFibGUgdG8gYWN0dWFsbHkgdHJhbnNtaXQgYW5kIHJlY2VpdmUgYXJlIHBhcnRpY3VsYXJseQorCQlzdXNjZXB0aWJsZSB0byBsb3NzIG9mIHRoZSBncmF0dWl0b3VzIEFSUCwgYW5kIGFuCisJCWFwcHJvcHJpYXRlIHVwZGVsYXkgc2V0dGluZyBtYXkgYmUgcmVxdWlyZWQuCisKKwlmb2xsb3cgb3IgMgorCisJCVRoZSAiZm9sbG93IiBmYWlsX292ZXJfbWFjIHBvbGljeSBjYXVzZXMgdGhlIE1BQworCQlhZGRyZXNzIG9mIHRoZSBib25kIHRvIGJlIHNlbGVjdGVkIG5vcm1hbGx5IChub3JtYWxseQorCQl0aGUgTUFDIGFkZHJlc3Mgb2YgdGhlIGZpcnN0IHNsYXZlIGFkZGVkIHRvIHRoZSBib25kKS4KKwkJSG93ZXZlciwgdGhlIHNlY29uZCBhbmQgc3Vic2VxdWVudCBzbGF2ZXMgYXJlIG5vdCBzZXQKKwkJdG8gdGhpcyBNQUMgYWRkcmVzcyB3aGlsZSB0aGV5IGFyZSBpbiBhIGJhY2t1cCByb2xlOyBhCisJCXNsYXZlIGlzIHByb2dyYW1tZWQgd2l0aCB0aGUgYm9uZCdzIE1BQyBhZGRyZXNzIGF0CisJCWZhaWxvdmVyIHRpbWUgKGFuZCB0aGUgZm9ybWVybHkgYWN0aXZlIHNsYXZlIHJlY2VpdmVzCisJCXRoZSBuZXdseSBhY3RpdmUgc2xhdmUncyBNQUMgYWRkcmVzcykuCisKKwkJVGhpcyBwb2xpY3kgaXMgdXNlZnVsIGZvciBtdWx0aXBvcnQgZGV2aWNlcyB0aGF0CisJCWVpdGhlciBiZWNvbWUgY29uZnVzZWQgb3IgaW5jdXIgYSBwZXJmb3JtYW5jZSBwZW5hbHR5CisJCXdoZW4gbXVsdGlwbGUgcG9ydHMgYXJlIHByb2dyYW1tZWQgd2l0aCB0aGUgc2FtZSBNQUMKKwkJYWRkcmVzcy4KKworCisJVGhlIGRlZmF1bHQgcG9saWN5IGlzIG5vbmUsIHVubGVzcyB0aGUgZmlyc3Qgc2xhdmUgY2Fubm90CisJY2hhbmdlIGl0cyBNQUMgYWRkcmVzcywgaW4gd2hpY2ggY2FzZSB0aGUgYWN0aXZlIHBvbGljeSBpcworCXNlbGVjdGVkIGJ5IGRlZmF1bHQuCisKKwlUaGlzIG9wdGlvbiBtYXkgYmUgbW9kaWZpZWQgdmlhIHN5c2ZzIG9ubHkgd2hlbiBubyBzbGF2ZXMgYXJlCisJcHJlc2VudCBpbiB0aGUgYm9uZC4KKworCVRoaXMgb3B0aW9uIHdhcyBhZGRlZCBpbiBib25kaW5nIHZlcnNpb24gMy4yLjAuICBUaGUgImZvbGxvdyIKKwlwb2xpY3kgd2FzIGFkZGVkIGluIGJvbmRpbmcgdmVyc2lvbiAzLjMuMC4KKworbGFjcF9yYXRlCisKKwlPcHRpb24gc3BlY2lmeWluZyB0aGUgcmF0ZSBpbiB3aGljaCB3ZSdsbCBhc2sgb3VyIGxpbmsgcGFydG5lcgorCXRvIHRyYW5zbWl0IExBQ1BEVSBwYWNrZXRzIGluIDgwMi4zYWQgbW9kZS4gIFBvc3NpYmxlIHZhbHVlcworCWFyZToKKworCXNsb3cgb3IgMAorCQlSZXF1ZXN0IHBhcnRuZXIgdG8gdHJhbnNtaXQgTEFDUERVcyBldmVyeSAzMCBzZWNvbmRzCisKKwlmYXN0IG9yIDEKKwkJUmVxdWVzdCBwYXJ0bmVyIHRvIHRyYW5zbWl0IExBQ1BEVXMgZXZlcnkgMSBzZWNvbmQKKworCVRoZSBkZWZhdWx0IGlzIHNsb3cuCisKK21heF9ib25kcworCisJU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYm9uZGluZyBkZXZpY2VzIHRvIGNyZWF0ZSBmb3IgdGhpcworCWluc3RhbmNlIG9mIHRoZSBib25kaW5nIGRyaXZlci4gIEUuZy4sIGlmIG1heF9ib25kcyBpcyAzLCBhbmQKKwl0aGUgYm9uZGluZyBkcml2ZXIgaXMgbm90IGFscmVhZHkgbG9hZGVkLCB0aGVuIGJvbmQwLCBib25kMQorCWFuZCBib25kMiB3aWxsIGJlIGNyZWF0ZWQuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxLiAgU3BlY2lmeWluZworCWEgdmFsdWUgb2YgMCB3aWxsIGxvYWQgYm9uZGluZywgYnV0IHdpbGwgbm90IGNyZWF0ZSBhbnkgZGV2aWNlcy4KKworbWlpbW9uCisKKwlTcGVjaWZpZXMgdGhlIE1JSSBsaW5rIG1vbml0b3JpbmcgZnJlcXVlbmN5IGluIG1pbGxpc2Vjb25kcy4KKwlUaGlzIGRldGVybWluZXMgaG93IG9mdGVuIHRoZSBsaW5rIHN0YXRlIG9mIGVhY2ggc2xhdmUgaXMKKwlpbnNwZWN0ZWQgZm9yIGxpbmsgZmFpbHVyZXMuICBBIHZhbHVlIG9mIHplcm8gZGlzYWJsZXMgTUlJCisJbGluayBtb25pdG9yaW5nLiAgQSB2YWx1ZSBvZiAxMDAgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgorCVRoZSB1c2VfY2FycmllciBvcHRpb24sIGJlbG93LCBhZmZlY3RzIGhvdyB0aGUgbGluayBzdGF0ZSBpcworCWRldGVybWluZWQuICBTZWUgdGhlIEhpZ2ggQXZhaWxhYmlsaXR5IHNlY3Rpb24gZm9yIGFkZGl0aW9uYWwKKwlpbmZvcm1hdGlvbi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDAuCisKK21pbl9saW5rcworCisJU3BlY2lmaWVzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBsaW5rcyB0aGF0IG11c3QgYmUgYWN0aXZlIGJlZm9yZQorCWFzc2VydGluZyBjYXJyaWVyLiBJdCBpcyBzaW1pbGFyIHRvIHRoZSBDaXNjbyBFdGhlckNoYW5uZWwgbWluLWxpbmtzCisJZmVhdHVyZS4gVGhpcyBhbGxvd3Mgc2V0dGluZyB0aGUgbWluaW11bSBudW1iZXIgb2YgbWVtYmVyIHBvcnRzIHRoYXQKKwltdXN0IGJlIHVwIChsaW5rLXVwIHN0YXRlKSBiZWZvcmUgbWFya2luZyB0aGUgYm9uZCBkZXZpY2UgYXMgdXAKKwkoY2FycmllciBvbikuIFRoaXMgaXMgdXNlZnVsIGZvciBzaXR1YXRpb25zIHdoZXJlIGhpZ2hlciBsZXZlbCBzZXJ2aWNlcworCXN1Y2ggYXMgY2x1c3RlcmluZyB3YW50IHRvIGVuc3VyZSBhIG1pbmltdW0gbnVtYmVyIG9mIGxvdyBiYW5kd2lkdGgKKwlsaW5rcyBhcmUgYWN0aXZlIGJlZm9yZSBzd2l0Y2hvdmVyLiBUaGlzIG9wdGlvbiBvbmx5IGFmZmVjdCA4MDIuM2FkCisJbW9kZS4KKworCVRoZSBkZWZhdWx0IHZhbHVlIGlzIDAuIFRoaXMgd2lsbCBjYXVzZSBjYXJyaWVyIHRvIGJlIGFzc2VydGVkIChmb3IKKwk4MDIuM2FkIG1vZGUpIHdoZW5ldmVyIHRoZXJlIGlzIGFuIGFjdGl2ZSBhZ2dyZWdhdG9yLCByZWdhcmRsZXNzIG9mIHRoZQorCW51bWJlciBvZiBhdmFpbGFibGUgbGlua3MgaW4gdGhhdCBhZ2dyZWdhdG9yLiBOb3RlIHRoYXQsIGJlY2F1c2UgYW4KKwlhZ2dyZWdhdG9yIGNhbm5vdCBiZSBhY3RpdmUgd2l0aG91dCBhdCBsZWFzdCBvbmUgYXZhaWxhYmxlIGxpbmssCisJc2V0dGluZyB0aGlzIG9wdGlvbiB0byAwIG9yIHRvIDEgaGFzIHRoZSBleGFjdCBzYW1lIGVmZmVjdC4KKworbW9kZQorCisJU3BlY2lmaWVzIG9uZSBvZiB0aGUgYm9uZGluZyBwb2xpY2llcy4gVGhlIGRlZmF1bHQgaXMKKwliYWxhbmNlLXJyIChyb3VuZCByb2JpbikuICBQb3NzaWJsZSB2YWx1ZXMgYXJlOgorCisJYmFsYW5jZS1yciBvciAwCisKKwkJUm91bmQtcm9iaW4gcG9saWN5OiBUcmFuc21pdCBwYWNrZXRzIGluIHNlcXVlbnRpYWwKKwkJb3JkZXIgZnJvbSB0aGUgZmlyc3QgYXZhaWxhYmxlIHNsYXZlIHRocm91Z2ggdGhlCisJCWxhc3QuICBUaGlzIG1vZGUgcHJvdmlkZXMgbG9hZCBiYWxhbmNpbmcgYW5kIGZhdWx0CisJCXRvbGVyYW5jZS4KKworCWFjdGl2ZS1iYWNrdXAgb3IgMQorCisJCUFjdGl2ZS1iYWNrdXAgcG9saWN5OiBPbmx5IG9uZSBzbGF2ZSBpbiB0aGUgYm9uZCBpcworCQlhY3RpdmUuICBBIGRpZmZlcmVudCBzbGF2ZSBiZWNvbWVzIGFjdGl2ZSBpZiwgYW5kIG9ubHkKKwkJaWYsIHRoZSBhY3RpdmUgc2xhdmUgZmFpbHMuICBUaGUgYm9uZCdzIE1BQyBhZGRyZXNzIGlzCisJCWV4dGVybmFsbHkgdmlzaWJsZSBvbiBvbmx5IG9uZSBwb3J0IChuZXR3b3JrIGFkYXB0ZXIpCisJCXRvIGF2b2lkIGNvbmZ1c2luZyB0aGUgc3dpdGNoLgorCisJCUluIGJvbmRpbmcgdmVyc2lvbiAyLjYuMiBvciBsYXRlciwgd2hlbiBhIGZhaWxvdmVyCisJCW9jY3VycyBpbiBhY3RpdmUtYmFja3VwIG1vZGUsIGJvbmRpbmcgd2lsbCBpc3N1ZSBvbmUKKwkJb3IgbW9yZSBncmF0dWl0b3VzIEFSUHMgb24gdGhlIG5ld2x5IGFjdGl2ZSBzbGF2ZS4KKwkJT25lIGdyYXR1aXRvdXMgQVJQIGlzIGlzc3VlZCBmb3IgdGhlIGJvbmRpbmcgbWFzdGVyCisJCWludGVyZmFjZSBhbmQgZWFjaCBWTEFOIGludGVyZmFjZXMgY29uZmlndXJlZCBhYm92ZQorCQlpdCwgcHJvdmlkZWQgdGhhdCB0aGUgaW50ZXJmYWNlIGhhcyBhdCBsZWFzdCBvbmUgSVAKKwkJYWRkcmVzcyBjb25maWd1cmVkLiAgR3JhdHVpdG91cyBBUlBzIGlzc3VlZCBmb3IgVkxBTgorCQlpbnRlcmZhY2VzIGFyZSB0YWdnZWQgd2l0aCB0aGUgYXBwcm9wcmlhdGUgVkxBTiBpZC4KKworCQlUaGlzIG1vZGUgcHJvdmlkZXMgZmF1bHQgdG9sZXJhbmNlLiAgVGhlIHByaW1hcnkKKwkJb3B0aW9uLCBkb2N1bWVudGVkIGJlbG93LCBhZmZlY3RzIHRoZSBiZWhhdmlvciBvZiB0aGlzCisJCW1vZGUuCisKKwliYWxhbmNlLXhvciBvciAyCisKKwkJWE9SIHBvbGljeTogVHJhbnNtaXQgYmFzZWQgb24gdGhlIHNlbGVjdGVkIHRyYW5zbWl0CisJCWhhc2ggcG9saWN5LiAgVGhlIGRlZmF1bHQgcG9saWN5IGlzIGEgc2ltcGxlIFsoc291cmNlCisJCU1BQyBhZGRyZXNzIFhPUidkIHdpdGggZGVzdGluYXRpb24gTUFDIGFkZHJlc3MgWE9SCisJCXBhY2tldCB0eXBlIElEKSBtb2R1bG8gc2xhdmUgY291bnRdLiAgQWx0ZXJuYXRlIHRyYW5zbWl0CisJCXBvbGljaWVzIG1heSBiZQlzZWxlY3RlZCB2aWEgdGhlIHhtaXRfaGFzaF9wb2xpY3kgb3B0aW9uLAorCQlkZXNjcmliZWQgYmVsb3cuCisKKwkJVGhpcyBtb2RlIHByb3ZpZGVzIGxvYWQgYmFsYW5jaW5nIGFuZCBmYXVsdCB0b2xlcmFuY2UuCisKKwlicm9hZGNhc3Qgb3IgMworCisJCUJyb2FkY2FzdCBwb2xpY3k6IHRyYW5zbWl0cyBldmVyeXRoaW5nIG9uIGFsbCBzbGF2ZQorCQlpbnRlcmZhY2VzLiAgVGhpcyBtb2RlIHByb3ZpZGVzIGZhdWx0IHRvbGVyYW5jZS4KKworCTgwMi4zYWQgb3IgNAorCisJCUlFRUUgODAyLjNhZCBEeW5hbWljIGxpbmsgYWdncmVnYXRpb24uICBDcmVhdGVzCisJCWFnZ3JlZ2F0aW9uIGdyb3VwcyB0aGF0IHNoYXJlIHRoZSBzYW1lIHNwZWVkIGFuZAorCQlkdXBsZXggc2V0dGluZ3MuICBVdGlsaXplcyBhbGwgc2xhdmVzIGluIHRoZSBhY3RpdmUKKwkJYWdncmVnYXRvciBhY2NvcmRpbmcgdG8gdGhlIDgwMi4zYWQgc3BlY2lmaWNhdGlvbi4KKworCQlTbGF2ZSBzZWxlY3Rpb24gZm9yIG91dGdvaW5nIHRyYWZmaWMgaXMgZG9uZSBhY2NvcmRpbmcKKwkJdG8gdGhlIHRyYW5zbWl0IGhhc2ggcG9saWN5LCB3aGljaCBtYXkgYmUgY2hhbmdlZCBmcm9tCisJCXRoZSBkZWZhdWx0IHNpbXBsZSBYT1IgcG9saWN5IHZpYSB0aGUgeG1pdF9oYXNoX3BvbGljeQorCQlvcHRpb24sIGRvY3VtZW50ZWQgYmVsb3cuICBOb3RlIHRoYXQgbm90IGFsbCB0cmFuc21pdAorCQlwb2xpY2llcyBtYXkgYmUgODAyLjNhZCBjb21wbGlhbnQsIHBhcnRpY3VsYXJseSBpbgorCQlyZWdhcmRzIHRvIHRoZSBwYWNrZXQgbWlzLW9yZGVyaW5nIHJlcXVpcmVtZW50cyBvZgorCQlzZWN0aW9uIDQzLjIuNCBvZiB0aGUgODAyLjNhZCBzdGFuZGFyZC4gIERpZmZlcmluZworCQlwZWVyIGltcGxlbWVudGF0aW9ucyB3aWxsIGhhdmUgdmFyeWluZyB0b2xlcmFuY2VzIGZvcgorCQlub25jb21wbGlhbmNlLgorCisJCVByZXJlcXVpc2l0ZXM6CisKKwkJMS4gRXRodG9vbCBzdXBwb3J0IGluIHRoZSBiYXNlIGRyaXZlcnMgZm9yIHJldHJpZXZpbmcKKwkJdGhlIHNwZWVkIGFuZCBkdXBsZXggb2YgZWFjaCBzbGF2ZS4KKworCQkyLiBBIHN3aXRjaCB0aGF0IHN1cHBvcnRzIElFRUUgODAyLjNhZCBEeW5hbWljIGxpbmsKKwkJYWdncmVnYXRpb24uCisKKwkJTW9zdCBzd2l0Y2hlcyB3aWxsIHJlcXVpcmUgc29tZSB0eXBlIG9mIGNvbmZpZ3VyYXRpb24KKwkJdG8gZW5hYmxlIDgwMi4zYWQgbW9kZS4KKworCWJhbGFuY2UtdGxiIG9yIDUKKworCQlBZGFwdGl2ZSB0cmFuc21pdCBsb2FkIGJhbGFuY2luZzogY2hhbm5lbCBib25kaW5nIHRoYXQKKwkJZG9lcyBub3QgcmVxdWlyZSBhbnkgc3BlY2lhbCBzd2l0Y2ggc3VwcG9ydC4KKworCQlJbiB0bGJfZHluYW1pY19sYj0xIG1vZGU7IHRoZSBvdXRnb2luZyB0cmFmZmljIGlzCisJCWRpc3RyaWJ1dGVkIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBsb2FkIChjb21wdXRlZAorCQlyZWxhdGl2ZSB0byB0aGUgc3BlZWQpIG9uIGVhY2ggc2xhdmUuCisKKwkJSW4gdGxiX2R5bmFtaWNfbGI9MCBtb2RlOyB0aGUgbG9hZCBiYWxhbmNpbmcgYmFzZWQgb24KKwkJY3VycmVudCBsb2FkIGlzIGRpc2FibGVkIGFuZCB0aGUgbG9hZCBpcyBkaXN0cmlidXRlZAorCQlvbmx5IHVzaW5nIHRoZSBoYXNoIGRpc3RyaWJ1dGlvbi4KKworCQlJbmNvbWluZyB0cmFmZmljIGlzIHJlY2VpdmVkIGJ5IHRoZSBjdXJyZW50IHNsYXZlLgorCQlJZiB0aGUgcmVjZWl2aW5nIHNsYXZlIGZhaWxzLCBhbm90aGVyIHNsYXZlIHRha2VzIG92ZXIKKwkJdGhlIE1BQyBhZGRyZXNzIG9mIHRoZSBmYWlsZWQgcmVjZWl2aW5nIHNsYXZlLgorCisJCVByZXJlcXVpc2l0ZToKKworCQlFdGh0b29sIHN1cHBvcnQgaW4gdGhlIGJhc2UgZHJpdmVycyBmb3IgcmV0cmlldmluZyB0aGUKKwkJc3BlZWQgb2YgZWFjaCBzbGF2ZS4KKworCWJhbGFuY2UtYWxiIG9yIDYKKworCQlBZGFwdGl2ZSBsb2FkIGJhbGFuY2luZzogaW5jbHVkZXMgYmFsYW5jZS10bGIgcGx1cworCQlyZWNlaXZlIGxvYWQgYmFsYW5jaW5nIChybGIpIGZvciBJUFY0IHRyYWZmaWMsIGFuZAorCQlkb2VzIG5vdCByZXF1aXJlIGFueSBzcGVjaWFsIHN3aXRjaCBzdXBwb3J0LiAgVGhlCisJCXJlY2VpdmUgbG9hZCBiYWxhbmNpbmcgaXMgYWNoaWV2ZWQgYnkgQVJQIG5lZ290aWF0aW9uLgorCQlUaGUgYm9uZGluZyBkcml2ZXIgaW50ZXJjZXB0cyB0aGUgQVJQIFJlcGxpZXMgc2VudCBieQorCQl0aGUgbG9jYWwgc3lzdGVtIG9uIHRoZWlyIHdheSBvdXQgYW5kIG92ZXJ3cml0ZXMgdGhlCisJCXNvdXJjZSBoYXJkd2FyZSBhZGRyZXNzIHdpdGggdGhlIHVuaXF1ZSBoYXJkd2FyZQorCQlhZGRyZXNzIG9mIG9uZSBvZiB0aGUgc2xhdmVzIGluIHRoZSBib25kIHN1Y2ggdGhhdAorCQlkaWZmZXJlbnQgcGVlcnMgdXNlIGRpZmZlcmVudCBoYXJkd2FyZSBhZGRyZXNzZXMgZm9yCisJCXRoZSBzZXJ2ZXIuCisKKwkJUmVjZWl2ZSB0cmFmZmljIGZyb20gY29ubmVjdGlvbnMgY3JlYXRlZCBieSB0aGUgc2VydmVyCisJCWlzIGFsc28gYmFsYW5jZWQuICBXaGVuIHRoZSBsb2NhbCBzeXN0ZW0gc2VuZHMgYW4gQVJQCisJCVJlcXVlc3QgdGhlIGJvbmRpbmcgZHJpdmVyIGNvcGllcyBhbmQgc2F2ZXMgdGhlIHBlZXIncworCQlJUCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBBUlAgcGFja2V0LiAgV2hlbiB0aGUgQVJQCisJCVJlcGx5IGFycml2ZXMgZnJvbSB0aGUgcGVlciwgaXRzIGhhcmR3YXJlIGFkZHJlc3MgaXMKKwkJcmV0cmlldmVkIGFuZCB0aGUgYm9uZGluZyBkcml2ZXIgaW5pdGlhdGVzIGFuIEFSUAorCQlyZXBseSB0byB0aGlzIHBlZXIgYXNzaWduaW5nIGl0IHRvIG9uZSBvZiB0aGUgc2xhdmVzCisJCWluIHRoZSBib25kLiAgQSBwcm9ibGVtYXRpYyBvdXRjb21lIG9mIHVzaW5nIEFSUAorCQluZWdvdGlhdGlvbiBmb3IgYmFsYW5jaW5nIGlzIHRoYXQgZWFjaCB0aW1lIHRoYXQgYW4KKwkJQVJQIHJlcXVlc3QgaXMgYnJvYWRjYXN0IGl0IHVzZXMgdGhlIGhhcmR3YXJlIGFkZHJlc3MKKwkJb2YgdGhlIGJvbmQuICBIZW5jZSwgcGVlcnMgbGVhcm4gdGhlIGhhcmR3YXJlIGFkZHJlc3MKKwkJb2YgdGhlIGJvbmQgYW5kIHRoZSBiYWxhbmNpbmcgb2YgcmVjZWl2ZSB0cmFmZmljCisJCWNvbGxhcHNlcyB0byB0aGUgY3VycmVudCBzbGF2ZS4gIFRoaXMgaXMgaGFuZGxlZCBieQorCQlzZW5kaW5nIHVwZGF0ZXMgKEFSUCBSZXBsaWVzKSB0byBhbGwgdGhlIHBlZXJzIHdpdGgKKwkJdGhlaXIgaW5kaXZpZHVhbGx5IGFzc2lnbmVkIGhhcmR3YXJlIGFkZHJlc3Mgc3VjaCB0aGF0CisJCXRoZSB0cmFmZmljIGlzIHJlZGlzdHJpYnV0ZWQuICBSZWNlaXZlIHRyYWZmaWMgaXMgYWxzbworCQlyZWRpc3RyaWJ1dGVkIHdoZW4gYSBuZXcgc2xhdmUgaXMgYWRkZWQgdG8gdGhlIGJvbmQKKwkJYW5kIHdoZW4gYW4gaW5hY3RpdmUgc2xhdmUgaXMgcmUtYWN0aXZhdGVkLiAgVGhlCisJCXJlY2VpdmUgbG9hZCBpcyBkaXN0cmlidXRlZCBzZXF1ZW50aWFsbHkgKHJvdW5kIHJvYmluKQorCQlhbW9uZyB0aGUgZ3JvdXAgb2YgaGlnaGVzdCBzcGVlZCBzbGF2ZXMgaW4gdGhlIGJvbmQuCisKKwkJV2hlbiBhIGxpbmsgaXMgcmVjb25uZWN0ZWQgb3IgYSBuZXcgc2xhdmUgam9pbnMgdGhlCisJCWJvbmQgdGhlIHJlY2VpdmUgdHJhZmZpYyBpcyByZWRpc3RyaWJ1dGVkIGFtb25nIGFsbAorCQlhY3RpdmUgc2xhdmVzIGluIHRoZSBib25kIGJ5IGluaXRpYXRpbmcgQVJQIFJlcGxpZXMKKwkJd2l0aCB0aGUgc2VsZWN0ZWQgTUFDIGFkZHJlc3MgdG8gZWFjaCBvZiB0aGUKKwkJY2xpZW50cy4gVGhlIHVwZGVsYXkgcGFyYW1ldGVyIChkZXRhaWxlZCBiZWxvdykgbXVzdAorCQliZSBzZXQgdG8gYSB2YWx1ZSBlcXVhbCBvciBncmVhdGVyIHRoYW4gdGhlIHN3aXRjaCdzCisJCWZvcndhcmRpbmcgZGVsYXkgc28gdGhhdCB0aGUgQVJQIFJlcGxpZXMgc2VudCB0byB0aGUKKwkJcGVlcnMgd2lsbCBub3QgYmUgYmxvY2tlZCBieSB0aGUgc3dpdGNoLgorCisJCVByZXJlcXVpc2l0ZXM6CisKKwkJMS4gRXRodG9vbCBzdXBwb3J0IGluIHRoZSBiYXNlIGRyaXZlcnMgZm9yIHJldHJpZXZpbmcKKwkJdGhlIHNwZWVkIG9mIGVhY2ggc2xhdmUuCisKKwkJMi4gQmFzZSBkcml2ZXIgc3VwcG9ydCBmb3Igc2V0dGluZyB0aGUgaGFyZHdhcmUKKwkJYWRkcmVzcyBvZiBhIGRldmljZSB3aGlsZSBpdCBpcyBvcGVuLiAgVGhpcyBpcworCQlyZXF1aXJlZCBzbyB0aGF0IHRoZXJlIHdpbGwgYWx3YXlzIGJlIG9uZSBzbGF2ZSBpbiB0aGUKKwkJdGVhbSB1c2luZyB0aGUgYm9uZCBoYXJkd2FyZSBhZGRyZXNzICh0aGUKKwkJY3Vycl9hY3RpdmVfc2xhdmUpIHdoaWxlIGhhdmluZyBhIHVuaXF1ZSBoYXJkd2FyZQorCQlhZGRyZXNzIGZvciBlYWNoIHNsYXZlIGluIHRoZSBib25kLiAgSWYgdGhlCisJCWN1cnJfYWN0aXZlX3NsYXZlIGZhaWxzIGl0cyBoYXJkd2FyZSBhZGRyZXNzIGlzCisJCXN3YXBwZWQgd2l0aCB0aGUgbmV3IGN1cnJfYWN0aXZlX3NsYXZlIHRoYXQgd2FzCisJCWNob3Nlbi4KKworbnVtX2dyYXRfYXJwCitudW1fdW5zb2xfbmEKKworCVNwZWNpZnkgdGhlIG51bWJlciBvZiBwZWVyIG5vdGlmaWNhdGlvbnMgKGdyYXR1aXRvdXMgQVJQcyBhbmQKKwl1bnNvbGljaXRlZCBJUHY2IE5laWdoYm9yIEFkdmVydGlzZW1lbnRzKSB0byBiZSBpc3N1ZWQgYWZ0ZXIgYQorCWZhaWxvdmVyIGV2ZW50LiAgQXMgc29vbiBhcyB0aGUgbGluayBpcyB1cCBvbiB0aGUgbmV3IHNsYXZlCisJKHBvc3NpYmx5IGltbWVkaWF0ZWx5KSBhIHBlZXIgbm90aWZpY2F0aW9uIGlzIHNlbnQgb24gdGhlCisJYm9uZGluZyBkZXZpY2UgYW5kIGVhY2ggVkxBTiBzdWItZGV2aWNlLiAgVGhpcyBpcyByZXBlYXRlZCBhdAorCWVhY2ggbGluayBtb25pdG9yIGludGVydmFsIChhcnBfaW50ZXJ2YWwgb3IgbWlpbW9uLCB3aGljaGV2ZXIKKwlpcyBhY3RpdmUpIGlmIHRoZSBudW1iZXIgaXMgZ3JlYXRlciB0aGFuIDEuCisKKwlUaGUgdmFsaWQgcmFuZ2UgaXMgMCAtIDI1NTsgdGhlIGRlZmF1bHQgdmFsdWUgaXMgMS4gIFRoZXNlIG9wdGlvbnMKKwlhZmZlY3Qgb25seSB0aGUgYWN0aXZlLWJhY2t1cCBtb2RlLiAgVGhlc2Ugb3B0aW9ucyB3ZXJlIGFkZGVkIGZvcgorCWJvbmRpbmcgdmVyc2lvbnMgMy4zLjAgYW5kIDMuNC4wIHJlc3BlY3RpdmVseS4KKworCUZyb20gTGludXggMy4wIGFuZCBib25kaW5nIHZlcnNpb24gMy43LjEsIHRoZXNlIG5vdGlmaWNhdGlvbnMKKwlhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBpcHY0IGFuZCBpcHY2IGNvZGUgYW5kIHRoZSBudW1iZXJzIG9mCisJcmVwZXRpdGlvbnMgY2Fubm90IGJlIHNldCBpbmRlcGVuZGVudGx5LgorCitwYWNrZXRzX3Blcl9zbGF2ZQorCisJU3BlY2lmeSB0aGUgbnVtYmVyIG9mIHBhY2tldHMgdG8gdHJhbnNtaXQgdGhyb3VnaCBhIHNsYXZlIGJlZm9yZQorCW1vdmluZyB0byB0aGUgbmV4dCBvbmUuIFdoZW4gc2V0IHRvIDAgdGhlbiBhIHNsYXZlIGlzIGNob3NlbiBhdAorCXJhbmRvbS4KKworCVRoZSB2YWxpZCByYW5nZSBpcyAwIC0gNjU1MzU7IHRoZSBkZWZhdWx0IHZhbHVlIGlzIDEuIFRoaXMgb3B0aW9uCisJaGFzIGVmZmVjdCBvbmx5IGluIGJhbGFuY2UtcnIgbW9kZS4KKworcHJpbWFyeQorCisJQSBzdHJpbmcgKGV0aDAsIGV0aDIsIGV0Yykgc3BlY2lmeWluZyB3aGljaCBzbGF2ZSBpcyB0aGUKKwlwcmltYXJ5IGRldmljZS4gIFRoZSBzcGVjaWZpZWQgZGV2aWNlIHdpbGwgYWx3YXlzIGJlIHRoZQorCWFjdGl2ZSBzbGF2ZSB3aGlsZSBpdCBpcyBhdmFpbGFibGUuICBPbmx5IHdoZW4gdGhlIHByaW1hcnkgaXMKKwlvZmYtbGluZSB3aWxsIGFsdGVybmF0ZSBkZXZpY2VzIGJlIHVzZWQuICBUaGlzIGlzIHVzZWZ1bCB3aGVuCisJb25lIHNsYXZlIGlzIHByZWZlcnJlZCBvdmVyIGFub3RoZXIsIGUuZy4sIHdoZW4gb25lIHNsYXZlIGhhcworCWhpZ2hlciB0aHJvdWdocHV0IHRoYW4gYW5vdGhlci4KKworCVRoZSBwcmltYXJ5IG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBhY3RpdmUtYmFja3VwKDEpLAorCWJhbGFuY2UtdGxiICg1KSBhbmQgYmFsYW5jZS1hbGIgKDYpIG1vZGUuCisKK3ByaW1hcnlfcmVzZWxlY3QKKworCVNwZWNpZmllcyB0aGUgcmVzZWxlY3Rpb24gcG9saWN5IGZvciB0aGUgcHJpbWFyeSBzbGF2ZS4gIFRoaXMKKwlhZmZlY3RzIGhvdyB0aGUgcHJpbWFyeSBzbGF2ZSBpcyBjaG9zZW4gdG8gYmVjb21lIHRoZSBhY3RpdmUgc2xhdmUKKwl3aGVuIGZhaWx1cmUgb2YgdGhlIGFjdGl2ZSBzbGF2ZSBvciByZWNvdmVyeSBvZiB0aGUgcHJpbWFyeSBzbGF2ZQorCW9jY3Vycy4gIFRoaXMgb3B0aW9uIGlzIGRlc2lnbmVkIHRvIHByZXZlbnQgZmxpcC1mbG9wcGluZyBiZXR3ZWVuCisJdGhlIHByaW1hcnkgc2xhdmUgYW5kIG90aGVyIHNsYXZlcy4gIFBvc3NpYmxlIHZhbHVlcyBhcmU6CisKKwlhbHdheXMgb3IgMCAoZGVmYXVsdCkKKworCQlUaGUgcHJpbWFyeSBzbGF2ZSBiZWNvbWVzIHRoZSBhY3RpdmUgc2xhdmUgd2hlbmV2ZXIgaXQKKwkJY29tZXMgYmFjayB1cC4KKworCWJldHRlciBvciAxCisKKwkJVGhlIHByaW1hcnkgc2xhdmUgYmVjb21lcyB0aGUgYWN0aXZlIHNsYXZlIHdoZW4gaXQgY29tZXMKKwkJYmFjayB1cCwgaWYgdGhlIHNwZWVkIGFuZCBkdXBsZXggb2YgdGhlIHByaW1hcnkgc2xhdmUgaXMKKwkJYmV0dGVyIHRoYW4gdGhlIHNwZWVkIGFuZCBkdXBsZXggb2YgdGhlIGN1cnJlbnQgYWN0aXZlCisJCXNsYXZlLgorCisJZmFpbHVyZSBvciAyCisKKwkJVGhlIHByaW1hcnkgc2xhdmUgYmVjb21lcyB0aGUgYWN0aXZlIHNsYXZlIG9ubHkgaWYgdGhlCisJCWN1cnJlbnQgYWN0aXZlIHNsYXZlIGZhaWxzIGFuZCB0aGUgcHJpbWFyeSBzbGF2ZSBpcyB1cC4KKworCVRoZSBwcmltYXJ5X3Jlc2VsZWN0IHNldHRpbmcgaXMgaWdub3JlZCBpbiB0d28gY2FzZXM6CisKKwkJSWYgbm8gc2xhdmVzIGFyZSBhY3RpdmUsIHRoZSBmaXJzdCBzbGF2ZSB0byByZWNvdmVyIGlzCisJCW1hZGUgdGhlIGFjdGl2ZSBzbGF2ZS4KKworCQlXaGVuIGluaXRpYWxseSBlbnNsYXZlZCwgdGhlIHByaW1hcnkgc2xhdmUgaXMgYWx3YXlzIG1hZGUKKwkJdGhlIGFjdGl2ZSBzbGF2ZS4KKworCUNoYW5naW5nIHRoZSBwcmltYXJ5X3Jlc2VsZWN0IHBvbGljeSB2aWEgc3lzZnMgd2lsbCBjYXVzZSBhbgorCWltbWVkaWF0ZSBzZWxlY3Rpb24gb2YgdGhlIGJlc3QgYWN0aXZlIHNsYXZlIGFjY29yZGluZyB0byB0aGUgbmV3CisJcG9saWN5LiAgVGhpcyBtYXkgb3IgbWF5IG5vdCByZXN1bHQgaW4gYSBjaGFuZ2Ugb2YgdGhlIGFjdGl2ZQorCXNsYXZlLCBkZXBlbmRpbmcgdXBvbiB0aGUgY2lyY3Vtc3RhbmNlcy4KKworCVRoaXMgb3B0aW9uIHdhcyBhZGRlZCBmb3IgYm9uZGluZyB2ZXJzaW9uIDMuNi4wLgorCit0bGJfZHluYW1pY19sYgorCisJU3BlY2lmaWVzIGlmIGR5bmFtaWMgc2h1ZmZsaW5nIG9mIGZsb3dzIGlzIGVuYWJsZWQgaW4gdGxiCisJbW9kZS4gVGhlIHZhbHVlIGhhcyBubyBlZmZlY3Qgb24gYW55IG90aGVyIG1vZGVzLgorCisJVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGxiIG1vZGUgaXMgdG8gc2h1ZmZsZSBhY3RpdmUgZmxvd3MgYWNyb3NzCisJc2xhdmVzIGJhc2VkIG9uIHRoZSBsb2FkIGluIHRoYXQgaW50ZXJ2YWwuIFRoaXMgZ2l2ZXMgbmljZSBsYgorCWNoYXJhY3RlcmlzdGljcyBidXQgY2FuIGNhdXNlIHBhY2tldCByZW9yZGVyaW5nLiBJZiByZS1vcmRlcmluZyBpcworCWEgY29uY2VybiB1c2UgdGhpcyB2YXJpYWJsZSB0byBkaXNhYmxlIGZsb3cgc2h1ZmZsaW5nIGFuZCByZWx5IG9uCisJbG9hZCBiYWxhbmNpbmcgcHJvdmlkZWQgc29sZWx5IGJ5IHRoZSBoYXNoIGRpc3RyaWJ1dGlvbi4KKwl4bWl0LWhhc2gtcG9saWN5IGNhbiBiZSB1c2VkIHRvIHNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgaGFzaGluZyBmb3IKKwl0aGUgc2V0dXAuCisKKwlUaGUgc3lzZnMgZW50cnkgY2FuIGJlIHVzZWQgdG8gY2hhbmdlIHRoZSBzZXR0aW5nIHBlciBib25kIGRldmljZQorCWFuZCB0aGUgaW5pdGlhbCB2YWx1ZSBpcyBkZXJpdmVkIGZyb20gdGhlIG1vZHVsZSBwYXJhbWV0ZXIuIFRoZQorCXN5c2ZzIGVudHJ5IGlzIGFsbG93ZWQgdG8gYmUgY2hhbmdlZCBvbmx5IGlmIHRoZSBib25kIGRldmljZSBpcworCWRvd24uCisKKwlUaGUgZGVmYXVsdCB2YWx1ZSBpcyAiMSIgdGhhdCBlbmFibGVzIGZsb3cgc2h1ZmZsaW5nIHdoaWxlIHZhbHVlICIwIgorCWRpc2FibGVzIGl0LiBUaGlzIG9wdGlvbiB3YXMgYWRkZWQgaW4gYm9uZGluZyBkcml2ZXIgMy43LjEKKworCit1cGRlbGF5CisKKwlTcGVjaWZpZXMgdGhlIHRpbWUsIGluIG1pbGxpc2Vjb25kcywgdG8gd2FpdCBiZWZvcmUgZW5hYmxpbmcgYQorCXNsYXZlIGFmdGVyIGEgbGluayByZWNvdmVyeSBoYXMgYmVlbiBkZXRlY3RlZC4gIFRoaXMgb3B0aW9uIGlzCisJb25seSB2YWxpZCBmb3IgdGhlIG1paW1vbiBsaW5rIG1vbml0b3IuICBUaGUgdXBkZWxheSB2YWx1ZQorCXNob3VsZCBiZSBhIG11bHRpcGxlIG9mIHRoZSBtaWltb24gdmFsdWU7IGlmIG5vdCwgaXQgd2lsbCBiZQorCXJvdW5kZWQgZG93biB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZS4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDAuCisKK3VzZV9jYXJyaWVyCisKKwlTcGVjaWZpZXMgd2hldGhlciBvciBub3QgbWlpbW9uIHNob3VsZCB1c2UgTUlJIG9yIEVUSFRPT0wKKwlpb2N0bHMgdnMuIG5ldGlmX2NhcnJpZXJfb2soKSB0byBkZXRlcm1pbmUgdGhlIGxpbmsKKwlzdGF0dXMuIFRoZSBNSUkgb3IgRVRIVE9PTCBpb2N0bHMgYXJlIGxlc3MgZWZmaWNpZW50IGFuZAorCXV0aWxpemUgYSBkZXByZWNhdGVkIGNhbGxpbmcgc2VxdWVuY2Ugd2l0aGluIHRoZSBrZXJuZWwuICBUaGUKKwluZXRpZl9jYXJyaWVyX29rKCkgcmVsaWVzIG9uIHRoZSBkZXZpY2UgZHJpdmVyIHRvIG1haW50YWluIGl0cworCXN0YXRlIHdpdGggbmV0aWZfY2Fycmllcl9vbi9vZmY7IGF0IHRoaXMgd3JpdGluZywgbW9zdCwgYnV0CisJbm90IGFsbCwgZGV2aWNlIGRyaXZlcnMgc3VwcG9ydCB0aGlzIGZhY2lsaXR5LgorCisJSWYgYm9uZGluZyBpbnNpc3RzIHRoYXQgdGhlIGxpbmsgaXMgdXAgd2hlbiBpdCBzaG91bGQgbm90IGJlLAorCWl0IG1heSBiZSB0aGF0IHlvdXIgbmV0d29yayBkZXZpY2UgZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQKKwluZXRpZl9jYXJyaWVyX29uL29mZi4gIFRoZSBkZWZhdWx0IHN0YXRlIGZvciBuZXRpZl9jYXJyaWVyIGlzCisJImNhcnJpZXIgb24sIiBzbyBpZiBhIGRyaXZlciBkb2VzIG5vdCBzdXBwb3J0IG5ldGlmX2NhcnJpZXIsCisJaXQgd2lsbCBhcHBlYXIgYXMgaWYgdGhlIGxpbmsgaXMgYWx3YXlzIHVwLiAgSW4gdGhpcyBjYXNlLAorCXNldHRpbmcgdXNlX2NhcnJpZXIgdG8gMCB3aWxsIGNhdXNlIGJvbmRpbmcgdG8gcmV2ZXJ0IHRvIHRoZQorCU1JSSAvIEVUSFRPT0wgaW9jdGwgbWV0aG9kIHRvIGRldGVybWluZSB0aGUgbGluayBzdGF0ZS4KKworCUEgdmFsdWUgb2YgMSBlbmFibGVzIHRoZSB1c2Ugb2YgbmV0aWZfY2Fycmllcl9vaygpLCBhIHZhbHVlIG9mCisJMCB3aWxsIHVzZSB0aGUgZGVwcmVjYXRlZCBNSUkgLyBFVEhUT09MIGlvY3Rscy4gIFRoZSBkZWZhdWx0CisJdmFsdWUgaXMgMS4KKworeG1pdF9oYXNoX3BvbGljeQorCisJU2VsZWN0cyB0aGUgdHJhbnNtaXQgaGFzaCBwb2xpY3kgdG8gdXNlIGZvciBzbGF2ZSBzZWxlY3Rpb24gaW4KKwliYWxhbmNlLXhvciwgODAyLjNhZCwgYW5kIHRsYiBtb2Rlcy4gIFBvc3NpYmxlIHZhbHVlcyBhcmU6CisKKwlsYXllcjIKKworCQlVc2VzIFhPUiBvZiBoYXJkd2FyZSBNQUMgYWRkcmVzc2VzIGFuZCBwYWNrZXQgdHlwZSBJRAorCQlmaWVsZCB0byBnZW5lcmF0ZSB0aGUgaGFzaC4gVGhlIGZvcm11bGEgaXMKKworCQloYXNoID0gc291cmNlIE1BQyBYT1IgZGVzdGluYXRpb24gTUFDIFhPUiBwYWNrZXQgdHlwZSBJRAorCQlzbGF2ZSBudW1iZXIgPSBoYXNoIG1vZHVsbyBzbGF2ZSBjb3VudAorCisJCVRoaXMgYWxnb3JpdGhtIHdpbGwgcGxhY2UgYWxsIHRyYWZmaWMgdG8gYSBwYXJ0aWN1bGFyCisJCW5ldHdvcmsgcGVlciBvbiB0aGUgc2FtZSBzbGF2ZS4KKworCQlUaGlzIGFsZ29yaXRobSBpcyA4MDIuM2FkIGNvbXBsaWFudC4KKworCWxheWVyMiszCisKKwkJVGhpcyBwb2xpY3kgdXNlcyBhIGNvbWJpbmF0aW9uIG9mIGxheWVyMiBhbmQgbGF5ZXIzCisJCXByb3RvY29sIGluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIHRoZSBoYXNoLgorCisJCVVzZXMgWE9SIG9mIGhhcmR3YXJlIE1BQyBhZGRyZXNzZXMgYW5kIElQIGFkZHJlc3NlcyB0bworCQlnZW5lcmF0ZSB0aGUgaGFzaC4gIFRoZSBmb3JtdWxhIGlzCisKKwkJaGFzaCA9IHNvdXJjZSBNQUMgWE9SIGRlc3RpbmF0aW9uIE1BQyBYT1IgcGFja2V0IHR5cGUgSUQKKwkJaGFzaCA9IGhhc2ggWE9SIHNvdXJjZSBJUCBYT1IgZGVzdGluYXRpb24gSVAKKwkJaGFzaCA9IGhhc2ggWE9SIChoYXNoIFJTSElGVCAxNikKKwkJaGFzaCA9IGhhc2ggWE9SIChoYXNoIFJTSElGVCA4KQorCQlBbmQgdGhlbiBoYXNoIGlzIHJlZHVjZWQgbW9kdWxvIHNsYXZlIGNvdW50LgorCisJCUlmIHRoZSBwcm90b2NvbCBpcyBJUHY2IHRoZW4gdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24KKwkJYWRkcmVzc2VzIGFyZSBmaXJzdCBoYXNoZWQgdXNpbmcgaXB2Nl9hZGRyX2hhc2guCisKKwkJVGhpcyBhbGdvcml0aG0gd2lsbCBwbGFjZSBhbGwgdHJhZmZpYyB0byBhIHBhcnRpY3VsYXIKKwkJbmV0d29yayBwZWVyIG9uIHRoZSBzYW1lIHNsYXZlLiAgRm9yIG5vbi1JUCB0cmFmZmljLAorCQl0aGUgZm9ybXVsYSBpcyB0aGUgc2FtZSBhcyBmb3IgdGhlIGxheWVyMiB0cmFuc21pdAorCQloYXNoIHBvbGljeS4KKworCQlUaGlzIHBvbGljeSBpcyBpbnRlbmRlZCB0byBwcm92aWRlIGEgbW9yZSBiYWxhbmNlZAorCQlkaXN0cmlidXRpb24gb2YgdHJhZmZpYyB0aGFuIGxheWVyMiBhbG9uZSwgZXNwZWNpYWxseQorCQlpbiBlbnZpcm9ubWVudHMgd2hlcmUgYSBsYXllcjMgZ2F0ZXdheSBkZXZpY2UgaXMKKwkJcmVxdWlyZWQgdG8gcmVhY2ggbW9zdCBkZXN0aW5hdGlvbnMuCisKKwkJVGhpcyBhbGdvcml0aG0gaXMgODAyLjNhZCBjb21wbGlhbnQuCisKKwlsYXllcjMrNAorCisJCVRoaXMgcG9saWN5IHVzZXMgdXBwZXIgbGF5ZXIgcHJvdG9jb2wgaW5mb3JtYXRpb24sCisJCXdoZW4gYXZhaWxhYmxlLCB0byBnZW5lcmF0ZSB0aGUgaGFzaC4gIFRoaXMgYWxsb3dzIGZvcgorCQl0cmFmZmljIHRvIGEgcGFydGljdWxhciBuZXR3b3JrIHBlZXIgdG8gc3BhbiBtdWx0aXBsZQorCQlzbGF2ZXMsIGFsdGhvdWdoIGEgc2luZ2xlIGNvbm5lY3Rpb24gd2lsbCBub3Qgc3BhbgorCQltdWx0aXBsZSBzbGF2ZXMuCisKKwkJVGhlIGZvcm11bGEgZm9yIHVuZnJhZ21lbnRlZCBUQ1AgYW5kIFVEUCBwYWNrZXRzIGlzCisKKwkJaGFzaCA9IHNvdXJjZSBwb3J0LCBkZXN0aW5hdGlvbiBwb3J0IChhcyBpbiB0aGUgaGVhZGVyKQorCQloYXNoID0gaGFzaCBYT1Igc291cmNlIElQIFhPUiBkZXN0aW5hdGlvbiBJUAorCQloYXNoID0gaGFzaCBYT1IgKGhhc2ggUlNISUZUIDE2KQorCQloYXNoID0gaGFzaCBYT1IgKGhhc2ggUlNISUZUIDgpCisJCUFuZCB0aGVuIGhhc2ggaXMgcmVkdWNlZCBtb2R1bG8gc2xhdmUgY291bnQuCisKKwkJSWYgdGhlIHByb3RvY29sIGlzIElQdjYgdGhlbiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbgorCQlhZGRyZXNzZXMgYXJlIGZpcnN0IGhhc2hlZCB1c2luZyBpcHY2X2FkZHJfaGFzaC4KKworCQlGb3IgZnJhZ21lbnRlZCBUQ1Agb3IgVURQIHBhY2tldHMgYW5kIGFsbCBvdGhlciBJUHY0IGFuZAorCQlJUHY2IHByb3RvY29sIHRyYWZmaWMsIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHBvcnQKKwkJaW5mb3JtYXRpb24gaXMgb21pdHRlZC4gIEZvciBub24tSVAgdHJhZmZpYywgdGhlCisJCWZvcm11bGEgaXMgdGhlIHNhbWUgYXMgZm9yIHRoZSBsYXllcjIgdHJhbnNtaXQgaGFzaAorCQlwb2xpY3kuCisKKwkJVGhpcyBhbGdvcml0aG0gaXMgbm90IGZ1bGx5IDgwMi4zYWQgY29tcGxpYW50LiAgQQorCQlzaW5nbGUgVENQIG9yIFVEUCBjb252ZXJzYXRpb24gY29udGFpbmluZyBib3RoCisJCWZyYWdtZW50ZWQgYW5kIHVuZnJhZ21lbnRlZCBwYWNrZXRzIHdpbGwgc2VlIHBhY2tldHMKKwkJc3RyaXBlZCBhY3Jvc3MgdHdvIGludGVyZmFjZXMuICBUaGlzIG1heSByZXN1bHQgaW4gb3V0CisJCW9mIG9yZGVyIGRlbGl2ZXJ5LiAgTW9zdCB0cmFmZmljIHR5cGVzIHdpbGwgbm90IG1lZXQKKwkJdGhpcyBjcml0ZXJpYSwgYXMgVENQIHJhcmVseSBmcmFnbWVudHMgdHJhZmZpYywgYW5kCisJCW1vc3QgVURQIHRyYWZmaWMgaXMgbm90IGludm9sdmVkIGluIGV4dGVuZGVkCisJCWNvbnZlcnNhdGlvbnMuICBPdGhlciBpbXBsZW1lbnRhdGlvbnMgb2YgODAyLjNhZCBtYXkKKwkJb3IgbWF5IG5vdCB0b2xlcmF0ZSB0aGlzIG5vbmNvbXBsaWFuY2UuCisKKwllbmNhcDIrMworCisJCVRoaXMgcG9saWN5IHVzZXMgdGhlIHNhbWUgZm9ybXVsYSBhcyBsYXllcjIrMyBidXQgaXQKKwkJcmVsaWVzIG9uIHNrYl9mbG93X2Rpc3NlY3QgdG8gb2J0YWluIHRoZSBoZWFkZXIgZmllbGRzCisJCXdoaWNoIG1pZ2h0IHJlc3VsdCBpbiB0aGUgdXNlIG9mIGlubmVyIGhlYWRlcnMgaWYgYW4KKwkJZW5jYXBzdWxhdGlvbiBwcm90b2NvbCBpcyB1c2VkLiBGb3IgZXhhbXBsZSB0aGlzIHdpbGwKKwkJaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2UgZm9yIHR1bm5lbCB1c2VycyBiZWNhdXNlIHRoZQorCQlwYWNrZXRzIHdpbGwgYmUgZGlzdHJpYnV0ZWQgYWNjb3JkaW5nIHRvIHRoZSBlbmNhcHN1bGF0ZWQKKwkJZmxvd3MuCisKKwllbmNhcDMrNAorCisJCVRoaXMgcG9saWN5IHVzZXMgdGhlIHNhbWUgZm9ybXVsYSBhcyBsYXllcjMrNCBidXQgaXQKKwkJcmVsaWVzIG9uIHNrYl9mbG93X2Rpc3NlY3QgdG8gb2J0YWluIHRoZSBoZWFkZXIgZmllbGRzCisJCXdoaWNoIG1pZ2h0IHJlc3VsdCBpbiB0aGUgdXNlIG9mIGlubmVyIGhlYWRlcnMgaWYgYW4KKwkJZW5jYXBzdWxhdGlvbiBwcm90b2NvbCBpcyB1c2VkLiBGb3IgZXhhbXBsZSB0aGlzIHdpbGwKKwkJaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2UgZm9yIHR1bm5lbCB1c2VycyBiZWNhdXNlIHRoZQorCQlwYWNrZXRzIHdpbGwgYmUgZGlzdHJpYnV0ZWQgYWNjb3JkaW5nIHRvIHRoZSBlbmNhcHN1bGF0ZWQKKwkJZmxvd3MuCisKKwlUaGUgZGVmYXVsdCB2YWx1ZSBpcyBsYXllcjIuICBUaGlzIG9wdGlvbiB3YXMgYWRkZWQgaW4gYm9uZGluZworCXZlcnNpb24gMi42LjMuICBJbiBlYXJsaWVyIHZlcnNpb25zIG9mIGJvbmRpbmcsIHRoaXMgcGFyYW1ldGVyCisJZG9lcyBub3QgZXhpc3QsIGFuZCB0aGUgbGF5ZXIyIHBvbGljeSBpcyB0aGUgb25seSBwb2xpY3kuICBUaGUKKwlsYXllcjIrMyB2YWx1ZSB3YXMgYWRkZWQgZm9yIGJvbmRpbmcgdmVyc2lvbiAzLjIuMi4KKworcmVzZW5kX2lnbXAKKworCVNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIElHTVAgbWVtYmVyc2hpcCByZXBvcnRzIHRvIGJlIGlzc3VlZCBhZnRlcgorCWEgZmFpbG92ZXIgZXZlbnQuIE9uZSBtZW1iZXJzaGlwIHJlcG9ydCBpcyBpc3N1ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIKKwl0aGUgZmFpbG92ZXIsIHN1YnNlcXVlbnQgcGFja2V0cyBhcmUgc2VudCBpbiBlYWNoIDIwMG1zIGludGVydmFsLgorCisJVGhlIHZhbGlkIHJhbmdlIGlzIDAgLSAyNTU7IHRoZSBkZWZhdWx0IHZhbHVlIGlzIDEuIEEgdmFsdWUgb2YgMAorCXByZXZlbnRzIHRoZSBJR01QIG1lbWJlcnNoaXAgcmVwb3J0IGZyb20gYmVpbmcgaXNzdWVkIGluIHJlc3BvbnNlCisJdG8gdGhlIGZhaWxvdmVyIGV2ZW50LgorCisJVGhpcyBvcHRpb24gaXMgdXNlZnVsIGZvciBib25kaW5nIG1vZGVzIGJhbGFuY2UtcnIgKDApLCBhY3RpdmUtYmFja3VwCisJKDEpLCBiYWxhbmNlLXRsYiAoNSkgYW5kIGJhbGFuY2UtYWxiICg2KSwgaW4gd2hpY2ggYSBmYWlsb3ZlciBjYW4KKwlzd2l0Y2ggdGhlIElHTVAgdHJhZmZpYyBmcm9tIG9uZSBzbGF2ZSB0byBhbm90aGVyLiAgVGhlcmVmb3JlIGEgZnJlc2gKKwlJR01QIHJlcG9ydCBtdXN0IGJlIGlzc3VlZCB0byBjYXVzZSB0aGUgc3dpdGNoIHRvIGZvcndhcmQgdGhlIGluY29taW5nCisJSUdNUCB0cmFmZmljIG92ZXIgdGhlIG5ld2x5IHNlbGVjdGVkIHNsYXZlLgorCisJVGhpcyBvcHRpb24gd2FzIGFkZGVkIGZvciBib25kaW5nIHZlcnNpb24gMy43LjAuCisKK2xwX2ludGVydmFsCisKKwlTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBzZWNvbmRzIGJldHdlZW4gaW5zdGFuY2VzIHdoZXJlIHRoZSBib25kaW5nCisJZHJpdmVyIHNlbmRzIGxlYXJuaW5nIHBhY2tldHMgdG8gZWFjaCBzbGF2ZXMgcGVlciBzd2l0Y2guCisKKwlUaGUgdmFsaWQgcmFuZ2UgaXMgMSAtIDB4N2ZmZmZmZmY7IHRoZSBkZWZhdWx0IHZhbHVlIGlzIDEuIFRoaXMgT3B0aW9uCisJaGFzIGVmZmVjdCBvbmx5IGluIGJhbGFuY2UtdGxiIGFuZCBiYWxhbmNlLWFsYiBtb2Rlcy4KKworMy4gQ29uZmlndXJpbmcgQm9uZGluZyBEZXZpY2VzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCVlvdSBjYW4gY29uZmlndXJlIGJvbmRpbmcgdXNpbmcgZWl0aGVyIHlvdXIgZGlzdHJvJ3MgbmV0d29yaworaW5pdGlhbGl6YXRpb24gc2NyaXB0cywgb3IgbWFudWFsbHkgdXNpbmcgZWl0aGVyIGlwcm91dGUyIG9yIHRoZQorc3lzZnMgaW50ZXJmYWNlLiAgRGlzdHJvcyBnZW5lcmFsbHkgdXNlIG9uZSBvZiB0aHJlZSBwYWNrYWdlcyBmb3IgdGhlCituZXR3b3JrIGluaXRpYWxpemF0aW9uIHNjcmlwdHM6IGluaXRzY3JpcHRzLCBzeXNjb25maWcgb3IgaW50ZXJmYWNlcy4KK1JlY2VudCB2ZXJzaW9ucyBvZiB0aGVzZSBwYWNrYWdlcyBoYXZlIHN1cHBvcnQgZm9yIGJvbmRpbmcsIHdoaWxlIG9sZGVyCit2ZXJzaW9ucyBkbyBub3QuCisKKwlXZSB3aWxsIGZpcnN0IGRlc2NyaWJlIHRoZSBvcHRpb25zIGZvciBjb25maWd1cmluZyBib25kaW5nIGZvcgorZGlzdHJvcyB1c2luZyB2ZXJzaW9ucyBvZiBpbml0c2NyaXB0cywgc3lzY29uZmlnIGFuZCBpbnRlcmZhY2VzIHdpdGggZnVsbAorb3IgcGFydGlhbCBzdXBwb3J0IGZvciBib25kaW5nLCB0aGVuIHByb3ZpZGUgaW5mb3JtYXRpb24gb24gZW5hYmxpbmcKK2JvbmRpbmcgd2l0aG91dCBzdXBwb3J0IGZyb20gdGhlIG5ldHdvcmsgaW5pdGlhbGl6YXRpb24gc2NyaXB0cyAoaS5lLiwKK29sZGVyIHZlcnNpb25zIG9mIGluaXRzY3JpcHRzIG9yIHN5c2NvbmZpZykuCisKKwlJZiB5b3UncmUgdW5zdXJlIHdoZXRoZXIgeW91ciBkaXN0cm8gdXNlcyBzeXNjb25maWcsCitpbml0c2NyaXB0cyBvciBpbnRlcmZhY2VzLCBvciBkb24ndCBrbm93IGlmIGl0J3MgbmV3IGVub3VnaCwgaGF2ZSBubyBmZWFyLgorRGV0ZXJtaW5pbmcgdGhpcyBpcyBmYWlybHkgc3RyYWlnaHRmb3J3YXJkLgorCisJRmlyc3QsIGxvb2sgZm9yIGEgZmlsZSBjYWxsZWQgaW50ZXJmYWNlcyBpbiAvZXRjL25ldHdvcmsgZGlyZWN0b3J5LgorSWYgdGhpcyBmaWxlIGlzIHByZXNlbnQgaW4geW91ciBzeXN0ZW0sIHRoZW4geW91ciBzeXN0ZW0gdXNlIGludGVyZmFjZXMuIFNlZQorQ29uZmlndXJhdGlvbiB3aXRoIEludGVyZmFjZXMgU3VwcG9ydC4KKworCUVsc2UsIGlzc3VlIHRoZSBjb21tYW5kOgorCiskIHJwbSAtcWYgL3NiaW4vaWZ1cAorCisJSXQgd2lsbCByZXNwb25kIHdpdGggYSBsaW5lIG9mIHRleHQgc3RhcnRpbmcgd2l0aCBlaXRoZXIKKyJpbml0c2NyaXB0cyIgb3IgInN5c2NvbmZpZywiIGZvbGxvd2VkIGJ5IHNvbWUgbnVtYmVycy4gIFRoaXMgaXMgdGhlCitwYWNrYWdlIHRoYXQgcHJvdmlkZXMgeW91ciBuZXR3b3JrIGluaXRpYWxpemF0aW9uIHNjcmlwdHMuCisKKwlOZXh0LCB0byBkZXRlcm1pbmUgaWYgeW91ciBpbnN0YWxsYXRpb24gc3VwcG9ydHMgYm9uZGluZywKK2lzc3VlIHRoZSBjb21tYW5kOgorCiskIGdyZXAgaWZlbnNsYXZlIC9zYmluL2lmdXAKKworCUlmIHRoaXMgcmV0dXJucyBhbnkgbWF0Y2hlcywgdGhlbiB5b3VyIGluaXRzY3JpcHRzIG9yCitzeXNjb25maWcgaGFzIHN1cHBvcnQgZm9yIGJvbmRpbmcuCisKKzMuMSBDb25maWd1cmF0aW9uIHdpdGggU3lzY29uZmlnIFN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCVRoaXMgc2VjdGlvbiBhcHBsaWVzIHRvIGRpc3Ryb3MgdXNpbmcgYSB2ZXJzaW9uIG9mIHN5c2NvbmZpZword2l0aCBib25kaW5nIHN1cHBvcnQsIGZvciBleGFtcGxlLCBTdVNFIExpbnV4IEVudGVycHJpc2UgU2VydmVyIDkuCisKKwlTdVNFIFNMRVMgOSdzIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbiBzeXN0ZW0gZG9lcyBzdXBwb3J0Citib25kaW5nLCBob3dldmVyLCBhdCB0aGlzIHdyaXRpbmcsIHRoZSBZYVNUIHN5c3RlbSBjb25maWd1cmF0aW9uCitmcm9udCBlbmQgZG9lcyBub3QgcHJvdmlkZSBhbnkgbWVhbnMgdG8gd29yayB3aXRoIGJvbmRpbmcgZGV2aWNlcy4KK0JvbmRpbmcgZGV2aWNlcyBjYW4gYmUgbWFuYWdlZCBieSBoYW5kLCBob3dldmVyLCBhcyBmb2xsb3dzLgorCisJRmlyc3QsIGlmIHRoZXkgaGF2ZSBub3QgYWxyZWFkeSBiZWVuIGNvbmZpZ3VyZWQsIGNvbmZpZ3VyZSB0aGUKK3NsYXZlIGRldmljZXMuICBPbiBTTEVTIDksIHRoaXMgaXMgbW9zdCBlYXNpbHkgZG9uZSBieSBydW5uaW5nIHRoZQoreWFzdDIgc3lzY29uZmlnIGNvbmZpZ3VyYXRpb24gdXRpbGl0eS4gIFRoZSBnb2FsIGlzIGZvciB0byBjcmVhdGUgYW4KK2lmY2ZnLWlkIGZpbGUgZm9yIGVhY2ggc2xhdmUgZGV2aWNlLiAgVGhlIHNpbXBsZXN0IHdheSB0byBhY2NvbXBsaXNoCit0aGlzIGlzIHRvIGNvbmZpZ3VyZSB0aGUgZGV2aWNlcyBmb3IgREhDUCAodGhpcyBpcyBvbmx5IHRvIGdldCB0aGUKK2ZpbGUgaWZjZmctaWQgZmlsZSBjcmVhdGVkOyBzZWUgYmVsb3cgZm9yIHNvbWUgaXNzdWVzIHdpdGggREhDUCkuICBUaGUKK25hbWUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgZWFjaCBkZXZpY2Ugd2lsbCBiZSBvZiB0aGUgZm9ybToKKworaWZjZmctaWQteHg6eHg6eHg6eHg6eHg6eHgKKworCVdoZXJlIHRoZSAieHgiIHBvcnRpb24gd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBkaWdpdHMgZnJvbQordGhlIGRldmljZSdzIHBlcm1hbmVudCBNQUMgYWRkcmVzcy4KKworCU9uY2UgdGhlIHNldCBvZiBpZmNmZy1pZC14eDp4eDp4eDp4eDp4eDp4eCBmaWxlcyBoYXMgYmVlbgorY3JlYXRlZCwgaXQgaXMgbmVjZXNzYXJ5IHRvIGVkaXQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIHRoZSBzbGF2ZQorZGV2aWNlcyAodGhlIE1BQyBhZGRyZXNzZXMgY29ycmVzcG9uZCB0byB0aG9zZSBvZiB0aGUgc2xhdmUgZGV2aWNlcykuCitCZWZvcmUgZWRpdGluZywgdGhlIGZpbGUgd2lsbCBjb250YWluIG11bHRpcGxlIGxpbmVzLCBhbmQgd2lsbCBsb29rCitzb21ldGhpbmcgbGlrZSB0aGlzOgorCitCT09UUFJPVE89J2RoY3AnCitTVEFSVE1PREU9J29uJworVVNFUkNUTD0nbm8nCitVTklRVUU9J1hOenUuV2VaR09HRis0d0UnCitfbm1fbmFtZT0nYnVzLXBjaS0wMDAxOjYxOjAxLjAnCisKKwlDaGFuZ2UgdGhlIEJPT1RQUk9UTyBhbmQgU1RBUlRNT0RFIGxpbmVzIHRvIHRoZSBmb2xsb3dpbmc6CisKK0JPT1RQUk9UTz0nbm9uZScKK1NUQVJUTU9ERT0nb2ZmJworCisJRG8gbm90IGFsdGVyIHRoZSBVTklRVUUgb3IgX25tX25hbWUgbGluZXMuICBSZW1vdmUgYW55IG90aGVyCitsaW5lcyAoVVNFUkNUTCwgZXRjKS4KKworCU9uY2UgdGhlIGlmY2ZnLWlkLXh4Onh4Onh4Onh4Onh4Onh4IGZpbGVzIGhhdmUgYmVlbiBtb2RpZmllZCwKK2l0J3MgdGltZSB0byBjcmVhdGUgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIGJvbmRpbmcgZGV2aWNlCitpdHNlbGYuICBUaGlzIGZpbGUgaXMgbmFtZWQgaWZjZmctYm9uZFgsIHdoZXJlIFggaXMgdGhlIG51bWJlciBvZiB0aGUKK2JvbmRpbmcgZGV2aWNlIHRvIGNyZWF0ZSwgc3RhcnRpbmcgYXQgMC4gIFRoZSBmaXJzdCBzdWNoIGZpbGUgaXMKK2lmY2ZnLWJvbmQwLCB0aGUgc2Vjb25kIGlzIGlmY2ZnLWJvbmQxLCBhbmQgc28gb24uICBUaGUgc3lzY29uZmlnCituZXR3b3JrIGNvbmZpZ3VyYXRpb24gc3lzdGVtIHdpbGwgY29ycmVjdGx5IHN0YXJ0IG11bHRpcGxlIGluc3RhbmNlcworb2YgYm9uZGluZy4KKworCVRoZSBjb250ZW50cyBvZiB0aGUgaWZjZmctYm9uZFggZmlsZSBpcyBhcyBmb2xsb3dzOgorCitCT09UUFJPVE89InN0YXRpYyIKK0JST0FEQ0FTVD0iMTAuMC4yLjI1NSIKK0lQQUREUj0iMTAuMC4yLjEwIgorTkVUTUFTSz0iMjU1LjI1NS4wLjAiCitORVRXT1JLPSIxMC4wLjIuMCIKK1JFTU9URV9JUEFERFI9IiIKK1NUQVJUTU9ERT0ib25ib290IgorQk9ORElOR19NQVNURVI9InllcyIKK0JPTkRJTkdfTU9EVUxFX09QVFM9Im1vZGU9YWN0aXZlLWJhY2t1cCBtaWltb249MTAwIgorQk9ORElOR19TTEFWRTA9ImV0aDAiCitCT05ESU5HX1NMQVZFMT0iYnVzLXBjaS0wMDAwOjA2OjA4LjEiCisKKwlSZXBsYWNlIHRoZSBzYW1wbGUgQlJPQURDQVNULCBJUEFERFIsIE5FVE1BU0sgYW5kIE5FVFdPUksKK3ZhbHVlcyB3aXRoIHRoZSBhcHByb3ByaWF0ZSB2YWx1ZXMgZm9yIHlvdXIgbmV0d29yay4KKworCVRoZSBTVEFSVE1PREUgc3BlY2lmaWVzIHdoZW4gdGhlIGRldmljZSBpcyBicm91Z2h0IG9ubGluZS4KK1RoZSBwb3NzaWJsZSB2YWx1ZXMgYXJlOgorCisJb25ib290OgkgVGhlIGRldmljZSBpcyBzdGFydGVkIGF0IGJvb3QgdGltZS4gIElmIHlvdSdyZSBub3QKKwkJIHN1cmUsIHRoaXMgaXMgcHJvYmFibHkgd2hhdCB5b3Ugd2FudC4KKworCW1hbnVhbDoJIFRoZSBkZXZpY2UgaXMgc3RhcnRlZCBvbmx5IHdoZW4gaWZ1cCBpcyBjYWxsZWQKKwkJIG1hbnVhbGx5LiAgQm9uZGluZyBkZXZpY2VzIG1heSBiZSBjb25maWd1cmVkIHRoaXMKKwkJIHdheSBpZiB5b3UgZG8gbm90IHdpc2ggdGhlbSB0byBzdGFydCBhdXRvbWF0aWNhbGx5CisJCSBhdCBib290IGZvciBzb21lIHJlYXNvbi4KKworCWhvdHBsdWc6IFRoZSBkZXZpY2UgaXMgc3RhcnRlZCBieSBhIGhvdHBsdWcgZXZlbnQuICBUaGlzIGlzIG5vdAorCQkgYSB2YWxpZCBjaG9pY2UgZm9yIGEgYm9uZGluZyBkZXZpY2UuCisKKwlvZmYgb3IgaWdub3JlOiBUaGUgZGV2aWNlIGNvbmZpZ3VyYXRpb24gaXMgaWdub3JlZC4KKworCVRoZSBsaW5lIEJPTkRJTkdfTUFTVEVSPSd5ZXMnIGluZGljYXRlcyB0aGF0IHRoZSBkZXZpY2UgaXMgYQorYm9uZGluZyBtYXN0ZXIgZGV2aWNlLiAgVGhlIG9ubHkgdXNlZnVsIHZhbHVlIGlzICJ5ZXMuIgorCisJVGhlIGNvbnRlbnRzIG9mIEJPTkRJTkdfTU9EVUxFX09QVFMgYXJlIHN1cHBsaWVkIHRvIHRoZQoraW5zdGFuY2Ugb2YgdGhlIGJvbmRpbmcgbW9kdWxlIGZvciB0aGlzIGRldmljZS4gIFNwZWNpZnkgdGhlIG9wdGlvbnMKK2ZvciB0aGUgYm9uZGluZyBtb2RlLCBsaW5rIG1vbml0b3JpbmcsIGFuZCBzbyBvbiBoZXJlLiAgRG8gbm90IGluY2x1ZGUKK3RoZSBtYXhfYm9uZHMgYm9uZGluZyBwYXJhbWV0ZXI7IHRoaXMgd2lsbCBjb25mdXNlIHRoZSBjb25maWd1cmF0aW9uCitzeXN0ZW0gaWYgeW91IGhhdmUgbXVsdGlwbGUgYm9uZGluZyBkZXZpY2VzLgorCisJRmluYWxseSwgc3VwcGx5IG9uZSBCT05ESU5HX1NMQVZFbj0ic2xhdmUgZGV2aWNlIiBmb3IgZWFjaAorc2xhdmUuICB3aGVyZSAibiIgaXMgYW4gaW5jcmVhc2luZyB2YWx1ZSwgb25lIGZvciBlYWNoIHNsYXZlLiAgVGhlCisic2xhdmUgZGV2aWNlIiBpcyBlaXRoZXIgYW4gaW50ZXJmYWNlIG5hbWUsIGUuZy4sICJldGgwIiwgb3IgYSBkZXZpY2UKK3NwZWNpZmllciBmb3IgdGhlIG5ldHdvcmsgZGV2aWNlLiAgVGhlIGludGVyZmFjZSBuYW1lIGlzIGVhc2llciB0bworZmluZCwgYnV0IHRoZSBldGhOIG5hbWVzIGFyZSBzdWJqZWN0IHRvIGNoYW5nZSBhdCBib290IHRpbWUgaWYsIGUuZy4sCithIGRldmljZSBlYXJseSBpbiB0aGUgc2VxdWVuY2UgaGFzIGZhaWxlZC4gIFRoZSBkZXZpY2Ugc3BlY2lmaWVycworKGJ1cy1wY2ktMDAwMDowNjowOC4xIGluIHRoZSBleGFtcGxlIGFib3ZlKSBzcGVjaWZ5IHRoZSBwaHlzaWNhbAorbmV0d29yayBkZXZpY2UsIGFuZCB3aWxsIG5vdCBjaGFuZ2UgdW5sZXNzIHRoZSBkZXZpY2UncyBidXMgbG9jYXRpb24KK2NoYW5nZXMgKGZvciBleGFtcGxlLCBpdCBpcyBtb3ZlZCBmcm9tIG9uZSBQQ0kgc2xvdCB0byBhbm90aGVyKS4gIFRoZQorZXhhbXBsZSBhYm92ZSB1c2VzIG9uZSBvZiBlYWNoIHR5cGUgZm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXM7IG1vc3QKK2NvbmZpZ3VyYXRpb25zIHdpbGwgY2hvb3NlIG9uZSBvciB0aGUgb3RoZXIgZm9yIGFsbCBzbGF2ZSBkZXZpY2VzLgorCisJV2hlbiBhbGwgY29uZmlndXJhdGlvbiBmaWxlcyBoYXZlIGJlZW4gbW9kaWZpZWQgb3IgY3JlYXRlZCwKK25ldHdvcmtpbmcgbXVzdCBiZSByZXN0YXJ0ZWQgZm9yIHRoZSBjb25maWd1cmF0aW9uIGNoYW5nZXMgdG8gdGFrZQorZWZmZWN0LiAgVGhpcyBjYW4gYmUgYWNjb21wbGlzaGVkIHZpYSB0aGUgZm9sbG93aW5nOgorCisjIC9ldGMvaW5pdC5kL25ldHdvcmsgcmVzdGFydAorCisJTm90ZSB0aGF0IHRoZSBuZXR3b3JrIGNvbnRyb2wgc2NyaXB0ICgvc2Jpbi9pZmRvd24pIHdpbGwKK3JlbW92ZSB0aGUgYm9uZGluZyBtb2R1bGUgYXMgcGFydCBvZiB0aGUgbmV0d29yayBzaHV0ZG93biBwcm9jZXNzaW5nLAorc28gaXQgaXMgbm90IG5lY2Vzc2FyeSB0byByZW1vdmUgdGhlIG1vZHVsZSBieSBoYW5kIGlmLCBlLmcuLCB0aGUKK21vZHVsZSBwYXJhbWV0ZXJzIGhhdmUgY2hhbmdlZC4KKworCUFsc28sIGF0IHRoaXMgd3JpdGluZywgWWFTVC9ZYVNUMiB3aWxsIG5vdCBtYW5hZ2UgYm9uZGluZworZGV2aWNlcyAodGhleSBkbyBub3Qgc2hvdyBib25kaW5nIGludGVyZmFjZXMgb24gaXRzIGxpc3Qgb2YgbmV0d29yaworZGV2aWNlcykuICBJdCBpcyBuZWNlc3NhcnkgdG8gZWRpdCB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGJ5IGhhbmQgdG8KK2NoYW5nZSB0aGUgYm9uZGluZyBjb25maWd1cmF0aW9uLgorCisJQWRkaXRpb25hbCBnZW5lcmFsIG9wdGlvbnMgYW5kIGRldGFpbHMgb2YgdGhlIGlmY2ZnIGZpbGUKK2Zvcm1hdCBjYW4gYmUgZm91bmQgaW4gYW4gZXhhbXBsZSBpZmNmZyB0ZW1wbGF0ZSBmaWxlOgorCisvZXRjL3N5c2NvbmZpZy9uZXR3b3JrL2lmY2ZnLnRlbXBsYXRlCisKKwlOb3RlIHRoYXQgdGhlIHRlbXBsYXRlIGRvZXMgbm90IGRvY3VtZW50IHRoZSB2YXJpb3VzIEJPTkRJTkdfCitzZXR0aW5ncyBkZXNjcmliZWQgYWJvdmUsIGJ1dCBkb2VzIGRlc2NyaWJlIG1hbnkgb2YgdGhlIG90aGVyIG9wdGlvbnMuCisKKzMuMS4xIFVzaW5nIERIQ1Agd2l0aCBTeXNjb25maWcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCVVuZGVyIHN5c2NvbmZpZywgY29uZmlndXJpbmcgYSBkZXZpY2Ugd2l0aCBCT09UUFJPVE89J2RoY3AnCit3aWxsIGNhdXNlIGl0IHRvIHF1ZXJ5IERIQ1AgZm9yIGl0cyBJUCBhZGRyZXNzIGluZm9ybWF0aW9uLiAgQXQgdGhpcword3JpdGluZywgdGhpcyBkb2VzIG5vdCBmdW5jdGlvbiBmb3IgYm9uZGluZyBkZXZpY2VzOyB0aGUgc2NyaXB0cworYXR0ZW1wdCB0byBvYnRhaW4gdGhlIGRldmljZSBhZGRyZXNzIGZyb20gREhDUCBwcmlvciB0byBhZGRpbmcgYW55IG9mCit0aGUgc2xhdmUgZGV2aWNlcy4gIFdpdGhvdXQgYWN0aXZlIHNsYXZlcywgdGhlIERIQ1AgcmVxdWVzdHMgYXJlIG5vdAorc2VudCB0byB0aGUgbmV0d29yay4KKworMy4xLjIgQ29uZmlndXJpbmcgTXVsdGlwbGUgQm9uZHMgd2l0aCBTeXNjb25maWcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlUaGUgc3lzY29uZmlnIG5ldHdvcmsgaW5pdGlhbGl6YXRpb24gc3lzdGVtIGlzIGNhcGFibGUgb2YKK2hhbmRsaW5nIG11bHRpcGxlIGJvbmRpbmcgZGV2aWNlcy4gIEFsbCB0aGF0IGlzIG5lY2Vzc2FyeSBpcyBmb3IgZWFjaAorYm9uZGluZyBpbnN0YW5jZSB0byBoYXZlIGFuIGFwcHJvcHJpYXRlbHkgY29uZmlndXJlZCBpZmNmZy1ib25kWCBmaWxlCisoYXMgZGVzY3JpYmVkIGFib3ZlKS4gIERvIG5vdCBzcGVjaWZ5IHRoZSAibWF4X2JvbmRzIiBwYXJhbWV0ZXIgdG8gYW55CitpbnN0YW5jZSBvZiBib25kaW5nLCBhcyB0aGlzIHdpbGwgY29uZnVzZSBzeXNjb25maWcuICBJZiB5b3UgcmVxdWlyZQorbXVsdGlwbGUgYm9uZGluZyBkZXZpY2VzIHdpdGggaWRlbnRpY2FsIHBhcmFtZXRlcnMsIGNyZWF0ZSBtdWx0aXBsZQoraWZjZmctYm9uZFggZmlsZXMuCisKKwlCZWNhdXNlIHRoZSBzeXNjb25maWcgc2NyaXB0cyBzdXBwbHkgdGhlIGJvbmRpbmcgbW9kdWxlCitvcHRpb25zIGluIHRoZSBpZmNmZy1ib25kWCBmaWxlLCBpdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGFkZCB0aGVtIHRvCit0aGUgc3lzdGVtIC9ldGMvbW9kdWxlcy5kLyouY29uZiBjb25maWd1cmF0aW9uIGZpbGVzLgorCiszLjIgQ29uZmlndXJhdGlvbiB3aXRoIEluaXRzY3JpcHRzIFN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJVGhpcyBzZWN0aW9uIGFwcGxpZXMgdG8gZGlzdHJvcyB1c2luZyBhIHJlY2VudCB2ZXJzaW9uIG9mCitpbml0c2NyaXB0cyB3aXRoIGJvbmRpbmcgc3VwcG9ydCwgZm9yIGV4YW1wbGUsIFJlZCBIYXQgRW50ZXJwcmlzZSBMaW51eAordmVyc2lvbiAzIG9yIGxhdGVyLCBGZWRvcmEsIGV0Yy4gIE9uIHRoZXNlIHN5c3RlbXMsIHRoZSBuZXR3b3JrCitpbml0aWFsaXphdGlvbiBzY3JpcHRzIGhhdmUga25vd2xlZGdlIG9mIGJvbmRpbmcsIGFuZCBjYW4gYmUgY29uZmlndXJlZCB0bworY29udHJvbCBib25kaW5nIGRldmljZXMuICBOb3RlIHRoYXQgb2xkZXIgdmVyc2lvbnMgb2YgdGhlIGluaXRzY3JpcHRzCitwYWNrYWdlIGhhdmUgbG93ZXIgbGV2ZWxzIG9mIHN1cHBvcnQgZm9yIGJvbmRpbmc7IHRoaXMgd2lsbCBiZSBub3RlZCB3aGVyZQorYXBwbGljYWJsZS4KKworCVRoZXNlIGRpc3Ryb3Mgd2lsbCBub3QgYXV0b21hdGljYWxseSBsb2FkIHRoZSBuZXR3b3JrIGFkYXB0ZXIKK2RyaXZlciB1bmxlc3MgdGhlIGV0aFggZGV2aWNlIGlzIGNvbmZpZ3VyZWQgd2l0aCBhbiBJUCBhZGRyZXNzLgorQmVjYXVzZSBvZiB0aGlzIGNvbnN0cmFpbnQsIHVzZXJzIG11c3QgbWFudWFsbHkgY29uZmlndXJlIGEKK25ldHdvcmstc2NyaXB0IGZpbGUgZm9yIGFsbCBwaHlzaWNhbCBhZGFwdGVycyB0aGF0IHdpbGwgYmUgbWVtYmVycyBvZgorYSBib25kWCBsaW5rLiAgTmV0d29yayBzY3JpcHQgZmlsZXMgYXJlIGxvY2F0ZWQgaW4gdGhlIGRpcmVjdG9yeToKKworL2V0Yy9zeXNjb25maWcvbmV0d29yay1zY3JpcHRzCisKKwlUaGUgZmlsZSBuYW1lIG11c3QgYmUgcHJlZml4ZWQgd2l0aCAiaWZjZmctZXRoIiBhbmQgc3VmZml4ZWQKK3dpdGggdGhlIGFkYXB0ZXIncyBwaHlzaWNhbCBhZGFwdGVyIG51bWJlci4gIEZvciBleGFtcGxlLCB0aGUgc2NyaXB0Citmb3IgZXRoMCB3b3VsZCBiZSBuYW1lZCAvZXRjL3N5c2NvbmZpZy9uZXR3b3JrLXNjcmlwdHMvaWZjZmctZXRoMC4KK1BsYWNlIHRoZSBmb2xsb3dpbmcgdGV4dCBpbiB0aGUgZmlsZToKKworREVWSUNFPWV0aDAKK1VTRVJDVEw9bm8KK09OQk9PVD15ZXMKK01BU1RFUj1ib25kMAorU0xBVkU9eWVzCitCT09UUFJPVE89bm9uZQorCisJVGhlIERFVklDRT0gbGluZSB3aWxsIGJlIGRpZmZlcmVudCBmb3IgZXZlcnkgZXRoWCBkZXZpY2UgYW5kCittdXN0IGNvcnJlc3BvbmQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgZmlsZSwgaS5lLiwgaWZjZmctZXRoMSBtdXN0IGhhdmUKK2EgZGV2aWNlIGxpbmUgb2YgREVWSUNFPWV0aDEuICBUaGUgc2V0dGluZyBvZiB0aGUgTUFTVEVSPSBsaW5lIHdpbGwKK2Fsc28gZGVwZW5kIG9uIHRoZSBmaW5hbCBib25kaW5nIGludGVyZmFjZSBuYW1lIGNob3NlbiBmb3IgeW91ciBib25kLgorQXMgd2l0aCBvdGhlciBuZXR3b3JrIGRldmljZXMsIHRoZXNlIHR5cGljYWxseSBzdGFydCBhdCAwLCBhbmQgZ28gdXAKK29uZSBmb3IgZWFjaCBkZXZpY2UsIGkuZS4sIHRoZSBmaXJzdCBib25kaW5nIGluc3RhbmNlIGlzIGJvbmQwLCB0aGUKK3NlY29uZCBpcyBib25kMSwgYW5kIHNvIG9uLgorCisJTmV4dCwgY3JlYXRlIGEgYm9uZCBuZXR3b3JrIHNjcmlwdC4gIFRoZSBmaWxlIG5hbWUgZm9yIHRoaXMKK3NjcmlwdCB3aWxsIGJlIC9ldGMvc3lzY29uZmlnL25ldHdvcmstc2NyaXB0cy9pZmNmZy1ib25kWCB3aGVyZSBYIGlzCit0aGUgbnVtYmVyIG9mIHRoZSBib25kLiAgRm9yIGJvbmQwIHRoZSBmaWxlIGlzIG5hbWVkICJpZmNmZy1ib25kMCIsCitmb3IgYm9uZDEgaXQgaXMgbmFtZWQgImlmY2ZnLWJvbmQxIiwgYW5kIHNvIG9uLiAgV2l0aGluIHRoYXQgZmlsZSwKK3BsYWNlIHRoZSBmb2xsb3dpbmcgdGV4dDoKKworREVWSUNFPWJvbmQwCitJUEFERFI9MTkyLjE2OC4xLjEKK05FVE1BU0s9MjU1LjI1NS4yNTUuMAorTkVUV09SSz0xOTIuMTY4LjEuMAorQlJPQURDQVNUPTE5Mi4xNjguMS4yNTUKK09OQk9PVD15ZXMKK0JPT1RQUk9UTz1ub25lCitVU0VSQ1RMPW5vCisKKwlCZSBzdXJlIHRvIGNoYW5nZSB0aGUgbmV0d29ya2luZyBzcGVjaWZpYyBsaW5lcyAoSVBBRERSLAorTkVUTUFTSywgTkVUV09SSyBhbmQgQlJPQURDQVNUKSB0byBtYXRjaCB5b3VyIG5ldHdvcmsgY29uZmlndXJhdGlvbi4KKworCUZvciBsYXRlciB2ZXJzaW9ucyBvZiBpbml0c2NyaXB0cywgc3VjaCBhcyB0aGF0IGZvdW5kIHdpdGggRmVkb3JhCis3IChvciBsYXRlcikgYW5kIFJlZCBIYXQgRW50ZXJwcmlzZSBMaW51eCB2ZXJzaW9uIDUgKG9yIGxhdGVyKSwgaXQgaXMgcG9zc2libGUsCithbmQsIGluZGVlZCwgcHJlZmVyYWJsZSwgdG8gc3BlY2lmeSB0aGUgYm9uZGluZyBvcHRpb25zIGluIHRoZSBpZmNmZy1ib25kMAorZmlsZSwgZS5nLiBhIGxpbmUgb2YgdGhlIGZvcm1hdDoKKworQk9ORElOR19PUFRTPSJtb2RlPWFjdGl2ZS1iYWNrdXAgYXJwX2ludGVydmFsPTYwIGFycF9pcF90YXJnZXQ9MTkyLjE2OC4xLjI1NCIKKworCXdpbGwgY29uZmlndXJlIHRoZSBib25kIHdpdGggdGhlIHNwZWNpZmllZCBvcHRpb25zLiAgVGhlIG9wdGlvbnMKK3NwZWNpZmllZCBpbiBCT05ESU5HX09QVFMgYXJlIGlkZW50aWNhbCB0byB0aGUgYm9uZGluZyBtb2R1bGUgcGFyYW1ldGVycworZXhjZXB0IGZvciB0aGUgYXJwX2lwX3RhcmdldCBmaWVsZCB3aGVuIHVzaW5nIHZlcnNpb25zIG9mIGluaXRzY3JpcHRzIG9sZGVyCit0aGFuIGFuZCA4LjU3IChGZWRvcmEgOCkgYW5kIDguNDUuMTkgKFJlZCBIYXQgRW50ZXJwcmlzZSBMaW51eCA1LjIpLiAgV2hlbgordXNpbmcgb2xkZXIgdmVyc2lvbnMgZWFjaCB0YXJnZXQgc2hvdWxkIGJlIGluY2x1ZGVkIGFzIGEgc2VwYXJhdGUgb3B0aW9uIGFuZAorc2hvdWxkIGJlIHByZWNlZGVkIGJ5IGEgJysnIHRvIGluZGljYXRlIGl0IHNob3VsZCBiZSBhZGRlZCB0byB0aGUgbGlzdCBvZgorcXVlcmllZCB0YXJnZXRzLCBlLmcuLAorCisJYXJwX2lwX3RhcmdldD0rMTkyLjE2OC4xLjEgYXJwX2lwX3RhcmdldD0rMTkyLjE2OC4xLjIKKworCWlzIHRoZSBwcm9wZXIgc3ludGF4IHRvIHNwZWNpZnkgbXVsdGlwbGUgdGFyZ2V0cy4gIFdoZW4gc3BlY2lmeWluZworb3B0aW9ucyB2aWEgQk9ORElOR19PUFRTLCBpdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGVkaXQgL2V0Yy9tb2Rwcm9iZS5kLyouY29uZi4KKworCUZvciBldmVuIG9sZGVyIHZlcnNpb25zIG9mIGluaXRzY3JpcHRzIHRoYXQgZG8gbm90IHN1cHBvcnQKK0JPTkRJTkdfT1BUUywgaXQgaXMgbmVjZXNzYXJ5IHRvIGVkaXQgL2V0Yy9tb2Rwcm9iZS5kLyouY29uZiwgZGVwZW5kaW5nIHVwb24KK3lvdXIgZGlzdHJvKSB0byBsb2FkIHRoZSBib25kaW5nIG1vZHVsZSB3aXRoIHlvdXIgZGVzaXJlZCBvcHRpb25zIHdoZW4gdGhlCitib25kMCBpbnRlcmZhY2UgaXMgYnJvdWdodCB1cC4gIFRoZSBmb2xsb3dpbmcgbGluZXMgaW4gL2V0Yy9tb2Rwcm9iZS5kLyouY29uZgord2lsbCBsb2FkIHRoZSBib25kaW5nIG1vZHVsZSwgYW5kIHNlbGVjdCBpdHMgb3B0aW9uczoKKworYWxpYXMgYm9uZDAgYm9uZGluZworb3B0aW9ucyBib25kMCBtb2RlPWJhbGFuY2UtYWxiIG1paW1vbj0xMDAKKworCVJlcGxhY2UgdGhlIHNhbXBsZSBwYXJhbWV0ZXJzIHdpdGggdGhlIGFwcHJvcHJpYXRlIHNldCBvZgorb3B0aW9ucyBmb3IgeW91ciBjb25maWd1cmF0aW9uLgorCisJRmluYWxseSBydW4gIi9ldGMvcmMuZC9pbml0LmQvbmV0d29yayByZXN0YXJ0IiBhcyByb290LiAgVGhpcword2lsbCByZXN0YXJ0IHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSBhbmQgeW91ciBib25kIGxpbmsgc2hvdWxkIGJlIG5vdwordXAgYW5kIHJ1bm5pbmcuCisKKzMuMi4xIFVzaW5nIERIQ1Agd2l0aCBJbml0c2NyaXB0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlSZWNlbnQgdmVyc2lvbnMgb2YgaW5pdHNjcmlwdHMgKHRoZSB2ZXJzaW9ucyBzdXBwbGllZCB3aXRoIEZlZG9yYQorQ29yZSAzIGFuZCBSZWQgSGF0IEVudGVycHJpc2UgTGludXggNCwgb3IgbGF0ZXIgdmVyc2lvbnMsIGFyZSByZXBvcnRlZCB0bword29yaykgaGF2ZSBzdXBwb3J0IGZvciBhc3NpZ25pbmcgSVAgaW5mb3JtYXRpb24gdG8gYm9uZGluZyBkZXZpY2VzIHZpYQorREhDUC4KKworCVRvIGNvbmZpZ3VyZSBib25kaW5nIGZvciBESENQLCBjb25maWd1cmUgaXQgYXMgZGVzY3JpYmVkCithYm92ZSwgZXhjZXB0IHJlcGxhY2UgdGhlIGxpbmUgIkJPT1RQUk9UTz1ub25lIiB3aXRoICJCT09UUFJPVE89ZGhjcCIKK2FuZCBhZGQgYSBsaW5lIGNvbnNpc3Rpbmcgb2YgIlRZUEU9Qm9uZGluZyIuICBOb3RlIHRoYXQgdGhlIFRZUEUgdmFsdWUKK2lzIGNhc2Ugc2Vuc2l0aXZlLgorCiszLjIuMiBDb25maWd1cmluZyBNdWx0aXBsZSBCb25kcyB3aXRoIEluaXRzY3JpcHRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlJbml0c2NyaXB0cyBwYWNrYWdlcyB0aGF0IGFyZSBpbmNsdWRlZCB3aXRoIEZlZG9yYSA3IGFuZCBSZWQgSGF0CitFbnRlcnByaXNlIExpbnV4IDUgc3VwcG9ydCBtdWx0aXBsZSBib25kaW5nIGludGVyZmFjZXMgYnkgc2ltcGx5CitzcGVjaWZ5aW5nIHRoZSBhcHByb3ByaWF0ZSBCT05ESU5HX09QVFM9IGluIGlmY2ZnLWJvbmRYIHdoZXJlIFggaXMgdGhlCitudW1iZXIgb2YgdGhlIGJvbmQuICBUaGlzIHN1cHBvcnQgcmVxdWlyZXMgc3lzZnMgc3VwcG9ydCBpbiB0aGUga2VybmVsLAorYW5kIGEgYm9uZGluZyBkcml2ZXIgb2YgdmVyc2lvbiAzLjAuMCBvciBsYXRlci4gIE90aGVyIGNvbmZpZ3VyYXRpb25zIG1heQorbm90IHN1cHBvcnQgdGhpcyBtZXRob2QgZm9yIHNwZWNpZnlpbmcgbXVsdGlwbGUgYm9uZGluZyBpbnRlcmZhY2VzOyBmb3IKK3Rob3NlIGluc3RhbmNlcywgc2VlIHRoZSAiQ29uZmlndXJpbmcgTXVsdGlwbGUgQm9uZHMgTWFudWFsbHkiIHNlY3Rpb24sCitiZWxvdy4KKworMy4zIENvbmZpZ3VyaW5nIEJvbmRpbmcgTWFudWFsbHkgd2l0aCBpcHJvdXRlMgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCVRoaXMgc2VjdGlvbiBhcHBsaWVzIHRvIGRpc3Ryb3Mgd2hvc2UgbmV0d29yayBpbml0aWFsaXphdGlvbgorc2NyaXB0cyAodGhlIHN5c2NvbmZpZyBvciBpbml0c2NyaXB0cyBwYWNrYWdlKSBkbyBub3QgaGF2ZSBzcGVjaWZpYwora25vd2xlZGdlIG9mIGJvbmRpbmcuICBPbmUgc3VjaCBkaXN0cm8gaXMgU3VTRSBMaW51eCBFbnRlcnByaXNlIFNlcnZlcgordmVyc2lvbiA4LgorCisJVGhlIGdlbmVyYWwgbWV0aG9kIGZvciB0aGVzZSBzeXN0ZW1zIGlzIHRvIHBsYWNlIHRoZSBib25kaW5nCittb2R1bGUgcGFyYW1ldGVycyBpbnRvIGEgY29uZmlnIGZpbGUgaW4gL2V0Yy9tb2Rwcm9iZS5kLyAoYXMKK2FwcHJvcHJpYXRlIGZvciB0aGUgaW5zdGFsbGVkIGRpc3RybyksIHRoZW4gYWRkIG1vZHByb2JlIGFuZC9vcgorYGlwIGxpbmtgIGNvbW1hbmRzIHRvIHRoZSBzeXN0ZW0ncyBnbG9iYWwgaW5pdCBzY3JpcHQuICBUaGUgbmFtZSBvZgordGhlIGdsb2JhbCBpbml0IHNjcmlwdCBkaWZmZXJzOyBmb3Igc3lzY29uZmlnLCBpdCBpcworL2V0Yy9pbml0LmQvYm9vdC5sb2NhbCBhbmQgZm9yIGluaXRzY3JpcHRzIGl0IGlzIC9ldGMvcmMuZC9yYy5sb2NhbC4KKworCUZvciBleGFtcGxlLCBpZiB5b3Ugd2FudGVkIHRvIG1ha2UgYSBzaW1wbGUgYm9uZCBvZiB0d28gZTEwMAorZGV2aWNlcyAocHJlc3VtZWQgdG8gYmUgZXRoMCBhbmQgZXRoMSksIGFuZCBoYXZlIGl0IHBlcnNpc3QgYWNyb3NzCityZWJvb3RzLCBlZGl0IHRoZSBhcHByb3ByaWF0ZSBmaWxlICgvZXRjL2luaXQuZC9ib290LmxvY2FsIG9yCisvZXRjL3JjLmQvcmMubG9jYWwpLCBhbmQgYWRkIHRoZSBmb2xsb3dpbmc6CisKK21vZHByb2JlIGJvbmRpbmcgbW9kZT1iYWxhbmNlLWFsYiBtaWltb249MTAwCittb2Rwcm9iZSBlMTAwCitpZmNvbmZpZyBib25kMCAxOTIuMTY4LjEuMSBuZXRtYXNrIDI1NS4yNTUuMjU1LjAgdXAKK2lwIGxpbmsgc2V0IGV0aDAgbWFzdGVyIGJvbmQwCitpcCBsaW5rIHNldCBldGgxIG1hc3RlciBib25kMAorCisJUmVwbGFjZSB0aGUgZXhhbXBsZSBib25kaW5nIG1vZHVsZSBwYXJhbWV0ZXJzIGFuZCBib25kMAorbmV0d29yayBjb25maWd1cmF0aW9uIChJUCBhZGRyZXNzLCBuZXRtYXNrLCBldGMpIHdpdGggdGhlIGFwcHJvcHJpYXRlCit2YWx1ZXMgZm9yIHlvdXIgY29uZmlndXJhdGlvbi4KKworCVVuZm9ydHVuYXRlbHksIHRoaXMgbWV0aG9kIHdpbGwgbm90IHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlCitpZnVwIGFuZCBpZmRvd24gc2NyaXB0cyBvbiB0aGUgYm9uZCBkZXZpY2VzLiAgVG8gcmVsb2FkIHRoZSBib25kaW5nCitjb25maWd1cmF0aW9uLCBpdCBpcyBuZWNlc3NhcnkgdG8gcnVuIHRoZSBpbml0aWFsaXphdGlvbiBzY3JpcHQsIGUuZy4sCisKKyMgL2V0Yy9pbml0LmQvYm9vdC5sb2NhbAorCisJb3IKKworIyAvZXRjL3JjLmQvcmMubG9jYWwKKworCUl0IG1heSBiZSBkZXNpcmFibGUgaW4gc3VjaCBhIGNhc2UgdG8gY3JlYXRlIGEgc2VwYXJhdGUgc2NyaXB0Cit3aGljaCBvbmx5IGluaXRpYWxpemVzIHRoZSBib25kaW5nIGNvbmZpZ3VyYXRpb24sIHRoZW4gY2FsbCB0aGF0CitzZXBhcmF0ZSBzY3JpcHQgZnJvbSB3aXRoaW4gYm9vdC5sb2NhbC4gIFRoaXMgYWxsb3dzIGZvciBib25kaW5nIHRvIGJlCitlbmFibGVkIHdpdGhvdXQgcmUtcnVubmluZyB0aGUgZW50aXJlIGdsb2JhbCBpbml0IHNjcmlwdC4KKworCVRvIHNodXQgZG93biB0aGUgYm9uZGluZyBkZXZpY2VzLCBpdCBpcyBuZWNlc3NhcnkgdG8gZmlyc3QKK21hcmsgdGhlIGJvbmRpbmcgZGV2aWNlIGl0c2VsZiBhcyBiZWluZyBkb3duLCB0aGVuIHJlbW92ZSB0aGUKK2FwcHJvcHJpYXRlIGRldmljZSBkcml2ZXIgbW9kdWxlcy4gIEZvciBvdXIgZXhhbXBsZSBhYm92ZSwgeW91IGNhbiBkbwordGhlIGZvbGxvd2luZzoKKworIyBpZmNvbmZpZyBib25kMCBkb3duCisjIHJtbW9kIGJvbmRpbmcKKyMgcm1tb2QgZTEwMAorCisJQWdhaW4sIGZvciBjb252ZW5pZW5jZSwgaXQgbWF5IGJlIGRlc2lyYWJsZSB0byBjcmVhdGUgYSBzY3JpcHQKK3dpdGggdGhlc2UgY29tbWFuZHMuCisKKworMy4zLjEgQ29uZmlndXJpbmcgTXVsdGlwbGUgQm9uZHMgTWFudWFsbHkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlUaGlzIHNlY3Rpb24gY29udGFpbnMgaW5mb3JtYXRpb24gb24gY29uZmlndXJpbmcgbXVsdGlwbGUKK2JvbmRpbmcgZGV2aWNlcyB3aXRoIGRpZmZlcmluZyBvcHRpb25zIGZvciB0aG9zZSBzeXN0ZW1zIHdob3NlIG5ldHdvcmsKK2luaXRpYWxpemF0aW9uIHNjcmlwdHMgbGFjayBzdXBwb3J0IGZvciBjb25maWd1cmluZyBtdWx0aXBsZSBib25kcy4KKworCUlmIHlvdSByZXF1aXJlIG11bHRpcGxlIGJvbmRpbmcgZGV2aWNlcywgYnV0IGFsbCB3aXRoIHRoZSBzYW1lCitvcHRpb25zLCB5b3UgbWF5IHdpc2ggdG8gdXNlIHRoZSAibWF4X2JvbmRzIiBtb2R1bGUgcGFyYW1ldGVyLAorZG9jdW1lbnRlZCBhYm92ZS4KKworCVRvIGNyZWF0ZSBtdWx0aXBsZSBib25kaW5nIGRldmljZXMgd2l0aCBkaWZmZXJpbmcgb3B0aW9ucywgaXQgaXMKK3ByZWZlcmFibGUgdG8gdXNlIGJvbmRpbmcgcGFyYW1ldGVycyBleHBvcnRlZCBieSBzeXNmcywgZG9jdW1lbnRlZCBpbiB0aGUKK3NlY3Rpb24gYmVsb3cuCisKKwlGb3IgdmVyc2lvbnMgb2YgYm9uZGluZyB3aXRob3V0IHN5c2ZzIHN1cHBvcnQsIHRoZSBvbmx5IG1lYW5zIHRvCitwcm92aWRlIG11bHRpcGxlIGluc3RhbmNlcyBvZiBib25kaW5nIHdpdGggZGlmZmVyaW5nIG9wdGlvbnMgaXMgdG8gbG9hZAordGhlIGJvbmRpbmcgZHJpdmVyIG11bHRpcGxlIHRpbWVzLiAgTm90ZSB0aGF0IGN1cnJlbnQgdmVyc2lvbnMgb2YgdGhlCitzeXNjb25maWcgbmV0d29yayBpbml0aWFsaXphdGlvbiBzY3JpcHRzIGhhbmRsZSB0aGlzIGF1dG9tYXRpY2FsbHk7IGlmCit5b3VyIGRpc3RybyB1c2VzIHRoZXNlIHNjcmlwdHMsIG5vIHNwZWNpYWwgYWN0aW9uIGlzIG5lZWRlZC4gIFNlZSB0aGUKK3NlY3Rpb24gQ29uZmlndXJpbmcgQm9uZGluZyBEZXZpY2VzLCBhYm92ZSwgaWYgeW91J3JlIG5vdCBzdXJlIGFib3V0IHlvdXIKK25ldHdvcmsgaW5pdGlhbGl6YXRpb24gc2NyaXB0cy4KKworCVRvIGxvYWQgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBtb2R1bGUsIGl0IGlzIG5lY2Vzc2FyeSB0bworc3BlY2lmeSBhIGRpZmZlcmVudCBuYW1lIGZvciBlYWNoIGluc3RhbmNlICh0aGUgbW9kdWxlIGxvYWRpbmcgc3lzdGVtCityZXF1aXJlcyB0aGF0IGV2ZXJ5IGxvYWRlZCBtb2R1bGUsIGV2ZW4gbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBzYW1lCittb2R1bGUsIGhhdmUgYSB1bmlxdWUgbmFtZSkuICBUaGlzIGlzIGFjY29tcGxpc2hlZCBieSBzdXBwbHlpbmcgbXVsdGlwbGUKK3NldHMgb2YgYm9uZGluZyBvcHRpb25zIGluIC9ldGMvbW9kcHJvYmUuZC8qLmNvbmYsIGZvciBleGFtcGxlOgorCithbGlhcyBib25kMCBib25kaW5nCitvcHRpb25zIGJvbmQwIC1vIGJvbmQwIG1vZGU9YmFsYW5jZS1yciBtaWltb249MTAwCisKK2FsaWFzIGJvbmQxIGJvbmRpbmcKK29wdGlvbnMgYm9uZDEgLW8gYm9uZDEgbW9kZT1iYWxhbmNlLWFsYiBtaWltb249NTAKKworCXdpbGwgbG9hZCB0aGUgYm9uZGluZyBtb2R1bGUgdHdvIHRpbWVzLiAgVGhlIGZpcnN0IGluc3RhbmNlIGlzCituYW1lZCAiYm9uZDAiIGFuZCBjcmVhdGVzIHRoZSBib25kMCBkZXZpY2UgaW4gYmFsYW5jZS1yciBtb2RlIHdpdGggYW4KK21paW1vbiBvZiAxMDAuICBUaGUgc2Vjb25kIGluc3RhbmNlIGlzIG5hbWVkICJib25kMSIgYW5kIGNyZWF0ZXMgdGhlCitib25kMSBkZXZpY2UgaW4gYmFsYW5jZS1hbGIgbW9kZSB3aXRoIGFuIG1paW1vbiBvZiA1MC4KKworCUluIHNvbWUgY2lyY3Vtc3RhbmNlcyAodHlwaWNhbGx5IHdpdGggb2xkZXIgZGlzdHJpYnV0aW9ucyksCit0aGUgYWJvdmUgZG9lcyBub3Qgd29yaywgYW5kIHRoZSBzZWNvbmQgYm9uZGluZyBpbnN0YW5jZSBuZXZlciBzZWVzCitpdHMgb3B0aW9ucy4gIEluIHRoYXQgY2FzZSwgdGhlIHNlY29uZCBvcHRpb25zIGxpbmUgY2FuIGJlIHN1YnN0aXR1dGVkCithcyBmb2xsb3dzOgorCitpbnN0YWxsIGJvbmQxIC9zYmluL21vZHByb2JlIC0taWdub3JlLWluc3RhbGwgYm9uZGluZyAtbyBib25kMSBcCisJbW9kZT1iYWxhbmNlLWFsYiBtaWltb249NTAKKworCVRoaXMgbWF5IGJlIHJlcGVhdGVkIGFueSBudW1iZXIgb2YgdGltZXMsIHNwZWNpZnlpbmcgYSBuZXcgYW5kCit1bmlxdWUgbmFtZSBpbiBwbGFjZSBvZiBib25kMSBmb3IgZWFjaCBzdWJzZXF1ZW50IGluc3RhbmNlLgorCisJSXQgaGFzIGJlZW4gb2JzZXJ2ZWQgdGhhdCBzb21lIFJlZCBIYXQgc3VwcGxpZWQga2VybmVscyBhcmUgdW5hYmxlCit0byByZW5hbWUgbW9kdWxlcyBhdCBsb2FkIHRpbWUgKHRoZSAiLW8gYm9uZDEiIHBhcnQpLiAgQXR0ZW1wdHMgdG8gcGFzcwordGhhdCBvcHRpb24gdG8gbW9kcHJvYmUgd2lsbCBwcm9kdWNlIGFuICJPcGVyYXRpb24gbm90IHBlcm1pdHRlZCIgZXJyb3IuCitUaGlzIGhhcyBiZWVuIHJlcG9ydGVkIG9uIHNvbWUgRmVkb3JhIENvcmUga2VybmVscywgYW5kIGhhcyBiZWVuIHNlZW4gb24KK1JIRUwgNCBhcyB3ZWxsLiAgT24ga2VybmVscyBleGhpYml0aW5nIHRoaXMgcHJvYmxlbSwgaXQgd2lsbCBiZSBpbXBvc3NpYmxlCit0byBjb25maWd1cmUgbXVsdGlwbGUgYm9uZHMgd2l0aCBkaWZmZXJpbmcgcGFyYW1ldGVycyAoYXMgdGhleSBhcmUgb2xkZXIKK2tlcm5lbHMsIGFuZCBhbHNvIGxhY2sgc3lzZnMgc3VwcG9ydCkuCisKKzMuNCBDb25maWd1cmluZyBCb25kaW5nIE1hbnVhbGx5IHZpYSBTeXNmcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlTdGFydGluZyB3aXRoIHZlcnNpb24gMy4wLjAsIENoYW5uZWwgQm9uZGluZyBtYXkgYmUgY29uZmlndXJlZAordmlhIHRoZSBzeXNmcyBpbnRlcmZhY2UuICBUaGlzIGludGVyZmFjZSBhbGxvd3MgZHluYW1pYyBjb25maWd1cmF0aW9uCitvZiBhbGwgYm9uZHMgaW4gdGhlIHN5c3RlbSB3aXRob3V0IHVubG9hZGluZyB0aGUgbW9kdWxlLiAgSXQgYWxzbworYWxsb3dzIGZvciBhZGRpbmcgYW5kIHJlbW92aW5nIGJvbmRzIGF0IHJ1bnRpbWUuICBJZmVuc2xhdmUgaXMgbm8KK2xvbmdlciByZXF1aXJlZCwgdGhvdWdoIGl0IGlzIHN0aWxsIHN1cHBvcnRlZC4KKworCVVzZSBvZiB0aGUgc3lzZnMgaW50ZXJmYWNlIGFsbG93cyB5b3UgdG8gdXNlIG11bHRpcGxlIGJvbmRzCit3aXRoIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyB3aXRob3V0IGhhdmluZyB0byByZWxvYWQgdGhlIG1vZHVsZS4KK0l0IGFsc28gYWxsb3dzIHlvdSB0byB1c2UgbXVsdGlwbGUsIGRpZmZlcmVudGx5IGNvbmZpZ3VyZWQgYm9uZHMgd2hlbgorYm9uZGluZyBpcyBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwuCisKKwlZb3UgbXVzdCBoYXZlIHRoZSBzeXNmcyBmaWxlc3lzdGVtIG1vdW50ZWQgdG8gY29uZmlndXJlCitib25kaW5nIHRoaXMgd2F5LiAgVGhlIGV4YW1wbGVzIGluIHRoaXMgZG9jdW1lbnQgYXNzdW1lIHRoYXQgeW91CithcmUgdXNpbmcgdGhlIHN0YW5kYXJkIG1vdW50IHBvaW50IGZvciBzeXNmcywgZS5nLiAvc3lzLiAgSWYgeW91cgorc3lzZnMgZmlsZXN5c3RlbSBpcyBtb3VudGVkIGVsc2V3aGVyZSwgeW91IHdpbGwgbmVlZCB0byBhZGp1c3QgdGhlCitleGFtcGxlIHBhdGhzIGFjY29yZGluZ2x5LgorCitDcmVhdGluZyBhbmQgRGVzdHJveWluZyBCb25kcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RvIGFkZCBhIG5ldyBib25kIGZvbzoKKyMgZWNobyArZm9vID4gL3N5cy9jbGFzcy9uZXQvYm9uZGluZ19tYXN0ZXJzCisKK1RvIHJlbW92ZSBhbiBleGlzdGluZyBib25kIGJhcjoKKyMgZWNobyAtYmFyID4gL3N5cy9jbGFzcy9uZXQvYm9uZGluZ19tYXN0ZXJzCisKK1RvIHNob3cgYWxsIGV4aXN0aW5nIGJvbmRzOgorIyBjYXQgL3N5cy9jbGFzcy9uZXQvYm9uZGluZ19tYXN0ZXJzCisKK05PVEU6IGR1ZSB0byA0SyBzaXplIGxpbWl0YXRpb24gb2Ygc3lzZnMgZmlsZXMsIHRoaXMgbGlzdCBtYXkgYmUKK3RydW5jYXRlZCBpZiB5b3UgaGF2ZSBtb3JlIHRoYW4gYSBmZXcgaHVuZHJlZCBib25kcy4gIFRoaXMgaXMgdW5saWtlbHkKK3RvIG9jY3VyIHVuZGVyIG5vcm1hbCBvcGVyYXRpbmcgY29uZGl0aW9ucy4KKworQWRkaW5nIGFuZCBSZW1vdmluZyBTbGF2ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJSW50ZXJmYWNlcyBtYXkgYmUgZW5zbGF2ZWQgdG8gYSBib25kIHVzaW5nIHRoZSBmaWxlCisvc3lzL2NsYXNzL25ldC88Ym9uZD4vYm9uZGluZy9zbGF2ZXMuICBUaGUgc2VtYW50aWNzIGZvciB0aGlzIGZpbGUKK2FyZSB0aGUgc2FtZSBhcyBmb3IgdGhlIGJvbmRpbmdfbWFzdGVycyBmaWxlLgorCitUbyBlbnNsYXZlIGludGVyZmFjZSBldGgwIHRvIGJvbmQgYm9uZDA6CisjIGlmY29uZmlnIGJvbmQwIHVwCisjIGVjaG8gK2V0aDAgPiAvc3lzL2NsYXNzL25ldC9ib25kMC9ib25kaW5nL3NsYXZlcworCitUbyBmcmVlIHNsYXZlIGV0aDAgZnJvbSBib25kIGJvbmQwOgorIyBlY2hvIC1ldGgwID4gL3N5cy9jbGFzcy9uZXQvYm9uZDAvYm9uZGluZy9zbGF2ZXMKKworCVdoZW4gYW4gaW50ZXJmYWNlIGlzIGVuc2xhdmVkIHRvIGEgYm9uZCwgc3ltbGlua3MgYmV0d2VlbiB0aGUKK3R3byBhcmUgY3JlYXRlZCBpbiB0aGUgc3lzZnMgZmlsZXN5c3RlbS4gIEluIHRoaXMgY2FzZSwgeW91IHdvdWxkIGdldAorL3N5cy9jbGFzcy9uZXQvYm9uZDAvc2xhdmVfZXRoMCBwb2ludGluZyB0byAvc3lzL2NsYXNzL25ldC9ldGgwLCBhbmQKKy9zeXMvY2xhc3MvbmV0L2V0aDAvbWFzdGVyIHBvaW50aW5nIHRvIC9zeXMvY2xhc3MvbmV0L2JvbmQwLgorCisJVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4gdGVsbCBxdWlja2x5IHdoZXRoZXIgb3Igbm90IGFuCitpbnRlcmZhY2UgaXMgZW5zbGF2ZWQgYnkgbG9va2luZyBmb3IgdGhlIG1hc3RlciBzeW1saW5rLiAgVGh1czoKKyMgZWNobyAtZXRoMCA+IC9zeXMvY2xhc3MvbmV0L2V0aDAvbWFzdGVyL2JvbmRpbmcvc2xhdmVzCit3aWxsIGZyZWUgZXRoMCBmcm9tIHdoYXRldmVyIGJvbmQgaXQgaXMgZW5zbGF2ZWQgdG8sIHJlZ2FyZGxlc3Mgb2YKK3RoZSBuYW1lIG9mIHRoZSBib25kIGludGVyZmFjZS4KKworQ2hhbmdpbmcgYSBCb25kJ3MgQ29uZmlndXJhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCUVhY2ggYm9uZCBtYXkgYmUgY29uZmlndXJlZCBpbmRpdmlkdWFsbHkgYnkgbWFuaXB1bGF0aW5nIHRoZQorZmlsZXMgbG9jYXRlZCBpbiAvc3lzL2NsYXNzL25ldC88Ym9uZCBuYW1lPi9ib25kaW5nCisKKwlUaGUgbmFtZXMgb2YgdGhlc2UgZmlsZXMgY29ycmVzcG9uZCBkaXJlY3RseSB3aXRoIHRoZSBjb21tYW5kLQorbGluZSBwYXJhbWV0ZXJzIGRlc2NyaWJlZCBlbHNld2hlcmUgaW4gdGhpcyBmaWxlLCBhbmQsIHdpdGggdGhlCitleGNlcHRpb24gb2YgYXJwX2lwX3RhcmdldCwgdGhleSBhY2NlcHQgdGhlIHNhbWUgdmFsdWVzLiAgVG8gc2VlIHRoZQorY3VycmVudCBzZXR0aW5nLCBzaW1wbHkgY2F0IHRoZSBhcHByb3ByaWF0ZSBmaWxlLgorCisJQSBmZXcgZXhhbXBsZXMgd2lsbCBiZSBnaXZlbiBoZXJlOyBmb3Igc3BlY2lmaWMgdXNhZ2UKK2d1aWRlbGluZXMgZm9yIGVhY2ggcGFyYW1ldGVyLCBzZWUgdGhlIGFwcHJvcHJpYXRlIHNlY3Rpb24gaW4gdGhpcworZG9jdW1lbnQuCisKK1RvIGNvbmZpZ3VyZSBib25kMCBmb3IgYmFsYW5jZS1hbGIgbW9kZToKKyMgaWZjb25maWcgYm9uZDAgZG93bgorIyBlY2hvIDYgPiAvc3lzL2NsYXNzL25ldC9ib25kMC9ib25kaW5nL21vZGUKKyAtIG9yIC0KKyMgZWNobyBiYWxhbmNlLWFsYiA+IC9zeXMvY2xhc3MvbmV0L2JvbmQwL2JvbmRpbmcvbW9kZQorCU5PVEU6IFRoZSBib25kIGludGVyZmFjZSBtdXN0IGJlIGRvd24gYmVmb3JlIHRoZSBtb2RlIGNhbiBiZQorY2hhbmdlZC4KKworVG8gZW5hYmxlIE1JSSBtb25pdG9yaW5nIG9uIGJvbmQwIHdpdGggYSAxIHNlY29uZCBpbnRlcnZhbDoKKyMgZWNobyAxMDAwID4gL3N5cy9jbGFzcy9uZXQvYm9uZDAvYm9uZGluZy9taWltb24KKwlOT1RFOiBJZiBBUlAgbW9uaXRvcmluZyBpcyBlbmFibGVkLCBpdCB3aWxsIGRpc2FibGVkIHdoZW4gTUlJCittb25pdG9yaW5nIGlzIGVuYWJsZWQsIGFuZCB2aWNlLXZlcnNhLgorCitUbyBhZGQgQVJQIHRhcmdldHM6CisjIGVjaG8gKzE5Mi4xNjguMC4xMDAgPiAvc3lzL2NsYXNzL25ldC9ib25kMC9ib25kaW5nL2FycF9pcF90YXJnZXQKKyMgZWNobyArMTkyLjE2OC4wLjEwMSA+IC9zeXMvY2xhc3MvbmV0L2JvbmQwL2JvbmRpbmcvYXJwX2lwX3RhcmdldAorCU5PVEU6ICB1cCB0byAxNiB0YXJnZXQgYWRkcmVzc2VzIG1heSBiZSBzcGVjaWZpZWQuCisKK1RvIHJlbW92ZSBhbiBBUlAgdGFyZ2V0OgorIyBlY2hvIC0xOTIuMTY4LjAuMTAwID4gL3N5cy9jbGFzcy9uZXQvYm9uZDAvYm9uZGluZy9hcnBfaXBfdGFyZ2V0CisKK1RvIGNvbmZpZ3VyZSB0aGUgaW50ZXJ2YWwgYmV0d2VlbiBsZWFybmluZyBwYWNrZXQgdHJhbnNtaXRzOgorIyBlY2hvIDEyID4gL3N5cy9jbGFzcy9uZXQvYm9uZDAvYm9uZGluZy9scF9pbnRlcnZhbAorCU5PVEU6IHRoZSBscF9pbnRldmFsIGlzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBiZXR3ZWVuIGluc3RhbmNlcyB3aGVyZQordGhlIGJvbmRpbmcgZHJpdmVyIHNlbmRzIGxlYXJuaW5nIHBhY2tldHMgdG8gZWFjaCBzbGF2ZXMgcGVlciBzd2l0Y2guICBUaGUKK2RlZmF1bHQgaW50ZXJ2YWwgaXMgMSBzZWNvbmQuCisKK0V4YW1wbGUgQ29uZmlndXJhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJV2UgYmVnaW4gd2l0aCB0aGUgc2FtZSBleGFtcGxlIHRoYXQgaXMgc2hvd24gaW4gc2VjdGlvbiAzLjMsCitleGVjdXRlZCB3aXRoIHN5c2ZzLCBhbmQgd2l0aG91dCB1c2luZyBpZmVuc2xhdmUuCisKKwlUbyBtYWtlIGEgc2ltcGxlIGJvbmQgb2YgdHdvIGUxMDAgZGV2aWNlcyAocHJlc3VtZWQgdG8gYmUgZXRoMAorYW5kIGV0aDEpLCBhbmQgaGF2ZSBpdCBwZXJzaXN0IGFjcm9zcyByZWJvb3RzLCBlZGl0IHRoZSBhcHByb3ByaWF0ZQorZmlsZSAoL2V0Yy9pbml0LmQvYm9vdC5sb2NhbCBvciAvZXRjL3JjLmQvcmMubG9jYWwpLCBhbmQgYWRkIHRoZQorZm9sbG93aW5nOgorCittb2Rwcm9iZSBib25kaW5nCittb2Rwcm9iZSBlMTAwCitlY2hvIGJhbGFuY2UtYWxiID4gL3N5cy9jbGFzcy9uZXQvYm9uZDAvYm9uZGluZy9tb2RlCitpZmNvbmZpZyBib25kMCAxOTIuMTY4LjEuMSBuZXRtYXNrIDI1NS4yNTUuMjU1LjAgdXAKK2VjaG8gMTAwID4gL3N5cy9jbGFzcy9uZXQvYm9uZDAvYm9uZGluZy9taWltb24KK2VjaG8gK2V0aDAgPiAvc3lzL2NsYXNzL25ldC9ib25kMC9ib25kaW5nL3NsYXZlcworZWNobyArZXRoMSA+IC9zeXMvY2xhc3MvbmV0L2JvbmQwL2JvbmRpbmcvc2xhdmVzCisKKwlUbyBhZGQgYSBzZWNvbmQgYm9uZCwgd2l0aCB0d28gZTEwMDAgaW50ZXJmYWNlcyBpbgorYWN0aXZlLWJhY2t1cCBtb2RlLCB1c2luZyBBUlAgbW9uaXRvcmluZywgYWRkIHRoZSBmb2xsb3dpbmcgbGluZXMgdG8KK3lvdXIgaW5pdCBzY3JpcHQ6CisKK21vZHByb2JlIGUxMDAwCitlY2hvICtib25kMSA+IC9zeXMvY2xhc3MvbmV0L2JvbmRpbmdfbWFzdGVycworZWNobyBhY3RpdmUtYmFja3VwID4gL3N5cy9jbGFzcy9uZXQvYm9uZDEvYm9uZGluZy9tb2RlCitpZmNvbmZpZyBib25kMSAxOTIuMTY4LjIuMSBuZXRtYXNrIDI1NS4yNTUuMjU1LjAgdXAKK2VjaG8gKzE5Mi4xNjguMi4xMDAgL3N5cy9jbGFzcy9uZXQvYm9uZDEvYm9uZGluZy9hcnBfaXBfdGFyZ2V0CitlY2hvIDIwMDAgPiAvc3lzL2NsYXNzL25ldC9ib25kMS9ib25kaW5nL2FycF9pbnRlcnZhbAorZWNobyArZXRoMiA+IC9zeXMvY2xhc3MvbmV0L2JvbmQxL2JvbmRpbmcvc2xhdmVzCitlY2hvICtldGgzID4gL3N5cy9jbGFzcy9uZXQvYm9uZDEvYm9uZGluZy9zbGF2ZXMKKworMy41IENvbmZpZ3VyYXRpb24gd2l0aCBJbnRlcmZhY2VzIFN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgICAgVGhpcyBzZWN0aW9uIGFwcGxpZXMgdG8gZGlzdHJvcyB3aGljaCB1c2UgL2V0Yy9uZXR3b3JrL2ludGVyZmFjZXMgZmlsZQordG8gZGVzY3JpYmUgbmV0d29yayBpbnRlcmZhY2UgY29uZmlndXJhdGlvbiwgbW9zdCBub3RhYmx5IERlYmlhbiBhbmQgaXQncworZGVyaXZhdGl2ZXMuCisKKwlUaGUgaWZ1cCBhbmQgaWZkb3duIGNvbW1hbmRzIG9uIERlYmlhbiBkb24ndCBzdXBwb3J0IGJvbmRpbmcgb3V0IG9mCit0aGUgYm94LiBUaGUgaWZlbnNsYXZlLTIuNiBwYWNrYWdlIHNob3VsZCBiZSBpbnN0YWxsZWQgdG8gcHJvdmlkZSBib25kaW5nCitzdXBwb3J0LiAgT25jZSBpbnN0YWxsZWQsIHRoaXMgcGFja2FnZSB3aWxsIHByb3ZpZGUgYm9uZC0qIG9wdGlvbnMgdG8gYmUgdXNlZAoraW50byAvZXRjL25ldHdvcmsvaW50ZXJmYWNlcy4KKworCU5vdGUgdGhhdCBpZmVuc2xhdmUtMi42IHBhY2thZ2Ugd2lsbCBsb2FkIHRoZSBib25kaW5nIG1vZHVsZSBhbmQgdXNlCit0aGUgaWZlbnNsYXZlIGNvbW1hbmQgd2hlbiBhcHByb3ByaWF0ZS4KKworRXhhbXBsZSBDb25maWd1cmF0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbiAvZXRjL25ldHdvcmsvaW50ZXJmYWNlcywgdGhlIGZvbGxvd2luZyBzdGFuemEgd2lsbCBjb25maWd1cmUgYm9uZDAsIGluCithY3RpdmUtYmFja3VwIG1vZGUsIHdpdGggZXRoMCBhbmQgZXRoMSBhcyBzbGF2ZXMuCisKK2F1dG8gYm9uZDAKK2lmYWNlIGJvbmQwIGluZXQgZGhjcAorCWJvbmQtc2xhdmVzIGV0aDAgZXRoMQorCWJvbmQtbW9kZSBhY3RpdmUtYmFja3VwCisJYm9uZC1taWltb24gMTAwCisJYm9uZC1wcmltYXJ5IGV0aDAgZXRoMQorCitJZiB0aGUgYWJvdmUgY29uZmlndXJhdGlvbiBkb2Vzbid0IHdvcmssIHlvdSBtaWdodCBoYXZlIGEgc3lzdGVtIHVzaW5nCit1cHN0YXJ0IGZvciBzeXN0ZW0gc3RhcnR1cC4gVGhpcyBpcyBtb3N0IG5vdGFibHkgdHJ1ZSBmb3IgcmVjZW50CitVYnVudHUgdmVyc2lvbnMuIFRoZSBmb2xsb3dpbmcgc3RhbnphIGluIC9ldGMvbmV0d29yay9pbnRlcmZhY2VzIHdpbGwKK3Byb2R1Y2UgdGhlIHNhbWUgcmVzdWx0IG9uIHRob3NlIHN5c3RlbXMuCisKK2F1dG8gYm9uZDAKK2lmYWNlIGJvbmQwIGluZXQgZGhjcAorCWJvbmQtc2xhdmVzIG5vbmUKKwlib25kLW1vZGUgYWN0aXZlLWJhY2t1cAorCWJvbmQtbWlpbW9uIDEwMAorCithdXRvIGV0aDAKK2lmYWNlIGV0aDAgaW5ldCBtYW51YWwKKwlib25kLW1hc3RlciBib25kMAorCWJvbmQtcHJpbWFyeSBldGgwIGV0aDEKKworYXV0byBldGgxCitpZmFjZSBldGgxIGluZXQgbWFudWFsCisJYm9uZC1tYXN0ZXIgYm9uZDAKKwlib25kLXByaW1hcnkgZXRoMCBldGgxCisKK0ZvciBhIGZ1bGwgbGlzdCBvZiBib25kLSogc3VwcG9ydGVkIG9wdGlvbnMgaW4gL2V0Yy9uZXR3b3JrL2ludGVyZmFjZXMgYW5kIHNvbWUKK21vcmUgYWR2YW5jZWQgZXhhbXBsZXMgdGFpbG9yZWQgdG8geW91IHBhcnRpY3VsYXIgZGlzdHJvcywgc2VlIHRoZSBmaWxlcyBpbgorL3Vzci9zaGFyZS9kb2MvaWZlbnNsYXZlLTIuNi4KKworMy42IE92ZXJyaWRpbmcgQ29uZmlndXJhdGlvbiBmb3IgU3BlY2lhbCBDYXNlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaGVuIHVzaW5nIHRoZSBib25kaW5nIGRyaXZlciwgdGhlIHBoeXNpY2FsIHBvcnQgd2hpY2ggdHJhbnNtaXRzIGEgZnJhbWUgaXMKK3R5cGljYWxseSBzZWxlY3RlZCBieSB0aGUgYm9uZGluZyBkcml2ZXIsIGFuZCBpcyBub3QgcmVsZXZhbnQgdG8gdGhlIHVzZXIgb3IKK3N5c3RlbSBhZG1pbmlzdHJhdG9yLiAgVGhlIG91dHB1dCBwb3J0IGlzIHNpbXBseSBzZWxlY3RlZCB1c2luZyB0aGUgcG9saWNpZXMgb2YKK3RoZSBzZWxlY3RlZCBib25kaW5nIG1vZGUuICBPbiBvY2Nhc2lvbiBob3dldmVyLCBpdCBpcyBoZWxwZnVsIHRvIGRpcmVjdCBjZXJ0YWluCitjbGFzc2VzIG9mIHRyYWZmaWMgdG8gY2VydGFpbiBwaHlzaWNhbCBpbnRlcmZhY2VzIG9uIG91dHB1dCB0byBpbXBsZW1lbnQKK3NsaWdodGx5IG1vcmUgY29tcGxleCBwb2xpY2llcy4gIEZvciBleGFtcGxlLCB0byByZWFjaCBhIHdlYiBzZXJ2ZXIgb3ZlciBhCitib25kZWQgaW50ZXJmYWNlIGluIHdoaWNoIGV0aDAgY29ubmVjdHMgdG8gYSBwcml2YXRlIG5ldHdvcmssIHdoaWxlIGV0aDEKK2Nvbm5lY3RzIHZpYSBhIHB1YmxpYyBuZXR3b3JrLCBpdCBtYXkgYmUgZGVzaXJvdXMgdG8gYmlhcyB0aGUgYm9uZCB0byBzZW5kIHNhaWQKK3RyYWZmaWMgb3ZlciBldGgwIGZpcnN0LCB1c2luZyBldGgxIG9ubHkgYXMgYSBmYWxsIGJhY2ssIHdoaWxlIGFsbCBvdGhlciB0cmFmZmljCitjYW4gc2FmZWx5IGJlIHNlbnQgb3ZlciBlaXRoZXIgaW50ZXJmYWNlLiAgU3VjaCBjb25maWd1cmF0aW9ucyBtYXkgYmUgYWNoaWV2ZWQKK3VzaW5nIHRoZSB0cmFmZmljIGNvbnRyb2wgdXRpbGl0aWVzIGluaGVyZW50IGluIGxpbnV4LgorCitCeSBkZWZhdWx0IHRoZSBib25kaW5nIGRyaXZlciBpcyBtdWx0aXF1ZXVlIGF3YXJlIGFuZCAxNiBxdWV1ZXMgYXJlIGNyZWF0ZWQKK3doZW4gdGhlIGRyaXZlciBpbml0aWFsaXplcyAoc2VlIERvY3VtZW50YXRpb24vbmV0d29ya2luZy9tdWx0aXF1ZXVlLnR4dAorZm9yIGRldGFpbHMpLiAgSWYgbW9yZSBvciBsZXNzIHF1ZXVlcyBhcmUgZGVzaXJlZCB0aGUgbW9kdWxlIHBhcmFtZXRlcgordHhfcXVldWVzIGNhbiBiZSB1c2VkIHRvIGNoYW5nZSB0aGlzIHZhbHVlLiAgVGhlcmUgaXMgbm8gc3lzZnMgcGFyYW1ldGVyCithdmFpbGFibGUgYXMgdGhlIGFsbG9jYXRpb24gaXMgZG9uZSBhdCBtb2R1bGUgaW5pdCB0aW1lLgorCitUaGUgb3V0cHV0IG9mIHRoZSBmaWxlIC9wcm9jL25ldC9ib25kaW5nL2JvbmRYIGhhcyBjaGFuZ2VkIHNvIHRoZSBvdXRwdXQgUXVldWUKK0lEIGlzIG5vdyBwcmludGVkIGZvciBlYWNoIHNsYXZlOgorCitCb25kaW5nIE1vZGU6IGZhdWx0LXRvbGVyYW5jZSAoYWN0aXZlLWJhY2t1cCkKK1ByaW1hcnkgU2xhdmU6IE5vbmUKK0N1cnJlbnRseSBBY3RpdmUgU2xhdmU6IGV0aDAKK01JSSBTdGF0dXM6IHVwCitNSUkgUG9sbGluZyBJbnRlcnZhbCAobXMpOiAwCitVcCBEZWxheSAobXMpOiAwCitEb3duIERlbGF5IChtcyk6IDAKKworU2xhdmUgSW50ZXJmYWNlOiBldGgwCitNSUkgU3RhdHVzOiB1cAorTGluayBGYWlsdXJlIENvdW50OiAwCitQZXJtYW5lbnQgSFcgYWRkcjogMDA6MWE6YTA6MTI6OGY6Y2IKK1NsYXZlIHF1ZXVlIElEOiAwCisKK1NsYXZlIEludGVyZmFjZTogZXRoMQorTUlJIFN0YXR1czogdXAKK0xpbmsgRmFpbHVyZSBDb3VudDogMAorUGVybWFuZW50IEhXIGFkZHI6IDAwOjFhOmEwOjEyOjhmOmNjCitTbGF2ZSBxdWV1ZSBJRDogMgorCitUaGUgcXVldWVfaWQgZm9yIGEgc2xhdmUgY2FuIGJlIHNldCB1c2luZyB0aGUgY29tbWFuZDoKKworIyBlY2hvICJldGgxOjIiID4gL3N5cy9jbGFzcy9uZXQvYm9uZDAvYm9uZGluZy9xdWV1ZV9pZAorCitBbnkgaW50ZXJmYWNlIHRoYXQgbmVlZHMgYSBxdWV1ZV9pZCBzZXQgc2hvdWxkIHNldCBpdCB3aXRoIG11bHRpcGxlIGNhbGxzCitsaWtlIHRoZSBvbmUgYWJvdmUgdW50aWwgcHJvcGVyIHByaW9yaXRpZXMgYXJlIHNldCBmb3IgYWxsIGludGVyZmFjZXMuICBPbgorZGlzdHJpYnV0aW9ucyB0aGF0IGFsbG93IGNvbmZpZ3VyYXRpb24gdmlhIGluaXRzY3JpcHRzLCBtdWx0aXBsZSAncXVldWVfaWQnCithcmd1bWVudHMgY2FuIGJlIGFkZGVkIHRvIEJPTkRJTkdfT1BUUyB0byBzZXQgYWxsIG5lZWRlZCBzbGF2ZSBxdWV1ZXMuCisKK1RoZXNlIHF1ZXVlIGlkJ3MgY2FuIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgdGMgdXRpbGl0eSB0byBjb25maWd1cmUKK2EgbXVsdGlxdWV1ZSBxZGlzYyBhbmQgZmlsdGVycyB0byBiaWFzIGNlcnRhaW4gdHJhZmZpYyB0byB0cmFuc21pdCBvbiBjZXJ0YWluCitzbGF2ZSBkZXZpY2VzLiAgRm9yIGluc3RhbmNlLCBzYXkgd2Ugd2FudGVkLCBpbiB0aGUgYWJvdmUgY29uZmlndXJhdGlvbiB0bworZm9yY2UgYWxsIHRyYWZmaWMgYm91bmQgdG8gMTkyLjE2OC4xLjEwMCB0byB1c2UgZXRoMSBpbiB0aGUgYm9uZCBhcyBpdHMgb3V0cHV0CitkZXZpY2UuIFRoZSBmb2xsb3dpbmcgY29tbWFuZHMgd291bGQgYWNjb21wbGlzaCB0aGlzOgorCisjIHRjIHFkaXNjIGFkZCBkZXYgYm9uZDAgaGFuZGxlIDEgcm9vdCBtdWx0aXEKKworIyB0YyBmaWx0ZXIgYWRkIGRldiBib25kMCBwcm90b2NvbCBpcCBwYXJlbnQgMTogcHJpbyAxIHUzMiBtYXRjaCBpcCBkc3QgXAorCTE5Mi4xNjguMS4xMDAgYWN0aW9uIHNrYmVkaXQgcXVldWVfbWFwcGluZyAyCisKK1RoZXNlIGNvbW1hbmRzIHRlbGwgdGhlIGtlcm5lbCB0byBhdHRhY2ggYSBtdWx0aXF1ZXVlIHF1ZXVlIGRpc2NpcGxpbmUgdG8gdGhlCitib25kMCBpbnRlcmZhY2UgYW5kIGZpbHRlciB0cmFmZmljIGVucXVldWVkIHRvIGl0LCBzdWNoIHRoYXQgcGFja2V0cyB3aXRoIGEgZHN0CitpcCBvZiAxOTIuMTY4LjEuMTAwIGhhdmUgdGhlaXIgb3V0cHV0IHF1ZXVlIG1hcHBpbmcgdmFsdWUgb3ZlcndyaXR0ZW4gdG8gMi4KK1RoaXMgdmFsdWUgaXMgdGhlbiBwYXNzZWQgaW50byB0aGUgZHJpdmVyLCBjYXVzaW5nIHRoZSBub3JtYWwgb3V0cHV0IHBhdGgKK3NlbGVjdGlvbiBwb2xpY3kgdG8gYmUgb3ZlcnJpZGRlbiwgc2VsZWN0aW5nIGluc3RlYWQgcWlkIDIsIHdoaWNoIG1hcHMgdG8gZXRoMS4KKworTm90ZSB0aGF0IHFpZCB2YWx1ZXMgYmVnaW4gYXQgMS4gIFFpZCAwIGlzIHJlc2VydmVkIHRvIGluaXRpYXRlIHRvIHRoZSBkcml2ZXIKK3RoYXQgbm9ybWFsIG91dHB1dCBwb2xpY3kgc2VsZWN0aW9uIHNob3VsZCB0YWtlIHBsYWNlLiAgT25lIGJlbmVmaXQgdG8gc2ltcGx5CitsZWF2aW5nIHRoZSBxaWQgZm9yIGEgc2xhdmUgdG8gMCBpcyB0aGUgbXVsdGlxdWV1ZSBhd2FyZW5lc3MgaW4gdGhlIGJvbmRpbmcKK2RyaXZlciB0aGF0IGlzIG5vdyBwcmVzZW50LiAgVGhpcyBhd2FyZW5lc3MgYWxsb3dzIHRjIGZpbHRlcnMgdG8gYmUgcGxhY2VkIG9uCitzbGF2ZSBkZXZpY2VzIGFzIHdlbGwgYXMgYm9uZCBkZXZpY2VzIGFuZCB0aGUgYm9uZGluZyBkcml2ZXIgd2lsbCBzaW1wbHkgYWN0IGFzCithIHBhc3MtdGhyb3VnaCBmb3Igc2VsZWN0aW5nIG91dHB1dCBxdWV1ZXMgb24gdGhlIHNsYXZlIGRldmljZSByYXRoZXIgdGhhbiAKK291dHB1dCBwb3J0IHNlbGVjdGlvbi4KKworVGhpcyBmZWF0dXJlIGZpcnN0IGFwcGVhcmVkIGluIGJvbmRpbmcgZHJpdmVyIHZlcnNpb24gMy43LjAgYW5kIHN1cHBvcnQgZm9yCitvdXRwdXQgc2xhdmUgc2VsZWN0aW9uIHdhcyBsaW1pdGVkIHRvIHJvdW5kLXJvYmluIGFuZCBhY3RpdmUtYmFja3VwIG1vZGVzLgorCiszLjcgQ29uZmlndXJpbmcgTEFDUCBmb3IgODAyLjNhZCBtb2RlIGluIGEgbW9yZSBzZWN1cmUgd2F5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doZW4gdXNpbmcgODAyLjNhZCBib25kaW5nIG1vZGUsIHRoZSBBY3RvciAoaG9zdCkgYW5kIFBhcnRuZXIgKHN3aXRjaCkKK2V4Y2hhbmdlIExBQ1BEVXMuICBUaGVzZSBMQUNQRFVzIGNhbm5vdCBiZSBzbmlmZmVkLCBiZWNhdXNlIHRoZXkgYXJlCitkZXN0aW5lZCB0byBsaW5rIGxvY2FsIG1hYyBhZGRyZXNzZXMgKHdoaWNoIHN3aXRjaGVzL2JyaWRnZXMgYXJlIG5vdAorc3VwcG9zZWQgdG8gZm9yd2FyZCkuICBIb3dldmVyLCBtb3N0IG9mIHRoZSB2YWx1ZXMgYXJlIGVhc2lseSBwcmVkaWN0YWJsZQorb3IgYXJlIHNpbXBseSB0aGUgbWFjaGluZSdzIE1BQyBhZGRyZXNzICh3aGljaCBpcyB0cml2aWFsbHkga25vd24gdG8gYWxsCitvdGhlciBob3N0cyBpbiB0aGUgc2FtZSBMMikuICBUaGlzIGltcGxpZXMgdGhhdCBvdGhlciBtYWNoaW5lcyBpbiB0aGUgTDIKK2RvbWFpbiBjYW4gc3Bvb2YgTEFDUERVIHBhY2tldHMgZnJvbSBvdGhlciBob3N0cyB0byB0aGUgc3dpdGNoIGFuZCBwb3RlbnRpYWxseQorY2F1c2UgbWF5aGVtIGJ5IGpvaW5pbmcgKGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdGhlIHN3aXRjaCkgYW5vdGhlcgorbWFjaGluZSdzIGFnZ3JlZ2F0ZSwgdGh1cyByZWNlaXZpbmcgYSBwb3J0aW9uIG9mIHRoYXQgaG9zdHMgaW5jb21pbmcKK3RyYWZmaWMgYW5kIC8gb3Igc3Bvb2ZpbmcgdHJhZmZpYyBmcm9tIHRoYXQgbWFjaGluZSB0aGVtc2VsdmVzIChwb3RlbnRpYWxseQorZXZlbiBzdWNjZXNzZnVsbHkgdGVybWluYXRpbmcgc29tZSBwb3J0aW9uIG9mIGZsb3dzKS4gVGhvdWdoIHRoaXMgaXMgbm90CithIGxpa2VseSBzY2VuYXJpbywgb25lIGNvdWxkIGF2b2lkIHRoaXMgcG9zc2liaWxpdHkgYnkgc2ltcGx5IGNvbmZpZ3VyaW5nCitmZXcgYm9uZGluZyBwYXJhbWV0ZXJzOgorCisgICAoYSkgYWRfYWN0b3Jfc3lzdGVtIDogWW91IGNhbiBzZXQgYSByYW5kb20gbWFjLWFkZHJlc3MgdGhhdCBjYW4gYmUgdXNlZCBmb3IKKyAgICAgICB0aGVzZSBMQUNQRFUgZXhjaGFuZ2VzLiBUaGUgdmFsdWUgY2FuIG5vdCBiZSBlaXRoZXIgTlVMTCBvciBNdWx0aWNhc3QuCisgICAgICAgQWxzbyBpdCdzIHByZWZlcmFibGUgdG8gc2V0IHRoZSBsb2NhbC1hZG1pbiBiaXQuIEZvbGxvd2luZyBzaGVsbCBjb2RlCisgICAgICAgZ2VuZXJhdGVzIGEgcmFuZG9tIG1hYy1hZGRyZXNzIGFzIGRlc2NyaWJlZCBhYm92ZS4KKworICAgICAgICMgc3lzX21hY19hZGRyPSQocHJpbnRmICclMDJ4OiUwMng6JTAyeDolMDJ4OiUwMng6JTAyeCcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCggKFJBTkRPTSAmIDB4RkUpIHwgMHgwMiApKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoKCBSQU5ET00gJiAweEZGICkpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgoIFJBTkRPTSAmIDB4RkYgKSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCggUkFORE9NICYgMHhGRiApKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoKCBSQU5ET00gJiAweEZGICkpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgoIFJBTkRPTSAmIDB4RkYgKSkpCisgICAgICAgIyBlY2hvICRzeXNfbWFjX2FkZHIgPiAvc3lzL2NsYXNzL25ldC9ib25kMC9ib25kaW5nL2FkX2FjdG9yX3N5c3RlbQorCisgICAoYikgYWRfYWN0b3Jfc3lzX3ByaW8gOiBSYW5kb21pemUgdGhlIHN5c3RlbSBwcmlvcml0eS4gVGhlIGRlZmF1bHQgdmFsdWUKKyAgICAgICBpcyA2NTUzNSwgYnV0IHN5c3RlbSBjYW4gdGFrZSB0aGUgdmFsdWUgZnJvbSAxIC0gNjU1MzUuIEZvbGxvd2luZyBzaGVsbAorICAgICAgIGNvZGUgZ2VuZXJhdGVzIHJhbmRvbSBwcmlvcml0eSBhbmQgc2V0cyBpdC4KKworICAgICAgICMgc3lzX3ByaW89JCgoIDEgKyBSQU5ET00gKyBSQU5ET00gKSkKKyAgICAgICAjIGVjaG8gJHN5c19wcmlvID4gL3N5cy9jbGFzcy9uZXQvYm9uZDAvYm9uZGluZy9hZF9hY3Rvcl9zeXNfcHJpbworCisgICAoYykgYWRfdXNlcl9wb3J0X2tleSA6IFVzZSB0aGUgdXNlciBwb3J0aW9uIG9mIHRoZSBwb3J0LWtleS4gVGhlIGRlZmF1bHQKKyAgICAgICBrZWVwcyB0aGlzIGVtcHR5LiBUaGVzZSBhcmUgdGhlIHVwcGVyIDEwIGJpdHMgb2YgdGhlIHBvcnQta2V5IGFuZCB2YWx1ZQorICAgICAgIHJhbmdlcyBmcm9tIDAgLSAxMDIzLiBGb2xsb3dpbmcgc2hlbGwgY29kZSBnZW5lcmF0ZXMgdGhlc2UgMTAgYml0cyBhbmQKKyAgICAgICBzZXRzIGl0LgorCisgICAgICAgIyB1c3JfcG9ydF9rZXk9JCgoIFJBTkRPTSAmIDB4M0ZGICkpCisgICAgICAgIyBlY2hvICR1c3JfcG9ydF9rZXkgPiAvc3lzL2NsYXNzL25ldC9ib25kMC9ib25kaW5nL2FkX3VzZXJfcG9ydF9rZXkKKworCis0IFF1ZXJ5aW5nIEJvbmRpbmcgQ29uZmlndXJhdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzQuMSBCb25kaW5nIENvbmZpZ3VyYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCUVhY2ggYm9uZGluZyBkZXZpY2UgaGFzIGEgcmVhZC1vbmx5IGZpbGUgcmVzaWRpbmcgaW4gdGhlCisvcHJvYy9uZXQvYm9uZGluZyBkaXJlY3RvcnkuICBUaGUgZmlsZSBjb250ZW50cyBpbmNsdWRlIGluZm9ybWF0aW9uCithYm91dCB0aGUgYm9uZGluZyBjb25maWd1cmF0aW9uLCBvcHRpb25zIGFuZCBzdGF0ZSBvZiBlYWNoIHNsYXZlLgorCisJRm9yIGV4YW1wbGUsIHRoZSBjb250ZW50cyBvZiAvcHJvYy9uZXQvYm9uZGluZy9ib25kMCBhZnRlciB0aGUKK2RyaXZlciBpcyBsb2FkZWQgd2l0aCBwYXJhbWV0ZXJzIG9mIG1vZGU9MCBhbmQgbWlpbW9uPTEwMDAgaXMKK2dlbmVyYWxseSBhcyBmb2xsb3dzOgorCisJRXRoZXJuZXQgQ2hhbm5lbCBCb25kaW5nIERyaXZlcjogMi42LjEgKE9jdG9iZXIgMjksIDIwMDQpCisgICAgICAgIEJvbmRpbmcgTW9kZTogbG9hZCBiYWxhbmNpbmcgKHJvdW5kLXJvYmluKQorICAgICAgICBDdXJyZW50bHkgQWN0aXZlIFNsYXZlOiBldGgwCisgICAgICAgIE1JSSBTdGF0dXM6IHVwCisgICAgICAgIE1JSSBQb2xsaW5nIEludGVydmFsIChtcyk6IDEwMDAKKyAgICAgICAgVXAgRGVsYXkgKG1zKTogMAorICAgICAgICBEb3duIERlbGF5IChtcyk6IDAKKworICAgICAgICBTbGF2ZSBJbnRlcmZhY2U6IGV0aDEKKyAgICAgICAgTUlJIFN0YXR1czogdXAKKyAgICAgICAgTGluayBGYWlsdXJlIENvdW50OiAxCisKKyAgICAgICAgU2xhdmUgSW50ZXJmYWNlOiBldGgwCisgICAgICAgIE1JSSBTdGF0dXM6IHVwCisgICAgICAgIExpbmsgRmFpbHVyZSBDb3VudDogMQorCisJVGhlIHByZWNpc2UgZm9ybWF0IGFuZCBjb250ZW50cyB3aWxsIGNoYW5nZSBkZXBlbmRpbmcgdXBvbiB0aGUKK2JvbmRpbmcgY29uZmlndXJhdGlvbiwgc3RhdGUsIGFuZCB2ZXJzaW9uIG9mIHRoZSBib25kaW5nIGRyaXZlci4KKworNC4yIE5ldHdvcmsgY29uZmlndXJhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJVGhlIG5ldHdvcmsgY29uZmlndXJhdGlvbiBjYW4gYmUgaW5zcGVjdGVkIHVzaW5nIHRoZSBpZmNvbmZpZworY29tbWFuZC4gIEJvbmRpbmcgZGV2aWNlcyB3aWxsIGhhdmUgdGhlIE1BU1RFUiBmbGFnIHNldDsgQm9uZGluZyBzbGF2ZQorZGV2aWNlcyB3aWxsIGhhdmUgdGhlIFNMQVZFIGZsYWcgc2V0LiAgVGhlIGlmY29uZmlnIG91dHB1dCBkb2VzIG5vdAorY29udGFpbiBpbmZvcm1hdGlvbiBvbiB3aGljaCBzbGF2ZXMgYXJlIGFzc29jaWF0ZWQgd2l0aCB3aGljaCBtYXN0ZXJzLgorCisJSW4gdGhlIGV4YW1wbGUgYmVsb3csIHRoZSBib25kMCBpbnRlcmZhY2UgaXMgdGhlIG1hc3RlcgorKE1BU1RFUikgd2hpbGUgZXRoMCBhbmQgZXRoMSBhcmUgc2xhdmVzIChTTEFWRSkuIE5vdGljZSBhbGwgc2xhdmVzIG9mCitib25kMCBoYXZlIHRoZSBzYW1lIE1BQyBhZGRyZXNzIChIV2FkZHIpIGFzIGJvbmQwIGZvciBhbGwgbW9kZXMgZXhjZXB0CitUTEIgYW5kIEFMQiB0aGF0IHJlcXVpcmUgYSB1bmlxdWUgTUFDIGFkZHJlc3MgZm9yIGVhY2ggc2xhdmUuCisKKyMgL3NiaW4vaWZjb25maWcKK2JvbmQwICAgICBMaW5rIGVuY2FwOkV0aGVybmV0ICBIV2FkZHIgMDA6QzA6RjA6MUY6Mzc6QjQKKyAgICAgICAgICBpbmV0IGFkZHI6WFhYLlhYWC5YWFguWVlZICBCY2FzdDpYWFguWFhYLlhYWC4yNTUgIE1hc2s6MjU1LjI1NS4yNTIuMAorICAgICAgICAgIFVQIEJST0FEQ0FTVCBSVU5OSU5HIE1BU1RFUiBNVUxUSUNBU1QgIE1UVToxNTAwICBNZXRyaWM6MQorICAgICAgICAgIFJYIHBhY2tldHM6NzIyNDc5NCBlcnJvcnM6MCBkcm9wcGVkOjAgb3ZlcnJ1bnM6MCBmcmFtZTowCisgICAgICAgICAgVFggcGFja2V0czozMjg2NjQ3IGVycm9yczoxIGRyb3BwZWQ6MCBvdmVycnVuczoxIGNhcnJpZXI6MAorICAgICAgICAgIGNvbGxpc2lvbnM6MCB0eHF1ZXVlbGVuOjAKKworZXRoMCAgICAgIExpbmsgZW5jYXA6RXRoZXJuZXQgIEhXYWRkciAwMDpDMDpGMDoxRjozNzpCNAorICAgICAgICAgIFVQIEJST0FEQ0FTVCBSVU5OSU5HIFNMQVZFIE1VTFRJQ0FTVCAgTVRVOjE1MDAgIE1ldHJpYzoxCisgICAgICAgICAgUlggcGFja2V0czozNTczMDI1IGVycm9yczowIGRyb3BwZWQ6MCBvdmVycnVuczowIGZyYW1lOjAKKyAgICAgICAgICBUWCBwYWNrZXRzOjE2NDMxNjcgZXJyb3JzOjEgZHJvcHBlZDowIG92ZXJydW5zOjEgY2FycmllcjowCisgICAgICAgICAgY29sbGlzaW9uczowIHR4cXVldWVsZW46MTAwCisgICAgICAgICAgSW50ZXJydXB0OjEwIEJhc2UgYWRkcmVzczoweDEwODAKKworZXRoMSAgICAgIExpbmsgZW5jYXA6RXRoZXJuZXQgIEhXYWRkciAwMDpDMDpGMDoxRjozNzpCNAorICAgICAgICAgIFVQIEJST0FEQ0FTVCBSVU5OSU5HIFNMQVZFIE1VTFRJQ0FTVCAgTVRVOjE1MDAgIE1ldHJpYzoxCisgICAgICAgICAgUlggcGFja2V0czozNjUxNzY5IGVycm9yczowIGRyb3BwZWQ6MCBvdmVycnVuczowIGZyYW1lOjAKKyAgICAgICAgICBUWCBwYWNrZXRzOjE2NDM0ODAgZXJyb3JzOjAgZHJvcHBlZDowIG92ZXJydW5zOjAgY2FycmllcjowCisgICAgICAgICAgY29sbGlzaW9uczowIHR4cXVldWVsZW46MTAwCisgICAgICAgICAgSW50ZXJydXB0OjkgQmFzZSBhZGRyZXNzOjB4MTQwMAorCis1LiBTd2l0Y2ggQ29uZmlndXJhdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT0KKworCUZvciB0aGlzIHNlY3Rpb24sICJzd2l0Y2giIHJlZmVycyB0byB3aGF0ZXZlciBzeXN0ZW0gdGhlCitib25kZWQgZGV2aWNlcyBhcmUgZGlyZWN0bHkgY29ubmVjdGVkIHRvIChpLmUuLCB3aGVyZSB0aGUgb3RoZXIgZW5kIG9mCit0aGUgY2FibGUgcGx1Z3MgaW50bykuICBUaGlzIG1heSBiZSBhbiBhY3R1YWwgZGVkaWNhdGVkIHN3aXRjaCBkZXZpY2UsCitvciBpdCBtYXkgYmUgYW5vdGhlciByZWd1bGFyIHN5c3RlbSAoZS5nLiwgYW5vdGhlciBjb21wdXRlciBydW5uaW5nCitMaW51eCksCisKKwlUaGUgYWN0aXZlLWJhY2t1cCwgYmFsYW5jZS10bGIgYW5kIGJhbGFuY2UtYWxiIG1vZGVzIGRvIG5vdAorcmVxdWlyZSBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvZiB0aGUgc3dpdGNoLgorCisJVGhlIDgwMi4zYWQgbW9kZSByZXF1aXJlcyB0aGF0IHRoZSBzd2l0Y2ggaGF2ZSB0aGUgYXBwcm9wcmlhdGUKK3BvcnRzIGNvbmZpZ3VyZWQgYXMgYW4gODAyLjNhZCBhZ2dyZWdhdGlvbi4gIFRoZSBwcmVjaXNlIG1ldGhvZCB1c2VkCit0byBjb25maWd1cmUgdGhpcyB2YXJpZXMgZnJvbSBzd2l0Y2ggdG8gc3dpdGNoLCBidXQsIGZvciBleGFtcGxlLCBhCitDaXNjbyAzNTUwIHNlcmllcyBzd2l0Y2ggcmVxdWlyZXMgdGhhdCB0aGUgYXBwcm9wcmlhdGUgcG9ydHMgZmlyc3QgYmUKK2dyb3VwZWQgdG9nZXRoZXIgaW4gYSBzaW5nbGUgZXRoZXJjaGFubmVsIGluc3RhbmNlLCB0aGVuIHRoYXQKK2V0aGVyY2hhbm5lbCBpcyBzZXQgdG8gbW9kZSAibGFjcCIgdG8gZW5hYmxlIDgwMi4zYWQgKGluc3RlYWQgb2YKK3N0YW5kYXJkIEV0aGVyQ2hhbm5lbCkuCisKKwlUaGUgYmFsYW5jZS1yciwgYmFsYW5jZS14b3IgYW5kIGJyb2FkY2FzdCBtb2RlcyBnZW5lcmFsbHkKK3JlcXVpcmUgdGhhdCB0aGUgc3dpdGNoIGhhdmUgdGhlIGFwcHJvcHJpYXRlIHBvcnRzIGdyb3VwZWQgdG9nZXRoZXIuCitUaGUgbm9tZW5jbGF0dXJlIGZvciBzdWNoIGEgZ3JvdXAgZGlmZmVycyBiZXR3ZWVuIHN3aXRjaGVzLCBpdCBtYXkgYmUKK2NhbGxlZCBhbiAiZXRoZXJjaGFubmVsIiAoYXMgaW4gdGhlIENpc2NvIGV4YW1wbGUsIGFib3ZlKSwgYSAidHJ1bmsKK2dyb3VwIiBvciBzb21lIG90aGVyIHNpbWlsYXIgdmFyaWF0aW9uLiAgRm9yIHRoZXNlIG1vZGVzLCBlYWNoIHN3aXRjaAord2lsbCBhbHNvIGhhdmUgaXRzIG93biBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBzd2l0Y2gncyB0cmFuc21pdAorcG9saWN5IHRvIHRoZSBib25kLiAgVHlwaWNhbCBjaG9pY2VzIGluY2x1ZGUgWE9SIG9mIGVpdGhlciB0aGUgTUFDIG9yCitJUCBhZGRyZXNzZXMuICBUaGUgdHJhbnNtaXQgcG9saWN5IG9mIHRoZSB0d28gcGVlcnMgZG9lcyBub3QgbmVlZCB0bworbWF0Y2guICBGb3IgdGhlc2UgdGhyZWUgbW9kZXMsIHRoZSBib25kaW5nIG1vZGUgcmVhbGx5IHNlbGVjdHMgYQordHJhbnNtaXQgcG9saWN5IGZvciBhbiBFdGhlckNoYW5uZWwgZ3JvdXA7IGFsbCB0aHJlZSB3aWxsIGludGVyb3BlcmF0ZQord2l0aCBhbm90aGVyIEV0aGVyQ2hhbm5lbCBncm91cC4KKworCis2LiA4MDIuMXEgVkxBTiBTdXBwb3J0Cis9PT09PT09PT09PT09PT09PT09PT09CisKKwlJdCBpcyBwb3NzaWJsZSB0byBjb25maWd1cmUgVkxBTiBkZXZpY2VzIG92ZXIgYSBib25kIGludGVyZmFjZQordXNpbmcgdGhlIDgwMjFxIGRyaXZlci4gIEhvd2V2ZXIsIG9ubHkgcGFja2V0cyBjb21pbmcgZnJvbSB0aGUgODAyMXEKK2RyaXZlciBhbmQgcGFzc2luZyB0aHJvdWdoIGJvbmRpbmcgd2lsbCBiZSB0YWdnZWQgYnkgZGVmYXVsdC4gIFNlbGYKK2dlbmVyYXRlZCBwYWNrZXRzLCBmb3IgZXhhbXBsZSwgYm9uZGluZydzIGxlYXJuaW5nIHBhY2tldHMgb3IgQVJQCitwYWNrZXRzIGdlbmVyYXRlZCBieSBlaXRoZXIgQUxCIG1vZGUgb3IgdGhlIEFSUCBtb25pdG9yIG1lY2hhbmlzbSwgYXJlCit0YWdnZWQgaW50ZXJuYWxseSBieSBib25kaW5nIGl0c2VsZi4gIEFzIGEgcmVzdWx0LCBib25kaW5nIG11c3QKKyJsZWFybiIgdGhlIFZMQU4gSURzIGNvbmZpZ3VyZWQgYWJvdmUgaXQsIGFuZCB1c2UgdGhvc2UgSURzIHRvIHRhZworc2VsZiBnZW5lcmF0ZWQgcGFja2V0cy4KKworCUZvciByZWFzb25zIG9mIHNpbXBsaWNpdHksIGFuZCB0byBzdXBwb3J0IHRoZSB1c2Ugb2YgYWRhcHRlcnMKK3RoYXQgY2FuIGRvIFZMQU4gaGFyZHdhcmUgYWNjZWxlcmF0aW9uIG9mZmxvYWRpbmcsIHRoZSBib25kaW5nCitpbnRlcmZhY2UgZGVjbGFyZXMgaXRzZWxmIGFzIGZ1bGx5IGhhcmR3YXJlIG9mZmxvYWRpbmcgY2FwYWJsZSwgaXQgZ2V0cwordGhlIGFkZF92aWQva2lsbF92aWQgbm90aWZpY2F0aW9ucyB0byBnYXRoZXIgdGhlIG5lY2Vzc2FyeQoraW5mb3JtYXRpb24sIGFuZCBpdCBwcm9wYWdhdGVzIHRob3NlIGFjdGlvbnMgdG8gdGhlIHNsYXZlcy4gIEluIGNhc2UKK29mIG1peGVkIGFkYXB0ZXIgdHlwZXMsIGhhcmR3YXJlIGFjY2VsZXJhdGVkIHRhZ2dlZCBwYWNrZXRzIHRoYXQKK3Nob3VsZCBnbyB0aHJvdWdoIGFuIGFkYXB0ZXIgdGhhdCBpcyBub3Qgb2ZmbG9hZGluZyBjYXBhYmxlIGFyZQorInVuLWFjY2VsZXJhdGVkIiBieSB0aGUgYm9uZGluZyBkcml2ZXIgc28gdGhlIFZMQU4gdGFnIHNpdHMgaW4gdGhlCityZWd1bGFyIGxvY2F0aW9uLgorCisJVkxBTiBpbnRlcmZhY2VzICptdXN0KiBiZSBhZGRlZCBvbiB0b3Agb2YgYSBib25kaW5nIGludGVyZmFjZQorb25seSBhZnRlciBlbnNsYXZpbmcgYXQgbGVhc3Qgb25lIHNsYXZlLiAgVGhlIGJvbmRpbmcgaW50ZXJmYWNlIGhhcyBhCitoYXJkd2FyZSBhZGRyZXNzIG9mIDAwOjAwOjAwOjAwOjAwOjAwIHVudGlsIHRoZSBmaXJzdCBzbGF2ZSBpcyBhZGRlZC4KK0lmIHRoZSBWTEFOIGludGVyZmFjZSBpcyBjcmVhdGVkIHByaW9yIHRvIHRoZSBmaXJzdCBlbnNsYXZlbWVudCwgaXQKK3dvdWxkIHBpY2sgdXAgdGhlIGFsbC16ZXJvZXMgaGFyZHdhcmUgYWRkcmVzcy4gIE9uY2UgdGhlIGZpcnN0IHNsYXZlCitpcyBhdHRhY2hlZCB0byB0aGUgYm9uZCwgdGhlIGJvbmQgZGV2aWNlIGl0c2VsZiB3aWxsIHBpY2sgdXAgdGhlCitzbGF2ZSdzIGhhcmR3YXJlIGFkZHJlc3MsIHdoaWNoIGlzIHRoZW4gYXZhaWxhYmxlIGZvciB0aGUgVkxBTiBkZXZpY2UuCisKKwlBbHNvLCBiZSBhd2FyZSB0aGF0IGEgc2ltaWxhciBwcm9ibGVtIGNhbiBvY2N1ciBpZiBhbGwgc2xhdmVzCithcmUgcmVsZWFzZWQgZnJvbSBhIGJvbmQgdGhhdCBzdGlsbCBoYXMgb25lIG9yIG1vcmUgVkxBTiBpbnRlcmZhY2VzIG9uCit0b3Agb2YgaXQuICBXaGVuIGEgbmV3IHNsYXZlIGlzIGFkZGVkLCB0aGUgYm9uZGluZyBpbnRlcmZhY2Ugd2lsbAorb2J0YWluIGl0cyBoYXJkd2FyZSBhZGRyZXNzIGZyb20gdGhlIGZpcnN0IHNsYXZlLCB3aGljaCBtaWdodCBub3QKK21hdGNoIHRoZSBoYXJkd2FyZSBhZGRyZXNzIG9mIHRoZSBWTEFOIGludGVyZmFjZXMgKHdoaWNoIHdhcwordWx0aW1hdGVseSBjb3BpZWQgZnJvbSBhbiBlYXJsaWVyIHNsYXZlKS4KKworCVRoZXJlIGFyZSB0d28gbWV0aG9kcyB0byBpbnN1cmUgdGhhdCB0aGUgVkxBTiBkZXZpY2Ugb3BlcmF0ZXMKK3dpdGggdGhlIGNvcnJlY3QgaGFyZHdhcmUgYWRkcmVzcyBpZiBhbGwgc2xhdmVzIGFyZSByZW1vdmVkIGZyb20gYQorYm9uZCBpbnRlcmZhY2U6CisKKwkxLiBSZW1vdmUgYWxsIFZMQU4gaW50ZXJmYWNlcyB0aGVuIHJlY3JlYXRlIHRoZW0KKworCTIuIFNldCB0aGUgYm9uZGluZyBpbnRlcmZhY2UncyBoYXJkd2FyZSBhZGRyZXNzIHNvIHRoYXQgaXQKK21hdGNoZXMgdGhlIGhhcmR3YXJlIGFkZHJlc3Mgb2YgdGhlIFZMQU4gaW50ZXJmYWNlcy4KKworCU5vdGUgdGhhdCBjaGFuZ2luZyBhIFZMQU4gaW50ZXJmYWNlJ3MgSFcgYWRkcmVzcyB3b3VsZCBzZXQgdGhlCit1bmRlcmx5aW5nIGRldmljZSAtLSBpLmUuIHRoZSBib25kaW5nIGludGVyZmFjZSAtLSB0byBwcm9taXNjdW91cworbW9kZSwgd2hpY2ggbWlnaHQgbm90IGJlIHdoYXQgeW91IHdhbnQuCisKKworNy4gTGluayBNb25pdG9yaW5nCis9PT09PT09PT09PT09PT09PT0KKworCVRoZSBib25kaW5nIGRyaXZlciBhdCBwcmVzZW50IHN1cHBvcnRzIHR3byBzY2hlbWVzIGZvcgorbW9uaXRvcmluZyBhIHNsYXZlIGRldmljZSdzIGxpbmsgc3RhdGU6IHRoZSBBUlAgbW9uaXRvciBhbmQgdGhlIE1JSQorbW9uaXRvci4KKworCUF0IHRoZSBwcmVzZW50IHRpbWUsIGR1ZSB0byBpbXBsZW1lbnRhdGlvbiByZXN0cmljdGlvbnMgaW4gdGhlCitib25kaW5nIGRyaXZlciBpdHNlbGYsIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBlbmFibGUgYm90aCBBUlAgYW5kIE1JSQorbW9uaXRvcmluZyBzaW11bHRhbmVvdXNseS4KKworNy4xIEFSUCBNb25pdG9yIE9wZXJhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJVGhlIEFSUCBtb25pdG9yIG9wZXJhdGVzIGFzIGl0cyBuYW1lIHN1Z2dlc3RzOiBpdCBzZW5kcyBBUlAKK3F1ZXJpZXMgdG8gb25lIG9yIG1vcmUgZGVzaWduYXRlZCBwZWVyIHN5c3RlbXMgb24gdGhlIG5ldHdvcmssIGFuZAordXNlcyB0aGUgcmVzcG9uc2UgYXMgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZSBsaW5rIGlzIG9wZXJhdGluZy4gIFRoaXMKK2dpdmVzIHNvbWUgYXNzdXJhbmNlIHRoYXQgdHJhZmZpYyBpcyBhY3R1YWxseSBmbG93aW5nIHRvIGFuZCBmcm9tIG9uZQorb3IgbW9yZSBwZWVycyBvbiB0aGUgbG9jYWwgbmV0d29yay4KKworCVRoZSBBUlAgbW9uaXRvciByZWxpZXMgb24gdGhlIGRldmljZSBkcml2ZXIgaXRzZWxmIHRvIHZlcmlmeQordGhhdCB0cmFmZmljIGlzIGZsb3dpbmcuICBJbiBwYXJ0aWN1bGFyLCB0aGUgZHJpdmVyIG11c3Qga2VlcCB1cCB0bworZGF0ZSB0aGUgbGFzdCByZWNlaXZlIHRpbWUsIGRldi0+bGFzdF9yeCwgYW5kIHRyYW5zbWl0IHN0YXJ0IHRpbWUsCitkZXYtPnRyYW5zX3N0YXJ0LiAgSWYgdGhlc2UgYXJlIG5vdCB1cGRhdGVkIGJ5IHRoZSBkcml2ZXIsIHRoZW4gdGhlCitBUlAgbW9uaXRvciB3aWxsIGltbWVkaWF0ZWx5IGZhaWwgYW55IHNsYXZlcyB1c2luZyB0aGF0IGRyaXZlciwgYW5kCit0aG9zZSBzbGF2ZXMgd2lsbCBzdGF5IGRvd24uICBJZiBuZXR3b3JraW5nIG1vbml0b3JpbmcgKHRjcGR1bXAsIGV0YykKK3Nob3dzIHRoZSBBUlAgcmVxdWVzdHMgYW5kIHJlcGxpZXMgb24gdGhlIG5ldHdvcmssIHRoZW4gaXQgbWF5IGJlIHRoYXQKK3lvdXIgZGV2aWNlIGRyaXZlciBpcyBub3QgdXBkYXRpbmcgbGFzdF9yeCBhbmQgdHJhbnNfc3RhcnQuCisKKzcuMiBDb25maWd1cmluZyBNdWx0aXBsZSBBUlAgVGFyZ2V0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlXaGlsZSBBUlAgbW9uaXRvcmluZyBjYW4gYmUgZG9uZSB3aXRoIGp1c3Qgb25lIHRhcmdldCwgaXQgY2FuCitiZSB1c2VmdWwgaW4gYSBIaWdoIEF2YWlsYWJpbGl0eSBzZXR1cCB0byBoYXZlIHNldmVyYWwgdGFyZ2V0cyB0bworbW9uaXRvci4gIEluIHRoZSBjYXNlIG9mIGp1c3Qgb25lIHRhcmdldCwgdGhlIHRhcmdldCBpdHNlbGYgbWF5IGdvCitkb3duIG9yIGhhdmUgYSBwcm9ibGVtIG1ha2luZyBpdCB1bnJlc3BvbnNpdmUgdG8gQVJQIHJlcXVlc3RzLiAgSGF2aW5nCithbiBhZGRpdGlvbmFsIHRhcmdldCAob3Igc2V2ZXJhbCkgaW5jcmVhc2VzIHRoZSByZWxpYWJpbGl0eSBvZiB0aGUgQVJQCittb25pdG9yaW5nLgorCisJTXVsdGlwbGUgQVJQIHRhcmdldHMgbXVzdCBiZSBzZXBhcmF0ZWQgYnkgY29tbWFzIGFzIGZvbGxvd3M6CisKKyMgZXhhbXBsZSBvcHRpb25zIGZvciBBUlAgbW9uaXRvcmluZyB3aXRoIHRocmVlIHRhcmdldHMKK2FsaWFzIGJvbmQwIGJvbmRpbmcKK29wdGlvbnMgYm9uZDAgYXJwX2ludGVydmFsPTYwIGFycF9pcF90YXJnZXQ9MTkyLjE2OC4wLjEsMTkyLjE2OC4wLjMsMTkyLjE2OC4wLjkKKworCUZvciBqdXN0IGEgc2luZ2xlIHRhcmdldCB0aGUgb3B0aW9ucyB3b3VsZCByZXNlbWJsZToKKworIyBleGFtcGxlIG9wdGlvbnMgZm9yIEFSUCBtb25pdG9yaW5nIHdpdGggb25lIHRhcmdldAorYWxpYXMgYm9uZDAgYm9uZGluZworb3B0aW9ucyBib25kMCBhcnBfaW50ZXJ2YWw9NjAgYXJwX2lwX3RhcmdldD0xOTIuMTY4LjAuMTAwCisKKworNy4zIE1JSSBNb25pdG9yIE9wZXJhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJVGhlIE1JSSBtb25pdG9yIG1vbml0b3JzIG9ubHkgdGhlIGNhcnJpZXIgc3RhdGUgb2YgdGhlIGxvY2FsCituZXR3b3JrIGludGVyZmFjZS4gIEl0IGFjY29tcGxpc2hlcyB0aGlzIGluIG9uZSBvZiB0aHJlZSB3YXlzOiBieQorZGVwZW5kaW5nIHVwb24gdGhlIGRldmljZSBkcml2ZXIgdG8gbWFpbnRhaW4gaXRzIGNhcnJpZXIgc3RhdGUsIGJ5CitxdWVyeWluZyB0aGUgZGV2aWNlJ3MgTUlJIHJlZ2lzdGVycywgb3IgYnkgbWFraW5nIGFuIGV0aHRvb2wgcXVlcnkgdG8KK3RoZSBkZXZpY2UuCisKKwlJZiB0aGUgdXNlX2NhcnJpZXIgbW9kdWxlIHBhcmFtZXRlciBpcyAxICh0aGUgZGVmYXVsdCB2YWx1ZSksCit0aGVuIHRoZSBNSUkgbW9uaXRvciB3aWxsIHJlbHkgb24gdGhlIGRyaXZlciBmb3IgY2FycmllciBzdGF0ZQoraW5mb3JtYXRpb24gKHZpYSB0aGUgbmV0aWZfY2FycmllciBzdWJzeXN0ZW0pLiAgQXMgZXhwbGFpbmVkIGluIHRoZQordXNlX2NhcnJpZXIgcGFyYW1ldGVyIGluZm9ybWF0aW9uLCBhYm92ZSwgaWYgdGhlIE1JSSBtb25pdG9yIGZhaWxzIHRvCitkZXRlY3QgY2FycmllciBsb3NzIG9uIHRoZSBkZXZpY2UgKGUuZy4sIHdoZW4gdGhlIGNhYmxlIGlzIHBoeXNpY2FsbHkKK2Rpc2Nvbm5lY3RlZCksIGl0IG1heSBiZSB0aGF0IHRoZSBkcml2ZXIgZG9lcyBub3Qgc3VwcG9ydAorbmV0aWZfY2Fycmllci4KKworCUlmIHVzZV9jYXJyaWVyIGlzIDAsIHRoZW4gdGhlIE1JSSBtb25pdG9yIHdpbGwgZmlyc3QgcXVlcnkgdGhlCitkZXZpY2UncyAodmlhIGlvY3RsKSBNSUkgcmVnaXN0ZXJzIGFuZCBjaGVjayB0aGUgbGluayBzdGF0ZS4gIElmIHRoYXQKK3JlcXVlc3QgZmFpbHMgKG5vdCBqdXN0IHRoYXQgaXQgcmV0dXJucyBjYXJyaWVyIGRvd24pLCB0aGVuIHRoZSBNSUkKK21vbml0b3Igd2lsbCBtYWtlIGFuIGV0aHRvb2wgRVRIT09MX0dMSU5LIHJlcXVlc3QgdG8gYXR0ZW1wdCB0byBvYnRhaW4KK3RoZSBzYW1lIGluZm9ybWF0aW9uLiAgSWYgYm90aCBtZXRob2RzIGZhaWwgKGkuZS4sIHRoZSBkcml2ZXIgZWl0aGVyCitkb2VzIG5vdCBzdXBwb3J0IG9yIGhhZCBzb21lIGVycm9yIGluIHByb2Nlc3NpbmcgYm90aCB0aGUgTUlJIHJlZ2lzdGVyCithbmQgZXRodG9vbCByZXF1ZXN0cyksIHRoZW4gdGhlIE1JSSBtb25pdG9yIHdpbGwgYXNzdW1lIHRoZSBsaW5rIGlzCit1cC4KKworOC4gUG90ZW50aWFsIFNvdXJjZXMgb2YgVHJvdWJsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCis4LjEgQWR2ZW50dXJlcyBpbiBSb3V0aW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlXaGVuIGJvbmRpbmcgaXMgY29uZmlndXJlZCwgaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlIHNsYXZlCitkZXZpY2VzIG5vdCBoYXZlIHJvdXRlcyB0aGF0IHN1cGVyc2VkZSByb3V0ZXMgb2YgdGhlIG1hc3RlciAob3IsCitnZW5lcmFsbHksIG5vdCBoYXZlIHJvdXRlcyBhdCBhbGwpLiAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgdGhlIGJvbmRpbmcKK2RldmljZSBib25kMCBoYXMgdHdvIHNsYXZlcywgZXRoMCBhbmQgZXRoMSwgYW5kIHRoZSByb3V0aW5nIHRhYmxlIGlzCithcyBmb2xsb3dzOgorCitLZXJuZWwgSVAgcm91dGluZyB0YWJsZQorRGVzdGluYXRpb24gICAgIEdhdGV3YXkgICAgICAgICBHZW5tYXNrICAgICAgICAgRmxhZ3MgICBNU1MgV2luZG93ICBpcnR0IElmYWNlCisxMC4wLjAuMCAgICAgICAgMC4wLjAuMCAgICAgICAgIDI1NS4yNTUuMC4wICAgICBVICAgICAgICA0MCAwICAgICAgICAgIDAgZXRoMAorMTAuMC4wLjAgICAgICAgIDAuMC4wLjAgICAgICAgICAyNTUuMjU1LjAuMCAgICAgVSAgICAgICAgNDAgMCAgICAgICAgICAwIGV0aDEKKzEwLjAuMC4wICAgICAgICAwLjAuMC4wICAgICAgICAgMjU1LjI1NS4wLjAgICAgIFUgICAgICAgIDQwIDAgICAgICAgICAgMCBib25kMAorMTI3LjAuMC4wICAgICAgIDAuMC4wLjAgICAgICAgICAyNTUuMC4wLjAgICAgICAgVSAgICAgICAgNDAgMCAgICAgICAgICAwIGxvCisKKwlUaGlzIHJvdXRpbmcgY29uZmlndXJhdGlvbiB3aWxsIGxpa2VseSBzdGlsbCB1cGRhdGUgdGhlCityZWNlaXZlL3RyYW5zbWl0IHRpbWVzIGluIHRoZSBkcml2ZXIgKG5lZWRlZCBieSB0aGUgQVJQIG1vbml0b3IpLCBidXQKK21heSBieXBhc3MgdGhlIGJvbmRpbmcgZHJpdmVyIChiZWNhdXNlIG91dGdvaW5nIHRyYWZmaWMgdG8sIGluIHRoaXMKK2Nhc2UsIGFub3RoZXIgaG9zdCBvbiBuZXR3b3JrIDEwIHdvdWxkIHVzZSBldGgwIG9yIGV0aDEgYmVmb3JlIGJvbmQwKS4KKworCVRoZSBBUlAgbW9uaXRvciAoYW5kIEFSUCBpdHNlbGYpIG1heSBiZWNvbWUgY29uZnVzZWQgYnkgdGhpcworY29uZmlndXJhdGlvbiwgYmVjYXVzZSBBUlAgcmVxdWVzdHMgKGdlbmVyYXRlZCBieSB0aGUgQVJQIG1vbml0b3IpCit3aWxsIGJlIHNlbnQgb24gb25lIGludGVyZmFjZSAoYm9uZDApLCBidXQgdGhlIGNvcnJlc3BvbmRpbmcgcmVwbHkKK3dpbGwgYXJyaXZlIG9uIGEgZGlmZmVyZW50IGludGVyZmFjZSAoZXRoMCkuICBUaGlzIHJlcGx5IGxvb2tzIHRvIEFSUAorYXMgYW4gdW5zb2xpY2l0ZWQgQVJQIHJlcGx5IChiZWNhdXNlIEFSUCBtYXRjaGVzIHJlcGxpZXMgb24gYW4KK2ludGVyZmFjZSBiYXNpcyksIGFuZCBpcyBkaXNjYXJkZWQuICBUaGUgTUlJIG1vbml0b3IgaXMgbm90IGFmZmVjdGVkCitieSB0aGUgc3RhdGUgb2YgdGhlIHJvdXRpbmcgdGFibGUuCisKKwlUaGUgc29sdXRpb24gaGVyZSBpcyBzaW1wbHkgdG8gaW5zdXJlIHRoYXQgc2xhdmVzIGRvIG5vdCBoYXZlCityb3V0ZXMgb2YgdGhlaXIgb3duLCBhbmQgaWYgZm9yIHNvbWUgcmVhc29uIHRoZXkgbXVzdCwgdGhvc2Ugcm91dGVzIGRvCitub3Qgc3VwZXJzZWRlIHJvdXRlcyBvZiB0aGVpciBtYXN0ZXIuICBUaGlzIHNob3VsZCBnZW5lcmFsbHkgYmUgdGhlCitjYXNlLCBidXQgdW51c3VhbCBjb25maWd1cmF0aW9ucyBvciBlcnJhbnQgbWFudWFsIG9yIGF1dG9tYXRpYyBzdGF0aWMKK3JvdXRlIGFkZGl0aW9ucyBtYXkgY2F1c2UgdHJvdWJsZS4KKworOC4yIEV0aGVybmV0IERldmljZSBSZW5hbWluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJT24gc3lzdGVtcyB3aXRoIG5ldHdvcmsgY29uZmlndXJhdGlvbiBzY3JpcHRzIHRoYXQgZG8gbm90Cithc3NvY2lhdGUgcGh5c2ljYWwgZGV2aWNlcyBkaXJlY3RseSB3aXRoIG5ldHdvcmsgaW50ZXJmYWNlIG5hbWVzIChzbwordGhhdCB0aGUgc2FtZSBwaHlzaWNhbCBkZXZpY2UgYWx3YXlzIGhhcyB0aGUgc2FtZSAiZXRoWCIgbmFtZSksIGl0IG1heQorYmUgbmVjZXNzYXJ5IHRvIGFkZCBzb21lIHNwZWNpYWwgbG9naWMgdG8gY29uZmlnIGZpbGVzIGluCisvZXRjL21vZHByb2JlLmQvLgorCisJRm9yIGV4YW1wbGUsIGdpdmVuIGEgbW9kdWxlcy5jb25mIGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZzoKKworYWxpYXMgYm9uZDAgYm9uZGluZworb3B0aW9ucyBib25kMCBtb2RlPXNvbWUtbW9kZSBtaWltb249NTAKK2FsaWFzIGV0aDAgdGczCithbGlhcyBldGgxIHRnMworYWxpYXMgZXRoMiBlMTAwMAorYWxpYXMgZXRoMyBlMTAwMAorCisJSWYgbmVpdGhlciBldGgwIGFuZCBldGgxIGFyZSBzbGF2ZXMgdG8gYm9uZDAsIHRoZW4gd2hlbiB0aGUKK2JvbmQwIGludGVyZmFjZSBjb21lcyB1cCwgdGhlIGRldmljZXMgbWF5IGVuZCB1cCByZW9yZGVyZWQuICBUaGlzCitoYXBwZW5zIGJlY2F1c2UgYm9uZGluZyBpcyBsb2FkZWQgZmlyc3QsIHRoZW4gaXRzIHNsYXZlIGRldmljZSdzCitkcml2ZXJzIGFyZSBsb2FkZWQgbmV4dC4gIFNpbmNlIG5vIG90aGVyIGRyaXZlcnMgaGF2ZSBiZWVuIGxvYWRlZCwKK3doZW4gdGhlIGUxMDAwIGRyaXZlciBsb2FkcywgaXQgd2lsbCByZWNlaXZlIGV0aDAgYW5kIGV0aDEgZm9yIGl0cworZGV2aWNlcywgYnV0IHRoZSBib25kaW5nIGNvbmZpZ3VyYXRpb24gdHJpZXMgdG8gZW5zbGF2ZSBldGgyIGFuZCBldGgzCisod2hpY2ggbWF5IGxhdGVyIGJlIGFzc2lnbmVkIHRvIHRoZSB0ZzMgZGV2aWNlcykuCisKKwlBZGRpbmcgdGhlIGZvbGxvd2luZzoKKworYWRkIGFib3ZlIGJvbmRpbmcgZTEwMDAgdGczCisKKwljYXVzZXMgbW9kcHJvYmUgdG8gbG9hZCBlMTAwMCB0aGVuIHRnMywgaW4gdGhhdCBvcmRlciwgd2hlbgorYm9uZGluZyBpcyBsb2FkZWQuICBUaGlzIGNvbW1hbmQgaXMgZnVsbHkgZG9jdW1lbnRlZCBpbiB0aGUKK21vZHVsZXMuY29uZiBtYW51YWwgcGFnZS4KKworCU9uIHN5c3RlbXMgdXRpbGl6aW5nIG1vZHByb2JlIGFuIGVxdWl2YWxlbnQgcHJvYmxlbSBjYW4gb2NjdXIuCitJbiB0aGlzIGNhc2UsIHRoZSBmb2xsb3dpbmcgY2FuIGJlIGFkZGVkIHRvIGNvbmZpZyBmaWxlcyBpbgorL2V0Yy9tb2Rwcm9iZS5kLyBhczoKKworc29mdGRlcCBib25kaW5nIHByZTogdGczIGUxMDAwCisKKwlUaGlzIHdpbGwgbG9hZCB0ZzMgYW5kIGUxMDAwIG1vZHVsZXMgYmVmb3JlIGxvYWRpbmcgdGhlIGJvbmRpbmcgb25lLgorRnVsbCBkb2N1bWVudGF0aW9uIG9uIHRoaXMgY2FuIGJlIGZvdW5kIGluIHRoZSBtb2Rwcm9iZS5kIGFuZCBtb2Rwcm9iZQorbWFudWFsIHBhZ2VzLgorCis4LjMuIFBhaW5mdWxseSBTbG93IE9yIE5vIEZhaWxlZCBMaW5rIERldGVjdGlvbiBCeSBNaWltb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJQnkgZGVmYXVsdCwgYm9uZGluZyBlbmFibGVzIHRoZSB1c2VfY2FycmllciBvcHRpb24sIHdoaWNoCitpbnN0cnVjdHMgYm9uZGluZyB0byB0cnVzdCB0aGUgZHJpdmVyIHRvIG1haW50YWluIGNhcnJpZXIgc3RhdGUuCisKKwlBcyBkaXNjdXNzZWQgaW4gdGhlIG9wdGlvbnMgc2VjdGlvbiwgYWJvdmUsIHNvbWUgZHJpdmVycyBkbworbm90IHN1cHBvcnQgdGhlIG5ldGlmX2NhcnJpZXJfb24vX29mZiBsaW5rIHN0YXRlIHRyYWNraW5nIHN5c3RlbS4KK1dpdGggdXNlX2NhcnJpZXIgZW5hYmxlZCwgYm9uZGluZyB3aWxsIGFsd2F5cyBzZWUgdGhlc2UgbGlua3MgYXMgdXAsCityZWdhcmRsZXNzIG9mIHRoZWlyIGFjdHVhbCBzdGF0ZS4KKworCUFkZGl0aW9uYWxseSwgb3RoZXIgZHJpdmVycyBkbyBzdXBwb3J0IG5ldGlmX2NhcnJpZXIsIGJ1dCBkbworbm90IG1haW50YWluIGl0IGluIHJlYWwgdGltZSwgZS5nLiwgb25seSBwb2xsaW5nIHRoZSBsaW5rIHN0YXRlIGF0Citzb21lIGZpeGVkIGludGVydmFsLiAgSW4gdGhpcyBjYXNlLCBtaWltb24gd2lsbCBkZXRlY3QgZmFpbHVyZXMsIGJ1dAorb25seSBhZnRlciBzb21lIGxvbmcgcGVyaW9kIG9mIHRpbWUgaGFzIGV4cGlyZWQuICBJZiBpdCBhcHBlYXJzIHRoYXQKK21paW1vbiBpcyB2ZXJ5IHNsb3cgaW4gZGV0ZWN0aW5nIGxpbmsgZmFpbHVyZXMsIHRyeSBzcGVjaWZ5aW5nCit1c2VfY2Fycmllcj0wIHRvIHNlZSBpZiB0aGF0IGltcHJvdmVzIHRoZSBmYWlsdXJlIGRldGVjdGlvbiB0aW1lLiAgSWYKK2l0IGRvZXMsIHRoZW4gaXQgbWF5IGJlIHRoYXQgdGhlIGRyaXZlciBjaGVja3MgdGhlIGNhcnJpZXIgc3RhdGUgYXQgYQorZml4ZWQgaW50ZXJ2YWwsIGJ1dCBkb2VzIG5vdCBjYWNoZSB0aGUgTUlJIHJlZ2lzdGVyIHZhbHVlcyAoc28gdGhlCit1c2VfY2Fycmllcj0wIG1ldGhvZCBvZiBxdWVyeWluZyB0aGUgcmVnaXN0ZXJzIGRpcmVjdGx5IHdvcmtzKS4gIElmCit1c2VfY2Fycmllcj0wIGRvZXMgbm90IGltcHJvdmUgdGhlIGZhaWxvdmVyLCB0aGVuIHRoZSBkcml2ZXIgbWF5IGNhY2hlCit0aGUgcmVnaXN0ZXJzLCBvciB0aGUgcHJvYmxlbSBtYXkgYmUgZWxzZXdoZXJlLgorCisJQWxzbywgcmVtZW1iZXIgdGhhdCBtaWltb24gb25seSBjaGVja3MgZm9yIHRoZSBkZXZpY2UncworY2FycmllciBzdGF0ZS4gIEl0IGhhcyBubyB3YXkgdG8gZGV0ZXJtaW5lIHRoZSBzdGF0ZSBvZiBkZXZpY2VzIG9uIG9yCitiZXlvbmQgb3RoZXIgcG9ydHMgb2YgYSBzd2l0Y2gsIG9yIGlmIGEgc3dpdGNoIGlzIHJlZnVzaW5nIHRvIHBhc3MKK3RyYWZmaWMgd2hpbGUgc3RpbGwgbWFpbnRhaW5pbmcgY2FycmllciBvbi4KKworOS4gU05NUCBhZ2VudHMKKz09PT09PT09PT09PT09PQorCisJSWYgcnVubmluZyBTTk1QIGFnZW50cywgdGhlIGJvbmRpbmcgZHJpdmVyIHNob3VsZCBiZSBsb2FkZWQKK2JlZm9yZSBhbnkgbmV0d29yayBkcml2ZXJzIHBhcnRpY2lwYXRpbmcgaW4gYSBib25kLiAgVGhpcyByZXF1aXJlbWVudAoraXMgZHVlIHRvIHRoZSBpbnRlcmZhY2UgaW5kZXggKGlwQWRFbnRJZkluZGV4KSBiZWluZyBhc3NvY2lhdGVkIHRvCit0aGUgZmlyc3QgaW50ZXJmYWNlIGZvdW5kIHdpdGggYSBnaXZlbiBJUCBhZGRyZXNzLiAgVGhhdCBpcywgdGhlcmUgaXMKK29ubHkgb25lIGlwQWRFbnRJZkluZGV4IGZvciBlYWNoIElQIGFkZHJlc3MuICBGb3IgZXhhbXBsZSwgaWYgZXRoMCBhbmQKK2V0aDEgYXJlIHNsYXZlcyBvZiBib25kMCBhbmQgdGhlIGRyaXZlciBmb3IgZXRoMCBpcyBsb2FkZWQgYmVmb3JlIHRoZQorYm9uZGluZyBkcml2ZXIsIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBJUCBhZGRyZXNzIHdpbGwgYmUgYXNzb2NpYXRlZAord2l0aCB0aGUgZXRoMCBpbnRlcmZhY2UuICBUaGlzIGNvbmZpZ3VyYXRpb24gaXMgc2hvd24gYmVsb3csIHRoZSBJUAorYWRkcmVzcyAxOTIuMTY4LjEuMSBoYXMgYW4gaW50ZXJmYWNlIGluZGV4IG9mIDIgd2hpY2ggaW5kZXhlcyB0byBldGgwCitpbiB0aGUgaWZEZXNjciB0YWJsZSAoaWZEZXNjci4yKS4KKworICAgICBpbnRlcmZhY2VzLmlmVGFibGUuaWZFbnRyeS5pZkRlc2NyLjEgPSBsbworICAgICBpbnRlcmZhY2VzLmlmVGFibGUuaWZFbnRyeS5pZkRlc2NyLjIgPSBldGgwCisgICAgIGludGVyZmFjZXMuaWZUYWJsZS5pZkVudHJ5LmlmRGVzY3IuMyA9IGV0aDEKKyAgICAgaW50ZXJmYWNlcy5pZlRhYmxlLmlmRW50cnkuaWZEZXNjci40ID0gZXRoMgorICAgICBpbnRlcmZhY2VzLmlmVGFibGUuaWZFbnRyeS5pZkRlc2NyLjUgPSBldGgzCisgICAgIGludGVyZmFjZXMuaWZUYWJsZS5pZkVudHJ5LmlmRGVzY3IuNiA9IGJvbmQwCisgICAgIGlwLmlwQWRkclRhYmxlLmlwQWRkckVudHJ5LmlwQWRFbnRJZkluZGV4LjEwLjEwLjEwLjEwID0gNQorICAgICBpcC5pcEFkZHJUYWJsZS5pcEFkZHJFbnRyeS5pcEFkRW50SWZJbmRleC4xOTIuMTY4LjEuMSA9IDIKKyAgICAgaXAuaXBBZGRyVGFibGUuaXBBZGRyRW50cnkuaXBBZEVudElmSW5kZXguMTAuNzQuMjAuOTQgPSA0CisgICAgIGlwLmlwQWRkclRhYmxlLmlwQWRkckVudHJ5LmlwQWRFbnRJZkluZGV4LjEyNy4wLjAuMSA9IDEKKworCVRoaXMgcHJvYmxlbSBpcyBhdm9pZGVkIGJ5IGxvYWRpbmcgdGhlIGJvbmRpbmcgZHJpdmVyIGJlZm9yZQorYW55IG5ldHdvcmsgZHJpdmVycyBwYXJ0aWNpcGF0aW5nIGluIGEgYm9uZC4gIEJlbG93IGlzIGFuIGV4YW1wbGUgb2YKK2xvYWRpbmcgdGhlIGJvbmRpbmcgZHJpdmVyIGZpcnN0LCB0aGUgSVAgYWRkcmVzcyAxOTIuMTY4LjEuMSBpcworY29ycmVjdGx5IGFzc29jaWF0ZWQgd2l0aCBpZkRlc2NyLjIuCisKKyAgICAgaW50ZXJmYWNlcy5pZlRhYmxlLmlmRW50cnkuaWZEZXNjci4xID0gbG8KKyAgICAgaW50ZXJmYWNlcy5pZlRhYmxlLmlmRW50cnkuaWZEZXNjci4yID0gYm9uZDAKKyAgICAgaW50ZXJmYWNlcy5pZlRhYmxlLmlmRW50cnkuaWZEZXNjci4zID0gZXRoMAorICAgICBpbnRlcmZhY2VzLmlmVGFibGUuaWZFbnRyeS5pZkRlc2NyLjQgPSBldGgxCisgICAgIGludGVyZmFjZXMuaWZUYWJsZS5pZkVudHJ5LmlmRGVzY3IuNSA9IGV0aDIKKyAgICAgaW50ZXJmYWNlcy5pZlRhYmxlLmlmRW50cnkuaWZEZXNjci42ID0gZXRoMworICAgICBpcC5pcEFkZHJUYWJsZS5pcEFkZHJFbnRyeS5pcEFkRW50SWZJbmRleC4xMC4xMC4xMC4xMCA9IDYKKyAgICAgaXAuaXBBZGRyVGFibGUuaXBBZGRyRW50cnkuaXBBZEVudElmSW5kZXguMTkyLjE2OC4xLjEgPSAyCisgICAgIGlwLmlwQWRkclRhYmxlLmlwQWRkckVudHJ5LmlwQWRFbnRJZkluZGV4LjEwLjc0LjIwLjk0ID0gNQorICAgICBpcC5pcEFkZHJUYWJsZS5pcEFkZHJFbnRyeS5pcEFkRW50SWZJbmRleC4xMjcuMC4wLjEgPSAxCisKKwlXaGlsZSBzb21lIGRpc3RyaWJ1dGlvbnMgbWF5IG5vdCByZXBvcnQgdGhlIGludGVyZmFjZSBuYW1lIGluCitpZkRlc2NyLCB0aGUgYXNzb2NpYXRpb24gYmV0d2VlbiB0aGUgSVAgYWRkcmVzcyBhbmQgSWZJbmRleCByZW1haW5zCithbmQgU05NUCBmdW5jdGlvbnMgc3VjaCBhcyBJbnRlcmZhY2VfU2Nhbl9OZXh0IHdpbGwgcmVwb3J0IHRoYXQKK2Fzc29jaWF0aW9uLgorCisxMC4gUHJvbWlzY3VvdXMgbW9kZQorPT09PT09PT09PT09PT09PT09PT0KKworCVdoZW4gcnVubmluZyBuZXR3b3JrIG1vbml0b3JpbmcgdG9vbHMsIGUuZy4sIHRjcGR1bXAsIGl0IGlzCitjb21tb24gdG8gZW5hYmxlIHByb21pc2N1b3VzIG1vZGUgb24gdGhlIGRldmljZSwgc28gdGhhdCBhbGwgdHJhZmZpYworaXMgc2VlbiAoaW5zdGVhZCBvZiBzZWVpbmcgb25seSB0cmFmZmljIGRlc3RpbmVkIGZvciB0aGUgbG9jYWwgaG9zdCkuCitUaGUgYm9uZGluZyBkcml2ZXIgaGFuZGxlcyBwcm9taXNjdW91cyBtb2RlIGNoYW5nZXMgdG8gdGhlIGJvbmRpbmcKK21hc3RlciBkZXZpY2UgKGUuZy4sIGJvbmQwKSwgYW5kIHByb3BhZ2F0ZXMgdGhlIHNldHRpbmcgdG8gdGhlIHNsYXZlCitkZXZpY2VzLgorCisJRm9yIHRoZSBiYWxhbmNlLXJyLCBiYWxhbmNlLXhvciwgYnJvYWRjYXN0LCBhbmQgODAyLjNhZCBtb2RlcywKK3RoZSBwcm9taXNjdW91cyBtb2RlIHNldHRpbmcgaXMgcHJvcGFnYXRlZCB0byBhbGwgc2xhdmVzLgorCisJRm9yIHRoZSBhY3RpdmUtYmFja3VwLCBiYWxhbmNlLXRsYiBhbmQgYmFsYW5jZS1hbGIgbW9kZXMsIHRoZQorcHJvbWlzY3VvdXMgbW9kZSBzZXR0aW5nIGlzIHByb3BhZ2F0ZWQgb25seSB0byB0aGUgYWN0aXZlIHNsYXZlLgorCisJRm9yIGJhbGFuY2UtdGxiIG1vZGUsIHRoZSBhY3RpdmUgc2xhdmUgaXMgdGhlIHNsYXZlIGN1cnJlbnRseQorcmVjZWl2aW5nIGluYm91bmQgdHJhZmZpYy4KKworCUZvciBiYWxhbmNlLWFsYiBtb2RlLCB0aGUgYWN0aXZlIHNsYXZlIGlzIHRoZSBzbGF2ZSB1c2VkIGFzIGEKKyJwcmltYXJ5LiIgIFRoaXMgc2xhdmUgaXMgdXNlZCBmb3IgbW9kZS1zcGVjaWZpYyBjb250cm9sIHRyYWZmaWMsIGZvcgorc2VuZGluZyB0byBwZWVycyB0aGF0IGFyZSB1bmFzc2lnbmVkIG9yIGlmIHRoZSBsb2FkIGlzIHVuYmFsYW5jZWQuCisKKwlGb3IgdGhlIGFjdGl2ZS1iYWNrdXAsIGJhbGFuY2UtdGxiIGFuZCBiYWxhbmNlLWFsYiBtb2Rlcywgd2hlbgordGhlIGFjdGl2ZSBzbGF2ZSBjaGFuZ2VzIChlLmcuLCBkdWUgdG8gYSBsaW5rIGZhaWx1cmUpLCB0aGUKK3Byb21pc2N1b3VzIHNldHRpbmcgd2lsbCBiZSBwcm9wYWdhdGVkIHRvIHRoZSBuZXcgYWN0aXZlIHNsYXZlLgorCisxMS4gQ29uZmlndXJpbmcgQm9uZGluZyBmb3IgSGlnaCBBdmFpbGFiaWxpdHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisJSGlnaCBBdmFpbGFiaWxpdHkgcmVmZXJzIHRvIGNvbmZpZ3VyYXRpb25zIHRoYXQgcHJvdmlkZQorbWF4aW11bSBuZXR3b3JrIGF2YWlsYWJpbGl0eSBieSBoYXZpbmcgcmVkdW5kYW50IG9yIGJhY2t1cCBkZXZpY2VzLAorbGlua3Mgb3Igc3dpdGNoZXMgYmV0d2VlbiB0aGUgaG9zdCBhbmQgdGhlIHJlc3Qgb2YgdGhlIHdvcmxkLiAgVGhlCitnb2FsIGlzIHRvIHByb3ZpZGUgdGhlIG1heGltdW0gYXZhaWxhYmlsaXR5IG9mIG5ldHdvcmsgY29ubmVjdGl2aXR5CisoaS5lLiwgdGhlIG5ldHdvcmsgYWx3YXlzIHdvcmtzKSwgZXZlbiB0aG91Z2ggb3RoZXIgY29uZmlndXJhdGlvbnMKK2NvdWxkIHByb3ZpZGUgaGlnaGVyIHRocm91Z2hwdXQuCisKKzExLjEgSGlnaCBBdmFpbGFiaWxpdHkgaW4gYSBTaW5nbGUgU3dpdGNoIFRvcG9sb2d5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJSWYgdHdvIGhvc3RzIChvciBhIGhvc3QgYW5kIGEgc2luZ2xlIHN3aXRjaCkgYXJlIGRpcmVjdGx5Citjb25uZWN0ZWQgdmlhIG11bHRpcGxlIHBoeXNpY2FsIGxpbmtzLCB0aGVuIHRoZXJlIGlzIG5vIGF2YWlsYWJpbGl0eQorcGVuYWx0eSB0byBvcHRpbWl6aW5nIGZvciBtYXhpbXVtIGJhbmR3aWR0aC4gIEluIHRoaXMgY2FzZSwgdGhlcmUgaXMKK29ubHkgb25lIHN3aXRjaCAob3IgcGVlciksIHNvIGlmIGl0IGZhaWxzLCB0aGVyZSBpcyBubyBhbHRlcm5hdGl2ZQorYWNjZXNzIHRvIGZhaWwgb3ZlciB0by4gIEFkZGl0aW9uYWxseSwgdGhlIGJvbmRpbmcgbG9hZCBiYWxhbmNlIG1vZGVzCitzdXBwb3J0IGxpbmsgbW9uaXRvcmluZyBvZiB0aGVpciBtZW1iZXJzLCBzbyBpZiBpbmRpdmlkdWFsIGxpbmtzIGZhaWwsCit0aGUgbG9hZCB3aWxsIGJlIHJlYmFsYW5jZWQgYWNyb3NzIHRoZSByZW1haW5pbmcgZGV2aWNlcy4KKworCVNlZSBTZWN0aW9uIDEyLCAiQ29uZmlndXJpbmcgQm9uZGluZyBmb3IgTWF4aW11bSBUaHJvdWdocHV0IgorZm9yIGluZm9ybWF0aW9uIG9uIGNvbmZpZ3VyaW5nIGJvbmRpbmcgd2l0aCBvbmUgcGVlciBkZXZpY2UuCisKKzExLjIgSGlnaCBBdmFpbGFiaWxpdHkgaW4gYSBNdWx0aXBsZSBTd2l0Y2ggVG9wb2xvZ3kKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCVdpdGggbXVsdGlwbGUgc3dpdGNoZXMsIHRoZSBjb25maWd1cmF0aW9uIG9mIGJvbmRpbmcgYW5kIHRoZQorbmV0d29yayBjaGFuZ2VzIGRyYW1hdGljYWxseS4gIEluIG11bHRpcGxlIHN3aXRjaCB0b3BvbG9naWVzLCB0aGVyZSBpcworYSB0cmFkZSBvZmYgYmV0d2VlbiBuZXR3b3JrIGF2YWlsYWJpbGl0eSBhbmQgdXNhYmxlIGJhbmR3aWR0aC4KKworCUJlbG93IGlzIGEgc2FtcGxlIG5ldHdvcmssIGNvbmZpZ3VyZWQgdG8gbWF4aW1pemUgdGhlCithdmFpbGFiaWxpdHkgb2YgdGhlIG5ldHdvcms6CisKKyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICB8cG9ydDMgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0M3wKKyAgICAgICAgICArLS0tLS0rLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLSstLS0tKworICAgICAgICAgIHwgICAgICAgICAgfHBvcnQyICAgICAgIElTTCAgICAgIHBvcnQyfCAgICAgICAgICB8CisgICAgICAgICAgfCBzd2l0Y2ggQSArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHN3aXRjaCBCIHwKKyAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorICAgICAgICAgICstLS0tLSstLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tKystLS0rCisgICAgICAgICAgICAgICAgfHBvcnQxICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydDF8CisgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICArLS0tLS0tLSsgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0rIGhvc3QxICstLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgZXRoMCArLS0tLS0tLSsgZXRoMQorCisJSW4gdGhpcyBjb25maWd1cmF0aW9uLCB0aGVyZSBpcyBhIGxpbmsgYmV0d2VlbiB0aGUgdHdvCitzd2l0Y2hlcyAoSVNMLCBvciBpbnRlciBzd2l0Y2ggbGluayksIGFuZCBtdWx0aXBsZSBwb3J0cyBjb25uZWN0aW5nIHRvCit0aGUgb3V0c2lkZSB3b3JsZCAoInBvcnQzIiBvbiBlYWNoIHN3aXRjaCkuICBUaGVyZSBpcyBubyB0ZWNobmljYWwKK3JlYXNvbiB0aGF0IHRoaXMgY291bGQgbm90IGJlIGV4dGVuZGVkIHRvIGEgdGhpcmQgc3dpdGNoLgorCisxMS4yLjEgSEEgQm9uZGluZyBNb2RlIFNlbGVjdGlvbiBmb3IgTXVsdGlwbGUgU3dpdGNoIFRvcG9sb2d5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlJbiBhIHRvcG9sb2d5IHN1Y2ggYXMgdGhlIGV4YW1wbGUgYWJvdmUsIHRoZSBhY3RpdmUtYmFja3VwIGFuZAorYnJvYWRjYXN0IG1vZGVzIGFyZSB0aGUgb25seSB1c2VmdWwgYm9uZGluZyBtb2RlcyB3aGVuIG9wdGltaXppbmcgZm9yCithdmFpbGFiaWxpdHk7IHRoZSBvdGhlciBtb2RlcyByZXF1aXJlIGFsbCBsaW5rcyB0byB0ZXJtaW5hdGUgb24gdGhlCitzYW1lIHBlZXIgZm9yIHRoZW0gdG8gYmVoYXZlIHJhdGlvbmFsbHkuCisKK2FjdGl2ZS1iYWNrdXA6IFRoaXMgaXMgZ2VuZXJhbGx5IHRoZSBwcmVmZXJyZWQgbW9kZSwgcGFydGljdWxhcmx5IGlmCisJdGhlIHN3aXRjaGVzIGhhdmUgYW4gSVNMIGFuZCBwbGF5IHRvZ2V0aGVyIHdlbGwuICBJZiB0aGUKKwluZXR3b3JrIGNvbmZpZ3VyYXRpb24gaXMgc3VjaCB0aGF0IG9uZSBzd2l0Y2ggaXMgc3BlY2lmaWNhbGx5CisJYSBiYWNrdXAgc3dpdGNoIChlLmcuLCBoYXMgbG93ZXIgY2FwYWNpdHksIGhpZ2hlciBjb3N0LCBldGMpLAorCXRoZW4gdGhlIHByaW1hcnkgb3B0aW9uIGNhbiBiZSB1c2VkIHRvIGluc3VyZSB0aGF0IHRoZQorCXByZWZlcnJlZCBsaW5rIGlzIGFsd2F5cyB1c2VkIHdoZW4gaXQgaXMgYXZhaWxhYmxlLgorCiticm9hZGNhc3Q6IFRoaXMgbW9kZSBpcyByZWFsbHkgYSBzcGVjaWFsIHB1cnBvc2UgbW9kZSwgYW5kIGlzIHN1aXRhYmxlCisJb25seSBmb3IgdmVyeSBzcGVjaWZpYyBuZWVkcy4gIEZvciBleGFtcGxlLCBpZiB0aGUgdHdvCisJc3dpdGNoZXMgYXJlIG5vdCBjb25uZWN0ZWQgKG5vIElTTCksIGFuZCB0aGUgbmV0d29ya3MgYmV5b25kCisJdGhlbSBhcmUgdG90YWxseSBpbmRlcGVuZGVudC4gIEluIHRoaXMgY2FzZSwgaWYgaXQgaXMKKwluZWNlc3NhcnkgZm9yIHNvbWUgc3BlY2lmaWMgb25lLXdheSB0cmFmZmljIHRvIHJlYWNoIGJvdGgKKwlpbmRlcGVuZGVudCBuZXR3b3JrcywgdGhlbiB0aGUgYnJvYWRjYXN0IG1vZGUgbWF5IGJlIHN1aXRhYmxlLgorCisxMS4yLjIgSEEgTGluayBNb25pdG9yaW5nIFNlbGVjdGlvbiBmb3IgTXVsdGlwbGUgU3dpdGNoIFRvcG9sb2d5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlUaGUgY2hvaWNlIG9mIGxpbmsgbW9uaXRvcmluZyB1bHRpbWF0ZWx5IGRlcGVuZHMgdXBvbiB5b3VyCitzd2l0Y2guICBJZiB0aGUgc3dpdGNoIGNhbiByZWxpYWJseSBmYWlsIHBvcnRzIGluIHJlc3BvbnNlIHRvIG90aGVyCitmYWlsdXJlcywgdGhlbiBlaXRoZXIgdGhlIE1JSSBvciBBUlAgbW9uaXRvcnMgc2hvdWxkIHdvcmsuICBGb3IKK2V4YW1wbGUsIGluIHRoZSBhYm92ZSBleGFtcGxlLCBpZiB0aGUgInBvcnQzIiBsaW5rIGZhaWxzIGF0IHRoZSByZW1vdGUKK2VuZCwgdGhlIE1JSSBtb25pdG9yIGhhcyBubyBkaXJlY3QgbWVhbnMgdG8gZGV0ZWN0IHRoaXMuICBUaGUgQVJQCittb25pdG9yIGNvdWxkIGJlIGNvbmZpZ3VyZWQgd2l0aCBhIHRhcmdldCBhdCB0aGUgcmVtb3RlIGVuZCBvZiBwb3J0MywKK3RodXMgZGV0ZWN0aW5nIHRoYXQgZmFpbHVyZSB3aXRob3V0IHN3aXRjaCBzdXBwb3J0LgorCisJSW4gZ2VuZXJhbCwgaG93ZXZlciwgaW4gYSBtdWx0aXBsZSBzd2l0Y2ggdG9wb2xvZ3ksIHRoZSBBUlAKK21vbml0b3IgY2FuIHByb3ZpZGUgYSBoaWdoZXIgbGV2ZWwgb2YgcmVsaWFiaWxpdHkgaW4gZGV0ZWN0aW5nIGVuZCB0bworZW5kIGNvbm5lY3Rpdml0eSBmYWlsdXJlcyAod2hpY2ggbWF5IGJlIGNhdXNlZCBieSB0aGUgZmFpbHVyZSBvZiBhbnkKK2luZGl2aWR1YWwgY29tcG9uZW50IHRvIHBhc3MgdHJhZmZpYyBmb3IgYW55IHJlYXNvbikuICBBZGRpdGlvbmFsbHksCit0aGUgQVJQIG1vbml0b3Igc2hvdWxkIGJlIGNvbmZpZ3VyZWQgd2l0aCBtdWx0aXBsZSB0YXJnZXRzIChhdCBsZWFzdAorb25lIGZvciBlYWNoIHN3aXRjaCBpbiB0aGUgbmV0d29yaykuICBUaGlzIHdpbGwgaW5zdXJlIHRoYXQsCityZWdhcmRsZXNzIG9mIHdoaWNoIHN3aXRjaCBpcyBhY3RpdmUsIHRoZSBBUlAgbW9uaXRvciBoYXMgYSBzdWl0YWJsZQordGFyZ2V0IHRvIHF1ZXJ5LgorCisJTm90ZSwgYWxzbywgdGhhdCBvZiBsYXRlIG1hbnkgc3dpdGNoZXMgbm93IHN1cHBvcnQgYSBmdW5jdGlvbmFsaXR5CitnZW5lcmFsbHkgcmVmZXJyZWQgdG8gYXMgInRydW5rIGZhaWxvdmVyLiIgIFRoaXMgaXMgYSBmZWF0dXJlIG9mIHRoZQorc3dpdGNoIHRoYXQgY2F1c2VzIHRoZSBsaW5rIHN0YXRlIG9mIGEgcGFydGljdWxhciBzd2l0Y2ggcG9ydCB0byBiZSBzZXQKK2Rvd24gKG9yIHVwKSB3aGVuIHRoZSBzdGF0ZSBvZiBhbm90aGVyIHN3aXRjaCBwb3J0IGdvZXMgZG93biAob3IgdXApLgorSXRzIHB1cnBvc2UgaXMgdG8gcHJvcGFnYXRlIGxpbmsgZmFpbHVyZXMgZnJvbSBsb2dpY2FsbHkgImV4dGVyaW9yIiBwb3J0cwordG8gdGhlIGxvZ2ljYWxseSAiaW50ZXJpb3IiIHBvcnRzIHRoYXQgYm9uZGluZyBpcyBhYmxlIHRvIG1vbml0b3IgdmlhCittaWltb24uICBBdmFpbGFiaWxpdHkgYW5kIGNvbmZpZ3VyYXRpb24gZm9yIHRydW5rIGZhaWxvdmVyIHZhcmllcyBieQorc3dpdGNoLCBidXQgdGhpcyBjYW4gYmUgYSB2aWFibGUgYWx0ZXJuYXRpdmUgdG8gdGhlIEFSUCBtb25pdG9yIHdoZW4gdXNpbmcKK3N1aXRhYmxlIHN3aXRjaGVzLgorCisxMi4gQ29uZmlndXJpbmcgQm9uZGluZyBmb3IgTWF4aW11bSBUaHJvdWdocHV0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzEyLjEgTWF4aW1pemluZyBUaHJvdWdocHV0IGluIGEgU2luZ2xlIFN3aXRjaCBUb3BvbG9neQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlJbiBhIHNpbmdsZSBzd2l0Y2ggY29uZmlndXJhdGlvbiwgdGhlIGJlc3QgbWV0aG9kIHRvIG1heGltaXplCit0aHJvdWdocHV0IGRlcGVuZHMgdXBvbiB0aGUgYXBwbGljYXRpb24gYW5kIG5ldHdvcmsgZW52aXJvbm1lbnQuICBUaGUKK3ZhcmlvdXMgbG9hZCBiYWxhbmNpbmcgbW9kZXMgZWFjaCBoYXZlIHN0cmVuZ3RocyBhbmQgd2Vha25lc3NlcyBpbgorZGlmZmVyZW50IGVudmlyb25tZW50cywgYXMgZGV0YWlsZWQgYmVsb3cuCisKKwlGb3IgdGhpcyBkaXNjdXNzaW9uLCB3ZSB3aWxsIGJyZWFrIGRvd24gdGhlIHRvcG9sb2dpZXMgaW50bwordHdvIGNhdGVnb3JpZXMuICBEZXBlbmRpbmcgdXBvbiB0aGUgZGVzdGluYXRpb24gb2YgbW9zdCB0cmFmZmljLCB3ZQorY2F0ZWdvcml6ZSB0aGVtIGludG8gZWl0aGVyICJnYXRld2F5ZWQiIG9yICJsb2NhbCIgY29uZmlndXJhdGlvbnMuCisKKwlJbiBhIGdhdGV3YXllZCBjb25maWd1cmF0aW9uLCB0aGUgInN3aXRjaCIgaXMgYWN0aW5nIHByaW1hcmlseQorYXMgYSByb3V0ZXIsIGFuZCB0aGUgbWFqb3JpdHkgb2YgdHJhZmZpYyBwYXNzZXMgdGhyb3VnaCB0aGlzIHJvdXRlciB0bworb3RoZXIgbmV0d29ya3MuICBBbiBleGFtcGxlIHdvdWxkIGJlIHRoZSBmb2xsb3dpbmc6CisKKworICAgICArLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLSsKKyAgICAgfCAgICAgICAgICB8ZXRoMCAgICAgICAgICAgIHBvcnQxfCAgICAgICAgICB8IHRvIG90aGVyIG5ldHdvcmtzCisgICAgIHwgSG9zdCBBICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgcm91dGVyICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0+CisgICAgIHwgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgfCBIb3N0cyBCIGFuZCBDIGFyZSBvdXQKKyAgICAgfCAgICAgICAgICB8ZXRoMSAgICAgICAgICAgIHBvcnQyfCAgICAgICAgICB8IGhlcmUgc29tZXdoZXJlCisgICAgICstLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tKworCisJVGhlIHJvdXRlciBtYXkgYmUgYSBkZWRpY2F0ZWQgcm91dGVyIGRldmljZSwgb3IgYW5vdGhlciBob3N0CithY3RpbmcgYXMgYSBnYXRld2F5LiAgRm9yIG91ciBkaXNjdXNzaW9uLCB0aGUgaW1wb3J0YW50IHBvaW50IGlzIHRoYXQKK3RoZSBtYWpvcml0eSBvZiB0cmFmZmljIGZyb20gSG9zdCBBIHdpbGwgcGFzcyB0aHJvdWdoIHRoZSByb3V0ZXIgdG8KK3NvbWUgb3RoZXIgbmV0d29yayBiZWZvcmUgcmVhY2hpbmcgaXRzIGZpbmFsIGRlc3RpbmF0aW9uLgorCisJSW4gYSBnYXRld2F5ZWQgbmV0d29yayBjb25maWd1cmF0aW9uLCBhbHRob3VnaCBIb3N0IEEgbWF5Citjb21tdW5pY2F0ZSB3aXRoIG1hbnkgb3RoZXIgc3lzdGVtcywgYWxsIG9mIGl0cyB0cmFmZmljIHdpbGwgYmUgc2VudAorYW5kIHJlY2VpdmVkIHZpYSBvbmUgb3RoZXIgcGVlciBvbiB0aGUgbG9jYWwgbmV0d29yaywgdGhlIHJvdXRlci4KKworCU5vdGUgdGhhdCB0aGUgY2FzZSBvZiB0d28gc3lzdGVtcyBjb25uZWN0ZWQgZGlyZWN0bHkgdmlhCittdWx0aXBsZSBwaHlzaWNhbCBsaW5rcyBpcywgZm9yIHB1cnBvc2VzIG9mIGNvbmZpZ3VyaW5nIGJvbmRpbmcsIHRoZQorc2FtZSBhcyBhIGdhdGV3YXllZCBjb25maWd1cmF0aW9uLiAgSW4gdGhhdCBjYXNlLCBpdCBoYXBwZW5zIHRoYXQgYWxsCit0cmFmZmljIGlzIGRlc3RpbmVkIGZvciB0aGUgImdhdGV3YXkiIGl0c2VsZiwgbm90IHNvbWUgb3RoZXIgbmV0d29yaworYmV5b25kIHRoZSBnYXRld2F5LgorCisJSW4gYSBsb2NhbCBjb25maWd1cmF0aW9uLCB0aGUgInN3aXRjaCIgaXMgYWN0aW5nIHByaW1hcmlseSBhcworYSBzd2l0Y2gsIGFuZCB0aGUgbWFqb3JpdHkgb2YgdHJhZmZpYyBwYXNzZXMgdGhyb3VnaCB0aGlzIHN3aXRjaCB0bworcmVhY2ggb3RoZXIgc3RhdGlvbnMgb24gdGhlIHNhbWUgbmV0d29yay4gIEFuIGV4YW1wbGUgd291bGQgYmUgdGhlCitmb2xsb3dpbmc6CisKKyAgICArLS0tLS0tLS0tLSsgICAgICAgICAgICArLS0tLS0tLS0tLSsgICAgICAgKy0tLS0tLS0tKworICAgIHwgICAgICAgICAgfGV0aDAgICBwb3J0MXwgICAgICAgICAgKy0tLS0tLS0rIEhvc3QgQiB8CisgICAgfCAgSG9zdCBBICArLS0tLS0tLS0tLS0tKyAgc3dpdGNoICB8cG9ydDMgICstLS0tLS0tLSsKKyAgICB8ICAgICAgICAgICstLS0tLS0tLS0tLS0rICAgICAgICAgIHwgICAgICAgICAgICAgICAgICArLS0tLS0tLS0rCisgICAgfCAgICAgICAgICB8ZXRoMSAgIHBvcnQyfCAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tKyBIb3N0IEMgfAorICAgICstLS0tLS0tLS0tKyAgICAgICAgICAgICstLS0tLS0tLS0tK3BvcnQ0ICAgICAgICAgICAgICstLS0tLS0tLSsKKworCisJQWdhaW4sIHRoZSBzd2l0Y2ggbWF5IGJlIGEgZGVkaWNhdGVkIHN3aXRjaCBkZXZpY2UsIG9yIGFub3RoZXIKK2hvc3QgYWN0aW5nIGFzIGEgZ2F0ZXdheS4gIEZvciBvdXIgZGlzY3Vzc2lvbiwgdGhlIGltcG9ydGFudCBwb2ludCBpcwordGhhdCB0aGUgbWFqb3JpdHkgb2YgdHJhZmZpYyBmcm9tIEhvc3QgQSBpcyBkZXN0aW5lZCBmb3Igb3RoZXIgaG9zdHMKK29uIHRoZSBzYW1lIGxvY2FsIG5ldHdvcmsgKEhvc3RzIEIgYW5kIEMgaW4gdGhlIGFib3ZlIGV4YW1wbGUpLgorCisJSW4gc3VtbWFyeSwgaW4gYSBnYXRld2F5ZWQgY29uZmlndXJhdGlvbiwgdHJhZmZpYyB0byBhbmQgZnJvbQordGhlIGJvbmRlZCBkZXZpY2Ugd2lsbCBiZSB0byB0aGUgc2FtZSBNQUMgbGV2ZWwgcGVlciBvbiB0aGUgbmV0d29yaworKHRoZSBnYXRld2F5IGl0c2VsZiwgaS5lLiwgdGhlIHJvdXRlciksIHJlZ2FyZGxlc3Mgb2YgaXRzIGZpbmFsCitkZXN0aW5hdGlvbi4gIEluIGEgbG9jYWwgY29uZmlndXJhdGlvbiwgdHJhZmZpYyBmbG93cyBkaXJlY3RseSB0byBhbmQKK2Zyb20gdGhlIGZpbmFsIGRlc3RpbmF0aW9ucywgdGh1cywgZWFjaCBkZXN0aW5hdGlvbiAoSG9zdCBCLCBIb3N0IEMpCit3aWxsIGJlIGFkZHJlc3NlZCBkaXJlY3RseSBieSB0aGVpciBpbmRpdmlkdWFsIE1BQyBhZGRyZXNzZXMuCisKKwlUaGlzIGRpc3RpbmN0aW9uIGJldHdlZW4gYSBnYXRld2F5ZWQgYW5kIGEgbG9jYWwgbmV0d29yaworY29uZmlndXJhdGlvbiBpcyBpbXBvcnRhbnQgYmVjYXVzZSBtYW55IG9mIHRoZSBsb2FkIGJhbGFuY2luZyBtb2RlcworYXZhaWxhYmxlIHVzZSB0aGUgTUFDIGFkZHJlc3NlcyBvZiB0aGUgbG9jYWwgbmV0d29yayBzb3VyY2UgYW5kCitkZXN0aW5hdGlvbiB0byBtYWtlIGxvYWQgYmFsYW5jaW5nIGRlY2lzaW9ucy4gIFRoZSBiZWhhdmlvciBvZiBlYWNoCittb2RlIGlzIGRlc2NyaWJlZCBiZWxvdy4KKworCisxMi4xLjEgTVQgQm9uZGluZyBNb2RlIFNlbGVjdGlvbiBmb3IgU2luZ2xlIFN3aXRjaCBUb3BvbG9neQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCVRoaXMgY29uZmlndXJhdGlvbiBpcyB0aGUgZWFzaWVzdCB0byBzZXQgdXAgYW5kIHRvIHVuZGVyc3RhbmQsCithbHRob3VnaCB5b3Ugd2lsbCBoYXZlIHRvIGRlY2lkZSB3aGljaCBib25kaW5nIG1vZGUgYmVzdCBzdWl0cyB5b3VyCituZWVkcy4gIFRoZSB0cmFkZSBvZmZzIGZvciBlYWNoIG1vZGUgYXJlIGRldGFpbGVkIGJlbG93OgorCitiYWxhbmNlLXJyOiBUaGlzIG1vZGUgaXMgdGhlIG9ubHkgbW9kZSB0aGF0IHdpbGwgcGVybWl0IGEgc2luZ2xlCisJVENQL0lQIGNvbm5lY3Rpb24gdG8gc3RyaXBlIHRyYWZmaWMgYWNyb3NzIG11bHRpcGxlCisJaW50ZXJmYWNlcy4gSXQgaXMgdGhlcmVmb3JlIHRoZSBvbmx5IG1vZGUgdGhhdCB3aWxsIGFsbG93IGEKKwlzaW5nbGUgVENQL0lQIHN0cmVhbSB0byB1dGlsaXplIG1vcmUgdGhhbiBvbmUgaW50ZXJmYWNlJ3MKKwl3b3J0aCBvZiB0aHJvdWdocHV0LiAgVGhpcyBjb21lcyBhdCBhIGNvc3QsIGhvd2V2ZXI6IHRoZQorCXN0cmlwaW5nIGdlbmVyYWxseSByZXN1bHRzIGluIHBlZXIgc3lzdGVtcyByZWNlaXZpbmcgcGFja2V0cyBvdXQKKwlvZiBvcmRlciwgY2F1c2luZyBUQ1AvSVAncyBjb25nZXN0aW9uIGNvbnRyb2wgc3lzdGVtIHRvIGtpY2sKKwlpbiwgb2Z0ZW4gYnkgcmV0cmFuc21pdHRpbmcgc2VnbWVudHMuCisKKwlJdCBpcyBwb3NzaWJsZSB0byBhZGp1c3QgVENQL0lQJ3MgY29uZ2VzdGlvbiBsaW1pdHMgYnkKKwlhbHRlcmluZyB0aGUgbmV0LmlwdjQudGNwX3Jlb3JkZXJpbmcgc3lzY3RsIHBhcmFtZXRlci4gIFRoZQorCXVzdWFsIGRlZmF1bHQgdmFsdWUgaXMgMy4gQnV0IGtlZXAgaW4gbWluZCBUQ1Agc3RhY2sgaXMgYWJsZQorCXRvIGF1dG9tYXRpY2FsbHkgaW5jcmVhc2UgdGhpcyB3aGVuIGl0IGRldGVjdHMgcmVvcmRlcnMuCisKKwlOb3RlIHRoYXQgdGhlIGZyYWN0aW9uIG9mIHBhY2tldHMgdGhhdCB3aWxsIGJlIGRlbGl2ZXJlZCBvdXQgb2YKKwlvcmRlciBpcyBoaWdobHkgdmFyaWFibGUsIGFuZCBpcyB1bmxpa2VseSB0byBiZSB6ZXJvLiAgVGhlIGxldmVsCisJb2YgcmVvcmRlcmluZyBkZXBlbmRzIHVwb24gYSB2YXJpZXR5IG9mIGZhY3RvcnMsIGluY2x1ZGluZyB0aGUKKwluZXR3b3JraW5nIGludGVyZmFjZXMsIHRoZSBzd2l0Y2gsIGFuZCB0aGUgdG9wb2xvZ3kgb2YgdGhlCisJY29uZmlndXJhdGlvbi4gIFNwZWFraW5nIGluIGdlbmVyYWwgdGVybXMsIGhpZ2hlciBzcGVlZCBuZXR3b3JrCisJY2FyZHMgcHJvZHVjZSBtb3JlIHJlb3JkZXJpbmcgKGR1ZSB0byBmYWN0b3JzIHN1Y2ggYXMgcGFja2V0CisJY29hbGVzY2luZyksIGFuZCBhICJtYW55IHRvIG1hbnkiIHRvcG9sb2d5IHdpbGwgcmVvcmRlciBhdCBhCisJaGlnaGVyIHJhdGUgdGhhbiBhICJtYW55IHNsb3cgdG8gb25lIGZhc3QiIGNvbmZpZ3VyYXRpb24uCisKKwlNYW55IHN3aXRjaGVzIGRvIG5vdCBzdXBwb3J0IGFueSBtb2RlcyB0aGF0IHN0cmlwZSB0cmFmZmljCisJKGluc3RlYWQgY2hvb3NpbmcgYSBwb3J0IGJhc2VkIHVwb24gSVAgb3IgTUFDIGxldmVsIGFkZHJlc3Nlcyk7CisJZm9yIHRob3NlIGRldmljZXMsIHRyYWZmaWMgZm9yIGEgcGFydGljdWxhciBjb25uZWN0aW9uIGZsb3dpbmcKKwl0aHJvdWdoIHRoZSBzd2l0Y2ggdG8gYSBiYWxhbmNlLXJyIGJvbmQgd2lsbCBub3QgdXRpbGl6ZSBncmVhdGVyCisJdGhhbiBvbmUgaW50ZXJmYWNlJ3Mgd29ydGggb2YgYmFuZHdpZHRoLgorCisJSWYgeW91IGFyZSB1dGlsaXppbmcgcHJvdG9jb2xzIG90aGVyIHRoYW4gVENQL0lQLCBVRFAgZm9yCisJZXhhbXBsZSwgYW5kIHlvdXIgYXBwbGljYXRpb24gY2FuIHRvbGVyYXRlIG91dCBvZiBvcmRlcgorCWRlbGl2ZXJ5LCB0aGVuIHRoaXMgbW9kZSBjYW4gYWxsb3cgZm9yIHNpbmdsZSBzdHJlYW0gZGF0YWdyYW0KKwlwZXJmb3JtYW5jZSB0aGF0IHNjYWxlcyBuZWFyIGxpbmVhcmx5IGFzIGludGVyZmFjZXMgYXJlIGFkZGVkCisJdG8gdGhlIGJvbmQuCisKKwlUaGlzIG1vZGUgcmVxdWlyZXMgdGhlIHN3aXRjaCB0byBoYXZlIHRoZSBhcHByb3ByaWF0ZSBwb3J0cworCWNvbmZpZ3VyZWQgZm9yICJldGhlcmNoYW5uZWwiIG9yICJ0cnVua2luZy4iCisKK2FjdGl2ZS1iYWNrdXA6IFRoZXJlIGlzIG5vdCBtdWNoIGFkdmFudGFnZSBpbiB0aGlzIG5ldHdvcmsgdG9wb2xvZ3kgdG8KKwl0aGUgYWN0aXZlLWJhY2t1cCBtb2RlLCBhcyB0aGUgaW5hY3RpdmUgYmFja3VwIGRldmljZXMgYXJlIGFsbAorCWNvbm5lY3RlZCB0byB0aGUgc2FtZSBwZWVyIGFzIHRoZSBwcmltYXJ5LiAgSW4gdGhpcyBjYXNlLCBhCisJbG9hZCBiYWxhbmNpbmcgbW9kZSAod2l0aCBsaW5rIG1vbml0b3JpbmcpIHdpbGwgcHJvdmlkZSB0aGUKKwlzYW1lIGxldmVsIG9mIG5ldHdvcmsgYXZhaWxhYmlsaXR5LCBidXQgd2l0aCBpbmNyZWFzZWQKKwlhdmFpbGFibGUgYmFuZHdpZHRoLiAgT24gdGhlIHBsdXMgc2lkZSwgYWN0aXZlLWJhY2t1cCBtb2RlCisJZG9lcyBub3QgcmVxdWlyZSBhbnkgY29uZmlndXJhdGlvbiBvZiB0aGUgc3dpdGNoLCBzbyBpdCBtYXkKKwloYXZlIHZhbHVlIGlmIHRoZSBoYXJkd2FyZSBhdmFpbGFibGUgZG9lcyBub3Qgc3VwcG9ydCBhbnkgb2YKKwl0aGUgbG9hZCBiYWxhbmNlIG1vZGVzLgorCitiYWxhbmNlLXhvcjogVGhpcyBtb2RlIHdpbGwgbGltaXQgdHJhZmZpYyBzdWNoIHRoYXQgcGFja2V0cyBkZXN0aW5lZAorCWZvciBzcGVjaWZpYyBwZWVycyB3aWxsIGFsd2F5cyBiZSBzZW50IG92ZXIgdGhlIHNhbWUKKwlpbnRlcmZhY2UuICBTaW5jZSB0aGUgZGVzdGluYXRpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgTUFDCisJYWRkcmVzc2VzIGludm9sdmVkLCB0aGlzIG1vZGUgd29ya3MgYmVzdCBpbiBhICJsb2NhbCIgbmV0d29yaworCWNvbmZpZ3VyYXRpb24gKGFzIGRlc2NyaWJlZCBhYm92ZSksIHdpdGggZGVzdGluYXRpb25zIGFsbCBvbgorCXRoZSBzYW1lIGxvY2FsIG5ldHdvcmsuICBUaGlzIG1vZGUgaXMgbGlrZWx5IHRvIGJlIHN1Ym9wdGltYWwKKwlpZiBhbGwgeW91ciB0cmFmZmljIGlzIHBhc3NlZCB0aHJvdWdoIGEgc2luZ2xlIHJvdXRlciAoaS5lLiwgYQorCSJnYXRld2F5ZWQiIG5ldHdvcmsgY29uZmlndXJhdGlvbiwgYXMgZGVzY3JpYmVkIGFib3ZlKS4KKworCUFzIHdpdGggYmFsYW5jZS1yciwgdGhlIHN3aXRjaCBwb3J0cyBuZWVkIHRvIGJlIGNvbmZpZ3VyZWQgZm9yCisJImV0aGVyY2hhbm5lbCIgb3IgInRydW5raW5nLiIKKworYnJvYWRjYXN0OiBMaWtlIGFjdGl2ZS1iYWNrdXAsIHRoZXJlIGlzIG5vdCBtdWNoIGFkdmFudGFnZSB0byB0aGlzCisJbW9kZSBpbiB0aGlzIHR5cGUgb2YgbmV0d29yayB0b3BvbG9neS4KKworODAyLjNhZDogVGhpcyBtb2RlIGNhbiBiZSBhIGdvb2QgY2hvaWNlIGZvciB0aGlzIHR5cGUgb2YgbmV0d29yaworCXRvcG9sb2d5LiAgVGhlIDgwMi4zYWQgbW9kZSBpcyBhbiBJRUVFIHN0YW5kYXJkLCBzbyBhbGwgcGVlcnMKKwl0aGF0IGltcGxlbWVudCA4MDIuM2FkIHNob3VsZCBpbnRlcm9wZXJhdGUgd2VsbC4gIFRoZSA4MDIuM2FkCisJcHJvdG9jb2wgaW5jbHVkZXMgYXV0b21hdGljIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGFnZ3JlZ2F0ZXMsCisJc28gbWluaW1hbCBtYW51YWwgY29uZmlndXJhdGlvbiBvZiB0aGUgc3dpdGNoIGlzIG5lZWRlZAorCSh0eXBpY2FsbHkgb25seSB0byBkZXNpZ25hdGUgdGhhdCBzb21lIHNldCBvZiBkZXZpY2VzIGlzCisJYXZhaWxhYmxlIGZvciA4MDIuM2FkKS4gIFRoZSA4MDIuM2FkIHN0YW5kYXJkIGFsc28gbWFuZGF0ZXMKKwl0aGF0IGZyYW1lcyBiZSBkZWxpdmVyZWQgaW4gb3JkZXIgKHdpdGhpbiBjZXJ0YWluIGxpbWl0cyksIHNvCisJaW4gZ2VuZXJhbCBzaW5nbGUgY29ubmVjdGlvbnMgd2lsbCBub3Qgc2VlIG1pc29yZGVyaW5nIG9mCisJcGFja2V0cy4gIFRoZSA4MDIuM2FkIG1vZGUgZG9lcyBoYXZlIHNvbWUgZHJhd2JhY2tzOiB0aGUKKwlzdGFuZGFyZCBtYW5kYXRlcyB0aGF0IGFsbCBkZXZpY2VzIGluIHRoZSBhZ2dyZWdhdGUgb3BlcmF0ZSBhdAorCXRoZSBzYW1lIHNwZWVkIGFuZCBkdXBsZXguICBBbHNvLCBhcyB3aXRoIGFsbCBib25kaW5nIGxvYWQKKwliYWxhbmNlIG1vZGVzIG90aGVyIHRoYW4gYmFsYW5jZS1yciwgbm8gc2luZ2xlIGNvbm5lY3Rpb24gd2lsbAorCWJlIGFibGUgdG8gdXRpbGl6ZSBtb3JlIHRoYW4gYSBzaW5nbGUgaW50ZXJmYWNlJ3Mgd29ydGggb2YKKwliYW5kd2lkdGguICAKKworCUFkZGl0aW9uYWxseSwgdGhlIGxpbnV4IGJvbmRpbmcgODAyLjNhZCBpbXBsZW1lbnRhdGlvbgorCWRpc3RyaWJ1dGVzIHRyYWZmaWMgYnkgcGVlciAodXNpbmcgYW4gWE9SIG9mIE1BQyBhZGRyZXNzZXMKKwlhbmQgcGFja2V0IHR5cGUgSUQpLCBzbyBpbiBhICJnYXRld2F5ZWQiIGNvbmZpZ3VyYXRpb24sIGFsbAorCW91dGdvaW5nIHRyYWZmaWMgd2lsbCBnZW5lcmFsbHkgdXNlIHRoZSBzYW1lIGRldmljZS4gIEluY29taW5nCisJdHJhZmZpYyBtYXkgYWxzbyBlbmQgdXAgb24gYSBzaW5nbGUgZGV2aWNlLCBidXQgdGhhdCBpcworCWRlcGVuZGVudCB1cG9uIHRoZSBiYWxhbmNpbmcgcG9saWN5IG9mIHRoZSBwZWVyJ3MgODAyMy5hZAorCWltcGxlbWVudGF0aW9uLiAgSW4gYSAibG9jYWwiIGNvbmZpZ3VyYXRpb24sIHRyYWZmaWMgd2lsbCBiZQorCWRpc3RyaWJ1dGVkIGFjcm9zcyB0aGUgZGV2aWNlcyBpbiB0aGUgYm9uZC4KKworCUZpbmFsbHksIHRoZSA4MDIuM2FkIG1vZGUgbWFuZGF0ZXMgdGhlIHVzZSBvZiB0aGUgTUlJIG1vbml0b3IsCisJdGhlcmVmb3JlLCB0aGUgQVJQIG1vbml0b3IgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGlzIG1vZGUuCisKK2JhbGFuY2UtdGxiOiBUaGUgYmFsYW5jZS10bGIgbW9kZSBiYWxhbmNlcyBvdXRnb2luZyB0cmFmZmljIGJ5IHBlZXIuCisJU2luY2UgdGhlIGJhbGFuY2luZyBpcyBkb25lIGFjY29yZGluZyB0byBNQUMgYWRkcmVzcywgaW4gYQorCSJnYXRld2F5ZWQiIGNvbmZpZ3VyYXRpb24gKGFzIGRlc2NyaWJlZCBhYm92ZSksIHRoaXMgbW9kZSB3aWxsCisJc2VuZCBhbGwgdHJhZmZpYyBhY3Jvc3MgYSBzaW5nbGUgZGV2aWNlLiAgSG93ZXZlciwgaW4gYQorCSJsb2NhbCIgbmV0d29yayBjb25maWd1cmF0aW9uLCB0aGlzIG1vZGUgYmFsYW5jZXMgbXVsdGlwbGUKKwlsb2NhbCBuZXR3b3JrIHBlZXJzIGFjcm9zcyBkZXZpY2VzIGluIGEgdmFndWVseSBpbnRlbGxpZ2VudAorCW1hbm5lciAobm90IGEgc2ltcGxlIFhPUiBhcyBpbiBiYWxhbmNlLXhvciBvciA4MDIuM2FkIG1vZGUpLAorCXNvIHRoYXQgbWF0aGVtYXRpY2FsbHkgdW5sdWNreSBNQUMgYWRkcmVzc2VzIChpLmUuLCBvbmVzIHRoYXQKKwlYT1IgdG8gdGhlIHNhbWUgdmFsdWUpIHdpbGwgbm90IGFsbCAiYnVuY2ggdXAiIG9uIGEgc2luZ2xlCisJaW50ZXJmYWNlLgorCisJVW5saWtlIDgwMi4zYWQsIGludGVyZmFjZXMgbWF5IGJlIG9mIGRpZmZlcmluZyBzcGVlZHMsIGFuZCBubworCXNwZWNpYWwgc3dpdGNoIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQuICBPbiB0aGUgZG93biBzaWRlLAorCWluIHRoaXMgbW9kZSBhbGwgaW5jb21pbmcgdHJhZmZpYyBhcnJpdmVzIG92ZXIgYSBzaW5nbGUKKwlpbnRlcmZhY2UsIHRoaXMgbW9kZSByZXF1aXJlcyBjZXJ0YWluIGV0aHRvb2wgc3VwcG9ydCBpbiB0aGUKKwluZXR3b3JrIGRldmljZSBkcml2ZXIgb2YgdGhlIHNsYXZlIGludGVyZmFjZXMsIGFuZCB0aGUgQVJQCisJbW9uaXRvciBpcyBub3QgYXZhaWxhYmxlLgorCitiYWxhbmNlLWFsYjogVGhpcyBtb2RlIGlzIGV2ZXJ5dGhpbmcgdGhhdCBiYWxhbmNlLXRsYiBpcywgYW5kIG1vcmUuCisJSXQgaGFzIGFsbCBvZiB0aGUgZmVhdHVyZXMgKGFuZCByZXN0cmljdGlvbnMpIG9mIGJhbGFuY2UtdGxiLAorCWFuZCB3aWxsIGFsc28gYmFsYW5jZSBpbmNvbWluZyB0cmFmZmljIGZyb20gbG9jYWwgbmV0d29yaworCXBlZXJzIChhcyBkZXNjcmliZWQgaW4gdGhlIEJvbmRpbmcgTW9kdWxlIE9wdGlvbnMgc2VjdGlvbiwKKwlhYm92ZSkuCisKKwlUaGUgb25seSBhZGRpdGlvbmFsIGRvd24gc2lkZSB0byB0aGlzIG1vZGUgaXMgdGhhdCB0aGUgbmV0d29yaworCWRldmljZSBkcml2ZXIgbXVzdCBzdXBwb3J0IGNoYW5naW5nIHRoZSBoYXJkd2FyZSBhZGRyZXNzIHdoaWxlCisJdGhlIGRldmljZSBpcyBvcGVuLgorCisxMi4xLjIgTVQgTGluayBNb25pdG9yaW5nIGZvciBTaW5nbGUgU3dpdGNoIFRvcG9sb2d5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlUaGUgY2hvaWNlIG9mIGxpbmsgbW9uaXRvcmluZyBtYXkgbGFyZ2VseSBkZXBlbmQgdXBvbiB3aGljaAorbW9kZSB5b3UgY2hvb3NlIHRvIHVzZS4gIFRoZSBtb3JlIGFkdmFuY2VkIGxvYWQgYmFsYW5jaW5nIG1vZGVzIGRvIG5vdAorc3VwcG9ydCB0aGUgdXNlIG9mIHRoZSBBUlAgbW9uaXRvciwgYW5kIGFyZSB0aHVzIHJlc3RyaWN0ZWQgdG8gdXNpbmcKK3RoZSBNSUkgbW9uaXRvciAod2hpY2ggZG9lcyBub3QgcHJvdmlkZSBhcyBoaWdoIGEgbGV2ZWwgb2YgZW5kIHRvIGVuZAorYXNzdXJhbmNlIGFzIHRoZSBBUlAgbW9uaXRvcikuCisKKzEyLjIgTWF4aW11bSBUaHJvdWdocHV0IGluIGEgTXVsdGlwbGUgU3dpdGNoIFRvcG9sb2d5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJTXVsdGlwbGUgc3dpdGNoZXMgbWF5IGJlIHV0aWxpemVkIHRvIG9wdGltaXplIGZvciB0aHJvdWdocHV0Cit3aGVuIHRoZXkgYXJlIGNvbmZpZ3VyZWQgaW4gcGFyYWxsZWwgYXMgcGFydCBvZiBhbiBpc29sYXRlZCBuZXR3b3JrCitiZXR3ZWVuIHR3byBvciBtb3JlIHN5c3RlbXMsIGZvciBleGFtcGxlOgorCisgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgSG9zdCBBICAgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgKy0rLS0tKy0tLSstKworICAgICAgICAgICAgICAgICAgICAgICAgIHwgICB8ICAgfAorICAgICAgICAgICAgICAgICstLS0tLS0tLSsgICB8ICAgKy0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICB8CisgICAgICAgICArLS0tLS0tKy0tLSsgICstLS0tLSstLS0tKyAgKy0tLS0tKy0tLS0rCisgICAgICAgICB8IFN3aXRjaCBBIHwgIHwgU3dpdGNoIEIgfCAgfCBTd2l0Y2ggQyB8CisgICAgICAgICArLS0tLS0tKy0tLSsgICstLS0tLSstLS0tKyAgKy0tLS0tKy0tLS0rCisgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICstLS0tLS0tLSsgICB8ICAgKy0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgfCAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgKy0rLS0tKy0tLSstKworICAgICAgICAgICAgICAgICAgICAgICB8ICBIb3N0IEIgICB8IAorICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0rCisKKwlJbiB0aGlzIGNvbmZpZ3VyYXRpb24sIHRoZSBzd2l0Y2hlcyBhcmUgaXNvbGF0ZWQgZnJvbSBvbmUKK2Fub3RoZXIuICBPbmUgcmVhc29uIHRvIGVtcGxveSBhIHRvcG9sb2d5IHN1Y2ggYXMgdGhpcyBpcyBmb3IgYW4KK2lzb2xhdGVkIG5ldHdvcmsgd2l0aCBtYW55IGhvc3RzIChhIGNsdXN0ZXIgY29uZmlndXJlZCBmb3IgaGlnaAorcGVyZm9ybWFuY2UsIGZvciBleGFtcGxlKSwgdXNpbmcgbXVsdGlwbGUgc21hbGxlciBzd2l0Y2hlcyBjYW4gYmUgbW9yZQorY29zdCBlZmZlY3RpdmUgdGhhbiBhIHNpbmdsZSBsYXJnZXIgc3dpdGNoLCBlLmcuLCBvbiBhIG5ldHdvcmsgd2l0aCAyNAoraG9zdHMsIHRocmVlIDI0IHBvcnQgc3dpdGNoZXMgY2FuIGJlIHNpZ25pZmljYW50bHkgbGVzcyBleHBlbnNpdmUgdGhhbgorYSBzaW5nbGUgNzIgcG9ydCBzd2l0Y2guCisKKwlJZiBhY2Nlc3MgYmV5b25kIHRoZSBuZXR3b3JrIGlzIHJlcXVpcmVkLCBhbiBpbmRpdmlkdWFsIGhvc3QKK2NhbiBiZSBlcXVpcHBlZCB3aXRoIGFuIGFkZGl0aW9uYWwgbmV0d29yayBkZXZpY2UgY29ubmVjdGVkIHRvIGFuCitleHRlcm5hbCBuZXR3b3JrOyB0aGlzIGhvc3QgdGhlbiBhZGRpdGlvbmFsbHkgYWN0cyBhcyBhIGdhdGV3YXkuCisKKzEyLjIuMSBNVCBCb25kaW5nIE1vZGUgU2VsZWN0aW9uIGZvciBNdWx0aXBsZSBTd2l0Y2ggVG9wb2xvZ3kKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCUluIGFjdHVhbCBwcmFjdGljZSwgdGhlIGJvbmRpbmcgbW9kZSB0eXBpY2FsbHkgZW1wbG95ZWQgaW4KK2NvbmZpZ3VyYXRpb25zIG9mIHRoaXMgdHlwZSBpcyBiYWxhbmNlLXJyLiAgSGlzdG9yaWNhbGx5LCBpbiB0aGlzCituZXR3b3JrIGNvbmZpZ3VyYXRpb24sIHRoZSB1c3VhbCBjYXZlYXRzIGFib3V0IG91dCBvZiBvcmRlciBwYWNrZXQKK2RlbGl2ZXJ5IGFyZSBtaXRpZ2F0ZWQgYnkgdGhlIHVzZSBvZiBuZXR3b3JrIGFkYXB0ZXJzIHRoYXQgZG8gbm90IGRvCithbnkga2luZCBvZiBwYWNrZXQgY29hbGVzY2luZyAodmlhIHRoZSB1c2Ugb2YgTkFQSSwgb3IgYmVjYXVzZSB0aGUKK2RldmljZSBpdHNlbGYgZG9lcyBub3QgZ2VuZXJhdGUgaW50ZXJydXB0cyB1bnRpbCBzb21lIG51bWJlciBvZgorcGFja2V0cyBoYXMgYXJyaXZlZCkuICBXaGVuIGVtcGxveWVkIGluIHRoaXMgZmFzaGlvbiwgdGhlIGJhbGFuY2UtcnIKK21vZGUgYWxsb3dzIGluZGl2aWR1YWwgY29ubmVjdGlvbnMgYmV0d2VlbiB0d28gaG9zdHMgdG8gZWZmZWN0aXZlbHkKK3V0aWxpemUgZ3JlYXRlciB0aGFuIG9uZSBpbnRlcmZhY2UncyBiYW5kd2lkdGguCisKKzEyLjIuMiBNVCBMaW5rIE1vbml0b3JpbmcgZm9yIE11bHRpcGxlIFN3aXRjaCBUb3BvbG9neQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlBZ2FpbiwgaW4gYWN0dWFsIHByYWN0aWNlLCB0aGUgTUlJIG1vbml0b3IgaXMgbW9zdCBvZnRlbiB1c2VkCitpbiB0aGlzIGNvbmZpZ3VyYXRpb24sIGFzIHBlcmZvcm1hbmNlIGlzIGdpdmVuIHByZWZlcmVuY2Ugb3ZlcgorYXZhaWxhYmlsaXR5LiAgVGhlIEFSUCBtb25pdG9yIHdpbGwgZnVuY3Rpb24gaW4gdGhpcyB0b3BvbG9neSwgYnV0IGl0cworYWR2YW50YWdlcyBvdmVyIHRoZSBNSUkgbW9uaXRvciBhcmUgbWl0aWdhdGVkIGJ5IHRoZSB2b2x1bWUgb2YgcHJvYmVzCituZWVkZWQgYXMgdGhlIG51bWJlciBvZiBzeXN0ZW1zIGludm9sdmVkIGdyb3dzIChyZW1lbWJlciB0aGF0IGVhY2gKK2hvc3QgaW4gdGhlIG5ldHdvcmsgaXMgY29uZmlndXJlZCB3aXRoIGJvbmRpbmcpLgorCisxMy4gU3dpdGNoIEJlaGF2aW9yIElzc3VlcworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworMTMuMSBMaW5rIEVzdGFibGlzaG1lbnQgYW5kIEZhaWxvdmVyIERlbGF5cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJU29tZSBzd2l0Y2hlcyBleGhpYml0IHVuZGVzaXJhYmxlIGJlaGF2aW9yIHdpdGggcmVnYXJkIHRvIHRoZQordGltaW5nIG9mIGxpbmsgdXAgYW5kIGRvd24gcmVwb3J0aW5nIGJ5IHRoZSBzd2l0Y2guCisKKwlGaXJzdCwgd2hlbiBhIGxpbmsgY29tZXMgdXAsIHNvbWUgc3dpdGNoZXMgbWF5IGluZGljYXRlIHRoYXQKK3RoZSBsaW5rIGlzIHVwIChjYXJyaWVyIGF2YWlsYWJsZSksIGJ1dCBub3QgcGFzcyB0cmFmZmljIG92ZXIgdGhlCitpbnRlcmZhY2UgZm9yIHNvbWUgcGVyaW9kIG9mIHRpbWUuICBUaGlzIGRlbGF5IGlzIHR5cGljYWxseSBkdWUgdG8KK3NvbWUgdHlwZSBvZiBhdXRvbmVnb3RpYXRpb24gb3Igcm91dGluZyBwcm90b2NvbCwgYnV0IG1heSBhbHNvIG9jY3VyCitkdXJpbmcgc3dpdGNoIGluaXRpYWxpemF0aW9uIChlLmcuLCBkdXJpbmcgcmVjb3ZlcnkgYWZ0ZXIgYSBzd2l0Y2gKK2ZhaWx1cmUpLiAgSWYgeW91IGZpbmQgdGhpcyB0byBiZSBhIHByb2JsZW0sIHNwZWNpZnkgYW4gYXBwcm9wcmlhdGUKK3ZhbHVlIHRvIHRoZSB1cGRlbGF5IGJvbmRpbmcgbW9kdWxlIG9wdGlvbiB0byBkZWxheSB0aGUgdXNlIG9mIHRoZQorcmVsZXZhbnQgaW50ZXJmYWNlKHMpLgorCisJU2Vjb25kLCBzb21lIHN3aXRjaGVzIG1heSAiYm91bmNlIiB0aGUgbGluayBzdGF0ZSBvbmUgb3IgbW9yZQordGltZXMgd2hpbGUgYSBsaW5rIGlzIGNoYW5naW5nIHN0YXRlLiAgVGhpcyBvY2N1cnMgbW9zdCBjb21tb25seSB3aGlsZQordGhlIHN3aXRjaCBpcyBpbml0aWFsaXppbmcuICBBZ2FpbiwgYW4gYXBwcm9wcmlhdGUgdXBkZWxheSB2YWx1ZSBtYXkKK2hlbHAuCisKKwlOb3RlIHRoYXQgd2hlbiBhIGJvbmRpbmcgaW50ZXJmYWNlIGhhcyBubyBhY3RpdmUgbGlua3MsIHRoZQorZHJpdmVyIHdpbGwgaW1tZWRpYXRlbHkgcmV1c2UgdGhlIGZpcnN0IGxpbmsgdGhhdCBnb2VzIHVwLCBldmVuIGlmIHRoZQordXBkZWxheSBwYXJhbWV0ZXIgaGFzIGJlZW4gc3BlY2lmaWVkICh0aGUgdXBkZWxheSBpcyBpZ25vcmVkIGluIHRoaXMKK2Nhc2UpLiAgSWYgdGhlcmUgYXJlIHNsYXZlIGludGVyZmFjZXMgd2FpdGluZyBmb3IgdGhlIHVwZGVsYXkgdGltZW91dAordG8gZXhwaXJlLCB0aGUgaW50ZXJmYWNlIHRoYXQgZmlyc3Qgd2VudCBpbnRvIHRoYXQgc3RhdGUgd2lsbCBiZQoraW1tZWRpYXRlbHkgcmV1c2VkLiAgVGhpcyByZWR1Y2VzIGRvd24gdGltZSBvZiB0aGUgbmV0d29yayBpZiB0aGUKK3ZhbHVlIG9mIHVwZGVsYXkgaGFzIGJlZW4gb3ZlcmVzdGltYXRlZCwgYW5kIHNpbmNlIHRoaXMgb2NjdXJzIG9ubHkgaW4KK2Nhc2VzIHdpdGggbm8gY29ubmVjdGl2aXR5LCB0aGVyZSBpcyBubyBhZGRpdGlvbmFsIHBlbmFsdHkgZm9yCitpZ25vcmluZyB0aGUgdXBkZWxheS4KKworCUluIGFkZGl0aW9uIHRvIHRoZSBjb25jZXJucyBhYm91dCBzd2l0Y2ggdGltaW5ncywgaWYgeW91cgorc3dpdGNoZXMgdGFrZSBhIGxvbmcgdGltZSB0byBnbyBpbnRvIGJhY2t1cCBtb2RlLCBpdCBtYXkgYmUgZGVzaXJhYmxlCit0byBub3QgYWN0aXZhdGUgYSBiYWNrdXAgaW50ZXJmYWNlIGltbWVkaWF0ZWx5IGFmdGVyIGEgbGluayBnb2VzIGRvd24uCitGYWlsb3ZlciBtYXkgYmUgZGVsYXllZCB2aWEgdGhlIGRvd25kZWxheSBib25kaW5nIG1vZHVsZSBvcHRpb24uCisKKzEzLjIgRHVwbGljYXRlZCBJbmNvbWluZyBQYWNrZXRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJTk9URTogU3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDMuMC4yLCB0aGUgYm9uZGluZyBkcml2ZXIgaGFzIGxvZ2ljIHRvCitzdXBwcmVzcyBkdXBsaWNhdGUgcGFja2V0cywgd2hpY2ggc2hvdWxkIGxhcmdlbHkgZWxpbWluYXRlIHRoaXMgcHJvYmxlbS4KK1RoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gaXMga2VwdCBmb3IgcmVmZXJlbmNlLgorCisJSXQgaXMgbm90IHVuY29tbW9uIHRvIG9ic2VydmUgYSBzaG9ydCBidXJzdCBvZiBkdXBsaWNhdGVkCit0cmFmZmljIHdoZW4gdGhlIGJvbmRpbmcgZGV2aWNlIGlzIGZpcnN0IHVzZWQsIG9yIGFmdGVyIGl0IGhhcyBiZWVuCitpZGxlIGZvciBzb21lIHBlcmlvZCBvZiB0aW1lLiAgVGhpcyBpcyBtb3N0IGVhc2lseSBvYnNlcnZlZCBieSBpc3N1aW5nCithICJwaW5nIiB0byBzb21lIG90aGVyIGhvc3Qgb24gdGhlIG5ldHdvcmssIGFuZCBub3RpY2luZyB0aGF0IHRoZQorb3V0cHV0IGZyb20gcGluZyBmbGFncyBkdXBsaWNhdGVzICh0eXBpY2FsbHkgb25lIHBlciBzbGF2ZSkuCisKKwlGb3IgZXhhbXBsZSwgb24gYSBib25kIGluIGFjdGl2ZS1iYWNrdXAgbW9kZSB3aXRoIGZpdmUgc2xhdmVzCithbGwgY29ubmVjdGVkIHRvIG9uZSBzd2l0Y2gsIHRoZSBvdXRwdXQgbWF5IGFwcGVhciBhcyBmb2xsb3dzOgorCisjIHBpbmcgLW4gMTAuMC40LjIKK1BJTkcgMTAuMC40LjIgKDEwLjAuNC4yKSBmcm9tIDEwLjAuMy4xMCA6IDU2KDg0KSBieXRlcyBvZiBkYXRhLgorNjQgYnl0ZXMgZnJvbSAxMC4wLjQuMjogaWNtcF9zZXE9MSB0dGw9NjQgdGltZT0xMy43IG1zCis2NCBieXRlcyBmcm9tIDEwLjAuNC4yOiBpY21wX3NlcT0xIHR0bD02NCB0aW1lPTEzLjggbXMgKERVUCEpCis2NCBieXRlcyBmcm9tIDEwLjAuNC4yOiBpY21wX3NlcT0xIHR0bD02NCB0aW1lPTEzLjggbXMgKERVUCEpCis2NCBieXRlcyBmcm9tIDEwLjAuNC4yOiBpY21wX3NlcT0xIHR0bD02NCB0aW1lPTEzLjggbXMgKERVUCEpCis2NCBieXRlcyBmcm9tIDEwLjAuNC4yOiBpY21wX3NlcT0xIHR0bD02NCB0aW1lPTEzLjggbXMgKERVUCEpCis2NCBieXRlcyBmcm9tIDEwLjAuNC4yOiBpY21wX3NlcT0yIHR0bD02NCB0aW1lPTAuMjE2IG1zCis2NCBieXRlcyBmcm9tIDEwLjAuNC4yOiBpY21wX3NlcT0zIHR0bD02NCB0aW1lPTAuMjY3IG1zCis2NCBieXRlcyBmcm9tIDEwLjAuNC4yOiBpY21wX3NlcT00IHR0bD02NCB0aW1lPTAuMjIyIG1zCisKKwlUaGlzIGlzIG5vdCBkdWUgdG8gYW4gZXJyb3IgaW4gdGhlIGJvbmRpbmcgZHJpdmVyLCByYXRoZXIsIGl0CitpcyBhIHNpZGUgZWZmZWN0IG9mIGhvdyBtYW55IHN3aXRjaGVzIHVwZGF0ZSB0aGVpciBNQUMgZm9yd2FyZGluZwordGFibGVzLiAgSW5pdGlhbGx5LCB0aGUgc3dpdGNoIGRvZXMgbm90IGFzc29jaWF0ZSB0aGUgTUFDIGFkZHJlc3MgaW4KK3RoZSBwYWNrZXQgd2l0aCBhIHBhcnRpY3VsYXIgc3dpdGNoIHBvcnQsIGFuZCBzbyBpdCBtYXkgc2VuZCB0aGUKK3RyYWZmaWMgdG8gYWxsIHBvcnRzIHVudGlsIGl0cyBNQUMgZm9yd2FyZGluZyB0YWJsZSBpcyB1cGRhdGVkLiAgU2luY2UKK3RoZSBpbnRlcmZhY2VzIGF0dGFjaGVkIHRvIHRoZSBib25kIG1heSBvY2N1cHkgbXVsdGlwbGUgcG9ydHMgb24gYQorc2luZ2xlIHN3aXRjaCwgd2hlbiB0aGUgc3dpdGNoICh0ZW1wb3JhcmlseSkgZmxvb2RzIHRoZSB0cmFmZmljIHRvIGFsbAorcG9ydHMsIHRoZSBib25kIGRldmljZSByZWNlaXZlcyBtdWx0aXBsZSBjb3BpZXMgb2YgdGhlIHNhbWUgcGFja2V0Cisob25lIHBlciBzbGF2ZSBkZXZpY2UpLgorCisJVGhlIGR1cGxpY2F0ZWQgcGFja2V0IGJlaGF2aW9yIGlzIHN3aXRjaCBkZXBlbmRlbnQsIHNvbWUKK3N3aXRjaGVzIGV4aGliaXQgdGhpcywgYW5kIHNvbWUgZG8gbm90LiAgT24gc3dpdGNoZXMgdGhhdCBkaXNwbGF5IHRoaXMKK2JlaGF2aW9yLCBpdCBjYW4gYmUgaW5kdWNlZCBieSBjbGVhcmluZyB0aGUgTUFDIGZvcndhcmRpbmcgdGFibGUgKG9uCittb3N0IENpc2NvIHN3aXRjaGVzLCB0aGUgcHJpdmlsZWdlZCBjb21tYW5kICJjbGVhciBtYWMgYWRkcmVzcy10YWJsZQorZHluYW1pYyIgd2lsbCBhY2NvbXBsaXNoIHRoaXMpLgorCisxNC4gSGFyZHdhcmUgU3BlY2lmaWMgQ29uc2lkZXJhdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisJVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZm9yIGNvbmZpZ3VyaW5nCitib25kaW5nIG9uIHNwZWNpZmljIGhhcmR3YXJlIHBsYXRmb3Jtcywgb3IgZm9yIGludGVyZmFjaW5nIGJvbmRpbmcKK3dpdGggcGFydGljdWxhciBzd2l0Y2hlcyBvciBvdGhlciBkZXZpY2VzLgorCisxNC4xIElCTSBCbGFkZUNlbnRlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCVRoaXMgYXBwbGllcyB0byB0aGUgSlMyMCBhbmQgc2ltaWxhciBzeXN0ZW1zLgorCisJT24gdGhlIEpTMjAgYmxhZGVzLCB0aGUgYm9uZGluZyBkcml2ZXIgc3VwcG9ydHMgb25seQorYmFsYW5jZS1yciwgYWN0aXZlLWJhY2t1cCwgYmFsYW5jZS10bGIgYW5kIGJhbGFuY2UtYWxiIG1vZGVzLiAgVGhpcyBpcworbGFyZ2VseSBkdWUgdG8gdGhlIG5ldHdvcmsgdG9wb2xvZ3kgaW5zaWRlIHRoZSBCbGFkZUNlbnRlciwgZGV0YWlsZWQKK2JlbG93LgorCitKUzIwIG5ldHdvcmsgYWRhcHRlciBpbmZvcm1hdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCUFsbCBKUzIwcyBjb21lIHdpdGggdHdvIEJyb2FkY29tIEdpZ2FiaXQgRXRoZXJuZXQgcG9ydHMKK2ludGVncmF0ZWQgb24gdGhlIHBsYW5hciAodGhhdCdzICJtb3RoZXJib2FyZCIgaW4gSUJNLXNwZWFrKS4gIEluIHRoZQorQmxhZGVDZW50ZXIgY2hhc3NpcywgdGhlIGV0aDAgcG9ydCBvZiBhbGwgSlMyMCBibGFkZXMgaXMgaGFyZCB3aXJlZCB0bworSS9PIE1vZHVsZSAjMTsgc2ltaWxhcmx5LCBhbGwgZXRoMSBwb3J0cyBhcmUgd2lyZWQgdG8gSS9PIE1vZHVsZSAjMi4KK0FuIGFkZC1vbiBCcm9hZGNvbSBkYXVnaHRlciBjYXJkIGNhbiBiZSBpbnN0YWxsZWQgb24gYSBKUzIwIHRvIHByb3ZpZGUKK3R3byBtb3JlIEdpZ2FiaXQgRXRoZXJuZXQgcG9ydHMuICBUaGVzZSBwb3J0cywgZXRoMiBhbmQgZXRoMywgYXJlCit3aXJlZCB0byBJL08gTW9kdWxlcyAzIGFuZCA0LCByZXNwZWN0aXZlbHkuCisKKwlFYWNoIEkvTyBNb2R1bGUgbWF5IGNvbnRhaW4gZWl0aGVyIGEgc3dpdGNoIG9yIGEgcGFzc3Rocm91Z2gKK21vZHVsZSAod2hpY2ggYWxsb3dzIHBvcnRzIHRvIGJlIGRpcmVjdGx5IGNvbm5lY3RlZCB0byBhbiBleHRlcm5hbAorc3dpdGNoKS4gIFNvbWUgYm9uZGluZyBtb2RlcyByZXF1aXJlIGEgc3BlY2lmaWMgQmxhZGVDZW50ZXIgaW50ZXJuYWwKK25ldHdvcmsgdG9wb2xvZ3kgaW4gb3JkZXIgdG8gZnVuY3Rpb247IHRoZXNlIGFyZSBkZXRhaWxlZCBiZWxvdy4KKworCUFkZGl0aW9uYWwgQmxhZGVDZW50ZXItc3BlY2lmaWMgbmV0d29ya2luZyBpbmZvcm1hdGlvbiBjYW4gYmUKK2ZvdW5kIGluIHR3byBJQk0gUmVkYm9va3MgKHd3dy5pYm0uY29tL3JlZGJvb2tzKToKKworIklCTSBlU2VydmVyIEJsYWRlQ2VudGVyIE5ldHdvcmtpbmcgT3B0aW9ucyIKKyJJQk0gZVNlcnZlciBCbGFkZUNlbnRlciBMYXllciAyLTcgTmV0d29yayBTd2l0Y2hpbmciCisKK0JsYWRlQ2VudGVyIG5ldHdvcmtpbmcgY29uZmlndXJhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlCZWNhdXNlIGEgQmxhZGVDZW50ZXIgY2FuIGJlIGNvbmZpZ3VyZWQgaW4gYSB2ZXJ5IGxhcmdlIG51bWJlcgorb2Ygd2F5cywgdGhpcyBkaXNjdXNzaW9uIHdpbGwgYmUgY29uZmluZWQgdG8gZGVzY3JpYmluZyBiYXNpYworY29uZmlndXJhdGlvbnMuCisKKwlOb3JtYWxseSwgRXRoZXJuZXQgU3dpdGNoIE1vZHVsZXMgKEVTTXMpIGFyZSB1c2VkIGluIEkvTworbW9kdWxlcyAxIGFuZCAyLiAgSW4gdGhpcyBjb25maWd1cmF0aW9uLCB0aGUgZXRoMCBhbmQgZXRoMSBwb3J0cyBvZiBhCitKUzIwIHdpbGwgYmUgY29ubmVjdGVkIHRvIGRpZmZlcmVudCBpbnRlcm5hbCBzd2l0Y2hlcyAoaW4gdGhlCityZXNwZWN0aXZlIEkvTyBtb2R1bGVzKS4KKworCUEgcGFzc3Rocm91Z2ggbW9kdWxlIChPUE0gb3IgQ1BNLCBvcHRpY2FsIG9yIGNvcHBlciwKK3Bhc3N0aHJvdWdoIG1vZHVsZSkgY29ubmVjdHMgdGhlIEkvTyBtb2R1bGUgZGlyZWN0bHkgdG8gYW4gZXh0ZXJuYWwKK3N3aXRjaC4gIEJ5IHVzaW5nIFBNcyBpbiBJL08gbW9kdWxlICMxIGFuZCAjMiwgdGhlIGV0aDAgYW5kIGV0aDEKK2ludGVyZmFjZXMgb2YgYSBKUzIwIGNhbiBiZSByZWRpcmVjdGVkIHRvIHRoZSBvdXRzaWRlIHdvcmxkIGFuZAorY29ubmVjdGVkIHRvIGEgY29tbW9uIGV4dGVybmFsIHN3aXRjaC4KKworCURlcGVuZGluZyB1cG9uIHRoZSBtaXggb2YgRVNNcyBhbmQgUE1zLCB0aGUgbmV0d29yayB3aWxsCithcHBlYXIgdG8gYm9uZGluZyBhcyBlaXRoZXIgYSBzaW5nbGUgc3dpdGNoIHRvcG9sb2d5IChhbGwgUE1zKSBvciBhcyBhCittdWx0aXBsZSBzd2l0Y2ggdG9wb2xvZ3kgKG9uZSBvciBtb3JlIEVTTXMsIHplcm8gb3IgbW9yZSBQTXMpLiAgSXQgaXMKK2Fsc28gcG9zc2libGUgdG8gY29ubmVjdCBFU01zIHRvZ2V0aGVyLCByZXN1bHRpbmcgaW4gYSBjb25maWd1cmF0aW9uCittdWNoIGxpa2UgdGhlIGV4YW1wbGUgaW4gIkhpZ2ggQXZhaWxhYmlsaXR5IGluIGEgTXVsdGlwbGUgU3dpdGNoCitUb3BvbG9neSwiIGFib3ZlLgorCitSZXF1aXJlbWVudHMgZm9yIHNwZWNpZmljIG1vZGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlUaGUgYmFsYW5jZS1yciBtb2RlIHJlcXVpcmVzIHRoZSB1c2Ugb2YgcGFzc3Rocm91Z2ggbW9kdWxlcworZm9yIGRldmljZXMgaW4gdGhlIGJvbmQsIGFsbCBjb25uZWN0ZWQgdG8gYW4gY29tbW9uIGV4dGVybmFsIHN3aXRjaC4KK1RoYXQgc3dpdGNoIG11c3QgYmUgY29uZmlndXJlZCBmb3IgImV0aGVyY2hhbm5lbCIgb3IgInRydW5raW5nIiBvbiB0aGUKK2FwcHJvcHJpYXRlIHBvcnRzLCBhcyBpcyB1c3VhbCBmb3IgYmFsYW5jZS1yci4KKworCVRoZSBiYWxhbmNlLWFsYiBhbmQgYmFsYW5jZS10bGIgbW9kZXMgd2lsbCBmdW5jdGlvbiB3aXRoCitlaXRoZXIgc3dpdGNoIG1vZHVsZXMgb3IgcGFzc3Rocm91Z2ggbW9kdWxlcyAob3IgYSBtaXgpLiAgVGhlIG9ubHkKK3NwZWNpZmljIHJlcXVpcmVtZW50IGZvciB0aGVzZSBtb2RlcyBpcyB0aGF0IGFsbCBuZXR3b3JrIGludGVyZmFjZXMKK211c3QgYmUgYWJsZSB0byByZWFjaCBhbGwgZGVzdGluYXRpb25zIGZvciB0cmFmZmljIHNlbnQgb3ZlciB0aGUKK2JvbmRpbmcgZGV2aWNlIChpLmUuLCB0aGUgbmV0d29yayBtdXN0IGNvbnZlcmdlIGF0IHNvbWUgcG9pbnQgb3V0c2lkZQordGhlIEJsYWRlQ2VudGVyKS4KKworCVRoZSBhY3RpdmUtYmFja3VwIG1vZGUgaGFzIG5vIGFkZGl0aW9uYWwgcmVxdWlyZW1lbnRzLgorCitMaW5rIG1vbml0b3JpbmcgaXNzdWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlXaGVuIGFuIEV0aGVybmV0IFN3aXRjaCBNb2R1bGUgaXMgaW4gcGxhY2UsIG9ubHkgdGhlIEFSUAorbW9uaXRvciB3aWxsIHJlbGlhYmx5IGRldGVjdCBsaW5rIGxvc3MgdG8gYW4gZXh0ZXJuYWwgc3dpdGNoLiAgVGhpcyBpcworbm90aGluZyB1bnVzdWFsLCBidXQgZXhhbWluYXRpb24gb2YgdGhlIEJsYWRlQ2VudGVyIGNhYmluZXQgd291bGQKK3N1Z2dlc3QgdGhhdCB0aGUgImV4dGVybmFsIiBuZXR3b3JrIHBvcnRzIGFyZSB0aGUgZXRoZXJuZXQgcG9ydHMgZm9yCit0aGUgc3lzdGVtLCB3aGVuIGl0IGZhY3QgdGhlcmUgaXMgYSBzd2l0Y2ggYmV0d2VlbiB0aGVzZSAiZXh0ZXJuYWwiCitwb3J0cyBhbmQgdGhlIGRldmljZXMgb24gdGhlIEpTMjAgc3lzdGVtIGl0c2VsZi4gIFRoZSBNSUkgbW9uaXRvciBpcworb25seSBhYmxlIHRvIGRldGVjdCBsaW5rIGZhaWx1cmVzIGJldHdlZW4gdGhlIEVTTSBhbmQgdGhlIEpTMjAgc3lzdGVtLgorCisJV2hlbiBhIHBhc3N0aHJvdWdoIG1vZHVsZSBpcyBpbiBwbGFjZSwgdGhlIE1JSSBtb25pdG9yIGRvZXMKK2RldGVjdCBmYWlsdXJlcyB0byB0aGUgImV4dGVybmFsIiBwb3J0LCB3aGljaCBpcyB0aGVuIGRpcmVjdGx5Citjb25uZWN0ZWQgdG8gdGhlIEpTMjAgc3lzdGVtLgorCitPdGhlciBjb25jZXJucworLS0tLS0tLS0tLS0tLS0KKworCVRoZSBTZXJpYWwgT3ZlciBMQU4gKFNvTCkgbGluayBpcyBlc3RhYmxpc2hlZCBvdmVyIHRoZSBwcmltYXJ5CitldGhlcm5ldCAoZXRoMCkgb25seSwgdGhlcmVmb3JlLCBhbnkgbG9zcyBvZiBsaW5rIHRvIGV0aDAgd2lsbCByZXN1bHQKK2luIGxvc2luZyB5b3VyIFNvTCBjb25uZWN0aW9uLiAgSXQgd2lsbCBub3QgZmFpbCBvdmVyIHdpdGggb3RoZXIKK25ldHdvcmsgdHJhZmZpYywgYXMgdGhlIFNvTCBzeXN0ZW0gaXMgYmV5b25kIHRoZSBjb250cm9sIG9mIHRoZQorYm9uZGluZyBkcml2ZXIuCisKKwlJdCBtYXkgYmUgZGVzaXJhYmxlIHRvIGRpc2FibGUgc3Bhbm5pbmcgdHJlZSBvbiB0aGUgc3dpdGNoCisoZWl0aGVyIHRoZSBpbnRlcm5hbCBFdGhlcm5ldCBTd2l0Y2ggTW9kdWxlLCBvciBhbiBleHRlcm5hbCBzd2l0Y2gpIHRvCithdm9pZCBmYWlsLW92ZXIgZGVsYXkgaXNzdWVzIHdoZW4gdXNpbmcgYm9uZGluZy4KKworCQorMTUuIEZyZXF1ZW50bHkgQXNrZWQgUXVlc3Rpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworMS4gIElzIGl0IFNNUCBzYWZlPworCisJWWVzLiBUaGUgb2xkIDIuMC54eCBjaGFubmVsIGJvbmRpbmcgcGF0Y2ggd2FzIG5vdCBTTVAgc2FmZS4KK1RoZSBuZXcgZHJpdmVyIHdhcyBkZXNpZ25lZCB0byBiZSBTTVAgc2FmZSBmcm9tIHRoZSBzdGFydC4KKworMi4gIFdoYXQgdHlwZSBvZiBjYXJkcyB3aWxsIHdvcmsgd2l0aCBpdD8KKworCUFueSBFdGhlcm5ldCB0eXBlIGNhcmRzICh5b3UgY2FuIGV2ZW4gbWl4IGNhcmRzIC0gYSBJbnRlbAorRXRoZXJFeHByZXNzIFBSTy8xMDAgYW5kIGEgM2NvbSAzYzkwNWIsIGZvciBleGFtcGxlKS4gIEZvciBtb3N0IG1vZGVzLAorZGV2aWNlcyBuZWVkIG5vdCBiZSBvZiB0aGUgc2FtZSBzcGVlZC4KKworCVN0YXJ0aW5nIHdpdGggdmVyc2lvbiAzLjIuMSwgYm9uZGluZyBhbHNvIHN1cHBvcnRzIEluZmluaWJhbmQKK3NsYXZlcyBpbiBhY3RpdmUtYmFja3VwIG1vZGUuCisKKzMuICBIb3cgbWFueSBib25kaW5nIGRldmljZXMgY2FuIEkgaGF2ZT8KKworCVRoZXJlIGlzIG5vIGxpbWl0LgorCis0LiAgSG93IG1hbnkgc2xhdmVzIGNhbiBhIGJvbmRpbmcgZGV2aWNlIGhhdmU/CisKKwlUaGlzIGlzIGxpbWl0ZWQgb25seSBieSB0aGUgbnVtYmVyIG9mIG5ldHdvcmsgaW50ZXJmYWNlcyBMaW51eAorc3VwcG9ydHMgYW5kL29yIHRoZSBudW1iZXIgb2YgbmV0d29yayBjYXJkcyB5b3UgY2FuIHBsYWNlIGluIHlvdXIKK3N5c3RlbS4KKworNS4gIFdoYXQgaGFwcGVucyB3aGVuIGEgc2xhdmUgbGluayBkaWVzPworCisJSWYgbGluayBtb25pdG9yaW5nIGlzIGVuYWJsZWQsIHRoZW4gdGhlIGZhaWxpbmcgZGV2aWNlIHdpbGwgYmUKK2Rpc2FibGVkLiAgVGhlIGFjdGl2ZS1iYWNrdXAgbW9kZSB3aWxsIGZhaWwgb3ZlciB0byBhIGJhY2t1cCBsaW5rLCBhbmQKK290aGVyIG1vZGVzIHdpbGwgaWdub3JlIHRoZSBmYWlsZWQgbGluay4gIFRoZSBsaW5rIHdpbGwgY29udGludWUgdG8gYmUKK21vbml0b3JlZCwgYW5kIHNob3VsZCBpdCByZWNvdmVyLCBpdCB3aWxsIHJlam9pbiB0aGUgYm9uZCAoaW4gd2hhdGV2ZXIKK21hbm5lciBpcyBhcHByb3ByaWF0ZSBmb3IgdGhlIG1vZGUpLiBTZWUgdGhlIHNlY3Rpb25zIG9uIEhpZ2gKK0F2YWlsYWJpbGl0eSBhbmQgdGhlIGRvY3VtZW50YXRpb24gZm9yIGVhY2ggbW9kZSBmb3IgYWRkaXRpb25hbAoraW5mb3JtYXRpb24uCisJCisJTGluayBtb25pdG9yaW5nIGNhbiBiZSBlbmFibGVkIHZpYSBlaXRoZXIgdGhlIG1paW1vbiBvcgorYXJwX2ludGVydmFsIHBhcmFtZXRlcnMgKGRlc2NyaWJlZCBpbiB0aGUgbW9kdWxlIHBhcmFtZXRlcnMgc2VjdGlvbiwKK2Fib3ZlKS4gIEluIGdlbmVyYWwsIG1paW1vbiBtb25pdG9ycyB0aGUgY2FycmllciBzdGF0ZSBhcyBzZW5zZWQgYnkKK3RoZSB1bmRlcmx5aW5nIG5ldHdvcmsgZGV2aWNlLCBhbmQgdGhlIGFycCBtb25pdG9yIChhcnBfaW50ZXJ2YWwpCittb25pdG9ycyBjb25uZWN0aXZpdHkgdG8gYW5vdGhlciBob3N0IG9uIHRoZSBsb2NhbCBuZXR3b3JrLgorCisJSWYgbm8gbGluayBtb25pdG9yaW5nIGlzIGNvbmZpZ3VyZWQsIHRoZSBib25kaW5nIGRyaXZlciB3aWxsCitiZSB1bmFibGUgdG8gZGV0ZWN0IGxpbmsgZmFpbHVyZXMsIGFuZCB3aWxsIGFzc3VtZSB0aGF0IGFsbCBsaW5rcyBhcmUKK2Fsd2F5cyBhdmFpbGFibGUuICBUaGlzIHdpbGwgbGlrZWx5IHJlc3VsdCBpbiBsb3N0IHBhY2tldHMsIGFuZCBhCityZXN1bHRpbmcgZGVncmFkYXRpb24gb2YgcGVyZm9ybWFuY2UuICBUaGUgcHJlY2lzZSBwZXJmb3JtYW5jZSBsb3NzCitkZXBlbmRzIHVwb24gdGhlIGJvbmRpbmcgbW9kZSBhbmQgbmV0d29yayBjb25maWd1cmF0aW9uLgorCis2LiAgQ2FuIGJvbmRpbmcgYmUgdXNlZCBmb3IgSGlnaCBBdmFpbGFiaWxpdHk/CisKKwlZZXMuICBTZWUgdGhlIHNlY3Rpb24gb24gSGlnaCBBdmFpbGFiaWxpdHkgZm9yIGRldGFpbHMuCisKKzcuICBXaGljaCBzd2l0Y2hlcy9zeXN0ZW1zIGRvZXMgaXQgd29yayB3aXRoPworCisJVGhlIGZ1bGwgYW5zd2VyIHRvIHRoaXMgZGVwZW5kcyB1cG9uIHRoZSBkZXNpcmVkIG1vZGUuCisKKwlJbiB0aGUgYmFzaWMgYmFsYW5jZSBtb2RlcyAoYmFsYW5jZS1yciBhbmQgYmFsYW5jZS14b3IpLCBpdAord29ya3Mgd2l0aCBhbnkgc3lzdGVtIHRoYXQgc3VwcG9ydHMgZXRoZXJjaGFubmVsIChhbHNvIGNhbGxlZAordHJ1bmtpbmcpLiAgTW9zdCBtYW5hZ2VkIHN3aXRjaGVzIGN1cnJlbnRseSBhdmFpbGFibGUgaGF2ZSBzdWNoCitzdXBwb3J0LCBhbmQgbWFueSB1bm1hbmFnZWQgc3dpdGNoZXMgYXMgd2VsbC4KKworCVRoZSBhZHZhbmNlZCBiYWxhbmNlIG1vZGVzIChiYWxhbmNlLXRsYiBhbmQgYmFsYW5jZS1hbGIpIGRvCitub3QgaGF2ZSBzcGVjaWFsIHN3aXRjaCByZXF1aXJlbWVudHMsIGJ1dCBkbyBuZWVkIGRldmljZSBkcml2ZXJzIHRoYXQKK3N1cHBvcnQgc3BlY2lmaWMgZmVhdHVyZXMgKGRlc2NyaWJlZCBpbiB0aGUgYXBwcm9wcmlhdGUgc2VjdGlvbiB1bmRlcgorbW9kdWxlIHBhcmFtZXRlcnMsIGFib3ZlKS4KKworCUluIDgwMi4zYWQgbW9kZSwgaXQgd29ya3Mgd2l0aCBzeXN0ZW1zIHRoYXQgc3VwcG9ydCBJRUVFCis4MDIuM2FkIER5bmFtaWMgTGluayBBZ2dyZWdhdGlvbi4gIE1vc3QgbWFuYWdlZCBhbmQgbWFueSB1bm1hbmFnZWQKK3N3aXRjaGVzIGN1cnJlbnRseSBhdmFpbGFibGUgc3VwcG9ydCA4MDIuM2FkLgorCisgICAgICAgIFRoZSBhY3RpdmUtYmFja3VwIG1vZGUgc2hvdWxkIHdvcmsgd2l0aCBhbnkgTGF5ZXItSUkgc3dpdGNoLgorCis4LiAgV2hlcmUgZG9lcyBhIGJvbmRpbmcgZGV2aWNlIGdldCBpdHMgTUFDIGFkZHJlc3MgZnJvbT8KKworCVdoZW4gdXNpbmcgc2xhdmUgZGV2aWNlcyB0aGF0IGhhdmUgZml4ZWQgTUFDIGFkZHJlc3Nlcywgb3Igd2hlbgordGhlIGZhaWxfb3Zlcl9tYWMgb3B0aW9uIGlzIGVuYWJsZWQsIHRoZSBib25kaW5nIGRldmljZSdzIE1BQyBhZGRyZXNzIGlzCit0aGUgTUFDIGFkZHJlc3Mgb2YgdGhlIGFjdGl2ZSBzbGF2ZS4KKworCUZvciBvdGhlciBjb25maWd1cmF0aW9ucywgaWYgbm90IGV4cGxpY2l0bHkgY29uZmlndXJlZCAod2l0aAoraWZjb25maWcgb3IgaXAgbGluayksIHRoZSBNQUMgYWRkcmVzcyBvZiB0aGUgYm9uZGluZyBkZXZpY2UgaXMgdGFrZW4gZnJvbQoraXRzIGZpcnN0IHNsYXZlIGRldmljZS4gIFRoaXMgTUFDIGFkZHJlc3MgaXMgdGhlbiBwYXNzZWQgdG8gYWxsIGZvbGxvd2luZworc2xhdmVzIGFuZCByZW1haW5zIHBlcnNpc3RlbnQgKGV2ZW4gaWYgdGhlIGZpcnN0IHNsYXZlIGlzIHJlbW92ZWQpIHVudGlsCit0aGUgYm9uZGluZyBkZXZpY2UgaXMgYnJvdWdodCBkb3duIG9yIHJlY29uZmlndXJlZC4KKworCUlmIHlvdSB3aXNoIHRvIGNoYW5nZSB0aGUgTUFDIGFkZHJlc3MsIHlvdSBjYW4gc2V0IGl0IHdpdGgKK2lmY29uZmlnIG9yIGlwIGxpbms6CisKKyMgaWZjb25maWcgYm9uZDAgaHcgZXRoZXIgMDA6MTE6MjI6MzM6NDQ6NTUKKworIyBpcCBsaW5rIHNldCBib25kMCBhZGRyZXNzIDY2Ojc3Ojg4Ojk5OmFhOmJiCisKKwlUaGUgTUFDIGFkZHJlc3MgY2FuIGJlIGFsc28gY2hhbmdlZCBieSBicmluZ2luZyBkb3duL3VwIHRoZQorZGV2aWNlIGFuZCB0aGVuIGNoYW5naW5nIGl0cyBzbGF2ZXMgKG9yIHRoZWlyIG9yZGVyKToKKworIyBpZmNvbmZpZyBib25kMCBkb3duIDsgbW9kcHJvYmUgLXIgYm9uZGluZworIyBpZmNvbmZpZyBib25kMCAuLi4uIHVwCisjIGlmZW5zbGF2ZSBib25kMCBldGguLi4KKworCVRoaXMgbWV0aG9kIHdpbGwgYXV0b21hdGljYWxseSB0YWtlIHRoZSBhZGRyZXNzIGZyb20gdGhlIG5leHQKK3NsYXZlIHRoYXQgaXMgYWRkZWQuCisKKwlUbyByZXN0b3JlIHlvdXIgc2xhdmVzJyBNQUMgYWRkcmVzc2VzLCB5b3UgbmVlZCB0byBkZXRhY2ggdGhlbQorZnJvbSB0aGUgYm9uZCAoYGlmZW5zbGF2ZSAtZCBib25kMCBldGgwJykuIFRoZSBib25kaW5nIGRyaXZlciB3aWxsCit0aGVuIHJlc3RvcmUgdGhlIE1BQyBhZGRyZXNzZXMgdGhhdCB0aGUgc2xhdmVzIGhhZCBiZWZvcmUgdGhleSB3ZXJlCitlbnNsYXZlZC4KKworMTYuIFJlc291cmNlcyBhbmQgTGlua3MKKz09PT09PT09PT09PT09PT09PT09PT09CisKKwlUaGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIGJvbmRpbmcgZHJpdmVyIGNhbiBiZSBmb3VuZCBpbiB0aGUgbGF0ZXN0Cit2ZXJzaW9uIG9mIHRoZSBsaW51eCBrZXJuZWwsIGZvdW5kIG9uIGh0dHA6Ly9rZXJuZWwub3JnCisKKwlUaGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBkb2N1bWVudCBjYW4gYmUgZm91bmQgaW4gdGhlIGxhdGVzdCBrZXJuZWwKK3NvdXJjZSAobmFtZWQgRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2JvbmRpbmcudHh0KS4KKworCURpc2N1c3Npb25zIHJlZ2FyZGluZyB0aGUgdXNhZ2Ugb2YgdGhlIGJvbmRpbmcgZHJpdmVyIHRha2UgcGxhY2Ugb24gdGhlCitib25kaW5nLWRldmVsIG1haWxpbmcgbGlzdCwgaG9zdGVkIGF0IHNvdXJjZWZvcmdlLm5ldC4gSWYgeW91IGhhdmUgcXVlc3Rpb25zIG9yCitwcm9ibGVtcywgcG9zdCB0aGVtIHRvIHRoZSBsaXN0LiAgVGhlIGxpc3QgYWRkcmVzcyBpczoKKworYm9uZGluZy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKKworCVRoZSBhZG1pbmlzdHJhdGl2ZSBpbnRlcmZhY2UgKHRvIHN1YnNjcmliZSBvciB1bnN1YnNjcmliZSkgY2FuCitiZSBmb3VuZCBhdDoKKworaHR0cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vYm9uZGluZy1kZXZlbAorCisJRGlzY3Vzc2lvbnMgcmVnYXJkaW5nIHRoZSBkZXZlbG9wbWVudCBvZiB0aGUgYm9uZGluZyBkcml2ZXIgdGFrZSBwbGFjZQorb24gdGhlIG1haW4gTGludXggbmV0d29yayBtYWlsaW5nIGxpc3QsIGhvc3RlZCBhdCB2Z2VyLmtlcm5lbC5vcmcuIFRoZSBsaXN0CithZGRyZXNzIGlzOgorCituZXRkZXZAdmdlci5rZXJuZWwub3JnCisKKwlUaGUgYWRtaW5pc3RyYXRpdmUgaW50ZXJmYWNlICh0byBzdWJzY3JpYmUgb3IgdW5zdWJzY3JpYmUpIGNhbgorYmUgZm91bmQgYXQ6CisKK2h0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvdmdlci1saXN0cy5odG1sI25ldGRldgorCitEb25hbGQgQmVja2VyJ3MgRXRoZXJuZXQgRHJpdmVycyBhbmQgZGlhZyBwcm9ncmFtcyBtYXkgYmUgZm91bmQgYXQgOgorIC0gaHR0cDovL3dlYi5hcmNoaXZlLm9yZy93ZWIvKi9odHRwOi8vd3d3LnNjeWxkLmNvbS9uZXR3b3JrLyAKKworWW91IHdpbGwgYWxzbyBmaW5kIGEgbG90IG9mIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBFdGhlcm5ldCwgTldheSwgTUlJLAorZXRjLiBhdCB3d3cuc2N5bGQuY29tLgorCistLSBFTkQgLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9icmlkZ2UudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2JyaWRnZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI3Y2I2MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9icmlkZ2UudHh0CkBAIC0wLDAgKzEsMTUgQEAKK0luIG9yZGVyIHRvIHVzZSB0aGUgRXRoZXJuZXQgYnJpZGdpbmcgZnVuY3Rpb25hbGl0eSwgeW91J2xsIG5lZWQgdGhlCit1c2Vyc3BhY2UgdG9vbHMuCisKK0RvY3VtZW50YXRpb24gZm9yIExpbnV4IGJyaWRnaW5nIGlzIG9uOgorICAgaHR0cDovL3d3dy5saW51eGZvdW5kYXRpb24ub3JnL2NvbGxhYm9yYXRlL3dvcmtncm91cHMvbmV0d29ya2luZy9icmlkZ2UKKworVGhlIGJyaWRnZS11dGlsaXRpZXMgYXJlIG1haW50YWluZWQgYXQ6CisgICBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvc2hlbW1pbmdlci9icmlkZ2UtdXRpbHMuZ2l0CisKK0FkZGl0aW9uYWxseSwgdGhlIGlwcm91dGUyIHV0aWxpdGllcyBjYW4gYmUgdXNlZCB0byBjb25maWd1cmUKK2JyaWRnZSBkZXZpY2VzLgorCitJZiB5b3Ugc3RpbGwgaGF2ZSBxdWVzdGlvbnMsIGRvbid0IGhlc2l0YXRlIHRvIHBvc3QgdG8gdGhlIG1haWxpbmcgbGlzdCAKKyhtb3JlIGluZm8gaHR0cHM6Ly9saXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2JyaWRnZSkuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jYWlmL0xpbnV4LUNBSUYudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2NhaWYvTGludXgtQ0FJRi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFhNGJkMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jYWlmL0xpbnV4LUNBSUYudHh0CkBAIC0wLDAgKzEsMTc1IEBACitMaW51eCBDQUlGCis9PT09PT09PT09PQorY29weXJpZ2h0IChDKSBTVC1Fcmljc3NvbiBBQiAyMDEwCitBdXRob3I6IFNqdXIgQnJlbmRlbGFuZC8gc2p1ci5icmFuZGVsYW5kQHN0ZXJpY3Nzb24uY29tCitMaWNlbnNlIHRlcm1zOiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSB2ZXJzaW9uIDIKKworCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLQorQ0FJRiBpcyBhIE1VWCBwcm90b2NvbCB1c2VkIGJ5IFNULUVyaWNzc29uIGNlbGx1bGFyIG1vZGVtcyBmb3IKK2NvbW11bmljYXRpb24gYmV0d2VlbiBNb2RlbSBhbmQgaG9zdC4gVGhlIGhvc3QgcHJvY2Vzc2VzIGNhbiBvcGVuIHZpcnR1YWwgQVQKK2NoYW5uZWxzLCBpbml0aWF0ZSBHUFJTIERhdGEgY29ubmVjdGlvbnMsIFZpZGVvIGNoYW5uZWxzIGFuZCBVdGlsaXR5IENoYW5uZWxzLgorVGhlIFV0aWxpdHkgQ2hhbm5lbHMgYXJlIGdlbmVyYWwgcHVycG9zZSBwaXBlcyBiZXR3ZWVuIG1vZGVtIGFuZCBob3N0LgorCitTVC1Fcmljc3NvbiBtb2RlbXMgc3VwcG9ydCBhIG51bWJlciBvZiB0cmFuc3BvcnRzIGJldHdlZW4gbW9kZW0KK2FuZCBob3N0LiBDdXJyZW50bHksIFVBUlQgYW5kIExvb3BiYWNrIGFyZSBhdmFpbGFibGUgZm9yIExpbnV4LgorCisKK0FyY2hpdGVjdHVyZToKKy0tLS0tLS0tLS0tLQorVGhlIGltcGxlbWVudGF0aW9uIG9mIENBSUYgaXMgZGl2aWRlZCBpbnRvOgorKiBDQUlGIFNvY2tldCBMYXllciBhbmQgR1BSUyBJUCBJbnRlcmZhY2UuCisqIENBSUYgQ29yZSBQcm90b2NvbCBJbXBsZW1lbnRhdGlvbgorKiBDQUlGIExpbmsgTGF5ZXIsIGltcGxlbWVudGVkIGFzIE5FVCBkZXZpY2VzLgorCisKKyAgUlROTAorICAgIQorICAgIQkgICAgICArLS0tLS0tKwkgKy0tLS0tLSsKKyAgICEJICAgICArLS0tLS0tKyEJKy0tLS0tLSshCisgICAhCSAgICAgIQlJUCAgISEJIVNvY2tldCEhCisgICArLS0tLS0tLT4gIWludGVyZiErCSEgQVBJICAhKwk8LSBDQUlGIENsaWVudCBBUElzCisgICAhCSAgICAgKy0tLS0tLSsJKy0tLS0tLSEKKyAgICEJCSEJICAgICEKKyAgICEJCSstLS0tLS0tLS0tLSsKKyAgICEJCSAgICAgICEKKyAgICEJCSAgICstLS0tLS0rCQk8LSBDQUlGIENvcmUgUHJvdG9jb2wKKyAgICEJCSAgICEgQ0FJRiAhCisgICAhCQkgICAhIENvcmUgIQorICAgIQkJICAgKy0tLS0tLSsKKyAgICEJICAgKy0tLS0tLS0tLS0hLS0tLS0tLS0tKworICAgIQkgICAhCSAgICAgICEJCSEKKyAgICEJKy0tLS0tLSsgICArLS0tLS0rICAgKy0tLS0tLSsKKyAgICstLT4gISBIU0kgICEgICAhIFRUWSAhICAgISBVU0IgICEJPC0gTGluayBMYXllciAoTmV0IERldmljZXMpCisJKy0tLS0tLSsgICArLS0tLS0rICAgKy0tLS0tLSsKKworCisKK0kgTSBQIEwgRSBNIEUgTiBUIEEgVCBJIE8gTgorPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworQ0FJRiBDb3JlIFByb3RvY29sIExheWVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitDQUlGIENvcmUgbGF5ZXIgaW1wbGVtZW50cyB0aGUgQ0FJRiBwcm90b2NvbCBhcyBkZWZpbmVkIGJ5IFNULUVyaWNzc29uLgorSXQgaW1wbGVtZW50cyB0aGUgQ0FJRiBwcm90b2NvbCBzdGFjayBpbiBhIGxheWVyZWQgYXBwcm9hY2gsIHdoZXJlCitlYWNoIGxheWVyIGRlc2NyaWJlZCBpbiB0aGUgc3BlY2lmaWNhdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIHNlcGFyYXRlIGxheWVyLgorVGhlIGFyY2hpdGVjdHVyZSBpcyBpbnNwaXJlZCBieSB0aGUgZGVzaWduIHBhdHRlcm5zICJQcm90b2NvbCBMYXllciIgYW5kCisiUHJvdG9jb2wgUGFja2V0Ii4KKworPT0gQ0FJRiBzdHJ1Y3R1cmUgPT0KK1RoZSBDb3JlIENBSUYgaW1wbGVtZW50YXRpb24gY29udGFpbnM6CisgICAgICAtCVNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBDQUlGLgorICAgICAgLQlMYXllcmVkIGFyY2hpdGVjdHVyZSAoYSBsYSBTdHJlYW1zKSwgZWFjaCBsYXllciBpbiB0aGUgQ0FJRgorCXNwZWNpZmljYXRpb24gaXMgaW1wbGVtZW50ZWQgaW4gYSBzZXBhcmF0ZSBjLWZpbGUuCisgICAgICAtCUNsaWVudHMgbXVzdCBjYWxsIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb24gdG8gYWRkIFBIWSBsYXllci4KKyAgICAgIC0JQ2xpZW50cyBtdXN0IGltcGxlbWVudCBDQUlGIGxheWVyIHRvIGNvbnN1bWUvcHJvZHVjZQorCUNBSUYgcGF5bG9hZCB3aXRoIHJlY2VpdmUgYW5kIHRyYW5zbWl0IGZ1bmN0aW9ucy4KKyAgICAgIC0JQ2xpZW50cyBtdXN0IGNhbGwgY29uZmlndXJhdGlvbiBmdW5jdGlvbiB0byBhZGQgYW5kIGNvbm5lY3QgdGhlCisJQ2xpZW50IGxheWVyLgorICAgICAgLSBXaGVuIHJlY2VpdmluZyAvIHRyYW5zbWl0dGluZyBDQUlGIFBhY2tldHMgKGNmcGt0KSwgb3duZXJzaGlwIGlzIHBhc3NlZAorCXRvIHRoZSBjYWxsZWQgZnVuY3Rpb24gKGV4Y2VwdCBmb3IgZnJhbWluZyBsYXllcnMnIHJlY2VpdmUgZnVuY3Rpb24pCisKK0xheWVyZWQgQXJjaGl0ZWN0dXJlCistLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIENBSUYgcHJvdG9jb2wgY2FuIGJlIGRpdmlkZWQgaW50byB0d28gcGFydHM6IFN1cHBvcnQgZnVuY3Rpb25zIGFuZCBQcm90b2NvbAorSW1wbGVtZW50YXRpb24uIFRoZSBzdXBwb3J0IGZ1bmN0aW9ucyBpbmNsdWRlOgorCisgICAgICAtIENGUEtUIENBSUYgUGFja2V0LiBJbXBsZW1lbnRhdGlvbiBvZiBDQUlGIFByb3RvY29sIFBhY2tldC4gVGhlCisJQ0FJRiBQYWNrZXQgaGFzIGZ1bmN0aW9ucyBmb3IgY3JlYXRpbmcsIGRlc3Ryb3lpbmcgYW5kIGFkZGluZyBjb250ZW50CisJYW5kIGZvciBhZGRpbmcvZXh0cmFjdGluZyBoZWFkZXIgYW5kIHRyYWlsZXJzIHRvIHByb3RvY29sIHBhY2tldHMuCisKK1RoZSBDQUlGIFByb3RvY29sIGltcGxlbWVudGF0aW9uIGNvbnRhaW5zOgorCisgICAgICAtIENGQ05GRyBDQUlGIENvbmZpZ3VyYXRpb24gbGF5ZXIuIENvbmZpZ3VyZXMgdGhlIENBSUYgUHJvdG9jb2wKKwlTdGFjayBhbmQgcHJvdmlkZXMgYSBDbGllbnQgaW50ZXJmYWNlIGZvciBhZGRpbmcgTGluay1MYXllciBhbmQKKwlEcml2ZXIgaW50ZXJmYWNlcyBvbiB0b3Agb2YgdGhlIENBSUYgU3RhY2suCisKKyAgICAgIC0gQ0ZDVFJMIENBSUYgQ29udHJvbCBsYXllci4gRW5jb2RlcyBhbmQgRGVjb2RlcyBjb250cm9sIG1lc3NhZ2VzCisJc3VjaCBhcyBlbnVtZXJhdGlvbiBhbmQgY2hhbm5lbCBzZXR1cC4gQWxzbyBtYXRjaGVzIHJlcXVlc3QgYW5kCisJcmVzcG9uc2UgbWVzc2FnZXMuCisKKyAgICAgIC0gQ0ZTRVJWTCBHZW5lcmFsIENBSUYgU2VydmljZSBMYXllciBmdW5jdGlvbmFsaXR5OyBoYW5kbGVzIGZsb3cKKwljb250cm9sIGFuZCByZW1vdGUgc2h1dGRvd24gcmVxdWVzdHMuCisKKyAgICAgIC0gQ0ZWRUkgQ0FJRiBWRUkgbGF5ZXIuIEhhbmRsZXMgQ0FJRiBBVCBDaGFubmVscyBvbiBWRUkgKFZpcnR1YWwKKwlFeHRlcm5hbCBJbnRlcmZhY2UpLiBUaGlzIGxheWVyIGVuY29kZXMvZGVjb2RlcyBWRUkgZnJhbWVzLgorCisgICAgICAtIENGREdNTCBDQUlGIERhdGFncmFtIGxheWVyLiBIYW5kbGVzIENBSUYgRGF0YWdyYW0gbGF5ZXIgKElQCisJdHJhZmZpYyksIGVuY29kZXMvZGVjb2RlcyBEYXRhZ3JhbSBmcmFtZXMuCisKKyAgICAgIC0gQ0ZNVVggQ0FJRiBNdXggbGF5ZXIuIEhhbmRsZXMgbXVsdGlwbGV4aW5nIGJldHdlZW4gbXVsdGlwbGUKKwlwaHlzaWNhbCBiZWFyZXJzIGFuZCBtdWx0aXBsZSBjaGFubmVscyBzdWNoIGFzIFZFSSwgRGF0YWdyYW0sIGV0Yy4KKwlUaGUgTVVYIGtlZXBzIHRyYWNrIG9mIHRoZSBleGlzdGluZyBDQUlGIENoYW5uZWxzIGFuZAorCVBoeXNpY2FsIEluc3RhbmNlcyBhbmQgc2VsZWN0cyB0aGUgYXBwcm9wcmlhdGUgaW5zdGFuY2UgYmFzZWQKKwlvbiBDaGFubmVsLUlkIGFuZCBQaHlzaWNhbC1JRC4KKworICAgICAgLSBDRkZSTUwgQ0FJRiBGcmFtaW5nIGxheWVyLiBIYW5kbGVzIEZyYW1pbmcgaS5lLiBGcmFtZSBsZW5ndGgKKwlhbmQgZnJhbWUgY2hlY2tzdW0uCisKKyAgICAgIC0gQ0ZTRVJMIENBSUYgU2VyaWFsIGxheWVyLiBIYW5kbGVzIGNvbmNhdGVuYXRpb24vc3BsaXQgb2YgZnJhbWVzCisJaW50byBDQUlGIEZyYW1lcyB3aXRoIGNvcnJlY3QgbGVuZ3RoLgorCisKKworCQkgICAgKy0tLS0tLS0tLSsKKwkJICAgIHwgQ29uZmlnICB8CisJCSAgICB8IENGQ05GRyAgfAorCQkgICAgKy0tLS0tLS0tLSsKKwkJCSAhCisgICAgKy0tLS0tLS0tLSsJICAgICstLS0tLS0tLS0rCSAgICArLS0tLS0tLS0tKworICAgIHwJQVQgICAgfAkgICAgfCBDb250cm9sIHwJICAgIHwgRGF0YWdyYW18CisgICAgfCBDRlZFSUwgIHwJICAgIHwgQ0ZDVFJMICB8CSAgICB8IENGREdNTCAgfAorICAgICstLS0tLS0tLS0rCSAgICArLS0tLS0tLS0tKwkgICAgKy0tLS0tLS0tLSsKKwkgICBcX19fX19fX19fX19fXyFfX19fX19fX19fX19fXy8KKwkJCSAhCisJCSAgICArLS0tLS0tLS0tKworCQkgICAgfAlNVVggICB8CisJCSAgICB8CSAgICAgIHwKKwkJICAgICstLS0tLS0tLS0rCisJCSAgICBfX19fXyFfX19fXworCQkgICAvCSAgICAgICBcCisJICAgICstLS0tLS0tLS0rCSAgICArLS0tLS0tLS0tKworCSAgICB8IENGRlJNTCAgfAkgICAgfCBDRkZSTUwgIHwKKwkgICAgfCBGcmFtaW5nIHwJICAgIHwgRnJhbWluZyB8CisJICAgICstLS0tLS0tLS0rCSAgICArLS0tLS0tLS0tKworCQkgIQkJIQorCSAgICArLS0tLS0tLS0tKwkgICAgKy0tLS0tLS0tLSsKKwkgICAgfAkgICAgICB8CSAgICB8IFNlcmlhbCAgfAorCSAgICB8CSAgICAgIHwJICAgIHwgQ0ZTRVJMICB8CisJICAgICstLS0tLS0tLS0rCSAgICArLS0tLS0tLS0tKworCisKK0luIHRoaXMgbGF5ZXJlZCBhcHByb2FjaCB0aGUgZm9sbG93aW5nICJydWxlcyIgYXBwbHkuCisgICAgICAtIEFsbCBsYXllcnMgZW1iZWQgdGhlIHNhbWUgc3RydWN0dXJlICJzdHJ1Y3QgY2ZsYXllciIKKyAgICAgIC0gQSBsYXllciBkb2VzIG5vdCBkZXBlbmQgb24gYW55IG90aGVyIGxheWVyJ3MgcHJpdmF0ZSBkYXRhLgorICAgICAgLSBMYXllcnMgYXJlIHN0YWNrZWQgYnkgc2V0dGluZyB0aGUgcG9pbnRlcnMKKwkJICBsYXllci0+dXAgLCBsYXllci0+ZG4KKyAgICAgIC0JSW4gb3JkZXIgdG8gc2VuZCBkYXRhIHVwd2FyZHMsIGVhY2ggbGF5ZXIgc2hvdWxkIGRvCisJCSBsYXllci0+dXAtPnJlY2VpdmUobGF5ZXItPnVwLCBwYWNrZXQpOworICAgICAgLSBJbiBvcmRlciB0byBzZW5kIGRhdGEgZG93bndhcmRzLCBlYWNoIGxheWVyIHNob3VsZCBkbworCQkgbGF5ZXItPmRuLT50cmFuc21pdChsYXllci0+ZG4sIHBhY2tldCk7CisKKworQ0FJRiBTb2NrZXQgYW5kIElQIGludGVyZmFjZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBJUCBpbnRlcmZhY2UgYW5kIENBSUYgc29ja2V0IEFQSSBhcmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mIHRoZQorQ0FJRiBDb3JlIHByb3RvY29sLiBUaGUgSVAgSW50ZXJmYWNlIGFuZCBDQUlGIHNvY2tldCBoYXZlIGFuIGluc3RhbmNlIG9mCisnc3RydWN0IGNmbGF5ZXInLCBqdXN0IGxpa2UgdGhlIENBSUYgQ29yZSBwcm90b2NvbCBzdGFjay4KK05ldCBkZXZpY2UgYW5kIFNvY2tldCBpbXBsZW1lbnQgdGhlICdyZWNlaXZlKCknIGZ1bmN0aW9uIGRlZmluZWQgYnkKKydzdHJ1Y3QgY2ZsYXllcicsIGp1c3QgbGlrZSB0aGUgcmVzdCBvZiB0aGUgQ0FJRiBzdGFjay4gSW4gdGhpcyB3YXksIHRyYW5zbWl0IGFuZAorcmVjZWl2ZSBvZiBwYWNrZXRzIGlzIGhhbmRsZWQgYXMgYnkgdGhlIHJlc3Qgb2YgdGhlIGxheWVyczogdGhlICdkbi0+dHJhbnNtaXQoKScKK2Z1bmN0aW9uIGlzIGNhbGxlZCBpbiBvcmRlciB0byB0cmFuc21pdCBkYXRhLgorCitDb25maWd1cmF0aW9uIG9mIExpbmsgTGF5ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIExpbmsgTGF5ZXIgaXMgaW1wbGVtZW50ZWQgYXMgTGludXggbmV0d29yayBkZXZpY2VzIChzdHJ1Y3QgbmV0X2RldmljZSkuCitQYXlsb2FkIGhhbmRsaW5nIGFuZCByZWdpc3RyYXRpb24gaXMgZG9uZSB1c2luZyBzdGFuZGFyZCBMaW51eCBtZWNoYW5pc21zLgorCitUaGUgQ0FJRiBQcm90b2NvbCByZWxpZXMgb24gYSBsb3NzLWxlc3MgbGluayBsYXllciB3aXRob3V0IGltcGxlbWVudGluZworcmV0cmFuc21pc3Npb24uIFRoaXMgaW1wbGllcyB0aGF0IHBhY2tldCBkcm9wcyBtdXN0IG5vdCBoYXBwZW4uCitUaGVyZWZvcmUgYSBmbG93LWNvbnRyb2wgbWVjaGFuaXNtIGlzIGltcGxlbWVudGVkIHdoZXJlIHRoZSBwaHlzaWNhbAoraW50ZXJmYWNlIGNhbiBpbml0aWF0ZSBmbG93IHN0b3AgZm9yIGFsbCBDQUlGIENoYW5uZWxzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2NhaWYvUkVBRE1FIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2NhaWYvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1N2NjZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FpZi9SRUFETUUKQEAgLTAsMCArMSwxMDkgQEAKK0NvcHlyaWdodCAoQykgU1QtRXJpY3Nzb24gQUIgMjAxMAorQXV0aG9yOiBTanVyIEJyZW5kZWxhbmQvIHNqdXIuYnJhbmRlbGFuZEBzdGVyaWNzc29uLmNvbQorTGljZW5zZSB0ZXJtczogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgdmVyc2lvbiAyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworPT09IFN0YXJ0ID09PQorSWYgeW91IGhhdmUgY29tcGlsZWQgQ0FJRiBmb3IgbW9kdWxlcyBkbzoKKworJG1vZHByb2JlIGNyY19jY2l0dAorJG1vZHByb2JlIGNhaWYKKyRtb2Rwcm9iZSBjYWlmX3NvY2tldAorJG1vZHByb2JlIGNobmxfbmV0CisKKworPT09IFByZXBhcmluZyB0aGUgc2V0dXAgd2l0aCBhIFNURSBtb2RlbSA9PT0KKworSWYgeW91IGFyZSB3b3JraW5nIG9uIGludGVncmF0aW9uIG9mIENBSUYgeW91IHNob3VsZCBtYWtlIHN1cmUKK3RoYXQgdGhlIGtlcm5lbCBpcyBidWlsdCB3aXRoIG1vZHVsZSBzdXBwb3J0LgorCitUaGVyZSBhcmUgc29tZSB0aGluZ3MgdGhhdCBuZWVkIHRvIGJlIHR3ZWFrZWQgdG8gZ2V0IHRoZSBob3N0IFRUWSBjb3JyZWN0bHkKK3NldCB1cCB0byB0YWxrIHRvIHRoZSBtb2RlbS4KK1NpbmNlIHRoZSBDQUlGIHN0YWNrIGlzIHJ1bm5pbmcgaW4gdGhlIGtlcm5lbCBhbmQgd2Ugd2FudCB0byB1c2UgdGhlIGV4aXN0aW5nCitUVFksIHdlIGFyZSBpbnN0YWxsaW5nIG91ciBwaHlzaWNhbCBzZXJpYWwgZHJpdmVyIGFzIGEgbGluZSBkaXNjaXBsaW5lIGFib3ZlCit0aGUgVFRZIGRldmljZS4KKworVG8gYWNoaWV2ZSB0aGlzIHdlIG5lZWQgdG8gaW5zdGFsbCB0aGUgTl9DQUlGIGxkaXNjIGZyb20gdXNlciBzcGFjZS4KK1RoZSBiZW5lZml0IGlzIHRoYXQgd2UgY2FuIGhvb2sgdXAgdG8gYW55IFRUWS4KKworVGhlIHVzZSBvZiBTdGFydC1vZi1mcmFtZS1leHRlbnNpb24gKFNUWCkgbXVzdCBhbHNvIGJlIHNldCBhcworbW9kdWxlIHBhcmFtZXRlciAic2VyX3VzZV9zdHgiLgorCitOb3JtYWxseSBGcmFtZSBDaGVja3N1bSBpcyBhbHdheXMgdXNlZCBvbiBVQVJULCBidXQgdGhpcyBpcyBhbHNvIHByb3ZpZGVkIGFzIGEKK21vZHVsZSBwYXJhbWV0ZXIgInNlcl91c2VfZmNzIi4KKworJCBtb2Rwcm9iZSBjYWlmX3NlcmlhbCBzZXJfdHR5bmFtZT0vZGV2L3R0eVMwIHNlcl91c2Vfc3R4PXllcworJCBpZmNvbmZpZyBjYWlmX3R0eVMwIHVwCisKK1BMRUFTRSBOT1RFOiAJVGhlcmUgaXMgYSBsaW1pdGF0aW9uIGluIEFuZHJvaWQgc2hlbGwuCisJCUl0IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQgdG8gaW5zbW9kL21vZHByb2JlIQorCis9PT0gVHJvdWJsZSBzaG9vdGluZyA9PT0KKworVGhlcmUgYXJlIGRlYnVnZnMgcGFyYW1ldGVycyBwcm92aWRlZCBmb3Igc2VyaWFsIGNvbW11bmljYXRpb24uCisvc3lzL2tlcm5lbC9kZWJ1Zy9jYWlmX3NlcmlhbC88dHR5LW5hbWU+LworCisqIHNlcl9zdGF0ZTogICBQcmludHMgdGhlIGJpdC1tYXNrIHN0YXR1cyB3aGVyZQorICAtIDB4MDIgbWVhbnMgU0VORElORywgdGhpcyBpcyBhIHRyYW5zaWVudCBzdGF0ZS4KKyAgLSAweDEwIG1lYW5zIEZMT1dfT0ZGX1NFTlQsIGkuZS4gdGhlIHByZXZpb3VzIGZyYW1lIGhhcyBub3QgYmVlbiBzZW50CisJYW5kIGlzIGJsb2NraW5nIGZ1cnRoZXIgc2VuZCBvcGVyYXRpb24uIEZsb3cgT0ZGIGhhcyBiZWVuIHByb3BhZ2F0ZWQKKwl0byBhbGwgQ0FJRiBDaGFubmVscyB1c2luZyB0aGlzIFRUWS4KKworKiB0dHlfc3RhdHVzOiBQcmludHMgdGhlIGJpdC1tYXNrIHR0eSBzdGF0dXMgaW5mb3JtYXRpb24KKyAgLSAweDAxIC0gdHR5LT53YXJuZWQgaXMgb24uCisgIC0gMHgwMiAtIHR0eS0+bG93X2xhdGVuY3kgaXMgb24uCisgIC0gMHgwNCAtIHR0eS0+cGFja2VkIGlzIG9uLgorICAtIDB4MDggLSB0dHktPmZsb3dfc3RvcHBlZCBpcyBvbi4KKyAgLSAweDEwIC0gdHR5LT5od19zdG9wcGVkIGlzIG9uLgorICAtIDB4MjAgLSB0dHktPnN0b3BwZWQgaXMgb24uCisKKyogbGFzdF90eF9tc2c6IEJpbmFyeSBibG9iIFByaW50cyB0aGUgbGFzdCB0cmFuc21pdHRlZCBmcmFtZS4KKwlUaGlzIGNhbiBiZSBwcmludGVkIHdpdGgKKwkkb2QgLS1mb3JtYXQ9eDEgL3N5cy9rZXJuZWwvZGVidWcvY2FpZl9zZXJpYWwvPHR0eT4vbGFzdF9yeF9tc2cuCisJVGhlIGZpcnN0IHR3byB0eCBtZXNzYWdlcyBzZW50IGxvb2sgbGlrZSB0aGlzLiBOb3RlOiBUaGUgaW5pdGlhbAorCWJ5dGUgMDIgaXMgc3RhcnQgb2YgZnJhbWUgZXh0ZW5zaW9uIChTVFgpIHVzZWQgZm9yIHJlLXN5bmNpbmcKKwl1cG9uIGVycm9ycy4KKworICAtIEVudW1lcmF0aW9uOgorICAgICAgICAwMDAwMDAwICAwMiAwNSAwMCAwMCAwMyAwMSBkMiAwMgorICAgICAgICAgICAgICAgICB8ICB8ICAgICB8ICB8ICB8ICB8CisgICAgICAgICAgICAgICAgIFNUWCgxKSAgIHwgIHwgIHwgIHwKKyAgICAgICAgICAgICAgICAgICAgTGVuZ3RoKDIpfCAgfCAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICBDb250cm9sIENoYW5uZWwoMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZDpFbnVtZXJhdGlvbigxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5rLUlEKDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja3N1bSgyKQorICAtIENoYW5uZWwgU2V0dXA6CisgICAgICAgIDAwMDAwMDAgIDAyIDA3IDAwIDAwIDAwIDIxIGExIDAwIDQ4IGRmCisgICAgICAgICAgICAgICAgIHwgIHwgICAgIHwgIHwgIHwgIHwgIHwgIHwKKyAgICAgICAgICAgICAgICAgU1RYKDEpICAgfCAgfCAgfCAgfCAgfCAgfAorICAgICAgICAgICAgICAgICAgICBMZW5ndGgoMil8ICB8ICB8ICB8ICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2wgQ2hhbm5lbCgxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kOkNoYW5uZWwgU2V0dXAoMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhbm5lbCBUeXBlKDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSBhbmQgTGluay1JRCgxKQorCQkJCSAgICAgIEVuZHBvaW50KDEpCisJCQkJCSAgQ2hlY2tzdW0oMikKKworKiBsYXN0X3J4X21zZzogUHJpbnRzIHRoZSBsYXN0IHRyYW5zbWl0dGVkIGZyYW1lLgorCVRoZSBSWCBtZXNzYWdlcyBmb3IgTGlua1NldHVwIGxvb2sgYWxtb3N0IGlkZW50aWNhbCBidXQgdGhleSBoYXZlIHRoZQorCWJpdCAweDIwIHNldCBpbiB0aGUgY29tbWFuZCBiaXQsIGFuZCBDaGFubmVsIFNldHVwIGhhcyBhZGRlZCBvbmUgYnl0ZQorCWJlZm9yZSBDaGVja3N1bSBjb250YWluaW5nIENoYW5uZWwgSUQuCisJTk9URTogU2V2ZXJhbCBDQUlGIE1lc3NhZ2VzIG1pZ2h0IGJlIGNvbmNhdGVuYXRlZC4gVGhlIG1heGltdW0gZGVidWcKKwlidWZmZXIgc2l6ZSBpcyAxMjggYnl0ZXMuCisKKz09IEVycm9yIFNjZW5hcmlvczoKKy0gbGFzdF90eF9tc2cgY29udGFpbnMgY2hhbm5lbCBzZXR1cCBtZXNzYWdlIGFuZCBsYXN0X3J4X21zZyBpcyBlbXB0eSAtPgorICBUaGUgaG9zdCBzZWVtcyB0byBiZSBhYmxlIHRvIHNlbmQgb3ZlciB0aGUgVUFSVCwgYXQgbGVhc3QgdGhlIENBSUYgbGRpc2MgZ2V0CisgIG5vdGlmaWVkIHRoYXQgc2VuZGluZyBpcyBjb21wbGV0ZWQuCisKKy0gbGFzdF90eF9tc2cgY29udGFpbnMgZW51bWVyYXRpb24gbWVzc2FnZSBhbmQgbGFzdF9yeF9tc2cgaXMgZW1wdHkgLT4KKyAgVGhlIGhvc3QgaXMgbm90IGFibGUgdG8gc2VuZCB0aGUgbWVzc2FnZSBmcm9tIFVBUlQsIHRoZSB0dHkgaGFzIG5vdCBiZWVuCisgIGFibGUgdG8gY29tcGxldGUgdGhlIHRyYW5zbWl0IG9wZXJhdGlvbi4KKworLSBpZiAvc3lzL2tlcm5lbC9kZWJ1Zy9jYWlmX3NlcmlhbC88dHR5Pi90dHlfc3RhdHVzIGlzIG5vbi16ZXJvIHRoZXJlCisgIG1pZ2h0IGJlIHByb2JsZW1zIHRyYW5zbWl0dGluZyBvdmVyIFVBUlQuCisgIEUuZy4gaG9zdCBhbmQgbW9kZW0gd2lyaW5nIGlzIG5vdCBjb3JyZWN0IHlvdSB3aWxsIHR5cGljYWxseSBzZWUKKyAgdHR5X3N0YXR1cyA9IDB4MTAgKGh3X3N0b3BwZWQpIGFuZCBzZXJfc3RhdGUgPSAweDEwIChGTE9XX09GRl9TRU5UKS4KKyAgWW91IHdpbGwgcHJvYmFibHkgc2VlIHRoZSBlbnVtZXJhdGlvbiBtZXNzYWdlIGluIGxhc3RfdHhfbWVzc2FnZQorICBhbmQgZW1wdHkgbGFzdF9yeF9tZXNzYWdlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2NhaWYvc3BpX3BvcnRpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2NhaWYvc3BpX3BvcnRpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllZmQwNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FpZi9zcGlfcG9ydGluZy50eHQKQEAgLTAsMCArMSwyMDggQEAKKy0gQ0FJRiBTUEkgcG9ydGluZyAtCisKKy0gQ0FJRiBTUEkgYmFzaWNzOgorCitSdW5uaW5nIENBSUYgb3ZlciBTUEkgbmVlZHMgc29tZSBleHRyYSBzZXR1cCwgb3dpbmcgdG8gdGhlIG5hdHVyZSBvZiBTUEkuCitUd28gZXh0cmEgR1BJT3MgaGF2ZSBiZWVuIGFkZGVkIGluIG9yZGVyIHRvIG5lZ290aWF0ZSB0aGUgdHJhbnNmZXJzCisgYmV0d2VlbiB0aGUgbWFzdGVyIGFuZCB0aGUgc2xhdmUuIFRoZSBtaW5pbXVtIHJlcXVpcmVtZW50IGZvciBydW5uaW5nCitDQUlGIG92ZXIgU1BJIGlzIGEgU1BJIHNsYXZlIGNoaXAgYW5kIHR3byBHUElPcyAobW9yZSBkZXRhaWxzIGJlbG93KS4KK1BsZWFzZSBub3RlIHRoYXQgcnVubmluZyBhcyBhIHNsYXZlIGltcGxpZXMgdGhhdCB5b3UgbmVlZCB0byBrZWVwIHVwCit3aXRoIHRoZSBtYXN0ZXIgY2xvY2suIEFuIG92ZXJydW4gb3IgdW5kZXJydW4gZXZlbnQgaXMgZmF0YWwuCisKKy0gQ0FJRiBTUEkgZnJhbWV3b3JrOgorCitUbyBtYWtlIHBvcnRpbmcgYXMgZWFzeSBhcyBwb3NzaWJsZSwgdGhlIENBSUYgU1BJIGhhcyBiZWVuIGRpdmlkZWQgaW4KK3R3byBwYXJ0cy4gVGhlIGZpcnN0IHBhcnQgKGNhbGxlZCB0aGUgaW50ZXJmYWNlIHBhcnQpIGRlYWxzIHdpdGggYWxsCitnZW5lcmljIGZ1bmN0aW9uYWxpdHkgc3VjaCBhcyBsZW5ndGggZnJhbWluZywgU1BJIGZyYW1lIG5lZ290aWF0aW9uCithbmQgU1BJIGZyYW1lIGRlbGl2ZXJ5IGFuZCB0cmFuc21pc3Npb24uIFRoZSBvdGhlciBwYXJ0IGlzIHRoZSBDQUlGCitTUEkgc2xhdmUgZGV2aWNlIHBhcnQsIHdoaWNoIGlzIHRoZSBtb2R1bGUgdGhhdCB5b3UgaGF2ZSB0byB3cml0ZSBpZgoreW91IHdhbnQgdG8gcnVuIFNQSSBDQUlGIG9uIGEgbmV3IGhhcmR3YXJlLiBUaGlzIHBhcnQgdGFrZXMgY2FyZSBvZgordGhlIHBoeXNpY2FsIGhhcmR3YXJlLCBib3RoIHdpdGggcmVnYXJkIHRvIFNQSSBhbmQgdG8gR1BJT3MuCisKKy0gSW1wbGVtZW50aW5nIGEgQ0FJRiBTUEkgZGV2aWNlOgorCisJLSBGdW5jdGlvbmFsaXR5IHByb3ZpZGVkIGJ5IHRoZSBDQUlGIFNQSSBzbGF2ZSBkZXZpY2U6CisKKwlJbiBvcmRlciB0byBpbXBsZW1lbnQgYSBTUEkgZGV2aWNlIHlvdSB3aWxsLCBhcyBhIG1pbmltdW0sCisJbmVlZCB0byBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZworCWZ1bmN0aW9uczoKKworCWludCAoKmluaXRfeGZlcikgKHN0cnVjdCBjZnNwaV94ZmVyICogeGZlciwgc3RydWN0IGNmc3BpX2RldiAqZGV2KToKKworCVRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBDQUlGIFNQSSBpbnRlcmZhY2UgdG8gZ2l2ZQorCXlvdSBhIGNoYW5jZSB0byBzZXQgdXAgeW91ciBoYXJkd2FyZSB0byBiZSByZWFkeSB0byByZWNlaXZlCisJYSBzdHJlYW0gb2YgZGF0YSBmcm9tIHRoZSBtYXN0ZXIuIFRoZSB4ZmVyIHN0cnVjdHVyZSBjb250YWlucworCWJvdGggcGh5c2ljYWwgYW5kIGxvZ2ljYWwgYWRkcmVzc2VzLCBhcyB3ZWxsIGFzIHRoZSB0b3RhbCBsZW5ndGgKKwlvZiB0aGUgdHJhbnNmZXIgaW4gYm90aCBkaXJlY3Rpb25zLlRoZSBkZXYgcGFyYW1ldGVyIGNhbiBiZSB1c2VkCisJdG8gbWFwIHRvIGRpZmZlcmVudCBDQUlGIFNQSSBzbGF2ZSBkZXZpY2VzLgorCisJdm9pZCAoKnNpZ194ZmVyKSAoYm9vbCB4ZmVyLCBzdHJ1Y3QgY2ZzcGlfZGV2ICpkZXYpOgorCisJVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIENBSUYgU1BJIGludGVyZmFjZSB3aGVuIHRoZSBvdXRwdXQKKwkoU1BJX0lOVCkgR1BJTyBuZWVkcyB0byBjaGFuZ2Ugc3RhdGUuIFRoZSBib29sZWFuIHZhbHVlIG9mIHRoZSB4ZmVyCisJdmFyaWFibGUgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIEdQSU8gc2hvdWxkIGJlIGFzc2VydGVkIChISUdIKSBvcgorCWRlYXNzZXJ0ZWQgKExPVykuIFRoZSBkZXYgcGFyYW1ldGVyIGNhbiBiZSB1c2VkIHRvIG1hcCB0byBkaWZmZXJlbnQgQ0FJRgorCVNQSSBzbGF2ZSBkZXZpY2VzLgorCisJLSBGdW5jdGlvbmFsaXR5IHByb3ZpZGVkIGJ5IHRoZSBDQUlGIFNQSSBpbnRlcmZhY2U6CisKKwl2b2lkICgqc3NfY2IpIChib29sIGFzc2VydCwgc3RydWN0IGNmc3BpX2lmYyAqaWZjKTsKKworCVRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBDQUlGIFNQSSBzbGF2ZSBkZXZpY2UgaW4gb3JkZXIgdG8KKwlzaWduYWwgYSBjaGFuZ2Ugb2Ygc3RhdGUgb2YgdGhlIGlucHV0IEdQSU8gKFNTKSB0byB0aGUgaW50ZXJmYWNlLgorCU9ubHkgYWN0aXZlIGVkZ2VzIGFyZSBtYW5kYXRvcnkgdG8gYmUgcmVwb3J0ZWQuCisJVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGZyb20gSVJRIGNvbnRleHQgKHJlY29tbWVuZGVkIGluIG9yZGVyCisJbm90IHRvIGludHJvZHVjZSBsYXRlbmN5KS4gVGhlIGlmYyBwYXJhbWV0ZXIgc2hvdWxkIGJlIHRoZSBwb2ludGVyCisJcmV0dXJuZWQgZnJvbSB0aGUgcGxhdGZvcm0gcHJvYmUgZnVuY3Rpb24gaW4gdGhlIFNQSSBkZXZpY2Ugc3RydWN0dXJlLgorCisJdm9pZCAoKnhmZXJfZG9uZV9jYikgKHN0cnVjdCBjZnNwaV9pZmMgKmlmYyk7CisKKwlUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgQ0FJRiBTUEkgc2xhdmUgZGV2aWNlIGluIG9yZGVyIHRvCisJcmVwb3J0IHRoYXQgYSB0cmFuc2ZlciBpcyBjb21wbGV0ZWQuIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUKKwljYWxsZWQgb25jZSBib3RoIHRoZSB0cmFuc21pc3Npb24gYW5kIHRoZSByZWNlcHRpb24gYXJlIGNvbXBsZXRlZC4KKwlUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgZnJvbSBJUlEgY29udGV4dCAocmVjb21tZW5kZWQgaW4gb3JkZXIKKwlub3QgdG8gaW50cm9kdWNlIGxhdGVuY3kpLiBUaGUgaWZjIHBhcmFtZXRlciBzaG91bGQgYmUgdGhlIHBvaW50ZXIKKwlyZXR1cm5lZCBmcm9tIHRoZSBwbGF0Zm9ybSBwcm9iZSBmdW5jdGlvbiBpbiB0aGUgU1BJIGRldmljZSBzdHJ1Y3R1cmUuCisKKwktIENvbm5lY3RpbmcgdGhlIGJpdHMgYW5kIHBpZWNlczoKKworCQktIEZpbGxpbmcgaW4gdGhlIFNQSSBzbGF2ZSBkZXZpY2Ugc3RydWN0dXJlOgorCisJCUNvbm5lY3QgdGhlIG5lY2Vzc2FyeSBjYWxsYmFjayBmdW5jdGlvbnMuCisJCUluZGljYXRlIGNsb2NrIHNwZWVkICh1c2VkIHRvIGNhbGN1bGF0ZSB0b2dnbGUgZGVsYXlzKS4KKwkJQ2hvc2UgYSBzdWl0YWJsZSBuYW1lIChoZWxwcyBkZWJ1Z2dpbmcgaWYgeW91IHVzZSBzZXZlcmFsIENBSUYKKwkJU1BJIHNsYXZlIGRldmljZXMpLgorCQlBc3NpZ24geW91ciBwcml2YXRlIGRhdGEgKGNhbiBiZSB1c2VkIHRvIG1hcCB0byB5b3VyIHN0cnVjdHVyZSkuCisKKwkJLSBGaWxsaW5nIGluIHRoZSBTUEkgc2xhdmUgcGxhdGZvcm0gZGV2aWNlIHN0cnVjdHVyZToKKwkJQWRkIG5hbWUgb2YgZHJpdmVyIHRvIGNvbm5lY3QgdG8gKCJjZnNwaV9zc3BpIikuCisJCUFzc2lnbiB0aGUgU1BJIHNsYXZlIGRldmljZSBzdHJ1Y3R1cmUgYXMgcGxhdGZvcm0gZGF0YS4KKworLSBQYWRkaW5nOgorCitJbiBvcmRlciB0byBvcHRpbWl6ZSB0aHJvdWdocHV0LCBhIG51bWJlciBvZiBTUEkgcGFkZGluZyBvcHRpb25zIGFyZSBwcm92aWRlZC4KK1BhZGRpbmcgY2FuIGJlIGVuYWJsZWQgaW5kZXBlbmRlbnRseSBmb3IgdXBsaW5rIGFuZCBkb3dubGluayB0cmFuc2ZlcnMuCitQYWRkaW5nIGNhbiBiZSBlbmFibGVkIGZvciB0aGUgaGVhZCwgdGhlIHRhaWwgYW5kIGZvciB0aGUgdG90YWwgZnJhbWUgc2l6ZS4KK1RoZSBwYWRkaW5nIG5lZWRzIHRvIGJlIGNvcnJlY3RseSBjb25maWd1cmVkIG9uIGJvdGggc2lkZXMgb2YgdGhlIGxpbmsuCitUaGUgcGFkZGluZyBjYW4gYmUgY2hhbmdlZCB2aWEgbW9kdWxlIHBhcmFtZXRlcnMgaW4gY2ZzcGlfc3NwaS5jIG9yIHZpYQordGhlIHN5c2ZzIGRpcmVjdG9yeSBvZiB0aGUgY2ZzcGlfc3NwaSBkcml2ZXIgKGJlZm9yZSBkZXZpY2UgcmVnaXN0cmF0aW9uKS4KKworLSBDQUlGIFNQSSBkZXZpY2UgdGVtcGxhdGU6CisKKy8qCisgKglDb3B5cmlnaHQgKEMpIFNULUVyaWNzc29uIEFCIDIwMTAKKyAqCUF1dGhvcjogRGFuaWVsIE1hcnRlbnNzb24gLyBEYW5pZWwuTWFydGVuc3NvbkBzdGVyaWNzc29uLmNvbQorICoJTGljZW5zZSB0ZXJtczogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCksIHZlcnNpb24gMi4KKyAqCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC93YWl0Lmg+CisjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KKyNpbmNsdWRlIDxuZXQvY2FpZi9jYWlmX3NwaS5oPgorCitNT0RVTEVfTElDRU5TRSgiR1BMIik7CisKK3N0cnVjdCBzc3BpX3N0cnVjdCB7CisJc3RydWN0IGNmc3BpX2RldiBzZGV2OworCXN0cnVjdCBjZnNwaV94ZmVyICp4ZmVyOworfTsKKworc3RhdGljIHN0cnVjdCBzc3BpX3N0cnVjdCBzbGF2ZTsKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIHNsYXZlX2RldmljZTsKKworc3RhdGljIGlycXJldHVybl90IHNzcGlfaXJxKGludCBpcnEsIHZvaWQgKmFyZykKK3sKKwkvKiBZb3Ugb25seSBuZWVkIHRvIHRyaWdnZXIgb24gYW4gZWRnZSB0byB0aGUgYWN0aXZlIHN0YXRlIG9mIHRoZQorCSAqIFNTIHNpZ25hbC4gT25jZSBhIGVkZ2UgaXMgZGV0ZWN0ZWQsIHRoZSBzc19jYigpIGZ1bmN0aW9uIHNob3VsZCBiZQorCSAqIGNhbGxlZCB3aXRoIHRoZSBwYXJhbWV0ZXIgYXNzZXJ0IHNldCB0byB0cnVlLiBJdCBpcyBPSworCSAqIChhbmQgZXZlbiBhZHZpc2VkKSB0byBjYWxsIHRoZSBzc19jYigpIGZ1bmN0aW9uIGluIElSUSBjb250ZXh0IGluCisJICogb3JkZXIgbm90IHRvIGFkZCBhbnkgZGVsYXkuICovCisKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKK3N0YXRpYyB2b2lkIHNzcGlfY29tcGxldGUodm9pZCAqY29udGV4dCkKK3sKKwkvKiBOb3JtYWxseSB0aGUgRE1BIG9yIHRoZSBTUEkgZnJhbWV3b3JrIHdpbGwgY2FsbCB5b3UgYmFjaworCSAqIGluIHNvbWV0aGluZyBzaW1pbGFyIHRvIHRoaXMuIFRoZSBvbmx5IHRoaW5nIHlvdSBuZWVkIHRvCisJICogZG8gaXMgdG8gY2FsbCB0aGUgeGZlcl9kb25lX2NiKCkgZnVuY3Rpb24sIHByb3ZpZGluZyB0aGUgcG9pbnRlcgorCSAqIHRvIHRoZSBDQUlGIFNQSSBpbnRlcmZhY2UuIEl0IGlzIE9LIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgorCSAqIGZyb20gSVJRIGNvbnRleHQuICovCit9CisKK3N0YXRpYyBpbnQgc3NwaV9pbml0X3hmZXIoc3RydWN0IGNmc3BpX3hmZXIgKnhmZXIsIHN0cnVjdCBjZnNwaV9kZXYgKmRldikKK3sKKwkvKiBTdG9yZSB0cmFuc2ZlciBpbmZvLiBGb3IgYSBub3JtYWwgaW1wbGVtZW50YXRpb24geW91IHNob3VsZAorCSAqIHNldCB1cCB5b3VyIERNQSBoZXJlIGFuZCBtYWtlIHN1cmUgdGhhdCB5b3UgYXJlIHJlYWR5IHRvCisJICogcmVjZWl2ZSB0aGUgZGF0YSBmcm9tIHRoZSBtYXN0ZXIgU1BJLiAqLworCisJc3RydWN0IHNzcGlfc3RydWN0ICpzc3BpID0gKHN0cnVjdCBzc3BpX3N0cnVjdCAqKWRldi0+cHJpdjsKKworCXNzcGktPnhmZXIgPSB4ZmVyOworCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgc3NwaV9zaWdfeGZlcihib29sIHhmZXIsIHN0cnVjdCBjZnNwaV9kZXYgKmRldikKK3sKKwkvKiBJZiB4ZmVyIGlzIHRydWUgdGhlbiB5b3Ugc2hvdWxkIGFzc2VydCB0aGUgU1BJX0lOVCB0byBpbmRpY2F0ZSB0bworCSAqIHRoZSBtYXN0ZXIgdGhhdCB5b3UgYXJlIHJlYWR5IHRvIHJlY2VpdmUgdGhlIGRhdGEgZnJvbSB0aGUgbWFzdGVyCisJICogU1BJLiBJZiB4ZmVyIGlzIGZhbHNlIHRoZW4geW91IHNob3VsZCBkZS1hc3NlcnQgU1BJX0lOVCB0byBpbmRpY2F0ZQorCSAqIHRoYXQgdGhlIHRyYW5zZmVyIGlzIGRvbmUuCisJICovCisKKwlzdHJ1Y3Qgc3NwaV9zdHJ1Y3QgKnNzcGkgPSAoc3RydWN0IHNzcGlfc3RydWN0ICopZGV2LT5wcml2OworfQorCitzdGF0aWMgdm9pZCBzc3BpX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KQoreworCS8qCisJICogSGVyZSB5b3Ugc2hvdWxkIHJlbGVhc2UgeW91ciBTUEkgZGV2aWNlIHJlc291cmNlcy4KKwkgKi8KK30KKworc3RhdGljIGludCBfX2luaXQgc3NwaV9pbml0KHZvaWQpCit7CisJLyogSGVyZSB5b3Ugc2hvdWxkIGluaXRpYWxpemUgeW91ciBTUEkgZGV2aWNlIGJ5IHByb3ZpZGluZyB0aGUKKwkgKiBuZWNlc3NhcnkgZnVuY3Rpb25zLCBjbG9jayBzcGVlZCwgbmFtZSBhbmQgcHJpdmF0ZSBkYXRhLiBPbmNlCisJICogZG9uZSwgeW91IGNhbiByZWdpc3RlciB5b3VyIGRldmljZSB3aXRoIHRoZQorCSAqIHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcigpIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuCisJICogd2l0aCB0aGUgQ0FJRiBTUEkgaW50ZXJmYWNlIGluaXRpYWxpemVkLiBUaGlzIGlzIHByb2JhYmx5IGFsc28KKwkgKiB0aGUgcGxhY2Ugd2hlcmUgeW91IHNob3VsZCBzZXQgdXAgeW91ciBHUElPcywgaW50ZXJydXB0cyBhbmQgU1BJCisJICogcmVzb3VyY2VzLiAqLworCisJaW50IHJlcyA9IDA7CisKKwkvKiBJbml0aWFsaXplIHNsYXZlIGRldmljZS4gKi8KKwlzbGF2ZS5zZGV2LmluaXRfeGZlciA9IHNzcGlfaW5pdF94ZmVyOworCXNsYXZlLnNkZXYuc2lnX3hmZXIgPSBzc3BpX3NpZ194ZmVyOworCXNsYXZlLnNkZXYuY2xrX21oeiA9IDEzOworCXNsYXZlLnNkZXYucHJpdiA9ICZzbGF2ZTsKKwlzbGF2ZS5zZGV2Lm5hbWUgPSAic3BpX3NzcGkiOworCXNsYXZlX2RldmljZS5kZXYucmVsZWFzZSA9IHNzcGlfcmVsZWFzZTsKKworCS8qIEluaXRpYWxpemUgcGxhdGZvcm0gZGV2aWNlLiAqLworCXNsYXZlX2RldmljZS5uYW1lID0gImNmc3BpX3NzcGkiOworCXNsYXZlX2RldmljZS5kZXYucGxhdGZvcm1fZGF0YSA9ICZzbGF2ZS5zZGV2OworCisJLyogUmVnaXN0ZXIgcGxhdGZvcm0gZGV2aWNlLiAqLworCXJlcyA9IHBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcigmc2xhdmVfZGV2aWNlKTsKKwlpZiAocmVzKSB7CisJCXByaW50ayhLRVJOX1dBUk5JTkcgInNzcGlfaW5pdDogZmFpbGVkIHRvIHJlZ2lzdGVyIGRldi5cbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlyZXR1cm4gcmVzOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgc3NwaV9leGl0KHZvaWQpCit7CisJcGxhdGZvcm1fZGV2aWNlX2RlbCgmc2xhdmVfZGV2aWNlKTsKK30KKworbW9kdWxlX2luaXQoc3NwaV9pbml0KTsKK21vZHVsZV9leGl0KHNzcGlfZXhpdCk7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FuLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jYW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1ZmQ4M2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FuLnR4dApAQCAtMCwwICsxLDEyNzYgQEAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworY2FuLnR4dAorCitSZWFkbWUgZmlsZSBmb3IgdGhlIENvbnRyb2xsZXIgQXJlYSBOZXR3b3JrIFByb3RvY29sIEZhbWlseSAoYWthIFNvY2tldENBTikKKworVGhpcyBmaWxlIGNvbnRhaW5zCisKKyAgMSBPdmVydmlldyAvIFdoYXQgaXMgU29ja2V0Q0FOCisKKyAgMiBNb3RpdmF0aW9uIC8gV2h5IHVzaW5nIHRoZSBzb2NrZXQgQVBJCisKKyAgMyBTb2NrZXRDQU4gY29uY2VwdAorICAgIDMuMSByZWNlaXZlIGxpc3RzCisgICAgMy4yIGxvY2FsIGxvb3BiYWNrIG9mIHNlbnQgZnJhbWVzCisgICAgMy4zIG5ldHdvcmsgcHJvYmxlbSBub3RpZmljYXRpb25zCisKKyAgNCBIb3cgdG8gdXNlIFNvY2tldENBTgorICAgIDQuMSBSQVcgcHJvdG9jb2wgc29ja2V0cyB3aXRoIGNhbl9maWx0ZXJzIChTT0NLX1JBVykKKyAgICAgIDQuMS4xIFJBVyBzb2NrZXQgb3B0aW9uIENBTl9SQVdfRklMVEVSCisgICAgICA0LjEuMiBSQVcgc29ja2V0IG9wdGlvbiBDQU5fUkFXX0VSUl9GSUxURVIKKyAgICAgIDQuMS4zIFJBVyBzb2NrZXQgb3B0aW9uIENBTl9SQVdfTE9PUEJBQ0sKKyAgICAgIDQuMS40IFJBVyBzb2NrZXQgb3B0aW9uIENBTl9SQVdfUkVDVl9PV05fTVNHUworICAgICAgNC4xLjUgUkFXIHNvY2tldCBvcHRpb24gQ0FOX1JBV19GRF9GUkFNRVMKKyAgICAgIDQuMS42IFJBVyBzb2NrZXQgb3B0aW9uIENBTl9SQVdfSk9JTl9GSUxURVJTCisgICAgICA0LjEuNyBSQVcgc29ja2V0IHJldHVybmVkIG1lc3NhZ2UgZmxhZ3MKKyAgICA0LjIgQnJvYWRjYXN0IE1hbmFnZXIgcHJvdG9jb2wgc29ja2V0cyAoU09DS19ER1JBTSkKKyAgICAgIDQuMi4xIEJyb2FkY2FzdCBNYW5hZ2VyIG9wZXJhdGlvbnMKKyAgICAgIDQuMi4yIEJyb2FkY2FzdCBNYW5hZ2VyIG1lc3NhZ2UgZmxhZ3MKKyAgICAgIDQuMi4zIEJyb2FkY2FzdCBNYW5hZ2VyIHRyYW5zbWlzc2lvbiB0aW1lcnMKKyAgICAgIDQuMi40IEJyb2FkY2FzdCBNYW5hZ2VyIG1lc3NhZ2Ugc2VxdWVuY2UgdHJhbnNtaXNzaW9uCisgICAgICA0LjIuNSBCcm9hZGNhc3QgTWFuYWdlciByZWNlaXZlIGZpbHRlciB0aW1lcnMKKyAgICAgIDQuMi42IEJyb2FkY2FzdCBNYW5hZ2VyIG11bHRpcGxleCBtZXNzYWdlIHJlY2VpdmUgZmlsdGVyCisgICAgNC4zIGNvbm5lY3RlZCB0cmFuc3BvcnQgcHJvdG9jb2xzIChTT0NLX1NFUVBBQ0tFVCkKKyAgICA0LjQgdW5jb25uZWN0ZWQgdHJhbnNwb3J0IHByb3RvY29scyAoU09DS19ER1JBTSkKKworICA1IFNvY2tldENBTiBjb3JlIG1vZHVsZQorICAgIDUuMSBjYW4ua28gbW9kdWxlIHBhcmFtcworICAgIDUuMiBwcm9jZnMgY29udGVudAorICAgIDUuMyB3cml0aW5nIG93biBDQU4gcHJvdG9jb2wgbW9kdWxlcworCisgIDYgQ0FOIG5ldHdvcmsgZHJpdmVycworICAgIDYuMSBnZW5lcmFsIHNldHRpbmdzCisgICAgNi4yIGxvY2FsIGxvb3BiYWNrIG9mIHNlbnQgZnJhbWVzCisgICAgNi4zIENBTiBjb250cm9sbGVyIGhhcmR3YXJlIGZpbHRlcnMKKyAgICA2LjQgVGhlIHZpcnR1YWwgQ0FOIGRyaXZlciAodmNhbikKKyAgICA2LjUgVGhlIENBTiBuZXR3b3JrIGRldmljZSBkcml2ZXIgaW50ZXJmYWNlCisgICAgICA2LjUuMSBOZXRsaW5rIGludGVyZmFjZSB0byBzZXQvZ2V0IGRldmljZXMgcHJvcGVydGllcworICAgICAgNi41LjIgU2V0dGluZyB0aGUgQ0FOIGJpdC10aW1pbmcKKyAgICAgIDYuNS4zIFN0YXJ0aW5nIGFuZCBzdG9wcGluZyB0aGUgQ0FOIG5ldHdvcmsgZGV2aWNlCisgICAgNi42IENBTiBGRCAoZmxleGlibGUgZGF0YSByYXRlKSBkcml2ZXIgc3VwcG9ydAorICAgIDYuNyBzdXBwb3J0ZWQgQ0FOIGhhcmR3YXJlCisKKyAgNyBTb2NrZXRDQU4gcmVzb3VyY2VzCisKKyAgOCBDcmVkaXRzCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworMS4gT3ZlcnZpZXcgLyBXaGF0IGlzIFNvY2tldENBTgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHNvY2tldGNhbiBwYWNrYWdlIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIENBTiBwcm90b2NvbHMKKyhDb250cm9sbGVyIEFyZWEgTmV0d29yaykgZm9yIExpbnV4LiAgQ0FOIGlzIGEgbmV0d29ya2luZyB0ZWNobm9sb2d5Cit3aGljaCBoYXMgd2lkZXNwcmVhZCB1c2UgaW4gYXV0b21hdGlvbiwgZW1iZWRkZWQgZGV2aWNlcywgYW5kCithdXRvbW90aXZlIGZpZWxkcy4gIFdoaWxlIHRoZXJlIGhhdmUgYmVlbiBvdGhlciBDQU4gaW1wbGVtZW50YXRpb25zCitmb3IgTGludXggYmFzZWQgb24gY2hhcmFjdGVyIGRldmljZXMsIFNvY2tldENBTiB1c2VzIHRoZSBCZXJrZWxleQorc29ja2V0IEFQSSwgdGhlIExpbnV4IG5ldHdvcmsgc3RhY2sgYW5kIGltcGxlbWVudHMgdGhlIENBTiBkZXZpY2UKK2RyaXZlcnMgYXMgbmV0d29yayBpbnRlcmZhY2VzLiAgVGhlIENBTiBzb2NrZXQgQVBJIGhhcyBiZWVuIGRlc2lnbmVkCithcyBzaW1pbGFyIGFzIHBvc3NpYmxlIHRvIHRoZSBUQ1AvSVAgcHJvdG9jb2xzIHRvIGFsbG93IHByb2dyYW1tZXJzLAorZmFtaWxpYXIgd2l0aCBuZXR3b3JrIHByb2dyYW1taW5nLCB0byBlYXNpbHkgbGVhcm4gaG93IHRvIHVzZSBDQU4KK3NvY2tldHMuCisKKzIuIE1vdGl2YXRpb24gLyBXaHkgdXNpbmcgdGhlIHNvY2tldCBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgaGF2ZSBiZWVuIENBTiBpbXBsZW1lbnRhdGlvbnMgZm9yIExpbnV4IGJlZm9yZSBTb2NrZXRDQU4gc28gdGhlCitxdWVzdGlvbiBhcmlzZXMsIHdoeSB3ZSBoYXZlIHN0YXJ0ZWQgYW5vdGhlciBwcm9qZWN0LiAgTW9zdCBleGlzdGluZworaW1wbGVtZW50YXRpb25zIGNvbWUgYXMgYSBkZXZpY2UgZHJpdmVyIGZvciBzb21lIENBTiBoYXJkd2FyZSwgdGhleQorYXJlIGJhc2VkIG9uIGNoYXJhY3RlciBkZXZpY2VzIGFuZCBwcm92aWRlIGNvbXBhcmF0aXZlbHkgbGl0dGxlCitmdW5jdGlvbmFsaXR5LiAgVXN1YWxseSwgdGhlcmUgaXMgb25seSBhIGhhcmR3YXJlLXNwZWNpZmljIGRldmljZQorZHJpdmVyIHdoaWNoIHByb3ZpZGVzIGEgY2hhcmFjdGVyIGRldmljZSBpbnRlcmZhY2UgdG8gc2VuZCBhbmQKK3JlY2VpdmUgcmF3IENBTiBmcmFtZXMsIGRpcmVjdGx5IHRvL2Zyb20gdGhlIGNvbnRyb2xsZXIgaGFyZHdhcmUuCitRdWV1ZWluZyBvZiBmcmFtZXMgYW5kIGhpZ2hlci1sZXZlbCB0cmFuc3BvcnQgcHJvdG9jb2xzIGxpa2UgSVNPLVRQCitoYXZlIHRvIGJlIGltcGxlbWVudGVkIGluIHVzZXIgc3BhY2UgYXBwbGljYXRpb25zLiAgQWxzbywgbW9zdAorY2hhcmFjdGVyLWRldmljZSBpbXBsZW1lbnRhdGlvbnMgc3VwcG9ydCBvbmx5IG9uZSBzaW5nbGUgcHJvY2VzcyB0bworb3BlbiB0aGUgZGV2aWNlIGF0IGEgdGltZSwgc2ltaWxhciB0byBhIHNlcmlhbCBpbnRlcmZhY2UuICBFeGNoYW5naW5nCit0aGUgQ0FOIGNvbnRyb2xsZXIgcmVxdWlyZXMgZW1wbG95bWVudCBvZiBhbm90aGVyIGRldmljZSBkcml2ZXIgYW5kCitvZnRlbiB0aGUgbmVlZCBmb3IgYWRhcHRpb24gb2YgbGFyZ2UgcGFydHMgb2YgdGhlIGFwcGxpY2F0aW9uIHRvIHRoZQorbmV3IGRyaXZlcidzIEFQSS4KKworU29ja2V0Q0FOIHdhcyBkZXNpZ25lZCB0byBvdmVyY29tZSBhbGwgb2YgdGhlc2UgbGltaXRhdGlvbnMuICBBIG5ldworcHJvdG9jb2wgZmFtaWx5IGhhcyBiZWVuIGltcGxlbWVudGVkIHdoaWNoIHByb3ZpZGVzIGEgc29ja2V0IGludGVyZmFjZQordG8gdXNlciBzcGFjZSBhcHBsaWNhdGlvbnMgYW5kIHdoaWNoIGJ1aWxkcyB1cG9uIHRoZSBMaW51eCBuZXR3b3JrCitsYXllciwgZW5hYmxpbmcgdXNlIGFsbCBvZiB0aGUgcHJvdmlkZWQgcXVldWVpbmcgZnVuY3Rpb25hbGl0eS4gIEEgZGV2aWNlCitkcml2ZXIgZm9yIENBTiBjb250cm9sbGVyIGhhcmR3YXJlIHJlZ2lzdGVycyBpdHNlbGYgd2l0aCB0aGUgTGludXgKK25ldHdvcmsgbGF5ZXIgYXMgYSBuZXR3b3JrIGRldmljZSwgc28gdGhhdCBDQU4gZnJhbWVzIGZyb20gdGhlCitjb250cm9sbGVyIGNhbiBiZSBwYXNzZWQgdXAgdG8gdGhlIG5ldHdvcmsgbGF5ZXIgYW5kIG9uIHRvIHRoZSBDQU4KK3Byb3RvY29sIGZhbWlseSBtb2R1bGUgYW5kIGFsc28gdmljZS12ZXJzYS4gIEFsc28sIHRoZSBwcm90b2NvbCBmYW1pbHkKK21vZHVsZSBwcm92aWRlcyBhbiBBUEkgZm9yIHRyYW5zcG9ydCBwcm90b2NvbCBtb2R1bGVzIHRvIHJlZ2lzdGVyLCBzbwordGhhdCBhbnkgbnVtYmVyIG9mIHRyYW5zcG9ydCBwcm90b2NvbHMgY2FuIGJlIGxvYWRlZCBvciB1bmxvYWRlZAorZHluYW1pY2FsbHkuICBJbiBmYWN0LCB0aGUgY2FuIGNvcmUgbW9kdWxlIGFsb25lIGRvZXMgbm90IHByb3ZpZGUgYW55Citwcm90b2NvbCBhbmQgY2Fubm90IGJlIHVzZWQgd2l0aG91dCBsb2FkaW5nIGF0IGxlYXN0IG9uZSBhZGRpdGlvbmFsCitwcm90b2NvbCBtb2R1bGUuICBNdWx0aXBsZSBzb2NrZXRzIGNhbiBiZSBvcGVuZWQgYXQgdGhlIHNhbWUgdGltZSwKK29uIGRpZmZlcmVudCBvciB0aGUgc2FtZSBwcm90b2NvbCBtb2R1bGUgYW5kIHRoZXkgY2FuIGxpc3Rlbi9zZW5kCitmcmFtZXMgb24gZGlmZmVyZW50IG9yIHRoZSBzYW1lIENBTiBJRHMuICBTZXZlcmFsIHNvY2tldHMgbGlzdGVuaW5nIG9uCit0aGUgc2FtZSBpbnRlcmZhY2UgZm9yIGZyYW1lcyB3aXRoIHRoZSBzYW1lIENBTiBJRCBhcmUgYWxsIHBhc3NlZCB0aGUKK3NhbWUgcmVjZWl2ZWQgbWF0Y2hpbmcgQ0FOIGZyYW1lcy4gIEFuIGFwcGxpY2F0aW9uIHdpc2hpbmcgdG8KK2NvbW11bmljYXRlIHVzaW5nIGEgc3BlY2lmaWMgdHJhbnNwb3J0IHByb3RvY29sLCBlLmcuIElTTy1UUCwganVzdAorc2VsZWN0cyB0aGF0IHByb3RvY29sIHdoZW4gb3BlbmluZyB0aGUgc29ja2V0LCBhbmQgdGhlbiBjYW4gcmVhZCBhbmQKK3dyaXRlIGFwcGxpY2F0aW9uIGRhdGEgYnl0ZSBzdHJlYW1zLCB3aXRob3V0IGhhdmluZyB0byBkZWFsIHdpdGgKK0NBTi1JRHMsIGZyYW1lcywgZXRjLgorCitTaW1pbGFyIGZ1bmN0aW9uYWxpdHkgdmlzaWJsZSBmcm9tIHVzZXItc3BhY2UgY291bGQgYmUgcHJvdmlkZWQgYnkgYQorY2hhcmFjdGVyIGRldmljZSwgdG9vLCBidXQgdGhpcyB3b3VsZCBsZWFkIHRvIGEgdGVjaG5pY2FsbHkgaW5lbGVnYW50Citzb2x1dGlvbiBmb3IgYSBjb3VwbGUgb2YgcmVhc29uczoKKworKiBJbnRyaWNhdGUgdXNhZ2UuICBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBwcm90b2NvbCBhcmd1bWVudCB0bworICBzb2NrZXQoMikgYW5kIHVzaW5nIGJpbmQoMikgdG8gc2VsZWN0IGEgQ0FOIGludGVyZmFjZSBhbmQgQ0FOIElELCBhbgorICBhcHBsaWNhdGlvbiB3b3VsZCBoYXZlIHRvIGRvIGFsbCB0aGVzZSBvcGVyYXRpb25zIHVzaW5nIGlvY3RsKDIpcy4KKworKiBDb2RlIGR1cGxpY2F0aW9uLiAgQSBjaGFyYWN0ZXIgZGV2aWNlIGNhbm5vdCBtYWtlIHVzZSBvZiB0aGUgTGludXgKKyAgbmV0d29yayBxdWV1ZWluZyBjb2RlLCBzbyBhbGwgdGhhdCBjb2RlIHdvdWxkIGhhdmUgdG8gYmUgZHVwbGljYXRlZAorICBmb3IgQ0FOIG5ldHdvcmtpbmcuCisKKyogQWJzdHJhY3Rpb24uICBJbiBtb3N0IGV4aXN0aW5nIGNoYXJhY3Rlci1kZXZpY2UgaW1wbGVtZW50YXRpb25zLCB0aGUKKyAgaGFyZHdhcmUtc3BlY2lmaWMgZGV2aWNlIGRyaXZlciBmb3IgYSBDQU4gY29udHJvbGxlciBkaXJlY3RseQorICBwcm92aWRlcyB0aGUgY2hhcmFjdGVyIGRldmljZSBmb3IgdGhlIGFwcGxpY2F0aW9uIHRvIHdvcmsgd2l0aC4KKyAgVGhpcyBpcyBhdCBsZWFzdCB2ZXJ5IHVudXN1YWwgaW4gVW5peCBzeXN0ZW1zIGZvciBib3RoLCBjaGFyIGFuZAorICBibG9jayBkZXZpY2VzLiAgRm9yIGV4YW1wbGUgeW91IGRvbid0IGhhdmUgYSBjaGFyYWN0ZXIgZGV2aWNlIGZvciBhCisgIGNlcnRhaW4gVUFSVCBvZiBhIHNlcmlhbCBpbnRlcmZhY2UsIGEgY2VydGFpbiBzb3VuZCBjaGlwIGluIHlvdXIKKyAgY29tcHV0ZXIsIGEgU0NTSSBvciBJREUgY29udHJvbGxlciBwcm92aWRpbmcgYWNjZXNzIHRvIHlvdXIgaGFyZAorICBkaXNrIG9yIHRhcGUgc3RyZWFtZXIgZGV2aWNlLiAgSW5zdGVhZCwgeW91IGhhdmUgYWJzdHJhY3Rpb24gbGF5ZXJzCisgIHdoaWNoIHByb3ZpZGUgYSB1bmlmaWVkIGNoYXJhY3RlciBvciBibG9jayBkZXZpY2UgaW50ZXJmYWNlIHRvIHRoZQorICBhcHBsaWNhdGlvbiBvbiB0aGUgb25lIGhhbmQsIGFuZCBhIGludGVyZmFjZSBmb3IgaGFyZHdhcmUtc3BlY2lmaWMKKyAgZGV2aWNlIGRyaXZlcnMgb24gdGhlIG90aGVyIGhhbmQuICBUaGVzZSBhYnN0cmFjdGlvbnMgYXJlIHByb3ZpZGVkCisgIGJ5IHN1YnN5c3RlbXMgbGlrZSB0aGUgdHR5IGxheWVyLCB0aGUgYXVkaW8gc3Vic3lzdGVtIG9yIHRoZSBTQ1NJCisgIGFuZCBJREUgc3Vic3lzdGVtcyBmb3IgdGhlIGRldmljZXMgbWVudGlvbmVkIGFib3ZlLgorCisgIFRoZSBlYXNpZXN0IHdheSB0byBpbXBsZW1lbnQgYSBDQU4gZGV2aWNlIGRyaXZlciBpcyBhcyBhIGNoYXJhY3RlcgorICBkZXZpY2Ugd2l0aG91dCBzdWNoIGEgKGNvbXBsZXRlKSBhYnN0cmFjdGlvbiBsYXllciwgYXMgaXMgZG9uZSBieSBtb3N0CisgIGV4aXN0aW5nIGRyaXZlcnMuICBUaGUgcmlnaHQgd2F5LCBob3dldmVyLCB3b3VsZCBiZSB0byBhZGQgc3VjaCBhCisgIGxheWVyIHdpdGggYWxsIHRoZSBmdW5jdGlvbmFsaXR5IGxpa2UgcmVnaXN0ZXJpbmcgZm9yIGNlcnRhaW4gQ0FOCisgIElEcywgc3VwcG9ydGluZyBzZXZlcmFsIG9wZW4gZmlsZSBkZXNjcmlwdG9ycyBhbmQgKGRlKW11bHRpcGxleGluZworICBDQU4gZnJhbWVzIGJldHdlZW4gdGhlbSwgKHNvcGhpc3RpY2F0ZWQpIHF1ZXVlaW5nIG9mIENBTiBmcmFtZXMsIGFuZAorICBwcm92aWRpbmcgYW4gQVBJIGZvciBkZXZpY2UgZHJpdmVycyB0byByZWdpc3RlciB3aXRoLiAgSG93ZXZlciwgdGhlbgorICBpdCB3b3VsZCBiZSBubyBtb3JlIGRpZmZpY3VsdCwgb3IgbWF5IGJlIGV2ZW4gZWFzaWVyLCB0byB1c2UgdGhlCisgIG5ldHdvcmtpbmcgZnJhbWV3b3JrIHByb3ZpZGVkIGJ5IHRoZSBMaW51eCBrZXJuZWwsIGFuZCB0aGlzIGlzIHdoYXQKKyAgU29ja2V0Q0FOIGRvZXMuCisKKyAgVGhlIHVzZSBvZiB0aGUgbmV0d29ya2luZyBmcmFtZXdvcmsgb2YgdGhlIExpbnV4IGtlcm5lbCBpcyBqdXN0IHRoZQorICBuYXR1cmFsIGFuZCBtb3N0IGFwcHJvcHJpYXRlIHdheSB0byBpbXBsZW1lbnQgQ0FOIGZvciBMaW51eC4KKworMy4gU29ja2V0Q0FOIGNvbmNlcHQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEFzIGRlc2NyaWJlZCBpbiBjaGFwdGVyIDIgaXQgaXMgdGhlIG1haW4gZ29hbCBvZiBTb2NrZXRDQU4gdG8KKyAgcHJvdmlkZSBhIHNvY2tldCBpbnRlcmZhY2UgdG8gdXNlciBzcGFjZSBhcHBsaWNhdGlvbnMgd2hpY2ggYnVpbGRzCisgIHVwb24gdGhlIExpbnV4IG5ldHdvcmsgbGF5ZXIuIEluIGNvbnRyYXN0IHRvIHRoZSBjb21tb25seSBrbm93bgorICBUQ1AvSVAgYW5kIGV0aGVybmV0IG5ldHdvcmtpbmcsIHRoZSBDQU4gYnVzIGlzIGEgYnJvYWRjYXN0LW9ubHkoISkKKyAgbWVkaXVtIHRoYXQgaGFzIG5vIE1BQy1sYXllciBhZGRyZXNzaW5nIGxpa2UgZXRoZXJuZXQuIFRoZSBDQU4taWRlbnRpZmllcgorICAoY2FuX2lkKSBpcyB1c2VkIGZvciBhcmJpdHJhdGlvbiBvbiB0aGUgQ0FOLWJ1cy4gVGhlcmVmb3JlIHRoZSBDQU4tSURzCisgIGhhdmUgdG8gYmUgY2hvc2VuIHVuaXF1ZWx5IG9uIHRoZSBidXMuIFdoZW4gZGVzaWduaW5nIGEgQ0FOLUVDVQorICBuZXR3b3JrIHRoZSBDQU4tSURzIGFyZSBtYXBwZWQgdG8gYmUgc2VudCBieSBhIHNwZWNpZmljIEVDVS4KKyAgRm9yIHRoaXMgcmVhc29uIGEgQ0FOLUlEIGNhbiBiZSB0cmVhdGVkIGJlc3QgYXMgYSBraW5kIG9mIHNvdXJjZSBhZGRyZXNzLgorCisgIDMuMSByZWNlaXZlIGxpc3RzCisKKyAgVGhlIG5ldHdvcmsgdHJhbnNwYXJlbnQgYWNjZXNzIG9mIG11bHRpcGxlIGFwcGxpY2F0aW9ucyBsZWFkcyB0byB0aGUKKyAgcHJvYmxlbSB0aGF0IGRpZmZlcmVudCBhcHBsaWNhdGlvbnMgbWF5IGJlIGludGVyZXN0ZWQgaW4gdGhlIHNhbWUKKyAgQ0FOLUlEcyBmcm9tIHRoZSBzYW1lIENBTiBuZXR3b3JrIGludGVyZmFjZS4gVGhlIFNvY2tldENBTiBjb3JlCisgIG1vZHVsZSAtIHdoaWNoIGltcGxlbWVudHMgdGhlIHByb3RvY29sIGZhbWlseSBDQU4gLSBwcm92aWRlcyBzZXZlcmFsCisgIGhpZ2ggZWZmaWNpZW50IHJlY2VpdmUgbGlzdHMgZm9yIHRoaXMgcmVhc29uLiBJZiBlLmcuIGEgdXNlciBzcGFjZQorICBhcHBsaWNhdGlvbiBvcGVucyBhIENBTiBSQVcgc29ja2V0LCB0aGUgcmF3IHByb3RvY29sIG1vZHVsZSBpdHNlbGYKKyAgcmVxdWVzdHMgdGhlIChyYW5nZSBvZikgQ0FOLUlEcyBmcm9tIHRoZSBTb2NrZXRDQU4gY29yZSB0aGF0IGFyZQorICByZXF1ZXN0ZWQgYnkgdGhlIHVzZXIuIFRoZSBzdWJzY3JpcHRpb24gYW5kIHVuc3Vic2NyaXB0aW9uIG9mCisgIENBTi1JRHMgY2FuIGJlIGRvbmUgZm9yIHNwZWNpZmljIENBTiBpbnRlcmZhY2VzIG9yIGZvciBhbGwoISkga25vd24KKyAgQ0FOIGludGVyZmFjZXMgd2l0aCB0aGUgY2FuX3J4Xyh1bilyZWdpc3RlcigpIGZ1bmN0aW9ucyBwcm92aWRlZCB0bworICBDQU4gcHJvdG9jb2wgbW9kdWxlcyBieSB0aGUgU29ja2V0Q0FOIGNvcmUgKHNlZSBjaGFwdGVyIDUpLgorICBUbyBvcHRpbWl6ZSB0aGUgQ1BVIHVzYWdlIGF0IHJ1bnRpbWUgdGhlIHJlY2VpdmUgbGlzdHMgYXJlIHNwbGl0IHVwCisgIGludG8gc2V2ZXJhbCBzcGVjaWZpYyBsaXN0cyBwZXIgZGV2aWNlIHRoYXQgbWF0Y2ggdGhlIHJlcXVlc3RlZAorICBmaWx0ZXIgY29tcGxleGl0eSBmb3IgYSBnaXZlbiB1c2UtY2FzZS4KKworICAzLjIgbG9jYWwgbG9vcGJhY2sgb2Ygc2VudCBmcmFtZXMKKworICBBcyBrbm93biBmcm9tIG90aGVyIG5ldHdvcmtpbmcgY29uY2VwdHMgdGhlIGRhdGEgZXhjaGFuZ2luZworICBhcHBsaWNhdGlvbnMgbWF5IHJ1biBvbiB0aGUgc2FtZSBvciBkaWZmZXJlbnQgbm9kZXMgd2l0aG91dCBhbnkKKyAgY2hhbmdlIChleGNlcHQgZm9yIHRoZSBhY2NvcmRpbmcgYWRkcmVzc2luZyBpbmZvcm1hdGlvbik6CisKKyAgICAgICAgIF9fXyAgIF9fXyAgIF9fXyAgICAgICAgICAgICAgICAgICBfX19fX19fICAgX19fCisgICAgICAgIHwgXyB8IHwgXyB8IHwgXyB8ICAgICAgICAgICAgICAgICB8IF8gICBfIHwgfCBfIHwKKyAgICAgICAgfHxBfHwgfHxCfHwgfHxDfHwgICAgICAgICAgICAgICAgIHx8QXwgfEJ8fCB8fEN8fAorICAgICAgICB8X19ffCB8X19ffCB8X19ffCAgICAgICAgICAgICAgICAgfF9fX19fX198IHxfX198CisgICAgICAgICAgfCAgICAgfCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tKDEpLSBDQU4gYnVzIC0oMiktLS0tLS0tLS0tLS0tLS0KKworICBUbyBlbnN1cmUgdGhhdCBhcHBsaWNhdGlvbiBBIHJlY2VpdmVzIHRoZSBzYW1lIGluZm9ybWF0aW9uIGluIHRoZQorICBleGFtcGxlICgyKSBhcyBpdCB3b3VsZCByZWNlaXZlIGluIGV4YW1wbGUgKDEpIHRoZXJlIGlzIG5lZWQgZm9yCisgIHNvbWUga2luZCBvZiBsb2NhbCBsb29wYmFjayBvZiB0aGUgc2VudCBDQU4gZnJhbWVzIG9uIHRoZSBhcHByb3ByaWF0ZQorICBub2RlLgorCisgIFRoZSBMaW51eCBuZXR3b3JrIGRldmljZXMgKGJ5IGRlZmF1bHQpIGp1c3QgY2FuIGhhbmRsZSB0aGUKKyAgdHJhbnNtaXNzaW9uIGFuZCByZWNlcHRpb24gb2YgbWVkaWEgZGVwZW5kZW50IGZyYW1lcy4gRHVlIHRvIHRoZQorICBhcmJpdHJhdGlvbiBvbiB0aGUgQ0FOIGJ1cyB0aGUgdHJhbnNtaXNzaW9uIG9mIGEgbG93IHByaW8gQ0FOLUlECisgIG1heSBiZSBkZWxheWVkIGJ5IHRoZSByZWNlcHRpb24gb2YgYSBoaWdoIHByaW8gQ0FOIGZyYW1lLiBUbworICByZWZsZWN0IHRoZSBjb3JyZWN0KiB0cmFmZmljIG9uIHRoZSBub2RlIHRoZSBsb29wYmFjayBvZiB0aGUgc2VudAorICBkYXRhIGhhcyB0byBiZSBwZXJmb3JtZWQgcmlnaHQgYWZ0ZXIgYSBzdWNjZXNzZnVsIHRyYW5zbWlzc2lvbi4gSWYKKyAgdGhlIENBTiBuZXR3b3JrIGludGVyZmFjZSBpcyBub3QgY2FwYWJsZSBvZiBwZXJmb3JtaW5nIHRoZSBsb29wYmFjayBmb3IKKyAgc29tZSByZWFzb24gdGhlIFNvY2tldENBTiBjb3JlIGNhbiBkbyB0aGlzIHRhc2sgYXMgYSBmYWxsYmFjayBzb2x1dGlvbi4KKyAgU2VlIGNoYXB0ZXIgNi4yIGZvciBkZXRhaWxzIChyZWNvbW1lbmRlZCkuCisKKyAgVGhlIGxvb3BiYWNrIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZCBieSBkZWZhdWx0IHRvIHJlZmxlY3Qgc3RhbmRhcmQKKyAgbmV0d29ya2luZyBiZWhhdmlvdXIgZm9yIENBTiBhcHBsaWNhdGlvbnMuIER1ZSB0byBzb21lIHJlcXVlc3RzIGZyb20KKyAgdGhlIFJULVNvY2tldENBTiBncm91cCB0aGUgbG9vcGJhY2sgb3B0aW9uYWxseSBtYXkgYmUgZGlzYWJsZWQgZm9yIGVhY2gKKyAgc2VwYXJhdGUgc29ja2V0LiBTZWUgc29ja29wdHMgZnJvbSB0aGUgQ0FOIFJBVyBzb2NrZXRzIGluIGNoYXB0ZXIgNC4xLgorCisgICogPSB5b3UgcmVhbGx5IGxpa2UgdG8gaGF2ZSB0aGlzIHdoZW4geW91J3JlIHJ1bm5pbmcgYW5hbHlzZXIgdG9vbHMKKyAgICAgIGxpa2UgJ2NhbmR1bXAnIG9yICdjYW5zbmlmZmVyJyBvbiB0aGUgKHNhbWUpIG5vZGUuCisKKyAgMy4zIG5ldHdvcmsgcHJvYmxlbSBub3RpZmljYXRpb25zCisKKyAgVGhlIHVzZSBvZiB0aGUgQ0FOIGJ1cyBtYXkgbGVhZCB0byBzZXZlcmFsIHByb2JsZW1zIG9uIHRoZSBwaHlzaWNhbAorICBhbmQgbWVkaWEgYWNjZXNzIGNvbnRyb2wgbGF5ZXIuIERldGVjdGluZyBhbmQgbG9nZ2luZyBvZiB0aGVzZSBsb3dlcgorICBsYXllciBwcm9ibGVtcyBpcyBhIHZpdGFsIHJlcXVpcmVtZW50IGZvciBDQU4gdXNlcnMgdG8gaWRlbnRpZnkKKyAgaGFyZHdhcmUgaXNzdWVzIG9uIHRoZSBwaHlzaWNhbCB0cmFuc2NlaXZlciBsYXllciBhcyB3ZWxsIGFzCisgIGFyYml0cmF0aW9uIHByb2JsZW1zIGFuZCBlcnJvciBmcmFtZXMgY2F1c2VkIGJ5IHRoZSBkaWZmZXJlbnQKKyAgRUNVcy4gVGhlIG9jY3VycmVuY2Ugb2YgZGV0ZWN0ZWQgZXJyb3JzIGFyZSBpbXBvcnRhbnQgZm9yIGRpYWdub3NpcworICBhbmQgaGF2ZSB0byBiZSBsb2dnZWQgdG9nZXRoZXIgd2l0aCB0aGUgZXhhY3QgdGltZXN0YW1wLiBGb3IgdGhpcworICByZWFzb24gdGhlIENBTiBpbnRlcmZhY2UgZHJpdmVyIGNhbiBnZW5lcmF0ZSBzbyBjYWxsZWQgRXJyb3IgTWVzc2FnZQorICBGcmFtZXMgdGhhdCBjYW4gb3B0aW9uYWxseSBiZSBwYXNzZWQgdG8gdGhlIHVzZXIgYXBwbGljYXRpb24gaW4gdGhlCisgIHNhbWUgd2F5IGFzIG90aGVyIENBTiBmcmFtZXMuIFdoZW5ldmVyIGFuIGVycm9yIG9uIHRoZSBwaHlzaWNhbCBsYXllcgorICBvciB0aGUgTUFDIGxheWVyIGlzIGRldGVjdGVkIChlLmcuIGJ5IHRoZSBDQU4gY29udHJvbGxlcikgdGhlIGRyaXZlcgorICBjcmVhdGVzIGFuIGFwcHJvcHJpYXRlIGVycm9yIG1lc3NhZ2UgZnJhbWUuIEVycm9yIG1lc3NhZ2VzIGZyYW1lcyBjYW4KKyAgYmUgcmVxdWVzdGVkIGJ5IHRoZSB1c2VyIGFwcGxpY2F0aW9uIHVzaW5nIHRoZSBjb21tb24gQ0FOIGZpbHRlcgorICBtZWNoYW5pc21zLiBJbnNpZGUgdGhpcyBmaWx0ZXIgZGVmaW5pdGlvbiB0aGUgKGludGVyZXN0ZWQpIHR5cGUgb2YKKyAgZXJyb3JzIG1heSBiZSBzZWxlY3RlZC4gVGhlIHJlY2VwdGlvbiBvZiBlcnJvciBtZXNzYWdlcyBpcyBkaXNhYmxlZAorICBieSBkZWZhdWx0LiBUaGUgZm9ybWF0IG9mIHRoZSBDQU4gZXJyb3IgbWVzc2FnZSBmcmFtZSBpcyBicmllZmx5CisgIGRlc2NyaWJlZCBpbiB0aGUgTGludXggaGVhZGVyIGZpbGUgImluY2x1ZGUvdWFwaS9saW51eC9jYW4vZXJyb3IuaCIuCisKKzQuIEhvdyB0byB1c2UgU29ja2V0Q0FOCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBMaWtlIFRDUC9JUCwgeW91IGZpcnN0IG5lZWQgdG8gb3BlbiBhIHNvY2tldCBmb3IgY29tbXVuaWNhdGluZyBvdmVyIGEKKyAgQ0FOIG5ldHdvcmsuIFNpbmNlIFNvY2tldENBTiBpbXBsZW1lbnRzIGEgbmV3IHByb3RvY29sIGZhbWlseSwgeW91CisgIG5lZWQgdG8gcGFzcyBQRl9DQU4gYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBzb2NrZXQoMikgc3lzdGVtCisgIGNhbGwuIEN1cnJlbnRseSwgdGhlcmUgYXJlIHR3byBDQU4gcHJvdG9jb2xzIHRvIGNob29zZSBmcm9tLCB0aGUgcmF3CisgIHNvY2tldCBwcm90b2NvbCBhbmQgdGhlIGJyb2FkY2FzdCBtYW5hZ2VyIChCQ00pLiBTbyB0byBvcGVuIGEgc29ja2V0LAorICB5b3Ugd291bGQgd3JpdGUKKworICAgIHMgPSBzb2NrZXQoUEZfQ0FOLCBTT0NLX1JBVywgQ0FOX1JBVyk7CisKKyAgYW5kCisKKyAgICBzID0gc29ja2V0KFBGX0NBTiwgU09DS19ER1JBTSwgQ0FOX0JDTSk7CisKKyAgcmVzcGVjdGl2ZWx5LiAgQWZ0ZXIgdGhlIHN1Y2Nlc3NmdWwgY3JlYXRpb24gb2YgdGhlIHNvY2tldCwgeW91IHdvdWxkCisgIG5vcm1hbGx5IHVzZSB0aGUgYmluZCgyKSBzeXN0ZW0gY2FsbCB0byBiaW5kIHRoZSBzb2NrZXQgdG8gYSBDQU4KKyAgaW50ZXJmYWNlICh3aGljaCBpcyBkaWZmZXJlbnQgZnJvbSBUQ1AvSVAgZHVlIHRvIGRpZmZlcmVudCBhZGRyZXNzaW5nCisgIC0gc2VlIGNoYXB0ZXIgMykuIEFmdGVyIGJpbmRpbmcgKENBTl9SQVcpIG9yIGNvbm5lY3RpbmcgKENBTl9CQ00pCisgIHRoZSBzb2NrZXQsIHlvdSBjYW4gcmVhZCgyKSBhbmQgd3JpdGUoMikgZnJvbS90byB0aGUgc29ja2V0IG9yIHVzZQorICBzZW5kKDIpLCBzZW5kdG8oMiksIHNlbmRtc2coMikgYW5kIHRoZSByZWN2KiBjb3VudGVycGFydCBvcGVyYXRpb25zCisgIG9uIHRoZSBzb2NrZXQgYXMgdXN1YWwuIFRoZXJlIGFyZSBhbHNvIENBTiBzcGVjaWZpYyBzb2NrZXQgb3B0aW9ucworICBkZXNjcmliZWQgYmVsb3cuCisKKyAgVGhlIGJhc2ljIENBTiBmcmFtZSBzdHJ1Y3R1cmUgYW5kIHRoZSBzb2NrYWRkciBzdHJ1Y3R1cmUgYXJlIGRlZmluZWQKKyAgaW4gaW5jbHVkZS9saW51eC9jYW4uaDoKKworICAgIHN0cnVjdCBjYW5fZnJhbWUgeworICAgICAgICAgICAgY2FuaWRfdCBjYW5faWQ7ICAvKiAzMiBiaXQgQ0FOX0lEICsgRUZGL1JUUi9FUlIgZmxhZ3MgKi8KKyAgICAgICAgICAgIF9fdTggICAgY2FuX2RsYzsgLyogZnJhbWUgcGF5bG9hZCBsZW5ndGggaW4gYnl0ZSAoMCAuLiA4KSAqLworICAgICAgICAgICAgX191OCAgICBfX3BhZDsgICAvKiBwYWRkaW5nICovCisgICAgICAgICAgICBfX3U4ICAgIF9fcmVzMDsgIC8qIHJlc2VydmVkIC8gcGFkZGluZyAqLworICAgICAgICAgICAgX191OCAgICBfX3JlczE7ICAvKiByZXNlcnZlZCAvIHBhZGRpbmcgKi8KKyAgICAgICAgICAgIF9fdTggICAgZGF0YVs4XSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSk7CisgICAgfTsKKworICBUaGUgYWxpZ25tZW50IG9mIHRoZSAobGluZWFyKSBwYXlsb2FkIGRhdGFbXSB0byBhIDY0Yml0IGJvdW5kYXJ5CisgIGFsbG93cyB0aGUgdXNlciB0byBkZWZpbmUgdGhlaXIgb3duIHN0cnVjdHMgYW5kIHVuaW9ucyB0byBlYXNpbHkgYWNjZXNzCisgIHRoZSBDQU4gcGF5bG9hZC4gVGhlcmUgaXMgbm8gZ2l2ZW4gYnl0ZW9yZGVyIG9uIHRoZSBDQU4gYnVzIGJ5CisgIGRlZmF1bHQuIEEgcmVhZCgyKSBzeXN0ZW0gY2FsbCBvbiBhIENBTl9SQVcgc29ja2V0IHRyYW5zZmVycyBhCisgIHN0cnVjdCBjYW5fZnJhbWUgdG8gdGhlIHVzZXIgc3BhY2UuCisKKyAgVGhlIHNvY2thZGRyX2NhbiBzdHJ1Y3R1cmUgaGFzIGFuIGludGVyZmFjZSBpbmRleCBsaWtlIHRoZQorICBQRl9QQUNLRVQgc29ja2V0LCB0aGF0IGFsc28gYmluZHMgdG8gYSBzcGVjaWZpYyBpbnRlcmZhY2U6CisKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfY2FuIHsKKyAgICAgICAgICAgIHNhX2ZhbWlseV90IGNhbl9mYW1pbHk7CisgICAgICAgICAgICBpbnQgICAgICAgICBjYW5faWZpbmRleDsKKyAgICAgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgICAgICAgICAgLyogdHJhbnNwb3J0IHByb3RvY29sIGNsYXNzIGFkZHJlc3MgaW5mbyAoZS5nLiBJU09UUCkgKi8KKyAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgY2FuaWRfdCByeF9pZCwgdHhfaWQ7IH0gdHA7CisKKyAgICAgICAgICAgICAgICAgICAgLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSBDQU4gcHJvdG9jb2xzIGFkZHJlc3MgaW5mb3JtYXRpb24gKi8KKyAgICAgICAgICAgIH0gY2FuX2FkZHI7CisgICAgfTsKKworICBUbyBkZXRlcm1pbmUgdGhlIGludGVyZmFjZSBpbmRleCBhbiBhcHByb3ByaWF0ZSBpb2N0bCgpIGhhcyB0bworICBiZSB1c2VkIChleGFtcGxlIGZvciBDQU5fUkFXIHNvY2tldHMgd2l0aG91dCBlcnJvciBjaGVja2luZyk6CisKKyAgICBpbnQgczsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfY2FuIGFkZHI7CisgICAgc3RydWN0IGlmcmVxIGlmcjsKKworICAgIHMgPSBzb2NrZXQoUEZfQ0FOLCBTT0NLX1JBVywgQ0FOX1JBVyk7CisKKyAgICBzdHJjcHkoaWZyLmlmcl9uYW1lLCAiY2FuMCIgKTsKKyAgICBpb2N0bChzLCBTSU9DR0lGSU5ERVgsICZpZnIpOworCisgICAgYWRkci5jYW5fZmFtaWx5ID0gQUZfQ0FOOworICAgIGFkZHIuY2FuX2lmaW5kZXggPSBpZnIuaWZyX2lmaW5kZXg7CisKKyAgICBiaW5kKHMsIChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkciwgc2l6ZW9mKGFkZHIpKTsKKworICAgICguLikKKworICBUbyBiaW5kIGEgc29ja2V0IHRvIGFsbCghKSBDQU4gaW50ZXJmYWNlcyB0aGUgaW50ZXJmYWNlIGluZGV4IG11c3QKKyAgYmUgMCAoemVybykuIEluIHRoaXMgY2FzZSB0aGUgc29ja2V0IHJlY2VpdmVzIENBTiBmcmFtZXMgZnJvbSBldmVyeQorICBlbmFibGVkIENBTiBpbnRlcmZhY2UuIFRvIGRldGVybWluZSB0aGUgb3JpZ2luYXRpbmcgQ0FOIGludGVyZmFjZQorICB0aGUgc3lzdGVtIGNhbGwgcmVjdmZyb20oMikgbWF5IGJlIHVzZWQgaW5zdGVhZCBvZiByZWFkKDIpLiBUbyBzZW5kCisgIG9uIGEgc29ja2V0IHRoYXQgaXMgYm91bmQgdG8gJ2FueScgaW50ZXJmYWNlIHNlbmR0bygyKSBpcyBuZWVkZWQgdG8KKyAgc3BlY2lmeSB0aGUgb3V0Z29pbmcgaW50ZXJmYWNlLgorCisgIFJlYWRpbmcgQ0FOIGZyYW1lcyBmcm9tIGEgYm91bmQgQ0FOX1JBVyBzb2NrZXQgKHNlZSBhYm92ZSkgY29uc2lzdHMKKyAgb2YgcmVhZGluZyBhIHN0cnVjdCBjYW5fZnJhbWU6CisKKyAgICBzdHJ1Y3QgY2FuX2ZyYW1lIGZyYW1lOworCisgICAgbmJ5dGVzID0gcmVhZChzLCAmZnJhbWUsIHNpemVvZihzdHJ1Y3QgY2FuX2ZyYW1lKSk7CisKKyAgICBpZiAobmJ5dGVzIDwgMCkgeworICAgICAgICAgICAgcGVycm9yKCJjYW4gcmF3IHNvY2tldCByZWFkIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICAvKiBwYXJhbm9pZCBjaGVjayAuLi4gKi8KKyAgICBpZiAobmJ5dGVzIDwgc2l6ZW9mKHN0cnVjdCBjYW5fZnJhbWUpKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInJlYWQ6IGluY29tcGxldGUgQ0FOIGZyYW1lXG4iKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIC8qIGRvIHNvbWV0aGluZyB3aXRoIHRoZSByZWNlaXZlZCBDQU4gZnJhbWUgKi8KKworICBXcml0aW5nIENBTiBmcmFtZXMgY2FuIGJlIGRvbmUgc2ltaWxhcmx5LCB3aXRoIHRoZSB3cml0ZSgyKSBzeXN0ZW0gY2FsbDoKKworICAgIG5ieXRlcyA9IHdyaXRlKHMsICZmcmFtZSwgc2l6ZW9mKHN0cnVjdCBjYW5fZnJhbWUpKTsKKworICBXaGVuIHRoZSBDQU4gaW50ZXJmYWNlIGlzIGJvdW5kIHRvICdhbnknIGV4aXN0aW5nIENBTiBpbnRlcmZhY2UKKyAgKGFkZHIuY2FuX2lmaW5kZXggPSAwKSBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgcmVjdmZyb20oMikgaWYgdGhlCisgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBvcmlnaW5hdGluZyBDQU4gaW50ZXJmYWNlIGlzIG5lZWRlZDoKKworICAgIHN0cnVjdCBzb2NrYWRkcl9jYW4gYWRkcjsKKyAgICBzdHJ1Y3QgaWZyZXEgaWZyOworICAgIHNvY2tsZW5fdCBsZW4gPSBzaXplb2YoYWRkcik7CisgICAgc3RydWN0IGNhbl9mcmFtZSBmcmFtZTsKKworICAgIG5ieXRlcyA9IHJlY3Zmcm9tKHMsICZmcmFtZSwgc2l6ZW9mKHN0cnVjdCBjYW5fZnJhbWUpLAorICAgICAgICAgICAgICAgICAgICAgIDAsIChzdHJ1Y3Qgc29ja2FkZHIqKSZhZGRyLCAmbGVuKTsKKworICAgIC8qIGdldCBpbnRlcmZhY2UgbmFtZSBvZiB0aGUgcmVjZWl2ZWQgQ0FOIGZyYW1lICovCisgICAgaWZyLmlmcl9pZmluZGV4ID0gYWRkci5jYW5faWZpbmRleDsKKyAgICBpb2N0bChzLCBTSU9DR0lGTkFNRSwgJmlmcik7CisgICAgcHJpbnRmKCJSZWNlaXZlZCBhIENBTiBmcmFtZSBmcm9tIGludGVyZmFjZSAlcyIsIGlmci5pZnJfbmFtZSk7CisKKyAgVG8gd3JpdGUgQ0FOIGZyYW1lcyBvbiBzb2NrZXRzIGJvdW5kIHRvICdhbnknIENBTiBpbnRlcmZhY2UgdGhlCisgIG91dGdvaW5nIGludGVyZmFjZSBoYXMgdG8gYmUgZGVmaW5lZCBjZXJ0YWlubHkuCisKKyAgICBzdHJjcHkoaWZyLmlmcl9uYW1lLCAiY2FuMCIpOworICAgIGlvY3RsKHMsIFNJT0NHSUZJTkRFWCwgJmlmcik7CisgICAgYWRkci5jYW5faWZpbmRleCA9IGlmci5pZnJfaWZpbmRleDsKKyAgICBhZGRyLmNhbl9mYW1pbHkgID0gQUZfQ0FOOworCisgICAgbmJ5dGVzID0gc2VuZHRvKHMsICZmcmFtZSwgc2l6ZW9mKHN0cnVjdCBjYW5fZnJhbWUpLAorICAgICAgICAgICAgICAgICAgICAwLCAoc3RydWN0IHNvY2thZGRyKikmYWRkciwgc2l6ZW9mKGFkZHIpKTsKKworICBSZW1hcmsgYWJvdXQgQ0FOIEZEIChmbGV4aWJsZSBkYXRhIHJhdGUpIHN1cHBvcnQ6CisKKyAgR2VuZXJhbGx5IHRoZSBoYW5kbGluZyBvZiBDQU4gRkQgaXMgdmVyeSBzaW1pbGFyIHRvIHRoZSBmb3JtZXJseSBkZXNjcmliZWQKKyAgZXhhbXBsZXMuIFRoZSBuZXcgQ0FOIEZEIGNhcGFibGUgQ0FOIGNvbnRyb2xsZXJzIHN1cHBvcnQgdHdvIGRpZmZlcmVudAorICBiaXRyYXRlcyBmb3IgdGhlIGFyYml0cmF0aW9uIHBoYXNlIGFuZCB0aGUgcGF5bG9hZCBwaGFzZSBvZiB0aGUgQ0FOIEZEIGZyYW1lCisgIGFuZCB1cCB0byA2NCBieXRlcyBvZiBwYXlsb2FkLiBUaGlzIGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoIGJyZWFrcyBhbGwgdGhlCisgIGtlcm5lbCBpbnRlcmZhY2VzIChBQkkpIHdoaWNoIGhlYXZpbHkgcmVseSBvbiB0aGUgQ0FOIGZyYW1lIHdpdGggZml4ZWQgZWlnaHQKKyAgYnl0ZXMgb2YgcGF5bG9hZCAoc3RydWN0IGNhbl9mcmFtZSkgbGlrZSB0aGUgQ0FOX1JBVyBzb2NrZXQuIFRoZXJlZm9yZSBlLmcuCisgIHRoZSBDQU5fUkFXIHNvY2tldCBzdXBwb3J0cyBhIG5ldyBzb2NrZXQgb3B0aW9uIENBTl9SQVdfRkRfRlJBTUVTIHRoYXQKKyAgc3dpdGNoZXMgdGhlIHNvY2tldCBpbnRvIGEgbW9kZSB0aGF0IGFsbG93cyB0aGUgaGFuZGxpbmcgb2YgQ0FOIEZEIGZyYW1lcworICBhbmQgKGxlZ2FjeSkgQ0FOIGZyYW1lcyBzaW11bHRhbmVvdXNseSAoc2VlIHNlY3Rpb24gNC4xLjUpLgorCisgIFRoZSBzdHJ1Y3QgY2FuZmRfZnJhbWUgaXMgZGVmaW5lZCBpbiBpbmNsdWRlL2xpbnV4L2Nhbi5oOgorCisgICAgc3RydWN0IGNhbmZkX2ZyYW1lIHsKKyAgICAgICAgICAgIGNhbmlkX3QgY2FuX2lkOyAgLyogMzIgYml0IENBTl9JRCArIEVGRi9SVFIvRVJSIGZsYWdzICovCisgICAgICAgICAgICBfX3U4ICAgIGxlbjsgICAgIC8qIGZyYW1lIHBheWxvYWQgbGVuZ3RoIGluIGJ5dGUgKDAgLi4gNjQpICovCisgICAgICAgICAgICBfX3U4ICAgIGZsYWdzOyAgIC8qIGFkZGl0aW9uYWwgZmxhZ3MgZm9yIENBTiBGRCAqLworICAgICAgICAgICAgX191OCAgICBfX3JlczA7ICAvKiByZXNlcnZlZCAvIHBhZGRpbmcgKi8KKyAgICAgICAgICAgIF9fdTggICAgX19yZXMxOyAgLyogcmVzZXJ2ZWQgLyBwYWRkaW5nICovCisgICAgICAgICAgICBfX3U4ICAgIGRhdGFbNjRdIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKTsKKyAgICB9OworCisgIFRoZSBzdHJ1Y3QgY2FuZmRfZnJhbWUgYW5kIHRoZSBleGlzdGluZyBzdHJ1Y3QgY2FuX2ZyYW1lIGhhdmUgdGhlIGNhbl9pZCwKKyAgdGhlIHBheWxvYWQgbGVuZ3RoIGFuZCB0aGUgcGF5bG9hZCBkYXRhIGF0IHRoZSBzYW1lIG9mZnNldCBpbnNpZGUgdGhlaXIKKyAgc3RydWN0dXJlcy4gVGhpcyBhbGxvd3MgdG8gaGFuZGxlIHRoZSBkaWZmZXJlbnQgc3RydWN0dXJlcyB2ZXJ5IHNpbWlsYXIuCisgIFdoZW4gdGhlIGNvbnRlbnQgb2YgYSBzdHJ1Y3QgY2FuX2ZyYW1lIGlzIGNvcGllZCBpbnRvIGEgc3RydWN0IGNhbmZkX2ZyYW1lCisgIGFsbCBzdHJ1Y3R1cmUgZWxlbWVudHMgY2FuIGJlIHVzZWQgYXMtaXMgLSBvbmx5IHRoZSBkYXRhW10gYmVjb21lcyBleHRlbmRlZC4KKworICBXaGVuIGludHJvZHVjaW5nIHRoZSBzdHJ1Y3QgY2FuZmRfZnJhbWUgaXQgdHVybmVkIG91dCB0aGF0IHRoZSBkYXRhIGxlbmd0aAorICBjb2RlIChETEMpIG9mIHRoZSBzdHJ1Y3QgY2FuX2ZyYW1lIHdhcyB1c2VkIGFzIGEgbGVuZ3RoIGluZm9ybWF0aW9uIGFzIHRoZQorICBsZW5ndGggYW5kIHRoZSBETEMgaGFzIGEgMToxIG1hcHBpbmcgaW4gdGhlIHJhbmdlIG9mIDAgLi4gOC4gVG8gcHJlc2VydmUKKyAgdGhlIGVhc3kgaGFuZGxpbmcgb2YgdGhlIGxlbmd0aCBpbmZvcm1hdGlvbiB0aGUgY2FuZmRfZnJhbWUubGVuIGVsZW1lbnQKKyAgY29udGFpbnMgYSBwbGFpbiBsZW5ndGggdmFsdWUgZnJvbSAwIC4uIDY0LiBTbyBib3RoIGNhbmZkX2ZyYW1lLmxlbiBhbmQKKyAgY2FuX2ZyYW1lLmNhbl9kbGMgYXJlIGVxdWFsIGFuZCBjb250YWluIGEgbGVuZ3RoIGluZm9ybWF0aW9uIGFuZCBubyBETEMuCisgIEZvciBkZXRhaWxzIGFib3V0IHRoZSBkaXN0aW5jdGlvbiBvZiBDQU4gYW5kIENBTiBGRCBjYXBhYmxlIGRldmljZXMgYW5kCisgIHRoZSBtYXBwaW5nIHRvIHRoZSBidXMtcmVsZXZhbnQgZGF0YSBsZW5ndGggY29kZSAoRExDKSwgc2VlIGNoYXB0ZXIgNi42LgorCisgIFRoZSBsZW5ndGggb2YgdGhlIHR3byBDQU4oRkQpIGZyYW1lIHN0cnVjdHVyZXMgZGVmaW5lIHRoZSBtYXhpbXVtIHRyYW5zZmVyCisgIHVuaXQgKE1UVSkgb2YgdGhlIENBTihGRCkgbmV0d29yayBpbnRlcmZhY2UgYW5kIHNrYnVmZiBkYXRhIGxlbmd0aC4gVHdvCisgIGRlZmluaXRpb25zIGFyZSBzcGVjaWZpZWQgZm9yIENBTiBzcGVjaWZpYyBNVFVzIGluIGluY2x1ZGUvbGludXgvY2FuLmggOgorCisgICNkZWZpbmUgQ0FOX01UVSAgIChzaXplb2Yoc3RydWN0IGNhbl9mcmFtZSkpICAgPT0gMTYgID0+ICdsZWdhY3knIENBTiBmcmFtZQorICAjZGVmaW5lIENBTkZEX01UVSAoc2l6ZW9mKHN0cnVjdCBjYW5mZF9mcmFtZSkpID09IDcyICA9PiBDQU4gRkQgZnJhbWUKKworICA0LjEgUkFXIHByb3RvY29sIHNvY2tldHMgd2l0aCBjYW5fZmlsdGVycyAoU09DS19SQVcpCisKKyAgVXNpbmcgQ0FOX1JBVyBzb2NrZXRzIGlzIGV4dGVuc2l2ZWx5IGNvbXBhcmFibGUgdG8gdGhlIGNvbW1vbmx5CisgIGtub3duIGFjY2VzcyB0byBDQU4gY2hhcmFjdGVyIGRldmljZXMuIFRvIG1lZXQgdGhlIG5ldyBwb3NzaWJpbGl0aWVzCisgIHByb3ZpZGVkIGJ5IHRoZSBtdWx0aSB1c2VyIFNvY2tldENBTiBhcHByb2FjaCwgc29tZSByZWFzb25hYmxlCisgIGRlZmF1bHRzIGFyZSBzZXQgYXQgUkFXIHNvY2tldCBiaW5kaW5nIHRpbWU6CisKKyAgLSBUaGUgZmlsdGVycyBhcmUgc2V0IHRvIGV4YWN0bHkgb25lIGZpbHRlciByZWNlaXZpbmcgZXZlcnl0aGluZworICAtIFRoZSBzb2NrZXQgb25seSByZWNlaXZlcyB2YWxpZCBkYXRhIGZyYW1lcyAoPT4gbm8gZXJyb3IgbWVzc2FnZSBmcmFtZXMpCisgIC0gVGhlIGxvb3BiYWNrIG9mIHNlbnQgQ0FOIGZyYW1lcyBpcyBlbmFibGVkIChzZWUgY2hhcHRlciAzLjIpCisgIC0gVGhlIHNvY2tldCBkb2VzIG5vdCByZWNlaXZlIGl0cyBvd24gc2VudCBmcmFtZXMgKGluIGxvb3BiYWNrIG1vZGUpCisKKyAgVGhlc2UgZGVmYXVsdCBzZXR0aW5ncyBtYXkgYmUgY2hhbmdlZCBiZWZvcmUgb3IgYWZ0ZXIgYmluZGluZyB0aGUgc29ja2V0LgorICBUbyB1c2UgdGhlIHJlZmVyZW5jZWQgZGVmaW5pdGlvbnMgb2YgdGhlIHNvY2tldCBvcHRpb25zIGZvciBDQU5fUkFXCisgIHNvY2tldHMsIGluY2x1ZGUgPGxpbnV4L2Nhbi9yYXcuaD4uCisKKyAgNC4xLjEgUkFXIHNvY2tldCBvcHRpb24gQ0FOX1JBV19GSUxURVIKKworICBUaGUgcmVjZXB0aW9uIG9mIENBTiBmcmFtZXMgdXNpbmcgQ0FOX1JBVyBzb2NrZXRzIGNhbiBiZSBjb250cm9sbGVkCisgIGJ5IGRlZmluaW5nIDAgLi4gbiBmaWx0ZXJzIHdpdGggdGhlIENBTl9SQVdfRklMVEVSIHNvY2tldCBvcHRpb24uCisKKyAgVGhlIENBTiBmaWx0ZXIgc3RydWN0dXJlIGlzIGRlZmluZWQgaW4gaW5jbHVkZS9saW51eC9jYW4uaDoKKworICAgIHN0cnVjdCBjYW5fZmlsdGVyIHsKKyAgICAgICAgICAgIGNhbmlkX3QgY2FuX2lkOworICAgICAgICAgICAgY2FuaWRfdCBjYW5fbWFzazsKKyAgICB9OworCisgIEEgZmlsdGVyIG1hdGNoZXMsIHdoZW4KKworICAgIDxyZWNlaXZlZF9jYW5faWQ+ICYgbWFzayA9PSBjYW5faWQgJiBtYXNrCisKKyAgd2hpY2ggaXMgYW5hbG9nb3VzIHRvIGtub3duIENBTiBjb250cm9sbGVycyBoYXJkd2FyZSBmaWx0ZXIgc2VtYW50aWNzLgorICBUaGUgZmlsdGVyIGNhbiBiZSBpbnZlcnRlZCBpbiB0aGlzIHNlbWFudGljLCB3aGVuIHRoZSBDQU5fSU5WX0ZJTFRFUgorICBiaXQgaXMgc2V0IGluIGNhbl9pZCBlbGVtZW50IG9mIHRoZSBjYW5fZmlsdGVyIHN0cnVjdHVyZS4gSW4KKyAgY29udHJhc3QgdG8gQ0FOIGNvbnRyb2xsZXIgaGFyZHdhcmUgZmlsdGVycyB0aGUgdXNlciBtYXkgc2V0IDAgLi4gbgorICByZWNlaXZlIGZpbHRlcnMgZm9yIGVhY2ggb3BlbiBzb2NrZXQgc2VwYXJhdGVseToKKworICAgIHN0cnVjdCBjYW5fZmlsdGVyIHJmaWx0ZXJbMl07CisKKyAgICByZmlsdGVyWzBdLmNhbl9pZCAgID0gMHgxMjM7CisgICAgcmZpbHRlclswXS5jYW5fbWFzayA9IENBTl9TRkZfTUFTSzsKKyAgICByZmlsdGVyWzFdLmNhbl9pZCAgID0gMHgyMDA7CisgICAgcmZpbHRlclsxXS5jYW5fbWFzayA9IDB4NzAwOworCisgICAgc2V0c29ja29wdChzLCBTT0xfQ0FOX1JBVywgQ0FOX1JBV19GSUxURVIsICZyZmlsdGVyLCBzaXplb2YocmZpbHRlcikpOworCisgIFRvIGRpc2FibGUgdGhlIHJlY2VwdGlvbiBvZiBDQU4gZnJhbWVzIG9uIHRoZSBzZWxlY3RlZCBDQU5fUkFXIHNvY2tldDoKKworICAgIHNldHNvY2tvcHQocywgU09MX0NBTl9SQVcsIENBTl9SQVdfRklMVEVSLCBOVUxMLCAwKTsKKworICBUbyBzZXQgdGhlIGZpbHRlcnMgdG8gemVybyBmaWx0ZXJzIGlzIHF1aXRlIG9ic29sZXRlIGFzIHRvIG5vdCByZWFkCisgIGRhdGEgY2F1c2VzIHRoZSByYXcgc29ja2V0IHRvIGRpc2NhcmQgdGhlIHJlY2VpdmVkIENBTiBmcmFtZXMuIEJ1dAorICBoYXZpbmcgdGhpcyAnc2VuZCBvbmx5JyB1c2UtY2FzZSB3ZSBtYXkgcmVtb3ZlIHRoZSByZWNlaXZlIGxpc3QgaW4gdGhlCisgIEtlcm5lbCB0byBzYXZlIGEgbGl0dGxlIChyZWFsbHkgYSB2ZXJ5IGxpdHRsZSEpIENQVSB1c2FnZS4KKworICA0LjEuMS4xIENBTiBmaWx0ZXIgdXNhZ2Ugb3B0aW1pc2F0aW9uCisKKyAgVGhlIENBTiBmaWx0ZXJzIGFyZSBwcm9jZXNzZWQgaW4gcGVyLWRldmljZSBmaWx0ZXIgbGlzdHMgYXQgQ0FOIGZyYW1lCisgIHJlY2VwdGlvbiB0aW1lLiBUbyByZWR1Y2UgdGhlIG51bWJlciBvZiBjaGVja3MgdGhhdCBuZWVkIHRvIGJlIHBlcmZvcm1lZAorICB3aGlsZSB3YWxraW5nIHRocm91Z2ggdGhlIGZpbHRlciBsaXN0cyB0aGUgQ0FOIGNvcmUgcHJvdmlkZXMgYW4gb3B0aW1pemVkCisgIGZpbHRlciBoYW5kbGluZyB3aGVuIHRoZSBmaWx0ZXIgc3Vic2NyaXB0aW9uIGZvY3Vzc2VzIG9uIGEgc2luZ2xlIENBTiBJRC4KKworICBGb3IgdGhlIHBvc3NpYmxlIDIwNDggU0ZGIENBTiBpZGVudGlmaWVycyB0aGUgaWRlbnRpZmllciBpcyB1c2VkIGFzIGFuIGluZGV4CisgIHRvIGFjY2VzcyB0aGUgY29ycmVzcG9uZGluZyBzdWJzY3JpcHRpb24gbGlzdCB3aXRob3V0IGFueSBmdXJ0aGVyIGNoZWNrcy4KKyAgRm9yIHRoZSAyXjI5IHBvc3NpYmxlIEVGRiBDQU4gaWRlbnRpZmllcnMgYSAxMCBiaXQgWE9SIGZvbGRpbmcgaXMgdXNlZCBhcworICBoYXNoIGZ1bmN0aW9uIHRvIHJldHJpZXZlIHRoZSBFRkYgdGFibGUgaW5kZXguCisKKyAgVG8gYmVuZWZpdCBmcm9tIHRoZSBvcHRpbWl6ZWQgZmlsdGVycyBmb3Igc2luZ2xlIENBTiBpZGVudGlmaWVycyB0aGUKKyAgQ0FOX1NGRl9NQVNLIG9yIENBTl9FRkZfTUFTSyBoYXZlIHRvIGJlIHNldCBpbnRvIGNhbl9maWx0ZXIubWFzayB0b2dldGhlcgorICB3aXRoIHNldCBDQU5fRUZGX0ZMQUcgYW5kIENBTl9SVFJfRkxBRyBiaXRzLiBBIHNldCBDQU5fRUZGX0ZMQUcgYml0IGluIHRoZQorICBjYW5fZmlsdGVyLm1hc2sgbWFrZXMgY2xlYXIgdGhhdCBpdCBtYXR0ZXJzIHdoZXRoZXIgYSBTRkYgb3IgRUZGIENBTiBJRCBpcworICBzdWJzY3JpYmVkLiBFLmcuIGluIHRoZSBleGFtcGxlIGZyb20gYWJvdmUKKworICAgIHJmaWx0ZXJbMF0uY2FuX2lkICAgPSAweDEyMzsKKyAgICByZmlsdGVyWzBdLmNhbl9tYXNrID0gQ0FOX1NGRl9NQVNLOworCisgIGJvdGggU0ZGIGZyYW1lcyB3aXRoIENBTiBJRCAweDEyMyBhbmQgRUZGIGZyYW1lcyB3aXRoIDB4WFhYWFgxMjMgY2FuIHBhc3MuCisKKyAgVG8gZmlsdGVyIGZvciBvbmx5IDB4MTIzIChTRkYpIGFuZCAweDEyMzQ1Njc4IChFRkYpIENBTiBpZGVudGlmaWVycyB0aGUKKyAgZmlsdGVyIGhhcyB0byBiZSBkZWZpbmVkIGluIHRoaXMgd2F5IHRvIGJlbmVmaXQgZnJvbSB0aGUgb3B0aW1pemVkIGZpbHRlcnM6CisKKyAgICBzdHJ1Y3QgY2FuX2ZpbHRlciByZmlsdGVyWzJdOworCisgICAgcmZpbHRlclswXS5jYW5faWQgICA9IDB4MTIzOworICAgIHJmaWx0ZXJbMF0uY2FuX21hc2sgPSAoQ0FOX0VGRl9GTEFHIHwgQ0FOX1JUUl9GTEFHIHwgQ0FOX1NGRl9NQVNLKTsKKyAgICByZmlsdGVyWzFdLmNhbl9pZCAgID0gMHgxMjM0NTY3OCB8IENBTl9FRkZfRkxBRzsKKyAgICByZmlsdGVyWzFdLmNhbl9tYXNrID0gKENBTl9FRkZfRkxBRyB8IENBTl9SVFJfRkxBRyB8IENBTl9FRkZfTUFTSyk7CisKKyAgICBzZXRzb2Nrb3B0KHMsIFNPTF9DQU5fUkFXLCBDQU5fUkFXX0ZJTFRFUiwgJnJmaWx0ZXIsIHNpemVvZihyZmlsdGVyKSk7CisKKyAgNC4xLjIgUkFXIHNvY2tldCBvcHRpb24gQ0FOX1JBV19FUlJfRklMVEVSCisKKyAgQXMgZGVzY3JpYmVkIGluIGNoYXB0ZXIgMy4zIHRoZSBDQU4gaW50ZXJmYWNlIGRyaXZlciBjYW4gZ2VuZXJhdGUgc28KKyAgY2FsbGVkIEVycm9yIE1lc3NhZ2UgRnJhbWVzIHRoYXQgY2FuIG9wdGlvbmFsbHkgYmUgcGFzc2VkIHRvIHRoZSB1c2VyCisgIGFwcGxpY2F0aW9uIGluIHRoZSBzYW1lIHdheSBhcyBvdGhlciBDQU4gZnJhbWVzLiBUaGUgcG9zc2libGUKKyAgZXJyb3JzIGFyZSBkaXZpZGVkIGludG8gZGlmZmVyZW50IGVycm9yIGNsYXNzZXMgdGhhdCBtYXkgYmUgZmlsdGVyZWQKKyAgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIGVycm9yIG1hc2suIFRvIHJlZ2lzdGVyIGZvciBldmVyeSBwb3NzaWJsZQorICBlcnJvciBjb25kaXRpb24gQ0FOX0VSUl9NQVNLIGNhbiBiZSB1c2VkIGFzIHZhbHVlIGZvciB0aGUgZXJyb3IgbWFzay4KKyAgVGhlIHZhbHVlcyBmb3IgdGhlIGVycm9yIG1hc2sgYXJlIGRlZmluZWQgaW4gbGludXgvY2FuL2Vycm9yLmggLgorCisgICAgY2FuX2Vycl9tYXNrX3QgZXJyX21hc2sgPSAoIENBTl9FUlJfVFhfVElNRU9VVCB8IENBTl9FUlJfQlVTT0ZGICk7CisKKyAgICBzZXRzb2Nrb3B0KHMsIFNPTF9DQU5fUkFXLCBDQU5fUkFXX0VSUl9GSUxURVIsCisgICAgICAgICAgICAgICAmZXJyX21hc2ssIHNpemVvZihlcnJfbWFzaykpOworCisgIDQuMS4zIFJBVyBzb2NrZXQgb3B0aW9uIENBTl9SQVdfTE9PUEJBQ0sKKworICBUbyBtZWV0IG11bHRpIHVzZXIgbmVlZHMgdGhlIGxvY2FsIGxvb3BiYWNrIGlzIGVuYWJsZWQgYnkgZGVmYXVsdAorICAoc2VlIGNoYXB0ZXIgMy4yIGZvciBkZXRhaWxzKS4gQnV0IGluIHNvbWUgZW1iZWRkZWQgdXNlLWNhc2VzCisgIChlLmcuIHdoZW4gb25seSBvbmUgYXBwbGljYXRpb24gdXNlcyB0aGUgQ0FOIGJ1cykgdGhpcyBsb29wYmFjaworICBmdW5jdGlvbmFsaXR5IGNhbiBiZSBkaXNhYmxlZCAoc2VwYXJhdGVseSBmb3IgZWFjaCBzb2NrZXQpOgorCisgICAgaW50IGxvb3BiYWNrID0gMDsgLyogMCA9IGRpc2FibGVkLCAxID0gZW5hYmxlZCAoZGVmYXVsdCkgKi8KKworICAgIHNldHNvY2tvcHQocywgU09MX0NBTl9SQVcsIENBTl9SQVdfTE9PUEJBQ0ssICZsb29wYmFjaywgc2l6ZW9mKGxvb3BiYWNrKSk7CisKKyAgNC4xLjQgUkFXIHNvY2tldCBvcHRpb24gQ0FOX1JBV19SRUNWX09XTl9NU0dTCisKKyAgV2hlbiB0aGUgbG9jYWwgbG9vcGJhY2sgaXMgZW5hYmxlZCwgYWxsIHRoZSBzZW50IENBTiBmcmFtZXMgYXJlCisgIGxvb3BlZCBiYWNrIHRvIHRoZSBvcGVuIENBTiBzb2NrZXRzIHRoYXQgcmVnaXN0ZXJlZCBmb3IgdGhlIENBTgorICBmcmFtZXMnIENBTi1JRCBvbiB0aGlzIGdpdmVuIGludGVyZmFjZSB0byBtZWV0IHRoZSBtdWx0aSB1c2VyCisgIG5lZWRzLiBUaGUgcmVjZXB0aW9uIG9mIHRoZSBDQU4gZnJhbWVzIG9uIHRoZSBzYW1lIHNvY2tldCB0aGF0IHdhcworICBzZW5kaW5nIHRoZSBDQU4gZnJhbWUgaXMgYXNzdW1lZCB0byBiZSB1bndhbnRlZCBhbmQgdGhlcmVmb3JlCisgIGRpc2FibGVkIGJ5IGRlZmF1bHQuIFRoaXMgZGVmYXVsdCBiZWhhdmlvdXIgbWF5IGJlIGNoYW5nZWQgb24KKyAgZGVtYW5kOgorCisgICAgaW50IHJlY3Zfb3duX21zZ3MgPSAxOyAvKiAwID0gZGlzYWJsZWQgKGRlZmF1bHQpLCAxID0gZW5hYmxlZCAqLworCisgICAgc2V0c29ja29wdChzLCBTT0xfQ0FOX1JBVywgQ0FOX1JBV19SRUNWX09XTl9NU0dTLAorICAgICAgICAgICAgICAgJnJlY3Zfb3duX21zZ3MsIHNpemVvZihyZWN2X293bl9tc2dzKSk7CisKKyAgNC4xLjUgUkFXIHNvY2tldCBvcHRpb24gQ0FOX1JBV19GRF9GUkFNRVMKKworICBDQU4gRkQgc3VwcG9ydCBpbiBDQU5fUkFXIHNvY2tldHMgY2FuIGJlIGVuYWJsZWQgd2l0aCBhIG5ldyBzb2NrZXQgb3B0aW9uCisgIENBTl9SQVdfRkRfRlJBTUVTIHdoaWNoIGlzIG9mZiBieSBkZWZhdWx0LiBXaGVuIHRoZSBuZXcgc29ja2V0IG9wdGlvbiBpcworICBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBDQU5fUkFXIHNvY2tldCAoZS5nLiBvbiBvbGRlciBrZXJuZWxzKSwgc3dpdGNoaW5nIHRoZQorICBDQU5fUkFXX0ZEX0ZSQU1FUyBvcHRpb24gcmV0dXJucyB0aGUgZXJyb3IgLUVOT1BST1RPT1BULgorCisgIE9uY2UgQ0FOX1JBV19GRF9GUkFNRVMgaXMgZW5hYmxlZCB0aGUgYXBwbGljYXRpb24gY2FuIHNlbmQgYm90aCBDQU4gZnJhbWVzCisgIGFuZCBDQU4gRkQgZnJhbWVzLiBPVE9IIHRoZSBhcHBsaWNhdGlvbiBoYXMgdG8gaGFuZGxlIENBTiBhbmQgQ0FOIEZEIGZyYW1lcworICB3aGVuIHJlYWRpbmcgZnJvbSB0aGUgc29ja2V0LgorCisgICAgQ0FOX1JBV19GRF9GUkFNRVMgZW5hYmxlZDogIENBTl9NVFUgYW5kIENBTkZEX01UVSBhcmUgYWxsb3dlZAorICAgIENBTl9SQVdfRkRfRlJBTUVTIGRpc2FibGVkOiBvbmx5IENBTl9NVFUgaXMgYWxsb3dlZCAoZGVmYXVsdCkKKworICBFeGFtcGxlOgorICAgIFsgcmVtZW1iZXI6IENBTkZEX01UVSA9PSBzaXplb2Yoc3RydWN0IGNhbmZkX2ZyYW1lKSBdCisKKyAgICBzdHJ1Y3QgY2FuZmRfZnJhbWUgY2ZkOworCisgICAgbmJ5dGVzID0gcmVhZChzLCAmY2ZkLCBDQU5GRF9NVFUpOworCisgICAgaWYgKG5ieXRlcyA9PSBDQU5GRF9NVFUpIHsKKyAgICAgICAgICAgIHByaW50ZigiZ290IENBTiBGRCBmcmFtZSB3aXRoIGxlbmd0aCAlZFxuIiwgY2ZkLmxlbik7CisJICAgIC8qIGNmZC5mbGFncyBjb250YWlucyB2YWxpZCBkYXRhICovCisgICAgfSBlbHNlIGlmIChuYnl0ZXMgPT0gQ0FOX01UVSkgeworICAgICAgICAgICAgcHJpbnRmKCJnb3QgbGVnYWN5IENBTiBmcmFtZSB3aXRoIGxlbmd0aCAlZFxuIiwgY2ZkLmxlbik7CisJICAgIC8qIGNmZC5mbGFncyBpcyB1bmRlZmluZWQgKi8KKyAgICB9IGVsc2UgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJyZWFkOiBpbnZhbGlkIENBTihGRCkgZnJhbWVcbiIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgLyogdGhlIGNvbnRlbnQgY2FuIGJlIGhhbmRsZWQgaW5kZXBlbmRlbnRseSBmcm9tIHRoZSByZWNlaXZlZCBNVFUgc2l6ZSAqLworCisgICAgcHJpbnRmKCJjYW5faWQ6ICVYIGRhdGEgbGVuZ3RoOiAlZCBkYXRhOiAiLCBjZmQuY2FuX2lkLCBjZmQubGVuKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgY2ZkLmxlbjsgaSsrKQorICAgICAgICAgICAgcHJpbnRmKCIlMDJYICIsIGNmZC5kYXRhW2ldKTsKKworICBXaGVuIHJlYWRpbmcgd2l0aCBzaXplIENBTkZEX01UVSBvbmx5IHJldHVybnMgQ0FOX01UVSBieXRlcyB0aGF0IGhhdmUKKyAgYmVlbiByZWNlaXZlZCBmcm9tIHRoZSBzb2NrZXQgYSBsZWdhY3kgQ0FOIGZyYW1lIGhhcyBiZWVuIHJlYWQgaW50byB0aGUKKyAgcHJvdmlkZWQgQ0FOIEZEIHN0cnVjdHVyZS4gTm90ZSB0aGF0IHRoZSBjYW5mZF9mcmFtZS5mbGFncyBkYXRhIGZpZWxkIGlzCisgIG5vdCBzcGVjaWZpZWQgaW4gdGhlIHN0cnVjdCBjYW5fZnJhbWUgYW5kIHRoZXJlZm9yZSBpdCBpcyBvbmx5IHZhbGlkIGluCisgIENBTkZEX01UVSBzaXplZCBDQU4gRkQgZnJhbWVzLgorCisgIEltcGxlbWVudGF0aW9uIGhpbnQgZm9yIG5ldyBDQU4gYXBwbGljYXRpb25zOgorCisgIFRvIGJ1aWxkIGEgQ0FOIEZEIGF3YXJlIGFwcGxpY2F0aW9uIHVzZSBzdHJ1Y3QgY2FuZmRfZnJhbWUgYXMgYmFzaWMgQ0FOCisgIGRhdGEgc3RydWN0dXJlIGZvciBDQU5fUkFXIGJhc2VkIGFwcGxpY2F0aW9ucy4gV2hlbiB0aGUgYXBwbGljYXRpb24gaXMKKyAgZXhlY3V0ZWQgb24gYW4gb2xkZXIgTGludXgga2VybmVsIGFuZCBzd2l0Y2hpbmcgdGhlIENBTl9SQVdfRkRfRlJBTUVTCisgIHNvY2tldCBvcHRpb24gcmV0dXJucyBhbiBlcnJvcjogTm8gcHJvYmxlbS4gWW91J2xsIGdldCBsZWdhY3kgQ0FOIGZyYW1lcworICBvciBDQU4gRkQgZnJhbWVzIGFuZCBjYW4gcHJvY2VzcyB0aGVtIHRoZSBzYW1lIHdheS4KKworICBXaGVuIHNlbmRpbmcgdG8gQ0FOIGRldmljZXMgbWFrZSBzdXJlIHRoYXQgdGhlIGRldmljZSBpcyBjYXBhYmxlIHRvIGhhbmRsZQorICBDQU4gRkQgZnJhbWVzIGJ5IGNoZWNraW5nIGlmIHRoZSBkZXZpY2UgbWF4aW11bSB0cmFuc2ZlciB1bml0IGlzIENBTkZEX01UVS4KKyAgVGhlIENBTiBkZXZpY2UgTVRVIGNhbiBiZSByZXRyaWV2ZWQgZS5nLiB3aXRoIGEgU0lPQ0dJRk1UVSBpb2N0bCgpIHN5c2NhbGwuCisKKyAgNC4xLjYgUkFXIHNvY2tldCBvcHRpb24gQ0FOX1JBV19KT0lOX0ZJTFRFUlMKKworICBUaGUgQ0FOX1JBVyBzb2NrZXQgY2FuIHNldCBtdWx0aXBsZSBDQU4gaWRlbnRpZmllciBzcGVjaWZpYyBmaWx0ZXJzIHRoYXQKKyAgbGVhZCB0byBtdWx0aXBsZSBmaWx0ZXJzIGluIHRoZSBhZl9jYW4uYyBmaWx0ZXIgcHJvY2Vzc2luZy4gVGhlc2UgZmlsdGVycworICBhcmUgaW5kZW5wZW5kZW50IGZyb20gZWFjaCBvdGhlciB3aGljaCBsZWFkcyB0byBsb2dpY2FsIE9SJ2VkIGZpbHRlcnMgd2hlbgorICBhcHBsaWVkIChzZWUgNC4xLjEpLgorCisgIFRoaXMgc29ja2V0IG9wdGlvbiBqb2luZXMgdGhlIGdpdmVuIENBTiBmaWx0ZXJzIGluIHRoZSB3YXkgdGhhdCBvbmx5IENBTgorICBmcmFtZXMgYXJlIHBhc3NlZCB0byB1c2VyIHNwYWNlIHRoYXQgbWF0Y2hlZCAqYWxsKiBnaXZlbiBDQU4gZmlsdGVycy4gVGhlCisgIHNlbWFudGljIGZvciB0aGUgYXBwbGllZCBmaWx0ZXJzIGlzIHRoZXJlZm9yZSBjaGFuZ2VkIHRvIGEgbG9naWNhbCBBTkQuCisKKyAgVGhpcyBpcyB1c2VmdWwgZXNwZWNpYWxseSB3aGVuIHRoZSBmaWx0ZXJzZXQgaXMgYSBjb21iaW5hdGlvbiBvZiBmaWx0ZXJzCisgIHdoZXJlIHRoZSBDQU5fSU5WX0ZJTFRFUiBmbGFnIGlzIHNldCBpbiBvcmRlciB0byBub3RjaCBzaW5nbGUgQ0FOIElEcyBvcgorICBDQU4gSUQgcmFuZ2VzIGZyb20gdGhlIGluY29taW5nIHRyYWZmaWMuCisKKyAgNC4xLjcgUkFXIHNvY2tldCByZXR1cm5lZCBtZXNzYWdlIGZsYWdzCisKKyAgV2hlbiB1c2luZyByZWN2bXNnKCkgY2FsbCwgdGhlIG1zZy0+bXNnX2ZsYWdzIG1heSBjb250YWluIGZvbGxvd2luZyBmbGFnczoKKworICAgIE1TR19ET05UUk9VVEU6IHNldCB3aGVuIHRoZSByZWNlaXZlZCBmcmFtZSB3YXMgY3JlYXRlZCBvbiB0aGUgbG9jYWwgaG9zdC4KKworICAgIE1TR19DT05GSVJNOiBzZXQgd2hlbiB0aGUgZnJhbWUgd2FzIHNlbnQgdmlhIHRoZSBzb2NrZXQgaXQgaXMgcmVjZWl2ZWQgb24uCisgICAgICBUaGlzIGZsYWcgY2FuIGJlIGludGVycHJldGVkIGFzIGEgJ3RyYW5zbWlzc2lvbiBjb25maXJtYXRpb24nIHdoZW4gdGhlCisgICAgICBDQU4gZHJpdmVyIHN1cHBvcnRzIHRoZSBlY2hvIG9mIGZyYW1lcyBvbiBkcml2ZXIgbGV2ZWwsIHNlZSAzLjIgYW5kIDYuMi4KKyAgICAgIEluIG9yZGVyIHRvIHJlY2VpdmUgc3VjaCBtZXNzYWdlcywgQ0FOX1JBV19SRUNWX09XTl9NU0dTIG11c3QgYmUgc2V0LgorCisgIDQuMiBCcm9hZGNhc3QgTWFuYWdlciBwcm90b2NvbCBzb2NrZXRzIChTT0NLX0RHUkFNKQorCisgIFRoZSBCcm9hZGNhc3QgTWFuYWdlciBwcm90b2NvbCBwcm92aWRlcyBhIGNvbW1hbmQgYmFzZWQgY29uZmlndXJhdGlvbgorICBpbnRlcmZhY2UgdG8gZmlsdGVyIGFuZCBzZW5kIChlLmcuIGN5Y2xpYykgQ0FOIG1lc3NhZ2VzIGluIGtlcm5lbCBzcGFjZS4KKworICBSZWNlaXZlIGZpbHRlcnMgY2FuIGJlIHVzZWQgdG8gZG93biBzYW1wbGUgZnJlcXVlbnQgbWVzc2FnZXM7IGRldGVjdCBldmVudHMKKyAgc3VjaCBhcyBtZXNzYWdlIGNvbnRlbnRzIGNoYW5nZXMsIHBhY2tldCBsZW5ndGggY2hhbmdlcywgYW5kIGRvIHRpbWUtb3V0CisgIG1vbml0b3Jpbmcgb2YgcmVjZWl2ZWQgbWVzc2FnZXMuCisKKyAgUGVyaW9kaWMgdHJhbnNtaXNzaW9uIHRhc2tzIG9mIENBTiBmcmFtZXMgb3IgYSBzZXF1ZW5jZSBvZiBDQU4gZnJhbWVzIGNhbiBiZQorICBjcmVhdGVkIGFuZCBtb2RpZmllZCBhdCBydW50aW1lOyBib3RoIHRoZSBtZXNzYWdlIGNvbnRlbnQgYW5kIHRoZSB0d28KKyAgcG9zc2libGUgdHJhbnNtaXQgaW50ZXJ2YWxzIGNhbiBiZSBhbHRlcmVkLgorCisgIEEgQkNNIHNvY2tldCBpcyBub3QgaW50ZW5kZWQgZm9yIHNlbmRpbmcgaW5kaXZpZHVhbCBDQU4gZnJhbWVzIHVzaW5nIHRoZQorICBzdHJ1Y3QgY2FuX2ZyYW1lIGFzIGtub3duIGZyb20gdGhlIENBTl9SQVcgc29ja2V0LiBJbnN0ZWFkIGEgc3BlY2lhbCBCQ00KKyAgY29uZmlndXJhdGlvbiBtZXNzYWdlIGlzIGRlZmluZWQuIFRoZSBiYXNpYyBCQ00gY29uZmlndXJhdGlvbiBtZXNzYWdlIHVzZWQKKyAgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgYnJvYWRjYXN0IG1hbmFnZXIgYW5kIHRoZSBhdmFpbGFibGUgb3BlcmF0aW9ucyBhcmUKKyAgZGVmaW5lZCBpbiB0aGUgbGludXgvY2FuL2JjbS5oIGluY2x1ZGUuIFRoZSBCQ00gbWVzc2FnZSBjb25zaXN0cyBvZiBhCisgIG1lc3NhZ2UgaGVhZGVyIHdpdGggYSBjb21tYW5kICgnb3Bjb2RlJykgZm9sbG93ZWQgYnkgemVybyBvciBtb3JlIENBTiBmcmFtZXMuCisgIFRoZSBicm9hZGNhc3QgbWFuYWdlciBzZW5kcyByZXNwb25zZXMgdG8gdXNlciBzcGFjZSBpbiB0aGUgc2FtZSBmb3JtOgorCisgICAgc3RydWN0IGJjbV9tc2dfaGVhZCB7CisgICAgICAgICAgICBfX3UzMiBvcGNvZGU7ICAgICAgICAgICAgICAgICAgIC8qIGNvbW1hbmQgKi8KKyAgICAgICAgICAgIF9fdTMyIGZsYWdzOyAgICAgICAgICAgICAgICAgICAgLyogc3BlY2lhbCBmbGFncyAqLworICAgICAgICAgICAgX191MzIgY291bnQ7ICAgICAgICAgICAgICAgICAgICAvKiBydW4gJ2NvdW50JyB0aW1lcyB3aXRoIGl2YWwxICovCisgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCBpdmFsMSwgaXZhbDI7ICAgIC8qIGNvdW50IGFuZCBzdWJzZXF1ZW50IGludGVydmFsICovCisgICAgICAgICAgICBjYW5pZF90IGNhbl9pZDsgICAgICAgICAgICAgICAgIC8qIHVuaXF1ZSBjYW5faWQgZm9yIHRhc2sgKi8KKyAgICAgICAgICAgIF9fdTMyIG5mcmFtZXM7ICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGNhbl9mcmFtZXMgZm9sbG93aW5nICovCisgICAgICAgICAgICBzdHJ1Y3QgY2FuX2ZyYW1lIGZyYW1lc1swXTsKKyAgICB9OworCisgIFRoZSBhbGlnbmVkIHBheWxvYWQgJ2ZyYW1lcycgdXNlcyB0aGUgc2FtZSBiYXNpYyBDQU4gZnJhbWUgc3RydWN0dXJlIGRlZmluZWQKKyAgYXQgdGhlIGJlZ2lubmluZyBvZiBzZWN0aW9uIDQgYW5kIGluIHRoZSBpbmNsdWRlL2xpbnV4L2Nhbi5oIGluY2x1ZGUuIEFsbAorICBtZXNzYWdlcyB0byB0aGUgYnJvYWRjYXN0IG1hbmFnZXIgZnJvbSB1c2VyIHNwYWNlIGhhdmUgdGhpcyBzdHJ1Y3R1cmUuCisKKyAgTm90ZSBhIENBTl9CQ00gc29ja2V0IG11c3QgYmUgY29ubmVjdGVkIGluc3RlYWQgb2YgYm91bmQgYWZ0ZXIgc29ja2V0CisgIGNyZWF0aW9uIChleGFtcGxlIHdpdGhvdXQgZXJyb3IgY2hlY2tpbmcpOgorCisgICAgaW50IHM7CisgICAgc3RydWN0IHNvY2thZGRyX2NhbiBhZGRyOworICAgIHN0cnVjdCBpZnJlcSBpZnI7CisKKyAgICBzID0gc29ja2V0KFBGX0NBTiwgU09DS19ER1JBTSwgQ0FOX0JDTSk7CisKKyAgICBzdHJjcHkoaWZyLmlmcl9uYW1lLCAiY2FuMCIpOworICAgIGlvY3RsKHMsIFNJT0NHSUZJTkRFWCwgJmlmcik7CisKKyAgICBhZGRyLmNhbl9mYW1pbHkgPSBBRl9DQU47CisgICAgYWRkci5jYW5faWZpbmRleCA9IGlmci5pZnJfaWZpbmRleDsKKworICAgIGNvbm5lY3QocywgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLCBzaXplb2YoYWRkcikpOworCisgICAgKC4uKQorCisgIFRoZSBicm9hZGNhc3QgbWFuYWdlciBzb2NrZXQgaXMgYWJsZSB0byBoYW5kbGUgYW55IG51bWJlciBvZiBpbiBmbGlnaHQKKyAgdHJhbnNtaXNzaW9ucyBvciByZWNlaXZlIGZpbHRlcnMgY29uY3VycmVudGx5LiBUaGUgZGlmZmVyZW50IFJYL1RYIGpvYnMgYXJlCisgIGRpc3Rpbmd1aXNoZWQgYnkgdGhlIHVuaXF1ZSBjYW5faWQgaW4gZWFjaCBCQ00gbWVzc2FnZS4gSG93ZXZlciBhZGRpdGlvbmFsCisgIENBTl9CQ00gc29ja2V0cyBhcmUgcmVjb21tZW5kZWQgdG8gY29tbXVuaWNhdGUgb24gbXVsdGlwbGUgQ0FOIGludGVyZmFjZXMuCisgIFdoZW4gdGhlIGJyb2FkY2FzdCBtYW5hZ2VyIHNvY2tldCBpcyBib3VuZCB0byAnYW55JyBDQU4gaW50ZXJmYWNlICg9PiB0aGUKKyAgaW50ZXJmYWNlIGluZGV4IGlzIHNldCB0byB6ZXJvKSB0aGUgY29uZmlndXJlZCByZWNlaXZlIGZpbHRlcnMgYXBwbHkgdG8gYW55CisgIENBTiBpbnRlcmZhY2UgdW5sZXNzIHRoZSBzZW5kdG8oKSBzeXNjYWxsIGlzIHVzZWQgdG8gb3ZlcnJ1bGUgdGhlICdhbnknIENBTgorICBpbnRlcmZhY2UgaW5kZXguIFdoZW4gdXNpbmcgcmVjdmZyb20oKSBpbnN0ZWFkIG9mIHJlYWQoKSB0byByZXRyaWV2ZSBCQ00KKyAgc29ja2V0IG1lc3NhZ2VzIHRoZSBvcmlnaW5hdGluZyBDQU4gaW50ZXJmYWNlIGlzIHByb3ZpZGVkIGluIGNhbl9pZmluZGV4LgorCisgIDQuMi4xIEJyb2FkY2FzdCBNYW5hZ2VyIG9wZXJhdGlvbnMKKworICBUaGUgb3Bjb2RlIGRlZmluZXMgdGhlIG9wZXJhdGlvbiBmb3IgdGhlIGJyb2FkY2FzdCBtYW5hZ2VyIHRvIGNhcnJ5IG91dCwKKyAgb3IgZGV0YWlscyB0aGUgYnJvYWRjYXN0IG1hbmFnZXJzIHJlc3BvbnNlIHRvIHNldmVyYWwgZXZlbnRzLCBpbmNsdWRpbmcKKyAgdXNlciByZXF1ZXN0cy4KKworICBUcmFuc21pdCBPcGVyYXRpb25zICh1c2VyIHNwYWNlIHRvIGJyb2FkY2FzdCBtYW5hZ2VyKToKKworICAgIFRYX1NFVFVQOiAgIENyZWF0ZSAoY3ljbGljKSB0cmFuc21pc3Npb24gdGFzay4KKworICAgIFRYX0RFTEVURTogIFJlbW92ZSAoY3ljbGljKSB0cmFuc21pc3Npb24gdGFzaywgcmVxdWlyZXMgb25seSBjYW5faWQuCisKKyAgICBUWF9SRUFEOiAgICBSZWFkIHByb3BlcnRpZXMgb2YgKGN5Y2xpYykgdHJhbnNtaXNzaW9uIHRhc2sgZm9yIGNhbl9pZC4KKworICAgIFRYX1NFTkQ6ICAgIFNlbmQgb25lIENBTiBmcmFtZS4KKworICBUcmFuc21pdCBSZXNwb25zZXMgKGJyb2FkY2FzdCBtYW5hZ2VyIHRvIHVzZXIgc3BhY2UpOgorCisgICAgVFhfU1RBVFVTOiAgUmVwbHkgdG8gVFhfUkVBRCByZXF1ZXN0ICh0cmFuc21pc3Npb24gdGFzayBjb25maWd1cmF0aW9uKS4KKworICAgIFRYX0VYUElSRUQ6IE5vdGlmaWNhdGlvbiB3aGVuIGNvdW50ZXIgZmluaXNoZXMgc2VuZGluZyBhdCBpbml0aWFsIGludGVydmFsCisgICAgICAnaXZhbDEnLiBSZXF1aXJlcyB0aGUgVFhfQ09VTlRFVlQgZmxhZyB0byBiZSBzZXQgYXQgVFhfU0VUVVAuCisKKyAgUmVjZWl2ZSBPcGVyYXRpb25zICh1c2VyIHNwYWNlIHRvIGJyb2FkY2FzdCBtYW5hZ2VyKToKKworICAgIFJYX1NFVFVQOiAgIENyZWF0ZSBSWCBjb250ZW50IGZpbHRlciBzdWJzY3JpcHRpb24uCisKKyAgICBSWF9ERUxFVEU6ICBSZW1vdmUgUlggY29udGVudCBmaWx0ZXIgc3Vic2NyaXB0aW9uLCByZXF1aXJlcyBvbmx5IGNhbl9pZC4KKworICAgIFJYX1JFQUQ6ICAgIFJlYWQgcHJvcGVydGllcyBvZiBSWCBjb250ZW50IGZpbHRlciBzdWJzY3JpcHRpb24gZm9yIGNhbl9pZC4KKworICBSZWNlaXZlIFJlc3BvbnNlcyAoYnJvYWRjYXN0IG1hbmFnZXIgdG8gdXNlciBzcGFjZSk6CisKKyAgICBSWF9TVEFUVVM6ICBSZXBseSB0byBSWF9SRUFEIHJlcXVlc3QgKGZpbHRlciB0YXNrIGNvbmZpZ3VyYXRpb24pLgorCisgICAgUlhfVElNRU9VVDogQ3ljbGljIG1lc3NhZ2UgaXMgZGV0ZWN0ZWQgdG8gYmUgYWJzZW50ICh0aW1lciBpdmFsMSBleHBpcmVkKS4KKworICAgIFJYX0NIQU5HRUQ6IEJDTSBtZXNzYWdlIHdpdGggdXBkYXRlZCBDQU4gZnJhbWUgKGRldGVjdGVkIGNvbnRlbnQgY2hhbmdlKS4KKyAgICAgIFNlbnQgb24gZmlyc3QgbWVzc2FnZSByZWNlaXZlZCBvciBvbiByZWNlaXB0IG9mIHJldmlzZWQgQ0FOIG1lc3NhZ2VzLgorCisgIDQuMi4yIEJyb2FkY2FzdCBNYW5hZ2VyIG1lc3NhZ2UgZmxhZ3MKKworICBXaGVuIHNlbmRpbmcgYSBtZXNzYWdlIHRvIHRoZSBicm9hZGNhc3QgbWFuYWdlciB0aGUgJ2ZsYWdzJyBlbGVtZW50IG1heQorICBjb250YWluIHRoZSBmb2xsb3dpbmcgZmxhZyBkZWZpbml0aW9ucyB3aGljaCBpbmZsdWVuY2UgdGhlIGJlaGF2aW91cjoKKworICAgIFNFVFRJTUVSOiAgICAgICAgICAgU2V0IHRoZSB2YWx1ZXMgb2YgaXZhbDEsIGl2YWwyIGFuZCBjb3VudAorCisgICAgU1RBUlRUSU1FUjogICAgICAgICBTdGFydCB0aGUgdGltZXIgd2l0aCB0aGUgYWN0dWFsIHZhbHVlcyBvZiBpdmFsMSwgaXZhbDIKKyAgICAgIGFuZCBjb3VudC4gU3RhcnRpbmcgdGhlIHRpbWVyIGxlYWRzIHNpbXVsdGFuZW91c2x5IHRvIGVtaXQgYSBDQU4gZnJhbWUuCisKKyAgICBUWF9DT1VOVEVWVDogICAgICAgIENyZWF0ZSB0aGUgbWVzc2FnZSBUWF9FWFBJUkVEIHdoZW4gY291bnQgZXhwaXJlcworCisgICAgVFhfQU5OT1VOQ0U6ICAgICAgICBBIGNoYW5nZSBvZiBkYXRhIGJ5IHRoZSBwcm9jZXNzIGlzIGVtaXR0ZWQgaW1tZWRpYXRlbHkuCisKKyAgICBUWF9DUF9DQU5fSUQ6ICAgICAgIENvcGllcyB0aGUgY2FuX2lkIGZyb20gdGhlIG1lc3NhZ2UgaGVhZGVyIHRvIGVhY2gKKyAgICAgIHN1YnNlcXVlbnQgZnJhbWUgaW4gZnJhbWVzLiBUaGlzIGlzIGludGVuZGVkIGFzIHVzYWdlIHNpbXBsaWZpY2F0aW9uLiBGb3IKKyAgICAgIFRYIHRhc2tzIHRoZSB1bmlxdWUgY2FuX2lkIGZyb20gdGhlIG1lc3NhZ2UgaGVhZGVyIG1heSBkaWZmZXIgZnJvbSB0aGUKKyAgICAgIGNhbl9pZChzKSBzdG9yZWQgZm9yIHRyYW5zbWlzc2lvbiBpbiB0aGUgc3Vic2VxdWVudCBzdHJ1Y3QgY2FuX2ZyYW1lKHMpLgorCisgICAgUlhfRklMVEVSX0lEOiAgICAgICBGaWx0ZXIgYnkgY2FuX2lkIGFsb25lLCBubyBmcmFtZXMgcmVxdWlyZWQgKG5mcmFtZXM9MCkuCisKKyAgICBSWF9DSEVDS19ETEM6ICAgICAgIEEgY2hhbmdlIG9mIHRoZSBETEMgbGVhZHMgdG8gYW4gUlhfQ0hBTkdFRC4KKworICAgIFJYX05PX0FVVE9USU1FUjogICAgUHJldmVudCBhdXRvbWF0aWNhbGx5IHN0YXJ0aW5nIHRoZSB0aW1lb3V0IG1vbml0b3IuCisKKyAgICBSWF9BTk5PVU5DRV9SRVNVTUU6IElmIHBhc3NlZCBhdCBSWF9TRVRVUCBhbmQgYSByZWNlaXZlIHRpbWVvdXQgb2NjdXJyZWQsIGEKKyAgICAgIFJYX0NIQU5HRUQgbWVzc2FnZSB3aWxsIGJlIGdlbmVyYXRlZCB3aGVuIHRoZSAoY3ljbGljKSByZWNlaXZlIHJlc3RhcnRzLgorCisgICAgVFhfUkVTRVRfTVVMVElfSURYOiBSZXNldCB0aGUgaW5kZXggZm9yIHRoZSBtdWx0aXBsZSBmcmFtZSB0cmFuc21pc3Npb24uCisKKyAgICBSWF9SVFJfRlJBTUU6ICAgICAgIFNlbmQgcmVwbHkgZm9yIFJUUi1yZXF1ZXN0IChwbGFjZWQgaW4gb3AtPmZyYW1lc1swXSkuCisKKyAgNC4yLjMgQnJvYWRjYXN0IE1hbmFnZXIgdHJhbnNtaXNzaW9uIHRpbWVycworCisgIFBlcmlvZGljIHRyYW5zbWlzc2lvbiBjb25maWd1cmF0aW9ucyBtYXkgdXNlIHVwIHRvIHR3byBpbnRlcnZhbCB0aW1lcnMuCisgIEluIHRoaXMgY2FzZSB0aGUgQkNNIHNlbmRzIGEgbnVtYmVyIG9mIG1lc3NhZ2VzICgnY291bnQnKSBhdCBhbiBpbnRlcnZhbAorICAnaXZhbDEnLCB0aGVuIGNvbnRpbnVpbmcgdG8gc2VuZCBhdCBhbm90aGVyIGdpdmVuIGludGVydmFsICdpdmFsMicuIFdoZW4KKyAgb25seSBvbmUgdGltZXIgaXMgbmVlZGVkICdjb3VudCcgaXMgc2V0IHRvIHplcm8gYW5kIG9ubHkgJ2l2YWwyJyBpcyB1c2VkLgorICBXaGVuIFNFVF9USU1FUiBhbmQgU1RBUlRfVElNRVIgZmxhZyB3ZXJlIHNldCB0aGUgdGltZXJzIGFyZSBhY3RpdmF0ZWQuCisgIFRoZSB0aW1lciB2YWx1ZXMgY2FuIGJlIGFsdGVyZWQgYXQgcnVudGltZSB3aGVuIG9ubHkgU0VUX1RJTUVSIGlzIHNldC4KKworICA0LjIuNCBCcm9hZGNhc3QgTWFuYWdlciBtZXNzYWdlIHNlcXVlbmNlIHRyYW5zbWlzc2lvbgorCisgIFVwIHRvIDI1NiBDQU4gZnJhbWVzIGNhbiBiZSB0cmFuc21pdHRlZCBpbiBhIHNlcXVlbmNlIGluIHRoZSBjYXNlIG9mIGEgY3ljbGljCisgIFRYIHRhc2sgY29uZmlndXJhdGlvbi4gVGhlIG51bWJlciBvZiBDQU4gZnJhbWVzIGlzIHByb3ZpZGVkIGluIHRoZSAnbmZyYW1lcycKKyAgZWxlbWVudCBvZiB0aGUgQkNNIG1lc3NhZ2UgaGVhZC4gVGhlIGRlZmluZWQgbnVtYmVyIG9mIENBTiBmcmFtZXMgYXJlIGFkZGVkCisgIGFzIGFycmF5IHRvIHRoZSBUWF9TRVRVUCBCQ00gY29uZmlndXJhdGlvbiBtZXNzYWdlLgorCisgICAgLyogY3JlYXRlIGEgc3RydWN0IHRvIHNldCB1cCBhIHNlcXVlbmNlIG9mIGZvdXIgQ0FOIGZyYW1lcyAqLworICAgIHN0cnVjdCB7CisgICAgICAgICAgICBzdHJ1Y3QgYmNtX21zZ19oZWFkIG1zZ19oZWFkOworICAgICAgICAgICAgc3RydWN0IGNhbl9mcmFtZSBmcmFtZVs0XTsKKyAgICB9IG15dHhtc2c7CisKKyAgICAoLi4pCisgICAgbXl0eG1zZy5uZnJhbWVzID0gNDsKKyAgICAoLi4pCisKKyAgICB3cml0ZShzLCAmbXl0eG1zZywgc2l6ZW9mKG15dHhtc2cpKTsKKworICBXaXRoIGV2ZXJ5IHRyYW5zbWlzc2lvbiB0aGUgaW5kZXggaW4gdGhlIGFycmF5IG9mIENBTiBmcmFtZXMgaXMgaW5jcmVhc2VkCisgIGFuZCBzZXQgdG8gemVybyBhdCBpbmRleCBvdmVyZmxvdy4KKworICA0LjIuNSBCcm9hZGNhc3QgTWFuYWdlciByZWNlaXZlIGZpbHRlciB0aW1lcnMKKworICBUaGUgdGltZXIgdmFsdWVzIGl2YWwxIG9yIGl2YWwyIG1heSBiZSBzZXQgdG8gbm9uLXplcm8gdmFsdWVzIGF0IFJYX1NFVFVQLgorICBXaGVuIHRoZSBTRVRfVElNRVIgZmxhZyBpcyBzZXQgdGhlIHRpbWVycyBhcmUgZW5hYmxlZDoKKworICBpdmFsMTogU2VuZCBSWF9USU1FT1VUIHdoZW4gYSByZWNlaXZlZCBtZXNzYWdlIGlzIG5vdCByZWNlaXZlZCBhZ2FpbiB3aXRoaW4KKyAgICB0aGUgZ2l2ZW4gdGltZS4gV2hlbiBTVEFSVF9USU1FUiBpcyBzZXQgYXQgUlhfU0VUVVAgdGhlIHRpbWVvdXQgZGV0ZWN0aW9uCisgICAgaXMgYWN0aXZhdGVkIGRpcmVjdGx5IC0gZXZlbiB3aXRob3V0IGEgZm9ybWVyIENBTiBmcmFtZSByZWNlcHRpb24uCisKKyAgaXZhbDI6IFRocm90dGxlIHRoZSByZWNlaXZlZCBtZXNzYWdlIHJhdGUgZG93biB0byB0aGUgdmFsdWUgb2YgaXZhbDIuIFRoaXMKKyAgICBpcyB1c2VmdWwgdG8gcmVkdWNlIG1lc3NhZ2VzIGZvciB0aGUgYXBwbGljYXRpb24gd2hlbiB0aGUgc2lnbmFsIGluc2lkZSB0aGUKKyAgICBDQU4gZnJhbWUgaXMgc3RhdGVsZXNzIGFzIHN0YXRlIGNoYW5nZXMgd2l0aGluIHRoZSBpdmFsMiBwZXJpb2RlIG1heSBnZXQKKyAgICBsb3N0LgorCisgIDQuMi42IEJyb2FkY2FzdCBNYW5hZ2VyIG11bHRpcGxleCBtZXNzYWdlIHJlY2VpdmUgZmlsdGVyCisKKyAgVG8gZmlsdGVyIGZvciBjb250ZW50IGNoYW5nZXMgaW4gbXVsdGlwbGV4IG1lc3NhZ2Ugc2VxdWVuY2VzIGFuIGFycmF5IG9mIG1vcmUKKyAgdGhhbiBvbmUgQ0FOIGZyYW1lcyBjYW4gYmUgcGFzc2VkIGluIGEgUlhfU0VUVVAgY29uZmlndXJhdGlvbiBtZXNzYWdlLiBUaGUKKyAgZGF0YSBieXRlcyBvZiB0aGUgZmlyc3QgQ0FOIGZyYW1lIGNvbnRhaW4gdGhlIG1hc2sgb2YgcmVsZXZhbnQgYml0cyB0aGF0CisgIGhhdmUgdG8gbWF0Y2ggaW4gdGhlIHN1YnNlcXVlbnQgQ0FOIGZyYW1lcyB3aXRoIHRoZSByZWNlaXZlZCBDQU4gZnJhbWUuCisgIElmIG9uZSBvZiB0aGUgc3Vic2VxdWVudCBDQU4gZnJhbWVzIGlzIG1hdGNoaW5nIHRoZSBiaXRzIGluIHRoYXQgZnJhbWUgZGF0YQorICBtYXJrIHRoZSByZWxldmFudCBjb250ZW50IHRvIGJlIGNvbXBhcmVkIHdpdGggdGhlIHByZXZpb3VzIHJlY2VpdmVkIGNvbnRlbnQuCisgIFVwIHRvIDI1NyBDQU4gZnJhbWVzIChtdWx0aXBsZXggZmlsdGVyIGJpdCBtYXNrIENBTiBmcmFtZSBwbHVzIDI1NiBDQU4KKyAgZmlsdGVycykgY2FuIGJlIGFkZGVkIGFzIGFycmF5IHRvIHRoZSBUWF9TRVRVUCBCQ00gY29uZmlndXJhdGlvbiBtZXNzYWdlLgorCisgICAgLyogdXN1YWxseSB1c2VkIHRvIGNsZWFyIENBTiBmcmFtZSBkYXRhW10gLSBiZXdhcmUgb2YgZW5kaWFuIHByb2JsZW1zISAqLworICAgICNkZWZpbmUgVTY0X0RBVEEocCkgKCoodW5zaWduZWQgbG9uZyBsb25nKikocCktPmRhdGEpCisKKyAgICBzdHJ1Y3QgeworICAgICAgICAgICAgc3RydWN0IGJjbV9tc2dfaGVhZCBtc2dfaGVhZDsKKyAgICAgICAgICAgIHN0cnVjdCBjYW5fZnJhbWUgZnJhbWVbNV07CisgICAgfSBtc2c7CisKKyAgICBtc2cubXNnX2hlYWQub3Bjb2RlICA9IFJYX1NFVFVQOworICAgIG1zZy5tc2dfaGVhZC5jYW5faWQgID0gMHg0MjsKKyAgICBtc2cubXNnX2hlYWQuZmxhZ3MgICA9IDA7CisgICAgbXNnLm1zZ19oZWFkLm5mcmFtZXMgPSA1OworICAgIFU2NF9EQVRBKCZtc2cuZnJhbWVbMF0pID0gMHhGRjAwMDAwMDAwMDAwMDAwVUxMOyAvKiBNVVggbWFzayAqLworICAgIFU2NF9EQVRBKCZtc2cuZnJhbWVbMV0pID0gMHgwMTAwMDAwMDAwMDAwMEZGVUxMOyAvKiBkYXRhIG1hc2sgKE1VWCAweDAxKSAqLworICAgIFU2NF9EQVRBKCZtc2cuZnJhbWVbMl0pID0gMHgwMjAwRkZGRjAwMDAwMEZGVUxMOyAvKiBkYXRhIG1hc2sgKE1VWCAweDAyKSAqLworICAgIFU2NF9EQVRBKCZtc2cuZnJhbWVbM10pID0gMHgzMzAwMDBGRkZGRkYwMDAzVUxMOyAvKiBkYXRhIG1hc2sgKE1VWCAweDMzKSAqLworICAgIFU2NF9EQVRBKCZtc2cuZnJhbWVbNF0pID0gMHg0RjA3RkMwRkYwMDAwMDAwVUxMOyAvKiBkYXRhIG1hc2sgKE1VWCAweDRGKSAqLworCisgICAgd3JpdGUocywgJm1zZywgc2l6ZW9mKG1zZykpOworCisgIDQuMyBjb25uZWN0ZWQgdHJhbnNwb3J0IHByb3RvY29scyAoU09DS19TRVFQQUNLRVQpCisgIDQuNCB1bmNvbm5lY3RlZCB0cmFuc3BvcnQgcHJvdG9jb2xzIChTT0NLX0RHUkFNKQorCisKKzUuIFNvY2tldENBTiBjb3JlIG1vZHVsZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFRoZSBTb2NrZXRDQU4gY29yZSBtb2R1bGUgaW1wbGVtZW50cyB0aGUgcHJvdG9jb2wgZmFtaWx5CisgIFBGX0NBTi4gQ0FOIHByb3RvY29sIG1vZHVsZXMgYXJlIGxvYWRlZCBieSB0aGUgY29yZSBtb2R1bGUgYXQKKyAgcnVudGltZS4gVGhlIGNvcmUgbW9kdWxlIHByb3ZpZGVzIGFuIGludGVyZmFjZSBmb3IgQ0FOIHByb3RvY29sCisgIG1vZHVsZXMgdG8gc3Vic2NyaWJlIG5lZWRlZCBDQU4gSURzIChzZWUgY2hhcHRlciAzLjEpLgorCisgIDUuMSBjYW4ua28gbW9kdWxlIHBhcmFtcworCisgIC0gc3RhdHNfdGltZXI6IFRvIGNhbGN1bGF0ZSB0aGUgU29ja2V0Q0FOIGNvcmUgc3RhdGlzdGljcworICAgIChlLmcuIGN1cnJlbnQvbWF4aW11bSBmcmFtZXMgcGVyIHNlY29uZCkgdGhpcyAxIHNlY29uZCB0aW1lciBpcworICAgIGludm9rZWQgYXQgY2FuLmtvIG1vZHVsZSBzdGFydCB0aW1lIGJ5IGRlZmF1bHQuIFRoaXMgdGltZXIgY2FuIGJlCisgICAgZGlzYWJsZWQgYnkgdXNpbmcgc3RhdHRpbWVyPTAgb24gdGhlIG1vZHVsZSBjb21tYW5kbGluZS4KKworICAtIGRlYnVnOiAocmVtb3ZlZCBzaW5jZSBTb2NrZXRDQU4gU1ZOIHI1NDYpCisKKyAgNS4yIHByb2NmcyBjb250ZW50CisKKyAgQXMgZGVzY3JpYmVkIGluIGNoYXB0ZXIgMy4xIHRoZSBTb2NrZXRDQU4gY29yZSB1c2VzIHNldmVyYWwgZmlsdGVyCisgIGxpc3RzIHRvIGRlbGl2ZXIgcmVjZWl2ZWQgQ0FOIGZyYW1lcyB0byBDQU4gcHJvdG9jb2wgbW9kdWxlcy4gVGhlc2UKKyAgcmVjZWl2ZSBsaXN0cywgdGhlaXIgZmlsdGVycyBhbmQgdGhlIGNvdW50IG9mIGZpbHRlciBtYXRjaGVzIGNhbiBiZQorICBjaGVja2VkIGluIHRoZSBhcHByb3ByaWF0ZSByZWNlaXZlIGxpc3QuIEFsbCBlbnRyaWVzIGNvbnRhaW4gdGhlCisgIGRldmljZSBhbmQgYSBwcm90b2NvbCBtb2R1bGUgaWRlbnRpZmllcjoKKworICAgIGZvb0BiYXI6fiQgY2F0IC9wcm9jL25ldC9jYW4vcmN2bGlzdF9hbGwKKworICAgIHJlY2VpdmUgbGlzdCAncnhfYWxsJzoKKyAgICAgICh2Y2FuMzogbm8gZW50cnkpCisgICAgICAodmNhbjI6IG5vIGVudHJ5KQorICAgICAgKHZjYW4xOiBubyBlbnRyeSkKKyAgICAgIGRldmljZSAgIGNhbl9pZCAgIGNhbl9tYXNrICBmdW5jdGlvbiAgdXNlcmRhdGEgICBtYXRjaGVzICBpZGVudAorICAgICAgIHZjYW4wICAgICAwMDAgICAgMDAwMDAwMDAgIGY4OGU2MzcwICBmNmM2ZjQwMCAgICAgICAgIDAgIHJhdworICAgICAgKGFueTogbm8gZW50cnkpCisKKyAgSW4gdGhpcyBleGFtcGxlIGFuIGFwcGxpY2F0aW9uIHJlcXVlc3RzIGFueSBDQU4gdHJhZmZpYyBmcm9tIHZjYW4wLgorCisgICAgcmN2bGlzdF9hbGwgLSBsaXN0IGZvciB1bmZpbHRlcmVkIGVudHJpZXMgKG5vIGZpbHRlciBvcGVyYXRpb25zKQorICAgIHJjdmxpc3RfZWZmIC0gbGlzdCBmb3Igc2luZ2xlIGV4dGVuZGVkIGZyYW1lIChFRkYpIGVudHJpZXMKKyAgICByY3ZsaXN0X2VyciAtIGxpc3QgZm9yIGVycm9yIG1lc3NhZ2UgZnJhbWVzIG1hc2tzCisgICAgcmN2bGlzdF9maWwgLSBsaXN0IGZvciBtYXNrL3ZhbHVlIGZpbHRlcnMKKyAgICByY3ZsaXN0X2ludiAtIGxpc3QgZm9yIG1hc2svdmFsdWUgZmlsdGVycyAoaW52ZXJzZSBzZW1hbnRpYykKKyAgICByY3ZsaXN0X3NmZiAtIGxpc3QgZm9yIHNpbmdsZSBzdGFuZGFyZCBmcmFtZSAoU0ZGKSBlbnRyaWVzCisKKyAgQWRkaXRpb25hbCBwcm9jZnMgZmlsZXMgaW4gL3Byb2MvbmV0L2NhbgorCisgICAgc3RhdHMgICAgICAgLSBTb2NrZXRDQU4gY29yZSBzdGF0aXN0aWNzIChyeC90eCBmcmFtZXMsIG1hdGNoIHJhdGlvcywgLi4uKQorICAgIHJlc2V0X3N0YXRzIC0gbWFudWFsIHN0YXRpc3RpYyByZXNldAorICAgIHZlcnNpb24gICAgIC0gcHJpbnRzIHRoZSBTb2NrZXRDQU4gY29yZSB2ZXJzaW9uIGFuZCB0aGUgQUJJIHZlcnNpb24KKworICA1LjMgd3JpdGluZyBvd24gQ0FOIHByb3RvY29sIG1vZHVsZXMKKworICBUbyBpbXBsZW1lbnQgYSBuZXcgcHJvdG9jb2wgaW4gdGhlIHByb3RvY29sIGZhbWlseSBQRl9DQU4gYSBuZXcKKyAgcHJvdG9jb2wgaGFzIHRvIGJlIGRlZmluZWQgaW4gaW5jbHVkZS9saW51eC9jYW4uaCAuCisgIFRoZSBwcm90b3R5cGVzIGFuZCBkZWZpbml0aW9ucyB0byB1c2UgdGhlIFNvY2tldENBTiBjb3JlIGNhbiBiZQorICBhY2Nlc3NlZCBieSBpbmNsdWRpbmcgaW5jbHVkZS9saW51eC9jYW4vY29yZS5oIC4KKyAgSW4gYWRkaXRpb24gdG8gZnVuY3Rpb25zIHRoYXQgcmVnaXN0ZXIgdGhlIENBTiBwcm90b2NvbCBhbmQgdGhlCisgIENBTiBkZXZpY2Ugbm90aWZpZXIgY2hhaW4gdGhlcmUgYXJlIGZ1bmN0aW9ucyB0byBzdWJzY3JpYmUgQ0FOCisgIGZyYW1lcyByZWNlaXZlZCBieSBDQU4gaW50ZXJmYWNlcyBhbmQgdG8gc2VuZCBDQU4gZnJhbWVzOgorCisgICAgY2FuX3J4X3JlZ2lzdGVyICAgLSBzdWJzY3JpYmUgQ0FOIGZyYW1lcyBmcm9tIGEgc3BlY2lmaWMgaW50ZXJmYWNlCisgICAgY2FuX3J4X3VucmVnaXN0ZXIgLSB1bnN1YnNjcmliZSBDQU4gZnJhbWVzIGZyb20gYSBzcGVjaWZpYyBpbnRlcmZhY2UKKyAgICBjYW5fc2VuZCAgICAgICAgICAtIHRyYW5zbWl0IGEgQ0FOIGZyYW1lIChvcHRpb25hbCB3aXRoIGxvY2FsIGxvb3BiYWNrKQorCisgIEZvciBkZXRhaWxzIHNlZSB0aGUga2VybmVsZG9jIGRvY3VtZW50YXRpb24gaW4gbmV0L2Nhbi9hZl9jYW4uYyBvcgorICB0aGUgc291cmNlIGNvZGUgb2YgbmV0L2Nhbi9yYXcuYyBvciBuZXQvY2FuL2JjbS5jIC4KKworNi4gQ0FOIG5ldHdvcmsgZHJpdmVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFdyaXRpbmcgYSBDQU4gbmV0d29yayBkZXZpY2UgZHJpdmVyIGlzIG11Y2ggZWFzaWVyIHRoYW4gd3JpdGluZyBhCisgIENBTiBjaGFyYWN0ZXIgZGV2aWNlIGRyaXZlci4gU2ltaWxhciB0byBvdGhlciBrbm93biBuZXR3b3JrIGRldmljZQorICBkcml2ZXJzIHlvdSBtYWlubHkgaGF2ZSB0byBkZWFsIHdpdGg6CisKKyAgLSBUWDogUHV0IHRoZSBDQU4gZnJhbWUgZnJvbSB0aGUgc29ja2V0IGJ1ZmZlciB0byB0aGUgQ0FOIGNvbnRyb2xsZXIuCisgIC0gUlg6IFB1dCB0aGUgQ0FOIGZyYW1lIGZyb20gdGhlIENBTiBjb250cm9sbGVyIHRvIHRoZSBzb2NrZXQgYnVmZmVyLgorCisgIFNlZSBlLmcuIGF0IERvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnR4dCAuIFRoZSBkaWZmZXJlbmNlcworICBmb3Igd3JpdGluZyBDQU4gbmV0d29yayBkZXZpY2UgZHJpdmVyIGFyZSBkZXNjcmliZWQgYmVsb3c6CisKKyAgNi4xIGdlbmVyYWwgc2V0dGluZ3MKKworICAgIGRldi0+dHlwZSAgPSBBUlBIUkRfQ0FOOyAvKiB0aGUgbmV0ZGV2aWNlIGhhcmR3YXJlIHR5cGUgKi8KKyAgICBkZXYtPmZsYWdzID0gSUZGX05PQVJQOyAgLyogQ0FOIGhhcyBubyBhcnAgKi8KKworICAgIGRldi0+bXR1ID0gQ0FOX01UVTsgLyogc2l6ZW9mKHN0cnVjdCBjYW5fZnJhbWUpIC0+IGxlZ2FjeSBDQU4gaW50ZXJmYWNlICovCisKKyAgICBvciBhbHRlcm5hdGl2ZSwgd2hlbiB0aGUgY29udHJvbGxlciBzdXBwb3J0cyBDQU4gd2l0aCBmbGV4aWJsZSBkYXRhIHJhdGU6CisgICAgZGV2LT5tdHUgPSBDQU5GRF9NVFU7IC8qIHNpemVvZihzdHJ1Y3QgY2FuZmRfZnJhbWUpIC0+IENBTiBGRCBpbnRlcmZhY2UgKi8KKworICBUaGUgc3RydWN0IGNhbl9mcmFtZSBvciBzdHJ1Y3QgY2FuZmRfZnJhbWUgaXMgdGhlIHBheWxvYWQgb2YgZWFjaCBzb2NrZXQKKyAgYnVmZmVyIChza2J1ZmYpIGluIHRoZSBwcm90b2NvbCBmYW1pbHkgUEZfQ0FOLgorCisgIDYuMiBsb2NhbCBsb29wYmFjayBvZiBzZW50IGZyYW1lcworCisgIEFzIGRlc2NyaWJlZCBpbiBjaGFwdGVyIDMuMiB0aGUgQ0FOIG5ldHdvcmsgZGV2aWNlIGRyaXZlciBzaG91bGQKKyAgc3VwcG9ydCBhIGxvY2FsIGxvb3BiYWNrIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byB0aGUgbG9jYWwgZWNobworICBlLmcuIG9mIHR0eSBkZXZpY2VzLiBJbiB0aGlzIGNhc2UgdGhlIGRyaXZlciBmbGFnIElGRl9FQ0hPIGhhcyB0byBiZQorICBzZXQgdG8gcHJldmVudCB0aGUgUEZfQ0FOIGNvcmUgZnJvbSBsb2NhbGx5IGVjaG9pbmcgc2VudCBmcmFtZXMKKyAgKGFrYSBsb29wYmFjaykgYXMgZmFsbGJhY2sgc29sdXRpb246CisKKyAgICBkZXYtPmZsYWdzID0gKElGRl9OT0FSUCB8IElGRl9FQ0hPKTsKKworICA2LjMgQ0FOIGNvbnRyb2xsZXIgaGFyZHdhcmUgZmlsdGVycworCisgIFRvIHJlZHVjZSB0aGUgaW50ZXJydXB0IGxvYWQgb24gZGVlcCBlbWJlZGRlZCBzeXN0ZW1zIHNvbWUgQ0FOCisgIGNvbnRyb2xsZXJzIHN1cHBvcnQgdGhlIGZpbHRlcmluZyBvZiBDQU4gSURzIG9yIHJhbmdlcyBvZiBDQU4gSURzLgorICBUaGVzZSBoYXJkd2FyZSBmaWx0ZXIgY2FwYWJpbGl0aWVzIHZhcnkgZnJvbSBjb250cm9sbGVyIHRvCisgIGNvbnRyb2xsZXIgYW5kIGhhdmUgdG8gYmUgaWRlbnRpZmllZCBhcyBub3QgZmVhc2libGUgaW4gYSBtdWx0aS11c2VyCisgIG5ldHdvcmtpbmcgYXBwcm9hY2guIFRoZSB1c2Ugb2YgdGhlIHZlcnkgY29udHJvbGxlciBzcGVjaWZpYworICBoYXJkd2FyZSBmaWx0ZXJzIGNvdWxkIG1ha2Ugc2Vuc2UgaW4gYSB2ZXJ5IGRlZGljYXRlZCB1c2UtY2FzZSwgYXMgYQorICBmaWx0ZXIgb24gZHJpdmVyIGxldmVsIHdvdWxkIGFmZmVjdCBhbGwgdXNlcnMgaW4gdGhlIG11bHRpLXVzZXIKKyAgc3lzdGVtLiBUaGUgaGlnaCBlZmZpY2llbnQgZmlsdGVyIHNldHMgaW5zaWRlIHRoZSBQRl9DQU4gY29yZSBhbGxvdworICB0byBzZXQgZGlmZmVyZW50IG11bHRpcGxlIGZpbHRlcnMgZm9yIGVhY2ggc29ja2V0IHNlcGFyYXRlbHkuCisgIFRoZXJlZm9yZSB0aGUgdXNlIG9mIGhhcmR3YXJlIGZpbHRlcnMgZ29lcyB0byB0aGUgY2F0ZWdvcnkgJ2hhbmRtYWRlCisgIHR1bmluZyBvbiBkZWVwIGVtYmVkZGVkIHN5c3RlbXMnLiBUaGUgYXV0aG9yIGlzIHJ1bm5pbmcgYSBNUEM2MDNlCisgIEAxMzNNSHogd2l0aCBmb3VyIFNKQTEwMDAgQ0FOIGNvbnRyb2xsZXJzIGZyb20gMjAwMiB1bmRlciBoZWF2eSBidXMKKyAgbG9hZCB3aXRob3V0IGFueSBwcm9ibGVtcyAuLi4KKworICA2LjQgVGhlIHZpcnR1YWwgQ0FOIGRyaXZlciAodmNhbikKKworICBTaW1pbGFyIHRvIHRoZSBuZXR3b3JrIGxvb3BiYWNrIGRldmljZXMsIHZjYW4gb2ZmZXJzIGEgdmlydHVhbCBsb2NhbAorICBDQU4gaW50ZXJmYWNlLiBBIGZ1bGwgcXVhbGlmaWVkIGFkZHJlc3Mgb24gQ0FOIGNvbnNpc3RzIG9mCisKKyAgLSBhIHVuaXF1ZSBDQU4gSWRlbnRpZmllciAoQ0FOIElEKQorICAtIHRoZSBDQU4gYnVzIHRoaXMgQ0FOIElEIGlzIHRyYW5zbWl0dGVkIG9uIChlLmcuIGNhbjApCisKKyAgc28gaW4gY29tbW9uIHVzZSBjYXNlcyBtb3JlIHRoYW4gb25lIHZpcnR1YWwgQ0FOIGludGVyZmFjZSBpcyBuZWVkZWQuCisKKyAgVGhlIHZpcnR1YWwgQ0FOIGludGVyZmFjZXMgYWxsb3cgdGhlIHRyYW5zbWlzc2lvbiBhbmQgcmVjZXB0aW9uIG9mIENBTgorICBmcmFtZXMgd2l0aG91dCByZWFsIENBTiBjb250cm9sbGVyIGhhcmR3YXJlLiBWaXJ0dWFsIENBTiBuZXR3b3JrCisgIGRldmljZXMgYXJlIHVzdWFsbHkgbmFtZWQgJ3ZjYW5YJywgbGlrZSB2Y2FuMCB2Y2FuMSB2Y2FuMiAuLi4KKyAgV2hlbiBjb21waWxlZCBhcyBhIG1vZHVsZSB0aGUgdmlydHVhbCBDQU4gZHJpdmVyIG1vZHVsZSBpcyBjYWxsZWQgdmNhbi5rbworCisgIFNpbmNlIExpbnV4IEtlcm5lbCB2ZXJzaW9uIDIuNi4yNCB0aGUgdmNhbiBkcml2ZXIgc3VwcG9ydHMgdGhlIEtlcm5lbAorICBuZXRsaW5rIGludGVyZmFjZSB0byBjcmVhdGUgdmNhbiBuZXR3b3JrIGRldmljZXMuIFRoZSBjcmVhdGlvbiBhbmQKKyAgcmVtb3ZhbCBvZiB2Y2FuIG5ldHdvcmsgZGV2aWNlcyBjYW4gYmUgbWFuYWdlZCB3aXRoIHRoZSBpcCg4KSB0b29sOgorCisgIC0gQ3JlYXRlIGEgdmlydHVhbCBDQU4gbmV0d29yayBpbnRlcmZhY2U6CisgICAgICAgJCBpcCBsaW5rIGFkZCB0eXBlIHZjYW4KKworICAtIENyZWF0ZSBhIHZpcnR1YWwgQ0FOIG5ldHdvcmsgaW50ZXJmYWNlIHdpdGggYSBzcGVjaWZpYyBuYW1lICd2Y2FuNDInOgorICAgICAgICQgaXAgbGluayBhZGQgZGV2IHZjYW40MiB0eXBlIHZjYW4KKworICAtIFJlbW92ZSBhICh2aXJ0dWFsIENBTikgbmV0d29yayBpbnRlcmZhY2UgJ3ZjYW40Mic6CisgICAgICAgJCBpcCBsaW5rIGRlbCB2Y2FuNDIKKworICA2LjUgVGhlIENBTiBuZXR3b3JrIGRldmljZSBkcml2ZXIgaW50ZXJmYWNlCisKKyAgVGhlIENBTiBuZXR3b3JrIGRldmljZSBkcml2ZXIgaW50ZXJmYWNlIHByb3ZpZGVzIGEgZ2VuZXJpYyBpbnRlcmZhY2UKKyAgdG8gc2V0dXAsIGNvbmZpZ3VyZSBhbmQgbW9uaXRvciBDQU4gbmV0d29yayBkZXZpY2VzLiBUaGUgdXNlciBjYW4gdGhlbgorICBjb25maWd1cmUgdGhlIENBTiBkZXZpY2UsIGxpa2Ugc2V0dGluZyB0aGUgYml0LXRpbWluZyBwYXJhbWV0ZXJzLCB2aWEKKyAgdGhlIG5ldGxpbmsgaW50ZXJmYWNlIHVzaW5nIHRoZSBwcm9ncmFtICJpcCIgZnJvbSB0aGUgIklQUk9VVEUyIgorICB1dGlsaXR5IHN1aXRlLiBUaGUgZm9sbG93aW5nIGNoYXB0ZXIgZGVzY3JpYmVzIGJyaWVmbHkgaG93IHRvIHVzZSBpdC4KKyAgRnVydGhlcm1vcmUsIHRoZSBpbnRlcmZhY2UgdXNlcyBhIGNvbW1vbiBkYXRhIHN0cnVjdHVyZSBhbmQgZXhwb3J0cyBhCisgIHNldCBvZiBjb21tb24gZnVuY3Rpb25zLCB3aGljaCBhbGwgcmVhbCBDQU4gbmV0d29yayBkZXZpY2UgZHJpdmVycworICBzaG91bGQgdXNlLiBQbGVhc2UgaGF2ZSBhIGxvb2sgdG8gdGhlIFNKQTEwMDAgb3IgTVNDQU4gZHJpdmVyIHRvCisgIHVuZGVyc3RhbmQgaG93IHRvIHVzZSB0aGVtLiBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIGlzIGNhbi1kZXYua28uCisKKyAgNi41LjEgTmV0bGluayBpbnRlcmZhY2UgdG8gc2V0L2dldCBkZXZpY2VzIHByb3BlcnRpZXMKKworICBUaGUgQ0FOIGRldmljZSBtdXN0IGJlIGNvbmZpZ3VyZWQgdmlhIG5ldGxpbmsgaW50ZXJmYWNlLiBUaGUgc3VwcG9ydGVkCisgIG5ldGxpbmsgbWVzc2FnZSB0eXBlcyBhcmUgZGVmaW5lZCBhbmQgYnJpZWZseSBkZXNjcmliZWQgaW4KKyAgImluY2x1ZGUvbGludXgvY2FuL25ldGxpbmsuaCIuIENBTiBsaW5rIHN1cHBvcnQgZm9yIHRoZSBwcm9ncmFtICJpcCIKKyAgb2YgdGhlIElQUk9VVEUyIHV0aWxpdHkgc3VpdGUgaXMgYXZhaWxhYmxlIGFuZCBpdCBjYW4gYmUgdXNlZCBhcyBzaG93bgorICBiZWxvdzoKKworICAtIFNldHRpbmcgQ0FOIGRldmljZSBwcm9wZXJ0aWVzOgorCisgICAgJCBpcCBsaW5rIHNldCBjYW4wIHR5cGUgY2FuIGhlbHAKKyAgICBVc2FnZTogaXAgbGluayBzZXQgREVWSUNFIHR5cGUgY2FuCisgICAgICAgIFsgYml0cmF0ZSBCSVRSQVRFIFsgc2FtcGxlLXBvaW50IFNBTVBMRS1QT0lOVF0gXSB8CisgICAgICAgIFsgdHEgVFEgcHJvcC1zZWcgUFJPUF9TRUcgcGhhc2Utc2VnMSBQSEFTRS1TRUcxCisgICAgICAgICAgcGhhc2Utc2VnMiBQSEFTRS1TRUcyIFsgc2p3IFNKVyBdIF0KKworICAgICAgICBbIGRiaXRyYXRlIEJJVFJBVEUgWyBkc2FtcGxlLXBvaW50IFNBTVBMRS1QT0lOVF0gXSB8CisgICAgICAgIFsgZHRxIFRRIGRwcm9wLXNlZyBQUk9QX1NFRyBkcGhhc2Utc2VnMSBQSEFTRS1TRUcxCisgICAgICAgICAgZHBoYXNlLXNlZzIgUEhBU0UtU0VHMiBbIGRzancgU0pXIF0gXQorCisgICAgICAgIFsgbG9vcGJhY2sgeyBvbiB8IG9mZiB9IF0KKyAgICAgICAgWyBsaXN0ZW4tb25seSB7IG9uIHwgb2ZmIH0gXQorICAgICAgICBbIHRyaXBsZS1zYW1wbGluZyB7IG9uIHwgb2ZmIH0gXQorICAgICAgICBbIG9uZS1zaG90IHsgb24gfCBvZmYgfSBdCisgICAgICAgIFsgYmVyci1yZXBvcnRpbmcgeyBvbiB8IG9mZiB9IF0KKyAgICAgICAgWyBmZCB7IG9uIHwgb2ZmIH0gXQorICAgICAgICBbIGZkLW5vbi1pc28geyBvbiB8IG9mZiB9IF0KKyAgICAgICAgWyBwcmVzdW1lLWFjayB7IG9uIHwgb2ZmIH0gXQorCisgICAgICAgIFsgcmVzdGFydC1tcyBUSU1FLU1TIF0KKyAgICAgICAgWyByZXN0YXJ0IF0KKworICAgICAgICBXaGVyZTogQklUUkFURSAgICAgICA6PSB7IDEuLjEwMDAwMDAgfQorICAgICAgICAgICAgICAgU0FNUExFLVBPSU5UICA6PSB7IDAuMDAwLi4wLjk5OSB9CisgICAgICAgICAgICAgICBUUSAgICAgICAgICAgIDo9IHsgTlVNQkVSIH0KKyAgICAgICAgICAgICAgIFBST1AtU0VHICAgICAgOj0geyAxLi44IH0KKyAgICAgICAgICAgICAgIFBIQVNFLVNFRzEgICAgOj0geyAxLi44IH0KKyAgICAgICAgICAgICAgIFBIQVNFLVNFRzIgICAgOj0geyAxLi44IH0KKyAgICAgICAgICAgICAgIFNKVyAgICAgICAgICAgOj0geyAxLi40IH0KKyAgICAgICAgICAgICAgIFJFU1RBUlQtTVMgICAgOj0geyAwIHwgTlVNQkVSIH0KKworICAtIERpc3BsYXkgQ0FOIGRldmljZSBkZXRhaWxzIGFuZCBzdGF0aXN0aWNzOgorCisgICAgJCBpcCAtZGV0YWlscyAtc3RhdGlzdGljcyBsaW5rIHNob3cgY2FuMAorICAgIDI6IGNhbjA6IDxOT0FSUCxVUCxMT1dFUl9VUCxFQ0hPPiBtdHUgMTYgcWRpc2MgcGZpZm9fZmFzdCBzdGF0ZSBVUCBxbGVuIDEwCisgICAgICBsaW5rL2NhbgorICAgICAgY2FuIDxUUklQTEUtU0FNUExJTkc+IHN0YXRlIEVSUk9SLUFDVElWRSByZXN0YXJ0LW1zIDEwMAorICAgICAgYml0cmF0ZSAxMjUwMDAgc2FtcGxlX3BvaW50IDAuODc1CisgICAgICB0cSAxMjUgcHJvcC1zZWcgNiBwaGFzZS1zZWcxIDcgcGhhc2Utc2VnMiAyIHNqdyAxCisgICAgICBzamExMDAwOiB0c2VnMSAxLi4xNiB0c2VnMiAxLi44IHNqdyAxLi40IGJycCAxLi42NCBicnAtaW5jIDEKKyAgICAgIGNsb2NrIDgwMDAwMDAKKyAgICAgIHJlLXN0YXJ0ZWQgYnVzLWVycm9ycyBhcmJpdC1sb3N0IGVycm9yLXdhcm4gZXJyb3ItcGFzcyBidXMtb2ZmCisgICAgICA0MSAgICAgICAgIDE3NDU3ICAgICAgMCAgICAgICAgICA0MSAgICAgICAgIDQyICAgICAgICAgNDEKKyAgICAgIFJYOiBieXRlcyAgcGFja2V0cyAgZXJyb3JzICBkcm9wcGVkIG92ZXJydW4gbWNhc3QKKyAgICAgIDE0MDg1OSAgICAgMTc2MDggICAgMTc0NTcgICAwICAgICAgIDAgICAgICAgMAorICAgICAgVFg6IGJ5dGVzICBwYWNrZXRzICBlcnJvcnMgIGRyb3BwZWQgY2FycmllciBjb2xsc25zCisgICAgICA4NjEgICAgICAgIDExMiAgICAgIDAgICAgICAgNDEgICAgICAwICAgICAgIDAKKworICBNb3JlIGluZm8gdG8gdGhlIGFib3ZlIG91dHB1dDoKKworICAgICI8VFJJUExFLVNBTVBMSU5HPiIKKwlTaG93cyB0aGUgbGlzdCBvZiBzZWxlY3RlZCBDQU4gY29udHJvbGxlciBtb2RlczogTE9PUEJBQ0ssCisJTElTVEVOLU9OTFksIG9yIFRSSVBMRS1TQU1QTElORy4KKworICAgICJzdGF0ZSBFUlJPUi1BQ1RJVkUiCisJVGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIENBTiBjb250cm9sbGVyOiAiRVJST1ItQUNUSVZFIiwKKwkiRVJST1ItV0FSTklORyIsICJFUlJPUi1QQVNTSVZFIiwgIkJVUy1PRkYiIG9yICJTVE9QUEVEIgorCisgICAgInJlc3RhcnQtbXMgMTAwIgorCUF1dG9tYXRpYyByZXN0YXJ0IGRlbGF5IHRpbWUuIElmIHNldCB0byBhIG5vbi16ZXJvIHZhbHVlLCBhCisJcmVzdGFydCBvZiB0aGUgQ0FOIGNvbnRyb2xsZXIgd2lsbCBiZSB0cmlnZ2VyZWQgYXV0b21hdGljYWxseQorCWluIGNhc2Ugb2YgYSBidXMtb2ZmIGNvbmRpdGlvbiBhZnRlciB0aGUgc3BlY2lmaWVkIGRlbGF5IHRpbWUKKwlpbiBtaWxsaXNlY29uZHMuIEJ5IGRlZmF1bHQgaXQncyBvZmYuCisKKyAgICAiYml0cmF0ZSAxMjUwMDAgc2FtcGxlLXBvaW50IDAuODc1IgorCVNob3dzIHRoZSByZWFsIGJpdC1yYXRlIGluIGJpdHMvc2VjIGFuZCB0aGUgc2FtcGxlLXBvaW50IGluIHRoZQorCXJhbmdlIDAuMDAwLi4wLjk5OS4gSWYgdGhlIGNhbGN1bGF0aW9uIG9mIGJpdC10aW1pbmcgcGFyYW1ldGVycworCWlzIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCAoQ09ORklHX0NBTl9DQUxDX0JJVFRJTUlORz15KSwgdGhlCisJYml0LXRpbWluZyBjYW4gYmUgZGVmaW5lZCBieSBzZXR0aW5nIHRoZSAiYml0cmF0ZSIgYXJndW1lbnQuCisJT3B0aW9uYWxseSB0aGUgInNhbXBsZS1wb2ludCIgY2FuIGJlIHNwZWNpZmllZC4gQnkgZGVmYXVsdCBpdCdzCisJMC4wMDAgYXNzdW1pbmcgQ0lBLXJlY29tbWVuZGVkIHNhbXBsZS1wb2ludHMuCisKKyAgICAidHEgMTI1IHByb3Atc2VnIDYgcGhhc2Utc2VnMSA3IHBoYXNlLXNlZzIgMiBzancgMSIKKwlTaG93cyB0aGUgdGltZSBxdWFudGEgaW4gbnMsIHByb3BhZ2F0aW9uIHNlZ21lbnQsIHBoYXNlIGJ1ZmZlcgorCXNlZ21lbnQgMSBhbmQgMiBhbmQgdGhlIHN5bmNocm9uaXNhdGlvbiBqdW1wIHdpZHRoIGluIHVuaXRzIG9mCisJdHEuIFRoZXkgYWxsb3cgdG8gZGVmaW5lIHRoZSBDQU4gYml0LXRpbWluZyBpbiBhIGhhcmR3YXJlCisJaW5kZXBlbmRlbnQgZm9ybWF0IGFzIHByb3Bvc2VkIGJ5IHRoZSBCb3NjaCBDQU4gMi4wIHNwZWMgKHNlZQorCWNoYXB0ZXIgOCBvZiBodHRwOi8vd3d3LnNlbWljb25kdWN0b3JzLmJvc2NoLmRlL3BkZi9jYW4yc3BlYy5wZGYpLgorCisgICAgInNqYTEwMDA6IHRzZWcxIDEuLjE2IHRzZWcyIDEuLjggc2p3IDEuLjQgYnJwIDEuLjY0IGJycC1pbmMgMQorICAgICBjbG9jayA4MDAwMDAwIgorCVNob3dzIHRoZSBiaXQtdGltaW5nIGNvbnN0YW50cyBvZiB0aGUgQ0FOIGNvbnRyb2xsZXIsIGhlcmUgdGhlCisJInNqYTEwMDAiLiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSB2YWx1ZXMgb2YgdGhlIHRpbWUgc2VnbWVudCAxCisJYW5kIDIsIHRoZSBzeW5jaHJvbmlzYXRpb24ganVtcCB3aWR0aCBpbiB1bml0cyBvZiB0cSwgdGhlCisJYml0cmF0ZSBwcmUtc2NhbGVyIGFuZCB0aGUgQ0FOIHN5c3RlbSBjbG9jayBmcmVxdWVuY3kgaW4gSHouCisJVGhlc2UgY29uc3RhbnRzIGNvdWxkIGJlIHVzZWQgZm9yIHVzZXItZGVmaW5lZCAobm9uLXN0YW5kYXJkKQorCWJpdC10aW1pbmcgY2FsY3VsYXRpb24gYWxnb3JpdGhtcyBpbiB1c2VyLXNwYWNlLgorCisgICAgInJlLXN0YXJ0ZWQgYnVzLWVycm9ycyBhcmJpdC1sb3N0IGVycm9yLXdhcm4gZXJyb3ItcGFzcyBidXMtb2ZmIgorCVNob3dzIHRoZSBudW1iZXIgb2YgcmVzdGFydHMsIGJ1cyBhbmQgYXJiaXRyYXRpb24gbG9zdCBlcnJvcnMsCisJYW5kIHRoZSBzdGF0ZSBjaGFuZ2VzIHRvIHRoZSBlcnJvci13YXJuaW5nLCBlcnJvci1wYXNzaXZlIGFuZAorCWJ1cy1vZmYgc3RhdGUuIFJYIG92ZXJydW4gZXJyb3JzIGFyZSBsaXN0ZWQgaW4gdGhlICJvdmVycnVuIgorCWZpZWxkIG9mIHRoZSBzdGFuZGFyZCBuZXR3b3JrIHN0YXRpc3RpY3MuCisKKyAgNi41LjIgU2V0dGluZyB0aGUgQ0FOIGJpdC10aW1pbmcKKworICBUaGUgQ0FOIGJpdC10aW1pbmcgcGFyYW1ldGVycyBjYW4gYWx3YXlzIGJlIGRlZmluZWQgaW4gYSBoYXJkd2FyZQorICBpbmRlcGVuZGVudCBmb3JtYXQgYXMgcHJvcG9zZWQgaW4gdGhlIEJvc2NoIENBTiAyLjAgc3BlY2lmaWNhdGlvbgorICBzcGVjaWZ5aW5nIHRoZSBhcmd1bWVudHMgInRxIiwgInByb3Bfc2VnIiwgInBoYXNlX3NlZzEiLCAicGhhc2Vfc2VnMiIKKyAgYW5kICJzanciOgorCisgICAgJCBpcCBsaW5rIHNldCBjYW5YIHR5cGUgY2FuIHRxIDEyNSBwcm9wLXNlZyA2IFwKKwkJCQlwaGFzZS1zZWcxIDcgcGhhc2Utc2VnMiAyIHNqdyAxCisKKyAgSWYgdGhlIGtlcm5lbCBvcHRpb24gQ09ORklHX0NBTl9DQUxDX0JJVFRJTUlORyBpcyBlbmFibGVkLCBDSUEKKyAgcmVjb21tZW5kZWQgQ0FOIGJpdC10aW1pbmcgcGFyYW1ldGVycyB3aWxsIGJlIGNhbGN1bGF0ZWQgaWYgdGhlIGJpdC0KKyAgcmF0ZSBpcyBzcGVjaWZpZWQgd2l0aCB0aGUgYXJndW1lbnQgImJpdHJhdGUiOgorCisgICAgJCBpcCBsaW5rIHNldCBjYW5YIHR5cGUgY2FuIGJpdHJhdGUgMTI1MDAwCisKKyAgTm90ZSB0aGF0IHRoaXMgd29ya3MgZmluZSBmb3IgdGhlIG1vc3QgY29tbW9uIENBTiBjb250cm9sbGVycyB3aXRoCisgIHN0YW5kYXJkIGJpdC1yYXRlcyBidXQgbWF5ICpmYWlsKiBmb3IgZXhvdGljIGJpdC1yYXRlcyBvciBDQU4gc3lzdGVtCisgIGNsb2NrIGZyZXF1ZW5jaWVzLiBEaXNhYmxpbmcgQ09ORklHX0NBTl9DQUxDX0JJVFRJTUlORyBzYXZlcyBzb21lCisgIHNwYWNlIGFuZCBhbGxvd3MgdXNlci1zcGFjZSB0b29scyB0byBzb2xlbHkgZGV0ZXJtaW5lIGFuZCBzZXQgdGhlCisgIGJpdC10aW1pbmcgcGFyYW1ldGVycy4gVGhlIENBTiBjb250cm9sbGVyIHNwZWNpZmljIGJpdC10aW1pbmcKKyAgY29uc3RhbnRzIGNhbiBiZSB1c2VkIGZvciB0aGF0IHB1cnBvc2UuIFRoZXkgYXJlIGxpc3RlZCBieSB0aGUKKyAgZm9sbG93aW5nIGNvbW1hbmQ6CisKKyAgICAkIGlwIC1kZXRhaWxzIGxpbmsgc2hvdyBjYW4wCisgICAgLi4uCisgICAgICBzamExMDAwOiBjbG9jayA4MDAwMDAwIHRzZWcxIDEuLjE2IHRzZWcyIDEuLjggc2p3IDEuLjQgYnJwIDEuLjY0IGJycC1pbmMgMQorCisgIDYuNS4zIFN0YXJ0aW5nIGFuZCBzdG9wcGluZyB0aGUgQ0FOIG5ldHdvcmsgZGV2aWNlCisKKyAgQSBDQU4gbmV0d29yayBkZXZpY2UgaXMgc3RhcnRlZCBvciBzdG9wcGVkIGFzIHVzdWFsIHdpdGggdGhlIGNvbW1hbmQKKyAgImlmY29uZmlnIGNhblggdXAvZG93biIgb3IgImlwIGxpbmsgc2V0IGNhblggdXAvZG93biIuIEJlIGF3YXJlIHRoYXQKKyAgeW91ICptdXN0KiBkZWZpbmUgcHJvcGVyIGJpdC10aW1pbmcgcGFyYW1ldGVycyBmb3IgcmVhbCBDQU4gZGV2aWNlcworICBiZWZvcmUgeW91IGNhbiBzdGFydCBpdCB0byBhdm9pZCBlcnJvci1wcm9uZSBkZWZhdWx0IHNldHRpbmdzOgorCisgICAgJCBpcCBsaW5rIHNldCBjYW5YIHVwIHR5cGUgY2FuIGJpdHJhdGUgMTI1MDAwCisKKyAgQSBkZXZpY2UgbWF5IGVudGVyIHRoZSAiYnVzLW9mZiIgc3RhdGUgaWYgdG9vIG1hbnkgZXJyb3JzIG9jY3VycmVkIG9uCisgIHRoZSBDQU4gYnVzLiBUaGVuIG5vIG1vcmUgbWVzc2FnZXMgYXJlIHJlY2VpdmVkIG9yIHNlbnQuIEFuIGF1dG9tYXRpYworICBidXMtb2ZmIHJlY292ZXJ5IGNhbiBiZSBlbmFibGVkIGJ5IHNldHRpbmcgdGhlICJyZXN0YXJ0LW1zIiB0byBhCisgIG5vbi16ZXJvIHZhbHVlLCBlLmcuOgorCisgICAgJCBpcCBsaW5rIHNldCBjYW5YIHR5cGUgY2FuIHJlc3RhcnQtbXMgMTAwCisKKyAgQWx0ZXJuYXRpdmVseSwgdGhlIGFwcGxpY2F0aW9uIG1heSByZWFsaXplIHRoZSAiYnVzLW9mZiIgY29uZGl0aW9uCisgIGJ5IG1vbml0b3JpbmcgQ0FOIGVycm9yIG1lc3NhZ2UgZnJhbWVzIGFuZCBkbyBhIHJlc3RhcnQgd2hlbgorICBhcHByb3ByaWF0ZSB3aXRoIHRoZSBjb21tYW5kOgorCisgICAgJCBpcCBsaW5rIHNldCBjYW5YIHR5cGUgY2FuIHJlc3RhcnQKKworICBOb3RlIHRoYXQgYSByZXN0YXJ0IHdpbGwgYWxzbyBjcmVhdGUgYSBDQU4gZXJyb3IgbWVzc2FnZSBmcmFtZSAoc2VlCisgIGFsc28gY2hhcHRlciAzLjMpLgorCisgIDYuNiBDQU4gRkQgKGZsZXhpYmxlIGRhdGEgcmF0ZSkgZHJpdmVyIHN1cHBvcnQKKworICBDQU4gRkQgY2FwYWJsZSBDQU4gY29udHJvbGxlcnMgc3VwcG9ydCB0d28gZGlmZmVyZW50IGJpdHJhdGVzIGZvciB0aGUKKyAgYXJiaXRyYXRpb24gcGhhc2UgYW5kIHRoZSBwYXlsb2FkIHBoYXNlIG9mIHRoZSBDQU4gRkQgZnJhbWUuIFRoZXJlZm9yZSBhCisgIHNlY29uZCBiaXQgdGltaW5nIGhhcyB0byBiZSBzcGVjaWZpZWQgaW4gb3JkZXIgdG8gZW5hYmxlIHRoZSBDQU4gRkQgYml0cmF0ZS4KKworICBBZGRpdGlvbmFsbHkgQ0FOIEZEIGNhcGFibGUgQ0FOIGNvbnRyb2xsZXJzIHN1cHBvcnQgdXAgdG8gNjQgYnl0ZXMgb2YKKyAgcGF5bG9hZC4gVGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGVuZ3RoIGluIGNhbl9mcmFtZS5jYW5fZGxjIGFuZAorICBjYW5mZF9mcmFtZS5sZW4gZm9yIHVzZXJzcGFjZSBhcHBsaWNhdGlvbnMgYW5kIGluc2lkZSB0aGUgTGludXggbmV0d29yaworICBsYXllciBpcyBhIHBsYWluIHZhbHVlIGZyb20gMCAuLiA2NCBpbnN0ZWFkIG9mIHRoZSBDQU4gJ2RhdGEgbGVuZ3RoIGNvZGUnLgorICBUaGUgZGF0YSBsZW5ndGggY29kZSB3YXMgYSAxOjEgbWFwcGluZyB0byB0aGUgcGF5bG9hZCBsZW5ndGggaW4gdGhlIGxlZ2FjeQorICBDQU4gZnJhbWVzIGFueXdheS4gVGhlIHBheWxvYWQgbGVuZ3RoIHRvIHRoZSBidXMtcmVsZXZhbnQgRExDIG1hcHBpbmcgaXMKKyAgb25seSBwZXJmb3JtZWQgaW5zaWRlIHRoZSBDQU4gZHJpdmVycywgcHJlZmVyYWJseSB3aXRoIHRoZSBoZWxwZXIKKyAgZnVuY3Rpb25zIGNhbl9kbGMybGVuKCkgYW5kIGNhbl9sZW4yZGxjKCkuCisKKyAgVGhlIENBTiBuZXRkZXZpY2UgZHJpdmVyIGNhcGFiaWxpdGllcyBjYW4gYmUgZGlzdGluZ3Vpc2hlZCBieSB0aGUgbmV0d29yaworICBkZXZpY2VzIG1heGltdW0gdHJhbnNmZXIgdW5pdCAoTVRVKToKKworICBNVFUgPSAxNiAoQ0FOX01UVSkgICA9PiBzaXplb2Yoc3RydWN0IGNhbl9mcmFtZSkgICA9PiAnbGVnYWN5JyBDQU4gZGV2aWNlCisgIE1UVSA9IDcyIChDQU5GRF9NVFUpID0+IHNpemVvZihzdHJ1Y3QgY2FuZmRfZnJhbWUpID0+IENBTiBGRCBjYXBhYmxlIGRldmljZQorCisgIFRoZSBDQU4gZGV2aWNlIE1UVSBjYW4gYmUgcmV0cmlldmVkIGUuZy4gd2l0aCBhIFNJT0NHSUZNVFUgaW9jdGwoKSBzeXNjYWxsLgorICBOLkIuIENBTiBGRCBjYXBhYmxlIGRldmljZXMgY2FuIGFsc28gaGFuZGxlIGFuZCBzZW5kIGxlZ2FjeSBDQU4gZnJhbWVzLgorCisgIFdoZW4gY29uZmlndXJpbmcgQ0FOIEZEIGNhcGFibGUgQ0FOIGNvbnRyb2xsZXJzIGFuIGFkZGl0aW9uYWwgJ2RhdGEnIGJpdHJhdGUKKyAgaGFzIHRvIGJlIHNldC4gVGhpcyBiaXRyYXRlIGZvciB0aGUgZGF0YSBwaGFzZSBvZiB0aGUgQ0FOIEZEIGZyYW1lIGhhcyB0byBiZQorICBhdCBsZWFzdCB0aGUgYml0cmF0ZSB3aGljaCB3YXMgY29uZmlndXJlZCBmb3IgdGhlIGFyYml0cmF0aW9uIHBoYXNlLiBUaGlzCisgIHNlY29uZCBiaXRyYXRlIGlzIHNwZWNpZmllZCBhbmFsb2d1ZSB0byB0aGUgZmlyc3QgYml0cmF0ZSBidXQgdGhlIGJpdHJhdGUKKyAgc2V0dGluZyBrZXl3b3JkcyBmb3IgdGhlICdkYXRhJyBiaXRyYXRlIHN0YXJ0IHdpdGggJ2QnIGUuZy4gZGJpdHJhdGUsCisgIGRzYW1wbGUtcG9pbnQsIGRzancgb3IgZHRxIGFuZCBzaW1pbGFyIHNldHRpbmdzLiBXaGVuIGEgZGF0YSBiaXRyYXRlIGlzIHNldAorICB3aXRoaW4gdGhlIGNvbmZpZ3VyYXRpb24gcHJvY2VzcyB0aGUgY29udHJvbGxlciBvcHRpb24gImZkIG9uIiBjYW4gYmUKKyAgc3BlY2lmaWVkIHRvIGVuYWJsZSB0aGUgQ0FOIEZEIG1vZGUgaW4gdGhlIENBTiBjb250cm9sbGVyLiBUaGlzIGNvbnRyb2xsZXIKKyAgb3B0aW9uIGFsc28gc3dpdGNoZXMgdGhlIGRldmljZSBNVFUgdG8gNzIgKENBTkZEX01UVSkuCisKKyAgVGhlIGZpcnN0IENBTiBGRCBzcGVjaWZpY2F0aW9uIHByZXNlbnRlZCBhcyB3aGl0ZXBhcGVyIGF0IHRoZSBJbnRlcm5hdGlvbmFsCisgIENBTiBDb25mZXJlbmNlIDIwMTIgbmVlZGVkIHRvIGJlIGltcHJvdmVkIGZvciBkYXRhIGludGVncml0eSByZWFzb25zLgorICBUaGVyZWZvcmUgdHdvIENBTiBGRCBpbXBsZW1lbnRhdGlvbnMgaGF2ZSB0byBiZSBkaXN0aW5ndWlzaGVkIHRvZGF5OgorCisgIC0gSVNPIGNvbXBsaWFudDogICAgIFRoZSBJU08gMTE4OTgtMToyMDE1IENBTiBGRCBpbXBsZW1lbnRhdGlvbiAoZGVmYXVsdCkKKyAgLSBub24tSVNPIGNvbXBsaWFudDogVGhlIENBTiBGRCBpbXBsZW1lbnRhdGlvbiBmb2xsb3dpbmcgdGhlIDIwMTIgd2hpdGVwYXBlcgorCisgIEZpbmFsbHkgdGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIENBTiBGRCBjb250cm9sbGVyczoKKworICAxLiBJU08gY29tcGxpYW50IChmaXhlZCkKKyAgMi4gbm9uLUlTTyBjb21wbGlhbnQgKGZpeGVkLCBsaWtlIHRoZSBNX0NBTiBJUCBjb3JlIHYzLjAuMSBpbiBtX2Nhbi5jKQorICAzLiBJU08vbm9uLUlTTyBDQU4gRkQgY29udHJvbGxlcnMgKHN3aXRjaGFibGUsIGxpa2UgdGhlIFBFQUsgUENBTi1VU0IgRkQpCisKKyAgVGhlIGN1cnJlbnQgSVNPL25vbi1JU08gbW9kZSBpcyBhbm5vdW5jZWQgYnkgdGhlIENBTiBjb250cm9sbGVyIGRyaXZlciB2aWEKKyAgbmV0bGluayBhbmQgZGlzcGxheWVkIGJ5IHRoZSAnaXAnIHRvb2wgKGNvbnRyb2xsZXIgb3B0aW9uIEZELU5PTi1JU08pLgorICBUaGUgSVNPL25vbi1JU08tbW9kZSBjYW4gYmUgYWx0ZXJlZCBieSBzZXR0aW5nICdmZC1ub24taXNvIHtvbnxvZmZ9JyBmb3IKKyAgc3dpdGNoYWJsZSBDQU4gRkQgY29udHJvbGxlcnMgb25seS4KKworICBFeGFtcGxlIGNvbmZpZ3VyaW5nIDUwMCBrYml0L3MgYXJiaXRyYXRpb24gYml0cmF0ZSBhbmQgNCBNYml0L3MgZGF0YSBiaXRyYXRlOgorCisgICAgJCBpcCBsaW5rIHNldCBjYW4wIHVwIHR5cGUgY2FuIGJpdHJhdGUgNTAwMDAwIHNhbXBsZS1wb2ludCAwLjc1IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJpdHJhdGUgNDAwMDAwMCBkc2FtcGxlLXBvaW50IDAuOCBmZCBvbgorICAgICQgaXAgLWRldGFpbHMgbGluayBzaG93IGNhbjAKKyAgICA1OiBjYW4wOiA8Tk9BUlAsVVAsTE9XRVJfVVAsRUNITz4gbXR1IDcyIHFkaXNjIHBmaWZvX2Zhc3Qgc3RhdGUgVU5LTk9XTiBcCisgICAgICAgICAgICAgbW9kZSBERUZBVUxUIGdyb3VwIGRlZmF1bHQgcWxlbiAxMAorICAgIGxpbmsvY2FuICBwcm9taXNjdWl0eSAwCisgICAgY2FuIDxGRD4gc3RhdGUgRVJST1ItQUNUSVZFIChiZXJyLWNvdW50ZXIgdHggMCByeCAwKSByZXN0YXJ0LW1zIDAKKyAgICAgICAgICBiaXRyYXRlIDUwMDAwMCBzYW1wbGUtcG9pbnQgMC43NTAKKyAgICAgICAgICB0cSA1MCBwcm9wLXNlZyAxNCBwaGFzZS1zZWcxIDE1IHBoYXNlLXNlZzIgMTAgc2p3IDEKKyAgICAgICAgICBwY2FuX3VzYl9wcm9fZmQ6IHRzZWcxIDEuLjY0IHRzZWcyIDEuLjE2IHNqdyAxLi4xNiBicnAgMS4uMTAyNCBcCisgICAgICAgICAgYnJwLWluYyAxCisgICAgICAgICAgZGJpdHJhdGUgNDAwMDAwMCBkc2FtcGxlLXBvaW50IDAuODAwCisgICAgICAgICAgZHRxIDEyIGRwcm9wLXNlZyA3IGRwaGFzZS1zZWcxIDggZHBoYXNlLXNlZzIgNCBkc2p3IDEKKyAgICAgICAgICBwY2FuX3VzYl9wcm9fZmQ6IGR0c2VnMSAxLi4xNiBkdHNlZzIgMS4uOCBkc2p3IDEuLjQgZGJycCAxLi4xMDI0IFwKKyAgICAgICAgICBkYnJwLWluYyAxCisgICAgICAgICAgY2xvY2sgODAwMDAwMDAKKworICBFeGFtcGxlIHdoZW4gJ2ZkLW5vbi1pc28gb24nIGlzIGFkZGVkIG9uIHRoaXMgc3dpdGNoYWJsZSBDQU4gRkQgYWRhcHRlcjoKKyAgIGNhbiA8RkQsRkQtTk9OLUlTTz4gc3RhdGUgRVJST1ItQUNUSVZFIChiZXJyLWNvdW50ZXIgdHggMCByeCAwKSByZXN0YXJ0LW1zIDAKKworICA2LjcgU3VwcG9ydGVkIENBTiBoYXJkd2FyZQorCisgIFBsZWFzZSBjaGVjayB0aGUgIktjb25maWciIGZpbGUgaW4gImRyaXZlcnMvbmV0L2NhbiIgdG8gZ2V0IGFuIGFjdHVhbAorICBsaXN0IG9mIHRoZSBzdXBwb3J0IENBTiBoYXJkd2FyZS4gT24gdGhlIFNvY2tldENBTiBwcm9qZWN0IHdlYnNpdGUKKyAgKHNlZSBjaGFwdGVyIDcpIHRoZXJlIG1pZ2h0IGJlIGZ1cnRoZXIgZHJpdmVycyBhdmFpbGFibGUsIGFsc28gZm9yCisgIG9sZGVyIGtlcm5lbCB2ZXJzaW9ucy4KKworNy4gU29ja2V0Q0FOIHJlc291cmNlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGUgTGludXggQ0FOIC8gU29ja2V0Q0FOIHByb2plY3QgcmVzc291cmNlcyAocHJvamVjdCBzaXRlIC8gbWFpbGluZyBsaXN0KQorICBhcmUgcmVmZXJlbmNlZCBpbiB0aGUgTUFJTlRBSU5FUlMgZmlsZSBpbiB0aGUgTGludXggc291cmNlIHRyZWUuCisgIFNlYXJjaCBmb3IgQ0FOIE5FVFdPUksgW0xBWUVSU3xEUklWRVJTXS4KKworOC4gQ3JlZGl0cworLS0tLS0tLS0tLQorCisgIE9saXZlciBIYXJ0a29wcCAoUEZfQ0FOIGNvcmUsIGZpbHRlcnMsIGRyaXZlcnMsIGJjbSwgU0pBMTAwMCBkcml2ZXIpCisgIFVycyBUaHVlcm1hbm4gKFBGX0NBTiBjb3JlLCBrZXJuZWwgaW50ZWdyYXRpb24sIHNvY2tldCBpbnRlcmZhY2VzLCByYXcsIHZjYW4pCisgIEphbiBLaXprYSAoUlQtU29ja2V0Q0FOIGNvcmUsIFNvY2tldC1BUEkgcmVjb25jaWxpYXRpb24pCisgIFdvbGZnYW5nIEdyYW5kZWdnZXIgKFJULVNvY2tldENBTiBjb3JlICYgZHJpdmVycywgUmF3IFNvY2tldC1BUEkgcmV2aWV3cywKKyAgICAgICAgICAgICAgICAgICAgICAgQ0FOIGRldmljZSBkcml2ZXIgaW50ZXJmYWNlLCBNU0NBTiBkcml2ZXIpCisgIFJvYmVydCBTY2h3ZWJlbCAoZGVzaWduIHJldmlld3MsIFBUWGRpc3QgaW50ZWdyYXRpb24pCisgIE1hcmMgS2xlaW5lLUJ1ZGRlIChkZXNpZ24gcmV2aWV3cywgS2VybmVsIDIuNiBjbGVhbnVwcywgZHJpdmVycykKKyAgQmVuZWRpa3QgU3ByYW5nZXIgKHJldmlld3MpCisgIFRob21hcyBHbGVpeG5lciAoTEtNTCByZXZpZXdzLCBjb2Rpbmcgc3R5bGUsIHBvc3RpbmcgaGludHMpCisgIEFuZHJleSBWb2xrb3YgKGtlcm5lbCBzdWJ0cmVlIHN0cnVjdHVyZSwgaW9jdGxzLCBNU0NBTiBkcml2ZXIpCisgIE1hdHRoaWFzIEJydWtuZXIgKGZpcnN0IFNKQTEwMDAgQ0FOIG5ldGRldmljZSBpbXBsZW1lbnRhdGlvbiBRMi8yMDAzKQorICBLbGF1cyBIaXRzY2hsZXIgKFBFQUsgZHJpdmVyIGludGVncmF0aW9uKQorICBVd2UgS29wcGUgKENBTiBuZXRkZXZpY2VzIHdpdGggUEZfUEFDS0VUIGFwcHJvYWNoKQorICBNaWNoYWVsIFNjaHVsemUgKGRyaXZlciBsYXllciBsb29wYmFjayByZXF1aXJlbWVudCwgUlQgQ0FOIGRyaXZlcnMgcmV2aWV3KQorICBQYXZlbCBQaXNhIChCaXQtdGltaW5nIGNhbGN1bGF0aW9uKQorICBTYXNjaGEgSGF1ZXIgKFNKQTEwMDAgcGxhdGZvcm0gZHJpdmVyKQorICBTZWJhc3RpYW4gSGFhcyAoU0pBMTAwMCBFTVMgUENJIGRyaXZlcikKKyAgTWFya3VzIFBsZXNzaW5nIChTSkExMDAwIEVNUyBQQ0kgZHJpdmVyKQorICBQZXIgRGFsZW4gKFNKQTEwMDAgS3Zhc2VyIFBDSSBkcml2ZXIpCisgIFNhbSBSYXZuYm9yZyAocmV2aWV3cywgY29kaW5nIHN0eWxlLCBrYnVpbGQgaGVscCkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jZGNfbWJpbS50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2RjX21iaW0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExNWVhNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2RjX21iaW0udHh0CkBAIC0wLDAgKzEsMzM5IEBACisgICAgIGNkY19tYmltIC0gRHJpdmVyIGZvciBDREMgTUJJTSBNb2JpbGUgQnJvYWRiYW5kIG1vZGVtcworICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBjZGNfbWJpbSBkcml2ZXIgc3VwcG9ydHMgVVNCIGRldmljZXMgY29uZm9ybWluZyB0byB0aGUgIlVuaXZlcnNhbAorU2VyaWFsIEJ1cyBDb21tdW5pY2F0aW9ucyBDbGFzcyBTdWJjbGFzcyBTcGVjaWZpY2F0aW9uIGZvciBNb2JpbGUKK0Jyb2FkYmFuZCBJbnRlcmZhY2UgTW9kZWwiIFsxXSwgd2hpY2ggaXMgYSBmdXJ0aGVyIGRldmVsb3BtZW50IG9mCisiVW5pdmVyc2FsIFNlcmlhbCBCdXMgQ29tbXVuaWNhdGlvbnMgQ2xhc3MgU3ViY2xhc3MgU3BlY2lmaWNhdGlvbnMgZm9yCitOZXR3b3JrIENvbnRyb2wgTW9kZWwgRGV2aWNlcyIgWzJdIG9wdGltaXplZCBmb3IgTW9iaWxlIEJyb2FkYmFuZAorZGV2aWNlcywgYWthICIzRy9MVEUgbW9kZW1zIi4KKworCitDb21tYW5kIExpbmUgUGFyYW1ldGVycworPT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGNkY19tYmltIGRyaXZlciBoYXMgbm8gcGFyYW1ldGVycyBvZiBpdHMgb3duLiAgQnV0IHRoZSBwcm9iaW5nCitiZWhhdmlvdXIgZm9yIE5DTSAxLjAgYmFja3dhcmRzIGNvbXBhdGlibGUgTUJJTSBmdW5jdGlvbnMgKGFuCisiTkNNL01CSU0gZnVuY3Rpb24iIGFzIGRlZmluZWQgaW4gc2VjdGlvbiAzLjIgb2YgWzFdKSBpcyBhZmZlY3RlZAorYnkgYSBjZGNfbmNtIGRyaXZlciBwYXJhbWV0ZXI6CisKK3ByZWZlcl9tYmltCistLS0tLS0tLS0tLQorVHlwZTogICAgICAgICAgQm9vbGVhbgorVmFsaWQgUmFuZ2U6ICAgTi9ZICgwLTEpCitEZWZhdWx0IFZhbHVlOiBZIChNQklNIGlzIHByZWZlcnJlZCkKKworVGhpcyBwYXJhbWV0ZXIgc2V0cyB0aGUgc3lzdGVtIHBvbGljeSBmb3IgTkNNL01CSU0gZnVuY3Rpb25zLiAgU3VjaAorZnVuY3Rpb25zIHdpbGwgYmUgaGFuZGxlZCBieSBlaXRoZXIgdGhlIGNkY19uY20gZHJpdmVyIG9yIHRoZSBjZGNfbWJpbQorZHJpdmVyIGRlcGVuZGluZyBvbiB0aGUgcHJlZmVyX21iaW0gc2V0dGluZy4gIFNldHRpbmcgcHJlZmVyX21iaW09TgorbWFrZXMgdGhlIGNkY19tYmltIGRyaXZlciBpZ25vcmUgdGhlc2UgZnVuY3Rpb25zIGFuZCBsZXRzIHRoZSBjZGNfbmNtCitkcml2ZXIgaGFuZGxlIHRoZW0gaW5zdGVhZC4KKworVGhlIHBhcmFtZXRlciBpcyB3cml0YWJsZSwgYW5kIGNhbiBiZSBjaGFuZ2VkIGF0IGFueSB0aW1lLiBBIG1hbnVhbAordW5iaW5kL2JpbmQgaXMgcmVxdWlyZWQgdG8gbWFrZSB0aGUgY2hhbmdlIGVmZmVjdGl2ZSBmb3IgTkNNL01CSU0KK2Z1bmN0aW9ucyBib3VuZCB0byB0aGUgIndyb25nIiBkcml2ZXIKKworCitCYXNpYyB1c2FnZQorPT09PT09PT09PT0KKworTUJJTSBmdW5jdGlvbnMgYXJlIGluYWN0aXZlIHdoZW4gdW5tYW5hZ2VkLiBUaGUgY2RjX21iaW0gZHJpdmVyIG9ubHkKK3Byb3ZpZGVzIGFuIHVzZXJzcGFjZSBpbnRlcmZhY2UgdG8gdGhlIE1CSU0gY29udHJvbCBjaGFubmVsLCBhbmQgd2lsbAorbm90IHBhcnRpY2lwYXRlIGluIHRoZSBtYW5hZ2VtZW50IG9mIHRoZSBmdW5jdGlvbi4gVGhpcyBpbXBsaWVzIHRoYXQgYQordXNlcnNwYWNlIE1CSU0gbWFuYWdlbWVudCBhcHBsaWNhdGlvbiBhbHdheXMgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIGEKK01CSU0gZnVuY3Rpb24uCisKK1N1Y2ggdXNlcnNwYWNlIGFwcGxpY2F0aW9ucyBpbmNsdWRlcywgYnV0IGFyZSBub3QgbGltaXRlZCB0bzoKKyAtIG1iaW1jbGkgKGluY2x1ZGVkIHdpdGggdGhlIGxpYm1iaW0gWzNdIGxpYnJhcnkpLCBhbmQKKyAtIE1vZGVtTWFuYWdlciBbNF0KKworRXN0YWJsaXNoaW5nIGEgTUJJTSBJUCBzZXNzaW9uIHJlZXF1aXJlcyBhdCBsZWFzdCB0aGVzZSBhY3Rpb25zIGJ5IHRoZQorbWFuYWdlbWVudCBhcHBsaWNhdGlvbjoKKyAtIG9wZW4gdGhlIGNvbnRyb2wgY2hhbm5lbAorIC0gY29uZmlndXJlIG5ldHdvcmsgY29ubmVjdGlvbiBzZXR0aW5ncworIC0gY29ubmVjdCB0byBuZXR3b3JrCisgLSBjb25maWd1cmUgSVAgaW50ZXJmYWNlCisKK01hbmFnZW1lbnQgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBkcml2ZXIgPC0+IHVzZXJzcGFjZSBpbnRlcmZhY2VzIGFyZSBkZXNjcmliZWQgYmVsb3cuICBUaGUgTUJJTQorY29udHJvbCBjaGFubmVsIHByb3RvY29sIGlzIGRlc2NyaWJlZCBpbiBbMV0uCisKKworTUJJTSBjb250cm9sIGNoYW5uZWwgdXNlcnNwYWNlIEFCSQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisvZGV2L2NkYy13ZG1YIGNoYXJhY3RlciBkZXZpY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIGRyaXZlciBjcmVhdGVzIGEgdHdvLXdheSBwaXBlIHRvIHRoZSBNQklNIGZ1bmN0aW9uIGNvbnRyb2wgY2hhbm5lbAordXNpbmcgdGhlIGNkYy13ZG0gZHJpdmVyIGFzIGEgc3ViZHJpdmVyLiAgVGhlIHVzZXJzcGFjZSBlbmQgb2YgdGhlCitjb250cm9sIGNoYW5uZWwgcGlwZSBpcyBhIC9kZXYvY2RjLXdkbVggY2hhcmFjdGVyIGRldmljZS4KKworVGhlIGNkY19tYmltIGRyaXZlciBkb2VzIG5vdCBwcm9jZXNzIG9yIHBvbGljZSBtZXNzYWdlcyBvbiB0aGUgY29udHJvbAorY2hhbm5lbC4gIFRoZSBjaGFubmVsIGlzIGZ1bGx5IGRlbGVnYXRlZCB0byB0aGUgdXNlcnNwYWNlIG1hbmFnZW1lbnQKK2FwcGxpY2F0aW9uLiAgSXQgaXMgdGhlcmVmb3JlIHVwIHRvIHRoaXMgYXBwbGljYXRpb24gdG8gZW5zdXJlIHRoYXQgaXQKK2NvbXBsaWVzIHdpdGggYWxsIHRoZSBjb250cm9sIGNoYW5uZWwgcmVxdWlyZW1lbnRzIGluIFsxXS4KKworVGhlIGNkYy13ZG1YIGRldmljZSBpcyBjcmVhdGVkIGFzIGEgY2hpbGQgb2YgdGhlIE1CSU0gY29udHJvbAoraW50ZXJmYWNlIFVTQiBkZXZpY2UuICBUaGUgY2hhcmFjdGVyIGRldmljZSBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYworTUJJTSBmdW5jdGlvbiBjYW4gYmUgbG9va2VkIHVwIHVzaW5nIHN5c2ZzLiAgRm9yIGV4YW1wbGU6CisKKyBiam9ybkBuZW1pOn4kIGxzIC9zeXMvYnVzL3VzYi9kcml2ZXJzL2NkY19tYmltLzItNDoyLjEyL3VzYm1pc2MKKyBjZGMtd2RtMAorCisgYmpvcm5AbmVtaTp+JCBncmVwIC4gL3N5cy9idXMvdXNiL2RyaXZlcnMvY2RjX21iaW0vMi00OjIuMTIvdXNibWlzYy9jZGMtd2RtMC9kZXYKKyAxODA6MAorCisKK1VTQiBjb25maWd1cmF0aW9uIGRlc2NyaXB0b3JzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIHdNYXhDb250cm9sTWVzc2FnZSBmaWVsZCBvZiB0aGUgQ0RDIE1CSU0gZnVuY3Rpb25hbCBkZXNjcmlwdG9yCitsaW1pdHMgdGhlIG1heGltdW0gY29udHJvbCBtZXNzYWdlIHNpemUuIFRoZSBtYW5hZ2FtZW50IGFwcGxpY2F0aW9uIGlzCityZXNwb25zaWJsZSBmb3IgbmVnb3RpYXRpbmcgYSBjb250cm9sIG1lc3NhZ2Ugc2l6ZSBjb21wbHlpbmcgd2l0aCB0aGUKK3JlcXVpcmVtZW50cyBpbiBzZWN0aW9uIDkuMy4xIG9mIFsxXSwgdGFraW5nIHRoaXMgZGVzY3JpcHRvciBmaWVsZAoraW50byBjb25zaWRlcmF0aW9uLgorCitUaGUgdXNlcnNwYWNlIGFwcGxpY2F0aW9uIGNhbiBhY2Nlc3MgdGhlIENEQyBNQklNIGZ1bmN0aW9uYWwKK2Rlc2NyaXB0b3Igb2YgYSBNQklNIGZ1bmN0aW9uIHVzaW5nIGVpdGhlciBvZiB0aGUgdHdvIFVTQgorY29uZmlndXJhdGlvbiBkZXNjcmlwdG9yIGtlcm5lbCBpbnRlcmZhY2VzIGRlc2NyaWJlZCBpbiBbNl0gb3IgWzddLgorCitTZWUgYWxzbyB0aGUgaW9jdGwgZG9jdW1lbnRhdGlvbiBiZWxvdy4KKworCitGcmFnbWVudGF0aW9uCistLS0tLS0tLS0tLS0tCitUaGUgdXNlcnNwYWNlIGFwcGxpY2F0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBhbGwgY29udHJvbCBtZXNzYWdlCitmcmFnbWVudGF0aW9uIGFuZCBkZWZyYWdtZW50YWlvbiwgYXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gOS41IG9mIFsxXS4KKworCisvZGV2L2NkYy13ZG1YIHdyaXRlKCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIE1CSU0gY29udHJvbCBtZXNzYWdlcyBmcm9tIHRoZSBtYW5hZ2VtZW50IGFwcGxpY2F0aW9uICptdXN0IG5vdCoKK2V4Y2VlZCB0aGUgbmVnb3RpYXRlZCBjb250cm9sIG1lc3NhZ2Ugc2l6ZS4KKworCisvZGV2L2NkYy13ZG1YIHJlYWQoKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBtYW5hZ2VtZW50IGFwcGxpY2F0aW9uICptdXN0KiBhY2NlcHQgY29udHJvbCBtZXNzYWdlcyBvZiB1cCB0aGUKK25lZ290aWF0ZWQgY29udHJvbCBtZXNzYWdlIHNpemUuCisKKworL2Rldi9jZGMtd2RtWCBpb2N0bCgpCistLS0tLS0tLS0tLS0tLS0tLS0tLQorSU9DVExfV0RNX01BWF9DT01NQU5EOiBHZXQgTWF4aW11bSBDb21tYW5kIFNpemUKK1RoaXMgaW9jdGwgcmV0dXJucyB0aGUgd01heENvbnRyb2xNZXNzYWdlIGZpZWxkIG9mIHRoZSBDREMgTUJJTQorZnVuY3Rpb25hbCBkZXNjcmlwdG9yIGZvciBNQklNIGRldmljZXMuICBUaGlzIGlzIGludGVuZGVkIGFzIGEKK2NvbnZlbmllbmNlLCBlbGltaW5hdGluZyB0aGUgbmVlZCB0byBwYXJzZSB0aGUgVVNCIGRlc2NyaXB0b3JzIGZyb20KK3VzZXJzcGFjZS4KKworCSNpbmNsdWRlIDxzdGRpby5oPgorCSNpbmNsdWRlIDxmY250bC5oPgorCSNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKwkjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKwkjaW5jbHVkZSA8bGludXgvdXNiL2NkYy13ZG0uaD4KKwlpbnQgbWFpbigpCisJeworCQlfX3UxNiBtYXg7CisJCWludCBmZCA9IG9wZW4oIi9kZXYvY2RjLXdkbTAiLCBPX1JEV1IpOworCQlpZiAoIWlvY3RsKGZkLCBJT0NUTF9XRE1fTUFYX0NPTU1BTkQsICZtYXgpKQorCQkJcHJpbnRmKCJ3TWF4Q29udHJvbE1lc3NhZ2UgaXMgJWRcbiIsIG1heCk7CisJfQorCisKK0N1c3RvbSBkZXZpY2Ugc2VydmljZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBNQklNIHNwZWNpZmljYXRpb24gYWxsb3dzIHZlbmRvcnMgdG8gZnJlZWx5IGRlZmluZSBhZGRpdGlvbmFsCitzZXJ2aWNlcy4gIFRoaXMgaXMgZnVsbHkgc3VwcG9ydGVkIGJ5IHRoZSBjZGNfbWJpbSBkcml2ZXIuCisKK1N1cHBvcnQgZm9yIG5ldyBNQklNIHNlcnZpY2VzLCBpbmNsdWRpbmcgdmVuZG9yIHNwZWNpZmllZCBzZXJ2aWNlcywgaXMKK2ltcGxlbWVudGVkIGVudGlyZWx5IGluIHVzZXJzcGFjZSwgbGlrZSB0aGUgcmVzdCBvZiB0aGUgTUJJTSBjb250cm9sCitwcm90b2NvbAorCitOZXcgc2VydmljZXMgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgaW4gdGhlIE1CSU0gUmVnaXN0cnkgWzVdLgorCisKKworTUJJTSBkYXRhIGNoYW5uZWwgdXNlcnNwYWNlIEFCSQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCit3d2FuWSBuZXR3b3JrIGRldmljZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBjZGNfbWJpbSBkcml2ZXIgcmVwcmVzZW50cyB0aGUgTUJJTSBkYXRhIGNoYW5uZWwgYXMgYSBzaW5nbGUKK25ldHdvcmsgZGV2aWNlIG9mIHRoZSAid3dhbiIgdHlwZS4gVGhpcyBuZXR3b3JrIGRldmljZSBpcyBpbml0aWFsbHkKK21hcHBlZCB0byBNQklNIElQIHNlc3Npb24gMC4KKworCitNdWx0aXBsZXhlZCBJUCBzZXNzaW9ucyAoSVBTKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK01CSU0gYWxsb3dzIG11bHRpcGxleGluZyB1cCB0byAyNTYgSVAgc2Vzc2lvbnMgb3ZlciBhIHNpbmdsZSBVU0IgZGF0YQorY2hhbm5lbC4gIFRoZSBjZGNfbWJpbSBkcml2ZXIgbW9kZWxzIHN1Y2ggSVAgc2Vzc2lvbnMgYXMgODAyLjFxIFZMQU4KK3N1YmRldmljZXMgb2YgdGhlIG1hc3RlciB3d2FuWSBkZXZpY2UsIG1hcHBpbmcgTUJJTSBJUCBzZXNzaW9uIFogdG8KK1ZMQU4gSUQgWiBmb3IgYWxsIHZhbHVlcyBvZiBaIGdyZWF0ZXIgdGhhbiAwLgorCitUaGUgZGV2aWNlIG1heGltdW0gWiBpcyBnaXZlbiBpbiB0aGUgTUJJTV9ERVZJQ0VfQ0FQU19JTkZPIHN0cnVjdHVyZQorZGVzY3JpYmVkIGluIHNlY3Rpb24gMTAuNS4xIG9mIFsxXS4KKworVGhlIHVzZXJzcGFjZSBtYW5hZ2VtZW50IGFwcGxpY2F0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBhZGRpbmcgbmV3CitWTEFOIGxpbmtzIHByaW9yIHRvIGVzdGFibGlzaGluZyBNQklNIElQIHNlc3Npb25zIHdoZXJlIHRoZSBTZXNzaW9uSWQKK2lzIGdyZWF0ZXIgdGhhbiAwLiBUaGVzZSBsaW5rcyBjYW4gYmUgYWRkZWQgYnkgdXNpbmcgdGhlIG5vcm1hbCBWTEFOCitrZXJuZWwgaW50ZXJmYWNlcywgZWl0aGVyIGlvY3RsIG9yIG5ldGxpbmsuCisKK0ZvciBleGFtcGxlLCBhZGRpbmcgYSBsaW5rIGZvciBhIE1CSU0gSVAgc2Vzc2lvbiB3aXRoIFNlc3Npb25JZCAzOgorCisgIGlwIGxpbmsgYWRkIGxpbmsgd3dhbjAgbmFtZSB3d2FuMC4zIHR5cGUgdmxhbiBpZCAzCisKK1RoZSBkcml2ZXIgd2lsbCBhdXRvbWF0aWNhbGx5IG1hcCB0aGUgInd3YW4wLjMiIG5ldHdvcmsgZGV2aWNlIHRvIE1CSU0KK0lQIHNlc3Npb24gMy4KKworCitEZXZpY2UgU2VydmljZSBTdHJlYW1zIChEU1MpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitNQklNIGFsc28gYWxsb3dzIHVwIHRvIDI1NiBub24tSVAgZGF0YSBzdHJlYW1zIHRvIGJlIG11bHRpcGxleGVkIG92ZXIKK3RoZSBzYW1lIHNoYXJlZCBVU0IgZGF0YSBjaGFubmVsLiAgVGhlIGNkY19tYmltIGRyaXZlciBtb2RlbHMgdGhlc2UKK3Nlc3Npb25zIGFzIGFub3RoZXIgc2V0IG9mIDgwMi4xcSBWTEFOIHN1YmRldmljZXMgb2YgdGhlIG1hc3RlciB3d2FuWQorZGV2aWNlLCBtYXBwaW5nIE1CSU0gRFNTIHNlc3Npb24gQSB0byBWTEFOIElEICgyNTYgKyBBKSBmb3IgYWxsIHZhbHVlcworb2YgQS4KKworVGhlIGRldmljZSBtYXhpbXVtIEEgaXMgZ2l2ZW4gaW4gdGhlIE1CSU1fREVWSUNFX1NFUlZJQ0VTX0lORk8KK3N0cnVjdHVyZSBkZXNjcmliZWQgaW4gc2VjdGlvbiAxMC41LjI5IG9mIFsxXS4KKworVGhlIERTUyBWTEFOIHN1YmRldmljZXMgYXJlIHVzZWQgYXMgYSBwcmFjdGljYWwgaW50ZXJmYWNlIGJldHdlZW4gdGhlCitzaGFyZWQgTUJJTSBkYXRhIGNoYW5uZWwgYW5kIGEgTUJJTSBEU1MgYXdhcmUgdXNlcnNwYWNlIGFwcGxpY2F0aW9uLgorSXQgaXMgbm90IGludGVuZGVkIHRvIGJlIHByZXNlbnRlZCBhcy1pcyB0byBhbiBlbmQgdXNlci4gVGhlCithc3N1bXB0aW9uIGlzIHRoYXQgYW4gdXNlcnNwYWNlIGFwcGxpY2F0aW9uIGluaXRpYXRpbmcgYSBEU1Mgc2Vzc2lvbgorYWxzbyB0YWtlcyBjYXJlIG9mIHRoZSBuZWNlc3NhcnkgZnJhbWluZyBvZiB0aGUgRFNTIGRhdGEsIHByZXNlbnRpbmcKK3RoZSBzdHJlYW0gdG8gdGhlIGVuZCB1c2VyIGluIGFuIGFwcHJvcHJpYXRlIHdheSBmb3IgdGhlIHN0cmVhbSB0eXBlLgorCitUaGUgbmV0d29yayBkZXZpY2UgQUJJIHJlcXVpcmVzIGEgZHVtbXkgZXRoZXJuZXQgaGVhZGVyIGZvciBldmVyeSBEU1MKK2RhdGEgZnJhbWUgYmVpbmcgdHJhbnNwb3J0ZWQuICBUaGUgY29udGVudHMgb2YgdGhpcyBoZWFkZXIgaXMKK2FyYml0cmFyeSwgd2l0aCB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbnM6CisgLSBUWCBmcmFtZXMgdXNpbmcgYW4gSVAgcHJvdG9jb2wgKDB4MDgwMCBvciAweDg2ZGQpIHdpbGwgYmUgZHJvcHBlZAorIC0gUlggZnJhbWVzIHdpbGwgaGF2ZSB0aGUgcHJvdG9jb2wgZmllbGQgc2V0IHRvIEVUSF9QXzgwMl8zIChidXQgd2lsbAorICAgbm90IGJlIHByb3Blcmx5IGZvcm1hdHRlZCA4MDIuMyBmcmFtZXMpCisgLSBSWCBmcmFtZXMgd2lsbCBoYXZlIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIHNldCB0byB0aGUgaGFyZHdhcmUKKyAgIGFkZHJlc3Mgb2YgdGhlIG1hc3RlciBkZXZpY2UKKworVGhlIERTUyBzdXBwb3J0aW5nIHVzZXJzcGFjZSBtYW5hZ2VtZW50IGFwcGxpY2F0aW9uIGlzIHJlc3BvbnNpYmxlIGZvcgorYWRkaW5nIHRoZSBkdW1teSBldGhlcm5ldCBoZWFkZXIgb24gVFggYW5kIHN0cmlwcGluZyBpdCBvbiBSWC4KKworVGhpcyBpcyBhIHNpbXBsZSBleGFtcGxlIHVzaW5nIHRvb2xzIGNvbW1vbmx5IGF2YWlsYWJsZSwgZXhwb3J0aW5nCitEc3NTZXNzaW9uSWQgNSBhcyBhIHB0eSBjaGFyYWN0ZXIgZGV2aWNlIHBvaW50ZWQgdG8gYnkgYSAvZGV2L25tZWEKK3N5bWxpbms6CisKKyAgaXAgbGluayBhZGQgbGluayB3d2FuMCBuYW1lIHd3YW4wLmRzczUgdHlwZSB2bGFuIGlkIDI2MQorICBpcCBsaW5rIHNldCBkZXYgd3dhbjAuZHNzNSB1cAorICBzb2NhdCBJTlRFUkZBQ0U6d3dhbjAuZHNzNSx0eXBlPTIgUFRZOixlY2hvPTAsbGluaz0vZGV2L25tZWEKKworVGhpcyBpcyBvbmx5IGFuIGV4YW1wbGUsIG1vc3Qgc3VpdGFibGUgZm9yIHRlc3Rpbmcgb3V0IGEgRFNTCitzZXJ2aWNlLiBVc2Vyc3BhY2UgYXBwbGljYXRpb25zIHN1cHBvcnRpbmcgc3BlY2lmaWMgTUJJTSBEU1Mgc2VydmljZXMKK2FyZSBleHBlY3RlZCB0byB1c2UgdGhlIHRvb2xzIGFuZCBwcm9ncmFtbWluZyBpbnRlcmZhY2VzIHJlcXVpcmVkIGJ5Cit0aGF0IHNlcnZpY2UuCisKK05vdGUgdGhhdCBhZGRpbmcgVkxBTiBsaW5rcyBmb3IgRFNTIHNlc3Npb25zIGlzIGVudGlyZWx5IG9wdGlvbmFsLiAgQQorbWFuYWdlbWVudCBhcHBsaWNhdGlvbiBtYXkgaW5zdGVhZCBjaG9vc2UgdG8gYmluZCBhIHBhY2tldCBzb2NrZXQKK2RpcmVjdGx5IHRvIHRoZSBtYXN0ZXIgbmV0d29yayBkZXZpY2UsIHVzaW5nIHRoZSByZWNlaXZlZCBWTEFOIHRhZ3MgdG8KK21hcCBmcmFtZXMgdG8gdGhlIGNvcnJlY3QgRFNTIHNlc3Npb24gYW5kIGFkZGluZyAxOCBieXRlIFZMQU4gZXRoZXJuZXQKK2hlYWRlcnMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgdGFnIG9uIFRYLiAgSW4gdGhpcyBjYXNlIHVzaW5nIGEgc29ja2V0CitmaWx0ZXIgaXMgcmVjb21tZW5kZWQsIG1hdGNoaW5nIG9ubHkgdGhlIERTUyBWTEFOIHN1YnNldC4gVGhpcyBhdm9pZAordW5uZWNlc3NhcnkgY29weWluZyBvZiB1bnJlbGF0ZWQgSVAgc2Vzc2lvbiBkYXRhIHRvIHVzZXJzcGFjZS4gIEZvcgorZXhhbXBsZToKKworICBzdGF0aWMgc3RydWN0IHNvY2tfZmlsdGVyIGRzc2ZpbHRlcltdID0geworCS8qIHVzZSBzcGVjaWFsIG5lZ2F0aXZlIG9mZnNldHMgdG8gZ2V0IFZMQU4gdGFnICovCisJQlBGX1NUTVQoQlBGX0xEfEJQRl9CfEJQRl9BQlMsIFNLRl9BRF9PRkYgKyBTS0ZfQURfVkxBTl9UQUdfUFJFU0VOVCksCisJQlBGX0pVTVAoQlBGX0pNUHxCUEZfSkVRfEJQRl9LLCAxLCAwLCA2KSwgLyogdHJ1ZSAqLworCisJLyogdmVyaWZ5IERTUyBWTEFOIHJhbmdlICovCisJQlBGX1NUTVQoQlBGX0xEfEJQRl9IfEJQRl9BQlMsIFNLRl9BRF9PRkYgKyBTS0ZfQURfVkxBTl9UQUcpLAorCUJQRl9KVU1QKEJQRl9KTVB8QlBGX0pHRXxCUEZfSywgMjU2LCAwLCA0KSwJLyogMjU2IGlzIGZpcnN0IERTUyBWTEFOICovCisJQlBGX0pVTVAoQlBGX0pNUHxCUEZfSkdFfEJQRl9LLCA1MTIsIDMsIDApLAkvKiA1MTEgaXMgbGFzdCBEU1MgVkxBTiAqLworCisJLyogdmVyaWZ5IGV0aGVydHlwZSAqLworICAgICAgICBCUEZfU1RNVChCUEZfTER8QlBGX0h8QlBGX0FCUywgMiAqIEVUSF9BTEVOKSwKKyAgICAgICAgQlBGX0pVTVAoQlBGX0pNUHxCUEZfSkVRfEJQRl9LLCBFVEhfUF84MDJfMywgMCwgMSksCisKKyAgICAgICAgQlBGX1NUTVQoQlBGX1JFVHxCUEZfSywgKHVfaW50KS0xKSwJLyogYWNjZXB0ICovCisgICAgICAgIEJQRl9TVE1UKEJQRl9SRVR8QlBGX0ssIDApLAkJLyogaWdub3JlICovCisgIH07CisKKworCitUYWdnZWQgSVAgc2Vzc2lvbiAwIFZMQU4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQXMgZGVzY3JpYmVkIGFib3ZlLCBNQklNIElQIHNlc3Npb24gMCBpcyB0cmVhdGVkIGFzIHNwZWNpYWwgYnkgdGhlCitkcml2ZXIuICBJdCBpcyBpbml0aWFsbHkgbWFwcGVkIHRvIHVudGFnZ2VkIGZyYW1lcyBvbiB0aGUgd3dhblkKK25ldHdvcmsgZGV2aWNlLgorCitUaGlzIG1hcHBpbmcgaW1wbGllcyBhIGZldyByZXN0cmljdGlvbnMgb24gbXVsdGlwbGV4ZWQgSVBTIGFuZCBEU1MKK3Nlc3Npb25zLCB3aGljaCBtYXkgbm90IGFsd2F5cyBiZSBwcmFjdGljYWw6CisgLSBubyBJUFMgb3IgRFNTIHNlc3Npb24gY2FuIHVzZSBhIGZyYW1lIHNpemUgZ3JlYXRlciB0aGFuIHRoZSBNVFUgb24KKyAgIElQIHNlc3Npb24gMAorIC0gbm8gSVBTIG9yIERTUyBzZXNzaW9uIGNhbiBiZSBpbiB0aGUgdXAgc3RhdGUgdW5sZXNzIHRoZSBuZXR3b3JrCisgICBkZXZpY2UgcmVwcmVzZW50aW5nIElQIHNlc3Npb24gMCBhbHNvIGlzIHVwCisKK1RoZXNlIHByb2JsZW1zIGNhbiBiZSBhdm9pZGVkIGJ5IG9wdGlvbmFsbHkgbWFraW5nIHRoZSBkcml2ZXIgbWFwIElQCitzZXNzaW9uIDAgdG8gYSBWTEFOIHN1YmRldmljZSwgc2ltaWxhciB0byBhbGwgb3RoZXIgSVAgc2Vzc2lvbnMuICBUaGlzCitiZWhhdmlvdXIgaXMgdHJpZ2dlcmVkIGJ5IGFkZGluZyBhIFZMQU4gbGluayBmb3IgdGhlIG1hZ2ljIFZMQU4gSUQKKzQwOTQuICBUaGUgZHJpdmVyIHdpbGwgdGhlbiBpbW1lZGlhdGVseSBzdGFydCBtYXBwaW5nIE1CSU0gSVAgc2Vzc2lvbgorMCB0byB0aGlzIFZMQU4sIGFuZCB3aWxsIGRyb3AgdW50YWdnZWQgZnJhbWVzIG9uIHRoZSBtYXN0ZXIgd3dhblkKK2RldmljZS4KKworVGlwOiBJdCBtaWdodCBiZSBsZXNzIGNvbmZ1c2luZyB0byB0aGUgZW5kIHVzZXIgdG8gbmFtZSB0aGlzIFZMQU4KK3N1YmRldmljZSBhZnRlciB0aGUgTUJJTSBTZXNzaW9uSUQgaW5zdGVhZCBvZiB0aGUgVkxBTiBJRC4gIEZvcgorZXhhbXBsZToKKworICBpcCBsaW5rIGFkZCBsaW5rIHd3YW4wIG5hbWUgd3dhbjAuMCB0eXBlIHZsYW4gaWQgNDA5NAorCisKK1ZMQU4gbWFwcGluZworLS0tLS0tLS0tLS0tCisKK1N1bW1hcml6aW5nIHRoZSBjZGNfbWJpbSBkcml2ZXIgbWFwcGluZyBkZXNjcmliZWQgYWJvdmUsIHdlIGhhdmUgdGhpcworcmVsYXRpb25zaGlwIGJldHdlZW4gVkxBTiB0YWdzIG9uIHRoZSB3d2FuWSBuZXR3b3JrIGRldmljZSBhbmQgTUJJTQorc2Vzc2lvbnMgb24gdGhlIHNoYXJlZCBVU0IgZGF0YSBjaGFubmVsOgorCisgIFZMQU4gSUQgICAgICAgTUJJTSB0eXBlICAgTUJJTSBTZXNzaW9uSUQgICAgICAgICAgIE5vdGVzCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICB1bnRhZ2dlZCAgICAgIElQUyAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICBhKQorICAxIC0gMjU1ICAgICAgIElQUyAgICAgICAgIDEgLSAyNTUgPFZMQU5JRD4KKyAgMjU2IC0gNTExICAgICBEU1MgICAgICAgICAwIC0gMjU1IDxWTEFOSUQgLSAyNTY+CisgIDUxMiAtIDQwOTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIpCisgIDQwOTQgICAgICAgICAgSVBTICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgIGMpCisKKyAgICBhKSBpZiBubyBWTEFOIElEIDQwOTQgbGluayBleGlzdHMsIGVsc2UgZHJvcHBlZAorICAgIGIpIHVuc3VwcG9ydGVkIFZMQU4gcmFuZ2UsIHVuY29uZGl0aW9uYWxseSBkcm9wcGVkCisgICAgYykgaWYgYSBWTEFOIElEIDQwOTQgbGluayBleGlzdHMsIGVsc2UgZHJvcHBlZAorCisKKworCitSZWZlcmVuY2VzCis9PT09PT09PT09CisKK1sxXSBVU0IgSW1wbGVtZW50ZXJzIEZvcnVtLCBJbmMuIC0gIlVuaXZlcnNhbCBTZXJpYWwgQnVzCisgICAgICBDb21tdW5pY2F0aW9ucyBDbGFzcyBTdWJjbGFzcyBTcGVjaWZpY2F0aW9uIGZvciBNb2JpbGUgQnJvYWRiYW5kCisgICAgICBJbnRlcmZhY2UgTW9kZWwiLCBSZXZpc2lvbiAxLjAgKEVycmF0YSAxKSwgTWF5IDEsIDIwMTMKKyAgICAgIC0gaHR0cDovL3d3dy51c2Iub3JnL2RldmVsb3BlcnMvZG9jcy9kZXZjbGFzc19kb2NzLworCitbMl0gVVNCIEltcGxlbWVudGVycyBGb3J1bSwgSW5jLiAtICJVbml2ZXJzYWwgU2VyaWFsIEJ1cworICAgICAgQ29tbXVuaWNhdGlvbnMgQ2xhc3MgU3ViY2xhc3MgU3BlY2lmaWNhdGlvbnMgZm9yIE5ldHdvcmsgQ29udHJvbAorICAgICAgTW9kZWwgRGV2aWNlcyIsIFJldmlzaW9uIDEuMCAoRXJyYXRhIDEpLCBOb3ZlbWJlciAyNCwgMjAxMAorICAgICAgLSBodHRwOi8vd3d3LnVzYi5vcmcvZGV2ZWxvcGVycy9kb2NzL2RldmNsYXNzX2RvY3MvCisKK1szXSBsaWJtYmltIC0gImEgZ2xpYi1iYXNlZCBsaWJyYXJ5IGZvciB0YWxraW5nIHRvIFdXQU4gbW9kZW1zIGFuZAorICAgICAgZGV2aWNlcyB3aGljaCBzcGVhayB0aGUgTW9iaWxlIEludGVyZmFjZSBCcm9hZGJhbmQgTW9kZWwgKE1CSU0pCisgICAgICBwcm90b2NvbCIKKyAgICAgIC0gaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9saWJtYmltLworCitbNF0gTW9kZW1NYW5hZ2VyIC0gImEgREJ1cy1hY3RpdmF0ZWQgZGFlbW9uIHdoaWNoIGNvbnRyb2xzIG1vYmlsZQorICAgICAgYnJvYWRiYW5kICgyRy8zRy80RykgZGV2aWNlcyBhbmQgY29ubmVjdGlvbnMiCisgICAgICAtIGh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvTW9kZW1NYW5hZ2VyLworCitbNV0gIk1CSU0gKE1vYmlsZSBCcm9hZGJhbmQgSW50ZXJmYWNlIE1vZGVsKSBSZWdpc3RyeSIKKyAgICAgICAtIGh0dHA6Ly9jb21wbGlhbmNlLnVzYi5vcmcvbWJpbS8KKworWzZdICIvcHJvYy9idXMvdXNiIGZpbGVzeXN0ZW0gb3V0cHV0IgorICAgICAgIC0gRG9jdW1lbnRhdGlvbi91c2IvcHJvY191c2JfaW5mby50eHQKKworWzddICIvc3lzL2J1cy91c2IvZGV2aWNlcy8uLi4vZGVzY3JpcHRvcnMiCisgICAgICAgLSBEb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLXVzYgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2NvcHMudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2NvcHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlMzQ0YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY29wcy50eHQKQEAgLTAsMCArMSw2MyBAQAorVGV4dCBGaWxlIGZvciB0aGUgQ09QUyBMb2NhbFRhbGsgTGludXggZHJpdmVyIChjb3BzLmMpLgorCUJ5IEpheSBTY2h1bGlzdCA8anNjaGxzdEBzYW1iYS5vcmc+CisKK1RoaXMgZHJpdmVyIGhhcyB0d28gbW9kZXMgYW5kIHRoZXkgYXJlOiBEYXluYSBtb2RlIGFuZCBUYW5nZW50IG1vZGUuCitFYWNoIG1vZGUgY29ycmVzcG9uZHMgd2l0aCB0aGUgdHlwZSBvZiBjYXJkLiBJdCBoYXMgYmVlbiBmb3VuZAordGhhdCB0aGVyZSBhcmUgMiBtYWluIHR5cGVzIG9mIGNhcmRzIGFuZCBhbGwgb3RoZXIgY2FyZHMgYXJlCit0aGUgc2FtZSBhbmQganVzdCBoYXZlIGRpZmZlcmVudCBuYW1lcyBvciBvbmx5IGhhdmUgbWlub3IgZGlmZmVyZW5jZXMKK3N1Y2ggYXMgbW9yZSBJTyBwb3J0cy4gQXMgdGhpcyBkcml2ZXIgaXMgdGVzdGVkIGl0IHdpbGwKK2JlY29tZSBtb3JlIGNsZWFyIGV4YWN0bHkgd2hhdCBjYXJkcyBhcmUgc3VwcG9ydGVkLiAKKworUmlnaHQgbm93IHRoZXNlIGNhcmRzIGFyZSBrbm93biB0byB3b3JrIHdpdGggdGhlIENPUFMgZHJpdmVyLiBUaGUKK0xULTIwMCBjYXJkcyB3b3JrIGluIGEgc29tZXdoYXQgbW9yZSBsaW1pdGVkIGNhcGFjaXR5IHRoYW4gdGhlCitETDIwMCBjYXJkcywgd2hpY2ggd29yayB2ZXJ5IHdlbGwgYW5kIGFyZSBpbiB1c2UgYnkgbWFueSBwZW9wbGUuCisKK1RBTkdFTlQgZHJpdmVyIG1vZGU6CisJVGFuZ2VudCBBVEItSUksIE5vdmVsbCBOTC0xMDAwLCBEYXlzdGFyIERpZ2l0YWwgTFQtMjAwCitEQVlOQSBkcml2ZXIgbW9kZToKKwlEYXluYSBETDIwMDAvRGF5bmFUYWxrIFBDIChIYWxmIExlbmd0aCksIENPUFMgTFQtOTUsCisJRmFyYWxsb24gUGhvbmVORVQgUEMgSUlJLCBGYXJhbGxvbiBQaG9uZU5FVCBQQyBJSQorT3RoZXIgY2FyZHMgcG9zc2libHkgc3VwcG9ydGVkIG1vZGUgdW5rbm93biB0aG91Z2g6CisJRGF5bmEgREwyMDAwIChGdWxsIGxlbmd0aCkKKworVGhlIENPUFMgZHJpdmVyIGRlZmF1bHRzIHRvIHVzaW5nIERheW5hIG1vZGUuIFRvIGNoYW5nZSB0aGUgZHJpdmVyJ3MgCittb2RlIGlmIHlvdSBidWlsdCBhIGRyaXZlciB3aXRoIGR1YWwgc3VwcG9ydCB1c2UgYm9hcmRfdHlwZT0xIG9yCitib2FyZF90eXBlPTIgZm9yIERheW5hIG9yIFRhbmdlbnQgd2l0aCBpbnNtb2QuCisKKyoqIE9wZXJhdGlvbi9sb2FkaW5nIG9mIHRoZSBkcml2ZXIuCitVc2UgbW9kcHJvYmUgbGlrZSB0aGlzOgkvc2Jpbi9tb2Rwcm9iZSBjb3BzLm8gKElPICMpIChJUlEgIykKK0lmIHlvdSBkbyBub3Qgc3BlY2lmeSBhbnkgb3B0aW9ucyB0aGUgZHJpdmVyIHdpbGwgdHJ5IGFuZCB1c2UgdGhlIElPID0gMHgyNDAsCitJUlEgPSA1LiBBcyBvZiByaWdodCBub3cgSSB3b3VsZCBvbmx5IHVzZSBJUlEgNSBmb3IgdGhlIGNhcmQsIGlmIGF1dG9wcm9iaW5nLgorCitUbyBsb2FkIG11bHRpcGxlIENPUFMgZHJpdmVyIExvY2FsdGFsayBjYXJkcyB5b3UgY2FuIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nLgorCitpbnNtb2QgY29wcyBpbz0weDI0MCBpcnE9NQoraW5zbW9kIC1vIGNvcHMyIGNvcHMgaW89MHgyNjAgaXJxPTMKKworT3IgaW4gbGlsby5jb25mIHB1dCBzb21ldGhpbmcgbGlrZSB0aGlzOgorCWFwcGVuZD0iZXRoZXI9NSwweDI0MCxsdDAgZXRoZXI9MywweDI2MCxsdDEiCisKK1RoZW4gYnJpbmcgdXAgdGhlIGludGVyZmFjZSB3aXRoIGlmY29uZmlnLiBJdCB3aWxsIGxvb2sgc29tZXRoaW5nIGxpa2UgdGhpczoKK2x0MCAgICAgICBMaW5rIGVuY2FwOlVOU1BFQyAgSFdhZGRyIDAwLTAwLTAwLTAwLTAwLTAwLTAwLUY3LTAwLTAwLTAwLTAwLTAwLTAwLTAwLTAwCisgICAgICAgICAgaW5ldCBhZGRyOjE5Mi4xNjguMS4yICBCY2FzdDoxOTIuMTY4LjEuMjU1ICBNYXNrOjI1NS4yNTUuMjU1LjAKKyAgICAgICAgICBVUCBCUk9BRENBU1QgUlVOTklORyBOT0FSUCBNVUxUSUNBU1QgIE1UVTo2MDAgIE1ldHJpYzoxCisgICAgICAgICAgUlggcGFja2V0czowIGVycm9yczowIGRyb3BwZWQ6MCBvdmVycnVuczowIGZyYW1lOjAKKyAgICAgICAgICBUWCBwYWNrZXRzOjAgZXJyb3JzOjAgZHJvcHBlZDowIG92ZXJydW5zOjAgY2FycmllcjowIGNvbGw6MAorCisqKiBOZXRhdGFsayBDb25maWd1cmF0aW9uCitZb3Ugd2lsbCBuZWVkIHRvIGNvbmZpZ3VyZSBhdGFsa2Qgd2l0aCBzb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nIHRvIG1ha2UKK2l0IHdvcmsgd2l0aCB0aGUgY29wcy5jIGRyaXZlci4KKworKiBGb3Igc2luZ2xlIExUYWxrIGNhcmQgdXNlLgorZHVtbXkgLXNlZWQgLXBoYXNlIDIgLW5ldCAyMDAwIC1hZGRyIDIwMDAuMTAgLXpvbmUgIjEwMzMiCitsdDAgLXNlZWQgLXBoYXNlIDEgLW5ldCAxMDAwIC1hZGRyIDEwMDAuNTAgLXpvbmUgIjEwMzMiCisKKyogRm9yIG11bHRpcGxlIGNhcmRzLCBFdGhlcm5ldCBhbmQgTG9jYWxUYWxrLgorZXRoMCAtc2VlZCAtcGhhc2UgMiAtbmV0IDMwMDAgLWFkZHIgMzAwMC4yMCAtem9uZSAiMTAzMyIKK2x0MCAtc2VlZCAtcGhhc2UgMSAtbmV0IDEwMDAgLWFkZHIgMTAwMC41MCAtem9uZSAiMTAzMyIKKworKiBGb3IgbXVsdGlwbGUgTG9jYWxUYWxrIGNhcmRzLCBhbmQgYW4gRXRoZXJuZXQgY2FyZC4KKyogT3JkZXIgc2VlbXMgdG8gbWF0dGVyIGhlcmUsIEV0aGVybmV0IGxhc3QuCitsdDAgLXNlZWQgLXBoYXNlIDEgLW5ldCAxMDAwIC1hZGRyIDEwMDAuMTAgLXpvbmUgIkxvY2FsVGFsazEiCitsdDEgLXNlZWQgLXBoYXNlIDEgLW5ldCAyMDAwIC1hZGRyIDIwMDAuMjAgLXpvbmUgIkxvY2FsVGFsazIiCitldGgwIC1zZWVkIC1waGFzZSAyIC1uZXQgMzAwMCAtYWRkciAzMDAwLjMwIC16b25lICJFdGhlclRhbGsiCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY3M4OXgwLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jczg5eDAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlMTkwMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY3M4OXgwLnR4dApAQCAtMCwwICsxLDYyNCBAQAorCitOT1RFCistLS0tCisKK1RoaXMgZG9jdW1lbnQgd2FzIGNvbnRyaWJ1dGVkIGJ5IENpcnJ1cyBMb2dpYyBmb3Iga2VybmVsIDIuMi41LiAgVGhpcyB2ZXJzaW9uCitoYXMgYmVlbiB1cGRhdGVkIGZvciAyLjMuNDggYnkgQW5kcmV3IE1vcnRvbi4KKworQ2lycnVzIG1ha2UgYSBjb3B5IG9mIHRoaXMgZHJpdmVyIGF2YWlsYWJsZSBhdCB0aGVpciB3ZWJzaXRlLCBhcworZGVzY3JpYmVkIGJlbG93LiAgSW4gZ2VuZXJhbCwgeW91IHNob3VsZCB1c2UgdGhlIGRyaXZlciB2ZXJzaW9uIHdoaWNoCitjb21lcyB3aXRoIHlvdXIgTGludXggZGlzdHJpYnV0aW9uLgorCisKKworQ0lSUlVTIExPR0lDIExBTiBDUzg5MDAvQ1M4OTIwIEVUSEVSTkVUIEFEQVBURVJTCitMaW51eCBOZXR3b3JrIEludGVyZmFjZSBEcml2ZXIgdmVyLiAyLjAwIDxrZXJuZWwgMi4zLjQ4PgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIAorCitUQUJMRSBPRiBDT05URU5UUworCisxLjAgQ0lSUlVTIExPR0lDIExBTiBDUzg5MDAvQ1M4OTIwIEVUSEVSTkVUIEFEQVBURVJTCisgICAgMS4xIFByb2R1Y3QgT3ZlcnZpZXcgCisgICAgMS4yIERyaXZlciBEZXNjcmlwdGlvbgorCTEuMi4xIERyaXZlciBOYW1lCisJMS4yLjIgRmlsZSBpbiB0aGUgRHJpdmVyIFBhY2thZ2UKKyAgICAxLjMgU3lzdGVtIFJlcXVpcmVtZW50cworICAgIDEuNCBMaWNlbnNpbmcgSW5mb3JtYXRpb24KKworMi4wIEFEQVBURVIgSU5TVEFMTEFUSU9OIGFuZCBDT05GSUdVUkFUSU9OCisgICAgMi4xIENTODkwMC1iYXNlZCBBZGFwdGVyIENvbmZpZ3VyYXRpb24KKyAgICAyLjIgQ1M4OTIwLWJhc2VkIEFkYXB0ZXIgQ29uZmlndXJhdGlvbiAKKworMy4wIExPQURJTkcgVEhFIERSSVZFUiBBUyBBIE1PRFVMRQorCis0LjAgQ09NUElMSU5HIFRIRSBEUklWRVIKKyAgICA0LjEgQ29tcGlsaW5nIHRoZSBEcml2ZXIgYXMgYSBMb2FkYWJsZSBNb2R1bGUKKyAgICA0LjIgQ29tcGlsaW5nIHRoZSBkcml2ZXIgdG8gc3VwcG9ydCBtZW1vcnkgbW9kZQorICAgIDQuMyBDb21waWxpbmcgdGhlIGRyaXZlciB0byBzdXBwb3J0IFJ4IERNQSAKKworNS4wIFRFU1RJTkcgQU5EIFRST1VCTEVTSE9PVElORworICAgIDUuMSBLbm93biBEZWZlY3RzIGFuZCBMaW1pdGF0aW9ucworICAgIDUuMiBUZXN0aW5nIHRoZSBBZGFwdGVyCisgICAgICAgIDUuMi4xIERpYWdub3N0aWMgU2VsZi1UZXN0CisgICAgICAgIDUuMi4yIERpYWdub3N0aWMgTmV0d29yayBUZXN0CisgICAgNS4zIFVzaW5nIHRoZSBBZGFwdGVyJ3MgTEVEcworICAgIDUuNCBSZXNvbHZpbmcgSS9PIENvbmZsaWN0cworCis2LjAgVEVDSE5JQ0FMIFNVUFBPUlQKKyAgICA2LjEgQ29udGFjdGluZyBDaXJydXMgTG9naWMncyBUZWNobmljYWwgU3VwcG9ydAorICAgIDYuMiBJbmZvcm1hdGlvbiBSZXF1aXJlZCBCZWZvcmUgQ29udGFjdGluZyBUZWNobmljYWwgU3VwcG9ydAorICAgIDYuMyBPYnRhaW5pbmcgdGhlIExhdGVzdCBEcml2ZXIgVmVyc2lvbgorICAgIDYuNCBDdXJyZW50IG1haW50YWluZXIKKyAgICA2LjUgS2VybmVsIGJvb3QgcGFyYW1ldGVycworCisKKzEuMCBDSVJSVVMgTE9HSUMgTEFOIENTODkwMC9DUzg5MjAgRVRIRVJORVQgQURBUFRFUlMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCisxLjEgUFJPRFVDVCBPVkVSVklFVworCitUaGUgQ1M4OTAwLWJhc2VkIElTQSBFdGhlcm5ldCBBZGFwdGVycyBmcm9tIENpcnJ1cyBMb2dpYyBmb2xsb3cgCitJRUVFIDgwMi4zIHN0YW5kYXJkcyBhbmQgc3VwcG9ydCBoYWxmIG9yIGZ1bGwtZHVwbGV4IG9wZXJhdGlvbiBpbiBJU0EgYnVzIAorY29tcHV0ZXJzIG9uIDEwIE1icHMgRXRoZXJuZXQgbmV0d29ya3MuICBUaGUgYWRhcHRlcnMgYXJlIGRlc2lnbmVkIGZvciBvcGVyYXRpb24gCitpbiAxNi1iaXQgSVNBIG9yIEVJU0EgYnVzIGV4cGFuc2lvbiBzbG90cyBhbmQgYXJlIGF2YWlsYWJsZSBpbiAKKzEwQmFzZVQtb25seSBvciAzLW1lZGlhIGNvbmZpZ3VyYXRpb25zICgxMEJhc2VULCAxMEJhc2UyLCBhbmQgQVVJIGZvciAxMEJhc2UtNSAKK29yIGZpYmVyIG5ldHdvcmtzKS4gIAorCitDUzg5MjAtYmFzZWQgYWRhcHRlcnMgYXJlIHNpbWlsYXIgdG8gdGhlIENTODkwMC1iYXNlZCBhZGFwdGVyIHdpdGggYWRkaXRpb25hbCAKK2ZlYXR1cmVzIGZvciBQbHVnIGFuZCBQbGF5IChQblApIHN1cHBvcnQgYW5kIFdha2V1cCBGcmFtZSByZWNvZ25pdGlvbi4gIEFzIAorc3VjaCwgdGhlIGNvbmZpZ3VyYXRpb24gcHJvY2VkdXJlcyBkaWZmZXIgc29tZXdoYXQgYmV0d2VlbiB0aGUgdHdvIHR5cGVzIG9mIAorYWRhcHRlcnMuICBSZWZlciB0byB0aGUgIkFkYXB0ZXIgQ29uZmlndXJhdGlvbiIgc2VjdGlvbiBmb3IgZGV0YWlscyBvbiAKK2NvbmZpZ3VyaW5nIGJvdGggdHlwZXMgb2YgYWRhcHRlcnMuCisKKworMS4yIERSSVZFUiBERVNDUklQVElPTgorCitUaGUgQ1M4OTAwL0NTODkyMCBFdGhlcm5ldCBBZGFwdGVyIGRyaXZlciBmb3IgTGludXggc3VwcG9ydHMgdGhlIExpbnV4Cit2Mi4zLjQ4IG9yIGdyZWF0ZXIga2VybmVsLiAgSXQgY2FuIGJlIGNvbXBpbGVkIGRpcmVjdGx5IGludG8gdGhlIGtlcm5lbAorb3IgbG9hZGVkIGF0IHJ1bi10aW1lIGFzIGEgZGV2aWNlIGRyaXZlciBtb2R1bGUuCisKKzEuMi4xIERyaXZlciBOYW1lOiBjczg5eDAKKworMS4yLjIgRmlsZXMgaW4gdGhlIERyaXZlciBBcmNoaXZlOgorCitUaGUgZmlsZXMgaW4gdGhlIGRyaXZlciBhdCBDaXJydXMnIHdlYnNpdGUgaW5jbHVkZToKKworICByZWFkbWUudHh0ICAgICAgICAgLSB0aGlzIGZpbGUKKyAgYnVpbGQgICAgICAgICAgICAgIC0gYmF0Y2ggZmlsZSB0byBjb21waWxlIGNzODl4MC5jLgorICBjczg5eDAuYyAgICAgICAgICAgLSBkcml2ZXIgQyBjb2RlCisgIGNzODl4MC5oICAgICAgICAgICAtIGRyaXZlciBoZWFkZXIgZmlsZQorICBjczg5eDAubyAgICAgICAgICAgLSBwcmUtY29tcGlsZWQgbW9kdWxlIChmb3IgdjIuMi41IGtlcm5lbCkKKyAgY29uZmlnL0NvbmZpZy5pbiAgIC0gc2FtcGxlIGZpbGUgdG8gaW5jbHVkZSBjczg5eDAgZHJpdmVyIGluIHRoZSBrZXJuZWwuCisgIGNvbmZpZy9NYWtlZmlsZSAgICAtIHNhbXBsZSBmaWxlIHRvIGluY2x1ZGUgY3M4OXgwIGRyaXZlciBpbiB0aGUga2VybmVsLgorICBjb25maWcvU3BhY2UuYyAgICAgLSBzYW1wbGUgZmlsZSB0byBpbmNsdWRlIGNzODl4MCBkcml2ZXIgaW4gdGhlIGtlcm5lbC4KKworCisKKzEuMyBTWVNURU0gUkVRVUlSRU1FTlRTCisKK1RoZSBmb2xsb3dpbmcgaGFyZHdhcmUgaXMgcmVxdWlyZWQ6CisKKyAgICogQ2lycnVzIExvZ2ljIExBTiAoQ1M4OTAwLzIwLWJhc2VkKSBFdGhlcm5ldCBJU0EgQWRhcHRlciAgIAorCisgICAqIElCTSBvciBJQk0tY29tcGF0aWJsZSBQQyB3aXRoOgorICAgICAqIEFuIDgwMzg2IG9yIGhpZ2hlciBwcm9jZXNzb3IKKyAgICAgKiAxNiBieXRlcyBvZiBjb250aWd1b3VzIElPIHNwYWNlIGF2YWlsYWJsZSBiZXR3ZWVuIDIxMGggLSAzNzBoCisgICAgICogT25lIGF2YWlsYWJsZSBJUlEgKDUsMTAsMTEsb3IgMTIgZm9yIHRoZSBDUzg5MDAsIDMtNyw5LTE1IGZvciBDUzg5MjApLgorCisgICAqIEFwcHJvcHJpYXRlIGNhYmxlIChhbmQgY29ubmVjdG9yIGZvciBBVUksIDEwQkFTRS0yKSBmb3IgeW91ciBuZXR3b3JrCisgICAgIHRvcG9sb2d5LgorCitUaGUgZm9sbG93aW5nIHNvZnR3YXJlIGlzIHJlcXVpcmVkOgorCisqIExJTlVYIGtlcm5lbCB2ZXJzaW9uIDIuMy40OCBvciBoaWdoZXIKKworICAgKiBDUzg5MDAvMjAgU2V0dXAgVXRpbGl0eSAoRE9TLWJhc2VkKQorCisgICAqIExJTlVYIGtlcm5lbCBzb3VyY2VzIGZvciB5b3VyIGtlcm5lbCAoaWYgY29tcGlsaW5nIGludG8ga2VybmVsKQorCisgICAqIEdOVSBUb29sa2l0IChnY2MgYW5kIG1ha2UpIHYyLjYgb3IgYWJvdmUgKGlmIGNvbXBpbGluZyBpbnRvIGtlcm5lbCAKKyAgICAgb3IgYSBtb2R1bGUpICAgCisKKworCisxLjQgTElDRU5TSU5HIElORk9STUFUSU9OCisKK1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCit0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorRm91bmRhdGlvbiwgdmVyc2lvbiAxLgorCitUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKK0FOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciAKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgCittb3JlIGRldGFpbHMuCisKK0ZvciBhIGZ1bGwgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCitGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKworCisKKzIuMCBBREFQVEVSIElOU1RBTExBVElPTiBhbmQgQ09ORklHVVJBVElPTgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitCb3RoIHRoZSBDUzg5MDAgYW5kIENTODkyMC1iYXNlZCBhZGFwdGVycyBjYW4gYmUgY29uZmlndXJlZCB1c2luZyBwYXJhbWV0ZXJzIAorc3RvcmVkIGluIGFuIG9uLWJvYXJkIEVFUFJPTS4gWW91IG11c3QgdXNlIHRoZSBET1MtYmFzZWQgQ1M4OTAwLzIwIFNldHVwIAorVXRpbGl0eSBpZiB5b3Ugd2FudCB0byBjaGFuZ2UgdGhlIGFkYXB0ZXIncyBjb25maWd1cmF0aW9uIGluIEVFUFJPTS4gIAorCitXaGVuIGxvYWRpbmcgdGhlIGRyaXZlciBhcyBhIG1vZHVsZSwgeW91IGNhbiBzcGVjaWZ5IG1hbnkgb2YgdGhlIGFkYXB0ZXIncyAKK2NvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBvbiB0aGUgY29tbWFuZC1saW5lIHRvIG92ZXJyaWRlIHRoZSBFRVBST00ncyBzZXR0aW5ncyAKK29yIGZvciBpbnRlcmZhY2UgY29uZmlndXJhdGlvbiB3aGVuIGFuIEVFUFJPTSBpcyBub3QgdXNlZC4gKENTODkyMC1iYXNlZCAKK2FkYXB0ZXJzIG11c3QgdXNlIGFuIEVFUFJPTS4pIFNlZSBTZWN0aW9uIDMuMCBMT0FESU5HIFRIRSBEUklWRVIgQVMgQSBNT0RVTEUuCisKK1NpbmNlIHRoZSBDUzg5MDAvMjAgU2V0dXAgVXRpbGl0eSBpcyBhIERPUy1iYXNlZCBhcHBsaWNhdGlvbiwgeW91IG11c3QgaW5zdGFsbCAKK2FuZCBjb25maWd1cmUgdGhlIGFkYXB0ZXIgaW4gYSBET1MtYmFzZWQgc3lzdGVtIHVzaW5nIHRoZSBDUzg5MDAvMjAgU2V0dXAgCitVdGlsaXR5IGJlZm9yZSBpbnN0YWxsYXRpb24gaW4gdGhlIHRhcmdldCBMSU5VWCBzeXN0ZW0uICAoTm90IHJlcXVpcmVkIGlmIAoraW5zdGFsbGluZyBhIENTODkwMC1iYXNlZCBhZGFwdGVyIGFuZCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIGlzIGFjY2VwdGFibGUuKQorICAgICAKKworMi4xIENTODkwMC1CQVNFRCBBREFQVEVSIENPTkZJR1VSQVRJT04KKworQ1M4OTAwLWJhc2VkIGFkYXB0ZXJzIHNoaXBwZWQgZnJvbSBDaXJydXMgTG9naWMgaGF2ZSBiZWVuIGNvbmZpZ3VyZWQgCit3aXRoIHRoZSBmb2xsb3dpbmcgImRlZmF1bHQiIHNldHRpbmdzOgorCisgIE9wZXJhdGlvbiBNb2RlOiAgICAgIE1lbW9yeSBNb2RlCisgIElSUTogICAgICAgICAgICAgICAgIDEwCisgIEJhc2UgSS9PIEFkZHJlc3M6ICAgIDMwMAorICBNZW1vcnkgQmFzZSBBZGRyZXNzOiBEMDAwMAorICBPcHRpbWl6YXRpb246CSAgICAgICBET1MgQ2xpZW50CisgIFRyYW5zbWlzc2lvbiBNb2RlOiAgIEhhbGYtZHVwbGV4CisgIEJvb3RQcm9tOiAgICAgICAgICAgIE5vbmUKKyAgTWVkaWEgVHlwZToJICAgICAgIEF1dG9kZXRlY3QgKDMtbWVkaWEgY2FyZHMpIG9yIAorICAgICAgICAgICAgICAgICAgICAgICAxMEJBU0UtVCAoMTBCQVNFLVQgb25seSBhZGFwdGVyKQorCitZb3Ugc2hvdWxkIG9ubHkgY2hhbmdlIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgaWYgY29uZmxpY3RzIHdpdGggCithbm90aGVyIGFkYXB0ZXIgZXhpc3RzLiBUbyBjaGFuZ2UgdGhlIGFkYXB0ZXIncyBjb25maWd1cmF0aW9uLCBydW4gdGhlIAorQ1M4OTAwLzIwIFNldHVwIFV0aWxpdHkuIAorCisKKzIuMiBDUzg5MjAtQkFTRUQgQURBUFRFUiBDT05GSUdVUkFUSU9OCisKK0NTODkyMC1iYXNlZCBhZGFwdGVycyBhcmUgc2hpcHBlZCBmcm9tIENpcnJ1cyBMb2dpYyBjb25maWd1cmVkIGFzIFBsdWcKK2FuZCBQbGF5IChQblApIGVuYWJsZWQuICBIb3dldmVyLCBzaW5jZSB0aGUgY3M4OXgwIGRyaXZlciBkb2VzIE5PVAorc3VwcG9ydCBQblAsIHlvdSBtdXN0IGluc3RhbGwgdGhlIENTODkyMCBhZGFwdGVyIGluIGEgRE9TLWJhc2VkIFBDIGFuZAorcnVuIHRoZSBDUzg5MDAvMjAgU2V0dXAgVXRpbGl0eSB0byBkaXNhYmxlIFBuUCBhbmQgY29uZmlndXJlIHRoZQorYWRhcHRlciBiZWZvcmUgaW5zdGFsbGF0aW9uIGluIHRoZSB0YXJnZXQgTGludXggc3lzdGVtLiAgRmFpbHVyZSB0byBkbwordGhpcyB3aWxsIGxlYXZlIHRoZSBhZGFwdGVyIGluYWN0aXZlIGFuZCB0aGUgZHJpdmVyIHdpbGwgYmUgdW5hYmxlIHRvCitjb21tdW5pY2F0ZSB3aXRoIHRoZSBhZGFwdGVyLiAgCisKKworICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIAorICAgICAgICAqICAgICAgICAgICAgICAgICAgICBDUzg5MjAtQkFTRUQgQURBUFRFUlM6ICAgICAgICAgICAgICAgICAgICAqCisgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogCisgICAgICAgICogQ1M4OTIwLUJBU0VEIEFEQVBURVJTIEFSRSBQTFVHIGFuZCBQTEFZIEVOQUJMRUQgQlkgREVGQVVMVC4gICogCisgICAgICAgICogVEhFIENTODlYMCBEUklWRVIgRE9FUyBOT1QgU1VQUE9SVCBQblAuIFRIRVJFRk9SRSwgWU9VIE1VU1QgICoKKyAgICAgICAgKiBSVU4gVEhFIENTODkwMC8yMCBTRVRVUCBVVElMSVRZIFRPIERJU0FCTEUgUG5QIFNVUFBPUlQgQU5EICAgKgorICAgICAgICAqIFRPIEFDVElWQVRFIFRIRSBBREFQVEVSLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworCisKKworMy4wIExPQURJTkcgVEhFIERSSVZFUiBBUyBBIE1PRFVMRQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJZiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIGFzIGEgbG9hZGFibGUgbW9kdWxlLCB5b3UgY2FuIGxvYWQgdGhlIGRyaXZlciBtb2R1bGUKK3dpdGggdGhlICdtb2Rwcm9iZScgY29tbWFuZC4gIE1hbnkgb2YgdGhlIGFkYXB0ZXIncyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgY2FuIAorYmUgc3BlY2lmaWVkIGFzIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgdG8gdGhlIGxvYWQgY29tbWFuZC4gIFRoaXMgZmFjaWxpdHkgCitwcm92aWRlcyBhIG1lYW5zIHRvIG92ZXJyaWRlIHRoZSBFRVBST00ncyBzZXR0aW5ncyBvciBmb3IgaW50ZXJmYWNlIAorY29uZmlndXJhdGlvbiB3aGVuIGFuIEVFUFJPTSBpcyBub3QgdXNlZC4KKworRXhhbXBsZToKKworICAgIGluc21vZCBjczg5eDAubyBpbz0weDIwMCBpcnE9MHhBIG1lZGlhPWF1aQorCitUaGlzIGV4YW1wbGUgbG9hZHMgdGhlIG1vZHVsZSBhbmQgY29uZmlndXJlcyB0aGUgYWRhcHRlciB0byB1c2UgYW4gSU8gcG9ydCBiYXNlCithZGRyZXNzIG9mIDIwMGgsIGludGVycnVwdCAxMCwgYW5kIHVzZSB0aGUgQVVJIG1lZGlhIGNvbm5lY3Rpb24uICBUaGUgZm9sbG93aW5nCitjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSBvbiB0aGUgY29tbWFuZCBsaW5lOgorCisqIGlvPSMjIyAgICAgICAgICAgICAgIC0gc3BlY2lmeSBJTyBhZGRyZXNzICgyMDBoLTM2MGgpCisqIGlycT0jIyAgICAgICAgICAgICAgIC0gc3BlY2lmeSBpbnRlcnJ1cHQgbGV2ZWwKKyogdXNlX2RtYT0xICAgICAgICAgICAgLSBFbmFibGUgRE1BCisqIGRtYT0jICAgICAgICAgICAgICAgIC0gc3BlY2lmeSBkbWEgY2hhbm5lbCAoRHJpdmVyIGlzIGNvbXBpbGVkIHRvIHN1cHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICBSeCBETUEgb25seSkKKyogZG1hc2l6ZT0jICgxNiBvciA2NCkgLSBETUEgc2l6ZSAxNksgb3IgNjRLLiAgRGVmYXVsdCB2YWx1ZSBpcyBzZXQgdG8gMTYuCisqIG1lZGlhPXJqNDUgICAgICAgICAgIC0gc3BlY2lmeSBtZWRpYSB0eXBlCisgICBvciBtZWRpYT1ibmMKKyAgIG9yIG1lZGlhPWF1aQorICAgb3IgbWVkaWE9YXV0bworKiBkdXBsZXg9ZnVsbCAgICAgICAgICAtIHNwZWNpZnkgZm9yY2VkIGhhbGYvZnVsbC9hdXRvbmVnb3RpYXRlIGR1cGxleAorICAgb3IgZHVwbGV4PWhhbGYKKyAgIG9yIGR1cGxleD1hdXRvCisqIGRlYnVnPSMgICAgICAgICAgICAgIC0gZGVidWcgbGV2ZWwgKG9ubHkgYXZhaWxhYmxlIGlmIHRoZSBkcml2ZXIgd2FzIGNvbXBpbGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGRlYnVnZ2luZykKKworTk9URVM6CisKK2EpIElmIGFuIEVFUFJPTSBpcyBwcmVzZW50LCBhbnkgc3BlY2lmaWVkIGNvbW1hbmQtbGluZSBwYXJhbWV0ZXIKKyAgIHdpbGwgb3ZlcnJpZGUgdGhlIGNvcnJlc3BvbmRpbmcgY29uZmlndXJhdGlvbiB2YWx1ZSBzdG9yZWQgaW4KKyAgIEVFUFJPTS4KKworYikgVGhlICJpbyIgcGFyYW1ldGVyIG11c3QgYmUgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kLWxpbmUuICAKKworYykgVGhlIGRyaXZlcidzIGhhcmR3YXJlIHByb2JlIHJvdXRpbmUgaXMgZGVzaWduZWQgdG8gYXZvaWQKKyAgIHdyaXRpbmcgdG8gSS9PIHNwYWNlIHVudGlsIGl0IGtub3dzIHRoYXQgdGhlcmUgaXMgYSBjczg5eDAKKyAgIGNhcmQgYXQgdGhlIHdyaXR0ZW4gYWRkcmVzc2VzLiAgVGhpcyBjb3VsZCBjYXVzZSBwcm9ibGVtcworICAgd2l0aCBkZXZpY2UgcHJvYmluZy4gIFRvIGF2b2lkIHRoaXMgYmVoYXZpb3VyLCBhZGQgb25lCisgICB0byB0aGUgYGlvPScgbW9kdWxlIHBhcmFtZXRlci4gIFRoaXMgZG9lc24ndCBhY3R1YWxseSBjaGFuZ2UKKyAgIHRoZSBJL08gYWRkcmVzcywgYnV0IGl0IGlzIGEgZmxhZyB0byB0ZWxsIHRoZSBkcml2ZXIKKyAgIHRvIHBhcnRpYWxseSBpbml0aWFsaXNlIHRoZSBoYXJkd2FyZSBiZWZvcmUgdHJ5aW5nIHRvCisgICBpZGVudGlmeSB0aGUgY2FyZC4gIFRoaXMgY291bGQgYmUgZGFuZ2Vyb3VzIGlmIHlvdSBhcmUKKyAgIG5vdCBzdXJlIHRoYXQgdGhlcmUgaXMgYSBjczg5eDAgY2FyZCBhdCB0aGUgcHJvdmlkZWQgYWRkcmVzcy4KKworICAgRm9yIGV4YW1wbGUsIHRvIHNjYW4gZm9yIGFuIGFkYXB0ZXIgbG9jYXRlZCBhdCBJTyBiYXNlIDB4MzAwLAorICAgc3BlY2lmeSBhbiBJTyBhZGRyZXNzIG9mIDB4MzAxLiAgCisKK2QpIFRoZSAiZHVwbGV4PWF1dG8iIHBhcmFtZXRlciBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgdGhlIENTODkyMC4KKworZSkgVGhlIG1pbmltdW0gY29tbWFuZC1saW5lIGNvbmZpZ3VyYXRpb24gcmVxdWlyZWQgaWYgYW4gRUVQUk9NIGlzCisgICBub3QgcHJlc2VudCBpczoKKworICAgaW8gCisgICBpcnEgCisgICBtZWRpYSB0eXBlIChubyBhdXRvZGV0ZWN0KQorCitmKSBUaGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgcGFyYW1ldGVycyBhcmUgQ1M4OVhYIGRlZmF1bHRzICh2YWx1ZXMKKyAgIHVzZWQgd2l0aCBubyBFRVBST00gb3IgY29tbWFuZC1saW5lIGFyZ3VtZW50KS4KKworICAgKiBETUEgQnVyc3QgPSBlbmFibGVkCisgICAqIElPQ0hSRFkgRW5hYmxlZCA9IGVuYWJsZWQKKyAgICogVXNlU0EgPSBlbmFibGVkCisgICAqIENTODkwMCBkZWZhdWx0cyB0byBoYWxmLWR1cGxleCBpZiBub3Qgc3BlY2lmaWVkIG9uIGNvbW1hbmQtbGluZQorICAgKiBDUzg5MjAgZGVmYXVsdHMgdG8gYXV0b25lZyBpZiBub3Qgc3BlY2lmaWVkIG9uIGNvbW1hbmQtbGluZQorICAgKiBVc2UgcmVzZXQgZGVmYXVsdHMgZm9yIG90aGVyIGNvbmZpZyBwYXJhbWV0ZXJzCisgICAqIGRtYV9tb2RlID0gMAorCitnKSBZb3UgY2FuIHVzZSBpZmNvbmZpZyB0byBzZXQgdGhlIGFkYXB0ZXIncyBFdGhlcm5ldCBhZGRyZXNzLgorCitoKSBNYW55IExpbnV4IGRpc3RyaWJ1dGlvbnMgdXNlIHRoZSAnbW9kcHJvYmUnIGNvbW1hbmQgdG8gbG9hZAorICAgbW9kdWxlcy4gIFRoaXMgcHJvZ3JhbSB1c2VzIHRoZSAnL2V0Yy9jb25mLm1vZHVsZXMnIGZpbGUgdG8KKyAgIGRldGVybWluZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIHdoaWNoIGlzIHBhc3NlZCB0byBhIGRyaXZlcgorICAgbW9kdWxlIHdoZW4gaXQgaXMgbG9hZGVkLiAgQWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2hpY2ggYXJlCisgICBkZXNjcmliZWQgYWJvdmUgbWF5IGJlIHBsYWNlZCB3aXRoaW4gL2V0Yy9jb25mLm1vZHVsZXMuCisKKyAgIEZvciBleGFtcGxlOgorCisgICA+IGNhdCAvZXRjL2NvbmYubW9kdWxlcworICAgLi4uCisgICBhbGlhcyBldGgwIGNzODl4MAorICAgb3B0aW9ucyBjczg5eDAgaW89MHgwMjAwIGRtYT01IHVzZV9kbWE9MQorICAgLi4uCisKKyAgIEluIHRoaXMgZXhhbXBsZSB3ZSBhcmUgdGVsbGluZyB0aGUgbW9kdWxlIHN5c3RlbSB0aGF0IHRoZQorICAgZXRoZXJuZXQgZHJpdmVyIGZvciB0aGlzIG1hY2hpbmUgc2hvdWxkIHVzZSB0aGUgY3M4OXgwIGRyaXZlci4gIFdlCisgICBhcmUgYXNraW5nICdtb2Rwcm9iZScgdG8gcGFzcyB0aGUgJ2lvJywgJ2RtYScgYW5kICd1c2VfZG1hJworICAgYXJndW1lbnRzIHRvIHRoZSBkcml2ZXIgd2hlbiBpdCBpcyBsb2FkZWQuCisKK2kpIENpcnJ1cyByZWNvbW1lbmQgdGhhdCB0aGUgY3M4OXgwIHVzZSB0aGUgSVNBIERNQSBjaGFubmVscyA1LCA2IG9yCisgICA3LiAgWW91IHdpbGwgcHJvYmFibHkgZmluZCB0aGF0IG90aGVyIERNQSBjaGFubmVscyB3aWxsIG5vdCB3b3JrLgorCitqKSBUaGUgY3M4OXgwIHN1cHBvcnRzIERNQSBmb3IgcmVjZWl2aW5nIG9ubHkuICBETUEgbW9kZSBpcworICAgc2lnbmlmaWNhbnRseSBtb3JlIGVmZmljaWVudC4gIEZsb29kaW5nIGEgNDAwIE1IeiBDZWxlcm9uIG1hY2hpbmUKKyAgIHdpdGggbGFyZ2UgcGluZyBwYWNrZXRzIGNvbnN1bWVzIDgyJSBvZiBpdHMgQ1BVIGNhcGFjaXR5IGluIG5vbi1ETUEKKyAgIG1vZGUuICBXaXRoIERNQSB0aGlzIGlzIHJlZHVjZWQgdG8gNDUlLgorCitrKSBJZiB5b3VyIExpbnV4IGtlcm5lbCB3YXMgY29tcGlsZWQgd2l0aCBpbmJ1aWx0IHBsdWctYW5kLXBsYXkKKyAgIHN1cHBvcnQgeW91IHdpbGwgYmUgYWJsZSB0byBmaW5kIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjczg5eDAgY2FyZAorICAgd2l0aCB0aGUgY29tbWFuZAorCisgICBjYXQgL3Byb2MvaXNhcG5wCisKK2wpIElmIGR1cmluZyBETUEgb3BlcmF0aW9uIHlvdSBmaW5kIGVycmF0aWMgYmVoYXZpb3Igb3IgbmV0d29yayBkYXRhCisgICBjb3JydXB0aW9uIHlvdSBzaG91bGQgdXNlIHlvdXIgUEMncyBCSU9TIHRvIHNsb3cgdGhlIEVJU0EgYnVzIGNsb2NrLgorCittKSBJZiB0aGUgY3M4OXgwIGRyaXZlciBpcyBjb21waWxlZCBkaXJlY3RseSBpbnRvIHRoZSBrZXJuZWwKKyAgIChub24tbW9kdWxhcikgdGhlbiBpdHMgSS9PIGFkZHJlc3MgaXMgYXV0b21hdGljYWxseSBkZXRlcm1pbmVkIGJ5CisgICBJU0EgYnVzIHByb2JpbmcuICBUaGUgSVJRIG51bWJlciwgbWVkaWEgb3B0aW9ucywgZXRjIGFyZSBkZXRlcm1pbmVkCisgICBmcm9tIHRoZSBjYXJkJ3MgRUVQUk9NLgorCituKSBJZiB0aGUgY3M4OXgwIGRyaXZlciBpcyBjb21waWxlZCBkaXJlY3RseSBpbnRvIHRoZSBrZXJuZWwsIERNQQorICAgbW9kZSBtYXkgYmUgc2VsZWN0ZWQgYnkgcHJvdmlkaW5nIHRoZSBrZXJuZWwgd2l0aCBhIGJvb3Qgb3B0aW9uCisgICAnY3M4OXgwX2RtYT1OJyB3aGVyZSAnTicgaXMgdGhlIGRlc2lyZWQgRE1BIGNoYW5uZWwgbnVtYmVyICg1LCA2IG9yIDcpLgorCisgICBLZXJuZWwgYm9vdCBvcHRpb25zIG1heSBiZSBwcm92aWRlZCBvbiB0aGUgTElMTyBjb21tYW5kIGxpbmU6CisKKwlMSUxPIGJvb3Q6IGxpbnV4IGNzODl4MF9kbWE9NQorCisgICBvciB0aGV5IG1heSBiZSBwbGFjZWQgaW4gL2V0Yy9saWxvLmNvbmY6CisKKwlpbWFnZT0vYm9vdC9iekltYWdlLTIuMy40OAorCSAgYXBwZW5kPSJjczg5eDBfZG1hPTUiCisJICBsYWJlbD1saW51eAorCSAgcm9vdD0vZGV2L2hkYTUKKwkgIHJlYWQtb25seQorCisgICBUaGUgRE1BIFJ4IGJ1ZmZlciBzaXplIGlzIGhhcmR3aXJlZCB0byAxNiBrYnl0ZXMgaW4gdGhpcyBtb2RlLgorICAgKDY0ayBtb2RlIGlzIG5vdCBhdmFpbGFibGUpLgorCisKKzQuMCBDT01QSUxJTkcgVEhFIERSSVZFUgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgY3M4OXgwIGRyaXZlciBjYW4gYmUgY29tcGlsZWQgZGlyZWN0bHkgaW50byB0aGUga2VybmVsIG9yIGNvbXBpbGVkIGludG8KK2EgbG9hZGFibGUgZGV2aWNlIGRyaXZlciBtb2R1bGUuCisKKworNC4xIENPTVBJTElORyBUSEUgRFJJVkVSIEFTIEEgTE9BREFCTEUgTU9EVUxFCisKK1RvIGNvbXBpbGUgdGhlIGRyaXZlciBpbnRvIGEgbG9hZGFibGUgbW9kdWxlLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIAorKHNpbmdsZSBjb21tYW5kIGxpbmUsIHdpdGhvdXQgcXVvdGVzKToKKworImdjYyAtRF9fS0VSTkVMX18gLUkvdXNyL3NyYy9saW51eC9pbmNsdWRlIC1JL3Vzci9zcmMvbGludXgvbmV0L2luZXQgLVdhbGwgCistV3N0cmljdC1wcm90b3R5cGVzIC1PMiAtZm9taXQtZnJhbWUtcG9pbnRlciAtRE1PRFVMRSAtRENPTkZJR19NT0RWRVJTSU9OUyAKKy1jIGNzODl4MC5jIgorCis0LjIgQ09NUElMSU5HIFRIRSBEUklWRVIgVE8gU1VQUE9SVCBNRU1PUlkgTU9ERQorCitTdXBwb3J0IGZvciBtZW1vcnkgbW9kZSB3YXMgbm90IGNhcnJpZWQgb3ZlciBpbnRvIHRoZSAyLjMgc2VyaWVzIGtlcm5lbHMuCisKKzQuMyBDT01QSUxJTkcgVEhFIERSSVZFUiBUTyBTVVBQT1JUIFJ4IERNQQorCitUaGUgY29tcGlsZS10aW1lIG9wdGlvbmFsaXR5IGZvciBETUEgd2FzIHJlbW92ZWQgaW4gdGhlIDIuMyBrZXJuZWwKK3Nlcmllcy4gIERNQSBzdXBwb3J0IGlzIG5vdyB1bmNvbmRpdGlvbmFsbHkgcGFydCBvZiB0aGUgZHJpdmVyLiAgSXQgaXMKK2VuYWJsZWQgYnkgdGhlICd1c2VfZG1hPTEnIG1vZHVsZSBvcHRpb24uCisKKworNS4wIFRFU1RJTkcgQU5EIFRST1VCTEVTSE9PVElORworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCis1LjEgS05PV04gREVGRUNUUyBhbmQgTElNSVRBVElPTlMKKworUmVmZXIgdG8gdGhlIFJFTEVBU0UuVFhUIGZpbGUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiB0aGlzIGFyY2hpdmUgZm9yIGEgbGlzdCBvZiAKK2tub3duIGRlZmVjdHMsIGRyaXZlciBsaW1pdGF0aW9ucywgYW5kIHdvcmsgYXJvdW5kcy4KKworCis1LjIgVEVTVElORyBUSEUgQURBUFRFUgorCitPbmNlIHRoZSBhZGFwdGVyIGhhcyBiZWVuIGluc3RhbGxlZCBhbmQgY29uZmlndXJlZCwgdGhlIGRpYWdub3N0aWMgb3B0aW9uIG9mIAordGhlIENTODkwMC8yMCBTZXR1cCBVdGlsaXR5IGNhbiBiZSB1c2VkIHRvIHRlc3QgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIAorYWRhcHRlciBhbmQgaXRzIG5ldHdvcmsgY29ubmVjdGlvbi4gIFVzZSB0aGUgZGlhZ25vc3RpY3MgJ1NlbGYgVGVzdCcgb3B0aW9uIHRvCit0ZXN0IHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBhZGFwdGVyIHdpdGggdGhlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24geW91IGhhdmUKK2Fzc2lnbmVkLiBZb3UgY2FuIHVzZSB0aGUgZGlhZ25vc3RpY3MgJ05ldHdvcmsgVGVzdCcgdG8gdGVzdCB0aGUgYWJpbGl0eSBvZiB0aGUKK2FkYXB0ZXIgdG8gY29tbXVuaWNhdGUgYWNyb3NzIHRoZSBFdGhlcm5ldCB3aXRoIGFub3RoZXIgUEMgZXF1aXBwZWQgd2l0aCBhIAorQ1M4OTAwLzIwLWJhc2VkIGFkYXB0ZXIgY2FyZCAoaXQgbXVzdCBhbHNvIGJlIHJ1bm5pbmcgdGhlIENTODkwMC8yMCBTZXR1cCAKK1V0aWxpdHkpLgorCisgICAgICAgICBOT1RFOiBUaGUgU2V0dXAgVXRpbGl0eSdzIGRpYWdub3N0aWNzIGFyZSBkZXNpZ25lZCB0byBydW4gaW4gYQorICAgICAgICAgRE9TLW9ubHkgb3BlcmF0aW5nIHN5c3RlbSBlbnZpcm9ubWVudC4gIERPIE5PVCBydW4gdGhlIGRpYWdub3N0aWNzIAorICAgICAgICAgZnJvbSBhIERPUyBvciBjb21tYW5kIHByb21wdCBzZXNzaW9uIHVuZGVyIFdpbmRvd3MgOTUsIFdpbmRvd3MgTlQsIAorICAgICAgICAgT1MvMiwgb3Igb3RoZXIgb3BlcmF0aW5nIHN5c3RlbS4KKworVG8gcnVuIHRoZSBkaWFnbm9zdGljcyB0ZXN0cyBvbiB0aGUgQ1M4OTAwLzIwIGFkYXB0ZXI6CisKKyAgIDEuKSBCb290IERPUyBvbiB0aGUgUEMgYW5kIHN0YXJ0IHRoZSBDUzg5MDAvMjAgU2V0dXAgVXRpbGl0eS4KKworICAgMi4pIFRoZSBhZGFwdGVyJ3MgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIGRpc3BsYXllZC4gIEhpdCB0aGUgRU5URVIga2V5IHRvCisgICAgICAgZ2V0IHRvIHRoZSBtYWluIG1lbnUuCisKKyAgIDQuKSBTZWxlY3QgJ0RpYWdub3N0aWNzJyAoQUxULUcpIGZyb20gdGhlIG1haW4gbWVudS4gIAorICAgICAgICogU2VsZWN0ICdTZWxmLVRlc3QnIHRvIHRlc3QgdGhlIGFkYXB0ZXIncyBiYXNpYyBmdW5jdGlvbmFsaXR5LgorICAgICAgICogU2VsZWN0ICdOZXR3b3JrIFRlc3QnIHRvIHRlc3QgdGhlIG5ldHdvcmsgY29ubmVjdGlvbiBhbmQgY2FibGluZy4KKworCis1LjIuMSBESUFHTk9TVElDIFNFTEYtVEVTVAorCitUaGUgZGlhZ25vc3RpYyBzZWxmLXRlc3QgY2hlY2tzIHRoZSBhZGFwdGVyJ3MgYmFzaWMgZnVuY3Rpb25hbGl0eSBhcyB3ZWxsIGFzIAoraXRzIGFiaWxpdHkgdG8gY29tbXVuaWNhdGUgYWNyb3NzIHRoZSBJU0EgYnVzIGJhc2VkIG9uIHRoZSBzeXN0ZW0gcmVzb3VyY2VzIAorYXNzaWduZWQgZHVyaW5nIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uICBUaGUgZm9sbG93aW5nIHRlc3RzIGFyZSBwZXJmb3JtZWQ6CisKKyAgICogSU8gUmVnaXN0ZXIgUmVhZC9Xcml0ZSBUZXN0CisgICAgIFRoZSBJTyBSZWdpc3RlciBSZWFkL1dyaXRlIHRlc3QgaW5zdXJlcyB0aGF0IHRoZSBDUzg5MDAvMjAgY2FuIGJlIAorICAgICBhY2Nlc3NlZCBpbiBJTyBtb2RlLCBhbmQgdGhhdCB0aGUgSU8gYmFzZSBhZGRyZXNzIGlzIGNvcnJlY3QuCisKKyAgICogU2hhcmVkIE1lbW9yeSBUZXN0CisgICAgIFRoZSBTaGFyZWQgTWVtb3J5IHRlc3QgaW5zdXJlcyB0aGUgQ1M4OTAwLzIwIGNhbiBiZSBhY2Nlc3NlZCBpbiBtZW1vcnkgCisgICAgIG1vZGUgYW5kIHRoYXQgdGhlIHJhbmdlIG9mIG1lbW9yeSBhZGRyZXNzZXMgYXNzaWduZWQgZG9lcyBub3QgY29uZmxpY3QgCisgICAgIHdpdGggb3RoZXIgZGV2aWNlcyBpbiB0aGUgc3lzdGVtLgorCisgICAqIEludGVycnVwdCBUZXN0CisgICAgIFRoZSBJbnRlcnJ1cHQgdGVzdCBpbnN1cmVzIHRoZXJlIGFyZSBubyBjb25mbGljdHMgd2l0aCB0aGUgYXNzaWduZWQgSVJRCisgICAgIHNpZ25hbC4KKworICAgKiBFRVBST00gVGVzdAorICAgICBUaGUgRUVQUk9NIHRlc3QgaW5zdXJlcyB0aGUgRUVQUk9NIGNhbiBiZSByZWFkLgorCisgICAqIENoaXAgUkFNIFRlc3QKKyAgICAgVGhlIENoaXAgUkFNIHRlc3QgaW5zdXJlcyB0aGUgNEsgb2YgbWVtb3J5IGludGVybmFsIHRvIHRoZSBDUzg5MDAvMjAgaXMKKyAgICAgd29ya2luZyBwcm9wZXJseS4KKworICAgKiBJbnRlcm5hbCBMb29wLWJhY2sgVGVzdAorICAgICBUaGUgSW50ZXJuYWwgTG9vcCBCYWNrIHRlc3QgaW5zdXJlcyB0aGUgYWRhcHRlcidzIHRyYW5zbWl0dGVyIGFuZCAKKyAgICAgcmVjZWl2ZXIgYXJlIG9wZXJhdGluZyBwcm9wZXJseS4gIElmIHRoaXMgdGVzdCBmYWlscywgbWFrZSBzdXJlIHRoZSAKKyAgICAgYWRhcHRlcidzIGNhYmxlIGlzIGNvbm5lY3RlZCB0byB0aGUgbmV0d29yayAoY2hlY2sgZm9yIExFRCBhY3Rpdml0eSBmb3IgCisgICAgIGV4YW1wbGUpLgorCisgICAqIEJvb3QgUFJPTSBUZXN0CisgICAgIFRoZSBCb290IFBST00gIHRlc3QgaW5zdXJlcyB0aGUgQm9vdCBQUk9NIGlzIHByZXNlbnQsIGFuZCBjYW4gYmUgcmVhZC4KKyAgICAgRmFpbHVyZSBpbmRpY2F0ZXMgdGhlIEJvb3QgUFJPTSAgd2FzIG5vdCBzdWNjZXNzZnVsbHkgcmVhZCBkdWUgdG8gYQorICAgICBoYXJkd2FyZSBwcm9ibGVtIG9yIGR1ZSB0byBhIGNvbmZsaWN0cyBvbiB0aGUgQm9vdCBQUk9NIGFkZHJlc3MKKyAgICAgYXNzaWdubWVudC4gKFRlc3Qgb25seSBhcHBsaWVzIGlmIHRoZSBhZGFwdGVyIGlzIGNvbmZpZ3VyZWQgdG8gdXNlIHRoZQorICAgICBCb290IFBST00gb3B0aW9uLikKKworRmFpbHVyZSBvZiBhIHRlc3QgaXRlbSBpbmRpY2F0ZXMgYSBwb3NzaWJsZSBzeXN0ZW0gcmVzb3VyY2UgY29uZmxpY3Qgd2l0aCAKK2Fub3RoZXIgZGV2aWNlIG9uIHRoZSBJU0EgYnVzLiAgSW4gdGhpcyBjYXNlLCB5b3Ugc2hvdWxkIHVzZSB0aGUgTWFudWFsIFNldHVwIAorb3B0aW9uIHRvIHJlY29uZmlndXJlIHRoZSBhZGFwdGVyIGJ5IHNlbGVjdGluZyBhIGRpZmZlcmVudCB2YWx1ZSBmb3IgdGhlIHN5c3RlbQorcmVzb3VyY2UgdGhhdCBmYWlsZWQuCisKKworNS4yLjIgRElBR05PU1RJQyBORVRXT1JLIFRFU1QKKworVGhlIERpYWdub3N0aWMgTmV0d29yayBUZXN0IHZlcmlmaWVzIGEgd29ya2luZyBuZXR3b3JrIGNvbm5lY3Rpb24gYnkgCit0cmFuc2ZlcnJpbmcgZGF0YSBiZXR3ZWVuIHR3byBDUzg5MDAvMjAgYWRhcHRlcnMgaW5zdGFsbGVkIGluIGRpZmZlcmVudCBQQ3MgCitvbiB0aGUgc2FtZSBuZXR3b3JrLiAoTm90ZTogdGhlIGRpYWdub3N0aWMgbmV0d29yayB0ZXN0IHNob3VsZCBub3QgYmUgcnVuIAorYmV0d2VlbiB0d28gbm9kZXMgYWNyb3NzIGEgcm91dGVyLikgCisKK1RoaXMgdGVzdCByZXF1aXJlcyB0aGF0IGVhY2ggb2YgdGhlIHR3byBQQ3MgaGF2ZSBhIENTODkwMC8yMC1iYXNlZCBhZGFwdGVyCitpbnN0YWxsZWQgYW5kIGhhdmUgdGhlIENTODkwMC8yMCBTZXR1cCBVdGlsaXR5IHJ1bm5pbmcuICBUaGUgZmlyc3QgUEMgaXMgCitjb25maWd1cmVkIGFzIGEgUmVzcG9uZGVyIGFuZCB0aGUgb3RoZXIgUEMgaXMgY29uZmlndXJlZCBhcyBhbiBJbml0aWF0b3IuICAKK09uY2UgdGhlIEluaXRpYXRvciBpcyBzdGFydGVkLCBpdCBzZW5kcyBkYXRhIGZyYW1lcyB0byB0aGUgUmVzcG9uZGVyIHdoaWNoIAorcmV0dXJucyB0aGUgZnJhbWVzIHRvIHRoZSBJbml0aWF0b3IuCisKK1RoZSB0b3RhbCBudW1iZXIgb2YgZnJhbWVzIHJlY2VpdmVkIGFuZCB0cmFuc21pdHRlZCBhcmUgZGlzcGxheWVkIG9uIHRoZSAKK0luaXRpYXRvcidzIGRpc3BsYXksIGFsb25nIHdpdGggYSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIGZyYW1lcyByZWNlaXZlZCBhbmQgCit0cmFuc21pdHRlZCBPSyBvciBpbiBlcnJvci4gIFRoZSB0ZXN0IGNhbiBiZSB0ZXJtaW5hdGVkIGFueXRpbWUgYnkgdGhlIHVzZXIgYXQgCitlaXRoZXIgUEMuCisKK1RvIHNldHVwIHRoZSBEaWFnbm9zdGljIE5ldHdvcmsgVGVzdDoKKworICAgIDEuKSBTZWxlY3QgYSBQQyB3aXRoIGEgQ1M4OTAwLzIwLWJhc2VkIGFkYXB0ZXIgYW5kIGEga25vd24gd29ya2luZyBuZXR3b3JrCisgICAgICAgIGNvbm5lY3Rpb24gdG8gYWN0IGFzIHRoZSBSZXNwb25kZXIuICBSdW4gdGhlIENTODkwMC8yMCBTZXR1cCBVdGlsaXR5IAorICAgICAgICBhbmQgc2VsZWN0ICdEaWFnbm9zdGljcyAtPiBOZXR3b3JrIFRlc3QgLT4gUmVzcG9uZGVyJyBmcm9tIHRoZSBtYWluIAorICAgICAgICBtZW51LiAgSGl0IEVOVEVSIHRvIHN0YXJ0IHRoZSBSZXNwb25kZXIuCisKKyAgICAyLikgUmV0dXJuIHRvIHRoZSBQQyB3aXRoIHRoZSBDUzg5MDAvMjAtYmFzZWQgYWRhcHRlciB5b3Ugd2FudCB0byB0ZXN0IGFuZAorICAgICAgICBzdGFydCB0aGUgQ1M4OTAwLzIwIFNldHVwIFV0aWxpdHkuIAorCisgICAgMy4pIEZyb20gdGhlIG1haW4gbWVudSwgU2VsZWN0ICdEaWFnbm9zdGljIC0+IE5ldHdvcmsgVGVzdCAtPiBJbml0aWF0b3InLgorICAgICAgICBIaXQgRU5URVIgdG8gc3RhcnQgdGhlIHRlc3QuCisgCitZb3UgbWF5IHN0b3AgdGhlIHRlc3Qgb24gdGhlIEluaXRpYXRvciBhdCBhbnkgdGltZSB3aGlsZSBhbGxvd2luZyB0aGUgUmVzcG9uZGVyCit0byBjb250aW51ZSBydW5uaW5nLiAgSW4gdGhpcyBtYW5uZXIsIHlvdSBjYW4gbW92ZSB0byBhZGRpdGlvbmFsIFBDcyBhbmQgdGVzdCAKK3RoZW0gYnkgc3RhcnRpbmcgdGhlIEluaXRpYXRvciBvbiBhbm90aGVyIFBDIHdpdGhvdXQgaGF2aW5nIHRvIHN0b3Avc3RhcnQgdGhlIAorUmVzcG9uZGVyLgorIAorCisKKzUuMyBVU0lORyBUSEUgQURBUFRFUidTIExFRHMKKworVGhlIDIgYW5kIDMtbWVkaWEgYWRhcHRlcnMgaGF2ZSB0d28gTEVEcyB2aXNpYmxlIG9uIHRoZSBiYWNrIGVuZCBvZiB0aGUgYm9hcmQgCitsb2NhdGVkIG5lYXIgdGhlIDEwQmFzZS1UIGNvbm5lY3Rvci4gIAorCitMaW5rIEludGVncml0eSBMRUQ6IEEgInN0ZWFkeSIgT04gb2YgdGhlIGdyZWVuIExFRCBpbmRpY2F0ZXMgYSB2YWxpZCAxMEJhc2UtVCAKK2Nvbm5lY3Rpb24uICAoT25seSBhcHBsaWVzIHRvIDEwQmFzZS1ULiAgVGhlIGdyZWVuIExFRCBoYXMgbm8gc2lnbmlmaWNhbmNlIGZvcgorYSAxMEJhc2UtMiBvciBBVUkgY29ubmVjdGlvbi4pCisKK1RYL1JYIExFRDogVGhlIHllbGxvdyBMRUQgbGlnaHRzIGJyaWVmbHkgZWFjaCB0aW1lIHRoZSBhZGFwdGVyIHRyYW5zbWl0cyBvciAKK3JlY2VpdmVzIGRhdGEuIChUaGUgeWVsbG93IExFRCB3aWxsIGFwcGVhciB0byAiZmxpY2tlciIgb24gYSB0eXBpY2FsIG5ldHdvcmsuKQorCisKKzUuNCBSRVNPTFZJTkcgSS9PIENPTkZMSUNUUworCitBbiBJTyBjb25mbGljdCBvY2N1cnMgd2hlbiB0d28gb3IgbW9yZSBhZGFwdGVyIHVzZSB0aGUgc2FtZSBJU0EgcmVzb3VyY2UgKElPIAorYWRkcmVzcywgbWVtb3J5IGFkZHJlc3Mgb3IgSVJRKS4gIFlvdSBjYW4gdXN1YWxseSBkZXRlY3QgYW4gSU8gY29uZmxpY3QgaW4gb25lIAorb2YgZm91ciB3YXlzIGFmdGVyIGluc3RhbGxpbmcgYW5kIG9yIGNvbmZpZ3VyaW5nIHRoZSBDUzg5MDAvMjAtYmFzZWQgYWRhcHRlcjoKKworICAgIDEuKSBUaGUgc3lzdGVtIGRvZXMgbm90IGJvb3QgcHJvcGVybHkgKG9yIGF0IGFsbCkuCisKKyAgICAyLikgVGhlIGRyaXZlciBjYW5ub3QgY29tbXVuaWNhdGUgd2l0aCB0aGUgYWRhcHRlciwgcmVwb3J0aW5nIGFuICJBZGFwdGVyCisgICAgICAgIG5vdCBmb3VuZCIgZXJyb3IgbWVzc2FnZS4KKworICAgIDMuKSBZb3UgY2Fubm90IGNvbm5lY3QgdG8gdGhlIG5ldHdvcmsgb3IgdGhlIGRyaXZlciB3aWxsIG5vdCBsb2FkLgorCisgICAgNC4pIElmIHlvdSBoYXZlIGNvbmZpZ3VyZWQgdGhlIGFkYXB0ZXIgdG8gcnVuIGluIG1lbW9yeSBtb2RlIGJ1dCB0aGUgZHJpdmVyCisgICAgICAgIHJlcG9ydHMgaXQgaXMgdXNpbmcgSU8gbW9kZSB3aGVuIGxvYWRpbmcsIHRoaXMgaXMgYW4gaW5kaWNhdGlvbiBvZiBhCisgICAgICAgIG1lbW9yeSBhZGRyZXNzIGNvbmZsaWN0LgorCitJZiBhbiBJTyBjb25mbGljdCBvY2N1cnMsIHJ1biB0aGUgQ1M4OTAwLzIwIFNldHVwIFV0aWxpdHkgYW5kIHBlcmZvcm0gYSAKK2RpYWdub3N0aWMgc2VsZi10ZXN0LiAgTm9ybWFsbHksIHRoZSBJU0EgcmVzb3VyY2UgaW4gY29uZmxpY3Qgd2lsbCBmYWlsIHRoZSAKK3NlbGYtdGVzdC4gIElmIHNvLCByZWNvbmZpZ3VyZSB0aGUgYWRhcHRlciBzZWxlY3RpbmcgYW5vdGhlciBjaG9pY2UgZm9yIHRoZSAKK3Jlc291cmNlIGluIGNvbmZsaWN0LiAgUnVuIHRoZSBkaWFnbm9zdGljcyBhZ2FpbiB0byBjaGVjayBmb3IgZnVydGhlciBJTyAKK2NvbmZsaWN0cy4KKworSW4gc29tZSBjYXNlcywgc3VjaCBhcyB3aGVuIHRoZSBQQyB3aWxsIG5vdCBib290LCBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvIHJlbW92ZQordGhlIGFkYXB0ZXIgYW5kIHJlY29uZmlndXJlIGl0IGJ5IGluc3RhbGxpbmcgaXQgaW4gYW5vdGhlciBQQyB0byBydW4gdGhlIAorQ1M4OTAwLzIwIFNldHVwIFV0aWxpdHkuICBPbmNlIHJlaW5zdGFsbGVkIGluIHRoZSB0YXJnZXQgc3lzdGVtLCBydW4gdGhlIAorZGlhZ25vc3RpY3Mgc2VsZi10ZXN0IHRvIGVuc3VyZSB0aGUgbmV3IGNvbmZpZ3VyYXRpb24gaXMgZnJlZSBvZiBjb25mbGljdHMgCitiZWZvcmUgbG9hZGluZyB0aGUgZHJpdmVyIGFnYWluLgorCitXaGVuIG1hbnVhbGx5IGNvbmZpZ3VyaW5nIHRoZSBhZGFwdGVyLCBrZWVwIGluIG1pbmQgdGhlIHR5cGljYWwgSVNBIHN5c3RlbSAKK3Jlc291cmNlIHVzYWdlIGFzIGluZGljYXRlZCBpbiB0aGUgdGFibGVzIGJlbG93LgorCitJL08gQWRkcmVzcyAgICAJRGV2aWNlICAgICAgICAgICAgICAgICAgICAgICAgSVJRICAgICAgRGV2aWNlCistLS0tLS0tLS0tLSAgICAJLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgLS0tICAgICAgLS0tLS0tLS0KKyAyMDAtMjBGICAgICAgIAlHYW1lIEkvTyBhZGFwdGVyICAgICAgICAgICAgICAgMyAgICAgICBDT00yLCBCdXMgTW91c2UKKyAyMzAtMjNGICAgICAgIAlCdXMgTW91c2UgICAgICAgICAgICAgICAgICAgICAgNCAgICAgICBDT00xCisgMjcwLTI3RiAgICAgICAJTFBUMzogdGhpcmQgcGFyYWxsZWwgcG9ydCAgICAgIDUgICAgICAgTFBUMgorIDJGMC0yRkYgICAgICAgCUNPTTI6IHNlY29uZCBzZXJpYWwgcG9ydCAgICAgICA2ICAgICAgIEZsb3BweSBEaXNrIGNvbnRyb2xsZXIKKyAzMjAtMzJGICAgICAgIAlGaXhlZCBkaXNrIGNvbnRyb2xsZXIgICAgICAgICAgNyAgICAgICBMUFQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgICAgOCAgICAgICBSZWFsLXRpbWUgQ2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5ICAgICAgIEVHQS9WR0EgZGlzcGxheSBhZGFwdGVyICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIgICAgICAgTW91c2UgKFBTLzIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitNZW1vcnkgQWRkcmVzcyAgRGV2aWNlICAgICAgICAgICAgICAgICAgICAgICAgICAxMyAgICAgICBNYXRoIENvcHJvY2Vzc29yCistLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgICAgICAgICAxNCAgICAgICBIYXJkIERpc2sgY29udHJvbGxlcgorQTAwMC1CRkZGCUVHQSBHcmFwaGljcyBBZGFwdGVyCitBMDAwLUM3RkYJVkdBIEdyYXBoaWNzIEFkYXB0ZXIKK0IwMDAtQkZGRglNb25vIEdyYXBoaWNzIEFkYXB0ZXIKK0I4MDAtQkZGRglDb2xvciBHcmFwaGljcyBBZGFwdGVyCitFMDAwLUZGRkYJQVQgQklPUworCisKKworCis2LjAgVEVDSE5JQ0FMIFNVUFBPUlQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworNi4xIENPTlRBQ1RJTkcgQ0lSUlVTIExPR0lDJ1MgVEVDSE5JQ0FMIFNVUFBPUlQKKworQ2lycnVzIExvZ2ljJ3MgQ1M4OVhYIFRlY2huaWNhbCBBcHBsaWNhdGlvbiBTdXBwb3J0IGNhbiBiZSByZWFjaGVkIGF0OgorCitUZWxlcGhvbmUgIDooODAwKSA4ODgtNTAxNiAoZnJvbSBpbnNpZGUgVS5TLiBhbmQgQ2FuYWRhKQorICAgICAgICAgICA6KDUxMikgNDQyLTc1NTUgKGZyb20gb3V0c2lkZSB0aGUgVS5TLiBhbmQgQ2FuYWRhKQorRmF4ICAgICAgICA6KDUxMikgOTEyLTM4NzEKK0VtYWlsICAgICAgOmV0aGVybmV0QGNyeXN0YWwuY2lycnVzLmNvbQorV1dXICAgICAgICA6aHR0cDovL3d3dy5jaXJydXMuY29tCisKKworNi4yIElORk9STUFUSU9OIFJFUVVJUkVEIEJFRk9SRSBDT05UQUNUSU5HIFRFQ0hOSUNBTCBTVVBQT1JUCisKK0JlZm9yZSBjb250YWN0aW5nIENpcnJ1cyBMb2dpYyBmb3IgdGVjaG5pY2FsIHN1cHBvcnQsIGJlIHByZXBhcmVkIHRvIHByb3ZpZGUgYXMgCitNdWNoIG9mIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gYXMgcG9zc2libGUuIAorCisxLikgQWRhcHRlciB0eXBlIChDUkQ4OTAwLCBDREI4OTAwLCBDREI4OTIwLCBldGMuKQorCisyLikgQWRhcHRlciBjb25maWd1cmF0aW9uCisKKyAgICAqIElPIEJhc2UsIE1lbW9yeSBCYXNlLCBJTyBvciBtZW1vcnkgbW9kZSBlbmFibGVkLCBJUlEsIERNQSBjaGFubmVsCisgICAgKiBQbHVnIGFuZCBQbGF5IGVuYWJsZWQvZGlzYWJsZWQgKENTODkyMC1iYXNlZCBhZGFwdGVycyBvbmx5KQorICAgICogQ29uZmlndXJlZCBmb3IgbWVkaWEgYXV0by1kZXRlY3Qgb3Igc3BlY2lmaWMgbWVkaWEgdHlwZSAod2hpY2ggdHlwZSkuICAgIAorCiszLikgUEMgU3lzdGVtJ3MgQ29uZmlndXJhdGlvbgorCisgICAgKiBQbHVnIGFuZCBQbGF5IHN5c3RlbSAoeWVzL25vKQorICAgICogQklPUyAobWFrZSBhbmQgdmVyc2lvbikKKyAgICAqIFN5c3RlbSBtYWtlIGFuZCBtb2RlbAorICAgICogQ1BVICh0eXBlIGFuZCBzcGVlZCkKKyAgICAqIFN5c3RlbSBSQU0KKyAgICAqIFNDU0kgQWRhcHRlcgorCis0LikgU29mdHdhcmUKKworICAgICogQ1M4OVhYIGRyaXZlciBhbmQgdmVyc2lvbgorICAgICogWW91ciBuZXR3b3JrIG9wZXJhdGluZyBzeXN0ZW0gYW5kIHZlcnNpb24KKyAgICAqIFlvdXIgc3lzdGVtJ3MgT1MgdmVyc2lvbiAKKyAgICAqIFZlcnNpb24gb2YgYWxsIHByb3RvY29sIHN1cHBvcnQgZmlsZXMKKworNS4pIEFueSBFcnJvciBNZXNzYWdlIGRpc3BsYXllZC4KKworCisKKzYuMyBPQlRBSU5JTkcgVEhFIExBVEVTVCBEUklWRVIgVkVSU0lPTgorCitZb3UgY2FuIG9idGFpbiB0aGUgbGF0ZXN0IENTODlYWCBkcml2ZXJzIGFuZCBzdXBwb3J0IHNvZnR3YXJlIGZyb20gQ2lycnVzIExvZ2ljJ3MgCitXZWIgc2l0ZS4gIFlvdSBjYW4gYWxzbyBjb250YWN0IENpcnJ1cyBMb2dpYydzIFRlY2huaWNhbCBTdXBwb3J0IChlbWFpbDoKK2V0aGVybmV0QGNyeXN0YWwuY2lycnVzLmNvbSkgYW5kIHJlcXVlc3QgdGhhdCB5b3UgYmUgcmVnaXN0ZXJlZCBmb3IgYXV0b21hdGljIAorc29mdHdhcmUtdXBkYXRlIG5vdGlmaWNhdGlvbi4KKworQ2lycnVzIExvZ2ljIG1haW50YWlucyBhIHdlYiBwYWdlIGF0IGh0dHA6Ly93d3cuY2lycnVzLmNvbSB3aXRoIHRoZQorbGF0ZXN0IGRyaXZlcnMgYW5kIHRlY2huaWNhbCBwdWJsaWNhdGlvbnMuCisKKworNi40IEN1cnJlbnQgbWFpbnRhaW5lcgorCitJbiBGZWJydWFyeSAyMDAwIHRoZSBtYWludGVuYW5jZSBvZiB0aGlzIGRyaXZlciB3YXMgYXNzdW1lZCBieSBBbmRyZXcKK01vcnRvbi4KKworNi41IEtlcm5lbCBtb2R1bGUgcGFyYW1ldGVycworCitGb3IgdXNlIGluIGVtYmVkZGVkIGVudmlyb25tZW50cyB3aXRoIG5vIGNzODl4MCBFRVBST00sIHRoZSBrZXJuZWwgYm9vdAorcGFyYW1ldGVyIGBjczg5eDBfbWVkaWE9JyBoYXMgYmVlbiBpbXBsZW1lbnRlZC4gIFVzYWdlIGlzOgorCisJY3M4OXgwX21lZGlhPXJqNDUgICAgb3IKKwljczg5eDBfbWVkaWE9YXVpICAgICBvcgorCWNzODl4MF9tZWRpYT1ibmMKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2N4YWNydS1jZi5weSBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jeGFjcnUtY2YucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQxZDI5OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jeGFjcnUtY2YucHkKQEAgLTAsMCArMSw0OCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAyMDA5IFNpbW9uIEFybG90dAorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQorIyBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pCisjIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCisjIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyMgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisjIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OQorIyBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcsIFVTQS4KKyMKKyMgVXNhZ2U6IGN4YWNydS1jZi5weSA8IGN4YWNydS1jZi5iaW4KKyMgT3V0cHV0OiB2YWx1ZXMgc3RyaW5nIHN1aXRhYmxlIGZvciB0aGUgc3lzZnMgYWRzbF9jb25maWcgYXR0cmlidXRlCisjCisjIFdhcm5pbmc6IGN4YWNydS1jZi5iaW4gd2l0aCBNRDUgaGFzaCBjZGJhYzI2ODk5NjlkNWVkNWQ0ODUwZjExNzcwMjExMAorIyBjb250YWlucyBtaXMtYWxpZ25lZCB2YWx1ZXMgd2hpY2ggd2lsbCBzdG9wIHRoZSBtb2RlbSBmcm9tIGJlaW5nIGFibGUKKyMgdG8gbWFrZSBhIGNvbm5lY3Rpb24uIElmIHRoZSBmaXJzdCBhbmQgbGFzdCB0d28gYnl0ZXMgYXJlIHJlbW92ZWQgdGhlbgorIyB0aGUgdmFsdWVzIGJlY29tZSB2YWxpZCwgYnV0IHRoZSBtb2R1bGF0aW9uIHdpbGwgYmUgZm9yY2VkIHRvIEFOU0kKKyMgVDEuNDEzIG9ubHkgd2hpY2ggbWF5IG5vdCBiZSBhcHByb3ByaWF0ZS4KKyMKKyMgVGhlIG9yaWdpbmFsIGJpbmFyeSBmb3JtYXQgaXMgYSBwYWNrZWQgbGlzdCBvZiBsZTMyIHZhbHVlcy4KKworaW1wb3J0IHN5cworaW1wb3J0IHN0cnVjdAorCitpID0gMAord2hpbGUgVHJ1ZToKKwlidWYgPSBzeXMuc3RkaW4ucmVhZCg0KQorCisJaWYgbGVuKGJ1ZikgPT0gMDoKKwkJYnJlYWsKKwllbGlmIGxlbihidWYpICE9IDQ6CisJCXN5cy5zdGRvdXQud3JpdGUoIlxuIikKKwkJc3lzLnN0ZGVyci53cml0ZSgiRXJyb3I6IHJlYWQgezB9IG5vdCA0IGJ5dGVzXG4iLmZvcm1hdChsZW4oYnVmKSkpCisJCXN5cy5leGl0KDEpCisKKwlpZiBpID4gMDoKKwkJc3lzLnN0ZG91dC53cml0ZSgiICIpCisJc3lzLnN0ZG91dC53cml0ZSgiezA6eH09ezF9Ii5mb3JtYXQoaSwgc3RydWN0LnVucGFjaygiPEkiLCBidWYpWzBdKSkKKwlpICs9IDEKKworc3lzLnN0ZG91dC53cml0ZSgiXG4iKQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2N4YWNydS50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY3hhY3J1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2NlMDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2N4YWNydS50eHQKQEAgLTAsMCArMSwxMDAgQEAKK0Zpcm13YXJlIGlzIHJlcXVpcmVkIGZvciB0aGlzIGRldmljZTogaHR0cDovL2FjY2Vzc3J1bm5lci5zb3VyY2Vmb3JnZS5uZXQvCisKK1doaWxlIGl0IGlzIGNhcGFibGUgb2YgbWFuYWdpbmcvbWFpbnRhaW5pbmcgdGhlIEFEU0wgY29ubmVjdGlvbiB3aXRob3V0IHRoZQorbW9kdWxlIGxvYWRlZCwgdGhlIGRldmljZSB3aWxsIHNvbWV0aW1lcyBzdG9wIHJlc3BvbmRpbmcgYWZ0ZXIgdW5sb2FkaW5nIHRoZQorZHJpdmVyIGFuZCBpdCBpcyBuZWNlc3NhcnkgdG8gdW5wbHVnL3JlbW92ZSBwb3dlciB0byB0aGUgZGV2aWNlIHRvIGZpeCB0aGlzLgorCitOb3RlOiBzdXBwb3J0IGZvciBjeGFjcnUtY2YuYmluIGhhcyBiZWVuIHJlbW92ZWQuIEl0IHdhcyBub3QgbG9hZGVkIGNvcnJlY3RseQorc28gaXQgaGFkIG5vIGVmZmVjdCBvbiB0aGUgZGV2aWNlIGNvbmZpZ3VyYXRpb24uIEZpeGluZyBpdCBjb3VsZCBoYXZlIHN0b3BwZWQKK2V4aXN0aW5nIGRldmljZXMgd29ya2luZyB3aGVuIGFuIGludmFsaWQgY29uZmlndXJhdGlvbiBpcyBzdXBwbGllZC4KKworVGhlcmUgaXMgYSBzY3JpcHQgY3hhY3J1LWNmLnB5IHRvIGNvbnZlcnQgYW4gZXhpc3RpbmcgZmlsZSB0byB0aGUgc3lzZnMgZm9ybS4KKworRGV0ZWN0ZWQgZGV2aWNlcyB3aWxsIGFwcGVhciBhcyBBVE0gZGV2aWNlcyBuYW1lZCAiY3hhY3J1Ii4gSW4gL3N5cy9jbGFzcy9hdG0vCit0aGVzZSBhcmUgZGlyZWN0b3JpZXMgbmFtZWQgY3hhY3J1TiB3aGVyZSBOIGlzIHRoZSBkZXZpY2UgbnVtYmVyLiBBIHN5bWxpbmsKK25hbWVkIGRldmljZSBwb2ludHMgdG8gdGhlIFVTQiBpbnRlcmZhY2UgZGV2aWNlJ3MgZGlyZWN0b3J5IHdoaWNoIGNvbnRhaW5zCitzZXZlcmFsIHN5c2ZzIGF0dHJpYnV0ZSBmaWxlcyBmb3IgcmV0cmlldmluZyBkZXZpY2Ugc3RhdGlzdGljczoKKworKiBhZHNsX2NvbnRyb2xsZXJfdmVyc2lvbgorCisqIGFkc2xfaGVhZGVuZAorKiBhZHNsX2hlYWRlbmRfZW52aXJvbm1lbnQKKwlJbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVtb3RlIGhlYWRlbmQuCisKKyogYWRzbF9jb25maWcKKwlDb25maWd1cmF0aW9uIHdyaXRpbmcgaW50ZXJmYWNlLgorCVdyaXRlIHBhcmFtZXRlcnMgaW4gaGV4YWRlY2ltYWwgZm9ybWF0IDxpbmRleD49PHZhbHVlPiwKKwlzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZSwgZS5nLjoKKwkJIjE9MCBhPTUiCisJVXAgdG8gNyBwYXJhbWV0ZXJzIGF0IGEgdGltZSB3aWxsIGJlIHNlbnQgYW5kIHRoZSBtb2RlbSB3aWxsIHJlc3RhcnQKKwl0aGUgQURTTCBjb25uZWN0aW9uIHdoZW4gYW55IHZhbHVlIGlzIHNldC4gVGhlc2UgYXJlIGxvZ2dlZCBmb3IgZnV0dXJlCisJcmVmZXJlbmNlLgorCisqIGRvd25zdHJlYW1fYXR0ZW51YXRpb24gKGRCKQorKiBkb3duc3RyZWFtX2JpdHNfcGVyX2ZyYW1lCisqIGRvd25zdHJlYW1fcmF0ZSAoa2JwcykKKyogZG93bnN0cmVhbV9zbnJfbWFyZ2luIChkQikKKwlEb3duc3RyZWFtIHN0YXRzLgorCisqIHVwc3RyZWFtX2F0dGVudWF0aW9uIChkQikKKyogdXBzdHJlYW1fYml0c19wZXJfZnJhbWUKKyogdXBzdHJlYW1fcmF0ZSAoa2JwcykKKyogdXBzdHJlYW1fc25yX21hcmdpbiAoZEIpCisqIHRyYW5zbWl0dGVyX3Bvd2VyIChkQm0vSHopCisJVXBzdHJlYW0gc3RhdHMuCisKKyogZG93bnN0cmVhbV9jcmNfZXJyb3JzCisqIGRvd25zdHJlYW1fZmVjX2Vycm9ycworKiBkb3duc3RyZWFtX2hlY19lcnJvcnMKKyogdXBzdHJlYW1fY3JjX2Vycm9ycworKiB1cHN0cmVhbV9mZWNfZXJyb3JzCisqIHVwc3RyZWFtX2hlY19lcnJvcnMKKwlFcnJvciBjb3VudHMuCisKKyogbGluZV9zdGFydGFibGUKKwlJbmRpY2F0ZXMgdGhhdCBBRFNMIHN1cHBvcnQgb24gdGhlIGRldmljZQorCWlzL2NhbiBiZSBlbmFibGVkLCBzZWUgYWRzbF9zdGFydC4KKworKiBsaW5lX3N0YXR1cworCSJpbml0aWFsaXNpbmciCisJImRvd24iCisJImF0dGVtcHRpbmcgdG8gYWN0aXZhdGUiCisJInRyYWluaW5nIgorCSJjaGFubmVsIGFuYWx5c2lzIgorCSJleGNoYW5nZSIKKwkid2FpdGluZyIKKwkidXAiCisKKwlDaGFuZ2VzIGJldHdlZW4gImRvd24iIGFuZCAiYXR0ZW1wdGluZyB0byBhY3RpdmF0ZSIKKwlpZiB0aGVyZSBpcyBubyBzaWduYWwuCisKKyogbGlua19zdGF0dXMKKwkibm90IGNvbm5lY3RlZCIKKwkiY29ubmVjdGVkIgorCSJsb3N0IgorCisqIG1hY19hZGRyZXNzCisKKyogbW9kdWxhdGlvbgorCSIiICh3aGVuIG5vdCBjb25uZWN0ZWQpCisJIkFOU0kgVDEuNDEzIgorCSJJVFUtVCBHLjk5Mi4xIChHLkRNVCkiCisJIklUVS1UIEcuOTkyLjIgKEcuTElURSkiCisKKyogc3RhcnR1cF9hdHRlbXB0cworCUNvdW50IG9mIHRvdGFsIGF0dGVtcHRzIHRvIGluaXRpYWxpc2UgQURTTC4KKworVG8gZW5hYmxlL2Rpc2FibGUgQURTTCwgdGhlIGZvbGxvd2luZyBjYW4gYmUgd3JpdHRlbiB0byB0aGUgYWRzbF9zdGF0ZSBmaWxlOgorCSJzdGFydCIKKwkic3RvcAorCSJyZXN0YXJ0IiAoc3RvcHMsIHdhaXRzIDEuNXMsIHRoZW4gc3RhcnRzKQorCSJwb2xsIiAodXNlZCB0byByZXN1bWUgc3RhdHVzIHBvbGxpbmcgaWYgaXQgd2FzIGRpc2FibGVkIGR1ZSB0byBmYWlsdXJlKQorCitDaGFuZ2VzIGluIGFkc2wvbGluZSBzdGF0ZSBhcmUgcmVwb3J0ZWQgdmlhIGtlcm5lbCBsb2cgbWVzc2FnZXM6CisJWzQ5NDIxNDUuMTUwNzA0XSBBVE0gZGV2IDA6IEFEU0wgc3RhdGU6IHJ1bm5pbmcKKwlbNDk0MjI0My42NjM3NjZdIEFUTSBkZXYgMDogQURTTCBsaW5lOiBkb3duCisJWzQ5NDIyNDkuNjY1MDc1XSBBVE0gZGV2IDA6IEFEU0wgbGluZTogYXR0ZW1wdGluZyB0byBhY3RpdmF0ZQorCVs0OTQyMjUzLjY1NDk1NF0gQVRNIGRldiAwOiBBRFNMIGxpbmU6IHRyYWluaW5nCisJWzQ5NDIyNTUuNjY2Mzg3XSBBVE0gZGV2IDA6IEFEU0wgbGluZTogY2hhbm5lbCBhbmFseXNpcworCVs0OTQyMjU5LjY1NjI2Ml0gQVRNIGRldiAwOiBBRFNMIGxpbmU6IGV4Y2hhbmdlCisJWzI2MzUzNTcuNjk2OTAxXSBBVE0gZGV2IDA6IEFEU0wgbGluZTogdXAgKDgxMjgga2IvcyBkb3duIHwgODMyIGtiL3MgdXApCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY3hnYi50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY3hnYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjBhODg3NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jeGdiLnR4dApAQCAtMCwwICsxLDM1MiBAQAorICAgICAgICAgICAgICAgICBDaGVsc2lvIE4yMTAgMTBHYiBFdGhlcm5ldCBOZXR3b3JrIENvbnRyb2xsZXIKKworICAgICAgICAgICAgICAgICAgICAgICAgIERyaXZlciBSZWxlYXNlIE5vdGVzIGZvciBMaW51eAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDIuMS4xCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEp1bmUgMjAsIDIwMDUKKworQ09OVEVOVFMKKz09PT09PT09CisgSU5UUk9EVUNUSU9OCisgRkVBVFVSRVMKKyBQRVJGT1JNQU5DRQorIERSSVZFUiBNRVNTQUdFUworIEtOT1dOIElTU1VFUworIFNVUFBPUlQKKworCitJTlRST0RVQ1RJT04KKz09PT09PT09PT09PQorCisgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIExpbnV4IGRyaXZlciBmb3IgQ2hlbHNpbyAxMEdiIEV0aGVybmV0IE5ldHdvcmsKKyBDb250cm9sbGVyLiBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgQ2hlbHNpbyBOMjEwIE5JQyBhbmQgaXMgYmFja3dhcmQKKyBjb21wYXRpYmxlIHdpdGggdGhlIENoZWxzaW8gTjExMCBtb2RlbCAxMEdiIE5JQ3MuCisKKworRkVBVFVSRVMKKz09PT09PT09CisKKyBBZGFwdGl2ZSBJbnRlcnJ1cHRzIChhZGFwdGl2ZS1yeCkKKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGlzIGZlYXR1cmUgcHJvdmlkZXMgYW4gYWRhcHRpdmUgYWxnb3JpdGhtIHRoYXQgYWRqdXN0cyB0aGUgaW50ZXJydXB0CisgIGNvYWxlc2NpbmcgcGFyYW1ldGVycywgYWxsb3dpbmcgdGhlIGRyaXZlciB0byBkeW5hbWljYWxseSBhZGFwdCB0aGUgbGF0ZW5jeQorICBzZXR0aW5ncyB0byBhY2hpZXZlIHRoZSBoaWdoZXN0IHBlcmZvcm1hbmNlIGR1cmluZyB2YXJpb3VzIHR5cGVzIG9mIG5ldHdvcmsKKyAgbG9hZC4KKworICBUaGUgaW50ZXJmYWNlIHVzZWQgdG8gY29udHJvbCB0aGlzIGZlYXR1cmUgaXMgZXRodG9vbC4gUGxlYXNlIHNlZSB0aGUKKyAgZXRodG9vbCBtYW5wYWdlIGZvciBhZGRpdGlvbmFsIHVzYWdlIGluZm9ybWF0aW9uLgorCisgIEJ5IGRlZmF1bHQsIGFkYXB0aXZlLXJ4IGlzIGRpc2FibGVkLgorICBUbyBlbmFibGUgYWRhcHRpdmUtcng6CisKKyAgICAgIGV0aHRvb2wgLUMgPGludGVyZmFjZT4gYWRhcHRpdmUtcnggb24KKworICBUbyBkaXNhYmxlIGFkYXB0aXZlLXJ4LCB1c2UgZXRodG9vbDoKKworICAgICAgZXRodG9vbCAtQyA8aW50ZXJmYWNlPiBhZGFwdGl2ZS1yeCBvZmYKKworICBBZnRlciBkaXNhYmxpbmcgYWRhcHRpdmUtcngsIHRoZSB0aW1lciBsYXRlbmN5IHZhbHVlIHdpbGwgYmUgc2V0IHRvIDUwdXMuCisgIFlvdSBtYXkgc2V0IHRoZSB0aW1lciBsYXRlbmN5IGFmdGVyIGRpc2FibGluZyBhZGFwdGl2ZS1yeDoKKworICAgICAgZXRodG9vbCAtQyA8aW50ZXJmYWNlPiByeC11c2VjcyA8bWljcm9zZWNvbmRzPgorCisgIEFuIGV4YW1wbGUgdG8gc2V0IHRoZSB0aW1lciBsYXRlbmN5IHZhbHVlIHRvIDEwMHVzIG9uIGV0aDA6CisKKyAgICAgIGV0aHRvb2wgLUMgZXRoMCByeC11c2VjcyAxMDAKKworICBZb3UgbWF5IGFsc28gcHJvdmlkZSBhIHRpbWVyIGxhdGVuY3kgdmFsdWUgd2hpbGUgZGlzYWJsaW5nIGFkYXB0aXZlLXJ4OgorCisgICAgICBldGh0b29sIC1DIDxpbnRlcmZhY2U+IGFkYXB0aXZlLXJ4IG9mZiByeC11c2VjcyA8bWljcm9zZWNvbmRzPgorCisgIElmIGFkYXB0aXZlLXJ4IGlzIGRpc2FibGVkIGFuZCBhIHRpbWVyIGxhdGVuY3kgdmFsdWUgaXMgc3BlY2lmaWVkLCB0aGUgdGltZXIKKyAgd2lsbCBiZSBzZXQgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZSB1bnRpbCBjaGFuZ2VkIGJ5IHRoZSB1c2VyIG9yIHVudGlsCisgIGFkYXB0aXZlLXJ4IGlzIGVuYWJsZWQuCisKKyAgVG8gdmlldyB0aGUgc3RhdHVzIG9mIHRoZSBhZGFwdGl2ZS1yeCBhbmQgdGltZXIgbGF0ZW5jeSB2YWx1ZXM6CisKKyAgICAgIGV0aHRvb2wgLWMgPGludGVyZmFjZT4KKworCisgVENQIFNlZ21lbnRhdGlvbiBPZmZsb2FkaW5nIChUU08pIFN1cHBvcnQKKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFRoaXMgZmVhdHVyZSwgYWxzbyBrbm93biBhcyAibGFyZ2Ugc2VuZCIsIGVuYWJsZXMgYSBzeXN0ZW0ncyBwcm90b2NvbCBzdGFjaworICB0byBvZmZsb2FkIHBvcnRpb25zIG9mIG91dGJvdW5kIFRDUCBwcm9jZXNzaW5nIHRvIGEgbmV0d29yayBpbnRlcmZhY2UgY2FyZAorICB0aGVyZWJ5IHJlZHVjaW5nIHN5c3RlbSBDUFUgdXRpbGl6YXRpb24gYW5kIGVuaGFuY2luZyBwZXJmb3JtYW5jZS4KKworICBUaGUgaW50ZXJmYWNlIHVzZWQgdG8gY29udHJvbCB0aGlzIGZlYXR1cmUgaXMgZXRodG9vbCB2ZXJzaW9uIDEuOCBvciBoaWdoZXIuCisgIFBsZWFzZSBzZWUgdGhlIGV0aHRvb2wgbWFucGFnZSBmb3IgYWRkaXRpb25hbCB1c2FnZSBpbmZvcm1hdGlvbi4KKworICBCeSBkZWZhdWx0LCBUU08gaXMgZW5hYmxlZC4KKyAgVG8gZGlzYWJsZSBUU086CisKKyAgICAgIGV0aHRvb2wgLUsgPGludGVyZmFjZT4gdHNvIG9mZgorCisgIFRvIGVuYWJsZSBUU086CisKKyAgICAgIGV0aHRvb2wgLUsgPGludGVyZmFjZT4gdHNvIG9uCisKKyAgVG8gdmlldyB0aGUgc3RhdHVzIG9mIFRTTzoKKworICAgICAgZXRodG9vbCAtayA8aW50ZXJmYWNlPgorCisKK1BFUkZPUk1BTkNFCis9PT09PT09PT09PQorCisgVGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBwcm92aWRlZCBhcyBhbiBleGFtcGxlIG9mIGhvdyB0byBjaGFuZ2Ugc3lzdGVtCisgcGFyYW1ldGVycyBmb3IgInBlcmZvcm1hbmNlIHR1bmluZyIgYW4gd2hhdCB2YWx1ZSB0byB1c2UuIFlvdSBtYXkgb3IgbWF5IG5vdAorIHdhbnQgdG8gY2hhbmdlIHRoZXNlIHN5c3RlbSBwYXJhbWV0ZXJzLCBkZXBlbmRpbmcgb24geW91ciBzZXJ2ZXIvd29ya3N0YXRpb24KKyBhcHBsaWNhdGlvbi4gRG9pbmcgc28gaXMgbm90IHdhcnJhbnRlZCBpbiBhbnkgd2F5IGJ5IENoZWxzaW8gQ29tbXVuaWNhdGlvbnMsCisgYW5kIGlzIGRvbmUgYXQgIllPVVIgT1dOIFJJU0siLiBDaGVsc2lvIHdpbGwgbm90IGJlIGhlbGQgcmVzcG9uc2libGUgZm9yIGxvc3MKKyBvZiBkYXRhIG9yIGRhbWFnZSB0byBlcXVpcG1lbnQuCisKKyBZb3VyIGRpc3RyaWJ1dGlvbiBtYXkgaGF2ZSBhIGRpZmZlcmVudCB3YXkgb2YgZG9pbmcgdGhpbmdzLCBvciB5b3UgbWF5IHByZWZlcgorIGEgZGlmZmVyZW50IG1ldGhvZC4gVGhlc2UgY29tbWFuZHMgYXJlIHNob3duIG9ubHkgdG8gcHJvdmlkZSBhbiBleGFtcGxlIG9mCisgd2hhdCB0byBkbyBhbmQgYXJlIGJ5IG5vIG1lYW5zIGRlZmluaXRpdmUuCisKKyBNYWtpbmcgYW55IG9mIHRoZSBmb2xsb3dpbmcgc3lzdGVtIGNoYW5nZXMgd2lsbCBvbmx5IGxhc3QgdW50aWwgeW91IHJlYm9vdAorIHlvdXIgc3lzdGVtLiBZb3UgbWF5IHdhbnQgdG8gd3JpdGUgYSBzY3JpcHQgdGhhdCBydW5zIGF0IGJvb3QtdXAgd2hpY2gKKyBpbmNsdWRlcyB0aGUgb3B0aW1hbCBzZXR0aW5ncyBmb3IgeW91ciBzeXN0ZW0uCisKKyAgU2V0dGluZyBQQ0kgTGF0ZW5jeSBUaW1lcjoKKyAgICAgIHNldHBjaSAtZCAxNDI1OiogMHgwYy5sPTB4MDAwMEY4MDAKKworICBEaXNhYmxpbmcgVENQIHRpbWVzdGFtcDoKKyAgICAgIHN5c2N0bCAtdyBuZXQuaXB2NC50Y3BfdGltZXN0YW1wcz0wCisKKyAgRGlzYWJsaW5nIFNBQ0s6CisgICAgICBzeXNjdGwgLXcgbmV0LmlwdjQudGNwX3NhY2s9MAorCisgIFNldHRpbmcgbGFyZ2UgbnVtYmVyIG9mIGluY29taW5nIGNvbm5lY3Rpb24gcmVxdWVzdHM6CisgICAgICBzeXNjdGwgLXcgbmV0LmlwdjQudGNwX21heF9zeW5fYmFja2xvZz0zMDAwCisKKyAgU2V0dGluZyBtYXhpbXVtIHJlY2VpdmUgc29ja2V0IGJ1ZmZlciBzaXplOgorICAgICAgc3lzY3RsIC13IG5ldC5jb3JlLnJtZW1fbWF4PTEwMjQwMDAKKworICBTZXR0aW5nIG1heGltdW0gc2VuZCBzb2NrZXQgYnVmZmVyIHNpemU6CisgICAgICBzeXNjdGwgLXcgbmV0LmNvcmUud21lbV9tYXg9MTAyNDAwMAorCisgIFNldCBzbXBfYWZmaW5pdHkgKG9uIGEgbXVsdGlwcm9jZXNzb3Igc3lzdGVtKSB0byBhIHNpbmdsZSBDUFU6CisgICAgICBlY2hvIDEgPiAvcHJvYy9pcnEvPGludGVycnVwdF9udW1iZXI+L3NtcF9hZmZpbml0eQorCisgIFNldHRpbmcgZGVmYXVsdCByZWNlaXZlIHNvY2tldCBidWZmZXIgc2l6ZToKKyAgICAgIHN5c2N0bCAtdyBuZXQuY29yZS5ybWVtX2RlZmF1bHQ9NTI0Mjg3CisKKyAgU2V0dGluZyBkZWZhdWx0IHNlbmQgc29ja2V0IGJ1ZmZlciBzaXplOgorICAgICAgc3lzY3RsIC13IG5ldC5jb3JlLndtZW1fZGVmYXVsdD01MjQyODcKKworICBTZXR0aW5nIG1heGltdW0gb3B0aW9uIG1lbW9yeSBidWZmZXJzOgorICAgICAgc3lzY3RsIC13IG5ldC5jb3JlLm9wdG1lbV9tYXg9NTI0Mjg3CisKKyAgU2V0dGluZyBtYXhpbXVtIGJhY2tsb2cgKCMgb2YgdW5wcm9jZXNzZWQgcGFja2V0cyBiZWZvcmUga2VybmVsIGRyb3BzKToKKyAgICAgIHN5c2N0bCAtdyBuZXQuY29yZS5uZXRkZXZfbWF4X2JhY2tsb2c9MzAwMDAwCisKKyAgU2V0dGluZyBUQ1AgcmVhZCBidWZmZXJzIChtaW4vZGVmYXVsdC9tYXgpOgorICAgICAgc3lzY3RsIC13IG5ldC5pcHY0LnRjcF9ybWVtPSIxMDAwMDAwMCAxMDAwMDAwMCAxMDAwMDAwMCIKKworICBTZXR0aW5nIFRDUCB3cml0ZSBidWZmZXJzIChtaW4vcHJlc3N1cmUvbWF4KToKKyAgICAgIHN5c2N0bCAtdyBuZXQuaXB2NC50Y3Bfd21lbT0iMTAwMDAwMDAgMTAwMDAwMDAgMTAwMDAwMDAiCisKKyAgU2V0dGluZyBUQ1AgYnVmZmVyIHNwYWNlIChtaW4vcHJlc3N1cmUvbWF4KToKKyAgICAgIHN5c2N0bCAtdyBuZXQuaXB2NC50Y3BfbWVtPSIxMDAwMDAwMCAxMDAwMDAwMCAxMDAwMDAwMCIKKworICBUQ1Agd2luZG93IHNpemUgZm9yIHNpbmdsZSBjb25uZWN0aW9uczoKKyAgIFRoZSByZWNlaXZlIGJ1ZmZlciAoUlhfV0lORE9XKSBzaXplIG11c3QgYmUgYXQgbGVhc3QgYXMgbGFyZ2UgYXMgdGhlCisgICBCYW5kd2lkdGgtRGVsYXkgUHJvZHVjdCBvZiB0aGUgY29tbXVuaWNhdGlvbiBsaW5rIGJldHdlZW4gdGhlIHNlbmRlciBhbmQKKyAgIHJlY2VpdmVyLiBEdWUgdG8gdGhlIHZhcmlhdGlvbnMgb2YgUlRULCB5b3UgbWF5IHdhbnQgdG8gaW5jcmVhc2UgdGhlIGJ1ZmZlcgorICAgc2l6ZSB1cCB0byAyIHRpbWVzIHRoZSBCYW5kd2lkdGgtRGVsYXkgUHJvZHVjdC4gUmVmZXJlbmNlIHBhZ2UgMjg5IG9mCisgICAiVENQL0lQIElsbHVzdHJhdGVkLCBWb2x1bWUgMSwgVGhlIFByb3RvY29scyIgYnkgVy4gUmljaGFyZCBTdGV2ZW5zLgorICAgQXQgMTBHYiBzcGVlZHMsIHVzZSB0aGUgZm9sbG93aW5nIGZvcm11bGE6CisgICAgICAgUlhfV0lORE9XID49IDEuMjVNQnl0ZXMgKiBSVFQoaW4gbWlsbGlzZWNvbmRzKQorICAgICAgIEV4YW1wbGUgZm9yIFJUVCB3aXRoIDEwMHVzOiBSWF9XSU5ET1cgPSAoMSwyNTAsMDAwICogMC4xKSA9IDEyNSwwMDAKKyAgIFJYX1dJTkRPVyBzaXplcyBvZiAyNTZLQiAtIDUxMktCIHNob3VsZCBiZSBzdWZmaWNpZW50LgorICAgU2V0dGluZyB0aGUgbWluLCBtYXgsIGFuZCBkZWZhdWx0IHJlY2VpdmUgYnVmZmVyIChSWF9XSU5ET1cpIHNpemU6CisgICAgICAgc3lzY3RsIC13IG5ldC5pcHY0LnRjcF9ybWVtPSI8bWluPiA8ZGVmYXVsdD4gPG1heD4iCisKKyAgVENQIHdpbmRvdyBzaXplIGZvciBtdWx0aXBsZSBjb25uZWN0aW9uczoKKyAgIFRoZSByZWNlaXZlIGJ1ZmZlciAoUlhfV0lORE9XKSBzaXplIG1heSBiZSBjYWxjdWxhdGVkIHRoZSBzYW1lIGFzIHNpbmdsZQorICAgY29ubmVjdGlvbnMsIGJ1dCBzaG91bGQgYmUgZGl2aWRlZCBieSB0aGUgbnVtYmVyIG9mIGNvbm5lY3Rpb25zLiBUaGUKKyAgIHNtYWxsZXIgd2luZG93IHByZXZlbnRzIGNvbmdlc3Rpb24gYW5kIGZhY2lsaXRhdGVzIGJldHRlciBwYWNpbmcsCisgICBlc3BlY2lhbGx5IGlmL3doZW4gTUFDIGxldmVsIGZsb3cgY29udHJvbCBkb2VzIG5vdCB3b3JrIHdlbGwgb3Igd2hlbiBpdCBpcworICAgbm90IHN1cHBvcnRlZCBvbiB0aGUgbWFjaGluZS4gRXhwZXJpbWVudGF0aW9uIG1heSBiZSBuZWNlc3NhcnkgdG8gYXR0YWluCisgICB0aGUgY29ycmVjdCB2YWx1ZS4gVGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgYSBzdGFydGluZyBwb2ludCBmb3IgdGhlCisgICBjb3JyZWN0IHJlY2VpdmUgYnVmZmVyIHNpemUuCisgICBTZXR0aW5nIHRoZSBtaW4sIG1heCwgYW5kIGRlZmF1bHQgcmVjZWl2ZSBidWZmZXIgKFJYX1dJTkRPVykgc2l6ZSBpcworICAgcGVyZm9ybWVkIGluIHRoZSBzYW1lIG1hbm5lciBhcyBzaW5nbGUgY29ubmVjdGlvbi4KKworCitEUklWRVIgTUVTU0FHRVMKKz09PT09PT09PT09PT09PQorCisgVGhlIGZvbGxvd2luZyBtZXNzYWdlcyBhcmUgdGhlIG1vc3QgY29tbW9uIG1lc3NhZ2VzIGxvZ2dlZCBieSBzeXNsb2cuIFRoZXNlCisgbWF5IGJlIGZvdW5kIGluIC92YXIvbG9nL21lc3NhZ2VzLgorCisgIERyaXZlciB1cDoKKyAgICAgQ2hlbHNpbyBOZXR3b3JrIERyaXZlciAtIHZlcnNpb24gMi4xLjEKKworICBOSUMgZGV0ZWN0ZWQ6CisgICAgIGV0aCM6IENoZWxzaW8gTjIxMCAxeDEwR0Jhc2VYIE5JQyAocmV2ICMpLCBQQ0lYIDEzM01Iei82NC1iaXQKKworICBMaW5rIHVwOgorICAgICBldGgjOiBsaW5rIGlzIHVwIGF0IDEwIEdicHMsIGZ1bGwgZHVwbGV4CisKKyAgTGluayBkb3duOgorICAgICBldGgjOiBsaW5rIGlzIGRvd24KKworCitLTk9XTiBJU1NVRVMKKz09PT09PT09PT09PQorCisgVGhlc2UgaXNzdWVzIGhhdmUgYmVlbiBpZGVudGlmaWVkIGR1cmluZyB0ZXN0aW5nLiBUaGUgZm9sbG93aW5nIGluZm9ybWF0aW9uCisgaXMgcHJvdmlkZWQgYXMgYSB3b3JrYXJvdW5kIHRvIHRoZSBwcm9ibGVtLiBJbiBzb21lIGNhc2VzLCB0aGlzIHByb2JsZW0gaXMKKyBpbmhlcmVudCB0byBMaW51eCBvciB0byBhIHBhcnRpY3VsYXIgTGludXggRGlzdHJpYnV0aW9uIGFuZC9vciBoYXJkd2FyZQorIHBsYXRmb3JtLgorCisgIDEuIExhcmdlIG51bWJlciBvZiBUQ1AgcmV0cmFuc21pdHMgb24gYSBtdWx0aXByb2Nlc3NvciAoU01QKSBzeXN0ZW0uCisKKyAgICAgIE9uIGEgc3lzdGVtIHdpdGggbXVsdGlwbGUgQ1BVcywgdGhlIGludGVycnVwdCAoSVJRKSBmb3IgdGhlIG5ldHdvcmsKKyAgICAgIGNvbnRyb2xsZXIgbWF5IGJlIGJvdW5kIHRvIG1vcmUgdGhhbiBvbmUgQ1BVLiBUaGlzIHdpbGwgY2F1c2UgVENQCisgICAgICByZXRyYW5zbWl0cyBpZiB0aGUgcGFja2V0IGRhdGEgd2VyZSB0byBiZSBzcGxpdCBhY3Jvc3MgZGlmZmVyZW50IENQVXMKKyAgICAgIGFuZCByZS1hc3NlbWJsZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiBleHBlY3RlZC4KKworICAgICAgVG8gZWxpbWluYXRlIHRoZSBUQ1AgcmV0cmFuc21pdHMsIHNldCBzbXBfYWZmaW5pdHkgb24gdGhlIHBhcnRpY3VsYXIKKyAgICAgIGludGVycnVwdCB0byBhIHNpbmdsZSBDUFUuIFlvdSBjYW4gbG9jYXRlIHRoZSBpbnRlcnJ1cHQgKElSUSkgdXNlZCBvbgorICAgICAgdGhlIE4xMTAvTjIxMCBieSB1c2luZyBpZmNvbmZpZzoKKyAgICAgICAgICBpZmNvbmZpZyA8ZGV2X25hbWU+IHwgZ3JlcCBJbnRlcnJ1cHQKKyAgICAgIFNldCB0aGUgc21wX2FmZmluaXR5IHRvIGEgc2luZ2xlIENQVToKKyAgICAgICAgICBlY2hvIDEgPiAvcHJvYy9pcnEvPGludGVycnVwdF9udW1iZXI+L3NtcF9hZmZpbml0eQorCisgICAgICBJdCBpcyBoaWdobHkgc3VnZ2VzdGVkIHRoYXQgeW91IGRvIG5vdCBydW4gdGhlIGlycWJhbGFuY2UgZGFlbW9uIG9uIHlvdXIKKyAgICAgIHN5c3RlbSwgYXMgdGhpcyB3aWxsIGNoYW5nZSBhbnkgc21wX2FmZmluaXR5IHNldHRpbmcgeW91IGhhdmUgYXBwbGllZC4KKyAgICAgIFRoZSBpcnFiYWxhbmNlIGRhZW1vbiBydW5zIG9uIGEgMTAgc2Vjb25kIGludGVydmFsIGFuZCBiaW5kcyBpbnRlcnJ1cHRzCisgICAgICB0byB0aGUgbGVhc3QgbG9hZGVkIENQVSBkZXRlcm1pbmVkIGJ5IHRoZSBkYWVtb24uIFRvIGRpc2FibGUgdGhpcyBkYWVtb246CisgICAgICAgICAgY2hrY29uZmlnIC0tbGV2ZWwgMjM0NSBpcnFiYWxhbmNlIG9mZgorCisgICAgICBCeSBkZWZhdWx0LCBzb21lIExpbnV4IGRpc3RyaWJ1dGlvbnMgZW5hYmxlIHRoZSBrZXJuZWwgZmVhdHVyZSwKKyAgICAgIGlycWJhbGFuY2UsIHdoaWNoIHBlcmZvcm1zIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIHRoZSBkYWVtb24uIFRvIGRpc2FibGUKKyAgICAgIHRoaXMgZmVhdHVyZSwgYWRkIHRoZSBmb2xsb3dpbmcgbGluZSB0byB5b3VyIGJvb3Rsb2FkZXI6CisgICAgICAgICAgbm9pcnFiYWxhbmNlCisKKyAgICAgICAgICBFeGFtcGxlIHVzaW5nIHRoZSBHcnViIGJvb3Rsb2FkZXI6CisgICAgICAgICAgICAgIHRpdGxlIFJlZCBIYXQgRW50ZXJwcmlzZSBMaW51eCBBUyAoMi40LjIxLTI3LkVMc21wKQorICAgICAgICAgICAgICByb290IChoZDAsMCkKKyAgICAgICAgICAgICAga2VybmVsIC92bWxpbnV6LTIuNC4yMS0yNy5FTHNtcCBybyByb290PS9kZXYvaGRhMyBub2lycWJhbGFuY2UKKyAgICAgICAgICAgICAgaW5pdHJkIC9pbml0cmQtMi40LjIxLTI3LkVMc21wLmltZworCisgIDIuIEFmdGVyIHJ1bm5pbmcgaW5zbW9kLCB0aGUgZHJpdmVyIGlzIGxvYWRlZCBhbmQgdGhlIGluY29ycmVjdCBuZXR3b3JrCisgICAgIGludGVyZmFjZSBpcyBicm91Z2h0IHVwIHdpdGhvdXQgcnVubmluZyBpZnVwLgorCisgICAgICBXaGVuIHVzaW5nIDIuNC54IGtlcm5lbHMsIGluY2x1ZGluZyBSSEVMIGtlcm5lbHMsIHRoZSBMaW51eCBrZXJuZWwKKyAgICAgIGludm9rZXMgYSBzY3JpcHQgbmFtZWQgImhvdHBsdWciLiBUaGlzIHNjcmlwdCBpcyBwcmltYXJpbHkgdXNlZCB0bworICAgICAgYXV0b21hdGljYWxseSBicmluZyB1cCBVU0IgZGV2aWNlcyB3aGVuIHRoZXkgYXJlIHBsdWdnZWQgaW4sIGhvd2V2ZXIsCisgICAgICB0aGUgc2NyaXB0IGFsc28gYXR0ZW1wdHMgdG8gYXV0b21hdGljYWxseSBicmluZyB1cCBhIG5ldHdvcmsgaW50ZXJmYWNlCisgICAgICBhZnRlciBsb2FkaW5nIHRoZSBrZXJuZWwgbW9kdWxlLiBUaGUgaG90cGx1ZyBzY3JpcHQgZG9lcyB0aGlzIGJ5IHNjYW5uaW5nCisgICAgICB0aGUgaWZjZmctZXRoIyBjb25maWcgZmlsZXMgaW4gL2V0Yy9zeXNjb25maWcvbmV0d29yay1zY3JpcHRzLCBsb29raW5nCisgICAgICBmb3IgSFdBRERSPTxtYWNfYWRkcmVzcz4uCisKKyAgICAgIElmIHRoZSBob3RwbHVnIHNjcmlwdCBkb2VzIG5vdCBmaW5kIHRoZSBIV0FERFJSIHdpdGhpbiBhbnkgb2YgdGhlCisgICAgICBpZmNmZy1ldGgjIGZpbGVzLCBpdCB3aWxsIGJyaW5nIHVwIHRoZSBkZXZpY2Ugd2l0aCB0aGUgbmV4dCBhdmFpbGFibGUKKyAgICAgIGludGVyZmFjZSBuYW1lLiBJZiB0aGlzIGludGVyZmFjZSBpcyBhbHJlYWR5IGNvbmZpZ3VyZWQgZm9yIGEgZGlmZmVyZW50CisgICAgICBuZXR3b3JrIGNhcmQsIHlvdXIgbmV3IGludGVyZmFjZSB3aWxsIGhhdmUgaW5jb3JyZWN0IElQIGFkZHJlc3MgYW5kCisgICAgICBuZXR3b3JrIHNldHRpbmdzLgorCisgICAgICBUbyBzb2x2ZSB0aGlzIGlzc3VlLCB5b3UgY2FuIGFkZCB0aGUgSFdBRERSPTxtYWNfYWRkcmVzcz4ga2V5IHRvIHRoZQorICAgICAgaW50ZXJmYWNlIGNvbmZpZyBmaWxlIG9mIHlvdXIgbmV0d29yayBjb250cm9sbGVyLgorCisgICAgICBUbyBkaXNhYmxlIHRoaXMgImhvdHBsdWciIGZlYXR1cmUsIHlvdSBtYXkgYWRkIHRoZSBkcml2ZXIgKG1vZHVsZSBuYW1lKQorICAgICAgdG8gdGhlICJibGFja2xpc3QiIGZpbGUgbG9jYXRlZCBpbiAvZXRjL2hvdHBsdWcuIEl0IGhhcyBiZWVuIG5vdGVkIHRoYXQKKyAgICAgIHRoaXMgZG9lcyBub3Qgd29yayBmb3IgbmV0d29yayBkZXZpY2VzIGJlY2F1c2UgdGhlIG5ldC5hZ2VudCBzY3JpcHQKKyAgICAgIGRvZXMgbm90IHVzZSB0aGUgYmxhY2tsaXN0IGZpbGUuIFNpbXBseSByZW1vdmUsIG9yIHJlbmFtZSwgdGhlIG5ldC5hZ2VudAorICAgICAgc2NyaXB0IGxvY2F0ZWQgaW4gL2V0Yy9ob3RwbHVnIHRvIGRpc2FibGUgdGhpcyBmZWF0dXJlLgorCisgIDMuIFRyYW5zcG9ydCBQcm90b2NvbCAoVFApIGhhbmdzIHdoZW4gcnVubmluZyBoZWF2eSBtdWx0aS1jb25uZWN0aW9uIHRyYWZmaWMKKyAgICAgb24gYW4gQU1EIE9wdGVyb24gc3lzdGVtIHdpdGggSHlwZXJUcmFuc3BvcnQgUENJLVggVHVubmVsIGNoaXBzZXQuCisKKyAgICAgIElmIHlvdXIgQU1EIE9wdGVyb24gc3lzdGVtIHVzZXMgdGhlIEFNRC04MTMxIEh5cGVyVHJhbnNwb3J0IFBDSS1YIFR1bm5lbAorICAgICAgY2hpcHNldCwgeW91IG1heSBleHBlcmllbmNlIHRoZSAiMTMzLU1oeiBNb2RlIFNwbGl0IENvbXBsZXRpb24gRGF0YQorICAgICAgQ29ycnVwdGlvbiIgYnVnIGlkZW50aWZpZWQgYnkgQU1EIHdoaWxlIHVzaW5nIGEgMTMzTWh6IFBDSS1YIGNhcmQgb24gdGhlCisgICAgICBidXMgUENJLVggYnVzLgorCisgICAgICBBTUQgc3RhdGVzLCAiVW5kZXIgaGlnaGx5IHNwZWNpZmljIGNvbmRpdGlvbnMsIHRoZSBBTUQtODEzMSBQQ0ktWCBUdW5uZWwKKyAgICAgIGNhbiBwcm92aWRlIHN0YWxlIGRhdGEgdmlhIHNwbGl0IGNvbXBsZXRpb24gY3ljbGVzIHRvIGEgUENJLVggY2FyZCB0aGF0CisgICAgICBpcyBvcGVyYXRpbmcgYXQgMTMzIE1oeiIsIGNhdXNpbmcgZGF0YSBjb3JydXB0aW9uLgorCisgICAgICBBTUQncyBwcm92aWRlcyB0aHJlZSB3b3JrYXJvdW5kcyBmb3IgdGhpcyBwcm9ibGVtLCBob3dldmVyLCBDaGVsc2lvCisgICAgICByZWNvbW1lbmRzIHRoZSBmaXJzdCBvcHRpb24gZm9yIGJlc3QgcGVyZm9ybWFuY2Ugd2l0aCB0aGlzIGJ1ZzoKKworICAgICAgICBGb3IgMTMzTWh6IHNlY29uZGFyeSBidXMgb3BlcmF0aW9uLCBsaW1pdCB0aGUgdHJhbnNhY3Rpb24gbGVuZ3RoIGFuZAorICAgICAgICB0aGUgbnVtYmVyIG9mIG91dHN0YW5kaW5nIHRyYW5zYWN0aW9ucywgdmlhIEJJT1MgY29uZmlndXJhdGlvbgorICAgICAgICBwcm9ncmFtbWluZyBvZiB0aGUgUENJLVggY2FyZCwgdG8gdGhlIGZvbGxvd2luZzoKKworICAgICAgICAgICBEYXRhIExlbmd0aCAoYnl0ZXMpOiAxaworICAgICAgICAgICBUb3RhbCBhbGxvd2VkIG91dHN0YW5kaW5nIHRyYW5zYWN0aW9uczogMgorCisgICAgICBQbGVhc2UgcmVmZXIgdG8gQU1EIDgxMzEtSFQvUENJLVggRXJyYXRhIDI2MzEwIFJldiAzLjA4IEF1Z3VzdCAyMDA0LAorICAgICAgc2VjdGlvbiA1NiwgIjEzMy1NSHogTW9kZSBTcGxpdCBDb21wbGV0aW9uIERhdGEgQ29ycnVwdGlvbiIgZm9yIG1vcmUKKyAgICAgIGRldGFpbHMgd2l0aCB0aGlzIGJ1ZyBhbmQgd29ya2Fyb3VuZHMgc3VnZ2VzdGVkIGJ5IEFNRC4KKworICAgICAgSXQgbWF5IGJlIHBvc3NpYmxlIHRvIHdvcmsgb3V0c2lkZSBBTUQncyByZWNvbW1lbmRlZCBQQ0ktWCBzZXR0aW5ncywgdHJ5CisgICAgICBpbmNyZWFzaW5nIHRoZSBEYXRhIExlbmd0aCB0byAyayBieXRlcyBmb3IgaW5jcmVhc2VkIHBlcmZvcm1hbmNlLiBJZiB5b3UKKyAgICAgIGhhdmUgaXNzdWVzIHdpdGggdGhlc2Ugc2V0dGluZ3MsIHBsZWFzZSByZXZlcnQgdG8gdGhlICJzYWZlIiBzZXR0aW5ncworICAgICAgYW5kIGR1cGxpY2F0ZSB0aGUgcHJvYmxlbSBiZWZvcmUgc3VibWl0dGluZyBhIGJ1ZyBvciBhc2tpbmcgZm9yIHN1cHBvcnQuCisKKyAgICAgIE5PVEU6IFRoZSBkZWZhdWx0IHNldHRpbmcgb24gbW9zdCBzeXN0ZW1zIGlzIDggb3V0c3RhbmRpbmcgdHJhbnNhY3Rpb25zCisgICAgICAgICAgICBhbmQgMmsgYnl0ZXMgZGF0YSBsZW5ndGguCisKKyAgNC4gT24gbXVsdGlwcm9jZXNzb3Igc3lzdGVtcywgaXQgaGFzIGJlZW4gbm90ZWQgdGhhdCBhbiBhcHBsaWNhdGlvbiB3aGljaAorICAgICBpcyBoYW5kbGluZyAxMEdiIG5ldHdvcmtpbmcgY2FuIHN3aXRjaCBiZXR3ZWVuIENQVXMgY2F1c2luZyBkZWdyYWRlZAorICAgICBhbmQvb3IgdW5zdGFibGUgcGVyZm9ybWFuY2UuCisKKyAgICAgIElmIHJ1bm5pbmcgb24gYW4gU01QIHN5c3RlbSBhbmQgdGFraW5nIHBlcmZvcm1hbmNlIG1lYXN1cmVtZW50cywgaXQKKyAgICAgIGlzIHN1Z2dlc3RlZCB5b3UgZWl0aGVyIHJ1biB0aGUgbGF0ZXN0IG5ldHBlcmYtMi40LjArIG9yIHVzZSBhIGJpbmRpbmcKKyAgICAgIHRvb2wgc3VjaCBhcyBUaW0gSG9ja2luJ3MgcHJvY3N0YXRlIHV0aWxpdGllcyAocnVub24pCisgICAgICA8aHR0cDovL3d3dy5ob2NraW4ub3JnL350aG9ja2luL3Byb2NzdGF0ZS8+LgorCisgICAgICBCaW5kaW5nIG5ldHNlcnZlciBhbmQgbmV0cGVyZiAob3Igb3RoZXIgYXBwbGljYXRpb25zKSB0byBwYXJ0aWN1bGFyCisgICAgICBDUFVzIHdpbGwgaGF2ZSBhIHNpZ25pZmljYW50IGRpZmZlcmVuY2UgaW4gcGVyZm9ybWFuY2UgbWVhc3VyZW1lbnRzLgorICAgICAgWW91IG1heSBuZWVkIHRvIGV4cGVyaW1lbnQgd2hpY2ggQ1BVIHRvIGJpbmQgdGhlIGFwcGxpY2F0aW9uIHRvIGluCisgICAgICBvcmRlciB0byBhY2hpZXZlIHRoZSBiZXN0IHBlcmZvcm1hbmNlIGZvciB5b3VyIHN5c3RlbS4KKworICAgICAgSWYgeW91IGFyZSBkZXZlbG9waW5nIGFuIGFwcGxpY2F0aW9uIGRlc2lnbmVkIGZvciAxMEdiIG5ldHdvcmtpbmcsCisgICAgICBwbGVhc2Uga2VlcCBpbiBtaW5kIHlvdSBtYXkgd2FudCB0byBsb29rIGF0IGtlcm5lbCBmdW5jdGlvbnMKKyAgICAgIHNjaGVkX3NldGFmZmluaXR5ICYgc2NoZWRfZ2V0YWZmaW5pdHkgdG8gYmluZCB5b3VyIGFwcGxpY2F0aW9uLgorCisgICAgICBJZiB5b3UgYXJlIGp1c3QgcnVubmluZyB1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucyBzdWNoIGFzIGZ0cCwgdGVsbmV0LAorICAgICAgZXRjLiwgeW91IG1heSB3YW50IHRvIHRyeSB0aGUgcnVub24gdG9vbCBwcm92aWRlZCBieSBUaW0gSG9ja2luJ3MKKyAgICAgIHByb2NzdGF0ZSB1dGlsaXR5LiBZb3UgY291bGQgYWxzbyB0cnkgYmluZGluZyB0aGUgaW50ZXJmYWNlIHRvIGEKKyAgICAgIHBhcnRpY3VsYXIgQ1BVOiBydW5vbiAwIGlmdXAgZXRoMAorCisKK1NVUFBPUlQKKz09PT09PT0KKworIElmIHlvdSBoYXZlIHByb2JsZW1zIHdpdGggdGhlIHNvZnR3YXJlIG9yIGhhcmR3YXJlLCBwbGVhc2UgY29udGFjdCBvdXIKKyBjdXN0b21lciBzdXBwb3J0IHRlYW0gdmlhIGVtYWlsIGF0IHN1cHBvcnRAY2hlbHNpby5jb20gb3IgY2hlY2sgb3VyIHdlYnNpdGUKKyBhdCBodHRwOi8vd3d3LmNoZWxzaW8uY29tCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIENoZWxzaW8gQ29tbXVuaWNhdGlvbnMKKyAzNzAgU2FuIEFsZXNvIEF2ZS4KKyBTdWl0ZSAxMDAKKyBTdW5ueXZhbGUsIENBIDk0MDg1CisgaHR0cDovL3d3dy5jaGVsc2lvLmNvbQorCitUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQoraXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLCBhcworcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisKK1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCit3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3LCBVU0EuCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBXSVRIT1VUIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKK1dBUlJBTlRJRVMsIElOQ0xVRElORywgV0lUSE9VVCBMSU1JVEFUSU9OLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCitNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorCisgQ29weXJpZ2h0IChjKSAyMDAzLTIwMDUgQ2hlbHNpbyBDb21tdW5pY2F0aW9ucy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RjY3AudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RjY3AudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YzU3NWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGNjcC50eHQKQEAgLTAsMCArMSwyMDcgQEAKK0RDQ1AgcHJvdG9jb2wKKz09PT09PT09PT09PT0KKworCitDb250ZW50cworPT09PT09PT0KKy0gSW50cm9kdWN0aW9uCistIE1pc3NpbmcgZmVhdHVyZXMKKy0gU29ja2V0IG9wdGlvbnMKKy0gU3lzY3RsIHZhcmlhYmxlcworLSBJT0NUTHMKKy0gT3RoZXIgdHVuYWJsZXMKKy0gTm90ZXMKKworCitJbnRyb2R1Y3Rpb24KKz09PT09PT09PT09PQorRGF0YWdyYW0gQ29uZ2VzdGlvbiBDb250cm9sIFByb3RvY29sIChEQ0NQKSBpcyBhbiB1bnJlbGlhYmxlLCBjb25uZWN0aW9uCitvcmllbnRlZCBwcm90b2NvbCBkZXNpZ25lZCB0byBzb2x2ZSBpc3N1ZXMgcHJlc2VudCBpbiBVRFAgYW5kIFRDUCwgcGFydGljdWxhcmx5Citmb3IgcmVhbC10aW1lIGFuZCBtdWx0aW1lZGlhIChzdHJlYW1pbmcpIHRyYWZmaWMuCitJdCBkaXZpZGVzIGludG8gYSBiYXNlIHByb3RvY29sIChSRkMgNDM0MCkgYW5kIHBsdWdnYWJsZSBjb25nZXN0aW9uIGNvbnRyb2wKK21vZHVsZXMgY2FsbGVkIENDSURzLiBMaWtlIHBsdWdnYWJsZSBUQ1AgY29uZ2VzdGlvbiBjb250cm9sLCBhdCBsZWFzdCBvbmUgQ0NJRAorbmVlZHMgdG8gYmUgZW5hYmxlZCBpbiBvcmRlciBmb3IgdGhlIHByb3RvY29sIHRvIGZ1bmN0aW9uIHByb3Blcmx5LiBJbiB0aGUgTGludXgKK2ltcGxlbWVudGF0aW9uLCB0aGlzIGlzIHRoZSBUQ1AtbGlrZSBDQ0lEMiAoUkZDIDQzNDEpLiBBZGRpdGlvbmFsIENDSURzLCBzdWNoIGFzCit0aGUgVENQLWZyaWVuZGx5IENDSUQzIChSRkMgNDM0MiksIGFyZSBvcHRpb25hbC4KK0ZvciBhIGJyaWVmIGludHJvZHVjdGlvbiB0byBDQ0lEcyBhbmQgc3VnZ2VzdGlvbnMgZm9yIGNob29zaW5nIGEgQ0NJRCB0byBtYXRjaAorZ2l2ZW4gYXBwbGljYXRpb25zLCBzZWUgc2VjdGlvbiAxMCBvZiBSRkMgNDM0MC4KKworSXQgaGFzIGEgYmFzZSBwcm90b2NvbCBhbmQgcGx1Z2dhYmxlIGNvbmdlc3Rpb24gY29udHJvbCBJRHMgKENDSURzKS4KKworRENDUCBpcyBhIFByb3Bvc2VkIFN0YW5kYXJkIChSRkMgMjAyNiksIGFuZCB0aGUgaG9tZXBhZ2UgZm9yIERDQ1AgYXMgYSBwcm90b2NvbAoraXMgYXQgaHR0cDovL3d3dy5pZXRmLm9yZy9odG1sLmNoYXJ0ZXJzL2RjY3AtY2hhcnRlci5odG1sCisKKworTWlzc2luZyBmZWF0dXJlcworPT09PT09PT09PT09PT09PQorVGhlIExpbnV4IERDQ1AgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgYWxsIHRoZSBmZWF0dXJlcyB0aGF0IGFyZQorc3BlY2lmaWVkIGluIFJGQ3MgNDM0MC4uLjQyLgorCitUaGUga25vd24gYnVncyBhcmUgYXQ6CisJaHR0cDovL3d3dy5saW51eGZvdW5kYXRpb24ub3JnL2NvbGxhYm9yYXRlL3dvcmtncm91cHMvbmV0d29ya2luZy90b2RvI0RDQ1AKKworRm9yIG1vcmUgdXAtdG8tZGF0ZSB2ZXJzaW9ucyBvZiB0aGUgRENDUCBpbXBsZW1lbnRhdGlvbiwgcGxlYXNlIGNvbnNpZGVyIHVzaW5nCit0aGUgZXhwZXJpbWVudGFsIERDQ1AgdGVzdCB0cmVlOyBpbnN0cnVjdGlvbnMgZm9yIGNoZWNraW5nIHRoaXMgb3V0IGFyZSBvbjoKK2h0dHA6Ly93d3cubGludXhmb3VuZGF0aW9uLm9yZy9jb2xsYWJvcmF0ZS93b3JrZ3JvdXBzL25ldHdvcmtpbmcvZGNjcF90ZXN0aW5nI0V4cGVyaW1lbnRhbF9EQ0NQX3NvdXJjZV90cmVlCisKKworU29ja2V0IG9wdGlvbnMKKz09PT09PT09PT09PT09CitEQ0NQX1NPQ0tPUFRfUVBPTElDWV9JRCBzZXRzIHRoZSBkZXF1ZXVpbmcgcG9saWN5IGZvciBvdXRnb2luZyBwYWNrZXRzLiBJdCB0YWtlcworYSBwb2xpY3kgSUQgYXMgYXJndW1lbnQgYW5kIGNhbiBvbmx5IGJlIHNldCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gKGkuZS4gY2hhbmdlcworZHVyaW5nIGFuIGVzdGFibGlzaGVkIGNvbm5lY3Rpb24gYXJlIG5vdCBzdXBwb3J0ZWQpLiBDdXJyZW50bHksIHR3byBwb2xpY2llcyBhcmUKK2RlZmluZWQ6IHRoZSAic2ltcGxlIiBwb2xpY3kgKERDQ1BRX1BPTElDWV9TSU1QTEUpLCB3aGljaCBkb2VzIG5vdGhpbmcgc3BlY2lhbCwKK2FuZCBhIHByaW9yaXR5LWJhc2VkIHZhcmlhbnQgKERDQ1BRX1BPTElDWV9QUklPKS4gVGhlIGxhdHRlciBhbGxvd3MgdG8gcGFzcyBhbgordTMyIHByaW9yaXR5IHZhbHVlIGFzIGFuY2lsbGFyeSBkYXRhIHRvIHNlbmRtc2coKSwgd2hlcmUgaGlnaGVyIG51bWJlcnMgaW5kaWNhdGUKK2EgaGlnaGVyIHBhY2tldCBwcmlvcml0eSAoc2ltaWxhciB0byBTT19QUklPUklUWSkuIFRoaXMgYW5jaWxsYXJ5IGRhdGEgbmVlZHMgdG8KK2JlIGZvcm1hdHRlZCB1c2luZyBhIGNtc2coMykgbWVzc2FnZSBoZWFkZXIgZmlsbGVkIGluIGFzIGZvbGxvd3M6CisJY21zZy0+Y21zZ19sZXZlbCA9IFNPTF9EQ0NQOworCWNtc2ctPmNtc2dfdHlwZQkgPSBEQ0NQX1NDTV9QUklPUklUWTsKKwljbXNnLT5jbXNnX2xlbgkgPSBDTVNHX0xFTihzaXplb2YodWludDMyX3QpKTsJLyogb3IgQ01TR19MRU4oNCkgKi8KKworRENDUF9TT0NLT1BUX1FQT0xJQ1lfVFhRTEVOIHNldHMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIHRoZSBvdXRwdXQgcXVldWUuIEEgemVybwordmFsdWUgaXMgYWx3YXlzIGludGVycHJldGVkIGFzIHVuYm91bmRlZCBxdWV1ZSBsZW5ndGguIElmIGRpZmZlcmVudCBmcm9tIHplcm8sCit0aGUgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBwYXJhbWV0ZXIgZGVwZW5kcyBvbiB0aGUgY3VycmVudCBkZXF1ZXVpbmcgcG9saWN5Cisoc2VlIGFib3ZlKTogdGhlICJzaW1wbGUiIHBvbGljeSB3aWxsIGVuZm9yY2UgYSBmaXhlZCBxdWV1ZSBzaXplIGJ5IHJldHVybmluZworRUFHQUlOLCB3aGVyZWFzIHRoZSAicHJpbyIgcG9saWN5IGVuZm9yY2VzIGEgZml4ZWQgcXVldWUgbGVuZ3RoIGJ5IGRyb3BwaW5nIHRoZQorbG93ZXN0LXByaW9yaXR5IHBhY2tldCBmaXJzdC4gVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgcGFyYW1ldGVyIGlzCitpbml0aWFsaXNlZCBmcm9tIC9wcm9jL3N5cy9uZXQvZGNjcC9kZWZhdWx0L3R4X3FsZW4uCisKK0RDQ1BfU09DS09QVF9TRVJWSUNFIHNldHMgdGhlIHNlcnZpY2UuIFRoZSBzcGVjaWZpY2F0aW9uIG1hbmRhdGVzIHVzZSBvZgorc2VydmljZSBjb2RlcyAoUkZDIDQzNDAsIHNlYy4gOC4xLjIpOyBpZiB0aGlzIHNvY2tldCBvcHRpb24gaXMgbm90IHNldCwKK3RoZSBzb2NrZXQgd2lsbCBmYWxsIGJhY2sgdG8gMCAod2hpY2ggbWVhbnMgdGhhdCBubyBtZWFuaW5nZnVsIHNlcnZpY2UgY29kZQoraXMgcHJlc2VudCkuIE9uIGFjdGl2ZSBzb2NrZXRzIHRoaXMgaXMgc2V0IGJlZm9yZSBjb25uZWN0KCk7IHNwZWNpZnlpbmcgbW9yZQordGhhbiBvbmUgY29kZSBoYXMgbm8gZWZmZWN0IChhbGwgc3Vic2VxdWVudCBzZXJ2aWNlIGNvZGVzIGFyZSBpZ25vcmVkKS4gVGhlCitjYXNlIGlzIGRpZmZlcmVudCBmb3IgcGFzc2l2ZSBzb2NrZXRzLCB3aGVyZSBtdWx0aXBsZSBzZXJ2aWNlIGNvZGVzICh1cCB0byAzMikKK2NhbiBiZSBzZXQgYmVmb3JlIGNhbGxpbmcgYmluZCgpLgorCitEQ0NQX1NPQ0tPUFRfR0VUX0NVUl9NUFMgaXMgcmVhZC1vbmx5IGFuZCByZXRyaWV2ZXMgdGhlIGN1cnJlbnQgbWF4aW11bSBwYWNrZXQKK3NpemUgKGFwcGxpY2F0aW9uIHBheWxvYWQgc2l6ZSkgaW4gYnl0ZXMsIHNlZSBSRkMgNDM0MCwgc2VjdGlvbiAxNC4KKworRENDUF9TT0NLT1BUX0FWQUlMQUJMRV9DQ0lEUyBpcyBhbHNvIHJlYWQtb25seSBhbmQgcmV0dXJucyB0aGUgbGlzdCBvZiBDQ0lEcworc3VwcG9ydGVkIGJ5IHRoZSBlbmRwb2ludC4gVGhlIG9wdGlvbiB2YWx1ZSBpcyBhbiBhcnJheSBvZiB0eXBlIHVpbnQ4X3Qgd2hvc2UKK3NpemUgaXMgcGFzc2VkIGFzIG9wdGlvbiBsZW5ndGguIFRoZSBtaW5pbXVtIGFycmF5IHNpemUgaXMgNCBlbGVtZW50cywgdGhlCit2YWx1ZSByZXR1cm5lZCBpbiB0aGUgb3B0bGVuIGFyZ3VtZW50IGFsd2F5cyByZWZsZWN0cyB0aGUgdHJ1ZSBudW1iZXIgb2YKK2J1aWx0LWluIENDSURzLgorCitEQ0NQX1NPQ0tPUFRfQ0NJRCBpcyB3cml0ZS1vbmx5IGFuZCBzZXRzIGJvdGggdGhlIFRYIGFuZCBSWCBDQ0lEcyBhdCB0aGUgc2FtZQordGltZSwgY29tYmluaW5nIHRoZSBvcGVyYXRpb24gb2YgdGhlIG5leHQgdHdvIHNvY2tldCBvcHRpb25zLiBUaGlzIG9wdGlvbiBpcworcHJlZmVyYWJsZSBvdmVyIHRoZSBsYXR0ZXIgdHdvLCBzaW5jZSBvZnRlbiBhcHBsaWNhdGlvbnMgd2lsbCB1c2UgdGhlIHNhbWUKK3R5cGUgb2YgQ0NJRCBmb3IgYm90aCBkaXJlY3Rpb25zOyBhbmQgbWl4ZWQgdXNlIG9mIENDSURzIGlzIG5vdCBjdXJyZW50bHkgd2VsbAordW5kZXJzdG9vZC4gVGhpcyBzb2NrZXQgb3B0aW9uIHRha2VzIGFzIGFyZ3VtZW50IGF0IGxlYXN0IG9uZSB1aW50OF90IHZhbHVlLCBvcgorYW4gYXJyYXkgb2YgdWludDhfdCB2YWx1ZXMsIHdoaWNoIG11c3QgbWF0Y2ggYXZhaWxhYmxlIENDSURTIChzZWUgYWJvdmUpLiBDQ0lEcworbXVzdCBiZSByZWdpc3RlcmVkIG9uIHRoZSBzb2NrZXQgYmVmb3JlIGNhbGxpbmcgY29ubmVjdCgpIG9yIGxpc3RlbigpLgorCitEQ0NQX1NPQ0tPUFRfVFhfQ0NJRCBpcyByZWFkL3dyaXRlLiBJdCByZXR1cm5zIHRoZSBjdXJyZW50IENDSUQgKGlmIHNldCkgb3Igc2V0cwordGhlIHByZWZlcmVuY2UgbGlzdCBmb3IgdGhlIFRYIENDSUQsIHVzaW5nIHRoZSBzYW1lIGZvcm1hdCBhcyBEQ0NQX1NPQ0tPUFRfQ0NJRC4KK1BsZWFzZSBub3RlIHRoYXQgdGhlIGdldHNvY2tvcHQgYXJndW1lbnQgdHlwZSBoZXJlIGlzIGBpbnQnLCBub3QgdWludDhfdC4KKworRENDUF9TT0NLT1BUX1JYX0NDSUQgaXMgYW5hbG9nb3VzIHRvIERDQ1BfU09DS09QVF9UWF9DQ0lELCBidXQgZm9yIHRoZSBSWCBDQ0lELgorCitEQ0NQX1NPQ0tPUFRfU0VSVkVSX1RJTUVXQUlUIGVuYWJsZXMgdGhlIHNlcnZlciAobGlzdGVuaW5nIHNvY2tldCkgdG8gaG9sZAordGltZXdhaXQgc3RhdGUgd2hlbiBjbG9zaW5nIHRoZSBjb25uZWN0aW9uIChSRkMgNDM0MCwgOC4zKS4gVGhlIHVzdWFsIGNhc2UgaXMKK3RoYXQgdGhlIGNsb3Npbmcgc2VydmVyIHNlbmRzIGEgQ2xvc2VSZXEsIHdoZXJldXBvbiB0aGUgY2xpZW50IGhvbGRzIHRpbWV3YWl0CitzdGF0ZS4gV2hlbiB0aGlzIGJvb2xlYW4gc29ja2V0IG9wdGlvbiBpcyBvbiwgdGhlIHNlcnZlciBzZW5kcyBhIENsb3NlIGluc3RlYWQKK2FuZCB3aWxsIGVudGVyIFRJTUVXQUlULiBUaGlzIG9wdGlvbiBtdXN0IGJlIHNldCBhZnRlciBhY2NlcHQoKSByZXR1cm5zLgorCitEQ0NQX1NPQ0tPUFRfU0VORF9DU0NPViBhbmQgRENDUF9TT0NLT1BUX1JFQ1ZfQ1NDT1YgYXJlIHVzZWQgZm9yIHNldHRpbmcgdGhlCitwYXJ0aWFsIGNoZWNrc3VtIGNvdmVyYWdlIChSRkMgNDM0MCwgc2VjLiA5LjIpLiBUaGUgZGVmYXVsdCBpcyB0aGF0IGNoZWNrc3VtcworYWx3YXlzIGNvdmVyIHRoZSBlbnRpcmUgcGFja2V0IGFuZCB0aGF0IG9ubHkgZnVsbHkgY292ZXJlZCBhcHBsaWNhdGlvbiBkYXRhIGlzCithY2NlcHRlZCBieSB0aGUgcmVjZWl2ZXIuIEhlbmNlLCB3aGVuIHVzaW5nIHRoaXMgZmVhdHVyZSBvbiB0aGUgc2VuZGVyLCBpdCBtdXN0CitiZSBlbmFibGVkIGF0IHRoZSByZWNlaXZlciwgdG9vIHdpdGggc3VpdGFibGUgY2hvaWNlIG9mIENzQ292LgorCitEQ0NQX1NPQ0tPUFRfU0VORF9DU0NPViBzZXRzIHRoZSBzZW5kZXIgY2hlY2tzdW0gY292ZXJhZ2UuIFZhbHVlcyBpbiB0aGUKKwlyYW5nZSAwLi4xNSBhcmUgYWNjZXB0YWJsZS4gVGhlIGRlZmF1bHQgc2V0dGluZyBpcyAwIChmdWxsIGNvdmVyYWdlKSwKKwl2YWx1ZXMgYmV0d2VlbiAxLi4xNSBpbmRpY2F0ZSBwYXJ0aWFsIGNvdmVyYWdlLgorRENDUF9TT0NLT1BUX1JFQ1ZfQ1NDT1YgaXMgZm9yIHRoZSByZWNlaXZlciBhbmQgaGFzIGEgZGlmZmVyZW50IG1lYW5pbmc6IGl0CisJc2V0cyBhIHRocmVzaG9sZCwgd2hlcmUgYWdhaW4gdmFsdWVzIDAuLjE1IGFyZSBhY2NlcHRhYmxlLiBUaGUgZGVmYXVsdAorCW9mIDAgbWVhbnMgdGhhdCBhbGwgcGFja2V0cyB3aXRoIGEgcGFydGlhbCBjb3ZlcmFnZSB3aWxsIGJlIGRpc2NhcmRlZC4KKwlWYWx1ZXMgaW4gdGhlIHJhbmdlIDEuLjE1IGluZGljYXRlIHRoYXQgcGFja2V0cyB3aXRoIG1pbmltYWxseSBzdWNoIGEKKwljb3ZlcmFnZSB2YWx1ZSBhcmUgYWxzbyBhY2NlcHRhYmxlLiBUaGUgaGlnaGVyIHRoZSBudW1iZXIsIHRoZSBtb3JlCisJcmVzdHJpY3RpdmUgdGhpcyBzZXR0aW5nIChzZWUgW1JGQyA0MzQwLCBzZWMuIDkuMi4xXSkuIFBhcnRpYWwgY292ZXJhZ2UKKwlzZXR0aW5ncyBhcmUgaW5oZXJpdGVkIHRvIHRoZSBjaGlsZCBzb2NrZXQgYWZ0ZXIgYWNjZXB0KCkuCisKK1RoZSBmb2xsb3dpbmcgdHdvIG9wdGlvbnMgYXBwbHkgdG8gQ0NJRCAzIGV4Y2x1c2l2ZWx5IGFuZCBhcmUgZ2V0c29ja29wdCgpLW9ubHkuCitJbiBlaXRoZXIgY2FzZSwgYSBURlJDIGluZm8gc3RydWN0IChkZWZpbmVkIGluIDxsaW51eC90ZnJjLmg+KSBpcyByZXR1cm5lZC4KK0RDQ1BfU09DS09QVF9DQ0lEX1JYX0lORk8KKwlSZXR1cm5zIGEgYHN0cnVjdCB0ZnJjX3J4X2luZm8nIGluIG9wdHZhbDsgdGhlIGJ1ZmZlciBmb3Igb3B0dmFsIGFuZAorCW9wdGxlbiBtdXN0IGJlIHNldCB0byBhdCBsZWFzdCBzaXplb2Yoc3RydWN0IHRmcmNfcnhfaW5mbykuCitEQ0NQX1NPQ0tPUFRfQ0NJRF9UWF9JTkZPCisJUmV0dXJucyBhIGBzdHJ1Y3QgdGZyY190eF9pbmZvJyBpbiBvcHR2YWw7IHRoZSBidWZmZXIgZm9yIG9wdHZhbCBhbmQKKwlvcHRsZW4gbXVzdCBiZSBzZXQgdG8gYXQgbGVhc3Qgc2l6ZW9mKHN0cnVjdCB0ZnJjX3R4X2luZm8pLgorCitPbiB1bmlkaXJlY3Rpb25hbCBjb25uZWN0aW9ucyBpdCBpcyB1c2VmdWwgdG8gY2xvc2UgdGhlIHVudXNlZCBoYWxmLWNvbm5lY3Rpb24KK3ZpYSBzaHV0ZG93biAoU0hVVF9XUiBvciBTSFVUX1JEKTogdGhpcyB3aWxsIHJlZHVjZSBwZXItcGFja2V0IHByb2Nlc3NpbmcgY29zdHMuCisKKworU3lzY3RsIHZhcmlhYmxlcworPT09PT09PT09PT09PT09PQorU2V2ZXJhbCBEQ0NQIGRlZmF1bHQgcGFyYW1ldGVycyBjYW4gYmUgbWFuYWdlZCBieSB0aGUgZm9sbG93aW5nIHN5c2N0bHMKKyhzeXNjdGwgbmV0LmRjY3AuZGVmYXVsdCBvciAvcHJvYy9zeXMvbmV0L2RjY3AvZGVmYXVsdCk6CisKK3JlcXVlc3RfcmV0cmllcworCVRoZSBudW1iZXIgb2YgYWN0aXZlIGNvbm5lY3Rpb24gaW5pdGlhdGlvbiByZXRyaWVzICh0aGUgbnVtYmVyIG9mCisJUmVxdWVzdHMgbWludXMgb25lKSBiZWZvcmUgdGltaW5nIG91dC4gSW4gYWRkaXRpb24sIGl0IGFsc28gZ292ZXJucworCXRoZSBiZWhhdmlvdXIgb2YgdGhlIG90aGVyLCBwYXNzaXZlIHNpZGU6IHRoaXMgdmFyaWFibGUgYWxzbyBzZXRzCisJdGhlIG51bWJlciBvZiB0aW1lcyBEQ0NQIHJlcGVhdHMgc2VuZGluZyBhIFJlc3BvbnNlIHdoZW4gdGhlIGluaXRpYWwKKwloYW5kc2hha2UgZG9lcyBub3QgcHJvZ3Jlc3MgZnJvbSBSRVNQT05EIHRvIE9QRU4gKGkuZS4gd2hlbiBubyBBY2sKKwlpcyByZWNlaXZlZCBhZnRlciB0aGUgaW5pdGlhbCBSZXF1ZXN0KS4gIFRoaXMgdmFsdWUgc2hvdWxkIGJlIGdyZWF0ZXIKKwl0aGFuIDAsIHN1Z2dlc3RlZCBpcyBsZXNzIHRoYW4gMTAuIEFuYWxvZ3VlIG9mIHRjcF9zeW5fcmV0cmllcy4KKworcmV0cmllczEKKwlIb3cgb2Z0ZW4gYSBEQ0NQIFJlc3BvbnNlIGlzIHJldHJhbnNtaXR0ZWQgdW50aWwgdGhlIGxpc3RlbmluZyBEQ0NQCisJc2lkZSBjb25zaWRlcnMgaXRzIGNvbm5lY3RpbmcgcGVlciBkZWFkLiBBbmFsb2d1ZSBvZiB0Y3BfcmV0cmllczEuCisKK3JldHJpZXMyCisJVGhlIG51bWJlciBvZiB0aW1lcyBhIGdlbmVyYWwgRENDUCBwYWNrZXQgaXMgcmV0cmFuc21pdHRlZC4gVGhpcyBoYXMKKwlpbXBvcnRhbmNlIGZvciByZXRyYW5zbWl0dGVkIGFja25vd2xlZGdtZW50cyBhbmQgZmVhdHVyZSBuZWdvdGlhdGlvbiwKKwlkYXRhIHBhY2tldHMgYXJlIG5ldmVyIHJldHJhbnNtaXR0ZWQuIEFuYWxvZ3VlIG9mIHRjcF9yZXRyaWVzMi4KKwordHhfY2NpZCA9IDIKKwlEZWZhdWx0IENDSUQgZm9yIHRoZSBzZW5kZXItcmVjZWl2ZXIgaGFsZi1jb25uZWN0aW9uLiBEZXBlbmRpbmcgb24gdGhlCisJY2hvaWNlIG9mIENDSUQsIHRoZSBTZW5kIEFjayBWZWN0b3IgZmVhdHVyZSBpcyBlbmFibGVkIGF1dG9tYXRpY2FsbHkuCisKK3J4X2NjaWQgPSAyCisJRGVmYXVsdCBDQ0lEIGZvciB0aGUgcmVjZWl2ZXItc2VuZGVyIGhhbGYtY29ubmVjdGlvbjsgc2VlIHR4X2NjaWQuCisKK3NlcV93aW5kb3cgPSAxMDAKKwlUaGUgaW5pdGlhbCBzZXF1ZW5jZSB3aW5kb3cgKHNlYy4gNy41LjIpIG9mIHRoZSBzZW5kZXIuIFRoaXMgaW5mbHVlbmNlcworCXRoZSBsb2NhbCBhY2tubyB2YWxpZGl0eSBhbmQgdGhlIHJlbW90ZSBzZXFubyB2YWxpZGl0eSB3aW5kb3dzICg3LjUuMSkuCisJVmFsdWVzIGluIHRoZSByYW5nZSBXbWluID0gMzIgKFJGQyA0MzQwLCA3LjUuMikgdXAgdG8gMl4zMi0xIGNhbiBiZSBzZXQuCisKK3R4X3FsZW4gPSA1CisJVGhlIHNpemUgb2YgdGhlIHRyYW5zbWl0IGJ1ZmZlciBpbiBwYWNrZXRzLiBBIHZhbHVlIG9mIDAgY29ycmVzcG9uZHMKKwl0byBhbiB1bmJvdW5kZWQgdHJhbnNtaXQgYnVmZmVyLgorCitzeW5jX3JhdGVsaW1pdCA9IDEyNSBtcworCVRoZSB0aW1lb3V0IGJldHdlZW4gc3Vic2VxdWVudCBEQ0NQLVN5bmMgcGFja2V0cyBzZW50IGluIHJlc3BvbnNlIHRvCisJc2VxdWVuY2UtaW52YWxpZCBwYWNrZXRzIG9uIHRoZSBzYW1lIHNvY2tldCAoUkZDIDQzNDAsIDcuNS40KS4gVGhlIHVuaXQKKwlvZiB0aGlzIHBhcmFtZXRlciBpcyBtaWxsaXNlY29uZHM7IGEgdmFsdWUgb2YgMCBkaXNhYmxlcyByYXRlLWxpbWl0aW5nLgorCisKK0lPQ1RMUworPT09PT09CitGSU9OUkVBRAorCVdvcmtzIGFzIGluIHVkcCg3KTogcmV0dXJucyBpbiB0aGUgYGludCcgYXJndW1lbnQgcG9pbnRlciB0aGUgc2l6ZSBvZgorCXRoZSBuZXh0IHBlbmRpbmcgZGF0YWdyYW0gaW4gYnl0ZXMsIG9yIDAgd2hlbiBubyBkYXRhZ3JhbSBpcyBwZW5kaW5nLgorCisKK090aGVyIHR1bmFibGVzCis9PT09PT09PT09PT09PQorUGVyLXJvdXRlIHJ0b19taW4gc3VwcG9ydAorCUNDSUQtMiBzdXBwb3J0cyB0aGUgUlRBWF9SVE9fTUlOIHBlci1yb3V0ZSBzZXR0aW5nIGZvciB0aGUgbWluaW11bSB2YWx1ZQorCW9mIHRoZSBSVE8gdGltZXIuIFRoaXMgc2V0dGluZyBjYW4gYmUgbW9kaWZpZWQgdmlhIHRoZSAncnRvX21pbicgb3B0aW9uCisJb2YgaXByb3V0ZTI7IGZvciBleGFtcGxlOgorCQk+IGlwIHJvdXRlIGNoYW5nZSAxMC4wLjAuMC8yNCAgIHJ0b19taW4gMjUwaiBkZXYgd2xhbjAKKwkJPiBpcCByb3V0ZSBhZGQgICAgMTAuMC4wLjI1NC8zMiBydG9fbWluIDgwMGogZGV2IHdsYW4wCisJCT4gaXAgcm91dGUgc2hvdyBkZXYgd2xhbjAKKwlDQ0lELTMgYWxzbyBzdXBwb3J0cyB0aGUgcnRvX21pbiBzZXR0aW5nOiBpdCBpcyB1c2VkIHRvIGRlZmluZSB0aGUgbG93ZXIKKwlib3VuZCBmb3IgdGhlIGV4cGlyeSBvZiB0aGUgbm9mZWVkYmFjayB0aW1lci4gVGhpcyBjYW4gYmUgdXNlZnVsIG9uIExBTnMKKwl3aXRoIHZlcnkgbG93IFJUVHMgKGUuZy4sIGxvb3BiYWNrLCBHYml0IGV0aGVybmV0KS4KKworCitOb3RlcworPT09PT0KK0RDQ1AgZG9lcyBub3QgdHJhdmVsIHRocm91Z2ggTkFUIHN1Y2Nlc3NmdWxseSBhdCBwcmVzZW50IG9uIG1hbnkgYm94ZXMuIFRoaXMgaXMKK2JlY2F1c2UgdGhlIGNoZWNrc3VtIGNvdmVycyB0aGUgcHNldWRvLWhlYWRlciBhcyBwZXIgVENQIGFuZCBVRFAuIExpbnV4IE5BVAorc3VwcG9ydCBmb3IgRENDUCBoYXMgYmVlbiBhZGRlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kY3RjcC50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGN0Y3AudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzYTg1NzcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGN0Y3AudHh0CkBAIC0wLDAgKzEsNDQgQEAKK0RDVENQIChEYXRhQ2VudGVyIFRDUCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRENUQ1AgaXMgYW4gZW5oYW5jZW1lbnQgdG8gdGhlIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wgYWxnb3JpdGhtIGZvciBkYXRhCitjZW50ZXIgbmV0d29ya3MgYW5kIGxldmVyYWdlcyBFeHBsaWNpdCBDb25nZXN0aW9uIE5vdGlmaWNhdGlvbiAoRUNOKSBpbgordGhlIGRhdGEgY2VudGVyIG5ldHdvcmsgdG8gcHJvdmlkZSBtdWx0aS1iaXQgZmVlZGJhY2sgdG8gdGhlIGVuZCBob3N0cy4KKworVG8gZW5hYmxlIGl0IG9uIGVuZCBob3N0czoKKworICBzeXNjdGwgLXcgbmV0LmlwdjQudGNwX2Nvbmdlc3Rpb25fY29udHJvbD1kY3RjcAorICBzeXNjdGwgLXcgbmV0LmlwdjQudGNwX2Vjbl9mYWxsYmFjaz0wIChvcHRpb25hbCkKKworQWxsIHN3aXRjaGVzIGluIHRoZSBkYXRhIGNlbnRlciBuZXR3b3JrIHJ1bm5pbmcgRENUQ1AgbXVzdCBzdXBwb3J0IEVDTgorbWFya2luZyBhbmQgYmUgY29uZmlndXJlZCBmb3IgbWFya2luZyB3aGVuIHJlYWNoaW5nIGRlZmluZWQgc3dpdGNoIGJ1ZmZlcgordGhyZXNob2xkcy4gVGhlIGRlZmF1bHQgRUNOIG1hcmtpbmcgdGhyZXNob2xkIGhldXJpc3RpYyBmb3IgRENUQ1Agb24KK3N3aXRjaGVzIGlzIDIwIHBhY2tldHMgKDMwS0IpIGF0IDFHYnBzLCBhbmQgNjUgcGFja2V0cyAofjEwMEtCKSBhdCAxMEdicHMsCitidXQgbWlnaHQgbmVlZCBmdXJ0aGVyIGNhcmVmdWwgdHdlYWtpbmcuCisKK0ZvciBtb3JlIGRldGFpbHMsIHNlZSBiZWxvdyBkb2N1bWVudHM6CisKK1BhcGVyOgorCitUaGUgYWxnb3JpdGhtIGlzIGZ1cnRoZXIgZGVzY3JpYmVkIGluIGRldGFpbCBpbiB0aGUgZm9sbG93aW5nIHR3bworU0lHQ09NTS9TSUdNRVRSSUNTIHBhcGVyczoKKworIGkpIE1vaGFtbWFkIEFsaXphZGVoLCBBbGJlcnQgR3JlZW5iZXJnLCBEYXZpZCBBLiBNYWx0eiwgSml0ZW5kcmEgUGFkaHllLAorICAgIFBhcnZlZW4gUGF0ZWwsIEJhbGFqaSBQcmFiaGFrYXIsIFN1ZGlwdGEgU2VuZ3VwdGEsIGFuZCBNdXJhcmkgU3JpZGhhcmFuOgorICAgICAgIkRhdGEgQ2VudGVyIFRDUCAoRENUQ1ApIiwgRGF0YSBDZW50ZXIgTmV0d29ya3Mgc2Vzc2lvbgorICAgICAgUHJvYy4gQUNNIFNJR0NPTU0sIE5ldyBEZWxoaSwgMjAxMC4KKyAgICBodHRwOi8vc2ltdWxhLnN0YW5mb3JkLmVkdS9+YWxpemFkZS9TaXRlL0RDVENQX2ZpbGVzL2RjdGNwLWZpbmFsLnBkZgorICAgIGh0dHA6Ly93d3cuc2lnY29tbS5vcmcvY2NyL3BhcGVycy8yMDEwL09jdG9iZXIvMTg1MTI3NS4xODUxMTkyCisKK2lpKSBNb2hhbW1hZCBBbGl6YWRlaCwgQWRlbCBKYXZhbm1hcmQsIGFuZCBCYWxhamkgUHJhYmhha2FyOgorICAgICAgIkFuYWx5c2lzIG9mIERDVENQOiBTdGFiaWxpdHksIENvbnZlcmdlbmNlLCBhbmQgRmFpcm5lc3MiCisgICAgICBQcm9jLiBBQ00gU0lHTUVUUklDUywgU2FuIEpvc2UsIDIwMTEuCisgICAgaHR0cDovL3NpbXVsYS5zdGFuZm9yZC5lZHUvfmFsaXphZGUvU2l0ZS9EQ1RDUF9maWxlcy9kY3RjcF9hbmFseXNpcy1mdWxsLnBkZgorCitJRVRGIGluZm9ybWF0aW9uYWwgZHJhZnQ6CisKKyAgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtYmVuc2xleS10Y3BtLWRjdGNwLTAwCisKK0RDVENQIHNpdGU6CisKKyAgaHR0cDovL3NpbXVsYS5zdGFuZm9yZC5lZHUvfmFsaXphZGUvU2l0ZS9EQ1RDUC5odG1sCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGU0eDUudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RlNHg1LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGU0Y2E5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RlNHg1LnR4dApAQCAtMCwwICsxLDE3OCBAQAorICAgIE9yaWdpbmFsbHksICAgdGhpcyAgZHJpdmVyICB3YXMgICAgd3JpdHRlbiAgZm9yIHRoZSAgRGlnaXRhbCAgIEVxdWlwbWVudAorICAgIENvcnBvcmF0aW9uIHNlcmllcyBvZiBFdGhlcldPUktTIEV0aGVybmV0IGNhcmRzOgorCisgICAgICAgIERFNDI1IFRQL0NPQVggRUlTQQorCURFNDM0IFRQIFBDSQorCURFNDM1IFRQL0NPQVgvQVVJIFBDSQorCURFNDUwIFRQL0NPQVgvQVVJIFBDSQorCURFNTAwIDEwLzEwMCBQQ0kgRmFzdGVybmV0CisKKyAgICBidXQgaXQgIHdpbGwgIG5vdyBhdHRlbXB0ICB0byAgc3VwcG9ydCBhbGwgIGNhcmRzIHdoaWNoICAgY29uZm9ybSB0byB0aGUKKyAgICBEaWdpdGFsIFNlbWljb25kdWN0b3IgICBTUk9NICAgU3BlY2lmaWNhdGlvbi4gICAgVGhlICBkcml2ZXIgICBjdXJyZW50bHkKKyAgICByZWNvZ25pc2VzIHRoZSBmb2xsb3dpbmcgY2hpcHM6CisKKyAgICAgICAgREMyMTA0MCAgKG5vIFNST00pIAorCURDMjEwNDFbQV0gIAorCURDMjExNDBbQV0gCisJREMyMTE0MiAKKwlEQzIxMTQzIAorCisgICAgU28gZmFyIHRoZSBkcml2ZXIgaXMga25vd24gdG8gd29yayB3aXRoIHRoZSBmb2xsb3dpbmcgY2FyZHM6CisKKyAgICAgICAgS0lOR1NUT04KKwlMaW5rc3lzCisJWk5ZWDM0MgorCVNNQzg0MzIKKwlTTUM5MzMyICh3L25ldyBTUk9NKQorCVpOWVgzMVs0NV0KKwlaTllYMzQ2IDEwLzEwMCA0IHBvcnQgKGNhbiBhY3QgYXMgYSAxMC8xMDAgYnJpZGdlISkgCisKKyAgICBUaGUgZHJpdmVyIGhhcyBiZWVuIHRlc3RlZCBvbiBhIHJlbGF0aXZlbHkgYnVzeSBuZXR3b3JrIHVzaW5nIHRoZSBERTQyNSwKKyAgICBERTQzNCwgREU0MzUgYW5kIERFNTAwIGNhcmRzIGFuZCBiZW5jaG1hcmtlZCB3aXRoICd0dGNwJzogaXQgdHJhbnNmZXJyZWQKKyAgICAxNk0gb2YgZGF0YSB0byBhIERFQ3N0YXRpb24gNTAwMC8yMDAgYXMgZm9sbG93czoKKworICAgICAgICAgICAgICAgIFRDUCAgICAgICAgICAgVURQCisgICAgICAgICAgICAgVFggICAgIFJYICAgICBUWCAgICAgUlgKKyAgICBERTQyNSAgIDEwMzBrICA5OTdrICAgMTE3MGsgIDExMjhrCisgICAgREU0MzQgICAxMDYzayAgOTk1ayAgIDExNzBrICAxMTI1aworICAgIERFNDM1ICAgMTA2M2sgIDk5NWsgICAxMTcwayAgMTEyNWsKKyAgICBERTUwMCAgIDEwNjNrICA5OThrICAgMTE3MGsgIDExMjVrICBpbiAxME1iL3MgbW9kZQorCisgICAgQWxsICB2YWx1ZXMgYXJlIHR5cGljYWwgKGluICAga0J5dGVzL3NlYykgZnJvbSBhICBzYW1wbGUgIG9mIDQgZm9yICBlYWNoCisgICAgbWVhc3VyZW1lbnQuIFRoZWlyIGVycm9yIGlzICsvLTIwayBvbiBhIHF1aWV0IChwcml2YXRlKSBuZXR3b3JrIGFuZCBhbHNvCisgICAgZGVwZW5kIG9uIHdoYXQgbG9hZCB0aGUgQ1BVIGhhcy4KKworICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIFRoZSBhYmlsaXR5IHRvIGxvYWQgdGhpcyAgZHJpdmVyIGFzIGEgbG9hZGFibGUgIG1vZHVsZSBoYXMgYmVlbiBpbmNsdWRlZAorICAgIGFuZCB1c2VkIGV4dGVuc2l2ZWx5ICBkdXJpbmcgdGhlIGRyaXZlciBkZXZlbG9wbWVudCAgKHRvIHNhdmUgdGhvc2UgbG9uZworICAgIHJlYm9vdCBzZXF1ZW5jZXMpLiAgTG9hZGFibGUgbW9kdWxlIHN1cHBvcnQgIHVuZGVyIFBDSSBhbmQgRUlTQSBoYXMgYmVlbgorICAgIGFjaGlldmVkIGJ5IGxldHRpbmcgdGhlIGRyaXZlciBhdXRvcHJvYmUgYXMgaWYgaXQgd2VyZSBjb21waWxlZCBpbnRvIHRoZQorICAgIGtlcm5lbC4gRG8gbWFrZSBzdXJlICB5b3UncmUgbm90IHNoYXJpbmcgIGludGVycnVwdHMgd2l0aCBhbnl0aGluZyAgdGhhdAorICAgIGNhbm5vdCBhY2NvbW1vZGF0ZSAgaW50ZXJydXB0ICBzaGFyaW5nIQorCisgICAgVG8gdXRpbGlzZSB0aGlzIGFiaWxpdHksIHlvdSBoYXZlIHRvIGRvIDggdGhpbmdzOgorCisgICAgMCkgaGF2ZSBhIGNvcHkgb2YgdGhlIGxvYWRhYmxlIG1vZHVsZXMgY29kZSBpbnN0YWxsZWQgb24geW91ciBzeXN0ZW0uCisgICAgMSkgY29weSBkZTR4NS5jIGZyb20gdGhlICAvbGludXgvZHJpdmVycy9uZXQgZGlyZWN0b3J5IHRvIHlvdXIgZmF2b3VyaXRlCisgICAgdGVtcG9yYXJ5IGRpcmVjdG9yeS4KKyAgICAyKSBmb3IgZml4ZWQgIGF1dG9wcm9iZXMgKG5vdCAgcmVjb21tZW5kZWQpLCAgZWRpdCB0aGUgc291cmNlIGNvZGUgIG5lYXIKKyAgICBsaW5lIDU1OTQgdG8gcmVmbGVjdCB0aGUgSS9PIGFkZHJlc3MgIHlvdSdyZSB1c2luZywgb3IgYXNzaWduIHRoZXNlIHdoZW4KKyAgICBsb2FkaW5nIGJ5OgorCisgICAgICAgICAgICAgICAgICAgaW5zbW9kIGRlNHg1IGlvPTB4Z2hoICAgICAgICAgICB3aGVyZSBnID0gYnVzIG51bWJlcgorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGggPSBkZXZpY2UgbnVtYmVyICAgCisKKyAgICAgICBOQjogYXV0b3Byb2JpbmcgZm9yIG1vZHVsZXMgaXMgbm93IHN1cHBvcnRlZCBieSBkZWZhdWx0LiBZb3UgbWF5IGp1c3QKKyAgICAgICAgICAgdXNlOgorCisgICAgICAgICAgICAgICAgICAgaW5zbW9kIGRlNHg1CisKKyAgICAgICAgICAgdG8gbG9hZCBhbGwgYXZhaWxhYmxlIGJvYXJkcy4gRm9yIGEgc3BlY2lmaWMgYm9hcmQsIHN0aWxsIHVzZQorCSAgIHRoZSAnaW89PycgYWJvdmUuCisgICAgMykgY29tcGlsZSAgZGU0eDUuYywgYnV0IGluY2x1ZGUgLURNT0RVTEUgaW4gIHRoZSBjb21tYW5kIGxpbmUgdG8gZW5zdXJlCisgICAgdGhhdCB0aGUgY29ycmVjdCBiaXRzIGFyZSBjb21waWxlZCAoc2VlIGVuZCBvZiBzb3VyY2UgY29kZSkuCisgICAgNCkgaWYgeW91IGFyZSB3YW50aW5nIHRvIGFkZCBhIG5ldyAgY2FyZCwgZ290byA1LiBPdGhlcndpc2UsIHJlY29tcGlsZSBhCisgICAga2VybmVsIHdpdGggdGhlIGRlNHg1IGNvbmZpZ3VyYXRpb24gdHVybmVkIG9mZiBhbmQgcmVib290LgorICAgIDUpIGluc21vZCBkZTR4NSBbaW89MHhnaGhdCisgICAgNikgcnVuIHRoZSBuZXQgc3RhcnR1cCBiaXRzIGZvciB5b3VyIG5ldyBldGg/PyBpbnRlcmZhY2UocykgbWFudWFsbHkgCisgICAgKHVzdWFsbHkgL2V0Yy9yYy5pbmV0WzEyXSBhdCBib290IHRpbWUpLiAKKyAgICA3KSBlbmpveSEKKworICAgIFRvIHVubG9hZCBhIG1vZHVsZSwgdHVybiBvZmYgdGhlIGFzc29jaWF0ZWQgaW50ZXJmYWNlKHMpIAorICAgICdpZmNvbmZpZyBldGg/PyBkb3duJyB0aGVuICdybW1vZCBkZTR4NScuCisKKyAgICBBdXRvbWVkaWEgZGV0ZWN0aW9uIGlzIGluY2x1ZGVkIHNvIHRoYXQgaW4gIHByaW5jaXBsZSB5b3UgY2FuIGRpc2Nvbm5lY3QKKyAgICBmcm9tLCBlLmcuICBUUCwgcmVjb25uZWN0ICB0byBCTkMgIGFuZCAgdGhpbmdzIHdpbGwgc3RpbGwgd29yayAgKGFmdGVyIGEKKyAgICBwYXVzZSB3aGlsc3QgdGhlICAgZHJpdmVyIGZpZ3VyZXMgb3V0ICAgd2hlcmUgaXRzIG1lZGlhIHdlbnQpLiAgTXkgdGVzdHMKKyAgICB1c2luZyBwaW5nIHNob3dlZCB0aGF0IGl0IGFwcGVhcnMgdG8gd29yay4uLi4KKworICAgIEJ5ICBkZWZhdWx0LCAgdGhlIGRyaXZlciB3aWxsICBub3cgICBhdXRvZGV0ZWN0IGFueSAgREVDY2hpcCBiYXNlZCBjYXJkLgorICAgIFNob3VsZCB5b3UgaGF2ZSBhIG5lZWQgdG8gcmVzdHJpY3QgdGhlIGRyaXZlciB0byBESUdJVEFMIG9ubHkgY2FyZHMsIHlvdQorICAgIGNhbiBjb21waWxlIHdpdGggYSAgREVDX09OTFkgZGVmaW5lLCBvciBpZiAgbG9hZGluZyBhcyBhIG1vZHVsZSwgdXNlIHRoZQorICAgICdkZWNfb25seT0xJyAgcGFyYW1ldGVyLiAKKworICAgIEkndmUgY2hhbmdlZCB0aGUgdGltaW5nIHJvdXRpbmVzIHRvICB1c2UgdGhlIGtlcm5lbCB0aW1lciBhbmQgc2NoZWR1bGluZworICAgIGZ1bmN0aW9ucyAgc28gdGhhdCB0aGUgIGhhbmdzICBhbmQgb3RoZXIgYXNzb3J0ZWQgcHJvYmxlbXMgdGhhdCBvY2N1cnJlZAorICAgIHdoaWxlIGF1dG9zZW5zaW5nIHRoZSAgbWVkaWEgIHNob3VsZCBiZSBnb25lLiAgQSAgYm9udXMgIGZvciB0aGUgREMyMTA0MAorICAgIGF1dG8gIG1lZGlhIHNlbnNlIGFsZ29yaXRobSBpcyAgdGhhdCBpdCBjYW4gbm93ICB1c2Ugb25lIHRoYXQgaXMgbW9yZSBpbgorICAgIGxpbmUgd2l0aCB0aGUgIHJlc3QgKHRoZSBEQzIxMDQwICBjaGlwIGRvZXNuJ3QgIGhhdmUgYSBoYXJkd2FyZSAgdGltZXIpLgorICAgIFRoZSBkb3duc2lkZSBpcyB0aGUgMSAnamlmZmllcycgKDEwbXMpIHJlc29sdXRpb24uCisKKyAgICBJRUVFIDgwMi4zdSBNSUkgaW50ZXJmYWNlIGNvZGUgaGFzICBiZWVuIGFkZGVkIGluIGFudGljaXBhdGlvbiB0aGF0IHNvbWUKKyAgICBwcm9kdWN0cyBtYXkgdXNlIGl0IGluIHRoZSBmdXR1cmUuCisKKyAgICBUaGUgU01DOTMzMiBjYXJkICBoYXMgYSBub24tY29tcGxpYW50IFNST00gIHdoaWNoIG5lZWRzIGZpeGluZyAtICBJIGhhdmUKKyAgICBwYXRjaGVkIHRoaXMgIGRyaXZlciB0byBkZXRlY3QgaXQgIGJlY2F1c2UgdGhlIFNST00gZm9ybWF0IHVzZWQgY29tcGxpZXMKKyAgICB0byBhIHByZXZpb3VzIERFQy1TVEQgZm9ybWF0LgorCisgICAgSSBoYXZlIHJlbW92ZWQgdGhlIGJ1ZmZlciBjb3BpZXMgbmVlZGVkIGZvciByZWNlaXZlIG9uIEludGVscy4gIEkgY2Fubm90CisgICAgcmVtb3ZlIHRoZW0gZm9yICAgQWxwaGFzIHNpbmNlICB0aGUgIFR1bGlwIGhhcmR3YXJlICAgb25seSBkb2VzIGxvbmd3b3JkCisgICAgYWxpZ25lZCAgRE1BIHRyYW5zZmVycyAgYW5kICB0aGUgIEFscGhhcyBnZXQgICBhbGlnbm1lbnQgdHJhcHMgd2l0aCAgbm9uCisgICAgbG9uZ3dvcmQgYWxpZ25lZCBkYXRhIGNvcGllcyAod2hpY2ggbWFrZXMgdGhlbSByZWFsbHkgc2xvdykuIE5vIGNvbW1lbnQuCisKKyAgICBJICBoYXZlIGFkZGVkIFNST00gZGVjb2RpbmcgIHJvdXRpbmVzIHRvIG1ha2UgdGhpcyAgZHJpdmVyIHdvcmsgd2l0aCBhbnkKKyAgICBjYXJkIHRoYXQgIHN1cHBvcnRzIHRoZSBEaWdpdGFsICBTZW1pY29uZHVjdG9yIFNST00gc3BlYy4gVGhpcyB3aWxsIGhlbHAKKyAgICBhbGwgIGNhcmRzIHJ1bm5pbmcgdGhlIGRjMjExNHggIHNlcmllcyBjaGlwcyBpbiBwYXJ0aWN1bGFyLiAgQ2FyZHMgdXNpbmcKKyAgICB0aGUgZGMyMTA0eCAgY2hpcHMgc2hvdWxkIHJ1biBjb3JyZWN0bHkgd2l0aCAgdGhlIGJhc2ljICBkcml2ZXIuICBJJ20gaW4KKyAgICBkZWJ0IHRvIDxtamFjb2JAZmVyYWwuY29tPiBmb3IgdGhlICB0ZXN0aW5nIGFuZCBmZWVkYmFjayB0aGF0IGhlbHBlZCBnZXQKKyAgICB0aGlzIGZlYXR1cmUgd29ya2luZy4gIFNvIGZhciB3ZSBoYXZlICB0ZXN0ZWQgS0lOR1NUT04sIFNNQzg0MzIsIFNNQzkzMzIKKyAgICAod2l0aCB0aGUgbGF0ZXN0IFNST00gY29tcGx5aW5nICB3aXRoIHRoZSBTUk9NIHNwZWMgIFYzOiB0aGVpciBmaXJzdCB3YXMKKyAgICBicm9rZW4pLCBaTllYMzQyICBhbmQgIExpbmtTeXMuIFpOWVgzMTQgKGR1YWwgIDIxMDQxICBNQUMpIGFuZCAgWk5ZWCAzMTUKKyAgICAocXVhZCAyMTA0MSBNQUMpICBjYXJkcyBhbHNvICBhcHBlYXIgIHRvIHdvcmsgZGVzcGl0ZSB0aGVpciAgaW5jb3JyZWN0bHkKKyAgICB3aXJlZCBJUlFzLgorCisgICAgSSBoYXZlIGFkZGVkIGEgdGVtcG9yYXJ5IGZpeCBmb3IgaW50ZXJydXB0IHByb2JsZW1zIHdoZW4gc29tZSBTQ1NJIGNhcmRzCisgICAgc2hhcmUgdGhlIHNhbWUgaW50ZXJydXB0IGFzIHRoZSBERUNjaGlwIGJhc2VkICBjYXJkcy4gVGhlIHByb2JsZW0gb2NjdXJzCisgICAgYmVjYXVzZSAgdGhlIFNDU0kgY2FyZCB3YW50cyB0byAgZ3JhYiB0aGUgaW50ZXJydXB0ICBhcyBhIGZhc3QgaW50ZXJydXB0CisgICAgKHJ1bnMgdGhlICAgc2VydmljZSByb3V0aW5lIHdpdGggaW50ZXJydXB0cyB0dXJuZWQgICBvZmYpIHZzLiAgdGhpcyBjYXJkCisgICAgd2hpY2ggcmVhbGx5IG5lZWRzIHRvIHJ1biB0aGUgc2VydmljZSByb3V0aW5lIHdpdGggaW50ZXJydXB0cyB0dXJuZWQgb24uCisgICAgVGhpcyBkcml2ZXIgd2lsbCAgbm93ICAgYWRkIHRoZSBpbnRlcnJ1cHQgc2VydmljZSAgIHJvdXRpbmUgIGFzICBhICBmYXN0CisgICAgaW50ZXJydXB0IGlmIGl0ICAgaXMgYm91bmNlZCBmcm9tIHRoZSAgIHNsb3cgaW50ZXJydXB0LiAgVEhJUyBJUyBOT1QgICBBCisgICAgUkVDT01NRU5ERUQgV0FZIFRPIFJVTiBUSEUgRFJJVkVSICBhbmQgaGFzIGJlZW4gZG9uZSAgZm9yIGEgbGltaXRlZCB0aW1lCisgICAgdW50aWwgIHBlb3BsZSAgIHNvcnQgIG91dCB0aGVpciAgY29tcGF0aWJpbGl0eSAgICBpc3N1ZXMgYW5kIHRoZSAga2VybmVsCisgICAgaW50ZXJydXB0ICBzZXJ2aWNlIGNvZGUgIGlzICBmaXhlZC4gICBZT1UgIFNIT1VMRCBTRVBBUkFURSBPVVQgIFRIRSBGQVNUCisgICAgSU5URVJSVVBUIENBUkRTIEZST00gVEhFIFNMT1cgSU5URVJSVVBUIENBUkRTIHRvIGVuc3VyZSB0aGF0IHRoZXkgZG8gbm90CisgICAgcnVuIG9uIHRoZSBzYW1lIGludGVycnVwdC4gUENNQ0lBL0NhcmRCdXMgaXMgYW5vdGhlciBjYW4gb2Ygd29ybXMuLi4KKworICAgIEZpbmFsbHksIEkgdGhpbmsgIEkgaGF2ZSByZWFsbHkgIGZpeGVkICB0aGUgbW9kdWxlICBsb2FkaW5nIHByb2JsZW0gd2l0aAorICAgIG1vcmUgdGhhbiBvbmUgREVDY2hpcCBiYXNlZCAgY2FyZC4gIEFzIGEgIHNpZGUgZWZmZWN0LCBJIGRvbid0IG1lc3Mgd2l0aAorICAgIHRoZSAgZGV2aWNlIHN0cnVjdHVyZSBhbnkgIG1vcmUgd2hpY2ggbWVhbnMgdGhhdCAgaWYgbW9yZSB0aGFuIDEgY2FyZCBpbgorICAgIDIuMC54IGlzICAgIGluc3RhbGxlZCAoNCAgaW4gICAyLjEueCksICB0aGUgIHVzZXIgICB3aWxsIGhhdmUgICB0byAgZWRpdAorICAgIGxpbnV4L2RyaXZlcnMvbmV0L1NwYWNlLmMgIHRvIG1ha2Ugcm9vbSBmb3IgIHRoZW0uIEhlbmNlLCBtb2R1bGUgbG9hZGluZworICAgIGlzICB0aGUgcHJlZmVycmVkIHdheSB0byB1c2UgICB0aGlzIGRyaXZlciwgc2luY2UgIGl0ICBkb2Vzbid0IGhhdmUgdGhpcworICAgIGxpbWl0YXRpb24uCisKKyAgICBXaGVyZSBTUk9NIG1lZGlhICBkZXRlY3Rpb24gaXMgdXNlZCBhbmQgIGZ1bGwgZHVwbGV4IGlzIHNwZWNpZmllZCBpbiB0aGUKKyAgICBTUk9NLCAgdGhlIGZlYXR1cmUgaXMgIGlnbm9yZWQgdW5sZXNzICBscC0+cGFyYW1zLmZkeCAgaXMgc2V0IGF0IGNvbXBpbGUKKyAgICB0aW1lICBPUiBkdXJpbmcgIGEgICBtb2R1bGUgbG9hZCAgKGluc21vZCAgZGU0eDUgICBhcmdzPSdldGg/PzpmZHgnIFtzZWUKKyAgICBiZWxvd10pLiAgVGhpcyBpcyBiZWNhdXNlIHRoZXJlICBpcyBubyB3YXkgIHRvIGF1dG9tYXRpY2FsbHkgZGV0ZWN0IGZ1bGwKKyAgICBkdXBsZXggICBsaW5rcyAgZXhjZXB0IHRocm91Z2ggICBhdXRvbmVnb3RpYXRpb24uICAgIFdoZW4gSSAgaW5jbHVkZSB0aGUKKyAgICBhdXRvbmVnb3RpYXRpb24gZmVhdHVyZSBpbiAgdGhlIFNST00gYXV0b2NvbmYgIGNvZGUsIHRoaXMgZGV0ZWN0aW9uIHdpbGwKKyAgICBvY2N1ciBhdXRvbWF0aWNhbGx5IGZvciB0aGF0IGNhc2UuCisKKyAgICBDb21tYW5kIGxpbmUgIGFyZ3VtZW50cyBhcmUgIG5vdyBhbGxvd2VkLCBzaW1pbGFyIHRvICBwYXNzaW5nICBhcmd1bWVudHMKKyAgICB0aHJvdWdoIExJTE8uIFRoaXMgd2lsbCBhbGxvdyBhIHBlciBhZGFwdGVyIGJvYXJkIHNldCAgdXAgb2YgZnVsbCBkdXBsZXgKKyAgICBhbmQgbWVkaWEuIFRoZSBvbmx5IGxleGljYWwgY29uc3RyYWludHMgYXJlOiAgdGhlIGJvYXJkIG5hbWUgKGRldi0+bmFtZSkKKyAgICBhcHBlYXJzIGluICB0aGUgbGlzdCBiZWZvcmUgaXRzIHBhcmFtZXRlcnMuICBUaGUgbGlzdCBvZiBwYXJhbWV0ZXJzIGVuZHMKKyAgICBlaXRoZXIgYXQgdGhlIGVuZCBvZiB0aGUgcGFyYW1ldGVyIGxpc3Qgb3Igd2l0aCBhbm90aGVyIGJvYXJkIG5hbWUuICBUaGUKKyAgICBmb2xsb3dpbmcgcGFyYW1ldGVycyBhcmUgYWxsb3dlZDoKKworICAgICAgICAgICAgZmR4ICAgICAgICBmb3IgZnVsbCBkdXBsZXgKKwkgICAgYXV0b3NlbnNlICB0byBzZXQgdGhlIG1lZGlhL3NwZWVkOyB3aXRoIHRoZSBmb2xsb3dpbmcgCisJICAgICAgICAgICAgICAgc3ViLXBhcmFtZXRlcnM6CisJCSAgICAgICBUUCwgVFBfTlcsIEJOQywgQVVJLCBCTkNfQVVJLCAxMDBNYiwgMTBNYiwgQVVUTworCisgICAgQ2FzZSBzZW5zaXRpdml0eSBpcyBpbXBvcnRhbnQgIGZvciAgdGhlIHN1Yi1wYXJhbWV0ZXJzLiBUaGV5ICptdXN0KiAgIGJlCisgICAgdXBwZXIgY2FzZS4gRXhhbXBsZXM6CisKKyAgICAgICAgaW5zbW9kIGRlNHg1IGFyZ3M9J2V0aDE6ZmR4IGF1dG9zZW5zZT1CTkMgZXRoMDphdXRvc2Vuc2U9MTAwTWInLgorCisgICAgRm9yIGEgY29tcGlsZWQgaW4gZHJpdmVyLCBpbiBsaW51eC9kcml2ZXJzL25ldC9DT05GSUcsIHBsYWNlIGUuZy4KKwlERTRYNV9PUFRTID0gLURERTRYNV9QQVJNPSciZXRoMDpmZHggYXV0b3NlbnNlPUFVSSBldGgyOmF1dG9zZW5zZT1UUCInIAorCisgICAgWWVzLCAgSSBrbm93IGZ1bGwgZHVwbGV4ICBpc24ndCBwZXJtaXNzaWJsZSBvbiBCTkMgIG9yIEFVSTsgdGhleSdyZSBqdXN0CisgICAgZXhhbXBsZXMuIEJ5IGRlZmF1bHQsIGZ1bGwgZHVwbGV4IGlzIHR1cm5lZCAgb2ZmIGFuZCBBVVRPIGlzIHRoZSBkZWZhdWx0CisgICAgYXV0b3NlbnNlIHNldHRpbmcuIEluICByZWFsaXR5LCBJIGV4cGVjdCBvbmx5IHRoZSAgZnVsbCBkdXBsZXggb3B0aW9uIHRvCisgICAgYmUgdXNlZC4gTm90ZSB0aGUgdXNlIG9mIHNpbmdsZSBxdW90ZXMgaW4gdGhlIHR3byBleGFtcGxlcyBhYm92ZSBhbmQgdGhlCisgICAgbGFjayBvZiBjb21tYXMgdG8gc2VwYXJhdGUgaXRlbXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGVjbmV0LnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZWNuZXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMmE0OTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGVjbmV0LnR4dApAQCAtMCwwICsxLDIzMiBAQAorICAgICAgICAgICAgICAgICAgICBMaW51eCBERUNuZXQgTmV0d29ya2luZyBMYXllciBJbmZvcm1hdGlvbgorICAgICAgICAgICAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworMSkgT3RoZXIgZG9jdW1lbnRhdGlvbi4uLi4KKworICAgbyBQcm9qZWN0IEhvbWUgUGFnZXMKKyAgICAgICBodHRwOi8vd3d3LmNoeWd3eW4uY29tLyAgICAgICAgICAgICAgICAgICAgICAJICAgIC0gS2VybmVsIGluZm8KKyAgICAgICBodHRwOi8vbGludXgtZGVjbmV0LnNvdXJjZWZvcmdlLm5ldC8gICAgICAgICAgICAgICAgLSBVc2VybGFuZCB0b29scworICAgICAgIGh0dHA6Ly93d3cuc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpbnV4LWRlY25ldC8gICAtIFN0YXR1cyBwYWdlCisKKzIpIENvbmZpZ3VyaW5nIHRoZSBrZXJuZWwKKworQmUgc3VyZSB0byB0dXJuIG9uIHRoZSBmb2xsb3dpbmcgb3B0aW9uczoKKworICAgIENPTkZJR19ERUNORVQgKG9idmlvdXNseSkKKyAgICBDT05GSUdfUFJPQ19GUyAodG8gc2VlIHdoYXQncyBnb2luZyBvbikKKyAgICBDT05GSUdfU1lTQ1RMIChmb3IgZWFzeSBjb25maWd1cmF0aW9uKQorCitpZiB5b3Ugd2FudCB0byB0cnkgb3V0IHJvdXRlciBzdXBwb3J0IChub3QgcHJvcGVybHkgZGVidWdnZWQgeWV0KQoreW91J2xsIG5lZWQgdGhlIGZvbGxvd2luZyBvcHRpb25zIGFzIHdlbGwuLi4KKworICAgIENPTkZJR19ERUNORVRfUk9VVEVSICh0byBiZSBhYmxlIHRvIGFkZC9kZWxldGUgcm91dGVzKQorICAgIENPTkZJR19ORVRGSUxURVIgKHdpbGwgYmUgcmVxdWlyZWQgZm9yIHRoZSBERUNuZXQgcm91dGluZyBkYWVtb24pCisKKyAgICBDT05GSUdfREVDTkVUX1JPVVRFX0ZXTUFSSyBpcyBvcHRpb25hbAorCitEb24ndCB0dXJuIG9uIFNJT0NHSUZDT05GIHN1cHBvcnQgZm9yIERFQ25ldCB1bmxlc3MgeW91IGFyZSByZWFsbHkgc3VyZQordGhhdCB5b3UgbmVlZCBpdCwgaW4gZ2VuZXJhbCB5b3Ugd29uJ3QgYW5kIGl0IGNhbiBjYXVzZSBpZmNvbmZpZyB0bworbWFsZnVuY3Rpb24uCisKK1J1biB0aW1lIGNvbmZpZ3VyYXRpb24gaGFzIGNoYW5nZWQgc2xpZ2h0bHkgZnJvbSB0aGUgMi40IHN5c3RlbS4gSWYgeW91Cit3YW50IHRvIGNvbmZpZ3VyZSBhbiBlbmRub2RlLCB0aGVuIHRoZSBzaW1wbGlmaWVkIHByb2NlZHVyZSBpcyBhcyBmb2xsb3dzOgorCisgbyBTZXQgdGhlIE1BQyBhZGRyZXNzIG9uIHlvdXIgZXRoZXJuZXQgY2FyZCBiZWZvcmUgc3RhcnRpbmcgX2FueV8gb3RoZXIKKyAgIG5ldHdvcmsgcHJvdG9jb2xzLgorCitBcyBzb29uIGFzIHlvdXIgbmV0d29yayBjYXJkIGlzIGJyb3VnaHQgaW50byB0aGUgVVAgc3RhdGUsIERFQ25ldCBzaG91bGQKK3N0YXJ0IHdvcmtpbmcuIElmIHlvdSBuZWVkIHNvbWV0aGluZyBtb3JlIGNvbXBsaWNhdGVkIG9yIGFyZSB1bnN1cmUgaG93Cit0byBzZXQgdGhlIE1BQyBhZGRyZXNzLCBzZWUgdGhlIG5leHQgc2VjdGlvbi4gQWxzbyBhbGwgY29uZmlndXJhdGlvbnMgd2hpY2gKK3dvcmtlZCB3aXRoIDIuNCB3aWxsIHdvcmsgdW5kZXIgMi41IHdpdGggbm8gY2hhbmdlLgorCiszKSBDb21tYW5kIGxpbmUgb3B0aW9ucworCitZb3UgY2FuIHNldCBhIERFQ25ldCBhZGRyZXNzIG9uIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIGZvciBjb21wYXRpYmlsaXR5Cit3aXRoIHRoZSAyLjQgY29uZmlndXJhdGlvbiBwcm9jZWR1cmUsIGJ1dCBpbiBnZW5lcmFsIGl0J3Mgbm90IG5lZWRlZCBhbnkgbW9yZS4KK0lmIHlvdSBkbyBzdCBhIERFQ25ldCBhZGRyZXNzIG9uIHRoZSBjb21tYW5kIGxpbmUsIGl0IGhhcyBvbmx5IG9uZSBwdXJwb3NlCit3aGljaCBpcyB0aGF0IGl0cyBhZGRlZCB0byB0aGUgYWRkcmVzc2VzIG9uIHRoZSBsb29wYmFjayBkZXZpY2UuCisKK1dpdGggMi40IGtlcm5lbHMsIERFQ25ldCB3b3VsZCBvbmx5IHJlY29nbmlzZSBhZGRyZXNzZXMgYXMgbG9jYWwgaWYgdGhleQord2VyZSBhZGRlZCB0byB0aGUgbG9vcGJhY2sgZGV2aWNlLiBJbiAyLjUsIGFueSBsb2NhbCBpbnRlcmZhY2UgYWRkcmVzcworY2FuIGJlIHVzZWQgdG8gbG9vcCBiYWNrIHRvIHRoZSBsb2NhbCBtYWNoaW5lLiBPZiBjb3Vyc2UgdGhpcyBkb2VzIG5vdAorcHJldmVudCB5b3UgYWRkaW5nIGZ1cnRoZXIgYWRkcmVzc2VzIHRvIHRoZSBsb29wYmFjayBkZXZpY2UgaWYgeW91Cit3YW50IHRvLgorCitOLkIuIFNpbmNlIHRoZSBhZGRyZXNzIGxpc3Qgb2YgYW4gaW50ZXJmYWNlIGRldGVybWluZXMgdGhlIGFkZHJlc3NlcyBmb3IKK3doaWNoICJoZWxsbyIgbWVzc2FnZXMgYXJlIHNlbnQsIGlmIHlvdSBkb24ndCBzZXQgYW4gYWRkcmVzcyBvbiB0aGUgbG9vcGJhY2sKK2ludGVyZmFjZSB0aGVuIHlvdSB3b24ndCBzZWUgYW55IGVudHJpZXMgaW4gL3Byb2MvbmV0L25laWdoIGZvciB0aGUgbG9jYWwKK2hvc3QgdW50aWwgc3VjaCB0aW1lIGFzIHlvdSBzdGFydCBhIGNvbm5lY3Rpb24uIFRoaXMgZG9lc24ndCBhZmZlY3QgdGhlCitvcGVyYXRpb24gb2YgdGhlIGxvY2FsIGNvbW11bmljYXRpb25zIGluIGFueSBvdGhlciB3YXkgdGhvdWdoLgorCitUaGUga2VybmVsIGNvbW1hbmQgbGluZSB0YWtlcyBvcHRpb25zIGxvb2tpbmcgbGlrZSB0aGUgZm9sbG93aW5nOgorCisgICAgZGVjbmV0LmFkZHI9MSwyCisKK3RoZSB0d28gbnVtYmVycyBhcmUgdGhlIG5vZGUgYWRkcmVzcyAxLDIgPSAxLjIgRm9yIDIuMi54eCBrZXJuZWxzCithbmQgZWFybHkgMi4zLnh4IGtlcm5lbHMsIHlvdSBtdXN0IHVzZSBhIGNvbW1hIHdoZW4gc3BlY2lmeWluZyB0aGUKK0RFQ25ldCBhZGRyZXNzIGxpa2UgdGhpcy4gRm9yIG1vcmUgcmVjZW50IDIuMy54eCBrZXJuZWxzLCB5b3UgbWF5Cit1c2UgYWxtb3N0IGFueSBjaGFyYWN0ZXIgZXhjZXB0IHNwYWNlLCBhbHRob3VnaCBhIGAuYCB3b3VsZCBiZSB0aGUgbW9zdAorb2J2aW91cyBjaG9pY2UgOi0pCisKK1RoZXJlIHVzZWQgdG8gYmUgYSB0aGlyZCBudW1iZXIgc3BlY2lmeWluZyB0aGUgbm9kZSB0eXBlLiBUaGlzIG9wdGlvbgoraGFzIGdvbmUgYXdheSBpbiBmYXZvdXIgb2YgYSBwZXIgaW50ZXJmYWNlIG5vZGUgdHlwZS4gVGhpcyBpcyBub3cgc2V0Cit1c2luZyAvcHJvYy9zeXMvbmV0L2RlY25ldC9jb25mLzxkZXY+L2ZvcndhcmRpbmcuIFRoaXMgZmlsZSBjYW4gYmUKK3NldCB3aXRoIGEgc2luZ2xlIGRpZ2l0LCAwPUVuZE5vZGUsIDE9TDEgUm91dGVyIGFuZCAgMj1MMiBSb3V0ZXIuCisKK1RoZXJlIGFyZSBhbHNvIGVxdWl2YWxlbnQgb3B0aW9ucyBmb3IgbW9kdWxlcy4gVGhlIG5vZGUgYWRkcmVzcyBjYW4KK2Fsc28gYmUgc2V0IHRocm91Z2ggdGhlIC9wcm9jL3N5cy9uZXQvZGVjbmV0LyBmaWxlcywgYXMgY2FuIG90aGVyIHN5c3RlbQorcGFyYW1ldGVycy4KKworQ3VycmVudGx5IHRoZSBvbmx5IHN1cHBvcnRlZCBkZXZpY2VzIGFyZSBldGhlcm5ldCBhbmQgaXBfZ3JlLiBUaGUKK2V0aGVybmV0IGFkZHJlc3Mgb2YgeW91ciBldGhlcm5ldCBjYXJkIGhhcyB0byBiZSBzZXQgYWNjb3JkaW5nIHRvIHRoZSBERUNuZXQKK2FkZHJlc3Mgb2YgdGhlIG5vZGUgaW4gb3JkZXIgZm9yIGl0IHRvIGJlIGF1dG9jb25maWd1cmVkIChhbmQgdGhlbiBhcHBlYXIgaW4KKy9wcm9jL25ldC9kZWNuZXRfZGV2KS4gVGhlcmUgaXMgYSB1dGlsaXR5IGF2YWlsYWJsZSBhdCB0aGUgYWJvdmUKK0ZUUCBzaXRlcyBjYWxsZWQgZG4yZXRoYWRkciB3aGljaCBjYW4gY29tcHV0ZSB0aGUgY29ycmVjdCBldGhlcm5ldAorYWRkcmVzcyB0byB1c2UuIFRoZSBhZGRyZXNzIGNhbiBiZSBzZXQgYnkgaWZjb25maWcgZWl0aGVyIGJlZm9yZSBvcgorYXQgdGhlIHRpbWUgdGhlIGRldmljZSBpcyBicm91Z2h0IHVwLiBJZiB5b3UgYXJlIHVzaW5nIFJlZEhhdCB5b3UgY2FuCithZGQgdGhlIGxpbmU6CisKKyAgICBNQUNBRERSPUFBOjAwOjA0OjAwOjAzOjA0CisKK29yIHNvbWV0aGluZyBzaW1pbGFyLCB0byAvZXRjL3N5c2NvbmZpZy9uZXR3b3JrLXNjcmlwdHMvaWZjZmctZXRoMCBvcgord2hlcmV2ZXIgeW91ciBuZXR3b3JrIGNhcmQncyBjb25maWd1cmF0aW9uIGxpdmVzLiBTZXR0aW5nIHRoZSBNQUMgYWRkcmVzcworb2YgeW91ciBldGhlcm5ldCBjYXJkIHRvIGFuIGFkZHJlc3Mgc3RhcnRpbmcgd2l0aCAiaGktb3JkIiB3aWxsIGNhdXNlIGEKK0RFQ25ldCBhZGRyZXNzIHdoaWNoIG1hdGNoZXMgdG8gYmUgYWRkZWQgdG8gdGhlIGludGVyZmFjZSAod2hpY2ggeW91IGNhbgordmVyaWZ5IHdpdGggaXByb3V0ZTIpLgorCitUaGUgZGVmYXVsdCBkZXZpY2UgZm9yIHJvdXRpbmcgY2FuIGJlIHNldCB0aHJvdWdoIHRoZSAvcHJvYyBmaWxlc3lzdGVtCitieSBzZXR0aW5nIC9wcm9jL3N5cy9uZXQvZGVjbmV0L2RlZmF1bHRfZGV2aWNlIHRvIHRoZQorZGV2aWNlIHlvdSB3YW50IERFQ25ldCB0byByb3V0ZSBwYWNrZXRzIG91dCBvZiB3aGVuIG5vIHNwZWNpZmljIHJvdXRlCitpcyBhdmFpbGFibGUuIFVzdWFsbHkgdGhpcyB3aWxsIGJlIGV0aDAsIGZvciBleGFtcGxlOgorCisgICAgZWNobyAtbiAiZXRoMCIgPi9wcm9jL3N5cy9uZXQvZGVjbmV0L2RlZmF1bHRfZGV2aWNlCisKK0lmIHlvdSBkb24ndCBzZXQgdGhlIGRlZmF1bHQgZGV2aWNlLCB0aGVuIGl0IHdpbGwgZGVmYXVsdCB0byB0aGUgZmlyc3QKK2V0aGVybmV0IGNhcmQgd2hpY2ggaGFzIGJlZW4gYXV0b2NvbmZpZ3VyZWQgYXMgZGVzY3JpYmVkIGFib3ZlLiBZb3UgY2FuCitjb25maXJtIHRoYXQgYnkgbG9va2luZyBpbiB0aGUgZGVmYXVsdF9kZXZpY2UgZmlsZSBvZiBjb3Vyc2UuCisKK1RoZXJlIGlzIGEgbGlzdCBvZiB3aGF0IHRoZSBvdGhlciBmaWxlcyB1bmRlciAvcHJvYy9zeXMvbmV0L2RlY25ldC8gZG8KK29uIHRoZSBrZXJuZWwgcGF0Y2ggd2ViIHNpdGUgKHNob3duIGFib3ZlKS4KKworNCkgUnVuIHRpbWUga2VybmVsIGNvbmZpZ3VyYXRpb24KKworVGhpcyBpcyBlaXRoZXIgZG9uZSB0aHJvdWdoIHRoZSBzeXNjdGwvcHJvYyBpbnRlcmZhY2UgKHNlZSB0aGUga2VybmVsIHdlYgorcGFnZXMgZm9yIGRldGFpbHMgb24gd2hhdCB0aGUgdmFyaW91cyBvcHRpb25zIGRvKSBvciB0aHJvdWdoIHRoZSBpcHJvdXRlMgorcGFja2FnZSBpbiB0aGUgc2FtZSB3YXkgYXMgSVB2NC82IGNvbmZpZ3VyYXRpb24gaXMgcGVyZm9ybWVkLgorCitEb2N1bWVudGF0aW9uIGZvciBpcHJvdXRlMiBpcyBpbmNsdWRlZCB3aXRoIHRoZSBwYWNrYWdlLCBhbHRob3VnaCB0aGVyZSBpcworYXMgeWV0IG5vIHNwZWNpZmljIHNlY3Rpb24gb24gREVDbmV0LCBtb3N0IG9mIHRoZSBmZWF0dXJlcyBhcHBseSB0byBib3RoCitJUCBhbmQgREVDbmV0LCBhbGJlaXQgd2l0aCBERUNuZXQgYWRkcmVzc2VzIGluc3RlYWQgb2YgSVAgYWRkcmVzc2VzIGFuZAorYSByZWR1Y2VkIGZ1bmN0aW9uYWxpdHkuCisKK0lmIHlvdSB3YW50IHRvIGNvbmZpZ3VyZSBhIERFQ25ldCByb3V0ZXIgeW91J2xsIG5lZWQgdGhlIGlwcm91dGUyIHBhY2thZ2UKK3NpbmNlIGl0cyB0aGUgX29ubHlfIHdheSB0byBhZGQgYW5kIGRlbGV0ZSByb3V0ZXMgY3VycmVudGx5LiBFdmVudHVhbGx5Cit0aGVyZSB3aWxsIGJlIGEgcm91dGluZyBkYWVtb24gdG8gc2VuZCBhbmQgcmVjZWl2ZSByb3V0aW5nIG1lc3NhZ2VzIGZvcgorZWFjaCBpbnRlcmZhY2UgYW5kIHVwZGF0ZSB0aGUga2VybmVsIHJvdXRpbmcgdGFibGVzIGFjY29yZGluZ2x5LiBUaGUKK3JvdXRpbmcgZGFlbW9uIHdpbGwgdXNlIG5ldGZpbHRlciB0byBsaXN0ZW4gdG8gcm91dGluZyBwYWNrZXRzLCBhbmQKK3J0bmV0bGluayB0byB1cGRhdGUgdGhlIGtlcm5lbHMgcm91dGluZyB0YWJsZXMuIAorCitUaGUgREVDbmV0IHJhdyBzb2NrZXQgbGF5ZXIgaGFzIGJlZW4gcmVtb3ZlZCBzaW5jZSBpdCB3YXMgdGhlcmUgcHVyZWx5Citmb3IgdXNlIGJ5IHRoZSByb3V0aW5nIGRhZW1vbiB3aGljaCB3aWxsIG5vdyB1c2UgbmV0ZmlsdGVyIChhIG11Y2ggY2xlYW5lcgorYW5kIG1vcmUgZ2VuZXJpYyBzb2x1dGlvbikgaW5zdGVhZC4KKworNSkgSG93IGNhbiBJIHRlbGwgaWYgaXRzIHdvcmtpbmcgPworCitIZXJlIGlzIGEgcXVpY2sgZ3VpZGUgb2Ygd2hhdCB0byBsb29rIGZvciBpbiBvcmRlciB0byBrbm93IGlmIHlvdXIgREVDbmV0CitrZXJuZWwgc3Vic3lzdGVtIGlzIHdvcmtpbmcuCisKKyAgIC0gSXMgdGhlIG5vZGUgYWRkcmVzcyBzZXQgKHNlZSAvcHJvYy9zeXMvbmV0L2RlY25ldC9ub2RlX2FkZHJlc3MpCisgICAtIElzIHRoZSBub2RlIG9mIHRoZSBjb3JyZWN0IHR5cGUgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWUgL3Byb2Mvc3lzL25ldC9kZWNuZXQvY29uZi88ZGV2Pi9mb3J3YXJkaW5nKQorICAgLSBJcyB0aGUgRXRoZXJuZXQgTUFDIGFkZHJlc3Mgb2YgZWFjaCBFdGhlcm5ldCBjYXJkIHNldCB0byBtYXRjaAorICAgICB0aGUgREVDbmV0IGFkZHJlc3MuIElmIGluIGRvdWJ0IHVzZSB0aGUgZG4yZXRoYWRkciB1dGlsaXR5IGF2YWlsYWJsZQorICAgICBhdCB0aGUgZnRwIGFyY2hpdmUuCisgICAtIElmIHRoZSBwcmV2aW91cyB0d28gc3RlcHMgYXJlIHNhdGlzZmllZCwgYW5kIHRoZSBFdGhlcm5ldCBjYXJkIGlzIHVwLAorICAgICB5b3Ugc2hvdWxkIGZpbmQgdGhhdCBpdCBpcyBsaXN0ZWQgaW4gL3Byb2MvbmV0L2RlY25ldF9kZXYgYW5kIGFsc28KKyAgICAgdGhhdCBpdCBhcHBlYXJzIGFzIGEgZGlyZWN0b3J5IGluIC9wcm9jL3N5cy9uZXQvZGVjbmV0L2NvbmYvLiBUaGUKKyAgICAgbG9vcGJhY2sgZGV2aWNlIChsbykgc2hvdWxkIGFsc28gYXBwZWFyIGFuZCBpcyByZXF1aXJlZCB0byBjb21tdW5pY2F0ZQorICAgICB3aXRoaW4gYSBub2RlLgorICAgLSBJZiB5b3UgaGF2ZSBhbnkgREVDbmV0IHJvdXRlcnMgb24geW91ciBuZXR3b3JrLCB0aGV5IHNob3VsZCBhcHBlYXIKKyAgICAgaW4gL3Byb2MvbmV0L2RlY25ldF9uZWlnaCwgb3RoZXJ3aXNlIHRoaXMgZmlsZSB3aWxsIG9ubHkgY29udGFpbiB0aGUKKyAgICAgZW50cnkgZm9yIHRoZSBub2RlIGl0c2VsZiAoaWYgaXQgZG9lc24ndCBjaGVjayB0byBzZWUgaWYgbG8gaXMgdXApLgorICAgLSBJZiB5b3Ugd2FudCB0byBzZW5kIHRvIGFueSBub2RlIHdoaWNoIGlzIG5vdCBsaXN0ZWQgaW4gdGhlCisgICAgIC9wcm9jL25ldC9kZWNuZXRfbmVpZ2ggZmlsZSwgeW91J2xsIG5lZWQgdG8gc2V0IHRoZSBkZWZhdWx0IGRldmljZQorICAgICB0byBwb2ludCB0byBhbiBFdGhlcm5ldCBjYXJkIHdpdGggY29ubmVjdGlvbiB0byBhIHJvdXRlci4gVGhpcyBpcworICAgICBhZ2FpbiBkb25lIHdpdGggdGhlIC9wcm9jL3N5cy9uZXQvZGVjbmV0L2RlZmF1bHRfZGV2aWNlIGZpbGUuCisgICAtIFRyeSBzdGFydGluZyBhIHNpbXBsZSBzZXJ2ZXIgYW5kIGNsaWVudCwgbGlrZSB0aGUgZG5waW5nL2RubWlycm9yCisgICAgIG92ZXIgdGhlIGxvb3BiYWNrIGludGVyZmFjZS4gV2l0aCBsdWNrIHRoZXkgc2hvdWxkIGNvbW11bmljYXRlLgorICAgICBGb3IgdGhpcyBzdGVwIGFuZCB0aG9zZSBhZnRlciwgeW91J2xsIG5lZWQgdGhlIERFQ25ldCBsaWJyYXJ5CisgICAgIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSBhYm92ZSBmdHAgc2l0ZXMgYXMgd2VsbCBhcyB0aGUKKyAgICAgYWN0dWFsIHV0aWxpdGllcyB0aGVtc2VsdmVzLgorICAgLSBJZiB0aGlzIHNlZW1zIHRvIHdvcmssIHRoZW4gdHJ5IHRhbGtpbmcgdG8gYSBub2RlIG9uIHlvdXIgbG9jYWwKKyAgICAgbmV0d29yaywgYW5kIHNlZSBpZiB5b3UgY2FuIG9idGFpbiB0aGUgc2FtZSByZXN1bHRzLgorICAgLSBBdCB0aGlzIHBvaW50IHlvdSBhcmUgb24geW91ciBvd24uLi4gOi0pCisKKzYpIEhvdyB0byBzZW5kIGEgYnVnIHJlcG9ydAorCitJZiB5b3UndmUgZm91bmQgYSBidWcgYW5kIHdhbnQgdG8gcmVwb3J0IGl0LCB0aGVuIHRoZXJlIGFyZSBzZXZlcmFsIHRoaW5ncworeW91IGNhbiBkbyB0byBoZWxwIG1lIHdvcmsgb3V0IGV4YWN0bHkgd2hhdCBpdCBpcyB0aGF0IGlzIHdyb25nLiBVc2VmdWwKK2luZm9ybWF0aW9uIChfbW9zdF8gb2Ygd2hpY2ggX2lzXyBfZXNzZW50aWFsXykgaW5jbHVkZXM6CisKKyAtIFdoYXQga2VybmVsIHZlcnNpb24gYXJlIHlvdSBydW5uaW5nID8KKyAtIFdoYXQgdmVyc2lvbiBvZiB0aGUgcGF0Y2ggYXJlIHlvdSBydW5uaW5nID8KKyAtIEhvdyBmYXIgdGhvdWdoIHRoZSBhYm92ZSBzZXQgb2YgdGVzdHMgY2FuIHlvdSBnZXQgPworIC0gV2hhdCBpcyBpbiB0aGUgL3Byb2MvZGVjbmV0KiBmaWxlcyBhbmQgL3Byb2Mvc3lzL25ldC9kZWNuZXQvKiBmaWxlcyA/CisgLSBXaGljaCBzZXJ2aWNlcyBhcmUgeW91IHJ1bm5pbmcgPworIC0gV2hpY2ggY2xpZW50IGNhdXNlZCB0aGUgcHJvYmxlbSA/CisgLSBIb3cgbXVjaCBkYXRhIHdhcyBiZWluZyB0cmFuc2ZlcnJlZCA/CisgLSBXYXMgdGhlIG5ldHdvcmsgY29uZ2VzdGVkID8KKyAtIEhvdyBjYW4gdGhlIHByb2JsZW0gYmUgcmVwcm9kdWNlZCA/CisgLSBDYW4geW91IHVzZSB0Y3BkdW1wIHRvIGdldCBhIHRyYWNlID8gKE4uQi4gTW9zdCAoYWxsPykgdmVyc2lvbnMgb2YgCisgICB0Y3BkdW1wIGRvbid0IHVuZGVyc3RhbmQgaG93IHRvIGR1bXAgREVDbmV0IHByb3Blcmx5LCBzbyBpbmNsdWRpbmcKKyAgIHRoZSBoZXggbGlzdGluZyBvZiB0aGUgcGFja2V0IGNvbnRlbnRzIGlzIF9lc3NlbnRpYWxfLCB1c3VhbGx5IHRoZSAteCBmbGFnLgorICAgWW91IG1heSBhbHNvIG5lZWQgdG8gaW5jcmVhc2UgdGhlIGxlbmd0aCBncmFiYmVkIHdpdGggdGhlIC1zIGZsYWcuIFRoZQorICAgLWUgZmxhZyBhbHNvIHByb3ZpZGVzIHZlcnkgdXNlZnVsIGluZm9ybWF0aW9uIChldGhlcm5ldCBNQUMgYWRkcmVzc2VzKSkKKworNykgTUFDIEZBUQorCitBIHF1aWNrIEZBUSBvbiBldGhlcm5ldCBNQUMgYWRkcmVzc2VzIHRvIGV4cGxhaW4gaG93IExpbnV4IGFuZCBERUNuZXQKK2ludGVyYWN0IGFuZCBob3cgdG8gZ2V0IHRoZSBiZXN0IHBlcmZvcm1hbmNlIGZyb20geW91ciBoYXJkd2FyZS4gCisKK0V0aGVybmV0IGNhcmRzIGFyZSBkZXNpZ25lZCB0byBub3JtYWxseSBvbmx5IHBhc3MgcmVjZWl2ZWQgbmV0d29yayBmcmFtZXMgCit0byBhIGhvc3QgY29tcHV0ZXIgd2hlbiB0aGV5IGFyZSBhZGRyZXNzZWQgdG8gaXQsIG9yIHRvIHRoZSBicm9hZGNhc3QgYWRkcmVzcy4KKworTGludXggaGFzIGFuIGludGVyZmFjZSB3aGljaCBhbGxvd3MgdGhlIHNldHRpbmcgb2YgZXh0cmEgYWRkcmVzc2VzIGZvcgorYW4gZXRoZXJuZXQgY2FyZCB0byBsaXN0ZW4gdG8uIElmIHRoZSBldGhlcm5ldCBjYXJkIHN1cHBvcnRzIGl0LCB0aGUKK2ZpbHRlcmluZyBvcGVyYXRpb24gd2lsbCBiZSBkb25lIGluIGhhcmR3YXJlLCBpZiBub3QgdGhlIGV4dHJhIHVud2FudGVkIHBhY2tldHMKK3JlY2VpdmVkIHdpbGwgYmUgZGlzY2FyZGVkIGJ5IHRoZSBob3N0IGNvbXB1dGVyLiBJbiB0aGUgbGF0dGVyIGNhc2UsCitzaWduaWZpY2FudCBwcm9jZXNzb3IgdGltZSBhbmQgYnVzIGJhbmR3aWR0aCBjYW4gYmUgdXNlZCB1cCBvbiBhIGJ1c3kKK25ldHdvcmsgKHNlZSB0aGUgTkFQSSBkb2N1bWVudGF0aW9uIGZvciBhIGxvbmdlciBleHBsYW5hdGlvbiBvZiB0aGVzZQorZWZmZWN0cykuCisKK0RFQ25ldCBtYWtlcyB1c2Ugb2YgdGhpcyBpbnRlcmZhY2UgdG8gYWxsb3cgcnVubmluZyBERUNuZXQgb24gYW4gZXRoZXJuZXQgCitjYXJkIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gY29uZmlndXJlZCB1c2luZyBUQ1AvSVAgKHByZXN1bWFibHkgdXNpbmcgdGhlIAorYnVpbHQgaW4gTUFDIGFkZHJlc3Mgb2YgdGhlIGNhcmQsIGFzIHVzdWFsKSBhbmQvb3IgdG8gYWxsb3cgbXVsdGlwbGUgREVDbmV0CithZGRyZXNzZXMgb24gZWFjaCBwaHlzaWNhbCBpbnRlcmZhY2UuIElmIHlvdSBkbyB0aGlzLCBiZSBhd2FyZSB0aGF0IGlmIHlvdXIKK2V0aGVybmV0IGNhcmQgZG9lc24ndCBzdXBwb3J0IHBlcmZlY3QgaGFzaGluZyBpbiBpdHMgTUFDIGFkZHJlc3MgZmlsdGVyCit0aGVuIHlvdXIgY29tcHV0ZXIgd2lsbCBiZSBkb2luZyBtb3JlIHdvcmsgdGhhbiByZXF1aXJlZC4gU29tZSBjYXJkcword2lsbCBzaW1wbHkgc2V0IHRoZW1zZWx2ZXMgaW50byBwcm9taXNjdW91cyBtb2RlIGluIG9yZGVyIHRvIHJlY2VpdmUKK3BhY2tldHMgZnJvbSB0aGUgREVDbmV0IHNwZWNpZmllZCBhZGRyZXNzZXMuIFNvIGlmIHlvdSBoYXZlIG9uZSBvZiB0aGVzZQorY2FyZHMgaXRzIGJldHRlciB0byBzZXQgdGhlIE1BQyBhZGRyZXNzIG9mIHRoZSBjYXJkIGFzIGRlc2NyaWJlZCBhYm92ZQordG8gZ2FpbiB0aGUgYmVzdCBlZmZpY2llbmN5LiBCZXR0ZXIgc3RpbGwgaXMgdG8gdXNlIGEgY2FyZCB3aGljaCBzdXBwb3J0cworTkFQSSBhcyB3ZWxsLgorCisKKzgpIE1haWxpbmcgbGlzdAorCitJZiB5b3UgYXJlIGtlZW4gdG8gZ2V0IGludm9sdmVkIGluIGRldmVsb3BtZW50LCBvciB3YW50IHRvIGFzayBxdWVzdGlvbnMKK2Fib3V0IGNvbmZpZ3VyYXRpb24sIG9yIGV2ZW4ganVzdCByZXBvcnQgYnVncywgdGhlbiB0aGVyZSBpcyBhIG1haWxpbmcKK2xpc3QgdGhhdCB5b3UgY2FuIGpvaW4sIGRldGFpbHMgYXJlIGF0OgorCitodHRwOi8vc291cmNlZm9yZ2UubmV0L21haWwvP2dyb3VwX2lkPTQ5OTMKKworOSkgTGVnYWwgSW5mbworCitUaGUgTGludXggREVDbmV0IHByb2plY3QgdGVhbSBoYXZlIHBsYWNlZCB0aGVpciBjb2RlIHVuZGVyIHRoZSBHUEwuIFRoZQorc29mdHdhcmUgaXMgcHJvdmlkZWQgImFzIGlzIiBhbmQgd2l0aG91dCB3YXJyYW50eSBleHByZXNzIG9yIGltcGxpZWQuCitERUNuZXQgaXMgYSB0cmFkZW1hcmsgb2YgQ29tcGFxLiBUaGlzIHNvZnR3YXJlIGlzIG5vdCBhIHByb2R1Y3Qgb2YKK0NvbXBhcS4gV2UgYWNrbm93bGVkZ2UgdGhlIGhlbHAgb2YgcGVvcGxlIGF0IENvbXBhcSBpbiBwcm92aWRpbmcgZXh0cmEKK2RvY3VtZW50YXRpb24gYWJvdmUgYW5kIGJleW9uZCB3aGF0IHdhcyBwcmV2aW91c2x5IHB1YmxpY2x5IGF2YWlsYWJsZS4KKworU3RldmUgV2hpdGVob3VzZSA8U3RldmVXQEFDTS5vcmc+CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kbDJrLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kbDJrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmE3NGY3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RsMmsudHh0CkBAIC0wLDAgKzEsMjgyIEBACisKKyAgICBELUxpbmsgREwyMDAwLWJhc2VkIEdpZ2FiaXQgRXRoZXJuZXQgQWRhcHRlciBJbnN0YWxsYXRpb24KKyAgICBmb3IgTGludXgKKyAgICBNYXkgMjMsIDIwMDIKKworQ29udGVudHMKKz09PT09PT09CisgLSBDb21wYXRpYmlsaXR5IExpc3QKKyAtIFF1aWNrIEluc3RhbGwKKyAtIENvbXBpbGluZyB0aGUgRHJpdmVyCisgLSBJbnN0YWxsaW5nIHRoZSBEcml2ZXIKKyAtIE9wdGlvbiBwYXJhbWV0ZXIKKyAtIENvbmZpZ3VyYXRpb24gU2NyaXB0IFNhbXBsZQorIC0gVHJvdWJsZXNob290aW5nCisKKworQ29tcGF0aWJpbGl0eSBMaXN0Cis9PT09PT09PT09PT09PT09PQorQWRhcHRlciBTdXBwb3J0OgorCitELUxpbmsgREdFLTU1MFQgR2lnYWJpdCBFdGhlcm5ldCBBZGFwdGVyLgorRC1MaW5rIERHRS01NTBTWCBHaWdhYml0IEV0aGVybmV0IEFkYXB0ZXIuCitELUxpbmsgREwyMDAwLWJhc2VkIEdpZ2FiaXQgRXRoZXJuZXQgQWRhcHRlci4KKworCitUaGUgZHJpdmVyIHN1cHBvcnQgTGludXgga2VybmVsIDIuNC43IGxhdGVyLiBXZSBoYWQgdGVzdGVkIGl0CitvbiB0aGUgZW52aXJvbm1lbnRzIGJlbG93LgorCisgLiBSZWQgSGF0IHY2LjIgKHVwZGF0ZSBrZXJuZWwgdG8gMi40LjcpCisgLiBSZWQgSGF0IHY3LjAgKHVwZGF0ZSBrZXJuZWwgdG8gMi40LjcpCisgLiBSZWQgSGF0IHY3LjEgKGtlcm5lbCAyLjQuNykKKyAuIFJlZCBIYXQgdjcuMiAoa2VybmVsIDIuNC43LTEwKQorCisKK1F1aWNrIEluc3RhbGwKKz09PT09PT09PT09PT0KK0luc3RhbGwgbGludXggZHJpdmVyIGFzIGZvbGxvd2luZyBjb21tYW5kOgorCisxLiBtYWtlIGFsbAorMi4gaW5zbW9kIGRsMmsua28KKzMuIGlmY29uZmlnIGV0aDAgdXAgMTAueHh4Lnh4eC54eHggbmV0bWFzayAyNTUuMC4wLjAKKwkJICAgIF5eXl5eXl5eXl5eXl5eXlwJICAgIF5eXl5eXl5eXAorCQkJCSAgICBJUAkJICAgICBORVRNQVNLCitOb3cgZXRoMCBzaG91bGQgYWN0aXZlLCB5b3UgY2FuIHRlc3QgaXQgYnkgInBpbmciIG9yIGdldCBtb3JlIGluZm9ybWF0aW9uIGJ5CisiaWZjb25maWciLiBJZiB0ZXN0ZWQgb2ssIGNvbnRpbnVlIHRoZSBuZXh0IHN0ZXAuCisKKzQuIGNwIGRsMmsua28gL2xpYi9tb2R1bGVzL2B1bmFtZSAtcmAva2VybmVsL2RyaXZlcnMvbmV0Cis1LiBBZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIC9ldGMvbW9kcHJvYmUuZC9kbDJrLmNvbmY6CisJYWxpYXMgZXRoMCBkbDJrCis2LiBSdW4gZGVwbW9kIHRvIHVwZGF0ZWQgbW9kdWxlIGluZGV4ZXMuCis3LiBSdW4gIm5ldGNvbmZpZyIgb3IgIm5ldGNvbmYiIHRvIGNyZWF0ZSBjb25maWd1cmF0aW9uIHNjcmlwdCBpZmNmZy1ldGgwCisgICBsb2NhdGVkIGF0IC9ldGMvc3lzY29uZmlnL25ldHdvcmstc2NyaXB0cyBvciBjcmVhdGUgaXQgbWFudWFsbHkuCisgICBbc2VlIC0gQ29uZmlndXJhdGlvbiBTY3JpcHQgU2FtcGxlXQorOC4gRHJpdmVyIHdpbGwgYXV0b21hdGljYWxseSBsb2FkIGFuZCBjb25maWd1cmUgYXQgbmV4dCBib290IHRpbWUuCisKK0NvbXBpbGluZyB0aGUgRHJpdmVyCis9PT09PT09PT09PT09PT09PT09PQorICBJbiBMaW51eCwgTklDIGRyaXZlcnMgYXJlIG1vc3QgY29tbW9ubHkgY29uZmlndXJlZCBhcyBsb2FkYWJsZSBtb2R1bGVzLgorVGhlIGFwcHJvYWNoIG9mIGJ1aWxkaW5nIGEgbW9ub2xpdGhpYyBrZXJuZWwgaGFzIGJlY29tZSBvYnNvbGV0ZS4gVGhlIGRyaXZlcgorY2FuIGJlIGNvbXBpbGVkIGFzIHBhcnQgb2YgYSBtb25vbGl0aGljIGtlcm5lbCwgYnV0IGlzIHN0cm9uZ2x5IGRpc2NvdXJhZ2VkLgorVGhlIHJlbWFpbmRlciBvZiB0aGlzIHNlY3Rpb24gYXNzdW1lcyB0aGUgZHJpdmVyIGlzIGJ1aWx0IGFzIGEgbG9hZGFibGUgbW9kdWxlLgorSW4gdGhlIExpbnV4IGVudmlyb25tZW50LCBpdCBpcyBhIGdvb2QgaWRlYSB0byByZWJ1aWxkIHRoZSBkcml2ZXIgZnJvbSB0aGUKK3NvdXJjZSBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gYSBwcmVjb21waWxlZCB2ZXJzaW9uLiBUaGlzIGFwcHJvYWNoIHByb3ZpZGVzCitiZXR0ZXIgcmVsaWFiaWxpdHkgc2luY2UgYSBwcmVjb21waWxlZCBkcml2ZXIgbWlnaHQgZGVwZW5kIG9uIGxpYnJhcmllcyBvcgora2VybmVsIGZlYXR1cmVzIHRoYXQgYXJlIG5vdCBwcmVzZW50IGluIGEgZ2l2ZW4gTGludXggaW5zdGFsbGF0aW9uLgorCitUaGUgMyBmaWxlcyBuZWNlc3NhcnkgdG8gYnVpbGQgTGludXggZGV2aWNlIGRyaXZlciBhcmUgZGwyay5jLCBkbDJrLmggYW5kCitNYWtlZmlsZS4gVG8gY29tcGlsZSwgdGhlIExpbnV4IGluc3RhbGxhdGlvbiBtdXN0IGluY2x1ZGUgdGhlIGdjYyBjb21waWxlciwKK3RoZSBrZXJuZWwgc291cmNlLCBhbmQgdGhlIGtlcm5lbCBoZWFkZXJzLiBUaGUgTGludXggZHJpdmVyIHN1cHBvcnRzIExpbnV4CitLZXJuZWxzIDIuNC43LiBDb3B5IHRoZSBmaWxlcyB0byBhIGRpcmVjdG9yeSBhbmQgZW50ZXIgdGhlIGZvbGxvd2luZyBjb21tYW5kCit0byBjb21waWxlIGFuZCBsaW5rIHRoZSBkcml2ZXI6CisKK0NELVJPTSBkcml2ZQorLS0tLS0tLS0tLS0tCisKK1tyb290QFhYWCAvXSBta2RpciBjZHJvbQorW3Jvb3RAWFhYIC9dIG1vdW50IC1yIC10IGlzbzk2NjAgLW8gY29udj1hdXRvIC9kZXYvY2Ryb20gL2Nkcm9tCitbcm9vdEBYWFggL10gY2Qgcm9vdAorW3Jvb3RAWFhYIC9yb290XSBta2RpciBkbDJrCitbcm9vdEBYWFggL3Jvb3RdIGNkIGRsMmsKK1tyb290QFhYWCBkbDJrXSBjcCAvY2Ryb20vbGludXgvZGwyay50Z3ogL3Jvb3QvZGwyaworW3Jvb3RAWFhYIGRsMmtdIHRhciB4ZnZ6IGRsMmsudGd6Citbcm9vdEBYWFggZGwya10gbWFrZSBhbGwKKworRmxvcHB5IGRpc2MgZHJpdmUKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1tyb290QFhYWCAvXSBjZCByb290Citbcm9vdEBYWFggL3Jvb3RdIG1rZGlyIGRsMmsKK1tyb290QFhYWCAvcm9vdF0gY2QgZGwyaworW3Jvb3RAWFhYIGRsMmtdIG1jb3B5IGE6L2xpbnV4L2RsMmsudGd6IC9yb290L2RsMmsKK1tyb290QFhYWCBkbDJrXSB0YXIgeGZ2eiBkbDJrLnRnegorW3Jvb3RAWFhYIGRsMmtdIG1ha2UgYWxsCisKK0luc3RhbGxpbmcgdGhlIERyaXZlcgorPT09PT09PT09PT09PT09PT09PT09CisKKyAgTWFudWFsIEluc3RhbGxhdGlvbgorICAtLS0tLS0tLS0tLS0tLS0tLS0tCisgIE9uY2UgdGhlIGRyaXZlciBoYXMgYmVlbiBjb21waWxlZCwgaXQgbXVzdCBiZSBsb2FkZWQsIGVuYWJsZWQsIGFuZCBib3VuZAorICB0byBhIHByb3RvY29sIHN0YWNrIGluIG9yZGVyIHRvIGVzdGFibGlzaCBuZXR3b3JrIGNvbm5lY3Rpdml0eS4gVG8gbG9hZCBhCisgIG1vZHVsZSBlbnRlciB0aGUgY29tbWFuZDoKKworICBpbnNtb2QgZGwyay5vCisKKyAgb3IKKworICBpbnNtb2QgZGwyay5vIDxvcHRpb25hbCBwYXJhbWV0ZXI+CTsgYWRkIHBhcmFtZXRlcgorCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgZXhhbXBsZTogaW5zbW9kIGRsMmsubyBtZWRpYT0xMDBtYnBzX2hkCisgICBvcgkgICAgaW5zbW9kIGRsMmsubyBtZWRpYT0zCisgICBvcgkgICAgaW5zbW9kIGRsMmsubyBtZWRpYT0zLDIJOyBmb3IgMiBjYXJkcworICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICBQbGVhc2UgcmVmZXJlbmNlIHRoZSBsaXN0IG9mIHRoZSBjb21tYW5kIGxpbmUgcGFyYW1ldGVycyBzdXBwb3J0ZWQgYnkKKyAgdGhlIExpbnV4IGRldmljZSBkcml2ZXIgYmVsb3cuCisKKyAgVGhlIGluc21vZCBjb21tYW5kIG9ubHkgbG9hZHMgdGhlIGRyaXZlciBhbmQgZ2l2ZXMgaXQgYSBuYW1lIG9mIHRoZSBmb3JtCisgIGV0aDAsIGV0aDEsIGV0Yy4gVG8gYnJpbmcgdGhlIE5JQyBpbnRvIGFuIG9wZXJhdGlvbmFsIHN0YXRlLAorICBpdCBpcyBuZWNlc3NhcnkgdG8gaXNzdWUgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorCisgIGlmY29uZmlnIGV0aDAgdXAKKworICBGaW5hbGx5LCB0byBiaW5kIHRoZSBkcml2ZXIgdG8gdGhlIGFjdGl2ZSBwcm90b2NvbCAoZS5nLiwgVENQL0lQIHdpdGgKKyAgTGludXgpLCBlbnRlciB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CisKKyAgaWZ1cCBldGgwCisKKyAgTm90ZSB0aGF0IHRoaXMgaXMgbWVhbmluZ2Z1bCBvbmx5IGlmIHRoZSBzeXN0ZW0gY2FuIGZpbmQgYSBjb25maWd1cmF0aW9uCisgIHNjcmlwdCB0aGF0IGNvbnRhaW5zIHRoZSBuZWNlc3NhcnkgbmV0d29yayBpbmZvcm1hdGlvbi4gQSBzYW1wbGUgd2lsbCBiZQorICBnaXZlbiBpbiB0aGUgbmV4dCBwYXJhZ3JhcGguCisKKyAgVGhlIGNvbW1hbmRzIHRvIHVubG9hZCBhIGRyaXZlciBhcmUgYXMgZm9sbG93czoKKworICBpZmRvd24gZXRoMAorICBpZmNvbmZpZyBldGgwIGRvd24KKyAgcm1tb2QgZGwyay5vCisKKyAgVGhlIGZvbGxvd2luZyBhcmUgdGhlIGNvbW1hbmRzIHRvIGxpc3QgdGhlIGN1cnJlbnRseSBsb2FkZWQgbW9kdWxlcyBhbmQKKyAgdG8gc2VlIHRoZSBjdXJyZW50IG5ldHdvcmsgY29uZmlndXJhdGlvbi4KKworICBsc21vZAorICBpZmNvbmZpZworCisKKyAgQXV0b21hdGVkIEluc3RhbGxhdGlvbgorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IHRvIGluc3RhbGwgdGhlIGRyaXZlciBzdWNoIHRoYXQgaXQgaXMKKyAgYXV0b21hdGljYWxseSBsb2FkZWQgYW5kIGNvbmZpZ3VyZWQgYXQgYm9vdCB0aW1lLiBUaGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uCisgIGlzIGJhc2VkIG9uIGEgUmVkIEhhdCA2LjAvNy4wIGRpc3RyaWJ1dGlvbiwgYnV0IGl0IGNhbiBlYXNpbHkgYmUgcG9ydGVkIHRvCisgIG90aGVyIGRpc3RyaWJ1dGlvbnMgYXMgd2VsbC4KKworICBSZWQgSGF0IHY2LngvdjcueAorICAtLS0tLS0tLS0tLS0tLS0tLQorICAxLiBDb3B5IGRsMmsubyB0byB0aGUgbmV0d29yayBtb2R1bGVzIGRpcmVjdG9yeSwgdHlwaWNhbGx5CisgICAgIC9saWIvbW9kdWxlcy8yLngueC14eC9uZXQgb3IgL2xpYi9tb2R1bGVzLzIueC54L2tlcm5lbC9kcml2ZXJzL25ldC4KKyAgMi4gTG9jYXRlIHRoZSBib290IG1vZHVsZSBjb25maWd1cmF0aW9uIGZpbGUsIG1vc3QgY29tbW9ubHkgaW4gdGhlCisgICAgIC9ldGMvbW9kcHJvYmUuZC8gZGlyZWN0b3J5LiBBZGQgdGhlIGZvbGxvd2luZyBsaW5lczoKKworICAgICBhbGlhcyBldGh4IGRsMmsKKyAgICAgb3B0aW9ucyBkbDJrIDxvcHRpb25hbCBwYXJhbWV0ZXJzPgorCisgICAgIHdoZXJlIGV0aHggd2lsbCBiZSBldGgwIGlmIHRoZSBOSUMgaXMgdGhlIG9ubHkgZXRoZXJuZXQgYWRhcHRlciwgZXRoMSBpZgorICAgICBvbmUgb3RoZXIgZXRoZXJuZXQgYWRhcHRlciBpcyBpbnN0YWxsZWQsIGV0Yy4gUmVmZXIgdG8gdGhlIHRhYmxlIGluIHRoZQorICAgICBwcmV2aW91cyBzZWN0aW9uIGZvciB0aGUgbGlzdCBvZiBvcHRpb25hbCBwYXJhbWV0ZXJzLgorICAzLiBMb2NhdGUgdGhlIG5ldHdvcmsgY29uZmlndXJhdGlvbiBzY3JpcHRzLCBub3JtYWxseSB0aGUKKyAgICAgL2V0Yy9zeXNjb25maWcvbmV0d29yay1zY3JpcHRzIGRpcmVjdG9yeSwgYW5kIGNyZWF0ZSBhIGNvbmZpZ3VyYXRpb24KKyAgICAgc2NyaXB0IG5hbWVkIGlmY2ZnLWV0aHggdGhhdCBjb250YWlucyBuZXR3b3JrIGluZm9ybWF0aW9uLgorICA0LiBOb3RlIHRoYXQgZm9yIG1vc3QgTGludXggZGlzdHJpYnV0aW9ucywgUmVkIEhhdCBpbmNsdWRlZCwgYSBjb25maWd1cmF0aW9uCisgICAgIHV0aWxpdHkgd2l0aCBhIGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZSBpcyBwcm92aWRlZCB0byBwZXJmb3JtIHN0ZXBzIDIKKyAgICAgYW5kIDMgYWJvdmUuCisKKworUGFyYW1ldGVyIERlc2NyaXB0aW9uCis9PT09PT09PT09PT09PT09PT09PT0KK1lvdSBjYW4gaW5zdGFsbCB0aGlzIGRyaXZlciB3aXRob3V0IGFueSBhZGRpdGlvbmFsIHBhcmFtZXRlci4gSG93ZXZlciwgaWYgeW91CithcmUgZ29pbmcgdG8gaGF2ZSBleHRlbnNpdmUgZnVuY3Rpb25zIHRoZW4gaXQgaXMgbmVjZXNzYXJ5IHRvIHNldCBleHRyYQorcGFyYW1ldGVyLiBCZWxvdyBpcyBhIGxpc3Qgb2YgdGhlIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzIHN1cHBvcnRlZCBieSB0aGUKK0xpbnV4IGRldmljZQorZHJpdmVyLgorCittdHU9cGFja2V0X3NpemUJCQktIFNwZWNpZmllcyB0aGUgbWF4aW11bSBwYWNrZXQgc2l6ZS4gZGVmYXVsdAorCQkJCSAgaXMgMTUwMC4KKworbWVkaWE9bWVkaWFfdHlwZQkJLSBTcGVjaWZpZXMgdGhlIG1lZGlhIHR5cGUgdGhlIE5JQyBvcGVyYXRlcyBhdC4KKwkJCQkgIGF1dG9zZW5zZQlBdXRvc2Vuc2luZyBhY3RpdmUgbWVkaWEuCisJCQkJICAxMG1icHNfaGQJMTBNYnBzIGhhbGYgZHVwbGV4LgorCQkJCSAgMTBtYnBzX2ZkCTEwTWJwcyBmdWxsIGR1cGxleC4KKwkJCQkgIDEwMG1icHNfaGQJMTAwTWJwcyBoYWxmIGR1cGxleC4KKwkJCQkgIDEwMG1icHNfZmQJMTAwTWJwcyBmdWxsIGR1cGxleC4KKwkJCQkgIDEwMDBtYnBzX2ZkCTEwMDBNYnBzIGZ1bGwgZHVwbGV4LgorCQkJCSAgMTAwMG1icHNfaGQJMTAwME1icHMgaGFsZiBkdXBsZXguCisJCQkJICAwCQlBdXRvc2Vuc2luZyBhY3RpdmUgbWVkaWEuCisJCQkJICAxCQkxME1icHMgaGFsZiBkdXBsZXguCisJCQkJICAyCQkxME1icHMgZnVsbCBkdXBsZXguCisJCQkJICAzCQkxMDBNYnBzIGhhbGYgZHVwbGV4LgorCQkJCSAgNAkJMTAwTWJwcyBmdWxsIGR1cGxleC4KKwkJCQkgIDUgICAgICAgICAgCTEwMDBNYnBzIGhhbGYgZHVwbGV4LgorCQkJCSAgNiAgICAgICAgICAJMTAwME1icHMgZnVsbCBkdXBsZXguCisKKwkJCQkgIEJ5IGRlZmF1bHQsIHRoZSBOSUMgb3BlcmF0ZXMgYXQgYXV0b3NlbnNlLgorCQkJCSAgMTAwMG1icHNfZmQgYW5kIDEwMDBtYnBzX2hkIHR5cGVzIGFyZSBvbmx5CisJCQkJICBhdmFpbGFibGUgZm9yIGZpYmVyIGFkYXB0ZXIuCisKK3ZsYW49bgkJCQktIFNwZWNpZmllcyB0aGUgVkxBTiBJRC4gSWYgdmxhbj0wLCB0aGUKKwkJCQkgIFZpcnR1YWwgTG9jYWwgQXJlYSBOZXR3b3JrIChWTEFOKSBmdW5jdGlvbiBpcworCQkJCSAgZGlzYWJsZS4KKworanVtYm89WzB8MV0JCQktIFNwZWNpZmllcyB0aGUganVtYm8gZnJhbWUgc3VwcG9ydC4gSWYganVtYm89MSwKKwkJCQkgIHRoZSBOSUMgYWNjZXB0IGp1bWJvIGZyYW1lcy4gQnkgZGVmYXVsdCwgdGhpcworCQkJCSAgZnVuY3Rpb24gaXMgZGlzYWJsZWQuCisJCQkJICBKdW1ibyBmcmFtZSB1c3VhbGx5IGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlCisJCQkJICBpbnQgZ2lnYWJpdC4KKwkJCQkgIFRoaXMgZmVhdHVyZSBuZWVkIGp1bWJvIGZyYW1lIGNvbXBhdGlibGUgCisJCQkJICByZW1vdGUuCisJCQkJICAKK3J4X2NvYWxlc2NlPW0JCQktIE51bWJlciBvZiByeCBmcmFtZSBoYW5kbGVkIGVhY2ggaW50ZXJydXB0LgorcnhfdGltZW91dD1uCQkJLSBSeCBETUEgd2FpdCB0aW1lIGZvciBhbiBpbnRlcnJ1cHQuIAorCQkJCSAgSWYgc2V0IHJ4X2NvYWxlc2NlID4gMCwgaGFyZHdhcmUgb25seSBhc3NlcnQgCisJCQkJICBhbiBpbnRlcnJ1cHQgZm9yIG0gZnJhbWVzLiBIYXJkd2FyZSB3b24ndCAKKwkJCQkgIGFzc2VydCByeCBpbnRlcnJ1cHQgdW50aWwgbSBmcmFtZXMgcmVjZWl2ZWQgb3IKKwkJCQkgIHJlYWNoIHRpbWVvdXQgb2YgbiAqIDY0MCBuYW5vIHNlY29uZHMuIAorCQkJCSAgU2V0IHByb3BlciByeF9jb2FsZXNjZSBhbmQgcnhfdGltZW91dCBjYW4gCisJCQkJICByZWR1Y2UgY29uZ2VzdGlvbiBjb2xsYXBzZSBhbmQgb3ZlcmxvYWQgd2hpY2gKKwkJCQkgIGhhcyBiZWVuIGEgYm90dGxlbmVjayBmb3IgaGlnaCBzcGVlZCBuZXR3b3JrLgorCQkJCSAgCisJCQkJICBGb3IgZXhhbXBsZSwgcnhfY29hbGVzY2U9MTAgcnhfdGltZW91dD04MDAuCisJCQkJICB0aGF0IGlzLCBoYXJkd2FyZSBhc3NlcnQgb25seSAxIGludGVycnVwdCAKKwkJCQkgIGZvciAxMCBmcmFtZXMgcmVjZWl2ZWQgb3IgdGltZW91dCBvZiA1MTIgdXMuIAorCit0eF9jb2FsZXNjZT1uCQkJLSBOdW1iZXIgb2YgdHggZnJhbWUgaGFuZGxlZCBlYWNoIGludGVycnVwdC4KKwkJCQkgIFNldCBuID4gMSBjYW4gcmVkdWNlIHRoZSBpbnRlcnJ1cHRzIAorCQkJCSAgY29uZ2VzdGlvbiB1c3VhbGx5IGxvd2VyIHBlcmZvcm1hbmNlIG9mCisJCQkJICBoaWdoIHNwZWVkIG5ldHdvcmsgY2FyZC4gRGVmYXVsdCBpcyAxNi4KKwkJCQkgIAordHhfZmxvdz1bMXwwXQkJCS0gU3BlY2lmaWVzIHRoZSBUeCBmbG93IGNvbnRyb2wuIElmIHR4X2Zsb3c9MCwgCisJCQkJICB0aGUgVHggZmxvdyBjb250cm9sIGRpc2FibGUgZWxzZSBkcml2ZXIKKwkJCQkgIGF1dG9kZXRlY3QuCityeF9mbG93PVsxfDBdCQkJLSBTcGVjaWZpZXMgdGhlIFJ4IGZsb3cgY29udHJvbC4gSWYgcnhfZmxvdz0wLCAKKwkJCQkgIHRoZSBSeCBmbG93IGNvbnRyb2wgZW5hYmxlIGVsc2UgZHJpdmVyCisJCQkJICBhdXRvZGV0ZWN0LgorCisKK0NvbmZpZ3VyYXRpb24gU2NyaXB0IFNhbXBsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09CitIZXJlIGlzIGEgc2FtcGxlIG9mIGEgc2ltcGxlIGNvbmZpZ3VyYXRpb24gc2NyaXB0OgorCitERVZJQ0U9ZXRoMAorVVNFUkNUTD1ubworT05CT09UPXllcworUE9PVFBST1RPPW5vbmUKK0JST0FEQ0FTVD0yMDcuMjAwLjUuMjU1CitORVRXT1JLPTIwNy4yMDAuNS4wCitORVRNQVNLPTI1NS4yNTUuMjU1LjAKK0lQQUREUj0yMDcuMjAwLjUuMgorCisKK1Ryb3VibGVzaG9vdGluZworPT09PT09PT09PT09PT09CitRMS4gU291cmNlIGZpbGVzIGNvbnRhaW4gXiBNIGJlaGluZCBldmVyeSBsaW5lLgorCU1ha2Ugc3VyZSBhbGwgZmlsZXMgYXJlIFVuaXggZmlsZSBmb3JtYXQgKG5vIExGKS4gVHJ5IHRoZSBmb2xsb3dpbmcKKyAgICBzaGVsbCBjb21tYW5kIHRvIGNvbnZlcnQgZmlsZXMuCisKKwljYXQgZGwyay5jIHwgY29sIC1iID4gZGwyay50bXAKKwltdiBkbDJrLnRtcCBkbDJrLmMKKworCU9SCisKKwljYXQgZGwyay5jIHwgdHIgLWQgIlxyIiA+IGRsMmsudG1wCisJbXYgZGwyay50bXAgZGwyay5jCisKK1EyOiBDb3VsZCBub3QgZmluZCBoZWFkZXIgZmlsZXMgKCouaCkgPworCVRvIGNvbXBpbGUgdGhlIGRyaXZlciwgeW91IG5lZWQga2VybmVsIGhlYWRlciBmaWxlcy4gQWZ0ZXIKKyAgICBpbnN0YWxsaW5nIHRoZSBrZXJuZWwgc291cmNlLCB0aGUgaGVhZGVyIGZpbGVzIGFyZSB1c3VhbGx5IGxvY2F0ZWQgaW4KKyAgICAvdXNyL3NyYy9saW51eC9pbmNsdWRlLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBpbmNsdWRlIGRpcmVjdG9yeSBjb25maWd1cmVkCisgICAgaW4gTWFrZWZpbGUuIEZvciBzb21lIGRpc3RyaWJ1dGlvbnMsIHRoZXJlIGlzIGEgY29weSBvZiBoZWFkZXIgZmlsZXMgaW4KKyAgICAvdXNyL3NyYy9pbmNsdWRlL2xpbnV4IGFuZCAvdXNyL3NyYy9pbmNsdWRlL2FzbSwgdGhhdCB5b3UgY2FuIGNoYW5nZSB0aGUKKyAgICBJTkNMVURFRElSIGluIE1ha2VmaWxlIHRvIC91c3IvaW5jbHVkZSB3aXRob3V0IGluc3RhbGxpbmcga2VybmVsIHNvdXJjZS4KKwlOb3RlIHRoYXQgUkggNy4wIGRpZG4ndCBwcm92aWRlIGNvcnJlY3QgaGVhZGVyIGZpbGVzIGluIC91c3IvaW5jbHVkZSwKKyAgICBpbmNsdWRpbmcgdGhvc2UgZmlsZXMgd2lsbCBtYWtlIGEgd3JvbmcgdmVyc2lvbiBkcml2ZXIuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kbTkwMDAudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RtOTAwMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU1MmUyZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kbTkwMDAudHh0CkBAIC0wLDAgKzEsMTY3IEBACitETTkwMDAgTmV0d29yayBkcml2ZXIKKz09PT09PT09PT09PT09PT09PT09PQorCitDb3B5cmlnaHQgMjAwOCBTaW10ZWMgRWxlY3Ryb25pY3MsCisJICBCZW4gRG9va3MgPGJlbkBzaW10ZWMuY28udWs+IDxiZW4tbGludXhAZmx1ZmYub3JnPgorCisKK0ludHJvZHVjdGlvbgorLS0tLS0tLS0tLS0tCisKK1RoaXMgZmlsZSBkZXNjcmliZXMgaG93IHRvIHVzZSB0aGUgRE05MDAwIHBsYXRmb3JtLWRldmljZSBiYXNlZCBuZXR3b3JrIGRyaXZlcgordGhhdCBpcyBjb250YWluZWQgaW4gdGhlIGZpbGVzIGRyaXZlcnMvbmV0L2RtOTAwMC5jIGFuZCBkcml2ZXJzL25ldC9kbTkwMDAuaC4KKworVGhlIGRyaXZlciBzdXBwb3J0cyB0aHJlZSBETTkwMDAgdmFyaWFudHMsIHRoZSBETTkwMDBFIHdoaWNoIGlzIHRoZSBmaXJzdCBjaGlwCitzdXBwb3J0ZWQgYXMgd2VsbCBhcyB0aGUgbmV3ZXIgRE05MDAwQSBhbmQgRE05MDAwQiBkZXZpY2VzLiBJdCBpcyBjdXJyZW50bHkKK21haW50YWluZWQgYW5kIHRlc3RlZCBieSBCZW4gRG9va3MsIHdobyBzaG91bGQgYmUgQ0M6IHRvIGFueSBwYXRjaGVzIGZvciB0aGlzCitkcml2ZXIuCisKKworRGVmaW5pbmcgdGhlIHBsYXRmb3JtIGRldmljZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbWluaW11bSBzZXQgb2YgcmVzb3VyY2VzIGF0dGFjaGVkIHRvIHRoZSBwbGF0Zm9ybSBkZXZpY2UgYXJlIGFzIGZvbGxvd3M6CisKKyAgICAxKSBUaGUgcGh5c2ljYWwgYWRkcmVzcyBvZiB0aGUgYWRkcmVzcyByZWdpc3RlcgorICAgIDIpIFRoZSBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBkYXRhIHJlZ2lzdGVyCisgICAgMykgVGhlIElSUSBsaW5lIHRoZSBkZXZpY2UncyBpbnRlcnJ1cHQgcGluIGlzIGNvbm5lY3RlZCB0by4KKworVGhlc2UgcmVzb3VyY2VzIHNob3VsZCBiZSBzcGVjaWZpZWQgaW4gdGhhdCBvcmRlciwgYXMgdGhlIG9yZGVyaW5nIG9mIHRoZQordHdvIGFkZHJlc3MgcmVnaW9ucyBpcyBpbXBvcnRhbnQgKHRoZSBkcml2ZXIgZXhwZWN0cyB0aGVzZSB0byBiZSBhZGRyZXNzCithbmQgdGhlbiBkYXRhKS4KKworQW4gZXhhbXBsZSBmcm9tIGFyY2gvYXJtL21hY2gtczNjMjQxMC9tYWNoLWJhc3QuYyBpczoKKworc3RhdGljIHN0cnVjdCByZXNvdXJjZSBiYXN0X2RtOWtfcmVzb3VyY2VbXSA9IHsKKwlbMF0gPSB7CisJCS5zdGFydCA9IFMzQzI0MTBfQ1M1ICsgQkFTVF9QQV9ETTkwMDAsCisJCS5lbmQgICA9IFMzQzI0MTBfQ1M1ICsgQkFTVF9QQV9ETTkwMDAgKyAzLAorCQkuZmxhZ3MgPSBJT1JFU09VUkNFX01FTSwKKwl9LAorCVsxXSA9IHsKKwkJLnN0YXJ0ID0gUzNDMjQxMF9DUzUgKyBCQVNUX1BBX0RNOTAwMCArIDB4NDAsCisJCS5lbmQgICA9IFMzQzI0MTBfQ1M1ICsgQkFTVF9QQV9ETTkwMDAgKyAweDQwICsgMHgzZiwKKwkJLmZsYWdzID0gSU9SRVNPVVJDRV9NRU0sCisJfSwKKwlbMl0gPSB7CisJCS5zdGFydCA9IElSUV9ETTkwMDAsCisJCS5lbmQgICA9IElSUV9ETTkwMDAsCisJCS5mbGFncyA9IElPUkVTT1VSQ0VfSVJRIHwgSU9SRVNPVVJDRV9JUlFfSElHSExFVkVMLAorCX0KK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGJhc3RfZGV2aWNlX2RtOWsgPSB7CisJLm5hbWUJCT0gImRtOTAwMCIsCisJLmlkCQk9IDAsCisJLm51bV9yZXNvdXJjZXMJPSBBUlJBWV9TSVpFKGJhc3RfZG05a19yZXNvdXJjZSksCisJLnJlc291cmNlCT0gYmFzdF9kbTlrX3Jlc291cmNlLAorfTsKKworTm90ZSB0aGUgc2V0dGluZyBvZiB0aGUgSVJRIHRyaWdnZXIgZmxhZyBpbiBiYXN0X2RtOWtfcmVzb3VyY2VbMl0uZmxhZ3MsCithcyB0aGlzIHdpbGwgZ2VuZXJhdGUgYSB3YXJuaW5nIGlmIGl0IGlzIG5vdCBwcmVzZW50LiBUaGUgdHJpZ2dlciBmcm9tCit0aGUgZmxhZ3MgZmllbGQgd2lsbCBiZSBwYXNzZWQgdG8gcmVxdWVzdF9pcnEoKSB3aGVuIHJlZ2lzdGVyaW5nIHRoZSBJUlEKK2hhbmRsZXIgdG8gZW5zdXJlIHRoYXQgdGhlIElSUSBpcyBzZXR1cCBjb3JyZWN0bHkuCisKK1RoaXMgc2hvd3MgYSB0eXBpY2FsIHBsYXRmb3JtIGRldmljZSwgd2l0aG91dCB0aGUgb3B0aW9uYWwgY29uZmlndXJhdGlvbgorcGxhdGZvcm0gZGF0YSBzdXBwbGllZC4gVGhlIG5leHQgZXhhbXBsZSB1c2VzIHRoZSBzYW1lIHJlc291cmNlcywgYnV0IGFkZHMKK3RoZSBvcHRpb25hbCBwbGF0Zm9ybSBkYXRhIHRvIHBhc3MgZXh0cmEgY29uZmlndXJhdGlvbiBkYXRhOgorCitzdGF0aWMgc3RydWN0IGRtOTAwMF9wbGF0X2RhdGEgYmFzdF9kbTlrX3BsYXRkYXRhID0geworCS5mbGFncwkJPSBETTkwMDBfUExBVEZfMTZCSVRPTkxZLAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgYmFzdF9kZXZpY2VfZG05ayA9IHsKKwkubmFtZQkJPSAiZG05MDAwIiwKKwkuaWQJCT0gMCwKKwkubnVtX3Jlc291cmNlcwk9IEFSUkFZX1NJWkUoYmFzdF9kbTlrX3Jlc291cmNlKSwKKwkucmVzb3VyY2UJPSBiYXN0X2RtOWtfcmVzb3VyY2UsCisJLmRldgkJPSB7CisJCS5wbGF0Zm9ybV9kYXRhID0gJmJhc3RfZG05a19wbGF0ZGF0YSwKKwl9Cit9OworCitUaGUgcGxhdGZvcm0gZGF0YSBpcyBkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvZG05MDAwLmggYW5kIGRlc2NyaWJlZCBiZWxvdy4KKworCitQbGF0Zm9ybSBkYXRhCistLS0tLS0tLS0tLS0tCisKK0V4dHJhIHBsYXRmb3JtIGRhdGEgZm9yIHRoZSBETTkwMDAgY2FuIGRlc2NyaWJlIHRoZSBJTyBidXMgd2lkdGggdG8gdGhlCitkZXZpY2UsIHdoZXRoZXIgb3Igbm90IGFuIGV4dGVybmFsIFBIWSBpcyBhdHRhY2hlZCB0byB0aGUgZGV2aWNlIGFuZAordGhlIGF2YWlsYWJpbGl0eSBvZiBhbiBleHRlcm5hbCBjb25maWd1cmF0aW9uIEVFUFJPTS4KKworVGhlIGZsYWdzIGZvciB0aGUgcGxhdGZvcm0gZGF0YSAuZmxhZ3MgZmllbGQgYXJlIGFzIGZvbGxvd3M6CisKK0RNOTAwMF9QTEFURl84QklUT05MWQorCisJVGhlIElPIHNob3VsZCBiZSBkb25lIHdpdGggOGJpdCBvcGVyYXRpb25zLgorCitETTkwMDBfUExBVEZfMTZCSVRPTkxZCisKKwlUaGUgSU8gc2hvdWxkIGJlIGRvbmUgd2l0aCAxNmJpdCBvcGVyYXRpb25zLgorCitETTkwMDBfUExBVEZfMzJCSVRPTkxZCisKKwlUaGUgSU8gc2hvdWxkIGJlIGRvbmUgd2l0aCAzMmJpdCBvcGVyYXRpb25zLgorCitETTkwMDBfUExBVEZfRVhUX1BIWQorCisJVGhlIGNoaXAgaXMgY29ubmVjdGVkIHRvIGFuIGV4dGVybmFsIFBIWS4KKworRE05MDAwX1BMQVRGX05PX0VFUFJPTQorCisJVGhpcyBjYW4gYmUgdXNlZCB0byBzaWduaWZ5IHRoYXQgdGhlIGJvYXJkIGRvZXMgbm90IGhhdmUgYW4KKwlFRVBST00sIG9yIHRoYXQgdGhlIEVFUFJPTSBzaG91bGQgYmUgaGlkZGVuIGZyb20gdGhlIHVzZXIuCisKK0RNOTAwMF9QTEFURl9TSU1QTEVfUEhZCisKKwlTd2l0Y2ggdG8gdXNpbmcgdGhlIHNpbXBsZXIgUEhZIHBvbGxpbmcgbWV0aG9kIHdoaWNoIGRvZXMgbm90CisJdHJ5IGFuZCByZWFkIHRoZSBNSUkgUEhZIHN0YXRlIHJlZ3VsYXJseS4gVGhpcyBpcyBvbmx5IGF2YWlsYWJsZQorCXdoZW4gdXNpbmcgdGhlIGludGVybmFsIFBIWS4gU2VlIHRoZSBzZWN0aW9uIG9uIGxpbmsgc3RhdGUgcG9sbGluZworCWZvciBtb3JlIGluZm9ybWF0aW9uLgorCisJVGhlIGNvbmZpZyBzeW1ib2wgRE05MDAwX0ZPUkNFX1NJTVBMRV9QSFlfUE9MTCwgS2NvbmZpZyBlbnRyeQorCSJGb3JjZSBzaW1wbGUgTlNSIGJhc2VkIFBIWSBwb2xsaW5nIiBhbGxvd3MgdGhpcyBmbGFnIHRvIGJlCisJZm9yY2VkIG9uIGF0IGJ1aWxkIHRpbWUuCisKKworUEhZIExpbmsgc3RhdGUgcG9sbGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZHJpdmVyIGtlZXBzIHRyYWNrIG9mIHRoZSBsaW5rIHN0YXRlIGFuZCBpbmZvcm1zIHRoZSBuZXR3b3JrIGNvcmUKK2Fib3V0IGxpbmsgKGNhcnJpZXIpIGF2YWlsYWJpbGl0eS4gVGhpcyBpcyBtYW5hZ2VkIGJ5IHNldmVyYWwgbWV0aG9kcworZGVwZW5kaW5nIG9uIHRoZSB2ZXJzaW9uIG9mIHRoZSBjaGlwIGFuZCBvbiB3aGljaCBQSFkgaXMgYmVpbmcgdXNlZC4KKworRm9yIHRoZSBpbnRlcm5hbCBQSFksIHRoZSBvcmlnaW5hbCAoYW5kIGN1cnJlbnRseSBkZWZhdWx0KSBtZXRob2QgaXMKK3RvIHJlYWQgdGhlIE1JSSBzdGF0ZSwgZWl0aGVyIHdoZW4gdGhlIHN0YXR1cyBjaGFuZ2VzIGlmIHdlIGhhdmUgdGhlCituZWNlc3NhcnkgaW50ZXJydXB0IHN1cHBvcnQgaW4gdGhlIGNoaXAgb3IgZXZlcnkgdHdvIHNlY29uZHMgdmlhIGEKK3BlcmlvZGljIHRpbWVyLgorCitUbyByZWR1Y2UgdGhlIG92ZXJoZWFkIGZvciB0aGUgaW50ZXJuYWwgUEhZLCB0aGVyZSBpcyBub3cgdGhlIG9wdGlvbgorb2YgdXNpbmcgdGhlIERNOTAwMF9GT1JDRV9TSU1QTEVfUEhZX1BPTEwgY29uZmlnLCBvciBETTkwMDBfUExBVEZfU0lNUExFX1BIWQorcGxhdGZvcm0gZGF0YSBvcHRpb24gdG8gcmVhZCB0aGUgc3VtbWFyeSBpbmZvcm1hdGlvbiB3aXRob3V0IHRoZQorZXhwZW5zaXZlIE1JSSBhY2Nlc3Nlcy4gVGhpcyBtZXRob2QgaXMgZmFzdGVyLCBidXQgZG9lcyBub3QgcHJpbnQKK2FzIG11Y2ggaW5mb3JtYXRpb24uCisKK1doZW4gdXNpbmcgYW4gZXh0ZXJuYWwgUEhZLCB0aGUgZHJpdmVyIGN1cnJlbnRseSBoYXMgdG8gcG9sbCB0aGUgTUlJCitsaW5rIHN0YXR1cyBhcyB0aGVyZSBpcyBubyBtZXRob2QgZm9yIGdldHRpbmcgYW4gaW50ZXJydXB0IG9uIGxpbmsgY2hhbmdlLgorCisKK0RNOTAwMEEgLyBETTkwMDBCCistLS0tLS0tLS0tLS0tLS0tLQorCitUaGVzZSBjaGlwcyBhcmUgZnVuY3Rpb25hbGx5IHNpbWlsYXIgdG8gdGhlIERNOTAwMEUgYW5kIGFyZSBzdXBwb3J0ZWQgZWFzaWx5CitieSB0aGUgc2FtZSBkcml2ZXIuIFRoZSBmZWF0dXJlcyBhcmU6CisKKyAgIDEpIEludGVycnVwdCBvbiBpbnRlcm5hbCBQSFkgc3RhdGUgY2hhbmdlLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHBlcmlvZGljCisgICAgICBwb2xsaW5nIG9mIHRoZSBQSFkgc3RhdHVzIG1heSBiZSBkaXNhYmxlZCBvbiB0aGVzZSBkZXZpY2VzIHdoZW4gdXNpbmcKKyAgICAgIHRoZSBpbnRlcm5hbCBQSFkuCisKKyAgIDIpIFRDUC9VRFAgY2hlY2tzdW0gb2ZmbG9hZGluZywgd2hpY2ggdGhlIGRyaXZlciBkb2VzIG5vdCBjdXJyZW50bHkgc3VwcG9ydC4KKworCitldGh0b29sCistLS0tLS0tCisKK1RoZSBkcml2ZXIgc3VwcG9ydHMgdGhlIGV0aHRvb2wgaW50ZXJmYWNlIGZvciBhY2Nlc3MgdG8gdGhlIGRyaXZlcgorc3RhdGUgaW5mb3JtYXRpb24sIHRoZSBQSFkgc3RhdGUgYW5kIHRoZSBFRVBST00uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZG1mZS50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZG1mZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUzMjBiZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kbWZlLnR4dApAQCAtMCwwICsxLDY2IEBACitOb3RlOiBUaGlzIGRyaXZlciBkb2Vzbid0IGhhdmUgYSBtYWludGFpbmVyLgorCitEYXZpY29tIERNOTEwMihBKS9ETTkxMzIvRE05ODAxIGZhc3QgZXRoZXJuZXQgZHJpdmVyIGZvciBMaW51eC4KKworVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgICBQdWJsaWMgTGljZW5zZQorYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIKK29mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCitUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKK2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCitNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCitHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisKK1RoaXMgZHJpdmVyIHByb3ZpZGVzIGtlcm5lbCBzdXBwb3J0IGZvciBEYXZpY29tIERNOTEwMihBKS9ETTkxMzIvRE05ODAxIGV0aGVybmV0IGNhcmRzICggQ05FVAorMTAvMTAwIGV0aGVybmV0IGNhcmRzIHVzZXMgRGF2aWNvbSBjaGlwc2V0IHRvbywgc28gdGhpcyBkcml2ZXIgc3VwcG9ydHMgQ05FVCBjYXJkcyB0b28gKS5JZiB5b3UKK2RpZG4ndCBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgbG9hZCBpdHNlbGYgb24gYm9vdCBhbmQgcHJpbnQgYQorbGluZSBzaW1pbGFyIHRvIDoKKworCWRtZmU6IERhdmljb20gRE05eHh4IG5ldCBkcml2ZXIsIHZlcnNpb24gMS4zNi40ICgyMDAyLTAxLTE3KQorCitJZiB5b3UgY29tcGlsZWQgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIHlvdSBoYXZlIHRvIGxvYWQgaXQgb24gYm9vdC5Zb3UgY2FuIGxvYWQgaXQgd2l0aCBjb21tYW5kIDoKKworCWluc21vZCBkbWZlCisKK1RoaXMgd2F5IGl0IHdpbGwgYXV0b2RldGVjdCB0aGUgZGV2aWNlIG1vZGUuVGhpcyBpcyB0aGUgc3VnZ2VzdGVkIHdheSB0byBsb2FkIHRoZSBtb2R1bGUuT3IgeW91IGNhbiBwYXNzCithIG1vZGU9IHNldHRpbmcgdG8gbW9kdWxlIHdoaWxlIGxvYWRpbmcsIGxpa2UgOgorCisJaW5zbW9kIGRtZmUgbW9kZT0wICMgRm9yY2UgMTBNIEhhbGYgRHVwbGV4CisJaW5zbW9kIGRtZmUgbW9kZT0xICMgRm9yY2UgMTAwTSBIYWxmIER1cGxleAorCWluc21vZCBkbWZlIG1vZGU9NCAjIEZvcmNlIDEwTSBGdWxsIER1cGxleAorCWluc21vZCBkbWZlIG1vZGU9NSAjIEZvcmNlIDEwME0gRnVsbCBEdXBsZXgKKworTmV4dCB5b3Ugc2hvdWxkIGNvbmZpZ3VyZSB5b3VyIG5ldHdvcmsgaW50ZXJmYWNlIHdpdGggYSBjb21tYW5kIHNpbWlsYXIgdG8gOgorCisJaWZjb25maWcgZXRoMCAxNzIuMjIuMy4xOAorICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eCisJCSAgICAgWW91ciBJUCBBZGRyZXNzCisKK1RoZW4geW91IG1heSBoYXZlIHRvIG1vZGlmeSB0aGUgZGVmYXVsdCByb3V0aW5nIHRhYmxlIHdpdGggY29tbWFuZCA6CisKKwlyb3V0ZSBhZGQgZGVmYXVsdCBldGgwCisKKworTm93IHlvdXIgZXRoZXJuZXQgY2FyZCBzaG91bGQgYmUgdXAgYW5kIHJ1bm5pbmcuCisKKworVE9ETzoKKworSW1wbGVtZW50IHBjaV9kcml2ZXI6OnN1c3BlbmQoKSBhbmQgcGNpX2RyaXZlcjo6cmVzdW1lKCkgcG93ZXIgbWFuYWdlbWVudCBtZXRob2RzLgorQ2hlY2sgb24gNjQgYml0IGJveGVzLgorQ2hlY2sgYW5kIGZpeCBvbiBiaWcgZW5kaWFuIGJveGVzLgorVGVzdCBhbmQgbWFrZSBzdXJlIFBDSSBsYXRlbmN5IGlzIG5vdyBjb3JyZWN0IGZvciBhbGwgY2FzZXMuCisKKworQXV0aG9yczoKKworU3RlbiBXYW5nIDxzdGVuX3dhbmdAZGF2aWNvbS5jb20udHcgPiAgIDogT3JpZ2luYWwgQXV0aG9yCisKK0NvbnRyaWJ1dG9yczoKKworTWFyY2VsbyBUb3NhdHRpIDxtYXJjZWxvQGNvbmVjdGl2YS5jb20uYnI+CitBbGFuIENveCA8YWxhbkBseG9yZ3VrLnVrdXUub3JnLnVrPgorSmVmZiBHYXJ6aWsgPGpnYXJ6aWtAcG9ib3guY29tPgorVm9qdGVjaCBQYXZsaWsgPHZvanRlY2hAc3VzZS5jej4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kbnNfcmVzb2x2ZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2Ruc19yZXNvbHZlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg2YWRjZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kbnNfcmVzb2x2ZXIudHh0CkBAIC0wLDAgKzEsMTU3IEBACisJCQkgICAgID09PT09PT09PT09PT09PT09PT0KKwkJCSAgICAgRE5TIFJlc29sdmVyIE1vZHVsZQorCQkJICAgICA9PT09PT09PT09PT09PT09PT09CisKK0NvbnRlbnRzOgorCisgLSBPdmVydmlldy4KKyAtIENvbXBpbGF0aW9uLgorIC0gU2V0dGluZyB1cC4KKyAtIFVzYWdlLgorIC0gTWVjaGFuaXNtLgorIC0gRGVidWdnaW5nLgorCisKKz09PT09PT09CitPVkVSVklFVworPT09PT09PT0KKworVGhlIEROUyByZXNvbHZlciBtb2R1bGUgcHJvdmlkZXMgYSB3YXkgZm9yIGtlcm5lbCBzZXJ2aWNlcyB0byBtYWtlIEROUyBxdWVyaWVzCitieSB3YXkgb2YgcmVxdWVzdGluZyBhIGtleSBvZiBrZXkgdHlwZSBkbnNfcmVzb2x2ZXIuICBUaGVzZSBxdWVyaWVzIGFyZQordXBjYWxsZWQgdG8gdXNlcnNwYWNlIHRocm91Z2ggL3NiaW4vcmVxdWVzdC1rZXkuCisKK1RoZXNlIHJvdXRpbmVzIG11c3QgYmUgc3VwcG9ydGVkIGJ5IHVzZXJzcGFjZSB0b29scyBkbnMudXBjYWxsLCBjaWZzLnVwY2FsbCBhbmQKK3JlcXVlc3Qta2V5LiAgSXQgaXMgdW5kZXIgZGV2ZWxvcG1lbnQgYW5kIGRvZXMgbm90IHlldCBwcm92aWRlIHRoZSBmdWxsIGZlYXR1cmUKK3NldC4gIFRoZSBmZWF0dXJlcyBpdCBkb2VzIHN1cHBvcnQgaW5jbHVkZToKKworICgqKSBJbXBsZW1lbnRzIHRoZSBkbnNfcmVzb2x2ZXIga2V5X3R5cGUgdG8gY29udGFjdCB1c2Vyc3BhY2UuCisKK0l0IGRvZXMgbm90IHlldCBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgQUZTIGZlYXR1cmVzOgorCisgKCopIERucyBxdWVyeSBzdXBwb3J0IGZvciBBRlNEQiByZXNvdXJjZSByZWNvcmQuCisKK1RoaXMgY29kZSBpcyBleHRyYWN0ZWQgZnJvbSB0aGUgQ0lGUyBmaWxlc3lzdGVtLgorCisKKz09PT09PT09PT09CitDT01QSUxBVElPTgorPT09PT09PT09PT0KKworVGhlIG1vZHVsZSBzaG91bGQgYmUgZW5hYmxlZCBieSB0dXJuaW5nIG9uIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zOgorCisJQ09ORklHX0ROU19SRVNPTFZFUgktIHRyaXN0YXRlICJETlMgUmVzb2x2ZXIgc3VwcG9ydCIKKworCis9PT09PT09PT09CitTRVRUSU5HIFVQCis9PT09PT09PT09CisKK1RvIHNldCB1cCB0aGlzIGZhY2lsaXR5LCB0aGUgL2V0Yy9yZXF1ZXN0LWtleS5jb25mIGZpbGUgbXVzdCBiZSBhbHRlcmVkIHNvIHRoYXQKKy9zYmluL3JlcXVlc3Qta2V5IGNhbiBhcHByb3ByaWF0ZWx5IGRpcmVjdCB0aGUgdXBjYWxscy4gIEZvciBleGFtcGxlLCB0byBoYW5kbGUKK2Jhc2ljIGRuYW1lIHRvIElQdjQvSVB2NiBhZGRyZXNzIHJlc29sdXRpb24sIHRoZSBmb2xsb3dpbmcgbGluZSBzaG91bGQgYmUKK2FkZGVkOgorCisJI09QCVRZUEUJCURFU0MJQ08tSU5GTwlQUk9HUkFNIEFSRzEgQVJHMiBBUkczIC4uLgorCSM9PT09PT0JPT09PT09PT09PT09CT09PT09PT0JPT09PT09PQk9PT09PT09PT09PT09PT09PT09PT09PT09PQorCWNyZWF0ZQlkbnNfcmVzb2x2ZXIgIAkqCSoJL3Vzci9zYmluL2NpZnMudXBjYWxsICVrCisKK1RvIGRpcmVjdCBhIHF1ZXJ5IGZvciBxdWVyeSB0eXBlICdmb28nLCBhIGxpbmUgb2YgdGhlIGZvbGxvd2luZyBzaG91bGQgYmUgYWRkZWQKK2JlZm9yZSB0aGUgbW9yZSBnZW5lcmFsIGxpbmUgZ2l2ZW4gYWJvdmUgYXMgdGhlIGZpcnN0IG1hdGNoIGlzIHRoZSBvbmUgdGFrZW4uCisKKwljcmVhdGUJZG5zX3Jlc29sdmVyICAJZm9vOioJKgkvdXNyL3NiaW4vZG5zLmZvbyAlaworCisKKz09PT09CitVU0FHRQorPT09PT0KKworVG8gbWFrZSB1c2Ugb2YgdGhpcyBmYWNpbGl0eSwgb25lIG9mIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHRoYXQgYXJlCitpbXBsZW1lbnRlZCBpbiB0aGUgbW9kdWxlIGNhbiBiZSBjYWxsZWQgYWZ0ZXIgZG9pbmc6CisKKwkjaW5jbHVkZSA8bGludXgvZG5zX3Jlc29sdmVyLmg+CisKKyAoMSkgaW50IGRuc19xdWVyeShjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpuYW1lLCBzaXplX3QgbmFtZWxlbiwKKwkJICAgY29uc3QgY2hhciAqb3B0aW9ucywgY2hhciAqKl9yZXN1bHQsIHRpbWVfdCAqX2V4cGlyeSk7CisKKyAgICAgVGhpcyBpcyB0aGUgYmFzaWMgYWNjZXNzIGZ1bmN0aW9uLiAgSXQgbG9va3MgZm9yIGEgY2FjaGVkIEROUyBxdWVyeSBhbmQgaWYKKyAgICAgaXQgZG9lc24ndCBmaW5kIGl0LCBpdCB1cGNhbGxzIHRvIHVzZXJzcGFjZSB0byBtYWtlIGEgbmV3IEROUyBxdWVyeSwgd2hpY2gKKyAgICAgbWF5IHRoZW4gYmUgY2FjaGVkLiAgVGhlIGtleSBkZXNjcmlwdGlvbiBpcyBjb25zdHJ1Y3RlZCBhcyBhIHN0cmluZyBvZiB0aGUKKyAgICAgZm9ybToKKworCQlbPHR5cGU+Ol08bmFtZT4KKworICAgICB3aGVyZSA8dHlwZT4gb3B0aW9uYWxseSBzcGVjaWZpZXMgdGhlIHBhcnRpY3VsYXIgdXBjYWxsIHByb2dyYW0gdG8gaW52b2tlLAorICAgICBhbmQgdGh1cyB0aGUgdHlwZSBvZiBxdWVyeSB0byBkbywgYW5kIDxuYW1lPiBzcGVjaWZpZXMgdGhlIHN0cmluZyB0byBiZQorICAgICBsb29rZWQgdXAuICBUaGUgZGVmYXVsdCBxdWVyeSB0eXBlIGlzIGEgc3RyYWlnaHQgaG9zdG5hbWUgdG8gSVAgYWRkcmVzcworICAgICBzZXQgbG9va3VwLgorCisgICAgIFRoZSBuYW1lIHBhcmFtZXRlciBpcyBub3QgcmVxdWlyZWQgdG8gYmUgYSBOVUwtdGVybWluYXRlZCBzdHJpbmcsIGFuZCBpdHMKKyAgICAgbGVuZ3RoIHNob3VsZCBiZSBnaXZlbiBieSB0aGUgbmFtZWxlbiBhcmd1bWVudC4KKworICAgICBUaGUgb3B0aW9ucyBwYXJhbWV0ZXIgbWF5IGJlIE5VTEwgb3IgaXQgbWF5IGJlIGEgc2V0IG9mIG9wdGlvbnMKKyAgICAgYXBwcm9wcmlhdGUgdG8gdGhlIHF1ZXJ5IHR5cGUuCisKKyAgICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIHN0cmluZyBhcHByb3ByaWF0ZSB0byB0aGUgcXVlcnkgdHlwZS4gIEZvciBpbnN0YW5jZSwKKyAgICAgZm9yIHRoZSBkZWZhdWx0IHF1ZXJ5IHR5cGUgaXQgaXMganVzdCBhIGxpc3Qgb2YgY29tbWEtc2VwYXJhdGVkIElQdjQgYW5kCisgICAgIElQdjYgYWRkcmVzc2VzLiAgVGhlIGNhbGxlciBtdXN0IGZyZWUgdGhlIHJlc3VsdC4KKworICAgICBUaGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQgc3RyaW5nIGlzIHJldHVybmVkIG9uIHN1Y2Nlc3MsIGFuZCBhIG5lZ2F0aXZlCisgICAgIGVycm9yIGNvZGUgaXMgcmV0dXJuZWQgb3RoZXJ3aXNlLiAgLUVLRVlSRUpFQ1RFRCB3aWxsIGJlIHJldHVybmVkIGlmIHRoZQorICAgICBETlMgbG9va3VwIGZhaWxlZC4KKworICAgICBJZiBfZXhwaXJ5IGlzIG5vbi1OVUxMLCB0aGUgZXhwaXJ5IHRpbWUgKFRUTCkgb2YgdGhlIHJlc3VsdCB3aWxsIGJlCisgICAgIHJldHVybmVkIGFsc28uCisKK1RoZSBrZXJuZWwgbWFpbnRhaW5zIGFuIGludGVybmFsIGtleXJpbmcgaW4gd2hpY2ggaXQgY2FjaGVzIGxvb2tlZCB1cCBrZXlzLgorVGhpcyBjYW4gYmUgY2xlYXJlZCBieSBhbnkgcHJvY2VzcyB0aGF0IGhhcyB0aGUgQ0FQX1NZU19BRE1JTiBjYXBhYmlsaXR5IGJ5Cit0aGUgdXNlIG9mIEtFWUNUTF9LRVlSSU5HX0NMRUFSIG9uIHRoZSBrZXlyaW5nIElELgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1JFQURJTkcgRE5TIEtFWVMgRlJPTSBVU0VSU1BBQ0UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworS2V5cyBvZiBkbnNfcmVzb2x2ZXIgdHlwZSBjYW4gYmUgcmVhZCBmcm9tIHVzZXJzcGFjZSB1c2luZyBrZXljdGxfcmVhZCgpIG9yCisia2V5Y3RsIHJlYWQvcHJpbnQvcGlwZSIuCisKKworPT09PT09PT09CitNRUNIQU5JU00KKz09PT09PT09PQorCitUaGUgZG5zcmVzb2x2ZXIgbW9kdWxlIHJlZ2lzdGVycyBhIGtleSB0eXBlIGNhbGxlZCAiZG5zX3Jlc29sdmVyIi4gIEtleXMgb2YKK3RoaXMgdHlwZSBhcmUgdXNlZCB0byB0cmFuc3BvcnQgYW5kIGNhY2hlIEROUyBsb29rdXAgcmVzdWx0cyBmcm9tIHVzZXJzcGFjZS4KKworV2hlbiBkbnNfcXVlcnkoKSBpcyBpbnZva2VkLCBpdCBjYWxscyByZXF1ZXN0X2tleSgpIHRvIHNlYXJjaCB0aGUgbG9jYWwKK2tleXJpbmdzIGZvciBhIGNhY2hlZCBETlMgcmVzdWx0LiAgSWYgdGhhdCBmYWlscyB0byBmaW5kIG9uZSwgaXQgdXBjYWxscyB0bwordXNlcnNwYWNlIHRvIGdldCBhIG5ldyByZXN1bHQuCisKK1VwY2FsbHMgdG8gdXNlcnNwYWNlIGFyZSBtYWRlIHRocm91Z2ggdGhlIHJlcXVlc3Rfa2V5KCkgdXBjYWxsIHZlY3RvciwgYW5kIGFyZQorZGlyZWN0ZWQgYnkgbWVhbnMgb2YgY29uZmlndXJhdGlvbiBsaW5lcyBpbiAvZXRjL3JlcXVlc3Qta2V5LmNvbmYgdGhhdCB0ZWxsCisvc2Jpbi9yZXF1ZXN0LWtleSB3aGF0IHByb2dyYW0gdG8gcnVuIHRvIGluc3RhbnRpYXRlIHRoZSBrZXkuCisKK1RoZSB1cGNhbGwgaGFuZGxlciBwcm9ncmFtIGlzIHJlc3BvbnNpYmxlIGZvciBxdWVyeWluZyB0aGUgRE5TLCBwcm9jZXNzaW5nIHRoZQorcmVzdWx0IGludG8gYSBmb3JtIHN1aXRhYmxlIGZvciBwYXNzaW5nIHRvIHRoZSBrZXljdGxfaW5zdGFudGlhdGVfa2V5KCkKK3JvdXRpbmUuICBUaGlzIHRoZW4gcGFzc2VzIHRoZSBkYXRhIHRvIGRuc19yZXNvbHZlcl9pbnN0YW50aWF0ZSgpIHdoaWNoIHN0cmlwcworb2ZmIGFuZCBwcm9jZXNzZXMgYW55IG9wdGlvbnMgaW5jbHVkZWQgaW4gdGhlIGRhdGEsIGFuZCB0aGVuIGF0dGFjaGVzIHRoZQorcmVtYWluZGVyIG9mIHRoZSBzdHJpbmcgdG8gdGhlIGtleSBhcyBpdHMgcGF5bG9hZC4KKworVGhlIHVwY2FsbCBoYW5kbGVyIHByb2dyYW0gc2hvdWxkIHNldCB0aGUgZXhwaXJ5IHRpbWUgb24gdGhlIGtleSB0byB0aGF0IG9mIHRoZQorbG93ZXN0IFRUTCBvZiBhbGwgdGhlIHJlY29yZHMgaXQgaGFzIGV4dHJhY3RlZCBhIHJlc3VsdCBmcm9tLiAgVGhpcyBtZWFucyB0aGF0Cit0aGUga2V5IHdpbGwgYmUgZGlzY2FyZGVkIGFuZCByZWNyZWF0ZWQgd2hlbiB0aGUgZGF0YSBpdCBob2xkcyBoYXMgZXhwaXJlZC4KKworZG5zX3F1ZXJ5KCkgcmV0dXJucyBhIGNvcHkgb2YgdGhlIHZhbHVlIGF0dGFjaGVkIHRvIHRoZSBrZXksIG9yIGFuIGVycm9yIGlmCit0aGF0IGlzIGluZGljYXRlZCBpbnN0ZWFkLgorCitTZWUgPGZpbGU6RG9jdW1lbnRhdGlvbi9zZWN1cml0eS9rZXlzLXJlcXVlc3Qta2V5LnR4dD4gZm9yIGZ1cnRoZXIKK2luZm9ybWF0aW9uIGFib3V0IHJlcXVlc3Qta2V5IGZ1bmN0aW9uLgorCisKKz09PT09PT09PQorREVCVUdHSU5HCis9PT09PT09PT0KKworRGVidWdnaW5nIG1lc3NhZ2VzIGNhbiBiZSB0dXJuZWQgb24gZHluYW1pY2FsbHkgYnkgd3JpdGluZyBhIDEgaW50byB0aGUKK2ZvbGxvd2luZyBmaWxlOgorCisgICAgICAgIC9zeXMvbW9kdWxlL2Ruc3Jlc29sdmVyL3BhcmFtZXRlcnMvZGVidWcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kcml2ZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RyaXZlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE1OWUyOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kcml2ZXIudHh0CkBAIC0wLDAgKzEsOTMgQEAKK0RvY3VtZW50IGFib3V0IHNvZnRuZXQgZHJpdmVyIGlzc3VlcworCitUcmFuc21pdCBwYXRoIGd1aWRlbGluZXM6CisKKzEpIFRoZSBuZG9fc3RhcnRfeG1pdCBtZXRob2QgbXVzdCBub3QgcmV0dXJuIE5FVERFVl9UWF9CVVNZIHVuZGVyCisgICBhbnkgbm9ybWFsIGNpcmN1bXN0YW5jZXMuICBJdCBpcyBjb25zaWRlcmVkIGEgaGFyZCBlcnJvciB1bmxlc3MKKyAgIHRoZXJlIGlzIG5vIHdheSB5b3VyIGRldmljZSBjYW4gdGVsbCBhaGVhZCBvZiB0aW1lIHdoZW4gaXQncworICAgdHJhbnNtaXQgZnVuY3Rpb24gd2lsbCBiZWNvbWUgYnVzeS4KKworICAgSW5zdGVhZCBpdCBtdXN0IG1haW50YWluIHRoZSBxdWV1ZSBwcm9wZXJseS4gIEZvciBleGFtcGxlLAorICAgZm9yIGEgZHJpdmVyIGltcGxlbWVudGluZyBzY2F0dGVyLWdhdGhlciB0aGlzIG1lYW5zOgorCisJc3RhdGljIG5ldGRldl90eF90IGRydl9oYXJkX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKKwkJCQkJICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCisJeworCQlzdHJ1Y3QgZHJ2ICpkcCA9IG5ldGRldl9wcml2KGRldik7CisKKwkJbG9ja190eChkcCk7CisJCS4uLgorCQkvKiBUaGlzIGlzIGEgaGFyZCBlcnJvciBsb2cgaXQuICovCisJCWlmIChUWF9CVUZGU19BVkFJTChkcCkgPD0gKHNrYl9zaGluZm8oc2tiKS0+bnJfZnJhZ3MgKyAxKSkgeworCQkJbmV0aWZfc3RvcF9xdWV1ZShkZXYpOworCQkJdW5sb2NrX3R4KGRwKTsKKwkJCXByaW50ayhLRVJOX0VSUiBQRlggIiVzOiBCVUchIFR4IFJpbmcgZnVsbCB3aGVuIHF1ZXVlIGF3YWtlIVxuIiwKKwkJCSAgICAgICBkZXYtPm5hbWUpOworCQkJcmV0dXJuIE5FVERFVl9UWF9CVVNZOworCQl9CisKKwkJLi4uIHF1ZXVlIHBhY2tldCB0byBjYXJkIC4uLgorCQkuLi4gdXBkYXRlIHR4IGNvbnN1bWVyIGluZGV4IC4uLgorCisJCWlmIChUWF9CVUZGU19BVkFJTChkcCkgPD0gKE1BWF9TS0JfRlJBR1MgKyAxKSkKKwkJCW5ldGlmX3N0b3BfcXVldWUoZGV2KTsKKworCQkuLi4KKwkJdW5sb2NrX3R4KGRwKTsKKwkJLi4uCisJCXJldHVybiBORVRERVZfVFhfT0s7CisJfQorCisgICBBbmQgdGhlbiBhdCB0aGUgZW5kIG9mIHlvdXIgVFggcmVjbGFtYXRpb24gZXZlbnQgaGFuZGxpbmc6CisKKwlpZiAobmV0aWZfcXVldWVfc3RvcHBlZChkcC0+ZGV2KSAmJgorICAgICAgICAgICAgVFhfQlVGRlNfQVZBSUwoZHApID4gKE1BWF9TS0JfRlJBR1MgKyAxKSkKKwkJbmV0aWZfd2FrZV9xdWV1ZShkcC0+ZGV2KTsKKworICAgRm9yIGEgbm9uLXNjYXR0ZXItZ2F0aGVyIHN1cHBvcnRpbmcgY2FyZCwgdGhlIHRocmVlIHRlc3RzIHNpbXBseSBiZWNvbWU6CisKKwkJLyogVGhpcyBpcyBhIGhhcmQgZXJyb3IgbG9nIGl0LiAqLworCQlpZiAoVFhfQlVGRlNfQVZBSUwoZHApIDw9IDApCisKKyAgIGFuZDoKKworCQlpZiAoVFhfQlVGRlNfQVZBSUwoZHApID09IDApCisKKyAgIGFuZDoKKworCWlmIChuZXRpZl9xdWV1ZV9zdG9wcGVkKGRwLT5kZXYpICYmCisgICAgICAgICAgICBUWF9CVUZGU19BVkFJTChkcCkgPiAwKQorCQluZXRpZl93YWtlX3F1ZXVlKGRwLT5kZXYpOworCisyKSBBbiBuZG9fc3RhcnRfeG1pdCBtZXRob2QgbXVzdCBub3QgbW9kaWZ5IHRoZSBzaGFyZWQgcGFydHMgb2YgYQorICAgY2xvbmVkIFNLQi4KKworMykgRG8gbm90IGZvcmdldCB0aGF0IG9uY2UgeW91IHJldHVybiBORVRERVZfVFhfT0sgZnJvbSB5b3VyCisgICBuZG9fc3RhcnRfeG1pdCBtZXRob2QsIGl0IGlzIHlvdXIgZHJpdmVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZnJlZQorICAgdXAgdGhlIFNLQiBhbmQgaW4gc29tZSBmaW5pdGUgYW1vdW50IG9mIHRpbWUuCisKKyAgIEZvciBleGFtcGxlLCB0aGlzIG1lYW5zIHRoYXQgaXQgaXMgbm90IGFsbG93ZWQgZm9yIHlvdXIgVFgKKyAgIG1pdGlnYXRpb24gc2NoZW1lIHRvIGxldCBUWCBwYWNrZXRzICJoYW5nIG91dCIgaW4gdGhlIFRYCisgICByaW5nIHVucmVjbGFpbWVkIGZvcmV2ZXIgaWYgbm8gbmV3IFRYIHBhY2tldHMgYXJlIHNlbnQuCisgICBUaGlzIGVycm9yIGNhbiBkZWFkbG9jayBzb2NrZXRzIHdhaXRpbmcgZm9yIHNlbmQgYnVmZmVyIHJvb20KKyAgIHRvIGJlIGZyZWVkIHVwLgorCisgICBJZiB5b3UgcmV0dXJuIE5FVERFVl9UWF9CVVNZIGZyb20gdGhlIG5kb19zdGFydF94bWl0IG1ldGhvZCwgeW91CisgICBtdXN0IG5vdCBrZWVwIGFueSByZWZlcmVuY2UgdG8gdGhhdCBTS0IgYW5kIHlvdSBtdXN0IG5vdCBhdHRlbXB0CisgICB0byBmcmVlIGl0IHVwLgorCitQcm9iaW5nIGd1aWRlbGluZXM6CisKKzEpIEFueSBoYXJkd2FyZSBsYXllciBhZGRyZXNzIHlvdSBvYnRhaW4gZm9yIHlvdXIgZGV2aWNlIHNob3VsZAorICAgYmUgdmVyaWZpZWQuICBGb3IgZXhhbXBsZSwgZm9yIGV0aGVybmV0IGNoZWNrIGl0IHdpdGgKKyAgIGxpbnV4L2V0aGVyZGV2aWNlLmg6aXNfdmFsaWRfZXRoZXJfYWRkcigpCisKK0Nsb3NlL3N0b3AgZ3VpZGVsaW5lczoKKworMSkgQWZ0ZXIgdGhlIG5kb19zdG9wIHJvdXRpbmUgaGFzIGJlZW4gY2FsbGVkLCB0aGUgaGFyZHdhcmUgbXVzdAorICAgbm90IHJlY2VpdmUgb3IgdHJhbnNtaXQgYW55IGRhdGEuICBBbGwgaW4gZmxpZ2h0IHBhY2tldHMgbXVzdAorICAgYmUgYWJvcnRlZC4gSWYgbmVjZXNzYXJ5LCBwb2xsIG9yIHdhaXQgZm9yIGNvbXBsZXRpb24gb2YgCisgICBhbnkgcmVzZXQgY29tbWFuZHMuCisKKzIpIFRoZSBuZG9fc3RvcCByb3V0aW5lIHdpbGwgYmUgY2FsbGVkIGJ5IHVucmVnaXN0ZXJfbmV0ZGV2aWNlCisgICBpZiBkZXZpY2UgaXMgc3RpbGwgVVAuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2JjbV9zZjIudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9iY21fc2YyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTk5ZDBjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9iY21fc2YyLnR4dApAQCAtMCwwICsxLDExNCBAQAorQnJvYWRjb20gU3RhcmZpZ2h0ZXIgMiBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQnJvYWRjb20ncyBTdGFyZmlnaHRlciAyIEV0aGVybmV0IHN3aXRjaCBoYXJkd2FyZSBibG9jayBpcyBjb21tb25seSBmb3VuZCBhbmQKK2RlcGxveWVkIGluIHRoZSBmb2xsb3dpbmcgcHJvZHVjdHM6CisKKy0geERTTCBnYXRld2F5cyBzdWNoIGFzIEJDTTYzMTM4CistIHN0cmVhbWluZy9tdWx0aW1lZGlhIFNldCBUb3AgQm94IHN1Y2ggYXMgQkNNNzQ0NQorLSBDYWJsZSBNb2RlbS9yZXNpZGVudGlhbCBnYXRld2F5cyBzdWNoIGFzIEJDTTcxNDUvQkNNMzM5MAorCitUaGUgc3dpdGNoIGlzIHR5cGljYWxseSBkZXBsb3llZCBpbiBhIGNvbmZpZ3VyYXRpb24gaW52b2x2aW5nIGJldHdlZW4gNSB0byAxMworcG9ydHMsIG9mZmVyaW5nIGEgcmFuZ2Ugb2YgYnVpbHQtaW4gYW5kIGN1c3RvbWl6YWJsZSBpbnRlcmZhY2VzOgorCistIHNpbmdsZSBpbnRlZ3JhdGVkIEdpZ2FiaXQgUEhZCistIHF1YWQgaW50ZWdyYXRlZCBHaWdhYml0IFBIWQorLSBxdWFkIGV4dGVybmFsIEdpZ2FiaXQgUEhZIHcvIE1ESU8gbXVsdGlwbGV4ZXIKKy0gaW50ZWdyYXRlZCBNb0NBIFBIWQorLSBzZXZlcmFsIGV4dGVybmFsIE1JSS9SZXZNSUkvR01JSS9SR01JSSBpbnRlcmZhY2VzCisKK1RoZSBzd2l0Y2ggYWxzbyBzdXBwb3J0cyBzcGVjaWZpYyBjb25nZXN0aW9uIGNvbnRyb2wgZmVhdHVyZXMgd2hpY2ggYWxsb3cgTW9DQQorZmFpbC1vdmVyIG5vdCB0byBsb3NlIHBhY2tldHMgZHVyaW5nIGEgTW9DQSByb2xlIHJlLWVsZWN0aW9uLCBhcyB3ZWxsIGFzIG91dCBvZgorYmFuZCBiYWNrLXByZXNzdXJlIHRvIHRoZSBob3N0IENQVSBuZXR3b3JrIGludGVyZmFjZSB3aGVuIGRvd25zdHJlYW0gaW50ZXJmYWNlcworYXJlIGNvbm5lY3RlZCBhdCBhIGxvd2VyIHNwZWVkLgorCitUaGUgc3dpdGNoIGhhcmR3YXJlIGJsb2NrIGlzIHR5cGljYWxseSBpbnRlcmZhY2VkIHVzaW5nIE1NSU8gYWNjZXNzZXMgYW5kCitjb250YWlucyBhIGJ1bmNoIG9mIHN1Yi1ibG9ja3MvcmVnaXN0ZXJzOgorCisqIFNXSVRDSF9DT1JFOiBjb21tb24gc3dpdGNoIHJlZ2lzdGVycworKiBTV0lUQ0hfUkVHOiBleHRlcm5hbCBpbnRlcmZhY2VzIHN3aXRjaCByZWdpc3RlcgorKiBTV0lUQ0hfTURJTzogZXh0ZXJuYWwgTURJTyBidXMgY29udHJvbGxlciAodGhlcmUgaXMgYW5vdGhlciBvbmUgaW4gU1dJVENIX0NPUkUsCisgIHdoaWNoIGlzIHVzZWQgZm9yIGluZGlyZWN0IFBIWSBhY2Nlc3NlcykKKyogU1dJVENIX0lORElSX1JXOiA2NC1iaXRzIHdpZGUgcmVnaXN0ZXIgaGVscGVyIGJsb2NrCisqIFNXSVRDSF9JTlRSTDJfMC8xOiBMZXZlbC0yIGludGVycnVwdCBjb250cm9sbGVycworKiBTV0lUQ0hfQUNCOiBBZG1pc3Npb24gY29udHJvbCBibG9jaworKiBTV0lUQ0hfRkNCOiBGYWlsLW92ZXIgY29udHJvbCBibG9jaworCitJbXBsZW1lbnRhdGlvbiBkZXRhaWxzCis9PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBkcml2ZXIgaXMgbG9jYXRlZCBpbiBkcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jIGFuZCBpcyBpbXBsZW1lbnRlZCBhcyBhIERTQQorZHJpdmVyOyBzZWUgRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EudHh0IGZvciBkZXRhaWxzIG9uIHRoZSBzdWJzeXRlbQorYW5kIHdoYXQgaXQgcHJvdmlkZXMuCisKK1RoZSBTRjIgc3dpdGNoIGlzIGNvbmZpZ3VyZWQgdG8gZW5hYmxlIGEgQnJvYWRjb20gc3BlY2lmaWMgNC1ieXRlcyBzd2l0Y2ggdGFnCit3aGljaCBnZXRzIGluc2VydGVkIGJ5IHRoZSBzd2l0Y2ggZm9yIGV2ZXJ5IHBhY2tldCBmb3J3YXJkZWQgdG8gdGhlIENQVQoraW50ZXJmYWNlLCBjb252ZXJzZWx5LCB0aGUgQ1BVIG5ldHdvcmsgaW50ZXJmYWNlIHNob3VsZCBpbnNlcnQgYSBzaW1pbGFyIHRhZyBmb3IKK3BhY2tldHMgZW50ZXJpbmcgdGhlIENQVSBwb3J0LiBUaGUgdGFnIGZvcm1hdCBpcyBkZXNjcmliZWQgaW4KK25ldC9kc2EvdGFnX2JyY20uYy4KKworT3ZlcmFsbCwgdGhlIFNGMiBkcml2ZXIgaXMgYSBmYWlybHkgcmVndWxhciBEU0EgZHJpdmVyOyB0aGVyZSBhcmUgYSBmZXcKK3NwZWNpZmljcyBjb3ZlcmVkIGJlbG93LgorCitEZXZpY2UgVHJlZSBwcm9iaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBEU0EgcGxhdGZvcm0gZGV2aWNlIGRyaXZlciBpcyBwcm9iZWQgdXNpbmcgYSBzcGVjaWZpYyBjb21wYXRpYmxlIHN0cmluZworcHJvdmlkZWQgaW4gbmV0L2RzYS9kc2EuYy4gVGhlIHJlYXNvbiBmb3IgdGhhdCBpcyBiZWNhdXNlIHRoZSBEU0Egc3Vic3lzdGVtIGdldHMKK3JlZ2lzdGVyZWQgYXMgYSBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyIGN1cnJlbnRseS4gRFNBIHdpbGwgcHJvdmlkZSB0aGUgbmVlZGVkCitkZXZpY2Vfbm9kZSBwb2ludGVycyB3aGljaCBhcmUgdGhlbiBhY2Nlc3NpYmxlIGJ5IHRoZSBzd2l0Y2ggZHJpdmVyIHNldHVwCitmdW5jdGlvbiB0byBzZXR1cCByZXNvdXJjZXMgc3VjaCBhcyByZWdpc3RlciByYW5nZXMgYW5kIGludGVycnVwdHMuIFRoaXMKK2N1cnJlbnRseSB3b3JrcyB2ZXJ5IHdlbGwgYmVjYXVzZSBub25lIG9mIHRoZSBvZl8qIGZ1bmN0aW9ucyB1dGlsaXplZCBieSB0aGUKK2RyaXZlciByZXF1aXJlIGEgc3RydWN0IGRldmljZSB0byBiZSBib3VuZCB0byBhIHN0cnVjdCBkZXZpY2Vfbm9kZSwgYnV0IHRoaW5ncworbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLgorCitNRElPIGluZGlyZWN0IGFjY2Vzc2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0R1ZSB0byBhIGxpbWl0YXRpb24gaW4gaG93IEJyb2FkY29tIHN3aXRjaGVzIGhhdmUgYmVlbiBkZXNpZ25lZCwgZXh0ZXJuYWwKK0Jyb2FkY29tIHN3aXRjaGVzIGNvbm5lY3RlZCB0byBhIFNGMiByZXF1aXJlIHRoZSB1c2Ugb2YgdGhlIERTQSBzbGF2ZSBNRElPIGJ1cworaW4gb3JkZXIgdG8gcHJvcGVybHkgY29uZmlndXJlIHRoZW0uIEJ5IGRlZmF1bHQsIHRoZSBTRjIgcHNldWRvLVBIWSBhZGRyZXNzLCBhbmQKK2FuIGV4dGVybmFsIHN3aXRjaCBwc2V1ZG8tUEhZIGFkZHJlc3Mgd2lsbCBib3RoIGJlIHNub29waW5nIGZvciBpbmNvbWluZyBNRElPCit0cmFuc2FjdGlvbnMsIHNpbmNlIHRoZXkgYXJlIGF0IHRoZSBzYW1lIGFkZHJlc3MgKDMwKSwgcmVzdWx0aW5nIGluIHNvbWUga2luZCBvZgorImRvdWJsZSIgcHJvZ3JhbW1pbmcuIFVzaW5nIERTQSwgYW5kIHNldHRpbmcgZHMtPnBoeXNfbWlpX21hc2sgYWNjb3JkaW5nbHksIHdlCitzZWxlY3RpdmVseSBkaXZlcnQgcmVhZHMgYW5kIHdyaXRlcyB0b3dhcmRzIGV4dGVybmFsIEJyb2FkY29tIHN3aXRjaGVzCitwc2V1ZG8tUEhZIGFkZHJlc3Nlcy4gTmV3ZXIgcmV2aXNpb25zIG9mIHRoZSBTRjIgaGFyZHdhcmUgaGF2ZSBpbnRyb2R1Y2VkIGEKK2NvbmZpZ3VyYWJsZSBwc2V1ZG8tUEhZIGFkZHJlc3Mgd2hpY2ggY2lyY3VtdmVudHMgdGhlIGluaXRpYWwgZGVzaWduIGxpbWl0YXRpb24uCisKK011bHRpbWVkaWEgb3ZlciBDb0F4aWFsIChNb0NBKSBpbnRlcmZhY2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitNb0NBIGludGVyZmFjZXMgYXJlIGZhaXJseSBzcGVjaWZpYyBhbmQgcmVxdWlyZSB0aGUgdXNlIG9mIGEgZmlybXdhcmUgYmxvYiB3aGljaAorZ2V0cyBsb2FkZWQgb250byB0aGUgTW9DQSBwcm9jZXNzb3IocykgZm9yIHBhY2tldCBwcm9jZXNzaW5nLiBUaGUgc3dpdGNoCitoYXJkd2FyZSBjb250YWlucyBsb2dpYyB3aGljaCB3aWxsIGFzc2VydC9kZS1hc3NlcnQgbGluayBzdGF0ZXMgYWNjb3JkaW5nbHkgZm9yCit0aGUgTW9DQSBpbnRlcmZhY2Ugd2hlbmV2ZXIgdGhlIE1vQ0EgY29heGlhbCBjYWJsZSBnZXRzIGRpc2Nvbm5lY3RlZCBvciB0aGUKK2Zpcm13YXJlIGdldHMgcmVsb2FkZWQuIFRoZSBTRjIgZHJpdmVyIHJlbGllcyBvbiBzdWNoIGV2ZW50cyB0byBwcm9wZXJseSBzZXQgaXRzCitNb0NBIGludGVyZmFjZSBjYXJyaWVyIHN0YXRlIGFuZCBwcm9wZXJseSByZXBvcnQgdGhpcyB0byB0aGUgbmV0d29ya2luZyBzdGFjay4KKworVGhlIE1vQ0EgaW50ZXJmYWNlcyBhcmUgc3VwcG9ydGVkIHVzaW5nIHRoZSBQSFkgbGlicmFyeSdzIGZpeGVkIFBIWS9lbXVsYXRlZCBQSFkKK2RldmljZSBhbmQgdGhlIHN3aXRjaCBkcml2ZXIgcmVnaXN0ZXJzIGEgZml4ZWRfbGlua191cGRhdGUgY2FsbGJhY2sgZm9yIHN1Y2gKK1BIWXMgd2hpY2ggcmVmbGVjdHMgdGhlIGxpbmsgc3RhdGUgb2J0YWluZWQgZnJvbSB0aGUgaW50ZXJydXB0IGhhbmRsZXIuCisKKworUG93ZXIgTWFuYWdlbWVudAorLS0tLS0tLS0tLS0tLS0tLQorCitXaGVuZXZlciBwb3NzaWJsZSwgdGhlIFNGMiBkcml2ZXIgdHJpZXMgdG8gbWluaW1pemUgdGhlIG92ZXJhbGwgc3dpdGNoIHBvd2VyCitjb25zdW1wdGlvbiBieSBhcHBseWluZyBhIGNvbWJpbmF0aW9uIG9mOgorCistIHR1cm5pbmcgb2ZmIGludGVybmFsIGJ1ZmZlcnMvbWVtb3JpZXMKKy0gZGlzYWJsaW5nIHBhY2tldCBwcm9jZXNzaW5nIGxvZ2ljCistIHB1dHRpbmcgaW50ZWdyYXRlZCBQSFlzIGluIElERFEvbG93LXBvd2VyCistIHJlZHVjaW5nIHRoZSBzd2l0Y2ggY29yZSBjbG9jayBiYXNlZCBvbiB0aGUgYWN0aXZlIHBvcnQgY291bnQKKy0gZW5hYmxpbmcgYW5kIGFkdmVydGlzaW5nIEVFRQorLSB0dXJuaW5nIG9mZiBSR01JSSBkYXRhIHByb2Nlc3NpbmcgbG9naWMgd2hlbiB0aGUgbGluayBnb2VzIGRvd24KKworV2FrZS1vbi1MQU4KKy0tLS0tLS0tLS0tCisKK1dha2Utb24tTEFOIGlzIGN1cnJlbnRseSBpbXBsZW1lbnRlZCBieSB1dGlsaXppbmcgdGhlIGhvc3QgcHJvY2Vzc29yIEV0aGVybmV0CitNQUMgY29udHJvbGxlciB3YWtlLW9uIGxvZ2ljLiBXaGVuZXZlciBXYWtlLW9uLUxBTiBpcyByZXF1ZXN0ZWQsIGFuIGludGVyc2VjdGlvbgorYmV0d2VlbiB0aGUgdXNlciByZXF1ZXN0IGFuZCB0aGUgc3VwcG9ydGVkIGhvc3QgRXRoZXJuZXQgaW50ZXJmYWNlIFdvTAorY2FwYWJpbGl0aWVzIGlzIGRvbmUgYW5kIHRoZSBpbnRlcnNlY3Rpb24gcmVzdWx0IGdldHMgY29uZmlndXJlZC4gRHVyaW5nCitzeXN0ZW0td2lkZSBzdXNwZW5kL3Jlc3VtZSwgb25seSBwb3J0cyBub3QgcGFydGljaXBhdGluZyBpbiBXYWtlLW9uLUxBTiBhcmUKK2Rpc2FibGVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RzYS9kc2EudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhOWMxZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZHNhL2RzYS50eHQKQEAgLTAsMCArMSw2MTUgQEAKK0Rpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW50cm9kdWN0aW9uCis9PT09PT09PT09PT0KKworVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUgKERTQSkgc3Vic3lzdGVtCitkZXNpZ24gcHJpbmNpcGxlcywgbGltaXRhdGlvbnMsIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIHN1YnN5c3RlbXMsIGFuZCBob3cgdG8KK2RldmVsb3AgZHJpdmVycyBmb3IgdGhpcyBzdWJzeXN0ZW0gYXMgd2VsbCBhcyBhIFRPRE8gZm9yIGRldmVsb3BlcnMgaW50ZXJlc3RlZAoraW4gam9pbmluZyB0aGUgZWZmb3J0LgorCitEZXNpZ24gcHJpbmNpcGxlcworPT09PT09PT09PT09PT09PT0KKworVGhlIERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUgaXMgYSBzdWJzeXN0ZW0gd2hpY2ggd2FzIHByaW1hcmlseSBkZXNpZ25lZAordG8gc3VwcG9ydCBNYXJ2ZWxsIEV0aGVybmV0IHN3aXRjaGVzIChNVjg4RTZ4eHgsIGEuay5hIExpbmtzdHJlZXQgcHJvZHVjdCBsaW5lKQordXNpbmcgTGludXgsIGJ1dCBoYXMgc2luY2UgZXZvbHZlZCB0byBzdXBwb3J0IG90aGVyIHZlbmRvcnMgYXMgd2VsbC4KKworVGhlIG9yaWdpbmFsIHBoaWxvc29waHkgYmVoaW5kIHRoaXMgZGVzaWduIHdhcyB0byBiZSBhYmxlIHRvIHVzZSB1bm1vZGlmaWVkCitMaW51eCB0b29scyBzdWNoIGFzIGJyaWRnZSwgaXByb3V0ZTIsIGlmY29uZmlnIHRvIHdvcmsgdHJhbnNwYXJlbnRseSB3aGV0aGVyCit0aGV5IGNvbmZpZ3VyZWQvcXVlcmllZCBhIHN3aXRjaCBwb3J0IG5ldHdvcmsgZGV2aWNlIG9yIGEgcmVndWxhciBuZXR3b3JrCitkZXZpY2UuCisKK0FuIEV0aGVybmV0IHN3aXRjaCBpcyB0eXBpY2FsbHkgY29tcHJpc2VkIG9mIG11bHRpcGxlIGZyb250LXBhbmVsIHBvcnRzLCBhbmQgb25lCitvciBtb3JlIENQVSBvciBtYW5hZ2VtZW50IHBvcnQuIFRoZSBEU0Egc3Vic3lzdGVtIGN1cnJlbnRseSByZWxpZXMgb24gdGhlCitwcmVzZW5jZSBvZiBhIG1hbmFnZW1lbnQgcG9ydCBjb25uZWN0ZWQgdG8gYW4gRXRoZXJuZXQgY29udHJvbGxlciBjYXBhYmxlIG9mCityZWNlaXZpbmcgRXRoZXJuZXQgZnJhbWVzIGZyb20gdGhlIHN3aXRjaC4gVGhpcyBpcyBhIHZlcnkgY29tbW9uIHNldHVwIGZvciBhbGwKK2tpbmRzIG9mIEV0aGVybmV0IHN3aXRjaGVzIGZvdW5kIGluIFNtYWxsIEhvbWUgYW5kIE9mZmljZSBwcm9kdWN0czogcm91dGVycywKK2dhdGV3YXlzLCBvciBldmVuIHRvcC1vZi10aGUgcmFjayBzd2l0Y2hlcy4gVGhpcyBob3N0IEV0aGVybmV0IGNvbnRyb2xsZXIgd2lsbAorYmUgbGF0ZXIgcmVmZXJyZWQgdG8gYXMgIm1hc3RlciIgYW5kICJjcHUiIGluIERTQSB0ZXJtaW5vbG9neSBhbmQgY29kZS4KKworVGhlIEQgaW4gRFNBIHN0YW5kcyBmb3IgRGlzdHJpYnV0ZWQsIGJlY2F1c2UgdGhlIHN1YnN5c3RlbSBoYXMgYmVlbiBkZXNpZ25lZAord2l0aCB0aGUgYWJpbGl0eSB0byBjb25maWd1cmUgYW5kIG1hbmFnZSBjYXNjYWRlZCBzd2l0Y2hlcyBvbiB0b3Agb2YgZWFjaCBvdGhlcgordXNpbmcgdXBzdHJlYW0gYW5kIGRvd25zdHJlYW0gRXRoZXJuZXQgbGlua3MgYmV0d2VlbiBzd2l0Y2hlcy4gVGhlc2Ugc3BlY2lmaWMKK3BvcnRzIGFyZSByZWZlcnJlZCB0byBhcyAiZHNhIiBwb3J0cyBpbiBEU0EgdGVybWlub2xvZ3kgYW5kIGNvZGUuIEEgY29sbGVjdGlvbgorb2YgbXVsdGlwbGUgc3dpdGNoZXMgY29ubmVjdGVkIHRvIGVhY2ggb3RoZXIgaXMgY2FsbGVkIGEgInN3aXRjaCB0cmVlIi4KKworRm9yIGVhY2ggZnJvbnQtcGFuZWwgcG9ydCwgRFNBIHdpbGwgY3JlYXRlIHNwZWNpYWxpemVkIG5ldHdvcmsgZGV2aWNlcyB3aGljaCBhcmUKK3VzZWQgYXMgY29udHJvbGxpbmcgYW5kIGRhdGEtZmxvd2luZyBlbmRwb2ludHMgZm9yIHVzZSBieSB0aGUgTGludXggbmV0d29ya2luZworc3RhY2suIFRoZXNlIHNwZWNpYWxpemVkIG5ldHdvcmsgaW50ZXJmYWNlcyBhcmUgcmVmZXJyZWQgdG8gYXMgInNsYXZlIiBuZXR3b3JrCitpbnRlcmZhY2VzIGluIERTQSB0ZXJtaW5vbG9neSBhbmQgY29kZS4KKworVGhlIGlkZWFsIGNhc2UgZm9yIHVzaW5nIERTQSBpcyB3aGVuIGFuIEV0aGVybmV0IHN3aXRjaCBzdXBwb3J0cyBhICJzd2l0Y2ggdGFnIgord2hpY2ggaXMgYSBoYXJkd2FyZSBmZWF0dXJlIG1ha2luZyB0aGUgc3dpdGNoIGluc2VydCBhIHNwZWNpZmljIHRhZyBmb3IgZWFjaAorRXRoZXJuZXQgZnJhbWVzIGl0IHJlY2VpdmVkIHRvL2Zyb20gc3BlY2lmaWMgcG9ydHMgdG8gaGVscCB0aGUgbWFuYWdlbWVudAoraW50ZXJmYWNlIGZpZ3VyZSBvdXQ6CisKKy0gd2hhdCBwb3J0IGlzIHRoaXMgZnJhbWUgY29taW5nIGZyb20KKy0gd2hhdCB3YXMgdGhlIHJlYXNvbiB3aHkgdGhpcyBmcmFtZSBnb3QgZm9yd2FyZGVkCistIGhvdyB0byBzZW5kIENQVSBvcmlnaW5hdGVkIHRyYWZmaWMgdG8gc3BlY2lmaWMgcG9ydHMKKworVGhlIHN1YnN5c3RlbSBkb2VzIHN1cHBvcnQgc3dpdGNoZXMgbm90IGNhcGFibGUgb2YgaW5zZXJ0aW5nL3N0cmlwcGluZyB0YWdzLCBidXQKK3RoZSBmZWF0dXJlcyBtaWdodCBiZSBzbGlnaHRseSBsaW1pdGVkIGluIHRoYXQgY2FzZSAodHJhZmZpYyBzZXBhcmF0aW9uIHJlbGllcworb24gUG9ydC1iYXNlZCBWTEFOIElEcykuCisKK05vdGUgdGhhdCBEU0EgZG9lcyBub3QgY3VycmVudGx5IGNyZWF0ZSBuZXR3b3JrIGludGVyZmFjZXMgZm9yIHRoZSAiY3B1IiBhbmQKKyJkc2EiIHBvcnRzIGJlY2F1c2U6CisKKy0gdGhlICJjcHUiIHBvcnQgaXMgdGhlIEV0aGVybmV0IHN3aXRjaCBmYWNpbmcgc2lkZSBvZiB0aGUgbWFuYWdlbWVudAorICBjb250cm9sbGVyLCBhbmQgYXMgc3VjaCwgd291bGQgY3JlYXRlIGEgZHVwbGljYXRpb24gb2YgZmVhdHVyZSwgc2luY2UgeW91CisgIHdvdWxkIGdldCB0d28gaW50ZXJmYWNlcyBmb3IgdGhlIHNhbWUgY29uZHVpdDogbWFzdGVyIG5ldGRldiwgYW5kICJjcHUiIG5ldGRldgorCistIHRoZSAiZHNhIiBwb3J0KHMpIGFyZSBqdXN0IGNvbmR1aXRzIGJldHdlZW4gdHdvIG9yIG1vcmUgc3dpdGNoZXMsIGFuZCBhcyBzdWNoCisgIGNhbm5vdCByZWFsbHkgYmUgdXNlZCBhcyBwcm9wZXIgbmV0d29yayBpbnRlcmZhY2VzIGVpdGhlciwgb25seSB0aGUKKyAgZG93bnN0cmVhbSwgb3IgdGhlIHRvcC1tb3N0IHVwc3RyZWFtIGludGVyZmFjZSBtYWtlcyBzZW5zZSB3aXRoIHRoYXQgbW9kZWwKKworU3dpdGNoIHRhZ2dpbmcgcHJvdG9jb2xzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRFNBIGN1cnJlbnRseSBzdXBwb3J0cyA0IGRpZmZlcmVudCB0YWdnaW5nIHByb3RvY29scywgYW5kIGEgdGFnLWxlc3MgbW9kZSBhcword2VsbC4gVGhlIGRpZmZlcmVudCBwcm90b2NvbHMgYXJlIGltcGxlbWVudGVkIGluOgorCituZXQvZHNhL3RhZ190cmFpbGVyLmM6IE1hcnZlbGwncyA0IHRyYWlsZXIgdGFnIG1vZGUgKGxlZ2FjeSkKK25ldC9kc2EvdGFnX2RzYS5jOiBNYXJ2ZWxsJ3Mgb3JpZ2luYWwgRFNBIHRhZworbmV0L2RzYS90YWdfZWRzYS5jOiBNYXJ2ZWxsJ3MgZW5oYW5jZWQgRFNBIHRhZworbmV0L2RzYS90YWdfYnJjbS5jOiBCcm9hZGNvbSdzIDQgYnl0ZXMgdGFnCisKK1RoZSBleGFjdCBmb3JtYXQgb2YgdGhlIHRhZyBwcm90b2NvbCBpcyB2ZW5kb3Igc3BlY2lmaWMsIGJ1dCBpbiBnZW5lcmFsLCB0aGV5CithbGwgY29udGFpbiBzb21ldGhpbmcgd2hpY2g6CisKKy0gaWRlbnRpZmllcyB3aGljaCBwb3J0IHRoZSBFdGhlcm5ldCBmcmFtZSBjYW1lIGZyb20vc2hvdWxkIGJlIHNlbnQgdG8KKy0gcHJvdmlkZXMgYSByZWFzb24gd2h5IHRoaXMgZnJhbWUgd2FzIGZvcndhcmRlZCB0byB0aGUgbWFuYWdlbWVudCBpbnRlcmZhY2UKKworTWFzdGVyIG5ldHdvcmsgZGV2aWNlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitNYXN0ZXIgbmV0d29yayBkZXZpY2VzIGFyZSByZWd1bGFyLCB1bm1vZGlmaWVkIExpbnV4IG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMgZm9yCit0aGUgQ1BVL21hbmFnZW1lbnQgRXRoZXJuZXQgaW50ZXJmYWNlLiBTdWNoIGEgZHJpdmVyIG1pZ2h0IG9jY2FzaW9uYWxseSBuZWVkIHRvCitrbm93IHdoZXRoZXIgRFNBIGlzIGVuYWJsZWQgKGUuZy46IHRvIGVuYWJsZS9kaXNhYmxlIHNwZWNpZmljIG9mZmxvYWQgZmVhdHVyZXMpLAorYnV0IHRoZSBEU0Egc3Vic3lzdGVtIGhhcyBiZWVuIHByb3ZlbiB0byB3b3JrIHdpdGggaW5kdXN0cnkgc3RhbmRhcmQgZHJpdmVyczoKK2UxMDAwZSwgbXY2NDN4eF9ldGggZXRjLiB3aXRob3V0IGhhdmluZyB0byBpbnRyb2R1Y2UgbW9kaWZpY2F0aW9ucyB0byB0aGVzZQorZHJpdmVycy4gU3VjaCBuZXR3b3JrIGRldmljZXMgYXJlIGFsc28gb2Z0ZW4gcmVmZXJyZWQgdG8gYXMgY29uZHVpdCBuZXR3b3JrCitkZXZpY2VzIHNpbmNlIHRoZXkgYWN0IGFzIGEgcGlwZSBiZXR3ZWVuIHRoZSBob3N0IHByb2Nlc3NvciBhbmQgdGhlIGhhcmR3YXJlCitFdGhlcm5ldCBzd2l0Y2guCisKK05ldHdvcmtpbmcgc3RhY2sgaG9va3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hlbiBhIG1hc3RlciBuZXRkZXYgaXMgdXNlZCB3aXRoIERTQSwgYSBzbWFsbCBob29rIGlzIHBsYWNlZCBpbiBpbiB0aGUKK25ldHdvcmtpbmcgc3RhY2sgaXMgaW4gb3JkZXIgdG8gaGF2ZSB0aGUgRFNBIHN1YnN5c3RlbSBwcm9jZXNzIHRoZSBFdGhlcm5ldAorc3dpdGNoIHNwZWNpZmljIHRhZ2dpbmcgcHJvdG9jb2wuIERTQSBhY2NvbXBsaXNoZXMgdGhpcyBieSByZWdpc3RlcmluZyBhCitzcGVjaWZpYyAoYW5kIGZha2UpIEV0aGVybmV0IHR5cGUgKGxhdGVyIGJlY29taW5nIHNrYi0+cHJvdG9jb2wpIHdpdGggdGhlCituZXR3b3JraW5nIHN0YWNrLCB0aGlzIGlzIGFsc28ga25vd24gYXMgYSBwdHlwZSBvciBwYWNrZXRfdHlwZS4gQSB0eXBpY2FsCitFdGhlcm5ldCBGcmFtZSByZWNlaXZlIHNlcXVlbmNlIGxvb2tzIGxpa2UgdGhpczoKKworTWFzdGVyIG5ldHdvcmsgZGV2aWNlIChlLmcuOiBlMTAwMGUpOgorCitSZWNlaXZlIGludGVycnVwdCBmaXJlczoKKy0gcmVjZWl2ZSBmdW5jdGlvbiBpcyBpbnZva2VkCistIGJhc2ljIHBhY2tldCBwcm9jZXNzaW5nIGlzIGRvbmU6IGdldHRpbmcgbGVuZ3RoLCBzdGF0dXMgZXRjLgorLSBwYWNrZXQgaXMgcHJlcGFyZWQgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSBFdGhlcm5ldCBsYXllciBieSBjYWxsaW5nCisgIGV0aF90eXBlX3RyYW5zCisKK25ldC9ldGhlcm5ldC9ldGguYzoKKworZXRoX3R5cGVfdHJhbnMoc2tiLCBkZXYpCisJaWYgKGRldi0+ZHNhX3B0ciAhPSBOVUxMKQorCQktPiBza2ItPnByb3RvY29sID0gRVRIX1BfWERTQQorCitkcml2ZXJzL25ldC9ldGhlcm5ldC8qOgorCituZXRpZl9yZWNlaXZlX3NrYihza2IpCisJLT4gaXRlcmF0ZSBvdmVyIHJlZ2lzdGVyZWQgcGFja2V0X3R5cGUKKwkJLT4gaW52b2tlIGhhbmRsZXIgZm9yIEVUSF9QX1hEU0EsIGNhbGxzIGRzYV9zd2l0Y2hfcmN2KCkKKworbmV0L2RzYS9kc2EuYzoKKwktPiBkc2Ffc3dpdGNoX3JjdigpCisJCS0+IGludm9rZSBzd2l0Y2ggdGFnIHNwZWNpZmljIHByb3RvY29sIGhhbmRsZXIgaW4KKwkJICAgbmV0L2RzYS90YWdfKi5jCisKK25ldC9kc2EvdGFnXyouYzoKKwktPiBpbnNwZWN0IGFuZCBzdHJpcCBzd2l0Y2ggdGFnIHByb3RvY29sIHRvIGRldGVybWluZSBvcmlnaW5hdGluZyBwb3J0CisJLT4gbG9jYXRlIHBlci1wb3J0IG5ldHdvcmsgZGV2aWNlCisJLT4gaW52b2tlIGV0aF90eXBlX3RyYW5zKCkgd2l0aCB0aGUgRFNBIHNsYXZlIG5ldHdvcmsgZGV2aWNlCisJLT4gaW52b2tlZCBuZXRpZl9yZWNlaXZlX3NrYigpCisKK1Bhc3QgdGhpcyBwb2ludCwgdGhlIERTQSBzbGF2ZSBuZXR3b3JrIGRldmljZXMgZ2V0IGRlbGl2ZXJlZCByZWd1bGFyIEV0aGVybmV0CitmcmFtZXMgdGhhdCBjYW4gYmUgcHJvY2Vzc2VkIGJ5IHRoZSBuZXR3b3JraW5nIHN0YWNrLgorCitTbGF2ZSBuZXR3b3JrIGRldmljZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTbGF2ZSBuZXR3b3JrIGRldmljZXMgY3JlYXRlZCBieSBEU0EgYXJlIHN0YWNrZWQgb24gdG9wIG9mIHRoZWlyIG1hc3RlciBuZXR3b3JrCitkZXZpY2UsIGVhY2ggb2YgdGhlc2UgbmV0d29yayBpbnRlcmZhY2VzIHdpbGwgYmUgcmVzcG9uc2libGUgZm9yIGJlaW5nIGEKK2NvbnRyb2xsaW5nIGFuZCBkYXRhLWZsb3dpbmcgZW5kLXBvaW50IGZvciBlYWNoIGZyb250LXBhbmVsIHBvcnQgb2YgdGhlIHN3aXRjaC4KK1RoZXNlIGludGVyZmFjZXMgYXJlIHNwZWNpYWxpemVkIGluIG9yZGVyIHRvOgorCistIGluc2VydC9yZW1vdmUgdGhlIHN3aXRjaCB0YWcgcHJvdG9jb2wgKGlmIGl0IGV4aXN0cykgd2hlbiBzZW5kaW5nIHRyYWZmaWMKKyAgdG8vZnJvbSBzcGVjaWZpYyBzd2l0Y2ggcG9ydHMKKy0gcXVlcnkgdGhlIHN3aXRjaCBmb3IgZXRodG9vbCBvcGVyYXRpb25zOiBzdGF0aXN0aWNzLCBsaW5rIHN0YXRlLAorICBXYWtlLW9uLUxBTiwgcmVnaXN0ZXIgZHVtcHMuLi4KKy0gZXh0ZXJuYWwvaW50ZXJuYWwgUEhZIG1hbmFnZW1lbnQ6IGxpbmssIGF1dG8tbmVnb3RpYXRpb24gZXRjLgorCitUaGVzZSBzbGF2ZSBuZXR3b3JrIGRldmljZXMgaGF2ZSBjdXN0b20gbmV0X2RldmljZV9vcHMgYW5kIGV0aHRvb2xfb3BzIGZ1bmN0aW9uCitwb2ludGVycyB3aGljaCBhbGxvdyBEU0EgdG8gaW50cm9kdWNlIGEgbGV2ZWwgb2YgbGF5ZXJpbmcgYmV0d2VlbiB0aGUgbmV0d29ya2luZworc3RhY2svZXRodG9vbCwgYW5kIHRoZSBzd2l0Y2ggZHJpdmVyIGltcGxlbWVudGF0aW9uLgorCitVcG9uIGZyYW1lIHRyYW5zbWlzc2lvbiBmcm9tIHRoZXNlIHNsYXZlIG5ldHdvcmsgZGV2aWNlcywgRFNBIHdpbGwgbG9vayB1cCB3aGljaAorc3dpdGNoIHRhZ2dpbmcgcHJvdG9jb2wgaXMgY3VycmVudGx5IHJlZ2lzdGVyZWQgd2l0aCB0aGVzZSBuZXR3b3JrIGRldmljZXMsIGFuZAoraW52b2tlIGEgc3BlY2lmaWMgdHJhbnNtaXQgcm91dGluZSB3aGljaCB0YWtlcyBjYXJlIG9mIGFkZGluZyB0aGUgcmVsZXZhbnQKK3N3aXRjaCB0YWcgaW4gdGhlIEV0aGVybmV0IGZyYW1lcy4KKworVGhlc2UgZnJhbWVzIGFyZSB0aGVuIHF1ZXVlZCBmb3IgdHJhbnNtaXNzaW9uIHVzaW5nIHRoZSBtYXN0ZXIgbmV0d29yayBkZXZpY2UKK25kb19zdGFydF94bWl0KCkgZnVuY3Rpb24sIHNpbmNlIHRoZXkgY29udGFpbiB0aGUgYXBwcm9wcmlhdGUgc3dpdGNoIHRhZywgdGhlCitFdGhlcm5ldCBzd2l0Y2ggd2lsbCBiZSBhYmxlIHRvIHByb2Nlc3MgdGhlc2UgaW5jb21pbmcgZnJhbWVzIGZyb20gdGhlCittYW5hZ2VtZW50IGludGVyZmFjZSBhbmQgZGVsaXZlcnMgdGhlc2UgZnJhbWVzIHRvIHRoZSBwaHlzaWNhbCBzd2l0Y2ggcG9ydC4KKworR3JhcGhpY2FsIHJlcHJlc2VudGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU3VtbWFyaXplZCwgdGhpcyBpcyBiYXNpY2FsbHkgaG93IERTQSBsb29rcyBsaWtlIGZyb20gYSBuZXR3b3JrIGRldmljZQorcGVyc3BlY3RpdmU6CisKKworCQkJfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQkJfCBDUFUgbmV0d29yayBkZXZpY2UgKGV0aDApfAorCQkJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQkJfCA8dGFnIGFkZGVkIGJ5IHN3aXRjaCAgICAgfAorCQkJfCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCQkJfCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCQkJfCAgICAgICAgdGFnIGFkZGVkIGJ5IENQVT4gfAorCQl8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisJCXwgU3dpdGNoIGRyaXZlcgkJCQkgICAgIHwKKwkJfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorICAgICAgICAgICAgICAgICAgICB8fCAgICAgICAgfHwgICAgICAgICB8fAorCQl8LS0tLS0tLXwgIHwtLS0tLS0tfCAgfC0tLS0tLS18CisJCXwgc3cwcDAgfCAgfCBzdzBwMSB8ICB8IHN3MHAyIHwKKwkJfC0tLS0tLS18ICB8LS0tLS0tLXwgIHwtLS0tLS0tfAorCitTbGF2ZSBNRElPIGJ1cworLS0tLS0tLS0tLS0tLS0KKworSW4gb3JkZXIgdG8gYmUgYWJsZSB0byByZWFkIHRvL2Zyb20gYSBzd2l0Y2ggUEhZIGJ1aWx0IGludG8gaXQsIERTQSBjcmVhdGVzIGEKK3NsYXZlIE1ESU8gYnVzIHdoaWNoIGFsbG93cyBhIHNwZWNpZmljIHN3aXRjaCBkcml2ZXIgdG8gZGl2ZXJ0IGFuZCBpbnRlcmNlcHQKK01ESU8gcmVhZHMvd3JpdGVzIHRvd2FyZHMgc3BlY2lmaWMgUEhZIGFkZHJlc3Nlcy4gSW4gbW9zdCBNRElPLWNvbm5lY3RlZAorc3dpdGNoZXMsIHRoZXNlIGZ1bmN0aW9ucyB3b3VsZCB1dGlsaXplIGRpcmVjdCBvciBpbmRpcmVjdCBQSFkgYWRkcmVzc2luZyBtb2RlCit0byByZXR1cm4gc3RhbmRhcmQgTUlJIHJlZ2lzdGVycyBmcm9tIHRoZSBzd2l0Y2ggYnVpbHRpbiBQSFlzLCBhbGxvd2luZyB0aGUgUEhZCitsaWJyYXJ5IGFuZC9vciB0byByZXR1cm4gbGluayBzdGF0dXMsIGxpbmsgcGFydG5lciBwYWdlcywgYXV0by1uZWdvdGlhdGlvbgorcmVzdWx0cyBldGMuLgorCitGb3IgRXRoZXJuZXQgc3dpdGNoZXMgd2hpY2ggaGF2ZSBib3RoIGV4dGVybmFsIGFuZCBpbnRlcm5hbCBNRElPIGJ1c3NlcywgdGhlCitzbGF2ZSBNSUkgYnVzIGNhbiBiZSB1dGlsaXplZCB0byBtdXgvZGVtdXggTURJTyByZWFkcyBhbmQgd3JpdGVzIHRvd2FyZHMgZWl0aGVyCitpbnRlcm5hbCBvciBleHRlcm5hbCBNRElPIGRldmljZXMgdGhpcyBzd2l0Y2ggbWlnaHQgYmUgY29ubmVjdGVkIHRvOiBpbnRlcm5hbAorUEhZcywgZXh0ZXJuYWwgUEhZcywgb3IgZXZlbiBleHRlcm5hbCBzd2l0Y2hlcy4KKworRGF0YSBzdHJ1Y3R1cmVzCistLS0tLS0tLS0tLS0tLS0KKworRFNBIGRhdGEgc3RydWN0dXJlcyBhcmUgZGVmaW5lZCBpbiBpbmNsdWRlL25ldC9kc2EuaCBhcyB3ZWxsIGFzCituZXQvZHNhL2RzYV9wcml2LmguCisKK2RzYV9jaGlwX2RhdGE6IHBsYXRmb3JtIGRhdGEgY29uZmlndXJhdGlvbiBmb3IgYSBnaXZlbiBzd2l0Y2ggZGV2aWNlLCB0aGlzCitzdHJ1Y3R1cmUgZGVzY3JpYmVzIGEgc3dpdGNoIGRldmljZSdzIHBhcmVudCBkZXZpY2UsIGl0cyBhZGRyZXNzLCBhcyB3ZWxsIGFzCit2YXJpb3VzIHByb3BlcnRpZXMgb2YgaXRzIHBvcnRzOiBuYW1lcy9sYWJlbHMsIGFuZCBmaW5hbGx5IGEgcm91dGluZyB0YWJsZQoraW5kaWNhdGlvbiAod2hlbiBjYXNjYWRpbmcgc3dpdGNoZXMpCisKK2RzYV9wbGF0Zm9ybV9kYXRhOiBwbGF0Zm9ybSBkZXZpY2UgY29uZmlndXJhdGlvbiBkYXRhIHdoaWNoIGNhbiByZWZlcmVuY2UgYQorY29sbGVjdGlvbiBvZiBkc2FfY2hpcF9kYXRhIHN0cnVjdHVyZSBpZiBtdWx0aXBsZXMgc3dpdGNoZXMgYXJlIGNhc2NhZGVkLCB0aGUKK21hc3RlciBuZXR3b3JrIGRldmljZSB0aGlzIHN3aXRjaCB0cmVlIGlzIGF0dGFjaGVkIHRvIG5lZWRzIHRvIGJlIHJlZmVyZW5jZWQKKworZHNhX3N3aXRjaF90cmVlOiBzdHJ1Y3R1cmUgYXNzaWduZWQgdG8gdGhlIG1hc3RlciBuZXR3b3JrIGRldmljZSB1bmRlcgorImRzYV9wdHIiLCB0aGlzIHN0cnVjdHVyZSByZWZlcmVuY2VzIGEgZHNhX3BsYXRmb3JtX2RhdGEgc3RydWN0dXJlIGFzIHdlbGwgYXMKK3RoZSB0YWdnaW5nIHByb3RvY29sIHN1cHBvcnRlZCBieSB0aGUgc3dpdGNoIHRyZWUsIGFuZCB3aGljaCByZWNlaXZlL3RyYW5zbWl0CitmdW5jdGlvbiBob29rcyBzaG91bGQgYmUgaW52b2tlZCwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRpcmVjdGx5IGF0dGFjaGVkIHN3aXRjaAoraXMgYWxzbyBwcm92aWRlZDogQ1BVIHBvcnQuIEZpbmFsbHksIGEgY29sbGVjdGlvbiBvZiBkc2Ffc3dpdGNoIGFyZSByZWZlcmVuY2VkCit0byBhZGRyZXNzIGluZGl2aWR1YWwgc3dpdGNoZXMgaW4gdGhlIHRyZWUuCisKK2RzYV9zd2l0Y2g6IHN0cnVjdHVyZSBkZXNjcmliaW5nIGEgc3dpdGNoIGRldmljZSBpbiB0aGUgdHJlZSwgcmVmZXJlbmNpbmcgYQorZHNhX3N3aXRjaF90cmVlIGFzIGEgYmFja3BvaW50ZXIsIHNsYXZlIG5ldHdvcmsgZGV2aWNlcywgbWFzdGVyIG5ldHdvcmsgZGV2aWNlLAorYW5kIGEgcmVmZXJlbmNlIHRvIHRoZSBiYWNraW5nIGRzYV9zd2l0Y2hfZHJpdmVyCisKK2RzYV9zd2l0Y2hfZHJpdmVyOiBzdHJ1Y3R1cmUgcmVmZXJlbmNpbmcgZnVuY3Rpb24gcG9pbnRlcnMsIHNlZSBiZWxvdyBmb3IgYSBmdWxsCitkZXNjcmlwdGlvbi4KKworRGVzaWduIGxpbWl0YXRpb25zCis9PT09PT09PT09PT09PT09PT0KKworRFNBIGlzIGEgcGxhdGZvcm0gZGV2aWNlIGRyaXZlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEU0EgaXMgaW1wbGVtZW50ZWQgYXMgYSBEU0EgcGxhdGZvcm0gZGV2aWNlIGRyaXZlciB3aGljaCBpcyBjb252ZW5pZW50IGJlY2F1c2UKK2l0IHdpbGwgcmVnaXN0ZXIgdGhlIGVudGlyZSBEU0Egc3dpdGNoIHRyZWUgYXR0YWNoZWQgdG8gYSBtYXN0ZXIgbmV0d29yayBkZXZpY2UKK2luIG9uZS1zaG90LCBmYWNpbGl0YXRpbmcgdGhlIGRldmljZSBjcmVhdGlvbiBhbmQgc2ltcGxpZnlpbmcgdGhlIGRldmljZSBkcml2ZXIKK21vZGVsIGEgYml0LCB0aGlzIGNvbWVzIGhvd2V2ZXIgd2l0aCBhIG51bWJlciBvZiBsaW1pdGF0aW9uczoKKworLSBidWlsZGluZyBEU0EgYW5kIGl0cyBzd2l0Y2ggZHJpdmVycyBhcyBtb2R1bGVzIGlzIGN1cnJlbnRseSBub3Qgd29ya2luZworLSB0aGUgZGV2aWNlIGRyaXZlciBwYXJlbnRpbmcgZG9lcyBub3QgbmVjZXNzYXJpbHkgcmVmbGVjdCB0aGUgb3JpZ2luYWwKKyAgYnVzL2RldmljZSB0aGUgc3dpdGNoIGNhbiBiZSBjcmVhdGVkIGZyb20KKy0gc3VwcG9ydGluZyBub24tTURJTyBhbmQgbm9uLU1NSU8gKHBsYXRmb3JtKSBzd2l0Y2hlcyBpcyBub3QgcG9zc2libGUKKworTGltaXRzIG9uIHRoZSBudW1iZXIgb2YgZGV2aWNlcyBhbmQgcG9ydHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RTQSBjdXJyZW50bHkgbGltaXRzIHRoZSBudW1iZXIgb2YgbWF4aW11bSBzd2l0Y2hlcyB3aXRoaW4gYSB0cmVlIHRvIDQKKyhEU0FfTUFYX1NXSVRDSEVTKSwgYW5kIHRoZSBudW1iZXIgb2YgcG9ydHMgcGVyIHN3aXRjaCB0byAxMiAoRFNBX01BWF9QT1JUUykuCitUaGVzZSBsaW1pdHMgY291bGQgYmUgZXh0ZW5kZWQgdG8gc3VwcG9ydCBsYXJnZXIgY29uZmlndXJhdGlvbnMgd291bGQgdGhpcyBuZWVkCithcmlzZS4KKworTGFjayBvZiBDUFUvRFNBIG5ldHdvcmsgZGV2aWNlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEU0EgZG9lcyBub3QgY3VycmVudGx5IGNyZWF0ZSBzbGF2ZSBuZXR3b3JrIGRldmljZXMgZm9yIHRoZSBDUFUgb3IgRFNBIHBvcnRzLCBhcworZGVzY3JpYmVkIGJlZm9yZS4gVGhpcyBtaWdodCBiZSBhbiBpc3N1ZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOgorCistIGluYWJpbGl0eSB0byBmZXRjaCBzd2l0Y2ggQ1BVIHBvcnQgc3RhdGlzdGljcyBjb3VudGVycyB1c2luZyBldGh0b29sLCB3aGljaAorICBjYW4gbWFrZSBpdCBoYXJkZXIgdG8gZGVidWcgTURJTyBzd2l0Y2ggY29ubmVjdGVkIHVzaW5nIHhNSUkgaW50ZXJmYWNlcworCistIGluYWJpbGl0eSB0byBjb25maWd1cmUgdGhlIENQVSBwb3J0IGxpbmsgcGFyYW1ldGVycyBiYXNlZCBvbiB0aGUgRXRoZXJuZXQKKyAgY29udHJvbGxlciBjYXBhYmlsaXRpZXMgYXR0YWNoZWQgdG8gaXQ6IGh0dHA6Ly9wYXRjaHdvcmsub3psYWJzLm9yZy9wYXRjaC81MDk4MDYvCisKKy0gaW5hYmlsaXR5IHRvIGNvbmZpZ3VyZSBzcGVjaWZpYyBWTEFOIElEcyAvIHRydW5raW5nIFZMQU5zIGJldHdlZW4gc3dpdGNoZXMKKyAgd2hlbiB1c2luZyBhIGNhc2NhZGVkIHNldHVwCisKK0NvbW1vbiBwaXRmYWxscyB1c2luZyBEU0Egc2V0dXBzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPbmNlIGEgbWFzdGVyIG5ldHdvcmsgZGV2aWNlIGlzIGNvbmZpZ3VyZWQgdG8gdXNlIERTQSAoZGV2LT5kc2FfcHRyIGJlY29tZXMKK25vbi1OVUxMKSwgYW5kIHRoZSBzd2l0Y2ggYmVoaW5kIGl0IGV4cGVjdHMgYSB0YWdnaW5nIHByb3RvY29sLCB0aGlzIG5ldHdvcmsKK2ludGVyZmFjZSBjYW4gb25seSBleGNsdXNpdmVseSBiZSB1c2VkIGFzIGEgY29uZHVpdCBpbnRlcmZhY2UuIFNlbmRpbmcgcGFja2V0cworZGlyZWN0bHkgdGhyb3VnaCB0aGlzIGludGVyZmFjZSAoZS5nLjogb3BlbmluZyBhIHNvY2tldCB1c2luZyB0aGlzIGludGVyZmFjZSkKK3dpbGwgbm90IG1ha2UgdXMgZ28gdGhyb3VnaCB0aGUgc3dpdGNoIHRhZ2dpbmcgcHJvdG9jb2wgdHJhbnNtaXQgZnVuY3Rpb24sIHNvCit0aGUgRXRoZXJuZXQgc3dpdGNoIG9uIHRoZSBvdGhlciBlbmQsIGV4cGVjdGluZyBhIHRhZyB3aWxsIHR5cGljYWxseSBkcm9wIHRoaXMKK2ZyYW1lLgorCitTbGF2ZSBuZXR3b3JrIGRldmljZXMgY2hlY2sgdGhhdCB0aGUgbWFzdGVyIG5ldHdvcmsgZGV2aWNlIGlzIFVQIGJlZm9yZSBhbGxvd2luZworeW91IHRvIGFkbWluaXN0cmF0aXZlbHkgYnJpbmcgVVAgdGhlc2Ugc2xhdmUgbmV0d29yayBkZXZpY2VzLiBBIGNvbW1vbgorY29uZmlndXJhdGlvbiBtaXN0YWtlIGlzIGZvcmdldHRpbmcgdG8gYnJpbmcgVVAgdGhlIG1hc3RlciBuZXR3b3JrIGRldmljZSBmaXJzdC4KKworSW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgc3Vic3lzdGVtcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitEU0EgY3VycmVudGx5IGxldmVyYWdlcyB0aGUgZm9sbG93aW5nIHN1YnN5c3RlbXM6CisKKy0gTURJTy9QSFkgbGlicmFyeTogZHJpdmVycy9uZXQvcGh5L3BoeS5jLCBtZGlvX2J1cy5jCistIFN3aXRjaGRldjogbmV0L3N3aXRjaGRldi8qCistIERldmljZSBUcmVlIGZvciB2YXJpb3VzIG9mXyogZnVuY3Rpb25zCistIEhXTU9OOiBkcml2ZXJzL2h3bW9uLyoKKworTURJTy9QSFkgbGlicmFyeQorLS0tLS0tLS0tLS0tLS0tLQorCitTbGF2ZSBuZXR3b3JrIGRldmljZXMgZXhwb3NlZCBieSBEU0EgbWF5IG9yIG1heSBub3QgYmUgaW50ZXJmYWNpbmcgd2l0aCBQSFkKK2RldmljZXMgKHN0cnVjdCBwaHlfZGV2aWNlIGFzIGRlZmluZWQgaW4gaW5jbHVkZS9saW51eC9waHkuaCksIGJ1dCB0aGUgRFNBCitzdWJzeXN0ZW0gZGVhbHMgd2l0aCBhbGwgcG9zc2libGUgY29tYmluYXRpb25zOgorCistIGludGVybmFsIFBIWSBkZXZpY2VzLCBidWlsdCBpbnRvIHRoZSBFdGhlcm5ldCBzd2l0Y2ggaGFyZHdhcmUKKy0gZXh0ZXJuYWwgUEhZIGRldmljZXMsIGNvbm5lY3RlZCB2aWEgYW4gaW50ZXJuYWwgb3IgZXh0ZXJuYWwgTURJTyBidXMKKy0gaW50ZXJuYWwgUEhZIGRldmljZXMsIGNvbm5lY3RlZCB2aWEgYW4gaW50ZXJuYWwgTURJTyBidXMKKy0gc3BlY2lhbCwgbm9uLWF1dG9uZWdvdGlhdGVkIG9yIG5vbiBNRElPLW1hbmFnZWQgUEhZIGRldmljZXM6IFNGUHMsIE1vQ0E7IGEuay5hCisgIGZpeGVkIFBIWXMKKworVGhlIFBIWSBjb25maWd1cmF0aW9uIGlzIGRvbmUgYnkgdGhlIGRzYV9zbGF2ZV9waHlfc2V0dXAoKSBmdW5jdGlvbiBhbmQgdGhlCitsb2dpYyBiYXNpY2FsbHkgbG9va3MgbGlrZSB0aGlzOgorCistIGlmIERldmljZSBUcmVlIGlzIHVzZWQsIHRoZSBQSFkgZGV2aWNlIGlzIGxvb2tlZCB1cCB1c2luZyB0aGUgc3RhbmRhcmQKKyAgInBoeS1oYW5kbGUiIHByb3BlcnR5LCBpZiBmb3VuZCwgdGhpcyBQSFkgZGV2aWNlIGlzIGNyZWF0ZWQgYW5kIHJlZ2lzdGVyZWQKKyAgdXNpbmcgb2ZfcGh5X2Nvbm5lY3QoKQorCistIGlmIERldmljZSBUcmVlIGlzIHVzZWQsIGFuZCB0aGUgUEhZIGRldmljZSBpcyAiZml4ZWQiLCB0aGF0IGlzLCBjb25mb3JtcyB0bworICB0aGUgZGVmaW5pdGlvbiBvZiBhIG5vbi1NRElPIG1hbmFnZWQgUEhZIGFzIGRlZmluZWQgaW4KKyAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9maXhlZC1saW5rLnR4dCwgdGhlIFBIWSBpcyByZWdpc3RlcmVkCisgIGFuZCBjb25uZWN0ZWQgdHJhbnNwYXJlbnRseSB1c2luZyB0aGUgc3BlY2lhbCBmaXhlZCBNRElPIGJ1cyBkcml2ZXIKKworLSBmaW5hbGx5LCBpZiB0aGUgUEhZIGlzIGJ1aWx0IGludG8gdGhlIHN3aXRjaCwgYXMgaXMgdmVyeSBjb21tb24gd2l0aAorICBzdGFuZGFsb25lIHN3aXRjaCBwYWNrYWdlcywgdGhlIFBIWSBpcyBwcm9iZWQgdXNpbmcgdGhlIHNsYXZlIE1JSSBidXMgY3JlYXRlZAorICBieSBEU0EKKworCitTV0lUQ0hERVYKKy0tLS0tLS0tLQorCitEU0EgZGlyZWN0bHkgdXRpbGl6ZXMgU1dJVENIREVWIHdoZW4gaW50ZXJmYWNpbmcgd2l0aCB0aGUgYnJpZGdlIGxheWVyLCBhbmQKK21vcmUgc3BlY2lmaWNhbGx5IHdpdGggaXRzIFZMQU4gZmlsdGVyaW5nIHBvcnRpb24gd2hlbiBjb25maWd1cmluZyBWTEFOcyBvbiB0b3AKK29mIHBlci1wb3J0IHNsYXZlIG5ldHdvcmsgZGV2aWNlcy4gU2luY2UgRFNBIHByaW1hcmlseSBkZWFscyB3aXRoCitNRElPLWNvbm5lY3RlZCBzd2l0Y2hlcywgYWx0aG91Z2ggbm90IGV4Y2x1c2l2ZWx5LCBTV0lUQ0hERVYncworcHJlcGFyZS9hYm9ydC9jb21taXQgcGhhc2VzIGFyZSBvZnRlbiBzaW1wbGlmaWVkIGludG8gYSBwcmVwYXJlIHBoYXNlIHdoaWNoCitjaGVja3Mgd2hldGhlciB0aGUgb3BlcmF0aW9uIGlzIHN1cHBvcnRlIGJ5IHRoZSBEU0Egc3dpdGNoIGRyaXZlciwgYW5kIGEgY29tbWl0CitwaGFzZSB3aGljaCBhcHBsaWVzIHRoZSBjaGFuZ2VzLgorCitBcyBvZiB0b2RheSwgdGhlIG9ubHkgU1dJVENIREVWIG9iamVjdHMgc3VwcG9ydGVkIGJ5IERTQSBhcmUgdGhlIEZEQiBhbmQgVkxBTgorb2JqZWN0cy4KKworRGV2aWNlIFRyZWUKKy0tLS0tLS0tLS0tCisKK0RTQSBmZWF0dXJlcyBhIHN0YW5kYXJkaXplZCBiaW5kaW5nIHdoaWNoIGlzIGRvY3VtZW50ZWQgaW4KK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL2RzYS50eHQuIFBIWS9NRElPIGxpYnJhcnkgaGVscGVyCitmdW5jdGlvbnMgc3VjaCBhcyBvZl9nZXRfcGh5X21vZGUoKSwgb2ZfcGh5X2Nvbm5lY3QoKSBhcmUgYWxzbyB1c2VkIHRvIHF1ZXJ5CitwZXItcG9ydCBQSFkgc3BlY2lmaWMgZGV0YWlsczogaW50ZXJmYWNlIGNvbm5lY3Rpb24sIE1ESU8gYnVzIGxvY2F0aW9uIGV0Yy4uCisKK0hXTU9OCistLS0tLQorCitTb21lIHN3aXRjaCBkcml2ZXJzIGZlYXR1cmUgaW50ZXJuYWwgdGVtcGVyYXR1cmUgc2Vuc29ycyB3aGljaCBhcmUgZXhwb3NlZCBhcworcmVndWxhciBIV01PTiBkZXZpY2VzIGluIC9zeXMvY2xhc3MvaHdtb24vLgorCitEcml2ZXIgZGV2ZWxvcG1lbnQKKz09PT09PT09PT09PT09PT09PQorCitEU0Egc3dpdGNoIGRyaXZlcnMgbmVlZCB0byBpbXBsZW1lbnQgYSBkc2Ffc3dpdGNoX2RyaXZlciBzdHJ1Y3R1cmUgd2hpY2ggd2lsbAorY29udGFpbiB0aGUgdmFyaW91cyBtZW1iZXJzIGRlc2NyaWJlZCBiZWxvdy4KKworcmVnaXN0ZXJfc3dpdGNoX2RyaXZlcigpIHJlZ2lzdGVycyB0aGlzIGRzYV9zd2l0Y2hfZHJpdmVyIGluIGl0cyBpbnRlcm5hbCBsaXN0CitvZiBkcml2ZXJzIHRvIHByb2JlIGZvci4gdW5yZWdpc3Rlcl9zd2l0Y2hfZHJpdmVyKCkgZG9lcyB0aGUgZXhhY3Qgb3Bwb3NpdGUuCisKK1VubGVzcyByZXF1ZXN0ZWQgZGlmZmVyZW50bHkgYnkgc2V0dGluZyB0aGUgcHJpdl9zaXplIG1lbWJlciBhY2NvcmRpbmdseSwgRFNBCitkb2VzIG5vdCBhbGxvY2F0ZSBhbnkgZHJpdmVyIHByaXZhdGUgY29udGV4dCBzcGFjZS4KKworU3dpdGNoIGNvbmZpZ3VyYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gcHJpdl9zaXplOiBhZGRpdGlvbmFsIHNpemUgbmVlZGVkIGJ5IHRoZSBzd2l0Y2ggZHJpdmVyIGZvciBpdHMgcHJpdmF0ZSBjb250ZXh0CisKKy0gdGFnX3Byb3RvY29sOiB0aGlzIGlzIHRvIGluZGljYXRlIHdoYXQga2luZCBvZiB0YWdnaW5nIHByb3RvY29sIGlzIHN1cHBvcnRlZCwKKyAgc2hvdWxkIGJlIGEgdmFsaWQgdmFsdWUgZnJvbSB0aGUgZHNhX3RhZ19wcm90b2NvbCBlbnVtCisKKy0gcHJvYmU6IHByb2JlIHJvdXRpbmUgd2hpY2ggd2lsbCBiZSBpbnZva2VkIGJ5IHRoZSBEU0EgcGxhdGZvcm0gZGV2aWNlIHVwb24KKyAgcmVnaXN0cmF0aW9uIHRvIHRlc3QgZm9yIHRoZSBwcmVzZW5jZS9hYnNlbmNlIG9mIGEgc3dpdGNoIGRldmljZS4gRm9yIE1ESU8KKyAgZGV2aWNlcywgaXQgaXMgcmVjb21tZW5kZWQgdG8gaXNzdWUgYSByZWFkIHRvd2FyZHMgaW50ZXJuYWwgcmVnaXN0ZXJzIHVzaW5nCisgIHRoZSBzd2l0Y2ggcHNldWRvLVBIWSBhbmQgcmV0dXJuIHdoZXRoZXIgdGhpcyBpcyBhIHN1cHBvcnRlZCBkZXZpY2UuIEZvciBvdGhlcgorICBidXNlcywgcmV0dXJuIGEgbm9uLU5VTEwgc3RyaW5nCisKKy0gc2V0dXA6IHNldHVwIGZ1bmN0aW9uIGZvciB0aGUgc3dpdGNoLCB0aGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nCisgIHVwIHRoZSBkc2Ffc3dpdGNoX2RyaXZlciBwcml2YXRlIHN0cnVjdHVyZSB3aXRoIGFsbCBpdCBuZWVkczogcmVnaXN0ZXIgbWFwcywKKyAgaW50ZXJydXB0cywgbXV0ZXhlcywgbG9ja3MgZXRjLi4gVGhpcyBmdW5jdGlvbiBpcyBhbHNvIGV4cGVjdGVkIHRvIHByb3Blcmx5CisgIGNvbmZpZ3VyZSB0aGUgc3dpdGNoIHRvIHNlcGFyYXRlIGFsbCBuZXR3b3JrIGludGVyZmFjZXMgZnJvbSBlYWNoIG90aGVyLCB0aGF0CisgIGlzLCB0aGV5IHNob3VsZCBiZSBpc29sYXRlZCBieSB0aGUgc3dpdGNoIGhhcmR3YXJlIGl0c2VsZiwgdHlwaWNhbGx5IGJ5IGNyZWF0aW5nCisgIGEgUG9ydC1iYXNlZCBWTEFOIElEIGZvciBlYWNoIHBvcnQgYW5kIGFsbG93aW5nIG9ubHkgdGhlIENQVSBwb3J0IGFuZCB0aGUKKyAgc3BlY2lmaWMgcG9ydCB0byBiZSBpbiB0aGUgZm9yd2FyZGluZyB2ZWN0b3IuIFBvcnRzIHRoYXQgYXJlIHVudXNlZCBieSB0aGUKKyAgcGxhdGZvcm0gc2hvdWxkIGJlIGRpc2FibGVkLiBQYXN0IHRoaXMgZnVuY3Rpb24sIHRoZSBzd2l0Y2ggaXMgZXhwZWN0ZWQgdG8gYmUKKyAgZnVsbHkgY29uZmlndXJlZCBhbmQgcmVhZHkgdG8gc2VydmUgYW55IGtpbmQgb2YgcmVxdWVzdC4gSXQgaXMgcmVjb21tZW5kZWQKKyAgdG8gaXNzdWUgYSBzb2Z0d2FyZSByZXNldCBvZiB0aGUgc3dpdGNoIGR1cmluZyB0aGlzIHNldHVwIGZ1bmN0aW9uIGluIG9yZGVyIHRvCisgIGF2b2lkIHJlbHlpbmcgb24gd2hhdCBhIHByZXZpb3VzIHNvZnR3YXJlIGFnZW50IHN1Y2ggYXMgYSBib290bG9hZGVyL2Zpcm13YXJlCisgIG1heSBoYXZlIHByZXZpb3VzbHkgY29uZmlndXJlZC4KKworLSBzZXRfYWRkcjogU29tZSBzd2l0Y2hlcyByZXF1aXJlIHRoZSBwcm9ncmFtbWluZyBvZiB0aGUgbWFuYWdlbWVudCBpbnRlcmZhY2UncworICBFdGhlcm5ldCBNQUMgYWRkcmVzcywgc3dpdGNoIGRyaXZlcnMgY2FuIGFsc28gZGlzYWJsZSBhZ2Vpbmcgb2YgTUFDIGFkZHJlc3NlcworICBvbiB0aGUgbWFuYWdlbWVudCBpbnRlcmZhY2UgYW5kICJoYXJkY29kZSIvImZvcmNlIiB0aGlzIE1BQyBhZGRyZXNzIGZvciB0aGUKKyAgQ1BVL21hbmFnZW1lbnQgaW50ZXJmYWNlIGFzIGFuIG9wdGltaXphdGlvbgorCitQSFkgZGV2aWNlcyBhbmQgbGluayBtYW5hZ2VtZW50CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gZ2V0X3BoeV9mbGFnczogU29tZSBzd2l0Y2hlcyBhcmUgaW50ZXJmYWNlZCB0byB2YXJpb3VzIGtpbmRzIG9mIEV0aGVybmV0IFBIWXMsCisgIGlmIHRoZSBQSFkgbGlicmFyeSBQSFkgZHJpdmVyIG5lZWRzIHRvIGtub3cgYWJvdXQgaW5mb3JtYXRpb24gaXQgY2Fubm90IG9idGFpbgorICBvbiBpdHMgb3duIChlLmcuOiBjb21pbmcgZnJvbSBzd2l0Y2ggbWVtb3J5IG1hcHBlZCByZWdpc3RlcnMpLCB0aGlzIGZ1bmN0aW9uCisgIHNob3VsZCByZXR1cm4gYSAzMi1iaXRzIGJpdG1hc2sgb2YgImZsYWdzIiwgdGhhdCBpcyBwcml2YXRlIGJldHdlZW4gdGhlIHN3aXRjaAorICBkcml2ZXIgYW5kIHRoZSBFdGhlcm5ldCBQSFkgZHJpdmVyIGluIGRyaXZlcnMvbmV0L3BoeS8qLgorCistIHBoeV9yZWFkOiBGdW5jdGlvbiBpbnZva2VkIGJ5IHRoZSBEU0Egc2xhdmUgTURJTyBidXMgd2hlbiBhdHRlbXB0aW5nIHRvIHJlYWQKKyAgdGhlIHN3aXRjaCBwb3J0IE1ESU8gcmVnaXN0ZXJzLiBJZiB1bmF2YWlsYWJsZSwgcmV0dXJuIDB4ZmZmZiBmb3IgZWFjaCByZWFkLgorICBGb3IgYnVpbHRpbiBzd2l0Y2ggRXRoZXJuZXQgUEhZcywgdGhpcyBmdW5jdGlvbiBzaG91bGQgYWxsb3cgcmVhZGluZyB0aGUgbGluaworICBzdGF0dXMsIGF1dG8tbmVnb3RpYXRpb24gcmVzdWx0cywgbGluayBwYXJ0bmVyIHBhZ2VzIGV0Yy4uCisKKy0gcGh5X3dyaXRlOiBGdW5jdGlvbiBpbnZva2VkIGJ5IHRoZSBEU0Egc2xhdmUgTURJTyBidXMgd2hlbiBhdHRlbXB0aW5nIHRvIHdyaXRlCisgIHRvIHRoZSBzd2l0Y2ggcG9ydCBNRElPIHJlZ2lzdGVycy4gSWYgdW5hdmFpbGFibGUgcmV0dXJuIGEgbmVnYXRpdmUgZXJyb3IKKyAgY29kZS4KKworLSBwb2xsX2xpbms6IEZ1bmN0aW9uIGludm9rZWQgYnkgRFNBIHRvIHF1ZXJ5IHRoZSBsaW5rIHN0YXRlIG9mIHRoZSBzd2l0Y2gKKyAgYnVpbHRpbiBFdGhlcm5ldCBQSFlzLCBwZXIgcG9ydC4gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGluZworICBuZXRpZl9jYXJyaWVyX3tvbixvZmZ9IHdoZW4gYXBwcm9wcmlhdGUsIGFuZCBjYW4gYmUgdXNlZCB0byBwb2xsIGFsbCBwb3J0cyBpbiBhCisgIHNpbmdsZSBjYWxsLiBFeGVjdXRlcyBmcm9tIHdvcmtxdWV1ZSBjb250ZXh0LgorCistIGFkanVzdF9saW5rOiBGdW5jdGlvbiBpbnZva2VkIGJ5IHRoZSBQSFkgbGlicmFyeSB3aGVuIGEgc2xhdmUgbmV0d29yayBkZXZpY2UKKyAgaXMgYXR0YWNoZWQgdG8gYSBQSFkgZGV2aWNlLiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBhcHByb3ByaWF0ZWx5CisgIGNvbmZpZ3VyaW5nIHRoZSBzd2l0Y2ggcG9ydCBsaW5rIHBhcmFtZXRlcnM6IHNwZWVkLCBkdXBsZXgsIHBhdXNlIGJhc2VkIG9uCisgIHdoYXQgdGhlIHBoeV9kZXZpY2UgaXMgcHJvdmlkaW5nLgorCistIGZpeGVkX2xpbmtfdXBkYXRlOiBGdW5jdGlvbiBpbnZva2VkIGJ5IHRoZSBQSFkgbGlicmFyeSwgYW5kIHNwZWNpZmljYWxseSBieQorICB0aGUgZml4ZWQgUEhZIGRyaXZlciBhc2tpbmcgdGhlIHN3aXRjaCBkcml2ZXIgZm9yIGxpbmsgcGFyYW1ldGVycyB0aGF0IGNvdWxkCisgIG5vdCBiZSBhdXRvLW5lZ290aWF0ZWQsIG9yIG9idGFpbmVkIGJ5IHJlYWRpbmcgdGhlIFBIWSByZWdpc3RlcnMgdGhyb3VnaCBNRElPLgorICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIHNwZWNpZmljIGtpbmRzIG9mIGhhcmR3YXJlIHN1Y2ggYXMgUVNHTUlJLAorICBNb0NBIG9yIG90aGVyIGtpbmRzIG9mIG5vbi1NRElPIG1hbmFnZWQgUEhZcyB3aGVyZSBvdXQgb2YgYmFuZCBsaW5rCisgIGluZm9ybWF0aW9uIGlzIG9idGFpbmVkCisKK0V0aHRvb2wgb3BlcmF0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gZ2V0X3N0cmluZ3M6IGV0aHRvb2wgZnVuY3Rpb24gdXNlZCB0byBxdWVyeSB0aGUgZHJpdmVyJ3Mgc3RyaW5ncywgd2lsbAorICB0eXBpY2FsbHkgcmV0dXJuIHN0YXRpc3RpY3Mgc3RyaW5ncywgcHJpdmF0ZSBmbGFncyBzdHJpbmdzIGV0Yy4KKworLSBnZXRfZXRodG9vbF9zdGF0czogZXRodG9vbCBmdW5jdGlvbiB1c2VkIHRvIHF1ZXJ5IHBlci1wb3J0IHN0YXRpc3RpY3MgYW5kCisgIHJldHVybiB0aGVpciB2YWx1ZXMuIERTQSBvdmVybGF5cyBzbGF2ZSBuZXR3b3JrIGRldmljZXMgZ2VuZXJhbCBzdGF0aXN0aWNzOgorICBSWC9UWCBjb3VudGVycyBmcm9tIHRoZSBuZXR3b3JrIGRldmljZSwgd2l0aCBzd2l0Y2ggZHJpdmVyIHNwZWNpZmljIHN0YXRpc3RpY3MKKyAgcGVyIHBvcnQKKworLSBnZXRfc3NldF9jb3VudDogZXRodG9vbCBmdW5jdGlvbiB1c2VkIHRvIHF1ZXJ5IHRoZSBudW1iZXIgb2Ygc3RhdGlzdGljcyBpdGVtcworCistIGdldF93b2w6IGV0aHRvb2wgZnVuY3Rpb24gdXNlZCB0byBvYnRhaW4gV2FrZS1vbi1MQU4gc2V0dGluZ3MgcGVyLXBvcnQsIHRoaXMKKyAgZnVuY3Rpb24gbWF5LCBmb3IgY2VydGFpbiBpbXBsZW1lbnRhdGlvbnMgYWxzbyBxdWVyeSB0aGUgbWFzdGVyIG5ldHdvcmsgZGV2aWNlCisgIFdha2Utb24tTEFOIHNldHRpbmdzIGlmIHRoaXMgaW50ZXJmYWNlIG5lZWRzIHRvIHBhcnRpY2lwYXRlIGluIFdha2Utb24tTEFOCisKKy0gc2V0X3dvbDogZXRodG9vbCBmdW5jdGlvbiB1c2VkIHRvIGNvbmZpZ3VyZSBXYWtlLW9uLUxBTiBzZXR0aW5ncyBwZXItcG9ydCwKKyAgZGlyZWN0IGNvdW50ZXJwYXJ0IHRvIHNldF93b2wgd2l0aCBzaW1pbGFyIHJlc3RyaWN0aW9ucworCistIHNldF9lZWU6IGV0aHRvb2wgZnVuY3Rpb24gd2hpY2ggaXMgdXNlZCB0byBjb25maWd1cmUgYSBzd2l0Y2ggcG9ydCBFRUUgKEdyZWVuCisgIEV0aGVybmV0KSBzZXR0aW5ncywgY2FuIG9wdGlvbmFsbHkgaW52b2tlIHRoZSBQSFkgbGlicmFyeSB0byBlbmFibGUgRUVFIGF0IHRoZQorICBQSFkgbGV2ZWwgaWYgcmVsZXZhbnQuIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGVuYWJsZSBFRUUgYXQgdGhlIHN3aXRjaCBwb3J0IE1BQworICBjb250cm9sbGVyIGFuZCBkYXRhLXByb2Nlc3NpbmcgbG9naWMKKworLSBnZXRfZWVlOiBldGh0b29sIGZ1bmN0aW9uIHdoaWNoIGlzIHVzZWQgdG8gcXVlcnkgYSBzd2l0Y2ggcG9ydCBFRUUgc2V0dGluZ3MsCisgIHRoaXMgZnVuY3Rpb24gc2hvdWxkIHJldHVybiB0aGUgRUVFIHN0YXRlIG9mIHRoZSBzd2l0Y2ggcG9ydCBNQUMgY29udHJvbGxlcgorICBhbmQgZGF0YS1wcm9jZXNzaW5nIGxvZ2ljIGFzIHdlbGwgYXMgcXVlcnkgdGhlIFBIWSBmb3IgaXRzIGN1cnJlbnRseSBjb25maWd1cmVkCisgIEVFRSBzZXR0aW5ncworCistIGdldF9lZXByb21fbGVuOiBldGh0b29sIGZ1bmN0aW9uIHJldHVybmluZyBmb3IgYSBnaXZlbiBzd2l0Y2ggdGhlIEVFUFJPTQorICBsZW5ndGgvc2l6ZSBpbiBieXRlcworCistIGdldF9lZXByb206IGV0aHRvb2wgZnVuY3Rpb24gcmV0dXJuaW5nIGZvciBhIGdpdmVuIHN3aXRjaCB0aGUgRUVQUk9NIGNvbnRlbnRzCisKKy0gc2V0X2VlcHJvbTogZXRodG9vbCBmdW5jdGlvbiB3cml0aW5nIHNwZWNpZmllZCBkYXRhIHRvIGEgZ2l2ZW4gc3dpdGNoIEVFUFJPTQorCistIGdldF9yZWdzX2xlbjogZXRodG9vbCBmdW5jdGlvbiByZXR1cm5pbmcgdGhlIHJlZ2lzdGVyIGxlbmd0aCBmb3IgYSBnaXZlbgorICBzd2l0Y2gKKworLSBnZXRfcmVnczogZXRodG9vbCBmdW5jdGlvbiByZXR1cm5pbmcgdGhlIEV0aGVybmV0IHN3aXRjaCBpbnRlcm5hbCByZWdpc3RlcgorICBjb250ZW50cy4gVGhpcyBmdW5jdGlvbiBtaWdodCByZXF1aXJlIHVzZXItbGFuZCBjb2RlIGluIGV0aHRvb2wgdG8KKyAgcHJldHR5LXByaW50IHJlZ2lzdGVyIHZhbHVlcyBhbmQgcmVnaXN0ZXJzCisKK1Bvd2VyIG1hbmFnZW1lbnQKKy0tLS0tLS0tLS0tLS0tLS0KKworLSBzdXNwZW5kOiBmdW5jdGlvbiBpbnZva2VkIGJ5IHRoZSBEU0EgcGxhdGZvcm0gZGV2aWNlIHdoZW4gdGhlIHN5c3RlbSBnb2VzIHRvCisgIHN1c3BlbmQsIHNob3VsZCBxdWllc2NlIGFsbCBFdGhlcm5ldCBzd2l0Y2ggYWN0aXZpdGllcywgYnV0IGtlZXAgcG9ydHMKKyAgcGFydGljaXBhdGluZyBpbiBXYWtlLW9uLUxBTiBhY3RpdmUgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIHdha2UtdXAgbG9naWMgaWYKKyAgc3VwcG9ydGVkCisKKy0gcmVzdW1lOiBmdW5jdGlvbiBpbnZva2VkIGJ5IHRoZSBEU0EgcGxhdGZvcm0gZGV2aWNlIHdoZW4gdGhlIHN5c3RlbSByZXN1bWVzLAorICBzaG91bGQgcmVzdW1lIGFsbCBFdGhlcm5ldCBzd2l0Y2ggYWN0aXZpdGllcyBhbmQgcmUtY29uZmlndXJlIHRoZSBzd2l0Y2ggdG8gYmUKKyAgaW4gYSBmdWxseSBhY3RpdmUgc3RhdGUKKworLSBwb3J0X2VuYWJsZTogZnVuY3Rpb24gaW52b2tlZCBieSB0aGUgRFNBIHNsYXZlIG5ldHdvcmsgZGV2aWNlIG5kb19vcGVuCisgIGZ1bmN0aW9uIHdoZW4gYSBwb3J0IGlzIGFkbWluaXN0cmF0aXZlbHkgYnJvdWdodCB1cCwgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUKKyAgZnVsbHkgZW5hYmxpbmcgYSBnaXZlbiBzd2l0Y2ggcG9ydC4gRFNBIHRha2VzIGNhcmUgb2YgbWFya2luZyB0aGUgcG9ydCB3aXRoCisgIEJSX1NUQVRFX0JMT0NLSU5HIGlmIHRoZSBwb3J0IGlzIGEgYnJpZGdlIG1lbWJlciwgb3IgQlJfU1RBVEVfRk9SV0FSRElORyBpZiBpdAorICB3YXMgbm90LCBhbmQgcHJvcGFnYXRpbmcgdGhlc2UgY2hhbmdlcyBkb3duIHRvIHRoZSBoYXJkd2FyZQorCistIHBvcnRfZGlzYWJsZTogZnVuY3Rpb24gaW52b2tlZCBieSB0aGUgRFNBIHNsYXZlIG5ldHdvcmsgZGV2aWNlIG5kb19jbG9zZQorICBmdW5jdGlvbiB3aGVuIGEgcG9ydCBpcyBhZG1pbmlzdHJhdGl2ZWx5IGJyb3VnaHQgZG93biwgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUKKyAgZnVsbHkgZGlzYWJsaW5nIGEgZ2l2ZW4gc3dpdGNoIHBvcnQuIERTQSB0YWtlcyBjYXJlIG9mIG1hcmtpbmcgdGhlIHBvcnQgd2l0aAorICBCUl9TVEFURV9ESVNBQkxFRCBhbmQgcHJvcGFnYXRpbmcgY2hhbmdlcyB0byB0aGUgaGFyZHdhcmUgaWYgdGhpcyBwb3J0IGlzCisgIGRpc2FibGVkIHdoaWxlIGJlaW5nIGEgYnJpZGdlIG1lbWJlcgorCitIYXJkd2FyZSBtb25pdG9yaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXNlIGNhbGxiYWNrcyBhcmUgb25seSBhdmFpbGFibGUgaWYgQ09ORklHX05FVF9EU0FfSFdNT04gaXMgZW5hYmxlZDoKKworLSBnZXRfdGVtcDogdGhpcyBmdW5jdGlvbiBxdWVyaWVzIHRoZSBnaXZlbiBzd2l0Y2ggZm9yIGl0cyB0ZW1wZXJhdHVyZQorCistIGdldF90ZW1wX2xpbWl0OiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHN3aXRjaCBjdXJyZW50IG1heGltdW0gdGVtcGVyYXR1cmUKKyAgbGltaXQKKworLSBzZXRfdGVtcF9saW1pdDogdGhpcyBmdW5jdGlvbiBjb25maWd1cmVzIHRoZSBtYXhpbXVtIHRlbXBlcmF0dXJlIGxpbWl0IGFsbG93ZWQKKworLSBnZXRfdGVtcF9hbGFybTogdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjcml0aWNhbCB0ZW1wZXJhdHVyZSB0aHJlc2hvbGQKKyAgcmV0dXJuaW5nIGFuIGFsYXJtIG5vdGlmaWNhdGlvbgorCitTZWUgRG9jdW1lbnRhdGlvbi9od21vbi9zeXNmcy1pbnRlcmZhY2UgZm9yIGRldGFpbHMuCisKK0JyaWRnZSBsYXllcgorLS0tLS0tLS0tLS0tCisKKy0gcG9ydF9qb2luX2JyaWRnZTogYnJpZGdlIGxheWVyIGZ1bmN0aW9uIGludm9rZWQgd2hlbiBhIGdpdmVuIHN3aXRjaCBwb3J0IGlzCisgIGFkZGVkIHRvIGEgYnJpZGdlLCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBkb2luZyB0aGUgbmVjZXNzYXJ5IGF0IHRoZSBzd2l0Y2gKKyAgbGV2ZWwgdG8gcGVybWl0IHRoZSBqb2luaW5nIHBvcnQgZnJvbSBiZWluZyBhZGRlZCB0byB0aGUgcmVsZXZhbnQgbG9naWNhbAorICBkb21haW4gZm9yIGl0IHRvIGluZ3Jlc3MvZWdyZXNzIHRyYWZmaWMgd2l0aCBvdGhlciBtZW1iZXJzIG9mIHRoZSBicmlkZ2UuIERTQQorICBkb2VzIG5vdGhpbmcgYnV0IGNhbGN1bGF0ZSBhIGJpdG1hc2sgb2Ygc3dpdGNoIHBvcnRzIGN1cnJlbnRseSBtZW1iZXJzIG9mIHRoZQorICBzcGVjaWZpZWQgYnJpZGdlIGJlaW5nIHJlcXVlc3RlZCB0aGUgam9pbgorCistIHBvcnRfbGVhdmVfYnJpZGdlOiBicmlkZ2UgbGF5ZXIgZnVuY3Rpb24gaW52b2tlZCB3aGVuIGEgZ2l2ZW4gc3dpdGNoIHBvcnQgaXMKKyAgcmVtb3ZlZCBmcm9tIGEgYnJpZGdlLCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBkb2luZyB0aGUgbmVjZXNzYXJ5IGF0IHRoZQorICBzd2l0Y2ggbGV2ZWwgdG8gZGVueSB0aGUgbGVhdmluZyBwb3J0IGZyb20gaW5ncmVzcy9lZ3Jlc3MgdHJhZmZpYyBmcm9tIHRoZQorICByZW1haW5pbmcgYnJpZGdlIG1lbWJlcnMuIFdoZW4gdGhlIHBvcnQgbGVhdmVzIHRoZSBicmlkZ2UsIGl0IHNob3VsZCBiZSBhZ2VkCisgIG91dCBhdCB0aGUgc3dpdGNoIGhhcmR3YXJlIGZvciB0aGUgc3dpdGNoIHRvIChyZSkgbGVhcm4gTUFDIGFkZHJlc3NlcyBiZWhpbmQKKyAgdGhpcyBwb3J0LiBEU0EgY2FsY3VsYXRlcyB0aGUgYml0bWFzayBvZiBwb3J0cyBzdGlsbCBtZW1iZXJzIG9mIHRoZSBicmlkZ2UKKyAgYmVpbmcgbGVmdAorCistIHBvcnRfc3RwX3VwZGF0ZTogYnJpZGdlIGxheWVyIGZ1bmN0aW9uIGludm9rZWQgd2hlbiBhIGdpdmVuIHN3aXRjaCBwb3J0IFNUUAorICBzdGF0ZSBpcyBjb21wdXRlZCBieSB0aGUgYnJpZGdlIGxheWVyIGFuZCBzaG91bGQgYmUgcHJvcGFnYXRlZCB0byBzd2l0Y2gKKyAgaGFyZHdhcmUgdG8gZm9yd2FyZC9ibG9jay9sZWFybiB0cmFmZmljLiBUaGUgc3dpdGNoIGRyaXZlciBpcyByZXNwb25zaWJsZSBmb3IKKyAgY29tcHV0aW5nIGEgU1RQIHN0YXRlIGNoYW5nZSBiYXNlZCBvbiBjdXJyZW50IGFuZCBhc2tlZCBwYXJhbWV0ZXJzIGFuZCBwZXJmb3JtCisgIHRoZSByZWxldmFudCBhZ2VpbmcgYmFzZWQgb24gdGhlIGludGVyc2VjdGlvbiByZXN1bHRzCisKK0JyaWRnZSBWTEFOIGZpbHRlcmluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gcG9ydF9wdmlkX2dldDogYnJpZGdlIGxheWVyIGZ1bmN0aW9uIGludm9rZWQgd2hlbiBhIFBvcnQtYmFzZWQgVkxBTiBJRCBpcworICBxdWVyaWVkIGZvciB0aGUgZ2l2ZW4gc3dpdGNoIHBvcnQKKworLSBwb3J0X3B2aWRfc2V0OiBicmlkZ2UgbGF5ZXIgZnVuY3Rpb24gaW52b2tlZCB3aGVuIGEgUG9ydC1iYXNlZCBWTEFOIElEIG5lZWRzCisgIHRvIGJlIGNvbmZpZ3VyZWQgb24gdGhlIGdpdmVuIHN3aXRjaCBwb3J0CisKKy0gcG9ydF92bGFuX2FkZDogYnJpZGdlIGxheWVyIGZ1bmN0aW9uIGludm9rZWQgd2hlbiBhIFZMQU4gaXMgY29uZmlndXJlZAorICAodGFnZ2VkIG9yIHVudGFnZ2VkKSBmb3IgdGhlIGdpdmVuIHN3aXRjaCBwb3J0CisKKy0gcG9ydF92bGFuX2RlbDogYnJpZGdlIGxheWVyIGZ1bmN0aW9uIGludm9rZWQgd2hlbiBhIFZMQU4gaXMgcmVtb3ZlZCBmcm9tIHRoZQorICBnaXZlbiBzd2l0Y2ggcG9ydAorCistIHZsYW5fZ2V0bmV4dDogYnJpZGdlIGxheWVyIGZ1bmN0aW9uIGludm9rZWQgdG8gcXVlcnkgdGhlIG5leHQgY29uZmlndXJlZCBWTEFOCisgIGluIHRoZSBzd2l0Y2gsIGkuZS4gcmV0dXJucyB0aGUgYml0bWFwcyBvZiBtZW1iZXJzIGFuZCB1bnRhZ2dlZCBwb3J0cworCistIHBvcnRfZmRiX2FkZDogYnJpZGdlIGxheWVyIGZ1bmN0aW9uIGludm9rZWQgd2hlbiB0aGUgYnJpZGdlIHdhbnRzIHRvIGluc3RhbGwgYQorICBGb3J3YXJkaW5nIERhdGFiYXNlIGVudHJ5LCB0aGUgc3dpdGNoIGhhcmR3YXJlIHNob3VsZCBiZSBwcm9ncmFtbWVkIHdpdGggdGhlCisgIHNwZWNpZmllZCBhZGRyZXNzIGluIHRoZSBzcGVjaWZpZWQgVkxBTiBJZCBpbiB0aGUgZm9yd2FyZGluZyBkYXRhYmFzZQorICBhc3NvY2lhdGVkIHdpdGggdGhpcyBWTEFOIElECisKK05vdGU6IFZMQU4gSUQgMCBjb3JyZXNwb25kcyB0byB0aGUgcG9ydCBwcml2YXRlIGRhdGFiYXNlLCB3aGljaCwgaW4gdGhlIGNvbnRleHQKK29mIERTQSwgd291bGQgYmUgdGhlIGl0cyBwb3J0LWJhc2VkIFZMQU4sIHVzZWQgYnkgdGhlIGFzc29jaWF0ZWQgYnJpZGdlIGRldmljZS4KKworLSBwb3J0X2ZkYl9kZWw6IGJyaWRnZSBsYXllciBmdW5jdGlvbiBpbnZva2VkIHdoZW4gdGhlIGJyaWRnZSB3YW50cyB0byByZW1vdmUgYQorICBGb3J3YXJkaW5nIERhdGFiYXNlIGVudHJ5LCB0aGUgc3dpdGNoIGhhcmR3YXJlIHNob3VsZCBiZSBwcm9ncmFtbWVkIHRvIGRlbGV0ZQorICB0aGUgc3BlY2lmaWVkIE1BQyBhZGRyZXNzIGZyb20gdGhlIHNwZWNpZmllZCBWTEFOIElEIGlmIGl0IHdhcyBtYXBwZWQgaW50bworICB0aGlzIHBvcnQgZm9yd2FyZGluZyBkYXRhYmFzZQorCitUT0RPCis9PT09CisKK1RoZSBwbGF0Zm9ybSBkZXZpY2UgcHJvYmxlbQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEU0EgaXMgY3VycmVudGx5IGltcGxlbWVudGVkIGFzIGEgcGxhdGZvcm0gZGV2aWNlIGRyaXZlciB3aGljaCBpcyBmYXIgZnJvbSBpZGVhbAorYXMgd2FzIGRpc2N1c3NlZCBpbiB0aGlzIHRocmVhZDoKKworaHR0cDovL3Blcm1hbGluay5nbWFuZS5vcmcvZ21hbmUubGludXgubmV0d29yay8zMjk4NDgKKworVGhpcyBiYXNpY2FsbHkgcHJldmVudHMgdGhlIGRldmljZSBkcml2ZXIgbW9kZWwgdG8gYmUgcHJvcGVybHkgdXNlZCBhbmQgYXBwbGllZCwKK2FuZCBzdXBwb3J0IG5vbi1NRElPLCBub24tTU1JTyBFdGhlcm5ldCBjb25uZWN0ZWQgc3dpdGNoZXMuCisKK0Fub3RoZXIgcHJvYmxlbSB3aXRoIHRoZSBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyIGFwcHJvYWNoIGlzIHRoYXQgaXQgcHJldmVudHMgdGhlCit1c2Ugb2YgYSBtb2R1bGFyIHN3aXRjaCBkcml2ZXJzIGJ1aWxkIGR1ZSB0byBhIGNpcmN1bGFyIGRlcGVuZGVuY3ksIGlsbHVzdHJhdGVkCitoZXJlOgorCitodHRwOi8vY29tbWVudHMuZ21hbmUub3JnL2dtYW5lLmxpbnV4Lm5ldHdvcmsvMzQ1ODAzCisKK0F0dGVtcHRzIG9mIHJld29ya2luZyB0aGlzIGhhcyBiZWVuIGRvbmUgaGVyZToKKworaHR0cHM6Ly9sd24ubmV0L0FydGljbGVzLzY0MzE0OS8KKworTWFraW5nIFNXSVRDSERFViBhbmQgRFNBIGNvbnZlcmdlIHRvd2FyZHMgYW4gdW5pZmllZCBjb2RlYmFzZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTV0lUQ0hERVYgcHJvcGVybHkgdGFrZXMgY2FyZSBvZiBhYnN0cmFjdGluZyB0aGUgbmV0d29ya2luZyBzdGFjayB3aXRoIG9mZmxvYWQKK2NhcGFibGUgaGFyZHdhcmUsIGJ1dCBkb2VzIG5vdCBlbmZvcmNlIGEgc3RyaWN0IHN3aXRjaCBkZXZpY2UgZHJpdmVyIG1vZGVsLiBPbgordGhlIG90aGVyIERTQSBlbmZvcmNlcyBhIGZhaXJseSBzdHJpY3QgZGV2aWNlIGRyaXZlciBtb2RlbCwgYW5kIGRlYWxzIHdpdGggbW9zdAorb2YgdGhlIHN3aXRjaCBzcGVjaWZpYy4gQXQgc29tZSBwb2ludCB3ZSBzaG91bGQgZW52aXNpb24gYSBtZXJnZXIgYmV0d2VlbiB0aGVzZQordHdvIHN1YnN5c3RlbXMgYW5kIGdldCB0aGUgYmVzdCBvZiBib3RoIHdvcmxkcy4KKworT3RoZXIgaGFuZ2luZyBmcnVpdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gbWFraW5nIHRoZSBudW1iZXIgb2YgcG9ydHMgZnVsbHkgZHluYW1pYyBhbmQgbm90IGRlcGVuZGVudCBvbiBEU0FfTUFYX1BPUlRTCistIGFsbG93aW5nIG1vcmUgdGhhbiBvbmUgQ1BVL21hbmFnZW1lbnQgaW50ZXJmYWNlOgorICBodHRwOi8vY29tbWVudHMuZ21hbmUub3JnL2dtYW5lLmxpbnV4Lm5ldHdvcmsvMzY1NjU3CistIHBvcnRpbmcgbW9yZSBkcml2ZXJzIGZyb20gb3RoZXIgdmVuZG9yczoKKyAgaHR0cDovL2NvbW1lbnRzLmdtYW5lLm9yZy9nbWFuZS5saW51eC5uZXR3b3JrLzM2NTUxMApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2UxMDAudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2UxMDAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyZGRiZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZTEwMC50eHQKQEAgLTAsMCArMSwxODMgQEAKK0xpbnV4KiBCYXNlIERyaXZlciBmb3IgdGhlIEludGVsKFIpIFBSTy8xMDAgRmFtaWx5IG9mIEFkYXB0ZXJzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitNYXJjaCAxNSwgMjAxMQorCitDb250ZW50cworPT09PT09PT0KKworLSBJbiBUaGlzIFJlbGVhc2UKKy0gSWRlbnRpZnlpbmcgWW91ciBBZGFwdGVyCistIEJ1aWxkaW5nIGFuZCBJbnN0YWxsYXRpb24KKy0gRHJpdmVyIENvbmZpZ3VyYXRpb24gUGFyYW1ldGVycworLSBBZGRpdGlvbmFsIENvbmZpZ3VyYXRpb25zCistIEtub3duIElzc3VlcworLSBTdXBwb3J0CisKKworSW4gVGhpcyBSZWxlYXNlCis9PT09PT09PT09PT09PT0KKworVGhpcyBmaWxlIGRlc2NyaWJlcyB0aGUgTGludXgqIEJhc2UgRHJpdmVyIGZvciB0aGUgSW50ZWwoUikgUFJPLzEwMCBGYW1pbHkgb2YKK0FkYXB0ZXJzLiBUaGlzIGRyaXZlciBpbmNsdWRlcyBzdXBwb3J0IGZvciBJdGFuaXVtKFIpMi1iYXNlZCBzeXN0ZW1zLgorCitGb3IgcXVlc3Rpb25zIHJlbGF0ZWQgdG8gaGFyZHdhcmUgcmVxdWlyZW1lbnRzLCByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbgorc3VwcGxpZWQgd2l0aCB5b3VyIEludGVsIFBSTy8xMDAgYWRhcHRlci4KKworVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgbm93IGF2YWlsYWJsZSBpbiBzdXBwb3J0ZWQga2VybmVsczoKKyAtIE5hdGl2ZSBWTEFOcworIC0gQ2hhbm5lbCBCb25kaW5nICh0ZWFtaW5nKQorIC0gU05NUAorCitDaGFubmVsIEJvbmRpbmcgZG9jdW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgaW4gdGhlIExpbnV4IGtlcm5lbCBzb3VyY2U6CisvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2JvbmRpbmcudHh0CisKKworSWRlbnRpZnlpbmcgWW91ciBBZGFwdGVyCis9PT09PT09PT09PT09PT09PT09PT09PT0KKworRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGlkZW50aWZ5IHlvdXIgYWRhcHRlciwgZ28gdG8gdGhlIEFkYXB0ZXIgJgorRHJpdmVyIElEIEd1aWRlIGF0OgorCisgIGh0dHA6Ly9zdXBwb3J0LmludGVsLmNvbS9zdXBwb3J0L25ldHdvcmsvYWRhcHRlci9wcm8xMDAvMjEzOTcuaHRtCisKK0ZvciB0aGUgbGF0ZXN0IEludGVsIG5ldHdvcmsgZHJpdmVycyBmb3IgTGludXgsIHJlZmVyIHRvIHRoZSBmb2xsb3dpbmcKK3dlYnNpdGUuIEluIHRoZSBzZWFyY2ggZmllbGQsIGVudGVyIHlvdXIgYWRhcHRlciBuYW1lIG9yIHR5cGUsIG9yIHVzZSB0aGUKK25ldHdvcmtpbmcgbGluayBvbiB0aGUgbGVmdCB0byBzZWFyY2ggZm9yIHlvdXIgYWRhcHRlcjoKKworICBodHRwOi8vZG93bmxvYWRmaW5kZXIuaW50ZWwuY29tL3NjcmlwdHMtZGYvc3VwcG9ydF9pbnRlbC5hc3AKKworRHJpdmVyIENvbmZpZ3VyYXRpb24gUGFyYW1ldGVycworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgZWFjaCBwYXJhbWV0ZXIgaXMgZ2VuZXJhbGx5IHRoZSByZWNvbW1lbmRlZCBzZXR0aW5nLAordW5sZXNzIG90aGVyd2lzZSBub3RlZC4KKworUnggRGVzY3JpcHRvcnM6IE51bWJlciBvZiByZWNlaXZlIGRlc2NyaXB0b3JzLiBBIHJlY2VpdmUgZGVzY3JpcHRvciBpcyBhIGRhdGEKKyAgIHN0cnVjdHVyZSB0aGF0IGRlc2NyaWJlcyBhIHJlY2VpdmUgYnVmZmVyIGFuZCBpdHMgYXR0cmlidXRlcyB0byB0aGUgbmV0d29yaworICAgY29udHJvbGxlci4gVGhlIGRhdGEgaW4gdGhlIGRlc2NyaXB0b3IgaXMgdXNlZCBieSB0aGUgY29udHJvbGxlciB0byB3cml0ZQorICAgZGF0YSBmcm9tIHRoZSBjb250cm9sbGVyIHRvIGhvc3QgbWVtb3J5LiBJbiB0aGUgMy54LnggZHJpdmVyIHRoZSB2YWxpZCByYW5nZQorICAgZm9yIHRoaXMgcGFyYW1ldGVyIGlzIDY0LTI1Ni4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgNjQuIFRoaXMgcGFyYW1ldGVyIGNhbiBiZQorICAgY2hhbmdlZCB1c2luZyB0aGUgY29tbWFuZDoKKworICAgZXRodG9vbCAtRyBldGg/IHJ4IG4sIHdoZXJlIG4gaXMgdGhlIG51bWJlciBvZiBkZXNpcmVkIHJ4IGRlc2NyaXB0b3JzLgorCitUeCBEZXNjcmlwdG9yczogTnVtYmVyIG9mIHRyYW5zbWl0IGRlc2NyaXB0b3JzLiBBIHRyYW5zbWl0IGRlc2NyaXB0b3IgaXMgYSBkYXRhCisgICBzdHJ1Y3R1cmUgdGhhdCBkZXNjcmliZXMgYSB0cmFuc21pdCBidWZmZXIgYW5kIGl0cyBhdHRyaWJ1dGVzIHRvIHRoZSBuZXR3b3JrCisgICBjb250cm9sbGVyLiBUaGUgZGF0YSBpbiB0aGUgZGVzY3JpcHRvciBpcyB1c2VkIGJ5IHRoZSBjb250cm9sbGVyIHRvIHJlYWQKKyAgIGRhdGEgZnJvbSB0aGUgaG9zdCBtZW1vcnkgdG8gdGhlIGNvbnRyb2xsZXIuIEluIHRoZSAzLngueCBkcml2ZXIgdGhlIHZhbGlkCisgICByYW5nZSBmb3IgdGhpcyBwYXJhbWV0ZXIgaXMgNjQtMjU2LiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA2NC4gVGhpcyBwYXJhbWV0ZXIKKyAgIGNhbiBiZSBjaGFuZ2VkIHVzaW5nIHRoZSBjb21tYW5kOgorCisgICBldGh0b29sIC1HIGV0aD8gdHggbiwgd2hlcmUgbiBpcyB0aGUgbnVtYmVyIG9mIGRlc2lyZWQgdHggZGVzY3JpcHRvcnMuCisKK1NwZWVkL0R1cGxleDogVGhlIGRyaXZlciBhdXRvLW5lZ290aWF0ZXMgdGhlIGxpbmsgc3BlZWQgYW5kIGR1cGxleCBzZXR0aW5ncyBieQorICAgZGVmYXVsdC4gVGhlIGV0aHRvb2wgdXRpbGl0eSBjYW4gYmUgdXNlZCBhcyBmb2xsb3dzIHRvIGZvcmNlIHNwZWVkL2R1cGxleC4KKworICAgZXRodG9vbCAtcyBldGg/ICBhdXRvbmVnIG9mZiBzcGVlZCB7MTB8MTAwfSBkdXBsZXgge2Z1bGx8aGFsZn0KKworICAgTk9URTogc2V0dGluZyB0aGUgc3BlZWQvZHVwbGV4IHRvIGluY29ycmVjdCB2YWx1ZXMgd2lsbCBjYXVzZSB0aGUgbGluayB0bworICAgZmFpbC4KKworRXZlbnQgTG9nIE1lc3NhZ2UgTGV2ZWw6ICBUaGUgZHJpdmVyIHVzZXMgdGhlIG1lc3NhZ2UgbGV2ZWwgZmxhZyB0byBsb2cgZXZlbnRzCisgICB0byBzeXNsb2cuIFRoZSBtZXNzYWdlIGxldmVsIGNhbiBiZSBzZXQgYXQgZHJpdmVyIGxvYWQgdGltZS4gSXQgY2FuIGFsc28gYmUKKyAgIHNldCB1c2luZyB0aGUgY29tbWFuZDoKKworICAgZXRodG9vbCAtcyBldGg/IG1zZ2x2bCBuCisKKworQWRkaXRpb25hbCBDb25maWd1cmF0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PQorCisgIENvbmZpZ3VyaW5nIHRoZSBEcml2ZXIgb24gRGlmZmVyZW50IERpc3RyaWJ1dGlvbnMKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIENvbmZpZ3VyaW5nIGEgbmV0d29yayBkcml2ZXIgdG8gbG9hZCBwcm9wZXJseSB3aGVuIHRoZSBzeXN0ZW0gaXMgc3RhcnRlZCBpcworICBkaXN0cmlidXRpb24gZGVwZW5kZW50LiBUeXBpY2FsbHksIHRoZSBjb25maWd1cmF0aW9uIHByb2Nlc3MgaW52b2x2ZXMgYWRkaW5nCisgIGFuIGFsaWFzIGxpbmUgdG8gL2V0Yy9tb2Rwcm9iZS5kLyouY29uZiBhcyB3ZWxsIGFzIGVkaXRpbmcgb3RoZXIgc3lzdGVtCisgIHN0YXJ0dXAgc2NyaXB0cyBhbmQvb3IgY29uZmlndXJhdGlvbiBmaWxlcy4gIE1hbnkgcG9wdWxhciBMaW51eAorICBkaXN0cmlidXRpb25zIHNoaXAgd2l0aCB0b29scyB0byBtYWtlIHRoZXNlIGNoYW5nZXMgZm9yIHlvdS4gVG8gbGVhcm4gdGhlCisgIHByb3BlciB3YXkgdG8gY29uZmlndXJlIGEgbmV0d29yayBkZXZpY2UgZm9yIHlvdXIgc3lzdGVtLCByZWZlciB0byB5b3VyCisgIGRpc3RyaWJ1dGlvbiBkb2N1bWVudGF0aW9uLiAgSWYgZHVyaW5nIHRoaXMgcHJvY2VzcyB5b3UgYXJlIGFza2VkIGZvciB0aGUKKyAgZHJpdmVyIG9yIG1vZHVsZSBuYW1lLCB0aGUgbmFtZSBmb3IgdGhlIExpbnV4IEJhc2UgRHJpdmVyIGZvciB0aGUgSW50ZWwKKyAgUFJPLzEwMCBGYW1pbHkgb2YgQWRhcHRlcnMgaXMgZTEwMC4KKworICBBcyBhbiBleGFtcGxlLCBpZiB5b3UgaW5zdGFsbCB0aGUgZTEwMCBkcml2ZXIgZm9yIHR3byBQUk8vMTAwIGFkYXB0ZXJzCisgIChldGgwIGFuZCBldGgxKSwgYWRkIHRoZSBmb2xsb3dpbmcgdG8gYSBjb25maWd1cmF0aW9uIGZpbGUgaW4gL2V0Yy9tb2Rwcm9iZS5kLworCisgICAgICAgYWxpYXMgZXRoMCBlMTAwCisgICAgICAgYWxpYXMgZXRoMSBlMTAwCisKKyAgVmlld2luZyBMaW5rIE1lc3NhZ2VzCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBJbiBvcmRlciB0byBzZWUgbGluayBtZXNzYWdlcyBhbmQgb3RoZXIgSW50ZWwgZHJpdmVyIGluZm9ybWF0aW9uIG9uIHlvdXIKKyAgY29uc29sZSwgeW91IG11c3Qgc2V0IHRoZSBkbWVzZyBsZXZlbCB1cCB0byBzaXguIFRoaXMgY2FuIGJlIGRvbmUgYnkKKyAgZW50ZXJpbmcgdGhlIGZvbGxvd2luZyBvbiB0aGUgY29tbWFuZCBsaW5lIGJlZm9yZSBsb2FkaW5nIHRoZSBlMTAwIGRyaXZlcjoKKworICAgICAgIGRtZXNnIC1uIDgKKworICBJZiB5b3Ugd2lzaCB0byBzZWUgYWxsIG1lc3NhZ2VzIGlzc3VlZCBieSB0aGUgZHJpdmVyLCBpbmNsdWRpbmcgZGVidWcKKyAgbWVzc2FnZXMsIHNldCB0aGUgZG1lc2cgbGV2ZWwgdG8gZWlnaHQuCisKKyAgTk9URTogVGhpcyBzZXR0aW5nIGlzIG5vdCBzYXZlZCBhY3Jvc3MgcmVib290cy4KKworCisgIGV0aHRvb2wKKyAgLS0tLS0tLQorCisgIFRoZSBkcml2ZXIgdXRpbGl6ZXMgdGhlIGV0aHRvb2wgaW50ZXJmYWNlIGZvciBkcml2ZXIgY29uZmlndXJhdGlvbiBhbmQKKyAgZGlhZ25vc3RpY3MsIGFzIHdlbGwgYXMgZGlzcGxheWluZyBzdGF0aXN0aWNhbCBpbmZvcm1hdGlvbi4gIFRoZSBldGh0b29sCisgIHZlcnNpb24gMS42IG9yIGxhdGVyIGlzIHJlcXVpcmVkIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkuCisKKyAgVGhlIGxhdGVzdCByZWxlYXNlIG9mIGV0aHRvb2wgY2FuIGJlIGZvdW5kIGZyb20KKyAgaHR0cDovL2Z0cC5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvCisKKyAgRW5hYmxpbmcgV2FrZSBvbiBMQU4qIChXb0wpCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBXb0wgaXMgcHJvdmlkZWQgdGhyb3VnaCB0aGUgZXRodG9vbCogdXRpbGl0eS4gIEZvciBpbnN0cnVjdGlvbnMgb24gZW5hYmxpbmcKKyAgV29MIHdpdGggZXRodG9vbCwgcmVmZXIgdG8gdGhlIGV0aHRvb2wgbWFuIHBhZ2UuCisKKyAgV29MIHdpbGwgYmUgZW5hYmxlZCBvbiB0aGUgc3lzdGVtIGR1cmluZyB0aGUgbmV4dCBzaHV0IGRvd24gb3IgcmVib290LiBGb3IKKyAgdGhpcyBkcml2ZXIgdmVyc2lvbiwgaW4gb3JkZXIgdG8gZW5hYmxlIFdvTCwgdGhlIGUxMDAgZHJpdmVyIG11c3QgYmUKKyAgbG9hZGVkIHdoZW4gc2h1dHRpbmcgZG93biBvciByZWJvb3RpbmcgdGhlIHN5c3RlbS4KKworICBOQVBJCisgIC0tLS0KKworICBOQVBJIChSeCBwb2xsaW5nIG1vZGUpIGlzIHN1cHBvcnRlZCBpbiB0aGUgZTEwMCBkcml2ZXIuCisKKyAgU2VlIHd3dy5jeWJlcnVzLmNhL35oYWRpL3VzZW5peC1wYXBlci50Z3ogZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gTkFQSS4KKworICBNdWx0aXBsZSBJbnRlcmZhY2VzIG9uIFNhbWUgRXRoZXJuZXQgQnJvYWRjYXN0IE5ldHdvcmsKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgRHVlIHRvIHRoZSBkZWZhdWx0IEFSUCBiZWhhdmlvciBvbiBMaW51eCwgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGhhdmUKKyAgb25lIHN5c3RlbSBvbiB0d28gSVAgbmV0d29ya3MgaW4gdGhlIHNhbWUgRXRoZXJuZXQgYnJvYWRjYXN0IGRvbWFpbgorICAobm9uLXBhcnRpdGlvbmVkIHN3aXRjaCkgYmVoYXZlIGFzIGV4cGVjdGVkLiBBbGwgRXRoZXJuZXQgaW50ZXJmYWNlcworICB3aWxsIHJlc3BvbmQgdG8gSVAgdHJhZmZpYyBmb3IgYW55IElQIGFkZHJlc3MgYXNzaWduZWQgdG8gdGhlIHN5c3RlbS4KKyAgVGhpcyByZXN1bHRzIGluIHVuYmFsYW5jZWQgcmVjZWl2ZSB0cmFmZmljLgorCisgIElmIHlvdSBoYXZlIG11bHRpcGxlIGludGVyZmFjZXMgaW4gYSBzZXJ2ZXIsIGVpdGhlciB0dXJuIG9uIEFSUAorICBmaWx0ZXJpbmcgYnkKKworICAoMSkgZW50ZXJpbmc6IGVjaG8gMSA+IC9wcm9jL3N5cy9uZXQvaXB2NC9jb25mL2FsbC9hcnBfZmlsdGVyCisgICAgICAodGhpcyBvbmx5IHdvcmtzIGlmIHlvdXIga2VybmVsJ3MgdmVyc2lvbiBpcyBoaWdoZXIgdGhhbiAyLjQuNSksIG9yCisKKyAgKDIpIGluc3RhbGxpbmcgdGhlIGludGVyZmFjZXMgaW4gc2VwYXJhdGUgYnJvYWRjYXN0IGRvbWFpbnMgKGVpdGhlcgorICAgICAgaW4gZGlmZmVyZW50IHN3aXRjaGVzIG9yIGluIGEgc3dpdGNoIHBhcnRpdGlvbmVkIHRvIFZMQU5zKS4KKworCitTdXBwb3J0Cis9PT09PT09CisKK0ZvciBnZW5lcmFsIGluZm9ybWF0aW9uLCBnbyB0byB0aGUgSW50ZWwgc3VwcG9ydCB3ZWJzaXRlIGF0OgorCisgICAgaHR0cDovL3N1cHBvcnQuaW50ZWwuY29tCisKKyAgICBvciB0aGUgSW50ZWwgV2lyZWQgTmV0d29ya2luZyBwcm9qZWN0IGhvc3RlZCBieSBTb3VyY2Vmb3JnZSBhdDoKKworICAgIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZTEwMDAKKworSWYgYW4gaXNzdWUgaXMgaWRlbnRpZmllZCB3aXRoIHRoZSByZWxlYXNlZCBzb3VyY2UgY29kZSBvbiB0aGUgc3VwcG9ydGVkCitrZXJuZWwgd2l0aCBhIHN1cHBvcnRlZCBhZGFwdGVyLCBlbWFpbCB0aGUgc3BlY2lmaWMgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUKK2lzc3VlIHRvIGUxMDAwLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9lMTAwMC50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZTEwMDAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzN2IyMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZTEwMDAudHh0CkBAIC0wLDAgKzEsNDYxIEBACitMaW51eCogQmFzZSBEcml2ZXIgZm9yIEludGVsKFIpIEV0aGVybmV0IE5ldHdvcmsgQ29ubmVjdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW50ZWwgR2lnYWJpdCBMaW51eCBkcml2ZXIuCitDb3B5cmlnaHQoYykgMTk5OSAtIDIwMTMgSW50ZWwgQ29ycG9yYXRpb24uCisKK0NvbnRlbnRzCis9PT09PT09PQorCistIElkZW50aWZ5aW5nIFlvdXIgQWRhcHRlcgorLSBDb21tYW5kIExpbmUgUGFyYW1ldGVycworLSBTcGVlZCBhbmQgRHVwbGV4IENvbmZpZ3VyYXRpb24KKy0gQWRkaXRpb25hbCBDb25maWd1cmF0aW9ucworLSBTdXBwb3J0CisKK0lkZW50aWZ5aW5nIFlvdXIgQWRhcHRlcgorPT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBpZGVudGlmeSB5b3VyIGFkYXB0ZXIsIGdvIHRvIHRoZSBBZGFwdGVyICYKK0RyaXZlciBJRCBHdWlkZSBhdDoKKworICAgIGh0dHA6Ly9zdXBwb3J0LmludGVsLmNvbS9zdXBwb3J0L2dvL25ldHdvcmsvYWRhcHRlci9pZGd1aWRlLmh0bQorCitGb3IgdGhlIGxhdGVzdCBJbnRlbCBuZXR3b3JrIGRyaXZlcnMgZm9yIExpbnV4LCByZWZlciB0byB0aGUgZm9sbG93aW5nCit3ZWJzaXRlLiAgSW4gdGhlIHNlYXJjaCBmaWVsZCwgZW50ZXIgeW91ciBhZGFwdGVyIG5hbWUgb3IgdHlwZSwgb3IgdXNlIHRoZQorbmV0d29ya2luZyBsaW5rIG9uIHRoZSBsZWZ0IHRvIHNlYXJjaCBmb3IgeW91ciBhZGFwdGVyOgorCisgICAgaHR0cDovL3N1cHBvcnQuaW50ZWwuY29tL3N1cHBvcnQvZ28vbmV0d29yay9hZGFwdGVyL2hvbWUuaHRtCisKK0NvbW1hbmQgTGluZSBQYXJhbWV0ZXJzCis9PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgZWFjaCBwYXJhbWV0ZXIgaXMgZ2VuZXJhbGx5IHRoZSByZWNvbW1lbmRlZCBzZXR0aW5nLAordW5sZXNzIG90aGVyd2lzZSBub3RlZC4KKworTk9URVM6ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQXV0b05lZywgRHVwbGV4LCBhbmQgU3BlZWQKKyAgICAgICAgcGFyYW1ldGVycywgc2VlIHRoZSAiU3BlZWQgYW5kIER1cGxleCBDb25maWd1cmF0aW9uIiBzZWN0aW9uIGluCisgICAgICAgIHRoaXMgZG9jdW1lbnQuCisKKyAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEludGVycnVwdFRocm90dGxlUmF0ZSwKKyAgICAgICAgUnhJbnREZWxheSwgVHhJbnREZWxheSwgUnhBYnNJbnREZWxheSwgYW5kIFR4QWJzSW50RGVsYXkKKyAgICAgICAgcGFyYW1ldGVycywgc2VlIHRoZSBhcHBsaWNhdGlvbiBub3RlIGF0OgorICAgICAgICBodHRwOi8vd3d3LmludGVsLmNvbS9kZXNpZ24vbmV0d29yay9hcHBsbm90cy9hcDQ1MC5odG0KKworQXV0b05lZworLS0tLS0tLQorKFN1cHBvcnRlZCBvbmx5IG9uIGFkYXB0ZXJzIHdpdGggY29wcGVyIGNvbm5lY3Rpb25zKQorVmFsaWQgUmFuZ2U6ICAgMHgwMS0weDBGLCAweDIwLTB4MkYKK0RlZmF1bHQgVmFsdWU6IDB4MkYKKworVGhpcyBwYXJhbWV0ZXIgaXMgYSBiaXQtbWFzayB0aGF0IHNwZWNpZmllcyB0aGUgc3BlZWQgYW5kIGR1cGxleCBzZXR0aW5ncworYWR2ZXJ0aXNlZCBieSB0aGUgYWRhcHRlci4gIFdoZW4gdGhpcyBwYXJhbWV0ZXIgaXMgdXNlZCwgdGhlIFNwZWVkIGFuZAorRHVwbGV4IHBhcmFtZXRlcnMgbXVzdCBub3QgYmUgc3BlY2lmaWVkLgorCitOT1RFOiAgUmVmZXIgdG8gdGhlIFNwZWVkIGFuZCBEdXBsZXggc2VjdGlvbiBvZiB0aGlzIHJlYWRtZSBmb3IgbW9yZQorICAgICAgIGluZm9ybWF0aW9uIG9uIHRoZSBBdXRvTmVnIHBhcmFtZXRlci4KKworRHVwbGV4CistLS0tLS0KKyhTdXBwb3J0ZWQgb25seSBvbiBhZGFwdGVycyB3aXRoIGNvcHBlciBjb25uZWN0aW9ucykKK1ZhbGlkIFJhbmdlOiAgIDAtMiAoMD1hdXRvLW5lZ290aWF0ZSwgMT1oYWxmLCAyPWZ1bGwpCitEZWZhdWx0IFZhbHVlOiAwCisKK1RoaXMgZGVmaW5lcyB0aGUgZGlyZWN0aW9uIGluIHdoaWNoIGRhdGEgaXMgYWxsb3dlZCB0byBmbG93LiAgQ2FuIGJlCitlaXRoZXIgb25lIG9yIHR3by1kaXJlY3Rpb25hbC4gIElmIGJvdGggRHVwbGV4IGFuZCB0aGUgbGluayBwYXJ0bmVyIGFyZQorc2V0IHRvIGF1dG8tbmVnb3RpYXRlLCB0aGUgYm9hcmQgYXV0by1kZXRlY3RzIHRoZSBjb3JyZWN0IGR1cGxleC4gIElmIHRoZQorbGluayBwYXJ0bmVyIGlzIGZvcmNlZCAoZWl0aGVyIGZ1bGwgb3IgaGFsZiksIER1cGxleCBkZWZhdWx0cyB0byBoYWxmLQorZHVwbGV4LgorCitGbG93Q29udHJvbAorLS0tLS0tLS0tLS0KK1ZhbGlkIFJhbmdlOiAgIDAtMyAoMD1ub25lLCAxPVJ4IG9ubHksIDI9VHggb25seSwgMz1SeCZUeCkKK0RlZmF1bHQgVmFsdWU6IFJlYWRzIGZsb3cgY29udHJvbCBzZXR0aW5ncyBmcm9tIHRoZSBFRVBST00KKworVGhpcyBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIGF1dG9tYXRpYyBnZW5lcmF0aW9uKFR4KSBhbmQgcmVzcG9uc2UoUngpCit0byBFdGhlcm5ldCBQQVVTRSBmcmFtZXMuCisKK0ludGVycnVwdFRocm90dGxlUmF0ZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisobm90IHN1cHBvcnRlZCBvbiBJbnRlbChSKSA4MjU0MiwgODI1NDMgb3IgODI1NDQtYmFzZWQgYWRhcHRlcnMpCitWYWxpZCBSYW5nZTogICAwLDEsMyw0LDEwMC0xMDAwMDAgKDA9b2ZmLCAxPWR5bmFtaWMsIDM9ZHluYW1pYyBjb25zZXJ2YXRpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0PXNpbXBsaWZpZWQgYmFsYW5jaW5nKQorRGVmYXVsdCBWYWx1ZTogMworCitUaGUgZHJpdmVyIGNhbiBsaW1pdCB0aGUgYW1vdW50IG9mIGludGVycnVwdHMgcGVyIHNlY29uZCB0aGF0IHRoZSBhZGFwdGVyCit3aWxsIGdlbmVyYXRlIGZvciBpbmNvbWluZyBwYWNrZXRzLiBJdCBkb2VzIHRoaXMgYnkgd3JpdGluZyBhIHZhbHVlIHRvIHRoZQorYWRhcHRlciB0aGF0IGlzIGJhc2VkIG9uIHRoZSBtYXhpbXVtIGFtb3VudCBvZiBpbnRlcnJ1cHRzIHRoYXQgdGhlIGFkYXB0ZXIKK3dpbGwgZ2VuZXJhdGUgcGVyIHNlY29uZC4KKworU2V0dGluZyBJbnRlcnJ1cHRUaHJvdHRsZVJhdGUgdG8gYSB2YWx1ZSBncmVhdGVyIG9yIGVxdWFsIHRvIDEwMAord2lsbCBwcm9ncmFtIHRoZSBhZGFwdGVyIHRvIHNlbmQgb3V0IGEgbWF4aW11bSBvZiB0aGF0IG1hbnkgaW50ZXJydXB0cworcGVyIHNlY29uZCwgZXZlbiBpZiBtb3JlIHBhY2tldHMgaGF2ZSBjb21lIGluLiBUaGlzIHJlZHVjZXMgaW50ZXJydXB0Citsb2FkIG9uIHRoZSBzeXN0ZW0gYW5kIGNhbiBsb3dlciBDUFUgdXRpbGl6YXRpb24gdW5kZXIgaGVhdnkgbG9hZCwKK2J1dCB3aWxsIGluY3JlYXNlIGxhdGVuY3kgYXMgcGFja2V0cyBhcmUgbm90IHByb2Nlc3NlZCBhcyBxdWlja2x5LgorCitUaGUgZGVmYXVsdCBiZWhhdmlvdXIgb2YgdGhlIGRyaXZlciBwcmV2aW91c2x5IGFzc3VtZWQgYSBzdGF0aWMKK0ludGVycnVwdFRocm90dGxlUmF0ZSB2YWx1ZSBvZiA4MDAwLCBwcm92aWRpbmcgYSBnb29kIGZhbGxiYWNrIHZhbHVlIGZvcgorYWxsIHRyYWZmaWMgdHlwZXMsYnV0IGxhY2tpbmcgaW4gc21hbGwgcGFja2V0IHBlcmZvcm1hbmNlIGFuZCBsYXRlbmN5LgorVGhlIGhhcmR3YXJlIGNhbiBoYW5kbGUgbWFueSBtb3JlIHNtYWxsIHBhY2tldHMgcGVyIHNlY29uZCBob3dldmVyLCBhbmQKK2ZvciB0aGlzIHJlYXNvbiBhbiBhZGFwdGl2ZSBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBhbGdvcml0aG0gd2FzIGltcGxlbWVudGVkLgorCitTaW5jZSA3LjMueCwgdGhlIGRyaXZlciBoYXMgdHdvIGFkYXB0aXZlIG1vZGVzIChzZXR0aW5nIDEgb3IgMykgaW4gd2hpY2gKK2l0IGR5bmFtaWNhbGx5IGFkanVzdHMgdGhlIEludGVycnVwdFRocm90dGxlUmF0ZSB2YWx1ZSBiYXNlZCBvbiB0aGUgdHJhZmZpYwordGhhdCBpdCByZWNlaXZlcy4gQWZ0ZXIgZGV0ZXJtaW5pbmcgdGhlIHR5cGUgb2YgaW5jb21pbmcgdHJhZmZpYyBpbiB0aGUgbGFzdAordGltZWZyYW1lLCBpdCB3aWxsIGFkanVzdCB0aGUgSW50ZXJydXB0VGhyb3R0bGVSYXRlIHRvIGFuIGFwcHJvcHJpYXRlIHZhbHVlCitmb3IgdGhhdCB0cmFmZmljLgorCitUaGUgYWxnb3JpdGhtIGNsYXNzaWZpZXMgdGhlIGluY29taW5nIHRyYWZmaWMgZXZlcnkgaW50ZXJ2YWwgaW50bworY2xhc3Nlcy4gIE9uY2UgdGhlIGNsYXNzIGlzIGRldGVybWluZWQsIHRoZSBJbnRlcnJ1cHRUaHJvdHRsZVJhdGUgdmFsdWUgaXMKK2FkanVzdGVkIHRvIHN1aXQgdGhhdCB0cmFmZmljIHR5cGUgdGhlIGJlc3QuIFRoZXJlIGFyZSB0aHJlZSBjbGFzc2VzIGRlZmluZWQ6CisiQnVsayB0cmFmZmljIiwgZm9yIGxhcmdlIGFtb3VudHMgb2YgcGFja2V0cyBvZiBub3JtYWwgc2l6ZTsgIkxvdyBsYXRlbmN5IiwKK2ZvciBzbWFsbCBhbW91bnRzIG9mIHRyYWZmaWMgYW5kL29yIGEgc2lnbmlmaWNhbnQgcGVyY2VudGFnZSBvZiBzbWFsbAorcGFja2V0czsgYW5kICJMb3dlc3QgbGF0ZW5jeSIsIGZvciBhbG1vc3QgY29tcGxldGVseSBzbWFsbCBwYWNrZXRzIG9yCittaW5pbWFsIHRyYWZmaWMuCisKK0luIGR5bmFtaWMgY29uc2VydmF0aXZlIG1vZGUsIHRoZSBJbnRlcnJ1cHRUaHJvdHRsZVJhdGUgdmFsdWUgaXMgc2V0IHRvIDQwMDAKK2ZvciB0cmFmZmljIHRoYXQgZmFsbHMgaW4gY2xhc3MgIkJ1bGsgdHJhZmZpYyIuIElmIHRyYWZmaWMgZmFsbHMgaW4gdGhlICJMb3cKK2xhdGVuY3kiIG9yICJMb3dlc3QgbGF0ZW5jeSIgY2xhc3MsIHRoZSBJbnRlcnJ1cHRUaHJvdHRsZVJhdGUgaXMgaW5jcmVhc2VkCitzdGVwd2lzZSB0byAyMDAwMC4gVGhpcyBkZWZhdWx0IG1vZGUgaXMgc3VpdGFibGUgZm9yIG1vc3QgYXBwbGljYXRpb25zLgorCitGb3Igc2l0dWF0aW9ucyB3aGVyZSBsb3cgbGF0ZW5jeSBpcyB2aXRhbCBzdWNoIGFzIGNsdXN0ZXIgb3IKK2dyaWQgY29tcHV0aW5nLCB0aGUgYWxnb3JpdGhtIGNhbiByZWR1Y2UgbGF0ZW5jeSBldmVuIG1vcmUgd2hlbgorSW50ZXJydXB0VGhyb3R0bGVSYXRlIGlzIHNldCB0byBtb2RlIDEuIEluIHRoaXMgbW9kZSwgd2hpY2ggb3BlcmF0ZXMKK3RoZSBzYW1lIGFzIG1vZGUgMywgdGhlIEludGVycnVwdFRocm90dGxlUmF0ZSB3aWxsIGJlIGluY3JlYXNlZCBzdGVwd2lzZSB0bworNzAwMDAgZm9yIHRyYWZmaWMgaW4gY2xhc3MgIkxvd2VzdCBsYXRlbmN5Ii4KKworSW4gc2ltcGxpZmllZCBtb2RlIHRoZSBpbnRlcnJ1cHQgcmF0ZSBpcyBiYXNlZCBvbiB0aGUgcmF0aW8gb2YgVFggYW5kCitSWCB0cmFmZmljLiAgSWYgdGhlIGJ5dGVzIHBlciBzZWNvbmQgcmF0ZSBpcyBhcHByb3hpbWF0ZWx5IGVxdWFsLCB0aGUKK2ludGVycnVwdCByYXRlIHdpbGwgZHJvcCBhcyBsb3cgYXMgMjAwMCBpbnRlcnJ1cHRzIHBlciBzZWNvbmQuICBJZiB0aGUKK3RyYWZmaWMgaXMgbW9zdGx5IHRyYW5zbWl0IG9yIG1vc3RseSByZWNlaXZlLCB0aGUgaW50ZXJydXB0IHJhdGUgY291bGQKK2JlIGFzIGhpZ2ggYXMgODAwMC4KKworU2V0dGluZyBJbnRlcnJ1cHRUaHJvdHRsZVJhdGUgdG8gMCB0dXJucyBvZmYgYW55IGludGVycnVwdCBtb2RlcmF0aW9uCithbmQgbWF5IGltcHJvdmUgc21hbGwgcGFja2V0IGxhdGVuY3ksIGJ1dCBpcyBnZW5lcmFsbHkgbm90IHN1aXRhYmxlCitmb3IgYnVsayB0aHJvdWdocHV0IHRyYWZmaWMuCisKK05PVEU6ICBJbnRlcnJ1cHRUaHJvdHRsZVJhdGUgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBUeEFic0ludERlbGF5IGFuZAorICAgICAgIFJ4QWJzSW50RGVsYXkgcGFyYW1ldGVycy4gIEluIG90aGVyIHdvcmRzLCBtaW5pbWl6aW5nIHRoZSByZWNlaXZlCisgICAgICAgYW5kL29yIHRyYW5zbWl0IGFic29sdXRlIGRlbGF5cyBkb2VzIG5vdCBmb3JjZSB0aGUgY29udHJvbGxlciB0bworICAgICAgIGdlbmVyYXRlIG1vcmUgaW50ZXJydXB0cyB0aGFuIHdoYXQgdGhlIEludGVycnVwdCBUaHJvdHRsZSBSYXRlCisgICAgICAgYWxsb3dzLgorCitDQVVUSU9OOiAgSWYgeW91IGFyZSB1c2luZyB0aGUgSW50ZWwoUikgUFJPLzEwMDAgQ1QgTmV0d29yayBDb25uZWN0aW9uCisgICAgICAgICAgKGNvbnRyb2xsZXIgODI1NDcpLCBzZXR0aW5nIEludGVycnVwdFRocm90dGxlUmF0ZSB0byBhIHZhbHVlCisgICAgICAgICAgZ3JlYXRlciB0aGFuIDc1LDAwMCwgbWF5IGhhbmcgKHN0b3AgdHJhbnNtaXR0aW5nKSBhZGFwdGVycworICAgICAgICAgIHVuZGVyIGNlcnRhaW4gbmV0d29yayBjb25kaXRpb25zLiAgSWYgdGhpcyBvY2N1cnMgYSBORVRERVYKKyAgICAgICAgICBXQVRDSERPRyBtZXNzYWdlIGlzIGxvZ2dlZCBpbiB0aGUgc3lzdGVtIGV2ZW50IGxvZy4gIEluCisgICAgICAgICAgYWRkaXRpb24sIHRoZSBjb250cm9sbGVyIGlzIGF1dG9tYXRpY2FsbHkgcmVzZXQsIHJlc3RvcmluZworICAgICAgICAgIHRoZSBuZXR3b3JrIGNvbm5lY3Rpb24uICBUbyBlbGltaW5hdGUgdGhlIHBvdGVudGlhbCBmb3IgdGhlCisgICAgICAgICAgaGFuZywgZW5zdXJlIHRoYXQgSW50ZXJydXB0VGhyb3R0bGVSYXRlIGlzIHNldCBubyBncmVhdGVyCisgICAgICAgICAgdGhhbiA3NSwwMDAgYW5kIGlzIG5vdCBzZXQgdG8gMC4KKworTk9URTogIFdoZW4gZTEwMDAgaXMgbG9hZGVkIHdpdGggZGVmYXVsdCBzZXR0aW5ncyBhbmQgbXVsdGlwbGUgYWRhcHRlcnMKKyAgICAgICBhcmUgaW4gdXNlIHNpbXVsdGFuZW91c2x5LCB0aGUgQ1BVIHV0aWxpemF0aW9uIG1heSBpbmNyZWFzZSBub24tCisgICAgICAgbGluZWFybHkuICBJbiBvcmRlciB0byBsaW1pdCB0aGUgQ1BVIHV0aWxpemF0aW9uIHdpdGhvdXQgaW1wYWN0aW5nCisgICAgICAgdGhlIG92ZXJhbGwgdGhyb3VnaHB1dCwgd2UgcmVjb21tZW5kIHRoYXQgeW91IGxvYWQgdGhlIGRyaXZlciBhcworICAgICAgIGZvbGxvd3M6CisKKyAgICAgICAgICAgbW9kcHJvYmUgZTEwMDAgSW50ZXJydXB0VGhyb3R0bGVSYXRlPTMwMDAsMzAwMCwzMDAwCisKKyAgICAgICBUaGlzIHNldHMgdGhlIEludGVycnVwdFRocm90dGxlUmF0ZSB0byAzMDAwIGludGVycnVwdHMvc2VjIGZvcgorICAgICAgIHRoZSBmaXJzdCwgc2Vjb25kLCBhbmQgdGhpcmQgaW5zdGFuY2VzIG9mIHRoZSBkcml2ZXIuICBUaGUgcmFuZ2UKKyAgICAgICBvZiAyMDAwIHRvIDMwMDAgaW50ZXJydXB0cyBwZXIgc2Vjb25kIHdvcmtzIG9uIGEgbWFqb3JpdHkgb2YKKyAgICAgICBzeXN0ZW1zIGFuZCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGJ1dCB0aGUgb3B0aW1hbCB2YWx1ZSB3aWxsCisgICAgICAgYmUgcGxhdGZvcm0tc3BlY2lmaWMuICBJZiBDUFUgdXRpbGl6YXRpb24gaXMgbm90IGEgY29uY2VybiwgdXNlCisgICAgICAgUlhfUE9MTElORyAoTkFQSSkgYW5kIGRlZmF1bHQgZHJpdmVyIHNldHRpbmdzLgorCitSeERlc2NyaXB0b3JzCistLS0tLS0tLS0tLS0tCitWYWxpZCBSYW5nZTogICA4MC0yNTYgZm9yIDgyNTQyIGFuZCA4MjU0My1iYXNlZCBhZGFwdGVycworICAgICAgICAgICAgICAgODAtNDA5NiBmb3IgYWxsIG90aGVyIHN1cHBvcnRlZCBhZGFwdGVycworRGVmYXVsdCBWYWx1ZTogMjU2CisKK1RoaXMgdmFsdWUgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgcmVjZWl2ZSBidWZmZXIgZGVzY3JpcHRvcnMgYWxsb2NhdGVkCitieSB0aGUgZHJpdmVyLiAgSW5jcmVhc2luZyB0aGlzIHZhbHVlIGFsbG93cyB0aGUgZHJpdmVyIHRvIGJ1ZmZlciBtb3JlCitpbmNvbWluZyBwYWNrZXRzLCBhdCB0aGUgZXhwZW5zZSBvZiBpbmNyZWFzZWQgc3lzdGVtIG1lbW9yeSB1dGlsaXphdGlvbi4KKworRWFjaCBkZXNjcmlwdG9yIGlzIDE2IGJ5dGVzLiAgQSByZWNlaXZlIGJ1ZmZlciBpcyBhbHNvIGFsbG9jYXRlZCBmb3IgZWFjaAorZGVzY3JpcHRvciBhbmQgY2FuIGJlIGVpdGhlciAyMDQ4LCA0MDk2LCA4MTkyLCBvciAxNjM4NCBieXRlcywgZGVwZW5kaW5nCitvbiB0aGUgTVRVIHNldHRpbmcuIFRoZSBtYXhpbXVtIE1UVSBzaXplIGlzIDE2MTEwLgorCitOT1RFOiAgTVRVIGRlc2lnbmF0ZXMgdGhlIGZyYW1lIHNpemUuICBJdCBvbmx5IG5lZWRzIHRvIGJlIHNldCBmb3IgSnVtYm8KKyAgICAgICBGcmFtZXMuICBEZXBlbmRpbmcgb24gdGhlIGF2YWlsYWJsZSBzeXN0ZW0gcmVzb3VyY2VzLCB0aGUgcmVxdWVzdAorICAgICAgIGZvciBhIGhpZ2hlciBudW1iZXIgb2YgcmVjZWl2ZSBkZXNjcmlwdG9ycyBtYXkgYmUgZGVuaWVkLiAgSW4gdGhpcworICAgICAgIGNhc2UsIHVzZSBhIGxvd2VyIG51bWJlci4KKworUnhJbnREZWxheQorLS0tLS0tLS0tLQorVmFsaWQgUmFuZ2U6ICAgMC02NTUzNSAoMD1vZmYpCitEZWZhdWx0IFZhbHVlOiAwCisKK1RoaXMgdmFsdWUgZGVsYXlzIHRoZSBnZW5lcmF0aW9uIG9mIHJlY2VpdmUgaW50ZXJydXB0cyBpbiB1bml0cyBvZiAxLjAyNAorbWljcm9zZWNvbmRzLiAgUmVjZWl2ZSBpbnRlcnJ1cHQgcmVkdWN0aW9uIGNhbiBpbXByb3ZlIENQVSBlZmZpY2llbmN5IGlmCitwcm9wZXJseSB0dW5lZCBmb3Igc3BlY2lmaWMgbmV0d29yayB0cmFmZmljLiAgSW5jcmVhc2luZyB0aGlzIHZhbHVlIGFkZHMKK2V4dHJhIGxhdGVuY3kgdG8gZnJhbWUgcmVjZXB0aW9uIGFuZCBjYW4gZW5kIHVwIGRlY3JlYXNpbmcgdGhlIHRocm91Z2hwdXQKK29mIFRDUCB0cmFmZmljLiAgSWYgdGhlIHN5c3RlbSBpcyByZXBvcnRpbmcgZHJvcHBlZCByZWNlaXZlcywgdGhpcyB2YWx1ZQorbWF5IGJlIHNldCB0b28gaGlnaCwgY2F1c2luZyB0aGUgZHJpdmVyIHRvIHJ1biBvdXQgb2YgYXZhaWxhYmxlIHJlY2VpdmUKK2Rlc2NyaXB0b3JzLgorCitDQVVUSU9OOiAgV2hlbiBzZXR0aW5nIFJ4SW50RGVsYXkgdG8gYSB2YWx1ZSBvdGhlciB0aGFuIDAsIGFkYXB0ZXJzIG1heQorICAgICAgICAgIGhhbmcgKHN0b3AgdHJhbnNtaXR0aW5nKSB1bmRlciBjZXJ0YWluIG5ldHdvcmsgY29uZGl0aW9ucy4gIElmCisgICAgICAgICAgdGhpcyBvY2N1cnMgYSBORVRERVYgV0FUQ0hET0cgbWVzc2FnZSBpcyBsb2dnZWQgaW4gdGhlIHN5c3RlbQorICAgICAgICAgIGV2ZW50IGxvZy4gIEluIGFkZGl0aW9uLCB0aGUgY29udHJvbGxlciBpcyBhdXRvbWF0aWNhbGx5IHJlc2V0LAorICAgICAgICAgIHJlc3RvcmluZyB0aGUgbmV0d29yayBjb25uZWN0aW9uLiAgVG8gZWxpbWluYXRlIHRoZSBwb3RlbnRpYWwKKyAgICAgICAgICBmb3IgdGhlIGhhbmcgZW5zdXJlIHRoYXQgUnhJbnREZWxheSBpcyBzZXQgdG8gMC4KKworUnhBYnNJbnREZWxheQorLS0tLS0tLS0tLS0tLQorKFRoaXMgcGFyYW1ldGVyIGlzIHN1cHBvcnRlZCBvbmx5IG9uIDgyNTQwLCA4MjU0NSBhbmQgbGF0ZXIgYWRhcHRlcnMuKQorVmFsaWQgUmFuZ2U6ICAgMC02NTUzNSAoMD1vZmYpCitEZWZhdWx0IFZhbHVlOiAxMjgKKworVGhpcyB2YWx1ZSwgaW4gdW5pdHMgb2YgMS4wMjQgbWljcm9zZWNvbmRzLCBsaW1pdHMgdGhlIGRlbGF5IGluIHdoaWNoIGEKK3JlY2VpdmUgaW50ZXJydXB0IGlzIGdlbmVyYXRlZC4gIFVzZWZ1bCBvbmx5IGlmIFJ4SW50RGVsYXkgaXMgbm9uLXplcm8sCit0aGlzIHZhbHVlIGVuc3VyZXMgdGhhdCBhbiBpbnRlcnJ1cHQgaXMgZ2VuZXJhdGVkIGFmdGVyIHRoZSBpbml0aWFsCitwYWNrZXQgaXMgcmVjZWl2ZWQgd2l0aGluIHRoZSBzZXQgYW1vdW50IG9mIHRpbWUuICBQcm9wZXIgdHVuaW5nLAorYWxvbmcgd2l0aCBSeEludERlbGF5LCBtYXkgaW1wcm92ZSB0cmFmZmljIHRocm91Z2hwdXQgaW4gc3BlY2lmaWMgbmV0d29yaworY29uZGl0aW9ucy4KKworU3BlZWQKKy0tLS0tCisoVGhpcyBwYXJhbWV0ZXIgaXMgc3VwcG9ydGVkIG9ubHkgb24gYWRhcHRlcnMgd2l0aCBjb3BwZXIgY29ubmVjdGlvbnMuKQorVmFsaWQgU2V0dGluZ3M6IDAsIDEwLCAxMDAsIDEwMDAKK0RlZmF1bHQgVmFsdWU6ICAwIChhdXRvLW5lZ290aWF0ZSBhdCBhbGwgc3VwcG9ydGVkIHNwZWVkcykKKworU3BlZWQgZm9yY2VzIHRoZSBsaW5lIHNwZWVkIHRvIHRoZSBzcGVjaWZpZWQgdmFsdWUgaW4gbWVnYWJpdHMgcGVyIHNlY29uZAorKE1icHMpLiAgSWYgdGhpcyBwYXJhbWV0ZXIgaXMgbm90IHNwZWNpZmllZCBvciBpcyBzZXQgdG8gMCBhbmQgdGhlIGxpbmsKK3BhcnRuZXIgaXMgc2V0IHRvIGF1dG8tbmVnb3RpYXRlLCB0aGUgYm9hcmQgd2lsbCBhdXRvLWRldGVjdCB0aGUgY29ycmVjdAorc3BlZWQuICBEdXBsZXggc2hvdWxkIGFsc28gYmUgc2V0IHdoZW4gU3BlZWQgaXMgc2V0IHRvIGVpdGhlciAxMCBvciAxMDAuCisKK1R4RGVzY3JpcHRvcnMKKy0tLS0tLS0tLS0tLS0KK1ZhbGlkIFJhbmdlOiAgIDgwLTI1NiBmb3IgODI1NDIgYW5kIDgyNTQzLWJhc2VkIGFkYXB0ZXJzCisgICAgICAgICAgICAgICA4MC00MDk2IGZvciBhbGwgb3RoZXIgc3VwcG9ydGVkIGFkYXB0ZXJzCitEZWZhdWx0IFZhbHVlOiAyNTYKKworVGhpcyB2YWx1ZSBpcyB0aGUgbnVtYmVyIG9mIHRyYW5zbWl0IGRlc2NyaXB0b3JzIGFsbG9jYXRlZCBieSB0aGUgZHJpdmVyLgorSW5jcmVhc2luZyB0aGlzIHZhbHVlIGFsbG93cyB0aGUgZHJpdmVyIHRvIHF1ZXVlIG1vcmUgdHJhbnNtaXRzLiAgRWFjaAorZGVzY3JpcHRvciBpcyAxNiBieXRlcy4KKworTk9URTogIERlcGVuZGluZyBvbiB0aGUgYXZhaWxhYmxlIHN5c3RlbSByZXNvdXJjZXMsIHRoZSByZXF1ZXN0IGZvciBhCisgICAgICAgaGlnaGVyIG51bWJlciBvZiB0cmFuc21pdCBkZXNjcmlwdG9ycyBtYXkgYmUgZGVuaWVkLiAgSW4gdGhpcyBjYXNlLAorICAgICAgIHVzZSBhIGxvd2VyIG51bWJlci4KKworVHhEZXNjcmlwdG9yU3RlcAorLS0tLS0tLS0tLS0tLS0tLQorVmFsaWQgUmFuZ2U6ICAgIDEgKHVzZSBldmVyeSBUeCBEZXNjcmlwdG9yKQorICAgICAgICAgICAgICAgIDQgKHVzZSBldmVyeSA0dGggVHggRGVzY3JpcHRvcikKKworRGVmYXVsdCBWYWx1ZTogIDEgKHVzZSBldmVyeSBUeCBEZXNjcmlwdG9yKQorCitPbiBjZXJ0YWluIG5vbi1JbnRlbCBhcmNoaXRlY3R1cmVzLCBpdCBoYXMgYmVlbiBvYnNlcnZlZCB0aGF0IGludGVuc2UgVFgKK3RyYWZmaWMgYnVyc3RzIG9mIHNob3J0IHBhY2tldHMgbWF5IHJlc3VsdCBpbiBhbiBpbXByb3BlciBkZXNjcmlwdG9yCit3cml0ZWJhY2suIElmIHRoaXMgb2NjdXJzLCB0aGUgZHJpdmVyIHdpbGwgcmVwb3J0IGEgIlRYIFRpbWVvdXQiIGFuZCByZXNldAordGhlIGFkYXB0ZXIsIGFmdGVyIHdoaWNoIHRoZSB0cmFuc21pdCBmbG93IHdpbGwgcmVzdGFydCwgdGhvdWdoIGRhdGEgbWF5CitoYXZlIHN0YWxsZWQgZm9yIGFzIG11Y2ggYXMgMTAgc2Vjb25kcyBiZWZvcmUgaXQgcmVzdW1lcy4KKworVGhlIGltcHJvcGVyIHdyaXRlYmFjayBkb2VzIG5vdCBvY2N1ciBvbiB0aGUgZmlyc3QgZGVzY3JpcHRvciBpbiBhIHN5c3RlbQorbWVtb3J5IGNhY2hlLWxpbmUsIHdoaWNoIGlzIHR5cGljYWxseSAzMiBieXRlcywgb3IgNCBkZXNjcmlwdG9ycyBsb25nLgorCitTZXR0aW5nIFR4RGVzY3JpcHRvclN0ZXAgdG8gYSB2YWx1ZSBvZiA0IHdpbGwgZW5zdXJlIHRoYXQgYWxsIFRYIGRlc2NyaXB0b3JzCithcmUgYWxpZ25lZCB0byB0aGUgc3RhcnQgb2YgYSBzeXN0ZW0gbWVtb3J5IGNhY2hlIGxpbmUsIGFuZCBzbyB0aGlzIHByb2JsZW0KK3dpbGwgbm90IG9jY3VyLgorCitOT1RFUzogU2V0dGluZyBUeERlc2NyaXB0b3JTdGVwIHRvIDQgZWZmZWN0aXZlbHkgcmVkdWNlcyB0aGUgbnVtYmVyIG9mCisgICAgICAgVHhEZXNjcmlwdG9ycyBhdmFpbGFibGUgZm9yIHRyYW5zbWl0cyB0byAxLzQgb2YgdGhlIG5vcm1hbCBhbGxvY2F0aW9uLgorICAgICAgIFRoaXMgaGFzIGEgcG9zc2libGUgbmVnYXRpdmUgcGVyZm9ybWFuY2UgaW1wYWN0LCB3aGljaCBtYXkgYmUKKyAgICAgICBjb21wZW5zYXRlZCBmb3IgYnkgYWxsb2NhdGluZyBtb3JlIGRlc2NyaXB0b3JzIHVzaW5nIHRoZSBUeERlc2NyaXB0b3JzCisgICAgICAgbW9kdWxlIHBhcmFtZXRlci4KKworICAgICAgIFRoZXJlIGFyZSBvdGhlciBjb25kaXRpb25zIHdoaWNoIG1heSByZXN1bHQgaW4gIlRYIFRpbWVvdXQiLCB3aGljaCB3aWxsCisgICAgICAgbm90IGJlIHJlc29sdmVkIGJ5IHRoZSB1c2Ugb2YgdGhlIFR4RGVzY3JpcHRvclN0ZXAgcGFyYW1ldGVyLiBBcyB0aGUKKyAgICAgICBpc3N1ZSBhZGRyZXNzZWQgYnkgdGhpcyBwYXJhbWV0ZXIgaGFzIG5ldmVyIGJlZW4gb2JzZXJ2ZWQgb24gSW50ZWwKKyAgICAgICBBcmNoaXRlY3R1cmUgcGxhdGZvcm1zLCBpdCBzaG91bGQgbm90IGJlIHVzZWQgb24gSW50ZWwgcGxhdGZvcm1zLgorCitUeEludERlbGF5CistLS0tLS0tLS0tCitWYWxpZCBSYW5nZTogICAwLTY1NTM1ICgwPW9mZikKK0RlZmF1bHQgVmFsdWU6IDY0CisKK1RoaXMgdmFsdWUgZGVsYXlzIHRoZSBnZW5lcmF0aW9uIG9mIHRyYW5zbWl0IGludGVycnVwdHMgaW4gdW5pdHMgb2YKKzEuMDI0IG1pY3Jvc2Vjb25kcy4gIFRyYW5zbWl0IGludGVycnVwdCByZWR1Y3Rpb24gY2FuIGltcHJvdmUgQ1BVCitlZmZpY2llbmN5IGlmIHByb3Blcmx5IHR1bmVkIGZvciBzcGVjaWZpYyBuZXR3b3JrIHRyYWZmaWMuICBJZiB0aGUKK3N5c3RlbSBpcyByZXBvcnRpbmcgZHJvcHBlZCB0cmFuc21pdHMsIHRoaXMgdmFsdWUgbWF5IGJlIHNldCB0b28gaGlnaAorY2F1c2luZyB0aGUgZHJpdmVyIHRvIHJ1biBvdXQgb2YgYXZhaWxhYmxlIHRyYW5zbWl0IGRlc2NyaXB0b3JzLgorCitUeEFic0ludERlbGF5CistLS0tLS0tLS0tLS0tCisoVGhpcyBwYXJhbWV0ZXIgaXMgc3VwcG9ydGVkIG9ubHkgb24gODI1NDAsIDgyNTQ1IGFuZCBsYXRlciBhZGFwdGVycy4pCitWYWxpZCBSYW5nZTogICAwLTY1NTM1ICgwPW9mZikKK0RlZmF1bHQgVmFsdWU6IDY0CisKK1RoaXMgdmFsdWUsIGluIHVuaXRzIG9mIDEuMDI0IG1pY3Jvc2Vjb25kcywgbGltaXRzIHRoZSBkZWxheSBpbiB3aGljaCBhCit0cmFuc21pdCBpbnRlcnJ1cHQgaXMgZ2VuZXJhdGVkLiAgVXNlZnVsIG9ubHkgaWYgVHhJbnREZWxheSBpcyBub24temVybywKK3RoaXMgdmFsdWUgZW5zdXJlcyB0aGF0IGFuIGludGVycnVwdCBpcyBnZW5lcmF0ZWQgYWZ0ZXIgdGhlIGluaXRpYWwKK3BhY2tldCBpcyBzZW50IG9uIHRoZSB3aXJlIHdpdGhpbiB0aGUgc2V0IGFtb3VudCBvZiB0aW1lLiAgUHJvcGVyIHR1bmluZywKK2Fsb25nIHdpdGggVHhJbnREZWxheSwgbWF5IGltcHJvdmUgdHJhZmZpYyB0aHJvdWdocHV0IGluIHNwZWNpZmljCituZXR3b3JrIGNvbmRpdGlvbnMuCisKK1hzdW1SWAorLS0tLS0tCisoVGhpcyBwYXJhbWV0ZXIgaXMgTk9UIHN1cHBvcnRlZCBvbiB0aGUgODI1NDItYmFzZWQgYWRhcHRlci4pCitWYWxpZCBSYW5nZTogICAwLTEKK0RlZmF1bHQgVmFsdWU6IDEKKworQSB2YWx1ZSBvZiAnMScgaW5kaWNhdGVzIHRoYXQgdGhlIGRyaXZlciBzaG91bGQgZW5hYmxlIElQIGNoZWNrc3VtCitvZmZsb2FkIGZvciByZWNlaXZlZCBwYWNrZXRzIChib3RoIFVEUCBhbmQgVENQKSB0byB0aGUgYWRhcHRlciBoYXJkd2FyZS4KKworQ29weWJyZWFrCistLS0tLS0tLS0KK1ZhbGlkIFJhbmdlOiAgIDAteHh4eHh4eCAoMD1vZmYpCitEZWZhdWx0IFZhbHVlOiAyNTYKK1VzYWdlOiBpbnNtb2QgZTEwMDAua28gY29weWJyZWFrPTEyOAorCitEcml2ZXIgY29waWVzIGFsbCBwYWNrZXRzIGJlbG93IG9yIGVxdWFsaW5nIHRoaXMgc2l6ZSB0byBhIGZyZXNoIFJYCitidWZmZXIgYmVmb3JlIGhhbmRpbmcgaXQgdXAgdGhlIHN0YWNrLgorCitUaGlzIHBhcmFtZXRlciBpcyBkaWZmZXJlbnQgdGhhbiBvdGhlciBwYXJhbWV0ZXJzLCBpbiB0aGF0IGl0IGlzIGEKK3NpbmdsZSAobm90IDEsMSwxIGV0Yy4pIHBhcmFtZXRlciBhcHBsaWVkIHRvIGFsbCBkcml2ZXIgaW5zdGFuY2VzIGFuZAoraXQgaXMgYWxzbyBhdmFpbGFibGUgZHVyaW5nIHJ1bnRpbWUgYXQKKy9zeXMvbW9kdWxlL2UxMDAwL3BhcmFtZXRlcnMvY29weWJyZWFrCisKK1NtYXJ0UG93ZXJEb3duRW5hYmxlCistLS0tLS0tLS0tLS0tLS0tLS0tLQorVmFsaWQgUmFuZ2U6IDAtMQorRGVmYXVsdCBWYWx1ZTogIDAgKGRpc2FibGVkKQorCitBbGxvd3MgUEhZIHRvIHR1cm4gb2ZmIGluIGxvd2VyIHBvd2VyIHN0YXRlcy4gVGhlIHVzZXIgY2FuIHR1cm4gb2ZmCit0aGlzIHBhcmFtZXRlciBpbiBzdXBwb3J0ZWQgY2hpcHNldHMuCisKK0t1bWVyYW5Mb2NrTG9zcworLS0tLS0tLS0tLS0tLS0tCitWYWxpZCBSYW5nZTogMC0xCitEZWZhdWx0IFZhbHVlOiAxIChlbmFibGVkKQorCitUaGlzIHdvcmthcm91bmQgc2tpcHMgcmVzZXR0aW5nIHRoZSBQSFkgYXQgc2h1dGRvd24gZm9yIHRoZSBpbml0aWFsCitzaWxpY29uIHJlbGVhc2VzIG9mIElDSDggc3lzdGVtcy4KKworU3BlZWQgYW5kIER1cGxleCBDb25maWd1cmF0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhyZWUga2V5d29yZHMgYXJlIHVzZWQgdG8gY29udHJvbCB0aGUgc3BlZWQgYW5kIGR1cGxleCBjb25maWd1cmF0aW9uLgorVGhlc2Uga2V5d29yZHMgYXJlIFNwZWVkLCBEdXBsZXgsIGFuZCBBdXRvTmVnLgorCitJZiB0aGUgYm9hcmQgdXNlcyBhIGZpYmVyIGludGVyZmFjZSwgdGhlc2Uga2V5d29yZHMgYXJlIGlnbm9yZWQsIGFuZCB0aGUKK2ZpYmVyIGludGVyZmFjZSBib2FyZCBvbmx5IGxpbmtzIGF0IDEwMDAgTWJwcyBmdWxsLWR1cGxleC4KKworRm9yIGNvcHBlci1iYXNlZCBib2FyZHMsIHRoZSBrZXl3b3JkcyBpbnRlcmFjdCBhcyBmb2xsb3dzOgorCisgIFRoZSBkZWZhdWx0IG9wZXJhdGlvbiBpcyBhdXRvLW5lZ290aWF0ZS4gIFRoZSBib2FyZCBhZHZlcnRpc2VzIGFsbAorICBzdXBwb3J0ZWQgc3BlZWQgYW5kIGR1cGxleCBjb21iaW5hdGlvbnMsIGFuZCBpdCBsaW5rcyBhdCB0aGUgaGlnaGVzdAorICBjb21tb24gc3BlZWQgYW5kIGR1cGxleCBtb2RlIElGIHRoZSBsaW5rIHBhcnRuZXIgaXMgc2V0IHRvIGF1dG8tbmVnb3RpYXRlLgorCisgIElmIFNwZWVkID0gMTAwMCwgbGltaXRlZCBhdXRvLW5lZ290aWF0aW9uIGlzIGVuYWJsZWQgYW5kIG9ubHkgMTAwMCBNYnBzCisgIGlzIGFkdmVydGlzZWQgKFRoZSAxMDAwQmFzZVQgc3BlYyByZXF1aXJlcyBhdXRvLW5lZ290aWF0aW9uLikKKworICBJZiBTcGVlZCA9IDEwIG9yIDEwMCwgdGhlbiBib3RoIFNwZWVkIGFuZCBEdXBsZXggc2hvdWxkIGJlIHNldC4gIEF1dG8tCisgIG5lZ290aWF0aW9uIGlzIGRpc2FibGVkLCBhbmQgdGhlIEF1dG9OZWcgcGFyYW1ldGVyIGlzIGlnbm9yZWQuICBQYXJ0bmVyCisgIFNIT1VMRCBhbHNvIGJlIGZvcmNlZC4KKworVGhlIEF1dG9OZWcgcGFyYW1ldGVyIGlzIHVzZWQgd2hlbiBtb3JlIGNvbnRyb2wgaXMgcmVxdWlyZWQgb3ZlciB0aGUKK2F1dG8tbmVnb3RpYXRpb24gcHJvY2Vzcy4gIEl0IHNob3VsZCBiZSB1c2VkIHdoZW4geW91IHdpc2ggdG8gY29udHJvbCB3aGljaAorc3BlZWQgYW5kIGR1cGxleCBjb21iaW5hdGlvbnMgYXJlIGFkdmVydGlzZWQgZHVyaW5nIHRoZSBhdXRvLW5lZ290aWF0aW9uCitwcm9jZXNzLgorCitUaGUgcGFyYW1ldGVyIG1heSBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIGEgZGVjaW1hbCBvciBoZXhhZGVjaW1hbCB2YWx1ZSBhcworZGV0ZXJtaW5lZCBieSB0aGUgYml0bWFwIGJlbG93LgorCitCaXQgcG9zaXRpb24gICA3ICAgICAgNiAgICAgIDUgICAgICAgNCAgICAgICAzICAgICAgMiAgICAgIDEgICAgICAgMAorRGVjaW1hbCBWYWx1ZSAgMTI4ICAgIDY0ICAgICAzMiAgICAgIDE2ICAgICAgOCAgICAgIDQgICAgICAyICAgICAgIDEKK0hleCB2YWx1ZSAgICAgIDgwICAgICA0MCAgICAgMjAgICAgICAxMCAgICAgIDggICAgICA0ICAgICAgMiAgICAgICAxCitTcGVlZCAoTWJwcykgICBOL0EgICAgTi9BICAgIDEwMDAgICAgTi9BICAgICAxMDAgICAgMTAwICAgIDEwICAgICAgMTAKK0R1cGxleCAgICAgICAgICAgICAgICAgICAgICAgRnVsbCAgICAgICAgICAgIEZ1bGwgICBIYWxmICAgRnVsbCAgICBIYWxmCisKK1NvbWUgZXhhbXBsZXMgb2YgdXNpbmcgQXV0b05lZzoKKworICBtb2Rwcm9iZSBlMTAwMCBBdXRvTmVnPTB4MDEgKFJlc3RyaWN0cyBhdXRvbmVnb3RpYXRpb24gdG8gMTAgSGFsZikKKyAgbW9kcHJvYmUgZTEwMDAgQXV0b05lZz0xIChTYW1lIGFzIGFib3ZlKQorICBtb2Rwcm9iZSBlMTAwMCBBdXRvTmVnPTB4MDIgKFJlc3RyaWN0cyBhdXRvbmVnb3RpYXRpb24gdG8gMTAgRnVsbCkKKyAgbW9kcHJvYmUgZTEwMDAgQXV0b05lZz0weDAzIChSZXN0cmljdHMgYXV0b25lZ290aWF0aW9uIHRvIDEwIEhhbGYgb3IgMTAgRnVsbCkKKyAgbW9kcHJvYmUgZTEwMDAgQXV0b05lZz0weDA0IChSZXN0cmljdHMgYXV0b25lZ290aWF0aW9uIHRvIDEwMCBIYWxmKQorICBtb2Rwcm9iZSBlMTAwMCBBdXRvTmVnPTB4MDUgKFJlc3RyaWN0cyBhdXRvbmVnb3RpYXRpb24gdG8gMTAgSGFsZiBvciAxMDAKKyAgSGFsZikKKyAgbW9kcHJvYmUgZTEwMDAgQXV0b05lZz0weDAyMCAoUmVzdHJpY3RzIGF1dG9uZWdvdGlhdGlvbiB0byAxMDAwIEZ1bGwpCisgIG1vZHByb2JlIGUxMDAwIEF1dG9OZWc9MzIgKFNhbWUgYXMgYWJvdmUpCisKK05vdGUgdGhhdCB3aGVuIHRoaXMgcGFyYW1ldGVyIGlzIHVzZWQsIFNwZWVkIGFuZCBEdXBsZXggbXVzdCBub3QgYmUgc3BlY2lmaWVkLgorCitJZiB0aGUgbGluayBwYXJ0bmVyIGlzIGZvcmNlZCB0byBhIHNwZWNpZmljIHNwZWVkIGFuZCBkdXBsZXgsIHRoZW4gdGhpcworcGFyYW1ldGVyIHNob3VsZCBub3QgYmUgdXNlZC4gIEluc3RlYWQsIHVzZSB0aGUgU3BlZWQgYW5kIER1cGxleCBwYXJhbWV0ZXJzCitwcmV2aW91c2x5IG1lbnRpb25lZCB0byBmb3JjZSB0aGUgYWRhcHRlciB0byB0aGUgc2FtZSBzcGVlZCBhbmQgZHVwbGV4LgorCitBZGRpdGlvbmFsIENvbmZpZ3VyYXRpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgSnVtYm8gRnJhbWVzCisgIC0tLS0tLS0tLS0tLQorICBKdW1ibyBGcmFtZXMgc3VwcG9ydCBpcyBlbmFibGVkIGJ5IGNoYW5naW5nIHRoZSBNVFUgdG8gYSB2YWx1ZSBsYXJnZXIgdGhhbgorICB0aGUgZGVmYXVsdCBvZiAxNTAwLiAgVXNlIHRoZSBpZmNvbmZpZyBjb21tYW5kIHRvIGluY3JlYXNlIHRoZSBNVFUgc2l6ZS4KKyAgRm9yIGV4YW1wbGU6CisKKyAgICAgICBpZmNvbmZpZyBldGg8eD4gbXR1IDkwMDAgdXAKKworICBUaGlzIHNldHRpbmcgaXMgbm90IHNhdmVkIGFjcm9zcyByZWJvb3RzLiAgSXQgY2FuIGJlIG1hZGUgcGVybWFuZW50IGlmCisgIHlvdSBhZGQ6CisKKyAgICAgICBNVFU9OTAwMAorCisgICB0byB0aGUgZmlsZSAvZXRjL3N5c2NvbmZpZy9uZXR3b3JrLXNjcmlwdHMvaWZjZmctZXRoPHg+LiAgVGhpcyBleGFtcGxlCisgICBhcHBsaWVzIHRvIHRoZSBSZWQgSGF0IGRpc3RyaWJ1dGlvbnM7IG90aGVyIGRpc3RyaWJ1dGlvbnMgbWF5IHN0b3JlIHRoaXMKKyAgIHNldHRpbmcgaW4gYSBkaWZmZXJlbnQgbG9jYXRpb24uCisKKyAgTm90ZXM6CisgIERlZ3JhZGF0aW9uIGluIHRocm91Z2hwdXQgcGVyZm9ybWFuY2UgbWF5IGJlIG9ic2VydmVkIGluIHNvbWUgSnVtYm8gZnJhbWVzCisgIGVudmlyb25tZW50cy4gSWYgdGhpcyBpcyBvYnNlcnZlZCwgaW5jcmVhc2luZyB0aGUgYXBwbGljYXRpb24ncyBzb2NrZXQgYnVmZmVyCisgIHNpemUgYW5kL29yIGluY3JlYXNpbmcgdGhlIC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfKm1lbSBlbnRyeSB2YWx1ZXMgbWF5IGhlbHAuCisgIFNlZSB0aGUgc3BlY2lmaWMgYXBwbGljYXRpb24gbWFudWFsIGFuZCAvdXNyL3NyYy9saW51eCovRG9jdW1lbnRhdGlvbi8KKyAgbmV0d29ya2luZy9pcC1zeXNjdGwudHh0IGZvciBtb3JlIGRldGFpbHMuCisKKyAgLSBUaGUgbWF4aW11bSBNVFUgc2V0dGluZyBmb3IgSnVtYm8gRnJhbWVzIGlzIDE2MTEwLiAgVGhpcyB2YWx1ZSBjb2luY2lkZXMKKyAgICB3aXRoIHRoZSBtYXhpbXVtIEp1bWJvIEZyYW1lcyBzaXplIG9mIDE2MTI4LgorCisgIC0gVXNpbmcgSnVtYm8gZnJhbWVzIGF0IDEwIG9yIDEwMCBNYnBzIGlzIG5vdCBzdXBwb3J0ZWQgYW5kIG1heSByZXN1bHQgaW4KKyAgICBwb29yIHBlcmZvcm1hbmNlIG9yIGxvc3Mgb2YgbGluay4KKworICAtIEFkYXB0ZXJzIGJhc2VkIG9uIHRoZSBJbnRlbChSKSA4MjU0MiBhbmQgODI1NzNWL0UgY29udHJvbGxlciBkbyBub3QKKyAgICBzdXBwb3J0IEp1bWJvIEZyYW1lcy4gVGhlc2UgY29ycmVzcG9uZCB0byB0aGUgZm9sbG93aW5nIHByb2R1Y3QgbmFtZXM6CisgICAgIEludGVsKFIpIFBSTy8xMDAwIEdpZ2FiaXQgU2VydmVyIEFkYXB0ZXIKKyAgICAgSW50ZWwoUikgUFJPLzEwMDAgUE0gTmV0d29yayBDb25uZWN0aW9uCisKKyAgZXRodG9vbAorICAtLS0tLS0tCisgIFRoZSBkcml2ZXIgdXRpbGl6ZXMgdGhlIGV0aHRvb2wgaW50ZXJmYWNlIGZvciBkcml2ZXIgY29uZmlndXJhdGlvbiBhbmQKKyAgZGlhZ25vc3RpY3MsIGFzIHdlbGwgYXMgZGlzcGxheWluZyBzdGF0aXN0aWNhbCBpbmZvcm1hdGlvbi4gIFRoZSBldGh0b29sCisgIHZlcnNpb24gMS42IG9yIGxhdGVyIGlzIHJlcXVpcmVkIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkuCisKKyAgVGhlIGxhdGVzdCByZWxlYXNlIG9mIGV0aHRvb2wgY2FuIGJlIGZvdW5kIGZyb20KKyAgaHR0cDovL2Z0cC5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvCisKKyAgRW5hYmxpbmcgV2FrZSBvbiBMQU4qIChXb0wpCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBXb0wgaXMgY29uZmlndXJlZCB0aHJvdWdoIHRoZSBldGh0b29sKiB1dGlsaXR5LgorCisgIFdvTCB3aWxsIGJlIGVuYWJsZWQgb24gdGhlIHN5c3RlbSBkdXJpbmcgdGhlIG5leHQgc2h1dCBkb3duIG9yIHJlYm9vdC4KKyAgRm9yIHRoaXMgZHJpdmVyIHZlcnNpb24sIGluIG9yZGVyIHRvIGVuYWJsZSBXb0wsIHRoZSBlMTAwMCBkcml2ZXIgbXVzdCBiZQorICBsb2FkZWQgd2hlbiBzaHV0dGluZyBkb3duIG9yIHJlYm9vdGluZyB0aGUgc3lzdGVtLgorCitTdXBwb3J0Cis9PT09PT09CisKK0ZvciBnZW5lcmFsIGluZm9ybWF0aW9uLCBnbyB0byB0aGUgSW50ZWwgc3VwcG9ydCB3ZWJzaXRlIGF0OgorCisgICAgaHR0cDovL3N1cHBvcnQuaW50ZWwuY29tCisKK29yIHRoZSBJbnRlbCBXaXJlZCBOZXR3b3JraW5nIHByb2plY3QgaG9zdGVkIGJ5IFNvdXJjZWZvcmdlIGF0OgorCisgICAgaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9lMTAwMAorCitJZiBhbiBpc3N1ZSBpcyBpZGVudGlmaWVkIHdpdGggdGhlIHJlbGVhc2VkIHNvdXJjZSBjb2RlIG9uIHRoZSBzdXBwb3J0ZWQKK2tlcm5lbCB3aXRoIGEgc3VwcG9ydGVkIGFkYXB0ZXIsIGVtYWlsIHRoZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiByZWxhdGVkCit0byB0aGUgaXNzdWUgdG8gZTEwMDAtZGV2ZWxAbGlzdHMuc2YubmV0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZTEwMDBlLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9lMTAwMGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkMmQ5ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZTEwMDBlLnR4dApAQCAtMCwwICsxLDMxMiBAQAorTGludXgqIERyaXZlciBmb3IgSW50ZWwoUikgRXRoZXJuZXQgTmV0d29yayBDb25uZWN0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW50ZWwgR2lnYWJpdCBMaW51eCBkcml2ZXIuCitDb3B5cmlnaHQoYykgMTk5OSAtIDIwMTMgSW50ZWwgQ29ycG9yYXRpb24uCisKK0NvbnRlbnRzCis9PT09PT09PQorCistIElkZW50aWZ5aW5nIFlvdXIgQWRhcHRlcgorLSBDb21tYW5kIExpbmUgUGFyYW1ldGVycworLSBBZGRpdGlvbmFsIENvbmZpZ3VyYXRpb25zCistIFN1cHBvcnQKKworSWRlbnRpZnlpbmcgWW91ciBBZGFwdGVyCis9PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGUxMDAwZSBkcml2ZXIgc3VwcG9ydHMgYWxsIFBDSSBFeHByZXNzIEludGVsKFIpIEdpZ2FiaXQgTmV0d29yaworQ29ubmVjdGlvbnMsIGV4Y2VwdCB0aG9zZSB0aGF0IGFyZSA4MjU3NSwgODI1NzYgYW5kIDgyNTgwLWJhc2VkKi4KKworKiBOT1RFOiBUaGUgSW50ZWwoUikgUFJPLzEwMDAgUCBEdWFsIFBvcnQgU2VydmVyIEFkYXB0ZXIgaXMgc3VwcG9ydGVkIGJ5CisgIHRoZSBlMTAwMCBkcml2ZXIsIG5vdCB0aGUgZTEwMDBlIGRyaXZlciBkdWUgdG8gdGhlIDgyNTQ2IHBhcnQgYmVpbmcgdXNlZAorICBiZWhpbmQgYSBQQ0kgRXhwcmVzcyBicmlkZ2UuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBpZGVudGlmeSB5b3VyIGFkYXB0ZXIsIGdvIHRvIHRoZSBBZGFwdGVyICYKK0RyaXZlciBJRCBHdWlkZSBhdDoKKworICAgIGh0dHA6Ly9zdXBwb3J0LmludGVsLmNvbS9zdXBwb3J0L2dvL25ldHdvcmsvYWRhcHRlci9pZGd1aWRlLmh0bQorCitGb3IgdGhlIGxhdGVzdCBJbnRlbCBuZXR3b3JrIGRyaXZlcnMgZm9yIExpbnV4LCByZWZlciB0byB0aGUgZm9sbG93aW5nCit3ZWJzaXRlLiAgSW4gdGhlIHNlYXJjaCBmaWVsZCwgZW50ZXIgeW91ciBhZGFwdGVyIG5hbWUgb3IgdHlwZSwgb3IgdXNlIHRoZQorbmV0d29ya2luZyBsaW5rIG9uIHRoZSBsZWZ0IHRvIHNlYXJjaCBmb3IgeW91ciBhZGFwdGVyOgorCisgICAgaHR0cDovL3N1cHBvcnQuaW50ZWwuY29tL3N1cHBvcnQvZ28vbmV0d29yay9hZGFwdGVyL2hvbWUuaHRtCisKK0NvbW1hbmQgTGluZSBQYXJhbWV0ZXJzCis9PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgZWFjaCBwYXJhbWV0ZXIgaXMgZ2VuZXJhbGx5IHRoZSByZWNvbW1lbmRlZCBzZXR0aW5nLAordW5sZXNzIG90aGVyd2lzZSBub3RlZC4KKworTk9URVM6ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgSW50ZXJydXB0VGhyb3R0bGVSYXRlLAorICAgICAgICBSeEludERlbGF5LCBUeEludERlbGF5LCBSeEFic0ludERlbGF5LCBhbmQgVHhBYnNJbnREZWxheQorICAgICAgICBwYXJhbWV0ZXJzLCBzZWUgdGhlIGFwcGxpY2F0aW9uIG5vdGUgYXQ6CisgICAgICAgIGh0dHA6Ly93d3cuaW50ZWwuY29tL2Rlc2lnbi9uZXR3b3JrL2FwcGxub3RzL2FwNDUwLmh0bQorCitJbnRlcnJ1cHRUaHJvdHRsZVJhdGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVmFsaWQgUmFuZ2U6ICAgMCwxLDMsNCwxMDAtMTAwMDAwICgwPW9mZiwgMT1keW5hbWljLCAzPWR5bmFtaWMgY29uc2VydmF0aXZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0PXNpbXBsaWZpZWQgYmFsYW5jaW5nKQorRGVmYXVsdCBWYWx1ZTogMworCitUaGUgZHJpdmVyIGNhbiBsaW1pdCB0aGUgYW1vdW50IG9mIGludGVycnVwdHMgcGVyIHNlY29uZCB0aGF0IHRoZSBhZGFwdGVyCit3aWxsIGdlbmVyYXRlIGZvciBpbmNvbWluZyBwYWNrZXRzLiBJdCBkb2VzIHRoaXMgYnkgd3JpdGluZyBhIHZhbHVlIHRvIHRoZQorYWRhcHRlciB0aGF0IGlzIGJhc2VkIG9uIHRoZSBtYXhpbXVtIGFtb3VudCBvZiBpbnRlcnJ1cHRzIHRoYXQgdGhlIGFkYXB0ZXIKK3dpbGwgZ2VuZXJhdGUgcGVyIHNlY29uZC4KKworU2V0dGluZyBJbnRlcnJ1cHRUaHJvdHRsZVJhdGUgdG8gYSB2YWx1ZSBncmVhdGVyIG9yIGVxdWFsIHRvIDEwMAord2lsbCBwcm9ncmFtIHRoZSBhZGFwdGVyIHRvIHNlbmQgb3V0IGEgbWF4aW11bSBvZiB0aGF0IG1hbnkgaW50ZXJydXB0cworcGVyIHNlY29uZCwgZXZlbiBpZiBtb3JlIHBhY2tldHMgaGF2ZSBjb21lIGluLiBUaGlzIHJlZHVjZXMgaW50ZXJydXB0Citsb2FkIG9uIHRoZSBzeXN0ZW0gYW5kIGNhbiBsb3dlciBDUFUgdXRpbGl6YXRpb24gdW5kZXIgaGVhdnkgbG9hZCwKK2J1dCB3aWxsIGluY3JlYXNlIGxhdGVuY3kgYXMgcGFja2V0cyBhcmUgbm90IHByb2Nlc3NlZCBhcyBxdWlja2x5LgorCitUaGUgZGVmYXVsdCBiZWhhdmlvdXIgb2YgdGhlIGRyaXZlciBwcmV2aW91c2x5IGFzc3VtZWQgYSBzdGF0aWMKK0ludGVycnVwdFRocm90dGxlUmF0ZSB2YWx1ZSBvZiA4MDAwLCBwcm92aWRpbmcgYSBnb29kIGZhbGxiYWNrIHZhbHVlIGZvcgorYWxsIHRyYWZmaWMgdHlwZXMsIGJ1dCBsYWNraW5nIGluIHNtYWxsIHBhY2tldCBwZXJmb3JtYW5jZSBhbmQgbGF0ZW5jeS4KK1RoZSBoYXJkd2FyZSBjYW4gaGFuZGxlIG1hbnkgbW9yZSBzbWFsbCBwYWNrZXRzIHBlciBzZWNvbmQgaG93ZXZlciwgYW5kCitmb3IgdGhpcyByZWFzb24gYW4gYWRhcHRpdmUgaW50ZXJydXB0IG1vZGVyYXRpb24gYWxnb3JpdGhtIHdhcyBpbXBsZW1lbnRlZC4KKworVGhlIGRyaXZlciBoYXMgdHdvIGFkYXB0aXZlIG1vZGVzIChzZXR0aW5nIDEgb3IgMykgaW4gd2hpY2gKK2l0IGR5bmFtaWNhbGx5IGFkanVzdHMgdGhlIEludGVycnVwdFRocm90dGxlUmF0ZSB2YWx1ZSBiYXNlZCBvbiB0aGUgdHJhZmZpYwordGhhdCBpdCByZWNlaXZlcy4gQWZ0ZXIgZGV0ZXJtaW5pbmcgdGhlIHR5cGUgb2YgaW5jb21pbmcgdHJhZmZpYyBpbiB0aGUgbGFzdAordGltZWZyYW1lLCBpdCB3aWxsIGFkanVzdCB0aGUgSW50ZXJydXB0VGhyb3R0bGVSYXRlIHRvIGFuIGFwcHJvcHJpYXRlIHZhbHVlCitmb3IgdGhhdCB0cmFmZmljLgorCitUaGUgYWxnb3JpdGhtIGNsYXNzaWZpZXMgdGhlIGluY29taW5nIHRyYWZmaWMgZXZlcnkgaW50ZXJ2YWwgaW50bworY2xhc3Nlcy4gIE9uY2UgdGhlIGNsYXNzIGlzIGRldGVybWluZWQsIHRoZSBJbnRlcnJ1cHRUaHJvdHRsZVJhdGUgdmFsdWUgaXMKK2FkanVzdGVkIHRvIHN1aXQgdGhhdCB0cmFmZmljIHR5cGUgdGhlIGJlc3QuIFRoZXJlIGFyZSB0aHJlZSBjbGFzc2VzIGRlZmluZWQ6CisiQnVsayB0cmFmZmljIiwgZm9yIGxhcmdlIGFtb3VudHMgb2YgcGFja2V0cyBvZiBub3JtYWwgc2l6ZTsgIkxvdyBsYXRlbmN5IiwKK2ZvciBzbWFsbCBhbW91bnRzIG9mIHRyYWZmaWMgYW5kL29yIGEgc2lnbmlmaWNhbnQgcGVyY2VudGFnZSBvZiBzbWFsbAorcGFja2V0czsgYW5kICJMb3dlc3QgbGF0ZW5jeSIsIGZvciBhbG1vc3QgY29tcGxldGVseSBzbWFsbCBwYWNrZXRzIG9yCittaW5pbWFsIHRyYWZmaWMuCisKK0luIGR5bmFtaWMgY29uc2VydmF0aXZlIG1vZGUsIHRoZSBJbnRlcnJ1cHRUaHJvdHRsZVJhdGUgdmFsdWUgaXMgc2V0IHRvIDQwMDAKK2ZvciB0cmFmZmljIHRoYXQgZmFsbHMgaW4gY2xhc3MgIkJ1bGsgdHJhZmZpYyIuIElmIHRyYWZmaWMgZmFsbHMgaW4gdGhlICJMb3cKK2xhdGVuY3kiIG9yICJMb3dlc3QgbGF0ZW5jeSIgY2xhc3MsIHRoZSBJbnRlcnJ1cHRUaHJvdHRsZVJhdGUgaXMgaW5jcmVhc2VkCitzdGVwd2lzZSB0byAyMDAwMC4gVGhpcyBkZWZhdWx0IG1vZGUgaXMgc3VpdGFibGUgZm9yIG1vc3QgYXBwbGljYXRpb25zLgorCitGb3Igc2l0dWF0aW9ucyB3aGVyZSBsb3cgbGF0ZW5jeSBpcyB2aXRhbCBzdWNoIGFzIGNsdXN0ZXIgb3IKK2dyaWQgY29tcHV0aW5nLCB0aGUgYWxnb3JpdGhtIGNhbiByZWR1Y2UgbGF0ZW5jeSBldmVuIG1vcmUgd2hlbgorSW50ZXJydXB0VGhyb3R0bGVSYXRlIGlzIHNldCB0byBtb2RlIDEuIEluIHRoaXMgbW9kZSwgd2hpY2ggb3BlcmF0ZXMKK3RoZSBzYW1lIGFzIG1vZGUgMywgdGhlIEludGVycnVwdFRocm90dGxlUmF0ZSB3aWxsIGJlIGluY3JlYXNlZCBzdGVwd2lzZSB0bworNzAwMDAgZm9yIHRyYWZmaWMgaW4gY2xhc3MgIkxvd2VzdCBsYXRlbmN5Ii4KKworSW4gc2ltcGxpZmllZCBtb2RlIHRoZSBpbnRlcnJ1cHQgcmF0ZSBpcyBiYXNlZCBvbiB0aGUgcmF0aW8gb2YgVFggYW5kCitSWCB0cmFmZmljLiAgSWYgdGhlIGJ5dGVzIHBlciBzZWNvbmQgcmF0ZSBpcyBhcHByb3hpbWF0ZWx5IGVxdWFsLCB0aGUKK2ludGVycnVwdCByYXRlIHdpbGwgZHJvcCBhcyBsb3cgYXMgMjAwMCBpbnRlcnJ1cHRzIHBlciBzZWNvbmQuICBJZiB0aGUKK3RyYWZmaWMgaXMgbW9zdGx5IHRyYW5zbWl0IG9yIG1vc3RseSByZWNlaXZlLCB0aGUgaW50ZXJydXB0IHJhdGUgY291bGQKK2JlIGFzIGhpZ2ggYXMgODAwMC4KKworU2V0dGluZyBJbnRlcnJ1cHRUaHJvdHRsZVJhdGUgdG8gMCB0dXJucyBvZmYgYW55IGludGVycnVwdCBtb2RlcmF0aW9uCithbmQgbWF5IGltcHJvdmUgc21hbGwgcGFja2V0IGxhdGVuY3ksIGJ1dCBpcyBnZW5lcmFsbHkgbm90IHN1aXRhYmxlCitmb3IgYnVsayB0aHJvdWdocHV0IHRyYWZmaWMuCisKK05PVEU6ICBJbnRlcnJ1cHRUaHJvdHRsZVJhdGUgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZSBUeEFic0ludERlbGF5IGFuZAorICAgICAgIFJ4QWJzSW50RGVsYXkgcGFyYW1ldGVycy4gIEluIG90aGVyIHdvcmRzLCBtaW5pbWl6aW5nIHRoZSByZWNlaXZlCisgICAgICAgYW5kL29yIHRyYW5zbWl0IGFic29sdXRlIGRlbGF5cyBkb2VzIG5vdCBmb3JjZSB0aGUgY29udHJvbGxlciB0bworICAgICAgIGdlbmVyYXRlIG1vcmUgaW50ZXJydXB0cyB0aGFuIHdoYXQgdGhlIEludGVycnVwdCBUaHJvdHRsZSBSYXRlCisgICAgICAgYWxsb3dzLgorCitOT1RFOiAgV2hlbiBlMTAwMGUgaXMgbG9hZGVkIHdpdGggZGVmYXVsdCBzZXR0aW5ncyBhbmQgbXVsdGlwbGUgYWRhcHRlcnMKKyAgICAgICBhcmUgaW4gdXNlIHNpbXVsdGFuZW91c2x5LCB0aGUgQ1BVIHV0aWxpemF0aW9uIG1heSBpbmNyZWFzZSBub24tCisgICAgICAgbGluZWFybHkuICBJbiBvcmRlciB0byBsaW1pdCB0aGUgQ1BVIHV0aWxpemF0aW9uIHdpdGhvdXQgaW1wYWN0aW5nCisgICAgICAgdGhlIG92ZXJhbGwgdGhyb3VnaHB1dCwgd2UgcmVjb21tZW5kIHRoYXQgeW91IGxvYWQgdGhlIGRyaXZlciBhcworICAgICAgIGZvbGxvd3M6CisKKyAgICAgICAgICAgbW9kcHJvYmUgZTEwMDBlIEludGVycnVwdFRocm90dGxlUmF0ZT0zMDAwLDMwMDAsMzAwMAorCisgICAgICAgVGhpcyBzZXRzIHRoZSBJbnRlcnJ1cHRUaHJvdHRsZVJhdGUgdG8gMzAwMCBpbnRlcnJ1cHRzL3NlYyBmb3IKKyAgICAgICB0aGUgZmlyc3QsIHNlY29uZCwgYW5kIHRoaXJkIGluc3RhbmNlcyBvZiB0aGUgZHJpdmVyLiAgVGhlIHJhbmdlCisgICAgICAgb2YgMjAwMCB0byAzMDAwIGludGVycnVwdHMgcGVyIHNlY29uZCB3b3JrcyBvbiBhIG1ham9yaXR5IG9mCisgICAgICAgc3lzdGVtcyBhbmQgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBidXQgdGhlIG9wdGltYWwgdmFsdWUgd2lsbAorICAgICAgIGJlIHBsYXRmb3JtLXNwZWNpZmljLiAgSWYgQ1BVIHV0aWxpemF0aW9uIGlzIG5vdCBhIGNvbmNlcm4sIHVzZQorICAgICAgIFJYX1BPTExJTkcgKE5BUEkpIGFuZCBkZWZhdWx0IGRyaXZlciBzZXR0aW5ncy4KKworUnhJbnREZWxheQorLS0tLS0tLS0tLQorVmFsaWQgUmFuZ2U6ICAgMC02NTUzNSAoMD1vZmYpCitEZWZhdWx0IFZhbHVlOiAwCisKK1RoaXMgdmFsdWUgZGVsYXlzIHRoZSBnZW5lcmF0aW9uIG9mIHJlY2VpdmUgaW50ZXJydXB0cyBpbiB1bml0cyBvZiAxLjAyNAorbWljcm9zZWNvbmRzLiAgUmVjZWl2ZSBpbnRlcnJ1cHQgcmVkdWN0aW9uIGNhbiBpbXByb3ZlIENQVSBlZmZpY2llbmN5IGlmCitwcm9wZXJseSB0dW5lZCBmb3Igc3BlY2lmaWMgbmV0d29yayB0cmFmZmljLiAgSW5jcmVhc2luZyB0aGlzIHZhbHVlIGFkZHMKK2V4dHJhIGxhdGVuY3kgdG8gZnJhbWUgcmVjZXB0aW9uIGFuZCBjYW4gZW5kIHVwIGRlY3JlYXNpbmcgdGhlIHRocm91Z2hwdXQKK29mIFRDUCB0cmFmZmljLiAgSWYgdGhlIHN5c3RlbSBpcyByZXBvcnRpbmcgZHJvcHBlZCByZWNlaXZlcywgdGhpcyB2YWx1ZQorbWF5IGJlIHNldCB0b28gaGlnaCwgY2F1c2luZyB0aGUgZHJpdmVyIHRvIHJ1biBvdXQgb2YgYXZhaWxhYmxlIHJlY2VpdmUKK2Rlc2NyaXB0b3JzLgorCitDQVVUSU9OOiAgV2hlbiBzZXR0aW5nIFJ4SW50RGVsYXkgdG8gYSB2YWx1ZSBvdGhlciB0aGFuIDAsIGFkYXB0ZXJzIG1heQorICAgICAgICAgIGhhbmcgKHN0b3AgdHJhbnNtaXR0aW5nKSB1bmRlciBjZXJ0YWluIG5ldHdvcmsgY29uZGl0aW9ucy4gIElmCisgICAgICAgICAgdGhpcyBvY2N1cnMgYSBORVRERVYgV0FUQ0hET0cgbWVzc2FnZSBpcyBsb2dnZWQgaW4gdGhlIHN5c3RlbQorICAgICAgICAgIGV2ZW50IGxvZy4gIEluIGFkZGl0aW9uLCB0aGUgY29udHJvbGxlciBpcyBhdXRvbWF0aWNhbGx5IHJlc2V0LAorICAgICAgICAgIHJlc3RvcmluZyB0aGUgbmV0d29yayBjb25uZWN0aW9uLiAgVG8gZWxpbWluYXRlIHRoZSBwb3RlbnRpYWwKKyAgICAgICAgICBmb3IgdGhlIGhhbmcgZW5zdXJlIHRoYXQgUnhJbnREZWxheSBpcyBzZXQgdG8gMC4KKworUnhBYnNJbnREZWxheQorLS0tLS0tLS0tLS0tLQorVmFsaWQgUmFuZ2U6ICAgMC02NTUzNSAoMD1vZmYpCitEZWZhdWx0IFZhbHVlOiA4CisKK1RoaXMgdmFsdWUsIGluIHVuaXRzIG9mIDEuMDI0IG1pY3Jvc2Vjb25kcywgbGltaXRzIHRoZSBkZWxheSBpbiB3aGljaCBhCityZWNlaXZlIGludGVycnVwdCBpcyBnZW5lcmF0ZWQuICBVc2VmdWwgb25seSBpZiBSeEludERlbGF5IGlzIG5vbi16ZXJvLAordGhpcyB2YWx1ZSBlbnN1cmVzIHRoYXQgYW4gaW50ZXJydXB0IGlzIGdlbmVyYXRlZCBhZnRlciB0aGUgaW5pdGlhbAorcGFja2V0IGlzIHJlY2VpdmVkIHdpdGhpbiB0aGUgc2V0IGFtb3VudCBvZiB0aW1lLiAgUHJvcGVyIHR1bmluZywKK2Fsb25nIHdpdGggUnhJbnREZWxheSwgbWF5IGltcHJvdmUgdHJhZmZpYyB0aHJvdWdocHV0IGluIHNwZWNpZmljIG5ldHdvcmsKK2NvbmRpdGlvbnMuCisKK1R4SW50RGVsYXkKKy0tLS0tLS0tLS0KK1ZhbGlkIFJhbmdlOiAgIDAtNjU1MzUgKDA9b2ZmKQorRGVmYXVsdCBWYWx1ZTogOAorCitUaGlzIHZhbHVlIGRlbGF5cyB0aGUgZ2VuZXJhdGlvbiBvZiB0cmFuc21pdCBpbnRlcnJ1cHRzIGluIHVuaXRzIG9mCisxLjAyNCBtaWNyb3NlY29uZHMuICBUcmFuc21pdCBpbnRlcnJ1cHQgcmVkdWN0aW9uIGNhbiBpbXByb3ZlIENQVQorZWZmaWNpZW5jeSBpZiBwcm9wZXJseSB0dW5lZCBmb3Igc3BlY2lmaWMgbmV0d29yayB0cmFmZmljLiAgSWYgdGhlCitzeXN0ZW0gaXMgcmVwb3J0aW5nIGRyb3BwZWQgdHJhbnNtaXRzLCB0aGlzIHZhbHVlIG1heSBiZSBzZXQgdG9vIGhpZ2gKK2NhdXNpbmcgdGhlIGRyaXZlciB0byBydW4gb3V0IG9mIGF2YWlsYWJsZSB0cmFuc21pdCBkZXNjcmlwdG9ycy4KKworVHhBYnNJbnREZWxheQorLS0tLS0tLS0tLS0tLQorVmFsaWQgUmFuZ2U6ICAgMC02NTUzNSAoMD1vZmYpCitEZWZhdWx0IFZhbHVlOiAzMgorCitUaGlzIHZhbHVlLCBpbiB1bml0cyBvZiAxLjAyNCBtaWNyb3NlY29uZHMsIGxpbWl0cyB0aGUgZGVsYXkgaW4gd2hpY2ggYQordHJhbnNtaXQgaW50ZXJydXB0IGlzIGdlbmVyYXRlZC4gIFVzZWZ1bCBvbmx5IGlmIFR4SW50RGVsYXkgaXMgbm9uLXplcm8sCit0aGlzIHZhbHVlIGVuc3VyZXMgdGhhdCBhbiBpbnRlcnJ1cHQgaXMgZ2VuZXJhdGVkIGFmdGVyIHRoZSBpbml0aWFsCitwYWNrZXQgaXMgc2VudCBvbiB0aGUgd2lyZSB3aXRoaW4gdGhlIHNldCBhbW91bnQgb2YgdGltZS4gIFByb3BlciB0dW5pbmcsCithbG9uZyB3aXRoIFR4SW50RGVsYXksIG1heSBpbXByb3ZlIHRyYWZmaWMgdGhyb3VnaHB1dCBpbiBzcGVjaWZpYworbmV0d29yayBjb25kaXRpb25zLgorCitDb3B5YnJlYWsKKy0tLS0tLS0tLQorVmFsaWQgUmFuZ2U6ICAgMC14eHh4eHh4ICgwPW9mZikKK0RlZmF1bHQgVmFsdWU6IDI1NgorCitEcml2ZXIgY29waWVzIGFsbCBwYWNrZXRzIGJlbG93IG9yIGVxdWFsaW5nIHRoaXMgc2l6ZSB0byBhIGZyZXNoIFJYCitidWZmZXIgYmVmb3JlIGhhbmRpbmcgaXQgdXAgdGhlIHN0YWNrLgorCitUaGlzIHBhcmFtZXRlciBpcyBkaWZmZXJlbnQgdGhhbiBvdGhlciBwYXJhbWV0ZXJzLCBpbiB0aGF0IGl0IGlzIGEKK3NpbmdsZSAobm90IDEsMSwxIGV0Yy4pIHBhcmFtZXRlciBhcHBsaWVkIHRvIGFsbCBkcml2ZXIgaW5zdGFuY2VzIGFuZAoraXQgaXMgYWxzbyBhdmFpbGFibGUgZHVyaW5nIHJ1bnRpbWUgYXQKKy9zeXMvbW9kdWxlL2UxMDAwZS9wYXJhbWV0ZXJzL2NvcHlicmVhaworCitTbWFydFBvd2VyRG93bkVuYWJsZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1ZhbGlkIFJhbmdlOiAwLTEKK0RlZmF1bHQgVmFsdWU6ICAwIChkaXNhYmxlZCkKKworQWxsb3dzIFBIWSB0byB0dXJuIG9mZiBpbiBsb3dlciBwb3dlciBzdGF0ZXMuIFRoZSB1c2VyIGNhbiBzZXQgdGhpcyBwYXJhbWV0ZXIKK2luIHN1cHBvcnRlZCBjaGlwc2V0cy4KKworS3VtZXJhbkxvY2tMb3NzCistLS0tLS0tLS0tLS0tLS0KK1ZhbGlkIFJhbmdlOiAwLTEKK0RlZmF1bHQgVmFsdWU6IDEgKGVuYWJsZWQpCisKK1RoaXMgd29ya2Fyb3VuZCBza2lwcyByZXNldHRpbmcgdGhlIFBIWSBhdCBzaHV0ZG93biBmb3IgdGhlIGluaXRpYWwKK3NpbGljb24gcmVsZWFzZXMgb2YgSUNIOCBzeXN0ZW1zLgorCitJbnRNb2RlCistLS0tLS0tCitWYWxpZCBSYW5nZTogMC0yICgwPWxlZ2FjeSwgMT1NU0ksIDI9TVNJLVgpCitEZWZhdWx0IFZhbHVlOiAyCisKK0FsbG93cyBjaGFuZ2luZyB0aGUgaW50ZXJydXB0IG1vZGUgYXQgbW9kdWxlIGxvYWQgdGltZSwgd2l0aG91dCByZXF1aXJpbmcgYQorcmVjb21waWxlLiBJZiB0aGUgZHJpdmVyIGxvYWQgZmFpbHMgdG8gZW5hYmxlIGEgc3BlY2lmaWMgaW50ZXJydXB0IG1vZGUsIHRoZQorZHJpdmVyIHdpbGwgdHJ5IG90aGVyIGludGVycnVwdCBtb2RlcywgZnJvbSBsZWFzdCB0byBtb3N0IGNvbXBhdGlibGUuICBUaGUKK2ludGVycnVwdCBvcmRlciBpcyBNU0ktWCwgTVNJLCBMZWdhY3kuICBJZiBzcGVjaWZ5aW5nIE1TSSAoSW50TW9kZT0xKQoraW50ZXJydXB0cywgb25seSBNU0kgYW5kIExlZ2FjeSB3aWxsIGJlIGF0dGVtcHRlZC4KKworQ3JjU3RyaXBwaW5nCistLS0tLS0tLS0tLS0KK1ZhbGlkIFJhbmdlOiAwLTEKK0RlZmF1bHQgVmFsdWU6IDEgKGVuYWJsZWQpCisKK1N0cmlwIHRoZSBDUkMgZnJvbSByZWNlaXZlZCBwYWNrZXRzIGJlZm9yZSBzZW5kaW5nIHVwIHRoZSBuZXR3b3JrIHN0YWNrLiAgSWYKK3lvdSBoYXZlIGEgbWFjaGluZSB3aXRoIGEgQk1DIGVuYWJsZWQgYnV0IGNhbm5vdCByZWNlaXZlIElQTUkgdHJhZmZpYyBhZnRlcgorbG9hZGluZyBvciBlbmFibGluZyB0aGUgZHJpdmVyLCB0cnkgZGlzYWJsaW5nIHRoaXMgZmVhdHVyZS4KKworV3JpdGVQcm90ZWN0TlZNCistLS0tLS0tLS0tLS0tLS0KK1ZhbGlkIFJhbmdlOiAwLDEKK0RlZmF1bHQgVmFsdWU6IDEKKworSWYgc2V0IHRvIDEsIGNvbmZpZ3VyZSB0aGUgaGFyZHdhcmUgdG8gaWdub3JlIGFsbCB3cml0ZS9lcmFzZSBjeWNsZXMgdG8gdGhlCitHYkUgcmVnaW9uIGluIHRoZSBJQ0h4IE5WTSAoaW4gb3JkZXIgdG8gcHJldmVudCBhY2NpZGVudGFsIGNvcnJ1cHRpb24gb2YgdGhlCitOVk0pLiBUaGlzIGZlYXR1cmUgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIHBhcmFtZXRlciB0byAwIGR1cmluZyBpbml0aWFsCitkcml2ZXIgbG9hZC4KK05PVEU6IFRoZSBtYWNoaW5lIG11c3QgYmUgcG93ZXIgY3ljbGVkIChmdWxsIG9mZi9vbikgd2hlbiBlbmFibGluZyBOVk0gd3JpdGVzCit2aWEgc2V0dGluZyB0aGUgcGFyYW1ldGVyIHRvIHplcm8uIE9uY2UgdGhlIE5WTSBoYXMgYmVlbiBsb2NrZWQgKHZpYSB0aGUKK3BhcmFtZXRlciBhdCAxIHdoZW4gdGhlIGRyaXZlciBsb2FkcykgaXQgY2Fubm90IGJlIHVubG9ja2VkIGV4Y2VwdCB2aWEgcG93ZXIKK2N5Y2xlLgorCitBZGRpdGlvbmFsIENvbmZpZ3VyYXRpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgSnVtYm8gRnJhbWVzCisgIC0tLS0tLS0tLS0tLQorICBKdW1ibyBGcmFtZXMgc3VwcG9ydCBpcyBlbmFibGVkIGJ5IGNoYW5naW5nIHRoZSBNVFUgdG8gYSB2YWx1ZSBsYXJnZXIgdGhhbgorICB0aGUgZGVmYXVsdCBvZiAxNTAwLiAgVXNlIHRoZSBpZmNvbmZpZyBjb21tYW5kIHRvIGluY3JlYXNlIHRoZSBNVFUgc2l6ZS4KKyAgRm9yIGV4YW1wbGU6CisKKyAgICAgICBpZmNvbmZpZyBldGg8eD4gbXR1IDkwMDAgdXAKKworICBUaGlzIHNldHRpbmcgaXMgbm90IHNhdmVkIGFjcm9zcyByZWJvb3RzLgorCisgIE5vdGVzOgorCisgIC0gVGhlIG1heGltdW0gTVRVIHNldHRpbmcgZm9yIEp1bWJvIEZyYW1lcyBpcyA5MjE2LiAgVGhpcyB2YWx1ZSBjb2luY2lkZXMKKyAgICB3aXRoIHRoZSBtYXhpbXVtIEp1bWJvIEZyYW1lcyBzaXplIG9mIDkyMzQgYnl0ZXMuCisKKyAgLSBVc2luZyBKdW1ibyBmcmFtZXMgYXQgMTAgb3IgMTAwIE1icHMgaXMgbm90IHN1cHBvcnRlZCBhbmQgbWF5IHJlc3VsdCBpbgorICAgIHBvb3IgcGVyZm9ybWFuY2Ugb3IgbG9zcyBvZiBsaW5rLgorCisgIC0gU29tZSBhZGFwdGVycyBsaW1pdCBKdW1ibyBGcmFtZXMgc2l6ZWQgcGFja2V0cyB0byBhIG1heGltdW0gb2YKKyAgICA0MDk2IGJ5dGVzIGFuZCBzb21lIGFkYXB0ZXJzIGRvIG5vdCBzdXBwb3J0IEp1bWJvIEZyYW1lcy4KKworICAtIEp1bWJvIEZyYW1lcyBjYW5ub3QgYmUgY29uZmlndXJlZCBvbiBhbiA4MjU3OS1iYXNlZCBOZXR3b3JrIGRldmljZSwgaWYKKyAgICBNQUNTZWMgaXMgZW5hYmxlZCBvbiB0aGUgc3lzdGVtLgorCisgIGV0aHRvb2wKKyAgLS0tLS0tLQorICBUaGUgZHJpdmVyIHV0aWxpemVzIHRoZSBldGh0b29sIGludGVyZmFjZSBmb3IgZHJpdmVyIGNvbmZpZ3VyYXRpb24gYW5kCisgIGRpYWdub3N0aWNzLCBhcyB3ZWxsIGFzIGRpc3BsYXlpbmcgc3RhdGlzdGljYWwgaW5mb3JtYXRpb24uICBXZQorICBzdHJvbmdseSByZWNvbW1lbmQgZG93bmxvYWRpbmcgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGV0aHRvb2wgYXQ6CisKKyAgaHR0cDovL2Z0cC5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvCisKKyAgTk9URTogV2hlbiB2YWxpZGF0aW5nIGVuYWJsZS9kaXNhYmxlIHRlc3RzIG9uIHNvbWUgcGFydHMgKDgyNTc4LCBmb3IgZXhhbXBsZSkKKyAgeW91IG5lZWQgdG8gYWRkIGEgZmV3IHNlY29uZHMgYmV0d2VlbiB0ZXN0cyB3aGVuIHdvcmtpbmcgd2l0aCBldGh0b29sLgorCisgIFNwZWVkIGFuZCBEdXBsZXgKKyAgLS0tLS0tLS0tLS0tLS0tLQorICBTcGVlZCBhbmQgRHVwbGV4IGFyZSBjb25maWd1cmVkIHRocm91Z2ggdGhlIGV0aHRvb2wqIHV0aWxpdHkuIEZvcgorICBpbnN0cnVjdGlvbnMsICByZWZlciB0byB0aGUgZXRodG9vbCBtYW4gcGFnZS4KKworICBFbmFibGluZyBXYWtlIG9uIExBTiogKFdvTCkKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFdvTCBpcyBjb25maWd1cmVkIHRocm91Z2ggdGhlIGV0aHRvb2wqIHV0aWxpdHkuIEZvciBpbnN0cnVjdGlvbnMgb24KKyAgZW5hYmxpbmcgV29MIHdpdGggZXRodG9vbCwgcmVmZXIgdG8gdGhlIGV0aHRvb2wgbWFuIHBhZ2UuCisKKyAgV29MIHdpbGwgYmUgZW5hYmxlZCBvbiB0aGUgc3lzdGVtIGR1cmluZyB0aGUgbmV4dCBzaHV0IGRvd24gb3IgcmVib290LgorICBGb3IgdGhpcyBkcml2ZXIgdmVyc2lvbiwgaW4gb3JkZXIgdG8gZW5hYmxlIFdvTCwgdGhlIGUxMDAwZSBkcml2ZXIgbXVzdCBiZQorICBsb2FkZWQgd2hlbiBzaHV0dGluZyBkb3duIG9yIHJlYm9vdGluZyB0aGUgc3lzdGVtLgorCisgIEluIG1vc3QgY2FzZXMgV2FrZSBPbiBMQU4gaXMgb25seSBzdXBwb3J0ZWQgb24gcG9ydCBBIGZvciBtdWx0aXBsZSBwb3J0CisgIGFkYXB0ZXJzLiBUbyB2ZXJpZnkgaWYgYSBwb3J0IHN1cHBvcnRzIFdha2Ugb24gTGFuIHJ1biBldGh0b29sIGV0aDxYPi4KKworU3VwcG9ydAorPT09PT09PQorCitGb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiwgZ28gdG8gdGhlIEludGVsIHN1cHBvcnQgd2Vic2l0ZSBhdDoKKworICAgIHd3dy5pbnRlbC5jb20vc3VwcG9ydC8KKworb3IgdGhlIEludGVsIFdpcmVkIE5ldHdvcmtpbmcgcHJvamVjdCBob3N0ZWQgYnkgU291cmNlZm9yZ2UgYXQ6CisKKyAgICBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2UxMDAwCisKK0lmIGFuIGlzc3VlIGlzIGlkZW50aWZpZWQgd2l0aCB0aGUgcmVsZWFzZWQgc291cmNlIGNvZGUgb24gdGhlIHN1cHBvcnRlZAora2VybmVsIHdpdGggYSBzdXBwb3J0ZWQgYWRhcHRlciwgZW1haWwgdGhlIHNwZWNpZmljIGluZm9ybWF0aW9uIHJlbGF0ZWQKK3RvIHRoZSBpc3N1ZSB0byBlMTAwMC1kZXZlbEBsaXN0cy5zZi5uZXQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9lcWwudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2VxbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYxNTUwMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9lcWwudHh0CkBAIC0wLDAgKzEsNTI4IEBACisgIEVRTCBEcml2ZXI6IFNlcmlhbCBJUCBMb2FkIEJhbGFuY2luZyBIT1dUTworICBTaW1vbiAiR3VydSBBbGVwaC1OdWxsIiBKYW5lcywgc2ltb25AbmNtLmNvbQorICB2MS4xLCBGZWJydWFyeSAyNywgMTk5NQorCisgIFRoaXMgaXMgdGhlIG1hbnVhbCBmb3IgdGhlIEVRTCBkZXZpY2UgZHJpdmVyLiBFUUwgaXMgYSBzb2Z0d2FyZSBkZXZpY2UKKyAgdGhhdCBsZXRzIHlvdSBsb2FkLWJhbGFuY2UgSVAgc2VyaWFsIGxpbmtzIChTTElQIG9yIHVuY29tcHJlc3NlZCBQUFApCisgIHRvIGluY3JlYXNlIHlvdXIgYmFuZHdpZHRoLiBJdCB3aWxsIG5vdCByZWR1Y2UgeW91ciBsYXRlbmN5IChpLmUuIHBpbmcKKyAgdGltZXMpIGV4Y2VwdCBpbiB0aGUgY2FzZSB3aGVyZSB5b3UgYWxyZWFkeSBoYXZlIGxvdHMgb2YgdHJhZmZpYyBvbgorICB5b3VyIGxpbmssIGluIHdoaWNoIGl0IHdpbGwgaGVscCB0aGVtIG91dC4gVGhpcyBkcml2ZXIgaGFzIGJlZW4gdGVzdGVkCisgIHdpdGggdGhlIDEuMS43NSBrZXJuZWwsIGFuZCBpcyBrbm93biB0byBoYXZlIHBhdGNoZWQgY2xlYW5seSB3aXRoCisgIDEuMS44Ni4gIFNvbWUgdGVzdGluZyB3aXRoIDEuMS45MiBoYXMgYmVlbiBkb25lIHdpdGggdGhlIHYxLjEgcGF0Y2gKKyAgd2hpY2ggd2FzIG9ubHkgY3JlYXRlZCB0byBwYXRjaCBjbGVhbmx5IGluIHRoZSB2ZXJ5IGxhdGVzdCBrZXJuZWwKKyAgc291cmNlIHRyZWVzLiAoWWVzLCBpdCB3b3JrZWQgZmluZS4pCisKKyAgMS4gIEludHJvZHVjdGlvbgorCisgIFdoaWNoIGlzIHdvcnNlPyBBIGh1Z2UgZmVlIGZvciBhIDU2SyBsZWFzZWQgbGluZSBvciB0d28gcGhvbmUgbGluZXM/CisgIEl0J3MgcHJvYmFibHkgdGhlIGZvcm1lci4gIElmIHlvdSBmaW5kIHlvdXJzZWxmIGNyYXZpbmcgbW9yZSBiYW5kd2lkdGgsCisgIGFuZCBoYXZlIGEgSVNQIHRoYXQgaXMgZmxleGlibGUsIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBiaW5kIG1vZGVtcworICB0b2dldGhlciB0byB3b3JrIGFzIG9uZSBwb2ludC10by1wb2ludCBsaW5rIHRvIGluY3JlYXNlIHlvdXIKKyAgYmFuZHdpZHRoLiAgQWxsIHdpdGhvdXQgaGF2aW5nIHRvIGhhdmUgYSBzcGVjaWFsIGJsYWNrIGJveCBvbiBlaXRoZXIKKyAgc2lkZS4KKworCisgIFRoZSBlcWwgZHJpdmVyIGhhcyBvbmx5IGJlZW4gdGVzdGVkIHdpdGggdGhlIExpdmluZ3N0b24gUG9ydE1hc3Rlci0yZQorICB0ZXJtaW5hbCBzZXJ2ZXIuIEkgZG8gbm90IGtub3cgaWYgb3RoZXIgdGVybWluYWwgc2VydmVycyBzdXBwb3J0IGxvYWQtCisgIGJhbGFuY2luZywgYnV0IEkgZG8ga25vdyB0aGF0IHRoZSBQb3J0TWFzdGVyIGRvZXMgaXQsIGFuZCBkb2VzIGl0CisgIGFsbW9zdCBhcyB3ZWxsIGFzIHRoZSBlcWwgZHJpdmVyIHNlZW1zIHRvIGRvIGl0ICgtLSBVbmZvcnR1bmF0ZWx5LCBpbgorICBteSB0ZXN0aW5nIHNvIGZhciwgdGhlIExpdmluZ3N0b24gUG9ydE1hc3RlciAyZSdzIGxvYWQtYmFsYW5jaW5nIGlzIGEKKyAgZ29vZCAxIHRvIDIgS0IvcyBzbG93ZXIgdGhhbiB0aGUgdGVzdCBtYWNoaW5lIHdvcmtpbmcgd2l0aCBhIDI4LjggS2JwcworICBhbmQgMTQuNCBLYnBzIGNvbm5lY3Rpb24uICBIb3dldmVyLCBJIGFtIG5vdCBzdXJlIHRoYXQgaXQgcmVhbGx5IGlzCisgIHRoZSBQb3J0TWFzdGVyLCBvciBpZiBpdCdzIExpbnV4J3MgVENQIGRyaXZlcnMuIEknbSB0b2xkIHRoYXQgTGludXgncworICBUQ1AgaW1wbGVtZW50YXRpb24gaXMgcHJldHR5IGZhc3QgdGhvdWdoLi0tKQorCisKKyAgSSBzdWdnZXN0IHRvIElTUHMgb3V0IHRoZXJlIHRoYXQgaXQgd291bGQgcHJvYmFibHkgYmUgZmFpciB0byBjaGFyZ2UKKyAgYSBsb2FkLWJhbGFuY2luZyBjbGllbnQgNzUlIG9mIHRoZSBjb3N0IG9mIHRoZSBzZWNvbmQgbGluZSBhbmQgNTAlIG9mCisgIHRoZSBjb3N0IG9mIHRoZSB0aGlyZCBsaW5lIGV0Yy4uLgorCisKKyAgSGV5LCB3ZSBjYW4gYWxsIGRyZWFtIHlvdSBrbm93Li4uCisKKworICAyLiAgS2VybmVsIENvbmZpZ3VyYXRpb24KKworICBIZXJlIEkgZGVzY3JpYmUgdGhlIGdlbmVyYWwgc3RlcHMgb2YgZ2V0dGluZyBhIGtlcm5lbCB1cCBhbmQgd29ya2luZworICB3aXRoIHRoZSBlcWwgZHJpdmVyLglGcm9tIHBhdGNoaW5nLCBidWlsZGluZywgdG8gaW5zdGFsbGluZy4KKworCisgIDIuMS4JUGF0Y2hpbmcgVGhlIEtlcm5lbAorCisgIElmIHlvdSBkbyBub3QgaGF2ZSBvciBjYW5ub3QgZ2V0IGEgY29weSBvZiB0aGUga2VybmVsIHdpdGggdGhlIGVxbAorICBkcml2ZXIgZm9sZGVkIGludG8gaXQsIGdldCB5b3VyIGNvcHkgb2YgdGhlIGRyaXZlciBmcm9tCisgIGZ0cDovL3NsYXVnaHRlci5uY20uY29tL3B1Yi9MaW51eC9MT0FEX0JBTEFOQ0lORy9lcWwtMS4xLnRhci5nei4KKyAgVW5wYWNrIHRoaXMgYXJjaGl2ZSBzb21lcGxhY2Ugb2J2aW91cyBsaWtlIC91c3IvbG9jYWwvc3JjLy4gIEl0IHdpbGwKKyAgY3JlYXRlIHRoZSBmb2xsb3dpbmcgZmlsZXM6CisKKworCisgICAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworICAgICAgIC1ydy1yLS1yLS0gZ3VydS9uY20JMTk4IEphbiAxOSAxODo1MyAxOTk1IGVxbC0xLjEvTk8tV0FSUkFOVFkKKyAgICAgICAtcnctci0tci0tIGd1cnUvbmNtCTMwNjIwIEZlYiAyNyAyMTo0MCAxOTk1IGVxbC0xLjEvZXFsLTEuMS5wYXRjaAorICAgICAgIC1yd3hyLXhyLXggZ3VydS9uY20JMTYxMTEgSmFuIDEyIDIyOjI5IDE5OTUgZXFsLTEuMS9lcWxfZW5zbGF2ZQorICAgICAgIC1ydy1yLS1yLS0gZ3VydS9uY20JMjE5NSBKYW4gMTAgMjE6NDggMTk5NSBlcWwtMS4xL2VxbF9lbnNsYXZlLmMKKyAgICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisKKyAgVW5wYWNrIGEgcmVjZW50IGtlcm5lbCAoc29tZXRoaW5nIGFmdGVyIDEuMS45Mikgc29tZXBsYWNlIGNvbnZlbmllbnQKKyAgbGlrZSBzYXkgL3Vzci9zcmMvbGludXgtMS4xLjkyLmVxbC4gVXNlIHN5bWJvbGljIGxpbmtzIHRvIHBvaW50CisgIC91c3Ivc3JjL2xpbnV4IHRvIHRoaXMgZGV2ZWxvcG1lbnQgZGlyZWN0b3J5LgorCisKKyAgQXBwbHkgdGhlIHBhdGNoIGJ5IHJ1bm5pbmcgdGhlIGNvbW1hbmRzOgorCisKKyAgICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisgICAgICAgY2QgL3Vzci9zcmMKKyAgICAgICBwYXRjaCA8L3Vzci9sb2NhbC9zcmMvZXFsLTEuMS9lcWwtMS4xLnBhdGNoCisgICAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworCisKKworCisKKyAgMi4yLglCdWlsZGluZyBUaGUgS2VybmVsCisKKyAgQWZ0ZXIgcGF0Y2hpbmcgdGhlIGtlcm5lbCwgcnVuIG1ha2UgY29uZmlnIGFuZCBjb25maWd1cmUgdGhlIGtlcm5lbAorICBmb3IgeW91ciBoYXJkd2FyZS4KKworCisgIEFmdGVyIGNvbmZpZ3VyYXRpb24sIG1ha2UgYW5kIGluc3RhbGwgYWNjb3JkaW5nIHRvIHlvdXIgaGFiaXQuCisKKworICAzLiAgTmV0d29yayBDb25maWd1cmF0aW9uCisKKyAgU28gZmFyLCBJIGhhdmUgb25seSB1c2VkIHRoZSBlcWwgZGV2aWNlIHdpdGggdGhlIERTTElQIFNMSVAgY29ubmVjdGlvbgorICBtYW5hZ2VyIGJ5IE1hdHQgRGlsbG9uICgtLSAiVGhlIG1hbiB3aG8gc29sZCBoaXMgc291bCB0byBjb2RlIHNvIG11Y2gKKyAgc28gcXVpY2tseS4iLS0pIC4gIEhvdyB5b3UgY29uZmlndXJlIGl0IGZvciBvdGhlciAiY29ubmVjdGlvbiIKKyAgbWFuYWdlcnMgaXMgdXAgdG8geW91LiAgTW9zdCBvdGhlciBjb25uZWN0aW9uIG1hbmFnZXJzIHRoYXQgSSd2ZSBzZWVuCisgIGRvbid0IGRvIGEgdmVyeSBnb29kIGpvYiB3aGVuIGl0IGNvbWVzIHRvIGhhbmRsaW5nIG1vcmUgdGhhbiBvbmUKKyAgY29ubmVjdGlvbi4KKworCisgIDMuMS4JL2V0Yy9yYy5kL3JjLmluZXQxCisKKyAgSW4gcmMuaW5ldDEsIGlmY29uZmlnIHRoZSBlcWwgZGV2aWNlIHRvIHRoZSBJUCBhZGRyZXNzIHlvdSB1c3VhbGx5IHVzZQorICBmb3IgeW91ciBtYWNoaW5lLCBhbmQgdGhlIE1UVSB5b3UgcHJlZmVyIGZvciB5b3VyIFNMSVAgbGluZXMuCU9uZQorICBjb3VsZCBhcmd1ZSB0aGF0IE1UVSBzaG91bGQgYmUgcm91Z2hseSBoYWxmIHRoZSB1c3VhbCBzaXplIGZvciB0d28KKyAgbW9kZW1zLCBvbmUtdGhpcmQgZm9yIHRocmVlLCBvbmUtZm91cnRoIGZvciBmb3VyLCBldGMuLi4gIEJ1dCBnb2luZworICB0b28gZmFyIGJlbG93IDI5NiBpcyBwcm9iYWJseSBvdmVya2lsbC4gSGVyZSBpcyBhbiBleGFtcGxlIGlmY29uZmlnCisgIGNvbW1hbmQgdGhhdCBzZXRzIHVwIHRoZSBlcWwgZGV2aWNlOgorCisKKworICAgICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKyAgICAgICBpZmNvbmZpZyBlcWwgMTk4LjY3LjMzLjIzOSBtdHUgMTAwNgorICAgICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKworCisKKworCisgIE9uY2UgdGhlIGVxbCBkZXZpY2UgaXMgdXAgYW5kIHJ1bm5pbmcsIGFkZCBhIHN0YXRpYyBkZWZhdWx0IHJvdXRlIHRvCisgIGl0IGluIHRoZSByb3V0aW5nIHRhYmxlIHVzaW5nIHRoZSBjb29sIG5ldyByb3V0ZSBzeW50YXggdGhhdCBtYWtlcworICBsaWZlIHNvIG11Y2ggZWFzaWVyOgorCisKKworICAgICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKyAgICAgICByb3V0ZSBhZGQgZGVmYXVsdCBlcWwKKyAgICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisKKworICAzLjIuCUVuc2xhdmluZyBEZXZpY2VzIEJ5IEhhbmQKKworICBFbnNsYXZpbmcgZGV2aWNlcyBieSBoYW5kIHJlcXVpcmVzIHR3byB1dGlsaXR5IHByb2dyYW1zOiBlcWxfZW5zbGF2ZQorICBhbmQgZXFsX2VtYW5jaXBhdGUgKC0tIGVxbF9lbWFuY2lwYXRlIGhhc24ndCBiZWVuIHdyaXR0ZW4gYmVjYXVzZSB3aGVuCisgIGFuIGVuc2xhdmVkIGRldmljZSAiZGllcyIsIGl0IGlzIGF1dG9tYXRpY2FsbHkgdGFrZW4gb3V0IG9mIHRoZSBxdWV1ZS4KKyAgSSBoYXZlbid0IGZvdW5kIGEgZ29vZCByZWFzb24gdG8gd3JpdGUgaXQgeWV0Li4uIG90aGVyIHRoYW4gZm9yCisgIGNvbXBsZXRlbmVzcywgYnV0IHRoYXQgaXNuJ3QgYSBnb29kIG1vdGl2YXRvciBpcyBpdD8tLSkKKworCisgIFRoZSBzeW50YXggZm9yIGVuc2xhdmluZyBhIGRldmljZSBpcyAiZXFsX2Vuc2xhdmUgPG1hc3Rlci1uYW1lPgorICA8c2xhdmUtbmFtZT4gPGVzdGltYXRlZC1icHM+Ii4gIEhlcmUgYXJlIHNvbWUgZXhhbXBsZSBlbnNsYXZpbmdzOgorCisKKworICAgICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKyAgICAgICBlcWxfZW5zbGF2ZSBlcWwgc2wwIDI4ODAwCisgICAgICAgZXFsX2Vuc2xhdmUgZXFsIHBwcDAgMTQ0MDAKKyAgICAgICBlcWxfZW5zbGF2ZSBlcWwgc2wxIDU3NjAwCisgICAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworCisKKworCisKKyAgV2hlbiB5b3Ugd2FudCB0byBmcmVlIGEgZGV2aWNlIGZyb20gaXRzIGxpZmUgb2Ygc2xhdmVyeSwgeW91IGNhbgorICBlaXRoZXIgZG93biB0aGUgZGV2aWNlIHdpdGggaWZjb25maWcgKGVxbCB3aWxsIGF1dG9tYXRpY2FsbHkgYnVyeSB0aGUKKyAgZGVhZCBzbGF2ZSBhbmQgcmVtb3ZlIGl0IGZyb20gaXRzIHF1ZXVlKSBvciB1c2UgZXFsX2VtYW5jaXBhdGUgdG8gZnJlZQorICBpdC4gKC0tIE9yIGp1c3QgaWZjb25maWcgaXQgZG93biwgYW5kIHRoZSBlcWwgZHJpdmVyIHdpbGwgdGFrZSBpdCBvdXQKKyAgZm9yIHlvdS4tLSkKKworCisKKyAgICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisgICAgICAgZXFsX2VtYW5jaXBhdGUgZXFsIHNsMAorICAgICAgIGVxbF9lbWFuY2lwYXRlIGVxbCBwcHAwCisgICAgICAgZXFsX2VtYW5jaXBhdGUgZXFsIHNsMQorICAgICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKworCisKKworCisgIDMuMy4JRFNMSVAgQ29uZmlndXJhdGlvbiBmb3IgdGhlIGVxbCBEZXZpY2UKKworICBUaGUgZ2VuZXJhbCBpZGVhIGlzIHRvIGJyaW5nIHVwIGFuZCBrZWVwIHVwIGFzIG1hbnkgU0xJUCBjb25uZWN0aW9ucworICBhcyB5b3UgbmVlZCwgYXV0b21hdGljYWxseS4KKworCisgIDMuMy4xLiAgL2V0Yy9zbGlwL3J1bnNsaXAuY29uZgorCisgIEhlcmUgaXMgYW4gZXhhbXBsZSBydW5zbGlwLmNvbmY6CisKKworCisKKworCisKKworCisKKworCisKKworCisgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKyAgbmFtZQkJc2wtbGluZS0xCisgIGVuYWJsZWQKKyAgYmF1ZAkJMzg0MDAKKyAgbXR1CQk1NzYKKyAgZHVjbWQJCS1lIC9ldGMvc2xpcC9kaWFsb3V0L2N1YTItMjg4LnhwIC10IDkKKyAgY29tbWFuZAkgZXFsX2Vuc2xhdmUgZXFsICRpbnRlcmZhY2UgMjg4MDAKKyAgYWRkcmVzcwkgMTk4LjY3LjMzLjIzOQorICBsaW5lCQkvZGV2L2N1YTIKKworICBuYW1lCQlzbC1saW5lLTIKKyAgZW5hYmxlZAorICBiYXVkCQkzODQwMAorICBtdHUJCTU3NgorICBkdWNtZAkJLWUgL2V0Yy9zbGlwL2RpYWxvdXQvY3VhMy0yODgueHAgLXQgOQorICBjb21tYW5kCSBlcWxfZW5zbGF2ZSBlcWwgJGludGVyZmFjZSAyODgwMAorICBhZGRyZXNzCSAxOTguNjcuMzMuMjM5CisgIGxpbmUJCS9kZXYvY3VhMworICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisKKworCisKKworICAzLjQuCVVzaW5nIFBQUCBhbmQgdGhlIGVxbCBEZXZpY2UKKworICBJIGhhdmUgbm90IHlldCBkb25lIGFueSBsb2FkLWJhbGFuY2luZyB0ZXN0aW5nIGZvciBQUFAgZGV2aWNlcywgbWFpbmx5CisgIGJlY2F1c2UgSSBkb24ndCBoYXZlIGEgUFBQLWNvbm5lY3Rpb24gbWFuYWdlciBsaWtlIFNMSVAgaGFzIHdpdGgKKyAgRFNMSVAuIEkgZGlkIGZpbmQgYSBnb29kIHRpcCBmcm9tIExpbnV4TkVUOkJpbGx5IGZvciBQUFAgcGVyZm9ybWFuY2U6CisgIG1ha2Ugc3VyZSB5b3UgaGF2ZSBhc3luY21hcCBzZXQgdG8gc29tZXRoaW5nIHNvIHRoYXQgY29udHJvbAorICBjaGFyYWN0ZXJzIGFyZSBub3QgZXNjYXBlZC4KKworCisgIEkgdHJpZWQgdG8gZml4IHVwIGEgUFBQIHNjcmlwdC9zeXN0ZW0gZm9yIHJlZGlhbGluZyBsb3N0IFBQUAorICBjb25uZWN0aW9ucyBmb3IgdXNlIHdpdGggdGhlIGVxbCBkcml2ZXIgdGhlIHdlZWtlbmQgb2YgRmViIDI1LTI2ICc5NQorICAoSGVyZWFmdGVyIGtub3duIGFzIHRoZSA4LWhvdXIgUFBQIEhhdGUgRmVzdGl2YWwpLiAgUGVyaGFwcyBsYXRlciB0aGlzCisgIHllYXIuCisKKworICA0LiAgQWJvdXQgdGhlIFNsYXZlIFNjaGVkdWxlciBBbGdvcml0aG0KKworICBUaGUgc2xhdmUgc2NoZWR1bGVyIHByb2JhYmx5IGNvdWxkIGJlIHJlcGxhY2VkIHdpdGggYSBkb3plbiBvdGhlcgorICB0aGluZ3MgYW5kIHB1c2ggdHJhZmZpYyBtdWNoIGZhc3Rlci4JVGhlIGZvcm11bGEgaW4gdGhlIGN1cnJlbnQgc2V0CisgIHVwIG9mIHRoZSBkcml2ZXIgd2FzIHR1bmVkIHRvIGhhbmRsZSBzbGF2ZXMgd2l0aCB3aWxkbHkgZGlmZmVyZW50CisgIGJpdHMtcGVyLXNlY29uZCAicHJpb3JpdGllcyIuCisKKworICBBbGwgdGVzdGluZyBJIGhhdmUgZG9uZSB3YXMgd2l0aCB0d28gMjguOCBWLkZDIG1vZGVtcywgb25lIGNvbm5lY3RpbmcKKyAgYXQgMjg4MDAgYnBzIG9yIHNsb3dlciwgYW5kIHRoZSBvdGhlciBjb25uZWN0aW5nIGF0IDE0NDAwIGJwcyBhbGwgdGhlCisgIHRpbWUuCisKKworICBPbmUgdmVyc2lvbiBvZiB0aGUgc2NoZWR1bGVyIHdhcyBhYmxlIHRvIHB1c2ggNS4zIEsvcyB0aHJvdWdoIHRoZQorICAyODgwMCBhbmQgMTQ0MDAgY29ubmVjdGlvbnMsIGJ1dCB3aGVuIHRoZSBwcmlvcml0aWVzIG9uIHRoZSBsaW5rcyB3ZXJlCisgIHZlcnkgd2lkZSBhcGFydCAoNTc2MDAgdnMuIDE0NDAwKSB0aGUgImZhc3RlciIgbW9kZW0gcmVjZWl2ZWQgYWxsCisgIHRyYWZmaWMgYW5kIHRoZSAic2xvd2VyIiBtb2RlbSBzdGFydmVkLgorCisKKyAgNS4gIFRlc3RlcnMnIFJlcG9ydHMKKworICBTb21lIHBlb3BsZSBoYXZlIGV4cGVyaW1lbnRlZCB3aXRoIHRoZSBlcWwgZGV2aWNlIHdpdGggbmV3ZXIKKyAga2VybmVscyAodGhhbiAxLjEuNzUpLiAgSSBoYXZlIHNpbmNlIHVwZGF0ZWQgdGhlIGRyaXZlciB0byBwYXRjaAorICBjbGVhbmx5IGluIG5ld2VyIGtlcm5lbHMgYmVjYXVzZSBvZiB0aGUgcmVtb3ZhbCBvZiB0aGUgb2xkICJzbGF2ZS0KKyAgYmFsYW5jaW5nIiBkcml2ZXIgY29uZmlnIG9wdGlvbi4KKworCisgIG8gIGljZWUgZnJvbSBMaW51eE5FVCBwYXRjaGVkIDEuMS44NiB3aXRob3V0IGFueSByZWplY3RzIGFuZCB3YXMgYWJsZQorICAgICB0byBib290IHRoZSBrZXJuZWwgYW5kIGVuc2xhdmUgYSBjb3VwbGUgb2YgSVNETiBQUFAgbGlua3MuCisKKyAgNS4xLglSYW5kb2xwaCBCZW50c29uJ3MgVGVzdCBSZXBvcnQKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisgIEZyb20gYmVudHNvbkBncmllZy5zZWFzbHVnLm9yZyBXZWQgRmViICA4IDE5OjA4OjA5IDE5OTUKKyAgRGF0ZTogVHVlLCA3IEZlYiA5NSAyMjo1NyBQU1QKKyAgRnJvbTogUmFuZG9scGggQmVudHNvbiA8YmVudHNvbkBncmllZy5zZWFzbHVnLm9yZz4KKyAgVG86IGd1cnVAbmNtLmNvbQorICBTdWJqZWN0OiBFUUwgZHJpdmVyIHRlc3RzCisKKworICBJIGhhdmUgYmVlbiBjaGVja2luZyBvdXQgeW91ciBlcWwgZHJpdmVyLiAgKE5pY2Ugd29yaywgdGhhdCEpCisgIEFsdGhvdWdoIHlvdSBtYXkgYWxyZWFkeSBkb25lIHRoaXMgcGVyZm9ybWFuY2UgdGVzdGluZywgaGVyZQorICBhcmUgc29tZSBkYXRhIEkndmUgZGlzY292ZXJlZC4KKworICBSYW5kb2xwaCBCZW50c29uCisgIGJlbnRzb25AZ3JpZWcuc2Vhc2x1Zy5vcmcKKworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCisgIEEgcHNldWRvLWRldmljZSBkcml2ZXIsIEVRTCwgd3JpdHRlbiBieSBTaW1vbiBKYW5lcywgY2FuIGJlIHVzZWQKKyAgdG8gYnVuZGxlIG11bHRpcGxlIFNMSVAgY29ubmVjdGlvbnMgaW50byB3aGF0IGFwcGVhcnMgdG8gYmUgYQorICBzaW5nbGUgY29ubmVjdGlvbi4gIFRoaXMgYWxsb3dzIG9uZSB0byBpbXByb3ZlIGRpYWwtdXAgbmV0d29yaworICBjb25uZWN0aXZpdHkgZ3JhZHVhbGx5LCB3aXRob3V0IGhhdmluZyB0byBidXkgZXhwZW5zaXZlIERTVS9DU1UKKyAgaGFyZHdhcmUgYW5kIHNlcnZpY2VzLgorCisgIEkgaGF2ZSBkb25lIHNvbWUgdGVzdGluZyBvZiB0aGlzIHNvZnR3YXJlLCB3aXRoIHR3byBnb2FscyBpbgorICBtaW5kOiBmaXJzdCwgdG8gZW5zdXJlIGl0IGFjdHVhbGx5IHdvcmtzIGFzIGRlc2NyaWJlZCBhbmQKKyAgc2Vjb25kLCBhcyBhIG1ldGhvZCBvZiBleGVyY2lzaW5nIG15IGRldmljZSBkcml2ZXIuCisKKyAgVGhlIGZvbGxvd2luZyBwZXJmb3JtYW5jZSBtZWFzdXJlbWVudHMgd2VyZSBkZXJpdmVkIGZyb20gYSBzZXQKKyAgb2YgU0xJUCBjb25uZWN0aW9ucyBydW4gYmV0d2VlbiB0d28gTGludXggc3lzdGVtcyAoMS4xLjg0KSB1c2luZworICBhIDQ4NkRYMi82NiB3aXRoIGEgQ3ljbG9tLThZcyBhbmQgYSA0ODZTTEMvNDAgd2l0aCBhIEN5Y2xvbS0xNlkuCisgIChQb3J0cyAwLDEsMiwzIHdlcmUgdXNlZC4gIEEgbGF0ZXIgY29uZmlndXJhdGlvbiB3aWxsIGRpc3RyaWJ1dGUKKyAgcG9ydCBzZWxlY3Rpb24gYWNyb3NzIHRoZSBkaWZmZXJlbnQgQ2lycnVzIGNoaXBzIG9uIHRoZSBib2FyZHMuKQorICBPbmNlIGEgbGluayB3YXMgZXN0YWJsaXNoZWQsIEkgdGltZWQgYSBiaW5hcnkgZnRwIHRyYW5zZmVyIG9mCisgIDI4OTI4NCBieXRlcyBvZiBkYXRhLglJZiB0aGVyZSB3ZXJlIG5vIG92ZXJoZWFkIChwYWNrZXQgaGVhZGVycywKKyAgaW50ZXItY2hhcmFjdGVyIGFuZCBpbnRlci1wYWNrZXQgZGVsYXlzLCBldGMuKSB0aGUgdHJhbnNmZXJzCisgIHdvdWxkIHRha2UgdGhlIGZvbGxvd2luZyB0aW1lczoKKworICAgICAgYml0cy9zZWMJc2Vjb25kcworICAgICAgMzQ1NjAwCTguMworICAgICAgMjM0NjAwCTEyLjMKKyAgICAgIDE3MjgwMAkxNi43CisgICAgICAxNTM2MDAJMTguOAorICAgICAgNzY4MDAJMzcuNgorICAgICAgNTc2MDAJNTAuMgorICAgICAgMzg0MDAJNzUuMworICAgICAgMjg4MDAJMTAwLjQKKyAgICAgIDE5MjAwCTE1MC42CisgICAgICA5NjAwCTMwMS4zCisKKyAgQSBzaW5nbGUgbGluZSBydW5uaW5nIGF0IHRoZSBsb3dlciBzcGVlZHMgYW5kIHdpdGggbGFyZ2UgcGFja2V0cworICBjb21lcyB0byB3aXRoaW4gMiUgb2YgdGhpcy4gIFBlcmZvcm1hbmNlIGlzIGxpbWl0ZWQgZm9yIHRoZSBoaWdoZXIKKyAgc3BlZWRzIChhcyBwcmVkaWN0ZWQgYnkgdGhlIENpcnJ1cyBkYXRhYm9vaykgdG8gYW4gYWdncmVnYXRlIG9mCisgIGFib3V0IDE2MCBrYml0cy9zZWMuCVRoZSBuZXh0IHJvdW5kIG9mIHRlc3Rpbmcgd2lsbCBkaXN0cmlidXRlCisgIHRoZSBsb2FkIGFjcm9zcyB0d28gb3IgbW9yZSBDaXJydXMgY2hpcHMuCisKKyAgVGhlIGdvb2QgbmV3cyBpcyB0aGF0IG9uZSBnZXRzIG5lYXJseSB0aGUgZnVsbCBhZHZhbnRhZ2Ugb2YgdGhlCisgIHNlY29uZCwgdGhpcmQsIGFuZCBmb3VydGggbGluZSdzIGJhbmR3aWR0aC4gIChUaGUgYmFkIG5ld3MgaXMKKyAgdGhhdCB0aGUgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IHNlZW1lZCBmcmFnaWxlIGZvciB0aGUgaGlnaGVyCisgIHNwZWVkcy4gIE9uY2UgZXN0YWJsaXNoZWQsIHRoZSBjb25uZWN0aW9uIHNlZW1lZCByb2J1c3QgZW5vdWdoLikKKworICAjbGluZXMgIHNwZWVkCW10dSAgc2Vjb25kcwl0aGVvcnkgIGFjdHVhbCAgJW9mCisJIGtiaXQvc2VjICAgICAgZHVyYXRpb24Jc3BlZWQJc3BlZWQJbWF4CisgIDMJMTE1MjAwICA5MDAJXwkzNDU2MDAKKyAgMwkxMTUyMDAgIDQwMAkxOC4xCTM0NTYwMCAgMTU5ODI1ICA0NgorICAyCTExNTIwMCAgOTAwCV8JMjMwNDAwCisgIDIJMTE1MjAwICA2MDAJMTguMQkyMzA0MDAgIDE1OTgyNSAgNjkKKyAgMgkxMTUyMDAgIDQwMAkxOS4zCTIzMDQwMCAgMTQ5ODg4ICA2NQorICA0CTU3NjAwCTkwMAlfCTIzNDYwMAorICA0CTU3NjAwCTYwMAlfCTIzNDYwMAorICA0CTU3NjAwCTQwMAlfCTIzNDYwMAorICAzCTU3NjAwCTYwMAkyMC45CTE3MjgwMCAgMTM4NDEzICA4MAorICAzCTU3NjAwCTkwMAkyMS4yCTE3MjgwMCAgMTM2NDU1ICA3OAorICAzCTExNTIwMCAgNjAwCTIxLjcJMzQ1NjAwICAxMzMzMTEgIDM4CisgIDMJNTc2MDAJNDAwCTIyLjUJMTcyODAwICAxMjg1NzEgIDc0CisgIDQJMzg0MDAJOTAwCTI1LjIJMTUzNjAwICAxMTQ3OTUgIDc0CisgIDQJMzg0MDAJNjAwCTI2LjQJMTUzNjAwICAxMDk1NzcgIDcxCisgIDQJMzg0MDAJNDAwCTI3LjMJMTUzNjAwICAxMDU5NjUgIDY4CisgIDIJNTc2MDAJOTAwCTI5LjEJMTE1MjAwICA5OTQxMC4zIDg2CisgIDEJMTE1MjAwICA5MDAJMzAuNwkxMTUyMDAgIDk0MjI5LjMgODEKKyAgMgk1NzYwMAk2MDAJMzAuMgkxMTUyMDAgIDk1Nzg5LjQgODMKKyAgMwkzODQwMAk5MDAJMzAuMwkxMTUyMDAgIDk1NDczLjMgODIKKyAgMwkzODQwMAk2MDAJMzEuMgkxMTUyMDAgIDkyNzE5LjIgODAKKyAgMQkxMTUyMDAgIDYwMAkzMS4zCTExNTIwMCAgOTI0MjMJODAKKyAgMgk1NzYwMAk0MDAJMzIuMwkxMTUyMDAgIDg5NTYxLjYgNzcKKyAgMQkxMTUyMDAgIDQwMAkzMi44CTExNTIwMCAgODgxOTYuMyA3NgorICAzCTM4NDAwCTQwMAkzMy41CTExNTIwMCAgODYzNTMuNCA3NAorICAyCTM4NDAwCTkwMAk0My43CTc2ODAwCTY2MTk3LjcgODYKKyAgMgkzODQwMAk2MDAJNDQJNzY4MDAJNjU3NDYuNCA4NQorICAyCTM4NDAwCTQwMAk0Ny4yCTc2ODAwCTYxMjg5CTc5CisgIDQJMTkyMDAJOTAwCTUwLjgJNzY4MDAJNTY5NDUuNyA3NAorICA0CTE5MjAwCTQwMAk1My4yCTc2ODAwCTU0Mzc2LjcgNzAKKyAgNAkxOTIwMAk2MDAJNTMuNwk3NjgwMAk1Mzg3MC40IDcwCisgIDEJNTc2MDAJOTAwCTU0LjYJNTc2MDAJNTI5ODIuNCA5MQorICAxCTU3NjAwCTYwMAk1Ni4yCTU3NjAwCTUxNDc0CTg5CisgIDMJMTkyMDAJOTAwCTYwLjUJNTc2MDAJNDc4MTUuNSA4MworICAxCTU3NjAwCTQwMAk2MC4yCTU3NjAwCTQ4MDUzLjggODMKKyAgMwkxOTIwMAk2MDAJNjIJNTc2MDAJNDY2NTguNyA4MQorICAzCTE5MjAwCTQwMAk2NC43CTU3NjAwCTQ0NzExLjYgNzcKKyAgMQkzODQwMAk5MDAJNzkuNAkzODQwMAkzNjQzMy44IDk0CisgIDEJMzg0MDAJNjAwCTgyLjQJMzg0MDAJMzUxMDcuMyA5MQorICAyCTE5MjAwCTkwMAk4NC40CTM4NDAwCTM0Mjc1LjQgODkKKyAgMQkzODQwMAk0MDAJODYuOAkzODQwMAkzMzMyNy42IDg2CisgIDIJMTkyMDAJNjAwCTg3LjYJMzg0MDAJMzMwMjMuMyA4NQorICAyCTE5MjAwCTQwMAk5MS4yCTM4NDAwCTMxNzE5LjcgODIKKyAgNAk5NjAwCTkwMAk5NC43CTM4NDAwCTMwNTQ3LjQgNzkKKyAgNAk5NjAwCTQwMAkxMDYJMzg0MDAJMjcyOTAuOSA3MQorICA0CTk2MDAJNjAwCTExMAkzODQwMAkyNjI5OC41IDY4CisgIDMJOTYwMAk5MDAJMTE4CTI4ODAwCTI0NTE1LjYgODUKKyAgMwk5NjAwCTYwMAkxMjAJMjg4MDAJMjQxMDcJODMKKyAgMwk5NjAwCTQwMAkxMzEJMjg4MDAJMjIwODIuNyA3NgorICAxCTE5MjAwCTkwMAkxNTUJMTkyMDAJMTg2NjMuNSA5NworICAxCTE5MjAwCTYwMAkxNjEJMTkyMDAJMTc5NjgJOTMKKyAgMQkxOTIwMAk0MDAJMTcwCTE5MjAwCTE3MDE2LjcgODgKKyAgMgk5NjAwCTYwMAkxNzYJMTkyMDAJMTY0MzYuNiA4NQorICAyCTk2MDAJOTAwCTE4MAkxOTIwMAkxNjA3MS4zIDgzCisgIDIJOTYwMAk0MDAJMTgxCTE5MjAwCTE1OTgyLjUgODMKKyAgMQk5NjAwCTkwMAkzMDUJOTYwMAk5NDg0LjcyIDk4CisgIDEJOTYwMAk2MDAJMzE0CTk2MDAJOTIxMi44NyA5NQorICAxCTk2MDAJNDAwCTMzMgk5NjAwCTg3MTMuMzcgOTAKKworCisKKworCisgIDUuMi4JQW50aG9ueSBIZWFseSdzIFJlcG9ydAorCisKKworCisKKworCisgIERhdGU6IE1vbiwgMTMgRmViIDE5OTUgMTY6MTc6MjkgKzExMDAgKEVTVCkKKyAgRnJvbTogQW50b255IEhlYWxleSA8YWhlYWxleUBzdC5uZXBlYW4udXdzLmVkdS5hdT4KKyAgVG86IFNpbW9uIEphbmVzIDxndXJ1QG5jbS5jb20+CisgIFN1YmplY3Q6IFJlOiBMb2FkIEJhbGFuY2luZworCisgIEhpIFNpbW9uLAorCSAgSSd2ZSBpbnN0YWxsZWQgeW91ciBwYXRjaCBhbmQgaXQgd29ya3MgZ3JlYXQuIEkgaGF2ZSB0cmlhbGVkCisJICBpdCBvdmVyIHR3aW4gU0wvSVAgbGluZXMsIGp1c3Qgb3ZlciBudWxsIG1vZGVtcywgYnV0IEkgd2FzCisJICBhYmxlIHRvIGRhdGEgYXQgb3ZlciA0OEtiL3MgW0lTRE4gbGluayAtU2ltb25dLiBJIG1hbmFnZWQgYQorCSAgdHJhbnNmZXIgb2YgdXAgdG8gNy41IEtieXRlL3Mgb24gb25lIGdvLCBidXQgYXZlcmFnZWQgYXJvdW5kCisJICA2LjQgS2J5dGUvcywgd2hpY2ggSSB0aGluayBpcyBwcmV0dHkgY29vbC4gIDopCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWJfdHJpZS50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZmliX3RyaWUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlNzE5MzgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZmliX3RyaWUudHh0CkBAIC0wLDAgKzEsMTQ1IEBACisJCQlMQy10cmllIGltcGxlbWVudGF0aW9uIG5vdGVzLgorCitOb2RlIHR5cGVzCistLS0tLS0tLS0tCitsZWFmIAorCUFuIGVuZCBub2RlIHdpdGggZGF0YS4gVGhpcyBoYXMgYSBjb3B5IG9mIHRoZSByZWxldmFudCBrZXksIGFsb25nCisJd2l0aCAnaGxpc3QnIHdpdGggcm91dGluZyB0YWJsZSBlbnRyaWVzIHNvcnRlZCBieSBwcmVmaXggbGVuZ3RoLgorCVNlZSBzdHJ1Y3QgbGVhZiBhbmQgc3RydWN0IGxlYWZfaW5mby4KKwordHJpZSBub2RlIG9yIHRub2RlCisJQW4gaW50ZXJuYWwgbm9kZSwgaG9sZGluZyBhbiBhcnJheSBvZiBjaGlsZCAobGVhZiBvciB0bm9kZSkgcG9pbnRlcnMsCisJaW5kZXhlZAl0aHJvdWdoIGEgc3Vic2V0IG9mIHRoZSBrZXkuIFNlZSBMZXZlbCBDb21wcmVzc2lvbi4KKworQSBmZXcgY29uY2VwdHMgZXhwbGFpbmVkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0JpdHMgKHRub2RlKSAKKwlUaGUgbnVtYmVyIG9mIGJpdHMgaW4gdGhlIGtleSBzZWdtZW50IHVzZWQgZm9yIGluZGV4aW5nIGludG8gdGhlCisJY2hpbGQgYXJyYXkgLSB0aGUgImNoaWxkIGluZGV4Ii4gU2VlIExldmVsIENvbXByZXNzaW9uLgorCitQb3MgKHRub2RlKQorCVRoZSBwb3NpdGlvbiAoaW4gdGhlIGtleSkgb2YgdGhlIGtleSBzZWdtZW50IHVzZWQgZm9yIGluZGV4aW5nIGludG8KKwl0aGUgY2hpbGQgYXJyYXkuIFNlZSBQYXRoIENvbXByZXNzaW9uLgorCitQYXRoIENvbXByZXNzaW9uIC8gc2tpcHBlZCBiaXRzCisJQW55IGdpdmVuIHRub2RlIGlzIGxpbmtlZCB0byBmcm9tIHRoZSBjaGlsZCBhcnJheSBvZiBpdHMgcGFyZW50LCB1c2luZworCWEgc2VnbWVudCBvZiB0aGUga2V5IHNwZWNpZmllZCBieSB0aGUgcGFyZW50J3MgInBvcyIgYW5kICJiaXRzIiAKKwlJbiBjZXJ0YWluIGNhc2VzLCB0aGlzIHRub2RlJ3Mgb3duICJwb3MiIHdpbGwgbm90IGJlIGltbWVkaWF0ZWx5CisJYWRqYWNlbnQgdG8gdGhlIHBhcmVudCAocG9zK2JpdHMpLCBidXQgdGhlcmUgd2lsbCBiZSBzb21lIGJpdHMKKwlpbiB0aGUga2V5IHNraXBwZWQgb3ZlciBiZWNhdXNlIHRoZXkgcmVwcmVzZW50IGEgc2luZ2xlIHBhdGggd2l0aCBubworCWRldmlhdGlvbnMuIFRoZXNlICJza2lwcGVkIGJpdHMiIGNvbnN0aXR1dGUgUGF0aCBDb21wcmVzc2lvbi4KKwlOb3RlIHRoYXQgdGhlIHNlYXJjaCBhbGdvcml0aG0gd2lsbCBzaW1wbHkgc2tpcCBvdmVyIHRoZXNlIGJpdHMgd2hlbgorCXNlYXJjaGluZywgbWFraW5nIGl0IG5lY2Vzc2FyeSB0byBzYXZlIHRoZSBrZXlzIGluIHRoZSBsZWF2ZXMgdG8KKwl2ZXJpZnkgdGhhdCB0aGV5IGFjdHVhbGx5IGRvIG1hdGNoIHRoZSBrZXkgd2UgYXJlIHNlYXJjaGluZyBmb3IuCisKK0xldmVsIENvbXByZXNzaW9uIC8gY2hpbGQgYXJyYXlzCisJdGhlIHRyaWUgaXMga2VwdCBsZXZlbCBiYWxhbmNlZCBtb3ZpbmcsIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucywgdGhlCisJY2hpbGRyZW4gb2YgYSBmdWxsIGNoaWxkIChzZWUgImZ1bGxfY2hpbGRyZW4iKSB1cCBvbmUgbGV2ZWwsIHNvIHRoYXQKKwlpbnN0ZWFkIG9mIGEgcHVyZSBiaW5hcnkgdHJlZSwgZWFjaCBpbnRlcm5hbCBub2RlICgidG5vZGUiKSBtYXkKKwljb250YWluIGFuIGFyYml0cmFyaWx5IGxhcmdlIGFycmF5IG9mIGxpbmtzIHRvIHNldmVyYWwgY2hpbGRyZW4uCisJQ29udmVyc2VseSwgYSB0bm9kZSB3aXRoIGEgbW9zdGx5IGVtcHR5CWNoaWxkIGFycmF5IChzZWUgZW1wdHlfY2hpbGRyZW4pCisJbWF5IGJlICJoYWx2ZWQiLCBoYXZpbmcgc29tZSBvZiBpdHMgY2hpbGRyZW4gbW92ZWQgZG93bndhcmRzIG9uZSBsZXZlbCwKKwlpbiBvcmRlciB0byBhdm9pZCBldmVyLWluY3JlYXNpbmcgY2hpbGQgYXJyYXlzLgorCitlbXB0eV9jaGlsZHJlbgorCXRoZSBudW1iZXIgb2YgcG9zaXRpb25zIGluIHRoZSBjaGlsZCBhcnJheSBvZiBhIGdpdmVuIHRub2RlIHRoYXQgYXJlCisJTlVMTC4KKworZnVsbF9jaGlsZHJlbgorCXRoZSBudW1iZXIgb2YgY2hpbGRyZW4gb2YgYSBnaXZlbiB0bm9kZSB0aGF0IGFyZW4ndCBwYXRoIGNvbXByZXNzZWQuCisJKGluIG90aGVyIHdvcmRzLCB0aGV5IGFyZW4ndCBOVUxMIG9yIGxlYXZlcyBhbmQgdGhlaXIgInBvcyIgaXMgZXF1YWwKKwl0byB0aGlzCXRub2RlJ3MgInBvcyIrImJpdHMiKS4KKworCShUaGUgd29yZCAiZnVsbCIgaGVyZSBpcyB1c2VkIG1vcmUgaW4gdGhlIHNlbnNlIG9mICJjb21wbGV0ZSIgdGhhbgorCWFzIHRoZSBvcHBvc2l0ZSBvZiAiZW1wdHkiLCB3aGljaCBtaWdodCBiZSBhIHRhZCBjb25mdXNpbmcuKQorCitDb21tZW50cworLS0tLS0tLS0tCisKK1dlIGhhdmUgdHJpZWQgdG8ga2VlcCB0aGUgc3RydWN0dXJlIG9mIHRoZSBjb2RlIGFzIGNsb3NlIHRvIGZpYl9oYXNoIGFzIAorcG9zc2libGUgdG8gYWxsb3cgdmVyaWZpY2F0aW9uIGFuZCBoZWxwIHVwIHJldmlld2luZy4gCisKK2ZpYl9maW5kX25vZGUoKQorCUEgZ29vZCBzdGFydCBmb3IgdW5kZXJzdGFuZGluZyB0aGlzIGNvZGUuIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyBhCisJc3RyYWlnaHRmb3J3YXJkIHRyaWUgbG9va3VwLgorCitmaWJfaW5zZXJ0X25vZGUoKQorCUluc2VydHMgYSBuZXcgbGVhZiBub2RlIGluIHRoZSB0cmllLiBUaGlzIGlzIGJpdCBtb3JlIGNvbXBsaWNhdGVkIHRoYW4KKwlmaWJfZmluZF9ub2RlKCkuIEluc2VydGluZyBhIG5ldyBub2RlIG1lYW5zIHdlIG1pZ2h0IGhhdmUgdG8gcnVuIHRoZQorCWxldmVsIGNvbXByZXNzaW9uIGFsZ29yaXRobSBvbiBwYXJ0IG9mIHRoZSB0cmllLgorCit0cmllX2xlYWZfcmVtb3ZlKCkKKwlMb29rcyB1cCBhIGtleSwgZGVsZXRlcyBpdCBhbmQgcnVucyB0aGUgbGV2ZWwgY29tcHJlc3Npb24gYWxnb3JpdGhtLgorCit0cmllX3JlYmFsYW5jZSgpCisJVGhlIGtleSBmdW5jdGlvbiBmb3IgdGhlIGR5bmFtaWMgdHJpZSBhZnRlciBhbnkgY2hhbmdlIGluIHRoZSB0cmllCisJaXQgaXMgcnVuIHRvIG9wdGltaXplIGFuZCByZW9yZ2FuaXplLiBJdCB3aWxsIHdhbGsgdGhlIHRyaWUgdXB3YXJkcworCXRvd2FyZHMgdGhlIHJvb3QgZnJvbSBhIGdpdmVuIHRub2RlLCBkb2luZyBhIHJlc2l6ZSgpIGF0IGVhY2ggc3RlcAorCXRvIGltcGxlbWVudCBsZXZlbCBjb21wcmVzc2lvbi4KKworcmVzaXplKCkKKwlBbmFseXplcyBhIHRub2RlIGFuZCBvcHRpbWl6ZXMgdGhlIGNoaWxkIGFycmF5IHNpemUgYnkgZWl0aGVyIGluZmxhdGluZworCW9yIHNocmlua2luZyBpdCByZXBlYXRlZGx5IHVudGlsIGl0IGZ1bGZpbGxzIHRoZSBjcml0ZXJpYSBmb3Igb3B0aW1hbAorCWxldmVsIGNvbXByZXNzaW9uLiBUaGlzIHBhcnQgZm9sbG93cyB0aGUgb3JpZ2luYWwgcGFwZXIgcHJldHR5IGNsb3NlbHkKKwlhbmQgdGhlcmUgbWF5IGJlIHNvbWUgcm9vbSBmb3IgZXhwZXJpbWVudGF0aW9uIGhlcmUuCisKK2luZmxhdGUoKQorCURvdWJsZXMgdGhlIHNpemUgb2YgdGhlIGNoaWxkIGFycmF5IHdpdGhpbiBhIHRub2RlLiBVc2VkIGJ5IHJlc2l6ZSgpLgorCitoYWx2ZSgpCisJSGFsdmVzIHRoZSBzaXplIG9mIHRoZSBjaGlsZCBhcnJheSB3aXRoaW4gYSB0bm9kZSAtIHRoZSBpbnZlcnNlIG9mCisJaW5mbGF0ZSgpLiBVc2VkIGJ5IHJlc2l6ZSgpOworCitmbl90cmllX2luc2VydCgpLCBmbl90cmllX2RlbGV0ZSgpLCBmbl90cmllX3NlbGVjdF9kZWZhdWx0KCkKKwlUaGUgcm91dGUgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucy4gU2hvdWxkIGNvbmZvcm0gcHJldHR5IGNsb3NlbHkgdG8gdGhlCisJY29ycmVzcG9uZGluZyBmdW5jdGlvbnMgaW4gZmliX2hhc2guCisKK2ZuX3RyaWVfZmx1c2goKQorCVRoaXMgd2Fsa3MgdGhlIGZ1bGwgdHJpZSAodXNpbmcgbmV4dGxlYWYoKSkgYW5kIHNlYXJjaGVzIGZvciBlbXB0eQorCWxlYXZlcyB3aGljaCBoYXZlIHRvIGJlIHJlbW92ZWQuCisKK2ZuX3RyaWVfZHVtcCgpCisJRHVtcHMgdGhlIHJvdXRpbmcgdGFibGUgb3JkZXJlZCBieSBwcmVmaXggbGVuZ3RoLiBUaGlzIGlzIHNvbWV3aGF0CisJc2xvd2VyIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcgZmliX2hhc2ggZnVuY3Rpb24sIGFzIHdlIGhhdmUgdG8gd2FsayB0aGUKKwllbnRpcmUgdHJpZSBmb3IgZWFjaCBwcmVmaXggbGVuZ3RoLiBJbiBjb21wYXJpc29uLCBmaWJfaGFzaCBpcyBvcmdhbml6ZWQKKwlhcyBvbmUgInpvbmUiL2hhc2ggcGVyIHByZWZpeCBsZW5ndGguCisKK0xvY2tpbmcKKy0tLS0tLS0KKworZmliX2xvY2sgaXMgdXNlZCBmb3IgYW4gUlctbG9jayBpbiB0aGUgc2FtZSB3YXkgdGhhdCB0aGlzIGlzIGRvbmUgaW4gZmliX2hhc2guCitIb3dldmVyLCB0aGUgZnVuY3Rpb25zIGFyZSBzb21ld2hhdCBzZXBhcmF0ZWQgZm9yIG90aGVyIHBvc3NpYmxlIGxvY2tpbmcKK3NjZW5hcmlvcy4gSXQgbWlnaHQgY29uY2VpdmFibHkgYmUgcG9zc2libGUgdG8gcnVuIHRyaWVfcmViYWxhbmNlIHZpYSBSQ1UKK3RvIGF2b2lkIHJlYWRfbG9jayBpbiB0aGUgZm5fdHJpZV9sb29rdXAoKSBmdW5jdGlvbi4KKworTWFpbiBsb29rdXAgbWVjaGFuaXNtCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2ZuX3RyaWVfbG9va3VwKCkgaXMgdGhlIG1haW4gbG9va3VwIGZ1bmN0aW9uLgorCitUaGUgbG9va3VwIGlzIGluIGl0cyBzaW1wbGVzdCBmb3JtIGp1c3QgbGlrZSBmaWJfZmluZF9ub2RlKCkuIFdlIGRlc2NlbmQgdGhlCit0cmllLCBrZXkgc2VnbWVudCBieSBrZXkgc2VnbWVudCwgdW50aWwgd2UgZmluZCBhIGxlYWYuIGNoZWNrX2xlYWYoKSBkb2VzCit0aGUgZmliX3NlbWFudGljX21hdGNoIGluIHRoZSBsZWFmJ3Mgc29ydGVkIHByZWZpeCBobGlzdC4KKworSWYgd2UgZmluZCBhIG1hdGNoLCB3ZSBhcmUgZG9uZS4KKworSWYgd2UgZG9uJ3QgZmluZCBhIG1hdGNoLCB3ZSBlbnRlciBwcmVmaXggbWF0Y2hpbmcgbW9kZS4gVGhlIHByZWZpeCBsZW5ndGgsCitzdGFydGluZyBvdXQgYXQgdGhlIHNhbWUgYXMgdGhlIGtleSBsZW5ndGgsIGlzIHJlZHVjZWQgb25lIHN0ZXAgYXQgYSB0aW1lLAorYW5kIHdlIGJhY2t0cmFjayB1cHdhcmRzIHRocm91Z2ggdGhlIHRyaWUgdHJ5aW5nIHRvIGZpbmQgYSBsb25nZXN0IG1hdGNoaW5nCitwcmVmaXguIFRoZSBnb2FsIGlzIGFsd2F5cyB0byByZWFjaCBhIGxlYWYgYW5kIGdldCBhIHBvc2l0aXZlIHJlc3VsdCBmcm9tIHRoZQorZmliX3NlbWFudGljX21hdGNoIG1lY2hhbmlzbS4KKworSW5zaWRlIGVhY2ggdG5vZGUsIHRoZSBzZWFyY2ggZm9yIGxvbmdlc3QgbWF0Y2hpbmcgcHJlZml4IGNvbnNpc3RzIG9mIHNlYXJjaGluZwordGhyb3VnaCB0aGUgY2hpbGQgYXJyYXksIGNob3BwaW5nIG9mZiAoemVyb2luZykgdGhlIGxlYXN0IHNpZ25pZmljYW50ICIxIiBvZgordGhlIGNoaWxkIGluZGV4IHVudGlsIHdlIGZpbmQgYSBtYXRjaCBvciB0aGUgY2hpbGQgaW5kZXggY29uc2lzdHMgb2Ygbm90aGluZyBidXQKK3plcm9zLgorCitBdCB0aGlzIHBvaW50IHdlIGJhY2t0cmFjayAodC0+c3RhdHMuYmFja3RyYWNrKyspIHVwIHRoZSB0cmllLCBjb250aW51aW5nIHRvCitjaG9wIG9mZiBwYXJ0IG9mIHRoZSBrZXkgaW4gb3JkZXIgdG8gZmluZCB0aGUgbG9uZ2VzdCBtYXRjaGluZyBwcmVmaXguCisKK0F0IHRoaXMgcG9pbnQgd2Ugd2lsbCByZXBlYXRlZGx5IGRlc2NlbmQgc3VidHJpZXMgdG8gbG9vayBmb3IgYSBtYXRjaCwgYW5kIHRoZXJlCithcmUgc29tZSBvcHRpbWl6YXRpb25zIGF2YWlsYWJsZSB0aGF0IGNhbiBwcm92aWRlIHVzIHdpdGggInNob3J0Y3V0cyIgdG8gYXZvaWQKK2Rlc2NlbmRpbmcgaW50byBkZWFkIGVuZHMuIExvb2sgZm9yICJITF9PUFRJTUlaRSIgc2VjdGlvbnMgaW4gdGhlIGNvZGUuCisKK1RvIGFsbGV2aWF0ZSBhbnkgZG91YnRzIGFib3V0IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgcm91dGUgc2VsZWN0aW9uIHByb2Nlc3MsCithIG5ldyBuZXRsaW5rIG9wZXJhdGlvbiBoYXMgYmVlbiBhZGRlZC4gTG9vayBmb3IgTkVUTElOS19GSUJfTE9PS1VQLCB3aGljaAorZ2l2ZXMgdXNlcmxhbmQgYWNjZXNzIHRvIGZpYl9sb29rdXAoKS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZpbHRlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZkYTExOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9maWx0ZXIudHh0CkBAIC0wLDAgKzEsMTI5NyBAQAorTGludXggU29ja2V0IEZpbHRlcmluZyBha2EgQmVya2VsZXkgUGFja2V0IEZpbHRlciAoQlBGKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLQorCitMaW51eCBTb2NrZXQgRmlsdGVyaW5nIChMU0YpIGlzIGRlcml2ZWQgZnJvbSB0aGUgQmVya2VsZXkgUGFja2V0IEZpbHRlci4KK1Rob3VnaCB0aGVyZSBhcmUgc29tZSBkaXN0aW5jdCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBCU0QgYW5kIExpbnV4CitLZXJuZWwgZmlsdGVyaW5nLCBidXQgd2hlbiB3ZSBzcGVhayBvZiBCUEYgb3IgTFNGIGluIExpbnV4IGNvbnRleHQsIHdlCittZWFuIHRoZSB2ZXJ5IHNhbWUgbWVjaGFuaXNtIG9mIGZpbHRlcmluZyBpbiB0aGUgTGludXgga2VybmVsLgorCitCUEYgYWxsb3dzIGEgdXNlci1zcGFjZSBwcm9ncmFtIHRvIGF0dGFjaCBhIGZpbHRlciBvbnRvIGFueSBzb2NrZXQgYW5kCithbGxvdyBvciBkaXNhbGxvdyBjZXJ0YWluIHR5cGVzIG9mIGRhdGEgdG8gY29tZSB0aHJvdWdoIHRoZSBzb2NrZXQuIExTRgorZm9sbG93cyBleGFjdGx5IHRoZSBzYW1lIGZpbHRlciBjb2RlIHN0cnVjdHVyZSBhcyBCU0QncyBCUEYsIHNvIHJlZmVycmluZwordG8gdGhlIEJTRCBicGYuNCBtYW5wYWdlIGlzIHZlcnkgaGVscGZ1bCBpbiBjcmVhdGluZyBmaWx0ZXJzLgorCitPbiBMaW51eCwgQlBGIGlzIG11Y2ggc2ltcGxlciB0aGFuIG9uIEJTRC4gT25lIGRvZXMgbm90IGhhdmUgdG8gd29ycnkKK2Fib3V0IGRldmljZXMgb3IgYW55dGhpbmcgbGlrZSB0aGF0LiBZb3Ugc2ltcGx5IGNyZWF0ZSB5b3VyIGZpbHRlciBjb2RlLAorc2VuZCBpdCB0byB0aGUga2VybmVsIHZpYSB0aGUgU09fQVRUQUNIX0ZJTFRFUiBvcHRpb24gYW5kIGlmIHlvdXIgZmlsdGVyCitjb2RlIHBhc3NlcyB0aGUga2VybmVsIGNoZWNrIG9uIGl0LCB5b3UgdGhlbiBpbW1lZGlhdGVseSBiZWdpbiBmaWx0ZXJpbmcKK2RhdGEgb24gdGhhdCBzb2NrZXQuCisKK1lvdSBjYW4gYWxzbyBkZXRhY2ggZmlsdGVycyBmcm9tIHlvdXIgc29ja2V0IHZpYSB0aGUgU09fREVUQUNIX0ZJTFRFUgorb3B0aW9uLiBUaGlzIHdpbGwgcHJvYmFibHkgbm90IGJlIHVzZWQgbXVjaCBzaW5jZSB3aGVuIHlvdSBjbG9zZSBhIHNvY2tldAordGhhdCBoYXMgYSBmaWx0ZXIgb24gaXQgdGhlIGZpbHRlciBpcyBhdXRvbWFnaWNhbGx5IHJlbW92ZWQuIFRoZSBvdGhlcgorbGVzcyBjb21tb24gY2FzZSBtYXkgYmUgYWRkaW5nIGEgZGlmZmVyZW50IGZpbHRlciBvbiB0aGUgc2FtZSBzb2NrZXQgd2hlcmUKK3lvdSBoYWQgYW5vdGhlciBmaWx0ZXIgdGhhdCBpcyBzdGlsbCBydW5uaW5nOiB0aGUga2VybmVsIHRha2VzIGNhcmUgb2YKK3JlbW92aW5nIHRoZSBvbGQgb25lIGFuZCBwbGFjaW5nIHlvdXIgbmV3IG9uZSBpbiBpdHMgcGxhY2UsIGFzc3VtaW5nIHlvdXIKK2ZpbHRlciBoYXMgcGFzc2VkIHRoZSBjaGVja3MsIG90aGVyd2lzZSBpZiBpdCBmYWlscyB0aGUgb2xkIGZpbHRlciB3aWxsCityZW1haW4gb24gdGhhdCBzb2NrZXQuCisKK1NPX0xPQ0tfRklMVEVSIG9wdGlvbiBhbGxvd3MgdG8gbG9jayB0aGUgZmlsdGVyIGF0dGFjaGVkIHRvIGEgc29ja2V0LiBPbmNlCitzZXQsIGEgZmlsdGVyIGNhbm5vdCBiZSByZW1vdmVkIG9yIGNoYW5nZWQuIFRoaXMgYWxsb3dzIG9uZSBwcm9jZXNzIHRvCitzZXR1cCBhIHNvY2tldCwgYXR0YWNoIGEgZmlsdGVyLCBsb2NrIGl0IHRoZW4gZHJvcCBwcml2aWxlZ2VzIGFuZCBiZQorYXNzdXJlZCB0aGF0IHRoZSBmaWx0ZXIgd2lsbCBiZSBrZXB0IHVudGlsIHRoZSBzb2NrZXQgaXMgY2xvc2VkLgorCitUaGUgYmlnZ2VzdCB1c2VyIG9mIHRoaXMgY29uc3RydWN0IG1pZ2h0IGJlIGxpYnBjYXAuIElzc3VpbmcgYSBoaWdoLWxldmVsCitmaWx0ZXIgY29tbWFuZCBsaWtlIGB0Y3BkdW1wIC1pIGVtMSBwb3J0IDIyYCBwYXNzZXMgdGhyb3VnaCB0aGUgbGlicGNhcAoraW50ZXJuYWwgY29tcGlsZXIgdGhhdCBnZW5lcmF0ZXMgYSBzdHJ1Y3R1cmUgdGhhdCBjYW4gZXZlbnR1YWxseSBiZSBsb2FkZWQKK3ZpYSBTT19BVFRBQ0hfRklMVEVSIHRvIHRoZSBrZXJuZWwuIGB0Y3BkdW1wIC1pIGVtMSBwb3J0IDIyIC1kZGRgCitkaXNwbGF5cyB3aGF0IGlzIGJlaW5nIHBsYWNlZCBpbnRvIHRoaXMgc3RydWN0dXJlLgorCitBbHRob3VnaCB3ZSB3ZXJlIG9ubHkgc3BlYWtpbmcgYWJvdXQgc29ja2V0cyBoZXJlLCBCUEYgaW4gTGludXggaXMgdXNlZAoraW4gbWFueSBtb3JlIHBsYWNlcy4gVGhlcmUncyB4dF9icGYgZm9yIG5ldGZpbHRlciwgY2xzX2JwZiBpbiB0aGUga2VybmVsCitxZGlzYyBsYXllciwgU0VDQ09NUC1CUEYgKFNFQ3VyZSBDT01QdXRpbmcgWzFdKSwgYW5kIGxvdHMgb2Ygb3RoZXIgcGxhY2VzCitzdWNoIGFzIHRlYW0gZHJpdmVyLCBQVFAgY29kZSwgZXRjIHdoZXJlIEJQRiBpcyBiZWluZyB1c2VkLgorCisgWzFdIERvY3VtZW50YXRpb24vcHJjdGwvc2VjY29tcF9maWx0ZXIudHh0CisKK09yaWdpbmFsIEJQRiBwYXBlcjoKKworU3RldmVuIE1jQ2FubmUgYW5kIFZhbiBKYWNvYnNvbi4gMTk5My4gVGhlIEJTRCBwYWNrZXQgZmlsdGVyOiBhIG5ldworYXJjaGl0ZWN0dXJlIGZvciB1c2VyLWxldmVsIHBhY2tldCBjYXB0dXJlLiBJbiBQcm9jZWVkaW5ncyBvZiB0aGUKK1VTRU5JWCBXaW50ZXIgMTk5MyBDb25mZXJlbmNlIFByb2NlZWRpbmdzIG9uIFVTRU5JWCBXaW50ZXIgMTk5MworQ29uZmVyZW5jZSBQcm9jZWVkaW5ncyAoVVNFTklYJzkzKS4gVVNFTklYIEFzc29jaWF0aW9uLCBCZXJrZWxleSwKK0NBLCBVU0EsIDItMi4gW2h0dHA6Ly93d3cudGNwZHVtcC5vcmcvcGFwZXJzL2JwZi11c2VuaXg5My5wZGZdCisKK1N0cnVjdHVyZQorLS0tLS0tLS0tCisKK1VzZXIgc3BhY2UgYXBwbGljYXRpb25zIGluY2x1ZGUgPGxpbnV4L2ZpbHRlci5oPiB3aGljaCBjb250YWlucyB0aGUKK2ZvbGxvd2luZyByZWxldmFudCBzdHJ1Y3R1cmVzOgorCitzdHJ1Y3Qgc29ja19maWx0ZXIgewkvKiBGaWx0ZXIgYmxvY2sgKi8KKwlfX3UxNgljb2RlOyAgIC8qIEFjdHVhbCBmaWx0ZXIgY29kZSAqLworCV9fdTgJanQ7CS8qIEp1bXAgdHJ1ZSAqLworCV9fdTgJamY7CS8qIEp1bXAgZmFsc2UgKi8KKwlfX3UzMglrOyAgICAgIC8qIEdlbmVyaWMgbXVsdGl1c2UgZmllbGQgKi8KK307CisKK1N1Y2ggYSBzdHJ1Y3R1cmUgaXMgYXNzZW1ibGVkIGFzIGFuIGFycmF5IG9mIDQtdHVwbGVzLCB0aGF0IGNvbnRhaW5zCithIGNvZGUsIGp0LCBqZiBhbmQgayB2YWx1ZS4ganQgYW5kIGpmIGFyZSBqdW1wIG9mZnNldHMgYW5kIGsgYSBnZW5lcmljCit2YWx1ZSB0byBiZSB1c2VkIGZvciBhIHByb3ZpZGVkIGNvZGUuCisKK3N0cnVjdCBzb2NrX2Zwcm9nIHsJCQkvKiBSZXF1aXJlZCBmb3IgU09fQVRUQUNIX0ZJTFRFUi4gKi8KKwl1bnNpZ25lZCBzaG9ydAkJICAgbGVuOwkvKiBOdW1iZXIgb2YgZmlsdGVyIGJsb2NrcyAqLworCXN0cnVjdCBzb2NrX2ZpbHRlciBfX3VzZXIgKmZpbHRlcjsKK307CisKK0ZvciBzb2NrZXQgZmlsdGVyaW5nLCBhIHBvaW50ZXIgdG8gdGhpcyBzdHJ1Y3R1cmUgKGFzIHNob3duIGluCitmb2xsb3ctdXAgZXhhbXBsZSkgaXMgYmVpbmcgcGFzc2VkIHRvIHRoZSBrZXJuZWwgdGhyb3VnaCBzZXRzb2Nrb3B0KDIpLgorCitFeGFtcGxlCistLS0tLS0tCisKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjaW5jbHVkZSA8bGludXgvaWZfZXRoZXIuaD4KKy8qIC4uLiAqLworCisvKiBGcm9tIHRoZSBleGFtcGxlIGFib3ZlOiB0Y3BkdW1wIC1pIGVtMSBwb3J0IDIyIC1kZCAqLworc3RydWN0IHNvY2tfZmlsdGVyIGNvZGVbXSA9IHsKKwl7IDB4MjgsICAwLCAgMCwgMHgwMDAwMDAwYyB9LAorCXsgMHgxNSwgIDAsICA4LCAweDAwMDA4NmRkIH0sCisJeyAweDMwLCAgMCwgIDAsIDB4MDAwMDAwMTQgfSwKKwl7IDB4MTUsICAyLCAgMCwgMHgwMDAwMDA4NCB9LAorCXsgMHgxNSwgIDEsICAwLCAweDAwMDAwMDA2IH0sCisJeyAweDE1LCAgMCwgMTcsIDB4MDAwMDAwMTEgfSwKKwl7IDB4MjgsICAwLCAgMCwgMHgwMDAwMDAzNiB9LAorCXsgMHgxNSwgMTQsICAwLCAweDAwMDAwMDE2IH0sCisJeyAweDI4LCAgMCwgIDAsIDB4MDAwMDAwMzggfSwKKwl7IDB4MTUsIDEyLCAxMywgMHgwMDAwMDAxNiB9LAorCXsgMHgxNSwgIDAsIDEyLCAweDAwMDAwODAwIH0sCisJeyAweDMwLCAgMCwgIDAsIDB4MDAwMDAwMTcgfSwKKwl7IDB4MTUsICAyLCAgMCwgMHgwMDAwMDA4NCB9LAorCXsgMHgxNSwgIDEsICAwLCAweDAwMDAwMDA2IH0sCisJeyAweDE1LCAgMCwgIDgsIDB4MDAwMDAwMTEgfSwKKwl7IDB4MjgsICAwLCAgMCwgMHgwMDAwMDAxNCB9LAorCXsgMHg0NSwgIDYsICAwLCAweDAwMDAxZmZmIH0sCisJeyAweGIxLCAgMCwgIDAsIDB4MDAwMDAwMGUgfSwKKwl7IDB4NDgsICAwLCAgMCwgMHgwMDAwMDAwZSB9LAorCXsgMHgxNSwgIDIsICAwLCAweDAwMDAwMDE2IH0sCisJeyAweDQ4LCAgMCwgIDAsIDB4MDAwMDAwMTAgfSwKKwl7IDB4MTUsICAwLCAgMSwgMHgwMDAwMDAxNiB9LAorCXsgMHgwNiwgIDAsICAwLCAweDAwMDBmZmZmIH0sCisJeyAweDA2LCAgMCwgIDAsIDB4MDAwMDAwMDAgfSwKK307CisKK3N0cnVjdCBzb2NrX2Zwcm9nIGJwZiA9IHsKKwkubGVuID0gQVJSQVlfU0laRShjb2RlKSwKKwkuZmlsdGVyID0gY29kZSwKK307CisKK3NvY2sgPSBzb2NrZXQoUEZfUEFDS0VULCBTT0NLX1JBVywgaHRvbnMoRVRIX1BfQUxMKSk7CitpZiAoc29jayA8IDApCisJLyogLi4uIGJhaWwgb3V0IC4uLiAqLworCityZXQgPSBzZXRzb2Nrb3B0KHNvY2ssIFNPTF9TT0NLRVQsIFNPX0FUVEFDSF9GSUxURVIsICZicGYsIHNpemVvZihicGYpKTsKK2lmIChyZXQgPCAwKQorCS8qIC4uLiBiYWlsIG91dCAuLi4gKi8KKworLyogLi4uICovCitjbG9zZShzb2NrKTsKKworVGhlIGFib3ZlIGV4YW1wbGUgY29kZSBhdHRhY2hlcyBhIHNvY2tldCBmaWx0ZXIgZm9yIGEgUEZfUEFDS0VUIHNvY2tldAoraW4gb3JkZXIgdG8gbGV0IGFsbCBJUHY0L0lQdjYgcGFja2V0cyB3aXRoIHBvcnQgMjIgcGFzcy4gVGhlIHJlc3Qgd2lsbAorYmUgZHJvcHBlZCBmb3IgdGhpcyBzb2NrZXQuCisKK1RoZSBzZXRzb2Nrb3B0KDIpIGNhbGwgdG8gU09fREVUQUNIX0ZJTFRFUiBkb2Vzbid0IG5lZWQgYW55IGFyZ3VtZW50cworYW5kIFNPX0xPQ0tfRklMVEVSIGZvciBwcmV2ZW50aW5nIHRoZSBmaWx0ZXIgdG8gYmUgZGV0YWNoZWQsIHRha2VzIGFuCitpbnRlZ2VyIHZhbHVlIHdpdGggMCBvciAxLgorCitOb3RlIHRoYXQgc29ja2V0IGZpbHRlcnMgYXJlIG5vdCByZXN0cmljdGVkIHRvIFBGX1BBQ0tFVCBzb2NrZXRzIG9ubHksCitidXQgY2FuIGFsc28gYmUgdXNlZCBvbiBvdGhlciBzb2NrZXQgZmFtaWxpZXMuCisKK1N1bW1hcnkgb2Ygc3lzdGVtIGNhbGxzOgorCisgKiBzZXRzb2Nrb3B0KHNvY2tmZCwgU09MX1NPQ0tFVCwgU09fQVRUQUNIX0ZJTFRFUiwgJnZhbCwgc2l6ZW9mKHZhbCkpOworICogc2V0c29ja29wdChzb2NrZmQsIFNPTF9TT0NLRVQsIFNPX0RFVEFDSF9GSUxURVIsICZ2YWwsIHNpemVvZih2YWwpKTsKKyAqIHNldHNvY2tvcHQoc29ja2ZkLCBTT0xfU09DS0VULCBTT19MT0NLX0ZJTFRFUiwgICAmdmFsLCBzaXplb2YodmFsKSk7CisKK05vcm1hbGx5LCBtb3N0IHVzZSBjYXNlcyBmb3Igc29ja2V0IGZpbHRlcmluZyBvbiBwYWNrZXQgc29ja2V0cyB3aWxsIGJlCitjb3ZlcmVkIGJ5IGxpYnBjYXAgaW4gaGlnaC1sZXZlbCBzeW50YXgsIHNvIGFzIGFuIGFwcGxpY2F0aW9uIGRldmVsb3BlcgoreW91IHNob3VsZCBzdGljayB0byB0aGF0LiBsaWJwY2FwIHdyYXBzIGl0cyBvd24gbGF5ZXIgYXJvdW5kIGFsbCB0aGF0LgorCitVbmxlc3MgaSkgdXNpbmcvbGlua2luZyB0byBsaWJwY2FwIGlzIG5vdCBhbiBvcHRpb24sIGlpKSB0aGUgcmVxdWlyZWQgQlBGCitmaWx0ZXJzIHVzZSBMaW51eCBleHRlbnNpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgbGlicGNhcCdzIGNvbXBpbGVyLAoraWlpKSBhIGZpbHRlciBtaWdodCBiZSBtb3JlIGNvbXBsZXggYW5kIG5vdCBjbGVhbmx5IGltcGxlbWVudGFibGUgd2l0aAorbGlicGNhcCdzIGNvbXBpbGVyLCBvciBpdikgcGFydGljdWxhciBmaWx0ZXIgY29kZXMgc2hvdWxkIGJlIG9wdGltaXplZAorZGlmZmVyZW50bHkgdGhhbiBsaWJwY2FwJ3MgaW50ZXJuYWwgY29tcGlsZXIgZG9lczsgdGhlbiBpbiBzdWNoIGNhc2VzCit3cml0aW5nIHN1Y2ggYSBmaWx0ZXIgImJ5IGhhbmQiIGNhbiBiZSBvZiBhbiBhbHRlcm5hdGl2ZS4gRm9yIGV4YW1wbGUsCit4dF9icGYgYW5kIGNsc19icGYgdXNlcnMgbWlnaHQgaGF2ZSByZXF1aXJlbWVudHMgdGhhdCBjb3VsZCByZXN1bHQgaW4KK21vcmUgY29tcGxleCBmaWx0ZXIgY29kZSwgb3Igb25lIHRoYXQgY2Fubm90IGJlIGV4cHJlc3NlZCB3aXRoIGxpYnBjYXAKKyhlLmcuIGRpZmZlcmVudCByZXR1cm4gY29kZXMgZm9yIHZhcmlvdXMgY29kZSBwYXRocykuIE1vcmVvdmVyLCBCUEYgSklUCitpbXBsZW1lbnRvcnMgbWF5IHdpc2ggdG8gbWFudWFsbHkgd3JpdGUgdGVzdCBjYXNlcyBhbmQgdGh1cyBuZWVkIGxvdy1sZXZlbAorYWNjZXNzIHRvIEJQRiBjb2RlIGFzIHdlbGwuCisKK0JQRiBlbmdpbmUgYW5kIGluc3RydWN0aW9uIHNldAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1VuZGVyIHRvb2xzL25ldC8gdGhlcmUncyBhIHNtYWxsIGhlbHBlciB0b29sIGNhbGxlZCBicGZfYXNtIHdoaWNoIGNhbgorYmUgdXNlZCB0byB3cml0ZSBsb3ctbGV2ZWwgZmlsdGVycyBmb3IgZXhhbXBsZSBzY2VuYXJpb3MgbWVudGlvbmVkIGluIHRoZQorcHJldmlvdXMgc2VjdGlvbi4gQXNtLWxpa2Ugc3ludGF4IG1lbnRpb25lZCBoZXJlIGhhcyBiZWVuIGltcGxlbWVudGVkIGluCiticGZfYXNtIGFuZCB3aWxsIGJlIHVzZWQgZm9yIGZ1cnRoZXIgZXhwbGFuYXRpb25zIChpbnN0ZWFkIG9mIGRlYWxpbmcgd2l0aAorbGVzcyByZWFkYWJsZSBvcGNvZGVzIGRpcmVjdGx5LCBwcmluY2lwbGVzIGFyZSB0aGUgc2FtZSkuIFRoZSBzeW50YXggaXMKK2Nsb3NlbHkgbW9kZWxsZWQgYWZ0ZXIgU3RldmVuIE1jQ2FubmUncyBhbmQgVmFuIEphY29ic29uJ3MgQlBGIHBhcGVyLgorCitUaGUgQlBGIGFyY2hpdGVjdHVyZSBjb25zaXN0cyBvZiB0aGUgZm9sbG93aW5nIGJhc2ljIGVsZW1lbnRzOgorCisgIEVsZW1lbnQgICAgICAgICAgRGVzY3JpcHRpb24KKworICBBICAgICAgICAgICAgICAgIDMyIGJpdCB3aWRlIGFjY3VtdWxhdG9yCisgIFggICAgICAgICAgICAgICAgMzIgYml0IHdpZGUgWCByZWdpc3RlcgorICBNW10gICAgICAgICAgICAgIDE2IHggMzIgYml0IHdpZGUgbWlzYyByZWdpc3RlcnMgYWthICJzY3JhdGNoIG1lbW9yeQorICAgICAgICAgICAgICAgICAgIHN0b3JlIiwgYWRkcmVzc2FibGUgZnJvbSAwIHRvIDE1CisKK0EgcHJvZ3JhbSwgdGhhdCBpcyB0cmFuc2xhdGVkIGJ5IGJwZl9hc20gaW50byAib3Bjb2RlcyIgaXMgYW4gYXJyYXkgdGhhdAorY29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZyBlbGVtZW50cyAoYXMgYWxyZWFkeSBtZW50aW9uZWQpOgorCisgIG9wOjE2LCBqdDo4LCBqZjo4LCBrOjMyCisKK1RoZSBlbGVtZW50IG9wIGlzIGEgMTYgYml0IHdpZGUgb3Bjb2RlIHRoYXQgaGFzIGEgcGFydGljdWxhciBpbnN0cnVjdGlvbgorZW5jb2RlZC4ganQgYW5kIGpmIGFyZSB0d28gOCBiaXQgd2lkZSBqdW1wIHRhcmdldHMsIG9uZSBmb3IgY29uZGl0aW9uCisianVtcCBpZiB0cnVlIiwgdGhlIG90aGVyIG9uZSAianVtcCBpZiBmYWxzZSIuIEV2ZW50dWFsbHksIGVsZW1lbnQgaworY29udGFpbnMgYSBtaXNjZWxsYW5lb3VzIGFyZ3VtZW50IHRoYXQgY2FuIGJlIGludGVycHJldGVkIGluIGRpZmZlcmVudAord2F5cyBkZXBlbmRpbmcgb24gdGhlIGdpdmVuIGluc3RydWN0aW9uIGluIG9wLgorCitUaGUgaW5zdHJ1Y3Rpb24gc2V0IGNvbnNpc3RzIG9mIGxvYWQsIHN0b3JlLCBicmFuY2gsIGFsdSwgbWlzY2VsbGFuZW91cworYW5kIHJldHVybiBpbnN0cnVjdGlvbnMgdGhhdCBhcmUgYWxzbyByZXByZXNlbnRlZCBpbiBicGZfYXNtIHN5bnRheC4gVGhpcwordGFibGUgbGlzdHMgYWxsIGJwZl9hc20gaW5zdHJ1Y3Rpb25zIGF2YWlsYWJsZSByZXNwLiB3aGF0IHRoZWlyIHVuZGVybHlpbmcKK29wY29kZXMgYXMgZGVmaW5lZCBpbiBsaW51eC9maWx0ZXIuaCBzdGFuZCBmb3I6CisKKyAgSW5zdHJ1Y3Rpb24gICAgICBBZGRyZXNzaW5nIG1vZGUgICAgICBEZXNjcmlwdGlvbgorCisgIGxkICAgICAgICAgICAgICAgMSwgMiwgMywgNCwgMTAgICAgICAgTG9hZCB3b3JkIGludG8gQQorICBsZGkgICAgICAgICAgICAgIDQgICAgICAgICAgICAgICAgICAgIExvYWQgd29yZCBpbnRvIEEKKyAgbGRoICAgICAgICAgICAgICAxLCAyICAgICAgICAgICAgICAgICBMb2FkIGhhbGYtd29yZCBpbnRvIEEKKyAgbGRiICAgICAgICAgICAgICAxLCAyICAgICAgICAgICAgICAgICBMb2FkIGJ5dGUgaW50byBBCisgIGxkeCAgICAgICAgICAgICAgMywgNCwgNSwgMTAgICAgICAgICAgTG9hZCB3b3JkIGludG8gWAorICBsZHhpICAgICAgICAgICAgIDQgICAgICAgICAgICAgICAgICAgIExvYWQgd29yZCBpbnRvIFgKKyAgbGR4YiAgICAgICAgICAgICA1ICAgICAgICAgICAgICAgICAgICBMb2FkIGJ5dGUgaW50byBYCisKKyAgc3QgICAgICAgICAgICAgICAzICAgICAgICAgICAgICAgICAgICBTdG9yZSBBIGludG8gTVtdCisgIHN0eCAgICAgICAgICAgICAgMyAgICAgICAgICAgICAgICAgICAgU3RvcmUgWCBpbnRvIE1bXQorCisgIGptcCAgICAgICAgICAgICAgNiAgICAgICAgICAgICAgICAgICAgSnVtcCB0byBsYWJlbAorICBqYSAgICAgICAgICAgICAgIDYgICAgICAgICAgICAgICAgICAgIEp1bXAgdG8gbGFiZWwKKyAgamVxICAgICAgICAgICAgICA3LCA4ICAgICAgICAgICAgICAgICBKdW1wIG9uIGsgPT0gQQorICBqbmVxICAgICAgICAgICAgIDggICAgICAgICAgICAgICAgICAgIEp1bXAgb24gayAhPSBBCisgIGpuZSAgICAgICAgICAgICAgOCAgICAgICAgICAgICAgICAgICAgSnVtcCBvbiBrICE9IEEKKyAgamx0ICAgICAgICAgICAgICA4ICAgICAgICAgICAgICAgICAgICBKdW1wIG9uIGsgPCBBCisgIGpsZSAgICAgICAgICAgICAgOCAgICAgICAgICAgICAgICAgICAgSnVtcCBvbiBrIDw9IEEKKyAgamd0ICAgICAgICAgICAgICA3LCA4ICAgICAgICAgICAgICAgICBKdW1wIG9uIGsgPiBBCisgIGpnZSAgICAgICAgICAgICAgNywgOCAgICAgICAgICAgICAgICAgSnVtcCBvbiBrID49IEEKKyAganNldCAgICAgICAgICAgICA3LCA4ICAgICAgICAgICAgICAgICBKdW1wIG9uIGsgJiBBCisKKyAgYWRkICAgICAgICAgICAgICAwLCA0ICAgICAgICAgICAgICAgICBBICsgPHg+CisgIHN1YiAgICAgICAgICAgICAgMCwgNCAgICAgICAgICAgICAgICAgQSAtIDx4PgorICBtdWwgICAgICAgICAgICAgIDAsIDQgICAgICAgICAgICAgICAgIEEgKiA8eD4KKyAgZGl2ICAgICAgICAgICAgICAwLCA0ICAgICAgICAgICAgICAgICBBIC8gPHg+CisgIG1vZCAgICAgICAgICAgICAgMCwgNCAgICAgICAgICAgICAgICAgQSAlIDx4PgorICBuZWcgICAgICAgICAgICAgIDAsIDQgICAgICAgICAgICAgICAgICFBCisgIGFuZCAgICAgICAgICAgICAgMCwgNCAgICAgICAgICAgICAgICAgQSAmIDx4PgorICBvciAgICAgICAgICAgICAgIDAsIDQgICAgICAgICAgICAgICAgIEEgfCA8eD4KKyAgeG9yICAgICAgICAgICAgICAwLCA0ICAgICAgICAgICAgICAgICBBIF4gPHg+CisgIGxzaCAgICAgICAgICAgICAgMCwgNCAgICAgICAgICAgICAgICAgQSA8PCA8eD4KKyAgcnNoICAgICAgICAgICAgICAwLCA0ICAgICAgICAgICAgICAgICBBID4+IDx4PgorCisgIHRheCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29weSBBIGludG8gWAorICB0eGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHkgWCBpbnRvIEEKKworICByZXQgICAgICAgICAgICAgIDQsIDkgICAgICAgICAgICAgICAgIFJldHVybgorCitUaGUgbmV4dCB0YWJsZSBzaG93cyBhZGRyZXNzaW5nIGZvcm1hdHMgZnJvbSB0aGUgMm5kIGNvbHVtbjoKKworICBBZGRyZXNzaW5nIG1vZGUgIFN5bnRheCAgICAgICAgICAgICAgIERlc2NyaXB0aW9uCisKKyAgIDAgICAgICAgICAgICAgICB4LyV4ICAgICAgICAgICAgICAgICBSZWdpc3RlciBYCisgICAxICAgICAgICAgICAgICAgW2tdICAgICAgICAgICAgICAgICAgQkhXIGF0IGJ5dGUgb2Zmc2V0IGsgaW4gdGhlIHBhY2tldAorICAgMiAgICAgICAgICAgICAgIFt4ICsga10gICAgICAgICAgICAgIEJIVyBhdCB0aGUgb2Zmc2V0IFggKyBrIGluIHRoZSBwYWNrZXQKKyAgIDMgICAgICAgICAgICAgICBNW2tdICAgICAgICAgICAgICAgICBXb3JkIGF0IG9mZnNldCBrIGluIE1bXQorICAgNCAgICAgICAgICAgICAgICNrICAgICAgICAgICAgICAgICAgIExpdGVyYWwgdmFsdWUgc3RvcmVkIGluIGsKKyAgIDUgICAgICAgICAgICAgICA0Kihba10mMHhmKSAgICAgICAgICBMb3dlciBuaWJibGUgKiA0IGF0IGJ5dGUgb2Zmc2V0IGsgaW4gdGhlIHBhY2tldAorICAgNiAgICAgICAgICAgICAgIEwgICAgICAgICAgICAgICAgICAgIEp1bXAgbGFiZWwgTAorICAgNyAgICAgICAgICAgICAgICNrLEx0LExmICAgICAgICAgICAgIEp1bXAgdG8gTHQgaWYgdHJ1ZSwgb3RoZXJ3aXNlIGp1bXAgdG8gTGYKKyAgIDggICAgICAgICAgICAgICAjayxMdCAgICAgICAgICAgICAgICBKdW1wIHRvIEx0IGlmIHByZWRpY2F0ZSBpcyB0cnVlCisgICA5ICAgICAgICAgICAgICAgYS8lYSAgICAgICAgICAgICAgICAgQWNjdW11bGF0b3IgQQorICAxMCAgICAgICAgICAgICAgIGV4dGVuc2lvbiAgICAgICAgICAgIEJQRiBleHRlbnNpb24KKworVGhlIExpbnV4IGtlcm5lbCBhbHNvIGhhcyBhIGNvdXBsZSBvZiBCUEYgZXh0ZW5zaW9ucyB0aGF0IGFyZSB1c2VkIGFsb25nCit3aXRoIHRoZSBjbGFzcyBvZiBsb2FkIGluc3RydWN0aW9ucyBieSAib3ZlcmxvYWRpbmciIHRoZSBrIGFyZ3VtZW50IHdpdGgKK2EgbmVnYXRpdmUgb2Zmc2V0ICsgYSBwYXJ0aWN1bGFyIGV4dGVuc2lvbiBvZmZzZXQuIFRoZSByZXN1bHQgb2Ygc3VjaCBCUEYKK2V4dGVuc2lvbnMgYXJlIGxvYWRlZCBpbnRvIEEuCisKK1Bvc3NpYmxlIEJQRiBleHRlbnNpb25zIGFyZSBzaG93biBpbiB0aGUgZm9sbG93aW5nIHRhYmxlOgorCisgIEV4dGVuc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24KKworICBsZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNrYi0+bGVuCisgIHByb3RvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tiLT5wcm90b2NvbAorICB0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNrYi0+cGt0X3R5cGUKKyAgcG9mZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXlsb2FkIHN0YXJ0IG9mZnNldAorICBpZmlkeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNrYi0+ZGV2LT5pZmluZGV4CisgIG5sYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0bGluayBhdHRyaWJ1dGUgb2YgdHlwZSBYIHdpdGggb2Zmc2V0IEEKKyAgbmxhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXN0ZWQgTmV0bGluayBhdHRyaWJ1dGUgb2YgdHlwZSBYIHdpdGggb2Zmc2V0IEEKKyAgbWFyayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2ItPm1hcmsKKyAgcXVldWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2ItPnF1ZXVlX21hcHBpbmcKKyAgaGF0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2ItPmRldi0+dHlwZQorICByeGhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNrYi0+aGFzaAorICBjcHUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd19zbXBfcHJvY2Vzc29yX2lkKCkKKyAgdmxhbl90Y2kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2Jfdmxhbl90YWdfZ2V0KHNrYikKKyAgdmxhbl9hdmFpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2Jfdmxhbl90YWdfcHJlc2VudChza2IpCisgIHZsYW5fdHBpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tiLT52bGFuX3Byb3RvCisgIHJhbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJhbmRvbV91MzIoKQorCitUaGVzZSBleHRlbnNpb25zIGNhbiBhbHNvIGJlIHByZWZpeGVkIHdpdGggJyMnLgorRXhhbXBsZXMgZm9yIGxvdy1sZXZlbCBCUEY6CisKKyoqIEFSUCBwYWNrZXRzOgorCisgIGxkaCBbMTJdCisgIGpuZSAjMHg4MDYsIGRyb3AKKyAgcmV0ICMtMQorICBkcm9wOiByZXQgIzAKKworKiogSVB2NCBUQ1AgcGFja2V0czoKKworICBsZGggWzEyXQorICBqbmUgIzB4ODAwLCBkcm9wCisgIGxkYiBbMjNdCisgIGpuZXEgIzYsIGRyb3AKKyAgcmV0ICMtMQorICBkcm9wOiByZXQgIzAKKworKiogKEFjY2VsZXJhdGVkKSBWTEFOIHcvIGlkIDEwOgorCisgIGxkIHZsYW5fdGNpCisgIGpuZXEgIzEwLCBkcm9wCisgIHJldCAjLTEKKyAgZHJvcDogcmV0ICMwCisKKyoqIGljbXAgcmFuZG9tIHBhY2tldCBzYW1wbGluZywgMSBpbiA0CisgIGxkaCBbMTJdCisgIGpuZSAjMHg4MDAsIGRyb3AKKyAgbGRiIFsyM10KKyAgam5lcSAjMSwgZHJvcAorICAjIGdldCBhIHJhbmRvbSB1aW50MzIgbnVtYmVyCisgIGxkIHJhbmQKKyAgbW9kICM0CisgIGpuZXEgIzEsIGRyb3AKKyAgcmV0ICMtMQorICBkcm9wOiByZXQgIzAKKworKiogU0VDQ09NUCBmaWx0ZXIgZXhhbXBsZToKKworICBsZCBbNF0gICAgICAgICAgICAgICAgICAvKiBvZmZzZXRvZihzdHJ1Y3Qgc2VjY29tcF9kYXRhLCBhcmNoKSAqLworICBqbmUgIzB4YzAwMDAwM2UsIGJhZCAgICAvKiBBVURJVF9BUkNIX1g4Nl82NCAqLworICBsZCBbMF0gICAgICAgICAgICAgICAgICAvKiBvZmZzZXRvZihzdHJ1Y3Qgc2VjY29tcF9kYXRhLCBucikgKi8KKyAgamVxICMxNSwgZ29vZCAgICAgICAgICAgLyogX19OUl9ydF9zaWdyZXR1cm4gKi8KKyAgamVxICMyMzEsIGdvb2QgICAgICAgICAgLyogX19OUl9leGl0X2dyb3VwICovCisgIGplcSAjNjAsIGdvb2QgICAgICAgICAgIC8qIF9fTlJfZXhpdCAqLworICBqZXEgIzAsIGdvb2QgICAgICAgICAgICAvKiBfX05SX3JlYWQgKi8KKyAgamVxICMxLCBnb29kICAgICAgICAgICAgLyogX19OUl93cml0ZSAqLworICBqZXEgIzUsIGdvb2QgICAgICAgICAgICAvKiBfX05SX2ZzdGF0ICovCisgIGplcSAjOSwgZ29vZCAgICAgICAgICAgIC8qIF9fTlJfbW1hcCAqLworICBqZXEgIzE0LCBnb29kICAgICAgICAgICAvKiBfX05SX3J0X3NpZ3Byb2NtYXNrICovCisgIGplcSAjMTMsIGdvb2QgICAgICAgICAgIC8qIF9fTlJfcnRfc2lnYWN0aW9uICovCisgIGplcSAjMzUsIGdvb2QgICAgICAgICAgIC8qIF9fTlJfbmFub3NsZWVwICovCisgIGJhZDogcmV0ICMwICAgICAgICAgICAgIC8qIFNFQ0NPTVBfUkVUX0tJTEwgKi8KKyAgZ29vZDogcmV0ICMweDdmZmYwMDAwICAgLyogU0VDQ09NUF9SRVRfQUxMT1cgKi8KKworVGhlIGFib3ZlIGV4YW1wbGUgY29kZSBjYW4gYmUgcGxhY2VkIGludG8gYSBmaWxlIChoZXJlIGNhbGxlZCAiZm9vIiksIGFuZAordGhlbiBiZSBwYXNzZWQgdG8gdGhlIGJwZl9hc20gdG9vbCBmb3IgZ2VuZXJhdGluZyBvcGNvZGVzLCBvdXRwdXQgdGhhdCB4dF9icGYKK2FuZCBjbHNfYnBmIHVuZGVyc3RhbmRzIGFuZCBjYW4gZGlyZWN0bHkgYmUgbG9hZGVkIHdpdGguIEV4YW1wbGUgd2l0aCBhYm92ZQorQVJQIGNvZGU6CisKKyQgLi9icGZfYXNtIGZvbworNCw0MCAwIDAgMTIsMjEgMCAxIDIwNTQsNiAwIDAgNDI5NDk2NzI5NSw2IDAgMCAwLAorCitJbiBjb3B5IGFuZCBwYXN0ZSBDLWxpa2Ugb3V0cHV0OgorCiskIC4vYnBmX2FzbSAtYyBmb28KK3sgMHgyOCwgIDAsICAwLCAweDAwMDAwMDBjIH0sCit7IDB4MTUsICAwLCAgMSwgMHgwMDAwMDgwNiB9LAoreyAweDA2LCAgMCwgIDAsIDB4ZmZmZmZmZmYgfSwKK3sgMHgwNiwgIDAsICAwLCAwMDAwMDAwMDAwIH0sCisKK0luIHBhcnRpY3VsYXIsIGFzIHVzYWdlIHdpdGggeHRfYnBmIG9yIGNsc19icGYgY2FuIHJlc3VsdCBpbiBtb3JlIGNvbXBsZXggQlBGCitmaWx0ZXJzIHRoYXQgbWlnaHQgbm90IGJlIG9idmlvdXMgYXQgZmlyc3QsIGl0J3MgZ29vZCB0byB0ZXN0IGZpbHRlcnMgYmVmb3JlCithdHRhY2hpbmcgdG8gYSBsaXZlIHN5c3RlbS4gRm9yIHRoYXQgcHVycG9zZSwgdGhlcmUncyBhIHNtYWxsIHRvb2wgY2FsbGVkCiticGZfZGJnIHVuZGVyIHRvb2xzL25ldC8gaW4gdGhlIGtlcm5lbCBzb3VyY2UgZGlyZWN0b3J5LiBUaGlzIGRlYnVnZ2VyIGFsbG93cworZm9yIHRlc3RpbmcgQlBGIGZpbHRlcnMgYWdhaW5zdCBnaXZlbiBwY2FwIGZpbGVzLCBzaW5nbGUgc3RlcHBpbmcgdGhyb3VnaCB0aGUKK0JQRiBjb2RlIG9uIHRoZSBwY2FwJ3MgcGFja2V0cyBhbmQgdG8gZG8gQlBGIG1hY2hpbmUgcmVnaXN0ZXIgZHVtcHMuCisKK1N0YXJ0aW5nIGJwZl9kYmcgaXMgdHJpdmlhbCBhbmQganVzdCByZXF1aXJlcyBpc3N1aW5nOgorCisjIC4vYnBmX2RiZworCitJbiBjYXNlIGlucHV0IGFuZCBvdXRwdXQgZG8gbm90IGVxdWFsIHN0ZGluL3N0ZG91dCwgYnBmX2RiZyB0YWtlcyBhbgorYWx0ZXJuYXRpdmUgc3RkaW4gc291cmNlIGFzIGEgZmlyc3QgYXJndW1lbnQsIGFuZCBhbiBhbHRlcm5hdGl2ZSBzdGRvdXQKK3NpbmsgYXMgYSBzZWNvbmQgb25lLCBlLmcuIGAuL2JwZl9kYmcgdGVzdF9pbi50eHQgdGVzdF9vdXQudHh0YC4KKworT3RoZXIgdGhhbiB0aGF0LCBhIHBhcnRpY3VsYXIgbGlicmVhZGxpbmUgY29uZmlndXJhdGlvbiBjYW4gYmUgc2V0IHZpYQorZmlsZSAifi8uYnBmX2RiZ19pbml0IiBhbmQgdGhlIGNvbW1hbmQgaGlzdG9yeSBpcyBzdG9yZWQgaW4gdGhlIGZpbGUKKyJ+Ly5icGZfZGJnX2hpc3RvcnkiLgorCitJbnRlcmFjdGlvbiBpbiBicGZfZGJnIGhhcHBlbnMgdGhyb3VnaCBhIHNoZWxsIHRoYXQgYWxzbyBoYXMgYXV0by1jb21wbGV0aW9uCitzdXBwb3J0IChmb2xsb3ctdXAgZXhhbXBsZSBjb21tYW5kcyBzdGFydGluZyB3aXRoICc+JyBkZW5vdGUgYnBmX2RiZyBzaGVsbCkuCitUaGUgdXN1YWwgd29ya2Zsb3cgd291bGQgYmUgdG8gLi4uCisKKz4gbG9hZCBicGYgNiw0MCAwIDAgMTIsMjEgMCAzIDIwNDgsNDggMCAwIDIzLDIxIDAgMSAxLDYgMCAwIDY1NTM1LDYgMCAwIDAKKyAgTG9hZHMgYSBCUEYgZmlsdGVyIGZyb20gc3RhbmRhcmQgb3V0cHV0IG9mIGJwZl9hc20sIG9yIHRyYW5zZm9ybWVkIHZpYQorICBlLmcuIGB0Y3BkdW1wIC1pZW0xIC1kZGQgcG9ydCAyMiB8IHRyICdcbicgJywnYC4gTm90ZSB0aGF0IGZvciBKSVQKKyAgZGVidWdnaW5nIChuZXh0IHNlY3Rpb24pLCB0aGlzIGNvbW1hbmQgY3JlYXRlcyBhIHRlbXBvcmFyeSBzb2NrZXQgYW5kCisgIGxvYWRzIHRoZSBCUEYgY29kZSBpbnRvIHRoZSBrZXJuZWwuIFRodXMsIHRoaXMgd2lsbCBhbHNvIGJlIHVzZWZ1bCBmb3IKKyAgSklUIGRldmVsb3BlcnMuCisKKz4gbG9hZCBwY2FwIGZvby5wY2FwCisgIExvYWRzIHN0YW5kYXJkIHRjcGR1bXAgcGNhcCBmaWxlLgorCis+IHJ1biBbPG4+XQorYnBmIHBhc3NlczoxIGZhaWxzOjkKKyAgUnVucyB0aHJvdWdoIGFsbCBwYWNrZXRzIGZyb20gYSBwY2FwIHRvIGFjY291bnQgaG93IG1hbnkgcGFzc2VzIGFuZCBmYWlscworICB0aGUgZmlsdGVyIHdpbGwgZ2VuZXJhdGUuIEEgbGltaXQgb2YgcGFja2V0cyB0byB0cmF2ZXJzZSBjYW4gYmUgZ2l2ZW4uCisKKz4gZGlzYXNzZW1ibGUKK2wwOglsZGggWzEyXQorbDE6CWplcSAjMHg4MDAsIGwyLCBsNQorbDI6CWxkYiBbMjNdCitsMzoJamVxICMweDEsIGw0LCBsNQorbDQ6CXJldCAjMHhmZmZmCitsNToJcmV0ICMwCisgIFByaW50cyBvdXQgQlBGIGNvZGUgZGlzYXNzZW1ibHkuCisKKz4gZHVtcAorLyogeyBvcCwganQsIGpmLCBrIH0sICovCit7IDB4MjgsICAwLCAgMCwgMHgwMDAwMDAwYyB9LAoreyAweDE1LCAgMCwgIDMsIDB4MDAwMDA4MDAgfSwKK3sgMHgzMCwgIDAsICAwLCAweDAwMDAwMDE3IH0sCit7IDB4MTUsICAwLCAgMSwgMHgwMDAwMDAwMSB9LAoreyAweDA2LCAgMCwgIDAsIDB4MDAwMGZmZmYgfSwKK3sgMHgwNiwgIDAsICAwLCAwMDAwMDAwMDAwIH0sCisgIFByaW50cyBvdXQgQy1zdHlsZSBCUEYgY29kZSBkdW1wLgorCis+IGJyZWFrcG9pbnQgMAorYnJlYWtwb2ludCBhdDogbDA6CWxkaCBbMTJdCis+IGJyZWFrcG9pbnQgMQorYnJlYWtwb2ludCBhdDogbDE6CWplcSAjMHg4MDAsIGwyLCBsNQorICAuLi4KKyAgU2V0cyBicmVha3BvaW50cyBhdCBwYXJ0aWN1bGFyIEJQRiBpbnN0cnVjdGlvbnMuIElzc3VpbmcgYSBgcnVuYCBjb21tYW5kCisgIHdpbGwgd2FsayB0aHJvdWdoIHRoZSBwY2FwIGZpbGUgY29udGludWluZyBmcm9tIHRoZSBjdXJyZW50IHBhY2tldCBhbmQKKyAgYnJlYWsgd2hlbiBhIGJyZWFrcG9pbnQgaXMgYmVpbmcgaGl0IChhbm90aGVyIGBydW5gIHdpbGwgY29udGludWUgZnJvbQorICB0aGUgY3VycmVudGx5IGFjdGl2ZSBicmVha3BvaW50IGV4ZWN1dGluZyBuZXh0IGluc3RydWN0aW9ucyk6CisKKyAgPiBydW4KKyAgLS0gcmVnaXN0ZXIgZHVtcCAtLQorICBwYzogICAgICAgWzBdICAgICAgICAgICAgICAgICAgICAgICA8LS0gcHJvZ3JhbSBjb3VudGVyCisgIGNvZGU6ICAgICBbNDBdIGp0WzBdIGpmWzBdIGtbMTJdICAgIDwtLSBwbGFpbiBCUEYgY29kZSBvZiBjdXJyZW50IGluc3RydWN0aW9uCisgIGN1cnI6ICAgICBsMDoJbGRoIFsxMl0gICAgICAgICAgICAgIDwtLSBkaXNhc3NlbWJseSBvZiBjdXJyZW50IGluc3RydWN0aW9uCisgIEE6ICAgICAgICBbMDAwMDAwMDBdWzBdICAgICAgICAgICAgIDwtLSBjb250ZW50IG9mIEEgKGhleCwgZGVjaW1hbCkKKyAgWDogICAgICAgIFswMDAwMDAwMF1bMF0gICAgICAgICAgICAgPC0tIGNvbnRlbnQgb2YgWCAoaGV4LCBkZWNpbWFsKQorICBNWzAsMTVdOiAgWzAwMDAwMDAwXVswXSAgICAgICAgICAgICA8LS0gZm9sZGVkIGNvbnRlbnQgb2YgTSAoaGV4LCBkZWNpbWFsKQorICAtLSBwYWNrZXQgZHVtcCAtLSAgICAgICAgICAgICAgICAgICA8LS0gQ3VycmVudCBwYWNrZXQgZnJvbSBwY2FwIChoZXgpCisgIGxlbjogNDIKKyAgICAwOiAwMCAxOSBjYiA1NSA1NSBhNCAwMCAxNCBhNCA0MyA3OCA2OSAwOCAwNiAwMCAwMQorICAgMTY6IDA4IDAwIDA2IDA0IDAwIDAxIDAwIDE0IGE0IDQzIDc4IDY5IDBhIDNiIDAxIDI2CisgICAzMjogMDAgMDAgMDAgMDAgMDAgMDAgMGEgM2IgMDEgMDEKKyAgKGJyZWFrcG9pbnQpCisgID4KKworPiBicmVha3BvaW50CiticmVha3BvaW50czogMCAxCisgIFByaW50cyBjdXJyZW50bHkgc2V0IGJyZWFrcG9pbnRzLgorCis+IHN0ZXAgWy08bj4sICs8bj5dCisgIFBlcmZvcm1zIHNpbmdsZSBzdGVwcGluZyB0aHJvdWdoIHRoZSBCUEYgcHJvZ3JhbSBmcm9tIHRoZSBjdXJyZW50IHBjCisgIG9mZnNldC4gVGh1cywgb24gZWFjaCBzdGVwIGludm9jYXRpb24sIGFib3ZlIHJlZ2lzdGVyIGR1bXAgaXMgaXNzdWVkLgorICBUaGlzIGNhbiBnbyBmb3J3YXJkcyBhbmQgYmFja3dhcmRzIGluIHRpbWUsIGEgcGxhaW4gYHN0ZXBgIHdpbGwgYnJlYWsKKyAgb24gdGhlIG5leHQgQlBGIGluc3RydWN0aW9uLCB0aHVzICsxLiAoTm8gYHJ1bmAgbmVlZHMgdG8gYmUgaXNzdWVkIGhlcmUuKQorCis+IHNlbGVjdCA8bj4KKyAgU2VsZWN0cyBhIGdpdmVuIHBhY2tldCBmcm9tIHRoZSBwY2FwIGZpbGUgdG8gY29udGludWUgZnJvbS4gVGh1cywgb24KKyAgdGhlIG5leHQgYHJ1bmAgb3IgYHN0ZXBgLCB0aGUgQlBGIHByb2dyYW0gaXMgYmVpbmcgZXZhbHVhdGVkIGFnYWluc3QKKyAgdGhlIHVzZXIgcHJlLXNlbGVjdGVkIHBhY2tldC4gTnVtYmVyaW5nIHN0YXJ0cyBqdXN0IGFzIGluIFdpcmVzaGFyaworICB3aXRoIGluZGV4IDEuCisKKz4gcXVpdAorIworICBFeGl0cyBicGZfZGJnLgorCitKSVQgY29tcGlsZXIKKy0tLS0tLS0tLS0tLQorCitUaGUgTGludXgga2VybmVsIGhhcyBhIGJ1aWx0LWluIEJQRiBKSVQgY29tcGlsZXIgZm9yIHg4Nl82NCwgU1BBUkMsIFBvd2VyUEMsCitBUk0sIEFSTTY0LCBNSVBTIGFuZCBzMzkwIGFuZCBjYW4gYmUgZW5hYmxlZCB0aHJvdWdoIENPTkZJR19CUEZfSklULiBUaGUgSklUCitjb21waWxlciBpcyB0cmFuc3BhcmVudGx5IGludm9rZWQgZm9yIGVhY2ggYXR0YWNoZWQgZmlsdGVyIGZyb20gdXNlciBzcGFjZQorb3IgZm9yIGludGVybmFsIGtlcm5lbCB1c2VycyBpZiBpdCBoYXMgYmVlbiBwcmV2aW91c2x5IGVuYWJsZWQgYnkgcm9vdDoKKworICBlY2hvIDEgPiAvcHJvYy9zeXMvbmV0L2NvcmUvYnBmX2ppdF9lbmFibGUKKworRm9yIEpJVCBkZXZlbG9wZXJzLCBkb2luZyBhdWRpdHMgZXRjLCBlYWNoIGNvbXBpbGUgcnVuIGNhbiBvdXRwdXQgdGhlIGdlbmVyYXRlZAorb3Bjb2RlIGltYWdlIGludG8gdGhlIGtlcm5lbCBsb2cgdmlhOgorCisgIGVjaG8gMiA+IC9wcm9jL3N5cy9uZXQvY29yZS9icGZfaml0X2VuYWJsZQorCitFeGFtcGxlIG91dHB1dCBmcm9tIGRtZXNnOgorCitbIDMzODkuOTM1ODQyXSBmbGVuPTYgcHJvZ2xlbj03MCBwYXNzPTMgaW1hZ2U9ZmZmZmZmZmZhMDA2OWM4ZgorWyAzMzg5LjkzNTg0N10gSklUIGNvZGU6IDAwMDAwMDAwOiA1NSA0OCA4OSBlNSA0OCA4MyBlYyA2MCA0OCA4OSA1ZCBmOCA0NCA4YiA0ZiA2OAorWyAzMzg5LjkzNTg0OV0gSklUIGNvZGU6IDAwMDAwMDEwOiA0NCAyYiA0ZiA2YyA0YyA4YiA4NyBkOCAwMCAwMCAwMCBiZSAwYyAwMCAwMCAwMAorWyAzMzg5LjkzNTg1MF0gSklUIGNvZGU6IDAwMDAwMDIwOiBlOCAxZCA5NCBmZiBlMCAzZCAwMCAwOCAwMCAwMCA3NSAxNiBiZSAxNyAwMCAwMAorWyAzMzg5LjkzNTg1MV0gSklUIGNvZGU6IDAwMDAwMDMwOiAwMCBlOCAyOCA5NCBmZiBlMCA4MyBmOCAwMSA3NSAwNyBiOCBmZiBmZiAwMCAwMAorWyAzMzg5LjkzNTg1Ml0gSklUIGNvZGU6IDAwMDAwMDQwOiBlYiAwMiAzMSBjMCBjOSBjMworCitJbiB0aGUga2VybmVsIHNvdXJjZSB0cmVlIHVuZGVyIHRvb2xzL25ldC8sIHRoZXJlJ3MgYnBmX2ppdF9kaXNhc20gZm9yCitnZW5lcmF0aW5nIGRpc2Fzc2VtYmx5IG91dCBvZiB0aGUga2VybmVsIGxvZydzIGhleGR1bXA6CisKKyMgLi9icGZfaml0X2Rpc2FzbQorNzAgYnl0ZXMgZW1pdHRlZCBmcm9tIEpJVCBjb21waWxlciAocGFzczozLCBmbGVuOjYpCitmZmZmZmZmZmEwMDY5YzhmICsgPHg+OgorICAgMDoJcHVzaCAgICVyYnAKKyAgIDE6CW1vdiAgICAlcnNwLCVyYnAKKyAgIDQ6CXN1YiAgICAkMHg2MCwlcnNwCisgICA4Ogltb3YgICAgJXJieCwtMHg4KCVyYnApCisgICBjOgltb3YgICAgMHg2OCglcmRpKSwlcjlkCisgIDEwOglzdWIgICAgMHg2YyglcmRpKSwlcjlkCisgIDE0Ogltb3YgICAgMHhkOCglcmRpKSwlcjgKKyAgMWI6CW1vdiAgICAkMHhjLCVlc2kKKyAgMjA6CWNhbGxxICAweGZmZmZmZmZmZTBmZjk0NDIKKyAgMjU6CWNtcCAgICAkMHg4MDAsJWVheAorICAyYToJam5lICAgIDB4MDAwMDAwMDAwMDAwMDA0MgorICAyYzoJbW92ICAgICQweDE3LCVlc2kKKyAgMzE6CWNhbGxxICAweGZmZmZmZmZmZTBmZjk0NWUKKyAgMzY6CWNtcCAgICAkMHgxLCVlYXgKKyAgMzk6CWpuZSAgICAweDAwMDAwMDAwMDAwMDAwNDIKKyAgM2I6CW1vdiAgICAkMHhmZmZmLCVlYXgKKyAgNDA6CWptcCAgICAweDAwMDAwMDAwMDAwMDAwNDQKKyAgNDI6CXhvciAgICAlZWF4LCVlYXgKKyAgNDQ6CWxlYXZlcQorICA0NToJcmV0cQorCitJc3N1aW5nIG9wdGlvbiBgLW9gIHdpbGwgImFubm90YXRlIiBvcGNvZGVzIHRvIHJlc3VsdGluZyBhc3NlbWJsZXIKK2luc3RydWN0aW9ucywgd2hpY2ggY2FuIGJlIHZlcnkgdXNlZnVsIGZvciBKSVQgZGV2ZWxvcGVyczoKKworIyAuL2JwZl9qaXRfZGlzYXNtIC1vCis3MCBieXRlcyBlbWl0dGVkIGZyb20gSklUIGNvbXBpbGVyIChwYXNzOjMsIGZsZW46NikKK2ZmZmZmZmZmYTAwNjljOGYgKyA8eD46CisgICAwOglwdXNoICAgJXJicAorCTU1CisgICAxOgltb3YgICAgJXJzcCwlcmJwCisJNDggODkgZTUKKyAgIDQ6CXN1YiAgICAkMHg2MCwlcnNwCisJNDggODMgZWMgNjAKKyAgIDg6CW1vdiAgICAlcmJ4LC0weDgoJXJicCkKKwk0OCA4OSA1ZCBmOAorICAgYzoJbW92ICAgIDB4NjgoJXJkaSksJXI5ZAorCTQ0IDhiIDRmIDY4CisgIDEwOglzdWIgICAgMHg2YyglcmRpKSwlcjlkCisJNDQgMmIgNGYgNmMKKyAgMTQ6CW1vdiAgICAweGQ4KCVyZGkpLCVyOAorCTRjIDhiIDg3IGQ4IDAwIDAwIDAwCisgIDFiOgltb3YgICAgJDB4YywlZXNpCisJYmUgMGMgMDAgMDAgMDAKKyAgMjA6CWNhbGxxICAweGZmZmZmZmZmZTBmZjk0NDIKKwllOCAxZCA5NCBmZiBlMAorICAyNToJY21wICAgICQweDgwMCwlZWF4CisJM2QgMDAgMDggMDAgMDAKKyAgMmE6CWpuZSAgICAweDAwMDAwMDAwMDAwMDAwNDIKKwk3NSAxNgorICAyYzoJbW92ICAgICQweDE3LCVlc2kKKwliZSAxNyAwMCAwMCAwMAorICAzMToJY2FsbHEgIDB4ZmZmZmZmZmZlMGZmOTQ1ZQorCWU4IDI4IDk0IGZmIGUwCisgIDM2OgljbXAgICAgJDB4MSwlZWF4CisJODMgZjggMDEKKyAgMzk6CWpuZSAgICAweDAwMDAwMDAwMDAwMDAwNDIKKwk3NSAwNworICAzYjoJbW92ICAgICQweGZmZmYsJWVheAorCWI4IGZmIGZmIDAwIDAwCisgIDQwOglqbXAgICAgMHgwMDAwMDAwMDAwMDAwMDQ0CisJZWIgMDIKKyAgNDI6CXhvciAgICAlZWF4LCVlYXgKKwkzMSBjMAorICA0NDoJbGVhdmVxCisJYzkKKyAgNDU6CXJldHEKKwljMworCitGb3IgQlBGIEpJVCBkZXZlbG9wZXJzLCBicGZfaml0X2Rpc2FzbSwgYnBmX2FzbSBhbmQgYnBmX2RiZyBwcm92aWRlcyBhIHVzZWZ1bAordG9vbGNoYWluIGZvciBkZXZlbG9waW5nIGFuZCB0ZXN0aW5nIHRoZSBrZXJuZWwncyBKSVQgY29tcGlsZXIuCisKK0JQRiBrZXJuZWwgaW50ZXJuYWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorSW50ZXJuYWxseSwgZm9yIHRoZSBrZXJuZWwgaW50ZXJwcmV0ZXIsIGEgZGlmZmVyZW50IGluc3RydWN0aW9uIHNldAorZm9ybWF0IHdpdGggc2ltaWxhciB1bmRlcmx5aW5nIHByaW5jaXBsZXMgZnJvbSBCUEYgZGVzY3JpYmVkIGluIHByZXZpb3VzCitwYXJhZ3JhcGhzIGlzIGJlaW5nIHVzZWQuIEhvd2V2ZXIsIHRoZSBpbnN0cnVjdGlvbiBzZXQgZm9ybWF0IGlzIG1vZGVsbGVkCitjbG9zZXIgdG8gdGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlIHRvIG1pbWljIG5hdGl2ZSBpbnN0cnVjdGlvbiBzZXRzLCBzbwordGhhdCBhIGJldHRlciBwZXJmb3JtYW5jZSBjYW4gYmUgYWNoaWV2ZWQgKG1vcmUgZGV0YWlscyBsYXRlcikuIFRoaXMgbmV3CitJU0EgaXMgY2FsbGVkICdlQlBGJyBvciAnaW50ZXJuYWwgQlBGJyBpbnRlcmNoYW5nZWFibHkuIChOb3RlOiBlQlBGIHdoaWNoCitvcmlnaW5hdGVzIGZyb20gW2VdeHRlbmRlZCBCUEYgaXMgbm90IHRoZSBzYW1lIGFzIEJQRiBleHRlbnNpb25zISBXaGlsZQorZUJQRiBpcyBhbiBJU0EsIEJQRiBleHRlbnNpb25zIGRhdGUgYmFjayB0byBjbGFzc2ljIEJQRidzICdvdmVybG9hZGluZycKK29mIEJQRl9MRCB8IEJQRl97QixILFd9IHwgQlBGX0FCUyBpbnN0cnVjdGlvbi4pCisKK0l0IGlzIGRlc2lnbmVkIHRvIGJlIEpJVGVkIHdpdGggb25lIHRvIG9uZSBtYXBwaW5nLCB3aGljaCBjYW4gYWxzbyBvcGVuIHVwCit0aGUgcG9zc2liaWxpdHkgZm9yIEdDQy9MTFZNIGNvbXBpbGVycyB0byBnZW5lcmF0ZSBvcHRpbWl6ZWQgZUJQRiBjb2RlIHRocm91Z2gKK2FuIGVCUEYgYmFja2VuZCB0aGF0IHBlcmZvcm1zIGFsbW9zdCBhcyBmYXN0IGFzIG5hdGl2ZWx5IGNvbXBpbGVkIGNvZGUuCisKK1RoZSBuZXcgaW5zdHJ1Y3Rpb24gc2V0IHdhcyBvcmlnaW5hbGx5IGRlc2lnbmVkIHdpdGggdGhlIHBvc3NpYmxlIGdvYWwgaW4KK21pbmQgdG8gd3JpdGUgcHJvZ3JhbXMgaW4gInJlc3RyaWN0ZWQgQyIgYW5kIGNvbXBpbGUgaW50byBlQlBGIHdpdGggYSBvcHRpb25hbAorR0NDL0xMVk0gYmFja2VuZCwgc28gdGhhdCBpdCBjYW4ganVzdC1pbi10aW1lIG1hcCB0byBtb2Rlcm4gNjQtYml0IENQVXMgd2l0aAorbWluaW1hbCBwZXJmb3JtYW5jZSBvdmVyaGVhZCBvdmVyIHR3byBzdGVwcywgdGhhdCBpcywgQyAtPiBlQlBGIC0+IG5hdGl2ZSBjb2RlLgorCitDdXJyZW50bHksIHRoZSBuZXcgZm9ybWF0IGlzIGJlaW5nIHVzZWQgZm9yIHJ1bm5pbmcgdXNlciBCUEYgcHJvZ3JhbXMsIHdoaWNoCitpbmNsdWRlcyBzZWNjb21wIEJQRiwgY2xhc3NpYyBzb2NrZXQgZmlsdGVycywgY2xzX2JwZiB0cmFmZmljIGNsYXNzaWZpZXIsCit0ZWFtIGRyaXZlcidzIGNsYXNzaWZpZXIgZm9yIGl0cyBsb2FkLWJhbGFuY2luZyBtb2RlLCBuZXRmaWx0ZXIncyB4dF9icGYKK2V4dGVuc2lvbiwgUFRQIGRpc3NlY3Rvci9jbGFzc2lmaWVyLCBhbmQgbXVjaCBtb3JlLiBUaGV5IGFyZSBhbGwgaW50ZXJuYWxseQorY29udmVydGVkIGJ5IHRoZSBrZXJuZWwgaW50byB0aGUgbmV3IGluc3RydWN0aW9uIHNldCByZXByZXNlbnRhdGlvbiBhbmQgcnVuCitpbiB0aGUgZUJQRiBpbnRlcnByZXRlci4gRm9yIGluLWtlcm5lbCBoYW5kbGVycywgdGhpcyBhbGwgd29ya3MgdHJhbnNwYXJlbnRseQorYnkgdXNpbmcgYnBmX3Byb2dfY3JlYXRlKCkgZm9yIHNldHRpbmcgdXAgdGhlIGZpbHRlciwgcmVzcC4KK2JwZl9wcm9nX2Rlc3Ryb3koKSBmb3IgZGVzdHJveWluZyBpdC4gVGhlIG1hY3JvCitCUEZfUFJPR19SVU4oZmlsdGVyLCBjdHgpIHRyYW5zcGFyZW50bHkgaW52b2tlcyBlQlBGIGludGVycHJldGVyIG9yIEpJVGVkCitjb2RlIHRvIHJ1biB0aGUgZmlsdGVyLiAnZmlsdGVyJyBpcyBhIHBvaW50ZXIgdG8gc3RydWN0IGJwZl9wcm9nIHRoYXQgd2UKK2dvdCBmcm9tIGJwZl9wcm9nX2NyZWF0ZSgpLCBhbmQgJ2N0eCcgdGhlIGdpdmVuIGNvbnRleHQgKGUuZy4KK3NrYiBwb2ludGVyKS4gQWxsIGNvbnN0cmFpbnRzIGFuZCByZXN0cmljdGlvbnMgZnJvbSBicGZfY2hlY2tfY2xhc3NpYygpIGFwcGx5CitiZWZvcmUgYSBjb252ZXJzaW9uIHRvIHRoZSBuZXcgbGF5b3V0IGlzIGJlaW5nIGRvbmUgYmVoaW5kIHRoZSBzY2VuZXMhCisKK0N1cnJlbnRseSwgdGhlIGNsYXNzaWMgQlBGIGZvcm1hdCBpcyBiZWluZyB1c2VkIGZvciBKSVRpbmcgb24gbW9zdCBvZiB0aGUKK2FyY2hpdGVjdHVyZXMuIHg4Ni02NCwgYWFyY2g2NCBhbmQgczM5MHggcGVyZm9ybSBKSVQgY29tcGlsYXRpb24gZnJvbSBlQlBGCitpbnN0cnVjdGlvbiBzZXQsIGhvd2V2ZXIsIGZ1dHVyZSB3b3JrIHdpbGwgbWlncmF0ZSBvdGhlciBKSVQgY29tcGlsZXJzIGFzIHdlbGwsCitzbyB0aGF0IHRoZXkgd2lsbCBwcm9maXQgZnJvbSB0aGUgdmVyeSBzYW1lIGJlbmVmaXRzLgorCitTb21lIGNvcmUgY2hhbmdlcyBvZiB0aGUgbmV3IGludGVybmFsIGZvcm1hdDoKKworLSBOdW1iZXIgb2YgcmVnaXN0ZXJzIGluY3JlYXNlIGZyb20gMiB0byAxMDoKKworICBUaGUgb2xkIGZvcm1hdCBoYWQgdHdvIHJlZ2lzdGVycyBBIGFuZCBYLCBhbmQgYSBoaWRkZW4gZnJhbWUgcG9pbnRlci4gVGhlCisgIG5ldyBsYXlvdXQgZXh0ZW5kcyB0aGlzIHRvIGJlIDEwIGludGVybmFsIHJlZ2lzdGVycyBhbmQgYSByZWFkLW9ubHkgZnJhbWUKKyAgcG9pbnRlci4gU2luY2UgNjQtYml0IENQVXMgYXJlIHBhc3NpbmcgYXJndW1lbnRzIHRvIGZ1bmN0aW9ucyB2aWEgcmVnaXN0ZXJzCisgIHRoZSBudW1iZXIgb2YgYXJncyBmcm9tIGVCUEYgcHJvZ3JhbSB0byBpbi1rZXJuZWwgZnVuY3Rpb24gaXMgcmVzdHJpY3RlZAorICB0byA1IGFuZCBvbmUgcmVnaXN0ZXIgaXMgdXNlZCB0byBhY2NlcHQgcmV0dXJuIHZhbHVlIGZyb20gYW4gaW4ta2VybmVsCisgIGZ1bmN0aW9uLiBOYXRpdmVseSwgeDg2XzY0IHBhc3NlcyBmaXJzdCA2IGFyZ3VtZW50cyBpbiByZWdpc3RlcnMsIGFhcmNoNjQvCisgIHNwYXJjdjkvbWlwczY0IGhhdmUgNyAtIDggcmVnaXN0ZXJzIGZvciBhcmd1bWVudHM7IHg4Nl82NCBoYXMgNiBjYWxsZWUgc2F2ZWQKKyAgcmVnaXN0ZXJzLCBhbmQgYWFyY2g2NC9zcGFyY3Y5L21pcHM2NCBoYXZlIDExIG9yIG1vcmUgY2FsbGVlIHNhdmVkIHJlZ2lzdGVycy4KKworICBUaGVyZWZvcmUsIGVCUEYgY2FsbGluZyBjb252ZW50aW9uIGlzIGRlZmluZWQgYXM6CisKKyAgICAqIFIwCS0gcmV0dXJuIHZhbHVlIGZyb20gaW4ta2VybmVsIGZ1bmN0aW9uLCBhbmQgZXhpdCB2YWx1ZSBmb3IgZUJQRiBwcm9ncmFtCisgICAgKiBSMSAtIFI1CS0gYXJndW1lbnRzIGZyb20gZUJQRiBwcm9ncmFtIHRvIGluLWtlcm5lbCBmdW5jdGlvbgorICAgICogUjYgLSBSOQktIGNhbGxlZSBzYXZlZCByZWdpc3RlcnMgdGhhdCBpbi1rZXJuZWwgZnVuY3Rpb24gd2lsbCBwcmVzZXJ2ZQorICAgICogUjEwCS0gcmVhZC1vbmx5IGZyYW1lIHBvaW50ZXIgdG8gYWNjZXNzIHN0YWNrCisKKyAgVGh1cywgYWxsIGVCUEYgcmVnaXN0ZXJzIG1hcCBvbmUgdG8gb25lIHRvIEhXIHJlZ2lzdGVycyBvbiB4ODZfNjQsIGFhcmNoNjQsCisgIGV0YywgYW5kIGVCUEYgY2FsbGluZyBjb252ZW50aW9uIG1hcHMgZGlyZWN0bHkgdG8gQUJJcyB1c2VkIGJ5IHRoZSBrZXJuZWwgb24KKyAgNjQtYml0IGFyY2hpdGVjdHVyZXMuCisKKyAgT24gMzItYml0IGFyY2hpdGVjdHVyZXMgSklUIG1heSBtYXAgcHJvZ3JhbXMgdGhhdCB1c2Ugb25seSAzMi1iaXQgYXJpdGhtZXRpYworICBhbmQgbWF5IGxldCBtb3JlIGNvbXBsZXggcHJvZ3JhbXMgdG8gYmUgaW50ZXJwcmV0ZWQuCisKKyAgUjAgLSBSNSBhcmUgc2NyYXRjaCByZWdpc3RlcnMgYW5kIGVCUEYgcHJvZ3JhbSBuZWVkcyBzcGlsbC9maWxsIHRoZW0gaWYKKyAgbmVjZXNzYXJ5IGFjcm9zcyBjYWxscy4gTm90ZSB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIGVCUEYgcHJvZ3JhbSAoPT0gb25lCisgIGVCUEYgbWFpbiByb3V0aW5lKSBhbmQgaXQgY2Fubm90IGNhbGwgb3RoZXIgZUJQRiBmdW5jdGlvbnMsIGl0IGNhbiBvbmx5CisgIGNhbGwgcHJlZGVmaW5lZCBpbi1rZXJuZWwgZnVuY3Rpb25zLCB0aG91Z2guCisKKy0gUmVnaXN0ZXIgd2lkdGggaW5jcmVhc2VzIGZyb20gMzItYml0IHRvIDY0LWJpdDoKKworICBTdGlsbCwgdGhlIHNlbWFudGljcyBvZiB0aGUgb3JpZ2luYWwgMzItYml0IEFMVSBvcGVyYXRpb25zIGFyZSBwcmVzZXJ2ZWQKKyAgdmlhIDMyLWJpdCBzdWJyZWdpc3RlcnMuIEFsbCBlQlBGIHJlZ2lzdGVycyBhcmUgNjQtYml0IHdpdGggMzItYml0IGxvd2VyCisgIHN1YnJlZ2lzdGVycyB0aGF0IHplcm8tZXh0ZW5kIGludG8gNjQtYml0IGlmIHRoZXkgYXJlIGJlaW5nIHdyaXR0ZW4gdG8uCisgIFRoYXQgYmVoYXZpb3IgbWFwcyBkaXJlY3RseSB0byB4ODZfNjQgYW5kIGFybTY0IHN1YnJlZ2lzdGVyIGRlZmluaXRpb24sIGJ1dAorICBtYWtlcyBvdGhlciBKSVRzIG1vcmUgZGlmZmljdWx0LgorCisgIDMyLWJpdCBhcmNoaXRlY3R1cmVzIHJ1biA2NC1iaXQgaW50ZXJuYWwgQlBGIHByb2dyYW1zIHZpYSBpbnRlcnByZXRlci4KKyAgVGhlaXIgSklUcyBtYXkgY29udmVydCBCUEYgcHJvZ3JhbXMgdGhhdCBvbmx5IHVzZSAzMi1iaXQgc3VicmVnaXN0ZXJzIGludG8KKyAgbmF0aXZlIGluc3RydWN0aW9uIHNldCBhbmQgbGV0IHRoZSByZXN0IGJlaW5nIGludGVycHJldGVkLgorCisgIE9wZXJhdGlvbiBpcyA2NC1iaXQsIGJlY2F1c2Ugb24gNjQtYml0IGFyY2hpdGVjdHVyZXMsIHBvaW50ZXJzIGFyZSBhbHNvCisgIDY0LWJpdCB3aWRlLCBhbmQgd2Ugd2FudCB0byBwYXNzIDY0LWJpdCB2YWx1ZXMgaW4vb3V0IG9mIGtlcm5lbCBmdW5jdGlvbnMsCisgIHNvIDMyLWJpdCBlQlBGIHJlZ2lzdGVycyB3b3VsZCBvdGhlcndpc2UgcmVxdWlyZSB0byBkZWZpbmUgcmVnaXN0ZXItcGFpcgorICBBQkksIHRodXMsIHRoZXJlIHdvbid0IGJlIGFibGUgdG8gdXNlIGEgZGlyZWN0IGVCUEYgcmVnaXN0ZXIgdG8gSFcgcmVnaXN0ZXIKKyAgbWFwcGluZyBhbmQgSklUIHdvdWxkIG5lZWQgdG8gZG8gY29tYmluZS9zcGxpdC9tb3ZlIG9wZXJhdGlvbnMgZm9yIGV2ZXJ5CisgIHJlZ2lzdGVyIGluIGFuZCBvdXQgb2YgdGhlIGZ1bmN0aW9uLCB3aGljaCBpcyBjb21wbGV4LCBidWcgcHJvbmUgYW5kIHNsb3cuCisgIEFub3RoZXIgcmVhc29uIGlzIHRoZSB1c2Ugb2YgYXRvbWljIDY0LWJpdCBjb3VudGVycy4KKworLSBDb25kaXRpb25hbCBqdC9qZiB0YXJnZXRzIHJlcGxhY2VkIHdpdGgganQvZmFsbC10aHJvdWdoOgorCisgIFdoaWxlIHRoZSBvcmlnaW5hbCBkZXNpZ24gaGFzIGNvbnN0cnVjdHMgc3VjaCBhcyAiaWYgKGNvbmQpIGp1bXBfdHJ1ZTsKKyAgZWxzZSBqdW1wX2ZhbHNlOyIsIHRoZXkgYXJlIGJlaW5nIHJlcGxhY2VkIGludG8gYWx0ZXJuYXRpdmUgY29uc3RydWN0cyBsaWtlCisgICJpZiAoY29uZCkganVtcF90cnVlOyAvKiBlbHNlIGZhbGwtdGhyb3VnaCAqLyIuCisKKy0gSW50cm9kdWNlcyBicGZfY2FsbCBpbnNuIGFuZCByZWdpc3RlciBwYXNzaW5nIGNvbnZlbnRpb24gZm9yIHplcm8gb3ZlcmhlYWQKKyAgY2FsbHMgZnJvbS90byBvdGhlciBrZXJuZWwgZnVuY3Rpb25zOgorCisgIEJlZm9yZSBhbiBpbi1rZXJuZWwgZnVuY3Rpb24gY2FsbCwgdGhlIGludGVybmFsIEJQRiBwcm9ncmFtIG5lZWRzIHRvCisgIHBsYWNlIGZ1bmN0aW9uIGFyZ3VtZW50cyBpbnRvIFIxIHRvIFI1IHJlZ2lzdGVycyB0byBzYXRpc2Z5IGNhbGxpbmcKKyAgY29udmVudGlvbiwgdGhlbiB0aGUgaW50ZXJwcmV0ZXIgd2lsbCB0YWtlIHRoZW0gZnJvbSByZWdpc3RlcnMgYW5kIHBhc3MKKyAgdG8gaW4ta2VybmVsIGZ1bmN0aW9uLiBJZiBSMSAtIFI1IHJlZ2lzdGVycyBhcmUgbWFwcGVkIHRvIENQVSByZWdpc3RlcnMKKyAgdGhhdCBhcmUgdXNlZCBmb3IgYXJndW1lbnQgcGFzc2luZyBvbiBnaXZlbiBhcmNoaXRlY3R1cmUsIHRoZSBKSVQgY29tcGlsZXIKKyAgZG9lc24ndCBuZWVkIHRvIGVtaXQgZXh0cmEgbW92ZXMuIEZ1bmN0aW9uIGFyZ3VtZW50cyB3aWxsIGJlIGluIHRoZSBjb3JyZWN0CisgIHJlZ2lzdGVycyBhbmQgQlBGX0NBTEwgaW5zdHJ1Y3Rpb24gd2lsbCBiZSBKSVRlZCBhcyBzaW5nbGUgJ2NhbGwnIEhXCisgIGluc3RydWN0aW9uLiBUaGlzIGNhbGxpbmcgY29udmVudGlvbiB3YXMgcGlja2VkIHRvIGNvdmVyIGNvbW1vbiBjYWxsCisgIHNpdHVhdGlvbnMgd2l0aG91dCBwZXJmb3JtYW5jZSBwZW5hbHR5LgorCisgIEFmdGVyIGFuIGluLWtlcm5lbCBmdW5jdGlvbiBjYWxsLCBSMSAtIFI1IGFyZSByZXNldCB0byB1bnJlYWRhYmxlIGFuZCBSMCBoYXMKKyAgYSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uLiBTaW5jZSBSNiAtIFI5IGFyZSBjYWxsZWUgc2F2ZWQsIHRoZWlyIHN0YXRlCisgIGlzIHByZXNlcnZlZCBhY3Jvc3MgdGhlIGNhbGwuCisKKyAgRm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRocmVlIEMgZnVuY3Rpb25zOgorCisgIHU2NCBmMSgpIHsgcmV0dXJuICgqX2YyKSgxKTsgfQorICB1NjQgZjIodTY0IGEpIHsgcmV0dXJuIGYzKGEgKyAxLCBhKTsgfQorICB1NjQgZjModTY0IGEsIHU2NCBiKSB7IHJldHVybiBhIC0gYjsgfQorCisgIEdDQyBjYW4gY29tcGlsZSBmMSwgZjMgaW50byB4ODZfNjQ6CisKKyAgZjE6CisgICAgbW92bCAkMSwgJWVkaQorICAgIG1vdnEgX2YyKCVyaXApLCAlcmF4CisgICAgam1wICAqJXJheAorICBmMzoKKyAgICBtb3ZxICVyZGksICVyYXgKKyAgICBzdWJxICVyc2ksICVyYXgKKyAgICByZXQKKworICBGdW5jdGlvbiBmMiBpbiBlQlBGIG1heSBsb29rIGxpa2U6CisKKyAgZjI6CisgICAgYnBmX21vdiBSMiwgUjEKKyAgICBicGZfYWRkIFIxLCAxCisgICAgYnBmX2NhbGwgZjMKKyAgICBicGZfZXhpdAorCisgIElmIGYyIGlzIEpJVGVkIGFuZCB0aGUgcG9pbnRlciBzdG9yZWQgdG8gJ19mMicuIFRoZSBjYWxscyBmMSAtPiBmMiAtPiBmMyBhbmQKKyAgcmV0dXJucyB3aWxsIGJlIHNlYW1sZXNzLiBXaXRob3V0IEpJVCwgX19icGZfcHJvZ19ydW4oKSBpbnRlcnByZXRlciBuZWVkcyB0bworICBiZSB1c2VkIHRvIGNhbGwgaW50byBmMi4KKworICBGb3IgcHJhY3RpY2FsIHJlYXNvbnMgYWxsIGVCUEYgcHJvZ3JhbXMgaGF2ZSBvbmx5IG9uZSBhcmd1bWVudCAnY3R4JyB3aGljaCBpcworICBhbHJlYWR5IHBsYWNlZCBpbnRvIFIxIChlLmcuIG9uIF9fYnBmX3Byb2dfcnVuKCkgc3RhcnR1cCkgYW5kIHRoZSBwcm9ncmFtcworICBjYW4gY2FsbCBrZXJuZWwgZnVuY3Rpb25zIHdpdGggdXAgdG8gNSBhcmd1bWVudHMuIENhbGxzIHdpdGggNiBvciBtb3JlIGFyZ3VtZW50cworICBhcmUgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQsIGJ1dCB0aGVzZSByZXN0cmljdGlvbnMgY2FuIGJlIGxpZnRlZCBpZiBuZWNlc3NhcnkKKyAgaW4gdGhlIGZ1dHVyZS4KKworICBPbiA2NC1iaXQgYXJjaGl0ZWN0dXJlcyBhbGwgcmVnaXN0ZXIgbWFwIHRvIEhXIHJlZ2lzdGVycyBvbmUgdG8gb25lLiBGb3IKKyAgZXhhbXBsZSwgeDg2XzY0IEpJVCBjb21waWxlciBjYW4gbWFwIHRoZW0gYXMgLi4uCisKKyAgICBSMCAtIHJheAorICAgIFIxIC0gcmRpCisgICAgUjIgLSByc2kKKyAgICBSMyAtIHJkeAorICAgIFI0IC0gcmN4CisgICAgUjUgLSByOAorICAgIFI2IC0gcmJ4CisgICAgUjcgLSByMTMKKyAgICBSOCAtIHIxNAorICAgIFI5IC0gcjE1CisgICAgUjEwIC0gcmJwCisKKyAgLi4uIHNpbmNlIHg4Nl82NCBBQkkgbWFuZGF0ZXMgcmRpLCByc2ksIHJkeCwgcmN4LCByOCwgcjkgZm9yIGFyZ3VtZW50IHBhc3NpbmcKKyAgYW5kIHJieCwgcjEyIC0gcjE1IGFyZSBjYWxsZWUgc2F2ZWQuCisKKyAgVGhlbiB0aGUgZm9sbG93aW5nIGludGVybmFsIEJQRiBwc2V1ZG8tcHJvZ3JhbToKKworICAgIGJwZl9tb3YgUjYsIFIxIC8qIHNhdmUgY3R4ICovCisgICAgYnBmX21vdiBSMiwgMgorICAgIGJwZl9tb3YgUjMsIDMKKyAgICBicGZfbW92IFI0LCA0CisgICAgYnBmX21vdiBSNSwgNQorICAgIGJwZl9jYWxsIGZvbworICAgIGJwZl9tb3YgUjcsIFIwIC8qIHNhdmUgZm9vKCkgcmV0dXJuIHZhbHVlICovCisgICAgYnBmX21vdiBSMSwgUjYgLyogcmVzdG9yZSBjdHggZm9yIG5leHQgY2FsbCAqLworICAgIGJwZl9tb3YgUjIsIDYKKyAgICBicGZfbW92IFIzLCA3CisgICAgYnBmX21vdiBSNCwgOAorICAgIGJwZl9tb3YgUjUsIDkKKyAgICBicGZfY2FsbCBiYXIKKyAgICBicGZfYWRkIFIwLCBSNworICAgIGJwZl9leGl0CisKKyAgQWZ0ZXIgSklUIHRvIHg4Nl82NCBtYXkgbG9vayBsaWtlOgorCisgICAgcHVzaCAlcmJwCisgICAgbW92ICVyc3AsJXJicAorICAgIHN1YiAkMHgyMjgsJXJzcAorICAgIG1vdiAlcmJ4LC0weDIyOCglcmJwKQorICAgIG1vdiAlcjEzLC0weDIyMCglcmJwKQorICAgIG1vdiAlcmRpLCVyYngKKyAgICBtb3YgJDB4MiwlZXNpCisgICAgbW92ICQweDMsJWVkeAorICAgIG1vdiAkMHg0LCVlY3gKKyAgICBtb3YgJDB4NSwlcjhkCisgICAgY2FsbHEgZm9vCisgICAgbW92ICVyYXgsJXIxMworICAgIG1vdiAlcmJ4LCVyZGkKKyAgICBtb3YgJDB4MiwlZXNpCisgICAgbW92ICQweDMsJWVkeAorICAgIG1vdiAkMHg0LCVlY3gKKyAgICBtb3YgJDB4NSwlcjhkCisgICAgY2FsbHEgYmFyCisgICAgYWRkICVyMTMsJXJheAorICAgIG1vdiAtMHgyMjgoJXJicCksJXJieAorICAgIG1vdiAtMHgyMjAoJXJicCksJXIxMworICAgIGxlYXZlcQorICAgIHJldHEKKworICBXaGljaCBpcyBpbiB0aGlzIGV4YW1wbGUgZXF1aXZhbGVudCBpbiBDIHRvOgorCisgICAgdTY0IGJwZl9maWx0ZXIodTY0IGN0eCkKKyAgICB7CisgICAgICAgIHJldHVybiBmb28oY3R4LCAyLCAzLCA0LCA1KSArIGJhcihjdHgsIDYsIDcsIDgsIDkpOworICAgIH0KKworICBJbi1rZXJuZWwgZnVuY3Rpb25zIGZvbygpIGFuZCBiYXIoKSB3aXRoIHByb3RvdHlwZTogdTY0ICgqKSh1NjQgYXJnMSwgdTY0CisgIGFyZzIsIHU2NCBhcmczLCB1NjQgYXJnNCwgdTY0IGFyZzUpOyB3aWxsIHJlY2VpdmUgYXJndW1lbnRzIGluIHByb3BlcgorICByZWdpc3RlcnMgYW5kIHBsYWNlIHRoZWlyIHJldHVybiB2YWx1ZSBpbnRvICclcmF4JyB3aGljaCBpcyBSMCBpbiBlQlBGLgorICBQcm9sb2d1ZSBhbmQgZXBpbG9ndWUgYXJlIGVtaXR0ZWQgYnkgSklUIGFuZCBhcmUgaW1wbGljaXQgaW4gdGhlCisgIGludGVycHJldGVyLiBSMC1SNSBhcmUgc2NyYXRjaCByZWdpc3RlcnMsIHNvIGVCUEYgcHJvZ3JhbSBuZWVkcyB0byBwcmVzZXJ2ZQorICB0aGVtIGFjcm9zcyB0aGUgY2FsbHMgYXMgZGVmaW5lZCBieSBjYWxsaW5nIGNvbnZlbnRpb24uCisKKyAgRm9yIGV4YW1wbGUgdGhlIGZvbGxvd2luZyBwcm9ncmFtIGlzIGludmFsaWQ6CisKKyAgICBicGZfbW92IFIxLCAxCisgICAgYnBmX2NhbGwgZm9vCisgICAgYnBmX21vdiBSMCwgUjEKKyAgICBicGZfZXhpdAorCisgIEFmdGVyIHRoZSBjYWxsIHRoZSByZWdpc3RlcnMgUjEtUjUgY29udGFpbiBqdW5rIHZhbHVlcyBhbmQgY2Fubm90IGJlIHJlYWQuCisgIEluIHRoZSBmdXR1cmUgYW4gZUJQRiB2ZXJpZmllciBjYW4gYmUgdXNlZCB0byB2YWxpZGF0ZSBpbnRlcm5hbCBCUEYgcHJvZ3JhbXMuCisKK0Fsc28gaW4gdGhlIG5ldyBkZXNpZ24sIGVCUEYgaXMgbGltaXRlZCB0byA0MDk2IGluc25zLCB3aGljaCBtZWFucyB0aGF0IGFueQorcHJvZ3JhbSB3aWxsIHRlcm1pbmF0ZSBxdWlja2x5IGFuZCB3aWxsIG9ubHkgY2FsbCBhIGZpeGVkIG51bWJlciBvZiBrZXJuZWwKK2Z1bmN0aW9ucy4gT3JpZ2luYWwgQlBGIGFuZCB0aGUgbmV3IGZvcm1hdCBhcmUgdHdvIG9wZXJhbmQgaW5zdHJ1Y3Rpb25zLAord2hpY2ggaGVscHMgdG8gZG8gb25lLXRvLW9uZSBtYXBwaW5nIGJldHdlZW4gZUJQRiBpbnNuIGFuZCB4ODYgaW5zbiBkdXJpbmcgSklULgorCitUaGUgaW5wdXQgY29udGV4dCBwb2ludGVyIGZvciBpbnZva2luZyB0aGUgaW50ZXJwcmV0ZXIgZnVuY3Rpb24gaXMgZ2VuZXJpYywKK2l0cyBjb250ZW50IGlzIGRlZmluZWQgYnkgYSBzcGVjaWZpYyB1c2UgY2FzZS4gRm9yIHNlY2NvbXAgcmVnaXN0ZXIgUjEgcG9pbnRzCit0byBzZWNjb21wX2RhdGEsIGZvciBjb252ZXJ0ZWQgQlBGIGZpbHRlcnMgUjEgcG9pbnRzIHRvIGEgc2tiLgorCitBIHByb2dyYW0sIHRoYXQgaXMgdHJhbnNsYXRlZCBpbnRlcm5hbGx5IGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcgZWxlbWVudHM6CisKKyAgb3A6MTYsIGp0OjgsIGpmOjgsIGs6MzIgICAgPT0+ICAgIG9wOjgsIGRzdF9yZWc6NCwgc3JjX3JlZzo0LCBvZmY6MTYsIGltbTozMgorCitTbyBmYXIgODcgaW50ZXJuYWwgQlBGIGluc3RydWN0aW9ucyB3ZXJlIGltcGxlbWVudGVkLiA4LWJpdCAnb3AnIG9wY29kZSBmaWVsZAoraGFzIHJvb20gZm9yIG5ldyBpbnN0cnVjdGlvbnMuIFNvbWUgb2YgdGhlbSBtYXkgdXNlIDE2LzI0LzMyIGJ5dGUgZW5jb2RpbmcuIE5ldworaW5zdHJ1Y3Rpb25zIG11c3QgYmUgbXVsdGlwbGUgb2YgOCBieXRlcyB0byBwcmVzZXJ2ZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgorCitJbnRlcm5hbCBCUEYgaXMgYSBnZW5lcmFsIHB1cnBvc2UgUklTQyBpbnN0cnVjdGlvbiBzZXQuIE5vdCBldmVyeSByZWdpc3RlciBhbmQKK2V2ZXJ5IGluc3RydWN0aW9uIGFyZSB1c2VkIGR1cmluZyB0cmFuc2xhdGlvbiBmcm9tIG9yaWdpbmFsIEJQRiB0byBuZXcgZm9ybWF0LgorRm9yIGV4YW1wbGUsIHNvY2tldCBmaWx0ZXJzIGFyZSBub3QgdXNpbmcgJ2V4Y2x1c2l2ZSBhZGQnIGluc3RydWN0aW9uLCBidXQKK3RyYWNpbmcgZmlsdGVycyBtYXkgZG8gdG8gbWFpbnRhaW4gY291bnRlcnMgb2YgZXZlbnRzLCBmb3IgZXhhbXBsZS4gUmVnaXN0ZXIgUjkKK2lzIG5vdCB1c2VkIGJ5IHNvY2tldCBmaWx0ZXJzIGVpdGhlciwgYnV0IG1vcmUgY29tcGxleCBmaWx0ZXJzIG1heSBiZSBydW5uaW5nCitvdXQgb2YgcmVnaXN0ZXJzIGFuZCB3b3VsZCBoYXZlIHRvIHJlc29ydCB0byBzcGlsbC9maWxsIHRvIHN0YWNrLgorCitJbnRlcm5hbCBCUEYgY2FuIHVzZWQgYXMgZ2VuZXJpYyBhc3NlbWJsZXIgZm9yIGxhc3Qgc3RlcCBwZXJmb3JtYW5jZQorb3B0aW1pemF0aW9ucywgc29ja2V0IGZpbHRlcnMgYW5kIHNlY2NvbXAgYXJlIHVzaW5nIGl0IGFzIGFzc2VtYmxlci4gVHJhY2luZworZmlsdGVycyBtYXkgdXNlIGl0IGFzIGFzc2VtYmxlciB0byBnZW5lcmF0ZSBjb2RlIGZyb20ga2VybmVsLiBJbiBrZXJuZWwgdXNhZ2UKK21heSBub3QgYmUgYm91bmRlZCBieSBzZWN1cml0eSBjb25zaWRlcmF0aW9ucywgc2luY2UgZ2VuZXJhdGVkIGludGVybmFsIEJQRiBjb2RlCittYXkgYmUgb3B0aW1pemluZyBpbnRlcm5hbCBjb2RlIHBhdGggYW5kIG5vdCBiZWluZyBleHBvc2VkIHRvIHRoZSB1c2VyIHNwYWNlLgorU2FmZXR5IG9mIGludGVybmFsIEJQRiBjYW4gY29tZSBmcm9tIGEgdmVyaWZpZXIgKFRCRCkuIEluIHN1Y2ggdXNlIGNhc2VzIGFzCitkZXNjcmliZWQsIGl0IG1heSBiZSB1c2VkIGFzIHNhZmUgaW5zdHJ1Y3Rpb24gc2V0LgorCitKdXN0IGxpa2UgdGhlIG9yaWdpbmFsIEJQRiwgdGhlIG5ldyBmb3JtYXQgcnVucyB3aXRoaW4gYSBjb250cm9sbGVkIGVudmlyb25tZW50LAoraXMgZGV0ZXJtaW5pc3RpYyBhbmQgdGhlIGtlcm5lbCBjYW4gZWFzaWx5IHByb3ZlIHRoYXQuIFRoZSBzYWZldHkgb2YgdGhlIHByb2dyYW0KK2NhbiBiZSBkZXRlcm1pbmVkIGluIHR3byBzdGVwczogZmlyc3Qgc3RlcCBkb2VzIGRlcHRoLWZpcnN0LXNlYXJjaCB0byBkaXNhbGxvdworbG9vcHMgYW5kIG90aGVyIENGRyB2YWxpZGF0aW9uOyBzZWNvbmQgc3RlcCBzdGFydHMgZnJvbSB0aGUgZmlyc3QgaW5zbiBhbmQKK2Rlc2NlbmRzIGFsbCBwb3NzaWJsZSBwYXRocy4gSXQgc2ltdWxhdGVzIGV4ZWN1dGlvbiBvZiBldmVyeSBpbnNuIGFuZCBvYnNlcnZlcwordGhlIHN0YXRlIGNoYW5nZSBvZiByZWdpc3RlcnMgYW5kIHN0YWNrLgorCitlQlBGIG9wY29kZSBlbmNvZGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZUJQRiBpcyByZXVzaW5nIG1vc3Qgb2YgdGhlIG9wY29kZSBlbmNvZGluZyBmcm9tIGNsYXNzaWMgdG8gc2ltcGxpZnkgY29udmVyc2lvbgorb2YgY2xhc3NpYyBCUEYgdG8gZUJQRi4gRm9yIGFyaXRobWV0aWMgYW5kIGp1bXAgaW5zdHJ1Y3Rpb25zIHRoZSA4LWJpdCAnY29kZScKK2ZpZWxkIGlzIGRpdmlkZWQgaW50byB0aHJlZSBwYXJ0czoKKworICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCAgIDQgYml0cyAgICAgICB8ICAxIGJpdCB8ICAgMyBiaXRzICAgICAgICAgICB8CisgIHwgb3BlcmF0aW9uIGNvZGUgfCBzb3VyY2UgfCBpbnN0cnVjdGlvbiBjbGFzcyAgfAorICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgKE1TQikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMU0IpCisKK1RocmVlIExTQiBiaXRzIHN0b3JlIGluc3RydWN0aW9uIGNsYXNzIHdoaWNoIGlzIG9uZSBvZjoKKworICBDbGFzc2ljIEJQRiBjbGFzc2VzOiAgICBlQlBGIGNsYXNzZXM6CisKKyAgQlBGX0xEICAgIDB4MDAgICAgICAgICAgQlBGX0xEICAgIDB4MDAKKyAgQlBGX0xEWCAgIDB4MDEgICAgICAgICAgQlBGX0xEWCAgIDB4MDEKKyAgQlBGX1NUICAgIDB4MDIgICAgICAgICAgQlBGX1NUICAgIDB4MDIKKyAgQlBGX1NUWCAgIDB4MDMgICAgICAgICAgQlBGX1NUWCAgIDB4MDMKKyAgQlBGX0FMVSAgIDB4MDQgICAgICAgICAgQlBGX0FMVSAgIDB4MDQKKyAgQlBGX0pNUCAgIDB4MDUgICAgICAgICAgQlBGX0pNUCAgIDB4MDUKKyAgQlBGX1JFVCAgIDB4MDYgICAgICAgICAgWyBjbGFzcyA2IHVudXNlZCwgZm9yIGZ1dHVyZSBpZiBuZWVkZWQgXQorICBCUEZfTUlTQyAgMHgwNyAgICAgICAgICBCUEZfQUxVNjQgMHgwNworCitXaGVuIEJQRl9DTEFTUyhjb2RlKSA9PSBCUEZfQUxVIG9yIEJQRl9KTVAsIDR0aCBiaXQgZW5jb2RlcyBzb3VyY2Ugb3BlcmFuZCAuLi4KKworICBCUEZfSyAgICAgMHgwMAorICBCUEZfWCAgICAgMHgwOAorCisgKiBpbiBjbGFzc2ljIEJQRiwgdGhpcyBtZWFuczoKKworICBCUEZfU1JDKGNvZGUpID09IEJQRl9YIC0gdXNlIHJlZ2lzdGVyIFggYXMgc291cmNlIG9wZXJhbmQKKyAgQlBGX1NSQyhjb2RlKSA9PSBCUEZfSyAtIHVzZSAzMi1iaXQgaW1tZWRpYXRlIGFzIHNvdXJjZSBvcGVyYW5kCisKKyAqIGluIGVCUEYsIHRoaXMgbWVhbnM6CisKKyAgQlBGX1NSQyhjb2RlKSA9PSBCUEZfWCAtIHVzZSAnc3JjX3JlZycgcmVnaXN0ZXIgYXMgc291cmNlIG9wZXJhbmQKKyAgQlBGX1NSQyhjb2RlKSA9PSBCUEZfSyAtIHVzZSAzMi1iaXQgaW1tZWRpYXRlIGFzIHNvdXJjZSBvcGVyYW5kCisKKy4uLiBhbmQgZm91ciBNU0IgYml0cyBzdG9yZSBvcGVyYXRpb24gY29kZS4KKworSWYgQlBGX0NMQVNTKGNvZGUpID09IEJQRl9BTFUgb3IgQlBGX0FMVTY0IFsgaW4gZUJQRiBdLCBCUEZfT1AoY29kZSkgaXMgb25lIG9mOgorCisgIEJQRl9BREQgICAweDAwCisgIEJQRl9TVUIgICAweDEwCisgIEJQRl9NVUwgICAweDIwCisgIEJQRl9ESVYgICAweDMwCisgIEJQRl9PUiAgICAweDQwCisgIEJQRl9BTkQgICAweDUwCisgIEJQRl9MU0ggICAweDYwCisgIEJQRl9SU0ggICAweDcwCisgIEJQRl9ORUcgICAweDgwCisgIEJQRl9NT0QgICAweDkwCisgIEJQRl9YT1IgICAweGEwCisgIEJQRl9NT1YgICAweGIwICAvKiBlQlBGIG9ubHk6IG1vdiByZWcgdG8gcmVnICovCisgIEJQRl9BUlNIICAweGMwICAvKiBlQlBGIG9ubHk6IHNpZ24gZXh0ZW5kaW5nIHNoaWZ0IHJpZ2h0ICovCisgIEJQRl9FTkQgICAweGQwICAvKiBlQlBGIG9ubHk6IGVuZGlhbm5lc3MgY29udmVyc2lvbiAqLworCitJZiBCUEZfQ0xBU1MoY29kZSkgPT0gQlBGX0pNUCwgQlBGX09QKGNvZGUpIGlzIG9uZSBvZjoKKworICBCUEZfSkEgICAgMHgwMAorICBCUEZfSkVRICAgMHgxMAorICBCUEZfSkdUICAgMHgyMAorICBCUEZfSkdFICAgMHgzMAorICBCUEZfSlNFVCAgMHg0MAorICBCUEZfSk5FICAgMHg1MCAgLyogZUJQRiBvbmx5OiBqdW1wICE9ICovCisgIEJQRl9KU0dUICAweDYwICAvKiBlQlBGIG9ubHk6IHNpZ25lZCAnPicgKi8KKyAgQlBGX0pTR0UgIDB4NzAgIC8qIGVCUEYgb25seTogc2lnbmVkICc+PScgKi8KKyAgQlBGX0NBTEwgIDB4ODAgIC8qIGVCUEYgb25seTogZnVuY3Rpb24gY2FsbCAqLworICBCUEZfRVhJVCAgMHg5MCAgLyogZUJQRiBvbmx5OiBmdW5jdGlvbiByZXR1cm4gKi8KKworU28gQlBGX0FERCB8IEJQRl9YIHwgQlBGX0FMVSBtZWFucyAzMi1iaXQgYWRkaXRpb24gaW4gYm90aCBjbGFzc2ljIEJQRgorYW5kIGVCUEYuIFRoZXJlIGFyZSBvbmx5IHR3byByZWdpc3RlcnMgaW4gY2xhc3NpYyBCUEYsIHNvIGl0IG1lYW5zIEEgKz0gWC4KK0luIGVCUEYgaXQgbWVhbnMgZHN0X3JlZyA9ICh1MzIpIGRzdF9yZWcgKyAodTMyKSBzcmNfcmVnOyBzaW1pbGFybHksCitCUEZfWE9SIHwgQlBGX0sgfCBCUEZfQUxVIG1lYW5zIEEgXj0gaW1tMzIgaW4gY2xhc3NpYyBCUEYgYW5kIGFuYWxvZ291cworc3JjX3JlZyA9ICh1MzIpIHNyY19yZWcgXiAodTMyKSBpbW0zMiBpbiBlQlBGLgorCitDbGFzc2ljIEJQRiBpcyB1c2luZyBCUEZfTUlTQyBjbGFzcyB0byByZXByZXNlbnQgQSA9IFggYW5kIFggPSBBIG1vdmVzLgorZUJQRiBpcyB1c2luZyBCUEZfTU9WIHwgQlBGX1ggfCBCUEZfQUxVIGNvZGUgaW5zdGVhZC4gU2luY2UgdGhlcmUgYXJlIG5vCitCUEZfTUlTQyBvcGVyYXRpb25zIGluIGVCUEYsIHRoZSBjbGFzcyA3IGlzIHVzZWQgYXMgQlBGX0FMVTY0IHRvIG1lYW4KK2V4YWN0bHkgdGhlIHNhbWUgb3BlcmF0aW9ucyBhcyBCUEZfQUxVLCBidXQgd2l0aCA2NC1iaXQgd2lkZSBvcGVyYW5kcworaW5zdGVhZC4gU28gQlBGX0FERCB8IEJQRl9YIHwgQlBGX0FMVTY0IG1lYW5zIDY0LWJpdCBhZGRpdGlvbiwgaS5lLjoKK2RzdF9yZWcgPSBkc3RfcmVnICsgc3JjX3JlZworCitDbGFzc2ljIEJQRiB3YXN0ZXMgdGhlIHdob2xlIEJQRl9SRVQgY2xhc3MgdG8gcmVwcmVzZW50IGEgc2luZ2xlICdyZXQnCitvcGVyYXRpb24uIENsYXNzaWMgQlBGX1JFVCB8IEJQRl9LIG1lYW5zIGNvcHkgaW1tMzIgaW50byByZXR1cm4gcmVnaXN0ZXIKK2FuZCBwZXJmb3JtIGZ1bmN0aW9uIGV4aXQuIGVCUEYgaXMgbW9kZWxlZCB0byBtYXRjaCBDUFUsIHNvIEJQRl9KTVAgfCBCUEZfRVhJVAoraW4gZUJQRiBtZWFucyBmdW5jdGlvbiBleGl0IG9ubHkuIFRoZSBlQlBGIHByb2dyYW0gbmVlZHMgdG8gc3RvcmUgcmV0dXJuCit2YWx1ZSBpbnRvIHJlZ2lzdGVyIFIwIGJlZm9yZSBkb2luZyBhIEJQRl9FWElULiBDbGFzcyA2IGluIGVCUEYgaXMgY3VycmVudGx5Cit1bnVzZWQgYW5kIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlLgorCitGb3IgbG9hZCBhbmQgc3RvcmUgaW5zdHJ1Y3Rpb25zIHRoZSA4LWJpdCAnY29kZScgZmllbGQgaXMgZGl2aWRlZCBhczoKKworICArLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCAzIGJpdHMgfCAyIGJpdHMgfCAgIDMgYml0cyAgICAgICAgICB8CisgIHwgIG1vZGUgIHwgIHNpemUgIHwgaW5zdHJ1Y3Rpb24gY2xhc3MgfAorICArLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgKE1TQikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMU0IpCisKK1NpemUgbW9kaWZpZXIgaXMgb25lIG9mIC4uLgorCisgIEJQRl9XICAgMHgwMCAgICAvKiB3b3JkICovCisgIEJQRl9IICAgMHgwOCAgICAvKiBoYWxmIHdvcmQgKi8KKyAgQlBGX0IgICAweDEwICAgIC8qIGJ5dGUgKi8KKyAgQlBGX0RXICAweDE4ICAgIC8qIGVCUEYgb25seSwgZG91YmxlIHdvcmQgKi8KKworLi4uIHdoaWNoIGVuY29kZXMgc2l6ZSBvZiBsb2FkL3N0b3JlIG9wZXJhdGlvbjoKKworIEIgIC0gMSBieXRlCisgSCAgLSAyIGJ5dGUKKyBXICAtIDQgYnl0ZQorIERXIC0gOCBieXRlIChlQlBGIG9ubHkpCisKK01vZGUgbW9kaWZpZXIgaXMgb25lIG9mOgorCisgIEJQRl9JTU0gIDB4MDAgIC8qIHVzZWQgZm9yIDMyLWJpdCBtb3YgaW4gY2xhc3NpYyBCUEYgYW5kIDY0LWJpdCBpbiBlQlBGICovCisgIEJQRl9BQlMgIDB4MjAKKyAgQlBGX0lORCAgMHg0MAorICBCUEZfTUVNICAweDYwCisgIEJQRl9MRU4gIDB4ODAgIC8qIGNsYXNzaWMgQlBGIG9ubHksIHJlc2VydmVkIGluIGVCUEYgKi8KKyAgQlBGX01TSCAgMHhhMCAgLyogY2xhc3NpYyBCUEYgb25seSwgcmVzZXJ2ZWQgaW4gZUJQRiAqLworICBCUEZfWEFERCAweGMwICAvKiBlQlBGIG9ubHksIGV4Y2x1c2l2ZSBhZGQgKi8KKworZUJQRiBoYXMgdHdvIG5vbi1nZW5lcmljIGluc3RydWN0aW9uczogKEJQRl9BQlMgfCA8c2l6ZT4gfCBCUEZfTEQpIGFuZAorKEJQRl9JTkQgfCA8c2l6ZT4gfCBCUEZfTEQpIHdoaWNoIGFyZSB1c2VkIHRvIGFjY2VzcyBwYWNrZXQgZGF0YS4KKworVGhleSBoYWQgdG8gYmUgY2FycmllZCBvdmVyIGZyb20gY2xhc3NpYyB0byBoYXZlIHN0cm9uZyBwZXJmb3JtYW5jZSBvZgorc29ja2V0IGZpbHRlcnMgcnVubmluZyBpbiBlQlBGIGludGVycHJldGVyLiBUaGVzZSBpbnN0cnVjdGlvbnMgY2FuIG9ubHkKK2JlIHVzZWQgd2hlbiBpbnRlcnByZXRlciBjb250ZXh0IGlzIGEgcG9pbnRlciB0byAnc3RydWN0IHNrX2J1ZmYnIGFuZAoraGF2ZSBzZXZlbiBpbXBsaWNpdCBvcGVyYW5kcy4gUmVnaXN0ZXIgUjYgaXMgYW4gaW1wbGljaXQgaW5wdXQgdGhhdCBtdXN0Citjb250YWluIHBvaW50ZXIgdG8gc2tfYnVmZi4gUmVnaXN0ZXIgUjAgaXMgYW4gaW1wbGljaXQgb3V0cHV0IHdoaWNoIGNvbnRhaW5zCit0aGUgZGF0YSBmZXRjaGVkIGZyb20gdGhlIHBhY2tldC4gUmVnaXN0ZXJzIFIxLVI1IGFyZSBzY3JhdGNoIHJlZ2lzdGVycworYW5kIG11c3Qgbm90IGJlIHVzZWQgdG8gc3RvcmUgdGhlIGRhdGEgYWNyb3NzIEJQRl9BQlMgfCBCUEZfTEQgb3IKK0JQRl9JTkQgfCBCUEZfTEQgaW5zdHJ1Y3Rpb25zLgorCitUaGVzZSBpbnN0cnVjdGlvbnMgaGF2ZSBpbXBsaWNpdCBwcm9ncmFtIGV4aXQgY29uZGl0aW9uIGFzIHdlbGwuIFdoZW4KK2VCUEYgcHJvZ3JhbSBpcyB0cnlpbmcgdG8gYWNjZXNzIHRoZSBkYXRhIGJleW9uZCB0aGUgcGFja2V0IGJvdW5kYXJ5LAordGhlIGludGVycHJldGVyIHdpbGwgYWJvcnQgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbS4gSklUIGNvbXBpbGVycwordGhlcmVmb3JlIG11c3QgcHJlc2VydmUgdGhpcyBwcm9wZXJ0eS4gc3JjX3JlZyBhbmQgaW1tMzIgZmllbGRzIGFyZQorZXhwbGljaXQgaW5wdXRzIHRvIHRoZXNlIGluc3RydWN0aW9ucy4KKworRm9yIGV4YW1wbGU6CisKKyAgQlBGX0lORCB8IEJQRl9XIHwgQlBGX0xEIG1lYW5zOgorCisgICAgUjAgPSBudG9obCgqKHUzMiAqKSAoKChzdHJ1Y3Qgc2tfYnVmZiAqKSBSNiktPmRhdGEgKyBzcmNfcmVnICsgaW1tMzIpKQorICAgIGFuZCBSMSAtIFI1IHdlcmUgc2NyYXRjaGVkLgorCitVbmxpa2UgY2xhc3NpYyBCUEYgaW5zdHJ1Y3Rpb24gc2V0LCBlQlBGIGhhcyBnZW5lcmljIGxvYWQvc3RvcmUgb3BlcmF0aW9uczoKKworQlBGX01FTSB8IDxzaXplPiB8IEJQRl9TVFg6ICAqKHNpemUgKikgKGRzdF9yZWcgKyBvZmYpID0gc3JjX3JlZworQlBGX01FTSB8IDxzaXplPiB8IEJQRl9TVDogICAqKHNpemUgKikgKGRzdF9yZWcgKyBvZmYpID0gaW1tMzIKK0JQRl9NRU0gfCA8c2l6ZT4gfCBCUEZfTERYOiAgZHN0X3JlZyA9ICooc2l6ZSAqKSAoc3JjX3JlZyArIG9mZikKK0JQRl9YQUREIHwgQlBGX1cgIHwgQlBGX1NUWDogbG9jayB4YWRkICoodTMyICopKGRzdF9yZWcgKyBvZmYxNikgKz0gc3JjX3JlZworQlBGX1hBREQgfCBCUEZfRFcgfCBCUEZfU1RYOiBsb2NrIHhhZGQgKih1NjQgKikoZHN0X3JlZyArIG9mZjE2KSArPSBzcmNfcmVnCisKK1doZXJlIHNpemUgaXMgb25lIG9mOiBCUEZfQiBvciBCUEZfSCBvciBCUEZfVyBvciBCUEZfRFcuIE5vdGUgdGhhdCAxIGFuZAorMiBieXRlIGF0b21pYyBpbmNyZW1lbnRzIGFyZSBub3Qgc3VwcG9ydGVkLgorCitlQlBGIGhhcyBvbmUgMTYtYnl0ZSBpbnN0cnVjdGlvbjogQlBGX0xEIHwgQlBGX0RXIHwgQlBGX0lNTSB3aGljaCBjb25zaXN0cworb2YgdHdvIGNvbnNlY3V0aXZlICdzdHJ1Y3QgYnBmX2luc24nIDgtYnl0ZSBibG9ja3MgYW5kIGludGVycHJldGVkIGFzIHNpbmdsZQoraW5zdHJ1Y3Rpb24gdGhhdCBsb2FkcyA2NC1iaXQgaW1tZWRpYXRlIHZhbHVlIGludG8gYSBkc3RfcmVnLgorQ2xhc3NpYyBCUEYgaGFzIHNpbWlsYXIgaW5zdHJ1Y3Rpb246IEJQRl9MRCB8IEJQRl9XIHwgQlBGX0lNTSB3aGljaCBsb2FkcworMzItYml0IGltbWVkaWF0ZSB2YWx1ZSBpbnRvIGEgcmVnaXN0ZXIuCisKK2VCUEYgdmVyaWZpZXIKKy0tLS0tLS0tLS0tLS0KK1RoZSBzYWZldHkgb2YgdGhlIGVCUEYgcHJvZ3JhbSBpcyBkZXRlcm1pbmVkIGluIHR3byBzdGVwcy4KKworRmlyc3Qgc3RlcCBkb2VzIERBRyBjaGVjayB0byBkaXNhbGxvdyBsb29wcyBhbmQgb3RoZXIgQ0ZHIHZhbGlkYXRpb24uCitJbiBwYXJ0aWN1bGFyIGl0IHdpbGwgZGV0ZWN0IHByb2dyYW1zIHRoYXQgaGF2ZSB1bnJlYWNoYWJsZSBpbnN0cnVjdGlvbnMuCisodGhvdWdoIGNsYXNzaWMgQlBGIGNoZWNrZXIgYWxsb3dzIHRoZW0pCisKK1NlY29uZCBzdGVwIHN0YXJ0cyBmcm9tIHRoZSBmaXJzdCBpbnNuIGFuZCBkZXNjZW5kcyBhbGwgcG9zc2libGUgcGF0aHMuCitJdCBzaW11bGF0ZXMgZXhlY3V0aW9uIG9mIGV2ZXJ5IGluc24gYW5kIG9ic2VydmVzIHRoZSBzdGF0ZSBjaGFuZ2Ugb2YKK3JlZ2lzdGVycyBhbmQgc3RhY2suCisKK0F0IHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSB0aGUgcmVnaXN0ZXIgUjEgY29udGFpbnMgYSBwb2ludGVyIHRvIGNvbnRleHQKK2FuZCBoYXMgdHlwZSBQVFJfVE9fQ1RYLgorSWYgdmVyaWZpZXIgc2VlcyBhbiBpbnNuIHRoYXQgZG9lcyBSMj1SMSwgdGhlbiBSMiBoYXMgbm93IHR5cGUKK1BUUl9UT19DVFggYXMgd2VsbCBhbmQgY2FuIGJlIHVzZWQgb24gdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiBleHByZXNzaW9uLgorSWYgUjE9UFRSX1RPX0NUWCBhbmQgaW5zbiBpcyBSMj1SMStSMSwgdGhlbiBSMj1VTktOT1dOX1ZBTFVFLAorc2luY2UgYWRkaXRpb24gb2YgdHdvIHZhbGlkIHBvaW50ZXJzIG1ha2VzIGludmFsaWQgcG9pbnRlci4KKyhJbiAnc2VjdXJlJyBtb2RlIHZlcmlmaWVyIHdpbGwgcmVqZWN0IGFueSB0eXBlIG9mIHBvaW50ZXIgYXJpdGhtZXRpYyB0byBtYWtlCitzdXJlIHRoYXQga2VybmVsIGFkZHJlc3NlcyBkb24ndCBsZWFrIHRvIHVucHJpdmlsZWdlZCB1c2VycykKKworSWYgcmVnaXN0ZXIgd2FzIG5ldmVyIHdyaXR0ZW4gdG8sIGl0J3Mgbm90IHJlYWRhYmxlOgorICBicGZfbW92IFIwID0gUjIKKyAgYnBmX2V4aXQKK3dpbGwgYmUgcmVqZWN0ZWQsIHNpbmNlIFIyIGlzIHVucmVhZGFibGUgYXQgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtLgorCitBZnRlciBrZXJuZWwgZnVuY3Rpb24gY2FsbCwgUjEtUjUgYXJlIHJlc2V0IHRvIHVucmVhZGFibGUgYW5kCitSMCBoYXMgYSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24uCisKK1NpbmNlIFI2LVI5IGFyZSBjYWxsZWUgc2F2ZWQsIHRoZWlyIHN0YXRlIGlzIHByZXNlcnZlZCBhY3Jvc3MgdGhlIGNhbGwuCisgIGJwZl9tb3YgUjYgPSAxCisgIGJwZl9jYWxsIGZvbworICBicGZfbW92IFIwID0gUjYKKyAgYnBmX2V4aXQKK2lzIGEgY29ycmVjdCBwcm9ncmFtLiBJZiB0aGVyZSB3YXMgUjEgaW5zdGVhZCBvZiBSNiwgaXQgd291bGQgaGF2ZQorYmVlbiByZWplY3RlZC4KKworbG9hZC9zdG9yZSBpbnN0cnVjdGlvbnMgYXJlIGFsbG93ZWQgb25seSB3aXRoIHJlZ2lzdGVycyBvZiB2YWxpZCB0eXBlcywgd2hpY2gKK2FyZSBQVFJfVE9fQ1RYLCBQVFJfVE9fTUFQLCBGUkFNRV9QVFIuIFRoZXkgYXJlIGJvdW5kcyBhbmQgYWxpZ25tZW50IGNoZWNrZWQuCitGb3IgZXhhbXBsZToKKyBicGZfbW92IFIxID0gMQorIGJwZl9tb3YgUjIgPSAyCisgYnBmX3hhZGQgKih1MzIgKikoUjEgKyAzKSArPSBSMgorIGJwZl9leGl0Cit3aWxsIGJlIHJlamVjdGVkLCBzaW5jZSBSMSBkb2Vzbid0IGhhdmUgYSB2YWxpZCBwb2ludGVyIHR5cGUgYXQgdGhlIHRpbWUgb2YKK2V4ZWN1dGlvbiBvZiBpbnN0cnVjdGlvbiBicGZfeGFkZC4KKworQXQgdGhlIHN0YXJ0IFIxIHR5cGUgaXMgUFRSX1RPX0NUWCAoYSBwb2ludGVyIHRvIGdlbmVyaWMgJ3N0cnVjdCBicGZfY29udGV4dCcpCitBIGNhbGxiYWNrIGlzIHVzZWQgdG8gY3VzdG9taXplIHZlcmlmaWVyIHRvIHJlc3RyaWN0IGVCUEYgcHJvZ3JhbSBhY2Nlc3MgdG8gb25seQorY2VydGFpbiBmaWVsZHMgd2l0aGluIGN0eCBzdHJ1Y3R1cmUgd2l0aCBzcGVjaWZpZWQgc2l6ZSBhbmQgYWxpZ25tZW50LgorCitGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBpbnNuOgorICBicGZfbGQgUjAgPSAqKHUzMiAqKShSNiArIDgpCitpbnRlbmRzIHRvIGxvYWQgYSB3b3JkIGZyb20gYWRkcmVzcyBSNiArIDggYW5kIHN0b3JlIGl0IGludG8gUjAKK0lmIFI2PVBUUl9UT19DVFgsIHZpYSBpc192YWxpZF9hY2Nlc3MoKSBjYWxsYmFjayB0aGUgdmVyaWZpZXIgd2lsbCBrbm93Cit0aGF0IG9mZnNldCA4IG9mIHNpemUgNCBieXRlcyBjYW4gYmUgYWNjZXNzZWQgZm9yIHJlYWRpbmcsIG90aGVyd2lzZQordGhlIHZlcmlmaWVyIHdpbGwgcmVqZWN0IHRoZSBwcm9ncmFtLgorSWYgUjY9RlJBTUVfUFRSLCB0aGVuIGFjY2VzcyBzaG91bGQgYmUgYWxpZ25lZCBhbmQgYmUgd2l0aGluCitzdGFjayBib3VuZHMsIHdoaWNoIGFyZSBbLU1BWF9CUEZfU1RBQ0ssIDApLiBJbiB0aGlzIGV4YW1wbGUgb2Zmc2V0IGlzIDgsCitzbyBpdCB3aWxsIGZhaWwgdmVyaWZpY2F0aW9uLCBzaW5jZSBpdCdzIG91dCBvZiBib3VuZHMuCisKK1RoZSB2ZXJpZmllciB3aWxsIGFsbG93IGVCUEYgcHJvZ3JhbSB0byByZWFkIGRhdGEgZnJvbSBzdGFjayBvbmx5IGFmdGVyCitpdCB3cm90ZSBpbnRvIGl0LgorQ2xhc3NpYyBCUEYgdmVyaWZpZXIgZG9lcyBzaW1pbGFyIGNoZWNrIHdpdGggTVswLTE1XSBtZW1vcnkgc2xvdHMuCitGb3IgZXhhbXBsZToKKyAgYnBmX2xkIFIwID0gKih1MzIgKikoUjEwIC0gNCkKKyAgYnBmX2V4aXQKK2lzIGludmFsaWQgcHJvZ3JhbS4KK1Rob3VnaCBSMTAgaXMgY29ycmVjdCByZWFkLW9ubHkgcmVnaXN0ZXIgYW5kIGhhcyB0eXBlIEZSQU1FX1BUUgorYW5kIFIxMCAtIDQgaXMgd2l0aGluIHN0YWNrIGJvdW5kcywgdGhlcmUgd2VyZSBubyBzdG9yZXMgaW50byB0aGF0IGxvY2F0aW9uLgorCitQb2ludGVyIHJlZ2lzdGVyIHNwaWxsL2ZpbGwgaXMgdHJhY2tlZCBhcyB3ZWxsLCBzaW5jZSBmb3VyIChSNi1SOSkKK2NhbGxlZSBzYXZlZCByZWdpc3RlcnMgbWF5IG5vdCBiZSBlbm91Z2ggZm9yIHNvbWUgcHJvZ3JhbXMuCisKK0FsbG93ZWQgZnVuY3Rpb24gY2FsbHMgYXJlIGN1c3RvbWl6ZWQgd2l0aCBicGZfdmVyaWZpZXJfb3BzLT5nZXRfZnVuY19wcm90bygpCitUaGUgZUJQRiB2ZXJpZmllciB3aWxsIGNoZWNrIHRoYXQgcmVnaXN0ZXJzIG1hdGNoIGFyZ3VtZW50IGNvbnN0cmFpbnRzLgorQWZ0ZXIgdGhlIGNhbGwgcmVnaXN0ZXIgUjAgd2lsbCBiZSBzZXQgdG8gcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uLgorCitGdW5jdGlvbiBjYWxscyBpcyBhIG1haW4gbWVjaGFuaXNtIHRvIGV4dGVuZCBmdW5jdGlvbmFsaXR5IG9mIGVCUEYgcHJvZ3JhbXMuCitTb2NrZXQgZmlsdGVycyBtYXkgbGV0IHByb2dyYW1zIHRvIGNhbGwgb25lIHNldCBvZiBmdW5jdGlvbnMsIHdoZXJlYXMgdHJhY2luZworZmlsdGVycyBtYXkgYWxsb3cgY29tcGxldGVseSBkaWZmZXJlbnQgc2V0LgorCitJZiBhIGZ1bmN0aW9uIG1hZGUgYWNjZXNzaWJsZSB0byBlQlBGIHByb2dyYW0sIGl0IG5lZWRzIHRvIGJlIHRob3VnaHQgdGhyb3VnaAorZnJvbSBzYWZldHkgcG9pbnQgb2Ygdmlldy4gVGhlIHZlcmlmaWVyIHdpbGwgZ3VhcmFudGVlIHRoYXQgdGhlIGZ1bmN0aW9uIGlzCitjYWxsZWQgd2l0aCB2YWxpZCBhcmd1bWVudHMuCisKK3NlY2NvbXAgdnMgc29ja2V0IGZpbHRlcnMgaGF2ZSBkaWZmZXJlbnQgc2VjdXJpdHkgcmVzdHJpY3Rpb25zIGZvciBjbGFzc2ljIEJQRi4KK1NlY2NvbXAgc29sdmVzIHRoaXMgYnkgdHdvIHN0YWdlIHZlcmlmaWVyOiBjbGFzc2ljIEJQRiB2ZXJpZmllciBpcyBmb2xsb3dlZAorYnkgc2VjY29tcCB2ZXJpZmllci4gSW4gY2FzZSBvZiBlQlBGIG9uZSBjb25maWd1cmFibGUgdmVyaWZpZXIgaXMgc2hhcmVkIGZvcgorYWxsIHVzZSBjYXNlcy4KKworU2VlIGRldGFpbHMgb2YgZUJQRiB2ZXJpZmllciBpbiBrZXJuZWwvYnBmL3ZlcmlmaWVyLmMKKworZUJQRiBtYXBzCistLS0tLS0tLS0KKydtYXBzJyBpcyBhIGdlbmVyaWMgc3RvcmFnZSBvZiBkaWZmZXJlbnQgdHlwZXMgZm9yIHNoYXJpbmcgZGF0YSBiZXR3ZWVuIGtlcm5lbAorYW5kIHVzZXJzcGFjZS4KKworVGhlIG1hcHMgYXJlIGFjY2Vzc2VkIGZyb20gdXNlciBzcGFjZSB2aWEgQlBGIHN5c2NhbGwsIHdoaWNoIGhhcyBjb21tYW5kczoKKy0gY3JlYXRlIGEgbWFwIHdpdGggZ2l2ZW4gdHlwZSBhbmQgYXR0cmlidXRlcworICBtYXBfZmQgPSBicGYoQlBGX01BUF9DUkVBVEUsIHVuaW9uIGJwZl9hdHRyICphdHRyLCB1MzIgc2l6ZSkKKyAgdXNpbmcgYXR0ci0+bWFwX3R5cGUsIGF0dHItPmtleV9zaXplLCBhdHRyLT52YWx1ZV9zaXplLCBhdHRyLT5tYXhfZW50cmllcworICByZXR1cm5zIHByb2Nlc3MtbG9jYWwgZmlsZSBkZXNjcmlwdG9yIG9yIG5lZ2F0aXZlIGVycm9yCisKKy0gbG9va3VwIGtleSBpbiBhIGdpdmVuIG1hcAorICBlcnIgPSBicGYoQlBGX01BUF9MT09LVVBfRUxFTSwgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHUzMiBzaXplKQorICB1c2luZyBhdHRyLT5tYXBfZmQsIGF0dHItPmtleSwgYXR0ci0+dmFsdWUKKyAgcmV0dXJucyB6ZXJvIGFuZCBzdG9yZXMgZm91bmQgZWxlbSBpbnRvIHZhbHVlIG9yIG5lZ2F0aXZlIGVycm9yCisKKy0gY3JlYXRlIG9yIHVwZGF0ZSBrZXkvdmFsdWUgcGFpciBpbiBhIGdpdmVuIG1hcAorICBlcnIgPSBicGYoQlBGX01BUF9VUERBVEVfRUxFTSwgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHUzMiBzaXplKQorICB1c2luZyBhdHRyLT5tYXBfZmQsIGF0dHItPmtleSwgYXR0ci0+dmFsdWUKKyAgcmV0dXJucyB6ZXJvIG9yIG5lZ2F0aXZlIGVycm9yCisKKy0gZmluZCBhbmQgZGVsZXRlIGVsZW1lbnQgYnkga2V5IGluIGEgZ2l2ZW4gbWFwCisgIGVyciA9IGJwZihCUEZfTUFQX0RFTEVURV9FTEVNLCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgdTMyIHNpemUpCisgIHVzaW5nIGF0dHItPm1hcF9mZCwgYXR0ci0+a2V5CisKKy0gdG8gZGVsZXRlIG1hcDogY2xvc2UoZmQpCisgIEV4aXRpbmcgcHJvY2VzcyB3aWxsIGRlbGV0ZSBtYXBzIGF1dG9tYXRpY2FsbHkKKwordXNlcnNwYWNlIHByb2dyYW1zIHVzZSB0aGlzIHN5c2NhbGwgdG8gY3JlYXRlL2FjY2VzcyBtYXBzIHRoYXQgZUJQRiBwcm9ncmFtcworYXJlIGNvbmN1cnJlbnRseSB1cGRhdGluZy4KKworbWFwcyBjYW4gaGF2ZSBkaWZmZXJlbnQgdHlwZXM6IGhhc2gsIGFycmF5LCBibG9vbSBmaWx0ZXIsIHJhZGl4LXRyZWUsIGV0Yy4KKworVGhlIG1hcCBpcyBkZWZpbmVkIGJ5OgorICAuIHR5cGUKKyAgLiBtYXggbnVtYmVyIG9mIGVsZW1lbnRzCisgIC4ga2V5IHNpemUgaW4gYnl0ZXMKKyAgLiB2YWx1ZSBzaXplIGluIGJ5dGVzCisKK1VuZGVyc3RhbmRpbmcgZUJQRiB2ZXJpZmllciBtZXNzYWdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBmb2xsb3dpbmcgYXJlIGZldyBleGFtcGxlcyBvZiBpbnZhbGlkIGVCUEYgcHJvZ3JhbXMgYW5kIHZlcmlmaWVyIGVycm9yCittZXNzYWdlcyBhcyBzZWVuIGluIHRoZSBsb2c6CisKK1Byb2dyYW0gd2l0aCB1bnJlYWNoYWJsZSBpbnN0cnVjdGlvbnM6CitzdGF0aWMgc3RydWN0IGJwZl9pbnNuIHByb2dbXSA9IHsKKyAgQlBGX0VYSVRfSU5TTigpLAorICBCUEZfRVhJVF9JTlNOKCksCit9OworRXJyb3I6CisgIHVucmVhY2hhYmxlIGluc24gMQorCitQcm9ncmFtIHRoYXQgcmVhZHMgdW5pbml0aWFsaXplZCByZWdpc3RlcjoKKyAgQlBGX01PVjY0X1JFRyhCUEZfUkVHXzAsIEJQRl9SRUdfMiksCisgIEJQRl9FWElUX0lOU04oKSwKK0Vycm9yOgorICAwOiAoYmYpIHIwID0gcjIKKyAgUjIgIXJlYWRfb2sKKworUHJvZ3JhbSB0aGF0IGRvZXNuJ3QgaW5pdGlhbGl6ZSBSMCBiZWZvcmUgZXhpdGluZzoKKyAgQlBGX01PVjY0X1JFRyhCUEZfUkVHXzIsIEJQRl9SRUdfMSksCisgIEJQRl9FWElUX0lOU04oKSwKK0Vycm9yOgorICAwOiAoYmYpIHIyID0gcjEKKyAgMTogKDk1KSBleGl0CisgIFIwICFyZWFkX29rCisKK1Byb2dyYW0gdGhhdCBhY2Nlc3NlcyBzdGFjayBvdXQgb2YgYm91bmRzOgorICBCUEZfU1RfTUVNKEJQRl9EVywgQlBGX1JFR18xMCwgOCwgMCksCisgIEJQRl9FWElUX0lOU04oKSwKK0Vycm9yOgorICAwOiAoN2EpICoodTY0ICopKHIxMCArOCkgPSAwCisgIGludmFsaWQgc3RhY2sgb2ZmPTggc2l6ZT04CisKK1Byb2dyYW0gdGhhdCBkb2Vzbid0IGluaXRpYWxpemUgc3RhY2sgYmVmb3JlIHBhc3NpbmcgaXRzIGFkZHJlc3MgaW50byBmdW5jdGlvbjoKKyAgQlBGX01PVjY0X1JFRyhCUEZfUkVHXzIsIEJQRl9SRUdfMTApLAorICBCUEZfQUxVNjRfSU1NKEJQRl9BREQsIEJQRl9SRUdfMiwgLTgpLAorICBCUEZfTERfTUFQX0ZEKEJQRl9SRUdfMSwgMCksCisgIEJQRl9SQVdfSU5TTihCUEZfSk1QIHwgQlBGX0NBTEwsIDAsIDAsIDAsIEJQRl9GVU5DX21hcF9sb29rdXBfZWxlbSksCisgIEJQRl9FWElUX0lOU04oKSwKK0Vycm9yOgorICAwOiAoYmYpIHIyID0gcjEwCisgIDE6ICgwNykgcjIgKz0gLTgKKyAgMjogKGI3KSByMSA9IDB4MAorICAzOiAoODUpIGNhbGwgMQorICBpbnZhbGlkIGluZGlyZWN0IHJlYWQgZnJvbSBzdGFjayBvZmYgLTgrMCBzaXplIDgKKworUHJvZ3JhbSB0aGF0IHVzZXMgaW52YWxpZCBtYXBfZmQ9MCB3aGlsZSBjYWxsaW5nIHRvIG1hcF9sb29rdXBfZWxlbSgpIGZ1bmN0aW9uOgorICBCUEZfU1RfTUVNKEJQRl9EVywgQlBGX1JFR18xMCwgLTgsIDApLAorICBCUEZfTU9WNjRfUkVHKEJQRl9SRUdfMiwgQlBGX1JFR18xMCksCisgIEJQRl9BTFU2NF9JTU0oQlBGX0FERCwgQlBGX1JFR18yLCAtOCksCisgIEJQRl9MRF9NQVBfRkQoQlBGX1JFR18xLCAwKSwKKyAgQlBGX1JBV19JTlNOKEJQRl9KTVAgfCBCUEZfQ0FMTCwgMCwgMCwgMCwgQlBGX0ZVTkNfbWFwX2xvb2t1cF9lbGVtKSwKKyAgQlBGX0VYSVRfSU5TTigpLAorRXJyb3I6CisgIDA6ICg3YSkgKih1NjQgKikocjEwIC04KSA9IDAKKyAgMTogKGJmKSByMiA9IHIxMAorICAyOiAoMDcpIHIyICs9IC04CisgIDM6IChiNykgcjEgPSAweDAKKyAgNDogKDg1KSBjYWxsIDEKKyAgZmQgMCBpcyBub3QgcG9pbnRpbmcgdG8gdmFsaWQgYnBmX21hcAorCitQcm9ncmFtIHRoYXQgZG9lc24ndCBjaGVjayByZXR1cm4gdmFsdWUgb2YgbWFwX2xvb2t1cF9lbGVtKCkgYmVmb3JlIGFjY2Vzc2luZworbWFwIGVsZW1lbnQ6CisgIEJQRl9TVF9NRU0oQlBGX0RXLCBCUEZfUkVHXzEwLCAtOCwgMCksCisgIEJQRl9NT1Y2NF9SRUcoQlBGX1JFR18yLCBCUEZfUkVHXzEwKSwKKyAgQlBGX0FMVTY0X0lNTShCUEZfQURELCBCUEZfUkVHXzIsIC04KSwKKyAgQlBGX0xEX01BUF9GRChCUEZfUkVHXzEsIDApLAorICBCUEZfUkFXX0lOU04oQlBGX0pNUCB8IEJQRl9DQUxMLCAwLCAwLCAwLCBCUEZfRlVOQ19tYXBfbG9va3VwX2VsZW0pLAorICBCUEZfU1RfTUVNKEJQRl9EVywgQlBGX1JFR18wLCAwLCAwKSwKKyAgQlBGX0VYSVRfSU5TTigpLAorRXJyb3I6CisgIDA6ICg3YSkgKih1NjQgKikocjEwIC04KSA9IDAKKyAgMTogKGJmKSByMiA9IHIxMAorICAyOiAoMDcpIHIyICs9IC04CisgIDM6IChiNykgcjEgPSAweDAKKyAgNDogKDg1KSBjYWxsIDEKKyAgNTogKDdhKSAqKHU2NCAqKShyMCArMCkgPSAwCisgIFIwIGludmFsaWQgbWVtIGFjY2VzcyAnbWFwX3ZhbHVlX29yX251bGwnCisKK1Byb2dyYW0gdGhhdCBjb3JyZWN0bHkgY2hlY2tzIG1hcF9sb29rdXBfZWxlbSgpIHJldHVybmVkIHZhbHVlIGZvciBOVUxMLCBidXQKK2FjY2Vzc2VzIHRoZSBtZW1vcnkgd2l0aCBpbmNvcnJlY3QgYWxpZ25tZW50OgorICBCUEZfU1RfTUVNKEJQRl9EVywgQlBGX1JFR18xMCwgLTgsIDApLAorICBCUEZfTU9WNjRfUkVHKEJQRl9SRUdfMiwgQlBGX1JFR18xMCksCisgIEJQRl9BTFU2NF9JTU0oQlBGX0FERCwgQlBGX1JFR18yLCAtOCksCisgIEJQRl9MRF9NQVBfRkQoQlBGX1JFR18xLCAwKSwKKyAgQlBGX1JBV19JTlNOKEJQRl9KTVAgfCBCUEZfQ0FMTCwgMCwgMCwgMCwgQlBGX0ZVTkNfbWFwX2xvb2t1cF9lbGVtKSwKKyAgQlBGX0pNUF9JTU0oQlBGX0pFUSwgQlBGX1JFR18wLCAwLCAxKSwKKyAgQlBGX1NUX01FTShCUEZfRFcsIEJQRl9SRUdfMCwgNCwgMCksCisgIEJQRl9FWElUX0lOU04oKSwKK0Vycm9yOgorICAwOiAoN2EpICoodTY0ICopKHIxMCAtOCkgPSAwCisgIDE6IChiZikgcjIgPSByMTAKKyAgMjogKDA3KSByMiArPSAtOAorICAzOiAoYjcpIHIxID0gMQorICA0OiAoODUpIGNhbGwgMQorICA1OiAoMTUpIGlmIHIwID09IDB4MCBnb3RvIHBjKzEKKyAgIFIwPW1hcF9wdHIgUjEwPWZwCisgIDY6ICg3YSkgKih1NjQgKikocjAgKzQpID0gMAorICBtaXNhbGlnbmVkIGFjY2VzcyBvZmYgNCBzaXplIDgKKworUHJvZ3JhbSB0aGF0IGNvcnJlY3RseSBjaGVja3MgbWFwX2xvb2t1cF9lbGVtKCkgcmV0dXJuZWQgdmFsdWUgZm9yIE5VTEwgYW5kCithY2Nlc3NlcyBtZW1vcnkgd2l0aCBjb3JyZWN0IGFsaWdubWVudCBpbiBvbmUgc2lkZSBvZiAnaWYnIGJyYW5jaCwgYnV0IGZhaWxzCit0byBkbyBzbyBpbiB0aGUgb3RoZXIgc2lkZSBvZiAnaWYnIGJyYW5jaDoKKyAgQlBGX1NUX01FTShCUEZfRFcsIEJQRl9SRUdfMTAsIC04LCAwKSwKKyAgQlBGX01PVjY0X1JFRyhCUEZfUkVHXzIsIEJQRl9SRUdfMTApLAorICBCUEZfQUxVNjRfSU1NKEJQRl9BREQsIEJQRl9SRUdfMiwgLTgpLAorICBCUEZfTERfTUFQX0ZEKEJQRl9SRUdfMSwgMCksCisgIEJQRl9SQVdfSU5TTihCUEZfSk1QIHwgQlBGX0NBTEwsIDAsIDAsIDAsIEJQRl9GVU5DX21hcF9sb29rdXBfZWxlbSksCisgIEJQRl9KTVBfSU1NKEJQRl9KRVEsIEJQRl9SRUdfMCwgMCwgMiksCisgIEJQRl9TVF9NRU0oQlBGX0RXLCBCUEZfUkVHXzAsIDAsIDApLAorICBCUEZfRVhJVF9JTlNOKCksCisgIEJQRl9TVF9NRU0oQlBGX0RXLCBCUEZfUkVHXzAsIDAsIDEpLAorICBCUEZfRVhJVF9JTlNOKCksCitFcnJvcjoKKyAgMDogKDdhKSAqKHU2NCAqKShyMTAgLTgpID0gMAorICAxOiAoYmYpIHIyID0gcjEwCisgIDI6ICgwNykgcjIgKz0gLTgKKyAgMzogKGI3KSByMSA9IDEKKyAgNDogKDg1KSBjYWxsIDEKKyAgNTogKDE1KSBpZiByMCA9PSAweDAgZ290byBwYysyCisgICBSMD1tYXBfcHRyIFIxMD1mcAorICA2OiAoN2EpICoodTY0ICopKHIwICswKSA9IDAKKyAgNzogKDk1KSBleGl0CisKKyAgZnJvbSA1IHRvIDg6IFIwPWltbTAgUjEwPWZwCisgIDg6ICg3YSkgKih1NjQgKikocjAgKzApID0gMQorICBSMCBpbnZhbGlkIG1lbSBhY2Nlc3MgJ2ltbScKKworVGVzdGluZworLS0tLS0tLQorCitOZXh0IHRvIHRoZSBCUEYgdG9vbGNoYWluLCB0aGUga2VybmVsIGFsc28gc2hpcHMgYSB0ZXN0IG1vZHVsZSB0aGF0IGNvbnRhaW5zCit2YXJpb3VzIHRlc3QgY2FzZXMgZm9yIGNsYXNzaWMgYW5kIGludGVybmFsIEJQRiB0aGF0IGNhbiBiZSBleGVjdXRlZCBhZ2FpbnN0Cit0aGUgQlBGIGludGVycHJldGVyIGFuZCBKSVQgY29tcGlsZXIuIEl0IGNhbiBiZSBmb3VuZCBpbiBsaWIvdGVzdF9icGYuYyBhbmQKK2VuYWJsZWQgdmlhIEtjb25maWc6CisKKyAgQ09ORklHX1RFU1RfQlBGPW0KKworQWZ0ZXIgdGhlIG1vZHVsZSBoYXMgYmVlbiBidWlsdCBhbmQgaW5zdGFsbGVkLCB0aGUgdGVzdCBzdWl0ZSBjYW4gYmUgZXhlY3V0ZWQKK3ZpYSBpbnNtb2Qgb3IgbW9kcHJvYmUgYWdhaW5zdCAndGVzdF9icGYnIG1vZHVsZS4gUmVzdWx0cyBvZiB0aGUgdGVzdCBjYXNlcworaW5jbHVkaW5nIHRpbWluZ3MgaW4gbnNlYyBjYW4gYmUgZm91bmQgaW4gdGhlIGtlcm5lbCBsb2cgKGRtZXNnKS4KKworTWlzYworLS0tLQorCitBbHNvIHRyaW5pdHksIHRoZSBMaW51eCBzeXNjYWxsIGZ1enplciwgaGFzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIEJQRiBhbmQKK1NFQ0NPTVAtQlBGIGtlcm5lbCBmdXp6aW5nLgorCitXcml0dGVuIGJ5CistLS0tLS0tLS0tCisKK1RoZSBkb2N1bWVudCB3YXMgd3JpdHRlbiBpbiB0aGUgaG9wZSB0aGF0IGl0IGlzIGZvdW5kIHVzZWZ1bCBhbmQgaW4gb3JkZXIKK3RvIGdpdmUgcG90ZW50aWFsIEJQRiBoYWNrZXJzIG9yIHNlY3VyaXR5IGF1ZGl0b3JzIGEgYmV0dGVyIG92ZXJ2aWV3IG9mCit0aGUgdW5kZXJseWluZyBhcmNoaXRlY3R1cmUuCisKK0pheSBTY2h1bGlzdCA8anNjaGxzdEBzYW1iYS5vcmc+CitEYW5pZWwgQm9ya21hbm4gPGRib3JrbWFuQHJlZGhhdC5jb20+CitBbGV4ZWkgU3Rhcm92b2l0b3YgPGFzdEBwbHVtZ3JpZC5jb20+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZm9yZTIwMGUudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZvcmUyMDBlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjk4ZjYyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZvcmUyMDBlLnR4dApAQCAtMCwwICsxLDY0IEBACisKK0ZPUkUgU3lzdGVtcyBQQ0EtMjAwRS9TQkEtMjAwRSBBVE0gTklDIGRyaXZlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEZPUkUgU3lzdGVtcyAyMDBFLXNlcmllcyBBVE0gYWRhcHRlcnMKK3RvIHRoZSBMaW51eCBvcGVyYXRpbmcgc3lzdGVtLiBJdCBpcyBiYXNlZCBvbiB0aGUgZWFybGllciBQQ0EtMjAwRSBkcml2ZXIKK3dyaXR0ZW4gYnkgVXdlIERhbm5vd3NraS4KKworVGhlIGRyaXZlciBzaW11bHRhbmVvdXNseSBzdXBwb3J0cyBQQ0EtMjAwRSBhbmQgU0JBLTIwMEUgYWRhcHRlcnMgb24KK2kzODYsIGFscGhhICh1bnRlc3RlZCksIHBvd2VycGMsIHNwYXJjIGFuZCBzcGFyYzY0IGFyY2hzLgorCitUaGUgaW50ZW50IGlzIHRvIGVuYWJsZSB0aGUgdXNlIG9mIGRpZmZlcmVudCBtb2RlbHMgb2YgRk9SRSBhZGFwdGVycyBhdCB0aGUKK3NhbWUgdGltZSwgYnkgaG9zdHMgdGhhdCBoYXZlIHNldmVyYWwgYnVzIGludGVyZmFjZXMgKHN1Y2ggYXMgUENJK1NCVVMsCitvciBQQ0krRUlTQSkuCisKK09ubHkgUENJIGFuZCBTQlVTIGRldmljZXMgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlciwgYnV0IHN1cHBvcnQKK2ZvciBvdGhlciBidXMgaW50ZXJmYWNlcyBzdWNoIGFzIEVJU0Egc2hvdWxkIG5vdCBiZSB0b28gaGFyZCB0byBhZGQuCisKKworRmlybXdhcmUgQ29weXJpZ2h0IE5vdGljZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQbGVhc2UgcmVhZCB0aGUgZm9yZTIwMGVfZmlybXdhcmVfY29weXJpZ2h0IGZpbGUgcHJlc2VudAoraW4gdGhlIGxpbnV4L2RyaXZlcnMvYXRtIGRpcmVjdG9yeSBmb3IgZGV0YWlscyBhbmQgcmVzdHJpY3Rpb25zLgorCisKK0Zpcm13YXJlIFVwZGF0ZXMKKy0tLS0tLS0tLS0tLS0tLS0KKworVGhlIEZPUkUgU3lzdGVtcyAyMDBFLXNlcmllcyBkcml2ZXIgaXMgc2hpcHBlZCB3aXRoIGZpcm13YXJlIGRhdGEgYmVpbmcgCit1cGxvYWRlZCB0byB0aGUgQVRNIGFkYXB0ZXJzIGF0IHN5c3RlbSBib290IHRpbWUgb3IgYXQgbW9kdWxlIGxvYWRpbmcgdGltZS4gCitUaGUgc3VwcGxpZWQgZmlybXdhcmUgaW1hZ2VzIHNob3VsZCB3b3JrIHdpdGggYWxsIGFkYXB0ZXJzLgorCitIb3dldmVyLCBpZiB5b3UgZW5jb3VudGVyIHByb2JsZW1zICh0aGUgZmlybXdhcmUgZG9lc24ndCBzdGFydCBvciB0aGUgZHJpdmVyCitpcyB1bmFibGUgdG8gcmVhZCB0aGUgUFJPTSBkYXRhKSwgeW91IG1heSBjb25zaWRlciB0cnlpbmcgYW5vdGhlciBmaXJtd2FyZQordmVyc2lvbi4gQWx0ZXJuYXRpdmUgYmluYXJ5IGZpcm13YXJlIGltYWdlcyBjYW4gYmUgZm91bmQgc29tZXdoZXJlIG9uIHRoZQorRm9yZVRob3VnaHQgQ0QtUk9NIHN1cHBsaWVkIHdpdGggeW91ciBhZGFwdGVyIGJ5IEZPUkUgU3lzdGVtcy4KKworWW91IGNhbiBhbHNvIGdldCB0aGUgbGF0ZXN0IGZpcm13YXJlIGltYWdlcyBmcm9tIEZPUkUgU3lzdGVtcyBhdAoraHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRk9SRV9TeXN0ZW1zLiBSZWdpc3RlciBUQUNUaWNzIE9ubGluZSBhbmQgZ28gdG8KK3RoZSAnc29mdHdhcmUgdXBkYXRlcycgcGFnZXMuIFRoZSBmaXJtd2FyZSBiaW5hcmllcyBhcmUgcGFydCBvZgordGhlIHZhcmlvdXMgRm9yZVRob3VnaHQgc29mdHdhcmUgZGlzdHJpYnV0aW9ucy4KKworTm90aWNlIHRoYXQgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBQQ0EtMjAwRSBmaXJtd2FyZSBleGlzdCwgZGVwZW5kaW5nCitvbiB0aGUgZW5kaWFubmVzcyBvZiB0aGUgaG9zdCBhcmNoaXRlY3R1cmUuIFRoZSBkcml2ZXIgaXMgc2hpcHBlZCB3aXRoCitib3RoIGxpdHRsZSBhbmQgYmlnIGVuZGlhbiBQQ0EgZmlybXdhcmUgaW1hZ2VzLgorCitOYW1lIGFuZCBsb2NhdGlvbiBvZiB0aGUgbmV3IGZpcm13YXJlIGltYWdlcyBjYW4gYmUgc2V0IGF0IGtlcm5lbAorY29uZmlndXJhdGlvbiB0aW1lOgorCisxLiBDb3B5IHRoZSBuZXcgZmlybXdhcmUgYmluYXJ5IGZpbGVzICh3aXRoIC5iaW4sIC5iaW4xIG9yIC5iaW4yIHN1ZmZpeCkKKyAgIHRvIHNvbWUgZGlyZWN0b3J5LCBzdWNoIGFzIGxpbnV4L2RyaXZlcnMvYXRtLgorCisyLiBSZWNvbmZpZ3VyZSB5b3VyIGtlcm5lbCB0byBzZXQgdGhlIG5ldyBmaXJtd2FyZSBuYW1lIGFuZCBsb2NhdGlvbi4KKyAgIEV4cGVjdGVkIHBhdGhuYW1lcyBhcmUgYWJzb2x1dGUgb3IgcmVsYXRpdmUgdG8gdGhlIGRyaXZlcnMvYXRtIGRpcmVjdG9yeS4KKworMy4gUmVidWlsZCBhbmQgcmUtaW5zdGFsbCB5b3VyIGtlcm5lbCBvciB5b3VyIG1vZHVsZS4KKworCitGZWVkYmFjaworLS0tLS0tLS0KKworRmVlZGJhY2sgaXMgd2VsY29tZS4gUGxlYXNlIHNlbmQgc3VjY2VzcyBzdG9yaWVzL2J1ZyByZXBvcnRzLworcGF0Y2hlcy9pbXByb3ZlbWVudC9jb21tZW50cy9mbGFtZXMgdG8gPGxpenppQGNuYW0uZnI+LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZyYW1lcmVsYXkudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2ZyYW1lcmVsYXkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMGI3MjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZnJhbWVyZWxheS50eHQKQEAgLTAsMCArMSwzOSBAQAorRnJhbWUgUmVsYXkgKEZSKSBzdXBwb3J0IGZvciBsaW51eCBpcyBidWlsdCBpbnRvIGEgdHdvIHRpZXJlZCBzeXN0ZW0gb2YgZGV2aWNlIAorZHJpdmVycy4gIFRoZSB1cHBlciBsYXllciBpbXBsZW1lbnRzIFJGQzE0OTAgRlIgc3BlY2lmaWNhdGlvbiwgYW5kIHVzZXMgdGhlCitEYXRhIExpbmsgQ29ubmVjdGlvbiBJZGVudGlmaWVyIChETENJKSBhcyBpdHMgaGFyZHdhcmUgYWRkcmVzcy4gIFVzdWFsbHkgdGhlc2UKK2FyZSBhc3NpZ25lZCBieSB5b3VyIG5ldHdvcmsgc3VwcGxpZXIsIHRoZXkgZ2l2ZSB5b3UgdGhlIG51bWJlci9udW1iZXJzIG9mCit0aGUgVmlydHVhbCBDb25uZWN0aW9ucyAoVkMpIGFzc2lnbmVkIHRvIHlvdS4KKworRWFjaCBETENJIGlzIGEgcG9pbnQtdG8tcG9pbnQgbGluayBiZXR3ZWVuIHlvdXIgbWFjaGluZSBhbmQgYSByZW1vdGUgb25lLgorQXMgc3VjaCwgYSBzZXBhcmF0ZSBkZXZpY2UgaXMgbmVlZGVkIHRvIGFjY29tbW9kYXRlIHRoZSByb3V0aW5nLiAgV2l0aGluIHRoZQorbmV0LXRvb2xzIGFyY2hpdmVzIGlzICdkbGNpY2ZnJy4gIFRoaXMgcHJvZ3JhbSB3aWxsIGNvbW11bmljYXRlIHdpdGggdGhlCitiYXNlICJETENJIiBkZXZpY2UsIGFuZCBjcmVhdGUgbmV3IG5ldCBkZXZpY2VzIG5hbWVkICdkbGNpMDAnLCAnZGxjaTAxJy4uLiAKK1RoZSBjb25maWd1cmF0aW9uIHNjcmlwdCB3aWxsIGFzayB5b3UgaG93IG1hbnkgRExDSXMgeW91IG5lZWQsIGFzIHdlbGwgYXMKK2hvdyBtYW55IERMQ0lzIHlvdSB3YW50IHRvIGFzc2lnbiB0byBlYWNoIEZyYW1lIFJlbGF5IEFjY2VzcyBEZXZpY2UgKEZSQUQpLgorCitUaGUgRExDSSB1c2VzIGEgbnVtYmVyIG9mIGZ1bmN0aW9uIGNhbGxzIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIEZSQUQsIGFsbAorb2Ygd2hpY2ggYXJlIHN0b3JlZCBpbiB0aGUgRlJBRCdzIHByaXZhdGUgZGF0YSBhcmVhLiAgYXNzb2MvZGVhc3NvYywgCithY3RpdmF0ZS9kZWFjdGl2YXRlIGFuZCBkbGNpX2NvbmZpZy4gIFRoZSBETENJIHN1cHBsaWVzIGEgcmVjZWl2ZSBmdW5jdGlvbgordG8gdGhlIEZSQUQgdG8gYWNjZXB0IGluY29taW5nIHBhY2tldHMuCisKK1dpdGggdGhpcyBpbml0aWFsIG9mZmVyaW5nLCBvbmx5IDEgRlJBRCBkcml2ZXIgaXMgYXZhaWxhYmxlLiAgV2l0aCBtYW55IHRoYW5rcwordG8gU2FuZ29tYSBUZWNobm9sb2dpZXMsIERhdmlkIE1hbmRlbHN0YW0gJiBHZW5lIEtvemluLCB0aGUgUzUwMkEsIFM1MDJFICYgCitTNTA4IGFyZSBzdXBwb3J0ZWQuICBUaGlzIGRyaXZlciBpcyBjdXJyZW50bHkgc2V0IHVwIGZvciBvbmx5IEZSLCBidXQgYXMgCitTYW5nb21hIG1ha2VzIG1vcmUgZmlybXdhcmUgbW9kdWxlcyBhdmFpbGFibGUsIGl0IGNhbiBiZSB1cGRhdGVkIHRvIHByb3ZpZGUKK3RoZW0gYXMgd2VsbC4KKworQ29uZmlndXJhdGlvbiBvZiB0aGUgRlJBRCBtYWtlcyB1c2Ugb2YgYW5vdGhlciBuZXQtdG9vbHMgcHJvZ3JhbSwgJ2ZyYWRjZmcnLgorVGhpcyBwcm9ncmFtIG1ha2VzIHVzZSBvZiBhIGNvbmZpZ3VyYXRpb24gZmlsZSAod2hpY2ggZGxjaWNmZyBjYW4gYWxzbyByZWFkKQordG8gc3BlY2lmeSB0aGUgdHlwZXMgb2YgYm9hcmRzIHRvIGJlIGNvbmZpZ3VyZWQgYXMgRlJBRHMsIGFzIHdlbGwgYXMgcGVyZm9ybQorYW55IGJvYXJkIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24uICBUaGUgU2FuZ29tYSBtb2R1bGUgb2YgZnJhZGNmZyBsb2FkcyB0aGUKK0ZSIGZpcm13YXJlIGludG8gdGhlIGNhcmQsIHNldHMgdGhlIGlycS9wb3J0L21lbW9yeSBpbmZvcm1hdGlvbiwgYW5kIHByb3ZpZGVzCithbiBpbml0aWFsIGNvbmZpZ3VyYXRpb24uCisKK0FkZGl0aW9uYWwgRlJBRCBkZXZpY2UgZHJpdmVycyBjYW4gYmUgYWRkZWQgYXMgaGFyZHdhcmUgaXMgYXZhaWxhYmxlLgorCitBdCB0aGlzIHRpbWUsIHRoZSBkbGNpY2ZnIGFuZCBmcmFkY2ZnIHByb2dyYW1zIGhhdmUgbm90IGJlZW4gaW5jb3Jwb3JhdGVkIGludG8KK3RoZSBuZXQtdG9vbHMgZGlzdHJpYnV0aW9uLiAgVGhleSBjYW4gYmUgZm91bmQgYXQgZnRwLmludmxvZ2ljLmNvbSwgaW4gCisvcHViL2xpbnV4LiAgTm90ZSB0aGF0IHdpdGggT1MvMiBGVFBELCB5b3UgZW5kIHVwIGluIC9wdWIgYnkgZGVmYXVsdCwgc28ganVzdAordXNlICdjZCBsaW51eCcuICB2MC4xMCBpcyBmb3IgdXNlIG9uIHByZS0yLjAuMyBhbmQgZWFybGllciwgdjAuMTUgaXMgZm9yIAorcHJlLTIuMC40IGFuZCBsYXRlci4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2dlbl9zdGF0cy50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZ2VuX3N0YXRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGU2Mjc1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2dlbl9zdGF0cy50eHQKQEAgLTAsMCArMSwxMTcgQEAKK0dlbmVyaWMgbmV0d29ya2luZyBzdGF0aXN0aWNzIGZvciBuZXRsaW5rIHVzZXJzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1N0YXRpc3RpYyBjb3VudGVycyBhcmUgZ3JvdXBlZCBpbnRvIHN0cnVjdHM6CisKK1N0cnVjdCAgICAgICAgICAgICAgIFRMViB0eXBlICAgICAgICAgICAgICBEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZ25ldF9zdGF0c19iYXNpYyAgICAgVENBX1NUQVRTX0JBU0lDICAgICAgIEJhc2ljIHN0YXRpc3RpY3MKK2duZXRfc3RhdHNfcmF0ZV9lc3QgIFRDQV9TVEFUU19SQVRFX0VTVCAgICBSYXRlIGVzdGltYXRvcgorZ25ldF9zdGF0c19xdWV1ZSAgICAgVENBX1NUQVRTX1FVRVVFICAgICAgIFF1ZXVlIHN0YXRpc3RpY3MKK25vbmUgICAgICAgICAgICAgICAgIFRDQV9TVEFUU19BUFAgICAgICAgICBBcHBsaWNhdGlvbiBzcGVjaWZpYworCisKK0NvbGxlY3Rpbmc6CistLS0tLS0tLS0tLQorCitEZWNsYXJlIHRoZSBzdGF0aXN0aWMgc3RydWN0cyB5b3UgbmVlZDoKK3N0cnVjdCBteXN0cnVjdCB7CisJc3RydWN0IGduZXRfc3RhdHNfYmFzaWMJYnN0YXRzOworCXN0cnVjdCBnbmV0X3N0YXRzX3F1ZXVlCXFzdGF0czsKKwkuLi4KK307CisKK1VwZGF0ZSBzdGF0aXN0aWNzOgorbXlzdHJ1Y3QtPnRzdGF0cy5wYWNrZXQrKzsKK215c3RydWN0LT5xc3RhdHMuYmFja2xvZyArPSBza2ItPnBrdF9sZW47CisKKworRXhwb3J0IHRvIHVzZXJzcGFjZSAoRHVtcCk6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbXlfZHVtcGluZ19yb3V0aW5lKHN0cnVjdCBza19idWZmICpza2IsIC4uLikKK3sKKwlzdHJ1Y3QgZ25ldF9kdW1wIGR1bXA7CisKKwlpZiAoZ25ldF9zdGF0c19zdGFydF9jb3B5KHNrYiwgVENBX1NUQVRTMiwgJm15c3RydWN0LT5sb2NrLCAmZHVtcCkgPCAwKQorCQlnb3RvIHJ0YXR0cl9mYWlsdXJlOworCisJaWYgKGduZXRfc3RhdHNfY29weV9iYXNpYygmZHVtcCwgJm15c3RydWN0LT5ic3RhdHMpIDwgMCB8fAorCSAgICBnbmV0X3N0YXRzX2NvcHlfcXVldWUoJmR1bXAsICZteXN0cnVjdC0+cXN0YXRzKSA8IDAgfHwKKwkJZ25ldF9zdGF0c19jb3B5X2FwcCgmZHVtcCwgJnhzdGF0cywgc2l6ZW9mKHhzdGF0cykpIDwgMCkKKwkJZ290byBydGF0dHJfZmFpbHVyZTsKKworCWlmIChnbmV0X3N0YXRzX2ZpbmlzaF9jb3B5KCZkdW1wKSA8IDApCisJCWdvdG8gcnRhdHRyX2ZhaWx1cmU7CisJLi4uCit9CisKK1RDQV9TVEFUUy9UQ0FfWFNUQVRTIGJhY2t3YXJkIGNvbXBhdGliaWxpdHk6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQcmlvciB1c2VycyBvZiBzdHJ1Y3QgdGNfc3RhdHMgYW5kIHhzdGF0cyBjYW4gbWFpbnRhaW4gYmFja3dhcmQKK2NvbXBhdGliaWxpdHkgYnkgY2FsbGluZyB0aGUgY29tcGF0IHdyYXBwZXJzIHRvIGtlZXAgcHJvdmlkaW5nIHRoZQorZXhpc3RpbmcgVExWIHR5cGVzLgorCitteV9kdW1waW5nX3JvdXRpbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgLi4uKQoreworICAgIGlmIChnbmV0X3N0YXRzX3N0YXJ0X2NvcHlfY29tcGF0KHNrYiwgVENBX1NUQVRTMiwgVENBX1NUQVRTLAorCQlUQ0FfWFNUQVRTLCAmbXlzdHJ1Y3QtPmxvY2ssICZkdW1wKSA8IDApCisJCWdvdG8gcnRhdHRyX2ZhaWx1cmU7CisJLi4uCit9CisKK0Egc3RydWN0IHRjX3N0YXRzIHdpbGwgYmUgZmlsbGVkIG91dCBkdXJpbmcgZ25ldF9zdGF0c19jb3B5XyogY2FsbHMKK2FuZCBhcHBlbmRlZCB0byB0aGUgc2tiLiBUQ0FfWFNUQVRTIGlzIHByb3ZpZGVkIGlmIGduZXRfc3RhdHNfY29weV9hcHAKK3dhcyBjYWxsZWQuCisKKworTG9ja2luZzoKKy0tLS0tLS0tCisKK0xvY2tzIGFyZSB0YWtlbiBiZWZvcmUgd3JpdGluZyBhbmQgcmVsZWFzZWQgb25jZSBhbGwgc3RhdGlzdGljcyBoYXZlCitiZWVuIHdyaXR0ZW4uIExvY2tzIGFyZSBhbHdheXMgcmVsZWFzZWQgaW4gY2FzZSBvZiBhbiBlcnJvci4gWW91CithcmUgcmVzcG9uc2libGUgZm9yIG1ha2luZyBzdXJlIHRoYXQgdGhlIGxvY2sgaXMgaW5pdGlhbGl6ZWQuCisKKworUmF0ZSBFc3RpbWF0b3I6CistLS0tLS0tLS0tLS0tLQorCiswKSBQcmVwYXJlIGFuIGVzdGltYXRvciBhdHRyaWJ1dGUuIE1vc3QgbGlrZWx5IHRoaXMgd291bGQgYmUgaW4gdXNlcgorICAgc3BhY2UuIFRoZSB2YWx1ZSBvZiB0aGlzIFRMViBzaG91bGQgY29udGFpbiBhIHRjX2VzdGltYXRvciBzdHJ1Y3R1cmUuCisgICBBcyB1c3VhbCwgc3VjaCBhIFRMViBuZWVkcyB0byBiZSAzMiBiaXQgYWxpZ25lZCBhbmQgdGhlcmVmb3JlIHRoZQorICAgbGVuZ3RoIG5lZWRzIHRvIGJlIGFwcHJvcHJpYXRlbHkgc2V0LCBldGMuIFRoZSBlc3RpbWF0b3IgaW50ZXJ2YWwKKyAgIGFuZCBld21hIGxvZyBuZWVkIHRvIGJlIGNvbnZlcnRlZCB0byB0aGUgYXBwcm9wcmlhdGUgdmFsdWVzLgorICAgdGNfZXN0aW1hdG9yLmM6OnRjX3NldHVwX2VzdGltYXRvcigpIGlzIGFkdmlzYWJsZSB0byBiZSB1c2VkIGFzIHRoZQorICAgY29udmVyc2lvbiByb3V0aW5lLiBJdCBkb2VzIGEgZmV3IGNsZXZlciB0aGluZ3MuIEl0IHRha2VzIGEgdGltZQorICAgaW50ZXJ2YWwgaW4gbWljcm9zZWNzLCBhIHRpbWUgY29uc3RhbnQgYWxzbyBpbiBtaWNyb3NlY3MgYW5kIGEgc3RydWN0CisgICB0Y19lc3RpbWF0b3IgdG8gIGJlIHBvcHVsYXRlZC4gVGhlIHJldHVybmVkIHRjX2VzdGltYXRvciBjYW4gYmUKKyAgIHRyYW5zcG9ydGVkIHRvIHRoZSBrZXJuZWwuICBUcmFuc2ZlciBzdWNoIGEgc3RydWN0dXJlIGluIGEgVExWIG9mIHR5cGUKKyAgIFRDQV9SQVRFIHRvIHlvdXIgY29kZSBpbiB0aGUga2VybmVsLgorCitJbiB0aGUga2VybmVsIHdoZW4gc2V0dGluZyB1cDoKKzEpIG1ha2Ugc3VyZSB5b3UgaGF2ZSBiYXNpYyBzdGF0cyBhbmQgcmF0ZSBzdGF0cyBzZXR1cCBmaXJzdC4KKzIpIG1ha2Ugc3VyZSB5b3UgaGF2ZSBpbml0aWFsaXplZCBzdGF0cyBsb2NrIHRoYXQgaXMgdXNlZCB0byBzZXR1cCBzdWNoCisgICBzdGF0cy4KKzMpIE5vdyBpbml0aWFsaXplIGEgbmV3IGVzdGltYXRvcjoKKworICAgaW50IHJldCA9IGdlbl9uZXdfZXN0aW1hdG9yKG15X2Jhc2ljc3RhdHMsbXlfcmF0ZV9lc3Rfc3RhdHMsCisgICAgICAgbXlzdGF0c19sb2NrLCBhdHRyX3dpdGhfdGNlc3RpbWF0b3Jfc3RydWN0KTsKKworICAgaWYgcmV0ID09IDAKKyAgICAgICBzdWNjZXNzCisgICBlbHNlCisgICAgICAgZmFpbGVkCisKK0Zyb20gbm93IG9uLCBldmVyeSB0aW1lIHlvdSBkdW1wIG15X3JhdGVfZXN0X3N0YXRzIGl0IHdpbGwgY29udGFpbgordXAtdG8tZGF0ZSBpbmZvLgorCitPbmNlIHlvdSBhcmUgZG9uZSwgY2FsbCBnZW5fa2lsbF9lc3RpbWF0b3IobXlfYmFzaWNzdGF0cywKK215X3JhdGVfZXN0X3N0YXRzKSBNYWtlIHN1cmUgdGhhdCBteV9iYXNpY3N0YXRzIGFuZCBteV9yYXRlX2VzdF9zdGF0cworYXJlIHN0aWxsIHZhbGlkIChpLmUgc3RpbGwgZXhpc3QpIGF0IHRoZSB0aW1lIG9mIG1ha2luZyB0aGlzIGNhbGwuCisKKworQXV0aG9yczoKKy0tLS0tLS0tCitUaG9tYXMgR3JhZiA8dGdyYWZAc3V1Zy5jaD4KK0phbWFsIEhhZGkgU2FsaW0gPGhhZGlAY3liZXJ1cy5jYT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9nZW5lcmljLWhkbGMudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2dlbmVyaWMtaGRsYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGViM2NjNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9nZW5lcmljLWhkbGMudHh0CkBAIC0wLDAgKzEsMTMyIEBACitHZW5lcmljIEhETEMgbGF5ZXIKK0tyenlzenRvZiBIYWxhc2EgPGtoY0BwbS53YXcucGw+CisKKworR2VuZXJpYyBIRExDIGxheWVyIGN1cnJlbnRseSBzdXBwb3J0czoKKzEuIEZyYW1lIFJlbGF5IChBTlNJLCBDQ0lUVCwgQ2lzY28gYW5kIG5vIExNSSkKKyAgIC0gTm9ybWFsIChyb3V0ZWQpIGFuZCBFdGhlcm5ldC1icmlkZ2VkIChFdGhlcm5ldCBkZXZpY2UgZW11bGF0aW9uKQorICAgICBpbnRlcmZhY2VzIGNhbiBzaGFyZSBhIHNpbmdsZSBQVkMuCisgICAtIEFSUCBzdXBwb3J0IChubyBJbkFSUCBzdXBwb3J0IGluIHRoZSBrZXJuZWwgLSB0aGVyZSBpcyBhbgorICAgICBleHBlcmltZW50YWwgSW5BUlAgdXNlci1zcGFjZSBkYWVtb24gYXZhaWxhYmxlIG9uOgorICAgICBodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL25ldC9oZGxjLykuCisyLiByYXcgSERMQyAtIGVpdGhlciBJUCAoSVB2NCkgaW50ZXJmYWNlIG9yIEV0aGVybmV0IGRldmljZSBlbXVsYXRpb24KKzMuIENpc2NvIEhETEMKKzQuIFBQUAorNS4gWC4yNSAodXNlcyBYLjI1IHJvdXRpbmVzKS4KKworR2VuZXJpYyBIRExDIGlzIGEgcHJvdG9jb2wgZHJpdmVyIG9ubHkgLSBpdCBuZWVkcyBhIGxvdy1sZXZlbCBkcml2ZXIKK2ZvciB5b3VyIHBhcnRpY3VsYXIgaGFyZHdhcmUuCisKK0V0aGVybmV0IGRldmljZSBlbXVsYXRpb24gKHVzaW5nIEhETEMgb3IgRnJhbWUtUmVsYXkgUFZDKSBpcyBjb21wYXRpYmxlCit3aXRoIElFRUUgODAyLjFRIChWTEFOcykgYW5kIDgwMi4xRCAoRXRoZXJuZXQgYnJpZGdpbmcpLgorCisKK01ha2Ugc3VyZSB0aGUgaGRsYy5vIGFuZCB0aGUgaGFyZHdhcmUgZHJpdmVyIGFyZSBsb2FkZWQuIEl0IHNob3VsZAorY3JlYXRlIGEgbnVtYmVyIG9mICJoZGxjIiAoaGRsYzAgZXRjKSBuZXR3b3JrIGRldmljZXMsIG9uZSBmb3IgZWFjaAorV0FOIHBvcnQuIFlvdSdsbCBuZWVkIHRoZSAic2V0aGRsYyIgdXRpbGl0eSwgZ2V0IGl0IGZyb206CisJaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9uZXQvaGRsYy8KKworQ29tcGlsZSBzZXRoZGxjLmMgdXRpbGl0eToKKwlnY2MgLU8yIC1XYWxsIC1vIHNldGhkbGMgc2V0aGRsYy5jCitNYWtlIHN1cmUgeW91J3JlIHVzaW5nIGEgY29ycmVjdCB2ZXJzaW9uIG9mIHNldGhkbGMgZm9yIHlvdXIga2VybmVsLgorCitVc2Ugc2V0aGRsYyB0byBzZXQgcGh5c2ljYWwgaW50ZXJmYWNlLCBjbG9jayByYXRlLCBIRExDIG1vZGUgdXNlZCwKK2FuZCBhZGQgYW55IHJlcXVpcmVkIFBWQ3MgaWYgdXNpbmcgRnJhbWUgUmVsYXkuCitVc3VhbGx5IHlvdSB3YW50IHNvbWV0aGluZyBsaWtlOgorCisJc2V0aGRsYyBoZGxjMCBjbG9jayBpbnQgcmF0ZSAxMjgwMDAKKwlzZXRoZGxjIGhkbGMwIGNpc2NvIGludGVydmFsIDEwIHRpbWVvdXQgMjUKK29yCisJc2V0aGRsYyBoZGxjMCByczIzMiBjbG9jayBleHQKKwlzZXRoZGxjIGhkbGMwIGZyIGxtaSBhbnNpCisJc2V0aGRsYyBoZGxjMCBjcmVhdGUgOTkKKwlpZmNvbmZpZyBoZGxjMCB1cAorCWlmY29uZmlnIHB2YzAgbG9jYWxJUCBwb2ludG9wb2ludCByZW1vdGVJUAorCitJbiBGcmFtZSBSZWxheSBtb2RlLCBpZmNvbmZpZyBtYXN0ZXIgaGRsYyBkZXZpY2UgdXAgKHdpdGhvdXQgYXNzaWduaW5nCithbnkgSVAgYWRkcmVzcyB0byBpdCkgYmVmb3JlIHVzaW5nIHB2YyBkZXZpY2VzLgorCisKK1NldHRpbmcgaW50ZXJmYWNlOgorCisqIHYzNSB8IHJzMjMyIHwgeDIxIHwgdDEgfCBlMSAtIHNldHMgcGh5c2ljYWwgaW50ZXJmYWNlIGZvciBhIGdpdmVuIHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIGNhcmQgaGFzIHNvZnR3YXJlLXNlbGVjdGFibGUgaW50ZXJmYWNlcworICBsb29wYmFjayAtIGFjdGl2YXRlIGhhcmR3YXJlIGxvb3BiYWNrIChmb3IgdGVzdGluZyBvbmx5KQorKiBjbG9jayBleHQgLSBib3RoIFJYIGNsb2NrIGFuZCBUWCBjbG9jayBleHRlcm5hbAorKiBjbG9jayBpbnQgLSBib3RoIFJYIGNsb2NrIGFuZCBUWCBjbG9jayBpbnRlcm5hbAorKiBjbG9jayB0eGludCAtIFJYIGNsb2NrIGV4dGVybmFsLCBUWCBjbG9jayBpbnRlcm5hbAorKiBjbG9jayB0eGZyb21yeCAtIFJYIGNsb2NrIGV4dGVybmFsLCBUWCBjbG9jayBkZXJpdmVkIGZyb20gUlggY2xvY2sKKyogcmF0ZSAtIHNldHMgY2xvY2sgcmF0ZSBpbiBicHMgKGZvciAiaW50IiBvciAidHhpbnQiIGNsb2NrIG9ubHkpCisKKworU2V0dGluZyBwcm90b2NvbDoKKworKiBoZGxjIC0gc2V0cyByYXcgSERMQyAoSVAtb25seSkgbW9kZQorICBucnogLyBucnppIC8gZm0tbWFyayAvIGZtLXNwYWNlIC8gbWFuY2hlc3RlciAtIHNldHMgdHJhbnNtaXNzaW9uIGNvZGUKKyAgbm8tcGFyaXR5IC8gY3JjMTYgLyBjcmMxNi1wcjAgKENSQzE2IHdpdGggcHJlc2V0IHplcm9zKSAvIGNyYzMyLWl0dQorICBjcmMxNi1pdHUgKENSQzE2IHdpdGggSVRVLVQgcG9seW5vbWlhbCkgLyBjcmMxNi1pdHUtcHIwIC0gc2V0cyBwYXJpdHkKKworKiBoZGxjLWV0aCAtIEV0aGVybmV0IGRldmljZSBlbXVsYXRpb24gdXNpbmcgSERMQy4gUGFyaXR5IGFuZCBlbmNvZGluZworICBhcyBhYm92ZS4KKworKiBjaXNjbyAtIHNldHMgQ2lzY28gSERMQyBtb2RlIChJUCwgSVB2NiBhbmQgSVBYIHN1cHBvcnRlZCkKKyAgaW50ZXJ2YWwgLSB0aW1lIGluIHNlY29uZHMgYmV0d2VlbiBrZWVwYWxpdmUgcGFja2V0cworICB0aW1lb3V0IC0gdGltZSBpbiBzZWNvbmRzIGFmdGVyIGxhc3QgcmVjZWl2ZWQga2VlcGFsaXZlIHBhY2tldCBiZWZvcmUKKyAgICAgICAgICAgIHdlIGFzc3VtZSB0aGUgbGluayBpcyBkb3duCisKKyogcHBwIC0gc2V0cyBzeW5jaHJvbm91cyBQUFAgbW9kZQorCisqIHgyNSAtIHNldHMgWC4yNSBtb2RlCisKKyogZnIgLSBGcmFtZSBSZWxheSBtb2RlCisgIGxtaSBhbnNpIC8gY2NpdHQgLyBjaXNjbyAvIG5vbmUgLSBMTUkgKGxpbmsgbWFuYWdlbWVudCkgdHlwZQorICBkY2UgLSBGcmFtZSBSZWxheSBEQ0UgKG5ldHdvcmspIHNpZGUgTE1JIGluc3RlYWQgb2YgZGVmYXVsdCBEVEUgKHVzZXIpLgorICBJdCBoYXMgbm90aGluZyB0byBkbyB3aXRoIGNsb2NrcyEKKyAgdDM5MSAtIGxpbmsgaW50ZWdyaXR5IHZlcmlmaWNhdGlvbiBwb2xsaW5nIHRpbWVyIChpbiBzZWNvbmRzKSAtIHVzZXIKKyAgdDM5MiAtIHBvbGxpbmcgdmVyaWZpY2F0aW9uIHRpbWVyIChpbiBzZWNvbmRzKSAtIG5ldHdvcmsKKyAgbjM5MSAtIGZ1bGwgc3RhdHVzIHBvbGxpbmcgY291bnRlciAtIHVzZXIKKyAgbjM5MiAtIGVycm9yIHRocmVzaG9sZCAtIGJvdGggdXNlciBhbmQgbmV0d29yaworICBuMzkzIC0gbW9uaXRvcmVkIGV2ZW50cyBjb3VudCAtIGJvdGggdXNlciBhbmQgbmV0d29yaworCitGcmFtZS1SZWxheSBvbmx5OgorKiBjcmVhdGUgbiB8IGRlbGV0ZSBuIC0gYWRkcyAvIGRlbGV0ZXMgUFZDIGludGVyZmFjZSB3aXRoIERMQ0kgI24uCisgIE5ld2x5IGNyZWF0ZWQgaW50ZXJmYWNlIHdpbGwgYmUgbmFtZWQgcHZjMCwgcHZjMSBldGMuCisKKyogY3JlYXRlIGV0aGVyIG4gfCBkZWxldGUgZXRoZXIgbiAtIGFkZHMgYSBkZXZpY2UgZm9yIEV0aGVybmV0LWJyaWRnZWQKKyAgZnJhbWVzLiBUaGUgZGV2aWNlIHdpbGwgYmUgbmFtZWQgcHZjZXRoMCwgcHZjZXRoMSBldGMuCisKKworCisKK0JvYXJkLXNwZWNpZmljIGlzc3VlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK24yLm8gYW5kIGMxMDEubyBuZWVkIHBhcmFtZXRlcnMgdG8gd29yazoKKworCWluc21vZCBuMiBodz1pbyxpcnEscmFtLHBvcnRzWzppbyxpcnEsLi4uXQorZXhhbXBsZToKKwlpbnNtb2QgbjIgaHc9MHgzMDAsMTAsMHhEMDAwMCwwMQorCitvcgorCWluc21vZCBjMTAxIGh3PWlycSxyYW1bOmlycSwuLi5dCitleGFtcGxlOgorCWluc21vZCBjMTAxIGh3PTksMHhkYzAwMAorCitJZiBidWlsdCBpbnRvIHRoZSBrZXJuZWwsIHRoZXNlIGRyaXZlcnMgbmVlZCBrZXJuZWwgKGNvbW1hbmQgbGluZSkgcGFyYW1ldGVyczoKKwluMi5odz1pbyxpcnEscmFtLHBvcnRzOi4uLgorb3IKKwljMTAxLmh3PWlycSxyYW06Li4uCisKKworCitJZiB5b3UgaGF2ZSBhIHByb2JsZW0gd2l0aCBOMiwgQzEwMSBvciBQTFgyMDBTWU4gY2FyZCwgeW91IGNhbiBpc3N1ZSB0aGUKKyJwcml2YXRlIiBjb21tYW5kIHRvIHNlZSBwb3J0J3MgcGFja2V0IGRlc2NyaXB0b3IgcmluZ3MgKGluIGtlcm5lbCBsb2dzKToKKworCXNldGhkbGMgaGRsYzAgcHJpdmF0ZQorCitUaGUgaGFyZHdhcmUgZHJpdmVyIGhhcyB0byBiZSBidWlsZCB3aXRoICNkZWZpbmUgREVCVUdfUklOR1MuCitBdHRhY2hpbmcgdGhpcyBpbmZvIHRvIGJ1ZyByZXBvcnRzIHdvdWxkIGJlIGhlbHBmdWwuIEFueXdheSwgbGV0IG1lIGtub3cKK2lmIHlvdSBoYXZlIHByb2JsZW1zIHVzaW5nIHRoaXMuCisKK0ZvciBwYXRjaGVzIGFuZCBvdGhlciBpbmZvIGxvb2sgYXQ6Cis8aHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9uZXQvaGRsYy8+LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2dlbmVyaWNfbmV0bGluay50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZ2VuZXJpY19uZXRsaW5rLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTA3MTExCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2dlbmVyaWNfbmV0bGluay50eHQKQEAgLTAsMCArMSwzIEBACitBIHdpa2kgZG9jdW1lbnQgb24gaG93IHRvIHVzZSBHZW5lcmljIE5ldGxpbmsgY2FuIGJlIGZvdW5kIGhlcmU6CisKKyAqIGh0dHA6Ly93d3cubGludXhmb3VuZGF0aW9uLm9yZy9jb2xsYWJvcmF0ZS93b3JrZ3JvdXBzL25ldHdvcmtpbmcvZ2VuZXJpY19uZXRsaW5rX2hvd3RvCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZ2lhbmZhci50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZ2lhbmZhci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmExZGFlYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9naWFuZmFyLnR4dApAQCAtMCwwICsxLDQyIEBACitUaGUgR2lhbmZhciBFdGhlcm5ldCBEcml2ZXIKKworQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+CitVcGRhdGVkOiAyMDA1LTA3LTI4CisKKworQ0hFQ0tTVU0gT0ZGTE9BRElORworCitUaGUgZVRTRUMgY29udHJvbGxlciAoZmlyc3QgaW5jbHVkZWQgaW4gcGFydHMgZnJvbSBsYXRlIDIwMDUgbGlrZQordGhlIDg1NDgpIGhhcyB0aGUgYWJpbGl0eSB0byBwZXJmb3JtIFRDUCwgVURQLCBhbmQgSVAgY2hlY2tzdW1zCitpbiBoYXJkd2FyZS4gIFRoZSBMaW51eCBrZXJuZWwgb25seSBvZmZsb2FkcyB0aGUgVENQIGFuZCBVRFAKK2NoZWNrc3VtcyAoYW5kIGFsd2F5cyBwZXJmb3JtcyB0aGUgcHNldWRvIGhlYWRlciBjaGVja3N1bXMpLCBzbwordGhlIGRyaXZlciBvbmx5IHN1cHBvcnRzIGNoZWNrc3VtbWluZyBmb3IgVENQL0lQIGFuZCBVRFAvSVAKK3BhY2tldHMuICBVc2UgZXRodG9vbCB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGlzIGZlYXR1cmUgZm9yIFJYCithbmQgVFguCisKK1ZMQU4KKworSW4gb3JkZXIgdG8gdXNlIFZMQU4sIHBsZWFzZSBjb25zdWx0IExpbnV4IGRvY3VtZW50YXRpb24gb24KK2NvbmZpZ3VyaW5nIFZMQU5zLiAgVGhlIGdpYW5mYXIgZHJpdmVyIHN1cHBvcnRzIGhhcmR3YXJlIGluc2VydGlvbiBhbmQKK2V4dHJhY3Rpb24gb2YgVkxBTiBoZWFkZXJzLCBidXQgbm90IGZpbHRlcmluZy4gIEZpbHRlcmluZyB3aWxsIGJlCitkb25lIGJ5IHRoZSBrZXJuZWwuCisKK01VTFRJQ0FTVElORworCitUaGUgZ2lhbmZhciBkcml2ZXIgc3VwcG9ydHMgdXNpbmcgdGhlIGdyb3VwIGhhc2ggdGFibGUgb24gdGhlCitUU0VDIChhbmQgdGhlIGV4dGVuZGVkIGhhc2ggdGFibGUgb24gdGhlIGVUU0VDKSBmb3IgbXVsdGljYXN0CitmaWx0ZXJpbmcuICBPbiB0aGUgZVRTRUMsIHRoZSBleGFjdC1tYXRjaCBNQUMgcmVnaXN0ZXJzIGFyZSB1c2VkCitiZWZvcmUgdGhlIGhhc2ggdGFibGVzLiAgU2VlIExpbnV4IGRvY3VtZW50YXRpb24gb24gaG93IHRvIGpvaW4KK211bHRpY2FzdCBncm91cHMuCisKK1BBRERJTkcKKworVGhlIGdpYW5mYXIgZHJpdmVyIHN1cHBvcnRzIHBhZGRpbmcgcmVjZWl2ZWQgZnJhbWVzIHdpdGggMiBieXRlcwordG8gYWxpZ24gdGhlIElQIGhlYWRlciB0byBhIDE2LWJ5dGUgYm91bmRhcnksIHdoZW4gc3VwcG9ydGVkIGJ5CitoYXJkd2FyZS4KKworRVRIVE9PTAorCitUaGUgZ2lhbmZhciBkcml2ZXIgc3VwcG9ydHMgdGhlIHVzZSBvZiBldGh0b29sIGZvciBtYW55Citjb25maWd1cmF0aW9uIG9wdGlvbnMuICBZb3UgbXVzdCBydW4gZXRodG9vbCBvbmx5IG9uIGN1cnJlbnRseQorb3BlbiBpbnRlcmZhY2VzLiAgU2VlIGV0aHRvb2wgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pNDBlLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pNDBlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjUxYmY0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2k0MGUudHh0CkBAIC0wLDAgKzEsMTE4IEBACitMaW51eCBCYXNlIERyaXZlciBmb3IgdGhlIEludGVsKFIpIEV0aGVybmV0IENvbnRyb2xsZXIgWEw3MTAgRmFtaWx5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ludGVsIGk0MGUgTGludXggZHJpdmVyLgorQ29weXJpZ2h0KGMpIDIwMTMgSW50ZWwgQ29ycG9yYXRpb24uCisKK0NvbnRlbnRzCis9PT09PT09PQorCistIElkZW50aWZ5aW5nIFlvdXIgQWRhcHRlcgorLSBBZGRpdGlvbmFsIENvbmZpZ3VyYXRpb25zCistIFBlcmZvcm1hbmNlIFR1bmluZworLSBLbm93biBJc3N1ZXMKKy0gU3VwcG9ydAorCisKK0lkZW50aWZ5aW5nIFlvdXIgQWRhcHRlcgorPT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBkcml2ZXIgaW4gdGhpcyByZWxlYXNlIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgSW50ZWwgRXRoZXJuZXQKK0NvbnRyb2xsZXIgWEw3MTAgRmFtaWx5LgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gaWRlbnRpZnkgeW91ciBhZGFwdGVyLCBnbyB0byB0aGUgQWRhcHRlciAmCitEcml2ZXIgSUQgR3VpZGUgYXQ6CisKKyAgICBodHRwOi8vc3VwcG9ydC5pbnRlbC5jb20vc3VwcG9ydC9uZXR3b3JrL3NiL0NTLTAxMjkwNC5odG0KKworCitFbmFibGluZyB0aGUgZHJpdmVyCis9PT09PT09PT09PT09PT09PT09CisKK1RoZSBkcml2ZXIgaXMgZW5hYmxlZCB2aWEgdGhlIHN0YW5kYXJkIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5c3RlbSwKK3VzaW5nIHRoZSBtYWtlIGNvbW1hbmQ6CisKKyAgICAgTWFrZSBvbGRjb25maWcvc2lsZW50b2xkY29uZmlnL21lbnVjb25maWcvZXRjLgorCitUaGUgZHJpdmVyIGlzIGxvY2F0ZWQgaW4gdGhlIG1lbnUgc3RydWN0dXJlIGF0OgorCisJLT4gRGV2aWNlIERyaXZlcnMKKwkgIC0+IE5ldHdvcmsgZGV2aWNlIHN1cHBvcnQgKE5FVERFVklDRVMgWz15XSkKKwkgICAgLT4gRXRoZXJuZXQgZHJpdmVyIHN1cHBvcnQKKwkgICAgICAtPiBJbnRlbCBkZXZpY2VzCisJICAgICAgICAtPiBJbnRlbChSKSBFdGhlcm5ldCBDb250cm9sbGVyIFhMNzEwIEZhbWlseQorCitBZGRpdGlvbmFsIENvbmZpZ3VyYXRpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgR2VuZXJpYyBSZWNlaXZlIE9mZmxvYWQgKEdSTykKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgVGhlIGRyaXZlciBzdXBwb3J0cyB0aGUgaW4ta2VybmVsIHNvZnR3YXJlIGltcGxlbWVudGF0aW9uIG9mIEdSTy4gIEdSTyBoYXMKKyAgc2hvd24gdGhhdCBieSBjb2FsZXNjaW5nIFJ4IHRyYWZmaWMgaW50byBsYXJnZXIgY2h1bmtzIG9mIGRhdGEsIENQVQorICB1dGlsaXphdGlvbiBjYW4gYmUgc2lnbmlmaWNhbnRseSByZWR1Y2VkIHdoZW4gdW5kZXIgbGFyZ2UgUnggbG9hZC4gIEdSTyBpcworICBhbiBldm9sdXRpb24gb2YgdGhlIHByZXZpb3VzbHktdXNlZCBMUk8gaW50ZXJmYWNlLiAgR1JPIGlzIGFibGUgdG8gY29hbGVzY2UKKyAgb3RoZXIgcHJvdG9jb2xzIGJlc2lkZXMgVENQLiAgSXQncyBhbHNvIHNhZmUgdG8gdXNlIHdpdGggY29uZmlndXJhdGlvbnMgdGhhdAorICBhcmUgcHJvYmxlbWF0aWMgZm9yIExSTywgbmFtZWx5IGJyaWRnaW5nIGFuZCBpU0NTSS4KKworICBFdGh0b29sCisgIC0tLS0tLS0KKyAgVGhlIGRyaXZlciB1dGlsaXplcyB0aGUgZXRodG9vbCBpbnRlcmZhY2UgZm9yIGRyaXZlciBjb25maWd1cmF0aW9uIGFuZAorICBkaWFnbm9zdGljcywgYXMgd2VsbCBhcyBkaXNwbGF5aW5nIHN0YXRpc3RpY2FsIGluZm9ybWF0aW9uLiBUaGUgbGF0ZXN0CisgIGV0aHRvb2wgdmVyc2lvbiBpcyByZXF1aXJlZCBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LgorCisgIFRoZSBsYXRlc3QgcmVsZWFzZSBvZiBldGh0b29sIGNhbiBiZSBmb3VuZCBmcm9tCisgIGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbAorCisgIERhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIERDQiBjb25maWd1cmF0aW9uIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLgorCisgIEZDb0UKKyAgLS0tLQorICBUaGUgZHJpdmVyIHN1cHBvcnRzIEZpYmVyIENoYW5uZWwgb3ZlciBFdGhlcm5ldCAoRkNvRSkgYW5kIERhdGEgQ2VudGVyCisgIEJyaWRnaW5nIChEQ0IpIGZ1bmN0aW9uYWxpdHkuIENvbmZpZ3VyaW5nIERDQiBhbmQgRkNvRSBpcyBvdXRzaWRlIHRoZSBzY29wZQorICBvZiB0aGlzIGRyaXZlciBkb2MuIFJlZmVyIHRvIGh0dHA6Ly93d3cub3Blbi1mY29lLm9yZy8gZm9yIEZDb0UgcHJvamVjdAorICBpbmZvcm1hdGlvbiBhbmQgaHR0cDovL3d3dy5vcGVuLWxsZHAub3JnLyBvciBlbWFpbCBsaXN0CisgIGUxMDAwLWVlZGNAbGlzdHMuc291cmNlZm9yZ2UubmV0IGZvciBEQ0IgaW5mb3JtYXRpb24uCisKKyAgTUFDIGFuZCBWTEFOIGFudGktc3Bvb2ZpbmcgZmVhdHVyZQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFdoZW4gYSBtYWxpY2lvdXMgZHJpdmVyIGF0dGVtcHRzIHRvIHNlbmQgYSBzcG9vZmVkIHBhY2tldCwgaXQgaXMgZHJvcHBlZCBieQorICB0aGUgaGFyZHdhcmUgYW5kIG5vdCB0cmFuc21pdHRlZC4gIEFuIGludGVycnVwdCBpcyBzZW50IHRvIHRoZSBQRiBkcml2ZXIKKyAgbm90aWZ5aW5nIGl0IG9mIHRoZSBzcG9vZiBhdHRlbXB0LgorCisgIFdoZW4gYSBzcG9vZmVkIHBhY2tldCBpcyBkZXRlY3RlZCB0aGUgUEYgZHJpdmVyIHdpbGwgc2VuZCB0aGUgZm9sbG93aW5nCisgIG1lc3NhZ2UgdG8gdGhlIHN5c3RlbSBsb2cgKGRpc3BsYXllZCBieSAgdGhlICJkbWVzZyIgY29tbWFuZCk6CisKKyAgU3Bvb2YgZXZlbnQocykgZGV0ZWN0ZWQgb24gVkYgKG4pCisKKyAgV2hlcmUgbj10aGUgVkYgdGhhdCBhdHRlbXB0ZWQgdG8gZG8gdGhlIHNwb29maW5nLgorCisKK1BlcmZvcm1hbmNlIFR1bmluZworPT09PT09PT09PT09PT09PT09CisKK0FuIGV4Y2VsbGVudCBhcnRpY2xlIG9uIHBlcmZvcm1hbmNlIHR1bmluZyBjYW4gYmUgZm91bmQgYXQ6CisKK2h0dHA6Ly93d3cucmVkaGF0LmNvbS9wcm9tby9zdW1taXQvMjAwOC9kb3dubG9hZHMvcGRmL1RodXJzZGF5L01hcmtfV2FnbmVyLnBkZgorCisKK0tub3duIElzc3VlcworPT09PT09PT09PT09CisKKworU3VwcG9ydAorPT09PT09PQorCitGb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiwgZ28gdG8gdGhlIEludGVsIHN1cHBvcnQgd2Vic2l0ZSBhdDoKKworICAgIGh0dHA6Ly9zdXBwb3J0LmludGVsLmNvbQorCitvciB0aGUgSW50ZWwgV2lyZWQgTmV0d29ya2luZyBwcm9qZWN0IGhvc3RlZCBieSBTb3VyY2Vmb3JnZSBhdDoKKworICAgIGh0dHA6Ly9lMTAwMC5zb3VyY2Vmb3JnZS5uZXQKKworSWYgYW4gaXNzdWUgaXMgaWRlbnRpZmllZCB3aXRoIHRoZSByZWxlYXNlZCBzb3VyY2UgY29kZSBvbiB0aGUgc3VwcG9ydGVkCitrZXJuZWwgd2l0aCBhIHN1cHBvcnRlZCBhZGFwdGVyLCBlbWFpbCB0aGUgc3BlY2lmaWMgaW5mb3JtYXRpb24gcmVsYXRlZAordG8gdGhlIGlzc3VlIHRvIGUxMDAwLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldCBhbmQgY29weQorbmV0ZGV2QHZnZXIua2VybmVsLm9yZy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pNDBldmYudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2k0MGV2Zi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFlNDEyNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pNDBldmYudHh0CkBAIC0wLDAgKzEsNDcgQEAKK0xpbnV4KiBCYXNlIERyaXZlciBmb3IgSW50ZWwoUikgTmV0d29yayBDb25uZWN0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbnRlbCBYTDcxMCBYNzEwIFZpcnR1YWwgRnVuY3Rpb24gTGludXggZHJpdmVyLgorQ29weXJpZ2h0KGMpIDIwMTMgSW50ZWwgQ29ycG9yYXRpb24uCisKK0NvbnRlbnRzCis9PT09PT09PQorCistIElkZW50aWZ5aW5nIFlvdXIgQWRhcHRlcgorLSBLbm93biBJc3N1ZXMvVHJvdWJsZXNob290aW5nCistIFN1cHBvcnQKKworVGhpcyBmaWxlIGRlc2NyaWJlcyB0aGUgaTQwZXZmIExpbnV4KiBCYXNlIERyaXZlciBmb3IgdGhlIEludGVsKFIpIFhMNzEwCitYNzEwIFZpcnR1YWwgRnVuY3Rpb24uCisKK1RoZSBpNDBldmYgZHJpdmVyIHN1cHBvcnRzIFhMNzEwIGFuZCBYNzEwIHZpcnR1YWwgZnVuY3Rpb24gZGV2aWNlcyB0aGF0CitjYW4gb25seSBiZSBhY3RpdmF0ZWQgb24ga2VybmVscyB3aXRoIENPTkZJR19QQ0lfSU9WIGVuYWJsZWQuCisKK1RoZSBndWVzdCBPUyBsb2FkaW5nIHRoZSBpNDBldmYgZHJpdmVyIG11c3Qgc3VwcG9ydCBNU0ktWCBpbnRlcnJ1cHRzLgorCitJZGVudGlmeWluZyBZb3VyIEFkYXB0ZXIKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gaWRlbnRpZnkgeW91ciBhZGFwdGVyLCBnbyB0byB0aGUgQWRhcHRlciAmCitEcml2ZXIgSUQgR3VpZGUgYXQ6CisKKyAgICBodHRwOi8vc3VwcG9ydC5pbnRlbC5jb20vc3VwcG9ydC9nby9uZXR3b3JrL2FkYXB0ZXIvaWRndWlkZS5odG0KKworS25vd24gSXNzdWVzL1Ryb3VibGVzaG9vdGluZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKK1N1cHBvcnQKKz09PT09PT0KKworRm9yIGdlbmVyYWwgaW5mb3JtYXRpb24sIGdvIHRvIHRoZSBJbnRlbCBzdXBwb3J0IHdlYnNpdGUgYXQ6CisKKyAgICBodHRwOi8vc3VwcG9ydC5pbnRlbC5jb20KKworb3IgdGhlIEludGVsIFdpcmVkIE5ldHdvcmtpbmcgcHJvamVjdCBob3N0ZWQgYnkgU291cmNlZm9yZ2UgYXQ6CisKKyAgICBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2UxMDAwCisKK0lmIGFuIGlzc3VlIGlzIGlkZW50aWZpZWQgd2l0aCB0aGUgcmVsZWFzZWQgc291cmNlIGNvZGUgb24gdGhlIHN1cHBvcnRlZAora2VybmVsIHdpdGggYSBzdXBwb3J0ZWQgYWRhcHRlciwgZW1haWwgdGhlIHNwZWNpZmljIGluZm9ybWF0aW9uIHJlbGF0ZWQKK3RvIHRoZSBpc3N1ZSB0byBlMTAwMC1kZXZlbEBsaXN0cy5zZi5uZXQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pZWVlODAyMTU0LnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pZWVlODAyMTU0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTY5Y2NjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2llZWU4MDIxNTQudHh0CkBAIC0wLDAgKzEsMTQxIEBACisKKwkJTGludXggSUVFRSA4MDIuMTUuNCBpbXBsZW1lbnRhdGlvbgorCisKK0ludHJvZHVjdGlvbgorPT09PT09PT09PT09CitUaGUgSUVFRSA4MDIuMTUuNCB3b3JraW5nIGdyb3VwIGZvY3VzZXMgb24gc3RhbmRhcmRpemF0aW9uIG9mIGJvdHRvbQordHdvIGxheWVyczogTWVkaXVtIEFjY2VzcyBDb250cm9sIChNQUMpIGFuZCBQaHlzaWNhbCAoUEhZKS4gQW5kIHRoZXJlCithcmUgbWFpbmx5IHR3byBvcHRpb25zIGF2YWlsYWJsZSBmb3IgdXBwZXIgbGF5ZXJzOgorIC0gWmlnQmVlIC0gcHJvcHJpZXRhcnkgcHJvdG9jb2wgZnJvbSB0aGUgWmlnQmVlIEFsbGlhbmNlCisgLSA2TG9XUEFOIC0gSVB2NiBuZXR3b3JraW5nIG92ZXIgbG93IHJhdGUgcGVyc29uYWwgYXJlYSBuZXR3b3JrcworCitUaGUgbGludXgtd3BhbiBwcm9qZWN0IGdvYWwgaXMgdG8gcHJvdmlkZSBhIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uCitvZiB0aGUgSUVFRSA4MDIuMTUuNCBhbmQgNkxvV1BBTiBwcm90b2NvbHMuIElFRUUgODAyLjE1LjQgaXMgYSBzdGFjaworb2YgcHJvdG9jb2xzIGZvciBvcmdhbml6aW5nIExvdy1SYXRlIFdpcmVsZXNzIFBlcnNvbmFsIEFyZWEgTmV0d29ya3MuCisKK1RoZSBzdGFjayBpcyBjb21wb3NlZCBvZiB0aHJlZSBtYWluIHBhcnRzOgorIC0gSUVFRSA4MDIuMTUuNCBsYXllcjsgIFdlIGhhdmUgY2hvc2VuIHRvIHVzZSBwbGFpbiBCZXJrZWxleSBzb2NrZXQgQVBJLAorICAgdGhlIGdlbmVyaWMgTGludXggbmV0d29ya2luZyBzdGFjayB0byB0cmFuc2ZlciBJRUVFIDgwMi4xNS40IG1lc3NhZ2VzCisgICBhbmQgYSBzcGVjaWFsIHByb3RvY29sIG92ZXIgZ2VuZXRsaW5rIGZvciBjb25maWd1cmF0aW9uL21hbmFnZW1lbnQKKyAtIE1BQyAtIHByb3ZpZGVzIGFjY2VzcyB0byBzaGFyZWQgY2hhbm5lbCBhbmQgcmVsaWFibGUgZGF0YSBkZWxpdmVyeQorIC0gUEhZIC0gcmVwcmVzZW50cyBkZXZpY2UgZHJpdmVycworCisKK1NvY2tldCBBUEkKKz09PT09PT09PT0KKworaW50IHNkID0gc29ja2V0KFBGX0lFRUU4MDIxNTQsIFNPQ0tfREdSQU0sIDApOworLi4uLi4KKworVGhlIGFkZHJlc3MgZmFtaWx5LCBzb2NrZXQgYWRkcmVzc2VzIGV0Yy4gYXJlIGRlZmluZWQgaW4gdGhlCitpbmNsdWRlL25ldC9hZl9pZWVlODAyMTU0LmggaGVhZGVyIG9yIGluIHRoZSBzcGVjaWFsIGhlYWRlcgoraW4gdGhlIHVzZXJzcGFjZSBwYWNrYWdlIChzZWUgZWl0aGVyIGh0dHA6Ly93cGFuLmNha2VsYWIub3JnLyBvciB0aGUKK2dpdCB0cmVlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9saW51eC13cGFuL3dwYW4tdG9vbHMpLgorCitPbmUgY2FuIHVzZSBTT0NLX1JBVyBmb3IgcGFzc2luZyByYXcgZGF0YSB0b3dhcmRzIGRldmljZSB4bWl0IGZ1bmN0aW9uLiBZTU1WLgorCisKK0tlcm5lbCBzaWRlCis9PT09PT09PT09PT09CisKK0xpa2Ugd2l0aCBXaUZpLCB0aGVyZSBhcmUgc2V2ZXJhbCB0eXBlcyBvZiBkZXZpY2VzIGltcGxlbWVudGluZyBJRUVFIDgwMi4xNS40LgorMSkgJ0hhcmRNQUMnLiBUaGUgTUFDIGxheWVyIGlzIGltcGxlbWVudGVkIGluIHRoZSBkZXZpY2UgaXRzZWxmLCB0aGUgZGV2aWNlCisgICBleHBvcnRzIE1MTUUgYW5kIGRhdGEgQVBJLgorMikgJ1NvZnRNQUMnIG9yIGp1c3QgcmFkaW8uIFRoZXNlIHR5cGVzIG9mIGRldmljZXMgYXJlIGp1c3QgcmFkaW8gdHJhbnNjZWl2ZXJzCisgICBwb3NzaWJseSB3aXRoIHNvbWUga2luZHMgb2YgYWNjZWxlcmF0aW9uIGxpa2UgYXV0b21hdGljIENSQyBjb21wdXRhdGlvbiBhbmQKKyAgIGNvbXBhcmF0aW9uLCBhdXRvbWFnaWMgQUNLIGhhbmRsaW5nLCBhZGRyZXNzIG1hdGNoaW5nLCBldGMuCisKK1Rob3NlIHR5cGVzIG9mIGRldmljZXMgcmVxdWlyZSBkaWZmZXJlbnQgYXBwcm9hY2ggdG8gYmUgaG9va2VkIGludG8gTGludXgga2VybmVsLgorCisKK0hhcmRNQUMKKz09PT09PT0KKworU2VlIHRoZSBoZWFkZXIgaW5jbHVkZS9uZXQvaWVlZTgwMjE1NF9uZXRkZXYuaC4gWW91IGhhdmUgdG8gaW1wbGVtZW50IExpbnV4CituZXRfZGV2aWNlLCB3aXRoIC50eXBlID0gQVJQSFJEX0lFRUU4MDIxNTQuIERhdGEgaXMgZXhjaGFuZ2VkIHdpdGggc29ja2V0IGZhbWlseQorY29kZSB2aWEgcGxhaW4gc2tfYnVmZnMuIE9uIHNrYiByZWNlcHRpb24gc2tiLT5jYiBtdXN0IGNvbnRhaW4gYWRkaXRpb25hbAoraW5mbyBhcyBkZXNjcmliZWQgaW4gdGhlIHN0cnVjdCBpZWVlODAyMTU0X21hY19jYi4gRHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24KK3RoZSBza2ItPmNiIGlzIHVzZWQgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIGRhdGEgdG8gZGV2aWNlJ3MgaGVhZGVyX29wcy0+Y3JlYXRlCitmdW5jdGlvbi4gQmUgYXdhcmUgdGhhdCB0aGlzIGRhdGEgY2FuIGJlIG92ZXJyaWRkZW4gbGF0ZXIgKHdoZW4gc29ja2V0IGNvZGUKK3N1Ym1pdHMgc2tiIHRvIHFkaXNjKSwgc28gaWYgeW91IG5lZWQgc29tZXRoaW5nIGZyb20gdGhhdCBjYiBsYXRlciwgeW91IHNob3VsZAorc3RvcmUgaW5mbyBpbiB0aGUgc2tiLT5kYXRhIG9uIHlvdXIgb3duLgorCitUbyBob29rIHRoZSBNTE1FIGludGVyZmFjZSB5b3UgaGF2ZSB0byBwb3B1bGF0ZSB0aGUgbWxfcHJpdiBmaWVsZCBvZiB5b3VyCituZXRfZGV2aWNlIHdpdGggYSBwb2ludGVyIHRvIHN0cnVjdCBpZWVlODAyMTU0X21sbWVfb3BzIGluc3RhbmNlLiBUaGUgZmllbGRzCithc3NvY19yZXEsIGFzc29jX3Jlc3AsIGRpc2Fzc29jX3JlcSwgc3RhcnRfcmVxLCBhbmQgc2Nhbl9yZXEgYXJlIG9wdGlvbmFsLgorQWxsIG90aGVyIGZpZWxkcyBhcmUgcmVxdWlyZWQuCisKKworU29mdE1BQworPT09PT09PQorCitUaGUgTUFDIGlzIHRoZSBtaWRkbGUgbGF5ZXIgaW4gdGhlIElFRUUgODAyLjE1LjQgTGludXggc3RhY2suIFRoaXMgbW9tZW50IGl0Citwcm92aWRlcyBpbnRlcmZhY2UgZm9yIGRyaXZlcnMgcmVnaXN0cmF0aW9uIGFuZCBtYW5hZ2VtZW50IG9mIHNsYXZlIGludGVyZmFjZXMuCisKK05PVEU6IEN1cnJlbnRseSB0aGUgb25seSBtb25pdG9yIGRldmljZSB0eXBlIGlzIHN1cHBvcnRlZCAtIGl0J3MgSUVFRSA4MDIuMTUuNAorc3RhY2sgaW50ZXJmYWNlIGZvciBuZXR3b3JrIHNuaWZmZXJzIChlLmcuIFdpcmVTaGFyaykuCisKK1RoaXMgbGF5ZXIgaXMgZ29pbmcgdG8gYmUgZXh0ZW5kZWQgc29vbi4KKworU2VlIGhlYWRlciBpbmNsdWRlL25ldC9tYWM4MDIxNTQuaCBhbmQgc2V2ZXJhbCBkcml2ZXJzIGluCitkcml2ZXJzL25ldC9pZWVlODAyMTU0Ly4KKworCitEZXZpY2UgZHJpdmVycyBBUEkKKz09PT09PT09PT09PT09PT09PQorCitUaGUgaW5jbHVkZS9uZXQvbWFjODAyMTU0LmggZGVmaW5lcyBmb2xsb3dpbmcgZnVuY3Rpb25zOgorIC0gc3RydWN0IGllZWU4MDIxNTRfZGV2ICppZWVlODAyMTU0X2FsbG9jX2RldmljZQorICAgKHNpemVfdCBwcml2X3NpemUsIHN0cnVjdCBpZWVlODAyMTU0X29wcyAqb3BzKToKKyAgIGFsbG9jYXRpb24gb2YgSUVFRSA4MDIuMTUuNCBjb21wYXRpYmxlIGRldmljZQorCisgLSB2b2lkIGllZWU4MDIxNTRfZnJlZV9kZXZpY2Uoc3RydWN0IGllZWU4MDIxNTRfZGV2ICpkZXYpOgorICAgZnJlZWluZyBhbGxvY2F0ZWQgZGV2aWNlCisKKyAtIGludCBpZWVlODAyMTU0X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgaWVlZTgwMjE1NF9kZXYgKmRldik6CisgICByZWdpc3RlciBQSFkgaW4gdGhlIHN5c3RlbQorCisgLSB2b2lkIGllZWU4MDIxNTRfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGllZWU4MDIxNTRfZGV2ICpkZXYpOgorICAgZnJlZWluZyByZWdpc3RlcmVkIFBIWQorCitNb3Jlb3ZlciBJRUVFIDgwMi4xNS40IGRldmljZSBvcGVyYXRpb25zIHN0cnVjdHVyZSBzaG91bGQgYmUgZmlsbGVkLgorCitGYWtlIGRyaXZlcnMKKz09PT09PT09PT09PQorCitJbiBhZGRpdGlvbiB0aGVyZSBpcyBhIGRyaXZlciBhdmFpbGFibGUgd2hpY2ggc2ltdWxhdGVzIGEgcmVhbCBkZXZpY2Ugd2l0aAorU29mdE1BQyAoZmFrZWxiIC0gSUVFRSA4MDIuMTUuNCBsb29wYmFjayBkcml2ZXIpIGludGVyZmFjZS4gVGhpcyBvcHRpb24KK3Byb3ZpZGVzIHBvc3NpYmlsaXR5IHRvIHRlc3QgYW5kIGRlYnVnIHN0YWNrIHdpdGhvdXQgdXNhZ2Ugb2YgcmVhbCBoYXJkd2FyZS4KKworU2VlIHNvdXJjZXMgaW4gZHJpdmVycy9uZXQvaWVlZTgwMjE1NCBmb2xkZXIgZm9yIG1vcmUgZGV0YWlscy4KKworCis2TG9XUEFOIExpbnV4IGltcGxlbWVudGF0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBJRUVFIDgwMi4xNS40IHN0YW5kYXJkIHNwZWNpZmllcyBhbiBNVFUgb2YgMTI3IGJ5dGVzLCB5aWVsZGluZyBhYm91dCA4MAorb2N0ZXRzIG9mIGFjdHVhbCBNQUMgcGF5bG9hZCBvbmNlIHNlY3VyaXR5IGlzIHR1cm5lZCBvbiwgb24gYSB3aXJlbGVzcyBsaW5rCit3aXRoIGEgbGluayB0aHJvdWdocHV0IG9mIDI1MCBrYnBzIG9yIGxlc3MuICBUaGUgNkxvV1BBTiBhZGFwdGF0aW9uIGZvcm1hdAorW1JGQzQ5NDRdIHdhcyBzcGVjaWZpZWQgdG8gY2FycnkgSVB2NiBkYXRhZ3JhbXMgb3ZlciBzdWNoIGNvbnN0cmFpbmVkIGxpbmtzLAordGFraW5nIGludG8gYWNjb3VudCBsaW1pdGVkIGJhbmR3aWR0aCwgbWVtb3J5LCBvciBlbmVyZ3kgcmVzb3VyY2VzIHRoYXQgYXJlCitleHBlY3RlZCBpbiBhcHBsaWNhdGlvbnMgc3VjaCBhcyB3aXJlbGVzcyBTZW5zb3IgTmV0d29ya3MuICBbUkZDNDk0NF0gZGVmaW5lcworYSBNZXNoIEFkZHJlc3NpbmcgaGVhZGVyIHRvIHN1cHBvcnQgc3ViLUlQIGZvcndhcmRpbmcsIGEgRnJhZ21lbnRhdGlvbiBoZWFkZXIKK3RvIHN1cHBvcnQgdGhlIElQdjYgbWluaW11bSBNVFUgcmVxdWlyZW1lbnQgW1JGQzI0NjBdLCBhbmQgc3RhdGVsZXNzIGhlYWRlcgorY29tcHJlc3Npb24gZm9yIElQdjYgZGF0YWdyYW1zIChMT1dQQU5fSEMxIGFuZCBMT1dQQU5fSEMyKSB0byByZWR1Y2UgdGhlCityZWxhdGl2ZWx5IGxhcmdlIElQdjYgYW5kIFVEUCBoZWFkZXJzIGRvd24gdG8gKGluIHRoZSBiZXN0IGNhc2UpIHNldmVyYWwgYnl0ZXMuCisKK0luIFNlbXB0ZW1iZXIgMjAxMSB0aGUgc3RhbmRhcmQgdXBkYXRlIHdhcyBwdWJsaXNoZWQgLSBbUkZDNjI4Ml0uCitJdCBkZXByZWNhdGVzIEhDMSBhbmQgSEMyIGNvbXByZXNzaW9uIGFuZCBkZWZpbmVzIElQSEMgZW5jb2RpbmcgZm9ybWF0IHdoaWNoIGlzCit1c2VkIGluIHRoaXMgTGludXggaW1wbGVtZW50YXRpb24uCisKK0FsbCB0aGUgY29kZSByZWxhdGVkIHRvIDZsb3dwYW4geW91IG1heSBmaW5kIGluIGZpbGVzOiBuZXQvNmxvd3Bhbi8qCithbmQgbmV0L2llZWU4MDIxNTQvNmxvd3Bhbi8qCisKK1RvIHNldHVwIDZsb3dwYW4gaW50ZXJmYWNlIHlvdSBuZWVkIChidXN5Ym94IHJlbGVhc2UgPiAxLjE3LjApOgorMS4gQWRkIElFRUU4MDIuMTUuNCBpbnRlcmZhY2UgYW5kIGluaXRpYWxpemUgUEFOaWQ7CisyLiBBZGQgNmxvd3BhbiBpbnRlcmZhY2UgYnkgY29tbWFuZCBsaWtlOgorICAgIyBpcCBsaW5rIGFkZCBsaW5rIHdwYW4wIG5hbWUgbG93cGFuMCB0eXBlIGxvd3BhbgorMy4gU2V0IE1BQyAoaWYgbmVlZHMpOgorICAgIyBpcCBsaW5rIHNldCBsb3dwYW4wIGFkZHJlc3MgZGU6YWQ6YmU6ZWY6Y2E6ZmU6YmE6YmUKKzQuIEJyaW5nIHVwICdsb3dwYW4wJyBpbnRlcmZhY2UKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pZ2IudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lnYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU1MzRmZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pZ2IudHh0CkBAIC0wLDAgKzEsMTI5IEBACitMaW51eCogQmFzZSBEcml2ZXIgZm9yIEludGVsKFIpIEV0aGVybmV0IE5ldHdvcmsgQ29ubmVjdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW50ZWwgR2lnYWJpdCBMaW51eCBkcml2ZXIuCitDb3B5cmlnaHQoYykgMTk5OSAtIDIwMTMgSW50ZWwgQ29ycG9yYXRpb24uCisKK0NvbnRlbnRzCis9PT09PT09PQorCistIElkZW50aWZ5aW5nIFlvdXIgQWRhcHRlcgorLSBBZGRpdGlvbmFsIENvbmZpZ3VyYXRpb25zCistIFN1cHBvcnQKKworSWRlbnRpZnlpbmcgWW91ciBBZGFwdGVyCis9PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBkcml2ZXIgc3VwcG9ydHMgYWxsIDgyNTc1LCA4MjU3NiBhbmQgODI1ODAtYmFzZWQgSW50ZWwgKFIpIGdpZ2FiaXQgbmV0d29yaworY29ubmVjdGlvbnMuCisKK0ZvciBzcGVjaWZpYyBpbmZvcm1hdGlvbiBvbiBob3cgdG8gaWRlbnRpZnkgeW91ciBhZGFwdGVyLCBnbyB0byB0aGUgQWRhcHRlciAmCitEcml2ZXIgSUQgR3VpZGUgYXQ6CisKKyAgICBodHRwOi8vc3VwcG9ydC5pbnRlbC5jb20vc3VwcG9ydC9nby9uZXR3b3JrL2FkYXB0ZXIvaWRndWlkZS5odG0KKworQ29tbWFuZCBMaW5lIFBhcmFtZXRlcnMKKz09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBkZWZhdWx0IHZhbHVlIGZvciBlYWNoIHBhcmFtZXRlciBpcyBnZW5lcmFsbHkgdGhlIHJlY29tbWVuZGVkIHNldHRpbmcsCit1bmxlc3Mgb3RoZXJ3aXNlIG5vdGVkLgorCittYXhfdmZzCistLS0tLS0tCitWYWxpZCBSYW5nZTogICAwLTcKK0RlZmF1bHQgVmFsdWU6IDAKKworVGhpcyBwYXJhbWV0ZXIgYWRkcyBzdXBwb3J0IGZvciBTUi1JT1YuICBJdCBjYXVzZXMgdGhlIGRyaXZlciB0byBzcGF3biB1cCB0bworbWF4X3ZmcyB3b3J0aCBvZiB2aXJ0dWFsIGZ1bmN0aW9uLgorCitBZGRpdGlvbmFsIENvbmZpZ3VyYXRpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgSnVtYm8gRnJhbWVzCisgIC0tLS0tLS0tLS0tLQorICBKdW1ibyBGcmFtZXMgc3VwcG9ydCBpcyBlbmFibGVkIGJ5IGNoYW5naW5nIHRoZSBNVFUgdG8gYSB2YWx1ZSBsYXJnZXIgdGhhbgorICB0aGUgZGVmYXVsdCBvZiAxNTAwLiAgVXNlIHRoZSBpcCBjb21tYW5kIHRvIGluY3JlYXNlIHRoZSBNVFUgc2l6ZS4KKyAgRm9yIGV4YW1wbGU6CisKKyAgICAgICBpcCBsaW5rIHNldCBkZXYgZXRoPHg+IG10dSA5MDAwCisKKyAgVGhpcyBzZXR0aW5nIGlzIG5vdCBzYXZlZCBhY3Jvc3MgcmVib290cy4KKworICBOb3RlczoKKworICAtIFRoZSBtYXhpbXVtIE1UVSBzZXR0aW5nIGZvciBKdW1ibyBGcmFtZXMgaXMgOTIxNi4gIFRoaXMgdmFsdWUgY29pbmNpZGVzCisgICAgd2l0aCB0aGUgbWF4aW11bSBKdW1ibyBGcmFtZXMgc2l6ZSBvZiA5MjM0IGJ5dGVzLgorCisgIC0gVXNpbmcgSnVtYm8gZnJhbWVzIGF0IDEwIG9yIDEwMCBNYnBzIGlzIG5vdCBzdXBwb3J0ZWQgYW5kIG1heSByZXN1bHQgaW4KKyAgICBwb29yIHBlcmZvcm1hbmNlIG9yIGxvc3Mgb2YgbGluay4KKworICBldGh0b29sCisgIC0tLS0tLS0KKyAgVGhlIGRyaXZlciB1dGlsaXplcyB0aGUgZXRodG9vbCBpbnRlcmZhY2UgZm9yIGRyaXZlciBjb25maWd1cmF0aW9uIGFuZAorICBkaWFnbm9zdGljcywgYXMgd2VsbCBhcyBkaXNwbGF5aW5nIHN0YXRpc3RpY2FsIGluZm9ybWF0aW9uLiBUaGUgbGF0ZXN0CisgIHZlcnNpb24gb2YgZXRodG9vbCBjYW4gYmUgZm91bmQgYXQ6CisKKyAgaHR0cDovL2Z0cC5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvCisKKyAgRW5hYmxpbmcgV2FrZSBvbiBMQU4qIChXb0wpCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBXb0wgaXMgY29uZmlndXJlZCB0aHJvdWdoIHRoZSBldGh0b29sKiB1dGlsaXR5LgorCisgIEZvciBpbnN0cnVjdGlvbnMgb24gZW5hYmxpbmcgV29MIHdpdGggZXRodG9vbCwgcmVmZXIgdG8gdGhlIGV0aHRvb2wgbWFuIHBhZ2UuCisKKyAgV29MIHdpbGwgYmUgZW5hYmxlZCBvbiB0aGUgc3lzdGVtIGR1cmluZyB0aGUgbmV4dCBzaHV0IGRvd24gb3IgcmVib290LgorICBGb3IgdGhpcyBkcml2ZXIgdmVyc2lvbiwgaW4gb3JkZXIgdG8gZW5hYmxlIFdvTCwgdGhlIGlnYiBkcml2ZXIgbXVzdCBiZQorICBsb2FkZWQgd2hlbiBzaHV0dGluZyBkb3duIG9yIHJlYm9vdGluZyB0aGUgc3lzdGVtLgorCisgIFdha2UgT24gTEFOIGlzIG9ubHkgc3VwcG9ydGVkIG9uIHBvcnQgQSBvZiBtdWx0aS1wb3J0IGFkYXB0ZXJzLgorCisgIFdha2UgT24gTEFOIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoZSBJbnRlbChSKSBHaWdhYml0IFZUIFF1YWQgUG9ydCBTZXJ2ZXIKKyAgQWRhcHRlci4KKworICBNdWx0aXF1ZXVlCisgIC0tLS0tLS0tLS0KKyAgSW4gdGhpcyBtb2RlLCBhIHNlcGFyYXRlIE1TSS1YIHZlY3RvciBpcyBhbGxvY2F0ZWQgZm9yIGVhY2ggcXVldWUgYW5kIG9uZQorICBmb3IgIm90aGVyIiBpbnRlcnJ1cHRzIHN1Y2ggYXMgbGluayBzdGF0dXMgY2hhbmdlIGFuZCBlcnJvcnMuICBBbGwKKyAgaW50ZXJydXB0cyBhcmUgdGhyb3R0bGVkIHZpYSBpbnRlcnJ1cHQgbW9kZXJhdGlvbi4gIEludGVycnVwdCBtb2RlcmF0aW9uCisgIG11c3QgYmUgdXNlZCB0byBhdm9pZCBpbnRlcnJ1cHQgc3Rvcm1zIHdoaWxlIHRoZSBkcml2ZXIgaXMgcHJvY2Vzc2luZyBvbmUKKyAgaW50ZXJydXB0LiAgVGhlIG1vZGVyYXRpb24gdmFsdWUgc2hvdWxkIGJlIGF0IGxlYXN0IGFzIGxhcmdlIGFzIHRoZSBleHBlY3RlZAorICB0aW1lIGZvciB0aGUgZHJpdmVyIHRvIHByb2Nlc3MgYW4gaW50ZXJydXB0LiBNdWx0aXF1ZXVlIGlzIG9mZiBieSBkZWZhdWx0LgorCisgIFJFUVVJUkVNRU5UUzogTVNJLVggc3VwcG9ydCBpcyByZXF1aXJlZCBmb3IgTXVsdGlxdWV1ZS4gSWYgTVNJLVggaXMgbm90CisgIGZvdW5kLCB0aGUgc3lzdGVtIHdpbGwgZmFsbGJhY2sgdG8gTVNJIG9yIHRvIExlZ2FjeSBpbnRlcnJ1cHRzLgorCisgIE1BQyBhbmQgVkxBTiBhbnRpLXNwb29maW5nIGZlYXR1cmUKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBXaGVuIGEgbWFsaWNpb3VzIGRyaXZlciBhdHRlbXB0cyB0byBzZW5kIGEgc3Bvb2ZlZCBwYWNrZXQsIGl0IGlzIGRyb3BwZWQgYnkKKyAgdGhlIGhhcmR3YXJlIGFuZCBub3QgdHJhbnNtaXR0ZWQuICBBbiBpbnRlcnJ1cHQgaXMgc2VudCB0byB0aGUgUEYgZHJpdmVyCisgIG5vdGlmeWluZyBpdCBvZiB0aGUgc3Bvb2YgYXR0ZW1wdC4KKworICBXaGVuIGEgc3Bvb2ZlZCBwYWNrZXQgaXMgZGV0ZWN0ZWQgdGhlIFBGIGRyaXZlciB3aWxsIHNlbmQgdGhlIGZvbGxvd2luZworICBtZXNzYWdlIHRvIHRoZSBzeXN0ZW0gbG9nIChkaXNwbGF5ZWQgYnkgIHRoZSAiZG1lc2ciIGNvbW1hbmQpOgorCisgIFNwb29mIGV2ZW50KHMpIGRldGVjdGVkIG9uIFZGKG4pCisKKyAgV2hlcmUgbj10aGUgVkYgdGhhdCBhdHRlbXB0ZWQgdG8gZG8gdGhlIHNwb29maW5nLgorCisgIFNldHRpbmcgTUFDIEFkZHJlc3MsIFZMQU4gYW5kIFJhdGUgTGltaXQgVXNpbmcgSVByb3V0ZTIgVG9vbAorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgWW91IGNhbiBzZXQgYSBNQUMgYWRkcmVzcyBvZiBhIFZpcnR1YWwgRnVuY3Rpb24gKFZGKSwgYSBkZWZhdWx0IFZMQU4gYW5kIHRoZQorICByYXRlIGxpbWl0IHVzaW5nIHRoZSBJUHJvdXRlMiB0b29sLiBEb3dubG9hZCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlCisgIGlwcm91dGUyIHRvb2wgZnJvbSBTb3VyY2Vmb3JnZSBpZiB5b3VyIHZlcnNpb24gZG9lcyBub3QgaGF2ZSBhbGwgdGhlCisgIGZlYXR1cmVzIHlvdSByZXF1aXJlLgorCisKK1N1cHBvcnQKKz09PT09PT0KKworRm9yIGdlbmVyYWwgaW5mb3JtYXRpb24sIGdvIHRvIHRoZSBJbnRlbCBzdXBwb3J0IHdlYnNpdGUgYXQ6CisKKyAgICB3d3cuaW50ZWwuY29tL3N1cHBvcnQvCisKK29yIHRoZSBJbnRlbCBXaXJlZCBOZXR3b3JraW5nIHByb2plY3QgaG9zdGVkIGJ5IFNvdXJjZWZvcmdlIGF0OgorCisgICAgaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9lMTAwMAorCitJZiBhbiBpc3N1ZSBpcyBpZGVudGlmaWVkIHdpdGggdGhlIHJlbGVhc2VkIHNvdXJjZSBjb2RlIG9uIHRoZSBzdXBwb3J0ZWQKK2tlcm5lbCB3aXRoIGEgc3VwcG9ydGVkIGFkYXB0ZXIsIGVtYWlsIHRoZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiByZWxhdGVkCit0byB0aGUgaXNzdWUgdG8gZTEwMDAtZGV2ZWxAbGlzdHMuc2YubmV0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaWdidmYudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lnYnZmLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGRiMTdhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lnYnZmLnR4dApAQCAtMCwwICsxLDgwIEBACitMaW51eCogQmFzZSBEcml2ZXIgZm9yIEludGVsKFIpIEV0aGVybmV0IE5ldHdvcmsgQ29ubmVjdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW50ZWwgR2lnYWJpdCBMaW51eCBkcml2ZXIuCitDb3B5cmlnaHQoYykgMTk5OSAtIDIwMTMgSW50ZWwgQ29ycG9yYXRpb24uCisKK0NvbnRlbnRzCis9PT09PT09PQorCistIElkZW50aWZ5aW5nIFlvdXIgQWRhcHRlcgorLSBBZGRpdGlvbmFsIENvbmZpZ3VyYXRpb25zCistIFN1cHBvcnQKKworVGhpcyBmaWxlIGRlc2NyaWJlcyB0aGUgaWdidmYgTGludXgqIEJhc2UgRHJpdmVyIGZvciBJbnRlbCBOZXR3b3JrIENvbm5lY3Rpb24uCisKK1RoZSBpZ2J2ZiBkcml2ZXIgc3VwcG9ydHMgODI1NzYtYmFzZWQgdmlydHVhbCBmdW5jdGlvbiBkZXZpY2VzIHRoYXQgY2FuIG9ubHkKK2JlIGFjdGl2YXRlZCBvbiBrZXJuZWxzIHRoYXQgc3VwcG9ydCBTUi1JT1YuIFNSLUlPViByZXF1aXJlcyB0aGUgY29ycmVjdAorcGxhdGZvcm0gYW5kIE9TIHN1cHBvcnQuCisKK1RoZSBpZ2J2ZiBkcml2ZXIgcmVxdWlyZXMgdGhlIGlnYiBkcml2ZXIsIHZlcnNpb24gMi4wIG9yIGxhdGVyLiBUaGUgaWdidmYKK2RyaXZlciBzdXBwb3J0cyB2aXJ0dWFsIGZ1bmN0aW9ucyBnZW5lcmF0ZWQgYnkgdGhlIGlnYiBkcml2ZXIgd2l0aCBhIG1heF92ZnMKK3ZhbHVlIG9mIDEgb3IgZ3JlYXRlci4gRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIG1heF92ZnMgcGFyYW1ldGVyIHJlZmVyCit0byB0aGUgUkVBRE1FIGluY2x1ZGVkIHdpdGggdGhlIGlnYiBkcml2ZXIuCisKK1RoZSBndWVzdCBPUyBsb2FkaW5nIHRoZSBpZ2J2ZiBkcml2ZXIgbXVzdCBzdXBwb3J0IE1TSS1YIGludGVycnVwdHMuCisKK1RoaXMgZHJpdmVyIGlzIG9ubHkgc3VwcG9ydGVkIGFzIGEgbG9hZGFibGUgbW9kdWxlIGF0IHRoaXMgdGltZS4gIEludGVsIGlzCitub3Qgc3VwcGx5aW5nIHBhdGNoZXMgYWdhaW5zdCB0aGUga2VybmVsIHNvdXJjZSB0byBhbGxvdyBmb3Igc3RhdGljIGxpbmtpbmcKK29mIHRoZSBkcml2ZXIuICBGb3IgcXVlc3Rpb25zIHJlbGF0ZWQgdG8gaGFyZHdhcmUgcmVxdWlyZW1lbnRzLCByZWZlciB0byB0aGUKK2RvY3VtZW50YXRpb24gc3VwcGxpZWQgd2l0aCB5b3VyIEludGVsIEdpZ2FiaXQgYWRhcHRlci4gIEFsbCBoYXJkd2FyZQorcmVxdWlyZW1lbnRzIGxpc3RlZCBhcHBseSB0byB1c2Ugd2l0aCBMaW51eC4KKworSW5zdHJ1Y3Rpb25zIG9uIHVwZGF0aW5nIGV0aHRvb2wgY2FuIGJlIGZvdW5kIGluIHRoZSBzZWN0aW9uICJBZGRpdGlvbmFsCitDb25maWd1cmF0aW9ucyIgbGF0ZXIgaW4gdGhpcyBkb2N1bWVudC4KKworVkxBTnM6IFRoZXJlIGlzIGEgbGltaXQgb2YgYSB0b3RhbCBvZiAzMiBzaGFyZWQgVkxBTnMgdG8gMSBvciBtb3JlIFZGcy4KKworSWRlbnRpZnlpbmcgWW91ciBBZGFwdGVyCis9PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGlnYnZmIGRyaXZlciBzdXBwb3J0cyA4MjU3Ni1iYXNlZCB2aXJ0dWFsIGZ1bmN0aW9uIGRldmljZXMgdGhhdCBjYW4gb25seQorYmUgYWN0aXZhdGVkIG9uIGtlcm5lbHMgdGhhdCBzdXBwb3J0IFNSLUlPVi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGlkZW50aWZ5IHlvdXIgYWRhcHRlciwgZ28gdG8gdGhlIEFkYXB0ZXIgJgorRHJpdmVyIElEIEd1aWRlIGF0OgorCisgICAgaHR0cDovL3N1cHBvcnQuaW50ZWwuY29tL3N1cHBvcnQvZ28vbmV0d29yay9hZGFwdGVyL2lkZ3VpZGUuaHRtCisKK0ZvciB0aGUgbGF0ZXN0IEludGVsIG5ldHdvcmsgZHJpdmVycyBmb3IgTGludXgsIHJlZmVyIHRvIHRoZSBmb2xsb3dpbmcKK3dlYnNpdGUuICBJbiB0aGUgc2VhcmNoIGZpZWxkLCBlbnRlciB5b3VyIGFkYXB0ZXIgbmFtZSBvciB0eXBlLCBvciB1c2UgdGhlCituZXR3b3JraW5nIGxpbmsgb24gdGhlIGxlZnQgdG8gc2VhcmNoIGZvciB5b3VyIGFkYXB0ZXI6CisKKyAgICBodHRwOi8vZG93bmxvYWRjZW50ZXIuaW50ZWwuY29tL3NjcmlwdHMtZGYtZXh0ZXJuYWwvU3VwcG9ydF9JbnRlbC5hc3B4CisKK0FkZGl0aW9uYWwgQ29uZmlndXJhdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworICBldGh0b29sCisgIC0tLS0tLS0KKyAgVGhlIGRyaXZlciB1dGlsaXplcyB0aGUgZXRodG9vbCBpbnRlcmZhY2UgZm9yIGRyaXZlciBjb25maWd1cmF0aW9uIGFuZAorICBkaWFnbm9zdGljcywgYXMgd2VsbCBhcyBkaXNwbGF5aW5nIHN0YXRpc3RpY2FsIGluZm9ybWF0aW9uLiAgVGhlIGV0aHRvb2wKKyAgdmVyc2lvbiAzLjAgb3IgbGF0ZXIgaXMgcmVxdWlyZWQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eSwgYWx0aG91Z2ggd2UKKyAgc3Ryb25nbHkgcmVjb21tZW5kIGRvd25sb2FkaW5nIHRoZSBsYXRlc3QgdmVyc2lvbiBhdDoKKworICBodHRwOi8vZnRwLmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC8KKworU3VwcG9ydAorPT09PT09PQorCitGb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiwgZ28gdG8gdGhlIEludGVsIHN1cHBvcnQgd2Vic2l0ZSBhdDoKKworICAgIGh0dHA6Ly9zdXBwb3J0LmludGVsLmNvbQorCitvciB0aGUgSW50ZWwgV2lyZWQgTmV0d29ya2luZyBwcm9qZWN0IGhvc3RlZCBieSBTb3VyY2Vmb3JnZSBhdDoKKworICAgIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZTEwMDAKKworSWYgYW4gaXNzdWUgaXMgaWRlbnRpZmllZCB3aXRoIHRoZSByZWxlYXNlZCBzb3VyY2UgY29kZSBvbiB0aGUgc3VwcG9ydGVkCitrZXJuZWwgd2l0aCBhIHN1cHBvcnRlZCBhZGFwdGVyLCBlbWFpbCB0aGUgc3BlY2lmaWMgaW5mb3JtYXRpb24gcmVsYXRlZAordG8gdGhlIGlzc3VlIHRvIGUxMDAwLWRldmVsQGxpc3RzLnNmLm5ldApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXAtc3lzY3RsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWE0YzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC50eHQKQEAgLTAsMCArMSwxOTUyIEBACisvcHJvYy9zeXMvbmV0L2lwdjQvKiBWYXJpYWJsZXM6CisKK2lwX2ZvcndhcmQgLSBCT09MRUFOCisJMCAtIGRpc2FibGVkIChkZWZhdWx0KQorCW5vdCAwIC0gZW5hYmxlZAorCisJRm9yd2FyZCBQYWNrZXRzIGJldHdlZW4gaW50ZXJmYWNlcy4KKworCVRoaXMgdmFyaWFibGUgaXMgc3BlY2lhbCwgaXRzIGNoYW5nZSByZXNldHMgYWxsIGNvbmZpZ3VyYXRpb24KKwlwYXJhbWV0ZXJzIHRvIHRoZWlyIGRlZmF1bHQgc3RhdGUgKFJGQzExMjIgZm9yIGhvc3RzLCBSRkMxODEyCisJZm9yIHJvdXRlcnMpCisKK2lwX2RlZmF1bHRfdHRsIC0gSU5URUdFUgorCURlZmF1bHQgdmFsdWUgb2YgVFRMIGZpZWxkIChUaW1lIFRvIExpdmUpIGZvciBvdXRnb2luZyAoYnV0IG5vdAorCWZvcndhcmRlZCkgSVAgcGFja2V0cy4gU2hvdWxkIGJlIGJldHdlZW4gMSBhbmQgMjU1IGluY2x1c2l2ZS4KKwlEZWZhdWx0OiA2NCAoYXMgcmVjb21tZW5kZWQgYnkgUkZDMTcwMCkKKworaXBfbm9fcG10dV9kaXNjIC0gSU5URUdFUgorCURpc2FibGUgUGF0aCBNVFUgRGlzY292ZXJ5LiBJZiBlbmFibGVkIGluIG1vZGUgMSBhbmQgYQorCWZyYWdtZW50YXRpb24tcmVxdWlyZWQgSUNNUCBpcyByZWNlaXZlZCwgdGhlIFBNVFUgdG8gdGhpcworCWRlc3RpbmF0aW9uIHdpbGwgYmUgc2V0IHRvIG1pbl9wbXR1IChzZWUgYmVsb3cpLiBZb3Ugd2lsbCBuZWVkCisJdG8gcmFpc2UgbWluX3BtdHUgdG8gdGhlIHNtYWxsZXN0IGludGVyZmFjZSBNVFUgb24geW91ciBzeXN0ZW0KKwltYW51YWxseSBpZiB5b3Ugd2FudCB0byBhdm9pZCBsb2NhbGx5IGdlbmVyYXRlZCBmcmFnbWVudHMuCisKKwlJbiBtb2RlIDIgaW5jb21pbmcgUGF0aCBNVFUgRGlzY292ZXJ5IG1lc3NhZ2VzIHdpbGwgYmUKKwlkaXNjYXJkZWQuIE91dGdvaW5nIGZyYW1lcyBhcmUgaGFuZGxlZCB0aGUgc2FtZSBhcyBpbiBtb2RlIDEsCisJaW1wbGljaXRseSBzZXR0aW5nIElQX1BNVFVESVNDX0RPTlQgb24gZXZlcnkgY3JlYXRlZCBzb2NrZXQuCisKKwlNb2RlIDMgaXMgYSBoYXJkZW5kIHBtdHUgZGlzY292ZXIgbW9kZS4gVGhlIGtlcm5lbCB3aWxsIG9ubHkKKwlhY2NlcHQgZnJhZ21lbnRhdGlvbi1uZWVkZWQgZXJyb3JzIGlmIHRoZSB1bmRlcmx5aW5nIHByb3RvY29sCisJY2FuIHZlcmlmeSB0aGVtIGJlc2lkZXMgYSBwbGFpbiBzb2NrZXQgbG9va3VwLiBDdXJyZW50CisJcHJvdG9jb2xzIGZvciB3aGljaCBwbXR1IGV2ZW50cyB3aWxsIGJlIGhvbm9yZWQgYXJlIFRDUCwgU0NUUAorCWFuZCBEQ0NQIGFzIHRoZXkgdmVyaWZ5IGUuZy4gdGhlIHNlcXVlbmNlIG51bWJlciBvciB0aGUKKwlhc3NvY2lhdGlvbi4gVGhpcyBtb2RlIHNob3VsZCBub3QgYmUgZW5hYmxlZCBnbG9iYWxseSBidXQgaXMKKwlvbmx5IGludGVuZGVkIHRvIHNlY3VyZSBlLmcuIG5hbWUgc2VydmVycyBpbiBuYW1lc3BhY2VzIHdoZXJlCisJVENQIHBhdGggbXR1IG11c3Qgc3RpbGwgd29yayBidXQgcGF0aCBNVFUgaW5mb3JtYXRpb24gb2Ygb3RoZXIKKwlwcm90b2NvbHMgc2hvdWxkIGJlIGRpc2NhcmRlZC4gSWYgZW5hYmxlZCBnbG9iYWxseSB0aGlzIG1vZGUKKwljb3VsZCBicmVhayBvdGhlciBwcm90b2NvbHMuCisKKwlQb3NzaWJsZSB2YWx1ZXM6IDAtMworCURlZmF1bHQ6IEZBTFNFCisKK21pbl9wbXR1IC0gSU5URUdFUgorCWRlZmF1bHQgNTUyIC0gbWluaW11bSBkaXNjb3ZlcmVkIFBhdGggTVRVCisKK2lwX2ZvcndhcmRfdXNlX3BtdHUgLSBCT09MRUFOCisJQnkgZGVmYXVsdCB3ZSBkb24ndCB0cnVzdCBwcm90b2NvbCBwYXRoIE1UVXMgd2hpbGUgZm9yd2FyZGluZworCWJlY2F1c2UgdGhleSBjb3VsZCBiZSBlYXNpbHkgZm9yZ2VkIGFuZCBjYW4gbGVhZCB0byB1bndhbnRlZAorCWZyYWdtZW50YXRpb24gYnkgdGhlIHJvdXRlci4KKwlZb3Ugb25seSBuZWVkIHRvIGVuYWJsZSB0aGlzIGlmIHlvdSBoYXZlIHVzZXItc3BhY2Ugc29mdHdhcmUKKwl3aGljaCB0cmllcyB0byBkaXNjb3ZlciBwYXRoIG10dXMgYnkgaXRzZWxmIGFuZCBkZXBlbmRzIG9uIHRoZQorCWtlcm5lbCBob25vcmluZyB0aGlzIGluZm9ybWF0aW9uLiBUaGlzIGlzIG5vcm1hbGx5IG5vdCB0aGUKKwljYXNlLgorCURlZmF1bHQ6IDAgKGRpc2FibGVkKQorCVBvc3NpYmxlIHZhbHVlczoKKwkwIC0gZGlzYWJsZWQKKwkxIC0gZW5hYmxlZAorCitmd21hcmtfcmVmbGVjdCAtIEJPT0xFQU4KKwlDb250cm9scyB0aGUgZndtYXJrIG9mIGtlcm5lbC1nZW5lcmF0ZWQgSVB2NCByZXBseSBwYWNrZXRzIHRoYXQgYXJlIG5vdAorCWFzc29jaWF0ZWQgd2l0aCBhIHNvY2tldCBmb3IgZXhhbXBsZSwgVENQIFJTVHMgb3IgSUNNUCBlY2hvIHJlcGxpZXMpLgorCUlmIHVuc2V0LCB0aGVzZSBwYWNrZXRzIGhhdmUgYSBmd21hcmsgb2YgemVyby4gSWYgc2V0LCB0aGV5IGhhdmUgdGhlCisJZndtYXJrIG9mIHRoZSBwYWNrZXQgdGhleSBhcmUgcmVwbHlpbmcgdG8uCisJRGVmYXVsdDogMAorCityb3V0ZS9tYXhfc2l6ZSAtIElOVEVHRVIKKwlNYXhpbXVtIG51bWJlciBvZiByb3V0ZXMgYWxsb3dlZCBpbiB0aGUga2VybmVsLiAgSW5jcmVhc2UKKwl0aGlzIHdoZW4gdXNpbmcgbGFyZ2UgbnVtYmVycyBvZiBpbnRlcmZhY2VzIGFuZC9vciByb3V0ZXMuCisJRnJvbSBsaW51eCBrZXJuZWwgMy42IG9ud2FyZHMsIHRoaXMgaXMgZGVwcmVjYXRlZCBmb3IgaXB2NAorCWFzIHJvdXRlIGNhY2hlIGlzIG5vIGxvbmdlciB1c2VkLgorCituZWlnaC9kZWZhdWx0L2djX3RocmVzaDEgLSBJTlRFR0VSCisJTWluaW11bSBudW1iZXIgb2YgZW50cmllcyB0byBrZWVwLiAgR2FyYmFnZSBjb2xsZWN0b3Igd2lsbCBub3QKKwlwdXJnZSBlbnRyaWVzIGlmIHRoZXJlIGFyZSBmZXdlciB0aGFuIHRoaXMgbnVtYmVyLgorCURlZmF1bHQ6IDEyOAorCituZWlnaC9kZWZhdWx0L2djX3RocmVzaDIgLSBJTlRFR0VSCisJVGhyZXNob2xkIHdoZW4gZ2FyYmFnZSBjb2xsZWN0b3IgYmVjb21lcyBtb3JlIGFnZ3Jlc3NpdmUgYWJvdXQKKwlwdXJnaW5nIGVudHJpZXMuIEVudHJpZXMgb2xkZXIgdGhhbiA1IHNlY29uZHMgd2lsbCBiZSBjbGVhcmVkCisJd2hlbiBvdmVyIHRoaXMgbnVtYmVyLgorCURlZmF1bHQ6IDUxMgorCituZWlnaC9kZWZhdWx0L2djX3RocmVzaDMgLSBJTlRFR0VSCisJTWF4aW11bSBudW1iZXIgb2YgbmVpZ2hib3IgZW50cmllcyBhbGxvd2VkLiAgSW5jcmVhc2UgdGhpcworCXdoZW4gdXNpbmcgbGFyZ2UgbnVtYmVycyBvZiBpbnRlcmZhY2VzIGFuZCB3aGVuIGNvbW11bmljYXRpbmcKKwl3aXRoIGxhcmdlIG51bWJlcnMgb2YgZGlyZWN0bHktY29ubmVjdGVkIHBlZXJzLgorCURlZmF1bHQ6IDEwMjQKKworbmVpZ2gvZGVmYXVsdC91bnJlc19xbGVuX2J5dGVzIC0gSU5URUdFUgorCVRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyB3aGljaCBtYXkgYmUgdXNlZCBieSBwYWNrZXRzCisJcXVldWVkIGZvciBlYWNoCXVucmVzb2x2ZWQgYWRkcmVzcyBieSBvdGhlciBuZXR3b3JrIGxheWVycy4KKwkoYWRkZWQgaW4gbGludXggMy4zKQorCVNldHRpbmcgbmVnYXRpdmUgdmFsdWUgaXMgbWVhbmluZ2xlc3MgYW5kIHdpbGwgcmV0dXJuIGVycm9yLgorCURlZmF1bHQ6IDY1NTM2IEJ5dGVzKDY0S0IpCisKK25laWdoL2RlZmF1bHQvdW5yZXNfcWxlbiAtIElOVEVHRVIKKwlUaGUgbWF4aW11bSBudW1iZXIgb2YgcGFja2V0cyB3aGljaCBtYXkgYmUgcXVldWVkIGZvciBlYWNoCisJdW5yZXNvbHZlZCBhZGRyZXNzIGJ5IG90aGVyIG5ldHdvcmsgbGF5ZXJzLgorCShkZXByZWNhdGVkIGluIGxpbnV4IDMuMykgOiB1c2UgdW5yZXNfcWxlbl9ieXRlcyBpbnN0ZWFkLgorCVByaW9yIHRvIGxpbnV4IDMuMywgdGhlIGRlZmF1bHQgdmFsdWUgaXMgMyB3aGljaCBtYXkgY2F1c2UKKwl1bmV4cGVjdGVkIHBhY2tldCBsb3NzLiBUaGUgY3VycmVudCBkZWZhdWx0IHZhbHVlIGlzIGNhbGN1bGF0ZWQKKwlhY2NvcmRpbmcgdG8gZGVmYXVsdCB2YWx1ZSBvZiB1bnJlc19xbGVuX2J5dGVzIGFuZCB0cnVlIHNpemUgb2YKKwlwYWNrZXQuCisJRGVmYXVsdDogMzEKKworbXR1X2V4cGlyZXMgLSBJTlRFR0VSCisJVGltZSwgaW4gc2Vjb25kcywgdGhhdCBjYWNoZWQgUE1UVSBpbmZvcm1hdGlvbiBpcyBrZXB0LgorCittaW5fYWR2X21zcyAtIElOVEVHRVIKKwlUaGUgYWR2ZXJ0aXNlZCBNU1MgZGVwZW5kcyBvbiB0aGUgZmlyc3QgaG9wIHJvdXRlIE1UVSwgYnV0IHdpbGwKKwluZXZlciBiZSBsb3dlciB0aGFuIHRoaXMgc2V0dGluZy4KKworSVAgRnJhZ21lbnRhdGlvbjoKKworaXBmcmFnX2hpZ2hfdGhyZXNoIC0gSU5URUdFUgorCU1heGltdW0gbWVtb3J5IHVzZWQgdG8gcmVhc3NlbWJsZSBJUCBmcmFnbWVudHMuIFdoZW4KKwlpcGZyYWdfaGlnaF90aHJlc2ggYnl0ZXMgb2YgbWVtb3J5IGlzIGFsbG9jYXRlZCBmb3IgdGhpcyBwdXJwb3NlLAorCXRoZSBmcmFnbWVudCBoYW5kbGVyIHdpbGwgdG9zcyBwYWNrZXRzIHVudGlsIGlwZnJhZ19sb3dfdGhyZXNoCisJaXMgcmVhY2hlZC4gVGhpcyBhbHNvIHNlcnZlcyBhcyBhIG1heGltdW0gbGltaXQgdG8gbmFtZXNwYWNlcworCWRpZmZlcmVudCBmcm9tIHRoZSBpbml0aWFsIG9uZS4KKworaXBmcmFnX2xvd190aHJlc2ggLSBJTlRFR0VSCisJTWF4aW11bSBtZW1vcnkgdXNlZCB0byByZWFzc2VtYmxlIElQIGZyYWdtZW50cyBiZWZvcmUgdGhlIGtlcm5lbAorCWJlZ2lucyB0byByZW1vdmUgaW5jb21wbGV0ZSBmcmFnbWVudCBxdWV1ZXMgdG8gZnJlZSB1cCByZXNvdXJjZXMuCisJVGhlIGtlcm5lbCBzdGlsbCBhY2NlcHRzIG5ldyBmcmFnbWVudHMgZm9yIGRlZnJhZ21lbnRhdGlvbi4KKworaXBmcmFnX3RpbWUgLSBJTlRFR0VSCisJVGltZSBpbiBzZWNvbmRzIHRvIGtlZXAgYW4gSVAgZnJhZ21lbnQgaW4gbWVtb3J5LgorCitpcGZyYWdfbWF4X2Rpc3QgLSBJTlRFR0VSCisJaXBmcmFnX21heF9kaXN0IGlzIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgdmFsdWUgd2hpY2ggZGVmaW5lcyB0aGUKKwltYXhpbXVtICJkaXNvcmRlciIgd2hpY2ggaXMgYWxsb3dlZCBhbW9uZyBmcmFnbWVudHMgd2hpY2ggc2hhcmUgYQorCWNvbW1vbiBJUCBzb3VyY2UgYWRkcmVzcy4gTm90ZSB0aGF0IHJlb3JkZXJpbmcgb2YgcGFja2V0cyBpcworCW5vdCB1bnVzdWFsLCBidXQgaWYgYSBsYXJnZSBudW1iZXIgb2YgZnJhZ21lbnRzIGFycml2ZSBmcm9tIGEgc291cmNlCisJSVAgYWRkcmVzcyB3aGlsZSBhIHBhcnRpY3VsYXIgZnJhZ21lbnQgcXVldWUgcmVtYWlucyBpbmNvbXBsZXRlLCBpdAorCXByb2JhYmx5IGluZGljYXRlcyB0aGF0IG9uZSBvciBtb3JlIGZyYWdtZW50cyBiZWxvbmdpbmcgdG8gdGhhdCBxdWV1ZQorCWhhdmUgYmVlbiBsb3N0LiBXaGVuIGlwZnJhZ19tYXhfZGlzdCBpcyBwb3NpdGl2ZSwgYW4gYWRkaXRpb25hbCBjaGVjaworCWlzIGRvbmUgb24gZnJhZ21lbnRzIGJlZm9yZSB0aGV5IGFyZSBhZGRlZCB0byBhIHJlYXNzZW1ibHkgcXVldWUgLSBpZgorCWlwZnJhZ19tYXhfZGlzdCAob3IgbW9yZSkgZnJhZ21lbnRzIGhhdmUgYXJyaXZlZCBmcm9tIGEgcGFydGljdWxhciBJUAorCWFkZHJlc3MgYmV0d2VlbiBhZGRpdGlvbnMgdG8gYW55IElQIGZyYWdtZW50IHF1ZXVlIHVzaW5nIHRoYXQgc291cmNlCisJYWRkcmVzcywgaXQncyBwcmVzdW1lZCB0aGF0IG9uZSBvciBtb3JlIGZyYWdtZW50cyBpbiB0aGUgcXVldWUgYXJlCisJbG9zdC4gVGhlIGV4aXN0aW5nIGZyYWdtZW50IHF1ZXVlIHdpbGwgYmUgZHJvcHBlZCwgYW5kIGEgbmV3IG9uZQorCXN0YXJ0ZWQuIEFuIGlwZnJhZ19tYXhfZGlzdCB2YWx1ZSBvZiB6ZXJvIGRpc2FibGVzIHRoaXMgY2hlY2suCisKKwlVc2luZyBhIHZlcnkgc21hbGwgdmFsdWUsIGUuZy4gMSBvciAyLCBmb3IgaXBmcmFnX21heF9kaXN0IGNhbgorCXJlc3VsdCBpbiB1bm5lY2Vzc2FyaWx5IGRyb3BwaW5nIGZyYWdtZW50IHF1ZXVlcyB3aGVuIG5vcm1hbAorCXJlb3JkZXJpbmcgb2YgcGFja2V0cyBvY2N1cnMsIHdoaWNoIGNvdWxkIGxlYWQgdG8gcG9vciBhcHBsaWNhdGlvbgorCXBlcmZvcm1hbmNlLiBVc2luZyBhIHZlcnkgbGFyZ2UgdmFsdWUsIGUuZy4gNTAwMDAsIGluY3JlYXNlcyB0aGUKKwlsaWtlbGlob29kIG9mIGluY29ycmVjdGx5IHJlYXNzZW1ibGluZyBJUCBmcmFnbWVudHMgdGhhdCBvcmlnaW5hdGUKKwlmcm9tIGRpZmZlcmVudCBJUCBkYXRhZ3JhbXMsIHdoaWNoIGNvdWxkIHJlc3VsdCBpbiBkYXRhIGNvcnJ1cHRpb24uCisJRGVmYXVsdDogNjQKKworSU5FVCBwZWVyIHN0b3JhZ2U6CisKK2luZXRfcGVlcl90aHJlc2hvbGQgLSBJTlRFR0VSCisJVGhlIGFwcHJveGltYXRlIHNpemUgb2YgdGhlIHN0b3JhZ2UuICBTdGFydGluZyBmcm9tIHRoaXMgdGhyZXNob2xkCisJZW50cmllcyB3aWxsIGJlIHRocm93biBhZ2dyZXNzaXZlbHkuICBUaGlzIHRocmVzaG9sZCBhbHNvIGRldGVybWluZXMKKwllbnRyaWVzJyB0aW1lLXRvLWxpdmUgYW5kIHRpbWUgaW50ZXJ2YWxzIGJldHdlZW4gZ2FyYmFnZSBjb2xsZWN0aW9uCisJcGFzc2VzLiAgTW9yZSBlbnRyaWVzLCBsZXNzIHRpbWUtdG8tbGl2ZSwgbGVzcyBHQyBpbnRlcnZhbC4KKworaW5ldF9wZWVyX21pbnR0bCAtIElOVEVHRVIKKwlNaW5pbXVtIHRpbWUtdG8tbGl2ZSBvZiBlbnRyaWVzLiAgU2hvdWxkIGJlIGVub3VnaCB0byBjb3ZlciBmcmFnbWVudAorCXRpbWUtdG8tbGl2ZSBvbiB0aGUgcmVhc3NlbWJsaW5nIHNpZGUuICBUaGlzIG1pbmltdW0gdGltZS10by1saXZlICBpcworCWd1YXJhbnRlZWQgaWYgdGhlIHBvb2wgc2l6ZSBpcyBsZXNzIHRoYW4gaW5ldF9wZWVyX3RocmVzaG9sZC4KKwlNZWFzdXJlZCBpbiBzZWNvbmRzLgorCitpbmV0X3BlZXJfbWF4dHRsIC0gSU5URUdFUgorCU1heGltdW0gdGltZS10by1saXZlIG9mIGVudHJpZXMuICBVbnVzZWQgZW50cmllcyB3aWxsIGV4cGlyZSBhZnRlcgorCXRoaXMgcGVyaW9kIG9mIHRpbWUgaWYgdGhlcmUgaXMgbm8gbWVtb3J5IHByZXNzdXJlIG9uIHRoZSBwb29sIChpLmUuCisJd2hlbiB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIHBvb2wgaXMgdmVyeSBzbWFsbCkuCisJTWVhc3VyZWQgaW4gc2Vjb25kcy4KKworVENQIHZhcmlhYmxlczoKKworc29tYXhjb25uIC0gSU5URUdFUgorCUxpbWl0IG9mIHNvY2tldCBsaXN0ZW4oKSBiYWNrbG9nLCBrbm93biBpbiB1c2Vyc3BhY2UgYXMgU09NQVhDT05OLgorCURlZmF1bHRzIHRvIDEyOC4gIFNlZSBhbHNvIHRjcF9tYXhfc3luX2JhY2tsb2cgZm9yIGFkZGl0aW9uYWwgdHVuaW5nCisJZm9yIFRDUCBzb2NrZXRzLgorCit0Y3BfYWJvcnRfb25fb3ZlcmZsb3cgLSBCT09MRUFOCisJSWYgbGlzdGVuaW5nIHNlcnZpY2UgaXMgdG9vIHNsb3cgdG8gYWNjZXB0IG5ldyBjb25uZWN0aW9ucywKKwlyZXNldCB0aGVtLiBEZWZhdWx0IHN0YXRlIGlzIEZBTFNFLiBJdCBtZWFucyB0aGF0IGlmIG92ZXJmbG93CisJb2NjdXJyZWQgZHVlIHRvIGEgYnVyc3QsIGNvbm5lY3Rpb24gd2lsbCByZWNvdmVyLiBFbmFibGUgdGhpcworCW9wdGlvbiBfb25seV8gaWYgeW91IGFyZSByZWFsbHkgc3VyZSB0aGF0IGxpc3RlbmluZyBkYWVtb24KKwljYW5ub3QgYmUgdHVuZWQgdG8gYWNjZXB0IGNvbm5lY3Rpb25zIGZhc3Rlci4gRW5hYmxpbmcgdGhpcworCW9wdGlvbiBjYW4gaGFybSBjbGllbnRzIG9mIHlvdXIgc2VydmVyLgorCit0Y3BfYWR2X3dpbl9zY2FsZSAtIElOVEVHRVIKKwlDb3VudCBidWZmZXJpbmcgb3ZlcmhlYWQgYXMgYnl0ZXMvMl50Y3BfYWR2X3dpbl9zY2FsZQorCShpZiB0Y3BfYWR2X3dpbl9zY2FsZSA+IDApIG9yIGJ5dGVzLWJ5dGVzLzJeKC10Y3BfYWR2X3dpbl9zY2FsZSksCisJaWYgaXQgaXMgPD0gMC4KKwlQb3NzaWJsZSB2YWx1ZXMgYXJlIFstMzEsIDMxXSwgaW5jbHVzaXZlLgorCURlZmF1bHQ6IDEKKwordGNwX2FsbG93ZWRfY29uZ2VzdGlvbl9jb250cm9sIC0gU1RSSU5HCisJU2hvdy9zZXQgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBjaG9pY2VzIGF2YWlsYWJsZSB0byBub24tcHJpdmlsZWdlZAorCXByb2Nlc3Nlcy4gVGhlIGxpc3QgaXMgYSBzdWJzZXQgb2YgdGhvc2UgbGlzdGVkIGluCisJdGNwX2F2YWlsYWJsZV9jb25nZXN0aW9uX2NvbnRyb2wuCisJRGVmYXVsdCBpcyAicmVubyIgYW5kIHRoZSBkZWZhdWx0IHNldHRpbmcgKHRjcF9jb25nZXN0aW9uX2NvbnRyb2wpLgorCit0Y3BfYXBwX3dpbiAtIElOVEVHRVIKKwlSZXNlcnZlIG1heCh3aW5kb3cvMl50Y3BfYXBwX3dpbiwgbXNzKSBvZiB3aW5kb3cgZm9yIGFwcGxpY2F0aW9uCisJYnVmZmVyLiBWYWx1ZSAwIGlzIHNwZWNpYWwsIGl0IG1lYW5zIHRoYXQgbm90aGluZyBpcyByZXNlcnZlZC4KKwlEZWZhdWx0OiAzMQorCit0Y3BfYXV0b2NvcmtpbmcgLSBCT09MRUFOCisJRW5hYmxlIFRDUCBhdXRvIGNvcmtpbmcgOgorCVdoZW4gYXBwbGljYXRpb25zIGRvIGNvbnNlY3V0aXZlIHNtYWxsIHdyaXRlKCkvc2VuZG1zZygpIHN5c3RlbSBjYWxscywKKwl3ZSB0cnkgdG8gY29hbGVzY2UgdGhlc2Ugc21hbGwgd3JpdGVzIGFzIG11Y2ggYXMgcG9zc2libGUsIHRvIGxvd2VyCisJdG90YWwgYW1vdW50IG9mIHNlbnQgcGFja2V0cy4gVGhpcyBpcyBkb25lIGlmIGF0IGxlYXN0IG9uZSBwcmlvcgorCXBhY2tldCBmb3IgdGhlIGZsb3cgaXMgd2FpdGluZyBpbiBRZGlzYyBxdWV1ZXMgb3IgZGV2aWNlIHRyYW5zbWl0CisJcXVldWUuIEFwcGxpY2F0aW9ucyBjYW4gc3RpbGwgdXNlIFRDUF9DT1JLIGZvciBvcHRpbWFsIGJlaGF2aW9yCisJd2hlbiB0aGV5IGtub3cgaG93L3doZW4gdG8gdW5jb3JrIHRoZWlyIHNvY2tldHMuCisJRGVmYXVsdCA6IDEKKwordGNwX2F2YWlsYWJsZV9jb25nZXN0aW9uX2NvbnRyb2wgLSBTVFJJTkcKKwlTaG93cyB0aGUgYXZhaWxhYmxlIGNvbmdlc3Rpb24gY29udHJvbCBjaG9pY2VzIHRoYXQgYXJlIHJlZ2lzdGVyZWQuCisJTW9yZSBjb25nZXN0aW9uIGNvbnRyb2wgYWxnb3JpdGhtcyBtYXkgYmUgYXZhaWxhYmxlIGFzIG1vZHVsZXMsCisJYnV0IG5vdCBsb2FkZWQuCisKK3RjcF9iYXNlX21zcyAtIElOVEVHRVIKKwlUaGUgaW5pdGlhbCB2YWx1ZSBvZiBzZWFyY2hfbG93IHRvIGJlIHVzZWQgYnkgdGhlIHBhY2tldGl6YXRpb24gbGF5ZXIKKwlQYXRoIE1UVSBkaXNjb3ZlcnkgKE1UVSBwcm9iaW5nKS4gIElmIE1UVSBwcm9iaW5nIGlzIGVuYWJsZWQsCisJdGhpcyBpcyB0aGUgaW5pdGlhbCBNU1MgdXNlZCBieSB0aGUgY29ubmVjdGlvbi4KKwordGNwX2Nvbmdlc3Rpb25fY29udHJvbCAtIFNUUklORworCVNldCB0aGUgY29uZ2VzdGlvbiBjb250cm9sIGFsZ29yaXRobSB0byBiZSB1c2VkIGZvciBuZXcKKwljb25uZWN0aW9ucy4gVGhlIGFsZ29yaXRobSAicmVubyIgaXMgYWx3YXlzIGF2YWlsYWJsZSwgYnV0CisJYWRkaXRpb25hbCBjaG9pY2VzIG1heSBiZSBhdmFpbGFibGUgYmFzZWQgb24ga2VybmVsIGNvbmZpZ3VyYXRpb24uCisJRGVmYXVsdCBpcyBzZXQgYXMgcGFydCBvZiBrZXJuZWwgY29uZmlndXJhdGlvbi4KKwlGb3IgcGFzc2l2ZSBjb25uZWN0aW9ucywgdGhlIGxpc3RlbmVyIGNvbmdlc3Rpb24gY29udHJvbCBjaG9pY2UKKwlpcyBpbmhlcml0ZWQuCisJW3NlZSBzZXRzb2Nrb3B0KGxpc3RlbmZkLCBTT0xfVENQLCBUQ1BfQ09OR0VTVElPTiwgIm5hbWUiIC4uLikgXQorCit0Y3BfZHNhY2sgLSBCT09MRUFOCisJQWxsb3dzIFRDUCB0byBzZW5kICJkdXBsaWNhdGUiIFNBQ0tzLgorCit0Y3BfZWFybHlfcmV0cmFucyAtIElOVEVHRVIKKwlFbmFibGUgRWFybHkgUmV0cmFuc21pdCAoRVIpLCBwZXIgUkZDIDU4MjcuIEVSIGxvd2VycyB0aGUgdGhyZXNob2xkCisJZm9yIHRyaWdnZXJpbmcgZmFzdCByZXRyYW5zbWl0IHdoZW4gdGhlIGFtb3VudCBvZiBvdXRzdGFuZGluZyBkYXRhIGlzCisJc21hbGwgYW5kIHdoZW4gbm8gcHJldmlvdXNseSB1bnNlbnQgZGF0YSBjYW4gYmUgdHJhbnNtaXR0ZWQgKHN1Y2gKKwl0aGF0IGxpbWl0ZWQgdHJhbnNtaXQgY291bGQgYmUgdXNlZCkuIEFsc28gY29udHJvbHMgdGhlIHVzZSBvZgorCVRhaWwgbG9zcyBwcm9iZSAoVExQKSB0aGF0IGNvbnZlcnRzIFJUT3Mgb2NjdXJyaW5nIGR1ZSB0byB0YWlsCisJbG9zc2VzIGludG8gZmFzdCByZWNvdmVyeSAoZHJhZnQtZHVra2lwYXRpLXRjcG0tdGNwLWxvc3MtcHJvYmUtMDEpLgorCVBvc3NpYmxlIHZhbHVlczoKKwkJMCBkaXNhYmxlcyBFUgorCQkxIGVuYWJsZXMgRVIKKwkJMiBlbmFibGVzIEVSIGJ1dCBkZWxheXMgZmFzdCByZWNvdmVyeSBhbmQgZmFzdCByZXRyYW5zbWl0CisJCSAgYnkgYSBmb3VydGggb2YgUlRULiBUaGlzIG1pdGlnYXRlcyBjb25uZWN0aW9uIGZhbHNlbHkKKwkJICByZWNvdmVycyB3aGVuIG5ldHdvcmsgaGFzIGEgc21hbGwgZGVncmVlIG9mIHJlb3JkZXJpbmcKKwkJICAobGVzcyB0aGFuIDMgcGFja2V0cykuCisJCTMgZW5hYmxlcyBkZWxheWVkIEVSIGFuZCBUTFAuCisJCTQgZW5hYmxlcyBUTFAgb25seS4KKwlEZWZhdWx0OiAzCisKK3RjcF9lY24gLSBJTlRFR0VSCisJQ29udHJvbCB1c2Ugb2YgRXhwbGljaXQgQ29uZ2VzdGlvbiBOb3RpZmljYXRpb24gKEVDTikgYnkgVENQLgorCUVDTiBpcyB1c2VkIG9ubHkgd2hlbiBib3RoIGVuZHMgb2YgdGhlIFRDUCBjb25uZWN0aW9uIGluZGljYXRlCisJc3VwcG9ydCBmb3IgaXQuICBUaGlzIGZlYXR1cmUgaXMgdXNlZnVsIGluIGF2b2lkaW5nIGxvc3NlcyBkdWUKKwl0byBjb25nZXN0aW9uIGJ5IGFsbG93aW5nIHN1cHBvcnRpbmcgcm91dGVycyB0byBzaWduYWwKKwljb25nZXN0aW9uIGJlZm9yZSBoYXZpbmcgdG8gZHJvcCBwYWNrZXRzLgorCVBvc3NpYmxlIHZhbHVlcyBhcmU6CisJCTAgRGlzYWJsZSBFQ04uICBOZWl0aGVyIGluaXRpYXRlIG5vciBhY2NlcHQgRUNOLgorCQkxIEVuYWJsZSBFQ04gd2hlbiByZXF1ZXN0ZWQgYnkgaW5jb21pbmcgY29ubmVjdGlvbnMgYW5kCisJCSAgYWxzbyByZXF1ZXN0IEVDTiBvbiBvdXRnb2luZyBjb25uZWN0aW9uIGF0dGVtcHRzLgorCQkyIEVuYWJsZSBFQ04gd2hlbiByZXF1ZXN0ZWQgYnkgaW5jb21pbmcgY29ubmVjdGlvbnMKKwkJICBidXQgZG8gbm90IHJlcXVlc3QgRUNOIG9uIG91dGdvaW5nIGNvbm5lY3Rpb25zLgorCURlZmF1bHQ6IDIKKwordGNwX2Vjbl9mYWxsYmFjayAtIEJPT0xFQU4KKwlJZiB0aGUga2VybmVsIGRldGVjdHMgdGhhdCBFQ04gY29ubmVjdGlvbiBtaXNiZWhhdmVzLCBlbmFibGUgZmFsbAorCWJhY2sgdG8gbm9uLUVDTi4gQ3VycmVudGx5LCB0aGlzIGtub2IgaW1wbGVtZW50cyB0aGUgZmFsbGJhY2sKKwlmcm9tIFJGQzMxNjgsIHNlY3Rpb24gNi4xLjEuMS4sIGJ1dCB3ZSByZXNlcnZlIHRoYXQgaW4gZnV0dXJlLAorCWFkZGl0aW9uYWwgZGV0ZWN0aW9uIG1lY2hhbmlzbXMgY291bGQgYmUgaW1wbGVtZW50ZWQgdW5kZXIgdGhpcworCWtub2IuIFRoZSB2YWx1ZQlpcyBub3QgdXNlZCwgaWYgdGNwX2VjbiBvciBwZXIgcm91dGUgKG9yIGNvbmdlc3Rpb24KKwljb250cm9sKSBFQ04gc2V0dGluZ3MgYXJlIGRpc2FibGVkLgorCURlZmF1bHQ6IDEgKGZhbGxiYWNrIGVuYWJsZWQpCisKK3RjcF9mYWNrIC0gQk9PTEVBTgorCUVuYWJsZSBGQUNLIGNvbmdlc3Rpb24gYXZvaWRhbmNlIGFuZCBmYXN0IHJldHJhbnNtaXNzaW9uLgorCVRoZSB2YWx1ZSBpcyBub3QgdXNlZCwgaWYgdGNwX3NhY2sgaXMgbm90IGVuYWJsZWQuCisKK3RjcF9maW5fdGltZW91dCAtIElOVEVHRVIKKwlUaGUgbGVuZ3RoIG9mIHRpbWUgYW4gb3JwaGFuZWQgKG5vIGxvbmdlciByZWZlcmVuY2VkIGJ5IGFueQorCWFwcGxpY2F0aW9uKSBjb25uZWN0aW9uIHdpbGwgcmVtYWluIGluIHRoZSBGSU5fV0FJVF8yIHN0YXRlCisJYmVmb3JlIGl0IGlzIGFib3J0ZWQgYXQgdGhlIGxvY2FsIGVuZC4gIFdoaWxlIGEgcGVyZmVjdGx5CisJdmFsaWQgInJlY2VpdmUgb25seSIgc3RhdGUgZm9yIGFuIHVuLW9ycGhhbmVkIGNvbm5lY3Rpb24sIGFuCisJb3JwaGFuZWQgY29ubmVjdGlvbiBpbiBGSU5fV0FJVF8yIHN0YXRlIGNvdWxkIG90aGVyd2lzZSB3YWl0CisJZm9yZXZlciBmb3IgdGhlIHJlbW90ZSB0byBjbG9zZSBpdHMgZW5kIG9mIHRoZSBjb25uZWN0aW9uLgorCUNmLiB0Y3BfbWF4X29ycGhhbnMKKwlEZWZhdWx0OiA2MCBzZWNvbmRzCisKK3RjcF9mcnRvIC0gSU5URUdFUgorCUVuYWJsZXMgRm9yd2FyZCBSVE8tUmVjb3ZlcnkgKEYtUlRPKSBkZWZpbmVkIGluIFJGQzU2ODIuCisJRi1SVE8gaXMgYW4gZW5oYW5jZWQgcmVjb3ZlcnkgYWxnb3JpdGhtIGZvciBUQ1AgcmV0cmFuc21pc3Npb24KKwl0aW1lb3V0cy4gIEl0IGlzIHBhcnRpY3VsYXJseSBiZW5lZmljaWFsIGluIG5ldHdvcmtzIHdoZXJlIHRoZQorCVJUVCBmbHVjdHVhdGVzIChlLmcuLCB3aXJlbGVzcykuIEYtUlRPIGlzIHNlbmRlci1zaWRlIG9ubHkKKwltb2RpZmljYXRpb24uIEl0IGRvZXMgbm90IHJlcXVpcmUgYW55IHN1cHBvcnQgZnJvbSB0aGUgcGVlci4KKworCUJ5IGRlZmF1bHQgaXQncyBlbmFibGVkIHdpdGggYSBub24temVybyB2YWx1ZS4gMCBkaXNhYmxlcyBGLVJUTy4KKwordGNwX2ludmFsaWRfcmF0ZWxpbWl0IC0gSU5URUdFUgorCUxpbWl0IHRoZSBtYXhpbWFsIHJhdGUgZm9yIHNlbmRpbmcgZHVwbGljYXRlIGFja25vd2xlZGdtZW50cworCWluIHJlc3BvbnNlIHRvIGluY29taW5nIFRDUCBwYWNrZXRzIHRoYXQgYXJlIGZvciBhbiBleGlzdGluZworCWNvbm5lY3Rpb24gYnV0IHRoYXQgYXJlIGludmFsaWQgZHVlIHRvIGFueSBvZiB0aGVzZSByZWFzb25zOgorCisJICAoYSkgb3V0LW9mLXdpbmRvdyBzZXF1ZW5jZSBudW1iZXIsCisJICAoYikgb3V0LW9mLXdpbmRvdyBhY2tub3dsZWRnbWVudCBudW1iZXIsIG9yCisJICAoYykgUEFXUyAoUHJvdGVjdGlvbiBBZ2FpbnN0IFdyYXBwZWQgU2VxdWVuY2UgbnVtYmVycykgY2hlY2sgZmFpbHVyZQorCisJVGhpcyBjYW4gaGVscCBtaXRpZ2F0ZSBzaW1wbGUgImFjayBsb29wIiBEb1MgYXR0YWNrcywgd2hlcmVpbgorCWEgYnVnZ3kgb3IgbWFsaWNpb3VzIG1pZGRsZWJveCBvciBtYW4taW4tdGhlLW1pZGRsZSBjYW4KKwlyZXdyaXRlIFRDUCBoZWFkZXIgZmllbGRzIGluIG1hbm5lciB0aGF0IGNhdXNlcyBlYWNoIGVuZHBvaW50CisJdG8gdGhpbmsgdGhhdCB0aGUgb3RoZXIgaXMgc2VuZGluZyBpbnZhbGlkIFRDUCBzZWdtZW50cywgdGh1cworCWNhdXNpbmcgZWFjaCBzaWRlIHRvIHNlbmQgYW4gdW50ZXJtaW5hdGluZyBzdHJlYW0gb2YgZHVwbGljYXRlCisJYWNrbm93bGVkZ21lbnRzIGZvciBpbnZhbGlkIHNlZ21lbnRzLgorCisJVXNpbmcgMCBkaXNhYmxlcyByYXRlLWxpbWl0aW5nIG9mIGR1cGFja3MgaW4gcmVzcG9uc2UgdG8KKwlpbnZhbGlkIHNlZ21lbnRzOyBvdGhlcndpc2UgdGhpcyB2YWx1ZSBzcGVjaWZpZXMgdGhlIG1pbmltYWwKKwlzcGFjZSBiZXR3ZWVuIHNlbmRpbmcgc3VjaCBkdXBhY2tzLCBpbiBtaWxsaXNlY29uZHMuCisKKwlEZWZhdWx0OiA1MDAgKG1pbGxpc2Vjb25kcykuCisKK3RjcF9rZWVwYWxpdmVfdGltZSAtIElOVEVHRVIKKwlIb3cgb2Z0ZW4gVENQIHNlbmRzIG91dCBrZWVwYWxpdmUgbWVzc2FnZXMgd2hlbiBrZWVwYWxpdmUgaXMgZW5hYmxlZC4KKwlEZWZhdWx0OiAyaG91cnMuCisKK3RjcF9rZWVwYWxpdmVfcHJvYmVzIC0gSU5URUdFUgorCUhvdyBtYW55IGtlZXBhbGl2ZSBwcm9iZXMgVENQIHNlbmRzIG91dCwgdW50aWwgaXQgZGVjaWRlcyB0aGF0IHRoZQorCWNvbm5lY3Rpb24gaXMgYnJva2VuLiBEZWZhdWx0IHZhbHVlOiA5LgorCit0Y3Bfa2VlcGFsaXZlX2ludHZsIC0gSU5URUdFUgorCUhvdyBmcmVxdWVudGx5IHRoZSBwcm9iZXMgYXJlIHNlbmQgb3V0LiBNdWx0aXBsaWVkIGJ5CisJdGNwX2tlZXBhbGl2ZV9wcm9iZXMgaXQgaXMgdGltZSB0byBraWxsIG5vdCByZXNwb25kaW5nIGNvbm5lY3Rpb24sCisJYWZ0ZXIgcHJvYmVzIHN0YXJ0ZWQuIERlZmF1bHQgdmFsdWU6IDc1c2VjIGkuZS4gY29ubmVjdGlvbgorCXdpbGwgYmUgYWJvcnRlZCBhZnRlciB+MTEgbWludXRlcyBvZiByZXRyaWVzLgorCit0Y3BfbG93X2xhdGVuY3kgLSBCT09MRUFOCisJSWYgc2V0LCB0aGUgVENQIHN0YWNrIG1ha2VzIGRlY2lzaW9ucyB0aGF0IHByZWZlciBsb3dlcgorCWxhdGVuY3kgYXMgb3Bwb3NlZCB0byBoaWdoZXIgdGhyb3VnaHB1dC4gIEJ5IGRlZmF1bHQsIHRoaXMKKwlvcHRpb24gaXMgbm90IHNldCBtZWFuaW5nIHRoYXQgaGlnaGVyIHRocm91Z2hwdXQgaXMgcHJlZmVycmVkLgorCUFuIGV4YW1wbGUgb2YgYW4gYXBwbGljYXRpb24gd2hlcmUgdGhpcyBkZWZhdWx0IHNob3VsZCBiZQorCWNoYW5nZWQgd291bGQgYmUgYSBCZW93dWxmIGNvbXB1dGUgY2x1c3Rlci4KKwlEZWZhdWx0OiAwCisKK3RjcF9tYXhfb3JwaGFucyAtIElOVEVHRVIKKwlNYXhpbWFsIG51bWJlciBvZiBUQ1Agc29ja2V0cyBub3QgYXR0YWNoZWQgdG8gYW55IHVzZXIgZmlsZSBoYW5kbGUsCisJaGVsZCBieSBzeXN0ZW0uCUlmIHRoaXMgbnVtYmVyIGlzIGV4Y2VlZGVkIG9ycGhhbmVkIGNvbm5lY3Rpb25zIGFyZQorCXJlc2V0IGltbWVkaWF0ZWx5IGFuZCB3YXJuaW5nIGlzIHByaW50ZWQuIFRoaXMgbGltaXQgZXhpc3RzCisJb25seSB0byBwcmV2ZW50IHNpbXBsZSBEb1MgYXR0YWNrcywgeW91IF9tdXN0XyBub3QgcmVseSBvbiB0aGlzCisJb3IgbG93ZXIgdGhlIGxpbWl0IGFydGlmaWNpYWxseSwgYnV0IHJhdGhlciBpbmNyZWFzZSBpdAorCShwcm9iYWJseSwgYWZ0ZXIgaW5jcmVhc2luZyBpbnN0YWxsZWQgbWVtb3J5KSwKKwlpZiBuZXR3b3JrIGNvbmRpdGlvbnMgcmVxdWlyZSBtb3JlIHRoYW4gZGVmYXVsdCB2YWx1ZSwKKwlhbmQgdHVuZSBuZXR3b3JrIHNlcnZpY2VzIHRvIGxpbmdlciBhbmQga2lsbCBzdWNoIHN0YXRlcworCW1vcmUgYWdncmVzc2l2ZWx5LiBMZXQgbWUgdG8gcmVtaW5kIGFnYWluOiBlYWNoIG9ycGhhbiBlYXRzCisJdXAgdG8gfjY0SyBvZiB1bnN3YXBwYWJsZSBtZW1vcnkuCisKK3RjcF9tYXhfc3luX2JhY2tsb2cgLSBJTlRFR0VSCisJTWF4aW1hbCBudW1iZXIgb2YgcmVtZW1iZXJlZCBjb25uZWN0aW9uIHJlcXVlc3RzLCB3aGljaCBoYXZlIG5vdAorCXJlY2VpdmVkIGFuIGFja25vd2xlZGdtZW50IGZyb20gY29ubmVjdGluZyBjbGllbnQuCisJVGhlIG1pbmltYWwgdmFsdWUgaXMgMTI4IGZvciBsb3cgbWVtb3J5IG1hY2hpbmVzLCBhbmQgaXQgd2lsbAorCWluY3JlYXNlIGluIHByb3BvcnRpb24gdG8gdGhlIG1lbW9yeSBvZiBtYWNoaW5lLgorCUlmIHNlcnZlciBzdWZmZXJzIGZyb20gb3ZlcmxvYWQsIHRyeSBpbmNyZWFzaW5nIHRoaXMgbnVtYmVyLgorCit0Y3BfbWF4X3R3X2J1Y2tldHMgLSBJTlRFR0VSCisJTWF4aW1hbCBudW1iZXIgb2YgdGltZXdhaXQgc29ja2V0cyBoZWxkIGJ5IHN5c3RlbSBzaW11bHRhbmVvdXNseS4KKwlJZiB0aGlzIG51bWJlciBpcyBleGNlZWRlZCB0aW1lLXdhaXQgc29ja2V0IGlzIGltbWVkaWF0ZWx5IGRlc3Ryb3llZAorCWFuZCB3YXJuaW5nIGlzIHByaW50ZWQuIFRoaXMgbGltaXQgZXhpc3RzIG9ubHkgdG8gcHJldmVudAorCXNpbXBsZSBEb1MgYXR0YWNrcywgeW91IF9tdXN0XyBub3QgbG93ZXIgdGhlIGxpbWl0IGFydGlmaWNpYWxseSwKKwlidXQgcmF0aGVyIGluY3JlYXNlIGl0IChwcm9iYWJseSwgYWZ0ZXIgaW5jcmVhc2luZyBpbnN0YWxsZWQgbWVtb3J5KSwKKwlpZiBuZXR3b3JrIGNvbmRpdGlvbnMgcmVxdWlyZSBtb3JlIHRoYW4gZGVmYXVsdCB2YWx1ZS4KKwordGNwX21lbSAtIHZlY3RvciBvZiAzIElOVEVHRVJzOiBtaW4sIHByZXNzdXJlLCBtYXgKKwltaW46IGJlbG93IHRoaXMgbnVtYmVyIG9mIHBhZ2VzIFRDUCBpcyBub3QgYm90aGVyZWQgYWJvdXQgaXRzCisJbWVtb3J5IGFwcGV0aXRlLgorCisJcHJlc3N1cmU6IHdoZW4gYW1vdW50IG9mIG1lbW9yeSBhbGxvY2F0ZWQgYnkgVENQIGV4Y2VlZHMgdGhpcyBudW1iZXIKKwlvZiBwYWdlcywgVENQIG1vZGVyYXRlcyBpdHMgbWVtb3J5IGNvbnN1bXB0aW9uIGFuZCBlbnRlcnMgbWVtb3J5CisJcHJlc3N1cmUgbW9kZSwgd2hpY2ggaXMgZXhpdGVkIHdoZW4gbWVtb3J5IGNvbnN1bXB0aW9uIGZhbGxzCisJdW5kZXIgIm1pbiIuCisKKwltYXg6IG51bWJlciBvZiBwYWdlcyBhbGxvd2VkIGZvciBxdWV1ZWluZyBieSBhbGwgVENQIHNvY2tldHMuCisKKwlEZWZhdWx0cyBhcmUgY2FsY3VsYXRlZCBhdCBib290IHRpbWUgZnJvbSBhbW91bnQgb2YgYXZhaWxhYmxlCisJbWVtb3J5LgorCit0Y3BfbWluX3J0dF93bGVuIC0gSU5URUdFUgorCVRoZSB3aW5kb3cgbGVuZ3RoIG9mIHRoZSB3aW5kb3dlZCBtaW4gZmlsdGVyIHRvIHRyYWNrIHRoZSBtaW5pbXVtIFJUVC4KKwlBIHNob3J0ZXIgd2luZG93IGxldHMgYSBmbG93IG1vcmUgcXVpY2tseSBwaWNrIHVwIG5ldyAoaGlnaGVyKQorCW1pbmltdW0gUlRUIHdoZW4gaXQgaXMgbW92ZWQgdG8gYSBsb25nZXIgcGF0aCAoZS5nLiwgZHVlIHRvIHRyYWZmaWMKKwllbmdpbmVlcmluZykuIEEgbG9uZ2VyIHdpbmRvdyBtYWtlcyB0aGUgZmlsdGVyIG1vcmUgcmVzaXN0YW50IHRvIFJUVAorCWluZmxhdGlvbnMgc3VjaCBhcyB0cmFuc2llbnQgY29uZ2VzdGlvbi4gVGhlIHVuaXQgaXMgc2Vjb25kcy4KKwlEZWZhdWx0OiAzMDAKKwordGNwX21vZGVyYXRlX3JjdmJ1ZiAtIEJPT0xFQU4KKwlJZiBzZXQsIFRDUCBwZXJmb3JtcyByZWNlaXZlIGJ1ZmZlciBhdXRvLXR1bmluZywgYXR0ZW1wdGluZyB0bworCWF1dG9tYXRpY2FsbHkgc2l6ZSB0aGUgYnVmZmVyIChubyBncmVhdGVyIHRoYW4gdGNwX3JtZW1bMl0pIHRvCisJbWF0Y2ggdGhlIHNpemUgcmVxdWlyZWQgYnkgdGhlIHBhdGggZm9yIGZ1bGwgdGhyb3VnaHB1dC4gIEVuYWJsZWQgYnkKKwlkZWZhdWx0LgorCit0Y3BfbXR1X3Byb2JpbmcgLSBJTlRFR0VSCisJQ29udHJvbHMgVENQIFBhY2tldGl6YXRpb24tTGF5ZXIgUGF0aCBNVFUgRGlzY292ZXJ5LiAgVGFrZXMgdGhyZWUKKwl2YWx1ZXM6CisJICAwIC0gRGlzYWJsZWQKKwkgIDEgLSBEaXNhYmxlZCBieSBkZWZhdWx0LCBlbmFibGVkIHdoZW4gYW4gSUNNUCBibGFjayBob2xlIGRldGVjdGVkCisJICAyIC0gQWx3YXlzIGVuYWJsZWQsIHVzZSBpbml0aWFsIE1TUyBvZiB0Y3BfYmFzZV9tc3MuCisKK3RjcF9wcm9iZV9pbnRlcnZhbCAtIElOVEVHRVIKKwlDb250cm9scyBob3cgb2Z0ZW4gdG8gc3RhcnQgVENQIFBhY2tldGl6YXRpb24tTGF5ZXIgUGF0aCBNVFUKKwlEaXNjb3ZlcnkgcmVwcm9iZS4gVGhlIGRlZmF1bHQgaXMgcmVwcm9iaW5nIGV2ZXJ5IDEwIG1pbnV0ZXMgYXMKKwlwZXIgUkZDNDgyMS4KKwordGNwX3Byb2JlX3RocmVzaG9sZCAtIElOVEVHRVIKKwlDb250cm9scyB3aGVuIFRDUCBQYWNrZXRpemF0aW9uLUxheWVyIFBhdGggTVRVIERpc2NvdmVyeSBwcm9iaW5nCisJd2lsbCBzdG9wIGluIHJlc3BlY3QgdG8gdGhlIHdpZHRoIG9mIHNlYXJjaCByYW5nZSBpbiBieXRlcy4gRGVmYXVsdAorCWlzIDggYnl0ZXMuCisKK3RjcF9ub19tZXRyaWNzX3NhdmUgLSBCT09MRUFOCisJQnkgZGVmYXVsdCwgVENQIHNhdmVzIHZhcmlvdXMgY29ubmVjdGlvbiBtZXRyaWNzIGluIHRoZSByb3V0ZSBjYWNoZQorCXdoZW4gdGhlIGNvbm5lY3Rpb24gY2xvc2VzLCBzbyB0aGF0IGNvbm5lY3Rpb25zIGVzdGFibGlzaGVkIGluIHRoZQorCW5lYXIgZnV0dXJlIGNhbiB1c2UgdGhlc2UgdG8gc2V0IGluaXRpYWwgY29uZGl0aW9ucy4gIFVzdWFsbHksIHRoaXMKKwlpbmNyZWFzZXMgb3ZlcmFsbCBwZXJmb3JtYW5jZSwgYnV0IG1heSBzb21ldGltZXMgY2F1c2UgcGVyZm9ybWFuY2UKKwlkZWdyYWRhdGlvbi4gIElmIHNldCwgVENQIHdpbGwgbm90IGNhY2hlIG1ldHJpY3Mgb24gY2xvc2luZworCWNvbm5lY3Rpb25zLgorCit0Y3Bfb3JwaGFuX3JldHJpZXMgLSBJTlRFR0VSCisJVGhpcyB2YWx1ZSBpbmZsdWVuY2VzIHRoZSB0aW1lb3V0IG9mIGEgbG9jYWxseSBjbG9zZWQgVENQIGNvbm5lY3Rpb24sCisJd2hlbiBSVE8gcmV0cmFuc21pc3Npb25zIHJlbWFpbiB1bmFja25vd2xlZGdlZC4KKwlTZWUgdGNwX3JldHJpZXMyIGZvciBtb3JlIGRldGFpbHMuCisKKwlUaGUgZGVmYXVsdCB2YWx1ZSBpcyA4LgorCUlmIHlvdXIgbWFjaGluZSBpcyBhIGxvYWRlZCBXRUIgc2VydmVyLAorCXlvdSBzaG91bGQgdGhpbmsgYWJvdXQgbG93ZXJpbmcgdGhpcyB2YWx1ZSwgc3VjaCBzb2NrZXRzCisJbWF5IGNvbnN1bWUgc2lnbmlmaWNhbnQgcmVzb3VyY2VzLiBDZi4gdGNwX21heF9vcnBoYW5zLgorCit0Y3BfcmVjb3ZlcnkgLSBJTlRFR0VSCisJVGhpcyB2YWx1ZSBpcyBhIGJpdG1hcCB0byBlbmFibGUgdmFyaW91cyBleHBlcmltZW50YWwgbG9zcyByZWNvdmVyeQorCWZlYXR1cmVzLgorCisJUkFDSzogMHgxIGVuYWJsZXMgdGhlIFJBQ0sgbG9zcyBkZXRlY3Rpb24gZm9yIGZhc3QgZGV0ZWN0aW9uIG9mIGxvc3QKKwkgICAgICByZXRyYW5zbWlzc2lvbnMgYW5kIHRhaWwgZHJvcHMuCisKKwlEZWZhdWx0OiAweDEKKwordGNwX3Jlb3JkZXJpbmcgLSBJTlRFR0VSCisJSW5pdGlhbCByZW9yZGVyaW5nIGxldmVsIG9mIHBhY2tldHMgaW4gYSBUQ1Agc3RyZWFtLgorCVRDUCBzdGFjayBjYW4gdGhlbiBkeW5hbWljYWxseSBhZGp1c3QgZmxvdyByZW9yZGVyaW5nIGxldmVsCisJYmV0d2VlbiB0aGlzIGluaXRpYWwgdmFsdWUgYW5kIHRjcF9tYXhfcmVvcmRlcmluZworCURlZmF1bHQ6IDMKKwordGNwX21heF9yZW9yZGVyaW5nIC0gSU5URUdFUgorCU1heGltYWwgcmVvcmRlcmluZyBsZXZlbCBvZiBwYWNrZXRzIGluIGEgVENQIHN0cmVhbS4KKwkzMDAgaXMgYSBmYWlybHkgY29uc2VydmF0aXZlIHZhbHVlLCBidXQgeW91IG1pZ2h0IGluY3JlYXNlIGl0CisJaWYgcGF0aHMgYXJlIHVzaW5nIHBlciBwYWNrZXQgbG9hZCBiYWxhbmNpbmcgKGxpa2UgYm9uZGluZyByciBtb2RlKQorCURlZmF1bHQ6IDMwMAorCit0Y3BfcmV0cmFuc19jb2xsYXBzZSAtIEJPT0xFQU4KKwlCdWctdG8tYnVnIGNvbXBhdGliaWxpdHkgd2l0aCBzb21lIGJyb2tlbiBwcmludGVycy4KKwlPbiByZXRyYW5zbWl0IHRyeSB0byBzZW5kIGJpZ2dlciBwYWNrZXRzIHRvIHdvcmsgYXJvdW5kIGJ1Z3MgaW4KKwljZXJ0YWluIFRDUCBzdGFja3MuCisKK3RjcF9yZXRyaWVzMSAtIElOVEVHRVIKKwlUaGlzIHZhbHVlIGluZmx1ZW5jZXMgdGhlIHRpbWUsIGFmdGVyIHdoaWNoIFRDUCBkZWNpZGVzLCB0aGF0CisJc29tZXRoaW5nIGlzIHdyb25nIGR1ZSB0byB1bmFja25vd2xlZGdlZCBSVE8gcmV0cmFuc21pc3Npb25zLAorCWFuZCByZXBvcnRzIHRoaXMgc3VzcGljaW9uIHRvIHRoZSBuZXR3b3JrIGxheWVyLgorCVNlZSB0Y3BfcmV0cmllczIgZm9yIG1vcmUgZGV0YWlscy4KKworCVJGQyAxMTIyIHJlY29tbWVuZHMgYXQgbGVhc3QgMyByZXRyYW5zbWlzc2lvbnMsIHdoaWNoIGlzIHRoZQorCWRlZmF1bHQuCisKK3RjcF9yZXRyaWVzMiAtIElOVEVHRVIKKwlUaGlzIHZhbHVlIGluZmx1ZW5jZXMgdGhlIHRpbWVvdXQgb2YgYW4gYWxpdmUgVENQIGNvbm5lY3Rpb24sCisJd2hlbiBSVE8gcmV0cmFuc21pc3Npb25zIHJlbWFpbiB1bmFja25vd2xlZGdlZC4KKwlHaXZlbiBhIHZhbHVlIG9mIE4sIGEgaHlwb3RoZXRpY2FsIFRDUCBjb25uZWN0aW9uIGZvbGxvd2luZworCWV4cG9uZW50aWFsIGJhY2tvZmYgd2l0aCBhbiBpbml0aWFsIFJUTyBvZiBUQ1BfUlRPX01JTiB3b3VsZAorCXJldHJhbnNtaXQgTiB0aW1lcyBiZWZvcmUga2lsbGluZyB0aGUgY29ubmVjdGlvbiBhdCB0aGUgKE4rMSl0aCBSVE8uCisKKwlUaGUgZGVmYXVsdCB2YWx1ZSBvZiAxNSB5aWVsZHMgYSBoeXBvdGhldGljYWwgdGltZW91dCBvZiA5MjQuNgorCXNlY29uZHMgYW5kIGlzIGEgbG93ZXIgYm91bmQgZm9yIHRoZSBlZmZlY3RpdmUgdGltZW91dC4KKwlUQ1Agd2lsbCBlZmZlY3RpdmVseSB0aW1lIG91dCBhdCB0aGUgZmlyc3QgUlRPIHdoaWNoIGV4Y2VlZHMgdGhlCisJaHlwb3RoZXRpY2FsIHRpbWVvdXQuCisKKwlSRkMgMTEyMiByZWNvbW1lbmRzIGF0IGxlYXN0IDEwMCBzZWNvbmRzIGZvciB0aGUgdGltZW91dCwKKwl3aGljaCBjb3JyZXNwb25kcyB0byBhIHZhbHVlIG9mIGF0IGxlYXN0IDguCisKK3RjcF9yZmMxMzM3IC0gQk9PTEVBTgorCUlmIHNldCwgdGhlIFRDUCBzdGFjayBiZWhhdmVzIGNvbmZvcm1pbmcgdG8gUkZDMTMzNy4gSWYgdW5zZXQsCisJd2UgYXJlIG5vdCBjb25mb3JtaW5nIHRvIFJGQywgYnV0IHByZXZlbnQgVENQIFRJTUVfV0FJVAorCWFzc2Fzc2luYXRpb24uCisJRGVmYXVsdDogMAorCit0Y3Bfcm1lbSAtIHZlY3RvciBvZiAzIElOVEVHRVJzOiBtaW4sIGRlZmF1bHQsIG1heAorCW1pbjogTWluaW1hbCBzaXplIG9mIHJlY2VpdmUgYnVmZmVyIHVzZWQgYnkgVENQIHNvY2tldHMuCisJSXQgaXMgZ3VhcmFudGVlZCB0byBlYWNoIFRDUCBzb2NrZXQsIGV2ZW4gdW5kZXIgbW9kZXJhdGUgbWVtb3J5CisJcHJlc3N1cmUuCisJRGVmYXVsdDogMSBwYWdlCisKKwlkZWZhdWx0OiBpbml0aWFsIHNpemUgb2YgcmVjZWl2ZSBidWZmZXIgdXNlZCBieSBUQ1Agc29ja2V0cy4KKwlUaGlzIHZhbHVlIG92ZXJyaWRlcyBuZXQuY29yZS5ybWVtX2RlZmF1bHQgdXNlZCBieSBvdGhlciBwcm90b2NvbHMuCisJRGVmYXVsdDogODczODAgYnl0ZXMuIFRoaXMgdmFsdWUgcmVzdWx0cyBpbiB3aW5kb3cgb2YgNjU1MzUgd2l0aAorCWRlZmF1bHQgc2V0dGluZyBvZiB0Y3BfYWR2X3dpbl9zY2FsZSBhbmQgdGNwX2FwcF93aW46MCBhbmQgYSBiaXQKKwlsZXNzIGZvciBkZWZhdWx0IHRjcF9hcHBfd2luLiBTZWUgYmVsb3cgYWJvdXQgdGhlc2UgdmFyaWFibGVzLgorCisJbWF4OiBtYXhpbWFsIHNpemUgb2YgcmVjZWl2ZSBidWZmZXIgYWxsb3dlZCBmb3IgYXV0b21hdGljYWxseQorCXNlbGVjdGVkIHJlY2VpdmVyIGJ1ZmZlcnMgZm9yIFRDUCBzb2NrZXQuIFRoaXMgdmFsdWUgZG9lcyBub3Qgb3ZlcnJpZGUKKwluZXQuY29yZS5ybWVtX21heC4gIENhbGxpbmcgc2V0c29ja29wdCgpIHdpdGggU09fUkNWQlVGIGRpc2FibGVzCisJYXV0b21hdGljIHR1bmluZyBvZiB0aGF0IHNvY2tldCdzIHJlY2VpdmUgYnVmZmVyIHNpemUsIGluIHdoaWNoCisJY2FzZSB0aGlzIHZhbHVlIGlzIGlnbm9yZWQuCisJRGVmYXVsdDogYmV0d2VlbiA4NzM4MEIgYW5kIDZNQiwgZGVwZW5kaW5nIG9uIFJBTSBzaXplLgorCit0Y3Bfc2FjayAtIEJPT0xFQU4KKwlFbmFibGUgc2VsZWN0IGFja25vd2xlZGdtZW50cyAoU0FDS1MpLgorCit0Y3Bfc2xvd19zdGFydF9hZnRlcl9pZGxlIC0gQk9PTEVBTgorCUlmIHNldCwgcHJvdmlkZSBSRkMyODYxIGJlaGF2aW9yIGFuZCB0aW1lIG91dCB0aGUgY29uZ2VzdGlvbgorCXdpbmRvdyBhZnRlciBhbiBpZGxlIHBlcmlvZC4gIEFuIGlkbGUgcGVyaW9kIGlzIGRlZmluZWQgYXQKKwl0aGUgY3VycmVudCBSVE8uICBJZiB1bnNldCwgdGhlIGNvbmdlc3Rpb24gd2luZG93IHdpbGwgbm90CisJYmUgdGltZWQgb3V0IGFmdGVyIGFuIGlkbGUgcGVyaW9kLgorCURlZmF1bHQ6IDEKKwordGNwX3N0ZHVyZyAtIEJPT0xFQU4KKwlVc2UgdGhlIEhvc3QgcmVxdWlyZW1lbnRzIGludGVycHJldGF0aW9uIG9mIHRoZSBUQ1AgdXJnZW50IHBvaW50ZXIgZmllbGQuCisJTW9zdCBob3N0cyB1c2UgdGhlIG9sZGVyIEJTRCBpbnRlcnByZXRhdGlvbiwgc28gaWYgeW91IHR1cm4gdGhpcyBvbgorCUxpbnV4IG1pZ2h0IG5vdCBjb21tdW5pY2F0ZSBjb3JyZWN0bHkgd2l0aCB0aGVtLgorCURlZmF1bHQ6IEZBTFNFCisKK3RjcF9zeW5hY2tfcmV0cmllcyAtIElOVEVHRVIKKwlOdW1iZXIgb2YgdGltZXMgU1lOQUNLcyBmb3IgYSBwYXNzaXZlIFRDUCBjb25uZWN0aW9uIGF0dGVtcHQgd2lsbAorCWJlIHJldHJhbnNtaXR0ZWQuIFNob3VsZCBub3QgYmUgaGlnaGVyIHRoYW4gMjU1LiBEZWZhdWx0IHZhbHVlCisJaXMgNSwgd2hpY2ggY29ycmVzcG9uZHMgdG8gMzFzZWNvbmRzIHRpbGwgdGhlIGxhc3QgcmV0cmFuc21pc3Npb24KKwl3aXRoIHRoZSBjdXJyZW50IGluaXRpYWwgUlRPIG9mIDFzZWNvbmQuIFdpdGggdGhpcyB0aGUgZmluYWwgdGltZW91dAorCWZvciBhIHBhc3NpdmUgVENQIGNvbm5lY3Rpb24gd2lsbCBoYXBwZW4gYWZ0ZXIgNjNzZWNvbmRzLgorCit0Y3Bfc3luY29va2llcyAtIEJPT0xFQU4KKwlPbmx5IHZhbGlkIHdoZW4gdGhlIGtlcm5lbCB3YXMgY29tcGlsZWQgd2l0aCBDT05GSUdfU1lOX0NPT0tJRVMKKwlTZW5kIG91dCBzeW5jb29raWVzIHdoZW4gdGhlIHN5biBiYWNrbG9nIHF1ZXVlIG9mIGEgc29ja2V0CisJb3ZlcmZsb3dzLiBUaGlzIGlzIHRvIHByZXZlbnQgYWdhaW5zdCB0aGUgY29tbW9uICdTWU4gZmxvb2QgYXR0YWNrJworCURlZmF1bHQ6IDEKKworCU5vdGUsIHRoYXQgc3luY29va2llcyBpcyBmYWxsYmFjayBmYWNpbGl0eS4KKwlJdCBNVVNUIE5PVCBiZSB1c2VkIHRvIGhlbHAgaGlnaGx5IGxvYWRlZCBzZXJ2ZXJzIHRvIHN0YW5kCisJYWdhaW5zdCBsZWdhbCBjb25uZWN0aW9uIHJhdGUuIElmIHlvdSBzZWUgU1lOIGZsb29kIHdhcm5pbmdzCisJaW4geW91ciBsb2dzLCBidXQgaW52ZXN0aWdhdGlvbglzaG93cyB0aGF0IHRoZXkgb2NjdXIKKwliZWNhdXNlIG9mIG92ZXJsb2FkIHdpdGggbGVnYWwgY29ubmVjdGlvbnMsIHlvdSBzaG91bGQgdHVuZQorCWFub3RoZXIgcGFyYW1ldGVycyB1bnRpbCB0aGlzIHdhcm5pbmcgZGlzYXBwZWFyLgorCVNlZTogdGNwX21heF9zeW5fYmFja2xvZywgdGNwX3N5bmFja19yZXRyaWVzLCB0Y3BfYWJvcnRfb25fb3ZlcmZsb3cuCisKKwlzeW5jb29raWVzIHNlcmlvdXNseSB2aW9sYXRlIFRDUCBwcm90b2NvbCwgZG8gbm90IGFsbG93CisJdG8gdXNlIFRDUCBleHRlbnNpb25zLCBjYW4gcmVzdWx0IGluIHNlcmlvdXMgZGVncmFkYXRpb24KKwlvZiBzb21lIHNlcnZpY2VzIChmLmUuIFNNVFAgcmVsYXlpbmcpLCB2aXNpYmxlIG5vdCBieSB5b3UsCisJYnV0IHlvdXIgY2xpZW50cyBhbmQgcmVsYXlzLCBjb250YWN0aW5nIHlvdS4gV2hpbGUgeW91IHNlZQorCVNZTiBmbG9vZCB3YXJuaW5ncyBpbiBsb2dzIG5vdCBiZWluZyByZWFsbHkgZmxvb2RlZCwgeW91ciBzZXJ2ZXIKKwlpcyBzZXJpb3VzbHkgbWlzY29uZmlndXJlZC4KKworCUlmIHlvdSB3YW50IHRvIHRlc3Qgd2hpY2ggZWZmZWN0cyBzeW5jb29raWVzIGhhdmUgdG8geW91cgorCW5ldHdvcmsgY29ubmVjdGlvbnMgeW91IGNhbiBzZXQgdGhpcyBrbm9iIHRvIDIgdG8gZW5hYmxlCisJdW5jb25kaXRpb25hbGx5IGdlbmVyYXRpb24gb2Ygc3luY29va2llcy4KKwordGNwX2Zhc3RvcGVuIC0gSU5URUdFUgorCUVuYWJsZSBUQ1AgRmFzdCBPcGVuIGZlYXR1cmUgKGRyYWZ0LWlldGYtdGNwbS1mYXN0b3BlbikgdG8gc2VuZCBkYXRhCisJaW4gdGhlIG9wZW5pbmcgU1lOIHBhY2tldC4gVG8gdXNlIHRoaXMgZmVhdHVyZSwgdGhlIGNsaWVudCBhcHBsaWNhdGlvbgorCW11c3QgdXNlIHNlbmRtc2coKSBvciBzZW5kdG8oKSB3aXRoIE1TR19GQVNUT1BFTiBmbGFnIHJhdGhlciB0aGFuCisJY29ubmVjdCgpIHRvIHBlcmZvcm0gYSBUQ1AgaGFuZHNoYWtlIGF1dG9tYXRpY2FsbHkuCisKKwlUaGUgdmFsdWVzIChiaXRtYXApIGFyZQorCTE6IEVuYWJsZXMgc2VuZGluZyBkYXRhIGluIHRoZSBvcGVuaW5nIFNZTiBvbiB0aGUgY2xpZW50IHcvIE1TR19GQVNUT1BFTi4KKwkyOiBFbmFibGVzIFRDUCBGYXN0IE9wZW4gb24gdGhlIHNlcnZlciBzaWRlLCBpLmUuLCBhbGxvd2luZyBkYXRhIGluCisJICAgYSBTWU4gcGFja2V0IHRvIGJlIGFjY2VwdGVkIGFuZCBwYXNzZWQgdG8gdGhlIGFwcGxpY2F0aW9uIGJlZm9yZQorCSAgIDMtd2F5IGhhbmQgc2hha2UgZmluaXNoZXMuCisJNDogU2VuZCBkYXRhIGluIHRoZSBvcGVuaW5nIFNZTiByZWdhcmRsZXNzIG9mIGNvb2tpZSBhdmFpbGFiaWxpdHkgYW5kCisJICAgd2l0aG91dCBhIGNvb2tpZSBvcHRpb24uCisJMHgxMDA6IEFjY2VwdCBTWU4gZGF0YSB3L28gdmFsaWRhdGluZyB0aGUgY29va2llLgorCTB4MjAwOiBBY2NlcHQgZGF0YS1pbi1TWU4gdy9vIGFueSBjb29raWUgb3B0aW9uIHByZXNlbnQuCisJMHg0MDAvMHg4MDA6IEVuYWJsZSBGYXN0IE9wZW4gb24gYWxsIGxpc3RlbmVycyByZWdhcmRsZXNzIG9mIHRoZQorCSAgIFRDUF9GQVNUT1BFTiBzb2NrZXQgb3B0aW9uLiBUaGUgdHdvIGRpZmZlcmVudCBmbGFncyBkZXNpZ25hdGUgdHdvCisJICAgZGlmZmVyZW50IHdheXMgb2Ygc2V0dGluZyBtYXhfcWxlbiB3aXRob3V0IHRoZSBUQ1BfRkFTVE9QRU4gc29ja2V0CisJICAgb3B0aW9uLgorCisJRGVmYXVsdDogMQorCisJTm90ZSB0aGF0IHRoZSBjbGllbnQgJiBzZXJ2ZXIgc2lkZSBGYXN0IE9wZW4gZmxhZ3MgKDEgYW5kIDIKKwlyZXNwZWN0aXZlbHkpIG11c3QgYmUgYWxzbyBlbmFibGVkIGJlZm9yZSB0aGUgcmVzdCBvZiBmbGFncyBjYW4gdGFrZQorCWVmZmVjdC4KKworCVNlZSBpbmNsdWRlL25ldC90Y3AuaCBhbmQgdGhlIGNvZGUgZm9yIG1vcmUgZGV0YWlscy4KKwordGNwX3N5bl9yZXRyaWVzIC0gSU5URUdFUgorCU51bWJlciBvZiB0aW1lcyBpbml0aWFsIFNZTnMgZm9yIGFuIGFjdGl2ZSBUQ1AgY29ubmVjdGlvbiBhdHRlbXB0CisJd2lsbCBiZSByZXRyYW5zbWl0dGVkLiBTaG91bGQgbm90IGJlIGhpZ2hlciB0aGFuIDI1NS4gRGVmYXVsdCB2YWx1ZQorCWlzIDYsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIDYzc2Vjb25kcyB0aWxsIHRoZSBsYXN0IHJldHJhbnNtaXNzaW9uCisJd2l0aCB0aGUgY3VycmVudCBpbml0aWFsIFJUTyBvZiAxc2Vjb25kLiBXaXRoIHRoaXMgdGhlIGZpbmFsIHRpbWVvdXQKKwlmb3IgYW4gYWN0aXZlIFRDUCBjb25uZWN0aW9uIGF0dGVtcHQgd2lsbCBoYXBwZW4gYWZ0ZXIgMTI3c2Vjb25kcy4KKwordGNwX3RpbWVzdGFtcHMgLSBCT09MRUFOCisJRW5hYmxlIHRpbWVzdGFtcHMgYXMgZGVmaW5lZCBpbiBSRkMxMzIzLgorCit0Y3BfbWluX3Rzb19zZWdzIC0gSU5URUdFUgorCU1pbmltYWwgbnVtYmVyIG9mIHNlZ21lbnRzIHBlciBUU08gZnJhbWUuCisJU2luY2UgbGludXgtMy4xMiwgVENQIGRvZXMgYW4gYXV0b21hdGljIHNpemluZyBvZiBUU08gZnJhbWVzLAorCWRlcGVuZGluZyBvbiBmbG93IHJhdGUsIGluc3RlYWQgb2YgZmlsbGluZyA2NEtieXRlcyBwYWNrZXRzLgorCUZvciBzcGVjaWZpYyB1c2FnZXMsIGl0J3MgcG9zc2libGUgdG8gZm9yY2UgVENQIHRvIGJ1aWxkIGJpZworCVRTTyBmcmFtZXMuIE5vdGUgdGhhdCBUQ1Agc3RhY2sgbWlnaHQgc3BsaXQgdG9vIGJpZyBUU08gcGFja2V0cworCWlmIGF2YWlsYWJsZSB3aW5kb3cgaXMgdG9vIHNtYWxsLgorCURlZmF1bHQ6IDIKKwordGNwX3BhY2luZ19zc19yYXRpbyAtIElOVEVHRVIKKwlzay0+c2tfcGFjaW5nX3JhdGUgaXMgc2V0IGJ5IFRDUCBzdGFjayB1c2luZyBhIHJhdGlvIGFwcGxpZWQKKwl0byBjdXJyZW50IHJhdGUuIChjdXJyZW50X3JhdGUgPSBjd25kICogbXNzIC8gc3J0dCkKKwlJZiBUQ1AgaXMgaW4gc2xvdyBzdGFydCwgdGNwX3BhY2luZ19zc19yYXRpbyBpcyBhcHBsaWVkCisJdG8gbGV0IFRDUCBwcm9iZSBmb3IgYmlnZ2VyIHNwZWVkcywgYXNzdW1pbmcgY3duZCBjYW4gYmUKKwlkb3VibGVkIGV2ZXJ5IG90aGVyIFJUVC4KKwlEZWZhdWx0OiAyMDAKKwordGNwX3BhY2luZ19jYV9yYXRpbyAtIElOVEVHRVIKKwlzay0+c2tfcGFjaW5nX3JhdGUgaXMgc2V0IGJ5IFRDUCBzdGFjayB1c2luZyBhIHJhdGlvIGFwcGxpZWQKKwl0byBjdXJyZW50IHJhdGUuIChjdXJyZW50X3JhdGUgPSBjd25kICogbXNzIC8gc3J0dCkKKwlJZiBUQ1AgaXMgaW4gY29uZ2VzdGlvbiBhdm9pZGFuY2UgcGhhc2UsIHRjcF9wYWNpbmdfY2FfcmF0aW8KKwlpcyBhcHBsaWVkIHRvIGNvbnNlcnZhdGl2ZWx5IHByb2JlIGZvciBiaWdnZXIgdGhyb3VnaHB1dC4KKwlEZWZhdWx0OiAxMjAKKwordGNwX3Rzb193aW5fZGl2aXNvciAtIElOVEVHRVIKKwlUaGlzIGFsbG93cyBjb250cm9sIG92ZXIgd2hhdCBwZXJjZW50YWdlIG9mIHRoZSBjb25nZXN0aW9uIHdpbmRvdworCWNhbiBiZSBjb25zdW1lZCBieSBhIHNpbmdsZSBUU08gZnJhbWUuCisJVGhlIHNldHRpbmcgb2YgdGhpcyBwYXJhbWV0ZXIgaXMgYSBjaG9pY2UgYmV0d2VlbiBidXJzdGluZXNzIGFuZAorCWJ1aWxkaW5nIGxhcmdlciBUU08gZnJhbWVzLgorCURlZmF1bHQ6IDMKKwordGNwX3R3X3JlY3ljbGUgLSBCT09MRUFOCisJRW5hYmxlIGZhc3QgcmVjeWNsaW5nIFRJTUUtV0FJVCBzb2NrZXRzLiBEZWZhdWx0IHZhbHVlIGlzIDAuCisJSXQgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkIHdpdGhvdXQgYWR2aWNlL3JlcXVlc3Qgb2YgdGVjaG5pY2FsCisJZXhwZXJ0cy4KKwordGNwX3R3X3JldXNlIC0gQk9PTEVBTgorCUFsbG93IHRvIHJldXNlIFRJTUUtV0FJVCBzb2NrZXRzIGZvciBuZXcgY29ubmVjdGlvbnMgd2hlbiBpdCBpcworCXNhZmUgZnJvbSBwcm90b2NvbCB2aWV3cG9pbnQuIERlZmF1bHQgdmFsdWUgaXMgMC4KKwlJdCBzaG91bGQgbm90IGJlIGNoYW5nZWQgd2l0aG91dCBhZHZpY2UvcmVxdWVzdCBvZiB0ZWNobmljYWwKKwlleHBlcnRzLgorCit0Y3Bfd2luZG93X3NjYWxpbmcgLSBCT09MRUFOCisJRW5hYmxlIHdpbmRvdyBzY2FsaW5nIGFzIGRlZmluZWQgaW4gUkZDMTMyMy4KKwordGNwX3dtZW0gLSB2ZWN0b3Igb2YgMyBJTlRFR0VSczogbWluLCBkZWZhdWx0LCBtYXgKKwltaW46IEFtb3VudCBvZiBtZW1vcnkgcmVzZXJ2ZWQgZm9yIHNlbmQgYnVmZmVycyBmb3IgVENQIHNvY2tldHMuCisJRWFjaCBUQ1Agc29ja2V0IGhhcyByaWdodHMgdG8gdXNlIGl0IGR1ZSB0byBmYWN0IG9mIGl0cyBiaXJ0aC4KKwlEZWZhdWx0OiAxIHBhZ2UKKworCWRlZmF1bHQ6IGluaXRpYWwgc2l6ZSBvZiBzZW5kIGJ1ZmZlciB1c2VkIGJ5IFRDUCBzb2NrZXRzLiAgVGhpcworCXZhbHVlIG92ZXJyaWRlcyBuZXQuY29yZS53bWVtX2RlZmF1bHQgdXNlZCBieSBvdGhlciBwcm90b2NvbHMuCisJSXQgaXMgdXN1YWxseSBsb3dlciB0aGFuIG5ldC5jb3JlLndtZW1fZGVmYXVsdC4KKwlEZWZhdWx0OiAxNksKKworCW1heDogTWF4aW1hbCBhbW91bnQgb2YgbWVtb3J5IGFsbG93ZWQgZm9yIGF1dG9tYXRpY2FsbHkgdHVuZWQKKwlzZW5kIGJ1ZmZlcnMgZm9yIFRDUCBzb2NrZXRzLiBUaGlzIHZhbHVlIGRvZXMgbm90IG92ZXJyaWRlCisJbmV0LmNvcmUud21lbV9tYXguICBDYWxsaW5nIHNldHNvY2tvcHQoKSB3aXRoIFNPX1NOREJVRiBkaXNhYmxlcworCWF1dG9tYXRpYyB0dW5pbmcgb2YgdGhhdCBzb2NrZXQncyBzZW5kIGJ1ZmZlciBzaXplLCBpbiB3aGljaCBjYXNlCisJdGhpcyB2YWx1ZSBpcyBpZ25vcmVkLgorCURlZmF1bHQ6IGJldHdlZW4gNjRLIGFuZCA0TUIsIGRlcGVuZGluZyBvbiBSQU0gc2l6ZS4KKwordGNwX25vdHNlbnRfbG93YXQgLSBVTlNJR05FRCBJTlRFR0VSCisJQSBUQ1Agc29ja2V0IGNhbiBjb250cm9sIHRoZSBhbW91bnQgb2YgdW5zZW50IGJ5dGVzIGluIGl0cyB3cml0ZSBxdWV1ZSwKKwl0aGFua3MgdG8gVENQX05PVFNFTlRfTE9XQVQgc29ja2V0IG9wdGlvbi4gcG9sbCgpL3NlbGVjdCgpL2Vwb2xsKCkKKwlyZXBvcnRzIFBPTExPVVQgZXZlbnRzIGlmIHRoZSBhbW91bnQgb2YgdW5zZW50IGJ5dGVzIGlzIGJlbG93IGEgcGVyCisJc29ja2V0IHZhbHVlLCBhbmQgaWYgdGhlIHdyaXRlIHF1ZXVlIGlzIG5vdCBmdWxsLiBzZW5kbXNnKCkgd2lsbAorCWFsc28gbm90IGFkZCBuZXcgYnVmZmVycyBpZiB0aGUgbGltaXQgaXMgaGl0LgorCisJVGhpcyBnbG9iYWwgdmFyaWFibGUgY29udHJvbHMgdGhlIGFtb3VudCBvZiB1bnNlbnQgZGF0YSBmb3IKKwlzb2NrZXRzIG5vdCB1c2luZyBUQ1BfTk9UU0VOVF9MT1dBVC4gRm9yIHRoZXNlIHNvY2tldHMsIGEgY2hhbmdlCisJdG8gdGhlIGdsb2JhbCB2YXJpYWJsZSBoYXMgaW1tZWRpYXRlIGVmZmVjdC4KKworCURlZmF1bHQ6IFVJTlRfTUFYICgweEZGRkZGRkZGKQorCit0Y3Bfd29ya2Fyb3VuZF9zaWduZWRfd2luZG93cyAtIEJPT0xFQU4KKwlJZiBzZXQsIGFzc3VtZSBubyByZWNlaXB0IG9mIGEgd2luZG93IHNjYWxpbmcgb3B0aW9uIG1lYW5zIHRoZQorCXJlbW90ZSBUQ1AgaXMgYnJva2VuIGFuZCB0cmVhdHMgdGhlIHdpbmRvdyBhcyBhIHNpZ25lZCBxdWFudGl0eS4KKwlJZiB1bnNldCwgYXNzdW1lIHRoZSByZW1vdGUgVENQIGlzIG5vdCBicm9rZW4gZXZlbiBpZiB3ZSBkbworCW5vdCByZWNlaXZlIGEgd2luZG93IHNjYWxpbmcgb3B0aW9uIGZyb20gdGhlbS4KKwlEZWZhdWx0OiAwCisKK3RjcF90aGluX2xpbmVhcl90aW1lb3V0cyAtIEJPT0xFQU4KKwlFbmFibGUgZHluYW1pYyB0cmlnZ2VyaW5nIG9mIGxpbmVhciB0aW1lb3V0cyBmb3IgdGhpbiBzdHJlYW1zLgorCUlmIHNldCwgYSBjaGVjayBpcyBwZXJmb3JtZWQgdXBvbiByZXRyYW5zbWlzc2lvbiBieSB0aW1lb3V0IHRvCisJZGV0ZXJtaW5lIGlmIHRoZSBzdHJlYW0gaXMgdGhpbiAobGVzcyB0aGFuIDQgcGFja2V0cyBpbiBmbGlnaHQpLgorCUFzIGxvbmcgYXMgdGhlIHN0cmVhbSBpcyBmb3VuZCB0byBiZSB0aGluLCB1cCB0byA2IGxpbmVhcgorCXRpbWVvdXRzIG1heSBiZSBwZXJmb3JtZWQgYmVmb3JlIGV4cG9uZW50aWFsIGJhY2tvZmYgbW9kZSBpcworCWluaXRpYXRlZC4gVGhpcyBpbXByb3ZlcyByZXRyYW5zbWlzc2lvbiBsYXRlbmN5IGZvcgorCW5vbi1hZ2dyZXNzaXZlIHRoaW4gc3RyZWFtcywgb2Z0ZW4gZm91bmQgdG8gYmUgdGltZS1kZXBlbmRlbnQuCisJRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpbiBzdHJlYW1zLCBzZWUKKwlEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdGNwLXRoaW4udHh0CisJRGVmYXVsdDogMAorCit0Y3BfdGhpbl9kdXBhY2sgLSBCT09MRUFOCisJRW5hYmxlIGR5bmFtaWMgdHJpZ2dlcmluZyBvZiByZXRyYW5zbWlzc2lvbnMgYWZ0ZXIgb25lIGR1cEFDSworCWZvciB0aGluIHN0cmVhbXMuIElmIHNldCwgYSBjaGVjayBpcyBwZXJmb3JtZWQgdXBvbiByZWNlcHRpb24KKwlvZiBhIGR1cEFDSyB0byBkZXRlcm1pbmUgaWYgdGhlIHN0cmVhbSBpcyB0aGluIChsZXNzIHRoYW4gNAorCXBhY2tldHMgaW4gZmxpZ2h0KS4gQXMgbG9uZyBhcyB0aGUgc3RyZWFtIGlzIGZvdW5kIHRvIGJlIHRoaW4sCisJZGF0YSBpcyByZXRyYW5zbWl0dGVkIG9uIHRoZSBmaXJzdCByZWNlaXZlZCBkdXBBQ0suIFRoaXMKKwlpbXByb3ZlcyByZXRyYW5zbWlzc2lvbiBsYXRlbmN5IGZvciBub24tYWdncmVzc2l2ZSB0aGluCisJc3RyZWFtcywgb2Z0ZW4gZm91bmQgdG8gYmUgdGltZS1kZXBlbmRlbnQuCisJRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpbiBzdHJlYW1zLCBzZWUKKwlEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdGNwLXRoaW4udHh0CisJRGVmYXVsdDogMAorCit0Y3BfbGltaXRfb3V0cHV0X2J5dGVzIC0gSU5URUdFUgorCUNvbnRyb2xzIFRDUCBTbWFsbCBRdWV1ZSBsaW1pdCBwZXIgdGNwIHNvY2tldC4KKwlUQ1AgYnVsayBzZW5kZXIgdGVuZHMgdG8gaW5jcmVhc2UgcGFja2V0cyBpbiBmbGlnaHQgdW50aWwgaXQKKwlnZXRzIGxvc3NlcyBub3RpZmljYXRpb25zLiBXaXRoIFNOREJVRiBhdXRvdHVuaW5nLCB0aGlzIGNhbgorCXJlc3VsdCBpbiBhIGxhcmdlIGFtb3VudCBvZiBwYWNrZXRzIHF1ZXVlZCBpbiBxZGlzYy9kZXZpY2UKKwlvbiB0aGUgbG9jYWwgbWFjaGluZSwgaHVydGluZyBsYXRlbmN5IG9mIG90aGVyIGZsb3dzLCBmb3IKKwl0eXBpY2FsIHBmaWZvX2Zhc3QgcWRpc2NzLgorCXRjcF9saW1pdF9vdXRwdXRfYnl0ZXMgbGltaXRzIHRoZSBudW1iZXIgb2YgYnl0ZXMgb24gcWRpc2MKKwlvciBkZXZpY2UgdG8gcmVkdWNlIGFydGlmaWNpYWwgUlRUL2N3bmQgYW5kIHJlZHVjZSBidWZmZXJibG9hdC4KKwlEZWZhdWx0OiAyNjIxNDQKKwordGNwX2NoYWxsZW5nZV9hY2tfbGltaXQgLSBJTlRFR0VSCisJTGltaXRzIG51bWJlciBvZiBDaGFsbGVuZ2UgQUNLIHNlbnQgcGVyIHNlY29uZCwgYXMgcmVjb21tZW5kZWQKKwlpbiBSRkMgNTk2MSAoSW1wcm92aW5nIFRDUCdzIFJvYnVzdG5lc3MgdG8gQmxpbmQgSW4tV2luZG93IEF0dGFja3MpCisJRGVmYXVsdDogMTAwCisKK1VEUCB2YXJpYWJsZXM6CisKK3VkcF9tZW0gLSB2ZWN0b3Igb2YgMyBJTlRFR0VSczogbWluLCBwcmVzc3VyZSwgbWF4CisJTnVtYmVyIG9mIHBhZ2VzIGFsbG93ZWQgZm9yIHF1ZXVlaW5nIGJ5IGFsbCBVRFAgc29ja2V0cy4KKworCW1pbjogQmVsb3cgdGhpcyBudW1iZXIgb2YgcGFnZXMgVURQIGlzIG5vdCBib3RoZXJlZCBhYm91dCBpdHMKKwltZW1vcnkgYXBwZXRpdGUuIFdoZW4gYW1vdW50IG9mIG1lbW9yeSBhbGxvY2F0ZWQgYnkgVURQIGV4Y2VlZHMKKwl0aGlzIG51bWJlciwgVURQIHN0YXJ0cyB0byBtb2RlcmF0ZSBtZW1vcnkgdXNhZ2UuCisKKwlwcmVzc3VyZTogVGhpcyB2YWx1ZSB3YXMgaW50cm9kdWNlZCB0byBmb2xsb3cgZm9ybWF0IG9mIHRjcF9tZW0uCisKKwltYXg6IE51bWJlciBvZiBwYWdlcyBhbGxvd2VkIGZvciBxdWV1ZWluZyBieSBhbGwgVURQIHNvY2tldHMuCisKKwlEZWZhdWx0IGlzIGNhbGN1bGF0ZWQgYXQgYm9vdCB0aW1lIGZyb20gYW1vdW50IG9mIGF2YWlsYWJsZSBtZW1vcnkuCisKK3VkcF9ybWVtX21pbiAtIElOVEVHRVIKKwlNaW5pbWFsIHNpemUgb2YgcmVjZWl2ZSBidWZmZXIgdXNlZCBieSBVRFAgc29ja2V0cyBpbiBtb2RlcmF0aW9uLgorCUVhY2ggVURQIHNvY2tldCBpcyBhYmxlIHRvIHVzZSB0aGUgc2l6ZSBmb3IgcmVjZWl2aW5nIGRhdGEsIGV2ZW4gaWYKKwl0b3RhbCBwYWdlcyBvZiBVRFAgc29ja2V0cyBleGNlZWQgdWRwX21lbSBwcmVzc3VyZS4gVGhlIHVuaXQgaXMgYnl0ZS4KKwlEZWZhdWx0OiAxIHBhZ2UKKwordWRwX3dtZW1fbWluIC0gSU5URUdFUgorCU1pbmltYWwgc2l6ZSBvZiBzZW5kIGJ1ZmZlciB1c2VkIGJ5IFVEUCBzb2NrZXRzIGluIG1vZGVyYXRpb24uCisJRWFjaCBVRFAgc29ja2V0IGlzIGFibGUgdG8gdXNlIHRoZSBzaXplIGZvciBzZW5kaW5nIGRhdGEsIGV2ZW4gaWYKKwl0b3RhbCBwYWdlcyBvZiBVRFAgc29ja2V0cyBleGNlZWQgdWRwX21lbSBwcmVzc3VyZS4gVGhlIHVuaXQgaXMgYnl0ZS4KKwlEZWZhdWx0OiAxIHBhZ2UKKworQ0lQU092NCBWYXJpYWJsZXM6CisKK2NpcHNvX2NhY2hlX2VuYWJsZSAtIEJPT0xFQU4KKwlJZiBzZXQsIGVuYWJsZSBhZGRpdGlvbnMgdG8gYW5kIGxvb2t1cHMgZnJvbSB0aGUgQ0lQU08gbGFiZWwgbWFwcGluZworCWNhY2hlLiAgSWYgdW5zZXQsIGFkZGl0aW9ucyBhcmUgaWdub3JlZCBhbmQgbG9va3VwcyBhbHdheXMgcmVzdWx0IGluIGEKKwltaXNzLiAgSG93ZXZlciwgcmVnYXJkbGVzcyBvZiB0aGUgc2V0dGluZyB0aGUgY2FjaGUgaXMgc3RpbGwKKwlpbnZhbGlkYXRlZCB3aGVuIHJlcXVpcmVkIHdoZW4gbWVhbnMgeW91IGNhbiBzYWZlbHkgdG9nZ2xlIHRoaXMgb24gYW5kCisJb2ZmIGFuZCB0aGUgY2FjaGUgd2lsbCBhbHdheXMgYmUgInNhZmUiLgorCURlZmF1bHQ6IDEKKworY2lwc29fY2FjaGVfYnVja2V0X3NpemUgLSBJTlRFR0VSCisJVGhlIENJUFNPIGxhYmVsIGNhY2hlIGNvbnNpc3RzIG9mIGEgZml4ZWQgc2l6ZSBoYXNoIHRhYmxlIHdpdGggZWFjaAorCWhhc2ggYnVja2V0IGNvbnRhaW5pbmcgYSBudW1iZXIgb2YgY2FjaGUgZW50cmllcy4gIFRoaXMgdmFyaWFibGUgbGltaXRzCisJdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIGVhY2ggaGFzaCBidWNrZXQ7IHRoZSBsYXJnZXIgdGhlIHZhbHVlIHRoZQorCW1vcmUgQ0lQU08gbGFiZWwgbWFwcGluZ3MgdGhhdCBjYW4gYmUgY2FjaGVkLiAgV2hlbiB0aGUgbnVtYmVyIG9mCisJZW50cmllcyBpbiBhIGdpdmVuIGhhc2ggYnVja2V0IHJlYWNoZXMgdGhpcyBsaW1pdCBhZGRpbmcgbmV3IGVudHJpZXMKKwljYXVzZXMgdGhlIG9sZGVzdCBlbnRyeSBpbiB0aGUgYnVja2V0IHRvIGJlIHJlbW92ZWQgdG8gbWFrZSByb29tLgorCURlZmF1bHQ6IDEwCisKK2NpcHNvX3JibV9vcHRmbXQgLSBCT09MRUFOCisJRW5hYmxlIHRoZSAiT3B0aW1pemVkIFRhZyAxIEZvcm1hdCIgYXMgZGVmaW5lZCBpbiBzZWN0aW9uIDMuNC4yLjYgb2YKKwl0aGUgQ0lQU08gZHJhZnQgc3BlY2lmaWNhdGlvbiAoc2VlIERvY3VtZW50YXRpb24vbmV0bGFiZWwgZm9yIGRldGFpbHMpLgorCVRoaXMgbWVhbnMgdGhhdCB3aGVuIHNldCB0aGUgQ0lQU08gdGFnIHdpbGwgYmUgcGFkZGVkIHdpdGggZW1wdHkKKwljYXRlZ29yaWVzIGluIG9yZGVyIHRvIG1ha2UgdGhlIHBhY2tldCBkYXRhIDMyLWJpdCBhbGlnbmVkLgorCURlZmF1bHQ6IDAKKworY2lwc29fcmJtX3N0cnVjdHZhbGlkIC0gQk9PTEVBTgorCUlmIHNldCwgZG8gYSB2ZXJ5IHN0cmljdCBjaGVjayBvZiB0aGUgQ0lQU08gb3B0aW9uIHdoZW4KKwlpcF9vcHRpb25zX2NvbXBpbGUoKSBpcyBjYWxsZWQuICBJZiB1bnNldCwgcmVsYXggdGhlIGNoZWNrcyBkb25lIGR1cmluZworCWlwX29wdGlvbnNfY29tcGlsZSgpLiAgRWl0aGVyIHdheSBpcyAic2FmZSIgYXMgZXJyb3JzIGFyZSBjYXVnaHQgZWxzZQorCXdoZXJlIGluIHRoZSBDSVBTTyBwcm9jZXNzaW5nIGNvZGUgYnV0IHNldHRpbmcgdGhpcyB0byAwIChGYWxzZSkgc2hvdWxkCisJcmVzdWx0IGluIGxlc3Mgd29yayAoaS5lLiBpdCBzaG91bGQgYmUgZmFzdGVyKSBidXQgY291bGQgY2F1c2UgcHJvYmxlbXMKKwl3aXRoIG90aGVyIGltcGxlbWVudGF0aW9ucyB0aGF0IHJlcXVpcmUgc3RyaWN0IGNoZWNraW5nLgorCURlZmF1bHQ6IDAKKworSVAgVmFyaWFibGVzOgorCitpcF9sb2NhbF9wb3J0X3JhbmdlIC0gMiBJTlRFR0VSUworCURlZmluZXMgdGhlIGxvY2FsIHBvcnQgcmFuZ2UgdGhhdCBpcyB1c2VkIGJ5IFRDUCBhbmQgVURQIHRvCisJY2hvb3NlIHRoZSBsb2NhbCBwb3J0LiBUaGUgZmlyc3QgbnVtYmVyIGlzIHRoZSBmaXJzdCwgdGhlCisJc2Vjb25kIHRoZSBsYXN0IGxvY2FsIHBvcnQgbnVtYmVyLgorCUlmIHBvc3NpYmxlLCBpdCBpcyBiZXR0ZXIgdGhlc2UgbnVtYmVycyBoYXZlIGRpZmZlcmVudCBwYXJpdHkuCisJKG9uZSBldmVuIGFuZCBvbmUgb2RkIHZhbHVlcykKKwlUaGUgZGVmYXVsdCB2YWx1ZXMgYXJlIDMyNzY4IGFuZCA2MDk5OSByZXNwZWN0aXZlbHkuCisKK2lwX2xvY2FsX3Jlc2VydmVkX3BvcnRzIC0gbGlzdCBvZiBjb21tYSBzZXBhcmF0ZWQgcmFuZ2VzCisJU3BlY2lmeSB0aGUgcG9ydHMgd2hpY2ggYXJlIHJlc2VydmVkIGZvciBrbm93biB0aGlyZC1wYXJ0eQorCWFwcGxpY2F0aW9ucy4gVGhlc2UgcG9ydHMgd2lsbCBub3QgYmUgdXNlZCBieSBhdXRvbWF0aWMgcG9ydAorCWFzc2lnbm1lbnRzIChlLmcuIHdoZW4gY2FsbGluZyBjb25uZWN0KCkgb3IgYmluZCgpIHdpdGggcG9ydAorCW51bWJlciAwKS4gRXhwbGljaXQgcG9ydCBhbGxvY2F0aW9uIGJlaGF2aW9yIGlzIHVuY2hhbmdlZC4KKworCVRoZSBmb3JtYXQgdXNlZCBmb3IgYm90aCBpbnB1dCBhbmQgb3V0cHV0IGlzIGEgY29tbWEgc2VwYXJhdGVkCisJbGlzdCBvZiByYW5nZXMgKGUuZy4gIjEsMi00LDEwLTEwIiBmb3IgcG9ydHMgMSwgMiwgMywgNCBhbmQKKwkxMCkuIFdyaXRpbmcgdG8gdGhlIGZpbGUgd2lsbCBjbGVhciBhbGwgcHJldmlvdXNseSByZXNlcnZlZAorCXBvcnRzIGFuZCB1cGRhdGUgdGhlIGN1cnJlbnQgbGlzdCB3aXRoIHRoZSBvbmUgZ2l2ZW4gaW4gdGhlCisJaW5wdXQuCisKKwlOb3RlIHRoYXQgaXBfbG9jYWxfcG9ydF9yYW5nZSBhbmQgaXBfbG9jYWxfcmVzZXJ2ZWRfcG9ydHMKKwlzZXR0aW5ncyBhcmUgaW5kZXBlbmRlbnQgYW5kIGJvdGggYXJlIGNvbnNpZGVyZWQgYnkgdGhlIGtlcm5lbAorCXdoZW4gZGV0ZXJtaW5pbmcgd2hpY2ggcG9ydHMgYXJlIGF2YWlsYWJsZSBmb3IgYXV0b21hdGljIHBvcnQKKwlhc3NpZ25tZW50cy4KKworCVlvdSBjYW4gcmVzZXJ2ZSBwb3J0cyB3aGljaCBhcmUgbm90IGluIHRoZSBjdXJyZW50CisJaXBfbG9jYWxfcG9ydF9yYW5nZSwgZS5nLjoKKworCSQgY2F0IC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9sb2NhbF9wb3J0X3JhbmdlCisJMzIwMDAJNjA5OTkKKwkkIGNhdCAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfbG9jYWxfcmVzZXJ2ZWRfcG9ydHMKKwk4MDgwLDkxNDgKKworCWFsdGhvdWdoIHRoaXMgaXMgcmVkdW5kYW50LiBIb3dldmVyIHN1Y2ggYSBzZXR0aW5nIGlzIHVzZWZ1bAorCWlmIGxhdGVyIHRoZSBwb3J0IHJhbmdlIGlzIGNoYW5nZWQgdG8gYSB2YWx1ZSB0aGF0IHdpbGwKKwlpbmNsdWRlIHRoZSByZXNlcnZlZCBwb3J0cy4KKworCURlZmF1bHQ6IEVtcHR5CisKK2lwX25vbmxvY2FsX2JpbmQgLSBCT09MRUFOCisJSWYgc2V0LCBhbGxvd3MgcHJvY2Vzc2VzIHRvIGJpbmQoKSB0byBub24tbG9jYWwgSVAgYWRkcmVzc2VzLAorCXdoaWNoIGNhbiBiZSBxdWl0ZSB1c2VmdWwgLSBidXQgbWF5IGJyZWFrIHNvbWUgYXBwbGljYXRpb25zLgorCURlZmF1bHQ6IDAKKworaXBfZHluYWRkciAtIEJPT0xFQU4KKwlJZiBzZXQgbm9uLXplcm8sIGVuYWJsZXMgc3VwcG9ydCBmb3IgZHluYW1pYyBhZGRyZXNzZXMuCisJSWYgc2V0IHRvIGEgbm9uLXplcm8gdmFsdWUgbGFyZ2VyIHRoYW4gMSwgYSBrZXJuZWwgbG9nCisJbWVzc2FnZSB3aWxsIGJlIHByaW50ZWQgd2hlbiBkeW5hbWljIGFkZHJlc3MgcmV3cml0aW5nCisJb2NjdXJzLgorCURlZmF1bHQ6IDAKKworaXBfZWFybHlfZGVtdXggLSBCT09MRUFOCisJT3B0aW1pemUgaW5wdXQgcGFja2V0IHByb2Nlc3NpbmcgZG93biB0byBvbmUgZGVtdXggZm9yCisJY2VydGFpbiBraW5kcyBvZiBsb2NhbCBzb2NrZXRzLiAgQ3VycmVudGx5IHdlIG9ubHkgZG8gdGhpcworCWZvciBlc3RhYmxpc2hlZCBUQ1Agc29ja2V0cy4KKworCUl0IG1heSBhZGQgYW4gYWRkaXRpb25hbCBjb3N0IGZvciBwdXJlIHJvdXRpbmcgd29ya2xvYWRzIHRoYXQKKwlyZWR1Y2VzIG92ZXJhbGwgdGhyb3VnaHB1dCwgaW4gc3VjaCBjYXNlIHlvdSBzaG91bGQgZGlzYWJsZSBpdC4KKwlEZWZhdWx0OiAxCisKK2ljbXBfZWNob19pZ25vcmVfYWxsIC0gQk9PTEVBTgorCUlmIHNldCBub24temVybywgdGhlbiB0aGUga2VybmVsIHdpbGwgaWdub3JlIGFsbCBJQ01QIEVDSE8KKwlyZXF1ZXN0cyBzZW50IHRvIGl0LgorCURlZmF1bHQ6IDAKKworaWNtcF9lY2hvX2lnbm9yZV9icm9hZGNhc3RzIC0gQk9PTEVBTgorCUlmIHNldCBub24temVybywgdGhlbiB0aGUga2VybmVsIHdpbGwgaWdub3JlIGFsbCBJQ01QIEVDSE8gYW5kCisJVElNRVNUQU1QIHJlcXVlc3RzIHNlbnQgdG8gaXQgdmlhIGJyb2FkY2FzdC9tdWx0aWNhc3QuCisJRGVmYXVsdDogMQorCitpY21wX3JhdGVsaW1pdCAtIElOVEVHRVIKKwlMaW1pdCB0aGUgbWF4aW1hbCByYXRlcyBmb3Igc2VuZGluZyBJQ01QIHBhY2tldHMgd2hvc2UgdHlwZSBtYXRjaGVzCisJaWNtcF9yYXRlbWFzayAoc2VlIGJlbG93KSB0byBzcGVjaWZpYyB0YXJnZXRzLgorCTAgdG8gZGlzYWJsZSBhbnkgbGltaXRpbmcsCisJb3RoZXJ3aXNlIHRoZSBtaW5pbWFsIHNwYWNlIGJldHdlZW4gcmVzcG9uc2VzIGluIG1pbGxpc2Vjb25kcy4KKwlOb3RlIHRoYXQgYW5vdGhlciBzeXNjdGwsIGljbXBfbXNnc19wZXJfc2VjIGxpbWl0cyB0aGUgbnVtYmVyCisJb2YgSUNNUCBwYWNrZXRzCXNlbnQgb24gYWxsIHRhcmdldHMuCisJRGVmYXVsdDogMTAwMAorCitpY21wX21zZ3NfcGVyX3NlYyAtIElOVEVHRVIKKwlMaW1pdCBtYXhpbWFsIG51bWJlciBvZiBJQ01QIHBhY2tldHMgc2VudCBwZXIgc2Vjb25kIGZyb20gdGhpcyBob3N0LgorCU9ubHkgbWVzc2FnZXMgd2hvc2UgdHlwZSBtYXRjaGVzIGljbXBfcmF0ZW1hc2sgKHNlZSBiZWxvdykgYXJlCisJY29udHJvbGxlZCBieSB0aGlzIGxpbWl0LgorCURlZmF1bHQ6IDEwMDAKKworaWNtcF9tc2dzX2J1cnN0IC0gSU5URUdFUgorCWljbXBfbXNnc19wZXJfc2VjIGNvbnRyb2xzIG51bWJlciBvZiBJQ01QIHBhY2tldHMgc2VudCBwZXIgc2Vjb25kLAorCXdoaWxlIGljbXBfbXNnc19idXJzdCBjb250cm9scyB0aGUgYnVyc3Qgc2l6ZSBvZiB0aGVzZSBwYWNrZXRzLgorCURlZmF1bHQ6IDUwCisKK2ljbXBfcmF0ZW1hc2sgLSBJTlRFR0VSCisJTWFzayBtYWRlIG9mIElDTVAgdHlwZXMgZm9yIHdoaWNoIHJhdGVzIGFyZSBiZWluZyBsaW1pdGVkLgorCVNpZ25pZmljYW50IGJpdHM6IElIR0ZFRENCQTk4NzY1NDMyMTAKKwlEZWZhdWx0IG1hc2s6ICAgICAwMDAwMDAxMTAwMDAwMDExMDAwICg2MTY4KQorCisJQml0IGRlZmluaXRpb25zIChzZWUgaW5jbHVkZS9saW51eC9pY21wLmgpOgorCQkwIEVjaG8gUmVwbHkKKwkJMyBEZXN0aW5hdGlvbiBVbnJlYWNoYWJsZSAqCisJCTQgU291cmNlIFF1ZW5jaCAqCisJCTUgUmVkaXJlY3QKKwkJOCBFY2hvIFJlcXVlc3QKKwkJQiBUaW1lIEV4Y2VlZGVkICoKKwkJQyBQYXJhbWV0ZXIgUHJvYmxlbSAqCisJCUQgVGltZXN0YW1wIFJlcXVlc3QKKwkJRSBUaW1lc3RhbXAgUmVwbHkKKwkJRiBJbmZvIFJlcXVlc3QKKwkJRyBJbmZvIFJlcGx5CisJCUggQWRkcmVzcyBNYXNrIFJlcXVlc3QKKwkJSSBBZGRyZXNzIE1hc2sgUmVwbHkKKworCSogVGhlc2UgYXJlIHJhdGUgbGltaXRlZCBieSBkZWZhdWx0IChzZWUgZGVmYXVsdCBtYXNrIGFib3ZlKQorCitpY21wX2lnbm9yZV9ib2d1c19lcnJvcl9yZXNwb25zZXMgLSBCT09MRUFOCisJU29tZSByb3V0ZXJzIHZpb2xhdGUgUkZDMTEyMiBieSBzZW5kaW5nIGJvZ3VzIHJlc3BvbnNlcyB0byBicm9hZGNhc3QKKwlmcmFtZXMuICBTdWNoIHZpb2xhdGlvbnMgYXJlIG5vcm1hbGx5IGxvZ2dlZCB2aWEgYSBrZXJuZWwgd2FybmluZy4KKwlJZiB0aGlzIGlzIHNldCB0byBUUlVFLCB0aGUga2VybmVsIHdpbGwgbm90IGdpdmUgc3VjaCB3YXJuaW5ncywgd2hpY2gKKwl3aWxsIGF2b2lkIGxvZyBmaWxlIGNsdXR0ZXIuCisJRGVmYXVsdDogMQorCitpY21wX2Vycm9yc191c2VfaW5ib3VuZF9pZmFkZHIgLSBCT09MRUFOCisKKwlJZiB6ZXJvLCBpY21wIGVycm9yIG1lc3NhZ2VzIGFyZSBzZW50IHdpdGggdGhlIHByaW1hcnkgYWRkcmVzcyBvZgorCXRoZSBleGl0aW5nIGludGVyZmFjZS4KKworCUlmIG5vbi16ZXJvLCB0aGUgbWVzc2FnZSB3aWxsIGJlIHNlbnQgd2l0aCB0aGUgcHJpbWFyeSBhZGRyZXNzIG9mCisJdGhlIGludGVyZmFjZSB0aGF0IHJlY2VpdmVkIHRoZSBwYWNrZXQgdGhhdCBjYXVzZWQgdGhlIGljbXAgZXJyb3IuCisJVGhpcyBpcyB0aGUgYmVoYXZpb3VyIG5ldHdvcmsgbWFueSBhZG1pbmlzdHJhdG9ycyB3aWxsIGV4cGVjdCBmcm9tCisJYSByb3V0ZXIuIEFuZCBpdCBjYW4gbWFrZSBkZWJ1Z2dpbmcgY29tcGxpY2F0ZWQgbmV0d29yayBsYXlvdXRzCisJbXVjaCBlYXNpZXIuCisKKwlOb3RlIHRoYXQgaWYgbm8gcHJpbWFyeSBhZGRyZXNzIGV4aXN0cyBmb3IgdGhlIGludGVyZmFjZSBzZWxlY3RlZCwKKwl0aGVuIHRoZSBwcmltYXJ5IGFkZHJlc3Mgb2YgdGhlIGZpcnN0IG5vbi1sb29wYmFjayBpbnRlcmZhY2UgdGhhdAorCWhhcyBvbmUgd2lsbCBiZSB1c2VkIHJlZ2FyZGxlc3Mgb2YgdGhpcyBzZXR0aW5nLgorCisJRGVmYXVsdDogMAorCitpZ21wX21heF9tZW1iZXJzaGlwcyAtIElOVEVHRVIKKwlDaGFuZ2UgdGhlIG1heGltdW0gbnVtYmVyIG9mIG11bHRpY2FzdCBncm91cHMgd2UgY2FuIHN1YnNjcmliZSB0by4KKwlEZWZhdWx0OiAyMAorCisJVGhlb3JldGljYWwgbWF4aW11bSB2YWx1ZSBpcyBib3VuZGVkIGJ5IGhhdmluZyB0byBzZW5kIGEgbWVtYmVyc2hpcAorCXJlcG9ydCBpbiBhIHNpbmdsZSBkYXRhZ3JhbSAoaS5lLiB0aGUgcmVwb3J0IGNhbid0IHNwYW4gbXVsdGlwbGUKKwlkYXRhZ3JhbXMsIG9yIHJpc2sgY29uZnVzaW5nIHRoZSBzd2l0Y2ggYW5kIGxlYXZpbmcgZ3JvdXBzIHlvdSBkb24ndAorCWludGVuZCB0bykuCisKKwlUaGUgbnVtYmVyIG9mIHN1cHBvcnRlZCBncm91cHMgJ00nIGlzIGJvdW5kZWQgYnkgdGhlIG51bWJlciBvZiBncm91cAorCXJlcG9ydCBlbnRyaWVzIHlvdSBjYW4gZml0IGludG8gYSBzaW5nbGUgZGF0YWdyYW0gb2YgNjU1MzUgYnl0ZXMuCisKKwlNID0gNjU1MzYtc2l6ZW9mIChpcCBoZWFkZXIpLyhzaXplb2YoR3JvdXAgcmVjb3JkKSkKKworCUdyb3VwIHJlY29yZHMgYXJlIHZhcmlhYmxlIGxlbmd0aCwgd2l0aCBhIG1pbmltdW0gb2YgMTIgYnl0ZXMuCisJU28gbmV0LmlwdjQuaWdtcF9tYXhfbWVtYmVyc2hpcHMgc2hvdWxkIG5vdCBiZSBzZXQgaGlnaGVyIHRoYW46CisKKwkoNjU1MzYtMjQpIC8gMTIgPSA1NDU5CisKKwlUaGUgdmFsdWUgNTQ1OSBhc3N1bWVzIG5vIElQIGhlYWRlciBvcHRpb25zLCBzbyBpbiBwcmFjdGljZQorCXRoaXMgbnVtYmVyIG1heSBiZSBsb3dlci4KKworCWNvbmYvaW50ZXJmYWNlLyogIGNoYW5nZXMgc3BlY2lhbCBzZXR0aW5ncyBwZXIgaW50ZXJmYWNlICh3aGVyZQorCSJpbnRlcmZhY2UiIGlzIHRoZSBuYW1lIG9mIHlvdXIgbmV0d29yayBpbnRlcmZhY2UpCisKKwljb25mL2FsbC8qCSAgaXMgc3BlY2lhbCwgY2hhbmdlcyB0aGUgc2V0dGluZ3MgZm9yIGFsbCBpbnRlcmZhY2VzCisKK2lnbXBfcXJ2IC0gSU5URUdFUgorCSBDb250cm9scyB0aGUgSUdNUCBxdWVyeSByb2J1c3RuZXNzIHZhcmlhYmxlIChzZWUgUkZDMjIzNiA4LjEpLgorCSBEZWZhdWx0OiAyIChhcyBzcGVjaWZpZWQgYnkgUkZDMjIzNiA4LjEpCisJIE1pbmltdW06IDEgKGFzIHNwZWNpZmllZCBieSBSRkM2NjM2IDQuNSkKKworbG9nX21hcnRpYW5zIC0gQk9PTEVBTgorCUxvZyBwYWNrZXRzIHdpdGggaW1wb3NzaWJsZSBhZGRyZXNzZXMgdG8ga2VybmVsIGxvZy4KKwlsb2dfbWFydGlhbnMgZm9yIHRoZSBpbnRlcmZhY2Ugd2lsbCBiZSBlbmFibGVkIGlmIGF0IGxlYXN0IG9uZSBvZgorCWNvbmYve2FsbCxpbnRlcmZhY2V9L2xvZ19tYXJ0aWFucyBpcyBzZXQgdG8gVFJVRSwKKwlpdCB3aWxsIGJlIGRpc2FibGVkIG90aGVyd2lzZQorCithY2NlcHRfcmVkaXJlY3RzIC0gQk9PTEVBTgorCUFjY2VwdCBJQ01QIHJlZGlyZWN0IG1lc3NhZ2VzLgorCWFjY2VwdF9yZWRpcmVjdHMgZm9yIHRoZSBpbnRlcmZhY2Ugd2lsbCBiZSBlbmFibGVkIGlmOgorCS0gYm90aCBjb25mL3thbGwsaW50ZXJmYWNlfS9hY2NlcHRfcmVkaXJlY3RzIGFyZSBUUlVFIGluIHRoZSBjYXNlCisJICBmb3J3YXJkaW5nIGZvciB0aGUgaW50ZXJmYWNlIGlzIGVuYWJsZWQKKwlvcgorCS0gYXQgbGVhc3Qgb25lIG9mIGNvbmYve2FsbCxpbnRlcmZhY2V9L2FjY2VwdF9yZWRpcmVjdHMgaXMgVFJVRSBpbiB0aGUKKwkgIGNhc2UgZm9yd2FyZGluZyBmb3IgdGhlIGludGVyZmFjZSBpcyBkaXNhYmxlZAorCWFjY2VwdF9yZWRpcmVjdHMgZm9yIHRoZSBpbnRlcmZhY2Ugd2lsbCBiZSBkaXNhYmxlZCBvdGhlcndpc2UKKwlkZWZhdWx0IFRSVUUgKGhvc3QpCisJCUZBTFNFIChyb3V0ZXIpCisKK2ZvcndhcmRpbmcgLSBCT09MRUFOCisJRW5hYmxlIElQIGZvcndhcmRpbmcgb24gdGhpcyBpbnRlcmZhY2UuCisKK21jX2ZvcndhcmRpbmcgLSBCT09MRUFOCisJRG8gbXVsdGljYXN0IHJvdXRpbmcuIFRoZSBrZXJuZWwgbmVlZHMgdG8gYmUgY29tcGlsZWQgd2l0aCBDT05GSUdfTVJPVVRFCisJYW5kIGEgbXVsdGljYXN0IHJvdXRpbmcgZGFlbW9uIGlzIHJlcXVpcmVkLgorCWNvbmYvYWxsL21jX2ZvcndhcmRpbmcgbXVzdCBhbHNvIGJlIHNldCB0byBUUlVFIHRvIGVuYWJsZSBtdWx0aWNhc3QKKwlyb3V0aW5nCWZvciB0aGUgaW50ZXJmYWNlCisKK21lZGl1bV9pZCAtIElOVEVHRVIKKwlJbnRlZ2VyIHZhbHVlIHVzZWQgdG8gZGlmZmVyZW50aWF0ZSB0aGUgZGV2aWNlcyBieSB0aGUgbWVkaXVtIHRoZXkKKwlhcmUgYXR0YWNoZWQgdG8uIFR3byBkZXZpY2VzIGNhbiBoYXZlIGRpZmZlcmVudCBpZCB2YWx1ZXMgd2hlbgorCXRoZSBicm9hZGNhc3QgcGFja2V0cyBhcmUgcmVjZWl2ZWQgb25seSBvbiBvbmUgb2YgdGhlbS4KKwlUaGUgZGVmYXVsdCB2YWx1ZSAwIG1lYW5zIHRoYXQgdGhlIGRldmljZSBpcyB0aGUgb25seSBpbnRlcmZhY2UKKwl0byBpdHMgbWVkaXVtLCB2YWx1ZSBvZiAtMSBtZWFucyB0aGF0IG1lZGl1bSBpcyBub3Qga25vd24uCisKKwlDdXJyZW50bHksIGl0IGlzIHVzZWQgdG8gY2hhbmdlIHRoZSBwcm94eV9hcnAgYmVoYXZpb3I6CisJdGhlIHByb3h5X2FycCBmZWF0dXJlIGlzIGVuYWJsZWQgZm9yIHBhY2tldHMgZm9yd2FyZGVkIGJldHdlZW4KKwl0d28gZGV2aWNlcyBhdHRhY2hlZCB0byBkaWZmZXJlbnQgbWVkaWEuCisKK3Byb3h5X2FycCAtIEJPT0xFQU4KKwlEbyBwcm94eSBhcnAuCisJcHJveHlfYXJwIGZvciB0aGUgaW50ZXJmYWNlIHdpbGwgYmUgZW5hYmxlZCBpZiBhdCBsZWFzdCBvbmUgb2YKKwljb25mL3thbGwsaW50ZXJmYWNlfS9wcm94eV9hcnAgaXMgc2V0IHRvIFRSVUUsCisJaXQgd2lsbCBiZSBkaXNhYmxlZCBvdGhlcndpc2UKKworcHJveHlfYXJwX3B2bGFuIC0gQk9PTEVBTgorCVByaXZhdGUgVkxBTiBwcm94eSBhcnAuCisJQmFzaWNhbGx5IGFsbG93IHByb3h5IGFycCByZXBsaWVzIGJhY2sgdG8gdGhlIHNhbWUgaW50ZXJmYWNlCisJKGZyb20gd2hpY2ggdGhlIEFSUCByZXF1ZXN0L3NvbGljaXRhdGlvbiB3YXMgcmVjZWl2ZWQpLgorCisJVGhpcyBpcyBkb25lIHRvIHN1cHBvcnQgKGV0aGVybmV0KSBzd2l0Y2ggZmVhdHVyZXMsIGxpa2UgUkZDCisJMzA2OSwgd2hlcmUgdGhlIGluZGl2aWR1YWwgcG9ydHMgYXJlIE5PVCBhbGxvd2VkIHRvCisJY29tbXVuaWNhdGUgd2l0aCBlYWNoIG90aGVyLCBidXQgdGhleSBhcmUgYWxsb3dlZCB0byB0YWxrIHRvCisJdGhlIHVwc3RyZWFtIHJvdXRlci4gIEFzIGRlc2NyaWJlZCBpbiBSRkMgMzA2OSwgaXQgaXMgcG9zc2libGUKKwl0byBhbGxvdyB0aGVzZSBob3N0cyB0byBjb21tdW5pY2F0ZSB0aHJvdWdoIHRoZSB1cHN0cmVhbQorCXJvdXRlciBieSBwcm94eV9hcnAnaW5nLiBEb24ndCBuZWVkIHRvIGJlIHVzZWQgdG9nZXRoZXIgd2l0aAorCXByb3h5X2FycC4KKworCVRoaXMgdGVjaG5vbG9neSBpcyBrbm93biBieSBkaWZmZXJlbnQgbmFtZXM6CisJICBJbiBSRkMgMzA2OSBpdCBpcyBjYWxsZWQgVkxBTiBBZ2dyZWdhdGlvbi4KKwkgIENpc2NvIGFuZCBBbGxpZWQgVGVsZXN5biBjYWxsIGl0IFByaXZhdGUgVkxBTi4KKwkgIEhld2xldHQtUGFja2FyZCBjYWxsIGl0IFNvdXJjZS1Qb3J0IGZpbHRlcmluZyBvciBwb3J0LWlzb2xhdGlvbi4KKwkgIEVyaWNzc29uIGNhbGwgaXQgTUFDLUZvcmNlZCBGb3J3YXJkaW5nIChSRkMgRHJhZnQpLgorCitzaGFyZWRfbWVkaWEgLSBCT09MRUFOCisJU2VuZChyb3V0ZXIpIG9yIGFjY2VwdChob3N0KSBSRkMxNjIwIHNoYXJlZCBtZWRpYSByZWRpcmVjdHMuCisJT3ZlcnJpZGVzIGlwX3NlY3VyZV9yZWRpcmVjdHMuCisJc2hhcmVkX21lZGlhIGZvciB0aGUgaW50ZXJmYWNlIHdpbGwgYmUgZW5hYmxlZCBpZiBhdCBsZWFzdCBvbmUgb2YKKwljb25mL3thbGwsaW50ZXJmYWNlfS9zaGFyZWRfbWVkaWEgaXMgc2V0IHRvIFRSVUUsCisJaXQgd2lsbCBiZSBkaXNhYmxlZCBvdGhlcndpc2UKKwlkZWZhdWx0IFRSVUUKKworc2VjdXJlX3JlZGlyZWN0cyAtIEJPT0xFQU4KKwlBY2NlcHQgSUNNUCByZWRpcmVjdCBtZXNzYWdlcyBvbmx5IGZvciBnYXRld2F5cywKKwlsaXN0ZWQgaW4gZGVmYXVsdCBnYXRld2F5IGxpc3QuCisJc2VjdXJlX3JlZGlyZWN0cyBmb3IgdGhlIGludGVyZmFjZSB3aWxsIGJlIGVuYWJsZWQgaWYgYXQgbGVhc3Qgb25lIG9mCisJY29uZi97YWxsLGludGVyZmFjZX0vc2VjdXJlX3JlZGlyZWN0cyBpcyBzZXQgdG8gVFJVRSwKKwlpdCB3aWxsIGJlIGRpc2FibGVkIG90aGVyd2lzZQorCWRlZmF1bHQgVFJVRQorCitzZW5kX3JlZGlyZWN0cyAtIEJPT0xFQU4KKwlTZW5kIHJlZGlyZWN0cywgaWYgcm91dGVyLgorCXNlbmRfcmVkaXJlY3RzIGZvciB0aGUgaW50ZXJmYWNlIHdpbGwgYmUgZW5hYmxlZCBpZiBhdCBsZWFzdCBvbmUgb2YKKwljb25mL3thbGwsaW50ZXJmYWNlfS9zZW5kX3JlZGlyZWN0cyBpcyBzZXQgdG8gVFJVRSwKKwlpdCB3aWxsIGJlIGRpc2FibGVkIG90aGVyd2lzZQorCURlZmF1bHQ6IFRSVUUKKworYm9vdHBfcmVsYXkgLSBCT09MRUFOCisJQWNjZXB0IHBhY2tldHMgd2l0aCBzb3VyY2UgYWRkcmVzcyAwLmIuYy5kIGRlc3RpbmVkCisJbm90IHRvIHRoaXMgaG9zdCBhcyBsb2NhbCBvbmVzLiBJdCBpcyBzdXBwb3NlZCwgdGhhdAorCUJPT1RQIHJlbGF5IGRhZW1vbiB3aWxsIGNhdGNoIGFuZCBmb3J3YXJkIHN1Y2ggcGFja2V0cy4KKwljb25mL2FsbC9ib290cF9yZWxheSBtdXN0IGFsc28gYmUgc2V0IHRvIFRSVUUgdG8gZW5hYmxlIEJPT1RQIHJlbGF5CisJZm9yIHRoZSBpbnRlcmZhY2UKKwlkZWZhdWx0IEZBTFNFCisJTm90IEltcGxlbWVudGVkIFlldC4KKworYWNjZXB0X3NvdXJjZV9yb3V0ZSAtIEJPT0xFQU4KKwlBY2NlcHQgcGFja2V0cyB3aXRoIFNSUiBvcHRpb24uCisJY29uZi9hbGwvYWNjZXB0X3NvdXJjZV9yb3V0ZSBtdXN0IGFsc28gYmUgc2V0IHRvIFRSVUUgdG8gYWNjZXB0IHBhY2tldHMKKwl3aXRoIFNSUiBvcHRpb24gb24gdGhlIGludGVyZmFjZQorCWRlZmF1bHQgVFJVRSAocm91dGVyKQorCQlGQUxTRSAoaG9zdCkKKworYWNjZXB0X2xvY2FsIC0gQk9PTEVBTgorCUFjY2VwdCBwYWNrZXRzIHdpdGggbG9jYWwgc291cmNlIGFkZHJlc3Nlcy4gSW4gY29tYmluYXRpb24gd2l0aAorCXN1aXRhYmxlIHJvdXRpbmcsIHRoaXMgY2FuIGJlIHVzZWQgdG8gZGlyZWN0IHBhY2tldHMgYmV0d2VlbiB0d28KKwlsb2NhbCBpbnRlcmZhY2VzIG92ZXIgdGhlIHdpcmUgYW5kIGhhdmUgdGhlbSBhY2NlcHRlZCBwcm9wZXJseS4KKwlkZWZhdWx0IEZBTFNFCisKK3JvdXRlX2xvY2FsbmV0IC0gQk9PTEVBTgorCURvIG5vdCBjb25zaWRlciBsb29wYmFjayBhZGRyZXNzZXMgYXMgbWFydGlhbiBzb3VyY2Ugb3IgZGVzdGluYXRpb24KKwl3aGlsZSByb3V0aW5nLiBUaGlzIGVuYWJsZXMgdGhlIHVzZSBvZiAxMjcvOCBmb3IgbG9jYWwgcm91dGluZyBwdXJwb3Nlcy4KKwlkZWZhdWx0IEZBTFNFCisKK3JwX2ZpbHRlciAtIElOVEVHRVIKKwkwIC0gTm8gc291cmNlIHZhbGlkYXRpb24uCisJMSAtIFN0cmljdCBtb2RlIGFzIGRlZmluZWQgaW4gUkZDMzcwNCBTdHJpY3QgUmV2ZXJzZSBQYXRoCisJICAgIEVhY2ggaW5jb21pbmcgcGFja2V0IGlzIHRlc3RlZCBhZ2FpbnN0IHRoZSBGSUIgYW5kIGlmIHRoZSBpbnRlcmZhY2UKKwkgICAgaXMgbm90IHRoZSBiZXN0IHJldmVyc2UgcGF0aCB0aGUgcGFja2V0IGNoZWNrIHdpbGwgZmFpbC4KKwkgICAgQnkgZGVmYXVsdCBmYWlsZWQgcGFja2V0cyBhcmUgZGlzY2FyZGVkLgorCTIgLSBMb29zZSBtb2RlIGFzIGRlZmluZWQgaW4gUkZDMzcwNCBMb29zZSBSZXZlcnNlIFBhdGgKKwkgICAgRWFjaCBpbmNvbWluZyBwYWNrZXQncyBzb3VyY2UgYWRkcmVzcyBpcyBhbHNvIHRlc3RlZCBhZ2FpbnN0IHRoZSBGSUIKKwkgICAgYW5kIGlmIHRoZSBzb3VyY2UgYWRkcmVzcyBpcyBub3QgcmVhY2hhYmxlIHZpYSBhbnkgaW50ZXJmYWNlCisJICAgIHRoZSBwYWNrZXQgY2hlY2sgd2lsbCBmYWlsLgorCisJQ3VycmVudCByZWNvbW1lbmRlZCBwcmFjdGljZSBpbiBSRkMzNzA0IGlzIHRvIGVuYWJsZSBzdHJpY3QgbW9kZQorCXRvIHByZXZlbnQgSVAgc3Bvb2ZpbmcgZnJvbSBERG9zIGF0dGFja3MuIElmIHVzaW5nIGFzeW1tZXRyaWMgcm91dGluZworCW9yIG90aGVyIGNvbXBsaWNhdGVkIHJvdXRpbmcsIHRoZW4gbG9vc2UgbW9kZSBpcyByZWNvbW1lbmRlZC4KKworCVRoZSBtYXggdmFsdWUgZnJvbSBjb25mL3thbGwsaW50ZXJmYWNlfS9ycF9maWx0ZXIgaXMgdXNlZAorCXdoZW4gZG9pbmcgc291cmNlIHZhbGlkYXRpb24gb24gdGhlIHtpbnRlcmZhY2V9LgorCisJRGVmYXVsdCB2YWx1ZSBpcyAwLiBOb3RlIHRoYXQgc29tZSBkaXN0cmlidXRpb25zIGVuYWJsZSBpdAorCWluIHN0YXJ0dXAgc2NyaXB0cy4KKworYXJwX2ZpbHRlciAtIEJPT0xFQU4KKwkxIC0gQWxsb3dzIHlvdSB0byBoYXZlIG11bHRpcGxlIG5ldHdvcmsgaW50ZXJmYWNlcyBvbiB0aGUgc2FtZQorCXN1Ym5ldCwgYW5kIGhhdmUgdGhlIEFSUHMgZm9yIGVhY2ggaW50ZXJmYWNlIGJlIGFuc3dlcmVkCisJYmFzZWQgb24gd2hldGhlciBvciBub3QgdGhlIGtlcm5lbCB3b3VsZCByb3V0ZSBhIHBhY2tldCBmcm9tCisJdGhlIEFSUCdkIElQIG91dCB0aGF0IGludGVyZmFjZSAodGhlcmVmb3JlIHlvdSBtdXN0IHVzZSBzb3VyY2UKKwliYXNlZCByb3V0aW5nIGZvciB0aGlzIHRvIHdvcmspLiBJbiBvdGhlciB3b3JkcyBpdCBhbGxvd3MgY29udHJvbAorCW9mIHdoaWNoIGNhcmRzICh1c3VhbGx5IDEpIHdpbGwgcmVzcG9uZCB0byBhbiBhcnAgcmVxdWVzdC4KKworCTAgLSAoZGVmYXVsdCkgVGhlIGtlcm5lbCBjYW4gcmVzcG9uZCB0byBhcnAgcmVxdWVzdHMgd2l0aCBhZGRyZXNzZXMKKwlmcm9tIG90aGVyIGludGVyZmFjZXMuIFRoaXMgbWF5IHNlZW0gd3JvbmcgYnV0IGl0IHVzdWFsbHkgbWFrZXMKKwlzZW5zZSwgYmVjYXVzZSBpdCBpbmNyZWFzZXMgdGhlIGNoYW5jZSBvZiBzdWNjZXNzZnVsIGNvbW11bmljYXRpb24uCisJSVAgYWRkcmVzc2VzIGFyZSBvd25lZCBieSB0aGUgY29tcGxldGUgaG9zdCBvbiBMaW51eCwgbm90IGJ5CisJcGFydGljdWxhciBpbnRlcmZhY2VzLiBPbmx5IGZvciBtb3JlIGNvbXBsZXggc2V0dXBzIGxpa2UgbG9hZC0KKwliYWxhbmNpbmcsIGRvZXMgdGhpcyBiZWhhdmlvdXIgY2F1c2UgcHJvYmxlbXMuCisKKwlhcnBfZmlsdGVyIGZvciB0aGUgaW50ZXJmYWNlIHdpbGwgYmUgZW5hYmxlZCBpZiBhdCBsZWFzdCBvbmUgb2YKKwljb25mL3thbGwsaW50ZXJmYWNlfS9hcnBfZmlsdGVyIGlzIHNldCB0byBUUlVFLAorCWl0IHdpbGwgYmUgZGlzYWJsZWQgb3RoZXJ3aXNlCisKK2FycF9hbm5vdW5jZSAtIElOVEVHRVIKKwlEZWZpbmUgZGlmZmVyZW50IHJlc3RyaWN0aW9uIGxldmVscyBmb3IgYW5ub3VuY2luZyB0aGUgbG9jYWwKKwlzb3VyY2UgSVAgYWRkcmVzcyBmcm9tIElQIHBhY2tldHMgaW4gQVJQIHJlcXVlc3RzIHNlbnQgb24KKwlpbnRlcmZhY2U6CisJMCAtIChkZWZhdWx0KSBVc2UgYW55IGxvY2FsIGFkZHJlc3MsIGNvbmZpZ3VyZWQgb24gYW55IGludGVyZmFjZQorCTEgLSBUcnkgdG8gYXZvaWQgbG9jYWwgYWRkcmVzc2VzIHRoYXQgYXJlIG5vdCBpbiB0aGUgdGFyZ2V0J3MKKwlzdWJuZXQgZm9yIHRoaXMgaW50ZXJmYWNlLiBUaGlzIG1vZGUgaXMgdXNlZnVsIHdoZW4gdGFyZ2V0CisJaG9zdHMgcmVhY2hhYmxlIHZpYSB0aGlzIGludGVyZmFjZSByZXF1aXJlIHRoZSBzb3VyY2UgSVAKKwlhZGRyZXNzIGluIEFSUCByZXF1ZXN0cyB0byBiZSBwYXJ0IG9mIHRoZWlyIGxvZ2ljYWwgbmV0d29yaworCWNvbmZpZ3VyZWQgb24gdGhlIHJlY2VpdmluZyBpbnRlcmZhY2UuIFdoZW4gd2UgZ2VuZXJhdGUgdGhlCisJcmVxdWVzdCB3ZSB3aWxsIGNoZWNrIGFsbCBvdXIgc3VibmV0cyB0aGF0IGluY2x1ZGUgdGhlCisJdGFyZ2V0IElQIGFuZCB3aWxsIHByZXNlcnZlIHRoZSBzb3VyY2UgYWRkcmVzcyBpZiBpdCBpcyBmcm9tCisJc3VjaCBzdWJuZXQuIElmIHRoZXJlIGlzIG5vIHN1Y2ggc3VibmV0IHdlIHNlbGVjdCBzb3VyY2UKKwlhZGRyZXNzIGFjY29yZGluZyB0byB0aGUgcnVsZXMgZm9yIGxldmVsIDIuCisJMiAtIEFsd2F5cyB1c2UgdGhlIGJlc3QgbG9jYWwgYWRkcmVzcyBmb3IgdGhpcyB0YXJnZXQuCisJSW4gdGhpcyBtb2RlIHdlIGlnbm9yZSB0aGUgc291cmNlIGFkZHJlc3MgaW4gdGhlIElQIHBhY2tldAorCWFuZCB0cnkgdG8gc2VsZWN0IGxvY2FsIGFkZHJlc3MgdGhhdCB3ZSBwcmVmZXIgZm9yIHRhbGtzIHdpdGgKKwl0aGUgdGFyZ2V0IGhvc3QuIFN1Y2ggbG9jYWwgYWRkcmVzcyBpcyBzZWxlY3RlZCBieSBsb29raW5nCisJZm9yIHByaW1hcnkgSVAgYWRkcmVzc2VzIG9uIGFsbCBvdXIgc3VibmV0cyBvbiB0aGUgb3V0Z29pbmcKKwlpbnRlcmZhY2UgdGhhdCBpbmNsdWRlIHRoZSB0YXJnZXQgSVAgYWRkcmVzcy4gSWYgbm8gc3VpdGFibGUKKwlsb2NhbCBhZGRyZXNzIGlzIGZvdW5kIHdlIHNlbGVjdCB0aGUgZmlyc3QgbG9jYWwgYWRkcmVzcworCXdlIGhhdmUgb24gdGhlIG91dGdvaW5nIGludGVyZmFjZSBvciBvbiBhbGwgb3RoZXIgaW50ZXJmYWNlcywKKwl3aXRoIHRoZSBob3BlIHdlIHdpbGwgcmVjZWl2ZSByZXBseSBmb3Igb3VyIHJlcXVlc3QgYW5kCisJZXZlbiBzb21ldGltZXMgbm8gbWF0dGVyIHRoZSBzb3VyY2UgSVAgYWRkcmVzcyB3ZSBhbm5vdW5jZS4KKworCVRoZSBtYXggdmFsdWUgZnJvbSBjb25mL3thbGwsaW50ZXJmYWNlfS9hcnBfYW5ub3VuY2UgaXMgdXNlZC4KKworCUluY3JlYXNpbmcgdGhlIHJlc3RyaWN0aW9uIGxldmVsIGdpdmVzIG1vcmUgY2hhbmNlIGZvcgorCXJlY2VpdmluZyBhbnN3ZXIgZnJvbSB0aGUgcmVzb2x2ZWQgdGFyZ2V0IHdoaWxlIGRlY3JlYXNpbmcKKwl0aGUgbGV2ZWwgYW5ub3VuY2VzIG1vcmUgdmFsaWQgc2VuZGVyJ3MgaW5mb3JtYXRpb24uCisKK2FycF9pZ25vcmUgLSBJTlRFR0VSCisJRGVmaW5lIGRpZmZlcmVudCBtb2RlcyBmb3Igc2VuZGluZyByZXBsaWVzIGluIHJlc3BvbnNlIHRvCisJcmVjZWl2ZWQgQVJQIHJlcXVlc3RzIHRoYXQgcmVzb2x2ZSBsb2NhbCB0YXJnZXQgSVAgYWRkcmVzc2VzOgorCTAgLSAoZGVmYXVsdCk6IHJlcGx5IGZvciBhbnkgbG9jYWwgdGFyZ2V0IElQIGFkZHJlc3MsIGNvbmZpZ3VyZWQKKwlvbiBhbnkgaW50ZXJmYWNlCisJMSAtIHJlcGx5IG9ubHkgaWYgdGhlIHRhcmdldCBJUCBhZGRyZXNzIGlzIGxvY2FsIGFkZHJlc3MKKwljb25maWd1cmVkIG9uIHRoZSBpbmNvbWluZyBpbnRlcmZhY2UKKwkyIC0gcmVwbHkgb25seSBpZiB0aGUgdGFyZ2V0IElQIGFkZHJlc3MgaXMgbG9jYWwgYWRkcmVzcworCWNvbmZpZ3VyZWQgb24gdGhlIGluY29taW5nIGludGVyZmFjZSBhbmQgYm90aCB3aXRoIHRoZQorCXNlbmRlcidzIElQIGFkZHJlc3MgYXJlIHBhcnQgZnJvbSBzYW1lIHN1Ym5ldCBvbiB0aGlzIGludGVyZmFjZQorCTMgLSBkbyBub3QgcmVwbHkgZm9yIGxvY2FsIGFkZHJlc3NlcyBjb25maWd1cmVkIHdpdGggc2NvcGUgaG9zdCwKKwlvbmx5IHJlc29sdXRpb25zIGZvciBnbG9iYWwgYW5kIGxpbmsgYWRkcmVzc2VzIGFyZSByZXBsaWVkCisJNC03IC0gcmVzZXJ2ZWQKKwk4IC0gZG8gbm90IHJlcGx5IGZvciBhbGwgbG9jYWwgYWRkcmVzc2VzCisKKwlUaGUgbWF4IHZhbHVlIGZyb20gY29uZi97YWxsLGludGVyZmFjZX0vYXJwX2lnbm9yZSBpcyB1c2VkCisJd2hlbiBBUlAgcmVxdWVzdCBpcyByZWNlaXZlZCBvbiB0aGUge2ludGVyZmFjZX0KKworYXJwX25vdGlmeSAtIEJPT0xFQU4KKwlEZWZpbmUgbW9kZSBmb3Igbm90aWZpY2F0aW9uIG9mIGFkZHJlc3MgYW5kIGRldmljZSBjaGFuZ2VzLgorCTAgLSAoZGVmYXVsdCk6IGRvIG5vdGhpbmcKKwkxIC0gR2VuZXJhdGUgZ3JhdHVpdG91cyBhcnAgcmVxdWVzdHMgd2hlbiBkZXZpY2UgaXMgYnJvdWdodCB1cAorCSAgICBvciBoYXJkd2FyZSBhZGRyZXNzIGNoYW5nZXMuCisKK2FycF9hY2NlcHQgLSBCT09MRUFOCisJRGVmaW5lIGJlaGF2aW9yIGZvciBncmF0dWl0b3VzIEFSUCBmcmFtZXMgd2hvJ3MgSVAgaXMgbm90CisJYWxyZWFkeSBwcmVzZW50IGluIHRoZSBBUlAgdGFibGU6CisJMCAtIGRvbid0IGNyZWF0ZSBuZXcgZW50cmllcyBpbiB0aGUgQVJQIHRhYmxlCisJMSAtIGNyZWF0ZSBuZXcgZW50cmllcyBpbiB0aGUgQVJQIHRhYmxlCisKKwlCb3RoIHJlcGxpZXMgYW5kIHJlcXVlc3RzIHR5cGUgZ3JhdHVpdG91cyBhcnAgd2lsbCB0cmlnZ2VyIHRoZQorCUFSUCB0YWJsZSB0byBiZSB1cGRhdGVkLCBpZiB0aGlzIHNldHRpbmcgaXMgb24uCisKKwlJZiB0aGUgQVJQIHRhYmxlIGFscmVhZHkgY29udGFpbnMgdGhlIElQIGFkZHJlc3Mgb2YgdGhlCisJZ3JhdHVpdG91cyBhcnAgZnJhbWUsIHRoZSBhcnAgdGFibGUgd2lsbCBiZSB1cGRhdGVkIHJlZ2FyZGxlc3MKKwlpZiB0aGlzIHNldHRpbmcgaXMgb24gb3Igb2ZmLgorCittY2FzdF9zb2xpY2l0IC0gSU5URUdFUgorCVRoZSBtYXhpbXVtIG51bWJlciBvZiBtdWx0aWNhc3QgcHJvYmVzIGluIElOQ09NUExFVEUgc3RhdGUsCisJd2hlbiB0aGUgYXNzb2NpYXRlZCBoYXJkd2FyZSBhZGRyZXNzIGlzIHVua25vd24uICBEZWZhdWx0cworCXRvIDMuCisKK3VjYXN0X3NvbGljaXQgLSBJTlRFR0VSCisJVGhlIG1heGltdW0gbnVtYmVyIG9mIHVuaWNhc3QgcHJvYmVzIGluIFBST0JFIHN0YXRlLCB3aGVuCisJdGhlIGhhcmR3YXJlIGFkZHJlc3MgaXMgYmVpbmcgcmVjb25maXJtZWQuICBEZWZhdWx0cyB0byAzLgorCithcHBfc29saWNpdCAtIElOVEVHRVIKKwlUaGUgbWF4aW11bSBudW1iZXIgb2YgcHJvYmVzIHRvIHNlbmQgdG8gdGhlIHVzZXIgc3BhY2UgQVJQIGRhZW1vbgorCXZpYSBuZXRsaW5rIGJlZm9yZSBkcm9wcGluZyBiYWNrIHRvIG11bHRpY2FzdCBwcm9iZXMgKHNlZQorCW1jYXN0X3Jlc29saWNpdCkuICBEZWZhdWx0cyB0byAwLgorCittY2FzdF9yZXNvbGljaXQgLSBJTlRFR0VSCisJVGhlIG1heGltdW0gbnVtYmVyIG9mIG11bHRpY2FzdCBwcm9iZXMgYWZ0ZXIgdW5pY2FzdCBhbmQKKwlhcHAgcHJvYmVzIGluIFBST0JFIHN0YXRlLiAgRGVmYXVsdHMgdG8gMC4KKworZGlzYWJsZV9wb2xpY3kgLSBCT09MRUFOCisJRGlzYWJsZSBJUFNFQyBwb2xpY3kgKFNQRCkgZm9yIHRoaXMgaW50ZXJmYWNlCisKK2Rpc2FibGVfeGZybSAtIEJPT0xFQU4KKwlEaXNhYmxlIElQU0VDIGVuY3J5cHRpb24gb24gdGhpcyBpbnRlcmZhY2UsIHdoYXRldmVyIHRoZSBwb2xpY3kKKworaWdtcHYyX3Vuc29saWNpdGVkX3JlcG9ydF9pbnRlcnZhbCAtIElOVEVHRVIKKwlUaGUgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIGluIHdoaWNoIHRoZSBuZXh0IHVuc29saWNpdGVkCisJSUdNUHYxIG9yIElHTVB2MiByZXBvcnQgcmV0cmFuc21pdCB3aWxsIHRha2UgcGxhY2UuCisJRGVmYXVsdDogMTAwMDAgKDEwIHNlY29uZHMpCisKK2lnbXB2M191bnNvbGljaXRlZF9yZXBvcnRfaW50ZXJ2YWwgLSBJTlRFR0VSCisJVGhlIGludGVydmFsIGluIG1pbGxpc2Vjb25kcyBpbiB3aGljaCB0aGUgbmV4dCB1bnNvbGljaXRlZAorCUlHTVB2MyByZXBvcnQgcmV0cmFuc21pdCB3aWxsIHRha2UgcGxhY2UuCisJRGVmYXVsdDogMTAwMCAoMSBzZWNvbmRzKQorCitwcm9tb3RlX3NlY29uZGFyaWVzIC0gQk9PTEVBTgorCVdoZW4gYSBwcmltYXJ5IElQIGFkZHJlc3MgaXMgcmVtb3ZlZCBmcm9tIHRoaXMgaW50ZXJmYWNlCisJcHJvbW90ZSBhIGNvcnJlc3BvbmRpbmcgc2Vjb25kYXJ5IElQIGFkZHJlc3MgaW5zdGVhZCBvZgorCXJlbW92aW5nIGFsbCB0aGUgY29ycmVzcG9uZGluZyBzZWNvbmRhcnkgSVAgYWRkcmVzc2VzLgorCisKK3RhZyAtIElOVEVHRVIKKwlBbGxvd3MgeW91IHRvIHdyaXRlIGEgbnVtYmVyLCB3aGljaCBjYW4gYmUgdXNlZCBhcyByZXF1aXJlZC4KKwlEZWZhdWx0IHZhbHVlIGlzIDAuCisKK3hmcm00X2djX3RocmVzaCAtIElOVEVHRVIKKwlUaGUgdGhyZXNob2xkIGF0IHdoaWNoIHdlIHdpbGwgc3RhcnQgZ2FyYmFnZSBjb2xsZWN0aW5nIGZvciBJUHY0CisJZGVzdGluYXRpb24gY2FjaGUgZW50cmllcy4gIEF0IHR3aWNlIHRoaXMgdmFsdWUgdGhlIHN5c3RlbSB3aWxsCisJcmVmdXNlIG5ldyBhbGxvY2F0aW9ucy4gVGhlIHZhbHVlIG11c3QgYmUgc2V0IGJlbG93IHRoZSBmbG93Y2FjaGUKKwlsaW1pdCAoNDA5NiAqIG51bWJlciBvZiBvbmxpbmUgY3B1cykgdG8gdGFrZSBlZmZlY3QuCisKK2lnbXBfbGlua19sb2NhbF9tY2FzdF9yZXBvcnRzIC0gQk9PTEVBTgorCUVuYWJsZSBJR01QIHJlcG9ydHMgZm9yIGxpbmsgbG9jYWwgbXVsdGljYXN0IGdyb3VwcyBpbiB0aGUKKwkyMjQuMC4wLlggcmFuZ2UuCisJRGVmYXVsdCBUUlVFCisKK0FsZXhleSBLdXpuZXRzb3YuCitrdXpuZXRAbXMyLmluci5hYy5ydQorCitVcGRhdGVkIGJ5OgorQW5kaSBLbGVlbgorYWtAbXVjLmRlCitOaWNvbGFzIERlbG9uCitkZWxvbi5uaWNvbGFzQHdhbmFkb28uZnIKKworCisKKworL3Byb2Mvc3lzL25ldC9pcHY2LyogVmFyaWFibGVzOgorCitJUHY2IGhhcyBubyBnbG9iYWwgdmFyaWFibGVzIHN1Y2ggYXMgdGNwXyouICB0Y3BfKiBzZXR0aW5ncyB1bmRlciBpcHY0LyBhbHNvCithcHBseSB0byBJUHY2IFtYWFg/XS4KKworYmluZHY2b25seSAtIEJPT0xFQU4KKwlEZWZhdWx0IHZhbHVlIGZvciBJUFY2X1Y2T05MWSBzb2NrZXQgb3B0aW9uLAorCXdoaWNoIHJlc3RyaWN0cyB1c2Ugb2YgdGhlIElQdjYgc29ja2V0IHRvIElQdjYgY29tbXVuaWNhdGlvbgorCW9ubHkuCisJCVRSVUU6IGRpc2FibGUgSVB2NC1tYXBwZWQgYWRkcmVzcyBmZWF0dXJlCisJCUZBTFNFOiBlbmFibGUgSVB2NC1tYXBwZWQgYWRkcmVzcyBmZWF0dXJlCisKKwlEZWZhdWx0OiBGQUxTRSAoYXMgc3BlY2lmaWVkIGluIFJGQzM0OTMpCisKK2Zsb3dsYWJlbF9jb25zaXN0ZW5jeSAtIEJPT0xFQU4KKwlQcm90ZWN0IHRoZSBjb25zaXN0ZW5jeSAoYW5kIHVuaWNpdHkpIG9mIGZsb3cgbGFiZWwuCisJWW91IGhhdmUgdG8gZGlzYWJsZSBpdCB0byB1c2UgSVBWNl9GTF9GX1JFRkxFQ1QgZmxhZyBvbiB0aGUKKwlmbG93IGxhYmVsIG1hbmFnZXIuCisJVFJVRTogZW5hYmxlZAorCUZBTFNFOiBkaXNhYmxlZAorCURlZmF1bHQ6IFRSVUUKKworYXV0b19mbG93bGFiZWxzIC0gSU5URUdFUgorCUF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgZmxvdyBsYWJlbHMgYmFzZWQgb24gYSBmbG93IGhhc2ggb2YgdGhlCisJcGFja2V0LiBUaGlzIGFsbG93cyBpbnRlcm1lZGlhdGUgZGV2aWNlcywgc3VjaCBhcyByb3V0ZXJzLCB0bworCWlkZW50aWZ5IHBhY2tldCBmbG93cyBmb3IgbWVjaGFuaXNtcyBsaWtlIEVxdWFsIENvc3QgTXVsdGlwYXRoCisJUm91dGluZyAoc2VlIFJGQyA2NDM4KS4KKwkwOiBhdXRvbWF0aWMgZmxvdyBsYWJlbHMgYXJlIGNvbXBsZXRlbHkgZGlzYWJsZWQKKwkxOiBhdXRvbWF0aWMgZmxvdyBsYWJlbHMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCwgdGhleSBjYW4gYmUKKwkgICBkaXNhYmxlZCBvbiBhIHBlciBzb2NrZXQgYmFzaXMgdXNpbmcgdGhlIElQVjZfQVVUT0ZMT1dMQUJFTAorCSAgIHNvY2tldCBvcHRpb24KKwkyOiBhdXRvbWF0aWMgZmxvdyBsYWJlbHMgYXJlIGFsbG93ZWQsIHRoZXkgbWF5IGJlIGVuYWJsZWQgb24gYQorCSAgIHBlciBzb2NrZXQgYmFzaXMgdXNpbmcgdGhlIElQVjZfQVVUT0ZMT1dMQUJFTCBzb2NrZXQgb3B0aW9uCisJMzogYXV0b21hdGljIGZsb3cgbGFiZWxzIGFyZSBlbmFibGVkIGFuZCBlbmZvcmNlZCwgdGhleSBjYW5ub3QKKwkgICBiZSBkaXNhYmxlZCBieSB0aGUgc29ja2V0IG9wdGlvbgorCURlZmF1bHQ6IDEKKworZmxvd2xhYmVsX3N0YXRlX3JhbmdlcyAtIEJPT0xFQU4KKwlTcGxpdCB0aGUgZmxvdyBsYWJlbCBudW1iZXIgc3BhY2UgaW50byB0d28gcmFuZ2VzLiAwLTB4N0ZGRkYgaXMKKwlyZXNlcnZlZCBmb3IgdGhlIElQdjYgZmxvdyBtYW5hZ2VyIGZhY2lsaXR5LCAweDgwMDAwLTB4RkZGRkYKKwlpcyByZXNlcnZlZCBmb3Igc3RhdGVsZXNzIGZsb3cgbGFiZWxzIGFzIGRlc2NyaWJlZCBpbiBSRkM2NDM3LgorCVRSVUU6IGVuYWJsZWQKKwlGQUxTRTogZGlzYWJsZWQKKwlEZWZhdWx0OiB0cnVlCisKK2FueWNhc3Rfc3JjX2VjaG9fcmVwbHkgLSBCT09MRUFOCisJQ29udHJvbHMgdGhlIHVzZSBvZiBhbnljYXN0IGFkZHJlc3NlcyBhcyBzb3VyY2UgYWRkcmVzc2VzIGZvciBJQ01QdjYKKwllY2hvIHJlcGx5CisJVFJVRTogIGVuYWJsZWQKKwlGQUxTRTogZGlzYWJsZWQKKwlEZWZhdWx0OiBGQUxTRQorCitpZGdlbl9kZWxheSAtIElOVEVHRVIKKwlDb250cm9scyB0aGUgZGVsYXkgaW4gc2Vjb25kcyBhZnRlciB3aGljaCB0aW1lIHRvIHJldHJ5CisJcHJpdmFjeSBzdGFibGUgYWRkcmVzcyBnZW5lcmF0aW9uIGlmIGEgREFEIGNvbmZsaWN0IGlzCisJZGV0ZWN0ZWQuCisJRGVmYXVsdDogMSAoYXMgc3BlY2lmaWVkIGluIFJGQzcyMTcpCisKK2lkZ2VuX3JldHJpZXMgLSBJTlRFR0VSCisJQ29udHJvbHMgdGhlIG51bWJlciBvZiByZXRyaWVzIHRvIGdlbmVyYXRlIGEgc3RhYmxlIHByaXZhY3kKKwlhZGRyZXNzIGlmIGEgREFEIGNvbmZsaWN0IGlzIGRldGVjdGVkLgorCURlZmF1bHQ6IDMgKGFzIHNwZWNpZmllZCBpbiBSRkM3MjE3KQorCittbGRfcXJ2IC0gSU5URUdFUgorCUNvbnRyb2xzIHRoZSBNTEQgcXVlcnkgcm9idXN0bmVzcyB2YXJpYWJsZSAoc2VlIFJGQzM4MTAgOS4xKS4KKwlEZWZhdWx0OiAyIChhcyBzcGVjaWZpZWQgYnkgUkZDMzgxMCA5LjEpCisJTWluaW11bTogMSAoYXMgc3BlY2lmaWVkIGJ5IFJGQzY2MzYgNC41KQorCitJUHY2IEZyYWdtZW50YXRpb246CisKK2lwNmZyYWdfaGlnaF90aHJlc2ggLSBJTlRFR0VSCisJTWF4aW11bSBtZW1vcnkgdXNlZCB0byByZWFzc2VtYmxlIElQdjYgZnJhZ21lbnRzLiBXaGVuCisJaXA2ZnJhZ19oaWdoX3RocmVzaCBieXRlcyBvZiBtZW1vcnkgaXMgYWxsb2NhdGVkIGZvciB0aGlzIHB1cnBvc2UsCisJdGhlIGZyYWdtZW50IGhhbmRsZXIgd2lsbCB0b3NzIHBhY2tldHMgdW50aWwgaXA2ZnJhZ19sb3dfdGhyZXNoCisJaXMgcmVhY2hlZC4KKworaXA2ZnJhZ19sb3dfdGhyZXNoIC0gSU5URUdFUgorCVNlZSBpcDZmcmFnX2hpZ2hfdGhyZXNoCisKK2lwNmZyYWdfdGltZSAtIElOVEVHRVIKKwlUaW1lIGluIHNlY29uZHMgdG8ga2VlcCBhbiBJUHY2IGZyYWdtZW50IGluIG1lbW9yeS4KKworY29uZi9kZWZhdWx0Lyo6CisJQ2hhbmdlIHRoZSBpbnRlcmZhY2Utc3BlY2lmaWMgZGVmYXVsdCBzZXR0aW5ncy4KKworCitjb25mL2FsbC8qOgorCUNoYW5nZSBhbGwgdGhlIGludGVyZmFjZS1zcGVjaWZpYyBzZXR0aW5ncy4KKworCVtYWFg6ICBPdGhlciBzcGVjaWFsIGZlYXR1cmVzIHRoYW4gZm9yd2FyZGluZz9dCisKK2NvbmYvYWxsL2ZvcndhcmRpbmcgLSBCT09MRUFOCisJRW5hYmxlIGdsb2JhbCBJUHY2IGZvcndhcmRpbmcgYmV0d2VlbiBhbGwgaW50ZXJmYWNlcy4KKworCUlQdjQgYW5kIElQdjYgd29yayBkaWZmZXJlbnRseSBoZXJlOyBlLmcuIG5ldGZpbHRlciBtdXN0IGJlIHVzZWQKKwl0byBjb250cm9sIHdoaWNoIGludGVyZmFjZXMgbWF5IGZvcndhcmQgcGFja2V0cyBhbmQgd2hpY2ggbm90LgorCisJVGhpcyBhbHNvIHNldHMgYWxsIGludGVyZmFjZXMnIEhvc3QvUm91dGVyIHNldHRpbmcKKwknZm9yd2FyZGluZycgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS4gIFNlZSBiZWxvdyBmb3IgZGV0YWlscy4KKworCVRoaXMgcmVmZXJyZWQgdG8gYXMgZ2xvYmFsIGZvcndhcmRpbmcuCisKK3Byb3h5X25kcCAtIEJPT0xFQU4KKwlEbyBwcm94eSBuZHAuCisKK2Z3bWFya19yZWZsZWN0IC0gQk9PTEVBTgorCUNvbnRyb2xzIHRoZSBmd21hcmsgb2Yga2VybmVsLWdlbmVyYXRlZCBJUHY2IHJlcGx5IHBhY2tldHMgdGhhdCBhcmUgbm90CisJYXNzb2NpYXRlZCB3aXRoIGEgc29ja2V0IGZvciBleGFtcGxlLCBUQ1AgUlNUcyBvciBJQ01QdjYgZWNobyByZXBsaWVzKS4KKwlJZiB1bnNldCwgdGhlc2UgcGFja2V0cyBoYXZlIGEgZndtYXJrIG9mIHplcm8uIElmIHNldCwgdGhleSBoYXZlIHRoZQorCWZ3bWFyayBvZiB0aGUgcGFja2V0IHRoZXkgYXJlIHJlcGx5aW5nIHRvLgorCURlZmF1bHQ6IDAKKworY29uZi9pbnRlcmZhY2UvKjoKKwlDaGFuZ2Ugc3BlY2lhbCBzZXR0aW5ncyBwZXIgaW50ZXJmYWNlLgorCisJVGhlIGZ1bmN0aW9uYWwgYmVoYXZpb3VyIGZvciBjZXJ0YWluIHNldHRpbmdzIGlzIGRpZmZlcmVudAorCWRlcGVuZGluZyBvbiB3aGV0aGVyIGxvY2FsIGZvcndhcmRpbmcgaXMgZW5hYmxlZCBvciBub3QuCisKK2FjY2VwdF9yYSAtIElOVEVHRVIKKwlBY2NlcHQgUm91dGVyIEFkdmVydGlzZW1lbnRzOyBhdXRvY29uZmlndXJlIHVzaW5nIHRoZW0uCisKKwlJdCBhbHNvIGRldGVybWluZXMgd2hldGhlciBvciBub3QgdG8gdHJhbnNtaXQgUm91dGVyCisJU29saWNpdGF0aW9ucy4gSWYgYW5kIG9ubHkgaWYgdGhlIGZ1bmN0aW9uYWwgc2V0dGluZyBpcyB0bworCWFjY2VwdCBSb3V0ZXIgQWR2ZXJ0aXNlbWVudHMsIFJvdXRlciBTb2xpY2l0YXRpb25zIHdpbGwgYmUKKwl0cmFuc21pdHRlZC4KKworCVBvc3NpYmxlIHZhbHVlcyBhcmU6CisJCTAgRG8gbm90IGFjY2VwdCBSb3V0ZXIgQWR2ZXJ0aXNlbWVudHMuCisJCTEgQWNjZXB0IFJvdXRlciBBZHZlcnRpc2VtZW50cyBpZiBmb3J3YXJkaW5nIGlzIGRpc2FibGVkLgorCQkyIE92ZXJydWxlIGZvcndhcmRpbmcgYmVoYXZpb3VyLiBBY2NlcHQgUm91dGVyIEFkdmVydGlzZW1lbnRzCisJCSAgZXZlbiBpZiBmb3J3YXJkaW5nIGlzIGVuYWJsZWQuCisKKwlGdW5jdGlvbmFsIGRlZmF1bHQ6IGVuYWJsZWQgaWYgbG9jYWwgZm9yd2FyZGluZyBpcyBkaXNhYmxlZC4KKwkJCSAgICBkaXNhYmxlZCBpZiBsb2NhbCBmb3J3YXJkaW5nIGlzIGVuYWJsZWQuCisKK2FjY2VwdF9yYV9kZWZydHIgLSBCT09MRUFOCisJTGVhcm4gZGVmYXVsdCByb3V0ZXIgaW4gUm91dGVyIEFkdmVydGlzZW1lbnQuCisKKwlGdW5jdGlvbmFsIGRlZmF1bHQ6IGVuYWJsZWQgaWYgYWNjZXB0X3JhIGlzIGVuYWJsZWQuCisJCQkgICAgZGlzYWJsZWQgaWYgYWNjZXB0X3JhIGlzIGRpc2FibGVkLgorCithY2NlcHRfcmFfZnJvbV9sb2NhbCAtIEJPT0xFQU4KKwlBY2NlcHQgUkEgd2l0aCBzb3VyY2UtYWRkcmVzcyB0aGF0IGlzIGZvdW5kIG9uIGxvY2FsIG1hY2hpbmUKKyAgICAgICAgaWYgdGhlIFJBIGlzIG90aGVyd2lzZSBwcm9wZXIgYW5kIGFibGUgdG8gYmUgYWNjZXB0ZWQuCisgICAgICAgIERlZmF1bHQgaXMgdG8gTk9UIGFjY2VwdCB0aGVzZSBhcyBpdCBtYXkgYmUgYW4gdW4taW50ZW5kZWQKKyAgICAgICAgbmV0d29yayBsb29wLgorCisJRnVuY3Rpb25hbCBkZWZhdWx0OgorICAgICAgICAgICBlbmFibGVkIGlmIGFjY2VwdF9yYV9mcm9tX2xvY2FsIGlzIGVuYWJsZWQKKyAgICAgICAgICAgICAgIG9uIGEgc3BlY2lmaWMgaW50ZXJmYWNlLgorCSAgIGRpc2FibGVkIGlmIGFjY2VwdF9yYV9mcm9tX2xvY2FsIGlzIGRpc2FibGVkCisgICAgICAgICAgICAgICBvbiBhIHNwZWNpZmljIGludGVyZmFjZS4KKworYWNjZXB0X3JhX21pbl9ob3BfbGltaXQgLSBJTlRFR0VSCisJTWluaW11bSBob3AgbGltaXQgSW5mb3JtYXRpb24gaW4gUm91dGVyIEFkdmVydGlzZW1lbnQuCisKKwlIb3AgbGltaXQgSW5mb3JtYXRpb24gaW4gUm91dGVyIEFkdmVydGlzZW1lbnQgbGVzcyB0aGFuIHRoaXMKKwl2YXJpYWJsZSBzaGFsbCBiZSBpZ25vcmVkLgorCisJRGVmYXVsdDogMQorCithY2NlcHRfcmFfcGluZm8gLSBCT09MRUFOCisJTGVhcm4gUHJlZml4IEluZm9ybWF0aW9uIGluIFJvdXRlciBBZHZlcnRpc2VtZW50LgorCisJRnVuY3Rpb25hbCBkZWZhdWx0OiBlbmFibGVkIGlmIGFjY2VwdF9yYSBpcyBlbmFibGVkLgorCQkJICAgIGRpc2FibGVkIGlmIGFjY2VwdF9yYSBpcyBkaXNhYmxlZC4KKworYWNjZXB0X3JhX3J0X2luZm9fbWF4X3BsZW4gLSBJTlRFR0VSCisJTWF4aW11bSBwcmVmaXggbGVuZ3RoIG9mIFJvdXRlIEluZm9ybWF0aW9uIGluIFJBLgorCisJUm91dGUgSW5mb3JtYXRpb24gdy8gcHJlZml4IGxhcmdlciB0aGFuIG9yIGVxdWFsIHRvIHRoaXMKKwl2YXJpYWJsZSBzaGFsbCBiZSBpZ25vcmVkLgorCisJRnVuY3Rpb25hbCBkZWZhdWx0OiAwIGlmIGFjY2VwdF9yYV9ydHJfcHJlZiBpcyBlbmFibGVkLgorCQkJICAgIC0xIGlmIGFjY2VwdF9yYV9ydHJfcHJlZiBpcyBkaXNhYmxlZC4KKworYWNjZXB0X3JhX3J0cl9wcmVmIC0gQk9PTEVBTgorCUFjY2VwdCBSb3V0ZXIgUHJlZmVyZW5jZSBpbiBSQS4KKworCUZ1bmN0aW9uYWwgZGVmYXVsdDogZW5hYmxlZCBpZiBhY2NlcHRfcmEgaXMgZW5hYmxlZC4KKwkJCSAgICBkaXNhYmxlZCBpZiBhY2NlcHRfcmEgaXMgZGlzYWJsZWQuCisKK2FjY2VwdF9yYV9tdHUgLSBCT09MRUFOCisJQXBwbHkgdGhlIE1UVSB2YWx1ZSBzcGVjaWZpZWQgaW4gUkEgb3B0aW9uIDUgKFJGQzQ4NjEpLiBJZgorCWRpc2FibGVkLCB0aGUgTVRVIHNwZWNpZmllZCBpbiB0aGUgUkEgd2lsbCBiZSBpZ25vcmVkLgorCisJRnVuY3Rpb25hbCBkZWZhdWx0OiBlbmFibGVkIGlmIGFjY2VwdF9yYSBpcyBlbmFibGVkLgorCQkJICAgIGRpc2FibGVkIGlmIGFjY2VwdF9yYSBpcyBkaXNhYmxlZC4KKworYWNjZXB0X3JlZGlyZWN0cyAtIEJPT0xFQU4KKwlBY2NlcHQgUmVkaXJlY3RzLgorCisJRnVuY3Rpb25hbCBkZWZhdWx0OiBlbmFibGVkIGlmIGxvY2FsIGZvcndhcmRpbmcgaXMgZGlzYWJsZWQuCisJCQkgICAgZGlzYWJsZWQgaWYgbG9jYWwgZm9yd2FyZGluZyBpcyBlbmFibGVkLgorCithY2NlcHRfc291cmNlX3JvdXRlIC0gSU5URUdFUgorCUFjY2VwdCBzb3VyY2Ugcm91dGluZyAocm91dGluZyBleHRlbnNpb24gaGVhZGVyKS4KKworCT49IDA6IEFjY2VwdCBvbmx5IHJvdXRpbmcgaGVhZGVyIHR5cGUgMi4KKwk8IDA6IERvIG5vdCBhY2NlcHQgcm91dGluZyBoZWFkZXIuCisKKwlEZWZhdWx0OiAwCisKK2F1dG9jb25mIC0gQk9PTEVBTgorCUF1dG9jb25maWd1cmUgYWRkcmVzc2VzIHVzaW5nIFByZWZpeCBJbmZvcm1hdGlvbiBpbiBSb3V0ZXIKKwlBZHZlcnRpc2VtZW50cy4KKworCUZ1bmN0aW9uYWwgZGVmYXVsdDogZW5hYmxlZCBpZiBhY2NlcHRfcmFfcGluZm8gaXMgZW5hYmxlZC4KKwkJCSAgICBkaXNhYmxlZCBpZiBhY2NlcHRfcmFfcGluZm8gaXMgZGlzYWJsZWQuCisKK2RhZF90cmFuc21pdHMgLSBJTlRFR0VSCisJVGhlIGFtb3VudCBvZiBEdXBsaWNhdGUgQWRkcmVzcyBEZXRlY3Rpb24gcHJvYmVzIHRvIHNlbmQuCisJRGVmYXVsdDogMQorCitmb3J3YXJkaW5nIC0gSU5URUdFUgorCUNvbmZpZ3VyZSBpbnRlcmZhY2Utc3BlY2lmaWMgSG9zdC9Sb3V0ZXIgYmVoYXZpb3VyLgorCisJTm90ZTogSXQgaXMgcmVjb21tZW5kZWQgdG8gaGF2ZSB0aGUgc2FtZSBzZXR0aW5nIG9uIGFsbAorCWludGVyZmFjZXM7IG1peGVkIHJvdXRlci9ob3N0IHNjZW5hcmlvcyBhcmUgcmF0aGVyIHVuY29tbW9uLgorCisJUG9zc2libGUgdmFsdWVzIGFyZToKKwkJMCBGb3J3YXJkaW5nIGRpc2FibGVkCisJCTEgRm9yd2FyZGluZyBlbmFibGVkCisKKwlGQUxTRSAoMCk6CisKKwlCeSBkZWZhdWx0LCBIb3N0IGJlaGF2aW91ciBpcyBhc3N1bWVkLiAgVGhpcyBtZWFuczoKKworCTEuIElzUm91dGVyIGZsYWcgaXMgbm90IHNldCBpbiBOZWlnaGJvdXIgQWR2ZXJ0aXNlbWVudHMuCisJMi4gSWYgYWNjZXB0X3JhIGlzIFRSVUUgKGRlZmF1bHQpLCB0cmFuc21pdCBSb3V0ZXIKKwkgICBTb2xpY2l0YXRpb25zLgorCTMuIElmIGFjY2VwdF9yYSBpcyBUUlVFIChkZWZhdWx0KSwgYWNjZXB0IFJvdXRlcgorCSAgIEFkdmVydGlzZW1lbnRzIChhbmQgZG8gYXV0b2NvbmZpZ3VyYXRpb24pLgorCTQuIElmIGFjY2VwdF9yZWRpcmVjdHMgaXMgVFJVRSAoZGVmYXVsdCksIGFjY2VwdCBSZWRpcmVjdHMuCisKKwlUUlVFICgxKToKKworCUlmIGxvY2FsIGZvcndhcmRpbmcgaXMgZW5hYmxlZCwgUm91dGVyIGJlaGF2aW91ciBpcyBhc3N1bWVkLgorCVRoaXMgbWVhbnMgZXhhY3RseSB0aGUgcmV2ZXJzZSBmcm9tIHRoZSBhYm92ZToKKworCTEuIElzUm91dGVyIGZsYWcgaXMgc2V0IGluIE5laWdoYm91ciBBZHZlcnRpc2VtZW50cy4KKwkyLiBSb3V0ZXIgU29saWNpdGF0aW9ucyBhcmUgbm90IHNlbnQgdW5sZXNzIGFjY2VwdF9yYSBpcyAyLgorCTMuIFJvdXRlciBBZHZlcnRpc2VtZW50cyBhcmUgaWdub3JlZCB1bmxlc3MgYWNjZXB0X3JhIGlzIDIuCisJNC4gUmVkaXJlY3RzIGFyZSBpZ25vcmVkLgorCisJRGVmYXVsdDogMCAoZGlzYWJsZWQpIGlmIGdsb2JhbCBmb3J3YXJkaW5nIGlzIGRpc2FibGVkIChkZWZhdWx0KSwKKwkJIG90aGVyd2lzZSAxIChlbmFibGVkKS4KKworaG9wX2xpbWl0IC0gSU5URUdFUgorCURlZmF1bHQgSG9wIExpbWl0IHRvIHNldC4KKwlEZWZhdWx0OiA2NAorCittdHUgLSBJTlRFR0VSCisJRGVmYXVsdCBNYXhpbXVtIFRyYW5zZmVyIFVuaXQKKwlEZWZhdWx0OiAxMjgwIChJUHY2IHJlcXVpcmVkIG1pbmltdW0pCisKK2lwX25vbmxvY2FsX2JpbmQgLSBCT09MRUFOCisJSWYgc2V0LCBhbGxvd3MgcHJvY2Vzc2VzIHRvIGJpbmQoKSB0byBub24tbG9jYWwgSVB2NiBhZGRyZXNzZXMsCisJd2hpY2ggY2FuIGJlIHF1aXRlIHVzZWZ1bCAtIGJ1dCBtYXkgYnJlYWsgc29tZSBhcHBsaWNhdGlvbnMuCisJRGVmYXVsdDogMAorCityb3V0ZXJfcHJvYmVfaW50ZXJ2YWwgLSBJTlRFR0VSCisJTWluaW11bSBpbnRlcnZhbCAoaW4gc2Vjb25kcykgYmV0d2VlbiBSb3V0ZXIgUHJvYmluZyBkZXNjcmliZWQKKwlpbiBSRkM0MTkxLgorCisJRGVmYXVsdDogNjAKKworcm91dGVyX3NvbGljaXRhdGlvbl9kZWxheSAtIElOVEVHRVIKKwlOdW1iZXIgb2Ygc2Vjb25kcyB0byB3YWl0IGFmdGVyIGludGVyZmFjZSBpcyBicm91Z2h0IHVwCisJYmVmb3JlIHNlbmRpbmcgUm91dGVyIFNvbGljaXRhdGlvbnMuCisJRGVmYXVsdDogMQorCityb3V0ZXJfc29saWNpdGF0aW9uX2ludGVydmFsIC0gSU5URUdFUgorCU51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQgYmV0d2VlbiBSb3V0ZXIgU29saWNpdGF0aW9ucy4KKwlEZWZhdWx0OiA0CisKK3JvdXRlcl9zb2xpY2l0YXRpb25zIC0gSU5URUdFUgorCU51bWJlciBvZiBSb3V0ZXIgU29saWNpdGF0aW9ucyB0byBzZW5kIHVudGlsIGFzc3VtaW5nIG5vCisJcm91dGVycyBhcmUgcHJlc2VudC4KKwlEZWZhdWx0OiAzCisKK3VzZV9vaWZfYWRkcnNfb25seSAtIEJPT0xFQU4KKwlXaGVuIGVuYWJsZWQsIHRoZSBjYW5kaWRhdGUgc291cmNlIGFkZHJlc3NlcyBmb3IgZGVzdGluYXRpb25zCisJcm91dGVkIHZpYSB0aGlzIGludGVyZmFjZSBhcmUgcmVzdHJpY3RlZCB0byB0aGUgc2V0IG9mIGFkZHJlc3NlcworCWNvbmZpZ3VyZWQgb24gdGhpcyBpbnRlcmZhY2UgKHZpcy4gUkZDIDY3MjQsIHNlY3Rpb24gNCkuCisKKwlEZWZhdWx0OiBmYWxzZQorCit1c2VfdGVtcGFkZHIgLSBJTlRFR0VSCisJUHJlZmVyZW5jZSBmb3IgUHJpdmFjeSBFeHRlbnNpb25zIChSRkMzMDQxKS4KKwkgIDw9IDAgOiBkaXNhYmxlIFByaXZhY3kgRXh0ZW5zaW9ucworCSAgPT0gMSA6IGVuYWJsZSBQcml2YWN5IEV4dGVuc2lvbnMsIGJ1dCBwcmVmZXIgcHVibGljCisJICAgICAgICAgYWRkcmVzc2VzIG92ZXIgdGVtcG9yYXJ5IGFkZHJlc3Nlcy4KKwkgID4gIDEgOiBlbmFibGUgUHJpdmFjeSBFeHRlbnNpb25zIGFuZCBwcmVmZXIgdGVtcG9yYXJ5CisJICAgICAgICAgYWRkcmVzc2VzIG92ZXIgcHVibGljIGFkZHJlc3Nlcy4KKwlEZWZhdWx0OiAgMCAoZm9yIG1vc3QgZGV2aWNlcykKKwkJIC0xIChmb3IgcG9pbnQtdG8tcG9pbnQgZGV2aWNlcyBhbmQgbG9vcGJhY2sgZGV2aWNlcykKKwordGVtcF92YWxpZF9sZnQgLSBJTlRFR0VSCisJdmFsaWQgbGlmZXRpbWUgKGluIHNlY29uZHMpIGZvciB0ZW1wb3JhcnkgYWRkcmVzc2VzLgorCURlZmF1bHQ6IDYwNDgwMCAoNyBkYXlzKQorCit0ZW1wX3ByZWZlcmVkX2xmdCAtIElOVEVHRVIKKwlQcmVmZXJyZWQgbGlmZXRpbWUgKGluIHNlY29uZHMpIGZvciB0ZW1wb3JhcnkgYWRkcmVzc2VzLgorCURlZmF1bHQ6IDg2NDAwICgxIGRheSkKKworbWF4X2Rlc3luY19mYWN0b3IgLSBJTlRFR0VSCisJTWF4aW11bSB2YWx1ZSBmb3IgREVTWU5DX0ZBQ1RPUiwgd2hpY2ggaXMgYSByYW5kb20gdmFsdWUKKwl0aGF0IGVuc3VyZXMgdGhhdCBjbGllbnRzIGRvbid0IHN5bmNocm9uaXplIHdpdGggZWFjaAorCW90aGVyIGFuZCBnZW5lcmF0ZSBuZXcgYWRkcmVzc2VzIGF0IGV4YWN0bHkgdGhlIHNhbWUgdGltZS4KKwl2YWx1ZSBpcyBpbiBzZWNvbmRzLgorCURlZmF1bHQ6IDYwMAorCityZWdlbl9tYXhfcmV0cnkgLSBJTlRFR0VSCisJTnVtYmVyIG9mIGF0dGVtcHRzIGJlZm9yZSBnaXZlIHVwIGF0dGVtcHRpbmcgdG8gZ2VuZXJhdGUKKwl2YWxpZCB0ZW1wb3JhcnkgYWRkcmVzc2VzLgorCURlZmF1bHQ6IDUKKworbWF4X2FkZHJlc3NlcyAtIElOVEVHRVIKKwlNYXhpbXVtIG51bWJlciBvZiBhdXRvY29uZmlndXJlZCBhZGRyZXNzZXMgcGVyIGludGVyZmFjZS4gIFNldHRpbmcKKwl0byB6ZXJvIGRpc2FibGVzIHRoZSBsaW1pdGF0aW9uLiAgSXQgaXMgbm90IHJlY29tbWVuZGVkIHRvIHNldCB0aGlzCisJdmFsdWUgdG9vIGxhcmdlIChvciB0byB6ZXJvKSBiZWNhdXNlIGl0IHdvdWxkIGJlIGFuIGVhc3kgd2F5IHRvCisJY3Jhc2ggdGhlIGtlcm5lbCBieSBhbGxvd2luZyB0b28gbWFueSBhZGRyZXNzZXMgdG8gYmUgY3JlYXRlZC4KKwlEZWZhdWx0OiAxNgorCitkaXNhYmxlX2lwdjYgLSBCT09MRUFOCisJRGlzYWJsZSBJUHY2IG9wZXJhdGlvbi4gIElmIGFjY2VwdF9kYWQgaXMgc2V0IHRvIDIsIHRoaXMgdmFsdWUKKwl3aWxsIGJlIGR5bmFtaWNhbGx5IHNldCB0byBUUlVFIGlmIERBRCBmYWlscyBmb3IgdGhlIGxpbmstbG9jYWwKKwlhZGRyZXNzLgorCURlZmF1bHQ6IEZBTFNFIChlbmFibGUgSVB2NiBvcGVyYXRpb24pCisKKwlXaGVuIHRoaXMgdmFsdWUgaXMgY2hhbmdlZCBmcm9tIDEgdG8gMCAoSVB2NiBpcyBiZWluZyBlbmFibGVkKSwKKwlpdCB3aWxsIGR5bmFtaWNhbGx5IGNyZWF0ZSBhIGxpbmstbG9jYWwgYWRkcmVzcyBvbiB0aGUgZ2l2ZW4KKwlpbnRlcmZhY2UgYW5kIHN0YXJ0IER1cGxpY2F0ZSBBZGRyZXNzIERldGVjdGlvbiwgaWYgbmVjZXNzYXJ5LgorCisJV2hlbiB0aGlzIHZhbHVlIGlzIGNoYW5nZWQgZnJvbSAwIHRvIDEgKElQdjYgaXMgYmVpbmcgZGlzYWJsZWQpLAorCWl0IHdpbGwgZHluYW1pY2FsbHkgZGVsZXRlIGFsbCBhZGRyZXNzIG9uIHRoZSBnaXZlbiBpbnRlcmZhY2UuCisKK2FjY2VwdF9kYWQgLSBJTlRFR0VSCisJV2hldGhlciB0byBhY2NlcHQgREFEIChEdXBsaWNhdGUgQWRkcmVzcyBEZXRlY3Rpb24pLgorCTA6IERpc2FibGUgREFECisJMTogRW5hYmxlIERBRCAoZGVmYXVsdCkKKwkyOiBFbmFibGUgREFELCBhbmQgZGlzYWJsZSBJUHY2IG9wZXJhdGlvbiBpZiBNQUMtYmFzZWQgZHVwbGljYXRlCisJICAgbGluay1sb2NhbCBhZGRyZXNzIGhhcyBiZWVuIGZvdW5kLgorCitmb3JjZV90bGxhbyAtIEJPT0xFQU4KKwlFbmFibGUgc2VuZGluZyB0aGUgdGFyZ2V0IGxpbmstbGF5ZXIgYWRkcmVzcyBvcHRpb24gZXZlbiB3aGVuCisJcmVzcG9uZGluZyB0byBhIHVuaWNhc3QgbmVpZ2hib3Igc29saWNpdGF0aW9uLgorCURlZmF1bHQ6IEZBTFNFCisKKwlRdW90aW5nIGZyb20gUkZDIDI0NjEsIHNlY3Rpb24gNC40LCBUYXJnZXQgbGluay1sYXllciBhZGRyZXNzOgorCisJIlRoZSBvcHRpb24gTVVTVCBiZSBpbmNsdWRlZCBmb3IgbXVsdGljYXN0IHNvbGljaXRhdGlvbnMgaW4gb3JkZXIgdG8KKwlhdm9pZCBpbmZpbml0ZSBOZWlnaGJvciBTb2xpY2l0YXRpb24gInJlY3Vyc2lvbiIgd2hlbiB0aGUgcGVlciBub2RlCisJZG9lcyBub3QgaGF2ZSBhIGNhY2hlIGVudHJ5IHRvIHJldHVybiBhIE5laWdoYm9yIEFkdmVydGlzZW1lbnRzCisJbWVzc2FnZS4gIFdoZW4gcmVzcG9uZGluZyB0byB1bmljYXN0IHNvbGljaXRhdGlvbnMsIHRoZSBvcHRpb24gY2FuIGJlCisJb21pdHRlZCBzaW5jZSB0aGUgc2VuZGVyIG9mIHRoZSBzb2xpY2l0YXRpb24gaGFzIHRoZSBjb3JyZWN0IGxpbmstCisJbGF5ZXIgYWRkcmVzczsgb3RoZXJ3aXNlIGl0IHdvdWxkIG5vdCBoYXZlIGJlIGFibGUgdG8gc2VuZCB0aGUgdW5pY2FzdAorCXNvbGljaXRhdGlvbiBpbiB0aGUgZmlyc3QgcGxhY2UuIEhvd2V2ZXIsIGluY2x1ZGluZyB0aGUgbGluay1sYXllcgorCWFkZHJlc3MgaW4gdGhpcyBjYXNlIGFkZHMgbGl0dGxlIG92ZXJoZWFkIGFuZCBlbGltaW5hdGVzIGEgcG90ZW50aWFsCisJcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlIHNlbmRlciBkZWxldGVzIHRoZSBjYWNoZWQgbGluay1sYXllciBhZGRyZXNzCisJcHJpb3IgdG8gcmVjZWl2aW5nIGEgcmVzcG9uc2UgdG8gYSBwcmV2aW91cyBzb2xpY2l0YXRpb24uIgorCituZGlzY19ub3RpZnkgLSBCT09MRUFOCisJRGVmaW5lIG1vZGUgZm9yIG5vdGlmaWNhdGlvbiBvZiBhZGRyZXNzIGFuZCBkZXZpY2UgY2hhbmdlcy4KKwkwIC0gKGRlZmF1bHQpOiBkbyBub3RoaW5nCisJMSAtIEdlbmVyYXRlIHVuc29saWNpdGVkIG5laWdoYm91ciBhZHZlcnRpc2VtZW50cyB3aGVuIGRldmljZSBpcyBicm91Z2h0CisJICAgIHVwIG9yIGhhcmR3YXJlIGFkZHJlc3MgY2hhbmdlcy4KKworbWxkdjFfdW5zb2xpY2l0ZWRfcmVwb3J0X2ludGVydmFsIC0gSU5URUdFUgorCVRoZSBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMgaW4gd2hpY2ggdGhlIG5leHQgdW5zb2xpY2l0ZWQKKwlNTER2MSByZXBvcnQgcmV0cmFuc21pdCB3aWxsIHRha2UgcGxhY2UuCisJRGVmYXVsdDogMTAwMDAgKDEwIHNlY29uZHMpCisKK21sZHYyX3Vuc29saWNpdGVkX3JlcG9ydF9pbnRlcnZhbCAtIElOVEVHRVIKKwlUaGUgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIGluIHdoaWNoIHRoZSBuZXh0IHVuc29saWNpdGVkCisJTUxEdjIgcmVwb3J0IHJldHJhbnNtaXQgd2lsbCB0YWtlIHBsYWNlLgorCURlZmF1bHQ6IDEwMDAgKDEgc2Vjb25kKQorCitmb3JjZV9tbGRfdmVyc2lvbiAtIElOVEVHRVIKKwkwIC0gKGRlZmF1bHQpIE5vIGVuZm9yY2VtZW50IG9mIGEgTUxEIHZlcnNpb24sIE1MRHYxIGZhbGxiYWNrIGFsbG93ZWQKKwkxIC0gRW5mb3JjZSB0byB1c2UgTUxEIHZlcnNpb24gMQorCTIgLSBFbmZvcmNlIHRvIHVzZSBNTEQgdmVyc2lvbiAyCisKK3N1cHByZXNzX2ZyYWdfbmRpc2MgLSBJTlRFR0VSCisJQ29udHJvbCBSRkMgNjk4MCAoU2VjdXJpdHkgSW1wbGljYXRpb25zIG9mIElQdjYgRnJhZ21lbnRhdGlvbgorCXdpdGggSVB2NiBOZWlnaGJvciBEaXNjb3ZlcnkpIGJlaGF2aW9yOgorCTEgLSAoZGVmYXVsdCkgZGlzY2FyZCBmcmFnbWVudGVkIG5laWdoYm9yIGRpc2NvdmVyeSBwYWNrZXRzCisJMCAtIGFsbG93IGZyYWdtZW50ZWQgbmVpZ2hib3IgZGlzY292ZXJ5IHBhY2tldHMKKworb3B0aW1pc3RpY19kYWQgLSBCT09MRUFOCisJV2hldGhlciB0byBwZXJmb3JtIE9wdGltaXN0aWMgRHVwbGljYXRlIEFkZHJlc3MgRGV0ZWN0aW9uIChSRkMgNDQyOSkuCisJCTA6IGRpc2FibGVkIChkZWZhdWx0KQorCQkxOiBlbmFibGVkCisKK3VzZV9vcHRpbWlzdGljIC0gQk9PTEVBTgorCUlmIGVuYWJsZWQsIGRvIG5vdCBjbGFzc2lmeSBvcHRpbWlzdGljIGFkZHJlc3NlcyBhcyBkZXByZWNhdGVkIGR1cmluZworCXNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbi4gIFByZWZlcnJlZCBhZGRyZXNzZXMgd2lsbCBzdGlsbCBiZSBjaG9zZW4KKwliZWZvcmUgb3B0aW1pc3RpYyBhZGRyZXNzZXMsIHN1YmplY3QgdG8gb3RoZXIgcmFua2luZyBpbiB0aGUgc291cmNlCisJYWRkcmVzcyBzZWxlY3Rpb24gYWxnb3JpdGhtLgorCQkwOiBkaXNhYmxlZCAoZGVmYXVsdCkKKwkJMTogZW5hYmxlZAorCitzdGFibGVfc2VjcmV0IC0gSVB2NiBhZGRyZXNzCisJVGhpcyBJUHY2IGFkZHJlc3Mgd2lsbCBiZSB1c2VkIGFzIGEgc2VjcmV0IHRvIGdlbmVyYXRlIElQdjYKKwlhZGRyZXNzZXMgZm9yIGxpbmstbG9jYWwgYWRkcmVzc2VzIGFuZCBhdXRvY29uZmlndXJlZAorCW9uZXMuIEFsbCBhZGRyZXNzZXMgZ2VuZXJhdGVkIGFmdGVyIHNldHRpbmcgdGhpcyBzZWNyZXQgd2lsbAorCWJlIHN0YWJsZSBwcml2YWN5IG9uZXMgYnkgZGVmYXVsdC4gVGhpcyBjYW4gYmUgY2hhbmdlZCB2aWEgdGhlCisJYWRkcmdlbm1vZGUgaXAtbGluay4gY29uZi9kZWZhdWx0L3N0YWJsZV9zZWNyZXQgaXMgdXNlZCBhcyB0aGUKKwlzZWNyZXQgZm9yIHRoZSBuYW1lc3BhY2UsIHRoZSBpbnRlcmZhY2Ugc3BlY2lmaWMgb25lcyBjYW4KKwlvdmVyd3JpdGUgdGhhdC4gV3JpdGVzIHRvIGNvbmYvYWxsL3N0YWJsZV9zZWNyZXQgYXJlIHJlZnVzZWQuCisKKwlJdCBpcyByZWNvbW1lbmRlZCB0byBnZW5lcmF0ZSB0aGlzIHNlY3JldCBkdXJpbmcgaW5zdGFsbGF0aW9uCisJb2YgYSBzeXN0ZW0gYW5kIGtlZXAgaXQgc3RhYmxlIGFmdGVyIHRoYXQuCisKKwlCeSBkZWZhdWx0IHRoZSBzdGFibGUgc2VjcmV0IGlzIHVuc2V0LgorCitpY21wLyo6CityYXRlbGltaXQgLSBJTlRFR0VSCisJTGltaXQgdGhlIG1heGltYWwgcmF0ZXMgZm9yIHNlbmRpbmcgSUNNUHY2IHBhY2tldHMuCisJMCB0byBkaXNhYmxlIGFueSBsaW1pdGluZywKKwlvdGhlcndpc2UgdGhlIG1pbmltYWwgc3BhY2UgYmV0d2VlbiByZXNwb25zZXMgaW4gbWlsbGlzZWNvbmRzLgorCURlZmF1bHQ6IDEwMDAKKworeGZybTZfZ2NfdGhyZXNoIC0gSU5URUdFUgorCVRoZSB0aHJlc2hvbGQgYXQgd2hpY2ggd2Ugd2lsbCBzdGFydCBnYXJiYWdlIGNvbGxlY3RpbmcgZm9yIElQdjYKKwlkZXN0aW5hdGlvbiBjYWNoZSBlbnRyaWVzLiAgQXQgdHdpY2UgdGhpcyB2YWx1ZSB0aGUgc3lzdGVtIHdpbGwKKwlyZWZ1c2UgbmV3IGFsbG9jYXRpb25zLiBUaGUgdmFsdWUgbXVzdCBiZSBzZXQgYmVsb3cgdGhlIGZsb3djYWNoZQorCWxpbWl0ICg0MDk2ICogbnVtYmVyIG9mIG9ubGluZSBjcHVzKSB0byB0YWtlIGVmZmVjdC4KKworCitJUHY2IFVwZGF0ZSBieToKK1Bla2thIFNhdm9sYSA8cGVra2FzQG5ldGNvcmUuZmk+CitZT1NISUZVSkkgSGlkZWFraSAvIFVTQUdJIFByb2plY3QgPHlvc2hmdWppQGxpbnV4LWlwdjYub3JnPgorCisKKy9wcm9jL3N5cy9uZXQvYnJpZGdlLyogVmFyaWFibGVzOgorCiticmlkZ2UtbmYtY2FsbC1hcnB0YWJsZXMgLSBCT09MRUFOCisJMSA6IHBhc3MgYnJpZGdlZCBBUlAgdHJhZmZpYyB0byBhcnB0YWJsZXMnIEZPUldBUkQgY2hhaW4uCisJMCA6IGRpc2FibGUgdGhpcy4KKwlEZWZhdWx0OiAxCisKK2JyaWRnZS1uZi1jYWxsLWlwdGFibGVzIC0gQk9PTEVBTgorCTEgOiBwYXNzIGJyaWRnZWQgSVB2NCB0cmFmZmljIHRvIGlwdGFibGVzJyBjaGFpbnMuCisJMCA6IGRpc2FibGUgdGhpcy4KKwlEZWZhdWx0OiAxCisKK2JyaWRnZS1uZi1jYWxsLWlwNnRhYmxlcyAtIEJPT0xFQU4KKwkxIDogcGFzcyBicmlkZ2VkIElQdjYgdHJhZmZpYyB0byBpcDZ0YWJsZXMnIGNoYWlucy4KKwkwIDogZGlzYWJsZSB0aGlzLgorCURlZmF1bHQ6IDEKKworYnJpZGdlLW5mLWZpbHRlci12bGFuLXRhZ2dlZCAtIEJPT0xFQU4KKwkxIDogcGFzcyBicmlkZ2VkIHZsYW4tdGFnZ2VkIEFSUC9JUC9JUHY2IHRyYWZmaWMgdG8ge2FycCxpcCxpcDZ9dGFibGVzLgorCTAgOiBkaXNhYmxlIHRoaXMuCisJRGVmYXVsdDogMAorCiticmlkZ2UtbmYtZmlsdGVyLXBwcG9lLXRhZ2dlZCAtIEJPT0xFQU4KKwkxIDogcGFzcyBicmlkZ2VkIHBwcG9lLXRhZ2dlZCBJUC9JUHY2IHRyYWZmaWMgdG8ge2lwLGlwNn10YWJsZXMuCisJMCA6IGRpc2FibGUgdGhpcy4KKwlEZWZhdWx0OiAwCisKK2JyaWRnZS1uZi1wYXNzLXZsYW4taW5wdXQtZGV2IC0gQk9PTEVBTgorCTE6IGlmIGJyaWRnZS1uZi1maWx0ZXItdmxhbi10YWdnZWQgaXMgZW5hYmxlZCwgdHJ5IHRvIGZpbmQgYSB2bGFuCisJaW50ZXJmYWNlIG9uIHRoZSBicmlkZ2UgYW5kIHNldCB0aGUgbmV0ZmlsdGVyIGlucHV0IGRldmljZSB0byB0aGUgdmxhbi4KKwlUaGlzIGFsbG93cyB1c2Ugb2YgZS5nLiAiaXB0YWJsZXMgLWkgYnIwLjEiIGFuZCBtYWtlcyB0aGUgUkVESVJFQ1QKKwl0YXJnZXQgd29yayB3aXRoIHZsYW4tb24tdG9wLW9mLWJyaWRnZSBpbnRlcmZhY2VzLiAgV2hlbiBubyBtYXRjaGluZworCXZsYW4gaW50ZXJmYWNlIGlzIGZvdW5kLCBvciB0aGlzIHN3aXRjaCBpcyBvZmYsIHRoZSBpbnB1dCBkZXZpY2UgaXMKKwlzZXQgdG8gdGhlIGJyaWRnZSBpbnRlcmZhY2UuCisJMDogZGlzYWJsZSBicmlkZ2UgbmV0ZmlsdGVyIHZsYW4gaW50ZXJmYWNlIGxvb2t1cC4KKwlEZWZhdWx0OiAwCisKK3Byb2Mvc3lzL25ldC9zY3RwLyogVmFyaWFibGVzOgorCithZGRpcF9lbmFibGUgLSBCT09MRUFOCisJRW5hYmxlIG9yIGRpc2FibGUgZXh0ZW5zaW9uIG9mICBEeW5hbWljIEFkZHJlc3MgUmVjb25maWd1cmF0aW9uCisJKEFERC1JUCkgZnVuY3Rpb25hbGl0eSBzcGVjaWZpZWQgaW4gUkZDNTA2MS4gIFRoaXMgZXh0ZW5zaW9uIHByb3ZpZGVzCisJdGhlIGFiaWxpdHkgdG8gZHluYW1pY2FsbHkgYWRkIGFuZCByZW1vdmUgbmV3IGFkZHJlc3NlcyBmb3IgdGhlIFNDVFAKKwlhc3NvY2lhdGlvbnMuCisKKwkxOiBFbmFibGUgZXh0ZW5zaW9uLgorCisJMDogRGlzYWJsZSBleHRlbnNpb24uCisKKwlEZWZhdWx0OiAwCisKK2FkZGlwX25vYXV0aF9lbmFibGUgLSBCT09MRUFOCisJRHluYW1pYyBBZGRyZXNzIFJlY29uZmlndXJhdGlvbiAoQURELUlQKSByZXF1aXJlcyB0aGUgdXNlIG9mCisJYXV0aGVudGljYXRpb24gdG8gcHJvdGVjdCB0aGUgb3BlcmF0aW9ucyBvZiBhZGRpbmcgb3IgcmVtb3ZpbmcgbmV3CisJYWRkcmVzc2VzLiAgVGhpcyByZXF1aXJlbWVudCBpcyBtYW5kYXRlZCBzbyB0aGF0IHVuYXV0aG9yaXplZCBob3N0cworCXdvdWxkIG5vdCBiZSBhYmxlIHRvIGhpamFjayBhc3NvY2lhdGlvbnMuICBIb3dldmVyLCBvbGRlcgorCWltcGxlbWVudGF0aW9ucyBtYXkgbm90IGhhdmUgaW1wbGVtZW50ZWQgdGhpcyByZXF1aXJlbWVudCB3aGlsZQorCWFsbG93aW5nIHRoZSBBREQtSVAgZXh0ZW5zaW9uLiAgRm9yIHJlYXNvbnMgb2YgaW50ZXJvcGVyYWJpbGl0eSwKKwl3ZSBwcm92aWRlIHRoaXMgdmFyaWFibGUgdG8gY29udHJvbCB0aGUgZW5mb3JjZW1lbnQgb2YgdGhlCisJYXV0aGVudGljYXRpb24gcmVxdWlyZW1lbnQuCisKKwkxOiBBbGxvdyBBREQtSVAgZXh0ZW5zaW9uIHRvIGJlIHVzZWQgd2l0aG91dCBhdXRoZW50aWNhdGlvbi4gIFRoaXMKKwkgICBzaG91bGQgb25seSBiZSBzZXQgaW4gYSBjbG9zZWQgZW52aXJvbm1lbnQgZm9yIGludGVyb3BlcmFiaWxpdHkKKwkgICB3aXRoIG9sZGVyIGltcGxlbWVudGF0aW9ucy4KKworCTA6IEVuZm9yY2UgdGhlIGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVtZW50CisKKwlEZWZhdWx0OiAwCisKK2F1dGhfZW5hYmxlIC0gQk9PTEVBTgorCUVuYWJsZSBvciBkaXNhYmxlIEF1dGhlbnRpY2F0ZWQgQ2h1bmtzIGV4dGVuc2lvbi4gIFRoaXMgZXh0ZW5zaW9uCisJcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gc2VuZCBhbmQgcmVjZWl2ZSBhdXRoZW50aWNhdGVkIGNodW5rcyBhbmQgaXMKKwlyZXF1aXJlZCBmb3Igc2VjdXJlIG9wZXJhdGlvbiBvZiBEeW5hbWljIEFkZHJlc3MgUmVjb25maWd1cmF0aW9uCisJKEFERC1JUCkgZXh0ZW5zaW9uLgorCisJMTogRW5hYmxlIHRoaXMgZXh0ZW5zaW9uLgorCTA6IERpc2FibGUgdGhpcyBleHRlbnNpb24uCisKKwlEZWZhdWx0OiAwCisKK3Byc2N0cF9lbmFibGUgLSBCT09MRUFOCisJRW5hYmxlIG9yIGRpc2FibGUgdGhlIFBhcnRpYWwgUmVsaWFiaWxpdHkgZXh0ZW5zaW9uIChSRkMzNzU4KSB3aGljaAorCWlzIHVzZWQgdG8gbm90aWZ5IHBlZXJzIHRoYXQgYSBnaXZlbiBEQVRBIHNob3VsZCBubyBsb25nZXIgYmUgZXhwZWN0ZWQuCisKKwkxOiBFbmFibGUgZXh0ZW5zaW9uCisJMDogRGlzYWJsZQorCisJRGVmYXVsdDogMQorCittYXhfYnVyc3QgLSBJTlRFR0VSCisJVGhlIGxpbWl0IG9mIHRoZSBudW1iZXIgb2YgbmV3IHBhY2tldHMgdGhhdCBjYW4gYmUgaW5pdGlhbGx5IHNlbnQuICBJdAorCWNvbnRyb2xzIGhvdyBidXJzdHkgdGhlIGdlbmVyYXRlZCB0cmFmZmljIGNhbiBiZS4KKworCURlZmF1bHQ6IDQKKworYXNzb2NpYXRpb25fbWF4X3JldHJhbnMgLSBJTlRFR0VSCisJU2V0IHRoZSBtYXhpbXVtIG51bWJlciBmb3IgcmV0cmFuc21pc3Npb25zIHRoYXQgYW4gYXNzb2NpYXRpb24gY2FuCisJYXR0ZW1wdCBkZWNpZGluZyB0aGF0IHRoZSByZW1vdGUgZW5kIGlzIHVucmVhY2hhYmxlLiAgSWYgdGhpcyB2YWx1ZQorCWlzIGV4Y2VlZGVkLCB0aGUgYXNzb2NpYXRpb24gaXMgdGVybWluYXRlZC4KKworCURlZmF1bHQ6IDEwCisKK21heF9pbml0X3JldHJhbnNtaXRzIC0gSU5URUdFUgorCVRoZSBtYXhpbXVtIG51bWJlciBvZiByZXRyYW5zbWlzc2lvbnMgb2YgSU5JVCBhbmQgQ09PS0lFLUVDSE8gY2h1bmtzCisJdGhhdCBhbiBhc3NvY2lhdGlvbiB3aWxsIGF0dGVtcHQgYmVmb3JlIGRlY2xhcmluZyB0aGUgZGVzdGluYXRpb24KKwl1bnJlYWNoYWJsZSBhbmQgdGVybWluYXRpbmcuCisKKwlEZWZhdWx0OiA4CisKK3BhdGhfbWF4X3JldHJhbnMgLSBJTlRFR0VSCisJVGhlIG1heGltdW0gbnVtYmVyIG9mIHJldHJhbnNtaXNzaW9ucyB0aGF0IHdpbGwgYmUgYXR0ZW1wdGVkIG9uIGEgZ2l2ZW4KKwlwYXRoLiAgT25jZSB0aGlzIHRocmVzaG9sZCBpcyBleGNlZWRlZCwgdGhlIHBhdGggaXMgY29uc2lkZXJlZAorCXVucmVhY2hhYmxlLCBhbmQgbmV3IHRyYWZmaWMgd2lsbCB1c2UgYSBkaWZmZXJlbnQgcGF0aCB3aGVuIHRoZQorCWFzc29jaWF0aW9uIGlzIG11bHRpaG9tZWQuCisKKwlEZWZhdWx0OiA1CisKK3BmX3JldHJhbnMgLSBJTlRFR0VSCisJVGhlIG51bWJlciBvZiByZXRyYW5zbWlzc2lvbnMgdGhhdCB3aWxsIGJlIGF0dGVtcHRlZCBvbiBhIGdpdmVuIHBhdGgKKwliZWZvcmUgdHJhZmZpYyBpcyByZWRpcmVjdGVkIHRvIGFuIGFsdGVybmF0ZSB0cmFuc3BvcnQgKHNob3VsZCBvbmUKKwlleGlzdCkuICBOb3RlIHRoaXMgaXMgZGlzdGluY3QgZnJvbSBwYXRoX21heF9yZXRyYW5zLCBhcyBhIHBhdGggdGhhdAorCXBhc3NlcyB0aGUgcGZfcmV0cmFucyB0aHJlc2hvbGQgY2FuIHN0aWxsIGJlIHVzZWQuICBJdHMgb25seQorCWRlcHJpb3JpdGl6ZWQgd2hlbiBhIHRyYW5zbWlzc2lvbiBwYXRoIGlzIHNlbGVjdGVkIGJ5IHRoZSBzdGFjay4gIFRoaXMKKwlzZXR0aW5nIGlzIHByaW1hcmlseSB1c2VkIHRvIGVuYWJsZSBmYXN0IGZhaWxvdmVyIG1lY2hhbmlzbXMgd2l0aG91dAorCWhhdmluZyB0byByZWR1Y2UgcGF0aF9tYXhfcmV0cmFucyB0byBhIHZlcnkgbG93IHZhbHVlLiAgU2VlOgorCWh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtbmlzaGlkYS10c3Z3Zy1zY3RwLWZhaWxvdmVyLTA1LnR4dAorCWZvciBkZXRhaWxzLiAgTm90ZSBhbHNvIHRoYXQgYSB2YWx1ZSBvZiBwZl9yZXRyYW5zID4gcGF0aF9tYXhfcmV0cmFucworCWRpc2FibGVzIHRoaXMgZmVhdHVyZQorCisJRGVmYXVsdDogMAorCitydG9faW5pdGlhbCAtIElOVEVHRVIKKwlUaGUgaW5pdGlhbCByb3VuZCB0cmlwIHRpbWVvdXQgdmFsdWUgaW4gbWlsbGlzZWNvbmRzIHRoYXQgd2lsbCBiZSB1c2VkCisJaW4gY2FsY3VsYXRpbmcgcm91bmQgdHJpcCB0aW1lcy4gIFRoaXMgaXMgdGhlIGluaXRpYWwgdGltZSBpbnRlcnZhbAorCWZvciByZXRyYW5zbWlzc2lvbnMuCisKKwlEZWZhdWx0OiAzMDAwCisKK3J0b19tYXggLSBJTlRFR0VSCisJVGhlIG1heGltdW0gdmFsdWUgKGluIG1pbGxpc2Vjb25kcykgb2YgdGhlIHJvdW5kIHRyaXAgdGltZW91dC4gIFRoaXMKKwlpcyB0aGUgbGFyZ2VzdCB0aW1lIGludGVydmFsIHRoYXQgY2FuIGVsYXBzZSBiZXR3ZWVuIHJldHJhbnNtaXNzaW9ucy4KKworCURlZmF1bHQ6IDYwMDAwCisKK3J0b19taW4gLSBJTlRFR0VSCisJVGhlIG1pbmltdW0gdmFsdWUgKGluIG1pbGxpc2Vjb25kcykgb2YgdGhlIHJvdW5kIHRyaXAgdGltZW91dC4gIFRoaXMKKwlpcyB0aGUgc21hbGxlc3QgdGltZSBpbnRlcnZhbCB0aGUgY2FuIGVsYXBzZSBiZXR3ZWVuIHJldHJhbnNtaXNzaW9ucy4KKworCURlZmF1bHQ6IDEwMDAKKworaGJfaW50ZXJ2YWwgLSBJTlRFR0VSCisJVGhlIGludGVydmFsIChpbiBtaWxsaXNlY29uZHMpIGJldHdlZW4gSEVBUlRCRUFUIGNodW5rcy4gIFRoZXNlIGNodW5rcworCWFyZSBzZW50IGF0IHRoZSBzcGVjaWZpZWQgaW50ZXJ2YWwgb24gaWRsZSBwYXRocyB0byBwcm9iZSB0aGUgc3RhdGUgb2YKKwlhIGdpdmVuIHBhdGggYmV0d2VlbiAyIGFzc29jaWF0aW9ucy4KKworCURlZmF1bHQ6IDMwMDAwCisKK3NhY2tfdGltZW91dCAtIElOVEVHRVIKKwlUaGUgYW1vdW50IG9mIHRpbWUgKGluIG1pbGxpc2Vjb25kcykgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gd2lsbCB3YWl0CisJdG8gc2VuZCBhIFNBQ0suCisKKwlEZWZhdWx0OiAyMDAKKwordmFsaWRfY29va2llX2xpZmUgLSBJTlRFR0VSCisJVGhlIGRlZmF1bHQgbGlmZXRpbWUgb2YgdGhlIFNDVFAgY29va2llIChpbiBtaWxsaXNlY29uZHMpLiAgVGhlIGNvb2tpZQorCWlzIHVzZWQgZHVyaW5nIGFzc29jaWF0aW9uIGVzdGFibGlzaG1lbnQuCisKKwlEZWZhdWx0OiA2MDAwMAorCitjb29raWVfcHJlc2VydmVfZW5hYmxlIC0gQk9PTEVBTgorCUVuYWJsZSBvciBkaXNhYmxlIHRoZSBhYmlsaXR5IHRvIGV4dGVuZCB0aGUgbGlmZXRpbWUgb2YgdGhlIFNDVFAgY29va2llCisJdGhhdCBpcyB1c2VkIGR1cmluZyB0aGUgZXN0YWJsaXNobWVudCBwaGFzZSBvZiBTQ1RQIGFzc29jaWF0aW9uCisKKwkxOiBFbmFibGUgY29va2llIGxpZmV0aW1lIGV4dGVuc2lvbi4KKwkwOiBEaXNhYmxlCisKKwlEZWZhdWx0OiAxCisKK2Nvb2tpZV9obWFjX2FsZyAtIFNUUklORworCVNlbGVjdCB0aGUgaG1hYyBhbGdvcml0aG0gdXNlZCB3aGVuIGdlbmVyYXRpbmcgdGhlIGNvb2tpZSB2YWx1ZSBzZW50IGJ5CisJYSBsaXN0ZW5pbmcgc2N0cCBzb2NrZXQgdG8gYSBjb25uZWN0aW5nIGNsaWVudCBpbiB0aGUgSU5JVC1BQ0sgY2h1bmsuCisJVmFsaWQgdmFsdWVzIGFyZToKKwkqIG1kNQorCSogc2hhMQorCSogbm9uZQorCUFiaWxpdHkgdG8gYXNzaWduIG1kNSBvciBzaGExIGFzIHRoZSBzZWxlY3RlZCBhbGcgaXMgcHJlZGljYXRlZCBvbiB0aGUKKwljb25maWd1cmF0aW9uIG9mIHRob3NlIGFsZ29yaXRobXMgYXQgYnVpbGQgdGltZSAoQ09ORklHX0NSWVBUT19NRDUgYW5kCisJQ09ORklHX0NSWVBUT19TSEExKS4KKworCURlZmF1bHQ6IERlcGVuZGVudCBvbiBjb25maWd1cmF0aW9uLiAgTUQ1IGlmIGF2YWlsYWJsZSwgZWxzZSBTSEExIGlmCisJYXZhaWxhYmxlLCBlbHNlIG5vbmUuCisKK3JjdmJ1Zl9wb2xpY3kgLSBJTlRFR0VSCisJRGV0ZXJtaW5lcyBpZiB0aGUgcmVjZWl2ZSBidWZmZXIgaXMgYXR0cmlidXRlZCB0byB0aGUgc29ja2V0IG9yIHRvCisJYXNzb2NpYXRpb24uICAgU0NUUCBzdXBwb3J0cyB0aGUgY2FwYWJpbGl0eSB0byBjcmVhdGUgbXVsdGlwbGUKKwlhc3NvY2lhdGlvbnMgb24gYSBzaW5nbGUgc29ja2V0LiAgV2hlbiB1c2luZyB0aGlzIGNhcGFiaWxpdHksIGl0IGlzCisJcG9zc2libGUgdGhhdCBhIHNpbmdsZSBzdGFsbGVkIGFzc29jaWF0aW9uIHRoYXQncyBidWZmZXJpbmcgYSBsb3QKKwlvZiBkYXRhIG1heSBibG9jayBvdGhlciBhc3NvY2lhdGlvbnMgZnJvbSBkZWxpdmVyaW5nIHRoZWlyIGRhdGEgYnkKKwljb25zdW1pbmcgYWxsIG9mIHRoZSByZWNlaXZlIGJ1ZmZlciBzcGFjZS4gIFRvIHdvcmsgYXJvdW5kIHRoaXMsCisJdGhlIHJjdmJ1Zl9wb2xpY3kgY291bGQgYmUgc2V0IHRvIGF0dHJpYnV0ZSB0aGUgcmVjZWl2ZXIgYnVmZmVyIHNwYWNlCisJdG8gZWFjaCBhc3NvY2lhdGlvbiBpbnN0ZWFkIG9mIHRoZSBzb2NrZXQuICBUaGlzIHByZXZlbnRzIHRoZSBkZXNjcmliZWQKKwlibG9ja2luZy4KKworCTE6IHJjdmJ1ZiBzcGFjZSBpcyBwZXIgYXNzb2NpYXRpb24KKwkwOiByY3ZidWYgc3BhY2UgaXMgcGVyIHNvY2tldAorCisJRGVmYXVsdDogMAorCitzbmRidWZfcG9saWN5IC0gSU5URUdFUgorCVNpbWlsYXIgdG8gcmN2YnVmX3BvbGljeSBhYm92ZSwgdGhpcyBhcHBsaWVzIHRvIHNlbmQgYnVmZmVyIHNwYWNlLgorCisJMTogU2VuZCBidWZmZXIgaXMgdHJhY2tlZCBwZXIgYXNzb2NpYXRpb24KKwkwOiBTZW5kIGJ1ZmZlciBpcyB0cmFja2VkIHBlciBzb2NrZXQuCisKKwlEZWZhdWx0OiAwCisKK3NjdHBfbWVtIC0gdmVjdG9yIG9mIDMgSU5URUdFUnM6IG1pbiwgcHJlc3N1cmUsIG1heAorCU51bWJlciBvZiBwYWdlcyBhbGxvd2VkIGZvciBxdWV1ZWluZyBieSBhbGwgU0NUUCBzb2NrZXRzLgorCisJbWluOiBCZWxvdyB0aGlzIG51bWJlciBvZiBwYWdlcyBTQ1RQIGlzIG5vdCBib3RoZXJlZCBhYm91dCBpdHMKKwltZW1vcnkgYXBwZXRpdGUuIFdoZW4gYW1vdW50IG9mIG1lbW9yeSBhbGxvY2F0ZWQgYnkgU0NUUCBleGNlZWRzCisJdGhpcyBudW1iZXIsIFNDVFAgc3RhcnRzIHRvIG1vZGVyYXRlIG1lbW9yeSB1c2FnZS4KKworCXByZXNzdXJlOiBUaGlzIHZhbHVlIHdhcyBpbnRyb2R1Y2VkIHRvIGZvbGxvdyBmb3JtYXQgb2YgdGNwX21lbS4KKworCW1heDogTnVtYmVyIG9mIHBhZ2VzIGFsbG93ZWQgZm9yIHF1ZXVlaW5nIGJ5IGFsbCBTQ1RQIHNvY2tldHMuCisKKwlEZWZhdWx0IGlzIGNhbGN1bGF0ZWQgYXQgYm9vdCB0aW1lIGZyb20gYW1vdW50IG9mIGF2YWlsYWJsZSBtZW1vcnkuCisKK3NjdHBfcm1lbSAtIHZlY3RvciBvZiAzIElOVEVHRVJzOiBtaW4sIGRlZmF1bHQsIG1heAorCU9ubHkgdGhlIGZpcnN0IHZhbHVlICgibWluIikgaXMgdXNlZCwgImRlZmF1bHQiIGFuZCAibWF4IiBhcmUKKwlpZ25vcmVkLgorCisJbWluOiBNaW5pbWFsIHNpemUgb2YgcmVjZWl2ZSBidWZmZXIgdXNlZCBieSBTQ1RQIHNvY2tldC4KKwlJdCBpcyBndWFyYW50ZWVkIHRvIGVhY2ggU0NUUCBzb2NrZXQgKGJ1dCBub3QgYXNzb2NpYXRpb24pIGV2ZW4KKwl1bmRlciBtb2RlcmF0ZSBtZW1vcnkgcHJlc3N1cmUuCisKKwlEZWZhdWx0OiAxIHBhZ2UKKworc2N0cF93bWVtICAtIHZlY3RvciBvZiAzIElOVEVHRVJzOiBtaW4sIGRlZmF1bHQsIG1heAorCUN1cnJlbnRseSB0aGlzIHR1bmFibGUgaGFzIG5vIGVmZmVjdC4KKworYWRkcl9zY29wZV9wb2xpY3kgLSBJTlRFR0VSCisJQ29udHJvbCBJUHY0IGFkZHJlc3Mgc2NvcGluZyAtIGRyYWZ0LXN0ZXdhcnQtdHN2d2ctc2N0cC1pcHY0LTAwCisKKwkwICAgLSBEaXNhYmxlIElQdjQgYWRkcmVzcyBzY29waW5nCisJMSAgIC0gRW5hYmxlIElQdjQgYWRkcmVzcyBzY29waW5nCisJMiAgIC0gRm9sbG93IGRyYWZ0IGJ1dCBhbGxvdyBJUHY0IHByaXZhdGUgYWRkcmVzc2VzCisJMyAgIC0gRm9sbG93IGRyYWZ0IGJ1dCBhbGxvdyBJUHY0IGxpbmsgbG9jYWwgYWRkcmVzc2VzCisKKwlEZWZhdWx0OiAxCisKKworL3Byb2Mvc3lzL25ldC9jb3JlLyoKKwlQbGVhc2Ugc2VlOiBEb2N1bWVudGF0aW9uL3N5c2N0bC9uZXQudHh0IGZvciBkZXNjcmlwdGlvbnMgb2YgdGhlc2UgZW50cmllcy4KKworCisvcHJvYy9zeXMvbmV0L3VuaXgvKgorbWF4X2RncmFtX3FsZW4gLSBJTlRFR0VSCisJVGhlIG1heGltdW0gbGVuZ3RoIG9mIGRncmFtIHNvY2tldCByZWNlaXZlIHF1ZXVlCisKKwlEZWZhdWx0OiAxMAorCisKK1VORE9DVU1FTlRFRDoKKworL3Byb2Mvc3lzL25ldC9pcmRhLyoKKwlmYXN0X3BvbGxfaW5jcmVhc2UgRklYTUUKKwl3YXJuX25vcmVwbHlfdGltZSBGSVhNRQorCWRpc2NvdmVyeV9zbG90cyBGSVhNRQorCXNsb3RfdGltZW91dCBGSVhNRQorCW1heF9iYXVkX3JhdGUgRklYTUUKKwlkaXNjb3ZlcnlfdGltZW91dCBGSVhNRQorCWxhcF9rZWVwYWxpdmVfdGltZSBGSVhNRQorCW1heF9ub3JlcGx5X3RpbWUgRklYTUUKKwltYXhfdHhfZGF0YV9zaXplIEZJWE1FCisJbWF4X3R4X3dpbmRvdyBGSVhNRQorCW1pbl90eF90dXJuX3RpbWUgRklYTUUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcF9keW5hZGRyLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcF9keW5hZGRyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWYzYzEyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwX2R5bmFkZHIudHh0CkBAIC0wLDAgKzEsMjkgQEAKK0lQIGR5bmFtaWMgYWRkcmVzcyBoYWNrLXBvcnQgdjAuMDMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK1RoaXMgc3R1ZmYgYWxsb3dzIGRpYWxkIE9ORVNIT1QgY29ubmVjdGlvbnMgdG8gZ2V0IGVzdGFibGlzaGVkIGJ5CitkeW5hbWljYWxseSBjaGFuZ2luZyBwYWNrZXQgc291cmNlIGFkZHJlc3MgKGFuZCBzb2NrZXQncyBpZiBsb2NhbCBwcm9jcykuCitJdCBpcyBpbXBsZW1lbnRlZCBmb3IgVENQIGRpYWxkLWJveCBjb25uZWN0aW9ucygxKSBhbmQgSVBfTUFTUXVlcmFkaW5nKDIpLgorCitJZiBlbmFibGVkWypdIGFuZCBmb3J3YXJkaW5nIGludGVyZmFjZSBoYXMgY2hhbmdlZDoKKyAgMSkgIFNvY2tldCAoYW5kIHBhY2tldCkgc291cmNlIGFkZHJlc3MgaXMgcmV3cml0dGVuIE9OIFJFVFJBTlNNSVNTSU9OUworICAgICAgd2hpbGUgaW4gU1lOX1NFTlQgc3RhdGUgKGRpYWxkLWJveCBwcm9jZXNzZXMpLgorICAyKSAgT3V0LWJvdW5kZWQgTUFTUXVlcmFkZWQgc291cmNlIGFkZHJlc3MgY2hhbmdlcyBPTiBPVVRQVVQgKHdoZW4KKyAgICAgIGludGVybmFsIGhvc3QgZG9lcyByZXRyYW5zbWlzc2lvbikgdW50aWwgYSBwYWNrZXQgZnJvbSBvdXRzaWRlIGlzCisgICAgICByZWNlaXZlZCBieSB0aGUgdHVubmVsLgorCitUaGlzIGlzIHNwZWNpYWxseSBoZWxwZnVsIGZvciBhdXRvIGRpYWx1cCBsaW5rcyAoZGlhbGQpLCB3aGVyZSB0aGUKK2BgYWN0dWFsJycgb3V0Z29pbmcgYWRkcmVzcyBpcyB1bmtub3duIGF0IHRoZSBtb21lbnQgdGhlIGxpbmsgaXMKK2dvaW5nIHVwLiBTbywgdGhlICpzYW1lKiAobG9jYWwgQU5EIG1hc3F1ZXJhZGVkKSBjb25uZWN0aW9ucyByZXF1ZXN0cyB0aGF0CiticmluZyB0aGUgbGluayB1cCB3aWxsIGJlIGFibGUgdG8gZ2V0IGVzdGFibGlzaGVkLgorCitbKl0gQXQgYm9vdCwgYnkgZGVmYXVsdCBubyBhZGRyZXNzIHJld3JpdGluZyBpcyBhdHRlbXB0ZWQuIAorICBUbyBlbmFibGU6CisgICAgICMgZWNobyAxID4gL3Byb2Mvc3lzL25ldC9pcHY0L2lwX2R5bmFkZHIKKyAgVG8gZW5hYmxlIHZlcmJvc2UgbW9kZToKKyAgICAgIyBlY2hvIDIgPiAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfZHluYWRkcgorICBUbyBkaXNhYmxlIChkZWZhdWx0KQorICAgICAjIGVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9keW5hZGRyCisKK0Vuam95IQorCistLSBKdWFuam8gIDxqamNpYXJsYUByYWl6LnVuY3UuZWR1LmFyPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwZGRwLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcGRkcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE1YzIxNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcGRkcC50eHQKQEAgLTAsMCArMSw3MyBAQAorVGV4dCBmaWxlIGZvciBpcGRkcC5jOgorCUFwcGxlVGFsay1JUCBEZWNhcHN1bGF0aW9uIGFuZCBBcHBsZVRhbGstSVAgRW5jYXBzdWxhdGlvbgorCitUaGlzIHRleHQgZmlsZSBpcyB3cml0dGVuIGJ5IEpheSBTY2h1bGlzdCA8anNjaGxzdEBzYW1iYS5vcmc+CisKK0ludHJvZHVjdGlvbgorLS0tLS0tLS0tLS0tCisKK0FwcGxlVGFsay1JUCAoSVBERFApIGlzIHRoZSBtZXRob2QgY29tcHV0ZXJzIGNvbm5lY3RlZCB0byBBcHBsZVRhbGsKK25ldHdvcmtzIGNhbiB1c2UgdG8gY29tbXVuaWNhdGUgdmlhIElQLiBBcHBsZVRhbGstSVAgaXMgc2ltcGx5IElQIGRhdGFncmFtcworaW5zaWRlIEFwcGxlVGFsayBwYWNrZXRzLgorCitUaHJvdWdoIHRoaXMgZHJpdmVyIHlvdSBjYW4gZWl0aGVyIGFsbG93IHlvdXIgTGludXggYm94IHRvIGNvbW11bmljYXRlCitJUCBvdmVyIGFuIEFwcGxlVGFsayBuZXR3b3JrIG9yIHlvdSBjYW4gcHJvdmlkZSBJUCBnYXRld2F5aW5nIGZ1bmN0aW9ucworZm9yIHlvdXIgQXBwbGVUYWxrIHVzZXJzLgorCitZb3UgY2FuIGN1cnJlbnRseSBlbmNhcHN1bGF0ZSBvciBkZWNhcHN1bGF0ZSBBcHBsZVRhbGstSVAgb24gTG9jYWxUYWxrLAorRXRoZXJUYWxrIGFuZCBQUFBUYWxrLiBUaGUgb25seSBsaW1pdCBvbiB0aGUgcHJvdG9jb2wgaXMgdGhhdCBvZiB3aGF0CitrZXJuZWwgQXBwbGVUYWxrIGxheWVyIGFuZCBkcml2ZXJzIGFyZSBhdmFpbGFibGUuCisKK0VhY2ggbW9kZSByZXF1aXJlcyBpdHMgb3duIHVzZXIgc3BhY2Ugc29mdHdhcmUuCisKK0NvbXBpbGluZyBBcHBsZVRhbGstSVAgRGVjYXBzdWxhdGlvbi9FbmNhcHN1bGF0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FwcGxlVGFsay1JUCBkZWNhcHN1bGF0aW9uIG5lZWRzIHRvIGJlIGNvbXBpbGVkIGludG8geW91ciBrZXJuZWwuIFlvdQord2lsbCBuZWVkIHRvIHR1cm4gb24gQXBwbGVUYWxrLUlQIGRyaXZlciBzdXBwb3J0LiBUaGVuIHlvdSB3aWxsIG5lZWQgdG8KK3NlbGVjdCBPTkUgb2YgdGhlIHR3byBvcHRpb25zOyBJUCB0byBBcHBsZVRhbGstSVAgZW5jYXBzdWxhdGlvbiBzdXBwb3J0IG9yCitBcHBsZVRhbGstSVAgdG8gSVAgZGVjYXBzdWxhdGlvbiBzdXBwb3J0LiBJZiB5b3UgY29tcGlsZSB0aGUgZHJpdmVyCitzdGF0aWNhbGx5IHlvdSB3aWxsIG9ubHkgYmUgYWJsZSB0byB1c2UgdGhlIGRyaXZlciBmb3IgdGhlIGZ1bmN0aW9uIHlvdSBoYXZlCitlbmFibGVkIGluIHRoZSBrZXJuZWwuIElmIHlvdSBjb21waWxlIHRoZSBkcml2ZXIgYXMgYSBtb2R1bGUgeW91IGNhbgorc2VsZWN0IHdoYXQgbW9kZSB5b3Ugd2FudCBpdCB0byBydW4gaW4gdmlhIGEgbW9kdWxlIGxvYWRpbmcgcGFyYW0uCitpcGRkcF9tb2RlPTEgZm9yIEFwcGxlVGFsay1JUCBlbmNhcHN1bGF0aW9uIGFuZCBpcGRkcF9tb2RlPTIgZm9yCitBcHBsZVRhbGstSVAgdG8gSVAgZGVjYXBzdWxhdGlvbi4KKworQmFzaWMgaW5zdHJ1Y3Rpb25zIGZvciB1c2VyIHNwYWNlIHRvb2xzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSSB3aWxsIGJyaWVmbHkgZGVzY3JpYmUgdGhlIG9wZXJhdGlvbiBvZiB0aGUgdG9vbHMsIGJ1dCB5b3Ugd2lsbAorbmVlZCB0byBjb25zdWx0IHRoZSBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24gZm9yIGVhY2ggc2V0IG9mIHRvb2xzLgorCitEZWNhcHN1bGF0aW9uIC0gWW91IHdpbGwgbmVlZCB0byBkb3dubG9hZCBhIHNvZnR3YXJlIHBhY2thZ2UgY2FsbGVkCitNYWNHYXRlLiBJbiB0aGlzIGRpc3RyaWJ1dGlvbiB0aGVyZSB3aWxsIGJlIGEgdG9vbCBjYWxsZWQgTWFjUm91dGUKK3doaWNoIGVuYWJsZXMgeW91IHRvIGFkZCByb3V0ZXMgdG8gdGhlIGtlcm5lbCBmb3IgeW91ciBNYWNzIGJ5IGhhbmQuCitBbHNvIHRoZSB0b29sIE1hY1JlZ0dhdGVXYXkgaXMgaW5jbHVkZWQgdG8gcmVnaXN0ZXIgdGhlCitwcm9wZXIgSVAgR2F0ZXdheSBhbmQgSVAgYWRkcmVzc2VzIGZvciB5b3VyIG1hY2hpbmUuIEluY2x1ZGVkIGluIHRoaXMKK2Rpc3RyaWJ1dGlvbiBpcyBhIHBhdGNoIHRvIG5ldGF0YWxrLTEuNGIyK2FzdW4yLjBhMTcuMiAoYXZhaWxhYmxlIGZyb20KK2Z0cC51Lndhc2hpbmd0b24uZWR1L3B1Yi91c2VyLXN1cHBvcnRlZC9hc3VuLykgdGhpcyBwYXRjaCBpcyBvcHRpb25hbAorYnV0IGl0IGFsbG93cyBhdXRvbWF0aWMgYWRkaW5nIGFuZCBkZWxldGluZyBvZiByb3V0ZXMgZm9yIE1hY3MuIChIYW5keQorZm9yIGxvY2F0aW9ucyB3aXRoIGxhcmdlIE1hYyBpbnN0YWxsYXRpb25zKQorCitFbmNhcHN1bGF0aW9uIC0gWW91IHdpbGwgbmVlZCB0byBkb3dubG9hZCBhIHNvZnR3YXJlIGRhZW1vbiBjYWxsZWQgaXBkZHBkLgorVGhpcyBzb2Z0d2FyZSBleHBlY3RzIHRoZXJlIHRvIGJlIGFuIEFwcGxlVGFsay1JUCBnYXRld2F5IG9uIHRoZSBuZXR3b3JrLgorWW91IHdpbGwgYWxzbyBuZWVkIHRvIGFkZCB0aGUgcHJvcGVyIHJvdXRlcyB0byByb3V0ZSB5b3VyIExpbnV4IGJveCdzIElQCit0cmFmZmljIG91dCB0aGUgaXBkZHAgaW50ZXJmYWNlLgorCitDb21tb24gVXNlcyBvZiBpcGRkcC5jCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitPZiBjb3Vyc2UgQXBwbGVUYWxrLUlQIGRlY2Fwc3VsYXRpb24gYW5kIGVuY2Fwc3VsYXRpb24sIGJ1dCBzcGVjaWZpY2FsbHkKK2RlY2Fwc3VsYXRpb24gaXMgYmVpbmcgdXNlZCBtb3N0IGZvciBjb25uZWN0aW5nIExvY2FsVGFsayBuZXR3b3JrcyB0bworSVAgbmV0d29ya3MuIEFsdGhvdWdoIGl0IGhhcyBiZWVuIHVzZWQgb24gRXRoZXJUYWxrIG5ldHdvcmtzIHRvIGFsbG93CitNYWNzIHRoYXQgYXJlIG9ubHkgYWJsZSB0byB0dW5uZWwgSVAgb3ZlciBFdGhlclRhbGsuCisKK0VuY2Fwc3VsYXRpb24gaGFzIGJlZW4gdXNlZCB0byBhbGxvdyBhIExpbnV4IGJveCBzdHVjayBvbiBhIExvY2FsVGFsaworbmV0d29yayB0byB1c2UgSVAuIEl0IHNob3VsZCB3b3JrIGVxdWFsbHkgd2VsbCBpZiB5b3UgYXJlIHN0dWNrIG9uIGFuCitFdGhlclRhbGsgb25seSBuZXR3b3JrLgorCitGdXJ0aGVyIEFzc2lzdGFuY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0KK1lvdSBjYW4gY29udGFjdCBtZSAoSmF5IFNjaHVsaXN0IDxqc2NobHN0QHNhbWJhLm9yZz4pIHdpdGggYW55CitxdWVzdGlvbnMgcmVnYXJkaW5nIGRlY2Fwc3VsYXRpb24gb3IgZW5jYXBzdWxhdGlvbi4gQnJhZGZvcmQgVy4gSm9obnNvbgorPGpvaG5zMzkzQG1hcm9vbi50Yy51bW4uZWR1PiBvcmlnaW5hbGx5IHdyb3RlIHRoZSBpcGRkcC5jIGRyaXZlciBmb3IgSVAKK2VuY2Fwc3VsYXRpb24gaW4gQXBwbGVUYWxrLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwaGFzZS50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXBoYXNlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzBiNzJmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwaGFzZS50eHQKQEAgLTAsMCArMSwxNTggQEAKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVBRCBNRSBGSVNSVAorCQkgIEFUTSAoaSlDaGlwIElBIExpbnV4IERyaXZlciBTb3VyY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICBSZWFkIFRoaXMgQmVmb3JlIFlvdSBCZWdpbiEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGlzIGlzIHRoZSBSRUFETUUgZmlsZSBmb3IgdGhlIEludGVycGhhc2UgUENJIEFUTSAoaSlDaGlwIElBIExpbnV4IGRyaXZlciAKK3NvdXJjZSByZWxlYXNlLgorCitUaGUgZmVhdHVyZXMgYW5kIGxpbWl0YXRpb25zIG9mIHRoaXMgZHJpdmVyIGFyZSBhcyBmb2xsb3dzOgorICAgIC0gQSBzaW5nbGUgVlBJIChWUEkgdmFsdWUgb2YgMCkgaXMgc3VwcG9ydGVkLgorICAgIC0gU3VwcG9ydHMgNEsgVkNzIGZvciB0aGUgc2VydmVyIGJvYXJkICh3aXRoIDUxMksgY29udHJvbCBtZW1vcnkpIGFuZCAxSyAKKyAgICAgIFZDcyBmb3IgdGhlIGNsaWVudCBib2FyZCAod2l0aCAxMjhLIGNvbnRyb2wgbWVtb3J5KS4KKyAgICAtIFVCUiwgQUJSIGFuZCBDQlIgc2VydmljZSBjYXRlZ29yaWVzIGFyZSBzdXBwb3J0ZWQuCisgICAgLSBPbmx5IEFBTDUgaXMgc3VwcG9ydGVkLiAKKyAgICAtIFN1cHBvcnRzIHNldHRpbmcgb2YgUENSIG9uIHRoZSBWQ3MuIAorICAgIC0gTXVsdGlwbGUgYWRhcHRlcnMgaW4gYSBzeXN0ZW0gYXJlIHN1cHBvcnRlZC4KKyAgICAtIEFsbCB2YXJpYW50cyBvZiBJbnRlcnBoYXNlIEFUTSBQQ0kgKGkpQ2hpcCBhZGFwdGVyIGNhcmRzIGFyZSBzdXBwb3J0ZWQsIAorICAgICAgaW5jbHVkaW5nIHg1NzUgKE9DMywgY29udHJvbCBtZW1vcnkgMTI4SyAsIDUxMksgYW5kIHBhY2tldCBtZW1vcnkgMTI4SywgCisgICAgICA1MTJLIGFuZCAxTSksIHg1MjUgKFVUUDI1KSBhbmQgeDUzMSAoRFMzIGFuZCBFMykuIFNlZSAKKyAgICAgIGh0dHA6Ly93d3cuaXBoYXNlLmNvbS8KKyAgICAgIGZvciBkZXRhaWxzLgorICAgIC0gT25seSB4ODYgcGxhdGZvcm1zIGFyZSBzdXBwb3J0ZWQuCisgICAgLSBTTVAgaXMgc3VwcG9ydGVkLgorCisKK0JlZm9yZSBZb3UgU3RhcnQKKy0tLS0tLS0tLS0tLS0tLS0gCisKKworSW5zdGFsbGF0aW9uCistLS0tLS0tLS0tLS0KKworMS4gSW5zdGFsbGluZyB0aGUgYWRhcHRlcnMgaW4gdGhlIHN5c3RlbQorICAgVG8gaW5zdGFsbCB0aGUgQVRNIGFkYXB0ZXJzIGluIHRoZSBzeXN0ZW0sIGZvbGxvdyB0aGUgc3RlcHMgYmVsb3cuCisgICAgICAgYS4gTG9naW4gYXMgcm9vdC4KKyAgICAgICBiLiBTaHV0IGRvd24gdGhlIHN5c3RlbSBhbmQgcG93ZXIgb2ZmIHRoZSBzeXN0ZW0uCisgICAgICAgYy4gSW5zdGFsbCBvbmUgb3IgbW9yZSBBVE0gYWRhcHRlcnMgaW4gdGhlIHN5c3RlbS4KKyAgICAgICBkLiBDb25uZWN0IGVhY2ggYWRhcHRlciB0byBhIHBvcnQgb24gYW4gQVRNIHN3aXRjaC4gVGhlIGdyZWVuICdMaW5rJyAKKyAgICAgICAgICBMRUQgb24gdGhlIGZyb250IHBhbmVsIG9mIHRoZSBhZGFwdGVyIHdpbGwgYmUgb24gaWYgdGhlIGFkYXB0ZXIgaXMgCisgICAgICAgICAgY29ubmVjdGVkIHRvIHRoZSBzd2l0Y2ggcHJvcGVybHkgd2hlbiB0aGUgc3lzdGVtIGlzIHBvd2VyZWQgdXAuCisgICAgICAgZS4gUG93ZXIgb24gYW5kIGJvb3QgdGhlIHN5c3RlbS4KKworMi4gWyBSZW1vdmVkIF0KKworMy4gUmVidWlsZCBrZXJuZWwgd2l0aCBBQlIgc3VwcG9ydAorICAgWyBhLiBhbmQgYi4gcmVtb3ZlZCBdCisgICAgYy4gUmVjb25maWd1cmUgdGhlIGtlcm5lbCwgY2hvb3NlIHRoZSBJbnRlcnBoYXNlIGlhIGRyaXZlciB0aHJvdWdoICJtYWtlIAorICAgICAgIG1lbnVjb25maWciIG9yICJtYWtlIHhjb25maWciLgorICAgIGQuIFJlYnVpbGQgdGhlIGtlcm5lbCwgbG9hZGFibGUgbW9kdWxlcyBhbmQgdGhlIGF0bSB0b29scy4gCisgICAgZS4gSW5zdGFsbCB0aGUgbmV3IGJ1aWx0IGtlcm5lbCBhbmQgbW9kdWxlcyBhbmQgcmVib290LgorCis0LiBMb2FkIHRoZSBhZGFwdGVyIGhhcmR3YXJlIGRyaXZlciAoaWEgZHJpdmVyKSBpZiBpdCBpcyBidWlsdCBhcyBhIG1vZHVsZQorICAgICAgIGEuIExvZ2luIGFzIHJvb3QuCisgICAgICAgYi4gQ2hhbmdlIGRpcmVjdG9yeSB0byAvbGliL21vZHVsZXMvPGtlcm5lbC12ZXJzaW9uPi9hdG0uCisgICAgICAgYy4gUnVuICJpbnNtb2Qgc3VuaS5vO2luc21vZCBpcGhhc2UubyIKKwkgIFRoZSB5ZWxsb3cgJ3N0YXR1cycgTEVEIG9uIHRoZSBmcm9udCBwYW5lbCBvZiB0aGUgYWRhcHRlciB3aWxsIGJsaW5rIAorICAgICAgICAgIHdoaWxlIHRoZSBkcml2ZXIgaXMgbG9hZGVkIGluIHRoZSBzeXN0ZW0uCisgICAgICAgZC4gVG8gdmVyaWZ5IHRoYXQgdGhlICdpYScgZHJpdmVyIGlzIGxvYWRlZCBzdWNjZXNzZnVsbHksIHJ1biB0aGUgCisgICAgICAgICAgZm9sbG93aW5nIGNvbW1hbmQ6CisKKyAgICAgICAgICAgICAgY2F0IC9wcm9jL2F0bS9kZXZpY2VzCisKKyAgICAgICAgICBJZiB0aGUgZHJpdmVyIGlzIGxvYWRlZCBzdWNjZXNzZnVsbHksIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQgd2lsbCAKKyAgICAgICAgICBiZSBzaW1pbGFyIHRvIHRoZSBmb2xsb3dpbmcgbGluZXM6CisKKyAgICAgICAgICAgICAgSXRmIFR5cGUgICAgRVNJLyJNQUMiYWRkciBBQUwoVFgsZXJyLFJYLGVycixkcm9wKSAuLi4KKyAgICAgICAgICAgICAgMCAgIGlhICAgICAgeHh4eHh4eHh4ICAwICggMCAwIDAgMCAwICkgIDUgKCAwIDAgMCAwIDAgKQorCisgICAgICAgICAgWW91IGNhbiBhbHNvIGNoZWNrIHRoZSBzeXN0ZW0gbG9nIGZpbGUgL3Zhci9sb2cvbWVzc2FnZXMgZm9yIG1lc3NhZ2VzCisgICAgICAgICAgcmVsYXRlZCB0byB0aGUgQVRNIGRyaXZlci4KKworNS4gSWEgRHJpdmVyIENvbmZpZ3VyYXRpb24gCisKKzUuMSBDb25maWd1cmF0aW9uIG9mIGFkYXB0ZXIgYnVmZmVycworICAgIFRoZSAoaSlDaGlwIGJvYXJkcyBoYXZlIDMgZGlmZmVyZW50IHBhY2tldCBSQU0gc2l6ZSB2YXJpYW50czogMTI4SywgNTEySyBhbmQKKyAgICAxTS4gVGhlIFJBTSBzaXplIGRlY2lkZXMgdGhlIG51bWJlciBvZiBidWZmZXJzIGFuZCBidWZmZXIgc2l6ZS4gVGhlIGRlZmF1bHQgCisgICAgc2l6ZSBhbmQgbnVtYmVyIG9mIGJ1ZmZlcnMgYXJlIHNldCBhcyBmb2xsb3dpbmc6IAorCisgICAgICAgICAgVG90YWwgICAgUnggUkFNICAgVHggUkFNICAgUnggQnVmICAgVHggQnVmICAgUnggYnVmICAgVHggYnVmCisgICAgICAgICBSQU0gc2l6ZSAgIHNpemUgICAgIHNpemUgICAgIHNpemUgICAgIHNpemUgICAgICBjbnQgICAgICBjbnQKKyAgICAgICAgIC0tLS0tLS0tICAtLS0tLS0gICAtLS0tLS0gICAtLS0tLS0gICAtLS0tLS0gICAtLS0tLS0gICAtLS0tLS0KKyAgICAgICAgICAgMTI4SyAgICAgIDY0SyAgICAgIDY0SyAgICAgIDEwSyAgICAgIDEwSyAgICAgICA2ICAgICAgICA2CisgICAgICAgICAgIDUxMksgICAgIDI1NksgICAgIDI1NksgICAgICAxMEsgICAgICAxMEsgICAgICAyNSAgICAgICAyNQorICAgICAgICAgICAgIDFNICAgICA1MTJLICAgICA1MTJLICAgICAgMTBLICAgICAgMTBLICAgICAgNTEgICAgICAgNTEKKworICAgICAgIFRoZXNlIHNldHRpbmcgc2hvdWxkIHdvcmsgd2VsbCBpbiBtb3N0IGVudmlyb25tZW50cywgYnV0IGNhbiBiZQorICAgICAgIGNoYW5nZWQgYnkgdHlwaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDogCisgCisgICAgICAgICAgIGluc21vZCA8SUFfRElSPi9pYS5vIElBX1JYX0JVRj08UlhfQ05UPiBJQV9SWF9CVUZfU1o9PFJYX1NJWkU+IFwKKyAgICAgICAgICAgICAgICAgICBJQV9UWF9CVUY9PFRYX0NOVD4gSUFfVFhfQlVGX1NaPTxUWF9TSVpFPiAKKyAgICAgICBXaGVyZToKKyAgICAgICAgICAgIFJYX0NOVCA9IG51bWJlciBvZiByZWNlaXZlIGJ1ZmZlcnMgaW4gdGhlIHJhbmdlICgxLTEyOCkKKyAgICAgICAgICAgIFJYX1NJWkUgPSBzaXplIG9mIHJlY2VpdmUgYnVmZmVycyBpbiB0aGUgcmFuZ2UgKDQ4LTY0SykKKyAgICAgICAgICAgIFRYX0NOVCA9IG51bWJlciBvZiB0cmFuc21pdCBidWZmZXJzIGluIHRoZSByYW5nZSAoMS0xMjgpCisgICAgICAgICAgICBUWF9TSVpFID0gc2l6ZSBvZiB0cmFuc21pdCBidWZmZXJzIGluIHRoZSByYW5nZSAoNDgtNjRLKQorCisgICAgICAgICAgICAxLiBUcmFuc21pdCBhbmQgcmVjZWl2ZSBidWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC4KKyAgICAgICAgICAgIDIuIENhcmUgc2hvdWxkIGJlIHRha2VuIHNvIHRoYXQgdGhlIG1lbW9yeSByZXF1aXJlZCBmb3IgdGhlCisgICAgICAgICAgICAgICB0cmFuc21pdCBhbmQgcmVjZWl2ZSBidWZmZXJzIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUKKyAgICAgICAgICAgICAgIHRvdGFsIGFkYXB0ZXIgcGFja2V0IG1lbW9yeS4gICAKKworNS4yIFR1cm4gb24gaWEgZGVidWcgdHJhY2UKKworICAgIFdoZW4gdGhlIGlhIGRyaXZlciBpcyBidWlsdCB3aXRoIHRoZSBDT05GSUdfQVRNX0lBX0RFQlVHIGZsYWcsIHRoZSBkcml2ZXIgCisgICAgY2FuIHByb3ZpZGUgbW9yZSBkZWJ1ZyB0cmFjZSBpZiBuZWVkZWQuIFRoZXJlIGlzIGEgYml0IG1hc2sgdmFyaWFibGUsIAorICAgIElBRGVidWdGbGFnLCB3aGljaCBjb250cm9scyB0aGUgb3V0cHV0IG9mIHRoZSB0cmFjZXMuIFlvdSBjYW4gZmluZCB0aGUgYml0IAorICAgIG1hcCBvZiB0aGUgSUFEZWJ1Z0ZsYWcgaW4gaXBoYXNlLmguIAorICAgIFRoZSBkZWJ1ZyB0cmFjZSBjYW4gYmUgdHVybiBvbiB0aHJvdWdoIHRoZSBpbnNtb2QgY29tbWFuZCBsaW5lIG9wdGlvbiwgZm9yIAorICAgIGV4YW1wbGUsICJpbnNtb2QgaXBoYXNlLm8gSUFEZWJ1Z0ZsYWc9MHhmZmZmZmZmZiIgY2FuIHR1cm4gb24gYWxsIHRoZSBkZWJ1ZyAKKyAgICB0cmFjZXMgdG9nZXRoZXIgd2l0aCBsb2FkaW5nIHRoZSBkcml2ZXIuCisKKzYuIElhIERyaXZlciBUZXN0IFVzaW5nIHR0Y3BfYXRtIGFuZCBQVkMKKworICAgRm9yIHRoZSBQVkMgc2V0dXAsIHRoZSB0ZXN0IG1hY2hpbmVzIGNhbiBlaXRoZXIgYmUgY29ubmVjdGVkIGJhY2stdG8tYmFjayBvciAKKyAgIHRocm91Z2ggYSBzd2l0Y2guIElmIGNvbm5lY3RlZCB0aHJvdWdoIHRoZSBzd2l0Y2gsIHRoZSBzd2l0Y2ggbXVzdCBiZSAKKyAgIGNvbmZpZ3VyZWQgZm9yIHRoZSBQVkMocykuCisKKyAgIGEuIEZvciBVQlIgdGVzdDoKKyAgICAgIEF0IHRoZSB0ZXN0IG1hY2hpbmUgaW50ZW5kZWQgdG8gcmVjZWl2ZSBkYXRhLCB0eXBlOgorICAgICAgICAgdHRjcF9hdG0gLXIgLWEgLXMgMC4xMDAgCisgICAgICBBdCB0aGUgb3RoZXIgdGVzdCBtYWNoaW5lLCB0eXBlOgorICAgICAgICAgdHRjcF9hdG0gLXQgLWEgLXMgMC4xMDAgLW4gMTAwMDAKKyAgICAgIFJ1biAidHRjcF9hdG0gLWgiIHRvIGRpc3BsYXkgbW9yZSBvcHRpb25zIG9mIHRoZSB0dGNwX2F0bSB0b29sLgorICAgYi4gRm9yIEFCUiB0ZXN0OgorICAgICAgSXQgaXMgdGhlIHNhbWUgYXMgdGhlIFVCUiB0ZXN0aW5nLCBidXQgd2l0aCBhbiBleHRyYSBjb21tYW5kIG9wdGlvbjoKKyAgICAgICAgIC1QYWJyOm1heF9wY3I9PHh4eD4KKyAgICAgICAgIHdoZXJlOgorICAgICAgICAgICAgIHh4eCA9IHRoZSBtYXhpbXVtIHBlYWsgY2VsbCByYXRlLCBmcm9tIDE3MCAtIDM1MzIwNy4KKyAgICAgICAgIFRoaXMgb3B0aW9uIG11c3QgYmUgc2V0IG9uIGJvdGggdGhlIG1hY2hpbmVzLgorICAgYy4gRm9yIENCUiB0ZXN0OgorICAgICAgSXQgaXMgdGhlIHNhbWUgYXMgdGhlIFVCUiB0ZXN0aW5nLCBidXQgd2l0aCBhbiBleHRyYSBjb21tYW5kIG9wdGlvbjoKKyAgICAgICAgIC1QY2JyOm1heF9wY3I9PHh4eD4KKyAgICAgICAgIHdoZXJlOgorICAgICAgICAgICAgIHh4eCA9IHRoZSBtYXhpbXVtIHBlYWsgY2VsbCByYXRlLCBmcm9tIDE3MCAtIDM1MzIwNy4KKyAgICAgICAgIFRoaXMgb3B0aW9uIG1heSBvbmx5IGJlIHNldCBvbiB0aGUgdHJhbnNtaXQgbWFjaGluZS4KKworCitPVVRTVEFORElORyBJU1NVRVMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCisKKworQ29udGFjdCBJbmZvcm1hdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgIEN1c3RvbWVyIFN1cHBvcnQ6CisgICAgICAgICBVbml0ZWQgU3RhdGVzOglUZWxlcGhvbmU6CSgyMTQpIDY1NC01NTU1CisgICAgIAkJCUZheDoJCSgyMTQpIDY1NC01NTAwCisJCQlFLU1haWw6CQlpbnRvdWNoQGlwaGFzZS5jb20KKwkgRXVyb3BlOglUZWxlcGhvbmU6CTMzICgwKTEgNDEgMTUgNDQgMDAKKwkJCUZheDoJCTMzICgwKTEgNDEgMTUgMTIgMTMKKyAgICAgV29ybGQgV2lkZSBXZWI6CWh0dHA6Ly93d3cuaXBoYXNlLmNvbQorICAgICBBbm9ueW1vdXMgRlRQOglmdHAuaXBoYXNlLmNvbQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwc2VjLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHNlYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRiYzA4YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHNlYy50eHQKQEAgLTAsMCArMSwzOCBAQAorCitIZXJlIGRvY3VtZW50cyBrbm93biBJUHNlYyBjb3JuZXIgY2FzZXMgd2hpY2ggbmVlZCB0byBiZSBrZWVwIGluIG1pbmQgd2hlbgorZGVwbG95IHZhcmlvdXMgSVBzZWMgY29uZmlndXJhdGlvbiBpbiByZWFsIHdvcmxkIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuCisKKzEuIElQY29tcDogU21hbGwgSVAgcGFja2V0IHdvbid0IGdldCBjb21wcmVzc2VkIGF0IHNlbmRlciwgYW5kIGZhaWxlZCBvbgorCSAgIHBvbGljeSBjaGVjayBvbiByZWNlaXZlci4KKworUXVvdGUgZnJvbSBSRkMzMTczOgorMi4yLiBOb24tRXhwYW5zaW9uIFBvbGljeQorCisgICBJZiB0aGUgdG90YWwgc2l6ZSBvZiBhIGNvbXByZXNzZWQgcGF5bG9hZCBhbmQgdGhlIElQQ29tcCBoZWFkZXIsIGFzCisgICBkZWZpbmVkIGluIHNlY3Rpb24gMywgaXMgbm90IHNtYWxsZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgb3JpZ2luYWwKKyAgIHBheWxvYWQsIHRoZSBJUCBkYXRhZ3JhbSBNVVNUIGJlIHNlbnQgaW4gdGhlIG9yaWdpbmFsIG5vbi1jb21wcmVzc2VkCisgICBmb3JtLiAgVG8gY2xhcmlmeTogSWYgYW4gSVAgZGF0YWdyYW0gaXMgc2VudCBub24tY29tcHJlc3NlZCwgbm8KKworICAgSVBDb21wIGhlYWRlciBpcyBhZGRlZCB0byB0aGUgZGF0YWdyYW0uICBUaGlzIHBvbGljeSBlbnN1cmVzIHNhdmluZworICAgdGhlIGRlY29tcHJlc3Npb24gcHJvY2Vzc2luZyBjeWNsZXMgYW5kIGF2b2lkaW5nIGluY3VycmluZyBJUAorICAgZGF0YWdyYW0gZnJhZ21lbnRhdGlvbiB3aGVuIHRoZSBleHBhbmRlZCBkYXRhZ3JhbSBpcyBsYXJnZXIgdGhhbiB0aGUKKyAgIE1UVS4KKworICAgU21hbGwgSVAgZGF0YWdyYW1zIGFyZSBsaWtlbHkgdG8gZXhwYW5kIGFzIGEgcmVzdWx0IG9mIGNvbXByZXNzaW9uLgorICAgVGhlcmVmb3JlLCBhIG51bWVyaWMgdGhyZXNob2xkIHNob3VsZCBiZSBhcHBsaWVkIGJlZm9yZSBjb21wcmVzc2lvbiwKKyAgIHdoZXJlIElQIGRhdGFncmFtcyBvZiBzaXplIHNtYWxsZXIgdGhhbiB0aGUgdGhyZXNob2xkIGFyZSBzZW50IGluIHRoZQorICAgb3JpZ2luYWwgZm9ybSB3aXRob3V0IGF0dGVtcHRpbmcgY29tcHJlc3Npb24uICBUaGUgbnVtZXJpYyB0aHJlc2hvbGQKKyAgIGlzIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudC4KKworQ3VycmVudCBJUENvbXAgaW1wbGVtZW50YXRpb24gaXMgaW5kZWVkIGJ5IHRoZSBib29rLCB3aGlsZSBhcyBpbiBwcmFjdGljZQord2hlbiBzZW5kaW5nIG5vbi1jb21wcmVzc2VkIHBhY2tldCB0byB0aGUgcGVlcih3aGV0aGVyIG9yIG5vdCBwYWNrZXQgbGVuCitpcyBzbWFsbGVyIHRoYW4gdGhlIHRocmVzaG9sZCBvciB0aGUgY29tcHJlc3NlZCBsZW4gaXMgbGFyZ2UgdGhhbiBvcmlnaW5hbAorcGFja2V0IGxlbiksIHRoZSBwYWNrZXQgaXMgZHJvcHBlZCB3aGVuIGNoZWNraW5nIHRoZSBwb2xpY3kgYXMgdGhpcyBwYWNrZXQKK21hdGNoZXMgdGhlIHNlbGVjdG9yIGJ1dCBub3QgY29taW5nIGZyb20gYW55IFhGUk0gbGF5ZXIsIGkuZS4sIHdpdGggbm8KK3NlY3VyaXR5IHBhdGguIFN1Y2ggbmFrZWQgcGFja2V0IHdpbGwgbm90IGV2ZW50dWFsbHkgbWFrZSBpdCB0byB1cHBlciBsYXllci4KK1RoZSByZXN1bHQgaXMgbXVjaCBtb3JlIHdpcmVkIHRvIHRoZSB1c2VyIHdoZW4gcGluZyBwZWVyIHdpdGggZGlmZmVyZW50CitwYXlsb2FkIGxlbmd0aC4KKworT25lIHdvcmthcm91bmQgaXMgdHJ5IHRvIHNldCAibGV2ZWwgdXNlIiBmb3IgZWFjaCBwb2xpY3kgaWYgdXNlciBvYnNlcnZlZAorYWJvdmUgc2NlbmFyaW8uIFRoZSBjb25zZXF1ZW5jZSBvZiBkb2luZyBzbyBpcyBzbWFsbCBwYWNrZXQodW5jb21wcmVzc2VkKQord2lsbCBza2lwIHBvbGljeSBjaGVja2luZyBvbiByZWNlaXZlciBzaWRlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwdjYudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwdjYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZDc0ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXB2Ni50eHQKQEAgLTAsMCArMSw3MiBAQAorCitPcHRpb25zIGZvciB0aGUgaXB2NiBtb2R1bGUgYXJlIHN1cHBsaWVkIGFzIHBhcmFtZXRlcnMgYXQgbG9hZCB0aW1lLgorCitNb2R1bGUgb3B0aW9ucyBtYXkgYmUgZ2l2ZW4gYXMgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyB0byB0aGUgaW5zbW9kCitvciBtb2Rwcm9iZSBjb21tYW5kLCBidXQgYXJlIHVzdWFsbHkgc3BlY2lmaWVkIGluIGVpdGhlcgorL2V0Yy9tb2R1bGVzLmQvKi5jb25mIGNvbmZpZ3VyYXRpb24gZmlsZXMsIG9yIGluIGEgZGlzdHJvLXNwZWNpZmljCitjb25maWd1cmF0aW9uIGZpbGUuCisKK1RoZSBhdmFpbGFibGUgaXB2NiBtb2R1bGUgcGFyYW1ldGVycyBhcmUgbGlzdGVkIGJlbG93LiAgSWYgYSBwYXJhbWV0ZXIKK2lzIG5vdCBzcGVjaWZpZWQgdGhlIGRlZmF1bHQgdmFsdWUgaXMgdXNlZC4KKworVGhlIHBhcmFtZXRlcnMgYXJlIGFzIGZvbGxvd3M6CisKK2Rpc2FibGUKKworCVNwZWNpZmllcyB3aGV0aGVyIHRvIGxvYWQgdGhlIElQdjYgbW9kdWxlLCBidXQgZGlzYWJsZSBhbGwKKwlpdHMgZnVuY3Rpb25hbGl0eS4gIFRoaXMgbWlnaHQgYmUgdXNlZCB3aGVuIGFub3RoZXIgbW9kdWxlCisJaGFzIGEgZGVwZW5kZW5jeSBvbiB0aGUgSVB2NiBtb2R1bGUgYmVpbmcgbG9hZGVkLCBidXQgbm8KKwlJUHY2IGFkZHJlc3NlcyBvciBvcGVyYXRpb25zIGFyZSBkZXNpcmVkLgorCisJVGhlIHBvc3NpYmxlIHZhbHVlcyBhbmQgdGhlaXIgZWZmZWN0cyBhcmU6CisKKwkwCisJCUlQdjYgaXMgZW5hYmxlZC4KKworCQlUaGlzIGlzIHRoZSBkZWZhdWx0IHZhbHVlLgorCisJMQorCQlJUHY2IGlzIGRpc2FibGVkLgorCisJCU5vIElQdjYgYWRkcmVzc2VzIHdpbGwgYmUgYWRkZWQgdG8gaW50ZXJmYWNlcywgYW5kCisJCWl0IHdpbGwgbm90IGJlIHBvc3NpYmxlIHRvIG9wZW4gYW4gSVB2NiBzb2NrZXQuCisKKwkJQSByZWJvb3QgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIElQdjYuCisKK2F1dG9jb25mCisKKwlTcGVjaWZpZXMgd2hldGhlciB0byBlbmFibGUgSVB2NiBhZGRyZXNzIGF1dG9jb25maWd1cmF0aW9uCisJb24gYWxsIGludGVyZmFjZXMuICBUaGlzIG1pZ2h0IGJlIHVzZWQgd2hlbiBvbmUgZG9lcyBub3Qgd2lzaAorCWZvciBhZGRyZXNzZXMgdG8gYmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBwcmVmaXhlcworCXJlY2VpdmVkIGluIFJvdXRlciBBZHZlcnRpc2VtZW50cy4KKworCVRoZSBwb3NzaWJsZSB2YWx1ZXMgYW5kIHRoZWlyIGVmZmVjdHMgYXJlOgorCisJMAorCQlJUHY2IGFkZHJlc3MgYXV0b2NvbmZpZ3VyYXRpb24gaXMgZGlzYWJsZWQgb24gYWxsIGludGVyZmFjZXMuCisKKwkJT25seSB0aGUgSVB2NiBsb29wYmFjayBhZGRyZXNzICg6OjEpIGFuZCBsaW5rLWxvY2FsIGFkZHJlc3NlcworCQl3aWxsIGJlIGFkZGVkIHRvIGludGVyZmFjZXMuCisKKwkxCisJCUlQdjYgYWRkcmVzcyBhdXRvY29uZmlndXJhdGlvbiBpcyBlbmFibGVkIG9uIGFsbCBpbnRlcmZhY2VzLgorCisJCVRoaXMgaXMgdGhlIGRlZmF1bHQgdmFsdWUuCisKK2Rpc2FibGVfaXB2NgorCisJU3BlY2lmaWVzIHdoZXRoZXIgdG8gZGlzYWJsZSBJUHY2IG9uIGFsbCBpbnRlcmZhY2VzLgorCVRoaXMgbWlnaHQgYmUgdXNlZCB3aGVuIG5vIElQdjYgYWRkcmVzc2VzIGFyZSBkZXNpcmVkLgorCisJVGhlIHBvc3NpYmxlIHZhbHVlcyBhbmQgdGhlaXIgZWZmZWN0cyBhcmU6CisKKwkwCisJCUlQdjYgaXMgZW5hYmxlZCBvbiBhbGwgaW50ZXJmYWNlcy4KKworCQlUaGlzIGlzIHRoZSBkZWZhdWx0IHZhbHVlLgorCisJMQorCQlJUHY2IGlzIGRpc2FibGVkIG9uIGFsbCBpbnRlcmZhY2VzLgorCisJCU5vIElQdjYgYWRkcmVzc2VzIHdpbGwgYmUgYWRkZWQgdG8gaW50ZXJmYWNlcy4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwdmxhbi50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXB2bGFuLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjk5NjM5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwdmxhbi50eHQKQEAgLTAsMCArMSwxMDcgQEAKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQVkxBTiBEcml2ZXIgSE9XVE8KKworSW5pdGlhbCBSZWxlYXNlOgorCU1haGVzaCBCYW5kZXdhciA8bWFoZXNoYiBBVCBnb29nbGUuY29tPgorCisxLiBJbnRyb2R1Y3Rpb246CisJVGhpcyBpcyBjb25jZXB0dWFsbHkgdmVyeSBzaW1pbGFyIHRvIHRoZSBtYWN2bGFuIGRyaXZlciB3aXRoIG9uZSBtYWpvcgorZXhjZXB0aW9uIG9mIHVzaW5nIEwzIGZvciBtdXgtaW5nIC9kZW11eC1pbmcgYW1vbmcgc2xhdmVzLiBUaGlzIHByb3BlcnR5IG1ha2VzCit0aGUgbWFzdGVyIGRldmljZSBzaGFyZSB0aGUgTDIgd2l0aCBpdCdzIHNsYXZlIGRldmljZXMuIEkgaGF2ZSBkZXZlbG9wZWQgdGhpcworZHJpdmVyIGluIGNvbmp1bnRpb24gd2l0aCBuZXR3b3JrIG5hbWVzcGFjZXMgYW5kIG5vdCBzdXJlIGlmIHRoZXJlIGlzIHVzZSBjYXNlCitvdXRzaWRlIG9mIGl0LgorCisKKzIuIEJ1aWxkaW5nIGFuZCBJbnN0YWxsYXRpb246CisJSW4gb3JkZXIgdG8gYnVpbGQgdGhlIGRyaXZlciwgcGxlYXNlIHNlbGVjdCB0aGUgY29uZmlnIGl0ZW0gQ09ORklHX0lQVkxBTi4KK1RoZSBkcml2ZXIgY2FuIGJlIGJ1aWx0IGludG8gdGhlIGtlcm5lbCAoQ09ORklHX0lQVkxBTj15KSBvciBhcyBhIG1vZHVsZQorKENPTkZJR19JUFZMQU49bSkuCisKKworMy4gQ29uZmlndXJhdGlvbjoKKwlUaGVyZSBhcmUgbm8gbW9kdWxlIHBhcmFtZXRlcnMgZm9yIHRoaXMgZHJpdmVyIGFuZCBpdCBjYW4gYmUgY29uZmlndXJlZAordXNpbmcgSVByb3V0ZTIvaXAgdXRpbGl0eS4KKworCWlwIGxpbmsgYWRkIGxpbmsgPG1hc3Rlci1kZXY+IDxzbGF2ZS1kZXY+IHR5cGUgaXB2bGFuIG1vZGUgeyBsMiB8IEwzIH0KKworCWUuZy4gaXAgbGluayBhZGQgbGluayBpcHZsMCBldGgwIHR5cGUgaXB2bGFuIG1vZGUgbDIKKworCis0LiBPcGVyYXRpbmcgbW9kZXM6CisJSVB2bGFuIGhhcyB0d28gbW9kZXMgb2Ygb3BlcmF0aW9uIC0gTDIgYW5kIEwzLiBGb3IgYSBnaXZlbiBtYXN0ZXIgZGV2aWNlLAoreW91IGNhbiBzZWxlY3Qgb25lIG9mIHRoZXNlIHR3byBtb2RlcyBhbmQgYWxsIHNsYXZlcyBvbiB0aGF0IG1hc3RlciB3aWxsCitvcGVyYXRlIGluIHRoZSBzYW1lIChzZWxlY3RlZCkgbW9kZS4gVGhlIFJYIG1vZGUgaXMgYWxtb3N0IGlkZW50aWNhbCBleGNlcHQKK3RoYXQgaW4gTDMgbW9kZSB0aGUgc2xhdmVzIHdvbnQgcmVjZWl2ZSBhbnkgbXVsdGljYXN0IC8gYnJvYWRjYXN0IHRyYWZmaWMuCitMMyBtb2RlIGlzIG1vcmUgcmVzdHJpY3RpdmUgc2luY2Ugcm91dGluZyBpcyBjb250cm9sbGVkIGZyb20gdGhlIG90aGVyIChtb3N0bHkpCitkZWZhdWx0IG5hbWVzcGFjZS4KKworNC4xIEwyIG1vZGU6CisJSW4gdGhpcyBtb2RlIFRYIHByb2Nlc3NpbmcgaGFwcGVucyBvbiB0aGUgc3RhY2sgaW5zdGFuY2UgYXR0YWNoZWQgdG8gdGhlCitzbGF2ZSBkZXZpY2UgYW5kIHBhY2tldHMgYXJlIHN3aXRjaGVkIGFuZCBxdWV1ZWQgdG8gdGhlIG1hc3RlciBkZXZpY2UgdG8gc2VuZAorb3V0LiBJbiB0aGlzIG1vZGUgdGhlIHNsYXZlcyB3aWxsIFJYL1RYIG11bHRpY2FzdCBhbmQgYnJvYWRjYXN0IChpZiBhcHBsaWNhYmxlKQorYXMgd2VsbC4KKworNC4yIEwzIG1vZGU6CisJSW4gdGhpcyBtb2RlIFRYIHByb2Nlc3NpbmcgdXB0byBMMyBoYXBwZW5zIG9uIHRoZSBzdGFjayBpbnN0YW5jZSBhdHRhY2hlZAordG8gdGhlIHNsYXZlIGRldmljZSBhbmQgcGFja2V0cyBhcmUgc3dpdGNoZWQgdG8gdGhlIHN0YWNrIGluc3RhbmNlIG9mIHRoZQorbWFzdGVyIGRldmljZSBmb3IgdGhlIEwyIHByb2Nlc3NpbmcgYW5kIHJvdXRpbmcgZnJvbSB0aGF0IGluc3RhbmNlIHdpbGwgYmUKK3VzZWQgYmVmb3JlIHBhY2tldHMgYXJlIHF1ZXVlZCBvbiB0aGUgb3V0Ym91bmQgZGV2aWNlLiBJbiB0aGlzIG1vZGUgdGhlIHNsYXZlcword2lsbCBub3QgcmVjZWl2ZSBub3IgY2FuIHNlbmQgbXVsdGljYXN0IC8gYnJvYWRjYXN0IHRyYWZmaWMuCisKKworNS4gV2hhdCB0byBjaG9vc2UgKG1hY3ZsYW4gdnMuIGlwdmxhbik/CisJVGhlc2UgdHdvIGRldmljZXMgYXJlIHZlcnkgc2ltaWxhciBpbiBtYW55IHJlZ2FyZHMgYW5kIHRoZSBzcGVjaWZpYyB1c2UKK2Nhc2UgY291bGQgdmVyeSB3ZWxsIGRlZmluZSB3aGljaCBkZXZpY2UgdG8gY2hvb3NlLiBpZiBvbmUgb2YgdGhlIGZvbGxvd2luZworc2l0dWF0aW9ucyBkZWZpbmVzIHlvdXIgdXNlIGNhc2UgdGhlbiB5b3UgY2FuIGNob29zZSB0byB1c2UgaXB2bGFuIC0KKwkoYSkgVGhlIExpbnV4IGhvc3QgdGhhdCBpcyBjb25uZWN0ZWQgdG8gdGhlIGV4dGVybmFsIHN3aXRjaCAvIHJvdXRlciBoYXMKK3BvbGljeSBjb25maWd1cmVkIHRoYXQgYWxsb3dzIG9ubHkgb25lIG1hYyBwZXIgcG9ydC4KKwkoYikgTm8gb2YgdmlydHVhbCBkZXZpY2VzIGNyZWF0ZWQgb24gYSBtYXN0ZXIgZXhjZWVkIHRoZSBtYWMgY2FwYWNpdHkgYW5kCitwdXRzIHRoZSBOSUMgaW4gcHJvbWlzY291cyBtb2RlIGFuZCBkZWdyYWRlZCBwZXJmb3JtYW5jZSBpcyBhIGNvbmNlcm4uCisJKGMpIElmIHRoZSBzbGF2ZSBkZXZpY2UgaXMgdG8gYmUgcHV0IGludG8gdGhlIGhvc3RpbGUgLyB1bnRydXN0ZWQgbmV0d29yaworbmFtZXNwYWNlIHdoZXJlIEwyIG9uIHRoZSBzbGF2ZSBjb3VsZCBiZSBjaGFuZ2VkIC8gbWlzdXNlZC4KKworCis2LiBFeGFtcGxlIGNvbmZpZ3VyYXRpb246CisKKyAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCisgIHwgIEhvc3Q6IGhvc3QxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgfCAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICB8CisgIHwgICB8ICAgTlM6bnMwICAgICAgICAgICAgIHwgICAgICB8ICBOUzpuczEgICAgICAgICAgICAgIHwgICAgfAorICB8ICAgfCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8ICAgIHwKKyAgfCAgIHwgICAgICAgICAgICAgICAgICAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgfCAgICB8CisgIHwgICB8ICAgICAgICBpcHZsMCAgICAgICAgIHwgICAgICB8ICAgICAgICAgaXB2bDEgICAgICAgIHwgICAgfAorICB8ICAgKy0tLS0tLS0tLS0jLS0tLS0tLS0tLS0rICAgICAgKy0tLS0tLS0tLS0tIy0tLS0tLS0tLS0rICAgIHwKKyAgfCAgICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgICAgICAgICAgICB8CisgIHwgICAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAgICAgICAgICAgICAgfAorICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBldGgwICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCisKKworCShhKSBDcmVhdGUgdHdvIG5ldHdvcmsgbmFtZXNwYWNlcyAtIG5zMCwgbnMxCisJCWlwIG5ldG5zIGFkZCBuczAKKwkJaXAgbmV0bnMgYWRkIG5zMQorCisJKGIpIENyZWF0ZSB0d28gaXB2bGFuIHNsYXZlcyBvbiBldGgwIChtYXN0ZXIgZGV2aWNlKQorCQlpcCBsaW5rIGFkZCBsaW5rIGV0aDAgaXB2bDAgdHlwZSBpcHZsYW4gbW9kZSBsMgorCQlpcCBsaW5rIGFkZCBsaW5rIGV0aDAgaXB2bDEgdHlwZSBpcHZsYW4gbW9kZSBsMgorCisJKGMpIEFzc2lnbiBzbGF2ZXMgdG8gdGhlIHJlc3BlY3RpdmUgbmV0d29yayBuYW1lc3BhY2VzCisJCWlwIGxpbmsgc2V0IGRldiBpcHZsMCBuZXRucyBuczAKKwkJaXAgbGluayBzZXQgZGV2IGlwdmwxIG5ldG5zIG5zMQorCisJKGQpIE5vdyBzd2l0Y2ggdG8gdGhlIG5hbWVzcGFjZSAobnMwIG9yIG5zMSkgdG8gY29uZmlndXJlIHRoZSBzbGF2ZSBkZXZpY2VzCisJCS0gRm9yIG5zMAorCQkJKDEpIGlwIG5ldG5zIGV4ZWMgbnMwIGJhc2gKKwkJCSgyKSBpcCBsaW5rIHNldCBkZXYgaXB2bDAgdXAKKwkJCSgzKSBpcCBsaW5rIHNldCBkZXYgbG8gdXAKKwkJCSg0KSBpcCAtNCBhZGRyIGFkZCAxMjcuMC4wLjEgZGV2IGxvCisJCQkoNSkgaXAgLTQgYWRkciBhZGQgJElQQUREUiBkZXYgaXB2bDAKKwkJCSg2KSBpcCAtNCByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgJFJPVVRFUiBkZXYgaXB2bDAKKwkJLSBGb3IgbnMxCisJCQkoMSkgaXAgbmV0bnMgZXhlYyBuczEgYmFzaAorCQkJKDIpIGlwIGxpbmsgc2V0IGRldiBpcHZsMSB1cAorCQkJKDMpIGlwIGxpbmsgc2V0IGRldiBsbyB1cAorCQkJKDQpIGlwIC00IGFkZHIgYWRkIDEyNy4wLjAuMSBkZXYgbG8KKwkJCSg1KSBpcCAtNCBhZGRyIGFkZCAkSVBBRERSIGRldiBpcHZsMQorCQkJKDYpIGlwIC00IHJvdXRlIGFkZCBkZWZhdWx0IHZpYSAkUk9VVEVSIGRldiBpcHZsMQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwdnMtc3lzY3RsLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHZzLXN5c2N0bC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZiMWMwMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pcHZzLXN5c2N0bC50eHQKQEAgLTAsMCArMSwyNDIgQEAKKy9wcm9jL3N5cy9uZXQvaXB2NC92cy8qIFZhcmlhYmxlczoKKworYW1fZHJvcHJhdGUgLSBJTlRFR0VSCisgICAgICAgIGRlZmF1bHQgMTAKKworICAgICAgICBJdCBzZXRzIHRoZSBhbHdheXMgbW9kZSBkcm9wIHJhdGUsIHdoaWNoIGlzIHVzZWQgaW4gdGhlIG1vZGUgMworICAgICAgICBvZiB0aGUgZHJvcF9yYXRlIGRlZmVuc2UuCisKK2FtZW10aHJlc2ggLSBJTlRFR0VSCisgICAgICAgIGRlZmF1bHQgMTAyNAorCisgICAgICAgIEl0IHNldHMgdGhlIGF2YWlsYWJsZSBtZW1vcnkgdGhyZXNob2xkIChpbiBwYWdlcyksIHdoaWNoIGlzCisgICAgICAgIHVzZWQgaW4gdGhlIGF1dG9tYXRpYyBtb2RlcyBvZiBkZWZlbnNlLiBXaGVuIHRoZXJlIGlzIG5vCisgICAgICAgIGVub3VnaCBhdmFpbGFibGUgbWVtb3J5LCB0aGUgcmVzcGVjdGl2ZSBzdHJhdGVneSB3aWxsIGJlCisgICAgICAgIGVuYWJsZWQgYW5kIHRoZSB2YXJpYWJsZSBpcyBhdXRvbWF0aWNhbGx5IHNldCB0byAyLCBvdGhlcndpc2UKKyAgICAgICAgdGhlIHN0cmF0ZWd5IGlzIGRpc2FibGVkIGFuZCB0aGUgdmFyaWFibGUgaXMgIHNldCAgdG8gMS4KKworYmFja3VwX29ubHkgLSBCT09MRUFOCisJMCAtIGRpc2FibGVkIChkZWZhdWx0KQorCW5vdCAwIC0gZW5hYmxlZAorCisJSWYgc2V0LCBkaXNhYmxlIHRoZSBkaXJlY3RvciBmdW5jdGlvbiB3aGlsZSB0aGUgc2VydmVyIGlzCisJaW4gYmFja3VwIG1vZGUgdG8gYXZvaWQgcGFja2V0IGxvb3BzIGZvciBEUi9UVU4gbWV0aG9kcy4KKworY29ubl9yZXVzZV9tb2RlIC0gSU5URUdFUgorCTEgLSBkZWZhdWx0CisKKwlDb250cm9scyBob3cgaXB2cyB3aWxsIGRlYWwgd2l0aCBjb25uZWN0aW9ucyB0aGF0IGFyZSBkZXRlY3RlZAorCXBvcnQgcmV1c2UuIEl0IGlzIGEgYml0bWFwLCB3aXRoIHRoZSB2YWx1ZXMgYmVpbmc6CisKKwkwOiBkaXNhYmxlIGFueSBzcGVjaWFsIGhhbmRsaW5nIG9uIHBvcnQgcmV1c2UuIFRoZSBuZXcKKwljb25uZWN0aW9uIHdpbGwgYmUgZGVsaXZlcmVkIHRvIHRoZSBzYW1lIHJlYWwgc2VydmVyIHRoYXQgd2FzCisJc2VydmljaW5nIHRoZSBwcmV2aW91cyBjb25uZWN0aW9uLiBUaGlzIHdpbGwgZWZmZWN0aXZlbHkKKwlkaXNhYmxlIGV4cGlyZV9ub2Rlc3RfY29ubi4KKworCWJpdCAxOiBlbmFibGUgcmVzY2hlZHVsaW5nIG9mIG5ldyBjb25uZWN0aW9ucyB3aGVuIGl0IGlzIHNhZmUuCisJVGhhdCBpcywgd2hlbmV2ZXIgZXhwaXJlX25vZGVzdF9jb25uIGFuZCBmb3IgVENQIHNvY2tldHMsIHdoZW4KKwl0aGUgY29ubmVjdGlvbiBpcyBpbiBUSU1FX1dBSVQgc3RhdGUgKHdoaWNoIGlzIG9ubHkgcG9zc2libGUgaWYKKwl5b3UgdXNlIE5BVCBtb2RlKS4KKworCWJpdCAyOiBpdCBpcyBiaXQgMSBwbHVzLCBmb3IgVENQIGNvbm5lY3Rpb25zLCB3aGVuIGNvbm5lY3Rpb25zCisJYXJlIGluIEZJTl9XQUlUIHN0YXRlLCBhcyB0aGlzIGlzIHRoZSBsYXN0IHN0YXRlIHNlZW4gYnkgbG9hZAorCWJhbGFuY2VyIGluIERpcmVjdCBSb3V0aW5nIG1vZGUuIFRoaXMgYml0IGhlbHBzIG9uIGFkZGluZyBuZXcKKwlyZWFsIHNlcnZlcnMgdG8gYSB2ZXJ5IGJ1c3kgY2x1c3Rlci4KKworY29ubnRyYWNrIC0gQk9PTEVBTgorCTAgLSBkaXNhYmxlZCAoZGVmYXVsdCkKKwlub3QgMCAtIGVuYWJsZWQKKworCUlmIHNldCwgbWFpbnRhaW4gY29ubmVjdGlvbiB0cmFja2luZyBlbnRyaWVzIGZvcgorCWNvbm5lY3Rpb25zIGhhbmRsZWQgYnkgSVBWUy4KKworCVRoaXMgc2hvdWxkIGJlIGVuYWJsZWQgaWYgY29ubmVjdGlvbnMgaGFuZGxlZCBieSBJUFZTIGFyZSB0byBiZQorCWFsc28gaGFuZGxlZCBieSBzdGF0ZWZ1bCBmaXJld2FsbCBydWxlcy4gVGhhdCBpcywgaXB0YWJsZXMgcnVsZXMKKwl0aGF0IG1ha2UgdXNlIG9mIGNvbm5lY3Rpb24gdHJhY2tpbmcuICBJdCBpcyBhIHBlcmZvcm1hbmNlCisJb3B0aW1pc2F0aW9uIHRvIGRpc2FibGUgdGhpcyBzZXR0aW5nIG90aGVyd2lzZS4KKworCUNvbm5lY3Rpb25zIGhhbmRsZWQgYnkgdGhlIElQVlMgRlRQIGFwcGxpY2F0aW9uIG1vZHVsZQorCXdpbGwgaGF2ZSBjb25uZWN0aW9uIHRyYWNraW5nIGVudHJpZXMgcmVnYXJkbGVzcyBvZiB0aGlzIHNldHRpbmcuCisKKwlPbmx5IGF2YWlsYWJsZSB3aGVuIElQVlMgaXMgY29tcGlsZWQgd2l0aCBDT05GSUdfSVBfVlNfTkZDVCBlbmFibGVkLgorCitjYWNoZV9ieXBhc3MgLSBCT09MRUFOCisgICAgICAgIDAgLSBkaXNhYmxlZCAoZGVmYXVsdCkKKyAgICAgICAgbm90IDAgLSBlbmFibGVkCisKKyAgICAgICAgSWYgaXQgaXMgZW5hYmxlZCwgZm9yd2FyZCBwYWNrZXRzIHRvIHRoZSBvcmlnaW5hbCBkZXN0aW5hdGlvbgorICAgICAgICBkaXJlY3RseSB3aGVuIG5vIGNhY2hlIHNlcnZlciBpcyBhdmFpbGFibGUgYW5kIGRlc3RpbmF0aW9uCisgICAgICAgIGFkZHJlc3MgaXMgbm90IGxvY2FsIChpcGgtPmRhZGRyIGlzIFJUTl9VTklDQVNUKS4gSXQgaXMgbW9zdGx5CisgICAgICAgIHVzZWQgaW4gdHJhbnNwYXJlbnQgd2ViIGNhY2hlIGNsdXN0ZXIuCisKK2RlYnVnX2xldmVsIC0gSU5URUdFUgorCTAgICAgICAgICAgLSB0cmFuc21pc3Npb24gZXJyb3IgbWVzc2FnZXMgKGRlZmF1bHQpCisJMSAgICAgICAgICAtIG5vbi1mYXRhbCBlcnJvciBtZXNzYWdlcworCTIgICAgICAgICAgLSBjb25maWd1cmF0aW9uCisJMyAgICAgICAgICAtIGRlc3RpbmF0aW9uIHRyYXNoCisJNCAgICAgICAgICAtIGRyb3AgZW50cnkKKwk1ICAgICAgICAgIC0gc2VydmljZSBsb29rdXAKKwk2ICAgICAgICAgIC0gc2NoZWR1bGluZworCTcgICAgICAgICAgLSBjb25uZWN0aW9uIG5ldy9leHBpcmUsIGxvb2t1cCBhbmQgc3luY2hyb25pemF0aW9uCisJOCAgICAgICAgICAtIHN0YXRlIHRyYW5zaXRpb24KKwk5ICAgICAgICAgIC0gYmluZGluZyBkZXN0aW5hdGlvbiwgdGVtcGxhdGUgY2hlY2tzIGFuZCBhcHBsaWNhdGlvbnMKKwkxMCAgICAgICAgIC0gSVBWUyBwYWNrZXQgdHJhbnNtaXNzaW9uCisJMTEgICAgICAgICAtIElQVlMgcGFja2V0IGhhbmRsaW5nIChpcF92c19pbi9pcF92c19vdXQpCisJMTIgb3IgbW9yZSAtIHBhY2tldCB0cmF2ZXJzYWwKKworCU9ubHkgYXZhaWxhYmxlIHdoZW4gSVBWUyBpcyBjb21waWxlZCB3aXRoIENPTkZJR19JUF9WU19ERUJVRyBlbmFibGVkLgorCisJSGlnaGVyIGRlYnVnZ2luZyBsZXZlbHMgaW5jbHVkZSB0aGUgbWVzc2FnZXMgZm9yIGxvd2VyIGRlYnVnZ2luZworCWxldmVscywgc28gc2V0dGluZyBkZWJ1ZyBsZXZlbCAyLCBpbmNsdWRlcyBsZXZlbCAwLCAxIGFuZCAyCisJbWVzc2FnZXMuIFRodXMsIGxvZ2dpbmcgYmVjb21lcyBtb3JlIGFuZCBtb3JlIHZlcmJvc2UgdGhlIGhpZ2hlcgorCXRoZSBsZXZlbC4KKworZHJvcF9lbnRyeSAtIElOVEVHRVIKKyAgICAgICAgMCAgLSBkaXNhYmxlZCAoZGVmYXVsdCkKKworICAgICAgICBUaGUgZHJvcF9lbnRyeSBkZWZlbnNlIGlzIHRvIHJhbmRvbWx5IGRyb3AgZW50cmllcyBpbiB0aGUKKyAgICAgICAgY29ubmVjdGlvbiBoYXNoIHRhYmxlLCBqdXN0IGluIG9yZGVyIHRvIGNvbGxlY3QgYmFjayBzb21lCisgICAgICAgIG1lbW9yeSBmb3IgbmV3IGNvbm5lY3Rpb25zLiBJbiB0aGUgY3VycmVudCBjb2RlLCB0aGUKKyAgICAgICAgZHJvcF9lbnRyeSBwcm9jZWR1cmUgY2FuIGJlIGFjdGl2YXRlZCBldmVyeSBzZWNvbmQsIHRoZW4gaXQKKyAgICAgICAgcmFuZG9tbHkgc2NhbnMgMS8zMiBvZiB0aGUgd2hvbGUgYW5kIGRyb3BzIGVudHJpZXMgdGhhdCBhcmUgaW4KKyAgICAgICAgdGhlIFNZTi1SRUNWL1NZTkFDSyBzdGF0ZSwgd2hpY2ggc2hvdWxkIGJlIGVmZmVjdGl2ZSBhZ2FpbnN0CisgICAgICAgIHN5bi1mbG9vZGluZyBhdHRhY2suCisKKyAgICAgICAgVGhlIHZhbGlkIHZhbHVlcyBvZiBkcm9wX2VudHJ5IGFyZSBmcm9tIDAgdG8gMywgd2hlcmUgMCBtZWFucworICAgICAgICB0aGF0IHRoaXMgc3RyYXRlZ3kgaXMgYWx3YXlzIGRpc2FibGVkLCAxIGFuZCAyIG1lYW4gYXV0b21hdGljCisgICAgICAgIG1vZGVzICh3aGVuIHRoZXJlIGlzIG5vIGVub3VnaCBhdmFpbGFibGUgbWVtb3J5LCB0aGUgc3RyYXRlZ3kKKyAgICAgICAgaXMgZW5hYmxlZCBhbmQgdGhlIHZhcmlhYmxlIGlzIGF1dG9tYXRpY2FsbHkgc2V0IHRvIDIsCisgICAgICAgIG90aGVyd2lzZSB0aGUgc3RyYXRlZ3kgaXMgZGlzYWJsZWQgYW5kIHRoZSB2YXJpYWJsZSBpcyBzZXQgdG8KKyAgICAgICAgMSksIGFuZCAzIG1lYW5zIHRoYXQgdGhhdCB0aGUgc3RyYXRlZ3kgaXMgYWx3YXlzIGVuYWJsZWQuCisKK2Ryb3BfcGFja2V0IC0gSU5URUdFUgorICAgICAgICAwICAtIGRpc2FibGVkIChkZWZhdWx0KQorCisgICAgICAgIFRoZSBkcm9wX3BhY2tldCBkZWZlbnNlIGlzIGRlc2lnbmVkIHRvIGRyb3AgMS9yYXRlIHBhY2tldHMKKyAgICAgICAgYmVmb3JlIGZvcndhcmRpbmcgdGhlbSB0byByZWFsIHNlcnZlcnMuIElmIHRoZSByYXRlIGlzIDEsIHRoZW4KKyAgICAgICAgZHJvcCBhbGwgdGhlIGluY29taW5nIHBhY2tldHMuCisKKyAgICAgICAgVGhlIHZhbHVlIGRlZmluaXRpb24gaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUgZHJvcF9lbnRyeS4gSW4KKyAgICAgICAgdGhlIGF1dG9tYXRpYyBtb2RlLCB0aGUgcmF0ZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmb2xsb3cKKyAgICAgICAgZm9ybXVsYTogcmF0ZSA9IGFtZW10aHJlc2ggLyAoYW1lbXRocmVzaCAtIGF2YWlsYWJsZV9tZW1vcnkpCisgICAgICAgIHdoZW4gYXZhaWxhYmxlIG1lbW9yeSBpcyBsZXNzIHRoYW4gdGhlIGF2YWlsYWJsZSBtZW1vcnkKKyAgICAgICAgdGhyZXNob2xkLiBXaGVuIHRoZSBtb2RlIDMgaXMgc2V0LCB0aGUgYWx3YXlzIG1vZGUgZHJvcCByYXRlCisgICAgICAgIGlzIGNvbnRyb2xsZWQgYnkgdGhlIC9wcm9jL3N5cy9uZXQvaXB2NC92cy9hbV9kcm9wcmF0ZS4KKworZXhwaXJlX25vZGVzdF9jb25uIC0gQk9PTEVBTgorICAgICAgICAwIC0gZGlzYWJsZWQgKGRlZmF1bHQpCisgICAgICAgIG5vdCAwIC0gZW5hYmxlZAorCisgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDAsIHRoZSBsb2FkIGJhbGFuY2VyIHdpbGwgc2lsZW50bHkgZHJvcAorICAgICAgICBwYWNrZXRzIHdoZW4gaXRzIGRlc3RpbmF0aW9uIHNlcnZlciBpcyBub3QgYXZhaWxhYmxlLiBJdCBtYXkKKyAgICAgICAgYmUgdXNlZnVsLCB3aGVuIHVzZXItc3BhY2UgbW9uaXRvcmluZyBwcm9ncmFtIGRlbGV0ZXMgdGhlCisgICAgICAgIGRlc3RpbmF0aW9uIHNlcnZlciAoYmVjYXVzZSBvZiBzZXJ2ZXIgb3ZlcmxvYWQgb3Igd3JvbmcKKyAgICAgICAgZGV0ZWN0aW9uKSBhbmQgYWRkIGJhY2sgdGhlIHNlcnZlciBsYXRlciwgYW5kIHRoZSBjb25uZWN0aW9ucworICAgICAgICB0byB0aGUgc2VydmVyIGNhbiBjb250aW51ZS4KKworICAgICAgICBJZiB0aGlzIGZlYXR1cmUgaXMgZW5hYmxlZCwgdGhlIGxvYWQgYmFsYW5jZXIgd2lsbCBleHBpcmUgdGhlCisgICAgICAgIGNvbm5lY3Rpb24gaW1tZWRpYXRlbHkgd2hlbiBhIHBhY2tldCBhcnJpdmVzIGFuZCBpdHMKKyAgICAgICAgZGVzdGluYXRpb24gc2VydmVyIGlzIG5vdCBhdmFpbGFibGUsIHRoZW4gdGhlIGNsaWVudCBwcm9ncmFtCisgICAgICAgIHdpbGwgYmUgbm90aWZpZWQgdGhhdCB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQuIFRoaXMgaXMKKyAgICAgICAgZXF1aXZhbGVudCB0byB0aGUgZmVhdHVyZSBzb21lIHBlb3BsZSByZXF1aXJlcyB0byBmbHVzaAorICAgICAgICBjb25uZWN0aW9ucyB3aGVuIGl0cyBkZXN0aW5hdGlvbiBpcyBub3QgYXZhaWxhYmxlLgorCitleHBpcmVfcXVpZXNjZW50X3RlbXBsYXRlIC0gQk9PTEVBTgorCTAgLSBkaXNhYmxlZCAoZGVmYXVsdCkKKwlub3QgMCAtIGVuYWJsZWQKKworCVdoZW4gc2V0IHRvIGEgbm9uLXplcm8gdmFsdWUsIHRoZSBsb2FkIGJhbGFuY2VyIHdpbGwgZXhwaXJlCisJcGVyc2lzdGVudCB0ZW1wbGF0ZXMgd2hlbiB0aGUgZGVzdGluYXRpb24gc2VydmVyIGlzIHF1aWVzY2VudC4KKwlUaGlzIG1heSBiZSB1c2VmdWwsIHdoZW4gYSB1c2VyIG1ha2VzIGEgZGVzdGluYXRpb24gc2VydmVyCisJcXVpZXNjZW50IGJ5IHNldHRpbmcgaXRzIHdlaWdodCB0byAwIGFuZCBpdCBpcyBkZXNpcmVkIHRoYXQKKwlzdWJzZXF1ZW50IG90aGVyd2lzZSBwZXJzaXN0ZW50IGNvbm5lY3Rpb25zIGFyZSBzZW50IHRvIGEKKwlkaWZmZXJlbnQgZGVzdGluYXRpb24gc2VydmVyLiAgQnkgZGVmYXVsdCBuZXcgcGVyc2lzdGVudAorCWNvbm5lY3Rpb25zIGFyZSBhbGxvd2VkIHRvIHF1aWVzY2VudCBkZXN0aW5hdGlvbiBzZXJ2ZXJzLgorCisJSWYgdGhpcyBmZWF0dXJlIGlzIGVuYWJsZWQsIHRoZSBsb2FkIGJhbGFuY2VyIHdpbGwgZXhwaXJlIHRoZQorCXBlcnNpc3RlbmNlIHRlbXBsYXRlIGlmIGl0IGlzIHRvIGJlIHVzZWQgdG8gc2NoZWR1bGUgYSBuZXcKKwljb25uZWN0aW9uIGFuZCB0aGUgZGVzdGluYXRpb24gc2VydmVyIGlzIHF1aWVzY2VudC4KKworaWdub3JlX3R1bm5lbGVkIC0gQk9PTEVBTgorCTAgLSBkaXNhYmxlZCAoZGVmYXVsdCkKKwlub3QgMCAtIGVuYWJsZWQKKworCUlmIHNldCwgaXB2cyB3aWxsIHNldCB0aGUgaXB2c19wcm9wZXJ0eSBvbiBhbGwgcGFja2V0cyB3aGljaCBhcmUgb2YKKwl1bnJlY29nbml6ZWQgcHJvdG9jb2xzLiAgVGhpcyBwcmV2ZW50cyB1cyBmcm9tIHJvdXRpbmcgdHVubmVsZWQKKwlwcm90b2NvbHMgbGlrZSBpcGlwLCB3aGljaCBpcyB1c2VmdWwgdG8gcHJldmVudCByZXNjaGVkdWxpbmcKKwlwYWNrZXRzIHRoYXQgaGF2ZSBiZWVuIHR1bm5lbGVkIHRvIHRoZSBpcHZzIGhvc3QgKGkuZS4gdG8gcHJldmVudAorCWlwdnMgcm91dGluZyBsb29wcyB3aGVuIGlwdnMgaXMgYWxzbyBhY3RpbmcgYXMgYSByZWFsIHNlcnZlcikuCisKK25hdF9pY21wX3NlbmQgLSBCT09MRUFOCisgICAgICAgIDAgLSBkaXNhYmxlZCAoZGVmYXVsdCkKKyAgICAgICAgbm90IDAgLSBlbmFibGVkCisKKyAgICAgICAgSXQgY29udHJvbHMgc2VuZGluZyBpY21wIGVycm9yIG1lc3NhZ2VzIChJQ01QX0RFU1RfVU5SRUFDSCkKKyAgICAgICAgZm9yIFZTL05BVCB3aGVuIHRoZSBsb2FkIGJhbGFuY2VyIHJlY2VpdmVzIHBhY2tldHMgZnJvbSByZWFsCisgICAgICAgIHNlcnZlcnMgYnV0IHRoZSBjb25uZWN0aW9uIGVudHJpZXMgZG9uJ3QgZXhpc3QuCisKK3NlY3VyZV90Y3AgLSBJTlRFR0VSCisgICAgICAgIDAgIC0gZGlzYWJsZWQgKGRlZmF1bHQpCisKKwlUaGUgc2VjdXJlX3RjcCBkZWZlbnNlIGlzIHRvIHVzZSBhIG1vcmUgY29tcGxpY2F0ZWQgVENQIHN0YXRlCisJdHJhbnNpdGlvbiB0YWJsZS4gRm9yIFZTL05BVCwgaXQgYWxzbyBkZWxheXMgZW50ZXJpbmcgdGhlCisJVENQIEVTVEFCTElTSEVEIHN0YXRlIHVudGlsIHRoZSB0aHJlZSB3YXkgaGFuZHNoYWtlIGlzIGNvbXBsZXRlZC4KKworICAgICAgICBUaGUgdmFsdWUgZGVmaW5pdGlvbiBpcyB0aGUgc2FtZSBhcyB0aGF0IG9mIGRyb3BfZW50cnkgYW5kCisgICAgICAgIGRyb3BfcGFja2V0LgorCitzeW5jX3RocmVzaG9sZCAtIElOVEVHRVIKKyAgICAgICAgZGVmYXVsdCAzCisKKyAgICAgICAgSXQgc2V0cyBzeW5jaHJvbml6YXRpb24gdGhyZXNob2xkLCB3aGljaCBpcyB0aGUgbWluaW11bSBudW1iZXIKKyAgICAgICAgb2YgaW5jb21pbmcgcGFja2V0cyB0aGF0IGEgY29ubmVjdGlvbiBuZWVkcyB0byByZWNlaXZlIGJlZm9yZQorICAgICAgICB0aGUgY29ubmVjdGlvbiB3aWxsIGJlIHN5bmNocm9uaXplZC4gQSBjb25uZWN0aW9uIHdpbGwgYmUKKyAgICAgICAgc3luY2hyb25pemVkLCBldmVyeSB0aW1lIHRoZSBudW1iZXIgb2YgaXRzIGluY29taW5nIHBhY2tldHMKKyAgICAgICAgbW9kdWx1cyA1MCBlcXVhbHMgdGhlIHRocmVzaG9sZC4gVGhlIHJhbmdlIG9mIHRoZSB0aHJlc2hvbGQgaXMKKyAgICAgICAgZnJvbSAwIHRvIDQ5LgorCitzbmF0X3Jlcm91dGUgLSBCT09MRUFOCisJMCAtIGRpc2FibGVkCisJbm90IDAgLSBlbmFibGVkIChkZWZhdWx0KQorCisJSWYgZW5hYmxlZCwgcmVjYWxjdWxhdGUgdGhlIHJvdXRlIG9mIFNOQVRlZCBwYWNrZXRzIGZyb20KKwlyZWFsc2VydmVycyBzbyB0aGF0IHRoZXkgYXJlIHJvdXRlZCBhcyBpZiB0aGV5IG9yaWdpbmF0ZSBmcm9tIHRoZQorCWRpcmVjdG9yLiBPdGhlcndpc2UgdGhleSBhcmUgcm91dGVkIGFzIGlmIHRoZXkgYXJlIGZvcndhcmRlZCBieSB0aGUKKwlkaXJlY3Rvci4KKworCUlmIHBvbGljeSByb3V0aW5nIGlzIGluIGVmZmVjdCB0aGVuIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIHJvdXRlCisJb2YgYSBwYWNrZXQgb3JpZ2luYXRpbmcgZnJvbSBhIGRpcmVjdG9yIGlzIHJvdXRlZCBkaWZmZXJlbnRseSB0byBhCisJcGFja2V0IGJlaW5nIGZvcndhcmRlZCBieSB0aGUgZGlyZWN0b3IuCisKKwlJZiBwb2xpY3kgcm91dGluZyBpcyBub3QgaW4gZWZmZWN0IHRoZW4gdGhlIHJlY2FsY3VsYXRlZCByb3V0ZSB3aWxsCisJYWx3YXlzIGJlIHRoZSBzYW1lIGFzIHRoZSBvcmlnaW5hbCByb3V0ZSBzbyBpdCBpcyBhbiBvcHRpbWlzYXRpb24KKwl0byBkaXNhYmxlIHNuYXRfcmVyb3V0ZSBhbmQgYXZvaWQgdGhlIHJlY2FsY3VsYXRpb24uCisKK3N5bmNfcGVyc2lzdF9tb2RlIC0gSU5URUdFUgorCWRlZmF1bHQgMAorCisJQ29udHJvbHMgdGhlIHN5bmNocm9uaXNhdGlvbiBvZiBjb25uZWN0aW9ucyB3aGVuIHVzaW5nIHBlcnNpc3RlbmNlCisKKwkwOiBBbGwgdHlwZXMgb2YgY29ubmVjdGlvbnMgYXJlIHN5bmNocm9uaXNlZAorCTE6IEF0dGVtcHQgdG8gcmVkdWNlIHRoZSBzeW5jaHJvbmlzYXRpb24gdHJhZmZpYyBkZXBlbmRpbmcgb24KKwl0aGUgY29ubmVjdGlvbiB0eXBlLiBGb3IgcGVyc2lzdGVudCBzZXJ2aWNlcyBhdm9pZCBzeW5jaHJvbmlzYXRpb24KKwlmb3Igbm9ybWFsIGNvbm5lY3Rpb25zLCBkbyBpdCBvbmx5IGZvciBwZXJzaXN0ZW5jZSB0ZW1wbGF0ZXMuCisJSW4gc3VjaCBjYXNlLCBmb3IgVENQIGFuZCBTQ1RQIGl0IG1heSBuZWVkIGVuYWJsaW5nIHNsb3BweV90Y3AgYW5kCisJc2xvcHB5X3NjdHAgZmxhZ3Mgb24gYmFja3VwIHNlcnZlcnMuIEZvciBub24tcGVyc2lzdGVudCBzZXJ2aWNlcworCXN1Y2ggb3B0aW1pemF0aW9uIGlzIG5vdCBhcHBsaWVkLCBtb2RlIDAgaXMgYXNzdW1lZC4KKworc3luY192ZXJzaW9uIC0gSU5URUdFUgorCWRlZmF1bHQgMQorCisJVGhlIHZlcnNpb24gb2YgdGhlIHN5bmNocm9uaXNhdGlvbiBwcm90b2NvbCB1c2VkIHdoZW4gc2VuZGluZworCXN5bmNocm9uaXNhdGlvbiBtZXNzYWdlcy4KKworCTAgc2VsZWN0cyB0aGUgb3JpZ2luYWwgc3luY2hyb25pc2F0aW9uIHByb3RvY29sICh2ZXJzaW9uIDApLiBUaGlzCisJc2hvdWxkIGJlIHVzZWQgd2hlbiBzZW5kaW5nIHN5bmNocm9uaXNhdGlvbiBtZXNzYWdlcyB0byBhIGxlZ2FjeQorCXN5c3RlbSB0aGF0IG9ubHkgdW5kZXJzdGFuZHMgdGhlIG9yaWdpbmFsIHN5bmNocm9uaXNhdGlvbiBwcm90b2NvbC4KKworCTEgc2VsZWN0cyB0aGUgY3VycmVudCBzeW5jaHJvbmlzYXRpb24gcHJvdG9jb2wgKHZlcnNpb24gMSkuIFRoaXMKKwlzaG91bGQgYmUgdXNlZCB3aGVyZSBwb3NzaWJsZS4KKworCUtlcm5lbHMgd2l0aCB0aGlzIHN5bmNfdmVyc2lvbiBlbnRyeSBhcmUgYWJsZSB0byByZWNlaXZlIG1lc3NhZ2VzCisJb2YgYm90aCB2ZXJzaW9uIDEgYW5kIHZlcnNpb24gMiBvZiB0aGUgc3luY2hyb25pc2F0aW9uIHByb3RvY29sLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lyZGEudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lyZGEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmZjI2YzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXJkYS50eHQKQEAgLTAsMCArMSwxMCBAQAorVG8gdXNlIHRoZSBJckRBIHByb3RvY29scyB3aXRoaW4gTGludXggeW91IHdpbGwgbmVlZCB0byBnZXQgYSBzdWl0YWJsZSBjb3B5CitvZiB0aGUgSXJEQSBVdGlsaXRpZXMuIE1vcmUgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlc2UgYW5kIGFzc29jaWF0ZWQKK3Byb2dyYW1zIGNhbiBiZSBmb3VuZCBvbiBodHRwOi8vaXJkYS5zb3VyY2Vmb3JnZS5uZXQvCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byB1c2UgdGhlIElyREEgcHJvdG9jb2wgc3RhY2ssIHNlZSB0aGUKK0xpbnV4IEluZnJhcmVkIEhPV1RPIGJ5IFdlcm5lciBIZXVzZXIgPHdlaGVAdHV4bW9iaWwub3JnPjoKKzxodHRwOi8vd3d3LnR1eG1vYmlsLm9yZy9JbmZyYXJlZC1IT1dUTy9JbmZyYXJlZC1IT1dUTy5odG1sPgorCitUaGVyZSBpcyBhbiBhY3RpdmUgbWFpbGluZyBsaXN0IGZvciBkaXNjdXNzaW5nIExpbnV4LUlyREEgbWF0dGVycyBjYWxsZWQKKyAgICBpcmRhLXVzZXJzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2l4Z2IudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2l4Z2IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliNGExMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXhnYi50eHQKQEAgLTAsMCArMSw0MzMgQEAKK0xpbnV4IEJhc2UgRHJpdmVyIGZvciAxMCBHaWdhYml0IEludGVsKFIpIEV0aGVybmV0IE5ldHdvcmsgQ29ubmVjdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK01hcmNoIDE0LCAyMDExCisKKworQ29udGVudHMKKz09PT09PT09CisKKy0gSW4gVGhpcyBSZWxlYXNlCistIElkZW50aWZ5aW5nIFlvdXIgQWRhcHRlcgorLSBCdWlsZGluZyBhbmQgSW5zdGFsbGF0aW9uCistIENvbW1hbmQgTGluZSBQYXJhbWV0ZXJzCistIEltcHJvdmluZyBQZXJmb3JtYW5jZQorLSBBZGRpdGlvbmFsIENvbmZpZ3VyYXRpb25zCistIEtub3duIElzc3Vlcy9Ucm91Ymxlc2hvb3RpbmcKKy0gU3VwcG9ydAorCisKKworSW4gVGhpcyBSZWxlYXNlCis9PT09PT09PT09PT09PT0KKworVGhpcyBmaWxlIGRlc2NyaWJlcyB0aGUgaXhnYiBMaW51eCBCYXNlIERyaXZlciBmb3IgdGhlIDEwIEdpZ2FiaXQgSW50ZWwoUikKK05ldHdvcmsgQ29ubmVjdGlvbi4gIFRoaXMgZHJpdmVyIGluY2x1ZGVzIHN1cHBvcnQgZm9yIEl0YW5pdW0oUikyLWJhc2VkCitzeXN0ZW1zLgorCitGb3IgcXVlc3Rpb25zIHJlbGF0ZWQgdG8gaGFyZHdhcmUgcmVxdWlyZW1lbnRzLCByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbgorc3VwcGxpZWQgd2l0aCB5b3VyIDEwIEdpZ2FiaXQgYWRhcHRlci4gIEFsbCBoYXJkd2FyZSByZXF1aXJlbWVudHMgbGlzdGVkIGFwcGx5Cit0byB1c2Ugd2l0aCBMaW51eC4KKworVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlIGluIHRoaXMga2VybmVsOgorIC0gTmF0aXZlIFZMQU5zCisgLSBDaGFubmVsIEJvbmRpbmcgKHRlYW1pbmcpCisgLSBTTk1QCisKK0NoYW5uZWwgQm9uZGluZyBkb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUgTGludXgga2VybmVsIHNvdXJjZToKKy9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYm9uZGluZy50eHQKKworVGhlIGRyaXZlciBpbmZvcm1hdGlvbiBwcmV2aW91c2x5IGRpc3BsYXllZCBpbiB0aGUgL3Byb2MgZmlsZXN5c3RlbSBpcyBub3QKK3N1cHBvcnRlZCBpbiB0aGlzIHJlbGVhc2UuICBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSBldGh0b29sICh2ZXJzaW9uIDEuNgorb3IgbGF0ZXIpLCBsc3BjaSwgYW5kIGlwcm91dGUyIHRvIG9idGFpbiB0aGUgc2FtZSBpbmZvcm1hdGlvbi4KKworSW5zdHJ1Y3Rpb25zIG9uIHVwZGF0aW5nIGV0aHRvb2wgY2FuIGJlIGZvdW5kIGluIHRoZSBzZWN0aW9uICJBZGRpdGlvbmFsCitDb25maWd1cmF0aW9ucyIgbGF0ZXIgaW4gdGhpcyBkb2N1bWVudC4KKworCitJZGVudGlmeWluZyBZb3VyIEFkYXB0ZXIKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZm9sbG93aW5nIEludGVsIG5ldHdvcmsgYWRhcHRlcnMgYXJlIGNvbXBhdGlibGUgd2l0aCB0aGUgZHJpdmVycyBpbiB0aGlzCityZWxlYXNlOgorCitDb250cm9sbGVyICBBZGFwdGVyIE5hbWUgICAgICAgICAgICAgICAgIFBoeXNpY2FsIExheWVyCistLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tCis4MjU5N0VYICAgICBJbnRlbChSKSBQUk8vMTBHYkUgTFIvU1IvQ1g0IDEwRyBCYXNlLUxSICgxMzEwIG5tIG9wdGljYWwgZmliZXIpCisgICAgICAgICAgICBTZXJ2ZXIgQWRhcHRlcnMgICAgICAgICAgICAgIDEwRyBCYXNlLVNSICg4NTAgbm0gb3B0aWNhbCBmaWJlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTBHIEJhc2UtQ1g0KHR3aW4tYXhpYWwgY29wcGVyIGNhYmxpbmcpCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBpZGVudGlmeSB5b3VyIGFkYXB0ZXIsIGdvIHRvIHRoZSBBZGFwdGVyICYKK0RyaXZlciBJRCBHdWlkZSBhdDoKKworICAgIGh0dHA6Ly9zdXBwb3J0LmludGVsLmNvbS9zdXBwb3J0L25ldHdvcmsvc2IvQ1MtMDEyOTA0Lmh0bQorCisKK0J1aWxkaW5nIGFuZCBJbnN0YWxsYXRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworc2VsZWN0IG0gZm9yICJJbnRlbChSKSBQUk8vMTBHYkUgc3VwcG9ydCIgbG9jYXRlZCBhdDoKKyAgICAgIExvY2F0aW9uOgorICAgICAgICAtPiBEZXZpY2UgRHJpdmVycworICAgICAgICAgIC0+IE5ldHdvcmsgZGV2aWNlIHN1cHBvcnQgKE5FVERFVklDRVMgWz15XSkKKyAgICAgICAgICAgIC0+IEV0aGVybmV0ICgxMDAwMCBNYml0KSAoTkVUREVWXzEwMDAwIFs9eV0pCisxLiBtYWtlIG1vZHVsZXMgJiYgbWFrZSBtb2R1bGVzX2luc3RhbGwKKworMi4gTG9hZCB0aGUgbW9kdWxlOgorCivCoMKgwqDCoG1vZHByb2JlIGl4Z2IgPHBhcmFtZXRlcj49PHZhbHVlPgorCisgICBUaGUgaW5zbW9kIGNvbW1hbmQgY2FuIGJlIHVzZWQgaWYgdGhlIGZ1bGwKKyAgIHBhdGggdG8gdGhlIGRyaXZlciBtb2R1bGUgaXMgc3BlY2lmaWVkLiAgRm9yIGV4YW1wbGU6CisKKyAgICAgaW5zbW9kIC9saWIvbW9kdWxlcy88S0VSTkVMIFZFUlNJT04+L2tlcm5lbC9kcml2ZXJzL25ldC9peGdiL2l4Z2Iua28KKworICAgV2l0aCAyLjYgYmFzZWQga2VybmVscyBhbHNvIG1ha2Ugc3VyZSB0aGF0IG9sZGVyIGl4Z2IgZHJpdmVycyBhcmUKKyAgIHJlbW92ZWQgZnJvbSB0aGUga2VybmVsLCBiZWZvcmUgbG9hZGluZyB0aGUgbmV3IG1vZHVsZToKKworICAgICBybW1vZCBpeGdiOyBtb2Rwcm9iZSBpeGdiCisKKzMuIEFzc2lnbiBhbiBJUCBhZGRyZXNzIHRvIHRoZSBpbnRlcmZhY2UgYnkgZW50ZXJpbmcgdGhlIGZvbGxvd2luZywgd2hlcmUKKyAgIHggaXMgdGhlIGludGVyZmFjZSBudW1iZXI6CisKKyAgICAgaXAgYWRkciBhZGQgZXRoeCA8SVBfYWRkcmVzcz4KKworNC4gVmVyaWZ5IHRoYXQgdGhlIGludGVyZmFjZSB3b3Jrcy4gRW50ZXIgdGhlIGZvbGxvd2luZywgd2hlcmUgPElQX2FkZHJlc3M+CisgICBpcyB0aGUgSVAgYWRkcmVzcyBmb3IgYW5vdGhlciBtYWNoaW5lIG9uIHRoZSBzYW1lIHN1Ym5ldCBhcyB0aGUgaW50ZXJmYWNlCisgICB0aGF0IGlzIGJlaW5nIHRlc3RlZDoKKworICAgICBwaW5nICA8SVBfYWRkcmVzcz4KKworCitDb21tYW5kIExpbmUgUGFyYW1ldGVycworPT09PT09PT09PT09PT09PT09PT09PT0KKworSWYgdGhlIGRyaXZlciBpcyBidWlsdCBhcyBhIG1vZHVsZSwgdGhlICBmb2xsb3dpbmcgb3B0aW9uYWwgcGFyYW1ldGVycyBhcmUKK3VzZWQgYnkgZW50ZXJpbmcgdGhlbSBvbiB0aGUgY29tbWFuZCBsaW5lIHdpdGggdGhlIG1vZHByb2JlIGNvbW1hbmQgdXNpbmcKK3RoaXMgc3ludGF4OgorCisgICAgIG1vZHByb2JlIGl4Z2IgWzxvcHRpb24+PTxWQUwxPiw8VkFMMj4sLi4uXQorCitGb3IgZXhhbXBsZSwgd2l0aCB0d28gMTBHYkUgUENJIGFkYXB0ZXJzLCBlbnRlcmluZzoKKworICAgICBtb2Rwcm9iZSBpeGdiIFR4RGVzY3JpcHRvcnM9ODAsMTI4CisKK2xvYWRzIHRoZSBpeGdiIGRyaXZlciB3aXRoIDgwIFRYIHJlc291cmNlcyBmb3IgdGhlIGZpcnN0IGFkYXB0ZXIgYW5kIDEyOCBUWAorcmVzb3VyY2VzIGZvciB0aGUgc2Vjb25kIGFkYXB0ZXIuCisKK1RoZSBkZWZhdWx0IHZhbHVlIGZvciBlYWNoIHBhcmFtZXRlciBpcyBnZW5lcmFsbHkgdGhlIHJlY29tbWVuZGVkIHNldHRpbmcsCit1bmxlc3Mgb3RoZXJ3aXNlIG5vdGVkLgorCitGbG93Q29udHJvbAorVmFsaWQgUmFuZ2U6IDAtMyAoMD1ub25lLCAxPVJ4IG9ubHksIDI9VHggb25seSwgMz1SeCZUeCkKK0RlZmF1bHQ6IFJlYWQgZnJvbSB0aGUgRUVQUk9NCisgICAgICAgICBJZiBFRVBST00gaXMgbm90IGRldGVjdGVkLCBkZWZhdWx0IGlzIDEKKyAgICBUaGlzIHBhcmFtZXRlciBjb250cm9scyB0aGUgYXV0b21hdGljIGdlbmVyYXRpb24oVHgpIGFuZCByZXNwb25zZShSeCkgdG8KKyAgICBFdGhlcm5ldCBQQVVTRSBmcmFtZXMuICBUaGVyZSBhcmUgaGFyZHdhcmUgYnVncyBhc3NvY2lhdGVkIHdpdGggZW5hYmxpbmcKKyAgICBUeCBmbG93IGNvbnRyb2wgc28gYmV3YXJlLgorCitSeERlc2NyaXB0b3JzCitWYWxpZCBSYW5nZTogNjQtNTEyCitEZWZhdWx0IFZhbHVlOiA1MTIKKyAgICBUaGlzIHZhbHVlIGlzIHRoZSBudW1iZXIgb2YgcmVjZWl2ZSBkZXNjcmlwdG9ycyBhbGxvY2F0ZWQgYnkgdGhlIGRyaXZlci4KKyAgICBJbmNyZWFzaW5nIHRoaXMgdmFsdWUgYWxsb3dzIHRoZSBkcml2ZXIgdG8gYnVmZmVyIG1vcmUgaW5jb21pbmcgcGFja2V0cy4KKyAgICBFYWNoIGRlc2NyaXB0b3IgaXMgMTYgYnl0ZXMuICBBIHJlY2VpdmUgYnVmZmVyIGlzIGFsc28gYWxsb2NhdGVkIGZvcgorICAgIGVhY2ggZGVzY3JpcHRvciBhbmQgY2FuIGJlIGVpdGhlciAyMDQ4LCA0MDU2LCA4MTkyLCBvciAxNjM4NCBieXRlcywKKyAgICBkZXBlbmRpbmcgb24gdGhlIE1UVSBzZXR0aW5nLiAgV2hlbiB0aGUgTVRVIHNpemUgaXMgMTUwMCBvciBsZXNzLCB0aGUKKyAgICByZWNlaXZlIGJ1ZmZlciBzaXplIGlzIDIwNDggYnl0ZXMuIFdoZW4gdGhlIE1UVSBpcyBncmVhdGVyIHRoYW4gMTUwMCB0aGUKKyAgICByZWNlaXZlIGJ1ZmZlciBzaXplIHdpbGwgYmUgZWl0aGVyIDQwNTYsIDgxOTIsIG9yIDE2Mzg0IGJ5dGVzLiAgVGhlCisgICAgbWF4aW11bSBNVFUgc2l6ZSBpcyAxNjExNC4KKworUnhJbnREZWxheQorVmFsaWQgUmFuZ2U6IDAtNjU1MzUgKDA9b2ZmKQorRGVmYXVsdCBWYWx1ZTogNzIKKyAgICBUaGlzIHZhbHVlIGRlbGF5cyB0aGUgZ2VuZXJhdGlvbiBvZiByZWNlaXZlIGludGVycnVwdHMgaW4gdW5pdHMgb2YKKyAgICAwLjgxOTIgbWljcm9zZWNvbmRzLiAgUmVjZWl2ZSBpbnRlcnJ1cHQgcmVkdWN0aW9uIGNhbiBpbXByb3ZlIENQVQorICAgIGVmZmljaWVuY3kgaWYgcHJvcGVybHkgdHVuZWQgZm9yIHNwZWNpZmljIG5ldHdvcmsgdHJhZmZpYy4gIEluY3JlYXNpbmcKKyAgICB0aGlzIHZhbHVlIGFkZHMgZXh0cmEgbGF0ZW5jeSB0byBmcmFtZSByZWNlcHRpb24gYW5kIGNhbiBlbmQgdXAKKyAgICBkZWNyZWFzaW5nIHRoZSB0aHJvdWdocHV0IG9mIFRDUCB0cmFmZmljLiAgSWYgdGhlIHN5c3RlbSBpcyByZXBvcnRpbmcKKyAgICBkcm9wcGVkIHJlY2VpdmVzLCB0aGlzIHZhbHVlIG1heSBiZSBzZXQgdG9vIGhpZ2gsIGNhdXNpbmcgdGhlIGRyaXZlciB0bworICAgIHJ1biBvdXQgb2YgYXZhaWxhYmxlIHJlY2VpdmUgZGVzY3JpcHRvcnMuCisKK1R4RGVzY3JpcHRvcnMKK1ZhbGlkIFJhbmdlOiA2NC00MDk2CitEZWZhdWx0IFZhbHVlOiAyNTYKKyAgICBUaGlzIHZhbHVlIGlzIHRoZSBudW1iZXIgb2YgdHJhbnNtaXQgZGVzY3JpcHRvcnMgYWxsb2NhdGVkIGJ5IHRoZSBkcml2ZXIuCisgICAgSW5jcmVhc2luZyB0aGlzIHZhbHVlIGFsbG93cyB0aGUgZHJpdmVyIHRvIHF1ZXVlIG1vcmUgdHJhbnNtaXRzLiAgRWFjaAorICAgIGRlc2NyaXB0b3IgaXMgMTYgYnl0ZXMuCisKK1hzdW1SWAorVmFsaWQgUmFuZ2U6IDAtMQorRGVmYXVsdCBWYWx1ZTogMQorICAgIEEgdmFsdWUgb2YgJzEnIGluZGljYXRlcyB0aGF0IHRoZSBkcml2ZXIgc2hvdWxkIGVuYWJsZSBJUCBjaGVja3N1bQorICAgIG9mZmxvYWQgZm9yIHJlY2VpdmVkIHBhY2tldHMgKGJvdGggVURQIGFuZCBUQ1ApIHRvIHRoZSBhZGFwdGVyIGhhcmR3YXJlLgorCisKK0ltcHJvdmluZyBQZXJmb3JtYW5jZQorPT09PT09PT09PT09PT09PT09PT09CisKK1dpdGggdGhlIDEwIEdpZ2FiaXQgc2VydmVyIGFkYXB0ZXJzLCB0aGUgZGVmYXVsdCBMaW51eCBjb25maWd1cmF0aW9uIHdpbGwKK3ZlcnkgbGlrZWx5IGxpbWl0IHRoZSB0b3RhbCBhdmFpbGFibGUgdGhyb3VnaHB1dCBhcnRpZmljaWFsbHkuICBUaGVyZSBpcyBhIHNldAorb2YgY29uZmlndXJhdGlvbiBjaGFuZ2VzIHRoYXQsIHdoZW4gYXBwbGllZCB0b2dldGhlciwgd2lsbCBpbmNyZWFzZSB0aGUgYWJpbGl0eQorb2YgTGludXggdG8gdHJhbnNtaXQgYW5kIHJlY2VpdmUgZGF0YS4gIFRoZSBmb2xsb3dpbmcgZW5oYW5jZW1lbnRzIHdlcmUKK29yaWdpbmFsbHkgYWNxdWlyZWQgZnJvbSBzZXR0aW5ncyBwdWJsaXNoZWQgYXQgaHR0cDovL3d3dy5zcGVjLm9yZy93ZWI5OS8gZm9yCit2YXJpb3VzIHN1Ym1pdHRlZCByZXN1bHRzIHVzaW5nIExpbnV4LgorCitOT1RFOiBUaGVzZSBjaGFuZ2VzIGFyZSBvbmx5IHN1Z2dlc3Rpb25zLCBhbmQgc2VydmUgYXMgYSBzdGFydGluZyBwb2ludCBmb3IKKyAgICAgIHR1bmluZyB5b3VyIG5ldHdvcmsgcGVyZm9ybWFuY2UuCisKK1RoZSBjaGFuZ2VzIGFyZSBtYWRlIGluIHRocmVlIG1ham9yIHdheXMsIGxpc3RlZCBpbiBvcmRlciBvZiBncmVhdGVzdCBlZmZlY3Q6CistIFVzZSBpcCBsaW5rIHRvIG1vZGlmeSB0aGUgbXR1IChtYXhpbXVtIHRyYW5zbWlzc2lvbiB1bml0KSBhbmQgdGhlIHR4cXVldWVsZW4KKyAgcGFyYW1ldGVyLgorLSBVc2Ugc3lzY3RsIHRvIG1vZGlmeSAvcHJvYyBwYXJhbWV0ZXJzIChlc3NlbnRpYWxseSBrZXJuZWwgdHVuaW5nKQorLSBVc2Ugc2V0cGNpIHRvIG1vZGlmeSB0aGUgTU1SQkMgZmllbGQgaW4gUENJLVggY29uZmlndXJhdGlvbiBzcGFjZSB0byBpbmNyZWFzZQorICB0cmFuc21pdCBidXJzdCBsZW5ndGhzIG9uIHRoZSBidXMuCisKK05PVEU6IHNldHBjaSBtb2RpZmllcyB0aGUgYWRhcHRlcidzIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIHRvIGFsbG93IGl0IHRvIHJlYWQKK3VwIHRvIDRrIGJ5dGVzIGF0IGEgdGltZSAoZm9yIHRyYW5zbWl0cykuICBIb3dldmVyLCBmb3Igc29tZSBzeXN0ZW1zIHRoZQorYmVoYXZpb3IgYWZ0ZXIgbW9kaWZ5aW5nIHRoaXMgcmVnaXN0ZXIgbWF5IGJlIHVuZGVmaW5lZCAocG9zc2libHkgZXJyb3JzIG9mCitzb21lIGtpbmQpLiAgQSBwb3dlci1jeWNsZSwgaGFyZCByZXNldCBvciBleHBsaWNpdGx5IHNldHRpbmcgdGhlIGU2IHJlZ2lzdGVyCitiYWNrIHRvIDIyIChzZXRwY2kgLWQgODA4NjoxYTQ4IGU2LmI9MjIpIG1heSBiZSByZXF1aXJlZCB0byBnZXQgYmFjayB0byBhCitzdGFibGUgY29uZmlndXJhdGlvbi4KKworLSBDT1BZIHRoZXNlIGxpbmVzIGFuZCBwYXN0ZSB0aGVtIGludG8gaXhnYl9wZXJmLnNoOgorIyEvYmluL2Jhc2gKK2VjaG8gImNvbmZpZ3VyaW5nIG5ldHdvcmsgcGVyZm9ybWFuY2UgLCBlZGl0IHRoaXMgZmlsZSB0byBjaGFuZ2UgdGhlIGludGVyZmFjZQorb3IgZGV2aWNlIElEIG9mIDEwR2JFIGNhcmQiCisjIHNldCBtbXJiYyB0byA0ayByZWFkcywgbW9kaWZ5IG9ubHkgSW50ZWwgMTBHYkUgZGV2aWNlIElEcworIyByZXBsYWNlIDFhNDggd2l0aCBhcHByb3ByaWF0ZSAxMEdiRSBkZXZpY2UncyBJRCBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbSwKKyMgaWYgbmVlZGVkLgorc2V0cGNpIC1kIDgwODY6MWE0OCBlNi5iPTJlCisjIHNldCB0aGUgTVRVIChtYXggdHJhbnNtaXNzaW9uIHVuaXQpIC0gaXQgcmVxdWlyZXMgeW91ciBzd2l0Y2ggYW5kIGNsaWVudHMKKyMgdG8gY2hhbmdlIGFzIHdlbGwuCisjIHNldCB0aGUgdHhxdWV1ZWxlbgorIyB5b3VyIGl4Z2IgYWRhcHRlciBzaG91bGQgYmUgbG9hZGVkIGFzIGV0aDEgZm9yIHRoaXMgdG8gd29yaywgY2hhbmdlIGlmIG5lZWRlZAoraXAgbGkgc2V0IGRldiBldGgxIG10dSA5MDAwIHR4cXVldWVsZW4gMTAwMCB1cAorIyBjYWxsIHRoZSBzeXNjdGwgdXRpbGl0eSB0byBtb2RpZnkgL3Byb2Mvc3lzIGVudHJpZXMKK3N5c2N0bCAtcCAuL3N5c2N0bF9peGdiLmNvbmYKKy0gRU5EIGl4Z2JfcGVyZi5zaAorCistIENPUFkgdGhlc2UgbGluZXMgYW5kIHBhc3RlIHRoZW0gaW50byBzeXNjdGxfaXhnYi5jb25mOgorIyBzb21lIG9mIHRoZSBkZWZhdWx0cyBtYXkgYmUgZGlmZmVyZW50IGZvciB5b3VyIGtlcm5lbAorIyBjYWxsIHRoaXMgZmlsZSB3aXRoIHN5c2N0bCAtcCA8dGhpcyBmaWxlPgorIyB0aGVzZSBhcmUganVzdCBzdWdnZXN0ZWQgdmFsdWVzIHRoYXQgd29ya2VkIHdlbGwgdG8gaW5jcmVhc2UgdGhyb3VnaHB1dCBpbgorIyBzZXZlcmFsIG5ldHdvcmsgYmVuY2htYXJrIHRlc3RzLCB5b3VyIG1pbGVhZ2UgbWF5IHZhcnkKKworIyMjIElQVjQgc3BlY2lmaWMgc2V0dGluZ3MKKyMgdHVybiBUQ1AgdGltZXN0YW1wIHN1cHBvcnQgb2ZmLCBkZWZhdWx0IDEsIHJlZHVjZXMgQ1BVIHVzZQorbmV0LmlwdjQudGNwX3RpbWVzdGFtcHMgPSAwCisjIHR1cm4gU0FDSyBzdXBwb3J0IG9mZiwgZGVmYXVsdCBvbgorIyBvbiBzeXN0ZW1zIHdpdGggYSBWRVJZIGZhc3QgYnVzIC0+IG1lbW9yeSBpbnRlcmZhY2UgdGhpcyBpcyB0aGUgYmlnIGdhaW5lcgorbmV0LmlwdjQudGNwX3NhY2sgPSAwCisjIHNldCBtaW4vZGVmYXVsdC9tYXggVENQIHJlYWQgYnVmZmVyLCBkZWZhdWx0IDQwOTYgODczODAgMTc0NzYwCituZXQuaXB2NC50Y3Bfcm1lbSA9IDEwMDAwMDAwIDEwMDAwMDAwIDEwMDAwMDAwCisjIHNldCBtaW4vcHJlc3N1cmUvbWF4IFRDUCB3cml0ZSBidWZmZXIsIGRlZmF1bHQgNDA5NiAxNjM4NCAxMzEwNzIKK25ldC5pcHY0LnRjcF93bWVtID0gMTAwMDAwMDAgMTAwMDAwMDAgMTAwMDAwMDAKKyMgc2V0IG1pbi9wcmVzc3VyZS9tYXggVENQIGJ1ZmZlciBzcGFjZSwgZGVmYXVsdCAzMTc0NCAzMjI1NiAzMjc2OAorbmV0LmlwdjQudGNwX21lbSA9IDEwMDAwMDAwIDEwMDAwMDAwIDEwMDAwMDAwCisKKyMjIyBDT1JFIHNldHRpbmdzIChtb3N0bHkgZm9yIHNvY2tldCBhbmQgVURQIGVmZmVjdCkKKyMgc2V0IG1heGltdW0gcmVjZWl2ZSBzb2NrZXQgYnVmZmVyIHNpemUsIGRlZmF1bHQgMTMxMDcxCituZXQuY29yZS5ybWVtX21heCA9IDUyNDI4NworIyBzZXQgbWF4aW11bSBzZW5kIHNvY2tldCBidWZmZXIgc2l6ZSwgZGVmYXVsdCAxMzEwNzEKK25ldC5jb3JlLndtZW1fbWF4ID0gNTI0Mjg3CisjIHNldCBkZWZhdWx0IHJlY2VpdmUgc29ja2V0IGJ1ZmZlciBzaXplLCBkZWZhdWx0IDY1NTM1CituZXQuY29yZS5ybWVtX2RlZmF1bHQgPSA1MjQyODcKKyMgc2V0IGRlZmF1bHQgc2VuZCBzb2NrZXQgYnVmZmVyIHNpemUsIGRlZmF1bHQgNjU1MzUKK25ldC5jb3JlLndtZW1fZGVmYXVsdCA9IDUyNDI4NworIyBzZXQgbWF4aW11bSBhbW91bnQgb2Ygb3B0aW9uIG1lbW9yeSBidWZmZXJzLCBkZWZhdWx0IDEwMjQwCituZXQuY29yZS5vcHRtZW1fbWF4ID0gNTI0Mjg3CisjIHNldCBudW1iZXIgb2YgdW5wcm9jZXNzZWQgaW5wdXQgcGFja2V0cyBiZWZvcmUga2VybmVsIHN0YXJ0cyBkcm9wcGluZyB0aGVtOyBkZWZhdWx0IDMwMAorbmV0LmNvcmUubmV0ZGV2X21heF9iYWNrbG9nID0gMzAwMDAwCistIEVORCBzeXNjdGxfaXhnYi5jb25mCisKK0VkaXQgdGhlIGl4Z2JfcGVyZi5zaCBzY3JpcHQgaWYgbmVjZXNzYXJ5IHRvIGNoYW5nZSBldGgxIHRvIHdoYXRldmVyIGludGVyZmFjZQoreW91ciBpeGdiIGRyaXZlciBpcyB1c2luZyBhbmQvb3IgcmVwbGFjZSAnMWE0OCcgd2l0aCBhcHByb3ByaWF0ZSAxMEdiRSBkZXZpY2UncworSUQgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0uCisKK05PVEU6IFVubGVzcyB0aGVzZSBzY3JpcHRzIGFyZSBhZGRlZCB0byB0aGUgYm9vdCBwcm9jZXNzLCB0aGVzZSBjaGFuZ2VzIHdpbGwKKyAgICAgIG9ubHkgbGFzdCBvbmx5IHVudGlsIHRoZSBuZXh0IHN5c3RlbSByZWJvb3QuCisKKworUmVzb2x2aW5nIFNsb3cgVURQIFRyYWZmaWMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJZiB5b3VyIHNlcnZlciBkb2VzIG5vdCBzZWVtIHRvIGJlIGFibGUgdG8gcmVjZWl2ZSBVRFAgdHJhZmZpYyBhcyBmYXN0IGFzIGl0CitjYW4gcmVjZWl2ZSBUQ1AgdHJhZmZpYywgaXQgY291bGQgYmUgYmVjYXVzZSBMaW51eCwgYnkgZGVmYXVsdCwgZG9lcyBub3Qgc2V0Cit0aGUgbmV0d29yayBzdGFjayBidWZmZXJzIGFzIGxhcmdlIGFzIHRoZXkgbmVlZCB0byBiZSB0byBzdXBwb3J0IGhpZ2ggVURQCit0cmFuc2ZlciByYXRlcy4gIE9uZSB3YXkgdG8gYWxsZXZpYXRlIHRoaXMgcHJvYmxlbSBpcyB0byBhbGxvdyBtb3JlIG1lbW9yeSB0bworYmUgdXNlZCBieSB0aGUgSVAgc3RhY2sgdG8gc3RvcmUgaW5jb21pbmcgZGF0YS4KKworRm9yIGluc3RhbmNlLCB1c2UgdGhlIGNvbW1hbmRzOgorICAgIHN5c2N0bCAtdyBuZXQuY29yZS5ybWVtX21heD0yNjIxNDMKK2FuZAorICAgIHN5c2N0bCAtdyBuZXQuY29yZS5ybWVtX2RlZmF1bHQ9MjYyMTQzCit0byBpbmNyZWFzZSB0aGUgcmVhZCBidWZmZXIgbWVtb3J5IG1heCBhbmQgZGVmYXVsdCB0byAyNjIxNDMgKDI1NmsgLSAxKSBmcm9tCitkZWZhdWx0cyBvZiBtYXg9MTMxMDcxICgxMjhrIC0gMSkgYW5kIGRlZmF1bHQ9NjU1MzUgKDY0ayAtIDEpLiAgVGhlc2UgdmFyaWFibGVzCit3aWxsIGluY3JlYXNlIHRoZSBhbW91bnQgb2YgbWVtb3J5IHVzZWQgYnkgdGhlIG5ldHdvcmsgc3RhY2sgZm9yIHJlY2VpdmVzLCBhbmQKK2NhbiBiZSBpbmNyZWFzZWQgc2lnbmlmaWNhbnRseSBtb3JlIGlmIG5lY2Vzc2FyeSBmb3IgeW91ciBhcHBsaWNhdGlvbi4KKworCitBZGRpdGlvbmFsIENvbmZpZ3VyYXRpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgQ29uZmlndXJpbmcgdGhlIERyaXZlciBvbiBEaWZmZXJlbnQgRGlzdHJpYnV0aW9ucworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIENvbmZpZ3VyaW5nIGEgbmV0d29yayBkcml2ZXIgdG8gbG9hZCBwcm9wZXJseSB3aGVuIHRoZSBzeXN0ZW0gaXMgc3RhcnRlZCBpcworICBkaXN0cmlidXRpb24gZGVwZW5kZW50LiBUeXBpY2FsbHksIHRoZSBjb25maWd1cmF0aW9uIHByb2Nlc3MgaW52b2x2ZXMgYWRkaW5nCisgIGFuIGFsaWFzIGxpbmUgdG8gL2V0Yy9tb2Rwcm9iZS5jb25mIGFzIHdlbGwgYXMgZWRpdGluZyBvdGhlciBzeXN0ZW0gc3RhcnR1cAorICBzY3JpcHRzIGFuZC9vciBjb25maWd1cmF0aW9uIGZpbGVzLiAgTWFueSBwb3B1bGFyIExpbnV4IGRpc3RyaWJ1dGlvbnMgc2hpcAorICB3aXRoIHRvb2xzIHRvIG1ha2UgdGhlc2UgY2hhbmdlcyBmb3IgeW91LiAgVG8gbGVhcm4gdGhlIHByb3BlciB3YXkgdG8KKyAgY29uZmlndXJlIGEgbmV0d29yayBkZXZpY2UgZm9yIHlvdXIgc3lzdGVtLCByZWZlciB0byB5b3VyIGRpc3RyaWJ1dGlvbgorICBkb2N1bWVudGF0aW9uLiAgSWYgZHVyaW5nIHRoaXMgcHJvY2VzcyB5b3UgYXJlIGFza2VkIGZvciB0aGUgZHJpdmVyIG9yIG1vZHVsZQorICBuYW1lLCB0aGUgbmFtZSBmb3IgdGhlIExpbnV4IEJhc2UgRHJpdmVyIGZvciB0aGUgSW50ZWwgMTBHYkUgRmFtaWx5IG9mCisgIEFkYXB0ZXJzIGlzIGl4Z2IuCisKKyAgVmlld2luZyBMaW5rIE1lc3NhZ2VzCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBMaW5rIG1lc3NhZ2VzIHdpbGwgbm90IGJlIGRpc3BsYXllZCB0byB0aGUgY29uc29sZSBpZiB0aGUgZGlzdHJpYnV0aW9uIGlzCisgIHJlc3RyaWN0aW5nIHN5c3RlbSBtZXNzYWdlcy4gSW4gb3JkZXIgdG8gc2VlIG5ldHdvcmsgZHJpdmVyIGxpbmsgbWVzc2FnZXMgb24KKyAgeW91ciBjb25zb2xlLCBzZXQgZG1lc2cgdG8gZWlnaHQgYnkgZW50ZXJpbmcgdGhlIGZvbGxvd2luZzoKKworICAgICAgIGRtZXNnIC1uIDgKKworICBOT1RFOiBUaGlzIHNldHRpbmcgaXMgbm90IHNhdmVkIGFjcm9zcyByZWJvb3RzLgorCisKKyAgSnVtYm8gRnJhbWVzCisgIC0tLS0tLS0tLS0tLQorICBUaGUgZHJpdmVyIHN1cHBvcnRzIEp1bWJvIEZyYW1lcyBmb3IgYWxsIGFkYXB0ZXJzLiBKdW1ibyBGcmFtZXMgc3VwcG9ydCBpcworICBlbmFibGVkIGJ5IGNoYW5naW5nIHRoZSBNVFUgdG8gYSB2YWx1ZSBsYXJnZXIgdGhhbiB0aGUgZGVmYXVsdCBvZiAxNTAwLgorICBUaGUgbWF4aW11bSB2YWx1ZSBmb3IgdGhlIE1UVSBpcyAxNjExNC4gIFVzZSB0aGUgaXAgY29tbWFuZCB0bworICBpbmNyZWFzZSB0aGUgTVRVIHNpemUuICBGb3IgZXhhbXBsZToKKworICAgICAgICBpcCBsaSBzZXQgZGV2IGV0aHggbXR1IDkwMDAKKworICBUaGUgbWF4aW11bSBNVFUgc2V0dGluZyBmb3IgSnVtYm8gRnJhbWVzIGlzIDE2MTE0LiAgVGhpcyB2YWx1ZSBjb2luY2lkZXMKKyAgd2l0aCB0aGUgbWF4aW11bSBKdW1ibyBGcmFtZXMgc2l6ZSBvZiAxNjEyOC4KKworCisgIGV0aHRvb2wKKyAgLS0tLS0tLQorICBUaGUgZHJpdmVyIHV0aWxpemVzIHRoZSBldGh0b29sIGludGVyZmFjZSBmb3IgZHJpdmVyIGNvbmZpZ3VyYXRpb24gYW5kCisgIGRpYWdub3N0aWNzLCBhcyB3ZWxsIGFzIGRpc3BsYXlpbmcgc3RhdGlzdGljYWwgaW5mb3JtYXRpb24uICBUaGUgZXRodG9vbAorICB2ZXJzaW9uIDEuNiBvciBsYXRlciBpcyByZXF1aXJlZCBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LgorCisgIFRoZSBsYXRlc3QgcmVsZWFzZSBvZiBldGh0b29sIGNhbiBiZSBmb3VuZCBmcm9tCisgIGh0dHA6Ly9mdHAua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay9ldGh0b29sLworCisgIE5PVEU6IFRoZSBldGh0b29sIHZlcnNpb24gMS42IG9ubHkgc3VwcG9ydHMgYSBsaW1pdGVkIHNldCBvZiBldGh0b29sIG9wdGlvbnMuCisgICAgICAgIFN1cHBvcnQgZm9yIGEgbW9yZSBjb21wbGV0ZSBldGh0b29sIGZlYXR1cmUgc2V0IGNhbiBiZSBlbmFibGVkIGJ5CisgICAgICAgIHVwZ3JhZGluZyB0byB0aGUgbGF0ZXN0IHZlcnNpb24uCisKKworICBOQVBJCisgIC0tLS0KKworICBOQVBJIChSeCBwb2xsaW5nIG1vZGUpIGlzIHN1cHBvcnRlZCBpbiB0aGUgaXhnYiBkcml2ZXIuICBOQVBJIGlzIGVuYWJsZWQKKyAgb3IgZGlzYWJsZWQgYmFzZWQgb24gdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGtlcm5lbC4gIHNlZSBDT05GSUdfSVhHQl9OQVBJCisKKyAgU2VlIHd3dy5jeWJlcnVzLmNhL35oYWRpL3VzZW5peC1wYXBlci50Z3ogZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gTkFQSS4KKworCitLbm93biBJc3N1ZXMvVHJvdWJsZXNob290aW5nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgTk9URTogQWZ0ZXIgaW5zdGFsbGluZyB0aGUgZHJpdmVyLCBpZiB5b3VyIEludGVsIE5ldHdvcmsgQ29ubmVjdGlvbiBpcyBub3QKKyAgd29ya2luZywgdmVyaWZ5IGluIHRoZSAiSW4gVGhpcyBSZWxlYXNlIiBzZWN0aW9uIG9mIHRoZSByZWFkbWUgdGhhdCB5b3UgaGF2ZQorICBpbnN0YWxsZWQgdGhlIGNvcnJlY3QgZHJpdmVyLgorCisgIEludGVsKFIpIFBSTy8xMEdiRSBDWDQgU2VydmVyIEFkYXB0ZXIgQ2FibGUgSW50ZXJvcGVyYWJpbGl0eSBJc3N1ZSB3aXRoCisgIEZ1aml0c3UgWEVOUEFLIE1vZHVsZSBpbiBTbWFydEJpdHMgQ2hhc3NpcworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgRXhjZXNzaXZlIENSQyBlcnJvcnMgbWF5IGJlIG9ic2VydmVkIGlmIHRoZSBJbnRlbChSKSBQUk8vMTBHYkUgQ1g0CisgIFNlcnZlciBhZGFwdGVyIGlzIGNvbm5lY3RlZCB0byBhIEZ1aml0c3UgWEVOUEFLIENYNCBtb2R1bGUgaW4gYSBTbWFydEJpdHMKKyAgY2hhc3NpcyB1c2luZyAxNSBtLzI0QVdHIGNhYmxlIGFzc2VtYmxpZXMgbWFudWZhY3R1cmVkIGJ5IEZ1aml0c3Ugb3IgTGVvbmkuCisgIFRoZSBDUkMgZXJyb3JzIG1heSBiZSByZWNlaXZlZCBlaXRoZXIgYnkgdGhlIEludGVsKFIpIFBSTy8xMEdiRSBDWDQKKyAgU2VydmVyIGFkYXB0ZXIgb3IgdGhlIFNtYXJ0Qml0cy4gSWYgdGhpcyBzaXR1YXRpb24gb2NjdXJzIHVzaW5nIGEgZGlmZmVyZW50CisgIGNhYmxlIGFzc2VtYmx5IG1heSByZXNvbHZlIHRoZSBpc3N1ZS4KKworICBDWDQgU2VydmVyIEFkYXB0ZXIgQ2FibGUgSW50ZXJvcGVyYWJpbGl0eSBJc3N1ZXMgd2l0aCBIUCBQcm9jdXJ2ZSAzNDAwY2wKKyAgU3dpdGNoIFBvcnQKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIEV4Y2Vzc2l2ZSBDUkMgZXJyb3JzIG1heSBiZSBvYnNlcnZlZCBpZiB0aGUgSW50ZWwoUikgUFJPLzEwR2JFIENYNCBTZXJ2ZXIKKyAgYWRhcHRlciBpcyBjb25uZWN0ZWQgdG8gYW4gSFAgUHJvY3VydmUgMzQwMGNsIHN3aXRjaCBwb3J0IHVzaW5nIHNob3J0IGNhYmxlcworICAoMSBtIG9yIHNob3J0ZXIpLiBJZiB0aGlzIHNpdHVhdGlvbiBvY2N1cnMsIHVzaW5nIGEgbG9uZ2VyIGNhYmxlIG1heSByZXNvbHZlCisgIHRoZSBpc3N1ZS4KKworICBFeGNlc3NpdmUgQ1JDIGVycm9ycyBtYXkgYmUgb2JzZXJ2ZWQgdXNpbmcgRnVqaXRzdSAyNEFXRyBjYWJsZSBhc3NlbWJsaWVzIHRoYXQKKyAgQXJlIDEwIG0gb3IgbG9uZ2VyIG9yIHdoZXJlIHVzaW5nIGEgTGVvbmkgMTUgbS8yNEFXRyBjYWJsZSBhc3NlbWJseS4gVGhlIENSQworICBlcnJvcnMgbWF5IGJlIHJlY2VpdmVkIGVpdGhlciBieSB0aGUgQ1g0IFNlcnZlciBhZGFwdGVyIG9yIGF0IHRoZSBzd2l0Y2guIElmCisgIHRoaXMgc2l0dWF0aW9uIG9jY3VycywgdXNpbmcgYSBkaWZmZXJlbnQgY2FibGUgYXNzZW1ibHkgbWF5IHJlc29sdmUgdGhlIGlzc3VlLgorCisKKyAgSnVtYm8gRnJhbWVzIFN5c3RlbSBSZXF1aXJlbWVudAorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIE1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVzIGhhdmUgYmVlbiBvYnNlcnZlZCBvbiBMaW51eCBzeXN0ZW1zIHdpdGggNjQgTUIKKyAgb2YgUkFNIG9yIGxlc3MgdGhhdCBhcmUgcnVubmluZyBKdW1ibyBGcmFtZXMuICBJZiB5b3UgYXJlIHVzaW5nIEp1bWJvCisgIEZyYW1lcywgeW91ciBzeXN0ZW0gbWF5IHJlcXVpcmUgbW9yZSB0aGFuIHRoZSBhZHZlcnRpc2VkIG1pbmltdW0KKyAgcmVxdWlyZW1lbnQgb2YgNjQgTUIgb2Ygc3lzdGVtIG1lbW9yeS4KKworCisgIFBlcmZvcm1hbmNlIERlZ3JhZGF0aW9uIHdpdGggSnVtYm8gRnJhbWVzCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIERlZ3JhZGF0aW9uIGluIHRocm91Z2hwdXQgcGVyZm9ybWFuY2UgbWF5IGJlIG9ic2VydmVkIGluIHNvbWUgSnVtYm8gZnJhbWVzCisgIGVudmlyb25tZW50cy4gIElmIHRoaXMgaXMgb2JzZXJ2ZWQsIGluY3JlYXNpbmcgdGhlIGFwcGxpY2F0aW9uJ3Mgc29ja2V0IGJ1ZmZlcgorICBzaXplIGFuZC9vciBpbmNyZWFzaW5nIHRoZSAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwXyptZW0gZW50cnkgdmFsdWVzIG1heSBoZWxwLgorICBTZWUgdGhlIHNwZWNpZmljIGFwcGxpY2F0aW9uIG1hbnVhbCBhbmQgL3Vzci9zcmMvbGludXgqL0RvY3VtZW50YXRpb24vCisgIG5ldHdvcmtpbmcvaXAtc3lzY3RsLnR4dCBmb3IgbW9yZSBkZXRhaWxzLgorCisKKyAgQWxsb2NhdGluZyBSeCBCdWZmZXJzIHdoZW4gVXNpbmcgSnVtYm8gRnJhbWVzCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBBbGxvY2F0aW5nIFJ4IGJ1ZmZlcnMgd2hlbiB1c2luZyBKdW1ibyBGcmFtZXMgb24gMi42Lngga2VybmVscyBtYXkgZmFpbCBpZgorICB0aGUgYXZhaWxhYmxlIG1lbW9yeSBpcyBoZWF2aWx5IGZyYWdtZW50ZWQuIFRoaXMgaXNzdWUgbWF5IGJlIHNlZW4gd2l0aCBQQ0ktWAorICBhZGFwdGVycyBvciB3aXRoIHBhY2tldCBzcGxpdCBkaXNhYmxlZC4gVGhpcyBjYW4gYmUgcmVkdWNlZCBvciBlbGltaW5hdGVkCisgIGJ5IGNoYW5naW5nIHRoZSBhbW91bnQgb2YgYXZhaWxhYmxlIG1lbW9yeSBmb3IgcmVjZWl2ZSBidWZmZXIgYWxsb2NhdGlvbiwgYnkKKyAgaW5jcmVhc2luZyAvcHJvYy9zeXMvdm0vbWluX2ZyZWVfa2J5dGVzLgorCisKKyAgTXVsdGlwbGUgSW50ZXJmYWNlcyBvbiBTYW1lIEV0aGVybmV0IEJyb2FkY2FzdCBOZXR3b3JrCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBEdWUgdG8gdGhlIGRlZmF1bHQgQVJQIGJlaGF2aW9yIG9uIExpbnV4LCBpdCBpcyBub3QgcG9zc2libGUgdG8gaGF2ZQorICBvbmUgc3lzdGVtIG9uIHR3byBJUCBuZXR3b3JrcyBpbiB0aGUgc2FtZSBFdGhlcm5ldCBicm9hZGNhc3QgZG9tYWluCisgIChub24tcGFydGl0aW9uZWQgc3dpdGNoKSBiZWhhdmUgYXMgZXhwZWN0ZWQuICBBbGwgRXRoZXJuZXQgaW50ZXJmYWNlcworICB3aWxsIHJlc3BvbmQgdG8gSVAgdHJhZmZpYyBmb3IgYW55IElQIGFkZHJlc3MgYXNzaWduZWQgdG8gdGhlIHN5c3RlbS4KKyAgVGhpcyByZXN1bHRzIGluIHVuYmFsYW5jZWQgcmVjZWl2ZSB0cmFmZmljLgorCisgIElmIHlvdSBoYXZlIG11bHRpcGxlIGludGVyZmFjZXMgaW4gYSBzZXJ2ZXIsIGRvIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nOgorCisgIC0gVHVybiBvbiBBUlAgZmlsdGVyaW5nIGJ5IGVudGVyaW5nOgorICAgICAgZWNobyAxID4gL3Byb2Mvc3lzL25ldC9pcHY0L2NvbmYvYWxsL2FycF9maWx0ZXIKKworICAtIEluc3RhbGwgdGhlIGludGVyZmFjZXMgaW4gc2VwYXJhdGUgYnJvYWRjYXN0IGRvbWFpbnMgLSBlaXRoZXIgaW4KKyAgICBkaWZmZXJlbnQgc3dpdGNoZXMgb3IgaW4gYSBzd2l0Y2ggcGFydGl0aW9uZWQgdG8gVkxBTnMuCisKKworICBVRFAgU3RyZXNzIFRlc3QgRHJvcHBlZCBQYWNrZXQgSXNzdWUKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgVW5kZXIgc21hbGwgcGFja2V0cyBVRFAgc3RyZXNzIHRlc3Qgd2l0aCAxMEdiRSBkcml2ZXIsIHRoZSBMaW51eCBzeXN0ZW0KKyAgbWF5IGRyb3AgVURQIHBhY2tldHMgZHVlIHRvIHRoZSBmdWxsbmVzcyBvZiBzb2NrZXQgYnVmZmVycy4gWW91IG1heSB3YW50CisgIHRvIGNoYW5nZSB0aGUgZHJpdmVyJ3MgRmxvdyBDb250cm9sIHZhcmlhYmxlcyB0byB0aGUgbWluaW11bSB2YWx1ZSBmb3IKKyAgY29udHJvbGxpbmcgcGFja2V0IHJlY2VwdGlvbi4KKworCisgIFR4IEhhbmdzIFBvc3NpYmxlIFVuZGVyIFN0cmVzcworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgVW5kZXIgc3RyZXNzIGNvbmRpdGlvbnMsIGlmIFRYIGhhbmdzIG9jY3VyLCB0dXJuaW5nIG9mZiBUU08KKyAgImV0aHRvb2wgLUsgZXRoMCB0c28gb2ZmIiBtYXkgcmVzb2x2ZSB0aGUgcHJvYmxlbS4KKworCitTdXBwb3J0Cis9PT09PT09CisKK0ZvciBnZW5lcmFsIGluZm9ybWF0aW9uLCBnbyB0byB0aGUgSW50ZWwgc3VwcG9ydCB3ZWJzaXRlIGF0OgorCisgICAgaHR0cDovL3N1cHBvcnQuaW50ZWwuY29tCisKK29yIHRoZSBJbnRlbCBXaXJlZCBOZXR3b3JraW5nIHByb2plY3QgaG9zdGVkIGJ5IFNvdXJjZWZvcmdlIGF0OgorCisgICAgaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9lMTAwMAorCitJZiBhbiBpc3N1ZSBpcyBpZGVudGlmaWVkIHdpdGggdGhlIHJlbGVhc2VkIHNvdXJjZSBjb2RlIG9uIHRoZSBzdXBwb3J0ZWQKK2tlcm5lbCB3aXRoIGEgc3VwcG9ydGVkIGFkYXB0ZXIsIGVtYWlsIHRoZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiByZWxhdGVkCit0byB0aGUgaXNzdWUgdG8gZTEwMDAtZGV2ZWxAbGlzdHMuc2YubmV0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXhnYmUudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2l4Z2JlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjBjYjU3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2l4Z2JlLnR4dApAQCAtMCwwICsxLDM0OSBAQAorTGludXgqIEJhc2UgRHJpdmVyIGZvciB0aGUgSW50ZWwoUikgRXRoZXJuZXQgMTAgR2lnYWJpdCBQQ0kgRXhwcmVzcyBGYW1pbHkgb2YKK0FkYXB0ZXJzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbnRlbCAxMCBHaWdhYml0IExpbnV4IGRyaXZlci4KK0NvcHlyaWdodChjKSAxOTk5IC0gMjAxMyBJbnRlbCBDb3Jwb3JhdGlvbi4KKworQ29udGVudHMKKz09PT09PT09CisKKy0gSWRlbnRpZnlpbmcgWW91ciBBZGFwdGVyCistIEFkZGl0aW9uYWwgQ29uZmlndXJhdGlvbnMKKy0gUGVyZm9ybWFuY2UgVHVuaW5nCistIEtub3duIElzc3VlcworLSBTdXBwb3J0CisKK0lkZW50aWZ5aW5nIFlvdXIgQWRhcHRlcgorPT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBkcml2ZXIgaW4gdGhpcyByZWxlYXNlIGlzIGNvbXBhdGlibGUgd2l0aCA4MjU5OCwgODI1OTkgYW5kIFg1NDAtYmFzZWQKK0ludGVsIE5ldHdvcmsgQ29ubmVjdGlvbnMuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBpZGVudGlmeSB5b3VyIGFkYXB0ZXIsIGdvIHRvIHRoZSBBZGFwdGVyICYKK0RyaXZlciBJRCBHdWlkZSBhdDoKKworICAgIGh0dHA6Ly9zdXBwb3J0LmludGVsLmNvbS9zdXBwb3J0L25ldHdvcmsvc2IvQ1MtMDEyOTA0Lmh0bQorCitTRlArIERldmljZXMgd2l0aCBQbHVnZ2FibGUgT3B0aWNzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzgyNTk5LUJBU0VEIEFEQVBURVJTCisKK05PVEVTOiBJZiB5b3VyIDgyNTk5LWJhc2VkIEludGVsKFIpIE5ldHdvcmsgQWRhcHRlciBjYW1lIHdpdGggSW50ZWwgb3B0aWNzLCBvcgoraXMgYW4gSW50ZWwoUikgRXRoZXJuZXQgU2VydmVyIEFkYXB0ZXIgWDUyMC0yLCB0aGVuIGl0IG9ubHkgc3VwcG9ydHMgSW50ZWwKK29wdGljcyBhbmQvb3IgdGhlIGRpcmVjdCBhdHRhY2ggY2FibGVzIGxpc3RlZCBiZWxvdy4KKworV2hlbiA4MjU5OS1iYXNlZCBTRlArIGRldmljZXMgYXJlIGNvbm5lY3RlZCBiYWNrIHRvIGJhY2ssIHRoZXkgc2hvdWxkIGJlIHNldCB0bwordGhlIHNhbWUgU3BlZWQgc2V0dGluZyB2aWEgZXRodG9vbC4gUmVzdWx0cyBtYXkgdmFyeSBpZiB5b3UgbWl4IHNwZWVkIHNldHRpbmdzLgorODI1OTgtYmFzZWQgYWRhcHRlcnMgc3VwcG9ydCBhbGwgcGFzc2l2ZSBkaXJlY3QgYXR0YWNoIGNhYmxlcyB0aGF0IGNvbXBseQord2l0aCBTRkYtODQzMSB2NC4xIGFuZCBTRkYtODQ3MiB2MTAuNCBzcGVjaWZpY2F0aW9ucy4gQWN0aXZlIGRpcmVjdCBhdHRhY2gKK2NhYmxlcyBhcmUgbm90IHN1cHBvcnRlZC4KKworU3VwcGxpZXIgICAgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcnQgTnVtYmVycworCitTUiBNb2R1bGVzCitJbnRlbCAgICAgICBEVUFMIFJBVEUgMUcvMTBHIFNGUCsgU1IgKGJhaWxlZCkgICAgICAgICAgICAgICAgRlRMWDg1NzFEM0JDVi1JVAorSW50ZWwgICAgICAgRFVBTCBSQVRFIDFHLzEwRyBTRlArIFNSIChiYWlsZWQpICAgICAgICAgICAgICAgIEFGQlItNzAzU0REWi1JTjEKK0ludGVsICAgICAgIERVQUwgUkFURSAxRy8xMEcgU0ZQKyBTUiAoYmFpbGVkKSAgICAgICAgICAgICAgICBBRkJSLTcwM1NEWi1JTjIKK0xSIE1vZHVsZXMKK0ludGVsICAgICAgIERVQUwgUkFURSAxRy8xMEcgU0ZQKyBMUiAoYmFpbGVkKSAgICAgICAgICAgICAgICBGVExYMTQ3MUQzQkNWLUlUCitJbnRlbCAgICAgICBEVUFMIFJBVEUgMUcvMTBHIFNGUCsgTFIgKGJhaWxlZCkgICAgICAgICAgICAgICAgQUZDVC03MDFTRERaLUlOMQorSW50ZWwgICAgICAgRFVBTCBSQVRFIDFHLzEwRyBTRlArIExSIChiYWlsZWQpICAgICAgICAgICAgICAgIEFGQ1QtNzAxU0RaLUlOMgorCitUaGUgZm9sbG93aW5nIGlzIGEgbGlzdCBvZiAzcmQgcGFydHkgU0ZQKyBtb2R1bGVzIGFuZCBkaXJlY3QgYXR0YWNoIGNhYmxlcyB0aGF0CitoYXZlIHJlY2VpdmVkIHNvbWUgdGVzdGluZy4gTm90IGFsbCBtb2R1bGVzIGFyZSBhcHBsaWNhYmxlIHRvIGFsbCBkZXZpY2VzLgorCitTdXBwbGllciAgIFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFydCBOdW1iZXJzCisKK0ZpbmlzYXIgICAgU0ZQKyBTUiBiYWlsZWQsIDEwZyBzaW5nbGUgcmF0ZSAgICAgICAgICAgICAgICAgICBGVExYODU3MUQzQkNMCitBdmFnbyAgICAgIFNGUCsgU1IgYmFpbGVkLCAxMGcgc2luZ2xlIHJhdGUgICAgICAgICAgICAgICAgICAgQUZCUi03MDBTRFoKK0ZpbmlzYXIgICAgU0ZQKyBMUiBiYWlsZWQsIDEwZyBzaW5nbGUgcmF0ZSAgICAgICAgICAgICAgICAgICBGVExYMTQ3MUQzQkNMCisKK0ZpbmlzYXIgICAgRFVBTCBSQVRFIDFHLzEwRyBTRlArIFNSIChObyBCYWlsKSAgICAgICAgICAgICAgICBGVExYODU3MUQzUUNWLUlUCitBdmFnbyAgICAgIERVQUwgUkFURSAxRy8xMEcgU0ZQKyBTUiAoTm8gQmFpbCkgICAgICAgICAgICAgICAgQUZCUi03MDNTRFotSU4xCitGaW5pc2FyICAgIERVQUwgUkFURSAxRy8xMEcgU0ZQKyBMUiAoTm8gQmFpbCkgICAgICAgICAgICAgICAgRlRMWDE0NzFEM1FDVi1JVAorQXZhZ28gICAgICBEVUFMIFJBVEUgMUcvMTBHIFNGUCsgTFIgKE5vIEJhaWwpICAgICAgICAgICAgICAgIEFGQ1QtNzAxU0RaLUlOMQorRmluaXN0YXIgICAxMDAwQkFTRS1UIFNGUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZDTEY4NTIyUDJCVEwKK0F2YWdvICAgICAgMTAwMEJBU0UtVCBTRlAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQkNVLTU3MTBSWgorCis4MjU5OS1iYXNlZCBhZGFwdGVycyBzdXBwb3J0IGFsbCBwYXNzaXZlIGFuZCBhY3RpdmUgbGltaXRpbmcgZGlyZWN0IGF0dGFjaAorY2FibGVzIHRoYXQgY29tcGx5IHdpdGggU0ZGLTg0MzEgdjQuMSBhbmQgU0ZGLTg0NzIgdjEwLjQgc3BlY2lmaWNhdGlvbnMuCisKK0xhc2VyIHR1cm5zIG9mZiBmb3IgU0ZQKyB3aGVuIGRldmljZSBpcyBkb3duCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisiaXAgbGluayBzZXQgZG93biIgdHVybnMgb2ZmIHRoZSBsYXNlciBmb3IgODI1OTktYmFzZWQgU0ZQKyBmaWJlciBhZGFwdGVycy4KKyJpcCBsaW5rIHNldCB1cCIgdHVybnMgb24gdGhlIGxhc2VyLgorCisKKzgyNTk4LUJBU0VEIEFEQVBURVJTCisKK05PVEVTIGZvciA4MjU5OC1CYXNlZCBBZGFwdGVyczoKKy0gSW50ZWwoUikgTmV0d29yayBBZGFwdGVycyB0aGF0IHN1cHBvcnQgcmVtb3ZhYmxlIG9wdGljYWwgbW9kdWxlcyBvbmx5IHN1cHBvcnQKKyAgdGhlaXIgb3JpZ2luYWwgbW9kdWxlIHR5cGUgKGkuZS4sIHRoZSBJbnRlbChSKSAxMCBHaWdhYml0IFNSIER1YWwgUG9ydAorICBFeHByZXNzIE1vZHVsZSBvbmx5IHN1cHBvcnRzIFNSIG9wdGljYWwgbW9kdWxlcykuIElmIHlvdSBwbHVnIGluIGEgZGlmZmVyZW50CisgIHR5cGUgb2YgbW9kdWxlLCB0aGUgZHJpdmVyIHdpbGwgbm90IGxvYWQuCistIEhvdCBTd2FwcGluZy9ob3QgcGx1Z2dpbmcgb3B0aWNhbCBtb2R1bGVzIGlzIG5vdCBzdXBwb3J0ZWQuCistIE9ubHkgc2luZ2xlIHNwZWVkLCAxMCBnaWdhYml0IG1vZHVsZXMgYXJlIHN1cHBvcnRlZC4KKy0gTEFOIG9uIE1vdGhlcmJvYXJkIChMT01zKSBtYXkgc3VwcG9ydCBEQSwgU1IsIG9yIExSIG1vZHVsZXMuIE90aGVyIG1vZHVsZQorICB0eXBlcyBhcmUgbm90IHN1cHBvcnRlZC4gUGxlYXNlIHNlZSB5b3VyIHN5c3RlbSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLgorCitUaGUgZm9sbG93aW5nIGlzIGEgbGlzdCBvZiAzcmQgcGFydHkgU0ZQKyBtb2R1bGVzIGFuZCBkaXJlY3QgYXR0YWNoIGNhYmxlcyB0aGF0CitoYXZlIHJlY2VpdmVkIHNvbWUgdGVzdGluZy4gTm90IGFsbCBtb2R1bGVzIGFyZSBhcHBsaWNhYmxlIHRvIGFsbCBkZXZpY2VzLgorCitTdXBwbGllciAgIFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFydCBOdW1iZXJzCisKK0ZpbmlzYXIgICAgU0ZQKyBTUiBiYWlsZWQsIDEwZyBzaW5nbGUgcmF0ZSAgICAgICAgICAgICAgICAgICBGVExYODU3MUQzQkNMCitBdmFnbyAgICAgIFNGUCsgU1IgYmFpbGVkLCAxMGcgc2luZ2xlIHJhdGUgICAgICAgICAgICAgICAgICAgQUZCUi03MDBTRFoKK0ZpbmlzYXIgICAgU0ZQKyBMUiBiYWlsZWQsIDEwZyBzaW5nbGUgcmF0ZSAgICAgICAgICAgICAgICAgICBGVExYMTQ3MUQzQkNMCisKKzgyNTk4LWJhc2VkIGFkYXB0ZXJzIHN1cHBvcnQgYWxsIHBhc3NpdmUgZGlyZWN0IGF0dGFjaCBjYWJsZXMgdGhhdCBjb21wbHkKK3dpdGggU0ZGLTg0MzEgdjQuMSBhbmQgU0ZGLTg0NzIgdjEwLjQgc3BlY2lmaWNhdGlvbnMuIEFjdGl2ZSBkaXJlY3QgYXR0YWNoCitjYWJsZXMgYXJlIG5vdCBzdXBwb3J0ZWQuCisKKworRmxvdyBDb250cm9sCistLS0tLS0tLS0tLS0KK0V0aGVybmV0IEZsb3cgQ29udHJvbCAoSUVFRSA4MDIuM3gpIGNhbiBiZSBjb25maWd1cmVkIHdpdGggZXRodG9vbCB0byBlbmFibGUKK3JlY2VpdmluZyBhbmQgdHJhbnNtaXR0aW5nIHBhdXNlIGZyYW1lcyBmb3IgaXhnYmUuIFdoZW4gVFggaXMgZW5hYmxlZCwgUEFVU0UKK2ZyYW1lcyBhcmUgZ2VuZXJhdGVkIHdoZW4gdGhlIHJlY2VpdmUgcGFja2V0IGJ1ZmZlciBjcm9zc2VzIGEgcHJlZGVmaW5lZAordGhyZXNob2xkLiAgV2hlbiByeCBpcyBlbmFibGVkLCB0aGUgdHJhbnNtaXQgdW5pdCB3aWxsIGhhbHQgZm9yIHRoZSB0aW1lIGRlbGF5CitzcGVjaWZpZWQgd2hlbiBhIFBBVVNFIGZyYW1lIGlzIHJlY2VpdmVkLgorCitGbG93IENvbnRyb2wgaXMgZW5hYmxlZCBieSBkZWZhdWx0LiBJZiB5b3Ugd2FudCB0byBkaXNhYmxlIGEgZmxvdyBjb250cm9sCitjYXBhYmxlIGxpbmsgcGFydG5lciwgdXNlIGV0aHRvb2w6CisKKyAgICAgZXRodG9vbCAtQSBldGg/IGF1dG9uZWcgb2ZmIFJYIG9mZiBUWCBvZmYKKworTk9URTogRm9yIDgyNTk4IGJhY2twbGFuZSBjYXJkcyBlbnRlcmluZyAxIGdpZyBtb2RlLCBmbG93IGNvbnRyb2wgZGVmYXVsdAorYmVoYXZpb3IgaXMgY2hhbmdlZCB0byBvZmYuICBGbG93IGNvbnRyb2wgaW4gMSBnaWcgbW9kZSBvbiB0aGVzZSBkZXZpY2VzIGNhbgorbGVhZCB0byBUeCBoYW5ncy4KKworSW50ZWwoUikgRXRoZXJuZXQgRmxvdyBEaXJlY3RvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU3VwcG9ydHMgYWR2YW5jZWQgZmlsdGVycyB0aGF0IGRpcmVjdCByZWNlaXZlIHBhY2tldHMgYnkgdGhlaXIgZmxvd3MgdG8KK2RpZmZlcmVudCBxdWV1ZXMuIEVuYWJsZXMgdGlnaHQgY29udHJvbCBvbiByb3V0aW5nIGEgZmxvdyBpbiB0aGUgcGxhdGZvcm0uCitNYXRjaGVzIGZsb3dzIGFuZCBDUFUgY29yZXMgZm9yIGZsb3cgYWZmaW5pdHkuIFN1cHBvcnRzIG11bHRpcGxlIHBhcmFtZXRlcnMKK2ZvciBmbGV4aWJsZSBmbG93IGNsYXNzaWZpY2F0aW9uIGFuZCBsb2FkIGJhbGFuY2luZy4KKworRmxvdyBkaXJlY3RvciBpcyBlbmFibGVkIG9ubHkgaWYgdGhlIGtlcm5lbCBpcyBtdWx0aXBsZSBUWCBxdWV1ZSBjYXBhYmxlLgorCitBbiBpbmNsdWRlZCBzY3JpcHQgKHNldF9pcnFfYWZmaW5pdHkuc2gpIGF1dG9tYXRlcyBzZXR0aW5nIHRoZSBJUlEgdG8gQ1BVCithZmZpbml0eS4KKworWW91IGNhbiB2ZXJpZnkgdGhhdCB0aGUgZHJpdmVyIGlzIHVzaW5nIEZsb3cgRGlyZWN0b3IgYnkgbG9va2luZyBhdCB0aGUgY291bnRlcgoraW4gZXRodG9vbDogZmRpcl9taXNzIGFuZCBmZGlyX21hdGNoLgorCitPdGhlciBldGh0b29sIENvbW1hbmRzOgorVG8gZW5hYmxlIEZsb3cgRGlyZWN0b3IKKwlldGh0b29sIC1LIGV0aFggbnR1cGxlIG9uCitUbyBhZGQgYSBmaWx0ZXIKKwlVc2UgLVUgc3dpdGNoLiBlLmcuLCBldGh0b29sIC1VIGV0aFggZmxvdy10eXBlIHRjcDQgc3JjLWlwIDEwLjAuMTI4LjIzCisgICAgICAgIGFjdGlvbiAxCitUbyBzZWUgdGhlIGxpc3Qgb2YgZmlsdGVycyBjdXJyZW50bHkgcHJlc2VudDoKKwlldGh0b29sIC11IGV0aFgKKworUGVyZmVjdCBGaWx0ZXI6IFBlcmZlY3QgZmlsdGVyIGlzIGFuIGludGVyZmFjZSB0byBsb2FkIHRoZSBmaWx0ZXIgdGFibGUgdGhhdAorZnVubmVscyBhbGwgZmxvdyBpbnRvIHF1ZXVlXzAgdW5sZXNzIGFuIGFsdGVybmF0aXZlIHF1ZXVlIGlzIHNwZWNpZmllZCB1c2luZworImFjdGlvbiIuIEluIHRoYXQgY2FzZSwgYW55IGZsb3cgdGhhdCBtYXRjaGVzIHRoZSBmaWx0ZXIgY3JpdGVyaWEgd2lsbCBiZQorZGlyZWN0ZWQgdG8gdGhlIGFwcHJvcHJpYXRlIHF1ZXVlLgorCitJZiB0aGUgcXVldWUgaXMgZGVmaW5lZCBhcyAtMSwgZmlsdGVyIHdpbGwgZHJvcCBtYXRjaGluZyBwYWNrZXRzLgorCitUbyBhY2NvdW50IGZvciBmaWx0ZXIgbWF0Y2hlcyBhbmQgbWlzc2VzLCB0aGVyZSBhcmUgdHdvIHN0YXRzIGluIGV0aHRvb2w6CitmZGlyX21hdGNoIGFuZCBmZGlyX21pc3MuIEluIGFkZGl0aW9uLCByeF9xdWV1ZV9OX3BhY2tldHMgc2hvd3MgdGhlIG51bWJlciBvZgorcGFja2V0cyBwcm9jZXNzZWQgYnkgdGhlIE50aCBxdWV1ZS4KKworTk9URTogUmVjZWl2ZSBQYWNrZXQgU3RlZXJpbmcgKFJQUykgYW5kIFJlY2VpdmUgRmxvdyBTdGVlcmluZyAoUkZTKSBhcmUgbm90Citjb21wYXRpYmxlIHdpdGggRmxvdyBEaXJlY3Rvci4gSUYgRmxvdyBEaXJlY3RvciBpcyBlbmFibGVkLCB0aGVzZSB3aWxsIGJlCitkaXNhYmxlZC4KKworVGhlIGZvbGxvd2luZyB0aHJlZSBwYXJhbWV0ZXJzIGltcGFjdCBGbG93IERpcmVjdG9yLgorCitGZGlyTW9kZQorLS0tLS0tLS0KK1ZhbGlkIFJhbmdlOiAwLTIgKDA9b2ZmLCAxPUFUUiwgMj1QZXJmZWN0IGZpbHRlciBtb2RlKQorRGVmYXVsdCBWYWx1ZTogMQorCisgIEZsb3cgRGlyZWN0b3IgZmlsdGVyaW5nIG1vZGVzLgorCitGZGlyUGJhbGxvYworLS0tLS0tLS0tLS0KK1ZhbGlkIFJhbmdlOiAwLTIgKDA9NjRrLCAxPTEyOGssIDI9MjU2aykKK0RlZmF1bHQgVmFsdWU6IDAKKworICBGbG93IERpcmVjdG9yIGFsbG9jYXRlZCBwYWNrZXQgYnVmZmVyIHNpemUuCisKK0F0clNhbXBsZVJhdGUKKy0tLS0tLS0tLS0tLS0tCitWYWxpZCBSYW5nZTogMS0xMDAKK0RlZmF1bHQgVmFsdWU6IDIwCisKKyAgU29mdHdhcmUgQVRSIFR4IHBhY2tldCBzYW1wbGUgcmF0ZS4gRm9yIGV4YW1wbGUsIHdoZW4gc2V0IHRvIDIwLCBldmVyeSAyMHRoCisgIHBhY2tldCwgbG9va3MgdG8gc2VlIGlmIHRoZSBwYWNrZXQgd2lsbCBjcmVhdGUgYSBuZXcgZmxvdy4KKworTm9kZQorLS0tLQorVmFsaWQgUmFuZ2U6ICAgMC1uCitEZWZhdWx0IFZhbHVlOiAxIChvZmYpCisKKyAgMCAtIG46IHdoZXJlIG4gaXMgdGhlIG51bWJlciBvZiBOVU1BIG5vZGVzIChpLmUuIDAgLSAzKSBjdXJyZW50bHkgb25saW5lIGluCisgIHlvdXIgc3lzdGVtCisgIDE6IHR1cm5zIHRoaXMgb3B0aW9uIG9mZgorCisgIFRoZSBOb2RlIHBhcmFtZXRlciB3aWxsIGFsbG93IHlvdSB0byBwaWNrIHdoaWNoIE5VTUEgbm9kZSB5b3Ugd2FudCB0byBoYXZlCisgIHRoZSBhZGFwdGVyIGFsbG9jYXRlIG1lbW9yeSBvbi4KKworbWF4X3ZmcworLS0tLS0tLQorVmFsaWQgUmFuZ2U6ICAgMS02MworRGVmYXVsdCBWYWx1ZTogMAorCisgIElmIHRoZSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gMCBpdCB3aWxsIGFsc28gZm9yY2UgdGhlIFZNRHEgcGFyYW1ldGVyIHRvIGJlIDEKKyAgb3IgbW9yZS4KKworICBUaGlzIHBhcmFtZXRlciBhZGRzIHN1cHBvcnQgZm9yIFNSLUlPVi4gIEl0IGNhdXNlcyB0aGUgZHJpdmVyIHRvIHNwYXduIHVwIHRvCisgIG1heF92ZnMgd29ydGggb2YgdmlydHVhbCBmdW5jdGlvbi4KKworCitBZGRpdGlvbmFsIENvbmZpZ3VyYXRpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgSnVtYm8gRnJhbWVzCisgIC0tLS0tLS0tLS0tLQorICBUaGUgZHJpdmVyIHN1cHBvcnRzIEp1bWJvIEZyYW1lcyBmb3IgYWxsIGFkYXB0ZXJzLiBKdW1ibyBGcmFtZXMgc3VwcG9ydCBpcworICBlbmFibGVkIGJ5IGNoYW5naW5nIHRoZSBNVFUgdG8gYSB2YWx1ZSBsYXJnZXIgdGhhbiB0aGUgZGVmYXVsdCBvZiAxNTAwLgorICBUaGUgbWF4aW11bSB2YWx1ZSBmb3IgdGhlIE1UVSBpcyAxNjExMC4gIFVzZSB0aGUgaXAgY29tbWFuZCB0bworICBpbmNyZWFzZSB0aGUgTVRVIHNpemUuICBGb3IgZXhhbXBsZToKKworICAgICAgICBpcCBsaW5rIHNldCBkZXYgZXRoeCBtdHUgOTAwMAorCisgIFRoZSBtYXhpbXVtIE1UVSBzZXR0aW5nIGZvciBKdW1ibyBGcmFtZXMgaXMgOTcxMC4gIFRoaXMgdmFsdWUgY29pbmNpZGVzCisgIHdpdGggdGhlIG1heGltdW0gSnVtYm8gRnJhbWVzIHNpemUgb2YgOTcyOC4KKworICBHZW5lcmljIFJlY2VpdmUgT2ZmbG9hZCwgYWthIEdSTworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBUaGUgZHJpdmVyIHN1cHBvcnRzIHRoZSBpbi1rZXJuZWwgc29mdHdhcmUgaW1wbGVtZW50YXRpb24gb2YgR1JPLiAgR1JPIGhhcworICBzaG93biB0aGF0IGJ5IGNvYWxlc2NpbmcgUnggdHJhZmZpYyBpbnRvIGxhcmdlciBjaHVua3Mgb2YgZGF0YSwgQ1BVCisgIHV0aWxpemF0aW9uIGNhbiBiZSBzaWduaWZpY2FudGx5IHJlZHVjZWQgd2hlbiB1bmRlciBsYXJnZSBSeCBsb2FkLiAgR1JPIGlzIGFuCisgIGV2b2x1dGlvbiBvZiB0aGUgcHJldmlvdXNseS11c2VkIExSTyBpbnRlcmZhY2UuICBHUk8gaXMgYWJsZSB0byBjb2FsZXNjZQorICBvdGhlciBwcm90b2NvbHMgYmVzaWRlcyBUQ1AuICBJdCdzIGFsc28gc2FmZSB0byB1c2Ugd2l0aCBjb25maWd1cmF0aW9ucyB0aGF0CisgIGFyZSBwcm9ibGVtYXRpYyBmb3IgTFJPLCBuYW1lbHkgYnJpZGdpbmcgYW5kIGlTQ1NJLgorCisgIERhdGEgQ2VudGVyIEJyaWRnaW5nLCBha2EgRENCCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIERDQiBpcyBhIGNvbmZpZ3VyYXRpb24gUXVhbGl0eSBvZiBTZXJ2aWNlIGltcGxlbWVudGF0aW9uIGluIGhhcmR3YXJlLgorICBJdCB1c2VzIHRoZSBWTEFOIHByaW9yaXR5IHRhZyAoODAyLjFwKSB0byBmaWx0ZXIgdHJhZmZpYy4gIFRoYXQgbWVhbnMKKyAgdGhhdCB0aGVyZSBhcmUgOCBkaWZmZXJlbnQgcHJpb3JpdGllcyB0aGF0IHRyYWZmaWMgY2FuIGJlIGZpbHRlcmVkIGludG8uCisgIEl0IGFsc28gZW5hYmxlcyBwcmlvcml0eSBmbG93IGNvbnRyb2wgd2hpY2ggY2FuIGxpbWl0IG9yIGVsaW1pbmF0ZSB0aGUKKyAgbnVtYmVyIG9mIGRyb3BwZWQgcGFja2V0cyBkdXJpbmcgbmV0d29yayBzdHJlc3MuICBCYW5kd2lkdGggY2FuIGJlCisgIGFsbG9jYXRlZCB0byBlYWNoIG9mIHRoZXNlIHByaW9yaXRpZXMsIHdoaWNoIGlzIGVuZm9yY2VkIGF0IHRoZSBoYXJkd2FyZQorICBsZXZlbC4KKworICBUbyBlbmFibGUgRENCIHN1cHBvcnQgaW4gaXhnYmUsIHlvdSBtdXN0IGVuYWJsZSB0aGUgRENCIG5ldGxpbmsgbGF5ZXIgdG8KKyAgYWxsb3cgdGhlIHVzZXJzcGFjZSB0b29scyAoc2VlIGJlbG93KSB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBkcml2ZXIuCisgIFRoaXMgY2FuIGJlIGZvdW5kIGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBoZXJlOgorCisgICAgICAgIC0+IE5ldHdvcmtpbmcgc3VwcG9ydAorICAgICAgICAgIC0+IE5ldHdvcmtpbmcgb3B0aW9ucworICAgICAgICAgICAgLT4gRGF0YSBDZW50ZXIgQnJpZGdpbmcgc3VwcG9ydAorCisgIE9uY2UgdGhpcyBpcyBzZWxlY3RlZCwgRENCIHN1cHBvcnQgbXVzdCBiZSBzZWxlY3RlZCBmb3IgaXhnYmUuICBUaGlzIGNhbgorICBiZSBmb3VuZCBoZXJlOgorCisgICAgICAgIC0+IERldmljZSBEcml2ZXJzCisgICAgICAgICAgLT4gTmV0d29yayBkZXZpY2Ugc3VwcG9ydCAoTkVUREVWSUNFUyBbPXldKQorICAgICAgICAgICAgLT4gRXRoZXJuZXQgKDEwMDAwIE1iaXQpIChORVRERVZfMTAwMDAgWz15XSkKKyAgICAgICAgICAgICAgLT4gSW50ZWwoUikgMTBHYkUgUENJIEV4cHJlc3MgYWRhcHRlcnMgc3VwcG9ydAorICAgICAgICAgICAgICAgIC0+IERhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpIFN1cHBvcnQKKworICBBZnRlciB0aGVzZSBvcHRpb25zIGFyZSBzZWxlY3RlZCwgeW91IG11c3QgcmVidWlsZCB5b3VyIGtlcm5lbCBhbmQgeW91cgorICBtb2R1bGVzLgorCisgIEluIG9yZGVyIHRvIHVzZSBEQ0IsIHVzZXJzcGFjZSB0b29scyBtdXN0IGJlIGRvd25sb2FkZWQgYW5kIGluc3RhbGxlZC4KKyAgVGhlIGRjYmQgdG9vbHMgY2FuIGJlIGZvdW5kIGF0OgorCisgICAgICAgIGh0dHA6Ly9lMTAwMC5zZi5uZXQKKworICBFdGh0b29sCisgIC0tLS0tLS0KKyAgVGhlIGRyaXZlciB1dGlsaXplcyB0aGUgZXRodG9vbCBpbnRlcmZhY2UgZm9yIGRyaXZlciBjb25maWd1cmF0aW9uIGFuZAorICBkaWFnbm9zdGljcywgYXMgd2VsbCBhcyBkaXNwbGF5aW5nIHN0YXRpc3RpY2FsIGluZm9ybWF0aW9uLiBUaGUgbGF0ZXN0CisgIGV0aHRvb2wgdmVyc2lvbiBpcyByZXF1aXJlZCBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LgorCisgIFRoZSBsYXRlc3QgcmVsZWFzZSBvZiBldGh0b29sIGNhbiBiZSBmb3VuZCBmcm9tCisgIGh0dHA6Ly9mdHAua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay9ldGh0b29sLworCisgIEZDb0UKKyAgLS0tLQorICBUaGlzIHJlbGVhc2Ugb2YgdGhlIGl4Z2JlIGRyaXZlciBjb250YWlucyBuZXcgY29kZSB0byBlbmFibGUgdXNlcnMgdG8gdXNlCisgIEZpYmVyIENoYW5uZWwgb3ZlciBFdGhlcm5ldCAoRkNvRSkgYW5kIERhdGEgQ2VudGVyIEJyaWRnaW5nIChEQ0IpCisgIGZ1bmN0aW9uYWxpdHkgdGhhdCBpcyBzdXBwb3J0ZWQgYnkgdGhlIDgyNTk4LWJhc2VkIGhhcmR3YXJlLiAgVGhpcyBjb2RlIGhhcworICBubyBkZWZhdWx0IGVmZmVjdCBvbiB0aGUgcmVndWxhciBkcml2ZXIgb3BlcmF0aW9uLCBhbmQgY29uZmlndXJpbmcgRENCIGFuZAorICBGQ29FIGlzIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoaXMgZHJpdmVyIFJFQURNRS4gUmVmZXIgdG8KKyAgaHR0cDovL3d3dy5vcGVuLWZjb2Uub3JnLyBmb3IgRkNvRSBwcm9qZWN0IGluZm9ybWF0aW9uIGFuZCBjb250YWN0CisgIGUxMDAwLWVlZGNAbGlzdHMuc291cmNlZm9yZ2UubmV0IGZvciBEQ0IgaW5mb3JtYXRpb24uCisKKyAgTUFDIGFuZCBWTEFOIGFudGktc3Bvb2ZpbmcgZmVhdHVyZQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFdoZW4gYSBtYWxpY2lvdXMgZHJpdmVyIGF0dGVtcHRzIHRvIHNlbmQgYSBzcG9vZmVkIHBhY2tldCwgaXQgaXMgZHJvcHBlZCBieQorICB0aGUgaGFyZHdhcmUgYW5kIG5vdCB0cmFuc21pdHRlZC4gIEFuIGludGVycnVwdCBpcyBzZW50IHRvIHRoZSBQRiBkcml2ZXIKKyAgbm90aWZ5aW5nIGl0IG9mIHRoZSBzcG9vZiBhdHRlbXB0LgorCisgIFdoZW4gYSBzcG9vZmVkIHBhY2tldCBpcyBkZXRlY3RlZCB0aGUgUEYgZHJpdmVyIHdpbGwgc2VuZCB0aGUgZm9sbG93aW5nCisgIG1lc3NhZ2UgdG8gdGhlIHN5c3RlbSBsb2cgKGRpc3BsYXllZCBieSAgdGhlICJkbWVzZyIgY29tbWFuZCk6CisKKyAgU3Bvb2YgZXZlbnQocykgZGV0ZWN0ZWQgb24gVkYgKG4pCisKKyAgV2hlcmUgbj10aGUgVkYgdGhhdCBhdHRlbXB0ZWQgdG8gZG8gdGhlIHNwb29maW5nLgorCisKK1BlcmZvcm1hbmNlIFR1bmluZworPT09PT09PT09PT09PT09PT09CisKK0FuIGV4Y2VsbGVudCBhcnRpY2xlIG9uIHBlcmZvcm1hbmNlIHR1bmluZyBjYW4gYmUgZm91bmQgYXQ6CisKK2h0dHA6Ly93d3cucmVkaGF0LmNvbS9wcm9tby9zdW1taXQvMjAwOC9kb3dubG9hZHMvcGRmL1RodXJzZGF5L01hcmtfV2FnbmVyLnBkZgorCisKK0tub3duIElzc3VlcworPT09PT09PT09PT09CisKKyAgRW5hYmxpbmcgU1ItSU9WIGluIGEgMzItYml0IG9yIDY0LWJpdCBNaWNyb3NvZnQqIFdpbmRvd3MqIFNlcnZlciAyMDA4L1IyCisgIEd1ZXN0IE9TIHVzaW5nIEludGVsIChSKSA4MjU3Ni1iYXNlZCBHYkUgb3IgSW50ZWwgKFIpIDgyNTk5LWJhc2VkIDEwR2JFCisgIGNvbnRyb2xsZXIgdW5kZXIgS1ZNCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBLVk0gSHlwZXJ2aXNvci9WTU0gc3VwcG9ydHMgZGlyZWN0IGFzc2lnbm1lbnQgb2YgYSBQQ0llIGRldmljZSB0byBhIFZNLiAgVGhpcworICBpbmNsdWRlcyB0cmFkaXRpb25hbCBQQ0llIGRldmljZXMsIGFzIHdlbGwgYXMgU1ItSU9WLWNhcGFibGUgZGV2aWNlcyB1c2luZworICBJbnRlbCA4MjU3Ni1iYXNlZCBhbmQgODI1OTktYmFzZWQgY29udHJvbGxlcnMuCisKKyAgV2hpbGUgZGlyZWN0IGFzc2lnbm1lbnQgb2YgYSBQQ0llIGRldmljZSBvciBhbiBTUi1JT1YgVmlydHVhbCBGdW5jdGlvbiAoVkYpCisgIHRvIGEgTGludXgtYmFzZWQgVk0gcnVubmluZyAyLjYuMzIgb3IgbGF0ZXIga2VybmVsIHdvcmtzIGZpbmUsIHRoZXJlIGlzIGEKKyAga25vd24gaXNzdWUgd2l0aCBNaWNyb3NvZnQgV2luZG93cyBTZXJ2ZXIgMjAwOCBWTSB0aGF0IHJlc3VsdHMgaW4gYSAieWVsbG93CisgIGJhbmciIGVycm9yLiBUaGlzIHByb2JsZW0gaXMgd2l0aGluIHRoZSBLVk0gVk1NIGl0c2VsZiwgbm90IHRoZSBJbnRlbCBkcml2ZXIsCisgIG9yIHRoZSBTUi1JT1YgbG9naWMgb2YgdGhlIFZNTSwgYnV0IHJhdGhlciB0aGF0IEtWTSBlbXVsYXRlcyBhbiBvbGRlciBDUFUKKyAgbW9kZWwgZm9yIHRoZSBndWVzdHMsIGFuZCB0aGlzIG9sZGVyIENQVSBtb2RlbCBkb2VzIG5vdCBzdXBwb3J0IE1TSS1YCisgIGludGVycnVwdHMsIHdoaWNoIGlzIGEgcmVxdWlyZW1lbnQgZm9yIEludGVsIFNSLUlPVi4KKworICBJZiB5b3Ugd2lzaCB0byB1c2UgdGhlIEludGVsIDgyNTc2IG9yIDgyNTk5LWJhc2VkIGNvbnRyb2xsZXJzIGluIFNSLUlPViBtb2RlCisgIHdpdGggS1ZNIGFuZCBhIE1pY3Jvc29mdCBXaW5kb3dzIFNlcnZlciAyMDA4IGd1ZXN0IHRyeSB0aGUgZm9sbG93aW5nCisgIHdvcmthcm91bmQuIFRoZSB3b3JrYXJvdW5kIGlzIHRvIHRlbGwgS1ZNIHRvIGVtdWxhdGUgYSBkaWZmZXJlbnQgbW9kZWwgb2YgQ1BVCisgIHdoZW4gdXNpbmcgcWVtdSB0byBjcmVhdGUgdGhlIEtWTSBndWVzdDoKKworICAgICAgICItY3B1IHFlbXU2NCxtb2RlbD0xMyIKKworCitTdXBwb3J0Cis9PT09PT09CisKK0ZvciBnZW5lcmFsIGluZm9ybWF0aW9uLCBnbyB0byB0aGUgSW50ZWwgc3VwcG9ydCB3ZWJzaXRlIGF0OgorCisgICAgaHR0cDovL3N1cHBvcnQuaW50ZWwuY29tCisKK29yIHRoZSBJbnRlbCBXaXJlZCBOZXR3b3JraW5nIHByb2plY3QgaG9zdGVkIGJ5IFNvdXJjZWZvcmdlIGF0OgorCisgICAgaHR0cDovL2UxMDAwLnNvdXJjZWZvcmdlLm5ldAorCitJZiBhbiBpc3N1ZSBpcyBpZGVudGlmaWVkIHdpdGggdGhlIHJlbGVhc2VkIHNvdXJjZSBjb2RlIG9uIHRoZSBzdXBwb3J0ZWQKK2tlcm5lbCB3aXRoIGEgc3VwcG9ydGVkIGFkYXB0ZXIsIGVtYWlsIHRoZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiByZWxhdGVkCit0byB0aGUgaXNzdWUgdG8gZTEwMDAtZGV2ZWxAbGlzdHMuc2YubmV0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXhnYmV2Zi50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXhnYmV2Zi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNkOGQyYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9peGdiZXZmLnR4dApAQCAtMCwwICsxLDUyIEBACitMaW51eCogQmFzZSBEcml2ZXIgZm9yIEludGVsKFIpIEV0aGVybmV0IE5ldHdvcmsgQ29ubmVjdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW50ZWwgR2lnYWJpdCBMaW51eCBkcml2ZXIuCitDb3B5cmlnaHQoYykgMTk5OSAtIDIwMTMgSW50ZWwgQ29ycG9yYXRpb24uCisKK0NvbnRlbnRzCis9PT09PT09PQorCistIElkZW50aWZ5aW5nIFlvdXIgQWRhcHRlcgorLSBLbm93biBJc3N1ZXMvVHJvdWJsZXNob290aW5nCistIFN1cHBvcnQKKworVGhpcyBmaWxlIGRlc2NyaWJlcyB0aGUgaXhnYmV2ZiBMaW51eCogQmFzZSBEcml2ZXIgZm9yIEludGVsIE5ldHdvcmsKK0Nvbm5lY3Rpb24uCisKK1RoZSBpeGdiZXZmIGRyaXZlciBzdXBwb3J0cyA4MjU5OS1iYXNlZCB2aXJ0dWFsIGZ1bmN0aW9uIGRldmljZXMgdGhhdCBjYW4gb25seQorYmUgYWN0aXZhdGVkIG9uIGtlcm5lbHMgd2l0aCBDT05GSUdfUENJX0lPViBlbmFibGVkLgorCitUaGUgaXhnYmV2ZiBkcml2ZXIgc3VwcG9ydHMgdmlydHVhbCBmdW5jdGlvbnMgZ2VuZXJhdGVkIGJ5IHRoZSBpeGdiZSBkcml2ZXIKK3dpdGggYSBtYXhfdmZzIHZhbHVlIG9mIDEgb3IgZ3JlYXRlci4KKworVGhlIGd1ZXN0IE9TIGxvYWRpbmcgdGhlIGl4Z2JldmYgZHJpdmVyIG11c3Qgc3VwcG9ydCBNU0ktWCBpbnRlcnJ1cHRzLgorCitWTEFOczogVGhlcmUgaXMgYSBsaW1pdCBvZiBhIHRvdGFsIG9mIDMyIHNoYXJlZCBWTEFOcyB0byAxIG9yIG1vcmUgVkZzLgorCitJZGVudGlmeWluZyBZb3VyIEFkYXB0ZXIKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gaWRlbnRpZnkgeW91ciBhZGFwdGVyLCBnbyB0byB0aGUgQWRhcHRlciAmCitEcml2ZXIgSUQgR3VpZGUgYXQ6CisKKyAgICBodHRwOi8vc3VwcG9ydC5pbnRlbC5jb20vc3VwcG9ydC9nby9uZXR3b3JrL2FkYXB0ZXIvaWRndWlkZS5odG0KKworS25vd24gSXNzdWVzL1Ryb3VibGVzaG9vdGluZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKK1N1cHBvcnQKKz09PT09PT0KKworRm9yIGdlbmVyYWwgaW5mb3JtYXRpb24sIGdvIHRvIHRoZSBJbnRlbCBzdXBwb3J0IHdlYnNpdGUgYXQ6CisKKyAgICBodHRwOi8vc3VwcG9ydC5pbnRlbC5jb20KKworb3IgdGhlIEludGVsIFdpcmVkIE5ldHdvcmtpbmcgcHJvamVjdCBob3N0ZWQgYnkgU291cmNlZm9yZ2UgYXQ6CisKKyAgICBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2UxMDAwCisKK0lmIGFuIGlzc3VlIGlzIGlkZW50aWZpZWQgd2l0aCB0aGUgcmVsZWFzZWQgc291cmNlIGNvZGUgb24gdGhlIHN1cHBvcnRlZAora2VybmVsIHdpdGggYSBzdXBwb3J0ZWQgYWRhcHRlciwgZW1haWwgdGhlIHNwZWNpZmljIGluZm9ybWF0aW9uIHJlbGF0ZWQKK3RvIHRoZSBpc3N1ZSB0byBlMTAwMC1kZXZlbEBsaXN0cy5zZi5uZXQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9sMnRwLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9sMnRwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjUwYTAwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2wydHAudHh0CkBAIC0wLDAgKzEsMzQ1IEBACitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyBob3cgdG8gdXNlIHRoZSBrZXJuZWwncyBMMlRQIGRyaXZlcnMgdG8KK3Byb3ZpZGUgTDJUUCBmdW5jdGlvbmFsaXR5LiBMMlRQIGlzIGEgcHJvdG9jb2wgdGhhdCB0dW5uZWxzIG9uZSBvcgorbW9yZSBzZXNzaW9ucyBvdmVyIGFuIElQIHR1bm5lbC4gSXQgaXMgY29tbW9ubHkgdXNlZCBmb3IgVlBOcworKEwyVFAvSVBTZWMpIGFuZCBieSBJU1BzIHRvIHR1bm5lbCBzdWJzY3JpYmVyIFBQUCBzZXNzaW9ucyBvdmVyIGFuIElQCituZXR3b3JrIGluZnJhc3RydWN0dXJlLiBXaXRoIEwyVFB2MywgaXQgaXMgYWxzbyB1c2VmdWwgYXMgYSBMYXllci0yCit0dW5uZWxpbmcgaW5mcmFzdHJ1Y3R1cmUuCisKK0ZlYXR1cmVzCis9PT09PT09PQorCitMMlRQdjIgKFBQUCBvdmVyIEwyVFAgKFVEUCB0dW5uZWxzKSkuCitMMlRQdjMgZXRoZXJuZXQgcHNldWRvd2lyZXMuCitMMlRQdjMgUFBQIHBzZXVkb3dpcmVzLgorTDJUUHYzIElQIGVuY2Fwc3VsYXRpb24uCitOZXRsaW5rIHNvY2tldHMgZm9yIEwyVFB2MyBjb25maWd1cmF0aW9uIG1hbmFnZW1lbnQuCisKK0hpc3RvcnkKKz09PT09PT0KKworVGhlIG9yaWdpbmFsIHBwcG9sMnRwIGRyaXZlciB3YXMgaW50cm9kdWNlZCBpbiAyLjYuMjMgYW5kIHByb3ZpZGVkCitMMlRQdjIgZnVuY3Rpb25hbGl0eSAocmZjMjY2MSkuIEwyVFB2MiBpcyB1c2VkIHRvIHR1bm5lbCBvbmUgb3IgbW9yZSBQUFAKK3Nlc3Npb25zIG92ZXIgYSBVRFAgdHVubmVsLgorCitMMlRQdjMgKHJmYzM5MzEpIGNoYW5nZXMgdGhlIHByb3RvY29sIHRvIGFsbG93IGRpZmZlcmVudCBmcmFtZSB0eXBlcwordG8gYmUgcGFzc2VkIG92ZXIgYW4gTDJUUCB0dW5uZWwgYnkgbW92aW5nIHRoZSBQUFAtc3BlY2lmaWMgcGFydHMgb2YKK3RoZSBwcm90b2NvbCBvdXQgb2YgdGhlIGNvcmUgTDJUUCBwYWNrZXQgaGVhZGVycy4gRWFjaCBmcmFtZSB0eXBlIGlzCitrbm93biBhcyBhIHBzZXVkb3dpcmUgdHlwZS4gRXRoZXJuZXQsIFBQUCwgSERMQywgRnJhbWUgUmVsYXkgYW5kIEFUTQorcHNldWRvd2lyZXMgZm9yIEwyVFAgYXJlIGRlZmluZWQgaW4gc2VwYXJhdGUgUkZDIHN0YW5kYXJkcy4gQW5vdGhlcgorY2hhbmdlIGZvciBMMlRQdjMgaXMgdGhhdCBpdCBjYW4gYmUgY2FycmllZCBkaXJlY3RseSBvdmVyIElQIHdpdGggbm8KK1VEUCBoZWFkZXIgKFVEUCBpcyBvcHRpb25hbCkuIEl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIHN0YXRpYwordW5tYW5hZ2VkIEwyVFB2MyB0dW5uZWxzIG1hbnVhbGx5IHdpdGhvdXQgYSBjb250cm9sIHByb3RvY29sCisodXNlcnNwYWNlIGRhZW1vbikgdG8gbWFuYWdlIHRoZW0uCisKK1RvIHN1cHBvcnQgTDJUUHYzLCB0aGUgb3JpZ2luYWwgcHBwb2wydHAgZHJpdmVyIHdhcyBzcGxpdCB1cCB0bworc2VwYXJhdGUgdGhlIEwyVFAgYW5kIFBQUCBmdW5jdGlvbmFsaXR5LiBFeGlzdGluZyBMMlRQdjIgdXNlcnNwYWNlCithcHBzIHNob3VsZCBiZSB1bmFmZmVjdGVkIGFzIHRoZSBvcmlnaW5hbCBwcHBvbDJ0cCBzb2NrZXRzIEFQSSBpcworcmV0YWluZWQuIEwyVFB2MywgaG93ZXZlciwgdXNlcyBuZXRsaW5rIHRvIG1hbmFnZSBMMlRQdjMgdHVubmVscyBhbmQKK3Nlc3Npb25zLgorCitEZXNpZ24KKz09PT09PQorCitUaGUgTDJUUCBwcm90b2NvbCBzZXBhcmF0ZXMgY29udHJvbCBhbmQgZGF0YSBmcmFtZXMuICBUaGUgTDJUUCBrZXJuZWwKK2RyaXZlcnMgaGFuZGxlIG9ubHkgTDJUUCBkYXRhIGZyYW1lczsgY29udHJvbCBmcmFtZXMgYXJlIGFsd2F5cworaGFuZGxlZCBieSB1c2Vyc3BhY2UuIEwyVFAgY29udHJvbCBmcmFtZXMgY2FycnkgbWVzc2FnZXMgYmV0d2VlbiBMMlRQCitjbGllbnRzL3NlcnZlcnMgYW5kIGFyZSB1c2VkIHRvIHNldHVwIC8gdGVhcmRvd24gdHVubmVscyBhbmQKK3Nlc3Npb25zLiBBbiBMMlRQIGNsaWVudCBvciBzZXJ2ZXIgaXMgaW1wbGVtZW50ZWQgaW4gdXNlcnNwYWNlLgorCitFYWNoIEwyVFAgdHVubmVsIGlzIGltcGxlbWVudGVkIHVzaW5nIGEgVURQIG9yIEwyVFBJUCBzb2NrZXQ7IEwyVFBJUAorcHJvdmlkZXMgTDJUUHYzIElQIGVuY2Fwc3VsYXRpb24gKG5vIFVEUCkgYW5kIGlzIGltcGxlbWVudGVkIHVzaW5nIGEKK25ldyBsMnRwaXAgc29ja2V0IGZhbWlseS4gVGhlIHR1bm5lbCBzb2NrZXQgaXMgdHlwaWNhbGx5IGNyZWF0ZWQgYnkKK3VzZXJzcGFjZSwgdGhvdWdoIGZvciB1bm1hbmFnZWQgTDJUUHYzIHR1bm5lbHMsIHRoZSBzb2NrZXQgY2FuIGFsc28gYmUKK2NyZWF0ZWQgYnkgdGhlIGtlcm5lbC4gRWFjaCBMMlRQIHNlc3Npb24gKHBzZXVkb3dpcmUpIGdldHMgYSBuZXR3b3JrCitpbnRlcmZhY2UgaW5zdGFuY2UuIEluIHRoZSBjYXNlIG9mIFBQUCwgdGhlc2UgaW50ZXJmYWNlcyBhcmUgY3JlYXRlZAoraW5kaXJlY3RseSBieSBwcHBkIHVzaW5nIGEgcHBwb2wydHAgc29ja2V0LiBJbiB0aGUgY2FzZSBvZiBldGhlcm5ldCwKK3RoZSBuZXRkZXZpY2UgaXMgY3JlYXRlZCB1cG9uIGEgbmV0bGluayByZXF1ZXN0IHRvIGNyZWF0ZSBhbiBMMlRQdjMKK2V0aGVybmV0IHBzZXVkb3dpcmUuCisKK0ZvciBQUFAsIHRoZSBQUFBvTDJUUCBkcml2ZXIsIG5ldC9sMnRwL2wydHBfcHBwLmMsIHByb3ZpZGVzIGEKK21lY2hhbmlzbSBieSB3aGljaCBQUFAgZnJhbWVzIGNhcnJpZWQgdGhyb3VnaCBhbiBMMlRQIHNlc3Npb24gYXJlCitwYXNzZWQgdGhyb3VnaCB0aGUga2VybmVsJ3MgUFBQIHN1YnN5c3RlbS4gVGhlIHN0YW5kYXJkIFBQUCBkYWVtb24sCitwcHBkLCBoYW5kbGVzIGFsbCBQUFAgaW50ZXJhY3Rpb24gd2l0aCB0aGUgcGVlci4gUFBQIG5ldHdvcmsKK2ludGVyZmFjZXMgYXJlIGNyZWF0ZWQgZm9yIGVhY2ggbG9jYWwgUFBQIGVuZHBvaW50LiBUaGUga2VybmVsJ3MgUFBQCitzdWJzeXN0ZW0gYXJyYW5nZXMgZm9yIFBQUCBjb250cm9sIGZyYW1lcyB0byBiZSBkZWxpdmVyZWQgdG8gcHBwZCwKK3doaWxlIGRhdGEgZnJhbWVzIGFyZSBmb3J3YXJkZWQgYXMgdXN1YWwuCisKK0ZvciBldGhlcm5ldCwgdGhlIEwyVFBFVEggZHJpdmVyLCBuZXQvbDJ0cC9sMnRwX2V0aC5jLCBpbXBsZW1lbnRzIGEKK25ldGRldmljZSBkcml2ZXIsIG1hbmFnaW5nIHZpcnR1YWwgZXRoZXJuZXQgZGV2aWNlcywgb25lIHBlcgorcHNldWRvd2lyZS4gVGhlc2UgaW50ZXJmYWNlcyBjYW4gYmUgbWFuYWdlZCB1c2luZyBzdGFuZGFyZCBMaW51eCB0b29scworc3VjaCBhcyAiaXAiIGFuZCAiaWZjb25maWciLiBJZiBvbmx5IElQIGZyYW1lcyBhcmUgcGFzc2VkIG92ZXIgdGhlCit0dW5uZWwsIHRoZSBpbnRlcmZhY2UgY2FuIGJlIGdpdmVuIGFuIElQIGFkZHJlc3NlcyBvZiBpdHNlbGYgYW5kIGl0cworcGVlci4gSWYgbm9uLUlQIGZyYW1lcyBhcmUgdG8gYmUgcGFzc2VkIG92ZXIgdGhlIHR1bm5lbCwgdGhlIGludGVyZmFjZQorY2FuIGJlIGFkZGVkIHRvIGEgYnJpZGdlIHVzaW5nIGJyY3RsLiBBbGwgTDJUUCBkYXRhcGF0aCBwcm90b2NvbAorZnVuY3Rpb25zIGFyZSBoYW5kbGVkIGJ5IHRoZSBMMlRQIGNvcmUgZHJpdmVyLgorCitFYWNoIHR1bm5lbCBhbmQgc2Vzc2lvbiB3aXRoaW4gYSB0dW5uZWwgaXMgYXNzaWduZWQgYSB1bmlxdWUgdHVubmVsX2lkCithbmQgc2Vzc2lvbl9pZC4gVGhlc2UgaWRzIGFyZSBjYXJyaWVkIGluIHRoZSBMMlRQIGhlYWRlciBvZiBldmVyeQorY29udHJvbCBhbmQgZGF0YSBwYWNrZXQuIChBY3R1YWxseSwgaW4gTDJUUHYzLCB0aGUgdHVubmVsX2lkIGlzbid0CitwcmVzZW50IGluIGRhdGEgZnJhbWVzIC0gaXQgaXMgaW5mZXJyZWQgZnJvbSB0aGUgSVAgY29ubmVjdGlvbiBvbgord2hpY2ggdGhlIHBhY2tldCB3YXMgcmVjZWl2ZWQuKSBUaGUgTDJUUCBkcml2ZXIgdXNlcyB0aGUgaWRzIHRvIGxvb2t1cAoraW50ZXJuYWwgdHVubmVsIGFuZC9vciBzZXNzaW9uIGNvbnRleHRzIHRvIGRldGVybWluZSBob3cgdG8gaGFuZGxlIHRoZQorcGFja2V0LiBaZXJvIHR1bm5lbCAvIHNlc3Npb24gaWRzIGFyZSB0cmVhdGVkIHNwZWNpYWxseSAtIHplcm8gaWRzIGFyZQorbmV2ZXIgYXNzaWduZWQgdG8gdHVubmVscyBvciBzZXNzaW9ucyBpbiB0aGUgbmV0d29yay4gSW4gdGhlIGRyaXZlciwKK3RoZSB0dW5uZWwgY29udGV4dCBrZWVwcyBhIHJlZmVyZW5jZSB0byB0aGUgdHVubmVsIFVEUCBvciBMMlRQSVAKK3NvY2tldC4gVGhlIHNlc3Npb24gY29udGV4dCBob2xkcyBkYXRhIHRoYXQgbGV0cyB0aGUgZHJpdmVyIGludGVyZmFjZQordG8gdGhlIGtlcm5lbCdzIG5ldHdvcmsgZnJhbWUgdHlwZSBzdWJzeXN0ZW1zLCBpLmUuIFBQUCwgZXRoZXJuZXQuCisKK1VzZXJzcGFjZSBQcm9ncmFtbWluZworPT09PT09PT09PT09PT09PT09PT09CisKK0ZvciBMMlRQdjIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXF1aXJlbWVudHMgb24gdGhlIHVzZXJzcGFjZSBMMlRQCitkYWVtb24gaW4gb3JkZXIgdG8gdXNlIHRoZSBwcHBvbDJ0cCBkcml2ZXIuCisKKzEuIFVzZSBhIFVEUCBzb2NrZXQgcGVyIHR1bm5lbC4KKworMi4gQ3JlYXRlIGEgc2luZ2xlIFBQUG9MMlRQIHNvY2tldCBwZXIgdHVubmVsIGJvdW5kIHRvIGEgc3BlY2lhbCBudWxsCisgICBzZXNzaW9uIGlkLiBUaGlzIGlzIHVzZWQgb25seSBmb3IgY29tbXVuaWNhdGluZyB3aXRoIHRoZSBkcml2ZXIgYnV0CisgICBtdXN0IHJlbWFpbiBvcGVuIHdoaWxlIHRoZSB0dW5uZWwgaXMgYWN0aXZlLiBPcGVuaW5nIHRoaXMgdHVubmVsCisgICBtYW5hZ2VtZW50IHNvY2tldCBjYXVzZXMgdGhlIGRyaXZlciB0byBtYXJrIHRoZSB0dW5uZWwgc29ja2V0IGFzIGFuCisgICBMMlRQIFVEUCBlbmNhcHN1bGF0aW9uIHNvY2tldCBhbmQgZmxhZ3MgaXQgZm9yIHVzZSBieSB0aGUKKyAgIHJlZmVyZW5jZWQgdHVubmVsIGlkLiBUaGlzIGhvb2tzIHVwIHRoZSBVRFAgcmVjZWl2ZSBwYXRoIHZpYQorICAgdWRwX2VuY2FwX3JjdigpIGluIG5ldC9pcHY0L3VkcC5jLiBQUFAgZGF0YSBmcmFtZXMgYXJlIG5ldmVyIHBhc3NlZAorICAgaW4gdGhpcyBzcGVjaWFsIFBQUG9YIHNvY2tldC4KKworMy4gQ3JlYXRlIGEgUFBQb0wyVFAgc29ja2V0IHBlciBMMlRQIHNlc3Npb24uIFRoaXMgaXMgdHlwaWNhbGx5IGRvbmUKKyAgIGJ5IHN0YXJ0aW5nIHBwcGQgd2l0aCB0aGUgcHBwb2wydHAgcGx1Z2luIGFuZCBhcHByb3ByaWF0ZQorICAgYXJndW1lbnRzLiBBIFBQUG9MMlRQIHR1bm5lbCBtYW5hZ2VtZW50IHNvY2tldCAoU3RlcCAyKSBtdXN0IGJlCisgICBjcmVhdGVkIGJlZm9yZSB0aGUgZmlyc3QgUFBQb0wyVFAgc2Vzc2lvbiBzb2NrZXQgaXMgY3JlYXRlZC4KKworV2hlbiBjcmVhdGluZyBQUFBvTDJUUCBzb2NrZXRzLCB0aGUgYXBwbGljYXRpb24gcHJvdmlkZXMgaW5mb3JtYXRpb24KK3RvIHRoZSBkcml2ZXIgYWJvdXQgdGhlIHNvY2tldCBpbiBhIHNvY2tldCBjb25uZWN0KCkgY2FsbC4gU291cmNlIGFuZAorZGVzdGluYXRpb24gdHVubmVsIGFuZCBzZXNzaW9uIGlkcyBhcmUgcHJvdmlkZWQsIGFzIHdlbGwgYXMgdGhlIGZpbGUKK2Rlc2NyaXB0b3Igb2YgYSBVRFAgc29ja2V0LiBTZWUgc3RydWN0IHBwcG9sMnRwX2FkZHIgaW4KK2luY2x1ZGUvbGludXgvaWZfcHBwb2wydHAuaC4gTm90ZSB0aGF0IHplcm8gdHVubmVsIC8gc2Vzc2lvbiBpZHMgYXJlCit0cmVhdGVkIHNwZWNpYWxseS4gV2hlbiBjcmVhdGluZyB0aGUgcGVyLXR1bm5lbCBQUFBvTDJUUCBtYW5hZ2VtZW50Citzb2NrZXQgaW4gU3RlcCAyIGFib3ZlLCB6ZXJvIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gc2Vzc2lvbiBpZHMgYXJlCitzcGVjaWZpZWQsIHdoaWNoIHRlbGxzIHRoZSBkcml2ZXIgdG8gcHJlcGFyZSB0aGUgc3VwcGxpZWQgVURQIGZpbGUKK2Rlc2NyaXB0b3IgZm9yIHVzZSBhcyBhbiBMMlRQIHR1bm5lbCBzb2NrZXQuCisKK1VzZXJzcGFjZSBtYXkgY29udHJvbCBiZWhhdmlvciBvZiB0aGUgdHVubmVsIG9yIHNlc3Npb24gdXNpbmcKK3NldHNvY2tvcHQgYW5kIGlvY3RsIG9uIHRoZSBQUFBvWCBzb2NrZXQuIFRoZSBmb2xsb3dpbmcgc29ja2V0CitvcHRpb25zIGFyZSBzdXBwb3J0ZWQ6LQorCitERUJVRyAgICAgLSBiaXRtYXNrIG9mIGRlYnVnIG1lc3NhZ2UgY2F0ZWdvcmllcy4gU2VlIGJlbG93LgorU0VORFNFUSAgIC0gMCA9PiBkb24ndCBzZW5kIHBhY2tldHMgd2l0aCBzZXF1ZW5jZSBudW1iZXJzCisgICAgICAgICAgICAxID0+IHNlbmQgcGFja2V0cyB3aXRoIHNlcXVlbmNlIG51bWJlcnMKK1JFQ1ZTRVEgICAtIDAgPT4gcmVjZWl2ZSBwYWNrZXQgc2VxdWVuY2UgbnVtYmVycyBhcmUgb3B0aW9uYWwKKyAgICAgICAgICAgIDEgPT4gZHJvcCByZWNlaXZlIHBhY2tldHMgd2l0aG91dCBzZXF1ZW5jZSBudW1iZXJzCitMTlNNT0RFICAgLSAwID0+IGFjdCBhcyBMQUMuCisgICAgICAgICAgICAxID0+IGFjdCBhcyBMTlMuCitSRU9SREVSVE8gLSByZW9yZGVyIHRpbWVvdXQgKGluIG1pbGxpc2VjcykuIElmIDAsIGRvbid0IHRyeSB0byByZW9yZGVyLgorCitPbmx5IHRoZSBERUJVRyBvcHRpb24gaXMgc3VwcG9ydGVkIGJ5IHRoZSBzcGVjaWFsIHR1bm5lbCBtYW5hZ2VtZW50CitQUFBvWCBzb2NrZXQuCisKK0luIGFkZGl0aW9uIHRvIHRoZSBzdGFuZGFyZCBQUFAgaW9jdGxzLCBhIFBQUElPQ0dMMlRQU1RBVFMgaXMgcHJvdmlkZWQKK3RvIHJldHJpZXZlIHR1bm5lbCBhbmQgc2Vzc2lvbiBzdGF0aXN0aWNzIGZyb20gdGhlIGtlcm5lbCB1c2luZyB0aGUKK1BQUG9YIHNvY2tldCBvZiB0aGUgYXBwcm9wcmlhdGUgdHVubmVsIG9yIHNlc3Npb24uCisKK0ZvciBMMlRQdjMsIHVzZXJzcGFjZSBtdXN0IHVzZSB0aGUgbmV0bGluayBBUEkgZGVmaW5lZCBpbgoraW5jbHVkZS9saW51eC9sMnRwLmggdG8gbWFuYWdlIHR1bm5lbCBhbmQgc2Vzc2lvbiBjb250ZXh0cy4gVGhlCitnZW5lcmFsIHByb2NlZHVyZSB0byBjcmVhdGUgYSBuZXcgTDJUUCB0dW5uZWwgd2l0aCBvbmUgc2Vzc2lvbiBpczotCisKKzEuIE9wZW4gYSBHRU5MIHNvY2tldCB1c2luZyBMMlRQX0dFTkxfTkFNRSBmb3IgY29uZmlndXJpbmcgdGhlIGtlcm5lbAorICAgdXNpbmcgbmV0bGluay4KKworMi4gQ3JlYXRlIGEgVURQIG9yIEwyVFBJUCBzb2NrZXQgZm9yIHRoZSB0dW5uZWwuCisKKzMuIENyZWF0ZSBhIG5ldyBMMlRQIHR1bm5lbCB1c2luZyBhIEwyVFBfQ01EX1RVTk5FTF9DUkVBVEUKKyAgIHJlcXVlc3QuIFNldCBhdHRyaWJ1dGVzIGFjY29yZGluZyB0byBkZXNpcmVkIHR1bm5lbCBwYXJhbWV0ZXJzLAorICAgcmVmZXJlbmNpbmcgdGhlIFVEUCBvciBMMlRQSVAgc29ja2V0IGNyZWF0ZWQgaW4gdGhlIHByZXZpb3VzIHN0ZXAuCisKKzQuIENyZWF0ZSBhIG5ldyBMMlRQIHNlc3Npb24gaW4gdGhlIHR1bm5lbCB1c2luZyBhCisgICBMMlRQX0NNRF9TRVNTSU9OX0NSRUFURSByZXF1ZXN0LgorCitUaGUgdHVubmVsIGFuZCBhbGwgb2YgaXRzIHNlc3Npb25zIGFyZSBjbG9zZWQgd2hlbiB0aGUgdHVubmVsIHNvY2tldAoraXMgY2xvc2VkLiBUaGUgbmV0bGluayBBUEkgbWF5IGFsc28gYmUgdXNlZCB0byBkZWxldGUgc2Vzc2lvbnMgYW5kCit0dW5uZWxzLiBDb25maWd1cmF0aW9uIGFuZCBzdGF0dXMgaW5mbyBtYXkgYmUgc2V0IG9yIHJlYWQgdXNpbmcgbmV0bGluay4KKworVGhlIEwyVFAgZHJpdmVyIGFsc28gc3VwcG9ydHMgc3RhdGljICh1bm1hbmFnZWQpIEwyVFB2MyB0dW5uZWxzLiBUaGVzZQorYXJlIHdoZXJlIHRoZXJlIGlzIG5vIEwyVFAgY29udHJvbCBtZXNzYWdlIGV4Y2hhbmdlIHdpdGggdGhlIHBlZXIgdG8KK3NldHVwIHRoZSB0dW5uZWw7IHRoZSB0dW5uZWwgaXMgY29uZmlndXJlZCBtYW51YWxseSBhdCBlYWNoIGVuZCBvZiB0aGUKK3R1bm5lbC4gVGhlcmUgaXMgbm8gbmVlZCBmb3IgYW4gTDJUUCB1c2Vyc3BhY2UgYXBwbGljYXRpb24gaW4gdGhpcworY2FzZSAtLSB0aGUgdHVubmVsIHNvY2tldCBpcyBjcmVhdGVkIGJ5IHRoZSBrZXJuZWwgYW5kIGNvbmZpZ3VyZWQKK3VzaW5nIHBhcmFtZXRlcnMgc2VudCBpbiB0aGUgTDJUUF9DTURfVFVOTkVMX0NSRUFURSBuZXRsaW5rCityZXF1ZXN0LiBUaGUgImlwIiB1dGlsaXR5IG9mIGlwcm91dGUyIGhhcyBjb21tYW5kcyBmb3IgbWFuYWdpbmcgc3RhdGljCitMMlRQdjMgdHVubmVsczsgZG8gImlwIGwydHAgaGVscCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKK0RlYnVnZ2luZworPT09PT09PT09CisKK1RoZSBkcml2ZXIgc3VwcG9ydHMgYSBmbGV4aWJsZSBkZWJ1ZyBzY2hlbWUgd2hlcmUga2VybmVsIHRyYWNlCittZXNzYWdlcyBtYXkgYmUgb3B0aW9uYWxseSBlbmFibGVkIHBlciB0dW5uZWwgYW5kIHBlciBzZXNzaW9uLiBDYXJlIGlzCituZWVkZWQgd2hlbiBkZWJ1Z2dpbmcgYSBsaXZlIHN5c3RlbSBzaW5jZSB0aGUgbWVzc2FnZXMgYXJlIG5vdAorcmF0ZS1saW1pdGVkIGFuZCBhIGJ1c3kgc3lzdGVtIGNvdWxkIGJlIHN3YW1wZWQuIFVzZXJzcGFjZSB1c2VzCitzZXRzb2Nrb3B0IG9uIHRoZSBQUFBvWCBzb2NrZXQgdG8gc2V0IGEgZGVidWcgbWFzay4KKworVGhlIGZvbGxvd2luZyBkZWJ1ZyBtYXNrIGJpdHMgYXJlIGF2YWlsYWJsZToKKworUFBQT0wyVFBfTVNHX0RFQlVHICAgIHZlcmJvc2UgZGVidWcgKGlmIGNvbXBpbGVkIGluKQorUFBQT0wyVFBfTVNHX0NPTlRST0wgIHVzZXJzcGFjZSAtIGtlcm5lbCBpbnRlcmZhY2UKK1BQUE9MMlRQX01TR19TRVEgICAgICBzZXF1ZW5jZSBudW1iZXJzIGhhbmRsaW5nCitQUFBPTDJUUF9NU0dfREFUQSAgICAgZGF0YSBwYWNrZXRzCisKK0lmIGVuYWJsZWQsIGZpbGVzIHVuZGVyIGEgbDJ0cCBkZWJ1Z2ZzIGRpcmVjdG9yeSBjYW4gYmUgdXNlZCB0byBkdW1wCitrZXJuZWwgc3RhdGUgYWJvdXQgTDJUUCB0dW5uZWxzIGFuZCBzZXNzaW9ucy4gVG8gYWNjZXNzIGl0LCB0aGUKK2RlYnVnZnMgZmlsZXN5c3RlbSBtdXN0IGZpcnN0IGJlIG1vdW50ZWQuCisKKyMgbW91bnQgLXQgZGVidWdmcyBkZWJ1Z2ZzIC9kZWJ1ZworCitGaWxlcyB1bmRlciB0aGUgbDJ0cCBkaXJlY3RvcnkgY2FuIHRoZW4gYmUgYWNjZXNzZWQuCisKKyMgY2F0IC9kZWJ1Zy9sMnRwL3R1bm5lbHMKKworVGhlIGRlYnVnZnMgZmlsZXMgc2hvdWxkIG5vdCBiZSB1c2VkIGJ5IGFwcGxpY2F0aW9ucyB0byBvYnRhaW4gTDJUUAorc3RhdGUgaW5mb3JtYXRpb24gYmVjYXVzZSB0aGUgZmlsZSBmb3JtYXQgaXMgc3ViamVjdCB0byBjaGFuZ2UuIEl0IGlzCitpbXBsZW1lbnRlZCB0byBwcm92aWRlIGV4dHJhIGRlYnVnIGluZm9ybWF0aW9uIHRvIGhlbHAgZGlhZ25vc2UKK3Byb2JsZW1zLikgVXNlcnMgc2hvdWxkIHVzZSB0aGUgbmV0bGluayBBUEkuCisKKy9wcm9jL25ldC9wcHBvbDJ0cCBpcyBhbHNvIHByb3ZpZGVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoCit0aGUgb3JpZ2luYWwgcHBwb2wydHAgZHJpdmVyLiBJdCBsaXN0cyBpbmZvcm1hdGlvbiBhYm91dCBMMlRQdjIKK3R1bm5lbHMgYW5kIHNlc3Npb25zIG9ubHkuIEl0cyB1c2UgaXMgZGlzY291cmFnZWQuCisKK1VubWFuYWdlZCBMMlRQdjMgVHVubmVscworPT09PT09PT09PT09PT09PT09PT09PT09CisKK1NvbWUgY29tbWVyY2lhbCBMMlRQIHByb2R1Y3RzIHN1cHBvcnQgdW5tYW5hZ2VkIEwyVFB2MyBldGhlcm5ldAordHVubmVscywgd2hlcmUgdGhlcmUgaXMgbm8gTDJUUCBjb250cm9sIHByb3RvY29sOyB0dW5uZWxzIGFyZQorY29uZmlndXJlZCBhdCBlYWNoIHNpZGUgbWFudWFsbHkuIE5ldyBjb21tYW5kcyBhcmUgYXZhaWxhYmxlIGluCitpcHJvdXRlMidzIGlwIHV0aWxpdHkgdG8gc3VwcG9ydCB0aGlzLgorCitUbyBjcmVhdGUgYW4gTDJUUHYzIGV0aGVybmV0IHBzZXVkb3dpcmUgYmV0d2VlbiBsb2NhbCBob3N0IDE5Mi4xNjguMS4xCithbmQgcGVlciAxOTIuMTY4LjEuMiwgdXNpbmcgSVAgYWRkcmVzc2VzIDEwLjUuMS4xIGFuZCAxMC41LjEuMiBmb3IgdGhlCit0dW5uZWwgZW5kcG9pbnRzOi0KKworIyBpcCBsMnRwIGFkZCB0dW5uZWwgdHVubmVsX2lkIDEgcGVlcl90dW5uZWxfaWQgMSB1ZHBfc3BvcnQgNTAwMCBcCisgIHVkcF9kcG9ydCA1MDAwIGVuY2FwIHVkcCBsb2NhbCAxOTIuMTY4LjEuMSByZW1vdGUgMTkyLjE2OC4xLjIKKyMgaXAgbDJ0cCBhZGQgc2Vzc2lvbiB0dW5uZWxfaWQgMSBzZXNzaW9uX2lkIDEgcGVlcl9zZXNzaW9uX2lkIDEKKyMgaXAgLXMgLWQgc2hvdyBkZXYgbDJ0cGV0aDAKKyMgaXAgYWRkciBhZGQgMTAuNS4xLjIvMzIgcGVlciAxMC41LjEuMS8zMiBkZXYgbDJ0cGV0aDAKKyMgaXAgbGkgc2V0IGRldiBsMnRwZXRoMCB1cAorCitDaG9vc2UgSVAgYWRkcmVzc2VzIHRvIGJlIHRoZSBhZGRyZXNzIG9mIGEgbG9jYWwgSVAgaW50ZXJmYWNlIGFuZCB0aGF0CitvZiB0aGUgcmVtb3RlIHN5c3RlbS4gVGhlIElQIGFkZHJlc3NlcyBvZiB0aGUgbDJ0cGV0aDAgaW50ZXJmYWNlIGNhbiBiZQorYW55dGhpbmcgc3VpdGFibGUuCisKK1JlcGVhdCB0aGUgYWJvdmUgYXQgdGhlIHBlZXIsIHdpdGggcG9ydHMsIHR1bm5lbC9zZXNzaW9uIGlkcyBhbmQgSVAKK2FkZHJlc3NlcyByZXZlcnNlZC4gIFRoZSB0dW5uZWwgYW5kIHNlc3Npb24gSURzIGNhbiBiZSBhbnkgbm9uLXplcm8KKzMyLWJpdCBudW1iZXIsIGJ1dCB0aGUgdmFsdWVzIG11c3QgYmUgcmV2ZXJzZWQgYXQgdGhlIHBlZXIuCisKK0hvc3QgMSAgICAgICAgICAgICAgICAgICAgICAgICBIb3N0MgordWRwX3Nwb3J0PTUwMDAgICAgICAgICAgICAgICAgIHVkcF9zcG9ydD01MDAxCit1ZHBfZHBvcnQ9NTAwMSAgICAgICAgICAgICAgICAgdWRwX2Rwb3J0PTUwMDAKK3R1bm5lbF9pZD00MiAgICAgICAgICAgICAgICAgICB0dW5uZWxfaWQ9NDUKK3BlZXJfdHVubmVsX2lkPTQ1ICAgICAgICAgICAgICBwZWVyX3R1bm5lbF9pZD00Mgorc2Vzc2lvbl9pZD0xMjggICAgICAgICAgICAgICAgIHNlc3Npb25faWQ9NTE5Njc1NQorcGVlcl9zZXNzaW9uX2lkPTUxOTY3NTUgICAgICAgIHBlZXJfc2Vzc2lvbl9pZD0xMjgKKworV2hlbiBkb25lIGF0IGJvdGggZW5kcyBvZiB0aGUgdHVubmVsLCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gc2VuZAorZGF0YSBvdmVyIHRoZSBuZXR3b3JrLiBlLmcuCisKKyMgcGluZyAxMC41LjEuMQorCisKK1NhbXBsZSBVc2Vyc3BhY2UgQ29kZQorPT09PT09PT09PT09PT09PT09PT09CisKKzEuIENyZWF0ZSB0dW5uZWwgbWFuYWdlbWVudCBQUFBvWCBzb2NrZXQKKworICAgICAgICBrZXJuZWxfZmQgPSBzb2NrZXQoQUZfUFBQT1gsIFNPQ0tfREdSQU0sIFBYX1BST1RPX09MMlRQKTsKKyAgICAgICAgaWYgKGtlcm5lbF9mZCA+PSAwKSB7CisgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyX3BwcG9sMnRwIHNheDsKKyAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gY29uc3QgKnBlZXJfYWRkcjsKKworICAgICAgICAgICAgICAgIHBlZXJfYWRkciA9IGwydHBfdHVubmVsX2dldF9wZWVyX2FkZHIodHVubmVsKTsKKyAgICAgICAgICAgICAgICBtZW1zZXQoJnNheCwgMCwgc2l6ZW9mKHNheCkpOworICAgICAgICAgICAgICAgIHNheC5zYV9mYW1pbHkgPSBBRl9QUFBPWDsKKyAgICAgICAgICAgICAgICBzYXguc2FfcHJvdG9jb2wgPSBQWF9QUk9UT19PTDJUUDsKKyAgICAgICAgICAgICAgICBzYXgucHBwb2wydHAuZmQgPSB1ZHBfZmQ7ICAgICAgIC8qIGZkIG9mIHR1bm5lbCBVRFAgc29ja2V0ICovCisgICAgICAgICAgICAgICAgc2F4LnBwcG9sMnRwLmFkZHIuc2luX2FkZHIuc19hZGRyID0gcGVlcl9hZGRyLT5zaW5fYWRkci5zX2FkZHI7CisgICAgICAgICAgICAgICAgc2F4LnBwcG9sMnRwLmFkZHIuc2luX3BvcnQgPSBwZWVyX2FkZHItPnNpbl9wb3J0OworICAgICAgICAgICAgICAgIHNheC5wcHBvbDJ0cC5hZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOworICAgICAgICAgICAgICAgIHNheC5wcHBvbDJ0cC5zX3R1bm5lbCA9IHR1bm5lbF9pZDsKKyAgICAgICAgICAgICAgICBzYXgucHBwb2wydHAuc19zZXNzaW9uID0gMDsgICAgIC8qIHNwZWNpYWwgY2FzZTogbWdtdCBzb2NrZXQgKi8KKyAgICAgICAgICAgICAgICBzYXgucHBwb2wydHAuZF90dW5uZWwgPSAwOworICAgICAgICAgICAgICAgIHNheC5wcHBvbDJ0cC5kX3Nlc3Npb24gPSAwOyAgICAgLyogc3BlY2lhbCBjYXNlOiBtZ210IHNvY2tldCAqLworCisgICAgICAgICAgICAgICAgaWYoY29ubmVjdChrZXJuZWxfZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2F4LCBzaXplb2Yoc2F4KSApIDwgMCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcnJvcigiY29ubmVjdCBmYWlsZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IC1lcnJubzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisyLiBDcmVhdGUgc2Vzc2lvbiBQUFBvWCBkYXRhIHNvY2tldAorCisgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9wcHBvbDJ0cCBzYXg7CisgICAgICAgIGludCBmZDsKKworICAgICAgICAvKiBOb3RlLCB0aGUgdGFyZ2V0IHNvY2tldCBtdXN0IGJlIGJvdW5kIGFscmVhZHksIGVsc2UgaXQgd2lsbCBub3QgYmUgcmVhZHkgKi8KKyAgICAgICAgc2F4LnNhX2ZhbWlseSA9IEFGX1BQUE9YOworICAgICAgICBzYXguc2FfcHJvdG9jb2wgPSBQWF9QUk9UT19PTDJUUDsKKyAgICAgICAgc2F4LnBwcG9sMnRwLmZkID0gdHVubmVsX2ZkOworICAgICAgICBzYXgucHBwb2wydHAuYWRkci5zaW5fYWRkci5zX2FkZHIgPSBhZGRyLT5zaW5fYWRkci5zX2FkZHI7CisgICAgICAgIHNheC5wcHBvbDJ0cC5hZGRyLnNpbl9wb3J0ID0gYWRkci0+c2luX3BvcnQ7CisgICAgICAgIHNheC5wcHBvbDJ0cC5hZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOworICAgICAgICBzYXgucHBwb2wydHAuc190dW5uZWwgID0gdHVubmVsX2lkOworICAgICAgICBzYXgucHBwb2wydHAuc19zZXNzaW9uID0gc2Vzc2lvbl9pZDsKKyAgICAgICAgc2F4LnBwcG9sMnRwLmRfdHVubmVsICA9IHBlZXJfdHVubmVsX2lkOworICAgICAgICBzYXgucHBwb2wydHAuZF9zZXNzaW9uID0gcGVlcl9zZXNzaW9uX2lkOworCisgICAgICAgIC8qIHNlc3Npb25fZmQgaXMgdGhlIGZkIG9mIHRoZSBzZXNzaW9uJ3MgUFBQb0wyVFAgc29ja2V0LgorICAgICAgICAgKiB0dW5uZWxfZmQgaXMgdGhlIGZkIG9mIHRoZSB0dW5uZWwgVURQIHNvY2tldC4KKyAgICAgICAgICovCisgICAgICAgIGZkID0gY29ubmVjdChzZXNzaW9uX2ZkLCAoc3RydWN0IHNvY2thZGRyICopJnNheCwgc2l6ZW9mKHNheCkpOworICAgICAgICBpZiAoZmQgPCAwICkgICAgeworICAgICAgICAgICAgICAgIHJldHVybiAtZXJybm87CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisKK0ludGVybmFsIEltcGxlbWVudGF0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZHJpdmVyIGtlZXBzIGEgc3RydWN0IGwydHBfdHVubmVsIGNvbnRleHQgcGVyIEwyVFAgdHVubmVsIGFuZCBhCitzdHJ1Y3QgbDJ0cF9zZXNzaW9uIGNvbnRleHQgZm9yIGVhY2ggc2Vzc2lvbi4gVGhlIGwydHBfdHVubmVsIGlzCithbHdheXMgYXNzb2NpYXRlZCB3aXRoIGEgVURQIG9yIEwyVFAvSVAgc29ja2V0IGFuZCBrZWVwcyBhIGxpc3Qgb2YKK3Nlc3Npb25zIGluIHRoZSB0dW5uZWwuIFRoZSBsMnRwX3Nlc3Npb24gY29udGV4dCBrZWVwcyBrZXJuZWwgc3RhdGUKK2Fib3V0IHRoZSBzZXNzaW9uLiBJdCBoYXMgcHJpdmF0ZSBkYXRhIHdoaWNoIGlzIHVzZWQgZm9yIGRhdGEgc3BlY2lmaWMKK3RvIHRoZSBzZXNzaW9uIHR5cGUuIFdpdGggTDJUUHYyLCB0aGUgc2Vzc2lvbiBhbHdheXMgY2FycmllZCBQUFAKK3RyYWZmaWMuIFdpdGggTDJUUHYzLCB0aGUgc2Vzc2lvbiBjYW4gYWxzbyBjYXJyeSBldGhlcm5ldCBmcmFtZXMKKyhldGhlcm5ldCBwc2V1ZG93aXJlKSBvciBvdGhlciBkYXRhIHR5cGVzIHN1Y2ggYXMgQVRNLCBIRExDIG9yIEZyYW1lCitSZWxheS4KKworV2hlbiBhIHR1bm5lbCBpcyBmaXJzdCBvcGVuZWQsIHRoZSByZWZlcmVuY2UgY291bnQgb24gdGhlIHNvY2tldCBpcworaW5jcmVhc2VkIHVzaW5nIHNvY2tfaG9sZCgpLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUga2VybmVsIHNvY2tldAorY2Fubm90IGJlIHJlbW92ZWQgd2hpbGUgTDJUUCdzIGRhdGEgc3RydWN0dXJlcyByZWZlcmVuY2UgaXQuCisKK1NvbWUgTDJUUCBzZXNzaW9ucyBhbHNvIGhhdmUgYSBzb2NrZXQgKFBQUCBwc2V1ZG93aXJlcykgd2hpbGUgb3RoZXJzCitkbyBub3QgKGV0aGVybmV0IHBzZXVkb3dpcmVzKS4gV2UgY2FuJ3QgdXNlIHRoZSBzb2NrZXQgcmVmZXJlbmNlIGNvdW50CithcyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciBzZXNzaW9uIGNvbnRleHRzLiBUaGUgTDJUUCBpbXBsZW1lbnRhdGlvbgordGhlcmVmb3JlIGhhcyBpdHMgb3duIGludGVybmFsIHJlZmVyZW5jZSBjb3VudHMgb24gdGhlIHNlc3Npb24KK2NvbnRleHRzLgorCitUbyBEbworPT09PT0KKworQWRkIEwyVFAgdHVubmVsIHN3aXRjaGluZyBzdXBwb3J0LiBUaGlzIHdvdWxkIHJvdXRlIHR1bm5lbGVkIHRyYWZmaWMKK2Zyb20gb25lIEwyVFAgdHVubmVsIGludG8gYW5vdGhlci4gU3BlY2lmaWVkIGluCitodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLWwydHBleHQtdHVubmVsLXN3aXRjaGluZy0wOAorCitBZGQgTDJUUHYzIFZMQU4gcHNldWRvd2lyZSBzdXBwb3J0LgorCitBZGQgTDJUUHYzIElQIHBzZXVkb3dpcmUgc3VwcG9ydC4KKworQWRkIEwyVFB2MyBBVE0gcHNldWRvd2lyZSBzdXBwb3J0LgorCitNaXNjZWxsYW5lb3VzCis9PT09PT09PT09PT09CisKK1RoZSBMMlRQIGRyaXZlcnMgd2VyZSBkZXZlbG9wZWQgYXMgcGFydCBvZiB0aGUgT3BlbkwyVFAgcHJvamVjdCBieQorS2F0YWxpeCBTeXN0ZW1zIEx0ZC4gT3BlbkwyVFAgaXMgYSBmdWxsLWZlYXR1cmVkIEwyVFAgY2xpZW50IC8gc2VydmVyLAorZGVzaWduZWQgZnJvbSB0aGUgZ3JvdW5kIHVwIHRvIGhhdmUgdGhlIEwyVFAgZGF0YXBhdGggaW4gdGhlCitrZXJuZWwuIFRoZSBwcm9qZWN0IGFsc28gaW1wbGVtZW50ZWQgdGhlIHBwcG9sMnRwIHBsdWdpbiBmb3IgcHBwZAord2hpY2ggYWxsb3dzIHBwcGQgdG8gdXNlIHRoZSBrZXJuZWwgZHJpdmVyLiBEZXRhaWxzIGNhbiBiZSBmb3VuZCBhdAoraHR0cDovL3d3dy5vcGVubDJ0cC5vcmcuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbGFwYi1tb2R1bGUudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2xhcGItbW9kdWxlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGZjOGYyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2xhcGItbW9kdWxlLnR4dApAQCAtMCwwICsxLDI2MyBAQAorCQlUaGUgTGludXggTEFQQiBNb2R1bGUgSW50ZXJmYWNlIDEuMworCisJCSAgICAgIEpvbmF0aGFuIE5heWxvciAyOS4xMi45NgorCitDaGFuZ2VkIChIZW5uZXIgRWlzZW4sIDIwMDAtMTAtMjkpOiBpbnQgcmV0dXJuIHZhbHVlIGZvciBkYXRhX2luZGljYXRpb24oKSAKKworVGhlIExBUEIgbW9kdWxlIHdpbGwgYmUgYSBzZXBhcmF0ZWx5IGNvbXBpbGVkIG1vZHVsZSBmb3IgdXNlIGJ5IGFueSBwYXJ0cyBvZgordGhlIExpbnV4IG9wZXJhdGluZyBzeXN0ZW0gdGhhdCByZXF1aXJlIGEgTEFQQiBzZXJ2aWNlLiBUaGlzIGRvY3VtZW50CitkZWZpbmVzIHRoZSBpbnRlcmZhY2VzIHRvLCBhbmQgdGhlIHNlcnZpY2VzIHByb3ZpZGVkIGJ5IHRoaXMgbW9kdWxlLiBUaGUKK3Rlcm0gbW9kdWxlIGluIHRoaXMgY29udGV4dCBkb2VzIG5vdCBpbXBseSB0aGF0IHRoZSBMQVBCIG1vZHVsZSBpcyBhCitzZXBhcmF0ZWx5IGxvYWRhYmxlIG1vZHVsZSwgYWx0aG91Z2ggaXQgbWF5IGJlLiBUaGUgdGVybSBtb2R1bGUgaXMgdXNlZCBpbgoraXRzIG1vcmUgc3RhbmRhcmQgbWVhbmluZy4KKworVGhlIGludGVyZmFjZSB0byB0aGUgTEFQQiBtb2R1bGUgY29uc2lzdHMgb2YgZnVuY3Rpb25zIHRvIHRoZSBtb2R1bGUsCitjYWxsYmFja3MgZnJvbSB0aGUgbW9kdWxlIHRvIGluZGljYXRlIGltcG9ydGFudCBzdGF0ZSBjaGFuZ2VzLCBhbmQKK3N0cnVjdHVyZXMgZm9yIGdldHRpbmcgYW5kIHNldHRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG1vZHVsZS4KKworU3RydWN0dXJlcworLS0tLS0tLS0tLQorCitQcm9iYWJseSB0aGUgbW9zdCBpbXBvcnRhbnQgc3RydWN0dXJlIGlzIHRoZSBza2J1ZmYgc3RydWN0dXJlIGZvciBob2xkaW5nCityZWNlaXZlZCBhbmQgdHJhbnNtaXR0ZWQgZGF0YSwgaG93ZXZlciBpdCBpcyBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoaXMKK2RvY3VtZW50LgorCitUaGUgdHdvIExBUEIgc3BlY2lmaWMgc3RydWN0dXJlcyBhcmUgdGhlIExBUEIgaW5pdGlhbGlzYXRpb24gc3RydWN0dXJlIGFuZAordGhlIExBUEIgcGFyYW1ldGVyIHN0cnVjdHVyZS4gVGhlc2Ugd2lsbCBiZSBkZWZpbmVkIGluIGEgc3RhbmRhcmQgaGVhZGVyCitmaWxlLCA8bGludXgvbGFwYi5oPi4gVGhlIGhlYWRlciBmaWxlIDxuZXQvbGFwYi5oPiBpcyBpbnRlcm5hbCB0byB0aGUgTEFQQgorbW9kdWxlIGFuZCBpcyBub3QgZm9yIHVzZS4KKworTEFQQiBJbml0aWFsaXNhdGlvbiBTdHJ1Y3R1cmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgc3RydWN0dXJlIGlzIHVzZWQgb25seSBvbmNlLCBpbiB0aGUgY2FsbCB0byBsYXBiX3JlZ2lzdGVyIChzZWUgYmVsb3cpLgorSXQgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRldmljZSBkcml2ZXIgdGhhdCByZXF1aXJlcyB0aGUgc2VydmljZXMKK29mIHRoZSBMQVBCIG1vZHVsZS4KKworc3RydWN0IGxhcGJfcmVnaXN0ZXJfc3RydWN0IHsKKwl2b2lkICgqY29ubmVjdF9jb25maXJtYXRpb24pKGludCB0b2tlbiwgaW50IHJlYXNvbik7CisJdm9pZCAoKmNvbm5lY3RfaW5kaWNhdGlvbikoaW50IHRva2VuLCBpbnQgcmVhc29uKTsKKwl2b2lkICgqZGlzY29ubmVjdF9jb25maXJtYXRpb24pKGludCB0b2tlbiwgaW50IHJlYXNvbik7CisJdm9pZCAoKmRpc2Nvbm5lY3RfaW5kaWNhdGlvbikoaW50IHRva2VuLCBpbnQgcmVhc29uKTsKKwlpbnQgICgqZGF0YV9pbmRpY2F0aW9uKShpbnQgdG9rZW4sIHN0cnVjdCBza19idWZmICpza2IpOworCXZvaWQgKCpkYXRhX3RyYW5zbWl0KShpbnQgdG9rZW4sIHN0cnVjdCBza19idWZmICpza2IpOworfTsKKworRWFjaCBtZW1iZXIgb2YgdGhpcyBzdHJ1Y3R1cmUgY29ycmVzcG9uZHMgdG8gYSBmdW5jdGlvbiBpbiB0aGUgZGV2aWNlIGRyaXZlcgordGhhdCBpcyBjYWxsZWQgd2hlbiBhIHBhcnRpY3VsYXIgZXZlbnQgaW4gdGhlIExBUEIgbW9kdWxlIG9jY3Vycy4gVGhlc2Ugd2lsbAorYmUgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy4gSWYgYSBjYWxsYmFjayBpcyBub3QgcmVxdWlyZWQgKCEhKSB0aGVuIGEgTlVMTAorbWF5IGJlIHN1YnN0aXR1dGVkLgorCisKK0xBUEIgUGFyYW1ldGVyIFN0cnVjdHVyZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgc3RydWN0dXJlIGlzIHVzZWQgd2l0aCB0aGUgbGFwYl9nZXRwYXJtcyBhbmQgbGFwYl9zZXRwYXJtcyBmdW5jdGlvbnMKKyhzZWUgYmVsb3cpLiBUaGV5IGFyZSB1c2VkIHRvIGFsbG93IHRoZSBkZXZpY2UgZHJpdmVyIHRvIGdldCBhbmQgc2V0IHRoZQorb3BlcmF0aW9uYWwgcGFyYW1ldGVycyBvZiB0aGUgTEFQQiBpbXBsZW1lbnRhdGlvbiBmb3IgYSBnaXZlbiBjb25uZWN0aW9uLgorCitzdHJ1Y3QgbGFwYl9wYXJtc19zdHJ1Y3QgeworCXVuc2lnbmVkIGludCB0MTsKKwl1bnNpZ25lZCBpbnQgdDF0aW1lcjsKKwl1bnNpZ25lZCBpbnQgdDI7CisJdW5zaWduZWQgaW50IHQydGltZXI7CisJdW5zaWduZWQgaW50IG4yOworCXVuc2lnbmVkIGludCBuMmNvdW50OworCXVuc2lnbmVkIGludCB3aW5kb3c7CisJdW5zaWduZWQgaW50IHN0YXRlOworCXVuc2lnbmVkIGludCBtb2RlOworfTsKKworVDEgYW5kIFQyIGFyZSBwcm90b2NvbCB0aW1pbmcgcGFyYW1ldGVycyBhbmQgYXJlIGdpdmVuIGluIHVuaXRzIG9mIDEwMG1zLiBOMgoraXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHRyaWVzIG9uIHRoZSBsaW5rIGJlZm9yZSBpdCBpcyBkZWNsYXJlZCBhIGZhaWx1cmUuCitUaGUgd2luZG93IHNpemUgaXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIG91dHN0YW5kaW5nIGRhdGEgcGFja2V0cyBhbGxvd2VkIHRvCitiZSB1bmFja25vd2xlZGdlZCBieSB0aGUgcmVtb3RlIGVuZCwgdGhlIHZhbHVlIG9mIHRoZSB3aW5kb3cgaXMgYmV0d2VlbiAxCithbmQgNyBmb3IgYSBzdGFuZGFyZCBMQVBCIGxpbmssIGFuZCBiZXR3ZWVuIDEgYW5kIDEyNyBmb3IgYW4gZXh0ZW5kZWQgTEFQQgorbGluay4KKworVGhlIG1vZGUgdmFyaWFibGUgaXMgYSBiaXQgZmllbGQgdXNlZCBmb3Igc2V0dGluZyAoYXQgcHJlc2VudCkgdGhyZWUgdmFsdWVzLgorVGhlIGJpdCBmaWVsZHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1lYW5pbmdzOgorCitCaXQJTWVhbmluZworMAlMQVBCIG9wZXJhdGlvbiAoMD1MQVBCX1NUQU5EQVJEIDE9TEFQQl9FWFRFTkRFRCkuCisxCVtTTV1MUCBvcGVyYXRpb24gKDA9TEFQQl9TTFAgMT1MQVBCPU1MUCkuCisyCURURS9EQ0Ugb3BlcmF0aW9uICgwPUxBUEJfRFRFIDE9TEFQQl9EQ0UpCiszLTMxCVJlc2VydmVkLCBtdXN0IGJlIDAuCisKK0V4dGVuZGVkIExBUEIgb3BlcmF0aW9uIGluZGljYXRlcyB0aGUgdXNlIG9mIGV4dGVuZGVkIHNlcXVlbmNlIG51bWJlcnMgYW5kCitjb25zZXF1ZW50bHkgbGFyZ2VyIHdpbmRvdyBzaXplcywgdGhlIGRlZmF1bHQgaXMgc3RhbmRhcmQgTEFQQiBvcGVyYXRpb24uCitNTFAgb3BlcmF0aW9uIGlzIHRoZSBzYW1lIGFzIFNMUCBvcGVyYXRpb24gZXhjZXB0IHRoYXQgdGhlIGFkZHJlc3NlcyB1c2VkIGJ5CitMQVBCIGFyZSBkaWZmZXJlbnQgdG8gaW5kaWNhdGUgdGhlIG1vZGUgb2Ygb3BlcmF0aW9uLCB0aGUgZGVmYXVsdCBpcyBTaW5nbGUKK0xpbmsgUHJvY2VkdXJlLiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIERDRSBhbmQgRFRFIG9wZXJhdGlvbiBpcyAoaSkgdGhlCithZGRyZXNzZXMgdXNlZCBmb3IgY29tbWFuZHMgYW5kIHJlc3BvbnNlcywgYW5kIChpaSkgd2hlbiB0aGUgRENFIGlzIG5vdAorY29ubmVjdGVkLCBpdCBzZW5kcyBETSB3aXRob3V0IHBvbGxzIHNldCwgZXZlcnkgVDEuIFRoZSB1cHBlciBjYXNlIGNvbnN0YW50CituYW1lcyB3aWxsIGJlIGRlZmluZWQgaW4gdGhlIHB1YmxpYyBMQVBCIGhlYWRlciBmaWxlLgorCisKK0Z1bmN0aW9ucworLS0tLS0tLS0tCisKK1RoZSBMQVBCIG1vZHVsZSBwcm92aWRlcyBhIG51bWJlciBvZiBmdW5jdGlvbiBlbnRyeSBwb2ludHMuCisKKworaW50IGxhcGJfcmVnaXN0ZXIodm9pZCAqdG9rZW4sIHN0cnVjdCBsYXBiX3JlZ2lzdGVyX3N0cnVjdCk7CisKK1RoaXMgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBMQVBCIG1vZHVsZSBtYXkgYmUgdXNlZC4gSWYgdGhlIGNhbGwgaXMKK3N1Y2Nlc3NmdWwgdGhlbiBMQVBCX09LIGlzIHJldHVybmVkLiBUaGUgdG9rZW4gbXVzdCBiZSBhIHVuaXF1ZSBpZGVudGlmaWVyCitnZW5lcmF0ZWQgYnkgdGhlIGRldmljZSBkcml2ZXIgdG8gYWxsb3cgZm9yIHRoZSB1bmlxdWUgaWRlbnRpZmljYXRpb24gb2YgdGhlCitpbnN0YW5jZSBvZiB0aGUgTEFQQiBsaW5rLiBJdCBpcyByZXR1cm5lZCBieSB0aGUgTEFQQiBtb2R1bGUgaW4gYWxsIG9mIHRoZQorY2FsbGJhY2tzLCBhbmQgaXMgdXNlZCBieSB0aGUgZGV2aWNlIGRyaXZlciBpbiBhbGwgY2FsbHMgdG8gdGhlIExBUEIgbW9kdWxlLgorRm9yIG11bHRpcGxlIExBUEIgbGlua3MgaW4gYSBzaW5nbGUgZGV2aWNlIGRyaXZlciwgbXVsdGlwbGUgY2FsbHMgdG8KK2xhcGJfcmVnaXN0ZXIgbXVzdCBiZSBtYWRlLiBUaGUgZm9ybWF0IG9mIHRoZSBsYXBiX3JlZ2lzdGVyX3N0cnVjdCBpcyBnaXZlbgorYWJvdmUuIFRoZSByZXR1cm4gdmFsdWVzIGFyZToKKworTEFQQl9PSwkJCUxBUEIgcmVnaXN0ZXJlZCBzdWNjZXNzZnVsbHkuCitMQVBCX0JBRFRPS0VOCQlUb2tlbiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuCitMQVBCX05PTUVNCQlPdXQgb2YgbWVtb3J5CisKKworaW50IGxhcGJfdW5yZWdpc3Rlcih2b2lkICp0b2tlbik7CisKK1RoaXMgcmVsZWFzZXMgYWxsIHRoZSByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIGEgTEFQQiBsaW5rLiBBbnkgY3VycmVudAorTEFQQiBsaW5rIHdpbGwgYmUgYWJhbmRvbmVkIHdpdGhvdXQgZnVydGhlciBtZXNzYWdlcyBiZWluZyBwYXNzZWQuIEFmdGVyCit0aGlzIGNhbGwsIHRoZSB2YWx1ZSBvZiB0b2tlbiBpcyBubyBsb25nZXIgdmFsaWQgZm9yIGFueSBjYWxscyB0byB0aGUgTEFQQgorZnVuY3Rpb24uIFRoZSB2YWxpZCByZXR1cm4gdmFsdWVzIGFyZToKKworTEFQQl9PSwkJCUxBUEIgdW5yZWdpc3RlcmVkIHN1Y2Nlc3NmdWxseS4KK0xBUEJfQkFEVE9LRU4JCUludmFsaWQvdW5rbm93biBMQVBCIHRva2VuLgorCisKK2ludCBsYXBiX2dldHBhcm1zKHZvaWQgKnRva2VuLCBzdHJ1Y3QgbGFwYl9wYXJtc19zdHJ1Y3QgKnBhcm1zKTsKKworVGhpcyBhbGxvd3MgdGhlIGRldmljZSBkcml2ZXIgdG8gZ2V0IHRoZSB2YWx1ZXMgb2YgdGhlIGN1cnJlbnQgTEFQQgordmFyaWFibGVzLCB0aGUgbGFwYl9wYXJtc19zdHJ1Y3QgaXMgZGVzY3JpYmVkIGFib3ZlLiBUaGUgdmFsaWQgcmV0dXJuIHZhbHVlcworYXJlOgorCitMQVBCX09LCQkJTEFQQiBnZXRwYXJtcyB3YXMgc3VjY2Vzc2Z1bC4KK0xBUEJfQkFEVE9LRU4JCUludmFsaWQvdW5rbm93biBMQVBCIHRva2VuLgorCisKK2ludCBsYXBiX3NldHBhcm1zKHZvaWQgKnRva2VuLCBzdHJ1Y3QgbGFwYl9wYXJtc19zdHJ1Y3QgKnBhcm1zKTsKKworVGhpcyBhbGxvd3MgdGhlIGRldmljZSBkcml2ZXIgdG8gc2V0IHRoZSB2YWx1ZXMgb2YgdGhlIGN1cnJlbnQgTEFQQgordmFyaWFibGVzLCB0aGUgbGFwYl9wYXJtc19zdHJ1Y3QgaXMgZGVzY3JpYmVkIGFib3ZlLiBUaGUgdmFsdWVzIG9mIHQxdGltZXIsCit0MnRpbWVyIGFuZCBuMmNvdW50IGFyZSBpZ25vcmVkLCBsaWtld2lzZSBjaGFuZ2luZyB0aGUgbW9kZSBiaXRzIHdoZW4KK2Nvbm5lY3RlZCB3aWxsIGJlIGlnbm9yZWQuIEFuIGVycm9yIGltcGxpZXMgdGhhdCBub25lIG9mIHRoZSB2YWx1ZXMgaGF2ZQorYmVlbiBjaGFuZ2VkLiBUaGUgdmFsaWQgcmV0dXJuIHZhbHVlcyBhcmU6CisKK0xBUEJfT0sJCQlMQVBCIGdldHBhcm1zIHdhcyBzdWNjZXNzZnVsLgorTEFQQl9CQURUT0tFTgkJSW52YWxpZC91bmtub3duIExBUEIgdG9rZW4uCitMQVBCX0lOVkFMVUUJCU9uZSBvZiB0aGUgdmFsdWVzIHdhcyBvdXQgb2YgaXRzIGFsbG93YWJsZSByYW5nZS4KKworCitpbnQgbGFwYl9jb25uZWN0X3JlcXVlc3Qodm9pZCAqdG9rZW4pOworCitJbml0aWF0ZSBhIGNvbm5lY3QgdXNpbmcgdGhlIGN1cnJlbnQgcGFyYW1ldGVyIHNldHRpbmdzLiBUaGUgdmFsaWQgcmV0dXJuCit2YWx1ZXMgYXJlOgorCitMQVBCX09LCQkJTEFQQiBpcyBzdGFydGluZyB0byBjb25uZWN0LgorTEFQQl9CQURUT0tFTgkJSW52YWxpZC91bmtub3duIExBUEIgdG9rZW4uCitMQVBCX0NPTk5FQ1RFRAkJTEFQQiBtb2R1bGUgaXMgYWxyZWFkeSBjb25uZWN0ZWQuCisKKworaW50IGxhcGJfZGlzY29ubmVjdF9yZXF1ZXN0KHZvaWQgKnRva2VuKTsKKworSW5pdGlhdGUgYSBkaXNjb25uZWN0LiBUaGUgdmFsaWQgcmV0dXJuIHZhbHVlcyBhcmU6CisKK0xBUEJfT0sJCQlMQVBCIGlzIHN0YXJ0aW5nIHRvIGRpc2Nvbm5lY3QuCitMQVBCX0JBRFRPS0VOCQlJbnZhbGlkL3Vua25vd24gTEFQQiB0b2tlbi4KK0xBUEJfTk9UQ09OTkVDVEVECUxBUEIgbW9kdWxlIGlzIG5vdCBjb25uZWN0ZWQuCisKKworaW50IGxhcGJfZGF0YV9yZXF1ZXN0KHZvaWQgKnRva2VuLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKworUXVldWUgZGF0YSB3aXRoIHRoZSBMQVBCIG1vZHVsZSBmb3IgdHJhbnNtaXR0aW5nIG92ZXIgdGhlIGxpbmsuIElmIHRoZSBjYWxsCitpcyBzdWNjZXNzZnVsIHRoZW4gdGhlIHNrYnVmZiBpcyBvd25lZCBieSB0aGUgTEFQQiBtb2R1bGUgYW5kIG1heSBub3QgYmUKK3VzZWQgYnkgdGhlIGRldmljZSBkcml2ZXIgYWdhaW4uIFRoZSB2YWxpZCByZXR1cm4gdmFsdWVzIGFyZToKKworTEFQQl9PSwkJCUxBUEIgaGFzIGFjY2VwdGVkIHRoZSBkYXRhLgorTEFQQl9CQURUT0tFTgkJSW52YWxpZC91bmtub3duIExBUEIgdG9rZW4uCitMQVBCX05PVENPTk5FQ1RFRAlMQVBCIG1vZHVsZSBpcyBub3QgY29ubmVjdGVkLgorCisKK2ludCBsYXBiX2RhdGFfcmVjZWl2ZWQodm9pZCAqdG9rZW4sIHN0cnVjdCBza19idWZmICpza2IpOworCitRdWV1ZSBkYXRhIHdpdGggdGhlIExBUEIgbW9kdWxlIHdoaWNoIGhhcyBiZWVuIHJlY2VpdmVkIGZyb20gdGhlIGRldmljZS4gSXQKK2lzIGV4cGVjdGVkIHRoYXQgdGhlIGRhdGEgcGFzc2VkIHRvIHRoZSBMQVBCIG1vZHVsZSBoYXMgc2tiLT5kYXRhIHBvaW50aW5nCit0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBMQVBCIGRhdGEuIElmIHRoZSBjYWxsIGlzIHN1Y2Nlc3NmdWwgdGhlbiB0aGUgc2tidWZmCitpcyBvd25lZCBieSB0aGUgTEFQQiBtb2R1bGUgYW5kIG1heSBub3QgYmUgdXNlZCBieSB0aGUgZGV2aWNlIGRyaXZlciBhZ2Fpbi4KK1RoZSB2YWxpZCByZXR1cm4gdmFsdWVzIGFyZToKKworTEFQQl9PSwkJCUxBUEIgaGFzIGFjY2VwdGVkIHRoZSBkYXRhLgorTEFQQl9CQURUT0tFTgkJSW52YWxpZC91bmtub3duIExBUEIgdG9rZW4uCisKKworQ2FsbGJhY2tzCistLS0tLS0tLS0KKworVGhlc2UgY2FsbGJhY2tzIGFyZSBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgdGhlIGRldmljZSBkcml2ZXIgZm9yIHRoZSBMQVBCCittb2R1bGUgdG8gY2FsbCB3aGVuIGFuIGV2ZW50IG9jY3Vycy4gVGhleSBhcmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBMQVBCCittb2R1bGUgd2l0aCBsYXBiX3JlZ2lzdGVyIChzZWUgYWJvdmUpIGluIHRoZSBzdHJ1Y3R1cmUgbGFwYl9yZWdpc3Rlcl9zdHJ1Y3QKKyhzZWUgYWJvdmUpLgorCisKK3ZvaWQgKCpjb25uZWN0X2NvbmZpcm1hdGlvbikodm9pZCAqdG9rZW4sIGludCByZWFzb24pOworCitUaGlzIGlzIGNhbGxlZCBieSB0aGUgTEFQQiBtb2R1bGUgd2hlbiBhIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQgYWZ0ZXIKK2JlaW5nIHJlcXVlc3RlZCBieSBhIGNhbGwgdG8gbGFwYl9jb25uZWN0X3JlcXVlc3QgKHNlZSBhYm92ZSkuIFRoZSByZWFzb24gaXMKK2Fsd2F5cyBMQVBCX09LLgorCisKK3ZvaWQgKCpjb25uZWN0X2luZGljYXRpb24pKHZvaWQgKnRva2VuLCBpbnQgcmVhc29uKTsKKworVGhpcyBpcyBjYWxsZWQgYnkgdGhlIExBUEIgbW9kdWxlIHdoZW4gdGhlIGxpbmsgaXMgZXN0YWJsaXNoZWQgYnkgdGhlIHJlbW90ZQorc3lzdGVtLiBUaGUgdmFsdWUgb2YgcmVhc29uIGlzIGFsd2F5cyBMQVBCX09LLgorCisKK3ZvaWQgKCpkaXNjb25uZWN0X2NvbmZpcm1hdGlvbikodm9pZCAqdG9rZW4sIGludCByZWFzb24pOworCitUaGlzIGlzIGNhbGxlZCBieSB0aGUgTEFQQiBtb2R1bGUgd2hlbiBhbiBldmVudCBvY2N1cnMgYWZ0ZXIgdGhlIGRldmljZQorZHJpdmVyIGhhcyBjYWxsZWQgbGFwYl9kaXNjb25uZWN0X3JlcXVlc3QgKHNlZSBhYm92ZSkuIFRoZSByZWFzb24gaW5kaWNhdGVzCit3aGF0IGhhcyBoYXBwZW5lZC4gSW4gYWxsIGNhc2VzIHRoZSBMQVBCIGxpbmsgY2FuIGJlIHJlZ2FyZGVkIGFzIGJlaW5nCit0ZXJtaW5hdGVkLiBUaGUgdmFsdWVzIGZvciByZWFzb24gYXJlOgorCitMQVBCX09LCQkJVGhlIExBUEIgbGluayB3YXMgdGVybWluYXRlZCBub3JtYWxseS4KK0xBUEJfTk9UQ09OTkVDVEVECVRoZSByZW1vdGUgc3lzdGVtIHdhcyBub3QgY29ubmVjdGVkLgorTEFQQl9USU1FRE9VVAkJTm8gcmVzcG9uc2Ugd2FzIHJlY2VpdmVkIGluIE4yIHRyaWVzIGZyb20gdGhlIHJlbW90ZQorCQkJc3lzdGVtLgorCisKK3ZvaWQgKCpkaXNjb25uZWN0X2luZGljYXRpb24pKHZvaWQgKnRva2VuLCBpbnQgcmVhc29uKTsKKworVGhpcyBpcyBjYWxsZWQgYnkgdGhlIExBUEIgbW9kdWxlIHdoZW4gdGhlIGxpbmsgaXMgdGVybWluYXRlZCBieSB0aGUgcmVtb3RlCitzeXN0ZW0gb3IgYW5vdGhlciBldmVudCBoYXMgb2NjdXJyZWQgdG8gdGVybWluYXRlIHRoZSBsaW5rLiBUaGlzIG1heSBiZQorcmV0dXJuZWQgaW4gcmVzcG9uc2UgdG8gYSBsYXBiX2Nvbm5lY3RfcmVxdWVzdCAoc2VlIGFib3ZlKSBpZiB0aGUgcmVtb3RlCitzeXN0ZW0gcmVmdXNlZCB0aGUgcmVxdWVzdC4gVGhlIHZhbHVlcyBmb3IgcmVhc29uIGFyZToKKworTEFQQl9PSwkJCVRoZSBMQVBCIGxpbmsgd2FzIHRlcm1pbmF0ZWQgbm9ybWFsbHkgYnkgdGhlIHJlbW90ZQorCQkJc3lzdGVtLgorTEFQQl9SRUZVU0VECQlUaGUgcmVtb3RlIHN5c3RlbSByZWZ1c2VkIHRoZSBjb25uZWN0IHJlcXVlc3QuCitMQVBCX05PVENPTk5FQ1RFRAlUaGUgcmVtb3RlIHN5c3RlbSB3YXMgbm90IGNvbm5lY3RlZC4KK0xBUEJfVElNRURPVVQJCU5vIHJlc3BvbnNlIHdhcyByZWNlaXZlZCBpbiBOMiB0cmllcyBmcm9tIHRoZSByZW1vdGUKKwkJCXN5c3RlbS4KKworCitpbnQgKCpkYXRhX2luZGljYXRpb24pKHZvaWQgKnRva2VuLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKworVGhpcyBpcyBjYWxsZWQgYnkgdGhlIExBUEIgbW9kdWxlIHdoZW4gZGF0YSBoYXMgYmVlbiByZWNlaXZlZCBmcm9tIHRoZQorcmVtb3RlIHN5c3RlbSB0aGF0IHNob3VsZCBiZSBwYXNzZWQgb250byB0aGUgbmV4dCBsYXllciBpbiB0aGUgcHJvdG9jb2wKK3N0YWNrLiBUaGUgc2tidWZmIGJlY29tZXMgdGhlIHByb3BlcnR5IG9mIHRoZSBkZXZpY2UgZHJpdmVyIGFuZCB0aGUgTEFQQgorbW9kdWxlIHdpbGwgbm90IHBlcmZvcm0gYW55IG1vcmUgYWN0aW9ucyBvbiBpdC4gVGhlIHNrYi0+ZGF0YSBwb2ludGVyIHdpbGwKK2JlIHBvaW50aW5nIHRvIHRoZSBmaXJzdCBieXRlIG9mIGRhdGEgYWZ0ZXIgdGhlIExBUEIgaGVhZGVyLgorCitUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIE5FVF9SWF9EUk9QIChhcyBkZWZpbmVkIGluIHRoZSBoZWFkZXIKK2ZpbGUgaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCkgaWYgYW5kIG9ubHkgaWYgdGhlIGZyYW1lIHdhcyBkcm9wcGVkCitiZWZvcmUgaXQgY291bGQgYmUgZGVsaXZlcmVkIHRvIHRoZSB1cHBlciBsYXllci4KKworCit2b2lkICgqZGF0YV90cmFuc21pdCkodm9pZCAqdG9rZW4sIHN0cnVjdCBza19idWZmICpza2IpOworCitUaGlzIGlzIGNhbGxlZCBieSB0aGUgTEFQQiBtb2R1bGUgd2hlbiBkYXRhIGlzIHRvIGJlIHRyYW5zbWl0dGVkIHRvIHRoZQorcmVtb3RlIHN5c3RlbSBieSB0aGUgZGV2aWNlIGRyaXZlci4gVGhlIHNrYnVmZiBiZWNvbWVzIHRoZSBwcm9wZXJ0eSBvZiB0aGUKK2RldmljZSBkcml2ZXIgYW5kIHRoZSBMQVBCIG1vZHVsZSB3aWxsIG5vdCBwZXJmb3JtIGFueSBtb3JlIGFjdGlvbnMgb24gaXQuCitUaGUgc2tiLT5kYXRhIHBvaW50ZXIgd2lsbCBiZSBwb2ludGluZyB0byB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgTEFQQiBoZWFkZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbHRwYy50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbHRwYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGJmMzIyMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9sdHBjLnR4dApAQCAtMCwwICsxLDEzMSBAQAorVGhpcyBpcyB0aGUgQUxQSEEgdmVyc2lvbiBvZiB0aGUgbHRwYyBkcml2ZXIuCisKK0luIG9yZGVyIHRvIHVzZSBpdCwgeW91IHdpbGwgbmVlZCBhdCBsZWFzdCB2ZXJzaW9uIDEuMy4zIG9mIHRoZQorbmV0YXRhbGsgcGFja2FnZSwgYW5kIHRoZSBBcHBsZSBvciBGYXJhbGxvbiBMb2NhbFRhbGsgUEMgY2FyZC4KK1RoZXJlIGFyZSBhIG51bWJlciBvZiBkaWZmZXJlbnQgTG9jYWxUYWxrIGNhcmRzIGZvciB0aGUgUEM7IHRoaXMKK2RyaXZlciBhcHBsaWVzIG9ubHkgdG8gdGhlIG9uZSB3aXRoIHRoZSA2NWMwMiBwcm9jZXNzb3IgY2hpcCBvbiBpdC4KKworVG8gaW5jbHVkZSBpdCBpbiB0aGUga2VybmVsLCBzZWxlY3QgdGhlIENPTkZJR19MVFBDIHN3aXRjaCBpbiB0aGUKK2NvbmZpZ3VyYXRpb24gZGlhbG9nLiAgWW91IGNhbiBhbHNvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUuCisKK1doaWxlIHRoZSBkcml2ZXIgd2lsbCBhdHRlbXB0IHRvIGF1dG9wcm9iZSB0aGUgSS9PIHBvcnQgYWRkcmVzcywgSVJRCitsaW5lLCBhbmQgRE1BIGNoYW5uZWwgb2YgdGhlIGNhcmQsIHRoaXMgZG9lcyBub3QgYWx3YXlzIHdvcmsuICBGb3IKK3RoaXMgcmVhc29uLCB5b3Ugc2hvdWxkIGJlIHByZXBhcmVkIHRvIHN1cHBseSB0aGVzZSBwYXJhbWV0ZXJzCit5b3Vyc2VsZi4gIChzZWUgIkNhcmQgQ29uZmlndXJhdGlvbiIgYmVsb3cgZm9yIGhvdyB0byBkZXRlcm1pbmUgb3IKK2NoYW5nZSB0aGUgc2V0dGluZ3Mgb24geW91ciBjYXJkKQorCitXaGVuIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgaW50byB0aGUga2VybmVsLCB5b3UgY2FuIGFkZCBhIGxpbmUgc3VjaAorYXMgdGhlIGZvbGxvd2luZyB0byB5b3VyIC9ldGMvbGlsby5jb25mOgorCisgYXBwZW5kPSJsdHBjPTB4MjQwLDksMSIKKword2hlcmUgdGhlIHBhcmFtZXRlcnMgKGluIG9yZGVyKSBhcmUgdGhlIHBvcnQgYWRkcmVzcywgSVJRLCBhbmQgRE1BCitjaGFubmVsLiAgVGhlIHNlY29uZCBhbmQgdGhpcmQgdmFsdWVzIGNhbiBiZSBvbWl0dGVkLCBpbiB3aGljaCBjYXNlCit0aGUgZHJpdmVyIHdpbGwgdHJ5IHRvIGRldGVybWluZSB0aGVtIGl0c2VsZi4KKworSWYgeW91IGxvYWQgdGhlIGRyaXZlciBhcyBhIG1vZHVsZSwgeW91IGNhbiBwYXNzIHRoZSBwYXJhbWV0ZXJzICJpbz0iLAorImlycT0iLCBhbmQgImRtYT0iIG9uIHRoZSBjb21tYW5kIGxpbmUgd2l0aCBpbnNtb2Qgb3IgbW9kcHJvYmUsIG9yIGFkZAordGhlbSBhcyBvcHRpb25zIGluIGEgY29uZmlndXJhdGlvbiBmaWxlIGluIC9ldGMvbW9kcHJvYmUuZC8gZGlyZWN0b3J5OgorCisgYWxpYXMgbHQwIGx0cGMgIyBhdXRvbG9hZCB0aGUgbW9kdWxlIHdoZW4gdGhlIGludGVyZmFjZSBpcyBjb25maWd1cmVkCisgb3B0aW9ucyBsdHBjIGlvPTB4MjQwIGlycT05IGRtYT0xCisKK0JlZm9yZSBzdGFydGluZyB1cCB0aGUgbmV0YXRhbGsgZGVtb25zIChwZXJoYXBzIGluIHJjLmxvY2FsKSwgeW91CituZWVkIHRvIGFkZCBhIGxpbmUgc3VjaCBhczoKKworIC9zYmluL2lmY29uZmlnIGx0MCAxMjcuMC4wLjQyCisKK1RoZSBhZGRyZXNzIGlzIHVuaW1wb3J0YW50IC0gaG93ZXZlciwgdGhlIGNhcmQgbmVlZHMgdG8gYmUgY29uZmlndXJlZAord2l0aCBpZmNvbmZpZyBzbyB0aGF0IE5ldGF0YWxrIGNhbiBmaW5kIGl0LgorCitUaGUgYXBwcm9wcmlhdGUgbmV0YXRhbGsgY29uZmlndXJhdGlvbiBkZXBlbmRzIG9uIHdoZXRoZXIgeW91IGFyZQorYXR0YWNoZWQgdG8gYSBuZXR3b3JrIHRoYXQgaW5jbHVkZXMgQXBwbGVUYWxrIHJvdXRlcnMgb3Igbm90LiAgSWYsCitsaWtlIG1lLCB5b3UgYXJlIHNpbXBseSBjb25uZWN0aW5nIHRvIHlvdXIgaG9tZSBNYWNpbnRvc2hlcyBhbmQKK3ByaW50ZXJzLCB5b3UgbmVlZCB0byBzZXQgdXAgbmV0YXRhbGsgdG8gInNlZWQiLiAgVGhlIHdheSBJIGRvIHRoaXMKK2lzIHRvIGhhdmUgdGhlIGxpbmVzCisKKyBkdW1teSAtc2VlZCAtcGhhc2UgMiAtbmV0IDIwMDAgLWFkZHIgMjAwMC4yNiAtem9uZSAiMTAzMyIKKyBsdDAgLXNlZWQgLXBoYXNlIDEgLW5ldCAxMDMzIC1hZGRyIDEwMzMuMjcgLXpvbmUgIjEwMzMiCisKK2luIG15IGF0YWxrZC5jb25mLiAgV2hhdCBpcyBnb2luZyBvbiBoZXJlIGlzIHRoYXQgSSBuZWVkIHRvIGZvb2wKK25ldGF0YWxrIGludG8gdGhpbmtpbmcgdGhhdCB0aGVyZSBhcmUgdHdvIEFwcGxlVGFsayBpbnRlcmZhY2VzCitwcmVzZW50OyBvdGhlcndpc2UsIGl0IHJlZnVzZXMgdG8gc2VlZC4gIFRoaXMgaXMgYSBoYWNrLCBhbmQgYSBtb3JlCitwZXJtYW5lbnQgc29sdXRpb24gd291bGQgYmUgdG8gYWx0ZXIgdGhlIG5ldGF0YWxrIGNvZGUuICBBbHNvLCBtYWtlCitzdXJlIHlvdSBoYXZlIHRoZSBjb3JyZWN0IG5hbWUgZm9yIHRoZSBkdW1teSBpbnRlcmZhY2UgLSBJZiBpdCdzCitjb21waWxlZCBhcyBhIG1vZHVsZSwgeW91IHdpbGwgbmVlZCB0byByZWZlciB0byBpdCBhcyAiZHVtbXkwIiBvciBzb21lCitzdWNoLgorCitJZiB5b3UgYXJlIGF0dGFjaGVkIHRvIGFuIGV4dGVuZGVkIEFwcGxlVGFsayBuZXR3b3JrLCB3aXRoIHJvdXRlcnMgb24KK2l0LCB0aGVuIHlvdSBkb24ndCBuZWVkIHRvIGZvb2wgYXJvdW5kIHdpdGggdGhpcyAtLSB0aGUgYXBwcm9wcmlhdGUKK2xpbmUgaW4gYXRhbGtkLmNvbmYgaXMKKworIGx0MCAtcGhhc2UgMQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDYXJkIENvbmZpZ3VyYXRpb246CisKK1RoZSBpbnRlcnJ1cHRzIGFuZCBzbyBmb3J0aCBhcmUgY29uZmlndXJlZCB2aWEgdGhlIGRpcHN3aXRjaCBvbiB0aGUKK2JvYXJkLiAgU2V0IHRoZSBzd2l0Y2hlcyBzbyBhcyBub3QgdG8gY29uZmxpY3Qgd2l0aCBvdGhlciBoYXJkd2FyZS4KKworICAgICAgIEludGVycnVwdHMgLS0gc2V0IGF0IG1vc3Qgb25lLiAgSWYgbm9uZSBhcmUgc2V0LCB0aGUgZHJpdmVyIHVzZXMKKyAgICAgICBwb2xsZWQgbW9kZS4gIEJlY2F1c2UgdGhlIGNhcmQgd2FzIGRldmVsb3BlZCBpbiB0aGUgWFQgZXJhLCB0aGUKKyAgICAgICBvcmlnaW5hbCBkb2N1bWVudGF0aW9uIHJlZmVycyB0byBJUlEyLiAgU2luY2UgeW91J2xsIGJlIHJ1bm5pbmcKKyAgICAgICB0aGlzIG9uIGFuIEFUIChvciBsYXRlcikgY2xhc3MgbWFjaGluZSwgdGhhdCByZWFsbHkgbWVhbnMgSVJROS4KKworICAgICAgIFNXMSAgICAgSVJRIDQKKyAgICAgICBTVzIgICAgIElSUSAzCisgICAgICAgU1czICAgICBJUlEgOSAoMiBpbiBvcmlnaW5hbCBjYXJkIGRvY3VtZW50YXRpb24gb25seSBhcHBsaWVzIHRvIFhUKQorCisKKyAgICAgICBETUEgLS0gY2hvb3NlIERNQSAxIG9yIDMsIGFuZCBzZXQgYm90aCBjb3JyZXNwb25kaW5nIHN3aXRjaGVzLgorCisgICAgICAgU1c0ICAgICBETUEgMworICAgICAgIFNXNSAgICAgRE1BIDEKKyAgICAgICBTVzYgICAgIERNQSAzCisgICAgICAgU1c3ICAgICBETUEgMQorCisKKyAgICAgICBJL08gYWRkcmVzcyAtLSBjaG9vc2Ugb25lLgorCisgICAgICAgU1c4ICAgICAyMjAgLyAyNDAKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSVA6CisKK1llcywgaXQgaXMgcG9zc2libGUgdG8gZG8gSVAgb3ZlciBMb2NhbFRhbGsuICBIb3dldmVyLCB5b3UgY2FuJ3QganVzdAordHJlYXQgdGhlIExvY2FsVGFsayBkZXZpY2UgbGlrZSBhbiBvcmRpbmFyeSBFdGhlcm5ldCBkZXZpY2UsIGV2ZW4gaWYKK3RoYXQncyB3aGF0IGl0IGxvb2tzIGxpa2UgdG8gTmV0YXRhbGsuCisKK0luc3RlYWQsIHlvdSBmb2xsb3cgdGhlIHNhbWUgcHJvY2VkdXJlIGFzIGZvciBkb2luZyBJUCBpbiBFdGhlclRhbGsuCitTZWUgRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwZGRwLnR4dCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUKK2tlcm5lbCBkcml2ZXIgYW5kIHVzZXJzcGFjZSB0b29scyBuZWVkZWQuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JVR1M6CisKK0lSUSBhdXRvcHJvYmluZyBvZnRlbiBkb2Vzbid0IHdvcmsgb24gYSBjb2xkIGJvb3QuICBUbyBnZXQgYXJvdW5kCit0aGlzLCBlaXRoZXIgY29tcGlsZSB0aGUgZHJpdmVyIGFzIGEgbW9kdWxlLCBvciBwYXNzIHRoZSBwYXJhbWV0ZXJzCitmb3IgdGhlIGNhcmQgdG8gdGhlIGtlcm5lbCBhcyBkZXNjcmliZWQgYWJvdmUuCisKK0Fsc28sIGFzIHVzdWFsLCBhdXRvcHJvYmluZyBpcyBub3QgcmVjb21tZW5kZWQgd2hlbiB5b3UgdXNlIHRoZSBkcml2ZXIKK2FzIGEgbW9kdWxlLiAodGhvdWdoIGl0IHVzdWFsbHkgd29ya3MgYXQgYm9vdCB0aW1lLCBhdCBsZWFzdCkKKworUG9sbGVkIG1vZGUgaXMgKnJlYWxseSogc2xvdyBzb21ldGltZXMsIGJ1dCB0aGlzIHNlZW1zIHRvIGRlcGVuZCBvbgordGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIG5ldHdvcmsuCisKK0l0IG1heSB0aGVvcmV0aWNhbGx5IGJlIHBvc3NpYmxlIHRvIHVzZSB0d28gTFRQQyBjYXJkcyBpbiB0aGUgc2FtZQorbWFjaGluZSwgYnV0IHRoaXMgaXMgdW5zdXBwb3J0ZWQsIHNvIGlmIHlvdSByZWFsbHkgd2FudCB0byBkbyB0aGlzLAoreW91J2xsIHByb2JhYmx5IGhhdmUgdG8gaGFjayB0aGUgaW5pdGlhbGl6YXRpb24gY29kZSBhIGJpdC4KKworX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KKworVEhBTktTOgorCVRoYW5rcyB0byBBbGFuIENveCBmb3IgaGVscGZ1bCBkaXNjdXNzaW9ucyBlYXJseSBvbiBpbiB0aGlzCit3b3JrLCBhbmQgdG8gRGVuaXMgSGFpbnN3b3J0aCBmb3IgZG9pbmcgdGhlIGJsZWVkaW5nLWVkZ2UgdGVzdGluZy4KKworLS0gQnJhZGZvcmQgSm9obnNvbiA8YnJhZGZvcmRAbWF0aC51bW4uZWR1PgorCistLSBVcGRhdGVkIDExLzA5LzE5OTggYnkgRGF2aWQgSHVnZ2lucy1EYWluZXMgPGRoZEBkZWJpYW4ub3JnPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL21hYzgwMjExLWF1dGgtYXNzb2MtZGVhdXRoLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9tYWM4MDIxMS1hdXRoLWFzc29jLWRlYXV0aC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdhMTVmZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9tYWM4MDIxMS1hdXRoLWFzc29jLWRlYXV0aC50eHQKQEAgLTAsMCArMSw5NSBAQAorIworIyBUaGlzIG91dGxpbmVzIHRoZSBMaW51eCBhdXRoZW50aWNhdGlvbi9hc3NvY2lhdGlvbiBhbmQKKyMgZGVhdXRoZW50aWNhdGlvbi9kaXNhc3NvY2lhdGlvbiBmbG93cy4KKyMKKyMgVGhpcyBjYW4gYmUgY29udmVydGVkIGludG8gYSBkaWFncmFtIHVzaW5nIHRoZSBzZXJ2aWNlCisjIGF0IGh0dHA6Ly93d3cud2Vic2VxdWVuY2VkaWFncmFtcy5jb20vCisjCisKK3BhcnRpY2lwYW50IHVzZXJzcGFjZQorcGFydGljaXBhbnQgbWFjODAyMTEKK3BhcnRpY2lwYW50IGRyaXZlcgorCithbHQgYXV0aGVudGljYXRpb24gbmVlZGVkIChub3QgRlQpCit1c2Vyc3BhY2UtPm1hYzgwMjExOiBhdXRoZW50aWNhdGUKKworYWx0IGF1dGhlbnRpY2F0ZWQvYXV0aGVudGljYXRpbmcgYWxyZWFkeQorbWFjODAyMTEtPmRyaXZlcjogc3RhX3N0YXRlKEFQLCBub3QtZXhpc3RzKQorbWFjODAyMTEtPmRyaXZlcjogYnNzX2luZm9fY2hhbmdlZChjbGVhciBCU1NJRCkKK2Vsc2UgYXNzb2NpYXRlZAorbm90ZSBvdmVyIG1hYzgwMjExLGRyaXZlcgorbGlrZSBkZWF1dGgvZGlzYXNzb2MsIHdpdGhvdXQgc2VuZGluZyB0aGUKK0JBIHNlc3Npb24gc3RvcCAmIGRlYXV0aC9kaXNhc3NvYyBmcmFtZXMKK2VuZCBub3RlCitlbmQKKworbWFjODAyMTEtPmRyaXZlcjogY29uZmlnKGNoYW5uZWwsIGNoYW5uZWwgdHlwZSkKK21hYzgwMjExLT5kcml2ZXI6IGJzc19pbmZvX2NoYW5nZWQoc2V0IEJTU0lELCBiYXNpYyByYXRlIGJpdG1hcCkKK21hYzgwMjExLT5kcml2ZXI6IHN0YV9zdGF0ZShBUCwgZXhpc3RzKQorCithbHQgbm8gcHJvYmUgcmVxdWVzdCBkYXRhIGtub3duCittYWM4MDIxMS0+ZHJpdmVyOiBUWCBkaXJlY3RlZCBwcm9iZSByZXF1ZXN0Citkcml2ZXItPm1hYzgwMjExOiBSWCBwcm9iZSByZXNwb25zZQorZW5kCisKK21hYzgwMjExLT5kcml2ZXI6IFRYIGF1dGggZnJhbWUKK2RyaXZlci0+bWFjODAyMTE6IFJYIGF1dGggZnJhbWUKKworYWx0IFdFUCBzaGFyZWQga2V5IGF1dGgKK21hYzgwMjExLT5kcml2ZXI6IFRYIGF1dGggZnJhbWUKK2RyaXZlci0+bWFjODAyMTE6IFJYIGF1dGggZnJhbWUKK2VuZAorCittYWM4MDIxMS0+ZHJpdmVyOiBzdGFfc3RhdGUoQVAsIGF1dGhlbnRpY2F0ZWQpCittYWM4MDIxMS0+dXNlcnNwYWNlOiBSWCBhdXRoIGZyYW1lCisKK2VuZAorCit1c2Vyc3BhY2UtPm1hYzgwMjExOiBhc3NvY2lhdGUKK2FsdCBhdXRoZW50aWNhdGVkIG9yIGFzc29jaWF0ZWQKK25vdGUgb3ZlciBtYWM4MDIxMSxkcml2ZXI6IGNsZWFudXAgbGlrZSBmb3IgYXV0aGVudGljYXRlCitlbmQKKworYWx0IG5vdCBwcmV2aW91c2x5IGF1dGhlbnRpY2F0ZWQgKEZUKQorbWFjODAyMTEtPmRyaXZlcjogY29uZmlnKGNoYW5uZWwsIGNoYW5uZWwgdHlwZSkKK21hYzgwMjExLT5kcml2ZXI6IGJzc19pbmZvX2NoYW5nZWQoc2V0IEJTU0lELCBiYXNpYyByYXRlIGJpdG1hcCkKK21hYzgwMjExLT5kcml2ZXI6IHN0YV9zdGF0ZShBUCwgZXhpc3RzKQorbWFjODAyMTEtPmRyaXZlcjogc3RhX3N0YXRlKEFQLCBhdXRoZW50aWNhdGVkKQorZW5kCittYWM4MDIxMS0+ZHJpdmVyOiBUWCBhc3NvYworZHJpdmVyLT5tYWM4MDIxMTogUlggYXNzb2MgcmVzcG9uc2UKK25vdGUgb3ZlciBtYWM4MDIxMTogaW5pdCByYXRlIGNvbnRyb2wKK21hYzgwMjExLT5kcml2ZXI6IHN0YV9zdGF0ZShBUCwgYXNzb2NpYXRlZCkKKworYWx0IG5vdCB1c2luZyBXUEEKK21hYzgwMjExLT5kcml2ZXI6IHN0YV9zdGF0ZShBUCwgYXV0aG9yaXplZCkKK2VuZAorCittYWM4MDIxMS0+ZHJpdmVyOiBzZXQgdXAgUW9TIHBhcmFtZXRlcnMKKworbWFjODAyMTEtPmRyaXZlcjogYnNzX2luZm9fY2hhbmdlZChRb1MsIEhULCBhc3NvY2lhdGVkIHdpdGggQUlEKQorbWFjODAyMTEtPnVzZXJzcGFjZTogYXNzb2NpYXRlZAorCitub3RlIGxlZnQgb2YgdXNlcnNwYWNlOiBhc3NvY2lhdGVkIG5vdworCithbHQgdXNpbmcgV1BBCitub3RlIG92ZXIgdXNlcnNwYWNlCitkbyA0LXdheS1oYW5kc2hha2UKKyhkYXRhIGZyYW1lcykKK2VuZCBub3RlCit1c2Vyc3BhY2UtPm1hYzgwMjExOiBhdXRob3JpemVkCittYWM4MDIxMS0+ZHJpdmVyOiBzdGFfc3RhdGUoQVAsIGF1dGhvcml6ZWQpCitlbmQKKwordXNlcnNwYWNlLT5tYWM4MDIxMTogZGVhdXRoZW50aWNhdGUvZGlzYXNzb2NpYXRlCittYWM4MDIxMS0+ZHJpdmVyOiBzdG9wIEJBIHNlc3Npb25zCittYWM4MDIxMS0+ZHJpdmVyOiBUWCBkZWF1dGgvZGlzYXNzb2MKK21hYzgwMjExLT5kcml2ZXI6IGZsdXNoIGZyYW1lcworbWFjODAyMTEtPmRyaXZlcjogc3RhX3N0YXRlKEFQLGFzc29jaWF0ZWQpCittYWM4MDIxMS0+ZHJpdmVyOiBzdGFfc3RhdGUoQVAsYXV0aGVudGljYXRlZCkKK21hYzgwMjExLT5kcml2ZXI6IHN0YV9zdGF0ZShBUCxleGlzdHMpCittYWM4MDIxMS0+ZHJpdmVyOiBzdGFfc3RhdGUoQVAsbm90LWV4aXN0cykKK21hYzgwMjExLT5kcml2ZXI6IHR1cm4gb2ZmIHBvd2Vyc2F2ZQorbWFjODAyMTEtPmRyaXZlcjogYnNzX2luZm9fY2hhbmdlZChjbGVhciBCU1NJRCwgbm90IGFzc29jaWF0ZWQsIG5vIFFvUywgLi4uKQorbWFjODAyMTEtPmRyaXZlcjogY29uZmlnKGNoYW5uZWwgdHlwZSB0byBub24tSFQpCittYWM4MDIxMS0+dXNlcnNwYWNlOiBkaXNjb25uZWN0ZWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9tYWM4MDIxMS1pbmplY3Rpb24udHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL21hYzgwMjExLWluamVjdGlvbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E5MzAwNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9tYWM4MDIxMS1pbmplY3Rpb24udHh0CkBAIC0wLDAgKzEsNjcgQEAKK0hvdyB0byB1c2UgcGFja2V0IGluamVjdGlvbiB3aXRoIG1hYzgwMjExCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCittYWM4MDIxMSBub3cgYWxsb3dzIGFyYml0cmFyeSBwYWNrZXRzIHRvIGJlIGluamVjdGVkIGRvd24gYW55IE1vbml0b3IgTW9kZQoraW50ZXJmYWNlIGZyb20gdXNlcmxhbmQuICBUaGUgcGFja2V0IHlvdSBpbmplY3QgbmVlZHMgdG8gYmUgY29tcG9zZWQgaW4gdGhlCitmb2xsb3dpbmcgZm9ybWF0OgorCisgWyByYWRpb3RhcCBoZWFkZXIgIF0KKyBbIGllZWU4MDIxMSBoZWFkZXIgXQorIFsgcGF5bG9hZCBdCisKK1RoZSByYWRpb3RhcCBmb3JtYXQgaXMgZGlzY3Vzc2VkIGluCisuL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9yYWRpb3RhcC1oZWFkZXJzLnR4dC4KKworRGVzcGl0ZSBtYW55IHJhZGlvdGFwIHBhcmFtZXRlcnMgYmVpbmcgY3VycmVudGx5IGRlZmluZWQsIG1vc3Qgb25seSBtYWtlIHNlbnNlCit0byBhcHBlYXIgb24gcmVjZWl2ZWQgcGFja2V0cy4gIFRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gaXMgcGFyc2VkIGZyb20gdGhlCityYWRpb3RhcCBoZWFkZXJzIGFuZCB1c2VkIHRvIGNvbnRyb2wgaW5qZWN0aW9uOgorCisgKiBJRUVFODAyMTFfUkFESU9UQVBfRkxBR1MKKworICAgSUVFRTgwMjExX1JBRElPVEFQX0ZfRkNTOiBGQ1Mgd2lsbCBiZSByZW1vdmVkIGFuZCByZWNhbGN1bGF0ZWQKKyAgIElFRUU4MDIxMV9SQURJT1RBUF9GX1dFUDogZnJhbWUgd2lsbCBiZSBlbmNyeXB0ZWQgaWYga2V5IGF2YWlsYWJsZQorICAgSUVFRTgwMjExX1JBRElPVEFQX0ZfRlJBRzogZnJhbWUgd2lsbCBiZSBmcmFnbWVudGVkIGlmIGxvbmdlciB0aGFuIHRoZQorCQkJICAgICAgY3VycmVudCBmcmFnbWVudGF0aW9uIHRocmVzaG9sZC4KKworICogSUVFRTgwMjExX1JBRElPVEFQX1RYX0ZMQUdTCisKKyAgIElFRUU4MDIxMV9SQURJT1RBUF9GX1RYX05PQUNLOiBmcmFtZSBzaG91bGQgYmUgc2VudCB3aXRob3V0IHdhaXRpbmcgZm9yCisJCQkJICBhbiBBQ0sgZXZlbiBpZiBpdCBpcyBhIHVuaWNhc3QgZnJhbWUKKworVGhlIGluamVjdGlvbiBjb2RlIGNhbiBhbHNvIHNraXAgYWxsIG90aGVyIGN1cnJlbnRseSBkZWZpbmVkIHJhZGlvdGFwIGZpZWxkcworZmFjaWxpdGF0aW5nIHJlcGxheSBvZiBjYXB0dXJlZCByYWRpb3RhcCBoZWFkZXJzIGRpcmVjdGx5LgorCitIZXJlIGlzIGFuIGV4YW1wbGUgdmFsaWQgcmFkaW90YXAgaGVhZGVyIGRlZmluaW5nIHNvbWUgcGFyYW1ldGVycworCisJMHgwMCwgMHgwMCwgLy8gPC0tIHJhZGlvdGFwIHZlcnNpb24KKwkweDBiLCAweDAwLCAvLyA8LSByYWRpb3RhcCBoZWFkZXIgbGVuZ3RoCisJMHgwNCwgMHgwYywgMHgwMCwgMHgwMCwgLy8gPC0tIGJpdG1hcAorCTB4NmMsIC8vIDwtLSByYXRlCisJMHgwYywgLy88LS0gdHggcG93ZXIKKwkweDAxIC8vPC0tIGFudGVubmEKKworVGhlIGllZWU4MDIxMSBoZWFkZXIgZm9sbG93cyBpbW1lZGlhdGVseSBhZnRlcndhcmRzLCBsb29raW5nIGZvciBleGFtcGxlIGxpa2UKK3RoaXM6CisKKwkweDA4LCAweDAxLCAweDAwLCAweDAwLAorCTB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsCisJMHgxMywgMHgyMiwgMHgzMywgMHg0NCwgMHg1NSwgMHg2NiwKKwkweDEzLCAweDIyLCAweDMzLCAweDQ0LCAweDU1LCAweDY2LAorCTB4MTAsIDB4ODYKKworVGhlbiBsYXN0bHkgdGhlcmUgaXMgdGhlIHBheWxvYWQuCisKK0FmdGVyIGNvbXBvc2luZyB0aGUgcGFja2V0IGNvbnRlbnRzLCBpdCBpcyBzZW50IGJ5IHNlbmQoKS1pbmcgaXQgdG8gYSBsb2dpY2FsCittYWM4MDIxMSBpbnRlcmZhY2UgdGhhdCBpcyBpbiBNb25pdG9yIG1vZGUuICBMaWJwY2FwIGNhbiBhbHNvIGJlIHVzZWQsCisod2hpY2ggaXMgZWFzaWVyIHRoYW4gZG9pbmcgdGhlIHdvcmsgdG8gYmluZCB0aGUgc29ja2V0IHRvIHRoZSByaWdodAoraW50ZXJmYWNlKSwgYWxvbmcgdGhlIGZvbGxvd2luZyBsaW5lczoKKworCXBwY2FwID0gcGNhcF9vcGVuX2xpdmUoc3pJbnRlcmZhY2VOYW1lLCA4MDAsIDEsIDIwLCBzekVycmJ1Zik7CisuLi4KKwlyID0gcGNhcF9pbmplY3QocHBjYXAsIHU4YVNlbmRCdWZmZXIsIG5MZW5ndGgpOworCitZb3UgY2FuIGFsc28gZmluZCBhIGxpbmsgdG8gYSBjb21wbGV0ZSBpbmplY3QgYXBwbGljYXRpb24gaGVyZToKKworaHR0cDovL3dpcmVsZXNzLmtlcm5lbC5vcmcvZW4vdXNlcnMvRG9jdW1lbnRhdGlvbi9wYWNrZXRzcGFtbWVyCisKK0FuZHkgR3JlZW4gPGFuZHlAd2FybWNhdC5jb20+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbWFjODAyMTFfaHdzaW0vUkVBRE1FIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL21hYzgwMjExX2h3c2ltL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGFjOTFkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL21hYzgwMjExX2h3c2ltL1JFQURNRQpAQCAtMCwwICsxLDY4IEBACittYWM4MDIxMV9od3NpbSAtIHNvZnR3YXJlIHNpbXVsYXRvciBvZiA4MDIuMTEgcmFkaW8ocykgZm9yIG1hYzgwMjExCitDb3B5cmlnaHQgKGMpIDIwMDgsIEpvdW5pIE1hbGluZW4gPGpAdzEuZmk+CisKK1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CitpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisKKworSW50cm9kdWN0aW9uCisKK21hYzgwMjExX2h3c2ltIGlzIGEgTGludXgga2VybmVsIG1vZHVsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIHNpbXVsYXRlCithcmJpdHJhcnkgbnVtYmVyIG9mIElFRUUgODAyLjExIHJhZGlvcyBmb3IgbWFjODAyMTEuIEl0IGNhbiBiZSB1c2VkIHRvCit0ZXN0IG1vc3Qgb2YgdGhlIG1hYzgwMjExIGZ1bmN0aW9uYWxpdHkgYW5kIHVzZXIgc3BhY2UgdG9vbHMgKGUuZy4sCitob3N0YXBkIGFuZCB3cGFfc3VwcGxpY2FudCkgaW4gYSB3YXkgdGhhdCBtYXRjaGVzIHZlcnkgY2xvc2VseSB3aXRoCit0aGUgbm9ybWFsIGNhc2Ugb2YgdXNpbmcgcmVhbCBXTEFOIGhhcmR3YXJlLiBGcm9tIHRoZSBtYWM4MDIxMSB2aWV3Citwb2ludCwgbWFjODAyMTFfaHdzaW0gaXMgeWV0IGFub3RoZXIgaGFyZHdhcmUgZHJpdmVyLCBpLmUuLCBubyBjaGFuZ2VzCit0byBtYWM4MDIxMSBhcmUgbmVlZGVkIHRvIHVzZSB0aGlzIHRlc3RpbmcgdG9vbC4KKworVGhlIG1haW4gZ29hbCBmb3IgbWFjODAyMTFfaHdzaW0gaXMgdG8gbWFrZSBpdCBlYXNpZXIgZm9yIGRldmVsb3BlcnMKK3RvIHRlc3QgdGhlaXIgY29kZSBhbmQgd29yayB3aXRoIG5ldyBmZWF0dXJlcyB0byBtYWM4MDIxMSwgaG9zdGFwZCwKK2FuZCB3cGFfc3VwcGxpY2FudC4gVGhlIHNpbXVsYXRlZCByYWRpb3MgZG8gbm90IGhhdmUgdGhlIGxpbWl0YXRpb25zCitvZiByZWFsIGhhcmR3YXJlLCBzbyBpdCBpcyBlYXN5IHRvIGdlbmVyYXRlIGFuIGFyYml0cmFyeSB0ZXN0IHNldHVwCithbmQgYWx3YXlzIHJlcHJvZHVjZSB0aGUgc2FtZSBzZXR1cCBmb3IgZnV0dXJlIHRlc3RzLiBJbiBhZGRpdGlvbiwKK3NpbmNlIGFsbCByYWRpbyBvcGVyYXRpb24gaXMgc2ltdWxhdGVkLCBhbnkgY2hhbm5lbCBjYW4gYmUgdXNlZCBpbgordGVzdHMgcmVnYXJkbGVzcyBvZiByZWd1bGF0b3J5IHJ1bGVzLgorCittYWM4MDIxMV9od3NpbSBrZXJuZWwgbW9kdWxlIGhhcyBhIHBhcmFtZXRlciAncmFkaW9zJyB0aGF0IGNhbiBiZSB1c2VkCit0byBzZWxlY3QgaG93IG1hbnkgcmFkaW9zIGFyZSBzaW11bGF0ZWQgKGRlZmF1bHQgMikuIFRoaXMgYWxsb3dzCitjb25maWd1cmF0aW9uIG9mIGJvdGggdmVyeSBzaW1wbHkgc2V0dXBzIChlLmcuLCBqdXN0IGEgc2luZ2xlIGFjY2VzcworcG9pbnQgYW5kIGEgc3RhdGlvbikgb3IgbGFyZ2Ugc2NhbGUgdGVzdHMgKG11bHRpcGxlIGFjY2VzcyBwb2ludHMgd2l0aAoraHVuZHJlZHMgb2Ygc3RhdGlvbnMpLgorCittYWM4MDIxMV9od3NpbSB3b3JrcyBieSB0cmFja2luZyB0aGUgY3VycmVudCBjaGFubmVsIG9mIGVhY2ggdmlydHVhbAorcmFkaW8gYW5kIGNvcHlpbmcgYWxsIHRyYW5zbWl0dGVkIGZyYW1lcyB0byBhbGwgb3RoZXIgcmFkaW9zIHRoYXQgYXJlCitjdXJyZW50bHkgZW5hYmxlZCBhbmQgb24gdGhlIHNhbWUgY2hhbm5lbCBhcyB0aGUgdHJhbnNtaXR0aW5nCityYWRpby4gU29mdHdhcmUgZW5jcnlwdGlvbiBpbiBtYWM4MDIxMSBpcyB1c2VkIHNvIHRoYXQgdGhlIGZyYW1lcyBhcmUKK2FjdHVhbGx5IGVuY3J5cHRlZCBvdmVyIHRoZSB2aXJ0dWFsIGFpciBpbnRlcmZhY2UgdG8gYWxsb3cgbW9yZQorY29tcGxldGUgdGVzdGluZyBvZiBlbmNyeXB0aW9uLgorCitBIGdsb2JhbCBtb25pdG9yaW5nIG5ldGRldiwgaHdzaW0jLCBpcyBjcmVhdGVkIGluZGVwZW5kZW50IG9mCittYWM4MDIxMS4gVGhpcyBpbnRlcmZhY2UgY2FuIGJlIHVzZWQgdG8gbW9uaXRvciBhbGwgdHJhbnNtaXR0ZWQgZnJhbWVzCityZWdhcmRsZXNzIG9mIGNoYW5uZWwuCisKKworU2ltcGxlIGV4YW1wbGUKKworVGhpcyBleGFtcGxlIHNob3dzIGhvdyB0byB1c2UgbWFjODAyMTFfaHdzaW0gdG8gc2ltdWxhdGUgdHdvIHJhZGlvczoKK29uZSB0byBhY3QgYXMgYW4gYWNjZXNzIHBvaW50IGFuZCB0aGUgb3RoZXIgYXMgYSBzdGF0aW9uIHRoYXQKK2Fzc29jaWF0ZXMgd2l0aCB0aGUgQVAuIGhvc3RhcGQgYW5kIHdwYV9zdXBwbGljYW50IGFyZSB1c2VkIHRvIHRha2UKK2NhcmUgb2YgV1BBMi1QU0sgYXV0aGVudGljYXRpb24uIEluIGFkZGl0aW9uLCBob3N0YXBkIGlzIGFsc28KK3Byb2Nlc3NpbmcgYWNjZXNzIHBvaW50IHNpZGUgb2YgYXNzb2NpYXRpb24uCisKKworIyBCdWlsZCBtYWM4MDIxMV9od3NpbSBhcyBwYXJ0IG9mIGtlcm5lbCBjb25maWd1cmF0aW9uCisKKyMgTG9hZCB0aGUgbW9kdWxlCittb2Rwcm9iZSBtYWM4MDIxMV9od3NpbQorCisjIFJ1biBob3N0YXBkIChBUCkgZm9yIHdsYW4wCitob3N0YXBkIGhvc3RhcGQuY29uZgorCisjIFJ1biB3cGFfc3VwcGxpY2FudCAoc3RhdGlvbikgZm9yIHdsYW4xCit3cGFfc3VwcGxpY2FudCAtRHdleHQgLWl3bGFuMSAtYyB3cGFfc3VwcGxpY2FudC5jb25mCisKKworTW9yZSB0ZXN0IGNhc2VzIGFyZSBhdmFpbGFibGUgaW4gaG9zdGFwLmdpdDoKK2dpdDovL3cxLmZpL3Nydi9naXQvaG9zdGFwLmdpdCBhbmQgbWFjODAyMTFfaHdzaW0vdGVzdHMgc3ViZGlyZWN0b3J5CisoaHR0cDovL3cxLmZpL2dpdHdlYi9naXR3ZWIuY2dpP3A9aG9zdGFwLmdpdDthPXRyZWU7Zj1tYWM4MDIxMV9od3NpbS90ZXN0cykKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9tYWM4MDIxMV9od3NpbS9ob3N0YXBkLmNvbmYgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbWFjODAyMTFfaHdzaW0vaG9zdGFwZC5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4Y2RlN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbWFjODAyMTFfaHdzaW0vaG9zdGFwZC5jb25mCkBAIC0wLDAgKzEsMTEgQEAKK2ludGVyZmFjZT13bGFuMAorZHJpdmVyPW5sODAyMTEKKworaHdfbW9kZT1nCitjaGFubmVsPTEKK3NzaWQ9bWFjODAyMTEgdGVzdAorCit3cGE9Mgord3BhX2tleV9tZ210PVdQQS1QU0sKK3dwYV9wYWlyd2lzZT1DQ01QCit3cGFfcGFzc3BocmFzZT0xMjM0NTY3OApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL21hYzgwMjExX2h3c2ltL3dwYV9zdXBwbGljYW50LmNvbmYgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbWFjODAyMTFfaHdzaW0vd3BhX3N1cHBsaWNhbnQuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTkxMjhjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL21hYzgwMjExX2h3c2ltL3dwYV9zdXBwbGljYW50LmNvbmYKQEAgLTAsMCArMSwxMCBAQAorY3RybF9pbnRlcmZhY2U9L3Zhci9ydW4vd3BhX3N1cHBsaWNhbnQKKworbmV0d29yaz17CisJc3NpZD0ibWFjODAyMTEgdGVzdCIKKwlwc2s9IjEyMzQ1Njc4IgorCWtleV9tZ210PVdQQS1QU0sKKwlwcm90bz1XUEEyCisJcGFpcndpc2U9Q0NNUAorCWdyb3VwPUNDTVAKK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9tcGxzLXN5c2N0bC50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbXBscy1zeXNjdGwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllZDE1ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbXBscy1zeXNjdGwudHh0CkBAIC0wLDAgKzEsMjkgQEAKKy9wcm9jL3N5cy9uZXQvbXBscy8qIFZhcmlhYmxlczoKKworcGxhdGZvcm1fbGFiZWxzIC0gSU5URUdFUgorCU51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBwbGF0Zm9ybSBsYWJlbCB0YWJsZS4gIEl0IGlzIG5vdAorCXBvc3NpYmxlIHRvIGNvbmZpZ3VyZSBmb3J3YXJkaW5nIGZvciBsYWJlbCB2YWx1ZXMgZXF1YWwgdG8gb3IKKwlncmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZiBwbGF0Zm9ybSBsYWJlbHMuCisKKwlBIGRlbnNlIHV0bGl6aWF0aW9uIG9mIHRoZSBlbnRyaWVzIGluIHRoZSBwbGF0Zm9ybSBsYWJlbCB0YWJsZQorCWlzIHBvc3NpYmxlIGFuZCBleHBlY3RlZCBhYXMgdGhlIHBsYXRmb3JtIGxhYmVscyBhcmUgbG9jYWxseQorCWFsbG9jYXRlZC4KKworCUlmIHRoZSBudW1iZXIgb2YgcGxhdGZvcm0gbGFiZWwgdGFibGUgZW50cmllcyBpcyBzZXQgdG8gMCBubworCWxhYmVsIHdpbGwgYmUgcmVjb2duaXplZCBieSB0aGUga2VybmVsIGFuZCBtcGxzIGZvcndhcmRpbmcKKwl3aWxsIGJlIGRpc2FibGVkLgorCisJUmVkdWNpbmcgdGhpcyB2YWx1ZSB3aWxsIHJlbW92ZSBhbGwgbGFiZWwgcm91dGluZyBlbnRyaWVzIHRoYXQKKwlubyBsb25nZXIgZml0IGluIHRoZSB0YWJsZS4KKworCVBvc3NpYmxlIHZhbHVlczogMCAtIDEwNDg1NzUKKwlEZWZhdWx0OiAwCisKK2NvbmYvPGludGVyZmFjZT4vaW5wdXQgLSBCT09MCisJQ29udHJvbCB3aGV0aGVyIHBhY2tldHMgY2FuIGJlIGlucHV0IG9uIHRoaXMgaW50ZXJmYWNlLgorCisJSWYgZGlzYWJsZWQsIHBhY2tldHMgd2lsbCBiZSBkaXNjYXJkZWQgd2l0aG91dCBmdXJ0aGVyCisJcHJvY2Vzc2luZy4KKworCTAgLSBkaXNhYmxlZCAoZGVmYXVsdCkKKwlub3QgMCAtIGVuYWJsZWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9tdWx0aXF1ZXVlLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9tdWx0aXF1ZXVlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2FhMGUzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL211bHRpcXVldWUudHh0CkBAIC0wLDAgKzEsNzkgQEAKKworCQlIT1dUTyBmb3IgbXVsdGlxdWV1ZSBuZXR3b3JrIGRldmljZSBzdXBwb3J0CisJCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU2VjdGlvbiAxOiBCYXNlIGRyaXZlciByZXF1aXJlbWVudHMgZm9yIGltcGxlbWVudGluZyBtdWx0aXF1ZXVlIHN1cHBvcnQKKworSW50cm86IEtlcm5lbCBzdXBwb3J0IGZvciBtdWx0aXF1ZXVlIGRldmljZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitLZXJuZWwgc3VwcG9ydCBmb3IgbXVsdGlxdWV1ZSBkZXZpY2VzIGlzIGFsd2F5cyBwcmVzZW50LgorCitTZWN0aW9uIDE6IEJhc2UgZHJpdmVyIHJlcXVpcmVtZW50cyBmb3IgaW1wbGVtZW50aW5nIG11bHRpcXVldWUgc3VwcG9ydAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQmFzZSBkcml2ZXJzIGFyZSByZXF1aXJlZCB0byB1c2UgdGhlIG5ldyBhbGxvY19ldGhlcmRldl9tcSgpIG9yCithbGxvY19uZXRkZXZfbXEoKSBmdW5jdGlvbnMgdG8gYWxsb2NhdGUgdGhlIHN1YnF1ZXVlcyBmb3IgdGhlIGRldmljZS4gIFRoZQordW5kZXJseWluZyBrZXJuZWwgQVBJIHdpbGwgdGFrZSBjYXJlIG9mIHRoZSBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24gb2YKK3RoZSBzdWJxdWV1ZSBtZW1vcnksIGFzIHdlbGwgYXMgbmV0ZGV2IGNvbmZpZ3VyYXRpb24gb2Ygd2hlcmUgdGhlIHF1ZXVlcworZXhpc3QgaW4gbWVtb3J5LgorCitUaGUgYmFzZSBkcml2ZXIgd2lsbCBhbHNvIG5lZWQgdG8gbWFuYWdlIHRoZSBxdWV1ZXMgYXMgaXQgZG9lcyB0aGUgZ2xvYmFsCituZXRkZXYtPnF1ZXVlX2xvY2sgdG9kYXkuICBUaGVyZWZvcmUgYmFzZSBkcml2ZXJzIHNob3VsZCB1c2UgdGhlCituZXRpZl97c3RhcnR8c3RvcHx3YWtlfV9zdWJxdWV1ZSgpIGZ1bmN0aW9ucyB0byBtYW5hZ2UgZWFjaCBxdWV1ZSB3aGlsZSB0aGUKK2RldmljZSBpcyBzdGlsbCBvcGVyYXRpb25hbC4gIG5ldGRldi0+cXVldWVfbG9jayBpcyBzdGlsbCB1c2VkIHdoZW4gdGhlIGRldmljZQorY29tZXMgb25saW5lIG9yIHdoZW4gaXQncyBjb21wbGV0ZWx5IHNodXQgZG93biAodW5yZWdpc3Rlcl9uZXRkZXYoKSwgZXRjLikuCisKKworU2VjdGlvbiAyOiBRZGlzYyBzdXBwb3J0IGZvciBtdWx0aXF1ZXVlIGRldmljZXMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ3VycmVudGx5IHR3byBxZGlzY3MgYXJlIG9wdGltaXplZCBmb3IgbXVsdGlxdWV1ZSBkZXZpY2VzLiAgVGhlIGZpcnN0IGlzIHRoZQorZGVmYXVsdCBwZmlmb19mYXN0IHFkaXNjLiAgVGhpcyBxZGlzYyBzdXBwb3J0cyBvbmUgcWRpc2MgcGVyIGhhcmR3YXJlIHF1ZXVlLgorQSBuZXcgcm91bmQtcm9iaW4gcWRpc2MsIHNjaF9tdWx0aXEgYWxzbyBzdXBwb3J0cyBtdWx0aXBsZSBoYXJkd2FyZSBxdWV1ZXMuIFRoZQorcWRpc2MgaXMgcmVzcG9uc2libGUgZm9yIGNsYXNzaWZ5aW5nIHRoZSBza2IncyBhbmQgdGhlbiBkaXJlY3RpbmcgdGhlIHNrYidzIHRvCitiYW5kcyBhbmQgcXVldWVzIGJhc2VkIG9uIHRoZSB2YWx1ZSBpbiBza2ItPnF1ZXVlX21hcHBpbmcuICBVc2UgdGhpcyBmaWVsZCBpbgordGhlIGJhc2UgZHJpdmVyIHRvIGRldGVybWluZSB3aGljaCBxdWV1ZSB0byBzZW5kIHRoZSBza2IgdG8uCisKK3NjaF9tdWx0aXEgaGFzIGJlZW4gYWRkZWQgZm9yIGhhcmR3YXJlIHRoYXQgd2lzaGVzIHRvIGF2b2lkIGhlYWQtb2YtbGluZQorYmxvY2tpbmcuICBJdCB3aWxsIGN5Y2xlIHRob3VnaCB0aGUgYmFuZHMgYW5kIHZlcmlmeSB0aGF0IHRoZSBoYXJkd2FyZSBxdWV1ZQorYXNzb2NpYXRlZCB3aXRoIHRoZSBiYW5kIGlzIG5vdCBzdG9wcGVkIHByaW9yIHRvIGRlcXVldWluZyBhIHBhY2tldC4KKworT24gcWRpc2MgbG9hZCwgdGhlIG51bWJlciBvZiBiYW5kcyBpcyBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIHF1ZXVlcyBvbiB0aGUKK2hhcmR3YXJlLiAgT25jZSB0aGUgYXNzb2NpYXRpb24gaXMgbWFkZSwgYW55IHNrYiB3aXRoIHNrYi0+cXVldWVfbWFwcGluZyBzZXQsCit3aWxsIGJlIHF1ZXVlZCB0byB0aGUgYmFuZCBhc3NvY2lhdGVkIHdpdGggdGhlIGhhcmR3YXJlIHF1ZXVlLgorCisKK1NlY3Rpb24gMzogQnJpZWYgaG93dG8gdXNpbmcgTVVMVElRIGZvciBtdWx0aXF1ZXVlIGRldmljZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgdXNlcnNwYWNlIGNvbW1hbmQgJ3RjLCcgcGFydCBvZiB0aGUgaXByb3V0ZTIgcGFja2FnZSwgaXMgdXNlZCB0byBjb25maWd1cmUKK3FkaXNjcy4gIFRvIGFkZCB0aGUgTVVMVElRIHFkaXNjIHRvIHlvdXIgbmV0d29yayBkZXZpY2UsIGFzc3VtaW5nIHRoZSBkZXZpY2UKK2lzIGNhbGxlZCBldGgwLCBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOgorCisjIHRjIHFkaXNjIGFkZCBkZXYgZXRoMCByb290IGhhbmRsZSAxOiBtdWx0aXEKKworVGhlIHFkaXNjIHdpbGwgYWxsb2NhdGUgdGhlIG51bWJlciBvZiBiYW5kcyB0byBlcXVhbCB0aGUgbnVtYmVyIG9mIHF1ZXVlcyB0aGF0Cit0aGUgZGV2aWNlIHJlcG9ydHMsIGFuZCBicmluZyB0aGUgcWRpc2Mgb25saW5lLiAgQXNzdW1pbmcgZXRoMCBoYXMgNCBUeAorcXVldWVzLCB0aGUgYmFuZCBtYXBwaW5nIHdvdWxkIGxvb2sgbGlrZToKKworYmFuZCAwID0+IHF1ZXVlIDAKK2JhbmQgMSA9PiBxdWV1ZSAxCitiYW5kIDIgPT4gcXVldWUgMgorYmFuZCAzID0+IHF1ZXVlIDMKKworVHJhZmZpYyB3aWxsIGJlZ2luIGZsb3dpbmcgdGhyb3VnaCBlYWNoIHF1ZXVlIGJhc2VkIG9uIGVpdGhlciB0aGUgc2ltcGxlX3R4X2hhc2gKK2Z1bmN0aW9uIG9yIGJhc2VkIG9uIG5ldGRldi0+c2VsZWN0X3F1ZXVlKCkgaWYgeW91IGhhdmUgaXQgZGVmaW5lZC4KKworVGhlIGJlaGF2aW9yIG9mIHRjIGZpbHRlcnMgcmVtYWlucyB0aGUgc2FtZS4gIEhvd2V2ZXIgYSBuZXcgdGMgYWN0aW9uLAorc2tiZWRpdCwgaGFzIGJlZW4gYWRkZWQuICBBc3N1bWluZyB5b3Ugd2FudGVkIHRvIHJvdXRlIGFsbCB0cmFmZmljIHRvIGEKK3NwZWNpZmljIGhvc3QsIGZvciBleGFtcGxlIDE5Mi4xNjguMC4zLCB0aHJvdWdoIGEgc3BlY2lmaWMgcXVldWUgeW91IGNvdWxkIHVzZQordGhpcyBhY3Rpb24gYW5kIGVzdGFibGlzaCBhIGZpbHRlciBzdWNoIGFzOgorCit0YyBmaWx0ZXIgYWRkIGRldiBldGgwIHBhcmVudCAxOiBwcm90b2NvbCBpcCBwcmlvIDEgdTMyIFwKKwltYXRjaCBpcCBkc3QgMTkyLjE2OC4wLjMgXAorCWFjdGlvbiBza2JlZGl0IHF1ZXVlX21hcHBpbmcgMworCitBdXRob3I6IEFsZXhhbmRlciBEdXljayA8YWxleGFuZGVyLmguZHV5Y2tAaW50ZWwuY29tPgorT3JpZ2luYWwgQXV0aG9yOiBQZXRlciBQLiBXYXNraWV3aWN6IEpyLiA8cGV0ZXIucC53YXNraWV3aWN6LmpyQGludGVsLmNvbT4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRjb25zb2xlLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRjb25zb2xlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDQwOWEzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGNvbnNvbGUudHh0CkBAIC0wLDAgKzEsMjEwIEBACisKK3N0YXJ0ZWQgYnkgSW5nbyBNb2xuYXIgPG1pbmdvQHJlZGhhdC5jb20+LCAyMDAxLjA5LjE3CisyLjYgcG9ydCBhbmQgbmV0cG9sbCBhcGkgYnkgTWF0dCBNYWNrYWxsIDxtcG1Ac2VsZW5pYy5jb20+LCBTZXAgOSAyMDAzCitJUHY2IHN1cHBvcnQgYnkgQ29uZyBXYW5nIDx4aXlvdS53YW5nY29uZ0BnbWFpbC5jb20+LCBKYW4gMSAyMDEzCitFeHRlbmRlZCBjb25zb2xlIHN1cHBvcnQgYnkgVGVqdW4gSGVvIDx0akBrZXJuZWwub3JnPiwgTWF5IDEgMjAxNQorCitQbGVhc2Ugc2VuZCBidWcgcmVwb3J0cyB0byBNYXR0IE1hY2thbGwgPG1wbUBzZWxlbmljLmNvbT4KK1NhdHlhbSBTaGFybWEgPHNhdHlhbS5zaGFybWFAZ21haWwuY29tPiwgYW5kIENvbmcgV2FuZyA8eGl5b3Uud2FuZ2NvbmdAZ21haWwuY29tPgorCitJbnRyb2R1Y3Rpb246Cis9PT09PT09PT09PT09CisKK1RoaXMgbW9kdWxlIGxvZ3Mga2VybmVsIHByaW50ayBtZXNzYWdlcyBvdmVyIFVEUCBhbGxvd2luZyBkZWJ1Z2dpbmcgb2YKK3Byb2JsZW0gd2hlcmUgZGlzayBsb2dnaW5nIGZhaWxzIGFuZCBzZXJpYWwgY29uc29sZXMgYXJlIGltcHJhY3RpY2FsLgorCitJdCBjYW4gYmUgdXNlZCBlaXRoZXIgYnVpbHQtaW4gb3IgYXMgYSBtb2R1bGUuIEFzIGEgYnVpbHQtaW4sCituZXRjb25zb2xlIGluaXRpYWxpemVzIGltbWVkaWF0ZWx5IGFmdGVyIE5JQyBjYXJkcyBhbmQgd2lsbCBicmluZyB1cAordGhlIHNwZWNpZmllZCBpbnRlcmZhY2UgYXMgc29vbiBhcyBwb3NzaWJsZS4gV2hpbGUgdGhpcyBkb2Vzbid0IGFsbG93CitjYXB0dXJlIG9mIGVhcmx5IGtlcm5lbCBwYW5pY3MsIGl0IGRvZXMgY2FwdHVyZSBtb3N0IG9mIHRoZSBib290Citwcm9jZXNzLgorCitTZW5kZXIgYW5kIHJlY2VpdmVyIGNvbmZpZ3VyYXRpb246Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0l0IHRha2VzIGEgc3RyaW5nIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyICJuZXRjb25zb2xlIiBpbiB0aGUKK2ZvbGxvd2luZyBmb3JtYXQ6CisKKyBuZXRjb25zb2xlPVsrXVtzcmMtcG9ydF1AW3NyYy1pcF0vWzxkZXY+XSxbdGd0LXBvcnRdQDx0Z3QtaXA+L1t0Z3QtbWFjYWRkcl0KKworICAgd2hlcmUKKyAgICAgICAgKyAgICAgICAgICAgICBpZiBwcmVzZW50LCBlbmFibGUgZXh0ZW5kZWQgY29uc29sZSBzdXBwb3J0CisgICAgICAgIHNyYy1wb3J0ICAgICAgc291cmNlIGZvciBVRFAgcGFja2V0cyAoZGVmYXVsdHMgdG8gNjY2NSkKKyAgICAgICAgc3JjLWlwICAgICAgICBzb3VyY2UgSVAgdG8gdXNlIChpbnRlcmZhY2UgYWRkcmVzcykKKyAgICAgICAgZGV2ICAgICAgICAgICBuZXR3b3JrIGludGVyZmFjZSAoZXRoMCkKKyAgICAgICAgdGd0LXBvcnQgICAgICBwb3J0IGZvciBsb2dnaW5nIGFnZW50ICg2NjY2KQorICAgICAgICB0Z3QtaXAgICAgICAgIElQIGFkZHJlc3MgZm9yIGxvZ2dpbmcgYWdlbnQKKyAgICAgICAgdGd0LW1hY2FkZHIgICBldGhlcm5ldCBNQUMgYWRkcmVzcyBmb3IgbG9nZ2luZyBhZ2VudCAoYnJvYWRjYXN0KQorCitFeGFtcGxlczoKKworIGxpbnV4IG5ldGNvbnNvbGU9NDQ0NEAxMC4wLjAuMS9ldGgxLDkzNTNAMTAuMC4wLjIvMTI6MzQ6NTY6Nzg6OWE6YmMKKworICBvcgorCisgaW5zbW9kIG5ldGNvbnNvbGUgbmV0Y29uc29sZT1ALyxAMTAuMC4wLjIvCisKKyAgb3IgdXNpbmcgSVB2NgorCisgaW5zbW9kIG5ldGNvbnNvbGUgbmV0Y29uc29sZT1ALyxAZmQwMDoxOjI6Mzo6MS8KKworSXQgYWxzbyBzdXBwb3J0cyBsb2dnaW5nIHRvIG11bHRpcGxlIHJlbW90ZSBhZ2VudHMgYnkgc3BlY2lmeWluZworcGFyYW1ldGVycyBmb3IgdGhlIG11bHRpcGxlIGFnZW50cyBzZXBhcmF0ZWQgYnkgc2VtaWNvbG9ucyBhbmQgdGhlCitjb21wbGV0ZSBzdHJpbmcgZW5jbG9zZWQgaW4gInF1b3RlcyIsIHRodXNseToKKworIG1vZHByb2JlIG5ldGNvbnNvbGUgbmV0Y29uc29sZT0iQC8sQDEwLjAuMC4yLztAL2V0aDEsNjg5MkAxMC4wLjAuMy8iCisKK0J1aWx0LWluIG5ldGNvbnNvbGUgc3RhcnRzIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBUQ1Agc3RhY2sgaXMKK2luaXRpYWxpemVkIGFuZCBhdHRlbXB0cyB0byBicmluZyB1cCB0aGUgc3VwcGxpZWQgZGV2IGF0IHRoZSBzdXBwbGllZAorYWRkcmVzcy4KKworVGhlIHJlbW90ZSBob3N0IGhhcyBzZXZlcmFsIG9wdGlvbnMgdG8gcmVjZWl2ZSB0aGUga2VybmVsIG1lc3NhZ2VzLAorZm9yIGV4YW1wbGU6CisKKzEpIHN5c2xvZ2QKKworMikgbmV0Y2F0CisKKyAgIE9uIGRpc3RyaWJ1dGlvbnMgdXNpbmcgYSBCU0QtYmFzZWQgbmV0Y2F0IHZlcnNpb24gKGUuZy4gRmVkb3JhLAorICAgb3BlblNVU0UgYW5kIFVidW50dSkgdGhlIGxpc3RlbmluZyBwb3J0IG11c3QgYmUgc3BlY2lmaWVkIHdpdGhvdXQKKyAgIHRoZSAtcCBzd2l0Y2g6CisKKyAgICduYyAtdSAtbCAtcCA8cG9ydD4nIC8gJ25jIC11IC1sIDxwb3J0Picgb3IKKyAgICduZXRjYXQgLXUgLWwgLXAgPHBvcnQ+JyAvICduZXRjYXQgLXUgLWwgPHBvcnQ+JworCiszKSBzb2NhdAorCisgICAnc29jYXQgdWRwLXJlY3Y6PHBvcnQ+IC0nCisKK0R5bmFtaWMgcmVjb25maWd1cmF0aW9uOgorPT09PT09PT09PT09PT09PT09PT09PT09CisKK0R5bmFtaWMgcmVjb25maWd1cmFiaWxpdHkgaXMgYSB1c2VmdWwgYWRkaXRpb24gdG8gbmV0Y29uc29sZSB0aGF0IGVuYWJsZXMKK3JlbW90ZSBsb2dnaW5nIHRhcmdldHMgdG8gYmUgZHluYW1pY2FsbHkgYWRkZWQsIHJlbW92ZWQsIG9yIGhhdmUgdGhlaXIKK3BhcmFtZXRlcnMgcmVjb25maWd1cmVkIGF0IHJ1bnRpbWUgZnJvbSBhIGNvbmZpZ2ZzLWJhc2VkIHVzZXJzcGFjZSBpbnRlcmZhY2UuCitbIE5vdGUgdGhhdCB0aGUgcGFyYW1ldGVycyBvZiBuZXRjb25zb2xlIHRhcmdldHMgdGhhdCB3ZXJlIHNwZWNpZmllZC9jcmVhdGVkCitmcm9tIHRoZSBib290L21vZHVsZSBvcHRpb24gYXJlIG5vdCBleHBvc2VkIHZpYSB0aGlzIGludGVyZmFjZSwgYW5kIGhlbmNlCitjYW5ub3QgYmUgbW9kaWZpZWQgZHluYW1pY2FsbHkuIF0KKworVG8gaW5jbHVkZSB0aGlzIGZlYXR1cmUsIHNlbGVjdCBDT05GSUdfTkVUQ09OU09MRV9EWU5BTUlDIHdoZW4gYnVpbGRpbmcgdGhlCituZXRjb25zb2xlIG1vZHVsZSAob3Iga2VybmVsLCBpZiBuZXRjb25zb2xlIGlzIGJ1aWx0LWluKS4KKworU29tZSBleGFtcGxlcyBmb2xsb3cgKHdoZXJlIGNvbmZpZ2ZzIGlzIG1vdW50ZWQgYXQgdGhlIC9zeXMva2VybmVsL2NvbmZpZworbW91bnRwb2ludCkuCisKK1RvIGFkZCBhIHJlbW90ZSBsb2dnaW5nIHRhcmdldCAodGFyZ2V0IG5hbWVzIGNhbiBiZSBhcmJpdHJhcnkpOgorCisgY2QgL3N5cy9rZXJuZWwvY29uZmlnL25ldGNvbnNvbGUvCisgbWtkaXIgdGFyZ2V0MQorCitOb3RlIHRoYXQgbmV3bHkgY3JlYXRlZCB0YXJnZXRzIGhhdmUgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIChhcyBtZW50aW9uZWQKK2Fib3ZlKSBhbmQgYXJlIGRpc2FibGVkIGJ5IGRlZmF1bHQgLS0gdGhleSBtdXN0IGZpcnN0IGJlIGVuYWJsZWQgYnkgd3JpdGluZworIjEiIHRvIHRoZSAiZW5hYmxlZCIgYXR0cmlidXRlICh1c3VhbGx5IGFmdGVyIHNldHRpbmcgcGFyYW1ldGVycyBhY2NvcmRpbmdseSkKK2FzIGRlc2NyaWJlZCBiZWxvdy4KKworVG8gcmVtb3ZlIGEgdGFyZ2V0OgorCisgcm1kaXIgL3N5cy9rZXJuZWwvY29uZmlnL25ldGNvbnNvbGUvb3RoZXJ0YXJnZXQvCisKK1RoZSBpbnRlcmZhY2UgZXhwb3NlcyB0aGVzZSBwYXJhbWV0ZXJzIG9mIGEgbmV0Y29uc29sZSB0YXJnZXQgdG8gdXNlcnNwYWNlOgorCisJZW5hYmxlZAkJSXMgdGhpcyB0YXJnZXQgY3VycmVudGx5IGVuYWJsZWQ/CShyZWFkLXdyaXRlKQorCWV4dGVuZGVkCUV4dGVuZGVkIG1vZGUgZW5hYmxlZAkJCShyZWFkLXdyaXRlKQorCWRldl9uYW1lCUxvY2FsIG5ldHdvcmsgaW50ZXJmYWNlIG5hbWUJCShyZWFkLXdyaXRlKQorCWxvY2FsX3BvcnQJU291cmNlIFVEUCBwb3J0IHRvIHVzZQkJCShyZWFkLXdyaXRlKQorCXJlbW90ZV9wb3J0CVJlbW90ZSBhZ2VudCdzIFVEUCBwb3J0CQkJKHJlYWQtd3JpdGUpCisJbG9jYWxfaXAJU291cmNlIElQIGFkZHJlc3MgdG8gdXNlCQkocmVhZC13cml0ZSkKKwlyZW1vdGVfaXAJUmVtb3RlIGFnZW50J3MgSVAgYWRkcmVzcwkJKHJlYWQtd3JpdGUpCisJbG9jYWxfbWFjCUxvY2FsIGludGVyZmFjZSdzIE1BQyBhZGRyZXNzCQkocmVhZC1vbmx5KQorCXJlbW90ZV9tYWMJUmVtb3RlIGFnZW50J3MgTUFDIGFkZHJlc3MJCShyZWFkLXdyaXRlKQorCitUaGUgImVuYWJsZWQiIGF0dHJpYnV0ZSBpcyBhbHNvIHVzZWQgdG8gY29udHJvbCB3aGV0aGVyIHRoZSBwYXJhbWV0ZXJzIG9mCithIHRhcmdldCBjYW4gYmUgdXBkYXRlZCBvciBub3QgLS0geW91IGNhbiBtb2RpZnkgdGhlIHBhcmFtZXRlcnMgb2Ygb25seQorZGlzYWJsZWQgdGFyZ2V0cyAoaS5lLiBpZiAiZW5hYmxlZCIgaXMgMCkuCisKK1RvIHVwZGF0ZSBhIHRhcmdldCdzIHBhcmFtZXRlcnM6CisKKyBjYXQgZW5hYmxlZAkJCQkjIGNoZWNrIGlmIGVuYWJsZWQgaXMgMQorIGVjaG8gMCA+IGVuYWJsZWQJCQkjIGRpc2FibGUgdGhlIHRhcmdldCAoaWYgcmVxdWlyZWQpCisgZWNobyBldGgyID4gZGV2X25hbWUJCQkjIHNldCBsb2NhbCBpbnRlcmZhY2UKKyBlY2hvIDEwLjAuMC40ID4gcmVtb3RlX2lwCQkjIHVwZGF0ZSBzb21lIHBhcmFtZXRlcgorIGVjaG8gY2I6YTk6ODc6NjU6NDM6MjEgPiByZW1vdGVfbWFjCSMgdXBkYXRlIG1vcmUgcGFyYW1ldGVycworIGVjaG8gMSA+IGVuYWJsZWQJCQkjIGVuYWJsZSB0YXJnZXQgYWdhaW4KKworWW91IGNhbiBhbHNvIHVwZGF0ZSB0aGUgbG9jYWwgaW50ZXJmYWNlIGR5bmFtaWNhbGx5LiBUaGlzIGlzIGVzcGVjaWFsbHkKK3VzZWZ1bCBpZiB5b3Ugd2FudCB0byB1c2UgaW50ZXJmYWNlcyB0aGF0IGhhdmUgbmV3bHkgY29tZSB1cCAoYW5kIG1heSBub3QKK2hhdmUgZXhpc3RlZCB3aGVuIG5ldGNvbnNvbGUgd2FzIGxvYWRlZCAvIGluaXRpYWxpemVkKS4KKworRXh0ZW5kZWQgY29uc29sZToKKz09PT09PT09PT09PT09PT09CisKK0lmICcrJyBpcyBwcmVmaXhlZCB0byB0aGUgY29uZmlndXJhdGlvbiBsaW5lIG9yICJleHRlbmRlZCIgY29uZmlnIGZpbGUKK2lzIHNldCB0byAxLCBleHRlbmRlZCBjb25zb2xlIHN1cHBvcnQgaXMgZW5hYmxlZC4gQW4gZXhhbXBsZSBib290CitwYXJhbSBmb2xsb3dzLgorCisgbGludXggbmV0Y29uc29sZT0rNDQ0NEAxMC4wLjAuMS9ldGgxLDkzNTNAMTAuMC4wLjIvMTI6MzQ6NTY6Nzg6OWE6YmMKKworTG9nIG1lc3NhZ2VzIGFyZSB0cmFuc21pdHRlZCB3aXRoIGV4dGVuZGVkIG1ldGFkYXRhIGhlYWRlciBpbiB0aGUKK2ZvbGxvd2luZyBmb3JtYXQgd2hpY2ggaXMgdGhlIHNhbWUgYXMgL2Rldi9rbXNnLgorCisgPGxldmVsPiw8c2VxdW51bT4sPHRpbWVzdGFtcD4sPGNvbnRmbGFnPjs8bWVzc2FnZSB0ZXh0PgorCitOb24gcHJpbnRhYmxlIGNoYXJhY3RlcnMgaW4gPG1lc3NhZ2UgdGV4dD4gYXJlIGVzY2FwZWQgdXNpbmcgIlx4ZmYiCitub3RhdGlvbi4gSWYgdGhlIG1lc3NhZ2UgY29udGFpbnMgb3B0aW9uYWwgZGljdGlvbmFyeSwgdmVyYmF0aW0KK25ld2xpbmUgaXMgdXNlZCBhcyB0aGUgZGVsaW1ldGVyLgorCitJZiBhIG1lc3NhZ2UgZG9lc24ndCBmaXQgaW4gY2VydGFpbiBudW1iZXIgb2YgYnl0ZXMgKGN1cnJlbnRseSAxMDAwKSwKK3RoZSBtZXNzYWdlIGlzIHNwbGl0IGludG8gbXVsdGlwbGUgZnJhZ21lbnRzIGJ5IG5ldGNvbnNvbGUuIFRoZXNlCitmcmFnbWVudHMgYXJlIHRyYW5zbWl0dGVkIHdpdGggIm5jZnJhZyIgaGVhZGVyIGZpZWxkIGFkZGVkLgorCisgbmNmcmFnPTxieXRlLW9mZnNldD4vPHRvdGFsLWJ5dGVzPgorCitGb3IgZXhhbXBsZSwgYXNzdW1pbmcgYSBsb3Qgc21hbGxlciBjaHVuayBzaXplLCBhIG1lc3NhZ2UgInRoZSBmaXJzdAorY2h1bmssIHRoZSAybmQgY2h1bmsuIiBtYXkgYmUgc3BsaXQgYXMgZm9sbG93cy4KKworIDYsNDE2LDE3NTg0MjYsLSxuY2ZyYWc9MC8zMTt0aGUgZmlyc3QgY2h1bmssCisgNiw0MTYsMTc1ODQyNiwtLG5jZnJhZz0xNi8zMTsgdGhlIDJuZCBjaHVuay4KKworTWlzY2VsbGFuZW91cyBub3RlczoKKz09PT09PT09PT09PT09PT09PT09CisKK1dBUk5JTkc6IHRoZSBkZWZhdWx0IHRhcmdldCBldGhlcm5ldCBzZXR0aW5nIHVzZXMgdGhlIGJyb2FkY2FzdAorZXRoZXJuZXQgYWRkcmVzcyB0byBzZW5kIHBhY2tldHMsIHdoaWNoIGNhbiBjYXVzZSBpbmNyZWFzZWQgbG9hZCBvbgorb3RoZXIgc3lzdGVtcyBvbiB0aGUgc2FtZSBldGhlcm5ldCBzZWdtZW50LgorCitUSVA6IHNvbWUgTEFOIHN3aXRjaGVzIG1heSBiZSBjb25maWd1cmVkIHRvIHN1cHByZXNzIGV0aGVybmV0IGJyb2FkY2FzdHMKK3NvIGl0IGlzIGFkdmlzZWQgdG8gZXhwbGljaXRseSBzcGVjaWZ5IHRoZSByZW1vdGUgYWdlbnRzJyBNQUMgYWRkcmVzc2VzCitmcm9tIHRoZSBjb25maWcgcGFyYW1ldGVycyBwYXNzZWQgdG8gbmV0Y29uc29sZS4KKworVElQOiB0byBmaW5kIG91dCB0aGUgTUFDIGFkZHJlc3Mgb2YsIHNheSwgMTAuMC4wLjIsIHlvdSBtYXkgdHJ5IHVzaW5nOgorCisgcGluZyAtYyAxIDEwLjAuMC4yIDsgL3NiaW4vYXJwIC1uIHwgZ3JlcCAxMC4wLjAuMgorCitUSVA6IGluIGNhc2UgdGhlIHJlbW90ZSBsb2dnaW5nIGFnZW50IGlzIG9uIGEgc2VwYXJhdGUgTEFOIHN1Ym5ldCB0aGFuCit0aGUgc2VuZGVyLCBpdCBpcyBzdWdnZXN0ZWQgdG8gdHJ5IHNwZWNpZnlpbmcgdGhlIE1BQyBhZGRyZXNzIG9mIHRoZQorZGVmYXVsdCBnYXRld2F5ICh5b3UgbWF5IHVzZSAvc2Jpbi9yb3V0ZSAtbiB0byBmaW5kIGl0IG91dCkgYXMgdGhlCityZW1vdGUgTUFDIGFkZHJlc3MgaW5zdGVhZC4KKworTk9URTogdGhlIG5ldHdvcmsgZGV2aWNlIChldGgxIGluIHRoZSBhYm92ZSBjYXNlKSBjYW4gcnVuIGFueSBraW5kCitvZiBvdGhlciBuZXR3b3JrIHRyYWZmaWMsIG5ldGNvbnNvbGUgaXMgbm90IGludHJ1c2l2ZS4gTmV0Y29uc29sZQorbWlnaHQgY2F1c2Ugc2xpZ2h0IGRlbGF5cyBpbiBvdGhlciB0cmFmZmljIGlmIHRoZSB2b2x1bWUgb2Yga2VybmVsCittZXNzYWdlcyBpcyBoaWdoLCBidXQgc2hvdWxkIGhhdmUgbm8gb3RoZXIgaW1wYWN0LgorCitOT1RFOiBpZiB5b3UgZmluZCB0aGF0IHRoZSByZW1vdGUgbG9nZ2luZyBhZ2VudCBpcyBub3QgcmVjZWl2aW5nIG9yCitwcmludGluZyBhbGwgbWVzc2FnZXMgZnJvbSB0aGUgc2VuZGVyLCBpdCBpcyBsaWtlbHkgdGhhdCB5b3UgaGF2ZSBzZXQKK3RoZSAiY29uc29sZV9sb2dsZXZlbCIgcGFyYW1ldGVyIChvbiB0aGUgc2VuZGVyKSB0byBvbmx5IHNlbmQgaGlnaAorcHJpb3JpdHkgbWVzc2FnZXMgdG8gdGhlIGNvbnNvbGUuIFlvdSBjYW4gY2hhbmdlIHRoaXMgYXQgcnVudGltZSB1c2luZzoKKworIGRtZXNnIC1uIDgKKworb3IgYnkgc3BlY2lmeWluZyAiZGVidWciIG9uIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIGF0IGJvb3QsIHRvIHNlbmQKK2FsbCBrZXJuZWwgbWVzc2FnZXMgdG8gdGhlIGNvbnNvbGUuIEEgc3BlY2lmaWMgdmFsdWUgZm9yIHRoaXMgcGFyYW1ldGVyCitjYW4gYWxzbyBiZSBzZXQgdXNpbmcgdGhlICJsb2dsZXZlbCIga2VybmVsIGJvb3Qgb3B0aW9uLiBTZWUgdGhlCitkbWVzZyg4KSBtYW4gcGFnZSBhbmQgRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQgZm9yIGRldGFpbHMuCisKK05ldGNvbnNvbGUgd2FzIGRlc2lnbmVkIHRvIGJlIGFzIGluc3RhbnRhbmVvdXMgYXMgcG9zc2libGUsIHRvCitlbmFibGUgdGhlIGxvZ2dpbmcgb2YgZXZlbiB0aGUgbW9zdCBjcml0aWNhbCBrZXJuZWwgYnVncy4gSXQgd29ya3MKK2Zyb20gSVJRIGNvbnRleHRzIGFzIHdlbGwsIGFuZCBkb2VzIG5vdCBlbmFibGUgaW50ZXJydXB0cyB3aGlsZQorc2VuZGluZyBwYWNrZXRzLiBEdWUgdG8gdGhlc2UgdW5pcXVlIG5lZWRzLCBjb25maWd1cmF0aW9uIGNhbm5vdAorYmUgbW9yZSBhdXRvbWF0aWMsIGFuZCBzb21lIGZ1bmRhbWVudGFsIGxpbWl0YXRpb25zIHdpbGwgcmVtYWluOgorb25seSBJUCBuZXR3b3JrcywgVURQIHBhY2tldHMgYW5kIGV0aGVybmV0IGRldmljZXMgYXJlIHN1cHBvcnRlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXYtRkFRLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXYtRkFRLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmUxYzZlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldi1GQVEudHh0CkBAIC0wLDAgKzEsMjI0IEBACisKK0luZm9ybWF0aW9uIHlvdSBuZWVkIHRvIGtub3cgYWJvdXQgbmV0ZGV2CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitROiBXaGF0IGlzIG5ldGRldj8KKworQTogSXQgaXMgYSBtYWlsaW5nIGxpc3QgZm9yIGFsbCBuZXR3b3JrLXJlbGF0ZWQgTGludXggc3R1ZmYuICBUaGlzIGluY2x1ZGVzCisgICBhbnl0aGluZyBmb3VuZCB1bmRlciBuZXQvICAoaS5lLiBjb3JlIGNvZGUgbGlrZSBJUHY2KSBhbmQgZHJpdmVycy9uZXQKKyAgIChpLmUuIGhhcmR3YXJlIHNwZWNpZmljIGRyaXZlcnMpIGluIHRoZSBMaW51eCBzb3VyY2UgdHJlZS4KKworICAgTm90ZSB0aGF0IHNvbWUgc3Vic3lzdGVtcyAoZS5nLiB3aXJlbGVzcyBkcml2ZXJzKSB3aGljaCBoYXZlIGEgaGlnaCB2b2x1bWUKKyAgIG9mIHRyYWZmaWMgaGF2ZSB0aGVpciBvd24gc3BlY2lmaWMgbWFpbGluZyBsaXN0cy4KKworICAgVGhlIG5ldGRldiBsaXN0IGlzIG1hbmFnZWQgKGxpa2UgbWFueSBvdGhlciBMaW51eCBtYWlsaW5nIGxpc3RzKSB0aHJvdWdoCisgICBWR0VSICggaHR0cDovL3ZnZXIua2VybmVsLm9yZy8gKSBhbmQgYXJjaGl2ZXMgY2FuIGJlIGZvdW5kIGJlbG93OgorCisJaHR0cDovL21hcmMuaW5mby8/bD1saW51eC1uZXRkZXYKKwlodHRwOi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL25ldGRldi8KKworICAgQXNpZGUgZnJvbSBzdWJzeXN0ZW1zIGxpa2UgdGhhdCBtZW50aW9uZWQgYWJvdmUsIGFsbCBuZXR3b3JrLXJlbGF0ZWQgTGludXgKKyAgIGRldmVsb3BtZW50IChpLmUuIFJGQywgcmV2aWV3LCBjb21tZW50cywgZXRjLikgdGFrZXMgcGxhY2Ugb24gbmV0ZGV2LgorCitROiBIb3cgZG8gdGhlIGNoYW5nZXMgcG9zdGVkIHRvIG5ldGRldiBtYWtlIHRoZWlyIHdheSBpbnRvIExpbnV4PworCitBOiBUaGVyZSBhcmUgYWx3YXlzIHR3byB0cmVlcyAoZ2l0IHJlcG9zaXRvcmllcykgaW4gcGxheS4gIEJvdGggYXJlIGRyaXZlbgorICAgYnkgRGF2aWQgTWlsbGVyLCB0aGUgbWFpbiBuZXR3b3JrIG1haW50YWluZXIuICBUaGVyZSBpcyB0aGUgIm5ldCIgdHJlZSwKKyAgIGFuZCB0aGUgIm5ldC1uZXh0IiB0cmVlLiAgQXMgeW91IGNhbiBwcm9iYWJseSBndWVzcyBmcm9tIHRoZSBuYW1lcywgdGhlCisgICBuZXQgdHJlZSBpcyBmb3IgZml4ZXMgdG8gZXhpc3RpbmcgY29kZSBhbHJlYWR5IGluIHRoZSBtYWlubGluZSB0cmVlIGZyb20KKyAgIExpbnVzLCBhbmQgbmV0LW5leHQgaXMgd2hlcmUgdGhlIG5ldyBjb2RlIGdvZXMgZm9yIHRoZSBmdXR1cmUgcmVsZWFzZS4KKyAgIFlvdSBjYW4gZmluZCB0aGUgdHJlZXMgaGVyZToKKworCWh0dHA6Ly9naXQua2VybmVsLm9yZy8/cD1saW51eC9rZXJuZWwvZ2l0L2RhdmVtL25ldC5naXQKKwlodHRwOi8vZ2l0Lmtlcm5lbC5vcmcvP3A9bGludXgva2VybmVsL2dpdC9kYXZlbS9uZXQtbmV4dC5naXQKKworUTogSG93IG9mdGVuIGRvIGNoYW5nZXMgZnJvbSB0aGVzZSB0cmVlcyBtYWtlIGl0IHRvIHRoZSBtYWlubGluZSBMaW51cyB0cmVlPworCitBOiBUbyB1bmRlcnN0YW5kIHRoaXMsIHlvdSBuZWVkIHRvIGtub3cgYSBiaXQgb2YgYmFja2dyb3VuZCBpbmZvcm1hdGlvbgorICAgb24gdGhlIGNhZGVuY2Ugb2YgTGludXggZGV2ZWxvcG1lbnQuICBFYWNoIG5ldyByZWxlYXNlIHN0YXJ0cyBvZmYgd2l0aAorICAgYSB0d28gd2VlayAibWVyZ2Ugd2luZG93IiB3aGVyZSB0aGUgbWFpbiBtYWludGFpbmVycyBmZWVkIHRoZWlyIG5ldworICAgc3R1ZmYgdG8gTGludXMgZm9yIG1lcmdpbmcgaW50byB0aGUgbWFpbmxpbmUgdHJlZS4gIEFmdGVyIHRoZSB0d28gd2Vla3MsCisgICB0aGUgbWVyZ2Ugd2luZG93IGlzIGNsb3NlZCwgYW5kIGl0IGlzIGNhbGxlZC90YWdnZWQgIi1yYzEiLiAgTm8gbmV3CisgICBmZWF0dXJlcyBnZXQgbWFpbmxpbmVkIGFmdGVyIHRoaXMgLS0gb25seSBmaXhlcyB0byB0aGUgcmMxIGNvbnRlbnQKKyAgIGFyZSBleHBlY3RlZC4gIEFmdGVyIHJvdWdobHkgYSB3ZWVrIG9mIGNvbGxlY3RpbmcgZml4ZXMgdG8gdGhlIHJjMQorICAgY29udGVudCwgcmMyIGlzIHJlbGVhc2VkLiAgVGhpcyByZXBlYXRzIG9uIGEgcm91Z2hseSB3ZWVrbHkgYmFzaXMKKyAgIHVudGlsIHJjNyAodHlwaWNhbGx5OyBzb21ldGltZXMgcmM2IGlmIHRoaW5ncyBhcmUgcXVpZXQsIG9yIHJjOCBpZgorICAgdGhpbmdzIGFyZSBpbiBhIHN0YXRlIG9mIGNodXJuKSwgYW5kIGEgd2VlayBhZnRlciB0aGUgbGFzdCB2WC5ZLXJjTgorICAgd2FzIGRvbmUsIHRoZSBvZmZpY2lhbCAidlguWSIgaXMgcmVsZWFzZWQuCisKKyAgIFJlbGF0aW5nIHRoYXQgdG8gbmV0ZGV2OiAgQXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgMi13ZWVrIG1lcmdlIHdpbmRvdywKKyAgIHRoZSBuZXQtbmV4dCB0cmVlIHdpbGwgYmUgY2xvc2VkIC0gbm8gbmV3IGNoYW5nZXMvZmVhdHVyZXMuICBUaGUKKyAgIGFjY3VtdWxhdGVkIG5ldyBjb250ZW50IG9mIHRoZSBwYXN0IH4xMCB3ZWVrcyB3aWxsIGJlIHBhc3NlZCBvbnRvCisgICBtYWlubGluZS9MaW51cyB2aWEgYSBwdWxsIHJlcXVlc3QgZm9yIHZYLlkgLS0gYXQgdGhlIHNhbWUgdGltZSwKKyAgIHRoZSAibmV0IiB0cmVlIHdpbGwgc3RhcnQgYWNjdW11bGF0aW5nIGZpeGVzIGZvciB0aGlzIHB1bGxlZCBjb250ZW50CisgICByZWxhdGluZyB0byB2WC5ZCisKKyAgIEFuIGFubm91bmNlbWVudCBpbmRpY2F0aW5nIHdoZW4gbmV0LW5leHQgaGFzIGJlZW4gY2xvc2VkIGlzIHVzdWFsbHkKKyAgIHNlbnQgdG8gbmV0ZGV2LCBidXQga25vd2luZyB0aGUgYWJvdmUsIHlvdSBjYW4gcHJlZGljdCB0aGF0IGluIGFkdmFuY2UuCisKKyAgIElNUE9SVEFOVDogIERvIG5vdCBzZW5kIG5ldyBuZXQtbmV4dCBjb250ZW50IHRvIG5ldGRldiBkdXJpbmcgdGhlCisgICBwZXJpb2QgZHVyaW5nIHdoaWNoIG5ldC1uZXh0IHRyZWUgaXMgY2xvc2VkLgorCisgICBTaG9ydGx5IGFmdGVyIHRoZSB0d28gd2Vla3MgaGF2ZSBwYXNzZWQgKGFuZCB2WC5ZLXJjMSBpcyByZWxlYXNlZCksIHRoZQorICAgdHJlZSBmb3IgbmV0LW5leHQgcmVvcGVucyB0byBjb2xsZWN0IGNvbnRlbnQgZm9yIHRoZSBuZXh0ICh2WC5ZKzEpIHJlbGVhc2UuCisKKyAgIElmIHlvdSBhcmVuJ3Qgc3Vic2NyaWJlZCB0byBuZXRkZXYgYW5kL29yIGFyZSBzaW1wbHkgdW5zdXJlIGlmIG5ldC1uZXh0CisgICBoYXMgcmUtb3BlbmVkIHlldCwgc2ltcGx5IGNoZWNrIHRoZSBuZXQtbmV4dCBnaXQgcmVwb3NpdG9yeSBsaW5rIGFib3ZlIGZvcgorICAgYW55IG5ldyBuZXR3b3JraW5nLXJlbGF0ZWQgY29tbWl0cy4KKworICAgVGhlICJuZXQiIHRyZWUgY29udGludWVzIHRvIGNvbGxlY3QgZml4ZXMgZm9yIHRoZSB2WC5ZIGNvbnRlbnQsIGFuZAorICAgaXMgZmVkIGJhY2sgdG8gTGludXMgYXQgcmVndWxhciAofndlZWtseSkgaW50ZXJ2YWxzLiAgTWVhbmluZyB0aGF0IHRoZQorICAgZm9jdXMgZm9yICJuZXQiIGlzIG9uIHN0YWJpbGl6YXRpb24gYW5kIGJ1Z2ZpeGVzLgorCisgICBGaW5hbGx5LCB0aGUgdlguWSBnZXRzIHJlbGVhc2VkLCBhbmQgdGhlIHdob2xlIGN5Y2xlIHN0YXJ0cyBvdmVyLgorCitROiBTbyB3aGVyZSBhcmUgd2Ugbm93IGluIHRoaXMgY3ljbGU/CisKK0E6IExvYWQgdGhlIG1haW5saW5lIChMaW51cykgcGFnZSBoZXJlOgorCisJaHR0cDovL2dpdC5rZXJuZWwub3JnLz9wPWxpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0CisKKyAgIGFuZCBub3RlIHRoZSB0b3Agb2YgdGhlICJ0YWdzIiBzZWN0aW9uLiAgSWYgaXQgaXMgcmMxLCBpdCBpcyBlYXJseQorICAgaW4gdGhlIGRldiBjeWNsZS4gIElmIGl0IHdhcyB0YWdnZWQgcmM3IGEgd2VlayBhZ28sIHRoZW4gYSByZWxlYXNlCisgICBpcyBwcm9iYWJseSBpbW1pbmVudC4KKworUTogSG93IGRvIEkgaW5kaWNhdGUgd2hpY2ggdHJlZSAobmV0IHZzLiBuZXQtbmV4dCkgbXkgcGF0Y2ggc2hvdWxkIGJlIGluPworCitBOiBGaXJzdGx5LCB0aGluayB3aGV0aGVyIHlvdSBoYXZlIGEgYnVnIGZpeCBvciBuZXcgIm5leHQtbGlrZSIgY29udGVudC4KKyAgIFRoZW4gb25jZSBkZWNpZGVkLCBhc3N1bWluZyB0aGF0IHlvdSB1c2UgZ2l0LCB1c2UgdGhlIHByZWZpeCBmbGFnLCBpLmUuCisKKwlnaXQgZm9ybWF0LXBhdGNoIC0tc3ViamVjdC1wcmVmaXg9J1BBVENIIG5ldC1uZXh0JyBzdGFydC4uZmluaXNoCisKKyAgIFVzZSAibmV0IiBpbnN0ZWFkIG9mICJuZXQtbmV4dCIgKGFsd2F5cyBsb3dlciBjYXNlKSBpbiB0aGUgYWJvdmUgZm9yCisgICBidWctZml4IG5ldCBjb250ZW50LiAgSWYgeW91IGRvbid0IHVzZSBnaXQsIHRoZW4gbm90ZSB0aGUgb25seSBtYWdpYyBpbgorICAgdGhlIGFib3ZlIGlzIGp1c3QgdGhlIHN1YmplY3QgdGV4dCBvZiB0aGUgb3V0Z29pbmcgZS1tYWlsLCBhbmQgeW91IGNhbgorICAgbWFudWFsbHkgY2hhbmdlIGl0IHlvdXJzZWxmIHdpdGggd2hhdGV2ZXIgTVVBIHlvdSBhcmUgY29tZm9ydGFibGUgd2l0aC4KKworUTogSSBzZW50IGEgcGF0Y2ggYW5kIEknbSB3b25kZXJpbmcgd2hhdCBoYXBwZW5lZCB0byBpdC4gIEhvdyBjYW4gSSB0ZWxsCisgICB3aGV0aGVyIGl0IGdvdCBtZXJnZWQ/CisKK0E6IFN0YXJ0IGJ5IGxvb2tpbmcgYXQgdGhlIG1haW4gcGF0Y2h3b3JrcyBxdWV1ZSBmb3IgbmV0ZGV2OgorCisJaHR0cDovL3BhdGNod29yay5vemxhYnMub3JnL3Byb2plY3QvbmV0ZGV2L2xpc3QvCisKKyAgIFRoZSAiU3RhdGUiIGZpZWxkIHdpbGwgdGVsbCB5b3UgZXhhY3RseSB3aGVyZSB0aGluZ3MgYXJlIGF0IHdpdGgKKyAgIHlvdXIgcGF0Y2guCisKK1E6IFRoZSBhYm92ZSBvbmx5IHNheXMgIlVuZGVyIFJldmlldyIuICBIb3cgY2FuIEkgZmluZCBvdXQgbW9yZT8KKworQTogR2VuZXJhbGx5IHNwZWFraW5nLCB0aGUgcGF0Y2hlcyBnZXQgdHJpYWdlZCBxdWlja2x5IChpbiBsZXNzIHRoYW4gNDhoKS4KKyAgIFNvIGJlIHBhdGllbnQuICBBc2tpbmcgdGhlIG1haW50YWluZXIgZm9yIHN0YXR1cyB1cGRhdGVzIG9uIHlvdXIKKyAgIHBhdGNoIGlzIGEgZ29vZCB3YXkgdG8gZW5zdXJlIHlvdXIgcGF0Y2ggaXMgaWdub3JlZCBvciBwdXNoZWQgdG8KKyAgIHRoZSBib3R0b20gb2YgdGhlIHByaW9yaXR5IGxpc3QuCisKK1E6IEhvdyBjYW4gSSB0ZWxsIHdoYXQgcGF0Y2hlcyBhcmUgcXVldWVkIHVwIGZvciBiYWNrcG9ydGluZyB0byB0aGUKKyAgIHZhcmlvdXMgc3RhYmxlIHJlbGVhc2VzPworCitBOiBOb3JtYWxseSBHcmVnIEtyb2FoLUhhcnRtYW4gY29sbGVjdHMgc3RhYmxlIGNvbW1pdHMgaGltc2VsZiwgYnV0CisgICBmb3IgbmV0d29ya2luZywgRGF2ZSBjb2xsZWN0cyB1cCBwYXRjaGVzIGhlIGRlZW1zIGNyaXRpY2FsIGZvciB0aGUKKyAgIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCBhbmQgdGhlbiBoYW5kcyB0aGVtIG9mZiB0byBHcmVnLgorCisgICBUaGVyZSBpcyBhIHBhdGNod29ya3MgcXVldWUgdGhhdCB5b3UgY2FuIHNlZSBoZXJlOgorCWh0dHA6Ly9wYXRjaHdvcmsub3psYWJzLm9yZy9idW5kbGUvZGF2ZW0vc3RhYmxlLz9zdGF0ZT0qCisKKyAgIEl0IGNvbnRhaW5zIHRoZSBwYXRjaGVzIHdoaWNoIERhdmUgaGFzIHNlbGVjdGVkLCBidXQgbm90IHlldCBoYW5kZWQKKyAgIG9mZiB0byBHcmVnLiAgSWYgR3JlZyBhbHJlYWR5IGhhcyB0aGUgcGF0Y2gsIHRoZW4gaXQgd2lsbCBiZSBoZXJlOgorCWh0dHA6Ly9naXQua2VybmVsLm9yZy9jZ2l0L2xpbnV4L2tlcm5lbC9naXQvc3RhYmxlL3N0YWJsZS1xdWV1ZS5naXQKKworICAgQSBxdWljayB3YXkgdG8gZmluZCB3aGV0aGVyIHRoZSBwYXRjaCBpcyBpbiB0aGlzIHN0YWJsZS1xdWV1ZSBpcworICAgdG8gc2ltcGx5IGNsb25lIHRoZSByZXBvLCBhbmQgdGhlbiBnaXQgZ3JlcCB0aGUgbWFpbmxpbmUgY29tbWl0IElELCBlLmcuCisKKwlzdGFibGUtcXVldWUkIGdpdCBncmVwIC1sIDI4NDA0MWVmMjFmZGYyZQorCXJlbGVhc2VzLzMuMC44NC9pcHY2LWZpeC1wb3NzaWJsZS1jcmFzaGVzLWluLWlwNl9jb3JrX3JlbGVhc2UucGF0Y2gKKwlyZWxlYXNlcy8zLjQuNTEvaXB2Ni1maXgtcG9zc2libGUtY3Jhc2hlcy1pbi1pcDZfY29ya19yZWxlYXNlLnBhdGNoCisJcmVsZWFzZXMvMy45LjgvaXB2Ni1maXgtcG9zc2libGUtY3Jhc2hlcy1pbi1pcDZfY29ya19yZWxlYXNlLnBhdGNoCisJc3RhYmxlL3N0YWJsZS1xdWV1ZSQKKworUTogSSBzZWUgYSBuZXR3b3JrIHBhdGNoIGFuZCBJIHRoaW5rIGl0IHNob3VsZCBiZSBiYWNrcG9ydGVkIHRvIHN0YWJsZS4KKyAgIFNob3VsZCBJIHJlcXVlc3QgaXQgdmlhICJzdGFibGVAdmdlci5rZXJuZWwub3JnIiBsaWtlIHRoZSByZWZlcmVuY2VzIGluCisgICB0aGUga2VybmVsJ3MgRG9jdW1lbnRhdGlvbi9zdGFibGVfa2VybmVsX3J1bGVzLnR4dCBmaWxlIHNheT8KKworQTogTm8sIG5vdCBmb3IgbmV0d29ya2luZy4gIENoZWNrIHRoZSBzdGFibGUgcXVldWVzIGFzIHBlciBhYm92ZSAxc3QgdG8gc2VlCisgICBpZiBpdCBpcyBhbHJlYWR5IHF1ZXVlZC4gIElmIG5vdCwgdGhlbiBzZW5kIGEgbWFpbCB0byBuZXRkZXYsIGxpc3RpbmcKKyAgIHRoZSB1cHN0cmVhbSBjb21taXQgSUQgYW5kIHdoeSB5b3UgdGhpbmsgaXQgc2hvdWxkIGJlIGEgc3RhYmxlIGNhbmRpZGF0ZS4KKworICAgQmVmb3JlIHlvdSBqdW1wIHRvIGdvIGRvIHRoZSBhYm92ZSwgZG8gbm90ZSB0aGF0IHRoZSBub3JtYWwgc3RhYmxlIHJ1bGVzCisgICBpbiBEb2N1bWVudGF0aW9uL3N0YWJsZV9rZXJuZWxfcnVsZXMudHh0IHN0aWxsIGFwcGx5LiAgU28geW91IG5lZWQgdG8KKyAgIGV4cGxpY2l0bHkgaW5kaWNhdGUgd2h5IGl0IGlzIGEgY3JpdGljYWwgZml4IGFuZCBleGFjdGx5IHdoYXQgdXNlcnMgYXJlCisgICBpbXBhY3RlZC4gIEluIGFkZGl0aW9uLCB5b3UgbmVlZCB0byBjb252aW5jZSB5b3Vyc2VsZiB0aGF0IHlvdSBfcmVhbGx5XworICAgdGhpbmsgaXQgaGFzIGJlZW4gb3Zlcmxvb2tlZCwgdnMuIGhhdmluZyBiZWVuIGNvbnNpZGVyZWQgYW5kIHJlamVjdGVkLgorCisgICBHZW5lcmFsbHkgc3BlYWtpbmcsIHRoZSBsb25nZXIgaXQgaGFzIGhhZCBhIGNoYW5jZSB0byAic29hayIgaW4gbWFpbmxpbmUsCisgICB0aGUgYmV0dGVyIHRoZSBvZGRzIHRoYXQgaXQgaXMgYW4gT0sgY2FuZGlkYXRlIGZvciBzdGFibGUuICBTbyBzY3JhbWJsaW5nCisgICB0byByZXF1ZXN0IGEgY29tbWl0IGJlIGFkZGVkIHRoZSBkYXkgYWZ0ZXIgaXQgYXBwZWFycyBzaG91bGQgYmUgYXZvaWRlZC4KKworUTogSSBoYXZlIGNyZWF0ZWQgYSBuZXR3b3JrIHBhdGNoIGFuZCBJIHRoaW5rIGl0IHNob3VsZCBiZSBiYWNrcG9ydGVkIHRvCisgICBzdGFibGUuICBTaG91bGQgSSBhZGQgYSAiQ2M6IHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmciIGxpa2UgdGhlIHJlZmVyZW5jZXMKKyAgIGluIHRoZSBrZXJuZWwncyBEb2N1bWVudGF0aW9uLyBkaXJlY3Rvcnkgc2F5PworCitBOiBOby4gIFNlZSBhYm92ZSBhbnN3ZXIuICBJbiBzaG9ydCwgaWYgeW91IHRoaW5rIGl0IHJlYWxseSBiZWxvbmdzIGluCisgICBzdGFibGUsIHRoZW4gZW5zdXJlIHlvdSB3cml0ZSBhIGRlY2VudCBjb21taXQgbG9nIHRoYXQgZGVzY3JpYmVzIHdobworICAgZ2V0cyBpbXBhY3RlZCBieSB0aGUgYnVnZml4IGFuZCBob3cgaXQgbWFuaWZlc3RzIGl0c2VsZiwgYW5kIHdoZW4gdGhlCisgICBidWcgd2FzIGludHJvZHVjZWQuICBJZiB5b3UgZG8gdGhhdCBwcm9wZXJseSwgdGhlbiB0aGUgY29tbWl0IHdpbGwKKyAgIGdldCBoYW5kbGVkIGFwcHJvcHJpYXRlbHkgYW5kIG1vc3QgbGlrZWx5IGdldCBwdXQgaW4gdGhlIHBhdGNod29ya3MKKyAgIHN0YWJsZSBxdWV1ZSBpZiBpdCByZWFsbHkgd2FycmFudHMgaXQuCisKKyAgIElmIHlvdSB0aGluayB0aGVyZSBpcyBzb21lIHZhbGlkIGluZm9ybWF0aW9uIHJlbGF0aW5nIHRvIGl0IGJlaW5nIGluCisgICBzdGFibGUgdGhhdCBkb2VzIF9ub3RfIGJlbG9uZyBpbiB0aGUgY29tbWl0IGxvZywgdGhlbiB1c2UgdGhlIHRocmVlCisgICBkYXNoIG1hcmtlciBsaW5lIGFzIGRlc2NyaWJlZCBpbiBEb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzIHRvCisgICB0ZW1wb3JhcmlseSBlbWJlZCB0aGF0IGluZm9ybWF0aW9uIGludG8gdGhlIHBhdGNoIHRoYXQgeW91IHNlbmQuCisKK1E6IFNvbWVvbmUgc2FpZCB0aGF0IHRoZSBjb21tZW50IHN0eWxlIGFuZCBjb2RpbmcgY29udmVudGlvbiBpcyBkaWZmZXJlbnQKKyAgIGZvciB0aGUgbmV0d29ya2luZyBjb250ZW50LiAgSXMgdGhpcyB0cnVlPworCitBOiBZZXMsIGluIGEgbGFyZ2VseSB0cml2aWFsIHdheS4gIEluc3RlYWQgb2YgdGhpczoKKworCS8qCisJICogZm9vYmFyIGJsYWggYmxhaCBibGFoCisJICogYW5vdGhlciBsaW5lIG9mIHRleHQKKwkgKi8KKworICAgaXQgaXMgcmVxdWVzdGVkIHRoYXQgeW91IG1ha2UgaXQgbG9vayBsaWtlIHRoaXM6CisKKwkvKiBmb29iYXIgYmxhaCBibGFoIGJsYWgKKwkgKiBhbm90aGVyIGxpbmUgb2YgdGV4dAorCSAqLworCitROiBJIGFtIHdvcmtpbmcgaW4gZXhpc3RpbmcgY29kZSB0aGF0IGhhcyB0aGUgZm9ybWVyIGNvbW1lbnQgc3R5bGUgYW5kIG5vdCB0aGUKKyAgIGxhdHRlci4gIFNob3VsZCBJIHN1Ym1pdCBuZXcgY29kZSBpbiB0aGUgZm9ybWVyIHN0eWxlIG9yIHRoZSBsYXR0ZXI/CisKK0E6IE1ha2UgaXQgdGhlIGxhdHRlciBzdHlsZSwgc28gdGhhdCBldmVudHVhbGx5IGFsbCBjb2RlIGluIHRoZSBkb21haW4gb2YKKyAgIG5ldGRldiBpcyBvZiB0aGlzIGZvcm1hdC4KKworUTogSSBmb3VuZCBhIGJ1ZyB0aGF0IG1pZ2h0IGhhdmUgcG9zc2libGUgc2VjdXJpdHkgaW1wbGljYXRpb25zIG9yIHNpbWlsYXIuCisgICBTaG91bGQgSSBtYWlsIHRoZSBtYWluIG5ldGRldiBtYWludGFpbmVyIG9mZi1saXN0PworCitBOiBOby4gVGhlIGN1cnJlbnQgbmV0ZGV2IG1haW50YWluZXIgaGFzIGNvbnNpc3RlbnRseSByZXF1ZXN0ZWQgdGhhdCBwZW9wbGUKKyAgIHVzZSB0aGUgbWFpbGluZyBsaXN0cyBhbmQgbm90IHJlYWNoIG91dCBkaXJlY3RseS4gIElmIHlvdSBhcmVuJ3QgT0sgd2l0aAorICAgdGhhdCwgdGhlbiBwZXJoYXBzIGNvbnNpZGVyIG1haWxpbmcgInNlY3VyaXR5QGtlcm5lbC5vcmciIG9yIHJlYWRpbmcgYWJvdXQKKyAgIGh0dHA6Ly9vc3Mtc2VjdXJpdHkub3BlbndhbGwub3JnL3dpa2kvbWFpbGluZy1saXN0cy9kaXN0cm9zCisgICBhcyBwb3NzaWJsZSBhbHRlcm5hdGl2ZSBtZWNoYW5pc21zLgorCitROiBXaGF0IGxldmVsIG9mIHRlc3RpbmcgaXMgZXhwZWN0ZWQgYmVmb3JlIEkgc3VibWl0IG15IGNoYW5nZT8KKworQTogSWYgeW91ciBjaGFuZ2VzIGFyZSBhZ2FpbnN0IG5ldC1uZXh0LCB0aGUgZXhwZWN0YXRpb24gaXMgdGhhdCB5b3UKKyAgIGhhdmUgdGVzdGVkIGJ5IGxheWVyaW5nIHlvdXIgY2hhbmdlcyBvbiB0b3Agb2YgbmV0LW5leHQuICBJZGVhbGx5IHlvdQorICAgd2lsbCBoYXZlIGRvbmUgcnVuLXRpbWUgdGVzdGluZyBzcGVjaWZpYyB0byB5b3VyIGNoYW5nZSwgYnV0IGF0IGEKKyAgIG1pbmltdW0sIHlvdXIgY2hhbmdlcyBzaG91bGQgc3Vydml2ZSBhbiAiYWxseWVzY29uZmlnIiBhbmQgYW4KKyAgICJhbGxtb2Rjb25maWciIGJ1aWxkIHdpdGhvdXQgbmV3IHdhcm5pbmdzIG9yIGZhaWx1cmVzLgorCitROiBBbnkgb3RoZXIgdGlwcyB0byBoZWxwIGVuc3VyZSBteSBuZXQvbmV0LW5leHQgcGF0Y2ggZ2V0cyBPSydkPworCitBOiBBdHRlbnRpb24gdG8gZGV0YWlsLiAgUmUtcmVhZCB5b3VyIG93biB3b3JrIGFzIGlmIHlvdSB3ZXJlIHRoZQorICAgcmV2aWV3ZXIuICBZb3UgY2FuIHN0YXJ0IHdpdGggdXNpbmcgY2hlY2twYXRjaC5wbCwgcGVyaGFwcyBldmVuCisgICB3aXRoIHRoZSAiLS1zdHJpY3QiIGZsYWcuICBCdXQgZG8gbm90IGJlIG1pbmRsZXNzbHkgcm9ib3RpYyBpbgorICAgZG9pbmcgc28uICBJZiB5b3VyIGNoYW5nZSBpcyBhIGJ1Zy1maXgsIG1ha2Ugc3VyZSB5b3VyIGNvbW1pdCBsb2cKKyAgIGluZGljYXRlcyB0aGUgZW5kLXVzZXIgdmlzaWJsZSBzeW1wdG9tLCB0aGUgdW5kZXJseWluZyByZWFzb24gYXMKKyAgIHRvIHdoeSBpdCBoYXBwZW5zLCBhbmQgdGhlbiBpZiBuZWNlc3NhcnksIGV4cGxhaW4gd2h5IHRoZSBmaXggcHJvcG9zZWQKKyAgIGlzIHRoZSBiZXN0IHdheSB0byBnZXQgdGhpbmdzIGRvbmUuICAgRG9uJ3QgbWFuZ2xlIHdoaXRlc3BhY2UsIGFuZCBhcworICAgaXMgY29tbW9uLCBkb24ndCBtaXMtaW5kZW50IGZ1bmN0aW9uIGFyZ3VtZW50cyB0aGF0IHNwYW4gbXVsdGlwbGUgbGluZXMuCisgICBJZiBpdCBpcyB5b3VyIGZpcnN0IHBhdGNoLCBtYWlsIGl0IHRvIHlvdXJzZWxmIHNvIHlvdSBjYW4gdGVzdCBhcHBseQorICAgaXQgdG8gYW4gdW5wYXRjaGVkIHRyZWUgdG8gY29uZmlybSBpbmZyYXN0cnVjdHVyZSBkaWRuJ3QgbWFuZ2xlIGl0LgorCisgICBGaW5hbGx5LCBnbyBiYWNrIGFuZCByZWFkIERvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXMgdG8gYmUKKyAgIHN1cmUgeW91IGFyZSBub3QgcmVwZWF0aW5nIHNvbWUgY29tbW9uIG1pc3Rha2UgZG9jdW1lbnRlZCB0aGVyZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXYtZmVhdHVyZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldi1mZWF0dXJlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjMxMGVkZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXYtZmVhdHVyZXMudHh0CkBAIC0wLDAgKzEsMTY3IEBACitOZXRkZXYgZmVhdHVyZXMgbWVzcyBhbmQgaG93IHRvIGdldCBvdXQgZnJvbSBpdCBhbGl2ZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQXV0aG9yOgorCU1pY2hhxYIgTWlyb3PFgmF3IDxtaXJxLWxpbnV4QHJlcmUucW1xbS5wbD4KKworCisKKyBQYXJ0IEk6IEZlYXR1cmUgc2V0cworPT09PT09PT09PT09PT09PT09PT09PQorCitMb25nIGdvbmUgYXJlIHRoZSBkYXlzIHdoZW4gYSBuZXR3b3JrIGNhcmQgd291bGQganVzdCB0YWtlIGFuZCBnaXZlIHBhY2tldHMKK3ZlcmJhdGltLiAgVG9kYXkncyBkZXZpY2VzIGFkZCBtdWx0aXBsZSBmZWF0dXJlcyBhbmQgYnVncyAocmVhZDogb2ZmbG9hZHMpCit0aGF0IHJlbGlldmUgYW4gT1Mgb2YgdmFyaW91cyB0YXNrcyBsaWtlIGdlbmVyYXRpbmcgYW5kIGNoZWNraW5nIGNoZWNrc3VtcywKK3NwbGl0dGluZyBwYWNrZXRzLCBjbGFzc2lmeWluZyB0aGVtLiAgVGhvc2UgY2FwYWJpbGl0aWVzIGFuZCB0aGVpciBzdGF0ZQorYXJlIGNvbW1vbmx5IHJlZmVycmVkIHRvIGFzIG5ldGRldiBmZWF0dXJlcyBpbiBMaW51eCBrZXJuZWwgd29ybGQuCisKK1RoZXJlIGFyZSBjdXJyZW50bHkgdGhyZWUgc2V0cyBvZiBmZWF0dXJlcyByZWxldmFudCB0byB0aGUgZHJpdmVyLCBhbmQKK29uZSB1c2VkIGludGVybmFsbHkgYnkgbmV0d29yayBjb3JlOgorCisgMS4gbmV0ZGV2LT5od19mZWF0dXJlcyBzZXQgY29udGFpbnMgZmVhdHVyZXMgd2hvc2Ugc3RhdGUgbWF5IHBvc3NpYmx5CisgICAgYmUgY2hhbmdlZCAoZW5hYmxlZCBvciBkaXNhYmxlZCkgZm9yIGEgcGFydGljdWxhciBkZXZpY2UgYnkgdXNlcidzCisgICAgcmVxdWVzdC4gIFRoaXMgc2V0IHNob3VsZCBiZSBpbml0aWFsaXplZCBpbiBuZG9faW5pdCBjYWxsYmFjayBhbmQgbm90CisgICAgY2hhbmdlZCBsYXRlci4KKworIDIuIG5ldGRldi0+ZmVhdHVyZXMgc2V0IGNvbnRhaW5zIGZlYXR1cmVzIHdoaWNoIGFyZSBjdXJyZW50bHkgZW5hYmxlZAorICAgIGZvciBhIGRldmljZS4gIFRoaXMgc2hvdWxkIGJlIGNoYW5nZWQgb25seSBieSBuZXR3b3JrIGNvcmUgb3IgaW4KKyAgICBlcnJvciBwYXRocyBvZiBuZG9fc2V0X2ZlYXR1cmVzIGNhbGxiYWNrLgorCisgMy4gbmV0ZGV2LT52bGFuX2ZlYXR1cmVzIHNldCBjb250YWlucyBmZWF0dXJlcyB3aG9zZSBzdGF0ZSBpcyBpbmhlcml0ZWQKKyAgICBieSBjaGlsZCBWTEFOIGRldmljZXMgKGxpbWl0cyBuZXRkZXYtPmZlYXR1cmVzIHNldCkuICBUaGlzIGlzIGN1cnJlbnRseQorICAgIHVzZWQgZm9yIGFsbCBWTEFOIGRldmljZXMgd2hldGhlciB0YWdzIGFyZSBzdHJpcHBlZCBvciBpbnNlcnRlZCBpbgorICAgIGhhcmR3YXJlIG9yIHNvZnR3YXJlLgorCisgNC4gbmV0ZGV2LT53YW50ZWRfZmVhdHVyZXMgc2V0IGNvbnRhaW5zIGZlYXR1cmUgc2V0IHJlcXVlc3RlZCBieSB1c2VyLgorICAgIFRoaXMgc2V0IGlzIGZpbHRlcmVkIGJ5IG5kb19maXhfZmVhdHVyZXMgY2FsbGJhY2sgd2hlbmV2ZXIgaXQgb3IKKyAgICBzb21lIGRldmljZS1zcGVjaWZpYyBjb25kaXRpb25zIGNoYW5nZS4gVGhpcyBzZXQgaXMgaW50ZXJuYWwgdG8KKyAgICBuZXR3b3JraW5nIGNvcmUgYW5kIHNob3VsZCBub3QgYmUgcmVmZXJlbmNlZCBpbiBkcml2ZXJzLgorCisKKworIFBhcnQgSUk6IENvbnRyb2xsaW5nIGVuYWJsZWQgZmVhdHVyZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitXaGVuIGN1cnJlbnQgZmVhdHVyZSBzZXQgKG5ldGRldi0+ZmVhdHVyZXMpIGlzIHRvIGJlIGNoYW5nZWQsIG5ldyBzZXQKK2lzIGNhbGN1bGF0ZWQgYW5kIGZpbHRlcmVkIGJ5IGNhbGxpbmcgbmRvX2ZpeF9mZWF0dXJlcyBjYWxsYmFjaworYW5kIG5ldGRldl9maXhfZmVhdHVyZXMoKS4gSWYgdGhlIHJlc3VsdGluZyBzZXQgZGlmZmVycyBmcm9tIGN1cnJlbnQKK3NldCwgaXQgaXMgcGFzc2VkIHRvIG5kb19zZXRfZmVhdHVyZXMgY2FsbGJhY2sgYW5kIChpZiB0aGUgY2FsbGJhY2sKK3JldHVybnMgc3VjY2VzcykgcmVwbGFjZXMgdmFsdWUgc3RvcmVkIGluIG5ldGRldi0+ZmVhdHVyZXMuCitORVRERVZfRkVBVF9DSEFOR0Ugbm90aWZpY2F0aW9uIGlzIGlzc3VlZCBhZnRlciB0aGF0IHdoZW5ldmVyIGN1cnJlbnQKK3NldCBtaWdodCBoYXZlIGNoYW5nZWQuCisKK1RoZSBmb2xsb3dpbmcgZXZlbnRzIHRyaWdnZXIgcmVjYWxjdWxhdGlvbjoKKyAxLiBkZXZpY2UncyByZWdpc3RyYXRpb24sIGFmdGVyIG5kb19pbml0IHJldHVybmVkIHN1Y2Nlc3MKKyAyLiB1c2VyIHJlcXVlc3RlZCBjaGFuZ2VzIGluIGZlYXR1cmVzIHN0YXRlCisgMy4gbmV0ZGV2X3VwZGF0ZV9mZWF0dXJlcygpIGlzIGNhbGxlZAorCituZG9fKl9mZWF0dXJlcyBjYWxsYmFja3MgYXJlIGNhbGxlZCB3aXRoIHJ0bmxfbG9jayBoZWxkLiBNaXNzaW5nIGNhbGxiYWNrcworYXJlIHRyZWF0ZWQgYXMgYWx3YXlzIHJldHVybmluZyBzdWNjZXNzLgorCitBIGRyaXZlciB0aGF0IHdhbnRzIHRvIHRyaWdnZXIgcmVjYWxjdWxhdGlvbiBtdXN0IGRvIHNvIGJ5IGNhbGxpbmcKK25ldGRldl91cGRhdGVfZmVhdHVyZXMoKSB3aGlsZSBob2xkaW5nIHJ0bmxfbG9jay4gVGhpcyBzaG91bGQgbm90IGJlIGRvbmUKK2Zyb20gbmRvXypfZmVhdHVyZXMgY2FsbGJhY2tzLiBuZXRkZXYtPmZlYXR1cmVzIHNob3VsZCBub3QgYmUgbW9kaWZpZWQgYnkKK2RyaXZlciBleGNlcHQgYnkgbWVhbnMgb2YgbmRvX2ZpeF9mZWF0dXJlcyBjYWxsYmFjay4KKworCisKKyBQYXJ0IElJSTogSW1wbGVtZW50YXRpb24gaGludHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAqIG5kb19maXhfZmVhdHVyZXM6CisKK0FsbCBkZXBlbmRlbmNpZXMgYmV0d2VlbiBmZWF0dXJlcyBzaG91bGQgYmUgcmVzb2x2ZWQgaGVyZS4gVGhlIHJlc3VsdGluZworc2V0IGNhbiBiZSByZWR1Y2VkIGZ1cnRoZXIgYnkgbmV0d29ya2luZyBjb3JlIGltcG9zZWQgbGltaXRhdGlvbnMgKGFzIGNvZGVkCitpbiBuZXRkZXZfZml4X2ZlYXR1cmVzKCkpLiBGb3IgdGhpcyByZWFzb24gaXQgaXMgc2FmZXIgdG8gZGlzYWJsZSBhIGZlYXR1cmUKK3doZW4gaXRzIGRlcGVuZGVuY2llcyBhcmUgbm90IG1ldCBpbnN0ZWFkIG9mIGZvcmNpbmcgdGhlIGRlcGVuZGVuY3kgb24uCisKK1RoaXMgY2FsbGJhY2sgc2hvdWxkIG5vdCBtb2RpZnkgaGFyZHdhcmUgbm9yIGRyaXZlciBzdGF0ZSAoc2hvdWxkIGJlCitzdGF0ZWxlc3MpLiAgSXQgY2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBiZXR3ZWVuIHN1Y2Nlc3NpdmUKK25kb19zZXRfZmVhdHVyZXMgY2FsbHMuCisKK0NhbGxiYWNrIG11c3Qgbm90IGFsdGVyIGZlYXR1cmVzIGNvbnRhaW5lZCBpbiBORVRJRl9GX1NPRlRfRkVBVFVSRVMgb3IKK05FVElGX0ZfTkVWRVJfQ0hBTkdFIHNldHMuIFRoZSBleGNlcHRpb24gaXMgTkVUSUZfRl9WTEFOX0NIQUxMRU5HRUQgYnV0CitjYXJlIG11c3QgYmUgdGFrZW4gYXMgdGhlIGNoYW5nZSB3b24ndCBhZmZlY3QgYWxyZWFkeSBjb25maWd1cmVkIFZMQU5zLgorCisgKiBuZG9fc2V0X2ZlYXR1cmVzOgorCitIYXJkd2FyZSBzaG91bGQgYmUgcmVjb25maWd1cmVkIHRvIG1hdGNoIHBhc3NlZCBmZWF0dXJlIHNldC4gVGhlIHNldAorc2hvdWxkIG5vdCBiZSBhbHRlcmVkIHVubGVzcyBzb21lIGVycm9yIGNvbmRpdGlvbiBoYXBwZW5zIHRoYXQgY2FuJ3QKK2JlIHJlbGlhYmx5IGRldGVjdGVkIGluIG5kb19maXhfZmVhdHVyZXMuIEluIHRoaXMgY2FzZSwgdGhlIGNhbGxiYWNrCitzaG91bGQgdXBkYXRlIG5ldGRldi0+ZmVhdHVyZXMgdG8gbWF0Y2ggcmVzdWx0aW5nIGhhcmR3YXJlIHN0YXRlLgorRXJyb3JzIHJldHVybmVkIGFyZSBub3QgKGFuZCBjYW5ub3QgYmUpIHByb3BhZ2F0ZWQgYW55d2hlcmUgZXhjZXB0IGRtZXNnLgorKE5vdGU6IHN1Y2Nlc3NmdWwgcmV0dXJuIGlzIHplcm8sID4wIG1lYW5zIHNpbGVudCBlcnJvci4pCisKKworCisgUGFydCBJVjogRmVhdHVyZXMKKz09PT09PT09PT09PT09PT09PT0KKworRm9yIGN1cnJlbnQgbGlzdCBvZiBmZWF0dXJlcywgc2VlIGluY2x1ZGUvbGludXgvbmV0ZGV2X2ZlYXR1cmVzLmguCitUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHNlbWFudGljcyBvZiBzb21lIG9mIHRoZW0uCisKKyAqIFRyYW5zbWl0IGNoZWNrc3VtbWluZworCitGb3IgY29tcGxldGUgZGVzY3JpcHRpb24sIHNlZSBjb21tZW50cyBuZWFyIHRoZSB0b3Agb2YgaW5jbHVkZS9saW51eC9za2J1ZmYuaC4KKworTm90ZTogTkVUSUZfRl9IV19DU1VNIGlzIGEgc3VwZXJzZXQgb2YgTkVUSUZfRl9JUF9DU1VNICsgTkVUSUZfRl9JUFY2X0NTVU0uCitJdCBtZWFucyB0aGF0IGRldmljZSBjYW4gZmlsbCBUQ1AvVURQLWxpa2UgY2hlY2tzdW0gYW55d2hlcmUgaW4gdGhlIHBhY2tldHMKK3doYXRldmVyIGhlYWRlcnMgdGhlcmUgbWlnaHQgYmUuCisKKyAqIFRyYW5zbWl0IFRDUCBzZWdtZW50YXRpb24gb2ZmbG9hZAorCitORVRJRl9GX1RTT19FQ04gbWVhbnMgdGhhdCBoYXJkd2FyZSBjYW4gcHJvcGVybHkgc3BsaXQgcGFja2V0cyB3aXRoIENXUiBiaXQKK3NldCwgYmUgaXQgVENQdjQgKHdoZW4gTkVUSUZfRl9UU08gaXMgZW5hYmxlZCkgb3IgVENQdjYgKE5FVElGX0ZfVFNPNikuCisKKyAqIFRyYW5zbWl0IERNQSBmcm9tIGhpZ2ggbWVtb3J5CisKK09uIHBsYXRmb3JtcyB3aGVyZSB0aGlzIGlzIHJlbGV2YW50LCBORVRJRl9GX0hJR0hETUEgc2lnbmFscyB0aGF0CituZG9fc3RhcnRfeG1pdCBjYW4gaGFuZGxlIHNrYnMgd2l0aCBmcmFncyBpbiBoaWdoIG1lbW9yeS4KKworICogVHJhbnNtaXQgc2NhdHRlci1nYXRoZXIKKworVGhvc2UgZmVhdHVyZXMgc2F5IHRoYXQgbmRvX3N0YXJ0X3htaXQgY2FuIGhhbmRsZSBmcmFnbWVudGVkIHNrYnM6CitORVRJRl9GX1NHIC0tLSBwYWdlZCBza2JzIChza2Jfc2hpbmZvKCktPmZyYWdzKSwgTkVUSUZfRl9GUkFHTElTVCAtLS0KK2NoYWluZWQgc2ticyAoc2tiLT5uZXh0L3ByZXYgbGlzdCkuCisKKyAqIFNvZnR3YXJlIGZlYXR1cmVzCisKK0ZlYXR1cmVzIGNvbnRhaW5lZCBpbiBORVRJRl9GX1NPRlRfRkVBVFVSRVMgYXJlIGZlYXR1cmVzIG9mIG5ldHdvcmtpbmcKK3N0YWNrLiBEcml2ZXIgc2hvdWxkIG5vdCBjaGFuZ2UgYmVoYXZpb3VyIGJhc2VkIG9uIHRoZW0uCisKKyAqIExMVFggZHJpdmVyIChkZXByZWNhdGVkIGZvciBoYXJkd2FyZSBkcml2ZXJzKQorCitORVRJRl9GX0xMVFggc2hvdWxkIGJlIHNldCBpbiBkcml2ZXJzIHRoYXQgaW1wbGVtZW50IHRoZWlyIG93biBsb2NraW5nIGluCit0cmFuc21pdCBwYXRoIG9yIGRvbid0IG5lZWQgbG9ja2luZyBhdCBhbGwgKGUuZy4gc29mdHdhcmUgdHVubmVscykuCitJbiBuZG9fc3RhcnRfeG1pdCwgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIGEgdHJ5X2xvY2sgYW5kIHJldHVybgorTkVUREVWX1RYX0xPQ0tFRCB3aGVuIHRoZSBzcGluIGxvY2sgZmFpbHMuICBUaGUgbG9ja2luZyBzaG91bGQgYWxzbyBwcm9wZXJseQorcHJvdGVjdCBhZ2FpbnN0IG90aGVyIGNhbGxiYWNrcyAodGhlIHJ1bGVzIHlvdSBuZWVkIHRvIGZpbmQgb3V0KS4KKworRG9uJ3QgdXNlIGl0IGZvciBuZXcgZHJpdmVycy4KKworICogbmV0bnMtbG9jYWwgZGV2aWNlCisKK05FVElGX0ZfTkVUTlNfTE9DQUwgaXMgc2V0IGZvciBkZXZpY2VzIHRoYXQgYXJlIG5vdCBhbGxvd2VkIHRvIG1vdmUgYmV0d2VlbgorbmV0d29yayBuYW1lc3BhY2VzIChlLmcuIGxvb3BiYWNrKS4KKworRG9uJ3QgdXNlIGl0IGluIGRyaXZlcnMuCisKKyAqIFZMQU4gY2hhbGxlbmdlZAorCitORVRJRl9GX1ZMQU5fQ0hBTExFTkdFRCBzaG91bGQgYmUgc2V0IGZvciBkZXZpY2VzIHdoaWNoIGNhbid0IGNvcGUgd2l0aCBWTEFOCitoZWFkZXJzLiBTb21lIGRyaXZlcnMgc2V0IHRoaXMgYmVjYXVzZSB0aGUgY2FyZHMgY2FuJ3QgaGFuZGxlIHRoZSBiaWdnZXIgTVRVLgorW0ZJWE1FOiBUaG9zZSBjYXNlcyBjb3VsZCBiZSBmaXhlZCBpbiBWTEFOIGNvZGUgYnkgYWxsb3dpbmcgb25seSByZWR1Y2VkLU1UVQorVkxBTnMuIFRoaXMgbWF5IGJlIG5vdCB1c2VmdWwsIHRob3VnaC5dCisKKyogIHJ4LWZjcworCitUaGlzIHJlcXVlc3RzIHRoYXQgdGhlIE5JQyBhcHBlbmQgdGhlIEV0aGVybmV0IEZyYW1lIENoZWNrc3VtIChGQ1MpCit0byB0aGUgZW5kIG9mIHRoZSBza2IgZGF0YS4gIFRoaXMgYWxsb3dzIHNuaWZmZXJzIGFuZCBvdGhlciB0b29scyB0bworcmVhZCB0aGUgQ1JDIHJlY29yZGVkIGJ5IHRoZSBOSUMgb24gcmVjZWlwdCBvZiB0aGUgcGFja2V0LgorCisqICByeC1hbGwKKworVGhpcyByZXF1ZXN0cyB0aGF0IHRoZSBOSUMgcmVjZWl2ZSBhbGwgcG9zc2libGUgZnJhbWVzLCBpbmNsdWRpbmcgZXJyb3JlZAorZnJhbWVzIChzdWNoIGFzIGJhZCBGQ1MsIGV0YykuICBUaGlzIGNhbiBiZSBoZWxwZnVsIHdoZW4gc25pZmZpbmcgYSBsaW5rIHdpdGgKK2JhZCBwYWNrZXRzIG9uIGl0LiAgU29tZSBOSUNzIG1heSByZWNlaXZlIG1vcmUgcGFja2V0cyBpZiBhbHNvIHB1dCBpbnRvIG5vcm1hbAorUFJPTUlTQyBtb2RlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMWNmNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy50eHQKQEAgLTAsMCArMSwxMDcgQEAKKworTmV0d29yayBEZXZpY2VzLCB0aGUgS2VybmVsLCBhbmQgWW91IQorCisKK0ludHJvZHVjdGlvbgorPT09PT09PT09PT09CitUaGUgZm9sbG93aW5nIGlzIGEgcmFuZG9tIGNvbGxlY3Rpb24gb2YgZG9jdW1lbnRhdGlvbiByZWdhcmRpbmcKK25ldHdvcmsgZGV2aWNlcy4KKworc3RydWN0IG5ldF9kZXZpY2UgYWxsb2NhdGlvbiBydWxlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorTmV0d29yayBkZXZpY2Ugc3RydWN0dXJlcyBuZWVkIHRvIHBlcnNpc3QgZXZlbiBhZnRlciBtb2R1bGUgaXMgdW5sb2FkZWQgYW5kCittdXN0IGJlIGFsbG9jYXRlZCB3aXRoIGFsbG9jX25ldGRldl9tcXMoKSBhbmQgZnJpZW5kcy4KK0lmIGRldmljZSBoYXMgcmVnaXN0ZXJlZCBzdWNjZXNzZnVsbHksIGl0IHdpbGwgYmUgZnJlZWQgb24gbGFzdCB1c2UKK2J5IGZyZWVfbmV0ZGV2KCkuIFRoaXMgaXMgcmVxdWlyZWQgdG8gaGFuZGxlIHRoZSBwYXRob2xvZ2ljIGNhc2UgY2xlYW5seQorKGV4YW1wbGU6IHJtbW9kIG15ZHJpdmVyIDwvc3lzL2NsYXNzL25ldC9teWV0aC9tdHUgKQorCithbGxvY19uZXRkZXZfbXFzKCkvYWxsb2NfbmV0ZGV2KCkgcmVzZXJ2ZSBleHRyYSBzcGFjZSBmb3IgZHJpdmVyCitwcml2YXRlIGRhdGEgd2hpY2ggZ2V0cyBmcmVlZCB3aGVuIHRoZSBuZXR3b3JrIGRldmljZSBpcyBmcmVlZC4gSWYKK3NlcGFyYXRlbHkgYWxsb2NhdGVkIGRhdGEgaXMgYXR0YWNoZWQgdG8gdGhlIG5ldHdvcmsgZGV2aWNlCisobmV0ZGV2X3ByaXYoZGV2KSkgdGhlbiBpdCBpcyB1cCB0byB0aGUgbW9kdWxlIGV4aXQgaGFuZGxlciB0byBmcmVlIHRoYXQuCisKK01UVQorPT09CitFYWNoIG5ldHdvcmsgZGV2aWNlIGhhcyBhIE1heGltdW0gVHJhbnNmZXIgVW5pdC4gVGhlIE1UVSBkb2VzIG5vdAoraW5jbHVkZSBhbnkgbGluayBsYXllciBwcm90b2NvbCBvdmVyaGVhZC4gVXBwZXIgbGF5ZXIgcHJvdG9jb2xzIG11c3QKK25vdCBwYXNzIGEgc29ja2V0IGJ1ZmZlciAoc2tiKSB0byBhIGRldmljZSB0byB0cmFuc21pdCB3aXRoIG1vcmUgZGF0YQordGhhbiB0aGUgbXR1LiBUaGUgTVRVIGRvZXMgbm90IGluY2x1ZGUgbGluayBsYXllciBoZWFkZXIgb3ZlcmhlYWQsIHNvCitmb3IgZXhhbXBsZSBvbiBFdGhlcm5ldCBpZiB0aGUgc3RhbmRhcmQgTVRVIGlzIDE1MDAgYnl0ZXMgdXNlZCwgdGhlCithY3R1YWwgc2tiIHdpbGwgY29udGFpbiB1cCB0byAxNTE0IGJ5dGVzIGJlY2F1c2Ugb2YgdGhlIEV0aGVybmV0CitoZWFkZXIuIERldmljZXMgc2hvdWxkIGFsbG93IGZvciB0aGUgNCBieXRlIFZMQU4gaGVhZGVyIGFzIHdlbGwuCisKK1NlZ21lbnRhdGlvbiBPZmZsb2FkIChHU08sIFRTTykgaXMgYW4gZXhjZXB0aW9uIHRvIHRoaXMgcnVsZS4gIFRoZQordXBwZXIgbGF5ZXIgcHJvdG9jb2wgbWF5IHBhc3MgYSBsYXJnZSBzb2NrZXQgYnVmZmVyIHRvIHRoZSBkZXZpY2UKK3RyYW5zbWl0IHJvdXRpbmUsIGFuZCB0aGUgZGV2aWNlIHdpbGwgYnJlYWsgdGhhdCB1cCBpbnRvIHNlcGFyYXRlCitwYWNrZXRzIGJhc2VkIG9uIHRoZSBjdXJyZW50IE1UVS4KKworTVRVIGlzIHN5bW1ldHJpY2FsIGFuZCBhcHBsaWVzIGJvdGggdG8gcmVjZWl2ZSBhbmQgdHJhbnNtaXQuIEEgZGV2aWNlCittdXN0IGJlIGFibGUgdG8gcmVjZWl2ZSBhdCBsZWFzdCB0aGUgbWF4aW11bSBzaXplIHBhY2tldCBhbGxvd2VkIGJ5Cit0aGUgTVRVLiBBIG5ldHdvcmsgZGV2aWNlIG1heSB1c2UgdGhlIE1UVSBhcyBtZWNoYW5pc20gdG8gc2l6ZSByZWNlaXZlCitidWZmZXJzLCBidXQgdGhlIGRldmljZSBzaG91bGQgYWxsb3cgcGFja2V0cyB3aXRoIFZMQU4gaGVhZGVyLiBXaXRoCitzdGFuZGFyZCBFdGhlcm5ldCBtdHUgb2YgMTUwMCBieXRlcywgdGhlIGRldmljZSBzaG91bGQgYWxsb3cgdXAgdG8KKzE1MTggYnl0ZSBwYWNrZXRzICgxNTAwICsgMTQgaGVhZGVyICsgNCB0YWcpLiAgVGhlIGRldmljZSBtYXkgZWl0aGVyOgorZHJvcCwgdHJ1bmNhdGUsIG9yIHBhc3MgdXAgb3ZlcnNpemUgcGFja2V0cywgYnV0IGRyb3BwaW5nIG92ZXJzaXplCitwYWNrZXRzIGlzIHByZWZlcnJlZC4KKworCitzdHJ1Y3QgbmV0X2RldmljZSBzeW5jaHJvbml6YXRpb24gcnVsZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorbmRvX29wZW46CisJU3luY2hyb25pemF0aW9uOiBydG5sX2xvY2soKSBzZW1hcGhvcmUuCisJQ29udGV4dDogcHJvY2VzcworCituZG9fc3RvcDoKKwlTeW5jaHJvbml6YXRpb246IHJ0bmxfbG9jaygpIHNlbWFwaG9yZS4KKwlDb250ZXh0OiBwcm9jZXNzCisJTm90ZTogbmV0aWZfcnVubmluZygpIGlzIGd1YXJhbnRlZWQgZmFsc2UKKworbmRvX2RvX2lvY3RsOgorCVN5bmNocm9uaXphdGlvbjogcnRubF9sb2NrKCkgc2VtYXBob3JlLgorCUNvbnRleHQ6IHByb2Nlc3MKKworbmRvX2dldF9zdGF0czoKKwlTeW5jaHJvbml6YXRpb246IGRldl9iYXNlX2xvY2sgcndsb2NrLgorCUNvbnRleHQ6IG5vbWluYWxseSBwcm9jZXNzLCBidXQgZG9uJ3Qgc2xlZXAgaW5zaWRlIGFuIHJ3bG9jaworCituZG9fc3RhcnRfeG1pdDoKKwlTeW5jaHJvbml6YXRpb246IF9fbmV0aWZfdHhfbG9jayBzcGlubG9jay4KKworCVdoZW4gdGhlIGRyaXZlciBzZXRzIE5FVElGX0ZfTExUWCBpbiBkZXYtPmZlYXR1cmVzIHRoaXMgd2lsbCBiZQorCWNhbGxlZCB3aXRob3V0IGhvbGRpbmcgbmV0aWZfdHhfbG9jay4gSW4gdGhpcyBjYXNlIHRoZSBkcml2ZXIKKwloYXMgdG8gbG9jayBieSBpdHNlbGYgd2hlbiBuZWVkZWQuIEl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSBhIHRyeSBsb2NrCisJZm9yIHRoaXMgYW5kIHJldHVybiBORVRERVZfVFhfTE9DS0VEIHdoZW4gdGhlIHNwaW4gbG9jayBmYWlscy4KKwlUaGUgbG9ja2luZyB0aGVyZSBzaG91bGQgYWxzbyBwcm9wZXJseSBwcm90ZWN0IGFnYWluc3QgCisJc2V0X3J4X21vZGUuIE5vdGUgdGhhdCB0aGUgdXNlIG9mIE5FVElGX0ZfTExUWCBpcyBkZXByZWNhdGVkLgorCURvbid0IHVzZSBpdCBmb3IgbmV3IGRyaXZlcnMuCisKKwlDb250ZXh0OiBQcm9jZXNzIHdpdGggQkhzIGRpc2FibGVkIG9yIEJIICh0aW1lciksCisJICAgICAgICAgd2lsbCBiZSBjYWxsZWQgd2l0aCBpbnRlcnJ1cHRzIGRpc2FibGVkIGJ5IG5ldGNvbnNvbGUuCisKKwlSZXR1cm4gY29kZXM6IAorCW8gTkVUREVWX1RYX09LIGV2ZXJ5dGhpbmcgb2suIAorCW8gTkVUREVWX1RYX0JVU1kgQ2Fubm90IHRyYW5zbWl0IHBhY2tldCwgdHJ5IGxhdGVyIAorCSAgVXN1YWxseSBhIGJ1ZywgbWVhbnMgcXVldWUgc3RhcnQvc3RvcCBmbG93IGNvbnRyb2wgaXMgYnJva2VuIGluCisJICB0aGUgZHJpdmVyLiBOb3RlOiB0aGUgZHJpdmVyIG11c3QgTk9UIHB1dCB0aGUgc2tiIGluIGl0cyBETUEgcmluZy4KKwlvIE5FVERFVl9UWF9MT0NLRUQgTG9ja2luZyBmYWlsZWQsIHBsZWFzZSByZXRyeSBxdWlja2x5LgorCSAgT25seSB2YWxpZCB3aGVuIE5FVElGX0ZfTExUWCBpcyBzZXQuCisKK25kb190eF90aW1lb3V0OgorCVN5bmNocm9uaXphdGlvbjogbmV0aWZfdHhfbG9jayBzcGlubG9jazsgYWxsIFRYIHF1ZXVlcyBmcm96ZW4uCisJQ29udGV4dDogQkhzIGRpc2FibGVkCisJTm90ZXM6IG5ldGlmX3F1ZXVlX3N0b3BwZWQoKSBpcyBndWFyYW50ZWVkIHRydWUKKworbmRvX3NldF9yeF9tb2RlOgorCVN5bmNocm9uaXphdGlvbjogbmV0aWZfYWRkcl9sb2NrIHNwaW5sb2NrLgorCUNvbnRleHQ6IEJIcyBkaXNhYmxlZAorCitzdHJ1Y3QgbmFwaV9zdHJ1Y3Qgc3luY2hyb25pemF0aW9uIHJ1bGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CituYXBpLT5wb2xsOgorCVN5bmNocm9uaXphdGlvbjogTkFQSV9TVEFURV9TQ0hFRCBiaXQgaW4gbmFwaS0+c3RhdGUuICBEZXZpY2UKKwkJZHJpdmVyJ3MgbmRvX3N0b3AgbWV0aG9kIHdpbGwgaW52b2tlIG5hcGlfZGlzYWJsZSgpIG9uCisJCWFsbCBOQVBJIGluc3RhbmNlcyB3aGljaCB3aWxsIGRvIGEgc2xlZXBpbmcgcG9sbCBvbiB0aGUKKwkJTkFQSV9TVEFURV9TQ0hFRCBuYXBpLT5zdGF0ZSBiaXQsIHdhaXRpbmcgZm9yIGFsbCBwZW5kaW5nCisJCU5BUEkgYWN0aXZpdHkgdG8gY2Vhc2UuCisJQ29udGV4dDogc29mdGlycQorCSAgICAgICAgIHdpbGwgYmUgY2FsbGVkIHdpdGggaW50ZXJydXB0cyBkaXNhYmxlZCBieSBuZXRjb25zb2xlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGlmLW1zZy50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0aWYtbXNnLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTY3ZGRiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGlmLW1zZy50eHQKQEAgLTAsMCArMSw3OSBAQAorCitfX19fX19fX19fX19fX19fCitORVRJRiBNc2cgTGV2ZWwKKworVGhlIGRlc2lnbiBvZiB0aGUgbmV0d29yayBpbnRlcmZhY2UgbWVzc2FnZSBsZXZlbCBzZXR0aW5nLgorCitIaXN0b3J5CisKKyBUaGUgZGVzaWduIG9mIHRoZSBkZWJ1Z2dpbmcgbWVzc2FnZSBpbnRlcmZhY2Ugd2FzIGd1aWRlZCBhbmQKKyBjb25zdHJhaW5lZCBieSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBwcmV2aW91cyBwcmFjdGljZS4gIEl0IGlzIHVzZWZ1bAorIHRvIHVuZGVyc3RhbmQgdGhlIGhpc3RvcnkgYW5kIGV2b2x1dGlvbiBpbiBvcmRlciB0byB1bmRlcnN0YW5kIGN1cnJlbnQKKyBwcmFjdGljZSBhbmQgcmVsYXRlIGl0IHRvIG9sZGVyIGRyaXZlciBzb3VyY2UgY29kZS4KKworIEZyb20gdGhlIGJlZ2lubmluZyBvZiBMaW51eCwgZWFjaCBuZXR3b3JrIGRldmljZSBkcml2ZXIgaGFzIGhhZCBhIGxvY2FsCisgaW50ZWdlciB2YXJpYWJsZSB0aGF0IGNvbnRyb2xzIHRoZSBkZWJ1ZyBtZXNzYWdlIGxldmVsLiAgVGhlIG1lc3NhZ2UKKyBsZXZlbCByYW5nZWQgZnJvbSAwIHRvIDcsIGFuZCBtb25vdG9uaWNhbGx5IGluY3JlYXNlZCBpbiB2ZXJib3NpdHkuCisKKyBUaGUgbWVzc2FnZSBsZXZlbCB3YXMgbm90IHByZWNpc2VseSBkZWZpbmVkIHBhc3QgbGV2ZWwgMywgYnV0IHdlcmUKKyBhbHdheXMgaW1wbGVtZW50ZWQgd2l0aGluICstMSBvZiB0aGUgc3BlY2lmaWVkIGxldmVsLiAgRHJpdmVycyB0ZW5kZWQKKyB0byBzaGVkIHRoZSBtb3JlIHZlcmJvc2UgbGV2ZWwgbWVzc2FnZXMgYXMgdGhleSBtYXR1cmVkLgorICAgIDAgIE1pbmltYWwgbWVzc2FnZXMsIG9ubHkgZXNzZW50aWFsIGluZm9ybWF0aW9uIG9uIGZhdGFsIGVycm9ycy4KKyAgICAxICBTdGFuZGFyZCBtZXNzYWdlcywgaW5pdGlhbGl6YXRpb24gc3RhdHVzLiAgTm8gcnVuLXRpbWUgbWVzc2FnZXMKKyAgICAyICBTcGVjaWFsIG1lZGlhIHNlbGVjdGlvbiBtZXNzYWdlcywgZ2VuZXJhbGx5IHRpbWVyLWRyaXZlci4KKyAgICAzICBJbnRlcmZhY2Ugc3RhcnRzIGFuZCBzdG9wcywgaW5jbHVkaW5nIG5vcm1hbCBzdGF0dXMgbWVzc2FnZXMKKyAgICA0ICBUeCBhbmQgUnggZnJhbWUgZXJyb3IgbWVzc2FnZXMsIGFuZCBhYm5vcm1hbCBkcml2ZXIgb3BlcmF0aW9uCisgICAgNSAgVHggcGFja2V0IHF1ZXVlIGluZm9ybWF0aW9uLCBpbnRlcnJ1cHQgZXZlbnRzLgorICAgIDYgIFN0YXR1cyBvbiBlYWNoIGNvbXBsZXRlZCBUeCBwYWNrZXQgYW5kIHJlY2VpdmVkIFJ4IHBhY2tldHMKKyAgICA3ICBJbml0aWFsIGNvbnRlbnRzIG9mIFR4IGFuZCBSeCBwYWNrZXRzCisKKyBJbml0aWFsbHkgdGhpcyBtZXNzYWdlIGxldmVsIHZhcmlhYmxlIHdhcyB1bmlxdWVseSBuYW1lZCBpbiBlYWNoIGRyaXZlcgorIGUuZy4gImxhbmNlX2RlYnVnIiwgc28gdGhhdCBhIGtlcm5lbCBzeW1ib2xpYyBkZWJ1Z2dlciBjb3VsZCBsb2NhdGUgYW5kCisgbW9kaWZ5IHRoZSBzZXR0aW5nLiAgV2hlbiBrZXJuZWwgbW9kdWxlcyBiZWNhbWUgY29tbW9uLCB0aGUgdmFyaWFibGVzCisgd2VyZSBjb25zaXN0ZW50bHkgcmVuYW1lZCB0byAiZGVidWciIGFuZCBhbGxvd2VkIHRvIGJlIHNldCBhcyBhIG1vZHVsZQorIHBhcmFtZXRlci4KKworIFRoaXMgYXBwcm9hY2ggd29ya2VkIHdlbGwuICBIb3dldmVyIHRoZXJlIGlzIGFsd2F5cyBhIGRlbWFuZCBmb3IKKyBhZGRpdGlvbmFsIGZlYXR1cmVzLiAgT3ZlciB0aGUgeWVhcnMgdGhlIGZvbGxvd2luZyBlbWVyZ2VkIGFzCisgcmVhc29uYWJsZSBhbmQgZWFzaWx5IGltcGxlbWVudGVkIGVuaGFuY2VtZW50cworICAgVXNpbmcgYW4gaW9jdGwoKSBjYWxsIHRvIG1vZGlmeSB0aGUgbGV2ZWwuCisgICBQZXItaW50ZXJmYWNlIHJhdGhlciB0aGFuIHBlci1kcml2ZXIgbWVzc2FnZSBsZXZlbCBzZXR0aW5nLgorICAgTW9yZSBzZWxlY3RpdmUgY29udHJvbCBvdmVyIHRoZSB0eXBlIG9mIG1lc3NhZ2VzIGVtaXR0ZWQuCisKKyBUaGUgbmV0aWZfbXNnIHJlY29tbWVuZGF0aW9uIGFkZHMgdGhlc2UgZmVhdHVyZXMgd2l0aCBvbmx5IGEgbWlub3IKKyBjb21wbGV4aXR5IGFuZCBjb2RlIHNpemUgaW5jcmVhc2UuCisKKyBUaGUgcmVjb21tZW5kYXRpb24gaXMgdGhlIGZvbGxvd2luZyBwb2ludHMKKyAgICBSZXRhaW5pbmcgdGhlIHBlci1kcml2ZXIgaW50ZWdlciB2YXJpYWJsZSAiZGVidWciIGFzIGEgbW9kdWxlCisgICAgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IGxldmVsIG9mICcxJy4KKworICAgIEFkZGluZyBhIHBlci1pbnRlcmZhY2UgcHJpdmF0ZSB2YXJpYWJsZSBuYW1lZCAibXNnX2VuYWJsZSIuICBUaGUKKyAgICB2YXJpYWJsZSBpcyBhIGJpdCBtYXAgcmF0aGVyIHRoYW4gYSBsZXZlbCwgYW5kIGlzIGluaXRpYWxpemVkIGFzCisgICAgICAgMSA8PCBkZWJ1ZworICAgIE9yIG1vcmUgcHJlY2lzZWx5CisgICAgICAgIGRlYnVnIDwgMCA/IDAgOiAxIDw8IG1pbihzaXplb2YoaW50KS0xLCBkZWJ1ZykKKworICAgIE1lc3NhZ2VzIHNob3VsZCBjaGFuZ2VzIGZyb20KKyAgICAgIGlmIChkZWJ1ZyA+IDEpCisgICAgICAgICAgIHByaW50ayhNU0dfREVCVUcgIiVzOiAuLi4KKyAgICB0bworICAgICAgaWYgKG5wLT5tc2dfZW5hYmxlICYgTkVUSUZfTVNHX0xJTkspCisgICAgICAgICAgIHByaW50ayhNU0dfREVCVUcgIiVzOiAuLi4KKworCitUaGUgc2V0IG9mIG1lc3NhZ2UgbGV2ZWxzIGlzIG5hbWVkCisgIE9sZCBsZXZlbCAgIE5hbWUgICBCaXQgcG9zaXRpb24KKyAgICAwICAgIE5FVElGX01TR19EUlYJCTB4MDAwMQorICAgIDEgICAgTkVUSUZfTVNHX1BST0JFCTB4MDAwMgorICAgIDIgICAgTkVUSUZfTVNHX0xJTksJCTB4MDAwNAorICAgIDIgICAgTkVUSUZfTVNHX1RJTUVSCTB4MDAwNAorICAgIDMgICAgTkVUSUZfTVNHX0lGRE9XTgkweDAwMDgKKyAgICAzICAgIE5FVElGX01TR19JRlVQCQkweDAwMDgKKyAgICA0ICAgIE5FVElGX01TR19SWF9FUlIJMHgwMDEwCisgICAgNCAgICBORVRJRl9NU0dfVFhfRVJSCTB4MDAxMAorICAgIDUgICAgTkVUSUZfTVNHX1RYX1FVRVVFRAkweDAwMjAKKyAgICA1ICAgIE5FVElGX01TR19JTlRSCQkweDAwMjAKKyAgICA2ICAgIE5FVElGX01TR19UWF9ET05FCTB4MDA0MAorICAgIDYgICAgTkVUSUZfTVNHX1JYX1NUQVRVUwkweDAwNDAKKyAgICA3ICAgIE5FVElGX01TR19QS1REQVRBCTB4MDA4MAorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmZfY29ubnRyYWNrLXN5c2N0bC50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmZfY29ubnRyYWNrLXN5c2N0bC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU1NTk5YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZl9jb25udHJhY2stc3lzY3RsLnR4dApAQCAtMCwwICsxLDE3NyBAQAorL3Byb2Mvc3lzL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrXyogVmFyaWFibGVzOgorCituZl9jb25udHJhY2tfYWNjdCAtIEJPT0xFQU4KKwkwIC0gZGlzYWJsZWQgKGRlZmF1bHQpCisJbm90IDAgLSBlbmFibGVkCisKKwlFbmFibGUgY29ubmVjdGlvbiB0cmFja2luZyBmbG93IGFjY291bnRpbmcuIDY0LWJpdCBieXRlIGFuZCBwYWNrZXQKKwljb3VudGVycyBwZXIgZmxvdyBhcmUgYWRkZWQuCisKK25mX2Nvbm50cmFja19idWNrZXRzIC0gSU5URUdFUiAocmVhZC1vbmx5KQorCVNpemUgb2YgaGFzaCB0YWJsZS4gSWYgbm90IHNwZWNpZmllZCBhcyBwYXJhbWV0ZXIgZHVyaW5nIG1vZHVsZQorCWxvYWRpbmcsIHRoZSBkZWZhdWx0IHNpemUgaXMgY2FsY3VsYXRlZCBieSBkaXZpZGluZyB0b3RhbCBtZW1vcnkKKwlieSAxNjM4NCB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBidWNrZXRzIGJ1dCB0aGUgaGFzaCB0YWJsZSB3aWxsCisJbmV2ZXIgaGF2ZSBmZXdlciB0aGFuIDMyIGFuZCBsaW1pdGVkIHRvIDE2Mzg0IGJ1Y2tldHMuIEZvciBzeXN0ZW1zCisJd2l0aCBtb3JlIHRoYW4gNEdCIG9mIG1lbW9yeSBpdCB3aWxsIGJlIDY1NTM2IGJ1Y2tldHMuCisKK25mX2Nvbm50cmFja19jaGVja3N1bSAtIEJPT0xFQU4KKwkwIC0gZGlzYWJsZWQKKwlub3QgMCAtIGVuYWJsZWQgKGRlZmF1bHQpCisKKwlWZXJpZnkgY2hlY2tzdW0gb2YgaW5jb21pbmcgcGFja2V0cy4gUGFja2V0cyB3aXRoIGJhZCBjaGVja3N1bXMgYXJlCisJaW4gSU5WQUxJRCBzdGF0ZS4gSWYgdGhpcyBpcyBlbmFibGVkLCBzdWNoIHBhY2tldHMgd2lsbCBub3QgYmUKKwljb25zaWRlcmVkIGZvciBjb25uZWN0aW9uIHRyYWNraW5nLgorCituZl9jb25udHJhY2tfY291bnQgLSBJTlRFR0VSIChyZWFkLW9ubHkpCisJTnVtYmVyIG9mIGN1cnJlbnRseSBhbGxvY2F0ZWQgZmxvdyBlbnRyaWVzLgorCituZl9jb25udHJhY2tfZXZlbnRzIC0gQk9PTEVBTgorCTAgLSBkaXNhYmxlZAorCW5vdCAwIC0gZW5hYmxlZCAoZGVmYXVsdCkKKworCUlmIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQsIHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIGNvZGUgd2lsbAorCXByb3ZpZGUgdXNlcnNwYWNlIHdpdGggY29ubmVjdGlvbiB0cmFja2luZyBldmVudHMgdmlhIGN0bmV0bGluay4KKworbmZfY29ubnRyYWNrX2V2ZW50c19yZXRyeV90aW1lb3V0IC0gSU5URUdFUiAoc2Vjb25kcykKKwlkZWZhdWx0IDE1CisKKwlUaGlzIG9wdGlvbiBpcyBvbmx5IHJlbGV2YW50IHdoZW4gInJlbGlhYmxlIGNvbm5lY3Rpb24gdHJhY2tpbmcKKwlldmVudHMiIGFyZSB1c2VkLiAgTm9ybWFsbHksIGN0bmV0bGluayBpcyAibG9zc3kiLCB0aGF0IGlzLAorCWV2ZW50cyBhcmUgbm9ybWFsbHkgZHJvcHBlZCB3aGVuIHVzZXJzcGFjZSBsaXN0ZW5lcnMgY2FuJ3Qga2VlcCB1cC4KKworCVVzZXJzcGFjZSBjYW4gcmVxdWVzdCAicmVsaWFibGUgZXZlbnQgbW9kZSIuICBXaGVuIHRoaXMgbW9kZSBpcworCWFjdGl2ZSwgdGhlIGNvbm50cmFjayB3aWxsIG9ubHkgYmUgZGVzdHJveWVkIGFmdGVyIHRoZSBldmVudCB3YXMKKwlkZWxpdmVyZWQuICBJZiBldmVudCBkZWxpdmVyeSBmYWlscywgdGhlIGtlcm5lbCBwZXJpb2RpY2FsbHkKKwlyZS10cmllcyB0byBzZW5kIHRoZSBldmVudCB0byB1c2Vyc3BhY2UuCisKKwlUaGlzIGlzIHRoZSBtYXhpbXVtIGludGVydmFsIHRoZSBrZXJuZWwgc2hvdWxkIHVzZSB3aGVuIHJlLXRyeWluZworCXRvIGRlbGl2ZXIgdGhlIGRlc3Ryb3kgZXZlbnQuCisKKwlBIGhpZ2hlciBudW1iZXIgbWVhbnMgdGhlcmUgd2lsbCBiZSBmZXdlciBkZWxpdmVyeSByZXRyaWVzIGFuZCBpdAorCXdpbGwgdGFrZSBsb25nZXIgZm9yIGEgYmFja2xvZyB0byBiZSBwcm9jZXNzZWQuCisKK25mX2Nvbm50cmFja19leHBlY3RfbWF4IC0gSU5URUdFUgorCU1heGltdW0gc2l6ZSBvZiBleHBlY3RhdGlvbiB0YWJsZS4gIERlZmF1bHQgdmFsdWUgaXMKKwluZl9jb25udHJhY2tfYnVja2V0cyAvIDI1Ni4gTWluaW11bSBpcyAxLgorCituZl9jb25udHJhY2tfZnJhZzZfaGlnaF90aHJlc2ggLSBJTlRFR0VSCisJZGVmYXVsdCAyNjIxNDQKKworCU1heGltdW0gbWVtb3J5IHVzZWQgdG8gcmVhc3NlbWJsZSBJUHY2IGZyYWdtZW50cy4gIFdoZW4KKwluZl9jb25udHJhY2tfZnJhZzZfaGlnaF90aHJlc2ggYnl0ZXMgb2YgbWVtb3J5IGlzIGFsbG9jYXRlZCBmb3IgdGhpcworCXB1cnBvc2UsIHRoZSBmcmFnbWVudCBoYW5kbGVyIHdpbGwgdG9zcyBwYWNrZXRzIHVudGlsCisJbmZfY29ubnRyYWNrX2ZyYWc2X2xvd190aHJlc2ggaXMgcmVhY2hlZC4KKworbmZfY29ubnRyYWNrX2ZyYWc2X2xvd190aHJlc2ggLSBJTlRFR0VSCisJZGVmYXVsdCAxOTY2MDgKKworCVNlZSBuZl9jb25udHJhY2tfZnJhZzZfbG93X3RocmVzaAorCituZl9jb25udHJhY2tfZnJhZzZfdGltZW91dCAtIElOVEVHRVIgKHNlY29uZHMpCisJZGVmYXVsdCA2MAorCisJVGltZSB0byBrZWVwIGFuIElQdjYgZnJhZ21lbnQgaW4gbWVtb3J5LgorCituZl9jb25udHJhY2tfZ2VuZXJpY190aW1lb3V0IC0gSU5URUdFUiAoc2Vjb25kcykKKwlkZWZhdWx0IDYwMAorCisJRGVmYXVsdCBmb3IgZ2VuZXJpYyB0aW1lb3V0LiAgVGhpcyByZWZlcnMgdG8gbGF5ZXIgNCB1bmtub3duL3Vuc3VwcG9ydGVkCisJcHJvdG9jb2xzLgorCituZl9jb25udHJhY2tfaGVscGVyIC0gQk9PTEVBTgorCTAgLSBkaXNhYmxlZAorCW5vdCAwIC0gZW5hYmxlZCAoZGVmYXVsdCkKKworCUVuYWJsZSBhdXRvbWF0aWMgY29ubnRyYWNrIGhlbHBlciBhc3NpZ25tZW50LgorCituZl9jb25udHJhY2tfaWNtcF90aW1lb3V0IC0gSU5URUdFUiAoc2Vjb25kcykKKwlkZWZhdWx0IDMwCisKKwlEZWZhdWx0IGZvciBJQ01QIHRpbWVvdXQuCisKK25mX2Nvbm50cmFja19pY21wdjZfdGltZW91dCAtIElOVEVHRVIgKHNlY29uZHMpCisJZGVmYXVsdCAzMAorCisJRGVmYXVsdCBmb3IgSUNNUDYgdGltZW91dC4KKworbmZfY29ubnRyYWNrX2xvZ19pbnZhbGlkIC0gSU5URUdFUgorCTAgICAtIGRpc2FibGUgKGRlZmF1bHQpCisJMSAgIC0gbG9nIElDTVAgcGFja2V0cworCTYgICAtIGxvZyBUQ1AgcGFja2V0cworCTE3ICAtIGxvZyBVRFAgcGFja2V0cworCTMzICAtIGxvZyBEQ0NQIHBhY2tldHMKKwk0MSAgLSBsb2cgSUNNUHY2IHBhY2tldHMKKwkxMzYgLSBsb2cgVURQTElURSBwYWNrZXRzCisJMjU1IC0gbG9nIHBhY2tldHMgb2YgYW55IHByb3RvY29sCisKKwlMb2cgaW52YWxpZCBwYWNrZXRzIG9mIGEgdHlwZSBzcGVjaWZpZWQgYnkgdmFsdWUuCisKK25mX2Nvbm50cmFja19tYXggLSBJTlRFR0VSCisJU2l6ZSBvZiBjb25uZWN0aW9uIHRyYWNraW5nIHRhYmxlLiAgRGVmYXVsdCB2YWx1ZSBpcworCW5mX2Nvbm50cmFja19idWNrZXRzIHZhbHVlICogNC4KKworbmZfY29ubnRyYWNrX3RjcF9iZV9saWJlcmFsIC0gQk9PTEVBTgorCTAgLSBkaXNhYmxlZCAoZGVmYXVsdCkKKwlub3QgMCAtIGVuYWJsZWQKKworCUJlIGNvbnNlcnZhdGl2ZSBpbiB3aGF0IHlvdSBkbywgYmUgbGliZXJhbCBpbiB3aGF0IHlvdSBhY2NlcHQgZnJvbSBvdGhlcnMuCisJSWYgaXQncyBub24temVybywgd2UgbWFyayBvbmx5IG91dCBvZiB3aW5kb3cgUlNUIHNlZ21lbnRzIGFzIElOVkFMSUQuCisKK25mX2Nvbm50cmFja190Y3BfbG9vc2UgLSBCT09MRUFOCisJMCAtIGRpc2FibGVkCisJbm90IDAgLSBlbmFibGVkIChkZWZhdWx0KQorCisJSWYgaXQgaXMgc2V0IHRvIHplcm8sIHdlIGRpc2FibGUgcGlja2luZyB1cCBhbHJlYWR5IGVzdGFibGlzaGVkCisJY29ubmVjdGlvbnMuCisKK25mX2Nvbm50cmFja190Y3BfbWF4X3JldHJhbnMgLSBJTlRFR0VSCisJZGVmYXVsdCAzCisKKwlNYXhpbXVtIG51bWJlciBvZiBwYWNrZXRzIHRoYXQgY2FuIGJlIHJldHJhbnNtaXR0ZWQgd2l0aG91dAorCXJlY2VpdmVkIGFuIChhY2NlcHRhYmxlKSBBQ0sgZnJvbSB0aGUgZGVzdGluYXRpb24uIElmIHRoaXMgbnVtYmVyCisJaXMgcmVhY2hlZCwgYSBzaG9ydGVyIHRpbWVyIHdpbGwgYmUgc3RhcnRlZC4KKworbmZfY29ubnRyYWNrX3RjcF90aW1lb3V0X2Nsb3NlIC0gSU5URUdFUiAoc2Vjb25kcykKKwlkZWZhdWx0IDEwCisKK25mX2Nvbm50cmFja190Y3BfdGltZW91dF9jbG9zZV93YWl0IC0gSU5URUdFUiAoc2Vjb25kcykKKwlkZWZhdWx0IDYwCisKK25mX2Nvbm50cmFja190Y3BfdGltZW91dF9lc3RhYmxpc2hlZCAtIElOVEVHRVIgKHNlY29uZHMpCisJZGVmYXVsdCA0MzIwMDAgKDUgZGF5cykKKworbmZfY29ubnRyYWNrX3RjcF90aW1lb3V0X2Zpbl93YWl0IC0gSU5URUdFUiAoc2Vjb25kcykKKwlkZWZhdWx0IDEyMAorCituZl9jb25udHJhY2tfdGNwX3RpbWVvdXRfbGFzdF9hY2sgLSBJTlRFR0VSIChzZWNvbmRzKQorCWRlZmF1bHQgMzAKKworbmZfY29ubnRyYWNrX3RjcF90aW1lb3V0X21heF9yZXRyYW5zIC0gSU5URUdFUiAoc2Vjb25kcykKKwlkZWZhdWx0IDMwMAorCituZl9jb25udHJhY2tfdGNwX3RpbWVvdXRfc3luX3JlY3YgLSBJTlRFR0VSIChzZWNvbmRzKQorCWRlZmF1bHQgNjAKKworbmZfY29ubnRyYWNrX3RjcF90aW1lb3V0X3N5bl9zZW50IC0gSU5URUdFUiAoc2Vjb25kcykKKwlkZWZhdWx0IDEyMAorCituZl9jb25udHJhY2tfdGNwX3RpbWVvdXRfdGltZV93YWl0IC0gSU5URUdFUiAoc2Vjb25kcykKKwlkZWZhdWx0IDEyMAorCituZl9jb25udHJhY2tfdGNwX3RpbWVvdXRfdW5hY2tub3dsZWRnZWQgLSBJTlRFR0VSIChzZWNvbmRzKQorCWRlZmF1bHQgMzAwCisKK25mX2Nvbm50cmFja190aW1lc3RhbXAgLSBCT09MRUFOCisJMCAtIGRpc2FibGVkIChkZWZhdWx0KQorCW5vdCAwIC0gZW5hYmxlZAorCisJRW5hYmxlIGNvbm5lY3Rpb24gdHJhY2tpbmcgZmxvdyB0aW1lc3RhbXBpbmcuCisKK25mX2Nvbm50cmFja191ZHBfdGltZW91dCAtIElOVEVHRVIgKHNlY29uZHMpCisJZGVmYXVsdCAzMAorCituZl9jb25udHJhY2tfdWRwX3RpbWVvdXRfc3RyZWFtMiAtIElOVEVHRVIgKHNlY29uZHMpCisJZGVmYXVsdCAxODAKKworCVRoaXMgZXh0ZW5kZWQgdGltZW91dCB3aWxsIGJlIHVzZWQgaW4gY2FzZSB0aGVyZSBpcyBhbiBVRFAgc3RyZWFtCisJZGV0ZWN0ZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmZjLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZmMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyNGMyOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmZjLnR4dApAQCAtMCwwICsxLDEyOCBAQAorTGludXggTkZDIHN1YnN5c3RlbQorPT09PT09PT09PT09PT09PT09PQorCitUaGUgTmVhciBGaWVsZCBDb21tdW5pY2F0aW9uIChORkMpIHN1YnN5c3RlbSBpcyByZXF1aXJlZCB0byBzdGFuZGFyZGl6ZSB0aGUKK05GQyBkZXZpY2UgZHJpdmVycyBkZXZlbG9wbWVudCBhbmQgdG8gY3JlYXRlIGFuIHVuaWZpZWQgdXNlcnNwYWNlIGludGVyZmFjZS4KKworVGhpcyBkb2N1bWVudCBjb3ZlcnMgdGhlIGFyY2hpdGVjdHVyZSBvdmVydmlldywgdGhlIGRldmljZSBkcml2ZXIgaW50ZXJmYWNlCitkZXNjcmlwdGlvbiBhbmQgdGhlIHVzZXJzcGFjZSBpbnRlcmZhY2UgZGVzY3JpcHRpb24uCisKK0FyY2hpdGVjdHVyZSBvdmVydmlldworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBORkMgc3Vic3lzdGVtIGlzIHJlc3BvbnNpYmxlIGZvcjoKKyAgICAgIC0gTkZDIGFkYXB0ZXJzIG1hbmFnZW1lbnQ7CisgICAgICAtIFBvbGxpbmcgZm9yIHRhcmdldHM7CisgICAgICAtIExvdy1sZXZlbCBkYXRhIGV4Y2hhbmdlOworCitUaGUgc3Vic3lzdGVtIGlzIGRpdmlkZWQgaW4gc29tZSBwYXJ0cy4gVGhlICdjb3JlJyBpcyByZXNwb25zaWJsZSBmb3IKK3Byb3ZpZGluZyB0aGUgZGV2aWNlIGRyaXZlciBpbnRlcmZhY2UuIE9uIHRoZSBvdGhlciBzaWRlLCBpdCBpcyBhbHNvCityZXNwb25zaWJsZSBmb3IgcHJvdmlkaW5nIGFuIGludGVyZmFjZSB0byBjb250cm9sIG9wZXJhdGlvbnMgYW5kIGxvdy1sZXZlbAorZGF0YSBleGNoYW5nZS4KKworVGhlIGNvbnRyb2wgb3BlcmF0aW9ucyBhcmUgYXZhaWxhYmxlIHRvIHVzZXJzcGFjZSB2aWEgZ2VuZXJpYyBuZXRsaW5rLgorCitUaGUgbG93LWxldmVsIGRhdGEgZXhjaGFuZ2UgaW50ZXJmYWNlIGlzIHByb3ZpZGVkIGJ5IHRoZSBuZXcgc29ja2V0IGZhbWlseQorUEZfTkZDLiBUaGUgTkZDX1NPQ0tQUk9UT19SQVcgcGVyZm9ybXMgcmF3IGNvbW11bmljYXRpb24gd2l0aCBORkMgdGFyZ2V0cy4KKworCisgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgIHwgICAgICAgICAgICAgIFVTRVIgU1BBQ0UgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgfCBsb3ctbGV2ZWwgICAgICAgICAgICAgfCBjb250cm9sCisgICAgICAgICAgICAgICAgIHwgZGF0YSBleGNoYW5nZSAgICAgICAgIHwgb3BlcmF0aW9ucworICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgfCBBRl9ORkMgICAgICAgICAgIHwgIG5ldGxpbmsgIHwKKyAgICAgICAgICAgICAgICAgfCBzb2NrZXQgICAgICAgICAgICstLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgfCByYXcgICAgICAgICAgICAgICAgICAgXgorICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgIHYgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICAgICAgICAgICArLS0tLS0tLS0tKyAgICAgICAgICAgICstLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICB8IHJhd3NvY2sgfCA8LS0tLS0tLS0+IHwgICBjb3JlICAgIHwKKyAgICAgICAgICAgICArLS0tLS0tLS0tKyAgICAgICAgICAgICstLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGRyaXZlciAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLSsKKworRGV2aWNlIERyaXZlciBJbnRlcmZhY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doZW4gcmVnaXN0ZXJpbmcgb24gdGhlIE5GQyBzdWJzeXN0ZW0sIHRoZSBkZXZpY2UgZHJpdmVyIG11c3QgaW5mb3JtIHRoZSBjb3JlCitvZiB0aGUgc2V0IG9mIHN1cHBvcnRlZCBORkMgcHJvdG9jb2xzIGFuZCB0aGUgc2V0IG9mIG9wcyBjYWxsYmFja3MuIFRoZSBvcHMKK2NhbGxiYWNrcyB0aGF0IG11c3QgYmUgaW1wbGVtZW50ZWQgYXJlIHRoZSBmb2xsb3dpbmc6CisKKyogc3RhcnRfcG9sbCAtIHNldHVwIHRoZSBkZXZpY2UgdG8gcG9sbCBmb3IgdGFyZ2V0cworKiBzdG9wX3BvbGwgLSBzdG9wIG9uIHByb2dyZXNzIHBvbGxpbmcgb3BlcmF0aW9uCisqIGFjdGl2YXRlX3RhcmdldCAtIHNlbGVjdCBhbmQgaW5pdGlhbGl6ZSBvbmUgb2YgdGhlIHRhcmdldHMgZm91bmQKKyogZGVhY3RpdmF0ZV90YXJnZXQgLSBkZXNlbGVjdCBhbmQgZGVpbml0aWFsaXplIHRoZSBzZWxlY3RlZCB0YXJnZXQKKyogZGF0YV9leGNoYW5nZSAtIHNlbmQgZGF0YSBhbmQgcmVjZWl2ZSB0aGUgcmVzcG9uc2UgKHRyYW5zY2VpdmUgb3BlcmF0aW9uKQorCitVc2Vyc3BhY2UgaW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgdXNlcnNwYWNlIGludGVyZmFjZSBpcyBkaXZpZGVkIGluIGNvbnRyb2wgb3BlcmF0aW9ucyBhbmQgbG93LWxldmVsIGRhdGEKK2V4Y2hhbmdlIG9wZXJhdGlvbi4KKworQ09OVFJPTCBPUEVSQVRJT05TOgorCitHZW5lcmljIG5ldGxpbmsgaXMgdXNlZCB0byBpbXBsZW1lbnQgdGhlIGludGVyZmFjZSB0byB0aGUgY29udHJvbCBvcGVyYXRpb25zLgorVGhlIG9wZXJhdGlvbnMgYXJlIGNvbXBvc2VkIGJ5IGNvbW1hbmRzIGFuZCBldmVudHMsIGFsbCBsaXN0ZWQgYmVsb3c6CisKKyogTkZDX0NNRF9HRVRfREVWSUNFIC0gZ2V0IHNwZWNpZmljIGRldmljZSBpbmZvIG9yIGR1bXAgdGhlIGRldmljZSBsaXN0CisqIE5GQ19DTURfU1RBUlRfUE9MTCAtIHNldHVwIGEgc3BlY2lmaWMgZGV2aWNlIHRvIHBvbGxpbmcgZm9yIHRhcmdldHMKKyogTkZDX0NNRF9TVE9QX1BPTEwgLSBzdG9wIHRoZSBwb2xsaW5nIG9wZXJhdGlvbiBpbiBhIHNwZWNpZmljIGRldmljZQorKiBORkNfQ01EX0dFVF9UQVJHRVQgLSBkdW1wIHRoZSBsaXN0IG9mIHRhcmdldHMgZm91bmQgYnkgYSBzcGVjaWZpYyBkZXZpY2UKKworKiBORkNfRVZFTlRfREVWSUNFX0FEREVEIC0gcmVwb3J0cyBhbiBORkMgZGV2aWNlIGFkZGl0aW9uCisqIE5GQ19FVkVOVF9ERVZJQ0VfUkVNT1ZFRCAtIHJlcG9ydHMgYW4gTkZDIGRldmljZSByZW1vdmFsCisqIE5GQ19FVkVOVF9UQVJHRVRTX0ZPVU5EIC0gcmVwb3J0cyBTVEFSVF9QT0xMIHJlc3VsdHMgd2hlbiAxIG9yIG1vcmUgdGFyZ2V0cworYXJlIGZvdW5kCisKK1RoZSB1c2VyIG11c3QgY2FsbCBTVEFSVF9QT0xMIHRvIHBvbGwgZm9yIE5GQyB0YXJnZXRzLCBwYXNzaW5nIHRoZSBkZXNpcmVkIE5GQworcHJvdG9jb2xzIHRocm91Z2ggTkZDX0FUVFJfUFJPVE9DT0xTIGF0dHJpYnV0ZS4gVGhlIGRldmljZSByZW1haW5zIGluIHBvbGxpbmcKK3N0YXRlIHVudGlsIGl0IGZpbmRzIGFueSB0YXJnZXQuIEhvd2V2ZXIsIHRoZSB1c2VyIGNhbiBzdG9wIHRoZSBwb2xsaW5nCitvcGVyYXRpb24gYnkgY2FsbGluZyBTVE9QX1BPTEwgY29tbWFuZC4gSW4gdGhpcyBjYXNlLCBpdCB3aWxsIGJlIGNoZWNrZWQgaWYKK3RoZSByZXF1ZXN0ZXIgb2YgU1RPUF9QT0xMIGlzIHRoZSBzYW1lIG9mIFNUQVJUX1BPTEwuCisKK0lmIHRoZSBwb2xsaW5nIG9wZXJhdGlvbiBmaW5kcyBvbmUgb3IgbW9yZSB0YXJnZXRzLCB0aGUgZXZlbnQgVEFSR0VUU19GT1VORCBpcworc2VudCAoaW5jbHVkaW5nIHRoZSBkZXZpY2UgaWQpLiBUaGUgdXNlciBtdXN0IGNhbGwgR0VUX1RBUkdFVCB0byBnZXQgdGhlIGxpc3Qgb2YKK2FsbCB0YXJnZXRzIGZvdW5kIGJ5IHN1Y2ggZGV2aWNlLiBFYWNoIHJlcGx5IG1lc3NhZ2UgaGFzIHRhcmdldCBhdHRyaWJ1dGVzIHdpdGgKK3JlbGV2YW50IGluZm9ybWF0aW9uIHN1Y2ggYXMgdGhlIHN1cHBvcnRlZCBORkMgcHJvdG9jb2xzLgorCitBbGwgcG9sbGluZyBvcGVyYXRpb25zIHJlcXVlc3RlZCB0aHJvdWdoIG9uZSBuZXRsaW5rIHNvY2tldCBhcmUgc3RvcHBlZCB3aGVuCitpdCdzIGNsb3NlZC4KKworTE9XLUxFVkVMIERBVEEgRVhDSEFOR0U6CisKK1RoZSB1c2Vyc3BhY2UgbXVzdCB1c2UgUEZfTkZDIHNvY2tldHMgdG8gcGVyZm9ybSBhbnkgZGF0YSBjb21tdW5pY2F0aW9uIHdpdGgKK3RhcmdldHMuIEFsbCBORkMgc29ja2V0cyB1c2UgQUZfTkZDOgorCitzdHJ1Y3Qgc29ja2FkZHJfbmZjIHsKKyAgICAgICBzYV9mYW1pbHlfdCBzYV9mYW1pbHk7CisgICAgICAgX191MzIgZGV2X2lkeDsKKyAgICAgICBfX3UzMiB0YXJnZXRfaWR4OworICAgICAgIF9fdTMyIG5mY19wcm90b2NvbDsKK307CisKK1RvIGVzdGFibGlzaCBhIGNvbm5lY3Rpb24gd2l0aCBvbmUgdGFyZ2V0LCB0aGUgdXNlciBtdXN0IGNyZWF0ZSBhbgorTkZDX1NPQ0tQUk9UT19SQVcgc29ja2V0IGFuZCBjYWxsIHRoZSAnY29ubmVjdCcgc3lzY2FsbCB3aXRoIHRoZSBzb2NrYWRkcl9uZmMKK3N0cnVjdCBjb3JyZWN0bHkgZmlsbGVkLiBBbGwgaW5mb3JtYXRpb24gY29tZXMgZnJvbSBORkNfRVZFTlRfVEFSR0VUU19GT1VORAorbmV0bGluayBldmVudC4gQXMgYSB0YXJnZXQgY2FuIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBORkMgcHJvdG9jb2wsIHRoZSB1c2VyCittdXN0IGluZm9ybSB3aGljaCBwcm90b2NvbCBpdCB3YW50cyB0byB1c2UuCisKK0ludGVybmFsbHksICdjb25uZWN0JyB3aWxsIHJlc3VsdCBpbiBhbiBhY3RpdmF0ZV90YXJnZXQgY2FsbCB0byB0aGUgZHJpdmVyLgorV2hlbiB0aGUgc29ja2V0IGlzIGNsb3NlZCwgdGhlIHRhcmdldCBpcyBkZWFjdGl2YXRlZC4KKworVGhlIGRhdGEgZm9ybWF0IGV4Y2hhbmdlZCB0aHJvdWdoIHRoZSBzb2NrZXRzIGlzIE5GQyBwcm90b2NvbCBkZXBlbmRlbnQuIEZvcgoraW5zdGFuY2UsIHdoZW4gY29tbXVuaWNhdGluZyB3aXRoIE1JRkFSRSB0YWdzLCB0aGUgZGF0YSBleGNoYW5nZWQgYXJlIE1JRkFSRQorY29tbWFuZHMgYW5kIHRoZWlyIHJlc3BvbnNlcy4KKworVGhlIGZpcnN0IHJlY2VpdmVkIHBhY2thZ2UgaXMgdGhlIHJlc3BvbnNlIHRvIHRoZSBmaXJzdCBzZW50IHBhY2thZ2UgYW5kIHNvCitvbi4gSW4gb3JkZXIgdG8gYWxsb3cgdmFsaWQgImVtcHR5IiByZXNwb25zZXMsIGV2ZXJ5IGRhdGEgcmVjZWl2ZWQgaGFzIGEgTlVMTAoraGVhZGVyIG9mIDEgYnl0ZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9vcGVudnN3aXRjaC50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvb3BlbnZzd2l0Y2gudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzYjlhYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvb3BlbnZzd2l0Y2gudHh0CkBAIC0wLDAgKzEsMjQ4IEBACitPcGVuIHZTd2l0Y2ggZGF0YXBhdGggZGV2ZWxvcGVyIGRvY3VtZW50YXRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgT3BlbiB2U3dpdGNoIGtlcm5lbCBtb2R1bGUgYWxsb3dzIGZsZXhpYmxlIHVzZXJzcGFjZSBjb250cm9sIG92ZXIKK2Zsb3ctbGV2ZWwgcGFja2V0IHByb2Nlc3Npbmcgb24gc2VsZWN0ZWQgbmV0d29yayBkZXZpY2VzLiAgSXQgY2FuIGJlCit1c2VkIHRvIGltcGxlbWVudCBhIHBsYWluIEV0aGVybmV0IHN3aXRjaCwgbmV0d29yayBkZXZpY2UgYm9uZGluZywKK1ZMQU4gcHJvY2Vzc2luZywgbmV0d29yayBhY2Nlc3MgY29udHJvbCwgZmxvdy1iYXNlZCBuZXR3b3JrIGNvbnRyb2wsCithbmQgc28gb24uCisKK1RoZSBrZXJuZWwgbW9kdWxlIGltcGxlbWVudHMgbXVsdGlwbGUgImRhdGFwYXRocyIgKGFuYWxvZ291cyB0bworYnJpZGdlcyksIGVhY2ggb2Ygd2hpY2ggY2FuIGhhdmUgbXVsdGlwbGUgInZwb3J0cyIgKGFuYWxvZ291cyB0byBwb3J0cword2l0aGluIGEgYnJpZGdlKS4gIEVhY2ggZGF0YXBhdGggYWxzbyBoYXMgYXNzb2NpYXRlZCB3aXRoIGl0IGEgImZsb3cKK3RhYmxlIiB0aGF0IHVzZXJzcGFjZSBwb3B1bGF0ZXMgd2l0aCAiZmxvd3MiIHRoYXQgbWFwIGZyb20ga2V5cyBiYXNlZAorb24gcGFja2V0IGhlYWRlcnMgYW5kIG1ldGFkYXRhIHRvIHNldHMgb2YgYWN0aW9ucy4gIFRoZSBtb3N0IGNvbW1vbgorYWN0aW9uIGZvcndhcmRzIHRoZSBwYWNrZXQgdG8gYW5vdGhlciB2cG9ydDsgb3RoZXIgYWN0aW9ucyBhcmUgYWxzbworaW1wbGVtZW50ZWQuCisKK1doZW4gYSBwYWNrZXQgYXJyaXZlcyBvbiBhIHZwb3J0LCB0aGUga2VybmVsIG1vZHVsZSBwcm9jZXNzZXMgaXQgYnkKK2V4dHJhY3RpbmcgaXRzIGZsb3cga2V5IGFuZCBsb29raW5nIGl0IHVwIGluIHRoZSBmbG93IHRhYmxlLiAgSWYgdGhlcmUKK2lzIGEgbWF0Y2hpbmcgZmxvdywgaXQgZXhlY3V0ZXMgdGhlIGFzc29jaWF0ZWQgYWN0aW9ucy4gIElmIHRoZXJlIGlzCitubyBtYXRjaCwgaXQgcXVldWVzIHRoZSBwYWNrZXQgdG8gdXNlcnNwYWNlIGZvciBwcm9jZXNzaW5nIChhcyBwYXJ0IG9mCitpdHMgcHJvY2Vzc2luZywgdXNlcnNwYWNlIHdpbGwgbGlrZWx5IHNldCB1cCBhIGZsb3cgdG8gaGFuZGxlIGZ1cnRoZXIKK3BhY2tldHMgb2YgdGhlIHNhbWUgdHlwZSBlbnRpcmVseSBpbi1rZXJuZWwpLgorCisKK0Zsb3cga2V5IGNvbXBhdGliaWxpdHkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmV0d29yayBwcm90b2NvbHMgZXZvbHZlIG92ZXIgdGltZS4gIE5ldyBwcm90b2NvbHMgYmVjb21lIGltcG9ydGFudAorYW5kIGV4aXN0aW5nIHByb3RvY29scyBsb3NlIHRoZWlyIHByb21pbmVuY2UuICBGb3IgdGhlIE9wZW4gdlN3aXRjaAora2VybmVsIG1vZHVsZSB0byByZW1haW4gcmVsZXZhbnQsIGl0IG11c3QgYmUgcG9zc2libGUgZm9yIG5ld2VyCit2ZXJzaW9ucyB0byBwYXJzZSBhZGRpdGlvbmFsIHByb3RvY29scyBhcyBwYXJ0IG9mIHRoZSBmbG93IGtleS4gIEl0CittaWdodCBldmVuIGJlIGRlc2lyYWJsZSwgc29tZWRheSwgdG8gZHJvcCBzdXBwb3J0IGZvciBwYXJzaW5nCitwcm90b2NvbHMgdGhhdCBoYXZlIGJlY29tZSBvYnNvbGV0ZS4gIFRoZXJlZm9yZSwgdGhlIE5ldGxpbmsgaW50ZXJmYWNlCit0byBPcGVuIHZTd2l0Y2ggaXMgZGVzaWduZWQgdG8gYWxsb3cgY2FyZWZ1bGx5IHdyaXR0ZW4gdXNlcnNwYWNlCithcHBsaWNhdGlvbnMgdG8gd29yayB3aXRoIGFueSB2ZXJzaW9uIG9mIHRoZSBmbG93IGtleSwgcGFzdCBvciBmdXR1cmUuCisKK1RvIHN1cHBvcnQgdGhpcyBmb3J3YXJkIGFuZCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB3aGVuZXZlciB0aGUKK2tlcm5lbCBtb2R1bGUgcGFzc2VzIGEgcGFja2V0IHRvIHVzZXJzcGFjZSwgaXQgYWxzbyBwYXNzZXMgYWxvbmcgdGhlCitmbG93IGtleSB0aGF0IGl0IHBhcnNlZCBmcm9tIHRoZSBwYWNrZXQuICBVc2Vyc3BhY2UgdGhlbiBleHRyYWN0cyBpdHMKK293biBub3Rpb24gb2YgYSBmbG93IGtleSBmcm9tIHRoZSBwYWNrZXQgYW5kIGNvbXBhcmVzIGl0IGFnYWluc3QgdGhlCitrZXJuZWwtcHJvdmlkZWQgdmVyc2lvbjoKKworICAgIC0gSWYgdXNlcnNwYWNlJ3Mgbm90aW9uIG9mIHRoZSBmbG93IGtleSBmb3IgdGhlIHBhY2tldCBtYXRjaGVzIHRoZQorICAgICAga2VybmVsJ3MsIHRoZW4gbm90aGluZyBzcGVjaWFsIGlzIG5lY2Vzc2FyeS4KKworICAgIC0gSWYgdGhlIGtlcm5lbCdzIGZsb3cga2V5IGluY2x1ZGVzIG1vcmUgZmllbGRzIHRoYW4gdGhlIHVzZXJzcGFjZQorICAgICAgdmVyc2lvbiBvZiB0aGUgZmxvdyBrZXksIGZvciBleGFtcGxlIGlmIHRoZSBrZXJuZWwgZGVjb2RlZCBJUHY2CisgICAgICBoZWFkZXJzIGJ1dCB1c2Vyc3BhY2Ugc3RvcHBlZCBhdCB0aGUgRXRoZXJuZXQgdHlwZSAoYmVjYXVzZSBpdAorICAgICAgZG9lcyBub3QgdW5kZXJzdGFuZCBJUHY2KSwgdGhlbiBhZ2FpbiBub3RoaW5nIHNwZWNpYWwgaXMKKyAgICAgIG5lY2Vzc2FyeS4gIFVzZXJzcGFjZSBjYW4gc3RpbGwgc2V0IHVwIGEgZmxvdyBpbiB0aGUgdXN1YWwgd2F5LAorICAgICAgYXMgbG9uZyBhcyBpdCB1c2VzIHRoZSBrZXJuZWwtcHJvdmlkZWQgZmxvdyBrZXkgdG8gZG8gaXQuCisKKyAgICAtIElmIHRoZSB1c2Vyc3BhY2UgZmxvdyBrZXkgaW5jbHVkZXMgbW9yZSBmaWVsZHMgdGhhbiB0aGUKKyAgICAgIGtlcm5lbCdzLCBmb3IgZXhhbXBsZSBpZiB1c2Vyc3BhY2UgZGVjb2RlZCBhbiBJUHY2IGhlYWRlciBidXQKKyAgICAgIHRoZSBrZXJuZWwgc3RvcHBlZCBhdCB0aGUgRXRoZXJuZXQgdHlwZSwgdGhlbiB1c2Vyc3BhY2UgY2FuCisgICAgICBmb3J3YXJkIHRoZSBwYWNrZXQgbWFudWFsbHksIHdpdGhvdXQgc2V0dGluZyB1cCBhIGZsb3cgaW4gdGhlCisgICAgICBrZXJuZWwuICBUaGlzIGNhc2UgaXMgYmFkIGZvciBwZXJmb3JtYW5jZSBiZWNhdXNlIGV2ZXJ5IHBhY2tldAorICAgICAgdGhhdCB0aGUga2VybmVsIGNvbnNpZGVycyBwYXJ0IG9mIHRoZSBmbG93IG11c3QgZ28gdG8gdXNlcnNwYWNlLAorICAgICAgYnV0IHRoZSBmb3J3YXJkaW5nIGJlaGF2aW9yIGlzIGNvcnJlY3QuICAoSWYgdXNlcnNwYWNlIGNhbgorICAgICAgZGV0ZXJtaW5lIHRoYXQgdGhlIHZhbHVlcyBvZiB0aGUgZXh0cmEgZmllbGRzIHdvdWxkIG5vdCBhZmZlY3QKKyAgICAgIGZvcndhcmRpbmcgYmVoYXZpb3IsIHRoZW4gaXQgY291bGQgc2V0IHVwIGEgZmxvdyBhbnl3YXkuKQorCitIb3cgZmxvdyBrZXlzIGV2b2x2ZSBvdmVyIHRpbWUgaXMgaW1wb3J0YW50IHRvIG1ha2luZyB0aGlzIHdvcmssIHNvCit0aGUgZm9sbG93aW5nIHNlY3Rpb25zIGdvIGludG8gZGV0YWlsLgorCisKK0Zsb3cga2V5IGZvcm1hdAorLS0tLS0tLS0tLS0tLS0tCisKK0EgZmxvdyBrZXkgaXMgcGFzc2VkIG92ZXIgYSBOZXRsaW5rIHNvY2tldCBhcyBhIHNlcXVlbmNlIG9mIE5ldGxpbmsKK2F0dHJpYnV0ZXMuICBTb21lIGF0dHJpYnV0ZXMgcmVwcmVzZW50IHBhY2tldCBtZXRhZGF0YSwgZGVmaW5lZCBhcyBhbnkKK2luZm9ybWF0aW9uIGFib3V0IGEgcGFja2V0IHRoYXQgY2Fubm90IGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBwYWNrZXQKK2l0c2VsZiwgZS5nLiB0aGUgdnBvcnQgb24gd2hpY2ggdGhlIHBhY2tldCB3YXMgcmVjZWl2ZWQuICBNb3N0CithdHRyaWJ1dGVzLCBob3dldmVyLCBhcmUgZXh0cmFjdGVkIGZyb20gaGVhZGVycyB3aXRoaW4gdGhlIHBhY2tldCwKK2UuZy4gc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhZGRyZXNzZXMgZnJvbSBFdGhlcm5ldCwgSVAsIG9yIFRDUAoraGVhZGVycy4KKworVGhlIDxsaW51eC9vcGVudnN3aXRjaC5oPiBoZWFkZXIgZmlsZSBkZWZpbmVzIHRoZSBleGFjdCBmb3JtYXQgb2YgdGhlCitmbG93IGtleSBhdHRyaWJ1dGVzLiAgRm9yIGluZm9ybWFsIGV4cGxhbmF0b3J5IHB1cnBvc2VzIGhlcmUsIHdlIHdyaXRlCit0aGVtIGFzIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdzLCB3aXRoIHBhcmVudGhlc2VzIGluZGljYXRpbmcgYXJndW1lbnRzCithbmQgbmVzdGluZy4gIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvdWxkIHJlcHJlc2VudCBhIGZsb3cga2V5Citjb3JyZXNwb25kaW5nIHRvIGEgVENQIHBhY2tldCB0aGF0IGFycml2ZWQgb24gdnBvcnQgMToKKworICAgIGluX3BvcnQoMSksIGV0aChzcmM9ZTA6OTE6ZjU6MjE6ZDA6YjIsIGRzdD0wMDowMjplMzowZjo4MDphNCksCisgICAgZXRoX3R5cGUoMHgwODAwKSwgaXB2NChzcmM9MTcyLjE2LjAuMjAsIGRzdD0xNzIuMTguMC41MiwgcHJvdG89MTcsIHRvcz0wLAorICAgIGZyYWc9bm8pLCB0Y3Aoc3JjPTQ5MTYzLCBkc3Q9ODApCisKK09mdGVuIHdlIGVsbGlwc2l6ZSBhcmd1bWVudHMgbm90IGltcG9ydGFudCB0byB0aGUgZGlzY3Vzc2lvbiwgZS5nLjoKKworICAgIGluX3BvcnQoMSksIGV0aCguLi4pLCBldGhfdHlwZSgweDA4MDApLCBpcHY0KC4uLiksIHRjcCguLi4pCisKKworV2lsZGNhcmRlZCBmbG93IGtleSBmb3JtYXQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Egd2lsZGNhcmRlZCBmbG93IGlzIGRlc2NyaWJlZCB3aXRoIHR3byBzZXF1ZW5jZXMgb2YgTmV0bGluayBhdHRyaWJ1dGVzCitwYXNzZWQgb3ZlciB0aGUgTmV0bGluayBzb2NrZXQuIEEgZmxvdyBrZXksIGV4YWN0bHkgYXMgZGVzY3JpYmVkIGFib3ZlLCBhbmQgYW4KK29wdGlvbmFsIGNvcnJlc3BvbmRpbmcgZmxvdyBtYXNrLgorCitBIHdpbGRjYXJkZWQgZmxvdyBjYW4gcmVwcmVzZW50IGEgZ3JvdXAgb2YgZXhhY3QgbWF0Y2ggZmxvd3MuIEVhY2ggJzEnIGJpdAoraW4gdGhlIG1hc2sgc3BlY2lmaWVzIGEgZXhhY3QgbWF0Y2ggd2l0aCB0aGUgY29ycmVzcG9uZGluZyBiaXQgaW4gdGhlIGZsb3cga2V5LgorQSAnMCcgYml0IHNwZWNpZmllcyBhIGRvbid0IGNhcmUgYml0LCB3aGljaCB3aWxsIG1hdGNoIGVpdGhlciBhICcxJyBvciAnMCcgYml0CitvZiBhIGluY29taW5nIHBhY2tldC4gVXNpbmcgd2lsZGNhcmRlZCBmbG93IGNhbiBpbXByb3ZlIHRoZSBmbG93IHNldCB1cCByYXRlCitieSByZWR1Y2UgdGhlIG51bWJlciBvZiBuZXcgZmxvd3MgbmVlZCB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHVzZXIgc3BhY2UgcHJvZ3JhbS4KKworU3VwcG9ydCBmb3IgdGhlIG1hc2sgTmV0bGluayBhdHRyaWJ1dGUgaXMgb3B0aW9uYWwgZm9yIGJvdGggdGhlIGtlcm5lbCBhbmQgdXNlcgorc3BhY2UgcHJvZ3JhbS4gVGhlIGtlcm5lbCBjYW4gaWdub3JlIHRoZSBtYXNrIGF0dHJpYnV0ZSwgaW5zdGFsbGluZyBhbiBleGFjdAorbWF0Y2ggZmxvdywgb3IgcmVkdWNlIHRoZSBudW1iZXIgb2YgZG9uJ3QgY2FyZSBiaXRzIGluIHRoZSBrZXJuZWwgdG8gbGVzcyB0aGFuCit3aGF0IHdhcyBzcGVjaWZpZWQgYnkgdGhlIHVzZXIgc3BhY2UgcHJvZ3JhbS4gSW4gdGhpcyBjYXNlLCB2YXJpYXRpb25zIGluIGJpdHMKK3RoYXQgdGhlIGtlcm5lbCBkb2VzIG5vdCBpbXBsZW1lbnQgd2lsbCBzaW1wbHkgcmVzdWx0IGluIGFkZGl0aW9uYWwgZmxvdyBzZXR1cHMuCitUaGUga2VybmVsIG1vZHVsZSB3aWxsIGFsc28gd29yayB3aXRoIHVzZXIgc3BhY2UgcHJvZ3JhbXMgdGhhdCBuZWl0aGVyIHN1cHBvcnQKK25vciBzdXBwbHkgZmxvdyBtYXNrIGF0dHJpYnV0ZXMuCisKK1NpbmNlIHRoZSBrZXJuZWwgbWF5IGlnbm9yZSBvciBtb2RpZnkgd2lsZGNhcmQgYml0cywgaXQgY2FuIGJlIGRpZmZpY3VsdCBmb3IKK3RoZSB1c2Vyc3BhY2UgcHJvZ3JhbSB0byBrbm93IGV4YWN0bHkgd2hhdCBtYXRjaGVzIGFyZSBpbnN0YWxsZWQuIFRoZXJlIGFyZQordHdvIHBvc3NpYmxlIGFwcHJvYWNoZXM6IHJlYWN0aXZlbHkgaW5zdGFsbCBmbG93cyBhcyB0aGV5IG1pc3MgdGhlIGtlcm5lbAorZmxvdyB0YWJsZSAoYW5kIHRoZXJlZm9yZSBub3QgYXR0ZW1wdCB0byBkZXRlcm1pbmUgd2lsZGNhcmQgY2hhbmdlcyBhdCBhbGwpCitvciB1c2UgdGhlIGtlcm5lbCdzIHJlc3BvbnNlIG1lc3NhZ2VzIHRvIGRldGVybWluZSB0aGUgaW5zdGFsbGVkIHdpbGRjYXJkcy4KKworV2hlbiBpbnRlcmFjdGluZyB3aXRoIHVzZXJzcGFjZSwgdGhlIGtlcm5lbCBzaG91bGQgbWFpbnRhaW4gdGhlIG1hdGNoIHBvcnRpb24KK29mIHRoZSBrZXkgZXhhY3RseSBhcyBvcmlnaW5hbGx5IGluc3RhbGxlZC4gVGhpcyB3aWxsIHByb3ZpZGVzIGEgaGFuZGxlIHRvCitpZGVudGlmeSB0aGUgZmxvdyBmb3IgYWxsIGZ1dHVyZSBvcGVyYXRpb25zLiBIb3dldmVyLCB3aGVuIHJlcG9ydGluZyB0aGUKK21hc2sgb2YgYW4gaW5zdGFsbGVkIGZsb3csIHRoZSBtYXNrIHNob3VsZCBpbmNsdWRlIGFueSByZXN0cmljdGlvbnMgaW1wb3NlZAorYnkgdGhlIGtlcm5lbC4KKworVGhlIGJlaGF2aW9yIHdoZW4gdXNpbmcgb3ZlcmxhcHBpbmcgd2lsZGNhcmRlZCBmbG93cyBpcyB1bmRlZmluZWQuIEl0IGlzIHRoZQorcmVzcG9uc2liaWxpdHkgb2YgdGhlIHVzZXIgc3BhY2UgcHJvZ3JhbSB0byBlbnN1cmUgdGhhdCBhbnkgaW5jb21pbmcgcGFja2V0CitjYW4gbWF0Y2ggYXQgbW9zdCBvbmUgZmxvdywgd2lsZGNhcmRlZCBvciBub3QuIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uCitwZXJmb3JtcyBiZXN0LWVmZm9ydCBkZXRlY3Rpb24gb2Ygb3ZlcmxhcHBpbmcgd2lsZGNhcmRlZCBmbG93cyBhbmQgbWF5IHJlamVjdAorc29tZSBidXQgbm90IGFsbCBvZiB0aGVtLiBIb3dldmVyLCB0aGlzIGJlaGF2aW9yIG1heSBjaGFuZ2UgaW4gZnV0dXJlIHZlcnNpb25zLgorCisKK1VuaXF1ZSBmbG93IGlkZW50aWZpZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbiBhbHRlcm5hdGl2ZSB0byB1c2luZyB0aGUgb3JpZ2luYWwgbWF0Y2ggcG9ydGlvbiBvZiBhIGtleSBhcyB0aGUgaGFuZGxlIGZvcgorZmxvdyBpZGVudGlmaWNhdGlvbiBpcyBhIHVuaXF1ZSBmbG93IGlkZW50aWZpZXIsIG9yICJVRklEIi4gVUZJRHMgYXJlIG9wdGlvbmFsCitmb3IgYm90aCB0aGUga2VybmVsIGFuZCB1c2VyIHNwYWNlIHByb2dyYW0uCisKK1VzZXIgc3BhY2UgcHJvZ3JhbXMgdGhhdCBzdXBwb3J0IFVGSUQgYXJlIGV4cGVjdGVkIHRvIHByb3ZpZGUgaXQgZHVyaW5nIGZsb3cKK3NldHVwIGluIGFkZGl0aW9uIHRvIHRoZSBmbG93LCB0aGVuIHJlZmVyIHRvIHRoZSBmbG93IHVzaW5nIHRoZSBVRklEIGZvciBhbGwKK2Z1dHVyZSBvcGVyYXRpb25zLiBUaGUga2VybmVsIGlzIG5vdCByZXF1aXJlZCB0byBpbmRleCBmbG93cyBieSB0aGUgb3JpZ2luYWwKK2Zsb3cga2V5IGlmIGEgVUZJRCBpcyBzcGVjaWZpZWQuCisKKworQmFzaWMgcnVsZSBmb3IgZXZvbHZpbmcgZmxvdyBrZXlzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU29tZSBjYXJlIGlzIG5lZWRlZCB0byByZWFsbHkgbWFpbnRhaW4gZm9yd2FyZCBhbmQgYmFja3dhcmQKK2NvbXBhdGliaWxpdHkgZm9yIGFwcGxpY2F0aW9ucyB0aGF0IGZvbGxvdyB0aGUgcnVsZXMgbGlzdGVkIHVuZGVyCisiRmxvdyBrZXkgY29tcGF0aWJpbGl0eSIgYWJvdmUuCisKK1RoZSBiYXNpYyBydWxlIGlzIG9idmlvdXM6CisKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBOZXcgbmV0d29yayBwcm90b2NvbCBzdXBwb3J0IG11c3Qgb25seSBzdXBwbGVtZW50IGV4aXN0aW5nIGZsb3cKKyAgICBrZXkgYXR0cmlidXRlcy4gIEl0IG11c3Qgbm90IGNoYW5nZSB0aGUgbWVhbmluZyBvZiBhbHJlYWR5IGRlZmluZWQKKyAgICBmbG93IGtleSBhdHRyaWJ1dGVzLgorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIHJ1bGUgZG9lcyBoYXZlIGxlc3Mtb2J2aW91cyBjb25zZXF1ZW5jZXMgc28gaXQgaXMgd29ydGggd29ya2luZwordGhyb3VnaCBhIGZldyBleGFtcGxlcy4gIFN1cHBvc2UsIGZvciBleGFtcGxlLCB0aGF0IHRoZSBrZXJuZWwgbW9kdWxlCitkaWQgbm90IGFscmVhZHkgaW1wbGVtZW50IFZMQU4gcGFyc2luZy4gIEluc3RlYWQsIGl0IGp1c3QgaW50ZXJwcmV0ZWQKK3RoZSA4MDIuMVEgVFBJRCAoMHg4MTAwKSBhcyB0aGUgRXRoZXJ0eXBlIHRoZW4gc3RvcHBlZCBwYXJzaW5nIHRoZQorcGFja2V0LiAgVGhlIGZsb3cga2V5IGZvciBhbnkgcGFja2V0IHdpdGggYW4gODAyLjFRIGhlYWRlciB3b3VsZCBsb29rCitlc3NlbnRpYWxseSBsaWtlIHRoaXMsIGlnbm9yaW5nIG1ldGFkYXRhOgorCisgICAgZXRoKC4uLiksIGV0aF90eXBlKDB4ODEwMCkKKworTmFpdmVseSwgdG8gYWRkIFZMQU4gc3VwcG9ydCwgaXQgbWFrZXMgc2Vuc2UgdG8gYWRkIGEgbmV3ICJ2bGFuIiBmbG93CitrZXkgYXR0cmlidXRlIHRvIGNvbnRhaW4gdGhlIFZMQU4gdGFnLCB0aGVuIGNvbnRpbnVlIHRvIGRlY29kZSB0aGUKK2VuY2Fwc3VsYXRlZCBoZWFkZXJzIGJleW9uZCB0aGUgVkxBTiB0YWcgdXNpbmcgdGhlIGV4aXN0aW5nIGZpZWxkCitkZWZpbml0aW9ucy4gIFdpdGggdGhpcyBjaGFuZ2UsIGEgVENQIHBhY2tldCBpbiBWTEFOIDEwIHdvdWxkIGhhdmUgYQorZmxvdyBrZXkgbXVjaCBsaWtlIHRoaXM6CisKKyAgICBldGgoLi4uKSwgdmxhbih2aWQ9MTAsIHBjcD0wKSwgZXRoX3R5cGUoMHgwODAwKSwgaXAocHJvdG89NiwgLi4uKSwgdGNwKC4uLikKKworQnV0IHRoaXMgY2hhbmdlIHdvdWxkIG5lZ2F0aXZlbHkgYWZmZWN0IGEgdXNlcnNwYWNlIGFwcGxpY2F0aW9uIHRoYXQKK2hhcyBub3QgYmVlbiB1cGRhdGVkIHRvIHVuZGVyc3RhbmQgdGhlIG5ldyAidmxhbiIgZmxvdyBrZXkgYXR0cmlidXRlLgorVGhlIGFwcGxpY2F0aW9uIGNvdWxkLCBmb2xsb3dpbmcgdGhlIGZsb3cgY29tcGF0aWJpbGl0eSBydWxlcyBhYm92ZSwKK2lnbm9yZSB0aGUgInZsYW4iIGF0dHJpYnV0ZSB0aGF0IGl0IGRvZXMgbm90IHVuZGVyc3RhbmQgYW5kIHRoZXJlZm9yZQorYXNzdW1lIHRoYXQgdGhlIGZsb3cgY29udGFpbmVkIElQIHBhY2tldHMuICBUaGlzIGlzIGEgYmFkIGFzc3VtcHRpb24KKyh0aGUgZmxvdyBvbmx5IGNvbnRhaW5zIElQIHBhY2tldHMgaWYgb25lIHBhcnNlcyBhbmQgc2tpcHMgb3ZlciB0aGUKKzgwMi4xUSBoZWFkZXIpIGFuZCBpdCBjb3VsZCBjYXVzZSB0aGUgYXBwbGljYXRpb24ncyBiZWhhdmlvciB0byBjaGFuZ2UKK2Fjcm9zcyBrZXJuZWwgdmVyc2lvbnMgZXZlbiB0aG91Z2ggaXQgZm9sbG93cyB0aGUgY29tcGF0aWJpbGl0eSBydWxlcy4KKworVGhlIHNvbHV0aW9uIGlzIHRvIHVzZSBhIHNldCBvZiBuZXN0ZWQgYXR0cmlidXRlcy4gIFRoaXMgaXMsIGZvcgorZXhhbXBsZSwgd2h5IDgwMi4xUSBzdXBwb3J0IHVzZXMgbmVzdGVkIGF0dHJpYnV0ZXMuICBBIFRDUCBwYWNrZXQgaW4KK1ZMQU4gMTAgaXMgYWN0dWFsbHkgZXhwcmVzc2VkIGFzOgorCisgICAgZXRoKC4uLiksIGV0aF90eXBlKDB4ODEwMCksIHZsYW4odmlkPTEwLCBwY3A9MCksIGVuY2FwKGV0aF90eXBlKDB4MDgwMCksCisgICAgaXAocHJvdG89NiwgLi4uKSwgdGNwKC4uLikpKQorCitOb3RpY2UgaG93IHRoZSAiZXRoX3R5cGUiLCAiaXAiLCBhbmQgInRjcCIgZmxvdyBrZXkgYXR0cmlidXRlcyBhcmUKK25lc3RlZCBpbnNpZGUgdGhlICJlbmNhcCIgYXR0cmlidXRlLiAgVGh1cywgYW4gYXBwbGljYXRpb24gdGhhdCBkb2VzCitub3QgdW5kZXJzdGFuZCB0aGUgInZsYW4iIGtleSB3aWxsIG5vdCBzZWUgZWl0aGVyIG9mIHRob3NlIGF0dHJpYnV0ZXMKK2FuZCB0aGVyZWZvcmUgd2lsbCBub3QgbWlzaW50ZXJwcmV0IHRoZW0uICAoQWxzbywgdGhlIG91dGVyIGV0aF90eXBlCitpcyBzdGlsbCAweDgxMDAsIG5vdCBjaGFuZ2VkIHRvIDB4MDgwMC4pCisKK0hhbmRsaW5nIG1hbGZvcm1lZCBwYWNrZXRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEb24ndCBkcm9wIHBhY2tldHMgaW4gdGhlIGtlcm5lbCBmb3IgbWFsZm9ybWVkIHByb3RvY29sIGhlYWRlcnMsIGJhZAorY2hlY2tzdW1zLCBldGMuICBUaGlzIHdvdWxkIHByZXZlbnQgdXNlcnNwYWNlIGZyb20gaW1wbGVtZW50aW5nIGEKK3NpbXBsZSBFdGhlcm5ldCBzd2l0Y2ggdGhhdCBmb3J3YXJkcyBldmVyeSBwYWNrZXQuCisKK0luc3RlYWQsIGluIHN1Y2ggYSBjYXNlLCBpbmNsdWRlIGFuIGF0dHJpYnV0ZSB3aXRoICJlbXB0eSIgY29udGVudC4KK0l0IGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSBlbXB0eSBjb250ZW50IGNvdWxkIGJlIHZhbGlkIHByb3RvY29sIHZhbHVlcywKK2FzIGxvbmcgYXMgdGhvc2UgdmFsdWVzIGFyZSByYXJlbHkgc2VlbiBpbiBwcmFjdGljZSwgYmVjYXVzZSB1c2Vyc3BhY2UKK2NhbiBhbHdheXMgZm9yd2FyZCBhbGwgcGFja2V0cyB3aXRoIHRob3NlIHZhbHVlcyB0byB1c2Vyc3BhY2UgYW5kCitoYW5kbGUgdGhlbSBpbmRpdmlkdWFsbHkuCisKK0ZvciBleGFtcGxlLCBjb25zaWRlciBhIHBhY2tldCB0aGF0IGNvbnRhaW5zIGFuIElQIGhlYWRlciB0aGF0CitpbmRpY2F0ZXMgcHJvdG9jb2wgNiBmb3IgVENQLCBidXQgd2hpY2ggaXMgdHJ1bmNhdGVkIGp1c3QgYWZ0ZXIgdGhlIElQCitoZWFkZXIsIHNvIHRoYXQgdGhlIFRDUCBoZWFkZXIgaXMgbWlzc2luZy4gIFRoZSBmbG93IGtleSBmb3IgdGhpcworcGFja2V0IHdvdWxkIGluY2x1ZGUgYSB0Y3AgYXR0cmlidXRlIHdpdGggYWxsLXplcm8gc3JjIGFuZCBkc3QsIGxpa2UKK3RoaXM6CisKKyAgICBldGgoLi4uKSwgZXRoX3R5cGUoMHgwODAwKSwgaXAocHJvdG89NiwgLi4uKSwgdGNwKHNyYz0wLCBkc3Q9MCkKKworQXMgYW5vdGhlciBleGFtcGxlLCBjb25zaWRlciBhIHBhY2tldCB3aXRoIGFuIEV0aGVybmV0IHR5cGUgb2YgMHg4MTAwLAoraW5kaWNhdGluZyB0aGF0IGEgVkxBTiBUQ0kgc2hvdWxkIGZvbGxvdywgYnV0IHdoaWNoIGlzIHRydW5jYXRlZCBqdXN0CithZnRlciB0aGUgRXRoZXJuZXQgdHlwZS4gIFRoZSBmbG93IGtleSBmb3IgdGhpcyBwYWNrZXQgd291bGQgaW5jbHVkZQorYW4gYWxsLXplcm8tYml0cyB2bGFuIGFuZCBhbiBlbXB0eSBlbmNhcCBhdHRyaWJ1dGUsIGxpa2UgdGhpczoKKworICAgIGV0aCguLi4pLCBldGhfdHlwZSgweDgxMDApLCB2bGFuKDApLCBlbmNhcCgpCisKK1VubGlrZSBhIFRDUCBwYWNrZXQgd2l0aCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHBvcnRzIDAsIGFuCithbGwtemVyby1iaXRzIFZMQU4gVENJIGlzIG5vdCB0aGF0IHJhcmUsIHNvIHRoZSBDRkkgYml0IChha2EKK1ZMQU5fVEFHX1BSRVNFTlQgaW5zaWRlIHRoZSBrZXJuZWwpIGlzIG9yZGluYXJpbHkgc2V0IGluIGEgdmxhbgorYXR0cmlidXRlIGV4cHJlc3NseSB0byBhbGxvdyB0aGlzIHNpdHVhdGlvbiB0byBiZSBkaXN0aW5ndWlzaGVkLgorVGh1cywgdGhlIGZsb3cga2V5IGluIHRoaXMgc2Vjb25kIGV4YW1wbGUgdW5hbWJpZ3VvdXNseSBpbmRpY2F0ZXMgYQorbWlzc2luZyBvciBtYWxmb3JtZWQgVkxBTiBUQ0kuCisKK090aGVyIHJ1bGVzCistLS0tLS0tLS0tLQorCitUaGUgb3RoZXIgcnVsZXMgZm9yIGZsb3cga2V5cyBhcmUgbXVjaCBsZXNzIHN1YnRsZToKKworICAgIC0gRHVwbGljYXRlIGF0dHJpYnV0ZXMgYXJlIG5vdCBhbGxvd2VkIGF0IGEgZ2l2ZW4gbmVzdGluZyBsZXZlbC4KKworICAgIC0gT3JkZXJpbmcgb2YgYXR0cmlidXRlcyBpcyBub3Qgc2lnbmlmaWNhbnQuCisKKyAgICAtIFdoZW4gdGhlIGtlcm5lbCBzZW5kcyBhIGdpdmVuIGZsb3cga2V5IHRvIHVzZXJzcGFjZSwgaXQgYWx3YXlzCisgICAgICBjb21wb3NlcyBpdCB0aGUgc2FtZSB3YXkuICBUaGlzIGFsbG93cyB1c2Vyc3BhY2UgdG8gaGFzaCBhbmQKKyAgICAgIGNvbXBhcmUgZW50aXJlIGZsb3cga2V5cyB0aGF0IGl0IG1heSBub3QgYmUgYWJsZSB0byBmdWxseQorICAgICAgaW50ZXJwcmV0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29wZXJzdGF0ZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29wZXJzdGF0ZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NWM2ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvb3BlcnN0YXRlcy50eHQKQEAgLTAsMCArMSwxNjIgQEAKKworMS4gSW50cm9kdWN0aW9uCisKK0xpbnV4IGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBhZG1pbmlzdHJhdGl2ZSBhbmQgb3BlcmF0aW9uYWwgc3RhdGUgb2YgYW4KK2ludGVyZmFjZS4gQWRtaW5pc3RyYXRpdmUgc3RhdGUgaXMgdGhlIHJlc3VsdCBvZiAiaXAgbGluayBzZXQgZGV2Cis8ZGV2PiB1cCBvciBkb3duIiBhbmQgcmVmbGVjdHMgd2hldGhlciB0aGUgYWRtaW5pc3RyYXRvciB3YW50cyB0byB1c2UKK3RoZSBkZXZpY2UgZm9yIHRyYWZmaWMuCisKK0hvd2V2ZXIsIGFuIGludGVyZmFjZSBpcyBub3QgdXNhYmxlIGp1c3QgYmVjYXVzZSB0aGUgYWRtaW4gZW5hYmxlZCBpdAorLSBldGhlcm5ldCByZXF1aXJlcyB0byBiZSBwbHVnZ2VkIGludG8gdGhlIHN3aXRjaCBhbmQsIGRlcGVuZGluZyBvbgorYSBzaXRlJ3MgbmV0d29ya2luZyBwb2xpY3kgYW5kIGNvbmZpZ3VyYXRpb24sIGFuIDgwMi4xWCBhdXRoZW50aWNhdGlvbgordG8gYmUgcGVyZm9ybWVkIGJlZm9yZSB1c2VyIGRhdGEgY2FuIGJlIHRyYW5zZmVycmVkLiBPcGVyYXRpb25hbCBzdGF0ZQorc2hvd3MgdGhlIGFiaWxpdHkgb2YgYW4gaW50ZXJmYWNlIHRvIHRyYW5zbWl0IHRoaXMgdXNlciBkYXRhLgorCitUaGFua3MgdG8gODAyLjFYLCB1c2Vyc3BhY2UgbXVzdCBiZSBncmFudGVkIHRoZSBwb3NzaWJpbGl0eSB0bworaW5mbHVlbmNlIG9wZXJhdGlvbmFsIHN0YXRlLiBUbyBhY2NvbW1vZGF0ZSB0aGlzLCBvcGVyYXRpb25hbCBzdGF0ZSBpcworc3BsaXQgaW50byB0d28gcGFydHM6IFR3byBmbGFncyB0aGF0IGNhbiBiZSBzZXQgYnkgdGhlIGRyaXZlciBvbmx5LCBhbmQKK2EgUkZDMjg2MyBjb21wYXRpYmxlIHN0YXRlIHRoYXQgaXMgZGVyaXZlZCBmcm9tIHRoZXNlIGZsYWdzLCBhIHBvbGljeSwKK2FuZCBjaGFuZ2VhYmxlIGZyb20gdXNlcnNwYWNlIHVuZGVyIGNlcnRhaW4gcnVsZXMuCisKKworMi4gUXVlcnlpbmcgZnJvbSB1c2Vyc3BhY2UKKworQm90aCBhZG1pbiBhbmQgb3BlcmF0aW9uYWwgc3RhdGUgY2FuIGJlIHF1ZXJpZWQgdmlhIHRoZSBuZXRsaW5rCitvcGVyYXRpb24gUlRNX0dFVExJTksuIEl0IGlzIGFsc28gcG9zc2libGUgdG8gc3Vic2NyaWJlIHRvIFJUTUdSUF9MSU5LCit0byBiZSBub3RpZmllZCBvZiB1cGRhdGVzLiBUaGlzIGlzIGltcG9ydGFudCBmb3Igc2V0dGluZyBmcm9tIHVzZXJzcGFjZS4KKworVGhlc2UgdmFsdWVzIGNvbnRhaW4gaW50ZXJmYWNlIHN0YXRlOgorCitpZmluZm9tc2c6OmlmX2ZsYWdzICYgSUZGX1VQOgorIEludGVyZmFjZSBpcyBhZG1pbiB1cAoraWZpbmZvbXNnOjppZl9mbGFncyAmIElGRl9SVU5OSU5HOgorIEludGVyZmFjZSBpcyBpbiBSRkMyODYzIG9wZXJhdGlvbmFsIHN0YXRlIFVQIG9yIFVOS05PV04uIFRoaXMgaXMgZm9yCisgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgcm91dGluZyBkYWVtb25zLCBkaGNwIGNsaWVudHMgY2FuIHVzZSB0aGlzCisgZmxhZyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGV5IHNob3VsZCB1c2UgdGhlIGludGVyZmFjZS4KK2lmaW5mb21zZzo6aWZfZmxhZ3MgJiBJRkZfTE9XRVJfVVA6CisgRHJpdmVyIGhhcyBzaWduYWxlZCBuZXRpZl9jYXJyaWVyX29uKCkKK2lmaW5mb21zZzo6aWZfZmxhZ3MgJiBJRkZfRE9STUFOVDoKKyBEcml2ZXIgaGFzIHNpZ25hbGVkIG5ldGlmX2Rvcm1hbnRfb24oKQorCitUTFYgSUZMQV9PUEVSU1RBVEUKKworY29udGFpbnMgUkZDMjg2MyBzdGF0ZSBvZiB0aGUgaW50ZXJmYWNlIGluIG51bWVyaWMgcmVwcmVzZW50YXRpb246CisKK0lGX09QRVJfVU5LTk9XTiAoMCk6CisgSW50ZXJmYWNlIGlzIGluIHVua25vd24gc3RhdGUsIG5laXRoZXIgZHJpdmVyIG5vciB1c2Vyc3BhY2UgaGFzIHNldAorIG9wZXJhdGlvbmFsIHN0YXRlLiBJbnRlcmZhY2UgbXVzdCBiZSBjb25zaWRlcmVkIGZvciB1c2VyIGRhdGEgYXMKKyBzZXR0aW5nIG9wZXJhdGlvbmFsIHN0YXRlIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZCBpbiBldmVyeSBkcml2ZXIuCitJRl9PUEVSX05PVFBSRVNFTlQgKDEpOgorIFVudXNlZCBpbiBjdXJyZW50IGtlcm5lbCAobm90cHJlc2VudCBpbnRlcmZhY2VzIG5vcm1hbGx5IGRpc2FwcGVhciksCisganVzdCBhIG51bWVyaWNhbCBwbGFjZWhvbGRlci4KK0lGX09QRVJfRE9XTiAoMik6CisgSW50ZXJmYWNlIGlzIHVuYWJsZSB0byB0cmFuc2ZlciBkYXRhIG9uIEwxLCBmLmUuIGV0aGVybmV0IGlzIG5vdAorIHBsdWdnZWQgb3IgaW50ZXJmYWNlIGlzIEFETUlOIGRvd24uCitJRl9PUEVSX0xPV0VSTEFZRVJET1dOICgzKToKKyBJbnRlcmZhY2VzIHN0YWNrZWQgb24gYW4gaW50ZXJmYWNlIHRoYXQgaXMgSUZfT1BFUl9ET1dOIHNob3cgdGhpcworIHN0YXRlIChmLmUuIFZMQU4pLgorSUZfT1BFUl9URVNUSU5HICg0KToKKyBVbnVzZWQgaW4gY3VycmVudCBrZXJuZWwuCitJRl9PUEVSX0RPUk1BTlQgKDUpOgorIEludGVyZmFjZSBpcyBMMSB1cCwgYnV0IHdhaXRpbmcgZm9yIGFuIGV4dGVybmFsIGV2ZW50LCBmLmUuIGZvciBhCisgcHJvdG9jb2wgdG8gZXN0YWJsaXNoLiAoODAyLjFYKQorSUZfT1BFUl9VUCAoNik6CisgSW50ZXJmYWNlIGlzIG9wZXJhdGlvbmFsIHVwIGFuZCBjYW4gYmUgdXNlZC4KKworVGhpcyBUTFYgY2FuIGFsc28gYmUgcXVlcmllZCB2aWEgc3lzZnMuCisKK1RMViBJRkxBX0xJTktNT0RFCisKK2NvbnRhaW5zIGxpbmsgcG9saWN5LiBUaGlzIGlzIG5lZWRlZCBmb3IgdXNlcnNwYWNlIGludGVyYWN0aW9uCitkZXNjcmliZWQgYmVsb3cuCisKK1RoaXMgVExWIGNhbiBhbHNvIGJlIHF1ZXJpZWQgdmlhIHN5c2ZzLgorCisKKzMuIEtlcm5lbCBkcml2ZXIgQVBJCisKK0tlcm5lbCBkcml2ZXJzIGhhdmUgYWNjZXNzIHRvIHR3byBmbGFncyB0aGF0IG1hcCB0byBJRkZfTE9XRVJfVVAgYW5kCitJRkZfRE9STUFOVC4gVGhlc2UgZmxhZ3MgY2FuIGJlIHNldCBmcm9tIGV2ZXJ5d2hlcmUsIGV2ZW4gZnJvbQoraW50ZXJydXB0cy4gSXQgaXMgZ3VhcmFudGVlZCB0aGF0IG9ubHkgdGhlIGRyaXZlciBoYXMgd3JpdGUgYWNjZXNzLAoraG93ZXZlciwgaWYgZGlmZmVyZW50IGxheWVycyBvZiB0aGUgZHJpdmVyIG1hbmlwdWxhdGUgdGhlIHNhbWUgZmxhZywKK3RoZSBkcml2ZXIgaGFzIHRvIHByb3ZpZGUgdGhlIHN5bmNocm9uaXNhdGlvbiBuZWVkZWQuCisKK19fTElOS19TVEFURV9OT0NBUlJJRVIsIG1hcHMgdG8gIUlGRl9MT1dFUl9VUDoKKworVGhlIGRyaXZlciB1c2VzIG5ldGlmX2NhcnJpZXJfb24oKSB0byBjbGVhciBhbmQgbmV0aWZfY2Fycmllcl9vZmYoKSB0bworc2V0IHRoaXMgZmxhZy4gT24gbmV0aWZfY2Fycmllcl9vZmYoKSwgdGhlIHNjaGVkdWxlciBzdG9wcyBzZW5kaW5nCitwYWNrZXRzLiBUaGUgbmFtZSAnY2FycmllcicgYW5kIHRoZSBpbnZlcnNpb24gYXJlIGhpc3RvcmljYWwsIHRoaW5rIG9mCitpdCBhcyBsb3dlciBsYXllci4KKworTm90ZSB0aGF0IGZvciBjZXJ0YWluIGtpbmQgb2Ygc29mdC1kZXZpY2VzLCB3aGljaCBhcmUgbm90IG1hbmFnaW5nIGFueQorcmVhbCBoYXJkd2FyZSwgaXQgaXMgcG9zc2libGUgdG8gc2V0IHRoaXMgYml0IGZyb20gdXNlcnNwYWNlLiAgT25lCitzaG91bGQgdXNlIFRWTCBJRkxBX0NBUlJJRVIgdG8gZG8gc28uCisKK25ldGlmX2NhcnJpZXJfb2soKSBjYW4gYmUgdXNlZCB0byBxdWVyeSB0aGF0IGJpdC4KKworX19MSU5LX1NUQVRFX0RPUk1BTlQsIG1hcHMgdG8gSUZGX0RPUk1BTlQ6CisKK1NldCBieSB0aGUgZHJpdmVyIHRvIGV4cHJlc3MgdGhhdCB0aGUgZGV2aWNlIGNhbm5vdCB5ZXQgYmUgdXNlZAorYmVjYXVzZSBzb21lIGRyaXZlciBjb250cm9sbGVkIHByb3RvY29sIGVzdGFibGlzaG1lbnQgaGFzIHRvCitjb21wbGV0ZS4gQ29ycmVzcG9uZGluZyBmdW5jdGlvbnMgYXJlIG5ldGlmX2Rvcm1hbnRfb24oKSB0byBzZXQgdGhlCitmbGFnLCBuZXRpZl9kb3JtYW50X29mZigpIHRvIGNsZWFyIGl0IGFuZCBuZXRpZl9kb3JtYW50KCkgdG8gcXVlcnkuCisKK09uIGRldmljZSBhbGxvY2F0aW9uLCBuZXR3b3JraW5nIGNvcmUgc2V0cyB0aGUgZmxhZ3MgZXF1aXZhbGVudCB0bworbmV0aWZfY2Fycmllcl9vaygpIGFuZCAhbmV0aWZfZG9ybWFudCgpLgorCisKK1doZW5ldmVyIHRoZSBkcml2ZXIgQ0hBTkdFUyBvbmUgb2YgdGhlc2UgZmxhZ3MsIGEgd29ya3F1ZXVlIGV2ZW50IGlzCitzY2hlZHVsZWQgdG8gdHJhbnNsYXRlIHRoZSBmbGFnIGNvbWJpbmF0aW9uIHRvIElGTEFfT1BFUlNUQVRFIGFzCitmb2xsb3dzOgorCishbmV0aWZfY2Fycmllcl9vaygpOgorIElGX09QRVJfTE9XRVJMQVlFUkRPV04gaWYgdGhlIGludGVyZmFjZSBpcyBzdGFja2VkLCBJRl9PUEVSX0RPV04KKyBvdGhlcndpc2UuIEtlcm5lbCBjYW4gcmVjb2duaXNlIHN0YWNrZWQgaW50ZXJmYWNlcyBiZWNhdXNlIHRoZWlyCisgaWZpbmRleCAhPSBpZmxpbmsuCisKK25ldGlmX2NhcnJpZXJfb2soKSAmJiBuZXRpZl9kb3JtYW50KCk6CisgSUZfT1BFUl9ET1JNQU5UCisKK25ldGlmX2NhcnJpZXJfb2soKSAmJiAhbmV0aWZfZG9ybWFudCgpOgorIElGX09QRVJfVVAgaWYgdXNlcnNwYWNlIGludGVyYWN0aW9uIGlzIGRpc2FibGVkLiBPdGhlcndpc2UKKyBJRl9PUEVSX0RPUk1BTlQgd2l0aCB0aGUgcG9zc2liaWxpdHkgZm9yIHVzZXJzcGFjZSB0byBpbml0aWF0ZSB0aGUKKyBJRl9PUEVSX1VQIHRyYW5zaXRpb24gYWZ0ZXJ3YXJkcy4KKworCis0LiBTZXR0aW5nIGZyb20gdXNlcnNwYWNlCisKK0FwcGxpY2F0aW9ucyBoYXZlIHRvIHVzZSB0aGUgbmV0bGluayBpbnRlcmZhY2UgdG8gaW5mbHVlbmNlIHRoZQorUkZDMjg2MyBvcGVyYXRpb25hbCBzdGF0ZSBvZiBhbiBpbnRlcmZhY2UuIFNldHRpbmcgSUZMQV9MSU5LTU9ERSB0byAxCit2aWEgUlRNX1NFVExJTksgaW5zdHJ1Y3RzIHRoZSBrZXJuZWwgdGhhdCBhbiBpbnRlcmZhY2Ugc2hvdWxkIGdvIHRvCitJRl9PUEVSX0RPUk1BTlQgaW5zdGVhZCBvZiBJRl9PUEVSX1VQIHdoZW4gdGhlIGNvbWJpbmF0aW9uCituZXRpZl9jYXJyaWVyX29rKCkgJiYgIW5ldGlmX2Rvcm1hbnQoKSBpcyBzZXQgYnkgdGhlCitkcml2ZXIuIEFmdGVyd2FyZHMsIHRoZSB1c2Vyc3BhY2UgYXBwbGljYXRpb24gY2FuIHNldCBJRkxBX09QRVJTVEFURQordG8gSUZfT1BFUl9ET1JNQU5UIG9yIElGX09QRVJfVVAgYXMgbG9uZyBhcyB0aGUgZHJpdmVyIGRvZXMgbm90IHNldAorbmV0aWZfY2Fycmllcl9vZmYoKSBvciBuZXRpZl9kb3JtYW50X29uKCkuIENoYW5nZXMgbWFkZSBieSB1c2Vyc3BhY2UKK2FyZSBtdWx0aWNhc3RlZCBvbiB0aGUgbmV0bGluayBncm91cCBSVE1HUlBfTElOSy4KKworU28gYmFzaWNhbGx5IGEgODAyLjFYIHN1cHBsaWNhbnQgaW50ZXJhY3RzIHdpdGggdGhlIGtlcm5lbCBsaWtlIHRoaXM6CisKKy1zdWJzY3JpYmUgdG8gUlRNR1JQX0xJTksKKy1zZXQgSUZMQV9MSU5LTU9ERSB0byAxIHZpYSBSVE1fU0VUTElOSworLXF1ZXJ5IFJUTV9HRVRMSU5LIG9uY2UgdG8gZ2V0IGluaXRpYWwgc3RhdGUKKy1pZiBpbml0aWFsIGZsYWdzIGFyZSBub3QgKElGRl9MT1dFUl9VUCAmJiAhSUZGX0RPUk1BTlQpLCB3YWl0IHVudGlsCisgbmV0bGluayBtdWx0aWNhc3Qgc2lnbmFscyB0aGlzIHN0YXRlCistZG8gODAyLjFYLCBldmVudHVhbGx5IGFib3J0IGlmIGZsYWdzIGdvIGRvd24gYWdhaW4KKy1zZW5kIFJUTV9TRVRMSU5LIHRvIHNldCBvcGVyc3RhdGUgdG8gSUZfT1BFUl9VUCBpZiBhdXRoZW50aWNhdGlvbgorIHN1Y2NlZWRzLCBJRl9PUEVSX0RPUk1BTlQgb3RoZXJ3aXNlCistc2VlIGhvdyBvcGVyc3RhdGUgYW5kIElGRl9SVU5OSU5HIGlzIGVjaG9lZCB2aWEgbmV0bGluayBtdWx0aWNhc3QKKy1zZXQgaW50ZXJmYWNlIGJhY2sgdG8gSUZfT1BFUl9ET1JNQU5UIGlmIDgwMi4xWCByZWF1dGhlbnRpY2F0aW9uCisgZmFpbHMKKy1yZXN0YXJ0IGlmIGtlcm5lbCBjaGFuZ2VzIElGRl9MT1dFUl9VUCBvciBJRkZfRE9STUFOVCBmbGFnCisKK2lmIHN1cHBsaWNhbnQgZ29lcyBkb3duLCBicmluZyBiYWNrIElGTEFfTElOS01PREUgdG8gMCBhbmQKK0lGTEFfT1BFUlNUQVRFIHRvIGEgc2FuZSB2YWx1ZS4KKworQSByb3V0aW5nIGRhZW1vbiBvciBkaGNwIGNsaWVudCBqdXN0IG5lZWRzIHRvIGNhcmUgZm9yIElGRl9SVU5OSU5HIG9yCit3YWl0aW5nIGZvciBvcGVyc3RhdGUgdG8gZ28gSUZfT1BFUl9VUC9JRl9PUEVSX1VOS05PV04gYmVmb3JlCitjb25zaWRlcmluZyB0aGUgaW50ZXJmYWNlIC8gcXVlcnlpbmcgYSBESENQIGFkZHJlc3MuCisKKworRm9yIHRlY2huaWNhbCBxdWVzdGlvbnMgYW5kL29yIGNvbW1lbnRzIHBsZWFzZSBlLW1haWwgdG8gU3RlZmFuIFJvbXBmCisoc3RlZmFuIGF0IGxvcGxvZi5kZSkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGFja2V0X21tYXAudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BhY2tldF9tbWFwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWEwMTVhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BhY2tldF9tbWFwLnR4dApAQCAtMCwwICsxLDEwNjggQEAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIEFCU1RSQUNUCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGZpbGUgZG9jdW1lbnRzIHRoZSBtbWFwKCkgZmFjaWxpdHkgYXZhaWxhYmxlIHdpdGggdGhlIFBBQ0tFVAorc29ja2V0IGludGVyZmFjZSBvbiAyLjQvMi42LzMueCBrZXJuZWxzLiBUaGlzIHR5cGUgb2Ygc29ja2V0cyBpcyB1c2VkIGZvcgoraSkgY2FwdHVyZSBuZXR3b3JrIHRyYWZmaWMgd2l0aCB1dGlsaXRpZXMgbGlrZSB0Y3BkdW1wLCBpaSkgdHJhbnNtaXQgbmV0d29yawordHJhZmZpYywgb3IgYW55IG90aGVyIHRoYXQgbmVlZHMgcmF3IGFjY2VzcyB0byBuZXR3b3JrIGludGVyZmFjZS4KKworWW91IGNhbiBmaW5kIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIGRvY3VtZW50IGF0OgorICAgIGh0dHA6Ly93aWtpLmlweHdhcnpvbmUuY29tL2luZGV4LnBocDU/dGl0bGU9TGludXhfcGFja2V0X21tYXAKKworSG93dG8gY2FuIGJlIGZvdW5kIGF0OgorICAgIGh0dHA6Ly93aWtpLmdudS1sb2cubmV0IChwYWNrZXRfbW1hcCkKKworUGxlYXNlIHNlbmQgeW91ciBjb21tZW50cyB0bworICAgIFVsaXNzZXMgQWxvbnNvIENhbWFyw7MgPHVhY2FAaS5oYXRlLnNwYW0uYWx1bW5pLnV2LmVzPgorICAgIEpvaGFubiBCYXVkeSA8am9oYW5uLmJhdWR5QGdudS1sb2cubmV0PgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIFdoeSB1c2UgUEFDS0VUX01NQVAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0luIExpbnV4IDIuNC8yLjYvMy54IGlmIFBBQ0tFVF9NTUFQIGlzIG5vdCBlbmFibGVkLCB0aGUgY2FwdHVyZSBwcm9jZXNzIGlzIHZlcnkKK2luZWZmaWNpZW50LiBJdCB1c2VzIHZlcnkgbGltaXRlZCBidWZmZXJzIGFuZCByZXF1aXJlcyBvbmUgc3lzdGVtIGNhbGwgdG8KK2NhcHR1cmUgZWFjaCBwYWNrZXQsIGl0IHJlcXVpcmVzIHR3byBpZiB5b3Ugd2FudCB0byBnZXQgcGFja2V0J3MgdGltZXN0YW1wCisobGlrZSBsaWJwY2FwIGFsd2F5cyBkb2VzKS4KKworSW4gdGhlIG90aGVyIGhhbmQgUEFDS0VUX01NQVAgaXMgdmVyeSBlZmZpY2llbnQuIFBBQ0tFVF9NTUFQIHByb3ZpZGVzIGEgc2l6ZSAKK2NvbmZpZ3VyYWJsZSBjaXJjdWxhciBidWZmZXIgbWFwcGVkIGluIHVzZXIgc3BhY2UgdGhhdCBjYW4gYmUgdXNlZCB0byBlaXRoZXIKK3NlbmQgb3IgcmVjZWl2ZSBwYWNrZXRzLiBUaGlzIHdheSByZWFkaW5nIHBhY2tldHMganVzdCBuZWVkcyB0byB3YWl0IGZvciB0aGVtLAorbW9zdCBvZiB0aGUgdGltZSB0aGVyZSBpcyBubyBuZWVkIHRvIGlzc3VlIGEgc2luZ2xlIHN5c3RlbSBjYWxsLiBDb25jZXJuaW5nCit0cmFuc21pc3Npb24sIG11bHRpcGxlIHBhY2tldHMgY2FuIGJlIHNlbnQgdGhyb3VnaCBvbmUgc3lzdGVtIGNhbGwgdG8gZ2V0IHRoZQoraGlnaGVzdCBiYW5kd2lkdGguIEJ5IHVzaW5nIGEgc2hhcmVkIGJ1ZmZlciBiZXR3ZWVuIHRoZSBrZXJuZWwgYW5kIHRoZSB1c2VyCithbHNvIGhhcyB0aGUgYmVuZWZpdCBvZiBtaW5pbWl6aW5nIHBhY2tldCBjb3BpZXMuCisKK0l0J3MgZmluZSB0byB1c2UgUEFDS0VUX01NQVAgdG8gaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIGNhcHR1cmUgYW5kCit0cmFuc21pc3Npb24gcHJvY2VzcywgYnV0IGl0IGlzbid0IGV2ZXJ5dGhpbmcuIEF0IGxlYXN0LCBpZiB5b3UgYXJlIGNhcHR1cmluZworYXQgaGlnaCBzcGVlZHMgKHRoaXMgaXMgcmVsYXRpdmUgdG8gdGhlIGNwdSBzcGVlZCksIHlvdSBzaG91bGQgY2hlY2sgaWYgdGhlCitkZXZpY2UgZHJpdmVyIG9mIHlvdXIgbmV0d29yayBpbnRlcmZhY2UgY2FyZCBzdXBwb3J0cyBzb21lIHNvcnQgb2YgaW50ZXJydXB0Citsb2FkIG1pdGlnYXRpb24gb3IgKGV2ZW4gYmV0dGVyKSBpZiBpdCBzdXBwb3J0cyBOQVBJLCBhbHNvIG1ha2Ugc3VyZSBpdCBpcworZW5hYmxlZC4gRm9yIHRyYW5zbWlzc2lvbiwgY2hlY2sgdGhlIE1UVSAoTWF4aW11bSBUcmFuc21pc3Npb24gVW5pdCkgdXNlZCBhbmQKK3N1cHBvcnRlZCBieSBkZXZpY2VzIG9mIHlvdXIgbmV0d29yay4gQ1BVIElSUSBwaW5uaW5nIG9mIHlvdXIgbmV0d29yayBpbnRlcmZhY2UKK2NhcmQgY2FuIGFsc28gYmUgYW4gYWR2YW50YWdlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyBIb3cgdG8gdXNlIG1tYXAoKSB0byBpbXByb3ZlIGNhcHR1cmUgcHJvY2VzcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRnJvbSB0aGUgdXNlciBzdGFuZHBvaW50LCB5b3Ugc2hvdWxkIHVzZSB0aGUgaGlnaGVyIGxldmVsIGxpYnBjYXAgbGlicmFyeSwgd2hpY2gKK2lzIGEgZGUgZmFjdG8gc3RhbmRhcmQsIHBvcnRhYmxlIGFjcm9zcyBuZWFybHkgYWxsIG9wZXJhdGluZyBzeXN0ZW1zCitpbmNsdWRpbmcgV2luMzIuIAorCitTYWlkIHRoYXQsIGF0IHRpbWUgb2YgdGhpcyB3cml0aW5nLCBvZmZpY2lhbCBsaWJwY2FwIDAuOC4xIGlzIG91dCBhbmQgZG9lc24ndCBpbmNsdWRlCitzdXBwb3J0IGZvciBQQUNLRVRfTU1BUCwgYW5kIGFsc28gcHJvYmFibHkgdGhlIGxpYnBjYXAgaW5jbHVkZWQgaW4geW91ciBkaXN0cmlidXRpb24uIAorCitJJ20gYXdhcmUgb2YgdHdvIGltcGxlbWVudGF0aW9ucyBvZiBQQUNLRVRfTU1BUCBpbiBsaWJwY2FwOgorCisgICAgaHR0cDovL3dpa2kuaXB4d2Fyem9uZS5jb20vCQkgICAgIChieSBTaW1vbiBQYXRhcmluLCBiYXNlZCBvbiBsaWJwY2FwIDAuNi4yKQorICAgIGh0dHA6Ly9wdWJsaWMubGFubC5nb3YvY3B3LyAgICAgICAgICAgICAgKGJ5IFBoaWwgV29vZCwgYmFzZWQgb24gbGFzdGVzdCBsaWJwY2FwKQorCitUaGUgcmVzdCBvZiB0aGlzIGRvY3VtZW50IGlzIGludGVuZGVkIGZvciBwZW9wbGUgd2hvIHdhbnQgdG8gdW5kZXJzdGFuZAordGhlIGxvdyBsZXZlbCBkZXRhaWxzIG9yIHdhbnQgdG8gaW1wcm92ZSBsaWJwY2FwIGJ5IGluY2x1ZGluZyBQQUNLRVRfTU1BUAorc3VwcG9ydC4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysgSG93IHRvIHVzZSBtbWFwKCkgZGlyZWN0bHkgdG8gaW1wcm92ZSBjYXB0dXJlIHByb2Nlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Zyb20gdGhlIHN5c3RlbSBjYWxscyBzdGFuZCBwb2ludCwgdGhlIHVzZSBvZiBQQUNLRVRfTU1BUCBpbnZvbHZlcwordGhlIGZvbGxvd2luZyBwcm9jZXNzOgorCisKK1tzZXR1cF0gICAgIHNvY2tldCgpIC0tLS0tLS0+IGNyZWF0aW9uIG9mIHRoZSBjYXB0dXJlIHNvY2tldAorICAgICAgICAgICAgc2V0c29ja29wdCgpIC0tLT4gYWxsb2NhdGlvbiBvZiB0aGUgY2lyY3VsYXIgYnVmZmVyIChyaW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uOiBQQUNLRVRfUlhfUklORworICAgICAgICAgICAgbW1hcCgpIC0tLS0tLS0tLT4gbWFwcGluZyBvZiB0aGUgYWxsb2NhdGVkIGJ1ZmZlciB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIgcHJvY2VzcworCitbY2FwdHVyZV0gICBwb2xsKCkgLS0tLS0tLS0tPiB0byB3YWl0IGZvciBpbmNvbWluZyBwYWNrZXRzCisKK1tzaHV0ZG93bl0gIGNsb3NlKCkgLS0tLS0tLS0+IGRlc3RydWN0aW9uIG9mIHRoZSBjYXB0dXJlIHNvY2tldCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYWxsb2NhdGlvbiBvZiBhbGwgYXNzb2NpYXRlZCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy4KKworCitzb2NrZXQgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uIGlzIHN0cmFpZ2h0IGZvcndhcmQsIGFuZCBpcyBkb25lIAordGhlIHNhbWUgd2F5IHdpdGggb3Igd2l0aG91dCBQQUNLRVRfTU1BUDoKKworIGludCBmZCA9IHNvY2tldChQRl9QQUNLRVQsIG1vZGUsIGh0b25zKEVUSF9QX0FMTCkpOworCit3aGVyZSBtb2RlIGlzIFNPQ0tfUkFXIGZvciB0aGUgcmF3IGludGVyZmFjZSB3ZXJlIGxpbmsgbGV2ZWwKK2luZm9ybWF0aW9uIGNhbiBiZSBjYXB0dXJlZCBvciBTT0NLX0RHUkFNIGZvciB0aGUgY29va2VkCitpbnRlcmZhY2Ugd2hlcmUgbGluayBsZXZlbCBpbmZvcm1hdGlvbiBjYXB0dXJlIGlzIG5vdCAKK3N1cHBvcnRlZCBhbmQgYSBsaW5rIGxldmVsIHBzZXVkby1oZWFkZXIgaXMgcHJvdmlkZWQgCitieSB0aGUga2VybmVsLgorCitUaGUgZGVzdHJ1Y3Rpb24gb2YgdGhlIHNvY2tldCBhbmQgYWxsIGFzc29jaWF0ZWQgcmVzb3VyY2VzCitpcyBkb25lIGJ5IGEgc2ltcGxlIGNhbGwgdG8gY2xvc2UoZmQpLgorCitTaW1pbGFybHkgYXMgd2l0aG91dCBQQUNLRVRfTU1BUCwgaXQgaXMgcG9zc2libGUgdG8gdXNlIG9uZSBzb2NrZXQKK2ZvciBjYXB0dXJlIGFuZCB0cmFuc21pc3Npb24uIFRoaXMgY2FuIGJlIGRvbmUgYnkgbWFwcGluZyB0aGUKK2FsbG9jYXRlZCBSWCBhbmQgVFggYnVmZmVyIHJpbmcgd2l0aCBhIHNpbmdsZSBtbWFwKCkgY2FsbC4KK1NlZSAiTWFwcGluZyBhbmQgdXNlIG9mIHRoZSBjaXJjdWxhciBidWZmZXIgKHJpbmcpIi4KKworTmV4dCBJIHdpbGwgZGVzY3JpYmUgUEFDS0VUX01NQVAgc2V0dGluZ3MgYW5kIGl0cyBjb25zdHJhaW50cywKK2Fsc28gdGhlIG1hcHBpbmcgb2YgdGhlIGNpcmN1bGFyIGJ1ZmZlciBpbiB0aGUgdXNlciBwcm9jZXNzIGFuZCAKK3RoZSB1c2Ugb2YgdGhpcyBidWZmZXIuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIEhvdyB0byB1c2UgbW1hcCgpIGRpcmVjdGx5IHRvIGltcHJvdmUgdHJhbnNtaXNzaW9uIHByb2Nlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUcmFuc21pc3Npb24gcHJvY2VzcyBpcyBzaW1pbGFyIHRvIGNhcHR1cmUgYXMgc2hvd24gYmVsb3cuCisKK1tzZXR1cF0gICAgICAgICAgc29ja2V0KCkgLS0tLS0tLT4gY3JlYXRpb24gb2YgdGhlIHRyYW5zbWlzc2lvbiBzb2NrZXQKKyAgICAgICAgICAgICAgICAgc2V0c29ja29wdCgpIC0tLT4gYWxsb2NhdGlvbiBvZiB0aGUgY2lyY3VsYXIgYnVmZmVyIChyaW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb246IFBBQ0tFVF9UWF9SSU5HCisgICAgICAgICAgICAgICAgIGJpbmQoKSAtLS0tLS0tLS0+IGJpbmQgdHJhbnNtaXNzaW9uIHNvY2tldCB3aXRoIGEgbmV0d29yayBpbnRlcmZhY2UKKyAgICAgICAgICAgICAgICAgbW1hcCgpIC0tLS0tLS0tLT4gbWFwcGluZyBvZiB0aGUgYWxsb2NhdGVkIGJ1ZmZlciB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlciBwcm9jZXNzCisKK1t0cmFuc21pc3Npb25dICAgcG9sbCgpIC0tLS0tLS0tLT4gd2FpdCBmb3IgZnJlZSBwYWNrZXRzIChvcHRpb25hbCkKKyAgICAgICAgICAgICAgICAgc2VuZCgpIC0tLS0tLS0tLT4gc2VuZCBhbGwgcGFja2V0cyB0aGF0IGFyZSBzZXQgYXMgcmVhZHkgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZsYWcgTVNHX0RPTlRXQUlUIGNhbiBiZSB1c2VkIHRvIHJldHVybgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgZW5kIG9mIHRyYW5zZmVyLgorCitbc2h1dGRvd25dICBjbG9zZSgpIC0tLS0tLS0tPiBkZXN0cnVjdGlvbiBvZiB0aGUgdHJhbnNtaXNzaW9uIHNvY2tldCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYWxsb2NhdGlvbiBvZiBhbGwgYXNzb2NpYXRlZCByZXNvdXJjZXMuCisKK1NvY2tldCBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gaXMgYWxzbyBzdHJhaWdodCBmb3J3YXJkLCBhbmQgaXMgZG9uZQordGhlIHNhbWUgd2F5IGFzIGluIGNhcHR1cmluZyBkZXNjcmliZWQgaW4gdGhlIHByZXZpb3VzIHBhcmFncmFwaDoKKworIGludCBmZCA9IHNvY2tldChQRl9QQUNLRVQsIG1vZGUsIDApOworCitUaGUgcHJvdG9jb2wgY2FuIG9wdGlvbmFsbHkgYmUgMCBpbiBjYXNlIHdlIG9ubHkgd2FudCB0byB0cmFuc21pdAordmlhIHRoaXMgc29ja2V0LCB3aGljaCBhdm9pZHMgYW4gZXhwZW5zaXZlIGNhbGwgdG8gcGFja2V0X3JjdigpLgorSW4gdGhpcyBjYXNlLCB5b3UgYWxzbyBuZWVkIHRvIGJpbmQoMikgdGhlIFRYX1JJTkcgd2l0aCBzbGxfcHJvdG9jb2wgPSAwCitzZXQuIE90aGVyd2lzZSwgaHRvbnMoRVRIX1BfQUxMKSBvciBhbnkgb3RoZXIgcHJvdG9jb2wsIGZvciBleGFtcGxlLgorCitCaW5kaW5nIHRoZSBzb2NrZXQgdG8geW91ciBuZXR3b3JrIGludGVyZmFjZSBpcyBtYW5kYXRvcnkgKHdpdGggemVybyBjb3B5KSB0bwora25vdyB0aGUgaGVhZGVyIHNpemUgb2YgZnJhbWVzIHVzZWQgaW4gdGhlIGNpcmN1bGFyIGJ1ZmZlci4KKworQXMgY2FwdHVyZSwgZWFjaCBmcmFtZSBjb250YWlucyB0d28gcGFydHM6CisKKyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorfCBzdHJ1Y3QgdHBhY2tldF9oZHIgfCBIZWFkZXIuIEl0IGNvbnRhaW5zIHRoZSBzdGF0dXMgb2YKK3wgICAgICAgICAgICAgICAgICAgIHwgb2YgdGhpcyBmcmFtZQorfC0tLS0tLS0tLS0tLS0tLS0tLS0tfAorfCBkYXRhIGJ1ZmZlciAgICAgICAgfAorLiAgICAgICAgICAgICAgICAgICAgLiAgRGF0YSB0aGF0IHdpbGwgYmUgc2VudCBvdmVyIHRoZSBuZXR3b3JrIGludGVyZmFjZS4KKy4gICAgICAgICAgICAgICAgICAgIC4KKyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgYmluZCgpIGFzc29jaWF0ZXMgdGhlIHNvY2tldCB0byB5b3VyIG5ldHdvcmsgaW50ZXJmYWNlIHRoYW5rcyB0bworIHNsbF9pZmluZGV4IHBhcmFtZXRlciBvZiBzdHJ1Y3Qgc29ja2FkZHJfbGwuCisKKyBJbml0aWFsaXphdGlvbiBleGFtcGxlOgorCisgc3RydWN0IHNvY2thZGRyX2xsIG15X2FkZHI7Cisgc3RydWN0IGlmcmVxIHNfaWZyOworIC4uLgorCisgc3RybmNweSAoc19pZnIuaWZyX25hbWUsICJldGgwIiwgc2l6ZW9mKHNfaWZyLmlmcl9uYW1lKSk7CisKKyAvKiBnZXQgaW50ZXJmYWNlIGluZGV4IG9mIGV0aDAgKi8KKyBpb2N0bCh0aGlzLT5zb2NrZXQsIFNJT0NHSUZJTkRFWCwgJnNfaWZyKTsKKworIC8qIGZpbGwgc29ja2FkZHJfbGwgc3RydWN0IHRvIHByZXBhcmUgYmluZGluZyAqLworIG15X2FkZHIuc2xsX2ZhbWlseSA9IEFGX1BBQ0tFVDsKKyBteV9hZGRyLnNsbF9wcm90b2NvbCA9IGh0b25zKEVUSF9QX0FMTCk7CisgbXlfYWRkci5zbGxfaWZpbmRleCA9ICBzX2lmci5pZnJfaWZpbmRleDsKKworIC8qIGJpbmQgc29ja2V0IHRvIGV0aDAgKi8KKyBiaW5kKHRoaXMtPnNvY2tldCwgKHN0cnVjdCBzb2NrYWRkciAqKSZteV9hZGRyLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2xsKSk7CisKKyBBIGNvbXBsZXRlIHR1dG9yaWFsIGlzIGF2YWlsYWJsZSBhdDogaHR0cDovL3dpa2kuZ251LWxvZy5uZXQvCisKK0J5IGRlZmF1bHQsIHRoZSB1c2VyIHNob3VsZCBwdXQgZGF0YSBhdCA6CisgZnJhbWUgYmFzZSArIFRQQUNLRVRfSERSTEVOIC0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9sbCkKKworU28sIHdoYXRldmVyIHlvdSBjaG9vc2UgZm9yIHRoZSBzb2NrZXQgbW9kZSAoU09DS19ER1JBTSBvciBTT0NLX1JBVyksCit0aGUgYmVnaW5uaW5nIG9mIHRoZSB1c2VyIGRhdGEgd2lsbCBiZSBhdCA6CisgZnJhbWUgYmFzZSArIFRQQUNLRVRfQUxJR04oc2l6ZW9mKHN0cnVjdCB0cGFja2V0X2hkcikpCisKK0lmIHlvdSB3aXNoIHRvIHB1dCB1c2VyIGRhdGEgYXQgYSBjdXN0b20gb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZgordGhlIGZyYW1lIChmb3IgcGF5bG9hZCBhbGlnbm1lbnQgd2l0aCBTT0NLX1JBVyBtb2RlIGZvciBpbnN0YW5jZSkgeW91CitjYW4gc2V0IHRwX25ldCAod2l0aCBTT0NLX0RHUkFNKSBvciB0cF9tYWMgKHdpdGggU09DS19SQVcpLiBJbiBvcmRlcgordG8gbWFrZSB0aGlzIHdvcmsgaXQgbXVzdCBiZSBlbmFibGVkIHByZXZpb3VzbHkgd2l0aCBzZXRzb2Nrb3B0KCkKK2FuZCB0aGUgUEFDS0VUX1RYX0hBU19PRkYgb3B0aW9uLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyBQQUNLRVRfTU1BUCBzZXR0aW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVG8gc2V0dXAgUEFDS0VUX01NQVAgZnJvbSB1c2VyIGxldmVsIGNvZGUgaXMgZG9uZSB3aXRoIGEgY2FsbCBsaWtlCisKKyAtIENhcHR1cmUgcHJvY2VzcworICAgICBzZXRzb2Nrb3B0KGZkLCBTT0xfUEFDS0VULCBQQUNLRVRfUlhfUklORywgKHZvaWQgKikgJnJlcSwgc2l6ZW9mKHJlcSkpCisgLSBUcmFuc21pc3Npb24gcHJvY2VzcworICAgICBzZXRzb2Nrb3B0KGZkLCBTT0xfUEFDS0VULCBQQUNLRVRfVFhfUklORywgKHZvaWQgKikgJnJlcSwgc2l6ZW9mKHJlcSkpCisKK1RoZSBtb3N0IHNpZ25pZmljYW50IGFyZ3VtZW50IGluIHRoZSBwcmV2aW91cyBjYWxsIGlzIHRoZSByZXEgcGFyYW1ldGVyLCAKK3RoaXMgcGFyYW1ldGVyIG11c3QgdG8gaGF2ZSB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKKworICAgIHN0cnVjdCB0cGFja2V0X3JlcQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50ICAgIHRwX2Jsb2NrX3NpemU7ICAvKiBNaW5pbWFsIHNpemUgb2YgY29udGlndW91cyBibG9jayAqLworICAgICAgICB1bnNpZ25lZCBpbnQgICAgdHBfYmxvY2tfbnI7ICAgIC8qIE51bWJlciBvZiBibG9ja3MgKi8KKyAgICAgICAgdW5zaWduZWQgaW50ICAgIHRwX2ZyYW1lX3NpemU7ICAvKiBTaXplIG9mIGZyYW1lICovCisgICAgICAgIHVuc2lnbmVkIGludCAgICB0cF9mcmFtZV9ucjsgICAgLyogVG90YWwgbnVtYmVyIG9mIGZyYW1lcyAqLworICAgIH07CisKK1RoaXMgc3RydWN0dXJlIGlzIGRlZmluZWQgaW4gL3Vzci9pbmNsdWRlL2xpbnV4L2lmX3BhY2tldC5oIGFuZCBlc3RhYmxpc2hlcyBhIAorY2lyY3VsYXIgYnVmZmVyIChyaW5nKSBvZiB1bnN3YXBwYWJsZSBtZW1vcnkuCitCZWluZyBtYXBwZWQgaW4gdGhlIGNhcHR1cmUgcHJvY2VzcyBhbGxvd3MgcmVhZGluZyB0aGUgY2FwdHVyZWQgZnJhbWVzIGFuZCAKK3JlbGF0ZWQgbWV0YS1pbmZvcm1hdGlvbiBsaWtlIHRpbWVzdGFtcHMgd2l0aG91dCByZXF1aXJpbmcgYSBzeXN0ZW0gY2FsbC4KKworRnJhbWVzIGFyZSBncm91cGVkIGluIGJsb2Nrcy4gRWFjaCBibG9jayBpcyBhIHBoeXNpY2FsbHkgY29udGlndW91cworcmVnaW9uIG9mIG1lbW9yeSBhbmQgaG9sZHMgdHBfYmxvY2tfc2l6ZS90cF9mcmFtZV9zaXplIGZyYW1lcy4gVGhlIHRvdGFsIG51bWJlciAKK29mIGJsb2NrcyBpcyB0cF9ibG9ja19uci4gTm90ZSB0aGF0IHRwX2ZyYW1lX25yIGlzIGEgcmVkdW5kYW50IHBhcmFtZXRlciBiZWNhdXNlCisKKyAgICBmcmFtZXNfcGVyX2Jsb2NrID0gdHBfYmxvY2tfc2l6ZS90cF9mcmFtZV9zaXplCisKK2luZGVlZCwgcGFja2V0X3NldF9yaW5nIGNoZWNrcyB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uIGlzIHRydWUKKworICAgIGZyYW1lc19wZXJfYmxvY2sgKiB0cF9ibG9ja19uciA9PSB0cF9mcmFtZV9ucgorCitMZXRzIHNlZSBhbiBleGFtcGxlLCB3aXRoIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorCisgICAgIHRwX2Jsb2NrX3NpemU9IDQwOTYKKyAgICAgdHBfZnJhbWVfc2l6ZT0gMjA0OAorICAgICB0cF9ibG9ja19uciAgPSA0CisgICAgIHRwX2ZyYW1lX25yICA9IDgKKword2Ugd2lsbCBnZXQgdGhlIGZvbGxvd2luZyBidWZmZXIgc3RydWN0dXJlOgorCisgICAgICAgIGJsb2NrICMxICAgICAgICAgICAgICAgICBibG9jayAjMiAgICAgICAgIAorKy0tLS0tLS0tLSstLS0tLS0tLS0rICAgICstLS0tLS0tLS0rLS0tLS0tLS0tKyAgICAKK3wgZnJhbWUgMSB8IGZyYW1lIDIgfCAgICB8IGZyYW1lIDMgfCBmcmFtZSA0IHwgICAgCisrLS0tLS0tLS0tKy0tLS0tLS0tLSsgICAgKy0tLS0tLS0tLSstLS0tLS0tLS0rICAgIAorCisgICAgICAgIGJsb2NrICMzICAgICAgICAgICAgICAgICBibG9jayAjNAorKy0tLS0tLS0tLSstLS0tLS0tLS0rICAgICstLS0tLS0tLS0rLS0tLS0tLS0tKworfCBmcmFtZSA1IHwgZnJhbWUgNiB8ICAgIHwgZnJhbWUgNyB8IGZyYW1lIDggfAorKy0tLS0tLS0tLSstLS0tLS0tLS0rICAgICstLS0tLS0tLS0rLS0tLS0tLS0tKworCitBIGZyYW1lIGNhbiBiZSBvZiBhbnkgc2l6ZSB3aXRoIHRoZSBvbmx5IGNvbmRpdGlvbiBpdCBjYW4gZml0IGluIGEgYmxvY2suIEEgYmxvY2sKK2NhbiBvbmx5IGhvbGQgYW4gaW50ZWdlciBudW1iZXIgb2YgZnJhbWVzLCBvciBpbiBvdGhlciB3b3JkcywgYSBmcmFtZSBjYW5ub3QgCitiZSBzcGF3bmVkIGFjcm9zcyB0d28gYmxvY2tzLCBzbyB0aGVyZSBhcmUgc29tZSBkZXRhaWxzIHlvdSBoYXZlIHRvIHRha2UgaW50byAKK2FjY291bnQgd2hlbiBjaG9vc2luZyB0aGUgZnJhbWVfc2l6ZS4gU2VlICJNYXBwaW5nIGFuZCB1c2Ugb2YgdGhlIGNpcmN1bGFyIAorYnVmZmVyIChyaW5nKSIuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIFBBQ0tFVF9NTUFQIHNldHRpbmcgY29uc3RyYWludHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0luIGtlcm5lbCB2ZXJzaW9ucyBwcmlvciB0byAyLjQuMjYgKGZvciB0aGUgMi40IGJyYW5jaCkgYW5kIDIuNi41ICgyLjYgYnJhbmNoKSwKK3RoZSBQQUNLRVRfTU1BUCBidWZmZXIgY291bGQgaG9sZCBvbmx5IDMyNzY4IGZyYW1lcyBpbiBhIDMyIGJpdCBhcmNoaXRlY3R1cmUgb3IKKzE2Mzg0IGluIGEgNjQgYml0IGFyY2hpdGVjdHVyZS4gRm9yIGluZm9ybWF0aW9uIG9uIHRoZXNlIGtlcm5lbCB2ZXJzaW9ucworc2VlIGh0dHA6Ly9wdXNhLnV2LmVzL351bGlzc2VzL3BhY2tldF9tbWFwL3BhY2tldF9tbWFwLnByZS0yLjQuMjZfMi42LjUudHh0CisKKyBCbG9jayBzaXplIGxpbWl0CistLS0tLS0tLS0tLS0tLS0tLS0KKworQXMgc3RhdGVkIGVhcmxpZXIsIGVhY2ggYmxvY2sgaXMgYSBjb250aWd1b3VzIHBoeXNpY2FsIHJlZ2lvbiBvZiBtZW1vcnkuIFRoZXNlIAorbWVtb3J5IHJlZ2lvbnMgYXJlIGFsbG9jYXRlZCB3aXRoIGNhbGxzIHRvIHRoZSBfX2dldF9mcmVlX3BhZ2VzKCkgZnVuY3Rpb24uIEFzIAordGhlIG5hbWUgaW5kaWNhdGVzLCB0aGlzIGZ1bmN0aW9uIGFsbG9jYXRlcyBwYWdlcyBvZiBtZW1vcnksIGFuZCB0aGUgc2Vjb25kCithcmd1bWVudCBpcyAib3JkZXIiIG9yIGEgcG93ZXIgb2YgdHdvIG51bWJlciBvZiBwYWdlcywgdGhhdCBpcyAKKyhmb3IgUEFHRV9TSVpFID09IDQwOTYpIG9yZGVyPTAgPT0+IDQwOTYgYnl0ZXMsIG9yZGVyPTEgPT0+IDgxOTIgYnl0ZXMsIAorb3JkZXI9MiA9PT4gMTYzODQgYnl0ZXMsIGV0Yy4gVGhlIG1heGltdW0gc2l6ZSBvZiBhIAorcmVnaW9uIGFsbG9jYXRlZCBieSBfX2dldF9mcmVlX3BhZ2VzIGlzIGRldGVybWluZWQgYnkgdGhlIE1BWF9PUkRFUiBtYWNyby4gTW9yZSAKK3ByZWNpc2VseSB0aGUgbGltaXQgY2FuIGJlIGNhbGN1bGF0ZWQgYXM6CisKKyAgIFBBR0VfU0laRSA8PCBNQVhfT1JERVIKKworICAgSW4gYSBpMzg2IGFyY2hpdGVjdHVyZSBQQUdFX1NJWkUgaXMgNDA5NiBieXRlcyAKKyAgIEluIGEgMi40L2kzODYga2VybmVsIE1BWF9PUkRFUiBpcyAxMAorICAgSW4gYSAyLjYvaTM4NiBrZXJuZWwgTUFYX09SREVSIGlzIDExCisKK1NvIGdldF9mcmVlX3BhZ2VzIGNhbiBhbGxvY2F0ZSBhcyBtdWNoIGFzIDRNQiBvciA4TUIgaW4gYSAyLjQvMi42IGtlcm5lbCAKK3Jlc3BlY3RpdmVseSwgd2l0aCBhbiBpMzg2IGFyY2hpdGVjdHVyZS4KKworVXNlciBzcGFjZSBwcm9ncmFtcyBjYW4gaW5jbHVkZSAvdXNyL2luY2x1ZGUvc3lzL3VzZXIuaCBhbmQgCisvdXNyL2luY2x1ZGUvbGludXgvbW16b25lLmggdG8gZ2V0IFBBR0VfU0laRSBNQVhfT1JERVIgZGVjbGFyYXRpb25zLgorCitUaGUgcGFnZXNpemUgY2FuIGFsc28gYmUgZGV0ZXJtaW5lZCBkeW5hbWljYWxseSB3aXRoIHRoZSBnZXRwYWdlc2l6ZSAoMikgCitzeXN0ZW0gY2FsbC4gCisKKyBCbG9jayBudW1iZXIgbGltaXQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RvIHVuZGVyc3RhbmQgdGhlIGNvbnN0cmFpbnRzIG9mIFBBQ0tFVF9NTUFQLCB3ZSBoYXZlIHRvIHNlZSB0aGUgc3RydWN0dXJlIAordXNlZCB0byBob2xkIHRoZSBwb2ludGVycyB0byBlYWNoIGJsb2NrLgorCitDdXJyZW50bHksIHRoaXMgc3RydWN0dXJlIGlzIGEgZHluYW1pY2FsbHkgYWxsb2NhdGVkIHZlY3RvciB3aXRoIGttYWxsb2MgCitjYWxsZWQgcGdfdmVjLCBpdHMgc2l6ZSBsaW1pdHMgdGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCBjYW4gYmUgYWxsb2NhdGVkLgorCisgICAgKy0tLSstLS0rLS0tKy0tLSsKKyAgICB8IHggfCB4IHwgeCB8IHggfAorICAgICstLS0rLS0tKy0tLSstLS0rCisgICAgICB8ICAgfCAgIHwgICB8CisgICAgICB8ICAgfCAgIHwgICB2CisgICAgICB8ICAgfCAgIHYgIGJsb2NrICM0CisgICAgICB8ICAgdiAgYmxvY2sgIzMKKyAgICAgIHYgIGJsb2NrICMyCisgICAgIGJsb2NrICMxCisKK2ttYWxsb2MgYWxsb2NhdGVzIGFueSBudW1iZXIgb2YgYnl0ZXMgb2YgcGh5c2ljYWxseSBjb250aWd1b3VzIG1lbW9yeSBmcm9tIAorYSBwb29sIG9mIHByZS1kZXRlcm1pbmVkIHNpemVzLiBUaGlzIHBvb2wgb2YgbWVtb3J5IGlzIG1haW50YWluZWQgYnkgdGhlIHNsYWIgCithbGxvY2F0b3Igd2hpY2ggaXMgYXQgdGhlIGVuZCB0aGUgcmVzcG9uc2libGUgZm9yIGRvaW5nIHRoZSBhbGxvY2F0aW9uIGFuZCAKK2hlbmNlIHdoaWNoIGltcG9zZXMgdGhlIG1heGltdW0gbWVtb3J5IHRoYXQga21hbGxvYyBjYW4gYWxsb2NhdGUuIAorCitJbiBhIDIuNC8yLjYga2VybmVsIGFuZCB0aGUgaTM4NiBhcmNoaXRlY3R1cmUsIHRoZSBsaW1pdCBpcyAxMzEwNzIgYnl0ZXMuIFRoZSAKK3ByZWRldGVybWluZWQgc2l6ZXMgdGhhdCBrbWFsbG9jIHVzZXMgY2FuIGJlIGNoZWNrZWQgaW4gdGhlICJzaXplLTxieXRlcz4iIAorZW50cmllcyBvZiAvcHJvYy9zbGFiaW5mbworCitJbiBhIDMyIGJpdCBhcmNoaXRlY3R1cmUsIHBvaW50ZXJzIGFyZSA0IGJ5dGVzIGxvbmcsIHNvIHRoZSB0b3RhbCBudW1iZXIgb2YgCitwb2ludGVycyB0byBibG9ja3MgaXMKKworICAgICAxMzEwNzIvNCA9IDMyNzY4IGJsb2NrcworCisgUEFDS0VUX01NQVAgYnVmZmVyIHNpemUgY2FsY3VsYXRvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RlZmluaXRpb25zOgorCis8c2l6ZS1tYXg+ICAgIDogaXMgdGhlIG1heGltdW0gc2l6ZSBvZiBhbGxvY2FibGUgd2l0aCBrbWFsbG9jIChzZWUgL3Byb2Mvc2xhYmluZm8pCis8cG9pbnRlciBzaXplPjogZGVwZW5kcyBvbiB0aGUgYXJjaGl0ZWN0dXJlIC0tIHNpemVvZih2b2lkICopCis8cGFnZSBzaXplPiAgIDogZGVwZW5kcyBvbiB0aGUgYXJjaGl0ZWN0dXJlIC0tIFBBR0VfU0laRSBvciBnZXRwYWdlc2l6ZSAoMikKKzxtYXgtb3JkZXI+ICAgOiBpcyB0aGUgdmFsdWUgZGVmaW5lZCB3aXRoIE1BWF9PUkRFUgorPGZyYW1lIHNpemU+ICA6IGl0J3MgYW4gdXBwZXIgYm91bmQgb2YgZnJhbWUncyBjYXB0dXJlIHNpemUgKG1vcmUgb24gdGhpcyBsYXRlcikKKworZnJvbSB0aGVzZSBkZWZpbml0aW9ucyB3ZSB3aWxsIGRlcml2ZSAKKworCTxibG9jayBudW1iZXI+ID0gPHNpemUtbWF4Pi88cG9pbnRlciBzaXplPgorCTxibG9jayBzaXplPiA9IDxwYWdlc2l6ZT4gPDwgPG1heC1vcmRlcj4KKworc28sIHRoZSBtYXggYnVmZmVyIHNpemUgaXMKKworCTxibG9jayBudW1iZXI+ICogPGJsb2NrIHNpemU+CisKK2FuZCwgdGhlIG51bWJlciBvZiBmcmFtZXMgYmUKKworCTxibG9jayBudW1iZXI+ICogPGJsb2NrIHNpemU+IC8gPGZyYW1lIHNpemU+CisKK1N1cHBvc2UgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzLCB3aGljaCBhcHBseSBmb3IgMi42IGtlcm5lbCBhbmQgYW4KK2kzODYgYXJjaGl0ZWN0dXJlOgorCisJPHNpemUtbWF4PiA9IDEzMTA3MiBieXRlcworCTxwb2ludGVyIHNpemU+ID0gNCBieXRlcworCTxwYWdlc2l6ZT4gPSA0MDk2IGJ5dGVzCisJPG1heC1vcmRlcj4gPSAxMQorCithbmQgYSB2YWx1ZSBmb3IgPGZyYW1lIHNpemU+IG9mIDIwNDggYnl0ZXMuIFRoZXNlIHBhcmFtZXRlcnMgd2lsbCB5aWVsZAorCisJPGJsb2NrIG51bWJlcj4gPSAxMzEwNzIvNCA9IDMyNzY4IGJsb2NrcworCTxibG9jayBzaXplPiA9IDQwOTYgPDwgMTEgPSA4IE1pQi4KKworYW5kIGhlbmNlIHRoZSBidWZmZXIgd2lsbCBoYXZlIGEgMjYyMTQ0IE1pQiBzaXplLiBTbyBpdCBjYW4gaG9sZCAKKzI2MjE0NCBNaUIgLyAyMDQ4IGJ5dGVzID0gMTM0MjE3NzI4IGZyYW1lcworCitBY3R1YWxseSwgdGhpcyBidWZmZXIgc2l6ZSBpcyBub3QgcG9zc2libGUgd2l0aCBhbiBpMzg2IGFyY2hpdGVjdHVyZS4gCitSZW1lbWJlciB0aGF0IHRoZSBtZW1vcnkgaXMgYWxsb2NhdGVkIGluIGtlcm5lbCBzcGFjZSwgaW4gdGhlIGNhc2Ugb2YgCithbiBpMzg2IGtlcm5lbCdzIG1lbW9yeSBzaXplIGlzIGxpbWl0ZWQgdG8gMUdpQi4KKworQWxsIG1lbW9yeSBhbGxvY2F0aW9ucyBhcmUgbm90IGZyZWVkIHVudGlsIHRoZSBzb2NrZXQgaXMgY2xvc2VkLiBUaGUgbWVtb3J5IAorYWxsb2NhdGlvbnMgYXJlIGRvbmUgd2l0aCBHRlBfS0VSTkVMIHByaW9yaXR5LCB0aGlzIGJhc2ljYWxseSBtZWFucyB0aGF0IAordGhlIGFsbG9jYXRpb24gY2FuIHdhaXQgYW5kIHN3YXAgb3RoZXIgcHJvY2VzcycgbWVtb3J5IGluIG9yZGVyIHRvIGFsbG9jYXRlIAordGhlIG5lY2Vzc2FyeSBtZW1vcnksIHNvIG5vcm1hbGx5IGxpbWl0cyBjYW4gYmUgcmVhY2hlZC4KKworIE90aGVyIGNvbnN0cmFpbnRzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHlvdSBjaGVjayB0aGUgc291cmNlIGNvZGUgeW91IHdpbGwgc2VlIHRoYXQgd2hhdCBJIGRyYXcgaGVyZSBhcyBhIGZyYW1lCitpcyBub3Qgb25seSB0aGUgbGluayBsZXZlbCBmcmFtZS4gQXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIGZyYW1lIHRoZXJlIGlzIGEgCitoZWFkZXIgY2FsbGVkIHN0cnVjdCB0cGFja2V0X2hkciB1c2VkIGluIFBBQ0tFVF9NTUFQIHRvIGhvbGQgbGluayBsZXZlbCdzIGZyYW1lCittZXRhIGluZm9ybWF0aW9uIGxpa2UgdGltZXN0YW1wLiBTbyB3aGF0IHdlIGRyYXcgaGVyZSBhIGZyYW1lIGl0J3MgcmVhbGx5IAordGhlIGZvbGxvd2luZyAoZnJvbSBpbmNsdWRlL2xpbnV4L2lmX3BhY2tldC5oKToKKworLyoKKyAgIEZyYW1lIHN0cnVjdHVyZToKKworICAgLSBTdGFydC4gRnJhbWUgbXVzdCBiZSBhbGlnbmVkIHRvIFRQQUNLRVRfQUxJR05NRU5UPTE2CisgICAtIHN0cnVjdCB0cGFja2V0X2hkcgorICAgLSBwYWQgdG8gVFBBQ0tFVF9BTElHTk1FTlQ9MTYKKyAgIC0gc3RydWN0IHNvY2thZGRyX2xsCisgICAtIEdhcCwgY2hvc2VuIHNvIHRoYXQgcGFja2V0IGRhdGEgKFN0YXJ0K3RwX25ldCkgYWxpZ25zIHRvIAorICAgICBUUEFDS0VUX0FMSUdOTUVOVD0xNgorICAgLSBTdGFydCt0cF9tYWM6IFsgT3B0aW9uYWwgTUFDIGhlYWRlciBdCisgICAtIFN0YXJ0K3RwX25ldDogUGFja2V0IGRhdGEsIGFsaWduZWQgdG8gVFBBQ0tFVF9BTElHTk1FTlQ9MTYuCisgICAtIFBhZCB0byBhbGlnbiB0byBUUEFDS0VUX0FMSUdOTUVOVD0xNgorICovCisgCisgVGhlIGZvbGxvd2luZyBhcmUgY29uZGl0aW9ucyB0aGF0IGFyZSBjaGVja2VkIGluIHBhY2tldF9zZXRfcmluZworCisgICB0cF9ibG9ja19zaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiBQQUdFX1NJWkUgKDEpCisgICB0cF9mcmFtZV9zaXplIG11c3QgYmUgZ3JlYXRlciB0aGFuIFRQQUNLRVRfSERSTEVOIChvYnZpb3VzKQorICAgdHBfZnJhbWVfc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgVFBBQ0tFVF9BTElHTk1FTlQKKyAgIHRwX2ZyYW1lX25yICAgbXVzdCBiZSBleGFjdGx5IGZyYW1lc19wZXJfYmxvY2sqdHBfYmxvY2tfbnIKKworTm90ZSB0aGF0IHRwX2Jsb2NrX3NpemUgc2hvdWxkIGJlIGNob3NlbiB0byBiZSBhIHBvd2VyIG9mIHR3byBvciB0aGVyZSB3aWxsCitiZSBhIHdhc3RlIG9mIG1lbW9yeS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysgTWFwcGluZyBhbmQgdXNlIG9mIHRoZSBjaXJjdWxhciBidWZmZXIgKHJpbmcpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbWFwcGluZyBvZiB0aGUgYnVmZmVyIGluIHRoZSB1c2VyIHByb2Nlc3MgaXMgZG9uZSB3aXRoIHRoZSBjb252ZW50aW9uYWwgCittbWFwIGZ1bmN0aW9uLiBFdmVuIHRoZSBjaXJjdWxhciBidWZmZXIgaXMgY29tcG91bmQgb2Ygc2V2ZXJhbCBwaHlzaWNhbGx5CitkaXNjb250aWd1b3VzIGJsb2NrcyBvZiBtZW1vcnksIHRoZXkgYXJlIGNvbnRpZ3VvdXMgdG8gdGhlIHVzZXIgc3BhY2UsIGhlbmNlCitqdXN0IG9uZSBjYWxsIHRvIG1tYXAgaXMgbmVlZGVkOgorCisgICAgbW1hcCgwLCBzaXplLCBQUk9UX1JFQUR8UFJPVF9XUklURSwgTUFQX1NIQVJFRCwgZmQsIDApOworCitJZiB0cF9mcmFtZV9zaXplIGlzIGEgZGl2aXNvciBvZiB0cF9ibG9ja19zaXplIGZyYW1lcyB3aWxsIGJlIAorY29udGlndW91c2x5IHNwYWNlZCBieSB0cF9mcmFtZV9zaXplIGJ5dGVzLiBJZiBub3QsIGVhY2gKK3RwX2Jsb2NrX3NpemUvdHBfZnJhbWVfc2l6ZSBmcmFtZXMgdGhlcmUgd2lsbCBiZSBhIGdhcCBiZXR3ZWVuIAordGhlIGZyYW1lcy4gVGhpcyBpcyBiZWNhdXNlIGEgZnJhbWUgY2Fubm90IGJlIHNwYXduIGFjcm9zcyB0d28KK2Jsb2Nrcy4gCisKK1RvIHVzZSBvbmUgc29ja2V0IGZvciBjYXB0dXJlIGFuZCB0cmFuc21pc3Npb24sIHRoZSBtYXBwaW5nIG9mIGJvdGggdGhlCitSWCBhbmQgVFggYnVmZmVyIHJpbmcgaGFzIHRvIGJlIGRvbmUgd2l0aCBvbmUgY2FsbCB0byBtbWFwOgorCisgICAgLi4uCisgICAgc2V0c29ja29wdChmZCwgU09MX1BBQ0tFVCwgUEFDS0VUX1JYX1JJTkcsICZmb28sIHNpemVvZihmb28pKTsKKyAgICBzZXRzb2Nrb3B0KGZkLCBTT0xfUEFDS0VULCBQQUNLRVRfVFhfUklORywgJmJhciwgc2l6ZW9mKGJhcikpOworICAgIC4uLgorICAgIHJ4X3JpbmcgPSBtbWFwKDAsIHNpemUgKiAyLCBQUk9UX1JFQUR8UFJPVF9XUklURSwgTUFQX1NIQVJFRCwgZmQsIDApOworICAgIHR4X3JpbmcgPSByeF9yaW5nICsgc2l6ZTsKKworUlggbXVzdCBiZSB0aGUgZmlyc3QgYXMgdGhlIGtlcm5lbCBtYXBzIHRoZSBUWCByaW5nIG1lbW9yeSByaWdodAorYWZ0ZXIgdGhlIFJYIG9uZS4KKworQXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIGZyYW1lIHRoZXJlIGlzIGFuIHN0YXR1cyBmaWVsZCAoc2VlIAorc3RydWN0IHRwYWNrZXRfaGRyKS4gSWYgdGhpcyBmaWVsZCBpcyAwIG1lYW5zIHRoYXQgdGhlIGZyYW1lIGlzIHJlYWR5Cit0byBiZSB1c2VkIGZvciB0aGUga2VybmVsLCBJZiBub3QsIHRoZXJlIGlzIGEgZnJhbWUgdGhlIHVzZXIgY2FuIHJlYWQgCithbmQgdGhlIGZvbGxvd2luZyBmbGFncyBhcHBseToKKworKysrIENhcHR1cmUgcHJvY2VzczoKKyAgICAgZnJvbSBpbmNsdWRlL2xpbnV4L2lmX3BhY2tldC5oCisKKyAgICAgI2RlZmluZSBUUF9TVEFUVVNfQ09QWSAgICAgICAgICAoMSA8PCAxKQorICAgICAjZGVmaW5lIFRQX1NUQVRVU19MT1NJTkcgICAgICAgICgxIDw8IDIpCisgICAgICNkZWZpbmUgVFBfU1RBVFVTX0NTVU1OT1RSRUFEWSAgKDEgPDwgMykKKyAgICAgI2RlZmluZSBUUF9TVEFUVVNfQ1NVTV9WQUxJRCAgICAoMSA8PCA3KQorCitUUF9TVEFUVVNfQ09QWSAgICAgICAgOiBUaGlzIGZsYWcgaW5kaWNhdGVzIHRoYXQgdGhlIGZyYW1lIChhbmQgYXNzb2NpYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgbWV0YSBpbmZvcm1hdGlvbikgaGFzIGJlZW4gdHJ1bmNhdGVkIGJlY2F1c2UgaXQncyAKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhcmdlciB0aGFuIHRwX2ZyYW1lX3NpemUuIFRoaXMgcGFja2V0IGNhbiBiZSAKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQgZW50aXJlbHkgd2l0aCByZWN2ZnJvbSgpLgorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBJbiBvcmRlciB0byBtYWtlIHRoaXMgd29yayBpdCBtdXN0IHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkIHByZXZpb3VzbHkgd2l0aCBzZXRzb2Nrb3B0KCkgYW5kIAorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFBBQ0tFVF9DT1BZX1RIUkVTSCBvcHRpb24uIAorCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgbnVtYmVyIG9mIGZyYW1lcyB0aGF0IGNhbiBiZSBidWZmZXJlZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgYmUgcmVhZCB3aXRoIHJlY3Zmcm9tIGlzIGxpbWl0ZWQgbGlrZSBhIG5vcm1hbCBzb2NrZXQuCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlIFNPX1JDVkJVRiBvcHRpb24gaW4gdGhlIHNvY2tldCAoNykgbWFuIHBhZ2UuCisKK1RQX1NUQVRVU19MT1NJTkcgICAgICA6IGluZGljYXRlcyB0aGVyZSB3ZXJlIHBhY2tldCBkcm9wcyBmcm9tIGxhc3QgdGltZSAKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpc3RpY3Mgd2hlcmUgY2hlY2tlZCB3aXRoIGdldHNvY2tvcHQoKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBQQUNLRVRfU1RBVElTVElDUyBvcHRpb24uCisKK1RQX1NUQVRVU19DU1VNTk9UUkVBRFk6IGN1cnJlbnRseSBpdCdzIHVzZWQgZm9yIG91dGdvaW5nIElQIHBhY2tldHMgd2hpY2ggCisgICAgICAgICAgICAgICAgICAgICAgICBpdHMgY2hlY2tzdW0gd2lsbCBiZSBkb25lIGluIGhhcmR3YXJlLiBTbyB3aGlsZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGluZyB0aGUgcGFja2V0IHdlIHNob3VsZCBub3QgdHJ5IHRvIGNoZWNrIHRoZSAKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrc3VtLiAKKworVFBfU1RBVFVTX0NTVU1fVkFMSUQgIDogVGhpcyBmbGFnIGluZGljYXRlcyB0aGF0IGF0IGxlYXN0IHRoZSB0cmFuc3BvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlciBjaGVja3N1bSBvZiB0aGUgcGFja2V0IGhhcyBiZWVuIGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlZCBvbiB0aGUga2VybmVsIHNpZGUuIElmIHRoZSBmbGFnIGlzIG5vdCBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gd2UgYXJlIGZyZWUgdG8gY2hlY2sgdGhlIGNoZWNrc3VtIGJ5IG91cnNlbHZlcworICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgdGhhdCBUUF9TVEFUVVNfQ1NVTU5PVFJFQURZIGlzIGFsc28gbm90IHNldC4KKworZm9yIGNvbnZlbmllbmNlIHRoZXJlIGFyZSBhbHNvIHRoZSBmb2xsb3dpbmcgZGVmaW5lczoKKworICAgICAjZGVmaW5lIFRQX1NUQVRVU19LRVJORUwgICAgICAgIDAKKyAgICAgI2RlZmluZSBUUF9TVEFUVVNfVVNFUiAgICAgICAgICAxCisKK1RoZSBrZXJuZWwgaW5pdGlhbGl6ZXMgYWxsIGZyYW1lcyB0byBUUF9TVEFUVVNfS0VSTkVMLCB3aGVuIHRoZSBrZXJuZWwKK3JlY2VpdmVzIGEgcGFja2V0IGl0IHB1dHMgaW4gdGhlIGJ1ZmZlciBhbmQgdXBkYXRlcyB0aGUgc3RhdHVzIHdpdGgKK2F0IGxlYXN0IHRoZSBUUF9TVEFUVVNfVVNFUiBmbGFnLiBUaGVuIHRoZSB1c2VyIGNhbiByZWFkIHRoZSBwYWNrZXQsCitvbmNlIHRoZSBwYWNrZXQgaXMgcmVhZCB0aGUgdXNlciBtdXN0IHplcm8gdGhlIHN0YXR1cyBmaWVsZCwgc28gdGhlIGtlcm5lbCAKK2NhbiB1c2UgYWdhaW4gdGhhdCBmcmFtZSBidWZmZXIuCisKK1RoZSB1c2VyIGNhbiB1c2UgcG9sbCAoYW55IG90aGVyIHZhcmlhbnQgc2hvdWxkIGFwcGx5IHRvbykgdG8gY2hlY2sgaWYgbmV3CitwYWNrZXRzIGFyZSBpbiB0aGUgcmluZzoKKworICAgIHN0cnVjdCBwb2xsZmQgcGZkOworCisgICAgcGZkLmZkID0gZmQ7CisgICAgcGZkLnJldmVudHMgPSAwOworICAgIHBmZC5ldmVudHMgPSBQT0xMSU58UE9MTFJETk9STXxQT0xMRVJSOworCisgICAgaWYgKHN0YXR1cyA9PSBUUF9TVEFUVVNfS0VSTkVMKQorICAgICAgICByZXR2YWwgPSBwb2xsKCZwZmQsIDEsIHRpbWVvdXQpOworCitJdCBkb2Vzbid0IGluY3VyIGluIGEgcmFjZSBjb25kaXRpb24gdG8gZmlyc3QgY2hlY2sgdGhlIHN0YXR1cyB2YWx1ZSBhbmQgCit0aGVuIHBvbGwgZm9yIGZyYW1lcy4KKworKysgVHJhbnNtaXNzaW9uIHByb2Nlc3MKK1Rob3NlIGRlZmluZXMgYXJlIGFsc28gdXNlZCBmb3IgdHJhbnNtaXNzaW9uOgorCisgICAgICNkZWZpbmUgVFBfU1RBVFVTX0FWQUlMQUJMRSAgICAgICAgMCAvLyBGcmFtZSBpcyBhdmFpbGFibGUKKyAgICAgI2RlZmluZSBUUF9TVEFUVVNfU0VORF9SRVFVRVNUICAgICAxIC8vIEZyYW1lIHdpbGwgYmUgc2VudCBvbiBuZXh0IHNlbmQoKQorICAgICAjZGVmaW5lIFRQX1NUQVRVU19TRU5ESU5HICAgICAgICAgIDIgLy8gRnJhbWUgaXMgY3VycmVudGx5IGluIHRyYW5zbWlzc2lvbgorICAgICAjZGVmaW5lIFRQX1NUQVRVU19XUk9OR19GT1JNQVQgICAgIDQgLy8gRnJhbWUgZm9ybWF0IGlzIG5vdCBjb3JyZWN0CisKK0ZpcnN0LCB0aGUga2VybmVsIGluaXRpYWxpemVzIGFsbCBmcmFtZXMgdG8gVFBfU1RBVFVTX0FWQUlMQUJMRS4gVG8gc2VuZCBhCitwYWNrZXQsIHRoZSB1c2VyIGZpbGxzIGEgZGF0YSBidWZmZXIgb2YgYW4gYXZhaWxhYmxlIGZyYW1lLCBzZXRzIHRwX2xlbiB0bworY3VycmVudCBkYXRhIGJ1ZmZlciBzaXplIGFuZCBzZXRzIGl0cyBzdGF0dXMgZmllbGQgdG8gVFBfU1RBVFVTX1NFTkRfUkVRVUVTVC4KK1RoaXMgY2FuIGJlIGRvbmUgb24gbXVsdGlwbGUgZnJhbWVzLiBPbmNlIHRoZSB1c2VyIGlzIHJlYWR5IHRvIHRyYW5zbWl0LCBpdAorY2FsbHMgc2VuZCgpLiBUaGVuIGFsbCBidWZmZXJzIHdpdGggc3RhdHVzIGVxdWFsIHRvIFRQX1NUQVRVU19TRU5EX1JFUVVFU1QgYXJlCitmb3J3YXJkZWQgdG8gdGhlIG5ldHdvcmsgZGV2aWNlLiBUaGUga2VybmVsIHVwZGF0ZXMgZWFjaCBzdGF0dXMgb2Ygc2VudAorZnJhbWVzIHdpdGggVFBfU1RBVFVTX1NFTkRJTkcgdW50aWwgdGhlIGVuZCBvZiB0cmFuc2Zlci4KK0F0IHRoZSBlbmQgb2YgZWFjaCB0cmFuc2ZlciwgYnVmZmVyIHN0YXR1cyByZXR1cm5zIHRvIFRQX1NUQVRVU19BVkFJTEFCTEUuCisKKyAgICBoZWFkZXItPnRwX2xlbiA9IGluX2lfc2l6ZTsKKyAgICBoZWFkZXItPnRwX3N0YXR1cyA9IFRQX1NUQVRVU19TRU5EX1JFUVVFU1Q7CisgICAgcmV0dmFsID0gc2VuZCh0aGlzLT5zb2NrZXQsIE5VTEwsIDAsIDApOworCitUaGUgdXNlciBjYW4gYWxzbyB1c2UgcG9sbCgpIHRvIGNoZWNrIGlmIGEgYnVmZmVyIGlzIGF2YWlsYWJsZToKKyhzdGF0dXMgPT0gVFBfU1RBVFVTX1NFTkRJTkcpCisKKyAgICBzdHJ1Y3QgcG9sbGZkIHBmZDsKKyAgICBwZmQuZmQgPSBmZDsKKyAgICBwZmQucmV2ZW50cyA9IDA7CisgICAgcGZkLmV2ZW50cyA9IFBPTExPVVQ7CisgICAgcmV0dmFsID0gcG9sbCgmcGZkLCAxLCB0aW1lb3V0KTsKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyBXaGF0IFRQQUNLRVQgdmVyc2lvbnMgYXJlIGF2YWlsYWJsZSBhbmQgd2hlbiB0byB1c2UgdGhlbT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIGludCB2YWwgPSB0cGFja2V0X3ZlcnNpb247Cisgc2V0c29ja29wdChmZCwgU09MX1BBQ0tFVCwgUEFDS0VUX1ZFUlNJT04sICZ2YWwsIHNpemVvZih2YWwpKTsKKyBnZXRzb2Nrb3B0KGZkLCBTT0xfUEFDS0VULCBQQUNLRVRfVkVSU0lPTiwgJnZhbCwgc2l6ZW9mKHZhbCkpOworCit3aGVyZSAndHBhY2tldF92ZXJzaW9uJyBjYW4gYmUgVFBBQ0tFVF9WMSAoZGVmYXVsdCksIFRQQUNLRVRfVjIsIFRQQUNLRVRfVjMuCisKK1RQQUNLRVRfVjE6CisJLSBEZWZhdWx0IGlmIG5vdCBvdGhlcndpc2Ugc3BlY2lmaWVkIGJ5IHNldHNvY2tvcHQoMikKKwktIFJYX1JJTkcsIFRYX1JJTkcgYXZhaWxhYmxlCisKK1RQQUNLRVRfVjEgLS0+IFRQQUNLRVRfVjI6CisJLSBNYWRlIDY0IGJpdCBjbGVhbiBkdWUgdG8gdW5zaWduZWQgbG9uZyB1c2FnZSBpbiBUUEFDS0VUX1YxCisJICBzdHJ1Y3R1cmVzLCB0aHVzIHRoaXMgYWxzbyB3b3JrcyBvbiA2NCBiaXQga2VybmVsIHdpdGggMzIgYml0CisJICB1c2Vyc3BhY2UgYW5kIHRoZSBsaWtlCisJLSBUaW1lc3RhbXAgcmVzb2x1dGlvbiBpbiBuYW5vc2Vjb25kcyBpbnN0ZWFkIG9mIG1pY3Jvc2Vjb25kcworCS0gUlhfUklORywgVFhfUklORyBhdmFpbGFibGUKKwktIFZMQU4gbWV0YWRhdGEgaW5mb3JtYXRpb24gYXZhaWxhYmxlIGZvciBwYWNrZXRzCisJICAoVFBfU1RBVFVTX1ZMQU5fVkFMSUQsIFRQX1NUQVRVU19WTEFOX1RQSURfVkFMSUQpLAorCSAgaW4gdGhlIHRwYWNrZXQyX2hkciBzdHJ1Y3R1cmU6CisJCS0gVFBfU1RBVFVTX1ZMQU5fVkFMSUQgYml0IGJlaW5nIHNldCBpbnRvIHRoZSB0cF9zdGF0dXMgZmllbGQgaW5kaWNhdGVzCisJCSAgdGhhdCB0aGUgdHBfdmxhbl90Y2kgZmllbGQgaGFzIHZhbGlkIFZMQU4gVENJIHZhbHVlCisJCS0gVFBfU1RBVFVTX1ZMQU5fVFBJRF9WQUxJRCBiaXQgYmVpbmcgc2V0IGludG8gdGhlIHRwX3N0YXR1cyBmaWVsZAorCQkgIGluZGljYXRlcyB0aGF0IHRoZSB0cF92bGFuX3RwaWQgZmllbGQgaGFzIHZhbGlkIFZMQU4gVFBJRCB2YWx1ZQorCS0gSG93IHRvIHN3aXRjaCB0byBUUEFDS0VUX1YyOgorCQkxLiBSZXBsYWNlIHN0cnVjdCB0cGFja2V0X2hkciBieSBzdHJ1Y3QgdHBhY2tldDJfaGRyCisJCTIuIFF1ZXJ5IGhlYWRlciBsZW4gYW5kIHNhdmUKKwkJMy4gU2V0IHByb3RvY29sIHZlcnNpb24gdG8gMiwgc2V0IHVwIHJpbmcgYXMgdXN1YWwKKwkJNC4gRm9yIGdldHRpbmcgdGhlIHNvY2thZGRyX2xsLAorCQkgICB1c2UgKHZvaWQgKiloZHIgKyBUUEFDS0VUX0FMSUdOKGhkcmxlbikgaW5zdGVhZCBvZgorCQkgICAodm9pZCAqKWhkciArIFRQQUNLRVRfQUxJR04oc2l6ZW9mKHN0cnVjdCB0cGFja2V0X2hkcikpCisKK1RQQUNLRVRfVjIgLS0+IFRQQUNLRVRfVjM6CisJLSBGbGV4aWJsZSBidWZmZXIgaW1wbGVtZW50YXRpb246CisJCTEuIEJsb2NrcyBjYW4gYmUgY29uZmlndXJlZCB3aXRoIG5vbi1zdGF0aWMgZnJhbWUtc2l6ZQorCQkyLiBSZWFkL3BvbGwgaXMgYXQgYSBibG9jay1sZXZlbCAoYXMgb3Bwb3NlZCB0byBwYWNrZXQtbGV2ZWwpCisJCTMuIEFkZGVkIHBvbGwgdGltZW91dCB0byBhdm9pZCBpbmRlZmluaXRlIHVzZXItc3BhY2Ugd2FpdAorCQkgICBvbiBpZGxlIGxpbmtzCisJCTQuIEFkZGVkIHVzZXItY29uZmlndXJhYmxlIGtub2JzOgorCQkJNC4xIGJsb2NrOjp0aW1lb3V0CisJCQk0LjIgdHBrdF9oZHI6OnNrX3J4aGFzaAorCS0gUlggSGFzaCBkYXRhIGF2YWlsYWJsZSBpbiB1c2VyIHNwYWNlCisJLSBDdXJyZW50bHkgb25seSBSWF9SSU5HIGF2YWlsYWJsZQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIEFGX1BBQ0tFVCBmYW5vdXQgbW9kZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbiB0aGUgQUZfUEFDS0VUIGZhbm91dCBtb2RlLCBwYWNrZXQgcmVjZXB0aW9uIGNhbiBiZSBsb2FkIGJhbGFuY2VkIGFtb25nCitwcm9jZXNzZXMuIFRoaXMgYWxzbyB3b3JrcyBpbiBjb21iaW5hdGlvbiB3aXRoIG1tYXAoMikgb24gcGFja2V0IHNvY2tldHMuCisKK0N1cnJlbnRseSBpbXBsZW1lbnRlZCBmYW5vdXQgcG9saWNpZXMgYXJlOgorCisgIC0gUEFDS0VUX0ZBTk9VVF9IQVNIOiBzY2hlZHVsZSB0byBzb2NrZXQgYnkgc2tiJ3MgcGFja2V0IGhhc2gKKyAgLSBQQUNLRVRfRkFOT1VUX0xCOiBzY2hlZHVsZSB0byBzb2NrZXQgYnkgcm91bmQtcm9iaW4KKyAgLSBQQUNLRVRfRkFOT1VUX0NQVTogc2NoZWR1bGUgdG8gc29ja2V0IGJ5IENQVSBwYWNrZXQgYXJyaXZlcyBvbgorICAtIFBBQ0tFVF9GQU5PVVRfUk5EOiBzY2hlZHVsZSB0byBzb2NrZXQgYnkgcmFuZG9tIHNlbGVjdGlvbgorICAtIFBBQ0tFVF9GQU5PVVRfUk9MTE9WRVI6IGlmIG9uZSBzb2NrZXQgaXMgZnVsbCwgcm9sbG92ZXIgdG8gYW5vdGhlcgorICAtIFBBQ0tFVF9GQU5PVVRfUU06IHNjaGVkdWxlIHRvIHNvY2tldCBieSBza2JzIHJlY29yZGVkIHF1ZXVlX21hcHBpbmcKKworTWluaW1hbCBleGFtcGxlIGNvZGUgYnkgRGF2aWQgUy4gTWlsbGVyICh0cnkgdGhpbmdzIGxpa2UgIi4vdGVzdCBldGgwIGhhc2giLAorIi4vdGVzdCBldGgwIGxiIiwgZXRjLik6CisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworI2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+CisjaW5jbHVkZSA8bGludXgvaWZfcGFja2V0Lmg+CisKKyNpbmNsdWRlIDxuZXQvaWYuaD4KKworc3RhdGljIGNvbnN0IGNoYXIgKmRldmljZV9uYW1lOworc3RhdGljIGludCBmYW5vdXRfdHlwZTsKK3N0YXRpYyBpbnQgZmFub3V0X2lkOworCisjaWZuZGVmIFBBQ0tFVF9GQU5PVVQKKyMgZGVmaW5lIFBBQ0tFVF9GQU5PVVQJCQkxOAorIyBkZWZpbmUgUEFDS0VUX0ZBTk9VVF9IQVNICQkwCisjIGRlZmluZSBQQUNLRVRfRkFOT1VUX0xCCQkxCisjZW5kaWYKKworc3RhdGljIGludCBzZXR1cF9zb2NrZXQodm9pZCkKK3sKKwlpbnQgZXJyLCBmZCA9IHNvY2tldChBRl9QQUNLRVQsIFNPQ0tfUkFXLCBodG9ucyhFVEhfUF9JUCkpOworCXN0cnVjdCBzb2NrYWRkcl9sbCBsbDsKKwlzdHJ1Y3QgaWZyZXEgaWZyOworCWludCBmYW5vdXRfYXJnOworCisJaWYgKGZkIDwgMCkgeworCQlwZXJyb3IoInNvY2tldCIpOworCQlyZXR1cm4gRVhJVF9GQUlMVVJFOworCX0KKworCW1lbXNldCgmaWZyLCAwLCBzaXplb2YoaWZyKSk7CisJc3RyY3B5KGlmci5pZnJfbmFtZSwgZGV2aWNlX25hbWUpOworCWVyciA9IGlvY3RsKGZkLCBTSU9DR0lGSU5ERVgsICZpZnIpOworCWlmIChlcnIgPCAwKSB7CisJCXBlcnJvcigiU0lPQ0dJRklOREVYIik7CisJCXJldHVybiBFWElUX0ZBSUxVUkU7CisJfQorCisJbWVtc2V0KCZsbCwgMCwgc2l6ZW9mKGxsKSk7CisJbGwuc2xsX2ZhbWlseSA9IEFGX1BBQ0tFVDsKKwlsbC5zbGxfaWZpbmRleCA9IGlmci5pZnJfaWZpbmRleDsKKwllcnIgPSBiaW5kKGZkLCAoc3RydWN0IHNvY2thZGRyICopICZsbCwgc2l6ZW9mKGxsKSk7CisJaWYgKGVyciA8IDApIHsKKwkJcGVycm9yKCJiaW5kIik7CisJCXJldHVybiBFWElUX0ZBSUxVUkU7CisJfQorCisJZmFub3V0X2FyZyA9IChmYW5vdXRfaWQgfCAoZmFub3V0X3R5cGUgPDwgMTYpKTsKKwllcnIgPSBzZXRzb2Nrb3B0KGZkLCBTT0xfUEFDS0VULCBQQUNLRVRfRkFOT1VULAorCQkJICZmYW5vdXRfYXJnLCBzaXplb2YoZmFub3V0X2FyZykpOworCWlmIChlcnIpIHsKKwkJcGVycm9yKCJzZXRzb2Nrb3B0Iik7CisJCXJldHVybiBFWElUX0ZBSUxVUkU7CisJfQorCisJcmV0dXJuIGZkOworfQorCitzdGF0aWMgdm9pZCBmYW5vdXRfdGhyZWFkKHZvaWQpCit7CisJaW50IGZkID0gc2V0dXBfc29ja2V0KCk7CisJaW50IGxpbWl0ID0gMTAwMDA7CisKKwlpZiAoZmQgPCAwKQorCQlleGl0KGZkKTsKKworCXdoaWxlIChsaW1pdC0tID4gMCkgeworCQljaGFyIGJ1ZlsxNjAwXTsKKwkJaW50IGVycjsKKworCQllcnIgPSByZWFkKGZkLCBidWYsIHNpemVvZihidWYpKTsKKwkJaWYgKGVyciA8IDApIHsKKwkJCXBlcnJvcigicmVhZCIpOworCQkJZXhpdChFWElUX0ZBSUxVUkUpOworCQl9CisJCWlmICgobGltaXQgJSAxMCkgPT0gMCkKKwkJCWZwcmludGYoc3Rkb3V0LCAiKCVkKSBcbiIsIGdldHBpZCgpKTsKKwl9CisKKwlmcHJpbnRmKHN0ZG91dCwgIiVkOiBSZWNlaXZlZCAxMDAwMCBwYWNrZXRzXG4iLCBnZXRwaWQoKSk7CisKKwljbG9zZShmZCk7CisJZXhpdCgwKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmdwKQoreworCWludCBmZCwgZXJyOworCWludCBpOworCisJaWYgKGFyZ2MgIT0gMykgeworCQlmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiAlcyBJTlRFUkZBQ0Uge2hhc2h8bGJ9XG4iLCBhcmdwWzBdKTsKKwkJcmV0dXJuIEVYSVRfRkFJTFVSRTsKKwl9CisKKwlpZiAoIXN0cmNtcChhcmdwWzJdLCAiaGFzaCIpKQorCQlmYW5vdXRfdHlwZSA9IFBBQ0tFVF9GQU5PVVRfSEFTSDsKKwllbHNlIGlmICghc3RyY21wKGFyZ3BbMl0sICJsYiIpKQorCQlmYW5vdXRfdHlwZSA9IFBBQ0tFVF9GQU5PVVRfTEI7CisJZWxzZSB7CisJCWZwcmludGYoc3RkZXJyLCAiVW5rbm93biBmYW5vdXQgdHlwZSBbJXNdXG4iLCBhcmdwWzJdKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKworCWRldmljZV9uYW1lID0gYXJncFsxXTsKKwlmYW5vdXRfaWQgPSBnZXRwaWQoKSAmIDB4ZmZmZjsKKworCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKKwkJcGlkX3QgcGlkID0gZm9yaygpOworCisJCXN3aXRjaCAocGlkKSB7CisJCWNhc2UgMDoKKwkJCWZhbm91dF90aHJlYWQoKTsKKworCQljYXNlIC0xOgorCQkJcGVycm9yKCJmb3JrIik7CisJCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJCX0KKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CisJCWludCBzdGF0dXM7CisKKwkJd2FpdCgmc3RhdHVzKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyBBRl9QQUNLRVQgVFBBQ0tFVF9WMyBleGFtcGxlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FGX1BBQ0tFVCdzIFRQQUNLRVRfVjMgcmluZyBidWZmZXIgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gdXNlIG5vbi1zdGF0aWMgZnJhbWUKK3NpemVzIGJ5IGRvaW5nIGl0J3Mgb3duIG1lbW9yeSBtYW5hZ2VtZW50LiBJdCBpcyBiYXNlZCBvbiBibG9ja3Mgd2hlcmUgcG9sbGluZword29ya3Mgb24gYSBwZXIgYmxvY2sgYmFzaXMgaW5zdGVhZCBvZiBwZXIgcmluZyBhcyBpbiBUUEFDS0VUX1YyIGFuZCBwcmVkZWNlc3Nvci4KKworSXQgaXMgc2FpZCB0aGF0IFRQQUNLRVRfVjMgYnJpbmdzIHRoZSBmb2xsb3dpbmcgYmVuZWZpdHM6CisgKikgfjE1IC0gMjAlIHJlZHVjdGlvbiBpbiBDUFUtdXNhZ2UKKyAqKSB+MjAlIGluY3JlYXNlIGluIHBhY2tldCBjYXB0dXJlIHJhdGUKKyAqKSB+MnggaW5jcmVhc2UgaW4gcGFja2V0IGRlbnNpdHkKKyAqKSBQb3J0IGFnZ3JlZ2F0aW9uIGFuYWx5c2lzCisgKikgTm9uIHN0YXRpYyBmcmFtZSBzaXplIHRvIGNhcHR1cmUgZW50aXJlIHBhY2tldCBwYXlsb2FkCisKK1NvIGl0IHNlZW1zIHRvIGJlIGEgZ29vZCBjYW5kaWRhdGUgdG8gYmUgdXNlZCB3aXRoIHBhY2tldCBmYW5vdXQuCisKK01pbmltYWwgZXhhbXBsZSBjb2RlIGJ5IERhbmllbCBCb3JrbWFubiBiYXNlZCBvbiBDaGV0YW4gTG9rZSdzIGxvbHBjYXAgKGNvbXBpbGUKK2l0IHdpdGggZ2NjIC1XYWxsIC1PMiBibG9iLmMsIGFuZCB0cnkgdGhpbmdzIGxpa2UgIi4vYS5vdXQgZXRoMCIsIGV0Yy4pOgorCisvKiBXcml0dGVuIGZyb20gc2NyYXRjaCwgYnV0IGtlcm5lbC10by11c2VyIHNwYWNlIEFQSSB1c2FnZQorICogZGlzc2VjdGVkIGZyb20gbG9scGNhcDoKKyAqICBDb3B5cmlnaHQgMjAxMSwgQ2hldGFuIExva2UgPGxva2UuY2hldGFuQGdtYWlsLmNvbT4KKyAqICBMaWNlbnNlOiBHUEwsIHZlcnNpb24gMi4wCisgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8bmV0L2lmLmg+CisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjaW5jbHVkZSA8bmV0ZGIuaD4KKyNpbmNsdWRlIDxwb2xsLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyNpbmNsdWRlIDxsaW51eC9pZl9wYWNrZXQuaD4KKyNpbmNsdWRlIDxsaW51eC9pZl9ldGhlci5oPgorI2luY2x1ZGUgPGxpbnV4L2lwLmg+CisKKyNpZm5kZWYgbGlrZWx5CisjIGRlZmluZSBsaWtlbHkoeCkJCV9fYnVpbHRpbl9leHBlY3QoISEoeCksIDEpCisjZW5kaWYKKyNpZm5kZWYgdW5saWtlbHkKKyMgZGVmaW5lIHVubGlrZWx5KHgpCQlfX2J1aWx0aW5fZXhwZWN0KCEhKHgpLCAwKQorI2VuZGlmCisKK3N0cnVjdCBibG9ja19kZXNjIHsKKwl1aW50MzJfdCB2ZXJzaW9uOworCXVpbnQzMl90IG9mZnNldF90b19wcml2OworCXN0cnVjdCB0cGFja2V0X2hkcl92MSBoMTsKK307CisKK3N0cnVjdCByaW5nIHsKKwlzdHJ1Y3QgaW92ZWMgKnJkOworCXVpbnQ4X3QgKm1hcDsKKwlzdHJ1Y3QgdHBhY2tldF9yZXEzIHJlcTsKK307CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nIHBhY2tldHNfdG90YWwgPSAwLCBieXRlc190b3RhbCA9IDA7CitzdGF0aWMgc2lnX2F0b21pY190IHNpZ2ludCA9IDA7CisKK3N0YXRpYyB2b2lkIHNpZ2hhbmRsZXIoaW50IG51bSkKK3sKKwlzaWdpbnQgPSAxOworfQorCitzdGF0aWMgaW50IHNldHVwX3NvY2tldChzdHJ1Y3QgcmluZyAqcmluZywgY2hhciAqbmV0ZGV2KQoreworCWludCBlcnIsIGksIGZkLCB2ID0gVFBBQ0tFVF9WMzsKKwlzdHJ1Y3Qgc29ja2FkZHJfbGwgbGw7CisJdW5zaWduZWQgaW50IGJsb2Nrc2l6ID0gMSA8PCAyMiwgZnJhbWVzaXogPSAxIDw8IDExOworCXVuc2lnbmVkIGludCBibG9ja251bSA9IDY0OworCisJZmQgPSBzb2NrZXQoQUZfUEFDS0VULCBTT0NLX1JBVywgaHRvbnMoRVRIX1BfQUxMKSk7CisJaWYgKGZkIDwgMCkgeworCQlwZXJyb3IoInNvY2tldCIpOworCQlleGl0KDEpOworCX0KKworCWVyciA9IHNldHNvY2tvcHQoZmQsIFNPTF9QQUNLRVQsIFBBQ0tFVF9WRVJTSU9OLCAmdiwgc2l6ZW9mKHYpKTsKKwlpZiAoZXJyIDwgMCkgeworCQlwZXJyb3IoInNldHNvY2tvcHQiKTsKKwkJZXhpdCgxKTsKKwl9CisKKwltZW1zZXQoJnJpbmctPnJlcSwgMCwgc2l6ZW9mKHJpbmctPnJlcSkpOworCXJpbmctPnJlcS50cF9ibG9ja19zaXplID0gYmxvY2tzaXo7CisJcmluZy0+cmVxLnRwX2ZyYW1lX3NpemUgPSBmcmFtZXNpejsKKwlyaW5nLT5yZXEudHBfYmxvY2tfbnIgPSBibG9ja251bTsKKwlyaW5nLT5yZXEudHBfZnJhbWVfbnIgPSAoYmxvY2tzaXogKiBibG9ja251bSkgLyBmcmFtZXNpejsKKwlyaW5nLT5yZXEudHBfcmV0aXJlX2Jsa190b3YgPSA2MDsKKwlyaW5nLT5yZXEudHBfZmVhdHVyZV9yZXFfd29yZCA9IFRQX0ZUX1JFUV9GSUxMX1JYSEFTSDsKKworCWVyciA9IHNldHNvY2tvcHQoZmQsIFNPTF9QQUNLRVQsIFBBQ0tFVF9SWF9SSU5HLCAmcmluZy0+cmVxLAorCQkJIHNpemVvZihyaW5nLT5yZXEpKTsKKwlpZiAoZXJyIDwgMCkgeworCQlwZXJyb3IoInNldHNvY2tvcHQiKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlyaW5nLT5tYXAgPSBtbWFwKE5VTEwsIHJpbmctPnJlcS50cF9ibG9ja19zaXplICogcmluZy0+cmVxLnRwX2Jsb2NrX25yLAorCQkJIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1BUF9TSEFSRUQgfCBNQVBfTE9DS0VELCBmZCwgMCk7CisJaWYgKHJpbmctPm1hcCA9PSBNQVBfRkFJTEVEKSB7CisJCXBlcnJvcigibW1hcCIpOworCQlleGl0KDEpOworCX0KKworCXJpbmctPnJkID0gbWFsbG9jKHJpbmctPnJlcS50cF9ibG9ja19uciAqIHNpemVvZigqcmluZy0+cmQpKTsKKwlhc3NlcnQocmluZy0+cmQpOworCWZvciAoaSA9IDA7IGkgPCByaW5nLT5yZXEudHBfYmxvY2tfbnI7ICsraSkgeworCQlyaW5nLT5yZFtpXS5pb3ZfYmFzZSA9IHJpbmctPm1hcCArIChpICogcmluZy0+cmVxLnRwX2Jsb2NrX3NpemUpOworCQlyaW5nLT5yZFtpXS5pb3ZfbGVuID0gcmluZy0+cmVxLnRwX2Jsb2NrX3NpemU7CisJfQorCisJbWVtc2V0KCZsbCwgMCwgc2l6ZW9mKGxsKSk7CisJbGwuc2xsX2ZhbWlseSA9IFBGX1BBQ0tFVDsKKwlsbC5zbGxfcHJvdG9jb2wgPSBodG9ucyhFVEhfUF9BTEwpOworCWxsLnNsbF9pZmluZGV4ID0gaWZfbmFtZXRvaW5kZXgobmV0ZGV2KTsKKwlsbC5zbGxfaGF0eXBlID0gMDsKKwlsbC5zbGxfcGt0dHlwZSA9IDA7CisJbGwuc2xsX2hhbGVuID0gMDsKKworCWVyciA9IGJpbmQoZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJmxsLCBzaXplb2YobGwpKTsKKwlpZiAoZXJyIDwgMCkgeworCQlwZXJyb3IoImJpbmQiKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlyZXR1cm4gZmQ7Cit9CisKK3N0YXRpYyB2b2lkIGRpc3BsYXkoc3RydWN0IHRwYWNrZXQzX2hkciAqcHBkKQoreworCXN0cnVjdCBldGhoZHIgKmV0aCA9IChzdHJ1Y3QgZXRoaGRyICopICgodWludDhfdCAqKSBwcGQgKyBwcGQtPnRwX21hYyk7CisJc3RydWN0IGlwaGRyICppcCA9IChzdHJ1Y3QgaXBoZHIgKikgKCh1aW50OF90ICopIGV0aCArIEVUSF9ITEVOKTsKKworCWlmIChldGgtPmhfcHJvdG8gPT0gaHRvbnMoRVRIX1BfSVApKSB7CisJCXN0cnVjdCBzb2NrYWRkcl9pbiBzcywgc2Q7CisJCWNoYXIgc2J1ZmZbTklfTUFYSE9TVF0sIGRidWZmW05JX01BWEhPU1RdOworCisJCW1lbXNldCgmc3MsIDAsIHNpemVvZihzcykpOworCQlzcy5zaW5fZmFtaWx5ID0gUEZfSU5FVDsKKwkJc3Muc2luX2FkZHIuc19hZGRyID0gaXAtPnNhZGRyOworCQlnZXRuYW1laW5mbygoc3RydWN0IHNvY2thZGRyICopICZzcywgc2l6ZW9mKHNzKSwKKwkJCSAgICBzYnVmZiwgc2l6ZW9mKHNidWZmKSwgTlVMTCwgMCwgTklfTlVNRVJJQ0hPU1QpOworCisJCW1lbXNldCgmc2QsIDAsIHNpemVvZihzZCkpOworCQlzZC5zaW5fZmFtaWx5ID0gUEZfSU5FVDsKKwkJc2Quc2luX2FkZHIuc19hZGRyID0gaXAtPmRhZGRyOworCQlnZXRuYW1laW5mbygoc3RydWN0IHNvY2thZGRyICopICZzZCwgc2l6ZW9mKHNkKSwKKwkJCSAgICBkYnVmZiwgc2l6ZW9mKGRidWZmKSwgTlVMTCwgMCwgTklfTlVNRVJJQ0hPU1QpOworCisJCXByaW50ZigiJXMgLT4gJXMsICIsIHNidWZmLCBkYnVmZik7CisJfQorCisJcHJpbnRmKCJyeGhhc2g6IDB4JXhcbiIsIHBwZC0+aHYxLnRwX3J4aGFzaCk7Cit9CisKK3N0YXRpYyB2b2lkIHdhbGtfYmxvY2soc3RydWN0IGJsb2NrX2Rlc2MgKnBiZCwgY29uc3QgaW50IGJsb2NrX251bSkKK3sKKwlpbnQgbnVtX3BrdHMgPSBwYmQtPmgxLm51bV9wa3RzLCBpOworCXVuc2lnbmVkIGxvbmcgYnl0ZXMgPSAwOworCXN0cnVjdCB0cGFja2V0M19oZHIgKnBwZDsKKworCXBwZCA9IChzdHJ1Y3QgdHBhY2tldDNfaGRyICopICgodWludDhfdCAqKSBwYmQgKworCQkJCSAgICAgICBwYmQtPmgxLm9mZnNldF90b19maXJzdF9wa3QpOworCWZvciAoaSA9IDA7IGkgPCBudW1fcGt0czsgKytpKSB7CisJCWJ5dGVzICs9IHBwZC0+dHBfc25hcGxlbjsKKwkJZGlzcGxheShwcGQpOworCisJCXBwZCA9IChzdHJ1Y3QgdHBhY2tldDNfaGRyICopICgodWludDhfdCAqKSBwcGQgKworCQkJCQkgICAgICAgcHBkLT50cF9uZXh0X29mZnNldCk7CisJfQorCisJcGFja2V0c190b3RhbCArPSBudW1fcGt0czsKKwlieXRlc190b3RhbCArPSBieXRlczsKK30KKworc3RhdGljIHZvaWQgZmx1c2hfYmxvY2soc3RydWN0IGJsb2NrX2Rlc2MgKnBiZCkKK3sKKwlwYmQtPmgxLmJsb2NrX3N0YXR1cyA9IFRQX1NUQVRVU19LRVJORUw7Cit9CisKK3N0YXRpYyB2b2lkIHRlYXJkb3duX3NvY2tldChzdHJ1Y3QgcmluZyAqcmluZywgaW50IGZkKQoreworCW11bm1hcChyaW5nLT5tYXAsIHJpbmctPnJlcS50cF9ibG9ja19zaXplICogcmluZy0+cmVxLnRwX2Jsb2NrX25yKTsKKwlmcmVlKHJpbmctPnJkKTsKKwljbG9zZShmZCk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJncCkKK3sKKwlpbnQgZmQsIGVycjsKKwlzb2NrbGVuX3QgbGVuOworCXN0cnVjdCByaW5nIHJpbmc7CisJc3RydWN0IHBvbGxmZCBwZmQ7CisJdW5zaWduZWQgaW50IGJsb2NrX251bSA9IDAsIGJsb2NrcyA9IDY0OworCXN0cnVjdCBibG9ja19kZXNjICpwYmQ7CisJc3RydWN0IHRwYWNrZXRfc3RhdHNfdjMgc3RhdHM7CisKKwlpZiAoYXJnYyAhPSAyKSB7CisJCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzIElOVEVSRkFDRVxuIiwgYXJncFswXSk7CisJCXJldHVybiBFWElUX0ZBSUxVUkU7CisJfQorCisJc2lnbmFsKFNJR0lOVCwgc2lnaGFuZGxlcik7CisKKwltZW1zZXQoJnJpbmcsIDAsIHNpemVvZihyaW5nKSk7CisJZmQgPSBzZXR1cF9zb2NrZXQoJnJpbmcsIGFyZ3BbYXJnYyAtIDFdKTsKKwlhc3NlcnQoZmQgPiAwKTsKKworCW1lbXNldCgmcGZkLCAwLCBzaXplb2YocGZkKSk7CisJcGZkLmZkID0gZmQ7CisJcGZkLmV2ZW50cyA9IFBPTExJTiB8IFBPTExFUlI7CisJcGZkLnJldmVudHMgPSAwOworCisJd2hpbGUgKGxpa2VseSghc2lnaW50KSkgeworCQlwYmQgPSAoc3RydWN0IGJsb2NrX2Rlc2MgKikgcmluZy5yZFtibG9ja19udW1dLmlvdl9iYXNlOworCisJCWlmICgocGJkLT5oMS5ibG9ja19zdGF0dXMgJiBUUF9TVEFUVVNfVVNFUikgPT0gMCkgeworCQkJcG9sbCgmcGZkLCAxLCAtMSk7CisJCQljb250aW51ZTsKKwkJfQorCisJCXdhbGtfYmxvY2socGJkLCBibG9ja19udW0pOworCQlmbHVzaF9ibG9jayhwYmQpOworCQlibG9ja19udW0gPSAoYmxvY2tfbnVtICsgMSkgJSBibG9ja3M7CisJfQorCisJbGVuID0gc2l6ZW9mKHN0YXRzKTsKKwllcnIgPSBnZXRzb2Nrb3B0KGZkLCBTT0xfUEFDS0VULCBQQUNLRVRfU1RBVElTVElDUywgJnN0YXRzLCAmbGVuKTsKKwlpZiAoZXJyIDwgMCkgeworCQlwZXJyb3IoImdldHNvY2tvcHQiKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlmZmx1c2goc3Rkb3V0KTsKKwlwcmludGYoIlxuUmVjZWl2ZWQgJXUgcGFja2V0cywgJWx1IGJ5dGVzLCAldSBkcm9wcGVkLCBmcmVlemVfcV9jbnQ6ICV1XG4iLAorCSAgICAgICBzdGF0cy50cF9wYWNrZXRzLCBieXRlc190b3RhbCwgc3RhdHMudHBfZHJvcHMsCisJICAgICAgIHN0YXRzLnRwX2ZyZWV6ZV9xX2NudCk7CisKKwl0ZWFyZG93bl9zb2NrZXQoJnJpbmcsIGZkKTsKKwlyZXR1cm4gMDsKK30KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyBQQUNLRVRfUURJU0NfQllQQVNTCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHRoZXJlIGlzIGEgcmVxdWlyZW1lbnQgdG8gbG9hZCB0aGUgbmV0d29yayB3aXRoIG1hbnkgcGFja2V0cyBpbiBhIHNpbWlsYXIKK2Zhc2hpb24gYXMgcGt0Z2VuIGRvZXMsIHlvdSBtaWdodCBzZXQgdGhlIGZvbGxvd2luZyBvcHRpb24gYWZ0ZXIgc29ja2V0CitjcmVhdGlvbjoKKworICAgIGludCBvbmUgPSAxOworICAgIHNldHNvY2tvcHQoZmQsIFNPTF9QQUNLRVQsIFBBQ0tFVF9RRElTQ19CWVBBU1MsICZvbmUsIHNpemVvZihvbmUpKTsKKworVGhpcyBoYXMgdGhlIHNpZGUtZWZmZWN0LCB0aGF0IHBhY2tldHMgc2VudCB0aHJvdWdoIFBGX1BBQ0tFVCB3aWxsIGJ5cGFzcyB0aGUKK2tlcm5lbCdzIHFkaXNjIGxheWVyIGFuZCBhcmUgZm9yY2VkbHkgcHVzaGVkIHRvIHRoZSBkcml2ZXIgZGlyZWN0bHkuIE1lYW5pbmcsCitwYWNrZXQgYXJlIG5vdCBidWZmZXJlZCwgdGMgZGlzY2lwbGluZXMgYXJlIGlnbm9yZWQsIGluY3JlYXNlZCBsb3NzIGNhbiBvY2N1cgorYW5kIHN1Y2ggcGFja2V0cyBhcmUgYWxzbyBub3QgdmlzaWJsZSB0byBvdGhlciBQRl9QQUNLRVQgc29ja2V0cyBhbnltb3JlLiBTbywKK3lvdSBoYXZlIGJlZW4gd2FybmVkOyBnZW5lcmFsbHksIHRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Igc3RyZXNzIHRlc3RpbmcgdmFyaW91cworY29tcG9uZW50cyBvZiBhIHN5c3RlbS4KKworT24gZGVmYXVsdCwgUEFDS0VUX1FESVNDX0JZUEFTUyBpcyBkaXNhYmxlZCBhbmQgbmVlZHMgdG8gYmUgZXhwbGljaXRseSBlbmFibGVkCitvbiBQRl9QQUNLRVQgc29ja2V0cy4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyBQQUNLRVRfVElNRVNUQU1QCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBQQUNLRVRfVElNRVNUQU1QIHNldHRpbmcgZGV0ZXJtaW5lcyB0aGUgc291cmNlIG9mIHRoZSB0aW1lc3RhbXAgaW4KK3RoZSBwYWNrZXQgbWV0YSBpbmZvcm1hdGlvbiBmb3IgbW1hcCgyKWVkIFJYX1JJTkcgYW5kIFRYX1JJTkdzLiAgSWYgeW91cgorTklDIGlzIGNhcGFibGUgb2YgdGltZXN0YW1waW5nIHBhY2tldHMgaW4gaGFyZHdhcmUsIHlvdSBjYW4gcmVxdWVzdCB0aG9zZQoraGFyZHdhcmUgdGltZXN0YW1wcyB0byBiZSB1c2VkLiBOb3RlOiB5b3UgbWF5IG5lZWQgdG8gZW5hYmxlIHRoZSBnZW5lcmF0aW9uCitvZiBoYXJkd2FyZSB0aW1lc3RhbXBzIHdpdGggU0lPQ1NIV1RTVEFNUCAoc2VlIHJlbGF0ZWQgaW5mb3JtYXRpb24gZnJvbQorRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy50eHQpLgorCitQQUNLRVRfVElNRVNUQU1QIGFjY2VwdHMgdGhlIHNhbWUgaW50ZWdlciBiaXQgZmllbGQgYXMgU09fVElNRVNUQU1QSU5HOgorCisgICAgaW50IHJlcSA9IFNPRl9USU1FU1RBTVBJTkdfUkFXX0hBUkRXQVJFOworICAgIHNldHNvY2tvcHQoZmQsIFNPTF9QQUNLRVQsIFBBQ0tFVF9USU1FU1RBTVAsICh2b2lkICopICZyZXEsIHNpemVvZihyZXEpKQorCitGb3IgdGhlIG1tYXAoMillZCByaW5nIGJ1ZmZlcnMsIHN1Y2ggdGltZXN0YW1wcyBhcmUgc3RvcmVkIGluIHRoZQordHBhY2tldHssMiwzfV9oZHIgc3RydWN0dXJlJ3MgdHBfc2VjIGFuZCB0cF97bix1fXNlYyBtZW1iZXJzLiBUbyBkZXRlcm1pbmUKK3doYXQga2luZCBvZiB0aW1lc3RhbXAgaGFzIGJlZW4gcmVwb3J0ZWQsIHRoZSB0cF9zdGF0dXMgZmllbGQgaXMgYmluYXJ5IHwnZWQKK3dpdGggdGhlIGZvbGxvd2luZyBwb3NzaWJsZSBiaXRzIC4uLgorCisgICAgVFBfU1RBVFVTX1RTX1JBV19IQVJEV0FSRQorICAgIFRQX1NUQVRVU19UU19TT0ZUV0FSRQorCisuLi4gdGhhdCBhcmUgZXF1aXZhbGVudCB0byBpdHMgU09GX1RJTUVTVEFNUElOR18qIGNvdW50ZXJwYXJ0cy4gRm9yIHRoZQorUlhfUklORywgaWYgbmVpdGhlciBpcyBzZXQgKGkuZS4gUEFDS0VUX1RJTUVTVEFNUCBpcyBub3Qgc2V0KSwgdGhlbiBhCitzb2Z0d2FyZSBmYWxsYmFjayB3YXMgaW52b2tlZCAqd2l0aGluKiBQRl9QQUNLRVQncyBwcm9jZXNzaW5nIGNvZGUgKGxlc3MKK3ByZWNpc2UpLgorCitHZXR0aW5nIHRpbWVzdGFtcHMgZm9yIHRoZSBUWF9SSU5HIHdvcmtzIGFzIGZvbGxvd3M6IGkpIGZpbGwgdGhlIHJpbmcgZnJhbWVzLAoraWkpIGNhbGwgc2VuZHRvKCkgZS5nLiBpbiBibG9ja2luZyBtb2RlLCBpaWkpIHdhaXQgZm9yIHN0YXR1cyBvZiByZWxldmFudAorZnJhbWVzIHRvIGJlIHVwZGF0ZWQgcmVzcC4gdGhlIGZyYW1lIGhhbmRlZCBvdmVyIHRvIHRoZSBhcHBsaWNhdGlvbiwgaXYpIHdhbGsKK3Rocm91Z2ggdGhlIGZyYW1lcyB0byBwaWNrIHVwIHRoZSBpbmRpdmlkdWFsIGh3L3N3IHRpbWVzdGFtcHMuCisKK09ubHkgKCEpIGlmIHRyYW5zbWl0IHRpbWVzdGFtcGluZyBpcyBlbmFibGVkLCB0aGVuIHRoZXNlIGJpdHMgYXJlIGNvbWJpbmVkCit3aXRoIGJpbmFyeSB8IHdpdGggVFBfU1RBVFVTX0FWQUlMQUJMRSwgc28geW91IG11c3QgY2hlY2sgZm9yIHRoYXQgaW4geW91cgorYXBwbGljYXRpb24gKGUuZy4gISh0cF9zdGF0dXMgJiAoVFBfU1RBVFVTX1NFTkRfUkVRVUVTVCB8IFRQX1NUQVRVU19TRU5ESU5HKSkKK2luIGEgZmlyc3Qgc3RlcCB0byBzZWUgaWYgdGhlIGZyYW1lIGJlbG9uZ3MgdG8gdGhlIGFwcGxpY2F0aW9uLCBhbmQgdGhlbgorb25lIGNhbiBleHRyYWN0IHRoZSB0eXBlIG9mIHRpbWVzdGFtcCBpbiBhIHNlY29uZCBzdGVwIGZyb20gdHBfc3RhdHVzKSEKKworSWYgeW91IGRvbid0IGNhcmUgYWJvdXQgdGhlbSwgdGh1cyBoYXZpbmcgaXQgZGlzYWJsZWQsIGNoZWNraW5nIGZvcgorVFBfU1RBVFVTX0FWQUlMQUJMRSByZXNwLiBUUF9TVEFUVVNfV1JPTkdfRk9STUFUIGlzIHN1ZmZpY2llbnQuIElmIGluIHRoZQorVFhfUklORyBwYXJ0IG9ubHkgVFBfU1RBVFVTX0FWQUlMQUJMRSBpcyBzZXQsIHRoZW4gdGhlIHRwX3NlYyBhbmQgdHBfe24sdX1zZWMKK21lbWJlcnMgZG8gbm90IGNvbnRhaW4gYSB2YWxpZCB2YWx1ZS4gRm9yIFRYX1JJTkdzLCBieSBkZWZhdWx0IG5vIHRpbWVzdGFtcAoraXMgZ2VuZXJhdGVkIQorCitTZWUgaW5jbHVkZS9saW51eC9uZXRfdHN0YW1wLmggYW5kIERvY3VtZW50YXRpb24vbmV0d29ya2luZy90aW1lc3RhbXBpbmcKK2ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhhcmR3YXJlIHRpbWVzdGFtcHMuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysgTWlzY2VsbGFuZW91cyBiaXRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gUGFja2V0IHNvY2tldHMgd29yayB3ZWxsIHRvZ2V0aGVyIHdpdGggTGludXggc29ja2V0IGZpbHRlcnMsIHRodXMgeW91IGFsc28KKyAgbWlnaHQgd2FudCB0byBoYXZlIGEgbG9vayBhdCBEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZmlsdGVyLnR4dAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyBUSEFOS1MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAKKyAgIEplc3NlIEJyYW5kZWJ1cmcsIGZvciBmaXhpbmcgbXkgZ3JhbW1hdGhpY2FsL3NwZWxsaW5nIGVycm9ycworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGhvbmV0LnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9waG9uZXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMDAzNTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGhvbmV0LnR4dApAQCAtMCwwICsxLDIxNCBAQAorTGludXggUGhvbmV0IHByb3RvY29sIGZhbWlseQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLQorCitQaG9uZXQgaXMgYSBwYWNrZXQgcHJvdG9jb2wgdXNlZCBieSBOb2tpYSBjZWxsdWxhciBtb2RlbXMgZm9yIGJvdGggSVBDCithbmQgUlBDLiBXaXRoIHRoZSBMaW51eCBQaG9uZXQgc29ja2V0IGZhbWlseSwgTGludXggaG9zdCBwcm9jZXNzZXMgY2FuCityZWNlaXZlIGFuZCBzZW5kIG1lc3NhZ2VzIGZyb20vdG8gdGhlIG1vZGVtLCBvciBhbnkgb3RoZXIgZXh0ZXJuYWwKK2RldmljZSBhdHRhY2hlZCB0byB0aGUgbW9kZW0uIFRoZSBtb2RlbSB0YWtlcyBjYXJlIG9mIHJvdXRpbmcuCisKK1Bob25ldCBwYWNrZXRzIGNhbiBiZSBleGNoYW5nZWQgdGhyb3VnaCB2YXJpb3VzIGhhcmR3YXJlIGNvbm5lY3Rpb25zCitkZXBlbmRpbmcgb24gdGhlIGRldmljZSwgc3VjaCBhczoKKyAgLSBVU0Igd2l0aCB0aGUgQ0RDIFBob25ldCBpbnRlcmZhY2UsCisgIC0gaW5mcmFyZWQsCisgIC0gQmx1ZXRvb3RoLAorICAtIGFuIFJTMjMyIHNlcmlhbCBwb3J0ICh3aXRoIGEgZGVkaWNhdGVkICJGQlVTIiBsaW5lIGRpc2NpcGxpbmUpLAorICAtIHRoZSBTU0kgYnVzIHdpdGggc29tZSBUSSBPTUFQIHByb2Nlc3NvcnMuCisKKworUGFja2V0cyBmb3JtYXQKKy0tLS0tLS0tLS0tLS0tCisKK1Bob25ldCBwYWNrZXRzIGhhdmUgYSBjb21tb24gaGVhZGVyIGFzIGZvbGxvd3M6CisKKyAgc3RydWN0IHBob25ldGhkciB7CisgICAgdWludDhfdCAgcG5fbWVkaWE7ICAvKiBNZWRpYSB0eXBlIChsaW5rLWxheWVyIGlkZW50aWZpZXIpICovCisgICAgdWludDhfdCAgcG5fcmRldjsgICAvKiBSZWNlaXZlciBkZXZpY2UgSUQgKi8KKyAgICB1aW50OF90ICBwbl9zZGV2OyAgIC8qIFNlbmRlciBkZXZpY2UgSUQgKi8KKyAgICB1aW50OF90ICBwbl9yZXM7ICAgIC8qIFJlc291cmNlIElEIG9yIGZ1bmN0aW9uICovCisgICAgdWludDE2X3QgcG5fbGVuZ3RoOyAvKiBCaWctZW5kaWFuIG1lc3NhZ2UgYnl0ZSBsZW5ndGggKG1pbnVzIDYpICovCisgICAgdWludDhfdCAgcG5fcm9iajsgICAvKiBSZWNlaXZlciBvYmplY3QgSUQgKi8KKyAgICB1aW50OF90ICBwbl9zb2JqOyAgIC8qIFNlbmRlciBvYmplY3QgSUQgKi8KKyAgfTsKKworT24gTGludXgsIHRoZSBsaW5rLWxheWVyIGhlYWRlciBpbmNsdWRlcyB0aGUgcG5fbWVkaWEgYnl0ZSAoc2VlIGJlbG93KS4KK1RoZSBuZXh0IDcgYnl0ZXMgYXJlIHBhcnQgb2YgdGhlIG5ldHdvcmstbGF5ZXIgaGVhZGVyLgorCitUaGUgZGV2aWNlIElEIGlzIHNwbGl0OiB0aGUgNiBoaWdoZXItb3JkZXIgYml0cyBjb25zdGl0dXRlIHRoZSBkZXZpY2UKK2FkZHJlc3MsIHdoaWxlIHRoZSAyIGxvd2VyLW9yZGVyIGJpdHMgYXJlIHVzZWQgZm9yIG11bHRpcGxleGluZywgYXMgYXJlCit0aGUgOC1iaXQgb2JqZWN0IGlkZW50aWZpZXJzLiBBcyBzdWNoLCBQaG9uZXQgY2FuIGJlIGNvbnNpZGVyZWQgYXMgYQorbmV0d29yayBsYXllciB3aXRoIDYgYml0cyBvZiBhZGRyZXNzIHNwYWNlIGFuZCAxMCBiaXRzIGZvciB0cmFuc3BvcnQKK3Byb3RvY29sIChtdWNoIGxpa2UgcG9ydCBudW1iZXJzIGluIElQIHdvcmxkKS4KKworVGhlIG1vZGVtIGFsd2F5cyBoYXMgYWRkcmVzcyBudW1iZXIgemVyby4gQWxsIG90aGVyIGRldmljZSBoYXZlIGEgdGhlaXIKK293biA2LWJpdCBhZGRyZXNzLgorCisKK0xpbmsgbGF5ZXIKKy0tLS0tLS0tLS0KKworUGhvbmV0IGxpbmtzIGFyZSBhbHdheXMgcG9pbnQtdG8tcG9pbnQgbGlua3MuIFRoZSBsaW5rIGxheWVyIGhlYWRlcgorY29uc2lzdHMgb2YgYSBzaW5nbGUgUGhvbmV0IG1lZGlhIHR5cGUgYnl0ZS4gSXQgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGUKK2xpbmsgdGhyb3VnaCB3aGljaCB0aGUgcGFja2V0IGlzIHRyYW5zbWl0dGVkLCBmcm9tIHRoZSBtb2RlbSdzCitwZXJzcGVjdGl2ZS4gRWFjaCBQaG9uZXQgbmV0d29yayBkZXZpY2Ugc2hhbGwgcHJlcGVuZCBhbmQgc2V0IHRoZSBtZWRpYQordHlwZSBieXRlIGFzIGFwcHJvcHJpYXRlLiBGb3IgY29udmVuaWVuY2UsIGEgY29tbW9uIHBob25ldF9oZWFkZXJfb3BzCitsaW5rLWxheWVyIGhlYWRlciBvcGVyYXRpb25zIHN0cnVjdHVyZSBpcyBwcm92aWRlZC4gSXQgc2V0cyB0aGUKK21lZGlhIHR5cGUgYWNjb3JkaW5nIHRvIHRoZSBuZXR3b3JrIGRldmljZSBoYXJkd2FyZSBhZGRyZXNzLgorCitMaW51eCBQaG9uZXQgbmV0d29yayBpbnRlcmZhY2VzIHN1cHBvcnQgYSBkZWRpY2F0ZWQgbGluayBsYXllciBwYWNrZXRzCit0eXBlIChFVEhfUF9QSE9ORVQpIHdoaWNoIGlzIG91dCBvZiB0aGUgRXRoZXJuZXQgdHlwZSByYW5nZS4gVGhleSBjYW4KK29ubHkgc2VuZCBhbmQgcmVjZWl2ZSBQaG9uZXQgcGFja2V0cy4KKworVGhlIHZpcnR1YWwgVFVOIHR1bm5lbCBkZXZpY2UgZHJpdmVyIGNhbiBhbHNvIGJlIHVzZWQgZm9yIFBob25ldC4gVGhpcworcmVxdWlyZXMgSUZGX1RVTiBtb2RlLCBfd2l0aG91dF8gdGhlIElGRl9OT19QSSBmbGFnLiBJbiB0aGlzIGNhc2UsCit0aGVyZSBpcyBubyBsaW5rLWxheWVyIGhlYWRlciwgc28gdGhlcmUgaXMgbm8gUGhvbmV0IG1lZGlhIHR5cGUgYnl0ZS4KKworTm90ZSB0aGF0IFBob25ldCBpbnRlcmZhY2VzIGFyZSBub3QgYWxsb3dlZCB0byByZS1vcmRlciBwYWNrZXRzLCBzbworb25seSB0aGUgKGRlZmF1bHQpIExpbnV4IEZJRk8gcWRpc2Mgc2hvdWxkIGJlIHVzZWQgd2l0aCB0aGVtLgorCisKK05ldHdvcmsgbGF5ZXIKKy0tLS0tLS0tLS0tLS0KKworVGhlIFBob25ldCBzb2NrZXQgYWRkcmVzcyBmYW1pbHkgbWFwcyB0aGUgUGhvbmV0IHBhY2tldCBoZWFkZXI6CisKKyAgc3RydWN0IHNvY2thZGRyX3BuIHsKKyAgICBzYV9mYW1pbHlfdCBzcG5fZmFtaWx5OyAgICAvKiBBRl9QSE9ORVQgKi8KKyAgICB1aW50OF90ICAgICBzcG5fb2JqOyAgICAgICAvKiBPYmplY3QgSUQgKi8KKyAgICB1aW50OF90ICAgICBzcG5fZGV2OyAgICAgICAvKiBEZXZpY2UgSUQgKi8KKyAgICB1aW50OF90ICAgICBzcG5fcmVzb3VyY2U7ICAvKiBSZXNvdXJjZSBvciBmdW5jdGlvbiAqLworICAgIHVpbnQ4X3QgICAgIHNwbl96ZXJvWy4uLl07IC8qIFBhZGRpbmcgKi8KKyAgfTsKKworVGhlIHJlc291cmNlIGZpZWxkIGlzIG9ubHkgdXNlZCB3aGVuIHNlbmRpbmcgYW5kIHJlY2VpdmluZzsKK0l0IGlzIGlnbm9yZWQgYnkgYmluZCgpIGFuZCBnZXRzb2NrbmFtZSgpLgorCisKK0xvdy1sZXZlbCBkYXRhZ3JhbSBwcm90b2NvbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FwcGxpY2F0aW9ucyBjYW4gc2VuZCBQaG9uZXQgbWVzc2FnZXMgdXNpbmcgdGhlIFBob25ldCBkYXRhZ3JhbSBzb2NrZXQKK3Byb3RvY29sIGZyb20gdGhlIFBGX1BIT05FVCBmYW1pbHkuIEVhY2ggc29ja2V0IGlzIGJvdW5kIHRvIG9uZSBvZiB0aGUKKzJeMTAgb2JqZWN0IElEcyBhdmFpbGFibGUsIGFuZCBjYW4gc2VuZCBhbmQgcmVjZWl2ZSBwYWNrZXRzIHdpdGggYW55CitvdGhlciBwZWVyLgorCisgIHN0cnVjdCBzb2NrYWRkcl9wbiBhZGRyID0geyAuc3BuX2ZhbWlseSA9IEFGX1BIT05FVCwgfTsKKyAgc3NpemVfdCBsZW47CisgIHNvY2tsZW5fdCBhZGRybGVuID0gc2l6ZW9mKGFkZHIpOworICBpbnQgZmQ7CisKKyAgZmQgPSBzb2NrZXQoUEZfUEhPTkVULCBTT0NLX0RHUkFNLCAwKTsKKyAgYmluZChmZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLCBzaXplb2YoYWRkcikpOworICAvKiAuLi4gKi8KKworICBzZW5kdG8oZmQsIG1zZywgbXNnbGVuLCAwLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsIHNpemVvZihhZGRyKSk7CisgIGxlbiA9IHJlY3Zmcm9tKGZkLCBidWYsIHNpemVvZihidWYpLCAwLAorICAgICAgICAgICAgICAgICAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsICZhZGRybGVuKTsKKworVGhpcyBwcm90b2NvbCBmb2xsb3dzIHRoZSBTT0NLX0RHUkFNIGNvbm5lY3Rpb24tbGVzcyBzZW1hbnRpY3MuCitIb3dldmVyLCBjb25uZWN0KCkgYW5kIGdldHBlZXJuYW1lKCkgYXJlIG5vdCBzdXBwb3J0ZWQsIGFzIHRoZXkgZGlkCitub3Qgc2VlbSB1c2VmdWwgd2l0aCBQaG9uZXQgdXNhZ2VzIChjb3VsZCBiZSBhZGRlZCBlYXNpbHkpLgorCisKK1Jlc291cmNlIHN1YnNjcmlwdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgUGhvbmV0IGRhdGFncmFtIHNvY2tldCBjYW4gYmUgc3Vic2NyaWJlZCB0byBhbnkgbnVtYmVyIG9mIDgtYml0cworUGhvbmV0IHJlc291cmNlcywgYXMgZm9sbG93OgorCisgIHVpbnQzMl90IHJlcyA9IDB4WFg7CisgIGlvY3RsKGZkLCBTSU9DUE5BRERSRVNPVVJDRSwgJnJlcyk7CisKK1N1YnNjcmlwdGlvbiBpcyBzaW1pbGFybHkgY2FuY2VsbGVkIHVzaW5nIHRoZSBTSU9DUE5ERUxSRVNPVVJDRSBJL08KK2NvbnRyb2wgcmVxdWVzdCwgb3Igd2hlbiB0aGUgc29ja2V0IGlzIGNsb3NlZC4KKworTm90ZSB0aGF0IG5vIG1vcmUgdGhhbiBvbmUgc29ja2V0IGNhbiBiZSBzdWJjcmliZWQgdG8gYW55IGdpdmVuCityZXNvdXJjZSBhdCBhIHRpbWUuIElmIG5vdCwgaW9jdGwoKSB3aWxsIHJldHVybiBFQlVTWS4KKworCitQaG9uZXQgUGlwZSBwcm90b2NvbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIFBob25ldCBQaXBlIHByb3RvY29sIGlzIGEgc2ltcGxlIHNlcXVlbmNlZCBwYWNrZXRzIHByb3RvY29sCit3aXRoIGVuZC10by1lbmQgY29uZ2VzdGlvbiBjb250cm9sLiBJdCB1c2VzIHRoZSBwYXNzaXZlIGxpc3RlbmluZworc29ja2V0IHBhcmFkaWdtLiBUaGUgbGlzdGVuaW5nIHNvY2tldCBpcyBib3VuZCB0byBhbiB1bmlxdWUgZnJlZSBvYmplY3QKK0lELiBFYWNoIGxpc3RlbmluZyBzb2NrZXQgY2FuIGhhbmRsZSB1cCB0byAyNTUgc2ltdWx0YW5lb3VzCitjb25uZWN0aW9ucywgb25lIHBlciBhY2NlcHQoKSdkIHNvY2tldC4KKworICBpbnQgbGZkLCBjZmQ7CisKKyAgbGZkID0gc29ja2V0KFBGX1BIT05FVCwgU09DS19TRVFQQUNLRVQsIFBOX1BST1RPX1BJUEUpOworICBsaXN0ZW4gKGxmZCwgSU5UX01BWCk7CisKKyAgLyogLi4uICovCisgIGNmZCA9IGFjY2VwdChsZmQsIE5VTEwsIE5VTEwpOworICBmb3IgKDs7KQorICB7CisgICAgY2hhciBidWZbLi4uXTsKKyAgICBzc2l6ZV90IGxlbiA9IHJlYWQoY2ZkLCBidWYsIHNpemVvZihidWYpKTsKKworICAgIC8qIC4uLiAqLworCisgICAgd3JpdGUoY2ZkLCBtc2csIG1zZ2xlbik7CisgIH0KKworQ29ubmVjdGlvbnMgYXJlIHRyYWRpdGlvbmFsbHkgZXN0YWJsaXNoZWQgYmV0d2VlbiB0d28gZW5kcG9pbnRzIGJ5IGEKKyJ0aGlyZCBwYXJ0eSIgYXBwbGljYXRpb24uIFRoaXMgbWVhbnMgdGhhdCBib3RoIGVuZHBvaW50cyBhcmUgcGFzc2l2ZS4KKworCitBcyBvZiBMaW51eCBrZXJuZWwgdmVyc2lvbiAyLjYuMzksIGl0IGlzIGFsc28gcG9zc2libGUgdG8gY29ubmVjdAordHdvIGVuZHBvaW50cyBkaXJlY3RseSwgdXNpbmcgY29ubmVjdCgpIG9uIHRoZSBhY3RpdmUgc2lkZS4gVGhpcyBpcworaW50ZW5kZWQgdG8gc3VwcG9ydCB0aGUgbmV3ZXIgTm9raWEgV2lyZWxlc3MgTW9kZW0gQVBJLCBhcyBmb3VuZCBpbgorZS5nLiB0aGUgTm9raWEgU2xpbSBNb2RlbSBpbiB0aGUgU1QtRXJpY3Nzb24gVTg1MDAgcGxhdGZvcm06CisKKyAgc3RydWN0IHNvY2thZGRyX3NwbiBzcG47CisgIGludCBmZDsKKworICBmZCA9IHNvY2tldChQRl9QSE9ORVQsIFNPQ0tfU0VRUEFDS0VULCBQTl9QUk9UT19QSVBFKTsKKyAgbWVtc2V0KCZzcG4sIDAsIHNpemVvZihzcG4pKTsKKyAgc3BuLnNwbl9mYW1pbHkgPSBBRl9QSE9ORVQ7CisgIHNwbi5zcG5fb2JqID0gLi4uOworICBzcG4uc3BuX2RldiA9IC4uLjsKKyAgc3BuLnNwbl9yZXNvdXJjZSA9IDB4RDk7CisgIGNvbm5lY3QoZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc3BuLCBzaXplb2Yoc3BuKSk7CisgIC8qIG5vcm1hbCBJL08gaGVyZSAuLi4gKi8KKyAgY2xvc2UoZmQpOworCisKK1dBUk5JTkc6CitXaGVuIHBvbGxpbmcgYSBjb25uZWN0ZWQgcGlwZSBzb2NrZXQgZm9yIHdyaXRhYmlsaXR5LCB0aGVyZSBpcyBhbgoraW50cmluc2ljIHJhY2UgY29uZGl0aW9uIHdoZXJlYnkgd3JpdGFiaWxpdHkgbWlnaHQgYmUgbG9zdCBiZXR3ZWVuIHRoZQorcG9sbGluZyBhbmQgdGhlIHdyaXRpbmcgc3lzdGVtIGNhbGxzLiBJbiB0aGlzIGNhc2UsIHRoZSBzb2NrZXQgd2lsbAorYmxvY2sgdW50aWwgd3JpdGUgYmVjb21lcyBwb3NzaWJsZSBhZ2FpbiwgdW5sZXNzIG5vbi1ibG9ja2luZyBtb2RlCitpcyBlbmFibGVkLgorCisKK1RoZSBwaXBlIHByb3RvY29sIHByb3ZpZGVzIHR3byBzb2NrZXQgb3B0aW9ucyBhdCB0aGUgU09MX1BOUElQRSBsZXZlbDoKKworICBQTlBJUEVfRU5DQVAgYWNjZXB0cyBvbmUgaW50ZWdlciB2YWx1ZSAoaW50KSBvZjoKKworICAgIFBOUElQRV9FTkNBUF9OT05FOiBUaGUgc29ja2V0IG9wZXJhdGVzIG5vcm1hbGx5IChkZWZhdWx0KS4KKworICAgIFBOUElQRV9FTkNBUF9JUDogVGhlIHNvY2tldCBpcyB1c2VkIGFzIGEgYmFja2VuZCBmb3IgYSB2aXJ0dWFsIElQCisgICAgICBpbnRlcmZhY2UuIFRoaXMgcmVxdWlyZXMgQ0FQX05FVF9BRE1JTiBjYXBhYmlsaXR5LiBHUFJTIGRhdGEKKyAgICAgIHN1cHBvcnQgb24gTm9raWEgbW9kZW1zIGNhbiB1c2UgdGhpcy4gTm90ZSB0aGF0IHRoZSBzb2NrZXQgY2Fubm90CisgICAgICBiZSByZWxpYWJseSBwb2xsKCknZCBvciByZWFkKCkgZnJvbSB3aGlsZSBpbiB0aGlzIG1vZGUuCisKKyAgUE5QSVBFX0lGSU5ERVggaXMgYSByZWFkLW9ubHkgaW50ZWdlciB2YWx1ZS4gSXQgY29udGFpbnMgdGhlCisgICAgaW50ZXJmYWNlIGluZGV4IG9mIHRoZSBuZXR3b3JrIGludGVyZmFjZSBjcmVhdGVkIGJ5IFBOUElQRV9FTkNBUCwKKyAgICBvciB6ZXJvIGlmIGVuY2Fwc3VsYXRpb24gaXMgb2ZmLgorCisgIFBOUElQRV9IQU5ETEUgaXMgYSByZWFkLW9ubHkgaW50ZWdlciB2YWx1ZS4gSXQgY29udGFpbnMgdGhlIHVuZGVybHlpbmcKKyAgICBpZGVudGlmaWVyICgicGlwZSBoYW5kbGUiKSBvZiB0aGUgcGlwZS4gVGhpcyBpcyBvbmx5IGRlZmluZWQgZm9yCisgICAgc29ja2V0IGRlc2NyaXB0b3JzIHRoYXQgYXJlIGFscmVhZHkgY29ubmVjdGVkIG9yIGJlaW5nIGNvbm5lY3RlZC4KKworCitBdXRob3JzCistLS0tLS0tCisKK0xpbnV4IFBob25ldCB3YXMgaW5pdGlhbGx5IHdyaXR0ZW4gYnkgU2FrYXJpIEFpbHVzLgorT3RoZXIgY29udHJpYnV0b3JzIGluY2x1ZGUgTWlrw6QgTGlsamViZXJnLCBBbmRyYXMgRG9tb2tvcywKK0NhcmxvcyBDaGluZWEgYW5kIFLDqW1pIERlbmlzLUNvdXJtb250LgorQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODM5ZTdlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS50eHQKQEAgLTAsMCArMSwzMzkgQEAKKworLS0tLS0tLQorUEhZIEFic3RyYWN0aW9uIExheWVyCisoVXBkYXRlZCAyMDA4LTA0LTA4KQorCitQdXJwb3NlCisKKyBNb3N0IG5ldHdvcmsgZGV2aWNlcyBjb25zaXN0IG9mIHNldCBvZiByZWdpc3RlcnMgd2hpY2ggcHJvdmlkZSBhbiBpbnRlcmZhY2UKKyB0byBhIE1BQyBsYXllciwgd2hpY2ggY29tbXVuaWNhdGVzIHdpdGggdGhlIHBoeXNpY2FsIGNvbm5lY3Rpb24gdGhyb3VnaCBhCisgUEhZLiAgVGhlIFBIWSBjb25jZXJucyBpdHNlbGYgd2l0aCBuZWdvdGlhdGluZyBsaW5rIHBhcmFtZXRlcnMgd2l0aCB0aGUgbGluaworIHBhcnRuZXIgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIG5ldHdvcmsgY29ubmVjdGlvbiAodHlwaWNhbGx5LCBhbiBldGhlcm5ldAorIGNhYmxlKSwgYW5kIHByb3ZpZGVzIGEgcmVnaXN0ZXIgaW50ZXJmYWNlIHRvIGFsbG93IGRyaXZlcnMgdG8gZGV0ZXJtaW5lIHdoYXQKKyBzZXR0aW5ncyB3ZXJlIGNob3NlbiwgYW5kIHRvIGNvbmZpZ3VyZSB3aGF0IHNldHRpbmdzIGFyZSBhbGxvd2VkLgorCisgV2hpbGUgdGhlc2UgZGV2aWNlcyBhcmUgZGlzdGluY3QgZnJvbSB0aGUgbmV0d29yayBkZXZpY2VzLCBhbmQgY29uZm9ybSB0byBhCisgc3RhbmRhcmQgbGF5b3V0IGZvciB0aGUgcmVnaXN0ZXJzLCBpdCBoYXMgYmVlbiBjb21tb24gcHJhY3RpY2UgdG8gaW50ZWdyYXRlCisgdGhlIFBIWSBtYW5hZ2VtZW50IGNvZGUgd2l0aCB0aGUgbmV0d29yayBkcml2ZXIuICBUaGlzIGhhcyByZXN1bHRlZCBpbiBsYXJnZQorIGFtb3VudHMgb2YgcmVkdW5kYW50IGNvZGUuICBBbHNvLCBvbiBlbWJlZGRlZCBzeXN0ZW1zIHdpdGggbXVsdGlwbGUgKGFuZAorIHNvbWV0aW1lcyBxdWl0ZSBkaWZmZXJlbnQpIGV0aGVybmV0IGNvbnRyb2xsZXJzIGNvbm5lY3RlZCB0byB0aGUgc2FtZSAKKyBtYW5hZ2VtZW50IGJ1cywgaXQgaXMgZGlmZmljdWx0IHRvIGVuc3VyZSBzYWZlIHVzZSBvZiB0aGUgYnVzLgorCisgU2luY2UgdGhlIFBIWXMgYXJlIGRldmljZXMsIGFuZCB0aGUgbWFuYWdlbWVudCBidXNzZXMgdGhyb3VnaCB3aGljaCB0aGV5IGFyZQorIGFjY2Vzc2VkIGFyZSwgaW4gZmFjdCwgYnVzc2VzLCB0aGUgUEhZIEFic3RyYWN0aW9uIExheWVyIHRyZWF0cyB0aGVtIGFzIHN1Y2guCisgSW4gZG9pbmcgc28sIGl0IGhhcyB0aGVzZSBnb2FsczoKKworICAgMSkgSW5jcmVhc2UgY29kZS1yZXVzZQorICAgMikgSW5jcmVhc2Ugb3ZlcmFsbCBjb2RlLW1haW50YWluYWJpbGl0eQorICAgMykgU3BlZWQgZGV2ZWxvcG1lbnQgdGltZSBmb3IgbmV3IG5ldHdvcmsgZHJpdmVycywgYW5kIGZvciBuZXcgc3lzdGVtcworIAorIEJhc2ljYWxseSwgdGhpcyBsYXllciBpcyBtZWFudCB0byBwcm92aWRlIGFuIGludGVyZmFjZSB0byBQSFkgZGV2aWNlcyB3aGljaAorIGFsbG93cyBuZXR3b3JrIGRyaXZlciB3cml0ZXJzIHRvIHdyaXRlIGFzIGxpdHRsZSBjb2RlIGFzIHBvc3NpYmxlLCB3aGlsZQorIHN0aWxsIHByb3ZpZGluZyBhIGZ1bGwgZmVhdHVyZSBzZXQuCisKK1RoZSBNRElPIGJ1cworCisgTW9zdCBuZXR3b3JrIGRldmljZXMgYXJlIGNvbm5lY3RlZCB0byBhIFBIWSBieSBtZWFucyBvZiBhIG1hbmFnZW1lbnQgYnVzLgorIERpZmZlcmVudCBkZXZpY2VzIHVzZSBkaWZmZXJlbnQgYnVzc2VzICh0aG91Z2ggc29tZSBzaGFyZSBjb21tb24gaW50ZXJmYWNlcykuCisgSW4gb3JkZXIgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIFBBTCwgZWFjaCBidXMgaW50ZXJmYWNlIG5lZWRzIHRvIGJlCisgcmVnaXN0ZXJlZCBhcyBhIGRpc3RpbmN0IGRldmljZS4KKworIDEpIHJlYWQgYW5kIHdyaXRlIGZ1bmN0aW9ucyBtdXN0IGJlIGltcGxlbWVudGVkLiAgVGhlaXIgcHJvdG90eXBlcyBhcmU6CisKKyAgICAgaW50IHdyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBtaWlfaWQsIGludCByZWdudW0sIHUxNiB2YWx1ZSk7CisgICAgIGludCByZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBtaWlfaWQsIGludCByZWdudW0pOworCisgICBtaWlfaWQgaXMgdGhlIGFkZHJlc3Mgb24gdGhlIGJ1cyBmb3IgdGhlIFBIWSwgYW5kIHJlZ251bSBpcyB0aGUgcmVnaXN0ZXIKKyAgIG51bWJlci4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZ3VhcmFudGVlZCBub3QgdG8gYmUgY2FsbGVkIGZyb20gaW50ZXJydXB0CisgICB0aW1lLCBzbyBpdCBpcyBzYWZlIGZvciB0aGVtIHRvIGJsb2NrLCB3YWl0aW5nIGZvciBhbiBpbnRlcnJ1cHQgdG8gc2lnbmFsCisgICB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlCisgCisgMikgQSByZXNldCBmdW5jdGlvbiBpcyBvcHRpb25hbC4gIFRoaXMgaXMgdXNlZCB0byByZXR1cm4gdGhlIGJ1cyB0byBhbgorICAgaW5pdGlhbGl6ZWQgc3RhdGUuCisKKyAzKSBBIHByb2JlIGZ1bmN0aW9uIGlzIG5lZWRlZC4gIFRoaXMgZnVuY3Rpb24gc2hvdWxkIHNldCB1cCBhbnl0aGluZyB0aGUgYnVzCisgICBkcml2ZXIgbmVlZHMsIHNldHVwIHRoZSBtaWlfYnVzIHN0cnVjdHVyZSwgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIFBBTCB1c2luZworICAgbWRpb2J1c19yZWdpc3Rlci4gIFNpbWlsYXJseSwgdGhlcmUncyBhIHJlbW92ZSBmdW5jdGlvbiB0byB1bmRvIGFsbCBvZgorICAgdGhhdCAodXNlIG1kaW9idXNfdW5yZWdpc3RlcikuCisgCisgNCkgTGlrZSBhbnkgZHJpdmVyLCB0aGUgZGV2aWNlX2RyaXZlciBzdHJ1Y3R1cmUgbXVzdCBiZSBjb25maWd1cmVkLCBhbmQgaW5pdAorICAgZXhpdCBmdW5jdGlvbnMgYXJlIHVzZWQgdG8gcmVnaXN0ZXIgdGhlIGRyaXZlci4KKworIDUpIFRoZSBidXMgbXVzdCBhbHNvIGJlIGRlY2xhcmVkIHNvbWV3aGVyZSBhcyBhIGRldmljZSwgYW5kIHJlZ2lzdGVyZWQuCisKKyBBcyBhbiBleGFtcGxlIGZvciBob3cgb25lIGRyaXZlciBpbXBsZW1lbnRlZCBhbiBtZGlvIGJ1cyBkcml2ZXIsIHNlZQorIGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc2xfcHFfbWRpby5jIGFuZCBhbiBhc3NvY2lhdGVkIERUUyBmaWxlCisgZm9yIG9uZSBvZiB0aGUgdXNlcnMuIChlLmcuICJnaXQgZ3JlcCBmc2wsLiotbWRpbyBhcmNoL3Bvd2VycGMvYm9vdC9kdHMvIikKKworQ29ubmVjdGluZyB0byBhIFBIWQorCisgU29tZXRpbWUgZHVyaW5nIHN0YXJ0dXAsIHRoZSBuZXR3b3JrIGRyaXZlciBuZWVkcyB0byBlc3RhYmxpc2ggYSBjb25uZWN0aW9uCisgYmV0d2VlbiB0aGUgUEhZIGRldmljZSwgYW5kIHRoZSBuZXR3b3JrIGRldmljZS4gIEF0IHRoaXMgdGltZSwgdGhlIFBIWSdzIGJ1cworIGFuZCBkcml2ZXJzIG5lZWQgdG8gYWxsIGhhdmUgYmVlbiBsb2FkZWQsIHNvIGl0IGlzIHJlYWR5IGZvciB0aGUgY29ubmVjdGlvbi4KKyBBdCB0aGlzIHBvaW50LCB0aGVyZSBhcmUgc2V2ZXJhbCB3YXlzIHRvIGNvbm5lY3QgdG8gdGhlIFBIWToKKworIDEpIFRoZSBQQUwgaGFuZGxlcyBldmVyeXRoaW5nLCBhbmQgb25seSBjYWxscyB0aGUgbmV0d29yayBkcml2ZXIgd2hlbgorICAgdGhlIGxpbmsgc3RhdGUgY2hhbmdlcywgc28gaXQgY2FuIHJlYWN0LgorCisgMikgVGhlIFBBTCBoYW5kbGVzIGV2ZXJ5dGhpbmcgZXhjZXB0IGludGVycnVwdHMgKHVzdWFsbHkgYmVjYXVzZSB0aGUKKyAgIGNvbnRyb2xsZXIgaGFzIHRoZSBpbnRlcnJ1cHQgcmVnaXN0ZXJzKS4KKworIDMpIFRoZSBQQUwgaGFuZGxlcyBldmVyeXRoaW5nLCBidXQgY2hlY2tzIGluIHdpdGggdGhlIGRyaXZlciBldmVyeSBzZWNvbmQsCisgICBhbGxvd2luZyB0aGUgbmV0d29yayBkcml2ZXIgdG8gcmVhY3QgZmlyc3QgdG8gYW55IGNoYW5nZXMgYmVmb3JlIHRoZSBQQUwKKyAgIGRvZXMuCisgCisgNCkgVGhlIFBBTCBzZXJ2ZXMgb25seSBhcyBhIGxpYnJhcnkgb2YgZnVuY3Rpb25zLCB3aXRoIHRoZSBuZXR3b3JrIGRldmljZQorICAgbWFudWFsbHkgY2FsbGluZyBmdW5jdGlvbnMgdG8gdXBkYXRlIHN0YXR1cywgYW5kIGNvbmZpZ3VyZSB0aGUgUEhZCisKKworTGV0dGluZyB0aGUgUEhZIEFic3RyYWN0aW9uIExheWVyIGRvIEV2ZXJ5dGhpbmcKKworIElmIHlvdSBjaG9vc2Ugb3B0aW9uIDEgKFRoZSBob3BlIGlzIHRoYXQgZXZlcnkgZHJpdmVyIGNhbiwgYnV0IHRvIHN0aWxsIGJlCisgdXNlZnVsIHRvIGRyaXZlcnMgdGhhdCBjYW4ndCksIGNvbm5lY3RpbmcgdG8gdGhlIFBIWSBpcyBzaW1wbGU6CisKKyBGaXJzdCwgeW91IG5lZWQgYSBmdW5jdGlvbiB0byByZWFjdCB0byBjaGFuZ2VzIGluIHRoZSBsaW5rIHN0YXRlLiAgVGhpcworIGZ1bmN0aW9uIGZvbGxvd3MgdGhpcyBwcm90b2NvbDoKKworICAgc3RhdGljIHZvaWQgYWRqdXN0X2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CisgCisgTmV4dCwgeW91IG5lZWQgdG8ga25vdyB0aGUgZGV2aWNlIG5hbWUgb2YgdGhlIFBIWSBjb25uZWN0ZWQgdG8gdGhpcyBkZXZpY2UuIAorIFRoZSBuYW1lIHdpbGwgbG9vayBzb21ldGhpbmcgbGlrZSwgIjA6MDAiLCB3aGVyZSB0aGUgZmlyc3QgbnVtYmVyIGlzIHRoZQorIGJ1cyBpZCwgYW5kIHRoZSBzZWNvbmQgaXMgdGhlIFBIWSdzIGFkZHJlc3Mgb24gdGhhdCBidXMuICBUeXBpY2FsbHksCisgdGhlIGJ1cyBpcyByZXNwb25zaWJsZSBmb3IgbWFraW5nIGl0cyBJRCB1bmlxdWUuCisgCisgTm93LCB0byBjb25uZWN0LCBqdXN0IGNhbGwgdGhpcyBmdW5jdGlvbjoKKyAKKyAgIHBoeWRldiA9IHBoeV9jb25uZWN0KGRldiwgcGh5X25hbWUsICZhZGp1c3RfbGluaywgaW50ZXJmYWNlKTsKKworIHBoeWRldiBpcyBhIHBvaW50ZXIgdG8gdGhlIHBoeV9kZXZpY2Ugc3RydWN0dXJlIHdoaWNoIHJlcHJlc2VudHMgdGhlIFBIWS4gIElmCisgcGh5X2Nvbm5lY3QgaXMgc3VjY2Vzc2Z1bCwgaXQgd2lsbCByZXR1cm4gdGhlIHBvaW50ZXIuICBkZXYsIGhlcmUsIGlzIHRoZQorIHBvaW50ZXIgdG8geW91ciBuZXRfZGV2aWNlLiAgT25jZSBkb25lLCB0aGlzIGZ1bmN0aW9uIHdpbGwgaGF2ZSBzdGFydGVkIHRoZQorIFBIWSdzIHNvZnR3YXJlIHN0YXRlIG1hY2hpbmUsIGFuZCByZWdpc3RlcmVkIGZvciB0aGUgUEhZJ3MgaW50ZXJydXB0LCBpZiBpdAorIGhhcyBvbmUuICBUaGUgcGh5ZGV2IHN0cnVjdHVyZSB3aWxsIGJlIHBvcHVsYXRlZCB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZQorIGN1cnJlbnQgc3RhdGUsIHRob3VnaCB0aGUgUEhZIHdpbGwgbm90IHlldCBiZSB0cnVseSBvcGVyYXRpb25hbCBhdCB0aGlzCisgcG9pbnQuCisKKyBQSFktc3BlY2lmaWMgZmxhZ3Mgc2hvdWxkIGJlIHNldCBpbiBwaHlkZXYtPmRldl9mbGFncyBwcmlvciB0byB0aGUgY2FsbAorIHRvIHBoeV9jb25uZWN0KCkgc3VjaCB0aGF0IHRoZSB1bmRlcmx5aW5nIFBIWSBkcml2ZXIgY2FuIGNoZWNrIGZvciBmbGFncworIGFuZCBwZXJmb3JtIHNwZWNpZmljIG9wZXJhdGlvbnMgYmFzZWQgb24gdGhlbS4KKyBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgc3lzdGVtIGhhcyBwdXQgaGFyZHdhcmUgcmVzdHJpY3Rpb25zIG9uCisgdGhlIFBIWS9jb250cm9sbGVyLCBvZiB3aGljaCB0aGUgUEhZIG5lZWRzIHRvIGJlIGF3YXJlLgorCisgaW50ZXJmYWNlIGlzIGEgdTMyIHdoaWNoIHNwZWNpZmllcyB0aGUgY29ubmVjdGlvbiB0eXBlIHVzZWQKKyBiZXR3ZWVuIHRoZSBjb250cm9sbGVyIGFuZCB0aGUgUEhZLiAgRXhhbXBsZXMgYXJlIEdNSUksIE1JSSwKKyBSR01JSSwgYW5kIFNHTUlJLiAgRm9yIGEgZnVsbCBsaXN0LCBzZWUgaW5jbHVkZS9saW51eC9waHkuaAorCisgTm93IGp1c3QgbWFrZSBzdXJlIHRoYXQgcGh5ZGV2LT5zdXBwb3J0ZWQgYW5kIHBoeWRldi0+YWR2ZXJ0aXNpbmcgaGF2ZSBhbnkKKyB2YWx1ZXMgcHJ1bmVkIGZyb20gdGhlbSB3aGljaCBkb24ndCBtYWtlIHNlbnNlIGZvciB5b3VyIGNvbnRyb2xsZXIgKGEgMTAvMTAwCisgY29udHJvbGxlciBtYXkgYmUgY29ubmVjdGVkIHRvIGEgZ2lnYWJpdCBjYXBhYmxlIFBIWSwgc28geW91IHdvdWxkIG5lZWQgdG8KKyBtYXNrIG9mZiBTVVBQT1JURURfMTAwMGJhc2VUKikuICBTZWUgaW5jbHVkZS9saW51eC9ldGh0b29sLmggZm9yIGRlZmluaXRpb25zCisgZm9yIHRoZXNlIGJpdGZpZWxkcy4gTm90ZSB0aGF0IHlvdSBzaG91bGQgbm90IFNFVCBhbnkgYml0cywgb3IgdGhlIFBIWSBtYXkKKyBnZXQgcHV0IGludG8gYW4gdW5zdXBwb3J0ZWQgc3RhdGUuCisKKyBMYXN0bHksIG9uY2UgdGhlIGNvbnRyb2xsZXIgaXMgcmVhZHkgdG8gaGFuZGxlIG5ldHdvcmsgdHJhZmZpYywgeW91IGNhbGwKKyBwaHlfc3RhcnQocGh5ZGV2KS4gIFRoaXMgdGVsbHMgdGhlIFBBTCB0aGF0IHlvdSBhcmUgcmVhZHksIGFuZCBjb25maWd1cmVzIHRoZQorIFBIWSB0byBjb25uZWN0IHRvIHRoZSBuZXR3b3JrLiAgSWYgeW91IHdhbnQgdG8gaGFuZGxlIHlvdXIgb3duIGludGVycnVwdHMsCisganVzdCBzZXQgcGh5ZGV2LT5pcnEgdG8gUEhZX0lHTk9SRV9JTlRFUlJVUFQgYmVmb3JlIHlvdSBjYWxsIHBoeV9zdGFydC4KKyBTaW1pbGFybHksIGlmIHlvdSBkb24ndCB3YW50IHRvIHVzZSBpbnRlcnJ1cHRzLCBzZXQgcGh5ZGV2LT5pcnEgdG8gUEhZX1BPTEwuCisKKyBXaGVuIHlvdSB3YW50IHRvIGRpc2Nvbm5lY3QgZnJvbSB0aGUgbmV0d29yayAoZXZlbiBpZiBqdXN0IGJyaWVmbHkpLCB5b3UgY2FsbAorIHBoeV9zdG9wKHBoeWRldikuCisKK0tlZXBpbmcgQ2xvc2UgVGFicyBvbiB0aGUgUEFMCisKKyBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBQQUwncyBidWlsdC1pbiBzdGF0ZSBtYWNoaW5lIG5lZWRzIGEgbGl0dGxlIGhlbHAgdG8KKyBrZWVwIHlvdXIgbmV0d29yayBkZXZpY2UgYW5kIHRoZSBQSFkgcHJvcGVybHkgaW4gc3luYy4gIElmIHNvLCB5b3UgY2FuCisgcmVnaXN0ZXIgYSBoZWxwZXIgZnVuY3Rpb24gd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBQSFksIHdoaWNoIHdpbGwgYmUgY2FsbGVkCisgZXZlcnkgc2Vjb25kIGJlZm9yZSB0aGUgc3RhdGUgbWFjaGluZSByZWFjdHMgdG8gYW55IGNoYW5nZXMuICBUbyBkbyB0aGlzLCB5b3UKKyBuZWVkIHRvIG1hbnVhbGx5IGNhbGwgcGh5X2F0dGFjaCgpIGFuZCBwaHlfcHJlcGFyZV9saW5rKCksIGFuZCB0aGVuIGNhbGwKKyBwaHlfc3RhcnRfbWFjaGluZSgpIHdpdGggdGhlIHNlY29uZCBhcmd1bWVudCBzZXQgdG8gcG9pbnQgdG8geW91ciBzcGVjaWFsCisgaGFuZGxlci4KKworIEN1cnJlbnRseSB0aGVyZSBhcmUgbm8gZXhhbXBsZXMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uYWxpdHksIGFuZCB0ZXN0aW5nCisgb24gaXQgaGFzIGJlZW4gbGltaXRlZCBiZWNhdXNlIHRoZSBhdXRob3IgZG9lcyBub3QgaGF2ZSBhbnkgZHJpdmVycyB3aGljaCB1c2UKKyBpdCAodGhleSBhbGwgdXNlIG9wdGlvbiAxKS4gIFNvIENhdmVhdCBFbXB0b3IuCisKK0RvaW5nIGl0IGFsbCB5b3Vyc2VsZgorCisgVGhlcmUncyBhIHJlbW90ZSBjaGFuY2UgdGhhdCB0aGUgUEFMJ3MgYnVpbHQtaW4gc3RhdGUgbWFjaGluZSBjYW5ub3QgdHJhY2sKKyB0aGUgY29tcGxleCBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGUgUEhZIGFuZCB5b3VyIG5ldHdvcmsgZGV2aWNlLiAgSWYgdGhpcyBpcworIHNvLCB5b3UgY2FuIHNpbXBseSBjYWxsIHBoeV9hdHRhY2goKSwgYW5kIG5vdCBjYWxsIHBoeV9zdGFydF9tYWNoaW5lIG9yCisgcGh5X3ByZXBhcmVfbGluaygpLiAgVGhpcyB3aWxsIG1lYW4gdGhhdCBwaHlkZXYtPnN0YXRlIGlzIGVudGlyZWx5IHlvdXJzIHRvCisgaGFuZGxlIChwaHlfc3RhcnQgYW5kIHBoeV9zdG9wIHRvZ2dsZSBiZXR3ZWVuIHNvbWUgb2YgdGhlIHN0YXRlcywgc28geW91CisgbWlnaHQgbmVlZCB0byBhdm9pZCB0aGVtKS4KKworIEFuIGVmZm9ydCBoYXMgYmVlbiBtYWRlIHRvIG1ha2Ugc3VyZSB0aGF0IHVzZWZ1bCBmdW5jdGlvbmFsaXR5IGNhbiBiZQorIGFjY2Vzc2VkIHdpdGhvdXQgdGhlIHN0YXRlLW1hY2hpbmUgcnVubmluZywgYW5kIG1vc3Qgb2YgdGhlc2UgZnVuY3Rpb25zIGFyZQorIGRlc2NlbmRlZCBmcm9tIGZ1bmN0aW9ucyB3aGljaCBkaWQgbm90IGludGVyYWN0IHdpdGggYSBjb21wbGV4IHN0YXRlLW1hY2hpbmUuCisgSG93ZXZlciwgYWdhaW4sIG5vIGVmZm9ydCBoYXMgYmVlbiBtYWRlIHNvIGZhciB0byB0ZXN0IHJ1bm5pbmcgd2l0aG91dCB0aGUKKyBzdGF0ZSBtYWNoaW5lLCBzbyB0cnllciBiZXdhcmUuCisKKyBIZXJlIGlzIGEgYnJpZWYgcnVuZG93biBvZiB0aGUgZnVuY3Rpb25zOgorCisgaW50IHBoeV9yZWFkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiByZWdudW0pOworIGludCBwaHlfd3JpdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHJlZ251bSwgdTE2IHZhbCk7CisKKyAgIFNpbXBsZSByZWFkL3dyaXRlIHByaW1pdGl2ZXMuICBUaGV5IGludm9rZSB0aGUgYnVzJ3MgcmVhZC93cml0ZSBmdW5jdGlvbgorICAgcG9pbnRlcnMuCisKKyB2b2lkIHBoeV9wcmludF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CisgCisgICBBIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIHByaW50IG91dCB0aGUgUEhZIHN0YXR1cyBuZWF0bHkuCisKKyBpbnQgcGh5X3N0YXJ0X2ludGVycnVwdHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CisgaW50IHBoeV9zdG9wX2ludGVycnVwdHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldik7CisKKyAgIFJlcXVlc3RzIHRoZSBJUlEgZm9yIHRoZSBQSFkgaW50ZXJydXB0cywgdGhlbiBlbmFibGVzIHRoZW0gZm9yCisgICBzdGFydCwgb3IgZGlzYWJsZXMgdGhlbiBmcmVlcyB0aGVtIGZvciBzdG9wLgorCisgc3RydWN0IHBoeV9kZXZpY2UgKiBwaHlfYXR0YWNoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKnBoeV9pZCwKKwkJIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpOworCisgICBBdHRhY2hlcyBhIG5ldHdvcmsgZGV2aWNlIHRvIGEgcGFydGljdWxhciBQSFksIGJpbmRpbmcgdGhlIFBIWSB0byBhIGdlbmVyaWMKKyAgIGRyaXZlciBpZiBub25lIHdhcyBmb3VuZCBkdXJpbmcgYnVzIGluaXRpYWxpemF0aW9uLgorCisgaW50IHBoeV9zdGFydF9hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpOworICAgCisgICBVc2luZyB2YXJpYWJsZXMgaW5zaWRlIHRoZSBwaHlkZXYgc3RydWN0dXJlLCBlaXRoZXIgY29uZmlndXJlcyBhZHZlcnRpc2luZworICAgYW5kIHJlc2V0cyBhdXRvbmVnb3RpYXRpb24sIG9yIGRpc2FibGVzIGF1dG9uZWdvdGlhdGlvbiwgYW5kIGNvbmZpZ3VyZXMKKyAgIGZvcmNlZCBzZXR0aW5ncy4KKworIHN0YXRpYyBpbmxpbmUgaW50IHBoeV9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KTsKKworICAgRmlsbHMgdGhlIHBoeWRldiBzdHJ1Y3R1cmUgd2l0aCB1cC10by1kYXRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50CisgICBzZXR0aW5ncyBpbiB0aGUgUEhZLgorCisgaW50IHBoeV9ldGh0b29sX3NzZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgc3RydWN0IGV0aHRvb2xfY21kICpjbWQpOworIGludCBwaHlfZXRodG9vbF9nc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHN0cnVjdCBldGh0b29sX2NtZCAqY21kKTsKKworICAgRXRodG9vbCBjb252ZW5pZW5jZSBmdW5jdGlvbnMuCisKKyBpbnQgcGh5X21paV9pb2N0bChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LAorICAgICAgICAgICAgICAgICBzdHJ1Y3QgbWlpX2lvY3RsX2RhdGEgKm1paV9kYXRhLCBpbnQgY21kKTsKKworICAgVGhlIE1JSSBpb2N0bC4gIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgY29tcGxldGVseSBzY3JldyB1cCB0aGUgc3RhdGUKKyAgIG1hY2hpbmUgaWYgeW91IHdyaXRlIHJlZ2lzdGVycyBsaWtlIEJNQ1IsIEJNU1IsIEFEVkVSVElTRSwgZXRjLiAgQmVzdCB0bworICAgdXNlIHRoaXMgb25seSB0byB3cml0ZSByZWdpc3RlcnMgd2hpY2ggYXJlIG5vdCBzdGFuZGFyZCwgYW5kIGRvbid0IHNldCBvZmYKKyAgIGEgcmVuZWdvdGlhdGlvbi4KKworCitQSFkgRGV2aWNlIERyaXZlcnMKKworIFdpdGggdGhlIFBIWSBBYnN0cmFjdGlvbiBMYXllciwgYWRkaW5nIHN1cHBvcnQgZm9yIG5ldyBQSFlzIGlzCisgcXVpdGUgZWFzeS4gIEluIHNvbWUgY2FzZXMsIG5vIHdvcmsgaXMgcmVxdWlyZWQgYXQgYWxsISAgSG93ZXZlciwKKyBtYW55IFBIWXMgcmVxdWlyZSBhIGxpdHRsZSBoYW5kLWhvbGRpbmcgdG8gZ2V0IHVwLWFuZC1ydW5uaW5nLgorCitHZW5lcmljIFBIWSBkcml2ZXIKKworIElmIHRoZSBkZXNpcmVkIFBIWSBkb2Vzbid0IGhhdmUgYW55IGVycmF0YSwgcXVpcmtzLCBvciBzcGVjaWFsCisgZmVhdHVyZXMgeW91IHdhbnQgdG8gc3VwcG9ydCwgdGhlbiBpdCBtYXkgYmUgYmVzdCB0byBub3QgYWRkCisgc3VwcG9ydCwgYW5kIGxldCB0aGUgUEhZIEFic3RyYWN0aW9uIExheWVyJ3MgR2VuZXJpYyBQSFkgRHJpdmVyCisgZG8gYWxsIG9mIHRoZSB3b3JrLiAgCisKK1dyaXRpbmcgYSBQSFkgZHJpdmVyCisKKyBJZiB5b3UgZG8gbmVlZCB0byB3cml0ZSBhIFBIWSBkcml2ZXIsIHRoZSBmaXJzdCB0aGluZyB0byBkbyBpcworIG1ha2Ugc3VyZSBpdCBjYW4gYmUgbWF0Y2hlZCB3aXRoIGFuIGFwcHJvcHJpYXRlIFBIWSBkZXZpY2UuCisgVGhpcyBpcyBkb25lIGR1cmluZyBidXMgaW5pdGlhbGl6YXRpb24gYnkgcmVhZGluZyB0aGUgZGV2aWNlJ3MKKyBVSUQgKHN0b3JlZCBpbiByZWdpc3RlcnMgMiBhbmQgMyksIHRoZW4gY29tcGFyaW5nIGl0IHRvIGVhY2gKKyBkcml2ZXIncyBwaHlfaWQgZmllbGQgYnkgQU5EaW5nIGl0IHdpdGggZWFjaCBkcml2ZXIncworIHBoeV9pZF9tYXNrIGZpZWxkLiAgQWxzbywgaXQgbmVlZHMgYSBuYW1lLiAgSGVyZSdzIGFuIGV4YW1wbGU6CisKKyAgIHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBkbTkxNjFfZHJpdmVyID0geworICAgICAgICAgLnBoeV9pZCAgICAgICAgID0gMHgwMTgxYjg4MCwKKwkgLm5hbWUgICAgICAgICAgID0gIkRhdmljb20gRE05MTYxRSIsCisJIC5waHlfaWRfbWFzayAgICA9IDB4MGZmZmZmZjAsCisJIC4uLgorICAgfQorCisgTmV4dCwgeW91IG5lZWQgdG8gc3BlY2lmeSB3aGF0IGZlYXR1cmVzIChzcGVlZCwgZHVwbGV4LCBhdXRvbmVnLAorIGV0YykgeW91ciBQSFkgZGV2aWNlIGFuZCBkcml2ZXIgc3VwcG9ydC4gIE1vc3QgUEhZcyBzdXBwb3J0CisgUEhZX0JBU0lDX0ZFQVRVUkVTLCBidXQgeW91IGNhbiBsb29rIGluIGluY2x1ZGUvbWlpLmggZm9yIG90aGVyCisgZmVhdHVyZXMuCisKKyBFYWNoIGRyaXZlciBjb25zaXN0cyBvZiBhIG51bWJlciBvZiBmdW5jdGlvbiBwb2ludGVyczoKKworICAgc29mdF9yZXNldDogcGVyZm9ybSBhIFBIWSBzb2Z0d2FyZSByZXNldAorICAgY29uZmlnX2luaXQ6IGNvbmZpZ3VyZXMgUEhZIGludG8gYSBzYW5lIHN0YXRlIGFmdGVyIGEgcmVzZXQuCisgICAgIEZvciBpbnN0YW5jZSwgYSBEYXZpY29tIFBIWSByZXF1aXJlcyBkZXNjcmFtYmxpbmcgZGlzYWJsZWQuCisgICBwcm9iZTogQWxsb2NhdGUgcGh5LT5wcml2LCBvcHRpb25hbGx5IHJlZnVzZSB0byBiaW5kLgorICAgUEhZIG1heSBub3QgaGF2ZSBiZWVuIHJlc2V0IG9yIGhhZCBmaXh1cHMgcnVuIHlldC4KKyAgIHN1c3BlbmQvcmVzdW1lOiBwb3dlciBtYW5hZ2VtZW50CisgICBjb25maWdfYW5lZzogQ2hhbmdlcyB0aGUgc3BlZWQvZHVwbGV4L25lZ290aWF0aW9uIHNldHRpbmdzCisgICBhbmVnX2RvbmU6IERldGVybWluZXMgdGhlIGF1dG8tbmVnb3RpYXRpb24gcmVzdWx0CisgICByZWFkX3N0YXR1czogUmVhZHMgdGhlIGN1cnJlbnQgc3BlZWQvZHVwbGV4L25lZ290aWF0aW9uIHNldHRpbmdzCisgICBhY2tfaW50ZXJydXB0OiBDbGVhciBhIHBlbmRpbmcgaW50ZXJydXB0CisgICBkaWRfaW50ZXJydXB0OiBDaGVja3MgaWYgdGhlIFBIWSBnZW5lcmF0ZWQgYW4gaW50ZXJydXB0CisgICBjb25maWdfaW50cjogRW5hYmxlIG9yIGRpc2FibGUgaW50ZXJydXB0cworICAgcmVtb3ZlOiBEb2VzIGFueSBkcml2ZXIgdGFrZS1kb3duCisgICB0c19pbmZvOiBRdWVyaWVzIGFib3V0IHRoZSBIVyB0aW1lc3RhbXBpbmcgc3RhdHVzCisgICBod3RzdGFtcDogU2V0IHRoZSBQSFkgSFcgdGltZXN0YW1waW5nIGNvbmZpZ3VyYXRpb24KKyAgIHJ4dHN0YW1wOiBSZXF1ZXN0cyBhIHJlY2VpdmUgdGltZXN0YW1wIGF0IHRoZSBQSFkgbGV2ZWwgZm9yIGEgJ3NrYicKKyAgIHR4dHNhbXA6IFJlcXVlc3RzIGEgdHJhbnNtaXQgdGltZXN0YW1wIGF0IHRoZSBQSFkgbGV2ZWwgZm9yIGEgJ3NrYicKKyAgIHNldF93b2w6IEVuYWJsZSBXYWtlLW9uLUxBTiBhdCB0aGUgUEhZIGxldmVsCisgICBnZXRfd29sOiBHZXQgdGhlIFdha2Utb24tTEFOIHN0YXR1cyBhdCB0aGUgUEhZIGxldmVsCisgICByZWFkX21tZF9pbmRpcmVjdDogUmVhZCBQSFkgTU1EIGluZGlyZWN0IHJlZ2lzdGVyCisgICB3cml0ZV9tbWRfaW5kaXJlY3Q6IFdyaXRlIFBIWSBNTUQgaW5kaXJlY3QgcmVnaXN0ZXIKKworIE9mIHRoZXNlLCBvbmx5IGNvbmZpZ19hbmVnIGFuZCByZWFkX3N0YXR1cyBhcmUgcmVxdWlyZWQgdG8gYmUKKyBhc3NpZ25lZCBieSB0aGUgZHJpdmVyIGNvZGUuICBUaGUgcmVzdCBhcmUgb3B0aW9uYWwuICBBbHNvLCBpdCBpcworIHByZWZlcnJlZCB0byB1c2UgdGhlIGdlbmVyaWMgcGh5IGRyaXZlcidzIHZlcnNpb25zIG9mIHRoZXNlIHR3bworIGZ1bmN0aW9ucyBpZiBhdCBhbGwgcG9zc2libGU6IGdlbnBoeV9yZWFkX3N0YXR1cyBhbmQKKyBnZW5waHlfY29uZmlnX2FuZWcuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgaXQgaXMgbGlrZWx5IHRoYXQKKyB5b3Ugb25seSBuZWVkIHRvIHBlcmZvcm0gc29tZSBhY3Rpb25zIGJlZm9yZSBhbmQgYWZ0ZXIgaW52b2tpbmcKKyB0aGVzZSBmdW5jdGlvbnMsIGFuZCBzbyB5b3VyIGZ1bmN0aW9ucyB3aWxsIHdyYXAgdGhlIGdlbmVyaWMKKyBvbmVzLgorCisgRmVlbCBmcmVlIHRvIGxvb2sgYXQgdGhlIE1hcnZlbGwsIENpY2FkYSwgYW5kIERhdmljb20gZHJpdmVycyBpbgorIGRyaXZlcnMvbmV0L3BoeS8gZm9yIGV4YW1wbGVzICh0aGUgbHh0IGFuZCBxc2VtaSBkcml2ZXJzIGhhdmUKKyBub3QgYmVlbiB0ZXN0ZWQgYXMgb2YgdGhpcyB3cml0aW5nKS4KKworIFRoZSBQSFkncyBNTUQgcmVnaXN0ZXIgYWNjZXNzZXMgYXJlIGhhbmRsZWQgYnkgdGhlIFBBTCBmcmFtZXdvcmsKKyBieSBkZWZhdWx0LCBidXQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBzcGVjaWZpYyBQSFkgZHJpdmVyIGlmCisgcmVxdWlyZWQuIFRoaXMgY291bGQgYmUgdGhlIGNhc2UgaWYgYSBQSFkgd2FzIHJlbGVhc2VkIGZvcgorIG1hbnVmYWN0dXJpbmcgYmVmb3JlIHRoZSBNTUQgUEhZIHJlZ2lzdGVyIGRlZmluaXRpb25zIHdlcmUKKyBzdGFuZGFyZGl6ZWQgYnkgdGhlIElFRUUuIE1vc3QgbW9kZXJuIFBIWXMgd2lsbCBiZSBhYmxlIHRvIHVzZQorIHRoZSBnZW5lcmljIFBBTCBmcmFtZXdvcmsgZm9yIGFjY2Vzc2luZyB0aGUgUEhZJ3MgTU1EIHJlZ2lzdGVycy4KKyBBbiBleGFtcGxlIG9mIHN1Y2ggdXNhZ2UgaXMgZm9yIEVuZXJneSBFZmZpY2llbnQgRXRoZXJuZXQgc3VwcG9ydCwKKyBpbXBsZW1lbnRlZCBpbiB0aGUgUEFMLiBUaGlzIHN1cHBvcnQgdXNlcyB0aGUgUEFMIHRvIGFjY2VzcyBNTUQKKyByZWdpc3RlcnMgZm9yIEVFRSBxdWVyeSBhbmQgY29uZmlndXJhdGlvbiBpZiB0aGUgUEhZIHN1cHBvcnRzCisgdGhlIElFRUUgc3RhbmRhcmQgYWNjZXNzIG1lY2hhbmlzbXMsIG9yIGNhbiB1c2UgdGhlIFBIWSdzIHNwZWNpZmljCisgYWNjZXNzIGludGVyZmFjZXMgaWYgb3ZlcnJpZGRlbiBieSB0aGUgc3BlY2lmaWMgUEhZIGRyaXZlci4gU2VlCisgdGhlIE1pY3JlbCBkcml2ZXIgaW4gZHJpdmVycy9uZXQvcGh5LyBmb3IgYW4gZXhhbXBsZSBvZiBob3cgdGhpcworIGNhbiBiZSBpbXBsZW1lbnRlZC4KKworQm9hcmQgRml4dXBzCisKKyBTb21ldGltZXMgdGhlIHNwZWNpZmljIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIHBsYXRmb3JtIGFuZCB0aGUgUEhZIHJlcXVpcmVzCisgc3BlY2lhbCBoYW5kbGluZy4gIEZvciBpbnN0YW5jZSwgdG8gY2hhbmdlIHdoZXJlIHRoZSBQSFkncyBjbG9jayBpbnB1dCBpcywKKyBvciB0byBhZGQgYSBkZWxheSB0byBhY2NvdW50IGZvciBsYXRlbmN5IGlzc3VlcyBpbiB0aGUgZGF0YSBwYXRoLiAgSW4gb3JkZXIKKyB0byBzdXBwb3J0IHN1Y2ggY29udGluZ2VuY2llcywgdGhlIFBIWSBMYXllciBhbGxvd3MgcGxhdGZvcm0gY29kZSB0byByZWdpc3RlcgorIGZpeHVwcyB0byBiZSBydW4gd2hlbiB0aGUgUEhZIGlzIGJyb3VnaHQgdXAgKG9yIHN1YnNlcXVlbnRseSByZXNldCkuCisKKyBXaGVuIHRoZSBQSFkgTGF5ZXIgYnJpbmdzIHVwIGEgUEhZIGl0IGNoZWNrcyB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBmaXh1cHMKKyByZWdpc3RlcmVkIGZvciBpdCwgbWF0Y2hpbmcgYmFzZWQgb24gVUlEIChjb250YWluZWQgaW4gdGhlIFBIWSBkZXZpY2UncyBwaHlfaWQKKyBmaWVsZCkgYW5kIHRoZSBidXMgaWRlbnRpZmllciAoY29udGFpbmVkIGluIHBoeWRldi0+ZGV2LmJ1c19pZCkuICBCb3RoIG11c3QKKyBtYXRjaCwgaG93ZXZlciB0d28gY29uc3RhbnRzLCBQSFlfQU5ZX0lEIGFuZCBQSFlfQU5ZX1VJRCwgYXJlIHByb3ZpZGVkIGFzCisgd2lsZGNhcmRzIGZvciB0aGUgYnVzIElEIGFuZCBVSUQsIHJlc3BlY3RpdmVseS4KKworIFdoZW4gYSBtYXRjaCBpcyBmb3VuZCwgdGhlIFBIWSBsYXllciB3aWxsIGludm9rZSB0aGUgcnVuIGZ1bmN0aW9uIGFzc29jaWF0ZWQKKyB3aXRoIHRoZSBmaXh1cC4gIFRoaXMgZnVuY3Rpb24gaXMgcGFzc2VkIGEgcG9pbnRlciB0byB0aGUgcGh5X2RldmljZSBvZgorIGludGVyZXN0LiAgSXQgc2hvdWxkIHRoZXJlZm9yZSBvbmx5IG9wZXJhdGUgb24gdGhhdCBQSFkuCisKKyBUaGUgcGxhdGZvcm0gY29kZSBjYW4gZWl0aGVyIHJlZ2lzdGVyIHRoZSBmaXh1cCB1c2luZyBwaHlfcmVnaXN0ZXJfZml4dXAoKToKKworCWludCBwaHlfcmVnaXN0ZXJfZml4dXAoY29uc3QgY2hhciAqcGh5X2lkLAorCQl1MzIgcGh5X3VpZCwgdTMyIHBoeV91aWRfbWFzaywKKwkJaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7CisKKyBPciB1c2luZyBvbmUgb2YgdGhlIHR3byBzdHVicywgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQoKSBhbmQKKyBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKCk6CisKKyBpbnQgcGh5X3JlZ2lzdGVyX2ZpeHVwX2Zvcl91aWQodTMyIHBoeV91aWQsIHUzMiBwaHlfdWlkX21hc2ssCisJCWludCAoKnJ1bikoc3RydWN0IHBoeV9kZXZpY2UgKikpOworIGludCBwaHlfcmVnaXN0ZXJfZml4dXBfZm9yX2lkKGNvbnN0IGNoYXIgKnBoeV9pZCwKKwkJaW50ICgqcnVuKShzdHJ1Y3QgcGh5X2RldmljZSAqKSk7CisKKyBUaGUgc3R1YnMgc2V0IG9uZSBvZiB0aGUgdHdvIG1hdGNoaW5nIGNyaXRlcmlhLCBhbmQgc2V0IHRoZSBvdGhlciBvbmUgdG8KKyBtYXRjaCBhbnl0aGluZy4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BrdGdlbi50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGt0Z2VuLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGJlODVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BrdGdlbi50eHQKQEAgLTAsMCArMSwzOTEgQEAKKworCisgICAgICAgICAgICAgICAgICBIT1dUTyBmb3IgdGhlIGxpbnV4IHBhY2tldCBnZW5lcmF0b3IKKyAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFbmFibGUgQ09ORklHX05FVF9QS1RHRU4gdG8gY29tcGlsZSBhbmQgYnVpbGQgcGt0Z2VuIGVpdGhlciBpbi1rZXJuZWwKK29yIGFzIGEgbW9kdWxlLiAgQSBtb2R1bGUgaXMgcHJlZmVycmVkOyBtb2Rwcm9iZSBwa3RnZW4gaWYgbmVlZGVkLiAgT25jZQorcnVubmluZywgcGt0Z2VuIGNyZWF0ZXMgYSB0aHJlYWQgZm9yIGVhY2ggQ1BVIHdpdGggYWZmaW5pdHkgdG8gdGhhdCBDUFUuCitNb25pdG9yaW5nIGFuZCBjb250cm9sbGluZyBpcyBkb25lIHZpYSAvcHJvYy4gIEl0IGlzIGVhc2llc3QgdG8gc2VsZWN0IGEKK3N1aXRhYmxlIHNhbXBsZSBzY3JpcHQgYW5kIGNvbmZpZ3VyZSB0aGF0LgorCitPbiBhIGR1YWwgQ1BVOgorCitwcyBhdXggfCBncmVwIHBrdAorcm9vdCAgICAgICAxMjkgIDAuMyAgMC4wICAgICAwICAgIDAgPyAgICAgICAgU1cgICAgMjAwMyA1MjM6MjAgW3BrdGdlbi8wXQorcm9vdCAgICAgICAxMzAgIDAuMyAgMC4wICAgICAwICAgIDAgPyAgICAgICAgU1cgICAgMjAwMyA1MDk6NTAgW3BrdGdlbi8xXQorCisKK0ZvciBtb25pdG9yaW5nIGFuZCBjb250cm9sIHBrdGdlbiBjcmVhdGVzOgorCS9wcm9jL25ldC9wa3RnZW4vcGdjdHJsCisJL3Byb2MvbmV0L3BrdGdlbi9rcGt0Z2VuZF9YCisgICAgICAgIC9wcm9jL25ldC9wa3RnZW4vZXRoWAorCisKK1R1bmluZyBOSUMgZm9yIG1heCBwZXJmb3JtYW5jZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBkZWZhdWx0IE5JQyBzZXR0aW5ncyBhcmUgKGxpa2VseSkgbm90IHR1bmVkIGZvciBwa3RnZW4ncyBhcnRpZmljaWFsCitvdmVybG9hZCB0eXBlIG9mIGJlbmNobWFya2luZywgYXMgdGhpcyBjb3VsZCBodXJ0IHRoZSBub3JtYWwgdXNlLWNhc2UuCisKK1NwZWNpZmljYWxseSBpbmNyZWFzaW5nIHRoZSBUWCByaW5nIGJ1ZmZlciBpbiB0aGUgTklDOgorICMgZXRodG9vbCAtRyBldGhYIHR4IDEwMjQKKworQSBsYXJnZXIgVFggcmluZyBjYW4gaW1wcm92ZSBwa3RnZW4ncyBwZXJmb3JtYW5jZSwgd2hpbGUgaXQgY2FuIGh1cnQKK2luIHRoZSBnZW5lcmFsIGNhc2UsIDEpIGJlY2F1c2UgdGhlIFRYIHJpbmcgYnVmZmVyIG1pZ2h0IGdldCBsYXJnZXIKK3RoYW4gdGhlIENQVSdzIEwxL0wyIGNhY2hlLCAyKSBiZWNhdXNlIGl0IGFsbG93cyBtb3JlIHF1ZXVlaW5nIGluIHRoZQorTklDIEhXIGxheWVyICh3aGljaCBpcyBiYWQgZm9yIGJ1ZmZlcmJsb2F0KS4KKworT25lIHNob3VsZCBoZXNpdGF0ZSB0byBjb25jbHVkZSB0aGF0IHBhY2tldHMvZGVzY3JpcHRvcnMgaW4gdGhlIEhXCitUWCByaW5nIGNhdXNlIGRlbGF5LiAgRHJpdmVycyB1c3VhbGx5IGRlbGF5IGNsZWFuaW5nIHVwIHRoZQorcmluZy1idWZmZXJzIGZvciB2YXJpb3VzIHBlcmZvcm1hbmNlIHJlYXNvbnMsIGFuZCBwYWNrZXRzIHN0YWxsaW5nCit0aGUgVFggcmluZyBtaWdodCBqdXN0IGJlIHdhaXRpbmcgZm9yIGNsZWFudXAuCisKK1RoaXMgY2xlYW51cCBpc3N1ZSBpcyBzcGVjaWZpY2FsbHkgdGhlIGNhc2UgZm9yIHRoZSBkcml2ZXIgaXhnYmUKKyhJbnRlbCA4MjU5OSBjaGlwKS4gIFRoaXMgZHJpdmVyIChpeGdiZSkgY29tYmluZXMgVFgrUlggcmluZyBjbGVhbnVwcywKK2FuZCB0aGUgY2xlYW51cCBpbnRlcnZhbCBpcyBhZmZlY3RlZCBieSB0aGUgZXRodG9vbCAtLWNvYWxlc2NlIHNldHRpbmcKK29mIHBhcmFtZXRlciAicngtdXNlY3MiLgorCitGb3IgaXhnYmUgdXNlIGUuZy4gIjMwIiByZXN1bHRpbmcgaW4gYXBwcm94IDMzSyBpbnRlcnJ1cHRzL3NlYyAoMS8zMCoxMF42KToKKyAjIGV0aHRvb2wgLUMgZXRoWCByeC11c2VjcyAzMAorCisKK0tlcm5lbCB0aHJlYWRzCis9PT09PT09PT09PT09PQorUGt0Z2VuIGNyZWF0ZXMgYSB0aHJlYWQgZm9yIGVhY2ggQ1BVIHdpdGggYWZmaW5pdHkgdG8gdGhhdCBDUFUuCitXaGljaCBpcyBjb250cm9sbGVkIHRocm91Z2ggcHJvY2ZpbGUgL3Byb2MvbmV0L3BrdGdlbi9rcGt0Z2VuZF9YLgorCitFeGFtcGxlOiAvcHJvYy9uZXQvcGt0Z2VuL2twa3RnZW5kXzAKKworIFJ1bm5pbmc6CisgU3RvcHBlZDogZXRoNEAwCisgUmVzdWx0OiBPSzogYWRkX2RldmljZT1ldGg0QDAKKworTW9zdCBpbXBvcnRhbnQgYXJlIHRoZSBkZXZpY2VzIGFzc2lnbmVkIHRvIHRoZSB0aHJlYWQuCisKK1RoZSB0d28gYmFzaWMgdGhyZWFkIGNvbW1hbmRzIGFyZToKKyAqIGFkZF9kZXZpY2UgREVWSUNFQE5BTUUgLS0gYWRkcyBhIHNpbmdsZSBkZXZpY2UKKyAqIHJlbV9kZXZpY2VfYWxsICAgICAgICAgLS0gcmVtb3ZlIGFsbCBhc3NvY2lhdGVkIGRldmljZXMKKworV2hlbiBhZGRpbmcgYSBkZXZpY2UgdG8gYSB0aHJlYWQsIGEgY29ycm9zcG9uZGluZyBwcm9jZmlsZSBpcyBjcmVhdGVkCit3aGljaCBpcyB1c2VkIGZvciBjb25maWd1cmluZyB0aGlzIGRldmljZS4gVGh1cywgZGV2aWNlIG5hbWVzIG5lZWQgdG8KK2JlIHVuaXF1ZS4KKworVG8gc3VwcG9ydCBhZGRpbmcgdGhlIHNhbWUgZGV2aWNlIHRvIG11bHRpcGxlIHRocmVhZHMsIHdoaWNoIGlzIHVzZWZ1bAord2l0aCBtdWx0aSBxdWV1ZSBOSUNzLCBhIHRoZSBkZXZpY2UgbmFtaW5nIHNjaGVtZSBpcyBleHRlbmRlZCB3aXRoICJAIjoKKyBkZXZpY2VAc29tZXRoaW5nCisKK1RoZSBwYXJ0IGFmdGVyICJAIiBjYW4gYmUgYW55dGhpbmcsIGJ1dCBpdCBpcyBjdXN0b20gdG8gdXNlIHRoZSB0aHJlYWQKK251bWJlci4KKworVmlld2luZyBkZXZpY2VzCis9PT09PT09PT09PT09PT0KKworVGhlIFBhcmFtcyBzZWN0aW9uIGhvbGRzIGNvbmZpZ3VyZWQgaW5mb3JtYXRpb24uICBUaGUgQ3VycmVudCBzZWN0aW9uCitob2xkcyBydW5uaW5nIHN0YXRpc3RpY3MuICBUaGUgUmVzdWx0IGlzIHByaW50ZWQgYWZ0ZXIgYSBydW4gb3IgYWZ0ZXIKK2ludGVycnVwdGlvbi4gIEV4YW1wbGU6CisKKy9wcm9jL25ldC9wa3RnZW4vZXRoNEAwCisKKyBQYXJhbXM6IGNvdW50IDEwMDAwMCAgbWluX3BrdF9zaXplOiA2MCAgbWF4X3BrdF9zaXplOiA2MAorICAgICBmcmFnczogMCAgZGVsYXk6IDAgIGNsb25lX3NrYjogNjQgIGlmbmFtZTogZXRoNEAwCisgICAgIGZsb3dzOiAwIGZsb3dsZW46IDAKKyAgICAgcXVldWVfbWFwX21pbjogMCAgcXVldWVfbWFwX21heDogMAorICAgICBkc3RfbWluOiAxOTIuMTY4LjgxLjIgIGRzdF9tYXg6CisgICAgIHNyY19taW46ICAgc3JjX21heDoKKyAgICAgc3JjX21hYzogOTA6ZTI6YmE6MGE6NTY6YjQgZHN0X21hYzogMDA6MWI6MjE6M2M6OWQ6ZjgKKyAgICAgdWRwX3NyY19taW46IDkgIHVkcF9zcmNfbWF4OiAxMDkgIHVkcF9kc3RfbWluOiA5ICB1ZHBfZHN0X21heDogOQorICAgICBzcmNfbWFjX2NvdW50OiAwICBkc3RfbWFjX2NvdW50OiAwCisgICAgIEZsYWdzOiBVRFBTUkNfUk5EICBOT19USU1FU1RBTVAgIFFVRVVFX01BUF9DUFUKKyBDdXJyZW50OgorICAgICBwa3RzLXNvZmFyOiAxMDAwMDAgIGVycm9yczogMAorICAgICBzdGFydGVkOiA2MjM5MTMzODEwMDh1cyAgc3RvcHBlZDogNjIzOTEzMzk2NDM5dXMgaWRsZTogMjV1cworICAgICBzZXFfbnVtOiAxMDAwMDEgIGN1cl9kc3RfbWFjX29mZnNldDogMCAgY3VyX3NyY19tYWNfb2Zmc2V0OiAwCisgICAgIGN1cl9zYWRkcjogMTkyLjE2OC44LjMgIGN1cl9kYWRkcjogMTkyLjE2OC44MS4yCisgICAgIGN1cl91ZHBfZHN0OiA5ICBjdXJfdWRwX3NyYzogNDIKKyAgICAgY3VyX3F1ZXVlX21hcDogMAorICAgICBmbG93czogMAorIFJlc3VsdDogT0s6IDE1NDMwKGMxNTQwNStkMjUpIHVzZWMsIDEwMDAwMCAoNjBieXRlLDBmcmFncykKKyAgNjQ4MDU2MnBwcyAzMTEwTWIvc2VjICgzMTEwNjY5NzYwYnBzKSBlcnJvcnM6IDAKKworCitDb25maWd1cmluZyBkZXZpY2VzCis9PT09PT09PT09PT09PT09PT09CitUaGlzIGlzIGRvbmUgdmlhIHRoZSAvcHJvYyBpbnRlcmZhY2UsIGFuZCBtb3N0IGVhc2lseSBkb25lIHZpYSBwZ3NldAorYXMgZGVmaW5lZCBpbiB0aGUgc2FtcGxlIHNjcmlwdHMuCisKK0V4YW1wbGVzOgorCisgcGdzZXQgImNsb25lX3NrYiAxIiAgICAgc2V0cyB0aGUgbnVtYmVyIG9mIGNvcGllcyBvZiB0aGUgc2FtZSBwYWNrZXQKKyBwZ3NldCAiY2xvbmVfc2tiIDAiICAgICB1c2Ugc2luZ2xlIFNLQiBmb3IgYWxsIHRyYW5zbWl0cworIHBnc2V0ICJidXJzdCA4IiAgICAgICAgIHVzZXMgeG1pdF9tb3JlIEFQSSB0byBxdWV1ZSA4IGNvcGllcyBvZiB0aGUgc2FtZQorICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldCBhbmQgdXBkYXRlIEhXIHR4IHF1ZXVlIHRhaWwgcG9pbnRlciBvbmNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICJidXJzdCAxIiBpcyB0aGUgZGVmYXVsdAorIHBnc2V0ICJwa3Rfc2l6ZSA5MDE0IiAgIHNldHMgcGFja2V0IHNpemUgdG8gOTAxNAorIHBnc2V0ICJmcmFncyA1IiAgICAgICAgIHBhY2tldCB3aWxsIGNvbnNpc3Qgb2YgNSBmcmFnbWVudHMKKyBwZ3NldCAiY291bnQgMjAwMDAwIiAgICBzZXRzIG51bWJlciBvZiBwYWNrZXRzIHRvIHNlbmQsIHNldCB0byB6ZXJvCisgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvbnRpbnVvdXMgc2VuZHMgdW50aWwgZXhwbGljaXRseSBzdG9wcGVkLgorCisgcGdzZXQgImRlbGF5IDUwMDAiICAgICAgYWRkcyBkZWxheSB0byBoYXJkX3N0YXJ0X3htaXQoKS4gbmFub3NlY29uZHMKKworIHBnc2V0ICJkc3QgMTAuMC4wLjEiICAgIHNldHMgSVAgZGVzdGluYXRpb24gYWRkcmVzcworICAgICAgICAgICAgICAgICAgICAgICAgIChCRVdBUkUhIFRoaXMgZ2VuZXJhdG9yIGlzIHZlcnkgYWdncmVzc2l2ZSEpCisKKyBwZ3NldCAiZHN0X21pbiAxMC4wLjAuMSIgICAgICAgICAgICBTYW1lIGFzIGRzdAorIHBnc2V0ICJkc3RfbWF4IDEwLjAuMC4yNTQiICAgICAgICAgIFNldCB0aGUgbWF4aW11bSBkZXN0aW5hdGlvbiBJUC4KKyBwZ3NldCAic3JjX21pbiAxMC4wLjAuMSIgICAgICAgICAgICBTZXQgdGhlIG1pbmltdW0gKG9yIG9ubHkpIHNvdXJjZSBJUC4KKyBwZ3NldCAic3JjX21heCAxMC4wLjAuMjU0IiAgICAgICAgICBTZXQgdGhlIG1heGltdW0gc291cmNlIElQLgorIHBnc2V0ICJkc3Q2IGZlYzA6OjEiICAgICBJUFY2IGRlc3RpbmF0aW9uIGFkZHJlc3MKKyBwZ3NldCAic3JjNiBmZWMwOjoyIiAgICAgSVBWNiBzb3VyY2UgYWRkcmVzcworIHBnc2V0ICJkc3RtYWMgMDA6MDA6MDA6MDA6MDA6MDAiICAgIHNldHMgTUFDIGRlc3RpbmF0aW9uIGFkZHJlc3MKKyBwZ3NldCAic3JjbWFjIDAwOjAwOjAwOjAwOjAwOjAwIiAgICBzZXRzIE1BQyBzb3VyY2UgYWRkcmVzcworCisgcGdzZXQgInF1ZXVlX21hcF9taW4gMCIgU2V0cyB0aGUgbWluIHZhbHVlIG9mIHR4IHF1ZXVlIGludGVydmFsCisgcGdzZXQgInF1ZXVlX21hcF9tYXggNyIgU2V0cyB0aGUgbWF4IHZhbHVlIG9mIHR4IHF1ZXVlIGludGVydmFsLCBmb3IgbXVsdGlxdWV1ZSBkZXZpY2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgVG8gc2VsZWN0IHF1ZXVlIDEgb2YgYSBnaXZlbiBkZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgdXNlIHF1ZXVlX21hcF9taW49MSBhbmQgcXVldWVfbWFwX21heD0xCisKKyBwZ3NldCAic3JjX21hY19jb3VudCAxIiBTZXRzIHRoZSBudW1iZXIgb2YgTUFDcyB3ZSdsbCByYW5nZSB0aHJvdWdoLgorICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSAnbWluaW11bScgTUFDIGlzIHdoYXQgeW91IHNldCB3aXRoIHNyY21hYy4KKworIHBnc2V0ICJkc3RfbWFjX2NvdW50IDEiIFNldHMgdGhlIG51bWJlciBvZiBNQUNzIHdlJ2xsIHJhbmdlIHRocm91Z2guCisgICAgICAgICAgICAgICAgICAgICAgICAgVGhlICdtaW5pbXVtJyBNQUMgaXMgd2hhdCB5b3Ugc2V0IHdpdGggZHN0bWFjLgorCisgcGdzZXQgImZsYWcgW25hbWVdIiAgICAgU2V0IGEgZmxhZyB0byBkZXRlcm1pbmUgYmVoYXZpb3VyLiAgQ3VycmVudCBmbGFncworICAgICAgICAgICAgICAgICAgICAgICAgIGFyZTogSVBTUkNfUk5EICMgSVAgc291cmNlIGlzIHJhbmRvbSAoYmV0d2VlbiBtaW4vbWF4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBEU1RfUk5EICMgSVAgZGVzdGluYXRpb24gaXMgcmFuZG9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVRFBTUkNfUk5ELCBVRFBEU1RfUk5ELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFDU1JDX1JORCwgTUFDRFNUX1JORAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFhTSVpFX1JORCwgSVBWNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1QTFNfUk5ELCBWSURfUk5ELCBTVklEX1JORAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkxPV19TRVEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVVRV9NQVBfUk5EICMgcXVldWUgbWFwIHJhbmRvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFVUVfTUFQX0NQVSAjIHF1ZXVlIG1hcCBtaXJyb3JzIHNtcF9wcm9jZXNzb3JfaWQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVURQQ1NVTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQU0VDICMgSVBzZWMgZW5jYXBzdWxhdGlvbiAobmVlZHMgQ09ORklHX1hGUk0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOT0RFX0FMTE9DICMgbm9kZSBzcGVjaWZpYyBtZW1vcnkgYWxsb2NhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTk9fVElNRVNUQU1QICMgZGlzYWJsZSB0aW1lc3RhbXBpbmcKKworIHBnc2V0IHNwaSBTUElfVkFMVUUgICAgIFNldCBzcGVjaWZpYyBTQSB1c2VkIHRvIHRyYW5zZm9ybSBwYWNrZXQuCisKKyBwZ3NldCAidWRwX3NyY19taW4gOSIgICBzZXQgVURQIHNvdXJjZSBwb3J0IG1pbiwgSWYgPCB1ZHBfc3JjX21heCwgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgIGN5Y2xlIHRocm91Z2ggdGhlIHBvcnQgcmFuZ2UuCisKKyBwZ3NldCAidWRwX3NyY19tYXggOSIgICBzZXQgVURQIHNvdXJjZSBwb3J0IG1heC4KKyBwZ3NldCAidWRwX2RzdF9taW4gOSIgICBzZXQgVURQIGRlc3RpbmF0aW9uIHBvcnQgbWluLCBJZiA8IHVkcF9kc3RfbWF4LCB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgY3ljbGUgdGhyb3VnaCB0aGUgcG9ydCByYW5nZS4KKyBwZ3NldCAidWRwX2RzdF9tYXggOSIgICBzZXQgVURQIGRlc3RpbmF0aW9uIHBvcnQgbWF4LgorCisgcGdzZXQgIm1wbHMgMDAwMTAwMGEsMDAwMjAwMGEsMDAwMDAwMGEiIHNldCBNUExTIGxhYmVscyAoaW4gdGhpcyBleGFtcGxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGVyIGxhYmVsPTE2LG1pZGRsZSBsYWJlbD0zMiwKKwkJCQkJIGlubmVyIGxhYmVsPTAgKElQdjQgTlVMTCkpIE5vdGUgdGhhdAorCQkJCQkgdGhlcmUgbXVzdCBiZSBubyBzcGFjZXMgYmV0d2VlbiB0aGUKKwkJCQkJIGFyZ3VtZW50cy4gTGVhZGluZyB6ZXJvcyBhcmUgcmVxdWlyZWQuCisJCQkJCSBEbyBub3Qgc2V0IHRoZSBib3R0b20gb2Ygc3RhY2sgYml0LAorCQkJCQkgdGhhdCdzIGRvbmUgYXV0b21hdGljYWxseS4gSWYgeW91IGRvCisJCQkJCSBzZXQgdGhlIGJvdHRvbSBvZiBzdGFjayBiaXQsIHRoYXQKKwkJCQkJIGluZGljYXRlcyB0aGF0IHlvdSB3YW50IHRvIHJhbmRvbWx5CisJCQkJCSBnZW5lcmF0ZSB0aGF0IGFkZHJlc3MgYW5kIHRoZSBmbGFnCisJCQkJCSBNUExTX1JORCB3aWxsIGJlIHR1cm5lZCBvbi4gWW91CisJCQkJCSBjYW4gaGF2ZSBhbnkgbWl4IG9mIHJhbmRvbSBhbmQgZml4ZWQKKwkJCQkJIGxhYmVscyBpbiB0aGUgbGFiZWwgc3RhY2suCisKKyBwZ3NldCAibXBscyAwIgkJICB0dXJuIG9mZiBtcGxzIChvciBhbnkgaW52YWxpZCBhcmd1bWVudCB3b3JrcyB0b28hKQorCisgcGdzZXQgInZsYW5faWQgNzciICAgICAgIHNldCBWTEFOIElEIDAtNDA5NQorIHBnc2V0ICJ2bGFuX3AgMyIgICAgICAgICBzZXQgcHJpb3JpdHkgYml0IDAtNyAoZGVmYXVsdCAwKQorIHBnc2V0ICJ2bGFuX2NmaSAwIiAgICAgICBzZXQgY2Fub25pY2FsIGZvcm1hdCBpZGVudGlmaWVyIDAtMSAoZGVmYXVsdCAwKQorCisgcGdzZXQgInN2bGFuX2lkIDIyIiAgICAgIHNldCBTVkxBTiBJRCAwLTQwOTUKKyBwZ3NldCAic3ZsYW5fcCAzIiAgICAgICAgc2V0IHByaW9yaXR5IGJpdCAwLTcgKGRlZmF1bHQgMCkKKyBwZ3NldCAic3ZsYW5fY2ZpIDAiICAgICAgc2V0IGNhbm9uaWNhbCBmb3JtYXQgaWRlbnRpZmllciAwLTEgKGRlZmF1bHQgMCkKKworIHBnc2V0ICJ2bGFuX2lkIDk5OTkiICAgICA+IDQwOTUgcmVtb3ZlIHZsYW4gYW5kIHN2bGFuIHRhZ3MKKyBwZ3NldCAic3ZsYW4gOTk5OSIgICAgICAgPiA0MDk1IHJlbW92ZSBzdmxhbiB0YWcKKworCisgcGdzZXQgInRvcyBYWCIgICAgICAgICAgIHNldCBmb3JtZXIgSVB2NCBUT1MgZmllbGQgKGUuZy4gInRvcyAyOCIgZm9yIEFGMTEgbm8gRUNOLCBkZWZhdWx0IDAwKQorIHBnc2V0ICJ0cmFmZmljX2NsYXNzIFhYIiBzZXQgZm9ybWVyIElQdjYgVFJBRkZJQyBDTEFTUyAoZS5nLiAidHJhZmZpY19jbGFzcyBCOCIgZm9yIEVGIG5vIEVDTiwgZGVmYXVsdCAwMCkKKworIHBnc2V0IHN0b3AgICAgCSAgICAgICAgICBhYm9ydHMgaW5qZWN0aW9uLiBBbHNvLCBeQyBhYm9ydHMgZ2VuZXJhdG9yLgorCisgcGdzZXQgInJhdGUgMzAwTSIgICAgICAgIHNldCByYXRlIHRvIDMwMCBNYi9zCisgcGdzZXQgInJhdGVwIDEwMDAwMDAiICAgIHNldCByYXRlIHRvIDFNcHBzCisKKyBwZ3NldCAieG1pdF9tb2RlIG5ldGlmX3JlY2VpdmUiICBSWCBpbmplY3QgaW50byBzdGFjayBuZXRpZl9yZWNlaXZlX3NrYigpCisJCQkJICBXb3JrcyB3aXRoICJidXJzdCIgYnV0IG5vdCB3aXRoICJjbG9uZV9za2IiLgorCQkJCSAgRGVmYXVsdCB4bWl0X21vZGUgaXMgInN0YXJ0X3htaXQiLgorCitTYW1wbGUgc2NyaXB0cworPT09PT09PT09PT09PT0KKworQSBjb2xsZWN0aW9uIG9mIHR1dG9yaWFsIHNjcmlwdHMgYW5kIGhlbHBlcnMgZm9yIHBrdGdlbiBpcyBpbiB0aGUKK3NhbXBsZXMvcGt0Z2VuIGRpcmVjdG9yeS4gVGhlIGhlbHBlciBwYXJhbWV0ZXJzLnNoIGZpbGUgc3VwcG9ydCBlYXN5CithbmQgY29uc2lzdGFudCBwYXJhbWV0ZXIgcGFyc2luZyBhY3Jvc3MgdGhlIHNhbXBsZSBzY3JpcHRzLgorCitVc2FnZSBleGFtcGxlIGFuZCBoZWxwOgorIC4vcGt0Z2VuX3NhbXBsZTAxX3NpbXBsZS5zaCAtaSBldGg0IC1tIDAwOjFCOjIxOjNDOjlEOkY4IC1kIDE5Mi4xNjguOC4yCisKK1VzYWdlOiAuL3BrdGdlbl9zYW1wbGUwMV9zaW1wbGUuc2ggWy12eF0gLWkgZXRoWAorICAtaSA6ICgkREVWKSAgICAgICBvdXRwdXQgaW50ZXJmYWNlL2RldmljZSAocmVxdWlyZWQpCisgIC1zIDogKCRQS1RfU0laRSkgIHBhY2tldCBzaXplCisgIC1kIDogKCRERVNUX0lQKSAgIGRlc3RpbmF0aW9uIElQCisgIC1tIDogKCREU1RfTUFDKSAgIGRlc3RpbmF0aW9uIE1BQy1hZGRyCisgIC10IDogKCRUSFJFQURTKSAgIHRocmVhZHMgdG8gc3RhcnQKKyAgLWMgOiAoJFNLQl9DTE9ORSkgU0tCIGNsb25lcyBzZW5kIGJlZm9yZSBhbGxvYyBuZXcgU0tCCisgIC1iIDogKCRCVVJTVCkgICAgIEhXIGxldmVsIGJ1cnN0aW5nIG9mIFNLQnMKKyAgLXYgOiAoJFZFUkJPU0UpICAgdmVyYm9zZQorICAteCA6ICgkREVCVUcpICAgICBkZWJ1ZworCitUaGUgZ2xvYmFsIHZhcmlhYmxlcyBiZWluZyBzZXQgYXJlIGFsc28gbGlzdGVkLiAgRS5nLiB0aGUgcmVxdWlyZWQKK2ludGVyZmFjZS9kZXZpY2UgcGFyYW1ldGVyICItaSIgc2V0cyB2YXJpYWJsZSAkREVWLiAgQ29weSB0aGUKK3BrdGdlbl9zYW1wbGVYWCBzY3JpcHRzIGFuZCBtb2RpZnkgdGhlbSB0byBmaXQgeW91ciBvd24gbmVlZHMuCisKK1RoZSBvbGQgc2NyaXB0czoKKworcGt0Z2VuLmNvbmYtMS0yICAgICAgICAgICAgICAgICAgIyAxIENQVSAyIGRldgorcGt0Z2VuLmNvbmYtMS0xLXJkb3MgICAgICAgICAgICAgIyAxIENQVSAxIGRldiB3LiByb3V0ZSBEb1MgCitwa3RnZW4uY29uZi0xLTEtaXA2ICAgICAgICAgICAgICAjIDEgQ1BVIDEgZGV2IGlwdjYKK3BrdGdlbi5jb25mLTEtMS1pcDYtcmRvcyAgICAgICAgICMgMSBDUFUgMSBkZXYgaXB2NiAgdy4gcm91dGUgRG9TCitwa3RnZW4uY29uZi0xLTEtZmxvd3MgICAgICAgICAgICAjIDEgQ1BVIDEgZGV2IG11bHRpcGxlIGZsb3dzLgorCisKK0ludGVycnVwdCBhZmZpbml0eQorPT09PT09PT09PT09PT09PT09PQorTm90ZSB0aGF0IHdoZW4gYWRkaW5nIGRldmljZXMgdG8gYSBzcGVjaWZpYyBDUFUgaXQgaXMgYSBnb29kIGlkZWEgdG8KK2Fsc28gYXNzaWduIC9wcm9jL2lycS9YWC9zbXBfYWZmaW5pdHkgc28gdGhhdCB0aGUgVFggaW50ZXJydXB0cyBhcmUgYm91bmQKK3RvIHRoZSBzYW1lIENQVS4gIFRoaXMgcmVkdWNlcyBjYWNoZSBib3VuY2luZyB3aGVuIGZyZWVpbmcgc2ticy4KKworUGx1cyB1c2luZyB0aGUgZGV2aWNlIGZsYWcgUVVFVUVfTUFQX0NQVSwgd2hpY2ggbWFwcyB0aGUgU0tCcyBUWCBxdWV1ZQordG8gdGhlIHJ1bm5pbmcgdGhyZWFkcyBDUFUgKGRpcmVjdGx5IGZyb20gc21wX3Byb2Nlc3Nvcl9pZCgpKS4KKworRW5hYmxlIElQc2VjCis9PT09PT09PT09PT0KK0RlZmF1bHQgSVBzZWMgdHJhbnNmb3JtYXRpb24gd2l0aCBFU1AgZW5jYXBzdWxhdGlvbiBwbHVzIHRyYW5zcG9ydCBtb2RlCitjYW4gYmUgZW5hYmxlZCBieSBzaW1wbHkgc2V0dGluZzoKKworcGdzZXQgImZsYWcgSVBTRUMiCitwZ3NldCAiZmxvd3MgMSIKKworVG8gYXZvaWQgYnJlYWtpbmcgZXhpc3RpbmcgdGVzdGJlZCBzY3JpcHRzIGZvciB1c2luZyBBSCB0eXBlIGFuZCB0dW5uZWwgbW9kZSwKK3lvdSBjYW4gdXNlICJwZ3NldCBzcGkgU1BJX1ZBTFVFIiB0byBzcGVjaWZ5IHdoaWNoIHRyYW5zZm9ybWF0aW9uIG1vZGUKK3RvIGVtcGxveS4KKworCitDdXJyZW50IGNvbW1hbmRzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqKiBQZ2NvbnRyb2wgY29tbWFuZHM6CisKK3N0YXJ0CitzdG9wCityZXNldAorCisqKiBUaHJlYWQgY29tbWFuZHM6CisKK2FkZF9kZXZpY2UKK3JlbV9kZXZpY2VfYWxsCisKKworKiogRGV2aWNlIGNvbW1hbmRzOgorCitjb3VudAorY2xvbmVfc2tiCitidXJzdAorZGVidWcKKworZnJhZ3MKK2RlbGF5CisKK3NyY19tYWNfY291bnQKK2RzdF9tYWNfY291bnQKKworcGt0X3NpemUKK21pbl9wa3Rfc2l6ZQorbWF4X3BrdF9zaXplCisKK3F1ZXVlX21hcF9taW4KK3F1ZXVlX21hcF9tYXgKK3NrYl9wcmlvcml0eQorCit0b3MgICAgICAgICAgIChpcHY0KQordHJhZmZpY19jbGFzcyAoaXB2NikKKworbXBscworCit1ZHBfc3JjX21pbgordWRwX3NyY19tYXgKKwordWRwX2RzdF9taW4KK3VkcF9kc3RfbWF4CisKK25vZGUKKworZmxhZworICBJUFNSQ19STkQKKyAgSVBEU1RfUk5ECisgIFVEUFNSQ19STkQKKyAgVURQRFNUX1JORAorICBNQUNTUkNfUk5ECisgIE1BQ0RTVF9STkQKKyAgVFhTSVpFX1JORAorICBJUFY2CisgIE1QTFNfUk5ECisgIFZJRF9STkQKKyAgU1ZJRF9STkQKKyAgRkxPV19TRVEKKyAgUVVFVUVfTUFQX1JORAorICBRVUVVRV9NQVBfQ1BVCisgIFVEUENTVU0KKyAgSVBTRUMKKyAgTk9ERV9BTExPQworICBOT19USU1FU1RBTVAKKworc3BpIChpcHNlYykKKworZHN0X21pbgorZHN0X21heAorCitzcmNfbWluCitzcmNfbWF4CisKK2RzdF9tYWMKK3NyY19tYWMKKworY2xlYXJfY291bnRlcnMKKworc3JjNgorZHN0NgorZHN0Nl9tYXgKK2RzdDZfbWluCisKK2Zsb3dzCitmbG93bGVuCisKK3JhdGUKK3JhdGVwCisKK3htaXRfbW9kZSA8c3RhcnRfeG1pdHxuZXRpZl9yZWNlaXZlPgorCit2bGFuX2NmaQordmxhbl9pZAordmxhbl9wCisKK3N2bGFuX2NmaQorc3ZsYW5faWQKK3N2bGFuX3AKKworCitSZWZlcmVuY2VzOgorZnRwOi8vcm9idXIuc2x1LnNlL3B1Yi9MaW51eC9uZXQtZGV2ZWxvcG1lbnQvcGt0Z2VuLXRlc3RpbmcvCitmdHA6Ly9yb2J1ci5zbHUuc2UvcHViL0xpbnV4L25ldC1kZXZlbG9wbWVudC9wa3RnZW4tdGVzdGluZy9leGFtcGxlcy8KKworUGFwZXIgZnJvbSBMaW51eC1Lb25ncmVzcyBpbiBFcmxhbmdlbiAyMDA0LgorZnRwOi8vcm9idXIuc2x1LnNlL3B1Yi9MaW51eC9uZXQtZGV2ZWxvcG1lbnQvcGt0Z2VuLXRlc3RpbmcvcGt0Z2VuX3BhcGVyLnBkZgorCitUaGFua3MgdG86CitHcmFudCBHcnVuZGxlciBmb3IgdGVzdGluZyBvbiBJQS02NCBhbmQgcGFyaXNjLCBIYXJhbGQgV2VsdGUsICBMZW5uZXJ0IEJ1eXRlbmhlaworU3RlcGhlbiBIZW1taW5nZXIsIEFuZGkgS2xlZW4sIERhdmUgTWlsbGVyIGFuZCBtYW55IG90aGVycy4KKworCitHb29kIGx1Y2sgd2l0aCB0aGUgbGludXggbmV0LWRldmVsb3BtZW50LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BvbGljeS1yb3V0aW5nLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9wb2xpY3ktcm91dGluZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZmNjkzNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9wb2xpY3ktcm91dGluZy50eHQKQEAgLTAsMCArMSwxNTAgQEAKK0NsYXNzZXMKKy0tLS0tLS0KKworCSJDbGFzcyIgaXMgYSBjb21wbGV0ZSByb3V0aW5nIHRhYmxlIGluIGNvbW1vbiBzZW5zZS4KKwlJLmUuIGl0IGlzIHRyZWUgb2Ygbm9kZXMgKGRlc3RpbmF0aW9uIHByZWZpeCwgdG9zLCBtZXRyaWMpCisJd2l0aCBhdHRhY2hlZCBpbmZvcm1hdGlvbjogZ2F0ZXdheSwgZGV2aWNlIGV0Yy4KKwlUaGlzIHRyZWUgaXMgbG9va2VkIHVwIGFzIHNwZWNpZmllZCBpbiBSRkMxODEyIDUuMi40LjMKKwkxLiBCYXNpYyBtYXRjaAorCTIuIExvbmdlc3QgbWF0Y2gKKwkzLiBXZWFrIFRPUy4KKwk0LiBNZXRyaWMuIChzaG91bGQgbm90IGJlIGluIGtlcm5lbCBzcGFjZSwgYnV0IHRoZXkgYXJlKQorCTUuIEFkZGl0aW9uYWwgcHJ1bmluZyBydWxlcy4gKG5vdCBpbiBrZXJuZWwgc3BhY2UpLgorCQorCVdlIGhhdmUgdHdvIHNwZWNpYWwgdHlwZSBvZiBub2RlczoKKwlSRUpFQ1QgLSBhYm9ydCByb3V0ZSBsb29rdXAgYW5kIHJldHVybiBhbiBlcnJvciB2YWx1ZS4KKwlUSFJPVyAgLSBhYm9ydCByb3V0ZSBsb29rdXAgaW4gdGhpcyBjbGFzcy4KKworCisJQ3VycmVudGx5IHRoZSBudW1iZXIgb2YgY2xhc3NlcyBpcyBsaW1pdGVkIHRvIDI1NQorCSgwIGlzIHJlc2VydmVkIGZvciAibm90IHNwZWNpZmllZCBjbGFzcyIpCisKKwlUaHJlZSBjbGFzc2VzIGFyZSBidWlsdGluOgorCisJUlRfQ0xBU1NfTE9DQUw9MjU1IC0gbG9jYWwgaW50ZXJmYWNlIGFkZHJlc3NlcywKKwlicm9hZGNhc3RzLCBuYXQgYWRkcmVzc2VzLgorCisJUlRfQ0xBU1NfTUFJTj0yNTQgIC0gYWxsIG5vcm1hbCByb3V0ZXMgYXJlIHB1dCB0aGVyZQorCWJ5IGRlZmF1bHQuCisKKwlSVF9DTEFTU19ERUZBVUxUPTI1MyAtIGlmIGlwX2ZpYl9tb2RlbD09MSwgdGhlbgorCW5vcm1hbCBkZWZhdWx0IHJvdXRlcyBhcmUgcHV0IHRoZXJlLCBpZiBpcF9maWJfbW9kZWw9PTIKKwlhbGwgZ2F0ZXdheSByb3V0ZXMgYXJlIHB1dCB0aGVyZS4KKworCitSdWxlcworLS0tLS0KKwlSdWxlIGlzIGEgcmVjb3JkIG9mIChzcmMgcHJlZml4LCBzcmMgaW50ZXJmYWNlLCB0b3MsIGRzdCBwcmVmaXgpCisJd2l0aCBhdHRhY2hlZCBpbmZvcm1hdGlvbi4KKworCVJ1bGUgdHlwZXM6CisJUlRQX1JPVVRFIC0gbG9va3VwIGluIGF0dGFjaGVkIGNsYXNzCisJUlRQX05BVCAgIC0gbG9va3VwIGluIGF0dGFjaGVkIGNsYXNzIGFuZCBpZiBhIG1hdGNoIGlzIGZvdW5kLAorCQkgICAgdHJhbnNsYXRlIHBhY2tldCBzb3VyY2UgYWRkcmVzcy4KKwlSVFBfTUFTUVVFUkFERSAtIGxvb2t1cCBpbiBhdHRhY2hlZCBjbGFzcyBhbmQgaWYgYSBtYXRjaCBpcyBmb3VuZCwKKwkJICAgIG1hc3F1ZXJhZGUgcGFja2V0IGFzIHNvdXJjZWQgYnkgdXMuCisJUlRQX0RST1AgICAtIHNpbGVudGx5IGRyb3AgdGhlIHBhY2tldC4KKwlSVFBfUkVKRUNUIC0gZHJvcCB0aGUgcGFja2V0IGFuZCBzZW5kIElDTVAgTkVUIFVOUkVBQ0hBQkxFLgorCVJUUF9QUk9ISUJJVCAtIGRyb3AgdGhlIHBhY2tldCBhbmQgc2VuZCBJQ01QIENPTU0uIEFETS4gUFJPSElCSVRFRC4KKworCVJ1bGUgZmxhZ3M6CisJUlRSRl9MT0cgLSBsb2cgcm91dGUgY3JlYXRpb25zLgorCVJUUkZfVkFMVkUgLSBPbmUgd2F5IHJvdXRlICh1c2VkIHdpdGggbWFzcXVlcmFkaW5nKQorCitEZWZhdWx0IHNldHVwOgorCityb290QGFtYmVyOi9wdWIvaXAtcm91dGluZyAjIGlwcm91dGUgLXIKK0tlcm5lbCByb3V0aW5nIHBvbGljeSBydWxlcworUHJlZiBTb3VyY2UgICAgICAgICAgICAgRGVzdGluYXRpb24gICAgICAgIFRPUyBJZmFjZSAgIENsCisgICAwIGRlZmF1bHQgICAgICAgICAgICBkZWZhdWx0ICAgICAgICAgICAgMDAgICogICAgICAgMjU1CisgMjU0IGRlZmF1bHQgICAgICAgICAgICBkZWZhdWx0ICAgICAgICAgICAgMDAgICogICAgICAgMjU0CisgMjU1IGRlZmF1bHQgICAgICAgICAgICBkZWZhdWx0ICAgICAgICAgICAgMDAgICogICAgICAgMjUzCisKKworTG9va3VwIGFsZ29yaXRobQorLS0tLS0tLS0tLS0tLS0tLQorCisJV2Ugc2NhbiBydWxlcyBsaXN0LCBhbmQgaWYgYSBydWxlIGlzIG1hdGNoZWQsIGFwcGx5IGl0LgorCUlmIGEgcm91dGUgaXMgZm91bmQsIHJldHVybiBpdC4KKwlJZiBpdCBpcyBub3QgZm91bmQgb3IgYSBUSFJPVyBub2RlIHdhcyBtYXRjaGVkLCBjb250aW51ZQorCXRvIHNjYW4gcnVsZXMuCisKK0FwcGxpY2F0aW9ucworLS0tLS0tLS0tLS0tCisKKzEuCUp1c3QgaWdub3JlIGNsYXNzZXMuIEFsbCB0aGUgcm91dGVzIGFyZSBwdXQgaW50byBNQUlOIGNsYXNzCisJKGFuZC9vciBpbnRvIERFRkFVTFQgY2xhc3MpLgorCisJSE9XVE86ICBpcHJvdXRlIGFkZCBQUkVGSVggWyB0b3MgVE9TIF0gWyBndyBHVyBdIFsgZGV2IERFViBdCisJCVsgbWV0cmljIE1FVFJJQyBdIFsgcmVqZWN0IF0gLi4uIChsb29rIGF0IGlwcm91dGUgdXRpbGl0eSkKKworCQlvciB1c2Ugcm91dGUgdXRpbGl0eSBmcm9tIGN1cnJlbnQgbmV0LXRvb2xzLgorCQkKKzIuCU9wcG9zaXRlIGNhc2UuIEp1c3QgZm9yZ2V0IGFsbCB0aGF0IHlvdSBrbm93IGFib3V0IHJvdXRpbmcKKwl0YWJsZXMuIEV2ZXJ5IHJ1bGUgaXMgc3VwcGxpZWQgd2l0aCBpdHMgb3duIGdhdGV3YXksIGRldmljZQorCWluZm8uIHJlY29yZC4gVGhpcyBhcHByb2FjaCBpcyBub3QgYXBwcm9wcmlhdGUgZm9yIGF1dG9tYXRlZAorCXJvdXRlIG1haW50ZW5hbmNlLCBidXQgaXQgaXMgaWRlYWwgZm9yIG1hbnVhbCBjb25maWd1cmF0aW9uLgorCisJSE9XVE86ICBpcHJvdXRlIGFkZHJ1bGUgWyBmcm9tIFBSRUZJWCBdIFsgdG8gUFJFRklYIF0gWyB0b3MgVE9TIF0KKwkJWyBkZXYgSU5QVVRERVZdIFsgcHJlZiBQUkVGRVJFTkNFIF0gcm91dGUgWyBndyBHQVRFV0FZIF0KKwkJWyBkZXYgT1VUREVWIF0gLi4uLi4KKworCVdhcm5pbmc6IEFzIG9mIG5vdyB0aGUgc2l6ZSBvZiB0aGUgcm91dGluZyB0YWJsZSBpbiB0aGlzCisJYXBwcm9hY2ggaXMgbGltaXRlZCB0byAyNTYuIElmIHNvbWVvbmUgbGlrZXMgdGhpcyBtb2RlbCwgSSdsbAorCXJlbGF4IHRoaXMgbGltaXRhdGlvbi4KKworMy4JT1NQRiBjbGFzc2VzIChzZWUgUkZDMTU4MywgUkZDMTgxMiBFLjMuMykKKwlWZXJ5IGNsZWFuLCBzdGFibGUgYW5kIHJvYnVzdCBhbGdvcml0aG0gZm9yIE9TUEYgcm91dGluZworCWRvbWFpbnMuIFVuZm9ydHVuYXRlbHksIGl0IGlzIG5vdCB3aWRlbHkgdXNlZCBpbiB0aGUgSW50ZXJuZXQuCisKKwlQcm9wb3NlZCBzZXR1cDoKKwkyNTUgbG9jYWwgYWRkcmVzc2VzCisJMjU0IGludGVyZmFjZSByb3V0ZXMKKwkyNTMgQVNFIHJvdXRlcyB3aXRoIGV4dGVybmFsIG1ldHJpYworCTI1MiBBU0Ugcm91dGVzIHdpdGggaW50ZXJuYWwgbWV0cmljCisJMjUxIGludGVyLWFyZWEgcm91dGVzCisJMjUwIGludHJhLWFyZWEgcm91dGVzIGZvciAxc3QgYXJlYQorCTI0OSBpbnRyYS1hcmVhIHJvdXRlcyBmb3IgMm5kIGFyZWEKKwlldGMuCisJCisJUnVsZXM6CisJaXByb3V0ZSBhZGRydWxlIGNsYXNzIDI1MworCWlwcm91dGUgYWRkcnVsZSBjbGFzcyAyNTIKKwlpcHJvdXRlIGFkZHJ1bGUgY2xhc3MgMjUxCisJaXByb3V0ZSBhZGRydWxlIHRvIGEtcHJlZml4LWZvci0xc3QtYXJlYSBjbGFzcyAyNTAKKwlpcHJvdXRlIGFkZHJ1bGUgdG8gYW5vdGhlci1wcmVmaXgtZm9yLTFzdC1hcmVhIGNsYXNzIDI1MAorCS4uLgorCWlwcm91dGUgYWRkcnVsZSB0byBhLXByZWZpeC1mb3ItMm5kLWFyZWEgY2xhc3MgMjQ5CisJLi4uCisKKwlBcmVhIGNsYXNzZXMgbXVzdCBiZSB0ZXJtaW5hdGVkIHdpdGggcmVqZWN0IHJlY29yZC4KKwlpcHJvdXRlIGFkZCBkZWZhdWx0IHJlamVjdCBjbGFzcyAyNTAKKwlpcHJvdXRlIGFkZCBkZWZhdWx0IHJlamVjdCBjbGFzcyAyNDkKKwkuLi4KKworNC4JVGhlIFZhcmlhbnQgUm91dGVyIFJlcXVpcmVtZW50cyBBbGdvcml0aG0gKFJGQzE4MTIgRS4zLjIpCisJQ3JlYXRlIDE2IGNsYXNzZXMgZm9yIGRpZmZlcmVudCBUT1MgdmFsdWVzLgorCUl0IGlzIGEgZnVubnksIGJ1dCBwcmV0dHkgdXNlbGVzcyBhbGdvcml0aG0uCisJSSBsaXN0ZWQgaXQganVzdCB0byBzaG93IHRoZSBwb3dlciBvZiBuZXcgcm91dGluZyBjb2RlLgorCis1LglBbGwgdGhlIHZhcmlldHkgb2YgY29tYmluYXRpb25zLi4uLi4uCisKKworR0FURUQKKy0tLS0tCisKKwlHYXRlZCBkb2VzIG5vdCB1bmRlcnN0YW5kIGNsYXNzZXMsIGJ1dCBpdCB3aWxsIHdvcmsKKwloYXBwaWx5IGluIE1BSU4rREVGQVVMVC4gQWxsIHBvbGljeSByb3V0ZXMgY2FuIGJlIHNldAorCWFuZCBtYWludGFpbmVkIG1hbnVhbGx5LgorCitJTVBPUlRBTlQgTk9URQorLS0tLS0tLS0tLS0tLS0KKwlyb3V0ZS5jIGhhcyBhIGNvbXBpbGF0aW9uIHRpbWUgc3dpdGNoIENPTkZJR19JUF9MT0NBTF9SVF9QT0xJQ1kuCisJSWYgaXQgaXMgc2V0LCBsb2NhbGx5IG9yaWdpbmF0ZWQgcGFja2V0cyBhcmUgcm91dGVkCisJdXNpbmcgYWxsIHRoZSBwb2xpY3kgbGlzdC4gVGhpcyBpcyBub3QgdmVyeSBjb252ZW5pZW50IGFuZAorCXByZXR0eSBhbWJpZ3VvdXMgd2hlbiB1c2VkIHdpdGggTkFUIGFuZCBtYXNxdWVyYWRpbmcuCisJSSBzZXQgaXQgdG8gRkFMU0UgYnkgZGVmYXVsdC4KKworCitBbGV4ZXkgS3V6bmV0b3YKK2t1em5ldEBtczIuaW5yLmFjLnJ1CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcHBwX2dlbmVyaWMudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BwcF9nZW5lcmljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTFkMjAyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BwcF9nZW5lcmljLnR4dApAQCAtMCwwICsxLDQzMiBAQAorCQlQUFAgR2VuZXJpYyBEcml2ZXIgYW5kIENoYW5uZWwgSW50ZXJmYWNlCisJCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCQkJICAgIFBhdWwgTWFja2VycmFzCisJCQkgICBwYXVsdXNAc2FtYmEub3JnCisJCQkgICAgICA3IEZlYiAyMDAyCisKK1RoZSBnZW5lcmljIFBQUCBkcml2ZXIgaW4gbGludXgtMi40IHByb3ZpZGVzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZQorZnVuY3Rpb25hbGl0eSB3aGljaCBpcyBvZiB1c2UgaW4gYW55IFBQUCBpbXBsZW1lbnRhdGlvbiwgaW5jbHVkaW5nOgorCisqIHRoZSBuZXR3b3JrIGludGVyZmFjZSB1bml0IChwcHAwIGV0Yy4pCisqIHRoZSBpbnRlcmZhY2UgdG8gdGhlIG5ldHdvcmtpbmcgY29kZQorKiBQUFAgbXVsdGlsaW5rOiBzcGxpdHRpbmcgZGF0YWdyYW1zIGJldHdlZW4gbXVsdGlwbGUgbGlua3MsIGFuZAorICBvcmRlcmluZyBhbmQgY29tYmluaW5nIHJlY2VpdmVkIGZyYWdtZW50cworKiB0aGUgaW50ZXJmYWNlIHRvIHBwcGQsIHZpYSBhIC9kZXYvcHBwIGNoYXJhY3RlciBkZXZpY2UKKyogcGFja2V0IGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uCisqIFRDUC9JUCBoZWFkZXIgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24KKyogZGV0ZWN0aW5nIG5ldHdvcmsgdHJhZmZpYyBmb3IgZGVtYW5kIGRpYWxsaW5nIGFuZCBmb3IgaWRsZSB0aW1lb3V0cworKiBzaW1wbGUgcGFja2V0IGZpbHRlcmluZworCitGb3Igc2VuZGluZyBhbmQgcmVjZWl2aW5nIFBQUCBmcmFtZXMsIHRoZSBnZW5lcmljIFBQUCBkcml2ZXIgY2FsbHMgb24KK3RoZSBzZXJ2aWNlcyBvZiBQUFAgYGNoYW5uZWxzJy4gIEEgUFBQIGNoYW5uZWwgZW5jYXBzdWxhdGVzIGEKK21lY2hhbmlzbSBmb3IgdHJhbnNwb3J0aW5nIFBQUCBmcmFtZXMgZnJvbSBvbmUgbWFjaGluZSB0byBhbm90aGVyLiAgQQorUFBQIGNoYW5uZWwgaW1wbGVtZW50YXRpb24gY2FuIGJlIGFyYml0cmFyaWx5IGNvbXBsZXggaW50ZXJuYWxseSBidXQKK2hhcyBhIHZlcnkgc2ltcGxlIGludGVyZmFjZSB3aXRoIHRoZSBnZW5lcmljIFBQUCBjb2RlOiBpdCBtZXJlbHkgaGFzCit0byBiZSBhYmxlIHRvIHNlbmQgUFBQIGZyYW1lcywgcmVjZWl2ZSBQUFAgZnJhbWVzLCBhbmQgb3B0aW9uYWxseQoraGFuZGxlIGlvY3RsIHJlcXVlc3RzLiAgQ3VycmVudGx5IHRoZXJlIGFyZSBQUFAgY2hhbm5lbAoraW1wbGVtZW50YXRpb25zIGZvciBhc3luY2hyb25vdXMgc2VyaWFsIHBvcnRzLCBzeW5jaHJvbm91cyBzZXJpYWwKK3BvcnRzLCBhbmQgZm9yIFBQUCBvdmVyIGV0aGVybmV0LgorCitUaGlzIGFyY2hpdGVjdHVyZSBtYWtlcyBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgUFBQIG11bHRpbGluayBpbiBhCituYXR1cmFsIGFuZCBzdHJhaWdodGZvcndhcmQgd2F5LCBieSBhbGxvd2luZyBtb3JlIHRoYW4gb25lIGNoYW5uZWwgdG8KK2JlIGxpbmtlZCB0byBlYWNoIHBwcCBuZXR3b3JrIGludGVyZmFjZSB1bml0LiAgVGhlIGdlbmVyaWMgbGF5ZXIgaXMKK3Jlc3BvbnNpYmxlIGZvciBzcGxpdHRpbmcgZGF0YWdyYW1zIG9uIHRyYW5zbWl0IGFuZCByZWNvbWJpbmluZyB0aGVtCitvbiByZWNlaXZlLgorCisKK1BQUCBjaGFubmVsIEFQSQorLS0tLS0tLS0tLS0tLS0tCisKK1NlZSBpbmNsdWRlL2xpbnV4L3BwcF9jaGFubmVsLmggZm9yIHRoZSBkZWNsYXJhdGlvbiBvZiB0aGUgdHlwZXMgYW5kCitmdW5jdGlvbnMgdXNlZCB0byBjb21tdW5pY2F0ZSBiZXR3ZWVuIHRoZSBnZW5lcmljIFBQUCBsYXllciBhbmQgUFBQCitjaGFubmVscy4KKworRWFjaCBjaGFubmVsIGhhcyB0byBwcm92aWRlIHR3byBmdW5jdGlvbnMgdG8gdGhlIGdlbmVyaWMgUFBQIGxheWVyLAordmlhIHRoZSBwcHBfY2hhbm5lbC5vcHMgcG9pbnRlcjoKKworKiBzdGFydF94bWl0KCkgaXMgY2FsbGVkIGJ5IHRoZSBnZW5lcmljIGxheWVyIHdoZW4gaXQgaGFzIGEgZnJhbWUgdG8KKyAgc2VuZC4gIFRoZSBjaGFubmVsIGhhcyB0aGUgb3B0aW9uIG9mIHJlamVjdGluZyB0aGUgZnJhbWUgZm9yCisgIGZsb3ctY29udHJvbCByZWFzb25zLiAgSW4gdGhpcyBjYXNlLCBzdGFydF94bWl0KCkgc2hvdWxkIHJldHVybiAwCisgIGFuZCB0aGUgY2hhbm5lbCBzaG91bGQgY2FsbCB0aGUgcHBwX291dHB1dF93YWtldXAoKSBmdW5jdGlvbiBhdCBhCisgIGxhdGVyIHRpbWUgd2hlbiBpdCBjYW4gYWNjZXB0IGZyYW1lcyBhZ2FpbiwgYW5kIHRoZSBnZW5lcmljIGxheWVyCisgIHdpbGwgdGhlbiBhdHRlbXB0IHRvIHJldHJhbnNtaXQgdGhlIHJlamVjdGVkIGZyYW1lKHMpLiAgSWYgdGhlIGZyYW1lCisgIGlzIGFjY2VwdGVkLCB0aGUgc3RhcnRfeG1pdCgpIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gMS4KKworKiBpb2N0bCgpIHByb3ZpZGVzIGFuIGludGVyZmFjZSB3aGljaCBjYW4gYmUgdXNlZCBieSBhIHVzZXItc3BhY2UKKyAgcHJvZ3JhbSB0byBjb250cm9sIGFzcGVjdHMgb2YgdGhlIGNoYW5uZWwncyBiZWhhdmlvdXIuICBUaGlzCisgIHByb2NlZHVyZSB3aWxsIGJlIGNhbGxlZCB3aGVuIGEgdXNlci1zcGFjZSBwcm9ncmFtIGRvZXMgYW4gaW9jdGwKKyAgc3lzdGVtIGNhbGwgb24gYW4gaW5zdGFuY2Ugb2YgL2Rldi9wcHAgd2hpY2ggaXMgYm91bmQgdG8gdGhlCisgIGNoYW5uZWwuICAoVXN1YWxseSBpdCB3b3VsZCBvbmx5IGJlIHBwcGQgd2hpY2ggd291bGQgZG8gdGhpcy4pCisKK1RoZSBnZW5lcmljIFBQUCBsYXllciBwcm92aWRlcyBzZXZlbiBmdW5jdGlvbnMgdG8gY2hhbm5lbHM6CisKKyogcHBwX3JlZ2lzdGVyX2NoYW5uZWwoKSBpcyBjYWxsZWQgd2hlbiBhIGNoYW5uZWwgaGFzIGJlZW4gY3JlYXRlZCwgdG8KKyAgbm90aWZ5IHRoZSBQUFAgZ2VuZXJpYyBsYXllciBvZiBpdHMgcHJlc2VuY2UuICBGb3IgZXhhbXBsZSwgc2V0dGluZworICBhIHNlcmlhbCBwb3J0IHRvIHRoZSBQUFBESVNDIGxpbmUgZGlzY2lwbGluZSBjYXVzZXMgdGhlIHBwcF9hc3luYworICBjaGFubmVsIGNvZGUgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uLgorCisqIHBwcF91bnJlZ2lzdGVyX2NoYW5uZWwoKSBpcyBjYWxsZWQgd2hlbiBhIGNoYW5uZWwgaXMgdG8gYmUKKyAgZGVzdHJveWVkLiAgRm9yIGV4YW1wbGUsIHRoZSBwcHBfYXN5bmMgY2hhbm5lbCBjb2RlIGNhbGxzIHRoaXMgd2hlbgorICBhIGhhbmd1cCBpcyBkZXRlY3RlZCBvbiB0aGUgc2VyaWFsIHBvcnQuCisKKyogcHBwX291dHB1dF93YWtldXAoKSBpcyBjYWxsZWQgYnkgYSBjaGFubmVsIHdoZW4gaXQgaGFzIHByZXZpb3VzbHkKKyAgcmVqZWN0ZWQgYSBjYWxsIHRvIGl0cyBzdGFydF94bWl0IGZ1bmN0aW9uLCBhbmQgY2FuIG5vdyBhY2NlcHQgbW9yZQorICBwYWNrZXRzLgorCisqIHBwcF9pbnB1dCgpIGlzIGNhbGxlZCBieSBhIGNoYW5uZWwgd2hlbiBpdCBoYXMgcmVjZWl2ZWQgYSBjb21wbGV0ZQorICBQUFAgZnJhbWUuCisKKyogcHBwX2lucHV0X2Vycm9yKCkgaXMgY2FsbGVkIGJ5IGEgY2hhbm5lbCB3aGVuIGl0IGhhcyBkZXRlY3RlZCB0aGF0IGEKKyAgZnJhbWUgaGFzIGJlZW4gbG9zdCBvciBkcm9wcGVkIChmb3IgZXhhbXBsZSwgYmVjYXVzZSBvZiBhIEZDUyAoZnJhbWUKKyAgY2hlY2sgc2VxdWVuY2UpIGVycm9yKS4KKworKiBwcHBfY2hhbm5lbF9pbmRleCgpIHJldHVybnMgdGhlIGNoYW5uZWwgaW5kZXggYXNzaWduZWQgYnkgdGhlIFBQUAorICBnZW5lcmljIGxheWVyIHRvIHRoaXMgY2hhbm5lbC4gIFRoZSBjaGFubmVsIHNob3VsZCBwcm92aWRlIHNvbWUgd2F5CisgIChlLmcuIGFuIGlvY3RsKSB0byB0cmFuc21pdCB0aGlzIGJhY2sgdG8gdXNlci1zcGFjZSwgYXMgdXNlci1zcGFjZQorICB3aWxsIG5lZWQgaXQgdG8gYXR0YWNoIGFuIGluc3RhbmNlIG9mIC9kZXYvcHBwIHRvIHRoaXMgY2hhbm5lbC4KKworKiBwcHBfdW5pdF9udW1iZXIoKSByZXR1cm5zIHRoZSB1bml0IG51bWJlciBvZiB0aGUgcHBwIG5ldHdvcmsKKyAgaW50ZXJmYWNlIHRvIHdoaWNoIHRoaXMgY2hhbm5lbCBpcyBjb25uZWN0ZWQsIG9yIC0xIGlmIHRoZSBjaGFubmVsCisgIGlzIG5vdCBjb25uZWN0ZWQuCisKK0Nvbm5lY3RpbmcgYSBjaGFubmVsIHRvIHRoZSBwcHAgZ2VuZXJpYyBsYXllciBpcyBpbml0aWF0ZWQgZnJvbSB0aGUKK2NoYW5uZWwgY29kZSwgcmF0aGVyIHRoYW4gZnJvbSB0aGUgZ2VuZXJpYyBsYXllci4gIFRoZSBjaGFubmVsIGlzCitleHBlY3RlZCB0byBoYXZlIHNvbWUgd2F5IGZvciBhIHVzZXItbGV2ZWwgcHJvY2VzcyB0byBjb250cm9sIGl0CitpbmRlcGVuZGVudGx5IG9mIHRoZSBwcHAgZ2VuZXJpYyBsYXllci4gIEZvciBleGFtcGxlLCB3aXRoIHRoZQorcHBwX2FzeW5jIGNoYW5uZWwsIHRoaXMgaXMgcHJvdmlkZWQgYnkgdGhlIGZpbGUgZGVzY3JpcHRvciB0byB0aGUKK3NlcmlhbCBwb3J0LgorCitHZW5lcmFsbHkgYSB1c2VyLWxldmVsIHByb2Nlc3Mgd2lsbCBpbml0aWFsaXplIHRoZSB1bmRlcmx5aW5nCitjb21tdW5pY2F0aW9ucyBtZWRpdW0gYW5kIHByZXBhcmUgaXQgdG8gZG8gUFBQLiAgRm9yIGV4YW1wbGUsIHdpdGggYW4KK2FzeW5jIHR0eSwgdGhpcyBjYW4gaW52b2x2ZSBzZXR0aW5nIHRoZSB0dHkgc3BlZWQgYW5kIG1vZGVzLCBpc3N1aW5nCittb2RlbSBjb21tYW5kcywgYW5kIHRoZW4gZ29pbmcgdGhyb3VnaCBzb21lIHNvcnQgb2YgZGlhbG9nIHdpdGggdGhlCityZW1vdGUgc3lzdGVtIHRvIGludm9rZSBQUFAgc2VydmljZSB0aGVyZS4gIFdlIHJlZmVyIHRvIHRoaXMgcHJvY2VzcworYXMgYGRpc2NvdmVyeScuICBUaGVuIHRoZSB1c2VyLWxldmVsIHByb2Nlc3MgdGVsbHMgdGhlIG1lZGl1bSB0bworYmVjb21lIGEgUFBQIGNoYW5uZWwgYW5kIHJlZ2lzdGVyIGl0c2VsZiB3aXRoIHRoZSBnZW5lcmljIFBQUCBsYXllci4KK1RoZSBjaGFubmVsIHRoZW4gaGFzIHRvIHJlcG9ydCB0aGUgY2hhbm5lbCBudW1iZXIgYXNzaWduZWQgdG8gaXQgYmFjawordG8gdGhlIHVzZXItbGV2ZWwgcHJvY2Vzcy4gIEZyb20gdGhhdCBwb2ludCwgdGhlIFBQUCBuZWdvdGlhdGlvbiBjb2RlCitpbiB0aGUgUFBQIGRhZW1vbiAocHBwZCkgY2FuIHRha2Ugb3ZlciBhbmQgcGVyZm9ybSB0aGUgUFBQCituZWdvdGlhdGlvbiwgYWNjZXNzaW5nIHRoZSBjaGFubmVsIHRocm91Z2ggdGhlIC9kZXYvcHBwIGludGVyZmFjZS4KKworQXQgdGhlIGludGVyZmFjZSB0byB0aGUgUFBQIGdlbmVyaWMgbGF5ZXIsIFBQUCBmcmFtZXMgYXJlIHN0b3JlZCBpbgorc2tidWZmIHN0cnVjdHVyZXMgYW5kIHN0YXJ0IHdpdGggdGhlIHR3by1ieXRlIFBQUCBwcm90b2NvbCBudW1iZXIuCitUaGUgZnJhbWUgZG9lcyAqbm90KiBpbmNsdWRlIHRoZSAweGZmIGBhZGRyZXNzJyBieXRlIG9yIHRoZSAweDAzCitgY29udHJvbCcgYnl0ZSB0aGF0IGFyZSBvcHRpb25hbGx5IHVzZWQgaW4gYXN5bmMgUFBQLiAgTm9yIGlzIHRoZXJlCithbnkgZXNjYXBpbmcgb2YgY29udHJvbCBjaGFyYWN0ZXJzLCBub3IgYXJlIHRoZXJlIGFueSBGQ1Mgb3IgZnJhbWluZworY2hhcmFjdGVycyBpbmNsdWRlZC4gIFRoYXQgaXMgYWxsIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2hhbm5lbAorY29kZSwgaWYgaXQgaXMgbmVlZGVkIGZvciB0aGUgcGFydGljdWxhciBtZWRpdW0uICBUaGF0IGlzLCB0aGUgc2tidWZmcworcHJlc2VudGVkIHRvIHRoZSBzdGFydF94bWl0KCkgZnVuY3Rpb24gY29udGFpbiBvbmx5IHRoZSAyLWJ5dGUKK3Byb3RvY29sIG51bWJlciBhbmQgdGhlIGRhdGEsIGFuZCB0aGUgc2tidWZmcyBwcmVzZW50ZWQgdG8gcHBwX2lucHV0KCkKK211c3QgYmUgaW4gdGhlIHNhbWUgZm9ybWF0LgorCitUaGUgY2hhbm5lbCBtdXN0IHByb3ZpZGUgYW4gaW5zdGFuY2Ugb2YgYSBwcHBfY2hhbm5lbCBzdHJ1Y3QgdG8KK3JlcHJlc2VudCB0aGUgY2hhbm5lbC4gIFRoZSBjaGFubmVsIGlzIGZyZWUgdG8gdXNlIHRoZSBgcHJpdmF0ZScgZmllbGQKK2hvd2V2ZXIgaXQgd2lzaGVzLiAgVGhlIGNoYW5uZWwgc2hvdWxkIGluaXRpYWxpemUgdGhlIGBtdHUnIGFuZAorYGhkcmxlbicgZmllbGRzIGJlZm9yZSBjYWxsaW5nIHBwcF9yZWdpc3Rlcl9jaGFubmVsKCkgYW5kIG5vdCBjaGFuZ2UKK3RoZW0gdW50aWwgYWZ0ZXIgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbCgpIHJldHVybnMuICBUaGUgYG10dScgZmllbGQKK3JlcHJlc2VudHMgdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgZGF0YSBwYXJ0IG9mIHRoZSBQUFAgZnJhbWVzLCB0aGF0CitpcywgaXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgMi1ieXRlIHByb3RvY29sIG51bWJlci4KKworSWYgdGhlIGNoYW5uZWwgbmVlZHMgc29tZSBoZWFkcm9vbSBpbiB0aGUgc2tidWZmcyBwcmVzZW50ZWQgdG8gaXQgZm9yCit0cmFuc21pc3Npb24gKGkuZS4sIHNvbWUgc3BhY2UgZnJlZSBpbiB0aGUgc2tidWZmIGRhdGEgYXJlYSBiZWZvcmUgdGhlCitzdGFydCBvZiB0aGUgUFBQIGZyYW1lKSwgaXQgc2hvdWxkIHNldCB0aGUgYGhkcmxlbicgZmllbGQgb2YgdGhlCitwcHBfY2hhbm5lbCBzdHJ1Y3QgdG8gdGhlIGFtb3VudCBvZiBoZWFkcm9vbSByZXF1aXJlZC4gIFRoZSBnZW5lcmljCitQUFAgbGF5ZXIgd2lsbCBhdHRlbXB0IHRvIHByb3ZpZGUgdGhhdCBtdWNoIGhlYWRyb29tIGJ1dCB0aGUgY2hhbm5lbAorc2hvdWxkIHN0aWxsIGNoZWNrIGlmIHRoZXJlIGlzIHN1ZmZpY2llbnQgaGVhZHJvb20gYW5kIGNvcHkgdGhlIHNrYnVmZgoraWYgdGhlcmUgaXNuJ3QuCisKK09uIHRoZSBpbnB1dCBzaWRlLCBjaGFubmVscyBzaG91bGQgaWRlYWxseSBwcm92aWRlIGF0IGxlYXN0IDIgYnl0ZXMgb2YKK2hlYWRyb29tIGluIHRoZSBza2J1ZmZzIHByZXNlbnRlZCB0byBwcHBfaW5wdXQoKS4gIFRoZSBnZW5lcmljIFBQUAorY29kZSBkb2VzIG5vdCByZXF1aXJlIHRoaXMgYnV0IHdpbGwgYmUgbW9yZSBlZmZpY2llbnQgaWYgdGhpcyBpcyBkb25lLgorCisKK0J1ZmZlcmluZyBhbmQgZmxvdyBjb250cm9sCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZ2VuZXJpYyBQUFAgbGF5ZXIgaGFzIGJlZW4gZGVzaWduZWQgdG8gbWluaW1pemUgdGhlIGFtb3VudCBvZiBkYXRhCit0aGF0IGl0IGJ1ZmZlcnMgaW4gdGhlIHRyYW5zbWl0IGRpcmVjdGlvbi4gIEl0IG1haW50YWlucyBhIHF1ZXVlIG9mCit0cmFuc21pdCBwYWNrZXRzIGZvciB0aGUgUFBQIHVuaXQgKG5ldHdvcmsgaW50ZXJmYWNlIGRldmljZSkgcGx1cyBhCitxdWV1ZSBvZiB0cmFuc21pdCBwYWNrZXRzIGZvciBlYWNoIGF0dGFjaGVkIGNoYW5uZWwuICBOb3JtYWxseSB0aGUKK3RyYW5zbWl0IHF1ZXVlIGZvciB0aGUgdW5pdCB3aWxsIGNvbnRhaW4gYXQgbW9zdCBvbmUgcGFja2V0OyB0aGUKK2V4Y2VwdGlvbnMgYXJlIHdoZW4gcHBwZCBzZW5kcyBwYWNrZXRzIGJ5IHdyaXRpbmcgdG8gL2Rldi9wcHAsIGFuZAord2hlbiB0aGUgY29yZSBuZXR3b3JraW5nIGNvZGUgY2FsbHMgdGhlIGdlbmVyaWMgbGF5ZXIncyBzdGFydF94bWl0KCkKK2Z1bmN0aW9uIHdpdGggdGhlIHF1ZXVlIHN0b3BwZWQsIGkuZS4gd2hlbiB0aGUgZ2VuZXJpYyBsYXllciBoYXMKK2NhbGxlZCBuZXRpZl9zdG9wX3F1ZXVlKCksIHdoaWNoIG9ubHkgaGFwcGVucyBvbiBhIHRyYW5zbWl0IHRpbWVvdXQuCitUaGUgc3RhcnRfeG1pdCBmdW5jdGlvbiBhbHdheXMgYWNjZXB0cyBhbmQgcXVldWVzIHRoZSBwYWNrZXQgd2hpY2ggaXQKK2lzIGFza2VkIHRvIHRyYW5zbWl0LgorCitUcmFuc21pdCBwYWNrZXRzIGFyZSBkZXF1ZXVlZCBmcm9tIHRoZSBQUFAgdW5pdCB0cmFuc21pdCBxdWV1ZSBhbmQKK3RoZW4gc3ViamVjdGVkIHRvIFRDUC9JUCBoZWFkZXIgY29tcHJlc3Npb24gYW5kIHBhY2tldCBjb21wcmVzc2lvbgorKERlZmxhdGUgb3IgQlNELUNvbXByZXNzIGNvbXByZXNzaW9uKSwgYXMgYXBwcm9wcmlhdGUuICBBZnRlciB0aGlzCitwb2ludCB0aGUgcGFja2V0cyBjYW4gbm8gbG9uZ2VyIGJlIHJlb3JkZXJlZCwgYXMgdGhlIGRlY29tcHJlc3Npb24KK2FsZ29yaXRobXMgcmVseSBvbiByZWNlaXZpbmcgY29tcHJlc3NlZCBwYWNrZXRzIGluIHRoZSBzYW1lIG9yZGVyIHRoYXQKK3RoZXkgd2VyZSBnZW5lcmF0ZWQuCisKK0lmIG11bHRpbGluayBpcyBub3QgaW4gdXNlLCB0aGlzIHBhY2tldCBpcyB0aGVuIHBhc3NlZCB0byB0aGUgYXR0YWNoZWQKK2NoYW5uZWwncyBzdGFydF94bWl0KCkgZnVuY3Rpb24uICBJZiB0aGUgY2hhbm5lbCByZWZ1c2VzIHRvIHRha2UKK3RoZSBwYWNrZXQsIHRoZSBnZW5lcmljIGxheWVyIHNhdmVzIGl0IGZvciBsYXRlciB0cmFuc21pc3Npb24uICBUaGUKK2dlbmVyaWMgbGF5ZXIgd2lsbCBjYWxsIHRoZSBjaGFubmVsJ3Mgc3RhcnRfeG1pdCgpIGZ1bmN0aW9uIGFnYWluCit3aGVuIHRoZSBjaGFubmVsIGNhbGxzICBwcHBfb3V0cHV0X3dha2V1cCgpIG9yIHdoZW4gdGhlIGNvcmUKK25ldHdvcmtpbmcgY29kZSBjYWxscyB0aGUgZ2VuZXJpYyBsYXllcidzIHN0YXJ0X3htaXQoKSBmdW5jdGlvbgorYWdhaW4uICBUaGUgZ2VuZXJpYyBsYXllciBjb250YWlucyBubyB0aW1lb3V0IGFuZCByZXRyYW5zbWlzc2lvbgorbG9naWM7IGl0IHJlbGllcyBvbiB0aGUgY29yZSBuZXR3b3JraW5nIGNvZGUgZm9yIHRoYXQuCisKK0lmIG11bHRpbGluayBpcyBpbiB1c2UsIHRoZSBnZW5lcmljIGxheWVyIGRpdmlkZXMgdGhlIHBhY2tldCBpbnRvIG9uZQorb3IgbW9yZSBmcmFnbWVudHMgYW5kIHB1dHMgYSBtdWx0aWxpbmsgaGVhZGVyIG9uIGVhY2ggZnJhZ21lbnQuICBJdAorZGVjaWRlcyBob3cgbWFueSBmcmFnbWVudHMgdG8gdXNlIGJhc2VkIG9uIHRoZSBsZW5ndGggb2YgdGhlIHBhY2tldAorYW5kIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgd2hpY2ggYXJlIHBvdGVudGlhbGx5IGFibGUgdG8gYWNjZXB0IGEKK2ZyYWdtZW50IGF0IHRoZSBtb21lbnQuICBBIGNoYW5uZWwgaXMgcG90ZW50aWFsbHkgYWJsZSB0byBhY2NlcHQgYQorZnJhZ21lbnQgaWYgaXQgZG9lc24ndCBoYXZlIGFueSBmcmFnbWVudHMgY3VycmVudGx5IHF1ZXVlZCB1cCBmb3IgaXQKK3RvIHRyYW5zbWl0LiAgVGhlIGNoYW5uZWwgbWF5IHN0aWxsIHJlZnVzZSBhIGZyYWdtZW50OyBpbiB0aGlzIGNhc2UKK3RoZSBmcmFnbWVudCBpcyBxdWV1ZWQgdXAgZm9yIHRoZSBjaGFubmVsIHRvIHRyYW5zbWl0IGxhdGVyLiAgVGhpcworc2NoZW1lIGhhcyB0aGUgZWZmZWN0IHRoYXQgbW9yZSBmcmFnbWVudHMgYXJlIGdpdmVuIHRvIGhpZ2hlci0KK2JhbmR3aWR0aCBjaGFubmVscy4gIEl0IGFsc28gbWVhbnMgdGhhdCB1bmRlciBsaWdodCBsb2FkLCB0aGUgZ2VuZXJpYworbGF5ZXIgd2lsbCB0ZW5kIHRvIGZyYWdtZW50IGxhcmdlIHBhY2tldHMgYWNyb3NzIGFsbCB0aGUgY2hhbm5lbHMsCit0aHVzIHJlZHVjaW5nIGxhdGVuY3ksIHdoaWxlIHVuZGVyIGhlYXZ5IGxvYWQsIHBhY2tldHMgd2lsbCB0ZW5kIHRvIGJlCit0cmFuc21pdHRlZCBhcyBzaW5nbGUgZnJhZ21lbnRzLCB0aHVzIHJlZHVjaW5nIHRoZSBvdmVyaGVhZCBvZgorZnJhZ21lbnRhdGlvbi4KKworCitTTVAgc2FmZXR5CistLS0tLS0tLS0tCisKK1RoZSBQUFAgZ2VuZXJpYyBsYXllciBoYXMgYmVlbiBkZXNpZ25lZCB0byBiZSBTTVAtc2FmZS4gIExvY2tzIGFyZQordXNlZCBhcm91bmQgYWNjZXNzZXMgdG8gdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyB3aGVyZSBuZWNlc3NhcnkKK3RvIGVuc3VyZSB0aGVpciBpbnRlZ3JpdHkuICBBcyBwYXJ0IG9mIHRoaXMsIHRoZSBnZW5lcmljIGxheWVyCityZXF1aXJlcyB0aGF0IHRoZSBjaGFubmVscyBhZGhlcmUgdG8gY2VydGFpbiByZXF1aXJlbWVudHMgYW5kIGluIHR1cm4KK3Byb3ZpZGVzIGNlcnRhaW4gZ3VhcmFudGVlcyB0byB0aGUgY2hhbm5lbHMuICBFc3NlbnRpYWxseSB0aGUgY2hhbm5lbHMKK2FyZSByZXF1aXJlZCB0byBwcm92aWRlIHRoZSBhcHByb3ByaWF0ZSBsb2NraW5nIG9uIHRoZSBwcHBfY2hhbm5lbAorc3RydWN0dXJlcyB0aGF0IGZvcm0gdGhlIGJhc2lzIG9mIHRoZSBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlCitjaGFubmVsIGFuZCB0aGUgZ2VuZXJpYyBsYXllci4gIFRoaXMgaXMgYmVjYXVzZSB0aGUgY2hhbm5lbCBwcm92aWRlcwordGhlIHN0b3JhZ2UgZm9yIHRoZSBwcHBfY2hhbm5lbCBzdHJ1Y3R1cmUsIGFuZCBzbyB0aGUgY2hhbm5lbCBpcworcmVxdWlyZWQgdG8gcHJvdmlkZSB0aGUgZ3VhcmFudGVlIHRoYXQgdGhpcyBzdG9yYWdlIGV4aXN0cyBhbmQgaXMKK3ZhbGlkIGF0IHRoZSBhcHByb3ByaWF0ZSB0aW1lcy4KKworVGhlIGdlbmVyaWMgbGF5ZXIgcmVxdWlyZXMgdGhlc2UgZ3VhcmFudGVlcyBmcm9tIHRoZSBjaGFubmVsOgorCisqIFRoZSBwcHBfY2hhbm5lbCBvYmplY3QgbXVzdCBleGlzdCBmcm9tIHRoZSB0aW1lIHRoYXQKKyAgcHBwX3JlZ2lzdGVyX2NoYW5uZWwoKSBpcyBjYWxsZWQgdW50aWwgYWZ0ZXIgdGhlIGNhbGwgdG8KKyAgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbCgpIHJldHVybnMuCisKKyogTm8gdGhyZWFkIG1heSBiZSBpbiBhIGNhbGwgdG8gYW55IG9mIHBwcF9pbnB1dCgpLCBwcHBfaW5wdXRfZXJyb3IoKSwKKyAgcHBwX291dHB1dF93YWtldXAoKSwgcHBwX2NoYW5uZWxfaW5kZXgoKSBvciBwcHBfdW5pdF9udW1iZXIoKSBmb3IgYQorICBjaGFubmVsIGF0IHRoZSB0aW1lIHRoYXQgcHBwX3VucmVnaXN0ZXJfY2hhbm5lbCgpIGlzIGNhbGxlZCBmb3IgdGhhdAorICBjaGFubmVsLgorCisqIHBwcF9yZWdpc3Rlcl9jaGFubmVsKCkgYW5kIHBwcF91bnJlZ2lzdGVyX2NoYW5uZWwoKSBtdXN0IGJlIGNhbGxlZAorICBmcm9tIHByb2Nlc3MgY29udGV4dCwgbm90IGludGVycnVwdCBvciBzb2Z0aXJxL0JIIGNvbnRleHQuCisKKyogVGhlIHJlbWFpbmluZyBnZW5lcmljIGxheWVyIGZ1bmN0aW9ucyBtYXkgYmUgY2FsbGVkIGF0IHNvZnRpcnEvQkgKKyAgbGV2ZWwgYnV0IG11c3Qgbm90IGJlIGNhbGxlZCBmcm9tIGEgaGFyZHdhcmUgaW50ZXJydXB0IGhhbmRsZXIuCisKKyogVGhlIGdlbmVyaWMgbGF5ZXIgbWF5IGNhbGwgdGhlIGNoYW5uZWwgc3RhcnRfeG1pdCgpIGZ1bmN0aW9uIGF0CisgIHNvZnRpcnEvQkggbGV2ZWwgYnV0IHdpbGwgbm90IGNhbGwgaXQgYXQgaW50ZXJydXB0IGxldmVsLiAgVGh1cyB0aGUKKyAgc3RhcnRfeG1pdCgpIGZ1bmN0aW9uIG1heSBub3QgYmxvY2suCisKKyogVGhlIGdlbmVyaWMgbGF5ZXIgd2lsbCBvbmx5IGNhbGwgdGhlIGNoYW5uZWwgaW9jdGwoKSBmdW5jdGlvbiBpbgorICBwcm9jZXNzIGNvbnRleHQuCisKK1RoZSBnZW5lcmljIGxheWVyIHByb3ZpZGVzIHRoZXNlIGd1YXJhbnRlZXMgdG8gdGhlIGNoYW5uZWxzOgorCisqIFRoZSBnZW5lcmljIGxheWVyIHdpbGwgbm90IGNhbGwgdGhlIHN0YXJ0X3htaXQoKSBmdW5jdGlvbiBmb3IgYQorICBjaGFubmVsIHdoaWxlIGFueSB0aHJlYWQgaXMgYWxyZWFkeSBleGVjdXRpbmcgaW4gdGhhdCBmdW5jdGlvbiBmb3IKKyAgdGhhdCBjaGFubmVsLgorCisqIFRoZSBnZW5lcmljIGxheWVyIHdpbGwgbm90IGNhbGwgdGhlIGlvY3RsKCkgZnVuY3Rpb24gZm9yIGEgY2hhbm5lbAorICB3aGlsZSBhbnkgdGhyZWFkIGlzIGFscmVhZHkgZXhlY3V0aW5nIGluIHRoYXQgZnVuY3Rpb24gZm9yIHRoYXQKKyAgY2hhbm5lbC4KKworKiBCeSB0aGUgdGltZSBhIGNhbGwgdG8gcHBwX3VucmVnaXN0ZXJfY2hhbm5lbCgpIHJldHVybnMsIG5vIHRocmVhZAorICB3aWxsIGJlIGV4ZWN1dGluZyBpbiBhIGNhbGwgZnJvbSB0aGUgZ2VuZXJpYyBsYXllciB0byB0aGF0IGNoYW5uZWwncworICBzdGFydF94bWl0KCkgb3IgaW9jdGwoKSBmdW5jdGlvbiwgYW5kIHRoZSBnZW5lcmljIGxheWVyIHdpbGwgbm90CisgIGNhbGwgZWl0aGVyIG9mIHRob3NlIGZ1bmN0aW9ucyBzdWJzZXF1ZW50bHkuCisKKworSW50ZXJmYWNlIHRvIHBwcGQKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBQUFAgZ2VuZXJpYyBsYXllciBleHBvcnRzIGEgY2hhcmFjdGVyIGRldmljZSBpbnRlcmZhY2UgY2FsbGVkCisvZGV2L3BwcC4gIFRoaXMgaXMgdXNlZCBieSBwcHBkIHRvIGNvbnRyb2wgUFBQIGludGVyZmFjZSB1bml0cyBhbmQKK2NoYW5uZWxzLiAgQWx0aG91Z2ggdGhlcmUgaXMgb25seSBvbmUgL2Rldi9wcHAsIGVhY2ggb3BlbiBpbnN0YW5jZSBvZgorL2Rldi9wcHAgYWN0cyBpbmRlcGVuZGVudGx5IGFuZCBjYW4gYmUgYXR0YWNoZWQgZWl0aGVyIHRvIGEgUFBQIHVuaXQKK29yIGEgUFBQIGNoYW5uZWwuICBUaGlzIGlzIGFjaGlldmVkIHVzaW5nIHRoZSBmaWxlLT5wcml2YXRlX2RhdGEgZmllbGQKK3RvIHBvaW50IHRvIGEgc2VwYXJhdGUgb2JqZWN0IGZvciBlYWNoIG9wZW4gaW5zdGFuY2Ugb2YgL2Rldi9wcHAuICBJbgordGhpcyB3YXkgYW4gZWZmZWN0IHNpbWlsYXIgdG8gU29sYXJpcycgY2xvbmUgb3BlbiBpcyBvYnRhaW5lZCwKK2FsbG93aW5nIHVzIHRvIGNvbnRyb2wgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBQUFAgaW50ZXJmYWNlcyBhbmQKK2NoYW5uZWxzIHdpdGhvdXQgaGF2aW5nIHRvIGZpbGwgdXAgL2RldiB3aXRoIGh1bmRyZWRzIG9mIGRldmljZSBuYW1lcy4KKworV2hlbiAvZGV2L3BwcCBpcyBvcGVuZWQsIGEgbmV3IGluc3RhbmNlIGlzIGNyZWF0ZWQgd2hpY2ggaXMgaW5pdGlhbGx5Cit1bmF0dGFjaGVkLiAgVXNpbmcgYW4gaW9jdGwgY2FsbCwgaXQgY2FuIHRoZW4gYmUgYXR0YWNoZWQgdG8gYW4KK2V4aXN0aW5nIHVuaXQsIGF0dGFjaGVkIHRvIGEgbmV3bHktY3JlYXRlZCB1bml0LCBvciBhdHRhY2hlZCB0byBhbgorZXhpc3RpbmcgY2hhbm5lbC4gIEFuIGluc3RhbmNlIGF0dGFjaGVkIHRvIGEgdW5pdCBjYW4gYmUgdXNlZCB0byBzZW5kCithbmQgcmVjZWl2ZSBQUFAgY29udHJvbCBmcmFtZXMsIHVzaW5nIHRoZSByZWFkKCkgYW5kIHdyaXRlKCkgc3lzdGVtCitjYWxscywgYWxvbmcgd2l0aCBwb2xsKCkgaWYgbmVjZXNzYXJ5LiAgU2ltaWxhcmx5LCBhbiBpbnN0YW5jZQorYXR0YWNoZWQgdG8gYSBjaGFubmVsIGNhbiBiZSB1c2VkIHRvIHNlbmQgYW5kIHJlY2VpdmUgUFBQIGZyYW1lcyBvbgordGhhdCBjaGFubmVsLgorCitJbiBtdWx0aWxpbmsgdGVybXMsIHRoZSB1bml0IHJlcHJlc2VudHMgdGhlIGJ1bmRsZSwgd2hpbGUgdGhlIGNoYW5uZWxzCityZXByZXNlbnQgdGhlIGluZGl2aWR1YWwgcGh5c2ljYWwgbGlua3MuICBUaHVzLCBhIFBQUCBmcmFtZSBzZW50IGJ5IGEKK3dyaXRlIHRvIHRoZSB1bml0IChpLmUuLCB0byBhbiBpbnN0YW5jZSBvZiAvZGV2L3BwcCBhdHRhY2hlZCB0byB0aGUKK3VuaXQpIHdpbGwgYmUgc3ViamVjdCB0byBidW5kbGUtbGV2ZWwgY29tcHJlc3Npb24gYW5kIHRvIGZyYWdtZW50YXRpb24KK2Fjcm9zcyB0aGUgaW5kaXZpZHVhbCBsaW5rcyAoaWYgbXVsdGlsaW5rIGlzIGluIHVzZSkuICBJbiBjb250cmFzdCwgYQorUFBQIGZyYW1lIHNlbnQgYnkgYSB3cml0ZSB0byB0aGUgY2hhbm5lbCB3aWxsIGJlIHNlbnQgYXMtaXMgb24gdGhhdAorY2hhbm5lbCwgd2l0aG91dCBhbnkgbXVsdGlsaW5rIGhlYWRlci4KKworQSBjaGFubmVsIGlzIG5vdCBpbml0aWFsbHkgYXR0YWNoZWQgdG8gYW55IHVuaXQuICBJbiB0aGlzIHN0YXRlIGl0IGNhbgorYmUgdXNlZCBmb3IgUFBQIG5lZ290aWF0aW9uIGJ1dCBub3QgZm9yIHRoZSB0cmFuc2ZlciBvZiBkYXRhIHBhY2tldHMuCitJdCBjYW4gdGhlbiBiZSBjb25uZWN0ZWQgdG8gYSBQUFAgdW5pdCB3aXRoIGFuIGlvY3RsIGNhbGwsIHdoaWNoCittYWtlcyBpdCBhdmFpbGFibGUgdG8gc2VuZCBhbmQgcmVjZWl2ZSBkYXRhIHBhY2tldHMgZm9yIHRoYXQgdW5pdC4KKworVGhlIGlvY3RsIGNhbGxzIHdoaWNoIGFyZSBhdmFpbGFibGUgb24gYW4gaW5zdGFuY2Ugb2YgL2Rldi9wcHAgZGVwZW5kCitvbiB3aGV0aGVyIGl0IGlzIHVuYXR0YWNoZWQsIGF0dGFjaGVkIHRvIGEgUFBQIGludGVyZmFjZSwgb3IgYXR0YWNoZWQKK3RvIGEgUFBQIGNoYW5uZWwuICBUaGUgaW9jdGwgY2FsbHMgd2hpY2ggYXJlIGF2YWlsYWJsZSBvbiBhbgordW5hdHRhY2hlZCBpbnN0YW5jZSBhcmU6CisKKyogUFBQSU9DTkVXVU5JVCBjcmVhdGVzIGEgbmV3IFBQUCBpbnRlcmZhY2UgYW5kIG1ha2VzIHRoaXMgL2Rldi9wcHAKKyAgaW5zdGFuY2UgdGhlICJvd25lciIgb2YgdGhlIGludGVyZmFjZS4gIFRoZSBhcmd1bWVudCBzaG91bGQgcG9pbnQgdG8KKyAgYW4gaW50IHdoaWNoIGlzIHRoZSBkZXNpcmVkIHVuaXQgbnVtYmVyIGlmID49IDAsIG9yIC0xIHRvIGFzc2lnbiB0aGUKKyAgbG93ZXN0IHVudXNlZCB1bml0IG51bWJlci4gIEJlaW5nIHRoZSBvd25lciBvZiB0aGUgaW50ZXJmYWNlIG1lYW5zCisgIHRoYXQgdGhlIGludGVyZmFjZSB3aWxsIGJlIHNodXQgZG93biBpZiB0aGlzIGluc3RhbmNlIG9mIC9kZXYvcHBwIGlzCisgIGNsb3NlZC4KKworKiBQUFBJT0NBVFRBQ0ggYXR0YWNoZXMgdGhpcyBpbnN0YW5jZSB0byBhbiBleGlzdGluZyBQUFAgaW50ZXJmYWNlLgorICBUaGUgYXJndW1lbnQgc2hvdWxkIHBvaW50IHRvIGFuIGludCBjb250YWluaW5nIHRoZSB1bml0IG51bWJlci4KKyAgVGhpcyBkb2VzIG5vdCBtYWtlIHRoaXMgaW5zdGFuY2UgdGhlIG93bmVyIG9mIHRoZSBQUFAgaW50ZXJmYWNlLgorCisqIFBQUElPQ0FUVENIQU4gYXR0YWNoZXMgdGhpcyBpbnN0YW5jZSB0byBhbiBleGlzdGluZyBQUFAgY2hhbm5lbC4KKyAgVGhlIGFyZ3VtZW50IHNob3VsZCBwb2ludCB0byBhbiBpbnQgY29udGFpbmluZyB0aGUgY2hhbm5lbCBudW1iZXIuCisKK1RoZSBpb2N0bCBjYWxscyBhdmFpbGFibGUgb24gYW4gaW5zdGFuY2Ugb2YgL2Rldi9wcHAgYXR0YWNoZWQgdG8gYQorY2hhbm5lbCBhcmU6CisKKyogUFBQSU9DREVUQUNIIGRldGFjaGVzIHRoZSBpbnN0YW5jZSBmcm9tIHRoZSBjaGFubmVsLiAgVGhpcyBpb2N0bCBpcworICBkZXByZWNhdGVkIHNpbmNlIHRoZSBzYW1lIGVmZmVjdCBjYW4gYmUgYWNoaWV2ZWQgYnkgY2xvc2luZyB0aGUKKyAgaW5zdGFuY2UuICBJbiBvcmRlciB0byBwcmV2ZW50IHBvc3NpYmxlIHJhY2VzIHRoaXMgaW9jdGwgd2lsbCBmYWlsCisgIHdpdGggYW4gRUlOVkFMIGVycm9yIGlmIG1vcmUgdGhhbiBvbmUgZmlsZSBkZXNjcmlwdG9yIHJlZmVycyB0byB0aGlzCisgIGluc3RhbmNlIChpLmUuIGFzIGEgcmVzdWx0IG9mIGR1cCgpLCBkdXAyKCkgb3IgZm9yaygpKS4KKworKiBQUFBJT0NDT05ORUNUIGNvbm5lY3RzIHRoaXMgY2hhbm5lbCB0byBhIFBQUCBpbnRlcmZhY2UuICBUaGUKKyAgYXJndW1lbnQgc2hvdWxkIHBvaW50IHRvIGFuIGludCBjb250YWluaW5nIHRoZSBpbnRlcmZhY2UgdW5pdAorICBudW1iZXIuICBJdCB3aWxsIHJldHVybiBhbiBFSU5WQUwgZXJyb3IgaWYgdGhlIGNoYW5uZWwgaXMgYWxyZWFkeQorICBjb25uZWN0ZWQgdG8gYW4gaW50ZXJmYWNlLCBvciBFTlhJTyBpZiB0aGUgcmVxdWVzdGVkIGludGVyZmFjZSBkb2VzCisgIG5vdCBleGlzdC4KKworKiBQUFBJT0NESVNDT05OIGRpc2Nvbm5lY3RzIHRoaXMgY2hhbm5lbCBmcm9tIHRoZSBQUFAgaW50ZXJmYWNlIHRoYXQKKyAgaXQgaXMgY29ubmVjdGVkIHRvLiAgSXQgd2lsbCByZXR1cm4gYW4gRUlOVkFMIGVycm9yIGlmIHRoZSBjaGFubmVsCisgIGlzIG5vdCBjb25uZWN0ZWQgdG8gYW4gaW50ZXJmYWNlLgorCisqIEFsbCBvdGhlciBpb2N0bCBjb21tYW5kcyBhcmUgcGFzc2VkIHRvIHRoZSBjaGFubmVsIGlvY3RsKCkgZnVuY3Rpb24uCisKK1RoZSBpb2N0bCBjYWxscyB0aGF0IGFyZSBhdmFpbGFibGUgb24gYW4gaW5zdGFuY2UgdGhhdCBpcyBhdHRhY2hlZCB0bworYW4gaW50ZXJmYWNlIHVuaXQgYXJlOgorCisqIFBQUElPQ1NNUlUgc2V0cyB0aGUgTVJVIChtYXhpbXVtIHJlY2VpdmUgdW5pdCkgZm9yIHRoZSBpbnRlcmZhY2UuCisgIFRoZSBhcmd1bWVudCBzaG91bGQgcG9pbnQgdG8gYW4gaW50IGNvbnRhaW5pbmcgdGhlIG5ldyBNUlUgdmFsdWUuCisKKyogUFBQSU9DU0ZMQUdTIHNldHMgZmxhZ3Mgd2hpY2ggY29udHJvbCB0aGUgb3BlcmF0aW9uIG9mIHRoZQorICBpbnRlcmZhY2UuICBUaGUgYXJndW1lbnQgc2hvdWxkIGJlIGEgcG9pbnRlciB0byBhbiBpbnQgY29udGFpbmluZworICB0aGUgbmV3IGZsYWdzIHZhbHVlLiAgVGhlIGJpdHMgaW4gdGhlIGZsYWdzIHZhbHVlIHRoYXQgY2FuIGJlIHNldAorICBhcmU6CisJU0NfQ09NUF9UQ1AJCWVuYWJsZSB0cmFuc21pdCBUQ1AgaGVhZGVyIGNvbXByZXNzaW9uCisJU0NfTk9fVENQX0NDSUQJCWRpc2FibGUgY29ubmVjdGlvbi1pZCBjb21wcmVzc2lvbiBmb3IKKwkJCQlUQ1AgaGVhZGVyIGNvbXByZXNzaW9uCisJU0NfUkVKX0NPTVBfVENQCQlkaXNhYmxlIHJlY2VpdmUgVENQIGhlYWRlciBkZWNvbXByZXNzaW9uCisJU0NfQ0NQX09QRU4JCUNvbXByZXNzaW9uIENvbnRyb2wgUHJvdG9jb2wgKENDUCkgaXMKKwkJCQlvcGVuLCBzbyBpbnNwZWN0IENDUCBwYWNrZXRzCisJU0NfQ0NQX1VQCQlDQ1AgaXMgdXAsIG1heSAoZGUpY29tcHJlc3MgcGFja2V0cworCVNDX0xPT1BfVFJBRkZJQwkJc2VuZCBJUCB0cmFmZmljIHRvIHBwcGQKKwlTQ19NVUxUSUxJTksJCWVuYWJsZSBQUFAgbXVsdGlsaW5rIGZyYWdtZW50YXRpb24gb24KKwkJCQl0cmFuc21pdHRlZCBwYWNrZXRzCisJU0NfTVBfU0hPUlRTRVEJCWV4cGVjdCBzaG9ydCBtdWx0aWxpbmsgc2VxdWVuY2UKKwkJCQludW1iZXJzIG9uIHJlY2VpdmVkIG11bHRpbGluayBmcmFnbWVudHMKKwlTQ19NUF9YU0hPUlRTRVEJCXRyYW5zbWl0IHNob3J0IG11bHRpbGluayBzZXF1ZW5jZSBub3MuCisKKyAgVGhlIHZhbHVlcyBvZiB0aGVzZSBmbGFncyBhcmUgZGVmaW5lZCBpbiA8bGludXgvcHBwLWlvY3RsLmg+LiAgTm90ZQorICB0aGF0IHRoZSB2YWx1ZXMgb2YgdGhlIFNDX01VTFRJTElOSywgU0NfTVBfU0hPUlRTRVEgYW5kCisgIFNDX01QX1hTSE9SVFNFUSBiaXRzIGFyZSBpZ25vcmVkIGlmIHRoZSBDT05GSUdfUFBQX01VTFRJTElOSyBvcHRpb24KKyAgaXMgbm90IHNlbGVjdGVkLgorCisqIFBQUElPQ0dGTEFHUyByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgc3RhdHVzL2NvbnRyb2wgZmxhZ3MgZm9yIHRoZQorICBpbnRlcmZhY2UgdW5pdC4gIFRoZSBhcmd1bWVudCBzaG91bGQgcG9pbnQgdG8gYW4gaW50IHdoZXJlIHRoZSBpb2N0bAorICB3aWxsIHN0b3JlIHRoZSBmbGFncyB2YWx1ZS4gIEFzIHdlbGwgYXMgdGhlIHZhbHVlcyBsaXN0ZWQgYWJvdmUgZm9yCisgIFBQUElPQ1NGTEFHUywgdGhlIGZvbGxvd2luZyBiaXRzIG1heSBiZSBzZXQgaW4gdGhlIHJldHVybmVkIHZhbHVlOgorCVNDX0NPTVBfUlVOCQlDQ1AgY29tcHJlc3NvciBpcyBydW5uaW5nCisJU0NfREVDT01QX1JVTgkJQ0NQIGRlY29tcHJlc3NvciBpcyBydW5uaW5nCisJU0NfRENfRVJST1IJCUNDUCBkZWNvbXByZXNzb3IgZGV0ZWN0ZWQgbm9uLWZhdGFsIGVycm9yCisJU0NfRENfRkVSUk9SCQlDQ1AgZGVjb21wcmVzc29yIGRldGVjdGVkIGZhdGFsIGVycm9yCisKKyogUFBQSU9DU0NPTVBSRVNTIHNldHMgdGhlIHBhcmFtZXRlcnMgZm9yIHBhY2tldCBjb21wcmVzc2lvbiBvcgorICBkZWNvbXByZXNzaW9uLiAgVGhlIGFyZ3VtZW50IHNob3VsZCBwb2ludCB0byBhIHBwcF9vcHRpb25fZGF0YQorICBzdHJ1Y3R1cmUgKGRlZmluZWQgaW4gPGxpbnV4L3BwcC1pb2N0bC5oPiksIHdoaWNoIGNvbnRhaW5zIGEKKyAgcG9pbnRlci9sZW5ndGggcGFpciB3aGljaCBzaG91bGQgZGVzY3JpYmUgYSBibG9jayBvZiBtZW1vcnkKKyAgY29udGFpbmluZyBhIENDUCBvcHRpb24gc3BlY2lmeWluZyBhIGNvbXByZXNzaW9uIG1ldGhvZCBhbmQgaXRzCisgIHBhcmFtZXRlcnMuICBUaGUgcHBwX29wdGlvbl9kYXRhIHN0cnVjdCBhbHNvIGNvbnRhaW5zIGEgYHRyYW5zbWl0JworICBmaWVsZC4gIElmIHRoaXMgaXMgMCwgdGhlIGlvY3RsIHdpbGwgYWZmZWN0IHRoZSByZWNlaXZlIHBhdGgsCisgIG90aGVyd2lzZSB0aGUgdHJhbnNtaXQgcGF0aC4KKworKiBQUFBJT0NHVU5JVCByZXR1cm5zLCBpbiB0aGUgaW50IHBvaW50ZWQgdG8gYnkgdGhlIGFyZ3VtZW50LCB0aGUgdW5pdAorICBudW1iZXIgb2YgdGhpcyBpbnRlcmZhY2UgdW5pdC4KKworKiBQUFBJT0NTREVCVUcgc2V0cyB0aGUgZGVidWcgZmxhZ3MgZm9yIHRoZSBpbnRlcmZhY2UgdG8gdGhlIHZhbHVlIGluCisgIHRoZSBpbnQgcG9pbnRlZCB0byBieSB0aGUgYXJndW1lbnQuICBPbmx5IHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQKKyAgaXMgdXNlZDsgaWYgdGhpcyBpcyAxIHRoZSBnZW5lcmljIGxheWVyIHdpbGwgcHJpbnQgc29tZSBkZWJ1ZworICBtZXNzYWdlcyBkdXJpbmcgaXRzIG9wZXJhdGlvbi4gIFRoaXMgaXMgb25seSBpbnRlbmRlZCBmb3IgZGVidWdnaW5nCisgIHRoZSBnZW5lcmljIFBQUCBsYXllciBjb2RlOyBpdCBpcyBnZW5lcmFsbHkgbm90IGhlbHBmdWwgZm9yIHdvcmtpbmcKKyAgb3V0IHdoeSBhIFBQUCBjb25uZWN0aW9uIGlzIGZhaWxpbmcuCisKKyogUFBQSU9DR0RFQlVHIHJldHVybnMgdGhlIGRlYnVnIGZsYWdzIGZvciB0aGUgaW50ZXJmYWNlIGluIHRoZSBpbnQKKyAgcG9pbnRlZCB0byBieSB0aGUgYXJndW1lbnQuCisKKyogUFBQSU9DR0lETEUgcmV0dXJucyB0aGUgdGltZSwgaW4gc2Vjb25kcywgc2luY2UgdGhlIGxhc3QgZGF0YQorICBwYWNrZXRzIHdlcmUgc2VudCBhbmQgcmVjZWl2ZWQuICBUaGUgYXJndW1lbnQgc2hvdWxkIHBvaW50IHRvIGEKKyAgcHBwX2lkbGUgc3RydWN0dXJlIChkZWZpbmVkIGluIDxsaW51eC9wcHBfZGVmcy5oPikuICBJZiB0aGUKKyAgQ09ORklHX1BQUF9GSUxURVIgb3B0aW9uIGlzIGVuYWJsZWQsIHRoZSBzZXQgb2YgcGFja2V0cyB3aGljaCByZXNldAorICB0aGUgdHJhbnNtaXQgYW5kIHJlY2VpdmUgaWRsZSB0aW1lcnMgaXMgcmVzdHJpY3RlZCB0byB0aG9zZSB3aGljaAorICBwYXNzIHRoZSBgYWN0aXZlJyBwYWNrZXQgZmlsdGVyLgorCisqIFBQUElPQ1NNQVhDSUQgc2V0cyB0aGUgbWF4aW11bSBjb25uZWN0aW9uLUlEIHBhcmFtZXRlciAoYW5kIHRodXMgdGhlCisgIG51bWJlciBvZiBjb25uZWN0aW9uIHNsb3RzKSBmb3IgdGhlIFRDUCBoZWFkZXIgY29tcHJlc3NvciBhbmQKKyAgZGVjb21wcmVzc29yLiAgVGhlIGxvd2VyIDE2IGJpdHMgb2YgdGhlIGludCBwb2ludGVkIHRvIGJ5IHRoZQorICBhcmd1bWVudCBzcGVjaWZ5IHRoZSBtYXhpbXVtIGNvbm5lY3Rpb24tSUQgZm9yIHRoZSBjb21wcmVzc29yLiAgSWYKKyAgdGhlIHVwcGVyIDE2IGJpdHMgb2YgdGhhdCBpbnQgYXJlIG5vbi16ZXJvLCB0aGV5IHNwZWNpZnkgdGhlIG1heGltdW0KKyAgY29ubmVjdGlvbi1JRCBmb3IgdGhlIGRlY29tcHJlc3Nvciwgb3RoZXJ3aXNlIHRoZSBkZWNvbXByZXNzb3IncworICBtYXhpbXVtIGNvbm5lY3Rpb24tSUQgaXMgc2V0IHRvIDE1LgorCisqIFBQUElPQ1NOUE1PREUgc2V0cyB0aGUgbmV0d29yay1wcm90b2NvbCBtb2RlIGZvciBhIGdpdmVuIG5ldHdvcmsKKyAgcHJvdG9jb2wuICBUaGUgYXJndW1lbnQgc2hvdWxkIHBvaW50IHRvIGFuIG5waW9jdGwgc3RydWN0IChkZWZpbmVkCisgIGluIDxsaW51eC9wcHAtaW9jdGwuaD4pLiAgVGhlIGBwcm90b2NvbCcgZmllbGQgZ2l2ZXMgdGhlIFBQUCBwcm90b2NvbAorICBudW1iZXIgZm9yIHRoZSBwcm90b2NvbCB0byBiZSBhZmZlY3RlZCwgYW5kIHRoZSBgbW9kZScgZmllbGQKKyAgc3BlY2lmaWVzIHdoYXQgdG8gZG8gd2l0aCBwYWNrZXRzIGZvciB0aGF0IHByb3RvY29sOgorCisJTlBNT0RFX1BBU1MJbm9ybWFsIG9wZXJhdGlvbiwgdHJhbnNtaXQgYW5kIHJlY2VpdmUgcGFja2V0cworCU5QTU9ERV9EUk9QCXNpbGVudGx5IGRyb3AgcGFja2V0cyBmb3IgdGhpcyBwcm90b2NvbAorCU5QTU9ERV9FUlJPUglkcm9wIHBhY2tldHMgYW5kIHJldHVybiBhbiBlcnJvciBvbiB0cmFuc21pdAorCU5QTU9ERV9RVUVVRQlxdWV1ZSB1cCBwYWNrZXRzIGZvciB0cmFuc21pdCwgZHJvcCByZWNlaXZlZAorCQkJcGFja2V0cworCisgIEF0IHByZXNlbnQgTlBNT0RFX0VSUk9SIGFuZCBOUE1PREVfUVVFVUUgaGF2ZSB0aGUgc2FtZSBlZmZlY3QgYXMKKyAgTlBNT0RFX0RST1AuCisKKyogUFBQSU9DR05QTU9ERSByZXR1cm5zIHRoZSBuZXR3b3JrLXByb3RvY29sIG1vZGUgZm9yIGEgZ2l2ZW4KKyAgcHJvdG9jb2wuICBUaGUgYXJndW1lbnQgc2hvdWxkIHBvaW50IHRvIGFuIG5waW9jdGwgc3RydWN0IHdpdGggdGhlCisgIGBwcm90b2NvbCcgZmllbGQgc2V0IHRvIHRoZSBQUFAgcHJvdG9jb2wgbnVtYmVyIGZvciB0aGUgcHJvdG9jb2wgb2YKKyAgaW50ZXJlc3QuICBPbiByZXR1cm4gdGhlIGBtb2RlJyBmaWVsZCB3aWxsIGJlIHNldCB0byB0aGUgbmV0d29yay0KKyAgcHJvdG9jb2wgbW9kZSBmb3IgdGhhdCBwcm90b2NvbC4KKworKiBQUFBJT0NTUEFTUyBhbmQgUFBQSU9DU0FDVElWRSBzZXQgdGhlIGBwYXNzJyBhbmQgYGFjdGl2ZScgcGFja2V0CisgIGZpbHRlcnMuICBUaGVzZSBpb2N0bHMgYXJlIG9ubHkgYXZhaWxhYmxlIGlmIHRoZSBDT05GSUdfUFBQX0ZJTFRFUgorICBvcHRpb24gaXMgc2VsZWN0ZWQuICBUaGUgYXJndW1lbnQgc2hvdWxkIHBvaW50IHRvIGEgc29ja19mcHJvZworICBzdHJ1Y3R1cmUgKGRlZmluZWQgaW4gPGxpbnV4L2ZpbHRlci5oPikgY29udGFpbmluZyB0aGUgY29tcGlsZWQgQlBGCisgIGluc3RydWN0aW9ucyBmb3IgdGhlIGZpbHRlci4gIFBhY2tldHMgYXJlIGRyb3BwZWQgaWYgdGhleSBmYWlsIHRoZQorICBgcGFzcycgZmlsdGVyOyBvdGhlcndpc2UsIGlmIHRoZXkgZmFpbCB0aGUgYGFjdGl2ZScgZmlsdGVyIHRoZXkgYXJlCisgIHBhc3NlZCBidXQgdGhleSBkbyBub3QgcmVzZXQgdGhlIHRyYW5zbWl0IG9yIHJlY2VpdmUgaWRsZSB0aW1lci4KKworKiBQUFBJT0NTTVJSVSBlbmFibGVzIG9yIGRpc2FibGVzIG11bHRpbGluayBwcm9jZXNzaW5nIGZvciByZWNlaXZlZAorICBwYWNrZXRzIGFuZCBzZXRzIHRoZSBtdWx0aWxpbmsgTVJSVSAobWF4aW11bSByZWNvbnN0cnVjdGVkIHJlY2VpdmUKKyAgdW5pdCkuICBUaGUgYXJndW1lbnQgc2hvdWxkIHBvaW50IHRvIGFuIGludCBjb250YWluaW5nIHRoZSBuZXcgTVJSVQorICB2YWx1ZS4gIElmIHRoZSBNUlJVIHZhbHVlIGlzIDAsIHByb2Nlc3Npbmcgb2YgcmVjZWl2ZWQgbXVsdGlsaW5rCisgIGZyYWdtZW50cyBpcyBkaXNhYmxlZC4gIFRoaXMgaW9jdGwgaXMgb25seSBhdmFpbGFibGUgaWYgdGhlCisgIENPTkZJR19QUFBfTVVMVElMSU5LIG9wdGlvbiBpcyBzZWxlY3RlZC4KKworTGFzdCBtb2RpZmllZDogNy1mZWItMjAwMgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3Byb2NfbmV0X3RjcC50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcHJvY19uZXRfdGNwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTc5MjA5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3Byb2NfbmV0X3RjcC50eHQKQEAgLTAsMCArMSw0OCBAQAorVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIGludGVyZmFjZXMgL3Byb2MvbmV0L3RjcCBhbmQgL3Byb2MvbmV0L3RjcDYuCitOb3RlIHRoYXQgdGhlc2UgaW50ZXJmYWNlcyBhcmUgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB0Y3BfZGlhZy4KKworVGhlc2UgL3Byb2MgaW50ZXJmYWNlcyBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IGN1cnJlbnRseSBhY3RpdmUgVENQIAorY29ubmVjdGlvbnMsIGFuZCBhcmUgaW1wbGVtZW50ZWQgYnkgdGNwNF9zZXFfc2hvdygpIGluIG5ldC9pcHY0L3RjcF9pcHY0LmMKK2FuZCB0Y3A2X3NlcV9zaG93KCkgaW4gbmV0L2lwdjYvdGNwX2lwdjYuYywgcmVzcGVjdGl2ZWx5LgorCitJdCB3aWxsIGZpcnN0IGxpc3QgYWxsIGxpc3RlbmluZyBUQ1Agc29ja2V0cywgYW5kIG5leHQgbGlzdCBhbGwgZXN0YWJsaXNoZWQKK1RDUCBjb25uZWN0aW9ucy4gQSB0eXBpY2FsIGVudHJ5IG9mIC9wcm9jL25ldC90Y3Agd291bGQgbG9vayBsaWtlIHRoaXMgKHNwbGl0IAordXAgaW50byAzIHBhcnRzIGJlY2F1c2Ugb2YgdGhlIGxlbmd0aCBvZiB0aGUgbGluZSk6CisKKyAgIDQ2OiAwMTAzMTBBQzo5QzRDIDAzMDMxMEFDOjE3NzAgMDEgCisgICB8ICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgfCAgIHwtLT4gY29ubmVjdGlvbiBzdGF0ZQorICAgfCAgICAgIHwgICAgICB8ICAgICAgfCAgICAgIHwtLS0tLS0+IHJlbW90ZSBUQ1AgcG9ydCBudW1iZXIKKyAgIHwgICAgICB8ICAgICAgfCAgICAgIHwtLS0tLS0tLS0tLS0tPiByZW1vdGUgSVB2NCBhZGRyZXNzCisgICB8ICAgICAgfCAgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLT4gbG9jYWwgVENQIHBvcnQgbnVtYmVyCisgICB8ICAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4gbG9jYWwgSVB2NCBhZGRyZXNzCisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4gbnVtYmVyIG9mIGVudHJ5CisKKyAgIDAwMDAwMTUwOjAwMDAwMDAwIDAxOjAwMDAwMDE5IDAwMDAwMDAwICAKKyAgICAgIHwgICAgICAgIHwgICAgIHwgICAgIHwgICAgICAgfC0tPiBudW1iZXIgb2YgdW5yZWNvdmVyZWQgUlRPIHRpbWVvdXRzCisgICAgICB8ICAgICAgICB8ICAgICB8ICAgICB8LS0tLS0tLS0tLT4gbnVtYmVyIG9mIGppZmZpZXMgdW50aWwgdGltZXIgZXhwaXJlcworICAgICAgfCAgICAgICAgfCAgICAgfC0tLS0tLS0tLS0tLS0tLS0+IHRpbWVyX2FjdGl2ZSAoc2VlIGJlbG93KQorICAgICAgfCAgICAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+IHJlY2VpdmUtcXVldWUKKyAgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiB0cmFuc21pdC1xdWV1ZQorCisgICAxMDAwICAgICAgICAwIDU0MTY1Nzg1IDQgY2QxZTYwNDAgMjUgNCAyNyAzIC0xCisgICAgfCAgICAgICAgICB8ICAgIHwgICAgIHwgICAgfCAgICAgfCAgfCB8ICB8IHwtLT4gc2xvdyBzdGFydCBzaXplIHRocmVzaG9sZCwgCisgICAgfCAgICAgICAgICB8ICAgIHwgICAgIHwgICAgfCAgICAgfCAgfCB8ICB8ICAgICAgb3IgLTEgaWYgdGhlIHRocmVzaG9sZAorICAgIHwgICAgICAgICAgfCAgICB8ICAgICB8ICAgIHwgICAgIHwgIHwgfCAgfCAgICAgIGlzID49IDB4RkZGRgorICAgIHwgICAgICAgICAgfCAgICB8ICAgICB8ICAgIHwgICAgIHwgIHwgfCAgfC0tLS0+IHNlbmRpbmcgY29uZ2VzdGlvbiB3aW5kb3cKKyAgICB8ICAgICAgICAgIHwgICAgfCAgICAgfCAgICB8ICAgICB8ICB8IHwtLS0tLS0tPiAoYWNrLnF1aWNrPDwxKXxhY2sucGluZ3BvbmcKKyAgICB8ICAgICAgICAgIHwgICAgfCAgICAgfCAgICB8ICAgICB8ICB8LS0tLS0tLS0tPiBQcmVkaWN0ZWQgdGljayBvZiBzb2Z0IGNsb2NrCisgICAgfCAgICAgICAgICB8ICAgIHwgICAgIHwgICAgfCAgICAgfCAgICAgICAgICAgICAgKGRlbGF5ZWQgQUNLIGNvbnRyb2wgZGF0YSkKKyAgICB8ICAgICAgICAgIHwgICAgfCAgICAgfCAgICB8ICAgICB8LS0tLS0tLS0tLS0tPiByZXRyYW5zbWl0IHRpbWVvdXQKKyAgICB8ICAgICAgICAgIHwgICAgfCAgICAgfCAgICB8LS0tLS0tLS0tLS0tLS0tLS0tPiBsb2NhdGlvbiBvZiBzb2NrZXQgaW4gbWVtb3J5CisgICAgfCAgICAgICAgICB8ICAgIHwgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4gc29ja2V0IHJlZmVyZW5jZSBjb3VudAorICAgIHwgICAgICAgICAgfCAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+IGlub2RlCisgICAgfCAgICAgICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4gdW5hbnN3ZXJlZCAwLXdpbmRvdyBwcm9iZXMKKyAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiB1aWQKKwordGltZXJfYWN0aXZlOgorICAwICBubyB0aW1lciBpcyBwZW5kaW5nCisgIDEgIHJldHJhbnNtaXQtdGltZXIgaXMgcGVuZGluZworICAyICBhbm90aGVyIHRpbWVyIChlLmcuIGRlbGF5ZWQgYWNrIG9yIGtlZXBhbGl2ZSkgaXMgcGVuZGluZworICAzICB0aGlzIGlzIGEgc29ja2V0IGluIFRJTUVfV0FJVCBzdGF0ZS4gTm90IGFsbCBmaWVsZHMgd2lsbCBjb250YWluIAorICAgICBkYXRhIChvciBldmVuIGV4aXN0KQorICA0ICB6ZXJvIHdpbmRvdyBwcm9iZSB0aW1lciBpcyBwZW5kaW5nCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcmFkaW90YXAtaGVhZGVycy50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcmFkaW90YXAtaGVhZGVycy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTUzMzMxYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9yYWRpb3RhcC1oZWFkZXJzLnR4dApAQCAtMCwwICsxLDE1MiBAQAorSG93IHRvIHVzZSByYWRpb3RhcCBoZWFkZXJzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUG9pbnRlciB0byB0aGUgcmFkaW90YXAgaW5jbHVkZSBmaWxlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmFkaW90YXAgaGVhZGVycyBhcmUgdmFyaWFibGUtbGVuZ3RoIGFuZCBleHRlbnNpYmxlLCB5b3UgY2FuIGdldCBtb3N0IG9mIHRoZQoraW5mb3JtYXRpb24geW91IG5lZWQgdG8ga25vdyBvbiB0aGVtIGZyb206CisKKy4vaW5jbHVkZS9uZXQvaWVlZTgwMjExX3JhZGlvdGFwLmgKKworVGhpcyBkb2N1bWVudCBnaXZlcyBhbiBvdmVydmlldyBhbmQgd2FybnMgb24gc29tZSBjb3JuZXIgY2FzZXMuCisKKworU3RydWN0dXJlIG9mIHRoZSBoZWFkZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXJlIGlzIGEgZml4ZWQgcG9ydGlvbiBhdCB0aGUgc3RhcnQgd2hpY2ggY29udGFpbnMgYSB1MzIgYml0bWFwIHRoYXQgZGVmaW5lcworaWYgdGhlIHBvc3NpYmxlIGFyZ3VtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGF0IGJpdCBpcyBwcmVzZW50IG9yIG5vdC4gIFNvIGlmIGIwCitvZiB0aGUgaXRfcHJlc2VudCBtZW1iZXIgb2YgaWVlZTgwMjExX3JhZGlvdGFwX2hlYWRlciBpcyBzZXQsIGl0IG1lYW5zIHRoYXQKK3RoZSBoZWFkZXIgZm9yIGFyZ3VtZW50IGluZGV4IDAgKElFRUU4MDIxMV9SQURJT1RBUF9UU0ZUKSBpcyBwcmVzZW50IGluIHRoZQorYXJndW1lbnQgYXJlYS4KKworICAgPCA4LWJ5dGUgaWVlZTgwMjExX3JhZGlvdGFwX2hlYWRlciA+CisgICBbIDxwb3NzaWJsZSBhcmd1bWVudCBiaXRtYXAgZXh0ZW5zaW9ucyAuLi4gPiBdCisgICBbIDxhcmd1bWVudD4gLi4uIF0KKworQXQgdGhlIG1vbWVudCB0aGVyZSBhcmUgb25seSAxMyBwb3NzaWJsZSBhcmd1bWVudCBpbmRleGVzIGRlZmluZWQsIGJ1dCBpbiBjYXNlCit3ZSBydW4gb3V0IG9mIHNwYWNlIGluIHRoZSB1MzIgaXRfcHJlc2VudCBtZW1iZXIsIGl0IGlzIGRlZmluZWQgdGhhdCBiMzEgc2V0CitpbmRpY2F0ZXMgdGhhdCB0aGVyZSBpcyBhbm90aGVyIHUzMiBiaXRtYXAgZm9sbG93aW5nIChzaG93biBhcyAicG9zc2libGUKK2FyZ3VtZW50IGJpdG1hcCBleHRlbnNpb25zLi4uIiBhYm92ZSksIGFuZCB0aGUgc3RhcnQgb2YgdGhlIGFyZ3VtZW50cyBpcyBtb3ZlZAorZm9yd2FyZCA0IGJ5dGVzIGVhY2ggdGltZS4KKworTm90ZSBhbHNvIHRoYXQgdGhlIGl0X2xlbiBtZW1iZXIgX19sZTE2IGlzIHNldCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzCitjb3ZlcmVkIGJ5IHRoZSBpZWVlODAyMTFfcmFkaW90YXBfaGVhZGVyIGFuZCBhbnkgYXJndW1lbnRzIGZvbGxvd2luZy4KKworCitSZXF1aXJlbWVudHMgZm9yIGFyZ3VtZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWZ0ZXIgdGhlIGZpeGVkIHBhcnQgb2YgdGhlIGhlYWRlciwgdGhlIGFyZ3VtZW50cyBmb2xsb3cgZm9yIGVhY2ggYXJndW1lbnQKK2luZGV4IHdob3NlIG1hdGNoaW5nIGJpdCBpcyBzZXQgaW4gdGhlIGl0X3ByZXNlbnQgbWVtYmVyIG9mCitpZWVlODAyMTFfcmFkaW90YXBfaGVhZGVyLgorCisgLSB0aGUgYXJndW1lbnRzIGFyZSBhbGwgc3RvcmVkIGxpdHRsZS1lbmRpYW4hCisKKyAtIHRoZSBhcmd1bWVudCBwYXlsb2FkIGZvciBhIGdpdmVuIGFyZ3VtZW50IGluZGV4IGhhcyBhIGZpeGVkIHNpemUuICBTbworICAgSUVFRTgwMjExX1JBRElPVEFQX1RTRlQgYmVpbmcgcHJlc2VudCBhbHdheXMgaW5kaWNhdGVzIGFuIDgtYnl0ZSBhcmd1bWVudCBpcworICAgcHJlc2VudC4gIFNlZSB0aGUgY29tbWVudHMgaW4gLi9pbmNsdWRlL25ldC9pZWVlODAyMTFfcmFkaW90YXAuaCBmb3IgYSBuaWNlCisgICBicmVha2Rvd24gb2YgYWxsIHRoZSBhcmd1bWVudCBzaXplcworCisgLSB0aGUgYXJndW1lbnRzIG11c3QgYmUgYWxpZ25lZCB0byBhIGJvdW5kYXJ5IG9mIHRoZSBhcmd1bWVudCBzaXplIHVzaW5nCisgICBwYWRkaW5nLiAgU28gYSB1MTYgYXJndW1lbnQgbXVzdCBzdGFydCBvbiB0aGUgbmV4dCB1MTYgYm91bmRhcnkgaWYgaXQgaXNuJ3QKKyAgIGFscmVhZHkgb24gb25lLCBhIHUzMiBtdXN0IHN0YXJ0IG9uIHRoZSBuZXh0IHUzMiBib3VuZGFyeSBhbmQgc28gb24uCisKKyAtICJhbGlnbm1lbnQiIGlzIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgaWVlZTgwMjExX3JhZGlvdGFwX2hlYWRlciwgaWUsCisgICB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgcmFkaW90YXAgaGVhZGVyLiAgVGhlIGFic29sdXRlIGFsaWdubWVudCBvZiB0aGF0IGZpcnN0CisgICBieXRlIGlzbid0IGRlZmluZWQuICBTbyBldmVuIGlmIHRoZSB3aG9sZSByYWRpb3RhcCBoZWFkZXIgaXMgc3RhcnRpbmcgYXQsIGVnLAorICAgYWRkcmVzcyAweDAwMDAwMDAzLCBzdGlsbCB0aGUgZmlyc3QgYnl0ZSBvZiB0aGUgcmFkaW90YXAgaGVhZGVyIGlzIHRyZWF0ZWQgYXMKKyAgIDAgZm9yIGFsaWdubWVudCBwdXJwb3Nlcy4KKworIC0gdGhlIGFib3ZlIHBvaW50IHRoYXQgdGhlcmUgbWF5IGJlIG5vIGFic29sdXRlIGFsaWdubWVudCBmb3IgbXVsdGlieXRlCisgICBlbnRpdGllcyBpbiB0aGUgZml4ZWQgcmFkaW90YXAgaGVhZGVyIG9yIHRoZSBhcmd1bWVudCByZWdpb24gbWVhbnMgdGhhdCB5b3UKKyAgIGhhdmUgdG8gdGFrZSBzcGVjaWFsIGV2YXNpdmUgYWN0aW9uIHdoZW4gdHJ5aW5nIHRvIGFjY2VzcyB0aGVzZSBtdWx0aWJ5dGUKKyAgIGVudGl0aWVzLiAgU29tZSBhcmNoZXMgbGlrZSBCbGFja2ZpbiBjYW5ub3QgZGVhbCB3aXRoIGFuIGF0dGVtcHQgdG8KKyAgIGRlcmVmZXJlbmNlLCBlZywgYSB1MTYgcG9pbnRlciB0aGF0IGlzIHBvaW50aW5nIHRvIGFuIG9kZCBhZGRyZXNzLiAgSW5zdGVhZAorICAgeW91IGhhdmUgdG8gdXNlIGEga2VybmVsIEFQSSBnZXRfdW5hbGlnbmVkKCkgdG8gZGVyZWZlcmVuY2UgdGhlIHBvaW50ZXIsCisgICB3aGljaCB3aWxsIGRvIGl0IGJ5dGV3aXNlIG9uIHRoZSBhcmNoZXMgdGhhdCByZXF1aXJlIHRoYXQuCisKKyAtIFRoZSBhcmd1bWVudHMgZm9yIGEgZ2l2ZW4gYXJndW1lbnQgaW5kZXggY2FuIGJlIGEgY29tcG91bmQgb2YgbXVsdGlwbGUgdHlwZXMKKyAgIHRvZ2V0aGVyLiAgRm9yIGV4YW1wbGUgSUVFRTgwMjExX1JBRElPVEFQX0NIQU5ORUwgaGFzIGFuIGFyZ3VtZW50IHBheWxvYWQKKyAgIGNvbnNpc3Rpbmcgb2YgdHdvIHUxNnMgb2YgdG90YWwgbGVuZ3RoIDQuICBXaGVuIHRoaXMgaGFwcGVucywgdGhlIHBhZGRpbmcKKyAgIHJ1bGUgaXMgYXBwbGllZCBkZWFsaW5nIHdpdGggYSB1MTYsIE5PVCBkZWFsaW5nIHdpdGggYSA0LWJ5dGUgc2luZ2xlIGVudGl0eS4KKworCitFeGFtcGxlIHZhbGlkIHJhZGlvdGFwIGhlYWRlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCTB4MDAsIDB4MDAsIC8vIDwtLSByYWRpb3RhcCB2ZXJzaW9uICsgcGFkIGJ5dGUKKwkweDBiLCAweDAwLCAvLyA8LSByYWRpb3RhcCBoZWFkZXIgbGVuZ3RoCisJMHgwNCwgMHgwYywgMHgwMCwgMHgwMCwgLy8gPC0tIGJpdG1hcAorCTB4NmMsIC8vIDwtLSByYXRlIChpbiA1MDBrSHogdW5pdHMpCisJMHgwYywgLy88LS0gdHggcG93ZXIKKwkweDAxIC8vPC0tIGFudGVubmEKKworCitVc2luZyB0aGUgUmFkaW90YXAgUGFyc2VyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHlvdSBhcmUgaGF2aW5nIHRvIHBhcnNlIGEgcmFkaW90YXAgc3RydWN0LCB5b3UgY2FuIHJhZGljYWxseSBzaW1wbGlmeSB0aGUKK2pvYiBieSB1c2luZyB0aGUgcmFkaW90YXAgcGFyc2VyIHRoYXQgbGl2ZXMgaW4gbmV0L3dpcmVsZXNzL3JhZGlvdGFwLmMgYW5kIGhhcworaXRzIHByb3RvdHlwZXMgYXZhaWxhYmxlIGluIGluY2x1ZGUvbmV0L2NmZzgwMjExLmguICBZb3UgdXNlIGl0IGxpa2UgdGhpczoKKworI2luY2x1ZGUgPG5ldC9jZmc4MDIxMS5oPgorCisvKiBidWYgcG9pbnRzIHRvIHRoZSBzdGFydCBvZiB0aGUgcmFkaW90YXAgaGVhZGVyIHBhcnQgKi8KKworaW50IE15RnVuY3Rpb24odTggKiBidWYsIGludCBidWZsZW4pCit7CisJaW50IHBrdF9yYXRlXzEwMGtIeiA9IDAsIGFudGVubmEgPSAwLCBwd3IgPSAwOworCXN0cnVjdCBpZWVlODAyMTFfcmFkaW90YXBfaXRlcmF0b3IgaXRlcmF0b3I7CisJaW50IHJldCA9IGllZWU4MDIxMV9yYWRpb3RhcF9pdGVyYXRvcl9pbml0KCZpdGVyYXRvciwgYnVmLCBidWZsZW4pOworCisJd2hpbGUgKCFyZXQpIHsKKworCQlyZXQgPSBpZWVlODAyMTFfcmFkaW90YXBfaXRlcmF0b3JfbmV4dCgmaXRlcmF0b3IpOworCisJCWlmIChyZXQpCisJCQljb250aW51ZTsKKworCQkvKiBzZWUgaWYgdGhpcyBhcmd1bWVudCBpcyBzb21ldGhpbmcgd2UgY2FuIHVzZSAqLworCisJCXN3aXRjaCAoaXRlcmF0b3IudGhpc19hcmdfaW5kZXgpIHsKKwkJLyoKKwkJICogWW91IG11c3QgdGFrZSBjYXJlIHdoZW4gZGVyZWZlcmVuY2luZyBpdGVyYXRvci50aGlzX2FyZworCQkgKiBmb3IgbXVsdGlieXRlIHR5cGVzLi4uIHRoZSBwb2ludGVyIGlzIG5vdCBhbGlnbmVkLiAgVXNlCisJCSAqIGdldF91bmFsaWduZWQoKHR5cGUgKilpdGVyYXRvci50aGlzX2FyZykgdG8gZGVyZWZlcmVuY2UKKwkJICogaXRlcmF0b3IudGhpc19hcmcgZm9yIHR5cGUgInR5cGUiIHNhZmVseSBvbiBhbGwgYXJjaGVzLgorCQkgKi8KKwkJY2FzZSBJRUVFODAyMTFfUkFESU9UQVBfUkFURToKKwkJCS8qIHJhZGlvdGFwICJyYXRlIiB1OCBpcyBpbgorCQkJICogNTAwa2JwcyB1bml0cywgZWcsIDB4MDI9MU1icHMKKwkJCSAqLworCQkJcGt0X3JhdGVfMTAwa0h6ID0gKCppdGVyYXRvci50aGlzX2FyZykgKiA1OworCQkJYnJlYWs7CisKKwkJY2FzZSBJRUVFODAyMTFfUkFESU9UQVBfQU5URU5OQToKKwkJCS8qIHJhZGlvdGFwIHVzZXMgMCBmb3IgMXN0IGFudCAqLworCQkJYW50ZW5uYSA9ICppdGVyYXRvci50aGlzX2FyZyk7CisJCQlicmVhazsKKworCQljYXNlIElFRUU4MDIxMV9SQURJT1RBUF9EQk1fVFhfUE9XRVI6CisJCQlwd3IgPSAqaXRlcmF0b3IudGhpc19hcmc7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJYnJlYWs7CisJCX0KKwl9ICAvKiB3aGlsZSBtb3JlIHJ0IGhlYWRlcnMgKi8KKworCWlmIChyZXQgIT0gLUVOT0VOVCkKKwkJcmV0dXJuIFRYUlhfRFJPUDsKKworCS8qIGRpc2NhcmQgdGhlIHJhZGlvdGFwIGhlYWRlciBwYXJ0ICovCisJYnVmICs9IGl0ZXJhdG9yLm1heF9sZW5ndGg7CisJYnVmbGVuIC09IGl0ZXJhdG9yLm1heF9sZW5ndGg7CisKKwkuLi4KKworfQorCitBbmR5IEdyZWVuIDxhbmR5QHdhcm1jYXQuY29tPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3JheV9jcy50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcmF5X2NzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGMxMjMwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3JheV9jcy50eHQKQEAgLTAsMCArMSwxNTAgQEAKK1NlcHRlbWJlciAyMSwgMTk5OQorCitDb3B5cmlnaHQgKGMpIDE5OTggIENvcmV5IFRob21hcyAoY29yZXlAd29ybGQuc3RkLmNvbSkKKworVGhpcyBmaWxlIGlzIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgUmF5bGluayBXaXJlbGVzcyBMQU4gY2FyZCBkcml2ZXIgZm9yCitMaW51eC4gIFRoZSBSYXlsaW5rIHdpcmVsZXNzIExBTiBjYXJkIGlzIGEgUENNQ0lBIGNhcmQgd2hpY2ggcHJvdmlkZXMgSUVFRQorODAyLjExIGNvbXBhdGlibGUgd2lyZWxlc3MgbmV0d29yayBjb25uZWN0aXZpdHkgYXQgMSBhbmQgMiBtZWdhYml0cy9zZWNvbmQuCitTZWUgaHR0cDovL3d3dy5yYXl0aGVvbi5jb20vbWljcm8vcmF5bGluay8gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIFJheWxpbmsKK2NhcmQuICBUaGlzIGRyaXZlciBpcyBpbiBlYXJseSBkZXZlbG9wbWVudCBhbmQgZG9lcyBoYXZlIGJ1Z3MuICBTZWUgdGhlIGtub3duCitidWdzIGFuZCBsaW1pdGF0aW9ucyBhdCB0aGUgZW5kIG9mIHRoaXMgZG9jdW1lbnQgZm9yIG1vcmUgaW5mb3JtYXRpb24uCitUaGlzIGRyaXZlciBhbHNvIHdvcmtzIHdpdGggV2ViR2VhcidzIEF2aWF0b3IgMi40IGFuZCBBdmlhdG9yIFBybword2lyZWxlc3MgTEFOIGNhcmRzLgorCitBcyBvZiBrZXJuZWwgMi4zLjE4LCB0aGUgcmF5X2NzIGRyaXZlciBpcyBwYXJ0IG9mIHRoZSBMaW51eCBrZXJuZWwKK3NvdXJjZS4gIE15IHdlYiBwYWdlIGZvciB0aGUgZGV2ZWxvcG1lbnQgb2YgcmF5X2NzIGlzIGF0CitodHRwOi8vd2ViLnJhbGlua3RlY2guY29tL3JhbGluay9Ib21lL1N1cHBvcnQvTGludXguaHRtbCAKK2FuZCBJIGNhbiBiZSBlbWFpbGVkIGF0IGNvcmV5QHdvcmxkLnN0ZC5jb20KKworVGhlIGtlcm5lbCBkcml2ZXIgaXMgYmFzZWQgb24gcmF5X2NzLTEuNjIudGd6CisKK1RoZSBkcml2ZXIgYXQgbXkgd2ViIHBhZ2UgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBhbiBhZGQgb24gdG8KK0RhdmlkIEhpbmRzIHBjbWNpYSBwYWNrYWdlLiAgQWxsIHRoZSBjb21tYW5kIGxpbmUgcGFyYW1ldGVycyBhcmUKK2F2YWlsYWJsZSB3aGVuIGNvbXBpbGVkIGFzIGEgbW9kdWxlLiAgV2hlbiBidWlsdCBpbnRvIHRoZSBrZXJuZWwsIG9ubHkKK3RoZSBlc3NpZD0gc3RyaW5nIHBhcmFtZXRlciBpcyBhdmFpbGFibGUgdmlhIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lLgorVGhpcyB3aWxsIGNoYW5nZSBhZnRlciB0aGUgbWV0aG9kIG9mIHNvcnRpbmcgb3V0IHBhcmFtZXRlcnMgZm9yIGFsbAordGhlIFBDTUNJQSBkcml2ZXJzIGlzIGFncmVlZCB1cG9uLiAgSWYgeW91IG11c3QgaGF2ZSBhIGJ1aWx0IGluIGRyaXZlcgord2l0aCBub25kZWZhdWx0IHBhcmFtZXRlcnMsIHRoZXkgY2FuIGJlIGVkaXRlZCBpbgorL3Vzci9zcmMvbGludXgvZHJpdmVycy9uZXQvcGNtY2lhL3JheV9jcy5jLiAgU2VhcmNoaW5nIGZvciBtb2R1bGVfcGFyYW0KK3dpbGwgZmluZCB0aGVtIGFsbC4KKworSW5mb3JtYXRpb24gb24gY2FyZCBzZXJ2aWNlcyBpcyBhdmFpbGFibGUgYXQ6CisJaHR0cDovL3BjbWNpYS1jcy5zb3VyY2Vmb3JnZS5uZXQvCisKKworQ2FyZCBzZXJ2aWNlcyB1c2VyIHByb2dyYW1zIGFyZSBzdGlsbCByZXF1aXJlZCBmb3IgUENNQ0lBIGRldmljZXMuCitwY21jaWEtY3MtMy4xLjEgb3IgZ3JlYXRlciBpcyByZXF1aXJlZCBmb3IgdGhlIGtlcm5lbCB2ZXJzaW9uIG9mCit0aGUgZHJpdmVyLgorCitDdXJyZW50bHksIHJheV9jcyBpcyBub3QgcGFydCBvZiBEYXZpZCBIaW5kcyBjYXJkIHNlcnZpY2VzIHBhY2thZ2UsCitzbyB0aGUgZm9sbG93aW5nIG1hZ2ljIGlzIHJlcXVpcmVkLgorCitBdCB0aGUgZW5kIG9mIHRoZSAvZXRjL3BjbWNpYS9jb25maWcub3B0cyBmaWxlLCBhZGQgdGhlIGxpbmU6IAorc291cmNlIC4vcmF5X2NzLm9wdHMgCitUaGlzIHdpbGwgbWFrZSBjYXJkIHNlcnZpY2VzIHJlYWQgdGhlIHJheV9jcy5vcHRzIGZpbGUKK3doZW4gc3RhcnRpbmcuICBDcmVhdGUgdGhlIGZpbGUgL2V0Yy9wY21jaWEvcmF5X2NzLm9wdHMgY29udGFpbmluZyB0aGUKK2ZvbGxvd2luZzoKKworIyMjIyBzdGFydCBvZiAvZXRjL3BjbWNpYS9yYXlfY3Mub3B0cyAjIyMjIyMjIyMjIyMjIyMjIyMjCisjIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgUmF5bGluayBXaXJlbGVzcyBMQU4gUENNQ0lBIGNhcmQKK2RldmljZSAicmF5X2NzIgorICBjbGFzcyAibmV0d29yayIgbW9kdWxlICJtaXNjL3JheV9jcyIKKworY2FyZCAiUmF5TGluayBQQyBDYXJkIFdMQU4gQWRhcHRlciIKKyAgbWFuZmlkIDB4MDFhNiwgMHgwMDAwCisgIGJpbmQgInJheV9jcyIKKworbW9kdWxlICJtaXNjL3JheV9jcyIgb3B0cyAiIgorIyMjIyBlbmQgb2YgL2V0Yy9wY21jaWEvcmF5X2NzLm9wdHMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKworVG8gam9pbiBhbiBleGlzdGluZyBuZXR3b3JrIHdpdGgKK2RpZmZlcmVudCBwYXJhbWV0ZXJzLCBjb250YWN0IHRoZSBuZXR3b3JrIGFkbWluaXN0cmF0b3IgZm9yIHRoZSAKK2NvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24sIGFuZCBlZGl0IC9ldGMvcGNtY2lhL3JheV9jcy5vcHRzLgorQWRkIHRoZSBwYXJhbWV0ZXJzIGJlbG93IGJldHdlZW4gdGhlIGVtcHR5IHF1b3Rlcy4KKworUGFyYW1ldGVycyBmb3IgcmF5X2NzIGRyaXZlciB3aGljaCBtYXkgYmUgc3BlY2lmaWVkIGluIHJheV9jcy5vcHRzOgorCitiYyAgICAgICAgICAgICAgaW50ZWdlciAgICAgICAgIDAgPSBub3JtYWwgbW9kZSAoODAyLjExIHRpbWluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSA9IHNsb3cgZG93biBpbnRlciBmcmFtZSB0aW1pbmcgdG8gYWxsb3cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbiB3aXRoIG9sZGVyIGJyZWV6ZWNvbSBhY2Nlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cy4KKworYmVhY29uX3BlcmlvZAlpbnRlZ2VyICAgICAgICAgYmVhY29uIHBlcmlvZCBpbiBLaWxvLW1pY3Jvc2Vjb25kcworCQkJCWxlZ2FsIHZhbHVlcyA9IG11c3QgYmUgaW50ZWdlciBtdWx0aXBsZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgaG9wIGR3ZWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgPSAyNTYKKworY291bnRyeSAgICAgICAgIGludGVnZXIgICAgICAgICAxID0gVVNBIChkZWZhdWx0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyID0gRXVyb3BlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMgPSBKYXBhbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ID0gS29yZWEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNSA9IFNwYWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYgPSBGcmFuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNyA9IElzcmFlbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4ID0gQXVzdHJhbGlhCisKK2Vzc2lkCQlzdHJpbmcJCUVTUyBJRCAtIG5ldHdvcmsgbmFtZSB0byBqb2luCisJCQkJc3RyaW5nIHdpdGggbWF4aW11bSBsZW5ndGggb2YgMzIgY2hhcnMKKwkJCQlkZWZhdWx0IHZhbHVlID0gIkFESE9DX0VTU0lEIgorCitob3BfZHdlbGwJaW50ZWdlciAgICAgICAgIGhvcCBkd2VsbCB0aW1lIGluIEtpbG8tbWljcm9zZWNvbmRzIAorCQkJCWxlZ2FsIHZhbHVlcyA9IDE2LDMyLDY0LDEyOChkZWZhdWx0KSwyNTYKKworaXJxX21hc2sJaW50ZWdlciAgICAgICAgIGxpbnV4IHN0YW5kYXJkIDE2IGJpdCB2YWx1ZSAxYml0L0lSUQorCQkJCWxzYiBpcyBJUlEgMCwgYml0IDEgaXMgSVJRIDEgZXRjLgorCQkJCVVzZWQgdG8gcmVzdHJpY3QgY2hvaWNlIG9mIElSUSdzIHRvIHVzZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVjb21tZW5kZWQgbWV0aG9kIGZvciBjb250cm9sbGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRzIGlzIGluIC9ldGMvcGNtY2lhL2NvbmZpZy5vcHRzCisKK25ldF90eXBlCWludGVnZXIJCTAgKGRlZmF1bHQpID0gYWRob2MgbmV0d29yaywgCisJCQkJMSA9IGluZnJhc3RydWN0dXJlCisKK3BoeV9hZGRyCXN0cmluZyAgICAgICAgICBzdHJpbmcgY29udGFpbmluZyBuZXcgTUFDIGFkZHJlc3MgaW4KKwkJCQloZXgsIG11c3Qgc3RhcnQgd2l0aCB4IGVnCisJCQkJeDAwMDA4ZjEyMzQ1NgorCitwc20JCWludGVnZXIgICAgICAgICAwID0gY29udGludW91c2x5IGFjdGl2ZQorCQkJCTEgPSBwb3dlciBzYXZlIG1vZGUgKG5vdCB1c2VmdWwgeWV0KQorCitwY19kZWJ1ZwlpbnRlZ2VyCQkoMC01KSBsYXJnZXIgdmFsdWVzIGZvciBtb3JlIHZlcmJvc2UKKwkJCQlsb2dnaW5nLiAgUmVwbGFjZXMgcmF5X2RlYnVnLgorCityYXlfZGVidWcJaW50ZWdlcgkJUmVwbGFjZWQgd2l0aCBwY19kZWJ1ZworCityYXlfbWVtX3NwZWVkICAgaW50ZWdlciAgICAgICAgIGRlZmF1bHRzIHRvIDUwMAorCitzbmlmZmVyICAgICAgICAgaW50ZWdlciAgICAgICAgIDAgPSBub3Qgc25pZmZlciAoZGVmYXVsdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSA9IHNuaWZmZXIgd2hpY2ggY2FuIGJlIHVzZWQgdG8gcmVjb3JkIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0d29yayB0cmFmZmljIHVzaW5nIHRjcGR1bXAgb3Igc2ltaWxhciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgbm8gbm9ybWFsIG5ldHdvcmsgdXNlIGlzIGFsbG93ZWQuCisKK3RyYW5zbGF0ZQlpbnRlZ2VyCQkwID0gbm8gdHJhbnNsYXRpb24gKGVuY2Fwc3VsYXRlIGZyYW1lcykKKwkJCQkxID0gdHJhbnNsYXRpb24gICAgKFJGQzEwNDIvODAyLjEpCisKKworTW9yZSBvbiBzbmlmZmVyIG1vZGU6CisKK3RjcGR1bXAgZG9lcyBub3QgdW5kZXJzdGFuZCA4MDIuMTEgaGVhZGVycywgc28gaXQgY2FuJ3QKK2ludGVycHJldCB0aGUgY29udGVudHMsIGJ1dCBpdCBjYW4gcmVjb3JkIHRvIGEgZmlsZS4gIFRoaXMgaXMgb25seQordXNlZnVsIGZvciBkZWJ1Z2dpbmcgODAyLjExIGxvd2xldmVsIHByb3RvY29scyB0aGF0IGFyZSBub3QgdmlzaWJsZSB0bworbGludXguICBJZiB5b3Ugd2FudCB0byB3YXRjaCBmdHAgeGZlcnMsIG9yIGRvIHNpbWlsYXIgdGhpbmdzLCB5b3UKK2Rvbid0IG5lZWQgdG8gdXNlIHNuaWZmZXIgbW9kZS4gIEFsc28sIHNvbWUgcGFja2V0IHR5cGVzIGFyZSBuZXZlcgorc2VudCB1cCBieSB0aGUgY2FyZCwgc28geW91IHdpbGwgbmV2ZXIgc2VlIHRoZW0gKGFjaywgcnRzLCBjdHMsIHByb2JlCitldGMuKSAgVGhlcmUgaXMgYSBzaW1wbGUgcHJvZ3JhbSAoc2hvd2NhcCkgaW5jbHVkZWQgaW4gdGhlIHJheV9jcworcGFja2FnZSB3aGljaCBwYXJzZXMgdGhlIDgwMi4xMSBoZWFkZXJzLgorCitLbm93biBQcm9ibGVtcyBhbmQgbWlzc2luZyBmZWF0dXJlcworCisgICAgICAgIERvZXMgbm90IHdvcmsgd2l0aCBub24geDg2CisKKwlEb2VzIG5vdCB3b3JrIHdpdGggU01QCisKKwlTdXBwb3J0IGZvciBkZWZyYWdtZW50aW5nIGZyYW1lcyBpcyBub3QgeWV0IGRlYnVnZ2VkLCBhbmQgaW4KKwlmYWN0IGlzIGtub3duIHRvIG5vdCB3b3JrLiAgSSBoYXZlIG5ldmVyIGVuY291bnRlcmVkIGEgbmV0IHNldAorCXVwIHRvIGZyYWdtZW50LCBidXQgc3RpbGwsIGl0IHNob3VsZCBiZSBmaXhlZC4KKworCVRoZSBpb2N0bCBzdXBwb3J0IGlzIGluY29tcGxldGUuICBUaGUgaGFyZHdhcmUgYWRkcmVzcyBjYW5ub3QgYmUgc2V0CisJdXNpbmcgaWZjb25maWcgeWV0LiAgSWYgYSBkaWZmZXJlbnQgaGFyZHdhcmUgYWRkcmVzcyBpcyBuZWVkZWQsIGl0IG1heQorCWJlIHNldCB1c2luZyB0aGUgcGh5X2FkZHIgcGFyYW1ldGVyIGluIHJheV9jcy5vcHRzLiAgVGhpcyByZXF1aXJlcworCWEgY2FyZCBpbnNlcnRpb24gdG8gdGFrZSBlZmZlY3QuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcmRzLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9yZHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxYTNkNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcmRzLnR4dApAQCAtMCwwICsxLDM1NSBAQAorCitPdmVydmlldworPT09PT09PT0KKworVGhpcyByZWFkbWUgdHJpZXMgdG8gcHJvdmlkZSBzb21lIGJhY2tncm91bmQgb24gdGhlIGhvd3MgYW5kIHdoeXMgb2YgUkRTLAorYW5kIHdpbGwgaG9wZWZ1bGx5IGhlbHAgeW91IGZpbmQgeW91ciB3YXkgYXJvdW5kIHRoZSBjb2RlLgorCitJbiBhZGRpdGlvbiwgcGxlYXNlIHNlZSB0aGlzIGVtYWlsIGFib3V0IFJEUyBvcmlnaW5zOgoraHR0cDovL29zcy5vcmFjbGUuY29tL3BpcGVybWFpbC9yZHMtZGV2ZWwvMjAwNy1Ob3ZlbWJlci8wMDAyMjguaHRtbAorCitSRFMgQXJjaGl0ZWN0dXJlCis9PT09PT09PT09PT09PT09CisKK1JEUyBwcm92aWRlcyByZWxpYWJsZSwgb3JkZXJlZCBkYXRhZ3JhbSBkZWxpdmVyeSBieSB1c2luZyBhIHNpbmdsZQorcmVsaWFibGUgY29ubmVjdGlvbiBiZXR3ZWVuIGFueSB0d28gbm9kZXMgaW4gdGhlIGNsdXN0ZXIuIFRoaXMgYWxsb3dzCithcHBsaWNhdGlvbnMgdG8gdXNlIGEgc2luZ2xlIHNvY2tldCB0byB0YWxrIHRvIGFueSBvdGhlciBwcm9jZXNzIGluIHRoZQorY2x1c3RlciAtIHNvIGluIGEgY2x1c3RlciB3aXRoIE4gcHJvY2Vzc2VzIHlvdSBuZWVkIE4gc29ja2V0cywgaW4gY29udHJhc3QKK3RvIE4qTiBpZiB5b3UgdXNlIGEgY29ubmVjdGlvbi1vcmllbnRlZCBzb2NrZXQgdHJhbnNwb3J0IGxpa2UgVENQLgorCitSRFMgaXMgbm90IEluZmluaWJhbmQtc3BlY2lmaWM7IGl0IHdhcyBkZXNpZ25lZCB0byBzdXBwb3J0IGRpZmZlcmVudAordHJhbnNwb3J0cy4gIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHVzZWQgdG8gc3VwcG9ydCBSRFMgb3ZlciBUQ1AgYXMgd2VsbAorYXMgSUIuIFdvcmsgaXMgaW4gcHJvZ3Jlc3MgdG8gc3VwcG9ydCBSRFMgb3ZlciBpV0FSUCwgYW5kIHVzaW5nIERDRSB0bworZ3VhcmFudGVlIG5vIGRyb3BwZWQgcGFja2V0cyBvbiBFdGhlcm5ldCwgaXQgbWF5IGJlIHBvc3NpYmxlIHRvIHVzZSBSRFMgb3ZlcgorVURQIGluIHRoZSBmdXR1cmUuCisKK1RoZSBoaWdoLWxldmVsIHNlbWFudGljcyBvZiBSRFMgZnJvbSB0aGUgYXBwbGljYXRpb24ncyBwb2ludCBvZiB2aWV3IGFyZQorCisgKglBZGRyZXNzaW5nCisgICAgICAgIFJEUyB1c2VzIElQdjQgYWRkcmVzc2VzIGFuZCAxNmJpdCBwb3J0IG51bWJlcnMgdG8gaWRlbnRpZnkKKyAgICAgICAgdGhlIGVuZCBwb2ludCBvZiBhIGNvbm5lY3Rpb24uIEFsbCBzb2NrZXQgb3BlcmF0aW9ucyB0aGF0IGludm9sdmUKKyAgICAgICAgcGFzc2luZyBhZGRyZXNzZXMgYmV0d2VlbiBrZXJuZWwgYW5kIHVzZXIgc3BhY2UgZ2VuZXJhbGx5CisgICAgICAgIHVzZSBhIHN0cnVjdCBzb2NrYWRkcl9pbi4KKworICAgICAgICBUaGUgZmFjdCB0aGF0IElQdjQgYWRkcmVzc2VzIGFyZSB1c2VkIGRvZXMgbm90IG1lYW4gdGhlIHVuZGVybHlpbmcKKyAgICAgICAgdHJhbnNwb3J0IGhhcyB0byBiZSBJUC1iYXNlZC4gSW4gZmFjdCwgUkRTIG92ZXIgSUIgdXNlcyBhCisgICAgICAgIHJlbGlhYmxlIElCIGNvbm5lY3Rpb247IHRoZSBJUCBhZGRyZXNzIGlzIHVzZWQgZXhjbHVzaXZlbHkgdG8KKyAgICAgICAgbG9jYXRlIHRoZSByZW1vdGUgbm9kZSdzIEdJRCAoYnkgQVJQaW5nIGZvciB0aGUgZ2l2ZW4gSVApLgorCisgICAgICAgIFRoZSBwb3J0IHNwYWNlIGlzIGVudGlyZWx5IGluZGVwZW5kZW50IG9mIFVEUCwgVENQIG9yIGFueSBvdGhlcgorICAgICAgICBwcm90b2NvbC4KKworICoJU29ja2V0IGludGVyZmFjZQorICAgICAgICBSRFMgc29ja2V0cyB3b3JrICptb3N0bHkqIGFzIHlvdSB3b3VsZCBleHBlY3QgZnJvbSBhIEJTRAorICAgICAgICBzb2NrZXQuIFRoZSBuZXh0IHNlY3Rpb24gd2lsbCBjb3ZlciB0aGUgZGV0YWlscy4gQXQgYW55IHJhdGUsCisgICAgICAgIGFsbCBJL08gaXMgcGVyZm9ybWVkIHRocm91Z2ggdGhlIHN0YW5kYXJkIEJTRCBzb2NrZXQgQVBJLgorICAgICAgICBTb21lIGFkZGl0aW9ucyBsaWtlIHplcm9jb3B5IHN1cHBvcnQgYXJlIGltcGxlbWVudGVkIHRocm91Z2gKKyAgICAgICAgY29udHJvbCBtZXNzYWdlcywgd2hpbGUgb3RoZXIgZXh0ZW5zaW9ucyB1c2UgdGhlIGdldHNvY2tvcHQvCisgICAgICAgIHNldHNvY2tvcHQgY2FsbHMuCisKKyAgICAgICAgU29ja2V0cyBtdXN0IGJlIGJvdW5kIGJlZm9yZSB5b3UgY2FuIHNlbmQgb3IgcmVjZWl2ZSBkYXRhLgorICAgICAgICBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIGJpbmRpbmcgYWxzbyBzZWxlY3RzIGEgdHJhbnNwb3J0IGFuZAorICAgICAgICBhdHRhY2hlcyBpdCB0byB0aGUgc29ja2V0LiBPbmNlIGJvdW5kLCB0aGUgdHJhbnNwb3J0IGFzc2lnbm1lbnQKKyAgICAgICAgZG9lcyBub3QgY2hhbmdlLiBSRFMgd2lsbCB0b2xlcmF0ZSBJUHMgbW92aW5nIGFyb3VuZCAoZWcgaW4KKyAgICAgICAgYSBhY3RpdmUtYWN0aXZlIEhBIHNjZW5hcmlvKSwgYnV0IG9ubHkgYXMgbG9uZyBhcyB0aGUgYWRkcmVzcworICAgICAgICBkb2Vzbid0IG1vdmUgdG8gYSBkaWZmZXJlbnQgdHJhbnNwb3J0LgorCisgKglzeXNjdGxzCisgICAgICAgIFJEUyBzdXBwb3J0cyBhIG51bWJlciBvZiBzeXNjdGxzIGluIC9wcm9jL3N5cy9uZXQvcmRzCisKKworU29ja2V0IEludGVyZmFjZQorPT09PT09PT09PT09PT09PQorCisgIEFGX1JEUywgUEZfUkRTLCBTT0xfUkRTCisJQUZfUkRTIGFuZCBQRl9SRFMgYXJlIHRoZSBkb21haW4gdHlwZSB0byBiZSB1c2VkIHdpdGggc29ja2V0KDIpCisJdG8gY3JlYXRlIFJEUyBzb2NrZXRzLiBTT0xfUkRTIGlzIHRoZSBzb2NrZXQtbGV2ZWwgdG8gYmUgdXNlZAorCXdpdGggc2V0c29ja29wdCgyKSBhbmQgZ2V0c29ja29wdCgyKSBmb3IgUkRTIHNwZWNpZmljIHNvY2tldAorCW9wdGlvbnMuCisKKyAgZmQgPSBzb2NrZXQoUEZfUkRTLCBTT0NLX1NFUVBBQ0tFVCwgMCk7CisgICAgICAgIFRoaXMgY3JlYXRlcyBhIG5ldywgdW5ib3VuZCBSRFMgc29ja2V0LgorCisgIHNldHNvY2tvcHQoU09MX1NPQ0tFVCk6IHNlbmQgYW5kIHJlY2VpdmUgYnVmZmVyIHNpemUKKyAgICAgICAgUkRTIGhvbm9ycyB0aGUgc2VuZCBhbmQgcmVjZWl2ZSBidWZmZXIgc2l6ZSBzb2NrZXQgb3B0aW9ucy4KKyAgICAgICAgWW91IGFyZSBub3QgYWxsb3dlZCB0byBxdWV1ZSBtb3JlIHRoYW4gU09fU05EU0laRSBieXRlcyB0bworICAgICAgICBhIHNvY2tldC4gQSBtZXNzYWdlIGlzIHF1ZXVlZCB3aGVuIHNlbmRtc2cgaXMgY2FsbGVkLCBhbmQKKyAgICAgICAgaXQgbGVhdmVzIHRoZSBxdWV1ZSB3aGVuIHRoZSByZW1vdGUgc3lzdGVtIGFja25vd2xlZGdlcworICAgICAgICBpdHMgYXJyaXZhbC4KKworICAgICAgICBUaGUgU09fUkNWU0laRSBvcHRpb24gY29udHJvbHMgdGhlIG1heGltdW0gcmVjZWl2ZSBxdWV1ZSBsZW5ndGguCisgICAgICAgIFRoaXMgaXMgYSBzb2Z0IGxpbWl0IHJhdGhlciB0aGFuIGEgaGFyZCBsaW1pdCAtIFJEUyB3aWxsCisgICAgICAgIGNvbnRpbnVlIHRvIGFjY2VwdCBhbmQgcXVldWUgaW5jb21pbmcgbWVzc2FnZXMsIGV2ZW4gaWYgdGhhdAorICAgICAgICB0YWtlcyB0aGUgcXVldWUgbGVuZ3RoIG92ZXIgdGhlIGxpbWl0LiBIb3dldmVyLCBpdCB3aWxsIGFsc28KKyAgICAgICAgbWFyayB0aGUgcG9ydCBhcyAiY29uZ2VzdGVkIiBhbmQgc2VuZCBhIGNvbmdlc3Rpb24gdXBkYXRlIHRvCisgICAgICAgIHRoZSBzb3VyY2Ugbm9kZS4gVGhlIHNvdXJjZSBub2RlIGlzIHN1cHBvc2VkIHRvIHRocm90dGxlIGFueQorICAgICAgICBwcm9jZXNzZXMgc2VuZGluZyB0byB0aGlzIGNvbmdlc3RlZCBwb3J0LgorCisgIGJpbmQoZmQsICZzb2NrYWRkcl9pbiwgLi4uKQorICAgICAgICBUaGlzIGJpbmRzIHRoZSBzb2NrZXQgdG8gYSBsb2NhbCBJUCBhZGRyZXNzIGFuZCBwb3J0LCBhbmQgYQorICAgICAgICB0cmFuc3BvcnQuCisKKyAgc2VuZG1zZyhmZCwgLi4uKQorICAgICAgICBTZW5kcyBhIG1lc3NhZ2UgdG8gdGhlIGluZGljYXRlZCByZWNpcGllbnQuIFRoZSBrZXJuZWwgd2lsbAorICAgICAgICB0cmFuc3BhcmVudGx5IGVzdGFibGlzaCB0aGUgdW5kZXJseWluZyByZWxpYWJsZSBjb25uZWN0aW9uCisgICAgICAgIGlmIGl0IGlzbid0IHVwIHlldC4KKworICAgICAgICBBbiBhdHRlbXB0IHRvIHNlbmQgYSBtZXNzYWdlIHRoYXQgZXhjZWVkcyBTT19TTkRTSVpFIHdpbGwKKyAgICAgICAgcmV0dXJuIHdpdGggLUVNU0dTSVpFCisKKyAgICAgICAgQW4gYXR0ZW1wdCB0byBzZW5kIGEgbWVzc2FnZSB0aGF0IHdvdWxkIHRha2UgdGhlIHRvdGFsIG51bWJlcgorICAgICAgICBvZiBxdWV1ZWQgYnl0ZXMgb3ZlciB0aGUgU09fU05EU0laRSB0aHJlc2hvbGQgd2lsbCByZXR1cm4KKyAgICAgICAgRUFHQUlOLgorCisgICAgICAgIEFuIGF0dGVtcHQgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gYSBkZXN0aW5hdGlvbiB0aGF0IGlzIG1hcmtlZAorICAgICAgICBhcyAiY29uZ2VzdGVkIiB3aWxsIHJldHVybiBFTk9CVUZTLgorCisgIHJlY3Ztc2coZmQsIC4uLikKKyAgICAgICAgUmVjZWl2ZXMgYSBtZXNzYWdlIHRoYXQgd2FzIHF1ZXVlZCB0byB0aGlzIHNvY2tldC4gVGhlIHNvY2tldHMKKyAgICAgICAgcmVjdiBxdWV1ZSBhY2NvdW50aW5nIGlzIGFkanVzdGVkLCBhbmQgaWYgdGhlIHF1ZXVlIGxlbmd0aAorICAgICAgICBkcm9wcyBiZWxvdyBTT19TTkRTSVpFLCB0aGUgcG9ydCBpcyBtYXJrZWQgdW5jb25nZXN0ZWQsIGFuZAorICAgICAgICBhIGNvbmdlc3Rpb24gdXBkYXRlIGlzIHNlbnQgdG8gYWxsIHBlZXJzLgorCisgICAgICAgIEFwcGxpY2F0aW9ucyBjYW4gYXNrIHRoZSBSRFMga2VybmVsIG1vZHVsZSB0byByZWNlaXZlCisgICAgICAgIG5vdGlmaWNhdGlvbnMgdmlhIGNvbnRyb2wgbWVzc2FnZXMgKGZvciBpbnN0YW5jZSwgdGhlcmUgaXMgYQorICAgICAgICBub3RpZmljYXRpb24gd2hlbiBhIGNvbmdlc3Rpb24gdXBkYXRlIGFycml2ZWQsIG9yIHdoZW4gYSBSRE1BCisgICAgICAgIG9wZXJhdGlvbiBjb21wbGV0ZXMpLiBUaGVzZSBub3RpZmljYXRpb25zIGFyZSByZWNlaXZlZCB0aHJvdWdoCisgICAgICAgIHRoZSBtc2cubXNnX2NvbnRyb2wgYnVmZmVyIG9mIHN0cnVjdCBtc2doZHIuIFRoZSBmb3JtYXQgb2YgdGhlCisgICAgICAgIG1lc3NhZ2VzIGlzIGRlc2NyaWJlZCBpbiBtYW5wYWdlcy4KKworICBwb2xsKGZkKQorICAgICAgICBSRFMgc3VwcG9ydHMgdGhlIHBvbGwgaW50ZXJmYWNlIHRvIGFsbG93IHRoZSBhcHBsaWNhdGlvbgorICAgICAgICB0byBpbXBsZW1lbnQgYXN5bmMgSS9PLgorCisgICAgICAgIFBPTExJTiBoYW5kbGluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBXaGVuIHRoZXJlJ3MgYW4KKyAgICAgICAgaW5jb21pbmcgbWVzc2FnZSBxdWV1ZWQgdG8gdGhlIHNvY2tldCwgb3IgYSBwZW5kaW5nIG5vdGlmaWNhdGlvbiwKKyAgICAgICAgd2Ugc2lnbmFsIFBPTExJTi4KKworICAgICAgICBQT0xMT1VUIGlzIGEgbGl0dGxlIGhhcmRlci4gU2luY2UgeW91IGNhbiBlc3NlbnRpYWxseSBzZW5kCisgICAgICAgIHRvIGFueSBkZXN0aW5hdGlvbiwgUkRTIHdpbGwgYWx3YXlzIHNpZ25hbCBQT0xMT1VUIGFzIGxvbmcgYXMKKyAgICAgICAgdGhlcmUncyByb29tIG9uIHRoZSBzZW5kIHF1ZXVlIChpZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHF1ZXVlZAorICAgICAgICBpcyBsZXNzIHRoYW4gdGhlIHNlbmRidWYgc2l6ZSkuCisKKyAgICAgICAgSG93ZXZlciwgdGhlIGtlcm5lbCB3aWxsIHJlZnVzZSB0byBhY2NlcHQgbWVzc2FnZXMgdG8KKyAgICAgICAgYSBkZXN0aW5hdGlvbiBtYXJrZWQgY29uZ2VzdGVkIC0gaW4gdGhpcyBjYXNlIHlvdSB3aWxsIGxvb3AKKyAgICAgICAgZm9yZXZlciBpZiB5b3UgcmVseSBvbiBwb2xsIHRvIHRlbGwgeW91IHdoYXQgdG8gZG8uCisgICAgICAgIFRoaXMgaXNuJ3QgYSB0cml2aWFsIHByb2JsZW0sIGJ1dCBhcHBsaWNhdGlvbnMgY2FuIGRlYWwgd2l0aAorICAgICAgICB0aGlzIC0gYnkgdXNpbmcgY29uZ2VzdGlvbiBub3RpZmljYXRpb25zLCBhbmQgYnkgY2hlY2tpbmcgZm9yCisgICAgICAgIEVOT0JVRlMgZXJyb3JzIHJldHVybmVkIGJ5IHNlbmRtc2cuCisKKyAgc2V0c29ja29wdChTT0xfUkRTLCBSRFNfQ0FOQ0VMX1NFTlRfVE8sICZzb2NrYWRkcl9pbikKKyAgICAgICAgVGhpcyBhbGxvd3MgdGhlIGFwcGxpY2F0aW9uIHRvIGRpc2NhcmQgYWxsIG1lc3NhZ2VzIHF1ZXVlZCB0byBhCisgICAgICAgIHNwZWNpZmljIGRlc3RpbmF0aW9uIG9uIHRoaXMgcGFydGljdWxhciBzb2NrZXQuCisKKyAgICAgICAgVGhpcyBhbGxvd3MgdGhlIGFwcGxpY2F0aW9uIHRvIGNhbmNlbCBvdXRzdGFuZGluZyBtZXNzYWdlcyBpZgorICAgICAgICBpdCBkZXRlY3RzIGEgdGltZW91dC4gRm9yIGluc3RhbmNlLCBpZiBpdCB0cmllZCB0byBzZW5kIGEgbWVzc2FnZSwKKyAgICAgICAgYW5kIHRoZSByZW1vdGUgaG9zdCBpcyB1bnJlYWNoYWJsZSwgUkRTIHdpbGwga2VlcCB0cnlpbmcgZm9yZXZlci4KKyAgICAgICAgVGhlIGFwcGxpY2F0aW9uIG1heSBkZWNpZGUgaXQncyBub3Qgd29ydGggaXQsIGFuZCBjYW5jZWwgdGhlCisgICAgICAgIG9wZXJhdGlvbi4gSW4gdGhpcyBjYXNlLCBpdCB3b3VsZCB1c2UgUkRTX0NBTkNFTF9TRU5UX1RPIHRvCisgICAgICAgIG51a2UgYW55IHBlbmRpbmcgbWVzc2FnZXMuCisKKworUkRNQSBmb3IgUkRTCis9PT09PT09PT09PT0KKworICBzZWUgcmRzLXJkbWEoNykgbWFucGFnZSAoYXZhaWxhYmxlIGluIHJkcy10b29scykKKworCitDb25nZXN0aW9uIE5vdGlmaWNhdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PQorCisgIHNlZSByZHMoNykgbWFucGFnZQorCisKK1JEUyBQcm90b2NvbAorPT09PT09PT09PT09CisKKyAgTWVzc2FnZSBoZWFkZXIKKworICAgIFRoZSBtZXNzYWdlIGhlYWRlciBpcyBhICdzdHJ1Y3QgcmRzX2hlYWRlcicgKHNlZSByZHMuaCk6CisgICAgRmllbGRzOgorICAgICAgaF9zZXF1ZW5jZToKKyAgICAgICAgICBwZXItcGFja2V0IHNlcXVlbmNlIG51bWJlcgorICAgICAgaF9hY2s6CisgICAgICAgICAgcGlnZ3liYWNrZWQgYWNrbm93bGVkZ21lbnQgb2YgbGFzdCBwYWNrZXQgcmVjZWl2ZWQKKyAgICAgIGhfbGVuOgorICAgICAgICAgIGxlbmd0aCBvZiBkYXRhLCBub3QgaW5jbHVkaW5nIGhlYWRlcgorICAgICAgaF9zcG9ydDoKKyAgICAgICAgICBzb3VyY2UgcG9ydAorICAgICAgaF9kcG9ydDoKKyAgICAgICAgICBkZXN0aW5hdGlvbiBwb3J0CisgICAgICBoX2ZsYWdzOgorICAgICAgICAgIENPTkdfQklUTUFQIC0gdGhpcyBpcyBhIGNvbmdlc3Rpb24gdXBkYXRlIGJpdG1hcAorICAgICAgICAgIEFDS19SRVFVSVJFRCAtIHJlY2VpdmVyIG11c3QgYWNrIHRoaXMgcGFja2V0CisgICAgICAgICAgUkVUUkFOU01JVFRFRCAtIHBhY2tldCBoYXMgcHJldmlvdXNseSBiZWVuIHNlbnQKKyAgICAgIGhfY3JlZGl0OgorICAgICAgICAgIGluZGljYXRlIHRvIG90aGVyIGVuZCBvZiBjb25uZWN0aW9uIHRoYXQKKyAgICAgICAgICBpdCBoYXMgbW9yZSBjcmVkaXRzIGF2YWlsYWJsZSAoaS5lLiB0aGVyZSBpcworICAgICAgICAgIG1vcmUgc2VuZCByb29tKQorICAgICAgaF9wYWRkaW5nWzRdOgorICAgICAgICAgIHVudXNlZCwgZm9yIGZ1dHVyZSB1c2UKKyAgICAgIGhfY3N1bToKKyAgICAgICAgICBoZWFkZXIgY2hlY2tzdW0KKyAgICAgIGhfZXh0aGRyOgorICAgICAgICAgIG9wdGlvbmFsIGRhdGEgY2FuIGJlIHBhc3NlZCBoZXJlLiBUaGlzIGlzIGN1cnJlbnRseSB1c2VkIGZvcgorICAgICAgICAgIHBhc3NpbmcgUkRNQS1yZWxhdGVkIGluZm9ybWF0aW9uLgorCisgIEFDSyBhbmQgcmV0cmFuc21pdCBoYW5kbGluZworCisgICAgICBPbmUgbWlnaHQgdGhpbmsgdGhhdCB3aXRoIHJlbGlhYmxlIElCIGNvbm5lY3Rpb25zIHlvdSB3b3VsZG4ndCBuZWVkCisgICAgICB0byBhY2sgbWVzc2FnZXMgdGhhdCBoYXZlIGJlZW4gcmVjZWl2ZWQuICBUaGUgcHJvYmxlbSBpcyB0aGF0IElCCisgICAgICBoYXJkd2FyZSBnZW5lcmF0ZXMgYW4gYWNrIG1lc3NhZ2UgYmVmb3JlIGl0IGhhcyBETUFlZCB0aGUgbWVzc2FnZQorICAgICAgaW50byBtZW1vcnkuICBUaGlzIGNyZWF0ZXMgYSBwb3RlbnRpYWwgbWVzc2FnZSBsb3NzIGlmIHRoZSBIQ0EgaXMKKyAgICAgIGRpc2FibGVkIGZvciBhbnkgcmVhc29uIGJldHdlZW4gd2hlbiBpdCBzZW5kcyB0aGUgYWNrIGFuZCBiZWZvcmUKKyAgICAgIHRoZSBtZXNzYWdlIGlzIERNQWVkIGFuZCBwcm9jZXNzZWQuICBUaGlzIGlzIG9ubHkgYSBwb3RlbnRpYWwgaXNzdWUKKyAgICAgIGlmIGFub3RoZXIgSENBIGlzIGF2YWlsYWJsZSBmb3IgZmFpbC1vdmVyLgorCisgICAgICBTZW5kaW5nIGFuIGFjayBpbW1lZGlhdGVseSB3b3VsZCBhbGxvdyB0aGUgc2VuZGVyIHRvIGZyZWUgdGhlIHNlbnQKKyAgICAgIG1lc3NhZ2UgZnJvbSB0aGVpciBzZW5kIHF1ZXVlIHF1aWNrbHksIGJ1dCBjb3VsZCBjYXVzZSBleGNlc3NpdmUKKyAgICAgIHRyYWZmaWMgdG8gYmUgdXNlZCBmb3IgYWNrcy4gUkRTIHBpZ2d5YmFja3MgYWNrcyBvbiBzZW50IGRhdGEKKyAgICAgIHBhY2tldHMuICBBY2stb25seSBwYWNrZXRzIGFyZSByZWR1Y2VkIGJ5IG9ubHkgYWxsb3dpbmcgb25lIHRvIGJlCisgICAgICBpbiBmbGlnaHQgYXQgYSB0aW1lLCBhbmQgYnkgdGhlIHNlbmRlciBvbmx5IGFza2luZyBmb3IgYWNrcyB3aGVuCisgICAgICBpdHMgc2VuZCBidWZmZXJzIHN0YXJ0IHRvIGZpbGwgdXAuIEFsbCByZXRyYW5zbWlzc2lvbnMgYXJlIGFsc28KKyAgICAgIGFja2VkLgorCisgIEZsb3cgQ29udHJvbAorCisgICAgICBSRFMncyBJQiB0cmFuc3BvcnQgdXNlcyBhIGNyZWRpdC1iYXNlZCBtZWNoYW5pc20gdG8gdmVyaWZ5IHRoYXQKKyAgICAgIHRoZXJlIGlzIHNwYWNlIGluIHRoZSBwZWVyJ3MgcmVjZWl2ZSBidWZmZXJzIGZvciBtb3JlIGRhdGEuIFRoaXMKKyAgICAgIGVsaW1pbmF0ZXMgdGhlIG5lZWQgZm9yIGhhcmR3YXJlIHJldHJpZXMgb24gdGhlIGNvbm5lY3Rpb24uCisKKyAgQ29uZ2VzdGlvbgorCisgICAgICBNZXNzYWdlcyB3YWl0aW5nIGluIHRoZSByZWNlaXZlIHF1ZXVlIG9uIHRoZSByZWNlaXZpbmcgc29ja2V0CisgICAgICBhcmUgYWNjb3VudGVkIGFnYWluc3QgdGhlIHNvY2tldHMgU09fUkNWQlVGIG9wdGlvbiB2YWx1ZS4gIE9ubHkKKyAgICAgIHRoZSBwYXlsb2FkIGJ5dGVzIGluIHRoZSBtZXNzYWdlIGFyZSBhY2NvdW50ZWQgZm9yLiAgSWYgdGhlCisgICAgICBudW1iZXIgb2YgYnl0ZXMgcXVldWVkIGVxdWFscyBvciBleGNlZWRzIHJjdmJ1ZiB0aGVuIHRoZSBzb2NrZXQKKyAgICAgIGlzIGNvbmdlc3RlZC4gIEFsbCBzZW5kcyBhdHRlbXB0ZWQgdG8gdGhpcyBzb2NrZXQncyBhZGRyZXNzCisgICAgICBzaG91bGQgcmV0dXJuIGJsb2NrIG9yIHJldHVybiAtRVdPVUxEQkxPQ0suCisKKyAgICAgIEFwcGxpY2F0aW9ucyBhcmUgZXhwZWN0ZWQgdG8gYmUgcmVhc29uYWJseSB0dW5lZCBzdWNoIHRoYXQgdGhpcworICAgICAgc2l0dWF0aW9uIHZlcnkgcmFyZWx5IG9jY3Vycy4gIEFuIGFwcGxpY2F0aW9uIGVuY291bnRlcmluZyB0aGlzCisgICAgICAiYmFjay1wcmVzc3VyZSIgaXMgY29uc2lkZXJlZCBhIGJ1Zy4KKworICAgICAgVGhpcyBpcyBpbXBsZW1lbnRlZCBieSBoYXZpbmcgZWFjaCBub2RlIG1haW50YWluIGJpdG1hcHMgd2hpY2gKKyAgICAgIGluZGljYXRlIHdoaWNoIHBvcnRzIG9uIGJvdW5kIGFkZHJlc3NlcyBhcmUgY29uZ2VzdGVkLiAgQXMgdGhlCisgICAgICBiaXRtYXAgY2hhbmdlcyBpdCBpcyBzZW50IHRocm91Z2ggYWxsIHRoZSBjb25uZWN0aW9ucyB3aGljaAorICAgICAgdGVybWluYXRlIGluIHRoZSBsb2NhbCBhZGRyZXNzIG9mIHRoZSBiaXRtYXAgd2hpY2ggY2hhbmdlZC4KKworICAgICAgVGhlIGJpdG1hcHMgYXJlIGFsbG9jYXRlZCBhcyBjb25uZWN0aW9ucyBhcmUgYnJvdWdodCB1cC4gIFRoaXMKKyAgICAgIGF2b2lkcyBhbGxvY2F0aW9uIGluIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgcGF0aCB3aGljaCBxdWV1ZXMKKyAgICAgIHNhZ2VzIG9uIHNvY2tldHMuICBUaGUgZGVuc2UgYml0bWFwcyBsZXQgdHJhbnNwb3J0cyBzZW5kIHRoZQorICAgICAgZW50aXJlIGJpdG1hcCBvbiBhbnkgYml0bWFwIGNoYW5nZSByZWFzb25hYmx5IGVmZmljaWVudGx5LiAgVGhpcworICAgICAgaXMgbXVjaCBlYXNpZXIgdG8gaW1wbGVtZW50IHRoYW4gc29tZSBmaW5lci1ncmFpbmVkCisgICAgICBjb21tdW5pY2F0aW9uIG9mIHBlci1wb3J0IGNvbmdlc3Rpb24uICBUaGUgc2VuZGVyIGRvZXMgYSB2ZXJ5CisgICAgICBpbmV4cGVuc2l2ZSBiaXQgdGVzdCB0byB0ZXN0IGlmIHRoZSBwb3J0IGl0J3MgYWJvdXQgdG8gc2VuZCB0bworICAgICAgaXMgY29uZ2VzdGVkIG9yIG5vdC4KKworCitSRFMgVHJhbnNwb3J0IExheWVyCis9PT09PT09PT09PT09PT09PT0KKworICBBcyBtZW50aW9uZWQgYWJvdmUsIFJEUyBpcyBub3QgSUItc3BlY2lmaWMuIEl0cyBjb2RlIGlzIGRpdmlkZWQKKyAgaW50byBhIGdlbmVyYWwgUkRTIGxheWVyIGFuZCBhIHRyYW5zcG9ydCBsYXllci4KKworICBUaGUgZ2VuZXJhbCBsYXllciBoYW5kbGVzIHRoZSBzb2NrZXQgQVBJLCBjb25nZXN0aW9uIGhhbmRsaW5nLAorICBsb29wYmFjaywgc3RhdHMsIHVzZXJtZW0gcGlubmluZywgYW5kIHRoZSBjb25uZWN0aW9uIHN0YXRlIG1hY2hpbmUuCisKKyAgVGhlIHRyYW5zcG9ydCBsYXllciBoYW5kbGVzIHRoZSBkZXRhaWxzIG9mIHRoZSB0cmFuc3BvcnQuIFRoZSBJQgorICB0cmFuc3BvcnQsIGZvciBleGFtcGxlLCBoYW5kbGVzIGFsbCB0aGUgcXVldWUgcGFpcnMsIHdvcmsgcmVxdWVzdHMsCisgIENNIGV2ZW50IGhhbmRsZXJzLCBhbmQgb3RoZXIgSW5maW5pYmFuZCBkZXRhaWxzLgorCisKK1JEUyBLZXJuZWwgU3RydWN0dXJlcworPT09PT09PT09PT09PT09PT09PT09CisKKyAgc3RydWN0IHJkc19tZXNzYWdlCisgICAgYWthIHBvc3NpYmx5ICJyZHNfb3V0Z29pbmciLCB0aGUgZ2VuZXJpYyBSRFMgbGF5ZXIgY29waWVzIGRhdGEgdG8KKyAgICBiZSBzZW50IGFuZCBzZXRzIGhlYWRlciBmaWVsZHMgYXMgbmVlZGVkLCBiYXNlZCBvbiB0aGUgc29ja2V0IEFQSS4KKyAgICBUaGlzIGlzIHRoZW4gcXVldWVkIGZvciB0aGUgaW5kaXZpZHVhbCBjb25uZWN0aW9uIGFuZCBzZW50IGJ5IHRoZQorICAgIGNvbm5lY3Rpb24ncyB0cmFuc3BvcnQuCisgIHN0cnVjdCByZHNfaW5jb21pbmcKKyAgICBhIGdlbmVyaWMgc3RydWN0IHJlZmVycmluZyB0byBpbmNvbWluZyBkYXRhIHRoYXQgY2FuIGJlIGhhbmRlZCBmcm9tCisgICAgdGhlIHRyYW5zcG9ydCB0byB0aGUgZ2VuZXJhbCBjb2RlIGFuZCBxdWV1ZWQgYnkgdGhlIGdlbmVyYWwgY29kZQorICAgIHdoaWxlIHRoZSBzb2NrZXQgaXMgYXdva2VuLiBJdCBpcyB0aGVuIHBhc3NlZCBiYWNrIHRvIHRoZSB0cmFuc3BvcnQKKyAgICBjb2RlIHRvIGhhbmRsZSB0aGUgYWN0dWFsIGNvcHktdG8tdXNlci4KKyAgc3RydWN0IHJkc19zb2NrZXQKKyAgICBwZXItc29ja2V0IGluZm9ybWF0aW9uCisgIHN0cnVjdCByZHNfY29ubmVjdGlvbgorICAgIHBlci1jb25uZWN0aW9uIGluZm9ybWF0aW9uCisgIHN0cnVjdCByZHNfdHJhbnNwb3J0CisgICAgcG9pbnRlcnMgdG8gdHJhbnNwb3J0LXNwZWNpZmljIGZ1bmN0aW9ucworICBzdHJ1Y3QgcmRzX3N0YXRpc3RpY3MKKyAgICBub24tdHJhbnNwb3J0LXNwZWNpZmljIHN0YXRpc3RpY3MKKyAgc3RydWN0IHJkc19jb25nX21hcAorICAgIHdyYXBzIHRoZSByYXcgY29uZ2VzdGlvbiBiaXRtYXAsIGNvbnRhaW5zIHJibm9kZSwgd2FpdHEsIGV0Yy4KKworQ29ubmVjdGlvbiBtYW5hZ2VtZW50Cis9PT09PT09PT09PT09PT09PT09PT0KKworICBDb25uZWN0aW9ucyBtYXkgYmUgaW4gVVAsIERPV04sIENPTk5FQ1RJTkcsIERJU0NPTk5FQ1RJTkcsIGFuZAorICBFUlJPUiBzdGF0ZXMuCisKKyAgVGhlIGZpcnN0IHRpbWUgYW4gYXR0ZW1wdCBpcyBtYWRlIGJ5IGFuIFJEUyBzb2NrZXQgdG8gc2VuZCBkYXRhIHRvCisgIGEgbm9kZSwgYSBjb25uZWN0aW9uIGlzIGFsbG9jYXRlZCBhbmQgY29ubmVjdGVkLiBUaGF0IGNvbm5lY3Rpb24gaXMKKyAgdGhlbiBtYWludGFpbmVkIGZvcmV2ZXIgLS0gaWYgdGhlcmUgYXJlIHRyYW5zcG9ydCBlcnJvcnMsIHRoZQorICBjb25uZWN0aW9uIHdpbGwgYmUgZHJvcHBlZCBhbmQgcmUtZXN0YWJsaXNoZWQuCisKKyAgRHJvcHBpbmcgYSBjb25uZWN0aW9uIHdoaWxlIHBhY2tldHMgYXJlIHF1ZXVlZCB3aWxsIGNhdXNlIHF1ZXVlZCBvcgorICBwYXJ0aWFsbHktc2VudCBkYXRhZ3JhbXMgdG8gYmUgcmV0cmFuc21pdHRlZCB3aGVuIHRoZSBjb25uZWN0aW9uIGlzCisgIHJlLWVzdGFibGlzaGVkLgorCisKK1RoZSBzZW5kIHBhdGgKKz09PT09PT09PT09PT0KKworICByZHNfc2VuZG1zZygpCisgICAgc3RydWN0IHJkc19tZXNzYWdlIGJ1aWx0IGZyb20gaW5jb21pbmcgZGF0YQorICAgIENNU0dzIHBhcnNlZCAoZS5nLiBSRE1BIG9wcykKKyAgICB0cmFuc3BvcnQgY29ubmVjdGlvbiBhbGxvY2VkIGFuZCBjb25uZWN0ZWQgaWYgbm90IGFscmVhZHkKKyAgICByZHNfbWVzc2FnZSBwbGFjZWQgb24gc2VuZCBxdWV1ZQorICAgIHNlbmQgd29ya2VyIGF3b2tlbgorICByZHNfc2VuZF93b3JrZXIoKQorICAgIGNhbGxzIHJkc19zZW5kX3htaXQoKSB1bnRpbCBxdWV1ZSBpcyBlbXB0eQorICByZHNfc2VuZF94bWl0KCkKKyAgICB0cmFuc21pdHMgY29uZ2VzdGlvbiBtYXAgaWYgb25lIGlzIHBlbmRpbmcKKyAgICBtYXkgc2V0IEFDS19SRVFVSVJFRAorICAgIGNhbGxzIHRyYW5zcG9ydCB0byBzZW5kIGVpdGhlciBub24tUkRNQSBvciBSRE1BIG1lc3NhZ2UKKyAgICAoUkRNQSBvcHMgbmV2ZXIgcmV0cmFuc21pdHRlZCkKKyAgcmRzX2liX3htaXQoKQorICAgIGFsbG9jcyB3b3JrIHJlcXVlc3RzIGZyb20gc2VuZCByaW5nCisgICAgYWRkcyBhbnkgbmV3IHNlbmQgY3JlZGl0cyBhdmFpbGFibGUgdG8gcGVlciAoaF9jcmVkaXRzKQorICAgIG1hcHMgdGhlIHJkc19tZXNzYWdlJ3Mgc2cgbGlzdAorICAgIHBpZ2d5YmFja3MgYWNrCisgICAgcG9wdWxhdGVzIHdvcmsgcmVxdWVzdHMKKyAgICBwb3N0IHNlbmQgdG8gY29ubmVjdGlvbidzIHF1ZXVlIHBhaXIKKworVGhlIHJlY3YgcGF0aAorPT09PT09PT09PT09PQorCisgIHJkc19pYl9yZWN2X2NxX2NvbXBfaGFuZGxlcigpCisgICAgbG9va3MgYXQgd3JpdGUgY29tcGxldGlvbnMKKyAgICB1bm1hcHMgcmVjdiBidWZmZXIgZnJvbSBkZXZpY2UKKyAgICBubyBlcnJvcnMsIGNhbGwgcmRzX2liX3Byb2Nlc3NfcmVjdigpCisgICAgcmVmaWxsIHJlY3YgcmluZworICByZHNfaWJfcHJvY2Vzc19yZWN2KCkKKyAgICB2YWxpZGF0ZSBoZWFkZXIgY2hlY2tzdW0KKyAgICBjb3B5IGhlYWRlciB0byByZHNfaWJfaW5jb21pbmcgc3RydWN0IGlmIHN0YXJ0IG9mIGEgbmV3IGRhdGFncmFtCisgICAgYWRkIHRvIGliaW5jJ3MgZnJhZ2xpc3QKKyAgICBpZiBjb21wZXRlZCBkYXRhZ3JhbToKKyAgICAgIHVwZGF0ZSBjb25nIG1hcCBpZiBkYXRhZ3JhbSB3YXMgY29uZyB1cGRhdGUKKyAgICAgIGNhbGwgcmRzX3JlY3ZfaW5jb21pbmcoKSBvdGhlcndpc2UKKyAgICAgIG5vdGUgaWYgYWNrIGlzIHJlcXVpcmVkCisgIHJkc19yZWN2X2luY29taW5nKCkKKyAgICBkcm9wIGR1cGxpY2F0ZSBwYWNrZXRzCisgICAgcmVzcG9uZCB0byBwaW5ncworICAgIGZpbmQgdGhlIHNvY2sgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGF0YWdyYW0KKyAgICBhZGQgdG8gc29jayBxdWV1ZQorICAgIHdha2UgdXAgc29jaworICAgIGRvIHNvbWUgY29uZ2VzdGlvbiBjYWxjdWxhdGlvbnMKKyAgcmRzX3JlY3Ztc2cKKyAgICBjb3B5IGRhdGEgaW50byB1c2VyIGlvdmVjCisgICAgaGFuZGxlIENNU0dzCisgICAgcmV0dXJuIHRvIGFwcGxpY2F0aW9uCisKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3JlZ3VsYXRvcnkudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3JlZ3VsYXRvcnkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NmY3OTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcmVndWxhdG9yeS50eHQKQEAgLTAsMCArMSwyMTQgQEAKK0xpbnV4IHdpcmVsZXNzIHJlZ3VsYXRvcnkgZG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZG9jdW1lbnQgZ2l2ZXMgYSBicmllZiByZXZpZXcgb3ZlciBob3cgdGhlIExpbnV4IHdpcmVsZXNzCityZWd1bGF0b3J5IGluZnJhc3RydWN0dXJlIHdvcmtzLgorCitNb3JlIHVwIHRvIGRhdGUgaW5mb3JtYXRpb24gY2FuIGJlIG9idGFpbmVkIGF0IHRoZSBwcm9qZWN0J3Mgd2ViIHBhZ2U6CisKK2h0dHA6Ly93aXJlbGVzcy5rZXJuZWwub3JnL2VuL2RldmVsb3BlcnMvUmVndWxhdG9yeQorCitLZWVwaW5nIHJlZ3VsYXRvcnkgZG9tYWlucyBpbiB1c2Vyc3BhY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEdWUgdG8gdGhlIGR5bmFtaWMgbmF0dXJlIG9mIHJlZ3VsYXRvcnkgZG9tYWlucyB3ZSBrZWVwIHRoZW0KK2luIHVzZXJzcGFjZSBhbmQgcHJvdmlkZSBhIGZyYW1ld29yayBmb3IgdXNlcnNwYWNlIHRvIHVwbG9hZAordG8gdGhlIGtlcm5lbCBvbmUgcmVndWxhdG9yeSBkb21haW4gdG8gYmUgdXNlZCBhcyB0aGUgY2VudHJhbAorY29yZSByZWd1bGF0b3J5IGRvbWFpbiBhbGwgd2lyZWxlc3MgZGV2aWNlcyBzaG91bGQgYWRoZXJlIHRvLgorCitIb3cgdG8gZ2V0IHJlZ3VsYXRvcnkgZG9tYWlucyB0byB0aGUga2VybmVsCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1VzZXJzcGFjZSBnZXRzIGEgcmVndWxhdG9yeSBkb21haW4gaW4gdGhlIGtlcm5lbCBieSBoYXZpbmcKK2EgdXNlcnNwYWNlIGFnZW50IGJ1aWxkIGl0IGFuZCBzZW5kIGl0IHZpYSBubDgwMjExLiBPbmx5CitleHBlY3RlZCByZWd1bGF0b3J5IGRvbWFpbnMgd2lsbCBiZSByZXNwZWN0ZWQgYnkgdGhlIGtlcm5lbC4KKworQSBjdXJyZW50bHkgYXZhaWxhYmxlIHVzZXJzcGFjZSBhZ2VudCB3aGljaCBjYW4gYWNjb21wbGlzaCB0aGlzCitpcyBDUkRBIC0gY2VudHJhbCByZWd1bGF0b3J5IGRvbWFpbiBhZ2VudC4gSXRzIGRvY3VtZW50ZWQgaGVyZToKKworaHR0cDovL3dpcmVsZXNzLmtlcm5lbC5vcmcvZW4vZGV2ZWxvcGVycy9SZWd1bGF0b3J5L0NSREEKKworRXNzZW50aWFsbHkgdGhlIGtlcm5lbCB3aWxsIHNlbmQgYSB1ZGV2IGV2ZW50IHdoZW4gaXQga25vd3MKK2l0IG5lZWRzIGEgbmV3IHJlZ3VsYXRvcnkgZG9tYWluLiBBIHVkZXYgcnVsZSBjYW4gYmUgcHV0IGluIHBsYWNlCit0byB0cmlnZ2VyIGNyZGEgdG8gc2VuZCB0aGUgcmVzcGVjdGl2ZSByZWd1bGF0b3J5IGRvbWFpbiBmb3IgYQorc3BlY2lmaWMgSVNPL0lFQyAzMTY2IGFscGhhMi4KKworQmVsb3cgaXMgYW4gZXhhbXBsZSB1ZGV2IHJ1bGUgd2hpY2ggY2FuIGJlIHVzZWQ6CisKKyMgRXhhbXBsZSBmaWxlLCBzaG91bGQgYmUgcHV0IGluIC9ldGMvdWRldi9ydWxlcy5kL3JlZ3VsYXRvcnkucnVsZXMKK0tFUk5FTD09InJlZ3VsYXRvcnkqIiwgQUNUSU9OPT0iY2hhbmdlIiwgU1VCU1lTVEVNPT0icGxhdGZvcm0iLCBSVU4rPSIvc2Jpbi9jcmRhIgorCitUaGUgYWxwaGEyIGlzIHBhc3NlZCBhcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB1bmRlciB0aGUgdmFyaWFibGUgQ09VTlRSWS4KKworV2hvIGFza3MgZm9yIHJlZ3VsYXRvcnkgZG9tYWlucz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogVXNlcnMKKworVXNlcnMgY2FuIHVzZSBpdzoKKworaHR0cDovL3dpcmVsZXNzLmtlcm5lbC5vcmcvZW4vdXNlcnMvRG9jdW1lbnRhdGlvbi9pdworCitBbiBleGFtcGxlOgorCisgICMgc2V0IHJlZ3VsYXRvcnkgZG9tYWluIHRvICJDb3N0YSBSaWNhIgorICBpdyByZWcgc2V0IENSCisKK1RoaXMgd2lsbCByZXF1ZXN0IHRoZSBrZXJuZWwgdG8gc2V0IHRoZSByZWd1bGF0b3J5IGRvbWFpbiB0bwordGhlIHNwZWNpZmljaWVkIGFscGhhMi4gVGhlIGtlcm5lbCBpbiB0dXJuIHdpbGwgdGhlbiBhc2sgdXNlcnNwYWNlCit0byBwcm92aWRlIGEgcmVndWxhdG9yeSBkb21haW4gZm9yIHRoZSBhbHBoYTIgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyCitieSBzZW5kaW5nIGEgdWV2ZW50LgorCisqIFdpcmVsZXNzIHN1YnN5c3RlbXMgZm9yIENvdW50cnkgSW5mb3JtYXRpb24gZWxlbWVudHMKKworVGhlIGtlcm5lbCB3aWxsIHNlbmQgYSB1ZXZlbnQgdG8gaW5mb3JtIHVzZXJzcGFjZSBhIG5ldworcmVndWxhdG9yeSBkb21haW4gaXMgcmVxdWlyZWQuIE1vcmUgb24gdGhpcyB0byBiZSBhZGRlZAorYXMgaXRzIGludGVncmF0aW9uIGlzIGFkZGVkLgorCisqIERyaXZlcnMKKworSWYgZHJpdmVycyBkZXRlcm1pbmUgdGhleSBuZWVkIGEgc3BlY2lmaWMgcmVndWxhdG9yeSBkb21haW4KK3NldCB0aGV5IGNhbiBpbmZvcm0gdGhlIHdpcmVsZXNzIGNvcmUgdXNpbmcgcmVndWxhdG9yeV9oaW50KCkuCitUaGV5IGhhdmUgdHdvIG9wdGlvbnMgLS0gdGhleSBlaXRoZXIgcHJvdmlkZSBhbiBhbHBoYTIgc28gdGhhdAorY3JkYSBjYW4gcHJvdmlkZSBiYWNrIGEgcmVndWxhdG9yeSBkb21haW4gZm9yIHRoYXQgY291bnRyeSBvcgordGhleSBjYW4gYnVpbGQgdGhlaXIgb3duIHJlZ3VsYXRvcnkgZG9tYWluIGJhc2VkIG9uIGludGVybmFsCitjdXN0b20ga25vd2xlZGdlIHNvIHRoZSB3aXJlbGVzcyBjb3JlIGNhbiByZXNwZWN0IGl0LgorCisqTW9zdCogZHJpdmVycyB3aWxsIHJlbHkgb24gdGhlIGZpcnN0IG1lY2hhbmlzbSBvZiBwcm92aWRpbmcgYQorcmVndWxhdG9yeSBoaW50IHdpdGggYW4gYWxwaGEyLiBGb3IgdGhlc2UgZHJpdmVycyB0aGVyZSBpcyBhbiBhZGRpdGlvbmFsCitjaGVjayB0aGF0IGNhbiBiZSB1c2VkIHRvIGVuc3VyZSBjb21wbGlhbmNlIGJhc2VkIG9uIGN1c3RvbSBFRVBST00KK3JlZ3VsYXRvcnkgZGF0YS4gVGhpcyBhZGRpdGlvbmFsIGNoZWNrIGNhbiBiZSB1c2VkIGJ5IGRyaXZlcnMgYnkKK3JlZ2lzdGVyaW5nIG9uIGl0cyBzdHJ1Y3Qgd2lwaHkgYSByZWdfbm90aWZpZXIoKSBjYWxsYmFjay4gVGhpcyBub3RpZmllcgoraXMgY2FsbGVkIHdoZW4gdGhlIGNvcmUncyByZWd1bGF0b3J5IGRvbWFpbiBoYXMgYmVlbiBjaGFuZ2VkLiBUaGUgZHJpdmVyCitjYW4gdXNlIHRoaXMgdG8gcmV2aWV3IHRoZSBjaGFuZ2VzIG1hZGUgYW5kIGFsc28gcmV2aWV3IHdobyBtYWRlIHRoZW0KKyhkcml2ZXIsIHVzZXIsIGNvdW50cnkgSUUpIGFuZCBkZXRlcm1pbmUgd2hhdCB0byBhbGxvdyBiYXNlZCBvbiBpdHMKK2ludGVybmFsIEVFUFJPTSBkYXRhLiBEZXZpY2VzIGRyaXZlcnMgd2lzaGluZyB0byBiZSBjYXBhYmxlIG9mIHdvcmxkCityb2FtaW5nIHNob3VsZCB1c2UgdGhpcyBjYWxsYmFjay4gTW9yZSBvbiB3b3JsZCByb2FtaW5nIHdpbGwgYmUKK2FkZGVkIHRvIHRoaXMgZG9jdW1lbnQgd2hlbiBpdHMgc3VwcG9ydCBpcyBlbmFibGVkLgorCitEZXZpY2UgZHJpdmVycyB3aG8gcHJvdmlkZSB0aGVpciBvd24gYnVpbHQgcmVndWxhdG9yeSBkb21haW4KK2RvIG5vdCBuZWVkIGEgY2FsbGJhY2sgYXMgdGhlIGNoYW5uZWxzIHJlZ2lzdGVyZWQgYnkgdGhlbSBhcmUKK3RoZSBvbmx5IG9uZXMgdGhhdCB3aWxsIGJlIGFsbG93ZWQgYW5kIHRoZXJlZm9yZSAqYWRkaXRpb25hbCoKK2NoYW5uZWxzIGNhbm5vdCBiZSBlbmFibGVkLgorCitFeGFtcGxlIGNvZGUgLSBkcml2ZXJzIGhpbnRpbmcgYW4gYWxwaGEyOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZXhhbXBsZSBjb21lcyBmcm9tIHRoZSB6ZDEyMTFydyBkZXZpY2UgZHJpdmVyLiBZb3UgY2FuIHN0YXJ0CitieSBoYXZpbmcgYSBtYXBwaW5nIG9mIHlvdXIgZGV2aWNlJ3MgRUVQUk9NIGNvdW50cnkvcmVndWxhdG9yeQorZG9tYWluIHZhbHVlIHRvIGEgc3BlY2lmaWMgYWxwaGEyIGFzIGZvbGxvd3M6CisKK3N0YXRpYyBzdHJ1Y3QgemRfcmVnX2FscGhhMl9tYXAgcmVnX2FscGhhMl9tYXBbXSA9IHsKKwl7IFpEX1JFR0RPTUFJTl9GQ0MsICJVUyIgfSwKKwl7IFpEX1JFR0RPTUFJTl9JQywgIkNBIiB9LAorCXsgWkRfUkVHRE9NQUlOX0VUU0ksICJERSIgfSwgLyogR2VuZXJpYyBFVFNJLCB1c2UgbW9zdCByZXN0cmljdGl2ZSAqLworCXsgWkRfUkVHRE9NQUlOX0pBUEFOLCAiSlAiIH0sCisJeyBaRF9SRUdET01BSU5fSkFQQU5fQURELCAiSlAiIH0sCisJeyBaRF9SRUdET01BSU5fU1BBSU4sICJFUyIgfSwKKwl7IFpEX1JFR0RPTUFJTl9GUkFOQ0UsICJGUiIgfSwKKworVGhlbiB5b3UgY2FuIGRlZmluZSBhIHJvdXRpbmUgdG8gbWFwIHlvdXIgcmVhZCBFRVBST00gdmFsdWUgdG8gYW4gYWxwaGEyLAorYXMgZm9sbG93czoKKworc3RhdGljIGludCB6ZF9yZWcyYWxwaGEyKHU4IHJlZ2RvbWFpbiwgY2hhciAqYWxwaGEyKQoreworCXVuc2lnbmVkIGludCBpOworCXN0cnVjdCB6ZF9yZWdfYWxwaGEyX21hcCAqcmVnX21hcDsKKwkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocmVnX2FscGhhMl9tYXApOyBpKyspIHsKKwkJCXJlZ19tYXAgPSAmcmVnX2FscGhhMl9tYXBbaV07CisJCQlpZiAocmVnZG9tYWluID09IHJlZ19tYXAtPnJlZykgeworCQkJYWxwaGEyWzBdID0gcmVnX21hcC0+YWxwaGEyWzBdOworCQkJYWxwaGEyWzFdID0gcmVnX21hcC0+YWxwaGEyWzFdOworCQkJcmV0dXJuIDA7CisJCX0KKwl9CisJcmV0dXJuIDE7Cit9CisKK0xhc3RseSwgeW91IGNhbiB0aGVuIGhpbnQgdG8gdGhlIGNvcmUgb2YgeW91ciBkaXNjb3ZlcmVkIGFscGhhMiwgaWYgYSBtYXRjaAord2FzIGZvdW5kLiBZb3UgbmVlZCB0byBkbyB0aGlzIGFmdGVyIHlvdSBoYXZlIHJlZ2lzdGVyZWQgeW91ciB3aXBoeS4gWW91CithcmUgZXhwZWN0ZWQgdG8gZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCisKKwlyID0gemRfcmVnMmFscGhhMihtYWMtPnJlZ2RvbWFpbiwgYWxwaGEyKTsKKwlpZiAoIXIpCisJCXJlZ3VsYXRvcnlfaGludChody0+d2lwaHksIGFscGhhMik7CisKK0V4YW1wbGUgY29kZSAtIGRyaXZlcnMgcHJvdmlkaW5nIGEgYnVpbHQgaW4gcmVndWxhdG9yeSBkb21haW46CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitbTk9URTogVGhpcyBBUEkgaXMgbm90IGN1cnJlbnRseSBhdmFpbGFibGUsIGl0IGNhbiBiZSBhZGRlZCB3aGVuIHJlcXVpcmVkXQorCitJZiB5b3UgaGF2ZSByZWd1bGF0b3J5IGluZm9ybWF0aW9uIHlvdSBjYW4gb2J0YWluIGZyb20geW91cgorZHJpdmVyIGFuZCB5b3UgKm5lZWQqIHRvIHVzZSB0aGlzIHdlIGxldCB5b3UgYnVpbGQgYSByZWd1bGF0b3J5IGRvbWFpbgorc3RydWN0dXJlIGFuZCBwYXNzIGl0IHRvIHRoZSB3aXJlbGVzcyBjb3JlLiBUbyBkbyB0aGlzIHlvdSBzaG91bGQKK2ttYWxsb2MoKSBhIHN0cnVjdHVyZSBiaWcgZW5vdWdoIHRvIGhvbGQgeW91ciByZWd1bGF0b3J5IGRvbWFpbgorc3RydWN0dXJlIGFuZCB5b3Ugc2hvdWxkIHRoZW4gZmlsbCBpdCB3aXRoIHlvdXIgZGF0YS4gRmluYWxseSB5b3Ugc2ltcGx5CitjYWxsIHJlZ3VsYXRvcnlfaGludCgpIHdpdGggdGhlIHJlZ3VsYXRvcnkgZG9tYWluIHN0cnVjdHVyZSBpbiBpdC4KKworQmVsbG93IGlzIGEgc2ltcGxlIGV4YW1wbGUsIHdpdGggYSByZWd1bGF0b3J5IGRvbWFpbiBjYWNoZWQgdXNpbmcgdGhlIHN0YWNrLgorWW91ciBpbXBsZW1lbnRhdGlvbiBtYXkgdmFyeSAocmVhZCBFRVBST00gY2FjaGUgaW5zdGVhZCwgZm9yIGV4YW1wbGUpLgorCitFeGFtcGxlIGNhY2hlIG9mIHNvbWUgcmVndWxhdG9yeSBkb21haW4KKworc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gbXlkcml2ZXJfanBfcmVnZG9tID0geworCS5uX3JlZ19ydWxlcyA9IDMsCisJLmFscGhhMiA9ICAiSlAiLAorCS8vLmFscGhhMiA9ICAiOTkiLCAvKiBJZiBJIGhhdmUgbm8gYWxwaGEyIHRvIG1hcCBpdCB0byAqLworCS5yZWdfcnVsZXMgPSB7CisJCS8qIElFRUUgODAyLjExYi9nLCBjaGFubmVscyAxLi4xNCAqLworCQlSRUdfUlVMRSgyNDEyLTIwLCAyNDg0KzIwLCA0MCwgNiwgMjAsIDApLAorCQkvKiBJRUVFIDgwMi4xMWEsIGNoYW5uZWxzIDM0Li40OCAqLworCQlSRUdfUlVMRSg1MTcwLTIwLCA1MjQwKzIwLCA0MCwgNiwgMjAsCisJCQlOTDgwMjExX1JSRl9OT19JUiksCisJCS8qIElFRUUgODAyLjExYSwgY2hhbm5lbHMgNTIuLjY0ICovCisJCVJFR19SVUxFKDUyNjAtMjAsIDUzMjArMjAsIDQwLCA2LCAyMCwKKwkJCU5MODAyMTFfUlJGX05PX0lSfAorCQkJTkw4MDIxMV9SUkZfREZTKSwKKwl9Cit9OworCitUaGVuIGluIHNvbWUgcGFydCBvZiB5b3VyIGNvZGUgYWZ0ZXIgeW91ciB3aXBoeSBoYXMgYmVlbiByZWdpc3RlcmVkOgorCisJc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4gKnJkOworCWludCBzaXplX29mX3JlZ2Q7CisJaW50IG51bV9ydWxlcyA9IG15ZHJpdmVyX2pwX3JlZ2RvbS5uX3JlZ19ydWxlczsKKwl1bnNpZ25lZCBpbnQgaTsKKworCXNpemVfb2ZfcmVnZCA9IHNpemVvZihzdHJ1Y3QgaWVlZTgwMjExX3JlZ2RvbWFpbikgKworCQkobnVtX3J1bGVzICogc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfcmVnX3J1bGUpKTsKKworCXJkID0ga3phbGxvYyhzaXplX29mX3JlZ2QsIEdGUF9LRVJORUwpOworCWlmICghcmQpCisJCXJldHVybiAtRU5PTUVNOworCisJbWVtY3B5KHJkLCAmbXlkcml2ZXJfanBfcmVnZG9tLCBzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9yZWdkb21haW4pKTsKKworCWZvciAoaT0wOyBpIDwgbnVtX3J1bGVzOyBpKyspCisJCW1lbWNweSgmcmQtPnJlZ19ydWxlc1tpXSwKKwkJICAgICAgICZteWRyaXZlcl9qcF9yZWdkb20ucmVnX3J1bGVzW2ldLAorCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfcmVnX3J1bGUpKTsKKwlyZWd1bGF0b3J5X3N0cnVjdF9oaW50KHJkKTsKKworU3RhdGljYWxseSBjb21waWxlZCByZWd1bGF0b3J5IGRhdGFiYXNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW4gbW9zdCBzaXR1YXRpb25zIHRoZSB1c2VybGFuZCBzb2x1dGlvbiB1c2luZyBDUkRBIGFzIGRlc2NyaWJlZAorYWJvdmUgaXMgdGhlIHByZWZlcnJlZCBzb2x1dGlvbi4gIEhvd2V2ZXIgaW4gc29tZSBjYXNlcyBhIHNldCBvZgorcnVsZXMgYnVpbHQgaW50byB0aGUga2VybmVsIGl0c2VsZiBtYXkgYmUgZGVzaXJhYmxlLiAgVG8gYWNjb3VudAorZm9yIHRoaXMgc2l0dWF0aW9uLCBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhhcyBiZWVuIHByb3ZpZGVkCisoaS5lLiBDT05GSUdfQ0ZHODAyMTFfSU5URVJOQUxfUkVHREIpLiAgV2l0aCB0aGlzIG9wdGlvbiBlbmFibGVkLAordGhlIHdpcmVsZXNzIGRhdGFiYXNlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiBuZXQvd2lyZWxlc3MvZGIudHh0IGlzCit1c2VkIHRvIGdlbmVyYXRlIGEgZGF0YSBzdHJ1Y3R1cmUgZW5jb2RlZCBpbiBuZXQvd2lyZWxlc3MvcmVnZGIuYy4KK1RoYXQgb3B0aW9uIGFsc28gZW5hYmxlcyBjb2RlIGluIG5ldC93aXJlbGVzcy9yZWcuYyB3aGljaCBxdWVyaWVzCit0aGUgZGF0YSBpbiByZWdkYi5jIGFzIGFuIGFsdGVybmF0aXZlIHRvIHVzaW5nIENSREEuCisKK1RoZSBmaWxlIG5ldC93aXJlbGVzcy9kYi50eHQgc2hvdWxkIGJlIGtlcHQgdXAtdG8tZGF0ZSB3aXRoIHRoZSBkYi50eHQKK2ZpbGUgYXZhaWxhYmxlIGluIHRoZSBnaXQgcmVwb3NpdG9yeSBoZXJlOgorCisgICAgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2xpbnZpbGxlL3dpcmVsZXNzLXJlZ2RiLmdpdAorCitBZ2FpbiwgbW9zdCB1c2VycyBpbiBtb3N0IHNpdHVhdGlvbnMgc2hvdWxkIGJlIHVzaW5nIHRoZSBDUkRBIHBhY2thZ2UKK3Byb3ZpZGVkIHdpdGggdGhlaXIgZGlzdHJpYnV0aW9uLCBhbmQgaW4gbW9zdCBvdGhlciBzaXR1YXRpb25zIHVzZXJzCitzaG91bGQgYmUgYnVpbGRpbmcgYW5kIHVzaW5nIENSREEgb24gdGhlaXIgb3duIHJhdGhlciB0aGFuIHVzaW5nCit0aGlzIG9wdGlvbi4gIElmIHlvdSBhcmUgbm90IGFic29sdXRlbHkgc3VyZSB0aGF0IHlvdSBzaG91bGQgYmUgdXNpbmcKK0NPTkZJR19DRkc4MDIxMV9JTlRFUk5BTF9SRUdEQiB0aGVuIF9ET19OT1RfVVNFX0lUXy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9yeHJwYy50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcnhycGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2YTkyNGMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcnhycGMudHh0CkBAIC0wLDAgKzEsOTQ3IEBACisJCQkgICAgPT09PT09PT09PT09PT09PT09PT09PQorCQkJICAgIFJ4UlBDIE5FVFdPUksgUFJPVE9DT0wKKwkJCSAgICA9PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBSeFJQQyBwcm90b2NvbCBkcml2ZXIgcHJvdmlkZXMgYSByZWxpYWJsZSB0d28tcGhhc2UgdHJhbnNwb3J0IG9uIHRvcCBvZiBVRFAKK3RoYXQgY2FuIGJlIHVzZWQgdG8gcGVyZm9ybSBSeFJQQyByZW1vdGUgb3BlcmF0aW9ucy4gIFRoaXMgaXMgZG9uZSBvdmVyIHNvY2tldHMKK29mIEFGX1JYUlBDIGZhbWlseSwgdXNpbmcgc2VuZG1zZygpIGFuZCByZWN2bXNnKCkgd2l0aCBjb250cm9sIGRhdGEgdG8gc2VuZCBhbmQKK3JlY2VpdmUgZGF0YSwgYWJvcnRzIGFuZCBlcnJvcnMuCisKK0NvbnRlbnRzIG9mIHRoaXMgZG9jdW1lbnQ6CisKKyAoKikgT3ZlcnZpZXcuCisKKyAoKikgUnhSUEMgcHJvdG9jb2wgc3VtbWFyeS4KKworICgqKSBBRl9SWFJQQyBkcml2ZXIgbW9kZWwuCisKKyAoKikgQ29udHJvbCBtZXNzYWdlcy4KKworICgqKSBTb2NrZXQgb3B0aW9ucy4KKworICgqKSBTZWN1cml0eS4KKworICgqKSBFeGFtcGxlIGNsaWVudCB1c2FnZS4KKworICgqKSBFeGFtcGxlIHNlcnZlciB1c2FnZS4KKworICgqKSBBRl9SWFJQQyBrZXJuZWwgaW50ZXJmYWNlLgorCisgKCopIENvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzLgorCisKKz09PT09PT09CitPVkVSVklFVworPT09PT09PT0KKworUnhSUEMgaXMgYSB0d28tbGF5ZXIgcHJvdG9jb2wuICBUaGVyZSBpcyBhIHNlc3Npb24gbGF5ZXIgd2hpY2ggcHJvdmlkZXMKK3JlbGlhYmxlIHZpcnR1YWwgY29ubmVjdGlvbnMgdXNpbmcgVURQIG92ZXIgSVB2NCAob3IgSVB2NikgYXMgdGhlIHRyYW5zcG9ydAorbGF5ZXIsIGJ1dCBpbXBsZW1lbnRzIGEgcmVhbCBuZXR3b3JrIHByb3RvY29sOyBhbmQgdGhlcmUncyB0aGUgcHJlc2VudGF0aW9uCitsYXllciB3aGljaCByZW5kZXJzIHN0cnVjdHVyZWQgZGF0YSB0byBiaW5hcnkgYmxvYnMgYW5kIGJhY2sgYWdhaW4gdXNpbmcgWERSCisoYXMgZG9lcyBTdW5SUEMpOgorCisJCSstLS0tLS0tLS0tLS0tKworCQl8IEFwcGxpY2F0aW9uIHwKKwkJKy0tLS0tLS0tLS0tLS0rCisJCXwgICAgIFhEUiAgICAgfAkJUHJlc2VudGF0aW9uCisJCSstLS0tLS0tLS0tLS0tKworCQl8ICAgIFJ4UlBDICAgIHwJCVNlc3Npb24KKwkJKy0tLS0tLS0tLS0tLS0rCisJCXwgICAgIFVEUCAgICAgfAkJVHJhbnNwb3J0CisJCSstLS0tLS0tLS0tLS0tKworCisKK0FGX1JYUlBDIHByb3ZpZGVzOgorCisgKDEpIFBhcnQgb2YgYW4gUnhSUEMgZmFjaWxpdHkgZm9yIGJvdGgga2VybmVsIGFuZCB1c2Vyc3BhY2UgYXBwbGljYXRpb25zIGJ5CisgICAgIG1ha2luZyB0aGUgc2Vzc2lvbiBwYXJ0IG9mIGl0IGEgTGludXggbmV0d29yayBwcm90b2NvbCAoQUZfUlhSUEMpLgorCisgKDIpIEEgdHdvLXBoYXNlIHByb3RvY29sLiAgVGhlIGNsaWVudCB0cmFuc21pdHMgYSBibG9iICh0aGUgcmVxdWVzdCkgYW5kIHRoZW4KKyAgICAgcmVjZWl2ZXMgYSBibG9iICh0aGUgcmVwbHkpLCBhbmQgdGhlIHNlcnZlciByZWNlaXZlcyB0aGUgcmVxdWVzdCBhbmQgdGhlbgorICAgICB0cmFuc21pdHMgdGhlIHJlcGx5LgorCisgKDMpIFJldGVudGlvbiBvZiB0aGUgcmV1c2FibGUgYml0cyBvZiB0aGUgdHJhbnNwb3J0IHN5c3RlbSBzZXQgdXAgZm9yIG9uZSBjYWxsCisgICAgIHRvIHNwZWVkIHVwIHN1YnNlcXVlbnQgY2FsbHMuCisKKyAoNCkgQSBzZWN1cmUgcHJvdG9jb2wsIHVzaW5nIHRoZSBMaW51eCBrZXJuZWwncyBrZXkgcmV0ZW50aW9uIGZhY2lsaXR5IHRvCisgICAgIG1hbmFnZSBzZWN1cml0eSBvbiB0aGUgY2xpZW50IGVuZC4gIFRoZSBzZXJ2ZXIgZW5kIG11c3Qgb2YgbmVjZXNzaXR5IGJlCisgICAgIG1vcmUgYWN0aXZlIGluIHNlY3VyaXR5IG5lZ290aWF0aW9ucy4KKworQUZfUlhSUEMgZG9lcyBub3QgcHJvdmlkZSBYRFIgbWFyc2hhbGxpbmcvcHJlc2VudGF0aW9uIGZhY2lsaXRpZXMuICBUaGF0IGlzCitsZWZ0IHRvIHRoZSBhcHBsaWNhdGlvbi4gIEFGX1JYUlBDIG9ubHkgZGVhbHMgaW4gYmxvYnMuICBFdmVuIHRoZSBvcGVyYXRpb24gSUQKK2lzIGp1c3QgdGhlIGZpcnN0IGZvdXIgYnl0ZXMgb2YgdGhlIHJlcXVlc3QgYmxvYiwgYW5kIGFzIHN1Y2ggaXMgYmV5b25kIHRoZQora2VybmVsJ3MgaW50ZXJlc3QuCisKKworU29ja2V0cyBvZiBBRl9SWFJQQyBmYW1pbHkgYXJlOgorCisgKDEpIGNyZWF0ZWQgYXMgdHlwZSBTT0NLX0RHUkFNOworCisgKDIpIHByb3ZpZGVkIHdpdGggYSBwcm90b2NvbCBvZiB0aGUgdHlwZSBvZiB1bmRlcmx5aW5nIHRyYW5zcG9ydCB0aGV5J3JlIGdvaW5nCisgICAgIHRvIHVzZSAtIGN1cnJlbnRseSBvbmx5IFBGX0lORVQgaXMgc3VwcG9ydGVkLgorCisKK1RoZSBBbmRyZXcgRmlsZSBTeXN0ZW0gKEFGUykgaXMgYW4gZXhhbXBsZSBvZiBhbiBhcHBsaWNhdGlvbiB0aGF0IHVzZXMgdGhpcyBhbmQKK3RoYXQgaGFzIGJvdGgga2VybmVsIChmaWxlc3lzdGVtKSBhbmQgdXNlcnNwYWNlICh1dGlsaXR5KSBjb21wb25lbnRzLgorCisKKz09PT09PT09PT09PT09PT09PT09PT0KK1JYUlBDIFBST1RPQ09MIFNVTU1BUlkKKz09PT09PT09PT09PT09PT09PT09PT0KKworQW4gb3ZlcnZpZXcgb2YgdGhlIFJ4UlBDIHByb3RvY29sOgorCisgKCopIFJ4UlBDIHNpdHMgb24gdG9wIG9mIGFub3RoZXIgbmV0d29ya2luZyBwcm90b2NvbCAoVURQIGlzIHRoZSBvbmx5IG9wdGlvbgorICAgICBjdXJyZW50bHkpLCBhbmQgdXNlcyB0aGlzIHRvIHByb3ZpZGUgbmV0d29yayB0cmFuc3BvcnQuICBVRFAgcG9ydHMsIGZvcgorICAgICBleGFtcGxlLCBwcm92aWRlIHRyYW5zcG9ydCBlbmRwb2ludHMuCisKKyAoKikgUnhSUEMgc3VwcG9ydHMgbXVsdGlwbGUgdmlydHVhbCAiY29ubmVjdGlvbnMiIGZyb20gYW55IGdpdmVuIHRyYW5zcG9ydAorICAgICBlbmRwb2ludCwgdGh1cyBhbGxvd2luZyB0aGUgZW5kcG9pbnRzIHRvIGJlIHNoYXJlZCwgZXZlbiB0byB0aGUgc2FtZQorICAgICByZW1vdGUgZW5kcG9pbnQuCisKKyAoKikgRWFjaCBjb25uZWN0aW9uIGdvZXMgdG8gYSBwYXJ0aWN1bGFyICJzZXJ2aWNlIi4gIEEgY29ubmVjdGlvbiBtYXkgbm90IGdvCisgICAgIHRvIG11bHRpcGxlIHNlcnZpY2VzLiAgQSBzZXJ2aWNlIG1heSBiZSBjb25zaWRlcmVkIHRoZSBSeFJQQyBlcXVpdmFsZW50IG9mCisgICAgIGEgcG9ydCBudW1iZXIuICBBRl9SWFJQQyBwZXJtaXRzIG11bHRpcGxlIHNlcnZpY2VzIHRvIHNoYXJlIGFuIGVuZHBvaW50LgorCisgKCopIENsaWVudC1vcmlnaW5hdGluZyBwYWNrZXRzIGFyZSBtYXJrZWQsIHRodXMgYSB0cmFuc3BvcnQgZW5kcG9pbnQgY2FuIGJlCisgICAgIHNoYXJlZCBiZXR3ZWVuIGNsaWVudCBhbmQgc2VydmVyIGNvbm5lY3Rpb25zIChjb25uZWN0aW9ucyBoYXZlIGEKKyAgICAgZGlyZWN0aW9uKS4KKworICgqKSBVcCB0byBhIGJpbGxpb24gY29ubmVjdGlvbnMgbWF5IGJlIHN1cHBvcnRlZCBjb25jdXJyZW50bHkgYmV0d2VlbiBvbmUKKyAgICAgbG9jYWwgdHJhbnNwb3J0IGVuZHBvaW50IGFuZCBvbmUgc2VydmljZSBvbiBvbmUgcmVtb3RlIGVuZHBvaW50LiAgQW4gUnhSUEMKKyAgICAgY29ubmVjdGlvbiBpcyBkZXNjcmliZWQgYnkgc2V2ZW4gbnVtYmVyczoKKworCUxvY2FsIGFkZHJlc3MJfQorCUxvY2FsIHBvcnQJfSBUcmFuc3BvcnQgKFVEUCkgYWRkcmVzcworCVJlbW90ZSBhZGRyZXNzCX0KKwlSZW1vdGUgcG9ydAl9CisJRGlyZWN0aW9uCisJQ29ubmVjdGlvbiBJRAorCVNlcnZpY2UgSUQKKworICgqKSBFYWNoIFJ4UlBDIG9wZXJhdGlvbiBpcyBhICJjYWxsIi4gIEEgY29ubmVjdGlvbiBtYXkgbWFrZSB1cCB0byBmb3VyCisgICAgIGJpbGxpb24gY2FsbHMsIGJ1dCBvbmx5IHVwIHRvIGZvdXIgY2FsbHMgbWF5IGJlIGluIHByb2dyZXNzIG9uIGEKKyAgICAgY29ubmVjdGlvbiBhdCBhbnkgb25lIHRpbWUuCisKKyAoKikgQ2FsbHMgYXJlIHR3by1waGFzZSBhbmQgYXN5bW1ldHJpYzogdGhlIGNsaWVudCBzZW5kcyBpdHMgcmVxdWVzdCBkYXRhLAorICAgICB3aGljaCB0aGUgc2VydmljZSByZWNlaXZlczsgdGhlbiB0aGUgc2VydmljZSB0cmFuc21pdHMgdGhlIHJlcGx5IGRhdGEKKyAgICAgd2hpY2ggdGhlIGNsaWVudCByZWNlaXZlcy4KKworICgqKSBUaGUgZGF0YSBibG9icyBhcmUgb2YgaW5kZWZpbml0ZSBzaXplLCB0aGUgZW5kIG9mIGEgcGhhc2UgaXMgbWFya2VkIHdpdGggYQorICAgICBmbGFnIGluIHRoZSBwYWNrZXQuICBUaGUgbnVtYmVyIG9mIHBhY2tldHMgb2YgZGF0YSBtYWtpbmcgdXAgb25lIGJsb2IgbWF5CisgICAgIG5vdCBleGNlZWQgNCBiaWxsaW9uLCBob3dldmVyLCBhcyB0aGlzIHdvdWxkIGNhdXNlIHRoZSBzZXF1ZW5jZSBudW1iZXIgdG8KKyAgICAgd3JhcC4KKworICgqKSBUaGUgZmlyc3QgZm91ciBieXRlcyBvZiB0aGUgcmVxdWVzdCBkYXRhIGFyZSB0aGUgc2VydmljZSBvcGVyYXRpb24gSUQuCisKKyAoKikgU2VjdXJpdHkgaXMgbmVnb3RpYXRlZCBvbiBhIHBlci1jb25uZWN0aW9uIGJhc2lzLiAgVGhlIGNvbm5lY3Rpb24gaXMKKyAgICAgaW5pdGlhdGVkIGJ5IHRoZSBmaXJzdCBkYXRhIHBhY2tldCBvbiBpdCBhcnJpdmluZy4gIElmIHNlY3VyaXR5IGlzCisgICAgIHJlcXVlc3RlZCwgdGhlIHNlcnZlciB0aGVuIGlzc3VlcyBhICJjaGFsbGVuZ2UiIGFuZCB0aGVuIHRoZSBjbGllbnQKKyAgICAgcmVwbGllcyB3aXRoIGEgInJlc3BvbnNlIi4gIElmIHRoZSByZXNwb25zZSBpcyBzdWNjZXNzZnVsLCB0aGUgc2VjdXJpdHkgaXMKKyAgICAgc2V0IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhhdCBjb25uZWN0aW9uLCBhbmQgYWxsIHN1YnNlcXVlbnQgY2FsbHMgbWFkZQorICAgICB1cG9uIGl0IHVzZSB0aGF0IHNhbWUgc2VjdXJpdHkuICBJbiB0aGUgZXZlbnQgdGhhdCB0aGUgc2VydmVyIGxldHMgYQorICAgICBjb25uZWN0aW9uIGxhcHNlIGJlZm9yZSB0aGUgY2xpZW50LCB0aGUgc2VjdXJpdHkgd2lsbCBiZSByZW5lZ290aWF0ZWQgaWYKKyAgICAgdGhlIGNsaWVudCB1c2VzIHRoZSBjb25uZWN0aW9uIGFnYWluLgorCisgKCopIENhbGxzIHVzZSBBQ0sgcGFja2V0cyB0byBoYW5kbGUgcmVsaWFiaWxpdHkuICBEYXRhIHBhY2tldHMgYXJlIGFsc28KKyAgICAgZXhwbGljaXRseSBzZXF1ZW5jZWQgcGVyIGNhbGwuCisKKyAoKikgVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBwb3NpdGl2ZSBhY2tub3dsZWRnbWVudDogaGFyZC1BQ0tzIGFuZCBzb2Z0LUFDS3MuCisgICAgIEEgaGFyZC1BQ0sgaW5kaWNhdGVzIHRvIHRoZSBmYXIgc2lkZSB0aGF0IGFsbCB0aGUgZGF0YSByZWNlaXZlZCB0byBhIHBvaW50CisgICAgIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBwcm9jZXNzZWQ7IGEgc29mdC1BQ0sgaW5kaWNhdGVzIHRoYXQgdGhlIGRhdGEgaGFzCisgICAgIGJlZW4gcmVjZWl2ZWQgYnV0IG1heSB5ZXQgYmUgZGlzY2FyZGVkIGFuZCByZS1yZXF1ZXN0ZWQuICBUaGUgc2VuZGVyIG1heQorICAgICBub3QgZGlzY2FyZCBhbnkgdHJhbnNtaXR0YWJsZSBwYWNrZXRzIHVudGlsIHRoZXkndmUgYmVlbiBoYXJkLUFDSydkLgorCisgKCopIFJlY2VwdGlvbiBvZiBhIHJlcGx5IGRhdGEgcGFja2V0IGltcGxpY2l0bHkgaGFyZC1BQ0sncyBhbGwgdGhlIGRhdGEKKyAgICAgcGFja2V0cyB0aGF0IG1ha2UgdXAgdGhlIHJlcXVlc3QuCisKKyAoKikgQW4gY2FsbCBpcyBjb21wbGV0ZSB3aGVuIHRoZSByZXF1ZXN0IGhhcyBiZWVuIHNlbnQsIHRoZSByZXBseSBoYXMgYmVlbgorICAgICByZWNlaXZlZCBhbmQgdGhlIGZpbmFsIGhhcmQtQUNLIG9uIHRoZSBsYXN0IHBhY2tldCBvZiB0aGUgcmVwbHkgaGFzCisgICAgIHJlYWNoZWQgdGhlIHNlcnZlci4KKworICgqKSBBbiBjYWxsIG1heSBiZSBhYm9ydGVkIGJ5IGVpdGhlciBlbmQgYXQgYW55IHRpbWUgdXAgdG8gaXRzIGNvbXBsZXRpb24uCisKKworPT09PT09PT09PT09PT09PT09PT09CitBRl9SWFJQQyBEUklWRVIgTU9ERUwKKz09PT09PT09PT09PT09PT09PT09PQorCitBYm91dCB0aGUgQUZfUlhSUEMgZHJpdmVyOgorCisgKCopIFRoZSBBRl9SWFJQQyBwcm90b2NvbCB0cmFuc3BhcmVudGx5IHVzZXMgaW50ZXJuYWwgc29ja2V0cyBvZiB0aGUgdHJhbnNwb3J0CisgICAgIHByb3RvY29sIHRvIHJlcHJlc2VudCB0cmFuc3BvcnQgZW5kcG9pbnRzLgorCisgKCopIEFGX1JYUlBDIHNvY2tldHMgbWFwIG9udG8gUnhSUEMgY29ubmVjdGlvbiBidW5kbGVzLiAgQWN0dWFsIFJ4UlBDCisgICAgIGNvbm5lY3Rpb25zIGFyZSBoYW5kbGVkIHRyYW5zcGFyZW50bHkuICBPbmUgY2xpZW50IHNvY2tldCBtYXkgYmUgdXNlZCB0bworICAgICBtYWtlIG11bHRpcGxlIHNpbXVsdGFuZW91cyBjYWxscyB0byB0aGUgc2FtZSBzZXJ2aWNlLiAgT25lIHNlcnZlciBzb2NrZXQKKyAgICAgbWF5IGhhbmRsZSBjYWxscyBmcm9tIG1hbnkgY2xpZW50cy4KKworICgqKSBBZGRpdGlvbmFsIHBhcmFsbGVsIGNsaWVudCBjb25uZWN0aW9ucyB3aWxsIGJlIGluaXRpYXRlZCB0byBzdXBwb3J0IGV4dHJhCisgICAgIGNvbmN1cnJlbnQgY2FsbHMsIHVwIHRvIGEgdHVuYWJsZSBsaW1pdC4KKworICgqKSBFYWNoIGNvbm5lY3Rpb24gaXMgcmV0YWluZWQgZm9yIGEgY2VydGFpbiBhbW91bnQgb2YgdGltZSBbdHVuYWJsZV0gYWZ0ZXIKKyAgICAgdGhlIGxhc3QgY2FsbCBjdXJyZW50bHkgdXNpbmcgaXQgaGFzIGNvbXBsZXRlZCBpbiBjYXNlIGEgbmV3IGNhbGwgaXMgbWFkZQorICAgICB0aGF0IGNvdWxkIHJldXNlIGl0LgorCisgKCopIEVhY2ggaW50ZXJuYWwgVURQIHNvY2tldCBpcyByZXRhaW5lZCBbdHVuYWJsZV0gZm9yIGEgY2VydGFpbiBhbW91bnQgb2YKKyAgICAgdGltZSBbdHVuYWJsZV0gYWZ0ZXIgdGhlIGxhc3QgY29ubmVjdGlvbiB1c2luZyBpdCBkaXNjYXJkZWQsIGluIGNhc2UgYSBuZXcKKyAgICAgY29ubmVjdGlvbiBpcyBtYWRlIHRoYXQgY291bGQgdXNlIGl0LgorCisgKCopIEEgY2xpZW50LXNpZGUgY29ubmVjdGlvbiBpcyBvbmx5IHNoYXJlZCBiZXR3ZWVuIGNhbGxzIGlmIHRoZXkgaGF2ZSBoYXZlCisgICAgIHRoZSBzYW1lIGtleSBzdHJ1Y3QgZGVzY3JpYmluZyB0aGVpciBzZWN1cml0eSAoYW5kIGFzc3VtaW5nIHRoZSBjYWxscworICAgICB3b3VsZCBvdGhlcndpc2Ugc2hhcmUgdGhlIGNvbm5lY3Rpb24pLiAgTm9uLXNlY3VyZWQgY2FsbHMgd291bGQgYWxzbyBiZQorICAgICBhYmxlIHRvIHNoYXJlIGNvbm5lY3Rpb25zIHdpdGggZWFjaCBvdGhlci4KKworICgqKSBBIHNlcnZlci1zaWRlIGNvbm5lY3Rpb24gaXMgc2hhcmVkIGlmIHRoZSBjbGllbnQgc2F5cyBpdCBpcy4KKworICgqKSBBQ0snaW5nIGlzIGhhbmRsZWQgYnkgdGhlIHByb3RvY29sIGRyaXZlciBhdXRvbWF0aWNhbGx5LCBpbmNsdWRpbmcgcGluZworICAgICByZXBseWluZy4KKworICgqKSBTT19LRUVQQUxJVkUgYXV0b21hdGljYWxseSBwaW5ncyB0aGUgb3RoZXIgc2lkZSB0byBrZWVwIHRoZSBjb25uZWN0aW9uCisgICAgIGFsaXZlIFtUT0RPXS4KKworICgqKSBJZiBhbiBJQ01QIGVycm9yIGlzIHJlY2VpdmVkLCBhbGwgY2FsbHMgYWZmZWN0ZWQgYnkgdGhhdCBlcnJvciB3aWxsIGJlCisgICAgIGFib3J0ZWQgd2l0aCBhbiBhcHByb3ByaWF0ZSBuZXR3b3JrIGVycm9yIHBhc3NlZCB0aHJvdWdoIHJlY3Ztc2coKS4KKworCitJbnRlcmFjdGlvbiB3aXRoIHRoZSB1c2VyIG9mIHRoZSBSeFJQQyBzb2NrZXQ6CisKKyAoKikgQSBzb2NrZXQgaXMgbWFkZSBpbnRvIGEgc2VydmVyIHNvY2tldCBieSBiaW5kaW5nIGFuIGFkZHJlc3Mgd2l0aCBhCisgICAgIG5vbi16ZXJvIHNlcnZpY2UgSUQuCisKKyAoKikgSW4gdGhlIGNsaWVudCwgc2VuZGluZyBhIHJlcXVlc3QgaXMgYWNoaWV2ZWQgd2l0aCBvbmUgb3IgbW9yZSBzZW5kbXNncywKKyAgICAgZm9sbG93ZWQgYnkgdGhlIHJlcGx5IGJlaW5nIHJlY2VpdmVkIHdpdGggb25lIG9yIG1vcmUgcmVjdm1zZ3MuCisKKyAoKikgVGhlIGZpcnN0IHNlbmRtc2cgZm9yIGEgcmVxdWVzdCB0byBiZSBzZW50IGZyb20gYSBjbGllbnQgY29udGFpbnMgYSB0YWcgdG8KKyAgICAgYmUgdXNlZCBpbiBhbGwgb3RoZXIgc2VuZG1zZ3Mgb3IgcmVjdm1zZ3MgYXNzb2NpYXRlZCB3aXRoIHRoYXQgY2FsbC4gIFRoZQorICAgICB0YWcgaXMgY2FycmllZCBpbiB0aGUgY29udHJvbCBkYXRhLgorCisgKCopIGNvbm5lY3QoKSBpcyB1c2VkIHRvIHN1cHBseSBhIGRlZmF1bHQgZGVzdGluYXRpb24gYWRkcmVzcyBmb3IgYSBjbGllbnQKKyAgICAgc29ja2V0LiAgVGhpcyBtYXkgYmUgb3ZlcnJpZGRlbiBieSBzdXBwbHlpbmcgYW4gYWx0ZXJuYXRlIGFkZHJlc3MgdG8gdGhlCisgICAgIGZpcnN0IHNlbmRtc2coKSBvZiBhIGNhbGwgKHN0cnVjdCBtc2doZHI6Om1zZ19uYW1lKS4KKworICgqKSBJZiBjb25uZWN0KCkgaXMgY2FsbGVkIG9uIGFuIHVuYm91bmQgY2xpZW50LCBhIHJhbmRvbSBsb2NhbCBwb3J0IHdpbGwKKyAgICAgYm91bmQgYmVmb3JlIHRoZSBvcGVyYXRpb24gdGFrZXMgcGxhY2UuCisKKyAoKikgQSBzZXJ2ZXIgc29ja2V0IG1heSBhbHNvIGJlIHVzZWQgdG8gbWFrZSBjbGllbnQgY2FsbHMuICBUbyBkbyB0aGlzLCB0aGUKKyAgICAgZmlyc3Qgc2VuZG1zZygpIG9mIHRoZSBjYWxsIG11c3Qgc3BlY2lmeSB0aGUgdGFyZ2V0IGFkZHJlc3MuICBUaGUgc2VydmVyJ3MKKyAgICAgdHJhbnNwb3J0IGVuZHBvaW50IGlzIHVzZWQgdG8gc2VuZCB0aGUgcGFja2V0cy4KKworICgqKSBPbmNlIHRoZSBhcHBsaWNhdGlvbiBoYXMgcmVjZWl2ZWQgdGhlIGxhc3QgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGggYSBjYWxsLAorICAgICB0aGUgdGFnIGlzIGd1YXJhbnRlZWQgbm90IHRvIGJlIHNlZW4gYWdhaW4sIGFuZCBzbyBpdCBjYW4gYmUgdXNlZCB0byBwaW4KKyAgICAgY2xpZW50IHJlc291cmNlcy4gIEEgbmV3IGNhbGwgY2FuIHRoZW4gYmUgaW5pdGlhdGVkIHdpdGggdGhlIHNhbWUgdGFnCisgICAgIHdpdGhvdXQgZmVhciBvZiBpbnRlcmZlcmVuY2UuCisKKyAoKikgSW4gdGhlIHNlcnZlciwgYSByZXF1ZXN0IGlzIHJlY2VpdmVkIHdpdGggb25lIG9yIG1vcmUgcmVjdm1zZ3MsIHRoZW4gdGhlCisgICAgIHRoZSByZXBseSBpcyB0cmFuc21pdHRlZCB3aXRoIG9uZSBvciBtb3JlIHNlbmRtc2dzLCBhbmQgdGhlbiB0aGUgZmluYWwgQUNLCisgICAgIGlzIHJlY2VpdmVkIHdpdGggYSBsYXN0IHJlY3Ztc2cuCisKKyAoKikgV2hlbiBzZW5kaW5nIGRhdGEgZm9yIGEgY2FsbCwgc2VuZG1zZyBpcyBnaXZlbiBNU0dfTU9SRSBpZiB0aGVyZSdzIG1vcmUKKyAgICAgZGF0YSB0byBjb21lIG9uIHRoYXQgY2FsbC4KKworICgqKSBXaGVuIHJlY2VpdmluZyBkYXRhIGZvciBhIGNhbGwsIHJlY3Ztc2cgZmxhZ3MgTVNHX01PUkUgaWYgdGhlcmUncyBtb3JlCisgICAgIGRhdGEgdG8gY29tZSBmb3IgdGhhdCBjYWxsLgorCisgKCopIFdoZW4gcmVjZWl2aW5nIGRhdGEgb3IgbWVzc2FnZXMgZm9yIGEgY2FsbCwgTVNHX0VPUiBpcyBmbGFnZ2VkIGJ5IHJlY3Ztc2cKKyAgICAgdG8gaW5kaWNhdGUgdGhlIHRlcm1pbmFsIG1lc3NhZ2UgZm9yIHRoYXQgY2FsbC4KKworICgqKSBBIGNhbGwgbWF5IGJlIGFib3J0ZWQgYnkgYWRkaW5nIGFuIGFib3J0IGNvbnRyb2wgbWVzc2FnZSB0byB0aGUgY29udHJvbAorICAgICBkYXRhLiAgSXNzdWluZyBhbiBhYm9ydCB0ZXJtaW5hdGVzIHRoZSBrZXJuZWwncyB1c2Ugb2YgdGhhdCBjYWxsJ3MgdGFnLgorICAgICBBbnkgbWVzc2FnZXMgd2FpdGluZyBpbiB0aGUgcmVjZWl2ZSBxdWV1ZSBmb3IgdGhhdCBjYWxsIHdpbGwgYmUgZGlzY2FyZGVkLgorCisgKCopIEFib3J0cywgYnVzeSBub3RpZmljYXRpb25zIGFuZCBjaGFsbGVuZ2UgcGFja2V0cyBhcmUgZGVsaXZlcmVkIGJ5IHJlY3Ztc2csCisgICAgIGFuZCBjb250cm9sIGRhdGEgbWVzc2FnZXMgd2lsbCBiZSBzZXQgdG8gaW5kaWNhdGUgdGhlIGNvbnRleHQuICBSZWNlaXZpbmcKKyAgICAgYW4gYWJvcnQgb3IgYSBidXN5IG1lc3NhZ2UgdGVybWluYXRlcyB0aGUga2VybmVsJ3MgdXNlIG9mIHRoYXQgY2FsbCdzIHRhZy4KKworICgqKSBUaGUgY29udHJvbCBkYXRhIHBhcnQgb2YgdGhlIG1zZ2hkciBzdHJ1Y3QgaXMgdXNlZCBmb3IgYSBudW1iZXIgb2YgdGhpbmdzOgorCisgICAgICgqKSBUaGUgdGFnIG9mIHRoZSBpbnRlbmRlZCBvciBhZmZlY3RlZCBjYWxsLgorCisgICAgICgqKSBTZW5kaW5nIG9yIHJlY2VpdmluZyBlcnJvcnMsIGFib3J0cyBhbmQgYnVzeSBub3RpZmljYXRpb25zLgorCisgICAgICgqKSBOb3RpZmljYXRpb25zIG9mIGluY29taW5nIGNhbGxzLgorCisgICAgICgqKSBTZW5kaW5nIGRlYnVnIHJlcXVlc3RzIGFuZCByZWNlaXZpbmcgZGVidWcgcmVwbGllcyBbVE9ET10uCisKKyAoKikgV2hlbiB0aGUga2VybmVsIGhhcyByZWNlaXZlZCBhbmQgc2V0IHVwIGFuIGluY29taW5nIGNhbGwsIGl0IHNlbmRzIGEKKyAgICAgbWVzc2FnZSB0byBzZXJ2ZXIgYXBwbGljYXRpb24gdG8gbGV0IGl0IGtub3cgdGhlcmUncyBhIG5ldyBjYWxsIGF3YWl0aW5nCisgICAgIGl0cyBhY2NlcHRhbmNlIFtyZWN2bXNnIHJlcG9ydHMgYSBzcGVjaWFsIGNvbnRyb2wgbWVzc2FnZV0uICBUaGUgc2VydmVyCisgICAgIGFwcGxpY2F0aW9uIHRoZW4gdXNlcyBzZW5kbXNnIHRvIGFzc2lnbiBhIHRhZyB0byB0aGUgbmV3IGNhbGwuICBPbmNlIHRoYXQKKyAgICAgaXMgZG9uZSwgdGhlIGZpcnN0IHBhcnQgb2YgdGhlIHJlcXVlc3QgZGF0YSB3aWxsIGJlIGRlbGl2ZXJlZCBieSByZWN2bXNnLgorCisgKCopIFRoZSBzZXJ2ZXIgYXBwbGljYXRpb24gaGFzIHRvIHByb3ZpZGUgdGhlIHNlcnZlciBzb2NrZXQgd2l0aCBhIGtleXJpbmcgb2YKKyAgICAgc2VjcmV0IGtleXMgY29ycmVzcG9uZGluZyB0byB0aGUgc2VjdXJpdHkgdHlwZXMgaXQgcGVybWl0cy4gIFdoZW4gYSBzZWN1cmUKKyAgICAgY29ubmVjdGlvbiBpcyBiZWluZyBzZXQgdXAsIHRoZSBrZXJuZWwgbG9va3MgdXAgdGhlIGFwcHJvcHJpYXRlIHNlY3JldCBrZXkKKyAgICAgaW4gdGhlIGtleXJpbmcgYW5kIHRoZW4gc2VuZHMgYSBjaGFsbGVuZ2UgcGFja2V0IHRvIHRoZSBjbGllbnQgYW5kCisgICAgIHJlY2VpdmVzIGEgcmVzcG9uc2UgcGFja2V0LiAgVGhlIGtlcm5lbCB0aGVuIGNoZWNrcyB0aGUgYXV0aG9yaXNhdGlvbiBvZgorICAgICB0aGUgcGFja2V0IGFuZCBlaXRoZXIgYWJvcnRzIHRoZSBjb25uZWN0aW9uIG9yIHNldHMgdXAgdGhlIHNlY3VyaXR5LgorCisgKCopIFRoZSBuYW1lIG9mIHRoZSBrZXkgYSBjbGllbnQgd2lsbCB1c2UgdG8gc2VjdXJlIGl0cyBjb21tdW5pY2F0aW9ucyBpcworICAgICBub21pbmF0ZWQgYnkgYSBzb2NrZXQgb3B0aW9uLgorCisKK05vdGVzIG9uIHJlY3Ztc2c6CisKKyAoKikgSWYgdGhlcmUncyBhIHNlcXVlbmNlIG9mIGRhdGEgbWVzc2FnZXMgYmVsb25naW5nIHRvIGEgcGFydGljdWxhciBjYWxsIG9uCisgICAgIHRoZSByZWNlaXZlIHF1ZXVlLCB0aGVuIHJlY3Ztc2cgd2lsbCBrZWVwIHdvcmtpbmcgdGhyb3VnaCB0aGVtIHVudGlsOgorCisgICAgIChhKSBpdCBtZWV0cyB0aGUgZW5kIG9mIHRoYXQgY2FsbCdzIHJlY2VpdmVkIGRhdGEsCisKKyAgICAgKGIpIGl0IG1lZXRzIGEgbm9uLWRhdGEgbWVzc2FnZSwKKworICAgICAoYykgaXQgbWVldHMgYSBtZXNzYWdlIGJlbG9uZ2luZyB0byBhIGRpZmZlcmVudCBjYWxsLCBvcgorCisgICAgIChkKSBpdCBmaWxscyB0aGUgdXNlciBidWZmZXIuCisKKyAgICAgSWYgcmVjdm1zZyBpcyBjYWxsZWQgaW4gYmxvY2tpbmcgbW9kZSwgaXQgd2lsbCBrZWVwIHNsZWVwaW5nLCBhd2FpdGluZyB0aGUKKyAgICAgcmVjZXB0aW9uIG9mIGZ1cnRoZXIgZGF0YSwgdW50aWwgb25lIG9mIHRoZSBhYm92ZSBmb3VyIGNvbmRpdGlvbnMgaXMgbWV0LgorCisgKDIpIE1TR19QRUVLIG9wZXJhdGVzIHNpbWlsYXJseSwgYnV0IHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5IGlmIGl0IGhhcyBwdXQgYW55CisgICAgIGRhdGEgaW4gdGhlIGJ1ZmZlciByYXRoZXIgdGhhbiBzbGVlcGluZyB1bnRpbCBpdCBjYW4gZmlsbCB0aGUgYnVmZmVyLgorCisgKDMpIElmIGEgZGF0YSBtZXNzYWdlIGlzIG9ubHkgcGFydGlhbGx5IGNvbnN1bWVkIGluIGZpbGxpbmcgYSB1c2VyIGJ1ZmZlciwKKyAgICAgdGhlbiB0aGUgcmVtYWluZGVyIG9mIHRoYXQgbWVzc2FnZSB3aWxsIGJlIGxlZnQgb24gdGhlIGZyb250IG9mIHRoZSBxdWV1ZQorICAgICBmb3IgdGhlIG5leHQgdGFrZXIuICBNU0dfVFJVTkMgd2lsbCBuZXZlciBiZSBmbGFnZ2VkLgorCisgKDQpIElmIHRoZXJlIGlzIG1vcmUgZGF0YSB0byBiZSBoYWQgb24gYSBjYWxsIChpdCBoYXNuJ3QgY29waWVkIHRoZSBsYXN0IGJ5dGUKKyAgICAgb2YgdGhlIGxhc3QgZGF0YSBtZXNzYWdlIGluIHRoYXQgcGhhc2UgeWV0KSwgdGhlbiBNU0dfTU9SRSB3aWxsIGJlCisgICAgIGZsYWdnZWQuCisKKworPT09PT09PT09PT09PT09PQorQ09OVFJPTCBNRVNTQUdFUworPT09PT09PT09PT09PT09PQorCitBRl9SWFJQQyBtYWtlcyB1c2Ugb2YgY29udHJvbCBtZXNzYWdlcyBpbiBzZW5kbXNnKCkgYW5kIHJlY3Ztc2coKSB0byBtdWx0aXBsZXgKK2NhbGxzLCB0byBpbnZva2UgY2VydGFpbiBhY3Rpb25zIGFuZCB0byByZXBvcnQgY2VydGFpbiBjb25kaXRpb25zLiAgVGhlc2UgYXJlOgorCisJTUVTU0FHRSBJRAkJU1JUIERBVEEJTUVBTklORworCT09PT09PT09PT09PT09PT09PT09PT09CT09PSA9PT09PT09PT09PQk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJUlhSUENfVVNFUl9DQUxMX0lECXNyLSBVc2VyIElECUFwcCdzIGNhbGwgc3BlY2lmaWVyCisJUlhSUENfQUJPUlQJCXNydCBBYm9ydCBjb2RlCUFib3J0IGNvZGUgdG8gaXNzdWUvcmVjZWl2ZWQKKwlSWFJQQ19BQ0sJCS1ydCBuL2EJCUZpbmFsIEFDSyByZWNlaXZlZAorCVJYUlBDX05FVF9FUlJPUgkJLXJ0IGVycm9yIG51bQlOZXR3b3JrIGVycm9yIG9uIGNhbGwKKwlSWFJQQ19CVVNZCQktcnQgbi9hCQlDYWxsIHJlamVjdGVkIChzZXJ2ZXIgYnVzeSkKKwlSWFJQQ19MT0NBTF9FUlJPUgktcnQgZXJyb3IgbnVtCUxvY2FsIGVycm9yIGVuY291bnRlcmVkCisJUlhSUENfTkVXX0NBTEwJCS1yLSBuL2EJCU5ldyBjYWxsIHJlY2VpdmVkCisJUlhSUENfQUNDRVBUCQlzLS0gbi9hCQlBY2NlcHQgbmV3IGNhbGwKKworCShTUlQgPSB1c2FibGUgaW4gU2VuZG1zZyAvIGRlbGl2ZXJlZCBieSBSZWN2bXNnIC8gVGVybWluYWwgbWVzc2FnZSkKKworICgqKSBSWFJQQ19VU0VSX0NBTExfSUQKKworICAgICBUaGlzIGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhlIGFwcGxpY2F0aW9uJ3MgY2FsbCBJRC4gIEl0J3MgYW4gdW5zaWduZWQgbG9uZworICAgICB0aGF0IHRoZSBhcHAgc3BlY2lmaWVzIGluIHRoZSBjbGllbnQgYnkgYXR0YWNoaW5nIGl0IHRvIHRoZSBmaXJzdCBkYXRhCisgICAgIG1lc3NhZ2Ugb3IgaW4gdGhlIHNlcnZlciBieSBwYXNzaW5nIGl0IGluIGFzc29jaWF0aW9uIHdpdGggYW4gUlhSUENfQUNDRVBUCisgICAgIG1lc3NhZ2UuICByZWN2bXNnKCkgcGFzc2VzIGl0IGluIGNvbmp1bmN0aW9uIHdpdGggYWxsIG1lc3NhZ2VzIGV4Y2VwdAorICAgICB0aG9zZSBvZiB0aGUgUlhSUENfTkVXX0NBTEwgbWVzc2FnZS4KKworICgqKSBSWFJQQ19BQk9SVAorCisgICAgIFRoaXMgaXMgY2FuIGJlIHVzZWQgYnkgYW4gYXBwbGljYXRpb24gdG8gYWJvcnQgYSBjYWxsIGJ5IHBhc3NpbmcgaXQgdG8KKyAgICAgc2VuZG1zZywgb3IgaXQgY2FuIGJlIGRlbGl2ZXJlZCBieSByZWN2bXNnIHRvIGluZGljYXRlIGEgcmVtb3RlIGFib3J0IHdhcworICAgICByZWNlaXZlZC4gIEVpdGhlciB3YXksIGl0IG11c3QgYmUgYXNzb2NpYXRlZCB3aXRoIGFuIFJYUlBDX1VTRVJfQ0FMTF9JRCB0bworICAgICBzcGVjaWZ5IHRoZSBjYWxsIGFmZmVjdGVkLiAgSWYgYW4gYWJvcnQgaXMgYmVpbmcgc2VudCwgdGhlbiBlcnJvciBFQkFEU0xUCisgICAgIHdpbGwgYmUgcmV0dXJuZWQgaWYgdGhlcmUgaXMgbm8gY2FsbCB3aXRoIHRoYXQgdXNlciBJRC4KKworICgqKSBSWFJQQ19BQ0sKKworICAgICBUaGlzIGlzIGRlbGl2ZXJlZCB0byBhIHNlcnZlciBhcHBsaWNhdGlvbiB0byBpbmRpY2F0ZSB0aGF0IHRoZSBmaW5hbCBBQ0sKKyAgICAgb2YgYSBjYWxsIHdhcyByZWNlaXZlZCBmcm9tIHRoZSBjbGllbnQuICBJdCB3aWxsIGJlIGFzc29jaWF0ZWQgd2l0aCBhbgorICAgICBSWFJQQ19VU0VSX0NBTExfSUQgdG8gaW5kaWNhdGUgdGhlIGNhbGwgdGhhdCdzIG5vdyBjb21wbGV0ZS4KKworICgqKSBSWFJQQ19ORVRfRVJST1IKKworICAgICBUaGlzIGlzIGRlbGl2ZXJlZCB0byBhbiBhcHBsaWNhdGlvbiB0byBpbmRpY2F0ZSB0aGF0IGFuIElDTVAgZXJyb3IgbWVzc2FnZQorICAgICB3YXMgZW5jb3VudGVyZWQgaW4gdGhlIHByb2Nlc3Mgb2YgdHJ5aW5nIHRvIHRhbGsgdG8gdGhlIHBlZXIuICBBbgorICAgICBlcnJuby1jbGFzcyBpbnRlZ2VyIHZhbHVlIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGNvbnRyb2wgbWVzc2FnZSBkYXRhCisgICAgIGluZGljYXRpbmcgdGhlIHByb2JsZW0sIGFuZCBhbiBSWFJQQ19VU0VSX0NBTExfSUQgd2lsbCBpbmRpY2F0ZSB0aGUgY2FsbAorICAgICBhZmZlY3RlZC4KKworICgqKSBSWFJQQ19CVVNZCisKKyAgICAgVGhpcyBpcyBkZWxpdmVyZWQgdG8gYSBjbGllbnQgYXBwbGljYXRpb24gdG8gaW5kaWNhdGUgdGhhdCBhIGNhbGwgd2FzCisgICAgIHJlamVjdGVkIGJ5IHRoZSBzZXJ2ZXIgZHVlIHRvIHRoZSBzZXJ2ZXIgYmVpbmcgYnVzeS4gIEl0IHdpbGwgYmUKKyAgICAgYXNzb2NpYXRlZCB3aXRoIGFuIFJYUlBDX1VTRVJfQ0FMTF9JRCB0byBpbmRpY2F0ZSB0aGUgcmVqZWN0ZWQgY2FsbC4KKworICgqKSBSWFJQQ19MT0NBTF9FUlJPUgorCisgICAgIFRoaXMgaXMgZGVsaXZlcmVkIHRvIGFuIGFwcGxpY2F0aW9uIHRvIGluZGljYXRlIHRoYXQgYSBsb2NhbCBlcnJvciB3YXMKKyAgICAgZW5jb3VudGVyZWQgYW5kIHRoYXQgYSBjYWxsIGhhcyBiZWVuIGFib3J0ZWQgYmVjYXVzZSBvZiBpdC4gIEFuCisgICAgIGVycm5vLWNsYXNzIGludGVnZXIgdmFsdWUgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgY29udHJvbCBtZXNzYWdlIGRhdGEKKyAgICAgaW5kaWNhdGluZyB0aGUgcHJvYmxlbSwgYW5kIGFuIFJYUlBDX1VTRVJfQ0FMTF9JRCB3aWxsIGluZGljYXRlIHRoZSBjYWxsCisgICAgIGFmZmVjdGVkLgorCisgKCopIFJYUlBDX05FV19DQUxMCisKKyAgICAgVGhpcyBpcyBkZWxpdmVyZWQgdG8gaW5kaWNhdGUgdG8gYSBzZXJ2ZXIgYXBwbGljYXRpb24gdGhhdCBhIG5ldyBjYWxsIGhhcworICAgICBhcnJpdmVkIGFuZCBpcyBhd2FpdGluZyBhY2NlcHRhbmNlLiAgTm8gdXNlciBJRCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcywKKyAgICAgYXMgYSB1c2VyIElEIG11c3Qgc3Vic2VxdWVudGx5IGJlIGFzc2lnbmVkIGJ5IGRvaW5nIGFuIFJYUlBDX0FDQ0VQVC4KKworICgqKSBSWFJQQ19BQ0NFUFQKKworICAgICBUaGlzIGlzIHVzZWQgYnkgYSBzZXJ2ZXIgYXBwbGljYXRpb24gdG8gYXR0ZW1wdCB0byBhY2NlcHQgYSBjYWxsIGFuZAorICAgICBhc3NpZ24gaXQgYSB1c2VyIElELiAgSXQgc2hvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aCBhbiBSWFJQQ19VU0VSX0NBTExfSUQKKyAgICAgdG8gaW5kaWNhdGUgdGhlIHVzZXIgSUQgdG8gYmUgYXNzaWduZWQuICBJZiB0aGVyZSBpcyBubyBjYWxsIHRvIGJlCisgICAgIGFjY2VwdGVkIChpdCBtYXkgaGF2ZSB0aW1lZCBvdXQsIGJlZW4gYWJvcnRlZCwgZXRjLiksIHRoZW4gc2VuZG1zZyB3aWxsCisgICAgIHJldHVybiBlcnJvciBFTk9EQVRBLiAgSWYgdGhlIHVzZXIgSUQgaXMgYWxyZWFkeSBpbiB1c2UgYnkgYW5vdGhlciBjYWxsLAorICAgICB0aGVuIGVycm9yIEVCQURTTFQgd2lsbCBiZSByZXR1cm5lZC4KKworCis9PT09PT09PT09PT09PQorU09DS0VUIE9QVElPTlMKKz09PT09PT09PT09PT09CisKK0FGX1JYUlBDIHNvY2tldHMgc3VwcG9ydCBhIGZldyBzb2NrZXQgb3B0aW9ucyBhdCB0aGUgU09MX1JYUlBDIGxldmVsOgorCisgKCopIFJYUlBDX1NFQ1VSSVRZX0tFWQorCisgICAgIFRoaXMgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUga2V5IHRvIGJlIHVzZWQuICBUaGUga2V5IGlzCisgICAgIGV4dHJhY3RlZCBmcm9tIHRoZSBjYWxsaW5nIHByb2Nlc3MncyBrZXlyaW5ncyB3aXRoIHJlcXVlc3Rfa2V5KCkgYW5kCisgICAgIHNob3VsZCBiZSBvZiAicnhycGMiIHR5cGUuCisKKyAgICAgVGhlIG9wdHZhbCBwb2ludGVyIHBvaW50cyB0byB0aGUgZGVzY3JpcHRpb24gc3RyaW5nLCBhbmQgb3B0bGVuIGluZGljYXRlcworICAgICBob3cgbG9uZyB0aGUgc3RyaW5nIGlzLCB3aXRob3V0IHRoZSBOVUwgdGVybWluYXRvci4KKworICgqKSBSWFJQQ19TRUNVUklUWV9LRVlSSU5HCisKKyAgICAgU2ltaWxhciB0byBhYm92ZSBidXQgc3BlY2lmaWVzIGEga2V5cmluZyBvZiBzZXJ2ZXIgc2VjcmV0IGtleXMgdG8gdXNlIChrZXkKKyAgICAgdHlwZSAia2V5cmluZyIpLiAgU2VlIHRoZSAiU2VjdXJpdHkiIHNlY3Rpb24uCisKKyAoKikgUlhSUENfRVhDTFVTSVZFX0NPTk5FQ1RJT04KKworICAgICBUaGlzIGlzIHVzZWQgdG8gcmVxdWVzdCB0aGF0IG5ldyBjb25uZWN0aW9ucyBzaG91bGQgYmUgdXNlZCBmb3IgZWFjaCBjYWxsCisgICAgIG1hZGUgc3Vic2VxdWVudGx5IG9uIHRoaXMgc29ja2V0LiAgb3B0dmFsIHNob3VsZCBiZSBOVUxMIGFuZCBvcHRsZW4gMC4KKworICgqKSBSWFJQQ19NSU5fU0VDVVJJVFlfTEVWRUwKKworICAgICBUaGlzIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgbWluaW11bSBzZWN1cml0eSBsZXZlbCByZXF1aXJlZCBmb3IgY2FsbHMgb24KKyAgICAgdGhpcyBzb2NrZXQuICBvcHR2YWwgbXVzdCBwb2ludCB0byBhbiBpbnQgY29udGFpbmluZyBvbmUgb2YgdGhlIGZvbGxvd2luZworICAgICB2YWx1ZXM6CisKKyAgICAgKGEpIFJYUlBDX1NFQ1VSSVRZX1BMQUlOCisKKwkgRW5jcnlwdGVkIGNoZWNrc3VtIG9ubHkuCisKKyAgICAgKGIpIFJYUlBDX1NFQ1VSSVRZX0FVVEgKKworCSBFbmNyeXB0ZWQgY2hlY2tzdW0gcGx1cyBwYWNrZXQgcGFkZGVkIGFuZCBmaXJzdCBlaWdodCBieXRlcyBvZiBwYWNrZXQKKwkgZW5jcnlwdGVkIC0gd2hpY2ggaW5jbHVkZXMgdGhlIGFjdHVhbCBwYWNrZXQgbGVuZ3RoLgorCisgICAgIChjKSBSWFJQQ19TRUNVUklUWV9FTkNSWVBURUQKKworCSBFbmNyeXB0ZWQgY2hlY2tzdW0gcGx1cyBlbnRpcmUgcGFja2V0IHBhZGRlZCBhbmQgZW5jcnlwdGVkLCBpbmNsdWRpbmcKKwkgYWN0dWFsIHBhY2tldCBsZW5ndGguCisKKworPT09PT09PT0KK1NFQ1VSSVRZCis9PT09PT09PQorCitDdXJyZW50bHksIG9ubHkgdGhlIGtlcmJlcm9zIDQgZXF1aXZhbGVudCBwcm90b2NvbCBoYXMgYmVlbiBpbXBsZW1lbnRlZAorKHNlY3VyaXR5IGluZGV4IDIgLSByeGthZCkuICBUaGlzIHJlcXVpcmVzIHRoZSByeGthZCBtb2R1bGUgdG8gYmUgbG9hZGVkIGFuZCwKK29uIHRoZSBjbGllbnQsIHRpY2tldHMgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUgdG8gYmUgb2J0YWluZWQgZnJvbSB0aGUgQUZTCitrYXNlcnZlciBvciB0aGUga2VyYmVyb3Mgc2VydmVyIGFuZCBpbnN0YWxsZWQgYXMgInJ4cnBjIiB0eXBlIGtleXMuICBUaGlzIGlzCitub3JtYWxseSBkb25lIHVzaW5nIHRoZSBrbG9nIHByb2dyYW0uICBBbiBleGFtcGxlIHNpbXBsZSBrbG9nIHByb2dyYW0gY2FuIGJlCitmb3VuZCBhdDoKKworCWh0dHA6Ly9wZW9wbGUucmVkaGF0LmNvbS9+ZGhvd2VsbHMvcnhycGMva2xvZy5jCisKK1RoZSBwYXlsb2FkIHByb3ZpZGVkIHRvIGFkZF9rZXkoKSBvbiB0aGUgY2xpZW50IHNob3VsZCBiZSBvZiB0aGUgZm9sbG93aW5nCitmb3JtOgorCisJc3RydWN0IHJ4cnBjX2tleV9zZWMyX3YxIHsKKwkJdWludDE2X3QJc2VjdXJpdHlfaW5kZXg7CS8qIDIgKi8KKwkJdWludDE2X3QJdGlja2V0X2xlbmd0aDsJLyogbGVuZ3RoIG9mIHRpY2tldFtdICovCisJCXVpbnQzMl90CWV4cGlyeTsJCS8qIHRpbWUgYXQgd2hpY2ggZXhwaXJlcyAqLworCQl1aW50OF90CQlrdm5vOwkJLyoga2V5IHZlcnNpb24gbnVtYmVyICovCisJCXVpbnQ4X3QJCV9fcGFkWzNdOworCQl1aW50OF90CQlzZXNzaW9uX2tleVs4XTsJLyogREVTIHNlc3Npb24ga2V5ICovCisJCXVpbnQ4X3QJCXRpY2tldFswXTsJLyogdGhlIGVuY3J5cHRlZCB0aWNrZXQgKi8KKwl9OworCitXaGVyZSB0aGUgdGlja2V0IGJsb2IgaXMganVzdCBhcHBlbmRlZCB0byB0aGUgYWJvdmUgc3RydWN0dXJlLgorCisKK0ZvciB0aGUgc2VydmVyLCBrZXlzIG9mIHR5cGUgInJ4cnBjX3MiIG11c3QgYmUgbWFkZSBhdmFpbGFibGUgdG8gdGhlIHNlcnZlci4KK1RoZXkgaGF2ZSBhIGRlc2NyaXB0aW9uIG9mICI8c2VydmljZUlEPjo8c2VjdXJpdHlJbmRleD4iIChlZzogIjUyOjIiIGZvciBhbgorcnhrYWQga2V5IGZvciB0aGUgQUZTIFZMIHNlcnZpY2UpLiAgV2hlbiBzdWNoIGEga2V5IGlzIGNyZWF0ZWQsIGl0IHNob3VsZCBiZQorZ2l2ZW4gdGhlIHNlcnZlcidzIHNlY3JldCBrZXkgYXMgdGhlIGluc3RhbnRpYXRpb24gZGF0YSAoc2VlIHRoZSBleGFtcGxlCitiZWxvdykuCisKKwlhZGRfa2V5KCJyeHJwY19zIiwgIjUyOjIiLCBzZWNyZXRfa2V5LCA4LCBrZXlyaW5nKTsKKworQSBrZXlyaW5nIGlzIHBhc3NlZCB0byB0aGUgc2VydmVyIHNvY2tldCBieSBuYW1pbmcgaXQgaW4gYSBzb2Nrb3B0LiAgVGhlIHNlcnZlcgorc29ja2V0IHRoZW4gbG9va3MgdGhlIHNlcnZlciBzZWNyZXQga2V5cyB1cCBpbiB0aGlzIGtleXJpbmcgd2hlbiBzZWN1cmUKK2luY29taW5nIGNvbm5lY3Rpb25zIGFyZSBtYWRlLiAgVGhpcyBjYW4gYmUgc2VlbiBpbiBhbiBleGFtcGxlIHByb2dyYW0gdGhhdCBjYW4KK2JlIGZvdW5kIGF0OgorCisJaHR0cDovL3Blb3BsZS5yZWRoYXQuY29tL35kaG93ZWxscy9yeHJwYy9saXN0ZW4uYworCisKKz09PT09PT09PT09PT09PT09PT09CitFWEFNUExFIENMSUVOVCBVU0FHRQorPT09PT09PT09PT09PT09PT09PT0KKworQSBjbGllbnQgd291bGQgaXNzdWUgYW4gb3BlcmF0aW9uIGJ5OgorCisgKDEpIEFuIFJ4UlBDIHNvY2tldCBpcyBzZXQgdXAgYnk6CisKKwljbGllbnQgPSBzb2NrZXQoQUZfUlhSUEMsIFNPQ0tfREdSQU0sIFBGX0lORVQpOworCisgICAgIFdoZXJlIHRoZSB0aGlyZCBwYXJhbWV0ZXIgaW5kaWNhdGVzIHRoZSBwcm90b2NvbCBmYW1pbHkgb2YgdGhlIHRyYW5zcG9ydAorICAgICBzb2NrZXQgdXNlZCAtIHVzdWFsbHkgSVB2NCBidXQgaXQgY2FuIGFsc28gYmUgSVB2NiBbVE9ET10uCisKKyAoMikgQSBsb2NhbCBhZGRyZXNzIGNhbiBvcHRpb25hbGx5IGJlIGJvdW5kOgorCisJc3RydWN0IHNvY2thZGRyX3J4cnBjIHNyeCA9IHsKKwkJLnNyeF9mYW1pbHkJPSBBRl9SWFJQQywKKwkJLnNyeF9zZXJ2aWNlCT0gMCwgIC8qIHdlJ3JlIGEgY2xpZW50ICovCisJCS50cmFuc3BvcnRfdHlwZQk9IFNPQ0tfREdSQU0sCS8qIHR5cGUgb2YgdHJhbnNwb3J0IHNvY2tldCAqLworCQkudHJhbnNwb3J0LnNpbl9mYW1pbHkJPSBBRl9JTkVULAorCQkudHJhbnNwb3J0LnNpbl9wb3J0CT0gaHRvbnMoNzAwMCksIC8qIEFGUyBjYWxsYmFjayAqLworCQkudHJhbnNwb3J0LnNpbl9hZGRyZXNzCT0gMCwgIC8qIGFsbCBsb2NhbCBpbnRlcmZhY2VzICovCisJfTsKKwliaW5kKGNsaWVudCwgJnNyeCwgc2l6ZW9mKHNyeCkpOworCisgICAgIFRoaXMgc3BlY2lmaWVzIHRoZSBsb2NhbCBVRFAgcG9ydCB0byBiZSB1c2VkLiAgSWYgbm90IGdpdmVuLCBhIHJhbmRvbQorICAgICBub24tcHJpdmlsZWdlZCBwb3J0IHdpbGwgYmUgdXNlZC4gIEEgVURQIHBvcnQgbWF5IGJlIHNoYXJlZCBiZXR3ZWVuCisgICAgIHNldmVyYWwgdW5yZWxhdGVkIFJ4UlBDIHNvY2tldHMuICBTZWN1cml0eSBpcyBoYW5kbGVkIG9uIGEgYmFzaXMgb2YKKyAgICAgcGVyLVJ4UlBDIHZpcnR1YWwgY29ubmVjdGlvbi4KKworICgzKSBUaGUgc2VjdXJpdHkgaXMgc2V0OgorCisJY29uc3QgY2hhciAqa2V5ID0gIkFGUzpjYW1icmlkZ2UucmVkaGF0LmNvbSI7CisJc2V0c29ja29wdChjbGllbnQsIFNPTF9SWFJQQywgUlhSUENfU0VDVVJJVFlfS0VZLCBrZXksIHN0cmxlbihrZXkpKTsKKworICAgICBUaGlzIGlzc3VlcyBhIHJlcXVlc3Rfa2V5KCkgdG8gZ2V0IHRoZSBrZXkgcmVwcmVzZW50aW5nIHRoZSBzZWN1cml0eQorICAgICBjb250ZXh0LiAgVGhlIG1pbmltdW0gc2VjdXJpdHkgbGV2ZWwgY2FuIGJlIHNldDoKKworCXVuc2lnbmVkIGludCBzZWMgPSBSWFJQQ19TRUNVUklUWV9FTkNSWVBURUQ7CisJc2V0c29ja29wdChjbGllbnQsIFNPTF9SWFJQQywgUlhSUENfTUlOX1NFQ1VSSVRZX0xFVkVMLAorCQkgICAmc2VjLCBzaXplb2Yoc2VjKSk7CisKKyAoNCkgVGhlIHNlcnZlciB0byBiZSBjb250YWN0ZWQgY2FuIHRoZW4gYmUgc3BlY2lmaWVkIChhbHRlcm5hdGl2ZWx5IHRoaXMgY2FuCisgICAgIGJlIGRvbmUgdGhyb3VnaCBzZW5kbXNnKToKKworCXN0cnVjdCBzb2NrYWRkcl9yeHJwYyBzcnggPSB7CisJCS5zcnhfZmFtaWx5CT0gQUZfUlhSUEMsCisJCS5zcnhfc2VydmljZQk9IFZMX1NFUlZJQ0VfSUQsCisJCS50cmFuc3BvcnRfdHlwZQk9IFNPQ0tfREdSQU0sCS8qIHR5cGUgb2YgdHJhbnNwb3J0IHNvY2tldCAqLworCQkudHJhbnNwb3J0LnNpbl9mYW1pbHkJPSBBRl9JTkVULAorCQkudHJhbnNwb3J0LnNpbl9wb3J0CT0gaHRvbnMoNzAwNSksIC8qIEFGUyB2b2x1bWUgbWFuYWdlciAqLworCQkudHJhbnNwb3J0LnNpbl9hZGRyZXNzCT0gLi4uLAorCX07CisJY29ubmVjdChjbGllbnQsICZzcngsIHNpemVvZihzcngpKTsKKworICg1KSBUaGUgcmVxdWVzdCBkYXRhIHNob3VsZCB0aGVuIGJlIHBvc3RlZCB0byB0aGUgc2VydmVyIHNvY2tldCB1c2luZyBhIHNlcmllcworICAgICBvZiBzZW5kbXNnKCkgY2FsbHMsIGVhY2ggd2l0aCB0aGUgZm9sbG93aW5nIGNvbnRyb2wgbWVzc2FnZSBhdHRhY2hlZDoKKworCVJYUlBDX1VTRVJfQ0FMTF9JRAktIHNwZWNpZmllcyB0aGUgdXNlciBJRCBmb3IgdGhpcyBjYWxsCisKKyAgICAgTVNHX01PUkUgc2hvdWxkIGJlIHNldCBpbiBtc2doZHI6Om1zZ19mbGFncyBvbiBhbGwgYnV0IHRoZSBsYXN0IHBhcnQgb2YKKyAgICAgdGhlIHJlcXVlc3QuICBNdWx0aXBsZSByZXF1ZXN0cyBtYXkgYmUgbWFkZSBzaW11bHRhbmVvdXNseS4KKworICAgICBJZiBhIGNhbGwgaXMgaW50ZW5kZWQgdG8gZ28gdG8gYSBkZXN0aW5hdGlvbiBvdGhlciB0aGFuIHRoZSBkZWZhdWx0CisgICAgIHNwZWNpZmllZCB0aHJvdWdoIGNvbm5lY3QoKSwgdGhlbiBtc2doZHI6Om1zZ19uYW1lIHNob3VsZCBiZSBzZXQgb24gdGhlCisgICAgIGZpcnN0IHJlcXVlc3QgbWVzc2FnZSBvZiB0aGF0IGNhbGwuCisKKyAoNikgVGhlIHJlcGx5IGRhdGEgd2lsbCB0aGVuIGJlIHBvc3RlZCB0byB0aGUgc2VydmVyIHNvY2tldCBmb3IgcmVjdm1zZygpIHRvCisgICAgIHBpY2sgdXAuICBNU0dfTU9SRSB3aWxsIGJlIGZsYWdnZWQgYnkgcmVjdm1zZygpIGlmIHRoZXJlJ3MgbW9yZSByZXBseSBkYXRhCisgICAgIGZvciBhIHBhcnRpY3VsYXIgY2FsbCB0byBiZSByZWFkLiAgTVNHX0VPUiB3aWxsIGJlIHNldCBvbiB0aGUgdGVybWluYWwKKyAgICAgcmVhZCBmb3IgYSBjYWxsLgorCisgICAgIEFsbCBkYXRhIHdpbGwgYmUgZGVsaXZlcmVkIHdpdGggdGhlIGZvbGxvd2luZyBjb250cm9sIG1lc3NhZ2UgYXR0YWNoZWQ6CisKKwlSWFJQQ19VU0VSX0NBTExfSUQJLSBzcGVjaWZpZXMgdGhlIHVzZXIgSUQgZm9yIHRoaXMgY2FsbAorCisgICAgIElmIGFuIGFib3J0IG9yIGVycm9yIG9jY3VycmVkLCB0aGlzIHdpbGwgYmUgcmV0dXJuZWQgaW4gdGhlIGNvbnRyb2wgZGF0YQorICAgICBidWZmZXIgaW5zdGVhZCwgYW5kIE1TR19FT1Igd2lsbCBiZSBmbGFnZ2VkIHRvIGluZGljYXRlIHRoZSBlbmQgb2YgdGhhdAorICAgICBjYWxsLgorCisKKz09PT09PT09PT09PT09PT09PT09CitFWEFNUExFIFNFUlZFUiBVU0FHRQorPT09PT09PT09PT09PT09PT09PT0KKworQSBzZXJ2ZXIgd291bGQgYmUgc2V0IHVwIHRvIGFjY2VwdCBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgbWFubmVyOgorCisgKDEpIEFuIFJ4UlBDIHNvY2tldCBpcyBjcmVhdGVkIGJ5OgorCisJc2VydmVyID0gc29ja2V0KEFGX1JYUlBDLCBTT0NLX0RHUkFNLCBQRl9JTkVUKTsKKworICAgICBXaGVyZSB0aGUgdGhpcmQgcGFyYW1ldGVyIGluZGljYXRlcyB0aGUgYWRkcmVzcyB0eXBlIG9mIHRoZSB0cmFuc3BvcnQKKyAgICAgc29ja2V0IHVzZWQgLSB1c3VhbGx5IElQdjQuCisKKyAoMikgU2VjdXJpdHkgaXMgc2V0IHVwIGlmIGRlc2lyZWQgYnkgZ2l2aW5nIHRoZSBzb2NrZXQgYSBrZXlyaW5nIHdpdGggc2VydmVyCisgICAgIHNlY3JldCBrZXlzIGluIGl0OgorCisJa2V5cmluZyA9IGFkZF9rZXkoImtleXJpbmciLCAiQUZTa2V5cyIsIE5VTEwsIDAsCisJCQkgIEtFWV9TUEVDX1BST0NFU1NfS0VZUklORyk7CisKKwljb25zdCBjaGFyIHNlY3JldF9rZXlbOF0gPSB7CisJCTB4YTcsIDB4ODMsIDB4OGEsIDB4Y2IsIDB4YzcsIDB4ODMsIDB4ZWMsIDB4OTQgfTsKKwlhZGRfa2V5KCJyeHJwY19zIiwgIjUyOjIiLCBzZWNyZXRfa2V5LCA4LCBrZXlyaW5nKTsKKworCXNldHNvY2tvcHQoc2VydmVyLCBTT0xfUlhSUEMsIFJYUlBDX1NFQ1VSSVRZX0tFWVJJTkcsICJBRlNrZXlzIiwgNyk7CisKKyAgICAgVGhlIGtleXJpbmcgY2FuIGJlIG1hbmlwdWxhdGVkIGFmdGVyIGl0IGhhcyBiZWVuIGdpdmVuIHRvIHRoZSBzb2NrZXQuIFRoaXMKKyAgICAgcGVybWl0cyB0aGUgc2VydmVyIHRvIGFkZCBtb3JlIGtleXMsIHJlcGxhY2Uga2V5cywgZXRjLiB3aGlsc3QgaXQgaXMgbGl2ZS4KKworICgyKSBBIGxvY2FsIGFkZHJlc3MgbXVzdCB0aGVuIGJlIGJvdW5kOgorCisJc3RydWN0IHNvY2thZGRyX3J4cnBjIHNyeCA9IHsKKwkJLnNyeF9mYW1pbHkJPSBBRl9SWFJQQywKKwkJLnNyeF9zZXJ2aWNlCT0gVkxfU0VSVklDRV9JRCwgLyogUnhSUEMgc2VydmljZSBJRCAqLworCQkudHJhbnNwb3J0X3R5cGUJPSBTT0NLX0RHUkFNLAkvKiB0eXBlIG9mIHRyYW5zcG9ydCBzb2NrZXQgKi8KKwkJLnRyYW5zcG9ydC5zaW5fZmFtaWx5CT0gQUZfSU5FVCwKKwkJLnRyYW5zcG9ydC5zaW5fcG9ydAk9IGh0b25zKDcwMDApLCAvKiBBRlMgY2FsbGJhY2sgKi8KKwkJLnRyYW5zcG9ydC5zaW5fYWRkcmVzcwk9IDAsICAvKiBhbGwgbG9jYWwgaW50ZXJmYWNlcyAqLworCX07CisJYmluZChzZXJ2ZXIsICZzcngsIHNpemVvZihzcngpKTsKKworICgzKSBUaGUgc2VydmVyIGlzIHRoZW4gc2V0IHRvIGxpc3RlbiBvdXQgZm9yIGluY29taW5nIGNhbGxzOgorCisJbGlzdGVuKHNlcnZlciwgMTAwKTsKKworICg0KSBUaGUga2VybmVsIG5vdGlmaWVzIHRoZSBzZXJ2ZXIgb2YgcGVuZGluZyBpbmNvbWluZyBjb25uZWN0aW9ucyBieSBzZW5kaW5nCisgICAgIGl0IGEgbWVzc2FnZSBmb3IgZWFjaC4gIFRoaXMgaXMgcmVjZWl2ZWQgd2l0aCByZWN2bXNnKCkgb24gdGhlIHNlcnZlcgorICAgICBzb2NrZXQuICBJdCBoYXMgbm8gZGF0YSwgYW5kIGhhcyBhIHNpbmdsZSBkYXRhbGVzcyBjb250cm9sIG1lc3NhZ2UKKyAgICAgYXR0YWNoZWQ6CisKKwlSWFJQQ19ORVdfQ0FMTAorCisgICAgIFRoZSBhZGRyZXNzIHRoYXQgY2FuIGJlIHBhc3NlZCBiYWNrIGJ5IHJlY3Ztc2coKSBhdCB0aGlzIHBvaW50IHNob3VsZCBiZQorICAgICBpZ25vcmVkIHNpbmNlIHRoZSBjYWxsIGZvciB3aGljaCB0aGUgbWVzc2FnZSB3YXMgcG9zdGVkIG1heSBoYXZlIGdvbmUgYnkKKyAgICAgdGhlIHRpbWUgaXQgaXMgYWNjZXB0ZWQgLSBpbiB3aGljaCBjYXNlIHRoZSBmaXJzdCBjYWxsIHN0aWxsIG9uIHRoZSBxdWV1ZQorICAgICB3aWxsIGJlIGFjY2VwdGVkLgorCisgKDUpIFRoZSBzZXJ2ZXIgdGhlbiBhY2NlcHRzIHRoZSBuZXcgY2FsbCBieSBpc3N1aW5nIGEgc2VuZG1zZygpIHdpdGggdHdvCisgICAgIHBpZWNlcyBvZiBjb250cm9sIGRhdGEgYW5kIG5vIGFjdHVhbCBkYXRhOgorCisJUlhSUENfQUNDRVBUCQktIGluZGljYXRlIGNvbm5lY3Rpb24gYWNjZXB0YW5jZQorCVJYUlBDX1VTRVJfQ0FMTF9JRAktIHNwZWNpZnkgdXNlciBJRCBmb3IgdGhpcyBjYWxsCisKKyAoNikgVGhlIGZpcnN0IHJlcXVlc3QgZGF0YSBwYWNrZXQgd2lsbCB0aGVuIGJlIHBvc3RlZCB0byB0aGUgc2VydmVyIHNvY2tldCBmb3IKKyAgICAgcmVjdm1zZygpIHRvIHBpY2sgdXAuICBBdCB0aGF0IHBvaW50LCB0aGUgUnhSUEMgYWRkcmVzcyBmb3IgdGhlIGNhbGwgY2FuCisgICAgIGJlIHJlYWQgZnJvbSB0aGUgYWRkcmVzcyBmaWVsZHMgaW4gdGhlIG1zZ2hkciBzdHJ1Y3QuCisKKyAgICAgU3Vic2VxdWVudCByZXF1ZXN0IGRhdGEgd2lsbCBiZSBwb3N0ZWQgdG8gdGhlIHNlcnZlciBzb2NrZXQgZm9yIHJlY3Ztc2coKQorICAgICB0byBjb2xsZWN0IGFzIGl0IGFycml2ZXMuICBBbGwgYnV0IHRoZSBsYXN0IHBpZWNlIG9mIHRoZSByZXF1ZXN0IGRhdGEgd2lsbAorICAgICBiZSBkZWxpdmVyZWQgd2l0aCBNU0dfTU9SRSBmbGFnZ2VkLgorCisgICAgIEFsbCBkYXRhIHdpbGwgYmUgZGVsaXZlcmVkIHdpdGggdGhlIGZvbGxvd2luZyBjb250cm9sIG1lc3NhZ2UgYXR0YWNoZWQ6CisKKwlSWFJQQ19VU0VSX0NBTExfSUQJLSBzcGVjaWZpZXMgdGhlIHVzZXIgSUQgZm9yIHRoaXMgY2FsbAorCisgKDgpIFRoZSByZXBseSBkYXRhIHNob3VsZCB0aGVuIGJlIHBvc3RlZCB0byB0aGUgc2VydmVyIHNvY2tldCB1c2luZyBhIHNlcmllcworICAgICBvZiBzZW5kbXNnKCkgY2FsbHMsIGVhY2ggd2l0aCB0aGUgZm9sbG93aW5nIGNvbnRyb2wgbWVzc2FnZXMgYXR0YWNoZWQ6CisKKwlSWFJQQ19VU0VSX0NBTExfSUQJLSBzcGVjaWZpZXMgdGhlIHVzZXIgSUQgZm9yIHRoaXMgY2FsbAorCisgICAgIE1TR19NT1JFIHNob3VsZCBiZSBzZXQgaW4gbXNnaGRyOjptc2dfZmxhZ3Mgb24gYWxsIGJ1dCB0aGUgbGFzdCBtZXNzYWdlCisgICAgIGZvciBhIHBhcnRpY3VsYXIgY2FsbC4KKworICg5KSBUaGUgZmluYWwgQUNLIGZyb20gdGhlIGNsaWVudCB3aWxsIGJlIHBvc3RlZCBmb3IgcmV0cmlldmFsIGJ5IHJlY3Ztc2coKQorICAgICB3aGVuIGl0IGlzIHJlY2VpdmVkLiAgSXQgd2lsbCB0YWtlIHRoZSBmb3JtIG9mIGEgZGF0YWxlc3MgbWVzc2FnZSB3aXRoIHR3bworICAgICBjb250cm9sIG1lc3NhZ2VzIGF0dGFjaGVkOgorCisJUlhSUENfVVNFUl9DQUxMX0lECS0gc3BlY2lmaWVzIHRoZSB1c2VyIElEIGZvciB0aGlzIGNhbGwKKwlSWFJQQ19BQ0sJCS0gaW5kaWNhdGVzIGZpbmFsIEFDSyAobm8gZGF0YSkKKworICAgICBNU0dfRU9SIHdpbGwgYmUgZmxhZ2dlZCB0byBpbmRpY2F0ZSB0aGF0IHRoaXMgaXMgdGhlIGZpbmFsIG1lc3NhZ2UgZm9yCisgICAgIHRoaXMgY2FsbC4KKworKDEwKSBVcCB0byB0aGUgcG9pbnQgdGhlIGZpbmFsIHBhY2tldCBvZiByZXBseSBkYXRhIGlzIHNlbnQsIHRoZSBjYWxsIGNhbiBiZQorICAgICBhYm9ydGVkIGJ5IGNhbGxpbmcgc2VuZG1zZygpIHdpdGggYSBkYXRhbGVzcyBtZXNzYWdlIHdpdGggdGhlIGZvbGxvd2luZworICAgICBjb250cm9sIG1lc3NhZ2VzIGF0dGFjaGVkOgorCisJUlhSUENfVVNFUl9DQUxMX0lECS0gc3BlY2lmaWVzIHRoZSB1c2VyIElEIGZvciB0aGlzIGNhbGwKKwlSWFJQQ19BQk9SVAkJLSBpbmRpY2F0ZXMgYWJvcnQgY29kZSAoNCBieXRlIGRhdGEpCisKKyAgICAgQW55IHBhY2tldHMgd2FpdGluZyBpbiB0aGUgc29ja2V0J3MgcmVjZWl2ZSBxdWV1ZSB3aWxsIGJlIGRpc2NhcmRlZCBpZgorICAgICB0aGlzIGlzIGlzc3VlZC4KKworTm90ZSB0aGF0IGFsbCB0aGUgY29tbXVuaWNhdGlvbnMgZm9yIGEgcGFydGljdWxhciBzZXJ2aWNlIHRha2UgcGxhY2UgdGhyb3VnaAordGhlIG9uZSBzZXJ2ZXIgc29ja2V0LCB1c2luZyBjb250cm9sIG1lc3NhZ2VzIG9uIHNlbmRtc2coKSBhbmQgcmVjdm1zZygpIHRvCitkZXRlcm1pbmUgdGhlIGNhbGwgYWZmZWN0ZWQuCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PQorQUZfUlhSUEMgS0VSTkVMIElOVEVSRkFDRQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgQUZfUlhSUEMgbW9kdWxlIGFsc28gcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGZvciB1c2UgYnkgaW4ta2VybmVsIHV0aWxpdGllcworc3VjaCBhcyB0aGUgQUZTIGZpbGVzeXN0ZW0uICBUaGlzIHBlcm1pdHMgc3VjaCBhIHV0aWxpdHkgdG86CisKKyAoMSkgVXNlIGRpZmZlcmVudCBrZXlzIGRpcmVjdGx5IG9uIGluZGl2aWR1YWwgY2xpZW50IGNhbGxzIG9uIG9uZSBzb2NrZXQKKyAgICAgcmF0aGVyIHRoYW4gaGF2aW5nIHRvIG9wZW4gYSB3aG9sZSBzbGV3IG9mIHNvY2tldHMsIG9uZSBmb3IgZWFjaCBrZXkgaXQKKyAgICAgbWlnaHQgd2FudCB0byB1c2UuCisKKyAoMikgQXZvaWQgaGF2aW5nIFJ4UlBDIGNhbGwgcmVxdWVzdF9rZXkoKSBhdCB0aGUgcG9pbnQgb2YgaXNzdWUgb2YgYSBjYWxsIG9yCisgICAgIG9wZW5pbmcgb2YgYSBzb2NrZXQuICBJbnN0ZWFkIHRoZSB1dGlsaXR5IGlzIHJlc3BvbnNpYmxlIGZvciByZXF1ZXN0aW5nIGEKKyAgICAga2V5IGF0IHRoZSBhcHByb3ByaWF0ZSBwb2ludC4gIEFGUywgZm9yIGluc3RhbmNlLCB3b3VsZCBkbyB0aGlzIGR1cmluZyBWRlMKKyAgICAgb3BlcmF0aW9ucyBzdWNoIGFzIG9wZW4oKSBvciB1bmxpbmsoKS4gIFRoZSBrZXkgaXMgdGhlbiBoYW5kZWQgdGhyb3VnaAorICAgICB3aGVuIHRoZSBjYWxsIGlzIGluaXRpYXRlZC4KKworICgzKSBSZXF1ZXN0IHRoZSB1c2Ugb2Ygc29tZXRoaW5nIG90aGVyIHRoYW4gR0ZQX0tFUk5FTCB0byBhbGxvY2F0ZSBtZW1vcnkuCisKKyAoNCkgQXZvaWQgdGhlIG92ZXJoZWFkIG9mIHVzaW5nIHRoZSByZWN2bXNnKCkgY2FsbC4gIFJ4UlBDIG1lc3NhZ2VzIGNhbiBiZQorICAgICBpbnRlcmNlcHRlZCBiZWZvcmUgdGhleSBnZXQgcHV0IGludG8gdGhlIHNvY2tldCBSeCBxdWV1ZSBhbmQgdGhlIHNvY2tldAorICAgICBidWZmZXJzIG1hbmlwdWxhdGVkIGRpcmVjdGx5LgorCitUbyB1c2UgdGhlIFJ4UlBDIGZhY2lsaXR5LCBhIGtlcm5lbCB1dGlsaXR5IG11c3Qgc3RpbGwgb3BlbiBhbiBBRl9SWFJQQyBzb2NrZXQsCitiaW5kIGFuIGFkZHJlc3MgYXMgYXBwcm9wcmlhdGUgYW5kIGxpc3RlbiBpZiBpdCdzIHRvIGJlIGEgc2VydmVyIHNvY2tldCwgYnV0Cit0aGVuIGl0IHBhc3NlcyB0aGlzIHRvIHRoZSBrZXJuZWwgaW50ZXJmYWNlIGZ1bmN0aW9ucy4KKworVGhlIGtlcm5lbCBpbnRlcmZhY2UgZnVuY3Rpb25zIGFyZSBhcyBmb2xsb3dzOgorCisgKCopIEJlZ2luIGEgbmV3IGNsaWVudCBjYWxsLgorCisJc3RydWN0IHJ4cnBjX2NhbGwgKgorCXJ4cnBjX2tlcm5lbF9iZWdpbl9jYWxsKHN0cnVjdCBzb2NrZXQgKnNvY2ssCisJCQkJc3RydWN0IHNvY2thZGRyX3J4cnBjICpzcngsCisJCQkJc3RydWN0IGtleSAqa2V5LAorCQkJCXVuc2lnbmVkIGxvbmcgdXNlcl9jYWxsX0lELAorCQkJCWdmcF90IGdmcCk7CisKKyAgICAgVGhpcyBhbGxvY2F0ZXMgdGhlIGluZnJhc3RydWN0dXJlIHRvIG1ha2UgYSBuZXcgUnhSUEMgY2FsbCBhbmQgYXNzaWducworICAgICBjYWxsIGFuZCBjb25uZWN0aW9uIG51bWJlcnMuICBUaGUgY2FsbCB3aWxsIGJlIG1hZGUgb24gdGhlIFVEUCBwb3J0IHRoYXQKKyAgICAgdGhlIHNvY2tldCBpcyBib3VuZCB0by4gIFRoZSBjYWxsIHdpbGwgZ28gdG8gdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3Mgb2YgYQorICAgICBjb25uZWN0ZWQgY2xpZW50IHNvY2tldCB1bmxlc3MgYW4gYWx0ZXJuYXRpdmUgaXMgc3VwcGxpZWQgKHNyeCBpcworICAgICBub24tTlVMTCkuCisKKyAgICAgSWYgYSBrZXkgaXMgc3VwcGxpZWQgdGhlbiB0aGlzIHdpbGwgYmUgdXNlZCB0byBzZWN1cmUgdGhlIGNhbGwgaW5zdGVhZCBvZgorICAgICB0aGUga2V5IGJvdW5kIHRvIHRoZSBzb2NrZXQgd2l0aCB0aGUgUlhSUENfU0VDVVJJVFlfS0VZIHNvY2tvcHQuICBDYWxscworICAgICBzZWN1cmVkIGluIHRoaXMgd2F5IHdpbGwgc3RpbGwgc2hhcmUgY29ubmVjdGlvbnMgaWYgYXQgYWxsIHBvc3NpYmxlLgorCisgICAgIFRoZSB1c2VyX2NhbGxfSUQgaXMgZXF1aXZhbGVudCB0byB0aGF0IHN1cHBsaWVkIHRvIHNlbmRtc2coKSBpbiB0aGUKKyAgICAgY29udHJvbCBkYXRhIGJ1ZmZlci4gIEl0IGlzIGVudGlyZWx5IGZlYXNpYmxlIHRvIHVzZSB0aGlzIHRvIHBvaW50IHRvIGEKKyAgICAga2VybmVsIGRhdGEgc3RydWN0dXJlLgorCisgICAgIElmIHRoaXMgZnVuY3Rpb24gaXMgc3VjY2Vzc2Z1bCwgYW4gb3BhcXVlIHJlZmVyZW5jZSB0byB0aGUgUnhSUEMgY2FsbCBpcworICAgICByZXR1cm5lZC4gIFRoZSBjYWxsZXIgbm93IGhvbGRzIGEgcmVmZXJlbmNlIG9uIHRoaXMgYW5kIGl0IG11c3QgYmUKKyAgICAgcHJvcGVybHkgZW5kZWQuCisKKyAoKikgRW5kIGEgY2xpZW50IGNhbGwuCisKKwl2b2lkIHJ4cnBjX2tlcm5lbF9lbmRfY2FsbChzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCk7CisKKyAgICAgVGhpcyBpcyB1c2VkIHRvIGVuZCBhIHByZXZpb3VzbHkgYmVndW4gY2FsbC4gIFRoZSB1c2VyX2NhbGxfSUQgaXMgZXhwdW5nZWQKKyAgICAgZnJvbSBBRl9SWFJQQydzIGtub3dsZWRnZSBhbmQgd2lsbCBub3QgYmUgc2VlbiBhZ2FpbiBpbiBhc3NvY2lhdGlvbiB3aXRoCisgICAgIHRoZSBzcGVjaWZpZWQgY2FsbC4KKworICgqKSBTZW5kIGRhdGEgdGhyb3VnaCBhIGNhbGwuCisKKwlpbnQgcnhycGNfa2VybmVsX3NlbmRfZGF0YShzdHJ1Y3QgcnhycGNfY2FsbCAqY2FsbCwgc3RydWN0IG1zZ2hkciAqbXNnLAorCQkJCSAgIHNpemVfdCBsZW4pOworCisgICAgIFRoaXMgaXMgdXNlZCB0byBzdXBwbHkgZWl0aGVyIHRoZSByZXF1ZXN0IHBhcnQgb2YgYSBjbGllbnQgY2FsbCBvciB0aGUKKyAgICAgcmVwbHkgcGFydCBvZiBhIHNlcnZlciBjYWxsLiAgbXNnLm1zZ19pb3ZsZW4gYW5kIG1zZy5tc2dfaW92IHNwZWNpZnkgdGhlCisgICAgIGRhdGEgYnVmZmVycyB0byBiZSB1c2VkLiAgbXNnX2lvdiBtYXkgbm90IGJlIE5VTEwgYW5kIG11c3QgcG9pbnQKKyAgICAgZXhjbHVzaXZlbHkgdG8gaW4ta2VybmVsIHZpcnR1YWwgYWRkcmVzc2VzLiAgbXNnLm1zZ19mbGFncyBtYXkgYmUgZ2l2ZW4KKyAgICAgTVNHX01PUkUgaWYgdGhlcmUgd2lsbCBiZSBzdWJzZXF1ZW50IGRhdGEgc2VuZHMgZm9yIHRoaXMgY2FsbC4KKworICAgICBUaGUgbXNnIG11c3Qgbm90IHNwZWNpZnkgYSBkZXN0aW5hdGlvbiBhZGRyZXNzLCBjb250cm9sIGRhdGEgb3IgYW55IGZsYWdzCisgICAgIG90aGVyIHRoYW4gTVNHX01PUkUuICBsZW4gaXMgdGhlIHRvdGFsIGFtb3VudCBvZiBkYXRhIHRvIHRyYW5zbWl0LgorCisgKCopIEFib3J0IGEgY2FsbC4KKworCXZvaWQgcnhycGNfa2VybmVsX2Fib3J0X2NhbGwoc3RydWN0IHJ4cnBjX2NhbGwgKmNhbGwsIHUzMiBhYm9ydF9jb2RlKTsKKworICAgICBUaGlzIGlzIHVzZWQgdG8gYWJvcnQgYSBjYWxsIGlmIGl0J3Mgc3RpbGwgaW4gYW4gYWJvcnRhYmxlIHN0YXRlLiAgVGhlCisgICAgIGFib3J0IGNvZGUgc3BlY2lmaWVkIHdpbGwgYmUgcGxhY2VkIGluIHRoZSBBQk9SVCBtZXNzYWdlIHNlbnQuCisKKyAoKikgSW50ZXJjZXB0IHJlY2VpdmVkIFJ4UlBDIG1lc3NhZ2VzLgorCisJdHlwZWRlZiB2b2lkICgqcnhycGNfaW50ZXJjZXB0b3JfdCkoc3RydWN0IHNvY2sgKnNrLAorCQkJCQkgICAgdW5zaWduZWQgbG9uZyB1c2VyX2NhbGxfSUQsCisJCQkJCSAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKworCXZvaWQKKwlyeHJwY19rZXJuZWxfaW50ZXJjZXB0X3J4X21lc3NhZ2VzKHN0cnVjdCBzb2NrZXQgKnNvY2ssCisJCQkJCSAgIHJ4cnBjX2ludGVyY2VwdG9yX3QgaW50ZXJjZXB0b3IpOworCisgICAgIFRoaXMgaW5zdGFsbHMgYW4gaW50ZXJjZXB0b3IgZnVuY3Rpb24gb24gdGhlIHNwZWNpZmllZCBBRl9SWFJQQyBzb2NrZXQuCisgICAgIEFsbCBtZXNzYWdlcyB0aGF0IHdvdWxkIG90aGVyd2lzZSB3aW5kIHVwIGluIHRoZSBzb2NrZXQncyBSeCBxdWV1ZSBhcmUKKyAgICAgdGhlbiBkaXZlcnRlZCB0byB0aGlzIGZ1bmN0aW9uLiAgTm90ZSB0aGF0IGNhcmUgbXVzdCBiZSB0YWtlbiB0byBwcm9jZXNzCisgICAgIHRoZSBtZXNzYWdlcyBpbiB0aGUgcmlnaHQgb3JkZXIgdG8gbWFpbnRhaW4gREFUQSBtZXNzYWdlIHNlcXVlbnRpYWxpdHkuCisKKyAgICAgVGhlIGludGVyY2VwdG9yIGZ1bmN0aW9uIGl0c2VsZiBpcyBwcm92aWRlZCB3aXRoIHRoZSBhZGRyZXNzIG9mIHRoZSBzb2NrZXQKKyAgICAgYW5kIGhhbmRsaW5nIHRoZSBpbmNvbWluZyBtZXNzYWdlLCB0aGUgSUQgYXNzaWduZWQgYnkgdGhlIGtlcm5lbCB1dGlsaXR5CisgICAgIHRvIHRoZSBjYWxsIGFuZCB0aGUgc29ja2V0IGJ1ZmZlciBjb250YWluaW5nIHRoZSBtZXNzYWdlLgorCisgICAgIFRoZSBza2ItPm1hcmsgZmllbGQgaW5kaWNhdGVzIHRoZSB0eXBlIG9mIG1lc3NhZ2U6CisKKwlNQVJLCQkJCU1FQU5JTkcKKwk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCVJYUlBDX1NLQl9NQVJLX0RBVEEJCURhdGEgbWVzc2FnZQorCVJYUlBDX1NLQl9NQVJLX0ZJTkFMX0FDSwlGaW5hbCBBQ0sgcmVjZWl2ZWQgZm9yIGFuIGluY29taW5nIGNhbGwKKwlSWFJQQ19TS0JfTUFSS19CVVNZCQlDbGllbnQgY2FsbCByZWplY3RlZCBhcyBzZXJ2ZXIgYnVzeQorCVJYUlBDX1NLQl9NQVJLX1JFTU9URV9BQk9SVAlDYWxsIGFib3J0ZWQgYnkgcGVlcgorCVJYUlBDX1NLQl9NQVJLX05FVF9FUlJPUglOZXR3b3JrIGVycm9yIGRldGVjdGVkCisJUlhSUENfU0tCX01BUktfTE9DQUxfRVJST1IJTG9jYWwgZXJyb3IgZW5jb3VudGVyZWQKKwlSWFJQQ19TS0JfTUFSS19ORVdfQ0FMTAkJTmV3IGluY29taW5nIGNhbGwgYXdhaXRpbmcgYWNjZXB0YW5jZQorCisgICAgIFRoZSByZW1vdGUgYWJvcnQgbWVzc2FnZSBjYW4gYmUgcHJvYmVkIHdpdGggcnhycGNfa2VybmVsX2dldF9hYm9ydF9jb2RlKCkuCisgICAgIFRoZSB0d28gZXJyb3IgbWVzc2FnZXMgY2FuIGJlIHByb2JlZCB3aXRoIHJ4cnBjX2tlcm5lbF9nZXRfZXJyb3JfbnVtYmVyKCkuCisgICAgIEEgbmV3IGNhbGwgY2FuIGJlIGFjY2VwdGVkIHdpdGggcnhycGNfa2VybmVsX2FjY2VwdF9jYWxsKCkuCisKKyAgICAgRGF0YSBtZXNzYWdlcyBjYW4gaGF2ZSB0aGVpciBjb250ZW50cyBleHRyYWN0ZWQgd2l0aCB0aGUgdXN1YWwgYnVuY2ggb2YKKyAgICAgc29ja2V0IGJ1ZmZlciBtYW5pcHVsYXRpb24gZnVuY3Rpb25zLiAgQSBkYXRhIG1lc3NhZ2UgY2FuIGJlIGRldGVybWluZWQgdG8KKyAgICAgYmUgdGhlIGxhc3Qgb25lIGluIGEgc2VxdWVuY2Ugd2l0aCByeHJwY19rZXJuZWxfaXNfZGF0YV9sYXN0KCkuICBXaGVuIGEKKyAgICAgZGF0YSBtZXNzYWdlIGhhcyBiZWVuIHVzZWQgdXAsIHJ4cnBjX2tlcm5lbF9kYXRhX2RlbGl2ZXJlZCgpIHNob3VsZCBiZQorICAgICBjYWxsZWQgb24gaXQuLgorCisgICAgIE5vbi1kYXRhIG1lc3NhZ2VzIHNob3VsZCBiZSBoYW5kbGVkIHRvIHJ4cnBjX2tlcm5lbF9mcmVlX3NrYigpIHRvIGRpc3Bvc2UKKyAgICAgb2YuICBJdCBpcyBwb3NzaWJsZSB0byBnZXQgZXh0cmEgcmVmcyBvbiBhbGwgdHlwZXMgb2YgbWVzc2FnZSBmb3IgbGF0ZXIKKyAgICAgZnJlZWluZywgYnV0IHRoaXMgbWF5IHBpbiB0aGUgc3RhdGUgb2YgYSBjYWxsIHVudGlsIHRoZSBtZXNzYWdlIGlzIGZpbmFsbHkKKyAgICAgZnJlZWQuCisKKyAoKikgQWNjZXB0IGFuIGluY29taW5nIGNhbGwuCisKKwlzdHJ1Y3QgcnhycGNfY2FsbCAqCisJcnhycGNfa2VybmVsX2FjY2VwdF9jYWxsKHN0cnVjdCBzb2NrZXQgKnNvY2ssCisJCQkJIHVuc2lnbmVkIGxvbmcgdXNlcl9jYWxsX0lEKTsKKworICAgICBUaGlzIGlzIHVzZWQgdG8gYWNjZXB0IGFuIGluY29taW5nIGNhbGwgYW5kIHRvIGFzc2lnbiBpdCBhIGNhbGwgSUQuICBUaGlzCisgICAgIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8gcnhycGNfa2VybmVsX2JlZ2luX2NhbGwoKSBhbmQgY2FsbHMgYWNjZXB0ZWQgbXVzdAorICAgICBiZSBlbmRlZCBpbiB0aGUgc2FtZSB3YXkuCisKKyAgICAgSWYgdGhpcyBmdW5jdGlvbiBpcyBzdWNjZXNzZnVsLCBhbiBvcGFxdWUgcmVmZXJlbmNlIHRvIHRoZSBSeFJQQyBjYWxsIGlzCisgICAgIHJldHVybmVkLiAgVGhlIGNhbGxlciBub3cgaG9sZHMgYSByZWZlcmVuY2Ugb24gdGhpcyBhbmQgaXQgbXVzdCBiZQorICAgICBwcm9wZXJseSBlbmRlZC4KKworICgqKSBSZWplY3QgYW4gaW5jb21pbmcgY2FsbC4KKworCWludCByeHJwY19rZXJuZWxfcmVqZWN0X2NhbGwoc3RydWN0IHNvY2tldCAqc29jayk7CisKKyAgICAgVGhpcyBpcyB1c2VkIHRvIHJlamVjdCB0aGUgZmlyc3QgaW5jb21pbmcgY2FsbCBvbiB0aGUgc29ja2V0J3MgcXVldWUgd2l0aAorICAgICBhIEJVU1kgbWVzc2FnZS4gIC1FTk9EQVRBIGlzIHJldHVybmVkIGlmIHRoZXJlIHdlcmUgbm8gaW5jb21pbmcgY2FsbHMuCisgICAgIE90aGVyIGVycm9ycyBtYXkgYmUgcmV0dXJuZWQgaWYgdGhlIGNhbGwgaGFkIGJlZW4gYWJvcnRlZCAoLUVDT05OQUJPUlRFRCkKKyAgICAgb3IgaGFkIHRpbWVkIG91dCAoLUVUSU1FKS4KKworICgqKSBSZWNvcmQgdGhlIGRlbGl2ZXJ5IG9mIGEgZGF0YSBtZXNzYWdlIGFuZCBmcmVlIGl0LgorCisJdm9pZCByeHJwY19rZXJuZWxfZGF0YV9kZWxpdmVyZWQoc3RydWN0IHNrX2J1ZmYgKnNrYik7CisKKyAgICAgVGhpcyBpcyB1c2VkIHRvIHJlY29yZCBhIGRhdGEgbWVzc2FnZSBhcyBoYXZpbmcgYmVlbiBkZWxpdmVyZWQgYW5kIHRvCisgICAgIHVwZGF0ZSB0aGUgQUNLIHN0YXRlIGZvciB0aGUgY2FsbC4gIFRoZSBzb2NrZXQgYnVmZmVyIHdpbGwgYmUgZnJlZWQuCisKKyAoKikgRnJlZSBhIG1lc3NhZ2UuCisKKwl2b2lkIHJ4cnBjX2tlcm5lbF9mcmVlX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKworICAgICBUaGlzIGlzIHVzZWQgdG8gZnJlZSBhIG5vbi1EQVRBIHNvY2tldCBidWZmZXIgaW50ZXJjZXB0ZWQgZnJvbSBhbiBBRl9SWFJQQworICAgICBzb2NrZXQuCisKKyAoKikgRGV0ZXJtaW5lIGlmIGEgZGF0YSBtZXNzYWdlIGlzIHRoZSBsYXN0IG9uZSBvbiBhIGNhbGwuCisKKwlib29sIHJ4cnBjX2tlcm5lbF9pc19kYXRhX2xhc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYik7CisKKyAgICAgVGhpcyBpcyB1c2VkIHRvIGRldGVybWluZSBpZiBhIHNvY2tldCBidWZmZXIgaG9sZHMgdGhlIGxhc3QgZGF0YSBtZXNzYWdlCisgICAgIHRvIGJlIHJlY2VpdmVkIGZvciBhIGNhbGwgKHRydWUgd2lsbCBiZSByZXR1cm5lZCBpZiBpdCBkb2VzLCBmYWxzZQorICAgICBpZiBub3QpLgorCisgICAgIFRoZSBkYXRhIG1lc3NhZ2Ugd2lsbCBiZSBwYXJ0IG9mIHRoZSByZXBseSBvbiBhIGNsaWVudCBjYWxsIGFuZCB0aGUKKyAgICAgcmVxdWVzdCBvbiBhbiBpbmNvbWluZyBjYWxsLiAgSW4gdGhlIGxhdHRlciBjYXNlIHRoZXJlIHdpbGwgYmUgbW9yZQorICAgICBtZXNzYWdlcywgYnV0IGluIHRoZSBmb3JtZXIgY2FzZSB0aGVyZSB3aWxsIG5vdC4KKworICgqKSBHZXQgdGhlIGFib3J0IGNvZGUgZnJvbSBhbiBhYm9ydCBtZXNzYWdlLgorCisJdTMyIHJ4cnBjX2tlcm5lbF9nZXRfYWJvcnRfY29kZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKworICAgICBUaGlzIGlzIHVzZWQgdG8gZXh0cmFjdCB0aGUgYWJvcnQgY29kZSBmcm9tIGEgcmVtb3RlIGFib3J0IG1lc3NhZ2UuCisKKyAoKikgR2V0IHRoZSBlcnJvciBudW1iZXIgZnJvbSBhIGxvY2FsIG9yIG5ldHdvcmsgZXJyb3IgbWVzc2FnZS4KKworCWludCByeHJwY19rZXJuZWxfZ2V0X2Vycm9yX251bWJlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKworICAgICBUaGlzIGlzIHVzZWQgdG8gZXh0cmFjdCB0aGUgZXJyb3IgbnVtYmVyIGZyb20gYSBtZXNzYWdlIGluZGljYXRpbmcgZWl0aGVyCisgICAgIGEgbG9jYWwgZXJyb3Igb2NjdXJyZWQgb3IgYSBuZXR3b3JrIGVycm9yIG9jY3VycmVkLgorCisgKCopIEFsbG9jYXRlIGEgbnVsbCBrZXkgZm9yIGRvaW5nIGFub255bW91cyBzZWN1cml0eS4KKworCXN0cnVjdCBrZXkgKnJ4cnBjX2dldF9udWxsX2tleShjb25zdCBjaGFyICprZXluYW1lKTsKKworICAgICBUaGlzIGlzIHVzZWQgdG8gYWxsb2NhdGUgYSBudWxsIFJ4UlBDIGtleSB0aGF0IGNhbiBiZSB1c2VkIHRvIGluZGljYXRlCisgICAgIGFub255bW91cyBzZWN1cml0eSBmb3IgYSBwYXJ0aWN1bGFyIGRvbWFpbi4KKworCis9PT09PT09PT09PT09PT09PT09PT09PQorQ09ORklHVVJBQkxFIFBBUkFNRVRFUlMKKz09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBSeFJQQyBwcm90b2NvbCBkcml2ZXIgaGFzIGEgbnVtYmVyIG9mIGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzIHRoYXQgY2FuIGJlCithZGp1c3RlZCB0aHJvdWdoIHN5c2N0bHMgaW4gL3Byb2MvbmV0L3J4cnBjLzoKKworICgqKSByZXFfYWNrX2RlbGF5CisKKyAgICAgVGhlIGFtb3VudCBvZiB0aW1lIGluIG1pbGxpc2Vjb25kcyBhZnRlciByZWNlaXZpbmcgYSBwYWNrZXQgd2l0aCB0aGUKKyAgICAgcmVxdWVzdC1hY2sgZmxhZyBzZXQgYmVmb3JlIHdlIGhvbm91ciB0aGUgZmxhZyBhbmQgYWN0dWFsbHkgc2VuZCB0aGUKKyAgICAgcmVxdWVzdGVkIGFjay4KKworICAgICBVc3VhbGx5IHRoZSBvdGhlciBzaWRlIHdvbid0IHN0b3Agc2VuZGluZyBwYWNrZXRzIHVudGlsIHRoZSBhZHZlcnRpc2VkCisgICAgIHJlY2VwdGlvbiB3aW5kb3cgaXMgZnVsbCAodG8gYSBtYXhpbXVtIG9mIDI1NSBwYWNrZXRzKSwgc28gZGVsYXlpbmcgdGhlCisgICAgIEFDSyBwZXJtaXRzIHNldmVyYWwgcGFja2V0cyB0byBiZSBBQ0snZCBpbiBvbmUgZ28uCisKKyAoKikgc29mdF9hY2tfZGVsYXkKKworICAgICBUaGUgYW1vdW50IG9mIHRpbWUgaW4gbWlsbGlzZWNvbmRzIGFmdGVyIHJlY2VpdmluZyBhIG5ldyBwYWNrZXQgYmVmb3JlIHdlCisgICAgIGdlbmVyYXRlIGEgc29mdC1BQ0sgdG8gdGVsbCB0aGUgc2VuZGVyIHRoYXQgaXQgZG9lc24ndCBuZWVkIHRvIHJlc2VuZC4KKworICgqKSBpZGxlX2Fja19kZWxheQorCisgICAgIFRoZSBhbW91bnQgb2YgdGltZSBpbiBtaWxsaXNlY29uZHMgYWZ0ZXIgYWxsIHRoZSBwYWNrZXRzIGN1cnJlbnRseSBpbiB0aGUKKyAgICAgcmVjZWl2ZWQgcXVldWUgaGF2ZSBiZWVuIGNvbnN1bWVkIGJlZm9yZSB3ZSBnZW5lcmF0ZSBhIGhhcmQtQUNLIHRvIHRlbGwKKyAgICAgdGhlIHNlbmRlciBpdCBjYW4gZnJlZSBpdHMgYnVmZmVycywgYXNzdW1pbmcgbm8gb3RoZXIgcmVhc29uIG9jY3VycyB0aGF0CisgICAgIHdlIHdvdWxkIHNlbmQgYW4gQUNLLgorCisgKCopIHJlc2VuZF90aW1lb3V0CisKKyAgICAgVGhlIGFtb3VudCBvZiB0aW1lIGluIG1pbGxpc2Vjb25kcyBhZnRlciB0cmFuc21pdHRpbmcgYSBwYWNrZXQgYmVmb3JlIHdlCisgICAgIHRyYW5zbWl0IGl0IGFnYWluLCBhc3N1bWluZyBubyBBQ0sgaXMgcmVjZWl2ZWQgZnJvbSB0aGUgcmVjZWl2ZXIgdGVsbGluZworICAgICB1cyB0aGV5IGdvdCBpdC4KKworICgqKSBtYXhfY2FsbF9saWZldGltZQorCisgICAgIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIGluIHNlY29uZHMgdGhhdCBhIGNhbGwgbWF5IGJlIGluIHByb2dyZXNzCisgICAgIGJlZm9yZSB3ZSBwcmVlbXB0aXZlbHkga2lsbCBpdC4KKworICgqKSBkZWFkX2NhbGxfZXhwaXJ5CisKKyAgICAgVGhlIGFtb3VudCBvZiB0aW1lIGluIHNlY29uZHMgYmVmb3JlIHdlIHJlbW92ZSBhIGRlYWQgY2FsbCBmcm9tIHRoZSBjYWxsCisgICAgIGxpc3QuICBEZWFkIGNhbGxzIGFyZSBrZXB0IGFyb3VuZCBmb3IgYSBsaXR0bGUgd2hpbGUgZm9yIHRoZSBwdXJwb3NlIG9mCisgICAgIHJlcGVhdGluZyBBQ0sgYW5kIEFCT1JUIHBhY2tldHMuCisKKyAoKikgY29ubmVjdGlvbl9leHBpcnkKKworICAgICBUaGUgYW1vdW50IG9mIHRpbWUgaW4gc2Vjb25kcyBhZnRlciBhIGNvbm5lY3Rpb24gd2FzIGxhc3QgdXNlZCBiZWZvcmUgd2UKKyAgICAgcmVtb3ZlIGl0IGZyb20gdGhlIGNvbm5lY3Rpb24gbGlzdC4gIFdoaWxzdCBhIGNvbm5lY3Rpb24gaXMgaW4gZXhpc3RlbmNlLAorICAgICBpdCBzZXJ2ZXMgYXMgYSBwbGFjZWhvbGRlciBmb3IgbmVnb3RpYXRlZCBzZWN1cml0eTsgd2hlbiBpdCBpcyBkZWxldGVkLAorICAgICB0aGUgc2VjdXJpdHkgbXVzdCBiZSByZW5lZ290aWF0ZWQuCisKKyAoKikgdHJhbnNwb3J0X2V4cGlyeQorCisgICAgIFRoZSBhbW91bnQgb2YgdGltZSBpbiBzZWNvbmRzIGFmdGVyIGEgdHJhbnNwb3J0IHdhcyBsYXN0IHVzZWQgYmVmb3JlIHdlCisgICAgIHJlbW92ZSBpdCBmcm9tIHRoZSB0cmFuc3BvcnQgbGlzdC4gIFdoaWxzdCBhIHRyYW5zcG9ydCBpcyBpbiBleGlzdGVuY2UsIGl0CisgICAgIHNlcnZlcyB0byBhbmNob3IgdGhlIHBlZXIgZGF0YSBhbmQga2VlcHMgdGhlIGNvbm5lY3Rpb24gSUQgY291bnRlci4KKworICgqKSByeHJwY19yeF93aW5kb3dfc2l6ZQorCisgICAgIFRoZSBzaXplIG9mIHRoZSByZWNlaXZlIHdpbmRvdyBpbiBwYWNrZXRzLiAgVGhpcyBpcyB0aGUgbWF4aW11bSBudW1iZXIgb2YKKyAgICAgdW5jb25zdW1lZCByZWNlaXZlZCBwYWNrZXRzIHdlJ3JlIHdpbGxpbmcgdG8gaG9sZCBpbiBtZW1vcnkgZm9yIGFueQorICAgICBwYXJ0aWN1bGFyIGNhbGwuCisKKyAoKikgcnhycGNfcnhfbXR1CisKKyAgICAgVGhlIG1heGltdW0gcGFja2V0IE1UVSBzaXplIHRoYXQgd2UncmUgd2lsbGluZyB0byByZWNlaXZlIGluIGJ5dGVzLiAgVGhpcworICAgICBpbmRpY2F0ZXMgdG8gdGhlIHBlZXIgd2hldGhlciB3ZSdyZSB3aWxsaW5nIHRvIGFjY2VwdCBqdW1ibyBwYWNrZXRzLgorCisgKCopIHJ4cnBjX3J4X2p1bWJvX21heAorCisgICAgIFRoZSBtYXhpbXVtIG51bWJlciBvZiBwYWNrZXRzIHRoYXQgd2UncmUgd2lsbGluZyB0byBhY2NlcHQgaW4gYSBqdW1ibworICAgICBwYWNrZXQuICBOb24tdGVybWluYWwgcGFja2V0cyBpbiBhIGp1bWJvIHBhY2tldCBtdXN0IGNvbnRhaW4gYSBmb3VyIGJ5dGUKKyAgICAgaGVhZGVyIHBsdXMgZXhhY3RseSAxNDEyIGJ5dGVzIG9mIGRhdGEuICBUaGUgdGVybWluYWwgcGFja2V0IG11c3QgY29udGFpbgorICAgICBhIGZvdXIgYnl0ZSBoZWFkZXIgcGx1cyBhbnkgYW1vdW50IG9mIGRhdGEuICBJbiBhbnkgZXZlbnQsIGEganVtYm8gcGFja2V0CisgICAgIG1heSBub3QgZXhjZWVkIHJ4cnBjX3J4X210dSBpbiBzaXplLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3MyaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3MyaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNjJhNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvczJpby50eHQKQEAgLTAsMCArMSwxNDEgQEAKK1JlbGVhc2Ugbm90ZXMgZm9yIE5ldGVyaW9uJ3MgKEZvcm1lcmx5IFMyaW8pIFhmcmFtZSBJL0lJIFBDSS1YIDEwR2JFIGRyaXZlci4KKworQ29udGVudHMKKz09PT09PT0KKy0gMS4gIEludHJvZHVjdGlvbgorLSAyLiAgSWRlbnRpZnlpbmcgdGhlIGFkYXB0ZXIvaW50ZXJmYWNlCistIDMuICBGZWF0dXJlcyBzdXBwb3J0ZWQKKy0gNC4gIENvbW1hbmQgbGluZSBwYXJhbWV0ZXJzCistIDUuICBQZXJmb3JtYW5jZSBzdWdnZXN0aW9ucworLSA2LiAgQXZhaWxhYmxlIERvd25sb2FkcyAKKworCisxLglJbnRyb2R1Y3Rpb246CitUaGlzIExpbnV4IGRyaXZlciBzdXBwb3J0cyBOZXRlcmlvbidzIFhmcmFtZSBJIFBDSS1YIDEuMCBhbmQKK1hmcmFtZSBJSSBQQ0ktWCAyLjAgYWRhcHRlcnMuIEl0IHN1cHBvcnRzIHNldmVyYWwgZmVhdHVyZXMgCitzdWNoIGFzIGp1bWJvIGZyYW1lcywgTVNJL01TSS1YLCBjaGVja3N1bSBvZmZsb2FkcywgVFNPLCBVRk8gYW5kIHNvIG9uLgorU2VlIGJlbG93IGZvciBjb21wbGV0ZSBsaXN0IG9mIGZlYXR1cmVzLgorQWxsIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQgZm9yIGJvdGggSVB2NCBhbmQgSVB2Ni4KKworMi4JSWRlbnRpZnlpbmcgdGhlIGFkYXB0ZXIvaW50ZXJmYWNlOgorYS4gSW5zZXJ0IHRoZSBhZGFwdGVyKHMpIGluIHlvdXIgc3lzdGVtLgorYi4gQnVpbGQgYW5kIGxvYWQgZHJpdmVyIAorIyBpbnNtb2QgczJpby5rbworYy4gVmlldyBsb2cgbWVzc2FnZXMKKyMgZG1lc2cgfCB0YWlsIC00MAorWW91IHdpbGwgc2VlIG1lc3NhZ2VzIHNpbWlsYXIgdG86CitldGgzOiBOZXRlcmlvbiBYZnJhbWUgSSAxMEdiRSBhZGFwdGVyIChyZXYgMyksIFZlcnNpb24gMi4wLjkuMSwgSW50ciB0eXBlIElOVEEKK2V0aDQ6IE5ldGVyaW9uIFhmcmFtZSBJSSAxMEdiRSBhZGFwdGVyIChyZXYgMiksIFZlcnNpb24gMi4wLjkuMSwgSW50ciB0eXBlIElOVEEKK2V0aDQ6IERldmljZSBpcyBvbiA2NCBiaXQgMTMzTUh6IFBDSVgoTTEpIGJ1cworCitUaGUgYWJvdmUgbWVzc2FnZXMgaWRlbnRpZnkgdGhlIGFkYXB0ZXIgdHlwZShYZnJhbWUgSS9JSSksIGFkYXB0ZXIgcmV2aXNpb24sCitkcml2ZXIgdmVyc2lvbiwgaW50ZXJmYWNlIG5hbWUoZXRoMywgZXRoNCksIEludGVycnVwdCB0eXBlKElOVEEsIE1TSSwgTVNJLVgpLgorSW4gY2FzZSBvZiBYZnJhbWUgSUksIHRoZSBQQ0kvUENJLVggYnVzIHdpZHRoIGFuZCBmcmVxdWVuY3kgYXJlIGRpc3BsYXllZAorYXMgd2VsbC4KKworVG8gYXNzb2NpYXRlIGFuIGludGVyZmFjZSB3aXRoIGEgcGh5c2ljYWwgYWRhcHRlciB1c2UgImV0aHRvb2wgLXAgPGV0aFg+Ii4KK1RoZSBjb3JyZXNwb25kaW5nIGFkYXB0ZXIncyBMRUQgd2lsbCBibGluayBtdWx0aXBsZSB0aW1lcy4KKworMy4JRmVhdHVyZXMgc3VwcG9ydGVkOgorYS4gSnVtYm8gZnJhbWVzLiBYZnJhbWUgSS9JSSBzdXBwb3J0cyBNVFUgdXAgdG8gOTYwMCBieXRlcywKK21vZGlmaWFibGUgdXNpbmcgaXAgY29tbWFuZC4KKworYi4gT2ZmbG9hZHMuIFN1cHBvcnRzIGNoZWNrc3VtIG9mZmxvYWQoVENQL1VEUC9JUCkgb24gdHJhbnNtaXQKK2FuZCByZWNlaXZlLCBUU08uCisKK2MuIE11bHRpLWJ1ZmZlciByZWNlaXZlIG1vZGUuIFNjYXR0ZXJpbmcgb2YgcGFja2V0IGFjcm9zcyBtdWx0aXBsZQorYnVmZmVycy4gQ3VycmVudGx5IGRyaXZlciBzdXBwb3J0cyAyLWJ1ZmZlciBtb2RlIHdoaWNoIHlpZWxkcworc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgb24gY2VydGFpbiBwbGF0Zm9ybXMoU0dJIEFsdGl4LAorSUJNIHhTZXJpZXMpLgorCitkLiBNU0kvTVNJLVguIENhbiBiZSBlbmFibGVkIG9uIHBsYXRmb3JtcyB3aGljaCBzdXBwb3J0IHRoaXMgZmVhdHVyZQorKElBNjQsIFhlb24pIHJlc3VsdGluZyBpbiBub3RpY2VhYmxlIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50KHVwIHRvIDclCitvbiBjZXJ0YWluIHBsYXRmb3JtcykuCisKK2UuIFN0YXRpc3RpY3MuIENvbXByZWhlbnNpdmUgTUFDLWxldmVsIGFuZCBzb2Z0d2FyZSBzdGF0aXN0aWNzIGRpc3BsYXllZAordXNpbmcgImV0aHRvb2wgLVMiIG9wdGlvbi4KKworZi4gTXVsdGktRklGTy9SaW5nLiBTdXBwb3J0cyB1cCB0byA4IHRyYW5zbWl0IHF1ZXVlcyBhbmQgcmVjZWl2ZSByaW5ncywKK3dpdGggbXVsdGlwbGUgc3RlZXJpbmcgb3B0aW9ucy4KKworNC4gIENvbW1hbmQgbGluZSBwYXJhbWV0ZXJzCithLiB0eF9maWZvX251bQorTnVtYmVyIG9mIHRyYW5zbWl0IHF1ZXVlcworVmFsaWQgcmFuZ2U6IDEtOAorRGVmYXVsdDogMQorCitiLiByeF9yaW5nX251bQorTnVtYmVyIG9mIHJlY2VpdmUgcmluZ3MKK1ZhbGlkIHJhbmdlOiAxLTgKK0RlZmF1bHQ6IDEKKworYy4gdHhfZmlmb19sZW4KK1NpemUgb2YgZWFjaCB0cmFuc21pdCBxdWV1ZQorVmFsaWQgcmFuZ2U6IFRvdGFsIGxlbmd0aCBvZiBhbGwgcXVldWVzIHNob3VsZCBub3QgZXhjZWVkIDgxOTIKK0RlZmF1bHQ6IDQwOTYKKworZC4gcnhfcmluZ19zeiAKK1NpemUgb2YgZWFjaCByZWNlaXZlIHJpbmcoaW4gNEsgYmxvY2tzKQorVmFsaWQgcmFuZ2U6IExpbWl0ZWQgYnkgbWVtb3J5IG9uIHN5c3RlbQorRGVmYXVsdDogMzAgCisKK2UuIGludHJfdHlwZQorU3BlY2lmaWVzIGludGVycnVwdCB0eXBlLiBQb3NzaWJsZSB2YWx1ZXMgMChJTlRBKSwgMihNU0ktWCkKK1ZhbGlkIHZhbHVlczogMCwgMgorRGVmYXVsdDogMgorCis1LiAgUGVyZm9ybWFuY2Ugc3VnZ2VzdGlvbnMKK0dlbmVyYWw6CithLiBTZXQgTVRVIHRvIG1heGltdW0oOTAwMCBmb3Igc3dpdGNoIHNldHVwLCA5NjAwIGluIGJhY2stdG8tYmFjayBjb25maWd1cmF0aW9uKQorYi4gU2V0IFRDUCB3aW5kb3dzIHNpemUgdG8gb3B0aW1hbCB2YWx1ZS4gCitGb3IgaW5zdGFuY2UsIGZvciBNVFU9MTUwMCBhIHZhbHVlIG9mIDIxMEsgaGFzIGJlZW4gb2JzZXJ2ZWQgdG8gcmVzdWx0IGluIAorZ29vZCBwZXJmb3JtYW5jZS4KKyMgc3lzY3RsIC13IG5ldC5pcHY0LnRjcF9ybWVtPSIyMTAwMDAgMjEwMDAwIDIxMDAwMCIKKyMgc3lzY3RsIC13IG5ldC5pcHY0LnRjcF93bWVtPSIyMTAwMDAgMjEwMDAwIDIxMDAwMCIKK0ZvciBNVFU9OTAwMCwgVENQIHdpbmRvdyBzaXplIG9mIDEwIE1CIGlzIHJlY29tbWVuZGVkLgorIyBzeXNjdGwgLXcgbmV0LmlwdjQudGNwX3JtZW09IjEwMDAwMDAwIDEwMDAwMDAwIDEwMDAwMDAwIgorIyBzeXNjdGwgLXcgbmV0LmlwdjQudGNwX3dtZW09IjEwMDAwMDAwIDEwMDAwMDAwIDEwMDAwMDAwIgorCitUcmFuc21pdCBwZXJmb3JtYW5jZToKK2EuIEJ5IGRlZmF1bHQsIHRoZSBkcml2ZXIgcmVzcGVjdHMgQklPUyBzZXR0aW5ncyBmb3IgUENJIGJ1cyBwYXJhbWV0ZXJzLiAKK0hvd2V2ZXIsIHlvdSBtYXkgd2FudCB0byBleHBlcmltZW50IHdpdGggUENJIGJ1cyBwYXJhbWV0ZXJzIAorbWF4LXNwbGl0LXRyYW5zYWN0aW9ucyhNT1NUKSBhbmQgTU1SQkMgKHVzZSBzZXRwY2kgY29tbWFuZCkuIAorQSBNT1NUIHZhbHVlIG9mIDIgaGFzIGJlZW4gZm91bmQgb3B0aW1hbCBmb3IgT3B0ZXJvbnMgYW5kIDMgZm9yIEl0YW5pdW0uICAKK0l0IGNvdWxkIGJlIGRpZmZlcmVudCBmb3IgeW91ciBoYXJkd2FyZS4gIAorU2V0IE1NUkJDIHRvIDRLKiouCisKK0ZvciBleGFtcGxlIHlvdSBjYW4gc2V0IAorRm9yIG9wdGVyb24KKyNzZXRwY2kgLWQgMTdkNToqIDYyPTFkIAorRm9yIEl0YW5pdW0KKyNzZXRwY2kgLWQgMTdkNToqIDYyPTNkIAorCitGb3IgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIFBDSSByZWdpc3RlcnMsIHBsZWFzZSBzZWUgWGZyYW1lIFVzZXIgR3VpZGUuCisKK2IuIEVuc3VyZSBUcmFuc21pdCBDaGVja3N1bSBvZmZsb2FkIGlzIGVuYWJsZWQuIFVzZSBldGh0b29sIHRvIHNldC92ZXJpZnkgdGhpcyAKK3BhcmFtZXRlci4KK2MuIFR1cm4gb24gVFNPKHVzaW5nICJldGh0b29sIC1LIikKKyMgZXRodG9vbCAtSyA8ZXRoWD4gdHNvIG9uCisKK1JlY2VpdmUgcGVyZm9ybWFuY2U6CithLiBCeSBkZWZhdWx0LCB0aGUgZHJpdmVyIHJlc3BlY3RzIEJJT1Mgc2V0dGluZ3MgZm9yIFBDSSBidXMgcGFyYW1ldGVycy4gCitIb3dldmVyLCB5b3UgbWF5IHdhbnQgdG8gc2V0IFBDSSBsYXRlbmN5IHRpbWVyIHRvIDI0OC4KKyNzZXRwY2kgLWQgMTdkNToqIExBVEVOQ1lfVElNRVI9ZjgKK0ZvciBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgUENJIHJlZ2lzdGVycywgcGxlYXNlIHNlZSBYZnJhbWUgVXNlciBHdWlkZS4KK2IuIFVzZSAyLWJ1ZmZlciBtb2RlLiBUaGlzIHJlc3VsdHMgaW4gbGFyZ2UgcGVyZm9ybWFuY2UgYm9vc3Qgb24KK2NlcnRhaW4gcGxhdGZvcm1zKGVnLiBTR0kgQWx0aXgsIElCTSB4U2VyaWVzKS4KK2MuIEVuc3VyZSBSZWNlaXZlIENoZWNrc3VtIG9mZmxvYWQgaXMgZW5hYmxlZC4gVXNlICJldGh0b29sIC1LIGV0aFgiIGNvbW1hbmQgdG8gCitzZXQvdmVyaWZ5IHRoaXMgb3B0aW9uLgorZC4gRW5hYmxlIE5BUEkgZmVhdHVyZShpbiBrZXJuZWwgY29uZmlndXJhdGlvbiBEZXZpY2UgRHJpdmVycyAtLS0+IE5ldHdvcmsgCitkZXZpY2Ugc3VwcG9ydCAtLS0+ICBFdGhlcm5ldCAoMTAwMDAgTWJpdCkgLS0tPiBTMklPIDEwR2JlIFhmcmFtZSBOSUMpIHRvIAorYnJpbmcgZG93biBDUFUgdXRpbGl6YXRpb24uCisKKyoqIEZvciBBTUQgb3B0ZXJvbiBwbGF0Zm9ybXMgd2l0aCA4MTMxIGNoaXBzZXQsIE1NUkJDPTEgYW5kIE1PU1Q9MSBhcmUgCityZWNvbW1lbmRlZCBhcyBzYWZlIHBhcmFtZXRlcnMuCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHJldmlldyB0aGUgQU1EODEzMSBlcnJhdGEgYXQKK2h0dHA6Ly92aXAuYW1kLmNvbS91cy1lbi9hc3NldHMvY29udGVudF90eXBlL3doaXRlX3BhcGVyc19hbmRfdGVjaF9kb2NzLworMjYzMTBfQU1ELTgxMzFfSHlwZXJUcmFuc3BvcnRfUENJLVhfVHVubmVsX1JldmlzaW9uX0d1aWRlX3Jldl8zXzE4LnBkZgorCis2LiBTdXBwb3J0CitGb3IgZnVydGhlciBzdXBwb3J0IHBsZWFzZSBjb250YWN0IGVpdGhlciB5b3VyIDEwR2JFIFhmcmFtZSBOSUMgdmVuZG9yIChJQk0sIAorSFAsIFNHSSBldGMuKQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NjYWxpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NjYWxpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZjRkYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2NhbGluZy50eHQKQEAgLTAsMCArMSw0NDUgQEAKK1NjYWxpbmcgaW4gdGhlIExpbnV4IE5ldHdvcmtpbmcgU3RhY2sKKworCitJbnRyb2R1Y3Rpb24KKz09PT09PT09PT09PQorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyBhIHNldCBvZiBjb21wbGVtZW50YXJ5IHRlY2huaXF1ZXMgaW4gdGhlIExpbnV4CituZXR3b3JraW5nIHN0YWNrIHRvIGluY3JlYXNlIHBhcmFsbGVsaXNtIGFuZCBpbXByb3ZlIHBlcmZvcm1hbmNlIGZvcgorbXVsdGktcHJvY2Vzc29yIHN5c3RlbXMuCisKK1RoZSBmb2xsb3dpbmcgdGVjaG5vbG9naWVzIGFyZSBkZXNjcmliZWQ6CisKKyAgUlNTOiBSZWNlaXZlIFNpZGUgU2NhbGluZworICBSUFM6IFJlY2VpdmUgUGFja2V0IFN0ZWVyaW5nCisgIFJGUzogUmVjZWl2ZSBGbG93IFN0ZWVyaW5nCisgIEFjY2VsZXJhdGVkIFJlY2VpdmUgRmxvdyBTdGVlcmluZworICBYUFM6IFRyYW5zbWl0IFBhY2tldCBTdGVlcmluZworCisKK1JTUzogUmVjZWl2ZSBTaWRlIFNjYWxpbmcKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworQ29udGVtcG9yYXJ5IE5JQ3Mgc3VwcG9ydCBtdWx0aXBsZSByZWNlaXZlIGFuZCB0cmFuc21pdCBkZXNjcmlwdG9yIHF1ZXVlcworKG11bHRpLXF1ZXVlKS4gT24gcmVjZXB0aW9uLCBhIE5JQyBjYW4gc2VuZCBkaWZmZXJlbnQgcGFja2V0cyB0byBkaWZmZXJlbnQKK3F1ZXVlcyB0byBkaXN0cmlidXRlIHByb2Nlc3NpbmcgYW1vbmcgQ1BVcy4gVGhlIE5JQyBkaXN0cmlidXRlcyBwYWNrZXRzIGJ5CithcHBseWluZyBhIGZpbHRlciB0byBlYWNoIHBhY2tldCB0aGF0IGFzc2lnbnMgaXQgdG8gb25lIG9mIGEgc21hbGwgbnVtYmVyCitvZiBsb2dpY2FsIGZsb3dzLiBQYWNrZXRzIGZvciBlYWNoIGZsb3cgYXJlIHN0ZWVyZWQgdG8gYSBzZXBhcmF0ZSByZWNlaXZlCitxdWV1ZSwgd2hpY2ggaW4gdHVybiBjYW4gYmUgcHJvY2Vzc2VkIGJ5IHNlcGFyYXRlIENQVXMuIFRoaXMgbWVjaGFuaXNtIGlzCitnZW5lcmFsbHkga25vd24gYXMg4oCcUmVjZWl2ZS1zaWRlIFNjYWxpbmfigJ0gKFJTUykuIFRoZSBnb2FsIG9mIFJTUyBhbmQKK3RoZSBvdGhlciBzY2FsaW5nIHRlY2huaXF1ZXMgaXMgdG8gaW5jcmVhc2UgcGVyZm9ybWFuY2UgdW5pZm9ybWx5LgorTXVsdGktcXVldWUgZGlzdHJpYnV0aW9uIGNhbiBhbHNvIGJlIHVzZWQgZm9yIHRyYWZmaWMgcHJpb3JpdGl6YXRpb24sIGJ1dAordGhhdCBpcyBub3QgdGhlIGZvY3VzIG9mIHRoZXNlIHRlY2huaXF1ZXMuCisKK1RoZSBmaWx0ZXIgdXNlZCBpbiBSU1MgaXMgdHlwaWNhbGx5IGEgaGFzaCBmdW5jdGlvbiBvdmVyIHRoZSBuZXR3b3JrCithbmQvb3IgdHJhbnNwb3J0IGxheWVyIGhlYWRlcnMtLSBmb3IgZXhhbXBsZSwgYSA0LXR1cGxlIGhhc2ggb3ZlcgorSVAgYWRkcmVzc2VzIGFuZCBUQ1AgcG9ydHMgb2YgYSBwYWNrZXQuIFRoZSBtb3N0IGNvbW1vbiBoYXJkd2FyZQoraW1wbGVtZW50YXRpb24gb2YgUlNTIHVzZXMgYSAxMjgtZW50cnkgaW5kaXJlY3Rpb24gdGFibGUgd2hlcmUgZWFjaCBlbnRyeQorc3RvcmVzIGEgcXVldWUgbnVtYmVyLiBUaGUgcmVjZWl2ZSBxdWV1ZSBmb3IgYSBwYWNrZXQgaXMgZGV0ZXJtaW5lZAorYnkgbWFza2luZyBvdXQgdGhlIGxvdyBvcmRlciBzZXZlbiBiaXRzIG9mIHRoZSBjb21wdXRlZCBoYXNoIGZvciB0aGUKK3BhY2tldCAodXN1YWxseSBhIFRvZXBsaXR6IGhhc2gpLCB0YWtpbmcgdGhpcyBudW1iZXIgYXMgYSBrZXkgaW50byB0aGUKK2luZGlyZWN0aW9uIHRhYmxlIGFuZCByZWFkaW5nIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlLgorCitTb21lIGFkdmFuY2VkIE5JQ3MgYWxsb3cgc3RlZXJpbmcgcGFja2V0cyB0byBxdWV1ZXMgYmFzZWQgb24KK3Byb2dyYW1tYWJsZSBmaWx0ZXJzLiBGb3IgZXhhbXBsZSwgd2Vic2VydmVyIGJvdW5kIFRDUCBwb3J0IDgwIHBhY2tldHMKK2NhbiBiZSBkaXJlY3RlZCB0byB0aGVpciBvd24gcmVjZWl2ZSBxdWV1ZS4gU3VjaCDigJxuLXR1cGxl4oCdIGZpbHRlcnMgY2FuCitiZSBjb25maWd1cmVkIGZyb20gZXRodG9vbCAoLS1jb25maWctbnR1cGxlKS4KKworPT09PSBSU1MgQ29uZmlndXJhdGlvbgorCitUaGUgZHJpdmVyIGZvciBhIG11bHRpLXF1ZXVlIGNhcGFibGUgTklDIHR5cGljYWxseSBwcm92aWRlcyBhIGtlcm5lbAorbW9kdWxlIHBhcmFtZXRlciBmb3Igc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIGhhcmR3YXJlIHF1ZXVlcyB0bworY29uZmlndXJlLiBJbiB0aGUgYm54MnggZHJpdmVyLCBmb3IgaW5zdGFuY2UsIHRoaXMgcGFyYW1ldGVyIGlzIGNhbGxlZAorbnVtX3F1ZXVlcy4gQSB0eXBpY2FsIFJTUyBjb25maWd1cmF0aW9uIHdvdWxkIGJlIHRvIGhhdmUgb25lIHJlY2VpdmUgcXVldWUKK2ZvciBlYWNoIENQVSBpZiB0aGUgZGV2aWNlIHN1cHBvcnRzIGVub3VnaCBxdWV1ZXMsIG9yIG90aGVyd2lzZSBhdCBsZWFzdAorb25lIGZvciBlYWNoIG1lbW9yeSBkb21haW4sIHdoZXJlIGEgbWVtb3J5IGRvbWFpbiBpcyBhIHNldCBvZiBDUFVzIHRoYXQKK3NoYXJlIGEgcGFydGljdWxhciBtZW1vcnkgbGV2ZWwgKEwxLCBMMiwgTlVNQSBub2RlLCBldGMuKS4KKworVGhlIGluZGlyZWN0aW9uIHRhYmxlIG9mIGFuIFJTUyBkZXZpY2UsIHdoaWNoIHJlc29sdmVzIGEgcXVldWUgYnkgbWFza2VkCitoYXNoLCBpcyB1c3VhbGx5IHByb2dyYW1tZWQgYnkgdGhlIGRyaXZlciBhdCBpbml0aWFsaXphdGlvbi4gVGhlCitkZWZhdWx0IG1hcHBpbmcgaXMgdG8gZGlzdHJpYnV0ZSB0aGUgcXVldWVzIGV2ZW5seSBpbiB0aGUgdGFibGUsIGJ1dCB0aGUKK2luZGlyZWN0aW9uIHRhYmxlIGNhbiBiZSByZXRyaWV2ZWQgYW5kIG1vZGlmaWVkIGF0IHJ1bnRpbWUgdXNpbmcgZXRodG9vbAorY29tbWFuZHMgKC0tc2hvdy1yeGZoLWluZGlyIGFuZCAtLXNldC1yeGZoLWluZGlyKS4gTW9kaWZ5aW5nIHRoZQoraW5kaXJlY3Rpb24gdGFibGUgY291bGQgYmUgZG9uZSB0byBnaXZlIGRpZmZlcmVudCBxdWV1ZXMgZGlmZmVyZW50CityZWxhdGl2ZSB3ZWlnaHRzLgorCis9PSBSU1MgSVJRIENvbmZpZ3VyYXRpb24KKworRWFjaCByZWNlaXZlIHF1ZXVlIGhhcyBhIHNlcGFyYXRlIElSUSBhc3NvY2lhdGVkIHdpdGggaXQuIFRoZSBOSUMgdHJpZ2dlcnMKK3RoaXMgdG8gbm90aWZ5IGEgQ1BVIHdoZW4gbmV3IHBhY2tldHMgYXJyaXZlIG9uIHRoZSBnaXZlbiBxdWV1ZS4gVGhlCitzaWduYWxpbmcgcGF0aCBmb3IgUENJZSBkZXZpY2VzIHVzZXMgbWVzc2FnZSBzaWduYWxlZCBpbnRlcnJ1cHRzIChNU0ktWCksCit0aGF0IGNhbiByb3V0ZSBlYWNoIGludGVycnVwdCB0byBhIHBhcnRpY3VsYXIgQ1BVLiBUaGUgYWN0aXZlIG1hcHBpbmcKK29mIHF1ZXVlcyB0byBJUlFzIGNhbiBiZSBkZXRlcm1pbmVkIGZyb20gL3Byb2MvaW50ZXJydXB0cy4gQnkgZGVmYXVsdCwKK2FuIElSUSBtYXkgYmUgaGFuZGxlZCBvbiBhbnkgQ1BVLiBCZWNhdXNlIGEgbm9uLW5lZ2xpZ2libGUgcGFydCBvZiBwYWNrZXQKK3Byb2Nlc3NpbmcgdGFrZXMgcGxhY2UgaW4gcmVjZWl2ZSBpbnRlcnJ1cHQgaGFuZGxpbmcsIGl0IGlzIGFkdmFudGFnZW91cwordG8gc3ByZWFkIHJlY2VpdmUgaW50ZXJydXB0cyBiZXR3ZWVuIENQVXMuIFRvIG1hbnVhbGx5IGFkanVzdCB0aGUgSVJRCithZmZpbml0eSBvZiBlYWNoIGludGVycnVwdCBzZWUgRG9jdW1lbnRhdGlvbi9JUlEtYWZmaW5pdHkudHh0LiBTb21lIHN5c3RlbXMKK3dpbGwgYmUgcnVubmluZyBpcnFiYWxhbmNlLCBhIGRhZW1vbiB0aGF0IGR5bmFtaWNhbGx5IG9wdGltaXplcyBJUlEKK2Fzc2lnbm1lbnRzIGFuZCBhcyBhIHJlc3VsdCBtYXkgb3ZlcnJpZGUgYW55IG1hbnVhbCBzZXR0aW5ncy4KKworPT0gU3VnZ2VzdGVkIENvbmZpZ3VyYXRpb24KKworUlNTIHNob3VsZCBiZSBlbmFibGVkIHdoZW4gbGF0ZW5jeSBpcyBhIGNvbmNlcm4gb3Igd2hlbmV2ZXIgcmVjZWl2ZQoraW50ZXJydXB0IHByb2Nlc3NpbmcgZm9ybXMgYSBib3R0bGVuZWNrLiBTcHJlYWRpbmcgbG9hZCBiZXR3ZWVuIENQVXMKK2RlY3JlYXNlcyBxdWV1ZSBsZW5ndGguIEZvciBsb3cgbGF0ZW5jeSBuZXR3b3JraW5nLCB0aGUgb3B0aW1hbCBzZXR0aW5nCitpcyB0byBhbGxvY2F0ZSBhcyBtYW55IHF1ZXVlcyBhcyB0aGVyZSBhcmUgQ1BVcyBpbiB0aGUgc3lzdGVtIChvciB0aGUKK05JQyBtYXhpbXVtLCBpZiBsb3dlcikuIFRoZSBtb3N0IGVmZmljaWVudCBoaWdoLXJhdGUgY29uZmlndXJhdGlvbgoraXMgbGlrZWx5IHRoZSBvbmUgd2l0aCB0aGUgc21hbGxlc3QgbnVtYmVyIG9mIHJlY2VpdmUgcXVldWVzIHdoZXJlIG5vCityZWNlaXZlIHF1ZXVlIG92ZXJmbG93cyBkdWUgdG8gYSBzYXR1cmF0ZWQgQ1BVLCBiZWNhdXNlIGluIGRlZmF1bHQKK21vZGUgd2l0aCBpbnRlcnJ1cHQgY29hbGVzY2luZyBlbmFibGVkLCB0aGUgYWdncmVnYXRlIG51bWJlciBvZgoraW50ZXJydXB0cyAoYW5kIHRodXMgd29yaykgZ3Jvd3Mgd2l0aCBlYWNoIGFkZGl0aW9uYWwgcXVldWUuCisKK1Blci1jcHUgbG9hZCBjYW4gYmUgb2JzZXJ2ZWQgdXNpbmcgdGhlIG1wc3RhdCB1dGlsaXR5LCBidXQgbm90ZSB0aGF0IG9uCitwcm9jZXNzb3JzIHdpdGggaHlwZXJ0aHJlYWRpbmcgKEhUKSwgZWFjaCBoeXBlcnRocmVhZCBpcyByZXByZXNlbnRlZCBhcworYSBzZXBhcmF0ZSBDUFUuIEZvciBpbnRlcnJ1cHQgaGFuZGxpbmcsIEhUIGhhcyBzaG93biBubyBiZW5lZml0IGluCitpbml0aWFsIHRlc3RzLCBzbyBsaW1pdCB0aGUgbnVtYmVyIG9mIHF1ZXVlcyB0byB0aGUgbnVtYmVyIG9mIENQVSBjb3JlcworaW4gdGhlIHN5c3RlbS4KKworCitSUFM6IFJlY2VpdmUgUGFja2V0IFN0ZWVyaW5nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlY2VpdmUgUGFja2V0IFN0ZWVyaW5nIChSUFMpIGlzIGxvZ2ljYWxseSBhIHNvZnR3YXJlIGltcGxlbWVudGF0aW9uIG9mCitSU1MuIEJlaW5nIGluIHNvZnR3YXJlLCBpdCBpcyBuZWNlc3NhcmlseSBjYWxsZWQgbGF0ZXIgaW4gdGhlIGRhdGFwYXRoLgorV2hlcmVhcyBSU1Mgc2VsZWN0cyB0aGUgcXVldWUgYW5kIGhlbmNlIENQVSB0aGF0IHdpbGwgcnVuIHRoZSBoYXJkd2FyZQoraW50ZXJydXB0IGhhbmRsZXIsIFJQUyBzZWxlY3RzIHRoZSBDUFUgdG8gcGVyZm9ybSBwcm90b2NvbCBwcm9jZXNzaW5nCithYm92ZSB0aGUgaW50ZXJydXB0IGhhbmRsZXIuIFRoaXMgaXMgYWNjb21wbGlzaGVkIGJ5IHBsYWNpbmcgdGhlIHBhY2tldAorb24gdGhlIGRlc2lyZWQgQ1BV4oCZcyBiYWNrbG9nIHF1ZXVlIGFuZCB3YWtpbmcgdXAgdGhlIENQVSBmb3IgcHJvY2Vzc2luZy4KK1JQUyBoYXMgc29tZSBhZHZhbnRhZ2VzIG92ZXIgUlNTOiAxKSBpdCBjYW4gYmUgdXNlZCB3aXRoIGFueSBOSUMsCisyKSBzb2Z0d2FyZSBmaWx0ZXJzIGNhbiBlYXNpbHkgYmUgYWRkZWQgdG8gaGFzaCBvdmVyIG5ldyBwcm90b2NvbHMsCiszKSBpdCBkb2VzIG5vdCBpbmNyZWFzZSBoYXJkd2FyZSBkZXZpY2UgaW50ZXJydXB0IHJhdGUgKGFsdGhvdWdoIGl0IGRvZXMKK2ludHJvZHVjZSBpbnRlci1wcm9jZXNzb3IgaW50ZXJydXB0cyAoSVBJcykpLgorCitSUFMgaXMgY2FsbGVkIGR1cmluZyBib3R0b20gaGFsZiBvZiB0aGUgcmVjZWl2ZSBpbnRlcnJ1cHQgaGFuZGxlciwgd2hlbgorYSBkcml2ZXIgc2VuZHMgYSBwYWNrZXQgdXAgdGhlIG5ldHdvcmsgc3RhY2sgd2l0aCBuZXRpZl9yeCgpIG9yCituZXRpZl9yZWNlaXZlX3NrYigpLiBUaGVzZSBjYWxsIHRoZSBnZXRfcnBzX2NwdSgpIGZ1bmN0aW9uLCB3aGljaAorc2VsZWN0cyB0aGUgcXVldWUgdGhhdCBzaG91bGQgcHJvY2VzcyBhIHBhY2tldC4KKworVGhlIGZpcnN0IHN0ZXAgaW4gZGV0ZXJtaW5pbmcgdGhlIHRhcmdldCBDUFUgZm9yIFJQUyBpcyB0byBjYWxjdWxhdGUgYQorZmxvdyBoYXNoIG92ZXIgdGhlIHBhY2tldOKAmXMgYWRkcmVzc2VzIG9yIHBvcnRzICgyLXR1cGxlIG9yIDQtdHVwbGUgaGFzaAorZGVwZW5kaW5nIG9uIHRoZSBwcm90b2NvbCkuIFRoaXMgc2VydmVzIGFzIGEgY29uc2lzdGVudCBoYXNoIG9mIHRoZQorYXNzb2NpYXRlZCBmbG93IG9mIHRoZSBwYWNrZXQuIFRoZSBoYXNoIGlzIGVpdGhlciBwcm92aWRlZCBieSBoYXJkd2FyZQorb3Igd2lsbCBiZSBjb21wdXRlZCBpbiB0aGUgc3RhY2suIENhcGFibGUgaGFyZHdhcmUgY2FuIHBhc3MgdGhlIGhhc2ggaW4KK3RoZSByZWNlaXZlIGRlc2NyaXB0b3IgZm9yIHRoZSBwYWNrZXQ7IHRoaXMgd291bGQgdXN1YWxseSBiZSB0aGUgc2FtZQoraGFzaCB1c2VkIGZvciBSU1MgKGUuZy4gY29tcHV0ZWQgVG9lcGxpdHogaGFzaCkuIFRoZSBoYXNoIGlzIHNhdmVkIGluCitza2ItPnJ4X2hhc2ggYW5kIGNhbiBiZSB1c2VkIGVsc2V3aGVyZSBpbiB0aGUgc3RhY2sgYXMgYSBoYXNoIG9mIHRoZQorcGFja2V04oCZcyBmbG93LgorCitFYWNoIHJlY2VpdmUgaGFyZHdhcmUgcXVldWUgaGFzIGFuIGFzc29jaWF0ZWQgbGlzdCBvZiBDUFVzIHRvIHdoaWNoCitSUFMgbWF5IGVucXVldWUgcGFja2V0cyBmb3IgcHJvY2Vzc2luZy4gRm9yIGVhY2ggcmVjZWl2ZWQgcGFja2V0LAorYW4gaW5kZXggaW50byB0aGUgbGlzdCBpcyBjb21wdXRlZCBmcm9tIHRoZSBmbG93IGhhc2ggbW9kdWxvIHRoZSBzaXplCitvZiB0aGUgbGlzdC4gVGhlIGluZGV4ZWQgQ1BVIGlzIHRoZSB0YXJnZXQgZm9yIHByb2Nlc3NpbmcgdGhlIHBhY2tldCwKK2FuZCB0aGUgcGFja2V0IGlzIHF1ZXVlZCB0byB0aGUgdGFpbCBvZiB0aGF0IENQVeKAmXMgYmFja2xvZyBxdWV1ZS4gQXQKK3RoZSBlbmQgb2YgdGhlIGJvdHRvbSBoYWxmIHJvdXRpbmUsIElQSXMgYXJlIHNlbnQgdG8gYW55IENQVXMgZm9yIHdoaWNoCitwYWNrZXRzIGhhdmUgYmVlbiBxdWV1ZWQgdG8gdGhlaXIgYmFja2xvZyBxdWV1ZS4gVGhlIElQSSB3YWtlcyBiYWNrbG9nCitwcm9jZXNzaW5nIG9uIHRoZSByZW1vdGUgQ1BVLCBhbmQgYW55IHF1ZXVlZCBwYWNrZXRzIGFyZSB0aGVuIHByb2Nlc3NlZAordXAgdGhlIG5ldHdvcmtpbmcgc3RhY2suCisKKz09PT0gUlBTIENvbmZpZ3VyYXRpb24KKworUlBTIHJlcXVpcmVzIGEga2VybmVsIGNvbXBpbGVkIHdpdGggdGhlIENPTkZJR19SUFMga2NvbmZpZyBzeW1ib2wgKG9uCitieSBkZWZhdWx0IGZvciBTTVApLiBFdmVuIHdoZW4gY29tcGlsZWQgaW4sIFJQUyByZW1haW5zIGRpc2FibGVkIHVudGlsCitleHBsaWNpdGx5IGNvbmZpZ3VyZWQuIFRoZSBsaXN0IG9mIENQVXMgdG8gd2hpY2ggUlBTIG1heSBmb3J3YXJkIHRyYWZmaWMKK2NhbiBiZSBjb25maWd1cmVkIGZvciBlYWNoIHJlY2VpdmUgcXVldWUgdXNpbmcgYSBzeXNmcyBmaWxlIGVudHJ5OgorCisgL3N5cy9jbGFzcy9uZXQvPGRldj4vcXVldWVzL3J4LTxuPi9ycHNfY3B1cworCitUaGlzIGZpbGUgaW1wbGVtZW50cyBhIGJpdG1hcCBvZiBDUFVzLiBSUFMgaXMgZGlzYWJsZWQgd2hlbiBpdCBpcyB6ZXJvCisodGhlIGRlZmF1bHQpLCBpbiB3aGljaCBjYXNlIHBhY2tldHMgYXJlIHByb2Nlc3NlZCBvbiB0aGUgaW50ZXJydXB0aW5nCitDUFUuIERvY3VtZW50YXRpb24vSVJRLWFmZmluaXR5LnR4dCBleHBsYWlucyBob3cgQ1BVcyBhcmUgYXNzaWduZWQgdG8KK3RoZSBiaXRtYXAuCisKKz09IFN1Z2dlc3RlZCBDb25maWd1cmF0aW9uCisKK0ZvciBhIHNpbmdsZSBxdWV1ZSBkZXZpY2UsIGEgdHlwaWNhbCBSUFMgY29uZmlndXJhdGlvbiB3b3VsZCBiZSB0byBzZXQKK3RoZSBycHNfY3B1cyB0byB0aGUgQ1BVcyBpbiB0aGUgc2FtZSBtZW1vcnkgZG9tYWluIG9mIHRoZSBpbnRlcnJ1cHRpbmcKK0NQVS4gSWYgTlVNQSBsb2NhbGl0eSBpcyBub3QgYW4gaXNzdWUsIHRoaXMgY291bGQgYWxzbyBiZSBhbGwgQ1BVcyBpbgordGhlIHN5c3RlbS4gQXQgaGlnaCBpbnRlcnJ1cHQgcmF0ZSwgaXQgbWlnaHQgYmUgd2lzZSB0byBleGNsdWRlIHRoZQoraW50ZXJydXB0aW5nIENQVSBmcm9tIHRoZSBtYXAgc2luY2UgdGhhdCBhbHJlYWR5IHBlcmZvcm1zIG11Y2ggd29yay4KKworRm9yIGEgbXVsdGktcXVldWUgc3lzdGVtLCBpZiBSU1MgaXMgY29uZmlndXJlZCBzbyB0aGF0IGEgaGFyZHdhcmUKK3JlY2VpdmUgcXVldWUgaXMgbWFwcGVkIHRvIGVhY2ggQ1BVLCB0aGVuIFJQUyBpcyBwcm9iYWJseSByZWR1bmRhbnQKK2FuZCB1bm5lY2Vzc2FyeS4gSWYgdGhlcmUgYXJlIGZld2VyIGhhcmR3YXJlIHF1ZXVlcyB0aGFuIENQVXMsIHRoZW4KK1JQUyBtaWdodCBiZSBiZW5lZmljaWFsIGlmIHRoZSBycHNfY3B1cyBmb3IgZWFjaCBxdWV1ZSBhcmUgdGhlIG9uZXMgdGhhdAorc2hhcmUgdGhlIHNhbWUgbWVtb3J5IGRvbWFpbiBhcyB0aGUgaW50ZXJydXB0aW5nIENQVSBmb3IgdGhhdCBxdWV1ZS4KKworPT09PSBSUFMgRmxvdyBMaW1pdAorCitSUFMgc2NhbGVzIGtlcm5lbCByZWNlaXZlIHByb2Nlc3NpbmcgYWNyb3NzIENQVXMgd2l0aG91dCBpbnRyb2R1Y2luZworcmVvcmRlcmluZy4gVGhlIHRyYWRlLW9mZiB0byBzZW5kaW5nIGFsbCBwYWNrZXRzIGZyb20gdGhlIHNhbWUgZmxvdwordG8gdGhlIHNhbWUgQ1BVIGlzIENQVSBsb2FkIGltYmFsYW5jZSBpZiBmbG93cyB2YXJ5IGluIHBhY2tldCByYXRlLgorSW4gdGhlIGV4dHJlbWUgY2FzZSBhIHNpbmdsZSBmbG93IGRvbWluYXRlcyB0cmFmZmljLiBFc3BlY2lhbGx5IG9uCitjb21tb24gc2VydmVyIHdvcmtsb2FkcyB3aXRoIG1hbnkgY29uY3VycmVudCBjb25uZWN0aW9ucywgc3VjaAorYmVoYXZpb3IgaW5kaWNhdGVzIGEgcHJvYmxlbSBzdWNoIGFzIGEgbWlzY29uZmlndXJhdGlvbiBvciBzcG9vZmVkCitzb3VyY2UgRGVuaWFsIG9mIFNlcnZpY2UgYXR0YWNrLgorCitGbG93IExpbWl0IGlzIGFuIG9wdGlvbmFsIFJQUyBmZWF0dXJlIHRoYXQgcHJpb3JpdGl6ZXMgc21hbGwgZmxvd3MKK2R1cmluZyBDUFUgY29udGVudGlvbiBieSBkcm9wcGluZyBwYWNrZXRzIGZyb20gbGFyZ2UgZmxvd3Mgc2xpZ2h0bHkKK2FoZWFkIG9mIHRob3NlIGZyb20gc21hbGwgZmxvd3MuIEl0IGlzIGFjdGl2ZSBvbmx5IHdoZW4gYW4gUlBTIG9yIFJGUworZGVzdGluYXRpb24gQ1BVIGFwcHJvYWNoZXMgc2F0dXJhdGlvbi4gIE9uY2UgYSBDUFUncyBpbnB1dCBwYWNrZXQKK3F1ZXVlIGV4Y2VlZHMgaGFsZiB0aGUgbWF4aW11bSBxdWV1ZSBsZW5ndGggKGFzIHNldCBieSBzeXNjdGwKK25ldC5jb3JlLm5ldGRldl9tYXhfYmFja2xvZyksIHRoZSBrZXJuZWwgc3RhcnRzIGEgcGVyLWZsb3cgcGFja2V0Citjb3VudCBvdmVyIHRoZSBsYXN0IDI1NiBwYWNrZXRzLiBJZiBhIGZsb3cgZXhjZWVkcyBhIHNldCByYXRpbyAoYnkKK2RlZmF1bHQsIGhhbGYpIG9mIHRoZXNlIHBhY2tldHMgd2hlbiBhIG5ldyBwYWNrZXQgYXJyaXZlcywgdGhlbiB0aGUKK25ldyBwYWNrZXQgaXMgZHJvcHBlZC4gUGFja2V0cyBmcm9tIG90aGVyIGZsb3dzIGFyZSBzdGlsbCBvbmx5Citkcm9wcGVkIG9uY2UgdGhlIGlucHV0IHBhY2tldCBxdWV1ZSByZWFjaGVzIG5ldGRldl9tYXhfYmFja2xvZy4KK05vIHBhY2tldHMgYXJlIGRyb3BwZWQgd2hlbiB0aGUgaW5wdXQgcGFja2V0IHF1ZXVlIGxlbmd0aCBpcyBiZWxvdwordGhlIHRocmVzaG9sZCwgc28gZmxvdyBsaW1pdCBkb2VzIG5vdCBzZXZlciBjb25uZWN0aW9ucyBvdXRyaWdodDoKK2V2ZW4gbGFyZ2UgZmxvd3MgbWFpbnRhaW4gY29ubmVjdGl2aXR5LgorCis9PSBJbnRlcmZhY2UKKworRmxvdyBsaW1pdCBpcyBjb21waWxlZCBpbiBieSBkZWZhdWx0IChDT05GSUdfTkVUX0ZMT1dfTElNSVQpLCBidXQgbm90Cit0dXJuZWQgb24uIEl0IGlzIGltcGxlbWVudGVkIGZvciBlYWNoIENQVSBpbmRlcGVuZGVudGx5ICh0byBhdm9pZCBsb2NrCithbmQgY2FjaGUgY29udGVudGlvbikgYW5kIHRvZ2dsZWQgcGVyIENQVSBieSBzZXR0aW5nIHRoZSByZWxldmFudCBiaXQKK2luIHN5c2N0bCBuZXQuY29yZS5mbG93X2xpbWl0X2NwdV9iaXRtYXAuIEl0IGV4cG9zZXMgdGhlIHNhbWUgQ1BVCitiaXRtYXAgaW50ZXJmYWNlIGFzIHJwc19jcHVzIChzZWUgYWJvdmUpIHdoZW4gY2FsbGVkIGZyb20gcHJvY2ZzOgorCisgL3Byb2Mvc3lzL25ldC9jb3JlL2Zsb3dfbGltaXRfY3B1X2JpdG1hcAorCitQZXItZmxvdyByYXRlIGlzIGNhbGN1bGF0ZWQgYnkgaGFzaGluZyBlYWNoIHBhY2tldCBpbnRvIGEgaGFzaHRhYmxlCitidWNrZXQgYW5kIGluY3JlbWVudGluZyBhIHBlci1idWNrZXQgY291bnRlci4gVGhlIGhhc2ggZnVuY3Rpb24gaXMKK3RoZSBzYW1lIHRoYXQgc2VsZWN0cyBhIENQVSBpbiBSUFMsIGJ1dCBhcyB0aGUgbnVtYmVyIG9mIGJ1Y2tldHMgY2FuCitiZSBtdWNoIGxhcmdlciB0aGFuIHRoZSBudW1iZXIgb2YgQ1BVcywgZmxvdyBsaW1pdCBoYXMgZmluZXItZ3JhaW5lZAoraWRlbnRpZmljYXRpb24gb2YgbGFyZ2UgZmxvd3MgYW5kIGZld2VyIGZhbHNlIHBvc2l0aXZlcy4gVGhlIGRlZmF1bHQKK3RhYmxlIGhhcyA0MDk2IGJ1Y2tldHMuIFRoaXMgdmFsdWUgY2FuIGJlIG1vZGlmaWVkIHRocm91Z2ggc3lzY3RsCisKKyBuZXQuY29yZS5mbG93X2xpbWl0X3RhYmxlX2xlbgorCitUaGUgdmFsdWUgaXMgb25seSBjb25zdWx0ZWQgd2hlbiBhIG5ldyB0YWJsZSBpcyBhbGxvY2F0ZWQuIE1vZGlmeWluZworaXQgZG9lcyBub3QgdXBkYXRlIGFjdGl2ZSB0YWJsZXMuCisKKz09IFN1Z2dlc3RlZCBDb25maWd1cmF0aW9uCisKK0Zsb3cgbGltaXQgaXMgdXNlZnVsIG9uIHN5c3RlbXMgd2l0aCBtYW55IGNvbmN1cnJlbnQgY29ubmVjdGlvbnMsCit3aGVyZSBhIHNpbmdsZSBjb25uZWN0aW9uIHRha2luZyB1cCA1MCUgb2YgYSBDUFUgaW5kaWNhdGVzIGEgcHJvYmxlbS4KK0luIHN1Y2ggZW52aXJvbm1lbnRzLCBlbmFibGUgdGhlIGZlYXR1cmUgb24gYWxsIENQVXMgdGhhdCBoYW5kbGUKK25ldHdvcmsgcnggaW50ZXJydXB0cyAoYXMgc2V0IGluIC9wcm9jL2lycS9OL3NtcF9hZmZpbml0eSkuCisKK1RoZSBmZWF0dXJlIGRlcGVuZHMgb24gdGhlIGlucHV0IHBhY2tldCBxdWV1ZSBsZW5ndGggdG8gZXhjZWVkCit0aGUgZmxvdyBsaW1pdCB0aHJlc2hvbGQgKDUwJSkgKyB0aGUgZmxvdyBoaXN0b3J5IGxlbmd0aCAoMjU2KS4KK1NldHRpbmcgbmV0LmNvcmUubmV0ZGV2X21heF9iYWNrbG9nIHRvIGVpdGhlciAxMDAwIG9yIDEwMDAwCitwZXJmb3JtZWQgd2VsbCBpbiBleHBlcmltZW50cy4KKworCitSRlM6IFJlY2VpdmUgRmxvdyBTdGVlcmluZworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworV2hpbGUgUlBTIHN0ZWVycyBwYWNrZXRzIHNvbGVseSBiYXNlZCBvbiBoYXNoLCBhbmQgdGh1cyBnZW5lcmFsbHkKK3Byb3ZpZGVzIGdvb2QgbG9hZCBkaXN0cmlidXRpb24sIGl0IGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50CithcHBsaWNhdGlvbiBsb2NhbGl0eS4gVGhpcyBpcyBhY2NvbXBsaXNoZWQgYnkgUmVjZWl2ZSBGbG93IFN0ZWVyaW5nCisoUkZTKS4gVGhlIGdvYWwgb2YgUkZTIGlzIHRvIGluY3JlYXNlIGRhdGFjYWNoZSBoaXRyYXRlIGJ5IHN0ZWVyaW5nCitrZXJuZWwgcHJvY2Vzc2luZyBvZiBwYWNrZXRzIHRvIHRoZSBDUFUgd2hlcmUgdGhlIGFwcGxpY2F0aW9uIHRocmVhZAorY29uc3VtaW5nIHRoZSBwYWNrZXQgaXMgcnVubmluZy4gUkZTIHJlbGllcyBvbiB0aGUgc2FtZSBSUFMgbWVjaGFuaXNtcwordG8gZW5xdWV1ZSBwYWNrZXRzIG9udG8gdGhlIGJhY2tsb2cgb2YgYW5vdGhlciBDUFUgYW5kIHRvIHdha2UgdXAgdGhhdAorQ1BVLgorCitJbiBSRlMsIHBhY2tldHMgYXJlIG5vdCBmb3J3YXJkZWQgZGlyZWN0bHkgYnkgdGhlIHZhbHVlIG9mIHRoZWlyIGhhc2gsCitidXQgdGhlIGhhc2ggaXMgdXNlZCBhcyBpbmRleCBpbnRvIGEgZmxvdyBsb29rdXAgdGFibGUuIFRoaXMgdGFibGUgbWFwcworZmxvd3MgdG8gdGhlIENQVXMgd2hlcmUgdGhvc2UgZmxvd3MgYXJlIGJlaW5nIHByb2Nlc3NlZC4gVGhlIGZsb3cgaGFzaAorKHNlZSBSUFMgc2VjdGlvbiBhYm92ZSkgaXMgdXNlZCB0byBjYWxjdWxhdGUgdGhlIGluZGV4IGludG8gdGhpcyB0YWJsZS4KK1RoZSBDUFUgcmVjb3JkZWQgaW4gZWFjaCBlbnRyeSBpcyB0aGUgb25lIHdoaWNoIGxhc3QgcHJvY2Vzc2VkIHRoZSBmbG93LgorSWYgYW4gZW50cnkgZG9lcyBub3QgaG9sZCBhIHZhbGlkIENQVSwgdGhlbiBwYWNrZXRzIG1hcHBlZCB0byB0aGF0IGVudHJ5CithcmUgc3RlZXJlZCB1c2luZyBwbGFpbiBSUFMuIE11bHRpcGxlIHRhYmxlIGVudHJpZXMgbWF5IHBvaW50IHRvIHRoZQorc2FtZSBDUFUuIEluZGVlZCwgd2l0aCBtYW55IGZsb3dzIGFuZCBmZXcgQ1BVcywgaXQgaXMgdmVyeSBsaWtlbHkgdGhhdAorYSBzaW5nbGUgYXBwbGljYXRpb24gdGhyZWFkIGhhbmRsZXMgZmxvd3Mgd2l0aCBtYW55IGRpZmZlcmVudCBmbG93IGhhc2hlcy4KKworcnBzX3NvY2tfZmxvd190YWJsZSBpcyBhIGdsb2JhbCBmbG93IHRhYmxlIHRoYXQgY29udGFpbnMgdGhlICpkZXNpcmVkKiBDUFUKK2ZvciBmbG93czogdGhlIENQVSB0aGF0IGlzIGN1cnJlbnRseSBwcm9jZXNzaW5nIHRoZSBmbG93IGluIHVzZXJzcGFjZS4KK0VhY2ggdGFibGUgdmFsdWUgaXMgYSBDUFUgaW5kZXggdGhhdCBpcyB1cGRhdGVkIGR1cmluZyBjYWxscyB0byByZWN2bXNnCithbmQgc2VuZG1zZyAoc3BlY2lmaWNhbGx5LCBpbmV0X3JlY3Ztc2coKSwgaW5ldF9zZW5kbXNnKCksIGluZXRfc2VuZHBhZ2UoKQorYW5kIHRjcF9zcGxpY2VfcmVhZCgpKS4KKworV2hlbiB0aGUgc2NoZWR1bGVyIG1vdmVzIGEgdGhyZWFkIHRvIGEgbmV3IENQVSB3aGlsZSBpdCBoYXMgb3V0c3RhbmRpbmcKK3JlY2VpdmUgcGFja2V0cyBvbiB0aGUgb2xkIENQVSwgcGFja2V0cyBtYXkgYXJyaXZlIG91dCBvZiBvcmRlci4gVG8KK2F2b2lkIHRoaXMsIFJGUyB1c2VzIGEgc2Vjb25kIGZsb3cgdGFibGUgdG8gdHJhY2sgb3V0c3RhbmRpbmcgcGFja2V0cworZm9yIGVhY2ggZmxvdzogcnBzX2Rldl9mbG93X3RhYmxlIGlzIGEgdGFibGUgc3BlY2lmaWMgdG8gZWFjaCBoYXJkd2FyZQorcmVjZWl2ZSBxdWV1ZSBvZiBlYWNoIGRldmljZS4gRWFjaCB0YWJsZSB2YWx1ZSBzdG9yZXMgYSBDUFUgaW5kZXggYW5kIGEKK2NvdW50ZXIuIFRoZSBDUFUgaW5kZXggcmVwcmVzZW50cyB0aGUgKmN1cnJlbnQqIENQVSBvbnRvIHdoaWNoIHBhY2tldHMKK2ZvciB0aGlzIGZsb3cgYXJlIGVucXVldWVkIGZvciBmdXJ0aGVyIGtlcm5lbCBwcm9jZXNzaW5nLiBJZGVhbGx5LCBrZXJuZWwKK2FuZCB1c2Vyc3BhY2UgcHJvY2Vzc2luZyBvY2N1ciBvbiB0aGUgc2FtZSBDUFUsIGFuZCBoZW5jZSB0aGUgQ1BVIGluZGV4CitpbiBib3RoIHRhYmxlcyBpcyBpZGVudGljYWwuIFRoaXMgaXMgbGlrZWx5IGZhbHNlIGlmIHRoZSBzY2hlZHVsZXIgaGFzCityZWNlbnRseSBtaWdyYXRlZCBhIHVzZXJzcGFjZSB0aHJlYWQgd2hpbGUgdGhlIGtlcm5lbCBzdGlsbCBoYXMgcGFja2V0cworZW5xdWV1ZWQgZm9yIGtlcm5lbCBwcm9jZXNzaW5nIG9uIHRoZSBvbGQgQ1BVLgorCitUaGUgY291bnRlciBpbiBycHNfZGV2X2Zsb3dfdGFibGUgdmFsdWVzIHJlY29yZHMgdGhlIGxlbmd0aCBvZiB0aGUgY3VycmVudAorQ1BVJ3MgYmFja2xvZyB3aGVuIGEgcGFja2V0IGluIHRoaXMgZmxvdyB3YXMgbGFzdCBlbnF1ZXVlZC4gRWFjaCBiYWNrbG9nCitxdWV1ZSBoYXMgYSBoZWFkIGNvdW50ZXIgdGhhdCBpcyBpbmNyZW1lbnRlZCBvbiBkZXF1ZXVlLiBBIHRhaWwgY291bnRlcgoraXMgY29tcHV0ZWQgYXMgaGVhZCBjb3VudGVyICsgcXVldWUgbGVuZ3RoLiBJbiBvdGhlciB3b3JkcywgdGhlIGNvdW50ZXIKK2luIHJwc19kZXZfZmxvd1tpXSByZWNvcmRzIHRoZSBsYXN0IGVsZW1lbnQgaW4gZmxvdyBpIHRoYXQgaGFzCitiZWVuIGVucXVldWVkIG9udG8gdGhlIGN1cnJlbnRseSBkZXNpZ25hdGVkIENQVSBmb3IgZmxvdyBpIChvZiBjb3Vyc2UsCitlbnRyeSBpIGlzIGFjdHVhbGx5IHNlbGVjdGVkIGJ5IGhhc2ggYW5kIG11bHRpcGxlIGZsb3dzIG1heSBoYXNoIHRvIHRoZQorc2FtZSBlbnRyeSBpKS4KKworQW5kIG5vdyB0aGUgdHJpY2sgZm9yIGF2b2lkaW5nIG91dCBvZiBvcmRlciBwYWNrZXRzOiB3aGVuIHNlbGVjdGluZyB0aGUKK0NQVSBmb3IgcGFja2V0IHByb2Nlc3NpbmcgKGZyb20gZ2V0X3Jwc19jcHUoKSkgdGhlIHJwc19zb2NrX2Zsb3cgdGFibGUKK2FuZCB0aGUgcnBzX2Rldl9mbG93IHRhYmxlIG9mIHRoZSBxdWV1ZSB0aGF0IHRoZSBwYWNrZXQgd2FzIHJlY2VpdmVkIG9uCithcmUgY29tcGFyZWQuIElmIHRoZSBkZXNpcmVkIENQVSBmb3IgdGhlIGZsb3cgKGZvdW5kIGluIHRoZQorcnBzX3NvY2tfZmxvdyB0YWJsZSkgbWF0Y2hlcyB0aGUgY3VycmVudCBDUFUgKGZvdW5kIGluIHRoZSBycHNfZGV2X2Zsb3cKK3RhYmxlKSwgdGhlIHBhY2tldCBpcyBlbnF1ZXVlZCBvbnRvIHRoYXQgQ1BV4oCZcyBiYWNrbG9nLiBJZiB0aGV5IGRpZmZlciwKK3RoZSBjdXJyZW50IENQVSBpcyB1cGRhdGVkIHRvIG1hdGNoIHRoZSBkZXNpcmVkIENQVSBpZiBvbmUgb2YgdGhlCitmb2xsb3dpbmcgaXMgdHJ1ZToKKworLSBUaGUgY3VycmVudCBDUFUncyBxdWV1ZSBoZWFkIGNvdW50ZXIgPj0gdGhlIHJlY29yZGVkIHRhaWwgY291bnRlcgorICB2YWx1ZSBpbiBycHNfZGV2X2Zsb3dbaV0KKy0gVGhlIGN1cnJlbnQgQ1BVIGlzIHVuc2V0ICg+PSBucl9jcHVfaWRzKQorLSBUaGUgY3VycmVudCBDUFUgaXMgb2ZmbGluZQorCitBZnRlciB0aGlzIGNoZWNrLCB0aGUgcGFja2V0IGlzIHNlbnQgdG8gdGhlIChwb3NzaWJseSB1cGRhdGVkKSBjdXJyZW50CitDUFUuIFRoZXNlIHJ1bGVzIGFpbSB0byBlbnN1cmUgdGhhdCBhIGZsb3cgb25seSBtb3ZlcyB0byBhIG5ldyBDUFUgd2hlbgordGhlcmUgYXJlIG5vIHBhY2tldHMgb3V0c3RhbmRpbmcgb24gdGhlIG9sZCBDUFUsIGFzIHRoZSBvdXRzdGFuZGluZworcGFja2V0cyBjb3VsZCBhcnJpdmUgbGF0ZXIgdGhhbiB0aG9zZSBhYm91dCB0byBiZSBwcm9jZXNzZWQgb24gdGhlIG5ldworQ1BVLgorCis9PT09IFJGUyBDb25maWd1cmF0aW9uCisKK1JGUyBpcyBvbmx5IGF2YWlsYWJsZSBpZiB0aGUga2NvbmZpZyBzeW1ib2wgQ09ORklHX1JQUyBpcyBlbmFibGVkIChvbgorYnkgZGVmYXVsdCBmb3IgU01QKS4gVGhlIGZ1bmN0aW9uYWxpdHkgcmVtYWlucyBkaXNhYmxlZCB1bnRpbCBleHBsaWNpdGx5Citjb25maWd1cmVkLiBUaGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGdsb2JhbCBmbG93IHRhYmxlIGlzIHNldCB0aHJvdWdoOgorCisgL3Byb2Mvc3lzL25ldC9jb3JlL3Jwc19zb2NrX2Zsb3dfZW50cmllcworCitUaGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIHBlci1xdWV1ZSBmbG93IHRhYmxlIGFyZSBzZXQgdGhyb3VnaDoKKworIC9zeXMvY2xhc3MvbmV0LzxkZXY+L3F1ZXVlcy9yeC08bj4vcnBzX2Zsb3dfY250CisKKz09IFN1Z2dlc3RlZCBDb25maWd1cmF0aW9uCisKK0JvdGggb2YgdGhlc2UgbmVlZCB0byBiZSBzZXQgYmVmb3JlIFJGUyBpcyBlbmFibGVkIGZvciBhIHJlY2VpdmUgcXVldWUuCitWYWx1ZXMgZm9yIGJvdGggYXJlIHJvdW5kZWQgdXAgdG8gdGhlIG5lYXJlc3QgcG93ZXIgb2YgdHdvLiBUaGUKK3N1Z2dlc3RlZCBmbG93IGNvdW50IGRlcGVuZHMgb24gdGhlIGV4cGVjdGVkIG51bWJlciBvZiBhY3RpdmUgY29ubmVjdGlvbnMKK2F0IGFueSBnaXZlbiB0aW1lLCB3aGljaCBtYXkgYmUgc2lnbmlmaWNhbnRseSBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiBvcGVuCitjb25uZWN0aW9ucy4gV2UgaGF2ZSBmb3VuZCB0aGF0IGEgdmFsdWUgb2YgMzI3NjggZm9yIHJwc19zb2NrX2Zsb3dfZW50cmllcword29ya3MgZmFpcmx5IHdlbGwgb24gYSBtb2RlcmF0ZWx5IGxvYWRlZCBzZXJ2ZXIuCisKK0ZvciBhIHNpbmdsZSBxdWV1ZSBkZXZpY2UsIHRoZSBycHNfZmxvd19jbnQgdmFsdWUgZm9yIHRoZSBzaW5nbGUgcXVldWUKK3dvdWxkIG5vcm1hbGx5IGJlIGNvbmZpZ3VyZWQgdG8gdGhlIHNhbWUgdmFsdWUgYXMgcnBzX3NvY2tfZmxvd19lbnRyaWVzLgorRm9yIGEgbXVsdGktcXVldWUgZGV2aWNlLCB0aGUgcnBzX2Zsb3dfY250IGZvciBlYWNoIHF1ZXVlIG1pZ2h0IGJlCitjb25maWd1cmVkIGFzIHJwc19zb2NrX2Zsb3dfZW50cmllcyAvIE4sIHdoZXJlIE4gaXMgdGhlIG51bWJlciBvZgorcXVldWVzLiBTbyBmb3IgaW5zdGFuY2UsIGlmIHJwc19zb2NrX2Zsb3dfZW50cmllcyBpcyBzZXQgdG8gMzI3NjggYW5kIHRoZXJlCithcmUgMTYgY29uZmlndXJlZCByZWNlaXZlIHF1ZXVlcywgcnBzX2Zsb3dfY250IGZvciBlYWNoIHF1ZXVlIG1pZ2h0IGJlCitjb25maWd1cmVkIGFzIDIwNDguCisKKworQWNjZWxlcmF0ZWQgUkZTCis9PT09PT09PT09PT09PT0KKworQWNjZWxlcmF0ZWQgUkZTIGlzIHRvIFJGUyB3aGF0IFJTUyBpcyB0byBSUFM6IGEgaGFyZHdhcmUtYWNjZWxlcmF0ZWQgbG9hZAorYmFsYW5jaW5nIG1lY2hhbmlzbSB0aGF0IHVzZXMgc29mdCBzdGF0ZSB0byBzdGVlciBmbG93cyBiYXNlZCBvbiB3aGVyZQordGhlIGFwcGxpY2F0aW9uIHRocmVhZCBjb25zdW1pbmcgdGhlIHBhY2tldHMgb2YgZWFjaCBmbG93IGlzIHJ1bm5pbmcuCitBY2NlbGVyYXRlZCBSRlMgc2hvdWxkIHBlcmZvcm0gYmV0dGVyIHRoYW4gUkZTIHNpbmNlIHBhY2tldHMgYXJlIHNlbnQKK2RpcmVjdGx5IHRvIGEgQ1BVIGxvY2FsIHRvIHRoZSB0aHJlYWQgY29uc3VtaW5nIHRoZSBkYXRhLiBUaGUgdGFyZ2V0IENQVQord2lsbCBlaXRoZXIgYmUgdGhlIHNhbWUgQ1BVIHdoZXJlIHRoZSBhcHBsaWNhdGlvbiBydW5zLCBvciBhdCBsZWFzdCBhIENQVQord2hpY2ggaXMgbG9jYWwgdG8gdGhlIGFwcGxpY2F0aW9uIHRocmVhZOKAmXMgQ1BVIGluIHRoZSBjYWNoZSBoaWVyYXJjaHkuCisKK1RvIGVuYWJsZSBhY2NlbGVyYXRlZCBSRlMsIHRoZSBuZXR3b3JraW5nIHN0YWNrIGNhbGxzIHRoZQorbmRvX3J4X2Zsb3dfc3RlZXIgZHJpdmVyIGZ1bmN0aW9uIHRvIGNvbW11bmljYXRlIHRoZSBkZXNpcmVkIGhhcmR3YXJlCitxdWV1ZSBmb3IgcGFja2V0cyBtYXRjaGluZyBhIHBhcnRpY3VsYXIgZmxvdy4gVGhlIG5ldHdvcmsgc3RhY2sKK2F1dG9tYXRpY2FsbHkgY2FsbHMgdGhpcyBmdW5jdGlvbiBldmVyeSB0aW1lIGEgZmxvdyBlbnRyeSBpbgorcnBzX2Rldl9mbG93X3RhYmxlIGlzIHVwZGF0ZWQuIFRoZSBkcml2ZXIgaW4gdHVybiB1c2VzIGEgZGV2aWNlIHNwZWNpZmljCittZXRob2QgdG8gcHJvZ3JhbSB0aGUgTklDIHRvIHN0ZWVyIHRoZSBwYWNrZXRzLgorCitUaGUgaGFyZHdhcmUgcXVldWUgZm9yIGEgZmxvdyBpcyBkZXJpdmVkIGZyb20gdGhlIENQVSByZWNvcmRlZCBpbgorcnBzX2Rldl9mbG93X3RhYmxlLiBUaGUgc3RhY2sgY29uc3VsdHMgYSBDUFUgdG8gaGFyZHdhcmUgcXVldWUgbWFwIHdoaWNoCitpcyBtYWludGFpbmVkIGJ5IHRoZSBOSUMgZHJpdmVyLiBUaGlzIGlzIGFuIGF1dG8tZ2VuZXJhdGVkIHJldmVyc2UgbWFwIG9mCit0aGUgSVJRIGFmZmluaXR5IHRhYmxlIHNob3duIGJ5IC9wcm9jL2ludGVycnVwdHMuIERyaXZlcnMgY2FuIHVzZQorZnVuY3Rpb25zIGluIHRoZSBjcHVfcm1hcCAo4oCcQ1BVIGFmZmluaXR5IHJldmVyc2UgbWFw4oCdKSBrZXJuZWwgbGlicmFyeQordG8gcG9wdWxhdGUgdGhlIG1hcC4gRm9yIGVhY2ggQ1BVLCB0aGUgY29ycmVzcG9uZGluZyBxdWV1ZSBpbiB0aGUgbWFwIGlzCitzZXQgdG8gYmUgb25lIHdob3NlIHByb2Nlc3NpbmcgQ1BVIGlzIGNsb3Nlc3QgaW4gY2FjaGUgbG9jYWxpdHkuCisKKz09PT0gQWNjZWxlcmF0ZWQgUkZTIENvbmZpZ3VyYXRpb24KKworQWNjZWxlcmF0ZWQgUkZTIGlzIG9ubHkgYXZhaWxhYmxlIGlmIHRoZSBrZXJuZWwgaXMgY29tcGlsZWQgd2l0aAorQ09ORklHX1JGU19BQ0NFTCBhbmQgc3VwcG9ydCBpcyBwcm92aWRlZCBieSB0aGUgTklDIGRldmljZSBhbmQgZHJpdmVyLgorSXQgYWxzbyByZXF1aXJlcyB0aGF0IG50dXBsZSBmaWx0ZXJpbmcgaXMgZW5hYmxlZCB2aWEgZXRodG9vbC4gVGhlIG1hcAorb2YgQ1BVIHRvIHF1ZXVlcyBpcyBhdXRvbWF0aWNhbGx5IGRlZHVjZWQgZnJvbSB0aGUgSVJRIGFmZmluaXRpZXMKK2NvbmZpZ3VyZWQgZm9yIGVhY2ggcmVjZWl2ZSBxdWV1ZSBieSB0aGUgZHJpdmVyLCBzbyBubyBhZGRpdGlvbmFsCitjb25maWd1cmF0aW9uIHNob3VsZCBiZSBuZWNlc3NhcnkuCisKKz09IFN1Z2dlc3RlZCBDb25maWd1cmF0aW9uCisKK1RoaXMgdGVjaG5pcXVlIHNob3VsZCBiZSBlbmFibGVkIHdoZW5ldmVyIG9uZSB3YW50cyB0byB1c2UgUkZTIGFuZCB0aGUKK05JQyBzdXBwb3J0cyBoYXJkd2FyZSBhY2NlbGVyYXRpb24uCisKK1hQUzogVHJhbnNtaXQgUGFja2V0IFN0ZWVyaW5nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUcmFuc21pdCBQYWNrZXQgU3RlZXJpbmcgaXMgYSBtZWNoYW5pc20gZm9yIGludGVsbGlnZW50bHkgc2VsZWN0aW5nCit3aGljaCB0cmFuc21pdCBxdWV1ZSB0byB1c2Ugd2hlbiB0cmFuc21pdHRpbmcgYSBwYWNrZXQgb24gYSBtdWx0aS1xdWV1ZQorZGV2aWNlLiBUbyBhY2NvbXBsaXNoIHRoaXMsIGEgbWFwcGluZyBmcm9tIENQVSB0byBoYXJkd2FyZSBxdWV1ZShzKSBpcworcmVjb3JkZWQuIFRoZSBnb2FsIG9mIHRoaXMgbWFwcGluZyBpcyB1c3VhbGx5IHRvIGFzc2lnbiBxdWV1ZXMKK2V4Y2x1c2l2ZWx5IHRvIGEgc3Vic2V0IG9mIENQVXMsIHdoZXJlIHRoZSB0cmFuc21pdCBjb21wbGV0aW9ucyBmb3IKK3RoZXNlIHF1ZXVlcyBhcmUgcHJvY2Vzc2VkIG9uIGEgQ1BVIHdpdGhpbiB0aGlzIHNldC4gVGhpcyBjaG9pY2UKK3Byb3ZpZGVzIHR3byBiZW5lZml0cy4gRmlyc3QsIGNvbnRlbnRpb24gb24gdGhlIGRldmljZSBxdWV1ZSBsb2NrIGlzCitzaWduaWZpY2FudGx5IHJlZHVjZWQgc2luY2UgZmV3ZXIgQ1BVcyBjb250ZW5kIGZvciB0aGUgc2FtZSBxdWV1ZQorKGNvbnRlbnRpb24gY2FuIGJlIGVsaW1pbmF0ZWQgY29tcGxldGVseSBpZiBlYWNoIENQVSBoYXMgaXRzIG93bgordHJhbnNtaXQgcXVldWUpLiBTZWNvbmRseSwgY2FjaGUgbWlzcyByYXRlIG9uIHRyYW5zbWl0IGNvbXBsZXRpb24gaXMKK3JlZHVjZWQsIGluIHBhcnRpY3VsYXIgZm9yIGRhdGEgY2FjaGUgbGluZXMgdGhhdCBob2xkIHRoZSBza19idWZmCitzdHJ1Y3R1cmVzLgorCitYUFMgaXMgY29uZmlndXJlZCBwZXIgdHJhbnNtaXQgcXVldWUgYnkgc2V0dGluZyBhIGJpdG1hcCBvZiBDUFVzIHRoYXQKK21heSB1c2UgdGhhdCBxdWV1ZSB0byB0cmFuc21pdC4gVGhlIHJldmVyc2UgbWFwcGluZywgZnJvbSBDUFVzIHRvCit0cmFuc21pdCBxdWV1ZXMsIGlzIGNvbXB1dGVkIGFuZCBtYWludGFpbmVkIGZvciBlYWNoIG5ldHdvcmsgZGV2aWNlLgorV2hlbiB0cmFuc21pdHRpbmcgdGhlIGZpcnN0IHBhY2tldCBpbiBhIGZsb3csIHRoZSBmdW5jdGlvbgorZ2V0X3hwc19xdWV1ZSgpIGlzIGNhbGxlZCB0byBzZWxlY3QgYSBxdWV1ZS4gVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBJRAorb2YgdGhlIHJ1bm5pbmcgQ1BVIGFzIGEga2V5IGludG8gdGhlIENQVS10by1xdWV1ZSBsb29rdXAgdGFibGUuIElmIHRoZQorSUQgbWF0Y2hlcyBhIHNpbmdsZSBxdWV1ZSwgdGhhdCBpcyB1c2VkIGZvciB0cmFuc21pc3Npb24uIElmIG11bHRpcGxlCitxdWV1ZXMgbWF0Y2gsIG9uZSBpcyBzZWxlY3RlZCBieSB1c2luZyB0aGUgZmxvdyBoYXNoIHRvIGNvbXB1dGUgYW4gaW5kZXgKK2ludG8gdGhlIHNldC4KKworVGhlIHF1ZXVlIGNob3NlbiBmb3IgdHJhbnNtaXR0aW5nIGEgcGFydGljdWxhciBmbG93IGlzIHNhdmVkIGluIHRoZQorY29ycmVzcG9uZGluZyBzb2NrZXQgc3RydWN0dXJlIGZvciB0aGUgZmxvdyAoZS5nLiBhIFRDUCBjb25uZWN0aW9uKS4KK1RoaXMgdHJhbnNtaXQgcXVldWUgaXMgdXNlZCBmb3Igc3Vic2VxdWVudCBwYWNrZXRzIHNlbnQgb24gdGhlIGZsb3cgdG8KK3ByZXZlbnQgb3V0IG9mIG9yZGVyIChvb28pIHBhY2tldHMuIFRoZSBjaG9pY2UgYWxzbyBhbW9ydGl6ZXMgdGhlIGNvc3QKK29mIGNhbGxpbmcgZ2V0X3hwc19xdWV1ZXMoKSBvdmVyIGFsbCBwYWNrZXRzIGluIHRoZSBmbG93LiBUbyBhdm9pZAorb29vIHBhY2tldHMsIHRoZSBxdWV1ZSBmb3IgYSBmbG93IGNhbiBzdWJzZXF1ZW50bHkgb25seSBiZSBjaGFuZ2VkIGlmCitza2ItPm9vb19va2F5IGlzIHNldCBmb3IgYSBwYWNrZXQgaW4gdGhlIGZsb3cuIFRoaXMgZmxhZyBpbmRpY2F0ZXMgdGhhdAordGhlcmUgYXJlIG5vIG91dHN0YW5kaW5nIHBhY2tldHMgaW4gdGhlIGZsb3csIHNvIHRoZSB0cmFuc21pdCBxdWV1ZSBjYW4KK2NoYW5nZSB3aXRob3V0IHRoZSByaXNrIG9mIGdlbmVyYXRpbmcgb3V0IG9mIG9yZGVyIHBhY2tldHMuIFRoZQordHJhbnNwb3J0IGxheWVyIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIG9vb19va2F5IGFwcHJvcHJpYXRlbHkuIFRDUCwKK2ZvciBpbnN0YW5jZSwgc2V0cyB0aGUgZmxhZyB3aGVuIGFsbCBkYXRhIGZvciBhIGNvbm5lY3Rpb24gaGFzIGJlZW4KK2Fja25vd2xlZGdlZC4KKworPT09PSBYUFMgQ29uZmlndXJhdGlvbgorCitYUFMgaXMgb25seSBhdmFpbGFibGUgaWYgdGhlIGtjb25maWcgc3ltYm9sIENPTkZJR19YUFMgaXMgZW5hYmxlZCAob24gYnkKK2RlZmF1bHQgZm9yIFNNUCkuIFRoZSBmdW5jdGlvbmFsaXR5IHJlbWFpbnMgZGlzYWJsZWQgdW50aWwgZXhwbGljaXRseQorY29uZmlndXJlZC4gVG8gZW5hYmxlIFhQUywgdGhlIGJpdG1hcCBvZiBDUFVzIHRoYXQgbWF5IHVzZSBhIHRyYW5zbWl0CitxdWV1ZSBpcyBjb25maWd1cmVkIHVzaW5nIHRoZSBzeXNmcyBmaWxlIGVudHJ5OgorCisvc3lzL2NsYXNzL25ldC88ZGV2Pi9xdWV1ZXMvdHgtPG4+L3hwc19jcHVzCisKKz09IFN1Z2dlc3RlZCBDb25maWd1cmF0aW9uCisKK0ZvciBhIG5ldHdvcmsgZGV2aWNlIHdpdGggYSBzaW5nbGUgdHJhbnNtaXNzaW9uIHF1ZXVlLCBYUFMgY29uZmlndXJhdGlvbgoraGFzIG5vIGVmZmVjdCwgc2luY2UgdGhlcmUgaXMgbm8gY2hvaWNlIGluIHRoaXMgY2FzZS4gSW4gYSBtdWx0aS1xdWV1ZQorc3lzdGVtLCBYUFMgaXMgcHJlZmVyYWJseSBjb25maWd1cmVkIHNvIHRoYXQgZWFjaCBDUFUgbWFwcyBvbnRvIG9uZSBxdWV1ZS4KK0lmIHRoZXJlIGFyZSBhcyBtYW55IHF1ZXVlcyBhcyB0aGVyZSBhcmUgQ1BVcyBpbiB0aGUgc3lzdGVtLCB0aGVuIGVhY2gKK3F1ZXVlIGNhbiBhbHNvIG1hcCBvbnRvIG9uZSBDUFUsIHJlc3VsdGluZyBpbiBleGNsdXNpdmUgcGFpcmluZ3MgdGhhdAorZXhwZXJpZW5jZSBubyBjb250ZW50aW9uLiBJZiB0aGVyZSBhcmUgZmV3ZXIgcXVldWVzIHRoYW4gQ1BVcywgdGhlbiB0aGUKK2Jlc3QgQ1BVcyB0byBzaGFyZSBhIGdpdmVuIHF1ZXVlIGFyZSBwcm9iYWJseSB0aG9zZSB0aGF0IHNoYXJlIHRoZSBjYWNoZQord2l0aCB0aGUgQ1BVIHRoYXQgcHJvY2Vzc2VzIHRyYW5zbWl0IGNvbXBsZXRpb25zIGZvciB0aGF0IHF1ZXVlCisodHJhbnNtaXQgaW50ZXJydXB0cykuCisKK1BlciBUWCBRdWV1ZSByYXRlIGxpbWl0YXRpb246Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGVzZSBhcmUgcmF0ZS1saW1pdGF0aW9uIG1lY2hhbmlzbXMgaW1wbGVtZW50ZWQgYnkgSFcsIHdoZXJlIGN1cnJlbnRseQorYSBtYXgtcmF0ZSBhdHRyaWJ1dGUgaXMgc3VwcG9ydGVkLCBieSBzZXR0aW5nIGEgTWJwcyB2YWx1ZSB0bworCisvc3lzL2NsYXNzL25ldC88ZGV2Pi9xdWV1ZXMvdHgtPG4+L3R4X21heHJhdGUKKworQSB2YWx1ZSBvZiB6ZXJvIG1lYW5zIGRpc2FibGVkLCBhbmQgdGhpcyBpcyB0aGUgZGVmYXVsdC4KKworRnVydGhlciBJbmZvcm1hdGlvbgorPT09PT09PT09PT09PT09PT09PQorUlBTIGFuZCBSRlMgd2VyZSBpbnRyb2R1Y2VkIGluIGtlcm5lbCAyLjYuMzUuIFhQUyB3YXMgaW5jb3Jwb3JhdGVkIGludG8KKzIuNi4zOC4gT3JpZ2luYWwgcGF0Y2hlcyB3ZXJlIHN1Ym1pdHRlZCBieSBUb20gSGVyYmVydAorKHRoZXJiZXJ0QGdvb2dsZS5jb20pCisKK0FjY2VsZXJhdGVkIFJGUyB3YXMgaW50cm9kdWNlZCBpbiAyLjYuMzUuIE9yaWdpbmFsIHBhdGNoZXMgd2VyZQorc3VibWl0dGVkIGJ5IEJlbiBIdXRjaGluZ3MgKGJ3aEBrZXJuZWwub3JnKQorCitBdXRob3JzOgorVG9tIEhlcmJlcnQgKHRoZXJiZXJ0QGdvb2dsZS5jb20pCitXaWxsZW0gZGUgQnJ1aWpuICh3aWxsZW1iQGdvb2dsZS5jb20pCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2N0cC50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2N0cC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdiODEwYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9zY3RwLnR4dApAQCAtMCwwICsxLDM1IEBACitMaW51eCBLZXJuZWwgU0NUUCAKKworVGhpcyBpcyB0aGUgY3VycmVudCBCRVRBIHJlbGVhc2Ugb2YgdGhlIExpbnV4IEtlcm5lbCBTQ1RQIHJlZmVyZW5jZQoraW1wbGVtZW50YXRpb24uICAKKworU0NUUCAoU3RyZWFtIENvbnRyb2wgVHJhbnNtaXNzaW9uIFByb3RvY29sKSBpcyBhIElQIGJhc2VkLCBtZXNzYWdlIG9yaWVudGVkLAorcmVsaWFibGUgdHJhbnNwb3J0IHByb3RvY29sLCB3aXRoIGNvbmdlc3Rpb24gY29udHJvbCwgc3VwcG9ydCBmb3IKK3RyYW5zcGFyZW50IG11bHRpLWhvbWluZywgYW5kIG11bHRpcGxlIG9yZGVyZWQgc3RyZWFtcyBvZiBtZXNzYWdlcy4KK1JGQzI5NjAgZGVmaW5lcyB0aGUgY29yZSBwcm90b2NvbC4gIFRoZSBJRVRGIFNJR1RSQU4gd29ya2luZyBncm91cCBvcmlnaW5hbGx5CitkZXZlbG9wZWQgdGhlIFNDVFAgcHJvdG9jb2wgYW5kIGxhdGVyIGhhbmRlZCB0aGUgcHJvdG9jb2wgb3ZlciB0byB0aGUgCitUcmFuc3BvcnQgQXJlYSAoVFNWV0cpIHdvcmtpbmcgZ3JvdXAgZm9yIHRoZSBjb250aW51ZWQgZXZvbHZlbWVudCBvZiBTQ1RQIGFzIGEgCitnZW5lcmFsIHB1cnBvc2UgdHJhbnNwb3J0LiAgCisKK1NlZSB0aGUgSUVURiB3ZWJzaXRlIChodHRwOi8vd3d3LmlldGYub3JnKSBmb3IgZnVydGhlciBkb2N1bWVudHMgb24gU0NUUC4gCitTZWUgaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjk2MC50eHQgCisKK1RoZSBpbml0aWFsIHByb2plY3QgZ29hbCBpcyB0byBjcmVhdGUgYW4gTGludXgga2VybmVsIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbgorb2YgU0NUUCB0aGF0IGlzIFJGQyAyOTYwIGNvbXBsaWFudCBhbmQgcHJvdmlkZXMgYW4gcHJvZ3JhbW1pbmcgaW50ZXJmYWNlIAorcmVmZXJyZWQgdG8gYXMgdGhlICBVRFAtc3R5bGUgQVBJIG9mIHRoZSBTb2NrZXRzIEV4dGVuc2lvbnMgZm9yIFNDVFAsIGFzIAorcHJvcG9zZWQgaW4gSUVURiBJbnRlcm5ldC1EcmFmdHMuICAgIAorCitDYXZlYXRzOiAgCisKKy1sa3NjdHAgY2FuIGJlIGJ1aWx0IGFzIHN0YXRpY2FsbHkgb3IgYXMgYSBtb2R1bGUuICBIb3dldmVyLCBiZSBhd2FyZSB0aGF0IAorbW9kdWxlIHJlbW92YWwgb2YgbGtzY3RwIGlzIG5vdCB5ZXQgYSBzYWZlIGFjdGl2aXR5LiAgIAorCistVGhlcmUgaXMgdGVudGF0aXZlIHN1cHBvcnQgZm9yIElQdjYsIGJ1dCBtb3N0IHdvcmsgaGFzIGdvbmUgdG93YXJkcyAKK2ltcGxlbWVudGF0aW9uIGFuZCB0ZXN0aW5nIGxrc2N0cCBvbiBJUHY0LiAgIAorCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlzaXQgdGhlIGxrc2N0cCBwcm9qZWN0IHdlYnNpdGU6CisgICBodHRwOi8vd3d3LnNmLm5ldC9wcm9qZWN0cy9sa3NjdHAKKworT3IgY29udGFjdCB0aGUgbGtzY3RwIGRldmVsb3BlcnMgdGhyb3VnaCB0aGUgbWFpbGluZyBsaXN0OgorICAgPGxpbnV4LXNjdHBAdmdlci5rZXJuZWwub3JnPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NlY2lkLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZWNpZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTVlYTA2NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZWNpZC50eHQKQEAgLTAsMCArMSwxNCBAQAorZmxvd2kgc3RydWN0dXJlOgorCitUaGUgc2VjaWQgbWVtYmVyIGluIHRoZSBmbG93IHN0cnVjdHVyZSBpcyB1c2VkIGluIExTTXMgKGUuZy4gU0VMaW51eCkgdG8gaW5kaWNhdGUKK3RoZSBsYWJlbCBvZiB0aGUgZmxvdy4gVGhpcyBsYWJlbCBvZiB0aGUgZmxvdyBpcyBjdXJyZW50bHkgdXNlZCBpbiBzZWxlY3RpbmcKK21hdGNoaW5nIGxhYmVsZWQgeGZybShzKS4KKworSWYgdGhpcyBpcyBhbiBvdXRib3VuZCBmbG93LCB0aGUgbGFiZWwgaXMgZGVyaXZlZCBmcm9tIHRoZSBzb2NrZXQsIGlmIGFueSwgb3IKK3RoZSBpbmNvbWluZyBwYWNrZXQgdGhpcyBmbG93IGlzIGJlaW5nIGdlbmVyYXRlZCBhcyBhIHJlc3BvbnNlIHRvIChlLmcuIHRjcAorcmVzZXRzLCB0aW1ld2FpdCBhY2ssIGV0Yy4pLiBJdCBpcyBhbHNvIGNvbmNlaXZhYmxlIHRoYXQgdGhlIGxhYmVsIGNvdWxkIGJlCitkZXJpdmVkIGZyb20gb3RoZXIgc291cmNlcyBzdWNoIGFzIHByb2Nlc3MgY29udGV4dCwgZGV2aWNlLCBldGMuLCBpbiBzcGVjaWFsCitjYXNlcywgYXMgbWF5IGJlIGFwcHJvcHJpYXRlLgorCitJZiB0aGlzIGlzIGFuIGluYm91bmQgZmxvdywgdGhlIGxhYmVsIGlzIGRlcml2ZWQgZnJvbSB0aGUgSVBTZWMgc2VjdXJpdHkKK2Fzc29jaWF0aW9ucywgaWYgYW55LCB1c2VkIGJ5IHRoZSBwYWNrZXQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2tmcC50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2tmcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjAzZWM2NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9za2ZwLnR4dApAQCAtMCwwICsxLDIyMCBAQAorKEMpQ29weXJpZ2h0IDE5OTgtMjAwMCBTeXNLb25uZWN0LAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3NrZnAudHh0IGNyZWF0ZWQgMTEtTWF5LTIwMDAKKworUmVhZG1lIEZpbGUgZm9yIHNrZnAubyB2Mi4wNgorCisKK1RoaXMgZmlsZSBjb250YWlucworKDEpIE9WRVJWSUVXCisoMikgU1VQUE9SVEVEIEFEQVBURVJTCisoMykgR0VORVJBTCBJTkZPUk1BVElPTgorKDQpIElOU1RBTExBVElPTgorKDUpIElOQ0xVU0lPTiBPRiBUSEUgQURBUFRFUiBJTiBTWVNURU0gU1RBUlQKKyg2KSBUUk9VQkxFU0hPT1RJTkcKKyg3KSBGVU5DVElPTiBPRiBUSEUgQURBUFRFUiBMRURTCisoOCkgSElTVE9SWQorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCisKKygxKSBPVkVSVklFVworPT09PT09PT09PT09CisKK1RoaXMgUkVBRE1FIGV4cGxhaW5zIGhvdyB0byB1c2UgdGhlIGRyaXZlciAnc2tmcCcgZm9yIExpbnV4IHdpdGggeW91cgorbmV0d29yayBhZGFwdGVyLgorCitDaGFwdGVyIDI6IENvbnRhaW5zIGEgbGlzdCBvZiBhbGwgbmV0d29yayBhZGFwdGVycyB0aGF0IGFyZSBzdXBwb3J0ZWQgYnkKKwkgICB0aGlzIGRyaXZlci4KKworQ2hhcHRlciAzOiBHaXZlcyBzb21lIGdlbmVyYWwgaW5mb3JtYXRpb24uCisKK0NoYXB0ZXIgNDogRGVzY3JpYmVzIGNvbW1vbiBwcm9ibGVtcyBhbmQgc29sdXRpb25zLgorCitDaGFwdGVyIDU6IFNob3dzIHRoZSBjaGFuZ2VkIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGFkYXB0ZXIgTEVEcy4KKworQ2hhcHRlciA2OiBIaXN0b3J5IG9mIGRldmVsb3BtZW50LgorCisqKioKKworCisoMikgU1VQUE9SVEVEIEFEQVBURVJTCis9PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBuZXR3b3JrIGRyaXZlciAnc2tmcCcgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBuZXR3b3JrIGFkYXB0ZXJzOgorU3lzS29ubmVjdCBhZGFwdGVyczoKKyAgLSBTSy01NTIxIChTSy1ORVQgRkRESS1VUCkKKyAgLSBTSy01NTIyIChTSy1ORVQgRkRESS1VUCBEQVMpCisgIC0gU0stNTU0MSAoU0stTkVUIEZEREktRlApCisgIC0gU0stNTU0MyAoU0stTkVUIEZEREktTFApCisgIC0gU0stNTU0NCAoU0stTkVUIEZEREktTFAgREFTKQorICAtIFNLLTU4MjEgKFNLLU5FVCBGRERJLVVQNjQpCisgIC0gU0stNTgyMiAoU0stTkVUIEZEREktVVA2NCBEQVMpCisgIC0gU0stNTg0MSAoU0stTkVUIEZEREktRlA2NCkKKyAgLSBTSy01ODQzIChTSy1ORVQgRkRESS1MUDY0KQorICAtIFNLLTU4NDQgKFNLLU5FVCBGRERJLUxQNjQgREFTKQorQ29tcGFxIGFkYXB0ZXJzIChub3QgdGVzdGVkKToKKyAgLSBOZXRlbGxpZ2VudCAxMDAgRkRESSBEQVMgRmlicmUgU0MKKyAgLSBOZXRlbGxpZ2VudCAxMDAgRkRESSBTQVMgRmlicmUgU0MKKyAgLSBOZXRlbGxpZ2VudCAxMDAgRkRESSBEQVMgVVRQCisgIC0gTmV0ZWxsaWdlbnQgMTAwIEZEREkgU0FTIFVUUAorICAtIE5ldGVsbGlnZW50IDEwMCBGRERJIFNBUyBGaWJyZSBNSUMKKyoqKgorCisKKygzKSBHRU5FUkFMIElORk9STUFUSU9OCis9PT09PT09PT09PT09PT09PT09PT09PQorCitGcm9tIHYyLjAxIG9uLCB0aGUgZHJpdmVyIGlzIGludGVncmF0ZWQgaW4gdGhlIGxpbnV4IGtlcm5lbCBzb3VyY2VzLgorVGhlcmVmb3JlLCB0aGUgaW5zdGFsbGF0aW9uIGlzIHRoZSBzYW1lIGFzIGZvciBhbnkgb3RoZXIgYWRhcHRlcgorc3VwcG9ydGVkIGJ5IHRoZSBrZXJuZWwuCitSZWZlciB0byB0aGUgbWFudWFsIG9mIHlvdXIgZGlzdHJpYnV0aW9uIGFib3V0IHRoZSBpbnN0YWxsYXRpb24KK29mIG5ldHdvcmsgYWRhcHRlcnMuCitNYWtlcyBteSBsaWZlIG11Y2ggZWFzaWVyIDotKQorKioqCisKKworKDQpIFRST1VCTEVTSE9PVElORworPT09PT09PT09PT09PT09PT09PQorCitJZiB5b3UgcnVuIGludG8gcHJvYmxlbXMgZHVyaW5nIGluc3RhbGxhdGlvbiwgY2hlY2sgdGhvc2UgaXRlbXM6CisKK1Byb2JsZW06ICBUaGUgRkRESSBhZGFwdGVyIGNhbm5vdCBiZSBmb3VuZCBieSB0aGUgZHJpdmVyLgorUmVhc29uOiAgIExvb2sgaW4gL3Byb2MvcGNpIGZvciB0aGUgZm9sbG93aW5nIGVudHJ5OgorICAgICAgICAgICAgICdGRERJIG5ldHdvcmsgY29udHJvbGxlcjogU3lzS29ubmVjdCBTSy1GRERJLVBDSSAuLi4nCisJICBJZiB0aGlzIGVudHJ5IGV4aXN0cywgdGhlbiB0aGUgRkRESSBhZGFwdGVyIGhhcyBiZWVuCisJICBmb3VuZCBieSB0aGUgc3lzdGVtIGFuZCBzaG91bGQgYmUgYWJsZSB0byBiZSB1c2VkLgorCSAgSWYgdGhpcyBlbnRyeSBkb2VzIG5vdCBleGlzdCBvciBpZiB0aGUgZmlsZSAnL3Byb2MvcGNpJworCSAgaXMgbm90IHRoZXJlLCB0aGVuIHlvdSBtYXkgaGF2ZSBhIGhhcmR3YXJlIHByb2JsZW0gb3IgUENJCisJICBzdXBwb3J0IG1heSBub3QgYmUgZW5hYmxlZCBpbiB5b3VyIGtlcm5lbC4KKwkgIFRoZSBhZGFwdGVyIGNhbiBiZSBjaGVja2VkIHVzaW5nIHRoZSBkaWFnbm9zdGljIHByb2dyYW0KKwkgIHdoaWNoIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBTeXNLb25uZWN0IHdlYiBzaXRlOgorCSAgICAgIHd3dy5zeXNrb25uZWN0LmRlCisJICBTb21lIENPTVBBUSBtYWNoaW5lcyBoYXZlIGEgcHJvYmxlbSB3aXRoIFBDSSB1bmRlcgorCSAgTGludXguIFRoaXMgaXMgZGVzY3JpYmVkIGluIHRoZSAnUENJIGhvd3RvJyBkb2N1bWVudAorCSAgKGluY2x1ZGVkIGluIHNvbWUgZGlzdHJpYnV0aW9ucyBvciBhdmFpbGFibGUgZnJvbSB0aGUKKwkgIHd3dywgZS5nLiBhdCAnd3d3LmxpbnV4Lm9yZycpIGFuZCBubyB3b3JrYXJvdW5kIGlzIGF2YWlsYWJsZS4KKworUHJvYmxlbTogIFlvdSB3YW50IHRvIHVzZSB5b3VyIGNvbXB1dGVyIGFzIGEgcm91dGVyIGJldHdlZW4KKyAgICAgICAgICBtdWx0aXBsZSBJUCBzdWJuZXR3b3JrcyAodXNpbmcgbXVsdGlwbGUgYWRhcHRlcnMpLCBidXQKKwkgIHlvdSBjYW5ub3QgcmVhY2ggY29tcHV0ZXJzIGluIG90aGVyIHN1Ym5ldHdvcmtzLgorUmVhc29uOiAgIEVpdGhlciB0aGUgcm91dGVyJ3Mga2VybmVsIGlzIG5vdCBjb25maWd1cmVkIGZvciBJUAorCSAgZm9yd2FyZGluZyBvciB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgcm91dGluZyB0YWJsZQorCSAgYW5kIGdhdGV3YXkgY29uZmlndXJhdGlvbiBpbiBhdCBsZWFzdCBvbmUgb2YgdGhlCisJICBjb21wdXRlcnMuCisKK0lmIHlvdXIgcHJvYmxlbSBpcyBub3QgbGlzdGVkIGhlcmUsIHBsZWFzZSBjb250YWN0IG91cgordGVjaG5pY2FsIHN1cHBvcnQgZm9yIGhlbHAuIAorWW91IGNhbiBzZW5kIGVtYWlsIHRvOgorICBsaW51eEBzeXNrb25uZWN0LmRlCitXaGVuIGNvbnRhY3Rpbmcgb3VyIHRlY2huaWNhbCBzdXBwb3J0LAorcGxlYXNlIGVuc3VyZSB0aGF0IHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlOgorLSBTeXN0ZW0gTWFudWZhY3R1cmVyIGFuZCBNb2RlbAorLSBCb2FyZHMgaW4geW91ciBzeXN0ZW0KKy0gRGlzdHJpYnV0aW9uCistIEtlcm5lbCB2ZXJzaW9uCisKKyoqKgorCisKKyg1KSBGVU5DVElPTiBPRiBUSEUgQURBUFRFUiBMRURTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgICAgIFRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBMRUQncyBvbiB0aGUgRkRESSBuZXR3b3JrIGFkYXB0ZXJzIHdhcworICAgICAgICBjaGFuZ2VkIGluIFNNVCB2ZXJzaW9uIHYyLjgyLiBXaXRoIHRoaXMgbmV3IFNNVCB2ZXJzaW9uLCB0aGUgeWVsbG93CisgICAgICAgIExFRCB3b3JrcyBhcyBhIHJpbmcgb3BlcmF0aW9uYWwgaW5kaWNhdG9yLiBBbiBhY3RpdmUgeWVsbG93IExFRAorICAgICAgICBpbmRpY2F0ZXMgdGhhdCB0aGUgcmluZyBpcyBkb3duLiBUaGUgZ3JlZW4gTEVEIG9uIHRoZSBhZGFwdGVyIG5vdworICAgICAgICB3b3JrcyBhcyBhIGxpbmsgaW5kaWNhdG9yIHdoZXJlIGFuIGFjdGl2ZSBHUkVFTiBMRUQgaW5kaWNhdGVzIHRoYXQKKyAgICAgICAgdGhlIHJlc3BlY3RpdmUgcG9ydCBoYXMgYSBwaHlzaWNhbCBjb25uZWN0aW9uLgorCisgICAgICAgIFdpdGggdmVyc2lvbnMgb2YgU01UIHByaW9yIHRvIHYyLjgyIGEgcmluZyB1cCB3YXMgaW5kaWNhdGVkIGlmIHRoZQorICAgICAgICB5ZWxsb3cgTEVEIHdhcyBvZmYgd2hpbGUgdGhlIGdyZWVuIExFRChzKSBzaG93ZWQgdGhlIGNvbm5lY3Rpb24KKyAgICAgICAgc3RhdHVzIG9mIHRoZSBhZGFwdGVyLiBEdXJpbmcgYSByaW5nIGRvd24gdGhlIGdyZWVuIExFRCB3YXMgb2ZmIGFuZAorICAgICAgICB0aGUgeWVsbG93IExFRCB3YXMgb24uCisKKyAgICAgICAgQWxsIGltcGxlbWVudGF0aW9ucyBpbmRpY2F0ZSB0aGF0IGEgZHJpdmVyIGlzIG5vdCBsb2FkZWQgaWYKKyAgICAgICAgYWxsIExFRHMgYXJlIG9mZi4KKworKioqCisKKworKDYpIEhJU1RPUlkKKz09PT09PT09PT09CisKK3YyLjA2ICgyMDAwMDUxMSkgKEluLUtlcm5lbCB2ZXJzaW9uKQorICAgIE5ldyBmZWF0dXJlczoKKwktIDY0IGJpdCBzdXBwb3J0CisJLSBuZXcgcGNpIGRtYSBpbnRlcmZhY2UKKwktIGluIGtlcm5lbCAyLjMuOTkKKwordjIuMDUgKDIwMDAwMjE3KSAoSW4tS2VybmVsIHZlcnNpb24pCisgICAgTmV3IGZlYXR1cmVzOgorCS0gQ2hhbmdlcyBmb3IgMi4zLjQ1IGtlcm5lbAorCit2Mi4wNCAoMjAwMDAyMDcpIChTdGFuZGFsb25lIHZlcnNpb24pCisgICAgTmV3IGZlYXR1cmVzOgorCS0gQWRkZWQgcngvdHggYnl0ZSBjb3VudGVyCisKK3YyLjAzICgyMDAwMDExMSkgKFN0YW5kYWxvbmUgdmVyc2lvbikKKyAgICBQcm9ibGVtcyBmaXhlZDoKKwktIEZpeGVkIHByaW50ayBzdGF0ZW1lbnRzIGZyb20gdjIuMDIKKwordjIuMDIgKDk5MTIxNSkgKFN0YW5kYWxvbmUgdmVyc2lvbikKKyAgICBQcm9ibGVtcyBmaXhlZDoKKwktIFJlbW92ZWQgdW5uZWNlc3Nhcnkgb3V0cHV0CisJLSBGaXhlZCBwYXRoIGZvciAicHJpbnR2ZXIuc2giIGluIG1ha2VmaWxlCisKK3YyLjAxICg5OTExMjIpIChJbi1LZXJuZWwgdmVyc2lvbikKKyAgICBOZXcgZmVhdHVyZXM6CisJLSBJbnRlZ3JhdGlvbiBpbiBMaW51eCBrZXJuZWwgc291cmNlcworCS0gU3VwcG9ydCBmb3IgbWVtb3J5IG1hcHBlZCBJL08uCisKK3YyLjAwICg5OTExMTIpCisgICAgTmV3IGZlYXR1cmVzOgorCS0gRnVsbCBzb3VyY2UgcmVsZWFzZWQgdW5kZXIgR1BMCisKK3YxLjA1ICg5OTEwMjMpCisgICAgUHJvYmxlbXMgZml4ZWQ6CisJLSBDb21waWxhdGlvbiB3aXRoIGtlcm5lbCB2ZXJzaW9uIDIuMi4xMyBmYWlsZWQKKwordjEuMDQgKDk5MDQyNykKKyAgICBDaGFuZ2VzOgorCS0gTmV3IFNNVCBtb2R1bGUgaW5jbHVkZWQsIGNoYW5naW5nIExFRCBmdW5jdGlvbmFsaXR5CisgICAgUHJvYmxlbXMgZml4ZWQ6CisJLSBTeW5jaHJvbml6YXRpb24gb24gU01QIG1hY2hpbmVzIHdhcyBidWdneQorCit2MS4wMyAoOTkwMzI1KQorICAgIFByb2JsZW1zIGZpeGVkOgorCS0gSW50ZXJydXB0IHJvdXRpbmcgb24gU01QIG1hY2hpbmVzIGNvdWxkIGJlIGluY29ycmVjdAorCit2MS4wMiAoOTkwMzEwKQorICAgIE5ldyBmZWF0dXJlczoKKwktIFN1cHBvcnQgZm9yIGtlcm5lbCB2ZXJzaW9ucyAyLjIueCBhZGRlZAorCS0gS2VybmVsIHBhdGNoIGluc3RlYWQgb2YgcHJpdmF0ZSBkdXBsaWNhdGUgb2Yga2VybmVsIGZ1bmN0aW9ucworCit2MS4wMSAoOTgwODEyKQorICAgIFByb2JsZW1zIGZpeGVkOgorCUNvbm5lY3Rpb24gaGFuZ3VwIHdpdGggdGVsbmV0CisJU2xvdyB0ZWxuZXQgY29ubmVjdGlvbgorCit2MS4wMCBiZXRhIDAxICg5ODA1MDcpCisgICAgTmV3IGZlYXR1cmVzOgorCU5vbmUuCisgICAgUHJvYmxlbXMgZml4ZWQ6CisJTm9uZS4KKyAgICBLbm93biBsaW1pdGF0aW9uczoKKyAgICAgICAgLSB0YXIgYXJjaGl2ZSBpbnN0ZWFkIG9mIHN0YW5kYXJkIHBhY2thZ2UgZm9ybWF0IChycG0pLgorCS0gRkRESSBzdGF0aXN0aWMgaXMgZW1wdHkuCisJLSBub3QgdGVzdGVkIHdpdGggMi4xLnh4IGtlcm5lbHMKKwktIGludGVncmF0aW9uIGluIGtlcm5lbCBub3QgdGVzdGVkCisJLSBub3QgdGVzdGVkIHNpbXVsdGFuZW91c2x5IHdpdGggRkRESSBhZGFwdGVycyBmcm9tIG90aGVyIHZlbmRvcnMuCisJLSBvbmx5IFg4NiBwcm9jZXNzb3JzIHN1cHBvcnRlZC4KKwktIFNCQSAoU3luY2hyb25vdXMgQmFuZHdpZHRoIEFsbG9jYXRvcikgcGFyYW1ldGVycyBjYW4KKwkgIG5vdCBiZSBjb25maWd1cmVkLgorCS0gZG9lcyBub3Qgd29yayBvbiBzb21lIENPTVBBUSBtYWNoaW5lcy4gU2VlIHRoZSBQQ0kgaG93dG8KKwkgIGRvY3VtZW50IGZvciBkZXRhaWxzIGFib3V0IHRoaXMgcHJvYmxlbS4KKwktIGRhdGEgY29ycnVwdGlvbiB3aXRoIGtlcm5lbCB2ZXJzaW9ucyBiZWxvdyAyLjAuMzMuCisKKyoqKiBFbmQgb2YgaW5mb3JtYXRpb24gZmlsZSAqKioKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9zbWM5LnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9zbWM5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWUxNTA3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NtYzkudHh0CkBAIC0wLDAgKzEsNDIgQEAKKworU01DIDl4eHh4IERyaXZlciAKK1JldmlzaW9uIDAuMTIgCiszLzUvOTYKK0NvcHlyaWdodCAxOTk2ICBFcmlrIFN0YWhsbWFuIAorUmVsZWFzZWQgdW5kZXIgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAKKworVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBpbnN0cnVjdGlvbnMgYW5kIGNhdmVhdHMgZm9yIG15IFNNQzl4eHggZHJpdmVyLiAgWW91CitzaG91bGQgbm90IGJlIHVzaW5nIHRoZSBkcml2ZXIgd2l0aG91dCByZWFkaW5nIHRoaXMgZmlsZS4gIAorCitUaGluZ3MgdG8gbm90ZSBhYm91dCBpbnN0YWxsYXRpb246CisKKyAgMS4gVGhlIGRyaXZlciBzaG91bGQgd29yayBvbiBhbGwga2VybmVscyBmcm9tIDEuMi4xMyB1bnRpbCAxLjMuNzEuCisJKEEga2VybmVsIHBhdGNoIGlzIHN1cHBsaWVkIGZvciAxLjMuNzEgKQorCisgIDIuIElmIHlvdSBpbmNsdWRlIHRoaXMgaW50byB0aGUga2VybmVsLCB5b3UgbWlnaHQgbmVlZCB0byBjaGFuZ2Ugc29tZQorCW9wdGlvbnMsIHN1Y2ggYXMgZm9yIGZvcmNpbmcgSVJRLiAgIAorCisgCisgIDMuICBUbyBjb21waWxlIGFzIGEgbW9kdWxlLCBydW4gJ21ha2UnIC4gICAKKwlNYWtlIHdpbGwgZ2l2ZSB5b3UgdGhlIGFwcHJvcHJpYXRlIG9wdGlvbnMgZm9yIHZhcmlvdXMga2VybmVsIHN1cHBvcnQuCisgCisgIDQuICBMb2FkaW5nIHRoZSBkcml2ZXIgYXMgYSBtb2R1bGUgOgorCisJdXNlOiAgIGluc21vZCBzbWM5MTk0Lm8gCisJb3B0aW9uYWwgcGFyYW1ldGVyczoKKwkJaW89eHh4eCAgICA6IHlvdXIgYmFzZSBhZGRyZXNzCisJCWlycT14eAkgICA6IHlvdXIgaXJxIAorCQlpZnBvcnQ9eCAgIDoJMCBmb3Igd2hhdGV2ZXIgaXMgZGVmYXVsdAorCQkJCTEgZm9yIHR3aXN0ZWQgcGFpcgorCQkJCTIgZm9yIEFVSSAgKCBvciBCTkMgb24gc29tZSBjYXJkcyApCisKK0hvdyB0byBvYnRhaW4gdGhlIGxhdGVzdCB2ZXJzaW9uPyAKKwkKK0ZUUDogIAorCWZ0cDovL2ZlbnJpcy5jYW1wdXMudnQuZWR1L3NtYzkvc21jOS0xMi50YXIuZ3oKKwlmdHA6Ly9zZmJveC52dC5lZHUvZmlsZWJveC9GL2ZlbnJpcy9zbWM5L3NtYzktMTIudGFyLmd6IAorICAgCisKK0NvbnRhY3RpbmcgbWU6CisgICAgZXJpa0BtYWlsLnZ0LmVkdQorIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NwaWRlcl9uZXQudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NwaWRlcl9uZXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwYjc1ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc3BpZGVyX25ldC50eHQKQEAgLTAsMCArMSwyMDQgQEAKKworICAgICAgICAgICAgVGhlIFNwaWRlcm5ldCBEZXZpY2UgRHJpdmVyCisgICAgICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworV3JpdHRlbiBieSBMaW5hcyBWZXBzdGFzIDxsaW5hc0BhdXN0aW4uaWJtLmNvbT4KKworVmVyc2lvbiBvZiA3IEp1bmUgMjAwNworCitBYnN0cmFjdAorPT09PT09PT0KK1RoaXMgZG9jdW1lbnQgc2tldGNoZXMgdGhlIHN0cnVjdHVyZSBvZiBwb3J0aW9ucyBvZiB0aGUgc3BpZGVybmV0CitkZXZpY2UgZHJpdmVyIGluIHRoZSBMaW51eCBrZXJuZWwgdHJlZS4gVGhlIHNwaWRlcm5ldCBpcyBhIGdpZ2FiaXQKK2V0aGVybmV0IGRldmljZSBidWlsdCBpbnRvIHRoZSBUb3NoaWJhIHNvdXRoYnJpZGdlIGNvbW1vbmx5IHVzZWQKK2luIHRoZSBTT05ZIFBsYXlzdGF0aW9uIDMgYW5kIHRoZSBJQk0gUVMyMCBDZWxsIGJsYWRlLgorCitUaGUgU3RydWN0dXJlIG9mIHRoZSBSWCBSaW5nLgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1RoZSByZWNlaXZlIChSWCkgcmluZyBpcyBhIGNpcmN1bGFyIGxpbmtlZCBsaXN0IG9mIFJYIGRlc2NyaXB0b3JzLAordG9nZXRoZXIgd2l0aCB0aHJlZSBwb2ludGVycyBpbnRvIHRoZSByaW5nIHRoYXQgYXJlIHVzZWQgdG8gbWFuYWdlIGl0cworY29udGVudHMuCisKK1RoZSBlbGVtZW50cyBvZiB0aGUgcmluZyBhcmUgY2FsbGVkICJkZXNjcmlwdG9ycyIgb3IgImRlc2NycyI7IHRoZXkKK2Rlc2NyaWJlIHRoZSByZWNlaXZlZCBkYXRhLiBUaGlzIGluY2x1ZGVzIGEgcG9pbnRlciB0byBhIGJ1ZmZlcgorY29udGFpbmluZyB0aGUgcmVjZWl2ZWQgZGF0YSwgdGhlIGJ1ZmZlciBzaXplLCBhbmQgdmFyaW91cyBzdGF0dXMgYml0cy4KKworVGhlcmUgYXJlIHRocmVlIHByaW1hcnkgc3RhdGVzIHRoYXQgYSBkZXNjcmlwdG9yIGNhbiBiZSBpbjogImVtcHR5IiwKKyJmdWxsIiBhbmQgIm5vdC1pbi11c2UiLiAgQW4gImVtcHR5IiBvciAicmVhZHkiIGRlc2NyaXB0b3IgaXMgcmVhZHkKK3RvIHJlY2VpdmUgZGF0YSBmcm9tIHRoZSBoYXJkd2FyZS4gQSAiZnVsbCIgZGVzY3JpcHRvciBoYXMgZGF0YSBpbiBpdCwKK2FuZCBpcyB3YWl0aW5nIHRvIGJlIGVtcHRpZWQgYW5kIHByb2Nlc3NlZCBieSB0aGUgT1MuIEEgIm5vdC1pbi11c2UiCitkZXNjcmlwdG9yIGlzIG5laXRoZXIgZW1wdHkgb3IgZnVsbDsgaXQgaXMgc2ltcGx5IG5vdCByZWFkeS4gSXQgbWF5Citub3QgZXZlbiBoYXZlIGEgZGF0YSBidWZmZXIgaW4gaXQsIG9yIGlzIG90aGVyd2lzZSB1bnVzYWJsZS4KKworRHVyaW5nIG5vcm1hbCBvcGVyYXRpb24sIG9uIGRldmljZSBzdGFydHVwLCB0aGUgT1MgKHNwZWNpZmljYWxseSwgdGhlCitzcGlkZXJuZXQgZGV2aWNlIGRyaXZlcikgYWxsb2NhdGVzIGEgc2V0IG9mIFJYIGRlc2NyaXB0b3JzIGFuZCBSWAorYnVmZmVycy4gVGhlc2UgYXJlIGFsbCBtYXJrZWQgImVtcHR5IiwgcmVhZHkgdG8gcmVjZWl2ZSBkYXRhLiBUaGlzCityaW5nIGlzIGhhbmRlZCBvZmYgdG8gdGhlIGhhcmR3YXJlLCB3aGljaCBzZXF1ZW50aWFsbHkgZmlsbHMgaW4gdGhlCitidWZmZXJzLCBhbmQgbWFya3MgdGhlbSAiZnVsbCIuIFRoZSBPUyBmb2xsb3dzIHVwLCB0YWtpbmcgdGhlIGZ1bGwKK2J1ZmZlcnMsIHByb2Nlc3NpbmcgdGhlbSwgYW5kIHJlLW1hcmtpbmcgdGhlbSBlbXB0eS4KKworVGhpcyBmaWxsaW5nIGFuZCBlbXB0eWluZyBpcyBtYW5hZ2VkIGJ5IHRocmVlIHBvaW50ZXJzLCB0aGUgImhlYWQiCithbmQgInRhaWwiIHBvaW50ZXJzLCBtYW5hZ2VkIGJ5IHRoZSBPUywgYW5kIGEgaGFyZHdhcmUgY3VycmVudAorZGVzY3JpcHRvciBwb2ludGVyIChHREFDVERQQSkuIFRoZSBHREFDVERQQSBwb2ludHMgYXQgdGhlIGRlc2NyCitjdXJyZW50bHkgYmVpbmcgZmlsbGVkLiBXaGVuIHRoaXMgZGVzY3IgaXMgZmlsbGVkLCB0aGUgaGFyZHdhcmUKK21hcmtzIGl0IGZ1bGwsIGFuZCBhZHZhbmNlcyB0aGUgR0RBQ1REUEEgYnkgb25lLiAgVGh1cywgd2hlbiB0aGVyZSBpcworZmxvd2luZyBSWCB0cmFmZmljLCBldmVyeSBkZXNjciBiZWhpbmQgaXQgc2hvdWxkIGJlIG1hcmtlZCAiZnVsbCIsCithbmQgZXZlcnl0aGluZyBpbiBmcm9udCBvZiBpdCBzaG91bGQgYmUgImVtcHR5Ii4gIElmIHRoZSBoYXJkd2FyZQorZGlzY292ZXJzIHRoYXQgdGhlIGN1cnJlbnQgZGVzY3IgaXMgbm90IGVtcHR5LCBpdCB3aWxsIHNpZ25hbCBhbgoraW50ZXJydXB0LCBhbmQgaGFsdCBwcm9jZXNzaW5nLgorCitUaGUgdGFpbCBwb2ludGVyIHRhaWxzIG9yIHRyYWlscyB0aGUgaGFyZHdhcmUgcG9pbnRlci4gV2hlbiB0aGUKK2hhcmR3YXJlIGlzIGFoZWFkLCB0aGUgdGFpbCBwb2ludGVyIHdpbGwgYmUgcG9pbnRpbmcgYXQgYSAiZnVsbCIKK2Rlc2NyLiBUaGUgT1Mgd2lsbCBwcm9jZXNzIHRoaXMgZGVzY3IsIGFuZCB0aGVuIG1hcmsgaXQgIm5vdC1pbi11c2UiLAorYW5kIGFkdmFuY2UgdGhlIHRhaWwgcG9pbnRlci4gIFRodXMsIHdoZW4gdGhlcmUgaXMgZmxvd2luZyBSWCB0cmFmZmljLAorYWxsIG9mIHRoZSBkZXNjcnMgaW4gZnJvbnQgb2YgdGhlIHRhaWwgcG9pbnRlciBzaG91bGQgYmUgImZ1bGwiLCBhbmQKK2FsbCBvZiB0aG9zZSBiZWhpbmQgaXQgc2hvdWxkIGJlICJub3QtaW4tdXNlIi4gV2hlbiBSWCB0cmFmZmljIGlzIG5vdAorZmxvd2luZywgdGhlbiB0aGUgdGFpbCBwb2ludGVyIGNhbiBjYXRjaCB1cCB0byB0aGUgaGFyZHdhcmUgcG9pbnRlci4KK1RoZSBPUyB3aWxsIHRoZW4gbm90ZSB0aGF0IHRoZSBjdXJyZW50IHRhaWwgaXMgImVtcHR5IiwgYW5kIGhhbHQKK3Byb2Nlc3NpbmcuCisKK1RoZSBoZWFkIHBvaW50ZXIgKHNvbWV3aGF0IG1pcy1uYW1lZCkgZm9sbG93cyBhZnRlciB0aGUgdGFpbCBwb2ludGVyLgorV2hlbiB0cmFmZmljIGlzIGZsb3dpbmcsIHRoZW4gdGhlIGhlYWQgcG9pbnRlciB3aWxsIGJlIHBvaW50aW5nIGF0CithICJub3QtaW4tdXNlIiBkZXNjci4gVGhlIE9TIHdpbGwgcGVyZm9ybSB2YXJpb3VzIGhvdXNla2VlcGluZyBkdXRpZXMKK29uIHRoaXMgZGVzY3IuIFRoaXMgaW5jbHVkZXMgYWxsb2NhdGluZyBhIG5ldyBkYXRhIGJ1ZmZlciBhbmQKK2RtYS1tYXBwaW5nIGl0IHNvIGFzIHRvIG1ha2UgaXQgdmlzaWJsZSB0byB0aGUgaGFyZHdhcmUuIFRoZSBPUyB3aWxsCit0aGVuIG1hcmsgdGhlIGRlc2NyIGFzICJlbXB0eSIsIHJlYWR5IHRvIHJlY2VpdmUgZGF0YS4gVGh1cywgd2hlbiB0aGVyZQoraXMgZmxvd2luZyBSWCB0cmFmZmljLCBldmVyeXRoaW5nIGluIGZyb250IG9mIHRoZSBoZWFkIHBvaW50ZXIgc2hvdWxkCitiZSAibm90LWluLXVzZSIsIGFuZCBldmVyeXRoaW5nIGJlaGluZCBpdCBzaG91bGQgYmUgImVtcHR5Ii4gSWYgbm8KK1JYIHRyYWZmaWMgaXMgZmxvd2luZywgdGhlbiB0aGUgaGVhZCBwb2ludGVyIGNhbiBjYXRjaCB1cCB0byB0aGUgdGFpbAorcG9pbnRlciwgYXQgd2hpY2ggcG9pbnQgdGhlIE9TIHdpbGwgbm90aWNlIHRoYXQgdGhlIGhlYWQgZGVzY3IgaXMKKyJlbXB0eSIsIGFuZCBpdCB3aWxsIGhhbHQgcHJvY2Vzc2luZy4KKworVGh1cywgaW4gYW4gaWRsZSBzeXN0ZW0sIHRoZSBHREFDVERQQSwgdGFpbCBhbmQgaGVhZCBwb2ludGVycyB3aWxsCithbGwgYmUgcG9pbnRpbmcgYXQgdGhlIHNhbWUgZGVzY3IsIHdoaWNoIHNob3VsZCBiZSAiZW1wdHkiLiBBbGwgb2YgdGhlCitvdGhlciBkZXNjcnMgaW4gdGhlIHJpbmcgc2hvdWxkIGJlICJlbXB0eSIgYXMgd2VsbC4KKworVGhlIHNob3dfcnhfY2hhaW4oKSByb3V0aW5lIHdpbGwgcHJpbnQgb3V0IHRoZSBsb2NhdGlvbnMgb2YgdGhlCitHREFDVERQQSwgdGFpbCBhbmQgaGVhZCBwb2ludGVycy4gSXQgd2lsbCBhbHNvIHN1bW1hcml6ZSB0aGUgY29udGVudHMKK29mIHRoZSByaW5nLCBzdGFydGluZyBhdCB0aGUgdGFpbCBwb2ludGVyLCBhbmQgbGlzdGluZyB0aGUgc3RhdHVzCitvZiB0aGUgZGVzY3JzIHRoYXQgZm9sbG93LgorCitBIHR5cGljYWwgZXhhbXBsZSBvZiB0aGUgb3V0cHV0LCBmb3IgYSBuZWFybHkgaWRsZSBzeXN0ZW0sIG1pZ2h0IGJlCisKK25ldCBldGgxOiBUb3RhbCBudW1iZXIgb2YgZGVzY3JzPTI1NgorbmV0IGV0aDE6IENoYWluIHRhaWwgbG9jYXRlZCBhdCBkZXNjcj0yMAorbmV0IGV0aDE6IENoYWluIGhlYWQgaXMgYXQgMjAKK25ldCBldGgxOiBIVyBjdXJyIGRlc2MgKEdEQUNURFBBKSBpcyBhdCAyMQorbmV0IGV0aDE6IEhhdmUgMSBkZXNjcnMgd2l0aCBzdGF0PXg0MDgwMDEwMQorbmV0IGV0aDE6IEhXIG5leHQgZGVzYyAoR0RBQ05FWFREQSkgaXMgYXQgMjIKK25ldCBldGgxOiBMYXN0IDI1NSBkZXNjcnMgd2l0aCBzdGF0PXhhMDgwMDAwMAorCitJbiB0aGUgYWJvdmUsIHRoZSBoYXJkd2FyZSBoYXMgZmlsbGVkIGluIG9uZSBkZXNjciwgbnVtYmVyIDIwLiBCb3RoCitoZWFkIGFuZCB0YWlsIGFyZSBwb2ludGluZyBhdCAyMCwgYmVjYXVzZSBpdCBoYXMgbm90IHlldCBiZWVuIGVtcHRpZWQuCitNZWFud2hpbGUsIGh3IGlzIHBvaW50aW5nIGF0IDIxLCB3aGljaCBpcyBmcmVlLgorCitUaGUgIkhhdmUgbm5uIGRlY3JzIiByZWZlcnMgdG8gdGhlIGRlc2NyIHN0YXJ0aW5nIGF0IHRoZSB0YWlsOiBpbiB0aGlzCitjYXNlLCBubm49MSBkZXNjciwgc3RhcnRpbmcgYXQgZGVzY3IgMjAuIFRoZSAiTGFzdCBubm4gZGVzY3JzIiByZWZlcnMKK3RvIGFsbCBvZiB0aGUgcmVzdCBvZiB0aGUgZGVzY3JzLCBmcm9tIHRoZSBsYXN0IHN0YXR1cyBjaGFuZ2UuIFRoZSAibm5uIgoraXMgYSBjb3VudCBvZiBob3cgbWFueSBkZXNjcnMgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIHN0YXR1cy4KKworVGhlIHN0YXR1cyB4NC4uLiBjb3JyZXNwb25kcyB0byAiZnVsbCIgYW5kIHN0YXR1cyB4YS4uLiBjb3JyZXNwb25kcwordG8gImVtcHR5Ii4gVGhlIGFjdHVhbCB2YWx1ZSBwcmludGVkIGlzIFJYQ09NU1RfQS4KKworSW4gdGhlIGRldmljZSBkcml2ZXIgc291cmNlIGNvZGUsIGEgZGlmZmVyZW50IHNldCBvZiBuYW1lcyBhcmUKK3VzZWQgZm9yIHRoZXNlIHNhbWUgY29uY2VwdHMsIHNvIHRoYXQKKworImVtcHR5IiA9PSBTUElERVJfTkVUX0RFU0NSX0NBUkRPV05FRCA9PSAweGEKKyJmdWxsIiAgPT0gU1BJREVSX05FVF9ERVNDUl9GUkFNRV9FTkQgPT0gMHg0Cisibm90IGluIHVzZSIgPT0gU1BJREVSX05FVF9ERVNDUl9OT1RfSU5fVVNFID09IDB4ZgorCisKK1RoZSBSWCBSQU0gZnVsbCBidWcvZmVhdHVyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FzIGxvbmcgYXMgdGhlIE9TIGNhbiBlbXB0eSBvdXQgdGhlIFJYIGJ1ZmZlcnMgYXQgYSByYXRlIGZhc3RlciB0aGFuCit0aGUgaGFyZHdhcmUgY2FuIGZpbGwgdGhlbSwgdGhlcmUgaXMgbm8gcHJvYmxlbS4gSWYsIGZvciBzb21lIHJlYXNvbiwKK3RoZSBPUyBmYWlscyB0byBlbXB0eSB0aGUgUlggcmluZyBmYXN0IGVub3VnaCwgdGhlIGhhcmR3YXJlIEdEQUNURFBBCitwb2ludGVyIHdpbGwgY2F0Y2ggdXAgdG8gdGhlIGhlYWQsIG5vdGljZSB0aGUgbm90LWVtcHR5IGNvbmRpdGlvbiwKK2FkIHN0b3AuIEhvd2V2ZXIsIFJYIHBhY2tldHMgbWF5IHN0aWxsIGNvbnRpbnVlIGFycml2aW5nIG9uIHRoZSB3aXJlLgorVGhlIHNwaWRlcm5ldCBjaGlwIGNhbiBzYXZlIHNvbWUgbGltaXRlZCBudW1iZXIgb2YgdGhlc2UgaW4gbG9jYWwgUkFNLgorV2hlbiB0aGlzIGxvY2FsIHJhbSBmaWxscyB1cCwgdGhlIHNwaWRlciBjaGlwIHdpbGwgaXNzdWUgYW4gaW50ZXJydXB0CitpbmRpY2F0aW5nIHRoaXMgKEdISUlOVDBTVFMgd2lsbCBzaG93IEVSUklOVCwgYW5kIHRoZSBHUk1GTExJTlQgYml0Cit3aWxsIGJlIHNldCBpbiBHSElJTlQxU1RTKS4gIFdoZW4gdGhlIFJYIHJhbSBmdWxsIGNvbmRpdGlvbiBvY2N1cnMsCithIGNlcnRhaW4gYnVnL2ZlYXR1cmUgaXMgdHJpZ2dlcmVkIHRoYXQgaGFzIHRvIGJlIHNwZWNpYWxseSBoYW5kbGVkLgorVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgc3BlY2lhbCBoYW5kbGluZyBmb3IgdGhpcyBjb25kaXRpb24uCisKK1doZW4gdGhlIE9TIGZpbmFsbHkgaGFzIGEgY2hhbmNlIHRvIHJ1biwgaXQgd2lsbCBlbXB0eSBvdXQgdGhlIFJYIHJpbmcuCitJbiBwYXJ0aWN1bGFyLCBpdCB3aWxsIGNsZWFyIHRoZSBkZXNjcmlwdG9yIG9uIHdoaWNoIHRoZSBoYXJkd2FyZSBoYWQKK3N0b3BwZWQuIEhvd2V2ZXIsIG9uY2UgdGhlIGhhcmR3YXJlIGhhcyBkZWNpZGVkIHRoYXQgYSBjZXJ0YWluCitkZXNjcmlwdG9yIGlzIGludmFsaWQsIGl0IHdpbGwgbm90IHJlc3RhcnQgYXQgdGhhdCBkZXNjcmlwdG9yOyBpbnN0ZWFkCitpdCB3aWxsIHJlc3RhcnQgYXQgdGhlIG5leHQgZGVzY3IuIFRoaXMgcG90ZW50aWFsbHkgd2lsbCBsZWFkIHRvIGEKK2RlYWRsb2NrIGNvbmRpdGlvbiwgYXMgdGhlIHRhaWwgcG9pbnRlciB3aWxsIGJlIHBvaW50aW5nIGF0IHRoaXMgZGVzY3IsCit3aGljaCwgZnJvbSB0aGUgT1MgcG9pbnQgb2YgdmlldywgaXMgZW1wdHk7IHRoZSBPUyB3aWxsIGJlIHdhaXRpbmcgZm9yCit0aGlzIGRlc2NyIHRvIGJlIGZpbGxlZC4gSG93ZXZlciwgdGhlIGhhcmR3YXJlIGhhcyBza2lwcGVkIHRoaXMgZGVzY3IsCithbmQgaXMgZmlsbGluZyB0aGUgbmV4dCBkZXNjcnMuIFNpbmNlIHRoZSBPUyBkb2Vzbid0IHNlZSB0aGlzLCB0aGVyZQoraXMgYSBwb3RlbnRpYWwgZGVhZGxvY2ssIHdpdGggdGhlIE9TIHdhaXRpbmcgZm9yIG9uZSBkZXNjciB0byBmaWxsLAord2hpbGUgdGhlIGhhcmR3YXJlIGlzIHdhaXRpbmcgZm9yIGEgZGlmZmVyZW50IHNldCBvZiBkZXNjcnMgdG8gYmVjb21lCitlbXB0eS4KKworQSBjYWxsIHRvIHNob3dfcnhfY2hhaW4oKSBhdCB0aGlzIHBvaW50IGluZGljYXRlcyB0aGUgbmF0dXJlIG9mIHRoZQorcHJvYmxlbS4gQSB0eXBpY2FsIHByaW50IHdoZW4gdGhlIG5ldHdvcmsgaXMgaHVuZyBzaG93cyB0aGUgZm9sbG93aW5nOgorCituZXQgZXRoMTogU3BpZGVyIFJYIFJBTSBmdWxsLCBpbmNvbWluZyBwYWNrZXRzIG1pZ2h0IGJlIGRpc2NhcmRlZCEKK25ldCBldGgxOiBUb3RhbCBudW1iZXIgb2YgZGVzY3JzPTI1NgorbmV0IGV0aDE6IENoYWluIHRhaWwgbG9jYXRlZCBhdCBkZXNjcj0yNTUKK25ldCBldGgxOiBDaGFpbiBoZWFkIGlzIGF0IDI1NQorbmV0IGV0aDE6IEhXIGN1cnIgZGVzYyAoR0RBQ1REUEEpIGlzIGF0IDAKK25ldCBldGgxOiBIYXZlIDEgZGVzY3JzIHdpdGggc3RhdD14YTA4MDAwMDAKK25ldCBldGgxOiBIVyBuZXh0IGRlc2MgKEdEQUNORVhUREEpIGlzIGF0IDEKK25ldCBldGgxOiBIYXZlIDEyNyBkZXNjcnMgd2l0aCBzdGF0PXg0MDgwMDEwMQorbmV0IGV0aDE6IEhhdmUgMSBkZXNjcnMgd2l0aCBzdGF0PXg0MDgwMDAwMQorbmV0IGV0aDE6IEhhdmUgMTI2IGRlc2NycyB3aXRoIHN0YXQ9eDQwODAwMTAxCituZXQgZXRoMTogTGFzdCAxIGRlc2NycyB3aXRoIHN0YXQ9eGEwODAwMDAwCisKK0JvdGggdGhlIHRhaWwgYW5kIGhlYWQgcG9pbnRlcnMgYXJlIHBvaW50aW5nIGF0IGRlc2NyIDI1NSwgd2hpY2ggaXMKK21hcmtlZCB4YS4uLiB3aGljaCBpcyAiZW1wdHkiLiBUaHVzLCBmcm9tIHRoZSBPUyBwb2ludCBvZiB2aWV3LCB0aGVyZQoraXMgbm90aGluZyB0byBiZSBkb25lLiBJbiBwYXJ0aWN1bGFyLCB0aGVyZSBpcyB0aGUgaW1wbGljaXQgYXNzdW1wdGlvbgordGhhdCBldmVyeXRoaW5nIGluIGZyb250IG9mIHRoZSAiZW1wdHkiIGRlc2NyIG11c3Qgc3VyZWx5IGFsc28gYmUgZW1wdHksCithcyBleHBsYWluZWQgaW4gdGhlIGxhc3Qgc2VjdGlvbi4gVGhlIE9TIGlzIHdhaXRpbmcgZm9yIGRlc2NyIDI1NSB0bworYmVjb21lIG5vbi1lbXB0eSwgd2hpY2gsIGluIHRoaXMgY2FzZSwgd2lsbCBuZXZlciBoYXBwZW4uCisKK1RoZSBIVyBwb2ludGVyIGlzIGF0IGRlc2NyIDAuIFRoaXMgZGVzY3IgaXMgbWFya2VkIDB4NC4uIG9yICJmdWxsIi4KK1NpbmNlIGl0cyBhbHJlYWR5IGZ1bGwsIHRoZSBoYXJkd2FyZSBjYW4gZG8gbm90aGluZyBtb3JlLCBhbmQgdGh1cyBoYXMKK2hhbHRlZCBwcm9jZXNzaW5nLiBOb3RpY2UgdGhhdCBkZXNjcnMgMCB0aHJvdWdoIDI1NCBhcmUgYWxsIG1hcmtlZAorImZ1bGwiLCB3aGlsZSBkZXNjciAyNTQgYW5kIDI1NSBhcmUgZW1wdHkuIChUaGUgIkxhc3QgMSBkZXNjcnMiIGlzCitkZXNjciAyNTQsIHNpbmNlIHRhaWwgd2FzIGF0IDI1NS4pIFRodXMsIHRoZSBzeXN0ZW0gaXMgZGVhZGxvY2tlZCwKK2FuZCB0aGVyZSBjYW4gYmUgbm8gZm9yd2FyZCBwcm9ncmVzczsgdGhlIE9TIHRoaW5rcyB0aGVyZSdzIG5vdGhpbmcKK3RvIGRvLCBhbmQgdGhlIGhhcmR3YXJlIGhhcyBub3doZXJlIHRvIHB1dCBpbmNvbWluZyBkYXRhLgorCitUaGlzIGJ1Zy9mZWF0dXJlIGlzIHdvcmtlZCBhcm91bmQgd2l0aCB0aGUgc3BpZGVyX25ldF9yZXN5bmNfaGVhZF9wdHIoKQorcm91dGluZS4gV2hlbiB0aGUgZHJpdmVyIHJlY2VpdmVzIFJYIGludGVycnVwdHMsIGJ1dCBhbiBleGFtaW5hdGlvbgorb2YgdGhlIFJYIGNoYWluIHNlZW1zIHRvIHNob3cgaXQgaXMgZW1wdHksIHRoZW4gaXQgaXMgcHJvYmFibGUgdGhhdAordGhlIGhhcmR3YXJlIGhhcyBza2lwcGVkIGEgZGVzY3Igb3IgdHdvIChzb21ldGltZXMgZG96ZW5zIHVuZGVyIGhlYXZ5CituZXR3b3JrIGNvbmRpdGlvbnMpLiBUaGUgc3BpZGVyX25ldF9yZXN5bmNfaGVhZF9wdHIoKSBzdWJyb3V0aW5lIHdpbGwKK3NlYXJjaCB0aGUgcmluZyBmb3IgdGhlIG5leHQgZnVsbCBkZXNjciwgYW5kIHRoZSBkcml2ZXIgd2lsbCByZXN1bWUKK29wZXJhdGlvbnMgdGhlcmUuICBTaW5jZSB0aGlzIHdpbGwgbGVhdmUgImhvbGVzIiBpbiB0aGUgcmluZywgdGhlcmUKK2lzIGFsc28gYSBzcGlkZXJfbmV0X3Jlc3luY190YWlsX3B0cigpIHRoYXQgd2lsbCBza2lwIG92ZXIgc3VjaCBob2xlcy4KKworQXMgb2YgdGhpcyB3cml0aW5nLCB0aGUgc3BpZGVyX25ldF9yZXN5bmMoKSBzdHJhdGVneSBzZWVtcyB0byB3b3JrIHZlcnkKK3dlbGwsIGV2ZW4gdW5kZXIgaGVhdnkgbmV0d29yayBsb2Fkcy4KKworCitUaGUgVFggcmluZworPT09PT09PT09PT0KK1RoZSBUWCByaW5nIHVzZXMgYSBsb3ctd2F0ZXJtYXJrIGludGVycnVwdCBzY2hlbWUgdG8gbWFrZSBzdXJlIHRoYXQKK3RoZSBUWCBxdWV1ZSBpcyBhcHByb3ByaWF0ZWx5IHNlcnZpY2VkIGZvciBsYXJnZSBwYWNrZXQgc2l6ZXMuCisKK0ZvciBwYWNrZXQgc2l6ZXMgZ3JlYXRlciB0aGFuIGFib3V0IDFLQnl0ZXMsIHRoZSBrZXJuZWwgY2FuIGZpbGwKK3RoZSBUWCByaW5nIHF1aWNrZXIgdGhhbiB0aGUgZGV2aWNlIGNhbiBkcmFpbiBpdC4gT25jZSB0aGUgcmluZworaXMgZnVsbCwgdGhlIG5ldGRldiBpcyBzdG9wcGVkLiBXaGVuIHRoZXJlIGlzIHJvb20gaW4gdGhlIHJpbmcsCit0aGUgbmV0ZGV2IG5lZWRzIHRvIGJlIHJlYXdha2VuZWQsIHNvIHRoYXQgbW9yZSBUWCBwYWNrZXRzIGFyZSBwbGFjZWQKK2luIHRoZSByaW5nLiBUaGUgaGFyZHdhcmUgY2FuIGVtcHR5IHRoZSByaW5nIGFib3V0IGZvdXIgdGltZXMgcGVyIGppZmZ5LAorc28gaXRzIG5vdCBhcHByb3ByaWF0ZSB0byB3YWl0IGZvciB0aGUgcG9sbCByb3V0aW5lIHRvIHJlZmlsbCwgc2luY2UKK3RoZSBwb2xsIHJvdXRpbmUgcnVucyBvbmx5IG9uY2UgcGVyIGppZmZ5LiAgVGhlIGxvdy13YXRlcm1hcmsgbWVjaGFuaXNtCittYXJrcyBhIGRlc2NyIGFib3V0IDEvNHRoIG9mIHRoZSB3YXkgZnJvbSB0aGUgYm90dG9tIG9mIHRoZSBxdWV1ZSwgc28KK3RoYXQgYW4gaW50ZXJydXB0IGlzIGdlbmVyYXRlZCB3aGVuIHRoZSBkZXNjciBpcyBwcm9jZXNzZWQuIFRoaXMKK2ludGVycnVwdCB3YWtlcyB1cCB0aGUgbmV0ZGV2LCB3aGljaCBjYW4gdGhlbiByZWZpbGwgdGhlIHF1ZXVlLgorRm9yIGxhcmdlIHBhY2tldHMsIHRoaXMgbWVjaGFuaXNtIGdlbmVyYXRlcyBhIHJlbGF0aXZlbHkgc21hbGwgbnVtYmVyCitvZiBpbnRlcnJ1cHRzLCBhYm91dCAxSy9zZWMuIEZvciBzbWFsbGVyIHBhY2tldHMsIHRoaXMgd2lsbCBkcm9wIHRvIHplcm8KK2ludGVycnVwdHMsIGFzIHRoZSBoYXJkd2FyZSBjYW4gZW1wdHkgdGhlIHF1ZXVlIGZhc3RlciB0aGFuIHRoZSBrZXJuZWwKK2NhbiBmaWxsIGl0LgorCisKKyA9PT09PT09IEVORCBPRiBET0NVTUVOVCA9PT09PT09PQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc3RtbWFjLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9zdG1tYWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NGExNDcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc3RtbWFjLnR4dApAQCAtMCwwICsxLDM1OSBAQAorICAgICAgIFNUTWljcm9lbGVjdHJvbmljcyAxMC8xMDAvMTAwMCBTeW5vcHN5cyBFdGhlcm5ldCBkcml2ZXIKKworQ29weXJpZ2h0IChDKSAyMDA3LTIwMTQgIFNUTWljcm9lbGVjdHJvbmljcyBMdGQKK0F1dGhvcjogR2l1c2VwcGUgQ2F2YWxsYXJvIDxwZXBwZS5jYXZhbGxhcm9Ac3QuY29tPgorCitUaGlzIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBNQUMgMTAvMTAwLzEwMDAgb24tY2hpcCBFdGhlcm5ldCBjb250cm9sbGVycworKFN5bm9wc3lzIElQIGJsb2NrcykuCisKK0N1cnJlbnRseSB0aGlzIG5ldHdvcmsgZGV2aWNlIGRyaXZlciBpcyBmb3IgYWxsIFNUaSBlbWJlZGRlZCBNQUMvR01BQworKGkuZS4gN3h4eC81eHh4IFNvQ3MpLCBTUEVBciAoYXJtKSwgTG9vbmdzb24xQiAobWlwcykgYW5kIFhMSU5YIFhDMlYzMDAwCitGRjExNTJBTVQwMjIxIEQxMjE1OTk0QSBWSVJURVggRlBHQSBib2FyZC4KKworRFdDIEV0aGVyIE1BQyAxMC8xMDAvMTAwMCBVbml2ZXJzYWwgdmVyc2lvbiAzLjcwYSAoYW5kIG9sZGVyKSBhbmQgRFdDIEV0aGVyCitNQUMgMTAvMTAwIFVuaXZlcnNhbCB2ZXJzaW9uIDQuMCBoYXZlIGJlZW4gdXNlZCBmb3IgZGV2ZWxvcGluZyB0aGlzIGRyaXZlci4KKworVGhpcyBkcml2ZXIgc3VwcG9ydHMgYm90aCB0aGUgcGxhdGZvcm0gYnVzIGFuZCBQQ0kuCisKK1BsZWFzZSwgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWxzbyB2aXNpdDogd3d3LnN0bGludXguY29tCisKKzEpIEtlcm5lbCBDb25maWd1cmF0aW9uCitUaGUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIFNUTU1BQ19FVEg6CisgRGV2aWNlIERyaXZlcnMgLS0tPiBOZXR3b3JrIGRldmljZSBzdXBwb3J0IC0tLT4gRXRoZXJuZXQgKDEwMDAgTWJpdCkgLS0tPgorIFNUTWljcm9lbGVjdHJvbmljcyAxMC8xMDAvMTAwMCBFdGhlcm5ldCBkcml2ZXIgKFNUTU1BQ19FVEgpCisKK0NPTkZJR19TVE1NQUNfUExBVEZPUk06IGlzIHRvIGVuYWJsZSB0aGUgcGxhdGZvcm0gZHJpdmVyLgorQ09ORklHX1NUTU1BQ19QQ0k6IGlzIHRvIGVuYWJsZSB0aGUgcGNpIGRyaXZlci4KKworMikgRHJpdmVyIHBhcmFtZXRlcnMgbGlzdDoKKwlkZWJ1ZzogbWVzc2FnZSBsZXZlbCAoMDogbm8gb3V0cHV0LCAxNjogYWxsKTsKKwlwaHlhZGRyOiB0byBtYW51YWxseSBwcm92aWRlIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHRvIHRoZSBQSFkgZGV2aWNlOworCWRtYV9yeHNpemU6IERNQSByeCByaW5nIHNpemU7CisJZG1hX3R4c2l6ZTogRE1BIHR4IHJpbmcgc2l6ZTsKKwlidWZfc3o6IERNQSBidWZmZXIgc2l6ZTsKKwl0YzogY29udHJvbCB0aGUgSFcgRklGTyB0aHJlc2hvbGQ7CisJd2F0Y2hkb2c6IHRyYW5zbWl0IHRpbWVvdXQgKGluIG1pbGxpc2Vjb25kcyk7CisJZmxvd19jdHJsOiBGbG93IGNvbnRyb2wgYWJpbGl0eSBbb24vb2ZmXTsKKwlwYXVzZTogRmxvdyBDb250cm9sIFBhdXNlIFRpbWU7CisJZWVlX3RpbWVyOiB0eCBFRUUgdGltZXI7CisJY2hhaW5fbW9kZTogc2VsZWN0IGNoYWluIG1vZGUgaW5zdGVhZCBvZiByaW5nLgorCiszKSBDb21tYW5kIGxpbmUgb3B0aW9ucworRHJpdmVyIHBhcmFtZXRlcnMgY2FuIGJlIGFsc28gcGFzc2VkIGluIGNvbW1hbmQgbGluZSBieSB1c2luZzoKKwlzdG1tYWNldGg9ZG1hX3J4c2l6ZToxMjgsZG1hX3R4c2l6ZTo1MTIKKworNCkgRHJpdmVyIGluZm9ybWF0aW9uIGFuZCBub3RlcworCis0LjEpIFRyYW5zbWl0IHByb2Nlc3MKK1RoZSB4bWl0IG1ldGhvZCBpcyBpbnZva2VkIHdoZW4gdGhlIGtlcm5lbCBuZWVkcyB0byB0cmFuc21pdCBhIHBhY2tldDsgaXQgc2V0cwordGhlIGRlc2NyaXB0b3JzIGluIHRoZSByaW5nIGFuZCBpbmZvcm1zIHRoZSBETUEgZW5naW5lIHRoYXQgdGhlcmUgaXMgYSBwYWNrZXQKK3JlYWR5IHRvIGJlIHRyYW5zbWl0dGVkLgorQnkgZGVmYXVsdCwgdGhlIGRyaXZlciBzZXRzIHRoZSBORVRJRl9GX1NHIGJpdCBpbiB0aGUgZmVhdHVyZXMgZmllbGQgb2YgdGhlCituZXRfZGV2aWNlIHN0cnVjdHVyZSBlbmFibGluZyB0aGUgc2NhdHRlci1nYXRoZXIgZmVhdHVyZS4gVGhpcyBpcyB0cnVlIG9uCitjaGlwcyBhbmQgY29uZmlndXJhdGlvbnMgd2hlcmUgdGhlIGNoZWNrc3VtIGNhbiBiZSBkb25lIGluIGhhcmR3YXJlLgorT25jZSB0aGUgY29udHJvbGxlciBoYXMgZmluaXNoZWQgdHJhbnNtaXR0aW5nIHRoZSBwYWNrZXQsIG5hcGkgd2lsbCBiZQorc2NoZWR1bGVkIHRvIHJlbGVhc2UgdGhlIHRyYW5zbWl0IHJlc291cmNlcy4KKworNC4yKSBSZWNlaXZlIHByb2Nlc3MKK1doZW4gb25lIG9yIG1vcmUgcGFja2V0cyBhcmUgcmVjZWl2ZWQsIGFuIGludGVycnVwdCBoYXBwZW5zLiBUaGUgaW50ZXJydXB0cworYXJlIG5vdCBxdWV1ZWQgc28gdGhlIGRyaXZlciBoYXMgdG8gc2NhbiBhbGwgdGhlIGRlc2NyaXB0b3JzIGluIHRoZSByaW5nIGR1cmluZwordGhlIHJlY2VpdmUgcHJvY2Vzcy4KK1RoaXMgaXMgYmFzZWQgb24gTkFQSSBzbyB0aGUgaW50ZXJydXB0IGhhbmRsZXIgc2lnbmFscyBvbmx5IGlmIHRoZXJlIGlzIHdvcmsKK3RvIGJlIGRvbmUsIGFuZCBpdCBleGl0cy4KK1RoZW4gdGhlIHBvbGwgbWV0aG9kIHdpbGwgYmUgc2NoZWR1bGVkIGF0IHNvbWUgZnV0dXJlIHBvaW50LgorVGhlIGluY29taW5nIHBhY2tldHMgYXJlIHN0b3JlZCwgYnkgdGhlIERNQSwgaW4gYSBsaXN0IG9mIHByZS1hbGxvY2F0ZWQgc29ja2V0CitidWZmZXJzIGluIG9yZGVyIHRvIGF2b2lkIHRoZSBtZW1jcHkgKHplcm8tY29weSkuCisKKzQuMykgSW50ZXJydXB0IE1pdGlnYXRpb24KK1RoZSBkcml2ZXIgaXMgYWJsZSB0byBtaXRpZ2F0ZSB0aGUgbnVtYmVyIG9mIGl0cyBETUEgaW50ZXJydXB0cwordXNpbmcgTkFQSSBmb3IgdGhlIHJlY2VwdGlvbiBvbiBjaGlwcyBvbGRlciB0aGFuIHRoZSAzLjUwLgorTmV3IGNoaXBzIGhhdmUgYW4gSFcgUlgtV2F0Y2hkb2cgdXNlZCBmb3IgdGhpcyBtaXRpZ2F0aW9uLgorTWl0aWdhdGlvbiBwYXJhbWV0ZXJzIGNhbiBiZSB0dW5lZCBieSBldGh0b29sLgorCis0LjQpIFdPTAorV2FrZSB1cCBvbiBMYW4gZmVhdHVyZSB0aHJvdWdoIE1hZ2ljIGFuZCBVbmljYXN0IGZyYW1lcyBhcmUgc3VwcG9ydGVkIGZvciB0aGUKK0dNQUMgY29yZS4KKworNC41KSBETUEgZGVzY3JpcHRvcnMKK0RyaXZlciBoYW5kbGVzIGJvdGggbm9ybWFsIGFuZCBhbHRlcm5hdGUgZGVzY3JpcHRvcnMuIFRoZSBsYXR0ZXIgaGFzIGJlZW4gb25seQordGVzdGVkIG9uIERXQyBFdGhlciBNQUMgMTAvMTAwLzEwMDAgVW5pdmVyc2FsIHZlcnNpb24gMy40MWEgYW5kIGxhdGVyLgorCitTVE1NQUMgc3VwcG9ydHMgRE1BIGRlc2NyaXB0b3IgdG8gb3BlcmF0ZSBib3RoIGluIGR1YWwgYnVmZmVyIChSSU5HKQorYW5kIGxpbmtlZC1saXN0KENIQUlORUQpIG1vZGUuIEluIFJJTkcgZWFjaCBkZXNjcmlwdG9yIHBvaW50cyB0byB0d28KK2RhdGEgYnVmZmVyIHBvaW50ZXJzIHdoZXJlYXMgaW4gQ0hBSU5FRCBtb2RlIHRoZXkgcG9pbnQgdG8gb25seSBvbmUgZGF0YQorYnVmZmVyIHBvaW50ZXIuIFJJTkcgbW9kZSBpcyB0aGUgZGVmYXVsdC4KKworSW4gQ0hBSU5FRCBtb2RlIGVhY2ggZGVzY3JpcHRvciB3aWxsIGhhdmUgcG9pbnRlciB0byBuZXh0IGRlc2NyaXB0b3IgaW4KK3RoZSBsaXN0LCBoZW5jZSBjcmVhdGluZyB0aGUgZXhwbGljaXQgY2hhaW5pbmcgaW4gdGhlIGRlc2NyaXB0b3IgaXRzZWxmLAord2hlcmVhcyBzdWNoIGV4cGxpY2l0IGNoYWluaW5nIGlzIG5vdCBwb3NzaWJsZSBpbiBSSU5HIG1vZGUuCisKKzQuNS4xKSBFeHRlbmRlZCBkZXNjcmlwdG9ycworCVRoZSBleHRlbmRlZCBkZXNjcmlwdG9ycyBnaXZlIHVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBFdGhlcm5ldCBwYXlsb2FkCisJd2hlbiBpdCBpcyBjYXJyeWluZyBQVFAgcGFja2V0cyBvciBUQ1AvVURQL0lDTVAgb3ZlciBJUC4KKwlUaGVzZSBhcmUgbm90IGF2YWlsYWJsZSBvbiBHTUFDIFN5bm9wc3lzIGNoaXBzIG9sZGVyIHRoYW4gdGhlIDMuNTAuCisJQXQgcHJvYmUgdGltZSB0aGUgZHJpdmVyIHdpbGwgZGVjaWRlIGlmIHRoZXNlIGNhbiBiZSBhY3R1YWxseSB1c2VkLgorCVRoaXMgc3VwcG9ydCBhbHNvIGlzIG1hbmRhdG9yeSBmb3IgUFRQdjIgYmVjYXVzZSB0aGUgZXh0cmEgZGVzY3JpcHRvcnMKKwlhcmUgdXNlZCBmb3Igc2F2aW5nIHRoZSBoYXJkd2FyZSB0aW1lc3RhbXBzIGFuZCBFeHRlbmRlZCBTdGF0dXMuCisKKzQuNikgRXRodG9vbCBzdXBwb3J0CitFdGh0b29sIGlzIHN1cHBvcnRlZC4KKworRm9yIGV4YW1wbGUsIGRyaXZlciBzdGF0aXN0aWNzIChpbmNsdWRpbmcgUk1PTiksIGludGVybmFsIGVycm9ycyBjYW4gYmUgdGFrZW4KK3VzaW5nOgorICAjIGV0aHRvb2wgLVMgZXRoWCBjb21tYW5kCisKKzQuNykgSnVtYm8gYW5kIFNlZ21lbnRhdGlvbiBPZmZsb2FkaW5nCitKdW1ibyBmcmFtZXMgYXJlIHN1cHBvcnRlZCBhbmQgdGVzdGVkIGZvciB0aGUgR01BQy4KK1RoZSBHU08gaGFzIGJlZW4gYWxzbyBhZGRlZCBidXQgaXQncyBwZXJmb3JtZWQgaW4gc29mdHdhcmUuCitMUk8gaXMgbm90IHN1cHBvcnRlZC4KKworNC44KSBQaHlzaWNhbAorVGhlIGRyaXZlciBpcyBjb21wYXRpYmxlIHdpdGggUGh5c2ljYWwgQWJzdHJhY3Rpb24gTGF5ZXIgdG8gYmUgY29ubmVjdGVkIHdpdGgKK1BIWSBhbmQgR1BIWSBkZXZpY2VzLgorCis0LjkpIFBsYXRmb3JtIGluZm9ybWF0aW9uCitTZXZlcmFsIGluZm9ybWF0aW9uIGNhbiBiZSBwYXNzZWQgdGhyb3VnaCB0aGUgcGxhdGZvcm0gYW5kIGRldmljZS10cmVlLgorCitzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgeworCWNoYXIgKnBoeV9idXNfbmFtZTsKKwlpbnQgYnVzX2lkOworCWludCBwaHlfYWRkcjsKKwlpbnQgaW50ZXJmYWNlOworCXN0cnVjdCBzdG1tYWNfbWRpb19idXNfZGF0YSAqbWRpb19idXNfZGF0YTsKKwlzdHJ1Y3Qgc3RtbWFjX2RtYV9jZmcgKmRtYV9jZmc7CisJaW50IGNsa19jc3I7CisJaW50IGhhc19nbWFjOworCWludCBlbmhfZGVzYzsKKwlpbnQgdHhfY29lOworCWludCByeF9jb2U7CisJaW50IGJ1Z2dlZF9qdW1ibzsKKwlpbnQgcG10OworCWludCBmb3JjZV9zZl9kbWFfbW9kZTsKKwlpbnQgZm9yY2VfdGhyZXNoX2RtYV9tb2RlOworCWludCByaXd0X29mZjsKKwlpbnQgbWF4X3NwZWVkOworCWludCBtYXhtdHU7CisJdm9pZCAoKmZpeF9tYWNfc3BlZWQpKHZvaWQgKnByaXYsIHVuc2lnbmVkIGludCBzcGVlZCk7CisJdm9pZCAoKmJ1c19zZXR1cCkodm9pZCBfX2lvbWVtICppb2FkZHIpOworCWludCAoKmluaXQpKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHZvaWQgKnByaXYpOworCXZvaWQgKCpleGl0KShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCB2b2lkICpwcml2KTsKKwl2b2lkICpic3BfcHJpdjsKK307CisKK1doZXJlOgorIG8gcGh5X2J1c19uYW1lOiBwaHkgYnVzIG5hbWUgdG8gYXR0YWNoIHRvIHRoZSBzdG1tYWMuCisgbyBidXNfaWQ6IGJ1cyBpZGVudGlmaWVyLgorIG8gcGh5X2FkZHI6IHRoZSBwaHlzaWNhbCBhZGRyZXNzIGNhbiBiZSBwYXNzZWQgZnJvbSB0aGUgcGxhdGZvcm0uCisJICAgIElmIGl0IGlzIHNldCB0byAtMSB0aGUgZHJpdmVyIHdpbGwgYXV0b21hdGljYWxseQorCSAgICBkZXRlY3QgaXQgYXQgcnVuLXRpbWUgYnkgcHJvYmluZyBhbGwgdGhlIDMyIGFkZHJlc3Nlcy4KKyBvIGludGVyZmFjZTogUEhZIGRldmljZSdzIGludGVyZmFjZS4KKyBvIG1kaW9fYnVzX2RhdGE6IHNwZWNpZmljIHBsYXRmb3JtIGZpZWxkcyBmb3IgdGhlIE1ESU8gYnVzLgorIG8gZG1hX2NmZzogaW50ZXJuYWwgRE1BIHBhcmFtZXRlcnMKKyAgIG8gcGJsOiB0aGUgUHJvZ3JhbW1hYmxlIEJ1cnN0IExlbmd0aCBpcyBtYXhpbXVtIG51bWJlciBvZiBiZWF0cyB0bworICAgICAgIGJlIHRyYW5zZmVycmVkIGluIG9uZSBETUEgdHJhbnNhY3Rpb24uCisgICAgICAgR01BQyBhbHNvIGVuYWJsZXMgdGhlIDR4UEJMIGJ5IGRlZmF1bHQuCisgICBvIGZpeGVkX2J1cnN0L21peGVkX2J1cnN0L2J1cnN0X2xlbgorIG8gY2xrX2NzcjogZml4ZWQgQ1NSIENsb2NrIHJhbmdlIHNlbGVjdGlvbi4KKyBvIGhhc19nbWFjOiB1c2VzIHRoZSBHTUFDIGNvcmUuCisgbyBlbmhfZGVzYzogaWYgc2V0cyB0aGUgTUFDIHdpbGwgdXNlIHRoZSBlbmhhbmNlZCBkZXNjcmlwdG9yIHN0cnVjdHVyZS4KKyBvIHR4X2NvZTogY29yZSBpcyBhYmxlIHRvIHBlcmZvcm0gdGhlIHR4IGNzdW0gaW4gSFcuCisgbyByeF9jb2U6IHRoZSBzdXBwb3J0cyB0aHJlZSBjaGVjayBzdW0gb2ZmbG9hZGluZyBlbmdpbmUgdHlwZXM6CisJICAgdHlwZV8xLCB0eXBlXzIgKGZ1bGwgY3N1bSkgYW5kIG5vIFJYIGNvZS4KKyBvIGJ1Z2dlZF9qdW1ibzogc29tZSBIV3MgYXJlIG5vdCBhYmxlIHRvIHBlcmZvcm0gdGhlIGNzdW0gaW4gSFcgZm9yCisJCW92ZXItc2l6ZWQgZnJhbWVzIGR1ZSB0byBsaW1pdGVkIGJ1ZmZlciBzaXplcy4KKwkJU2V0dGluZyB0aGlzIGZsYWcgdGhlIGNzdW0gd2lsbCBiZSBkb25lIGluIFNXIG9uCisJCUpVTUJPIGZyYW1lcy4KKyBvIHBtdDogY29yZSBoYXMgdGhlIGVtYmVkZGVkIHBvd2VyIG1vZHVsZSAob3B0aW9uYWwpLgorIG8gZm9yY2Vfc2ZfZG1hX21vZGU6IGZvcmNlIERNQSB0byB1c2UgdGhlIFN0b3JlIGFuZCBGb3J3YXJkIG1vZGUKKwkJICAgICBpbnN0ZWFkIG9mIHRoZSBUaHJlc2hvbGQuCisgbyBmb3JjZV90aHJlc2hfZG1hX21vZGU6IGZvcmNlIERNQSB0byB1c2UgdGhlIFRocmVzaG9sZCBtb2RlIG90aGVyIHRoYW4KKwkJICAgICB0aGUgU3RvcmUgYW5kIEZvcndhcmQgbW9kZS4KKyBvIHJpd3Rfb2ZmOiBmb3JjZSB0byBkaXNhYmxlIHRoZSBSWCB3YXRjaGRvZyBmZWF0dXJlIGFuZCBzd2l0Y2ggdG8gTkFQSSBtb2RlLgorIG8gZml4X21hY19zcGVlZDogdGhpcyBjYWxsYmFjayBpcyB1c2VkIGZvciBtb2RpZnlpbmcgc29tZSBzeXNjZmcgcmVnaXN0ZXJzCisJCSAob24gU1QgU29DcykgYWNjb3JkaW5nIHRvIHRoZSBsaW5rIHNwZWVkIG5lZ290aWF0ZWQgYnkgdGhlCisJCSBwaHlzaWNhbCBsYXllciAuCisgbyBidXNfc2V0dXA6IHBlcmZvcm0gSFcgc2V0dXAgb2YgdGhlIGJ1cy4gRm9yIGV4YW1wbGUsIG9uIHNvbWUgU1QgcGxhdGZvcm1zCisJICAgICB0aGlzIGZpZWxkIGlzIHVzZWQgdG8gY29uZmlndXJlIHRoZSBBTUJBICBicmlkZ2UgdG8gZ2VuZXJhdGUgbW9yZQorCSAgICAgZWZmaWNpZW50IFNUQnVzIHRyYWZmaWMuCisgbyBpbml0L2V4aXQ6IGNhbGxiYWNrcyB1c2VkIGZvciBjYWxsaW5nIGEgY3VzdG9tIGluaXRpYWxpemF0aW9uOworCSAgICAgdGhpcyBpcyBzb21ldGltZSBuZWNlc3Nhcnkgb24gc29tZSBwbGF0Zm9ybXMgKGUuZy4gU1QgYm94ZXMpCisJICAgICB3aGVyZSB0aGUgSFcgbmVlZHMgdG8gaGF2ZSBzZXQgc29tZSBQSU8gbGluZXMgb3Igc3lzdGVtIGNmZworCSAgICAgcmVnaXN0ZXJzLiAgaW5pdC9leGl0IGNhbGxiYWNrcyBzaG91bGQgbm90IHVzZSBvciBtb2RpZnkKKwkgICAgIHBsYXRmb3JtIGRhdGEuCisgbyBic3BfcHJpdjogYW5vdGhlciBwcml2YXRlIHBvaW50ZXIuCisKK0ZvciBNRElPIGJ1cyBUaGUgd2UgaGF2ZToKKworIHN0cnVjdCBzdG1tYWNfbWRpb19idXNfZGF0YSB7CisJaW50ICgqcGh5X3Jlc2V0KSh2b2lkICpwcml2KTsKKwl1bnNpZ25lZCBpbnQgcGh5X21hc2s7CisJaW50ICppcnFzOworCWludCBwcm9iZWRfcGh5X2lycTsKKyB9OworCitXaGVyZToKKyBvIHBoeV9yZXNldDogaG9vayB0byByZXNldCB0aGUgcGh5IGRldmljZSBhdHRhY2hlZCB0byB0aGUgYnVzLgorIG8gcGh5X21hc2s6IHBoeSBtYXNrIHBhc3NlZCB3aGVuIHJlZ2lzdGVyIHRoZSBNRElPIGJ1cyB3aXRoaW4gdGhlIGRyaXZlci4KKyBvIGlycXM6IGxpc3Qgb2YgSVJRcywgb25lIHBlciBQSFkuCisgbyBwcm9iZWRfcGh5X2lycTogaWYgaXJxcyBpcyBOVUxMLCB1c2UgdGhpcyBmb3IgcHJvYmVkIFBIWS4KKworRm9yIERNQSBlbmdpbmUgd2UgaGF2ZSB0aGUgZm9sbG93aW5nIGludGVybmFsIGZpZWxkcyB0aGF0IHNob3VsZCBiZQordHVuZWQgYWNjb3JkaW5nIHRvIHRoZSBIVyBjYXBhYmlsaXRpZXMuCisKK3N0cnVjdCBzdG1tYWNfZG1hX2NmZyB7CisJaW50IHBibDsKKwlpbnQgZml4ZWRfYnVyc3Q7CisJaW50IGJ1cnN0X2xlbl9zdXBwb3J0ZWQ7Cit9OworCitXaGVyZToKKyBvIHBibDogUHJvZ3JhbW1hYmxlIEJ1cnN0IExlbmd0aAorIG8gZml4ZWRfYnVyc3Q6IHByb2dyYW0gdGhlIERNQSB0byB1c2UgdGhlIGZpeGVkIGJ1cnN0IG1vZGUKKyBvIGJ1cnN0X2xlbjogdGhpcyBpcyB0aGUgdmFsdWUgd2UgcHV0IGluIHRoZSByZWdpc3RlcgorCSAgICAgIHN1cHBvcnRlZCB2YWx1ZXMgYXJlIHByb3ZpZGVkIGFzIG1hY3JvcyBpbgorCSAgICAgIGxpbnV4L3N0bW1hYy5oIGhlYWRlciBmaWxlLgorCistLS0KKworQmVsb3cgYW4gZXhhbXBsZSBob3cgdGhlIHN0cnVjdHVyZXMgYWJvdmUgYXJlIHVzaW5nIG9uIFNUIHBsYXRmb3Jtcy4KKworIHN0YXRpYyBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgc3R4WVlZX2V0aGVybmV0X3BsYXRmb3JtX2RhdGEgPSB7CisJLmhhc19nbWFjID0gMCwKKwkuZW5oX2Rlc2MgPSAwLAorCS5maXhfbWFjX3NwZWVkID0gc3R4WVlZX2V0aGVybmV0X2ZpeF9tYWNfc3BlZWQsCisJCQkJfAorCQkJCXwtPiB0byB3cml0ZSBhbiBpbnRlcm5hbCBzeXNjZmcKKwkJCQl8ICAgb24gdGhpcyBwbGF0Zm9ybSB3aGVuIHRoZQorCQkJCXwgICBsaW5rIHNwZWVkIGNoYW5nZXMgZnJvbSAxMCB0bworCQkJCXwgICAxMDAgYW5kIHZpY2V2ZXJzYQorCS5pbml0ID0gJnN0bW1hY19jbGFpbV9yZXNvdXJjZSwKKwkJCQl8CisJCQkJfC0+IE9uIFNUIFNvQyB0aGlzIGNhbGxzIG93biAiUEFEIgorCQkJCXwgICBtYW5hZ2VyIGZyYW1ld29yayB0byBjbGFpbQorCQkJCXwgICBhbGwgdGhlIHJlc291cmNlcyBuZWNlc3NhcnkKKwkJCQl8ICAgKEdQSU8gLi4uKS4gVGhlIC5jdXN0b21fY2ZnIGZpZWxkCisJCQkJfCAgIGlzIHVzZWQgdG8gcGFzcyBhIGN1c3RvbSBjb25maWcuCit9OworCitCZWxvdyB0aGUgdXNhZ2Ugb2YgdGhlIHN0bW1hY19tZGlvX2J1c19kYXRhOiBvbiB0aGlzIFNvQywgaW4gZmFjdCwKK3RoZXJlIGFyZSB0d28gTUFDIGNvcmVzOiBvbmUgTUFDIGlzIGZvciBNRElPIEJ1cy9QSFkgZW11bGF0aW9uCit3aXRoIGZpeGVkX2xpbmsgc3VwcG9ydC4KKworc3RhdGljIHN0cnVjdCBzdG1tYWNfbWRpb19idXNfZGF0YSBzdG1tYWMxX21kaW9fYnVzID0geworCS5waHlfcmVzZXQgPSBwaHlfcmVzZXQ7CisJCXwKKwkJfC0+IGZ1bmN0aW9uIHRvIHByb3ZpZGUgdGhlIHBoeV9yZXNldCBvbiB0aGlzIGJvYXJkCisJLnBoeV9tYXNrID0gMCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyBzdG1tYWMwX2ZpeGVkX3BoeV9zdGF0dXMgPSB7CisJLmxpbmsgPSAxLAorCS5zcGVlZCA9IDEwMCwKKwkuZHVwbGV4ID0gMSwKK307CisKK0R1cmluZyB0aGUgYm9hcmQncyBkZXZpY2VfaW5pdCB3ZSBjYW4gY29uZmlndXJlIHRoZSBmaXJzdAorTUFDIGZvciBmaXhlZF9saW5rIGJ5IGNhbGxpbmc6CisgIGZpeGVkX3BoeV9hZGQoUEhZX1BPTEwsIDEsICZzdG1tYWMwX2ZpeGVkX3BoeV9zdGF0dXMsIC0xKTsKK2FuZCB0aGUgc2Vjb25kIG9uZSwgd2l0aCBhIHJlYWwgUEhZIGRldmljZSBhdHRhY2hlZCB0byB0aGUgYnVzLAorYnkgdXNpbmcgdGhlIHN0bW1hY19tZGlvX2J1c19kYXRhIHN0cnVjdHVyZSAodG8gcHJvdmlkZSB0aGUgaWQsIHRoZQorcmVzZXQgcHJvY2VkdXJlIGV0YykuCisKK05vdGUgdGhhdCwgc3RhcnRpbmcgZnJvbSBuZXcgY2hpcHMsIHdoZXJlIGl0IGlzIGF2YWlsYWJsZSB0aGUgSFcgY2FwYWJpbGl0eQorcmVnaXN0ZXIsIG1hbnkgY29uZmlndXJhdGlvbnMgYXJlIGRpc2NvdmVyZWQgYXQgcnVuLXRpbWUgZm9yIGV4YW1wbGUgdG8KK3VuZGVyc3RhbmQgaWYgRUVFLCBIVyBjc3VtLCBQVFAsIGVuaGFuY2VkIGRlc2NyaXB0b3IgZXRjIGFyZSBhY3R1YWxseQorYXZhaWxhYmxlLiBBcyBzdHJhdGVneSBhZG9wdGVkIGluIHRoaXMgZHJpdmVyLCB0aGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgSFcKK2NhcGFiaWxpdHkgcmVnaXN0ZXIgY2FuIHJlcGxhY2Ugd2hhdCBoYXMgYmVlbiBwYXNzZWQgZnJvbSB0aGUgcGxhdGZvcm0uCisKKzQuMTApIERldmljZS10cmVlIHN1cHBvcnQuCisKK1BsZWFzZSBzZWUgdGhlIGZvbGxvd2luZyBkb2N1bWVudDoKKwlEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bW1hYy50eHQKKworNC4xMSkgVGhpcyBpcyBhIHN1bW1hcnkgb2YgdGhlIGNvbnRlbnQgb2Ygc29tZSByZWxldmFudCBmaWxlczoKKyBvIHN0bW1hY19tYWluLmM6IHRvIGltcGxlbWVudCB0aGUgbWFpbiBuZXR3b3JrIGRldmljZSBkcml2ZXI7CisgbyBzdG1tYWNfbWRpby5jOiB0byBwcm92aWRlIG1kaW8gZnVuY3Rpb25zOworIG8gc3RtbWFjX3BjaTogdGhpcyB0aGUgUENJIGRyaXZlcjsKKyBvIHN0bW1hY19wbGF0Zm9ybS5jOiB0aGlzIHRoZSBwbGF0Zm9ybSBkcml2ZXIgKE9GIHN1cHBvcnRlZCkKKyBvIHN0bW1hY19ldGh0b29sLmM6IHRvIGltcGxlbWVudCB0aGUgZXRodG9vbCBzdXBwb3J0OworIG8gc3RtbWFjLmg6IHByaXZhdGUgZHJpdmVyIHN0cnVjdHVyZTsKKyBvIGNvbW1vbi5oOiBjb21tb24gZGVmaW5pdGlvbnMgYW5kIFZGVHM7CisgbyBkZXNjcy5oOiBkZXNjcmlwdG9yIHN0cnVjdHVyZSBkZWZpbml0aW9uczsKKyBvIGR3bWFjMTAwMF9jb3JlLmM6IGR3bWFjIEdpR2EgY29yZSBmdW5jdGlvbnM7CisgbyBkd21hYzEwMDBfZG1hLmM6IGRtYSBmdW5jdGlvbnMgZm9yIHRoZSBHTUFDIGNoaXA7CisgbyBkd21hYzEwMDAuaDogc3BlY2lmaWMgaGVhZGVyIGZpbGUgZm9yIHRoZSBkd21hYyBHaUdhOworIG8gZHdtYWMxMDBfY29yZTogZHdtYWMgMTAwIGNvcmUgY29kZTsKKyBvIGR3bWFjMTAwX2RtYS5jOiBkbWEgZnVuY3Rpb25zIGZvciB0aGUgZHdtYWMgMTAwIGNoaXA7CisgbyBkd21hYzEwMDAuaDogc3BlY2lmaWMgaGVhZGVyIGZpbGUgZm9yIHRoZSBNQUM7CisgbyBkd21hY19saWIuYzogZ2VuZXJpYyBETUEgZnVuY3Rpb25zOworIG8gZW5oX2Rlc2MuYzogZnVuY3Rpb25zIGZvciBoYW5kbGluZyBlbmhhbmNlZCBkZXNjcmlwdG9yczsKKyBvIG5vcm1fZGVzYy5jOiBmdW5jdGlvbnMgZm9yIGhhbmRsaW5nIG5vcm1hbCBkZXNjcmlwdG9yczsKKyBvIGNoYWluX21vZGUuYy9yaW5nX21vZGUuYzo6IGZ1bmN0aW9ucyB0byBtYW5hZ2UgUklORy9DSEFJTkVEIG1vZGVzOworIG8gbW1jX2NvcmUuYy9tbWMuaDogTWFuYWdlbWVudCBNQUMgQ291bnRlcnM7CisgbyBzdG1tYWNfaHd0c3RhbXAuYzogSFcgdGltZXN0YW1wIHN1cHBvcnQgZm9yIFBUUDsKKyBvIHN0bW1hY19wdHAuYzogUFRQIDE1ODggY2xvY2s7CisgbyBkd21hYy08WFhYPi5jOiB0aGVzZSBhcmUgZm9yIHRoZSBwbGF0Zm9ybSBnbHVlLWxvZ2ljIGZpbGU7IGUuZy4gZHdtYWMtc3RpLmMKKyAgIGZvciBTVE1pY3JvZWxlY3Ryb25pY3MgU29Dcy4KKworNSkgRGVidWcgSW5mb3JtYXRpb24KKworVGhlIGRyaXZlciBleHBvcnRzIG1hbnkgaW5mb3JtYXRpb24gaS5lLiBpbnRlcm5hbCBzdGF0aXN0aWNzLAorZGVidWcgaW5mb3JtYXRpb24sIE1BQyBhbmQgRE1BIHJlZ2lzdGVycyBldGMuCisKK1RoZXNlIGNhbiBiZSByZWFkIGluIHNldmVyYWwgd2F5cyBkZXBlbmRpbmcgb24gdGhlCit0eXBlIG9mIHRoZSBpbmZvcm1hdGlvbiBhY3R1YWxseSBuZWVkZWQuCisKK0ZvciBleGFtcGxlIGEgdXNlciBjYW4gYmUgdXNlIHRoZSBldGh0b29sIHN1cHBvcnQKK3RvIGdldCBzdGF0aXN0aWNzOiBlLmcuIHVzaW5nOiBldGh0b29sIC1TIGV0aFgKKyh0aGF0IHNob3dzIHRoZSBNYW5hZ2VtZW50IGNvdW50ZXJzIChNTUMpIGlmIHN1cHBvcnRlZCkKK29yIHNlZXMgdGhlIE1BQy9ETUEgcmVnaXN0ZXJzOiBlLmcuIHVzaW5nOiBldGh0b29sIC1kIGV0aFgKKworQ29tcGlsaW5nIHRoZSBLZXJuZWwgd2l0aCBDT05GSUdfREVCVUdfRlMgdGhlIGRyaXZlciB3aWxsIGV4cG9ydCB0aGUgZm9sbG93aW5nCitkZWJ1Z2ZzIGVudHJpZXM6CisKKy9zeXMva2VybmVsL2RlYnVnL3N0bW1hY2V0aC9kZXNjcmlwdG9yc19zdGF0dXMKKyAgVG8gc2hvdyB0aGUgRE1BIFRYL1JYIGRlc2NyaXB0b3IgcmluZ3MKKworRGV2ZWxvcGVyIGNhbiBhbHNvIHVzZSB0aGUgImRlYnVnIiBtb2R1bGUgcGFyYW1ldGVyIHRvIGdldCBmdXJ0aGVyIGRlYnVnCitpbmZvcm1hdGlvbiAocGxlYXNlIHNlZTogTkVUSUYgTXNnIExldmVsKS4KKworNikgRW5lcmd5IEVmZmljaWVudCBFdGhlcm5ldAorCitFbmVyZ3kgRWZmaWNpZW50IEV0aGVybmV0KEVFRSkgZW5hYmxlcyBJRUVFIDgwMi4zIE1BQyBzdWJsYXllciBhbG9uZword2l0aCBhIGZhbWlseSBvZiBQaHlzaWNhbCBsYXllciB0byBvcGVyYXRlIGluIHRoZSBMb3cgcG93ZXIgSWRsZShMUEkpCittb2RlLiBUaGUgRUVFIG1vZGUgc3VwcG9ydHMgdGhlIElFRUUgODAyLjMgTUFDIG9wZXJhdGlvbiBhdCAxMDBNYnBzLAorMTAwME1icHMgJiAxMEdicHMuCisKK1RoZSBMUEkgbW9kZSBhbGxvd3MgcG93ZXIgc2F2aW5nIGJ5IHN3aXRjaGluZyBvZmYgcGFydHMgb2YgdGhlCitjb21tdW5pY2F0aW9uIGRldmljZSBmdW5jdGlvbmFsaXR5IHdoZW4gdGhlcmUgaXMgbm8gZGF0YSB0byBiZQordHJhbnNtaXR0ZWQgJiByZWNlaXZlZC4gVGhlIHN5c3RlbSBvbiBib3RoIHRoZSBzaWRlIG9mIHRoZSBsaW5rIGNhbgorZGlzYWJsZSBzb21lIGZ1bmN0aW9uYWxpdGllcyAmIHNhdmUgcG93ZXIgZHVyaW5nIHRoZSBwZXJpb2Qgb2YgbG93LWxpbmsKK3V0aWxpemF0aW9uLiBUaGUgTUFDIGNvbnRyb2xzIHdoZXRoZXIgdGhlIHN5c3RlbSBzaG91bGQgZW50ZXIgb3IgZXhpdAordGhlIExQSSBtb2RlICYgY29tbXVuaWNhdGUgdGhpcyB0byBQSFkuCisKK0FzIHNvb24gYXMgdGhlIGludGVyZmFjZSBpcyBvcGVuZWQsIHRoZSBkcml2ZXIgdmVyaWZpZXMgaWYgdGhlIEVFRSBjYW4KK2JlIHN1cHBvcnRlZC4gVGhpcyBpcyBkb25lIGJ5IGxvb2tpbmcgYXQgYm90aCB0aGUgRE1BIEhXIGNhcGFiaWxpdHkKK3JlZ2lzdGVyIGFuZCB0aGUgUEhZIGRldmljZXMgTUNEIHJlZ2lzdGVycy4KK1RvIGVudGVyIGluIFR4IExQSSBtb2RlIHRoZSBkcml2ZXIgbmVlZHMgdG8gaGF2ZSBhIHNvZnR3YXJlIHRpbWVyCit0aGF0IGVuYWJsZSBhbmQgZGlzYWJsZSB0aGUgTFBJIG1vZGUgd2hlbiB0aGVyZSBpcyBub3RoaW5nIHRvIGJlCit0cmFuc21pdHRlZC4KKworNykgUHJlY2lzaW9uIFRpbWUgUHJvdG9jb2wgKFBUUCkKK1RoZSBkcml2ZXIgc3VwcG9ydHMgdGhlIElFRUUgMTU4OC0yMDAyLCBQcmVjaXNpb24gVGltZSBQcm90b2NvbCAoUFRQKSwKK3doaWNoIGVuYWJsZXMgcHJlY2lzZSBzeW5jaHJvbml6YXRpb24gb2YgY2xvY2tzIGluIG1lYXN1cmVtZW50IGFuZAorY29udHJvbCBzeXN0ZW1zIGltcGxlbWVudGVkIHdpdGggdGVjaG5vbG9naWVzIHN1Y2ggYXMgbmV0d29yaworY29tbXVuaWNhdGlvbi4KKworSW4gYWRkaXRpb24gdG8gdGhlIGJhc2ljIHRpbWVzdGFtcCBmZWF0dXJlcyBtZW50aW9uZWQgaW4gSUVFRSAxNTg4LTIwMDIKK1RpbWVzdGFtcHMsIG5ldyBHTUFDIGNvcmVzIHN1cHBvcnQgdGhlIGFkdmFuY2VkIHRpbWVzdGFtcCBmZWF0dXJlcy4KK0lFRUUgMTU4OC0yMDA4IHRoYXQgY2FuIGJlIGVuYWJsZWQgd2hlbiBjb25maWd1cmUgdGhlIEtlcm5lbC4KKworOCkgU0dNSUkvUkdNSUkgc3VwcG9ydHMKK05ldyBHTUFDIGRldmljZXMgcHJvdmlkZSBvd24gd2F5IHRvIG1hbmFnZSBSR01JSS9TR01JSS4KK1RoaXMgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIGF0IHJ1bi10aW1lIGJ5IGxvb2tpbmcgYXQgdGhlCitIVyBjYXBhYmlsaXR5IHJlZ2lzdGVyLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHN0bW1hYyBjYW4gbWFuYWdlCithdXRvLW5lZ290aWF0aW9uIGFuZCBsaW5rIHN0YXR1cyB3L28gdXNpbmcgdGhlIFBIWUxJQiBzdHVmZgorSW4gZmFjdCwgdGhlIEhXIHByb3ZpZGVzIGEgc3Vic2V0IG9mIGV4dGVuZGVkIHJlZ2lzdGVycyB0bworcmVzdGFydCB0aGUgQU5FLCB2ZXJpZnkgRnVsbC9IYWxmIGR1cGxleCBtb2RlIGFuZCBTcGVlZC4KK0Fsc28gdGhhbmtzIHRvIHRoZXNlIHJlZ2lzdGVycyBpdCBpcyBwb3NzaWJsZSB0byBsb29rIGF0IHRoZQorQXV0by1uZWdvdGlhdGVkIExpbmsgUGFydGVyIEFiaWxpdHkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc3dpdGNoZGV2LnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9zd2l0Y2hkZXYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxOTk0MTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc3dpdGNoZGV2LnR4dApAQCAtMCwwICsxLDM5NCBAQAorRXRoZXJuZXQgc3dpdGNoIGRldmljZSBkcml2ZXIgbW9kZWwgKHN3aXRjaGRldikKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDb3B5cmlnaHQgKGMpIDIwMTQgSmlyaSBQaXJrbyA8amlyaUByZXNudWxsaS51cz4KK0NvcHlyaWdodCAoYykgMjAxNC0yMDE1IFNjb3R0IEZlbGRtYW4gPHNmZWxkbWFAZ21haWwuY29tPgorCisKK1RoZSBFdGhlcm5ldCBzd2l0Y2ggZGV2aWNlIGRyaXZlciBtb2RlbCAoc3dpdGNoZGV2KSBpcyBhbiBpbi1rZXJuZWwgZHJpdmVyCittb2RlbCBmb3Igc3dpdGNoIGRldmljZXMgd2hpY2ggb2ZmbG9hZCB0aGUgZm9yd2FyZGluZyAoZGF0YSkgcGxhbmUgZnJvbSB0aGUKK2tlcm5lbC4KKworRmlndXJlIDEgaXMgYSBibG9jayBkaWFncmFtIHNob3dpbmcgdGhlIGNvbXBvbmVudHMgb2YgdGhlIHN3aXRjaGRldiBtb2RlbCBmb3IKK2FuIGV4YW1wbGUgc2V0dXAgdXNpbmcgYSBkYXRhLWNlbnRlci1jbGFzcyBzd2l0Y2ggQVNJQyBjaGlwLiAgT3RoZXIgc2V0dXBzCit3aXRoIFNSLUlPViBvciBzb2Z0IHN3aXRjaGVzLCBzdWNoIGFzIE9WUywgYXJlIHBvc3NpYmxlLgorCisKK+KAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiVVzZXItc3BhY2XigIl0b29sc+KAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiQor4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJCivigInigInigInigInigInigInigIl1c2Vy4oCJc3BhY2XigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIl84oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJCivigInigInigInigInigInigIkrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSvigInigInigIkKK+KAieKAieKAieKAieKAieKAieKAiWtlcm5lbOKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiXzigIlOZXRsaW5r4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJCivigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIl84oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJCivigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIkrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSvigInigInigInigInigInigInigInigInigIkKK+KAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiXzigInigInigInigInigInigInigInigInigIlOZXR3b3Jr4oCJc3RhY2vigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIl84oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJCivigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIl84oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJKExpbnV4KeKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiXzigInigInigInigInigInigInigInigInigIkKK+KAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiXzigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIl84oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJCivigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIkrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSvigInigInigInigInigInigInigInigInigIkKK+KAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiQorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3cxcDIgICAgIHN3MXA0ICAgICBzdzFwNgor4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJc3cxcDHigIkgKyAgc3cxcDMgICsg4oCJc3cxcDUgICsgIOKAieKAieKAieKAieKAieKAieKAieKAiWV0aDHigInigInigInigInigInigInigInigInigInigInigInigInigIkKK+KAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiSvigInigInigInigIl84oCJ4oCJ4oCJ4oCJK+KAieKAieKAieKAiXzigInigInigInigIkr4oCJ4oCJ4oCJ4oCJfOKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiSvigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIkKK+KAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiXzigInigInigInigIl84oCJ4oCJ4oCJ4oCJfOKAieKAieKAieKAiXzigInigInigInigIl84oCJ4oCJ4oCJ4oCJfOKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiXzigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIkKK+KAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiSstLSstLS0tKy0tLS0rLS0tLSstKy0tKy0tLS0rLS0tK+KAieKAiSstLS0tLSstLS0tLSvigInigInigInigInigInigInigInigInigIkKK+KAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiXzigInigInigInigInigInigInigInigInigIlTd2l0Y2jigIlkcml2ZXLigInigInigInigInigInigInigInigInigIl84oCJ4oCJfOKAieKAieKAieKAiW1nbXTigInigInigIl84oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJCivigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIl84oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJKHRoaXPigIlkb2N1bWVudCnigInigInigInigInigInigInigInigIl84oCJ4oCJfOKAieKAieKAiWRyaXZlcuKAieKAiXzigInigInigInigInigInigInigInigInigIkKK+KAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiXzigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIl84oCJ4oCJfOKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiXzigInigInigInigInigInigInigInigInigIkKK+KAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tK+KAieKAiSstLS0tLS0tLS0tLSvigInigInigInigInigInigInigInigInigIkKK+KAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiXzigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIkg4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJCivigInigInigInigInigInigInigIlrZXJuZWzigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIl84oCJSFfigIlidXPigIkoZWfigIlQQ0kp4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJIOKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiQor4oCJ4oCJ4oCJ4oCJ4oCJ4oCJKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r4oCJ4oCJ4oCJCivigInigInigInigInigInigInigIloYXJkd2FyZeKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiXzigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIkg4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJCivigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIkrLS0tLS0tLS0tLS0tLS0rLS0tKy0tLS0tLS0tLS0tLSvigInigInigInigInigInigInigInigIkg4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJCivigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIl84oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJU3dpdGNo4oCJZGV2aWNlIChzdzEp4oCJ4oCJ4oCJfOKAieKAieKAieKAieKAieKAieKAieKAiSDigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIkKK+KAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiXzigInigIkrLS0tLSvigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIkrLS0tLS0tLS0r4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJCivigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIl84oCJ4oCJfOKAieKAieKAieKAiXbigIlvZmZsb2FkZWTigIlkYXRh4oCJcGF0aOKAieKAieKAiXzigIltZ2104oCJcG9ydOKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiQor4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJfOKAieKAiXzigInigInigInigIl84oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJfOKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiQor4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJKy0tfC0tLS18LS0tLSstLS0tKy0tLS0rLS0tLSstLS0r4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJCivigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIl84oCJ4oCJ4oCJ4oCJfOKAieKAieKAieKAiXzigInigInigInigIl84oCJ4oCJ4oCJ4oCJfOKAieKAieKAieKAiXzigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIkKK+KAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiSvigInigInigInigIkr4oCJ4oCJ4oCJ4oCJK+KAieKAieKAieKAiSvigInigInigInigIkr4oCJ4oCJ4oCJ4oCJK+KAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiQor4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJ4oCJcDHigInigInigIlwMuKAieKAieKAiXAz4oCJ4oCJ4oCJcDTigInigInigIlwNeKAieKAieKAiXA2CivigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIkKK+KAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiWZyb250LXBhbmVs4oCJcG9ydHPigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigInigIkKK+KAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAieKAiQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWcgMS4KKworCitJbmNsdWRlIEZpbGVzCistLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KKyNpbmNsdWRlIDxuZXQvc3dpdGNoZGV2Lmg+CisKKworQ29uZmlndXJhdGlvbgorLS0tLS0tLS0tLS0tLQorCitVc2UgImRlcGVuZHMgTkVUX1NXSVRDSERFViIgaW4gZHJpdmVyJ3MgS2NvbmZpZyB0byBlbnN1cmUgc3dpdGNoZGV2IG1vZGVsCitzdXBwb3J0IGlzIGJ1aWx0IGZvciBkcml2ZXIuCisKKworU3dpdGNoIFBvcnRzCistLS0tLS0tLS0tLS0KKworT24gc3dpdGNoZGV2IGRyaXZlciBpbml0aWFsaXphdGlvbiwgdGhlIGRyaXZlciB3aWxsIGFsbG9jYXRlIGFuZCByZWdpc3RlciBhCitzdHJ1Y3QgbmV0X2RldmljZSAodXNpbmcgcmVnaXN0ZXJfbmV0ZGV2KCkpIGZvciBlYWNoIGVudW1lcmF0ZWQgcGh5c2ljYWwgc3dpdGNoCitwb3J0LCBjYWxsZWQgdGhlIHBvcnQgbmV0ZGV2LiAgQSBwb3J0IG5ldGRldiBpcyB0aGUgc29mdHdhcmUgcmVwcmVzZW50YXRpb24gb2YKK3RoZSBwaHlzaWNhbCBwb3J0IGFuZCBwcm92aWRlcyBhIGNvbmR1aXQgZm9yIGNvbnRyb2wgdHJhZmZpYyB0by9mcm9tIHRoZQorY29udHJvbGxlciAodGhlIGtlcm5lbCkgYW5kIHRoZSBuZXR3b3JrLCBhcyB3ZWxsIGFzIGFuIGFuY2hvciBwb2ludCBmb3IgaGlnaGVyCitsZXZlbCBjb25zdHJ1Y3RzIHN1Y2ggYXMgYnJpZGdlcywgYm9uZHMsIFZMQU5zLCB0dW5uZWxzLCBhbmQgTDMgcm91dGVycy4gIFVzaW5nCitzdGFuZGFyZCBuZXRkZXYgdG9vbHMgKGlwcm91dGUyLCBldGh0b29sLCBldGMpLCB0aGUgcG9ydCBuZXRkZXYgY2FuIGFsc28KK3Byb3ZpZGUgdG8gdGhlIHVzZXIgYWNjZXNzIHRvIHRoZSBwaHlzaWNhbCBwcm9wZXJ0aWVzIG9mIHRoZSBzd2l0Y2ggcG9ydCBzdWNoCithcyBQSFkgbGluayBzdGF0ZSBhbmQgSS9PIHN0YXRpc3RpY3MuCisKK1RoZXJlIGlzIChjdXJyZW50bHkpIG5vIGhpZ2hlci1sZXZlbCBrZXJuZWwgb2JqZWN0IGZvciB0aGUgc3dpdGNoIGJleW9uZCB0aGUKK3BvcnQgbmV0ZGV2cy4gIEFsbCBvZiB0aGUgc3dpdGNoZGV2IGRyaXZlciBvcHMgYXJlIG5ldGRldiBvcHMgb3Igc3dpdGNoZGV2IG9wcy4KKworQSBzd2l0Y2ggbWFuYWdlbWVudCBwb3J0IGlzIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoZSBzd2l0Y2hkZXYgZHJpdmVyIG1vZGVsLgorVHlwaWNhbGx5LCB0aGUgbWFuYWdlbWVudCBwb3J0IGlzIG5vdCBwYXJ0aWNpcGF0aW5nIGluIG9mZmxvYWRlZCBkYXRhIHBsYW5lIGFuZAoraXMgbG9hZGVkIHdpdGggYSBkaWZmZXJlbnQgZHJpdmVyLCBzdWNoIGFzIGEgTklDIGRyaXZlciwgb24gdGhlIG1hbmFnZW1lbnQgcG9ydAorZGV2aWNlLgorCitQb3J0IE5ldGRldiBOYW1pbmcKK15eXl5eXl5eXl5eXl5eXl5eXgorCitVZGV2IHJ1bGVzIHNob3VsZCBiZSB1c2VkIGZvciBwb3J0IG5ldGRldiBuYW1pbmcsIHVzaW5nIHNvbWUgdW5pcXVlIGF0dHJpYnV0ZQorb2YgdGhlIHBvcnQgYXMgYSBrZXksIGZvciBleGFtcGxlIHRoZSBwb3J0IE1BQyBhZGRyZXNzIG9yIHRoZSBwb3J0IFBIWVMgbmFtZS4KK0hhcmQtY29kaW5nIG9mIGtlcm5lbCBuZXRkZXYgbmFtZXMgd2l0aGluIHRoZSBkcml2ZXIgaXMgZGlzY291cmFnZWQ7IGxldCB0aGUKK2tlcm5lbCBwaWNrIHRoZSBkZWZhdWx0IG5ldGRldiBuYW1lLCBhbmQgbGV0IHVkZXYgc2V0IHRoZSBmaW5hbCBuYW1lIGJhc2VkIG9uIGEKK3BvcnQgYXR0cmlidXRlLgorCitVc2luZyBwb3J0IFBIWVMgbmFtZSAobmRvX2dldF9waHlzX3BvcnRfbmFtZSkgZm9yIHRoZSBrZXkgaXMgcGFydGljdWxhcmx5Cit1c2VmdWwgZm9yIGR5bmFtaWNhbGx5LW5hbWVkIHBvcnRzIHdoZXJlIHRoZSBkZXZpY2UgbmFtZXMgaXRzIHBvcnRzIGJhc2VkIG9uCitleHRlcm5hbCBjb25maWd1cmF0aW9uLiAgRm9yIGV4YW1wbGUsIGlmIGEgcGh5c2ljYWwgNDBHIHBvcnQgaXMgc3BsaXQgbG9naWNhbGx5CitpbnRvIDQgMTBHIHBvcnRzLCByZXN1bHRpbmcgaW4gNCBwb3J0IG5ldGRldnMsIHRoZSBkZXZpY2UgY2FuIGdpdmUgYSB1bmlxdWUKK25hbWUgZm9yIGVhY2ggcG9ydCB1c2luZyBwb3J0IFBIWVMgbmFtZS4gIFRoZSB1ZGV2IHJ1bGUgd291bGQgYmU6CisKK1NVQlNZU1RFTT09Im5ldCIsIEFDVElPTj09ImFkZCIsIERSSVZFUj0iPGRyaXZlcj4iLCBBVFRSe3BoeXNfcG9ydF9uYW1lfSE9IiIsIFwKKwlOQU1FPSIkYXR0cntwaHlzX3BvcnRfbmFtZX0iCisKK1N1Z2dlc3RlZCBuYW1pbmcgY29udmVudGlvbiBpcyAic3dYcFlzWiIsIHdoZXJlIFggaXMgdGhlIHN3aXRjaCBuYW1lIG9yIElELCBZCitpcyB0aGUgcG9ydCBuYW1lIG9yIElELCBhbmQgWiBpcyB0aGUgc3ViLXBvcnQgbmFtZSBvciBJRC4gIEZvciBleGFtcGxlLCBzdzFwMXMwCit3b3VsZCBiZSBzdWItcG9ydCAwIG9uIHBvcnQgMSBvbiBzd2l0Y2ggMS4KKworU3dpdGNoIElECiteXl5eXl5eXl4KKworVGhlIHN3aXRjaGRldiBkcml2ZXIgbXVzdCBpbXBsZW1lbnQgdGhlIHN3aXRjaGRldiBvcCBzd2l0Y2hkZXZfcG9ydF9hdHRyX2dldAorZm9yIFNXSVRDSERFVl9BVFRSX0lEX1BPUlRfUEFSRU5UX0lEIGZvciBlYWNoIHBvcnQgbmV0ZGV2LCByZXR1cm5pbmcgdGhlIHNhbWUKK3BoeXNpY2FsIElEIGZvciBlYWNoIHBvcnQgb2YgYSBzd2l0Y2guICBUaGUgSUQgbXVzdCBiZSB1bmlxdWUgYmV0d2VlbiBzd2l0Y2hlcworb24gdGhlIHNhbWUgc3lzdGVtLiAgVGhlIElEIGRvZXMgbm90IG5lZWQgdG8gYmUgdW5pcXVlIGJldHdlZW4gc3dpdGNoZXMgb24KK2RpZmZlcmVudCBzeXN0ZW1zLgorCitUaGUgc3dpdGNoIElEIGlzIHVzZWQgdG8gbG9jYXRlIHBvcnRzIG9uIGEgc3dpdGNoIGFuZCB0byBrbm93IGlmIGFnZ3JlZ2F0ZWQKK3BvcnRzIGJlbG9uZyB0byB0aGUgc2FtZSBzd2l0Y2guCisKK1BvcnQgRmVhdHVyZXMKK15eXl5eXl5eXl5eXl4KKworTkVUSUZfRl9ORVROU19MT0NBTAorCitJZiB0aGUgc3dpdGNoZGV2IGRyaXZlciAoYW5kIGRldmljZSkgb25seSBzdXBwb3J0cyBvZmZsb2FkaW5nIG9mIHRoZSBkZWZhdWx0CituZXR3b3JrIG5hbWVzcGFjZSAobmV0bnMpLCB0aGUgZHJpdmVyIHNob3VsZCBzZXQgdGhpcyBmZWF0dXJlIGZsYWcgdG8gcHJldmVudAordGhlIHBvcnQgbmV0ZGV2IGZyb20gYmVpbmcgbW92ZWQgb3V0IG9mIHRoZSBkZWZhdWx0IG5ldG5zLiAgQSBuZXRucy1hd2FyZQorZHJpdmVyL2RldmljZSB3b3VsZCBub3Qgc2V0IHRoaXMgZmxhZyBhbmQgYmUgcmVzcG9uc2libGUgZm9yIHBhcnRpdGlvbmluZworaGFyZHdhcmUgdG8gcHJlc2VydmUgbmV0bnMgY29udGFpbm1lbnQuICBUaGlzIG1lYW5zIGhhcmR3YXJlIGNhbm5vdCBmb3J3YXJkCit0cmFmZmljIGZyb20gYSBwb3J0IGluIG9uZSBuYW1lc3BhY2UgdG8gYW5vdGhlciBwb3J0IGluIGFub3RoZXIgbmFtZXNwYWNlLgorCitQb3J0IFRvcG9sb2d5CiteXl5eXl5eXl5eXl5eCisKK1RoZSBwb3J0IG5ldGRldnMgcmVwcmVzZW50aW5nIHRoZSBwaHlzaWNhbCBzd2l0Y2ggcG9ydHMgY2FuIGJlIG9yZ2FuaXplZCBpbnRvCitoaWdoZXItbGV2ZWwgc3dpdGNoaW5nIGNvbnN0cnVjdHMuICBUaGUgZGVmYXVsdCBjb25zdHJ1Y3QgaXMgYSBzdGFuZGFsb25lCityb3V0ZXIgcG9ydCwgdXNlZCB0byBvZmZsb2FkIEwzIGZvcndhcmRpbmcuICBUd28gb3IgbW9yZSBwb3J0cyBjYW4gYmUgYm9uZGVkCit0b2dldGhlciB0byBmb3JtIGEgTEFHLiAgVHdvIG9yIG1vcmUgcG9ydHMgKG9yIExBR3MpIGNhbiBiZSBicmlkZ2VkIHRvIGJyaWRnZQorTDIgbmV0d29ya3MuICBWTEFOcyBjYW4gYmUgYXBwbGllZCB0byBzdWItZGl2aWRlIEwyIG5ldHdvcmtzLiAgTDItb3Zlci1MMwordHVubmVscyBjYW4gYmUgYnVpbHQgb24gcG9ydHMuICBUaGVzZSBjb25zdHJ1Y3RzIGFyZSBidWlsdCB1c2luZyBzdGFuZGFyZCBMaW51eAordG9vbHMgc3VjaCBhcyB0aGUgYnJpZGdlIGRyaXZlciwgdGhlIGJvbmRpbmcvdGVhbSBkcml2ZXJzLCBhbmQgbmV0bGluay1iYXNlZAordG9vbHMgc3VjaCBhcyBpcHJvdXRlMi4KKworVGhlIHN3aXRjaGRldiBkcml2ZXIgY2FuIGtub3cgYSBwYXJ0aWN1bGFyIHBvcnQncyBwb3NpdGlvbiBpbiB0aGUgdG9wb2xvZ3kgYnkKK21vbml0b3JpbmcgTkVUREVWX0NIQU5HRVVQUEVSIG5vdGlmaWNhdGlvbnMuICBGb3IgZXhhbXBsZSwgYSBwb3J0IG1vdmVkIGludG8gYQorYm9uZCB3aWxsIHNlZSBpdCdzIHVwcGVyIG1hc3RlciBjaGFuZ2UuICBJZiB0aGF0IGJvbmQgaXMgbW92ZWQgaW50byBhIGJyaWRnZSwKK3RoZSBib25kJ3MgdXBwZXIgbWFzdGVyIHdpbGwgY2hhbmdlLiAgQW5kIHNvIG9uLiAgVGhlIGRyaXZlciB3aWxsIHRyYWNrIHN1Y2gKK21vdmVtZW50cyB0byBrbm93IHdoYXQgcG9zaXRpb24gYSBwb3J0IGlzIGluIGluIHRoZSBvdmVyYWxsIHRvcG9sb2d5IGJ5CityZWdpc3RlcmluZyBmb3IgbmV0ZGV2aWNlIGV2ZW50cyBhbmQgYWN0aW5nIG9uIE5FVERFVl9DSEFOR0VVUFBFUi4KKworTDIgRm9yd2FyZGluZyBPZmZsb2FkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGlkZWEgaXMgdG8gb2ZmbG9hZCB0aGUgTDIgZGF0YSBmb3J3YXJkaW5nIChzd2l0Y2hpbmcpIHBhdGggZnJvbSB0aGUga2VybmVsCit0byB0aGUgc3dpdGNoZGV2IGRldmljZSBieSBtaXJyb3JpbmcgYnJpZGdlIEZEQiBlbnRyaWVzIGRvd24gdG8gdGhlIGRldmljZS4gIEFuCitGREIgZW50cnkgaXMgdGhlIHtwb3J0LCBNQUMsIFZMQU59IHR1cGxlIGZvcndhcmRpbmcgZGVzdGluYXRpb24uCisKK1RvIG9mZmxvYWRpbmcgTDIgYnJpZGdpbmcsIHRoZSBzd2l0Y2hkZXYgZHJpdmVyL2RldmljZSBzaG91bGQgc3VwcG9ydDoKKworCS0gU3RhdGljIEZEQiBlbnRyaWVzIGluc3RhbGxlZCBvbiBhIGJyaWRnZSBwb3J0CisJLSBOb3RpZmljYXRpb24gb2YgbGVhcm5lZC9mb3Jnb3R0ZW4gc3JjIG1hYy92bGFucyBmcm9tIGRldmljZQorCS0gU1RQIHN0YXRlIGNoYW5nZXMgb24gdGhlIHBvcnQKKwktIFZMQU4gZmxvb2Rpbmcgb2YgbXVsdGljYXN0L2Jyb2FkY2FzdCBhbmQgdW5rbm93biB1bmljYXN0IHBhY2tldHMKKworU3RhdGljIEZEQiBFbnRyaWVzCiteXl5eXl5eXl5eXl5eXl5eXl4KKworVGhlIHN3aXRjaGRldiBkcml2ZXIgc2hvdWxkIGltcGxlbWVudCBuZG9fZmRiX2FkZCwgbmRvX2ZkYl9kZWwgYW5kIG5kb19mZGJfZHVtcAordG8gc3VwcG9ydCBzdGF0aWMgRkRCIGVudHJpZXMgaW5zdGFsbGVkIHRvIHRoZSBkZXZpY2UuICBTdGF0aWMgYnJpZGdlIEZEQgorZW50cmllcyBhcmUgaW5zdGFsbGVkLCBmb3IgZXhhbXBsZSwgdXNpbmcgaXByb3V0ZTIgYnJpZGdlIGNtZDoKKworCWJyaWRnZSBmZGIgYWRkIEFERFIgZGV2IERFViBbdmxhbiBWSURdIFtzZWxmXQorCitUaGUgZHJpdmVyIHNob3VsZCB1c2UgdGhlIGhlbHBlciBzd2l0Y2hkZXZfcG9ydF9mZGJfeHh4IG9wcyBmb3IgbmRvX2ZkYl94eHgKK29wcywgYW5kIGhhbmRsZSBhZGQvZGVsZXRlL2R1bXAgb2YgU1dJVENIREVWX09CSl9JRF9QT1JUX0ZEQiBvYmplY3QgdXNpbmcKK3N3aXRjaGRldl9wb3J0X29ial94eHggb3BzLgorCitYWFg6IHdoYXQgc2hvdWxkIGJlIGRvbmUgaWYgb2ZmbG9hZGluZyB0aGlzIHJ1bGUgdG8gaGFyZHdhcmUgZmFpbHMgKGZvcgorZXhhbXBsZSwgZHVlIHRvIGZ1bGwgY2FwYWNpdHkgaW4gaGFyZHdhcmUgdGFibGVzKSA/CisKK05vdGU6IGJ5IGRlZmF1bHQsIHRoZSBicmlkZ2UgZG9lcyBub3QgZmlsdGVyIG9uIFZMQU4gYW5kIG9ubHkgYnJpZGdlcyB1bnRhZ2dlZAordHJhZmZpYy4gIFRvIGVuYWJsZSBWTEFOIHN1cHBvcnQsIHR1cm4gb24gVkxBTiBmaWx0ZXJpbmc6CisKKwllY2hvIDEgPi9zeXMvY2xhc3MvbmV0LzxicmlkZ2U+L2JyaWRnZS92bGFuX2ZpbHRlcmluZworCitOb3RpZmljYXRpb24gb2YgTGVhcm5lZC9Gb3Jnb3R0ZW4gU291cmNlIE1BQy9WTEFOcworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVGhlIHN3aXRjaCBkZXZpY2Ugd2lsbCBsZWFybi9mb3JnZXQgc291cmNlIE1BQyBhZGRyZXNzL1ZMQU4gb24gaW5ncmVzcyBwYWNrZXRzCithbmQgbm90aWZ5IHRoZSBzd2l0Y2ggZHJpdmVyIG9mIHRoZSBtYWMvdmxhbi9wb3J0IHR1cGxlcy4gIFRoZSBzd2l0Y2ggZHJpdmVyLAoraW4gdHVybiwgd2lsbCBub3RpZnkgdGhlIGJyaWRnZSBkcml2ZXIgdXNpbmcgdGhlIHN3aXRjaGRldiBub3RpZmllciBjYWxsOgorCisJZXJyID0gY2FsbF9zd2l0Y2hkZXZfbm90aWZpZXJzKHZhbCwgZGV2LCBpbmZvKTsKKworV2hlcmUgdmFsIGlzIFNXSVRDSERFVl9GREJfQUREIHdoZW4gbGVhcm5pbmcgYW5kIFNXSVRDSERFVl9GREJfREVMIHdoZW4KK2ZvcmdldHRpbmcsIGFuZCBpbmZvIHBvaW50cyB0byBhIHN0cnVjdCBzd2l0Y2hkZXZfbm90aWZpZXJfZmRiX2luZm8uICBPbgorU1dJVENIREVWX0ZEQl9BREQsIHRoZSBicmlkZ2UgZHJpdmVyIHdpbGwgaW5zdGFsbCB0aGUgRkRCIGVudHJ5IGludG8gdGhlCiticmlkZ2UncyBGREIgYW5kIG1hcmsgdGhlIGVudHJ5IGFzIE5URl9FWFRfTEVBUk5FRC4gIFRoZSBpcHJvdXRlMiBicmlkZ2UKK2NvbW1hbmQgd2lsbCBsYWJlbCB0aGVzZSBlbnRyaWVzICJvZmZsb2FkIjoKKworCSQgYnJpZGdlIGZkYgorCTUyOjU0OjAwOjEyOjM1OjAxIGRldiBzdzFwMSBtYXN0ZXIgYnIwIHBlcm1hbmVudAorCTAwOjAyOjAwOjAwOjAyOjAwIGRldiBzdzFwMSBtYXN0ZXIgYnIwIG9mZmxvYWQKKwkwMDowMjowMDowMDowMjowMCBkZXYgc3cxcDEgc2VsZgorCTUyOjU0OjAwOjEyOjM1OjAyIGRldiBzdzFwMiBtYXN0ZXIgYnIwIHBlcm1hbmVudAorCTAwOjAyOjAwOjAwOjAzOjAwIGRldiBzdzFwMiBtYXN0ZXIgYnIwIG9mZmxvYWQKKwkwMDowMjowMDowMDowMzowMCBkZXYgc3cxcDIgc2VsZgorCTMzOjMzOjAwOjAwOjAwOjAxIGRldiBldGgwIHNlbGYgcGVybWFuZW50CisJMDE6MDA6NWU6MDA6MDA6MDEgZGV2IGV0aDAgc2VsZiBwZXJtYW5lbnQKKwkzMzozMzpmZjowMDowMDowMCBkZXYgZXRoMCBzZWxmIHBlcm1hbmVudAorCTAxOjgwOmMyOjAwOjAwOjBlIGRldiBldGgwIHNlbGYgcGVybWFuZW50CisJMzM6MzM6MDA6MDA6MDA6MDEgZGV2IGJyMCBzZWxmIHBlcm1hbmVudAorCTAxOjAwOjVlOjAwOjAwOjAxIGRldiBicjAgc2VsZiBwZXJtYW5lbnQKKwkzMzozMzpmZjoxMjozNTowMSBkZXYgYnIwIHNlbGYgcGVybWFuZW50CisKK0xlYXJuaW5nIG9uIHRoZSBwb3J0IHNob3VsZCBiZSBkaXNhYmxlZCBvbiB0aGUgYnJpZGdlIHVzaW5nIHRoZSBicmlkZ2UgY29tbWFuZDoKKworCWJyaWRnZSBsaW5rIHNldCBkZXYgREVWIGxlYXJuaW5nIG9mZgorCitMZWFybmluZyBvbiB0aGUgZGV2aWNlIHBvcnQgc2hvdWxkIGJlIGVuYWJsZWQsIGFzIHdlbGwgYXMgbGVhcm5pbmdfc3luYzoKKworCWJyaWRnZSBsaW5rIHNldCBkZXYgREVWIGxlYXJuaW5nIG9uIHNlbGYKKwlicmlkZ2UgbGluayBzZXQgZGV2IERFViBsZWFybmluZ19zeW5jIG9uIHNlbGYKKworTGVhcm5pbmdfc3luYyBhdHRyaWJ1dGUgZW5hYmxlcyBzeW5jaW5nIG9mIHRoZSBsZWFybmVkL2ZvcmdvdHRvbiBGREIgZW50cnkgdG8KK3RoZSBicmlkZ2UncyBGREIuICBJdCdzIHBvc3NpYmxlLCBidXQgbm90IG9wdGltYWwsIHRvIGVuYWJsZSBsZWFybmluZyBvbiB0aGUKK2RldmljZSBwb3J0IGFuZCBvbiB0aGUgYnJpZGdlIHBvcnQsIGFuZCBkaXNhYmxlIGxlYXJuaW5nX3N5bmMuCisKK1RvIHN1cHBvcnQgbGVhcm5pbmcgYW5kIGxlYXJuaW5nX3N5bmMgcG9ydCBhdHRyaWJ1dGVzLCB0aGUgZHJpdmVyIGltcGxlbWVudHMKK3N3aXRjaGRldiBvcCBzd2l0Y2hkZXZfcG9ydF9hdHRyX2dldC9zZXQgZm9yCitTV0lUQ0hERVZfQVRUUl9QT1JUX0lEX0JSSURHRV9GTEFHUy4gVGhlIGRyaXZlciBzaG91bGQgaW5pdGlhbGl6ZSB0aGUgYXR0cmlidXRlcwordG8gdGhlIGhhcmR3YXJlIGRlZmF1bHRzLgorCitGREIgQWdlaW5nCiteXl5eXl5eXl5eCisKK1RoZSBicmlkZ2Ugd2lsbCBza2lwIGFnZWluZyBGREIgZW50cmllcyBtYXJrZWQgd2l0aCBOVEZfRVhUX0xFQVJORUQgYW5kIGl0IGlzCit0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIHBvcnQgZHJpdmVyL2RldmljZSB0byBhZ2Ugb3V0IHRoZXNlIGVudHJpZXMuICBJZiB0aGUKK3BvcnQgZGV2aWNlIHN1cHBvcnRzIGFnZWluZywgd2hlbiB0aGUgRkRCIGVudHJ5IGV4cGlyZXMsIGl0IHdpbGwgbm90aWZ5IHRoZQorZHJpdmVyIHdoaWNoIGluIHR1cm4gd2lsbCBub3RpZnkgdGhlIGJyaWRnZSB3aXRoIFNXSVRDSERFVl9GREJfREVMLiAgSWYgdGhlCitkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBhZ2VpbmcsIHRoZSBkcml2ZXIgY2FuIHNpbXVsYXRlIGFnZWluZyB1c2luZyBhCitnYXJiYWdlIGNvbGxlY3Rpb24gdGltZXIgdG8gbW9uaXRvciBGQkQgZW50cmllcy4gIEV4cGlyZWQgZW50cmllcyB3aWxsIGJlCitub3RpZmllZCB0byB0aGUgYnJpZGdlIHVzaW5nIFNXSVRDSERFVl9GREJfREVMLiAgU2VlIHJvY2tlciBkcml2ZXIgZm9yCitleGFtcGxlIG9mIGRyaXZlciBydW5uaW5nIGFnZWluZyB0aW1lci4KKworVG8ga2VlcCBhbiBOVEZfRVhUX0xFQVJORUQgZW50cnkgImFsaXZlIiwgdGhlIGRyaXZlciBzaG91bGQgcmVmcmVzaCB0aGUgRkRCCitlbnRyeSBieSBjYWxsaW5nIGNhbGxfc3dpdGNoZGV2X25vdGlmaWVycyhTV0lUQ0hERVZfRkRCX0FERCwgLi4uKS4gIFRoZQorbm90aWZpY2F0aW9uIHdpbGwgcmVzZXQgdGhlIEZEQiBlbnRyeSdzIGxhc3QtdXNlZCB0aW1lIHRvIG5vdy4gIFRoZSBkcml2ZXIKK3Nob3VsZCByYXRlIGxpbWl0IHJlZnJlc2ggbm90aWZpY2F0aW9ucywgZm9yIGV4YW1wbGUsIG5vIG1vcmUgdGhhbiBvbmNlIGEKK3NlY29uZC4gIChUaGUgbGFzdC11c2VkIHRpbWUgaXMgdmlzaWJsZSB1c2luZyB0aGUgYnJpZGdlIC1zIGZkYiBvcHRpb24pLgorCitTVFAgU3RhdGUgQ2hhbmdlIG9uIFBvcnQKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitJbnRlcm5hbGx5IG9yIHdpdGggYSB0aGlyZC1wYXJ0eSBTVFAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gKGUuZy4gbXN0cGQpLCB0aGUKK2JyaWRnZSBkcml2ZXIgbWFpbnRhaW5zIHRoZSBTVFAgc3RhdGUgZm9yIHBvcnRzLCBhbmQgd2lsbCBub3RpZnkgdGhlIHN3aXRjaAorZHJpdmVyIG9mIFNUUCBzdGF0ZSBjaGFuZ2Ugb24gYSBwb3J0IHVzaW5nIHRoZSBzd2l0Y2hkZXYgb3AKK3N3aXRjaGRldl9hdHRyX3BvcnRfc2V0IGZvciBTV0lUQ0hERVZfQVRUUl9QT1JUX0lEX1NUUF9VUERBVEUuCisKK1N0YXRlIGlzIG9uZSBvZiBCUl9TVEFURV8qLiAgVGhlIHN3aXRjaCBkcml2ZXIgY2FuIHVzZSBTVFAgc3RhdGUgdXBkYXRlcyB0bwordXBkYXRlIGluZ3Jlc3MgcGFja2V0IGZpbHRlciBsaXN0IGZvciB0aGUgcG9ydC4gIEZvciBleGFtcGxlLCBpZiBwb3J0IGlzCitESVNBQkxFRCwgbm8gcGFja2V0cyBzaG91bGQgcGFzcywgYnV0IGlmIHBvcnQgbW92ZXMgdG8gQkxPQ0tFRCwgdGhlbiBTVFAgQlBEVXMKK2FuZCBvdGhlciBJRUVFIDAxOjgwOmMyOnh4Onh4Onh4IGxpbmstbG9jYWwgbXVsdGljYXN0IHBhY2tldHMgY2FuIHBhc3MuCisKK05vdGUgdGhhdCBTVFAgQkRQVXMgYXJlIHVudGFnZ2VkIGFuZCBTVFAgc3RhdGUgYXBwbGllcyB0byBhbGwgVkxBTnMgb24gdGhlIHBvcnQKK3NvIHBhY2tldCBmaWx0ZXJzIHNob3VsZCBiZSBhcHBsaWVkIGNvbnNpc3RlbnRseSBhY3Jvc3MgdW50YWdnZWQgYW5kIHRhZ2dlZAorVkxBTnMgb24gdGhlIHBvcnQuCisKK0Zsb29kaW5nIEwyIGRvbWFpbgorXl5eXl5eXl5eXl5eXl5eXl5eCisKK0ZvciBhIGdpdmVuIEwyIFZMQU4gZG9tYWluLCB0aGUgc3dpdGNoIGRldmljZSBzaG91bGQgZmxvb2QgbXVsdGljYXN0L2Jyb2FkY2FzdAorYW5kIHVua25vd24gdW5pY2FzdCBwYWNrZXRzIHRvIGFsbCBwb3J0cyBpbiBkb21haW4sIGlmIGFsbG93ZWQgYnkgcG9ydCdzCitjdXJyZW50IFNUUCBzdGF0ZS4gIFRoZSBzd2l0Y2ggZHJpdmVyLCBrbm93aW5nIHdoaWNoIHBvcnRzIGFyZSB3aXRoaW4gd2hpY2gKK3ZsYW4gTDIgZG9tYWluLCBjYW4gcHJvZ3JhbSB0aGUgc3dpdGNoIGRldmljZSBmb3IgZmxvb2RpbmcuICBUaGUgcGFja2V0IG1heQorYmUgc2VudCB0byB0aGUgcG9ydCBuZXRkZXYgZm9yIHByb2Nlc3NpbmcgYnkgdGhlIGJyaWRnZSBkcml2ZXIuICBUaGUKK2JyaWRnZSBzaG91bGQgbm90IHJlZmxvb2QgdGhlIHBhY2tldCB0byB0aGUgc2FtZSBwb3J0cyB0aGUgZGV2aWNlIGZsb29kZWQsCitvdGhlcndpc2UgdGhlcmUgd2lsbCBiZSBkdXBsaWNhdGUgcGFja2V0cyBvbiB0aGUgd2lyZS4KKworVG8gYXZvaWQgZHVwbGljYXRlIHBhY2tldHMsIHRoZSBkZXZpY2UvZHJpdmVyIHNob3VsZCBtYXJrIGEgcGFja2V0IGFzIGFscmVhZHkKK2ZvcndhcmRlZCB1c2luZyBza2ItPm9mZmxvYWRfZndkX21hcmsuICBUaGUgc2FtZSBtYXJrIGlzIHNldCBvbiB0aGUgZGV2aWNlCitwb3J0cyBpbiB0aGUgZG9tYWluIHVzaW5nIGRldi0+b2ZmbG9hZF9md2RfbWFyay4gIElmIHRoZSBza2ItPm9mZmxvYWRfZndkX21hcmsKK2lzIG5vbi16ZXJvIGFuZCBtYXRjaGVzIHRoZSBmb3J3YXJkaW5nIGVncmVzcyBwb3J0J3MgZGV2LT5za2JfbWFyaywgdGhlIGtlcm5lbAord2lsbCBkcm9wIHRoZSBza2IgcmlnaHQgYmVmb3JlIHRyYW5zbWl0IG9uIHRoZSBlZ3Jlc3MgcG9ydCwgd2l0aCB0aGUKK3VuZGVyc3RhbmRpbmcgdGhhdCB0aGUgZGV2aWNlIGFscmVhZHkgZm9yd2FyZGVkIHRoZSBwYWNrZXQgb24gc2FtZSBlZ3Jlc3MgcG9ydC4KK1RoZSBkcml2ZXIgY2FuIHVzZSBzd2l0Y2hkZXZfcG9ydF9md2RfbWFya19zZXQoKSB0byBzZXQgYSBnbG9iYWxseSB1bmlxdWUgbWFyaworZm9yIHBvcnQncyBkZXYtPm9mZmxvYWRfZndkX21hcmssIGJhc2VkIG9uIHRoZSBwb3J0J3MgcGFyZW50IElEIChzd2l0Y2ggSUQpIGFuZAorYSBncm91cCBpZmluZGV4LgorCitJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIHN3aXRjaCBkZXZpY2UgdG8gbm90IGhhbmRsZSBmbG9vZGluZyBhbmQgcHVzaCB0aGUKK3BhY2tldHMgdXAgdG8gdGhlIGJyaWRnZSBkcml2ZXIgZm9yIGZsb29kaW5nLiAgVGhpcyBpcyBub3QgaWRlYWwgYXMgdGhlIG51bWJlcgorb2YgcG9ydHMgc2NhbGUgaW4gdGhlIEwyIGRvbWFpbiBhcyB0aGUgZGV2aWNlIGlzIG11Y2ggbW9yZSBlZmZpY2llbnQgYXQKK2Zsb29kaW5nIHBhY2tldHMgdGhhdCBzb2Z0d2FyZS4KKworSWYgc3VwcG9ydGVkIGJ5IHRoZSBkZXZpY2UsIGZsb29kIGNvbnRyb2wgY2FuIGJlIG9mZmxvYWRlZCB0byBpdCwgcHJldmVudGluZworY2VydGFpbiBuZXRkZXZzIGZyb20gZmxvb2RpbmcgdW5pY2FzdCB0cmFmZmljIGZvciB3aGljaCB0aGVyZSBpcyBubyBGREIgZW50cnkuCisKK0lHTVAgU25vb3BpbmcKK15eXl5eXl5eXl5eXl4KKworWFhYOiBjb21wbGV0ZSB0aGlzIHNlY3Rpb24KKworCitMMyBSb3V0aW5nIE9mZmxvYWQKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitPZmZsb2FkaW5nIEwzIHJvdXRpbmcgcmVxdWlyZXMgdGhhdCBkZXZpY2UgYmUgcHJvZ3JhbW1lZCB3aXRoIEZJQiBlbnRyaWVzIGZyb20KK3RoZSBrZXJuZWwsIHdpdGggdGhlIGRldmljZSBkb2luZyB0aGUgRklCIGxvb2t1cCBhbmQgZm9yd2FyZGluZy4gIFRoZSBkZXZpY2UKK2RvZXMgYSBsb25nZXN0IHByZWZpeCBtYXRjaCAoTFBNKSBvbiBGSUIgZW50cmllcyBtYXRjaGluZyByb3V0ZSBwcmVmaXggYW5kCitmb3J3YXJkcyB0aGUgcGFja2V0IHRvIHRoZSBtYXRjaGluZyBGSUIgZW50cnkncyBuZXh0aG9wKHMpIGVncmVzcyBwb3J0cy4KKworVG8gcHJvZ3JhbSB0aGUgZGV2aWNlLCB0aGUgZHJpdmVyIGltcGxlbWVudHMgc3VwcG9ydCBmb3IKK1NXSVRDSERFVl9PQkpfSVBWWzR8Nl1fRklCIG9iamVjdCB1c2luZyBzd2l0Y2hkZXZfcG9ydF9vYmpfeHh4IG9wcy4KK3N3aXRjaGRldl9wb3J0X29ial9hZGQgaXMgdXNlZCBmb3IgYm90aCBhZGRpbmcgYSBuZXcgRklCIGVudHJ5IHRvIHRoZSBkZXZpY2UsCitvciBtb2RpZnlpbmcgYW4gZXhpc3RpbmcgZW50cnkgb24gdGhlIGRldmljZS4KKworWFhYOiBDdXJyZW50bHksIG9ubHkgU1dJVENIREVWX09CSl9JRF9JUFY0X0ZJQiBvYmplY3RzIGFyZSBzdXBwb3J0ZWQuCisKK1NXSVRDSERFVl9PQkpfSURfSVBWNF9GSUIgb2JqZWN0IHBhc3NlczoKKworCXN0cnVjdCBzd2l0Y2hkZXZfb2JqX2lwdjRfZmliIHsgICAgICAgICAvKiBJUFY0X0ZJQiAqLworCQl1MzIgZHN0OworCQlpbnQgZHN0X2xlbjsKKwkJc3RydWN0IGZpYl9pbmZvICpmaTsKKwkJdTggdG9zOworCQl1OCB0eXBlOworCQl1MzIgbmxmbGFnczsKKwkJdTMyIHRiX2lkOworCX0gaXB2NF9maWI7CisKK3RvIGFkZC9tb2RpZnkvZGVsZXRlIElQdjQgZHN0L2Rlc3RfbGVuIHByZWZpeCBvbiB0YWJsZSB0Yl9pZC4gIFRoZSAqZmkKK3N0cnVjdHVyZSBob2xkcyBkZXRhaWxzIG9uIHRoZSByb3V0ZSBhbmQgcm91dGUncyBuZXh0aG9wcy4gICpkZXYgaXMgb25lIG9mIHRoZQorcG9ydCBuZXRkZXZzIG1lbnRpb25lZCBpbiB0aGUgcm91dGVzIG5leHQgaG9wIGxpc3QuICBJZiB0aGUgb3V0cHV0IHBvcnQgbmV0ZGV2cworcmVmZXJlbmNlZCBpbiB0aGUgcm91dGUncyBuZXh0aG9wIGxpc3QgZG9uJ3QgYWxsIGhhdmUgdGhlIHNhbWUgc3dpdGNoIElELCB0aGUKK2RyaXZlciBpcyBub3QgY2FsbGVkIHRvIGFkZC9tb2RpZnkvZGVsZXRlIHRoZSBGSUIgZW50cnkuCisKK1JvdXRlcyBvZmZsb2FkZWQgdG8gdGhlIGRldmljZSBhcmUgbGFiZWxlZCB3aXRoICJvZmZsb2FkIiBpbiB0aGUgaXAgcm91dGUKK2xpc3Rpbmc6CisKKwkkIGlwIHJvdXRlIHNob3cKKwlkZWZhdWx0IHZpYSAxOTIuMTY4LjAuMiBkZXYgZXRoMAorCTExLjAuMC4wLzMwIGRldiBzdzFwMSAgcHJvdG8ga2VybmVsICBzY29wZSBsaW5rICBzcmMgMTEuMC4wLjIgb2ZmbG9hZAorCTExLjAuMC40LzMwIHZpYSAxMS4wLjAuMSBkZXYgc3cxcDEgIHByb3RvIHplYnJhICBtZXRyaWMgMjAgb2ZmbG9hZAorCTExLjAuMC44LzMwIGRldiBzdzFwMiAgcHJvdG8ga2VybmVsICBzY29wZSBsaW5rICBzcmMgMTEuMC4wLjEwIG9mZmxvYWQKKwkxMS4wLjAuMTIvMzAgdmlhIDExLjAuMC45IGRldiBzdzFwMiAgcHJvdG8gemVicmEgIG1ldHJpYyAyMCBvZmZsb2FkCisJMTIuMC4wLjIgIHByb3RvIHplYnJhICBtZXRyaWMgMzAgb2ZmbG9hZAorCQluZXh0aG9wIHZpYSAxMS4wLjAuMSAgZGV2IHN3MXAxIHdlaWdodCAxCisJCW5leHRob3AgdmlhIDExLjAuMC45ICBkZXYgc3cxcDIgd2VpZ2h0IDEKKwkxMi4wLjAuMyB2aWEgMTEuMC4wLjEgZGV2IHN3MXAxICBwcm90byB6ZWJyYSAgbWV0cmljIDIwIG9mZmxvYWQKKwkxMi4wLjAuNCB2aWEgMTEuMC4wLjkgZGV2IHN3MXAyICBwcm90byB6ZWJyYSAgbWV0cmljIDIwIG9mZmxvYWQKKwkxOTIuMTY4LjAuMC8yNCBkZXYgZXRoMCAgcHJvdG8ga2VybmVsICBzY29wZSBsaW5rICBzcmMgMTkyLjE2OC4wLjE1CisKK1hYWDogYWRkL21vZC9kZWwgSVB2NiBGSUIgQVBJCisKK05leHRob3AgUmVzb2x1dGlvbgorXl5eXl5eXl5eXl5eXl5eXl5eCisKK1RoZSBGSUIgZW50cnkncyBuZXh0aG9wIGxpc3QgY29udGFpbnMgdGhlIG5leHRob3AgdHVwbGUgKGdhdGV3YXksIGRldiksIGJ1dCBmb3IKK3RoZSBzd2l0Y2ggZGV2aWNlIHRvIGZvcndhcmQgdGhlIHBhY2tldCB3aXRoIHRoZSBjb3JyZWN0IGRzdCBtYWMgYWRkcmVzcywgdGhlCituZXh0aG9wIGdhdGV3YXlzIG11c3QgYmUgcmVzb2x2ZWQgdG8gdGhlIG5laWdoYm9yJ3MgbWFjIGFkZHJlc3MuICBOZWlnaGJvciBtYWMKK2FkZHJlc3MgZGlzY292ZXJ5IGNvbWVzIHZpYSB0aGUgQVJQIChvciBORCkgcHJvY2VzcyBhbmQgaXMgYXZhaWxhYmxlIHZpYSB0aGUKK2FycF90YmwgbmVpZ2hib3IgdGFibGUuICBUbyByZXNvbHZlIHRoZSByb3V0ZXMgbmV4dGhvcCBnYXRld2F5cywgdGhlIGRyaXZlcgorc2hvdWxkIHRyaWdnZXIgdGhlIGtlcm5lbCdzIG5laWdoYm9yIHJlc29sdXRpb24gcHJvY2Vzcy4gIFNlZSB0aGUgcm9ja2VyCitkcml2ZXIncyByb2NrZXJfcG9ydF9pcHY0X3Jlc29sdmUoKSBmb3IgYW4gZXhhbXBsZS4KKworVGhlIGRyaXZlciBjYW4gbW9uaXRvciBmb3IgdXBkYXRlcyB0byBhcnBfdGJsIHVzaW5nIHRoZSBuZXRldmVudCBub3RpZmllcgorTkVURVZFTlRfTkVJR0hfVVBEQVRFLiAgVGhlIGRldmljZSBjYW4gYmUgcHJvZ3JhbW1lZCB3aXRoIHJlc29sdmVkIG5leHRob3BzCitmb3IgdGhlIHJvdXRlcyBhcyBhcnBfdGJsIHVwZGF0ZXMuICBUaGUgZHJpdmVyIGltcGxlbWVudHMgbmRvX25laWdoX2Rlc3Ryb3kKK3RvIGtub3cgd2hlbiBhcnBfdGJsIG5laWdoYm9yIGVudHJpZXMgYXJlIHB1cmdlZCBmcm9tIHRoZSBwb3J0LgorCitUcmFuc2FjdGlvbiBpdGVtIHF1ZXVlCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0ZvciBzd2l0Y2hkZXYgb3BzIGF0dHJfc2V0IGFuZCBvYmpfYWRkLCB0aGVyZSBpcyBhIDIgcGhhc2UgdHJhbnNhY3Rpb24gbW9kZWwKK3VzZWQuIEZpcnN0IHBoYXNlIGlzIHRvICJwcmVwYXJlIiBhbnl0aGluZyBuZWVkZWQsIGluY2x1ZGluZyB2YXJpb3VzIGNoZWNrcywKK21lbW9yeSBhbGxvY2F0aW9uLCBldGMuIFRoZSBnb2FsIGlzIHRvIGhhbmRsZSB0aGUgc3R1ZmYgdGhhdCBpcyBub3QgdW5saWtlbHkKK3RvIGZhaWwgaGVyZS4gVGhlIHNlY29uZCBwaGFzZSBpcyB0byAiY29tbWl0IiB0aGUgYWN0dWFsIGNoYW5nZXMuCisKK1N3aXRjaGRldiBwcm92aWRlcyBhbiBpbmZ0cmFzdHJ1Y3R1cmUgZm9yIHNoYXJpbmcgaXRlbXMgKGZvciBleGFtcGxlIG1lbW9yeQorYWxsb2NhdGlvbnMpIGJldHdlZW4gdGhlIHR3byBwaGFzZXMuCisKK1RoZSBvYmplY3QgY3JlYXRlZCBieSBhIGRyaXZlciBpbiAicHJlcGFyZSIgcGhhc2UgYW5kIGl0IGlzIHF1ZXVlZCB1cCBieToKK3N3aXRjaGRldl90cmFuc19pdGVtX2VucXVldWUoKQorRHVyaW5nIHRoZSAiY29tbWl0IiBwaGFzZSwgdGhlIGRyaXZlciBnZXRzIHRoZSBvYmplY3QgYnk6Citzd2l0Y2hkZXZfdHJhbnNfaXRlbV9kZXF1ZXVlKCkKKworSWYgYSB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIGR1cmluZyAicHJlcGFyZSIgcGhhc2UsIHN3aXRjaGRldiBjb2RlIHdpbGwgaGFuZGxlCitjbGVhbnVwIG9mIHRoZSBxdWV1ZWQtdXAgb2JqZWN0cy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy90Yy1hY3Rpb25zLWVudi1ydWxlcy50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdGMtYWN0aW9ucy1lbnYtcnVsZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNzgxNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdGMtYWN0aW9ucy1lbnYtcnVsZXMudHh0CkBAIC0wLDAgKzEsMjQgQEAKKworVGhlICJlbnZpcm9ubWVudGFsIiBydWxlcyBmb3IgYXV0aG9ycyBvZiBhbnkgbmV3IHRjIGFjdGlvbnMgYXJlOgorCisxKSBJZiB5b3Ugc3RlYWxldGggb3IgYm9ycm93ZXRoIGFueSBwYWNrZXQgdGhvdSBzaGFsdCBiZSBicmFuY2hpbmcKK2Zyb20gdGhlIHJpZ2h0ZW91cyBwYXRoIGFuZCB0aG91IHNoYWx0IGNsb25ldGguCisKK0ZvciBleGFtcGxlIGlmIHlvdXIgYWN0aW9uIHF1ZXVlcyBhIHBhY2tldCB0byBiZSBwcm9jZXNzZWQgbGF0ZXIsCitvciBpbnRlbnRpb25hbGx5IGJyYW5jaGVzIGJ5IHJlZGlyZWN0aW5nIGEgcGFja2V0LCB0aGVuIHlvdSBuZWVkIHRvCitjbG9uZSB0aGUgcGFja2V0LgorCisyKSBJZiB5b3UgbXVuZ2UgYW55IHBhY2tldCB0aG91IHNoYWx0IGNhbGwgcHNrYl9leHBhbmRfaGVhZCBpbiB0aGUgY2FzZQorc29tZW9uZSBlbHNlIGlzIHJlZmVyZW5jaW5nIHRoZSBza2IuIEFmdGVyIHRoYXQgeW91ICJvd24iIHRoZSBza2IuCisKKzMpIERyb3BwaW5nIHBhY2tldHMgeW91IGRvbid0IG93biBpcyBhIG5vLW5vLiBZb3Ugc2ltcGx5IHJldHVybgorVENfQUNUX1NIT1QgdG8gdGhlIGNhbGxlciBhbmQgdGhleSB3aWxsIGRyb3AgaXQuCisKK1RoZSAiZW52aXJvbm1lbnRhbCIgcnVsZXMgZm9yIGNhbGxlcnMgb2YgYWN0aW9ucyAocWRpc2NzIGV0YykgYXJlOgorCisqKSBUaG91IGFydCByZXNwb25zaWJsZSBmb3IgZnJlZWluZyBhbnl0aGluZyByZXR1cm5lZCBhcyBiZWluZworVENfQUNUX1NIT1QvU1RPTEVOL1FVRVVFRC4gSWYgbm9uZSBvZiBUQ19BQ1RfU0hPVC9TVE9MRU4vUVVFVUVEIGlzCityZXR1cm5lZCwgdGhlbiBhbGwgaXMgZ3JlYXQgYW5kIHlvdSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nLgorCitQb3N0IG9uIG5ldGRldiBpZiBzb21ldGhpbmcgaXMgdW5jbGVhci4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RjcC10aGluLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy90Y3AtdGhpbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTUxZTIyOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy90Y3AtdGhpbi50eHQKQEAgLTAsMCArMSw0NyBAQAorVGhpbi1zdHJlYW1zIGFuZCBUQ1AKKz09PT09PT09PT09PT09PT09PT09CitBIHdpZGUgcmFuZ2Ugb2YgSW50ZXJuZXQtYmFzZWQgc2VydmljZXMgdGhhdCB1c2UgcmVsaWFibGUgdHJhbnNwb3J0Citwcm90b2NvbHMgZGlzcGxheSB3aGF0IHdlIGNhbGwgdGhpbi1zdHJlYW0gcHJvcGVydGllcy4gVGhpcyBtZWFucwordGhhdCB0aGUgYXBwbGljYXRpb24gc2VuZHMgZGF0YSB3aXRoIHN1Y2ggYSBsb3cgcmF0ZSB0aGF0IHRoZQorcmV0cmFuc21pc3Npb24gbWVjaGFuaXNtcyBvZiB0aGUgdHJhbnNwb3J0IHByb3RvY29sIGFyZSBub3QgZnVsbHkKK2VmZmVjdGl2ZS4gSW4gdGltZS1kZXBlbmRlbnQgc2NlbmFyaW9zIChsaWtlIG9ubGluZSBnYW1lcywgY29udHJvbAorc3lzdGVtcywgc3RvY2sgdHJhZGluZyBldGMuKSB3aGVyZSB0aGUgdXNlciBleHBlcmllbmNlIGRlcGVuZHMKK29uIHRoZSBkYXRhIGRlbGl2ZXJ5IGxhdGVuY3ksIHBhY2tldCBsb3NzIGNhbiBiZSBkZXZhc3RhdGluZyBmb3IKK3RoZSBzZXJ2aWNlIHF1YWxpdHkuIEV4dHJlbWUgbGF0ZW5jaWVzIGFyZSBjYXVzZWQgYnkgVENQJ3MKK2RlcGVuZGVuY3kgb24gdGhlIGFycml2YWwgb2YgbmV3IGRhdGEgZnJvbSB0aGUgYXBwbGljYXRpb24gdG8gdHJpZ2dlcgorcmV0cmFuc21pc3Npb25zIGVmZmVjdGl2ZWx5IHRocm91Z2ggZmFzdCByZXRyYW5zbWl0IGluc3RlYWQgb2YKK3dhaXRpbmcgZm9yIGxvbmcgdGltZW91dHMuCisKK0FmdGVyIGFuYWx5c2luZyBhIGxhcmdlIG51bWJlciBvZiB0aW1lLWRlcGVuZGVudCBpbnRlcmFjdGl2ZQorYXBwbGljYXRpb25zLCB3ZSBoYXZlIHNlZW4gdGhhdCB0aGV5IG9mdGVuIHByb2R1Y2UgdGhpbiBzdHJlYW1zCithbmQgYWxzbyBzdGF5IHdpdGggdGhpcyB0cmFmZmljIHBhdHRlcm4gdGhyb3VnaG91dCBpdHMgZW50aXJlCitsaWZlc3Bhbi4gVGhlIGNvbWJpbmF0aW9uIG9mIHRpbWUtZGVwZW5kZW5jeSBhbmQgdGhlIGZhY3QgdGhhdCB0aGUKK3N0cmVhbXMgcHJvdm9rZSBoaWdoIGxhdGVuY2llcyB3aGVuIHVzaW5nIFRDUCBpcyB1bmZvcnR1bmF0ZS4KKworSW4gb3JkZXIgdG8gcmVkdWNlIGFwcGxpY2F0aW9uLWxheWVyIGxhdGVuY3kgd2hlbiBwYWNrZXRzIGFyZSBsb3N0LAorYSBzZXQgb2YgbWVjaGFuaXNtcyBoYXMgYmVlbiBtYWRlLCB3aGljaCBhZGRyZXNzIHRoZXNlIGxhdGVuY3kgaXNzdWVzCitmb3IgdGhpbiBzdHJlYW1zLiBJbiBzaG9ydCwgaWYgdGhlIGtlcm5lbCBkZXRlY3RzIGEgdGhpbiBzdHJlYW0sCit0aGUgcmV0cmFuc21pc3Npb24gbWVjaGFuaXNtcyBhcmUgbW9kaWZpZWQgaW4gdGhlIGZvbGxvd2luZyBtYW5uZXI6CisKKzEpIElmIHRoZSBzdHJlYW0gaXMgdGhpbiwgZmFzdCByZXRyYW5zbWl0IG9uIHRoZSBmaXJzdCBkdXBBQ0suCisyKSBJZiB0aGUgc3RyZWFtIGlzIHRoaW4sIGRvIG5vdCBhcHBseSBleHBvbmVudGlhbCBiYWNrb2ZmLgorCitUaGVzZSBlbmhhbmNlbWVudHMgYXJlIGFwcGxpZWQgb25seSBpZiB0aGUgc3RyZWFtIGlzIGRldGVjdGVkIGFzCit0aGluLiBUaGlzIGlzIGFjY29tcGxpc2hlZCBieSBkZWZpbmluZyBhIHRocmVzaG9sZCBmb3IgdGhlIG51bWJlcgorb2YgcGFja2V0cyBpbiBmbGlnaHQuIElmIHRoZXJlIGFyZSBsZXNzIHRoYW4gNCBwYWNrZXRzIGluIGZsaWdodCwKK2Zhc3QgcmV0cmFuc21pc3Npb25zIGNhbiBub3QgYmUgdHJpZ2dlcmVkLCBhbmQgdGhlIHN0cmVhbSBpcyBwcm9uZQordG8gZXhwZXJpZW5jZSBoaWdoIHJldHJhbnNtaXNzaW9uIGxhdGVuY2llcy4KKworU2luY2UgdGhlc2UgbWVjaGFuaXNtcyBhcmUgdGFyZ2V0ZWQgYXQgdGltZS1kZXBlbmRlbnQgYXBwbGljYXRpb25zLAordGhleSBtdXN0IGJlIHNwZWNpZmljYWxseSBhY3RpdmF0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uIHVzaW5nIHRoZQorVENQX1RISU5fTElORUFSX1RJTUVPVVRTIGFuZCBUQ1BfVEhJTl9EVVBBQ0sgSU9DVExTIG9yIHRoZQordGNwX3RoaW5fbGluZWFyX3RpbWVvdXRzIGFuZCB0Y3BfdGhpbl9kdXBhY2sgc3lzY3Rscy4gQm90aAorbW9kaWZpY2F0aW9ucyBhcmUgdHVybmVkIG9mZiBieSBkZWZhdWx0LgorCitSZWZlcmVuY2VzCis9PT09PT09PT09CitNb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBtb2RpZmljYXRpb25zLCBhcyB3ZWxsIGFzIGEgd2lkZSByYW5nZSBvZgorZXhwZXJpbWVudGFsIGRhdGEgY2FuIGJlIGZvdW5kIGhlcmU6CisiSW1wcm92aW5nIGxhdGVuY3kgZm9yIGludGVyYWN0aXZlLCB0aGluLXN0cmVhbSBhcHBsaWNhdGlvbnMgb3ZlcgorcmVsaWFibGUgdHJhbnNwb3J0IgoraHR0cDovL3NpbXVsYS5uby9yZXNlYXJjaC9uZC9wdWJsaWNhdGlvbnMvU2ltdWxhLm5kLjQ3Ny9zaW11bGFfcGRmX2ZpbGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy90Y3AudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RjcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRjNGMwZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy90Y3AudHh0CkBAIC0wLDAgKzEsMTA2IEBACitUQ1AgcHJvdG9jb2wKKz09PT09PT09PT09PQorCitMYXN0IHVwZGF0ZWQ6IDkgRmVicnVhcnkgMjAwOAorCitDb250ZW50cworPT09PT09PT0KKworLSBDb25nZXN0aW9uIGNvbnRyb2wKKy0gSG93IHRoZSBuZXcgVENQIG91dHB1dCBtYWNoaW5lIFtueWldIHdvcmtzCisKK0Nvbmdlc3Rpb24gY29udHJvbAorPT09PT09PT09PT09PT09PT09CisKK1RoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGFyZSB1c2VkIGluIHRoZSB0Y3Bfc29jayBmb3IgY29uZ2VzdGlvbiBjb250cm9sOgorc25kX2N3bmQJCVRoZSBzaXplIG9mIHRoZSBjb25nZXN0aW9uIHdpbmRvdworc25kX3NzdGhyZXNoCQlTbG93IHN0YXJ0IHRocmVzaG9sZC4gV2UgYXJlIGluIHNsb3cgc3RhcnQgaWYKKwkJCXNuZF9jd25kIGlzIGxlc3MgdGhhbiB0aGlzLgorc25kX2N3bmRfY250CQlBIGNvdW50ZXIgdXNlZCB0byBzbG93IGRvd24gdGhlIHJhdGUgb2YgaW5jcmVhc2UKKwkJCW9uY2Ugd2UgZXhjZWVkIHNsb3cgc3RhcnQgdGhyZXNob2xkLgorc25kX2N3bmRfY2xhbXAJCVRoaXMgaXMgdGhlIG1heGltdW0gc2l6ZSB0aGF0IHNuZF9jd25kIGNhbiBncm93IHRvLgorc25kX2N3bmRfc3RhbXAJCVRpbWVzdGFtcCBmb3Igd2hlbiBjb25nZXN0aW9uIHdpbmRvdyBsYXN0IHZhbGlkYXRlZC4KK3NuZF9jd25kX3VzZWQJCVVzZWQgYXMgYSBoaWdod2F0ZXIgbWFyayBmb3IgaG93IG11Y2ggb2YgdGhlCisJCQljb25nZXN0aW9uIHdpbmRvdyBpcyBpbiB1c2UuIEl0IGlzIHVzZWQgdG8gYWRqdXN0CisJCQlzbmRfY3duZCBkb3duIHdoZW4gdGhlIGxpbmsgaXMgbGltaXRlZCBieSB0aGUKKwkJCWFwcGxpY2F0aW9uIHJhdGhlciB0aGFuIHRoZSBuZXR3b3JrLgorCitBcyBvZiAyLjYuMTMsIExpbnV4IHN1cHBvcnRzIHBsdWdnYWJsZSBjb25nZXN0aW9uIGNvbnRyb2wgYWxnb3JpdGhtcy4KK0EgY29uZ2VzdGlvbiBjb250cm9sIG1lY2hhbmlzbSBjYW4gYmUgcmVnaXN0ZXJlZCB0aHJvdWdoIGZ1bmN0aW9ucyBpbgordGNwX2NvbmcuYy4gVGhlIGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgbWVjaGFuaXNtIGFyZQorcmVnaXN0ZXJlZCB2aWEgcGFzc2luZyBhIHRjcF9jb25nZXN0aW9uX29wcyBzdHJ1Y3QgdG8KK3RjcF9yZWdpc3Rlcl9jb25nZXN0aW9uX2NvbnRyb2wuIEFzIGEgbWluaW11bSBuYW1lLCBzc3RocmVzaCwKK2NvbmdfYXZvaWQgbXVzdCBiZSB2YWxpZC4KKworUHJpdmF0ZSBkYXRhIGZvciBhIGNvbmdlc3Rpb24gY29udHJvbCBtZWNoYW5pc20gaXMgc3RvcmVkIGluIHRwLT5jYV9wcml2LgordGNwX2NhKHRwKSByZXR1cm5zIGEgcG9pbnRlciB0byB0aGlzIHNwYWNlLiAgVGhpcyBpcyBwcmVhbGxvY2F0ZWQgc3BhY2UgLSBpdAoraXMgaW1wb3J0YW50IHRvIGNoZWNrIHRoZSBzaXplIG9mIHlvdXIgcHJpdmF0ZSBkYXRhIHdpbGwgZml0IHRoaXMgc3BhY2UsIG9yCithbHRlcm5hdGl2ZWx5IHNwYWNlIGNvdWxkIGJlIGFsbG9jYXRlZCBlbHNld2hlcmUgYW5kIGEgcG9pbnRlciB0byBpdCBjb3VsZAorYmUgc3RvcmVkIGhlcmUuCisKK1RoZXJlIGFyZSB0aHJlZSBraW5kcyBvZiBjb25nZXN0aW9uIGNvbnRyb2wgYWxnb3JpdGhtcyBjdXJyZW50bHk6IFRoZQorc2ltcGxlc3Qgb25lcyBhcmUgZGVyaXZlZCBmcm9tIFRDUCByZW5vIChoaWdoc3BlZWQsIHNjYWxhYmxlKSBhbmQganVzdAorcHJvdmlkZSBhbiBhbHRlcm5hdGl2ZSB0aGUgY29uZ2VzdGlvbiB3aW5kb3cgY2FsY3VsYXRpb24uIE1vcmUgY29tcGxleAorb25lcyBsaWtlIEJJQyB0cnkgdG8gbG9vayBhdCBvdGhlciBldmVudHMgdG8gcHJvdmlkZSBiZXR0ZXIKK2hldXJpc3RpY3MuICBUaGVyZSBhcmUgYWxzbyByb3VuZCB0cmlwIHRpbWUgYmFzZWQgYWxnb3JpdGhtcyBsaWtlCitWZWdhcyBhbmQgV2VzdHdvb2QrLgorCitHb29kIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wgaXMgYSBjb21wbGV4IHByb2JsZW0gYmVjYXVzZSB0aGUgYWxnb3JpdGhtCituZWVkcyB0byBtYWludGFpbiBmYWlybmVzcyBhbmQgcGVyZm9ybWFuY2UuIFBsZWFzZSByZXZpZXcgY3VycmVudAorcmVzZWFyY2ggYW5kIFJGQydzIGJlZm9yZSBkZXZlbG9waW5nIG5ldyBtb2R1bGVzLgorCitUaGUgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hpY2ggY29uZ2VzdGlvbiBjb250cm9sIG1lY2hhbmlzbSBpcworZGV0ZXJtaW5lZCBieSB0aGUgc2V0dGluZyBvZiB0aGUgc3lzY3RsIG5ldC5pcHY0LnRjcF9jb25nZXN0aW9uX2NvbnRyb2wuCitUaGUgZGVmYXVsdCBjb25nZXN0aW9uIGNvbnRyb2wgd2lsbCBiZSB0aGUgbGFzdCBvbmUgcmVnaXN0ZXJlZCAoTElGTyk7CitzbyBpZiB5b3UgYnVpbHQgZXZlcnl0aGluZyBhcyBtb2R1bGVzLCB0aGUgZGVmYXVsdCB3aWxsIGJlIHJlbm8uIElmIHlvdQorYnVpbGQgd2l0aCB0aGUgZGVmYXVsdHMgZnJvbSBLY29uZmlnLCB0aGVuIENVQklDIHdpbGwgYmUgYnVpbHRpbiAobm90IGEKK21vZHVsZSkgYW5kIGl0IHdpbGwgZW5kIHVwIHRoZSBkZWZhdWx0LgorCitJZiB5b3UgcmVhbGx5IHdhbnQgYSBwYXJ0aWN1bGFyIGRlZmF1bHQgdmFsdWUgdGhlbiB5b3Ugd2lsbCBuZWVkCit0byBzZXQgaXQgd2l0aCB0aGUgc3lzY3RsLiAgSWYgeW91IHVzZSBhIHN5c2N0bCwgdGhlIG1vZHVsZSB3aWxsIGJlIGF1dG9sb2FkZWQKK2lmIG5lZWRlZCBhbmQgeW91IHdpbGwgZ2V0IHRoZSBleHBlY3RlZCBwcm90b2NvbC4gSWYgeW91IGFzayBmb3IgYW4KK3Vua25vd24gY29uZ2VzdGlvbiBtZXRob2QsIHRoZW4gdGhlIHN5c2N0bCBhdHRlbXB0IHdpbGwgZmFpbC4KKworSWYgeW91IHJlbW92ZSBhIHRjcCBjb25nZXN0aW9uIGNvbnRyb2wgbW9kdWxlLCB0aGVuIHlvdSB3aWxsIGdldCB0aGUgbmV4dAorYXZhaWxhYmxlIG9uZS4gU2luY2UgcmVubyBjYW5ub3QgYmUgYnVpbHQgYXMgYSBtb2R1bGUsIGFuZCBjYW5ub3QgYmUKK2RlbGV0ZWQsIGl0IHdpbGwgYWx3YXlzIGJlIGF2YWlsYWJsZS4KKworSG93IHRoZSBuZXcgVENQIG91dHB1dCBtYWNoaW5lIFtueWldIHdvcmtzLgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitEYXRhIGlzIGtlcHQgb24gYSBzaW5nbGUgcXVldWUuIFRoZSBza2ItPnVzZXJzIGZsYWcgdGVsbHMgdXMgaWYgdGhlIGZyYW1lIGlzCitvbmUgdGhhdCBoYXMgYmVlbiBxdWV1ZWQgYWxyZWFkeS4gVG8gYWRkIGEgZnJhbWUgd2UgdGhyb3cgaXQgb24gdGhlIGVuZC4gQWNrCit3YWxrcyBkb3duIHRoZSBsaXN0IGZyb20gdGhlIHN0YXJ0LgorCitXZSBrZWVwIGEgc2V0IG9mIGNvbnRyb2wgZmxhZ3MKKworCisJc2stPnRjcF9wZW5kX2V2ZW50CisKKwkJVENQX1BFTkRfQUNLCQkJQWNrIG5lZWRlZAorCQlUQ1BfQUNLX05PVwkJCU5lZWRlZCBub3cKKwkJVENQX1dJTkRPVwkJCVdpbmRvdyB1cGRhdGUgY2hlY2sKKwkJVENQX1dJTlpFUk8JCQlaZXJvIHByb2JpbmcKKworCisJc2stPnRyYW5zbWl0X3F1ZXVlCQlUaGUgdHJhbnNtaXNzaW9uIGZyYW1lIGJlZ2luCisJc2stPnRyYW5zbWl0X25ldwkJRmlyc3QgbmV3IGZyYW1lIHBvaW50ZXIKKwlzay0+dHJhbnNtaXRfZW5kCQlXaGVyZSB0byBhZGQgZnJhbWVzCisKKwlzay0+dGNwX2xhc3RfdHhfYWNrCQlMYXN0IGFjayBzZWVuCisJc2stPnRjcF9kdXBfYWNrCQkJRHVwIGFjayBjb3VudCBmb3IgZmFzdCByZXRyYW5zbWl0CisKKworRnJhbWVzIGFyZSBxdWV1ZWQgZm9yIG91dHB1dCBieSB0Y3Bfd3JpdGUuIFdlIGRvIG91ciBiZXN0IHRvIHNlbmQgdGhlIGZyYW1lcworb2ZmIGltbWVkaWF0ZWx5IGlmIHBvc3NpYmxlLCBidXQgb3RoZXJ3aXNlIHF1ZXVlIGFuZCBjb21wdXRlIHRoZSBib2R5CitjaGVja3N1bSBpbiB0aGUgY29weS4gCisKK1doZW4gYSB3cml0ZSBpcyBkb25lIHdlIHRyeSB0byBjbGVhciBhbnkgcGVuZGluZyBldmVudHMgYW5kIHBpZ2d5IGJhY2sgdGhlbS4KK0lmIHRoZSB3aW5kb3cgaXMgZnVsbCB3ZSBxdWV1ZSBmdWxsIHNpemVkIGZyYW1lcy4gT24gdGhlIGZpcnN0IHRpbWVvdXQgaW4KK3plcm8gd2luZG93IHdlIHNwbGl0IHRoaXMuCisKK09uIGEgdGltZXIgd2Ugd2FsayB0aGUgcmV0cmFuc21pdCBsaXN0IHRvIHNlbmQgYW55IHJldHJhbnNtaXRzLCB1cGRhdGUgdGhlCitiYWNrb2ZmIHRpbWVycyBldGMuIEEgY2hhbmdlIG9mIHJvdXRlIHRhYmxlIHN0YW1wIGNhdXNlcyBhIGNoYW5nZSBvZiBoZWFkZXIKK2FuZCByZWNvbXB1dGUuIFdlIGFkZCBhbnkgbmV3IHRjcCBsZXZlbCBoZWFkZXJzIGFuZCByZWZpbmlzaCB0aGUgY2hlY2tzdW0KK2JlZm9yZSBzZW5kaW5nLiAKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RlYW0udHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RlYW0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMDEzNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdGVhbS50eHQKQEAgLTAsMCArMSwyIEBACitUZWFtIGRldmljZXMgYXJlIGRyaXZlbiBmcm9tIHVzZXJzcGFjZSB2aWEgbGlidGVhbSBsaWJyYXJ5IHdoaWNoIGlzIGhlcmU6CisJaHR0cHM6Ly9naXRodWIuY29tL2pwaXJrby9saWJ0ZWFtCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdGltZXN0YW1waW5nLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy90aW1lc3RhbXBpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5NzczMzkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdGltZXN0YW1waW5nLnR4dApAQCAtMCwwICsxLDQ2NCBAQAorCisxLiBDb250cm9sIEludGVyZmFjZXMKKworVGhlIGludGVyZmFjZXMgZm9yIHJlY2VpdmluZyBuZXR3b3JrIHBhY2thZ2VzIHRpbWVzdGFtcHMgYXJlOgorCisqIFNPX1RJTUVTVEFNUAorICBHZW5lcmF0ZXMgYSB0aW1lc3RhbXAgZm9yIGVhY2ggaW5jb21pbmcgcGFja2V0IGluIChub3QgbmVjZXNzYXJpbHkKKyAgbW9ub3RvbmljKSBzeXN0ZW0gdGltZS4gUmVwb3J0cyB0aGUgdGltZXN0YW1wIHZpYSByZWN2bXNnKCkgaW4gYQorICBjb250cm9sIG1lc3NhZ2UgYXMgc3RydWN0IHRpbWV2YWwgKHVzZWMgcmVzb2x1dGlvbikuCisKKyogU09fVElNRVNUQU1QTlMKKyAgU2FtZSB0aW1lc3RhbXBpbmcgbWVjaGFuaXNtIGFzIFNPX1RJTUVTVEFNUCwgYnV0IHJlcG9ydHMgdGhlCisgIHRpbWVzdGFtcCBhcyBzdHJ1Y3QgdGltZXNwZWMgKG5zZWMgcmVzb2x1dGlvbikuCisKKyogSVBfTVVMVElDQVNUX0xPT1AgKyBTT19USU1FU1RBTVBbTlNdCisgIE9ubHkgZm9yIG11bHRpY2FzdDphcHByb3hpbWF0ZSB0cmFuc21pdCB0aW1lc3RhbXAgb2J0YWluZWQgYnkKKyAgcmVhZGluZyB0aGUgbG9vcGVkIHBhY2tldCByZWNlaXZlIHRpbWVzdGFtcC4KKworKiBTT19USU1FU1RBTVBJTkcKKyAgR2VuZXJhdGVzIHRpbWVzdGFtcHMgb24gcmVjZXB0aW9uLCB0cmFuc21pc3Npb24gb3IgYm90aC4gU3VwcG9ydHMKKyAgbXVsdGlwbGUgdGltZXN0YW1wIHNvdXJjZXMsIGluY2x1ZGluZyBoYXJkd2FyZS4gU3VwcG9ydHMgZ2VuZXJhdGluZworICB0aW1lc3RhbXBzIGZvciBzdHJlYW0gc29ja2V0cy4KKworCisxLjEgU09fVElNRVNUQU1QOgorCitUaGlzIHNvY2tldCBvcHRpb24gZW5hYmxlcyB0aW1lc3RhbXBpbmcgb2YgZGF0YWdyYW1zIG9uIHRoZSByZWNlcHRpb24KK3BhdGguIEJlY2F1c2UgdGhlIGRlc3RpbmF0aW9uIHNvY2tldCwgaWYgYW55LCBpcyBub3Qga25vd24gZWFybHkgaW4KK3RoZSBuZXR3b3JrIHN0YWNrLCB0aGUgZmVhdHVyZSBoYXMgdG8gYmUgZW5hYmxlZCBmb3IgYWxsIHBhY2tldHMuIFRoZQorc2FtZSBpcyB0cnVlIGZvciBhbGwgZWFybHkgcmVjZWl2ZSB0aW1lc3RhbXAgb3B0aW9ucy4KKworRm9yIGludGVyZmFjZSBkZXRhaWxzLCBzZWUgYG1hbiA3IHNvY2tldGAuCisKKworMS4yIFNPX1RJTUVTVEFNUE5TOgorCitUaGlzIG9wdGlvbiBpcyBpZGVudGljYWwgdG8gU09fVElNRVNUQU1QIGV4Y2VwdCBmb3IgdGhlIHJldHVybmVkIGRhdGEgdHlwZS4KK0l0cyBzdHJ1Y3QgdGltZXNwZWMgYWxsb3dzIGZvciBoaWdoZXIgcmVzb2x1dGlvbiAobnMpIHRpbWVzdGFtcHMgdGhhbiB0aGUKK3RpbWV2YWwgb2YgU09fVElNRVNUQU1QIChtcykuCisKKworMS4zIFNPX1RJTUVTVEFNUElORzoKKworU3VwcG9ydHMgbXVsdGlwbGUgdHlwZXMgb2YgdGltZXN0YW1wIHJlcXVlc3RzLiBBcyBhIHJlc3VsdCwgdGhpcworc29ja2V0IG9wdGlvbiB0YWtlcyBhIGJpdG1hcCBvZiBmbGFncywgbm90IGEgYm9vbGVhbi4gSW4KKworICBlcnIgPSBzZXRzb2Nrb3B0KGZkLCBTT0xfU09DS0VULCBTT19USU1FU1RBTVBJTkcsICh2b2lkICopIHZhbCwgJnZhbCk7CisKK3ZhbCBpcyBhbiBpbnRlZ2VyIHdpdGggYW55IG9mIHRoZSBmb2xsb3dpbmcgYml0cyBzZXQuIFNldHRpbmcgb3RoZXIKK2JpdCByZXR1cm5zIEVJTlZBTCBhbmQgZG9lcyBub3QgY2hhbmdlIHRoZSBjdXJyZW50IHN0YXRlLgorCisKKzEuMy4xIFRpbWVzdGFtcCBHZW5lcmF0aW9uCisKK1NvbWUgYml0cyBhcmUgcmVxdWVzdHMgdG8gdGhlIHN0YWNrIHRvIHRyeSB0byBnZW5lcmF0ZSB0aW1lc3RhbXBzLiBBbnkKK2NvbWJpbmF0aW9uIG9mIHRoZW0gaXMgdmFsaWQuIENoYW5nZXMgdG8gdGhlc2UgYml0cyBhcHBseSB0byBuZXdseQorY3JlYXRlZCBwYWNrZXRzLCBub3QgdG8gcGFja2V0cyBhbHJlYWR5IGluIHRoZSBzdGFjay4gQXMgYSByZXN1bHQsIGl0CitpcyBwb3NzaWJsZSB0byBzZWxlY3RpdmVseSByZXF1ZXN0IHRpbWVzdGFtcHMgZm9yIGEgc3Vic2V0IG9mIHBhY2tldHMKKyhlLmcuLCBmb3Igc2FtcGxpbmcpIGJ5IGVtYmVkZGluZyBhbiBzZW5kKCkgY2FsbCB3aXRoaW4gdHdvIHNldHNvY2tvcHQKK2NhbGxzLCBvbmUgdG8gZW5hYmxlIHRpbWVzdGFtcCBnZW5lcmF0aW9uIGFuZCBvbmUgdG8gZGlzYWJsZSBpdC4KK1RpbWVzdGFtcHMgbWF5IGFsc28gYmUgZ2VuZXJhdGVkIGZvciByZWFzb25zIG90aGVyIHRoYW4gYmVpbmcKK3JlcXVlc3RlZCBieSBhIHBhcnRpY3VsYXIgc29ja2V0LCBzdWNoIGFzIHdoZW4gcmVjZWl2ZSB0aW1lc3RhbXBpbmcgaXMKK2VuYWJsZWQgc3lzdGVtIHdpZGUsIGFzIGV4cGxhaW5lZCBlYXJsaWVyLgorCitTT0ZfVElNRVNUQU1QSU5HX1JYX0hBUkRXQVJFOgorICBSZXF1ZXN0IHJ4IHRpbWVzdGFtcHMgZ2VuZXJhdGVkIGJ5IHRoZSBuZXR3b3JrIGFkYXB0ZXIuCisKK1NPRl9USU1FU1RBTVBJTkdfUlhfU09GVFdBUkU6CisgIFJlcXVlc3QgcnggdGltZXN0YW1wcyB3aGVuIGRhdGEgZW50ZXJzIHRoZSBrZXJuZWwuIFRoZXNlIHRpbWVzdGFtcHMKKyAgYXJlIGdlbmVyYXRlZCBqdXN0IGFmdGVyIGEgZGV2aWNlIGRyaXZlciBoYW5kcyBhIHBhY2tldCB0byB0aGUKKyAga2VybmVsIHJlY2VpdmUgc3RhY2suCisKK1NPRl9USU1FU1RBTVBJTkdfVFhfSEFSRFdBUkU6CisgIFJlcXVlc3QgdHggdGltZXN0YW1wcyBnZW5lcmF0ZWQgYnkgdGhlIG5ldHdvcmsgYWRhcHRlci4KKworU09GX1RJTUVTVEFNUElOR19UWF9TT0ZUV0FSRToKKyAgUmVxdWVzdCB0eCB0aW1lc3RhbXBzIHdoZW4gZGF0YSBsZWF2ZXMgdGhlIGtlcm5lbC4gVGhlc2UgdGltZXN0YW1wcworICBhcmUgZ2VuZXJhdGVkIGluIHRoZSBkZXZpY2UgZHJpdmVyIGFzIGNsb3NlIGFzIHBvc3NpYmxlLCBidXQgYWx3YXlzCisgIHByaW9yIHRvLCBwYXNzaW5nIHRoZSBwYWNrZXQgdG8gdGhlIG5ldHdvcmsgaW50ZXJmYWNlLiBIZW5jZSwgdGhleQorICByZXF1aXJlIGRyaXZlciBzdXBwb3J0IGFuZCBtYXkgbm90IGJlIGF2YWlsYWJsZSBmb3IgYWxsIGRldmljZXMuCisKK1NPRl9USU1FU1RBTVBJTkdfVFhfU0NIRUQ6CisgIFJlcXVlc3QgdHggdGltZXN0YW1wcyBwcmlvciB0byBlbnRlcmluZyB0aGUgcGFja2V0IHNjaGVkdWxlci4gS2VybmVsCisgIHRyYW5zbWl0IGxhdGVuY3kgaXMsIGlmIGxvbmcsIG9mdGVuIGRvbWluYXRlZCBieSBxdWV1aW5nIGRlbGF5LiBUaGUKKyAgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoaXMgdGltZXN0YW1wIGFuZCBvbmUgdGFrZW4gYXQKKyAgU09GX1RJTUVTVEFNUElOR19UWF9TT0ZUV0FSRSB3aWxsIGV4cG9zZSB0aGlzIGxhdGVuY3kgaW5kZXBlbmRlbnQKKyAgb2YgcHJvdG9jb2wgcHJvY2Vzc2luZy4gVGhlIGxhdGVuY3kgaW5jdXJyZWQgaW4gcHJvdG9jb2wKKyAgcHJvY2Vzc2luZywgaWYgYW55LCBjYW4gYmUgY29tcHV0ZWQgYnkgc3VidHJhY3RpbmcgYSB1c2Vyc3BhY2UKKyAgdGltZXN0YW1wIHRha2VuIGltbWVkaWF0ZWx5IGJlZm9yZSBzZW5kKCkgZnJvbSB0aGlzIHRpbWVzdGFtcC4gT24KKyAgbWFjaGluZXMgd2l0aCB2aXJ0dWFsIGRldmljZXMgd2hlcmUgYSB0cmFuc21pdHRlZCBwYWNrZXQgdHJhdmVscworICB0aHJvdWdoIG11bHRpcGxlIGRldmljZXMgYW5kLCBoZW5jZSwgbXVsdGlwbGUgcGFja2V0IHNjaGVkdWxlcnMsCisgIGEgdGltZXN0YW1wIGlzIGdlbmVyYXRlZCBhdCBlYWNoIGxheWVyLiBUaGlzIGFsbG93cyBmb3IgZmluZQorICBncmFpbmVkIG1lYXN1cmVtZW50IG9mIHF1ZXVpbmcgZGVsYXkuCisKK1NPRl9USU1FU1RBTVBJTkdfVFhfQUNLOgorICBSZXF1ZXN0IHR4IHRpbWVzdGFtcHMgd2hlbiBhbGwgZGF0YSBpbiB0aGUgc2VuZCBidWZmZXIgaGFzIGJlZW4KKyAgYWNrbm93bGVkZ2VkLiBUaGlzIG9ubHkgbWFrZXMgc2Vuc2UgZm9yIHJlbGlhYmxlIHByb3RvY29scy4gSXQgaXMKKyAgY3VycmVudGx5IG9ubHkgaW1wbGVtZW50ZWQgZm9yIFRDUC4gRm9yIHRoYXQgcHJvdG9jb2wsIGl0IG1heQorICBvdmVyLXJlcG9ydCBtZWFzdXJlbWVudCwgYmVjYXVzZSB0aGUgdGltZXN0YW1wIGlzIGdlbmVyYXRlZCB3aGVuIGFsbAorICBkYXRhIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlIGJ1ZmZlciBhdCBzZW5kKCkgd2FzIGFja25vd2xlZGdlZDogdGhlCisgIGN1bXVsYXRpdmUgYWNrbm93bGVkZ21lbnQuIFRoZSBtZWNoYW5pc20gaWdub3JlcyBTQUNLIGFuZCBGQUNLLgorCisKKzEuMy4yIFRpbWVzdGFtcCBSZXBvcnRpbmcKKworVGhlIG90aGVyIHRocmVlIGJpdHMgY29udHJvbCB3aGljaCB0aW1lc3RhbXBzIHdpbGwgYmUgcmVwb3J0ZWQgaW4gYQorZ2VuZXJhdGVkIGNvbnRyb2wgbWVzc2FnZS4gQ2hhbmdlcyB0byB0aGUgYml0cyB0YWtlIGltbWVkaWF0ZQorZWZmZWN0IGF0IHRoZSB0aW1lc3RhbXAgcmVwb3J0aW5nIGxvY2F0aW9ucyBpbiB0aGUgc3RhY2suIFRpbWVzdGFtcHMKK2FyZSBvbmx5IHJlcG9ydGVkIGZvciBwYWNrZXRzIHRoYXQgYWxzbyBoYXZlIHRoZSByZWxldmFudCB0aW1lc3RhbXAKK2dlbmVyYXRpb24gcmVxdWVzdCBzZXQuCisKK1NPRl9USU1FU1RBTVBJTkdfU09GVFdBUkU6CisgIFJlcG9ydCBhbnkgc29mdHdhcmUgdGltZXN0YW1wcyB3aGVuIGF2YWlsYWJsZS4KKworU09GX1RJTUVTVEFNUElOR19TWVNfSEFSRFdBUkU6CisgIFRoaXMgb3B0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQuCisKK1NPRl9USU1FU1RBTVBJTkdfUkFXX0hBUkRXQVJFOgorICBSZXBvcnQgaGFyZHdhcmUgdGltZXN0YW1wcyBhcyBnZW5lcmF0ZWQgYnkKKyAgU09GX1RJTUVTVEFNUElOR19UWF9IQVJEV0FSRSB3aGVuIGF2YWlsYWJsZS4KKworCisxLjMuMyBUaW1lc3RhbXAgT3B0aW9ucworCitUaGUgaW50ZXJmYWNlIHN1cHBvcnRzIHRoZSBvcHRpb25zCisKK1NPRl9USU1FU1RBTVBJTkdfT1BUX0lEOgorCisgIEdlbmVyYXRlIGEgdW5pcXVlIGlkZW50aWZpZXIgYWxvbmcgd2l0aCBlYWNoIHBhY2tldC4gQSBwcm9jZXNzIGNhbgorICBoYXZlIG11bHRpcGxlIGNvbmN1cnJlbnQgdGltZXN0YW1waW5nIHJlcXVlc3RzIG91dHN0YW5kaW5nLiBQYWNrZXRzCisgIGNhbiBiZSByZW9yZGVyZWQgaW4gdGhlIHRyYW5zbWl0IHBhdGgsIGZvciBpbnN0YW5jZSBpbiB0aGUgcGFja2V0CisgIHNjaGVkdWxlci4gSW4gdGhhdCBjYXNlIHRpbWVzdGFtcHMgd2lsbCBiZSBxdWV1ZWQgb250byB0aGUgZXJyb3IKKyAgcXVldWUgb3V0IG9mIG9yZGVyIGZyb20gdGhlIG9yaWdpbmFsIHNlbmQoKSBjYWxscy4gSXQgaXMgbm90IGFsd2F5cworICBwb3NzaWJsZSB0byB1bmlxdWVseSBtYXRjaCB0aW1lc3RhbXBzIHRvIHRoZSBvcmlnaW5hbCBzZW5kKCkgY2FsbHMKKyAgYmFzZWQgb24gdGltZXN0YW1wIG9yZGVyIG9yIHBheWxvYWQgaW5zcGVjdGlvbiBhbG9uZSwgdGhlbi4KKworICBUaGlzIG9wdGlvbiBhc3NvY2lhdGVzIGVhY2ggcGFja2V0IGF0IHNlbmQoKSB3aXRoIGEgdW5pcXVlCisgIGlkZW50aWZpZXIgYW5kIHJldHVybnMgdGhhdCBhbG9uZyB3aXRoIHRoZSB0aW1lc3RhbXAuIFRoZSBpZGVudGlmaWVyCisgIGlzIGRlcml2ZWQgZnJvbSBhIHBlci1zb2NrZXQgdTMyIGNvdW50ZXIgKHRoYXQgd3JhcHMpLiBGb3IgZGF0YWdyYW0KKyAgc29ja2V0cywgdGhlIGNvdW50ZXIgaW5jcmVtZW50cyB3aXRoIGVhY2ggc2VudCBwYWNrZXQuIEZvciBzdHJlYW0KKyAgc29ja2V0cywgaXQgaW5jcmVtZW50cyB3aXRoIGV2ZXJ5IGJ5dGUuCisKKyAgVGhlIGNvdW50ZXIgc3RhcnRzIGF0IHplcm8uIEl0IGlzIGluaXRpYWxpemVkIHRoZSBmaXJzdCB0aW1lIHRoYXQKKyAgdGhlIHNvY2tldCBvcHRpb24gaXMgZW5hYmxlZC4gSXQgaXMgcmVzZXQgZWFjaCB0aW1lIHRoZSBvcHRpb24gaXMKKyAgZW5hYmxlZCBhZnRlciBoYXZpbmcgYmVlbiBkaXNhYmxlZC4gUmVzZXR0aW5nIHRoZSBjb3VudGVyIGRvZXMgbm90CisgIGNoYW5nZSB0aGUgaWRlbnRpZmllcnMgb2YgZXhpc3RpbmcgcGFja2V0cyBpbiB0aGUgc3lzdGVtLgorCisgIFRoaXMgb3B0aW9uIGlzIGltcGxlbWVudGVkIG9ubHkgZm9yIHRyYW5zbWl0IHRpbWVzdGFtcHMuIFRoZXJlLCB0aGUKKyAgdGltZXN0YW1wIGlzIGFsd2F5cyBsb29wZWQgYWxvbmcgd2l0aCBhIHN0cnVjdCBzb2NrX2V4dGVuZGVkX2Vyci4KKyAgVGhlIG9wdGlvbiBtb2RpZmllcyBmaWVsZCBlZV9kYXRhIHRvIHBhc3MgYW4gaWQgdGhhdCBpcyB1bmlxdWUKKyAgYW1vbmcgYWxsIHBvc3NpYmx5IGNvbmN1cnJlbnRseSBvdXRzdGFuZGluZyB0aW1lc3RhbXAgcmVxdWVzdHMgZm9yCisgIHRoYXQgc29ja2V0LgorCisKK1NPRl9USU1FU1RBTVBJTkdfT1BUX0NNU0c6CisKKyAgU3VwcG9ydCByZWN2KCkgY21zZyBmb3IgYWxsIHRpbWVzdGFtcGVkIHBhY2tldHMuIENvbnRyb2wgbWVzc2FnZXMKKyAgYXJlIGFscmVhZHkgc3VwcG9ydGVkIHVuY29uZGl0aW9uYWxseSBvbiBhbGwgcGFja2V0cyB3aXRoIHJlY2VpdmUKKyAgdGltZXN0YW1wcyBhbmQgb24gSVB2NiBwYWNrZXRzIHdpdGggdHJhbnNtaXQgdGltZXN0YW1wLiBUaGlzIG9wdGlvbgorICBleHRlbmRzIHRoZW0gdG8gSVB2NCBwYWNrZXRzIHdpdGggdHJhbnNtaXQgdGltZXN0YW1wLiBPbmUgdXNlIGNhc2UKKyAgaXMgdG8gY29ycmVsYXRlIHBhY2tldHMgd2l0aCB0aGVpciBlZ3Jlc3MgZGV2aWNlLCBieSBlbmFibGluZyBzb2NrZXQKKyAgb3B0aW9uIElQX1BLVElORk8gc2ltdWx0YW5lb3VzbHkuCisKKworU09GX1RJTUVTVEFNUElOR19PUFRfVFNPTkxZOgorCisgIEFwcGxpZXMgdG8gdHJhbnNtaXQgdGltZXN0YW1wcyBvbmx5LiBNYWtlcyB0aGUga2VybmVsIHJldHVybiB0aGUKKyAgdGltZXN0YW1wIGFzIGEgY21zZyBhbG9uZ3NpZGUgYW4gZW1wdHkgcGFja2V0LCBhcyBvcHBvc2VkIHRvCisgIGFsb25nc2lkZSB0aGUgb3JpZ2luYWwgcGFja2V0LiBUaGlzIHJlZHVjZXMgdGhlIGFtb3VudCBvZiBtZW1vcnkKKyAgY2hhcmdlZCB0byB0aGUgc29ja2V0J3MgcmVjZWl2ZSBidWRnZXQgKFNPX1JDVkJVRikgYW5kIGRlbGl2ZXJzCisgIHRoZSB0aW1lc3RhbXAgZXZlbiBpZiBzeXNjdGwgbmV0LmNvcmUudHN0YW1wX2FsbG93X2RhdGEgaXMgMC4KKyAgVGhpcyBvcHRpb24gZGlzYWJsZXMgU09GX1RJTUVTVEFNUElOR19PUFRfQ01TRy4KKworCitOZXcgYXBwbGljYXRpb25zIGFyZSBlbmNvdXJhZ2VkIHRvIHBhc3MgU09GX1RJTUVTVEFNUElOR19PUFRfSUQgdG8KK2Rpc2FtYmlndWF0ZSB0aW1lc3RhbXBzIGFuZCBTT0ZfVElNRVNUQU1QSU5HX09QVF9UU09OTFkgdG8gb3BlcmF0ZQorcmVnYXJkbGVzcyBvZiB0aGUgc2V0dGluZyBvZiBzeXNjdGwgbmV0LmNvcmUudHN0YW1wX2FsbG93X2RhdGEuCisKK0FuIGV4Y2VwdGlvbiBpcyB3aGVuIGEgcHJvY2VzcyBuZWVkcyBhZGRpdGlvbmFsIGNtc2cgZGF0YSwgZm9yCitpbnN0YW5jZSBTT0xfSVAvSVBfUEtUSU5GTyB0byBkZXRlY3QgdGhlIGVncmVzcyBuZXR3b3JrIGludGVyZmFjZS4KK1RoZW4gcGFzcyBvcHRpb24gU09GX1RJTUVTVEFNUElOR19PUFRfQ01TRy4gVGhpcyBvcHRpb24gZGVwZW5kcyBvbgoraGF2aW5nIGFjY2VzcyB0byB0aGUgY29udGVudHMgb2YgdGhlIG9yaWdpbmFsIHBhY2tldCwgc28gY2Fubm90IGJlCitjb21iaW5lZCB3aXRoIFNPRl9USU1FU1RBTVBJTkdfT1BUX1RTT05MWS4KKworCisxLjQgQnl0ZXN0cmVhbSBUaW1lc3RhbXBzCisKK1RoZSBTT19USU1FU1RBTVBJTkcgaW50ZXJmYWNlIHN1cHBvcnRzIHRpbWVzdGFtcGluZyBvZiBieXRlcyBpbiBhCitieXRlc3RyZWFtLiBFYWNoIHJlcXVlc3QgaXMgaW50ZXJwcmV0ZWQgYXMgYSByZXF1ZXN0IGZvciB3aGVuIHRoZQorZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBidWZmZXIgaGFzIHBhc3NlZCBhIHRpbWVzdGFtcGluZyBwb2ludC4gVGhhdAoraXMsIGZvciBzdHJlYW1zIG9wdGlvbiBTT0ZfVElNRVNUQU1QSU5HX1RYX1NPRlRXQVJFIHdpbGwgcmVjb3JkCit3aGVuIGFsbCBieXRlcyBoYXZlIHJlYWNoZWQgdGhlIGRldmljZSBkcml2ZXIsIHJlZ2FyZGxlc3Mgb2YgaG93CittYW55IHBhY2tldHMgdGhlIGRhdGEgaGFzIGJlZW4gY29udmVydGVkIGludG8uCisKK0luIGdlbmVyYWwsIGJ5dGVzdHJlYW1zIGhhdmUgbm8gbmF0dXJhbCBkZWxpbWl0ZXJzIGFuZCB0aGVyZWZvcmUKK2NvcnJlbGF0aW5nIGEgdGltZXN0YW1wIHdpdGggZGF0YSBpcyBub24tdHJpdmlhbC4gQSByYW5nZSBvZiBieXRlcworbWF5IGJlIHNwbGl0IGFjcm9zcyBzZWdtZW50cywgYW55IHNlZ21lbnRzIG1heSBiZSBtZXJnZWQgKHBvc3NpYmx5Citjb2FsZXNjaW5nIHNlY3Rpb25zIG9mIHByZXZpb3VzbHkgc2VnbWVudGVkIGJ1ZmZlcnMgYXNzb2NpYXRlZCB3aXRoCitpbmRlcGVuZGVudCBzZW5kKCkgY2FsbHMpLiBTZWdtZW50cyBjYW4gYmUgcmVvcmRlcmVkIGFuZCB0aGUgc2FtZQorYnl0ZSByYW5nZSBjYW4gY29leGlzdCBpbiBtdWx0aXBsZSBzZWdtZW50cyBmb3IgcHJvdG9jb2xzIHRoYXQKK2ltcGxlbWVudCByZXRyYW5zbWlzc2lvbnMuCisKK0l0IGlzIGVzc2VudGlhbCB0aGF0IGFsbCB0aW1lc3RhbXBzIGltcGxlbWVudCB0aGUgc2FtZSBzZW1hbnRpY3MsCityZWdhcmRsZXNzIG9mIHRoZXNlIHBvc3NpYmxlIHRyYW5zZm9ybWF0aW9ucywgYXMgb3RoZXJ3aXNlIHRoZXkgYXJlCitpbmNvbXBhcmFibGUuIEhhbmRsaW5nICJyYXJlIiBjb3JuZXIgY2FzZXMgZGlmZmVyZW50bHkgZnJvbSB0aGUKK3NpbXBsZSBjYXNlIChhIDE6MSBtYXBwaW5nIGZyb20gYnVmZmVyIHRvIHNrYikgaXMgaW5zdWZmaWNpZW50CitiZWNhdXNlIHBlcmZvcm1hbmNlIGRlYnVnZ2luZyBvZnRlbiBuZWVkcyB0byBmb2N1cyBvbiBzdWNoIG91dGxpZXJzLgorCitJbiBwcmFjdGljZSwgdGltZXN0YW1wcyBjYW4gYmUgY29ycmVsYXRlZCB3aXRoIHNlZ21lbnRzIG9mIGEKK2J5dGVzdHJlYW0gY29uc2lzdGVudGx5LCBpZiBib3RoIHNlbWFudGljcyBvZiB0aGUgdGltZXN0YW1wIGFuZCB0aGUKK3RpbWluZyBvZiBtZWFzdXJlbWVudCBhcmUgY2hvc2VuIGNvcnJlY3RseS4gVGhpcyBjaGFsbGVuZ2UgaXMgbm8KK2RpZmZlcmVudCBmcm9tIGRlY2lkaW5nIG9uIGEgc3RyYXRlZ3kgZm9yIElQIGZyYWdtZW50YXRpb24uIFRoZXJlLCB0aGUKK2RlZmluaXRpb24gaXMgdGhhdCBvbmx5IHRoZSBmaXJzdCBmcmFnbWVudCBpcyB0aW1lc3RhbXBlZC4gRm9yCitieXRlc3RyZWFtcywgd2UgY2hvc2UgdGhhdCBhIHRpbWVzdGFtcCBpcyBnZW5lcmF0ZWQgb25seSB3aGVuIGFsbAorYnl0ZXMgaGF2ZSBwYXNzZWQgYSBwb2ludC4gU09GX1RJTUVTVEFNUElOR19UWF9BQ0sgYXMgZGVmaW5lZCBpcyBlYXN5IHRvCitpbXBsZW1lbnQgYW5kIHJlYXNvbiBhYm91dC4gQW4gaW1wbGVtZW50YXRpb24gdGhhdCBoYXMgdG8gdGFrZSBpbnRvCithY2NvdW50IFNBQ0sgd291bGQgYmUgbW9yZSBjb21wbGV4IGR1ZSB0byBwb3NzaWJsZSB0cmFuc21pc3Npb24gaG9sZXMKK2FuZCBvdXQgb2Ygb3JkZXIgYXJyaXZhbC4KKworT24gdGhlIGhvc3QsIFRDUCBjYW4gYWxzbyBicmVhayB0aGUgc2ltcGxlIDE6MSBtYXBwaW5nIGZyb20gYnVmZmVyIHRvCitza2J1ZmYgYXMgYSByZXN1bHQgb2YgTmFnbGUsIGNvcmssIGF1dG9jb3JrLCBzZWdtZW50YXRpb24gYW5kIEdTTy4gVGhlCitpbXBsZW1lbnRhdGlvbiBlbnN1cmVzIGNvcnJlY3RuZXNzIGluIGFsbCBjYXNlcyBieSB0cmFja2luZyB0aGUKK2luZGl2aWR1YWwgbGFzdCBieXRlIHBhc3NlZCB0byBzZW5kKCksIGV2ZW4gaWYgaXQgaXMgbm8gbG9uZ2VyIHRoZQorbGFzdCBieXRlIGFmdGVyIGFuIHNrYnVmZiBleHRlbmQgb3IgbWVyZ2Ugb3BlcmF0aW9uLiBJdCBzdG9yZXMgdGhlCityZWxldmFudCBzZXF1ZW5jZSBudW1iZXIgaW4gc2tiX3NoaW5mbyhza2IpLT50c2tleS4gQmVjYXVzZSBhbiBza2J1ZmYKK2hhcyBvbmx5IG9uZSBzdWNoIGZpZWxkLCBvbmx5IG9uZSB0aW1lc3RhbXAgY2FuIGJlIGdlbmVyYXRlZC4KKworSW4gcmFyZSBjYXNlcywgYSB0aW1lc3RhbXAgcmVxdWVzdCBjYW4gYmUgbWlzc2VkIGlmIHR3byByZXF1ZXN0cyBhcmUKK2NvbGxhcHNlZCBvbnRvIHRoZSBzYW1lIHNrYi4gQSBwcm9jZXNzIGNhbiBkZXRlY3QgdGhpcyBzaXR1YXRpb24gYnkKK2VuYWJsaW5nIFNPRl9USU1FU1RBTVBJTkdfT1BUX0lEIGFuZCBjb21wYXJpbmcgdGhlIGJ5dGUgb2Zmc2V0IGF0CitzZW5kIHRpbWUgd2l0aCB0aGUgdmFsdWUgcmV0dXJuZWQgZm9yIGVhY2ggdGltZXN0YW1wLiBJdCBjYW4gcHJldmVudAordGhlIHNpdHVhdGlvbiBieSBhbHdheXMgZmx1c2hpbmcgdGhlIFRDUCBzdGFjayBpbiBiZXR3ZWVuIHJlcXVlc3RzLAorZm9yIGluc3RhbmNlIGJ5IGVuYWJsaW5nIFRDUF9OT0RFTEFZIGFuZCBkaXNhYmxpbmcgVENQX0NPUksgYW5kCithdXRvY29yay4KKworVGhlc2UgcHJlY2F1dGlvbnMgZW5zdXJlIHRoYXQgdGhlIHRpbWVzdGFtcCBpcyBnZW5lcmF0ZWQgb25seSB3aGVuIGFsbAorYnl0ZXMgaGF2ZSBwYXNzZWQgYSB0aW1lc3RhbXAgcG9pbnQsIGFzc3VtaW5nIHRoYXQgdGhlIG5ldHdvcmsgc3RhY2sKK2l0c2VsZiBkb2VzIG5vdCByZW9yZGVyIHRoZSBzZWdtZW50cy4gVGhlIHN0YWNrIGluZGVlZCB0cmllcyB0byBhdm9pZAorcmVvcmRlcmluZy4gVGhlIG9uZSBleGNlcHRpb24gaXMgdW5kZXIgYWRtaW5pc3RyYXRvciBjb250cm9sOiBpdCBpcworcG9zc2libGUgdG8gY29uc3RydWN0IGEgcGFja2V0IHNjaGVkdWxlciBjb25maWd1cmF0aW9uIHRoYXQgZGVsYXlzCitzZWdtZW50cyBmcm9tIHRoZSBzYW1lIHN0cmVhbSBkaWZmZXJlbnRseS4gU3VjaCBhIHNldHVwIHdvdWxkIGJlCit1bnVzdWFsLgorCisKKzIgRGF0YSBJbnRlcmZhY2VzCisKK1RpbWVzdGFtcHMgYXJlIHJlYWQgdXNpbmcgdGhlIGFuY2lsbGFyeSBkYXRhIGZlYXR1cmUgb2YgcmVjdm1zZygpLgorU2VlIGBtYW4gMyBjbXNnYCBmb3IgZGV0YWlscyBvZiB0aGlzIGludGVyZmFjZS4gVGhlIHNvY2tldCBtYW51YWwKK3BhZ2UgKGBtYW4gNyBzb2NrZXRgKSBkZXNjcmliZXMgaG93IHRpbWVzdGFtcHMgZ2VuZXJhdGVkIHdpdGgKK1NPX1RJTUVTVEFNUCBhbmQgU09fVElNRVNUQU1QTlMgcmVjb3JkcyBjYW4gYmUgcmV0cmlldmVkLgorCisKKzIuMSBTQ01fVElNRVNUQU1QSU5HIHJlY29yZHMKKworVGhlc2UgdGltZXN0YW1wcyBhcmUgcmV0dXJuZWQgaW4gYSBjb250cm9sIG1lc3NhZ2Ugd2l0aCBjbXNnX2xldmVsCitTT0xfU09DS0VULCBjbXNnX3R5cGUgU0NNX1RJTUVTVEFNUElORywgYW5kIHBheWxvYWQgb2YgdHlwZQorCitzdHJ1Y3Qgc2NtX3RpbWVzdGFtcGluZyB7CisJc3RydWN0IHRpbWVzcGVjIHRzWzNdOworfTsKKworVGhlIHN0cnVjdHVyZSBjYW4gcmV0dXJuIHVwIHRvIHRocmVlIHRpbWVzdGFtcHMuIFRoaXMgaXMgYSBsZWdhY3kKK2ZlYXR1cmUuIE9ubHkgb25lIGZpZWxkIGlzIG5vbi16ZXJvIGF0IGFueSB0aW1lLiBNb3N0IHRpbWVzdGFtcHMKK2FyZSBwYXNzZWQgaW4gdHNbMF0uIEhhcmR3YXJlIHRpbWVzdGFtcHMgYXJlIHBhc3NlZCBpbiB0c1syXS4KKwordHNbMV0gdXNlZCB0byBob2xkIGhhcmR3YXJlIHRpbWVzdGFtcHMgY29udmVydGVkIHRvIHN5c3RlbSB0aW1lLgorSW5zdGVhZCwgZXhwb3NlIHRoZSBoYXJkd2FyZSBjbG9jayBkZXZpY2Ugb24gdGhlIE5JQyBkaXJlY3RseSBhcworYSBIVyBQVFAgY2xvY2sgc291cmNlLCB0byBhbGxvdyB0aW1lIGNvbnZlcnNpb24gaW4gdXNlcnNwYWNlIGFuZAorb3B0aW9uYWxseSBzeW5jaHJvbml6ZSBzeXN0ZW0gdGltZSB3aXRoIGEgdXNlcnNwYWNlIFBUUCBzdGFjayBzdWNoCithcyBsaW51eHB0cC4gRm9yIHRoZSBQVFAgY2xvY2sgQVBJLCBzZWUgRG9jdW1lbnRhdGlvbi9wdHAvcHRwLnR4dC4KKworMi4xLjEgVHJhbnNtaXQgdGltZXN0YW1wcyB3aXRoIE1TR19FUlJRVUVVRQorCitGb3IgdHJhbnNtaXQgdGltZXN0YW1wcyB0aGUgb3V0Z29pbmcgcGFja2V0IGlzIGxvb3BlZCBiYWNrIHRvIHRoZQorc29ja2V0J3MgZXJyb3IgcXVldWUgd2l0aCB0aGUgc2VuZCB0aW1lc3RhbXAocykgYXR0YWNoZWQuIEEgcHJvY2VzcworcmVjZWl2ZXMgdGhlIHRpbWVzdGFtcHMgYnkgY2FsbGluZyByZWN2bXNnKCkgd2l0aCBmbGFnIE1TR19FUlJRVUVVRQorc2V0IGFuZCB3aXRoIGEgbXNnX2NvbnRyb2wgYnVmZmVyIHN1ZmZpY2llbnRseSBsYXJnZSB0byByZWNlaXZlIHRoZQorcmVsZXZhbnQgbWV0YWRhdGEgc3RydWN0dXJlcy4gVGhlIHJlY3Ztc2cgY2FsbCByZXR1cm5zIHRoZSBvcmlnaW5hbAorb3V0Z29pbmcgZGF0YSBwYWNrZXQgd2l0aCB0d28gYW5jaWxsYXJ5IG1lc3NhZ2VzIGF0dGFjaGVkLgorCitBIG1lc3NhZ2Ugb2YgY21fbGV2ZWwgU09MX0lQKFY2KSBhbmQgY21fdHlwZSBJUChWNilfUkVDVkVSUgorZW1iZWRzIGEgc3RydWN0IHNvY2tfZXh0ZW5kZWRfZXJyLiBUaGlzIGRlZmluZXMgdGhlIGVycm9yIHR5cGUuIEZvcgordGltZXN0YW1wcywgdGhlIGVlX2Vycm5vIGZpZWxkIGlzIEVOT01TRy4gVGhlIG90aGVyIGFuY2lsbGFyeSBtZXNzYWdlCit3aWxsIGhhdmUgY21fbGV2ZWwgU09MX1NPQ0tFVCBhbmQgY21fdHlwZSBTQ01fVElNRVNUQU1QSU5HLiBUaGlzCitlbWJlZHMgdGhlIHN0cnVjdCBzY21fdGltZXN0YW1waW5nLgorCisKKzIuMS4xLjIgVGltZXN0YW1wIHR5cGVzCisKK1RoZSBzZW1hbnRpY3Mgb2YgdGhlIHRocmVlIHN0cnVjdCB0aW1lc3BlYyBhcmUgZGVmaW5lZCBieSBmaWVsZAorZWVfaW5mbyBpbiB0aGUgZXh0ZW5kZWQgZXJyb3Igc3RydWN0dXJlLiBJdCBjb250YWlucyBhIHZhbHVlIG9mCit0eXBlIFNDTV9UU1RBTVBfKiB0byBkZWZpbmUgdGhlIGFjdHVhbCB0aW1lc3RhbXAgcGFzc2VkIGluCitzY21fdGltZXN0YW1waW5nLgorCitUaGUgU0NNX1RTVEFNUF8qIHR5cGVzIGFyZSAxOjEgbWF0Y2hlcyB0byB0aGUgU09GX1RJTUVTVEFNUElOR18qCitjb250cm9sIGZpZWxkcyBkaXNjdXNzZWQgcHJldmlvdXNseSwgd2l0aCBvbmUgZXhjZXB0aW9uLiBGb3IgbGVnYWN5CityZWFzb25zLCBTQ01fVFNUQU1QX1NORCBpcyBlcXVhbCB0byB6ZXJvIGFuZCBjYW4gYmUgc2V0IGZvciBib3RoCitTT0ZfVElNRVNUQU1QSU5HX1RYX0hBUkRXQVJFIGFuZCBTT0ZfVElNRVNUQU1QSU5HX1RYX1NPRlRXQVJFLiBJdAoraXMgdGhlIGZpcnN0IGlmIHRzWzJdIGlzIG5vbi16ZXJvLCB0aGUgc2Vjb25kIG90aGVyd2lzZSwgaW4gd2hpY2gKK2Nhc2UgdGhlIHRpbWVzdGFtcCBpcyBzdG9yZWQgaW4gdHNbMF0uCisKKworMi4xLjEuMyBGcmFnbWVudGF0aW9uCisKK0ZyYWdtZW50YXRpb24gb2Ygb3V0Z29pbmcgZGF0YWdyYW1zIGlzIHJhcmUsIGJ1dCBpcyBwb3NzaWJsZSwgZS5nLiwgYnkKK2V4cGxpY2l0bHkgZGlzYWJsaW5nIFBNVFUgZGlzY292ZXJ5LiBJZiBhbiBvdXRnb2luZyBwYWNrZXQgaXMgZnJhZ21lbnRlZCwKK3RoZW4gb25seSB0aGUgZmlyc3QgZnJhZ21lbnQgaXMgdGltZXN0YW1wZWQgYW5kIHJldHVybmVkIHRvIHRoZSBzZW5kaW5nCitzb2NrZXQuCisKKworMi4xLjEuNCBQYWNrZXQgUGF5bG9hZAorCitUaGUgY2FsbGluZyBhcHBsaWNhdGlvbiBpcyBvZnRlbiBub3QgaW50ZXJlc3RlZCBpbiByZWNlaXZpbmcgdGhlIHdob2xlCitwYWNrZXQgcGF5bG9hZCB0aGF0IGl0IHBhc3NlZCB0byB0aGUgc3RhY2sgb3JpZ2luYWxseTogdGhlIHNvY2tldAorZXJyb3IgcXVldWUgbWVjaGFuaXNtIGlzIGp1c3QgYSBtZXRob2QgdG8gcGlnZ3liYWNrIHRoZSB0aW1lc3RhbXAgb24uCitJbiB0aGlzIGNhc2UsIHRoZSBhcHBsaWNhdGlvbiBjYW4gY2hvb3NlIHRvIHJlYWQgZGF0YWdyYW1zIHdpdGggYQorc21hbGxlciBidWZmZXIsIHBvc3NpYmx5IGV2ZW4gb2YgbGVuZ3RoIDAuIFRoZSBwYXlsb2FkIGlzIHRydW5jYXRlZAorYWNjb3JkaW5nbHkuIFVudGlsIHRoZSBwcm9jZXNzIGNhbGxzIHJlY3Ztc2coKSBvbiB0aGUgZXJyb3IgcXVldWUsCitob3dldmVyLCB0aGUgZnVsbCBwYWNrZXQgaXMgcXVldWVkLCB0YWtpbmcgdXAgYnVkZ2V0IGZyb20gU09fUkNWQlVGLgorCisKKzIuMS4xLjUgQmxvY2tpbmcgUmVhZAorCitSZWFkaW5nIGZyb20gdGhlIGVycm9yIHF1ZXVlIGlzIGFsd2F5cyBhIG5vbi1ibG9ja2luZyBvcGVyYXRpb24uIFRvCitibG9jayB3YWl0aW5nIG9uIGEgdGltZXN0YW1wLCB1c2UgcG9sbCBvciBzZWxlY3QuIHBvbGwoKSB3aWxsIHJldHVybgorUE9MTEVSUiBpbiBwb2xsZmQucmV2ZW50cyBpZiBhbnkgZGF0YSBpcyByZWFkeSBvbiB0aGUgZXJyb3IgcXVldWUuCitUaGVyZSBpcyBubyBuZWVkIHRvIHBhc3MgdGhpcyBmbGFnIGluIHBvbGxmZC5ldmVudHMuIFRoaXMgZmxhZyBpcworaWdub3JlZCBvbiByZXF1ZXN0LiBTZWUgYWxzbyBgbWFuIDIgcG9sbGAuCisKKworMi4xLjIgUmVjZWl2ZSB0aW1lc3RhbXBzCisKK09uIHJlY2VwdGlvbiwgdGhlcmUgaXMgbm8gcmVhc29uIHRvIHJlYWQgZnJvbSB0aGUgc29ja2V0IGVycm9yIHF1ZXVlLgorVGhlIFNDTV9USU1FU1RBTVBJTkcgYW5jaWxsYXJ5IGRhdGEgaXMgc2VudCBhbG9uZyB3aXRoIHRoZSBwYWNrZXQgZGF0YQorb24gYSBub3JtYWwgcmVjdm1zZygpLiBTaW5jZSB0aGlzIGlzIG5vdCBhIHNvY2tldCBlcnJvciwgaXQgaXMgbm90CithY2NvbXBhbmllZCBieSBhIG1lc3NhZ2UgU09MX0lQKFY2KS9JUChWNilfUkVDVkVSUk9SLiBJbiB0aGlzIGNhc2UsCit0aGUgbWVhbmluZyBvZiB0aGUgdGhyZWUgZmllbGRzIGluIHN0cnVjdCBzY21fdGltZXN0YW1waW5nIGlzCitpbXBsaWNpdGx5IGRlZmluZWQuIHRzWzBdIGhvbGRzIGEgc29mdHdhcmUgdGltZXN0YW1wIGlmIHNldCwgdHNbMV0KK2lzIGFnYWluIGRlcHJlY2F0ZWQgYW5kIHRzWzJdIGhvbGRzIGEgaGFyZHdhcmUgdGltZXN0YW1wIGlmIHNldC4KKworCiszLiBIYXJkd2FyZSBUaW1lc3RhbXBpbmcgY29uZmlndXJhdGlvbjogU0lPQ1NIV1RTVEFNUCBhbmQgU0lPQ0dIV1RTVEFNUAorCitIYXJkd2FyZSB0aW1lIHN0YW1waW5nIG11c3QgYWxzbyBiZSBpbml0aWFsaXplZCBmb3IgZWFjaCBkZXZpY2UgZHJpdmVyCit0aGF0IGlzIGV4cGVjdGVkIHRvIGRvIGhhcmR3YXJlIHRpbWUgc3RhbXBpbmcuIFRoZSBwYXJhbWV0ZXIgaXMgZGVmaW5lZCBpbgorL2luY2x1ZGUvbGludXgvbmV0X3RzdGFtcC5oIGFzOgorCitzdHJ1Y3QgaHd0c3RhbXBfY29uZmlnIHsKKwlpbnQgZmxhZ3M7CS8qIG5vIGZsYWdzIGRlZmluZWQgcmlnaHQgbm93LCBtdXN0IGJlIHplcm8gKi8KKwlpbnQgdHhfdHlwZTsJLyogSFdUU1RBTVBfVFhfKiAqLworCWludCByeF9maWx0ZXI7CS8qIEhXVFNUQU1QX0ZJTFRFUl8qICovCit9OworCitEZXNpcmVkIGJlaGF2aW9yIGlzIHBhc3NlZCBpbnRvIHRoZSBrZXJuZWwgYW5kIHRvIGEgc3BlY2lmaWMgZGV2aWNlIGJ5CitjYWxsaW5nIGlvY3RsKFNJT0NTSFdUU1RBTVApIHdpdGggYSBwb2ludGVyIHRvIGEgc3RydWN0IGlmcmVxIHdob3NlCitpZnJfZGF0YSBwb2ludHMgdG8gYSBzdHJ1Y3QgaHd0c3RhbXBfY29uZmlnLiBUaGUgdHhfdHlwZSBhbmQKK3J4X2ZpbHRlciBhcmUgaGludHMgdG8gdGhlIGRyaXZlciB3aGF0IGl0IGlzIGV4cGVjdGVkIHRvIGRvLiBJZgordGhlIHJlcXVlc3RlZCBmaW5lLWdyYWluZWQgZmlsdGVyaW5nIGZvciBpbmNvbWluZyBwYWNrZXRzIGlzIG5vdAorc3VwcG9ydGVkLCB0aGUgZHJpdmVyIG1heSB0aW1lIHN0YW1wIG1vcmUgdGhhbiBqdXN0IHRoZSByZXF1ZXN0ZWQgdHlwZXMKK29mIHBhY2tldHMuCisKK0RyaXZlcnMgYXJlIGZyZWUgdG8gdXNlIGEgbW9yZSBwZXJtaXNzaXZlIGNvbmZpZ3VyYXRpb24gdGhhbiB0aGUgcmVxdWVzdGVkCitjb25maWd1cmF0aW9uLiBJdCBpcyBleHBlY3RlZCB0aGF0IGRyaXZlcnMgc2hvdWxkIG9ubHkgaW1wbGVtZW50IGRpcmVjdGx5IHRoZQorbW9zdCBnZW5lcmljIG1vZGUgdGhhdCBjYW4gYmUgc3VwcG9ydGVkLiBGb3IgZXhhbXBsZSBpZiB0aGUgaGFyZHdhcmUgY2FuCitzdXBwb3J0IEhXVFNUQU1QX0ZJTFRFUl9WMl9FVkVOVCwgdGhlbiBpdCBzaG91bGQgZ2VuZXJhbGx5IGFsd2F5cyB1cHNjYWxlCitIV1RTVEFNUF9GSUxURVJfVjJfTDJfU1lOQ19NRVNTQUdFLCBhbmQgc28gZm9ydGgsIGFzIEhXVFNUQU1QX0ZJTFRFUl9WMl9FVkVOVAoraXMgbW9yZSBnZW5lcmljIChhbmQgbW9yZSB1c2VmdWwgdG8gYXBwbGljYXRpb25zKS4KKworQSBkcml2ZXIgd2hpY2ggc3VwcG9ydHMgaGFyZHdhcmUgdGltZSBzdGFtcGluZyBzaGFsbCB1cGRhdGUgdGhlIHN0cnVjdAord2l0aCB0aGUgYWN0dWFsLCBwb3NzaWJseSBtb3JlIHBlcm1pc3NpdmUgY29uZmlndXJhdGlvbi4gSWYgdGhlCityZXF1ZXN0ZWQgcGFja2V0cyBjYW5ub3QgYmUgdGltZSBzdGFtcGVkLCB0aGVuIG5vdGhpbmcgc2hvdWxkIGJlCitjaGFuZ2VkIGFuZCBFUkFOR0Ugc2hhbGwgYmUgcmV0dXJuZWQgKGluIGNvbnRyYXN0IHRvIEVJTlZBTCwgd2hpY2gKK2luZGljYXRlcyB0aGF0IFNJT0NTSFdUU1RBTVAgaXMgbm90IHN1cHBvcnRlZCBhdCBhbGwpLgorCitPbmx5IGEgcHJvY2Vzc2VzIHdpdGggYWRtaW4gcmlnaHRzIG1heSBjaGFuZ2UgdGhlIGNvbmZpZ3VyYXRpb24uIFVzZXIKK3NwYWNlIGlzIHJlc3BvbnNpYmxlIHRvIGVuc3VyZSB0aGF0IG11bHRpcGxlIHByb2Nlc3NlcyBkb24ndCBpbnRlcmZlcmUKK3dpdGggZWFjaCBvdGhlciBhbmQgdGhhdCB0aGUgc2V0dGluZ3MgYXJlIHJlc2V0LgorCitBbnkgcHJvY2VzcyBjYW4gcmVhZCB0aGUgYWN0dWFsIGNvbmZpZ3VyYXRpb24gYnkgcGFzc2luZyB0aGlzCitzdHJ1Y3R1cmUgdG8gaW9jdGwoU0lPQ0dIV1RTVEFNUCkgaW4gdGhlIHNhbWUgd2F5LiAgSG93ZXZlciwgdGhpcyBoYXMKK25vdCBiZWVuIGltcGxlbWVudGVkIGluIGFsbCBkcml2ZXJzLgorCisvKiBwb3NzaWJsZSB2YWx1ZXMgZm9yIGh3dHN0YW1wX2NvbmZpZy0+dHhfdHlwZSAqLworZW51bSB7CisJLyoKKwkgKiBubyBvdXRnb2luZyBwYWNrZXQgd2lsbCBuZWVkIGhhcmR3YXJlIHRpbWUgc3RhbXBpbmc7CisJICogc2hvdWxkIGEgcGFja2V0IGFycml2ZSB3aGljaCBhc2tzIGZvciBpdCwgbm8gaGFyZHdhcmUKKwkgKiB0aW1lIHN0YW1waW5nIHdpbGwgYmUgZG9uZQorCSAqLworCUhXVFNUQU1QX1RYX09GRiwKKworCS8qCisJICogZW5hYmxlcyBoYXJkd2FyZSB0aW1lIHN0YW1waW5nIGZvciBvdXRnb2luZyBwYWNrZXRzOworCSAqIHRoZSBzZW5kZXIgb2YgdGhlIHBhY2tldCBkZWNpZGVzIHdoaWNoIGFyZSB0byBiZQorCSAqIHRpbWUgc3RhbXBlZCBieSBzZXR0aW5nIFNPRl9USU1FU1RBTVBJTkdfVFhfU09GVFdBUkUKKwkgKiBiZWZvcmUgc2VuZGluZyB0aGUgcGFja2V0CisJICovCisJSFdUU1RBTVBfVFhfT04sCit9OworCisvKiBwb3NzaWJsZSB2YWx1ZXMgZm9yIGh3dHN0YW1wX2NvbmZpZy0+cnhfZmlsdGVyICovCitlbnVtIHsKKwkvKiB0aW1lIHN0YW1wIG5vIGluY29taW5nIHBhY2tldCBhdCBhbGwgKi8KKwlIV1RTVEFNUF9GSUxURVJfTk9ORSwKKworCS8qIHRpbWUgc3RhbXAgYW55IGluY29taW5nIHBhY2tldCAqLworCUhXVFNUQU1QX0ZJTFRFUl9BTEwsCisKKwkvKiByZXR1cm4gdmFsdWU6IHRpbWUgc3RhbXAgYWxsIHBhY2tldHMgcmVxdWVzdGVkIHBsdXMgc29tZSBvdGhlcnMgKi8KKwlIV1RTVEFNUF9GSUxURVJfU09NRSwKKworCS8qIFBUUCB2MSwgVURQLCBhbnkga2luZCBvZiBldmVudCBwYWNrZXQgKi8KKwlIV1RTVEFNUF9GSUxURVJfUFRQX1YxX0w0X0VWRU5ULAorCisJLyogZm9yIHRoZSBjb21wbGV0ZSBsaXN0IG9mIHZhbHVlcywgcGxlYXNlIGNoZWNrCisJICogdGhlIGluY2x1ZGUgZmlsZSAvaW5jbHVkZS9saW51eC9uZXRfdHN0YW1wLmgKKwkgKi8KK307CisKKzMuMSBIYXJkd2FyZSBUaW1lc3RhbXBpbmcgSW1wbGVtZW50YXRpb246IERldmljZSBEcml2ZXJzCisKK0EgZHJpdmVyIHdoaWNoIHN1cHBvcnRzIGhhcmR3YXJlIHRpbWUgc3RhbXBpbmcgbXVzdCBzdXBwb3J0IHRoZQorU0lPQ1NIV1RTVEFNUCBpb2N0bCBhbmQgdXBkYXRlIHRoZSBzdXBwbGllZCBzdHJ1Y3QgaHd0c3RhbXBfY29uZmlnIHdpdGgKK3RoZSBhY3R1YWwgdmFsdWVzIGFzIGRlc2NyaWJlZCBpbiB0aGUgc2VjdGlvbiBvbiBTSU9DU0hXVFNUQU1QLiAgSXQKK3Nob3VsZCBhbHNvIHN1cHBvcnQgU0lPQ0dIV1RTVEFNUC4KKworVGltZSBzdGFtcHMgZm9yIHJlY2VpdmVkIHBhY2tldHMgbXVzdCBiZSBzdG9yZWQgaW4gdGhlIHNrYi4gVG8gZ2V0IGEgcG9pbnRlcgordG8gdGhlIHNoYXJlZCB0aW1lIHN0YW1wIHN0cnVjdHVyZSBvZiB0aGUgc2tiIGNhbGwgc2tiX2h3dHN0YW1wcygpLiBUaGVuCitzZXQgdGhlIHRpbWUgc3RhbXBzIGluIHRoZSBzdHJ1Y3R1cmU6CisKK3N0cnVjdCBza2Jfc2hhcmVkX2h3dHN0YW1wcyB7CisJLyogaGFyZHdhcmUgdGltZSBzdGFtcCB0cmFuc2Zvcm1lZCBpbnRvIGR1cmF0aW9uCisJICogc2luY2UgYXJiaXRyYXJ5IHBvaW50IGluIHRpbWUKKwkgKi8KKwlrdGltZV90CWh3dHN0YW1wOworfTsKKworVGltZSBzdGFtcHMgZm9yIG91dGdvaW5nIHBhY2tldHMgYXJlIHRvIGJlIGdlbmVyYXRlZCBhcyBmb2xsb3dzOgorLSBJbiBoYXJkX3N0YXJ0X3htaXQoKSwgY2hlY2sgaWYgKHNrYl9zaGluZm8oc2tiKS0+dHhfZmxhZ3MgJiBTS0JUWF9IV19UU1RBTVApCisgIGlzIHNldCBuby16ZXJvLiBJZiB5ZXMsIHRoZW4gdGhlIGRyaXZlciBpcyBleHBlY3RlZCB0byBkbyBoYXJkd2FyZSB0aW1lCisgIHN0YW1waW5nLgorLSBJZiB0aGlzIGlzIHBvc3NpYmxlIGZvciB0aGUgc2tiIGFuZCByZXF1ZXN0ZWQsIHRoZW4gZGVjbGFyZQorICB0aGF0IHRoZSBkcml2ZXIgaXMgZG9pbmcgdGhlIHRpbWUgc3RhbXBpbmcgYnkgc2V0dGluZyB0aGUgZmxhZworICBTS0JUWF9JTl9QUk9HUkVTUyBpbiBza2Jfc2hpbmZvKHNrYiktPnR4X2ZsYWdzICwgZS5nLiB3aXRoCisKKyAgICAgIHNrYl9zaGluZm8oc2tiKS0+dHhfZmxhZ3MgfD0gU0tCVFhfSU5fUFJPR1JFU1M7CisKKyAgWW91IG1pZ2h0IHdhbnQgdG8ga2VlcCBhIHBvaW50ZXIgdG8gdGhlIGFzc29jaWF0ZWQgc2tiIGZvciB0aGUgbmV4dCBzdGVwCisgIGFuZCBub3QgZnJlZSB0aGUgc2tiLiBBIGRyaXZlciBub3Qgc3VwcG9ydGluZyBoYXJkd2FyZSB0aW1lIHN0YW1waW5nIGRvZXNuJ3QKKyAgZG8gdGhhdC4gQSBkcml2ZXIgbXVzdCBuZXZlciB0b3VjaCBza19idWZmOjp0c3RhbXAhIEl0IGlzIHVzZWQgdG8gc3RvcmUKKyAgc29mdHdhcmUgZ2VuZXJhdGVkIHRpbWUgc3RhbXBzIGJ5IHRoZSBuZXR3b3JrIHN1YnN5c3RlbS4KKy0gRHJpdmVyIHNob3VsZCBjYWxsIHNrYl90eF90aW1lc3RhbXAoKSBhcyBjbG9zZSB0byBwYXNzaW5nIHNrX2J1ZmYgdG8gaGFyZHdhcmUKKyAgYXMgcG9zc2libGUuIHNrYl90eF90aW1lc3RhbXAoKSBwcm92aWRlcyBhIHNvZnR3YXJlIHRpbWUgc3RhbXAgaWYgcmVxdWVzdGVkCisgIGFuZCBoYXJkd2FyZSB0aW1lc3RhbXBpbmcgaXMgbm90IHBvc3NpYmxlIChTS0JUWF9JTl9QUk9HUkVTUyBub3Qgc2V0KS4KKy0gQXMgc29vbiBhcyB0aGUgZHJpdmVyIGhhcyBzZW50IHRoZSBwYWNrZXQgYW5kL29yIG9idGFpbmVkIGEKKyAgaGFyZHdhcmUgdGltZSBzdGFtcCBmb3IgaXQsIGl0IHBhc3NlcyB0aGUgdGltZSBzdGFtcCBiYWNrIGJ5CisgIGNhbGxpbmcgc2tiX2h3dHN0YW1wX3R4KCkgd2l0aCB0aGUgb3JpZ2luYWwgc2tiLCB0aGUgcmF3CisgIGhhcmR3YXJlIHRpbWUgc3RhbXAuIHNrYl9od3RzdGFtcF90eCgpIGNsb25lcyB0aGUgb3JpZ2luYWwgc2tiIGFuZAorICBhZGRzIHRoZSB0aW1lc3RhbXBzLCB0aGVyZWZvcmUgdGhlIG9yaWdpbmFsIHNrYiBoYXMgdG8gYmUgZnJlZWQgbm93LgorICBJZiBvYnRhaW5pbmcgdGhlIGhhcmR3YXJlIHRpbWUgc3RhbXAgc29tZWhvdyBmYWlscywgdGhlbiB0aGUgZHJpdmVyCisgIHNob3VsZCBub3QgZmFsbCBiYWNrIHRvIHNvZnR3YXJlIHRpbWUgc3RhbXBpbmcuIFRoZSByYXRpb25hbGUgaXMgdGhhdAorICB0aGlzIHdvdWxkIG9jY3VyIGF0IGEgbGF0ZXIgdGltZSBpbiB0aGUgcHJvY2Vzc2luZyBwaXBlbGluZSB0aGFuIG90aGVyCisgIHNvZnR3YXJlIHRpbWUgc3RhbXBpbmcgYW5kIHRoZXJlZm9yZSBjb3VsZCBsZWFkIHRvIHVuZXhwZWN0ZWQgZGVsdGFzCisgIGJldHdlZW4gdGltZSBzdGFtcHMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdGltZXN0YW1waW5nLy5naXRpZ25vcmUgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdGltZXN0YW1waW5nLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU2OWU5OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy90aW1lc3RhbXBpbmcvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDMgQEAKK3RpbWVzdGFtcGluZwordHh0aW1lc3RhbXAKK2h3dHN0YW1wX2NvbmZpZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy9NYWtlZmlsZSBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy90aW1lc3RhbXBpbmcvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMyMGRmYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy90aW1lc3RhbXBpbmcvTWFrZWZpbGUKQEAgLTAsMCArMSwxNCBAQAorIyBUbyBjb21waWxlLCBmcm9tIHRoZSBzb3VyY2Ugcm9vdAorIworIyAgICBtYWtlIGhlYWRlcnNfaW5zdGFsbAorIyAgICBtYWtlIE09ZG9jdW1lbnRhdGlvbgorCisjIExpc3Qgb2YgcHJvZ3JhbXMgdG8gYnVpbGQKK2hvc3Rwcm9ncy15IDo9IGh3dHN0YW1wX2NvbmZpZyB0aW1lc3RhbXBpbmcgdHh0aW1lc3RhbXAKKworIyBUZWxsIGtidWlsZCB0byBhbHdheXMgYnVpbGQgdGhlIHByb2dyYW1zCithbHdheXMgOj0gJChob3N0cHJvZ3MteSkKKworSE9TVENGTEFHU190aW1lc3RhbXBpbmcubyArPSAtSSQob2JqdHJlZSkvdXNyL2luY2x1ZGUKK0hPU1RDRkxBR1NfdHh0aW1lc3RhbXAubyArPSAtSSQob2JqdHJlZSkvdXNyL2luY2x1ZGUKK0hPU1RDRkxBR1NfaHd0c3RhbXBfY29uZmlnLm8gKz0gLUkkKG9ianRyZWUpL3Vzci9pbmNsdWRlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdGltZXN0YW1waW5nL2h3dHN0YW1wX2NvbmZpZy5jIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy9od3RzdGFtcF9jb25maWcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGI2ODVhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy9od3RzdGFtcF9jb25maWcuYwpAQCAtMCwwICsxLDEzNCBAQAorLyogVGVzdCBwcm9ncmFtIGZvciBTSU9De0csU31IV1RTVEFNUAorICogQ29weXJpZ2h0IDIwMTMgU29sYXJmbGFyZSBDb21tdW5pY2F0aW9ucworICogQXV0aG9yOiBCZW4gSHV0Y2hpbmdzCisgKi8KKworI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKworI2luY2x1ZGUgPGxpbnV4L2lmLmg+CisjaW5jbHVkZSA8bGludXgvbmV0X3RzdGFtcC5oPgorI2luY2x1ZGUgPGxpbnV4L3NvY2tpb3MuaD4KKworc3RhdGljIGludAorbG9va3VwX3ZhbHVlKGNvbnN0IGNoYXIgKipuYW1lcywgaW50IHNpemUsIGNvbnN0IGNoYXIgKm5hbWUpCit7CisJaW50IHZhbHVlOworCisJZm9yICh2YWx1ZSA9IDA7IHZhbHVlIDwgc2l6ZTsgdmFsdWUrKykKKwkJaWYgKG5hbWVzW3ZhbHVlXSAmJiBzdHJjYXNlY21wKG5hbWVzW3ZhbHVlXSwgbmFtZSkgPT0gMCkKKwkJCXJldHVybiB2YWx1ZTsKKworCXJldHVybiAtMTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKgorbG9va3VwX25hbWUoY29uc3QgY2hhciAqKm5hbWVzLCBpbnQgc2l6ZSwgaW50IHZhbHVlKQoreworCXJldHVybiAodmFsdWUgPj0gMCAmJiB2YWx1ZSA8IHNpemUpID8gbmFtZXNbdmFsdWVdIDogTlVMTDsKK30KKworc3RhdGljIHZvaWQgbGlzdF9uYW1lcyhGSUxFICpmLCBjb25zdCBjaGFyICoqbmFtZXMsIGludCBzaXplKQoreworCWludCB2YWx1ZTsKKworCWZvciAodmFsdWUgPSAwOyB2YWx1ZSA8IHNpemU7IHZhbHVlKyspCisJCWlmIChuYW1lc1t2YWx1ZV0pCisJCQlmcHJpbnRmKGYsICIgICAgJXNcbiIsIG5hbWVzW3ZhbHVlXSk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICp0eF90eXBlc1tdID0geworI2RlZmluZSBUWF9UWVBFKG5hbWUpIFtIV1RTVEFNUF9UWF8gIyMgbmFtZV0gPSAjbmFtZQorCVRYX1RZUEUoT0ZGKSwKKwlUWF9UWVBFKE9OKSwKKwlUWF9UWVBFKE9ORVNURVBfU1lOQykKKyN1bmRlZiBUWF9UWVBFCit9OworI2RlZmluZSBOX1RYX1RZUEVTICgoaW50KShzaXplb2YodHhfdHlwZXMpIC8gc2l6ZW9mKHR4X3R5cGVzWzBdKSkpCisKK3N0YXRpYyBjb25zdCBjaGFyICpyeF9maWx0ZXJzW10gPSB7CisjZGVmaW5lIFJYX0ZJTFRFUihuYW1lKSBbSFdUU1RBTVBfRklMVEVSXyAjIyBuYW1lXSA9ICNuYW1lCisJUlhfRklMVEVSKE5PTkUpLAorCVJYX0ZJTFRFUihBTEwpLAorCVJYX0ZJTFRFUihTT01FKSwKKwlSWF9GSUxURVIoUFRQX1YxX0w0X0VWRU5UKSwKKwlSWF9GSUxURVIoUFRQX1YxX0w0X1NZTkMpLAorCVJYX0ZJTFRFUihQVFBfVjFfTDRfREVMQVlfUkVRKSwKKwlSWF9GSUxURVIoUFRQX1YyX0w0X0VWRU5UKSwKKwlSWF9GSUxURVIoUFRQX1YyX0w0X1NZTkMpLAorCVJYX0ZJTFRFUihQVFBfVjJfTDRfREVMQVlfUkVRKSwKKwlSWF9GSUxURVIoUFRQX1YyX0wyX0VWRU5UKSwKKwlSWF9GSUxURVIoUFRQX1YyX0wyX1NZTkMpLAorCVJYX0ZJTFRFUihQVFBfVjJfTDJfREVMQVlfUkVRKSwKKwlSWF9GSUxURVIoUFRQX1YyX0VWRU5UKSwKKwlSWF9GSUxURVIoUFRQX1YyX1NZTkMpLAorCVJYX0ZJTFRFUihQVFBfVjJfREVMQVlfUkVRKSwKKyN1bmRlZiBSWF9GSUxURVIKK307CisjZGVmaW5lIE5fUlhfRklMVEVSUyAoKGludCkoc2l6ZW9mKHJ4X2ZpbHRlcnMpIC8gc2l6ZW9mKHJ4X2ZpbHRlcnNbMF0pKSkKKworc3RhdGljIHZvaWQgdXNhZ2Uodm9pZCkKK3sKKwlmcHV0cygiVXNhZ2U6IGh3dHN0YW1wX2NvbmZpZyBpZl9uYW1lIFt0eF90eXBlIHJ4X2ZpbHRlcl1cbiIKKwkgICAgICAidHhfdHlwZSBpcyBhbnkgb2YgKGNhc2UtaW5zZW5zaXRpdmUpOlxuIiwKKwkgICAgICBzdGRlcnIpOworCWxpc3RfbmFtZXMoc3RkZXJyLCB0eF90eXBlcywgTl9UWF9UWVBFUyk7CisJZnB1dHMoInJ4X2ZpbHRlciBpcyBhbnkgb2YgKGNhc2UtaW5zZW5zaXRpdmUpOlxuIiwgc3RkZXJyKTsKKwlsaXN0X25hbWVzKHN0ZGVyciwgcnhfZmlsdGVycywgTl9SWF9GSUxURVJTKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCXN0cnVjdCBpZnJlcSBpZnI7CisJc3RydWN0IGh3dHN0YW1wX2NvbmZpZyBjb25maWc7CisJY29uc3QgY2hhciAqbmFtZTsKKwlpbnQgc29jazsKKworCWlmICgoYXJnYyAhPSAyICYmIGFyZ2MgIT0gNCkgfHwgKHN0cmxlbihhcmd2WzFdKSA+PSBJRk5BTVNJWikpIHsKKwkJdXNhZ2UoKTsKKwkJcmV0dXJuIDI7CisJfQorCisJaWYgKGFyZ2MgPT0gNCkgeworCQljb25maWcuZmxhZ3MgPSAwOworCQljb25maWcudHhfdHlwZSA9IGxvb2t1cF92YWx1ZSh0eF90eXBlcywgTl9UWF9UWVBFUywgYXJndlsyXSk7CisJCWNvbmZpZy5yeF9maWx0ZXIgPSBsb29rdXBfdmFsdWUocnhfZmlsdGVycywgTl9SWF9GSUxURVJTLCBhcmd2WzNdKTsKKwkJaWYgKGNvbmZpZy50eF90eXBlIDwgMCB8fCBjb25maWcucnhfZmlsdGVyIDwgMCkgeworCQkJdXNhZ2UoKTsKKwkJCXJldHVybiAyOworCQl9CisJfQorCisJc29jayA9IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCAwKTsKKwlpZiAoc29jayA8IDApIHsKKwkJcGVycm9yKCJzb2NrZXQiKTsKKwkJcmV0dXJuIDE7CisJfQorCisJc3RyY3B5KGlmci5pZnJfbmFtZSwgYXJndlsxXSk7CisJaWZyLmlmcl9kYXRhID0gKGNhZGRyX3QpJmNvbmZpZzsKKworCWlmIChpb2N0bChzb2NrLCAoYXJnYyA9PSAyKSA/IFNJT0NHSFdUU1RBTVAgOiBTSU9DU0hXVFNUQU1QLCAmaWZyKSkgeworCQlwZXJyb3IoImlvY3RsIik7CisJCXJldHVybiAxOworCX0KKworCXByaW50ZigiZmxhZ3MgPSAlI3hcbiIsIGNvbmZpZy5mbGFncyk7CisJbmFtZSA9IGxvb2t1cF9uYW1lKHR4X3R5cGVzLCBOX1RYX1RZUEVTLCBjb25maWcudHhfdHlwZSk7CisJaWYgKG5hbWUpCisJCXByaW50ZigidHhfdHlwZSA9ICVzXG4iLCBuYW1lKTsKKwllbHNlCisJCXByaW50ZigidHhfdHlwZSA9ICVkXG4iLCBjb25maWcudHhfdHlwZSk7CisJbmFtZSA9IGxvb2t1cF9uYW1lKHJ4X2ZpbHRlcnMsIE5fUlhfRklMVEVSUywgY29uZmlnLnJ4X2ZpbHRlcik7CisJaWYgKG5hbWUpCisJCXByaW50ZigicnhfZmlsdGVyID0gJXNcbiIsIG5hbWUpOworCWVsc2UKKwkJcHJpbnRmKCJyeF9maWx0ZXIgPSAlZFxuIiwgY29uZmlnLnJ4X2ZpbHRlcik7CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy90aW1lc3RhbXBpbmcvdGltZXN0YW1waW5nLmMgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdGltZXN0YW1waW5nL3RpbWVzdGFtcGluZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZGZkNzQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdGltZXN0YW1waW5nL3RpbWVzdGFtcGluZy5jCkBAIC0wLDAgKzEsNTI4IEBACisvKgorICogVGhpcyBwcm9ncmFtIGRlbW9uc3RyYXRlcyBob3cgdGhlIHZhcmlvdXMgdGltZSBzdGFtcGluZyBmZWF0dXJlcyBpbgorICogdGhlIExpbnV4IGtlcm5lbCB3b3JrLiBJdCBlbXVsYXRlcyB0aGUgYmVoYXZpb3Igb2YgYSBQVFAKKyAqIGltcGxlbWVudGF0aW9uIGluIHN0YW5kLWFsb25lIG1hc3RlciBtb2RlIGJ5IHNlbmRpbmcgUFRQdjEgU3luYworICogbXVsdGljYXN0cyBvbmNlIGV2ZXJ5IHNlY29uZC4gSXQgbG9va3MgZm9yIHNpbWlsYXIgcGFja2V0cywgYnV0CisgKiBiZXlvbmQgdGhhdCBkb2Vzbid0IGFjdHVhbGx5IGltcGxlbWVudCBQVFAuCisgKgorICogT3V0Z29pbmcgcGFja2V0cyBhcmUgdGltZSBzdGFtcGVkIHdpdGggU09fVElNRVNUQU1QSU5HIHdpdGggb3IKKyAqIHdpdGhvdXQgaGFyZHdhcmUgc3VwcG9ydC4KKyAqCisgKiBJbmNvbWluZyBwYWNrZXRzIGFyZSB0aW1lIHN0YW1wZWQgd2l0aCBTT19USU1FU1RBTVBJTkcgd2l0aCBvcgorICogd2l0aG91dCBoYXJkd2FyZSBzdXBwb3J0LCBTSU9DR1NUQU1QW05TXSAocGVyLXNvY2tldCB0aW1lIHN0YW1wKSBhbmQKKyAqIFNPX1RJTUVTVEFNUFtOU10uCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEludGVsIENvcnBvcmF0aW9uLgorICogQXV0aG9yOiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCisgKiB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICogU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgKiB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqIDUxIEZyYW5rbGluIFN0IC0gRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCisgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNpbmNsdWRlIDxuZXQvaWYuaD4KKworI2luY2x1ZGUgPGFzbS90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L25ldF90c3RhbXAuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnJxdWV1ZS5oPgorCisjaWZuZGVmIFNPX1RJTUVTVEFNUElORworIyBkZWZpbmUgU09fVElNRVNUQU1QSU5HICAgICAgICAgMzcKKyMgZGVmaW5lIFNDTV9USU1FU1RBTVBJTkcgICAgICAgIFNPX1RJTUVTVEFNUElORworI2VuZGlmCisKKyNpZm5kZWYgU09fVElNRVNUQU1QTlMKKyMgZGVmaW5lIFNPX1RJTUVTVEFNUE5TIDM1CisjZW5kaWYKKworI2lmbmRlZiBTSU9DR1NUQU1QTlMKKyMgZGVmaW5lIFNJT0NHU1RBTVBOUyAweDg5MDcKKyNlbmRpZgorCisjaWZuZGVmIFNJT0NTSFdUU1RBTVAKKyMgZGVmaW5lIFNJT0NTSFdUU1RBTVAgMHg4OWIwCisjZW5kaWYKKworc3RhdGljIHZvaWQgdXNhZ2UoY29uc3QgY2hhciAqZXJyb3IpCit7CisJaWYgKGVycm9yKQorCQlwcmludGYoImludmFsaWQgb3B0aW9uOiAlc1xuIiwgZXJyb3IpOworCXByaW50ZigidGltZXN0YW1waW5nIGludGVyZmFjZSBvcHRpb24qXG5cbiIKKwkgICAgICAgIk9wdGlvbnM6XG4iCisJICAgICAgICIgIElQX01VTFRJQ0FTVF9MT09QIC0gbG9vcGluZyBvdXRnb2luZyBtdWx0aWNhc3RzXG4iCisJICAgICAgICIgIFNPX1RJTUVTVEFNUCAtIG5vcm1hbCBzb2Z0d2FyZSB0aW1lIHN0YW1waW5nLCBtcyByZXNvbHV0aW9uXG4iCisJICAgICAgICIgIFNPX1RJTUVTVEFNUE5TIC0gbW9yZSBhY2N1cmF0ZSBzb2Z0d2FyZSB0aW1lIHN0YW1waW5nXG4iCisJICAgICAgICIgIFNPRl9USU1FU1RBTVBJTkdfVFhfSEFSRFdBUkUgLSBoYXJkd2FyZSB0aW1lIHN0YW1waW5nIG9mIG91dGdvaW5nIHBhY2tldHNcbiIKKwkgICAgICAgIiAgU09GX1RJTUVTVEFNUElOR19UWF9TT0ZUV0FSRSAtIHNvZnR3YXJlIGZhbGxiYWNrIGZvciBvdXRnb2luZyBwYWNrZXRzXG4iCisJICAgICAgICIgIFNPRl9USU1FU1RBTVBJTkdfUlhfSEFSRFdBUkUgLSBoYXJkd2FyZSB0aW1lIHN0YW1waW5nIG9mIGluY29taW5nIHBhY2tldHNcbiIKKwkgICAgICAgIiAgU09GX1RJTUVTVEFNUElOR19SWF9TT0ZUV0FSRSAtIHNvZnR3YXJlIGZhbGxiYWNrIGZvciBpbmNvbWluZyBwYWNrZXRzXG4iCisJICAgICAgICIgIFNPRl9USU1FU1RBTVBJTkdfU09GVFdBUkUgLSByZXF1ZXN0IHJlcG9ydGluZyBvZiBzb2Z0d2FyZSB0aW1lIHN0YW1wc1xuIgorCSAgICAgICAiICBTT0ZfVElNRVNUQU1QSU5HX1JBV19IQVJEV0FSRSAtIHJlcXVlc3QgcmVwb3J0aW5nIG9mIHJhdyBIVyB0aW1lIHN0YW1wc1xuIgorCSAgICAgICAiICBTSU9DR1NUQU1QIC0gY2hlY2sgbGFzdCBzb2NrZXQgdGltZSBzdGFtcFxuIgorCSAgICAgICAiICBTSU9DR1NUQU1QTlMgLSBtb3JlIGFjY3VyYXRlIHNvY2tldCB0aW1lIHN0YW1wXG4iKTsKKwlleGl0KDEpOworfQorCitzdGF0aWMgdm9pZCBiYWlsKGNvbnN0IGNoYXIgKmVycm9yKQoreworCXByaW50ZigiJXM6ICVzXG4iLCBlcnJvciwgc3RyZXJyb3IoZXJybm8pKTsKKwlleGl0KDEpOworfQorCitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBzeW5jW10gPSB7CisJMHgwMCwgMHgwMSwgMHgwMCwgMHgwMSwKKwkweDVmLCAweDQ0LCAweDQ2LCAweDRjLAorCTB4NTQsIDB4MDAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLAorCTB4MDEsIDB4MDEsCisKKwkvKiBmYWtlIHV1aWQgKi8KKwkweDAwLCAweDAxLAorCTB4MDIsIDB4MDMsIDB4MDQsIDB4MDUsCisKKwkweDAwLCAweDAxLCAweDAwLCAweDM3LAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweDQ5LCAweDA1LCAweGNkLCAweDAxLAorCTB4MjksIDB4YjEsIDB4OGQsIDB4YjAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAxLAorCisJLyogZmFrZSB1dWlkICovCisJMHgwMCwgMHgwMSwKKwkweDAyLCAweDAzLCAweDA0LCAweDA1LAorCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgzNywKKwkweDAwLCAweDAwLCAweDAwLCAweDA0LAorCTB4NDQsIDB4NDYsIDB4NGMsIDB4NTQsCisJMHgwMCwgMHgwMCwgMHhmMCwgMHg2MCwKKwkweDAwLCAweDAxLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsCisJMHgwMCwgMHgwMCwgMHhmMCwgMHg2MCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsCisJMHg0NCwgMHg0NiwgMHg0YywgMHg1NCwKKwkweDAwLCAweDAxLAorCisJLyogZmFrZSB1dWlkICovCisJMHgwMCwgMHgwMSwKKwkweDAyLCAweDAzLCAweDA0LCAweDA1LAorCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweDAwLCAweDAwLCAweDAwLCAweDAwLAorCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMAorfTsKKworc3RhdGljIHZvaWQgc2VuZHBhY2tldChpbnQgc29jaywgc3RydWN0IHNvY2thZGRyICphZGRyLCBzb2NrbGVuX3QgYWRkcl9sZW4pCit7CisJc3RydWN0IHRpbWV2YWwgbm93OworCWludCByZXM7CisKKwlyZXMgPSBzZW5kdG8oc29jaywgc3luYywgc2l6ZW9mKHN5bmMpLCAwLAorCQlhZGRyLCBhZGRyX2xlbik7CisJZ2V0dGltZW9mZGF5KCZub3csIDApOworCWlmIChyZXMgPCAwKQorCQlwcmludGYoIiVzOiAlc1xuIiwgInNlbmQiLCBzdHJlcnJvcihlcnJubykpOworCWVsc2UKKwkJcHJpbnRmKCIlbGQuJTA2bGQ6IHNlbnQgJWQgYnl0ZXNcbiIsCisJCSAgICAgICAobG9uZylub3cudHZfc2VjLCAobG9uZylub3cudHZfdXNlYywKKwkJICAgICAgIHJlcyk7Cit9CisKK3N0YXRpYyB2b2lkIHByaW50cGFja2V0KHN0cnVjdCBtc2doZHIgKm1zZywgaW50IHJlcywKKwkJCWNoYXIgKmRhdGEsCisJCQlpbnQgc29jaywgaW50IHJlY3Ztc2dfZmxhZ3MsCisJCQlpbnQgc2lvY2dzdGFtcCwgaW50IHNpb2Nnc3RhbXBucykKK3sKKwlzdHJ1Y3Qgc29ja2FkZHJfaW4gKmZyb21fYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKiltc2ctPm1zZ19uYW1lOworCXN0cnVjdCBjbXNnaGRyICpjbXNnOworCXN0cnVjdCB0aW1ldmFsIHR2OworCXN0cnVjdCB0aW1lc3BlYyB0czsKKwlzdHJ1Y3QgdGltZXZhbCBub3c7CisKKwlnZXR0aW1lb2ZkYXkoJm5vdywgMCk7CisKKwlwcmludGYoIiVsZC4lMDZsZDogcmVjZWl2ZWQgJXMgZGF0YSwgJWQgYnl0ZXMgZnJvbSAlcywgJXp1IGJ5dGVzIGNvbnRyb2wgbWVzc2FnZXNcbiIsCisJICAgICAgIChsb25nKW5vdy50dl9zZWMsIChsb25nKW5vdy50dl91c2VjLAorCSAgICAgICAocmVjdm1zZ19mbGFncyAmIE1TR19FUlJRVUVVRSkgPyAiZXJyb3IiIDogInJlZ3VsYXIiLAorCSAgICAgICByZXMsCisJICAgICAgIGluZXRfbnRvYShmcm9tX2FkZHItPnNpbl9hZGRyKSwKKwkgICAgICAgbXNnLT5tc2dfY29udHJvbGxlbik7CisJZm9yIChjbXNnID0gQ01TR19GSVJTVEhEUihtc2cpOworCSAgICAgY21zZzsKKwkgICAgIGNtc2cgPSBDTVNHX05YVEhEUihtc2csIGNtc2cpKSB7CisJCXByaW50ZigiICAgY21zZyBsZW4gJXp1OiAiLCBjbXNnLT5jbXNnX2xlbik7CisJCXN3aXRjaCAoY21zZy0+Y21zZ19sZXZlbCkgeworCQljYXNlIFNPTF9TT0NLRVQ6CisJCQlwcmludGYoIlNPTF9TT0NLRVQgIik7CisJCQlzd2l0Y2ggKGNtc2ctPmNtc2dfdHlwZSkgeworCQkJY2FzZSBTT19USU1FU1RBTVA6IHsKKwkJCQlzdHJ1Y3QgdGltZXZhbCAqc3RhbXAgPQorCQkJCQkoc3RydWN0IHRpbWV2YWwgKilDTVNHX0RBVEEoY21zZyk7CisJCQkJcHJpbnRmKCJTT19USU1FU1RBTVAgJWxkLiUwNmxkIiwKKwkJCQkgICAgICAgKGxvbmcpc3RhbXAtPnR2X3NlYywKKwkJCQkgICAgICAgKGxvbmcpc3RhbXAtPnR2X3VzZWMpOworCQkJCWJyZWFrOworCQkJfQorCQkJY2FzZSBTT19USU1FU1RBTVBOUzogeworCQkJCXN0cnVjdCB0aW1lc3BlYyAqc3RhbXAgPQorCQkJCQkoc3RydWN0IHRpbWVzcGVjICopQ01TR19EQVRBKGNtc2cpOworCQkJCXByaW50ZigiU09fVElNRVNUQU1QTlMgJWxkLiUwOWxkIiwKKwkJCQkgICAgICAgKGxvbmcpc3RhbXAtPnR2X3NlYywKKwkJCQkgICAgICAgKGxvbmcpc3RhbXAtPnR2X25zZWMpOworCQkJCWJyZWFrOworCQkJfQorCQkJY2FzZSBTT19USU1FU1RBTVBJTkc6IHsKKwkJCQlzdHJ1Y3QgdGltZXNwZWMgKnN0YW1wID0KKwkJCQkJKHN0cnVjdCB0aW1lc3BlYyAqKUNNU0dfREFUQShjbXNnKTsKKwkJCQlwcmludGYoIlNPX1RJTUVTVEFNUElORyAiKTsKKwkJCQlwcmludGYoIlNXICVsZC4lMDlsZCAiLAorCQkJCSAgICAgICAobG9uZylzdGFtcC0+dHZfc2VjLAorCQkJCSAgICAgICAobG9uZylzdGFtcC0+dHZfbnNlYyk7CisJCQkJc3RhbXArKzsKKwkJCQkvKiBza2lwIGRlcHJlY2F0ZWQgSFcgdHJhbnNmb3JtZWQgKi8KKwkJCQlzdGFtcCsrOworCQkJCXByaW50ZigiSFcgcmF3ICVsZC4lMDlsZCIsCisJCQkJICAgICAgIChsb25nKXN0YW1wLT50dl9zZWMsCisJCQkJICAgICAgIChsb25nKXN0YW1wLT50dl9uc2VjKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWRlZmF1bHQ6CisJCQkJcHJpbnRmKCJ0eXBlICVkIiwgY21zZy0+Y21zZ190eXBlKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIElQUFJPVE9fSVA6CisJCQlwcmludGYoIklQUFJPVE9fSVAgIik7CisJCQlzd2l0Y2ggKGNtc2ctPmNtc2dfdHlwZSkgeworCQkJY2FzZSBJUF9SRUNWRVJSOiB7CisJCQkJc3RydWN0IHNvY2tfZXh0ZW5kZWRfZXJyICplcnIgPQorCQkJCQkoc3RydWN0IHNvY2tfZXh0ZW5kZWRfZXJyICopQ01TR19EQVRBKGNtc2cpOworCQkJCXByaW50ZigiSVBfUkVDVkVSUiBlZV9lcnJubyAnJXMnIGVlX29yaWdpbiAlZCA9PiAlcyIsCisJCQkJCXN0cmVycm9yKGVyci0+ZWVfZXJybm8pLAorCQkJCQllcnItPmVlX29yaWdpbiwKKyNpZmRlZiBTT19FRV9PUklHSU5fVElNRVNUQU1QSU5HCisJCQkJCWVyci0+ZWVfb3JpZ2luID09IFNPX0VFX09SSUdJTl9USU1FU1RBTVBJTkcgPworCQkJCQkiYm91bmNlZCBwYWNrZXQiIDogInVuZXhwZWN0ZWQgb3JpZ2luIgorI2Vsc2UKKwkJCQkJInByb2JhYmx5IFNPX0VFX09SSUdJTl9USU1FU1RBTVBJTkciCisjZW5kaWYKKwkJCQkJKTsKKwkJCQlpZiAocmVzIDwgc2l6ZW9mKHN5bmMpKQorCQkJCQlwcmludGYoIiA9PiB0cnVuY2F0ZWQgZGF0YT8hIik7CisJCQkJZWxzZSBpZiAoIW1lbWNtcChzeW5jLCBkYXRhICsgcmVzIC0gc2l6ZW9mKHN5bmMpLAorCQkJCQkJCXNpemVvZihzeW5jKSkpCisJCQkJCXByaW50ZigiID0+IEdPVCBPVVIgREFUQSBCQUNLIChIVVJSQVkhKSIpOworCQkJCWJyZWFrOworCQkJfQorCQkJY2FzZSBJUF9QS1RJTkZPOiB7CisJCQkJc3RydWN0IGluX3BrdGluZm8gKnBrdGluZm8gPQorCQkJCQkoc3RydWN0IGluX3BrdGluZm8gKilDTVNHX0RBVEEoY21zZyk7CisJCQkJcHJpbnRmKCJJUF9QS1RJTkZPIGludGVyZmFjZSBpbmRleCAldSIsCisJCQkJCXBrdGluZm8tPmlwaV9pZmluZGV4KTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWRlZmF1bHQ6CisJCQkJcHJpbnRmKCJ0eXBlICVkIiwgY21zZy0+Y21zZ190eXBlKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJcHJpbnRmKCJsZXZlbCAlZCB0eXBlICVkIiwKKwkJCQljbXNnLT5jbXNnX2xldmVsLAorCQkJCWNtc2ctPmNtc2dfdHlwZSk7CisJCQlicmVhazsKKwkJfQorCQlwcmludGYoIlxuIik7CisJfQorCisJaWYgKHNpb2Nnc3RhbXApIHsKKwkJaWYgKGlvY3RsKHNvY2ssIFNJT0NHU1RBTVAsICZ0dikpCisJCQlwcmludGYoIiAgICVzOiAlc1xuIiwgIlNJT0NHU1RBTVAiLCBzdHJlcnJvcihlcnJubykpOworCQllbHNlCisJCQlwcmludGYoIlNJT0NHU1RBTVAgJWxkLiUwNmxkXG4iLAorCQkJICAgICAgIChsb25nKXR2LnR2X3NlYywKKwkJCSAgICAgICAobG9uZyl0di50dl91c2VjKTsKKwl9CisJaWYgKHNpb2Nnc3RhbXBucykgeworCQlpZiAoaW9jdGwoc29jaywgU0lPQ0dTVEFNUE5TLCAmdHMpKQorCQkJcHJpbnRmKCIgICAlczogJXNcbiIsICJTSU9DR1NUQU1QTlMiLCBzdHJlcnJvcihlcnJubykpOworCQllbHNlCisJCQlwcmludGYoIlNJT0NHU1RBTVBOUyAlbGQuJTA5bGRcbiIsCisJCQkgICAgICAgKGxvbmcpdHMudHZfc2VjLAorCQkJICAgICAgIChsb25nKXRzLnR2X25zZWMpOworCX0KK30KKworc3RhdGljIHZvaWQgcmVjdnBhY2tldChpbnQgc29jaywgaW50IHJlY3Ztc2dfZmxhZ3MsCisJCSAgICAgICBpbnQgc2lvY2dzdGFtcCwgaW50IHNpb2Nnc3RhbXBucykKK3sKKwljaGFyIGRhdGFbMjU2XTsKKwlzdHJ1Y3QgbXNnaGRyIG1zZzsKKwlzdHJ1Y3QgaW92ZWMgZW50cnk7CisJc3RydWN0IHNvY2thZGRyX2luIGZyb21fYWRkcjsKKwlzdHJ1Y3QgeworCQlzdHJ1Y3QgY21zZ2hkciBjbTsKKwkJY2hhciBjb250cm9sWzUxMl07CisJfSBjb250cm9sOworCWludCByZXM7CisKKwltZW1zZXQoJm1zZywgMCwgc2l6ZW9mKG1zZykpOworCW1zZy5tc2dfaW92ID0gJmVudHJ5OworCW1zZy5tc2dfaW92bGVuID0gMTsKKwllbnRyeS5pb3ZfYmFzZSA9IGRhdGE7CisJZW50cnkuaW92X2xlbiA9IHNpemVvZihkYXRhKTsKKwltc2cubXNnX25hbWUgPSAoY2FkZHJfdCkmZnJvbV9hZGRyOworCW1zZy5tc2dfbmFtZWxlbiA9IHNpemVvZihmcm9tX2FkZHIpOworCW1zZy5tc2dfY29udHJvbCA9ICZjb250cm9sOworCW1zZy5tc2dfY29udHJvbGxlbiA9IHNpemVvZihjb250cm9sKTsKKworCXJlcyA9IHJlY3Ztc2coc29jaywgJm1zZywgcmVjdm1zZ19mbGFnc3xNU0dfRE9OVFdBSVQpOworCWlmIChyZXMgPCAwKSB7CisJCXByaW50ZigiJXMgJXM6ICVzXG4iLAorCQkgICAgICAgInJlY3Ztc2ciLAorCQkgICAgICAgKHJlY3Ztc2dfZmxhZ3MgJiBNU0dfRVJSUVVFVUUpID8gImVycm9yIiA6ICJyZWd1bGFyIiwKKwkJICAgICAgIHN0cmVycm9yKGVycm5vKSk7CisJfSBlbHNlIHsKKwkJcHJpbnRwYWNrZXQoJm1zZywgcmVzLCBkYXRhLAorCQkJICAgIHNvY2ssIHJlY3Ztc2dfZmxhZ3MsCisJCQkgICAgc2lvY2dzdGFtcCwgc2lvY2dzdGFtcG5zKTsKKwl9Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlpbnQgc29fdGltZXN0YW1waW5nX2ZsYWdzID0gMDsKKwlpbnQgc29fdGltZXN0YW1wID0gMDsKKwlpbnQgc29fdGltZXN0YW1wbnMgPSAwOworCWludCBzaW9jZ3N0YW1wID0gMDsKKwlpbnQgc2lvY2dzdGFtcG5zID0gMDsKKwlpbnQgaXBfbXVsdGljYXN0X2xvb3AgPSAwOworCWNoYXIgKmludGVyZmFjZTsKKwlpbnQgaTsKKwlpbnQgZW5hYmxlZCA9IDE7CisJaW50IHNvY2s7CisJc3RydWN0IGlmcmVxIGRldmljZTsKKwlzdHJ1Y3QgaWZyZXEgaHd0c3RhbXA7CisJc3RydWN0IGh3dHN0YW1wX2NvbmZpZyBod2NvbmZpZywgaHdjb25maWdfcmVxdWVzdGVkOworCXN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOworCXN0cnVjdCBpcF9tcmVxIGltcjsKKwlzdHJ1Y3QgaW5fYWRkciBpYWRkcjsKKwlpbnQgdmFsOworCXNvY2tsZW5fdCBsZW47CisJc3RydWN0IHRpbWV2YWwgbmV4dDsKKworCWlmIChhcmdjIDwgMikKKwkJdXNhZ2UoMCk7CisJaW50ZXJmYWNlID0gYXJndlsxXTsKKworCWZvciAoaSA9IDI7IGkgPCBhcmdjOyBpKyspIHsKKwkJaWYgKCFzdHJjYXNlY21wKGFyZ3ZbaV0sICJTT19USU1FU1RBTVAiKSkKKwkJCXNvX3RpbWVzdGFtcCA9IDE7CisJCWVsc2UgaWYgKCFzdHJjYXNlY21wKGFyZ3ZbaV0sICJTT19USU1FU1RBTVBOUyIpKQorCQkJc29fdGltZXN0YW1wbnMgPSAxOworCQllbHNlIGlmICghc3RyY2FzZWNtcChhcmd2W2ldLCAiU0lPQ0dTVEFNUCIpKQorCQkJc2lvY2dzdGFtcCA9IDE7CisJCWVsc2UgaWYgKCFzdHJjYXNlY21wKGFyZ3ZbaV0sICJTSU9DR1NUQU1QTlMiKSkKKwkJCXNpb2Nnc3RhbXBucyA9IDE7CisJCWVsc2UgaWYgKCFzdHJjYXNlY21wKGFyZ3ZbaV0sICJJUF9NVUxUSUNBU1RfTE9PUCIpKQorCQkJaXBfbXVsdGljYXN0X2xvb3AgPSAxOworCQllbHNlIGlmICghc3RyY2FzZWNtcChhcmd2W2ldLCAiU09GX1RJTUVTVEFNUElOR19UWF9IQVJEV0FSRSIpKQorCQkJc29fdGltZXN0YW1waW5nX2ZsYWdzIHw9IFNPRl9USU1FU1RBTVBJTkdfVFhfSEFSRFdBUkU7CisJCWVsc2UgaWYgKCFzdHJjYXNlY21wKGFyZ3ZbaV0sICJTT0ZfVElNRVNUQU1QSU5HX1RYX1NPRlRXQVJFIikpCisJCQlzb190aW1lc3RhbXBpbmdfZmxhZ3MgfD0gU09GX1RJTUVTVEFNUElOR19UWF9TT0ZUV0FSRTsKKwkJZWxzZSBpZiAoIXN0cmNhc2VjbXAoYXJndltpXSwgIlNPRl9USU1FU1RBTVBJTkdfUlhfSEFSRFdBUkUiKSkKKwkJCXNvX3RpbWVzdGFtcGluZ19mbGFncyB8PSBTT0ZfVElNRVNUQU1QSU5HX1JYX0hBUkRXQVJFOworCQllbHNlIGlmICghc3RyY2FzZWNtcChhcmd2W2ldLCAiU09GX1RJTUVTVEFNUElOR19SWF9TT0ZUV0FSRSIpKQorCQkJc29fdGltZXN0YW1waW5nX2ZsYWdzIHw9IFNPRl9USU1FU1RBTVBJTkdfUlhfU09GVFdBUkU7CisJCWVsc2UgaWYgKCFzdHJjYXNlY21wKGFyZ3ZbaV0sICJTT0ZfVElNRVNUQU1QSU5HX1NPRlRXQVJFIikpCisJCQlzb190aW1lc3RhbXBpbmdfZmxhZ3MgfD0gU09GX1RJTUVTVEFNUElOR19TT0ZUV0FSRTsKKwkJZWxzZSBpZiAoIXN0cmNhc2VjbXAoYXJndltpXSwgIlNPRl9USU1FU1RBTVBJTkdfUkFXX0hBUkRXQVJFIikpCisJCQlzb190aW1lc3RhbXBpbmdfZmxhZ3MgfD0gU09GX1RJTUVTVEFNUElOR19SQVdfSEFSRFdBUkU7CisJCWVsc2UKKwkJCXVzYWdlKGFyZ3ZbaV0pOworCX0KKworCXNvY2sgPSBzb2NrZXQoUEZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApOworCWlmIChzb2NrIDwgMCkKKwkJYmFpbCgic29ja2V0Iik7CisKKwltZW1zZXQoJmRldmljZSwgMCwgc2l6ZW9mKGRldmljZSkpOworCXN0cm5jcHkoZGV2aWNlLmlmcl9uYW1lLCBpbnRlcmZhY2UsIHNpemVvZihkZXZpY2UuaWZyX25hbWUpKTsKKwlpZiAoaW9jdGwoc29jaywgU0lPQ0dJRkFERFIsICZkZXZpY2UpIDwgMCkKKwkJYmFpbCgiZ2V0dGluZyBpbnRlcmZhY2UgSVAgYWRkcmVzcyIpOworCisJbWVtc2V0KCZod3RzdGFtcCwgMCwgc2l6ZW9mKGh3dHN0YW1wKSk7CisJc3RybmNweShod3RzdGFtcC5pZnJfbmFtZSwgaW50ZXJmYWNlLCBzaXplb2YoaHd0c3RhbXAuaWZyX25hbWUpKTsKKwlod3RzdGFtcC5pZnJfZGF0YSA9ICh2b2lkICopJmh3Y29uZmlnOworCW1lbXNldCgmaHdjb25maWcsIDAsIHNpemVvZihod2NvbmZpZykpOworCWh3Y29uZmlnLnR4X3R5cGUgPQorCQkoc29fdGltZXN0YW1waW5nX2ZsYWdzICYgU09GX1RJTUVTVEFNUElOR19UWF9IQVJEV0FSRSkgPworCQlIV1RTVEFNUF9UWF9PTiA6IEhXVFNUQU1QX1RYX09GRjsKKwlod2NvbmZpZy5yeF9maWx0ZXIgPQorCQkoc29fdGltZXN0YW1waW5nX2ZsYWdzICYgU09GX1RJTUVTVEFNUElOR19SWF9IQVJEV0FSRSkgPworCQlIV1RTVEFNUF9GSUxURVJfUFRQX1YxX0w0X1NZTkMgOiBIV1RTVEFNUF9GSUxURVJfTk9ORTsKKwlod2NvbmZpZ19yZXF1ZXN0ZWQgPSBod2NvbmZpZzsKKwlpZiAoaW9jdGwoc29jaywgU0lPQ1NIV1RTVEFNUCwgJmh3dHN0YW1wKSA8IDApIHsKKwkJaWYgKChlcnJubyA9PSBFSU5WQUwgfHwgZXJybm8gPT0gRU5PVFNVUCkgJiYKKwkJICAgIGh3Y29uZmlnX3JlcXVlc3RlZC50eF90eXBlID09IEhXVFNUQU1QX1RYX09GRiAmJgorCQkgICAgaHdjb25maWdfcmVxdWVzdGVkLnJ4X2ZpbHRlciA9PSBIV1RTVEFNUF9GSUxURVJfTk9ORSkKKwkJCXByaW50ZigiU0lPQ1NIV1RTVEFNUDogZGlzYWJsaW5nIGhhcmR3YXJlIHRpbWUgc3RhbXBpbmcgbm90IHBvc3NpYmxlXG4iKTsKKwkJZWxzZQorCQkJYmFpbCgiU0lPQ1NIV1RTVEFNUCIpOworCX0KKwlwcmludGYoIlNJT0NTSFdUU1RBTVA6IHR4X3R5cGUgJWQgcmVxdWVzdGVkLCBnb3QgJWQ7IHJ4X2ZpbHRlciAlZCByZXF1ZXN0ZWQsIGdvdCAlZFxuIiwKKwkgICAgICAgaHdjb25maWdfcmVxdWVzdGVkLnR4X3R5cGUsIGh3Y29uZmlnLnR4X3R5cGUsCisJICAgICAgIGh3Y29uZmlnX3JlcXVlc3RlZC5yeF9maWx0ZXIsIGh3Y29uZmlnLnJ4X2ZpbHRlcik7CisKKwkvKiBiaW5kIHRvIFBUUCBwb3J0ICovCisJYWRkci5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKKwlhZGRyLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKElOQUREUl9BTlkpOworCWFkZHIuc2luX3BvcnQgPSBodG9ucygzMTkgLyogUFRQIGV2ZW50IHBvcnQgKi8pOworCWlmIChiaW5kKHNvY2ssCisJCSAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsCisJCSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgPCAwKQorCQliYWlsKCJiaW5kIik7CisKKwkvKiBzZXQgbXVsdGljYXN0IGdyb3VwIGZvciBvdXRnb2luZyBwYWNrZXRzICovCisJaW5ldF9hdG9uKCIyMjQuMC4xLjEzMCIsICZpYWRkcik7IC8qIGFsdGVybmF0ZSBQVFAgZG9tYWluIDEgKi8KKwlhZGRyLnNpbl9hZGRyID0gaWFkZHI7CisJaW1yLmltcl9tdWx0aWFkZHIuc19hZGRyID0gaWFkZHIuc19hZGRyOworCWltci5pbXJfaW50ZXJmYWNlLnNfYWRkciA9CisJCSgoc3RydWN0IHNvY2thZGRyX2luICopJmRldmljZS5pZnJfYWRkciktPnNpbl9hZGRyLnNfYWRkcjsKKwlpZiAoc2V0c29ja29wdChzb2NrLCBJUFBST1RPX0lQLCBJUF9NVUxUSUNBU1RfSUYsCisJCSAgICAgICAmaW1yLmltcl9pbnRlcmZhY2Uuc19hZGRyLCBzaXplb2Yoc3RydWN0IGluX2FkZHIpKSA8IDApCisJCWJhaWwoInNldCBtdWx0aWNhc3QiKTsKKworCS8qIGpvaW4gbXVsdGljYXN0IGdyb3VwLCBsb29wIG91ciBvd24gcGFja2V0ICovCisJaWYgKHNldHNvY2tvcHQoc29jaywgSVBQUk9UT19JUCwgSVBfQUREX01FTUJFUlNISVAsCisJCSAgICAgICAmaW1yLCBzaXplb2Yoc3RydWN0IGlwX21yZXEpKSA8IDApCisJCWJhaWwoImpvaW4gbXVsdGljYXN0IGdyb3VwIik7CisKKwlpZiAoc2V0c29ja29wdChzb2NrLCBJUFBST1RPX0lQLCBJUF9NVUxUSUNBU1RfTE9PUCwKKwkJICAgICAgICZpcF9tdWx0aWNhc3RfbG9vcCwgc2l6ZW9mKGVuYWJsZWQpKSA8IDApIHsKKwkJYmFpbCgibG9vcCBtdWx0aWNhc3QiKTsKKwl9CisKKwkvKiBzZXQgc29ja2V0IG9wdGlvbnMgZm9yIHRpbWUgc3RhbXBpbmcgKi8KKwlpZiAoc29fdGltZXN0YW1wICYmCisJCXNldHNvY2tvcHQoc29jaywgU09MX1NPQ0tFVCwgU09fVElNRVNUQU1QLAorCQkJICAgJmVuYWJsZWQsIHNpemVvZihlbmFibGVkKSkgPCAwKQorCQliYWlsKCJzZXRzb2Nrb3B0IFNPX1RJTUVTVEFNUCIpOworCisJaWYgKHNvX3RpbWVzdGFtcG5zICYmCisJCXNldHNvY2tvcHQoc29jaywgU09MX1NPQ0tFVCwgU09fVElNRVNUQU1QTlMsCisJCQkgICAmZW5hYmxlZCwgc2l6ZW9mKGVuYWJsZWQpKSA8IDApCisJCWJhaWwoInNldHNvY2tvcHQgU09fVElNRVNUQU1QTlMiKTsKKworCWlmIChzb190aW1lc3RhbXBpbmdfZmxhZ3MgJiYKKwkJc2V0c29ja29wdChzb2NrLCBTT0xfU09DS0VULCBTT19USU1FU1RBTVBJTkcsCisJCQkgICAmc29fdGltZXN0YW1waW5nX2ZsYWdzLAorCQkJICAgc2l6ZW9mKHNvX3RpbWVzdGFtcGluZ19mbGFncykpIDwgMCkKKwkJYmFpbCgic2V0c29ja29wdCBTT19USU1FU1RBTVBJTkciKTsKKworCS8qIHJlcXVlc3QgSVBfUEtUSU5GTyBmb3IgZGVidWdnaW5nIHB1cnBvc2VzICovCisJaWYgKHNldHNvY2tvcHQoc29jaywgU09MX0lQLCBJUF9QS1RJTkZPLAorCQkgICAgICAgJmVuYWJsZWQsIHNpemVvZihlbmFibGVkKSkgPCAwKQorCQlwcmludGYoIiVzOiAlc1xuIiwgInNldHNvY2tvcHQgSVBfUEtUSU5GTyIsIHN0cmVycm9yKGVycm5vKSk7CisKKwkvKiB2ZXJpZnkgc29ja2V0IG9wdGlvbnMgKi8KKwlsZW4gPSBzaXplb2YodmFsKTsKKwlpZiAoZ2V0c29ja29wdChzb2NrLCBTT0xfU09DS0VULCBTT19USU1FU1RBTVAsICZ2YWwsICZsZW4pIDwgMCkKKwkJcHJpbnRmKCIlczogJXNcbiIsICJnZXRzb2Nrb3B0IFNPX1RJTUVTVEFNUCIsIHN0cmVycm9yKGVycm5vKSk7CisJZWxzZQorCQlwcmludGYoIlNPX1RJTUVTVEFNUCAlZFxuIiwgdmFsKTsKKworCWlmIChnZXRzb2Nrb3B0KHNvY2ssIFNPTF9TT0NLRVQsIFNPX1RJTUVTVEFNUE5TLCAmdmFsLCAmbGVuKSA8IDApCisJCXByaW50ZigiJXM6ICVzXG4iLCAiZ2V0c29ja29wdCBTT19USU1FU1RBTVBOUyIsCisJCSAgICAgICBzdHJlcnJvcihlcnJubykpOworCWVsc2UKKwkJcHJpbnRmKCJTT19USU1FU1RBTVBOUyAlZFxuIiwgdmFsKTsKKworCWlmIChnZXRzb2Nrb3B0KHNvY2ssIFNPTF9TT0NLRVQsIFNPX1RJTUVTVEFNUElORywgJnZhbCwgJmxlbikgPCAwKSB7CisJCXByaW50ZigiJXM6ICVzXG4iLCAiZ2V0c29ja29wdCBTT19USU1FU1RBTVBJTkciLAorCQkgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKKwl9IGVsc2UgeworCQlwcmludGYoIlNPX1RJTUVTVEFNUElORyAlZFxuIiwgdmFsKTsKKwkJaWYgKHZhbCAhPSBzb190aW1lc3RhbXBpbmdfZmxhZ3MpCisJCQlwcmludGYoIiAgIG5vdCB0aGUgZXhwZWN0ZWQgdmFsdWUgJWRcbiIsCisJCQkgICAgICAgc29fdGltZXN0YW1waW5nX2ZsYWdzKTsKKwl9CisKKwkvKiBzZW5kIHBhY2tldHMgZm9yZXZlciBldmVyeSBmaXZlIHNlY29uZHMgKi8KKwlnZXR0aW1lb2ZkYXkoJm5leHQsIDApOworCW5leHQudHZfc2VjID0gKG5leHQudHZfc2VjICsgMSkgLyA1ICogNTsKKwluZXh0LnR2X3VzZWMgPSAwOworCXdoaWxlICgxKSB7CisJCXN0cnVjdCB0aW1ldmFsIG5vdzsKKwkJc3RydWN0IHRpbWV2YWwgZGVsdGE7CisJCWxvbmcgZGVsdGFfdXM7CisJCWludCByZXM7CisJCWZkX3NldCByZWFkZnMsIGVycm9yZnM7CisKKwkJZ2V0dGltZW9mZGF5KCZub3csIDApOworCQlkZWx0YV91cyA9IChsb25nKShuZXh0LnR2X3NlYyAtIG5vdy50dl9zZWMpICogMTAwMDAwMCArCisJCQkobG9uZykobmV4dC50dl91c2VjIC0gbm93LnR2X3VzZWMpOworCQlpZiAoZGVsdGFfdXMgPiAwKSB7CisJCQkvKiBjb250aW51ZSB3YWl0aW5nIGZvciB0aW1lb3V0IG9yIGRhdGEgKi8KKwkJCWRlbHRhLnR2X3NlYyA9IGRlbHRhX3VzIC8gMTAwMDAwMDsKKwkJCWRlbHRhLnR2X3VzZWMgPSBkZWx0YV91cyAlIDEwMDAwMDA7CisKKwkJCUZEX1pFUk8oJnJlYWRmcyk7CisJCQlGRF9aRVJPKCZlcnJvcmZzKTsKKwkJCUZEX1NFVChzb2NrLCAmcmVhZGZzKTsKKwkJCUZEX1NFVChzb2NrLCAmZXJyb3Jmcyk7CisJCQlwcmludGYoIiVsZC4lMDZsZDogc2VsZWN0ICVsZHVzXG4iLAorCQkJICAgICAgIChsb25nKW5vdy50dl9zZWMsIChsb25nKW5vdy50dl91c2VjLAorCQkJICAgICAgIGRlbHRhX3VzKTsKKwkJCXJlcyA9IHNlbGVjdChzb2NrICsgMSwgJnJlYWRmcywgMCwgJmVycm9yZnMsICZkZWx0YSk7CisJCQlnZXR0aW1lb2ZkYXkoJm5vdywgMCk7CisJCQlwcmludGYoIiVsZC4lMDZsZDogc2VsZWN0IHJldHVybmVkOiAlZCwgJXNcbiIsCisJCQkgICAgICAgKGxvbmcpbm93LnR2X3NlYywgKGxvbmcpbm93LnR2X3VzZWMsCisJCQkgICAgICAgcmVzLAorCQkJICAgICAgIHJlcyA8IDAgPyBzdHJlcnJvcihlcnJubykgOiAic3VjY2VzcyIpOworCQkJaWYgKHJlcyA+IDApIHsKKwkJCQlpZiAoRkRfSVNTRVQoc29jaywgJnJlYWRmcykpCisJCQkJCXByaW50ZigicmVhZHkgZm9yIHJlYWRpbmdcbiIpOworCQkJCWlmIChGRF9JU1NFVChzb2NrLCAmZXJyb3JmcykpCisJCQkJCXByaW50ZigiaGFzIGVycm9yXG4iKTsKKwkJCQlyZWN2cGFja2V0KHNvY2ssIDAsCisJCQkJCSAgIHNpb2Nnc3RhbXAsCisJCQkJCSAgIHNpb2Nnc3RhbXBucyk7CisJCQkJcmVjdnBhY2tldChzb2NrLCBNU0dfRVJSUVVFVUUsCisJCQkJCSAgIHNpb2Nnc3RhbXAsCisJCQkJCSAgIHNpb2Nnc3RhbXBucyk7CisJCQl9CisJCX0gZWxzZSB7CisJCQkvKiB3cml0ZSBvbmUgcGFja2V0ICovCisJCQlzZW5kcGFja2V0KHNvY2ssCisJCQkJICAgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLAorCQkJCSAgIHNpemVvZihhZGRyKSk7CisJCQluZXh0LnR2X3NlYyArPSA1OworCQkJY29udGludWU7CisJCX0KKwl9CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy90aW1lc3RhbXBpbmcvdHh0aW1lc3RhbXAuYyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy90aW1lc3RhbXBpbmcvdHh0aW1lc3RhbXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGYwNzA0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RpbWVzdGFtcGluZy90eHRpbWVzdGFtcC5jCkBAIC0wLDAgKzEsNTQ5IEBACisvKgorICogQ29weXJpZ2h0IDIwMTQgR29vZ2xlIEluYy4KKyAqIEF1dGhvcjogd2lsbGVtYkBnb29nbGUuY29tIChXaWxsZW0gZGUgQnJ1aWpuKQorICoKKyAqIFRlc3Qgc29mdHdhcmUgdHggdGltZXN0YW1waW5nLCBpbmNsdWRpbmcKKyAqCisgKiAtIFNDSEVELCBTTkQgYW5kIEFDSyB0aW1lc3RhbXBzCisgKiAtIFJBVywgVURQIGFuZCBUQ1AKKyAqIC0gSVB2NCBhbmQgSVB2NgorICogLSB2YXJpb3VzIHBhY2tldCBzaXplcyAodG8gdGVzdCBHU08gYW5kIFRTTykKKyAqCisgKiBDb25zdWx0IHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGZvciBoZWxwIG9uIHJ1bm5pbmcKKyAqIHRoZSB2YXJpb3VzIHRlc3RjYXNlcy4KKyAqCisgKiBUaGlzIHRlc3QgcmVxdWlyZXMgYSBkdW1teSBUQ1Agc2VydmVyLgorICogQSBzaW1wbGUgYG5jNiBbLXVdIC1sIC1wICRERVNUUE9SVGAgd2lsbCBkbworICoKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKKyAqIHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gKiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICogbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKKyAqIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorICogNTEgRnJhbmtsaW4gU3QgLSBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KKyAqLworCisjZGVmaW5lIF9HTlVfU09VUkNFCisKKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNpbmNsdWRlIDxhc20vdHlwZXMuaD4KKyNpbmNsdWRlIDxlcnJvci5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnJxdWV1ZS5oPgorI2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+CisjaW5jbHVkZSA8bGludXgvbmV0X3RzdGFtcC5oPgorI2luY2x1ZGUgPG5ldGRiLmg+CisjaW5jbHVkZSA8bmV0L2lmLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPG5ldGluZXQvaXAuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L3VkcC5oPgorI2luY2x1ZGUgPG5ldGluZXQvdGNwLmg+CisjaW5jbHVkZSA8bmV0cGFja2V0L3BhY2tldC5oPgorI2luY2x1ZGUgPHBvbGwuaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxzeXMvc2VsZWN0Lmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisvKiBjb21tYW5kIGxpbmUgcGFyYW1ldGVycyAqLworc3RhdGljIGludCBjZmdfcHJvdG8gPSBTT0NLX1NUUkVBTTsKK3N0YXRpYyBpbnQgY2ZnX2lwcHJvdG8gPSBJUFBST1RPX1RDUDsKK3N0YXRpYyBpbnQgY2ZnX251bV9wa3RzID0gNDsKK3N0YXRpYyBpbnQgZG9faXB2NCA9IDE7CitzdGF0aWMgaW50IGRvX2lwdjYgPSAxOworc3RhdGljIGludCBjZmdfcGF5bG9hZF9sZW4gPSAxMDsKK3N0YXRpYyBib29sIGNmZ19zaG93X3BheWxvYWQ7CitzdGF0aWMgYm9vbCBjZmdfZG9fcGt0aW5mbzsKK3N0YXRpYyBib29sIGNmZ19sb29wX25vZGF0YTsKK3N0YXRpYyB1aW50MTZfdCBkZXN0X3BvcnQgPSA5MDAwOworCitzdGF0aWMgc3RydWN0IHNvY2thZGRyX2luIGRhZGRyOworc3RhdGljIHN0cnVjdCBzb2NrYWRkcl9pbjYgZGFkZHI2Oworc3RhdGljIHN0cnVjdCB0aW1lc3BlYyB0c19wcmV2OworCitzdGF0aWMgdm9pZCBfX3ByaW50X3RpbWVzdGFtcChjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgdGltZXNwZWMgKmN1ciwKKwkJCSAgICAgIHVpbnQzMl90IGtleSwgaW50IHBheWxvYWRfbGVuKQoreworCWlmICghKGN1ci0+dHZfc2VjIHwgY3VyLT50dl9uc2VjKSkKKwkJcmV0dXJuOworCisJZnByaW50ZihzdGRlcnIsICIgICVzOiAlbHUgcyAlbHUgdXMgKHNlcT0ldSwgbGVuPSV1KSIsCisJCQluYW1lLCBjdXItPnR2X3NlYywgY3VyLT50dl9uc2VjIC8gMTAwMCwKKwkJCWtleSwgcGF5bG9hZF9sZW4pOworCisJaWYgKCh0c19wcmV2LnR2X3NlYyB8IHRzX3ByZXYudHZfbnNlYykpIHsKKwkJaW50NjRfdCBjdXJfbXMsIHByZXZfbXM7CisKKwkJY3VyX21zID0gKGxvbmcpIGN1ci0+dHZfc2VjICogMTAwMCAqIDEwMDA7CisJCWN1cl9tcyArPSBjdXItPnR2X25zZWMgLyAxMDAwOworCisJCXByZXZfbXMgPSAobG9uZykgdHNfcHJldi50dl9zZWMgKiAxMDAwICogMTAwMDsKKwkJcHJldl9tcyArPSB0c19wcmV2LnR2X25zZWMgLyAxMDAwOworCisJCWZwcmludGYoc3RkZXJyLCAiICAoJSsiIFBSSWQ2NCAiIHVzKSIsIGN1cl9tcyAtIHByZXZfbXMpOworCX0KKworCXRzX3ByZXYgPSAqY3VyOworCWZwcmludGYoc3RkZXJyLCAiXG4iKTsKK30KKworc3RhdGljIHZvaWQgcHJpbnRfdGltZXN0YW1wX3Vzcih2b2lkKQoreworCXN0cnVjdCB0aW1lc3BlYyB0czsKKwlzdHJ1Y3QgdGltZXZhbCB0djsJLyogYXZvaWQgZGVwZW5kZW5jeSBvbiAtbHJ0ICovCisKKwlnZXR0aW1lb2ZkYXkoJnR2LCBOVUxMKTsKKwl0cy50dl9zZWMgPSB0di50dl9zZWM7CisJdHMudHZfbnNlYyA9IHR2LnR2X3VzZWMgKiAxMDAwOworCisJX19wcmludF90aW1lc3RhbXAoIiAgVVNSIiwgJnRzLCAwLCAwKTsKK30KKworc3RhdGljIHZvaWQgcHJpbnRfdGltZXN0YW1wKHN0cnVjdCBzY21fdGltZXN0YW1waW5nICp0c3MsIGludCB0c3R5cGUsCisJCQkgICAgaW50IHRza2V5LCBpbnQgcGF5bG9hZF9sZW4pCit7CisJY29uc3QgY2hhciAqdHNuYW1lOworCisJc3dpdGNoICh0c3R5cGUpIHsKKwljYXNlIFNDTV9UU1RBTVBfU0NIRUQ6CisJCXRzbmFtZSA9ICIgIEVOUSI7CisJCWJyZWFrOworCWNhc2UgU0NNX1RTVEFNUF9TTkQ6CisJCXRzbmFtZSA9ICIgIFNORCI7CisJCWJyZWFrOworCWNhc2UgU0NNX1RTVEFNUF9BQ0s6CisJCXRzbmFtZSA9ICIgIEFDSyI7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWVycm9yKDEsIDAsICJ1bmtub3duIHRpbWVzdGFtcCB0eXBlOiAldSIsCisJCXRzdHlwZSk7CisJfQorCV9fcHJpbnRfdGltZXN0YW1wKHRzbmFtZSwgJnRzcy0+dHNbMF0sIHRza2V5LCBwYXlsb2FkX2xlbik7Cit9CisKKy8qIFRPRE86IGNvbnZlcnQgdG8gY2hlY2tfYW5kX3ByaW50IHBheWxvYWQgb25jZSBBUEkgaXMgc3RhYmxlICovCitzdGF0aWMgdm9pZCBwcmludF9wYXlsb2FkKGNoYXIgKmRhdGEsIGludCBsZW4pCit7CisJaW50IGk7CisKKwlpZiAoIWxlbikKKwkJcmV0dXJuOworCisJaWYgKGxlbiA+IDcwKQorCQlsZW4gPSA3MDsKKworCWZwcmludGYoc3RkZXJyLCAicGF5bG9hZDogIik7CisJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQorCQlmcHJpbnRmKHN0ZGVyciwgIiUwMmhoeCAiLCBkYXRhW2ldKTsKKwlmcHJpbnRmKHN0ZGVyciwgIlxuIik7Cit9CisKK3N0YXRpYyB2b2lkIHByaW50X3BrdGluZm8oaW50IGZhbWlseSwgaW50IGlmaW5kZXgsIHZvaWQgKnNhZGRyLCB2b2lkICpkYWRkcikKK3sKKwljaGFyIHNhW0lORVQ2X0FERFJTVFJMRU5dLCBkYVtJTkVUNl9BRERSU1RSTEVOXTsKKworCWZwcmludGYoc3RkZXJyLCAiICAgICAgICAgcGt0aW5mbzogaWZpbmRleD0ldSBzcmM9JXMgZHN0PSVzXG4iLAorCQlpZmluZGV4LAorCQlzYWRkciA/IGluZXRfbnRvcChmYW1pbHksIHNhZGRyLCBzYSwgc2l6ZW9mKHNhKSkgOiAidW5rbm93biIsCisJCWRhZGRyID8gaW5ldF9udG9wKGZhbWlseSwgZGFkZHIsIGRhLCBzaXplb2YoZGEpKSA6ICJ1bmtub3duIik7Cit9CisKK3N0YXRpYyB2b2lkIF9fcG9sbChpbnQgZmQpCit7CisJc3RydWN0IHBvbGxmZCBwb2xsZmQ7CisJaW50IHJldDsKKworCW1lbXNldCgmcG9sbGZkLCAwLCBzaXplb2YocG9sbGZkKSk7CisJcG9sbGZkLmZkID0gZmQ7CisJcmV0ID0gcG9sbCgmcG9sbGZkLCAxLCAxMDApOworCWlmIChyZXQgIT0gMSkKKwkJZXJyb3IoMSwgZXJybm8sICJwb2xsIik7Cit9CisKK3N0YXRpYyB2b2lkIF9fcmVjdl9lcnJtc2dfY21zZyhzdHJ1Y3QgbXNnaGRyICptc2csIGludCBwYXlsb2FkX2xlbikKK3sKKwlzdHJ1Y3Qgc29ja19leHRlbmRlZF9lcnIgKnNlcnIgPSBOVUxMOworCXN0cnVjdCBzY21fdGltZXN0YW1waW5nICp0c3MgPSBOVUxMOworCXN0cnVjdCBjbXNnaGRyICpjbTsKKwlpbnQgYmF0Y2ggPSAwOworCisJZm9yIChjbSA9IENNU0dfRklSU1RIRFIobXNnKTsKKwkgICAgIGNtICYmIGNtLT5jbXNnX2xlbjsKKwkgICAgIGNtID0gQ01TR19OWFRIRFIobXNnLCBjbSkpIHsKKwkJaWYgKGNtLT5jbXNnX2xldmVsID09IFNPTF9TT0NLRVQgJiYKKwkJICAgIGNtLT5jbXNnX3R5cGUgPT0gU0NNX1RJTUVTVEFNUElORykgeworCQkJdHNzID0gKHZvaWQgKikgQ01TR19EQVRBKGNtKTsKKwkJfSBlbHNlIGlmICgoY20tPmNtc2dfbGV2ZWwgPT0gU09MX0lQICYmCisJCQkgICAgY20tPmNtc2dfdHlwZSA9PSBJUF9SRUNWRVJSKSB8fAorCQkJICAgKGNtLT5jbXNnX2xldmVsID09IFNPTF9JUFY2ICYmCisJCQkgICAgY20tPmNtc2dfdHlwZSA9PSBJUFY2X1JFQ1ZFUlIpKSB7CisJCQlzZXJyID0gKHZvaWQgKikgQ01TR19EQVRBKGNtKTsKKwkJCWlmIChzZXJyLT5lZV9lcnJubyAhPSBFTk9NU0cgfHwKKwkJCSAgICBzZXJyLT5lZV9vcmlnaW4gIT0gU09fRUVfT1JJR0lOX1RJTUVTVEFNUElORykgeworCQkJCWZwcmludGYoc3RkZXJyLCAidW5rbm93biBpcCBlcnJvciAlZCAlZFxuIiwKKwkJCQkJCXNlcnItPmVlX2Vycm5vLAorCQkJCQkJc2Vyci0+ZWVfb3JpZ2luKTsKKwkJCQlzZXJyID0gTlVMTDsKKwkJCX0KKwkJfSBlbHNlIGlmIChjbS0+Y21zZ19sZXZlbCA9PSBTT0xfSVAgJiYKKwkJCSAgIGNtLT5jbXNnX3R5cGUgPT0gSVBfUEtUSU5GTykgeworCQkJc3RydWN0IGluX3BrdGluZm8gKmluZm8gPSAodm9pZCAqKSBDTVNHX0RBVEEoY20pOworCQkJcHJpbnRfcGt0aW5mbyhBRl9JTkVULCBpbmZvLT5pcGlfaWZpbmRleCwKKwkJCQkgICAgICAmaW5mby0+aXBpX3NwZWNfZHN0LCAmaW5mby0+aXBpX2FkZHIpOworCQl9IGVsc2UgaWYgKGNtLT5jbXNnX2xldmVsID09IFNPTF9JUFY2ICYmCisJCQkgICBjbS0+Y21zZ190eXBlID09IElQVjZfUEtUSU5GTykgeworCQkJc3RydWN0IGluNl9wa3RpbmZvICppbmZvNiA9ICh2b2lkICopIENNU0dfREFUQShjbSk7CisJCQlwcmludF9wa3RpbmZvKEFGX0lORVQ2LCBpbmZvNi0+aXBpNl9pZmluZGV4LAorCQkJCSAgICAgIE5VTEwsICZpbmZvNi0+aXBpNl9hZGRyKTsKKwkJfSBlbHNlCisJCQlmcHJpbnRmKHN0ZGVyciwgInVua25vd24gY21zZyAlZCwlZFxuIiwKKwkJCQkJY20tPmNtc2dfbGV2ZWwsIGNtLT5jbXNnX3R5cGUpOworCisJCWlmIChzZXJyICYmIHRzcykgeworCQkJcHJpbnRfdGltZXN0YW1wKHRzcywgc2Vyci0+ZWVfaW5mbywgc2Vyci0+ZWVfZGF0YSwKKwkJCQkJcGF5bG9hZF9sZW4pOworCQkJc2VyciA9IE5VTEw7CisJCQl0c3MgPSBOVUxMOworCQkJYmF0Y2grKzsKKwkJfQorCX0KKworCWlmIChiYXRjaCA+IDEpCisJCWZwcmludGYoc3RkZXJyLCAiYmF0Y2hlZCAlZCB0aW1lc3RhbXBzXG4iLCBiYXRjaCk7Cit9CisKK3N0YXRpYyBpbnQgcmVjdl9lcnJtc2coaW50IGZkKQoreworCXN0YXRpYyBjaGFyIGN0cmxbMTAyNCAvKiBvdmVycHJvdmlzaW9uKi9dOworCXN0YXRpYyBzdHJ1Y3QgbXNnaGRyIG1zZzsKKwlzdHJ1Y3QgaW92ZWMgZW50cnk7CisJc3RhdGljIGNoYXIgKmRhdGE7CisJaW50IHJldCA9IDA7CisKKwlkYXRhID0gbWFsbG9jKGNmZ19wYXlsb2FkX2xlbik7CisJaWYgKCFkYXRhKQorCQllcnJvcigxLCAwLCAibWFsbG9jIik7CisKKwltZW1zZXQoJm1zZywgMCwgc2l6ZW9mKG1zZykpOworCW1lbXNldCgmZW50cnksIDAsIHNpemVvZihlbnRyeSkpOworCW1lbXNldChjdHJsLCAwLCBzaXplb2YoY3RybCkpOworCisJZW50cnkuaW92X2Jhc2UgPSBkYXRhOworCWVudHJ5Lmlvdl9sZW4gPSBjZmdfcGF5bG9hZF9sZW47CisJbXNnLm1zZ19pb3YgPSAmZW50cnk7CisJbXNnLm1zZ19pb3ZsZW4gPSAxOworCW1zZy5tc2dfbmFtZSA9IE5VTEw7CisJbXNnLm1zZ19uYW1lbGVuID0gMDsKKwltc2cubXNnX2NvbnRyb2wgPSBjdHJsOworCW1zZy5tc2dfY29udHJvbGxlbiA9IHNpemVvZihjdHJsKTsKKworCXJldCA9IHJlY3Ztc2coZmQsICZtc2csIE1TR19FUlJRVUVVRSk7CisJaWYgKHJldCA9PSAtMSAmJiBlcnJubyAhPSBFQUdBSU4pCisJCWVycm9yKDEsIGVycm5vLCAicmVjdm1zZyIpOworCisJaWYgKHJldCA+PSAwKSB7CisJCV9fcmVjdl9lcnJtc2dfY21zZygmbXNnLCByZXQpOworCQlpZiAoY2ZnX3Nob3dfcGF5bG9hZCkKKwkJCXByaW50X3BheWxvYWQoZGF0YSwgY2ZnX3BheWxvYWRfbGVuKTsKKwl9CisKKwlmcmVlKGRhdGEpOworCXJldHVybiByZXQgPT0gLTE7Cit9CisKK3N0YXRpYyB2b2lkIGRvX3Rlc3QoaW50IGZhbWlseSwgdW5zaWduZWQgaW50IG9wdCkKK3sKKwljaGFyICpidWY7CisJaW50IGZkLCBpLCB2YWwgPSAxLCB0b3RhbF9sZW47CisKKwlpZiAoZmFtaWx5ID09IEFGX0lORVQ2ICYmIGNmZ19wcm90byAhPSBTT0NLX1NUUkVBTSkgeworCQkvKiBkdWUgdG8gbGFjayBvZiBjaGVja3N1bSBnZW5lcmF0aW9uIGNvZGUgKi8KKwkJZnByaW50ZihzdGRlcnIsICJ0ZXN0OiBza2lwcGluZyBkYXRhZ3JhbSBvdmVyIElQdjZcbiIpOworCQlyZXR1cm47CisJfQorCisJdG90YWxfbGVuID0gY2ZnX3BheWxvYWRfbGVuOworCWlmIChjZmdfcHJvdG8gPT0gU09DS19SQVcpIHsKKwkJdG90YWxfbGVuICs9IHNpemVvZihzdHJ1Y3QgdWRwaGRyKTsKKwkJaWYgKGNmZ19pcHByb3RvID09IElQUFJPVE9fUkFXKQorCQkJdG90YWxfbGVuICs9IHNpemVvZihzdHJ1Y3QgaXBoZHIpOworCX0KKworCWJ1ZiA9IG1hbGxvYyh0b3RhbF9sZW4pOworCWlmICghYnVmKQorCQllcnJvcigxLCAwLCAibWFsbG9jIik7CisKKwlmZCA9IHNvY2tldChmYW1pbHksIGNmZ19wcm90bywgY2ZnX2lwcHJvdG8pOworCWlmIChmZCA8IDApCisJCWVycm9yKDEsIGVycm5vLCAic29ja2V0Iik7CisKKwlpZiAoY2ZnX3Byb3RvID09IFNPQ0tfU1RSRUFNKSB7CisJCWlmIChzZXRzb2Nrb3B0KGZkLCBJUFBST1RPX1RDUCwgVENQX05PREVMQVksCisJCQkgICAgICAgKGNoYXIqKSAmdmFsLCBzaXplb2YodmFsKSkpCisJCQllcnJvcigxLCAwLCAic2V0c29ja29wdCBubyBuYWdsZSIpOworCisJCWlmIChmYW1pbHkgPT0gUEZfSU5FVCkgeworCQkJaWYgKGNvbm5lY3QoZmQsICh2b2lkICopICZkYWRkciwgc2l6ZW9mKGRhZGRyKSkpCisJCQkJZXJyb3IoMSwgZXJybm8sICJjb25uZWN0IGlwdjQiKTsKKwkJfSBlbHNlIHsKKwkJCWlmIChjb25uZWN0KGZkLCAodm9pZCAqKSAmZGFkZHI2LCBzaXplb2YoZGFkZHI2KSkpCisJCQkJZXJyb3IoMSwgZXJybm8sICJjb25uZWN0IGlwdjYiKTsKKwkJfQorCX0KKworCWlmIChjZmdfZG9fcGt0aW5mbykgeworCQlpZiAoZmFtaWx5ID09IEFGX0lORVQ2KSB7CisJCQlpZiAoc2V0c29ja29wdChmZCwgU09MX0lQVjYsIElQVjZfUkVDVlBLVElORk8sCisJCQkJICAgICAgICZ2YWwsIHNpemVvZih2YWwpKSkKKwkJCQllcnJvcigxLCBlcnJubywgInNldHNvY2tvcHQgcGt0aW5mbyBpcHY2Iik7CisJCX0gZWxzZSB7CisJCQlpZiAoc2V0c29ja29wdChmZCwgU09MX0lQLCBJUF9QS1RJTkZPLAorCQkJCSAgICAgICAmdmFsLCBzaXplb2YodmFsKSkpCisJCQkJZXJyb3IoMSwgZXJybm8sICJzZXRzb2Nrb3B0IHBrdGluZm8gaXB2NCIpOworCQl9CisJfQorCisJb3B0IHw9IFNPRl9USU1FU1RBTVBJTkdfU09GVFdBUkUgfAorCSAgICAgICBTT0ZfVElNRVNUQU1QSU5HX09QVF9DTVNHIHwKKwkgICAgICAgU09GX1RJTUVTVEFNUElOR19PUFRfSUQ7CisJaWYgKGNmZ19sb29wX25vZGF0YSkKKwkJb3B0IHw9IFNPRl9USU1FU1RBTVBJTkdfT1BUX1RTT05MWTsKKworCWlmIChzZXRzb2Nrb3B0KGZkLCBTT0xfU09DS0VULCBTT19USU1FU1RBTVBJTkcsCisJCSAgICAgICAoY2hhciAqKSAmb3B0LCBzaXplb2Yob3B0KSkpCisJCWVycm9yKDEsIDAsICJzZXRzb2Nrb3B0IHRpbWVzdGFtcGluZyIpOworCisJZm9yIChpID0gMDsgaSA8IGNmZ19udW1fcGt0czsgaSsrKSB7CisJCW1lbXNldCgmdHNfcHJldiwgMCwgc2l6ZW9mKHRzX3ByZXYpKTsKKwkJbWVtc2V0KGJ1ZiwgJ2EnICsgaSwgdG90YWxfbGVuKTsKKworCQlpZiAoY2ZnX3Byb3RvID09IFNPQ0tfUkFXKSB7CisJCQlzdHJ1Y3QgdWRwaGRyICp1ZHBoOworCQkJaW50IG9mZiA9IDA7CisKKwkJCWlmIChjZmdfaXBwcm90byA9PSBJUFBST1RPX1JBVykgeworCQkJCXN0cnVjdCBpcGhkciAqaXBoID0gKHZvaWQgKikgYnVmOworCisJCQkJbWVtc2V0KGlwaCwgMCwgc2l6ZW9mKCppcGgpKTsKKwkJCQlpcGgtPmlobCAgICAgID0gNTsKKwkJCQlpcGgtPnZlcnNpb24gID0gNDsKKwkJCQlpcGgtPnR0bCAgICAgID0gMjsKKwkJCQlpcGgtPmRhZGRyICAgID0gZGFkZHIuc2luX2FkZHIuc19hZGRyOworCQkJCWlwaC0+cHJvdG9jb2wgPSBJUFBST1RPX1VEUDsKKwkJCQkvKiBrZXJuZWwgd3JpdGVzIHNhZGRyLCBjc3VtLCBsZW4gKi8KKworCQkJCW9mZiA9IHNpemVvZigqaXBoKTsKKwkJCX0KKworCQkJdWRwaCA9ICh2b2lkICopIGJ1ZiArIG9mZjsKKwkJCXVkcGgtPnNvdXJjZSA9IG50b2hzKDkwMDApOyAJLyogcmFuZG9tIHNwb29mICovCisJCQl1ZHBoLT5kZXN0ICAgPSBudG9ocyhkZXN0X3BvcnQpOworCQkJdWRwaC0+bGVuICAgID0gbnRvaHMoc2l6ZW9mKCp1ZHBoKSArIGNmZ19wYXlsb2FkX2xlbik7CisJCQl1ZHBoLT5jaGVjayAgPSAwOwkvKiBub3QgYWxsb3dlZCBmb3IgSVB2NiAqLworCQl9CisKKwkJcHJpbnRfdGltZXN0YW1wX3VzcigpOworCQlpZiAoY2ZnX3Byb3RvICE9IFNPQ0tfU1RSRUFNKSB7CisJCQlpZiAoZmFtaWx5ID09IFBGX0lORVQpCisJCQkJdmFsID0gc2VuZHRvKGZkLCBidWYsIHRvdGFsX2xlbiwgMCwgKHZvaWQgKikgJmRhZGRyLCBzaXplb2YoZGFkZHIpKTsKKwkJCWVsc2UKKwkJCQl2YWwgPSBzZW5kdG8oZmQsIGJ1ZiwgdG90YWxfbGVuLCAwLCAodm9pZCAqKSAmZGFkZHI2LCBzaXplb2YoZGFkZHI2KSk7CisJCX0gZWxzZSB7CisJCQl2YWwgPSBzZW5kKGZkLCBidWYsIGNmZ19wYXlsb2FkX2xlbiwgMCk7CisJCX0KKwkJaWYgKHZhbCAhPSB0b3RhbF9sZW4pCisJCQllcnJvcigxLCBlcnJubywgInNlbmQiKTsKKworCQkvKiB3YWl0IGZvciBhbGwgZXJyb3JzIHRvIGJlIHF1ZXVlZCwgZWxzZSBBQ0tzIGFycml2ZSBPT08gKi8KKwkJdXNsZWVwKDUwICogMTAwMCk7CisKKwkJX19wb2xsKGZkKTsKKworCQl3aGlsZSAoIXJlY3ZfZXJybXNnKGZkKSkge30KKwl9CisKKwlpZiAoY2xvc2UoZmQpKQorCQllcnJvcigxLCBlcnJubywgImNsb3NlIik7CisKKwlmcmVlKGJ1Zik7CisJdXNsZWVwKDQwMCAqIDEwMDApOworfQorCitzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpIHVzYWdlKGNvbnN0IGNoYXIgKmZpbGVwYXRoKQoreworCWZwcmludGYoc3RkZXJyLCAiXG5Vc2FnZTogJXMgW29wdGlvbnNdIGhvc3RuYW1lXG4iCisJCQkiXG53aGVyZSBvcHRpb25zIGFyZTpcbiIKKwkJCSIgIC00OiAgIG9ubHkgSVB2NFxuIgorCQkJIiAgLTY6ICAgb25seSBJUHY2XG4iCisJCQkiICAtaDogICBzaG93IHRoaXMgbWVzc2FnZVxuIgorCQkJIiAgLUk6ICAgcmVxdWVzdCBQS1RJTkZPXG4iCisJCQkiICAtbCBOOiBzZW5kIE4gYnl0ZXMgYXQgYSB0aW1lXG4iCisJCQkiICAtbjogICBzZXQgbm8tcGF5bG9hZCBvcHRpb25cbiIKKwkJCSIgIC1yOiAgIHVzZSByYXdcbiIKKwkJCSIgIC1SOiAgIHVzZSByYXcgKElQX0hEUklOQ0wpXG4iCisJCQkiICAtcCBOOiBjb25uZWN0IHRvIHBvcnQgTlxuIgorCQkJIiAgLXU6ICAgdXNlIHVkcFxuIgorCQkJIiAgLXg6ICAgc2hvdyBwYXlsb2FkICh1cCB0byA3MCBieXRlcylcbiIsCisJCQlmaWxlcGF0aCk7CisJZXhpdCgxKTsKK30KKworc3RhdGljIHZvaWQgcGFyc2Vfb3B0KGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlpbnQgcHJvdG9fY291bnQgPSAwOworCWNoYXIgYzsKKworCXdoaWxlICgoYyA9IGdldG9wdChhcmdjLCBhcmd2LCAiNDZoSWw6bnA6clJ1eCIpKSAhPSAtMSkgeworCQlzd2l0Y2ggKGMpIHsKKwkJY2FzZSAnNCc6CisJCQlkb19pcHY2ID0gMDsKKwkJCWJyZWFrOworCQljYXNlICc2JzoKKwkJCWRvX2lwdjQgPSAwOworCQkJYnJlYWs7CisJCWNhc2UgJ0knOgorCQkJY2ZnX2RvX3BrdGluZm8gPSB0cnVlOworCQkJYnJlYWs7CisJCWNhc2UgJ24nOgorCQkJY2ZnX2xvb3Bfbm9kYXRhID0gdHJ1ZTsKKwkJCWJyZWFrOworCQljYXNlICdyJzoKKwkJCXByb3RvX2NvdW50Kys7CisJCQljZmdfcHJvdG8gPSBTT0NLX1JBVzsKKwkJCWNmZ19pcHByb3RvID0gSVBQUk9UT19VRFA7CisJCQlicmVhazsKKwkJY2FzZSAnUic6CisJCQlwcm90b19jb3VudCsrOworCQkJY2ZnX3Byb3RvID0gU09DS19SQVc7CisJCQljZmdfaXBwcm90byA9IElQUFJPVE9fUkFXOworCQkJYnJlYWs7CisJCWNhc2UgJ3UnOgorCQkJcHJvdG9fY291bnQrKzsKKwkJCWNmZ19wcm90byA9IFNPQ0tfREdSQU07CisJCQljZmdfaXBwcm90byA9IElQUFJPVE9fVURQOworCQkJYnJlYWs7CisJCWNhc2UgJ2wnOgorCQkJY2ZnX3BheWxvYWRfbGVuID0gc3RydG91bChvcHRhcmcsIE5VTEwsIDEwKTsKKwkJCWJyZWFrOworCQljYXNlICdwJzoKKwkJCWRlc3RfcG9ydCA9IHN0cnRvdWwob3B0YXJnLCBOVUxMLCAxMCk7CisJCQlicmVhazsKKwkJY2FzZSAneCc6CisJCQljZmdfc2hvd19wYXlsb2FkID0gdHJ1ZTsKKwkJCWJyZWFrOworCQljYXNlICdoJzoKKwkJZGVmYXVsdDoKKwkJCXVzYWdlKGFyZ3ZbMF0pOworCQl9CisJfQorCisJaWYgKCFjZmdfcGF5bG9hZF9sZW4pCisJCWVycm9yKDEsIDAsICJwYXlsb2FkIG1heSBub3QgYmUgbm9uemVybyIpOworCWlmIChjZmdfcHJvdG8gIT0gU09DS19TVFJFQU0gJiYgY2ZnX3BheWxvYWRfbGVuID4gMTQ3MikKKwkJZXJyb3IoMSwgMCwgInVkcCBwYWNrZXQgbWlnaHQgZXhjZWVkIGV4cGVjdGVkIE1UVSIpOworCWlmICghZG9faXB2NCAmJiAhZG9faXB2NikKKwkJZXJyb3IoMSwgMCwgInBhc3MgLTQgb3IgLTYsIG5vdCBib3RoIik7CisJaWYgKHByb3RvX2NvdW50ID4gMSkKKwkJZXJyb3IoMSwgMCwgInBhc3MgLXIsIC1SIG9yIC11LCBub3QgbXVsdGlwbGUiKTsKKworCWlmIChvcHRpbmQgIT0gYXJnYyAtIDEpCisJCWVycm9yKDEsIDAsICJtaXNzaW5nIHJlcXVpcmVkIGhvc3RuYW1lIGFyZ3VtZW50Iik7Cit9CisKK3N0YXRpYyB2b2lkIHJlc29sdmVfaG9zdG5hbWUoY29uc3QgY2hhciAqaG9zdG5hbWUpCit7CisJc3RydWN0IGFkZHJpbmZvICphZGRycywgKmN1cjsKKwlpbnQgaGF2ZV9pcHY0ID0gMCwgaGF2ZV9pcHY2ID0gMDsKKworCWlmIChnZXRhZGRyaW5mbyhob3N0bmFtZSwgTlVMTCwgTlVMTCwgJmFkZHJzKSkKKwkJZXJyb3IoMSwgZXJybm8sICJnZXRhZGRyaW5mbyIpOworCisJY3VyID0gYWRkcnM7CisJd2hpbGUgKGN1ciAmJiAhaGF2ZV9pcHY0ICYmICFoYXZlX2lwdjYpIHsKKwkJaWYgKCFoYXZlX2lwdjQgJiYgY3VyLT5haV9mYW1pbHkgPT0gQUZfSU5FVCkgeworCQkJbWVtY3B5KCZkYWRkciwgY3VyLT5haV9hZGRyLCBzaXplb2YoZGFkZHIpKTsKKwkJCWRhZGRyLnNpbl9wb3J0ID0gaHRvbnMoZGVzdF9wb3J0KTsKKwkJCWhhdmVfaXB2NCA9IDE7CisJCX0KKwkJZWxzZSBpZiAoIWhhdmVfaXB2NiAmJiBjdXItPmFpX2ZhbWlseSA9PSBBRl9JTkVUNikgeworCQkJbWVtY3B5KCZkYWRkcjYsIGN1ci0+YWlfYWRkciwgc2l6ZW9mKGRhZGRyNikpOworCQkJZGFkZHI2LnNpbjZfcG9ydCA9IGh0b25zKGRlc3RfcG9ydCk7CisJCQloYXZlX2lwdjYgPSAxOworCQl9CisJCWN1ciA9IGN1ci0+YWlfbmV4dDsKKwl9CisJaWYgKGFkZHJzKQorCQlmcmVlYWRkcmluZm8oYWRkcnMpOworCisJZG9faXB2NCAmPSBoYXZlX2lwdjQ7CisJZG9faXB2NiAmPSBoYXZlX2lwdjY7Cit9CisKK3N0YXRpYyB2b2lkIGRvX21haW4oaW50IGZhbWlseSkKK3sKKwlmcHJpbnRmKHN0ZGVyciwgImZhbWlseTogICAgICAgJXNcbiIsCisJCQlmYW1pbHkgPT0gUEZfSU5FVCA/ICJJTkVUIiA6ICJJTkVUNiIpOworCisJZnByaW50ZihzdGRlcnIsICJ0ZXN0IFNORFxuIik7CisJZG9fdGVzdChmYW1pbHksIFNPRl9USU1FU1RBTVBJTkdfVFhfU09GVFdBUkUpOworCisJZnByaW50ZihzdGRlcnIsICJ0ZXN0IEVOUVxuIik7CisJZG9fdGVzdChmYW1pbHksIFNPRl9USU1FU1RBTVBJTkdfVFhfU0NIRUQpOworCisJZnByaW50ZihzdGRlcnIsICJ0ZXN0IEVOUSArIFNORFxuIik7CisJZG9fdGVzdChmYW1pbHksIFNPRl9USU1FU1RBTVBJTkdfVFhfU0NIRUQgfAorCQkJU09GX1RJTUVTVEFNUElOR19UWF9TT0ZUV0FSRSk7CisKKwlpZiAoY2ZnX3Byb3RvID09IFNPQ0tfU1RSRUFNKSB7CisJCWZwcmludGYoc3RkZXJyLCAiXG50ZXN0IEFDS1xuIik7CisJCWRvX3Rlc3QoZmFtaWx5LCBTT0ZfVElNRVNUQU1QSU5HX1RYX0FDSyk7CisKKwkJZnByaW50ZihzdGRlcnIsICJcbnRlc3QgU05EICsgQUNLXG4iKTsKKwkJZG9fdGVzdChmYW1pbHksIFNPRl9USU1FU1RBTVBJTkdfVFhfU09GVFdBUkUgfAorCQkJCVNPRl9USU1FU1RBTVBJTkdfVFhfQUNLKTsKKworCQlmcHJpbnRmKHN0ZGVyciwgIlxudGVzdCBFTlEgKyBTTkQgKyBBQ0tcbiIpOworCQlkb190ZXN0KGZhbWlseSwgU09GX1RJTUVTVEFNUElOR19UWF9TQ0hFRCB8CisJCQkJU09GX1RJTUVTVEFNUElOR19UWF9TT0ZUV0FSRSB8CisJCQkJU09GX1RJTUVTVEFNUElOR19UWF9BQ0spOworCX0KK30KKworY29uc3QgY2hhciAqc29ja19uYW1lc1tdID0geyBOVUxMLCAiVENQIiwgIlVEUCIsICJSQVciIH07CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlpZiAoYXJnYyA9PSAxKQorCQl1c2FnZShhcmd2WzBdKTsKKworCXBhcnNlX29wdChhcmdjLCBhcmd2KTsKKwlyZXNvbHZlX2hvc3RuYW1lKGFyZ3ZbYXJnYyAtIDFdKTsKKworCWZwcmludGYoc3RkZXJyLCAicHJvdG9jb2w6ICAgICAlc1xuIiwgc29ja19uYW1lc1tjZmdfcHJvdG9dKTsKKwlmcHJpbnRmKHN0ZGVyciwgInBheWxvYWQ6ICAgICAgJXVcbiIsIGNmZ19wYXlsb2FkX2xlbik7CisJZnByaW50ZihzdGRlcnIsICJzZXJ2ZXIgcG9ydDogICV1XG4iLCBkZXN0X3BvcnQpOworCWZwcmludGYoc3RkZXJyLCAiXG4iKTsKKworCWlmIChkb19pcHY0KQorCQlkb19tYWluKFBGX0lORVQpOworCWlmIChkb19pcHY2KQorCQlkb19tYWluKFBGX0lORVQ2KTsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RsYW4udHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RsYW4udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0NTUwZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdGxhbi50eHQKQEAgLTAsMCArMSwxMTcgQEAKKyhDKSAxOTk3LTE5OTggQ2FsZGVyYSwgSW5jLgorKEMpIDE5OTggSmFtZXMgQmFua3MKKyhDKSAxOTk5LTIwMDEgVG9yYmVuIE1hdGhpYXNlbiA8dG1tQGltYWdlLmRrLCB0b3JiZW4ubWF0aGlhc2VuQGNvbXBhcS5jb20+CisKK0ZvciBkcml2ZXIgaW5mb3JtYXRpb24vdXBkYXRlcyB2aXNpdCBodHRwOi8vd3d3LmNvbXBhcS5jb20KKworCitUTEFOIGRyaXZlciBmb3IgTGludXgsIHZlcnNpb24gMS4xNGEKK1JFQURNRQorCisKK0kuICBTdXBwb3J0ZWQgRGV2aWNlcy4KKworICAgIE9ubHkgUENJIGRldmljZXMgd2lsbCB3b3JrIHdpdGggdGhpcyBkcml2ZXIuCisKKyAgICBTdXBwb3J0ZWQ6CisgICAgVmVuZG9yIElECURldmljZSBJRAlOYW1lCisgICAgMGUxMQlhZTMyCQlDb21wYXEgTmV0ZWxsaWdlbnQgMTAvMTAwIFRYIFBDSSBVVFAKKyAgICAwZTExCWFlMzQJCUNvbXBhcSBOZXRlbGxpZ2VudCAxMCBUIFBDSSBVVFAKKyAgICAwZTExCWFlMzUJCUNvbXBhcSBJbnRlZ3JhdGVkIE5ldEZsZXggMy9QCisgICAgMGUxMQlhZTQwCQlDb21wYXEgTmV0ZWxsaWdlbnQgRHVhbCAxMC8xMDAgVFggUENJIFVUUAorICAgIDBlMTEJYWU0MwkJQ29tcGFxIE5ldGVsbGlnZW50IEludGVncmF0ZWQgMTAvMTAwIFRYIFVUUAorICAgIDBlMTEJYjAxMQkJQ29tcGFxIE5ldGVsbGlnZW50IDEwLzEwMCBUWCBFbWJlZGRlZCBVVFAKKyAgICAwZTExCWIwMTIJCUNvbXBhcSBOZXRlbGxpZ2VudCAxMCBULzIgUENJIFVUUC9Db2F4CisgICAgMGUxMQliMDMwCQlDb21wYXEgTmV0ZWxsaWdlbnQgMTAvMTAwIFRYIFVUUAorICAgIDBlMTEJZjEzMAkJQ29tcGFxIE5ldEZsZXggMy9QCisgICAgMGUxMQlmMTUwCQlDb21wYXEgTmV0RmxleCAzL1AKKyAgICAxMDhkCTAwMTIJCU9saWNvbSBPQy0yMzI1CQorICAgIDEwOGQJMDAxMwkJT2xpY29tIE9DLTIxODMKKyAgICAxMDhkCTAwMTQJCU9saWNvbSBPQy0yMzI2CQorCisKKyAgICBDYXZlYXRzOgorICAgIAorICAgIEkgYW0gbm90IHN1cmUgaWYgMTAwQmFzZVRYIGRhdWdodGVyYm9hcmRzIChmb3IgdGhvc2UgY2FyZHMgd2hpY2gKKyAgICBzdXBwb3J0IHN1Y2ggdGhpbmdzKSB3aWxsIHdvcmsuICBJIGhhdmVuJ3QgaGFkIGFueSBzb2xpZCBldmlkZW5jZQorICAgIGVpdGhlciB3YXkuCisKKyAgICBIb3dldmVyLCBpZiBhIGNhcmQgc3VwcG9ydHMgMTAwQmFzZVR4IHdpdGhvdXQgcmVxdWlyaW5nIGFuIGFkZAorICAgIG9uIGRhdWdodGVyYm9hcmQsIGl0IHNob3VsZCB3b3JrIHdpdGggMTAwQmFzZVR4LgorCisgICAgVGhlICJOZXRlbGxpZ2VudCAxMCBULzIgUENJIFVUUC9Db2F4IiAoYjAxMikgZGV2aWNlIGlzIHVudGVzdGVkLAorICAgIGJ1dCBJIGRvIG5vdCBleHBlY3QgYW55IHByb2JsZW1zLgorICAgIAorCitJSS4gICBEcml2ZXIgT3B0aW9ucworCTEuIFlvdSBjYW4gYXBwZW5kIGRlYnVnPXggdG8gdGhlIGVuZCBvZiB0aGUgaW5zbW9kIGxpbmUgdG8gZ2V0CisgICAgICAgICAgIGRlYnVnIG1lc3NhZ2VzLCB3aGVyZSB4IGlzIGEgYml0IGZpZWxkIHdoZXJlIHRoZSBiaXRzIG1lYW4KKwkgICB0aGUgZm9sbG93aW5nOgorCSAgIAorCSAgIDB4MDEJCVR1cm4gb24gZ2VuZXJhbCBkZWJ1Z2dpbmcgbWVzc2FnZXMuCisJICAgMHgwMgkJVHVybiBvbiByZWNlaXZlIGRlYnVnZ2luZyBtZXNzYWdlcy4KKwkgICAweDA0CQlUdXJuIG9uIHRyYW5zbWl0IGRlYnVnZ2luZyBtZXNzYWdlcy4KKwkgICAweDA4CQlUdXJuIG9uIGxpc3QgZGVidWdnaW5nIG1lc3NhZ2VzLgorCisJMi4gWW91IGNhbiBhcHBlbmQgYXVpPTEgdG8gdGhlIGVuZCBvZiB0aGUgaW5zbW9kIGxpbmUgdG8gY2F1c2UKKyAgICAgICAgICAgdGhlIGFkYXB0ZXIgdG8gdXNlIHRoZSBBVUkgaW50ZXJmYWNlIGluc3RlYWQgb2YgdGhlIDEwIEJhc2UgVAorICAgICAgICAgICBpbnRlcmZhY2UuICBUaGlzIGlzIGFsc28gd2hhdCB0byBkbyBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIEJOQworCSAgIGNvbm5lY3RvciBvbiBhIFRMQU4gYmFzZWQgZGV2aWNlLiAgKFNldHRpbmcgdGhpcyBvcHRpb24gb24gYQorCSAgIGRldmljZSB0aGF0IGRvZXMgbm90IGhhdmUgYW4gQVVJL0JOQyBjb25uZWN0b3Igd2lsbCBwcm9iYWJseQorCSAgIGNhdXNlIGl0IHRvIG5vdCBmdW5jdGlvbiBjb3JyZWN0bHkuKQorCisJMy4gWW91IGNhbiBzZXQgZHVwbGV4PTEgdG8gZm9yY2UgaGFsZiBkdXBsZXgsIGFuZCBkdXBsZXg9MiB0bworCSAgIGZvcmNlIGZ1bGwgZHVwbGV4LgorCisJNC4gWW91IGNhbiBzZXQgc3BlZWQ9MTAgdG8gZm9yY2UgMTBNYnMgb3BlcmF0aW9uLCBhbmQgc3BlZWQ9MTAwCisJICAgdG8gZm9yY2UgMTAwTWJzIG9wZXJhdGlvbi4gKEknbSBub3Qgc3VyZSB3aGF0IHdpbGwgaGFwcGVuCisJICAgaWYgYSBjYXJkIHdoaWNoIG9ubHkgc3VwcG9ydHMgMTBNYnMgaXMgZm9yY2VkIGludG8gMTAwTWJzCisJICAgbW9kZS4pCisKKwk1LiBZb3UgaGF2ZSB0byB1c2Ugc3BlZWQ9WCBkdXBsZXg9WSB0b2dldGhlciBub3cuIElmIHlvdSBqdXN0CisJICAgZG8gImluc21vZCB0bGFuLm8gc3BlZWQ9MTAwIiB0aGUgZHJpdmVyIHdpbGwgZG8gQXV0by1OZWcuCisJICAgVG8gZm9yY2UgYSAxME1icHMgSGFsZi1EdXBsZXggbGluayBkbyAiaW5zbW9kIHRsYW4ubyBzcGVlZD0xMCAKKwkgICBkdXBsZXg9MSIuCisKKwk2LiBJZiB0aGUgZHJpdmVyIGlzIGJ1aWx0IGludG8gdGhlIGtlcm5lbCwgeW91IGNhbiB1c2UgdGhlIDNyZAorCSAgIGFuZCA0dGggcGFyYW1ldGVycyB0byBzZXQgYXVpIGFuZCBkZWJ1ZyByZXNwZWN0aXZlbHkuICBGb3IKKwkgICBleGFtcGxlOgorCisJICAgZXRoZXI9MCwwLDB4MSwweDcsZXRoMAorCisJICAgVGhpcyBzZXRzIGF1aSB0byAweDEgYW5kIGRlYnVnIHRvIDB4NywgYXNzdW1pbmcgZXRoMCBpcyBhCisJICAgc3VwcG9ydGVkIFRMQU4gZGV2aWNlLgorCisJICAgVGhlIGJpdHMgaW4gdGhlIHRoaXJkIGJ5dGUgYXJlIGFzc2lnbmVkIGFzIGZvbGxvd3M6CisKKwkJMHgwMSA9IGF1aQorCQkweDAyID0gdXNlIGhhbGYgZHVwbGV4CisJCTB4MDQgPSB1c2UgZnVsbCBkdXBsZXgKKwkJMHgwOCA9IHVzZSAxMEJhc2VUCisJCTB4MTAgPSB1c2UgMTAwQmFzZVR4CisKKwkgICBZb3UgYWxzbyBuZWVkIHRvIHNldCBib3RoIHNwZWVkIGFuZCBkdXBsZXggc2V0dGluZ3Mgd2hlbiBmb3JjaW5nCisJICAgc3BlZWRzIHdpdGgga2VybmVsLXBhcmFtZXRlcnMuIAorCSAgIGV0aGVyPTAsMCwweDEyLDAsZXRoMCB3aWxsIGZvcmNlIGxpbmsgdG8gMTAwTWJwcyBIYWxmLUR1cGxleC4KKworCTcuIElmIHlvdSBoYXZlIG1vcmUgdGhhbiBvbmUgdGxhbiBhZGFwdGVyIGluIHlvdXIgc3lzdGVtLCB5b3UgY2FuCisJICAgdXNlIHRoZSBhYm92ZSBvcHRpb25zIG9uIGEgcGVyIGFkYXB0ZXIgYmFzaXMuIFRvIGZvcmNlIGEgMTAwTWJpdC9IRAorCSAgIGxpbmsgd2l0aCB5b3VyIGV0aDEgYWRhcHRlciB1c2U6CisJICAgCisJICAgaW5zbW9kIHRsYW4gc3BlZWQ9MCwxMDAgZHVwbGV4PTAsMQorCisJICAgTm93IGV0aDAgd2lsbCB1c2UgYXV0by1uZWcgYW5kIGV0aDEgd2lsbCBiZSBmb3JjZWQgdG8gMTAwTWJpdC9IRC4KKwkgICBOb3RlIHRoYXQgdGhlIHRsYW4gZHJpdmVyIHN1cHBvcnRzIGEgbWF4aW11bSBvZiA4IGFkYXB0ZXJzLgorCisKK0lJSS4gIFRoaW5ncyB0byB0cnkgaWYgeW91IGhhdmUgcHJvYmxlbXMuCisJMS4gTWFrZSBzdXJlIHlvdXIgY2FyZCdzIFBDSSBpZCBpcyBhbW9uZyB0aG9zZSBsaXN0ZWQgaW4KKwkgICBzZWN0aW9uIEksIGFib3ZlLgorCTIuIE1ha2Ugc3VyZSByb3V0aW5nIGlzIGNvcnJlY3QuCisJMy4gVHJ5IGZvcmNpbmcgZGlmZmVyZW50IHNwZWVkL2R1cGxleCBzZXR0aW5ncworCisKK1RoZXJlIGlzIGFsc28gYSB0bGFuIG1haWxpbmcgbGlzdCB3aGljaCB5b3UgY2FuIGpvaW4gYnkgc2VuZGluZyAic3Vic2NyaWJlIHRsYW4iCitpbiB0aGUgYm9keSBvZiBhbiBlbWFpbCB0byBtYWpvcmRvbW9AdnVzZXIudnUudW5pb24uZWR1LgorVGhlcmUgaXMgYWxzbyBhIHRsYW4gd2Vic2l0ZSBhdCBodHRwOi8vd3d3LmNvbXBhcS5jb20KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3Rwcm94eS50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdHByb3h5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzExNDI5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3Rwcm94eS50eHQKQEAgLTAsMCArMSw4NCBAQAorVHJhbnNwYXJlbnQgcHJveHkgc3VwcG9ydAorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGZlYXR1cmUgYWRkcyBMaW51eCAyLjItbGlrZSB0cmFuc3BhcmVudCBwcm94eSBzdXBwb3J0IHRvIGN1cnJlbnQga2VybmVscy4KK1RvIHVzZSBpdCwgZW5hYmxlIHRoZSBzb2NrZXQgbWF0Y2ggYW5kIHRoZSBUUFJPWFkgdGFyZ2V0IGluIHlvdXIga2VybmVsIGNvbmZpZy4KK1lvdSB3aWxsIG5lZWQgcG9saWN5IHJvdXRpbmcgdG9vLCBzbyBiZSBzdXJlIHRvIGVuYWJsZSB0aGF0IGFzIHdlbGwuCisKKworMS4gTWFraW5nIG5vbi1sb2NhbCBzb2NrZXRzIHdvcmsKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBpZGVhIGlzIHRoYXQgeW91IGlkZW50aWZ5IHBhY2tldHMgd2l0aCBkZXN0aW5hdGlvbiBhZGRyZXNzIG1hdGNoaW5nIGEgbG9jYWwKK3NvY2tldCBvbiB5b3VyIGJveCwgc2V0IHRoZSBwYWNrZXQgbWFyayB0byBhIGNlcnRhaW4gdmFsdWUsIGFuZCB0aGVuIG1hdGNoIG9uIHRoYXQKK3ZhbHVlIHVzaW5nIHBvbGljeSByb3V0aW5nIHRvIGhhdmUgdGhvc2UgcGFja2V0cyBkZWxpdmVyZWQgbG9jYWxseToKKworIyBpcHRhYmxlcyAtdCBtYW5nbGUgLU4gRElWRVJUCisjIGlwdGFibGVzIC10IG1hbmdsZSAtQSBQUkVST1VUSU5HIC1wIHRjcCAtbSBzb2NrZXQgLWogRElWRVJUCisjIGlwdGFibGVzIC10IG1hbmdsZSAtQSBESVZFUlQgLWogTUFSSyAtLXNldC1tYXJrIDEKKyMgaXB0YWJsZXMgLXQgbWFuZ2xlIC1BIERJVkVSVCAtaiBBQ0NFUFQKKworIyBpcCBydWxlIGFkZCBmd21hcmsgMSBsb29rdXAgMTAwCisjIGlwIHJvdXRlIGFkZCBsb2NhbCAwLjAuMC4wLzAgZGV2IGxvIHRhYmxlIDEwMAorCitCZWNhdXNlIG9mIGNlcnRhaW4gcmVzdHJpY3Rpb25zIGluIHRoZSBJUHY0IHJvdXRpbmcgb3V0cHV0IGNvZGUgeW91J2xsIGhhdmUgdG8KK21vZGlmeSB5b3VyIGFwcGxpY2F0aW9uIHRvIGFsbG93IGl0IHRvIHNlbmQgZGF0YWdyYW1zIF9mcm9tXyBub24tbG9jYWwgSVAKK2FkZHJlc3Nlcy4gQWxsIHlvdSBoYXZlIHRvIGRvIGlzIGVuYWJsZSB0aGUgKFNPTF9JUCwgSVBfVFJBTlNQQVJFTlQpIHNvY2tldAorb3B0aW9uIGJlZm9yZSBjYWxsaW5nIGJpbmQ6CisKK2ZkID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCAwKTsKKy8qIC0gODwgLSovCitpbnQgdmFsdWUgPSAxOworc2V0c29ja29wdChmZCwgU09MX0lQLCBJUF9UUkFOU1BBUkVOVCwgJnZhbHVlLCBzaXplb2YodmFsdWUpKTsKKy8qIC0gODwgLSovCituYW1lLnNpbl9mYW1pbHkgPSBBRl9JTkVUOworbmFtZS5zaW5fcG9ydCA9IGh0b25zKDB4Q0FGRSk7CituYW1lLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKDB4REVBREJFRUYpOworYmluZChmZCwgJm5hbWUsIHNpemVvZihuYW1lKSk7CisKK0EgdHJpdmlhbCBwYXRjaCBmb3IgbmV0Y2F0IGlzIGF2YWlsYWJsZSBoZXJlOgoraHR0cDovL3Blb3BsZS5uZXRmaWx0ZXIub3JnL2hpZGRlbi90cHJveHkvbmV0Y2F0LWlwX3RyYW5zcGFyZW50LXN1cHBvcnQucGF0Y2gKKworCisyLiBSZWRpcmVjdGluZyB0cmFmZmljCis9PT09PT09PT09PT09PT09PT09PT09CisKK1RyYW5zcGFyZW50IHByb3h5aW5nIG9mdGVuIGludm9sdmVzICJpbnRlcmNlcHRpbmciIHRyYWZmaWMgb24gYSByb3V0ZXIuIFRoaXMgaXMKK3VzdWFsbHkgZG9uZSB3aXRoIHRoZSBpcHRhYmxlcyBSRURJUkVDVCB0YXJnZXQ7IGhvd2V2ZXIsIHRoZXJlIGFyZSBzZXJpb3VzCitsaW1pdGF0aW9ucyBvZiB0aGF0IG1ldGhvZC4gT25lIG9mIHRoZSBtYWpvciBpc3N1ZXMgaXMgdGhhdCBpdCBhY3R1YWxseQorbW9kaWZpZXMgdGhlIHBhY2tldHMgdG8gY2hhbmdlIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIC0tIHdoaWNoIG1pZ2h0IG5vdCBiZQorYWNjZXB0YWJsZSBpbiBjZXJ0YWluIHNpdHVhdGlvbnMuIChUaGluayBvZiBwcm94eWluZyBVRFAgZm9yIGV4YW1wbGU6IHlvdSB3b24ndAorYmUgYWJsZSB0byBmaW5kIG91dCB0aGUgb3JpZ2luYWwgZGVzdGluYXRpb24gYWRkcmVzcy4gRXZlbiBpbiBjYXNlIG9mIFRDUAorZ2V0dGluZyB0aGUgb3JpZ2luYWwgZGVzdGluYXRpb24gYWRkcmVzcyBpcyByYWN5LikKKworVGhlICdUUFJPWFknIHRhcmdldCBwcm92aWRlcyBzaW1pbGFyIGZ1bmN0aW9uYWxpdHkgd2l0aG91dCByZWx5aW5nIG9uIE5BVC4gU2ltcGx5CithZGQgcnVsZXMgbGlrZSB0aGlzIHRvIHRoZSBpcHRhYmxlcyBydWxlc2V0IGFib3ZlOgorCisjIGlwdGFibGVzIC10IG1hbmdsZSAtQSBQUkVST1VUSU5HIC1wIHRjcCAtLWRwb3J0IDgwIC1qIFRQUk9YWSBcCisgIC0tdHByb3h5LW1hcmsgMHgxLzB4MSAtLW9uLXBvcnQgNTAwODAKKworTm90ZSB0aGF0IGZvciB0aGlzIHRvIHdvcmsgeW91J2xsIGhhdmUgdG8gbW9kaWZ5IHRoZSBwcm94eSB0byBlbmFibGUgKFNPTF9JUCwKK0lQX1RSQU5TUEFSRU5UKSBmb3IgdGhlIGxpc3RlbmluZyBzb2NrZXQuCisKKworMy4gSXB0YWJsZXMgZXh0ZW5zaW9ucworPT09PT09PT09PT09PT09PT09PT09PQorCitUbyB1c2UgdHByb3h5IHlvdSdsbCBuZWVkIHRvIGhhdmUgdGhlICdzb2NrZXQnIGFuZCAnVFBST1hZJyBtb2R1bGVzCitjb21waWxlZCBmb3IgaXB0YWJsZXMuIEEgcGF0Y2hlZCB2ZXJzaW9uIG9mIGlwdGFibGVzIGlzIGF2YWlsYWJsZQoraGVyZTogaHR0cDovL2dpdC5iYWxhYml0Lmh1Lz9wPWJhenNpL2lwdGFibGVzLXRwcm94eS5naXQKKworCis0LiBBcHBsaWNhdGlvbiBzdXBwb3J0Cis9PT09PT09PT09PT09PT09PT09PT09CisKKzQuMS4gU3F1aWQKKy0tLS0tLS0tLS0KKworU3F1aWQgMy5IRUFEIGhhcyBzdXBwb3J0IGJ1aWx0LWluLiBUbyB1c2UgaXQsIHBhc3MKKyctLWVuYWJsZS1saW51eC1uZXRmaWx0ZXInIHRvIGNvbmZpZ3VyZSBhbmQgc2V0IHRoZSAndHByb3h5JyBvcHRpb24gb24KK3RoZSBIVFRQIGxpc3RlbmVyIHlvdSByZWRpcmVjdCB0cmFmZmljIHRvIHdpdGggdGhlIFRQUk9YWSBpcHRhYmxlcwordGFyZ2V0LgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBwbGVhc2UgY29uc3VsdCB0aGUgZm9sbG93aW5nIHBhZ2Ugb24gdGhlIFNxdWlkCit3aWtpOiBodHRwOi8vd2lraS5zcXVpZC1jYWNoZS5vcmcvRmVhdHVyZXMvVHByb3h5NApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3R1bnRhcC50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdHVudGFwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDlkNWRjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3R1bnRhcC50eHQKQEAgLTAsMCArMSwyMjcgQEAKK1VuaXZlcnNhbCBUVU4vVEFQIGRldmljZSBkcml2ZXIuCitDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBNYXhpbSBLcmFzbnlhbnNreSA8bWF4X21rQHlhaG9vLmNvbT4KKworICBMaW51eCwgU29sYXJpcyBkcml2ZXJzIAorICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBNYXhpbSBLcmFzbnlhbnNreSA8bWF4X21rQHlhaG9vLmNvbT4KKworICBGcmVlQlNEIFRBUCBkcml2ZXIgCisgIENvcHlyaWdodCAoYykgMTk5OS0yMDAwIE1ha3NpbSBZZXZtZW5raW4gPG1fZXZtZW5raW5AeWFob28uY29tPgorCisgIFJldmlzaW9uIG9mIHRoaXMgZG9jdW1lbnQgMjAwMiBieSBGbG9yaWFuIFRoaWVsIDxmbG9yaWFuLnRoaWVsQGdteC5uZXQ+CisKKzEuIERlc2NyaXB0aW9uCisgIFRVTi9UQVAgcHJvdmlkZXMgcGFja2V0IHJlY2VwdGlvbiBhbmQgdHJhbnNtaXNzaW9uIGZvciB1c2VyIHNwYWNlIHByb2dyYW1zLiAKKyAgSXQgY2FuIGJlIHNlZW4gYXMgYSBzaW1wbGUgUG9pbnQtdG8tUG9pbnQgb3IgRXRoZXJuZXQgZGV2aWNlLCB3aGljaCwKKyAgaW5zdGVhZCBvZiByZWNlaXZpbmcgcGFja2V0cyBmcm9tIHBoeXNpY2FsIG1lZGlhLCByZWNlaXZlcyB0aGVtIGZyb20gCisgIHVzZXIgc3BhY2UgcHJvZ3JhbSBhbmQgaW5zdGVhZCBvZiBzZW5kaW5nIHBhY2tldHMgdmlhIHBoeXNpY2FsIG1lZGlhIAorICB3cml0ZXMgdGhlbSB0byB0aGUgdXNlciBzcGFjZSBwcm9ncmFtLiAKKworICBJbiBvcmRlciB0byB1c2UgdGhlIGRyaXZlciBhIHByb2dyYW0gaGFzIHRvIG9wZW4gL2Rldi9uZXQvdHVuIGFuZCBpc3N1ZSBhCisgIGNvcnJlc3BvbmRpbmcgaW9jdGwoKSB0byByZWdpc3RlciBhIG5ldHdvcmsgZGV2aWNlIHdpdGggdGhlIGtlcm5lbC4gQSBuZXR3b3JrCisgIGRldmljZSB3aWxsIGFwcGVhciBhcyB0dW5YWCBvciB0YXBYWCwgZGVwZW5kaW5nIG9uIHRoZSBvcHRpb25zIGNob3Nlbi4gV2hlbgorICB0aGUgcHJvZ3JhbSBjbG9zZXMgdGhlIGZpbGUgZGVzY3JpcHRvciwgdGhlIG5ldHdvcmsgZGV2aWNlIGFuZCBhbGwKKyAgY29ycmVzcG9uZGluZyByb3V0ZXMgd2lsbCBkaXNhcHBlYXIuCisKKyAgRGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIGRldmljZSBjaG9zZW4gdGhlIHVzZXJzcGFjZSBwcm9ncmFtIGhhcyB0byByZWFkL3dyaXRlCisgIElQIHBhY2tldHMgKHdpdGggdHVuKSBvciBldGhlcm5ldCBmcmFtZXMgKHdpdGggdGFwKS4gV2hpY2ggb25lIGlzIGJlaW5nIHVzZWQKKyAgZGVwZW5kcyBvbiB0aGUgZmxhZ3MgZ2l2ZW4gd2l0aCB0aGUgaW9jdGwoKS4KKworICBUaGUgcGFja2FnZSBmcm9tIGh0dHA6Ly92dHVuLnNvdXJjZWZvcmdlLm5ldC90dW4gY29udGFpbnMgdHdvIHNpbXBsZSBleGFtcGxlcworICBmb3IgaG93IHRvIHVzZSB0dW4gYW5kIHRhcCBkZXZpY2VzLiBCb3RoIHByb2dyYW1zIHdvcmsgbGlrZSBhIGJyaWRnZSBiZXR3ZWVuCisgIHR3byBuZXR3b3JrIGludGVyZmFjZXMuCisgIGJyX3NlbGVjdC5jIC0gYnJpZGdlIGJhc2VkIG9uIHNlbGVjdCBzeXN0ZW0gY2FsbC4KKyAgYnJfc2lnaW8uYyAgLSBicmlkZ2UgYmFzZWQgb24gYXN5bmMgaW8gYW5kIFNJR0lPIHNpZ25hbC4KKyAgSG93ZXZlciwgdGhlIGJlc3QgZXhhbXBsZSBpcyBWVHVuIGh0dHA6Ly92dHVuLnNvdXJjZWZvcmdlLm5ldCA6KSkKKworMi4gQ29uZmlndXJhdGlvbiAKKyAgQ3JlYXRlIGRldmljZSBub2RlOgorICAgICBta2RpciAvZGV2L25ldCAoaWYgaXQgZG9lc24ndCBleGlzdCBhbHJlYWR5KQorICAgICBta25vZCAvZGV2L25ldC90dW4gYyAxMCAyMDAKKyAgCisgIFNldCBwZXJtaXNzaW9uczoKKyAgICAgZS5nLiBjaG1vZCAwNjY2IC9kZXYvbmV0L3R1bgorICAgICBUaGVyZSdzIG5vIGhhcm0gaW4gYWxsb3dpbmcgdGhlIGRldmljZSB0byBiZSBhY2Nlc3NpYmxlIGJ5IG5vbi1yb290IHVzZXJzLAorICAgICBzaW5jZSBDQVBfTkVUX0FETUlOIGlzIHJlcXVpcmVkIGZvciBjcmVhdGluZyBuZXR3b3JrIGRldmljZXMgb3IgZm9yIAorICAgICBjb25uZWN0aW5nIHRvIG5ldHdvcmsgZGV2aWNlcyB3aGljaCBhcmVuJ3Qgb3duZWQgYnkgdGhlIHVzZXIgaW4gcXVlc3Rpb24uCisgICAgIElmIHlvdSB3YW50IHRvIGNyZWF0ZSBwZXJzaXN0ZW50IGRldmljZXMgYW5kIGdpdmUgb3duZXJzaGlwIG9mIHRoZW0gdG8gCisgICAgIHVucHJpdmlsZWdlZCB1c2VycywgdGhlbiB5b3UgbmVlZCB0aGUgL2Rldi9uZXQvdHVuIGRldmljZSB0byBiZSB1c2FibGUgYnkKKyAgICAgdGhvc2UgdXNlcnMuCisKKyAgRHJpdmVyIG1vZHVsZSBhdXRvbG9hZGluZworCisgICAgIE1ha2Ugc3VyZSB0aGF0ICJLZXJuZWwgbW9kdWxlIGxvYWRlciIgLSBtb2R1bGUgYXV0by1sb2FkaW5nCisgICAgIHN1cHBvcnQgaXMgZW5hYmxlZCBpbiB5b3VyIGtlcm5lbC4gIFRoZSBrZXJuZWwgc2hvdWxkIGxvYWQgaXQgb24KKyAgICAgZmlyc3QgYWNjZXNzLgorICAKKyAgTWFudWFsIGxvYWRpbmcgCisgICAgIGluc2VydCB0aGUgbW9kdWxlIGJ5IGhhbmQ6CisgICAgICAgIG1vZHByb2JlIHR1bgorCisgIElmIHlvdSBkbyBpdCB0aGUgbGF0dGVyIHdheSwgeW91IGhhdmUgdG8gbG9hZCB0aGUgbW9kdWxlIGV2ZXJ5IHRpbWUgeW91CisgIG5lZWQgaXQsIGlmIHlvdSBkbyBpdCB0aGUgb3RoZXIgd2F5IGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBsb2FkZWQgd2hlbgorICAvZGV2L25ldC90dW4gaXMgYmVpbmcgb3BlbmVkLgorCiszLiBQcm9ncmFtIGludGVyZmFjZSAKKyAgMy4xIE5ldHdvcmsgZGV2aWNlIGFsbG9jYXRpb246CisKKyAgY2hhciAqZGV2IHNob3VsZCBiZSB0aGUgbmFtZSBvZiB0aGUgZGV2aWNlIHdpdGggYSBmb3JtYXQgc3RyaW5nIChlLmcuCisgICJ0dW4lZCIpLCBidXQgKGFzIGZhciBhcyBJIGNhbiBzZWUpIHRoaXMgY2FuIGJlIGFueSB2YWxpZCBuZXR3b3JrIGRldmljZSBuYW1lLgorICBOb3RlIHRoYXQgdGhlIGNoYXJhY3RlciBwb2ludGVyIGJlY29tZXMgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgcmVhbCBkZXZpY2UgbmFtZQorICAoZS5nLiAidHVuMCIpCisKKyAgI2luY2x1ZGUgPGxpbnV4L2lmLmg+CisgICNpbmNsdWRlIDxsaW51eC9pZl90dW4uaD4KKworICBpbnQgdHVuX2FsbG9jKGNoYXIgKmRldikKKyAgeworICAgICAgc3RydWN0IGlmcmVxIGlmcjsKKyAgICAgIGludCBmZCwgZXJyOworCisgICAgICBpZiggKGZkID0gb3BlbigiL2Rldi9uZXQvdHVuIiwgT19SRFdSKSkgPCAwICkKKyAgICAgICAgIHJldHVybiB0dW5fYWxsb2Nfb2xkKGRldik7CisKKyAgICAgIG1lbXNldCgmaWZyLCAwLCBzaXplb2YoaWZyKSk7CisKKyAgICAgIC8qIEZsYWdzOiBJRkZfVFVOICAgLSBUVU4gZGV2aWNlIChubyBFdGhlcm5ldCBoZWFkZXJzKSAKKyAgICAgICAqICAgICAgICBJRkZfVEFQICAgLSBUQVAgZGV2aWNlICAKKyAgICAgICAqCisgICAgICAgKiAgICAgICAgSUZGX05PX1BJIC0gRG8gbm90IHByb3ZpZGUgcGFja2V0IGluZm9ybWF0aW9uICAKKyAgICAgICAqLyAKKyAgICAgIGlmci5pZnJfZmxhZ3MgPSBJRkZfVFVOOyAKKyAgICAgIGlmKCAqZGV2ICkKKyAgICAgICAgIHN0cm5jcHkoaWZyLmlmcl9uYW1lLCBkZXYsIElGTkFNU0laKTsKKworICAgICAgaWYoIChlcnIgPSBpb2N0bChmZCwgVFVOU0VUSUZGLCAodm9pZCAqKSAmaWZyKSkgPCAwICl7CisgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICByZXR1cm4gZXJyOworICAgICAgfQorICAgICAgc3RyY3B5KGRldiwgaWZyLmlmcl9uYW1lKTsKKyAgICAgIHJldHVybiBmZDsKKyAgfSAgICAgICAgICAgICAgCisgCisgIDMuMiBGcmFtZSBmb3JtYXQ6CisgIElmIGZsYWcgSUZGX05PX1BJIGlzIG5vdCBzZXQgZWFjaCBmcmFtZSBmb3JtYXQgaXM6IAorICAgICBGbGFncyBbMiBieXRlc10KKyAgICAgUHJvdG8gWzIgYnl0ZXNdCisgICAgIFJhdyBwcm90b2NvbChJUCwgSVB2NiwgZXRjKSBmcmFtZS4KKworICAzLjMgTXVsdGlxdWV1ZSB0dW50YXAgaW50ZXJmYWNlOgorCisgIEZyb20gdmVyc2lvbiAzLjgsIExpbnV4IHN1cHBvcnRzIG11bHRpcXVldWUgdHVudGFwIHdoaWNoIGNhbiB1c2VzIG11bHRpcGxlCisgIGZpbGUgZGVzY3JpcHRvcnMgKHF1ZXVlcykgdG8gcGFyYWxsZWxpemUgcGFja2V0cyBzZW5kaW5nIG9yIHJlY2VpdmluZy4gVGhlCisgIGRldmljZSBhbGxvY2F0aW9uIGlzIHRoZSBzYW1lIGFzIGJlZm9yZSwgYW5kIGlmIHVzZXIgd2FudHMgdG8gY3JlYXRlIG11bHRpcGxlCisgIHF1ZXVlcywgVFVOU0VUSUZGIHdpdGggdGhlIHNhbWUgZGV2aWNlIG5hbWUgbXVzdCBiZSBjYWxsZWQgbWFueSB0aW1lcyB3aXRoCisgIElGRl9NVUxUSV9RVUVVRSBmbGFnLgorCisgIGNoYXIgKmRldiBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIGRldmljZSwgcXVldWVzIGlzIHRoZSBudW1iZXIgb2YgcXVldWVzIHRvCisgIGJlIGNyZWF0ZWQsIGZkcyBpcyB1c2VkIHRvIHN0b3JlIGFuZCByZXR1cm4gdGhlIGZpbGUgZGVzY3JpcHRvcnMgKHF1ZXVlcykKKyAgY3JlYXRlZCB0byB0aGUgY2FsbGVyLiBFYWNoIGZpbGUgZGVzY3JpcHRvciB3ZXJlIHNlcnZlZCBhcyB0aGUgaW50ZXJmYWNlIG9mIGEKKyAgcXVldWUgd2hpY2ggY291bGQgYmUgYWNjZXNzZWQgYnkgdXNlcnNwYWNlLgorCisgICNpbmNsdWRlIDxsaW51eC9pZi5oPgorICAjaW5jbHVkZSA8bGludXgvaWZfdHVuLmg+CisKKyAgaW50IHR1bl9hbGxvY19tcShjaGFyICpkZXYsIGludCBxdWV1ZXMsIGludCAqZmRzKQorICB7CisgICAgICBzdHJ1Y3QgaWZyZXEgaWZyOworICAgICAgaW50IGZkLCBlcnIsIGk7CisKKyAgICAgIGlmICghZGV2KQorICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgbWVtc2V0KCZpZnIsIDAsIHNpemVvZihpZnIpKTsKKyAgICAgIC8qIEZsYWdzOiBJRkZfVFVOICAgLSBUVU4gZGV2aWNlIChubyBFdGhlcm5ldCBoZWFkZXJzKQorICAgICAgICogICAgICAgIElGRl9UQVAgICAtIFRBUCBkZXZpY2UKKyAgICAgICAqCisgICAgICAgKiAgICAgICAgSUZGX05PX1BJIC0gRG8gbm90IHByb3ZpZGUgcGFja2V0IGluZm9ybWF0aW9uCisgICAgICAgKiAgICAgICAgSUZGX01VTFRJX1FVRVVFIC0gQ3JlYXRlIGEgcXVldWUgb2YgbXVsdGlxdWV1ZSBkZXZpY2UKKyAgICAgICAqLworICAgICAgaWZyLmlmcl9mbGFncyA9IElGRl9UQVAgfCBJRkZfTk9fUEkgfCBJRkZfTVVMVElfUVVFVUU7CisgICAgICBzdHJjcHkoaWZyLmlmcl9uYW1lLCBkZXYpOworCisgICAgICBmb3IgKGkgPSAwOyBpIDwgcXVldWVzOyBpKyspIHsKKyAgICAgICAgICBpZiAoKGZkID0gb3BlbigiL2Rldi9uZXQvdHVuIiwgT19SRFdSKSkgPCAwKQorICAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICAgIGVyciA9IGlvY3RsKGZkLCBUVU5TRVRJRkYsICh2b2lkICopJmlmcik7CisgICAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgICB9CisgICAgICAgICAgZmRzW2ldID0gZmQ7CisgICAgICB9CisKKyAgICAgIHJldHVybiAwOworICBlcnI6CisgICAgICBmb3IgKC0taTsgaSA+PSAwOyBpLS0pCisgICAgICAgICAgY2xvc2UoZmRzW2ldKTsKKyAgICAgIHJldHVybiBlcnI7CisgIH0KKworICBBIG5ldyBpb2N0bChUVU5TRVRRVUVVRSkgd2VyZSBpbnRyb2R1Y2VkIHRvIGVuYWJsZSBvciBkaXNhYmxlIGEgcXVldWUuIFdoZW4KKyAgY2FsbGluZyBpdCB3aXRoIElGRl9ERVRBQ0hfUVVFVUUgZmxhZywgdGhlIHF1ZXVlIHdlcmUgZGlzYWJsZWQuIEFuZCB3aGVuCisgIGNhbGxpbmcgaXQgd2l0aCBJRkZfQVRUQUNIX1FVRVVFIGZsYWcsIHRoZSBxdWV1ZSB3ZXJlIGVuYWJsZWQuIFRoZSBxdWV1ZSB3ZXJlCisgIGVuYWJsZWQgYnkgZGVmYXVsdCBhZnRlciBpdCB3YXMgY3JlYXRlZCB0aHJvdWdoIFRVTlNFVElGRi4KKworICBmZCBpcyB0aGUgZmlsZSBkZXNjcmlwdG9yIChxdWV1ZSkgdGhhdCB3ZSB3YW50IHRvIGVuYWJsZSBvciBkaXNhYmxlLCB3aGVuCisgIGVuYWJsZSBpcyB0cnVlIHdlIGVuYWJsZSBpdCwgb3RoZXJ3aXNlIHdlIGRpc2FibGUgaXQKKworICAjaW5jbHVkZSA8bGludXgvaWYuaD4KKyAgI2luY2x1ZGUgPGxpbnV4L2lmX3R1bi5oPgorCisgIGludCB0dW5fc2V0X3F1ZXVlKGludCBmZCwgaW50IGVuYWJsZSkKKyAgeworICAgICAgc3RydWN0IGlmcmVxIGlmcjsKKworICAgICAgbWVtc2V0KCZpZnIsIDAsIHNpemVvZihpZnIpKTsKKworICAgICAgaWYgKGVuYWJsZSkKKyAgICAgICAgIGlmci5pZnJfZmxhZ3MgPSBJRkZfQVRUQUNIX1FVRVVFOworICAgICAgZWxzZQorICAgICAgICAgaWZyLmlmcl9mbGFncyA9IElGRl9ERVRBQ0hfUVVFVUU7CisKKyAgICAgIHJldHVybiBpb2N0bChmZCwgVFVOU0VUUVVFVUUsICh2b2lkICopJmlmcik7CisgIH0KKworVW5pdmVyc2FsIFRVTi9UQVAgZGV2aWNlIGRyaXZlciBGcmVxdWVudGx5IEFza2VkIFF1ZXN0aW9uLgorICAgCisxLiBXaGF0IHBsYXRmb3JtcyBhcmUgc3VwcG9ydGVkIGJ5IFRVTi9UQVAgZHJpdmVyID8KK0N1cnJlbnRseSBkcml2ZXIgaGFzIGJlZW4gd3JpdHRlbiBmb3IgMyBVbmljZXM6CisgICBMaW51eCBrZXJuZWxzIDIuMi54LCAyLjQueCAKKyAgIEZyZWVCU0QgMy54LCA0LngsIDUueAorICAgU29sYXJpcyAyLjYsIDcuMCwgOC4wCisKKzIuIFdoYXQgaXMgVFVOL1RBUCBkcml2ZXIgdXNlZCBmb3I/CitBcyBtZW50aW9uZWQgYWJvdmUsIG1haW4gcHVycG9zZSBvZiBUVU4vVEFQIGRyaXZlciBpcyB0dW5uZWxpbmcuIAorSXQgaXMgdXNlZCBieSBWVHVuIChodHRwOi8vdnR1bi5zb3VyY2Vmb3JnZS5uZXQpLgorCitBbm90aGVyIGludGVyZXN0aW5nIGFwcGxpY2F0aW9uIHVzaW5nIFRVTi9UQVAgaXMgcGlwc2VjZAorKGh0dHA6Ly9wZXJzby5lbnN0LmZyL35iZXlzc2FjL3BpcHNlYy8pLCBhIHVzZXJzcGFjZSBJUFNlYworaW1wbGVtZW50YXRpb24gdGhhdCBjYW4gdXNlIGNvbXBsZXRlIGtlcm5lbCByb3V0aW5nICh1bmxpa2UgRnJlZVMvV0FOKS4KKworMy4gSG93IGRvZXMgVmlydHVhbCBuZXR3b3JrIGRldmljZSBhY3R1YWxseSB3b3JrID8gCitWaXJ0dWFsIG5ldHdvcmsgZGV2aWNlIGNhbiBiZSB2aWV3ZWQgYXMgYSBzaW1wbGUgUG9pbnQtdG8tUG9pbnQgb3IKK0V0aGVybmV0IGRldmljZSwgd2hpY2ggaW5zdGVhZCBvZiByZWNlaXZpbmcgcGFja2V0cyBmcm9tIGEgcGh5c2ljYWwgCittZWRpYSwgcmVjZWl2ZXMgdGhlbSBmcm9tIHVzZXIgc3BhY2UgcHJvZ3JhbSBhbmQgaW5zdGVhZCBvZiBzZW5kaW5nIAorcGFja2V0cyB2aWEgcGh5c2ljYWwgbWVkaWEgc2VuZHMgdGhlbSB0byB0aGUgdXNlciBzcGFjZSBwcm9ncmFtLiAKKworTGV0J3Mgc2F5IHRoYXQgeW91IGNvbmZpZ3VyZWQgSVBYIG9uIHRoZSB0YXAwLCB0aGVuIHdoZW5ldmVyIAordGhlIGtlcm5lbCBzZW5kcyBhbiBJUFggcGFja2V0IHRvIHRhcDAsIGl0IGlzIHBhc3NlZCB0byB0aGUgYXBwbGljYXRpb24KKyhWVHVuIGZvciBleGFtcGxlKS4gVGhlIGFwcGxpY2F0aW9uIGVuY3J5cHRzLCBjb21wcmVzc2VzIGFuZCBzZW5kcyBpdCB0byAKK3RoZSBvdGhlciBzaWRlIG92ZXIgVENQIG9yIFVEUC4gVGhlIGFwcGxpY2F0aW9uIG9uIHRoZSBvdGhlciBzaWRlIGRlY29tcHJlc3NlcworYW5kIGRlY3J5cHRzIHRoZSBkYXRhIHJlY2VpdmVkIGFuZCB3cml0ZXMgdGhlIHBhY2tldCB0byB0aGUgVEFQIGRldmljZSwgCit0aGUga2VybmVsIGhhbmRsZXMgdGhlIHBhY2tldCBsaWtlIGl0IGNhbWUgZnJvbSByZWFsIHBoeXNpY2FsIGRldmljZS4KKworNC4gV2hhdCBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIFRVTiBkcml2ZXIgYW5kIFRBUCBkcml2ZXI/CitUVU4gd29ya3Mgd2l0aCBJUCBmcmFtZXMuIFRBUCB3b3JrcyB3aXRoIEV0aGVybmV0IGZyYW1lcy4KKworVGhpcyBtZWFucyB0aGF0IHlvdSBoYXZlIHRvIHJlYWQvd3JpdGUgSVAgcGFja2V0cyB3aGVuIHlvdSBhcmUgdXNpbmcgdHVuIGFuZAorZXRoZXJuZXQgZnJhbWVzIHdoZW4gdXNpbmcgdGFwLgorCis1LiBXaGF0IGlzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gQlBGIGFuZCBUVU4vVEFQIGRyaXZlcj8KK0JQRiBpcyBhbiBhZHZhbmNlZCBwYWNrZXQgZmlsdGVyLiBJdCBjYW4gYmUgYXR0YWNoZWQgdG8gZXhpc3RpbmcKK25ldHdvcmsgaW50ZXJmYWNlLiBJdCBkb2VzIG5vdCBwcm92aWRlIGEgdmlydHVhbCBuZXR3b3JrIGludGVyZmFjZS4KK0EgVFVOL1RBUCBkcml2ZXIgZG9lcyBwcm92aWRlIGEgdmlydHVhbCBuZXR3b3JrIGludGVyZmFjZSBhbmQgaXQgaXMgcG9zc2libGUKK3RvIGF0dGFjaCBCUEYgdG8gdGhpcyBpbnRlcmZhY2UuCisKKzYuIERvZXMgVEFQIGRyaXZlciBzdXBwb3J0IGtlcm5lbCBFdGhlcm5ldCBicmlkZ2luZz8KK1llcy4gTGludXggYW5kIEZyZWVCU0QgZHJpdmVycyBzdXBwb3J0IEV0aGVybmV0IGJyaWRnaW5nLiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy91ZHBsaXRlLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy91ZHBsaXRlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2E3MjY4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3VkcGxpdGUudHh0CkBAIC0wLDAgKzEsMjc4IEBACisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICAgICAgICAgICAgICAgICAgIFRoZSBVRFAtTGl0ZSBwcm90b2NvbCAoUkZDIDM4MjgpCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKKyAgVURQLUxpdGUgaXMgYSBTdGFuZGFyZHMtVHJhY2sgSUVURiB0cmFuc3BvcnQgcHJvdG9jb2wgd2hvc2UgY2hhcmFjdGVyaXN0aWMKKyAgaXMgYSB2YXJpYWJsZS1sZW5ndGggY2hlY2tzdW0uIFRoaXMgaGFzIGFkdmFudGFnZXMgZm9yIHRyYW5zcG9ydCBvZiBtdWx0aW1lZGlhCisgICh2aWRlbywgVm9JUCkgb3ZlciB3aXJlbGVzcyBuZXR3b3JrcywgYXMgcGFydGx5IGRhbWFnZWQgcGFja2V0cyBjYW4gc3RpbGwgYmUKKyAgZmVkIGludG8gdGhlIGNvZGVjIGluc3RlYWQgb2YgYmVpbmcgZGlzY2FyZGVkIGR1ZSB0byBhIGZhaWxlZCBjaGVja3N1bSB0ZXN0LgorCisgIFRoaXMgZmlsZSBicmllZmx5IGRlc2NyaWJlcyB0aGUgZXhpc3Rpbmcga2VybmVsIHN1cHBvcnQgYW5kIHRoZSBzb2NrZXQgQVBJLgorICBGb3IgaW4tZGVwdGggaW5mb3JtYXRpb24sIHlvdSBjYW4gY29uc3VsdDoKKworICAgbyBUaGUgVURQLUxpdGUgSG9tZXBhZ2U6CisJaHR0cDovL3dlYi5hcmNoaXZlLm9yZy93ZWIvKi9odHRwOi8vd3d3LmVyZy5hYmRuLmFjLnVrL3VzZXJzL2dlcnJpdC91ZHAtbGl0ZS8gCisgICAgICAgRnJvbSBoZXJlIHlvdSBjYW4gYWxzbyBkb3dubG9hZCBzb21lIGV4YW1wbGUgYXBwbGljYXRpb24gc291cmNlIGNvZGUuCisKKyAgIG8gVGhlIFVEUC1MaXRlIEhPV1RPIG9uCisgICAgICAgaHR0cDovL3dlYi5hcmNoaXZlLm9yZy93ZWIvKi9odHRwOi8vd3d3LmVyZy5hYmRuLmFjLnVrL3VzZXJzL2dlcnJpdC91ZHAtbGl0ZS8KKwlmaWxlcy9VRFAtTGl0ZS1IT1dUTy50eHQKKworICAgbyBUaGUgV2lyZXNoYXJrIFVEUC1MaXRlIFdpS2kgKHdpdGggY2FwdHVyZSBmaWxlcyk6CisgICAgICAgaHR0cHM6Ly93aWtpLndpcmVzaGFyay5vcmcvTGlnaHR3ZWlnaHRfVXNlcl9EYXRhZ3JhbV9Qcm90b2NvbAorCisgICBvIFRoZSBQcm90b2NvbCBTcGVjLCBSRkMgMzgyOCwgaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMzgyOC50eHQKKworCisgIEkpIEFQUExJQ0FUSU9OUworCisgIFNldmVyYWwgYXBwbGljYXRpb25zIGhhdmUgYmVlbiBwb3J0ZWQgc3VjY2Vzc2Z1bGx5IHRvIFVEUC1MaXRlLiBFdGhlcmVhbAorICAobm93IGNhbGxlZCB3aXJlc2hhcmspIGhhcyBVRFAtTGl0ZXY0L3Y2IHN1cHBvcnQgYnkgZGVmYXVsdC4gCisgIFBvcnRpbmcgYXBwbGljYXRpb25zIHRvIFVEUC1MaXRlIGlzIHN0cmFpZ2h0Zm9yd2FyZDogb25seSBzb2NrZXQgbGV2ZWwgYW5kCisgIElQUFJPVE8gbmVlZCB0byBiZSBjaGFuZ2VkOyBzZW5kZXJzIGFkZGl0aW9uYWxseSBzZXQgdGhlIGNoZWNrc3VtIGNvdmVyYWdlCisgIGxlbmd0aCAoZGVmYXVsdCA9IGhlYWRlciBsZW5ndGggPSA4KS4gRGV0YWlscyBhcmUgaW4gdGhlIG5leHQgc2VjdGlvbi4KKworCisgIElJKSBQUk9HUkFNTUlORyBBUEkKKworICBVRFAtTGl0ZSBwcm92aWRlcyBhIGNvbm5lY3Rpb25sZXNzLCB1bnJlbGlhYmxlIGRhdGFncmFtIHNlcnZpY2UgYW5kIGhlbmNlCisgIHVzZXMgdGhlIHNhbWUgc29ja2V0IHR5cGUgYXMgVURQLiBJbiBmYWN0LCBwb3J0aW5nIGZyb20gVURQIHRvIFVEUC1MaXRlIGlzCisgIHZlcnkgZWFzeTogc2ltcGx5IGFkZCBgSVBQUk9UT19VRFBMSVRFJyBhcyB0aGUgbGFzdCBhcmd1bWVudCBvZiB0aGUgc29ja2V0KDIpCisgIGNhbGwgc28gdGhhdCB0aGUgc3RhdGVtZW50IGxvb2tzIGxpa2U6CisKKyAgICAgIHMgPSBzb2NrZXQoUEZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFBMSVRFKTsKKworICAgICAgICAgICAgICAgICAgICAgIG9yLCByZXNwZWN0aXZlbHksCisKKyAgICAgIHMgPSBzb2NrZXQoUEZfSU5FVDYsIFNPQ0tfREdSQU0sIElQUFJPVE9fVURQTElURSk7CisKKyAgV2l0aCBqdXN0IHRoZSBhYm92ZSBjaGFuZ2UgeW91IGFyZSBhYmxlIHRvIHJ1biBVRFAtTGl0ZSBzZXJ2aWNlcyBvciBjb25uZWN0CisgIHRvIFVEUC1MaXRlIHNlcnZlcnMuIFRoZSBrZXJuZWwgd2lsbCBhc3N1bWUgdGhhdCB5b3UgYXJlIG5vdCBpbnRlcmVzdGVkIGluCisgIHVzaW5nIHBhcnRpYWwgY2hlY2tzdW0gY292ZXJhZ2UgYW5kIHNvIGVtdWxhdGUgVURQIG1vZGUgKGZ1bGwgY292ZXJhZ2UpLgorCisgIFRvIG1ha2UgdXNlIG9mIHRoZSBwYXJ0aWFsIGNoZWNrc3VtIGNvdmVyYWdlIGZhY2lsaXRpZXMgcmVxdWlyZXMgc2V0dGluZyBhCisgIHNpbmdsZSBzb2NrZXQgb3B0aW9uLCB3aGljaCB0YWtlcyBhbiBpbnRlZ2VyIHNwZWNpZnlpbmcgdGhlIGNvdmVyYWdlIGxlbmd0aDoKKworICAgICogU2VuZGVyIGNoZWNrc3VtIGNvdmVyYWdlOiBVRFBMSVRFX1NFTkRfQ1NDT1YKKworICAgICAgRm9yIGV4YW1wbGUsCisKKyAgICAgICAgaW50IHZhbCA9IDIwOworICAgICAgICBzZXRzb2Nrb3B0KHMsIFNPTF9VRFBMSVRFLCBVRFBMSVRFX1NFTkRfQ1NDT1YsICZ2YWwsIHNpemVvZihpbnQpKTsKKworICAgICAgc2V0cyB0aGUgY2hlY2tzdW0gY292ZXJhZ2UgbGVuZ3RoIHRvIDIwIGJ5dGVzICgxMmIgZGF0YSArIDhiIGhlYWRlcikuCisgICAgICBPZiBlYWNoIHBhY2tldCBvbmx5IHRoZSBmaXJzdCAyMCBieXRlcyAocGx1cyB0aGUgcHNldWRvLWhlYWRlcikgd2lsbCBiZQorICAgICAgY2hlY2tzdW1tZWQuIFRoaXMgaXMgdXNlZnVsIGZvciBSVFAgYXBwbGljYXRpb25zIHdoaWNoIGhhdmUgYSAxMi1ieXRlCisgICAgICBiYXNlIGhlYWRlci4KKworCisgICAgKiBSZWNlaXZlciBjaGVja3N1bSBjb3ZlcmFnZTogVURQTElURV9SRUNWX0NTQ09WCisKKyAgICAgIFRoaXMgb3B0aW9uIGlzIHRoZSByZWNlaXZlci1zaWRlIGFuYWxvZ3VlLiBJdCBpcyB0cnVseSBvcHRpb25hbCwgaS5lLiBub3QKKyAgICAgIHJlcXVpcmVkIHRvIGVuYWJsZSB0cmFmZmljIHdpdGggcGFydGlhbCBjaGVja3N1bSBjb3ZlcmFnZS4gSXRzIGZ1bmN0aW9uIGlzCisgICAgICB0aGF0IG9mIGEgdHJhZmZpYyBmaWx0ZXI6IHdoZW4gZW5hYmxlZCwgaXQgaW5zdHJ1Y3RzIHRoZSBrZXJuZWwgdG8gZHJvcAorICAgICAgYWxsIHBhY2tldHMgd2hpY2ggaGF2ZSBhIGNvdmVyYWdlIF9sZXNzXyB0aGFuIHRoaXMgdmFsdWUuIEZvciBleGFtcGxlLCBpZgorICAgICAgUlRQIGFuZCBVRFAgaGVhZGVycyBhcmUgdG8gYmUgcHJvdGVjdGVkLCBhIHJlY2VpdmVyIGNhbiBlbmZvcmNlIHRoYXQgb25seQorICAgICAgcGFja2V0cyB3aXRoIGEgbWluaW11bSBjb3ZlcmFnZSBvZiAyMCBhcmUgYWRtaXR0ZWQ6CisKKyAgICAgICAgaW50IG1pbiA9IDIwOworICAgICAgICBzZXRzb2Nrb3B0KHMsIFNPTF9VRFBMSVRFLCBVRFBMSVRFX1JFQ1ZfQ1NDT1YsICZtaW4sIHNpemVvZihpbnQpKTsKKworICBUaGUgY2FsbHMgdG8gZ2V0c29ja29wdCgyKSBhcmUgYW5hbG9nb3VzLiBCZWluZyBhbiBleHRlbnNpb24gYW5kIG5vdCBhIHN0YW5kLQorICBhbG9uZSBwcm90b2NvbCwgYWxsIHNvY2tldCBvcHRpb25zIGtub3duIGZyb20gVURQIGNhbiBiZSB1c2VkIGluIGV4YWN0bHkgdGhlCisgIHNhbWUgbWFubmVyIGFzIGJlZm9yZSwgZS5nLiBVRFBfQ09SSyBvciBVRFBfRU5DQVAuCisKKyAgQSBkZXRhaWxlZCBkaXNjdXNzaW9uIG9mIFVEUC1MaXRlIGNoZWNrc3VtIGNvdmVyYWdlIG9wdGlvbnMgaXMgaW4gc2VjdGlvbiBJVi4KKworCisgIElJSSkgSEVBREVSIEZJTEVTCisKKyAgVGhlIHNvY2tldCBBUEkgcmVxdWlyZXMgc3VwcG9ydCB0aHJvdWdoIGhlYWRlciBmaWxlcyBpbiAvdXNyL2luY2x1ZGU6CisKKyAgICAqIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKKyAgICAgICAgdG8gZGVmaW5lIElQUFJPVE9fVURQTElURQorCisgICAgKiAvdXNyL2luY2x1ZGUvbmV0aW5ldC91ZHBsaXRlLmgKKyAgICAgICAgZm9yIFVEUC1MaXRlIGhlYWRlciBmaWVsZHMgYW5kIHByb3RvY29sIGNvbnN0YW50cworCisgIEZvciB0ZXN0aW5nIHB1cnBvc2VzLCB0aGUgZm9sbG93aW5nIGNhbiBzZXJ2ZSBhcyBhIGBtaW5pJyBoZWFkZXIgZmlsZToKKworICAgICNkZWZpbmUgSVBQUk9UT19VRFBMSVRFICAgICAgIDEzNgorICAgICNkZWZpbmUgU09MX1VEUExJVEUgICAgICAgICAgIDEzNgorICAgICNkZWZpbmUgVURQTElURV9TRU5EX0NTQ09WICAgICAxMAorICAgICNkZWZpbmUgVURQTElURV9SRUNWX0NTQ09WICAgICAxMQorCisgIFJlYWR5LW1hZGUgaGVhZGVyIGZpbGVzIGZvciB2YXJpb3VzIGRpc3Ryb3MgYXJlIGluIHRoZSBVRFAtTGl0ZSB0YXJiYWxsLgorCisKKyAgSVYpIEtFUk5FTCBCRUhBVklPVVIgV0lUSCBSRUdBUkQgVE8gVEhFIFZBUklPVVMgU09DS0VUIE9QVElPTlMKKworICBUbyBlbmFibGUgZGVidWdnaW5nIG1lc3NhZ2VzLCB0aGUgbG9nIGxldmVsIG5lZWQgdG8gYmUgc2V0IHRvIDgsIGFzIG1vc3QKKyAgbWVzc2FnZXMgdXNlIHRoZSBLRVJOX0RFQlVHIGxldmVsICg3KS4KKworICAxKSBTZW5kZXIgU29ja2V0IE9wdGlvbnMKKworICBJZiB0aGUgc2VuZGVyIHNwZWNpZmllcyBhIHZhbHVlIG9mIDAgYXMgY292ZXJhZ2UgbGVuZ3RoLCB0aGUgbW9kdWxlCisgIGFzc3VtZXMgZnVsbCBjb3ZlcmFnZSwgdHJhbnNtaXRzIGEgcGFja2V0IHdpdGggY292ZXJhZ2UgbGVuZ3RoIG9mIDAKKyAgYW5kIGFjY29yZGluZyBjaGVja3N1bS4gIElmIHRoZSBzZW5kZXIgc3BlY2lmaWVzIGEgY292ZXJhZ2UgPCA4IGFuZAorICBkaWZmZXJlbnQgZnJvbSAwLCB0aGUga2VybmVsIGFzc3VtZXMgOCBhcyBkZWZhdWx0IHZhbHVlLiAgRmluYWxseSwKKyAgaWYgdGhlIHNwZWNpZmllZCBjb3ZlcmFnZSBsZW5ndGggZXhjZWVkcyB0aGUgcGFja2V0IGxlbmd0aCwgdGhlIHBhY2tldAorICBsZW5ndGggaXMgdXNlZCBpbnN0ZWFkIGFzIGNvdmVyYWdlIGxlbmd0aC4KKworICAyKSBSZWNlaXZlciBTb2NrZXQgT3B0aW9ucworCisgIFRoZSByZWNlaXZlciBzcGVjaWZpZXMgdGhlIG1pbmltdW0gdmFsdWUgb2YgdGhlIGNvdmVyYWdlIGxlbmd0aCBpdAorICBpcyB3aWxsaW5nIHRvIGFjY2VwdC4gIEEgdmFsdWUgb2YgMCBoZXJlIGluZGljYXRlcyB0aGF0IHRoZSByZWNlaXZlcgorICBhbHdheXMgd2FudHMgdGhlIHdob2xlIG9mIHRoZSBwYWNrZXQgY292ZXJlZC4gSW4gdGhpcyBjYXNlLCBhbGwKKyAgcGFydGlhbGx5IGNvdmVyZWQgcGFja2V0cyBhcmUgZHJvcHBlZCBhbmQgYW4gZXJyb3IgaXMgbG9nZ2VkLgorCisgIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBzcGVjaWZ5IGlsbGVnYWwgdmFsdWVzICg8MCBhbmQgPDgpOyBpbiB0aGVzZQorICBjYXNlcyB0aGUgZGVmYXVsdCBvZiA4IGlzIGFzc3VtZWQuCisKKyAgQWxsIHBhY2tldHMgYXJyaXZpbmcgd2l0aCBhIGNvdmVyYWdlIHZhbHVlIGxlc3MgdGhhbiB0aGUgc3BlY2lmaWVkCisgIHRocmVzaG9sZCBhcmUgZGlzY2FyZGVkLCB0aGVzZSBldmVudHMgYXJlIGFsc28gbG9nZ2VkLgorCisgIDMpIERpc2FibGluZyB0aGUgQ2hlY2tzdW0gQ29tcHV0YXRpb24KKworICBPbiBib3RoIHNlbmRlciBhbmQgcmVjZWl2ZXIsIGNoZWNrc3VtbWluZyB3aWxsIGFsd2F5cyBiZSBwZXJmb3JtZWQKKyAgYW5kIGNhbm5vdCBiZSBkaXNhYmxlZCB1c2luZyBTT19OT19DSEVDSy4gVGh1cworCisgICAgICAgIHNldHNvY2tvcHQoc29ja2ZkLCBTT0xfU09DS0VULCBTT19OT19DSEVDSywgIC4uLiApOworCisgIHdpbGwgYWx3YXlzIHdpbGwgYmUgaWdub3JlZCwgd2hpbGUgdGhlIHZhbHVlIG9mCisKKyAgICAgICAgZ2V0c29ja29wdChzb2NrZmQsIFNPTF9TT0NLRVQsIFNPX05PX0NIRUNLLCAmdmFsdWUsIC4uLik7CisKKyAgaXMgbWVhbmluZ2xlc3MgKGFzIGluIFRDUCkuIFBhY2tldHMgd2l0aCBhIHplcm8gY2hlY2tzdW0gZmllbGQgYXJlCisgIGlsbGVnYWwgKGNmLiBSRkMgMzgyOCwgc2VjLiAzLjEpIGFuZCB3aWxsIGJlIHNpbGVudGx5IGRpc2NhcmRlZC4KKworICA0KSBGcmFnbWVudGF0aW9uCisKKyAgVGhlIGNoZWNrc3VtIGNvbXB1dGF0aW9uIHJlc3BlY3RzIGJvdGggYnVmZmVyc2l6ZSBhbmQgTVRVLiBUaGUgc2l6ZQorICBvZiBVRFAtTGl0ZSBwYWNrZXRzIGlzIGRldGVybWluZWQgYnkgdGhlIHNpemUgb2YgdGhlIHNlbmQgYnVmZmVyLiBUaGUKKyAgbWluaW11bSBzaXplIG9mIHRoZSBzZW5kIGJ1ZmZlciBpcyAyMDQ4IChkZWZpbmVkIGFzIFNPQ0tfTUlOX1NOREJVRgorICBpbiBpbmNsdWRlL25ldC9zb2NrLmgpLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBjb25maWd1cmFibGUgYXMKKyAgbmV0LmNvcmUud21lbV9kZWZhdWx0IG9yIHZpYSBzZXR0aW5nIHRoZSBTT19TTkRCVUYgc29ja2V0KDcpCisgIG9wdGlvbi4gVGhlIG1heGltdW0gdXBwZXIgYm91bmQgZm9yIHRoZSBzZW5kIGJ1ZmZlciBpcyBkZXRlcm1pbmVkCisgIGJ5IG5ldC5jb3JlLndtZW1fbWF4LgorCisgIEdpdmVuIGEgcGF5bG9hZCBzaXplIGxhcmdlciB0aGFuIHRoZSBzZW5kIGJ1ZmZlciBzaXplLCBVRFAtTGl0ZSB3aWxsCisgIHNwbGl0IHRoZSBwYXlsb2FkIGludG8gc2V2ZXJhbCBpbmRpdmlkdWFsIHBhY2tldHMsIGZpbGxpbmcgdXAgdGhlCisgIHNlbmQgYnVmZmVyIHNpemUgaW4gZWFjaCBjYXNlLgorCisgIFRoZSBwcmVjaXNlIHZhbHVlIGFsc28gZGVwZW5kcyBvbiB0aGUgaW50ZXJmYWNlIE1UVS4gVGhlIGludGVyZmFjZSBNVFUsCisgIGluIHR1cm4sIG1heSB0cmlnZ2VyIElQIGZyYWdtZW50YXRpb24uIEluIHRoaXMgY2FzZSwgdGhlIGdlbmVyYXRlZAorICBVRFAtTGl0ZSBwYWNrZXQgaXMgc3BsaXQgaW50byBzZXZlcmFsIElQIHBhY2tldHMsIG9mIHdoaWNoIG9ubHkgdGhlCisgIGZpcnN0IG9uZSBjb250YWlucyB0aGUgTDQgaGVhZGVyLgorCisgIFRoZSBzZW5kIGJ1ZmZlciBzaXplIGhhcyBpbXBsaWNhdGlvbnMgb24gdGhlIGNoZWNrc3VtIGNvdmVyYWdlIGxlbmd0aC4KKyAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlOgorCisgIFBheWxvYWQ6IDE1MzYgYnl0ZXMgICAgICAgICAgU2VuZCBCdWZmZXI6ICAgICAxMDI0IGJ5dGVzCisgIE1UVTogICAgIDE1MDAgYnl0ZXMgICAgICAgICAgQ292ZXJhZ2UgTGVuZ3RoOiAgODU2IGJ5dGVzCisKKyAgVURQLUxpdGUgd2lsbCBzaGlwIHRoZSAxNTM2IGJ5dGVzIGluIHR3byBzZXBhcmF0ZSBwYWNrZXRzOgorCisgIFBhY2tldCAxOiAxMDI0IHBheWxvYWQgKyA4IGJ5dGUgaGVhZGVyICsgMjAgYnl0ZSBJUCBoZWFkZXIgPSAxMDUyIGJ5dGVzCisgIFBhY2tldCAyOiAgNTEyIHBheWxvYWQgKyA4IGJ5dGUgaGVhZGVyICsgMjAgYnl0ZSBJUCBoZWFkZXIgPSAgNTQwIGJ5dGVzCisKKyAgVGhlIGNvdmVyYWdlIHBhY2tldCBjb3ZlcnMgdGhlIFVEUC1MaXRlIGhlYWRlciBhbmQgODQ4IGJ5dGVzIG9mIHRoZQorICBwYXlsb2FkIGluIHRoZSBmaXJzdCBwYWNrZXQsIHRoZSBzZWNvbmQgcGFja2V0IGlzIGZ1bGx5IGNvdmVyZWQuIE5vdGUKKyAgdGhhdCBmb3IgdGhlIHNlY29uZCBwYWNrZXQsIHRoZSBjb3ZlcmFnZSBsZW5ndGggZXhjZWVkcyB0aGUgcGFja2V0CisgIGxlbmd0aC4gVGhlIGtlcm5lbCBhbHdheXMgcmUtYWRqdXN0cyB0aGUgY292ZXJhZ2UgbGVuZ3RoIHRvIHRoZSBwYWNrZXQKKyAgbGVuZ3RoIGluIHN1Y2ggY2FzZXMuCisKKyAgQXMgYW4gZXhhbXBsZSBvZiB3aGF0IGhhcHBlbnMgd2hlbiBvbmUgVURQLUxpdGUgcGFja2V0IGlzIHNwbGl0IGludG8KKyAgc2V2ZXJhbCB0aW55IGZyYWdtZW50cywgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlLgorCisgIFBheWxvYWQ6IDEwMjQgYnl0ZXMgICAgICAgICAgICBTZW5kIGJ1ZmZlciBzaXplOiAxMDI0IGJ5dGVzCisgIE1UVTogICAgICAzMDAgYnl0ZXMgICAgICAgICAgICBDb3ZlcmFnZSBsZW5ndGg6ICAgNTc1IGJ5dGVzCisKKyAgKy0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rCisgIHw4fCAgICAyNzIgICAgfCAgICAgIDI4MCAgICAgfCAgICAgMjgwICAgICAgfCAgICAgMjgwICAgICAgfAorICArLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgIDI4MCAgICAgICAgICAgIDU2MCAgICAgICAgICAgIDg0MCAgICAgICAgICAgMTAzMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorICAqKioqKmNoZWNrc3VtIGNvdmVyYWdlKioqKioqKioqKioqKgorCisgIFRoZSBVRFAtTGl0ZSBtb2R1bGUgZ2VuZXJhdGVzIG9uZSAxMDMyIGJ5dGUgcGFja2V0ICgxMDI0ICsgOCBieXRlCisgIGhlYWRlcikuIEFjY29yZGluZyB0byB0aGUgaW50ZXJmYWNlIE1UVSwgdGhlc2UgYXJlIHNwbGl0IGludG8gNCBJUAorICBwYWNrZXRzICgyODAgYnl0ZSBJUCBwYXlsb2FkICsgMjAgYnl0ZSBJUCBoZWFkZXIpLiBUaGUga2VybmVsIG1vZHVsZQorICBzdW1zIHRoZSBjb250ZW50cyBvZiB0aGUgZW50aXJlIGZpcnN0IHR3byBwYWNrZXRzLCBwbHVzIDE1IGJ5dGVzIG9mCisgIHRoZSBsYXN0IHBhY2tldCBiZWZvcmUgcmVsZWFzaW5nIHRoZSBmcmFnbWVudHMgdG8gdGhlIElQIG1vZHVsZS4KKworICBUbyBzZWUgdGhlIGFuYWxvZ291cyBjYXNlIGZvciBJUHY2IGZyYWdtZW50YXRpb24sIGNvbnNpZGVyIGEgbGluaworICBNVFUgb2YgMTI4MCBieXRlcyBhbmQgYSB3cml0ZSBidWZmZXIgb2YgMzM1NiBieXRlcy4gSWYgdGhlIGNoZWNrc3VtCisgIGNvdmVyYWdlIGlzIGxlc3MgdGhhbiAxMjMyIGJ5dGVzIChNVFUgbWludXMgSVB2Ni9mcmFnbWVudCBoZWFkZXIKKyAgbGVuZ3RocyksIG9ubHkgdGhlIGZpcnN0IGZyYWdtZW50IG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQuIFdoZW4gdXNpbmcKKyAgbGFyZ2VyIGNoZWNrc3VtIGNvdmVyYWdlIGxlbmd0aHMsIGVhY2ggZWxpZ2libGUgZnJhZ21lbnQgbmVlZHMgdG8gYmUKKyAgY2hlY2tzdW1tZWQuIFN1cHBvc2Ugd2UgaGF2ZSBhIGNoZWNrc3VtIGNvdmVyYWdlIG9mIDMwNjIuIFRoZSBidWZmZXIKKyAgb2YgMzM1NiBieXRlcyB3aWxsIGJlIHNwbGl0IGludG8gdGhlIGZvbGxvd2luZyBmcmFnbWVudHM6CisKKyAgICBGcmFnbWVudCAxOiAxMjgwIGJ5dGVzIGNhcnJ5aW5nICAxMjMyIGJ5dGVzIG9mIFVEUC1MaXRlIGRhdGEKKyAgICBGcmFnbWVudCAyOiAxMjgwIGJ5dGVzIGNhcnJ5aW5nICAxMjMyIGJ5dGVzIG9mIFVEUC1MaXRlIGRhdGEKKyAgICBGcmFnbWVudCAzOiAgOTQ4IGJ5dGVzIGNhcnJ5aW5nICAgOTAwIGJ5dGVzIG9mIFVEUC1MaXRlIGRhdGEKKworICBUaGUgZmlyc3QgdHdvIGZyYWdtZW50cyBoYXZlIHRvIGJlIGNoZWNrc3VtbWVkIGluIGZ1bGwsIG9mIHRoZSBsYXN0CisgIGZyYWdtZW50IG9ubHkgNTk4ICg9IDMwNjIgLSAyKjEyMzIpIGJ5dGVzIGFyZSBjaGVja3N1bW1lZC4KKworICBXaGlsZSBpdCBpcyBpbXBvcnRhbnQgdGhhdCBzdWNoIGNhc2VzIGFyZSBkZWFsdCB3aXRoIGNvcnJlY3RseSwgdGhleQorICBhcmUgKGFubm95aW5nbHkpIHJhcmU6IFVEUC1MaXRlIGlzIGRlc2lnbmVkIGZvciBvcHRpbWlzaW5nIG11bHRpbWVkaWEKKyAgcGVyZm9ybWFuY2Ugb3ZlciB3aXJlbGVzcyAob3IgZ2VuZXJhbGx5IG5vaXN5KSBsaW5rcyBhbmQgdGh1cyBzbWFsbGVyCisgIGNvdmVyYWdlIGxlbmd0aHMgYXJlIGxpa2VseSB0byBiZSBleHBlY3RlZC4KKworCisgIFYpIFVEUC1MSVRFIFJVTlRJTUUgU1RBVElTVElDUyBBTkQgVEhFSVIgTUVBTklORworCisgIEV4Y2VwdGlvbmFsIGFuZCBlcnJvciBjb25kaXRpb25zIGFyZSBsb2dnZWQgdG8gc3lzbG9nIGF0IHRoZSBLRVJOX0RFQlVHCisgIGxldmVsLiAgTGl2ZSBzdGF0aXN0aWNzIGFib3V0IFVEUC1MaXRlIGFyZSBhdmFpbGFibGUgaW4gL3Byb2MvbmV0L3NubXAKKyAgYW5kIGNhbiAod2l0aCBuZXdlciB2ZXJzaW9ucyBvZiBuZXRzdGF0KSBiZSB2aWV3ZWQgdXNpbmcKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHN0YXQgLXN2dQorCisgIFRoaXMgZGlzcGxheXMgVURQLUxpdGUgc3RhdGlzdGljcyB2YXJpYWJsZXMsIHdob3NlIG1lYW5pbmcgaXMgYXMgZm9sbG93cy4KKworICAgSW5EYXRhZ3JhbXM6ICAgICBUaGUgdG90YWwgbnVtYmVyIG9mIGRhdGFncmFtcyBkZWxpdmVyZWQgdG8gdXNlcnMuCisKKyAgIE5vUG9ydHM6ICAgICAgICAgTnVtYmVyIG9mIHBhY2tldHMgcmVjZWl2ZWQgdG8gYW4gdW5rbm93biBwb3J0LgorICAgICAgICAgICAgICAgICAgICBUaGVzZSBjYXNlcyBhcmUgY291bnRlZCBzZXBhcmF0ZWx5IChub3QgYXMgSW5FcnJvcnMpLgorCisgICBJbkVycm9yczogICAgICAgIE51bWJlciBvZiBlcnJvbmVvdXMgVURQLUxpdGUgcGFja2V0cy4gRXJyb3JzIGluY2x1ZGU6CisgICAgICAgICAgICAgICAgICAgICAgKiBpbnRlcm5hbCBzb2NrZXQgcXVldWUgcmVjZWl2ZSBlcnJvcnMKKyAgICAgICAgICAgICAgICAgICAgICAqIHBhY2tldCB0b28gc2hvcnQgKGxlc3MgdGhhbiA4IGJ5dGVzIG9yIHN0YXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgY292ZXJhZ2UgbGVuZ3RoIGV4Y2VlZHMgcmVjZWl2ZWQgbGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICAgICogeGZybTRfcG9saWN5X2NoZWNrKCkgcmV0dXJuZWQgd2l0aCBlcnJvcgorICAgICAgICAgICAgICAgICAgICAgICogYXBwbGljYXRpb24gaGFzIHNwZWNpZmllZCBsYXJnZXIgbWluLiBjb3ZlcmFnZQorICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoIHRoYW4gdGhhdCBvZiBpbmNvbWluZyBwYWNrZXQKKyAgICAgICAgICAgICAgICAgICAgICAqIGNoZWNrc3VtIGNvdmVyYWdlIHZpb2xhdGVkCisgICAgICAgICAgICAgICAgICAgICAgKiBiYWQgY2hlY2tzdW0KKworICAgT3V0RGF0YWdyYW1zOiAgICBUb3RhbCBudW1iZXIgb2Ygc2VudCBkYXRhZ3JhbXMuCisKKyAgIFRoZXNlIHN0YXRpc3RpY3MgZGVyaXZlIGZyb20gdGhlIFVEUCBNSUIgKFJGQyAyMDEzKS4KKworCisgIFZJKSBJUFRBQkxFUworCisgIFRoZXJlIGlzIHBhY2tldCBtYXRjaCBzdXBwb3J0IGZvciBVRFAtTGl0ZSBhcyB3ZWxsIGFzIHN1cHBvcnQgZm9yIHRoZSBMT0cgdGFyZ2V0LgorICBJZiB5b3UgY29weSBhbmQgcGFzdGUgdGhlIGZvbGxvd2luZyBsaW5lIGludG8gL2V0Yy9wcm90b2NvbHMsCisKKyAgdWRwbGl0ZSAxMzYgICAgIFVEUC1MaXRlICAgICAgICAjIFVEUC1MaXRlIFtSRkMgMzgyOF0KKworICB0aGVuCisgICAgICAgICAgICAgIGlwdGFibGVzIC1BIElOUFVUIC1wIHVkcGxpdGUgLWogTE9HCisKKyAgd2lsbCBwcm9kdWNlIGxvZ2dpbmcgb3V0cHV0IHRvIHN5c2xvZy4gRHJvcHBpbmcgYW5kIHJlamVjdGluZyBwYWNrZXRzIGFsc28gd29ya3MuCisKKworICBWSUkpIE1BSU5UQUlORVIgQUREUkVTUworCisgIFRoZSBVRFAtTGl0ZSBwYXRjaCB3YXMgZGV2ZWxvcGVkIGF0CisgICAgICAgICAgICAgICAgICAgIFVuaXZlcnNpdHkgb2YgQWJlcmRlZW4KKyAgICAgICAgICAgICAgICAgICAgRWxlY3Ryb25pY3MgUmVzZWFyY2ggR3JvdXAKKyAgICAgICAgICAgICAgICAgICAgRGVwYXJ0bWVudCBvZiBFbmdpbmVlcmluZworICAgICAgICAgICAgICAgICAgICBGcmFzZXIgTm9ibGUgQnVpbGRpbmcKKyAgICAgICAgICAgICAgICAgICAgQWJlcmRlZW4gQUIyNCAzVUU7IFVLCisgIFRoZSBjdXJyZW50IG1haW50YWluZXIgaXMgR2Vycml0IFJlbmtlciwgPGdlcnJpdEBlcmcuYWJkbi5hYy51az4uIEluaXRpYWwKKyAgY29kZSB3YXMgZGV2ZWxvcGVkIGJ5IFdpbGxpYW0gIFN0YW5pc2xhdXMsIDx3aWxsaWFtQGVyZy5hYmRuLmFjLnVrPi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy92b3J0ZXgudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3ZvcnRleC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTcyODJkYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy92b3J0ZXgudHh0CkBAIC0wLDAgKzEsNDQ4IEBACitEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdm9ydGV4LnR4dAorQW5kcmV3IE1vcnRvbgorMzAgQXByaWwgMjAwMAorCisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSB1c2FnZSBhbmQgZXJyYXRhIG9mIHRoZSAzQ29tICJWb3J0ZXgiIGRldmljZQorZHJpdmVyIGZvciBMaW51eCwgM2M1OXguYy4KKworVGhlIGRyaXZlciB3YXMgd3JpdHRlbiBieSBEb25hbGQgQmVja2VyIDxiZWNrZXJAc2N5bGQuY29tPgorCitEb24gaXMgbm8gbG9uZ2VyIHRoZSBwcmltZSBtYWludGFpbmVyIG9mIHRoaXMgdmVyc2lvbiBvZiB0aGUgZHJpdmVyLiAKK1BsZWFzZSByZXBvcnQgcHJvYmxlbXMgdG8gb25lIG9yIG1vcmUgb2Y6CisKKyAgQW5kcmV3IE1vcnRvbgorICBOZXRkZXYgbWFpbGluZyBsaXN0IDxuZXRkZXZAdmdlci5rZXJuZWwub3JnPgorICBMaW51eCBrZXJuZWwgbWFpbGluZyBsaXN0IDxsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnPgorCitQbGVhc2Ugbm90ZSB0aGUgJ1JlcG9ydGluZyBhbmQgRGlhZ25vc2luZyBQcm9ibGVtcycgc2VjdGlvbiBhdCB0aGUgZW5kCitvZiB0aGlzIGZpbGUuCisKKworU2luY2Uga2VybmVsIDIuMy45OS1wcmU2LCB0aGlzIGRyaXZlciBpbmNvcnBvcmF0ZXMgdGhlIHN1cHBvcnQgZm9yIHRoZQorM2M1NzUtc2VyaWVzIENhcmRidXMgY2FyZHMgd2hpY2ggdXNlZCB0byBiZSBoYW5kbGVkIGJ5IDNjNTc1X2NiLmMuCisKK1RoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgaGFyZHdhcmU6CisKKwkzYzU5MCBWb3J0ZXggMTBNYnBzCisJM2M1OTIgRUlTQSAxME1icHMgRGVtb24vVm9ydGV4CisJM2M1OTcgRUlTQSBGYXN0IERlbW9uL1ZvcnRleAorCTNjNTk1IFZvcnRleCAxMDBiYXNlVHgKKwkzYzU5NSBWb3J0ZXggMTAwYmFzZVQ0CisJM2M1OTUgVm9ydGV4IDEwMGJhc2UtTUlJCisJM2M5MDAgQm9vbWVyYW5nIDEwYmFzZVQKKwkzYzkwMCBCb29tZXJhbmcgMTBNYnBzIENvbWJvCisJM2M5MDAgQ3ljbG9uZSAxME1icHMgVFBPCisJM2M5MDAgQ3ljbG9uZSAxME1icHMgQ29tYm8KKwkzYzkwMCBDeWNsb25lIDEwTWJwcyBUUEMKKwkzYzkwMEItRkwgQ3ljbG9uZSAxMGJhc2UtRkwKKwkzYzkwNSBCb29tZXJhbmcgMTAwYmFzZVR4CisJM2M5MDUgQm9vbWVyYW5nIDEwMGJhc2VUNAorCTNjOTA1QiBDeWNsb25lIDEwMGJhc2VUeAorCTNjOTA1QiBDeWNsb25lIDEwLzEwMC9CTkMKKwkzYzkwNUItRlggQ3ljbG9uZSAxMDBiYXNlRngKKwkzYzkwNUMgVG9ybmFkbworCTNjOTIwQi1FTUItV05NIChBVEkgUmFkZW9uIDkxMDAgSUdQKQorCTNjOTgwIEN5Y2xvbmUKKwkzYzk4MEMgUHl0aG9uLVQKKwkzY1NPSE8xMDAtVFggSHVycmljYW5lCisJM2M1NTUgTGFwdG9wIEh1cnJpY2FuZQorCTNjNTU2IExhcHRvcCBUb3JuYWRvCisJM2M1NTZCIExhcHRvcCBIdXJyaWNhbmUKKwkzYzU3NSBbTWVnYWhlcnR6XSAxMC8xMDAgTEFOICBDYXJkQnVzCisJM2M1NzUgQm9vbWVyYW5nIENhcmRCdXMKKwkzQ0NGRTU3NUJUIEN5Y2xvbmUgQ2FyZEJ1cworCTNDQ0ZFNTc1Q1QgVG9ybmFkbyBDYXJkQnVzCisJM0NDRkU2NTYgQ3ljbG9uZSBDYXJkQnVzCisJM0NDRkVNNjU2QiBDeWNsb25lK1dpbm1vZGVtIENhcmRCdXMKKwkzQ1hGRU02NTZDIFRvcm5hZG8rV2lubW9kZW0gQ2FyZEJ1cworCTNjNDUwIEhvbWVQTkEgVG9ybmFkbworCTNjOTIwIFRvcm5hZG8KKwkzYzk4MiBIeWRyYSBEdWFsIFBvcnQgQQorCTNjOTgyIEh5ZHJhIER1YWwgUG9ydCBCCisJM2M5MDVCLVQ0CisJM2M5MjBCLUVNQi1XTk0gVG9ybmFkbworCitNb2R1bGUgcGFyYW1ldGVycworPT09PT09PT09PT09PT09PT0KKworVGhlcmUgYXJlIHNldmVyYWwgcGFyYW1ldGVycyB3aGljaCBtYXkgYmUgcHJvdmlkZWQgdG8gdGhlIGRyaXZlciB3aGVuCitpdHMgbW9kdWxlIGlzIGxvYWRlZC4gIFRoZXNlIGFyZSB1c3VhbGx5IHBsYWNlZCBpbiAvZXRjL21vZHByb2JlLmQvKi5jb25mCitjb25maWd1cmF0aW9uIGZpbGVzLiAgRXhhbXBsZToKKworb3B0aW9ucyAzYzU5eCBkZWJ1Zz0zIHJ4X2NvcHlicmVhaz0zMDAKKworSWYgeW91IGFyZSB1c2luZyB0aGUgUENNQ0lBIHRvb2xzIChjYXJkbWdyKSB0aGVuIHRoZSBvcHRpb25zIG1heSBiZQorcGxhY2VkIGluIC9ldGMvcGNtY2lhL2NvbmZpZy5vcHRzOgorCittb2R1bGUgIjNjNTl4IiBvcHRzICJkZWJ1Zz0zIHJ4X2NvcHlicmVhaz0zMDAiCisKKworVGhlIHN1cHBvcnRlZCBwYXJhbWV0ZXJzIGFyZToKKworZGVidWc9TgorCisgIFdoZXJlIE4gaXMgYSBudW1iZXIgZnJvbSAwIHRvIDcuICBBbnl0aGluZyBhYm92ZSAzIHByb2R1Y2VzIGEgbG90CisgIG9mIG91dHB1dCBpbiB5b3VyIHN5c3RlbSBsb2dzLiAgZGVidWc9MSBpcyBkZWZhdWx0LgorCitvcHRpb25zPU4xLE4yLE4zLC4uLgorCisgIEVhY2ggbnVtYmVyIGluIHRoZSBsaXN0IHByb3ZpZGVzIGFuIG9wdGlvbiB0byB0aGUgY29ycmVzcG9uZGluZworICBuZXR3b3JrIGNhcmQuICBTbyBpZiB5b3UgaGF2ZSB0d28gM2M5MDUncyBhbmQgeW91IHdpc2ggdG8gcHJvdmlkZQorICB0aGVtIHdpdGggb3B0aW9uIDB4MjA0IHlvdSB3b3VsZCB1c2U6CisKKyAgICBvcHRpb25zPTB4MjA0LDB4MjA0CisKKyAgVGhlIGluZGl2aWR1YWwgb3B0aW9ucyBhcmUgY29tcG9zZWQgb2YgYSBudW1iZXIgb2YgYml0ZmllbGRzIHdoaWNoCisgIGhhdmUgdGhlIGZvbGxvd2luZyBtZWFuaW5nczoKKworICBQb3NzaWJsZSBtZWRpYSB0eXBlIHNldHRpbmdzCisJMAkxMGJhc2VUCisJMQkxME1icyBBVUkKKwkyCXVuZGVmaW5lZAorCTMJMTBiYXNlMiAoQk5DKQorCTQJMTAwYmFzZS1UWAorCTUJMTAwYmFzZS1GWAorCTYJTUlJIChNZWRpYSBJbmRlcGVuZGVudCBJbnRlcmZhY2UpCisJNwlVc2UgZGVmYXVsdCBzZXR0aW5nIGZyb20gRUVQUk9NCisJOCAgICAgICBBdXRvbmVnb3RpYXRlCisJOSAgICAgICBFeHRlcm5hbCBNSUkKKwkxMCAgICAgIFVzZSBkZWZhdWx0IHNldHRpbmcgZnJvbSBFRVBST00KKworICBXaGVuIGdlbmVyYXRpbmcgYSB2YWx1ZSBmb3IgdGhlICdvcHRpb25zJyBzZXR0aW5nLCB0aGUgYWJvdmUgbWVkaWEKKyAgc2VsZWN0aW9uIHZhbHVlcyBtYXkgYmUgT1InZWQgKG9yIGFkZGVkIHRvKSB0aGUgZm9sbG93aW5nOgorCisgIDB4ODAwMCAgU2V0IGRyaXZlciBkZWJ1Z2dpbmcgbGV2ZWwgdG8gNworICAweDQwMDAgIFNldCBkcml2ZXIgZGVidWdnaW5nIGxldmVsIHRvIDIKKyAgMHgwNDAwICBFbmFibGUgV2FrZS1vbi1MQU4KKyAgMHgwMjAwICBGb3JjZSBmdWxsIGR1cGxleCBtb2RlLgorICAweDAwMTAgIEJ1cy1tYXN0ZXIgZW5hYmxlIGJpdCAoT2xkIFZvcnRleCBjYXJkcyBvbmx5KQorCisgIEZvciBleGFtcGxlOgorCisgICAgaW5zbW9kIDNjNTl4IG9wdGlvbnM9MHgyMDQKKworICB3aWxsIGZvcmNlIGZ1bGwtZHVwbGV4IDEwMGJhc2UtVFgsIHJhdGhlciB0aGFuIGFsbG93aW5nIHRoZSB1c3VhbAorICBhdXRvbmVnb3RpYXRpb24uCisKK2dsb2JhbF9vcHRpb25zPU4KKworICBTZXRzIHRoZSBgb3B0aW9ucycgcGFyYW1ldGVyIGZvciBhbGwgM2M1OXggTklDcyBpbiB0aGUgbWFjaGluZS4gCisgIEVudHJpZXMgaW4gdGhlIGBvcHRpb25zJyBhcnJheSBhYm92ZSB3aWxsIG92ZXJyaWRlIGFueSBzZXR0aW5nIG9mCisgIHRoaXMuCisKK2Z1bGxfZHVwbGV4PU4xLE4yLE4zLi4uCisKKyAgU2ltaWxhciB0byBiaXQgOSBvZiAnb3B0aW9ucycuICBGb3JjZXMgdGhlIGNvcnJlc3BvbmRpbmcgY2FyZCBpbnRvCisgIGZ1bGwtZHVwbGV4IG1vZGUuICBQbGVhc2UgdXNlIHRoaXMgaW4gcHJlZmVyZW5jZSB0byB0aGUgYG9wdGlvbnMnCisgIHBhcmFtZXRlci4KKworICBJbiBmYWN0LCBwbGVhc2UgZG9uJ3QgdXNlIHRoaXMgYXQgYWxsISBZb3UncmUgYmV0dGVyIG9mZiBnZXR0aW5nCisgIGF1dG9uZWdvdGlhdGlvbiB3b3JraW5nIHByb3Blcmx5LgorCitnbG9iYWxfZnVsbF9kdXBsZXg9TjEKKworICBTZXRzIGZ1bGwgZHVwbGV4IG1vZGUgZm9yIGFsbCAzYzU5eCBOSUNzIGluIHRoZSBtYWNoaW5lLiAgRW50cmllcworICBpbiB0aGUgYGZ1bGxfZHVwbGV4JyBhcnJheSBhYm92ZSB3aWxsIG92ZXJyaWRlIGFueSBzZXR0aW5nIG9mIHRoaXMuCisKK2Zsb3dfY3RybD1OMSxOMixOMy4uLgorCisgIFVzZSA4MDIuM3ggTUFDLWxheWVyIGZsb3cgY29udHJvbC4gIFRoZSAzY29tIGNhcmRzIG9ubHkgc3VwcG9ydCB0aGUKKyAgUEFVU0UgY29tbWFuZCwgd2hpY2ggbWVhbnMgdGhhdCB0aGV5IHdpbGwgc3RvcCBzZW5kaW5nIHBhY2tldHMgZm9yIGEKKyAgc2hvcnQgcGVyaW9kIGlmIHRoZXkgcmVjZWl2ZSBhIFBBVVNFIGZyYW1lIGZyb20gdGhlIGxpbmsgcGFydG5lci4gCisKKyAgVGhlIGRyaXZlciBvbmx5IGFsbG93cyBmbG93IGNvbnRyb2wgb24gYSBsaW5rIHdoaWNoIGlzIG9wZXJhdGluZyBpbgorICBmdWxsIGR1cGxleCBtb2RlLgorCisgIFRoaXMgZmVhdHVyZSBkb2VzIG5vdCBhcHBlYXIgdG8gd29yayBvbiB0aGUgM2M5MDUgLSBvbmx5IDNjOTA1QiBhbmQKKyAgM2M5MDVDIGhhdmUgYmVlbiB0ZXN0ZWQuCisKKyAgVGhlIDNjb20gY2FyZHMgYXBwZWFyIHRvIG9ubHkgcmVzcG9uZCB0byBQQVVTRSBmcmFtZXMgd2hpY2ggYXJlCisgIHNlbnQgdG8gdGhlIHJlc2VydmVkIGRlc3RpbmF0aW9uIGFkZHJlc3Mgb2YgMDE6ODA6YzI6MDA6MDA6MDEuICBUaGV5CisgIGRvIG5vdCBob25vdXIgUEFVU0UgZnJhbWVzIHdoaWNoIGFyZSBzZW50IHRvIHRoZSBzdGF0aW9uIE1BQyBhZGRyZXNzLgorCityeF9jb3B5YnJlYWs9TQorCisgIFRoZSBkcml2ZXIgcHJlYWxsb2NhdGVzIDMyIGZ1bGwtc2l6ZWQgKDE1MzYgYnl0ZSkgbmV0d29yayBidWZmZXJzCisgIGZvciByZWNlaXZpbmcuICBXaGVuIGEgcGFja2V0IGFycml2ZXMsIHRoZSBkcml2ZXIgaGFzIHRvIGRlY2lkZQorICB3aGV0aGVyIHRvIGxlYXZlIHRoZSBwYWNrZXQgaW4gaXRzIGZ1bGwtc2l6ZWQgYnVmZmVyLCBvciB0byBhbGxvY2F0ZQorICBhIHNtYWxsZXIgYnVmZmVyIGFuZCBjb3B5IHRoZSBwYWNrZXQgYWNyb3NzIGludG8gaXQuCisKKyAgVGhpcyBpcyBhIHNwZWVkL3NwYWNlIHRyYWRlb2ZmLgorCisgIFRoZSB2YWx1ZSBvZiByeF9jb3B5YnJlYWsgaXMgdXNlZCB0byBkZWNpZGUgd2hlbiB0byBtYWtlIHRoZSBjb3B5LiAKKyAgSWYgdGhlIHBhY2tldCBzaXplIGlzIGxlc3MgdGhhbiByeF9jb3B5YnJlYWssIHRoZSBwYWNrZXQgaXMgY29waWVkLiAKKyAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHJ4X2NvcHlicmVhayBpcyAyMDAgYnl0ZXMuCisKK21heF9pbnRlcnJ1cHRfd29yaz1OCisKKyAgVGhlIGRyaXZlcidzIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmUgY2FuIGhhbmRsZSBtYW55IHJlY2VpdmUgYW5kCisgIHRyYW5zbWl0IHBhY2tldHMgaW4gYSBzaW5nbGUgaW52b2NhdGlvbi4gIEl0IGRvZXMgdGhpcyBpbiBhIGxvb3AuIAorICBUaGUgdmFsdWUgb2YgbWF4X2ludGVycnVwdF93b3JrIGdvdmVybnMgaG93IG1hbnkgdGltZXMgdGhlIGludGVycnVwdAorICBzZXJ2aWNlIHJvdXRpbmUgd2lsbCBsb29wLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgMzIgbG9vcHMuICBJZiB0aGlzCisgIGlzIGV4Y2VlZGVkIHRoZSBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lIGdpdmVzIHVwIGFuZCBnZW5lcmF0ZXMgYQorICB3YXJuaW5nIG1lc3NhZ2UgImV0aDA6IFRvbyBtdWNoIHdvcmsgaW4gaW50ZXJydXB0Ii4KKworaHdfY2hlY2tzdW1zPU4xLE4yLE4zLC4uLgorCisgIFJlY2VudCAzY29tIE5JQ3MgYXJlIGFibGUgdG8gZ2VuZXJhdGUgSVB2NCwgVENQIGFuZCBVRFAgY2hlY2tzdW1zCisgIGluIGhhcmR3YXJlLiAgTGludXggaGFzIHVzZWQgdGhlIFJ4IGNoZWNrc3VtbWluZyBmb3IgYSBsb25nIHRpbWUuIAorICBUaGUgInplcm8gY29weSIgcGF0Y2ggd2hpY2ggaXMgcGxhbm5lZCBmb3IgdGhlIDIuNCBrZXJuZWwgc2VyaWVzCisgIGFsbG93cyB5b3UgdG8gbWFrZSB1c2Ugb2YgdGhlIE5JQydzIERNQSBzY2F0dGVyL2dhdGhlciBhbmQgdHJhbnNtaXQKKyAgY2hlY2tzdW1taW5nIGFzIHdlbGwuCisKKyAgVGhlIGRyaXZlciBpcyBzZXQgdXAgc28gdGhhdCwgd2hlbiB0aGUgemVyb2NvcHkgcGF0Y2ggaXMgYXBwbGllZCwKKyAgYWxsIFRvcm5hZG8gYW5kIEN5Y2xvbmUgZGV2aWNlcyB3aWxsIHVzZSBTL0cgYW5kIFR4IGNoZWNrc3Vtcy4KKworICBUaGlzIG1vZHVsZSBwYXJhbWV0ZXIgaGFzIGJlZW4gcHJvdmlkZWQgc28geW91IGNhbiBvdmVycmlkZSB0aGlzCisgIGRlY2lzaW9uLiAgSWYgeW91IHRoaW5rIHRoYXQgVHggY2hlY2tzdW1zIGFyZSBjYXVzaW5nIGEgcHJvYmxlbSwgeW91CisgIG1heSBkaXNhYmxlIHRoZSBmZWF0dXJlIHdpdGggYGh3X2NoZWNrc3Vtcz0wJy4KKworICBJZiB5b3UgdGhpbmsgeW91ciBOSUMgc2hvdWxkIGJlIHBlcmZvcm1pbmcgVHggY2hlY2tzdW1taW5nIGFuZCB0aGUKKyAgZHJpdmVyIGlzbid0IGVuYWJsaW5nIGl0LCB5b3UgY2FuIGZvcmNlIHRoZSB1c2Ugb2YgaGFyZHdhcmUgVHgKKyAgY2hlY2tzdW1taW5nIHdpdGggYGh3X2NoZWNrc3Vtcz0xJy4KKworICBUaGUgZHJpdmVyIGRyb3BzIGEgbWVzc2FnZSBpbiB0aGUgbG9nZmlsZXMgdG8gaW5kaWNhdGUgd2hldGhlciBvcgorICBub3QgaXQgaXMgdXNpbmcgaGFyZHdhcmUgc2NhdHRlci9nYXRoZXIgYW5kIGhhcmR3YXJlIFR4IGNoZWNrc3Vtcy4KKworICBTY2F0dGVyL2dhdGhlciBhbmQgaGFyZHdhcmUgY2hlY2tzdW1zIHByb3ZpZGUgY29uc2lkZXJhYmxlCisgIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGZvciB0aGUgc2VuZGZpbGUoKSBzeXN0ZW0gY2FsbCwgYnV0IGEgc21hbGwKKyAgZGVjcmVhc2UgaW4gdGhyb3VnaHB1dCBmb3Igc2VuZCgpLiAgVGhlcmUgaXMgbm8gZWZmZWN0IHVwb24gcmVjZWl2ZQorICBlZmZpY2llbmN5LgorCitjb21wYXFfaW9hZGRyPU4KK2NvbXBhcV9pcnE9TgorY29tcGFxX2RldmljZV9pZD1OCisKKyAgIlZhcmlhYmxlcyB0byB3b3JrLWFyb3VuZCB0aGUgQ29tcGFxIFBDSSBCSU9TMzIgcHJvYmxlbSIuLi4uCisKK3dhdGNoZG9nPU4KKworICBTZXRzIHRoZSB0aW1lIGR1cmF0aW9uIChpbiBtaWxsaXNlY29uZHMpIGFmdGVyIHdoaWNoIHRoZSBrZXJuZWwKKyAgZGVjaWRlcyB0aGF0IHRoZSB0cmFuc21pdHRlciBoYXMgYmVjb21lIHN0dWNrIGFuZCBuZWVkcyB0byBiZSByZXNldC4gCisgIFRoaXMgaXMgbWFpbmx5IGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMsIGFsdGhvdWdoIGl0IG1heSBiZSBhZHZhbnRhZ2VvdXMKKyAgdG8gaW5jcmVhc2UgdGhpcyB2YWx1ZSBvbiBMQU5zIHdoaWNoIGhhdmUgdmVyeSBoaWdoIGNvbGxpc2lvbiByYXRlcy4KKyAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgNTAwMCAoNS4wIHNlY29uZHMpLgorCitlbmFibGVfd29sPU4xLE4yLE4zLC4uLgorCisgIEVuYWJsZSBXYWtlLW9uLUxBTiBzdXBwb3J0IGZvciB0aGUgcmVsZXZhbnQgaW50ZXJmYWNlLiAgRG9uYWxkCisgIEJlY2tlcidzIGBldGhlci13YWtlJyBhcHBsaWNhdGlvbiBtYXkgYmUgdXNlZCB0byB3YWtlIHN1c3BlbmRlZAorICBtYWNoaW5lcy4KKworICBBbHNvIGVuYWJsZXMgdGhlIE5JQydzIHBvd2VyIG1hbmFnZW1lbnQgc3VwcG9ydC4KKworZ2xvYmFsX2VuYWJsZV93b2w9TgorCisgIFNldHMgZW5hYmxlX3dvbCBtb2RlIGZvciBhbGwgM2M1OXggTklDcyBpbiB0aGUgbWFjaGluZS4gIEVudHJpZXMgaW4KKyAgdGhlIGBlbmFibGVfd29sJyBhcnJheSBhYm92ZSB3aWxsIG92ZXJyaWRlIGFueSBzZXR0aW5nIG9mIHRoaXMuCisKK01lZGlhIHNlbGVjdGlvbgorLS0tLS0tLS0tLS0tLS0tCisKK0EgbnVtYmVyIG9mIHRoZSBvbGRlciBOSUNzIHN1Y2ggYXMgdGhlIDNjNTkwIGFuZCAzYzkwMCBzZXJpZXMgaGF2ZQorMTBiYXNlMiBhbmQgQVVJIGludGVyZmFjZXMuCisKK1ByaW9yIHRvIEphbnVhcnksIDIwMDEgdGhpcyBkcml2ZXIgd291bGQgYXV0b2VzZWxlY3QgdGhlIDEwYmFzZTIgb3IgQVVJCitwb3J0IGlmIGl0IGRpZG4ndCBkZXRlY3QgYWN0aXZpdHkgb24gdGhlIDEwYmFzZVQgcG9ydC4gIEl0IHdvdWxkIHRoZW4KK2dldCBzdHVjayBvbiB0aGUgMTBiYXNlMiBwb3J0IGFuZCBhIGRyaXZlciByZWxvYWQgd2FzIG5lY2Vzc2FyeSB0bworc3dpdGNoIGJhY2sgdG8gMTBiYXNlVC4gIFRoaXMgYmVoYXZpb3VyIGNvdWxkIG5vdCBiZSBwcmV2ZW50ZWQgd2l0aCBhCittb2R1bGUgb3B0aW9uIG92ZXJyaWRlLgorCitMYXRlciAoY3VycmVudCkgdmVyc2lvbnMgb2YgdGhlIGRyaXZlciBfZG9fIHN1cHBvcnQgbG9ja2luZyBvZiB0aGUKK21lZGlhIHR5cGUuICBTbyBpZiB5b3UgbG9hZCB0aGUgZHJpdmVyIG1vZHVsZSB3aXRoCisKKwltb2Rwcm9iZSAzYzU5eCBvcHRpb25zPTAKKworaXQgd2lsbCBwZXJtYW5lbnRseSBzZWxlY3QgdGhlIDEwYmFzZVQgcG9ydC4gIEF1dG9tYXRpYyBzZWxlY3Rpb24gb2YKK290aGVyIG1lZGlhIHR5cGVzIGRvZXMgbm90IG9jY3VyLgorCisKK1RyYW5zbWl0IGVycm9yLCBUeCBzdGF0dXMgcmVnaXN0ZXIgODIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBpcyBhIGNvbW1vbiBlcnJvciB3aGljaCBpcyBhbG1vc3QgYWx3YXlzIGNhdXNlZCBieSBhbm90aGVyIGhvc3Qgb24KK3RoZSBzYW1lIG5ldHdvcmsgYmVpbmcgaW4gZnVsbC1kdXBsZXggbW9kZSwgd2hpbGUgdGhpcyBob3N0IGlzIGluCitoYWxmLWR1cGxleCBtb2RlLiAgWW91IG5lZWQgdG8gZmluZCB0aGF0IG90aGVyIGhvc3QgYW5kIG1ha2UgaXQgcnVuIGluCitoYWxmLWR1cGxleCBtb2RlIG9yIGZpeCB0aGlzIGhvc3QgdG8gcnVuIGluIGZ1bGwtZHVwbGV4IG1vZGUuCisKK0FzIGEgbGFzdCByZXNvcnQsIHlvdSBjYW4gZm9yY2UgdGhlIDNjNTl4IGRyaXZlciBpbnRvIGZ1bGwtZHVwbGV4IG1vZGUKK3dpdGgKKworCW9wdGlvbnMgM2M1OXggZnVsbF9kdXBsZXg9MQorCitidXQgdGhpcyBoYXMgdG8gYmUgdmlld2VkIGFzIGEgd29ya2Fyb3VuZCBmb3IgYnJva2VuIG5ldHdvcmsgZ2VhciBhbmQKK3Nob3VsZCBvbmx5IHJlYWxseSBiZSB1c2VkIGZvciBlcXVpcG1lbnQgd2hpY2ggY2Fubm90IGF1dG9uZWdvdGlhdGUuCisKKworQWRkaXRpb25hbCByZXNvdXJjZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RldGFpbHMgb2YgdGhlIGRldmljZSBkcml2ZXIgaW1wbGVtZW50YXRpb24gYXJlIGF0IHRoZSB0b3Agb2YgdGhlIHNvdXJjZSBmaWxlLgorCitBZGRpdGlvbmFsIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlIGF0IERvbiBCZWNrZXIncyBMaW51eCBEcml2ZXJzIHNpdGU6CisKKyAgICAgaHR0cDovL3d3dy5zY3lsZC5jb20vdm9ydGV4Lmh0bWwKKworRG9uYWxkIEJlY2tlcidzIGRyaXZlciBkZXZlbG9wbWVudCBzaXRlOgorCisgICAgIGh0dHA6Ly93d3cuc2N5bGQuY29tL25ldHdvcmsuaHRtbAorCitEb25hbGQncyB2b3J0ZXgtZGlhZyBwcm9ncmFtIGlzIHVzZWZ1bCBmb3IgaW5zcGVjdGluZyB0aGUgTklDJ3Mgc3RhdGU6CisKKyAgICAgaHR0cDovL3d3dy5zY3lsZC5jb20vZXRoZXJjYXJkX2RpYWcuaHRtbAorCitEb25hbGQncyBtaWktZGlhZyBwcm9ncmFtIG1heSBiZSB1c2VkIGZvciBpbnNwZWN0aW5nIGFuZCBtYW5pcHVsYXRpbmcKK3RoZSBOSUMncyBNZWRpYSBJbmRlcGVuZGVudCBJbnRlcmZhY2Ugc3Vic3lzdGVtOgorCisgICAgIGh0dHA6Ly93d3cuc2N5bGQuY29tL2V0aGVyY2FyZF9kaWFnLmh0bWwjbWlpLWRpYWcKKworRG9uYWxkJ3Mgd2FrZS1vbi1MQU4gcGFnZToKKworICAgICBodHRwOi8vd3d3LnNjeWxkLmNvbS93YWtlb25sYW4uaHRtbAorCiszQ29tJ3MgRE9TLWJhc2VkIGFwcGxpY2F0aW9uIGZvciBzZXR0aW5nIHVwIHRoZSBOSUNzIEVFUFJPTXM6CisKKwlmdHA6Ly9mdHAuM2NvbS5jb20vcHViL25pYy8zYzkweC8zYzkweHgyLmV4ZQorCisKK0F1dG9uZWdvdGlhdGlvbiBub3RlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlIGRyaXZlciB1c2VzIGEgb25lLW1pbnV0ZSBoZWFydGJlYXQgZm9yIGFkYXB0aW5nIHRvIGNoYW5nZXMgaW4KKyAgdGhlIGV4dGVybmFsIExBTiBlbnZpcm9ubWVudCBpZiBsaW5rIGlzIHVwIGFuZCA1IHNlY29uZHMgaWYgbGluayBpcyBkb3duLgorICBUaGlzIG1lYW5zIHRoYXQgd2hlbiwgZm9yIGV4YW1wbGUsIGEgbWFjaGluZSBpcyB1bnBsdWdnZWQgZnJvbSBhIGh1YmJlZAorICAxMGJhc2VUIExBTiBwbHVnZ2VkIGludG8gYSAgc3dpdGNoZWQgMTAwYmFzZVQgTEFOLCB0aGUgdGhyb3VnaHB1dAorICB3aWxsIGJlIHF1aXRlIGRyZWFkZnVsIGZvciB1cCB0byBzaXh0eSBzZWNvbmRzLiAgQmUgcGF0aWVudC4KKworICBDaXNjbyBpbnRlcm9wZXJhYmlsaXR5IG5vdGUgZnJvbSBXYWx0ZXIgV29uZyA8d2N3K0BDTVUuRURVPjoKKworICBPbiBhIHNpZGUgbm90ZSwgYWRkaW5nIEhBU19OV0FZIHNlZW1zIHRvIHNoYXJlIGEgcHJvYmxlbSB3aXRoIHRoZQorICBDaXNjbyA2NTA5IHN3aXRjaC4gIFNwZWNpZmljYWxseSwgeW91IG5lZWQgdG8gY2hhbmdlIHRoZSBzcGFubmluZworICB0cmVlIHBhcmFtZXRlciBmb3IgdGhlIHBvcnQgdGhlIG1hY2hpbmUgaXMgcGx1Z2dlZCBpbnRvIHRvICdwb3J0ZmFzdCcKKyAgbW9kZS4gIE90aGVyd2lzZSwgdGhlIG5lZ290aWF0aW9uIGZhaWxzLiAgVGhpcyBoYXMgYmVlbiBhbiBpc3N1ZQorICB3ZSd2ZSBub3RpY2VkIGZvciBhIHdoaWxlIGJ1dCBoYXZlbid0IGhhZCB0aGUgdGltZSB0byB0cmFjayBkb3duLgorCisgIENpc2NvIHN3aXRjaGVzICAgIChKZWZmIEJ1c2NoIDxqYnVzY2hAZGVqYS5jb20+KQorCisgICAgTXkgInN0YW5kYXJkIGNvbmZpZyIgZm9yIHBvcnRzIHRvIHdoaWNoIFBDJ3Mvc2VydmVycyBjb25uZWN0IGRpcmVjdGx5OgorCisgICAgICAgIGludGVyZmFjZSBGYXN0RXRoZXJuZXQwL04KKyAgICAgICAgZGVzY3JpcHRpb24gbWFjaGluZW5hbWUKKyAgICAgICAgbG9hZC1pbnRlcnZhbCAzMAorICAgICAgICBzcGFubmluZy10cmVlIHBvcnRmYXN0CisKKyAgICBJZiBhdXRvbmVnb3RpYXRpb24gaXMgYSBwcm9ibGVtLCB5b3UgbWF5IG5lZWQgdG8gc3BlY2lmeSAic3BlZWQKKyAgICAxMDAiIGFuZCAiZHVwbGV4IGZ1bGwiIGFzIHdlbGwgKG9yICJzcGVlZCAxMCIgYW5kICJkdXBsZXggaGFsZiIpLgorCisgICAgV0FSTklORzogRE8gTk9UIGhvb2sgdXAgaHVicy9zd2l0Y2hlcy9icmlkZ2VzIHRvIHRoZXNlCisgICAgc3BlY2lhbGx5LWNvbmZpZ3VyZWQgcG9ydHMhIFRoZSBzd2l0Y2ggd2lsbCBiZWNvbWUgdmVyeSBjb25mdXNlZC4KKworCitSZXBvcnRpbmcgYW5kIGRpYWdub3NpbmcgcHJvYmxlbXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitNYWludGFpbmVycyBmaW5kIHRoYXQgYWNjdXJhdGUgYW5kIGNvbXBsZXRlIHByb2JsZW0gcmVwb3J0cyBhcmUKK2ludmFsdWFibGUgaW4gcmVzb2x2aW5nIGRyaXZlciBwcm9ibGVtcy4gIFdlIGFyZSBmcmVxdWVudGx5IG5vdCBhYmxlIHRvCityZXByb2R1Y2UgcHJvYmxlbXMgYW5kIG11c3QgcmVseSBvbiB5b3VyIHBhdGllbmNlIGFuZCBlZmZvcnRzIHRvIGdldCB0bwordGhlIGJvdHRvbSBvZiB0aGUgcHJvYmxlbS4KKworSWYgeW91IGJlbGlldmUgeW91IGhhdmUgYSBkcml2ZXIgcHJvYmxlbSBoZXJlIGFyZSBzb21lIG9mIHRoZQorc3RlcHMgeW91IHNob3VsZCB0YWtlOgorCistIElzIGl0IHJlYWxseSBhIGRyaXZlciBwcm9ibGVtPworCisgICBFbGltaW5hdGUgc29tZSB2YXJpYWJsZXM6IHRyeSBkaWZmZXJlbnQgY2FyZHMsIGRpZmZlcmVudAorICAgY29tcHV0ZXJzLCBkaWZmZXJlbnQgY2FibGVzLCBkaWZmZXJlbnQgcG9ydHMgb24gdGhlIHN3aXRjaC9odWIsCisgICBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIGtlcm5lbCBvciBvZiB0aGUgZHJpdmVyLCBldGMuCisKKy0gT0ssIGl0J3MgYSBkcml2ZXIgcHJvYmxlbS4KKworICAgWW91IG5lZWQgdG8gZ2VuZXJhdGUgYSByZXBvcnQuICBUeXBpY2FsbHkgdGhpcyBpcyBhbiBlbWFpbCB0byB0aGUKKyAgIG1haW50YWluZXIgYW5kL29yIG5ldGRldkB2Z2VyLmtlcm5lbC5vcmcuICBUaGUgbWFpbnRhaW5lcidzCisgICBlbWFpbCBhZGRyZXNzIHdpbGwgYmUgaW4gdGhlIGRyaXZlciBzb3VyY2Ugb3IgaW4gdGhlIE1BSU5UQUlORVJTIGZpbGUuCisKKy0gVGhlIGNvbnRlbnRzIG9mIHlvdXIgcmVwb3J0IHdpbGwgdmFyeSBhIGxvdCBkZXBlbmRpbmcgdXBvbiB0aGUKKyAgcHJvYmxlbS4gIElmIGl0J3MgYSBrZXJuZWwgY3Jhc2ggdGhlbiB5b3Ugc2hvdWxkIHJlZmVyIHRvIHRoZQorICBSRVBPUlRJTkctQlVHUyBmaWxlLgorCisgIEJ1dCBmb3IgbW9zdCBwcm9ibGVtcyBpdCBpcyB1c2VmdWwgdG8gcHJvdmlkZSB0aGUgZm9sbG93aW5nOgorCisgICBvIEtlcm5lbCB2ZXJzaW9uLCBkcml2ZXIgdmVyc2lvbgorCisgICBvIEEgY29weSBvZiB0aGUgYmFubmVyIG1lc3NhZ2Ugd2hpY2ggdGhlIGRyaXZlciBnZW5lcmF0ZXMgd2hlbgorICAgICBpdCBpcyBpbml0aWFsaXNlZC4gIEZvciBleGFtcGxlOgorCisgICAgIGV0aDA6IDNDb20gUENJIDNjOTA1QyBUb3JuYWRvIGF0IDB4YTQwMCwgIDAwOjUwOmRhOjZhOjg4OmYwLCBJUlEgMTkKKyAgICAgOEsgYnl0ZS13aWRlIFJBTSA1OjMgUng6VHggc3BsaXQsIGF1dG9zZWxlY3QvQXV0b25lZ290aWF0ZSBpbnRlcmZhY2UuCisgICAgIE1JSSB0cmFuc2NlaXZlciBmb3VuZCBhdCBhZGRyZXNzIDI0LCBzdGF0dXMgNzgyZC4KKyAgICAgRW5hYmxpbmcgYnVzLW1hc3RlciB0cmFuc21pdHMgYW5kIHdob2xlLWZyYW1lIHJlY2VpdmVzLgorCisgICAgIE5PVEU6IFlvdSBtdXN0IHByb3ZpZGUgdGhlIGBkZWJ1Zz0yJyBtb2Rwcm9iZSBvcHRpb24gdG8gZ2VuZXJhdGUKKyAgICAgYSBmdWxsIGRldGVjdGlvbiBtZXNzYWdlLiAgUGxlYXNlIGRvIHRoaXM6CisKKwltb2Rwcm9iZSAzYzU5eCBkZWJ1Zz0yCisKKyAgIG8gSWYgaXQgaXMgYSBQQ0kgZGV2aWNlLCB0aGUgcmVsZXZhbnQgb3V0cHV0IGZyb20gJ2xzcGNpIC12eCcsIGVnOgorCisgICAgIDAwOjA5LjAgRXRoZXJuZXQgY29udHJvbGxlcjogM0NvbSBDb3Jwb3JhdGlvbiAzYzkwNUMtVFggW0Zhc3QgRXRoZXJsaW5rXSAocmV2IDc0KQorICAgICAgICAgICAgIFN1YnN5c3RlbTogM0NvbSBDb3Jwb3JhdGlvbjogVW5rbm93biBkZXZpY2UgOTIwMAorICAgICAgICAgICAgIEZsYWdzOiBidXMgbWFzdGVyLCBtZWRpdW0gZGV2c2VsLCBsYXRlbmN5IDMyLCBJUlEgMTkKKyAgICAgICAgICAgICBJL08gcG9ydHMgYXQgYTQwMCBbc2l6ZT0xMjhdCisgICAgICAgICAgICAgTWVtb3J5IGF0IGRiMDAwMDAwICgzMi1iaXQsIG5vbi1wcmVmZXRjaGFibGUpIFtzaXplPTEyOF0KKyAgICAgICAgICAgICBFeHBhbnNpb24gUk9NIGF0IDx1bmFzc2lnbmVkPiBbZGlzYWJsZWRdIFtzaXplPTEyOEtdCisgICAgICAgICAgICAgQ2FwYWJpbGl0aWVzOiBbZGNdIFBvd2VyIE1hbmFnZW1lbnQgdmVyc2lvbiAyCisgICAgIDAwOiBiNyAxMCAwMCA5MiAwNyAwMCAxMCAwMiA3NCAwMCAwMCAwMiAwOCAyMCAwMCAwMAorICAgICAxMDogMDEgYTQgMDAgMDAgMDAgMDAgMDAgZGIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAKKyAgICAgMjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIGI3IDEwIDAwIDEwCisgICAgIDMwOiAwMCAwMCAwMCAwMCBkYyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwNSAwMSAwYSAwYQorCisgICBvIEEgZGVzY3JpcHRpb24gb2YgdGhlIGVudmlyb25tZW50OiAxMGJhc2VUPyAxMDBiYXNlVD8KKyAgICAgZnVsbC9oYWxmIGR1cGxleD8gc3dpdGNoZWQgb3IgaHViYmVkPworCisgICBvIEFueSBhZGRpdGlvbmFsIG1vZHVsZSBwYXJhbWV0ZXJzIHdoaWNoIHlvdSBtYXkgYmUgcHJvdmlkaW5nIHRvIHRoZSBkcml2ZXIuCisKKyAgIG8gQW55IGtlcm5lbCBsb2dzIHdoaWNoIGFyZSBwcm9kdWNlZC4gIFRoZSBtb3JlIHRoZSBtZXJyaWVyLiAKKyAgICAgSWYgdGhpcyBpcyBhIGxhcmdlIGZpbGUgYW5kIHlvdSBhcmUgc2VuZGluZyB5b3VyIHJlcG9ydCB0byBhCisgICAgIG1haWxpbmcgbGlzdCwgbWVudGlvbiB0aGF0IHlvdSBoYXZlIHRoZSBsb2dmaWxlLCBidXQgZG9uJ3Qgc2VuZAorICAgICBpdC4gIElmIHlvdSdyZSByZXBvcnRpbmcgZGlyZWN0IHRvIHRoZSBtYWludGFpbmVyIHRoZW4ganVzdCBzZW5kCisgICAgIGl0LgorCisgICAgIFRvIGVuc3VyZSB0aGF0IGFsbCBrZXJuZWwgbG9ncyBhcmUgYXZhaWxhYmxlLCBhZGQgdGhlCisgICAgIGZvbGxvd2luZyBsaW5lIHRvIC9ldGMvc3lzbG9nLmNvbmY6CisKKyAgICAgICAgIGtlcm4uKiAvdmFyL2xvZy9tZXNzYWdlcworCisgICAgIFRoZW4gcmVzdGFydCBzeXNsb2dkIHdpdGg6CisKKyAgICAgICAgIC9ldGMvcmMuZC9pbml0LmQvc3lzbG9nIHJlc3RhcnQKKworICAgICAoVGhlIGFib3ZlIG1heSB2YXJ5LCBkZXBlbmRpbmcgdXBvbiB3aGljaCBMaW51eCBkaXN0cmlidXRpb24geW91IHVzZSkuCisKKyAgICBvIElmIHlvdXIgcHJvYmxlbSBpcyByZXByb2R1Y2libGUgdGhlbiB0aGF0J3MgZ3JlYXQuICBUcnkgdGhlCisgICAgICBmb2xsb3dpbmc6CisKKyAgICAgIDEpIEluY3JlYXNlIHRoZSBkZWJ1ZyBsZXZlbC4gIFVzdWFsbHkgdGhpcyBpcyBkb25lIHZpYToKKworICAgICAgICAgYSkgbW9kcHJvYmUgZHJpdmVyIGRlYnVnPTcKKyAgICAgICAgIGIpIEluIC9ldGMvbW9kcHJvYmUuZC9kcml2ZXIuY29uZjoKKyAgICAgICAgICAgIG9wdGlvbnMgZHJpdmVyIGRlYnVnPTcKKworICAgICAgMikgUmVjcmVhdGUgdGhlIHByb2JsZW0gd2l0aCB0aGUgaGlnaGVyIGRlYnVnIGxldmVsLAorICAgICAgICAgc2VuZCBhbGwgbG9ncyB0byB0aGUgbWFpbnRhaW5lci4KKworICAgICAgMykgRG93bmxvYWQgeW91IGNhcmQncyBkaWFnbm9zdGljIHRvb2wgZnJvbSBEb25hbGQKKyAgICAgICAgIEJlY2tlcidzIHdlYnNpdGUgPGh0dHA6Ly93d3cuc2N5bGQuY29tL2V0aGVyY2FyZF9kaWFnLmh0bWw+LgorICAgICAgICAgRG93bmxvYWQgbWlpLWRpYWcuYyBhcyB3ZWxsLiAgQnVpbGQgdGhlc2UuCisKKyAgICAgICAgIGEpIFJ1biAndm9ydGV4LWRpYWcgLWFhZWUnIGFuZCAnbWlpLWRpYWcgLXYnIHdoZW4gdGhlIGNhcmQgaXMKKyAgICAgICAgICAgIHdvcmtpbmcgY29ycmVjdGx5LiAgU2F2ZSB0aGUgb3V0cHV0LgorCisgICAgICAgICBiKSBSdW4gdGhlIGFib3ZlIGNvbW1hbmRzIHdoZW4gdGhlIGNhcmQgaXMgbWFsZnVuY3Rpb25pbmcuICBTZW5kCisgICAgICAgICAgICBib3RoIHNldHMgb2Ygb3V0cHV0LgorCitGaW5hbGx5LCBwbGVhc2UgYmUgcGF0aWVudCBhbmQgYmUgcHJlcGFyZWQgdG8gZG8gc29tZSB3b3JrLiAgWW91IG1heQorZW5kIHVwIHdvcmtpbmcgb24gdGhpcyBwcm9ibGVtIGZvciBhIHdlZWsgb3IgbW9yZSBhcyB0aGUgbWFpbnRhaW5lcgorYXNrcyBtb3JlIHF1ZXN0aW9ucywgYXNrcyBmb3IgbW9yZSB0ZXN0cywgYXNrcyBmb3IgcGF0Y2hlcyB0byBiZQorYXBwbGllZCwgZXRjLiAgQXQgdGhlIGVuZCBvZiBpdCBhbGwsIHRoZSBwcm9ibGVtIG1heSBldmVuIHJlbWFpbgordW5yZXNvbHZlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy92cmYudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3ZyZi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDUyYWExMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy92cmYudHh0CkBAIC0wLDAgKzEsMzkzIEBACitWaXJ0dWFsIFJvdXRpbmcgYW5kIEZvcndhcmRpbmcgKFZSRikKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorVGhlIFZSRiBkZXZpY2UgY29tYmluZWQgd2l0aCBpcCBydWxlcyBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBjcmVhdGUgdmlydHVhbAorcm91dGluZyBhbmQgZm9yd2FyZGluZyBkb21haW5zIChha2EgVlJGcywgVlJGLWxpdGUgdG8gYmUgc3BlY2lmaWMpIGluIHRoZQorTGludXggbmV0d29yayBzdGFjay4gT25lIHVzZSBjYXNlIGlzIHRoZSBtdWx0aS10ZW5hbmN5IHByb2JsZW0gd2hlcmUgZWFjaAordGVuYW50IGhhcyB0aGVpciBvd24gdW5pcXVlIHJvdXRpbmcgdGFibGVzIGFuZCBpbiB0aGUgdmVyeSBsZWFzdCBuZWVkCitkaWZmZXJlbnQgZGVmYXVsdCBnYXRld2F5cy4KKworUHJvY2Vzc2VzIGNhbiBiZSAiVlJGIGF3YXJlIiBieSBiaW5kaW5nIGEgc29ja2V0IHRvIHRoZSBWUkYgZGV2aWNlLiBQYWNrZXRzCit0aHJvdWdoIHRoZSBzb2NrZXQgdGhlbiB1c2UgdGhlIHJvdXRpbmcgdGFibGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBWUkYKK2RldmljZS4gQW4gaW1wb3J0YW50IGZlYXR1cmUgb2YgdGhlIFZSRiBkZXZpY2UgaW1wbGVtZW50YXRpb24gaXMgdGhhdCBpdAoraW1wYWN0cyBvbmx5IExheWVyIDMgYW5kIGFib3ZlIHNvIEwyIHRvb2xzIChlLmcuLCBMTERQKSBhcmUgbm90IGFmZmVjdGVkCisoaWUuLCB0aGV5IGRvIG5vdCBuZWVkIHRvIGJlIHJ1biBpbiBlYWNoIFZSRikuIFRoZSBkZXNpZ24gYWxzbyBhbGxvd3MKK3RoZSB1c2Ugb2YgaGlnaGVyIHByaW9yaXR5IGlwIHJ1bGVzIChQb2xpY3kgQmFzZWQgUm91dGluZywgUEJSKSB0byB0YWtlCitwcmVjZWRlbmNlIG92ZXIgdGhlIFZSRiBkZXZpY2UgcnVsZXMgZGlyZWN0aW5nIHNwZWNpZmljIHRyYWZmaWMgYXMgZGVzaXJlZC4KKworSW4gYWRkaXRpb24sIFZSRiBkZXZpY2VzIGFsbG93IFZSRnMgdG8gYmUgbmVzdGVkIHdpdGhpbiBuYW1lc3BhY2VzLiBGb3IKK2V4YW1wbGUgbmV0d29yayBuYW1lc3BhY2VzIHByb3ZpZGUgc2VwYXJhdGlvbiBvZiBuZXR3b3JrIGludGVyZmFjZXMgYXQgTDEKKyhMYXllciAxIHNlcGFyYXRpb24pLCBWTEFOcyBvbiB0aGUgaW50ZXJmYWNlcyB3aXRoaW4gYSBuYW1lc3BhY2UgcHJvdmlkZQorTDIgc2VwYXJhdGlvbiBhbmQgdGhlbiBWUkYgZGV2aWNlcyBwcm92aWRlIEwzIHNlcGFyYXRpb24uCisKK0Rlc2lnbgorLS0tLS0tCitBIFZSRiBkZXZpY2UgaXMgY3JlYXRlZCB3aXRoIGFuIGFzc29jaWF0ZWQgcm91dGUgdGFibGUuIE5ldHdvcmsgaW50ZXJmYWNlcworYXJlIHRoZW4gZW5zbGF2ZWQgdG8gYSBWUkYgZGV2aWNlOgorCisgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICB8ICAgICAgICAgICB2cmYtYmx1ZSAgICAgICAgICB8ICA9PT0+IHJvdXRlIHRhYmxlIDEwCisgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgICAgfAorICAgICAgICAgKy0tLS0tLSsgKy0tLS0tLSsgICAgICstLS0tLS0tLS0tLS0tKworICAgICAgICAgfCBldGgxIHwgfCBldGgyIHwgLi4uIHwgICAgYm9uZDEgICAgfAorICAgICAgICAgKy0tLS0tLSsgKy0tLS0tLSsgICAgICstLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLSsgKy0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXRoOCB8IHwgZXRoOSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tKyArLS0tLS0tKworCitQYWNrZXRzIHJlY2VpdmVkIG9uIGFuIGVuc2xhdmVkIGRldmljZSBhbmQgYXJlIHN3aXRjaGVkIHRvIHRoZSBWUkYgZGV2aWNlCit1c2luZyBhbiByeF9oYW5kbGVyIHdoaWNoIGdpdmVzIHRoZSBpbXByZXNzaW9uIHRoYXQgcGFja2V0cyBmbG93IHRocm91Z2gKK3RoZSBWUkYgZGV2aWNlLiBTaW1pbGFybHkgb24gZWdyZXNzIHJvdXRpbmcgcnVsZXMgYXJlIHVzZWQgdG8gc2VuZCBwYWNrZXRzCit0byB0aGUgVlJGIGRldmljZSBkcml2ZXIgYmVmb3JlIGdldHRpbmcgc2VudCBvdXQgdGhlIGFjdHVhbCBpbnRlcmZhY2UuIFRoaXMKK2FsbG93cyB0Y3BkdW1wIG9uIGEgVlJGIGRldmljZSB0byBjYXB0dXJlIGFsbCBwYWNrZXRzIGludG8gYW5kIG91dCBvZiB0aGUKK1ZSRiBhcyBhIHdob2xlLlsxXSBTaW1pbGlhcmx5LCBuZXRmaWx0ZXIgWzJdIGFuZCB0YyBydWxlcyBjYW4gYmUgYXBwbGllZAordXNpbmcgdGhlIFZSRiBkZXZpY2UgdG8gc3BlY2lmeSBydWxlcyB0aGF0IGFwcGx5IHRvIHRoZSBWUkYgZG9tYWluIGFzIGEgd2hvbGUuCisKK1sxXSBQYWNrZXRzIGluIHRoZSBmb3J3YXJkZWQgc3RhdGUgZG8gbm90IGZsb3cgdGhyb3VnaCB0aGUgZGV2aWNlLCBzbyB0aG9zZQorICAgIHBhY2tldHMgYXJlIG5vdCBzZWVuIGJ5IHRjcGR1bXAuIFdpbGwgcmV2aXNpdCB0aGlzIGxpbWl0YXRpb24gaW4gYQorICAgIGZ1dHVyZSByZWxlYXNlLgorCitbMl0gSXB0YWJsZXMgb24gaW5ncmVzcyBpcyBsaW1pdGVkIHRvIE5GX0lORVRfUFJFX1JPVVRJTkcgb25seSB3aXRoIHNrYi0+ZGV2CisgICAgc2V0IHRvIHJlYWwgaW5ncmVzcyBkZXZpY2UgYW5kIGVncmVzcyBpcyBsaW1pdGVkIHRvIE5GX0lORVRfUE9TVF9ST1VUSU5HLgorICAgIFdpbGwgcmV2aXNpdCB0aGlzIGxpbWl0YXRpb24gaW4gYSBmdXR1cmUgcmVsZWFzZS4KKworCitTZXR1cAorLS0tLS0KKzEuIFZSRiBkZXZpY2UgaXMgY3JlYXRlZCB3aXRoIGFuIGFzc29jaWF0aW9uIHRvIGEgRklCIHRhYmxlLgorICAgZS5nLCBpcCBsaW5rIGFkZCB2cmYtYmx1ZSB0eXBlIHZyZiB0YWJsZSAxMAorICAgICAgICBpcCBsaW5rIHNldCBkZXYgdnJmLWJsdWUgdXAKKworMi4gUnVsZXMgYXJlIGFkZGVkIHRoYXQgc2VuZCBsb29rdXBzIHRvIHRoZSBhc3NvY2lhdGVkIEZJQiB0YWJsZSB3aGVuIHRoZQorICAgaWlmIG9yIG9pZiBpcyB0aGUgVlJGIGRldmljZS4gZS5nLiwKKyAgICAgICBpcCBydSBhZGQgb2lmIHZyZi1ibHVlIHRhYmxlIDEwCisgICAgICAgaXAgcnUgYWRkIGlpZiB2cmYtYmx1ZSB0YWJsZSAxMAorCisgICBTZXQgdGhlIGRlZmF1bHQgcm91dGUgZm9yIHRoZSB0YWJsZSAoYW5kIGhlbmNlIGRlZmF1bHQgcm91dGUgZm9yIHRoZSBWUkYpLgorICAgZS5nLCBpcCByb3V0ZSBhZGQgdGFibGUgMTAgcHJvaGliaXQgZGVmYXVsdAorCiszLiBFbnNsYXZlIEwzIGludGVyZmFjZXMgdG8gYSBWUkYgZGV2aWNlLgorICAgZS5nLCAgaXAgbGluayBzZXQgZGV2IGV0aDEgbWFzdGVyIHZyZi1ibHVlCisKKyAgIExvY2FsIGFuZCBjb25uZWN0ZWQgcm91dGVzIGZvciBlbnNsYXZlZCBkZXZpY2VzIGFyZSBhdXRvbWF0aWNhbGx5IG1vdmVkIHRvCisgICB0aGUgdGFibGUgYXNzb2NpYXRlZCB3aXRoIFZSRiBkZXZpY2UuIEFueSBhZGRpdGlvbmFsIHJvdXRlcyBkZXBlbmRpbmcgb24KKyAgIHRoZSBlbnNsYXZlZCBkZXZpY2Ugd2lsbCBuZWVkIHRvIGJlIHJlaW5zZXJ0ZWQgZm9sbG93aW5nIHRoZSBlbnNsYXZlbWVudC4KKworNC4gQWRkaXRpb25hbCBWUkYgcm91dGVzIGFyZSBhZGRlZCB0byBhc3NvY2lhdGVkIHRhYmxlLgorICAgZS5nLiwgaXAgcm91dGUgYWRkIHRhYmxlIDEwIC4uLgorCisKK0FwcGxpY2F0aW9ucworLS0tLS0tLS0tLS0tCitBcHBsaWNhdGlvbnMgdGhhdCBhcmUgdG8gd29yayB3aXRoaW4gYSBWUkYgbmVlZCB0byBiaW5kIHRoZWlyIHNvY2tldCB0byB0aGUKK1ZSRiBkZXZpY2U6CisKKyAgICBzZXRzb2Nrb3B0KHNkLCBTT0xfU09DS0VULCBTT19CSU5EVE9ERVZJQ0UsIGRldiwgc3RybGVuKGRldikrMSk7CisKK29yIHRvIHNwZWNpZnkgdGhlIG91dHB1dCBkZXZpY2UgdXNpbmcgY21zZyBhbmQgSVBfUEtUSU5GTy4KKworCitMaW1pdGF0aW9ucworLS0tLS0tLS0tLS0KK0luZGV4IG9mIG9yaWdpbmFsIGluZ3Jlc3MgaW50ZXJmYWNlIGlzIG5vdCBhdmFpbGFibGUgdmlhIGNtc2cuIFdpbGwgYWRkcmVzcworc29vbi4KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworVXNpbmcgaXByb3V0ZTIgZm9yIFZSRnMKKz09PT09PT09PT09PT09PT09PT09PT09CitWUkYgZGV2aWNlcyBkbyAqbm90KiBoYXZlIHRvIHN0YXJ0IHdpdGggJ3ZyZi0nLiBUaGF0IGlzIGEgY29udmVudGlvbiB1c2VkIGhlcmUKK2ZvciBlbXBoYXNpcyBvZiB0aGUgZGV2aWNlIHR5cGUsIHNpbWlsYXIgdG8gdXNlIG9mICdicicgaW4gYnJpZGdlIG5hbWVzLgorCisxLiBDcmVhdGUgYSBWUkYKKworICAgVG8gaW5zdGFudGlhdGUgYSBWUkYgZGV2aWNlIGFuZCBhc3NvY2lhdGUgaXQgd2l0aCBhIHRhYmxlOgorICAgICAgICQgaXAgbGluayBhZGQgZGV2IE5BTUUgdHlwZSB2cmYgdGFibGUgSUQKKworICAgUmVtZW1iZXIgdG8gYWRkIHRoZSBpcCBydWxlcyBhcyB3ZWxsOgorICAgICAgICQgaXAgcnUgYWRkIG9pZiBOQU1FIHRhYmxlIDEwCisgICAgICAgJCBpcCBydSBhZGQgaWlmIE5BTUUgdGFibGUgMTAKKyAgICAgICAkIGlwIC02IHJ1IGFkZCBvaWYgTkFNRSB0YWJsZSAxMAorICAgICAgICQgaXAgLTYgcnUgYWRkIGlpZiBOQU1FIHRhYmxlIDEwCisKKyAgIFdpdGhvdXQgdGhlIHJ1bGVzIHJvdXRlIGxvb2t1cHMgYXJlIG5vdCBkaXJlY3RlZCB0byB0aGUgdGFibGUuCisKKyAgIEZvciBleGFtcGxlOgorICAgJCBpcCBsaW5rIGFkZCBkZXYgdnJmLWJsdWUgdHlwZSB2cmYgdGFibGUgMTAKKyAgICQgaXAgcnUgYWRkIHByZWYgMjAwIG9pZiB2cmYtYmx1ZSB0YWJsZSAxMAorICAgJCBpcCBydSBhZGQgcHJlZiAyMDAgaWlmIHZyZi1ibHVlIHRhYmxlIDEwCisgICAkIGlwIC02IHJ1IGFkZCBwcmVmIDIwMCBvaWYgdnJmLWJsdWUgdGFibGUgMTAKKyAgICQgaXAgLTYgcnUgYWRkIHByZWYgMjAwIGlpZiB2cmYtYmx1ZSB0YWJsZSAxMAorCisKKzIuIExpc3QgVlJGcworCisgICBUbyBsaXN0IFZSRnMgdGhhdCBoYXZlIGJlZW4gY3JlYXRlZDoKKyAgICAgICAkIGlwIFstZF0gbGluayBzaG93IHR5cGUgdnJmCisgICAgICAgICBOT1RFOiBUaGUgLWQgb3B0aW9uIGlzIG5lZWRlZCB0byBzaG93IHRoZSB0YWJsZSBpZAorCisgICBGb3IgZXhhbXBsZToKKyAgICQgaXAgLWQgbGluayBzaG93IHR5cGUgdnJmCisgICAxMTogdnJmLW1nbXQ6IDxOT0FSUCxNQVNURVIsVVAsTE9XRVJfVVA+IG10dSAxNTAwIHFkaXNjIHBmaWZvX2Zhc3Qgc3RhdGUgVVAgbW9kZSBERUZBVUxUIGdyb3VwIGRlZmF1bHQgcWxlbiAxMDAwCisgICAgICAgbGluay9ldGhlciA3MjpiMzpiYTo5MTplMjoyNCBicmQgZmY6ZmY6ZmY6ZmY6ZmY6ZmYgcHJvbWlzY3VpdHkgMAorICAgICAgIHZyZiB0YWJsZSAxIGFkZHJnZW5tb2RlIGV1aTY0CisgICAxMjogdnJmLXJlZDogPE5PQVJQLE1BU1RFUixVUCxMT1dFUl9VUD4gbXR1IDE1MDAgcWRpc2MgcGZpZm9fZmFzdCBzdGF0ZSBVUCBtb2RlIERFRkFVTFQgZ3JvdXAgZGVmYXVsdCBxbGVuIDEwMDAKKyAgICAgICBsaW5rL2V0aGVyIGI2OjZmOjZlOmY2OmRhOjczIGJyZCBmZjpmZjpmZjpmZjpmZjpmZiBwcm9taXNjdWl0eSAwCisgICAgICAgdnJmIHRhYmxlIDEwIGFkZHJnZW5tb2RlIGV1aTY0CisgICAxMzogdnJmLWJsdWU6IDxOT0FSUCxNQVNURVIsVVAsTE9XRVJfVVA+IG10dSAxNTAwIHFkaXNjIHBmaWZvX2Zhc3Qgc3RhdGUgVVAgbW9kZSBERUZBVUxUIGdyb3VwIGRlZmF1bHQgcWxlbiAxMDAwCisgICAgICAgbGluay9ldGhlciAzNjo2MjplODo3ZDpiYjo4YyBicmQgZmY6ZmY6ZmY6ZmY6ZmY6ZmYgcHJvbWlzY3VpdHkgMAorICAgICAgIHZyZiB0YWJsZSA2NiBhZGRyZ2VubW9kZSBldWk2NAorICAgMTQ6IHZyZi1ncmVlbjogPE5PQVJQLE1BU1RFUixVUCxMT1dFUl9VUD4gbXR1IDE1MDAgcWRpc2MgcGZpZm9fZmFzdCBzdGF0ZSBVUCBtb2RlIERFRkFVTFQgZ3JvdXAgZGVmYXVsdCBxbGVuIDEwMDAKKyAgICAgICBsaW5rL2V0aGVyIGU2OjI4OmI4OjYzOjcwOmJiIGJyZCBmZjpmZjpmZjpmZjpmZjpmZiBwcm9taXNjdWl0eSAwCisgICAgICAgdnJmIHRhYmxlIDgxIGFkZHJnZW5tb2RlIGV1aTY0CisKKworICAgT3IgaW4gYnJpZWYgb3V0cHV0OgorCisgICAkIGlwIC1iciBsaW5rIHNob3cgdHlwZSB2cmYKKyAgIHZyZi1tZ210ICAgICAgICAgVVAgICAgICAgICAgICAgNzI6YjM6YmE6OTE6ZTI6MjQgPE5PQVJQLE1BU1RFUixVUCxMT1dFUl9VUD4KKyAgIHZyZi1yZWQgICAgICAgICAgVVAgICAgICAgICAgICAgYjY6NmY6NmU6ZjY6ZGE6NzMgPE5PQVJQLE1BU1RFUixVUCxMT1dFUl9VUD4KKyAgIHZyZi1ibHVlICAgICAgICAgVVAgICAgICAgICAgICAgMzY6NjI6ZTg6N2Q6YmI6OGMgPE5PQVJQLE1BU1RFUixVUCxMT1dFUl9VUD4KKyAgIHZyZi1ncmVlbiAgICAgICAgVVAgICAgICAgICAgICAgZTY6Mjg6Yjg6NjM6NzA6YmIgPE5PQVJQLE1BU1RFUixVUCxMT1dFUl9VUD4KKworCiszLiBBc3NpZ24gYSBOZXR3b3JrIEludGVyZmFjZSB0byBhIFZSRgorCisgICBOZXR3b3JrIGludGVyZmFjZXMgYXJlIGFzc2lnbmVkIHRvIGEgVlJGIGJ5IGVuc2xhdmluZyB0aGUgbmV0ZGV2aWNlIHRvIGEKKyAgIFZSRiBkZXZpY2U6CisgICAgICAgJCBpcCBsaW5rIHNldCBkZXYgTkFNRSBtYXN0ZXIgVlJGLU5BTUUKKworICAgT24gZW5zbGF2ZW1lbnQgY29ubmVjdGVkIGFuZCBsb2NhbCByb3V0ZXMgYXJlIGF1dG9tYXRpY2FsbHkgbW92ZWQgdG8gdGhlCisgICB0YWJsZSBhc3NvY2lhdGVkIHdpdGggdGhlIFZSRiBkZXZpY2UuCisKKyAgIEZvciBleGFtcGxlOgorICAgJCBpcCBsaW5rIHNldCBkZXYgZXRoMCBtYXN0ZXIgdnJmLW1nbXQKKworCis0LiBTaG93IERldmljZXMgQXNzaWduZWQgdG8gYSBWUkYKKworICAgVG8gc2hvdyBkZXZpY2VzIHRoYXQgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGEgc3BlY2lmaWMgVlJGIGFkZCB0aGUgbWFzdGVyCisgICBvcHRpb24gdG8gdGhlIGlwIGNvbW1hbmQ6CisgICAgICAgJCBpcCBsaW5rIHNob3cgbWFzdGVyIFZSRi1OQU1FCisKKyAgIEZvciBleGFtcGxlOgorICAgJCBpcCBsaW5rIHNob3cgbWFzdGVyIHZyZi1yZWQKKyAgIDM6IGV0aDE6IDxCUk9BRENBU1QsTVVMVElDQVNULFVQLExPV0VSX1VQPiBtdHUgMTUwMCBxZGlzYyBwZmlmb19mYXN0IG1hc3RlciB2cmYtcmVkIHN0YXRlIFVQIG1vZGUgREVGQVVMVCBncm91cCBkZWZhdWx0IHFsZW4gMTAwMAorICAgICAgIGxpbmsvZXRoZXIgMDI6MDA6MDA6MDA6MDI6MDIgYnJkIGZmOmZmOmZmOmZmOmZmOmZmCisgICA0OiBldGgyOiA8QlJPQURDQVNULE1VTFRJQ0FTVCxVUCxMT1dFUl9VUD4gbXR1IDE1MDAgcWRpc2MgcGZpZm9fZmFzdCBtYXN0ZXIgdnJmLXJlZCBzdGF0ZSBVUCBtb2RlIERFRkFVTFQgZ3JvdXAgZGVmYXVsdCBxbGVuIDEwMDAKKyAgICAgICBsaW5rL2V0aGVyIDAyOjAwOjAwOjAwOjAyOjAzIGJyZCBmZjpmZjpmZjpmZjpmZjpmZgorICAgNzogZXRoNTogPEJST0FEQ0FTVCxNVUxUSUNBU1Q+IG10dSAxNTAwIHFkaXNjIG5vb3AgbWFzdGVyIHZyZi1yZWQgc3RhdGUgRE9XTiBtb2RlIERFRkFVTFQgZ3JvdXAgZGVmYXVsdCBxbGVuIDEwMDAKKyAgICAgICBsaW5rL2V0aGVyIDAyOjAwOjAwOjAwOjAyOjA2IGJyZCBmZjpmZjpmZjpmZjpmZjpmZgorCisKKyAgIE9yIHVzaW5nIHRoZSBicmllZiBvdXRwdXQ6CisgICAkIGlwIC1iciBsaW5rIHNob3cgbWFzdGVyIHZyZi1yZWQKKyAgIGV0aDEgICAgICAgICAgICAgVVAgICAgICAgICAgICAgMDI6MDA6MDA6MDA6MDI6MDIgPEJST0FEQ0FTVCxNVUxUSUNBU1QsVVAsTE9XRVJfVVA+CisgICBldGgyICAgICAgICAgICAgIFVQICAgICAgICAgICAgIDAyOjAwOjAwOjAwOjAyOjAzIDxCUk9BRENBU1QsTVVMVElDQVNULFVQLExPV0VSX1VQPgorICAgZXRoNSAgICAgICAgICAgICBET1dOICAgICAgICAgICAwMjowMDowMDowMDowMjowNiA8QlJPQURDQVNULE1VTFRJQ0FTVD4KKworCis1LiBTaG93IE5laWdoYm9yIEVudHJpZXMgZm9yIGEgVlJGCisKKyAgIFRvIGxpc3QgbmVpZ2hib3IgZW50cmllcyBhc3NvY2lhdGVkIHdpdGggZGV2aWNlcyBlbnNsYXZlZCB0byBhIFZSRiBkZXZpY2UKKyAgIGFkZCB0aGUgbWFzdGVyIG9wdGlvbiB0byB0aGUgaXAgY29tbWFuZDoKKyAgICAgICAkIGlwIFstNl0gbmVpZ2ggc2hvdyBtYXN0ZXIgVlJGLU5BTUUKKworICAgRm9yIGV4YW1wbGU6CisgICAkICBpcCBuZWlnaCBzaG93IG1hc3RlciB2cmYtcmVkCisgICAxMC4yLjEuMjU0IGRldiBldGgxIGxsYWRkciBhNjpkOTpjNzo0ZjowNjoyMyBSRUFDSEFCTEUKKyAgIDEwLjIuMi4yNTQgZGV2IGV0aDIgbGxhZGRyIDVlOjU0OjAxOjZhOmVlOjgwIFJFQUNIQUJMRQorCisgICAgJCBpcCAtNiBuZWlnaCBzaG93IG1hc3RlciB2cmYtcmVkCisgICAgMjAwMjoxOjo2NCBkZXYgZXRoMSBsbGFkZHIgYTY6ZDk6Yzc6NGY6MDY6MjMgUkVBQ0hBQkxFCisKKworNi4gU2hvdyBBZGRyZXNzZXMgZm9yIGEgVlJGCisKKyAgIFRvIHNob3cgYWRkcmVzc2VzIGZvciBpbnRlcmZhY2VzIGFzc29jaWF0ZWQgd2l0aCBhIFZSRiBhZGQgdGhlIG1hc3RlcgorICAgb3B0aW9uIHRvIHRoZSBpcCBjb21tYW5kOgorICAgICAgICQgaXAgYWRkciBzaG93IG1hc3RlciBWUkYtTkFNRQorCisgICBGb3IgZXhhbXBsZToKKyAgICQgaXAgYWRkciBzaG93IG1hc3RlciB2cmYtcmVkCisgICAzOiBldGgxOiA8QlJPQURDQVNULE1VTFRJQ0FTVCxVUCxMT1dFUl9VUD4gbXR1IDE1MDAgcWRpc2MgcGZpZm9fZmFzdCBtYXN0ZXIgdnJmLXJlZCBzdGF0ZSBVUCBncm91cCBkZWZhdWx0IHFsZW4gMTAwMAorICAgICAgIGxpbmsvZXRoZXIgMDI6MDA6MDA6MDA6MDI6MDIgYnJkIGZmOmZmOmZmOmZmOmZmOmZmCisgICAgICAgaW5ldCAxMC4yLjEuMi8yNCBicmQgMTAuMi4xLjI1NSBzY29wZSBnbG9iYWwgZXRoMQorICAgICAgICAgIHZhbGlkX2xmdCBmb3JldmVyIHByZWZlcnJlZF9sZnQgZm9yZXZlcgorICAgICAgIGluZXQ2IDIwMDI6MTo6Mi8xMjAgc2NvcGUgZ2xvYmFsCisgICAgICAgICAgdmFsaWRfbGZ0IGZvcmV2ZXIgcHJlZmVycmVkX2xmdCBmb3JldmVyCisgICAgICAgaW5ldDYgZmU4MDo6ZmY6ZmUwMDoyMDIvNjQgc2NvcGUgbGluaworICAgICAgICAgIHZhbGlkX2xmdCBmb3JldmVyIHByZWZlcnJlZF9sZnQgZm9yZXZlcgorICAgNDogZXRoMjogPEJST0FEQ0FTVCxNVUxUSUNBU1QsVVAsTE9XRVJfVVA+IG10dSAxNTAwIHFkaXNjIHBmaWZvX2Zhc3QgbWFzdGVyIHZyZi1yZWQgc3RhdGUgVVAgZ3JvdXAgZGVmYXVsdCBxbGVuIDEwMDAKKyAgICAgICBsaW5rL2V0aGVyIDAyOjAwOjAwOjAwOjAyOjAzIGJyZCBmZjpmZjpmZjpmZjpmZjpmZgorICAgICAgIGluZXQgMTAuMi4yLjIvMjQgYnJkIDEwLjIuMi4yNTUgc2NvcGUgZ2xvYmFsIGV0aDIKKyAgICAgICAgICB2YWxpZF9sZnQgZm9yZXZlciBwcmVmZXJyZWRfbGZ0IGZvcmV2ZXIKKyAgICAgICBpbmV0NiAyMDAyOjI6OjIvMTIwIHNjb3BlIGdsb2JhbAorICAgICAgICAgIHZhbGlkX2xmdCBmb3JldmVyIHByZWZlcnJlZF9sZnQgZm9yZXZlcgorICAgICAgIGluZXQ2IGZlODA6OmZmOmZlMDA6MjAzLzY0IHNjb3BlIGxpbmsKKyAgICAgICAgICB2YWxpZF9sZnQgZm9yZXZlciBwcmVmZXJyZWRfbGZ0IGZvcmV2ZXIKKyAgIDc6IGV0aDU6IDxCUk9BRENBU1QsTVVMVElDQVNUPiBtdHUgMTUwMCBxZGlzYyBub29wIG1hc3RlciB2cmYtcmVkIHN0YXRlIERPV04gZ3JvdXAgZGVmYXVsdCBxbGVuIDEwMDAKKyAgICAgICBsaW5rL2V0aGVyIDAyOjAwOjAwOjAwOjAyOjA2IGJyZCBmZjpmZjpmZjpmZjpmZjpmZgorCisgICBPciBpbiBicmllZiBmb3JtYXQ6CisgICAkIGlwIC1iciBhZGRyIHNob3cgbWFzdGVyIHZyZi1yZWQKKyAgIGV0aDEgICAgICAgICAgICAgVVAgICAgICAgICAgICAgMTAuMi4xLjIvMjQgMjAwMjoxOjoyLzEyMCBmZTgwOjpmZjpmZTAwOjIwMi82NAorICAgZXRoMiAgICAgICAgICAgICBVUCAgICAgICAgICAgICAxMC4yLjIuMi8yNCAyMDAyOjI6OjIvMTIwIGZlODA6OmZmOmZlMDA6MjAzLzY0CisgICBldGg1ICAgICAgICAgICAgIERPV04KKworCis3LiBTaG93IFJvdXRlcyBmb3IgYSBWUkYKKworICAgVG8gc2hvdyByb3V0ZXMgZm9yIGEgVlJGIHVzZSB0aGUgaXAgY29tbWFuZCB0byBkaXNwbGF5IHRoZSB0YWJsZSBhc3NvY2lhdGVkCisgICB3aXRoIHRoZSBWUkYgZGV2aWNlOgorICAgICAgICQgaXAgWy02XSByb3V0ZSBzaG93IHRhYmxlIElECisKKyAgIEZvciBleGFtcGxlOgorICAgJCBpcCByb3V0ZSBzaG93IHRhYmxlIHZyZi1yZWQKKyAgIHByb2hpYml0IGRlZmF1bHQKKyAgIGJyb2FkY2FzdCAxMC4yLjEuMCBkZXYgZXRoMSAgcHJvdG8ga2VybmVsICBzY29wZSBsaW5rICBzcmMgMTAuMi4xLjIKKyAgIDEwLjIuMS4wLzI0IGRldiBldGgxICBwcm90byBrZXJuZWwgIHNjb3BlIGxpbmsgIHNyYyAxMC4yLjEuMgorICAgbG9jYWwgMTAuMi4xLjIgZGV2IGV0aDEgIHByb3RvIGtlcm5lbCAgc2NvcGUgaG9zdCAgc3JjIDEwLjIuMS4yCisgICBicm9hZGNhc3QgMTAuMi4xLjI1NSBkZXYgZXRoMSAgcHJvdG8ga2VybmVsICBzY29wZSBsaW5rICBzcmMgMTAuMi4xLjIKKyAgIGJyb2FkY2FzdCAxMC4yLjIuMCBkZXYgZXRoMiAgcHJvdG8ga2VybmVsICBzY29wZSBsaW5rICBzcmMgMTAuMi4yLjIKKyAgIDEwLjIuMi4wLzI0IGRldiBldGgyICBwcm90byBrZXJuZWwgIHNjb3BlIGxpbmsgIHNyYyAxMC4yLjIuMgorICAgbG9jYWwgMTAuMi4yLjIgZGV2IGV0aDIgIHByb3RvIGtlcm5lbCAgc2NvcGUgaG9zdCAgc3JjIDEwLjIuMi4yCisgICBicm9hZGNhc3QgMTAuMi4yLjI1NSBkZXYgZXRoMiAgcHJvdG8ga2VybmVsICBzY29wZSBsaW5rICBzcmMgMTAuMi4yLjIKKworICAgJCBpcCAtNiByb3V0ZSBzaG93IHRhYmxlIHZyZi1yZWQKKyAgIGxvY2FsIDIwMDI6MTo6IGRldiBsbyAgcHJvdG8gbm9uZSAgbWV0cmljIDAgIHByZWYgbWVkaXVtCisgICBsb2NhbCAyMDAyOjE6OjIgZGV2IGxvICBwcm90byBub25lICBtZXRyaWMgMCAgcHJlZiBtZWRpdW0KKyAgIDIwMDI6MTo6LzEyMCBkZXYgZXRoMSAgcHJvdG8ga2VybmVsICBtZXRyaWMgMjU2ICBwcmVmIG1lZGl1bQorICAgbG9jYWwgMjAwMjoyOjogZGV2IGxvICBwcm90byBub25lICBtZXRyaWMgMCAgcHJlZiBtZWRpdW0KKyAgIGxvY2FsIDIwMDI6Mjo6MiBkZXYgbG8gIHByb3RvIG5vbmUgIG1ldHJpYyAwICBwcmVmIG1lZGl1bQorICAgMjAwMjoyOjovMTIwIGRldiBldGgyICBwcm90byBrZXJuZWwgIG1ldHJpYyAyNTYgIHByZWYgbWVkaXVtCisgICBsb2NhbCBmZTgwOjogZGV2IGxvICBwcm90byBub25lICBtZXRyaWMgMCAgcHJlZiBtZWRpdW0KKyAgIGxvY2FsIGZlODA6OiBkZXYgbG8gIHByb3RvIG5vbmUgIG1ldHJpYyAwICBwcmVmIG1lZGl1bQorICAgbG9jYWwgZmU4MDo6ZmY6ZmUwMDoyMDIgZGV2IGxvICBwcm90byBub25lICBtZXRyaWMgMCAgcHJlZiBtZWRpdW0KKyAgIGxvY2FsIGZlODA6OmZmOmZlMDA6MjAzIGRldiBsbyAgcHJvdG8gbm9uZSAgbWV0cmljIDAgIHByZWYgbWVkaXVtCisgICBmZTgwOjovNjQgZGV2IGV0aDEgIHByb3RvIGtlcm5lbCAgbWV0cmljIDI1NiAgcHJlZiBtZWRpdW0KKyAgIGZlODA6Oi82NCBkZXYgZXRoMiAgcHJvdG8ga2VybmVsICBtZXRyaWMgMjU2ICBwcmVmIG1lZGl1bQorICAgZmYwMDo6LzggZGV2IHZyZi1yZWQgIG1ldHJpYyAyNTYgIHByZWYgbWVkaXVtCisgICBmZjAwOjovOCBkZXYgZXRoMSAgbWV0cmljIDI1NiAgcHJlZiBtZWRpdW0KKyAgIGZmMDA6Oi84IGRldiBldGgyICBtZXRyaWMgMjU2ICBwcmVmIG1lZGl1bQorCisKKzguIFJvdXRlIExvb2t1cCBmb3IgYSBWUkYKKworICAgQSB0ZXN0IHJvdXRlIGxvb2t1cCBjYW4gYmUgZG9uZSBmb3IgYSBWUkYgYnkgYWRkaW5nIHRoZSBvaWYgb3B0aW9uIHRvIGlwOgorICAgICAgICQgaXAgWy02XSByb3V0ZSBnZXQgb2lmIFZSRi1OQU1FIEFERFJFU1MKKworICAgRm9yIGV4YW1wbGU6CisgICAkIGlwIHJvdXRlIGdldCAxMC4yLjEuNDAgb2lmIHZyZi1yZWQKKyAgIDEwLjIuMS40MCBkZXYgZXRoMSAgdGFibGUgdnJmLXJlZCAgc3JjIDEwLjIuMS4yCisgICAgICAgY2FjaGUKKworICAgJCBpcCAtNiByb3V0ZSBnZXQgMjAwMjoxOjozMiBvaWYgdnJmLXJlZAorICAgMjAwMjoxOjozMiBmcm9tIDo6IGRldiBldGgxICB0YWJsZSB2cmYtcmVkICBwcm90byBrZXJuZWwgIHNyYyAyMDAyOjE6OjIgIG1ldHJpYyAyNTYgIHByZWYgbWVkaXVtCisKKworOS4gUmVtb3ZpbmcgTmV0d29yayBJbnRlcmZhY2UgZnJvbSBhIFZSRgorCisgICBOZXR3b3JrIGludGVyZmFjZXMgYXJlIHJlbW92ZWQgZnJvbSBhIFZSRiBieSBicmVha2luZyB0aGUgZW5zbGF2ZW1lbnQgdG8KKyAgIHRoZSBWUkYgZGV2aWNlOgorICAgICAgICQgaXAgbGluayBzZXQgZGV2IE5BTUUgbm9tYXN0ZXIKKworICAgQ29ubmVjdGVkIHJvdXRlcyBhcmUgbW92ZWQgYmFjayB0byB0aGUgZGVmYXVsdCB0YWJsZSBhbmQgbG9jYWwgZW50cmllcyBhcmUKKyAgIG1vdmVkIHRvIHRoZSBsb2NhbCB0YWJsZS4KKworICAgRm9yIGV4YW1wbGU6CisgICAkIGlwIGxpbmsgc2V0IGRldiBldGgwIG5vbWFzdGVyCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvbW1hbmRzIHVzZWQgaW4gdGhpcyBleGFtcGxlOgorCitjYXQgPj4gL2V0Yy9pcHJvdXRlMi9ydF90YWJsZXMgPDxFT0YKKzEgIHZyZi1tZ210CisxMCB2cmYtcmVkCis2NiB2cmYtYmx1ZQorODEgdnJmLWdyZWVuCitFT0YKKworZnVuY3Rpb24gdnJmX2NyZWF0ZQoreworICAgIFZSRj0kMQorICAgIFRCSUQ9JDIKKyAgICAjIGNyZWF0ZSBWUkYgZGV2aWNlCisgICAgaXAgbGluayBhZGQgdnJmLSR7VlJGfSB0eXBlIHZyZiB0YWJsZSAke1RCSUR9CisKKyAgICAjIGFkZCBydWxlcyB0aGF0IGRpcmVjdCBsb29rdXBzIHRvIHZyZiB0YWJsZQorICAgIGlwIHJ1IGFkZCBwcmVmIDIwMCBvaWYgdnJmLSR7VlJGfSB0YWJsZSAke1RCSUR9CisgICAgaXAgcnUgYWRkIHByZWYgMjAwIGlpZiB2cmYtJHtWUkZ9IHRhYmxlICR7VEJJRH0KKyAgICBpcCAtNiBydSBhZGQgcHJlZiAyMDAgb2lmIHZyZi0ke1ZSRn0gdGFibGUgJHtUQklEfQorICAgIGlwIC02IHJ1IGFkZCBwcmVmIDIwMCBpaWYgdnJmLSR7VlJGfSB0YWJsZSAke1RCSUR9CisKKyAgICBpZiBbICIke1ZSRn0iICE9ICJtZ210IiBdOyB0aGVuCisgICAgICAgIGlwIHJvdXRlIGFkZCB0YWJsZSAke1RCSUR9IHByb2hpYml0IGRlZmF1bHQKKyAgICBmaQorICAgIGlwIGxpbmsgc2V0IGRldiB2cmYtJHtWUkZ9IHVwCisgICAgaXAgbGluayBzZXQgZGV2IHZyZi0ke1ZSRn0gc3RhdGUgdXAKK30KKwordnJmX2NyZWF0ZSBtZ210IDEKK2lwIGxpbmsgc2V0IGRldiBldGgwIG1hc3RlciB2cmYtbWdtdAorCit2cmZfY3JlYXRlIHJlZCAxMAoraXAgbGluayBzZXQgZGV2IGV0aDEgbWFzdGVyIHZyZi1yZWQKK2lwIGxpbmsgc2V0IGRldiBldGgyIG1hc3RlciB2cmYtcmVkCitpcCBsaW5rIHNldCBkZXYgZXRoNSBtYXN0ZXIgdnJmLXJlZAorCit2cmZfY3JlYXRlIGJsdWUgNjYKK2lwIGxpbmsgc2V0IGRldiBldGgzIG1hc3RlciB2cmYtYmx1ZQorCit2cmZfY3JlYXRlIGdyZWVuIDgxCitpcCBsaW5rIHNldCBkZXYgZXRoNCBtYXN0ZXIgdnJmLWdyZWVuCisKKworSW50ZXJmYWNlIGFkZHJlc3NlcyBmcm9tIC9ldGMvbmV0d29yay9pbnRlcmZhY2VzOgorYXV0byBldGgwCitpZmFjZSBldGgwIGluZXQgc3RhdGljCisgICAgICBhZGRyZXNzIDEwLjAuMC4yCisgICAgICBuZXRtYXNrIDI1NS4yNTUuMjU1LjAKKyAgICAgIGdhdGV3YXkgMTAuMC4wLjI1NAorCitpZmFjZSBldGgwIGluZXQ2IHN0YXRpYworICAgICAgYWRkcmVzcyAyMDAwOjE6OjIKKyAgICAgIG5ldG1hc2sgMTIwCisKK2F1dG8gZXRoMQoraWZhY2UgZXRoMSBpbmV0IHN0YXRpYworICAgICAgYWRkcmVzcyAxMC4yLjEuMgorICAgICAgbmV0bWFzayAyNTUuMjU1LjI1NS4wCisKK2lmYWNlIGV0aDEgaW5ldDYgc3RhdGljCisgICAgICBhZGRyZXNzIDIwMDI6MTo6MgorICAgICAgbmV0bWFzayAxMjAKKworYXV0byBldGgyCitpZmFjZSBldGgyIGluZXQgc3RhdGljCisgICAgICBhZGRyZXNzIDEwLjIuMi4yCisgICAgICBuZXRtYXNrIDI1NS4yNTUuMjU1LjAKKworaWZhY2UgZXRoMiBpbmV0NiBzdGF0aWMKKyAgICAgIGFkZHJlc3MgMjAwMjoyOjoyCisgICAgICBuZXRtYXNrIDEyMAorCithdXRvIGV0aDMKK2lmYWNlIGV0aDMgaW5ldCBzdGF0aWMKKyAgICAgIGFkZHJlc3MgMTAuMi4zLjIKKyAgICAgIG5ldG1hc2sgMjU1LjI1NS4yNTUuMAorCitpZmFjZSBldGgzIGluZXQ2IHN0YXRpYworICAgICAgYWRkcmVzcyAyMDAyOjM6OjIKKyAgICAgIG5ldG1hc2sgMTIwCisKK2F1dG8gZXRoNAoraWZhY2UgZXRoNCBpbmV0IHN0YXRpYworICAgICAgYWRkcmVzcyAxMC4yLjQuMgorICAgICAgbmV0bWFzayAyNTUuMjU1LjI1NS4wCisKK2lmYWNlIGV0aDQgaW5ldDYgc3RhdGljCisgICAgICBhZGRyZXNzIDIwMDI6NDo6MgorICAgICAgbmV0bWFzayAxMjAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy92eGdlLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy92eGdlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYmZlYzI0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3Z4Z2UudHh0CkBAIC0wLDAgKzEsOTMgQEAKK05ldGVyaW9uJ3MgKEZvcm1lcmx5IFMyaW8pIFgzMTAwIFNlcmllcyAxMEdiRSBQQ0llIFNlcnZlciBBZGFwdGVyIExpbnV4IGRyaXZlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0NvbnRlbnRzCistLS0tLS0tLQorCisxKSBJbnRyb2R1Y3Rpb24KKzIpIEZlYXR1cmVzIHN1cHBvcnRlZAorMykgQ29uZmlndXJhYmxlIGRyaXZlciBwYXJhbWV0ZXJzCis0KSBUcm91Ymxlc2hvb3RpbmcKKworMSkgSW50cm9kdWN0aW9uOgorLS0tLS0tLS0tLS0tLS0tLQorVGhpcyBMaW51eCBkcml2ZXIgc3VwcG9ydHMgYWxsIE5ldGVyaW9uJ3MgWDMxMDAgc2VyaWVzIDEwIEdiRSBQQ0llIEkvTworVmlydHVhbGl6ZWQgU2VydmVyIGFkYXB0ZXJzLgorVGhlIFgzMTAwIHNlcmllcyBzdXBwb3J0cyBmb3VyIG1vZGVzIG9mIG9wZXJhdGlvbiwgY29uZmlndXJhYmxlIHZpYQorZmlybXdhcmUgLQorCVNpbmdsZSBmdW5jdGlvbiBtb2RlCisJTXVsdGkgZnVuY3Rpb24gbW9kZQorCVNSSU9WIG1vZGUKKwlNUklPViBtb2RlCitUaGUgZnVuY3Rpb25zIHNoYXJlIGEgMTBHYkUgbGluayBhbmQgdGhlIHBjaS1lIGJ1cywgYnV0IGhhcmRseSBhbnl0aGluZyBlbHNlCitpbnNpZGUgdGhlIEFTSUMuIEZlYXR1cmVzIGxpa2UgaW5kZXBlbmRlbnQgaHcgcmVzZXQsIHN0YXRpc3RpY3MsIGJhbmR3aWR0aC8KK3ByaW9yaXR5IGFsbG9jYXRpb24gYW5kIGd1YXJhbnRlZXMsIEdSTywgVFNPLCBpbnRlcnJ1cHQgbW9kZXJhdGlvbiBldGMgYXJlCitzdXBwb3J0ZWQgaW5kZXBlbmRlbnRseSBvbiBlYWNoIGZ1bmN0aW9uLgorCisoU2VlIGJlbG93IGZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgZmVhdHVyZXMgc3VwcG9ydGVkIGZvciBib3RoIElQdjQgYW5kIElQdjYpCisKKzIpIEZlYXR1cmVzIHN1cHBvcnRlZDoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaSkgICBTaW5nbGUgZnVuY3Rpb24gbW9kZSAodXAgdG8gMTcgcXVldWVzKQorCitpaSkgIE11bHRpIGZ1bmN0aW9uIG1vZGUgKHVwIHRvIDE3IGZ1bmN0aW9ucykKKworaWlpKSBQQ0ktU0lHJ3MgSS9PIFZpcnR1YWxpemF0aW9uCisgICAgICAgLSBTaW5nbGUgUm9vdCBtb2RlOiB2MS4wICh1cCB0byAxNyBmdW5jdGlvbnMpCisgICAgICAgLSBNdWx0aS1Sb290IG1vZGU6IHYxLjAgKHVwIHRvIDE3IGZ1bmN0aW9ucykKKworaXYpICBKdW1ibyBmcmFtZXMKKyAgICAgICBYMzEwMCBTZXJpZXMgc3VwcG9ydHMgTVRVIHVwIHRvIDk2MDAgYnl0ZXMsIG1vZGlmaWFibGUgdXNpbmcKKyAgICAgICBpcCBjb21tYW5kLgorCit2KSAgIE9mZmxvYWRzIHN1cHBvcnRlZDogKEVuYWJsZWQgYnkgZGVmYXVsdCkKKyAgICAgICBDaGVja3N1bSBvZmZsb2FkIChUQ1AvVURQL0lQKSBvbiB0cmFuc21pdCBhbmQgcmVjZWl2ZSBwYXRocworICAgICAgIFRDUCBTZWdtZW50YXRpb24gT2ZmbG9hZCAoVFNPKSBvbiB0cmFuc21pdCBwYXRoCisgICAgICAgR2VuZXJpYyBSZWNlaXZlIE9mZmxvYWQgKEdSTykgb24gcmVjZWl2ZSBwYXRoCisKK3ZpKSAgTVNJLVg6IChFbmFibGVkIGJ5IGRlZmF1bHQpCisgICAgICAgUmVzdWx0aW5nIGluIG5vdGljZWFibGUgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgKHVwIHRvIDclIG9uIGNlcnRhaW4KKyAgICAgICBwbGF0Zm9ybXMpLgorCit2aWkpIE5BUEk6IChFbmFibGVkIGJ5IGRlZmF1bHQpCisgICAgICAgRm9yIGJldHRlciBSeCBpbnRlcnJ1cHQgbW9kZXJhdGlvbi4KKwordmlpaSlSVEggKFJlY2VpdmUgVHJhZmZpYyBIYXNoKTogKEVuYWJsZWQgYnkgZGVmYXVsdCkKKyAgICAgICBSZWNlaXZlIHNpZGUgc3RlZXJpbmcgZm9yIGJldHRlciBzY2FsaW5nLgorCitpeCkgIFN0YXRpc3RpY3MKKyAgICAgICBDb21wcmVoZW5zaXZlIE1BQy1sZXZlbCBhbmQgc29mdHdhcmUgc3RhdGlzdGljcyBkaXNwbGF5ZWQgdXNpbmcKKyAgICAgICAiZXRodG9vbCAtUyIgb3B0aW9uLgorCit4KSAgIE11bHRpcGxlIGhhcmR3YXJlIHF1ZXVlczogKEVuYWJsZWQgYnkgZGVmYXVsdCkKKyAgICAgICBVcCB0byAxNyBoYXJkd2FyZSBiYXNlZCB0cmFuc21pdCBhbmQgcmVjZWl2ZSBkYXRhIGNoYW5uZWxzLCB3aXRoCisgICAgICAgbXVsdGlwbGUgc3RlZXJpbmcgb3B0aW9ucyAodHJhbnNtaXQgbXVsdGlxdWV1ZSBlbmFibGVkIGJ5IGRlZmF1bHQpLgorCiszKSBDb25maWd1cmFibGUgZHJpdmVyIHBhcmFtZXRlcnM6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2kpICBtYXhfY29uZmlnX2RldgorICAgICAgIFNwZWNpZmllcyBtYXhpbXVtIGRldmljZSBmdW5jdGlvbnMgdG8gYmUgZW5hYmxlZC4KKyAgICAgICBWYWxpZCByYW5nZTogMS04CisKK2lpKSBtYXhfY29uZmlnX3BvcnQKKyAgICAgICBTcGVjaWZpZXMgbnVtYmVyIG9mIHBvcnRzIHRvIGJlIGVuYWJsZWQuCisgICAgICAgVmFsaWQgcmFuZ2U6IDEsMgorICAgICAgIERlZmF1bHQ6IDEKKworaWlpKW1heF9jb25maWdfdnBhdGgKKyAgICAgICBTcGVjaWZpZXMgbWF4aW11bSBWUEFUSChzKSBjb25maWd1cmVkIGZvciBlYWNoIGRldmljZSBmdW5jdGlvbi4KKyAgICAgICBWYWxpZCByYW5nZTogMS0xNworCitpdikgdmxhbl90YWdfc3RyaXAKKyAgICAgICBFbmFibGVzL2Rpc2FibGVzIHZsYW4gdGFnIHN0cmlwcGluZyBmcm9tIGFsbCByZWNlaXZlZCB0YWdnZWQgZnJhbWVzIHRoYXQKKyAgICAgICBhcmUgbm90IHJlcGxpY2F0ZWQgYXQgdGhlIGludGVybmFsIEwyIHN3aXRjaC4KKyAgICAgICBWYWxpZCByYW5nZTogMCwxIChkaXNhYmxlZCwgZW5hYmxlZCByZXNwZWN0aXZlbHkpCisgICAgICAgRGVmYXVsdDogMQorCit2KSAgYWRkcl9sZWFybl9lbgorICAgICAgIEVuYWJsZSBsZWFybmluZyB0aGUgbWFjIGFkZHJlc3Mgb2YgdGhlIGd1ZXN0IE9TIGludGVyZmFjZSBpbgorICAgICAgIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50LgorICAgICAgIFZhbGlkIHJhbmdlOiAwLDEgKGRpc2FibGVkLCBlbmFibGVkIHJlc3BlY3RpdmVseSkKKyAgICAgICBEZWZhdWx0OiAwCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdnhsYW4udHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3Z4bGFuLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjhmNDk4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3Z4bGFuLnR4dApAQCAtMCwwICsxLDUxIEBACitWaXJ0dWFsIGVYdGVuc2libGUgTG9jYWwgQXJlYSBOZXR3b3JraW5nIGRvY3VtZW50YXRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgVlhMQU4gcHJvdG9jb2wgaXMgYSB0dW5uZWxsaW5nIHByb3RvY29sIGRlc2lnbmVkIHRvIHNvbHZlIHRoZQorcHJvYmxlbSBvZiBsaW1pdGVkIFZMQU4gSURzICg0MDk2KSBpbiBJRUVFIDgwMi4xcS4gIFdpdGggVlhMQU4gdGhlCitzaXplIG9mIHRoZSBpZGVudGlmaWVyIGlzIGV4cGFuZGVkIHRvIDI0IGJpdHMgKDE2Nzc3MjE2KS4KKworVlhMQU4gaXMgZGVzY3JpYmVkIGJ5IElFVEYgUkZDIDczNDgsIGFuZCBoYXMgYmVlbiBpbXBsZW1lbnRlZCBieSBhCitudW1iZXIgb2YgdmVuZG9ycy4gIFRoZSBwcm90b2NvbCBydW5zIG92ZXIgVURQIHVzaW5nIGEgc2luZ2xlCitkZXN0aW5hdGlvbiBwb3J0LiAgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIExpbnV4IGtlcm5lbCB0dW5uZWwKK2RldmljZSwgdGhlcmUgaXMgYWxzbyBhIHNlcGFyYXRlIGltcGxlbWVudGF0aW9uIG9mIFZYTEFOIGZvcgorT3BlbnZzd2l0Y2guCisKK1VubGlrZSBtb3N0IHR1bm5lbHMsIGEgVlhMQU4gaXMgYSAxIHRvIE4gbmV0d29yaywgbm90IGp1c3QgcG9pbnQgdG8KK3BvaW50LiBBIFZYTEFOIGRldmljZSBjYW4gbGVhcm4gdGhlIElQIGFkZHJlc3Mgb2YgdGhlIG90aGVyIGVuZHBvaW50CitlaXRoZXIgZHluYW1pY2FsbHkgaW4gYSBtYW5uZXIgc2ltaWxhciB0byBhIGxlYXJuaW5nIGJyaWRnZSwgb3IgbWFrZQordXNlIG9mIHN0YXRpY2FsbHktY29uZmlndXJlZCBmb3J3YXJkaW5nIGVudHJpZXMuCisKK1RoZSBtYW5hZ2VtZW50IG9mIHZ4bGFuIGlzIGRvbmUgaW4gYSBtYW5uZXIgc2ltaWxhciB0byBpdHMgdHdvIGNsb3Nlc3QKK25laWdoYm9ycyBHUkUgYW5kIFZMQU4uIENvbmZpZ3VyaW5nIFZYTEFOIHJlcXVpcmVzIHRoZSB2ZXJzaW9uIG9mCitpcHJvdXRlMiB0aGF0IG1hdGNoZXMgdGhlIGtlcm5lbCByZWxlYXNlIHdoZXJlIFZYTEFOIHdhcyBmaXJzdCBtZXJnZWQKK3Vwc3RyZWFtLgorCisxLiBDcmVhdGUgdnhsYW4gZGV2aWNlCisgIyBpcCBsaW5rIGFkZCB2eGxhbjAgdHlwZSB2eGxhbiBpZCA0MiBncm91cCAyMzkuMS4xLjEgZGV2IGV0aDEgZHN0cG9ydCA0Nzg5CisKK1RoaXMgY3JlYXRlcyBhIG5ldyBkZXZpY2UgbmFtZWQgdnhsYW4wLiAgVGhlIGRldmljZSB1c2VzIHRoZSBtdWx0aWNhc3QKK2dyb3VwIDIzOS4xLjEuMSBvdmVyIGV0aDEgdG8gaGFuZGxlIHRyYWZmaWMgZm9yIHdoaWNoIHRoZXJlIGlzIG5vCitlbnRyeSBpbiB0aGUgZm9yd2FyZGluZyB0YWJsZS4gIFRoZSBkZXN0aW5hdGlvbiBwb3J0IG51bWJlciBpcyBzZXQgdG8KK3RoZSBJQU5BLWFzc2lnbmVkIHZhbHVlIG9mIDQ3ODkuICBUaGUgTGludXggaW1wbGVtZW50YXRpb24gb2YgVlhMQU4KK3ByZS1kYXRlcyB0aGUgSUFOQSdzIHNlbGVjdGlvbiBvZiBhIHN0YW5kYXJkIGRlc3RpbmF0aW9uIHBvcnQgbnVtYmVyCithbmQgdXNlcyB0aGUgTGludXgtc2VsZWN0ZWQgdmFsdWUgYnkgZGVmYXVsdCB0byBtYWludGFpbiBiYWNrd2FyZHMKK2NvbXBhdGliaWxpdHkuCisKKzIuIERlbGV0ZSB2eGxhbiBkZXZpY2UKKyAgIyBpcCBsaW5rIGRlbGV0ZSB2eGxhbjAKKworMy4gU2hvdyB2eGxhbiBpbmZvCisgICMgaXAgLWQgbGluayBzaG93IHZ4bGFuMAorCitJdCBpcyBwb3NzaWJsZSB0byBjcmVhdGUsIGRlc3Ryb3kgYW5kIGRpc3BsYXkgdGhlIHZ4bGFuCitmb3J3YXJkaW5nIHRhYmxlIHVzaW5nIHRoZSBuZXcgYnJpZGdlIGNvbW1hbmQuCisKKzEuIENyZWF0ZSBmb3J3YXJkaW5nIHRhYmxlIGVudHJ5CisgICMgYnJpZGdlIGZkYiBhZGQgdG8gMDA6MTc6NDI6OGE6YjQ6MDUgZHN0IDE5Mi4xOS4wLjIgZGV2IHZ4bGFuMAorCisyLiBEZWxldGUgZm9yd2FyZGluZyB0YWJsZSBlbnRyeQorICAjIGJyaWRnZSBmZGIgZGVsZXRlIDAwOjE3OjQyOjhhOmI0OjA1IGRldiB2eGxhbjAKKworMy4gU2hvdyBmb3J3YXJkaW5nIHRhYmxlCisgICMgYnJpZGdlIGZkYiBzaG93IGRldiB2eGxhbjAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy94MjUtaWZhY2UudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3gyNS1pZmFjZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YyMTNiNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy94MjUtaWZhY2UudHh0CkBAIC0wLDAgKzEsMTIzIEBACisJCQlYLjI1IERldmljZSBEcml2ZXIgSW50ZXJmYWNlIDEuMQorCisJCQkgICBKb25hdGhhbiBOYXlsb3IgMjYuMTIuOTYKKworVGhpcyBpcyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBtZXNzYWdlcyB0byBiZSBwYXNzZWQgYmV0d2VlbiB0aGUgWC4yNSBQYWNrZXQKK0xheWVyIGFuZCB0aGUgWC4yNSBkZXZpY2UgZHJpdmVyLiBUaGV5IGFyZSBkZXNpZ25lZCB0byBhbGxvdyBmb3IgdGhlIGVhc3kKK3NldHRpbmcgb2YgdGhlIExBUEIgbW9kZSBmcm9tIHdpdGhpbiB0aGUgUGFja2V0IExheWVyLgorCitUaGUgWC4yNSBkZXZpY2UgZHJpdmVyIHdpbGwgYmUgY29kZWQgbm9ybWFsbHkgYXMgcGVyIHRoZSBMaW51eCBkZXZpY2UgZHJpdmVyCitzdGFuZGFyZHMuIE1vc3QgWC4yNSBkZXZpY2UgZHJpdmVycyB3aWxsIGJlIG1vZGVyYXRlbHkgc2ltaWxhciB0byB0aGUKK2FscmVhZHkgZXhpc3RpbmcgRXRoZXJuZXQgZGV2aWNlIGRyaXZlcnMuIEhvd2V2ZXIgdW5saWtlIHRob3NlIGRyaXZlcnMsIHRoZQorWC4yNSBkZXZpY2UgZHJpdmVyIGhhcyBhIHN0YXRlIGFzc29jaWF0ZWQgd2l0aCBpdCwgYW5kIHRoaXMgaW5mb3JtYXRpb24KK25lZWRzIHRvIGJlIHBhc3NlZCB0byBhbmQgZnJvbSB0aGUgUGFja2V0IExheWVyIGZvciBwcm9wZXIgb3BlcmF0aW9uLgorCitBbGwgbWVzc2FnZXMgYXJlIGhlbGQgaW4gc2tfYnVmZidzIGp1c3QgbGlrZSByZWFsIGRhdGEgdG8gYmUgdHJhbnNtaXR0ZWQKK292ZXIgdGhlIExBUEIgbGluay4gVGhlIGZpcnN0IGJ5dGUgb2YgdGhlIHNrYnVmZiBpbmRpY2F0ZXMgdGhlIG1lYW5pbmcgb2YKK3RoZSByZXN0IG9mIHRoZSBza2J1ZmYsIGlmIGFueSBtb3JlIGluZm9ybWF0aW9uIGRvZXMgZXhpc3QuCisKKworUGFja2V0IExheWVyIHRvIERldmljZSBEcml2ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpcnN0IEJ5dGUgPSAweDAwIChYMjVfSUZBQ0VfREFUQSkKKworVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVzdCBvZiB0aGUgc2tidWZmIGNvbnRhaW5zIGRhdGEgdG8gYmUgdHJhbnNtaXR0ZWQKK292ZXIgdGhlIExBUEIgbGluay4gVGhlIExBUEIgbGluayBzaG91bGQgYWxyZWFkeSBleGlzdCBiZWZvcmUgYW55IGRhdGEgaXMKK3Bhc3NlZCBkb3duLgorCitGaXJzdCBCeXRlID0gMHgwMSAoWDI1X0lGQUNFX0NPTk5FQ1QpCisKK0VzdGFibGlzaCB0aGUgTEFQQiBsaW5rLiBJZiB0aGUgbGluayBpcyBhbHJlYWR5IGVzdGFibGlzaGVkIHRoZW4gdGhlIGNvbm5lY3QKK2NvbmZpcm1hdGlvbiBtZXNzYWdlIHNob3VsZCBiZSByZXR1cm5lZCBhcyBzb29uIGFzIHBvc3NpYmxlLgorCitGaXJzdCBCeXRlID0gMHgwMiAoWDI1X0lGQUNFX0RJU0NPTk5FQ1QpCisKK1Rlcm1pbmF0ZSB0aGUgTEFQQiBsaW5rLiBJZiBpdCBpcyBhbHJlYWR5IGRpc2Nvbm5lY3RlZCB0aGVuIHRoZSBkaXNjb25uZWN0Citjb25maXJtYXRpb24gbWVzc2FnZSBzaG91bGQgYmUgcmV0dXJuZWQgYXMgc29vbiBhcyBwb3NzaWJsZS4KKworRmlyc3QgQnl0ZSA9IDB4MDMgKFgyNV9JRkFDRV9QQVJBTVMpCisKK0xBUEIgcGFyYW1ldGVycy4gVG8gYmUgZGVmaW5lZC4KKworCitEZXZpY2UgRHJpdmVyIHRvIFBhY2tldCBMYXllcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRmlyc3QgQnl0ZSA9IDB4MDAgKFgyNV9JRkFDRV9EQVRBKQorCitUaGlzIGluZGljYXRlcyB0aGF0IHRoZSByZXN0IG9mIHRoZSBza2J1ZmYgY29udGFpbnMgZGF0YSB0aGF0IGhhcyBiZWVuCityZWNlaXZlZCBvdmVyIHRoZSBMQVBCIGxpbmsuCisKK0ZpcnN0IEJ5dGUgPSAweDAxIChYMjVfSUZBQ0VfQ09OTkVDVCkKKworTEFQQiBsaW5rIGhhcyBiZWVuIGVzdGFibGlzaGVkLiBUaGUgc2FtZSBtZXNzYWdlIGlzIHVzZWQgZm9yIGJvdGggYSBMQVBCCitsaW5rIGNvbm5lY3RfY29uZmlybWF0aW9uIGFuZCBhIGNvbm5lY3RfaW5kaWNhdGlvbi4KKworRmlyc3QgQnl0ZSA9IDB4MDIgKFgyNV9JRkFDRV9ESVNDT05ORUNUKQorCitMQVBCIGxpbmsgaGFzIGJlZW4gdGVybWluYXRlZC4gVGhpcyBzYW1lIG1lc3NhZ2UgaXMgdXNlZCBmb3IgYm90aCBhIExBUEIKK2xpbmsgZGlzY29ubmVjdF9jb25maXJtYXRpb24gYW5kIGEgZGlzY29ubmVjdF9pbmRpY2F0aW9uLgorCitGaXJzdCBCeXRlID0gMHgwMyAoWDI1X0lGQUNFX1BBUkFNUykKKworTEFQQiBwYXJhbWV0ZXJzLiBUbyBiZSBkZWZpbmVkLgorCisKKworUG9zc2libGUgUHJvYmxlbXMKKz09PT09PT09PT09PT09PT09CisKKyhIZW5uZXIgRWlzZW4sIDIwMDAtMTAtMjgpCisKK1RoZSBYLjI1IHBhY2tldCBsYXllciBwcm90b2NvbCBkZXBlbmRzIG9uIGEgcmVsaWFibGUgZGF0YWxpbmsgc2VydmljZS4KK1RoZSBMQVBCIHByb3RvY29sIHByb3ZpZGVzIHN1Y2ggcmVsaWFibGUgc2VydmljZS4gQnV0IHRoaXMgcmVsaWFiaWxpdHkKK2lzIG5vdCBwcmVzZXJ2ZWQgYnkgdGhlIExpbnV4IG5ldHdvcmsgZGV2aWNlIGRyaXZlciBpbnRlcmZhY2U6CisKKy0gV2l0aCBMaW51eCAyLjQueCAoYW5kIGFib3ZlKSBTTVAga2VybmVscywgcGFja2V0IG9yZGVyaW5nIGlzIG5vdAorICBwcmVzZXJ2ZWQuIEV2ZW4gaWYgYSBkZXZpY2UgZHJpdmVyIGNhbGxzIG5ldGlmX3J4KHNrYjEpIGFuZCBsYXRlcgorICBuZXRpZl9yeChza2IyKSwgc2tiMiBtaWdodCBiZSBkZWxpdmVyZWQgdG8gdGhlIG5ldHdvcmsgbGF5ZXIKKyAgZWFybGllciB0aGF0IHNrYjEuCistIERhdGEgcGFzc2VkIHVwc3RyZWFtIGJ5IG1lYW5zIG9mIG5ldGlmX3J4KCkgbWlnaHQgYmUgZHJvcHBlZCBieSB0aGUKKyAga2VybmVsIGlmIHRoZSBiYWNrbG9nIHF1ZXVlIGlzIGNvbmdlc3RlZC4KKworVGhlIFguMjUgcGFja2V0IGxheWVyIHByb3RvY29sIHdpbGwgZGV0ZWN0IHRoaXMgYW5kIHJlc2V0IHRoZSB2aXJ0dWFsCitjYWxsIGluIHF1ZXN0aW9uLiBCdXQgbWFueSB1cHBlciBsYXllciBwcm90b2NvbHMgYXJlIG5vdCBkZXNpZ25lZCB0bworaGFuZGxlIHN1Y2ggTi1SZXNldCBldmVudHMgZ3JhY2VmdWxseS4gQW5kIGZyZXF1ZW50IE4tUmVzZXQgZXZlbnRzCit3aWxsIGFsd2F5cyBkZWdyYWRlIHBlcmZvcm1hbmNlLgorCitUaHVzLCBkcml2ZXIgYXV0aG9ycyBzaG91bGQgbWFrZSBuZXRpZl9yeCgpIGFzIHJlbGlhYmxlIGFzIHBvc3NpYmxlOgorCitTTVAgcmUtb3JkZXJpbmcgd2lsbCBub3Qgb2NjdXIgaWYgdGhlIGRyaXZlcidzIGludGVycnVwdCBoYW5kbGVyIGlzCithbHdheXMgZXhlY3V0ZWQgb24gdGhlIHNhbWUgQ1BVLiBUaHVzLAorCistIERyaXZlciBhdXRob3JzIHNob3VsZCB1c2UgaXJxIGFmZmluaXR5IGZvciB0aGUgaW50ZXJydXB0IGhhbmRsZXIuCisKK1RoZSBwcm9iYWJpbGl0eSBvZiBwYWNrZXQgbG9zcyBkdWUgdG8gYmFja2xvZyBjb25nZXN0aW9uIGNhbiBiZQorcmVkdWNlZCBieSB0aGUgZm9sbG93aW5nIG1lYXN1cmVzIG9yIGEgY29tYmluYXRpb24gdGhlcmVvZjoKKworKDEpIERyaXZlcnMgZm9yIGtlcm5lbCB2ZXJzaW9ucyAyLjQueCBhbmQgYWJvdmUgc2hvdWxkIGFsd2F5cyBjaGVjayB0aGUKKyAgICByZXR1cm4gdmFsdWUgb2YgbmV0aWZfcngoKS4gSWYgaXQgcmV0dXJucyBORVRfUlhfRFJPUCwgdGhlCisgICAgZHJpdmVyJ3MgTEFQQiBwcm90b2NvbCBtdXN0IG5vdCBjb25maXJtIHJlY2VwdGlvbiBvZiB0aGUgZnJhbWUKKyAgICB0byB0aGUgcGVlci4gCisgICAgVGhpcyB3aWxsIHJlbGlhYmx5IHN1cHByZXNzIHBhY2tldCBsb3NzLiBUaGUgTEFQQiBwcm90b2NvbCB3aWxsCisgICAgYXV0b21hdGljYWxseSBjYXVzZSB0aGUgcGVlciB0byByZS10cmFuc21pdCB0aGUgZHJvcHBlZCBwYWNrZXQKKyAgICBsYXRlci4KKyAgICBUaGUgbGFwYiBtb2R1bGUgaW50ZXJmYWNlIHdhcyBtb2RpZmllZCB0byBzdXBwb3J0IHRoaXMuIEl0cworICAgIGRhdGFfaW5kaWNhdGlvbigpIG1ldGhvZCBzaG91bGQgbm93IHRyYW5zcGFyZW50bHkgcGFzcyB0aGUKKyAgICBuZXRpZl9yeCgpIHJldHVybiB2YWx1ZSB0byB0aGUgKGxhcGIgbW9kdWxlKSBjYWxsZXIuCisoMikgRHJpdmVycyBmb3Iga2VybmVsIHZlcnNpb25zIDIuMi54IHNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGdsb2JhbAorICAgIHZhcmlhYmxlIG5ldGRldl9kcm9wcGluZyB3aGVuIGEgbmV3IGZyYW1lIGlzIHJlY2VpdmVkLiBUaGUgZHJpdmVyCisgICAgc2hvdWxkIG9ubHkgY2FsbCBuZXRpZl9yeCgpIGlmIG5ldGRldl9kcm9wcGluZyBpcyB6ZXJvLiBPdGhlcndpc2UKKyAgICB0aGUgZHJpdmVyIHNob3VsZCBub3QgY29uZmlybSBkZWxpdmVyeSBvZiB0aGUgZnJhbWUgYW5kIGRyb3AgaXQuCisgICAgQWx0ZXJuYXRpdmVseSwgdGhlIGRyaXZlciBjYW4gcXVldWUgdGhlIGZyYW1lIGludGVybmFsbHkgYW5kIGNhbGwKKyAgICBuZXRpZl9yeCgpIGxhdGVyIHdoZW4gbmV0aWZfZHJvcHBpbmcgaXMgMCBhZ2Fpbi4gSW4gdGhhdCBjYXNlLCBkZWxpdmVyeQorICAgIGNvbmZpcm1hdGlvbiBzaG91bGQgYWxzbyBiZSBkZWZlcnJlZCBzdWNoIHRoYXQgdGhlIGludGVybmFsIHF1ZXVlCisgICAgY2Fubm90IGdyb3cgdG8gbXVjaC4KKyAgICBUaGlzIHdpbGwgbm90IHJlbGlhYmx5IGF2b2lkIHBhY2tldCBsb3NzLCBidXQgdGhlIHByb2JhYmlsaXR5CisgICAgb2YgcGFja2V0IGxvc3MgaW4gbmV0aWZfcngoKSBwYXRoIHdpbGwgYmUgc2lnbmlmaWNhbnRseSByZWR1Y2VkLgorKDMpIEFkZGl0aW9uYWxseSwgZHJpdmVyIGF1dGhvcnMgbWlnaHQgY29uc2lkZXIgdG8gc3VwcG9ydAorICAgIENPTkZJR19ORVRfSFdfRkxPV0NPTlRST0wuIFRoaXMgYWxsb3dzIHRoZSBkcml2ZXIgdG8gYmUgd29rZW4gdXAKKyAgICB3aGVuIGEgcHJldmlvdXNseSBjb25nZXN0ZWQgYmFja2xvZyBxdWV1ZSBiZWNvbWVzIGVtcHR5IGFnYWluLgorICAgIFRoZSBkcml2ZXIgY291bGQgdXNlcyB0aGlzIGZvciBmbG93LWNvbnRyb2xsaW5nIHRoZSBwZWVyIGJ5IG1lYW5zCisgICAgb2YgdGhlIExBUEIgcHJvdG9jb2wncyBmbG93LWNvbnRyb2wgc2VydmljZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy94MjUudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3gyNS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzkxYzZkNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy94MjUudHh0CkBAIC0wLDAgKzEsNDQgQEAKK0xpbnV4IFguMjUgUHJvamVjdAorCitBcyBteSB0aGlyZCB5ZWFyIGRpc3NlcnRhdGlvbiBhdCBVbml2ZXJzaXR5IEkgaGF2ZSB0YWtlbiBpdCB1cG9uIG15c2VsZiB0bword3JpdGUgYW4gWC4yNSBpbXBsZW1lbnRhdGlvbiBmb3IgTGludXguIE15IGFpbSBpcyB0byBwcm92aWRlIGEgY29tcGxldGUgWC4yNQorUGFja2V0IExheWVyIGFuZCBhIExBUEIgbW9kdWxlIHRvIGFsbG93IGZvciAibm9ybWFsIiBYLjI1IHRvIGJlIHJ1biB1c2luZworTGludXguIFRoZXJlIGFyZSB0d28gc29ydHMgb2YgWC4yNSBjYXJkcyBhdmFpbGFibGUsIGludGVsbGlnZW50IG9uZXMgdGhhdAoraW1wbGVtZW50IExBUEIgb24gdGhlIGNhcmQgaXRzZWxmLCBhbmQgdW5pbnRlbGxpZ2VudCBvbmVzIHRoYXQgc2ltcGx5IGRvCitmcmFtaW5nLCBiaXQtc3R1ZmZpbmcgYW5kIGNoZWNrc3VtbWluZy4gVGhlc2UgYm90aCBuZWVkIHRvIGJlIGhhbmRsZWQgYnkgdGhlCitzeXN0ZW0uCisKK0kgdGhlcmVmb3JlIGRlY2lkZWQgdG8gd3JpdGUgdGhlIGltcGxlbWVudGF0aW9uIHN1Y2ggdGhhdCBhcyBmYXIgYXMgdGhlCitQYWNrZXQgTGF5ZXIgaXMgY29uY2VybmVkLCB0aGUgbGluayBsYXllciB3YXMgYmVpbmcgcGVyZm9ybWVkIGJ5IGEgbG93ZXIKK2xheWVyIG9mIHRoZSBMaW51eCBrZXJuZWwgYW5kIHRoZXJlZm9yZSBpdCBkaWQgbm90IGNvbmNlcm4gaXRzZWxmIHdpdGgKK2ltcGxlbWVudGF0aW9uIG9mIExBUEIuIFRoZXJlZm9yZSB0aGUgTEFQQiBtb2R1bGVzIHdvdWxkIGJlIGNhbGxlZCBieQordW5pbnRlbGxpZ2VudCBYLjI1IGNhcmQgZHJpdmVycyBhbmQgbm90IGJ5IGludGVsbGlnZW50IG9uZXMsIHRoaXMgd291bGQKK3Byb3ZpZGUgYSB1bmlmb3JtIGRldmljZSBkcml2ZXIgaW50ZXJmYWNlLCBhbmQgc2ltcGxpZnkgY29uZmlndXJhdGlvbi4KKworVG8gY29uZnVzZSBtYXR0ZXJzIGEgbGl0dGxlLCBhbiA4MDIuMiBMTEMgaW1wbGVtZW50YXRpb24gZm9yIExpbnV4IGlzIGJlaW5nCit3cml0dGVuIHdoaWNoIHdpbGwgYWxsb3cgWC4yNSB0byBiZSBydW4gb3ZlciBhbiBFdGhlcm5ldCAob3IgVG9rZW4gUmluZykgYW5kCitjb25mb3JtIHdpdGggdGhlIEpOVCAiUGluayBCb29rIiwgdGhpcyB3aWxsIGhhdmUgYSBkaWZmZXJlbnQgaW50ZXJmYWNlIHRvCit0aGUgUGFja2V0IExheWVyIGJ1dCB0aGVyZSB3aWxsIGJlIG5vIGNvbmZ1c2lvbiBzaW5jZSB0aGUgY2xhc3Mgb2YgZGV2aWNlCitiZWluZyBzZXJ2ZWQgYnkgdGhlIExMQyB3aWxsIGJlIGNvbXBsZXRlbHkgc2VwYXJhdGUgZnJvbSBMQVBCLiBUaGUgTExDCitpbXBsZW1lbnRhdGlvbiBpcyBiZWluZyBkb25lIGFzIHBhcnQgb2YgYW5vdGhlciBwcm90b2NvbCBwcm9qZWN0IChTTkEpIGFuZAorYnkgYSBkaWZmZXJlbnQgYXV0aG9yLgorCitKdXN0IHdoZW4geW91IHRob3VnaHQgdGhhdCBpdCBjb3VsZCBub3QgYmVjb21lIG1vcmUgY29uZnVzaW5nLCBhbm90aGVyCitvcHRpb24gYXBwZWFyZWQsIFhPVC4gVGhpcyBhbGxvd3MgWC4yNSBQYWNrZXQgTGF5ZXIgZnJhbWVzIHRvIG9wZXJhdGUgb3ZlcgordGhlIEludGVybmV0IHVzaW5nIFRDUC9JUCBhcyBhIHJlbGlhYmxlIGxpbmsgbGF5ZXIuIFJGQzE2MTMgc3BlY2lmaWVzIHRoZQorZm9ybWF0IGFuZCBiZWhhdmlvdXIgb2YgdGhlIHByb3RvY29sLiBJZiB0aW1lIHBlcm1pdHMgdGhpcyBvcHRpb24gd2lsbCBhbHNvCitiZSBhY3RpdmVseSBjb25zaWRlcmVkLgorCitBIGxpbnV4LXgyNSBtYWlsaW5nIGxpc3QgaGFzIGJlZW4gY3JlYXRlZCBhdCB2Z2VyLmtlcm5lbC5vcmcgdG8gc3VwcG9ydCB0aGUKK2RldmVsb3BtZW50IGFuZCB1c2Ugb2YgTGludXggWC4yNS4gSXQgaXMgZWFybHkgZGF5cyB5ZXQsIGJ1dCBpbnRlcmVzdGVkCitwYXJ0aWVzIGFyZSB3ZWxjb21lIHRvIHN1YnNjcmliZSB0byBpdC4gSnVzdCBzZW5kIGEgbWVzc2FnZSB0bworbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZyB3aXRoIHRoZSBmb2xsb3dpbmcgaW4gdGhlIG1lc3NhZ2UgYm9keToKKworc3Vic2NyaWJlIGxpbnV4LXgyNQorZW5kCisKK1RoZSBjb250ZW50cyBvZiB0aGUgU3ViamVjdCBsaW5lIGFyZSBpZ25vcmVkLgorCitKb25hdGhhbgorCitnNGtseEBnNGtseC5kZW1vbi5jby51awpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm1fcHJvYy50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveGZybV9wcm9jLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGQ4YmFmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm1fcHJvYy50eHQKQEAgLTAsMCArMSw3NCBAQAorWEZSTSBwcm9jIC0gL3Byb2MvbmV0L3hmcm1fKiBmaWxlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorTWFzYWhpZGUgTkFLQU1VUkEgPG5ha2FtQGxpbnV4LWlwdjYub3JnPgorCisKK1RyYW5zZm9ybWF0aW9uIFN0YXRpc3RpY3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3hmcm1fcHJvYyBpcyBhIHN0YXRpc3RpY3Mgc2hvd24gZmFjdG9yIGRyb3BwZWQgYnkgdHJhbnNmb3JtYXRpb24KK2ZvciBkZXZlbG9wZXIuCitJdCBpcyBhIGNvdW50ZXIgZGVzaWduZWQgZnJvbSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uIHNvdXJjZSBjb2RlCithbmQgZGVmaW5lZCBsaWtlIGxpbnV4IHByaXZhdGUgTUlCLgorCitJbmJvdW5kIHN0YXRpc3RpY3MKK35+fn5+fn5+fn5+fn5+fn5+fgorWGZybUluRXJyb3I6CisJQWxsIGVycm9ycyB3aGljaCBpcyBub3QgbWF0Y2hlZCBvdGhlcnMKK1hmcm1JbkJ1ZmZlckVycm9yOgorCU5vIGJ1ZmZlciBpcyBsZWZ0CitYZnJtSW5IZHJFcnJvcjoKKwlIZWFkZXIgZXJyb3IKK1hmcm1Jbk5vU3RhdGVzOgorCU5vIHN0YXRlIGlzIGZvdW5kCisJaS5lLiBFaXRoZXIgaW5ib3VuZCBTUEksIGFkZHJlc3MsIG9yIElQc2VjIHByb3RvY29sIGF0IFNBIGlzIHdyb25nCitYZnJtSW5TdGF0ZVByb3RvRXJyb3I6CisJVHJhbnNmb3JtYXRpb24gcHJvdG9jb2wgc3BlY2lmaWMgZXJyb3IKKwllLmcuIFNBIGtleSBpcyB3cm9uZworWGZybUluU3RhdGVNb2RlRXJyb3I6CisJVHJhbnNmb3JtYXRpb24gbW9kZSBzcGVjaWZpYyBlcnJvcgorWGZybUluU3RhdGVTZXFFcnJvcjoKKwlTZXF1ZW5jZSBlcnJvcgorCWkuZS4gU2VxdWVuY2UgbnVtYmVyIGlzIG91dCBvZiB3aW5kb3cKK1hmcm1JblN0YXRlRXhwaXJlZDoKKwlTdGF0ZSBpcyBleHBpcmVkCitYZnJtSW5TdGF0ZU1pc21hdGNoOgorCVN0YXRlIGhhcyBtaXNtYXRjaCBvcHRpb24KKwllLmcuIFVEUCBlbmNhcHN1bGF0aW9uIHR5cGUgaXMgbWlzbWF0Y2gKK1hmcm1JblN0YXRlSW52YWxpZDoKKwlTdGF0ZSBpcyBpbnZhbGlkCitYZnJtSW5UbXBsTWlzbWF0Y2g6CisJTm8gbWF0Y2hpbmcgdGVtcGxhdGUgZm9yIHN0YXRlcworCWUuZy4gSW5ib3VuZCBTQXMgYXJlIGNvcnJlY3QgYnV0IFNQIHJ1bGUgaXMgd3JvbmcKK1hmcm1Jbk5vUG9sczoKKwlObyBwb2xpY3kgaXMgZm91bmQgZm9yIHN0YXRlcworCWUuZy4gSW5ib3VuZCBTQXMgYXJlIGNvcnJlY3QgYnV0IG5vIFNQIGlzIGZvdW5kCitYZnJtSW5Qb2xCbG9jazoKKwlQb2xpY3kgZGlzY2FyZHMKK1hmcm1JblBvbEVycm9yOgorCVBvbGljeSBlcnJvcgorCitPdXRib3VuZCBlcnJvcnMKK35+fn5+fn5+fn5+fn5+fgorWGZybU91dEVycm9yOgorCUFsbCBlcnJvcnMgd2hpY2ggaXMgbm90IG1hdGNoZWQgb3RoZXJzCitYZnJtT3V0QnVuZGxlR2VuRXJyb3I6CisJQnVuZGxlIGdlbmVyYXRpb24gZXJyb3IKK1hmcm1PdXRCdW5kbGVDaGVja0Vycm9yOgorCUJ1bmRsZSBjaGVjayBlcnJvcgorWGZybU91dE5vU3RhdGVzOgorCU5vIHN0YXRlIGlzIGZvdW5kCitYZnJtT3V0U3RhdGVQcm90b0Vycm9yOgorCVRyYW5zZm9ybWF0aW9uIHByb3RvY29sIHNwZWNpZmljIGVycm9yCitYZnJtT3V0U3RhdGVNb2RlRXJyb3I6CisJVHJhbnNmb3JtYXRpb24gbW9kZSBzcGVjaWZpYyBlcnJvcgorWGZybU91dFN0YXRlU2VxRXJyb3I6CisJU2VxdWVuY2UgZXJyb3IKKwlpLmUuIFNlcXVlbmNlIG51bWJlciBvdmVyZmxvdworWGZybU91dFN0YXRlRXhwaXJlZDoKKwlTdGF0ZSBpcyBleHBpcmVkCitYZnJtT3V0UG9sQmxvY2s6CisJUG9saWN5IGRpc2NhcmRzCitYZnJtT3V0UG9sRGVhZDoKKwlQb2xpY3kgaXMgZGVhZAorWGZybU91dFBvbEVycm9yOgorCVBvbGljeSBlcnJvcgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm1fc3luYy50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveGZybV9zeW5jLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2FhYzlkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hmcm1fc3luYy50eHQKQEAgLTAsMCArMSwxNjkgQEAKKworVGhlIHN5bmMgcGF0Y2hlcyB3b3JrIGlzIGJhc2VkIG9uIGluaXRpYWwgcGF0Y2hlcyBmcm9tCitLcmlzenRpYW4gPGhpZGRlbkBiYWxhYml0Lmh1PiBhbmQgb3RoZXJzIGFuZCBhZGRpdGlvbmFsIHBhdGNoZXMKK2Zyb20gSmFtYWwgPGhhZGlAY3liZXJ1cy5jYT4uCisKK1RoZSBlbmQgZ29hbCBmb3Igc3luY2luZyBpcyB0byBiZSBhYmxlIHRvIGluc2VydCBhdHRyaWJ1dGVzICsgZ2VuZXJhdGUKK2V2ZW50cyBzbyB0aGF0IHRoZSBhbiBTQSBjYW4gYmUgc2FmZWx5IG1vdmVkIGZyb20gb25lIG1hY2hpbmUgdG8gYW5vdGhlcgorZm9yIEhBIHB1cnBvc2VzLgorVGhlIGlkZWEgaXMgdG8gc3luY2hyb25pemUgdGhlIFNBIHNvIHRoYXQgdGhlIHRha2VvdmVyIG1hY2hpbmUgY2FuIGRvCit0aGUgcHJvY2Vzc2luZyBvZiB0aGUgU0EgYXMgYWNjdXJhdGUgYXMgcG9zc2libGUgaWYgaXQgaGFzIGFjY2VzcyB0byBpdC4KKworV2UgYWxyZWFkeSBoYXZlIHRoZSBhYmlsaXR5IHRvIGdlbmVyYXRlIFNBIGFkZC9kZWwvdXBkIGV2ZW50cy4KK1RoZXNlIHBhdGNoZXMgYWRkIGFiaWxpdHkgdG8gc3luYyBhbmQgaGF2ZSBhY2N1cmF0ZSBsaWZldGltZSBieXRlICh0bworZW5zdXJlIHByb3BlciBkZWNheSBvZiBTQXMpIGFuZCByZXBsYXkgY291bnRlcnMgdG8gYXZvaWQgcmVwbGF5IGF0dGFja3MKK3dpdGggYXMgbWluaW1hbCBsb3NzIGF0IGZhaWxvdmVyIHRpbWUuCitUaGlzIHdheSBhIGJhY2t1cCBzdGF5cyBhcyBjbG9zZWx5IHVwdG9kYXRlIGFzIGFuIGFjdGl2ZSBtZW1iZXIuCisKK0JlY2F1c2UgdGhlIGFib3ZlIGl0ZW1zIGNoYW5nZSBmb3IgZXZlcnkgcGFja2V0IHRoZSBTQSByZWNlaXZlcywKK2l0IGlzIHBvc3NpYmxlIGZvciBhIGxvdCBvZiB0aGUgZXZlbnRzIHRvIGJlIGdlbmVyYXRlZC4KK0ZvciB0aGlzIHJlYXNvbiwgd2UgYWxzbyBhZGQgYSBuYWdsZS1saWtlIGFsZ29yaXRobSB0byByZXN0cmljdAordGhlIGV2ZW50cy4gaS5lIHdlIGFyZSBnb2luZyB0byBzZXQgdGhyZXNob2xkcyB0byBzYXkgImxldCBtZQora25vdyBpZiB0aGUgcmVwbGF5IHNlcXVlbmNlIHRocmVzaG9sZCBpcyByZWFjaGVkIG9yIDEwIHNlY3MgaGF2ZSBwYXNzZWQiCitUaGVzZSB0aHJlc2hvbGRzIGFyZSBzZXQgc3lzdGVtLXdpZGUgdmlhIHN5c2N0bHMgb3IgY2FuIGJlIHVwZGF0ZWQKK3BlciBTQS4KKworVGhlIGlkZW50aWZpZWQgaXRlbXMgdGhhdCBuZWVkIHRvIGJlIHN5bmNocm9uaXplZCBhcmU6CistIHRoZSBsaWZldGltZSBieXRlIGNvdW50ZXIKK25vdGUgdGhhdDogbGlmZXRpbWUgdGltZSBsaW1pdCBpcyBub3QgaW1wb3J0YW50IGlmIHlvdSBhc3N1bWUgdGhlIGZhaWxvdmVyCittYWNoaW5lIGlzIGtub3duIGFoZWFkIG9mIHRpbWUgc2luY2UgdGhlIGRlY2F5IG9mIHRoZSB0aW1lIGNvdW50ZG93bgoraXMgbm90IGRyaXZlbiBieSBwYWNrZXQgYXJyaXZhbC4KKy0gdGhlIHJlcGxheSBzZXF1ZW5jZSBmb3IgYm90aCBpbmJvdW5kIGFuZCBvdXRib3VuZAorCisxKSBNZXNzYWdlIFN0cnVjdHVyZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitubG1zZ2hkcjphZXZlbnRfaWQ6b3B0aW9uYWwtVExWcy4KKworVGhlIG5ldGxpbmsgbWVzc2FnZSB0eXBlcyBhcmU6CisKK1hGUk1fTVNHX05FV0FFIGFuZCBYRlJNX01TR19HRVRBRS4KKworQSBYRlJNX01TR19HRVRBRSBkb2VzIG5vdCBoYXZlIFRMVnMuCitBIFhGUk1fTVNHX05FV0FFIHdpbGwgaGF2ZSBhdCBsZWFzdCB0d28gVExWcyAoYXMgaXMKK2Rpc2N1c3NlZCBmdXJ0aGVyIGJlbG93KS4KKworYWV2ZW50X2lkIHN0cnVjdHVyZSBsb29rcyBsaWtlOgorCisgICBzdHJ1Y3QgeGZybV9hZXZlbnRfaWQgeworICAgICAgICAgICAgIHN0cnVjdCB4ZnJtX3VzZXJzYV9pZCAgICAgICAgICAgc2FfaWQ7CisgICAgICAgICAgICAgeGZybV9hZGRyZXNzX3QgICAgICAgICAgICAgICAgICBzYWRkcjsKKyAgICAgICAgICAgICBfX3UzMiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOworICAgICAgICAgICAgIF9fdTMyICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxaWQ7CisgICB9OworCitUaGUgdW5pcXVlIFNBIGlzIGlkZW50aWZpZWQgYnkgdGhlIGNvbWJpbmF0aW9uIG9mIHhmcm1fdXNlcnNhX2lkLAorcmVxaWQgYW5kIHNhZGRyLgorCitmbGFncyBhcmUgdXNlZCB0byBpbmRpY2F0ZSBkaWZmZXJlbnQgdGhpbmdzLiBUaGUgcG9zc2libGUKK2ZsYWdzIGFyZToKKyAgICAgICAgWEZSTV9BRV9SVEhSPTEsIC8qIHJlcGxheSB0aHJlc2hvbGQqLworICAgICAgICBYRlJNX0FFX1JWQUw9MiwgLyogcmVwbGF5IHZhbHVlICovCisgICAgICAgIFhGUk1fQUVfTFZBTD00LCAvKiBsaWZldGltZSB2YWx1ZSAqLworICAgICAgICBYRlJNX0FFX0VUSFI9OCwgLyogZXhwaXJ5IHRpbWVyIHRocmVzaG9sZCAqLworICAgICAgICBYRlJNX0FFX0NSPTE2LCAvKiBFdmVudCBjYXVzZSBpcyByZXBsYXkgdXBkYXRlICovCisgICAgICAgIFhGUk1fQUVfQ0U9MzIsIC8qIEV2ZW50IGNhdXNlIGlzIHRpbWVyIGV4cGlyeSAqLworICAgICAgICBYRlJNX0FFX0NVPTY0LCAvKiBFdmVudCBjYXVzZSBpcyBwb2xpY3kgdXBkYXRlICovCisKK0hvdyB0aGVzZSBmbGFncyBhcmUgdXNlZCBpcyBkZXBlbmRlbnQgb24gdGhlIGRpcmVjdGlvbiBvZiB0aGUKK21lc3NhZ2UgKGtlcm5lbDwtPnVzZXIpIGFzIHdlbGwgdGhlIGNhdXNlIChjb25maWcsIHF1ZXJ5IG9yIGV2ZW50KS4KK1RoaXMgaXMgZGVzY3JpYmVkIGJlbG93IGluIHRoZSBkaWZmZXJlbnQgbWVzc2FnZXMuCisKK1RoZSBwaWQgd2lsbCBiZSBzZXQgYXBwcm9wcmlhdGVseSBpbiBuZXRsaW5rIHRvIHJlY29nbml6ZSBkaXJlY3Rpb24KKygwIHRvIHRoZSBrZXJuZWwgYW5kIHBpZCA9IHByb2Nlc3NpZCB0aGF0IGNyZWF0ZWQgdGhlIGV2ZW50Cit3aGVuIGdvaW5nIGZyb20ga2VybmVsIHRvIHVzZXIgc3BhY2UpCisKK0EgcHJvZ3JhbSBuZWVkcyB0byBzdWJzY3JpYmUgdG8gbXVsdGljYXN0IGdyb3VwIFhGUk1OTEdSUF9BRVZFTlRTCit0byBnZXQgbm90aWZpZWQgb2YgdGhlc2UgZXZlbnRzLgorCisyKSBUTFZTIHJlZmxlY3QgdGhlIGRpZmZlcmVudCBwYXJhbWV0ZXJzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYSkgYnl0ZSB2YWx1ZSAoWEZSTUFfTFRJTUVfVkFMKQorVGhpcyBUTFYgY2FycmllcyB0aGUgcnVubmluZy9jdXJyZW50IGNvdW50ZXIgZm9yIGJ5dGUgbGlmZXRpbWUgc2luY2UKK2xhc3QgZXZlbnQuCisKK2IpcmVwbGF5IHZhbHVlIChYRlJNQV9SRVBMQVlfVkFMKQorVGhpcyBUTFYgY2FycmllcyB0aGUgcnVubmluZy9jdXJyZW50IGNvdW50ZXIgZm9yIHJlcGxheSBzZXF1ZW5jZSBzaW5jZQorbGFzdCBldmVudC4KKworYylyZXBsYXkgdGhyZXNob2xkIChYRlJNQV9SRVBMQVlfVEhSRVNIKQorVGhpcyBUTFYgY2FycmllcyB0aGUgdGhyZXNob2xkIGJlaW5nIHVzZWQgYnkgdGhlIGtlcm5lbCB0byB0cmlnZ2VyIGV2ZW50cword2hlbiB0aGUgcmVwbGF5IHNlcXVlbmNlIGlzIGV4Y2VlZGVkLgorCitkKSBleHBpcnkgdGltZXIgKFhGUk1BX0VUSU1FUl9USFJFU0gpCitUaGlzIGlzIGEgdGltZXIgdmFsdWUgaW4gbWlsbGlzZWNvbmRzIHdoaWNoIGlzIHVzZWQgYXMgdGhlIG5hZ2xlCit2YWx1ZSB0byByYXRlIGxpbWl0IHRoZSBldmVudHMuCisKKzMpIERlZmF1bHQgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBwYXJhbWV0ZXJzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCeSBkZWZhdWx0IHRoZXNlIGV2ZW50cyBzaG91bGQgYmUgdHVybmVkIG9mZiB1bmxlc3MgdGhlcmUgaXMKK2F0IGxlYXN0IG9uZSBsaXN0ZW5lciByZWdpc3RlcmVkIHRvIGxpc3RlbiB0byB0aGUgbXVsdGljYXN0Citncm91cCBYRlJNTkxHUlBfQUVWRU5UUy4KKworUHJvZ3JhbXMgaW5zdGFsbGluZyBTQXMgd2lsbCBuZWVkIHRvIHNwZWNpZnkgdGhlIHR3byB0aHJlc2hvbGRzLCBob3dldmVyLAoraW4gb3JkZXIgdG8gbm90IGNoYW5nZSBleGlzdGluZyBhcHBsaWNhdGlvbnMgc3VjaCBhcyByYWNvb24KK3dlIGFsc28gcHJvdmlkZSBkZWZhdWx0IHRocmVzaG9sZCB2YWx1ZXMgZm9yIHRoZXNlIGRpZmZlcmVudCBwYXJhbWV0ZXJzCitpbiBjYXNlIHRoZXkgYXJlIG5vdCBzcGVjaWZpZWQuCisKK3RoZSB0d28gc3lzY3Rscy9wcm9jIGVudHJpZXMgYXJlOgorYSkgL3Byb2Mvc3lzL25ldC9jb3JlL3N5c2N0bF94ZnJtX2FldmVudF9ldGltZQordXNlZCB0byBwcm92aWRlIGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgWEZSTUFfRVRJTUVSX1RIUkVTSCBpbiBpbmNyZW1lbnRhbAordW5pdHMgb2YgdGltZSBvZiAxMDBtcy4gVGhlIGRlZmF1bHQgaXMgMTAgKDEgc2Vjb25kKQorCitiKSAvcHJvYy9zeXMvbmV0L2NvcmUvc3lzY3RsX3hmcm1fYWV2ZW50X3JzZXF0aAordXNlZCB0byBwcm92aWRlIGRlZmF1bHQgdmFsdWVzIGZvciBYRlJNQV9SRVBMQVlfVEhSRVNIIHBhcmFtZXRlcgoraW4gaW5jcmVtZW50YWwgcGFja2V0IGNvdW50LiBUaGUgZGVmYXVsdCBpcyB0d28gcGFja2V0cy4KKworNCkgTWVzc2FnZSB0eXBlcworLS0tLS0tLS0tLS0tLS0tLQorCithKSBYRlJNX01TR19HRVRBRSBpc3N1ZWQgYnkgdXNlci0tPmtlcm5lbC4KK1hGUk1fTVNHX0dFVEFFIGRvZXMgbm90IGNhcnJ5IGFueSBUTFZzLgorVGhlIHJlc3BvbnNlIGlzIGEgWEZSTV9NU0dfTkVXQUUgd2hpY2ggaXMgZm9ybWF0dGVkIGJhc2VkIG9uIHdoYXQKK1hGUk1fTVNHX0dFVEFFIHF1ZXJpZWQgZm9yLgorVGhlIHJlc3BvbnNlIHdpbGwgYWx3YXlzIGhhdmUgWEZSTUFfTFRJTUVfVkFMIGFuZCBYRlJNQV9SRVBMQVlfVkFMIFRMVnMuCisqaWYgWEZSTV9BRV9SVEhSIGZsYWcgaXMgc2V0LCB0aGVuIFhGUk1BX1JFUExBWV9USFJFU0ggaXMgYWxzbyByZXRyaWV2ZWQKKyppZiBYRlJNX0FFX0VUSFIgZmxhZyBpcyBzZXQsIHRoZW4gWEZSTUFfRVRJTUVSX1RIUkVTSCBpcyBhbHNvIHJldHJpZXZlZAorCitiKSBYRlJNX01TR19ORVdBRSBpcyBpc3N1ZWQgYnkgZWl0aGVyIHVzZXIgc3BhY2UgdG8gY29uZmlndXJlCitvciBrZXJuZWwgdG8gYW5ub3VuY2UgZXZlbnRzIG9yIHJlc3BvbmQgdG8gYSBYRlJNX01TR19HRVRBRS4KKworaSkgdXNlciAtLT4ga2VybmVsIHRvIGNvbmZpZ3VyZSBhIHNwZWNpZmljIFNBLgorYW55IG9mIHRoZSB2YWx1ZXMgb3IgdGhyZXNob2xkIHBhcmFtZXRlcnMgY2FuIGJlIHVwZGF0ZWQgYnkgcGFzc2luZyB0aGUKK2FwcHJvcHJpYXRlIFRMVi4KK0EgcmVzcG9uc2UgaXMgaXNzdWVkIGJhY2sgdG8gdGhlIHNlbmRlciBpbiB1c2VyIHNwYWNlIHRvIGluZGljYXRlIHN1Y2Nlc3MKK29yIGZhaWx1cmUuCitJbiB0aGUgY2FzZSBvZiBzdWNjZXNzLCBhZGRpdGlvbmFsbHkgYW4gZXZlbnQgd2l0aAorWEZSTV9NU0dfTkVXQUUgaXMgYWxzbyBpc3N1ZWQgdG8gYW55IGxpc3RlbmVycyBhcyBkZXNjcmliZWQgaW4gaWlpKS4KKworaWkpIGtlcm5lbC0+dXNlciBkaXJlY3Rpb24gYXMgYSByZXNwb25zZSB0byBYRlJNX01TR19HRVRBRQorVGhlIHJlc3BvbnNlIHdpbGwgYWx3YXlzIGhhdmUgWEZSTUFfTFRJTUVfVkFMIGFuZCBYRlJNQV9SRVBMQVlfVkFMIFRMVnMuCitUaGUgdGhyZXNob2xkIFRMVnMgd2lsbCBiZSBpbmNsdWRlZCBpZiBleHBsaWNpdGx5IHJlcXVlc3RlZCBpbgordGhlIFhGUk1fTVNHX0dFVEFFIG1lc3NhZ2UuCisKK2lpaSkga2VybmVsLT51c2VyIHRvIHJlcG9ydCBhcyBldmVudCBpZiBzb21lb25lIHNldHMgYW55IHZhbHVlcyBvcgordGhyZXNob2xkcyBmb3IgYW4gU0EgdXNpbmcgWEZSTV9NU0dfTkVXQUUgKGFzIGRlc2NyaWJlZCBpbiAjaSBhYm92ZSkuCitJbiBzdWNoIGEgY2FzZSBYRlJNX0FFX0NVIGZsYWcgaXMgc2V0IHRvIGluZm9ybSB0aGUgdXNlciB0aGF0Cit0aGUgY2hhbmdlIGhhcHBlbmVkIGFzIGEgcmVzdWx0IG9mIGFuIHVwZGF0ZS4KK1RoZSBtZXNzYWdlIHdpbGwgYWx3YXlzIGhhdmUgWEZSTUFfTFRJTUVfVkFMIGFuZCBYRlJNQV9SRVBMQVlfVkFMIFRMVnMuCisKK2l2KSBrZXJuZWwtPnVzZXIgdG8gcmVwb3J0IGV2ZW50IHdoZW4gcmVwbGF5IHRocmVzaG9sZCBvciBhIHRpbWVvdXQKK2lzIGV4Y2VlZGVkLgorSW4gc3VjaCBhIGNhc2UgZWl0aGVyIFhGUk1fQUVfQ1IgKHJlcGxheSBleGNlZWRlZCkgb3IgWEZSTV9BRV9DRSAodGltZW91dAoraGFwcGVuZWQpIGlzIHNldCB0byBpbmZvcm0gdGhlIHVzZXIgd2hhdCBoYXBwZW5lZC4KK05vdGUgdGhlIHR3byBmbGFncyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLgorVGhlIG1lc3NhZ2Ugd2lsbCBhbHdheXMgaGF2ZSBYRlJNQV9MVElNRV9WQUwgYW5kIFhGUk1BX1JFUExBWV9WQUwgVExWcy4KKworRXhjZXB0aW9ucyB0byB0aHJlc2hvbGQgc2V0dGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHlvdSBoYXZlIGFuIFNBIHRoYXQgaXMgZ2V0dGluZyBoaXQgYnkgdHJhZmZpYyBpbiBidXJzdHMgc3VjaCB0aGF0Cit0aGVyZSBpcyBhIHBlcmlvZCB3aGVyZSB0aGUgdGltZXIgdGhyZXNob2xkIGV4cGlyZXMgd2l0aCBubyBwYWNrZXRzCitzZWVuLCB0aGVuIGFuIG9kZCBiZWhhdmlvciBpcyBzZWVuIGFzIGZvbGxvd3M6CitUaGUgZmlyc3QgcGFja2V0IGFycml2YWwgYWZ0ZXIgYSB0aW1lciBleHBpcnkgd2lsbCB0cmlnZ2VyIGEgdGltZW91dAorYWV2ZW50OyBpLmUgd2UgZG9udCB3YWl0IGZvciBhIHRpbWVvdXQgcGVyaW9kIG9yIGEgcGFja2V0IHRocmVzaG9sZAordG8gYmUgcmVhY2hlZC4gVGhpcyBpcyBkb25lIGZvciBzaW1wbGljaXR5IGFuZCBlZmZpY2llbmN5IHJlYXNvbnMuCisKKy1KSFMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy94ZnJtX3N5c2N0bC50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveGZybV9zeXNjdGwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViYmQxNjcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveGZybV9zeXNjdGwudHh0CkBAIC0wLDAgKzEsNCBAQAorL3Byb2Mvc3lzL25ldC9jb3JlL3hmcm1fKiBWYXJpYWJsZXM6CisKK3hmcm1fYWNxX2V4cGlyZXMgLSBJTlRFR0VSCisJZGVmYXVsdCAzMCAtIGhhcmQgdGltZW91dCBpbiBzZWNvbmRzIGZvciBhY3F1aXJlIHJlcXVlc3RzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvejg1MzBkcnYudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3o4NTMwZHJ2LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjA2YWJiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3o4NTMwZHJ2LnR4dApAQCAtMCwwICsxLDY1NyBAQAorVGhpcyBpcyBhIHN1YnNldCBvZiB0aGUgZG9jdW1lbnRhdGlvbi4gVG8gdXNlIHRoaXMgZHJpdmVyIHlvdSBNVVNUIGhhdmUgdGhlCitmdWxsIHBhY2thZ2UgZnJvbToKKworSW50ZXJuZXQ6Cis9PT09PT09PT0KKworMS4gZnRwOi8vZnRwLmNjYWMucnd0aC1hYWNoZW4uZGUvcHViL2pyL3o4NTMwZHJ2LXV0aWxzXzMuMC0zLnRhci5negorCisyLiBmdHA6Ly9mdHAucHNwdC5maS9wdWIvaGFtL2xpbnV4L2F4MjUvejg1MzBkcnYtdXRpbHNfMy4wLTMudGFyLmd6CisKK1BsZWFzZSBub3RlIHRoYXQgdGhlIGluZm9ybWF0aW9uIGluIHRoaXMgZG9jdW1lbnQgbWF5IGJlIGhvcGVsZXNzbHkgb3V0ZGF0ZWQuCitBIG5ldyB2ZXJzaW9uIG9mIHRoZSBkb2N1bWVudGF0aW9uLCBhbG9uZyB3aXRoIGxpbmtzIHRvIG90aGVyIGltcG9ydGFudAorTGludXggS2VybmVsIEFYLjI1IGRvY3VtZW50YXRpb24gYW5kIHByb2dyYW1zLCBpcyBhdmFpbGFibGUgb24KK2h0dHA6Ly95YWluYS5kZS9qcmV1dGVyCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworCSBTQ0MuQyAtIExpbnV4IGRyaXZlciBmb3IgWjg1MzAgYmFzZWQgSERMQyBjYXJkcyBmb3IgQVguMjUgICAgICAKKworICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworICAgICAgICAoYykgMTk5MywyMDAwIGJ5IEpvZXJnIFJldXRlciBETDFCS0UgPGpyZXV0ZXJAeWFpbmEuZGU+CisKKyAgICAgICAgcG9ydGlvbnMgKGMpIDE5OTMgR3VpZG8gdGVuIERvbGxlIFBFMU5OWgorCisgICAgICAgIGZvciB0aGUgY29tcGxldGUgY29weXJpZ2h0IG5vdGljZSBzZWUgPj4gQ29weWluZy5aODUzMERSViA8PAorCisgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAKKworCisxLiBJbml0aWFsaXphdGlvbiBvZiB0aGUgZHJpdmVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RvIHVzZSB0aGUgZHJpdmVyLCAzIHN0ZXBzIG11c3QgYmUgcGVyZm9ybWVkOgorCisgICAgIDEuIGlmIGNvbXBpbGVkIGFzIG1vZHVsZTogbG9hZGluZyB0aGUgbW9kdWxlCisgICAgIDIuIFNldHVwIG9mIGhhcmR3YXJlLCBNT0RFTSBhbmQgS0lTUyBwYXJhbWV0ZXJzIHdpdGggc2NjaW5pdAorICAgICAzLiBBdHRhY2ggZWFjaCBjaGFubmVsIHRvIHRoZSBMaW51eCBrZXJuZWwgQVguMjUgd2l0aCAiaWZjb25maWciCisKK1VubGlrZSB0aGUgdmVyc2lvbnMgYmVsb3cgMi40IHRoaXMgZHJpdmVyIGlzIGEgcmVhbCBuZXR3b3JrIGRldmljZQorZHJpdmVyLiBJZiB5b3Ugd2FudCB0byBydW4geE5PUyBpbnN0ZWFkIG9mIG91ciBmaW5lIGtlcm5lbCBBWC4yNQordXNlIGEgMi54IHZlcnNpb24gKGF2YWlsYWJsZSBmcm9tIGFib3ZlIHNpdGVzKSBvciByZWFkIHRoZQorQVguMjUtSE9XVE8gb24gaG93IHRvIGVtdWxhdGUgYSBLSVNTIFROQyBvbiBuZXR3b3JrIGRldmljZSBkcml2ZXJzLgorCisKKzEuMSBMb2FkaW5nIHRoZSBtb2R1bGUKKz09PT09PT09PT09PT09PT09PT09PT0KKworKElmIHlvdSdyZSBnb2luZyB0byBjb21waWxlIHRoZSBkcml2ZXIgYXMgYSBwYXJ0IG9mIHRoZSBrZXJuZWwgaW1hZ2UsCisgc2tpcCB0aGlzIGNoYXB0ZXIgYW5kIGNvbnRpbnVlIHdpdGggMS4yKQorCitCZWZvcmUgeW91IGNhbiB1c2UgYSBtb2R1bGUsIHlvdSdsbCBoYXZlIHRvIGxvYWQgaXQgd2l0aAorCisJaW5zbW9kIHNjYy5vCisKK3BsZWFzZSByZWFkICdtYW4gaW5zbW9kJyB0aGF0IGNvbWVzIHdpdGggbW9kdWxlLWluaXQtdG9vbHMuCisKK1lvdSBzaG91bGQgaW5jbHVkZSB0aGUgaW5zbW9kIGluIG9uZSBvZiB0aGUgL2V0Yy9yYy5kL3JjLiogZmlsZXMsCithbmQgZG9uJ3QgZm9yZ2V0IHRvIGluc2VydCBhIGNhbGwgb2Ygc2NjaW5pdCBhZnRlciB0aGF0LiBJdAord2lsbCByZWFkIHlvdXIgL2V0Yy96ODUzMGRydi5jb25mLgorCisxLjIuIC9ldGMvejg1MzBkcnYuY29uZgorPT09PT09PT09PT09PT09PT09PT09PT0KKworVG8gc2V0dXAgYWxsIHBhcmFtZXRlcnMgeW91IG11c3QgcnVuIC9zYmluL3NjY2luaXQgZnJvbSBvbmUKK29mIHlvdXIgcmMuKi1maWxlcy4gVGhpcyBoYXMgdG8gYmUgZG9uZSBCRUZPUkUgeW91IGNhbgorImlmY29uZmlnIiBhbiBpbnRlcmZhY2UuIFNjY2luaXQgcmVhZHMgdGhlIGZpbGUgL2V0Yy96ODUzMGRydi5jb25mCithbmQgc2V0cyB0aGUgaGFyZHdhcmUsIE1PREVNIGFuZCBLSVNTIHBhcmFtZXRlcnMuIEEgc2FtcGxlIGZpbGUgaXMKK2RlbGl2ZXJlZCB3aXRoIHRoaXMgcGFja2FnZS4gQ2hhbmdlIGl0IHRvIHlvdXIgbmVlZHMuCisKK1RoZSBmaWxlIGl0c2VsZiBjb25zaXN0cyBvZiB0d28gbWFpbiBzZWN0aW9ucy4KKworMS4yLjEgY29uZmlndXJhdGlvbiBvZiBoYXJkd2FyZSBwYXJhbWV0ZXJzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGhhcmR3YXJlIHNldHVwIHNlY3Rpb24gZGVmaW5lcyB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnMgZm9yIGVhY2gKK1o4NTMwOgorCitjaGlwICAgIDEKK2RhdGFfYSAgMHgzMDAgICAgICAgICAgICAgICAgICAgIyBkYXRhIHBvcnQgQQorY3RybF9hICAweDMwNCAgICAgICAgICAgICAgICAgICAjIGNvbnRyb2wgcG9ydCBBCitkYXRhX2IgIDB4MzAxICAgICAgICAgICAgICAgICAgICMgZGF0YSBwb3J0IEIKK2N0cmxfYiAgMHgzMDUgICAgICAgICAgICAgICAgICAgIyBjb250cm9sIHBvcnQgQgoraXJxICAgICA1ICAgICAgICAgICAgICAgICAgICAgICAjIElSUSBOby4gNQorcGNsb2NrICA0OTE1MjAwICAgICAgICAgICAgICAgICAjIGNsb2NrCitib2FyZCAgIEJBWUNPTSAgICAgICAgICAgICAgICAgICMgaGFyZHdhcmUgdHlwZQorZXNjYyAgICBubyAgICAgICAgICAgICAgICAgICAgICAjIGVuaGFuY2VkIFNDQyBjaGlwPyAoODU4MC84NTE4MC84NTI4MCkKK3ZlY3RvciAgMCAgICAgICAgICAgICAgICAgICAgICAgIyBsYXRjaCBmb3IgaW50ZXJydXB0IHZlY3Rvcgorc3BlY2lhbCBubyAgICAgICAgICAgICAgICAgICAgICAjIGFkZHJlc3Mgb2Ygc3BlY2lhbCBmdW5jdGlvbiByZWdpc3Rlcgorb3B0aW9uICAwICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbiB0byBzZXQgdmlhIHNmcgorCisKK2NoaXAJLSB0aGlzIGlzIGp1c3QgYSBkZWxpbWl0ZXIgdG8gbWFrZSBzY2Npbml0IGEgYml0IHNpbXBsZXIgdG8KKwkgIHByb2dyYW0uIEEgcGFyYW1ldGVyIGhhcyBubyBlZmZlY3QuCisKK2RhdGFfYSAgLSB0aGUgYWRkcmVzcyBvZiB0aGUgZGF0YSBwb3J0IEEgb2YgdGhpcyBaODUzMCAobmVlZGVkKQorY3RybF9hICAtIHRoZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sIHBvcnQgQSAobmVlZGVkKQorZGF0YV9iICAtIHRoZSBhZGRyZXNzIG9mIHRoZSBkYXRhIHBvcnQgQiAobmVlZGVkKQorY3RybF9iICAtIHRoZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sIHBvcnQgQiAobmVlZGVkKQorCitpcnEgICAgIC0gdGhlIHVzZWQgSVJRIGZvciB0aGlzIGNoaXAuIERpZmZlcmVudCBjaGlwcyBjYW4gdXNlIGRpZmZlcmVudAorICAgICAgICAgIElSUXMgb3IgdGhlIHNhbWUuIElmIHRoZXkgc2hhcmUgYW4gaW50ZXJydXB0LCBpdCBuZWVkcyB0byBiZQorCSAgc3BlY2lmaWVkIHdpdGhpbiBvbmUgY2hpcC1kZWZpbml0aW9uIG9ubHkuCisKK3BjbG9jayAgLSB0aGUgY2xvY2sgYXQgdGhlIFBDTEsgcGluIG9mIHRoZSBaODUzMCAob3B0aW9uLCA0OTE1MjAwIGlzCisgICAgICAgICAgZGVmYXVsdCksIG1lYXN1cmVkIGluIEhlcnR6CisKK2JvYXJkICAgLSB0aGUgInR5cGUiIG9mIHRoZSBib2FyZDoKKworCSAgIFNDQyB0eXBlICAgICAgICAgICAgICAgICB2YWx1ZQorCSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCSAgIFBBMEhaUCBTQ0MgY2FyZCAgICAgICAgICBQQTBIWlAKKwkgICBFQUdMRSBjYXJkICAgICAgICAgICAgICAgRUFHTEUKKwkgICBQQzEwMCBjYXJkICAgICAgICAgICAgICAgUEMxMDAKKwkgICBQUklNVVMtUEMgKERHOUJMKSBjYXJkICAgUFJJTVVTCisJICAgQmF5Q29tIChVKVNDQyBjYXJkICAgICAgIEJBWUNPTQorCitlc2NjICAgIC0gaWYgeW91IHdhbnQgc3VwcG9ydCBmb3IgRVNDQyBjaGlwcyAoODU4MCwgODUxODAsIDg1MjgwKSwgc2V0CisgICAgICAgICAgdGhpcyB0byAieWVzIiAob3B0aW9uLCBkZWZhdWx0cyB0byAibm8iKQorCit2ZWN0b3IgIC0gYWRkcmVzcyBvZiB0aGUgdmVjdG9yIGxhdGNoIChha2EgImludGFjayBwb3J0IikgZm9yIFBBMEhaUAorICAgICAgICAgIGNhcmRzLiBUaGVyZSBjYW4gYmUgb25seSBvbmUgdmVjdG9yIGxhdGNoIGZvciBhbGwgY2hpcHMhCisJICAob3B0aW9uLCBkZWZhdWx0cyB0byAwKQorCitzcGVjaWFsIC0gYWRkcmVzcyBvZiB0aGUgc3BlY2lhbCBmdW5jdGlvbiByZWdpc3RlciBvbiBzZXZlcmFsIGNhcmRzLgorICAgICAgICAgIChvcHRpb24sIGRlZmF1bHRzIHRvIDApCisKK29wdGlvbiAgLSBUaGUgdmFsdWUgeW91IHdyaXRlIGludG8gdGhhdCByZWdpc3RlciAob3B0aW9uLCBkZWZhdWx0IGlzIDApCisKK1lvdSBjYW4gc3BlY2lmeSB1cCB0byBmb3VyIGNoaXBzICg4IGNoYW5uZWxzKS4gSWYgdGhpcyBpcyBub3QgZW5vdWdoLAoranVzdCBjaGFuZ2UKKworCSNkZWZpbmUgTUFYU0NDIDQKKwordG8gYSBoaWdoZXIgdmFsdWUuCisKK0V4YW1wbGUgZm9yIHRoZSBCQVlDT00gVVNDQzoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2hpcCAgICAxCitkYXRhX2EgIDB4MzAwICAgICAgICAgICAgICAgICAgICMgZGF0YSBwb3J0IEEKK2N0cmxfYSAgMHgzMDQgICAgICAgICAgICAgICAgICAgIyBjb250cm9sIHBvcnQgQQorZGF0YV9iICAweDMwMSAgICAgICAgICAgICAgICAgICAjIGRhdGEgcG9ydCBCCitjdHJsX2IgIDB4MzA1ICAgICAgICAgICAgICAgICAgICMgY29udHJvbCBwb3J0IEIKK2lycSAgICAgNSAgICAgICAgICAgICAgICAgICAgICAgIyBJUlEgTm8uIDUgKCMpCitib2FyZCAgIEJBWUNPTSAgICAgICAgICAgICAgICAgICMgaGFyZHdhcmUgdHlwZSAoKikKKyMKKyMgU0NDIGNoaXAgMgorIworY2hpcCAgICAyCitkYXRhX2EgIDB4MzAyCitjdHJsX2EgIDB4MzA2CitkYXRhX2IgIDB4MzAzCitjdHJsX2IgIDB4MzA3Citib2FyZCAgIEJBWUNPTQorCitBbiBleGFtcGxlIGZvciBhIFBBMEhaUCBjYXJkOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2hpcCAxCitkYXRhX2EgMHgxNTMKK2RhdGFfYiAweDE1MQorY3RybF9hIDB4MTUyCitjdHJsX2IgMHgxNTAKK2lycSA5CitwY2xvY2sgNDkxNTIwMAorYm9hcmQgUEEwSFpQCit2ZWN0b3IgMHgxNjgKK2VzY2Mgbm8KKyMKKyMKKyMKK2NoaXAgMgorZGF0YV9hIDB4MTU3CitkYXRhX2IgMHgxNTUKK2N0cmxfYSAweDE1NgorY3RybF9iIDB4MTU0CitpcnEgOQorcGNsb2NrIDQ5MTUyMDAKK2JvYXJkIFBBMEhaUAordmVjdG9yIDB4MTY4Citlc2NjIG5vCisKK0EgRFJTSSB3b3VsZCBzaG91bGQgcHJvYmFibHkgd29yayB3aXRoIHRoaXM6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKGFjdHVhbGx5OiB0d28gRFJTSSBjYXJkcy4uLikKKworY2hpcCAxCitkYXRhX2EgMHgzMDMKK2RhdGFfYiAweDMwMQorY3RybF9hIDB4MzAyCitjdHJsX2IgMHgzMDAKK2lycSA3CitwY2xvY2sgNDkxNTIwMAorYm9hcmQgRFJTSQorZXNjYyBubworIworIworIworY2hpcCAyCitkYXRhX2EgMHgzMTMKK2RhdGFfYiAweDMxMQorY3RybF9hIDB4MzEyCitjdHJsX2IgMHgzMTAKK2lycSA3CitwY2xvY2sgNDkxNTIwMAorYm9hcmQgRFJTSQorZXNjYyBubworCitOb3RlIHRoYXQgeW91IGNhbm5vdCB1c2UgdGhlIG9uLWJvYXJkIGJhdWRyYXRlIGdlbmVyYXRvciBvZmYgRFJTSQorY2FyZHMuIFVzZSAibW9kZSBkcGxsIiBmb3IgY2xvY2sgc291cmNlIChzZWUgYmVsb3cpLgorCitUaGlzIGlzIGJhc2VkIG9uIGluZm9ybWF0aW9uIHByb3ZpZGVkIGJ5IE1pa2UgQmlsb3cgKGFuZCB2ZXJpZmllZAorYnkgUGF1bCBIZWxheSkKKworVGhlIHV0aWxpdHkgImdlbmNmZyIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHlvdSBvbmx5IGtub3cgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBQRTFDSEwgZHJpdmVyIGZvciBET1MsCitydW4gZ2VuY2ZnLiBJdCB3aWxsIGdlbmVyYXRlIHRoZSBjb3JyZWN0IHBvcnQgYWRkcmVzc2VzIChJIGhvcGUpLgorSXRzIHBhcmFtZXRlcnMgYXJlIGV4YWN0bHkgdGhlIHNhbWUgYXMgdGhlIG9uZXMgeW91IHVzZSB3aXRoCit0aGUgImF0dGFjaCBzY2MiIGNvbW1hbmQgaW4gbmV0LCBleGNlcHQgdGhhdCB0aGUgc3RyaW5nICJpbml0IiBtdXN0IAorbm90IGFwcGVhci4gRXhhbXBsZToKKworZ2VuY2ZnIDIgMHgxNTAgNCAyIDAgMSAweDE2OCA5IDQ5MTUyMDAgCisKK3dpbGwgcHJpbnQgYSBza2VsZXRvbiB6ODUzMGRydi5jb25mIGZvciB0aGUgT3B0b1NDQyB0byBzdGRvdXQuCisKK2dlbmNmZyAyIDB4MzAwIDIgNCA1IC00IDAgNyA0OTE1MjAwIDB4MTAKKworZG9lcyB0aGUgc2FtZSBmb3IgdGhlIEJBWUNPTSBVU0NDIGNhcmQuIEluIG15IG9waW5pb24gaXQgaXMgbXVjaCBlYXNpZXIKK3RvIGVkaXQgc2NjX2NvbmZpZy5oLi4uIAorCisKKzEuMi4yIGNoYW5uZWwgY29uZmlndXJhdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBjaGFubmVsIGRlZmluaXRpb24gaXMgZGl2aWRlZCBpbnRvIHRocmVlIHN1YiBzZWN0aW9ucyBmb3IgZWFjaAorY2hhbm5lbDoKKworQW4gZXhhbXBsZSBmb3Igc2NjMDoKKworIyBERVZJQ0UKKworZGV2aWNlIHNjYzAJIyB0aGUgZGV2aWNlIGZvciB0aGUgZm9sbG93aW5nIHBhcmFtcworCisjIE1PREVNIC8gQlVGRkVSUworCitzcGVlZCAxMjAwCQkjIHRoZSBkZWZhdWx0IGJhdWRyYXRlCitjbG9jayBkcGxsCQkjIGNsb2NrIHNvdXJjZTogCisJCQkjIAlkcGxsICAgICA9IG5vcm1hbCBoYWxmIGR1cGxleCBvcGVyYXRpb24KKwkJCSMgCWV4dGVybmFsID0gTU9ERU0gcHJvdmlkZXMgb3duIFJ4L1R4IGNsb2NrCisJCQkjCWRpdmlkZXIgID0gdXNlIGZ1bGwgZHVwbGV4IGRpdmlkZXIgaWYKKwkJCSMJCSAgIGluc3RhbGxlZCAoMSkKK21vZGUgbnJ6aQkJIyBIRExDIGVuY29kaW5nIG1vZGUKKwkJCSMJbnJ6aSA9IDFrMiBNT0RFTSwgRzNSVUggOWs2IE1PREVNCisJCQkjCW5yeiAgPSBERjlJQyA5azYgTU9ERU0KKwkJCSMKK2J1ZnNpemUJMzg0CQkjIHNpemUgb2YgYnVmZmVycy4gTm90ZSB0aGF0IHRoaXMgbXVzdCBpbmNsdWRlCisJCQkjIHRoZSBBWC4yNSBoZWFkZXIsIG5vdCBvbmx5IHRoZSBkYXRhIGZpZWxkIQorCQkJIyAob3B0aW9uYWwsIGRlZmF1bHRzIHRvIDM4NCkKKworIyBLSVNTIChMYXllciAxKQorCit0eGRlbGF5IDM2ICAgICAgICAgICAgICAjIChzZWUgY2hhcHRlciAxLjQpCitwZXJzaXN0IDY0CitzbG90ICAgIDgKK3RhaWwgICAgOAorZnVsbGR1cCAwCit3YWl0ICAgIDEyCittaW4gICAgIDMKK21heGtleSAgNworaWRsZSAgICAzCittYXhkZWYgIDEyMAorZ3JvdXAgICAwCit0eG9mZiAgIG9mZgorc29mdGRjZCBvbiAgICAgICAgICAgICAgICAgICAKK3NsaXAgICAgb2ZmCisKK1RoZSBvcmRlciBXSVRISU4gdGhlc2Ugc2VjdGlvbnMgaXMgdW5pbXBvcnRhbnQuIFRoZSBvcmRlciBPRiB0aGVzZQorc2VjdGlvbnMgSVMgaW1wb3J0YW50LiBUaGUgTU9ERU0gcGFyYW1ldGVycyBhcmUgc2V0IHdpdGggdGhlIGZpcnN0CityZWNvZ25pemVkIEtJU1MgcGFyYW1ldGVyLi4uCisKK1BsZWFzZSBub3RlIHRoYXQgeW91IGNhbiBpbml0aWFsaXplIHRoZSBib2FyZCBvbmx5IG9uY2UgYWZ0ZXIgYm9vdAorKG9yIGluc21vZCkuIFlvdSBjYW4gY2hhbmdlIGFsbCBwYXJhbWV0ZXJzIGJ1dCAibW9kZSIgYW5kICJjbG9jayIgCitsYXRlciB3aXRoIHRoZSBTY2NwYXJhbSBwcm9ncmFtIG9yIHRocm91Z2ggS0lTUy4gSnVzdCB0byBhdm9pZCAKK3NlY3VyaXR5IGhvbGVzLi4uIAorCisoMSkgdGhpcyBkaXZpZGVyIGlzIHVzdWFsbHkgbW91bnRlZCBvbiB0aGUgU0NDLVBCQyAoUEEwSFpQKSBvciBub3QKKyAgICBwcmVzZW50IGF0IGFsbCAoQmF5Q29tKS4gSXQgZmVlZHMgYmFjayB0aGUgb3V0cHV0IG9mIHRoZSBEUExMIAorICAgIChkaWdpdGFsIHBsbCkgYXMgdHJhbnNtaXQgY2xvY2suIFVzaW5nIHRoaXMgbW9kZSB3aXRob3V0IGEgZGl2aWRlciAKKyAgICBpbnN0YWxsZWQgd2lsbCBub3JtYWxseSByZXN1bHQgaW4ga2V5aW5nIHRoZSB0cmFuc2NlaXZlciB1bnRpbCAKKyAgICBtYXhrZXkgZXhwaXJlcyAtLS0gb2YgY291cnNlIHdpdGhvdXQgc2VuZGluZyBhbnl0aGluZyAodXNlZnVsKS4KKworMi4gQXR0YWNobWVudCBvZiBhIGNoYW5uZWwgYnkgeW91ciBBWC4yNSBzb2Z0d2FyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisyLjEgS2VybmVsIEFYLjI1Cis9PT09PT09PT09PT09PT09CisKK1RvIHNldCB1cCBhbiBBWC4yNSBkZXZpY2UgeW91IGNhbiBzaW1wbHkgdHlwZToKKworCWlmY29uZmlnIHNjYzAgNDQuMTI4LjEuMSBodyBheDI1IGRsMHRoYS03CisKK1RoaXMgd2lsbCBjcmVhdGUgYSBuZXR3b3JrIGludGVyZmFjZSB3aXRoIHRoZSBJUCBudW1iZXIgNDQuMTI4LjIwLjEwNyAKK2FuZCB0aGUgY2FsbHNpZ24gImRsMHRoYSIuIElmIHlvdSBkbyBub3QgaGF2ZSBhbnkgSVAgbnVtYmVyICh5ZXQpIHlvdSAKK2NhbiB1c2UgYW55IG9mIHRoZSA0NC4xMjguMC4wIG5ldHdvcmsuIE5vdGUgdGhhdCB5b3UgZG8gbm90IG5lZWQgCitheGF0dGFjaC4gVGhlIHB1cnBvc2Ugb2YgYXhhdHRhY2ggKGxpa2Ugc2xhdHRhY2gpIGlzIHRvIGNyZWF0ZSBhIEtJU1MgCituZXR3b3JrIGRldmljZSBsaW5rZWQgdG8gYSBUVFkuIFBsZWFzZSByZWFkIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSAKK2F4MjUtdXRpbHMgYW5kIHRoZSBBWC4yNS1IT1dUTyB0byBsZWFybiBob3cgdG8gc2V0IHRoZSBwYXJhbWV0ZXJzIG9mCit0aGUga2VybmVsIEFYLjI1LgorCisyLjIgTk9TLCBORVQgYW5kIFRGS0lTUworPT09PT09PT09PT09PT09PT09PT09PT0KKworU2luY2UgdGhlIFRUWSBkcml2ZXIgKGFrYSBLSVNTIFROQyBlbXVsYXRpb24pIGlzIGdvbmUgeW91IG5lZWQKK3RvIGVtdWxhdGUgdGhlIG9sZCBiZWhhdmlvdXIuIFRoZSBjb3N0IG9mIHVzaW5nIHRoZXNlIHByb2dyYW1zIGlzCit0aGF0IHlvdSBwcm9iYWJseSBuZWVkIHRvIGNvbXBpbGUgdGhlIGtlcm5lbCBBWC4yNSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyCit5b3UgYWN0dWFsbHkgdXNlIGl0IG9yIG5vdC4gRmlyc3Qgc2V0dXAgeW91ciAvZXRjL2F4MjUvYXhwb3J0cywKK2ZvciBleGFtcGxlOgorCisJOWs2CWRsMHRoYS05ICA5NjAwICAyNTUgNCA5NjAwIGJhdWQgcG9ydCAoc2NjMykKKwlheGxpbmsJZGwwdGhhLTE1IDM4NDAwIDI1NSA0IExpbmsgdG8gTk9TCisKK05vdyAiaWZjb25maWciIHRoZSBzY2MgZGV2aWNlOgorCisJaWZjb25maWcgc2NjMyA0NC4xMjguMS4xIGh3IGF4MjUgZGwwdGhhLTkKKworWW91IGNhbiBub3cgYXhhdHRhY2ggYSBwc2V1ZG8tVFRZOgorCisJYXhhdHRhY2ggL2Rldi9wdHlzMCBheGxpbmsKKworYW5kIHN0YXJ0IHlvdXIgTk9TIGFuZCBhdHRhY2ggL2Rldi9wdHlzMCB0aGVyZS4gVGhlIHByb2JsZW0gaXMgdGhhdAorTk9TIGlzIHJlYWNoYWJsZSBvbmx5IHZpYSBkaWdpcGVhdGluZyB0aHJvdWdoIHRoZSBrZXJuZWwgQVguMjUKKyhkaXNhc3Ryb3VzIG9uIGEgREFNQSBjb250cm9sbGVkIGNoYW5uZWwpLiBUbyBzb2x2ZSB0aGlzIHByb2JsZW0sCitjb25maWd1cmUgInJ4ZWNobyIgdG8gZWNobyB0aGUgaW5jb21pbmcgZnJhbWVzIGZyb20gIjlrNiIgdG8gImF4bGluayIKK2FuZCBvdXRnb2luZyBmcmFtZXMgZnJvbSAiYXhsaW5rIiB0byAiOWs2IiBhbmQgc3RhcnQ6CisKKwlyeGVjaG8KKworT3Igc2ltcGx5IHVzZSAia2lzc2JyaWRnZSIgY29taW5nIHdpdGggejg1MzBkcnYtdXRpbHM6CisKKwlpZmNvbmZpZyBzY2MzIGh3IGF4MjUgZGwwdGhhLTkKKwlraXNzYnJpZGdlIHNjYzMgL2Rldi9wdHlzMAorCisKKzMuIEFkanVzdG1lbnQgYW5kIERpc3BsYXkgb2YgcGFyYW1ldGVycworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzMuMSBEaXNwbGF5aW5nIFNDQyBQYXJhbWV0ZXJzOgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK09uY2UgYSBTQ0MgY2hhbm5lbCBoYXMgYmVlbiBhdHRhY2hlZCwgdGhlIHBhcmFtZXRlciBzZXR0aW5ncyBhbmQgCitzb21lIHN0YXRpc3RpYyBpbmZvcm1hdGlvbiBjYW4gYmUgc2hvd24gdXNpbmcgdGhlIHBhcmFtIHByb2dyYW06CisKK2RsMWJrZS11On4kIHNjY3N0YXQgc2NjMAorCitQYXJhbWV0ZXJzOgorCitzcGVlZCAgICAgICA6IDEyMDAgYmF1ZAordHhkZWxheSAgICAgOiAzNgorcGVyc2lzdCAgICAgOiAyNTUKK3Nsb3R0aW1lICAgIDogMAordHh0YWlsICAgICAgOiA4CitmdWxsZHVwICAgICA6IDEKK3dhaXR0aW1lICAgIDogMTIKK21pbnRpbWUgICAgIDogMyBzZWMKK21heGtleXVwICAgIDogNyBzZWMKK2lkbGV0aW1lICAgIDogMyBzZWMKK21heGRlZmVyICAgIDogMTIwIHNlYworZ3JvdXAgICAgICAgOiAweDAwCit0eG9mZiAgICAgICA6IG9mZgorc29mdGRjZCAgICAgOiBvbgorU0xJUCAgICAgICAgOiBvZmYKKworU3RhdHVzOgorCitIRExDICAgICAgICAgICAgICAgICAgWjg1MzAgICAgICAgICAgIEludGVycnVwdHMgICAgICAgICBCdWZmZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU2VudCAgICAgICA6ICAgICAyNzMgIFJ4T3ZlciA6ICAgICAwICBSeEludHMgOiAgIDEyNTA3NCAgU2l6ZSAgICA6ICAzODQKK1JlY2VpdmVkICAgOiAgICAxMDk1ICBUeFVuZGVyOiAgICAgMCAgVHhJbnRzIDogICAgIDQ2ODQgIE5vU3BhY2UgOiAgICAwCitSeEVycm9ycyAgIDogICAgMTU5MSAgICAgICAgICAgICAgICAgIEV4SW50cyA6ICAgIDExNzc2CitUeEVycm9ycyAgIDogICAgICAgMCAgICAgICAgICAgICAgICAgIFNwSW50cyA6ICAgICAxNTAzCitUeCBTdGF0ZSAgIDogICAgaWRsZQorCisKK1RoZSBzdGF0dXMgaW5mbyBzaG93biBpczoKKworU2VudAkJLSBudW1iZXIgb2YgZnJhbWVzIHRyYW5zbWl0dGVkCitSZWNlaXZlZAktIG51bWJlciBvZiBmcmFtZXMgcmVjZWl2ZWQKK1J4RXJyb3JzCS0gbnVtYmVyIG9mIHJlY2VpdmUgZXJyb3JzIChDUkMsIEFCT1JUKQorVHhFcnJvcnMJLSBudW1iZXIgb2YgZGlzY2FyZGVkIFR4IGZyYW1lcyAoZHVlIHRvIHZhcmlvdXMgcmVhc29ucykgCitUeCBTdGF0ZQktIHN0YXR1cyBvZiB0aGUgVHggaW50ZXJydXB0IGhhbmRsZXI6IGlkbGUvYnVzeS9hY3RpdmUvdGFpbCAoMikKK1J4T3ZlcgkJLSBudW1iZXIgb2YgcmVjZWl2ZXIgb3ZlcnJ1bnMKK1R4VW5kZXIJCS0gbnVtYmVyIG9mIHRyYW5zbWl0dGVyIHVuZGVycnVucworUnhJbnRzCQktIG51bWJlciBvZiByZWNlaXZlciBpbnRlcnJ1cHRzCitUeEludHMJCS0gbnVtYmVyIG9mIHRyYW5zbWl0dGVyIGludGVycnVwdHMKK0VwSW50cwkJLSBudW1iZXIgb2YgcmVjZWl2ZXIgc3BlY2lhbCBjb25kaXRpb24gaW50ZXJydXB0cworU3BJbnRzCQktIG51bWJlciBvZiBleHRlcm5hbC9zdGF0dXMgaW50ZXJydXB0cworU2l6ZQkJLSBtYXhpbXVtIHNpemUgb2YgYW4gQVguMjUgZnJhbWUgKCp3aXRoKiBBWC4yNSBoZWFkZXJzISkKK05vU3BhY2UJCS0gbnVtYmVyIG9mIHRpbWVzIGEgYnVmZmVyIGNvdWxkIG5vdCBnZXQgYWxsb2NhdGVkCisKK0FuIG92ZXJydW4gaXMgYWJub3JtYWwuIElmIGxvdHMgb2YgdGhlc2Ugb2NjdXIsIHRoZSBwcm9kdWN0IG9mCitiYXVkcmF0ZSBhbmQgbnVtYmVyIG9mIGludGVyZmFjZXMgaXMgdG9vIGhpZ2ggZm9yIHRoZSBwcm9jZXNzaW5nCitwb3dlciBvZiB5b3VyIGNvbXB1dGVyLiBOb1NwYWNlIGVycm9ycyBhcmUgdW5saWtlbHkgdG8gYmUgY2F1c2VkIGJ5IHRoZQorZHJpdmVyIG9yIHRoZSBrZXJuZWwgQVguMjUuCisKKworMy4yIFNldHRpbmcgUGFyYW1ldGVycworPT09PT09PT09PT09PT09PT09PT09PQorCisKK1RoZSBzZXR0aW5nIG9mIHBhcmFtZXRlcnMgb2YgdGhlIGVtdWxhdGVkIEtJU1MgVE5DIGlzIGRvbmUgaW4gdGhlIAorc2FtZSB3YXkgaW4gdGhlIFNDQyBkcml2ZXIuIFlvdSBjYW4gY2hhbmdlIHBhcmFtZXRlcnMgYnkgdXNpbmcKK3RoZSBraXNzcGFybXMgcHJvZ3JhbSBmcm9tIHRoZSBheDI1LXV0aWxzIHBhY2thZ2Ugb3IgdXNlIHRoZSBwcm9ncmFtIAorInNjY3BhcmFtIjoKKworICAgICBzY2NwYXJhbSA8ZGV2aWNlPiA8cGFyYW1uYW1lPiA8ZGVjaW1hbC18aGV4YWRlY2ltYWwgdmFsdWU+CisKK1lvdSBjYW4gY2hhbmdlIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczoKKworcGFyYW0JICAgIDogdmFsdWUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorc3BlZWQgICAgICAgOiAxMjAwCit0eGRlbGF5ICAgICA6IDM2CitwZXJzaXN0ICAgICA6IDI1NQorc2xvdHRpbWUgICAgOiAwCit0eHRhaWwgICAgICA6IDgKK2Z1bGxkdXAgICAgIDogMQord2FpdHRpbWUgICAgOiAxMgorbWludGltZSAgICAgOiAzCittYXhrZXl1cCAgICA6IDcKK2lkbGV0aW1lICAgIDogMworbWF4ZGVmZXIgICAgOiAxMjAKK2dyb3VwICAgICAgIDogMHgwMAordHhvZmYgICAgICAgOiBvZmYKK3NvZnRkY2QgICAgIDogb24KK1NMSVAgICAgICAgIDogb2ZmCisKKworVGhlIHBhcmFtZXRlcnMgaGF2ZSB0aGUgZm9sbG93aW5nIG1lYW5pbmc6CisKK3NwZWVkOgorICAgICBUaGUgYmF1ZHJhdGUgb24gdGhpcyBjaGFubmVsIGluIGJpdHMvc2VjCisKKyAgICAgRXhhbXBsZTogc2NjcGFyYW0gL2Rldi9zY2MzIHNwZWVkIDk2MDAKKwordHhkZWxheToKKyAgICAgVGhlIGRlbGF5IChpbiB1bml0cyBvZiAxMCBtcykgYWZ0ZXIga2V5aW5nIG9mIHRoZSAKKyAgICAgdHJhbnNtaXR0ZXIsIHVudGlsIHRoZSBmaXJzdCBieXRlIGlzIHNlbnQuIFRoaXMgaXMgdXN1YWxseSAKKyAgICAgY2FsbGVkICJUWERFTEFZIiBpbiBhIFROQy4gIFdoZW4gMCBpcyBzcGVjaWZpZWQsIHRoZSBkcml2ZXIgCisgICAgIHdpbGwganVzdCB3YWl0IHVudGlsIHRoZSBDVFMgc2lnbmFsIGlzIGFzc2VydGVkLiBUaGlzIAorICAgICBhc3N1bWVzIHRoZSBwcmVzZW5jZSBvZiBhIHRpbWVyIG9yIG90aGVyIGNpcmN1aXRyeSBpbiB0aGUgCisgICAgIE1PREVNIGFuZC9vciB0cmFuc21pdHRlciwgdGhhdCBhc3NlcnRzIENUUyB3aGVuIHRoZSAKKyAgICAgdHJhbnNtaXR0ZXIgaXMgcmVhZHkgZm9yIGRhdGEuCisgICAgIEEgbm9ybWFsIHZhbHVlIG9mIHRoaXMgcGFyYW1ldGVyIGlzIDMwLTM2LgorCisgICAgIEV4YW1wbGU6IHNjY3BhcmFtIC9kZXYvc2NjMCB0eGQgMjAKKworcGVyc2lzdDoKKyAgICAgVGhpcyBpcyB0aGUgcHJvYmFiaWxpdHkgdGhhdCB0aGUgdHJhbnNtaXR0ZXIgd2lsbCBiZSBrZXllZCAKKyAgICAgd2hlbiB0aGUgY2hhbm5lbCBpcyBmb3VuZCB0byBiZSBmcmVlLiAgSXQgaXMgYSB2YWx1ZSBmcm9tIDAgCisgICAgIHRvIDI1NSwgYW5kIHRoZSBwcm9iYWJpbGl0eSBpcyAodmFsdWUrMSkvMjU2LiAgVGhlIHZhbHVlIAorICAgICBzaG91bGQgYmUgc29tZXdoZXJlIG5lYXIgNTAtNjAsIGFuZCBzaG91bGQgYmUgbG93ZXJlZCB3aGVuIAorICAgICB0aGUgY2hhbm5lbCBpcyB1c2VkIG1vcmUgaGVhdmlseS4KKworICAgICBFeGFtcGxlOiBzY2NwYXJhbSAvZGV2L3NjYzIgcGVyc2lzdCAyMAorCitzbG90dGltZToKKyAgICAgVGhpcyBpcyB0aGUgdGltZSBiZXR3ZWVuIHNhbXBsZXMgb2YgdGhlIGNoYW5uZWwuIEl0IGlzIAorICAgICBleHByZXNzZWQgaW4gdW5pdHMgb2YgMTAgbXMuICBBYm91dCAyMDAtMzAwIG1zICh2YWx1ZSAyMC0zMCkgCisgICAgIHNlZW1zIHRvIGJlIGEgZ29vZCB2YWx1ZS4KKworICAgICBFeGFtcGxlOiBzY2NwYXJhbSAvZGV2L3NjYzAgc2xvdCAyMAorCit0YWlsOgorICAgICBUaGUgdGltZSB0aGUgdHJhbnNtaXR0ZXIgd2lsbCByZW1haW4ga2V5ZWQgYWZ0ZXIgdGhlIGxhc3QgCisgICAgIGJ5dGUgb2YgYSBwYWNrZXQgaGFzIGJlZW4gdHJhbnNmZXJyZWQgdG8gdGhlIFNDQy4gVGhpcyBpcyAKKyAgICAgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIENSQyBhbmQgYSBmbGFnIHN0aWxsIGhhdmUgdG8gbGVhdmUgdGhlIAorICAgICBTQ0MgYmVmb3JlIHRoZSB0cmFuc21pdHRlciBpcyBrZXllZCBkb3duLiBUaGUgdmFsdWUgZGVwZW5kcyAKKyAgICAgb24gdGhlIGJhdWRyYXRlIHNlbGVjdGVkLiAgQSBmZXcgY2hhcmFjdGVyIHRpbWVzIHNob3VsZCBiZSAKKyAgICAgc3VmZmljaWVudCwgZS5nLiA0MG1zIGF0IDEyMDAgYmF1ZC4gKHZhbHVlIDQpCisgICAgIFRoZSB2YWx1ZSBvZiB0aGlzIHBhcmFtZXRlciBpcyBpbiAxMCBtcyB1bml0cy4KKworICAgICBFeGFtcGxlOiBzY2NwYXJhbSAvZGV2L3NjYzIgNAorCitmdWxsOgorICAgICBUaGUgZnVsbC1kdXBsZXggbW9kZSBzd2l0Y2guIFRoaXMgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIAorICAgICB2YWx1ZXM6CisKKyAgICAgMDogICBUaGUgaW50ZXJmYWNlIHdpbGwgb3BlcmF0ZSBpbiBDU01BIG1vZGUgKHRoZSBub3JtYWwgCisgICAgICAgICAgaGFsZi1kdXBsZXggcGFja2V0IHJhZGlvIG9wZXJhdGlvbikKKyAgICAgMTogICBGdWxsZHVwbGV4IG1vZGUsIGkuZS4gdGhlIHRyYW5zbWl0dGVyIHdpbGwgYmUga2V5ZWQgYXQgCisgICAgICAgICAgYW55IHRpbWUsIHdpdGhvdXQgY2hlY2tpbmcgdGhlIHJlY2VpdmVkIGNhcnJpZXIuICBJdCAKKyAgICAgICAgICB3aWxsIGJlIHVua2V5ZWQgd2hlbiB0aGVyZSBhcmUgbm8gcGFja2V0cyB0byBiZSBzZW50LgorICAgICAyOiAgIExpa2UgMSwgYnV0IHRoZSB0cmFuc21pdHRlciB3aWxsIHJlbWFpbiBrZXllZCwgYWxzbyAKKyAgICAgICAgICB3aGVuIHRoZXJlIGFyZSBubyBwYWNrZXRzIHRvIGJlIHNlbnQuICBGbGFncyB3aWxsIGJlIAorICAgICAgICAgIHNlbnQgaW4gdGhhdCBjYXNlLCB1bnRpbCBhIHRpbWVvdXQgKHBhcmFtZXRlciAxMCkgCisgICAgICAgICAgb2NjdXJzLgorCisgICAgIEV4YW1wbGU6IHNjY3BhcmFtIC9kZXYvc2NjMCBmdWxsZHVwIG9mZgorCit3YWl0OgorICAgICBUaGUgaW5pdGlhbCB3YWl0dGltZSBiZWZvcmUgYW55IHRyYW5zbWl0IGF0dGVtcHQsIGFmdGVyIHRoZSAKKyAgICAgZnJhbWUgaGFzIGJlZW4gcXVldWUgZm9yIHRyYW5zbWl0LiAgVGhpcyBpcyB0aGUgbGVuZ3RoIG9mIAorICAgICB0aGUgZmlyc3Qgc2xvdCBpbiBDU01BIG1vZGUuICBJbiBmdWxsIGR1cGxleCBtb2RlcyBpdCBpcworICAgICBzZXQgdG8gMCBmb3IgbWF4aW11bSBwZXJmb3JtYW5jZS4KKyAgICAgVGhlIHZhbHVlIG9mIHRoaXMgcGFyYW1ldGVyIGlzIGluIDEwIG1zIHVuaXRzLiAKKworICAgICBFeGFtcGxlOiBzY2NwYXJhbSAvZGV2L3NjYzEgd2FpdCA0CisKK21heGtleToKKyAgICAgVGhlIG1heGltYWwgdGltZSB0aGUgdHJhbnNtaXR0ZXIgd2lsbCBiZSBrZXllZCB0byBzZW5kIAorICAgICBwYWNrZXRzLCBpbiBzZWNvbmRzLiAgVGhpcyBjYW4gYmUgdXNlZnVsIG9uIGJ1c3kgQ1NNQSAKKyAgICAgY2hhbm5lbHMsIHRvIGF2b2lkICJnZXR0aW5nIGEgYmFkIHJlcHV0YXRpb24iIHdoZW4geW91IGFyZSAKKyAgICAgZ2VuZXJhdGluZyBhIGxvdCBvZiB0cmFmZmljLiAgQWZ0ZXIgdGhlIHNwZWNpZmllZCB0aW1lIGhhcyAKKyAgICAgZWxhcHNlZCwgbm8gbmV3IGZyYW1lIHdpbGwgYmUgc3RhcnRlZC4gSW5zdGVhZCwgdGhlIHRyYW5zLQorICAgICBtaXR0ZXIgd2lsbCBiZSBzd2l0Y2hlZCBvZmYgZm9yIGEgc3BlY2lmaWVkIHRpbWUgKHBhcmFtZXRlciAKKyAgICAgbWluKSwgYW5kIHRoZW4gdGhlIHNlbGVjdGVkIGFsZ29yaXRobSBmb3Iga2V5dXAgd2lsbCBiZSAKKyAgICAgc3RhcnRlZCBhZ2Fpbi4KKyAgICAgVGhlIHZhbHVlIDAgYXMgd2VsbCBhcyAib2ZmIiB3aWxsIGRpc2FibGUgdGhpcyBmZWF0dXJlLCAKKyAgICAgYW5kIGFsbG93IGluZmluaXRlIHRyYW5zbWlzc2lvbiB0aW1lLiAKKworICAgICBFeGFtcGxlOiBzY2NwYXJhbSAvZGV2L3NjYzAgbWF4ayAyMAorCittaW46CisgICAgIFRoaXMgaXMgdGhlIHRpbWUgdGhlIHRyYW5zbWl0dGVyIHdpbGwgYmUgc3dpdGNoZWQgb2ZmIHdoZW4gCisgICAgIHRoZSBtYXhpbXVtIHRyYW5zbWlzc2lvbiB0aW1lIGlzIGV4Y2VlZGVkLgorCisgICAgIEV4YW1wbGU6IHNjY3BhcmFtIC9kZXYvc2NjMyBtaW4gMTAKKworaWRsZQorICAgICBUaGlzIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIG1heGltdW0gaWRsZSB0aW1lIGluIGZ1bGwgZHVwbGV4IAorICAgICAyIG1vZGUsIGluIHNlY29uZHMuICBXaGVuIG5vIGZyYW1lcyBoYXZlIGJlZW4gc2VudCBmb3IgdGhpcyAKKyAgICAgdGltZSwgdGhlIHRyYW5zbWl0dGVyIHdpbGwgYmUga2V5ZWQgZG93bi4gIEEgdmFsdWUgb2YgMCBpcworICAgICBoYXMgc2FtZSByZXN1bHQgYXMgdGhlIGZ1bGxkdXBsZXggbW9kZSAxLiBUaGlzIHBhcmFtZXRlcgorICAgICBjYW4gYmUgZGlzYWJsZWQuCisKKyAgICAgRXhhbXBsZTogc2NjcGFyYW0gL2Rldi9zY2MyIGlkbGUgb2ZmCSMgdHJhbnNtaXQgZm9yZXZlcgorCittYXhkZWZlcgorICAgICBUaGlzIGlzIHRoZSBtYXhpbXVtIHRpbWUgKGluIHNlY29uZHMpIHRvIHdhaXQgZm9yIGEgZnJlZSBjaGFubmVsCisgICAgIHRvIHNlbmQuIFdoZW4gdGhpcyB0aW1lciBleHBpcmVzIHRoZSB0cmFuc21pdHRlciB3aWxsIGJlIGtleWVkIAorICAgICBJTU1FRElBVEVMWS4gSWYgeW91IGxvdmUgdG8gZ2V0IHRyb3VibGUgd2l0aCBvdGhlciB1c2VycyB5b3UKKyAgICAgc2hvdWxkIHNldCB0aGlzIHRvIGEgdmVyeSBsb3cgdmFsdWUgOy0pCisKKyAgICAgRXhhbXBsZTogc2NjcGFyYW0gL2Rldi9zY2MwIG1heGRlZmVyIDI0MAkjIDIgbWludXRlcworCisKK3R4b2ZmOgorICAgICBXaGVuIHRoaXMgcGFyYW1ldGVyIGhhcyB0aGUgdmFsdWUgMCwgdGhlIHRyYW5zbWlzc2lvbiBvZiBwYWNrZXRzCisgICAgIGlzIGVuYWJsZS4gT3RoZXJ3aXNlIGl0IGlzIGRpc2FibGVkLgorCisgICAgIEV4YW1wbGU6IHNjY3BhcmFtIC9kZXYvc2NjMiB0eG9mZiBvbgorCitncm91cDoKKyAgICAgSXQgaXMgcG9zc2libGUgdG8gYnVpbGQgc3BlY2lhbCByYWRpbyBlcXVpcG1lbnQgdG8gdXNlIG1vcmUgdGhhbiAKKyAgICAgb25lIGZyZXF1ZW5jeSBvbiB0aGUgc2FtZSBiYW5kLCBlLmcuIHVzaW5nIHNldmVyYWwgcmVjZWl2ZXJzIGFuZCAKKyAgICAgb25seSBvbmUgdHJhbnNtaXR0ZXIgdGhhdCBjYW4gYmUgc3dpdGNoZWQgYmV0d2VlbiBmcmVxdWVuY2llcy4KKyAgICAgQWxzbywgeW91IGNhbiBjb25uZWN0IHNldmVyYWwgcmFkaW9zIHRoYXQgYXJlIGFjdGl2ZSBvbiB0aGUgc2FtZSAKKyAgICAgYmFuZC4gIEluIHRoZXNlIGNhc2VzLCBpdCBpcyBub3QgcG9zc2libGUsIG9yIG5vdCBhIGdvb2QgaWRlYSwgdG8gCisgICAgIHRyYW5zbWl0IG9uIG1vcmUgdGhhbiBvbmUgZnJlcXVlbmN5LiAgVGhlIFNDQyBkcml2ZXIgcHJvdmlkZXMgYSAKKyAgICAgbWV0aG9kIHRvIGxvY2sgdHJhbnNtaXR0ZXJzIG9uIGRpZmZlcmVudCBpbnRlcmZhY2VzLCB1c2luZyB0aGUgCisgICAgICJwYXJhbSA8aW50ZXJmYWNlPiBncm91cCA8eD4iIGNvbW1hbmQuICBUaGlzIHdpbGwgb25seSB3b3JrIHdoZW4gCisgICAgIHlvdSBhcmUgdXNpbmcgQ1NNQSBtb2RlIChwYXJhbWV0ZXIgZnVsbCA9IDApLgorICAgICBUaGUgbnVtYmVyIDx4PiBtdXN0IGJlIDAgaWYgeW91IHdhbnQgbm8gZ3JvdXAgcmVzdHJpY3Rpb25zLCBhbmQgCisgICAgIGNhbiBiZSBjb21wdXRlZCBhcyBmb2xsb3dzIHRvIGNyZWF0ZSByZXN0cmljdGVkIGdyb3VwczoKKyAgICAgPHg+IGlzIHRoZSBzdW0gb2Ygc29tZSBPQ1RBTCBudW1iZXJzOgorCisgICAgIDIwMCAgVGhpcyB0cmFuc21pdHRlciB3aWxsIG9ubHkgYmUga2V5ZWQgd2hlbiBhbGwgb3RoZXIgCisgICAgICAgICAgdHJhbnNtaXR0ZXJzIGluIHRoZSBncm91cCBhcmUgb2ZmLgorICAgICAxMDAgIFRoaXMgdHJhbnNtaXR0ZXIgd2lsbCBvbmx5IGJlIGtleWVkIHdoZW4gdGhlIGNhcnJpZXIgCisgICAgICAgICAgZGV0ZWN0IG9mIGFsbCBvdGhlciBpbnRlcmZhY2VzIGluIHRoZSBncm91cCBpcyBvZmYuCisgICAgIDB4eCAgQSBieXRlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIGRpZmZlcmVudCBncm91cHMuICAKKyAgICAgICAgICBJbnRlcmZhY2VzIGFyZSBpbiB0aGUgc2FtZSBncm91cCwgd2hlbiB0aGUgbG9naWNhbCBBTkQgCisgICAgICAgICAgYmV0d2VlbiB0aGVpciB4eCB2YWx1ZXMgaXMgbm9uemVyby4KKworICAgICBFeGFtcGxlczoKKyAgICAgV2hlbiAyIGludGVyZmFjZXMgdXNlIGdyb3VwIDIwMSwgdGhlaXIgdHJhbnNtaXR0ZXJzIHdpbGwgbmV2ZXIgYmUgCisgICAgIGtleWVkIGF0IHRoZSBzYW1lIHRpbWUuCisgICAgIFdoZW4gMiBpbnRlcmZhY2VzIHVzZSBncm91cCAxMDEsIHRoZSB0cmFuc21pdHRlcnMgd2lsbCBvbmx5IGtleSAKKyAgICAgd2hlbiBib3RoIGNoYW5uZWxzIGFyZSBjbGVhciBhdCB0aGUgc2FtZSB0aW1lLiAgV2hlbiBncm91cCAzMDEsIAorICAgICB0aGUgdHJhbnNtaXR0ZXJzIHdpbGwgbm90IGJlIGtleWVkIGF0IHRoZSBzYW1lIHRpbWUuCisKKyAgICAgRG9uJ3QgZm9yZ2V0IHRvIGNvbnZlcnQgdGhlIG9jdGFsIG51bWJlcnMgaW50byBkZWNpbWFsIGJlZm9yZQorICAgICB5b3Ugc2V0IHRoZSBwYXJhbWV0ZXIuCisKKyAgICAgRXhhbXBsZTogKHRvIGJlIHdyaXR0ZW4pCisKK3NvZnRkY2Q6CisgICAgIHVzZSBhIHNvZnR3YXJlIGRjZCBpbnN0ZWFkIG9mIHRoZSByZWFsIG9uZS4uLiBVc2VmdWwgZm9yIGEgdmVyeQorICAgICBzbG93IHNxdWVsY2guCisKKyAgICAgRXhhbXBsZTogc2NjcGFyYW0gL2Rldi9zY2MwIHNvZnQgb24KKworCis0LiBQcm9ibGVtcyAKKz09PT09PT09PT09CisKK0lmIHlvdSBoYXZlIHR4LXByb2JsZW1zIHdpdGggeW91ciBCYXlDb20gVVNDQyBjYXJkIHBsZWFzZSBjaGVjawordGhlIG1hbnVmYWN0dXJlciBvZiB0aGUgODUzMC4gU0dTIGNoaXBzIGhhdmUgYSBzbGlnaHRseQorZGlmZmVyZW50IHRpbWluZy4gVHJ5IFppbG9nLi4uICBBIHNvbHV0aW9uIGlzIHRvIHdyaXRlIHRvIHJlZ2lzdGVyIDggCitpbnN0ZWFkIHRvIHRoZSBkYXRhIHBvcnQsIGJ1dCB0aGlzIHdvbid0IHdvcmsgd2l0aCB0aGUgRVNDQyBjaGlwcy4gCisqU0lHSCEqCisKK0EgdmVyeSBjb21tb24gcHJvYmxlbSBpcyB0aGF0IHRoZSBQVFQgbG9ja3MgdW50aWwgdGhlIG1heGtleXVwIHRpbWVyCitleHBpcmVzLCBhbHRob3VnaCBpbnRlcnJ1cHRzIGFuZCBjbG9jayBzb3VyY2UgYXJlIGNvcnJlY3QuIEluIG1vc3QKK2Nhc2VzIGNvbXBpbGluZyB0aGUgZHJpdmVyIHdpdGggQ09ORklHX1NDQ19ERUxBWSAoc2V0IHdpdGgKK21ha2UgY29uZmlnKSBzb2x2ZXMgdGhlIHByb2JsZW1zLiBGb3IgbW9yZSBoaW50cyByZWFkIHRoZSAocHNldWRvKSBGQVEgCithbmQgdGhlIGRvY3VtZW50YXRpb24gY29taW5nIHdpdGggejg1MzBkcnYtdXRpbHMuCisKK0kgZ290IHJlcG9ydHMgdGhhdCB0aGUgZHJpdmVyIGhhcyBwcm9ibGVtcyBvbiBzb21lIDM4Ni1iYXNlZCBzeXN0ZW1zLgorKGkuZS4gQW1zdHJhZCkgVGhvc2Ugc3lzdGVtcyBoYXZlIGEgYm9ndXMgQVQgYnVzIHRpbWluZyB3aGljaCB3aWxsCitsZWFkIHRvIGRlbGF5ZWQgYW5zd2VycyBvbiBpbnRlcnJ1cHRzLiBZb3UgY2FuIHJlY29nbml6ZSB0aGVzZQorcHJvYmxlbXMgYnkgbG9va2luZyBhdCB0aGUgb3V0cHV0IG9mIFNjY3N0YXQgZm9yIHRoZSBzdXNwZWN0ZWQKK3BvcnQuIElmIGl0IHNob3dzIHVuZGVyLSBhbmQgb3ZlcnJ1bnMgeW91IG93biBzdWNoIGEgc3lzdGVtLgorCitEZWxheWVkIHByb2Nlc3Npbmcgb2YgcmVjZWl2ZWQgZGF0YTogVGhpcyBkZXBlbmRzIG9uCisKKy0gdGhlIGtlcm5lbCB2ZXJzaW9uCisKKy0ga2VybmVsIHByb2ZpbGluZyBjb21waWxlZCBvciBub3QKKworLSBhIGhpZ2ggaW50ZXJydXB0IGxvYWQKKworLSBhIGhpZ2ggbG9hZCBvZiB0aGUgbWFjaGluZSAtLS0gcnVubmluZyBYLCBYbW9ycGgsIFhWIGFuZCBQb3ZyYXksCisgIHdoaWxlIGNvbXBpbGluZyB0aGUga2VybmVsLi4uIGhtbSAuLi4gZXZlbiB3aXRoIDMyIE1CIFJBTSAuLi4gIDstKQorICBPciBydW5uaW5nIGEgbmFtZWQgZm9yIHRoZSB3aG9sZSAuYW1wci5vcmcgZG9tYWluIG9uIGFuIDggTUIKKyAgYm94Li4uCisKKy0gdXNpbmcgaW5mb3JtYXRpb24gZnJvbSByeGVjaG8gb3Iga2lzc2JyaWRnZS4KKworS2VybmVsIHBhbmljczogcGxlYXNlIHJlYWQgL2xpbnV4L1JFQURNRSBhbmQgZmluZCBvdXQgaWYgaXQKK3JlYWxseSBvY2N1cnJlZCB3aXRoaW4gdGhlIHNjYyBkcml2ZXIuCisKK0lmIHlvdSBjYW5ub3Qgc29sdmUgYSBwcm9ibGVtLCBzZW5kIG1lCisKKy0gYSBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvYmxlbSwKKy0gaW5mb3JtYXRpb24gb24geW91ciBoYXJkd2FyZSAoY29tcHV0ZXIgc3lzdGVtLCBzY2MgYm9hcmQsIG1vZGVtKQorLSB5b3VyIGtlcm5lbCB2ZXJzaW9uCistIHRoZSBvdXRwdXQgb2YgY2F0IC9wcm9jL25ldC96ODUzMAorCis0LiBUaG9yIFJMQzEwMAorPT09PT09PT09PT09PT0KKworTXlzdGVyaW91c2x5IHRoaXMgYm9hcmQgc2VlbXMgbm90IHRvIHdvcmsgd2l0aCB0aGUgZHJpdmVyLiBBbnlvbmUKK2dvdCBpdCB1cC1hbmQtcnVubmluZz8KKworCitNYW55IHRoYW5rcyB0byBMaW51cyBUb3J2YWxkcyBhbmQgQWxhbiBDb3ggZm9yIGluY2x1ZGluZyB0aGUgZHJpdmVyCitpbiB0aGUgTGludXggc3RhbmRhcmQgZGlzdHJpYnV0aW9uIGFuZCB0aGVpciBzdXBwb3J0LgorCitKb2VyZyBSZXV0ZXIJYW1wci1uZXQ6IGRsMWJrZUBkYjBwcmEuYW1wci5vcmcKKwkJQVgtMjUgICA6IERMMUJLRSBAIERCMEFCSC4jQkFZLkRFVS5FVQorCQlJbnRlcm5ldDoganJldXRlckB5YWluYS5kZQorCQlXV1cgICAgIDogaHR0cDovL3lhaW5hLmRlL2pyZXV0ZXIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmZjL25mYy1oY2kudHh0IGIvRG9jdW1lbnRhdGlvbi9uZmMvbmZjLWhjaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRjMDc4YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbmZjL25mYy1oY2kudHh0CkBAIC0wLDAgKzEsMjkwIEBACitIQ0kgYmFja2VuZCBmb3IgTkZDIENvcmUKKworQXV0aG9yOiBFcmljIExhcHV5YWRlLCBTYW11ZWwgT3J0aXoKK0NvbnRhY3Q6IGVyaWMubGFwdXlhZGVAaW50ZWwuY29tLCBzYW11ZWwub3J0aXpAaW50ZWwuY29tCisKK0dlbmVyYWwKKy0tLS0tLS0KKworVGhlIEhDSSBsYXllciBpbXBsZW1lbnRzIG11Y2ggb2YgdGhlIEVUU0kgVFMgMTAyIDYyMiBWMTAuMi4wIHNwZWNpZmljYXRpb24uIEl0CitlbmFibGVzIGVhc3kgd3JpdGluZyBvZiBIQ0ktYmFzZWQgTkZDIGRyaXZlcnMuIFRoZSBIQ0kgbGF5ZXIgcnVucyBhcyBhbiBORkMgQ29yZQorYmFja2VuZCwgaW1wbGVtZW50aW5nIGFuIGFic3RyYWN0IG5mYyBkZXZpY2UgYW5kIHRyYW5zbGF0aW5nIE5GQyBDb3JlIEFQSQordG8gSENJIGNvbW1hbmRzIGFuZCBldmVudHMuCisKK0hDSQorLS0tCisKK0hDSSByZWdpc3RlcnMgYXMgYW4gbmZjIGRldmljZSB3aXRoIE5GQyBDb3JlLiBSZXF1ZXN0cyBjb21pbmcgZnJvbSB1c2Vyc3BhY2UgYXJlCityb3V0ZWQgdGhyb3VnaCBuZXRsaW5rIHNvY2tldHMgdG8gTkZDIENvcmUgYW5kIHRoZW4gdG8gSENJLiBGcm9tIHRoaXMgcG9pbnQsCit0aGV5IGFyZSB0cmFuc2xhdGVkIGluIGEgc2VxdWVuY2Ugb2YgSENJIGNvbW1hbmRzIHNlbnQgdG8gdGhlIEhDSSBsYXllciBpbiB0aGUKK2hvc3QgY29udHJvbGxlciAodGhlIGNoaXApLiBDb21tYW5kcyBjYW4gYmUgZXhlY3V0ZWQgc3luY2hyb25vdXNseSAodGhlIHNlbmRpbmcKK2NvbnRleHQgYmxvY2tzIHdhaXRpbmcgZm9yIHJlc3BvbnNlKSBvciBhc3luY2hyb25vdXNseSAodGhlIHJlc3BvbnNlIGlzIHJldHVybmVkCitmcm9tIEhDSSBSeCBjb250ZXh0KS4KK0hDSSBldmVudHMgY2FuIGFsc28gYmUgcmVjZWl2ZWQgZnJvbSB0aGUgaG9zdCBjb250cm9sbGVyLiBUaGV5IHdpbGwgYmUgaGFuZGxlZAorYW5kIGEgdHJhbnNsYXRpb24gd2lsbCBiZSBmb3J3YXJkZWQgdG8gTkZDIENvcmUgYXMgbmVlZGVkLiBUaGVyZSBhcmUgaG9va3MgdG8KK2xldCB0aGUgSENJIGRyaXZlciBoYW5kbGUgcHJvcHJpZXRhcnkgZXZlbnRzIG9yIG92ZXJyaWRlIHN0YW5kYXJkIGJlaGF2aW9yLgorSENJIHVzZXMgMiBleGVjdXRpb24gY29udGV4dHM6CistIG9uZSBmb3IgZXhlY3V0aW5nIGNvbW1hbmRzIDogbmZjX2hjaV9tc2dfdHhfd29yaygpLiBPbmx5IG9uZSBjb21tYW5kCitjYW4gYmUgZXhlY3V0aW5nIGF0IGFueSBnaXZlbiBtb21lbnQuCistIG9uZSBmb3IgZGlzcGF0Y2hpbmcgcmVjZWl2ZWQgZXZlbnRzIGFuZCBjb21tYW5kcyA6IG5mY19oY2lfbXNnX3J4X3dvcmsoKS4KKworSENJIFNlc3Npb24gaW5pdGlhbGl6YXRpb246CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIFNlc3Npb24gaW5pdGlhbGl6YXRpb24gaXMgYW4gSENJIHN0YW5kYXJkIHdoaWNoIG11c3QgdW5mb3J0dW5hdGVseQorc3VwcG9ydCBwcm9wcmlldGFyeSBnYXRlcy4gVGhpcyBpcyB0aGUgcmVhc29uIHdoeSB0aGUgZHJpdmVyIHdpbGwgcGFzcyBhIGxpc3QKK29mIHByb3ByaWV0YXJ5IGdhdGVzIHRoYXQgbXVzdCBiZSBwYXJ0IG9mIHRoZSBzZXNzaW9uLiBIQ0kgd2lsbCBlbnN1cmUgYWxsCit0aG9zZSBnYXRlcyBoYXZlIHBpcGVzIGNvbm5lY3RlZCB3aGVuIHRoZSBoY2kgZGV2aWNlIGlzIHNldCB1cC4KK0luIGNhc2UgdGhlIGNoaXAgc3VwcG9ydHMgcHJlLW9wZW5lZCBnYXRlcyBhbmQgcHNldWRvLXN0YXRpYyBwaXBlcywgdGhlIGRyaXZlcgorY2FuIHBhc3MgdGhhdCBpbmZvcm1hdGlvbiB0byBIQ0kgY29yZS4KKworSENJIEdhdGVzIGFuZCBQaXBlcworLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBIGdhdGUgZGVmaW5lcyB0aGUgJ3BvcnQnIHdoZXJlIHNvbWUgc2VydmljZSBjYW4gYmUgZm91bmQuIEluIG9yZGVyIHRvIGFjY2VzcworYSBzZXJ2aWNlLCBvbmUgbXVzdCBjcmVhdGUgYSBwaXBlIHRvIHRoYXQgZ2F0ZSBhbmQgb3BlbiBpdC4gSW4gdGhpcworaW1wbGVtZW50YXRpb24sIHBpcGVzIGFyZSB0b3RhbGx5IGhpZGRlbi4gVGhlIHB1YmxpYyBBUEkgb25seSBrbm93cyBnYXRlcy4KK1RoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBkcml2ZXIgbmVlZCB0byBzZW5kIGNvbW1hbmRzIHRvIHByb3ByaWV0YXJ5IGdhdGVzCit3aXRob3V0IGtub3dpbmcgdGhlIHBpcGUgY29ubmVjdGVkIHRvIGl0LgorCitEcml2ZXIgaW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0tCisKK0EgZHJpdmVyIGlzIGdlbmVyYWxseSB3cml0dGVuIGluIHR3byBwYXJ0cyA6IHRoZSBwaHlzaWNhbCBsaW5rIG1hbmFnZW1lbnQgYW5kCit0aGUgSENJIG1hbmFnZW1lbnQuIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvIG1haW50YWluIGEgZHJpdmVyIGZvciBhIGNoaXAgdGhhdAorY2FuIGJlIGNvbm5lY3RlZCB1c2luZyB2YXJpb3VzIHBoeSAoaTJjLCBzcGksIC4uLikKKworSENJIE1hbmFnZW1lbnQKKy0tLS0tLS0tLS0tLS0tCisKK0EgZHJpdmVyIHdvdWxkIG5vcm1hbGx5IHJlZ2lzdGVyIGl0c2VsZiB3aXRoIEhDSSBhbmQgcHJvdmlkZSB0aGUgZm9sbG93aW5nCitlbnRyeSBwb2ludHM6CisKK3N0cnVjdCBuZmNfaGNpX29wcyB7CisJaW50ICgqb3Blbikoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2KTsKKwl2b2lkICgqY2xvc2UpKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldik7CisJaW50ICgqaGNpX3JlYWR5KSAoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2KTsKKwlpbnQgKCp4bWl0KSAoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKwlpbnQgKCpzdGFydF9wb2xsKSAoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LAorCQkJICAgdTMyIGltX3Byb3RvY29scywgdTMyIHRtX3Byb3RvY29scyk7CisJaW50ICgqZGVwX2xpbmtfdXApKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgc3RydWN0IG5mY190YXJnZXQgKnRhcmdldCwKKwkJCSAgIHU4IGNvbW1fbW9kZSwgdTggKmdiLCBzaXplX3QgZ2JfbGVuKTsKKwlpbnQgKCpkZXBfbGlua19kb3duKShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYpOworCWludCAoKnRhcmdldF9mcm9tX2dhdGUpIChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IGdhdGUsCisJCQkJIHN0cnVjdCBuZmNfdGFyZ2V0ICp0YXJnZXQpOworCWludCAoKmNvbXBsZXRlX3RhcmdldF9kaXNjb3ZlcmVkKSAoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LCB1OCBnYXRlLAorCQkJCQkgICBzdHJ1Y3QgbmZjX3RhcmdldCAqdGFyZ2V0KTsKKwlpbnQgKCppbV90cmFuc2NlaXZlKSAoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LAorCQkJICAgICAgc3RydWN0IG5mY190YXJnZXQgKnRhcmdldCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKKwkJCSAgICAgIGRhdGFfZXhjaGFuZ2VfY2JfdCBjYiwgdm9pZCAqY2JfY29udGV4dCk7CisJaW50ICgqdG1fc2VuZCkoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKwlpbnQgKCpjaGVja19wcmVzZW5jZSkoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LAorCQkJICAgICAgc3RydWN0IG5mY190YXJnZXQgKnRhcmdldCk7CisJaW50ICgqZXZlbnRfcmVjZWl2ZWQpKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggZ2F0ZSwgdTggZXZlbnQsCisJCQkgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKK307CisKKy0gb3BlbigpIGFuZCBjbG9zZSgpIHNoYWxsIHR1cm4gdGhlIGhhcmR3YXJlIG9uIGFuZCBvZmYuCistIGhjaV9yZWFkeSgpIGlzIGFuIG9wdGlvbmFsIGVudHJ5IHBvaW50IHRoYXQgaXMgY2FsbGVkIHJpZ2h0IGFmdGVyIHRoZSBoY2kKK3Nlc3Npb24gaGFzIGJlZW4gc2V0IHVwLiBUaGUgZHJpdmVyIGNhbiB1c2UgaXQgdG8gZG8gYWRkaXRpb25hbCBpbml0aWFsaXphdGlvbgordGhhdCBtdXN0IGJlIHBlcmZvcm1lZCB1c2luZyBIQ0kgY29tbWFuZHMuCistIHhtaXQoKSBzaGFsbCBzaW1wbHkgd3JpdGUgYSBmcmFtZSB0byB0aGUgcGh5c2ljYWwgbGluay4KKy0gc3RhcnRfcG9sbCgpIGlzIGFuIG9wdGlvbmFsIGVudHJ5cG9pbnQgdGhhdCBzaGFsbCBzZXQgdGhlIGhhcmR3YXJlIGluIHBvbGxpbmcKK21vZGUuIFRoaXMgbXVzdCBiZSBpbXBsZW1lbnRlZCBvbmx5IGlmIHRoZSBoYXJkd2FyZSB1c2VzIHByb3ByaWV0YXJ5IGdhdGVzIG9yIGEKK21lY2hhbmlzbSBzbGlnaHRseSBkaWZmZXJlbnQgZnJvbSB0aGUgSENJIHN0YW5kYXJkLgorLSBkZXBfbGlua191cCgpIGlzIGNhbGxlZCBhZnRlciBhIHAycCB0YXJnZXQgaGFzIGJlZW4gZGV0ZWN0ZWQsIHRvIGZpbmlzaAordGhlIHAycCBjb25uZWN0aW9uIHNldHVwIHdpdGggaGFyZHdhcmUgcGFyYW1ldGVycyB0aGF0IG5lZWQgdG8gYmUgcGFzc2VkIGJhY2sKK3RvIG5mYyBjb3JlLgorLSBkZXBfbGlua19kb3duKCkgaXMgY2FsbGVkIHRvIGJyaW5nIHRoZSBwMnAgbGluayBkb3duLgorLSB0YXJnZXRfZnJvbV9nYXRlKCkgaXMgYW4gb3B0aW9uYWwgZW50cnlwb2ludCB0byByZXR1cm4gdGhlIG5mYyBwcm90b2NvbHMKK2NvcnJlc3BvbmRpbmcgdG8gYSBwcm9wcmlldGFyeSBnYXRlLgorLSBjb21wbGV0ZV90YXJnZXRfZGlzY292ZXJlZCgpIGlzIGFuIG9wdGlvbmFsIGVudHJ5IHBvaW50IHRvIGxldCB0aGUgZHJpdmVyCitwZXJmb3JtIGFkZGl0aW9uYWwgcHJvcHJpZXRhcnkgcHJvY2Vzc2luZyBuZWNlc3NhcnkgdG8gYXV0byBhY3RpdmF0ZSB0aGUKK2Rpc2NvdmVyZWQgdGFyZ2V0LgorLSBpbV90cmFuc2NlaXZlKCkgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSB0aGUgZHJpdmVyIGlmIHByb3ByaWV0YXJ5IEhDSSBjb21tYW5kcworYXJlIHJlcXVpcmVkIHRvIHNlbmQgZGF0YSB0byB0aGUgdGFnLiBTb21lIHRhZyB0eXBlcyB3aWxsIHJlcXVpcmUgY3VzdG9tCitjb21tYW5kcywgb3RoZXJzIGNhbiBiZSB3cml0dGVuIHRvIHVzaW5nIHRoZSBzdGFuZGFyZCBIQ0kgY29tbWFuZHMuIFRoZSBkcml2ZXIKK2NhbiBjaGVjayB0aGUgdGFnIHR5cGUgYW5kIGVpdGhlciBkbyBwcm9wcmlldGFyeSBwcm9jZXNzaW5nLCBvciByZXR1cm4gMSB0byBhc2sKK2ZvciBzdGFuZGFyZCBwcm9jZXNzaW5nLiBUaGUgZGF0YSBleGNoYW5nZSBjb21tYW5kIGl0c2VsZiBtdXN0IGJlIHNlbnQKK2FzeW5jaHJvbm91c2x5LgorLSB0bV9zZW5kKCkgaXMgY2FsbGVkIHRvIHNlbmQgZGF0YSBpbiB0aGUgY2FzZSBvZiBhIHAycCBjb25uZWN0aW9uCistIGNoZWNrX3ByZXNlbmNlKCkgaXMgYW4gb3B0aW9uYWwgZW50cnkgcG9pbnQgdGhhdCB3aWxsIGJlIGNhbGxlZCByZWd1bGFybHkKK2J5IHRoZSBjb3JlIHRvIGNoZWNrIHRoYXQgYW4gYWN0aXZhdGVkIHRhZyBpcyBzdGlsbCBpbiB0aGUgZmllbGQuIElmIHRoaXMgaXMKK25vdCBpbXBsZW1lbnRlZCwgdGhlIGNvcmUgd2lsbCBub3QgYmUgYWJsZSB0byBwdXNoIHRhZ19sb3N0IGV2ZW50cyB0byB0aGUgdXNlcgorc3BhY2UKKy0gZXZlbnRfcmVjZWl2ZWQoKSBpcyBjYWxsZWQgdG8gaGFuZGxlIGFuIGV2ZW50IGNvbWluZyBmcm9tIHRoZSBjaGlwLiBEcml2ZXIKK2NhbiBoYW5kbGUgdGhlIGV2ZW50IG9yIHJldHVybiAxIHRvIGxldCBIQ0kgYXR0ZW1wdCBzdGFuZGFyZCBwcm9jZXNzaW5nLgorCitPbiB0aGUgcnggcGF0aCwgdGhlIGRyaXZlciBpcyByZXNwb25zaWJsZSB0byBwdXNoIGluY29taW5nIEhDUCBmcmFtZXMgdG8gSENJCit1c2luZyBuZmNfaGNpX3JlY3ZfZnJhbWUoKS4gSENJIHdpbGwgdGFrZSBjYXJlIG9mIHJlLWFnZ3JlZ2F0aW9uIGFuZCBoYW5kbGluZworVGhpcyBtdXN0IGJlIGRvbmUgZnJvbSBhIGNvbnRleHQgdGhhdCBjYW4gc2xlZXAuCisKK1BIWSBNYW5hZ2VtZW50CistLS0tLS0tLS0tLS0tLQorCitUaGUgcGh5c2ljYWwgbGluayAoaTJjLCAuLi4pIG1hbmFnZW1lbnQgaXMgZGVmaW5lZCBieSB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKKworc3RydWN0IG5mY19waHlfb3BzIHsKKwlpbnQgKCp3cml0ZSkodm9pZCAqZGV2X2lkLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKwlpbnQgKCplbmFibGUpKHZvaWQgKmRldl9pZCk7CisJdm9pZCAoKmRpc2FibGUpKHZvaWQgKmRldl9pZCk7Cit9OworCitlbmFibGUoKTogdHVybiB0aGUgcGh5IG9uIChwb3dlciBvbiksIG1ha2UgaXQgcmVhZHkgdG8gdHJhbnNmZXIgZGF0YQorZGlzYWJsZSgpOiB0dXJuIHRoZSBwaHkgb2ZmCit3cml0ZSgpOiBTZW5kIGEgZGF0YSBmcmFtZSB0byB0aGUgY2hpcC4gTm90ZSB0aGF0IHRvIGVuYWJsZSBoaWdoZXIKK2xheWVycyBzdWNoIGFzIGFuIGxsYyB0byBzdG9yZSB0aGUgZnJhbWUgZm9yIHJlLWVtaXNzaW9uLCB0aGlzIGZ1bmN0aW9uIG11c3QKK25vdCBhbHRlciB0aGUgc2tiLiBJdCBtdXN0IGFsc28gbm90IHJldHVybiBhIHBvc2l0aXZlIHJlc3VsdCAocmV0dXJuIDAgZm9yCitzdWNjZXNzLCBuZWdhdGl2ZSBmb3IgZmFpbHVyZSkuCisKK0RhdGEgY29taW5nIGZyb20gdGhlIGNoaXAgc2hhbGwgYmUgc2VudCBkaXJlY3RseSB0byBuZmNfaGNpX3JlY3ZfZnJhbWUoKS4KKworTExDCistLS0KKworQ29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSBDUFUgYW5kIHRoZSBjaGlwIG9mdGVuIHJlcXVpcmVzIHNvbWUgbGluayBsYXllcgorcHJvdG9jb2wuIFRob3NlIGFyZSBpc29sYXRlZCBhcyBtb2R1bGVzIG1hbmFnZWQgYnkgdGhlIEhDSSBsYXllci4gVGhlcmUgYXJlCitjdXJyZW50bHkgdHdvIG1vZHVsZXMgOiBub3AgKHJhdyB0cmFuc2ZlcnQpIGFuZCBzaGRsYy4KK0EgbmV3IGxsYyBtdXN0IGltcGxlbWVudCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKKworc3RydWN0IG5mY19sbGNfb3BzIHsKKwl2b2lkICooKmluaXQpIChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHhtaXRfdG9fZHJ2X3QgeG1pdF90b19kcnYsCisJCSAgICAgICByY3ZfdG9faGNpX3QgcmN2X3RvX2hjaSwgaW50IHR4X2hlYWRyb29tLAorCQkgICAgICAgaW50IHR4X3RhaWxyb29tLCBpbnQgKnJ4X2hlYWRyb29tLCBpbnQgKnJ4X3RhaWxyb29tLAorCQkgICAgICAgbGxjX2ZhaWx1cmVfdCBsbGNfZmFpbHVyZSk7CisJdm9pZCAoKmRlaW5pdCkgKHN0cnVjdCBuZmNfbGxjICpsbGMpOworCWludCAoKnN0YXJ0KSAoc3RydWN0IG5mY19sbGMgKmxsYyk7CisJaW50ICgqc3RvcCkgKHN0cnVjdCBuZmNfbGxjICpsbGMpOworCXZvaWQgKCpyY3ZfZnJvbV9kcnYpIChzdHJ1Y3QgbmZjX2xsYyAqbGxjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKwlpbnQgKCp4bWl0X2Zyb21faGNpKSAoc3RydWN0IG5mY19sbGMgKmxsYywgc3RydWN0IHNrX2J1ZmYgKnNrYik7Cit9OworCistIGluaXQoKSA6IGFsbG9jYXRlIGFuZCBpbml0IHlvdXIgcHJpdmF0ZSBzdG9yYWdlCistIGRlaW5pdCgpIDogY2xlYW51cAorLSBzdGFydCgpIDogZXN0YWJsaXNoIHRoZSBsb2dpY2FsIGNvbm5lY3Rpb24KKy0gc3RvcCAoKSA6IHRlcm1pbmF0ZSB0aGUgbG9naWNhbCBjb25uZWN0aW9uCistIHJjdl9mcm9tX2RydigpIDogaGFuZGxlIGRhdGEgY29taW5nIGZyb20gdGhlIGNoaXAsIGdvaW5nIHRvIEhDSQorLSB4bWl0X2Zyb21faGNpKCkgOiBoYW5kbGUgZGF0YSBzZW50IGJ5IEhDSSwgZ29pbmcgdG8gdGhlIGNoaXAKKworVGhlIGxsYyBtdXN0IGJlIHJlZ2lzdGVyZWQgd2l0aCBuZmMgYmVmb3JlIGl0IGNhbiBiZSB1c2VkLiBEbyB0aGF0IGJ5CitjYWxsaW5nIG5mY19sbGNfcmVnaXN0ZXIoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IG5mY19sbGNfb3BzICpvcHMpOworCitBZ2Fpbiwgbm90ZSB0aGF0IHRoZSBsbGMgZG9lcyBub3QgaGFuZGxlIHRoZSBwaHlzaWNhbCBsaW5rLiBJdCBpcyB0aHVzIHZlcnkKK2Vhc3kgdG8gbWl4IGFueSBwaHlzaWNhbCBsaW5rIHdpdGggYW55IGxsYyBmb3IgYSBnaXZlbiBjaGlwIGRyaXZlci4KKworSW5jbHVkZWQgRHJpdmVycworLS0tLS0tLS0tLS0tLS0tLQorCitBbiBIQ0kgYmFzZWQgZHJpdmVyIGZvciBhbiBOWFAgUE41NDQsIGNvbm5lY3RlZCB0aHJvdWdoIEkyQyBidXMsIGFuZCB1c2luZworc2hkbGMgaXMgaW5jbHVkZWQuCisKK0V4ZWN1dGlvbiBDb250ZXh0cworLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBleGVjdXRpb24gY29udGV4dHMgYXJlIHRoZSBmb2xsb3dpbmc6CistIElSUSBoYW5kbGVyIChJUlFIKToKK2Zhc3QsIGNhbm5vdCBzbGVlcC4gc2VuZHMgaW5jb21pbmcgZnJhbWVzIHRvIEhDSSB3aGVyZSB0aGV5IGFyZSBwYXNzZWQgdG8KK3RoZSBjdXJyZW50IGxsYy4gSW4gY2FzZSBvZiBzaGRsYywgdGhlIGZyYW1lIGlzIHF1ZXVlZCBpbiBzaGRsYyByeCBxdWV1ZS4KKworLSBTSERMQyBTdGF0ZSBNYWNoaW5lIHdvcmtlciAoU01XKQorT25seSB3aGVuIGxsY19zaGRsYyBpcyB1c2VkOiBoYW5kbGVzIHNoZGxjIHJ4ICYgdHggcXVldWVzLgorRGlzcGF0Y2hlcyBIQ0kgY21kIHJlc3BvbnNlcy4KKworLSBIQ0kgVHggQ21kIHdvcmtlciAoTVNHVFhXUSkKK1NlcmlhbGl6ZXMgZXhlY3V0aW9uIG9mIEhDSSBjb21tYW5kcy4gQ29tcGxldGVzIGV4ZWN1dGlvbiBpbiBjYXNlIG9mIHJlc3BvbnNlCit0aW1lb3V0LgorCistIEhDSSBSeCB3b3JrZXIgKE1TR1JYV1EpCitEaXNwYXRjaGVzIGluY29taW5nIEhDSSBjb21tYW5kcyBvciBldmVudHMuCisKKy0gU3lzY2FsbCBjb250ZXh0IGZyb20gYSB1c2Vyc3BhY2UgY2FsbCAoU1lTQ0FMTCkKK0FueSBlbnRyeXBvaW50IGluIEhDSSBjYWxsZWQgZnJvbSBORkMgQ29yZQorCitXb3JrZmxvdyBleGVjdXRpbmcgYW4gSENJIGNvbW1hbmQgKHVzaW5nIHNoZGxjKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRXhlY3V0aW5nIGFuIEhDSSBjb21tYW5kIGNhbiBlYXNpbHkgYmUgcGVyZm9ybWVkIHN5bmNocm9ub3VzbHkgdXNpbmcgdGhlCitmb2xsb3dpbmcgQVBJOgorCitpbnQgbmZjX2hjaV9zZW5kX2NtZCAoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LCB1OCBnYXRlLCB1OCBjbWQsCisJCQljb25zdCB1OCAqcGFyYW0sIHNpemVfdCBwYXJhbV9sZW4sIHN0cnVjdCBza19idWZmICoqc2tiKQorCitUaGUgQVBJIG11c3QgYmUgaW52b2tlZCBmcm9tIGEgY29udGV4dCB0aGF0IGNhbiBzbGVlcC4gTW9zdCBvZiB0aGUgdGltZSwgdGhpcword2lsbCBiZSB0aGUgc3lzY2FsbCBjb250ZXh0LiBza2Igd2lsbCByZXR1cm4gdGhlIHJlc3VsdCB0aGF0IHdhcyByZWNlaXZlZCBpbgordGhlIHJlc3BvbnNlLgorCitJbnRlcm5hbGx5LCBleGVjdXRpb24gaXMgYXN5bmNocm9ub3VzLiBTbyBhbGwgdGhpcyBBUEkgZG9lcyBpcyB0byBlbnF1ZXVlIHRoZQorSENJIGNvbW1hbmQsIHNldHVwIGEgbG9jYWwgd2FpdCBxdWV1ZSBvbiBzdGFjaywgYW5kIHdhaXRfZXZlbnQoKSBmb3IgY29tcGxldGlvbi4KK1RoZSB3YWl0IGlzIG5vdCBpbnRlcnJ1cHRpYmxlIGJlY2F1c2UgaXQgaXMgZ3VhcmFudGVlZCB0aGF0IHRoZSBjb21tYW5kIHdpbGwKK2NvbXBsZXRlIGFmdGVyIHNvbWUgc2hvcnQgdGltZW91dCBhbnl3YXkuCisKK01TR1RYV1EgY29udGV4dCB3aWxsIHRoZW4gYmUgc2NoZWR1bGVkIGFuZCBpbnZva2UgbmZjX2hjaV9tc2dfdHhfd29yaygpLgorVGhpcyBmdW5jdGlvbiB3aWxsIGRlcXVldWUgdGhlIG5leHQgcGVuZGluZyBjb21tYW5kIGFuZCBzZW5kIGl0cyBIQ1AgZnJhZ21lbnRzCit0byB0aGUgbG93ZXIgbGF5ZXIgd2hpY2ggaGFwcGVucyB0byBiZSBzaGRsYy4gSXQgd2lsbCB0aGVuIHN0YXJ0IGEgdGltZXIgdG8gYmUKK2FibGUgdG8gY29tcGxldGUgdGhlIGNvbW1hbmQgd2l0aCBhIHRpbWVvdXQgZXJyb3IgaWYgbm8gcmVzcG9uc2UgYXJyaXZlLgorCitTTVcgY29udGV4dCBnZXRzIHNjaGVkdWxlZCBhbmQgaW52b2tlcyBuZmNfc2hkbGNfc21fd29yaygpLiBUaGlzIGZ1bmN0aW9uCitoYW5kbGVzIHNoZGxjIGZyYW1pbmcgaW4gYW5kIG91dC4gSXQgdXNlcyB0aGUgZHJpdmVyIHhtaXQgdG8gc2VuZCBmcmFtZXMgYW5kCityZWNlaXZlcyBpbmNvbWluZyBmcmFtZXMgaW4gYW4gc2tiIHF1ZXVlIGZpbGxlZCBmcm9tIHRoZSBkcml2ZXIgSVJRIGhhbmRsZXIuCitTSERMQyBJKG5mb3JtYXRpb24pIGZyYW1lcyBwYXlsb2FkIGFyZSBIQ1AgZnJhZ21lbnRzLiBUaGV5IGFyZSBhZ2dyZWdhdGVkIHRvCitmb3JtIGNvbXBsZXRlIEhDSSBmcmFtZXMsIHdoaWNoIGNhbiBiZSBhIHJlc3BvbnNlLCBjb21tYW5kLCBvciBldmVudC4KKworSENJIFJlc3BvbnNlcyBhcmUgZGlzcGF0Y2hlZCBpbW1lZGlhdGVseSBmcm9tIHRoaXMgY29udGV4dCB0byB1bmJsb2NrCit3YWl0aW5nIGNvbW1hbmQgZXhlY3V0aW9uLiBSZXNwb25zZSBwcm9jZXNzaW5nIGludm9sdmVzIGludm9raW5nIHRoZSBjb21wbGV0aW9uCitjYWxsYmFjayB0aGF0IHdhcyBwcm92aWRlZCBieSBuZmNfaGNpX21zZ190eF93b3JrKCkgd2hlbiBpdCBzZW50IHRoZSBjb21tYW5kLgorVGhlIGNvbXBsZXRpb24gY2FsbGJhY2sgd2lsbCB0aGVuIHdha2UgdGhlIHN5c2NhbGwgY29udGV4dC4KKworSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBleGVjdXRlIHRoZSBjb21tYW5kIGFzeW5jaHJvbm91c2x5IHVzaW5nIHRoaXMgQVBJOgorCitzdGF0aWMgaW50IG5mY19oY2lfZXhlY3V0ZV9jbWRfYXN5bmMoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LCB1OCBwaXBlLCB1OCBjbWQsCisJCQkgICAgICAgY29uc3QgdTggKnBhcmFtLCBzaXplX3QgcGFyYW1fbGVuLAorCQkJICAgICAgIGRhdGFfZXhjaGFuZ2VfY2JfdCBjYiwgdm9pZCAqY2JfY29udGV4dCkKKworVGhlIHdvcmtmbG93IGlzIHRoZSBzYW1lLCBleGNlcHQgdGhhdCB0aGUgQVBJIGNhbGwgcmV0dXJucyBpbW1lZGlhdGVseSwgYW5kCit0aGUgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgcmVzdWx0IGZyb20gdGhlIFNNVyBjb250ZXh0LgorCitXb3JrZmxvdyByZWNlaXZpbmcgYW4gSENJIGV2ZW50IG9yIGNvbW1hbmQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitIQ0kgY29tbWFuZHMgb3IgZXZlbnRzIGFyZSBub3QgZGlzcGF0Y2hlZCBmcm9tIFNNVyBjb250ZXh0LiBJbnN0ZWFkLCB0aGV5IGFyZQorcXVldWVkIHRvIEhDSSByeF9xdWV1ZSBhbmQgd2lsbCBiZSBkaXNwYXRjaGVkIGZyb20gSENJIHJ4IHdvcmtlcgorY29udGV4dCAoTVNHUlhXUSkuIFRoaXMgaXMgZG9uZSB0aGlzIHdheSB0byBhbGxvdyBhIGNtZCBvciBldmVudCBoYW5kbGVyCit0byBhbHNvIGV4ZWN1dGUgb3RoZXIgY29tbWFuZHMgKGZvciBleGFtcGxlLCBoYW5kbGluZyB0aGUKK05GQ19IQ0lfRVZUX1RBUkdFVF9ESVNDT1ZFUkVEIGV2ZW50IGZyb20gUE41NDQgcmVxdWlyZXMgdG8gaXNzdWUgYW4KK0FOWV9HRVRfUEFSQU1FVEVSIHRvIHRoZSByZWFkZXIgQSBnYXRlIHRvIGdldCBpbmZvcm1hdGlvbiBvbiB0aGUgdGFyZ2V0Cit0aGF0IHdhcyBkaXNjb3ZlcmVkKS4KKworVHlwaWNhbGx5LCBzdWNoIGFuIGV2ZW50IHdpbGwgYmUgcHJvcGFnYXRlZCB0byBORkMgQ29yZSBmcm9tIE1TR1JYV1EgY29udGV4dC4KKworRXJyb3IgbWFuYWdlbWVudAorLS0tLS0tLS0tLS0tLS0tLQorCitFcnJvcnMgdGhhdCBvY2N1ciBzeW5jaHJvbm91c2x5IHdpdGggdGhlIGV4ZWN1dGlvbiBvZiBhbiBORkMgQ29yZSByZXF1ZXN0IGFyZQorc2ltcGx5IHJldHVybmVkIGFzIHRoZSBleGVjdXRpb24gcmVzdWx0IG9mIHRoZSByZXF1ZXN0LiBUaGVzZSBhcmUgZWFzeS4KKworRXJyb3JzIHRoYXQgb2NjdXIgYXN5bmNocm9ub3VzbHkgKGUuZy4gaW4gYSBiYWNrZ3JvdW5kIHByb3RvY29sIGhhbmRsaW5nIHRocmVhZCkKK211c3QgYmUgcmVwb3J0ZWQgc3VjaCB0aGF0IHVwcGVyIGxheWVycyBkb24ndCBzdGF5IGlnbm9yYW50IHRoYXQgc29tZXRoaW5nCit3ZW50IHdyb25nIGJlbG93IGFuZCBrbm93IHRoYXQgZXhwZWN0ZWQgZXZlbnRzIHdpbGwgcHJvYmFibHkgbmV2ZXIgaGFwcGVuLgorSGFuZGxpbmcgb2YgdGhlc2UgZXJyb3JzIGlzIGRvbmUgYXMgZm9sbG93czoKKworLSBkcml2ZXIgKHBuNTQ0KSBmYWlscyB0byBkZWxpdmVyIGFuIGluY29taW5nIGZyYW1lOiBpdCBzdG9yZXMgdGhlIGVycm9yIHN1Y2gKK3RoYXQgYW55IHN1YnNlcXVlbnQgY2FsbCB0byB0aGUgZHJpdmVyIHdpbGwgcmVzdWx0IGluIHRoaXMgZXJyb3IuIFRoZW4gaXQgY2FsbHMKK3RoZSBzdGFuZGFyZCBuZmNfc2hkbGNfcmVjdl9mcmFtZSgpIHdpdGggYSBOVUxMIGFyZ3VtZW50IHRvIHJlcG9ydCB0aGUgcHJvYmxlbQorYWJvdmUuIHNoZGxjIHN0b3JlcyBhIEVSRU1PVEVJTyBzdGlja3kgc3RhdHVzLCB3aGljaCB3aWxsIHRyaWdnZXIgU01XIHRvCityZXBvcnQgYWJvdmUgaW4gdHVybi4KKworLSBTTVcgaXMgYmFzaWNhbGx5IGEgYmFja2dyb3VuZCB0aHJlYWQgdG8gaGFuZGxlIGluY29taW5nIGFuZCBvdXRnb2luZyBzaGRsYworZnJhbWVzLiBUaGlzIHRocmVhZCB3aWxsIGFsc28gY2hlY2sgdGhlIHNoZGxjIHN0aWNreSBzdGF0dXMgYW5kIHJlcG9ydCB0byBIQ0kKK3doZW4gaXQgZGlzY292ZXJzIGl0IGlzIG5vdCBhYmxlIHRvIHJ1biBhbnltb3JlIGJlY2F1c2Ugb2YgYW4gdW5yZWNvdmVyYWJsZQorZXJyb3IgdGhhdCBoYXBwZW5lZCB3aXRoaW4gc2hkbGMgb3IgYmVsb3cuIElmIHRoZSBwcm9ibGVtIG9jY3VycyBkdXJpbmcgc2hkbGMKK2Nvbm5lY3Rpb24sIHRoZSBlcnJvciBpcyByZXBvcnRlZCB0aHJvdWdoIHRoZSBjb25uZWN0IGNvbXBsZXRpb24uCisKKy0gSENJOiBpZiBhbiBpbnRlcm5hbCBIQ0kgZXJyb3IgaGFwcGVucyAoZnJhbWUgaXMgbG9zdCksIG9yIEhDSSBpcyByZXBvcnRlZCBhbgorZXJyb3IgZnJvbSBhIGxvd2VyIGxheWVyLCBIQ0kgd2lsbCBlaXRoZXIgY29tcGxldGUgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcKK2NvbW1hbmQgd2l0aCB0aGF0IGVycm9yLCBvciBub3RpZnkgTkZDIENvcmUgZGlyZWN0bHkgaWYgbm8gY29tbWFuZCBpcyBleGVjdXRpbmcuCisKKy0gTkZDIENvcmU6IHdoZW4gTkZDIENvcmUgaXMgbm90aWZpZWQgb2YgYW4gZXJyb3IgZnJvbSBiZWxvdyBhbmQgcG9sbGluZyBpcworYWN0aXZlLCBpdCB3aWxsIHNlbmQgYSB0YWcgZGlzY292ZXJlZCBldmVudCB3aXRoIGFuIGVtcHR5IHRhZyBsaXN0IHRvIHRoZSB1c2VyCitzcGFjZSB0byBsZXQgaXQga25vdyB0aGF0IHRoZSBwb2xsIG9wZXJhdGlvbiB3aWxsIG5ldmVyIGJlIGFibGUgdG8gZGV0ZWN0IGEgdGFnLgorSWYgcG9sbGluZyBpcyBub3QgYWN0aXZlIGFuZCB0aGUgZXJyb3Igd2FzIHN0aWNreSwgbG93ZXIgbGV2ZWxzIHdpbGwgcmV0dXJuIGl0CithdCBuZXh0IGludm9jYXRpb24uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25mYy9uZmMtcG41NDQudHh0IGIvRG9jdW1lbnRhdGlvbi9uZmMvbmZjLXBuNTQ0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzZjYTE0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uZmMvbmZjLXBuNTQ0LnR4dApAQCAtMCwwICsxLDMyIEBACitLZXJuZWwgZHJpdmVyIGZvciB0aGUgTlhQIFNlbWljb25kdWN0b3JzIFBONTQ0IE5lYXIgRmllbGQKK0NvbW11bmljYXRpb24gY2hpcAorCitHZW5lcmFsCistLS0tLS0tCisKK1RoZSBQTjU0NCBpcyBhbiBpbnRlZ3JhdGVkIHRyYW5zbWlzc2lvbiBtb2R1bGUgZm9yIGNvbnRhY3RsZXNzCitjb21tdW5pY2F0aW9uLiBUaGUgZHJpdmVyIGdvZXMgdW5kZXIgZHJpdmVzL25mYy8gYW5kIGlzIGNvbXBpbGVkIGFzIGEKK21vZHVsZSBuYW1lZCAicG41NDQiLgorCitIb3N0IEludGVyZmFjZXM6IEkyQywgU1BJIGFuZCBIU1UsIHRoaXMgZHJpdmVyIHN1cHBvcnRzIGN1cnJlbnRseSBvbmx5IEkyQy4KKworUHJvdG9jb2xzCistLS0tLS0tLS0KKworSW4gdGhlIG5vcm1hbCAoSENJKSBtb2RlIGFuZCBpbiB0aGUgZmlybXdhcmUgdXBkYXRlIG1vZGUgcmVhZCBhbmQKK3dyaXRlIGZ1bmN0aW9ucyBiZWhhdmUgYSBiaXQgZGlmZmVyZW50bHkgYmVjYXVzZSB0aGUgbWVzc2FnZSBmb3JtYXRzCitvciB0aGUgcHJvdG9jb2xzIGFyZSBkaWZmZXJlbnQuCisKK0luIHRoZSBub3JtYWwgKEhDSSkgbW9kZSB0aGUgcHJvdG9jb2wgdXNlZCBpcyBkZXJpdmVkIGZyb20gdGhlIEVUU0kKK0hDSSBzcGVjaWZpY2F0aW9uLiBUaGUgZmlybXdhcmUgaXMgdXBkYXRlZCB1c2luZyBhIHNwZWNpZmljIHByb3RvY29sLAord2hpY2ggaXMgZGlmZmVyZW50IGZyb20gSENJLgorCitIQ0kgbWVzc2FnZXMgY29uc2lzdCBvZiBhbiBlaWdodCBiaXQgaGVhZGVyIGFuZCB0aGUgbWVzc2FnZSBib2R5LiBUaGUKK2hlYWRlciBjb250YWlucyB0aGUgbWVzc2FnZSBsZW5ndGguIE1heGltdW0gc2l6ZSBmb3IgYW4gSENJIG1lc3NhZ2UgaXMKKzMzLiBJbiBIQ0kgbW9kZSBzZW50IG1lc3NhZ2VzIGFyZSB0ZXN0ZWQgZm9yIGEgY29ycmVjdAorY2hlY2tzdW0uIEZpcm13YXJlIHVwZGF0ZSBtZXNzYWdlcyBoYXZlIHRoZSBsZW5ndGggaW4gdGhlIHNlY29uZCAoTVNCKQorYW5kIHRoaXJkIChMU0IpIGJ5dGVzIG9mIHRoZSBtZXNzYWdlLiBUaGUgbWF4aW11bSBGVyBtZXNzYWdlIGxlbmd0aCBpcworMTAyNCBieXRlcy4KKworRm9yIHRoZSBFVFNJIEhDSSBzcGVjaWZpY2F0aW9uIHNlZQoraHR0cDovL3d3dy5ldHNpLm9yZy9XZWJTaXRlL1RlY2hub2xvZ2llcy9Qcm90b2NvbFNwZWNpZmljYXRpb24uYXNweApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uaW9zMi9SRUFETUUgYi9Eb2N1bWVudGF0aW9uL25pb3MyL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTRhNjdkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9uaW9zMi9SRUFETUUKQEAgLTAsMCArMSwyMyBAQAorTGludXggb24gdGhlIE5pb3MgSUkgYXJjaGl0ZWN0dXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBpcyBhIHBvcnQgb2YgTGludXggdG8gTmlvcyBJSSAobmlvczIpIHByb2Nlc3Nvci4KKworSW4gb3JkZXIgdG8gY29tcGlsZSBmb3IgTmlvcyBJSSwgeW91IG5lZWQgYSB2ZXJzaW9uIG9mIEdDQyB3aXRoIHN1cHBvcnQgZm9yIHRoZSBnZW5lcmljCitzeXN0ZW0gY2FsbCBBQkkuIFBsZWFzZSBzZWUgdGhpcyBsaW5rIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyBjb21waWxpbmcgYW5kIGJvb3RpbmcKK3NvZnR3YXJlIGZvciB0aGUgTmlvcyBJSSBwbGF0Zm9ybToKK2h0dHA6Ly93d3cucm9ja2V0Ym9hcmRzLm9yZy9mb3N3aWtpL0RvY3VtZW50YXRpb24vTmlvc0lJTGludXhVc2VyTWFudWFsCisKK0ZvciByZWZlcmVuY2UsIHBsZWFzZSBzZWUgdGhlIGZvbGxvd2luZyBsaW5rOgoraHR0cDovL3d3dy5hbHRlcmEuY29tL2xpdGVyYXR1cmUvbGl0LW5pbzIuanNwCisKK1doYXQgaXMgTmlvcyBJST8KKz09PT09PT09PT09PT09PT0KK05pb3MgSUkgaXMgYSAzMi1iaXQgZW1iZWRkZWQtcHJvY2Vzc29yIGFyY2hpdGVjdHVyZSBkZXNpZ25lZCBzcGVjaWZpY2FsbHkgZm9yIHRoZQorQWx0ZXJhIGZhbWlseSBvZiBGUEdBcy4gSW4gb3JkZXIgdG8gc3VwcG9ydCBMaW51eCwgTmlvcyBJSSBuZWVkcyB0byBiZSBjb25maWd1cmVkCit3aXRoIE1NVSBhbmQgaGFyZHdhcmUgbXVsdGlwbGllciBlbmFibGVkLgorCitOaW9zIElJIEFCSQorPT09PT09PT09PT0KK1BsZWFzZSByZWZlciB0byBjaGFwdGVyICJBcHBsaWNhdGlvbiBCaW5hcnkgSW50ZXJmYWNlIiBpbiBOaW9zIElJIFByb2Nlc3NvciBSZWZlcmVuY2UKK0hhbmRib29rLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ub21tdS1tbWFwLnR4dCBiL0RvY3VtZW50YXRpb24vbm9tbXUtbW1hcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU1N2I5ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vbm9tbXUtbW1hcC50eHQKQEAgLTAsMCArMSwyOTEgQEAKKwkJCSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCQkJIE5PLU1NVSBNRU1PUlkgTUFQUElORyBTVVBQT1JUCisJCQkgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGtlcm5lbCBoYXMgbGltaXRlZCBzdXBwb3J0IGZvciBtZW1vcnkgbWFwcGluZyB1bmRlciBuby1NTVUgY29uZGl0aW9ucywgc3VjaAorYXMgYXJlIHVzZWQgaW4gdUNsaW51eCBlbnZpcm9ubWVudHMuIEZyb20gdGhlIHVzZXJzcGFjZSBwb2ludCBvZiB2aWV3LCBtZW1vcnkKK21hcHBpbmcgaXMgbWFkZSB1c2Ugb2YgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgbW1hcCgpIHN5c3RlbSBjYWxsLCB0aGUgc2htYXQoKQorY2FsbCBhbmQgdGhlIGV4ZWN2ZSgpIHN5c3RlbSBjYWxsLiBGcm9tIHRoZSBrZXJuZWwncyBwb2ludCBvZiB2aWV3LCBleGVjdmUoKQorbWFwcGluZyBpcyBhY3R1YWxseSBwZXJmb3JtZWQgYnkgdGhlIGJpbmZtdCBkcml2ZXJzLCB3aGljaCBjYWxsIGJhY2sgaW50byB0aGUKK21tYXAoKSByb3V0aW5lcyB0byBkbyB0aGUgYWN0dWFsIHdvcmsuCisKK01lbW9yeSBtYXBwaW5nIGJlaGF2aW91ciBhbHNvIGludm9sdmVzIHRoZSB3YXkgZm9yaygpLCB2Zm9yaygpLCBjbG9uZSgpIGFuZAorcHRyYWNlKCkgd29yay4gVW5kZXIgdUNsaW51eCB0aGVyZSBpcyBubyBmb3JrKCksIGFuZCBjbG9uZSgpIG11c3QgYmUgc3VwcGxpZWQKK3RoZSBDTE9ORV9WTSBmbGFnLgorCitUaGUgYmVoYXZpb3VyIGlzIHNpbWlsYXIgYmV0d2VlbiB0aGUgTU1VIGFuZCBuby1NTVUgY2FzZXMsIGJ1dCBub3QgaWRlbnRpY2FsOworYW5kIGl0J3MgYWxzbyBtdWNoIG1vcmUgcmVzdHJpY3RlZCBpbiB0aGUgbGF0dGVyIGNhc2U6CisKKyAoKikgQW5vbnltb3VzIG1hcHBpbmcsIE1BUF9QUklWQVRFCisKKwlJbiB0aGUgTU1VIGNhc2U6IFZNIHJlZ2lvbnMgYmFja2VkIGJ5IGFyYml0cmFyeSBwYWdlczsgY29weS1vbi13cml0ZQorCWFjcm9zcyBmb3JrLgorCisJSW4gdGhlIG5vLU1NVSBjYXNlOiBWTSByZWdpb25zIGJhY2tlZCBieSBhcmJpdHJhcnkgY29udGlndW91cyBydW5zIG9mCisJcGFnZXMuCisKKyAoKikgQW5vbnltb3VzIG1hcHBpbmcsIE1BUF9TSEFSRUQKKworCVRoZXNlIGJlaGF2ZSB2ZXJ5IG11Y2ggbGlrZSBwcml2YXRlIG1hcHBpbmdzLCBleGNlcHQgdGhhdCB0aGV5J3JlCisJc2hhcmVkIGFjcm9zcyBmb3JrKCkgb3IgY2xvbmUoKSB3aXRob3V0IENMT05FX1ZNIGluIHRoZSBNTVUgY2FzZS4gU2luY2UKKwl0aGUgbm8tTU1VIGNhc2UgZG9lc24ndCBzdXBwb3J0IHRoZXNlLCBiZWhhdmlvdXIgaXMgaWRlbnRpY2FsIHRvCisJTUFQX1BSSVZBVEUgdGhlcmUuCisKKyAoKikgRmlsZSwgTUFQX1BSSVZBVEUsIFBST1RfUkVBRCAvIFBST1RfRVhFQywgIVBST1RfV1JJVEUKKworCUluIHRoZSBNTVUgY2FzZTogVk0gcmVnaW9ucyBiYWNrZWQgYnkgcGFnZXMgcmVhZCBmcm9tIGZpbGU7IGNoYW5nZXMgdG8KKwl0aGUgdW5kZXJseWluZyBmaWxlIGFyZSByZWZsZWN0ZWQgaW4gdGhlIG1hcHBpbmc7IGNvcGllZCBhY3Jvc3MgZm9yay4KKworCUluIHRoZSBuby1NTVUgY2FzZToKKworICAgICAgICAgLSBJZiBvbmUgZXhpc3RzLCB0aGUga2VybmVsIHdpbGwgcmUtdXNlIGFuIGV4aXN0aW5nIG1hcHBpbmcgdG8gdGhlCisgICAgICAgICAgIHNhbWUgc2VnbWVudCBvZiB0aGUgc2FtZSBmaWxlIGlmIHRoYXQgaGFzIGNvbXBhdGlibGUgcGVybWlzc2lvbnMsCisgICAgICAgICAgIGV2ZW4gaWYgdGhpcyB3YXMgY3JlYXRlZCBieSBhbm90aGVyIHByb2Nlc3MuCisKKyAgICAgICAgIC0gSWYgcG9zc2libGUsIHRoZSBmaWxlIG1hcHBpbmcgd2lsbCBiZSBkaXJlY3RseSBvbiB0aGUgYmFja2luZyBkZXZpY2UKKyAgICAgICAgICAgaWYgdGhlIGJhY2tpbmcgZGV2aWNlIGhhcyB0aGUgTk9NTVVfTUFQX0RJUkVDVCBjYXBhYmlsaXR5IGFuZAorICAgICAgICAgICBhcHByb3ByaWF0ZSBtYXBwaW5nIHByb3RlY3Rpb24gY2FwYWJpbGl0aWVzLiBSYW1mcywgcm9tZnMsIGNyYW1mcworICAgICAgICAgICBhbmQgbXRkIG1pZ2h0IGFsbCBwZXJtaXQgdGhpcy4KKworCSAtIElmIHRoZSBiYWNraW5nIGRldmljZSBkZXZpY2UgY2FuJ3Qgb3Igd29uJ3QgcGVybWl0IGRpcmVjdCBzaGFyaW5nLAorICAgICAgICAgICBidXQgZG9lcyBoYXZlIHRoZSBOT01NVV9NQVBfQ09QWSBjYXBhYmlsaXR5LCB0aGVuIGEgY29weSBvZiB0aGUKKyAgICAgICAgICAgYXBwcm9wcmlhdGUgYml0IG9mIHRoZSBmaWxlIHdpbGwgYmUgcmVhZCBpbnRvIGEgY29udGlndW91cyBiaXQgb2YKKyAgICAgICAgICAgbWVtb3J5IGFuZCBhbnkgZXh0cmFuZW91cyBzcGFjZSBiZXlvbmQgdGhlIEVPRiB3aWxsIGJlIGNsZWFyZWQKKworCSAtIFdyaXRlcyB0byB0aGUgZmlsZSBkbyBub3QgYWZmZWN0IHRoZSBtYXBwaW5nOyB3cml0ZXMgdG8gdGhlIG1hcHBpbmcKKwkgICBhcmUgdmlzaWJsZSBpbiBvdGhlciBwcm9jZXNzZXMgKG5vIE1NVSBwcm90ZWN0aW9uKSwgYnV0IHNob3VsZCBub3QKKwkgICBoYXBwZW4uCisKKyAoKikgRmlsZSwgTUFQX1BSSVZBVEUsIFBST1RfUkVBRCAvIFBST1RfRVhFQywgUFJPVF9XUklURQorCisJSW4gdGhlIE1NVSBjYXNlOiBsaWtlIHRoZSBub24tUFJPVF9XUklURSBjYXNlLCBleGNlcHQgdGhhdCB0aGUgcGFnZXMgaW4KKwlxdWVzdGlvbiBnZXQgY29waWVkIGJlZm9yZSB0aGUgd3JpdGUgYWN0dWFsbHkgaGFwcGVucy4gRnJvbSB0aGF0IHBvaW50CisJb24gd3JpdGVzIHRvIHRoZSBmaWxlIHVuZGVybmVhdGggdGhhdCBwYWdlIG5vIGxvbmdlciBnZXQgcmVmbGVjdGVkIGludG8KKwl0aGUgbWFwcGluZydzIGJhY2tpbmcgcGFnZXMuIFRoZSBwYWdlIGlzIHRoZW4gYmFja2VkIGJ5IHN3YXAgaW5zdGVhZC4KKworCUluIHRoZSBuby1NTVUgY2FzZTogd29ya3MgbXVjaCBsaWtlIHRoZSBub24tUFJPVF9XUklURSBjYXNlLCBleGNlcHQKKwl0aGF0IGEgY29weSBpcyBhbHdheXMgdGFrZW4gYW5kIG5ldmVyIHNoYXJlZC4KKworICgqKSBSZWd1bGFyIGZpbGUgLyBibG9ja2RldiwgTUFQX1NIQVJFRCwgUFJPVF9SRUFEIC8gUFJPVF9FWEVDIC8gUFJPVF9XUklURQorCisJSW4gdGhlIE1NVSBjYXNlOiBWTSByZWdpb25zIGJhY2tlZCBieSBwYWdlcyByZWFkIGZyb20gZmlsZTsgY2hhbmdlcyB0bworCXBhZ2VzIHdyaXR0ZW4gYmFjayB0byBmaWxlOyB3cml0ZXMgdG8gZmlsZSByZWZsZWN0ZWQgaW50byBwYWdlcyBiYWNraW5nCisJbWFwcGluZzsgc2hhcmVkIGFjcm9zcyBmb3JrLgorCisJSW4gdGhlIG5vLU1NVSBjYXNlOiBub3Qgc3VwcG9ydGVkLgorCisgKCopIE1lbW9yeSBiYWNrZWQgcmVndWxhciBmaWxlLCBNQVBfU0hBUkVELCBQUk9UX1JFQUQgLyBQUk9UX0VYRUMgLyBQUk9UX1dSSVRFCisKKwlJbiB0aGUgTU1VIGNhc2U6IEFzIGZvciBvcmRpbmFyeSByZWd1bGFyIGZpbGVzLgorCisJSW4gdGhlIG5vLU1NVSBjYXNlOiBUaGUgZmlsZXN5c3RlbSBwcm92aWRpbmcgdGhlIG1lbW9yeS1iYWNrZWQgZmlsZQorCShzdWNoIGFzIHJhbWZzIG9yIHRtcGZzKSBtYXkgY2hvb3NlIHRvIGhvbm91ciBhbiBvcGVuLCB0cnVuY2F0ZSwgbW1hcAorCXNlcXVlbmNlIGJ5IHByb3ZpZGluZyBhIGNvbnRpZ3VvdXMgc2VxdWVuY2Ugb2YgcGFnZXMgdG8gbWFwLiBJbiB0aGF0CisJY2FzZSwgYSBzaGFyZWQtd3JpdGFibGUgbWVtb3J5IG1hcHBpbmcgd2lsbCBiZSBwb3NzaWJsZS4gSXQgd2lsbCB3b3JrCisJYXMgZm9yIHRoZSBNTVUgY2FzZS4gSWYgdGhlIGZpbGVzeXN0ZW0gZG9lcyBub3QgcHJvdmlkZSBhbnkgc3VjaAorCXN1cHBvcnQsIHRoZW4gdGhlIG1hcHBpbmcgcmVxdWVzdCB3aWxsIGJlIGRlbmllZC4KKworICgqKSBNZW1vcnkgYmFja2VkIGJsb2NrZGV2LCBNQVBfU0hBUkVELCBQUk9UX1JFQUQgLyBQUk9UX0VYRUMgLyBQUk9UX1dSSVRFCisKKwlJbiB0aGUgTU1VIGNhc2U6IEFzIGZvciBvcmRpbmFyeSByZWd1bGFyIGZpbGVzLgorCisJSW4gdGhlIG5vLU1NVSBjYXNlOiBBcyBmb3IgbWVtb3J5IGJhY2tlZCByZWd1bGFyIGZpbGVzLCBidXQgdGhlCisJYmxvY2tkZXYgbXVzdCBiZSBhYmxlIHRvIHByb3ZpZGUgYSBjb250aWd1b3VzIHJ1biBvZiBwYWdlcyB3aXRob3V0CisJdHJ1bmNhdGUgYmVpbmcgY2FsbGVkLiBUaGUgcmFtZGlzayBkcml2ZXIgY291bGQgZG8gdGhpcyBpZiBpdCBhbGxvY2F0ZWQKKwlhbGwgaXRzIG1lbW9yeSBhcyBhIGNvbnRpZ3VvdXMgYXJyYXkgdXBmcm9udC4KKworICgqKSBNZW1vcnkgYmFja2VkIGNoYXJkZXYsIE1BUF9TSEFSRUQsIFBST1RfUkVBRCAvIFBST1RfRVhFQyAvIFBST1RfV1JJVEUKKworCUluIHRoZSBNTVUgY2FzZTogQXMgZm9yIG9yZGluYXJ5IHJlZ3VsYXIgZmlsZXMuCisKKwlJbiB0aGUgbm8tTU1VIGNhc2U6IFRoZSBjaGFyYWN0ZXIgZGV2aWNlIGRyaXZlciBtYXkgY2hvb3NlIHRvIGhvbm91cgorCXRoZSBtbWFwKCkgYnkgcHJvdmlkaW5nIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIHVuZGVybHlpbmcgZGV2aWNlIGlmIGl0CisJcHJvdmlkZXMgbWVtb3J5IG9yIHF1YXNpLW1lbW9yeSB0aGF0IGNhbiBiZSBhY2Nlc3NlZCBkaXJlY3RseS4gRXhhbXBsZXMKKwlvZiBzdWNoIGFyZSBmcmFtZSBidWZmZXJzIGFuZCBmbGFzaCBkZXZpY2VzLiBJZiB0aGUgZHJpdmVyIGRvZXMgbm90CisJcHJvdmlkZSBhbnkgc3VjaCBzdXBwb3J0LCB0aGVuIHRoZSBtYXBwaW5nIHJlcXVlc3Qgd2lsbCBiZSBkZW5pZWQuCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorRlVSVEhFUiBOT1RFUyBPTiBOTy1NTVUgTU1BUAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgKCopIEEgcmVxdWVzdCBmb3IgYSBwcml2YXRlIG1hcHBpbmcgb2YgYSBmaWxlIG1heSByZXR1cm4gYSBidWZmZXIgdGhhdCBpcyBub3QKKyAgICAgcGFnZS1hbGlnbmVkLiAgVGhpcyBpcyBiZWNhdXNlIFhJUCBtYXkgdGFrZSBwbGFjZSwgYW5kIHRoZSBkYXRhIG1heSBub3QgYmUKKyAgICAgcGFnZWQgYWxpZ25lZCBpbiB0aGUgYmFja2luZyBzdG9yZS4KKworICgqKSBBIHJlcXVlc3QgZm9yIGFuIGFub255bW91cyBtYXBwaW5nIHdpbGwgYWx3YXlzIGJlIHBhZ2UgYWxpZ25lZC4gIElmCisgICAgIHBvc3NpYmxlIHRoZSBzaXplIG9mIHRoZSByZXF1ZXN0IHNob3VsZCBiZSBhIHBvd2VyIG9mIHR3byBvdGhlcndpc2Ugc29tZQorICAgICBvZiB0aGUgc3BhY2UgbWF5IGJlIHdhc3RlZCBhcyB0aGUga2VybmVsIG11c3QgYWxsb2NhdGUgYSBwb3dlci1vZi0yCisgICAgIGdyYW51bGUgYnV0IHdpbGwgb25seSBkaXNjYXJkIHRoZSBleGNlc3MgaWYgYXBwcm9wcmlhdGVseSBjb25maWd1cmVkIGFzCisgICAgIHRoaXMgaGFzIGFuIGVmZmVjdCBvbiBmcmFnbWVudGF0aW9uLgorCisgKCopIFRoZSBtZW1vcnkgYWxsb2NhdGVkIGJ5IGEgcmVxdWVzdCBmb3IgYW4gYW5vbnltb3VzIG1hcHBpbmcgd2lsbCBub3JtYWxseQorICAgICBiZSBjbGVhcmVkIGJ5IHRoZSBrZXJuZWwgYmVmb3JlIGJlaW5nIHJldHVybmVkIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUKKyAgICAgTGludXggbWFuIHBhZ2VzICh2ZXIgMi4yMiBvciBsYXRlcikuCisKKyAgICAgSW4gdGhlIE1NVSBjYXNlIHRoaXMgY2FuIGJlIGFjaGlldmVkIHdpdGggcmVhc29uYWJsZSBwZXJmb3JtYW5jZSBhcworICAgICByZWdpb25zIGFyZSBiYWNrZWQgYnkgdmlydHVhbCBwYWdlcywgd2l0aCB0aGUgY29udGVudHMgb25seSBiZWluZyBtYXBwZWQKKyAgICAgdG8gY2xlYXJlZCBwaHlzaWNhbCBwYWdlcyB3aGVuIGEgd3JpdGUgaGFwcGVucyBvbiB0aGF0IHNwZWNpZmljIHBhZ2UKKyAgICAgKHByaW9yIHRvIHdoaWNoLCB0aGUgcGFnZXMgYXJlIGVmZmVjdGl2ZWx5IG1hcHBlZCB0byB0aGUgZ2xvYmFsIHplcm8gcGFnZQorICAgICBmcm9tIHdoaWNoIHJlYWRzIGNhbiB0YWtlIHBsYWNlKS4gIFRoaXMgc3ByZWFkcyBvdXQgdGhlIHRpbWUgaXQgdGFrZXMgdG8KKyAgICAgaW5pdGlhbGl6ZSB0aGUgY29udGVudHMgb2YgYSBwYWdlIC0gZGVwZW5kaW5nIG9uIHRoZSB3cml0ZS11c2FnZSBvZiB0aGUKKyAgICAgbWFwcGluZy4KKworICAgICBJbiB0aGUgbm8tTU1VIGNhc2UsIGhvd2V2ZXIsIGFub255bW91cyBtYXBwaW5ncyBhcmUgYmFja2VkIGJ5IHBoeXNpY2FsCisgICAgIHBhZ2VzLCBhbmQgdGhlIGVudGlyZSBtYXAgaXMgY2xlYXJlZCBhdCBhbGxvY2F0aW9uIHRpbWUuICBUaGlzIGNhbiBjYXVzZQorICAgICBzaWduaWZpY2FudCBkZWxheXMgZHVyaW5nIGEgdXNlcnNwYWNlIG1hbGxvYygpIGFzIHRoZSBDIGxpYnJhcnkgZG9lcyBhbgorICAgICBhbm9ueW1vdXMgbWFwcGluZyBhbmQgdGhlIGtlcm5lbCB0aGVuIGRvZXMgYSBtZW1zZXQgZm9yIHRoZSBlbnRpcmUgbWFwLgorCisgICAgIEhvd2V2ZXIsIGZvciBtZW1vcnkgdGhhdCBpc24ndCByZXF1aXJlZCB0byBiZSBwcmVjbGVhcmVkIC0gc3VjaCBhcyB0aGF0CisgICAgIHJldHVybmVkIGJ5IG1hbGxvYygpIC0gbW1hcCgpIGNhbiB0YWtlIGEgTUFQX1VOSU5JVElBTElaRUQgZmxhZyB0bworICAgICBpbmRpY2F0ZSB0byB0aGUga2VybmVsIHRoYXQgaXQgc2hvdWxkbid0IGJvdGhlciBjbGVhcmluZyB0aGUgbWVtb3J5IGJlZm9yZQorICAgICByZXR1cm5pbmcgaXQuICBOb3RlIHRoYXQgQ09ORklHX01NQVBfQUxMT1dfVU5JTklUSUFMSVpFRCBtdXN0IGJlIGVuYWJsZWQKKyAgICAgdG8gcGVybWl0IHRoaXMsIG90aGVyd2lzZSB0aGUgZmxhZyB3aWxsIGJlIGlnbm9yZWQuCisKKyAgICAgdUNsaWJjIHVzZXMgdGhpcyB0byBzcGVlZCB1cCBtYWxsb2MoKSwgYW5kIHRoZSBFTEYtRkRQSUMgYmluZm10IHVzZXMgdGhpcworICAgICB0byBhbGxvY2F0ZSB0aGUgYnJrIGFuZCBzdGFjayByZWdpb24uCisKKyAoKikgQSBsaXN0IG9mIGFsbCB0aGUgcHJpdmF0ZSBjb3B5IGFuZCBhbm9ueW1vdXMgbWFwcGluZ3Mgb24gdGhlIHN5c3RlbSBpcworICAgICB2aXNpYmxlIHRocm91Z2ggL3Byb2MvbWFwcyBpbiBuby1NTVUgbW9kZS4KKworICgqKSBBIGxpc3Qgb2YgYWxsIHRoZSBtYXBwaW5ncyBpbiB1c2UgYnkgYSBwcm9jZXNzIGlzIHZpc2libGUgdGhyb3VnaAorICAgICAvcHJvYy88cGlkPi9tYXBzIGluIG5vLU1NVSBtb2RlLgorCisgKCopIFN1cHBseWluZyBNQVBfRklYRUQgb3IgYSByZXF1ZXN0aW5nIGEgcGFydGljdWxhciBtYXBwaW5nIGFkZHJlc3Mgd2lsbAorICAgICByZXN1bHQgaW4gYW4gZXJyb3IuCisKKyAoKikgRmlsZXMgbWFwcGVkIHByaXZhdGVseSB1c3VhbGx5IGhhdmUgdG8gaGF2ZSBhIHJlYWQgbWV0aG9kIHByb3ZpZGVkIGJ5IHRoZQorICAgICBkcml2ZXIgb3IgZmlsZXN5c3RlbSBzbyB0aGF0IHRoZSBjb250ZW50cyBjYW4gYmUgcmVhZCBpbnRvIHRoZSBtZW1vcnkKKyAgICAgYWxsb2NhdGVkIGlmIG1tYXAoKSBjaG9vc2VzIG5vdCB0byBtYXAgdGhlIGJhY2tpbmcgZGV2aWNlIGRpcmVjdGx5LiBBbgorICAgICBlcnJvciB3aWxsIHJlc3VsdCBpZiB0aGV5IGRvbid0LiBUaGlzIGlzIG1vc3QgbGlrZWx5IHRvIGJlIGVuY291bnRlcmVkCisgICAgIHdpdGggY2hhcmFjdGVyIGRldmljZSBmaWxlcywgcGlwZXMsIGZpZm9zIGFuZCBzb2NrZXRzLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09CitJTlRFUlBST0NFU1MgU0hBUkVEIE1FTU9SWQorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQm90aCBTWVNWIElQQyBTSE0gc2hhcmVkIG1lbW9yeSBhbmQgUE9TSVggc2hhcmVkIG1lbW9yeSBpcyBzdXBwb3J0ZWQgaW4gTk9NTVUKK21vZGUuICBUaGUgZm9ybWVyIHRocm91Z2ggdGhlIHVzdWFsIG1lY2hhbmlzbSwgdGhlIGxhdHRlciB0aHJvdWdoIGZpbGVzIGNyZWF0ZWQKK29uIHJhbWZzIG9yIHRtcGZzIG1vdW50cy4KKworCis9PT09PT09CitGVVRFWEVTCis9PT09PT09CisKK0Z1dGV4ZXMgYXJlIHN1cHBvcnRlZCBpbiBOT01NVSBtb2RlIGlmIHRoZSBhcmNoIHN1cHBvcnRzIHRoZW0uICBBbiBlcnJvciB3aWxsCitiZSBnaXZlbiBpZiBhbiBhZGRyZXNzIHBhc3NlZCB0byB0aGUgZnV0ZXggc3lzdGVtIGNhbGwgbGllcyBvdXRzaWRlIHRoZQorbWFwcGluZ3MgbWFkZSBieSBhIHByb2Nlc3Mgb3IgaWYgdGhlIG1hcHBpbmcgaW4gd2hpY2ggdGhlIGFkZHJlc3MgbGllcyBkb2VzIG5vdAorc3VwcG9ydCBmdXRleGVzIChzdWNoIGFzIGFuIEkvTyBjaGFyZGV2IG1hcHBpbmcpLgorCisKKz09PT09PT09PT09PT0KK05PLU1NVSBNUkVNQVAKKz09PT09PT09PT09PT0KKworVGhlIG1yZW1hcCgpIGZ1bmN0aW9uIGlzIHBhcnRpYWxseSBzdXBwb3J0ZWQuICBJdCBtYXkgY2hhbmdlIHRoZSBzaXplIG9mIGEKK21hcHBpbmcsIGFuZCBtYXkgbW92ZSBpdFsqXSBpZiBNUkVNQVBfTUFZTU9WRSBpcyBzcGVjaWZpZWQgYW5kIGlmIHRoZSBuZXcgc2l6ZQorb2YgdGhlIG1hcHBpbmcgZXhjZWVkcyB0aGUgc2l6ZSBvZiB0aGUgc2xhYiBvYmplY3QgY3VycmVudGx5IG9jY3VwaWVkIGJ5IHRoZQorbWVtb3J5IHRvIHdoaWNoIHRoZSBtYXBwaW5nIHJlZmVycywgb3IgaWYgYSBzbWFsbGVyIHNsYWIgb2JqZWN0IGNvdWxkIGJlIHVzZWQuCisKK01SRU1BUF9GSVhFRCBpcyBub3Qgc3VwcG9ydGVkLCB0aG91Z2ggaXQgaXMgaWdub3JlZCBpZiB0aGVyZSdzIG5vIGNoYW5nZSBvZgorYWRkcmVzcyBhbmQgdGhlIG9iamVjdCBkb2VzIG5vdCBuZWVkIHRvIGJlIG1vdmVkLgorCitTaGFyZWQgbWFwcGluZ3MgbWF5IG5vdCBiZSBtb3ZlZC4gIFNoYXJlYWJsZSBtYXBwaW5ncyBtYXkgbm90IGJlIG1vdmVkIGVpdGhlciwKK2V2ZW4gaWYgdGhleSBhcmUgbm90IGN1cnJlbnRseSBzaGFyZWQuCisKK1RoZSBtcmVtYXAoKSBmdW5jdGlvbiBtdXN0IGJlIGdpdmVuIGFuIGV4YWN0IG1hdGNoIGZvciBiYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YKK2EgcHJldmlvdXNseSBtYXBwZWQgb2JqZWN0LiAgSXQgbWF5IG5vdCBiZSB1c2VkIHRvIGNyZWF0ZSBob2xlcyBpbiBleGlzdGluZworbWFwcGluZ3MsIG1vdmUgcGFydHMgb2YgZXhpc3RpbmcgbWFwcGluZ3Mgb3IgcmVzaXplIHBhcnRzIG9mIG1hcHBpbmdzLiAgSXQgbXVzdAorYWN0IG9uIGEgY29tcGxldGUgbWFwcGluZy4KKworWypdIE5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitQUk9WSURJTkcgU0hBUkVBQkxFIENIQVJBQ1RFUiBERVZJQ0UgU1VQUE9SVAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVG8gcHJvdmlkZSBzaGFyZWFibGUgY2hhcmFjdGVyIGRldmljZSBzdXBwb3J0LCBhIGRyaXZlciBtdXN0IHByb3ZpZGUgYQorZmlsZS0+Zl9vcC0+Z2V0X3VubWFwcGVkX2FyZWEoKSBvcGVyYXRpb24uIFRoZSBtbWFwKCkgcm91dGluZXMgd2lsbCBjYWxsIHRoaXMKK3RvIGdldCBhIHByb3Bvc2VkIGFkZHJlc3MgZm9yIHRoZSBtYXBwaW5nLiBUaGlzIG1heSByZXR1cm4gYW4gZXJyb3IgaWYgaXQKK2RvZXNuJ3Qgd2lzaCB0byBob25vdXIgdGhlIG1hcHBpbmcgYmVjYXVzZSBpdCdzIHRvbyBsb25nLCBhdCBhIHdlaXJkIG9mZnNldCwKK3VuZGVyIHNvbWUgdW5zdXBwb3J0ZWQgY29tYmluYXRpb24gb2YgZmxhZ3Mgb3Igd2hhdGV2ZXIuCisKK1RoZSBkcml2ZXIgc2hvdWxkIGFsc28gcHJvdmlkZSBiYWNraW5nIGRldmljZSBpbmZvcm1hdGlvbiB3aXRoIGNhcGFiaWxpdGllcyBzZXQKK3RvIGluZGljYXRlIHRoZSBwZXJtaXR0ZWQgdHlwZXMgb2YgbWFwcGluZyBvbiBzdWNoIGRldmljZXMuIFRoZSBkZWZhdWx0IGlzCithc3N1bWVkIHRvIGJlIHJlYWRhYmxlIGFuZCB3cml0YWJsZSwgbm90IGV4ZWN1dGFibGUsIGFuZCBvbmx5IHNoYXJlYWJsZQorZGlyZWN0bHkgKGNhbid0IGJlIGNvcGllZCkuCisKK1RoZSBmaWxlLT5mX29wLT5tbWFwKCkgb3BlcmF0aW9uIHdpbGwgYmUgY2FsbGVkIHRvIGFjdHVhbGx5IGluYXVndXJhdGUgdGhlCittYXBwaW5nLiBJdCBjYW4gYmUgcmVqZWN0ZWQgYXQgdGhhdCBwb2ludC4gUmV0dXJuaW5nIHRoZSBFTk9TWVMgZXJyb3Igd2lsbAorY2F1c2UgdGhlIG1hcHBpbmcgdG8gYmUgY29waWVkIGluc3RlYWQgaWYgTk9NTVVfTUFQX0NPUFkgaXMgc3BlY2lmaWVkLgorCitUaGUgdm1fb3BzLT5jbG9zZSgpIHJvdXRpbmUgd2lsbCBiZSBpbnZva2VkIHdoZW4gdGhlIGxhc3QgbWFwcGluZyBvbiBhIGNoYXJkZXYKK2lzIHJlbW92ZWQuIEFuIGV4aXN0aW5nIG1hcHBpbmcgd2lsbCBiZSBzaGFyZWQsIHBhcnRpYWxseSBvciBub3QsIGlmIHBvc3NpYmxlCit3aXRob3V0IG5vdGlmeWluZyB0aGUgZHJpdmVyLgorCitJdCBpcyBwZXJtaXR0ZWQgYWxzbyBmb3IgdGhlIGZpbGUtPmZfb3AtPmdldF91bm1hcHBlZF9hcmVhKCkgb3BlcmF0aW9uIHRvCityZXR1cm4gLUVOT1NZUy4gVGhpcyB3aWxsIGJlIHRha2VuIHRvIG1lYW4gdGhhdCB0aGlzIG9wZXJhdGlvbiBqdXN0IGRvZXNuJ3QKK3dhbnQgdG8gaGFuZGxlIGl0LCBkZXNwaXRlIHRoZSBmYWN0IGl0J3MgZ290IGFuIG9wZXJhdGlvbi4gRm9yIGluc3RhbmNlLCBpdAorbWlnaHQgdHJ5IGRpcmVjdGluZyB0aGUgY2FsbCB0byBhIHNlY29uZGFyeSBkcml2ZXIgd2hpY2ggdHVybnMgb3V0IG5vdCB0bworaW1wbGVtZW50IGl0LiBTdWNoIGlzIHRoZSBjYXNlIGZvciB0aGUgZnJhbWVidWZmZXIgZHJpdmVyIHdoaWNoIGF0dGVtcHRzIHRvCitkaXJlY3QgdGhlIGNhbGwgdG8gdGhlIGRldmljZS1zcGVjaWZpYyBkcml2ZXIuIFVuZGVyIHN1Y2ggY2lyY3Vtc3RhbmNlcywgdGhlCittYXBwaW5nIHJlcXVlc3Qgd2lsbCBiZSByZWplY3RlZCBpZiBOT01NVV9NQVBfQ09QWSBpcyBub3Qgc3BlY2lmaWVkLCBhbmQgYQorY29weSBtYXBwZWQgb3RoZXJ3aXNlLgorCitJTVBPUlRBTlQgTk9URToKKworCVNvbWUgdHlwZXMgb2YgZGV2aWNlIG1heSBwcmVzZW50IGEgZGlmZmVyZW50IGFwcGVhcmFuY2UgdG8gYW55b25lCisJbG9va2luZyBhdCB0aGVtIGluIGNlcnRhaW4gbW9kZXMuIEZsYXNoIGNoaXBzIGNhbiBiZSBsaWtlIHRoaXM7IGZvcgorCWluc3RhbmNlIGlmIHRoZXkncmUgaW4gcHJvZ3JhbW1pbmcgb3IgZXJhc2UgbW9kZSwgeW91IG1pZ2h0IHNlZSB0aGUKKwlzdGF0dXMgcmVmbGVjdGVkIGluIHRoZSBtYXBwaW5nLCBpbnN0ZWFkIG9mIHRoZSBkYXRhLgorCisJSW4gc3VjaCBhIGNhc2UsIGNhcmUgbXVzdCBiZSB0YWtlbiBsZXN0IHVzZXJzcGFjZSBzZWUgYSBzaGFyZWQgb3IgYQorCXByaXZhdGUgbWFwcGluZyBzaG93aW5nIHN1Y2ggaW5mb3JtYXRpb24gd2hlbiB0aGUgZHJpdmVyIGlzIGJ1c3kKKwljb250cm9sbGluZyB0aGUgZGV2aWNlLiBSZW1lbWJlciBlc3BlY2lhbGx5OiBwcml2YXRlIGV4ZWN1dGFibGUKKwltYXBwaW5ncyBtYXkgc3RpbGwgYmUgbWFwcGVkIGRpcmVjdGx5IG9mZiB0aGUgZGV2aWNlIHVuZGVyIHNvbWUKKwljaXJjdW1zdGFuY2VzIQorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1BST1ZJRElORyBTSEFSRUFCTEUgTUVNT1JZLUJBQ0tFRCBGSUxFIFNVUFBPUlQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUHJvdmlzaW9uIG9mIHNoYXJlZCBtYXBwaW5ncyBvbiBtZW1vcnkgYmFja2VkIGZpbGVzIGlzIHNpbWlsYXIgdG8gdGhlIHByb3Zpc2lvbgorb2Ygc3VwcG9ydCBmb3Igc2hhcmVkIG1hcHBlZCBjaGFyYWN0ZXIgZGV2aWNlcy4gVGhlIG1haW4gZGlmZmVyZW5jZSBpcyB0aGF0IHRoZQorZmlsZXN5c3RlbSBwcm92aWRpbmcgdGhlIHNlcnZpY2Ugd2lsbCBwcm9iYWJseSBhbGxvY2F0ZSBhIGNvbnRpZ3VvdXMgY29sbGVjdGlvbgorb2YgcGFnZXMgYW5kIHBlcm1pdCBtYXBwaW5ncyB0byBiZSBtYWRlIG9uIHRoYXQuCisKK0l0IGlzIHJlY29tbWVuZGVkIHRoYXQgYSB0cnVuY2F0ZSBvcGVyYXRpb24gYXBwbGllZCB0byBzdWNoIGEgZmlsZSB0aGF0CitpbmNyZWFzZXMgdGhlIGZpbGUgc2l6ZSwgaWYgdGhhdCBmaWxlIGlzIGVtcHR5LCBiZSB0YWtlbiBhcyBhIHJlcXVlc3QgdG8gZ2F0aGVyCitlbm91Z2ggcGFnZXMgdG8gaG9ub3VyIGEgbWFwcGluZy4gVGhpcyBpcyByZXF1aXJlZCB0byBzdXBwb3J0IFBPU0lYIHNoYXJlZAorbWVtb3J5LgorCitNZW1vcnkgYmFja2VkIGRldmljZXMgYXJlIGluZGljYXRlZCBieSB0aGUgbWFwcGluZydzIGJhY2tpbmcgZGV2aWNlIGluZm8gaGF2aW5nCit0aGUgbWVtb3J5X2JhY2tlZCBmbGFnIHNldC4KKworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitQUk9WSURJTkcgU0hBUkVBQkxFIEJMT0NLIERFVklDRSBTVVBQT1JUCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1Byb3Zpc2lvbiBvZiBzaGFyZWQgbWFwcGluZ3Mgb24gYmxvY2sgZGV2aWNlIGZpbGVzIGlzIGV4YWN0bHkgdGhlIHNhbWUgYXMgZm9yCitjaGFyYWN0ZXIgZGV2aWNlcy4gSWYgdGhlcmUgaXNuJ3QgYSByZWFsIGRldmljZSB1bmRlcm5lYXRoLCB0aGVuIHRoZSBkcml2ZXIKK3Nob3VsZCBhbGxvY2F0ZSBzdWZmaWNpZW50IGNvbnRpZ3VvdXMgbWVtb3J5IHRvIGhvbm91ciBhbnkgc3VwcG9ydGVkIG1hcHBpbmcuCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitBREpVU1RJTkcgUEFHRSBUUklNTUlORyBCRUhBVklPVVIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitOT01NVSBtbWFwIGF1dG9tYXRpY2FsbHkgcm91bmRzIHVwIHRvIHRoZSBuZWFyZXN0IHBvd2VyLW9mLTIgbnVtYmVyIG9mIHBhZ2VzCit3aGVuIHBlcmZvcm1pbmcgYW4gYWxsb2NhdGlvbi4gIFRoaXMgY2FuIGhhdmUgYWR2ZXJzZSBlZmZlY3RzIG9uIG1lbW9yeQorZnJhZ21lbnRhdGlvbiwgYW5kIGFzIHN1Y2gsIGlzIGxlZnQgY29uZmlndXJhYmxlLiAgVGhlIGRlZmF1bHQgYmVoYXZpb3VyIGlzIHRvCithZ2dyZXNzaXZlbHkgdHJpbSBhbGxvY2F0aW9ucyBhbmQgZGlzY2FyZCBhbnkgZXhjZXNzIHBhZ2VzIGJhY2sgaW4gdG8gdGhlIHBhZ2UKK2FsbG9jYXRvci4gIEluIG9yZGVyIHRvIHJldGFpbiBmaW5lci1ncmFpbmVkIGNvbnRyb2wgb3ZlciBmcmFnbWVudGF0aW9uLCB0aGlzCitiZWhhdmlvdXIgY2FuIGVpdGhlciBiZSBkaXNhYmxlZCBjb21wbGV0ZWx5LCBvciBidW1wZWQgdXAgdG8gYSBoaWdoZXIgcGFnZQord2F0ZXJtYXJrIHdoZXJlIHRyaW1taW5nIGJlZ2lucy4KKworUGFnZSB0cmltbWluZyBiZWhhdmlvdXIgaXMgY29uZmlndXJhYmxlIHZpYSB0aGUgc3lzY3RsIGB2bS5ucl90cmltX3BhZ2VzJy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbnRiLnR4dCBiL0RvY3VtZW50YXRpb24vbnRiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDliYmFiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9udGIudHh0CkBAIC0wLDAgKzEsMTI3IEBACisjIE5UQiBEcml2ZXJzCisKK05UQiAoTm9uLVRyYW5zcGFyZW50IEJyaWRnZSkgaXMgYSB0eXBlIG9mIFBDSS1FeHByZXNzIGJyaWRnZSBjaGlwIHRoYXQgY29ubmVjdHMKK3RoZSBzZXBhcmF0ZSBtZW1vcnkgc3lzdGVtcyBvZiB0d28gY29tcHV0ZXJzIHRvIHRoZSBzYW1lIFBDSS1FeHByZXNzIGZhYnJpYy4KK0V4aXN0aW5nIE5UQiBoYXJkd2FyZSBzdXBwb3J0cyBhIGNvbW1vbiBmZWF0dXJlIHNldCwgaW5jbHVkaW5nIHNjcmF0Y2hwYWQKK3JlZ2lzdGVycywgZG9vcmJlbGwgcmVnaXN0ZXJzLCBhbmQgbWVtb3J5IHRyYW5zbGF0aW9uIHdpbmRvd3MuICBTY3JhdGNocGFkCityZWdpc3RlcnMgYXJlIHJlYWQtYW5kLXdyaXRhYmxlIHJlZ2lzdGVycyB0aGF0IGFyZSBhY2Nlc3NpYmxlIGZyb20gZWl0aGVyIHNpZGUKK29mIHRoZSBkZXZpY2UsIHNvIHRoYXQgcGVlcnMgY2FuIGV4Y2hhbmdlIGEgc21hbGwgYW1vdW50IG9mIGluZm9ybWF0aW9uIGF0IGEKK2ZpeGVkIGFkZHJlc3MuICBEb29yYmVsbCByZWdpc3RlcnMgcHJvdmlkZSBhIHdheSBmb3IgcGVlcnMgdG8gc2VuZCBpbnRlcnJ1cHQKK2V2ZW50cy4gIE1lbW9yeSB3aW5kb3dzIGFsbG93IHRyYW5zbGF0ZWQgcmVhZCBhbmQgd3JpdGUgYWNjZXNzIHRvIHRoZSBwZWVyCittZW1vcnkuCisKKyMjIE5UQiBDb3JlIERyaXZlciAobnRiKQorCitUaGUgTlRCIGNvcmUgZHJpdmVyIGRlZmluZXMgYW4gYXBpIHdyYXBwaW5nIHRoZSBjb21tb24gZmVhdHVyZSBzZXQsIGFuZCBhbGxvd3MKK2NsaWVudHMgaW50ZXJlc3RlZCBpbiBOVEIgZmVhdHVyZXMgdG8gZGlzY292ZXIgTlRCIHRoZSBkZXZpY2VzIHN1cHBvcnRlZCBieQoraGFyZHdhcmUgZHJpdmVycy4gIFRoZSB0ZXJtICJjbGllbnQiIGlzIHVzZWQgaGVyZSB0byBtZWFuIGFuIHVwcGVyIGxheWVyCitjb21wb25lbnQgbWFraW5nIHVzZSBvZiB0aGUgTlRCIGFwaS4gIFRoZSB0ZXJtICJkcml2ZXIsIiBvciAiaGFyZHdhcmUgZHJpdmVyLCIKK2lzIHVzZWQgaGVyZSB0byBtZWFuIGEgZHJpdmVyIGZvciBhIHNwZWNpZmljIHZlbmRvciBhbmQgbW9kZWwgb2YgTlRCIGhhcmR3YXJlLgorCisjIyBOVEIgQ2xpZW50IERyaXZlcnMKKworTlRCIGNsaWVudCBkcml2ZXJzIHNob3VsZCByZWdpc3RlciB3aXRoIHRoZSBOVEIgY29yZSBkcml2ZXIuICBBZnRlcgorcmVnaXN0ZXJpbmcsIHRoZSBjbGllbnQgcHJvYmUgYW5kIHJlbW92ZSBmdW5jdGlvbnMgd2lsbCBiZSBjYWxsZWQgYXBwcm9wcmlhdGVseQorYXMgbnRiIGhhcmR3YXJlLCBvciBoYXJkd2FyZSBkcml2ZXJzLCBhcmUgaW5zZXJ0ZWQgYW5kIHJlbW92ZWQuICBUaGUKK3JlZ2lzdHJhdGlvbiB1c2VzIHRoZSBMaW51eCBEZXZpY2UgZnJhbWV3b3JrLCBzbyBpdCBzaG91bGQgZmVlbCBmYW1pbGlhciB0bworYW55b25lIHdobyBoYXMgd3JpdHRlbiBhIHBjaSBkcml2ZXIuCisKKyMjIyBOVEIgVHJhbnNwb3J0IENsaWVudCAobnRiXF90cmFuc3BvcnQpIGFuZCBOVEIgTmV0ZGV2IChudGJcX25ldGRldikKKworVGhlIHByaW1hcnkgY2xpZW50IGZvciBOVEIgaXMgdGhlIFRyYW5zcG9ydCBjbGllbnQsIHVzZWQgaW4gdGFuZGVtIHdpdGggTlRCCitOZXRkZXYuICBUaGVzZSBkcml2ZXJzIGZ1bmN0aW9uIHRvZ2V0aGVyIHRvIGNyZWF0ZSBhIGxvZ2ljYWwgbGluayB0byB0aGUgcGVlciwKK2Fjcm9zcyB0aGUgbnRiLCB0byBleGNoYW5nZSBwYWNrZXRzIG9mIG5ldHdvcmsgZGF0YS4gIFRoZSBUcmFuc3BvcnQgY2xpZW50Citlc3RhYmxpc2hlcyBhIGxvZ2ljYWwgbGluayB0byB0aGUgcGVlciwgYW5kIGNyZWF0ZXMgcXVldWUgcGFpcnMgdG8gZXhjaGFuZ2UKK21lc3NhZ2VzIGFuZCBkYXRhLiAgVGhlIE5UQiBOZXRkZXYgdGhlbiBjcmVhdGVzIGFuIGV0aGVybmV0IGRldmljZSB1c2luZyBhCitUcmFuc3BvcnQgcXVldWUgcGFpci4gIE5ldHdvcmsgZGF0YSBpcyBjb3BpZWQgYmV0d2VlbiBzb2NrZXQgYnVmZmVycyBhbmQgdGhlCitUcmFuc3BvcnQgcXVldWUgcGFpciBidWZmZXIuICBUaGUgVHJhbnNwb3J0IGNsaWVudCBtYXkgYmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzCitiZXNpZGVzIE5ldGRldiwgaG93ZXZlciBubyBvdGhlciBhcHBsaWNhdGlvbnMgaGF2ZSB5ZXQgYmVlbiB3cml0dGVuLgorCisjIyMgTlRCIFBpbmcgUG9uZyBUZXN0IENsaWVudCAobnRiXF9waW5ncG9uZykKKworVGhlIFBpbmcgUG9uZyB0ZXN0IGNsaWVudCBzZXJ2ZXMgYXMgYSBkZW1vbnN0cmF0aW9uIHRvIGV4ZXJjaXNlIHRoZSBkb29yYmVsbAorYW5kIHNjcmF0Y2hwYWQgcmVnaXN0ZXJzIG9mIE5UQiBoYXJkd2FyZSwgYW5kIGFzIGFuIGV4YW1wbGUgc2ltcGxlIE5UQiBjbGllbnQuCitQaW5nIFBvbmcgZW5hYmxlcyB0aGUgbGluayB3aGVuIHN0YXJ0ZWQsIHdhaXRzIGZvciB0aGUgTlRCIGxpbmsgdG8gY29tZSB1cCwgYW5kCit0aGVuIHByb2NlZWRzIHRvIHJlYWQgYW5kIHdyaXRlIHRoZSBkb29yYmVsbCBzY3JhdGNocGFkIHJlZ2lzdGVycyBvZiB0aGUgTlRCLgorVGhlIHBlZXJzIGludGVycnVwdCBlYWNoIG90aGVyIHVzaW5nIGEgYml0IG1hc2sgb2YgZG9vcmJlbGwgYml0cywgd2hpY2ggaXMKK3NoaWZ0ZWQgYnkgb25lIGluIGVhY2ggcm91bmQsIHRvIHRlc3QgdGhlIGJlaGF2aW9yIG9mIG11bHRpcGxlIGRvb3JiZWxsIGJpdHMKK2FuZCBpbnRlcnJ1cHQgdmVjdG9ycy4gIFRoZSBQaW5nIFBvbmcgZHJpdmVyIGFsc28gcmVhZHMgdGhlIGZpcnN0IGxvY2FsCitzY3JhdGNocGFkLCBhbmQgd3JpdGVzIHRoZSB2YWx1ZSBwbHVzIG9uZSB0byB0aGUgZmlyc3QgcGVlciBzY3JhdGNocGFkLCBlYWNoCityb3VuZCBiZWZvcmUgd3JpdGluZyB0aGUgcGVlciBkb29yYmVsbCByZWdpc3Rlci4KKworTW9kdWxlIFBhcmFtZXRlcnM6CisKKyogdW5zYWZlIC0gU29tZSBoYXJkd2FyZSBoYXMga25vd24gaXNzdWVzIHdpdGggc2NyYXRjaHBhZCBhbmQgZG9vcmJlbGwKKwlyZWdpc3RlcnMuICBCeSBkZWZhdWx0LCBQaW5nIFBvbmcgd2lsbCBub3QgYXR0ZW1wdCB0byBleGVyY2lzZSBzdWNoCisJaGFyZHdhcmUuICBZb3UgbWF5IG92ZXJyaWRlIHRoaXMgYmVoYXZpb3IgYXQgeW91ciBvd24gcmlzayBieSBzZXR0aW5nCisJdW5zYWZlPTEuCisqIGRlbGF5XF9tcyAtIFNwZWNpZnkgdGhlIGRlbGF5IGJldHdlZW4gcmVjZWl2aW5nIGEgZG9vcmJlbGwKKwlpbnRlcnJ1cHQgZXZlbnQgYW5kIHNldHRpbmcgdGhlIHBlZXIgZG9vcmJlbGwgcmVnaXN0ZXIgZm9yIHRoZSBuZXh0CisJcm91bmQuCisqIGluaXRcX2RiIC0gU3BlY2lmeSB0aGUgZG9vcmJlbGwgYml0cyB0byBzdGFydCBuZXcgc2VyaWVzIG9mIHJvdW5kcy4gIEEgbmV3CisJc2VyaWVzIGJlZ2lucyBvbmNlIGFsbCB0aGUgZG9vcmJlbGwgYml0cyBoYXZlIGJlZW4gc2hpZnRlZCBvdXQgb2YKKwlyYW5nZS4KKyogZHluZGJnIC0gSXQgaXMgc3VnZ2VzdGVkIHRvIHNwZWNpZnkgZHluZGJnPStwIHdoZW4gbG9hZGluZyB0aGlzIG1vZHVsZSwgYW5kCisJdGhlbiB0byBvYnNlcnZlIGRlYnVnZ2luZyBvdXRwdXQgb24gdGhlIGNvbnNvbGUuCisKKyMjIyBOVEIgVG9vbCBUZXN0IENsaWVudCAobnRiXF90b29sKQorCitUaGUgVG9vbCB0ZXN0IGNsaWVudCBzZXJ2ZXMgZm9yIGRlYnVnZ2luZywgcHJpbWFyaWx5LCBudGIgaGFyZHdhcmUgYW5kIGRyaXZlcnMuCitUaGUgVG9vbCBwcm92aWRlcyBhY2Nlc3MgdGhyb3VnaCBkZWJ1Z2ZzIGZvciByZWFkaW5nLCBzZXR0aW5nLCBhbmQgY2xlYXJpbmcgdGhlCitOVEIgZG9vcmJlbGwsIGFuZCByZWFkaW5nIGFuZCB3cml0aW5nIHNjcmF0Y2hwYWRzLgorCitUaGUgVG9vbCBkb2VzIG5vdCBjdXJyZW50bHkgaGF2ZSBhbnkgbW9kdWxlIHBhcmFtZXRlcnMuCisKK0RlYnVnZnMgRmlsZXM6CisKKyogKmRlYnVnZnMqL250YlxfdG9vbC8qaHcqLyAtIEEgZGlyZWN0b3J5IGluIGRlYnVnZnMgd2lsbCBiZSBjcmVhdGVkIGZvciBlYWNoCisJTlRCIGRldmljZSBwcm9iZWQgYnkgdGhlIHRvb2wuICBUaGlzIGRpcmVjdG9yeSBpcyBzaG9ydGVuZWQgdG8gKmh3KgorCWJlbG93LgorKiAqaHcqL2RiIC0gVGhpcyBmaWxlIGlzIHVzZWQgdG8gcmVhZCwgc2V0LCBhbmQgY2xlYXIgdGhlIGxvY2FsIGRvb3JiZWxsLiAgTm90CisJYWxsIG9wZXJhdGlvbnMgbWF5IGJlIHN1cHBvcnRlZCBieSBhbGwgaGFyZHdhcmUuICBUbyByZWFkIHRoZSBkb29yYmVsbCwKKwlyZWFkIHRoZSBmaWxlLiAgVG8gc2V0IHRoZSBkb29yYmVsbCwgd3JpdGUgYHNgIGZvbGxvd2VkIGJ5IHRoZSBiaXRzIHRvCisJc2V0IChlZzogYGVjaG8gJ3MgMHgwMTAxJyA+IGRiYCkuICBUbyBjbGVhciB0aGUgZG9vcmJlbGwsIHdyaXRlIGBjYAorCWZvbGxvd2VkIGJ5IHRoZSBiaXRzIHRvIGNsZWFyLgorKiAqaHcqL21hc2sgLSBUaGlzIGZpbGUgaXMgdXNlZCB0byByZWFkLCBzZXQsIGFuZCBjbGVhciB0aGUgbG9jYWwgZG9vcmJlbGwgbWFzay4KKwlTZWUgKmRiKiBmb3IgZGV0YWlscy4KKyogKmh3Ki9wZWVyXF9kYiAtIFRoaXMgZmlsZSBpcyB1c2VkIHRvIHJlYWQsIHNldCwgYW5kIGNsZWFyIHRoZSBwZWVyIGRvb3JiZWxsLgorCVNlZSAqZGIqIGZvciBkZXRhaWxzLgorKiAqaHcqL3BlZXJcX21hc2sgLSBUaGlzIGZpbGUgaXMgdXNlZCB0byByZWFkLCBzZXQsIGFuZCBjbGVhciB0aGUgcGVlciBkb29yYmVsbAorCW1hc2suICBTZWUgKmRiKiBmb3IgZGV0YWlscy4KKyogKmh3Ki9zcGFkIC0gVGhpcyBmaWxlIGlzIHVzZWQgdG8gcmVhZCBhbmQgd3JpdGUgbG9jYWwgc2NyYXRjaHBhZHMuICBUbyByZWFkCisJdGhlIHZhbHVlcyBvZiBhbGwgc2NyYXRjaHBhZHMsIHJlYWQgdGhlIGZpbGUuICBUbyB3cml0ZSB2YWx1ZXMsIHdyaXRlIGEKKwlzZXJpZXMgb2YgcGFpcnMgb2Ygc2NyYXRjaHBhZCBudW1iZXIgYW5kIHZhbHVlCisJKGVnOiBgZWNobyAnNCAweDEyMyA3IDB4YWJjJyA+IHNwYWRgCisJIyB0byBzZXQgc2NyYXRjaHBhZHMgYDRgIGFuZCBgN2AgdG8gYDB4MTIzYCBhbmQgYDB4YWJjYCwgcmVzcGVjdGl2ZWx5KS4KKyogKmh3Ki9wZWVyXF9zcGFkIC0gVGhpcyBmaWxlIGlzIHVzZWQgdG8gcmVhZCBhbmQgd3JpdGUgcGVlciBzY3JhdGNocGFkcy4gIFNlZQorCSpzcGFkKiBmb3IgZGV0YWlscy4KKworIyMgTlRCIEhhcmR3YXJlIERyaXZlcnMKKworTlRCIGhhcmR3YXJlIGRyaXZlcnMgc2hvdWxkIHJlZ2lzdGVyIGRldmljZXMgd2l0aCB0aGUgTlRCIGNvcmUgZHJpdmVyLiAgQWZ0ZXIKK3JlZ2lzdGVyaW5nLCBjbGllbnRzIHByb2JlIGFuZCByZW1vdmUgZnVuY3Rpb25zIHdpbGwgYmUgY2FsbGVkLgorCisjIyMgTlRCIEludGVsIEhhcmR3YXJlIERyaXZlciAobnRiXF9od1xfaW50ZWwpCisKK1RoZSBJbnRlbCBoYXJkd2FyZSBkcml2ZXIgc3VwcG9ydHMgTlRCIG9uIFhlb24gYW5kIEF0b20gQ1BVcy4KKworTW9kdWxlIFBhcmFtZXRlcnM6CisKKyogYjJiXF9td1xfaWR4IC0gSWYgdGhlIHBlZXIgbnRiIGlzIHRvIGJlIGFjY2Vzc2VkIHZpYSBhIG1lbW9yeSB3aW5kb3csIHRoZW4gdXNlCisJdGhpcyBtZW1vcnkgd2luZG93IHRvIGFjY2VzcyB0aGUgcGVlciBudGIuICBBIHZhbHVlIG9mIHplcm8gb3IgcG9zaXRpdmUKKwlzdGFydHMgZnJvbSB0aGUgZmlyc3QgbXcgaWR4LCBhbmQgYSBuZWdhdGl2ZSB2YWx1ZSBzdGFydHMgZnJvbSB0aGUgbGFzdAorCW13IGlkeC4gIEJvdGggc2lkZXMgTVVTVCBzZXQgdGhlIHNhbWUgdmFsdWUgaGVyZSEgIFRoZSBkZWZhdWx0IHZhbHVlIGlzCisJYC0xYC4KKyogYjJiXF9td1xfc2hhcmUgLSBJZiB0aGUgcGVlciBudGIgaXMgdG8gYmUgYWNjZXNzZWQgdmlhIGEgbWVtb3J5IHdpbmRvdywgYW5kIGlmCisJdGhlIG1lbW9yeSB3aW5kb3cgaXMgbGFyZ2UgZW5vdWdoLCBzdGlsbCBhbGxvdyB0aGUgY2xpZW50IHRvIHVzZSB0aGUKKwlzZWNvbmQgaGFsZiBvZiB0aGUgbWVtb3J5IHdpbmRvdyBmb3IgYWRkcmVzcyB0cmFuc2xhdGlvbiB0byB0aGUgcGVlci4KKyogeGVvblxfYjJiXF91c2RcX2JhcjJcX2FkZHI2NCAtIElmIHVzaW5nIEIyQiB0b3BvbG9neSBvbiBYZW9uIGhhcmR3YXJlLCB1c2UKKwl0aGlzIDY0IGJpdCBhZGRyZXNzIG9uIHRoZSBidXMgYmV0d2VlbiB0aGUgTlRCIGRldmljZXMgZm9yIHRoZSB3aW5kb3cKKwlhdCBCQVIyLCBvbiB0aGUgdXBzdHJlYW0gc2lkZSBvZiB0aGUgbGluay4KKyogeGVvblxfYjJiXF91c2RcX2JhcjRcX2FkZHI2NCAtIFNlZSAqeGVvblxfYjJiXF9iYXIyXF9hZGRyNjQqLgorKiB4ZW9uXF9iMmJcX3VzZFxfYmFyNFxfYWRkcjMyIC0gU2VlICp4ZW9uXF9iMmJcX2JhcjJcX2FkZHI2NCouCisqIHhlb25cX2IyYlxfdXNkXF9iYXI1XF9hZGRyMzIgLSBTZWUgKnhlb25cX2IyYlxfYmFyMlxfYWRkcjY0Ki4KKyogeGVvblxfYjJiXF9kc2RcX2JhcjJcX2FkZHI2NCAtIFNlZSAqeGVvblxfYjJiXF9iYXIyXF9hZGRyNjQqLgorKiB4ZW9uXF9iMmJcX2RzZFxfYmFyNFxfYWRkcjY0IC0gU2VlICp4ZW9uXF9iMmJcX2JhcjJcX2FkZHI2NCouCisqIHhlb25cX2IyYlxfZHNkXF9iYXI0XF9hZGRyMzIgLSBTZWUgKnhlb25cX2IyYlxfYmFyMlxfYWRkcjY0Ki4KKyogeGVvblxfYjJiXF9kc2RcX2JhcjVcX2FkZHIzMiAtIFNlZSAqeGVvblxfYjJiXF9iYXIyXF9hZGRyNjQqLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9udW1hc3RhdC50eHQgYi9Eb2N1bWVudGF0aW9uL251bWFzdGF0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjAzMjc3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9udW1hc3RhdC50eHQKQEAgLTAsMCArMSwyNyBAQAorCitOdW1hIHBvbGljeSBoaXQvbWlzcyBzdGF0aXN0aWNzCisKKy9zeXMvZGV2aWNlcy9zeXN0ZW0vbm9kZS9ub2RlKi9udW1hc3RhdAorCitBbGwgdW5pdHMgYXJlIHBhZ2VzLiBIdWdlcGFnZXMgaGF2ZSBzZXBhcmF0ZSBjb3VudGVycy4KKworbnVtYV9oaXQJQSBwcm9jZXNzIHdhbnRlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZnJvbSB0aGlzIG5vZGUsCisJCWFuZCBzdWNjZWVkZWQuCisKK251bWFfbWlzcwlBIHByb2Nlc3Mgd2FudGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmcm9tIGFub3RoZXIgbm9kZSwKKwkJYnV0IGVuZGVkIHVwIHdpdGggbWVtb3J5IGZyb20gdGhpcyBub2RlLgorCitudW1hX2ZvcmVpZ24JQSBwcm9jZXNzIHdhbnRlZCB0byBhbGxvY2F0ZSBvbiB0aGlzIG5vZGUsCisJCWJ1dCBlbmRlZCB1cCB3aXRoIG1lbW9yeSBmcm9tIGFub3RoZXIgb25lLgorCitsb2NhbF9ub2RlCUEgcHJvY2VzcyByYW4gb24gdGhpcyBub2RlIGFuZCBnb3QgbWVtb3J5IGZyb20gaXQuCisKK290aGVyX25vZGUJQSBwcm9jZXNzIHJhbiBvbiB0aGlzIG5vZGUgYW5kIGdvdCBtZW1vcnkgZnJvbSBhbm90aGVyIG5vZGUuCisKK2ludGVybGVhdmVfaGl0IAlJbnRlcmxlYXZpbmcgd2FudGVkIHRvIGFsbG9jYXRlIGZyb20gdGhpcyBub2RlCisJCWFuZCBzdWNjZWVkZWQuCisKK0ZvciBlYXNpZXIgcmVhZGluZyB5b3UgY2FuIHVzZSB0aGUgbnVtYXN0YXQgdXRpbGl0eSBmcm9tIHRoZSBudW1hY3RsIHBhY2thZ2UKKyhodHRwOi8vb3NzLnNnaS5jb20vcHJvamVjdHMvbGlibnVtYS8pLiBOb3RlIHRoYXQgaXQgb25seSB3b3Jrcword2VsbCByaWdodCBub3cgb24gbWFjaGluZXMgd2l0aCBhIHNtYWxsIG51bWJlciBvZiBDUFVzLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL252ZGltbS9idHQudHh0IGIvRG9jdW1lbnRhdGlvbi9udmRpbW0vYnR0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTE0NDNmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9udmRpbW0vYnR0LnR4dApAQCAtMCwwICsxLDI4MyBAQAorQlRUIC0gQmxvY2sgVHJhbnNsYXRpb24gVGFibGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworMS4gSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0tLS0KKworUGVyc2lzdGVudCBtZW1vcnkgYmFzZWQgc3RvcmFnZSBpcyBhYmxlIHRvIHBlcmZvcm0gSU8gYXQgYnl0ZSAob3IgbW9yZQorYWNjdXJhdGVseSwgY2FjaGUgbGluZSkgZ3JhbnVsYXJpdHkuIEhvd2V2ZXIsIHdlIG9mdGVuIHdhbnQgdG8gZXhwb3NlIHN1Y2gKK3N0b3JhZ2UgYXMgdHJhZGl0aW9uYWwgYmxvY2sgZGV2aWNlcy4gVGhlIGJsb2NrIGRyaXZlcnMgZm9yIHBlcnNpc3RlbnQgbWVtb3J5Cit3aWxsIGRvIGV4YWN0bHkgdGhpcy4gSG93ZXZlciwgdGhleSBkbyBub3QgcHJvdmlkZSBhbnkgYXRvbWljaXR5IGd1YXJhbnRlZXMuCitUcmFkaXRpb25hbCBTU0RzIHR5cGljYWxseSBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCB0b3JuIHNlY3RvcnMgaW4gaGFyZHdhcmUsCit1c2luZyBzdG9yZWQgZW5lcmd5IGluIGNhcGFjaXRvcnMgdG8gY29tcGxldGUgaW4tZmxpZ2h0IGJsb2NrIHdyaXRlcywgb3IgcGVyaGFwcworaW4gZmlybXdhcmUuIFdlIGRvbid0IGhhdmUgdGhpcyBsdXh1cnkgd2l0aCBwZXJzaXN0ZW50IG1lbW9yeSAtIGlmIGEgd3JpdGUgaXMgaW4KK3Byb2dyZXNzLCBhbmQgd2UgZXhwZXJpZW5jZSBhIHBvd2VyIGZhaWx1cmUsIHRoZSBibG9jayB3aWxsIGNvbnRhaW4gYSBtaXggb2Ygb2xkCithbmQgbmV3IGRhdGEuIEFwcGxpY2F0aW9ucyBtYXkgbm90IGJlIHByZXBhcmVkIHRvIGhhbmRsZSBzdWNoIGEgc2NlbmFyaW8uCisKK1RoZSBCbG9jayBUcmFuc2xhdGlvbiBUYWJsZSAoQlRUKSBwcm92aWRlcyBhdG9taWMgc2VjdG9yIHVwZGF0ZSBzZW1hbnRpY3MgZm9yCitwZXJzaXN0ZW50IG1lbW9yeSBkZXZpY2VzLCBzbyB0aGF0IGFwcGxpY2F0aW9ucyB0aGF0IHJlbHkgb24gc2VjdG9yIHdyaXRlcyBub3QKK2JlaW5nIHRvcm4gY2FuIGNvbnRpbnVlIHRvIGRvIHNvLiBUaGUgQlRUIG1hbmlmZXN0cyBpdHNlbGYgYXMgYSBzdGFja2VkIGJsb2NrCitkZXZpY2UsIGFuZCByZXNlcnZlcyBhIHBvcnRpb24gb2YgdGhlIHVuZGVybHlpbmcgc3RvcmFnZSBmb3IgaXRzIG1ldGFkYXRhLiBBdAordGhlIGhlYXJ0IG9mIGl0LCBpcyBhbiBpbmRpcmVjdGlvbiB0YWJsZSB0aGF0IHJlLW1hcHMgYWxsIHRoZSBibG9ja3Mgb24gdGhlCit2b2x1bWUuIEl0IGNhbiBiZSB0aG91Z2h0IG9mIGFzIGFuIGV4dHJlbWVseSBzaW1wbGUgZmlsZSBzeXN0ZW0gdGhhdCBvbmx5Citwcm92aWRlcyBhdG9taWMgc2VjdG9yIHVwZGF0ZXMuCisKKworMi4gU3RhdGljIExheW91dAorLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgdW5kZXJseWluZyBzdG9yYWdlIG9uIHdoaWNoIGEgQlRUIGNhbiBiZSBsYWlkIG91dCBpcyBub3QgbGltaXRlZCBpbiBhbnkgd2F5LgorVGhlIEJUVCwgaG93ZXZlciwgc3BsaXRzIHRoZSBhdmFpbGFibGUgc3BhY2UgaW50byBjaHVua3Mgb2YgdXAgdG8gNTEyIEdpQiwKK2NhbGxlZCAiQXJlbmFzIi4KKworRWFjaCBhcmVuYSBmb2xsb3dzIHRoZSBzYW1lIGxheW91dCBmb3IgaXRzIG1ldGFkYXRhLCBhbmQgYWxsIHJlZmVyZW5jZXMgaW4gYW4KK2FyZW5hIGFyZSBpbnRlcm5hbCB0byBpdCAod2l0aCB0aGUgZXhjZXB0aW9uIG9mIG9uZSBmaWVsZCB0aGF0IHBvaW50cyB0byB0aGUKK25leHQgYXJlbmEpLiBUaGUgZm9sbG93aW5nIGRlcGljdHMgdGhlICJPbi1kaXNrIiBtZXRhZGF0YSBsYXlvdXQ6CisKKworICBCYWNraW5nIFN0b3JlICAgICArLS0tLS0tLT4gIEFyZW5hCisrLS0tLS0tLS0tLS0tLS0tKyAgIHwgICArLS0tLS0tLS0tLS0tLS0tLS0tKworfCAgICAgICAgICAgICAgIHwgICB8ICAgfCBBcmVuYSBpbmZvIGJsb2NrIHwKK3wgICAgQXJlbmEgMCAgICArLS0tKyAgIHwgICAgICAgNEsgICAgICAgICB8Cit8ICAgICA1MTJHICAgICAgfCAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tKworfCAgICAgICAgICAgICAgIHwgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0rICAgICAgIHwgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgfCAgICAgICB8ICAgICAgICAgICAgICAgICAgfAorfCAgICBBcmVuYSAxICAgIHwgICAgICAgfCAgIERhdGEgQmxvY2tzICAgIHwKK3wgICAgIDUxMkcgICAgICB8ICAgICAgIHwgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgfCAgICAgICB8ICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLSsgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgLiAgICAgICB8ICAgICAgIHwgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgIC4gICAgICAgfCAgICAgICB8ICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAuICAgICAgIHwgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICB8ICAgICAgIHwgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgfCAgICAgICB8ICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLSsgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICBCVFQgTWFwICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIEJUVCBGbG9nICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgSW5mbyBibG9jayBjb3B5ICB8CisgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIDRLICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKKworCiszLiBUaGVvcnkgb2YgT3BlcmF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworYS4gVGhlIEJUVCBNYXAKKy0tLS0tLS0tLS0tLS0tCisKK1RoZSBtYXAgaXMgYSBzaW1wbGUgbG9va3VwL2luZGlyZWN0aW9uIHRhYmxlIHRoYXQgbWFwcyBhbiBMQkEgdG8gYW4gaW50ZXJuYWwKK2Jsb2NrLiBFYWNoIG1hcCBlbnRyeSBpcyAzMiBiaXRzLiBUaGUgdHdvIG1vc3Qgc2lnbmlmaWNhbnQgYml0cyBhcmUgc3BlY2lhbAorZmxhZ3MsIGFuZCB0aGUgcmVtYWluaW5nIGZvcm0gdGhlIGludGVybmFsIGJsb2NrIG51bWJlci4KKworQml0ICAgICAgRGVzY3JpcHRpb24KKzMxIC0gMzAJOiBFcnJvciBhbmQgWmVybyBmbGFncyAtIFVzZWQgaW4gdGhlIGZvbGxvd2luZyB3YXk6CisJIEJpdAkJICAgICAgRGVzY3JpcHRpb24KKwkzMSAzMAorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJIDAwCUluaXRpYWwgc3RhdGUuIFJlYWRzIHJldHVybiB6ZXJvZXM7IFByZW1hcCA9IFBvc3RtYXAKKwkgMDEJWmVybyBzdGF0ZTogUmVhZHMgcmV0dXJuIHplcm9lcworCSAxMAlFcnJvciBzdGF0ZTogUmVhZHMgZmFpbDsgV3JpdGVzIGNsZWFyICdFJyBiaXQKKwkgMTEJTm9ybWFsIEJsb2NrIOKAkyBoYXMgdmFsaWQgcG9zdG1hcAorCisKKzI5IC0gMAk6IE1hcHBpbmdzIHRvIGludGVybmFsICdwb3N0bWFwJyBibG9ja3MKKworCitTb21lIG9mIHRoZSB0ZXJtaW5vbG9neSB0aGF0IHdpbGwgYmUgc3Vic2VxdWVudGx5IHVzZWQ6CisKK0V4dGVybmFsIExCQSAgOiBMQkEgYXMgbWFkZSB2aXNpYmxlIHRvIHVwcGVyIGxheWVycy4KK0FCQSAgICAgICAgICAgOiBBcmVuYSBCbG9jayBBZGRyZXNzIC0gQmxvY2sgb2Zmc2V0L251bWJlciB3aXRoaW4gYW4gYXJlbmEKK1ByZW1hcCBBQkEgICAgOiBUaGUgYmxvY2sgb2Zmc2V0IGludG8gYW4gYXJlbmEsIHdoaWNoIHdhcyBkZWNpZGVkIHVwb24gYnkgcmFuZ2UKKwkJY2hlY2tpbmcgdGhlIEV4dGVybmFsIExCQQorUG9zdG1hcCBBQkEgICA6IFRoZSBibG9jayBudW1iZXIgaW4gdGhlICJEYXRhIEJsb2NrcyIgYXJlYSBvYnRhaW5lZCBhZnRlcgorCQlpbmRpcmVjdGlvbiBmcm9tIHRoZSBtYXAKK25mcmVlCSAgICAgIDogVGhlIG51bWJlciBvZiBmcmVlIGJsb2NrcyB0aGF0IGFyZSBtYWludGFpbmVkIGF0IGFueSBnaXZlbiB0aW1lLgorCQlUaGlzIGlzIHRoZSBudW1iZXIgb2YgY29uY3VycmVudCB3cml0ZXMgdGhhdCBjYW4gaGFwcGVuIHRvIHRoZQorCQlhcmVuYS4KKworCitGb3IgZXhhbXBsZSwgYWZ0ZXIgYWRkaW5nIGEgQlRULCB3ZSBzdXJmYWNlIGEgZGlzayBvZiAxMDI0Ry4gV2UgZ2V0IGEgcmVhZCBmb3IKK3RoZSBleHRlcm5hbCBMQkEgYXQgNzY4Ry4gVGhpcyBmYWxscyBpbnRvIHRoZSBzZWNvbmQgYXJlbmEsIGFuZCBvZiB0aGUgNTEyRword29ydGggb2YgYmxvY2tzIHRoYXQgdGhpcyBhcmVuYSBjb250cmlidXRlcywgdGhpcyBibG9jayBpcyBhdCAyNTZHLiBUaHVzLCB0aGUKK3ByZW1hcCBBQkEgaXMgMjU2Ry4gV2Ugbm93IHJlZmVyIHRvIHRoZSBtYXAsIGFuZCBmaW5kIG91dCB0aGUgbWFwcGluZyBmb3IgYmxvY2sKKydYJyAoMjU2RykgcG9pbnRzIHRvIGJsb2NrICdZJywgc2F5ICc2NCcuIFRodXMgdGhlIHBvc3RtYXAgQUJBIGlzIDY0LgorCisKK2IuIFRoZSBCVFQgRmxvZworLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBCVFQgcHJvdmlkZXMgc2VjdG9yIGF0b21pY2l0eSBieSBtYWtpbmcgZXZlcnkgd3JpdGUgYW4gImFsbG9jYXRpbmcgd3JpdGUiLAoraS5lLiBFdmVyeSB3cml0ZSBnb2VzIHRvIGEgImZyZWUiIGJsb2NrLiBBIHJ1bm5pbmcgbGlzdCBvZiBmcmVlIGJsb2NrcyBpcworbWFpbnRhaW5lZCBpbiB0aGUgZm9ybSBvZiB0aGUgQlRUIGZsb2cuICdGbG9nJyBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSB3b3JkcworImZyZWUgbGlzdCIgYW5kICJsb2ciLiBUaGUgZmxvZyBjb250YWlucyAnbmZyZWUnIGVudHJpZXMsIGFuZCBhbiBlbnRyeSBjb250YWluczoKKworbGJhICAgICA6IFRoZSBwcmVtYXAgQUJBIHRoYXQgaXMgYmVpbmcgd3JpdHRlbiB0bworb2xkX21hcCA6IFRoZSBvbGQgcG9zdG1hcCBBQkEgLSBhZnRlciAndGhpcycgd3JpdGUgY29tcGxldGVzLCB0aGlzIHdpbGwgYmUgYQorCSAgZnJlZSBibG9jay4KK25ld19tYXAgOiBUaGUgbmV3IHBvc3RtYXAgQUJBLiBUaGUgbWFwIHdpbGwgdXAgdXBkYXRlZCB0byByZWZsZWN0IHRoaXMKKwkgIGxiYS0+cG9zdG1hcF9hYmEgbWFwcGluZywgYnV0IHdlIGxvZyBpdCBoZXJlIGluIGNhc2Ugd2UgaGF2ZSB0bworCSAgcmVjb3Zlci4KK3NlcQk6IFNlcXVlbmNlIG51bWJlciB0byBtYXJrIHdoaWNoIG9mIHRoZSAyIHNlY3Rpb25zIG9mIHRoaXMgZmxvZyBlbnRyeSBpcworCSAgdmFsaWQvbmV3ZXN0LiBJdCBjeWNsZXMgYmV0d2VlbiAwMS0+MTAtPjExLT4wMSAoYmluYXJ5KSB1bmRlciBub3JtYWwKKwkgIG9wZXJhdGlvbiwgd2l0aCAwMCBpbmRpY2F0aW5nIGFuIHVuaW5pdGlhbGl6ZWQgc3RhdGUuCitsYmEnCTogYWx0ZXJuYXRlIGxiYSBlbnRyeQorb2xkX21hcCc6IGFsdGVybmF0ZSBvbGQgcG9zdG1hcCBlbnRyeQorbmV3X21hcCc6IGFsdGVybmF0ZSBuZXcgcG9zdG1hcCBlbnRyeQorc2VxJwk6IGFsdGVybmF0ZSBzZXF1ZW5jZSBudW1iZXIuCisKK0VhY2ggb2YgdGhlIGFib3ZlIGZpZWxkcyBpcyAzMi1iaXQsIG1ha2luZyBvbmUgZW50cnkgMzIgYnl0ZXMuIEVudHJpZXMgYXJlIGFsc28KK3BhZGRlZCB0byA2NCBieXRlcyB0byBhdm9pZCBjYWNoZSBsaW5lIHNoYXJpbmcgb3IgYWxpYXNpbmcuIEZsb2cgdXBkYXRlcyBhcmUKK2RvbmUgc3VjaCB0aGF0IGZvciBhbnkgZW50cnkgYmVpbmcgd3JpdHRlbiwgaXQ6CithLiBvdmVyd3JpdGVzIHRoZSAnb2xkJyBzZWN0aW9uIGluIHRoZSBlbnRyeSBiYXNlZCBvbiBzZXF1ZW5jZSBudW1iZXJzCitiLiB3cml0ZXMgdGhlICduZXcnIHNlY3Rpb24gc3VjaCB0aGF0IHRoZSBzZXF1ZW5jZSBudW1iZXIgaXMgd3JpdHRlbiBsYXN0LgorCisKK2MuIFRoZSBjb25jZXB0IG9mIGxhbmVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaGlsZSAnbmZyZWUnIGRlc2NyaWJlcyB0aGUgbnVtYmVyIG9mIGNvbmN1cnJlbnQgSU9zIGFuIGFyZW5hIGNhbiBwcm9jZXNzCitjb25jdXJyZW50bHksICdubGFuZXMnIGlzIHRoZSBudW1iZXIgb2YgSU9zIHRoZSBCVFQgZGV2aWNlIGFzIGEgd2hvbGUgY2FuCitwcm9jZXNzLgorIG5sYW5lcyA9IG1pbihuZnJlZSwgbnVtX2NwdXMpCitBIGxhbmUgbnVtYmVyIGlzIG9idGFpbmVkIGF0IHRoZSBzdGFydCBvZiBhbnkgSU8sIGFuZCBpcyB1c2VkIGZvciBpbmRleGluZyBpbnRvCithbGwgdGhlIG9uLWRpc2sgYW5kIGluLW1lbW9yeSBkYXRhIHN0cnVjdHVyZXMgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgSU8uIElmCit0aGVyZSBhcmUgbW9yZSBDUFVzIHRoYW4gdGhlIG1heCBudW1iZXIgb2YgYXZhaWxhYmxlIGxhbmVzLCB0aGFuIGxhbmVzIGFyZQorcHJvdGVjdGVkIGJ5IHNwaW5sb2Nrcy4KKworCitkLiBJbi1tZW1vcnkgZGF0YSBzdHJ1Y3R1cmU6IFJlYWQgVHJhY2tpbmcgVGFibGUgKFJUVCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb25zaWRlciBhIGNhc2Ugd2hlcmUgd2UgaGF2ZSB0d28gdGhyZWFkcywgb25lIGRvaW5nIHJlYWRzIGFuZCB0aGUgb3RoZXIsCit3cml0ZXMuIFdlIGNhbiBoaXQgYSBjb25kaXRpb24gd2hlcmUgdGhlIHdyaXRlciB0aHJlYWQgZ3JhYnMgYSBmcmVlIGJsb2NrIHRvIGRvCithIG5ldyBJTywgYnV0IHRoZSAoc2xvdykgcmVhZGVyIHRocmVhZCBpcyBzdGlsbCByZWFkaW5nIGZyb20gaXQuIEluIG90aGVyIHdvcmRzLAordGhlIHJlYWRlciBjb25zdWx0ZWQgYSBtYXAgZW50cnksIGFuZCBzdGFydGVkIHJlYWRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgYmxvY2suIEEKK3dyaXRlciBzdGFydGVkIHdyaXRpbmcgdG8gdGhlIHNhbWUgZXh0ZXJuYWwgTEJBLCBhbmQgZmluaXNoZWQgdGhlIHdyaXRlIHVwZGF0aW5nCit0aGUgbWFwIGZvciB0aGF0IGV4dGVybmFsIExCQSB0byBwb2ludCB0byBpdHMgbmV3IHBvc3RtYXAgQUJBLiBBdCB0aGlzIHBvaW50IHRoZQoraW50ZXJuYWwsIHBvc3RtYXAgYmxvY2sgdGhhdCB0aGUgcmVhZGVyIGlzIChzdGlsbCkgcmVhZGluZyBoYXMgYmVlbiBpbnNlcnRlZAoraW50byB0aGUgbGlzdCBvZiBmcmVlIGJsb2Nrcy4gSWYgYW5vdGhlciB3cml0ZSBjb21lcyBpbiBmb3IgdGhlIHNhbWUgTEJBLCBpdCBjYW4KK2dyYWIgdGhpcyBmcmVlIGJsb2NrLCBhbmQgc3RhcnQgd3JpdGluZyB0byBpdCwgY2F1c2luZyB0aGUgcmVhZGVyIHRvIHJlYWQKK2luY29ycmVjdCBkYXRhLiBUbyBwcmV2ZW50IHRoaXMsIHdlIGludHJvZHVjZSB0aGUgUlRULgorCitUaGUgUlRUIGlzIGEgc2ltcGxlLCBwZXIgYXJlbmEgdGFibGUgd2l0aCAnbmZyZWUnIGVudHJpZXMuIEV2ZXJ5IHJlYWRlciBpbnNlcnRzCitpbnRvIHJ0dFtsYW5lX251bWJlcl0sIHRoZSBwb3N0bWFwIEFCQSBpdCBpcyByZWFkaW5nLCBhbmQgY2xlYXJzIGl0IGFmdGVyIHRoZQorcmVhZCBpcyBjb21wbGV0ZS4gRXZlcnkgd3JpdGVyIHRocmVhZCwgYWZ0ZXIgZ3JhYmJpbmcgYSBmcmVlIGJsb2NrLCBjaGVja3MgdGhlCitSVFQgZm9yIGl0cyBwcmVzZW5jZS4gSWYgdGhlIHBvc3RtYXAgZnJlZSBibG9jayBpcyBpbiB0aGUgUlRULCBpdCB3YWl0cyB0aWxsIHRoZQorcmVhZGVyIGNsZWFycyB0aGUgUlRUIGVudHJ5LCBhbmQgb25seSB0aGVuIHN0YXJ0cyB3cml0aW5nIHRvIGl0LgorCisKK2UuIEluLW1lbW9yeSBkYXRhIHN0cnVjdHVyZTogbWFwIGxvY2tzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb25zaWRlciBhIGNhc2Ugd2hlcmUgdHdvIHdyaXRlciB0aHJlYWRzIGFyZSB3cml0aW5nIHRvIHRoZSBzYW1lIExCQS4gVGhlcmUgY2FuCitiZSBhIHJhY2UgaW4gdGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBvZiBzdGVwczoKKworZnJlZVtsYW5lXSA9IG1hcFtwcmVtYXBfYWJhXQorbWFwW3ByZW1hcF9hYmFdID0gcG9zdG1hcF9hYmEKKworQm90aCB0aHJlYWRzIGNhbiB1cGRhdGUgdGhlaXIgcmVzcGVjdGl2ZSBmcmVlW2xhbmVdIHdpdGggdGhlIHNhbWUgb2xkLCBmcmVlZAorcG9zdG1hcF9hYmEuIFRoaXMgaGFzIG1hZGUgdGhlIGxheW91dCBpbmNvbnNpc3RlbnQgYnkgbG9zaW5nIGEgZnJlZSBlbnRyeSwgYW5kCithdCB0aGUgc2FtZSB0aW1lLCBkdXBsaWNhdGluZyBhbm90aGVyIGZyZWUgZW50cnkgZm9yIHR3byBsYW5lcy4KKworVG8gc29sdmUgdGhpcywgd2UgY291bGQgaGF2ZSBhIHNpbmdsZSBtYXAgbG9jayAocGVyIGFyZW5hKSB0aGF0IGhhcyB0byBiZSB0YWtlbgorYmVmb3JlIHBlcmZvcm1pbmcgdGhlIGFib3ZlIHNlcXVlbmNlLCBidXQgd2UgZmVlbCB0aGF0IGNvdWxkIGJlIHRvbyBjb250ZW50aW91cy4KK0luc3RlYWQgd2UgdXNlIGFuIGFycmF5IG9mIChuZnJlZSkgbWFwX2xvY2tzIHRoYXQgaXMgaW5kZXhlZCBieQorKHByZW1hcF9hYmEgbW9kdWxvIG5mcmVlKS4KKworCitmLiBSZWNvbnN0cnVjdGlvbiBmcm9tIHRoZSBGbG9nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK09uIHN0YXJ0dXAsIHdlIGFuYWx5emUgdGhlIEJUVCBmbG9nIHRvIGNyZWF0ZSBvdXIgbGlzdCBvZiBmcmVlIGJsb2Nrcy4gV2Ugd2FsawordGhyb3VnaCBhbGwgdGhlIGVudHJpZXMsIGFuZCBmb3IgZWFjaCBsYW5lLCBvZiB0aGUgc2V0IG9mIHR3byBwb3NzaWJsZQorJ3NlY3Rpb25zJywgd2UgYWx3YXlzIGxvb2sgYXQgdGhlIG1vc3QgcmVjZW50IG9uZSBvbmx5IChiYXNlZCBvbiB0aGUgc2VxdWVuY2UKK251bWJlcikuIFRoZSByZWNvbnN0cnVjdGlvbiBydWxlcy9zdGVwcyBhcmUgc2ltcGxlOgorLSBSZWFkIG1hcFtsb2dfZW50cnkubGJhXS4KKy0gSWYgbG9nX2VudHJ5Lm5ldyBtYXRjaGVzIHRoZSBtYXAgZW50cnksIHRoZW4gbG9nX2VudHJ5Lm9sZCBpcyBmcmVlLgorLSBJZiBsb2dfZW50cnkubmV3IGRvZXMgbm90IG1hdGNoIHRoZSBtYXAgZW50cnksIHRoZW4gbG9nX2VudHJ5Lm5ldyBpcyBmcmVlLgorICAoVGhpcyBjYXNlIGNhbiBvbmx5IGJlIGNhdXNlZCBieSBwb3dlci1mYWlscy91bnNhZmUgc2h1dGRvd25zKQorCisKK2cuIFN1bW1hcml6aW5nIC0gUmVhZCBhbmQgV3JpdGUgZmxvd3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVhZDoKKworMS4gIENvbnZlcnQgZXh0ZXJuYWwgTEJBIHRvIGFyZW5hIG51bWJlciArIHByZS1tYXAgQUJBCisyLiAgR2V0IGEgbGFuZSAoYW5kIHRha2UgbGFuZV9sb2NrKQorMy4gIFJlYWQgbWFwIHRvIGdldCB0aGUgZW50cnkgZm9yIHRoaXMgcHJlLW1hcCBBQkEKKzQuICBFbnRlciBwb3N0LW1hcCBBQkEgaW50byBSVFRbbGFuZV0KKzUuICBJZiBUUklNIGZsYWcgc2V0IGluIG1hcCwgcmV0dXJuIHplcm9lcywgYW5kIGVuZCBJTyAoZ28gdG8gc3RlcCA4KQorNi4gIElmIEVSUk9SIGZsYWcgc2V0IGluIG1hcCwgZW5kIElPIHdpdGggRUlPIChnbyB0byBzdGVwIDgpCis3LiAgUmVhZCBkYXRhIGZyb20gdGhpcyBibG9jaworOC4gIFJlbW92ZSBwb3N0LW1hcCBBQkEgZW50cnkgZnJvbSBSVFRbbGFuZV0KKzkuICBSZWxlYXNlIGxhbmUgKGFuZCBsYW5lX2xvY2spCisKK1dyaXRlOgorCisxLiAgQ29udmVydCBleHRlcm5hbCBMQkEgdG8gQXJlbmEgbnVtYmVyICsgcHJlLW1hcCBBQkEKKzIuICBHZXQgYSBsYW5lIChhbmQgdGFrZSBsYW5lX2xvY2spCiszLiAgVXNlIGxhbmUgdG8gaW5kZXggaW50byBpbi1tZW1vcnkgZnJlZSBsaXN0IGFuZCBvYnRhaW4gYSBuZXcgYmxvY2ssIG5leHQgZmxvZworICAgICAgICBpbmRleCwgbmV4dCBzZXF1ZW5jZSBudW1iZXIKKzQuICBTY2FuIHRoZSBSVFQgdG8gY2hlY2sgaWYgZnJlZSBibG9jayBpcyBwcmVzZW50LCBhbmQgc3Bpbi93YWl0IGlmIGl0IGlzLgorNS4gIFdyaXRlIGRhdGEgdG8gdGhpcyBmcmVlIGJsb2NrCis2LiAgUmVhZCBtYXAgdG8gZ2V0IHRoZSBleGlzdGluZyBwb3N0LW1hcCBBQkEgZW50cnkgZm9yIHRoaXMgcHJlLW1hcCBBQkEKKzcuICBXcml0ZSBmbG9nIGVudHJ5OiBbcHJlbWFwX2FiYSAvIG9sZCBwb3N0bWFwX2FiYSAvIG5ldyBwb3N0bWFwX2FiYSAvIHNlcV9udW1dCis4LiAgV3JpdGUgbmV3IHBvc3QtbWFwIEFCQSBpbnRvIG1hcC4KKzkuICBXcml0ZSBvbGQgcG9zdC1tYXAgZW50cnkgaW50byB0aGUgZnJlZSBsaXN0CisxMC4gQ2FsY3VsYXRlIG5leHQgc2VxdWVuY2UgbnVtYmVyIGFuZCB3cml0ZSBpbnRvIHRoZSBmcmVlIGxpc3QgZW50cnkKKzExLiBSZWxlYXNlIGxhbmUgKGFuZCBsYW5lX2xvY2spCisKKworNC4gRXJyb3IgSGFuZGxpbmcKKz09PT09PT09PT09PT09PT09CisKK0FuIGFyZW5hIHdvdWxkIGJlIGluIGFuIGVycm9yIHN0YXRlIGlmIGFueSBvZiB0aGUgbWV0YWRhdGEgaXMgY29ycnVwdGVkCitpcnJlY292ZXJhYmx5LCBlaXRoZXIgZHVlIHRvIGEgYnVnIG9yIGEgbWVkaWEgZXJyb3IuIFRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworaW5kaWNhdGUgYW4gZXJyb3I6CistIEluZm8gYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggKGFuZCByZWNvdmVyaW5nIGZyb20gdGhlIGNvcHkgYWxzbyBmYWlscykKKy0gQWxsIGludGVybmFsIGF2YWlsYWJsZSBibG9ja3MgYXJlIG5vdCB1bmlxdWVseSBhbmQgZW50aXJlbHkgYWRkcmVzc2VkIGJ5IHRoZQorICBzdW0gb2YgbWFwcGVkIGJsb2NrcyBhbmQgZnJlZSBibG9ja3MgKGZyb20gdGhlIEJUVCBmbG9nKS4KKy0gUmVidWlsZGluZyBmcmVlIGxpc3QgZnJvbSB0aGUgZmxvZyByZXZlYWxzIG1pc3NpbmcvZHVwbGljYXRlL2ltcG9zc2libGUKKyAgZW50cmllcworLSBBIG1hcCBlbnRyeSBpcyBvdXQgb2YgYm91bmRzCisKK0lmIGFueSBvZiB0aGVzZSBlcnJvciBjb25kaXRpb25zIGFyZSBlbmNvdW50ZXJlZCwgdGhlIGFyZW5hIGlzIHB1dCBpbnRvIGEgcmVhZAorb25seSBzdGF0ZSB1c2luZyBhIGZsYWcgaW4gdGhlIGluZm8gYmxvY2suCisKKworNS4gSW4ta2VybmVsIHVzYWdlCis9PT09PT09PT09PT09PT09PT0KKworQW55IGJsb2NrIGRyaXZlciB0aGF0IHN1cHBvcnRzIGJ5dGUgZ3JhbnVsYXJpdHkgSU8gdG8gdGhlIHN0b3JhZ2UgbWF5IHJlZ2lzdGVyCit3aXRoIHRoZSBCVFQuIEl0IHdpbGwgaGF2ZSB0byBwcm92aWRlIHRoZSByd19ieXRlcyBpbnRlcmZhY2UgaW4gaXRzCitibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyBzdHJ1Y3Q6CisKKwlpbnQgKCpyd19ieXRlcykoc3RydWN0IGdlbmRpc2sgKiwgdm9pZCAqLCBzaXplX3QsIG9mZl90LCBpbnQgcncpOworCitJdCBtYXkgcmVnaXN0ZXIgd2l0aCB0aGUgQlRUIGFmdGVyIGl0IGFkZHMgaXRzIG93biBnZW5kaXNrLCB1c2luZyBidHRfaW5pdDoKKworCXN0cnVjdCBidHQgKmJ0dF9pbml0KHN0cnVjdCBnZW5kaXNrICpkaXNrLCB1bnNpZ25lZCBsb25nIGxvbmcgcmF3c2l6ZSwKKwkJCXUzMiBsYmFzaXplLCB1OCB1dWlkW10sIGludCBtYXhsYW5lKTsKKworbm90ZSB0aGF0IG1heGxhbmUgaXMgdGhlIG1heGltdW0gYW1vdW50IG9mIGNvbmN1cnJlbmN5IHRoZSBkcml2ZXIgd2lzaGVzIHRvCithbGxvdyB0aGUgQlRUIHRvIHVzZS4KKworVGhlIEJUVCAnZGlzaycgYXBwZWFycyBhcyBhIHN0YWNrZWQgYmxvY2sgZGV2aWNlIHRoYXQgZ3JhYnMgdGhlIHVuZGVybHlpbmcgYmxvY2sKK2RldmljZSBpbiB0aGUgT19FWENMIG1vZGUuCisKK1doZW4gdGhlIGRyaXZlciB3aXNoZXMgdG8gcmVtb3ZlIHRoZSBiYWNraW5nIGRpc2ssIGl0IHNob3VsZCBzaW1pbGFybHkgY2FsbAorYnR0X2ZpbmkgdXNpbmcgdGhlIHNhbWUgc3RydWN0IGJ0dCogaGFuZGxlIHRoYXQgd2FzIHByb3ZpZGVkIHRvIGl0IGJ5IGJ0dF9pbml0LgorCisJdm9pZCBidHRfZmluaShzdHJ1Y3QgYnR0ICpidHQpOworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL252ZGltbS9udmRpbW0udHh0IGIvRG9jdW1lbnRhdGlvbi9udmRpbW0vbnZkaW1tLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODk0ZGU2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9udmRpbW0vbnZkaW1tLnR4dApAQCAtMCwwICsxLDgxNSBAQAorCQkJICBMSUJOVkRJTU06IE5vbi1Wb2xhdGlsZSBEZXZpY2VzCisJICAgICAgbGlibnZkaW1tIC0ga2VybmVsIC8gbGlibmRjdGwgLSB1c2Vyc3BhY2UgaGVscGVyIGxpYnJhcnkKKwkJCSAgIGxpbnV4LW52ZGltbUBsaXN0cy4wMS5vcmcKKwkJCQkgICAgICB2MTMKKworCisJR2xvc3NhcnkKKwlPdmVydmlldworCSAgICBTdXBwb3J0aW5nIERvY3VtZW50cworCSAgICBHaXQgVHJlZXMKKwlMSUJOVkRJTU0gUE1FTSBhbmQgQkxLCisJV2h5IEJMSz8KKwkgICAgUE1FTSB2cyBCTEsKKwkgICAgICAgIEJMSy1SRUdJT05zLCBQTUVNLVJFR0lPTnMsIEF0b21pYyBTZWN0b3JzLCBhbmQgREFYCisJRXhhbXBsZSBOVkRJTU0gUGxhdGZvcm0KKwlMSUJOVkRJTU0gS2VybmVsIERldmljZSBNb2RlbCBhbmQgTElCTkRDVEwgVXNlcnNwYWNlIEFQSQorCSAgICBMSUJORENUTDogQ29udGV4dAorCSAgICAgICAgbGlibmRjdGw6IGluc3RhbnRpYXRlIGEgbmV3IGxpYnJhcnkgY29udGV4dCBleGFtcGxlCisJICAgIExJQk5WRElNTS9MSUJORENUTDogQnVzCisJICAgICAgICBsaWJudmRpbW06IGNvbnRyb2wgY2xhc3MgZGV2aWNlIGluIC9zeXMvY2xhc3MKKwkgICAgICAgIGxpYm52ZGltbTogYnVzCisJICAgICAgICBsaWJuZGN0bDogYnVzIGVudW1lcmF0aW9uIGV4YW1wbGUKKwkgICAgTElCTlZESU1NL0xJQk5EQ1RMOiBESU1NIChOTUVNKQorCSAgICAgICAgbGlibnZkaW1tOiBESU1NIChOTUVNKQorCSAgICAgICAgbGlibmRjdGw6IERJTU0gZW51bWVyYXRpb24gZXhhbXBsZQorCSAgICBMSUJOVkRJTU0vTElCTkRDVEw6IFJlZ2lvbgorCSAgICAgICAgbGlibnZkaW1tOiByZWdpb24KKwkgICAgICAgIGxpYm5kY3RsOiByZWdpb24gZW51bWVyYXRpb24gZXhhbXBsZQorCSAgICAgICAgV2h5IE5vdCBFbmNvZGUgdGhlIFJlZ2lvbiBUeXBlIGludG8gdGhlIFJlZ2lvbiBOYW1lPworCSAgICAgICAgSG93IERvIEkgRGV0ZXJtaW5lIHRoZSBNYWpvciBUeXBlIG9mIGEgUmVnaW9uPworCSAgICBMSUJOVkRJTU0vTElCTkRDVEw6IE5hbWVzcGFjZQorCSAgICAgICAgbGlibnZkaW1tOiBuYW1lc3BhY2UKKwkgICAgICAgIGxpYm5kY3RsOiBuYW1lc3BhY2UgZW51bWVyYXRpb24gZXhhbXBsZQorCSAgICAgICAgbGlibmRjdGw6IG5hbWVzcGFjZSBjcmVhdGlvbiBleGFtcGxlCisJICAgICAgICBXaHkgdGhlIFRlcm0gIm5hbWVzcGFjZSI/CisJICAgIExJQk5WRElNTS9MSUJORENUTDogQmxvY2sgVHJhbnNsYXRpb24gVGFibGUgImJ0dCIKKwkgICAgICAgIGxpYm52ZGltbTogYnR0IGxheW91dAorCSAgICAgICAgbGlibmRjdGw6IGJ0dCBjcmVhdGlvbiBleGFtcGxlCisJU3VtbWFyeSBMSUJORENUTCBEaWFncmFtCisKKworR2xvc3NhcnkKKy0tLS0tLS0tCisKK1BNRU06IEEgc3lzdGVtLXBoeXNpY2FsLWFkZHJlc3MgcmFuZ2Ugd2hlcmUgd3JpdGVzIGFyZSBwZXJzaXN0ZW50LiAgQQorYmxvY2sgZGV2aWNlIGNvbXBvc2VkIG9mIFBNRU0gaXMgY2FwYWJsZSBvZiBEQVguICBBIFBNRU0gYWRkcmVzcyByYW5nZQorbWF5IHNwYW4gYW4gaW50ZXJsZWF2ZSBvZiBzZXZlcmFsIERJTU1zLgorCitCTEs6IEEgc2V0IG9mIG9uZSBvciBtb3JlIHByb2dyYW1tYWJsZSBtZW1vcnkgbWFwcGVkIGFwZXJ0dXJlcyBwcm92aWRlZAorYnkgYSBESU1NIHRvIGFjY2VzcyBpdHMgbWVkaWEuICBUaGlzIGluZGlyZWN0aW9uIHByZWNsdWRlcyB0aGUKK3BlcmZvcm1hbmNlIGJlbmVmaXQgb2YgaW50ZXJsZWF2aW5nLCBidXQgZW5hYmxlcyBESU1NLWJvdW5kZWQgZmFpbHVyZQorbW9kZXMuCisKK0RQQTogRElNTSBQaHlzaWNhbCBBZGRyZXNzLCBpcyBhIERJTU0tcmVsYXRpdmUgb2Zmc2V0LiAgV2l0aCBvbmUgRElNTSBpbgordGhlIHN5c3RlbSB0aGVyZSB3b3VsZCBiZSBhIDE6MSBzeXN0ZW0tcGh5c2ljYWwtYWRkcmVzczpEUEEgYXNzb2NpYXRpb24uCitPbmNlIG1vcmUgRElNTXMgYXJlIGFkZGVkIGEgbWVtb3J5IGNvbnRyb2xsZXIgaW50ZXJsZWF2ZSBtdXN0IGJlCitkZWNvZGVkIHRvIGRldGVybWluZSB0aGUgRFBBIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuCitzeXN0ZW0tcGh5c2ljYWwtYWRkcmVzcy4gIEJMSyBjYXBhY2l0eSBhbHdheXMgaGFzIGEgMToxIHJlbGF0aW9uc2hpcAord2l0aCBhIHNpbmdsZS1ESU1NJ3MgRFBBIHJhbmdlLgorCitEQVg6IEZpbGUgc3lzdGVtIGV4dGVuc2lvbnMgdG8gYnlwYXNzIHRoZSBwYWdlIGNhY2hlIGFuZCBibG9jayBsYXllciB0bworbW1hcCBwZXJzaXN0ZW50IG1lbW9yeSwgZnJvbSBhIFBNRU0gYmxvY2sgZGV2aWNlLCBkaXJlY3RseSBpbnRvIGEKK3Byb2Nlc3MgYWRkcmVzcyBzcGFjZS4KKworRFNNOiBEZXZpY2UgU3BlY2lmaWMgTWV0aG9kOiBBQ1BJIG1ldGhvZCB0byB0byBjb250cm9sIHNwZWNpZmljCitkZXZpY2UgLSBpbiB0aGlzIGNhc2UgdGhlIGZpcm13YXJlLgorCitEQ1I6IE5WRElNTSBDb250cm9sIFJlZ2lvbiBTdHJ1Y3R1cmUgZGVmaW5lZCBpbiBBQ1BJIDYgU2VjdGlvbiA1LjIuMjUuNS4KK0l0IGRlZmluZXMgYSB2ZW5kb3ItaWQsIGRldmljZS1pZCwgYW5kIGludGVyZmFjZSBmb3JtYXQgZm9yIGEgZ2l2ZW4gRElNTS4KKworQlRUOiBCbG9jayBUcmFuc2xhdGlvbiBUYWJsZTogUGVyc2lzdGVudCBtZW1vcnkgaXMgYnl0ZSBhZGRyZXNzYWJsZS4KK0V4aXN0aW5nIHNvZnR3YXJlIG1heSBoYXZlIGFuIGV4cGVjdGF0aW9uIHRoYXQgdGhlIHBvd2VyLWZhaWwtYXRvbWljaXR5CitvZiB3cml0ZXMgaXMgYXQgbGVhc3Qgb25lIHNlY3RvciwgNTEyIGJ5dGVzLiAgVGhlIEJUVCBpcyBhbiBpbmRpcmVjdGlvbgordGFibGUgd2l0aCBhdG9taWMgdXBkYXRlIHNlbWFudGljcyB0byBmcm9udCBhIFBNRU0vQkxLIGJsb2NrIGRldmljZQorZHJpdmVyIGFuZCBwcmVzZW50IGFyYml0cmFyeSBhdG9taWMgc2VjdG9yIHNpemVzLgorCitMQUJFTDogTWV0YWRhdGEgc3RvcmVkIG9uIGEgRElNTSBkZXZpY2UgdGhhdCBwYXJ0aXRpb25zIGFuZCBpZGVudGlmaWVzCisocGVyc2lzdGVudGx5IG5hbWVzKSBzdG9yYWdlIGJldHdlZW4gUE1FTSBhbmQgQkxLLiAgSXQgYWxzbyBwYXJ0aXRpb25zCitCTEsgc3RvcmFnZSB0byBob3N0IEJUVHMgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVycyBwZXIgQkxLLXBhcnRpdGlvbi4KK05vdGUgdGhhdCB0cmFkaXRpb25hbCBwYXJ0aXRpb24gdGFibGVzLCBHUFQvTUJSLCBhcmUgbGF5ZXJlZCBvbiB0b3Agb2YgYQorQkxLIG9yIFBNRU0gZGV2aWNlLgorCisKK092ZXJ2aWV3CistLS0tLS0tLQorCitUaGUgTElCTlZESU1NIHN1YnN5c3RlbSBwcm92aWRlcyBzdXBwb3J0IGZvciB0aHJlZSB0eXBlcyBvZiBOVkRJTU1zLCBuYW1lbHksCitQTUVNLCBCTEssIGFuZCBOVkRJTU0gZGV2aWNlcyB0aGF0IGNhbiBzaW11bHRhbmVvdXNseSBzdXBwb3J0IGJvdGggUE1FTQorYW5kIEJMSyBtb2RlIGFjY2Vzcy4gIFRoZXNlIHRocmVlIG1vZGVzIG9mIG9wZXJhdGlvbiBhcmUgZGVzY3JpYmVkIGJ5Cit0aGUgIk5WRElNTSBGaXJtd2FyZSBJbnRlcmZhY2UgVGFibGUiIChORklUKSBpbiBBQ1BJIDYuICBXaGlsZSB0aGUgTElCTlZESU1NCitpbXBsZW1lbnRhdGlvbiBpcyBnZW5lcmljIGFuZCBzdXBwb3J0cyBwcmUtTkZJVCBwbGF0Zm9ybXMsIGl0IHdhcyBndWlkZWQKK2J5IHRoZSBzdXBlcnNldCBvZiBjYXBhYmlsaXRpZXMgbmVlZCB0byBzdXBwb3J0IHRoaXMgQUNQSSA2IGRlZmluaXRpb24KK2ZvciBOVkRJTU0gcmVzb3VyY2VzLiAgVGhlIGJ1bGsgb2YgdGhlIGtlcm5lbCBpbXBsZW1lbnRhdGlvbiBpcyBpbiBwbGFjZQordG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIERQQSBhY2Nlc3NpYmxlIHZpYSBQTUVNIGlzIGFsaWFzZWQgd2l0aCBEUEEKK2FjY2Vzc2libGUgdmlhIEJMSy4gIFdoZW4gdGhhdCBvY2N1cnMgYSBMQUJFTCBpcyBuZWVkZWQgdG8gcmVzZXJ2ZSBEUEEKK2ZvciBleGNsdXNpdmUgYWNjZXNzIHZpYSBvbmUgbW9kZSBhIHRpbWUuCisKK1N1cHBvcnRpbmcgRG9jdW1lbnRzCitBQ1BJIDY6IGh0dHA6Ly93d3cudWVmaS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9yZXNvdXJjZXMvQUNQSV82LjAucGRmCitOVkRJTU0gTmFtZXNwYWNlOiBodHRwOi8vcG1lbS5pby9kb2N1bWVudHMvTlZESU1NX05hbWVzcGFjZV9TcGVjLnBkZgorRFNNIEludGVyZmFjZSBFeGFtcGxlOiBodHRwOi8vcG1lbS5pby9kb2N1bWVudHMvTlZESU1NX0RTTV9JbnRlcmZhY2VfRXhhbXBsZS5wZGYKK0RyaXZlciBXcml0ZXIncyBHdWlkZTogaHR0cDovL3BtZW0uaW8vZG9jdW1lbnRzL05WRElNTV9Ecml2ZXJfV3JpdGVyc19HdWlkZS5wZGYKKworR2l0IFRyZWVzCitMSUJOVkRJTU06IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvY2dpdC9saW51eC9rZXJuZWwvZ2l0L2RqYncvbnZkaW1tLmdpdAorTElCTkRDVEw6IGh0dHBzOi8vZ2l0aHViLmNvbS9wbWVtL25kY3RsLmdpdAorUE1FTTogaHR0cHM6Ly9naXRodWIuY29tLzAxb3JnL3ByZAorCisKK0xJQk5WRElNTSBQTUVNIGFuZCBCTEsKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitQcmlvciB0byB0aGUgYXJyaXZhbCBvZiB0aGUgTkZJVCwgbm9uLXZvbGF0aWxlIG1lbW9yeSB3YXMgZGVzY3JpYmVkIHRvIGEKK3N5c3RlbSBpbiB2YXJpb3VzIGFkLWhvYyB3YXlzLiAgVXN1YWxseSBvbmx5IHRoZSBiYXJlIG1pbmltdW0gd2FzCitwcm92aWRlZCwgbmFtZWx5LCBhIHNpbmdsZSBzeXN0ZW0tcGh5c2ljYWwtYWRkcmVzcyByYW5nZSB3aGVyZSB3cml0ZXMKK2FyZSBleHBlY3RlZCB0byBiZSBkdXJhYmxlIGFmdGVyIGEgc3lzdGVtIHBvd2VyIGxvc3MuICBOb3csIHRoZSBORklUCitzcGVjaWZpY2F0aW9uIHN0YW5kYXJkaXplcyBub3Qgb25seSB0aGUgZGVzY3JpcHRpb24gb2YgUE1FTSwgYnV0IGFsc28KK0JMSyBhbmQgcGxhdGZvcm0gbWVzc2FnZS1wYXNzaW5nIGVudHJ5IHBvaW50cyBmb3IgY29udHJvbCBhbmQKK2NvbmZpZ3VyYXRpb24uCisKK0ZvciBlYWNoIE5WRElNTSBhY2Nlc3MgbWV0aG9kIChQTUVNLCBCTEspLCBMSUJOVkRJTU0gcHJvdmlkZXMgYSBibG9jaworZGV2aWNlIGRyaXZlcjoKKworICAgIDEuIFBNRU0gKG5kX3BtZW0ua28pOiBEcml2ZXMgYSBzeXN0ZW0tcGh5c2ljYWwtYWRkcmVzcyByYW5nZS4gIFRoaXMKKyAgICByYW5nZSBpcyBjb250aWd1b3VzIGluIHN5c3RlbSBtZW1vcnkgYW5kIG1heSBiZSBpbnRlcmxlYXZlZCAoaGFyZHdhcmUKKyAgICBtZW1vcnkgY29udHJvbGxlciBzdHJpcGVkKSBhY3Jvc3MgbXVsdGlwbGUgRElNTXMuICBXaGVuIGludGVybGVhdmVkIHRoZQorICAgIHBsYXRmb3JtIG1heSBvcHRpb25hbGx5IHByb3ZpZGUgZGV0YWlscyBvZiB3aGljaCBESU1NcyBhcmUgcGFydGljaXBhdGluZworICAgIGluIHRoZSBpbnRlcmxlYXZlLgorCisgICAgTm90ZSB0aGF0IHdoaWxlIExJQk5WRElNTSBkZXNjcmliZXMgc3lzdGVtLXBoeXNpY2FsLWFkZHJlc3MgcmFuZ2VzIHRoYXQgbWF5CisgICAgYWxpYXMgd2l0aCBCTEsgYWNjZXNzIGFzIE5EX05BTUVTUEFDRV9QTUVNIHJhbmdlcyBhbmQgdGhvc2Ugd2l0aG91dAorICAgIGFsaWFzIGFzIE5EX05BTUVTUEFDRV9JTyByYW5nZXMsIHRvIHRoZSBuZF9wbWVtIGRyaXZlciB0aGVyZSBpcyBubworICAgIGRpc3RpbmN0aW9uLiAgVGhlIGRpZmZlcmVudCBkZXZpY2UtdHlwZXMgYXJlIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbAorICAgIHRoYXQgdXNlcnNwYWNlIGNhbiBleHBsb2l0IHRvIGltcGxlbWVudCBwb2xpY2llcyBsaWtlICJvbmx5IGludGVyZmFjZQorICAgIHdpdGggYWRkcmVzcyByYW5nZXMgZnJvbSBjZXJ0YWluIERJTU1zIi4gIEl0IGlzIHdvcnRoIG5vdGluZyB0aGF0IHdoZW4KKyAgICBhbGlhc2luZyBpcyBwcmVzZW50IGFuZCBhIERJTU0gbGFja3MgYSBsYWJlbCwgdGhlbiBubyBibG9jayBkZXZpY2UgY2FuCisgICAgYmUgY3JlYXRlZCBieSBkZWZhdWx0IGFzIHVzZXJzcGFjZSBuZWVkcyB0byBkbyBhdCBsZWFzdCBvbmUgYWxsb2NhdGlvbgorICAgIG9mIERQQSB0byB0aGUgUE1FTSByYW5nZS4gIEluIGNvbnRyYXN0IE5EX05BTUVTUEFDRV9JTyByYW5nZXMsIG9uY2UKKyAgICByZWdpc3RlcmVkLCBjYW4gYmUgaW1tZWRpYXRlbHkgYXR0YWNoZWQgdG8gbmRfcG1lbS4KKworICAgIDIuIEJMSyAobmRfYmxrLmtvKTogVGhpcyBkcml2ZXIgcGVyZm9ybXMgSS9PIHVzaW5nIGEgc2V0IG9mIHBsYXRmb3JtCisgICAgZGVmaW5lZCBhcGVydHVyZXMuICBBIHNldCBvZiBhcGVydHVyZXMgd2lsbCBhY2Nlc3MganVzdCBvbmUgRElNTS4KKyAgICBNdWx0aXBsZSB3aW5kb3dzIChhcGVydHVyZXMpIGFsbG93IG11bHRpcGxlIGNvbmN1cnJlbnQgYWNjZXNzZXMsIG11Y2ggbGlrZQorICAgIHRhZ2dlZC1jb21tYW5kLXF1ZXVpbmcsIGFuZCB3b3VsZCBsaWtlbHkgYmUgdXNlZCBieSBkaWZmZXJlbnQgdGhyZWFkcyBvcgorICAgIGRpZmZlcmVudCBDUFVzLgorCisgICAgVGhlIE5GSVQgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIGEgc3RhbmRhcmQgZm9ybWF0IGZvciBhIEJMSy1hcGVydHVyZSwgYnV0CisgICAgdGhlIHNwZWMgYWxzbyBhbGxvd3MgZm9yIHZlbmRvciBzcGVjaWZpYyBsYXlvdXRzLCBhbmQgbm9uLU5GSVQgQkxLCisgICAgaW1wbGVtZW50YXRpb25zIG1heSBoYXZlIG90aGVyIGRlc2lnbnMgZm9yIEJMSyBJL08uICBGb3IgdGhpcyByZWFzb24KKyAgICAibmRfYmxrIiBjYWxscyBiYWNrIGludG8gcGxhdGZvcm0tc3BlY2lmaWMgY29kZSB0byBwZXJmb3JtIHRoZSBJL08uCisgICAgT25lIHN1Y2ggaW1wbGVtZW50YXRpb24gaXMgZGVmaW5lZCBpbiB0aGUgIkRyaXZlciBXcml0ZXIncyBHdWlkZSIgYW5kICJEU00KKyAgICBJbnRlcmZhY2UgRXhhbXBsZSIuCisKKworV2h5IEJMSz8KKy0tLS0tLS0tCisKK1doaWxlIFBNRU0gcHJvdmlkZXMgZGlyZWN0IGJ5dGUtYWRkcmVzc2FibGUgQ1BVLWxvYWQvc3RvcmUgYWNjZXNzIHRvCitOVkRJTU0gc3RvcmFnZSwgaXQgZG9lcyBub3QgcHJvdmlkZSB0aGUgYmVzdCBzeXN0ZW0gUkFTIChyZWNvdmVyeSwKK2F2YWlsYWJpbGl0eSwgYW5kIHNlcnZpY2VhYmlsaXR5KSBtb2RlbC4gIEFuIGFjY2VzcyB0byBhIGNvcnJ1cHRlZAorc3lzdGVtLXBoeXNpY2FsLWFkZHJlc3MgYWRkcmVzcyBjYXVzZXMgYSBDUFUgZXhjZXB0aW9uIHdoaWxlIGFuIGFjY2VzcwordG8gYSBjb3JydXB0ZWQgYWRkcmVzcyB0aHJvdWdoIGFuIEJMSy1hcGVydHVyZSBjYXVzZXMgdGhhdCBibG9jayB3aW5kb3cKK3RvIHJhaXNlIGFuIGVycm9yIHN0YXR1cyBpbiBhIHJlZ2lzdGVyLiAgVGhlIGxhdHRlciBpcyBtb3JlIGFsaWduZWQgd2l0aAordGhlIHN0YW5kYXJkIGVycm9yIG1vZGVsIHRoYXQgaG9zdC1idXMtYWRhcHRlciBhdHRhY2hlZCBkaXNrcyBwcmVzZW50LgorQWxzbywgaWYgYW4gYWRtaW5pc3RyYXRvciBldmVyIHdhbnRzIHRvIHJlcGxhY2UgYSBtZW1vcnkgaXQgaXMgZWFzaWVyIHRvCitzZXJ2aWNlIGEgc3lzdGVtIGF0IERJTU0gbW9kdWxlIGJvdW5kYXJpZXMuICBDb21wYXJlIHRoaXMgdG8gUE1FTSB3aGVyZQorZGF0YSBjb3VsZCBiZSBpbnRlcmxlYXZlZCBpbiBhbiBvcGFxdWUgaGFyZHdhcmUgc3BlY2lmaWMgbWFubmVyIGFjcm9zcworc2V2ZXJhbCBESU1Ncy4KKworUE1FTSB2cyBCTEsKK0JMSy1hcGVydHVyZXMgc29sdmUgdGhlc2UgUkFTIHByb2JsZW1zLCBidXQgdGhlaXIgcHJlc2VuY2UgaXMgYWxzbyB0aGUKK21ham9yIGNvbnRyaWJ1dGluZyBmYWN0b3IgdG8gdGhlIGNvbXBsZXhpdHkgb2YgdGhlIE5EIHN1YnN5c3RlbS4gIFRoZXkKK2NvbXBsaWNhdGUgdGhlIGltcGxlbWVudGF0aW9uIGJlY2F1c2UgUE1FTSBhbmQgQkxLIGFsaWFzIGluIERQQSBzcGFjZS4KK0FueSBnaXZlbiBESU1NJ3MgRFBBLXJhbmdlIG1heSBjb250cmlidXRlIHRvIG9uZSBvciBtb3JlCitzeXN0ZW0tcGh5c2ljYWwtYWRkcmVzcyBzZXRzIG9mIGludGVybGVhdmVkIERJTU1zLCAqYW5kKiBtYXkgYWxzbyBiZQorYWNjZXNzZWQgaW4gaXRzIGVudGlyZXR5IHRocm91Z2ggaXRzIEJMSy1hcGVydHVyZS4gIEFjY2Vzc2luZyBhIERQQQordGhyb3VnaCBhIHN5c3RlbS1waHlzaWNhbC1hZGRyZXNzIHdoaWxlIHNpbXVsdGFuZW91c2x5IGFjY2Vzc2luZyB0aGUKK3NhbWUgRFBBIHRocm91Z2ggYSBCTEstYXBlcnR1cmUgaGFzIHVuZGVmaW5lZCByZXN1bHRzLiAgRm9yIHRoaXMgcmVhc29uLAorRElNTXMgd2l0aCB0aGlzIGR1YWwgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gaW5jbHVkZSBhIERTTSBmdW5jdGlvbiB0bworc3RvcmUvcmV0cmlldmUgYSBMQUJFTC4gIFRoZSBMQUJFTCBlZmZlY3RpdmVseSBwYXJ0aXRpb25zIHRoZSBEUEEtc3BhY2UKK2ludG8gZXhjbHVzaXZlIHN5c3RlbS1waHlzaWNhbC1hZGRyZXNzIGFuZCBCTEstYXBlcnR1cmUgYWNjZXNzaWJsZQorcmVnaW9ucy4gIEZvciBzaW1wbGljaXR5IGEgRElNTSBpcyBhbGxvd2VkIGEgUE1FTSAicmVnaW9uIiBwZXIgZWFjaAoraW50ZXJsZWF2ZSBzZXQgaW4gd2hpY2ggaXQgaXMgYSBtZW1iZXIuICBUaGUgcmVtYWluaW5nIERQQSBzcGFjZSBjYW4gYmUKK2NhcnZlZCBpbnRvIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgQkxLIGRldmljZXMgd2l0aCBkaXNjb250aWd1b3VzCitleHRlbnRzLgorCitCTEstUkVHSU9OcywgUE1FTS1SRUdJT05zLCBBdG9taWMgU2VjdG9ycywgYW5kIERBWAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT25lIG9mIHRoZSBmZXcKK3JlYXNvbnMgdG8gYWxsb3cgbXVsdGlwbGUgQkxLIG5hbWVzcGFjZXMgcGVyIFJFR0lPTiBpcyBzbyB0aGF0IGVhY2gKK0JMSy1uYW1lc3BhY2UgY2FuIGJlIGNvbmZpZ3VyZWQgd2l0aCBhIEJUVCB3aXRoIHVuaXF1ZSBhdG9taWMgc2VjdG9yCitzaXplcy4gIFdoaWxlIGEgUE1FTSBkZXZpY2UgY2FuIGhvc3QgYSBCVFQgdGhlIExBQkVMIHNwZWNpZmljYXRpb24gZG9lcworbm90IHByb3ZpZGUgZm9yIGEgc2VjdG9yIHNpemUgdG8gYmUgc3BlY2lmaWVkIGZvciBhIFBNRU0gbmFtZXNwYWNlLgorVGhpcyBpcyBkdWUgdG8gdGhlIGV4cGVjdGF0aW9uIHRoYXQgdGhlIHByaW1hcnkgdXNhZ2UgbW9kZWwgZm9yIFBNRU0gaXMKK3ZpYSBEQVgsIGFuZCB0aGUgQlRUIGlzIGluY29tcGF0aWJsZSB3aXRoIERBWC4gIEhvd2V2ZXIsIGZvciB0aGUgY2FzZXMKK3doZXJlIGFuIGFwcGxpY2F0aW9uIG9yIGZpbGVzeXN0ZW0gc3RpbGwgbmVlZHMgYXRvbWljIHNlY3RvciB1cGRhdGUKK2d1YXJhbnRlZXMgaXQgY2FuIHJlZ2lzdGVyIGEgQlRUIG9uIGEgUE1FTSBkZXZpY2Ugb3IgcGFydGl0aW9uLiAgU2VlCitMSUJOVkRJTU0vTkRDVEw6IEJsb2NrIFRyYW5zbGF0aW9uIFRhYmxlICJidHQiCisKKworRXhhbXBsZSBOVkRJTU0gUGxhdGZvcm0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZvciB0aGUgcmVtYWluZGVyIG9mIHRoaXMgZG9jdW1lbnQgdGhlIGZvbGxvd2luZyBkaWFncmFtIHdpbGwgYmUKK3JlZmVyZW5jZWQgZm9yIGFueSBleGFtcGxlIHN5c2ZzIGxheW91dHMuCisKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSkgICAgICAgICAgICAgICAoYikgICAgICAgICAgIERJTU0gICBCTEstUkVHSU9OCisgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rCisrLS0tLS0tKyAgfCAgICAgICBwbTAuMCAgICAgICB8IGJsazIuMCB8IHBtMS4wICB8IGJsazIuMSB8ICAgIDAgICAgICByZWdpb24yCit8IGltYzAgKy0tKy0gLSAtIHJlZ2lvbjAtIC0gLSArLS0tLS0tLS0rICAgICAgICArLS0tLS0tLS0rCisrLS0rLS0tKyAgfCAgICAgICBwbTAuMCAgICAgICB8IGJsazMuMCB8IHBtMS4wICB8IGJsazMuMSB8ICAgIDEgICAgICByZWdpb24zCisgICB8ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS12ICAgICAgICB2LS0tLS0tLS0rCisrLS0rLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8Cit8IGNwdTAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpb24xCisrLS0rLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1eICAgICAgICBeLS0tLS0tLS0rCisrLS0rLS0tKyAgfCAgICAgICAgICAgYmxrNC4wICAgICAgICAgICB8IHBtMS4wICB8IGJsazQuMCB8ICAgIDIgICAgICByZWdpb240Cit8IGltYzEgKy0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18ICAgICAgICArLS0tLS0tLS0rCisrLS0tLS0tKyAgfCAgICAgICAgICAgYmxrNS4wICAgICAgICAgICB8IHBtMS4wICB8IGJsazUuMCB8ICAgIDMgICAgICByZWdpb241CisgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rCisKK0luIHRoaXMgcGxhdGZvcm0gd2UgaGF2ZSBmb3VyIERJTU1zIGFuZCB0d28gbWVtb3J5IGNvbnRyb2xsZXJzIGluIG9uZQorc29ja2V0LiAgRWFjaCB1bmlxdWUgaW50ZXJmYWNlIChCTEsgb3IgUE1FTSkgdG8gRFBBIHNwYWNlIGlzIGlkZW50aWZpZWQKK2J5IGEgcmVnaW9uIGRldmljZSB3aXRoIGEgZHluYW1pY2FsbHkgYXNzaWduZWQgaWQgKFJFR0lPTjAgLSBSRUdJT041KS4KKworICAgIDEuIFRoZSBmaXJzdCBwb3J0aW9uIG9mIERJTU0wIGFuZCBESU1NMSBhcmUgaW50ZXJsZWF2ZWQgYXMgUkVHSU9OMC4gQQorICAgIHNpbmdsZSBQTUVNIG5hbWVzcGFjZSBpcyBjcmVhdGVkIGluIHRoZSBSRUdJT04wLVNQQS1yYW5nZSB0aGF0IHNwYW5zIG1vc3QKKyAgICBvZiBESU1NMCBhbmQgRElNTTEgd2l0aCBhIHVzZXItc3BlY2lmaWVkIG5hbWUgb2YgInBtMC4wIi4gU29tZSBvZiB0aGF0CisgICAgaW50ZXJsZWF2ZWQgc3lzdGVtLXBoeXNpY2FsLWFkZHJlc3MgcmFuZ2UgaXMgcmVjbGFpbWVkIGFzIEJMSy1hcGVydHVyZQorICAgIGFjY2Vzc2VkIHNwYWNlIHN0YXJ0aW5nIGF0IERQQS1vZmZzZXQgKGEpIGludG8gZWFjaCBESU1NLiAgSW4gdGhhdAorICAgIHJlY2xhaW1lZCBzcGFjZSB3ZSBjcmVhdGUgdHdvIEJMSy1hcGVydHVyZSAibmFtZXNwYWNlcyIgZnJvbSBSRUdJT04yIGFuZAorICAgIFJFR0lPTjMgd2hlcmUgImJsazIuMCIgYW5kICJibGszLjAiIGFyZSBqdXN0IGh1bWFuIHJlYWRhYmxlIG5hbWVzIHRoYXQKKyAgICBjb3VsZCBiZSBzZXQgdG8gYW55IHVzZXItZGVzaXJlZCBuYW1lIGluIHRoZSBMQUJFTC4KKworICAgIDIuIEluIHRoZSBsYXN0IHBvcnRpb24gb2YgRElNTTAgYW5kIERJTU0xIHdlIGhhdmUgYW4gaW50ZXJsZWF2ZWQKKyAgICBzeXN0ZW0tcGh5c2ljYWwtYWRkcmVzcyByYW5nZSwgUkVHSU9OMSwgdGhhdCBzcGFucyB0aG9zZSB0d28gRElNTXMgYXMKKyAgICB3ZWxsIGFzIERJTU0yIGFuZCBESU1NMy4gIFNvbWUgb2YgUkVHSU9OMSBpcyBhbGxvY2F0ZWQgdG8gYSBQTUVNIG5hbWVzcGFjZQorICAgIG5hbWVkICJwbTEuMCIsIHRoZSByZXN0IGlzIHJlY2xhaW1lZCBpbiA0IEJMSy1hcGVydHVyZSBuYW1lc3BhY2VzIChmb3IKKyAgICBlYWNoIERJTU0gaW4gdGhlIGludGVybGVhdmUgc2V0KSwgImJsazIuMSIsICJibGszLjEiLCAiYmxrNC4wIiwgYW5kCisgICAgImJsazUuMCIuCisKKyAgICAzLiBUaGUgcG9ydGlvbiBvZiBESU1NMiBhbmQgRElNTTMgdGhhdCBkbyBub3QgcGFydGljaXBhdGUgaW4gdGhlIFJFR0lPTjEKKyAgICBpbnRlcmxlYXZlZCBzeXN0ZW0tcGh5c2ljYWwtYWRkcmVzcyByYW5nZSAoaS5lLiB0aGUgRFBBIGFkZHJlc3MgcGFzdAorICAgIG9mZnNldCAoYikgYXJlIGFsc28gaW5jbHVkZWQgaW4gdGhlICJibGs0LjAiIGFuZCAiYmxrNS4wIiBuYW1lc3BhY2VzLgorICAgIE5vdGUsIHRoYXQgdGhpcyBleGFtcGxlIHNob3dzIHRoYXQgQkxLLWFwZXJ0dXJlIG5hbWVzcGFjZXMgZG9uJ3QgbmVlZCB0bworICAgIGJlIGNvbnRpZ3VvdXMgaW4gRFBBLXNwYWNlLgorCisgICAgVGhpcyBidXMgaXMgcHJvdmlkZWQgYnkgdGhlIGtlcm5lbCB1bmRlciB0aGUgZGV2aWNlCisgICAgL3N5cy9kZXZpY2VzL3BsYXRmb3JtL25maXRfdGVzdC4wIHdoZW4gQ09ORklHX05GSVRfVEVTVCBpcyBlbmFibGVkIGFuZAorICAgIHRoZSBuZml0X3Rlc3Qua28gbW9kdWxlIGlzIGxvYWRlZC4gIFRoaXMgbm90IG9ubHkgdGVzdCBMSUJOVkRJTU0gYnV0IHRoZQorICAgIGFjcGlfbmZpdC5rbyBkcml2ZXIgYXMgd2VsbC4KKworCitMSUJOVkRJTU0gS2VybmVsIERldmljZSBNb2RlbCBhbmQgTElCTkRDVEwgVXNlcnNwYWNlIEFQSQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaGF0IGZvbGxvd3MgaXMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgTElCTlZESU1NIHN5c2ZzIGxheW91dCBhbmQgYQorY29ycmVzcG9uZGluZyBvYmplY3QgaGllcmFyY2h5IGRpYWdyYW0gYXMgdmlld2VkIHRocm91Z2ggdGhlIExJQk5EQ1RMCitBUEkuICBUaGUgZXhhbXBsZSBzeXNmcyBwYXRocyBhbmQgZGlhZ3JhbXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBFeGFtcGxlCitOVkRJTU0gUGxhdGZvcm0gd2hpY2ggaXMgYWxzbyB0aGUgTElCTlZESU1NIGJ1cyB1c2VkIGluIHRoZSBMSUJORENUTCB1bml0Cit0ZXN0LgorCitMSUJORENUTDogQ29udGV4dAorRXZlcnkgQVBJIGNhbGwgaW4gdGhlIExJQk5EQ1RMIGxpYnJhcnkgcmVxdWlyZXMgYSBjb250ZXh0IHRoYXQgaG9sZHMgdGhlCitsb2dnaW5nIHBhcmFtZXRlcnMgYW5kIG90aGVyIGxpYnJhcnkgaW5zdGFuY2Ugc3RhdGUuICBUaGUgbGlicmFyeSBpcworYmFzZWQgb24gdGhlIGxpYmFiYyB0ZW1wbGF0ZToKK2h0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvY2dpdC9saW51eC9rZXJuZWwvZ2l0L2theS9saWJhYmMuZ2l0CisKK0xJQk5EQ1RMOiBpbnN0YW50aWF0ZSBhIG5ldyBsaWJyYXJ5IGNvbnRleHQgZXhhbXBsZQorCisJc3RydWN0IG5kY3RsX2N0eCAqY3R4OworCisJaWYgKG5kY3RsX25ldygmY3R4KSA9PSAwKQorCQlyZXR1cm4gY3R4OworCWVsc2UKKwkJcmV0dXJuIE5VTEw7CisKK0xJQk5WRElNTS9MSUJORENUTDogQnVzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgYnVzIGhhcyBhIDE6MSByZWxhdGlvbnNoaXAgd2l0aCBhbiBORklULiAgVGhlIGN1cnJlbnQgZXhwZWN0YXRpb24gZm9yCitBQ1BJIGJhc2VkIHN5c3RlbXMgaXMgdGhhdCB0aGVyZSBpcyBvbmx5IGV2ZXIgb25lIHBsYXRmb3JtLWdsb2JhbCBORklULgorVGhhdCBzYWlkLCBpdCBpcyB0cml2aWFsIHRvIHJlZ2lzdGVyIG11bHRpcGxlIE5GSVRzLCB0aGUgc3BlY2lmaWNhdGlvbgorZG9lcyBub3QgcHJlY2x1ZGUgaXQuICBUaGUgaW5mcmFzdHJ1Y3R1cmUgc3VwcG9ydHMgbXVsdGlwbGUgYnVzc2VzIGFuZAord2Ugd2UgdXNlIHRoaXMgY2FwYWJpbGl0eSB0byB0ZXN0IG11bHRpcGxlIE5GSVQgY29uZmlndXJhdGlvbnMgaW4gdGhlCit1bml0IHRlc3QuCisKK0xJQk5WRElNTTogY29udHJvbCBjbGFzcyBkZXZpY2UgaW4gL3N5cy9jbGFzcworCitUaGlzIGNoYXJhY3RlciBkZXZpY2UgYWNjZXB0cyBEU00gbWVzc2FnZXMgdG8gYmUgcGFzc2VkIHRvIERJTU0KK2lkZW50aWZpZWQgYnkgaXRzIE5GSVQgaGFuZGxlLgorCisJL3N5cy9jbGFzcy9uZC9uZGN0bDAKKwl8LS0gZGV2CisJfC0tIGRldmljZSAtPiAuLi8uLi8uLi9uZGJ1czAKKwl8LS0gc3Vic3lzdGVtIC0+IC4uLy4uLy4uLy4uLy4uLy4uLy4uL2NsYXNzL25kCisKKworCitMSUJOVkRJTU06IGJ1cworCisJc3RydWN0IG52ZGltbV9idXMgKm52ZGltbV9idXNfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqcGFyZW50LAorCSAgICAgICBzdHJ1Y3QgbnZkaW1tX2J1c19kZXNjcmlwdG9yICpuZml0X2Rlc2MpOworCisJL3N5cy9kZXZpY2VzL3BsYXRmb3JtL25maXRfdGVzdC4wL25kYnVzMAorCXwtLSBjb21tYW5kcworCXwtLSBuZAorCXwtLSBuZml0CisJfC0tIG5tZW0wCisJfC0tIG5tZW0xCisJfC0tIG5tZW0yCisJfC0tIG5tZW0zCisJfC0tIHBvd2VyCisJfC0tIHByb3ZpZGVyCisJfC0tIHJlZ2lvbjAKKwl8LS0gcmVnaW9uMQorCXwtLSByZWdpb24yCisJfC0tIHJlZ2lvbjMKKwl8LS0gcmVnaW9uNAorCXwtLSByZWdpb241CisJfC0tIHVldmVudAorCWAtLSB3YWl0X3Byb2JlCisKK0xJQk5EQ1RMOiBidXMgZW51bWVyYXRpb24gZXhhbXBsZQorRmluZCB0aGUgYnVzIGhhbmRsZSB0aGF0IGRlc2NyaWJlcyB0aGUgYnVzIGZyb20gRXhhbXBsZSBOVkRJTU0gUGxhdGZvcm0KKworCXN0YXRpYyBzdHJ1Y3QgbmRjdGxfYnVzICpnZXRfYnVzX2J5X3Byb3ZpZGVyKHN0cnVjdCBuZGN0bF9jdHggKmN0eCwKKwkJCWNvbnN0IGNoYXIgKnByb3ZpZGVyKQorCXsKKwkJc3RydWN0IG5kY3RsX2J1cyAqYnVzOworCisJCW5kY3RsX2J1c19mb3JlYWNoKGN0eCwgYnVzKQorCQkJaWYgKHN0cmNtcChwcm92aWRlciwgbmRjdGxfYnVzX2dldF9wcm92aWRlcihidXMpKSA9PSAwKQorCQkJCXJldHVybiBidXM7CisKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJYnVzID0gZ2V0X2J1c19ieV9wcm92aWRlcihjdHgsICJuZml0X3Rlc3QuMCIpOworCisKK0xJQk5WRElNTS9MSUJORENUTDogRElNTSAoTk1FTSkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgRElNTSBkZXZpY2UgcHJvdmlkZXMgYSBjaGFyYWN0ZXIgZGV2aWNlIGZvciBzZW5kaW5nIGNvbW1hbmRzIHRvCitoYXJkd2FyZSwgYW5kIGl0IGlzIGEgY29udGFpbmVyIGZvciBMQUJFTHMuICBJZiB0aGUgRElNTSBpcyBkZWZpbmVkIGJ5CitORklUIHRoZW4gYW4gb3B0aW9uYWwgJ25maXQnIGF0dHJpYnV0ZSBzdWItZGlyZWN0b3J5IGlzIGF2YWlsYWJsZSB0byBhZGQKK05GSVQtc3BlY2lmaWNzLgorCitOb3RlIHRoYXQgdGhlIGtlcm5lbCBkZXZpY2UgbmFtZSBmb3IgIkRJTU1zIiBpcyAibm1lbVgiLiAgVGhlIE5GSVQKK2Rlc2NyaWJlcyB0aGVzZSBkZXZpY2VzIHZpYSAiTWVtb3J5IERldmljZSB0byBTeXN0ZW0gUGh5c2ljYWwgQWRkcmVzcworUmFuZ2UgTWFwcGluZyBTdHJ1Y3R1cmUiLCBhbmQgdGhlcmUgaXMgbm8gcmVxdWlyZW1lbnQgdGhhdCB0aGV5IGFjdHVhbGx5CitiZSBwaHlzaWNhbCBESU1Ncywgc28gd2UgdXNlIGEgbW9yZSBnZW5lcmljIG5hbWUuCisKK0xJQk5WRElNTTogRElNTSAoTk1FTSkKKworCXN0cnVjdCBudmRpbW0gKm52ZGltbV9jcmVhdGUoc3RydWN0IG52ZGltbV9idXMgKm52ZGltbV9idXMsIHZvaWQgKnByb3ZpZGVyX2RhdGEsCisJCQljb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICoqZ3JvdXBzLCB1bnNpZ25lZCBsb25nIGZsYWdzLAorCQkJdW5zaWduZWQgbG9uZyAqZHNtX21hc2spOworCisJL3N5cy9kZXZpY2VzL3BsYXRmb3JtL25maXRfdGVzdC4wL25kYnVzMAorCXwtLSBubWVtMAorCXwgICB8LS0gYXZhaWxhYmxlX3Nsb3RzCisJfCAgIHwtLSBjb21tYW5kcworCXwgICB8LS0gZGV2CisJfCAgIHwtLSBkZXZ0eXBlCisJfCAgIHwtLSBkcml2ZXIgLT4gLi4vLi4vLi4vLi4vLi4vYnVzL25kL2RyaXZlcnMvbnZkaW1tCisJfCAgIHwtLSBtb2RhbGlhcworCXwgICB8LS0gbmZpdAorCXwgICB8ICAgfC0tIGRldmljZQorCXwgICB8ICAgfC0tIGZvcm1hdAorCXwgICB8ICAgfC0tIGhhbmRsZQorCXwgICB8ICAgfC0tIHBoeXNfaWQKKwl8ICAgfCAgIHwtLSByZXZfaWQKKwl8ICAgfCAgIHwtLSBzZXJpYWwKKwl8ICAgfCAgIGAtLSB2ZW5kb3IKKwl8ICAgfC0tIHN0YXRlCisJfCAgIHwtLSBzdWJzeXN0ZW0gLT4gLi4vLi4vLi4vLi4vLi4vYnVzL25kCisJfCAgIGAtLSB1ZXZlbnQKKwl8LS0gbm1lbTEKKwlbLi5dCisKKworTElCTkRDVEw6IERJTU0gZW51bWVyYXRpb24gZXhhbXBsZQorCitOb3RlLCBpbiB0aGlzIGV4YW1wbGUgd2UgYXJlIGFzc3VtaW5nIE5GSVQtZGVmaW5lZCBESU1NcyB3aGljaCBhcmUKK2lkZW50aWZpZWQgYnkgYW4gIm5maXRfaGFuZGxlIiBhIDMyLWJpdCB2YWx1ZSB3aGVyZToKK0JpdCAzOjAgRElNTSBudW1iZXIgd2l0aGluIHRoZSBtZW1vcnkgY2hhbm5lbAorQml0IDc6NCBtZW1vcnkgY2hhbm5lbCBudW1iZXIKK0JpdCAxMTo4IG1lbW9yeSBjb250cm9sbGVyIElECitCaXQgMTU6MTIgc29ja2V0IElEICh3aXRoaW4gc2NvcGUgb2YgYSBOb2RlIGNvbnRyb2xsZXIgaWYgbm9kZSBjb250cm9sbGVyIGlzIHByZXNlbnQpCitCaXQgMjc6MTYgTm9kZSBDb250cm9sbGVyIElECitCaXQgMzE6MjggUmVzZXJ2ZWQKKworCXN0YXRpYyBzdHJ1Y3QgbmRjdGxfZGltbSAqZ2V0X2RpbW1fYnlfaGFuZGxlKHN0cnVjdCBuZGN0bF9idXMgKmJ1cywKKwkgICAgICAgdW5zaWduZWQgaW50IGhhbmRsZSkKKwl7CisJCXN0cnVjdCBuZGN0bF9kaW1tICpkaW1tOworCisJCW5kY3RsX2RpbW1fZm9yZWFjaChidXMsIGRpbW0pCisJCQlpZiAobmRjdGxfZGltbV9nZXRfaGFuZGxlKGRpbW0pID09IGhhbmRsZSkKKwkJCQlyZXR1cm4gZGltbTsKKworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkjZGVmaW5lIERJTU1fSEFORExFKG4sIHMsIGksIGMsIGQpIFwKKwkJKCgobiAmIDB4ZmZmKSA8PCAxNikgfCAoKHMgJiAweGYpIDw8IDEyKSB8ICgoaSAmIDB4ZikgPDwgOCkgXAorCQkgfCAoKGMgJiAweGYpIDw8IDQpIHwgKGQgJiAweGYpKQorCisJZGltbSA9IGdldF9kaW1tX2J5X2hhbmRsZShidXMsIERJTU1fSEFORExFKDAsIDAsIDAsIDAsIDApKTsKKworTElCTlZESU1NL0xJQk5EQ1RMOiBSZWdpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSBnZW5lcmljIFJFR0lPTiBkZXZpY2UgaXMgcmVnaXN0ZXJlZCBmb3IgZWFjaCBQTUVNIHJhbmdlIG9yIEJMSy1hcGVydHVyZQorc2V0LiAgUGVyIHRoZSBleGFtcGxlIHRoZXJlIGFyZSA2IHJlZ2lvbnM6IDIgUE1FTSBhbmQgNCBCTEstYXBlcnR1cmUKK3NldHMgb24gdGhlICJuZml0X3Rlc3QuMCIgYnVzLiAgVGhlIHByaW1hcnkgcm9sZSBvZiByZWdpb25zIGFyZSB0byBiZSBhCitjb250YWluZXIgb2YgIm1hcHBpbmdzIi4gIEEgbWFwcGluZyBpcyBhIHR1cGxlIG9mIDxESU1NLAorRFBBLXN0YXJ0LW9mZnNldCwgbGVuZ3RoPi4KKworTElCTlZESU1NIHByb3ZpZGVzIGEgYnVpbHQtaW4gZHJpdmVyIGZvciB0aGVzZSBSRUdJT04gZGV2aWNlcy4gIFRoaXMgZHJpdmVyCitpcyByZXNwb25zaWJsZSBmb3IgcmVjb25jaWxpbmcgdGhlIGFsaWFzZWQgRFBBIG1hcHBpbmdzIGFjcm9zcyBhbGwKK3JlZ2lvbnMsIHBhcnNpbmcgdGhlIExBQkVMLCBpZiBwcmVzZW50LCBhbmQgdGhlbiBlbWl0dGluZyBOQU1FU1BBQ0UKK2RldmljZXMgd2l0aCB0aGUgcmVzb2x2ZWQvZXhjbHVzaXZlIERQQS1ib3VuZGFyaWVzIGZvciB0aGUgbmRfcG1lbSBvcgorbmRfYmxrIGRldmljZSBkcml2ZXIgdG8gY29uc3VtZS4KKworSW4gYWRkaXRpb24gdG8gdGhlIGdlbmVyaWMgYXR0cmlidXRlcyBvZiAibWFwcGluZyJzLCAiaW50ZXJsZWF2ZV93YXlzIgorYW5kICJzaXplIiB0aGUgUkVHSU9OIGRldmljZSBhbHNvIGV4cG9ydHMgc29tZSBjb252ZW5pZW5jZSBhdHRyaWJ1dGVzLgorIm5zdHlwZSIgaW5kaWNhdGVzIHRoZSBpbnRlZ2VyIHR5cGUgb2YgbmFtZXNwYWNlLWRldmljZSB0aGlzIHJlZ2lvbgorZW1pdHMsICJkZXZ0eXBlIiBkdXBsaWNhdGVzIHRoZSBERVZUWVBFIHZhcmlhYmxlIHN0b3JlZCBieSB1ZGV2IGF0IHRoZQorJ2FkZCcgZXZlbnQsICJtb2RhbGlhcyIgZHVwbGljYXRlcyB0aGUgTU9EQUxJQVMgdmFyaWFibGUgc3RvcmVkIGJ5IHVkZXYKK2F0IHRoZSAnYWRkJyBldmVudCwgYW5kIGZpbmFsbHksIHRoZSBvcHRpb25hbCAic3BhX2luZGV4IiBpcyBwcm92aWRlZCBpbgordGhlIGNhc2Ugd2hlcmUgdGhlIHJlZ2lvbiBpcyBkZWZpbmVkIGJ5IGEgU1BBLgorCitMSUJOVkRJTU06IHJlZ2lvbgorCisJc3RydWN0IG5kX3JlZ2lvbiAqbnZkaW1tX3BtZW1fcmVnaW9uX2NyZWF0ZShzdHJ1Y3QgbnZkaW1tX2J1cyAqbnZkaW1tX2J1cywKKwkJCXN0cnVjdCBuZF9yZWdpb25fZGVzYyAqbmRyX2Rlc2MpOworCXN0cnVjdCBuZF9yZWdpb24gKm52ZGltbV9ibGtfcmVnaW9uX2NyZWF0ZShzdHJ1Y3QgbnZkaW1tX2J1cyAqbnZkaW1tX2J1cywKKwkJCXN0cnVjdCBuZF9yZWdpb25fZGVzYyAqbmRyX2Rlc2MpOworCisJL3N5cy9kZXZpY2VzL3BsYXRmb3JtL25maXRfdGVzdC4wL25kYnVzMAorCXwtLSByZWdpb24wCisJfCAgIHwtLSBhdmFpbGFibGVfc2l6ZQorCXwgICB8LS0gYnR0MAorCXwgICB8LS0gYnR0X3NlZWQKKwl8ICAgfC0tIGRldnR5cGUKKwl8ICAgfC0tIGRyaXZlciAtPiAuLi8uLi8uLi8uLi8uLi9idXMvbmQvZHJpdmVycy9uZF9yZWdpb24KKwl8ICAgfC0tIGluaXRfbmFtZXNwYWNlcworCXwgICB8LS0gbWFwcGluZzAKKwl8ICAgfC0tIG1hcHBpbmcxCisJfCAgIHwtLSBtYXBwaW5ncworCXwgICB8LS0gbW9kYWxpYXMKKwl8ICAgfC0tIG5hbWVzcGFjZTAuMAorCXwgICB8LS0gbmFtZXNwYWNlX3NlZWQKKwl8ICAgfC0tIG51bWFfbm9kZQorCXwgICB8LS0gbmZpdAorCXwgICB8ICAgYC0tIHNwYV9pbmRleAorCXwgICB8LS0gbnN0eXBlCisJfCAgIHwtLSBzZXRfY29va2llCisJfCAgIHwtLSBzaXplCisJfCAgIHwtLSBzdWJzeXN0ZW0gLT4gLi4vLi4vLi4vLi4vLi4vYnVzL25kCisJfCAgIGAtLSB1ZXZlbnQKKwl8LS0gcmVnaW9uMQorCVsuLl0KKworTElCTkRDVEw6IHJlZ2lvbiBlbnVtZXJhdGlvbiBleGFtcGxlCisKK1NhbXBsZSByZWdpb24gcmV0cmlldmFsIHJvdXRpbmVzIGJhc2VkIG9uIE5GSVQtdW5pcXVlIGRhdGEgbGlrZQorInNwYV9pbmRleCIgKGludGVybGVhdmUgc2V0IGlkKSBmb3IgUE1FTSBhbmQgIm5maXRfaGFuZGxlIiAoZGltbSBpZCkgZm9yCitCTEsuCisKKwlzdGF0aWMgc3RydWN0IG5kY3RsX3JlZ2lvbiAqZ2V0X3BtZW1fcmVnaW9uX2J5X3NwYV9pbmRleChzdHJ1Y3QgbmRjdGxfYnVzICpidXMsCisJCQl1bnNpZ25lZCBpbnQgc3BhX2luZGV4KQorCXsKKwkJc3RydWN0IG5kY3RsX3JlZ2lvbiAqcmVnaW9uOworCisJCW5kY3RsX3JlZ2lvbl9mb3JlYWNoKGJ1cywgcmVnaW9uKSB7CisJCQlpZiAobmRjdGxfcmVnaW9uX2dldF90eXBlKHJlZ2lvbikgIT0gTkRfREVWSUNFX1JFR0lPTl9QTUVNKQorCQkJCWNvbnRpbnVlOworCQkJaWYgKG5kY3RsX3JlZ2lvbl9nZXRfc3BhX2luZGV4KHJlZ2lvbikgPT0gc3BhX2luZGV4KQorCQkJCXJldHVybiByZWdpb247CisJCX0KKwkJcmV0dXJuIE5VTEw7CisJfQorCisJc3RhdGljIHN0cnVjdCBuZGN0bF9yZWdpb24gKmdldF9ibGtfcmVnaW9uX2J5X2RpbW1faGFuZGxlKHN0cnVjdCBuZGN0bF9idXMgKmJ1cywKKwkJCXVuc2lnbmVkIGludCBoYW5kbGUpCisJeworCQlzdHJ1Y3QgbmRjdGxfcmVnaW9uICpyZWdpb247CisKKwkJbmRjdGxfcmVnaW9uX2ZvcmVhY2goYnVzLCByZWdpb24pIHsKKwkJCXN0cnVjdCBuZGN0bF9tYXBwaW5nICptYXA7CisKKwkJCWlmIChuZGN0bF9yZWdpb25fZ2V0X3R5cGUocmVnaW9uKSAhPSBORF9ERVZJQ0VfUkVHSU9OX0JMT0NLKQorCQkJCWNvbnRpbnVlOworCQkJbmRjdGxfbWFwcGluZ19mb3JlYWNoKHJlZ2lvbiwgbWFwKSB7CisJCQkJc3RydWN0IG5kY3RsX2RpbW0gKmRpbW0gPSBuZGN0bF9tYXBwaW5nX2dldF9kaW1tKG1hcCk7CisKKwkJCQlpZiAobmRjdGxfZGltbV9nZXRfaGFuZGxlKGRpbW0pID09IGhhbmRsZSkKKwkJCQkJcmV0dXJuIHJlZ2lvbjsKKwkJCX0KKwkJfQorCQlyZXR1cm4gTlVMTDsKKwl9CisKKworV2h5IE5vdCBFbmNvZGUgdGhlIFJlZ2lvbiBUeXBlIGludG8gdGhlIFJlZ2lvbiBOYW1lPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBdCBmaXJzdCBnbGFuY2UgaXQgc2VlbXMgc2luY2UgTkZJVCBkZWZpbmVzIGp1c3QgUE1FTSBhbmQgQkxLIGludGVyZmFjZQordHlwZXMgdGhhdCB3ZSBzaG91bGQgc2ltcGx5IG5hbWUgUkVHSU9OIGRldmljZXMgd2l0aCBzb21ldGhpbmcgZGVyaXZlZAorZnJvbSB0aG9zZSB0eXBlIG5hbWVzLiAgSG93ZXZlciwgdGhlIE5EIHN1YnN5c3RlbSBleHBsaWNpdGx5IGtlZXBzIHRoZQorUkVHSU9OIG5hbWUgZ2VuZXJpYyBhbmQgZXhwZWN0cyB1c2Vyc3BhY2UgdG8gYWx3YXlzIGNvbnNpZGVyIHRoZQorcmVnaW9uLWF0dHJpYnV0ZXMgZm9yIGZvdXIgcmVhc29uczoKKworICAgIDEuIFRoZXJlIGFyZSBhbHJlYWR5IG1vcmUgdGhhbiB0d28gUkVHSU9OIGFuZCAibmFtZXNwYWNlIiB0eXBlcy4gIEZvcgorICAgIFBNRU0gdGhlcmUgYXJlIHR3byBzdWJ0eXBlcy4gIEFzIG1lbnRpb25lZCBwcmV2aW91c2x5IHdlIGhhdmUgUE1FTSB3aGVyZQorICAgIHRoZSBjb25zdGl0dWVudCBESU1NIGRldmljZXMgYXJlIGtub3duIGFuZCBhbm9ueW1vdXMgUE1FTS4gIEZvciBCTEsKKyAgICByZWdpb25zIHRoZSBORklUIHNwZWNpZmljYXRpb24gYWxyZWFkeSBhbnRpY2lwYXRlcyB2ZW5kb3Igc3BlY2lmaWMKKyAgICBpbXBsZW1lbnRhdGlvbnMuICBUaGUgZXhhY3QgZGlzdGluY3Rpb24gb2Ygd2hhdCBhIHJlZ2lvbiBjb250YWlucyBpcyBpbgorICAgIHRoZSByZWdpb24tYXR0cmlidXRlcyBub3QgdGhlIHJlZ2lvbi1uYW1lIG9yIHRoZSByZWdpb24tZGV2dHlwZS4KKworICAgIDIuIEEgcmVnaW9uIHdpdGggemVybyBjaGlsZC1uYW1lc3BhY2VzIGlzIGEgcG9zc2libGUgY29uZmlndXJhdGlvbi4gIEZvcgorICAgIGV4YW1wbGUsIHRoZSBORklUIGFsbG93cyBmb3IgYSBEQ1IgdG8gYmUgcHVibGlzaGVkIHdpdGhvdXQgYQorICAgIGNvcnJlc3BvbmRpbmcgQkxLLWFwZXJ0dXJlLiAgVGhpcyBlcXVhdGVzIHRvIGEgRElNTSB0aGF0IGNhbiBvbmx5IGFjY2VwdAorICAgIGNvbnRyb2wvY29uZmlndXJhdGlvbiBtZXNzYWdlcywgYnV0IG5vIGkvbyB0aHJvdWdoIGEgZGVzY2VuZGFudCBibG9jaworICAgIGRldmljZS4gIEFnYWluLCB0aGlzICJ0eXBlIiBpcyBhZHZlcnRpc2VkIGluIHRoZSBhdHRyaWJ1dGVzICgnbWFwcGluZ3MnCisgICAgPT0gMCkgYW5kIHRoZSBuYW1lIGRvZXMgbm90IHRlbGwgeW91IG11Y2guCisKKyAgICAzLiBXaGF0IGlmIGEgdGhpcmQgbWFqb3IgaW50ZXJmYWNlIHR5cGUgYXJpc2VzIGluIHRoZSBmdXR1cmU/ICBPdXRzaWRlCisgICAgb2YgdmVuZG9yIHNwZWNpZmljIGltcGxlbWVudGF0aW9ucywgaXQncyBub3QgZGlmZmljdWx0IHRvIGVudmlzaW9uIGEKKyAgICB0aGlyZCBjbGFzcyBvZiBpbnRlcmZhY2UgdHlwZSBiZXlvbmQgQkxLIGFuZCBQTUVNLiAgV2l0aCBhIGdlbmVyaWMgbmFtZQorICAgIGZvciB0aGUgUkVHSU9OIGxldmVsIG9mIHRoZSBkZXZpY2UtaGllcmFyY2h5IG9sZCB1c2Vyc3BhY2UKKyAgICBpbXBsZW1lbnRhdGlvbnMgY2FuIHN0aWxsIG1ha2Ugc2Vuc2Ugb2YgbmV3IGtlcm5lbCBhZHZlcnRpc2VkCisgICAgcmVnaW9uLXR5cGVzLiAgVXNlcnNwYWNlIGNhbiBhbHdheXMgcmVseSBvbiB0aGUgZ2VuZXJpYyByZWdpb24KKyAgICBhdHRyaWJ1dGVzIGxpa2UgIm1hcHBpbmdzIiwgInNpemUiLCBldGMgYW5kIHRoZSBleHBlY3RlZCBjaGlsZCBkZXZpY2VzCisgICAgbmFtZWQgIm5hbWVzcGFjZSIuICBUaGlzIGdlbmVyaWMgZm9ybWF0IG9mIHRoZSBkZXZpY2UtbW9kZWwgaGllcmFyY2h5CisgICAgYWxsb3dzIHRoZSBMSUJOVkRJTU0gYW5kIExJQk5EQ1RMIGltcGxlbWVudGF0aW9ucyB0byBiZSBtb3JlIHVuaWZvcm0gYW5kCisgICAgZnV0dXJlLXByb29mLgorCisgICAgNC4gVGhlcmUgYXJlIG1vcmUgcm9idXN0IG1lY2hhbmlzbXMgZm9yIGRldGVybWluaW5nIHRoZSBtYWpvciB0eXBlIG9mIGEKKyAgICByZWdpb24gdGhhbiBhIGRldmljZSBuYW1lLiAgU2VlIHRoZSBuZXh0IHNlY3Rpb24sIEhvdyBEbyBJIERldGVybWluZSB0aGUKKyAgICBNYWpvciBUeXBlIG9mIGEgUmVnaW9uPworCitIb3cgRG8gSSBEZXRlcm1pbmUgdGhlIE1ham9yIFR5cGUgb2YgYSBSZWdpb24/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK091dHNpZGUgb2YgdGhlIGJsYW5rZXQgcmVjb21tZW5kYXRpb24gb2YgInVzZSBsaWJuZGN0bCIsIG9yIHNpbXBseQorbG9va2luZyBhdCB0aGUga2VybmVsIGhlYWRlciAoL3Vzci9pbmNsdWRlL2xpbnV4L25kY3RsLmgpIHRvIGRlY29kZSB0aGUKKyJuc3R5cGUiIGludGVnZXIgYXR0cmlidXRlLCBoZXJlIGFyZSBzb21lIG90aGVyIG9wdGlvbnMuCisKKyAgICAxLiBtb2R1bGUgYWxpYXMgbG9va3VwOgorCisgICAgVGhlIHdob2xlIHBvaW50IG9mIHJlZ2lvbi9uYW1lc3BhY2UgZGV2aWNlIHR5cGUgZGlmZmVyZW50aWF0aW9uIGlzIHRvCisgICAgZGVjaWRlIHdoaWNoIGJsb2NrLWRldmljZSBkcml2ZXIgd2lsbCBhdHRhY2ggdG8gYSBnaXZlbiBMSUJOVkRJTU0gbmFtZXNwYWNlLgorICAgIE9uZSBjYW4gc2ltcGx5IHVzZSB0aGUgbW9kYWxpYXMgdG8gbG9va3VwIHRoZSByZXN1bHRpbmcgbW9kdWxlLiAgSXQncworICAgIGltcG9ydGFudCB0byBub3RlIHRoYXQgdGhpcyBtZXRob2QgaXMgcm9idXN0IGluIHRoZSBwcmVzZW5jZSBvZiBhCisgICAgdmVuZG9yLXNwZWNpZmljIGRyaXZlciBkb3duIHRoZSByb2FkLiAgSWYgYSB2ZW5kb3Itc3BlY2lmaWMKKyAgICBpbXBsZW1lbnRhdGlvbiB3YW50cyB0byBzdXBwbGFudCB0aGUgc3RhbmRhcmQgbmRfYmxrIGRyaXZlciBpdCBjYW4gd2l0aAorICAgIG1pbmltYWwgaW1wYWN0IHRvIHRoZSByZXN0IG9mIExJQk5WRElNTS4KKworICAgIEluIGZhY3QsIGEgdmVuZG9yIG1heSBhbHNvIHdhbnQgdG8gaGF2ZSBhIHZlbmRvci1zcGVjaWZpYyByZWdpb24tZHJpdmVyCisgICAgKG91dHNpZGUgb2YgbmRfcmVnaW9uKS4gIEZvciBleGFtcGxlLCBpZiBhIHZlbmRvciBkZWZpbmVkIGl0cyBvd24gTEFCRUwKKyAgICBmb3JtYXQgaXQgd291bGQgbmVlZCBpdHMgb3duIHJlZ2lvbiBkcml2ZXIgdG8gcGFyc2UgdGhhdCBMQUJFTCBhbmQgZW1pdAorICAgIHRoZSByZXN1bHRpbmcgbmFtZXNwYWNlcy4gIFRoZSBvdXRwdXQgZnJvbSBtb2R1bGUgcmVzb2x1dGlvbiBpcyBtb3JlCisgICAgYWNjdXJhdGUgdGhhbiBhIHJlZ2lvbi1uYW1lIG9yIHJlZ2lvbi1kZXZ0eXBlLgorCisgICAgMi4gdWRldjoKKworICAgIFRoZSBrZXJuZWwgImRldnR5cGUiIGlzIHJlZ2lzdGVyZWQgaW4gdGhlIHVkZXYgZGF0YWJhc2UKKyAgICAjIHVkZXZhZG0gaW5mbyAtLXBhdGg9L2RldmljZXMvcGxhdGZvcm0vbmZpdF90ZXN0LjAvbmRidXMwL3JlZ2lvbjAKKyAgICBQOiAvZGV2aWNlcy9wbGF0Zm9ybS9uZml0X3Rlc3QuMC9uZGJ1czAvcmVnaW9uMAorICAgIEU6IERFVlBBVEg9L2RldmljZXMvcGxhdGZvcm0vbmZpdF90ZXN0LjAvbmRidXMwL3JlZ2lvbjAKKyAgICBFOiBERVZUWVBFPW5kX3BtZW0KKyAgICBFOiBNT0RBTElBUz1uZDp0MgorICAgIEU6IFNVQlNZU1RFTT1uZAorCisgICAgIyB1ZGV2YWRtIGluZm8gLS1wYXRoPS9kZXZpY2VzL3BsYXRmb3JtL25maXRfdGVzdC4wL25kYnVzMC9yZWdpb240CisgICAgUDogL2RldmljZXMvcGxhdGZvcm0vbmZpdF90ZXN0LjAvbmRidXMwL3JlZ2lvbjQKKyAgICBFOiBERVZQQVRIPS9kZXZpY2VzL3BsYXRmb3JtL25maXRfdGVzdC4wL25kYnVzMC9yZWdpb240CisgICAgRTogREVWVFlQRT1uZF9ibGsKKyAgICBFOiBNT0RBTElBUz1uZDp0MworICAgIEU6IFNVQlNZU1RFTT1uZAorCisgICAgLi4uYW5kIGlzIGF2YWlsYWJsZSBhcyBhIHJlZ2lvbiBhdHRyaWJ1dGUsIGJ1dCBrZWVwIGluIG1pbmQgdGhhdCB0aGUKKyAgICAiZGV2dHlwZSIgZG9lcyBub3QgaW5kaWNhdGUgc3ViLXR5cGUgdmFyaWF0aW9ucyBhbmQgc2NyaXB0cyBzaG91bGQKKyAgICByZWFsbHkgYmUgdW5kZXJzdGFuZGluZyB0aGUgb3RoZXIgYXR0cmlidXRlcy4KKworICAgIDMuIHR5cGUgc3BlY2lmaWMgYXR0cmlidXRlczoKKworICAgIEFzIGl0IGN1cnJlbnRseSBzdGFuZHMgYSBCTEstYXBlcnR1cmUgcmVnaW9uIHdpbGwgbmV2ZXIgaGF2ZSBhCisgICAgIm5maXQvc3BhX2luZGV4IiBhdHRyaWJ1dGUsIGJ1dCBuZWl0aGVyIHdpbGwgYSBub24tTkZJVCBQTUVNIHJlZ2lvbi4gIEEKKyAgICBCTEsgcmVnaW9uIHdpdGggYSAibWFwcGluZ3MiIHZhbHVlIG9mIDAgaXMsIGFzIG1lbnRpb25lZCBhYm92ZSwgYSBESU1NCisgICAgdGhhdCBkb2VzIG5vdCBhbGxvdyBJL08uICBBIFBNRU0gcmVnaW9uIHdpdGggYSAibWFwcGluZ3MiIHZhbHVlIG9mIHplcm8KKyAgICBpcyBhIHNpbXBsZSBzeXN0ZW0tcGh5c2ljYWwtYWRkcmVzcyByYW5nZS4KKworCitMSUJOVkRJTU0vTElCTkRDVEw6IE5hbWVzcGFjZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBIFJFR0lPTiwgYWZ0ZXIgcmVzb2x2aW5nIERQQSBhbGlhc2luZyBhbmQgTEFCRUwgc3BlY2lmaWVkIGJvdW5kYXJpZXMsCitzdXJmYWNlcyBvbmUgb3IgbW9yZSAibmFtZXNwYWNlIiBkZXZpY2VzLiAgVGhlIGFycml2YWwgb2YgYSAibmFtZXNwYWNlIgorZGV2aWNlIGN1cnJlbnRseSB0cmlnZ2VycyBlaXRoZXIgdGhlIG5kX2JsayBvciBuZF9wbWVtIGRyaXZlciB0byBsb2FkCithbmQgcmVnaXN0ZXIgYSBkaXNrL2Jsb2NrIGRldmljZS4KKworTElCTlZESU1NOiBuYW1lc3BhY2UKK0hlcmUgaXMgYSBzYW1wbGUgbGF5b3V0IGZyb20gdGhlIHRocmVlIG1ham9yIHR5cGVzIG9mIE5BTUVTUEFDRSB3aGVyZQorbmFtZXNwYWNlMC4wIHJlcHJlc2VudHMgRElNTS1pbmZvLWJhY2tlZCBQTUVNIChub3RlIHRoYXQgaXQgaGFzIGEgJ3V1aWQnCithdHRyaWJ1dGUpLCBuYW1lc3BhY2UyLjAgcmVwcmVzZW50cyBhIEJMSyBuYW1lc3BhY2UgKG5vdGUgaXQgaGFzIGEKKydzZWN0b3Jfc2l6ZScgYXR0cmlidXRlKSB0aGF0LCBhbmQgbmFtZXNwYWNlNi4wIHJlcHJlc2VudHMgYW4gYW5vbnltb3VzCitQTUVNIG5hbWVzcGFjZSAobm90ZSB0aGF0IGhhcyBubyAndXVpZCcgYXR0cmlidXRlIGR1ZSB0byBub3Qgc3VwcG9ydCBhCitMQUJFTCkuCisKKwkvc3lzL2RldmljZXMvcGxhdGZvcm0vbmZpdF90ZXN0LjAvbmRidXMwL3JlZ2lvbjAvbmFtZXNwYWNlMC4wCisJfC0tIGFsdF9uYW1lCisJfC0tIGRldnR5cGUKKwl8LS0gZHBhX2V4dGVudHMKKwl8LS0gZm9yY2VfcmF3CisJfC0tIG1vZGFsaWFzCisJfC0tIG51bWFfbm9kZQorCXwtLSByZXNvdXJjZQorCXwtLSBzaXplCisJfC0tIHN1YnN5c3RlbSAtPiAuLi8uLi8uLi8uLi8uLi8uLi9idXMvbmQKKwl8LS0gdHlwZQorCXwtLSB1ZXZlbnQKKwlgLS0gdXVpZAorCS9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9uZml0X3Rlc3QuMC9uZGJ1czAvcmVnaW9uMi9uYW1lc3BhY2UyLjAKKwl8LS0gYWx0X25hbWUKKwl8LS0gZGV2dHlwZQorCXwtLSBkcGFfZXh0ZW50cworCXwtLSBmb3JjZV9yYXcKKwl8LS0gbW9kYWxpYXMKKwl8LS0gbnVtYV9ub2RlCisJfC0tIHNlY3Rvcl9zaXplCisJfC0tIHNpemUKKwl8LS0gc3Vic3lzdGVtIC0+IC4uLy4uLy4uLy4uLy4uLy4uL2J1cy9uZAorCXwtLSB0eXBlCisJfC0tIHVldmVudAorCWAtLSB1dWlkCisJL3N5cy9kZXZpY2VzL3BsYXRmb3JtL25maXRfdGVzdC4xL25kYnVzMS9yZWdpb242L25hbWVzcGFjZTYuMAorCXwtLSBibG9jaworCXwgICBgLS0gcG1lbTAKKwl8LS0gZGV2dHlwZQorCXwtLSBkcml2ZXIgLT4gLi4vLi4vLi4vLi4vLi4vLi4vYnVzL25kL2RyaXZlcnMvcG1lbQorCXwtLSBmb3JjZV9yYXcKKwl8LS0gbW9kYWxpYXMKKwl8LS0gbnVtYV9ub2RlCisJfC0tIHJlc291cmNlCisJfC0tIHNpemUKKwl8LS0gc3Vic3lzdGVtIC0+IC4uLy4uLy4uLy4uLy4uLy4uL2J1cy9uZAorCXwtLSB0eXBlCisJYC0tIHVldmVudAorCitMSUJORENUTDogbmFtZXNwYWNlIGVudW1lcmF0aW9uIGV4YW1wbGUKK05hbWVzcGFjZXMgYXJlIGluZGV4ZWQgcmVsYXRpdmUgdG8gdGhlaXIgcGFyZW50IHJlZ2lvbiwgZXhhbXBsZSBiZWxvdy4KK1RoZXNlIGluZGV4ZXMgYXJlIG1vc3RseSBzdGF0aWMgZnJvbSBib290IHRvIGJvb3QsIGJ1dCBzdWJzeXN0ZW0gbWFrZXMKK25vIGd1YXJhbnRlZXMgaW4gdGhpcyByZWdhcmQuICBGb3IgYSBzdGF0aWMgbmFtZXNwYWNlIGlkZW50aWZpZXIgdXNlIGl0cworJ3V1aWQnIGF0dHJpYnV0ZS4KKworc3RhdGljIHN0cnVjdCBuZGN0bF9uYW1lc3BhY2UgKmdldF9uYW1lc3BhY2VfYnlfaWQoc3RydWN0IG5kY3RsX3JlZ2lvbiAqcmVnaW9uLAorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBpZCkKK3sKKyAgICAgICAgc3RydWN0IG5kY3RsX25hbWVzcGFjZSAqbmRuczsKKworICAgICAgICBuZGN0bF9uYW1lc3BhY2VfZm9yZWFjaChyZWdpb24sIG5kbnMpCisgICAgICAgICAgICAgICAgaWYgKG5kY3RsX25hbWVzcGFjZV9nZXRfaWQobmRucykgPT0gaWQpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmRuczsKKworICAgICAgICByZXR1cm4gTlVMTDsKK30KKworTElCTkRDVEw6IG5hbWVzcGFjZSBjcmVhdGlvbiBleGFtcGxlCitJZGxlIG5hbWVzcGFjZXMgYXJlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBieSB0aGUga2VybmVsIGlmIGEgZ2l2ZW4KK3JlZ2lvbiBoYXMgZW5vdWdoIGF2YWlsYWJsZSBjYXBhY2l0eSB0byBjcmVhdGUgYSBuZXcgbmFtZXNwYWNlLgorTmFtZXNwYWNlIGluc3RhbnRpYXRpb24gaW52b2x2ZXMgZmluZGluZyBhbiBpZGxlIG5hbWVzcGFjZSBhbmQKK2NvbmZpZ3VyaW5nIGl0LiAgRm9yIHRoZSBtb3N0IHBhcnQgdGhlIHNldHRpbmcgb2YgbmFtZXNwYWNlIGF0dHJpYnV0ZXMKK2NhbiBvY2N1ciBpbiBhbnkgb3JkZXIsIHRoZSBvbmx5IGNvbnN0cmFpbnQgaXMgdGhhdCAndXVpZCcgbXVzdCBiZSBzZXQKK2JlZm9yZSAnc2l6ZScuICBUaGlzIGVuYWJsZXMgdGhlIGtlcm5lbCB0byB0cmFjayBEUEEgYWxsb2NhdGlvbnMKK2ludGVybmFsbHkgd2l0aCBhIHN0YXRpYyBpZGVudGlmaWVyLgorCitzdGF0aWMgaW50IGNvbmZpZ3VyZV9uYW1lc3BhY2Uoc3RydWN0IG5kY3RsX3JlZ2lvbiAqcmVnaW9uLAorICAgICAgICAgICAgICAgIHN0cnVjdCBuZGN0bF9uYW1lc3BhY2UgKm5kbnMsCisgICAgICAgICAgICAgICAgc3RydWN0IG5hbWVzcGFjZV9wYXJhbWV0ZXJzICpwYXJhbWV0ZXJzKQoreworICAgICAgICBjaGFyIGRldm5hbWVbNTBdOworCisgICAgICAgIHNucHJpbnRmKGRldm5hbWUsIHNpemVvZihkZXZuYW1lKSwgIm5hbWVzcGFjZSVkLiVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kY3RsX3JlZ2lvbl9nZXRfaWQocmVnaW9uKSwgcGFyYW1hdGVycy0+aWQpOworCisgICAgICAgIG5kY3RsX25hbWVzcGFjZV9zZXRfYWx0X25hbWUobmRucywgZGV2bmFtZSk7CisgICAgICAgIC8qICd1dWlkJyBtdXN0IGJlIHNldCBwcmlvciB0byBzZXR0aW5nIHNpemUhICovCisgICAgICAgIG5kY3RsX25hbWVzcGFjZV9zZXRfdXVpZChuZG5zLCBwYXJhbWF0ZXJzLT51dWlkKTsKKyAgICAgICAgbmRjdGxfbmFtZXNwYWNlX3NldF9zaXplKG5kbnMsIHBhcmFtYXRlcnMtPnNpemUpOworICAgICAgICAvKiB1bmxpa2UgcG1lbSBuYW1lc3BhY2VzLCBibGsgbmFtZXNwYWNlcyBoYXZlIGEgc2VjdG9yIHNpemUgKi8KKyAgICAgICAgaWYgKHBhcmFtZXRlcnMtPmxiYXNpemUpCisgICAgICAgICAgICAgICAgbmRjdGxfbmFtZXNwYWNlX3NldF9zZWN0b3Jfc2l6ZShuZG5zLCBwYXJhbWV0ZXJzLT5sYmFzaXplKTsKKyAgICAgICAgbmRjdGxfbmFtZXNwYWNlX2VuYWJsZShuZG5zKTsKK30KKworCitXaHkgdGhlIFRlcm0gIm5hbWVzcGFjZSI/CisKKyAgICAxLiBXaHkgbm90ICJ2b2x1bWUiIGZvciBpbnN0YW5jZT8gICJ2b2x1bWUiIHJhbiB0aGUgcmlzayBvZiBjb25mdXNpbmcKKyAgICBORCAobGlibnZkaW1tIHN1YnN5c3RlbSkgdG8gYSB2b2x1bWUgbWFuYWdlciBsaWtlIGRldmljZS1tYXBwZXIuCisKKyAgICAyLiBUaGUgdGVybSBvcmlnaW5hdGVkIHRvIGRlc2NyaWJlIHRoZSBzdWItZGV2aWNlcyB0aGF0IGNhbiBiZSBjcmVhdGVkCisgICAgd2l0aGluIGEgTlZNRSBjb250cm9sbGVyIChzZWUgdGhlIG52bWUgc3BlY2lmaWNhdGlvbjoKKyAgICBodHRwOi8vd3d3Lm52bWV4cHJlc3Mub3JnL3NwZWNpZmljYXRpb25zLyksIGFuZCBORklUIG5hbWVzcGFjZXMgYXJlCisgICAgbWVhbnQgdG8gcGFyYWxsZWwgdGhlIGNhcGFiaWxpdGllcyBhbmQgY29uZmlndXJhYmlsaXR5IG9mCisgICAgTlZNRS1uYW1lc3BhY2VzLgorCisKK0xJQk5WRElNTS9MSUJORENUTDogQmxvY2sgVHJhbnNsYXRpb24gVGFibGUgImJ0dCIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBIEJUVCAoZGVzaWduIGRvY3VtZW50OiBodHRwOi8vcG1lbS5pby8yMDE0LzA5LzIzL2J0dC5odG1sKSBpcyBhIHN0YWNrZWQKK2Jsb2NrIGRldmljZSBkcml2ZXIgdGhhdCBmcm9udHMgZWl0aGVyIHRoZSB3aG9sZSBibG9jayBkZXZpY2Ugb3IgYQorcGFydGl0aW9uIG9mIGEgYmxvY2sgZGV2aWNlIGVtaXR0ZWQgYnkgZWl0aGVyIGEgUE1FTSBvciBCTEsgTkFNRVNQQUNFLgorCitMSUJOVkRJTU06IGJ0dCBsYXlvdXQKK0V2ZXJ5IHJlZ2lvbiB3aWxsIHN0YXJ0IG91dCB3aXRoIGF0IGxlYXN0IG9uZSBCVFQgZGV2aWNlIHdoaWNoIGlzIHRoZQorc2VlZCBkZXZpY2UuICBUbyBhY3RpdmF0ZSBpdCBzZXQgdGhlICJuYW1lc3BhY2UiLCAidXVpZCIsIGFuZAorInNlY3Rvcl9zaXplIiBhdHRyaWJ1dGVzIGFuZCB0aGVuIGJpbmQgdGhlIGRldmljZSB0byB0aGUgbmRfcG1lbSBvcgorbmRfYmxrIGRyaXZlciBkZXBlbmRpbmcgb24gdGhlIHJlZ2lvbiB0eXBlLgorCisJL3N5cy9kZXZpY2VzL3BsYXRmb3JtL25maXRfdGVzdC4xL25kYnVzMC9yZWdpb24wL2J0dDAvCisJfC0tIG5hbWVzcGFjZQorCXwtLSBkZWxldGUKKwl8LS0gZGV2dHlwZQorCXwtLSBtb2RhbGlhcworCXwtLSBudW1hX25vZGUKKwl8LS0gc2VjdG9yX3NpemUKKwl8LS0gc3Vic3lzdGVtIC0+IC4uLy4uLy4uLy4uLy4uL2J1cy9uZAorCXwtLSB1ZXZlbnQKKwlgLS0gdXVpZAorCitMSUJORENUTDogYnR0IGNyZWF0aW9uIGV4YW1wbGUKK1NpbWlsYXIgdG8gbmFtZXNwYWNlcyBhbiBpZGxlIEJUVCBkZXZpY2UgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHBlcgorcmVnaW9uLiAgRWFjaCB0aW1lIHRoaXMgInNlZWQiIGJ0dCBkZXZpY2UgaXMgY29uZmlndXJlZCBhbmQgZW5hYmxlZCBhIG5ldworc2VlZCBpcyBjcmVhdGVkLiAgQ3JlYXRpbmcgYSBCVFQgY29uZmlndXJhdGlvbiBpbnZvbHZlcyB0d28gc3RlcHMgb2YKK2ZpbmRpbmcgYW5kIGlkbGUgQlRUIGFuZCBhc3NpZ25pbmcgaXQgdG8gY29uc3VtZSBhIFBNRU0gb3IgQkxLIG5hbWVzcGFjZS4KKworCXN0YXRpYyBzdHJ1Y3QgbmRjdGxfYnR0ICpnZXRfaWRsZV9idHQoc3RydWN0IG5kY3RsX3JlZ2lvbiAqcmVnaW9uKQorCXsKKwkJc3RydWN0IG5kY3RsX2J0dCAqYnR0OworCisJCW5kY3RsX2J0dF9mb3JlYWNoKHJlZ2lvbiwgYnR0KQorCQkJaWYgKCFuZGN0bF9idHRfaXNfZW5hYmxlZChidHQpCisJCQkJCSYmICFuZGN0bF9idHRfaXNfY29uZmlndXJlZChidHQpKQorCQkJCXJldHVybiBidHQ7CisKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJc3RhdGljIGludCBjb25maWd1cmVfYnR0KHN0cnVjdCBuZGN0bF9yZWdpb24gKnJlZ2lvbiwKKwkJCXN0cnVjdCBidHRfcGFyYW1ldGVycyAqcGFyYW1ldGVycykKKwl7CisJCWJ0dCA9IGdldF9pZGxlX2J0dChyZWdpb24pOworCisJCW5kY3RsX2J0dF9zZXRfdXVpZChidHQsIHBhcmFtZXRlcnMtPnV1aWQpOworCQluZGN0bF9idHRfc2V0X3NlY3Rvcl9zaXplKGJ0dCwgcGFyYW1ldGVycy0+c2VjdG9yX3NpemUpOworCQluZGN0bF9idHRfc2V0X25hbWVzcGFjZShidHQsIHBhcmFtZXRlcnMtPm5kbnMpOworCQkvKiB0dXJuIG9mZiByYXcgbW9kZSBkZXZpY2UgKi8KKwkJbmRjdGxfbmFtZXNwYWNlX2Rpc2FibGUocGFyYW1ldGVycy0+bmRucyk7CisJCS8qIHR1cm4gb24gYnR0IGFjY2VzcyAqLworCQluZGN0bF9idHRfZW5hYmxlKGJ0dCk7CisJfQorCitPbmNlIGluc3RhbnRpYXRlZCBhIG5ldyBpbmFjdGl2ZSBidHQgc2VlZCBkZXZpY2Ugd2lsbCBhcHBlYXIgdW5kZXJuZWF0aAordGhlIHJlZ2lvbi4KKworT25jZSBhICJuYW1lc3BhY2UiIGlzIHJlbW92ZWQgZnJvbSBhIEJUVCB0aGF0IGluc3RhbmNlIG9mIHRoZSBCVFQgZGV2aWNlCit3aWxsIGJlIGRlbGV0ZWQgb3Igb3RoZXJ3aXNlIHJlc2V0IHRvIGRlZmF1bHQgdmFsdWVzLiAgVGhpcyBkZWxldGlvbiBpcworb25seSBhdCB0aGUgZGV2aWNlIG1vZGVsIGxldmVsLiAgSW4gb3JkZXIgdG8gZGVzdHJveSBhIEJUVCB0aGUgImluZm8KK2Jsb2NrIiBuZWVkcyB0byBiZSBkZXN0cm95ZWQuICBOb3RlLCB0aGF0IHRvIGRlc3Ryb3kgYSBCVFQgdGhlIG1lZGlhCituZWVkcyB0byBiZSB3cml0dGVuIGluIHJhdyBtb2RlLiAgQnkgZGVmYXVsdCwgdGhlIGtlcm5lbCB3aWxsIGF1dG9kZXRlY3QKK3RoZSBwcmVzZW5jZSBvZiBhIEJUVCBhbmQgZGlzYWJsZSByYXcgbW9kZS4gIFRoaXMgYXV0b2RldGVjdCBiZWhhdmlvcgorY2FuIGJlIHN1cHByZXNzZWQgYnkgZW5hYmxpbmcgcmF3IG1vZGUgZm9yIHRoZSBuYW1lc3BhY2UgdmlhIHRoZQorbmRjdGxfbmFtZXNwYWNlX3NldF9yYXdfbW9kZSgpIEFQSS4KKworCitTdW1tYXJ5IExJQk5EQ1RMIERpYWdyYW0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGb3IgdGhlIGdpdmVuIGV4YW1wbGUgYWJvdmUsIGhlcmUgaXMgdGhlIHZpZXcgb2YgdGhlIG9iamVjdHMgYXMgc2VlbiBieSB0aGUKK0xJQk5EQ1RMIEFQSToKKyAgICAgICAgICAgICstLS0rCisgICAgICAgICAgICB8Q1RYfCAgICArLS0tLS0tLS0tKyAgICstLS0tLS0tLS0tLS0tLSsgICstLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICArLSstKyAgKy0+IFJFR0lPTjAgKy0tLT4gTkFNRVNQQUNFMC4wICstLT4gUE1FTTggInBtMC4wIiB8CisgICAgICAgICAgICAgIHwgICAgfCArLS0tLS0tLS0tKyAgICstLS0tLS0tLS0tLS0tLSsgICstLS0tLS0tLS0tLS0tLS0rCisrLS0tLS0tLSsgICAgIHwgICAgfCArLS0tLS0tLS0tKyAgICstLS0tLS0tLS0tLS0tLSsgICstLS0tLS0tLS0tLS0tLS0rCit8IERJTU0wIDwtKyAgIHwgICAgKy0+IFJFR0lPTjEgKy0tLT4gTkFNRVNQQUNFMS4wICstLT4gUE1FTTYgInBtMS4wIiB8CisrLS0tLS0tLSsgfCAgIHwgICAgfCArLS0tLS0tLS0tKyAgICstLS0tLS0tLS0tLS0tLSsgICstLS0tLS0tLS0tLS0tLS0rCit8IERJTU0xIDwtKyArLXYtLSsgfCArLS0tLS0tLS0tKyAgICstLS0tLS0tLS0tLS0tLSsgICstLS0tLS0tLS0tLS0tLS0rCisrLS0tLS0tLSsgKy0rQlVTMCstLS0+IFJFR0lPTjIgKy0rLT4gTkFNRVNQQUNFMi4wICstLT4gTkQ2ICAiYmxrMi4wIiB8Cit8IERJTU0yIDwtKyArLS0tLSsgfCArLS0tLS0tLS0tKyB8ICstLS0tLS0tLS0tLS0tLSsgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworKy0tLS0tLS0rIHwgICAgICAgIHwgICAgICAgICAgICAgKy0+IE5BTUVTUEFDRTIuMSArLS0+IE5ENSAgImJsazIuMSIgfCBCVFQyIHwKK3wgRElNTTMgPC0rICAgICAgICB8ICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tKyAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisrLS0tLS0tLSsgICAgICAgICAgfCArLS0tLS0tLS0tKyAgICstLS0tLS0tLS0tLS0tLSsgICstLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgKy0+IFJFR0lPTjMgKy0rLT4gTkFNRVNQQUNFMy4wICstLT4gTkQ0ICAiYmxrMy4wIiB8CisgICAgICAgICAgICAgICAgICAgfCArLS0tLS0tLS0tKyB8ICstLS0tLS0tLS0tLS0tLSsgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgKy0+IE5BTUVTUEFDRTMuMSArLS0+IE5EMyAgImJsazMuMSIgfCBCVFQxIHwKKyAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tKyAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgfCArLS0tLS0tLS0tKyAgICstLS0tLS0tLS0tLS0tLSsgICstLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgKy0+IFJFR0lPTjQgKy0tLT4gTkFNRVNQQUNFNC4wICstLT4gTkQyICAiYmxrNC4wIiB8CisgICAgICAgICAgICAgICAgICAgfCArLS0tLS0tLS0tKyAgICstLS0tLS0tLS0tLS0tLSsgICstLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgfCArLS0tLS0tLS0tKyAgICstLS0tLS0tLS0tLS0tLSsgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgICstPiBSRUdJT041ICstLS0+IE5BTUVTUEFDRTUuMCArLS0+IE5EMSAgImJsazUuMCIgfCBCVFQwIHwKKyAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0rICAgKy0tLS0tLS0tLS0tLS0tKyAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0rCisKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9udm1lbS9udm1lbS50eHQgYi9Eb2N1bWVudGF0aW9uL252bWVtL252bWVtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmQ0MGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9udm1lbS9udm1lbS50eHQKQEAgLTAsMCArMSwxNTIgQEAKKwkJCSAgICBOVk1FTSBTVUJTWVNURU0KKwkgIFNyaW5pdmFzIEthbmRhZ2F0bGEgPHNyaW5pdmFzLmthbmRhZ2F0bGFAbGluYXJvLm9yZz4KKworVGhpcyBkb2N1bWVudCBleHBsYWlucyB0aGUgTlZNRU0gRnJhbWV3b3JrIGFsb25nIHdpdGggdGhlIEFQSXMgcHJvdmlkZWQsCithbmQgaG93IHRvIHVzZSBpdC4KKworMS4gSW50cm9kdWN0aW9uCis9PT09PT09PT09PT09PT0KKypOVk1FTSogaXMgdGhlIGFiYnJldmlhdGlvbiBmb3IgTm9uIFZvbGF0aWxlIE1lbW9yeSBsYXllci4gSXQgaXMgdXNlZCB0bworcmV0cmlldmUgY29uZmlndXJhdGlvbiBvZiBTT0Mgb3IgRGV2aWNlIHNwZWNpZmljIGRhdGEgZnJvbSBub24gdm9sYXRpbGUKK21lbW9yaWVzIGxpa2UgZWVwcm9tLCBlZnVzZXMgYW5kIHNvIG9uLgorCitCZWZvcmUgdGhpcyBmcmFtZXdvcmsgZXhpc3RlZCwgTlZNRU0gZHJpdmVycyBsaWtlIGVlcHJvbSB3ZXJlIHN0b3JlZCBpbgorZHJpdmVycy9taXNjLCB3aGVyZSB0aGV5IGFsbCBoYWQgdG8gZHVwbGljYXRlIHByZXR0eSBtdWNoIHRoZSBzYW1lIGNvZGUgdG8KK3JlZ2lzdGVyIGEgc3lzZnMgZmlsZSwgYWxsb3cgaW4ta2VybmVsIHVzZXJzIHRvIGFjY2VzcyB0aGUgY29udGVudCBvZiB0aGUKK2RldmljZXMgdGhleSB3ZXJlIGRyaXZpbmcsIGV0Yy4KKworVGhpcyB3YXMgYWxzbyBhIHByb2JsZW0gYXMgZmFyIGFzIG90aGVyIGluLWtlcm5lbCB1c2VycyB3ZXJlIGludm9sdmVkLCBzaW5jZQordGhlIHNvbHV0aW9ucyB1c2VkIHdlcmUgcHJldHR5IG11Y2ggZGlmZmVyZW50IGZyb20gb25lIGRyaXZlciB0byBhbm90aGVyLCB0aGVyZQord2FzIGEgcmF0aGVyIGJpZyBhYnN0cmFjdGlvbiBsZWFrLgorCitUaGlzIGZyYW1ld29yayBhaW1zIGF0IHNvbHZlIHRoZXNlIHByb2JsZW1zLiBJdCBhbHNvIGludHJvZHVjZXMgRFQKK3JlcHJlc2VudGF0aW9uIGZvciBjb25zdW1lciBkZXZpY2VzIHRvIGdvIGdldCB0aGUgZGF0YSB0aGV5IHJlcXVpcmUgKE1BQworQWRkcmVzc2VzLCBTb0MvUmV2aXNpb24gSUQsIHBhcnQgbnVtYmVycywgYW5kIHNvIG9uKSBmcm9tIHRoZSBOVk1FTXMuIFRoaXMKK2ZyYW1ld29yayBpcyBiYXNlZCBvbiByZWdtYXAsIHNvIHRoYXQgbW9zdCBvZiB0aGUgYWJzdHJhY3Rpb24gYXZhaWxhYmxlIGluCityZWdtYXAgY2FuIGJlIHJldXNlZCwgYWNyb3NzIG11bHRpcGxlIHR5cGVzIG9mIGJ1c2VzLgorCitOVk1FTSBQcm92aWRlcnMKKysrKysrKysrKysrKysrKworCitOVk1FTSBwcm92aWRlciByZWZlcnMgdG8gYW4gZW50aXR5IHRoYXQgaW1wbGVtZW50cyBtZXRob2RzIHRvIGluaXRpYWxpemUsIHJlYWQKK2FuZCB3cml0ZSB0aGUgbm9uLXZvbGF0aWxlIG1lbW9yeS4KKworMi4gUmVnaXN0ZXJpbmcvVW5yZWdpc3RlcmluZyB0aGUgTlZNRU0gcHJvdmlkZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0EgTlZNRU0gcHJvdmlkZXIgY2FuIHJlZ2lzdGVyIHdpdGggTlZNRU0gY29yZSBieSBzdXBwbHlpbmcgcmVsZXZhbnQKK252bWVtIGNvbmZpZ3VyYXRpb24gdG8gbnZtZW1fcmVnaXN0ZXIoKSwgb24gc3VjY2VzcyBjb3JlIHdvdWxkIHJldHVybiBhIHZhbGlkCitudm1lbV9kZXZpY2UgcG9pbnRlci4KKworbnZtZW1fdW5yZWdpc3Rlcihudm1lbSkgaXMgdXNlZCB0byB1bnJlZ2lzdGVyIGEgcHJldmlvdXNseSByZWdpc3RlcmVkIHByb3ZpZGVyLgorCitGb3IgZXhhbXBsZSwgYSBzaW1wbGUgcWZwcm9tIGNhc2U6CisKK3N0YXRpYyBzdHJ1Y3QgbnZtZW1fY29uZmlnIGVjb25maWcgPSB7CisJLm5hbWUgPSAicWZwcm9tIiwKKwkub3duZXIgPSBUSElTX01PRFVMRSwKK307CisKK3N0YXRpYyBpbnQgcWZwcm9tX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJLi4uCisJZWNvbmZpZy5kZXYgPSAmcGRldi0+ZGV2OworCW52bWVtID0gbnZtZW1fcmVnaXN0ZXIoJmVjb25maWcpOworCS4uLgorfQorCitJdCBpcyBtYW5kYXRvcnkgdGhhdCB0aGUgTlZNRU0gcHJvdmlkZXIgaGFzIGEgcmVnbWFwIGFzc29jaWF0ZWQgd2l0aCBpdHMKK3N0cnVjdCBkZXZpY2UuIEZhaWx1cmUgdG8gZG8gd291bGQgcmV0dXJuIGVycm9yIGNvZGUgZnJvbSBudm1lbV9yZWdpc3RlcigpLgorCitOVk1FTSBDb25zdW1lcnMKKysrKysrKysrKysrKysrKworCitOVk1FTSBjb25zdW1lcnMgYXJlIHRoZSBlbnRpdGllcyB3aGljaCBtYWtlIHVzZSBvZiB0aGUgTlZNRU0gcHJvdmlkZXIgdG8KK3JlYWQgZnJvbSBhbmQgdG8gTlZNRU0uCisKKzMuIE5WTUVNIGNlbGwgYmFzZWQgY29uc3VtZXIgQVBJcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK05WTUVNIGNlbGxzIGFyZSB0aGUgZGF0YSBlbnRyaWVzL2ZpZWxkcyBpbiB0aGUgTlZNRU0uCitUaGUgTlZNRU0gZnJhbWV3b3JrIHByb3ZpZGVzIDMgQVBJcyB0byByZWFkL3dyaXRlIE5WTUVNIGNlbGxzLgorCitzdHJ1Y3QgbnZtZW1fY2VsbCAqbnZtZW1fY2VsbF9nZXQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpuYW1lKTsKK3N0cnVjdCBudm1lbV9jZWxsICpkZXZtX252bWVtX2NlbGxfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqbmFtZSk7CisKK3ZvaWQgbnZtZW1fY2VsbF9wdXQoc3RydWN0IG52bWVtX2NlbGwgKmNlbGwpOwordm9pZCBkZXZtX252bWVtX2NlbGxfcHV0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG52bWVtX2NlbGwgKmNlbGwpOworCit2b2lkICpudm1lbV9jZWxsX3JlYWQoc3RydWN0IG52bWVtX2NlbGwgKmNlbGwsIHNzaXplX3QgKmxlbik7CitpbnQgbnZtZW1fY2VsbF93cml0ZShzdHJ1Y3QgbnZtZW1fY2VsbCAqY2VsbCwgdm9pZCAqYnVmLCBzc2l6ZV90IGxlbik7CisKKypudm1lbV9jZWxsX2dldCgpIGFwaXMgd2lsbCBnZXQgYSByZWZlcmVuY2UgdG8gbnZtZW0gY2VsbCBmb3IgYSBnaXZlbiBpZCwKK2FuZCBudm1lbV9jZWxsX3JlYWQvd3JpdGUoKSBjYW4gdGhlbiByZWFkIG9yIHdyaXRlIHRvIHRoZSBjZWxsLgorT25jZSB0aGUgdXNhZ2Ugb2YgdGhlIGNlbGwgaXMgZmluaXNoZWQgdGhlIGNvbnN1bWVyIHNob3VsZCBjYWxsICpudm1lbV9jZWxsX3B1dCgpCit0byBmcmVlIGFsbCB0aGUgYWxsb2NhdGlvbiBtZW1vcnkgZm9yIHRoZSBjZWxsLgorCis0LiBEaXJlY3QgTlZNRU0gZGV2aWNlIGJhc2VkIGNvbnN1bWVyIEFQSXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbiBzb21lIGluc3RhbmNlcyBpdCBpcyBuZWNlc3NhcnkgdG8gZGlyZWN0bHkgcmVhZC93cml0ZSB0aGUgTlZNRU0uCitUbyBmYWNpbGl0YXRlIHN1Y2ggY29uc3VtZXJzIE5WTUVNIGZyYW1ld29yayBwcm92aWRlcyBiZWxvdyBhcGlzLgorCitzdHJ1Y3QgbnZtZW1fZGV2aWNlICpudm1lbV9kZXZpY2VfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqbmFtZSk7CitzdHJ1Y3QgbnZtZW1fZGV2aWNlICpkZXZtX252bWVtX2RldmljZV9nZXQoc3RydWN0IGRldmljZSAqZGV2LAorCQkJCQkgICBjb25zdCBjaGFyICpuYW1lKTsKK3ZvaWQgbnZtZW1fZGV2aWNlX3B1dChzdHJ1Y3QgbnZtZW1fZGV2aWNlICpudm1lbSk7CitpbnQgbnZtZW1fZGV2aWNlX3JlYWQoc3RydWN0IG52bWVtX2RldmljZSAqbnZtZW0sIHVuc2lnbmVkIGludCBvZmZzZXQsCisJCSAgICAgIHNpemVfdCBieXRlcywgdm9pZCAqYnVmKTsKK2ludCBudm1lbV9kZXZpY2Vfd3JpdGUoc3RydWN0IG52bWVtX2RldmljZSAqbnZtZW0sIHVuc2lnbmVkIGludCBvZmZzZXQsCisJCSAgICAgICBzaXplX3QgYnl0ZXMsIHZvaWQgKmJ1Zik7CitpbnQgbnZtZW1fZGV2aWNlX2NlbGxfcmVhZChzdHJ1Y3QgbnZtZW1fZGV2aWNlICpudm1lbSwKKwkJCSAgIHN0cnVjdCBudm1lbV9jZWxsX2luZm8gKmluZm8sIHZvaWQgKmJ1Zik7CitpbnQgbnZtZW1fZGV2aWNlX2NlbGxfd3JpdGUoc3RydWN0IG52bWVtX2RldmljZSAqbnZtZW0sCisJCQkgICAgc3RydWN0IG52bWVtX2NlbGxfaW5mbyAqaW5mbywgdm9pZCAqYnVmKTsKKworQmVmb3JlIHRoZSBjb25zdW1lcnMgY2FuIHJlYWQvd3JpdGUgTlZNRU0gZGlyZWN0bHksIGl0IHNob3VsZCBnZXQgaG9sZAorb2YgbnZtZW1fY29udHJvbGxlciBmcm9tIG9uZSBvZiB0aGUgKm52bWVtX2RldmljZV9nZXQoKSBhcGkuCisKK1RoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlc2UgYXBpcyBhbmQgY2VsbCBiYXNlZCBhcGlzIGlzIHRoYXQgdGhlc2UgYXBpcyBhbHdheXMKK3Rha2UgbnZtZW1fZGV2aWNlIGFzIHBhcmFtZXRlci4KKworNS4gUmVsZWFzaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBOVk1FTQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitXaGVuIGEgY29uc3VtZXJzIG5vIGxvbmdlciBuZWVkcyB0aGUgTlZNRU0sIGl0IGhhcyB0byByZWxlYXNlIHRoZSByZWZlcmVuY2UKK3RvIHRoZSBOVk1FTSBpdCBoYXMgb2J0YWluZWQgdXNpbmcgdGhlIEFQSXMgbWVudGlvbmVkIGluIHRoZSBhYm92ZSBzZWN0aW9uLgorVGhlIE5WTUVNIGZyYW1ld29yayBwcm92aWRlcyAyIEFQSXMgdG8gcmVsZWFzZSBhIHJlZmVyZW5jZSB0byB0aGUgTlZNRU0uCisKK3ZvaWQgbnZtZW1fY2VsbF9wdXQoc3RydWN0IG52bWVtX2NlbGwgKmNlbGwpOwordm9pZCBkZXZtX252bWVtX2NlbGxfcHV0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG52bWVtX2NlbGwgKmNlbGwpOwordm9pZCBudm1lbV9kZXZpY2VfcHV0KHN0cnVjdCBudm1lbV9kZXZpY2UgKm52bWVtKTsKK3ZvaWQgZGV2bV9udm1lbV9kZXZpY2VfcHV0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG52bWVtX2RldmljZSAqbnZtZW0pOworCitCb3RoIHRoZXNlIEFQSXMgYXJlIHVzZWQgdG8gcmVsZWFzZSBhIHJlZmVyZW5jZSB0byB0aGUgTlZNRU0gYW5kCitkZXZtX252bWVtX2NlbGxfcHV0IGFuZCBkZXZtX252bWVtX2RldmljZV9wdXQgZGVzdHJveXMgdGhlIGRldnJlcyBhc3NvY2lhdGVkCit3aXRoIHRoaXMgTlZNRU0uCisKK1VzZXJzcGFjZQorKysrKysrKysrCisKKzYuIFVzZXJzcGFjZSBiaW5hcnkgaW50ZXJmYWNlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVXNlcnNwYWNlIGNhbiByZWFkL3dyaXRlIHRoZSByYXcgTlZNRU0gZmlsZSBsb2NhdGVkIGF0Cisvc3lzL2J1cy9udm1lbS9kZXZpY2VzLyovbnZtZW0KKworZXg6CisKK2hleGR1bXAgL3N5cy9idXMvbnZtZW0vZGV2aWNlcy9xZnByb20wL252bWVtCisKKzAwMDAwMDAgMDAwMCAwMDAwIDAwMDAgMDAwMCAwMDAwIDAwMDAgMDAwMCAwMDAwCisqCiswMDAwMGEwIGRiMTAgMjI0MCAwMDAwIGUwMDAgMGMwMCAwYzAwIDAwMDAgMGMwMAorMDAwMDAwMCAwMDAwIDAwMDAgMDAwMCAwMDAwIDAwMDAgMDAwMCAwMDAwIDAwMDAKKy4uLgorKgorMDAwMTAwMAorCis3LiBEZXZpY2VUcmVlIEJpbmRpbmcKKz09PT09PT09PT09PT09PT09PT09PQorCitTZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL252bWVtL252bWVtLnR4dApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9vb3BzLXRyYWNpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9vb3BzLXRyYWNpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzYWMwNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL29vcHMtdHJhY2luZy50eHQKQEAgLTAsMCArMSwyNzkgQEAKK05PVEU6IGtzeW1vb3BzIGlzIHVzZWxlc3Mgb24gMi42LiAgUGxlYXNlIHVzZSB0aGUgT29wcyBpbiBpdHMgb3JpZ2luYWwgZm9ybWF0CisoZnJvbSBkbWVzZywgZXRjKS4gIElnbm9yZSBhbnkgcmVmZXJlbmNlcyBpbiB0aGlzIG9yIG90aGVyIGRvY3MgdG8gImRlY29kaW5nCit0aGUgT29wcyIgb3IgInJ1bm5pbmcgaXQgdGhyb3VnaCBrc3ltb29wcyIuICBJZiB5b3UgcG9zdCBhbiBPb3BzIGZyb20gMi42IHRoYXQKK2hhcyBiZWVuIHJ1biB0aHJvdWdoIGtzeW1vb3BzLCBwZW9wbGUgd2lsbCBqdXN0IHRlbGwgeW91IHRvIHJlcG9zdCBpdC4KKworUXVpY2sgU3VtbWFyeQorLS0tLS0tLS0tLS0tLQorCitGaW5kIHRoZSBPb3BzIGFuZCBzZW5kIGl0IHRvIHRoZSBtYWludGFpbmVyIG9mIHRoZSBrZXJuZWwgYXJlYSB0aGF0IHNlZW1zIHRvIGJlCitpbnZvbHZlZCB3aXRoIHRoZSBwcm9ibGVtLiAgRG9uJ3Qgd29ycnkgdG9vIG11Y2ggYWJvdXQgZ2V0dGluZyB0aGUgd3JvbmcgcGVyc29uLgorSWYgeW91IGFyZSB1bnN1cmUgc2VuZCBpdCB0byB0aGUgcGVyc29uIHJlc3BvbnNpYmxlIGZvciB0aGUgY29kZSByZWxldmFudCB0bword2hhdCB5b3Ugd2VyZSBkb2luZy4gIElmIGl0IG9jY3VycyByZXBlYXRhYmx5IHRyeSBhbmQgZGVzY3JpYmUgaG93IHRvIHJlY3JlYXRlCitpdC4gIFRoYXQncyB3b3J0aCBldmVuIG1vcmUgdGhhbiB0aGUgb29wcy4KKworSWYgeW91IGFyZSB0b3RhbGx5IHN0dW1wZWQgYXMgdG8gd2hvbSB0byBzZW5kIHRoZSByZXBvcnQsIHNlbmQgaXQgdG8gCitsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnLiBUaGFua3MgZm9yIHlvdXIgaGVscCBpbiBtYWtpbmcgTGludXggYXMKK3N0YWJsZSBhcyBodW1hbmx5IHBvc3NpYmxlLgorCitXaGVyZSBpcyB0aGUgT29wcz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTm9ybWFsbHkgdGhlIE9vcHMgdGV4dCBpcyByZWFkIGZyb20gdGhlIGtlcm5lbCBidWZmZXJzIGJ5IGtsb2dkIGFuZAoraGFuZGVkIHRvIHN5c2xvZ2Qgd2hpY2ggd3JpdGVzIGl0IHRvIGEgc3lzbG9nIGZpbGUsIHR5cGljYWxseQorL3Zhci9sb2cvbWVzc2FnZXMgKGRlcGVuZHMgb24gL2V0Yy9zeXNsb2cuY29uZikuICBTb21ldGltZXMga2xvZ2QgZGllcywKK2luIHdoaWNoIGNhc2UgeW91IGNhbiBydW4gZG1lc2cgPiBmaWxlIHRvIHJlYWQgdGhlIGRhdGEgZnJvbSB0aGUga2VybmVsCitidWZmZXJzIGFuZCBzYXZlIGl0LiAgT3IgeW91IGNhbiBjYXQgL3Byb2Mva21zZyA+IGZpbGUsIGhvd2V2ZXIgeW91CitoYXZlIHRvIGJyZWFrIGluIHRvIHN0b3AgdGhlIHRyYW5zZmVyLCBrbXNnIGlzIGEgIm5ldmVyIGVuZGluZyBmaWxlIi4KK0lmIHRoZSBtYWNoaW5lIGhhcyBjcmFzaGVkIHNvIGJhZGx5IHRoYXQgeW91IGNhbm5vdCBlbnRlciBjb21tYW5kcyBvcgordGhlIGRpc2sgaXMgbm90IGF2YWlsYWJsZSB0aGVuIHlvdSBoYXZlIHRocmVlIG9wdGlvbnMgOi0KKworKDEpIEhhbmQgY29weSB0aGUgdGV4dCBmcm9tIHRoZSBzY3JlZW4gYW5kIHR5cGUgaXQgaW4gYWZ0ZXIgdGhlIG1hY2hpbmUKKyAgICBoYXMgcmVzdGFydGVkLiAgTWVzc3kgYnV0IGl0IGlzIHRoZSBvbmx5IG9wdGlvbiBpZiB5b3UgaGF2ZSBub3QKKyAgICBwbGFubmVkIGZvciBhIGNyYXNoLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHRha2UgYSBwaWN0dXJlIG9mCisgICAgdGhlIHNjcmVlbiB3aXRoIGEgZGlnaXRhbCBjYW1lcmEgLSBub3QgbmljZSwgYnV0IGJldHRlciB0aGFuCisgICAgbm90aGluZy4gIElmIHRoZSBtZXNzYWdlcyBzY3JvbGwgb2ZmIHRoZSB0b3Agb2YgdGhlIGNvbnNvbGUsIHlvdQorICAgIG1heSBmaW5kIHRoYXQgYm9vdGluZyB3aXRoIGEgaGlnaGVyIHJlc29sdXRpb24gKGVnLCB2Z2E9NzkxKQorICAgIHdpbGwgYWxsb3cgeW91IHRvIHJlYWQgbW9yZSBvZiB0aGUgdGV4dC4gKENhdmVhdDogVGhpcyBuZWVkcyB2ZXNhZmIsCisgICAgc28gd29uJ3QgaGVscCBmb3IgJ2Vhcmx5JyBvb3BzZXMpCisKKygyKSBCb290IHdpdGggYSBzZXJpYWwgY29uc29sZSAoc2VlIERvY3VtZW50YXRpb24vc2VyaWFsLWNvbnNvbGUudHh0KSwKKyAgICBydW4gYSBudWxsIG1vZGVtIHRvIGEgc2Vjb25kIG1hY2hpbmUgYW5kIGNhcHR1cmUgdGhlIG91dHB1dCB0aGVyZQorICAgIHVzaW5nIHlvdXIgZmF2b3VyaXRlIGNvbW11bmljYXRpb24gcHJvZ3JhbS4gIE1pbmljb20gd29ya3Mgd2VsbC4KKworKDMpIFVzZSBLZHVtcCAoc2VlIERvY3VtZW50YXRpb24va2R1bXAva2R1bXAudHh0KSwKKyAgICBleHRyYWN0IHRoZSBrZXJuZWwgcmluZyBidWZmZXIgZnJvbSBvbGQgbWVtb3J5IHdpdGggdXNpbmcgZG1lc2cKKyAgICBnZGJtYWNybyBpbiBEb2N1bWVudGF0aW9uL2tkdW1wL2dkYm1hY3Jvcy50eHQuCisKKworRnVsbCBJbmZvcm1hdGlvbgorLS0tLS0tLS0tLS0tLS0tLQorCitOT1RFOiB0aGUgbWVzc2FnZSBmcm9tIExpbnVzIGJlbG93IGFwcGxpZXMgdG8gMi40IGtlcm5lbC4gIEkgaGF2ZSBwcmVzZXJ2ZWQgaXQKK2ZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIGFuZCBiZWNhdXNlIHNvbWUgb2YgdGhlIGluZm9ybWF0aW9uIGluIGl0IHN0aWxsCithcHBsaWVzLiAgRXNwZWNpYWxseSwgcGxlYXNlIGlnbm9yZSBhbnkgcmVmZXJlbmNlcyB0byBrc3ltb29wcy4gCisKK0Zyb206IExpbnVzIFRvcnZhbGRzIDx0b3J2YWxkc0Bvc2RsLm9yZz4KKworSG93IHRvIHRyYWNrIGRvd24gYW4gT29wcy4uIFtvcmlnaW5hbGx5IGEgbWFpbCB0byBsaW51eC1rZXJuZWxdCisKK1RoZSBtYWluIHRyaWNrIGlzIGhhdmluZyA1IHllYXJzIG9mIGV4cGVyaWVuY2Ugd2l0aCB0aG9zZSBwZXNreSBvb3BzIAorbWVzc2FnZXMgOy0pCisKK0FjdHVhbGx5LCB0aGVyZSBhcmUgdGhpbmdzIHlvdSBjYW4gZG8gdGhhdCBtYWtlIHRoaXMgZWFzaWVyLiBJIGhhdmUgdHdvIAorc2VwYXJhdGUgYXBwcm9hY2hlczoKKworCWdkYiAvdXNyL3NyYy9saW51eC92bWxpbnV4CisJZ2RiPiBkaXNhc3NlbWJsZSA8b2ZmZW5kaW5nX2Z1bmN0aW9uPgorCitUaGF0J3MgdGhlIGVhc3kgd2F5IHRvIGZpbmQgdGhlIHByb2JsZW0sIGF0IGxlYXN0IGlmIHRoZSBidWctcmVwb3J0IGlzIAord2VsbCBtYWRlIChsaWtlIHRoaXMgb25lIHdhcyAtIHJ1biB0aHJvdWdoIGtzeW1vb3BzIHRvIGdldCB0aGUgCitpbmZvcm1hdGlvbiBvZiB3aGljaCBmdW5jdGlvbiBhbmQgdGhlIG9mZnNldCBpbiB0aGUgZnVuY3Rpb24gdGhhdCBpdCAKK2hhcHBlbmVkIGluKS4KKworT2gsIGl0IGhlbHBzIGlmIHRoZSByZXBvcnQgaGFwcGVucyBvbiBhIGtlcm5lbCB0aGF0IGlzIGNvbXBpbGVkIHdpdGggdGhlIAorc2FtZSBjb21waWxlciBhbmQgc2ltaWxhciBzZXR1cHMuCisKK1RoZSBvdGhlciB0aGluZyB0byBkbyBpcyBkaXNhc3NlbWJsZSB0aGUgIkNvZGU6IiBwYXJ0IG9mIHRoZSBidWcgcmVwb3J0OiAKK2tzeW1vb3BzIHdpbGwgZG8gdGhpcyB0b28gd2l0aCB0aGUgY29ycmVjdCB0b29scywgYnV0IGlmIHlvdSBkb24ndCBoYXZlCit0aGUgdG9vbHMgeW91IGNhbiBqdXN0IGRvIGEgc2lsbHkgcHJvZ3JhbToKKworCWNoYXIgc3RyW10gPSAiXHhYWFx4WFhceFhYLi4uIjsKKwltYWluKCl7fQorCithbmQgY29tcGlsZSBpdCB3aXRoIGdjYyAtZyBhbmQgdGhlbiBkbyAiZGlzYXNzZW1ibGUgc3RyIiAod2hlcmUgdGhlICJYWCIgCitzdHVmZiBhcmUgdGhlIHZhbHVlcyByZXBvcnRlZCBieSB0aGUgT29wcyAtIHlvdSBjYW4ganVzdCBjdXQtYW5kLXBhc3RlIAorYW5kIGRvIGEgcmVwbGFjZSBvZiBzcGFjZXMgdG8gIlx4IiAtIHRoYXQncyB3aGF0IEkgZG8sIGFzIEknbSB0b28gbGF6eSAKK3RvIHdyaXRlIGEgcHJvZ3JhbSB0byBhdXRvbWF0ZSB0aGlzIGFsbCkuCisKK0FsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHRoZSBzaGVsbCBzY3JpcHQgaW4gc2NyaXB0cy9kZWNvZGVjb2RlLgorSXRzIHVzYWdlIGlzOiAgZGVjb2RlY29kZSA8IG9vcHMudHh0CisKK1RoZSBoZXggYnl0ZXMgdGhhdCBmb2xsb3cgIkNvZGU6IiBtYXkgKGluIHNvbWUgYXJjaGl0ZWN0dXJlcykgaGF2ZSBhIHNlcmllcworb2YgYnl0ZXMgdGhhdCBwcmVjZWRlIHRoZSBjdXJyZW50IGluc3RydWN0aW9uIHBvaW50ZXIgYXMgd2VsbCBhcyBieXRlcyBhdCBhbmQKK2ZvbGxvd2luZyB0aGUgY3VycmVudCBpbnN0cnVjdGlvbiBwb2ludGVyLiAgSW4gc29tZSBjYXNlcywgb25lIGluc3RydWN0aW9uCitieXRlIG9yIHdvcmQgaXMgc3Vycm91bmRlZCBieSA8PiBvciAoKSwgYXMgaW4gIjw4Nj4iIG9yICIoZjAwZCkiLiAgVGhlc2UKKzw+IG9yICgpIG1hcmtpbmdzIGluZGljYXRlIHRoZSBjdXJyZW50IGluc3RydWN0aW9uIHBvaW50ZXIuICBFeGFtcGxlIGZyb20KK2kzODYsIHNwbGl0IGludG8gbXVsdGlwbGUgbGluZXMgZm9yIHJlYWRhYmlsaXR5OgorCitDb2RlOiBmOSAwZiA4ZCBmOSAwMCAwMCAwMCA4ZCA0MiAwYyBlOCBkZCAyNiAxMSBjNyBhMSA2MCBlYSAyYiBmOSA4YiA1MCAwOCBhMQorNjQgZWEgMmIgZjkgOGQgMzQgODIgOGIgMWUgODUgZGIgNzQgNmQgOGIgMTUgNjAgZWEgMmIgZjkgPDhiPiA0MyAwNCAzOSA0MiA1NAorN2UgMDQgNDAgODkgNDIgNTQgOGIgNDMgMDQgM2IgMDUgMDAgZjYgNTIgYzAKKworRmluYWxseSwgaWYgeW91IHdhbnQgdG8gc2VlIHdoZXJlIHRoZSBjb2RlIGNvbWVzIGZyb20sIHlvdSBjYW4gZG8KKworCWNkIC91c3Ivc3JjL2xpbnV4CisJbWFrZSBmcy9idWZmZXIucyAJIyBvciB3aGF0ZXZlciBmaWxlIHRoZSBidWcgaGFwcGVuZWQgaW4KKworYW5kIHRoZW4geW91IGdldCBhIGJldHRlciBpZGVhIG9mIHdoYXQgaGFwcGVucyB0aGFuIHdpdGggdGhlIGdkYiAKK2Rpc2Fzc2VtYmx5LgorCitOb3csIHRoZSB0cmljayBpcyBqdXN0IHRoZW4gdG8gY29tYmluZSBhbGwgdGhlIGRhdGEgeW91IGhhdmU6IHRoZSBDIAorc291cmNlcyAoYW5kIGdlbmVyYWwga25vd2xlZGdlIG9mIHdoYXQgaXQgX3Nob3VsZF8gZG8pLCB0aGUgYXNzZW1ibHkgCitsaXN0aW5nIGFuZCB0aGUgY29kZSBkaXNhc3NlbWJseSAoYW5kIGFkZGl0aW9uYWxseSB0aGUgcmVnaXN0ZXIgZHVtcCB5b3UgCithbHNvIGdldCBmcm9tIHRoZSAib29wcyIgbWVzc2FnZSAtIHRoYXQgY2FuIGJlIHVzZWZ1bCB0byBzZWUgX3doYXRfIHRoZSAKK2NvcnJ1cHRlZCBwb2ludGVycyB3ZXJlLCBhbmQgd2hlbiB5b3UgaGF2ZSB0aGUgYXNzZW1ibGVyIGxpc3RpbmcgeW91IGNhbiAKK2Fsc28gbWF0Y2ggdGhlIG90aGVyIHJlZ2lzdGVycyB0byB3aGF0ZXZlciBDIGV4cHJlc3Npb25zIHRoZXkgd2VyZSB1c2VkIAorZm9yKS4KKworRXNzZW50aWFsbHksIHlvdSBqdXN0IGxvb2sgYXQgd2hhdCBkb2Vzbid0IG1hdGNoIChpbiB0aGlzIGNhc2UgaXQgd2FzIHRoZSAKKyJDb2RlIiBkaXNhc3NlbWJseSB0aGF0IGRpZG4ndCBtYXRjaCB3aXRoIHdoYXQgdGhlIGNvbXBpbGVyIGdlbmVyYXRlZCkuIAorVGhlbiB5b3UgbmVlZCB0byBmaW5kIG91dCBfd2h5XyB0aGV5IGRvbid0IG1hdGNoLiBPZnRlbiBpdCdzIHNpbXBsZSAtIHlvdSAKK3NlZSB0aGF0IHRoZSBjb2RlIHVzZXMgYSBOVUxMIHBvaW50ZXIgYW5kIHRoZW4geW91IGxvb2sgYXQgdGhlIGNvZGUgYW5kIAord29uZGVyIGhvdyB0aGUgTlVMTCBwb2ludGVyIGdvdCB0aGVyZSwgYW5kIGlmIGl0J3MgYSB2YWxpZCB0aGluZyB0byBkbyAKK3lvdSBqdXN0IGNoZWNrIGFnYWluc3QgaXQuLgorCitOb3csIGlmIHNvbWVib2R5IGdldHMgdGhlIGlkZWEgdGhhdCB0aGlzIGlzIHRpbWUtY29uc3VtaW5nIGFuZCByZXF1aXJlcyAKK3NvbWUgc21hbGwgYW1vdW50IG9mIGNvbmNlbnRyYXRpb24sIHlvdSdyZSByaWdodC4gV2hpY2ggaXMgd2h5IEkgd2lsbCAKK21vc3RseSBqdXN0IGlnbm9yZSBhbnkgcGFuaWMgcmVwb3J0cyB0aGF0IGRvbid0IGhhdmUgdGhlIHN5bWJvbCB0YWJsZSAKK2luZm8gZXRjIGxvb2tlZCB1cDogaXQgc2ltcGx5IGdldHMgdG9vIGhhcmQgdG8gbG9vayBpdCB1cCAoSSBoYXZlIHNvbWUgCitwcm9ncmFtcyB0byBzZWFyY2ggZm9yIHNwZWNpZmljIHBhdHRlcm5zIGluIHRoZSBrZXJuZWwgY29kZSBzZWdtZW50LCBhbmQgCitzb21ldGltZXMgSSBoYXZlIGJlZW4gYWJsZSB0byBsb29rIHVwIHRob3NlIGtpbmRzIG9mIHBhbmljcyB0b28sIGJ1dCAKK3RoYXQgcmVhbGx5IHJlcXVpcmVzIHByZXR0eSBnb29kIGtub3dsZWRnZSBvZiB0aGUga2VybmVsIGp1c3QgdG8gYmUgYWJsZSAKK3RvIHBpY2sgb3V0IHRoZSByaWdodCBzZXF1ZW5jZXMgZXRjLi4pCisKK19Tb21ldGltZXNfIGl0IGhhcHBlbnMgdGhhdCBJIGp1c3Qgc2VlIHRoZSBkaXNhc3NlbWJsZWQgY29kZSBzZXF1ZW5jZSAKK2Zyb20gdGhlIHBhbmljLCBhbmQgSSBrbm93IGltbWVkaWF0ZWx5IHdoZXJlIGl0J3MgY29taW5nIGZyb20uIFRoYXQncyB3aGVuIAorSSBnZXQgd29ycmllZCB0aGF0IEkndmUgYmVlbiBkb2luZyB0aGlzIGZvciB0b28gbG9uZyA7LSkKKworCQlMaW51cworCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTm90ZXMgb24gT29wcyB0cmFjaW5nIHdpdGgga2xvZ2Q6CisKK0luIG9yZGVyIHRvIGhlbHAgTGludXMgYW5kIHRoZSBvdGhlciBrZXJuZWwgZGV2ZWxvcGVycyB0aGVyZSBoYXMgYmVlbgorc3Vic3RhbnRpYWwgc3VwcG9ydCBpbmNvcnBvcmF0ZWQgaW50byBrbG9nZCBmb3IgcHJvY2Vzc2luZyBwcm90ZWN0aW9uCitmYXVsdHMuICBJbiBvcmRlciB0byBoYXZlIGZ1bGwgc3VwcG9ydCBmb3IgYWRkcmVzcyByZXNvbHV0aW9uIGF0IGxlYXN0Cit2ZXJzaW9uIDEuMy1wbDMgb2YgdGhlIHN5c2tsb2dkIHBhY2thZ2Ugc2hvdWxkIGJlIHVzZWQuCisKK1doZW4gYSBwcm90ZWN0aW9uIGZhdWx0IG9jY3VycyB0aGUga2xvZ2QgZGFlbW9uIGF1dG9tYXRpY2FsbHkKK3RyYW5zbGF0ZXMgaW1wb3J0YW50IGFkZHJlc3NlcyBpbiB0aGUga2VybmVsIGxvZyBtZXNzYWdlcyB0byB0aGVpcgorc3ltYm9saWMgZXF1aXZhbGVudHMuICBUaGlzIHRyYW5zbGF0ZWQga2VybmVsIG1lc3NhZ2UgaXMgdGhlbgorZm9yd2FyZGVkIHRocm91Z2ggd2hhdGV2ZXIgcmVwb3J0aW5nIG1lY2hhbmlzbSBrbG9nZCBpcyB1c2luZy4gIFRoZQorcHJvdGVjdGlvbiBmYXVsdCBtZXNzYWdlIGNhbiBiZSBzaW1wbHkgY3V0IG91dCBvZiB0aGUgbWVzc2FnZSBmaWxlcworYW5kIGZvcndhcmRlZCB0byB0aGUga2VybmVsIGRldmVsb3BlcnMuCisKK1R3byB0eXBlcyBvZiBhZGRyZXNzIHJlc29sdXRpb24gYXJlIHBlcmZvcm1lZCBieSBrbG9nZC4gIFRoZSBmaXJzdCBpcworc3RhdGljIHRyYW5zbGF0aW9uIGFuZCB0aGUgc2Vjb25kIGlzIGR5bmFtaWMgdHJhbnNsYXRpb24uICBTdGF0aWMKK3RyYW5zbGF0aW9uIHVzZXMgdGhlIFN5c3RlbS5tYXAgZmlsZSBpbiBtdWNoIHRoZSBzYW1lIG1hbm5lciB0aGF0Citrc3ltb29wcyBkb2VzLiAgSW4gb3JkZXIgdG8gZG8gc3RhdGljIHRyYW5zbGF0aW9uIHRoZSBrbG9nZCBkYWVtb24KK211c3QgYmUgYWJsZSB0byBmaW5kIGEgc3lzdGVtIG1hcCBmaWxlIGF0IGRhZW1vbiBpbml0aWFsaXphdGlvbiB0aW1lLgorU2VlIHRoZSBrbG9nZCBtYW4gcGFnZSBmb3IgaW5mb3JtYXRpb24gb24gaG93IGtsb2dkIHNlYXJjaGVzIGZvciBtYXAKK2ZpbGVzLgorCitEeW5hbWljIGFkZHJlc3MgdHJhbnNsYXRpb24gaXMgaW1wb3J0YW50IHdoZW4ga2VybmVsIGxvYWRhYmxlIG1vZHVsZXMKK2FyZSBiZWluZyB1c2VkLiAgU2luY2UgbWVtb3J5IGZvciBrZXJuZWwgbW9kdWxlcyBpcyBhbGxvY2F0ZWQgZnJvbSB0aGUKK2tlcm5lbCdzIGR5bmFtaWMgbWVtb3J5IHBvb2xzIHRoZXJlIGFyZSBubyBmaXhlZCBsb2NhdGlvbnMgZm9yIGVpdGhlcgordGhlIHN0YXJ0IG9mIHRoZSBtb2R1bGUgb3IgZm9yIGZ1bmN0aW9ucyBhbmQgc3ltYm9scyBpbiB0aGUgbW9kdWxlLgorCitUaGUga2VybmVsIHN1cHBvcnRzIHN5c3RlbSBjYWxscyB3aGljaCBhbGxvdyBhIHByb2dyYW0gdG8gZGV0ZXJtaW5lCit3aGljaCBtb2R1bGVzIGFyZSBsb2FkZWQgYW5kIHRoZWlyIGxvY2F0aW9uIGluIG1lbW9yeS4gIFVzaW5nIHRoZXNlCitzeXN0ZW0gY2FsbHMgdGhlIGtsb2dkIGRhZW1vbiBidWlsZHMgYSBzeW1ib2wgdGFibGUgd2hpY2ggY2FuIGJlIHVzZWQKK3RvIGRlYnVnIGEgcHJvdGVjdGlvbiBmYXVsdCB3aGljaCBvY2N1cnMgaW4gYSBsb2FkYWJsZSBrZXJuZWwgbW9kdWxlLgorCitBdCB0aGUgdmVyeSBtaW5pbXVtIGtsb2dkIHdpbGwgcHJvdmlkZSB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHdoaWNoCitnZW5lcmF0ZWQgdGhlIHByb3RlY3Rpb24gZmF1bHQuICBUaGVyZSBtYXkgYmUgYWRkaXRpb25hbCBzeW1ib2xpYworaW5mb3JtYXRpb24gYXZhaWxhYmxlIGlmIHRoZSBkZXZlbG9wZXIgb2YgdGhlIGxvYWRhYmxlIG1vZHVsZSBjaG9zZSB0bworZXhwb3J0IHN5bWJvbCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBtb2R1bGUuCisKK1NpbmNlIHRoZSBrZXJuZWwgbW9kdWxlIGVudmlyb25tZW50IGNhbiBiZSBkeW5hbWljIHRoZXJlIG11c3QgYmUgYQorbWVjaGFuaXNtIGZvciBub3RpZnlpbmcgdGhlIGtsb2dkIGRhZW1vbiB3aGVuIGEgY2hhbmdlIGluIG1vZHVsZQorZW52aXJvbm1lbnQgb2NjdXJzLiAgVGhlcmUgYXJlIGNvbW1hbmQgbGluZSBvcHRpb25zIGF2YWlsYWJsZSB3aGljaAorYWxsb3cga2xvZ2QgdG8gc2lnbmFsIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIGRhZW1vbiB0aGF0IHN5bWJvbAoraW5mb3JtYXRpb24gc2hvdWxkIGJlIHJlZnJlc2hlZC4gIFNlZSB0aGUga2xvZ2QgbWFudWFsIHBhZ2UgZm9yIG1vcmUKK2luZm9ybWF0aW9uLgorCitBIHBhdGNoIGlzIGluY2x1ZGVkIHdpdGggdGhlIHN5c2tsb2dkIGRpc3RyaWJ1dGlvbiB3aGljaCBtb2RpZmllcyB0aGUKK21vZHVsZXMtMi4wLjAgcGFja2FnZSB0byBhdXRvbWF0aWNhbGx5IHNpZ25hbCBrbG9nZCB3aGVuZXZlciBhIG1vZHVsZQoraXMgbG9hZGVkIG9yIHVubG9hZGVkLiAgQXBwbHlpbmcgdGhpcyBwYXRjaCBwcm92aWRlcyBlc3NlbnRpYWxseQorc2VhbWxlc3Mgc3VwcG9ydCBmb3IgZGVidWdnaW5nIHByb3RlY3Rpb24gZmF1bHRzIHdoaWNoIG9jY3VyIHdpdGgKK2tlcm5lbCBsb2FkYWJsZSBtb2R1bGVzLgorCitUaGUgZm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgb2YgYSBwcm90ZWN0aW9uIGZhdWx0IGluIGEgbG9hZGFibGUgbW9kdWxlCitwcm9jZXNzZWQgYnkga2xvZ2Q6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0F1ZyAyOSAwOTo1MTowMSBibGl6YXJkIGtlcm5lbDogVW5hYmxlIHRvIGhhbmRsZSBrZXJuZWwgcGFnaW5nIHJlcXVlc3QgYXQgdmlydHVhbCBhZGRyZXNzIGYxNWU5N2NjCitBdWcgMjkgMDk6NTE6MDEgYmxpemFyZCBrZXJuZWw6IGN1cnJlbnQtPnRzcy5jcjMgPSAwMDYyZDAwMCwgJWNyMyA9IDAwNjJkMDAwCitBdWcgMjkgMDk6NTE6MDEgYmxpemFyZCBrZXJuZWw6ICpwZGUgPSAwMDAwMDAwMAorQXVnIDI5IDA5OjUxOjAxIGJsaXphcmQga2VybmVsOiBPb3BzOiAwMDAyCitBdWcgMjkgMDk6NTE6MDEgYmxpemFyZCBrZXJuZWw6IENQVTogICAgMAorQXVnIDI5IDA5OjUxOjAxIGJsaXphcmQga2VybmVsOiBFSVA6ICAgIDAwMTA6W29vcHM6X29vcHMrMTYvMzg2OF0KK0F1ZyAyOSAwOTo1MTowMSBibGl6YXJkIGtlcm5lbDogRUZMQUdTOiAwMDAxMDIxMgorQXVnIDI5IDA5OjUxOjAxIGJsaXphcmQga2VybmVsOiBlYXg6IDMxNWU5N2NjICAgZWJ4OiAwMDNhNmY4MCAgIGVjeDogMDAxYmU3N2IgICBlZHg6IDAwMjM3YzBjCitBdWcgMjkgMDk6NTE6MDEgYmxpemFyZCBrZXJuZWw6IGVzaTogMDAwMDAwMDAgICBlZGk6IGJmZmZmZGIzICAgZWJwOiAwMDU4OWY5MCAgIGVzcDogMDA1ODlmOGMKK0F1ZyAyOSAwOTo1MTowMSBibGl6YXJkIGtlcm5lbDogZHM6IDAwMTggICBlczogMDAxOCAgIGZzOiAwMDJiICAgZ3M6IDAwMmIgICBzczogMDAxOAorQXVnIDI5IDA5OjUxOjAxIGJsaXphcmQga2VybmVsOiBQcm9jZXNzIG9vcHNfdGVzdCAocGlkOiAzMzc0LCBwcm9jZXNzIG5yOiAyMSwgc3RhY2twYWdlPTAwNTg5MDAwKQorQXVnIDI5IDA5OjUxOjAxIGJsaXphcmQga2VybmVsOiBTdGFjazogMzE1ZTk3Y2MgMDA1ODlmOTggMDEwMGIwYjQgYmZmZmZlZDQgMDAxMmUzOGUgMDAyNDBjNjQgMDAzYTZmODAgMDAwMDAwMDEgCitBdWcgMjkgMDk6NTE6MDEgYmxpemFyZCBrZXJuZWw6ICAgICAgICAwMDAwMDAwMCAwMDIzNzgxMCBiZmZmZmYwMCAwMDEwYTdmYSAwMDAwMDAwMyAwMDAwMDAwMSAwMDAwMDAwMCBiZmZmZmYwMCAKK0F1ZyAyOSAwOTo1MTowMSBibGl6YXJkIGtlcm5lbDogICAgICAgIGJmZmZmZGIzIGJmZmZmZWQ0IGZmZmZmZmRhIDAwMDAwMDJiIDAwMDcwMDJiIDAwMDAwMDJiIDAwMDAwMDJiIDAwMDAwMDM2IAorQXVnIDI5IDA5OjUxOjAxIGJsaXphcmQga2VybmVsOiBDYWxsIFRyYWNlOiBbb29wczpfb29wc19pb2N0bCs0OC84MF0gW19zeXNfaW9jdGwrMjU0LzI3Ml0gW19zeXN0ZW1fY2FsbCs4Mi8xMjhdIAorQXVnIDI5IDA5OjUxOjAxIGJsaXphcmQga2VybmVsOiBDb2RlOiBjNyAwMCAwNSAwMCAwMCAwMCBlYiAwOCA5MCA5MCA5MCA5MCA5MCA5MCA5MCA5MCA4OSBlYyA1ZCBjMyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEci4gRy5XLiBXZXR0c3RlaW4gICAgICAgICAgIE9uY29sb2d5IFJlc2VhcmNoIERpdi4gQ29tcHV0aW5nIEZhY2lsaXR5CitSb2dlciBNYXJpcyBDYW5jZXIgQ2VudGVyICAgIElOVEVSTkVUOiBncmVnQHdpbmQucm1jYy5jb20KKzgyMCA0dGggU3QuIE4uCitGYXJnbywgTkQgIDU4MTIyCitQaG9uZTogNzAxLTIzNC03NTU2CisKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUYWludGVkIGtlcm5lbHM6CisKK1NvbWUgb29wcyByZXBvcnRzIGNvbnRhaW4gdGhlIHN0cmluZyAnVGFpbnRlZDogJyBhZnRlciB0aGUgcHJvZ3JhbQorY291bnRlci4gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUga2VybmVsIGhhcyBiZWVuIHRhaW50ZWQgYnkgc29tZQorbWVjaGFuaXNtLiAgVGhlIHN0cmluZyBpcyBmb2xsb3dlZCBieSBhIHNlcmllcyBvZiBwb3NpdGlvbi1zZW5zaXRpdmUKK2NoYXJhY3RlcnMsIGVhY2ggcmVwcmVzZW50aW5nIGEgcGFydGljdWxhciB0YWludGVkIHZhbHVlLgorCisgIDE6ICdHJyBpZiBhbGwgbW9kdWxlcyBsb2FkZWQgaGF2ZSBhIEdQTCBvciBjb21wYXRpYmxlIGxpY2Vuc2UsICdQJyBpZgorICAgICBhbnkgcHJvcHJpZXRhcnkgbW9kdWxlIGhhcyBiZWVuIGxvYWRlZC4gIE1vZHVsZXMgd2l0aG91dCBhCisgICAgIE1PRFVMRV9MSUNFTlNFIG9yIHdpdGggYSBNT0RVTEVfTElDRU5TRSB0aGF0IGlzIG5vdCByZWNvZ25pc2VkIGJ5CisgICAgIGluc21vZCBhcyBHUEwgY29tcGF0aWJsZSBhcmUgYXNzdW1lZCB0byBiZSBwcm9wcmlldGFyeS4KKworICAyOiAnRicgaWYgYW55IG1vZHVsZSB3YXMgZm9yY2UgbG9hZGVkIGJ5ICJpbnNtb2QgLWYiLCAnICcgaWYgYWxsCisgICAgIG1vZHVsZXMgd2VyZSBsb2FkZWQgbm9ybWFsbHkuCisKKyAgMzogJ1MnIGlmIHRoZSBvb3BzIG9jY3VycmVkIG9uIGFuIFNNUCBrZXJuZWwgcnVubmluZyBvbiBoYXJkd2FyZSB0aGF0CisgICAgIGhhc24ndCBiZWVuIGNlcnRpZmllZCBhcyBzYWZlIHRvIHJ1biBtdWx0aXByb2Nlc3Nvci4KKyAgICAgQ3VycmVudGx5IHRoaXMgb2NjdXJzIG9ubHkgb24gdmFyaW91cyBBdGhsb25zIHRoYXQgYXJlIG5vdAorICAgICBTTVAgY2FwYWJsZS4KKworICA0OiAnUicgaWYgYSBtb2R1bGUgd2FzIGZvcmNlIHVubG9hZGVkIGJ5ICJybW1vZCAtZiIsICcgJyBpZiBhbGwKKyAgICAgbW9kdWxlcyB3ZXJlIHVubG9hZGVkIG5vcm1hbGx5LgorCisgIDU6ICdNJyBpZiBhbnkgcHJvY2Vzc29yIGhhcyByZXBvcnRlZCBhIE1hY2hpbmUgQ2hlY2sgRXhjZXB0aW9uLAorICAgICAnICcgaWYgbm8gTWFjaGluZSBDaGVjayBFeGNlcHRpb25zIGhhdmUgb2NjdXJyZWQuCisKKyAgNjogJ0InIGlmIGEgcGFnZS1yZWxlYXNlIGZ1bmN0aW9uIGhhcyBmb3VuZCBhIGJhZCBwYWdlIHJlZmVyZW5jZSBvcgorICAgICBzb21lIHVuZXhwZWN0ZWQgcGFnZSBmbGFncy4KKworICA3OiAnVScgaWYgYSB1c2VyIG9yIHVzZXIgYXBwbGljYXRpb24gc3BlY2lmaWNhbGx5IHJlcXVlc3RlZCB0aGF0IHRoZQorICAgICBUYWludGVkIGZsYWcgYmUgc2V0LCAnICcgb3RoZXJ3aXNlLgorCisgIDg6ICdEJyBpZiB0aGUga2VybmVsIGhhcyBkaWVkIHJlY2VudGx5LCBpLmUuIHRoZXJlIHdhcyBhbiBPT1BTIG9yIEJVRy4KKworICA5OiAnQScgaWYgdGhlIEFDUEkgdGFibGUgaGFzIGJlZW4gb3ZlcnJpZGRlbi4KKworIDEwOiAnVycgaWYgYSB3YXJuaW5nIGhhcyBwcmV2aW91c2x5IGJlZW4gaXNzdWVkIGJ5IHRoZSBrZXJuZWwuCisgICAgIChUaG91Z2ggc29tZSB3YXJuaW5ncyBtYXkgc2V0IG1vcmUgc3BlY2lmaWMgdGFpbnQgZmxhZ3MuKQorCisgMTE6ICdDJyBpZiBhIHN0YWdpbmcgZHJpdmVyIGhhcyBiZWVuIGxvYWRlZC4KKworIDEyOiAnSScgaWYgdGhlIGtlcm5lbCBpcyB3b3JraW5nIGFyb3VuZCBhIHNldmVyZSBidWcgaW4gdGhlIHBsYXRmb3JtCisgICAgIGZpcm13YXJlIChCSU9TIG9yIHNpbWlsYXIpLgorCisgMTM6ICdPJyBpZiBhbiBleHRlcm5hbGx5LWJ1aWx0ICgib3V0LW9mLXRyZWUiKSBtb2R1bGUgaGFzIGJlZW4gbG9hZGVkLgorCisgMTQ6ICdFJyBpZiBhbiB1bnNpZ25lZCBtb2R1bGUgaGFzIGJlZW4gbG9hZGVkIGluIGEga2VybmVsIHN1cHBvcnRpbmcKKyAgICAgbW9kdWxlIHNpZ25hdHVyZS4KKworIDE1OiAnTCcgaWYgYSBzb2Z0IGxvY2t1cCBoYXMgcHJldmlvdXNseSBvY2N1cnJlZCBvbiB0aGUgc3lzdGVtLgorCisgMTY6ICdLJyBpZiB0aGUga2VybmVsIGhhcyBiZWVuIGxpdmUgcGF0Y2hlZC4KKworVGhlIHByaW1hcnkgcmVhc29uIGZvciB0aGUgJ1RhaW50ZWQ6ICcgc3RyaW5nIGlzIHRvIHRlbGwga2VybmVsCitkZWJ1Z2dlcnMgaWYgdGhpcyBpcyBhIGNsZWFuIGtlcm5lbCBvciBpZiBhbnl0aGluZyB1bnVzdWFsIGhhcworb2NjdXJyZWQuICBUYWludGluZyBpcyBwZXJtYW5lbnQ6IGV2ZW4gaWYgYW4gb2ZmZW5kaW5nIG1vZHVsZSBpcwordW5sb2FkZWQsIHRoZSB0YWludGVkIHZhbHVlIHJlbWFpbnMgdG8gaW5kaWNhdGUgdGhhdCB0aGUga2VybmVsIGlzIG5vdAordHJ1c3R3b3J0aHkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3BhZGF0YS50eHQgYi9Eb2N1bWVudGF0aW9uL3BhZGF0YS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RkZmUyMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcGFkYXRhLnR4dApAQCAtMCwwICsxLDE2MCBAQAorVGhlIHBhZGF0YSBwYXJhbGxlbCBleGVjdXRpb24gbWVjaGFuaXNtCitMYXN0IHVwZGF0ZWQgZm9yIDIuNi4zNgorCitQYWRhdGEgaXMgYSBtZWNoYW5pc20gYnkgd2hpY2ggdGhlIGtlcm5lbCBjYW4gZmFybSB3b3JrIG91dCB0byBiZSBkb25lIGluCitwYXJhbGxlbCBvbiBtdWx0aXBsZSBDUFVzIHdoaWxlIHJldGFpbmluZyB0aGUgb3JkZXJpbmcgb2YgdGFza3MuICBJdCB3YXMKK2RldmVsb3BlZCBmb3IgdXNlIHdpdGggdGhlIElQc2VjIGNvZGUsIHdoaWNoIG5lZWRzIHRvIGJlIGFibGUgdG8gcGVyZm9ybQorZW5jcnlwdGlvbiBhbmQgZGVjcnlwdGlvbiBvbiBsYXJnZSBudW1iZXJzIG9mIHBhY2tldHMgd2l0aG91dCByZW9yZGVyaW5nCit0aG9zZSBwYWNrZXRzLiAgVGhlIGNyeXB0byBkZXZlbG9wZXJzIG1hZGUgYSBwb2ludCBvZiB3cml0aW5nIHBhZGF0YSBpbiBhCitzdWZmaWNpZW50bHkgZ2VuZXJhbCBmYXNoaW9uIHRoYXQgaXQgY291bGQgYmUgcHV0IHRvIG90aGVyIHVzZXMgYXMgd2VsbC4KKworVGhlIGZpcnN0IHN0ZXAgaW4gdXNpbmcgcGFkYXRhIGlzIHRvIHNldCB1cCBhIHBhZGF0YV9pbnN0YW5jZSBzdHJ1Y3R1cmUgZm9yCitvdmVyYWxsIGNvbnRyb2wgb2YgaG93IHRhc2tzIGFyZSB0byBiZSBydW46CisKKyAgICAjaW5jbHVkZSA8bGludXgvcGFkYXRhLmg+CisKKyAgICBzdHJ1Y3QgcGFkYXRhX2luc3RhbmNlICpwYWRhdGFfYWxsb2Moc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxLAorCQkJCQkgY29uc3Qgc3RydWN0IGNwdW1hc2sgKnBjcHVtYXNrLAorCQkJCQkgY29uc3Qgc3RydWN0IGNwdW1hc2sgKmNiY3B1bWFzayk7CisKK1RoZSBwY3B1bWFzayBkZXNjcmliZXMgd2hpY2ggcHJvY2Vzc29ycyB3aWxsIGJlIHVzZWQgdG8gZXhlY3V0ZSB3b3JrCitzdWJtaXR0ZWQgdG8gdGhpcyBpbnN0YW5jZSBpbiBwYXJhbGxlbC4gVGhlIGNiY3B1bWFzayBkZWZpbmVzIHdoaWNoCitwcm9jZXNzb3JzIGFyZSBhbGxvd2VkIHRvIGJlIHVzZWQgYXMgdGhlIHNlcmlhbGl6YXRpb24gY2FsbGJhY2sgcHJvY2Vzc29yLgorVGhlIHdvcmtxdWV1ZSB3cSBpcyB3aGVyZSB0aGUgd29yayB3aWxsIGFjdHVhbGx5IGJlIGRvbmU7IGl0IHNob3VsZCBiZQorYSBtdWx0aXRocmVhZGVkIHF1ZXVlLCBuYXR1cmFsbHkuCisKK1RvIGFsbG9jYXRlIGEgcGFkYXRhIGluc3RhbmNlIHdpdGggdGhlIGNwdV9wb3NzaWJsZV9tYXNrIGZvciBib3RoCitjcHVtYXNrcyB0aGlzIGhlbHBlciBmdW5jdGlvbiBjYW4gYmUgdXNlZDoKKworICAgIHN0cnVjdCBwYWRhdGFfaW5zdGFuY2UgKnBhZGF0YV9hbGxvY19wb3NzaWJsZShzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqd3EpOworCitOb3RlOiBQYWRhdGEgbWFpbnRhaW5zIHR3byBraW5kcyBvZiBjcHVtYXNrcyBpbnRlcm5hbGx5LiBUaGUgdXNlciBzdXBwbGllZAorY3B1bWFza3MsIHN1Ym1pdHRlZCBieSBwYWRhdGFfYWxsb2MvcGFkYXRhX2FsbG9jX3Bvc3NpYmxlIGFuZCB0aGUgJ3VzYWJsZScKK2NwdW1hc2tzLiBUaGUgdXNhYmxlIGNwdW1hc2tzIGFyZSBhbHdheXMgYSBzdWJzZXQgb2YgYWN0aXZlIENQVXMgaW4gdGhlCit1c2VyIHN1cHBsaWVkIGNwdW1hc2tzOyB0aGVzZSBhcmUgdGhlIGNwdW1hc2tzIHBhZGF0YSBhY3R1YWxseSB1c2VzLiBTbworaXQgaXMgbGVnYWwgdG8gc3VwcGx5IGEgY3B1bWFzayB0byBwYWRhdGEgdGhhdCBjb250YWlucyBvZmZsaW5lIENQVXMuCitPbmNlIGFuIG9mZmxpbmUgQ1BVIGluIHRoZSB1c2VyIHN1cHBsaWVkIGNwdW1hc2sgY29tZXMgb25saW5lLCBwYWRhdGEKK2lzIGdvaW5nIHRvIHVzZSBpdC4KKworVGhlcmUgYXJlIGZ1bmN0aW9ucyBmb3IgZW5hYmxpbmcgYW5kIGRpc2FibGluZyB0aGUgaW5zdGFuY2U6CisKKyAgICBpbnQgcGFkYXRhX3N0YXJ0KHN0cnVjdCBwYWRhdGFfaW5zdGFuY2UgKnBpbnN0KTsKKyAgICB2b2lkIHBhZGF0YV9zdG9wKHN0cnVjdCBwYWRhdGFfaW5zdGFuY2UgKnBpbnN0KTsKKworVGhlc2UgZnVuY3Rpb25zIGFyZSBzZXR0aW5nIG9yIGNsZWFyaW5nIHRoZSAiUEFEQVRBX0lOSVQiIGZsYWc7CitpZiB0aGF0IGZsYWcgaXMgbm90IHNldCwgb3RoZXIgZnVuY3Rpb25zIHdpbGwgcmVmdXNlIHRvIHdvcmsuCitwYWRhdGFfc3RhcnQgcmV0dXJucyB6ZXJvIG9uIHN1Y2Nlc3MgKGZsYWcgc2V0KSBvciAtRUlOVkFMIGlmIHRoZQorcGFkYXRhIGNwdW1hc2sgY29udGFpbnMgbm8gYWN0aXZlIENQVSAoZmxhZyBub3Qgc2V0KS4KK3BhZGF0YV9zdG9wIGNsZWFycyB0aGUgZmxhZyBhbmQgYmxvY2tzIHVudGlsIHRoZSBwYWRhdGEgaW5zdGFuY2UKK2lzIHVudXNlZC4KKworVGhlIGxpc3Qgb2YgQ1BVcyB0byBiZSB1c2VkIGNhbiBiZSBhZGp1c3RlZCB3aXRoIHRoZXNlIGZ1bmN0aW9uczoKKworICAgIGludCBwYWRhdGFfc2V0X2NwdW1hc2tzKHN0cnVjdCBwYWRhdGFfaW5zdGFuY2UgKnBpbnN0LAorCQkJICAgIGNwdW1hc2tfdmFyX3QgcGNwdW1hc2ssCisJCQkgICAgY3B1bWFza192YXJfdCBjYmNwdW1hc2spOworICAgIGludCBwYWRhdGFfc2V0X2NwdW1hc2soc3RydWN0IHBhZGF0YV9pbnN0YW5jZSAqcGluc3QsIGludCBjcHVtYXNrX3R5cGUsCisJCQkgICBjcHVtYXNrX3Zhcl90IGNwdW1hc2spOworICAgIGludCBwYWRhdGFfYWRkX2NwdShzdHJ1Y3QgcGFkYXRhX2luc3RhbmNlICpwaW5zdCwgaW50IGNwdSwgaW50IG1hc2spOworICAgIGludCBwYWRhdGFfcmVtb3ZlX2NwdShzdHJ1Y3QgcGFkYXRhX2luc3RhbmNlICpwaW5zdCwgaW50IGNwdSwgaW50IG1hc2spOworCitDaGFuZ2luZyB0aGUgQ1BVIG1hc2tzIGFyZSBleHBlbnNpdmUgb3BlcmF0aW9ucywgdGhvdWdoLCBzbyBpdCBzaG91bGQgbm90IGJlCitkb25lIHdpdGggZ3JlYXQgZnJlcXVlbmN5LgorCitJdCdzIHBvc3NpYmxlIHRvIGNoYW5nZSBib3RoIGNwdW1hc2tzIG9mIGEgcGFkYXRhIGluc3RhbmNlIHdpdGgKK3BhZGF0YV9zZXRfY3B1bWFza3MgYnkgc3BlY2lmeWluZyB0aGUgY3B1bWFza3MgZm9yIHBhcmFsbGVsIGV4ZWN1dGlvbiAocGNwdW1hc2spCithbmQgZm9yIHRoZSBzZXJpYWwgY2FsbGJhY2sgZnVuY3Rpb24gKGNiY3B1bWFzaykuIHBhZGF0YV9zZXRfY3B1bWFzayBpcyB1c2VkIHRvCitjaGFuZ2UganVzdCBvbmUgb2YgdGhlIGNwdW1hc2tzLiBIZXJlIGNwdW1hc2tfdHlwZSBpcyBvbmUgb2YgUEFEQVRBX0NQVV9TRVJJQUwsCitQQURBVEFfQ1BVX1BBUkFMTEVMIGFuZCBjcHVtYXNrIHNwZWNpZmllcyB0aGUgbmV3IGNwdW1hc2sgdG8gdXNlLgorVG8gc2ltcGx5IGFkZCBvciByZW1vdmUgb25lIENQVSBmcm9tIGEgY2VydGFpbiBjcHVtYXNrIHRoZSBmdW5jdGlvbnMKK3BhZGF0YV9hZGRfY3B1L3BhZGF0YV9yZW1vdmVfY3B1IGFyZSB1c2VkLiBjcHUgc3BlY2lmaWVzIHRoZSBDUFUgdG8gYWRkIG9yCityZW1vdmUgYW5kIG1hc2sgaXMgb25lIG9mIFBBREFUQV9DUFVfU0VSSUFMLCBQQURBVEFfQ1BVX1BBUkFMTEVMLgorCitJZiBhIHVzZXIgaXMgaW50ZXJlc3RlZCBpbiBwYWRhdGEgY3B1bWFzayBjaGFuZ2VzLCBoZSBjYW4gcmVnaXN0ZXIgdG8KK3RoZSBwYWRhdGEgY3B1bWFzayBjaGFuZ2Ugbm90aWZpZXI6CisKKyAgICBpbnQgcGFkYXRhX3JlZ2lzdGVyX2NwdW1hc2tfbm90aWZpZXIoc3RydWN0IHBhZGF0YV9pbnN0YW5jZSAqcGluc3QsCisJCQkJCSBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5ibG9jayk7CisKK1RvIHVucmVnaXN0ZXIgZnJvbSB0aGF0IG5vdGlmaWVyOgorCisgICAgaW50IHBhZGF0YV91bnJlZ2lzdGVyX2NwdW1hc2tfbm90aWZpZXIoc3RydWN0IHBhZGF0YV9pbnN0YW5jZSAqcGluc3QsCisJCQkJCSAgIHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmJsb2NrKTsKKworVGhlIHBhZGF0YSBjcHVtYXNrIGNoYW5nZSBub3RpZmllciBub3RpZmllcyBhYm91dCBjaGFuZ2VzIG9mIHRoZSB1c2FibGUKK2NwdW1hc2tzLCBpLmUuIHRoZSBzdWJzZXQgb2YgYWN0aXZlIENQVXMgaW4gdGhlIHVzZXIgc3VwcGxpZWQgY3B1bWFzay4KKworUGFkYXRhIGNhbGxzIHRoZSBub3RpZmllciBjaGFpbiB3aXRoOgorCisgICAgYmxvY2tpbmdfbm90aWZpZXJfY2FsbF9jaGFpbigmcGluc3QtPmNwdW1hc2tfY2hhbmdlX25vdGlmaWVyLAorCQkJCSBub3RpZmljYXRpb25fbWFzaywKKwkJCQkgJnBkX25ldy0+Y3B1bWFzayk7CisKK0hlcmUgY3B1bWFza19jaGFuZ2Vfbm90aWZpZXIgaXMgcmVnaXN0ZXJlZCBub3RpZmllciwgbm90aWZpY2F0aW9uX21hc2sKK2lzIG9uZSBvZiBQQURBVEFfQ1BVX1NFUklBTCwgUEFEQVRBX0NQVV9QQVJBTExFTCBhbmQgY3B1bWFzayBpcyBhIHBvaW50ZXIKK3RvIGEgc3RydWN0IHBhZGF0YV9jcHVtYXNrIHRoYXQgY29udGFpbnMgdGhlIG5ldyBjcHVtYXNrIGluZm9ybWF0aW9uLgorCitBY3R1YWxseSBzdWJtaXR0aW5nIHdvcmsgdG8gdGhlIHBhZGF0YSBpbnN0YW5jZSByZXF1aXJlcyB0aGUgY3JlYXRpb24gb2YgYQorcGFkYXRhX3ByaXYgc3RydWN0dXJlOgorCisgICAgc3RydWN0IHBhZGF0YV9wcml2IHsKKyAgICAgICAgLyogT3RoZXIgc3R1ZmYgaGVyZS4uLiAqLworCXZvaWQgICAgICAgICAgICAgICAgICAgICgqcGFyYWxsZWwpKHN0cnVjdCBwYWRhdGFfcHJpdiAqcGFkYXRhKTsKKwl2b2lkICAgICAgICAgICAgICAgICAgICAoKnNlcmlhbCkoc3RydWN0IHBhZGF0YV9wcml2ICpwYWRhdGEpOworICAgIH07CisKK1RoaXMgc3RydWN0dXJlIHdpbGwgYWxtb3N0IGNlcnRhaW5seSBiZSBlbWJlZGRlZCB3aXRoaW4gc29tZSBsYXJnZXIKK3N0cnVjdHVyZSBzcGVjaWZpYyB0byB0aGUgd29yayB0byBiZSBkb25lLiAgTW9zdCBvZiBpdHMgZmllbGRzIGFyZSBwcml2YXRlIHRvCitwYWRhdGEsIGJ1dCB0aGUgc3RydWN0dXJlIHNob3VsZCBiZSB6ZXJvZWQgYXQgaW5pdGlhbGlzYXRpb24gdGltZSwgYW5kIHRoZQorcGFyYWxsZWwoKSBhbmQgc2VyaWFsKCkgZnVuY3Rpb25zIHNob3VsZCBiZSBwcm92aWRlZC4gIFRob3NlIGZ1bmN0aW9ucyB3aWxsCitiZSBjYWxsZWQgaW4gdGhlIHByb2Nlc3Mgb2YgZ2V0dGluZyB0aGUgd29yayBkb25lIGFzIHdlIHdpbGwgc2VlCittb21lbnRhcmlseS4KKworVGhlIHN1Ym1pc3Npb24gb2Ygd29yayBpcyBkb25lIHdpdGg6CisKKyAgICBpbnQgcGFkYXRhX2RvX3BhcmFsbGVsKHN0cnVjdCBwYWRhdGFfaW5zdGFuY2UgKnBpbnN0LAorCQkgICAgICAgICAgIHN0cnVjdCBwYWRhdGFfcHJpdiAqcGFkYXRhLCBpbnQgY2JfY3B1KTsKKworVGhlIHBpbnN0IGFuZCBwYWRhdGEgc3RydWN0dXJlcyBtdXN0IGJlIHNldCB1cCBhcyBkZXNjcmliZWQgYWJvdmU7IGNiX2NwdQorc3BlY2lmaWVzIHdoaWNoIENQVSB3aWxsIGJlIHVzZWQgZm9yIHRoZSBmaW5hbCBjYWxsYmFjayB3aGVuIHRoZSB3b3JrIGlzCitkb25lOyBpdCBtdXN0IGJlIGluIHRoZSBjdXJyZW50IGluc3RhbmNlJ3MgQ1BVIG1hc2suICBUaGUgcmV0dXJuIHZhbHVlIGZyb20KK3BhZGF0YV9kb19wYXJhbGxlbCgpIGlzIHplcm8gb24gc3VjY2VzcywgaW5kaWNhdGluZyB0aGF0IHRoZSB3b3JrIGlzIGluCitwcm9ncmVzcy4gLUVCVVNZIG1lYW5zIHRoYXQgc29tZWJvZHksIHNvbWV3aGVyZSBlbHNlIGlzIG1lc3Npbmcgd2l0aCB0aGUKK2luc3RhbmNlJ3MgQ1BVIG1hc2ssIHdoaWxlIC1FSU5WQUwgaXMgYSBjb21wbGFpbnQgYWJvdXQgY2JfY3B1IG5vdCBiZWluZworaW4gdGhhdCBDUFUgbWFzayBvciBhYm91dCBhIG5vdCBydW5uaW5nIGluc3RhbmNlLgorCitFYWNoIHRhc2sgc3VibWl0dGVkIHRvIHBhZGF0YV9kb19wYXJhbGxlbCgpIHdpbGwsIGluIHR1cm4sIGJlIHBhc3NlZCB0bworZXhhY3RseSBvbmUgY2FsbCB0byB0aGUgYWJvdmUtbWVudGlvbmVkIHBhcmFsbGVsKCkgZnVuY3Rpb24sIG9uIG9uZSBDUFUsIHNvCit0cnVlIHBhcmFsbGVsaXNtIGlzIGFjaGlldmVkIGJ5IHN1Ym1pdHRpbmcgbXVsdGlwbGUgdGFza3MuICBEZXNwaXRlIHRoZQorZmFjdCB0aGF0IHRoZSB3b3JrcXVldWUgaXMgdXNlZCB0byBtYWtlIHRoZXNlIGNhbGxzLCBwYXJhbGxlbCgpIGlzIHJ1biB3aXRoCitzb2Z0d2FyZSBpbnRlcnJ1cHRzIGRpc2FibGVkIGFuZCB0aHVzIGNhbm5vdCBzbGVlcC4gIFRoZSBwYXJhbGxlbCgpCitmdW5jdGlvbiBnZXRzIHRoZSBwYWRhdGFfcHJpdiBzdHJ1Y3R1cmUgcG9pbnRlciBhcyBpdHMgbG9uZSBwYXJhbWV0ZXI7CitpbmZvcm1hdGlvbiBhYm91dCB0aGUgYWN0dWFsIHdvcmsgdG8gYmUgZG9uZSBpcyBwcm9iYWJseSBvYnRhaW5lZCBieSB1c2luZworY29udGFpbmVyX29mKCkgdG8gZmluZCB0aGUgZW5jbG9zaW5nIHN0cnVjdHVyZS4KKworTm90ZSB0aGF0IHBhcmFsbGVsKCkgaGFzIG5vIHJldHVybiB2YWx1ZTsgdGhlIHBhZGF0YSBzdWJzeXN0ZW0gYXNzdW1lcyB0aGF0CitwYXJhbGxlbCgpIHdpbGwgdGFrZSByZXNwb25zaWJpbGl0eSBmb3IgdGhlIHRhc2sgZnJvbSB0aGlzIHBvaW50LiAgVGhlIHdvcmsKK25lZWQgbm90IGJlIGNvbXBsZXRlZCBkdXJpbmcgdGhpcyBjYWxsLCBidXQsIGlmIHBhcmFsbGVsKCkgbGVhdmVzIHdvcmsKK291dHN0YW5kaW5nLCBpdCBzaG91bGQgYmUgcHJlcGFyZWQgdG8gYmUgY2FsbGVkIGFnYWluIHdpdGggYSBuZXcgam9iIGJlZm9yZQordGhlIHByZXZpb3VzIG9uZSBjb21wbGV0ZXMuICBXaGVuIGEgdGFzayBkb2VzIGNvbXBsZXRlLCBwYXJhbGxlbCgpIChvcgord2hhdGV2ZXIgZnVuY3Rpb24gYWN0dWFsbHkgZmluaXNoZXMgdGhlIGpvYikgc2hvdWxkIGluZm9ybSBwYWRhdGEgb2YgdGhlCitmYWN0IHdpdGggYSBjYWxsIHRvOgorCisgICAgdm9pZCBwYWRhdGFfZG9fc2VyaWFsKHN0cnVjdCBwYWRhdGFfcHJpdiAqcGFkYXRhKTsKKworQXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLCBwYWRhdGFfZG9fc2VyaWFsKCkgd2lsbCB0cmlnZ2VyIGEgY2FsbCB0byB0aGUKK3NlcmlhbCgpIGZ1bmN0aW9uIGluIHRoZSBwYWRhdGFfcHJpdiBzdHJ1Y3R1cmUuICBUaGF0IGNhbGwgd2lsbCBoYXBwZW4gb24KK3RoZSBDUFUgcmVxdWVzdGVkIGluIHRoZSBpbml0aWFsIGNhbGwgdG8gcGFkYXRhX2RvX3BhcmFsbGVsKCk7IGl0LCB0b28sIGlzCitkb25lIHRocm91Z2ggdGhlIHdvcmtxdWV1ZSwgYnV0IHdpdGggbG9jYWwgc29mdHdhcmUgaW50ZXJydXB0cyBkaXNhYmxlZC4KK05vdGUgdGhhdCB0aGlzIGNhbGwgbWF5IGJlIGRlZmVycmVkIGZvciBhIHdoaWxlIHNpbmNlIHRoZSBwYWRhdGEgY29kZSB0YWtlcworcGFpbnMgdG8gZW5zdXJlIHRoYXQgdGFza3MgYXJlIGNvbXBsZXRlZCBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlCitzdWJtaXR0ZWQuCisKK1RoZSBvbmUgcmVtYWluaW5nIGZ1bmN0aW9uIGluIHRoZSBwYWRhdGEgQVBJIHNob3VsZCBiZSBjYWxsZWQgdG8gY2xlYW4gdXAKK3doZW4gYSBwYWRhdGEgaW5zdGFuY2UgaXMgbm8gbG9uZ2VyIG5lZWRlZDoKKworICAgIHZvaWQgcGFkYXRhX2ZyZWUoc3RydWN0IHBhZGF0YV9pbnN0YW5jZSAqcGluc3QpOworCitUaGlzIGZ1bmN0aW9uIHdpbGwgYnVzeS13YWl0IHdoaWxlIGFueSByZW1haW5pbmcgdGFza3MgYXJlIGNvbXBsZXRlZCwgc28gaXQKK21pZ2h0IGJlIGJlc3Qgbm90IHRvIGNhbGwgaXQgd2hpbGUgdGhlcmUgaXMgd29yayBvdXRzdGFuZGluZy4gIFNodXR0aW5nCitkb3duIHRoZSB3b3JrcXVldWUsIGlmIG5lY2Vzc2FyeSwgc2hvdWxkIGJlIGRvbmUgc2VwYXJhdGVseS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcGFyaXNjLzAwLUlOREVYIGIvRG9jdW1lbnRhdGlvbi9wYXJpc2MvMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JkMDYwOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcGFyaXNjLzAwLUlOREVYCkBAIC0wLDAgKzEsNiBAQAorMDAtSU5ERVgKKwktIHRoaXMgZmlsZS4KK2RlYnVnZ2luZworCS0gc29tZSBkZWJ1Z2dpbmcgaGludHMgZm9yIHJlYWwtbW9kZSBjb2RlCityZWdpc3RlcnMKKwktIGN1cnJlbnQvcGxhbm5lZCB1c2FnZSBvZiByZWdpc3RlcnMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcGFyaXNjL2RlYnVnZ2luZyBiL0RvY3VtZW50YXRpb24vcGFyaXNjL2RlYnVnZ2luZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDc1MjIzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wYXJpc2MvZGVidWdnaW5nCkBAIC0wLDAgKzEsMzkgQEAKK29rYXksIGhlcmUgYXJlIHNvbWUgaGludHMgZm9yIGRlYnVnZ2luZyB0aGUgbG93ZXItbGV2ZWwgcGFydHMgb2YKK2xpbnV4L3BhcmlzYy4KKworCisxLiBBYnNvbHV0ZSBhZGRyZXNzZXMKKworQSBsb3Qgb2YgdGhlIGFzc2VtYmx5IGNvZGUgY3VycmVudGx5IHJ1bnMgaW4gcmVhbCBtb2RlLCB3aGljaCBtZWFucworYWJzb2x1dGUgYWRkcmVzc2VzIGFyZSB1c2VkIGluc3RlYWQgb2YgdmlydHVhbCBhZGRyZXNzZXMgYXMgaW4gdGhlCityZXN0IG9mIHRoZSBrZXJuZWwuICBUbyB0cmFuc2xhdGUgYW4gYWJzb2x1dGUgYWRkcmVzcyB0byBhIHZpcnR1YWwKK2FkZHJlc3MgeW91IGNhbiBsb29rdXAgaW4gU3lzdGVtLm1hcCwgYWRkIF9fUEFHRV9PRkZTRVQgKDB4MTAwMDAwMDAKK2N1cnJlbnRseSkuCisKKworMi4gSFBNQ3MKKworV2hlbiByZWFsLW1vZGUgY29kZSB0cmllcyB0byBhY2Nlc3Mgbm9uLWV4aXN0ZW50IG1lbW9yeSwgeW91J2xsIGdldAorYW4gSFBNQyBpbnN0ZWFkIG9mIGEga2VybmVsIG9vcHMuICBUbyBkZWJ1ZyBhbiBIUE1DLCB0cnkgdG8gZmluZAordGhlIFN5c3RlbSBSZXNwb25kZXIvUmVxdWVzdG9yIGFkZHJlc3Nlcy4gIFRoZSBTeXN0ZW0gUmVxdWVzdG9yCithZGRyZXNzIHNob3VsZCBtYXRjaCAob25lIG9mIHRoZSkgcHJvY2Vzc29yIEhQQXMgKGhpZ2ggYWRkcmVzc2VzIGluCit0aGUgSS9PIHJhbmdlKTsgdGhlIFN5c3RlbSBSZXNwb25kZXIgYWRkcmVzcyBpcyB0aGUgYWRkcmVzcyByZWFsLW1vZGUKK2NvZGUgdHJpZWQgdG8gYWNjZXNzLgorCitUeXBpY2FsIHZhbHVlcyBmb3IgdGhlIFN5c3RlbSBSZXNwb25kZXIgYWRkcmVzcyBhcmUgYWRkcmVzc2VzIGxhcmdlcgordGhhbiBfX1BBR0VfT0ZGU0VUICgweDEwMDAwMDAwKSB3aGljaCBtZWFuIGEgdmlydHVhbCBhZGRyZXNzIGRpZG4ndAorZ2V0IHRyYW5zbGF0ZWQgdG8gYSBwaHlzaWNhbCBhZGRyZXNzIGJlZm9yZSByZWFsLW1vZGUgY29kZSB0cmllZCB0bworYWNjZXNzIGl0LgorCisKKzMuIFEgYml0IGZ1bgorCitDZXJ0YWluLCB2ZXJ5IGNyaXRpY2FsIGNvZGUgaGFzIHRvIGNsZWFyIHRoZSBRIGJpdCBpbiB0aGUgUFNXLiAgV2hhdAoraGFwcGVucyB3aGVuIHRoZSBRIGJpdCBpcyBjbGVhcmVkIGlzIHRoZSBDUFUgZG9lcyBub3QgdXBkYXRlIHRoZQorcmVnaXN0ZXJzIGludGVycnVwdGlvbiBoYW5kbGVycyByZWFkIHRvIGZpbmQgb3V0IHdoZXJlIHRoZSBtYWNoaW5lCit3YXMgaW50ZXJydXB0ZWQgLSBzbyBpZiB5b3UgZ2V0IGFuIGludGVycnVwdGlvbiBiZXR3ZWVuIHRoZSBpbnN0cnVjdGlvbgordGhhdCBjbGVhcnMgdGhlIFEgYml0IGFuZCB0aGUgUkZJIHRoYXQgc2V0cyBpdCBhZ2FpbiB5b3UgZG9uJ3Qga25vdword2hlcmUgZXhhY3RseSBpdCBoYXBwZW5lZC4gIElmIHlvdSdyZSBsdWNreSB0aGUgSUFPUSB3aWxsIHBvaW50IHRvIHRoZQoraW5zdHJ1Y3Rpb24gdGhhdCBjbGVhcmVkIHRoZSBRIGJpdCwgaWYgeW91J3JlIG5vdCBpdCBwb2ludHMgYW55d2hlcmUKK2F0IGFsbC4gIFVzdWFsbHkgUSBiaXQgcHJvYmxlbXMgd2lsbCBzaG93IHRoZW1zZWx2ZXMgaW4gdW5leHBsYWluYWJsZQorc3lzdGVtIGhhbmdzIG9yIHJ1bm5pbmcgb2ZmIHRoZSBlbmQgb2YgcGh5c2ljYWwgbWVtb3J5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wYXJpc2MvcmVnaXN0ZXJzIGIvRG9jdW1lbnRhdGlvbi9wYXJpc2MvcmVnaXN0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwYzdkMTcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3BhcmlzYy9yZWdpc3RlcnMKQEAgLTAsMCArMSwxMjkgQEAKK1JlZ2lzdGVyIFVzYWdlIGZvciBMaW51eC9QQS1SSVNDCisKK1sgYW4gYXN0ZXJpc2sgaXMgdXNlZCBmb3IgcGxhbm5lZCB1c2FnZSB3aGljaCBpcyBjdXJyZW50bHkgdW5pbXBsZW1lbnRlZCBdCisKKwlHZW5lcmFsIFJlZ2lzdGVycyBhcyBzcGVjaWZpZWQgYnkgQUJJCisKKwlDb250cm9sIFJlZ2lzdGVycworCitDUiAwIChSZWNvdmVyeSBDb3VudGVyKQkJdXNlZCBmb3IgcHRyYWNlCitDUiAxLUNSIDcodW5kZWZpbmVkKQkJdW51c2VkCitDUiA4IChQcm90ZWN0aW9uIElEKQkJcGVyLXByb2Nlc3MgdmFsdWUqCitDUiA5LCAxMiwgMTMgKFBJRFMpCQl1bnVzZWQKK0NSMTAgKENDUikJCQlsYXp5IEZQVSBzYXZpbmcqCitDUjExCQkJCWFzIHNwZWNpZmllZCBieSBBQkkgKFNBUikKK0NSMTQgKGludGVycnVwdGlvbiB2ZWN0b3IpCWluaXRpYWxpemVkIHRvIGZhdWx0X3ZlY3RvcgorQ1IxNSAoRUlFTSkJCQlpbml0aWFsaXplZCB0byBhbGwgb25lcyoKK0NSMTYgKEludGVydmFsIFRpbWVyKQkJcmVhZCBmb3IgY3ljbGUgY291bnQvd3JpdGUgc3RhcnRzIEludGVydmFsIFRtcgorQ1IxNy1DUjIyCQkJaW50ZXJydXB0aW9uIHBhcmFtZXRlcnMKK0NSMTkJCQkJSW50ZXJydXB0IEluc3RydWN0aW9uIFJlZ2lzdGVyCitDUjIwCQkJCUludGVycnVwdCBTcGFjZSBSZWdpc3RlcgorQ1IyMQkJCQlJbnRlcnJ1cHQgT2Zmc2V0IFJlZ2lzdGVyCitDUjIyCQkJCUludGVycnVwdCBQU1cKK0NSMjMgKEVJUlIpCQkJcmVhZCBmb3IgcGVuZGluZyBpbnRlcnJ1cHRzL3dyaXRlIGNsZWFycyBiaXRzCitDUjI0IChUUiAwKQkJCUtlcm5lbCBTcGFjZSBQYWdlIERpcmVjdG9yeSBQb2ludGVyCitDUjI1IChUUiAxKQkJCVVzZXIgICBTcGFjZSBQYWdlIERpcmVjdG9yeSBQb2ludGVyCitDUjI2IChUUiAyKQkJCW5vdCB1c2VkCitDUjI3IChUUiAzKQkJCVRocmVhZCBkZXNjcmlwdG9yIHBvaW50ZXIKK0NSMjggKFRSIDQpCQkJbm90IHVzZWQKK0NSMjkgKFRSIDUpCQkJbm90IHVzZWQKK0NSMzAgKFRSIDYpCQkJY3VycmVudCAvIDAKK0NSMzEgKFRSIDcpCQkJVGVtcG9yYXJ5IHJlZ2lzdGVyLCB1c2VkIGluIHZhcmlvdXMgcGxhY2VzCisKKwlTcGFjZSBSZWdpc3RlcnMgKGtlcm5lbCBtb2RlKQorCitTUjAJCQkJdGVtcG9yYXJ5IHNwYWNlIHJlZ2lzdGVyCitTUjQtU1I3IAkJCXNldCB0byAwCitTUjEJCQkJdGVtcG9yYXJ5IHNwYWNlIHJlZ2lzdGVyCitTUjIJCQkJa2VybmVsIHNob3VsZCBub3QgY2xvYmJlciB0aGlzCitTUjMJCQkJdXNlZCBmb3IgdXNlcnNwYWNlIGFjY2Vzc2VzIChjdXJyZW50IHByb2Nlc3MpCisKKwlTcGFjZSBSZWdpc3RlcnMgKHVzZXIgbW9kZSkKKworU1IwCQkJCXRlbXBvcmFyeSBzcGFjZSByZWdpc3RlcgorU1IxICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wb3Jhcnkgc3BhY2UgcmVnaXN0ZXIKK1NSMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9sZHMgc3BhY2Ugb2YgbGludXggZ2F0ZXdheSBwYWdlCitTUjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvbGRzIHVzZXIgYWRkcmVzcyBzcGFjZSB2YWx1ZSB3aGlsZSBpbiBrZXJuZWwKK1NSNC1TUjcgICAgICAgICAgICAgICAgICAgICAgICAgRGVmaW5lcyBzaG9ydCBhZGRyZXNzIHNwYWNlIGZvciB1c2VyL2tlcm5lbAorCisKKwlQcm9jZXNzb3IgU3RhdHVzIFdvcmQKKworVyAoNjQtYml0IGFkZHJlc3NlcykJCTAKK0UgKExpdHRsZS1lbmRpYW4pCQkwCitTIChTZWN1cmUgSW50ZXJ2YWwgVGltZXIpCTAKK1QgKFRha2VuIEJyYW5jaCBUcmFwKQkJMAorSCAoSGlnaGVyLXByaXZpbGVnZSB0cmFwKQkwCitMIChMb3dlci1wcml2aWxlZ2UgdHJhcCkJMAorTiAoTnVsbGlmeSBuZXh0IGluc3RydWN0aW9uKQl1c2VkIGJ5IEMgY29kZQorWCAoRGF0YSBtZW1vcnkgYnJlYWsgZGlzYWJsZSkJMAorQiAoVGFrZW4gQnJhbmNoKQkJdXNlZCBieSBDIGNvZGUKK0MgKGNvZGUgYWRkcmVzcyB0cmFuc2xhdGlvbikJMSwgMCB3aGlsZSBleGVjdXRpbmcgcmVhbC1tb2RlIGNvZGUKK1YgKGRpdmlkZSBzdGVwIGNvcnJlY3Rpb24pCXVzZWQgYnkgQyBjb2RlCitNIChIUE1DIG1hc2spCQkJMCwgMSB3aGlsZSBleGVjdXRpbmcgSFBNQyBoYW5kbGVyKgorQy9CIChjYXJyeS9ib3Jyb3cgYml0cykJCXVzZWQgYnkgQyBjb2RlCitPIChvcmRlcmVkIHJlZmVyZW5jZXMpCQkxKgorRiAocGVyZm9ybWFuY2UgbW9uaXRvcikJCTAKK1IgKFJlY292ZXJ5IENvdW50ZXIgdHJhcCkJMAorUSAoY29sbGVjdCBpbnRlcnJ1cHRpb24gc3RhdGUpCTEgKDAgaW4gY29kZSBkaXJlY3RseSBwcmVjZWRpbmcgYW4gcmZpKQorUCAoUHJvdGVjdGlvbiBJZGVudGlmaWVycykJMSoKK0QgKERhdGEgYWRkcmVzcyB0cmFuc2xhdGlvbikJMSwgMCB3aGlsZSBleGVjdXRpbmcgcmVhbC1tb2RlIGNvZGUKK0kgKGV4dGVybmFsIGludGVycnVwdCBtYXNrKQl1c2VkIGJ5IGNsaSgpL3N0aSgpIG1hY3JvcworCisJIkludmlzaWJsZSIgUmVnaXN0ZXJzCisKK1BTVyBkZWZhdWx0IFcgdmFsdWUJCTAKK1BTVyBkZWZhdWx0IEUgdmFsdWUJCTAKK1NoYWRvdyBSZWdpc3RlcnMJCXVzZWQgYnkgaW50ZXJydXB0aW9uIGhhbmRsZXIgY29kZQorVE9DIGVuYWJsZSBiaXQJCQkxCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIFBBLVJJU0MgYXJjaGl0ZWN0dXJlIGRlZmluZXMgNyByZWdpc3RlcnMgYXMgInNoYWRvdyByZWdpc3RlcnMiLgorVGhvc2UgYXJlIHVzZWQgaW4gUkVUVVJOIEZST00gSU5URVJSVVBUSU9OIEFORCBSRVNUT1JFIGluc3RydWN0aW9uIHRvIHJlZHVjZQordGhlIHN0YXRlIHNhdmUgYW5kIHJlc3RvcmUgdGltZSBieSBlbGltaW5hdGluZyB0aGUgbmVlZCBmb3IgZ2VuZXJhbCByZWdpc3RlcgorKEdSKSBzYXZlcyBhbmQgcmVzdG9yZXMgaW4gaW50ZXJydXB0aW9uIGhhbmRsZXJzLgorU2hhZG93IHJlZ2lzdGVycyBhcmUgdGhlIEdScyAxLCA4LCA5LCAxNiwgMTcsIDI0LCBhbmQgMjUuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1JlZ2lzdGVyIHVzYWdlIG5vdGVzLCBvcmlnaW5hbGx5IGZyb20gSm9obiBNYXJ2aW4sIHdpdGggc29tZSBhZGRpdGlvbmFsCitub3RlcyBmcm9tIFJhbmRvbHBoIENodW5nLgorCitGb3IgdGhlIGdlbmVyYWwgcmVnaXN0ZXJzOgorCityMSxyMixyMTktcjI2LHIyOCxyMjkgJiByMzEgY2FuIGJlIHVzZWQgd2l0aG91dCBzYXZpbmcgdGhlbSBmaXJzdC4gQW5kIG9mCitjb3Vyc2UsIHlvdSBuZWVkIHRvIHNhdmUgdGhlbSBpZiB5b3UgY2FyZSBhYm91dCB0aGVtLCBiZWZvcmUgY2FsbGluZworYW5vdGhlciBwcm9jZWR1cmUuIFNvbWUgb2YgdGhlIGFib3ZlIHJlZ2lzdGVycyBkbyBoYXZlIHNwZWNpYWwgbWVhbmluZ3MKK3RoYXQgeW91IHNob3VsZCBiZSBhd2FyZSBvZjoKKworICAgIHIxOiBUaGUgYWRkaWwgaW5zdHJ1Y3Rpb24gaXMgaGFyZHdpcmVkIHRvIHBsYWNlIGl0cyByZXN1bHQgaW4gcjEsCisJc28gaWYgeW91IHVzZSB0aGF0IGluc3RydWN0aW9uIGJlIGF3YXJlIG9mIHRoYXQuCisKKyAgICByMjogVGhpcyBpcyB0aGUgcmV0dXJuIHBvaW50ZXIuIEluIGdlbmVyYWwgeW91IGRvbid0IHdhbnQgdG8KKwl1c2UgdGhpcywgc2luY2UgeW91IG5lZWQgdGhlIHBvaW50ZXIgdG8gZ2V0IGJhY2sgdG8geW91cgorCWNhbGxlci4gSG93ZXZlciwgaXQgaXMgZ3JvdXBlZCB3aXRoIHRoaXMgc2V0IG9mIHJlZ2lzdGVycworCXNpbmNlIHRoZSBjYWxsZXIgY2FuJ3QgcmVseSBvbiB0aGUgdmFsdWUgYmVpbmcgdGhlIHNhbWUKKwl3aGVuIHlvdSByZXR1cm4sIGkuZS4geW91IGNhbiBjb3B5IHIyIHRvIGFub3RoZXIgcmVnaXN0ZXIKKwlhbmQgcmV0dXJuIHRocm91Z2ggdGhhdCByZWdpc3RlciBhZnRlciB0cmFzaGluZyByMiwgYW5kCisJdGhhdCBzaG91bGQgbm90IGNhdXNlIGEgcHJvYmxlbSBmb3IgdGhlIGNhbGxpbmcgcm91dGluZS4KKworICAgIHIxOS1yMjI6IHRoZXNlIGFyZSBnZW5lcmFsbHkgcmVnYXJkZWQgYXMgdGVtcG9yYXJ5IHJlZ2lzdGVycy4KKwlOb3RlIHRoYXQgaW4gNjQgYml0IHRoZXkgYXJlIGFyZzctYXJnNC4KKworICAgIHIyMy1yMjY6IHRoZXNlIGFyZSBhcmczLWFyZzAsIGkuZS4geW91IGNhbiB1c2UgdGhlbSBpZiB5b3UKKwlkb24ndCBjYXJlIGFib3V0IHRoZSB2YWx1ZXMgdGhhdCB3ZXJlIHBhc3NlZCBpbiBhbnltb3JlLgorCisgICAgcjI4LHIyOTogYXJlIHJldDAgYW5kIHJldDEuIFRoZXkgYXJlIHdoYXQgeW91IHBhc3MgcmV0dXJuIHZhbHVlcworCWluLiByMjggaXMgdGhlIHByaW1hcnkgcmV0dXJuLiBXaGVuIHJldHVybmluZyBzbWFsbCBzdHJ1Y3R1cmVzCisJcjI5IG1heSBhbHNvIGJlIHVzZWQgdG8gcGFzcyBkYXRhIGJhY2sgdG8gdGhlIGNhbGxlci4KKworICAgIHIzMDogc3RhY2sgcG9pbnRlcgorCisgICAgcjMxOiB0aGUgYmxlIGluc3RydWN0aW9uIHB1dHMgdGhlIHJldHVybiBwb2ludGVyIGluIGhlcmUuCisKKworcjMtcjE4LHIyNyxyMzAgbmVlZCB0byBiZSBzYXZlZCBhbmQgcmVzdG9yZWQuIHIzLXIxOCBhcmUganVzdAorICAgIGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMuIHIyNyBpcyB0aGUgZGF0YSBwb2ludGVyLCBhbmQgaXMKKyAgICB1c2VkIHRvIG1ha2UgcmVmZXJlbmNlcyB0byBnbG9iYWwgdmFyaWFibGVzIGVhc2llci4gcjMwIGlzCisgICAgdGhlIHN0YWNrIHBvaW50ZXIuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcGFycG9ydC1sb3dsZXZlbC50eHQgYi9Eb2N1bWVudGF0aW9uL3BhcnBvcnQtbG93bGV2ZWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMGViMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3BhcnBvcnQtbG93bGV2ZWwudHh0CkBAIC0wLDAgKzEsMTQ3MSBAQAorUEFSUE9SVCBpbnRlcmZhY2UgZG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaW1lLXN0YW1wOiA8MjAwMC0wMi0yNCAxMzozMDoyMCB0d2F1Z2g+CisKK0Rlc2NyaWJlZCBoZXJlIGFyZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKKworR2xvYmFsIGZ1bmN0aW9uczoKKyAgcGFycG9ydF9yZWdpc3Rlcl9kcml2ZXIKKyAgcGFycG9ydF91bnJlZ2lzdGVyX2RyaXZlcgorICBwYXJwb3J0X2VudW1lcmF0ZQorICBwYXJwb3J0X3JlZ2lzdGVyX2RldmljZQorICBwYXJwb3J0X3VucmVnaXN0ZXJfZGV2aWNlCisgIHBhcnBvcnRfY2xhaW0KKyAgcGFycG9ydF9jbGFpbV9vcl9ibG9jaworICBwYXJwb3J0X3JlbGVhc2UKKyAgcGFycG9ydF95aWVsZAorICBwYXJwb3J0X3lpZWxkX2Jsb2NraW5nCisgIHBhcnBvcnRfd2FpdF9wZXJpcGhlcmFsCisgIHBhcnBvcnRfcG9sbF9wZXJpcGhlcmFsCisgIHBhcnBvcnRfd2FpdF9ldmVudAorICBwYXJwb3J0X25lZ290aWF0ZQorICBwYXJwb3J0X3JlYWQKKyAgcGFycG9ydF93cml0ZQorICBwYXJwb3J0X29wZW4KKyAgcGFycG9ydF9jbG9zZQorICBwYXJwb3J0X2RldmljZV9pZAorICBwYXJwb3J0X2RldmljZV9jb29yZHMKKyAgcGFycG9ydF9maW5kX2NsYXNzCisgIHBhcnBvcnRfZmluZF9kZXZpY2UKKyAgcGFycG9ydF9zZXRfdGltZW91dAorCitQb3J0IGZ1bmN0aW9ucyAoY2FuIGJlIG92ZXJyaWRkZW4gYnkgbG93LWxldmVsIGRyaXZlcnMpOgorICBTUFA6CisgICAgcG9ydC0+b3BzLT5yZWFkX2RhdGEKKyAgICBwb3J0LT5vcHMtPndyaXRlX2RhdGEKKyAgICBwb3J0LT5vcHMtPnJlYWRfc3RhdHVzCisgICAgcG9ydC0+b3BzLT5yZWFkX2NvbnRyb2wKKyAgICBwb3J0LT5vcHMtPndyaXRlX2NvbnRyb2wKKyAgICBwb3J0LT5vcHMtPmZyb2JfY29udHJvbAorICAgIHBvcnQtPm9wcy0+ZW5hYmxlX2lycQorICAgIHBvcnQtPm9wcy0+ZGlzYWJsZV9pcnEKKyAgICBwb3J0LT5vcHMtPmRhdGFfZm9yd2FyZAorICAgIHBvcnQtPm9wcy0+ZGF0YV9yZXZlcnNlCisKKyAgRVBQOgorICAgIHBvcnQtPm9wcy0+ZXBwX3dyaXRlX2RhdGEKKyAgICBwb3J0LT5vcHMtPmVwcF9yZWFkX2RhdGEKKyAgICBwb3J0LT5vcHMtPmVwcF93cml0ZV9hZGRyCisgICAgcG9ydC0+b3BzLT5lcHBfcmVhZF9hZGRyCisKKyAgRUNQOgorICAgIHBvcnQtPm9wcy0+ZWNwX3dyaXRlX2RhdGEKKyAgICBwb3J0LT5vcHMtPmVjcF9yZWFkX2RhdGEKKyAgICBwb3J0LT5vcHMtPmVjcF93cml0ZV9hZGRyCisKKyAgT3RoZXI6CisgICAgcG9ydC0+b3BzLT5uaWJibGVfcmVhZF9kYXRhCisgICAgcG9ydC0+b3BzLT5ieXRlX3JlYWRfZGF0YQorICAgIHBvcnQtPm9wcy0+Y29tcGF0X3dyaXRlX2RhdGEKKworVGhlIHBhcnBvcnQgc3Vic3lzdGVtIGNvbXByaXNlcyAncGFycG9ydCcgKHRoZSBjb3JlIHBvcnQtc2hhcmluZworY29kZSksIGFuZCBhIHZhcmlldHkgb2YgbG93LWxldmVsIGRyaXZlcnMgdGhhdCBhY3R1YWxseSBkbyB0aGUgcG9ydAorYWNjZXNzZXMuICBFYWNoIGxvdy1sZXZlbCBkcml2ZXIgaGFuZGxlcyBhIHBhcnRpY3VsYXIgc3R5bGUgb2YgcG9ydAorKFBDLCBBbWlnYSwgYW5kIHNvIG9uKS4KKworVGhlIHBhcnBvcnQgaW50ZXJmYWNlIHRvIHRoZSBkZXZpY2UgZHJpdmVyIGF1dGhvciBjYW4gYmUgYnJva2VuIGRvd24KK2ludG8gZ2xvYmFsIGZ1bmN0aW9ucyBhbmQgcG9ydCBmdW5jdGlvbnMuCisKK1RoZSBnbG9iYWwgZnVuY3Rpb25zIGFyZSBtb3N0bHkgZm9yIGNvbW11bmljYXRpbmcgYmV0d2VlbiB0aGUgZGV2aWNlCitkcml2ZXIgYW5kIHRoZSBwYXJwb3J0IHN1YnN5c3RlbTogYWNxdWlyaW5nIGEgbGlzdCBvZiBhdmFpbGFibGUgcG9ydHMsCitjbGFpbWluZyBhIHBvcnQgZm9yIGV4Y2x1c2l2ZSB1c2UsIGFuZCBzbyBvbi4gIFRoZXkgYWxzbyBpbmNsdWRlCisnZ2VuZXJpYycgZnVuY3Rpb25zIGZvciBkb2luZyBzdGFuZGFyZCB0aGluZ3MgdGhhdCB3aWxsIHdvcmsgb24gYW55CitJRUVFIDEyODQtY2FwYWJsZSBhcmNoaXRlY3R1cmUuCisKK1RoZSBwb3J0IGZ1bmN0aW9ucyBhcmUgcHJvdmlkZWQgYnkgdGhlIGxvdy1sZXZlbCBkcml2ZXJzLCBhbHRob3VnaCB0aGUKK2NvcmUgcGFycG9ydCBtb2R1bGUgcHJvdmlkZXMgZ2VuZXJpYyAnZGVmYXVsdHMnIGZvciBzb21lIHJvdXRpbmVzLgorVGhlIHBvcnQgZnVuY3Rpb25zIGNhbiBiZSBzcGxpdCBpbnRvIHRocmVlIGdyb3VwczogU1BQLCBFUFAsIGFuZCBFQ1AuCisKK1NQUCAoU3RhbmRhcmQgUGFyYWxsZWwgUG9ydCkgZnVuY3Rpb25zIG1vZGlmeSBzby1jYWxsZWQgJ1NQUCcKK3JlZ2lzdGVyczogZGF0YSwgc3RhdHVzLCBhbmQgY29udHJvbC4gIFRoZSBoYXJkd2FyZSBtYXkgbm90IGFjdHVhbGx5CitoYXZlIHJlZ2lzdGVycyBleGFjdGx5IGxpa2UgdGhhdCwgYnV0IHRoZSBQQyBkb2VzIGFuZCB0aGlzIGludGVyZmFjZSBpcworbW9kZWxsZWQgYWZ0ZXIgY29tbW9uIFBDIGltcGxlbWVudGF0aW9ucy4gIE90aGVyIGxvdy1sZXZlbCBkcml2ZXJzIG1heQorYmUgYWJsZSB0byBlbXVsYXRlIG1vc3Qgb2YgdGhlIGZ1bmN0aW9uYWxpdHkuCisKK0VQUCAoRW5oYW5jZWQgUGFyYWxsZWwgUG9ydCkgZnVuY3Rpb25zIGFyZSBwcm92aWRlZCBmb3IgcmVhZGluZyBhbmQKK3dyaXRpbmcgaW4gSUVFRSAxMjg0IEVQUCBtb2RlLCBhbmQgRUNQIChFeHRlbmRlZCBDYXBhYmlsaXRpZXMgUG9ydCkKK2Z1bmN0aW9ucyBhcmUgdXNlZCBmb3IgSUVFRSAxMjg0IEVDUCBtb2RlLiAoV2hhdCBhYm91dCBCRUNQPyBEb2VzCithbnlvbmUgY2FyZT8pCisKK0hhcmR3YXJlIGFzc2lzdGFuY2UgZm9yIEVQUCBhbmQvb3IgRUNQIHRyYW5zZmVycyBtYXkgb3IgbWF5IG5vdCBiZQorYXZhaWxhYmxlLCBhbmQgaWYgaXQgaXMgYXZhaWxhYmxlIGl0IG1heSBvciBtYXkgbm90IGJlIHVzZWQuICBJZgoraGFyZHdhcmUgaXMgbm90IHVzZWQsIHRoZSB0cmFuc2ZlciB3aWxsIGJlIHNvZnR3YXJlLWRyaXZlbi4gIEluIG9yZGVyCit0byBjb3BlIHdpdGggcGVyaXBoZXJhbHMgdGhhdCBvbmx5IHRlbnVvdXNseSBzdXBwb3J0IElFRUUgMTI4NCwgYQorbG93LWxldmVsIGRyaXZlciBzcGVjaWZpYyBmdW5jdGlvbiBpcyBwcm92aWRlZCwgZm9yIGFsdGVyaW5nICdmdWRnZQorZmFjdG9ycycuCisMCitHTE9CQUwgRlVOQ1RJT05TCistLS0tLS0tLS0tLS0tLS0tCisKK3BhcnBvcnRfcmVnaXN0ZXJfZHJpdmVyIC0gcmVnaXN0ZXIgYSBkZXZpY2UgZHJpdmVyIHdpdGggcGFycG9ydAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU1lOT1BTSVMKKworI2luY2x1ZGUgPGxpbnV4L3BhcnBvcnQuaD4KKworc3RydWN0IHBhcnBvcnRfZHJpdmVyIHsKKwljb25zdCBjaGFyICpuYW1lOworCXZvaWQgKCphdHRhY2gpIChzdHJ1Y3QgcGFycG9ydCAqKTsKKwl2b2lkICgqZGV0YWNoKSAoc3RydWN0IHBhcnBvcnQgKik7CisJc3RydWN0IHBhcnBvcnRfZHJpdmVyICpuZXh0OworfTsKK2ludCBwYXJwb3J0X3JlZ2lzdGVyX2RyaXZlciAoc3RydWN0IHBhcnBvcnRfZHJpdmVyICpkcml2ZXIpOworCitERVNDUklQVElPTgorCitJbiBvcmRlciB0byBiZSBub3RpZmllZCBhYm91dCBwYXJhbGxlbCBwb3J0cyB3aGVuIHRoZXkgYXJlIGRldGVjdGVkLAorcGFycG9ydF9yZWdpc3Rlcl9kcml2ZXIgc2hvdWxkIGJlIGNhbGxlZC4gIFlvdXIgZHJpdmVyIHdpbGwKK2ltbWVkaWF0ZWx5IGJlIG5vdGlmaWVkIG9mIGFsbCBwb3J0cyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGRldGVjdGVkLAorYW5kIG9mIGVhY2ggbmV3IHBvcnQgYXMgbG93LWxldmVsIGRyaXZlcnMgYXJlIGxvYWRlZC4KKworQSAnc3RydWN0IHBhcnBvcnRfZHJpdmVyJyBjb250YWlucyB0aGUgdGV4dHVhbCBuYW1lIG9mIHlvdXIgZHJpdmVyLAorYSBwb2ludGVyIHRvIGEgZnVuY3Rpb24gdG8gaGFuZGxlIG5ldyBwb3J0cywgYW5kIGEgcG9pbnRlciB0byBhCitmdW5jdGlvbiB0byBoYW5kbGUgcG9ydHMgZ29pbmcgYXdheSBkdWUgdG8gYSBsb3ctbGV2ZWwgZHJpdmVyCit1bmxvYWRpbmcuICBQb3J0cyB3aWxsIG9ubHkgYmUgZGV0YWNoZWQgaWYgdGhleSBhcmUgbm90IGJlaW5nIHVzZWQKKyhpLmUuIHRoZXJlIGFyZSBubyBkZXZpY2VzIHJlZ2lzdGVyZWQgb24gdGhlbSkuCisKK1RoZSB2aXNpYmxlIHBhcnRzIG9mIHRoZSAnc3RydWN0IHBhcnBvcnQgKicgYXJndW1lbnQgZ2l2ZW4gdG8KK2F0dGFjaC9kZXRhY2ggYXJlOgorCitzdHJ1Y3QgcGFycG9ydAoreworCXN0cnVjdCBwYXJwb3J0ICpuZXh0OyAvKiBuZXh0IHBhcnBvcnQgaW4gbGlzdCAqLworCWNvbnN0IGNoYXIgKm5hbWU7ICAgICAvKiBwb3J0J3MgbmFtZSAqLworCXVuc2lnbmVkIGludCBtb2RlczsgICAvKiBiaXRmaWVsZCBvZiBoYXJkd2FyZSBtb2RlcyAqLworCXN0cnVjdCBwYXJwb3J0X2RldmljZV9pbmZvIHByb2JlX2luZm87CisJCQkgICAgICAvKiBJRUVFMTI4NCBpbmZvICovCisJaW50IG51bWJlcjsgICAgICAgICAgIC8qIHBhcnBvcnQgaW5kZXggKi8KKwlzdHJ1Y3QgcGFycG9ydF9vcGVyYXRpb25zICpvcHM7CisJLi4uCit9OworCitUaGVyZSBhcmUgb3RoZXIgbWVtYmVycyBvZiB0aGUgc3RydWN0dXJlLCBidXQgdGhleSBzaG91bGQgbm90IGJlCit0b3VjaGVkLgorCitUaGUgJ21vZGVzJyBtZW1iZXIgc3VtbWFyaXNlcyB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSB1bmRlcmx5aW5nCitoYXJkd2FyZS4gIEl0IGNvbnNpc3RzIG9mIGZsYWdzIHdoaWNoIG1heSBiZSBiaXR3aXNlLW9yZWQgdG9nZXRoZXI6CisKKyAgUEFSUE9SVF9NT0RFX1BDU1BQCQlJQk0gUEMgcmVnaXN0ZXJzIGFyZSBhdmFpbGFibGUsCisJCQkJaS5lLiBmdW5jdGlvbnMgdGhhdCBhY3Qgb24gZGF0YSwKKwkJCQljb250cm9sIGFuZCBzdGF0dXMgcmVnaXN0ZXJzIGFyZQorCQkJCXByb2JhYmx5IHdyaXRpbmcgZGlyZWN0bHkgdG8gdGhlCisJCQkJaGFyZHdhcmUuCisgIFBBUlBPUlRfTU9ERV9UUklTVEFURQkJVGhlIGRhdGEgZHJpdmVycyBtYXkgYmUgdHVybmVkIG9mZi4KKwkJCQlUaGlzIGFsbG93cyB0aGUgZGF0YSBsaW5lcyB0byBiZSB1c2VkCisJCQkJZm9yIHJldmVyc2UgKHBlcmlwaGVyYWwgdG8gaG9zdCkKKwkJCQl0cmFuc2ZlcnMuCisgIFBBUlBPUlRfTU9ERV9DT01QQVQJCVRoZSBoYXJkd2FyZSBjYW4gYXNzaXN0IHdpdGgKKwkJCQljb21wYXRpYmlsaXR5LW1vZGUgKHByaW50ZXIpCisJCQkJdHJhbnNmZXJzLCBpLmUuIGNvbXBhdF93cml0ZV9ibG9jay4KKyAgUEFSUE9SVF9NT0RFX0VQUAkJVGhlIGhhcmR3YXJlIGNhbiBhc3Npc3Qgd2l0aCBFUFAKKwkJCQl0cmFuc2ZlcnMuCisgIFBBUlBPUlRfTU9ERV9FQ1AJCVRoZSBoYXJkd2FyZSBjYW4gYXNzaXN0IHdpdGggRUNQCisJCQkJdHJhbnNmZXJzLgorICBQQVJQT1JUX01PREVfRE1BCQlUaGUgaGFyZHdhcmUgY2FuIHVzZSBETUEsIHNvIHlvdSBtaWdodAorCQkJCXdhbnQgdG8gcGFzcyBJU0EgRE1BLWFibGUgbWVtb3J5CisJCQkJKGkuZS4gbWVtb3J5IGFsbG9jYXRlZCB1c2luZyB0aGUKKwkJCQlHRlBfRE1BIGZsYWcgd2l0aCBrbWFsbG9jKSB0byB0aGUKKwkJCQlsb3ctbGV2ZWwgZHJpdmVyIGluIG9yZGVyIHRvIHRha2UKKwkJCQlhZHZhbnRhZ2Ugb2YgaXQuCisKK1RoZXJlIG1heSBiZSBvdGhlciBmbGFncyBpbiAnbW9kZXMnIGFzIHdlbGwuCisKK1RoZSBjb250ZW50cyBvZiAnbW9kZXMnIGlzIGFkdmlzb3J5IG9ubHkuICBGb3IgZXhhbXBsZSwgaWYgdGhlCitoYXJkd2FyZSBpcyBjYXBhYmxlIG9mIERNQSwgYW5kIFBBUlBPUlRfTU9ERV9ETUEgaXMgaW4gJ21vZGVzJywgaXQKK2RvZXNuJ3QgbmVjZXNzYXJpbHkgbWVhbiB0aGF0IERNQSB3aWxsIGFsd2F5cyBiZSB1c2VkIHdoZW4gcG9zc2libGUuCitTaW1pbGFybHksIGhhcmR3YXJlIHRoYXQgaXMgY2FwYWJsZSBvZiBhc3Npc3RpbmcgRUNQIHRyYW5zZmVycyB3b24ndAorbmVjZXNzYXJpbHkgYmUgdXNlZC4KKworUkVUVVJOIFZBTFVFCisKK1plcm8gb24gc3VjY2Vzcywgb3RoZXJ3aXNlIGFuIGVycm9yIGNvZGUuCisKK0VSUk9SUworCitOb25lLiAoQ2FuIGl0IGZhaWw/IFdoeSByZXR1cm4gaW50PykKKworRVhBTVBMRQorCitzdGF0aWMgdm9pZCBscF9hdHRhY2ggKHN0cnVjdCBwYXJwb3J0ICpwb3J0KQoreworCS4uLgorCXByaXZhdGUgPSBrbWFsbG9jICguLi4pOworCWRldltjb3VudCsrXSA9IHBhcnBvcnRfcmVnaXN0ZXJfZGV2aWNlICguLi4pOworCS4uLgorfQorCitzdGF0aWMgdm9pZCBscF9kZXRhY2ggKHN0cnVjdCBwYXJwb3J0ICpwb3J0KQoreworCS4uLgorfQorCitzdGF0aWMgc3RydWN0IHBhcnBvcnRfZHJpdmVyIGxwX2RyaXZlciA9IHsKKwkibHAiLAorCWxwX2F0dGFjaCwKKwlscF9kZXRhY2gsCisJTlVMTCAvKiBhbHdheXMgcHV0IE5VTEwgaGVyZSAqLworfTsKKworaW50IGxwX2luaXQgKHZvaWQpCit7CisJLi4uCisJaWYgKHBhcnBvcnRfcmVnaXN0ZXJfZHJpdmVyICgmbHBfZHJpdmVyKSkgeworCQkvKiBGYWlsZWQ7IG5vdGhpbmcgd2UgY2FuIGRvLiAqLworCQlyZXR1cm4gLUVJTzsKKwl9CisJLi4uCit9CisKK1NFRSBBTFNPCisKK3BhcnBvcnRfdW5yZWdpc3Rlcl9kcml2ZXIsIHBhcnBvcnRfcmVnaXN0ZXJfZGV2aWNlLCBwYXJwb3J0X2VudW1lcmF0ZQorDAorcGFycG9ydF91bnJlZ2lzdGVyX2RyaXZlciAtIHRlbGwgcGFycG9ydCB0byBmb3JnZXQgYWJvdXQgdGhpcyBkcml2ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU1lOT1BTSVMKKworI2luY2x1ZGUgPGxpbnV4L3BhcnBvcnQuaD4KKworc3RydWN0IHBhcnBvcnRfZHJpdmVyIHsKKwljb25zdCBjaGFyICpuYW1lOworCXZvaWQgKCphdHRhY2gpIChzdHJ1Y3QgcGFycG9ydCAqKTsKKwl2b2lkICgqZGV0YWNoKSAoc3RydWN0IHBhcnBvcnQgKik7CisJc3RydWN0IHBhcnBvcnRfZHJpdmVyICpuZXh0OworfTsKK3ZvaWQgcGFycG9ydF91bnJlZ2lzdGVyX2RyaXZlciAoc3RydWN0IHBhcnBvcnRfZHJpdmVyICpkcml2ZXIpOworCitERVNDUklQVElPTgorCitUaGlzIHRlbGxzIHBhcnBvcnQgbm90IHRvIG5vdGlmeSB0aGUgZGV2aWNlIGRyaXZlciBvZiBuZXcgcG9ydHMgb3Igb2YKK3BvcnRzIGdvaW5nIGF3YXkuICBSZWdpc3RlcmVkIGRldmljZXMgYmVsb25naW5nIHRvIHRoYXQgZHJpdmVyIGFyZSBOT1QKK3VucmVnaXN0ZXJlZDogcGFycG9ydF91bnJlZ2lzdGVyX2RldmljZSBtdXN0IGJlIHVzZWQgZm9yIGVhY2ggb25lLgorCitFWEFNUExFCisKK3ZvaWQgY2xlYW51cF9tb2R1bGUgKHZvaWQpCit7CisJLi4uCisJLyogU3RvcCBub3RpZmljYXRpb25zLiAqLworCXBhcnBvcnRfdW5yZWdpc3Rlcl9kcml2ZXIgKCZscF9kcml2ZXIpOworCisJLyogVW5yZWdpc3RlciBkZXZpY2VzLiAqLworCWZvciAoaSA9IDA7IGkgPCBOVU1fREVWUzsgaSsrKQorCQlwYXJwb3J0X3VucmVnaXN0ZXJfZGV2aWNlIChkZXZbaV0pOworCS4uLgorfQorCitTRUUgQUxTTworCitwYXJwb3J0X3JlZ2lzdGVyX2RyaXZlciwgcGFycG9ydF9lbnVtZXJhdGUKKwwKK3BhcnBvcnRfZW51bWVyYXRlIC0gcmV0cmlldmUgYSBsaXN0IG9mIHBhcmFsbGVsIHBvcnRzIChERVBSRUNBVEVEKQorLS0tLS0tLS0tLS0tLS0tLS0KKworU1lOT1BTSVMKKworI2luY2x1ZGUgPGxpbnV4L3BhcnBvcnQuaD4KKworc3RydWN0IHBhcnBvcnQgKnBhcnBvcnRfZW51bWVyYXRlICh2b2lkKTsKKworREVTQ1JJUFRJT04KKworUmV0cmlldmUgdGhlIGZpcnN0IG9mIGEgbGlzdCBvZiB2YWxpZCBwYXJhbGxlbCBwb3J0cyBmb3IgdGhpcyBtYWNoaW5lLgorU3VjY2Vzc2l2ZSBwYXJhbGxlbCBwb3J0cyBjYW4gYmUgZm91bmQgdXNpbmcgdGhlICdzdHJ1Y3QgcGFycG9ydAorKm5leHQnIGVsZW1lbnQgb2YgdGhlICdzdHJ1Y3QgcGFycG9ydCAqJyB0aGF0IGlzIHJldHVybmVkLiAgSWYgJ25leHQnCitpcyBOVUxMLCB0aGVyZSBhcmUgbm8gbW9yZSBwYXJhbGxlbCBwb3J0cyBpbiB0aGUgbGlzdC4gIFRoZSBudW1iZXIgb2YKK3BvcnRzIGluIHRoZSBsaXN0IHdpbGwgbm90IGV4Y2VlZCBQQVJQT1JUX01BWC4KKworUkVUVVJOIFZBTFVFCisKK0EgJ3N0cnVjdCBwYXJwb3J0IConIGRlc2NyaWJpbmcgYSB2YWxpZCBwYXJhbGxlbCBwb3J0IGZvciB0aGUgbWFjaGluZSwKK29yIE5VTEwgaWYgdGhlcmUgYXJlIG5vbmUuCisKK0VSUk9SUworCitUaGlzIGZ1bmN0aW9uIGNhbiByZXR1cm4gTlVMTCB0byBpbmRpY2F0ZSB0aGF0IHRoZXJlIGFyZSBubyBwYXJhbGxlbAorcG9ydHMgdG8gdXNlLgorCitFWEFNUExFCisKK2ludCBkZXRlY3RfZGV2aWNlICh2b2lkKQoreworCXN0cnVjdCBwYXJwb3J0ICpwb3J0OworCisJZm9yIChwb3J0ID0gcGFycG9ydF9lbnVtZXJhdGUgKCk7CisJICAgICBwb3J0ICE9IE5VTEw7CisJICAgICBwb3J0ID0gcG9ydC0+bmV4dCkgeworCQkvKiBUcnkgdG8gZGV0ZWN0IGEgZGV2aWNlIG9uIHRoZSBwb3J0Li4uICovCisJCS4uLgorICAgICAgICAgICAgIH0KKwl9CisKKwkuLi4KK30KKworTk9URVMKKworcGFycG9ydF9lbnVtZXJhdGUgaXMgZGVwcmVjYXRlZDsgcGFycG9ydF9yZWdpc3Rlcl9kcml2ZXIgc2hvdWxkIGJlCit1c2VkIGluc3RlYWQuCisKK1NFRSBBTFNPCisKK3BhcnBvcnRfcmVnaXN0ZXJfZHJpdmVyLCBwYXJwb3J0X3VucmVnaXN0ZXJfZHJpdmVyCisMCitwYXJwb3J0X3JlZ2lzdGVyX2RldmljZSAtIHJlZ2lzdGVyIHRvIHVzZSBhIHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NZTk9QU0lTCisKKyNpbmNsdWRlIDxsaW51eC9wYXJwb3J0Lmg+CisKK3R5cGVkZWYgaW50ICgqcHJlZW1wdF9mdW5jKSAodm9pZCAqaGFuZGxlKTsKK3R5cGVkZWYgdm9pZCAoKndha2V1cF9mdW5jKSAodm9pZCAqaGFuZGxlKTsKK3R5cGVkZWYgaW50ICgqaXJxX2Z1bmMpIChpbnQgaXJxLCB2b2lkICpoYW5kbGUsIHN0cnVjdCBwdF9yZWdzICopOworCitzdHJ1Y3QgcGFyZGV2aWNlICpwYXJwb3J0X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgcGFycG9ydCAqcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVlbXB0X2Z1bmMgcHJlZW1wdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdha2V1cF9mdW5jIHdha2V1cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlycV9mdW5jIGlycSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmhhbmRsZSk7CisKK0RFU0NSSVBUSU9OCisKK1VzZSB0aGlzIGZ1bmN0aW9uIHRvIHJlZ2lzdGVyIHlvdXIgZGV2aWNlIGRyaXZlciBvbiBhIHBhcmFsbGVsIHBvcnQKKygncG9ydCcpLiAgT25jZSB5b3UgaGF2ZSBkb25lIHRoYXQsIHlvdSB3aWxsIGJlIGFibGUgdG8gdXNlCitwYXJwb3J0X2NsYWltIGFuZCBwYXJwb3J0X3JlbGVhc2UgaW4gb3JkZXIgdG8gdXNlIHRoZSBwb3J0LgorCitUaGUgKCduYW1lJykgYXJndW1lbnQgaXMgdGhlIG5hbWUgb2YgdGhlIGRldmljZSB0aGF0IGFwcGVhcnMgaW4gL3Byb2MKK2ZpbGVzeXN0ZW0uIFRoZSBzdHJpbmcgbXVzdCBiZSB2YWxpZCBmb3IgdGhlIHdob2xlIGxpZmV0aW1lIG9mIHRoZQorZGV2aWNlICh1bnRpbCBwYXJwb3J0X3VucmVnaXN0ZXJfZGV2aWNlIGlzIGNhbGxlZCkuCisKK1RoaXMgZnVuY3Rpb24gd2lsbCByZWdpc3RlciB0aHJlZSBjYWxsYmFja3MgaW50byB5b3VyIGRyaXZlcjoKKydwcmVlbXB0JywgJ3dha2V1cCcgYW5kICdpcnEnLiAgRWFjaCBvZiB0aGVzZSBtYXkgYmUgTlVMTCBpbiBvcmRlciB0bworaW5kaWNhdGUgdGhhdCB5b3UgZG8gbm90IHdhbnQgYSBjYWxsYmFjay4KKworV2hlbiB0aGUgJ3ByZWVtcHQnIGZ1bmN0aW9uIGlzIGNhbGxlZCwgaXQgaXMgYmVjYXVzZSBhbm90aGVyIGRyaXZlcgord2lzaGVzIHRvIHVzZSB0aGUgcGFyYWxsZWwgcG9ydC4gIFRoZSAncHJlZW1wdCcgZnVuY3Rpb24gc2hvdWxkIHJldHVybgorbm9uLXplcm8gaWYgdGhlIHBhcmFsbGVsIHBvcnQgY2Fubm90IGJlIHJlbGVhc2VkIHlldCAtLSBpZiB6ZXJvIGlzCityZXR1cm5lZCwgdGhlIHBvcnQgaXMgbG9zdCB0byBhbm90aGVyIGRyaXZlciBhbmQgdGhlIHBvcnQgbXVzdCBiZQorcmUtY2xhaW1lZCBiZWZvcmUgdXNlLgorCitUaGUgJ3dha2V1cCcgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2UgYW5vdGhlciBkcml2ZXIgaGFzIHJlbGVhc2VkIHRoZQorcG9ydCBhbmQgbm8gb3RoZXIgZHJpdmVyIGhhcyB5ZXQgY2xhaW1lZCBpdC4gIFlvdSBjYW4gY2xhaW0gdGhlCitwYXJhbGxlbCBwb3J0IGZyb20gd2l0aGluIHRoZSAnd2FrZXVwJyBmdW5jdGlvbiAoaW4gd2hpY2ggY2FzZSB0aGUKK2NsYWltIGlzIGd1YXJhbnRlZWQgdG8gc3VjY2VlZCksIG9yIGNob29zZSBub3QgdG8gaWYgeW91IGRvbid0IG5lZWQgaXQKK25vdy4KKworSWYgYW4gaW50ZXJydXB0IG9jY3VycyBvbiB0aGUgcGFyYWxsZWwgcG9ydCB5b3VyIGRyaXZlciBoYXMgY2xhaW1lZCwKK3RoZSAnaXJxJyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZC4gKFdyaXRlIHNvbWV0aGluZyBhYm91dCBzaGFyZWQKK2ludGVycnVwdHMgaGVyZS4pCisKK1RoZSAnaGFuZGxlJyBpcyBhIHBvaW50ZXIgdG8gZHJpdmVyLXNwZWNpZmljIGRhdGEsIGFuZCBpcyBwYXNzZWQgdG8KK3RoZSBjYWxsYmFjayBmdW5jdGlvbnMuCisKKydmbGFncycgbWF5IGJlIGEgYml0d2lzZSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIGZsYWdzOgorCisgICAgICAgIEZsYWcgICAgICAgICAgICBNZWFuaW5nCisgIFBBUlBPUlRfREVWX0VYQ0wJVGhlIGRldmljZSBjYW5ub3Qgc2hhcmUgdGhlIHBhcmFsbGVsIHBvcnQgYXQgYWxsLgorCQkJVXNlIHRoaXMgb25seSB3aGVuIGFic29sdXRlbHkgbmVjZXNzYXJ5LgorCitUaGUgdHlwZWRlZnMgYXJlIG5vdCBhY3R1YWxseSBkZWZpbmVkIC0tIHRoZXkgYXJlIG9ubHkgc2hvd24gaW4gb3JkZXIKK3RvIG1ha2UgdGhlIGZ1bmN0aW9uIHByb3RvdHlwZSBtb3JlIHJlYWRhYmxlLgorCitUaGUgdmlzaWJsZSBwYXJ0cyBvZiB0aGUgcmV0dXJuZWQgJ3N0cnVjdCBwYXJkZXZpY2UnIGFyZToKKworc3RydWN0IHBhcmRldmljZSB7CisJc3RydWN0IHBhcnBvcnQgKnBvcnQ7CS8qIEFzc29jaWF0ZWQgcG9ydCAqLworCXZvaWQgKnByaXZhdGU7CQkvKiBEZXZpY2UgZHJpdmVyJ3MgJ2hhbmRsZScgKi8KKwkuLi4KK307CisKK1JFVFVSTiBWQUxVRQorCitBICdzdHJ1Y3QgcGFyZGV2aWNlIConOiBhIGhhbmRsZSB0byB0aGUgcmVnaXN0ZXJlZCBwYXJhbGxlbCBwb3J0CitkZXZpY2UgdGhhdCBjYW4gYmUgdXNlZCBmb3IgcGFycG9ydF9jbGFpbSwgcGFycG9ydF9yZWxlYXNlLCBldGMuCisKK0VSUk9SUworCitBIHJldHVybiB2YWx1ZSBvZiBOVUxMIGluZGljYXRlcyB0aGF0IHRoZXJlIHdhcyBhIHByb2JsZW0gcmVnaXN0ZXJpbmcKK2EgZGV2aWNlIG9uIHRoYXQgcG9ydC4KKworRVhBTVBMRQorCitzdGF0aWMgaW50IHByZWVtcHQgKHZvaWQgKmhhbmRsZSkKK3sKKwlpZiAoYnVzeV9yaWdodF9ub3cpCisJCXJldHVybiAxOworCisJbXVzdF9yZWNsYWltX3BvcnQgPSAxOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCB3YWtldXAgKHZvaWQgKmhhbmRsZSkKK3sKKwlzdHJ1Y3QgdG9hc3RlciAqcHJpdmF0ZSA9IGhhbmRsZTsKKwlzdHJ1Y3QgcGFyZGV2aWNlICpkZXYgPSBwcml2YXRlLT5kZXY7CisJaWYgKCFkZXYpIHJldHVybjsgLyogYXZvaWQgcmFjZXMgKi8KKworCWlmICh3YW50X3BvcnQpCisJCXBhcnBvcnRfY2xhaW0gKGRldik7Cit9CisKK3N0YXRpYyBpbnQgdG9hc3Rlcl9kZXRlY3QgKHN0cnVjdCB0b2FzdGVyICpwcml2YXRlLCBzdHJ1Y3QgcGFycG9ydCAqcG9ydCkKK3sKKwlwcml2YXRlLT5kZXYgPSBwYXJwb3J0X3JlZ2lzdGVyX2RldmljZSAocG9ydCwgInRvYXN0ZXIiLCBwcmVlbXB0LAorCQkJCQkgICAgICAgIHdha2V1cCwgTlVMTCwgMCwKKwkJCQkJCXByaXZhdGUpOworCWlmICghcHJpdmF0ZS0+ZGV2KQorCQkvKiBDb3VsZG4ndCByZWdpc3RlciB3aXRoIHBhcnBvcnQuICovCisJCXJldHVybiAtRUlPOworCisJbXVzdF9yZWNsYWltX3BvcnQgPSAwOworCWJ1c3lfcmlnaHRfbm93ID0gMTsKKwlwYXJwb3J0X2NsYWltX29yX2Jsb2NrIChwcml2YXRlLT5kZXYpOworCS4uLgorCS8qIERvbid0IG5lZWQgdGhlIHBvcnQgd2hpbGUgdGhlIHRvYXN0ZXIgd2FybXMgdXAuICovCisJYnVzeV9yaWdodF9ub3cgPSAwOworCS4uLgorCWJ1c3lfcmlnaHRfbm93ID0gMTsKKwlpZiAobXVzdF9yZWNsYWltX3BvcnQpIHsKKwkJcGFycG9ydF9jbGFpbV9vcl9ibG9jayAocHJpdmF0ZS0+ZGV2KTsKKwkJbXVzdF9yZWNsYWltX3BvcnQgPSAwOworCX0KKwkuLi4KK30KKworU0VFIEFMU08KKworcGFycG9ydF91bnJlZ2lzdGVyX2RldmljZSwgcGFycG9ydF9jbGFpbQorDAorcGFycG9ydF91bnJlZ2lzdGVyX2RldmljZSAtIGZpbmlzaCB1c2luZyBhIHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU1lOUE9QU0lTCisKKyNpbmNsdWRlIDxsaW51eC9wYXJwb3J0Lmg+CisKK3ZvaWQgcGFycG9ydF91bnJlZ2lzdGVyX2RldmljZSAoc3RydWN0IHBhcmRldmljZSAqZGV2KTsKKworREVTQ1JJUFRJT04KKworVGhpcyBmdW5jdGlvbiBpcyB0aGUgb3Bwb3NpdGUgb2YgcGFycG9ydF9yZWdpc3Rlcl9kZXZpY2UuICBBZnRlciB1c2luZworcGFycG9ydF91bnJlZ2lzdGVyX2RldmljZSwgJ2RldicgaXMgbm8gbG9uZ2VyIGEgdmFsaWQgZGV2aWNlIGhhbmRsZS4KKworWW91IHNob3VsZCBub3QgdW5yZWdpc3RlciBhIGRldmljZSB0aGF0IGlzIGN1cnJlbnRseSBjbGFpbWVkLCBhbHRob3VnaAoraWYgeW91IGRvIGl0IHdpbGwgYmUgcmVsZWFzZWQgYXV0b21hdGljYWxseS4KKworRVhBTVBMRQorCisJLi4uCisJa2ZyZWUgKGRldi0+cHJpdmF0ZSk7IC8qIGJlZm9yZSB3ZSBsb3NlIHRoZSBwb2ludGVyICovCisJcGFycG9ydF91bnJlZ2lzdGVyX2RldmljZSAoZGV2KTsKKwkuLi4KKworU0VFIEFMU08KKworcGFycG9ydF91bnJlZ2lzdGVyX2RyaXZlcgorDAorcGFycG9ydF9jbGFpbSwgcGFycG9ydF9jbGFpbV9vcl9ibG9jayAtIGNsYWltIHRoZSBwYXJhbGxlbCBwb3J0IGZvciBhIGRldmljZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTWU5PUFNJUworCisjaW5jbHVkZSA8bGludXgvcGFycG9ydC5oPgorCitpbnQgcGFycG9ydF9jbGFpbSAoc3RydWN0IHBhcmRldmljZSAqZGV2KTsKK2ludCBwYXJwb3J0X2NsYWltX29yX2Jsb2NrIChzdHJ1Y3QgcGFyZGV2aWNlICpkZXYpOworCitERVNDUklQVElPTgorCitUaGVzZSBmdW5jdGlvbnMgYXR0ZW1wdCB0byBnYWluIGNvbnRyb2wgb2YgdGhlIHBhcmFsbGVsIHBvcnQgb24gd2hpY2gKKydkZXYnIGlzIHJlZ2lzdGVyZWQuICAncGFycG9ydF9jbGFpbScgZG9lcyBub3QgYmxvY2ssIGJ1dAorJ3BhcnBvcnRfY2xhaW1fb3JfYmxvY2snIG1heSBkby4gKFB1dCBzb21ldGhpbmcgaGVyZSBhYm91dCBibG9ja2luZworaW50ZXJydXB0aWJseSBvciBub24taW50ZXJydXB0aWJseS4pCisKK1lvdSBzaG91bGQgbm90IHRyeSB0byBjbGFpbSBhIHBvcnQgdGhhdCB5b3UgaGF2ZSBhbHJlYWR5IGNsYWltZWQuCisKK1JFVFVSTiBWQUxVRQorCitBIHJldHVybiB2YWx1ZSBvZiB6ZXJvIGluZGljYXRlcyB0aGF0IHRoZSBwb3J0IHdhcyBzdWNjZXNzZnVsbHkKK2NsYWltZWQsIGFuZCB0aGUgY2FsbGVyIG5vdyBoYXMgcG9zc2Vzc2lvbiBvZiB0aGUgcGFyYWxsZWwgcG9ydC4KKworSWYgJ3BhcnBvcnRfY2xhaW1fb3JfYmxvY2snIGJsb2NrcyBiZWZvcmUgcmV0dXJuaW5nIHN1Y2Nlc3NmdWxseSwgdGhlCityZXR1cm4gdmFsdWUgaXMgcG9zaXRpdmUuCisKK0VSUk9SUworCisgIC1FQUdBSU4gIFRoZSBwb3J0IGlzIHVuYXZhaWxhYmxlIGF0IHRoZSBtb21lbnQsIGJ1dCBhbm90aGVyIGF0dGVtcHQKKyAgICAgICAgICAgdG8gY2xhaW0gaXQgbWF5IHN1Y2NlZWQuCisKK1NFRSBBTFNPCisKK3BhcnBvcnRfcmVsZWFzZQorDAorcGFycG9ydF9yZWxlYXNlIC0gcmVsZWFzZSB0aGUgcGFyYWxsZWwgcG9ydAorLS0tLS0tLS0tLS0tLS0tCisKK1NZTk9QU0lTCisKKyNpbmNsdWRlIDxsaW51eC9wYXJwb3J0Lmg+CisKK3ZvaWQgcGFycG9ydF9yZWxlYXNlIChzdHJ1Y3QgcGFyZGV2aWNlICpkZXYpOworCitERVNDUklQVElPTgorCitPbmNlIGEgcGFyYWxsZWwgcG9ydCBkZXZpY2UgaGFzIGJlZW4gY2xhaW1lZCwgaXQgY2FuIGJlIHJlbGVhc2VkIHVzaW5nCisncGFycG9ydF9yZWxlYXNlJy4gIEl0IGNhbm5vdCBmYWlsLCBidXQgeW91IHNob3VsZCBub3QgcmVsZWFzZSBhCitkZXZpY2UgdGhhdCB5b3UgZG8gbm90IGhhdmUgcG9zc2Vzc2lvbiBvZi4KKworRVhBTVBMRQorCitzdGF0aWMgc2l6ZV90IHdyaXRlIChzdHJ1Y3QgcGFyZGV2aWNlICpkZXYsIGNvbnN0IHZvaWQgKmJ1ZiwKKwkJICAgICBzaXplX3QgbGVuKQoreworCS4uLgorCXdyaXR0ZW4gPSBkZXYtPnBvcnQtPm9wcy0+d3JpdGVfZWNwX2RhdGEgKGRldi0+cG9ydCwgYnVmLAorCQkJCQkJICBsZW4pOworCXBhcnBvcnRfcmVsZWFzZSAoZGV2KTsKKwkuLi4KK30KKworCitTRUUgQUxTTworCitjaGFuZ2VfbW9kZSwgcGFycG9ydF9jbGFpbSwgcGFycG9ydF9jbGFpbV9vcl9ibG9jaywgcGFycG9ydF95aWVsZAorDAorcGFycG9ydF95aWVsZCwgcGFycG9ydF95aWVsZF9ibG9ja2luZyAtIHRlbXBvcmFyaWx5IHJlbGVhc2UgYSBwYXJhbGxlbCBwb3J0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NZTk9QU0lTCisKKyNpbmNsdWRlIDxsaW51eC9wYXJwb3J0Lmg+CisKK2ludCBwYXJwb3J0X3lpZWxkIChzdHJ1Y3QgcGFyZGV2aWNlICpkZXYpCitpbnQgcGFycG9ydF95aWVsZF9ibG9ja2luZyAoc3RydWN0IHBhcmRldmljZSAqZGV2KTsKKworREVTQ1JJUFRJT04KKworV2hlbiBhIGRyaXZlciBoYXMgY29udHJvbCBvZiBhIHBhcmFsbGVsIHBvcnQsIGl0IG1heSBhbGxvdyBhbm90aGVyCitkcml2ZXIgdG8gdGVtcG9yYXJpbHkgJ2JvcnJvdycgaXQuICAncGFycG9ydF95aWVsZCcgZG9lcyBub3QgYmxvY2s7CisncGFycG9ydF95aWVsZF9ibG9ja2luZycgbWF5IGRvLgorCitSRVRVUk4gVkFMVUUKKworQSByZXR1cm4gdmFsdWUgb2YgemVybyBpbmRpY2F0ZXMgdGhhdCB0aGUgY2FsbGVyIHN0aWxsIG93bnMgdGhlIHBvcnQKK2FuZCB0aGUgY2FsbCBkaWQgbm90IGJsb2NrLgorCitBIHBvc2l0aXZlIHJldHVybiB2YWx1ZSBmcm9tICdwYXJwb3J0X3lpZWxkX2Jsb2NraW5nJyBpbmRpY2F0ZXMgdGhhdAordGhlIGNhbGxlciBzdGlsbCBvd25zIHRoZSBwb3J0IGFuZCB0aGUgY2FsbCBibG9ja2VkLgorCitBIHJldHVybiB2YWx1ZSBvZiAtRUFHQUlOIGluZGljYXRlcyB0aGF0IHRoZSBjYWxsZXIgbm8gbG9uZ2VyIG93bnMgdGhlCitwb3J0LCBhbmQgaXQgbXVzdCBiZSByZS1jbGFpbWVkIGJlZm9yZSB1c2UuCisKK0VSUk9SUworCisgIC1FQUdBSU4gIE93bmVyc2hpcCBvZiB0aGUgcGFyYWxsZWwgcG9ydCB3YXMgZ2l2ZW4gYXdheS4KKworU0VFIEFMU08KKworcGFycG9ydF9yZWxlYXNlCisMCitwYXJwb3J0X3dhaXRfcGVyaXBoZXJhbCAtIHdhaXQgZm9yIHN0YXR1cyBsaW5lcywgdXAgdG8gMzVtcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU1lOT1BTSVMKKworI2luY2x1ZGUgPGxpbnV4L3BhcnBvcnQuaD4KKworaW50IHBhcnBvcnRfd2FpdF9wZXJpcGhlcmFsIChzdHJ1Y3QgcGFycG9ydCAqcG9ydCwKKwkJCSAgICAgdW5zaWduZWQgY2hhciBtYXNrLAorCQkJICAgICB1bnNpZ25lZCBjaGFyIHZhbCk7CisKK0RFU0NSSVBUSU9OCisKK1dhaXQgZm9yIHRoZSBzdGF0dXMgbGluZXMgaW4gbWFzayB0byBtYXRjaCB0aGUgdmFsdWVzIGluIHZhbC4KKworUkVUVVJOIFZBTFVFCisKKyAtRUlOVFIgIGEgc2lnbmFsIGlzIHBlbmRpbmcKKyAgICAgIDAgIHRoZSBzdGF0dXMgbGluZXMgaW4gbWFzayBoYXZlIHZhbHVlcyBpbiB2YWwKKyAgICAgIDEgIHRpbWVkIG91dCB3aGlsZSB3YWl0aW5nICgzNW1zIGVsYXBzZWQpCisKK1NFRSBBTFNPCisKK3BhcnBvcnRfcG9sbF9wZXJpcGhlcmFsCisMCitwYXJwb3J0X3BvbGxfcGVyaXBoZXJhbCAtIHdhaXQgZm9yIHN0YXR1cyBsaW5lcywgaW4gdXNlYworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU1lOT1BTSVMKKworI2luY2x1ZGUgPGxpbnV4L3BhcnBvcnQuaD4KKworaW50IHBhcnBvcnRfcG9sbF9wZXJpcGhlcmFsIChzdHJ1Y3QgcGFycG9ydCAqcG9ydCwKKwkJCSAgICAgdW5zaWduZWQgY2hhciBtYXNrLAorCQkJICAgICB1bnNpZ25lZCBjaGFyIHZhbCwKKwkJCSAgICAgaW50IHVzZWMpOworCitERVNDUklQVElPTgorCitXYWl0IGZvciB0aGUgc3RhdHVzIGxpbmVzIGluIG1hc2sgdG8gbWF0Y2ggdGhlIHZhbHVlcyBpbiB2YWwuCisKK1JFVFVSTiBWQUxVRQorCisgLUVJTlRSICBhIHNpZ25hbCBpcyBwZW5kaW5nCisgICAgICAwICB0aGUgc3RhdHVzIGxpbmVzIGluIG1hc2sgaGF2ZSB2YWx1ZXMgaW4gdmFsCisgICAgICAxICB0aW1lZCBvdXQgd2hpbGUgd2FpdGluZyAodXNlYyBtaWNyb3NlY29uZHMgaGF2ZSBlbGFwc2VkKQorCitTRUUgQUxTTworCitwYXJwb3J0X3dhaXRfcGVyaXBoZXJhbAorDAorcGFycG9ydF93YWl0X2V2ZW50IC0gd2FpdCBmb3IgYW4gZXZlbnQgb24gYSBwb3J0CistLS0tLS0tLS0tLS0tLS0tLS0KKworU1lOT1BTSVMKKworI2luY2x1ZGUgPGxpbnV4L3BhcnBvcnQuaD4KKworaW50IHBhcnBvcnRfd2FpdF9ldmVudCAoc3RydWN0IHBhcnBvcnQgKnBvcnQsIHNpZ25lZCBsb25nIHRpbWVvdXQpCisKK0RFU0NSSVBUSU9OCisKK1dhaXQgZm9yIGFuIGV2ZW50IChlLmcuIGludGVycnVwdCkgb24gYSBwb3J0LiAgVGhlIHRpbWVvdXQgaXMgaW4KK2ppZmZpZXMuCisKK1JFVFVSTiBWQUxVRQorCisgICAgICAwICBzdWNjZXNzCisgICAgIDwwICBlcnJvciAoZXhpdCBhcyBzb29uIGFzIHBvc3NpYmxlKQorICAgICA+MCAgdGltZWQgb3V0CisMCitwYXJwb3J0X25lZ290aWF0ZSAtIHBlcmZvcm0gSUVFRSAxMjg0IG5lZ290aWF0aW9uCistLS0tLS0tLS0tLS0tLS0tLQorCitTWU5PUFNJUworCisjaW5jbHVkZSA8bGludXgvcGFycG9ydC5oPgorCitpbnQgcGFycG9ydF9uZWdvdGlhdGUgKHN0cnVjdCBwYXJwb3J0ICosIGludCBtb2RlKTsKKworREVTQ1JJUFRJT04KKworUGVyZm9ybSBJRUVFIDEyODQgbmVnb3RpYXRpb24uCisKK1JFVFVSTiBWQUxVRQorCisgICAgIDAgIGhhbmRzaGFrZSBPSzsgSUVFRSAxMjg0IHBlcmlwaGVyYWwgYW5kIG1vZGUgYXZhaWxhYmxlCisgICAgLTEgIGhhbmRzaGFrZSBmYWlsZWQ7IHBlcmlwaGVyYWwgbm90IGNvbXBsaWFudCAob3Igbm9uZSBwcmVzZW50KQorICAgICAxICBoYW5kc2hha2UgT0s7IElFRUUgMTI4NCBwZXJpcGhlcmFsIHByZXNlbnQgYnV0IG1vZGUgbm90CisgICAgICAgIGF2YWlsYWJsZQorCitTRUUgQUxTTworCitwYXJwb3J0X3JlYWQsIHBhcnBvcnRfd3JpdGUKKwwKK3BhcnBvcnRfcmVhZCAtIHJlYWQgZGF0YSBmcm9tIGRldmljZQorLS0tLS0tLS0tLS0tCisKK1NZTk9QU0lTCisKKyNpbmNsdWRlIDxsaW51eC9wYXJwb3J0Lmg+CisKK3NzaXplX3QgcGFycG9ydF9yZWFkIChzdHJ1Y3QgcGFycG9ydCAqLCB2b2lkICpidWYsIHNpemVfdCBsZW4pOworCitERVNDUklQVElPTgorCitSZWFkIGRhdGEgZnJvbSBkZXZpY2UgaW4gY3VycmVudCBJRUVFIDEyODQgdHJhbnNmZXIgbW9kZS4gIFRoaXMgb25seQord29ya3MgZm9yIG1vZGVzIHRoYXQgc3VwcG9ydCByZXZlcnNlIGRhdGEgdHJhbnNmZXIuCisKK1JFVFVSTiBWQUxVRQorCitJZiBuZWdhdGl2ZSwgYW4gZXJyb3IgY29kZTsgb3RoZXJ3aXNlIHRoZSBudW1iZXIgb2YgYnl0ZXMgdHJhbnNmZXJyZWQuCisKK1NFRSBBTFNPCisKK3BhcnBvcnRfd3JpdGUsIHBhcnBvcnRfbmVnb3RpYXRlCisMCitwYXJwb3J0X3dyaXRlIC0gd3JpdGUgZGF0YSB0byBkZXZpY2UKKy0tLS0tLS0tLS0tLS0KKworU1lOT1BTSVMKKworI2luY2x1ZGUgPGxpbnV4L3BhcnBvcnQuaD4KKworc3NpemVfdCBwYXJwb3J0X3dyaXRlIChzdHJ1Y3QgcGFycG9ydCAqLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4pOworCitERVNDUklQVElPTgorCitXcml0ZSBkYXRhIHRvIGRldmljZSBpbiBjdXJyZW50IElFRUUgMTI4NCB0cmFuc2ZlciBtb2RlLiAgVGhpcyBvbmx5Cit3b3JrcyBmb3IgbW9kZXMgdGhhdCBzdXBwb3J0IGZvcndhcmQgZGF0YSB0cmFuc2Zlci4KKworUkVUVVJOIFZBTFVFCisKK0lmIG5lZ2F0aXZlLCBhbiBlcnJvciBjb2RlOyBvdGhlcndpc2UgdGhlIG51bWJlciBvZiBieXRlcyB0cmFuc2ZlcnJlZC4KKworU0VFIEFMU08KKworcGFycG9ydF9yZWFkLCBwYXJwb3J0X25lZ290aWF0ZQorDAorcGFycG9ydF9vcGVuIC0gcmVnaXN0ZXIgZGV2aWNlIGZvciBwYXJ0aWN1bGFyIGRldmljZSBudW1iZXIKKy0tLS0tLS0tLS0tLQorCitTWU5PUFNJUworCisjaW5jbHVkZSA8bGludXgvcGFycG9ydC5oPgorCitzdHJ1Y3QgcGFyZGV2aWNlICpwYXJwb3J0X29wZW4gKGludCBkZXZudW0sIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkgICAgICAgIGludCAoKnBmKSAodm9pZCAqKSwKKwkJCQl2b2lkICgqa2YpICh2b2lkICopLAorCQkJCXZvaWQgKCppcnFmKSAoaW50LCB2b2lkICosCisJCQkJCSAgICAgIHN0cnVjdCBwdF9yZWdzICopLAorCQkJCWludCBmbGFncywgdm9pZCAqaGFuZGxlKTsKKworREVTQ1JJUFRJT04KKworVGhpcyBpcyBsaWtlIHBhcnBvcnRfcmVnaXN0ZXJfZGV2aWNlIGJ1dCB0YWtlcyBhIGRldmljZSBudW1iZXIgaW5zdGVhZAorb2YgYSBwb2ludGVyIHRvIGEgc3RydWN0IHBhcnBvcnQuCisKK1JFVFVSTiBWQUxVRQorCitTZWUgcGFycG9ydF9yZWdpc3Rlcl9kZXZpY2UuICBJZiBubyBkZXZpY2UgaXMgYXNzb2NpYXRlZCB3aXRoIGRldm51bSwKK05VTEwgaXMgcmV0dXJuZWQuCisKK1NFRSBBTFNPCisKK3BhcnBvcnRfcmVnaXN0ZXJfZGV2aWNlCisMCitwYXJwb3J0X2Nsb3NlIC0gdW5yZWdpc3RlciBkZXZpY2UgZm9yIHBhcnRpY3VsYXIgZGV2aWNlIG51bWJlcgorLS0tLS0tLS0tLS0tLQorCitTWU5PUFNJUworCisjaW5jbHVkZSA8bGludXgvcGFycG9ydC5oPgorCit2b2lkIHBhcnBvcnRfY2xvc2UgKHN0cnVjdCBwYXJkZXZpY2UgKmRldik7CisKK0RFU0NSSVBUSU9OCisKK1RoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgcGFycG9ydF91bnJlZ2lzdGVyX2RldmljZSBmb3IgcGFycG9ydF9vcGVuLgorCitTRUUgQUxTTworCitwYXJwb3J0X3VucmVnaXN0ZXJfZGV2aWNlLCBwYXJwb3J0X29wZW4KKwwKK3BhcnBvcnRfZGV2aWNlX2lkIC0gb2J0YWluIElFRUUgMTI4NCBEZXZpY2UgSUQKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1NZTk9QU0lTCisKKyNpbmNsdWRlIDxsaW51eC9wYXJwb3J0Lmg+CisKK3NzaXplX3QgcGFycG9ydF9kZXZpY2VfaWQgKGludCBkZXZudW0sIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGxlbik7CisKK0RFU0NSSVBUSU9OCisKK09idGFpbnMgdGhlIElFRUUgMTI4NCBEZXZpY2UgSUQgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gZGV2aWNlLgorCitSRVRVUk4gVkFMVUUKKworSWYgbmVnYXRpdmUsIGFuIGVycm9yIGNvZGU7IG90aGVyd2lzZSwgdGhlIG51bWJlciBvZiBieXRlcyBvZiBidWZmZXIKK3RoYXQgY29udGFpbiB0aGUgZGV2aWNlIElELiAgVGhlIGZvcm1hdCBvZiB0aGUgZGV2aWNlIElEIGlzIGFzCitmb2xsb3dzOgorCitbbGVuZ3RoXVtJRF0KKworVGhlIGZpcnN0IHR3byBieXRlcyBpbmRpY2F0ZSB0aGUgaW5jbHVzaXZlIGxlbmd0aCBvZiB0aGUgZW50aXJlIERldmljZQorSUQsIGFuZCBhcmUgaW4gYmlnLWVuZGlhbiBvcmRlci4gIFRoZSBJRCBpcyBhIHNlcXVlbmNlIG9mIHBhaXJzIG9mIHRoZQorZm9ybToKKwora2V5OnZhbHVlOworCitOT1RFUworCitNYW55IGRldmljZXMgaGF2ZSBpbGwtZm9ybWVkIElFRUUgMTI4NCBEZXZpY2UgSURzLgorCitTRUUgQUxTTworCitwYXJwb3J0X2ZpbmRfY2xhc3MsIHBhcnBvcnRfZmluZF9kZXZpY2UKKwwKK3BhcnBvcnRfZGV2aWNlX2Nvb3JkcyAtIGNvbnZlcnQgZGV2aWNlIG51bWJlciB0byBkZXZpY2UgY29vcmRpbmF0ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitTWU5PUFNJUworCisjaW5jbHVkZSA8bGludXgvcGFycG9ydC5oPgorCitpbnQgcGFycG9ydF9kZXZpY2VfY29vcmRzIChpbnQgZGV2bnVtLCBpbnQgKnBhcnBvcnQsIGludCAqbXV4LAorCQkJICAgaW50ICpkYWlzeSk7CisKK0RFU0NSSVBUSU9OCisKK0NvbnZlcnQgYmV0d2VlbiBkZXZpY2UgbnVtYmVyICh6ZXJvLWJhc2VkKSBhbmQgZGV2aWNlIGNvb3JkaW5hdGVzCisocG9ydCwgbXVsdGlwbGV4b3IsIGRhaXN5IGNoYWluIGFkZHJlc3MpLgorCitSRVRVUk4gVkFMVUUKKworWmVybyBvbiBzdWNjZXNzLCBpbiB3aGljaCBjYXNlIHRoZSBjb29yZGluYXRlcyBhcmUgKCpwYXJwb3J0LCAqbXV4LAorKmRhaXN5KS4KKworU0VFIEFMU08KKworcGFycG9ydF9vcGVuLCBwYXJwb3J0X2RldmljZV9pZAorDAorcGFycG9ydF9maW5kX2NsYXNzIC0gZmluZCBhIGRldmljZSBieSBpdHMgY2xhc3MKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitTWU5PUFNJUworCisjaW5jbHVkZSA8bGludXgvcGFycG9ydC5oPgorCit0eXBlZGVmIGVudW0geworCVBBUlBPUlRfQ0xBU1NfTEVHQUNZID0gMCwgICAgICAgLyogTm9uLUlFRUUxMjg0IGRldmljZSAqLworCVBBUlBPUlRfQ0xBU1NfUFJJTlRFUiwKKwlQQVJQT1JUX0NMQVNTX01PREVNLAorCVBBUlBPUlRfQ0xBU1NfTkVULAorCVBBUlBPUlRfQ0xBU1NfSERDLCAgICAgICAgICAgICAgLyogSGFyZCBkaXNrIGNvbnRyb2xsZXIgKi8KKwlQQVJQT1JUX0NMQVNTX1BDTUNJQSwKKwlQQVJQT1JUX0NMQVNTX01FRElBLCAgICAgICAgICAgIC8qIE11bHRpbWVkaWEgZGV2aWNlICovCisJUEFSUE9SVF9DTEFTU19GREMsICAgICAgICAgICAgICAvKiBGbG9wcHkgZGlzayBjb250cm9sbGVyICovCisJUEFSUE9SVF9DTEFTU19QT1JUUywKKwlQQVJQT1JUX0NMQVNTX1NDQU5ORVIsCisJUEFSUE9SVF9DTEFTU19ESUdDQU0sCisJUEFSUE9SVF9DTEFTU19PVEhFUiwgICAgICAgICAgICAvKiBBbnl0aGluZyBlbHNlICovCisJUEFSUE9SVF9DTEFTU19VTlNQRUMsICAgICAgICAgICAvKiBObyBDTFMgZmllbGQgaW4gSUQgKi8KKwlQQVJQT1JUX0NMQVNTX1NDU0lBREFQVEVSCit9IHBhcnBvcnRfZGV2aWNlX2NsYXNzOworCitpbnQgcGFycG9ydF9maW5kX2NsYXNzIChwYXJwb3J0X2RldmljZV9jbGFzcyBjbHMsIGludCBmcm9tKTsKKworREVTQ1JJUFRJT04KKworRmluZCBhIGRldmljZSBieSBjbGFzcy4gIFRoZSBzZWFyY2ggc3RhcnRzIGZyb20gZGV2aWNlIG51bWJlciBmcm9tKzEuCisKK1JFVFVSTiBWQUxVRQorCitUaGUgZGV2aWNlIG51bWJlciBvZiB0aGUgbmV4dCBkZXZpY2UgaW4gdGhhdCBjbGFzcywgb3IgLTEgaWYgbm8gc3VjaAorZGV2aWNlIGV4aXN0cy4KKworTk9URVMKKworRXhhbXBsZSB1c2FnZToKKworaW50IGRldm51bSA9IC0xOword2hpbGUgKChkZXZudW0gPSBwYXJwb3J0X2ZpbmRfY2xhc3MgKFBBUlBPUlRfQ0xBU1NfRElHQ0FNLCBkZXZudW0pKSAhPSAtMSkgeworICAgIHN0cnVjdCBwYXJkZXZpY2UgKmRldiA9IHBhcnBvcnRfb3BlbiAoZGV2bnVtLCAuLi4pOworICAgIC4uLgorfQorCitTRUUgQUxTTworCitwYXJwb3J0X2ZpbmRfZGV2aWNlLCBwYXJwb3J0X29wZW4sIHBhcnBvcnRfZGV2aWNlX2lkCisMCitwYXJwb3J0X2ZpbmRfZGV2aWNlIC0gZmluZCBhIGRldmljZSBieSBpdHMgY2xhc3MKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitTWU5PUFNJUworCisjaW5jbHVkZSA8bGludXgvcGFycG9ydC5oPgorCitpbnQgcGFycG9ydF9maW5kX2RldmljZSAoY29uc3QgY2hhciAqbWZnLCBjb25zdCBjaGFyICptZGwsIGludCBmcm9tKTsKKworREVTQ1JJUFRJT04KKworRmluZCBhIGRldmljZSBieSB2ZW5kb3IgYW5kIG1vZGVsLiAgVGhlIHNlYXJjaCBzdGFydHMgZnJvbSBkZXZpY2UKK251bWJlciBmcm9tKzEuCisKK1JFVFVSTiBWQUxVRQorCitUaGUgZGV2aWNlIG51bWJlciBvZiB0aGUgbmV4dCBkZXZpY2UgbWF0Y2hpbmcgdGhlIHNwZWNpZmljYXRpb25zLCBvcgorLTEgaWYgbm8gc3VjaCBkZXZpY2UgZXhpc3RzLgorCitOT1RFUworCitFeGFtcGxlIHVzYWdlOgorCitpbnQgZGV2bnVtID0gLTE7Cit3aGlsZSAoKGRldm51bSA9IHBhcnBvcnRfZmluZF9kZXZpY2UgKCJJT01FR0EiLCAiWklQKyIsIGRldm51bSkpICE9IC0xKSB7CisgICAgc3RydWN0IHBhcmRldmljZSAqZGV2ID0gcGFycG9ydF9vcGVuIChkZXZudW0sIC4uLik7CisgICAgLi4uCit9CisKK1NFRSBBTFNPCisKK3BhcnBvcnRfZmluZF9jbGFzcywgcGFycG9ydF9vcGVuLCBwYXJwb3J0X2RldmljZV9pZAorDAorcGFycG9ydF9zZXRfdGltZW91dCAtIHNldCB0aGUgaW5hY3Rpdml0eSB0aW1lb3V0CistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NZTk9QU0lTCisKKyNpbmNsdWRlIDxsaW51eC9wYXJwb3J0Lmg+CisKK2xvbmcgcGFycG9ydF9zZXRfdGltZW91dCAoc3RydWN0IHBhcmRldmljZSAqZGV2LCBsb25nIGluYWN0aXZpdHkpOworCitERVNDUklQVElPTgorCitTZXQgdGhlIGluYWN0aXZpdHkgdGltZW91dCwgaW4gamlmZmllcywgZm9yIGEgcmVnaXN0ZXJlZCBkZXZpY2UuICBUaGUKK3ByZXZpb3VzIHRpbWVvdXQgaXMgcmV0dXJuZWQuCisKK1JFVFVSTiBWQUxVRQorCitUaGUgcHJldmlvdXMgdGltZW91dCwgaW4gamlmZmllcy4KKworTk9URVMKKworU29tZSBvZiB0aGUgcG9ydC0+b3BzIGZ1bmN0aW9ucyBmb3IgYSBwYXJwb3J0IG1heSB0YWtlIHRpbWUsIG93aW5nIHRvCitkZWxheXMgYXQgdGhlIHBlcmlwaGVyYWwuICBBZnRlciB0aGUgcGVyaXBoZXJhbCBoYXMgbm90IHJlc3BvbmRlZCBmb3IKKydpbmFjdGl2aXR5JyBqaWZmaWVzLCBhIHRpbWVvdXQgd2lsbCBvY2N1ciBhbmQgdGhlIGJsb2NraW5nIGZ1bmN0aW9uCit3aWxsIHJldHVybi4KKworQSB0aW1lb3V0IG9mIDAgamlmZmllcyBpcyBhIHNwZWNpYWwgY2FzZTogdGhlIGZ1bmN0aW9uIG11c3QgZG8gYXMgbXVjaAorYXMgaXQgY2FuIHdpdGhvdXQgYmxvY2tpbmcgb3IgbGVhdmluZyB0aGUgaGFyZHdhcmUgaW4gYW4gdW5rbm93bgorc3RhdGUuICBJZiBwb3J0IG9wZXJhdGlvbnMgYXJlIHBlcmZvcm1lZCBmcm9tIHdpdGhpbiBhbiBpbnRlcnJ1cHQKK2hhbmRsZXIsIGZvciBpbnN0YW5jZSwgYSB0aW1lb3V0IG9mIDAgamlmZmllcyBzaG91bGQgYmUgdXNlZC4KKworT25jZSBzZXQgZm9yIGEgcmVnaXN0ZXJlZCBkZXZpY2UsIHRoZSB0aW1lb3V0IHdpbGwgcmVtYWluIGF0IHRoZSBzZXQKK3ZhbHVlIHVudGlsIHNldCBhZ2Fpbi4KKworU0VFIEFMU08KKworcG9ydC0+b3BzLT54eHhfcmVhZC93cml0ZV95eXkKKwwKK1BPUlQgRlVOQ1RJT05TCistLS0tLS0tLS0tLS0tLQorCitUaGUgZnVuY3Rpb25zIGluIHRoZSBwb3J0LT5vcHMgc3RydWN0dXJlIChzdHJ1Y3QgcGFycG9ydF9vcGVyYXRpb25zKQorYXJlIHByb3ZpZGVkIGJ5IHRoZSBsb3ctbGV2ZWwgZHJpdmVyIHJlc3BvbnNpYmxlIGZvciB0aGF0IHBvcnQuCisKK3BvcnQtPm9wcy0+cmVhZF9kYXRhIC0gcmVhZCB0aGUgZGF0YSByZWdpc3RlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU1lOT1BTSVMKKworI2luY2x1ZGUgPGxpbnV4L3BhcnBvcnQuaD4KKworc3RydWN0IHBhcnBvcnRfb3BlcmF0aW9ucyB7CisJLi4uCisJdW5zaWduZWQgY2hhciAoKnJlYWRfZGF0YSkgKHN0cnVjdCBwYXJwb3J0ICpwb3J0KTsKKwkuLi4KK307CisKK0RFU0NSSVBUSU9OCisKK0lmIHBvcnQtPm1vZGVzIGNvbnRhaW5zIHRoZSBQQVJQT1JUX01PREVfVFJJU1RBVEUgZmxhZyBhbmQgdGhlCitQQVJQT1JUX0NPTlRST0xfRElSRUNUSU9OIGJpdCBpbiB0aGUgY29udHJvbCByZWdpc3RlciBpcyBzZXQsIHRoaXMKK3JldHVybnMgdGhlIHZhbHVlIG9uIHRoZSBkYXRhIHBpbnMuICBJZiBwb3J0LT5tb2RlcyBjb250YWlucyB0aGUKK1BBUlBPUlRfTU9ERV9UUklTVEFURSBmbGFnIGFuZCB0aGUgUEFSUE9SVF9DT05UUk9MX0RJUkVDVElPTiBiaXQgaXMKK25vdCBzZXQsIHRoZSByZXR1cm4gdmFsdWUgX21heV8gYmUgdGhlIGxhc3QgdmFsdWUgd3JpdHRlbiB0byB0aGUgZGF0YQorcmVnaXN0ZXIuICBPdGhlcndpc2UgdGhlIHJldHVybiB2YWx1ZSBpcyB1bmRlZmluZWQuCisKK1NFRSBBTFNPCisKK3dyaXRlX2RhdGEsIHJlYWRfc3RhdHVzLCB3cml0ZV9jb250cm9sCisMCitwb3J0LT5vcHMtPndyaXRlX2RhdGEgLSB3cml0ZSB0aGUgZGF0YSByZWdpc3RlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NZTk9QU0lTCisKKyNpbmNsdWRlIDxsaW51eC9wYXJwb3J0Lmg+CisKK3N0cnVjdCBwYXJwb3J0X29wZXJhdGlvbnMgeworCS4uLgorCXZvaWQgKCp3cml0ZV9kYXRhKSAoc3RydWN0IHBhcnBvcnQgKnBvcnQsIHVuc2lnbmVkIGNoYXIgZCk7CisJLi4uCit9OworCitERVNDUklQVElPTgorCitXcml0ZXMgdG8gdGhlIGRhdGEgcmVnaXN0ZXIuICBNYXkgaGF2ZSBzaWRlLWVmZmVjdHMgKGEgU1RST0JFIHB1bHNlLAorZm9yIGluc3RhbmNlKS4KKworU0VFIEFMU08KKworcmVhZF9kYXRhLCByZWFkX3N0YXR1cywgd3JpdGVfY29udHJvbAorDAorcG9ydC0+b3BzLT5yZWFkX3N0YXR1cyAtIHJlYWQgdGhlIHN0YXR1cyByZWdpc3RlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTWU5PUFNJUworCisjaW5jbHVkZSA8bGludXgvcGFycG9ydC5oPgorCitzdHJ1Y3QgcGFycG9ydF9vcGVyYXRpb25zIHsKKwkuLi4KKwl1bnNpZ25lZCBjaGFyICgqcmVhZF9zdGF0dXMpIChzdHJ1Y3QgcGFycG9ydCAqcG9ydCk7CisJLi4uCit9OworCitERVNDUklQVElPTgorCitSZWFkcyBmcm9tIHRoZSBzdGF0dXMgcmVnaXN0ZXIuICBUaGlzIGlzIGEgYml0bWFzazoKKworLSBQQVJQT1JUX1NUQVRVU19FUlJPUiAocHJpbnRlciBmYXVsdCwgIm5GYXVsdCIpCistIFBBUlBPUlRfU1RBVFVTX1NFTEVDVCAob24tbGluZSwgIlNlbGVjdCIpCistIFBBUlBPUlRfU1RBVFVTX1BBUEVST1VUIChubyBwYXBlciwgIlBFcnJvciIpCistIFBBUlBPUlRfU1RBVFVTX0FDSyAoaGFuZHNoYWtlLCAibkFjayIpCistIFBBUlBPUlRfU1RBVFVTX0JVU1kgKGJ1c3ksICJCdXN5IikKKworVGhlcmUgbWF5IGJlIG90aGVyIGJpdHMgc2V0LgorCitTRUUgQUxTTworCityZWFkX2RhdGEsIHdyaXRlX2RhdGEsIHdyaXRlX2NvbnRyb2wKKwwKK3BvcnQtPm9wcy0+cmVhZF9jb250cm9sIC0gcmVhZCB0aGUgY29udHJvbCByZWdpc3RlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU1lOT1BTSVMKKworI2luY2x1ZGUgPGxpbnV4L3BhcnBvcnQuaD4KKworc3RydWN0IHBhcnBvcnRfb3BlcmF0aW9ucyB7CisJLi4uCisJdW5zaWduZWQgY2hhciAoKnJlYWRfY29udHJvbCkgKHN0cnVjdCBwYXJwb3J0ICpwb3J0KTsKKwkuLi4KK307CisKK0RFU0NSSVBUSU9OCisKK1JldHVybnMgdGhlIGxhc3QgdmFsdWUgd3JpdHRlbiB0byB0aGUgY29udHJvbCByZWdpc3RlciAoZWl0aGVyIGZyb20KK3dyaXRlX2NvbnRyb2wgb3IgZnJvYl9jb250cm9sKS4gIE5vIHBvcnQgYWNjZXNzIGlzIHBlcmZvcm1lZC4KKworU0VFIEFMU08KKworcmVhZF9kYXRhLCB3cml0ZV9kYXRhLCByZWFkX3N0YXR1cywgd3JpdGVfY29udHJvbAorDAorcG9ydC0+b3BzLT53cml0ZV9jb250cm9sIC0gd3JpdGUgdGhlIGNvbnRyb2wgcmVnaXN0ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTWU5PUFNJUworCisjaW5jbHVkZSA8bGludXgvcGFycG9ydC5oPgorCitzdHJ1Y3QgcGFycG9ydF9vcGVyYXRpb25zIHsKKwkuLi4KKwl2b2lkICgqd3JpdGVfY29udHJvbCkgKHN0cnVjdCBwYXJwb3J0ICpwb3J0LCB1bnNpZ25lZCBjaGFyIHMpOworCS4uLgorfTsKKworREVTQ1JJUFRJT04KKworV3JpdGVzIHRvIHRoZSBjb250cm9sIHJlZ2lzdGVyLiBUaGlzIGlzIGEgYml0bWFzazoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgX19fX19fXworLSBQQVJQT1JUX0NPTlRST0xfU1RST0JFIChuU3Ryb2JlKQorICAgICAgICAgICAgICAgICAgICAgICAgICBfX19fX19fCistIFBBUlBPUlRfQ09OVFJPTF9BVVRPRkQgKG5BdXRvRmQpCisgICAgICAgICAgICAgICAgICAgICAgICBfX19fXworLSBQQVJQT1JUX0NPTlRST0xfSU5JVCAobkluaXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgIF9fX19fX19fXworLSBQQVJQT1JUX0NPTlRST0xfU0VMRUNUIChuU2VsZWN0SW4pCisKK1NFRSBBTFNPCisKK3JlYWRfZGF0YSwgd3JpdGVfZGF0YSwgcmVhZF9zdGF0dXMsIGZyb2JfY29udHJvbAorDAorcG9ydC0+b3BzLT5mcm9iX2NvbnRyb2wgLSB3cml0ZSBjb250cm9sIHJlZ2lzdGVyIGJpdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NZTk9QU0lTCisKKyNpbmNsdWRlIDxsaW51eC9wYXJwb3J0Lmg+CisKK3N0cnVjdCBwYXJwb3J0X29wZXJhdGlvbnMgeworCS4uLgorCXVuc2lnbmVkIGNoYXIgKCpmcm9iX2NvbnRyb2wpIChzdHJ1Y3QgcGFycG9ydCAqcG9ydCwKKwkJCQkgICAgICAgdW5zaWduZWQgY2hhciBtYXNrLAorCQkJCSAgICAgICB1bnNpZ25lZCBjaGFyIHZhbCk7CisJLi4uCit9OworCitERVNDUklQVElPTgorCitUaGlzIGlzIGVxdWl2YWxlbnQgdG8gcmVhZGluZyBmcm9tIHRoZSBjb250cm9sIHJlZ2lzdGVyLCBtYXNraW5nIG91dAordGhlIGJpdHMgaW4gbWFzaywgZXhjbHVzaXZlLW9yJ2luZyB3aXRoIHRoZSBiaXRzIGluIHZhbCwgYW5kIHdyaXRpbmcKK3RoZSByZXN1bHQgdG8gdGhlIGNvbnRyb2wgcmVnaXN0ZXIuCisKK0FzIHNvbWUgcG9ydHMgZG9uJ3QgYWxsb3cgcmVhZHMgZnJvbSB0aGUgY29udHJvbCBwb3J0LCBhIHNvZnR3YXJlIGNvcHkKK29mIGl0cyBjb250ZW50cyBpcyBtYWludGFpbmVkLCBzbyBmcm9iX2NvbnRyb2wgaXMgaW4gZmFjdCBvbmx5IG9uZQorcG9ydCBhY2Nlc3MuCisKK1NFRSBBTFNPCisKK3JlYWRfZGF0YSwgd3JpdGVfZGF0YSwgcmVhZF9zdGF0dXMsIHdyaXRlX2NvbnRyb2wKKwwKK3BvcnQtPm9wcy0+ZW5hYmxlX2lycSAtIGVuYWJsZSBpbnRlcnJ1cHQgZ2VuZXJhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NZTk9QU0lTCisKKyNpbmNsdWRlIDxsaW51eC9wYXJwb3J0Lmg+CisKK3N0cnVjdCBwYXJwb3J0X29wZXJhdGlvbnMgeworCS4uLgorCXZvaWQgKCplbmFibGVfaXJxKSAoc3RydWN0IHBhcnBvcnQgKnBvcnQpOworCS4uLgorfTsKKworREVTQ1JJUFRJT04KKworVGhlIHBhcmFsbGVsIHBvcnQgaGFyZHdhcmUgaXMgaW5zdHJ1Y3RlZCB0byBnZW5lcmF0ZSBpbnRlcnJ1cHRzIGF0CithcHByb3ByaWF0ZSBtb21lbnRzLCBhbHRob3VnaCB0aG9zZSBtb21lbnRzIGFyZQorYXJjaGl0ZWN0dXJlLXNwZWNpZmljLiAgRm9yIHRoZSBQQyBhcmNoaXRlY3R1cmUsIGludGVycnVwdHMgYXJlCitjb21tb25seSBnZW5lcmF0ZWQgb24gdGhlIHJpc2luZyBlZGdlIG9mIG5BY2suCisKK1NFRSBBTFNPCisKK2Rpc2FibGVfaXJxCisMCitwb3J0LT5vcHMtPmRpc2FibGVfaXJxIC0gZGlzYWJsZSBpbnRlcnJ1cHQgZ2VuZXJhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTWU5PUFNJUworCisjaW5jbHVkZSA8bGludXgvcGFycG9ydC5oPgorCitzdHJ1Y3QgcGFycG9ydF9vcGVyYXRpb25zIHsKKwkuLi4KKwl2b2lkICgqZGlzYWJsZV9pcnEpIChzdHJ1Y3QgcGFycG9ydCAqcG9ydCk7CisJLi4uCit9OworCitERVNDUklQVElPTgorCitUaGUgcGFyYWxsZWwgcG9ydCBoYXJkd2FyZSBpcyBpbnN0cnVjdGVkIG5vdCB0byBnZW5lcmF0ZSBpbnRlcnJ1cHRzLgorVGhlIGludGVycnVwdCBpdHNlbGYgaXMgbm90IG1hc2tlZC4KKworU0VFIEFMU08KKworZW5hYmxlX2lycQorDAorcG9ydC0+b3BzLT5kYXRhX2ZvcndhcmQgLSBlbmFibGUgZGF0YSBkcml2ZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTWU5PUFNJUworCisjaW5jbHVkZSA8bGludXgvcGFycG9ydC5oPgorCitzdHJ1Y3QgcGFycG9ydF9vcGVyYXRpb25zIHsKKwkuLi4KKwl2b2lkICgqZGF0YV9mb3J3YXJkKSAoc3RydWN0IHBhcnBvcnQgKnBvcnQpOworCS4uLgorfTsKKworREVTQ1JJUFRJT04KKworRW5hYmxlcyB0aGUgZGF0YSBsaW5lIGRyaXZlcnMsIGZvciA4LWJpdCBob3N0LXRvLXBlcmlwaGVyYWwKK2NvbW11bmljYXRpb25zLgorCitTRUUgQUxTTworCitkYXRhX3JldmVyc2UKKwwKK3BvcnQtPm9wcy0+ZGF0YV9yZXZlcnNlIC0gdHJpc3RhdGUgdGhlIGJ1ZmZlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU1lOT1BTSVMKKworI2luY2x1ZGUgPGxpbnV4L3BhcnBvcnQuaD4KKworc3RydWN0IHBhcnBvcnRfb3BlcmF0aW9ucyB7CisJLi4uCisJdm9pZCAoKmRhdGFfcmV2ZXJzZSkgKHN0cnVjdCBwYXJwb3J0ICpwb3J0KTsKKwkuLi4KK307CisKK0RFU0NSSVBUSU9OCisKK1BsYWNlcyB0aGUgZGF0YSBidXMgaW4gYSBoaWdoIGltcGVkYW5jZSBzdGF0ZSwgaWYgcG9ydC0+bW9kZXMgaGFzIHRoZQorUEFSUE9SVF9NT0RFX1RSSVNUQVRFIGJpdCBzZXQuCisKK1NFRSBBTFNPCisKK2RhdGFfZm9yd2FyZAorDAorcG9ydC0+b3BzLT5lcHBfd3JpdGVfZGF0YSAtIHdyaXRlIEVQUCBkYXRhCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NZTk9QU0lTCisKKyNpbmNsdWRlIDxsaW51eC9wYXJwb3J0Lmg+CisKK3N0cnVjdCBwYXJwb3J0X29wZXJhdGlvbnMgeworCS4uLgorCXNpemVfdCAoKmVwcF93cml0ZV9kYXRhKSAoc3RydWN0IHBhcnBvcnQgKnBvcnQsIGNvbnN0IHZvaWQgKmJ1ZiwKKwkJCQkgIHNpemVfdCBsZW4sIGludCBmbGFncyk7CisJLi4uCit9OworCitERVNDUklQVElPTgorCitXcml0ZXMgZGF0YSBpbiBFUFAgbW9kZSwgYW5kIHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorCitUaGUgJ2ZsYWdzJyBwYXJhbWV0ZXIgbWF5IGJlIG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcsCitiaXR3aXNlLW9yJ2VkIHRvZ2V0aGVyOgorCitQQVJQT1JUX0VQUF9GQVNUCVVzZSBmYXN0IHRyYW5zZmVycy4gU29tZSBjaGlwcyBwcm92aWRlIDE2LWJpdCBhbmQKKwkJCTMyLWJpdCByZWdpc3RlcnMuICBIb3dldmVyLCBpZiBhIHRyYW5zZmVyCisJCQl0aW1lcyBvdXQsIHRoZSByZXR1cm4gdmFsdWUgbWF5IGJlIHVucmVsaWFibGUuCisKK1NFRSBBTFNPCisKK2VwcF9yZWFkX2RhdGEsIGVwcF93cml0ZV9hZGRyLCBlcHBfcmVhZF9hZGRyCisMCitwb3J0LT5vcHMtPmVwcF9yZWFkX2RhdGEgLSByZWFkIEVQUCBkYXRhCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU1lOT1BTSVMKKworI2luY2x1ZGUgPGxpbnV4L3BhcnBvcnQuaD4KKworc3RydWN0IHBhcnBvcnRfb3BlcmF0aW9ucyB7CisJLi4uCisJc2l6ZV90ICgqZXBwX3JlYWRfZGF0YSkgKHN0cnVjdCBwYXJwb3J0ICpwb3J0LCB2b2lkICpidWYsCisJCQkJIHNpemVfdCBsZW4sIGludCBmbGFncyk7CisJLi4uCit9OworCitERVNDUklQVElPTgorCitSZWFkcyBkYXRhIGluIEVQUCBtb2RlLCBhbmQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuCisKK1RoZSAnZmxhZ3MnIHBhcmFtZXRlciBtYXkgYmUgb25lIG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZywKK2JpdHdpc2Utb3InZWQgdG9nZXRoZXI6CisKK1BBUlBPUlRfRVBQX0ZBU1QJVXNlIGZhc3QgdHJhbnNmZXJzLiBTb21lIGNoaXBzIHByb3ZpZGUgMTYtYml0IGFuZAorCQkJMzItYml0IHJlZ2lzdGVycy4gIEhvd2V2ZXIsIGlmIGEgdHJhbnNmZXIKKwkJCXRpbWVzIG91dCwgdGhlIHJldHVybiB2YWx1ZSBtYXkgYmUgdW5yZWxpYWJsZS4KKworU0VFIEFMU08KKworZXBwX3dyaXRlX2RhdGEsIGVwcF93cml0ZV9hZGRyLCBlcHBfcmVhZF9hZGRyCisMCitwb3J0LT5vcHMtPmVwcF93cml0ZV9hZGRyIC0gd3JpdGUgRVBQIGFkZHJlc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU1lOT1BTSVMKKworI2luY2x1ZGUgPGxpbnV4L3BhcnBvcnQuaD4KKworc3RydWN0IHBhcnBvcnRfb3BlcmF0aW9ucyB7CisJLi4uCisJc2l6ZV90ICgqZXBwX3dyaXRlX2FkZHIpIChzdHJ1Y3QgcGFycG9ydCAqcG9ydCwKKwkJCQkgIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwgaW50IGZsYWdzKTsKKwkuLi4KK307CisKK0RFU0NSSVBUSU9OCisKK1dyaXRlcyBFUFAgYWRkcmVzc2VzICg4IGJpdHMgZWFjaCksIGFuZCByZXR1cm5zIHRoZSBudW1iZXIgd3JpdHRlbi4KKworVGhlICdmbGFncycgcGFyYW1ldGVyIG1heSBiZSBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nLAorYml0d2lzZS1vcidlZCB0b2dldGhlcjoKKworUEFSUE9SVF9FUFBfRkFTVAlVc2UgZmFzdCB0cmFuc2ZlcnMuIFNvbWUgY2hpcHMgcHJvdmlkZSAxNi1iaXQgYW5kCisJCQkzMi1iaXQgcmVnaXN0ZXJzLiAgSG93ZXZlciwgaWYgYSB0cmFuc2ZlcgorCQkJdGltZXMgb3V0LCB0aGUgcmV0dXJuIHZhbHVlIG1heSBiZSB1bnJlbGlhYmxlLgorCisoRG9lcyBQQVJQT1JUX0VQUF9GQVNUIG1ha2Ugc2Vuc2UgZm9yIHRoaXMgZnVuY3Rpb24/KQorCitTRUUgQUxTTworCitlcHBfd3JpdGVfZGF0YSwgZXBwX3JlYWRfZGF0YSwgZXBwX3JlYWRfYWRkcgorDAorcG9ydC0+b3BzLT5lcHBfcmVhZF9hZGRyIC0gcmVhZCBFUFAgYWRkcmVzcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NZTk9QU0lTCisKKyNpbmNsdWRlIDxsaW51eC9wYXJwb3J0Lmg+CisKK3N0cnVjdCBwYXJwb3J0X29wZXJhdGlvbnMgeworCS4uLgorCXNpemVfdCAoKmVwcF9yZWFkX2FkZHIpIChzdHJ1Y3QgcGFycG9ydCAqcG9ydCwgdm9pZCAqYnVmLAorCQkJCSBzaXplX3QgbGVuLCBpbnQgZmxhZ3MpOworCS4uLgorfTsKKworREVTQ1JJUFRJT04KKworUmVhZHMgRVBQIGFkZHJlc3NlcyAoOCBiaXRzIGVhY2gpLCBhbmQgcmV0dXJucyB0aGUgbnVtYmVyIHJlYWQuCisKK1RoZSAnZmxhZ3MnIHBhcmFtZXRlciBtYXkgYmUgb25lIG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZywKK2JpdHdpc2Utb3InZWQgdG9nZXRoZXI6CisKK1BBUlBPUlRfRVBQX0ZBU1QJVXNlIGZhc3QgdHJhbnNmZXJzLiBTb21lIGNoaXBzIHByb3ZpZGUgMTYtYml0IGFuZAorCQkJMzItYml0IHJlZ2lzdGVycy4gIEhvd2V2ZXIsIGlmIGEgdHJhbnNmZXIKKwkJCXRpbWVzIG91dCwgdGhlIHJldHVybiB2YWx1ZSBtYXkgYmUgdW5yZWxpYWJsZS4KKworKERvZXMgUEFSUE9SVF9FUFBfRkFTVCBtYWtlIHNlbnNlIGZvciB0aGlzIGZ1bmN0aW9uPykKKworU0VFIEFMU08KKworZXBwX3dyaXRlX2RhdGEsIGVwcF9yZWFkX2RhdGEsIGVwcF93cml0ZV9hZGRyCisMCitwb3J0LT5vcHMtPmVjcF93cml0ZV9kYXRhIC0gd3JpdGUgYSBibG9jayBvZiBFQ1AgZGF0YQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTWU5PUFNJUworCisjaW5jbHVkZSA8bGludXgvcGFycG9ydC5oPgorCitzdHJ1Y3QgcGFycG9ydF9vcGVyYXRpb25zIHsKKwkuLi4KKwlzaXplX3QgKCplY3Bfd3JpdGVfZGF0YSkgKHN0cnVjdCBwYXJwb3J0ICpwb3J0LAorCQkJCSAgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVuLCBpbnQgZmxhZ3MpOworCS4uLgorfTsKKworREVTQ1JJUFRJT04KKworV3JpdGVzIGEgYmxvY2sgb2YgRUNQIGRhdGEuICBUaGUgJ2ZsYWdzJyBwYXJhbWV0ZXIgaXMgaWdub3JlZC4KKworUkVUVVJOIFZBTFVFCisKK1RoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KKworU0VFIEFMU08KKworZWNwX3JlYWRfZGF0YSwgZWNwX3dyaXRlX2FkZHIKKwwKK3BvcnQtPm9wcy0+ZWNwX3JlYWRfZGF0YSAtIHJlYWQgYSBibG9jayBvZiBFQ1AgZGF0YQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NZTk9QU0lTCisKKyNpbmNsdWRlIDxsaW51eC9wYXJwb3J0Lmg+CisKK3N0cnVjdCBwYXJwb3J0X29wZXJhdGlvbnMgeworCS4uLgorCXNpemVfdCAoKmVjcF9yZWFkX2RhdGEpIChzdHJ1Y3QgcGFycG9ydCAqcG9ydCwKKwkJCQkgdm9pZCAqYnVmLCBzaXplX3QgbGVuLCBpbnQgZmxhZ3MpOworCS4uLgorfTsKKworREVTQ1JJUFRJT04KKworUmVhZHMgYSBibG9jayBvZiBFQ1AgZGF0YS4gIFRoZSAnZmxhZ3MnIHBhcmFtZXRlciBpcyBpZ25vcmVkLgorCitSRVRVUk4gVkFMVUUKKworVGhlIG51bWJlciBvZiBieXRlcyByZWFkLiAgTkIuIFRoZXJlIG1heSBiZSBtb3JlIHVucmVhZCBkYXRhIGluIGEKK0ZJRk8uICBJcyB0aGVyZSBhIHdheSBvZiBzdHVubmluZyB0aGUgRklGTyB0byBwcmV2ZW50IHRoaXM/CisKK1NFRSBBTFNPCisKK2VjcF93cml0ZV9ibG9jaywgZWNwX3dyaXRlX2FkZHIKKwwKK3BvcnQtPm9wcy0+ZWNwX3dyaXRlX2FkZHIgLSB3cml0ZSBhIGJsb2NrIG9mIEVDUCBhZGRyZXNzZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU1lOT1BTSVMKKworI2luY2x1ZGUgPGxpbnV4L3BhcnBvcnQuaD4KKworc3RydWN0IHBhcnBvcnRfb3BlcmF0aW9ucyB7CisJLi4uCisJc2l6ZV90ICgqZWNwX3dyaXRlX2FkZHIpIChzdHJ1Y3QgcGFycG9ydCAqcG9ydCwKKwkJCQkgIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwgaW50IGZsYWdzKTsKKwkuLi4KK307CisKK0RFU0NSSVBUSU9OCisKK1dyaXRlcyBhIGJsb2NrIG9mIEVDUCBhZGRyZXNzZXMuICBUaGUgJ2ZsYWdzJyBwYXJhbWV0ZXIgaXMgaWdub3JlZC4KKworUkVUVVJOIFZBTFVFCisKK1RoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KKworTk9URVMKKworVGhpcyBtYXkgdXNlIGEgRklGTywgYW5kIGlmIHNvIHNoYWxsIG5vdCByZXR1cm4gdW50aWwgdGhlIEZJRk8gaXMgZW1wdHkuCisKK1NFRSBBTFNPCisKK2VjcF9yZWFkX2RhdGEsIGVjcF93cml0ZV9kYXRhCisMCitwb3J0LT5vcHMtPm5pYmJsZV9yZWFkX2RhdGEgLSByZWFkIGEgYmxvY2sgb2YgZGF0YSBpbiBuaWJibGUgbW9kZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NZTk9QU0lTCisKKyNpbmNsdWRlIDxsaW51eC9wYXJwb3J0Lmg+CisKK3N0cnVjdCBwYXJwb3J0X29wZXJhdGlvbnMgeworCS4uLgorCXNpemVfdCAoKm5pYmJsZV9yZWFkX2RhdGEpIChzdHJ1Y3QgcGFycG9ydCAqcG9ydCwKKwkJCQkgICAgdm9pZCAqYnVmLCBzaXplX3QgbGVuLCBpbnQgZmxhZ3MpOworCS4uLgorfTsKKworREVTQ1JJUFRJT04KKworUmVhZHMgYSBibG9jayBvZiBkYXRhIGluIG5pYmJsZSBtb2RlLiAgVGhlICdmbGFncycgcGFyYW1ldGVyIGlzIGlnbm9yZWQuCisKK1JFVFVSTiBWQUxVRQorCitUaGUgbnVtYmVyIG9mIHdob2xlIGJ5dGVzIHJlYWQuCisKK1NFRSBBTFNPCisKK2J5dGVfcmVhZF9kYXRhLCBjb21wYXRfd3JpdGVfZGF0YQorDAorcG9ydC0+b3BzLT5ieXRlX3JlYWRfZGF0YSAtIHJlYWQgYSBibG9jayBvZiBkYXRhIGluIGJ5dGUgbW9kZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTWU5PUFNJUworCisjaW5jbHVkZSA8bGludXgvcGFycG9ydC5oPgorCitzdHJ1Y3QgcGFycG9ydF9vcGVyYXRpb25zIHsKKwkuLi4KKwlzaXplX3QgKCpieXRlX3JlYWRfZGF0YSkgKHN0cnVjdCBwYXJwb3J0ICpwb3J0LAorCQkJCSAgdm9pZCAqYnVmLCBzaXplX3QgbGVuLCBpbnQgZmxhZ3MpOworCS4uLgorfTsKKworREVTQ1JJUFRJT04KKworUmVhZHMgYSBibG9jayBvZiBkYXRhIGluIGJ5dGUgbW9kZS4gIFRoZSAnZmxhZ3MnIHBhcmFtZXRlciBpcyBpZ25vcmVkLgorCitSRVRVUk4gVkFMVUUKKworVGhlIG51bWJlciBvZiBieXRlcyByZWFkLgorCitTRUUgQUxTTworCituaWJibGVfcmVhZF9kYXRhLCBjb21wYXRfd3JpdGVfZGF0YQorDAorcG9ydC0+b3BzLT5jb21wYXRfd3JpdGVfZGF0YSAtIHdyaXRlIGEgYmxvY2sgb2YgZGF0YSBpbiBjb21wYXRpYmlsaXR5IG1vZGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU1lOT1BTSVMKKworI2luY2x1ZGUgPGxpbnV4L3BhcnBvcnQuaD4KKworc3RydWN0IHBhcnBvcnRfb3BlcmF0aW9ucyB7CisJLi4uCisJc2l6ZV90ICgqY29tcGF0X3dyaXRlX2RhdGEpIChzdHJ1Y3QgcGFycG9ydCAqcG9ydCwKKwkJCQkgICAgIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwgaW50IGZsYWdzKTsKKwkuLi4KK307CisKK0RFU0NSSVBUSU9OCisKK1dyaXRlcyBhIGJsb2NrIG9mIGRhdGEgaW4gY29tcGF0aWJpbGl0eSBtb2RlLiAgVGhlICdmbGFncycgcGFyYW1ldGVyCitpcyBpZ25vcmVkLgorCitSRVRVUk4gVkFMVUUKKworVGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorCitTRUUgQUxTTworCituaWJibGVfcmVhZF9kYXRhLCBieXRlX3JlYWRfZGF0YQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wYXJwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24vcGFycG9ydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIwOGU0MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcGFycG9ydC50eHQKQEAgLTAsMCArMSwyNjcgQEAKK1RoZSBgcGFycG9ydCcgY29kZSBwcm92aWRlcyBwYXJhbGxlbC1wb3J0IHN1cHBvcnQgdW5kZXIgTGludXguICBUaGlzCitpbmNsdWRlcyB0aGUgYWJpbGl0eSB0byBzaGFyZSBvbmUgcG9ydCBiZXR3ZWVuIG11bHRpcGxlIGRldmljZQorZHJpdmVycy4KKworWW91IGNhbiBwYXNzIHBhcmFtZXRlcnMgdG8gdGhlIHBhcnBvcnQgY29kZSB0byBvdmVycmlkZSBpdHMgYXV0b21hdGljCitkZXRlY3Rpb24gb2YgeW91ciBoYXJkd2FyZS4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBpZiB5b3Ugd2FudAordG8gdXNlIElSUXMsIHNpbmNlIGluIGdlbmVyYWwgdGhlc2UgY2FuJ3QgYmUgYXV0b3Byb2JlZCBzdWNjZXNzZnVsbHkuCitCeSBkZWZhdWx0IElSUXMgYXJlIG5vdCB1c2VkIGV2ZW4gaWYgdGhleSBfY2FuXyBiZSBwcm9iZWQuICBUaGlzIGlzCitiZWNhdXNlIHRoZXJlIGFyZSBhIGxvdCBvZiBwZW9wbGUgdXNpbmcgdGhlIHNhbWUgSVJRIGZvciB0aGVpcgorcGFyYWxsZWwgcG9ydCBhbmQgYSBzb3VuZCBjYXJkIG9yIG5ldHdvcmsgY2FyZC4KKworVGhlIHBhcnBvcnQgY29kZSBpcyBzcGxpdCBpbnRvIHR3byBwYXJ0czogZ2VuZXJpYyAod2hpY2ggZGVhbHMgd2l0aAorcG9ydC1zaGFyaW5nKSBhbmQgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCAod2hpY2ggZGVhbHMgd2l0aCBhY3R1YWxseQordXNpbmcgdGhlIHBvcnQpLgorCisKK1BhcnBvcnQgYXMgbW9kdWxlcworPT09PT09PT09PT09PT09PT09CisKK0lmIHlvdSBsb2FkIHRoZSBwYXJwb3J0IGNvZGUgYXMgYSBtb2R1bGUsIHNheQorCisJIyBpbnNtb2QgcGFycG9ydAorCit0byBsb2FkIHRoZSBnZW5lcmljIHBhcnBvcnQgY29kZS4gIFlvdSB0aGVuIG11c3QgbG9hZCB0aGUKK2FyY2hpdGVjdHVyZS1kZXBlbmRlbnQgY29kZSB3aXRoIChmb3IgZXhhbXBsZSk6CisKKwkjIGluc21vZCBwYXJwb3J0X3BjIGlvPTB4M2JjLDB4Mzc4LDB4Mjc4IGlycT1ub25lLDcsYXV0bworCit0byB0ZWxsIHRoZSBwYXJwb3J0IGNvZGUgdGhhdCB5b3Ugd2FudCB0aHJlZSBQQy1zdHlsZSBwb3J0cywgb25lIGF0CisweDNiYyB3aXRoIG5vIElSUSwgb25lIGF0IDB4Mzc4IHVzaW5nIElSUSA3LCBhbmQgb25lIGF0IDB4Mjc4IHdpdGggYW4KK2F1dG8tZGV0ZWN0ZWQgSVJRLiAgQ3VycmVudGx5LCBQQy1zdHlsZSAocGFycG9ydF9wYyksIFN1biBgYnBwJywKK0FtaWdhLCBBdGFyaSwgYW5kIE1GQzMgaGFyZHdhcmUgaXMgc3VwcG9ydGVkLgorCitQQ0kgcGFyYWxsZWwgSS9PIGNhcmQgc3VwcG9ydCBjb21lcyBmcm9tIHBhcnBvcnRfcGMuICBCYXNlIEkvTworYWRkcmVzc2VzIHNob3VsZCBub3QgYmUgc3BlY2lmaWVkIGZvciBzdXBwb3J0ZWQgUENJIGNhcmRzIHNpbmNlIHRoZXkKK2FyZSBhdXRvbWF0aWNhbGx5IGRldGVjdGVkLgorCisKK21vZHByb2JlCistLS0tLS0tLQorCitJZiB5b3UgdXNlIG1vZHByb2JlICwgeW91IHdpbGwgZmluZCBpdCB1c2VmdWwgdG8gYWRkIGxpbmVzIGFzIGJlbG93IHRvIGEKK2NvbmZpZ3VyYXRpb24gZmlsZSBpbiAvZXRjL21vZHByb2JlLmQvIGRpcmVjdG9yeTouCisKKwlhbGlhcyBwYXJwb3J0X2xvd2xldmVsIHBhcnBvcnRfcGMKKwlvcHRpb25zIHBhcnBvcnRfcGMgaW89MHgzNzgsMHgyNzggaXJxPTcsYXV0bworCittb2Rwcm9iZSB3aWxsIGxvYWQgcGFycG9ydF9wYyAod2l0aCB0aGUgb3B0aW9ucyAiaW89MHgzNzgsMHgyNzggaXJxPTcsYXV0byIpCit3aGVuZXZlciBhIHBhcmFsbGVsIHBvcnQgZGV2aWNlIGRyaXZlciAoc3VjaCBhcyBscCkgaXMgbG9hZGVkLgorCitOb3RlIHRoYXQgdGhlc2UgYXJlIGV4YW1wbGUgbGluZXMgb25seSEgIFlvdSBzaG91bGRuJ3QgaW4gZ2VuZXJhbCBuZWVkCit0byBzcGVjaWZ5IGFueSBvcHRpb25zIHRvIHBhcnBvcnRfcGMgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byB1c2UgYQorcGFyYWxsZWwgcG9ydC4KKworCitQYXJwb3J0IHByb2JlIFtvcHRpb25hbF0KKy0tLS0tLS0tLS0tLS0KKworSW4gMi4yIGtlcm5lbHMgdGhlcmUgd2FzIGEgbW9kdWxlIGNhbGxlZCBwYXJwb3J0X3Byb2JlLCB3aGljaCB3YXMgdXNlZAorZm9yIGNvbGxlY3RpbmcgSUVFRSAxMjg0IGRldmljZSBJRCBpbmZvcm1hdGlvbi4gIFRoaXMgaGFzIG5vdyBiZWVuCitlbmhhbmNlZCBhbmQgbm93IGxpdmVzIHdpdGggdGhlIElFRUUgMTI4NCBzdXBwb3J0LiAgV2hlbiBhIHBhcmFsbGVsCitwb3J0IGlzIGRldGVjdGVkLCB0aGUgZGV2aWNlcyB0aGF0IGFyZSBjb25uZWN0ZWQgdG8gaXQgYXJlIGFuYWx5c2VkLAorYW5kIGluZm9ybWF0aW9uIGlzIGxvZ2dlZCBsaWtlIHRoaXM6CisKKwlwYXJwb3J0MDogUHJpbnRlciwgQkpDLTIxMCAoQ2Fub24pCisKK1RoZSBwcm9iZSBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgZnJvbSBmaWxlcyBpbiAvcHJvYy9zeXMvZGV2L3BhcnBvcnQvLgorCisKK1BhcnBvcnQgbGlua2VkIGludG8gdGhlIGtlcm5lbCBzdGF0aWNhbGx5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJZiB5b3UgY29tcGlsZSB0aGUgcGFycG9ydCBjb2RlIGludG8gdGhlIGtlcm5lbCwgdGhlbiB5b3UgY2FuIHVzZQora2VybmVsIGJvb3QgcGFyYW1ldGVycyB0byBnZXQgdGhlIHNhbWUgZWZmZWN0LiAgQWRkIHNvbWV0aGluZyBsaWtlIHRoZQorZm9sbG93aW5nIHRvIHlvdXIgTElMTyBjb21tYW5kIGxpbmU6CisKKwlwYXJwb3J0PTB4M2JjIHBhcnBvcnQ9MHgzNzgsNyBwYXJwb3J0PTB4Mjc4LGF1dG8sbm9maWZvCisKK1lvdSBjYW4gaGF2ZSBtYW55IGBwYXJwb3J0PS4uLicgc3RhdGVtZW50cywgb25lIGZvciBlYWNoIHBvcnQgeW91IHdhbnQKK3RvIGFkZC4gIEFkZGluZyBgcGFycG9ydD0wJyB0byB0aGUga2VybmVsIGNvbW1hbmQtbGluZSB3aWxsIGRpc2FibGUKK3BhcnBvcnQgc3VwcG9ydCBlbnRpcmVseS4gIEFkZGluZyBgcGFycG9ydD1hdXRvJyB0byB0aGUga2VybmVsCitjb21tYW5kLWxpbmUgd2lsbCBtYWtlIHBhcnBvcnQgdXNlIGFueSBJUlEgbGluZXMgb3IgRE1BIGNoYW5uZWxzIHRoYXQKK2l0IGF1dG8tZGV0ZWN0cy4KKworCitGaWxlcyBpbiAvcHJvYworPT09PT09PT09PT09PT0KKworSWYgeW91IGhhdmUgY29uZmlndXJlZCB0aGUgL3Byb2MgZmlsZXN5c3RlbSBpbnRvIHlvdXIga2VybmVsLCB5b3Ugd2lsbAorc2VlIGEgbmV3IGRpcmVjdG9yeSBlbnRyeTogL3Byb2Mvc3lzL2Rldi9wYXJwb3J0LiAgSW4gdGhlcmUgd2lsbCBiZSBhCitkaXJlY3RvcnkgZW50cnkgZm9yIGVhY2ggcGFyYWxsZWwgcG9ydCBmb3Igd2hpY2ggcGFycG9ydCBpcworY29uZmlndXJlZC4gIEluIGVhY2ggb2YgdGhvc2UgZGlyZWN0b3JpZXMgYXJlIGEgY29sbGVjdGlvbiBvZiBmaWxlcworZGVzY3JpYmluZyB0aGF0IHBhcmFsbGVsIHBvcnQuCisKK1RoZSAvcHJvYy9zeXMvZGV2L3BhcnBvcnQgZGlyZWN0b3J5IHRyZWUgbG9va3MgbGlrZToKKworcGFycG9ydAorfC0tIGRlZmF1bHQKK3wgICB8LS0gc3BpbnRpbWUKK3wgICBgLS0gdGltZXNsaWNlCit8LS0gcGFycG9ydDAKK3wgICB8LS0gYXV0b3Byb2JlCit8ICAgfC0tIGF1dG9wcm9iZTAKK3wgICB8LS0gYXV0b3Byb2JlMQorfCAgIHwtLSBhdXRvcHJvYmUyCit8ICAgfC0tIGF1dG9wcm9iZTMKK3wgICB8LS0gZGV2aWNlcworfCAgIHwgICB8LS0gYWN0aXZlCit8ICAgfCAgIGAtLSBscAorfCAgIHwgICAgICAgYC0tIHRpbWVzbGljZQorfCAgIHwtLSBiYXNlLWFkZHIKK3wgICB8LS0gaXJxCit8ICAgfC0tIGRtYQorfCAgIHwtLSBtb2RlcworfCAgIGAtLSBzcGludGltZQorYC0tIHBhcnBvcnQxCisgICAgfC0tIGF1dG9wcm9iZQorICAgIHwtLSBhdXRvcHJvYmUwCisgICAgfC0tIGF1dG9wcm9iZTEKKyAgICB8LS0gYXV0b3Byb2JlMgorICAgIHwtLSBhdXRvcHJvYmUzCisgICAgfC0tIGRldmljZXMKKyAgICB8ICAgfC0tIGFjdGl2ZQorICAgIHwgICBgLS0gcHBhCisgICAgfCAgICAgICBgLS0gdGltZXNsaWNlCisgICAgfC0tIGJhc2UtYWRkcgorICAgIHwtLSBpcnEKKyAgICB8LS0gZG1hCisgICAgfC0tIG1vZGVzCisgICAgYC0tIHNwaW50aW1lCisKKworRmlsZToJCUNvbnRlbnRzOgorCitkZXZpY2VzL2FjdGl2ZQlBIGxpc3Qgb2YgdGhlIGRldmljZSBkcml2ZXJzIHVzaW5nIHRoYXQgcG9ydC4gIEEgIisiCisJCXdpbGwgYXBwZWFyIGJ5IHRoZSBuYW1lIG9mIHRoZSBkZXZpY2UgY3VycmVudGx5IHVzaW5nCisJCXRoZSBwb3J0IChpdCBtaWdodCBub3QgYXBwZWFyIGFnYWluc3QgYW55KS4gIFRoZQorCQlzdHJpbmcgIm5vbmUiIG1lYW5zIHRoYXQgdGhlcmUgYXJlIG5vIGRldmljZSBkcml2ZXJzCisJCXVzaW5nIHRoYXQgcG9ydC4KKworYmFzZS1hZGRyCVBhcmFsbGVsIHBvcnQncyBiYXNlIGFkZHJlc3MsIG9yIGFkZHJlc3NlcyBpZiB0aGUgcG9ydAorCQloYXMgbW9yZSB0aGFuIG9uZSBpbiB3aGljaCBjYXNlIHRoZXkgYXJlIHNlcGFyYXRlZAorCQl3aXRoIHRhYnMuICBUaGVzZSB2YWx1ZXMgbWlnaHQgbm90IGhhdmUgYW55IHNlbnNpYmxlCisJCW1lYW5pbmcgZm9yIHNvbWUgcG9ydHMuCisKK2lycQkJUGFyYWxsZWwgcG9ydCdzIElSUSwgb3IgLTEgaWYgbm9uZSBpcyBiZWluZyB1c2VkLgorCitkbWEJCVBhcmFsbGVsIHBvcnQncyBETUEgY2hhbm5lbCwgb3IgLTEgaWYgbm9uZSBpcyBiZWluZworCQl1c2VkLgorCittb2RlcwkJUGFyYWxsZWwgcG9ydCdzIGhhcmR3YXJlIG1vZGVzLCBjb21tYS1zZXBhcmF0ZWQsCisJCW1lYW5pbmc6CisKKwkJUENTUFAJCVBDLXN0eWxlIFNQUCByZWdpc3RlcnMgYXJlIGF2YWlsYWJsZS4KKwkJVFJJU1RBVEUJUG9ydCBpcyBiaWRpcmVjdGlvbmFsLgorCQlDT01QQVQJCUhhcmR3YXJlIGFjY2VsZXJhdGlvbiBmb3IgcHJpbnRlcnMgaXMKKwkJCQlhdmFpbGFibGUgYW5kIHdpbGwgYmUgdXNlZC4KKwkJRVBQCQlIYXJkd2FyZSBhY2NlbGVyYXRpb24gZm9yIEVQUCBwcm90b2NvbAorCQkJCWlzIGF2YWlsYWJsZSBhbmQgd2lsbCBiZSB1c2VkLgorCQlFQ1AJCUhhcmR3YXJlIGFjY2VsZXJhdGlvbiBmb3IgRUNQIHByb3RvY29sCisJCQkJaXMgYXZhaWxhYmxlIGFuZCB3aWxsIGJlIHVzZWQuCisJCURNQQkJRE1BIGlzIGF2YWlsYWJsZSBhbmQgd2lsbCBiZSB1c2VkLgorCisJCU5vdGUgdGhhdCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB3aWxsIG9ubHkgdGFrZQorCQlhZHZhbnRhZ2Ugb2YgQ09NUEFUIGFuZCBFQ1AgbW9kZXMgaWYgaXQgaGFzIGFuIElSUQorCQlsaW5lIHRvIHVzZS4KKworYXV0b3Byb2JlCUFueSBJRUVFLTEyODQgZGV2aWNlIElEIGluZm9ybWF0aW9uIHRoYXQgaGFzIGJlZW4KKwkJYWNxdWlyZWQgZnJvbSB0aGUgKG5vbi1JRUVFIDEyODQuMykgZGV2aWNlLgorCithdXRvcHJvYmVbMC0zXQlJRUVFIDEyODQgZGV2aWNlIElEIGluZm9ybWF0aW9uIHJldHJpZXZlZCBmcm9tCisJCWRhaXN5LWNoYWluIGRldmljZXMgdGhhdCBjb25mb3JtIHRvIElFRUUgMTI4NC4zLgorCitzcGludGltZQlUaGUgbnVtYmVyIG9mIG1pY3Jvc2Vjb25kcyB0byBidXN5LWxvb3Agd2hpbGUgd2FpdGluZworCQlmb3IgdGhlIHBlcmlwaGVyYWwgdG8gcmVzcG9uZC4gIFlvdSBtaWdodCBmaW5kIHRoYXQKKwkJYWRqdXN0aW5nIHRoaXMgaW1wcm92ZXMgcGVyZm9ybWFuY2UsIGRlcGVuZGluZyBvbiB5b3VyCisJCXBlcmlwaGVyYWxzLiAgVGhpcyBpcyBhIHBvcnQtd2lkZSBzZXR0aW5nLCBpLmUuIGl0CisJCWFwcGxpZXMgdG8gYWxsIGRldmljZXMgb24gYSBwYXJ0aWN1bGFyIHBvcnQuCisKK3RpbWVzbGljZQlUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGF0IGEgZGV2aWNlIGRyaXZlciBpcworCQlhbGxvd2VkIHRvIGtlZXAgYSBwb3J0IGNsYWltZWQgZm9yLiAgVGhpcyBpcyBhZHZpc29yeSwKKwkJYW5kIGRyaXZlciBjYW4gaWdub3JlIGl0IGlmIGl0IG11c3QuCisKK2RlZmF1bHQvKglUaGUgZGVmYXVsdHMgZm9yIHNwaW50aW1lIGFuZCB0aW1lc2xpY2UuIFdoZW4gYSBuZXcKKwkJcG9ydCBpcwlyZWdpc3RlcmVkLCBpdCBwaWNrcyB1cCB0aGUgZGVmYXVsdCBzcGludGltZS4KKwkJV2hlbiBhIG5ldyBkZXZpY2UgaXMgcmVnaXN0ZXJlZCwgaXQgcGlja3MgdXAgdGhlCisJCWRlZmF1bHQgdGltZXNsaWNlLgorCitEZXZpY2UgZHJpdmVycworPT09PT09PT09PT09PT0KKworT25jZSB0aGUgcGFycG9ydCBjb2RlIGlzIGluaXRpYWxpc2VkLCB5b3UgY2FuIGF0dGFjaCBkZXZpY2UgZHJpdmVycyB0bworc3BlY2lmaWMgcG9ydHMuICBOb3JtYWxseSB0aGlzIGhhcHBlbnMgYXV0b21hdGljYWxseTsgaWYgdGhlIGxwIGRyaXZlcgoraXMgbG9hZGVkIGl0IHdpbGwgY3JlYXRlIG9uZSBscCBkZXZpY2UgZm9yIGVhY2ggcG9ydCBmb3VuZC4gIFlvdSBjYW4KK292ZXJyaWRlIHRoaXMsIHRob3VnaCwgYnkgdXNpbmcgcGFyYW1ldGVycyBlaXRoZXIgd2hlbiB5b3UgbG9hZCB0aGUgbHAKK2RyaXZlcjoKKworCSMgaW5zbW9kIGxwIHBhcnBvcnQ9MCwyCisKK29yIG9uIHRoZSBMSUxPIGNvbW1hbmQgbGluZToKKworCWxwPXBhcnBvcnQwIGxwPXBhcnBvcnQyCisKK0JvdGggdGhlIGFib3ZlIGV4YW1wbGVzIHdvdWxkIGluZm9ybSBscCB0aGF0IHlvdSB3YW50IC9kZXYvbHAwIHRvIGJlCit0aGUgZmlyc3QgcGFyYWxsZWwgcG9ydCwgYW5kIC9kZXYvbHAxIHRvIGJlIHRoZSBfdGhpcmRfIHBhcmFsbGVsIHBvcnQsCit3aXRoIG5vIGxwIGRldmljZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNlY29uZCBwb3J0IChwYXJwb3J0MSkuICBOb3RlCit0aGF0IHRoaXMgaXMgZGlmZmVyZW50IHRvIHRoZSB3YXkgb2xkZXIga2VybmVscyB3b3JrZWQ7IHRoZXJlIHVzZWQgdG8KK2JlIGEgc3RhdGljIGFzc29jaWF0aW9uIGJldHdlZW4gdGhlIEkvTyBwb3J0IGFkZHJlc3MgYW5kIHRoZSBkZXZpY2UKK25hbWUsIHNvIC9kZXYvbHAwIHdhcyBhbHdheXMgdGhlIHBvcnQgYXQgMHgzYmMuICBUaGlzIGlzIG5vIGxvbmdlciB0aGUKK2Nhc2UgLSBpZiB5b3Ugb25seSBoYXZlIG9uZSBwb3J0LCBpdCB3aWxsIGRlZmF1bHQgdG8gYmVpbmcgL2Rldi9scDAsCityZWdhcmRsZXNzIG9mIGJhc2UgYWRkcmVzcy4KKworQWxzbzoKKworICogSWYgeW91IHNlbGVjdGVkIHRoZSBJRUVFIDEyODQgc3VwcG9ydCBhdCBjb21waWxlIHRpbWUsIHlvdSBjYW4gc2F5CisgICBgbHA9YXV0bycgb24gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUsIGFuZCBscCB3aWxsIGNyZWF0ZSBkZXZpY2VzCisgICBvbmx5IGZvciB0aG9zZSBwb3J0cyB0aGF0IHNlZW0gdG8gaGF2ZSBwcmludGVycyBhdHRhY2hlZC4KKworICogSWYgeW91IGdpdmUgUExJUCB0aGUgYHRpbWlkJyBwYXJhbWV0ZXIsIGVpdGhlciB3aXRoIGBwbGlwPXRpbWlkJyBvbgorICAgdGhlIGNvbW1hbmQgbGluZSwgb3Igd2l0aCBgaW5zbW9kIHBsaXAgdGltaWQ9MScgd2hlbiB1c2luZyBtb2R1bGVzLAorICAgaXQgd2lsbCBhdm9pZCBhbnkgcG9ydHMgdGhhdCBzZWVtIHRvIGJlIGluIHVzZSBieSBvdGhlciBkZXZpY2VzLgorCisgKiBJUlEgYXV0b3Byb2Jpbmcgd29ya3Mgb25seSBmb3IgYSBmZXcgcG9ydCB0eXBlcyBhdCB0aGUgbW9tZW50LgorCitSZXBvcnRpbmcgcHJpbnRlciBwcm9ibGVtcyB3aXRoIHBhcnBvcnQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJZiB5b3UgYXJlIGhhdmluZyBwcm9ibGVtcyBwcmludGluZywgcGxlYXNlIGdvIHRocm91Z2ggdGhlc2Ugc3RlcHMgdG8KK3RyeSB0byBuYXJyb3cgZG93biB3aGVyZSB0aGUgcHJvYmxlbSBhcmVhIGlzLgorCitXaGVuIHJlcG9ydGluZyBwcm9ibGVtcyB3aXRoIHBhcnBvcnQsIHJlYWxseSB5b3UgbmVlZCB0byBnaXZlIGFsbCBvZgordGhlIG1lc3NhZ2VzIHRoYXQgcGFycG9ydF9wYyBzcGl0cyBvdXQgd2hlbiBpdCBpbml0aWFsaXNlcy4gIFRoZXJlIGFyZQorc2V2ZXJhbCBjb2RlIHBhdGhzOgorCitvIHBvbGxpbmcKK28gaW50ZXJydXB0LWRyaXZlbiwgcHJvdG9jb2wgaW4gc29mdHdhcmUKK28gaW50ZXJydXB0LWRyaXZlbiwgcHJvdG9jb2wgaW4gaGFyZHdhcmUgdXNpbmcgUElPCitvIGludGVycnVwdC1kcml2ZW4sIHByb3RvY29sIGluIGhhcmR3YXJlIHVzaW5nIERNQQorCitUaGUga2VybmVsIG1lc3NhZ2VzIHRoYXQgcGFycG9ydF9wYyBsb2dzIGdpdmUgYW4gaW5kaWNhdGlvbiBvZiB3aGljaAorY29kZSBwYXRoIGlzIGJlaW5nIHVzZWQuIChUaGV5IGNvdWxkIGJlIGEgbG90IGJldHRlciBhY3R1YWxseS4uKQorCitGb3Igbm9ybWFsIHByaW50ZXIgcHJvdG9jb2wsIGhhdmluZyBJRUVFIDEyODQgbW9kZXMgZW5hYmxlZCBvciBub3QKK3Nob3VsZCBub3QgbWFrZSBhIGRpZmZlcmVuY2UuCisKK1RvIHR1cm4gb2ZmIHRoZSAncHJvdG9jb2wgaW4gaGFyZHdhcmUnIGNvZGUgcGF0aHMsIGRpc2FibGUKK0NPTkZJR19QQVJQT1JUX1BDX0ZJRk8uICBOb3RlIHRoYXQgd2hlbiB0aGV5IGFyZSBlbmFibGVkIHRoZXkgYXJlIG5vdAorbmVjZXNzYXJpbHkgX3VzZWRfOyBpdCBkZXBlbmRzIG9uIHdoZXRoZXIgdGhlIGhhcmR3YXJlIGlzIGF2YWlsYWJsZSwKK2VuYWJsZWQgYnkgdGhlIEJJT1MsIGFuZCBkZXRlY3RlZCBieSB0aGUgZHJpdmVyLgorCitTbywgdG8gc3RhcnQgd2l0aCwgZGlzYWJsZSBDT05GSUdfUEFSUE9SVF9QQ19GSUZPLCBhbmQgbG9hZCBwYXJwb3J0X3BjCit3aXRoICdpcnE9bm9uZScuIFNlZSBpZiBwcmludGluZyB3b3JrcyB0aGVuLiAgSXQgcmVhbGx5IHNob3VsZCwKK2JlY2F1c2UgdGhpcyBpcyB0aGUgc2ltcGxlc3QgY29kZSBwYXRoLgorCitJZiB0aGF0IHdvcmtzIGZpbmUsIHRyeSB3aXRoICdpbz0weDM3OCBpcnE9NycgKGFkanVzdCBmb3IgeW91cgoraGFyZHdhcmUpLCB0byBtYWtlIGl0IHVzZSBpbnRlcnJ1cHQtZHJpdmVuIGluLXNvZnR3YXJlIHByb3RvY29sLgorCitJZiBfdGhhdF8gd29ya3MgZmluZSwgdGhlbiBvbmUgb2YgdGhlIGhhcmR3YXJlIG1vZGVzIGlzbid0IHdvcmtpbmcKK3JpZ2h0LiAgRW5hYmxlIENPTkZJR19QQVJQT1JUX1BDX0ZJRk8gKG5vLCBpdCBpc24ndCBhIG1vZHVsZSBvcHRpb24sCithbmQgeWVzLCBpdCBzaG91bGQgYmUpLCBzZXQgdGhlIHBvcnQgdG8gRUNQIG1vZGUgaW4gdGhlIEJJT1MgYW5kIG5vdGUKK3RoZSBETUEgY2hhbm5lbCwgYW5kIHRyeSB3aXRoOgorCisgICAgaW89MHgzNzggaXJxPTcgZG1hPW5vbmUgKGZvciBQSU8pCisgICAgaW89MHgzNzggaXJxPTcgZG1hPTMgKGZvciBETUEpCistLQorcGhpbGJAZ251Lm9yZwordGltQGN5YmVyZWxrLm5ldApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wY21jaWEvLmdpdGlnbm9yZSBiL0RvY3VtZW50YXRpb24vcGNtY2lhLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNkMDgxMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcGNtY2lhLy5naXRpZ25vcmUKQEAgLTAsMCArMSBAQAorY3JjMzJoYXNoCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3BjbWNpYS9NYWtlZmlsZSBiL0RvY3VtZW50YXRpb24vcGNtY2lhL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3YThmYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3BjbWNpYS9NYWtlZmlsZQpAQCAtMCwwICsxLDcgQEAKKyMgTGlzdCBvZiBwcm9ncmFtcyB0byBidWlsZAoraG9zdHByb2dzLXkgOj0gY3JjMzJoYXNoCisKKyMgVGVsbCBrYnVpbGQgdG8gYWx3YXlzIGJ1aWxkIHRoZSBwcm9ncmFtcworYWx3YXlzIDo9ICQoaG9zdHByb2dzLXkpCisKK0hPU1RDRkxBR1NfY3JjMzJoYXNoLm8gKz0gLUkkKG9ianRyZWUpL3Vzci9pbmNsdWRlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3BjbWNpYS9jcmMzMmhhc2guYyBiL0RvY3VtZW50YXRpb24vcGNtY2lhL2NyYzMyaGFzaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0ZjhiZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3BjbWNpYS9jcmMzMmhhc2guYwpAQCAtMCwwICsxLDMyIEBACisvKiBjcmMzMmhhc2guYyAtIGRlcml2ZWQgZnJvbSBsaW51eC9saWIvY3JjMzIuYywgR05VIEdQTCB2MiAqLworLyogVXNhZ2UgZXhhbXBsZToKKyQgLi9jcmMzMmhhc2ggIkR1YWwgU3BlZWQiCisqLworCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCitzdGF0aWMgdW5zaWduZWQgaW50IGNyYzMyKHVuc2lnbmVkIGNoYXIgY29uc3QgKnAsIHVuc2lnbmVkIGludCBsZW4pCit7CisJaW50IGk7CisJdW5zaWduZWQgaW50IGNyYyA9IDA7CisJd2hpbGUgKGxlbi0tKSB7CisJCWNyYyBePSAqcCsrOworCQlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQorCQkJY3JjID0gKGNyYyA+PiAxKSBeICgoY3JjICYgMSkgPyAweGVkYjg4MzIwIDogMCk7CisJfQorCXJldHVybiBjcmM7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworCXVuc2lnbmVkIGludCByZXN1bHQ7CisJaWYgKGFyZ2MgIT0gMikgeworCQlwcmludGYoIm5vIHN0cmluZyBwYXNzZWQgYXMgYXJndW1lbnRcbiIpOworCQlyZXR1cm4gLTE7CisJfQorCXJlc3VsdCA9IGNyYzMyKCh1bnNpZ25lZCBjaGFyIGNvbnN0ICopYXJndlsxXSwgc3RybGVuKGFyZ3ZbMV0pKTsKKwlwcmludGYoIjB4JXhcbiIsIHJlc3VsdCk7CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3BjbWNpYS9kZXZpY2V0YWJsZS50eHQgYi9Eb2N1bWVudGF0aW9uL3BjbWNpYS9kZXZpY2V0YWJsZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk5YWZkMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcGNtY2lhL2RldmljZXRhYmxlLnR4dApAQCAtMCwwICsxLDMzIEBACitNYXRjaGluZyBvZiBQQ01DSUEgZGV2aWNlcyB0byBkcml2ZXJzIGlzIGRvbmUgdXNpbmcgb25lIG9yIG1vcmUgb2YgdGhlCitmb2xsb3dpbmcgY3JpdGVyaWE6CisKKy0gbWFudWZhY3RvciBJRAorLSBjYXJkIElECistIHByb2R1Y3QgSUQgc3RyaW5ncyBfYW5kXyBoYXNoZXMgb2YgdGhlc2Ugc3RyaW5ncworLSBmdW5jdGlvbiBJRAorLSBkZXZpY2UgZnVuY3Rpb24gKGFjdHVhbCBhbmQgcHNldWRvKQorCitZb3Ugc2hvdWxkIHVzZSB0aGUgaGVscGVycyBpbiBpbmNsdWRlL3BjbWNpYS9kZXZpY2VfaWQuaCBmb3IgZ2VuZXJhdGluZyB0aGUKK3N0cnVjdCBwY21jaWFfZGV2aWNlX2lkW10gZW50cmllcyB3aGljaCBtYXRjaCBkZXZpY2VzIHRvIGRyaXZlcnMuCisKK0lmIHlvdSB3YW50IHRvIG1hdGNoIHByb2R1Y3QgSUQgc3RyaW5ncywgeW91IGFsc28gbmVlZCB0byBwYXNzIHRoZSBjcmMzMgoraGFzaGVzIG9mIHRoZSBzdHJpbmcgdG8gdGhlIG1hY3JvLCBlLmcuIGlmIHlvdSB3YW50IHRvIG1hdGNoIHRoZSBwcm9kdWN0IElECitzdHJpbmcgMSwgeW91IG5lZWQgdG8gdXNlCisKK1BDTUNJQV9ERVZJQ0VfUFJPRF9JRDEoInNvbWVfc3RyaW5nIiwgMHgoaGFzaF9vZl9zb21lX3N0cmluZykpLAorCitJZiB0aGUgaGFzaCBpcyBpbmNvcnJlY3QsIHRoZSBrZXJuZWwgd2lsbCBpbmZvcm0geW91IGFib3V0IHRoaXMgaW4gImRtZXNnIgordXBvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24sIGFuZCB0ZWxsIHlvdSBvZiB0aGUgY29ycmVjdCBoYXNoLgorCitZb3UgY2FuIGRldGVybWluZSB0aGUgaGFzaCBvZiB0aGUgcHJvZHVjdCBJRCBzdHJpbmdzIGJ5IGNhdHRpbmcgdGhlIGZpbGUKKyJtb2RhbGlhcyIgaW4gdGhlIHN5c2ZzIGRpcmVjdG9yeSBvZiB0aGUgUENNQ0lBIGRldmljZS4gSXQgZ2VuZXJhdGVzIGEgc3RyaW5nCitpbiB0aGUgZm9sbG93aW5nIGZvcm06CitwY21jaWE6bTAxNDljQzFBQmYwNnBmbjAwZm4wMHBhNzI1Qjg0MkRwYkYxRUZFRTg0cGMwODc3QjYyN3BkMDAwMDAwMDAKKworVGhlIGhleCB2YWx1ZSBhZnRlciAicGEiIGlzIHRoZSBoYXNoIG9mIHByb2R1Y3QgSUQgc3RyaW5nIDEsIGFmdGVyICJwYiIgZm9yCitzdHJpbmcgMiBhbmQgc28gb24uCisKK0FsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIGNyYzMyaGFzaCAoc2VlIERvY3VtZW50YXRpb24vcGNtY2lhL2NyYzMyaGFzaC5jKQordG8gZGV0ZXJtaW5lIHRoZSBjcmMzMiBoYXNoLiAgU2ltcGx5IHBhc3MgdGhlIHN0cmluZyB5b3Ugd2FudCB0byBldmFsdWF0ZQorYXMgYXJndW1lbnQgdG8gdGhpcyBwcm9ncmFtLCBlLmcuOgorJCAuL2NyYzMyaGFzaCAiRHVhbCBTcGVlZCIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcGNtY2lhL2RyaXZlci1jaGFuZ2VzLnR4dCBiL0RvY3VtZW50YXRpb24vcGNtY2lhL2RyaXZlci1jaGFuZ2VzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDA0MzYxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wY21jaWEvZHJpdmVyLWNoYW5nZXMudHh0CkBAIC0wLDAgKzEsMTUyIEBACitUaGlzIGZpbGUgZGV0YWlscyBjaGFuZ2VzIGluIDIuNiB3aGljaCBhZmZlY3QgUENNQ0lBIGNhcmQgZHJpdmVyIGF1dGhvcnM6CisqIHBjbWNpYV9sb29wX2NvbmZpZygpIGFuZCBhdXRvY29uZmlndXJhdGlvbiAoYXMgb2YgMi42LjM2KQorICAgSWYgc3RydWN0IHBjbWNpYV9kZXZpY2UgKnBfZGV2LT5jb25maWdfZmxhZ3MgaXMgc2V0IGFjY29yZGluZ2x5LAorICAgcGNtY2lhX2xvb3BfY29uZmlnKCkgbm93IHNldHMgdXAgY2VydGFpbiBjb25maWd1cmF0aW9uIHZhbHVlcworICAgYXV0b21hdGljYWxseSwgdGhvdWdoIHRoZSBkcml2ZXIgbWF5IHN0aWxsIG92ZXJyaWRlIHRoZSBzZXR0aW5ncworICAgaW4gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLiBUaGUgZm9sbG93aW5nIGF1dG9jb25maWd1cmF0aW9uIG9wdGlvbnMKKyAgIGFyZSBwcm92aWRlZCBhdCB0aGUgbW9tZW50OgorCUNPTkZfQVVUT19DSEVDS19WQ0MgOiBjaGVjayBmb3IgbWF0Y2hpbmcgVmNjCisJQ09ORl9BVVRPX1NFVF9WUFAgICA6IHNldCBWcHAKKwlDT05GX0FVVE9fQVVESU8gICAgIDogYXV0by1lbmFibGUgYXVkaW8gbGluZSwgaWYgcmVxdWlyZWQKKwlDT05GX0FVVE9fU0VUX0lPICAgIDogc2V0IGlvcG9ydCByZXNvdXJjZXMgKC0+cmVzb3VyY2VbMCwxXSkKKwlDT05GX0FVVE9fU0VUX0lPTUVNIDogc2V0IGZpcnN0IGlvbWVtIHJlc291cmNlICgtPnJlc291cmNlWzJdKQorCisqIHBjbWNpYV9yZXF1ZXN0X2NvbmZpZ3VyYXRpb24gLT4gcGNtY2lhX2VuYWJsZV9kZXZpY2UgKGFzIG9mIDIuNi4zNikKKyAgIHBjbWNpYV9yZXF1ZXN0X2NvbmZpZ3VyYXRpb24oKSBnb3QgcmVuYW1lZCB0byBwY21jaWFfZW5hYmxlX2RldmljZSgpLAorICAgYXMgaXQgbWlycm9ycyBwY21jaWFfZGlzYWJsZV9kZXZpY2UoKS4gQ29uZmlndXJhdGlvbiBzZXR0aW5ncyBhcmUgbm93CisgICBzdG9yZWQgaW4gc3RydWN0IHBjbWNpYV9kZXZpY2UsIGUuZy4gaW4gdGhlIGZpZWxkcyBjb25maWdfZmxhZ3MsCisgICBjb25maWdfaW5kZXgsIGNvbmZpZ19iYXNlLCB2cHAuCisKKyogcGNtY2lhX3JlcXVlc3Rfd2luZG93IGNoYW5nZXMgKGFzIG9mIDIuNi4zNikKKyAgIEluc3RlYWQgb2Ygd2luX3JlcV90LCBkcml2ZXJzIGFyZSBub3cgcmVxdWVzdGVkIHRvIGZpbGwgb3V0CisgICBzdHJ1Y3QgcGNtY2lhX2RldmljZSAqcF9kZXYtPnJlc291cmNlWzIsMyw0LDVdIGZvciB1cCB0byBmb3VyIGlvcG9ydAorICAgcmFuZ2VzLiBBZnRlciBhIGNhbGwgdG8gcGNtY2lhX3JlcXVlc3Rfd2luZG93KCksIHRoZSByZWdpb25zIGZvdW5kIHRoZXJlCisgICBhcmUgcmVzZXJ2ZWQgYW5kIG1heSBiZSB1c2VkIGltbWVkaWF0ZWx5IC0tIHVudGlsIHBjbWNpYV9yZWxlYXNlX3dpbmRvdygpCisgICBpcyBjYWxsZWQuCisKKyogcGNtY2lhX3JlcXVlc3RfaW8gY2hhbmdlcyAoYXMgb2YgMi42LjM2KQorICAgSW5zdGVhZCBvZiBpb19yZXFfdCwgZHJpdmVycyBhcmUgbm93IHJlcXVlc3RlZCB0byBmaWxsIG91dAorICAgc3RydWN0IHBjbWNpYV9kZXZpY2UgKnBfZGV2LT5yZXNvdXJjZVswLDFdIGZvciB1cCB0byB0d28gaW9wb3J0CisgICByYW5nZXMuIEFmdGVyIGEgY2FsbCB0byBwY21jaWFfcmVxdWVzdF9pbygpLCB0aGUgcG9ydHMgZm91bmQgdGhlcmUKKyAgIGFyZSByZXNlcnZlZCwgYWZ0ZXIgY2FsbGluZyBwY21jaWFfcmVxdWVzdF9jb25maWd1cmF0aW9uKCksIHRoZXkgbWF5CisgICBiZSB1c2VkLgorCisqIE5vIGRldl9pbmZvX3QsIG5vIGNzX3R5cGVzLmggKGFzIG9mIDIuNi4zNikKKyAgIGRldl9pbmZvX3QgYW5kIGEgZmV3IG90aGVyIHR5cGVkZWZzIGFyZSByZW1vdmVkLiBObyBsb25nZXIgdXNlIHRoZW0KKyAgIGluIFBDTUNJQSBkZXZpY2UgZHJpdmVycy4gQWxzbywgZG8gbm90IGluY2x1ZGUgcGNtY2lhL2NzX3R5cGVzLmgsIGFzCisgICB0aGlzIGZpbGUgaXMgZ29uZS4KKworKiBObyBkZXZfbm9kZV90IChhcyBvZiAyLjYuMzUpCisgICBUaGVyZSBpcyBubyBtb3JlIG5lZWQgdG8gZmlsbCBvdXQgYSAiZGV2X25vZGVfdCIgc3RydWN0dXJlLgorCisqIE5ldyBJUlEgcmVxdWVzdCBydWxlcyAoYXMgb2YgMi42LjM1KQorICAgSW5zdGVhZCBvZiB0aGUgb2xkIHBjbWNpYV9yZXF1ZXN0X2lycSgpIGludGVyZmFjZSwgZHJpdmVycyBtYXkgbm93CisgICBjaG9vc2UgYmV0d2VlbjoKKyAgIC0gY2FsbGluZyByZXF1ZXN0X2lycS9mcmVlX2lycSBkaXJlY3RseS4gVXNlIHRoZSBJUlEgZnJvbSAqcF9kZXYtPmlycS4KKyAgIC0gdXNlIHBjbWNpYV9yZXF1ZXN0X2lycShwX2RldiwgaGFuZGxlcl90KTsgdGhlIFBDTUNJQSBjb3JlIHdpbGwKKyAgICAgY2xlYW4gdXAgYXV0b21hdGljYWxseSBvbiBjYWxscyB0byBwY21jaWFfZGlzYWJsZV9kZXZpY2UoKSBvcgorICAgICBkZXZpY2UgZWplY3Rpb24uCisgICAtIGRyaXZlcnMgc3RpbGwgbm90IGNhcGFibGUgb2YgSVJRRl9TSEFSRUQgKG9yIG5vdCB0ZWxsaW5nIHVzIHNvKSBtYXkKKyAgICAgdXNlIHRoZSBkZXByZWNhdGVkIHBjbWNpYV9yZXF1ZXN0X2V4Y2x1c2l2ZV9pcnEoKSBmb3IgdGhlIHRpbWUKKyAgICAgYmVpbmc7IHRoZXkgbWlnaHQgcmVjZWl2ZSBhIHNoYXJlZCBJUlEgbm9uZXRoZWxlc3MuCisKKyogbm8gY3NfZXJyb3IgLyBDU19DSEVDSyAvIENPTkZJR19QQ01DSUFfREVCVUcgKGFzIG9mIDIuNi4zMykKKyAgIEluc3RlYWQgb2YgdGhlIGNzX2Vycm9yKCkgY2FsbGJhY2sgb3IgdGhlIENTX0NIRUNLKCkgbWFjcm8sIHBsZWFzZSB1c2UKKyAgIExpbnV4LXN0eWxlIGNoZWNraW5nIG9mIHJldHVybiB2YWx1ZXMsIGFuZCAtLSBpZiBuZWNlc3NhcnkgLS0gZGVidWcKKyAgIG1lc3NhZ2VzIHVzaW5nICJkZXZfZGJnKCkiIG9yICJwcl9kZWJ1ZygpIi4KKworKiBOZXcgQ0lTIHR1cGxlIGFjY2VzcyAoYXMgb2YgMi42LjMzKQorICAgSW5zdGVhZCBvZiBwY21jaWFfZ2V0X3tmaXJzdCxuZXh0fV90dXBsZSgpLCBwY21jaWFfZ2V0X3R1cGxlX2RhdGEoKSBhbmQKKyAgIHBjbWNpYV9wYXJzZV90dXBsZSgpLCBhIGRyaXZlciBzaGFsbCB1c2UgInBjbWNpYV9nZXRfdHVwbGUoKSIgaWYgaXQgaXMKKyAgIG9ubHkgaW50ZXJlc3RlZCBpbiBvbmUgKHJhdykgdHVwbGUsIG9yICJwY21jaWFfbG9vcF90dXBsZSgpIiBpZiBpdCBpcworICAgaW50ZXJlc3RlZCBpbiBhbGwgdHVwbGVzIG9mIG9uZSB0eXBlLiBUbyBkZWNvZGUgdGhlIE1BQyBmcm9tIENJU1RQTF9GVU5DRSwKKyAgIGEgbmV3IGhlbHBlciAicGNtY2lhX2dldF9tYWNfZnJvbV9jaXMoKSIgd2FzIGFkZGVkLgorCisqIE5ldyBjb25maWd1cmF0aW9uIGxvb3AgaGVscGVyIChhcyBvZiAyLjYuMjgpCisgICBCeSBjYWxsaW5nIHBjbWNpYV9sb29wX2NvbmZpZygpLCBhIGRyaXZlciBjYW4gaXRlcmF0ZSBvdmVyIGFsbCBhdmFpbGFibGUKKyAgIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gRHVyaW5nIGEgZHJpdmVyJ3MgcHJvYmUoKSBwaGFzZSwgb25lIGRvZXNuJ3QgbmVlZAorICAgdG8gdXNlIHBjbWNpYV9nZXRfe2ZpcnN0LG5leHR9X3R1cGxlLCBwY21jaWFfZ2V0X3R1cGxlX2RhdGEgYW5kCisgICBwY21jaWFfcGFyc2VfdHVwbGUgZGlyZWN0bHkgaW4gbW9zdCBpZiBub3QgYWxsIGNhc2VzLgorCisqIE5ldyByZWxlYXNlIGhlbHBlciAoYXMgb2YgMi42LjE3KQorICAgSW5zdGVhZCBvZiBjYWxsaW5nIHBjbWNpYV9yZWxlYXNlX3tjb25maWd1cmF0aW9uLGlvLGlycSx3aW59LCBhbGwgdGhhdCdzCisgICBuZWNlc3Nhcnkgbm93IGlzIGNhbGxpbmcgcGNtY2lhX2Rpc2FibGVfZGV2aWNlLiBBcyB0aGVyZSBpcyBubyB2YWxpZAorICAgcmVhc29uIGxlZnQgdG8gY2FsbCBwY21jaWFfcmVsZWFzZV9pbyBhbmQgcGNtY2lhX3JlbGVhc2VfaXJxLCB0aGUKKyAgIGV4cG9ydHMgZm9yIHRoZW0gd2VyZSByZW1vdmVkLgorCisqIFVuaWZ5IGRldGFjaCBhbmQgUkVNT1ZBTCBldmVudCBjb2RlLCBhcyB3ZWxsIGFzIGF0dGFjaCBhbmQgSU5TRVJUSU9OCisgIGNvZGUgKGFzIG9mIDIuNi4xNikKKyAgICAgICB2b2lkICgqcmVtb3ZlKSAgICAgICAgICAoc3RydWN0IHBjbWNpYV9kZXZpY2UgKmRldik7CisgICAgICAgaW50ICgqcHJvYmUpICAgICAgICAgICAgKHN0cnVjdCBwY21jaWFfZGV2aWNlICpkZXYpOworCisqIE1vdmUgc3VzcGVuZCwgcmVzdW1lIGFuZCByZXNldCBvdXQgb2YgZXZlbnQgaGFuZGxlciAoYXMgb2YgMi42LjE2KQorICAgICAgIGludCAoKnN1c3BlbmQpICAgICAgICAgIChzdHJ1Y3QgcGNtY2lhX2RldmljZSAqZGV2KTsKKyAgICAgICBpbnQgKCpyZXN1bWUpICAgICAgICAgICAoc3RydWN0IHBjbWNpYV9kZXZpY2UgKmRldik7CisgIHNob3VsZCBiZSBpbml0aWFsaXplZCBpbiBzdHJ1Y3QgcGNtY2lhX2RyaXZlciwgYW5kIGhhbmRsZQorICAoU1VTUEVORCA9PSBSRVNFVF9QSFlTSUNBTCkgYW5kIChSRVNVTUUgPT0gQ0FSRF9SRVNFVCkgZXZlbnRzCisKKyogZXZlbnQgaGFuZGxlciBpbml0aWFsaXphdGlvbiBpbiBzdHJ1Y3QgcGNtY2lhX2RyaXZlciAoYXMgb2YgMi42LjEzKQorICAgVGhlIGV2ZW50IGhhbmRsZXIgaXMgbm90aWZpZWQgb2YgYWxsIGV2ZW50cywgYW5kIG11c3QgYmUgaW5pdGlhbGl6ZWQKKyAgIGFzIHRoZSBldmVudCgpIGNhbGxiYWNrIGluIHRoZSBkcml2ZXIncyBzdHJ1Y3QgcGNtY2lhX2RyaXZlci4KKworKiBwY21jaWEvdmVyc2lvbi5oIHNob3VsZCBub3QgYmUgdXNlZCAoYXMgb2YgMi42LjEzKQorICAgVGhpcyBmaWxlIHdpbGwgYmUgcmVtb3ZlZCBldmVudHVhbGx5LgorCisqIGluLWtlcm5lbCBkZXZpY2U8LT5kcml2ZXIgbWF0Y2hpbmcgKGFzIG9mIDIuNi4xMykKKyAgIFBDTUNJQSBkZXZpY2VzIGFuZCB0aGVpciBjb3JyZWN0IGRyaXZlcnMgY2FuIG5vdyBiZSBtYXRjaGVkIGluCisgICBrZXJuZWxzcGFjZS4gU2VlICdkZXZpY2V0YWJsZS50eHQnIGZvciBkZXRhaWxzLgorCisqIERldmljZSBtb2RlbCBpbnRlZ3JhdGlvbiAoYXMgb2YgMi42LjExKQorICAgQSBzdHJ1Y3QgcGNtY2lhX2RldmljZSBpcyByZWdpc3RlcmVkIHdpdGggdGhlIGRldmljZSBtb2RlbCBjb3JlLAorICAgYW5kIGNhbiBiZSB1c2VkIChlLmcuIGZvciBTRVRfTkVUREVWX0RFVikgYnkgdXNpbmcKKyAgIGhhbmRsZV90b19kZXYoY2xpZW50X2hhbmRsZV90ICogaGFuZGxlKS4KKworKiBDb252ZXJ0IGludGVybmFsIEkvTyBwb3J0IGFkZHJlc3NlcyB0byB1bnNpZ25lZCBpbnQgKGFzIG9mIDIuNi4xMSkKKyAgIGlvYWRkcl90IHNob3VsZCBiZSByZXBsYWNlZCBieSB1bnNpZ25lZCBpbnQgaW4gUENNQ0lBIGNhcmQgZHJpdmVycy4KKworKiBpcnFfbWFzayBhbmQgaXJxX2xpc3QgcGFyYW1ldGVycyAoYXMgb2YgMi42LjExKQorICAgVGhlIGlycV9tYXNrIGFuZCBpcnFfbGlzdCBwYXJhbWV0ZXJzIHNob3VsZCBubyBsb25nZXIgYmUgdXNlZCBpbgorICAgUENNQ0lBIGNhcmQgZHJpdmVycy4gSW5zdGVhZCwgaXQgaXMgdGhlIGpvYiBvZiB0aGUgUENNQ0lBIGNvcmUgdG8KKyAgIGRldGVybWluZSB3aGljaCBJUlEgc2hvdWxkIGJlIHVzZWQuIFRoZXJlZm9yZSwgbGluay0+aXJxLklSUUluZm8yCisgICBpcyBpZ25vcmVkLgorCisqIGNsaWVudC0+UGVuZGluZ0V2ZW50cyBpcyBnb25lIChhcyBvZiAyLjYuMTEpCisgICBjbGllbnQtPlBlbmRpbmdFdmVudHMgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS4KKworKiBjbGllbnQtPkF0dHJpYnV0ZXMgYXJlIGdvbmUgKGFzIG9mIDIuNi4xMSkKKyAgIGNsaWVudC0+QXR0cmlidXRlcyBpcyB1bnVzZWQsIHRoZXJlZm9yZSBpdCBpcyByZW1vdmVkIGZyb20gYWxsCisgICBQQ01DSUEgY2FyZCBkcml2ZXJzCisKKyogY29yZSBmdW5jdGlvbnMgbm8gbG9uZ2VyIGF2YWlsYWJsZSAoYXMgb2YgMi42LjExKQorICAgVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUga2VybmVsIHNvdXJjZQorICAgYmVjYXVzZSB0aGV5IGFyZSB1bnVzZWQgYnkgYWxsIGluLWtlcm5lbCBkcml2ZXJzLCBhbmQgbm8gZXh0ZXJuYWwKKyAgIGRyaXZlciB3YXMgcmVwb3J0ZWQgdG8gcmVseSBvbiB0aGVtOgorCXBjbWNpYV9nZXRfZmlyc3RfcmVnaW9uKCkKKwlwY21jaWFfZ2V0X25leHRfcmVnaW9uKCkKKwlwY21jaWFfbW9kaWZ5X3dpbmRvdygpCisJcGNtY2lhX3NldF9ldmVudF9tYXNrKCkKKwlwY21jaWFfZ2V0X2ZpcnN0X3dpbmRvdygpCisJcGNtY2lhX2dldF9uZXh0X3dpbmRvdygpCisKKyogZGV2aWNlIGxpc3QgaXRlcmF0aW9uIHVwb24gbW9kdWxlIHJlbW92YWwgKGFzIG9mIDIuNi4xMCkKKyAgIEl0IGlzIG5vIGxvbmdlciBuZWNlc3NhcnkgdG8gaXRlcmF0ZSBvbiB0aGUgZHJpdmVyJ3MgaW50ZXJuYWwKKyAgIGNsaWVudCBsaXN0IGFuZCBjYWxsIHRoZSAtPmRldGFjaCgpIGZ1bmN0aW9uIHVwb24gbW9kdWxlIHJlbW92YWwuCisKKyogUmVzb3VyY2UgbWFuYWdlbWVudC4gKGFzIG9mIDIuNi44KQorICAgQWx0aG91Z2ggdGhlIFBDTUNJQSBzdWJzeXN0ZW0gd2lsbCBhbGxvY2F0ZSByZXNvdXJjZXMgZm9yIGNhcmRzLAorICAgaXQgbm8gbG9uZ2VyIG1hcmtzIHRoZXNlIHJlc291cmNlcyBidXN5LiBUaGlzIG1lYW5zIHRoYXQgZHJpdmVyCisgICBhdXRob3JzIGFyZSBub3cgcmVzcG9uc2libGUgZm9yIGNsYWltaW5nIHlvdXIgcmVzb3VyY2VzIGFzIHBlcgorICAgb3RoZXIgZHJpdmVycyBpbiBMaW51eC4gWW91IHNob3VsZCB1c2UgcmVxdWVzdF9yZWdpb24oKSB0byBtYXJrCisgICB5b3VyIElPIHJlZ2lvbnMgaW4tdXNlLCBhbmQgcmVxdWVzdF9tZW1fcmVnaW9uKCkgdG8gbWFyayB5b3VyCisgICBtZW1vcnkgcmVnaW9ucyBpbi11c2UuIFRoZSBuYW1lIGFyZ3VtZW50IHNob3VsZCBiZSBhIHBvaW50ZXIgdG8KKyAgIHlvdXIgZHJpdmVyIG5hbWUuIEVnLCBmb3IgcGNuZXRfY3MsIG5hbWUgc2hvdWxkIHBvaW50IHRvIHRoZQorICAgc3RyaW5nICJwY25ldF9jcyIuCisKKyogQ2FyZFNlcnZpY2VzIGlzIGdvbmUKKyAgQ2FyZFNlcnZpY2VzKCkgaW4gMi40IGlzIGp1c3QgYSBiaWcgc3dpdGNoIHN0YXRlbWVudCB0byBjYWxsIHZhcmlvdXMKKyAgc2VydmljZXMuICBJbiAyLjYsIGFsbCBvZiB0aG9zZSBlbnRyeSBwb2ludHMgYXJlIGV4cG9ydGVkIGFuZCBjYWxsZWQKKyAgZGlyZWN0bHkgKGV4Y2VwdCBmb3IgcGNtY2lhX3JlcG9ydF9lcnJvcigpLCBqdXN0IHVzZSBjc19lcnJvcigpIGluc3RlYWQpLgorCisqIHN0cnVjdCBwY21jaWFfZHJpdmVyCisgIFlvdSBuZWVkIHRvIHVzZSBzdHJ1Y3QgcGNtY2lhX2RyaXZlciBhbmQgcGNtY2lhX3t1bix9cmVnaXN0ZXJfZHJpdmVyCisgIGluc3RlYWQgb2Yge3VuLH1yZWdpc3Rlcl9wY2NhcmRfZHJpdmVyCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3BjbWNpYS9kcml2ZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9wY21jaWEvZHJpdmVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWMxNjc5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wY21jaWEvZHJpdmVyLnR4dApAQCAtMCwwICsxLDMwIEBACitQQ01DSUEgRHJpdmVyCistLS0tLS0tLS0tLS0tCisKKworc3lzZnMKKy0tLS0tCisKK05ldyBQQ01DSUEgSURzIG1heSBiZSBhZGRlZCB0byBhIGRldmljZSBkcml2ZXIgcGNtY2lhX2RldmljZV9pZCB0YWJsZSBhdAorcnVudGltZSBhcyBzaG93biBiZWxvdzoKKworZWNobyAibWF0Y2hfZmxhZ3MgbWFuZl9pZCBjYXJkX2lkIGZ1bmNfaWQgZnVuY3Rpb24gZGV2aWNlX25vIFwKK3Byb2RfaWRfaGFzaFswXSBwcm9kX2lkX2hhc2hbMV0gcHJvZF9pZF9oYXNoWzJdIHByb2RfaWRfaGFzaFszXSIgPiBcCisvc3lzL2J1cy9wY21jaWEvZHJpdmVycy97ZHJpdmVyfS9uZXdfaWQKKworQWxsIGZpZWxkcyBhcmUgcGFzc2VkIGluIGFzIGhleGFkZWNpbWFsIHZhbHVlcyAobm8gbGVhZGluZyAweCkuCitUaGUgbWVhbmluZyBpcyBkZXNjcmliZWQgaW4gdGhlIFBDTUNJQSBzcGVjaWZpY2F0aW9uLCB0aGUgbWF0Y2hfZmxhZ3MgaXMKK2EgYml0d2lzZSBvci1lZCBjb21iaW5hdGlvbiBmcm9tIFBDTUNJQV9ERVZfSURfTUFUQ0hfKiBjb25zdGFudHMKK2RlZmluZWQgaW4gaW5jbHVkZS9saW51eC9tb2RfZGV2aWNldGFibGUuaC4KKworT25jZSBhZGRlZCwgdGhlIGRyaXZlciBwcm9iZSByb3V0aW5lIHdpbGwgYmUgaW52b2tlZCBmb3IgYW55IHVuY2xhaW1lZAorUENNQ0lBIGRldmljZSBsaXN0ZWQgaW4gaXRzIChuZXdseSB1cGRhdGVkKSBwY21jaWFfZGV2aWNlX2lkIGxpc3QuCisKK0EgY29tbW9uIHVzZS1jYXNlIGlzIHRvIGFkZCBhIG5ldyBkZXZpY2UgYWNjb3JkaW5nIHRvIHRoZSBtYW51ZmFjdHVyZXIgSUQKK2FuZCB0aGUgY2FyZCBJRCAoZm9ybSB0aGUgbWFuZl9pZCBhbmQgY2FyZF9pZCBmaWxlIGluIHRoZSBkZXZpY2UgdHJlZSkuCitGb3IgdGhpcywganVzdCB1c2U6CisKK2VjaG8gIjB4MyBtYW5mX2lkIGNhcmRfaWQgMCAwIDAgMCAwIDAgMCIgPiBcCisgICAgICAgIC9zeXMvYnVzL3BjbWNpYS9kcml2ZXJzL3tkcml2ZXJ9L25ld19pZAorCithZnRlciBsb2FkaW5nIHRoZSBkcml2ZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3BjbWNpYS9sb2NraW5nLnR4dCBiL0RvY3VtZW50YXRpb24vcGNtY2lhL2xvY2tpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyYzliNDcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3BjbWNpYS9sb2NraW5nLnR4dApAQCAtMCwwICsxLDExOCBAQAorVGhpcyBmaWxlIGV4cGxhaW5zIHRoZSBsb2NraW5nIGFuZCBleGNsdXNpb24gc2NoZW1lIHVzZWQgaW4gdGhlIFBDQ0FSRAorYW5kIFBDTUNJQSBzdWJzeXN0ZW1zLgorCisKK0EpIE92ZXJ2aWV3LCBMb2NraW5nIEhpZXJhcmNoeToKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcGNtY2lhX3NvY2tldF9saXN0X3J3c2VtCS0gcHJvdGVjdHMgb25seSB0aGUgbGlzdCBvZiBzb2NrZXRzCistIHNrdF9tdXRleAkJCS0gc2VyaWFsaXplcyBjYXJkIGluc2VydCAvIGVqZWN0aW9uCisgIC0gb3BzX211dGV4CQkJLSBzZXJpYWxpemVzIHNvY2tldCBvcGVyYXRpb24KKworCitCKSBFeGNsdXNpb24KKz09PT09PT09PT09PQorCitUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhbmQgY2FsbGJhY2tzIHRvIHN0cnVjdCBwY21jaWFfc29ja2V0IG11c3QKK2JlIGNhbGxlZCB3aXRoICJza3RfbXV0ZXgiIGhlbGQ6CisKKwlzb2NrZXRfZGV0ZWN0X2NoYW5nZSgpCisJc2VuZF9ldmVudCgpCisJc29ja2V0X3Jlc2V0KCkKKwlzb2NrZXRfc2h1dGRvd24oKQorCXNvY2tldF9zZXR1cCgpCisJc29ja2V0X3JlbW92ZSgpCisJc29ja2V0X2luc2VydCgpCisJc29ja2V0X2Vhcmx5X3Jlc3VtZSgpCisJc29ja2V0X2xhdGVfcmVzdW1lKCkKKwlzb2NrZXRfcmVzdW1lKCkKKwlzb2NrZXRfc3VzcGVuZCgpCisKKwlzdHJ1Y3QgcGNtY2lhX2NhbGxiYWNrCSpjYWxsYmFjaworCitUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhbmQgY2FsbGJhY2tzIHRvIHN0cnVjdCBwY21jaWFfc29ja2V0IG11c3QKK2JlIGNhbGxlZCB3aXRoICJvcHNfbXV0ZXgiIGhlbGQ6CisKKwlzb2NrZXRfcmVzZXQoKQorCXNvY2tldF9zZXR1cCgpCisKKwlzdHJ1Y3QgcGNjYXJkX29wZXJhdGlvbnMJKm9wcworCXN0cnVjdCBwY2NhcmRfcmVzb3VyY2Vfb3BzCSpyZXNvdXJjZV9vcHM7CisKK05vdGUgdGhhdCBzZW5kX2V2ZW50KCkgYW5kIHN0cnVjdCBwY21jaWFfY2FsbGJhY2sgKmNhbGxiYWNrIG11c3Qgbm90IGJlCitjYWxsZWQgd2l0aCAib3BzX211dGV4IiBoZWxkLgorCisKK0MpIFByb3RlY3Rpb24KKz09PT09PT09PT09PT0KKworMS4gR2xvYmFsIERhdGE6CistLS0tLS0tLS0tLS0tLS0KK3N0cnVjdCBsaXN0X2hlYWQJcGNtY2lhX3NvY2tldF9saXN0OworCitwcm90ZWN0ZWQgYnkgcGNtY2lhX3NvY2tldF9saXN0X3J3c2VtOworCisKKzIuIFBlci1Tb2NrZXQgRGF0YToKKy0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSByZXNvdXJjZV9vcHMgYW5kIHRoZWlyIGRhdGEgYXJlIHByb3RlY3RlZCBieSBvcHNfbXV0ZXguCisKK1RoZSAibWFpbiIgc3RydWN0IHBjbWNpYV9zb2NrZXQgaXMgcHJvdGVjdGVkIGFzIGZvbGxvd3MgKHJlYWQtb25seSBmaWVsZHMKK29yIHNpbmdsZS11c2UgZmllbGRzIG5vdCBtZW50aW9uZWQpOgorCistIGJ5IHBjbWNpYV9zb2NrZXRfbGlzdF9yd3NlbToKKwlzdHJ1Y3QgbGlzdF9oZWFkCXNvY2tldF9saXN0OworCistIGJ5IHRocmVhZF9sb2NrOgorCXVuc2lnbmVkIGludAkJdGhyZWFkX2V2ZW50czsKKworLSBieSBza3RfbXV0ZXg6CisJdV9pbnQJCQlzdXNwZW5kZWRfc3RhdGU7CisJdm9pZAkJCSgqdHVuZV9icmlkZ2UpOworCXN0cnVjdCBwY21jaWFfY2FsbGJhY2sJKmNhbGxiYWNrOworCWludAkJCXJlc3VtZV9zdGF0dXM7CisKKy0gYnkgb3BzX211dGV4OgorCXNvY2tldF9zdGF0ZV90CQlzb2NrZXQ7CisJdV9pbnQJCQlzdGF0ZTsKKwl1X3Nob3J0CQkJbG9ja19jb3VudDsKKwlwY2NhcmRfbWVtX21hcAkJY2lzX21lbTsKKwl2b2lkIF9faW9tZW0gCQkqY2lzX3ZpcnQ7CisJc3RydWN0IHsgfQkJaXJxOworCWlvX3dpbmRvd190CQlpb1tdOworCXBjY2FyZF9tZW1fbWFwCQl3aW5bXTsKKwlzdHJ1Y3QgbGlzdF9oZWFkCWNpc19jYWNoZTsKKwlzaXplX3QJCQlmYWtlX2Npc19sZW47CisJdTgJCQkqZmFrZV9jaXM7CisJdV9pbnQJCQlpcnFfbWFzazsKKwl2b2lkIAkJCSgqem9vbV92aWRlbyk7CisJaW50IAkJCSgqcG93ZXJfaG9vayk7CisJdTgJCQlyZXNvdXJjZS4uLjsKKwlzdHJ1Y3QgbGlzdF9oZWFkCWRldmljZXNfbGlzdDsKKwl1OAkJCWRldmljZV9jb3VudDsKKwlzdHJ1Y3QgCQkJcGNtY2lhX3N0YXRlOworCisKKzMuIFBlciBQQ01DSUEtZGV2aWNlIERhdGE6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgIm1haW4iIHN0cnVjdCBwY21jaWFfZGV2aWNlIGlzIHByb3RlY3RlZCBhcyBmb2xsb3dzIChyZWFkLW9ubHkgZmllbGRzCitvciBzaW5nbGUtdXNlIGZpZWxkcyBub3QgbWVudGlvbmVkKToKKworCistIGJ5IHBjbWNpYV9zb2NrZXQtPm9wc19tdXRleDoKKwlzdHJ1Y3QgbGlzdF9oZWFkCXNvY2tldF9kZXZpY2VfbGlzdDsKKwlzdHJ1Y3QgY29uZmlnX3QJCSpmdW5jdGlvbl9jb25maWc7CisJdTE2CQkJX2lycToxOworCXUxNgkJCV9pbzoxOworCXUxNgkJCV93aW46NDsKKwl1MTYJCQlfbG9ja2VkOjE7CisJdTE2CQkJYWxsb3dfZnVuY19pZF9tYXRjaDoxOworCXUxNgkJCXN1c3BlbmRlZDoxOworCXUxNgkJCV9yZW1vdmVkOjE7CisKKy0gYnkgdGhlIFBDTUNJQSBkcml2ZXI6CisJaW9fcmVxX3QJCWlvOworCWlycV9yZXFfdAkJaXJxOworCWNvbmZpZ19yZXFfdAkJY29uZjsKKwl3aW5kb3dfaGFuZGxlX3QJCXdpbjsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcGVyY3B1LXJ3LXNlbWFwaG9yZS50eHQgYi9Eb2N1bWVudGF0aW9uL3BlcmNwdS1ydy1zZW1hcGhvcmUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkM2M4MjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3BlcmNwdS1ydy1zZW1hcGhvcmUudHh0CkBAIC0wLDAgKzEsMjcgQEAKK1BlcmNwdSBydyBzZW1hcGhvcmVzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQZXJjcHUgcncgc2VtYXBob3JlcyBpcyBhIG5ldyByZWFkLXdyaXRlIHNlbWFwaG9yZSBkZXNpZ24gdGhhdCBpcworb3B0aW1pemVkIGZvciBsb2NraW5nIGZvciByZWFkaW5nLgorCitUaGUgcHJvYmxlbSB3aXRoIHRyYWRpdGlvbmFsIHJlYWQtd3JpdGUgc2VtYXBob3JlcyBpcyB0aGF0IHdoZW4gbXVsdGlwbGUKK2NvcmVzIHRha2UgdGhlIGxvY2sgZm9yIHJlYWRpbmcsIHRoZSBjYWNoZSBsaW5lIGNvbnRhaW5pbmcgdGhlIHNlbWFwaG9yZQoraXMgYm91bmNpbmcgYmV0d2VlbiBMMSBjYWNoZXMgb2YgdGhlIGNvcmVzLCBjYXVzaW5nIHBlcmZvcm1hbmNlCitkZWdyYWRhdGlvbi4KKworTG9ja2luZyBmb3IgcmVhZGluZyBpcyB2ZXJ5IGZhc3QsIGl0IHVzZXMgUkNVIGFuZCBpdCBhdm9pZHMgYW55IGF0b21pYworaW5zdHJ1Y3Rpb24gaW4gdGhlIGxvY2sgYW5kIHVubG9jayBwYXRoLiBPbiB0aGUgb3RoZXIgaGFuZCwgbG9ja2luZyBmb3IKK3dyaXRpbmcgaXMgdmVyeSBleHBlbnNpdmUsIGl0IGNhbGxzIHN5bmNocm9uaXplX3JjdSgpIHRoYXQgY2FuIHRha2UKK2h1bmRyZWRzIG9mIG1pbGxpc2Vjb25kcy4KKworVGhlIGxvY2sgaXMgZGVjbGFyZWQgd2l0aCAic3RydWN0IHBlcmNwdV9yd19zZW1hcGhvcmUiIHR5cGUuCitUaGUgbG9jayBpcyBpbml0aWFsaXplZCBwZXJjcHVfaW5pdF9yd3NlbSwgaXQgcmV0dXJucyAwIG9uIHN1Y2Nlc3MgYW5kCistRU5PTUVNIG9uIGFsbG9jYXRpb24gZmFpbHVyZS4KK1RoZSBsb2NrIG11c3QgYmUgZnJlZWQgd2l0aCBwZXJjcHVfZnJlZV9yd3NlbSB0byBhdm9pZCBtZW1vcnkgbGVhay4KKworVGhlIGxvY2sgaXMgbG9ja2VkIGZvciByZWFkIHdpdGggcGVyY3B1X2Rvd25fcmVhZCwgcGVyY3B1X3VwX3JlYWQgYW5kCitmb3Igd3JpdGUgd2l0aCBwZXJjcHVfZG93bl93cml0ZSwgcGVyY3B1X3VwX3dyaXRlLgorCitUaGUgaWRlYSBvZiB1c2luZyBSQ1UgZm9yIG9wdGltaXplZCBydy1sb2NrIHdhcyBpbnRyb2R1Y2VkIGJ5CitFcmljIER1bWF6ZXQgPGVyaWMuZHVtYXpldEBnbWFpbC5jb20+LgorVGhlIGNvZGUgd2FzIHdyaXR0ZW4gYnkgTWlrdWxhcyBQYXRvY2thIDxtcGF0b2NrYUByZWRoYXQuY29tPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9waHkudHh0IGIvRG9jdW1lbnRhdGlvbi9waHkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzODhjNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3BoeS50eHQKQEAgLTAsMCArMSwxNTcgQEAKKwkJCSAgICBQSFkgU1VCU1lTVEVNCisJCSAgS2lzaG9uIFZpamF5IEFicmFoYW0gSSA8a2lzaG9uQHRpLmNvbT4KKworVGhpcyBkb2N1bWVudCBleHBsYWlucyB0aGUgR2VuZXJpYyBQSFkgRnJhbWV3b3JrIGFsb25nIHdpdGggdGhlIEFQSXMgcHJvdmlkZWQsCithbmQgaG93LXRvLXVzZS4KKworMS4gSW50cm9kdWN0aW9uCisKKypQSFkqIGlzIHRoZSBhYmJyZXZpYXRpb24gZm9yIHBoeXNpY2FsIGxheWVyLiBJdCBpcyB1c2VkIHRvIGNvbm5lY3QgYSBkZXZpY2UKK3RvIHRoZSBwaHlzaWNhbCBtZWRpdW0gZS5nLiwgdGhlIFVTQiBjb250cm9sbGVyIGhhcyBhIFBIWSB0byBwcm92aWRlIGZ1bmN0aW9ucworc3VjaCBhcyBzZXJpYWxpemF0aW9uLCBkZS1zZXJpYWxpemF0aW9uLCBlbmNvZGluZywgZGVjb2RpbmcgYW5kIGlzIHJlc3BvbnNpYmxlCitmb3Igb2J0YWluaW5nIHRoZSByZXF1aXJlZCBkYXRhIHRyYW5zbWlzc2lvbiByYXRlLiBOb3RlIHRoYXQgc29tZSBVU0IKK2NvbnRyb2xsZXJzIGhhdmUgUEhZIGZ1bmN0aW9uYWxpdHkgZW1iZWRkZWQgaW50byBpdCBhbmQgb3RoZXJzIHVzZSBhbiBleHRlcm5hbAorUEhZLiBPdGhlciBwZXJpcGhlcmFscyB0aGF0IHVzZSBQSFkgaW5jbHVkZSBXaXJlbGVzcyBMQU4sIEV0aGVybmV0LAorU0FUQSBldGMuCisKK1RoZSBpbnRlbnRpb24gb2YgY3JlYXRpbmcgdGhpcyBmcmFtZXdvcmsgaXMgdG8gYnJpbmcgdGhlIFBIWSBkcml2ZXJzIHNwcmVhZAorYWxsIG92ZXIgdGhlIExpbnV4IGtlcm5lbCB0byBkcml2ZXJzL3BoeSB0byBpbmNyZWFzZSBjb2RlIHJlLXVzZSBhbmQgZm9yCitiZXR0ZXIgY29kZSBtYWludGFpbmFiaWxpdHkuCisKK1RoaXMgZnJhbWV3b3JrIHdpbGwgYmUgb2YgdXNlIG9ubHkgdG8gZGV2aWNlcyB0aGF0IHVzZSBleHRlcm5hbCBQSFkgKFBIWQorZnVuY3Rpb25hbGl0eSBpcyBub3QgZW1iZWRkZWQgd2l0aGluIHRoZSBjb250cm9sbGVyKS4KKworMi4gUmVnaXN0ZXJpbmcvVW5yZWdpc3RlcmluZyB0aGUgUEhZIHByb3ZpZGVyCisKK1BIWSBwcm92aWRlciByZWZlcnMgdG8gYW4gZW50aXR5IHRoYXQgaW1wbGVtZW50cyBvbmUgb3IgbW9yZSBQSFkgaW5zdGFuY2VzLgorRm9yIHRoZSBzaW1wbGUgY2FzZSB3aGVyZSB0aGUgUEhZIHByb3ZpZGVyIGltcGxlbWVudHMgb25seSBhIHNpbmdsZSBpbnN0YW5jZSBvZgordGhlIFBIWSwgdGhlIGZyYW1ld29yayBwcm92aWRlcyBpdHMgb3duIGltcGxlbWVudGF0aW9uIG9mIG9mX3hsYXRlIGluCitvZl9waHlfc2ltcGxlX3hsYXRlLiBJZiB0aGUgUEhZIHByb3ZpZGVyIGltcGxlbWVudHMgbXVsdGlwbGUgaW5zdGFuY2VzLCBpdAorc2hvdWxkIHByb3ZpZGUgaXRzIG93biBpbXBsZW1lbnRhdGlvbiBvZiBvZl94bGF0ZS4gb2ZfeGxhdGUgaXMgdXNlZCBvbmx5IGZvcgorZHQgYm9vdCBjYXNlLgorCisjZGVmaW5lIG9mX3BoeV9wcm92aWRlcl9yZWdpc3RlcihkZXYsIHhsYXRlKSAgICBcCisgICAgICAgIF9fb2ZfcGh5X3Byb3ZpZGVyX3JlZ2lzdGVyKChkZXYpLCBUSElTX01PRFVMRSwgKHhsYXRlKSkKKworI2RlZmluZSBkZXZtX29mX3BoeV9wcm92aWRlcl9yZWdpc3RlcihkZXYsIHhsYXRlKSAgICAgICBcCisgICAgICAgIF9fZGV2bV9vZl9waHlfcHJvdmlkZXJfcmVnaXN0ZXIoKGRldiksIFRISVNfTU9EVUxFLCAoeGxhdGUpKQorCitvZl9waHlfcHJvdmlkZXJfcmVnaXN0ZXIgYW5kIGRldm1fb2ZfcGh5X3Byb3ZpZGVyX3JlZ2lzdGVyIG1hY3JvcyBjYW4gYmUgdXNlZCB0bworcmVnaXN0ZXIgdGhlIHBoeV9wcm92aWRlciBhbmQgaXQgdGFrZXMgZGV2aWNlIGFuZCBvZl94bGF0ZSBhcworYXJndW1lbnRzLiBGb3IgdGhlIGR0IGJvb3QgY2FzZSwgYWxsIFBIWSBwcm92aWRlcnMgc2hvdWxkIHVzZSBvbmUgb2YgdGhlIGFib3ZlCisyIG1hY3JvcyB0byByZWdpc3RlciB0aGUgUEhZIHByb3ZpZGVyLgorCit2b2lkIGRldm1fb2ZfcGh5X3Byb3ZpZGVyX3VucmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2LAorCXN0cnVjdCBwaHlfcHJvdmlkZXIgKnBoeV9wcm92aWRlcik7Cit2b2lkIG9mX3BoeV9wcm92aWRlcl91bnJlZ2lzdGVyKHN0cnVjdCBwaHlfcHJvdmlkZXIgKnBoeV9wcm92aWRlcik7CisKK2Rldm1fb2ZfcGh5X3Byb3ZpZGVyX3VucmVnaXN0ZXIgYW5kIG9mX3BoeV9wcm92aWRlcl91bnJlZ2lzdGVyIGNhbiBiZSB1c2VkIHRvCit1bnJlZ2lzdGVyIHRoZSBQSFkuCisKKzMuIENyZWF0aW5nIHRoZSBQSFkKKworVGhlIFBIWSBkcml2ZXIgc2hvdWxkIGNyZWF0ZSB0aGUgUEhZIGluIG9yZGVyIGZvciBvdGhlciBwZXJpcGhlcmFsIGNvbnRyb2xsZXJzCit0byBtYWtlIHVzZSBvZiBpdC4gVGhlIFBIWSBmcmFtZXdvcmsgcHJvdmlkZXMgMiBBUElzIHRvIGNyZWF0ZSB0aGUgUEhZLgorCitzdHJ1Y3QgcGh5ICpwaHlfY3JlYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlLAorCQkgICAgICAgY29uc3Qgc3RydWN0IHBoeV9vcHMgKm9wcyk7CitzdHJ1Y3QgcGh5ICpkZXZtX3BoeV9jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsCisJCQkgICAgY29uc3Qgc3RydWN0IHBoeV9vcHMgKm9wcyk7CisKK1RoZSBQSFkgZHJpdmVycyBjYW4gdXNlIG9uZSBvZiB0aGUgYWJvdmUgMiBBUElzIHRvIGNyZWF0ZSB0aGUgUEhZIGJ5IHBhc3NpbmcKK3RoZSBkZXZpY2UgcG9pbnRlciBhbmQgcGh5IG9wcy4KK3BoeV9vcHMgaXMgYSBzZXQgb2YgZnVuY3Rpb24gcG9pbnRlcnMgZm9yIHBlcmZvcm1pbmcgUEhZIG9wZXJhdGlvbnMgc3VjaCBhcworaW5pdCwgZXhpdCwgcG93ZXJfb24gYW5kIHBvd2VyX29mZi4KKworSW5vcmRlciB0byBkZXJlZmVyZW5jZSB0aGUgcHJpdmF0ZSBkYXRhIChpbiBwaHlfb3BzKSwgdGhlIHBoeSBwcm92aWRlciBkcml2ZXIKK2NhbiB1c2UgcGh5X3NldF9kcnZkYXRhKCkgYWZ0ZXIgY3JlYXRpbmcgdGhlIFBIWSBhbmQgdXNlIHBoeV9nZXRfZHJ2ZGF0YSgpIGluCitwaHlfb3BzIHRvIGdldCBiYWNrIHRoZSBwcml2YXRlIGRhdGEuCisKKzQuIEdldHRpbmcgYSByZWZlcmVuY2UgdG8gdGhlIFBIWQorCitCZWZvcmUgdGhlIGNvbnRyb2xsZXIgY2FuIG1ha2UgdXNlIG9mIHRoZSBQSFksIGl0IGhhcyB0byBnZXQgYSByZWZlcmVuY2UgdG8KK2l0LiBUaGlzIGZyYW1ld29yayBwcm92aWRlcyB0aGUgZm9sbG93aW5nIEFQSXMgdG8gZ2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBQSFkuCisKK3N0cnVjdCBwaHkgKnBoeV9nZXQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpzdHJpbmcpOworc3RydWN0IHBoeSAqcGh5X29wdGlvbmFsX2dldChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKnN0cmluZyk7CitzdHJ1Y3QgcGh5ICpkZXZtX3BoeV9nZXQoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBjaGFyICpzdHJpbmcpOworc3RydWN0IHBoeSAqZGV2bV9waHlfb3B0aW9uYWxfZ2V0KHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqc3RyaW5nKTsKK3N0cnVjdCBwaHkgKmRldm1fb2ZfcGh5X2dldF9ieV9pbmRleChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsCisJCQkJICAgICBpbnQgaW5kZXgpOworCitwaHlfZ2V0LCBwaHlfb3B0aW9uYWxfZ2V0LCBkZXZtX3BoeV9nZXQgYW5kIGRldm1fcGh5X29wdGlvbmFsX2dldCBjYW4KK2JlIHVzZWQgdG8gZ2V0IHRoZSBQSFkuIEluIHRoZSBjYXNlIG9mIGR0IGJvb3QsIHRoZSBzdHJpbmcgYXJndW1lbnRzCitzaG91bGQgY29udGFpbiB0aGUgcGh5IG5hbWUgYXMgZ2l2ZW4gaW4gdGhlIGR0IGRhdGEgYW5kIGluIHRoZSBjYXNlIG9mCitub24tZHQgYm9vdCwgaXQgc2hvdWxkIGNvbnRhaW4gdGhlIGxhYmVsIG9mIHRoZSBQSFkuICBUaGUgdHdvCitkZXZtX3BoeV9nZXQgYXNzb2NpYXRlcyB0aGUgZGV2aWNlIHdpdGggdGhlIFBIWSB1c2luZyBkZXZyZXMgb24KK3N1Y2Nlc3NmdWwgUEhZIGdldC4gT24gZHJpdmVyIGRldGFjaCwgcmVsZWFzZSBmdW5jdGlvbiBpcyBpbnZva2VkIG9uCit0aGUgdGhlIGRldnJlcyBkYXRhIGFuZCBkZXZyZXMgZGF0YSBpcyBmcmVlZC4gcGh5X29wdGlvbmFsX2dldCBhbmQKK2Rldm1fcGh5X29wdGlvbmFsX2dldCBzaG91bGQgYmUgdXNlZCB3aGVuIHRoZSBwaHkgaXMgb3B0aW9uYWwuIFRoZXNlCit0d28gZnVuY3Rpb25zIHdpbGwgbmV2ZXIgcmV0dXJuIC1FTk9ERVYsIGJ1dCBpbnN0ZWFkIHJldHVybnMgTlVMTCB3aGVuCit0aGUgcGh5IGNhbm5vdCBiZSBmb3VuZC5Tb21lIGdlbmVyaWMgZHJpdmVycywgc3VjaCBhcyBlaGNpLCBtYXkgdXNlIG11bHRpcGxlCitwaHlzIGFuZCBmb3Igc3VjaCBkcml2ZXJzIHJlZmVyZW5jaW5nIHBoeShzKSBieSBuYW1lKHMpIGRvZXMgbm90IG1ha2Ugc2Vuc2UuIEluCit0aGlzIGNhc2UsIGRldm1fb2ZfcGh5X2dldF9ieV9pbmRleCBjYW4gYmUgdXNlZCB0byBnZXQgYSBwaHkgcmVmZXJlbmNlIGJhc2VkIG9uCit0aGUgaW5kZXguCisKK0l0IHNob3VsZCBiZSBub3RlZCB0aGF0IE5VTEwgaXMgYSB2YWxpZCBwaHkgcmVmZXJlbmNlLiBBbGwgcGh5Citjb25zdW1lciBjYWxscyBvbiB0aGUgTlVMTCBwaHkgYmVjb21lIE5PUHMuIFRoYXQgaXMgdGhlIHJlbGVhc2UgY2FsbHMsCit0aGUgcGh5X2luaXQoKSBhbmQgcGh5X2V4aXQoKSBjYWxscywgYW5kIHBoeV9wb3dlcl9vbigpIGFuZAorcGh5X3Bvd2VyX29mZigpIGNhbGxzIGFyZSBhbGwgTk9QIHdoZW4gYXBwbGllZCB0byBhIE5VTEwgcGh5LiBUaGUgTlVMTAorcGh5IGlzIHVzZWZ1bCBpbiBkZXZpY2VzIGZvciBoYW5kbGluZyBvcHRpb25hbCBwaHkgZGV2aWNlcy4KKworNS4gUmVsZWFzaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBQSFkKKworV2hlbiB0aGUgY29udHJvbGxlciBubyBsb25nZXIgbmVlZHMgdGhlIFBIWSwgaXQgaGFzIHRvIHJlbGVhc2UgdGhlIHJlZmVyZW5jZQordG8gdGhlIFBIWSBpdCBoYXMgb2J0YWluZWQgdXNpbmcgdGhlIEFQSXMgbWVudGlvbmVkIGluIHRoZSBhYm92ZSBzZWN0aW9uLiBUaGUKK1BIWSBmcmFtZXdvcmsgcHJvdmlkZXMgMiBBUElzIHRvIHJlbGVhc2UgYSByZWZlcmVuY2UgdG8gdGhlIFBIWS4KKwordm9pZCBwaHlfcHV0KHN0cnVjdCBwaHkgKnBoeSk7Cit2b2lkIGRldm1fcGh5X3B1dChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwaHkgKnBoeSk7CisKK0JvdGggdGhlc2UgQVBJcyBhcmUgdXNlZCB0byByZWxlYXNlIGEgcmVmZXJlbmNlIHRvIHRoZSBQSFkgYW5kIGRldm1fcGh5X3B1dAorZGVzdHJveXMgdGhlIGRldnJlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBQSFkuCisKKzYuIERlc3Ryb3lpbmcgdGhlIFBIWQorCitXaGVuIHRoZSBkcml2ZXIgdGhhdCBjcmVhdGVkIHRoZSBQSFkgaXMgdW5sb2FkZWQsIGl0IHNob3VsZCBkZXN0cm95IHRoZSBQSFkgaXQKK2NyZWF0ZWQgdXNpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmcgMiBBUElzLgorCit2b2lkIHBoeV9kZXN0cm95KHN0cnVjdCBwaHkgKnBoeSk7Cit2b2lkIGRldm1fcGh5X2Rlc3Ryb3koc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGh5ICpwaHkpOworCitCb3RoIHRoZXNlIEFQSXMgZGVzdHJveSB0aGUgUEhZIGFuZCBkZXZtX3BoeV9kZXN0cm95IGRlc3Ryb3lzIHRoZSBkZXZyZXMKK2Fzc29jaWF0ZWQgd2l0aCB0aGlzIFBIWS4KKworNy4gUE0gUnVudGltZQorCitUaGlzIHN1YnN5c3RlbSBpcyBwbSBydW50aW1lIGVuYWJsZWQuIFNvIHdoaWxlIGNyZWF0aW5nIHRoZSBQSFksCitwbV9ydW50aW1lX2VuYWJsZSBvZiB0aGUgcGh5IGRldmljZSBjcmVhdGVkIGJ5IHRoaXMgc3Vic3lzdGVtIGlzIGNhbGxlZCBhbmQKK3doaWxlIGRlc3Ryb3lpbmcgdGhlIFBIWSwgcG1fcnVudGltZV9kaXNhYmxlIGlzIGNhbGxlZC4gTm90ZSB0aGF0IHRoZSBwaHkKK2RldmljZSBjcmVhdGVkIGJ5IHRoaXMgc3Vic3lzdGVtIHdpbGwgYmUgYSBjaGlsZCBvZiB0aGUgZGV2aWNlIHRoYXQgY2FsbHMKK3BoeV9jcmVhdGUgKFBIWSBwcm92aWRlciBkZXZpY2UpLgorCitTbyBwbV9ydW50aW1lX2dldF9zeW5jIG9mIHRoZSBwaHlfZGV2aWNlIGNyZWF0ZWQgYnkgdGhpcyBzdWJzeXN0ZW0gd2lsbCBpbnZva2UKK3BtX3J1bnRpbWVfZ2V0X3N5bmMgb2YgUEhZIHByb3ZpZGVyIGRldmljZSBiZWNhdXNlIG9mIHBhcmVudC1jaGlsZCByZWxhdGlvbnNoaXAuCitJdCBzaG91bGQgYWxzbyBiZSBub3RlZCB0aGF0IHBoeV9wb3dlcl9vbiBhbmQgcGh5X3Bvd2VyX29mZiBwZXJmb3JtcworcGh5X3BtX3J1bnRpbWVfZ2V0X3N5bmMgYW5kIHBoeV9wbV9ydW50aW1lX3B1dCByZXNwZWN0aXZlbHkuCitUaGVyZSBhcmUgZXhwb3J0ZWQgQVBJcyBsaWtlIHBoeV9wbV9ydW50aW1lX2dldCwgcGh5X3BtX3J1bnRpbWVfZ2V0X3N5bmMsCitwaHlfcG1fcnVudGltZV9wdXQsIHBoeV9wbV9ydW50aW1lX3B1dF9zeW5jLCBwaHlfcG1fcnVudGltZV9hbGxvdyBhbmQKK3BoeV9wbV9ydW50aW1lX2ZvcmJpZCBmb3IgcGVyZm9ybWluZyBQTSBvcGVyYXRpb25zLgorCis4LiBQSFkgTWFwcGluZ3MKKworSW4gb3JkZXIgdG8gZ2V0IHJlZmVyZW5jZSB0byBhIFBIWSB3aXRob3V0IGhlbHAgZnJvbSBEZXZpY2VUcmVlLCB0aGUgZnJhbWV3b3JrCitvZmZlcnMgbG9va3VwcyB3aGljaCBjYW4gYmUgY29tcGFyZWQgdG8gY2xrZGV2IHRoYXQgYWxsb3cgY2xrIHN0cnVjdHVyZXMgdG8gYmUKK2JvdW5kIHRvIGRldmljZXMuIEEgbG9va3VwIGNhbiBiZSBtYWRlIGJlIG1hZGUgZHVyaW5nIHJ1bnRpbWUgd2hlbiBhIGhhbmRsZSB0bwordGhlIHN0cnVjdCBwaHkgYWxyZWFkeSBleGlzdHMuCisKK1RoZSBmcmFtZXdvcmsgb2ZmZXJzIHRoZSBmb2xsb3dpbmcgQVBJIGZvciByZWdpc3RlcmluZyBhbmQgdW5yZWdpc3RlcmluZyB0aGUKK2xvb2t1cHMuCisKK2ludCBwaHlfY3JlYXRlX2xvb2t1cChzdHJ1Y3QgcGh5ICpwaHksIGNvbnN0IGNoYXIgKmNvbl9pZCwgY29uc3QgY2hhciAqZGV2X2lkKTsKK3ZvaWQgcGh5X3JlbW92ZV9sb29rdXAoc3RydWN0IHBoeSAqcGh5LCBjb25zdCBjaGFyICpjb25faWQsIGNvbnN0IGNoYXIgKmRldl9pZCk7CisKKzkuIERldmljZVRyZWUgQmluZGluZworCitUaGUgZG9jdW1lbnRhdGlvbiBmb3IgUEhZIGR0IGJpbmRpbmcgY2FuIGJlIGZvdW5kIEAKK0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvcGh5LWJpbmRpbmdzLnR4dApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9waHkvc2Ftc3VuZy11c2IyLnR4dCBiL0RvY3VtZW50YXRpb24vcGh5L3NhbXN1bmctdXNiMi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQxMmQ0MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcGh5L3NhbXN1bmctdXNiMi50eHQKQEAgLTAsMCArMSwxMzUgQEAKKy4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8CQkJU2Ftc3VuZyBVU0IgMi4wIFBIWSBhZGFwdGF0aW9uIGxheWVyCQkgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKycKKworfCAxLiBEZXNjcmlwdGlvbgorKy0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGFyY2hpdGVjdHVyZSBvZiB0aGUgVVNCIDIuMCBQSFkgbW9kdWxlIGluIFNhbXN1bmcgU29DcyBpcyBzaW1pbGFyCithbW9uZyBtYW55IFNvQ3MuIEluIHNwaXRlIG9mIHRoZSBzaW1pbGFyaXRpZXMgaXQgcHJvdmVkIGRpZmZpY3VsdCB0bworY3JlYXRlIGEgb25lIGRyaXZlciB0aGF0IHdvdWxkIGZpdCBhbGwgdGhlc2UgUEhZIGNvbnRyb2xsZXJzLiBPZnRlbgordGhlIGRpZmZlcmVuY2VzIHdlcmUgbWlub3IgYW5kIHdlcmUgZm91bmQgaW4gcGFydGljdWxhciBiaXRzIG9mIHRoZQorcmVnaXN0ZXJzIG9mIHRoZSBQSFkuIEluIHNvbWUgcmFyZSBjYXNlcyB0aGUgb3JkZXIgb2YgcmVnaXN0ZXIgd3JpdGVzIG9yCit0aGUgUEhZIHBvd2VyaW5nIHVwIHByb2Nlc3MgaGFkIHRvIGJlIGFsdGVyZWQuIFRoaXMgYWRhcHRhdGlvbiBsYXllciBpcworYSBjb21wcm9taXNlIGJldHdlZW4gaGF2aW5nIHNlcGFyYXRlIGRyaXZlcnMgYW5kIGhhdmluZyBhIHNpbmdsZSBkcml2ZXIKK3dpdGggYWRkZWQgc3VwcG9ydCBmb3IgbWFueSBzcGVjaWFsIGNhc2VzLgorCit8IDIuIEZpbGVzIGRlc2NyaXB0aW9uCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistIHBoeS1zYW1zdW5nLXVzYjIuYworICAgVGhpcyBpcyB0aGUgbWFpbiBmaWxlIG9mIHRoZSBhZGFwdGF0aW9uIGxheWVyLiBUaGlzIGZpbGUgY29udGFpbnMKKyAgIHRoZSBwcm9iZSBmdW5jdGlvbiBhbmQgcHJvdmlkZXMgdHdvIGNhbGxiYWNrcyB0byB0aGUgR2VuZXJpYyBQSFkKKyAgIEZyYW1ld29yay4gVGhpcyB0d28gY2FsbGJhY2tzIGFyZSB1c2VkIHRvIHBvd2VyIG9uIGFuZCBwb3dlciBvZmYgdGhlCisgICBwaHkuIFRoZXkgY2Fycnkgb3V0IHRoZSBjb21tb24gd29yayB0aGF0IGhhcyB0byBiZSBkb25lIG9uIGFsbCB2ZXJzaW9uCisgICBvZiB0aGUgUEhZIG1vZHVsZS4gRGVwZW5kaW5nIG9uIHdoaWNoIFNvQyB3YXMgY2hvc2VuIHRoZXkgZXhlY3V0ZSBTb0MKKyAgIHNwZWNpZmljIGNhbGxiYWNrcy4gVGhlIHNwZWNpZmljIFNvQyB2ZXJzaW9uIGlzIHNlbGVjdGVkIGJ5IGNob29zaW5nCisgICB0aGUgYXBwcm9wcmlhdGUgY29tcGF0aWJsZSBzdHJpbmcuIEluIGFkZGl0aW9uLCB0aGlzIGZpbGUgY29udGFpbnMKKyAgIHN0cnVjdCBvZl9kZXZpY2VfaWQgZGVmaW5pdGlvbnMgZm9yIHBhcnRpY3VsYXIgU29Dcy4KKworLSBwaHktc2Ftc3VuZy11c2IyLmgKKyAgIFRoaXMgaXMgdGhlIGluY2x1ZGUgZmlsZS4gSXQgZGVjbGFyZXMgdGhlIHN0cnVjdHVyZXMgdXNlZCBieSB0aGlzCisgICBkcml2ZXIuIEluIGFkZGl0aW9uIGl0IHNob3VsZCBjb250YWluIGV4dGVybiBkZWNsYXJhdGlvbnMgZm9yCisgICBzdHJ1Y3R1cmVzIHRoYXQgZGVzY3JpYmUgcGFydGljdWxhciBTb0NzLgorCit8IDMuIFN1cHBvcnRpbmcgU29DcworKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RvIHN1cHBvcnQgYSBuZXcgU29DIGEgbmV3IGZpbGUgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBkcml2ZXJzL3BoeQorZGlyZWN0b3J5LiBFYWNoIFNvQydzIGNvbmZpZ3VyYXRpb24gaXMgc3RvcmVkIGluIGFuIGluc3RhbmNlIG9mIHRoZQorc3RydWN0IHNhbXN1bmdfdXNiMl9waHlfY29uZmlnLgorCitzdHJ1Y3Qgc2Ftc3VuZ191c2IyX3BoeV9jb25maWcgeworCWNvbnN0IHN0cnVjdCBzYW1zdW5nX3VzYjJfY29tbW9uX3BoeSAqcGh5czsKKwlpbnQgKCpyYXRlX3RvX2NsaykodW5zaWduZWQgbG9uZywgdTMyICopOworCXVuc2lnbmVkIGludCBudW1fcGh5czsKKwlib29sIGhhc19tb2RlX3N3aXRjaDsKK307CisKK1RoZSBudW1fcGh5cyBpcyB0aGUgbnVtYmVyIG9mIHBoeXMgaGFuZGxlZCBieSB0aGUgZHJpdmVyLiAqcGh5cyBpcyBhbgorYXJyYXkgdGhhdCBjb250YWlucyB0aGUgY29uZmlndXJhdGlvbiBmb3IgZWFjaCBwaHkuIFRoZSBoYXNfbW9kZV9zd2l0Y2gKK3Byb3BlcnR5IGlzIGEgYm9vbGVhbiBmbGFnIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBTb0MgaGFzIFVTQiBob3N0CithbmQgZGV2aWNlIG9uIGEgc2luZ2xlIHBhaXIgb2YgcGlucy4gSWYgc28sIGEgc3BlY2lhbCByZWdpc3RlciBoYXMgdG8KK2JlIG1vZGlmaWVkIHRvIGNoYW5nZSB0aGUgaW50ZXJuYWwgcm91dGluZyBvZiB0aGVzZSBwaW5zIGJldHdlZW4gYSBVU0IKK2RldmljZSBvciBob3N0IG1vZHVsZS4KKworRm9yIGV4YW1wbGUgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIEV4eW5vcyA0MjEwIGlzIGZvbGxvd2luZzoKKworY29uc3Qgc3RydWN0IHNhbXN1bmdfdXNiMl9waHlfY29uZmlnIGV4eW5vczQyMTBfdXNiMl9waHlfY29uZmlnID0geworCS5oYXNfbW9kZV9zd2l0Y2ggICAgICAgID0gMCwKKwkubnVtX3BoeXMJCT0gRVhZTk9TNDIxMF9OVU1fUEhZUywKKwkucGh5cwkJCT0gZXh5bm9zNDIxMF9waHlzLAorCS5yYXRlX3RvX2NsawkJPSBleHlub3M0MjEwX3JhdGVfdG9fY2xrLAorfQorCistIGludCAoKnJhdGVfdG9fY2xrKSh1bnNpZ25lZCBsb25nLCB1MzIgKikKKwlUaGUgcmF0ZV90b19jbGsgY2FsbGJhY2sgaXMgdG8gY29udmVydCB0aGUgcmF0ZSBvZiB0aGUgY2xvY2sKKwl1c2VkIGFzIHRoZSByZWZlcmVuY2UgY2xvY2sgZm9yIHRoZSBQSFkgbW9kdWxlIHRvIHRoZSB2YWx1ZQorCXRoYXQgc2hvdWxkIGJlIHdyaXR0ZW4gaW4gdGhlIGhhcmR3YXJlIHJlZ2lzdGVyLgorCitUaGUgZXh5bm9zNDIxMF9waHlzIGNvbmZpZ3VyYXRpb24gYXJyYXkgaXMgYXMgZm9sbG93czoKKworc3RhdGljIGNvbnN0IHN0cnVjdCBzYW1zdW5nX3VzYjJfY29tbW9uX3BoeSBleHlub3M0MjEwX3BoeXNbXSA9IHsKKwl7CisJCS5sYWJlbAkJPSAiZGV2aWNlIiwKKwkJLmlkCQk9IEVYWU5PUzQyMTBfREVWSUNFLAorCQkucG93ZXJfb24JPSBleHlub3M0MjEwX3Bvd2VyX29uLAorCQkucG93ZXJfb2ZmCT0gZXh5bm9zNDIxMF9wb3dlcl9vZmYsCisJfSwKKwl7CisJCS5sYWJlbAkJPSAiaG9zdCIsCisJCS5pZAkJPSBFWFlOT1M0MjEwX0hPU1QsCisJCS5wb3dlcl9vbgk9IGV4eW5vczQyMTBfcG93ZXJfb24sCisJCS5wb3dlcl9vZmYJPSBleHlub3M0MjEwX3Bvd2VyX29mZiwKKwl9LAorCXsKKwkJLmxhYmVsCQk9ICJoc2ljMCIsCisJCS5pZAkJPSBFWFlOT1M0MjEwX0hTSUMwLAorCQkucG93ZXJfb24JPSBleHlub3M0MjEwX3Bvd2VyX29uLAorCQkucG93ZXJfb2ZmCT0gZXh5bm9zNDIxMF9wb3dlcl9vZmYsCisJfSwKKwl7CisJCS5sYWJlbAkJPSAiaHNpYzEiLAorCQkuaWQJCT0gRVhZTk9TNDIxMF9IU0lDMSwKKwkJLnBvd2VyX29uCT0gZXh5bm9zNDIxMF9wb3dlcl9vbiwKKwkJLnBvd2VyX29mZgk9IGV4eW5vczQyMTBfcG93ZXJfb2ZmLAorCX0sCisJe30sCit9OworCistIGludCAoKnBvd2VyX29uKShzdHJ1Y3Qgc2Ftc3VuZ191c2IyX3BoeV9pbnN0YW5jZSAqKTsKKy0gaW50ICgqcG93ZXJfb2ZmKShzdHJ1Y3Qgc2Ftc3VuZ191c2IyX3BoeV9pbnN0YW5jZSAqKTsKKwlUaGVzZSB0d28gY2FsbGJhY2tzIGFyZSB1c2VkIHRvIHBvd2VyIG9uIGFuZCBwb3dlciBvZmYgdGhlIHBoeQorCWJ5IG1vZGlmeWluZyBhcHByb3ByaWF0ZSByZWdpc3RlcnMuCisKK0ZpbmFsIGNoYW5nZSB0byB0aGUgZHJpdmVyIGlzIGFkZGluZyBhcHByb3ByaWF0ZSBjb21wYXRpYmxlIHZhbHVlIHRvIHRoZQorcGh5LXNhbXN1bmctdXNiMi5jIGZpbGUuIEluIGNhc2Ugb2YgRXh5bm9zIDQyMTAgdGhlIGZvbGxvd2luZyBsaW5lcyB3ZXJlCithZGRlZCB0byB0aGUgc3RydWN0IG9mX2RldmljZV9pZCBzYW1zdW5nX3VzYjJfcGh5X29mX21hdGNoW10gYXJyYXk6CisKKyNpZmRlZiBDT05GSUdfUEhZX0VYWU5PUzQyMTBfVVNCMgorCXsKKwkJLmNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M0MjEwLXVzYjItcGh5IiwKKwkJLmRhdGEgPSAmZXh5bm9zNDIxMF91c2IyX3BoeV9jb25maWcsCisJfSwKKyNlbmRpZgorCitUbyBhZGQgZnVydGhlciBmbGV4aWJpbGl0eSB0byB0aGUgZHJpdmVyIHRoZSBLY29uZmlnIGZpbGUgZW5hYmxlcyB0bworaW5jbHVkZSBzdXBwb3J0IGZvciBzZWxlY3RlZCBTb0NzIGluIHRoZSBjb21waWxlZCBkcml2ZXIuIFRoZSBLY29uZmlnCitlbnRyeSBmb3IgRXh5bm9zIDQyMTAgaXMgZm9sbG93aW5nOgorCitjb25maWcgUEhZX0VYWU5PUzQyMTBfVVNCMgorCWJvb2wgIlN1cHBvcnQgZm9yIEV4eW5vcyA0MjEwIgorCWRlcGVuZHMgb24gUEhZX1NBTVNVTkdfVVNCMgorCWRlcGVuZHMgb24gQ1BVX0VYWU5PUzQyMTAKKwloZWxwCisJICBFbmFibGUgVVNCIFBIWSBzdXBwb3J0IGZvciBFeHlub3MgNDIxMC4gVGhpcyBvcHRpb24gcmVxdWlyZXMgdGhhdAorCSAgU2Ftc3VuZyBVU0IgMi4wIFBIWSBkcml2ZXIgaXMgZW5hYmxlZCBhbmQgbWVhbnMgdGhhdCBzdXBwb3J0IGZvciB0aGlzCisJICBwYXJ0aWN1bGFyIFNvQyBpcyBjb21waWxlZCBpbiB0aGUgZHJpdmVyLiBJbiBjYXNlIG9mIEV4eW5vcyA0MjEwIGZvdXIKKwkgIHBoeXMgYXJlIGF2YWlsYWJsZSAtIGRldmljZSwgaG9zdCwgSFNDSTAgYW5kIEhTQ0kxLgorCitUaGUgbmV3bHkgY3JlYXRlZCBmaWxlIHRoYXQgc3VwcG9ydHMgdGhlIG5ldyBTb0MgaGFzIHRvIGJlIGFsc28gYWRkZWQgdG8gdGhlCitNYWtlZmlsZS4gSW4gY2FzZSBvZiBFeHlub3MgNDIxMCB0aGUgYWRkZWQgbGluZSBpcyBmb2xsb3dpbmc6CisKK29iai0kKENPTkZJR19QSFlfRVhZTk9TNDIxMF9VU0IyKSAgICAgICArPSBwaHktZXh5bm9zNDIxMC11c2IyLm8KKworQWZ0ZXIgY29tcGxldGluZyB0aGVzZSBzdGVwcyB0aGUgc3VwcG9ydCBmb3IgdGhlIG5ldyBTb0Mgc2hvdWxkIGJlIHJlYWR5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9waS1mdXRleC50eHQgYi9Eb2N1bWVudGF0aW9uL3BpLWZ1dGV4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTViYzg2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9waS1mdXRleC50eHQKQEAgLTAsMCArMSwxMjEgQEAKK0xpZ2h0d2VpZ2h0IFBJLWZ1dGV4ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2UgYXJlIGNhbGxpbmcgdGhlbSBsaWdodHdlaWdodCBmb3IgMyByZWFzb25zOgorCisgLSBpbiB0aGUgdXNlci1zcGFjZSBmYXN0cGF0aCBhIFBJLWVuYWJsZWQgZnV0ZXggaW52b2x2ZXMgbm8ga2VybmVsIHdvcmsKKyAgIChvciBhbnkgb3RoZXIgUEkgY29tcGxleGl0eSkgYXQgYWxsLiBObyByZWdpc3RyYXRpb24sIG5vIGV4dHJhIGtlcm5lbAorICAgY2FsbHMgLSBqdXN0IHB1cmUgZmFzdCBhdG9taWMgb3BzIGluIHVzZXJzcGFjZS4KKworIC0gZXZlbiBpbiB0aGUgc2xvd3BhdGgsIHRoZSBzeXN0ZW0gY2FsbCBhbmQgc2NoZWR1bGluZyBwYXR0ZXJuIGlzIHZlcnkKKyAgIHNpbWlsYXIgdG8gbm9ybWFsIGZ1dGV4ZXMuCisKKyAtIHRoZSBpbi1rZXJuZWwgUEkgaW1wbGVtZW50YXRpb24gaXMgc3RyZWFtbGluZWQgYXJvdW5kIHRoZSBtdXRleAorICAgYWJzdHJhY3Rpb24sIHdpdGggc3RyaWN0IHJ1bGVzIHRoYXQga2VlcCB0aGUgaW1wbGVtZW50YXRpb24KKyAgIHJlbGF0aXZlbHkgc2ltcGxlOiBvbmx5IGEgc2luZ2xlIG93bmVyIG1heSBvd24gYSBsb2NrIChpLmUuIG5vCisgICByZWFkLXdyaXRlIGxvY2sgc3VwcG9ydCksIG9ubHkgdGhlIG93bmVyIG1heSB1bmxvY2sgYSBsb2NrLCBubworICAgcmVjdXJzaXZlIGxvY2tpbmcsIGV0Yy4KKworUHJpb3JpdHkgSW5oZXJpdGFuY2UgLSB3aHk/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHNob3J0IHJlcGx5OiB1c2VyLXNwYWNlIFBJIGhlbHBzIGFjaGlldmluZy9pbXByb3ZpbmcgZGV0ZXJtaW5pc20gZm9yCit1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucy4gSW4gdGhlIGJlc3QtY2FzZSwgaXQgY2FuIGhlbHAgYWNoaWV2ZQorZGV0ZXJtaW5pc20gYW5kIHdlbGwtYm91bmQgbGF0ZW5jaWVzLiBFdmVuIGluIHRoZSB3b3JzdC1jYXNlLCBQSSB3aWxsCitpbXByb3ZlIHRoZSBzdGF0aXN0aWNhbCBkaXN0cmlidXRpb24gb2YgbG9ja2luZyByZWxhdGVkIGFwcGxpY2F0aW9uCitkZWxheXMuCisKK1RoZSBsb25nZXIgcmVwbHk6CistLS0tLS0tLS0tLS0tLS0tLQorCitGaXJzdGx5LCBzaGFyaW5nIGxvY2tzIGJldHdlZW4gbXVsdGlwbGUgdGFza3MgaXMgYSBjb21tb24gcHJvZ3JhbW1pbmcKK3RlY2huaXF1ZSB0aGF0IG9mdGVuIGNhbm5vdCBiZSByZXBsYWNlZCB3aXRoIGxvY2tsZXNzIGFsZ29yaXRobXMuIEFzIHdlCitjYW4gc2VlIGl0IGluIHRoZSBrZXJuZWwgW3doaWNoIGlzIGEgcXVpdGUgY29tcGxleCBwcm9ncmFtIGluIGl0c2VsZl0sCitsb2NrbGVzcyBzdHJ1Y3R1cmVzIGFyZSByYXRoZXIgdGhlIGV4Y2VwdGlvbiB0aGFuIHRoZSBub3JtIC0gdGhlIGN1cnJlbnQKK3JhdGlvIG9mIGxvY2tsZXNzIHZzLiBsb2NreSBjb2RlIGZvciBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzIGlzIHNvbWV3aGVyZQorYmV0d2VlbiAxOjEwIGFuZCAxOjEwMC4gTG9ja2xlc3MgaXMgaGFyZCwgYW5kIHRoZSBjb21wbGV4aXR5IG9mIGxvY2tsZXNzCithbGdvcml0aG1zIG9mdGVuIGVuZGFuZ2VycyB0byBhYmlsaXR5IHRvIGRvIHJvYnVzdCByZXZpZXdzIG9mIHNhaWQgY29kZS4KK0kuZS4gY3JpdGljYWwgUlQgYXBwcyBvZnRlbiBjaG9vc2UgbG9jayBzdHJ1Y3R1cmVzIHRvIHByb3RlY3QgY3JpdGljYWwKK2RhdGEgc3RydWN0dXJlcywgaW5zdGVhZCBvZiBsb2NrbGVzcyBhbGdvcml0aG1zLiBGdXJ0aGVybW9yZSwgdGhlcmUgYXJlCitjYXNlcyAobGlrZSBzaGFyZWQgaGFyZHdhcmUsIG9yIG90aGVyIHJlc291cmNlIGxpbWl0cykgd2hlcmUgbG9ja2xlc3MKK2FjY2VzcyBpcyBtYXRoZW1hdGljYWxseSBpbXBvc3NpYmxlLgorCitNZWRpYSBwbGF5ZXJzIChzdWNoIGFzIEphY2spIGFyZSBhbiBleGFtcGxlIG9mIHJlYXNvbmFibGUgYXBwbGljYXRpb24KK2Rlc2lnbiB3aXRoIG11bHRpcGxlIHRhc2tzICh3aXRoIG11bHRpcGxlIHByaW9yaXR5IGxldmVscykgc2hhcmluZworc2hvcnQtaGVsZCBsb2NrczogZm9yIGV4YW1wbGUsIGEgaGlnaHByaW8gYXVkaW8gcGxheWJhY2sgdGhyZWFkIGlzCitjb21iaW5lZCB3aXRoIG1lZGl1bS1wcmlvIGNvbnN0cnVjdC1hdWRpby1kYXRhIHRocmVhZHMgYW5kIGxvdy1wcmlvCitkaXNwbGF5LWNvbG9yeS1zdHVmZiB0aHJlYWRzLiBBZGQgdmlkZW8gYW5kIGRlY29kaW5nIHRvIHRoZSBtaXggYW5kCit3ZSd2ZSBnb3QgZXZlbiBtb3JlIHByaW9yaXR5IGxldmVscy4KKworU28gb25jZSB3ZSBhY2NlcHQgdGhhdCBzeW5jaHJvbml6YXRpb24gb2JqZWN0cyAobG9ja3MpIGFyZSBhbgordW5hdm9pZGFibGUgZmFjdCBvZiBsaWZlLCBhbmQgb25jZSB3ZSBhY2NlcHQgdGhhdCBtdWx0aS10YXNrIHVzZXJzcGFjZQorYXBwcyBoYXZlIGEgdmVyeSBmYWlyIGV4cGVjdGF0aW9uIG9mIGJlaW5nIGFibGUgdG8gdXNlIGxvY2tzLCB3ZSd2ZSBnb3QKK3RvIHRoaW5rIGFib3V0IGhvdyB0byBvZmZlciB0aGUgb3B0aW9uIG9mIGEgZGV0ZXJtaW5pc3RpYyBsb2NraW5nCitpbXBsZW1lbnRhdGlvbiB0byB1c2VyLXNwYWNlLgorCitNb3N0IG9mIHRoZSB0ZWNobmljYWwgY291bnRlci1hcmd1bWVudHMgYWdhaW5zdCBkb2luZyBwcmlvcml0eQoraW5oZXJpdGFuY2Ugb25seSBhcHBseSB0byBrZXJuZWwtc3BhY2UgbG9ja3MuIEJ1dCB1c2VyLXNwYWNlIGxvY2tzIGFyZQorZGlmZmVyZW50LCB0aGVyZSB3ZSBjYW5ub3QgZGlzYWJsZSBpbnRlcnJ1cHRzIG9yIG1ha2UgdGhlIHRhc2sKK25vbi1wcmVlbXB0aWJsZSBpbiBhIGNyaXRpY2FsIHNlY3Rpb24sIHNvIHRoZSAndXNlIHNwaW5sb2NrcycgYXJndW1lbnQKK2RvZXMgbm90IGFwcGx5ICh1c2VyLXNwYWNlIHNwaW5sb2NrcyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5IGludmVyc2lvbgorcHJvYmxlbXMgYXMgb3RoZXIgdXNlci1zcGFjZSBsb2NraW5nIGNvbnN0cnVjdHMpLiBGYWN0IGlzLCBwcmV0dHkgbXVjaAordGhlIG9ubHkgdGVjaG5pcXVlIHRoYXQgY3VycmVudGx5IGVuYWJsZXMgZ29vZCBkZXRlcm1pbmlzbSBmb3IgdXNlcnNwYWNlCitsb2NrcyAoc3VjaCBhcyBmdXRleC1iYXNlZCBwdGhyZWFkIG11dGV4ZXMpIGlzIHByaW9yaXR5IGluaGVyaXRhbmNlOgorCitDdXJyZW50bHkgKHdpdGhvdXQgUEkpLCBpZiBhIGhpZ2gtcHJpbyBhbmQgYSBsb3ctcHJpbyB0YXNrIHNoYXJlcyBhIGxvY2sKK1t0aGlzIGlzIGEgcXVpdGUgY29tbW9uIHNjZW5hcmlvIGZvciBtb3N0IG5vbi10cml2aWFsIFJUIGFwcGxpY2F0aW9uc10sCitldmVuIGlmIGFsbCBjcml0aWNhbCBzZWN0aW9ucyBhcmUgY29kZWQgY2FyZWZ1bGx5IHRvIGJlIGRldGVybWluaXN0aWMKKyhpLmUuIGFsbCBjcml0aWNhbCBzZWN0aW9ucyBhcmUgc2hvcnQgaW4gZHVyYXRpb24gYW5kIG9ubHkgZXhlY3V0ZSBhCitsaW1pdGVkIG51bWJlciBvZiBpbnN0cnVjdGlvbnMpLCB0aGUga2VybmVsIGNhbm5vdCBndWFyYW50ZWUgYW55CitkZXRlcm1pbmlzdGljIGV4ZWN1dGlvbiBvZiB0aGUgaGlnaC1wcmlvIHRhc2s6IGFueSBtZWRpdW0tcHJpb3JpdHkgdGFzaworY291bGQgcHJlZW1wdCB0aGUgbG93LXByaW8gdGFzayB3aGlsZSBpdCBob2xkcyB0aGUgc2hhcmVkIGxvY2sgYW5kCitleGVjdXRlcyB0aGUgY3JpdGljYWwgc2VjdGlvbiwgYW5kIGNvdWxkIGRlbGF5IGl0IGluZGVmaW5pdGVseS4KKworSW1wbGVtZW50YXRpb246CistLS0tLS0tLS0tLS0tLS0KKworQXMgbWVudGlvbmVkIGJlZm9yZSwgdGhlIHVzZXJzcGFjZSBmYXN0cGF0aCBvZiBQSS1lbmFibGVkIHB0aHJlYWQKK211dGV4ZXMgaW52b2x2ZXMgbm8ga2VybmVsIHdvcmsgYXQgYWxsIC0gdGhleSBiZWhhdmUgcXVpdGUgc2ltaWxhcmx5IHRvCitub3JtYWwgZnV0ZXgtYmFzZWQgbG9ja3M6IGEgMCB2YWx1ZSBtZWFucyB1bmxvY2tlZCwgYW5kIGEgdmFsdWU9PVRJRAorbWVhbnMgbG9ja2VkLiAoVGhpcyBpcyB0aGUgc2FtZSBtZXRob2QgYXMgdXNlZCBieSBsaXN0LWJhc2VkIHJvYnVzdAorZnV0ZXhlcy4pIFVzZXJzcGFjZSB1c2VzIGF0b21pYyBvcHMgdG8gbG9jay91bmxvY2sgdGhlc2UgbXV0ZXhlcyB3aXRob3V0CitlbnRlcmluZyB0aGUga2VybmVsLgorCitUbyBoYW5kbGUgdGhlIHNsb3dwYXRoLCB3ZSBoYXZlIGFkZGVkIHR3byBuZXcgZnV0ZXggb3BzOgorCisgIEZVVEVYX0xPQ0tfUEkKKyAgRlVURVhfVU5MT0NLX1BJCisKK0lmIHRoZSBsb2NrLWFjcXVpcmUgZmFzdHBhdGggZmFpbHMsIFtpLmUuIGFuIGF0b21pYyB0cmFuc2l0aW9uIGZyb20gMCB0bworVElEIGZhaWxzXSwgdGhlbiBGVVRFWF9MT0NLX1BJIGlzIGNhbGxlZC4gVGhlIGtlcm5lbCBkb2VzIGFsbCB0aGUKK3JlbWFpbmluZyB3b3JrOiBpZiB0aGVyZSBpcyBubyBmdXRleC1xdWV1ZSBhdHRhY2hlZCB0byB0aGUgZnV0ZXggYWRkcmVzcworeWV0IHRoZW4gdGhlIGNvZGUgbG9va3MgdXAgdGhlIHRhc2sgdGhhdCBvd25zIHRoZSBmdXRleCBbaXQgaGFzIHB1dCBpdHMKK293biBUSUQgaW50byB0aGUgZnV0ZXggdmFsdWVdLCBhbmQgYXR0YWNoZXMgYSAnUEkgc3RhdGUnIHN0cnVjdHVyZSB0bwordGhlIGZ1dGV4LXF1ZXVlLiBUaGUgcGlfc3RhdGUgaW5jbHVkZXMgYW4gcnQtbXV0ZXgsIHdoaWNoIGlzIGEgUEktYXdhcmUsCitrZXJuZWwtYmFzZWQgc3luY2hyb25pemF0aW9uIG9iamVjdC4gVGhlICdvdGhlcicgdGFzayBpcyBtYWRlIHRoZSBvd25lcgorb2YgdGhlIHJ0LW11dGV4LCBhbmQgdGhlIEZVVEVYX1dBSVRFUlMgYml0IGlzIGF0b21pY2FsbHkgc2V0IGluIHRoZQorZnV0ZXggdmFsdWUuIFRoZW4gdGhpcyB0YXNrIHRyaWVzIHRvIGxvY2sgdGhlIHJ0LW11dGV4LCBvbiB3aGljaCBpdAorYmxvY2tzLiBPbmNlIGl0IHJldHVybnMsIGl0IGhhcyB0aGUgbXV0ZXggYWNxdWlyZWQsIGFuZCBpdCBzZXRzIHRoZQorZnV0ZXggdmFsdWUgdG8gaXRzIG93biBUSUQgYW5kIHJldHVybnMuIFVzZXJzcGFjZSBoYXMgbm8gb3RoZXIgd29yayB0bworcGVyZm9ybSAtIGl0IG5vdyBvd25zIHRoZSBsb2NrLCBhbmQgZnV0ZXggdmFsdWUgY29udGFpbnMKK0ZVVEVYX1dBSVRFUlN8VElELgorCitJZiB0aGUgdW5sb2NrIHNpZGUgZmFzdHBhdGggc3VjY2VlZHMsIFtpLmUuIHVzZXJzcGFjZSBtYW5hZ2VzIHRvIGRvIGEKK1RJRCAtPiAwIGF0b21pYyB0cmFuc2l0aW9uIG9mIHRoZSBmdXRleCB2YWx1ZV0sIHRoZW4gbm8ga2VybmVsIHdvcmsgaXMKK3RyaWdnZXJlZC4KKworSWYgdGhlIHVubG9jayBmYXN0cGF0aCBmYWlscyAoYmVjYXVzZSB0aGUgRlVURVhfV0FJVEVSUyBiaXQgaXMgc2V0KSwKK3RoZW4gRlVURVhfVU5MT0NLX1BJIGlzIGNhbGxlZCwgYW5kIHRoZSBrZXJuZWwgdW5sb2NrcyB0aGUgZnV0ZXggb24gdGhlCitiZWhhbGYgb2YgdXNlcnNwYWNlIC0gYW5kIGl0IGFsc28gdW5sb2NrcyB0aGUgYXR0YWNoZWQKK3BpX3N0YXRlLT5ydF9tdXRleCBhbmQgdGh1cyB3YWtlcyB1cCBhbnkgcG90ZW50aWFsIHdhaXRlcnMuCisKK05vdGUgdGhhdCB1bmRlciB0aGlzIGFwcHJvYWNoLCBjb250cmFyeSB0byBwcmV2aW91cyBQSS1mdXRleCBhcHByb2FjaGVzLAordGhlcmUgaXMgbm8gcHJpb3IgJ3JlZ2lzdHJhdGlvbicgb2YgYSBQSS1mdXRleC4gW3doaWNoIGlzIG5vdCBxdWl0ZQorcG9zc2libGUgYW55d2F5LCBkdWUgdG8gZXhpc3RpbmcgQUJJIHByb3BlcnRpZXMgb2YgcHRocmVhZCBtdXRleGVzLl0KKworQWxzbywgdW5kZXIgdGhpcyBzY2hlbWUsICdyb2J1c3RuZXNzJyBhbmQgJ1BJJyBhcmUgdHdvIG9ydGhvZ29uYWwKK3Byb3BlcnRpZXMgb2YgZnV0ZXhlcywgYW5kIGFsbCBmb3VyIGNvbWJpbmF0aW9ucyBhcmUgcG9zc2libGU6IGZ1dGV4LAorcm9idXN0LWZ1dGV4LCBQSS1mdXRleCwgcm9idXN0K1BJLWZ1dGV4LgorCitNb3JlIGRldGFpbHMgYWJvdXQgcHJpb3JpdHkgaW5oZXJpdGFuY2UgY2FuIGJlIGZvdW5kIGluCitEb2N1bWVudGF0aW9uL3J0LW11dGV4LnR4dC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcGluY3RybC50eHQgYi9Eb2N1bWVudGF0aW9uL3BpbmN0cmwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkMTVhNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3BpbmN0cmwudHh0CkBAIC0wLDAgKzEsMTQxOSBAQAorUElOQ1RSTCAoUElOIENPTlRST0wpIHN1YnN5c3RlbQorVGhpcyBkb2N1bWVudCBvdXRsaW5lcyB0aGUgcGluIGNvbnRyb2wgc3Vic3lzdGVtIGluIExpbnV4CisKK1RoaXMgc3Vic3lzdGVtIGRlYWxzIHdpdGg6CisKKy0gRW51bWVyYXRpbmcgYW5kIG5hbWluZyBjb250cm9sbGFibGUgcGlucworCistIE11bHRpcGxleGluZyBvZiBwaW5zLCBwYWRzLCBmaW5nZXJzIChldGMpIHNlZSBiZWxvdyBmb3IgZGV0YWlscworCistIENvbmZpZ3VyYXRpb24gb2YgcGlucywgcGFkcywgZmluZ2VycyAoZXRjKSwgc3VjaCBhcyBzb2Z0d2FyZS1jb250cm9sbGVkCisgIGJpYXNpbmcgYW5kIGRyaXZpbmcgbW9kZSBzcGVjaWZpYyBwaW5zLCBzdWNoIGFzIHB1bGwtdXAvZG93biwgb3BlbiBkcmFpbiwKKyAgbG9hZCBjYXBhY2l0YW5jZSBldGMuCisKK1RvcC1sZXZlbCBpbnRlcmZhY2UKKz09PT09PT09PT09PT09PT09PT0KKworRGVmaW5pdGlvbiBvZiBQSU4gQ09OVFJPTExFUjoKKworLSBBIHBpbiBjb250cm9sbGVyIGlzIGEgcGllY2Ugb2YgaGFyZHdhcmUsIHVzdWFsbHkgYSBzZXQgb2YgcmVnaXN0ZXJzLCB0aGF0CisgIGNhbiBjb250cm9sIFBJTnMuIEl0IG1heSBiZSBhYmxlIHRvIG11bHRpcGxleCwgYmlhcywgc2V0IGxvYWQgY2FwYWNpdGFuY2UsCisgIHNldCBkcml2ZSBzdHJlbmd0aCwgZXRjLiBmb3IgaW5kaXZpZHVhbCBwaW5zIG9yIGdyb3VwcyBvZiBwaW5zLgorCitEZWZpbml0aW9uIG9mIFBJTjoKKworLSBQSU5TIGFyZSBlcXVhbCB0byBwYWRzLCBmaW5nZXJzLCBiYWxscyBvciB3aGF0ZXZlciBwYWNrYWdpbmcgaW5wdXQgb3IKKyAgb3V0cHV0IGxpbmUgeW91IHdhbnQgdG8gY29udHJvbCBhbmQgdGhlc2UgYXJlIGRlbm90ZWQgYnkgdW5zaWduZWQgaW50ZWdlcnMKKyAgaW4gdGhlIHJhbmdlIDAuLm1heHBpbi4gVGhpcyBudW1iZXJzcGFjZSBpcyBsb2NhbCB0byBlYWNoIFBJTiBDT05UUk9MTEVSLCBzbworICB0aGVyZSBtYXkgYmUgc2V2ZXJhbCBzdWNoIG51bWJlciBzcGFjZXMgaW4gYSBzeXN0ZW0uIFRoaXMgcGluIHNwYWNlIG1heQorICBiZSBzcGFyc2UgLSBpLmUuIHRoZXJlIG1heSBiZSBnYXBzIGluIHRoZSBzcGFjZSB3aXRoIG51bWJlcnMgd2hlcmUgbm8KKyAgcGluIGV4aXN0cy4KKworV2hlbiBhIFBJTiBDT05UUk9MTEVSIGlzIGluc3RhbnRpYXRlZCwgaXQgd2lsbCByZWdpc3RlciBhIGRlc2NyaXB0b3IgdG8gdGhlCitwaW4gY29udHJvbCBmcmFtZXdvcmssIGFuZCB0aGlzIGRlc2NyaXB0b3IgY29udGFpbnMgYW4gYXJyYXkgb2YgcGluIGRlc2NyaXB0b3JzCitkZXNjcmliaW5nIHRoZSBwaW5zIGhhbmRsZWQgYnkgdGhpcyBzcGVjaWZpYyBwaW4gY29udHJvbGxlci4KKworSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgUEdBIChQaW4gR3JpZCBBcnJheSkgY2hpcCBzZWVuIGZyb20gdW5kZXJuZWF0aDoKKworICAgICAgICBBICAgQiAgIEMgICBEICAgRSAgIEYgICBHICAgSAorCisgICA4ICAgIG8gICBvICAgbyAgIG8gICBvICAgbyAgIG8gICBvCisKKyAgIDcgICAgbyAgIG8gICBvICAgbyAgIG8gICBvICAgbyAgIG8KKworICAgNiAgICBvICAgbyAgIG8gICBvICAgbyAgIG8gICBvICAgbworCisgICA1ICAgIG8gICBvICAgbyAgIG8gICBvICAgbyAgIG8gICBvCisKKyAgIDQgICAgbyAgIG8gICBvICAgbyAgIG8gICBvICAgbyAgIG8KKworICAgMyAgICBvICAgbyAgIG8gICBvICAgbyAgIG8gICBvICAgbworCisgICAyICAgIG8gICBvICAgbyAgIG8gICBvICAgbyAgIG8gICBvCisKKyAgIDEgICAgbyAgIG8gICBvICAgbyAgIG8gICBvICAgbyAgIG8KKworVG8gcmVnaXN0ZXIgYSBwaW4gY29udHJvbGxlciBhbmQgbmFtZSBhbGwgdGhlIHBpbnMgb24gdGhpcyBwYWNrYWdlIHdlIGNhbiBkbwordGhpcyBpbiBvdXIgZHJpdmVyOgorCisjaW5jbHVkZSA8bGludXgvcGluY3RybC9waW5jdHJsLmg+CisKK2NvbnN0IHN0cnVjdCBwaW5jdHJsX3Bpbl9kZXNjIGZvb19waW5zW10gPSB7CisgICAgICBQSU5DVFJMX1BJTigwLCAiQTgiKSwKKyAgICAgIFBJTkNUUkxfUElOKDEsICJCOCIpLAorICAgICAgUElOQ1RSTF9QSU4oMiwgIkM4IiksCisgICAgICAuLi4KKyAgICAgIFBJTkNUUkxfUElOKDYxLCAiRjEiKSwKKyAgICAgIFBJTkNUUkxfUElOKDYyLCAiRzEiKSwKKyAgICAgIFBJTkNUUkxfUElOKDYzLCAiSDEiKSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGluY3RybF9kZXNjIGZvb19kZXNjID0geworCS5uYW1lID0gImZvbyIsCisJLnBpbnMgPSBmb29fcGlucywKKwkubnBpbnMgPSBBUlJBWV9TSVpFKGZvb19waW5zKSwKKwkub3duZXIgPSBUSElTX01PRFVMRSwKK307CisKK2ludCBfX2luaXQgZm9vX3Byb2JlKHZvaWQpCit7CisJc3RydWN0IHBpbmN0cmxfZGV2ICpwY3RsOworCisJcGN0bCA9IHBpbmN0cmxfcmVnaXN0ZXIoJmZvb19kZXNjLCA8UEFSRU5UPiwgTlVMTCk7CisJaWYgKCFwY3RsKQorCQlwcl9lcnIoImNvdWxkIG5vdCByZWdpc3RlciBmb28gcGluIGRyaXZlclxuIik7Cit9CisKK1RvIGVuYWJsZSB0aGUgcGluY3RybCBzdWJzeXN0ZW0gYW5kIHRoZSBzdWJncm91cHMgZm9yIFBJTk1VWCBhbmQgUElOQ09ORiBhbmQKK3NlbGVjdGVkIGRyaXZlcnMsIHlvdSBuZWVkIHRvIHNlbGVjdCB0aGVtIGZyb20geW91ciBtYWNoaW5lJ3MgS2NvbmZpZyBlbnRyeSwKK3NpbmNlIHRoZXNlIGFyZSBzbyB0aWdodGx5IGludGVncmF0ZWQgd2l0aCB0aGUgbWFjaGluZXMgdGhleSBhcmUgdXNlZCBvbi4KK1NlZSBmb3IgZXhhbXBsZSBhcmNoL2FybS9tYWNoLXUzMDAvS2NvbmZpZyBmb3IgYW4gZXhhbXBsZS4KKworUGlucyB1c3VhbGx5IGhhdmUgZmFuY2llciBuYW1lcyB0aGFuIHRoaXMuIFlvdSBjYW4gZmluZCB0aGVzZSBpbiB0aGUgZGF0YXNoZWV0Citmb3IgeW91ciBjaGlwLiBOb3RpY2UgdGhhdCB0aGUgY29yZSBwaW5jdHJsLmggZmlsZSBwcm92aWRlcyBhIGZhbmN5IG1hY3JvCitjYWxsZWQgUElOQ1RSTF9QSU4oKSB0byBjcmVhdGUgdGhlIHN0cnVjdCBlbnRyaWVzLiBBcyB5b3UgY2FuIHNlZSBJIGVudW1lcmF0ZWQKK3RoZSBwaW5zIGZyb20gMCBpbiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgdG8gNjMgaW4gdGhlIGxvd2VyIHJpZ2h0IGNvcm5lci4KK1RoaXMgZW51bWVyYXRpb24gd2FzIGFyYml0cmFyaWx5IGNob3NlbiwgaW4gcHJhY3RpY2UgeW91IG5lZWQgdG8gdGhpbmsKK3Rocm91Z2ggeW91ciBudW1iZXJpbmcgc3lzdGVtIHNvIHRoYXQgaXQgbWF0Y2hlcyB0aGUgbGF5b3V0IG9mIHJlZ2lzdGVycworYW5kIHN1Y2ggdGhpbmdzIGluIHlvdXIgZHJpdmVyLCBvciB0aGUgY29kZSBtYXkgYmVjb21lIGNvbXBsaWNhdGVkLiBZb3UgbXVzdAorYWxzbyBjb25zaWRlciBtYXRjaGluZyBvZiBvZmZzZXRzIHRvIHRoZSBHUElPIHJhbmdlcyB0aGF0IG1heSBiZSBoYW5kbGVkIGJ5Cit0aGUgcGluIGNvbnRyb2xsZXIuCisKK0ZvciBhIHBhZHJpbmcgd2l0aCA0NjcgcGFkcywgYXMgb3Bwb3NlZCB0byBhY3R1YWwgcGlucywgSSB1c2VkIGFuIGVudW1lcmF0aW9uCitsaWtlIHRoaXMsIHdhbGtpbmcgYXJvdW5kIHRoZSBlZGdlIG9mIHRoZSBjaGlwLCB3aGljaCBzZWVtcyB0byBiZSBpbmR1c3RyeQorc3RhbmRhcmQgdG9vIChhbGwgdGhlc2UgcGFkcyBoYWQgbmFtZXMsIHRvbyk6CisKKworICAgICAwIC4uLi4uIDEwNAorICAgNDY2ICAgICAgICAxMDUKKyAgICAgLiAgICAgICAgLgorICAgICAuICAgICAgICAuCisgICAzNTggICAgICAgIDIyNAorICAgIDM1NyAuLi4uIDIyNQorCisKK1BpbiBncm91cHMKKz09PT09PT09PT0KKworTWFueSBjb250cm9sbGVycyBuZWVkIHRvIGRlYWwgd2l0aCBncm91cHMgb2YgcGlucywgc28gdGhlIHBpbiBjb250cm9sbGVyCitzdWJzeXN0ZW0gaGFzIGEgbWVjaGFuaXNtIGZvciBlbnVtZXJhdGluZyBncm91cHMgb2YgcGlucyBhbmQgcmV0cmlldmluZyB0aGUKK2FjdHVhbCBlbnVtZXJhdGVkIHBpbnMgdGhhdCBhcmUgcGFydCBvZiBhIGNlcnRhaW4gZ3JvdXAuCisKK0ZvciBleGFtcGxlLCBzYXkgdGhhdCB3ZSBoYXZlIGEgZ3JvdXAgb2YgcGlucyBkZWFsaW5nIHdpdGggYW4gU1BJIGludGVyZmFjZQorb24geyAwLCA4LCAxNiwgMjQgfSwgYW5kIGEgZ3JvdXAgb2YgcGlucyBkZWFsaW5nIHdpdGggYW4gSTJDIGludGVyZmFjZSBvbiBwaW5zCitvbiB7IDI0LCAyNSB9LgorCitUaGVzZSB0d28gZ3JvdXBzIGFyZSBwcmVzZW50ZWQgdG8gdGhlIHBpbiBjb250cm9sIHN1YnN5c3RlbSBieSBpbXBsZW1lbnRpbmcKK3NvbWUgZ2VuZXJpYyBwaW5jdHJsX29wcyBsaWtlIHRoaXM6CisKKyNpbmNsdWRlIDxsaW51eC9waW5jdHJsL3BpbmN0cmwuaD4KKworc3RydWN0IGZvb19ncm91cCB7CisJY29uc3QgY2hhciAqbmFtZTsKKwljb25zdCB1bnNpZ25lZCBpbnQgKnBpbnM7CisJY29uc3QgdW5zaWduZWQgbnVtX3BpbnM7Cit9OworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHNwaTBfcGluc1tdID0geyAwLCA4LCAxNiwgMjQgfTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgaTJjMF9waW5zW10gPSB7IDI0LCAyNSB9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGZvb19ncm91cCBmb29fZ3JvdXBzW10gPSB7CisJeworCQkubmFtZSA9ICJzcGkwX2dycCIsCisJCS5waW5zID0gc3BpMF9waW5zLAorCQkubnVtX3BpbnMgPSBBUlJBWV9TSVpFKHNwaTBfcGlucyksCisJfSwKKwl7CisJCS5uYW1lID0gImkyYzBfZ3JwIiwKKwkJLnBpbnMgPSBpMmMwX3BpbnMsCisJCS5udW1fcGlucyA9IEFSUkFZX1NJWkUoaTJjMF9waW5zKSwKKwl9LAorfTsKKworCitzdGF0aWMgaW50IGZvb19nZXRfZ3JvdXBzX2NvdW50KHN0cnVjdCBwaW5jdHJsX2RldiAqcGN0bGRldikKK3sKKwlyZXR1cm4gQVJSQVlfU0laRShmb29fZ3JvdXBzKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKmZvb19nZXRfZ3JvdXBfbmFtZShzdHJ1Y3QgcGluY3RybF9kZXYgKnBjdGxkZXYsCisJCQkJICAgICAgIHVuc2lnbmVkIHNlbGVjdG9yKQoreworCXJldHVybiBmb29fZ3JvdXBzW3NlbGVjdG9yXS5uYW1lOworfQorCitzdGF0aWMgaW50IGZvb19nZXRfZ3JvdXBfcGlucyhzdHJ1Y3QgcGluY3RybF9kZXYgKnBjdGxkZXYsIHVuc2lnbmVkIHNlbGVjdG9yLAorCQkJICAgICAgIGNvbnN0IHVuc2lnbmVkICoqcGlucywKKwkJCSAgICAgICB1bnNpZ25lZCAqbnVtX3BpbnMpCit7CisJKnBpbnMgPSAodW5zaWduZWQgKikgZm9vX2dyb3Vwc1tzZWxlY3Rvcl0ucGluczsKKwkqbnVtX3BpbnMgPSBmb29fZ3JvdXBzW3NlbGVjdG9yXS5udW1fcGluczsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBwaW5jdHJsX29wcyBmb29fcGN0cmxfb3BzID0geworCS5nZXRfZ3JvdXBzX2NvdW50ID0gZm9vX2dldF9ncm91cHNfY291bnQsCisJLmdldF9ncm91cF9uYW1lID0gZm9vX2dldF9ncm91cF9uYW1lLAorCS5nZXRfZ3JvdXBfcGlucyA9IGZvb19nZXRfZ3JvdXBfcGlucywKK307CisKKworc3RhdGljIHN0cnVjdCBwaW5jdHJsX2Rlc2MgZm9vX2Rlc2MgPSB7CisgICAgICAgLi4uCisgICAgICAgLnBjdGxvcHMgPSAmZm9vX3BjdHJsX29wcywKK307CisKK1RoZSBwaW4gY29udHJvbCBzdWJzeXN0ZW0gd2lsbCBjYWxsIHRoZSAuZ2V0X2dyb3Vwc19jb3VudCgpIGZ1bmN0aW9uIHRvCitkZXRlcm1pbmUgdGhlIHRvdGFsIG51bWJlciBvZiBsZWdhbCBzZWxlY3RvcnMsIHRoZW4gaXQgd2lsbCBjYWxsIHRoZSBvdGhlciBmdW5jdGlvbnMKK3RvIHJldHJpZXZlIHRoZSBuYW1lIGFuZCBwaW5zIG9mIHRoZSBncm91cC4gTWFpbnRhaW5pbmcgdGhlIGRhdGEgc3RydWN0dXJlIG9mCit0aGUgZ3JvdXBzIGlzIHVwIHRvIHRoZSBkcml2ZXIsIHRoaXMgaXMganVzdCBhIHNpbXBsZSBleGFtcGxlIC0gaW4gcHJhY3RpY2UgeW91CittYXkgbmVlZCBtb3JlIGVudHJpZXMgaW4geW91ciBncm91cCBzdHJ1Y3R1cmUsIGZvciBleGFtcGxlIHNwZWNpZmljIHJlZ2lzdGVyCityYW5nZXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggZ3JvdXAgYW5kIHNvIG9uLgorCisKK1BpbiBjb25maWd1cmF0aW9uCis9PT09PT09PT09PT09PT09PQorCitQaW5zIGNhbiBzb21ldGltZXMgYmUgc29mdHdhcmUtY29uZmlndXJlZCBpbiB2YXJpb3VzIHdheXMsIG1vc3RseSByZWxhdGVkCit0byB0aGVpciBlbGVjdHJvbmljIHByb3BlcnRpZXMgd2hlbiB1c2VkIGFzIGlucHV0cyBvciBvdXRwdXRzLiBGb3IgZXhhbXBsZSB5b3UKK21heSBiZSBhYmxlIHRvIG1ha2UgYW4gb3V0cHV0IHBpbiBoaWdoIGltcGVkYW5jZSwgb3IgInRyaXN0YXRlIiBtZWFuaW5nIGl0IGlzCitlZmZlY3RpdmVseSBkaXNjb25uZWN0ZWQuIFlvdSBtYXkgYmUgYWJsZSB0byBjb25uZWN0IGFuIGlucHV0IHBpbiB0byBWREQgb3IgR05ECit1c2luZyBhIGNlcnRhaW4gcmVzaXN0b3IgdmFsdWUgLSBwdWxsIHVwIGFuZCBwdWxsIGRvd24gLSBzbyB0aGF0IHRoZSBwaW4gaGFzIGEKK3N0YWJsZSB2YWx1ZSB3aGVuIG5vdGhpbmcgaXMgZHJpdmluZyB0aGUgcmFpbCBpdCBpcyBjb25uZWN0ZWQgdG8sIG9yIHdoZW4gaXQncwordW5jb25uZWN0ZWQuCisKK1BpbiBjb25maWd1cmF0aW9uIGNhbiBiZSBwcm9ncmFtbWVkIGJ5IGFkZGluZyBjb25maWd1cmF0aW9uIGVudHJpZXMgaW50byB0aGUKK21hcHBpbmcgdGFibGU7IHNlZSBzZWN0aW9uICJCb2FyZC9tYWNoaW5lIGNvbmZpZ3VyYXRpb24iIGJlbG93LgorCitUaGUgZm9ybWF0IGFuZCBtZWFuaW5nIG9mIHRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciwgUExBVEZPUk1fWF9QVUxMX1VQCithYm92ZSwgaXMgZW50aXJlbHkgZGVmaW5lZCBieSB0aGUgcGluIGNvbnRyb2xsZXIgZHJpdmVyLgorCitUaGUgcGluIGNvbmZpZ3VyYXRpb24gZHJpdmVyIGltcGxlbWVudHMgY2FsbGJhY2tzIGZvciBjaGFuZ2luZyBwaW4KK2NvbmZpZ3VyYXRpb24gaW4gdGhlIHBpbiBjb250cm9sbGVyIG9wcyBsaWtlIHRoaXM6CisKKyNpbmNsdWRlIDxsaW51eC9waW5jdHJsL3BpbmN0cmwuaD4KKyNpbmNsdWRlIDxsaW51eC9waW5jdHJsL3BpbmNvbmYuaD4KKyNpbmNsdWRlICJwbGF0Zm9ybV94X3BpbmRlZnMuaCIKKworc3RhdGljIGludCBmb29fcGluX2NvbmZpZ19nZXQoc3RydWN0IHBpbmN0cmxfZGV2ICpwY3RsZGV2LAorCQkgICAgdW5zaWduZWQgb2Zmc2V0LAorCQkgICAgdW5zaWduZWQgbG9uZyAqY29uZmlnKQoreworCXN0cnVjdCBteV9jb25mdHlwZSBjb25mOworCisJLi4uIEZpbmQgc2V0dGluZyBmb3IgcGluIEAgb2Zmc2V0IC4uLgorCisJKmNvbmZpZyA9ICh1bnNpZ25lZCBsb25nKSBjb25mOworfQorCitzdGF0aWMgaW50IGZvb19waW5fY29uZmlnX3NldChzdHJ1Y3QgcGluY3RybF9kZXYgKnBjdGxkZXYsCisJCSAgICB1bnNpZ25lZCBvZmZzZXQsCisJCSAgICB1bnNpZ25lZCBsb25nIGNvbmZpZykKK3sKKwlzdHJ1Y3QgbXlfY29uZnR5cGUgKmNvbmYgPSAoc3RydWN0IG15X2NvbmZ0eXBlICopIGNvbmZpZzsKKworCXN3aXRjaCAoY29uZikgeworCQljYXNlIFBMQVRGT1JNX1hfUFVMTF9VUDoKKwkJLi4uCisJCX0KKwl9Cit9CisKK3N0YXRpYyBpbnQgZm9vX3Bpbl9jb25maWdfZ3JvdXBfZ2V0IChzdHJ1Y3QgcGluY3RybF9kZXYgKnBjdGxkZXYsCisJCSAgICB1bnNpZ25lZCBzZWxlY3RvciwKKwkJICAgIHVuc2lnbmVkIGxvbmcgKmNvbmZpZykKK3sKKwkuLi4KK30KKworc3RhdGljIGludCBmb29fcGluX2NvbmZpZ19ncm91cF9zZXQgKHN0cnVjdCBwaW5jdHJsX2RldiAqcGN0bGRldiwKKwkJICAgIHVuc2lnbmVkIHNlbGVjdG9yLAorCQkgICAgdW5zaWduZWQgbG9uZyBjb25maWcpCit7CisJLi4uCit9CisKK3N0YXRpYyBzdHJ1Y3QgcGluY29uZl9vcHMgZm9vX3Bjb25mX29wcyA9IHsKKwkucGluX2NvbmZpZ19nZXQgPSBmb29fcGluX2NvbmZpZ19nZXQsCisJLnBpbl9jb25maWdfc2V0ID0gZm9vX3Bpbl9jb25maWdfc2V0LAorCS5waW5fY29uZmlnX2dyb3VwX2dldCA9IGZvb19waW5fY29uZmlnX2dyb3VwX2dldCwKKwkucGluX2NvbmZpZ19ncm91cF9zZXQgPSBmb29fcGluX2NvbmZpZ19ncm91cF9zZXQsCit9OworCisvKiBQaW4gY29uZmlnIG9wZXJhdGlvbnMgYXJlIGhhbmRsZWQgYnkgc29tZSBwaW4gY29udHJvbGxlciAqLworc3RhdGljIHN0cnVjdCBwaW5jdHJsX2Rlc2MgZm9vX2Rlc2MgPSB7CisJLi4uCisJLmNvbmZvcHMgPSAmZm9vX3Bjb25mX29wcywKK307CisKK1NpbmNlIHNvbWUgY29udHJvbGxlcnMgaGF2ZSBzcGVjaWFsIGxvZ2ljIGZvciBoYW5kbGluZyBlbnRpcmUgZ3JvdXBzIG9mIHBpbnMKK3RoZXkgY2FuIGV4cGxvaXQgdGhlIHNwZWNpYWwgd2hvbGUtZ3JvdXAgcGluIGNvbnRyb2wgZnVuY3Rpb24uIFRoZQorcGluX2NvbmZpZ19ncm91cF9zZXQoKSBjYWxsYmFjayBpcyBhbGxvd2VkIHRvIHJldHVybiB0aGUgZXJyb3IgY29kZSAtRUFHQUlOLAorZm9yIGdyb3VwcyBpdCBkb2VzIG5vdCB3YW50IHRvIGhhbmRsZSwgb3IgaWYgaXQganVzdCB3YW50cyB0byBkbyBzb21lCitncm91cC1sZXZlbCBoYW5kbGluZyBhbmQgdGhlbiBmYWxsIHRocm91Z2ggdG8gaXRlcmF0ZSBvdmVyIGFsbCBwaW5zLCBpbiB3aGljaAorY2FzZSBlYWNoIGluZGl2aWR1YWwgcGluIHdpbGwgYmUgdHJlYXRlZCBieSBzZXBhcmF0ZSBwaW5fY29uZmlnX3NldCgpIGNhbGxzIGFzCit3ZWxsLgorCisKK0ludGVyYWN0aW9uIHdpdGggdGhlIEdQSU8gc3Vic3lzdGVtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgR1BJTyBkcml2ZXJzIG1heSB3YW50IHRvIHBlcmZvcm0gb3BlcmF0aW9ucyBvZiB2YXJpb3VzIHR5cGVzIG9uIHRoZSBzYW1lCitwaHlzaWNhbCBwaW5zIHRoYXQgYXJlIGFsc28gcmVnaXN0ZXJlZCBhcyBwaW4gY29udHJvbGxlciBwaW5zLgorCitGaXJzdCBhbmQgZm9yZW1vc3QsIHRoZSB0d28gc3Vic3lzdGVtcyBjYW4gYmUgdXNlZCBhcyBjb21wbGV0ZWx5IG9ydGhvZ29uYWwsCitzZWUgdGhlIHNlY3Rpb24gbmFtZWQgInBpbiBjb250cm9sIHJlcXVlc3RzIGZyb20gZHJpdmVycyIgYW5kCisiZHJpdmVycyBuZWVkaW5nIGJvdGggcGluIGNvbnRyb2wgYW5kIEdQSU9zIiBiZWxvdyBmb3IgZGV0YWlscy4gQnV0IGluIHNvbWUKK3NpdHVhdGlvbnMgYSBjcm9zcy1zdWJzeXN0ZW0gbWFwcGluZyBiZXR3ZWVuIHBpbnMgYW5kIEdQSU9zIGlzIG5lZWRlZC4KKworU2luY2UgdGhlIHBpbiBjb250cm9sbGVyIHN1YnN5c3RlbSBoYXZlIGl0cyBwaW5zcGFjZSBsb2NhbCB0byB0aGUgcGluCitjb250cm9sbGVyIHdlIG5lZWQgYSBtYXBwaW5nIHNvIHRoYXQgdGhlIHBpbiBjb250cm9sIHN1YnN5c3RlbSBjYW4gZmlndXJlIG91dAord2hpY2ggcGluIGNvbnRyb2xsZXIgaGFuZGxlcyBjb250cm9sIG9mIGEgY2VydGFpbiBHUElPIHBpbi4gU2luY2UgYSBzaW5nbGUKK3BpbiBjb250cm9sbGVyIG1heSBiZSBtdXhpbmcgc2V2ZXJhbCBHUElPIHJhbmdlcyAodHlwaWNhbGx5IFNvQ3MgdGhhdCBoYXZlCitvbmUgc2V0IG9mIHBpbnMsIGJ1dCBpbnRlcm5hbGx5IHNldmVyYWwgR1BJTyBzaWxpY29uIGJsb2NrcywgZWFjaCBtb2RlbGxlZCBhcworYSBzdHJ1Y3QgZ3Bpb19jaGlwKSBhbnkgbnVtYmVyIG9mIEdQSU8gcmFuZ2VzIGNhbiBiZSBhZGRlZCB0byBhIHBpbiBjb250cm9sbGVyCitpbnN0YW5jZSBsaWtlIHRoaXM6CisKK3N0cnVjdCBncGlvX2NoaXAgY2hpcF9hOworc3RydWN0IGdwaW9fY2hpcCBjaGlwX2I7CisKK3N0YXRpYyBzdHJ1Y3QgcGluY3RybF9ncGlvX3JhbmdlIGdwaW9fcmFuZ2VfYSA9IHsKKwkubmFtZSA9ICJjaGlwIGEiLAorCS5pZCA9IDAsCisJLmJhc2UgPSAzMiwKKwkucGluX2Jhc2UgPSAzMiwKKwkubnBpbnMgPSAxNiwKKwkuZ2MgPSAmY2hpcF9hOworfTsKKworc3RhdGljIHN0cnVjdCBwaW5jdHJsX2dwaW9fcmFuZ2UgZ3Bpb19yYW5nZV9iID0geworCS5uYW1lID0gImNoaXAgYiIsCisJLmlkID0gMCwKKwkuYmFzZSA9IDQ4LAorCS5waW5fYmFzZSA9IDY0LAorCS5ucGlucyA9IDgsCisJLmdjID0gJmNoaXBfYjsKK307CisKK3sKKwlzdHJ1Y3QgcGluY3RybF9kZXYgKnBjdGw7CisJLi4uCisJcGluY3RybF9hZGRfZ3Bpb19yYW5nZShwY3RsLCAmZ3Bpb19yYW5nZV9hKTsKKwlwaW5jdHJsX2FkZF9ncGlvX3JhbmdlKHBjdGwsICZncGlvX3JhbmdlX2IpOworfQorCitTbyB0aGlzIGNvbXBsZXggc3lzdGVtIGhhcyBvbmUgcGluIGNvbnRyb2xsZXIgaGFuZGxpbmcgdHdvIGRpZmZlcmVudAorR1BJTyBjaGlwcy4gImNoaXAgYSIgaGFzIDE2IHBpbnMgYW5kICJjaGlwIGIiIGhhcyA4IHBpbnMuIFRoZSAiY2hpcCBhIiBhbmQKKyJjaGlwIGIiIGhhdmUgZGlmZmVyZW50IC5waW5fYmFzZSwgd2hpY2ggbWVhbnMgYSBzdGFydCBwaW4gbnVtYmVyIG9mIHRoZQorR1BJTyByYW5nZS4KKworVGhlIEdQSU8gcmFuZ2Ugb2YgImNoaXAgYSIgc3RhcnRzIGZyb20gdGhlIEdQSU8gYmFzZSBvZiAzMiBhbmQgYWN0dWFsCitwaW4gcmFuZ2UgYWxzbyBzdGFydHMgZnJvbSAzMi4gSG93ZXZlciAiY2hpcCBiIiBoYXMgZGlmZmVyZW50IHN0YXJ0aW5nCitvZmZzZXQgZm9yIHRoZSBHUElPIHJhbmdlIGFuZCBwaW4gcmFuZ2UuIFRoZSBHUElPIHJhbmdlIG9mICJjaGlwIGIiIHN0YXJ0cworZnJvbSBHUElPIG51bWJlciA0OCwgd2hpbGUgdGhlIHBpbiByYW5nZSBvZiAiY2hpcCBiIiBzdGFydHMgZnJvbSA2NC4KKworV2UgY2FuIGNvbnZlcnQgYSBncGlvIG51bWJlciB0byBhY3R1YWwgcGluIG51bWJlciB1c2luZyB0aGlzICJwaW5fYmFzZSIuCitUaGV5IGFyZSBtYXBwZWQgaW4gdGhlIGdsb2JhbCBHUElPIHBpbiBzcGFjZSBhdDoKKworY2hpcCBhOgorIC0gR1BJTyByYW5nZSA6IFszMiAuLiA0N10KKyAtIHBpbiByYW5nZSAgOiBbMzIgLi4gNDddCitjaGlwIGI6CisgLSBHUElPIHJhbmdlIDogWzQ4IC4uIDU1XQorIC0gcGluIHJhbmdlICA6IFs2NCAuLiA3MV0KKworVGhlIGFib3ZlIGV4YW1wbGVzIGFzc3VtZSB0aGUgbWFwcGluZyBiZXR3ZWVuIHRoZSBHUElPcyBhbmQgcGlucyBpcworbGluZWFyLiBJZiB0aGUgbWFwcGluZyBpcyBzcGFyc2Ugb3IgaGFwaGF6YXJkLCBhbiBhcnJheSBvZiBhcmJpdHJhcnkgcGluCitudW1iZXJzIGNhbiBiZSBlbmNvZGVkIGluIHRoZSByYW5nZSBsaWtlIHRoaXM6CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCByYW5nZV9waW5zW10gPSB7IDE0LCAxLCAyMiwgMTcsIDEwLCA4LCA2LCAyIH07CisKK3N0YXRpYyBzdHJ1Y3QgcGluY3RybF9ncGlvX3JhbmdlIGdwaW9fcmFuZ2UgPSB7CisJLm5hbWUgPSAiY2hpcCIsCisJLmlkID0gMCwKKwkuYmFzZSA9IDMyLAorCS5waW5zID0gJnJhbmdlX3BpbnMsCisJLm5waW5zID0gQVJSQVlfU0laRShyYW5nZV9waW5zKSwKKwkuZ2MgPSAmY2hpcDsKK307CisKK0luIHRoaXMgY2FzZSB0aGUgcGluX2Jhc2UgcHJvcGVydHkgd2lsbCBiZSBpZ25vcmVkLiBJZiB0aGUgbmFtZSBvZiBhIHBpbgorZ3JvdXAgaXMga25vd24sIHRoZSBwaW5zIGFuZCBucGlucyBlbGVtZW50cyBvZiB0aGUgYWJvdmUgc3RydWN0dXJlIGNhbiBiZQoraW5pdGlhbGlzZWQgdXNpbmcgdGhlIGZ1bmN0aW9uIHBpbmN0cmxfZ2V0X2dyb3VwX3BpbnMoKSwgZS5nLiBmb3IgcGluCitncm91cCAiZm9vIjoKKworcGluY3RybF9nZXRfZ3JvdXBfcGlucyhwY3RsLCAiZm9vIiwgJmdwaW9fcmFuZ2UucGlucywgJmdwaW9fcmFuZ2UubnBpbnMpOworCitXaGVuIEdQSU8tc3BlY2lmaWMgZnVuY3Rpb25zIGluIHRoZSBwaW4gY29udHJvbCBzdWJzeXN0ZW0gYXJlIGNhbGxlZCwgdGhlc2UKK3JhbmdlcyB3aWxsIGJlIHVzZWQgdG8gbG9vayB1cCB0aGUgYXBwcm9wcmlhdGUgcGluIGNvbnRyb2xsZXIgYnkgaW5zcGVjdGluZworYW5kIG1hdGNoaW5nIHRoZSBwaW4gdG8gdGhlIHBpbiByYW5nZXMgYWNyb3NzIGFsbCBjb250cm9sbGVycy4gV2hlbiBhCitwaW4gY29udHJvbGxlciBoYW5kbGluZyB0aGUgbWF0Y2hpbmcgcmFuZ2UgaXMgZm91bmQsIEdQSU8tc3BlY2lmaWMgZnVuY3Rpb25zCit3aWxsIGJlIGNhbGxlZCBvbiB0aGF0IHNwZWNpZmljIHBpbiBjb250cm9sbGVyLgorCitGb3IgYWxsIGZ1bmN0aW9uYWxpdGllcyBkZWFsaW5nIHdpdGggcGluIGJpYXNpbmcsIHBpbiBtdXhpbmcgZXRjLCB0aGUgcGluCitjb250cm9sbGVyIHN1YnN5c3RlbSB3aWxsIGxvb2sgdXAgdGhlIGNvcnJlc3BvbmRpbmcgcGluIG51bWJlciBmcm9tIHRoZSBwYXNzZWQKK2luIGdwaW8gbnVtYmVyLCBhbmQgdXNlIHRoZSByYW5nZSdzIGludGVybmFscyB0byByZXRyaWV2ZSBhIHBpbiBudW1iZXIuIEFmdGVyCit0aGF0LCB0aGUgc3Vic3lzdGVtIHBhc3NlcyBpdCBvbiB0byB0aGUgcGluIGNvbnRyb2wgZHJpdmVyLCBzbyB0aGUgZHJpdmVyCit3aWxsIGdldCBhIHBpbiBudW1iZXIgaW50byBpdHMgaGFuZGxlZCBudW1iZXIgcmFuZ2UuIEZ1cnRoZXIgaXQgaXMgYWxzbyBwYXNzZWQKK3RoZSByYW5nZSBJRCB2YWx1ZSwgc28gdGhhdCB0aGUgcGluIGNvbnRyb2xsZXIga25vd3Mgd2hpY2ggcmFuZ2UgaXQgc2hvdWxkCitkZWFsIHdpdGguCisKK0NhbGxpbmcgcGluY3RybF9hZGRfZ3Bpb19yYW5nZSBmcm9tIHBpbmN0cmwgZHJpdmVyIGlzIERFUFJFQ0FURUQuIFBsZWFzZSBzZWUKK3NlY3Rpb24gMi4xIG9mIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8udHh0IG9uIGhvdyB0byBiaW5kCitwaW5jdHJsIGFuZCBncGlvIGRyaXZlcnMuCisKKworUElOTVVYIGludGVyZmFjZXMKKz09PT09PT09PT09PT09PT09CisKK1RoZXNlIGNhbGxzIHVzZSB0aGUgcGlubXV4XyogbmFtaW5nIHByZWZpeC4gIE5vIG90aGVyIGNhbGxzIHNob3VsZCB1c2UgdGhhdAorcHJlZml4LgorCisKK1doYXQgaXMgcGlubXV4aW5nPworPT09PT09PT09PT09PT09PT09CisKK1BJTk1VWCwgYWxzbyBrbm93biBhcyBwYWRtdXgsIGJhbGxtdXgsIGFsdGVybmF0ZSBmdW5jdGlvbnMgb3IgbWlzc2lvbiBtb2RlcworaXMgYSB3YXkgZm9yIGNoaXAgdmVuZG9ycyBwcm9kdWNpbmcgc29tZSBraW5kIG9mIGVsZWN0cmljYWwgcGFja2FnZXMgdG8gdXNlCithIGNlcnRhaW4gcGh5c2ljYWwgcGluIChiYWxsLCBwYWQsIGZpbmdlciwgZXRjKSBmb3IgbXVsdGlwbGUgbXV0dWFsbHkgZXhjbHVzaXZlCitmdW5jdGlvbnMsIGRlcGVuZGluZyBvbiB0aGUgYXBwbGljYXRpb24uIEJ5ICJhcHBsaWNhdGlvbiIgaW4gdGhpcyBjb250ZXh0Cit3ZSB1c3VhbGx5IG1lYW4gYSB3YXkgb2Ygc29sZGVyaW5nIG9yIHdpcmluZyB0aGUgcGFja2FnZSBpbnRvIGFuIGVsZWN0cm9uaWMKK3N5c3RlbSwgZXZlbiB0aG91Z2ggdGhlIGZyYW1ld29yayBtYWtlcyBpdCBwb3NzaWJsZSB0byBhbHNvIGNoYW5nZSB0aGUgZnVuY3Rpb24KK2F0IHJ1bnRpbWUuCisKK0hlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIFBHQSAoUGluIEdyaWQgQXJyYXkpIGNoaXAgc2VlbiBmcm9tIHVuZGVybmVhdGg6CisKKyAgICAgICAgQSAgIEIgICBDICAgRCAgIEUgICBGICAgRyAgIEgKKyAgICAgICstLS0rCisgICA4ICB8IG8gfCBvICAgbyAgIG8gICBvICAgbyAgIG8gICBvCisgICAgICB8ICAgfAorICAgNyAgfCBvIHwgbyAgIG8gICBvICAgbyAgIG8gICBvICAgbworICAgICAgfCAgIHwKKyAgIDYgIHwgbyB8IG8gICBvICAgbyAgIG8gICBvICAgbyAgIG8KKyAgICAgICstLS0rLS0tKworICAgNSAgfCBvIHwgbyB8IG8gICBvICAgbyAgIG8gICBvICAgbworICAgICAgKy0tLSstLS0rICAgICAgICAgICAgICAgKy0tLSsKKyAgIDQgICAgbyAgIG8gICBvICAgbyAgIG8gICBvIHwgbyB8IG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICB8CisgICAzICAgIG8gICBvICAgbyAgIG8gICBvICAgbyB8IG8gfCBvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgfAorICAgMiAgICBvICAgbyAgIG8gICBvICAgbyAgIG8gfCBvIHwgbworICAgICAgKy0tLS0tLS0rLS0tLS0tLSstLS0tLS0tKy0tLSstLS0rCisgICAxICB8IG8gICBvIHwgbyAgIG8gfCBvICAgbyB8IG8gfCBvIHwKKyAgICAgICstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSstLS0rLS0tKworCitUaGlzIGlzIG5vdCB0ZXRyaXMuIFRoZSBnYW1lIHRvIHRoaW5rIG9mIGlzIGNoZXNzLiBOb3QgYWxsIFBHQS9CR0EgcGFja2FnZXMKK2FyZSBjaGVzc2JvYXJkLWxpa2UsIGJpZyBvbmVzIGhhdmUgImhvbGVzIiBpbiBzb21lIGFycmFuZ2VtZW50IGFjY29yZGluZyB0bworZGlmZmVyZW50IGRlc2lnbiBwYXR0ZXJucywgYnV0IHdlJ3JlIHVzaW5nIHRoaXMgYXMgYSBzaW1wbGUgZXhhbXBsZS4gT2YgdGhlCitwaW5zIHlvdSBzZWUgc29tZSB3aWxsIGJlIHRha2VuIGJ5IHRoaW5ncyBsaWtlIGEgZmV3IFZDQyBhbmQgR05EIHRvIGZlZWQgcG93ZXIKK3RvIHRoZSBjaGlwLCBhbmQgcXVpdGUgYSBmZXcgd2lsbCBiZSB0YWtlbiBieSBsYXJnZSBwb3J0cyBsaWtlIGFuIGV4dGVybmFsCittZW1vcnkgaW50ZXJmYWNlLiBUaGUgcmVtYWluaW5nIHBpbnMgd2lsbCBvZnRlbiBiZSBzdWJqZWN0IHRvIHBpbiBtdWx0aXBsZXhpbmcuCisKK1RoZSBleGFtcGxlIDh4OCBQR0EgcGFja2FnZSBhYm92ZSB3aWxsIGhhdmUgcGluIG51bWJlcnMgMCB0aHJvdWdoIDYzIGFzc2lnbmVkCit0byBpdHMgcGh5c2ljYWwgcGlucy4gSXQgd2lsbCBuYW1lIHRoZSBwaW5zIHsgQTEsIEEyLCBBMyAuLi4gSDYsIEg3LCBIOCB9IHVzaW5nCitwaW5jdHJsX3JlZ2lzdGVyX3BpbnMoKSBhbmQgYSBzdWl0YWJsZSBkYXRhIHNldCBhcyBzaG93biBlYXJsaWVyLgorCitJbiB0aGlzIDh4OCBCR0EgcGFja2FnZSB0aGUgcGlucyB7IEE4LCBBNywgQTYsIEE1IH0gY2FuIGJlIHVzZWQgYXMgYW4gU1BJIHBvcnQKKyh0aGVzZSBhcmUgZm91ciBwaW5zOiBDTEssIFJYRCwgVFhELCBGUk0pLiBJbiB0aGF0IGNhc2UsIHBpbiBCNSBjYW4gYmUgdXNlZCBhcworc29tZSBnZW5lcmFsLXB1cnBvc2UgR1BJTyBwaW4uIEhvd2V2ZXIsIGluIGFub3RoZXIgc2V0dGluZywgcGlucyB7IEE1LCBCNSB9IGNhbgorYmUgdXNlZCBhcyBhbiBJMkMgcG9ydCAodGhlc2UgYXJlIGp1c3QgdHdvIHBpbnM6IFNDTCwgU0RBKS4gTmVlZGxlc3MgdG8gc2F5LAord2UgY2Fubm90IHVzZSB0aGUgU1BJIHBvcnQgYW5kIEkyQyBwb3J0IGF0IHRoZSBzYW1lIHRpbWUuIEhvd2V2ZXIgaW4gdGhlIGluc2lkZQorb2YgdGhlIHBhY2thZ2UgdGhlIHNpbGljb24gcGVyZm9ybWluZyB0aGUgU1BJIGxvZ2ljIGNhbiBhbHRlcm5hdGl2ZWx5IGJlIHJvdXRlZAorb3V0IG9uIHBpbnMgeyBHNCwgRzMsIEcyLCBHMSB9LgorCitPbiB0aGUgYm90dG9tIHJvdyBhdCB7IEExLCBCMSwgQzEsIEQxLCBFMSwgRjEsIEcxLCBIMSB9IHdlIGhhdmUgc29tZXRoaW5nCitzcGVjaWFsIC0gaXQncyBhbiBleHRlcm5hbCBNTUMgYnVzIHRoYXQgY2FuIGJlIDIsIDQgb3IgOCBiaXRzIHdpZGUsIGFuZCBpdCB3aWxsCitjb25zdW1lIDIsIDQgb3IgOCBwaW5zIHJlc3BlY3RpdmVseSwgc28gZWl0aGVyIHsgQTEsIEIxIH0gYXJlIHRha2VuIG9yCit7IEExLCBCMSwgQzEsIEQxIH0gb3IgYWxsIG9mIHRoZW0uIElmIHdlIHVzZSBhbGwgOCBiaXRzLCB3ZSBjYW5ub3QgdXNlIHRoZSBTUEkKK3BvcnQgb24gcGlucyB7IEc0LCBHMywgRzIsIEcxIH0gb2YgY291cnNlLgorCitUaGlzIHdheSB0aGUgc2lsaWNvbiBibG9ja3MgcHJlc2VudCBpbnNpZGUgdGhlIGNoaXAgY2FuIGJlIG11bHRpcGxleGVkICJtdXhlZCIKK291dCBvbiBkaWZmZXJlbnQgcGluIHJhbmdlcy4gT2Z0ZW4gY29udGVtcG9yYXJ5IFNvQyAoc3lzdGVtcyBvbiBjaGlwKSB3aWxsCitjb250YWluIHNldmVyYWwgSTJDLCBTUEksIFNESU8vTU1DLCBldGMgc2lsaWNvbiBibG9ja3MgdGhhdCBjYW4gYmUgcm91dGVkIHRvCitkaWZmZXJlbnQgcGlucyBieSBwaW5tdXggc2V0dGluZ3MuCisKK1NpbmNlIGdlbmVyYWwtcHVycG9zZSBJL08gcGlucyAoR1BJTykgYXJlIHR5cGljYWxseSBhbHdheXMgaW4gc2hvcnRhZ2UsIGl0IGlzCitjb21tb24gdG8gYmUgYWJsZSB0byB1c2UgYWxtb3N0IGFueSBwaW4gYXMgYSBHUElPIHBpbiBpZiBpdCBpcyBub3QgY3VycmVudGx5CitpbiB1c2UgYnkgc29tZSBvdGhlciBJL08gcG9ydC4KKworCitQaW5tdXggY29udmVudGlvbnMKKz09PT09PT09PT09PT09PT09PQorCitUaGUgcHVycG9zZSBvZiB0aGUgcGlubXV4IGZ1bmN0aW9uYWxpdHkgaW4gdGhlIHBpbiBjb250cm9sbGVyIHN1YnN5c3RlbSBpcyB0bworYWJzdHJhY3QgYW5kIHByb3ZpZGUgcGlubXV4IHNldHRpbmdzIHRvIHRoZSBkZXZpY2VzIHlvdSBjaG9vc2UgdG8gaW5zdGFudGlhdGUKK2luIHlvdXIgbWFjaGluZSBjb25maWd1cmF0aW9uLiBJdCBpcyBpbnNwaXJlZCBieSB0aGUgY2xrLCBHUElPIGFuZCByZWd1bGF0b3IKK3N1YnN5c3RlbXMsIHNvIGRldmljZXMgd2lsbCByZXF1ZXN0IHRoZWlyIG11eCBzZXR0aW5nLCBidXQgaXQncyBhbHNvIHBvc3NpYmxlCit0byByZXF1ZXN0IGEgc2luZ2xlIHBpbiBmb3IgZS5nLiBHUElPLgorCitEZWZpbml0aW9uczoKKworLSBGVU5DVElPTlMgY2FuIGJlIHN3aXRjaGVkIGluIGFuZCBvdXQgYnkgYSBkcml2ZXIgcmVzaWRpbmcgd2l0aCB0aGUgcGluCisgIGNvbnRyb2wgc3Vic3lzdGVtIGluIHRoZSBkcml2ZXJzL3BpbmN0cmwvKiBkaXJlY3Rvcnkgb2YgdGhlIGtlcm5lbC4gVGhlCisgIHBpbiBjb250cm9sIGRyaXZlciBrbm93cyB0aGUgcG9zc2libGUgZnVuY3Rpb25zLiBJbiB0aGUgZXhhbXBsZSBhYm92ZSB5b3UgY2FuCisgIGlkZW50aWZ5IHRocmVlIHBpbm11eCBmdW5jdGlvbnMsIG9uZSBmb3Igc3BpLCBvbmUgZm9yIGkyYyBhbmQgb25lIGZvciBtbWMuCisKKy0gRlVOQ1RJT05TIGFyZSBhc3N1bWVkIHRvIGJlIGVudW1lcmFibGUgZnJvbSB6ZXJvIGluIGEgb25lLWRpbWVuc2lvbmFsIGFycmF5LgorICBJbiB0aGlzIGNhc2UgdGhlIGFycmF5IGNvdWxkIGJlIHNvbWV0aGluZyBsaWtlOiB7IHNwaTAsIGkyYzAsIG1tYzAgfQorICBmb3IgdGhlIHRocmVlIGF2YWlsYWJsZSBmdW5jdGlvbnMuCisKKy0gRlVOQ1RJT05TIGhhdmUgUElOIEdST1VQUyBhcyBkZWZpbmVkIG9uIHRoZSBnZW5lcmljIGxldmVsIC0gc28gYSBjZXJ0YWluCisgIGZ1bmN0aW9uIGlzICphbHdheXMqIGFzc29jaWF0ZWQgd2l0aCBhIGNlcnRhaW4gc2V0IG9mIHBpbiBncm91cHMsIGNvdWxkCisgIGJlIGp1c3QgYSBzaW5nbGUgb25lLCBidXQgY291bGQgYWxzbyBiZSBtYW55LiBJbiB0aGUgZXhhbXBsZSBhYm92ZSB0aGUKKyAgZnVuY3Rpb24gaTJjIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGlucyB7IEE1LCBCNSB9LCBlbnVtZXJhdGVkIGFzCisgIHsgMjQsIDI1IH0gaW4gdGhlIGNvbnRyb2xsZXIgcGluIHNwYWNlLgorCisgIFRoZSBGdW5jdGlvbiBzcGkgaXMgYXNzb2NpYXRlZCB3aXRoIHBpbiBncm91cHMgeyBBOCwgQTcsIEE2LCBBNSB9CisgIGFuZCB7IEc0LCBHMywgRzIsIEcxIH0sIHdoaWNoIGFyZSBlbnVtZXJhdGVkIGFzIHsgMCwgOCwgMTYsIDI0IH0gYW5kCisgIHsgMzgsIDQ2LCA1NCwgNjIgfSByZXNwZWN0aXZlbHkuCisKKyAgR3JvdXAgbmFtZXMgbXVzdCBiZSB1bmlxdWUgcGVyIHBpbiBjb250cm9sbGVyLCBubyB0d28gZ3JvdXBzIG9uIHRoZSBzYW1lCisgIGNvbnRyb2xsZXIgbWF5IGhhdmUgdGhlIHNhbWUgbmFtZS4KKworLSBUaGUgY29tYmluYXRpb24gb2YgYSBGVU5DVElPTiBhbmQgYSBQSU4gR1JPVVAgZGV0ZXJtaW5lIGEgY2VydGFpbiBmdW5jdGlvbgorICBmb3IgYSBjZXJ0YWluIHNldCBvZiBwaW5zLiBUaGUga25vd2xlZGdlIG9mIHRoZSBmdW5jdGlvbnMgYW5kIHBpbiBncm91cHMKKyAgYW5kIHRoZWlyIG1hY2hpbmUtc3BlY2lmaWMgcGFydGljdWxhcnMgYXJlIGtlcHQgaW5zaWRlIHRoZSBwaW5tdXggZHJpdmVyLAorICBmcm9tIHRoZSBvdXRzaWRlIG9ubHkgdGhlIGVudW1lcmF0b3JzIGFyZSBrbm93biwgYW5kIHRoZSBkcml2ZXIgY29yZSBjYW46CisKKyAgLSBSZXF1ZXN0IHRoZSBuYW1lIG9mIGEgZnVuY3Rpb24gd2l0aCBhIGNlcnRhaW4gc2VsZWN0b3IgKD49IDApCisgIC0gQSBsaXN0IG9mIGdyb3VwcyBhc3NvY2lhdGVkIHdpdGggYSBjZXJ0YWluIGZ1bmN0aW9uCisgIC0gUmVxdWVzdCB0aGF0IGEgY2VydGFpbiBncm91cCBpbiB0aGF0IGxpc3QgdG8gYmUgYWN0aXZhdGVkIGZvciBhIGNlcnRhaW4KKyAgICBmdW5jdGlvbgorCisgIEFzIGFscmVhZHkgZGVzY3JpYmVkIGFib3ZlLCBwaW4gZ3JvdXBzIGFyZSBpbiB0dXJuIHNlbGYtZGVzY3JpcHRpdmUsIHNvCisgIHRoZSBjb3JlIHdpbGwgcmV0cmlldmUgdGhlIGFjdHVhbCBwaW4gcmFuZ2UgaW4gYSBjZXJ0YWluIGdyb3VwIGZyb20gdGhlCisgIGRyaXZlci4KKworLSBGVU5DVElPTlMgYW5kIEdST1VQUyBvbiBhIGNlcnRhaW4gUElOIENPTlRST0xMRVIgYXJlIE1BUFBFRCB0byBhIGNlcnRhaW4KKyAgZGV2aWNlIGJ5IHRoZSBib2FyZCBmaWxlLCBkZXZpY2UgdHJlZSBvciBzaW1pbGFyIG1hY2hpbmUgc2V0dXAgY29uZmlndXJhdGlvbgorICBtZWNoYW5pc20sIHNpbWlsYXIgdG8gaG93IHJlZ3VsYXRvcnMgYXJlIGNvbm5lY3RlZCB0byBkZXZpY2VzLCB1c3VhbGx5IGJ5CisgIG5hbWUuIERlZmluaW5nIGEgcGluIGNvbnRyb2xsZXIsIGZ1bmN0aW9uIGFuZCBncm91cCB0aHVzIHVuaXF1ZWx5IGlkZW50aWZ5CisgIHRoZSBzZXQgb2YgcGlucyB0byBiZSB1c2VkIGJ5IGEgY2VydGFpbiBkZXZpY2UuIChJZiBvbmx5IG9uZSBwb3NzaWJsZSBncm91cAorICBvZiBwaW5zIGlzIGF2YWlsYWJsZSBmb3IgdGhlIGZ1bmN0aW9uLCBubyBncm91cCBuYW1lIG5lZWQgdG8gYmUgc3VwcGxpZWQgLQorICB0aGUgY29yZSB3aWxsIHNpbXBseSBzZWxlY3QgdGhlIGZpcnN0IGFuZCBvbmx5IGdyb3VwIGF2YWlsYWJsZS4pCisKKyAgSW4gdGhlIGV4YW1wbGUgY2FzZSB3ZSBjYW4gZGVmaW5lIHRoYXQgdGhpcyBwYXJ0aWN1bGFyIG1hY2hpbmUgc2hhbGwKKyAgdXNlIGRldmljZSBzcGkwIHdpdGggcGlubXV4IGZ1bmN0aW9uIGZzcGkwIGdyb3VwIGdzcGkwIGFuZCBpMmMwIG9uIGZ1bmN0aW9uCisgIGZpMmMwIGdyb3VwIGdpMmMwLCBvbiB0aGUgcHJpbWFyeSBwaW4gY29udHJvbGxlciwgd2UgZ2V0IG1hcHBpbmdzCisgIGxpa2UgdGhlc2U6CisKKyAgeworICAgIHsibWFwLXNwaTAiLCBzcGkwLCBwaW5jdHJsMCwgZnNwaTAsIGdzcGkwfSwKKyAgICB7Im1hcC1pMmMwIiwgaTJjMCwgcGluY3RybDAsIGZpMmMwLCBnaTJjMH0KKyAgfQorCisgIEV2ZXJ5IG1hcCBtdXN0IGJlIGFzc2lnbmVkIGEgc3RhdGUgbmFtZSwgcGluIGNvbnRyb2xsZXIsIGRldmljZSBhbmQKKyAgZnVuY3Rpb24uIFRoZSBncm91cCBpcyBub3QgY29tcHVsc29yeSAtIGlmIGl0IGlzIG9taXR0ZWQgdGhlIGZpcnN0IGdyb3VwCisgIHByZXNlbnRlZCBieSB0aGUgZHJpdmVyIGFzIGFwcGxpY2FibGUgZm9yIHRoZSBmdW5jdGlvbiB3aWxsIGJlIHNlbGVjdGVkLAorICB3aGljaCBpcyB1c2VmdWwgZm9yIHNpbXBsZSBjYXNlcy4KKworICBJdCBpcyBwb3NzaWJsZSB0byBtYXAgc2V2ZXJhbCBncm91cHMgdG8gdGhlIHNhbWUgY29tYmluYXRpb24gb2YgZGV2aWNlLAorICBwaW4gY29udHJvbGxlciBhbmQgZnVuY3Rpb24uIFRoaXMgaXMgZm9yIGNhc2VzIHdoZXJlIGEgY2VydGFpbiBmdW5jdGlvbiBvbgorICBhIGNlcnRhaW4gcGluIGNvbnRyb2xsZXIgbWF5IHVzZSBkaWZmZXJlbnQgc2V0cyBvZiBwaW5zIGluIGRpZmZlcmVudAorICBjb25maWd1cmF0aW9ucy4KKworLSBQSU5TIGZvciBhIGNlcnRhaW4gRlVOQ1RJT04gdXNpbmcgYSBjZXJ0YWluIFBJTiBHUk9VUCBvbiBhIGNlcnRhaW4KKyAgUElOIENPTlRST0xMRVIgYXJlIHByb3ZpZGVkIG9uIGEgZmlyc3QtY29tZSBmaXJzdC1zZXJ2ZSBiYXNpcywgc28gaWYgc29tZQorICBvdGhlciBkZXZpY2UgbXV4IHNldHRpbmcgb3IgR1BJTyBwaW4gcmVxdWVzdCBoYXMgYWxyZWFkeSB0YWtlbiB5b3VyIHBoeXNpY2FsCisgIHBpbiwgeW91IHdpbGwgYmUgZGVuaWVkIHRoZSB1c2Ugb2YgaXQuIFRvIGdldCAoYWN0aXZhdGUpIGEgbmV3IHNldHRpbmcsIHRoZQorICBvbGQgb25lIGhhcyB0byBiZSBwdXQgKGRlYWN0aXZhdGVkKSBmaXJzdC4KKworU29tZXRpbWVzIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBoYXJkd2FyZSByZWdpc3RlcnMgd2lsbCBiZSBvcmllbnRlZCBhcm91bmQKK3BhZHMgKG9yICJmaW5nZXJzIikgcmF0aGVyIHRoYW4gcGlucyAtIHRoZXNlIGFyZSB0aGUgc29sZGVyaW5nIHN1cmZhY2VzIG9uIHRoZQorc2lsaWNvbiBpbnNpZGUgdGhlIHBhY2thZ2UsIGFuZCBtYXkgb3IgbWF5IG5vdCBtYXRjaCB0aGUgYWN0dWFsIG51bWJlciBvZgorcGlucy9iYWxscyB1bmRlcm5lYXRoIHRoZSBjYXBzdWxlLiBQaWNrIHNvbWUgZW51bWVyYXRpb24gdGhhdCBtYWtlcyBzZW5zZSB0bworeW91LiBEZWZpbmUgZW51bWVyYXRvcnMgb25seSBmb3IgdGhlIHBpbnMgeW91IGNhbiBjb250cm9sIGlmIHRoYXQgbWFrZXMgc2Vuc2UuCisKK0Fzc3VtcHRpb25zOgorCitXZSBhc3N1bWUgdGhhdCB0aGUgbnVtYmVyIG9mIHBvc3NpYmxlIGZ1bmN0aW9uIG1hcHMgdG8gcGluIGdyb3VwcyBpcyBsaW1pdGVkIGJ5Cit0aGUgaGFyZHdhcmUuIEkuZS4gd2UgYXNzdW1lIHRoYXQgdGhlcmUgaXMgbm8gc3lzdGVtIHdoZXJlIGFueSBmdW5jdGlvbiBjYW4gYmUKK21hcHBlZCB0byBhbnkgcGluLCBsaWtlIGluIGEgcGhvbmUgZXhjaGFuZ2UuIFNvIHRoZSBhdmFpbGFibGUgcGluIGdyb3VwcyBmb3IKK2EgY2VydGFpbiBmdW5jdGlvbiB3aWxsIGJlIGxpbWl0ZWQgdG8gYSBmZXcgY2hvaWNlcyAoc2F5IHVwIHRvIGVpZ2h0IG9yIHNvKSwKK25vdCBodW5kcmVkcyBvciBhbnkgYW1vdW50IG9mIGNob2ljZXMuIFRoaXMgaXMgdGhlIGNoYXJhY3RlcmlzdGljIHdlIGhhdmUgZm91bmQKK2J5IGluc3BlY3RpbmcgYXZhaWxhYmxlIHBpbm11eCBoYXJkd2FyZSwgYW5kIGEgbmVjZXNzYXJ5IGFzc3VtcHRpb24gc2luY2Ugd2UKK2V4cGVjdCBwaW5tdXggZHJpdmVycyB0byBwcmVzZW50ICphbGwqIHBvc3NpYmxlIGZ1bmN0aW9uIHZzIHBpbiBncm91cCBtYXBwaW5ncwordG8gdGhlIHN1YnN5c3RlbS4KKworCitQaW5tdXggZHJpdmVycworPT09PT09PT09PT09PT0KKworVGhlIHBpbm11eCBjb3JlIHRha2VzIGNhcmUgb2YgcHJldmVudGluZyBjb25mbGljdHMgb24gcGlucyBhbmQgY2FsbGluZwordGhlIHBpbiBjb250cm9sbGVyIGRyaXZlciB0byBleGVjdXRlIGRpZmZlcmVudCBzZXR0aW5ncy4KKworSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBwaW5tdXggZHJpdmVyIHRvIGltcG9zZSBmdXJ0aGVyIHJlc3RyaWN0aW9ucworKHNheSBmb3IgZXhhbXBsZSBpbmZlciBlbGVjdHJvbmljIGxpbWl0YXRpb25zIGR1ZSB0byBsb2FkLCBldGMuKSB0byBkZXRlcm1pbmUKK3doZXRoZXIgb3Igbm90IHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24gY2FuIGFjdHVhbGx5IGJlIGFsbG93ZWQsIGFuZCBpbiBjYXNlIGl0CitpcyBwb3NzaWJsZSB0byBwZXJmb3JtIHRoZSByZXF1ZXN0ZWQgbXV4IHNldHRpbmcsIHBva2UgdGhlIGhhcmR3YXJlIHNvIHRoYXQKK3RoaXMgaGFwcGVucy4KKworUGlubXV4IGRyaXZlcnMgYXJlIHJlcXVpcmVkIHRvIHN1cHBseSBhIGZldyBjYWxsYmFjayBmdW5jdGlvbnMsIHNvbWUgYXJlCitvcHRpb25hbC4gVXN1YWxseSB0aGUgc2V0X211eCgpIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkLCB3cml0aW5nIHZhbHVlcyBpbnRvCitzb21lIGNlcnRhaW4gcmVnaXN0ZXJzIHRvIGFjdGl2YXRlIGEgY2VydGFpbiBtdXggc2V0dGluZyBmb3IgYSBjZXJ0YWluIHBpbi4KKworQSBzaW1wbGUgZHJpdmVyIGZvciB0aGUgYWJvdmUgZXhhbXBsZSB3aWxsIHdvcmsgYnkgc2V0dGluZyBiaXRzIDAsIDEsIDIsIDMgb3IgNAoraW50byBzb21lIHJlZ2lzdGVyIG5hbWVkIE1VWCB0byBzZWxlY3QgYSBjZXJ0YWluIGZ1bmN0aW9uIHdpdGggYSBjZXJ0YWluCitncm91cCBvZiBwaW5zIHdvdWxkIHdvcmsgc29tZXRoaW5nIGxpa2UgdGhpczoKKworI2luY2x1ZGUgPGxpbnV4L3BpbmN0cmwvcGluY3RybC5oPgorI2luY2x1ZGUgPGxpbnV4L3BpbmN0cmwvcGlubXV4Lmg+CisKK3N0cnVjdCBmb29fZ3JvdXAgeworCWNvbnN0IGNoYXIgKm5hbWU7CisJY29uc3QgdW5zaWduZWQgaW50ICpwaW5zOworCWNvbnN0IHVuc2lnbmVkIG51bV9waW5zOworfTsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNwaTBfMF9waW5zW10gPSB7IDAsIDgsIDE2LCAyNCB9Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNwaTBfMV9waW5zW10gPSB7IDM4LCA0NiwgNTQsIDYyIH07CitzdGF0aWMgY29uc3QgdW5zaWduZWQgaTJjMF9waW5zW10gPSB7IDI0LCAyNSB9Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1tYzBfMV9waW5zW10gPSB7IDU2LCA1NyB9Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1tYzBfMl9waW5zW10gPSB7IDU4LCA1OSB9Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1tYzBfM19waW5zW10gPSB7IDYwLCA2MSwgNjIsIDYzIH07CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZm9vX2dyb3VwIGZvb19ncm91cHNbXSA9IHsKKwl7CisJCS5uYW1lID0gInNwaTBfMF9ncnAiLAorCQkucGlucyA9IHNwaTBfMF9waW5zLAorCQkubnVtX3BpbnMgPSBBUlJBWV9TSVpFKHNwaTBfMF9waW5zKSwKKwl9LAorCXsKKwkJLm5hbWUgPSAic3BpMF8xX2dycCIsCisJCS5waW5zID0gc3BpMF8xX3BpbnMsCisJCS5udW1fcGlucyA9IEFSUkFZX1NJWkUoc3BpMF8xX3BpbnMpLAorCX0sCisJeworCQkubmFtZSA9ICJpMmMwX2dycCIsCisJCS5waW5zID0gaTJjMF9waW5zLAorCQkubnVtX3BpbnMgPSBBUlJBWV9TSVpFKGkyYzBfcGlucyksCisJfSwKKwl7CisJCS5uYW1lID0gIm1tYzBfMV9ncnAiLAorCQkucGlucyA9IG1tYzBfMV9waW5zLAorCQkubnVtX3BpbnMgPSBBUlJBWV9TSVpFKG1tYzBfMV9waW5zKSwKKwl9LAorCXsKKwkJLm5hbWUgPSAibW1jMF8yX2dycCIsCisJCS5waW5zID0gbW1jMF8yX3BpbnMsCisJCS5udW1fcGlucyA9IEFSUkFZX1NJWkUobW1jMF8yX3BpbnMpLAorCX0sCisJeworCQkubmFtZSA9ICJtbWMwXzNfZ3JwIiwKKwkJLnBpbnMgPSBtbWMwXzNfcGlucywKKwkJLm51bV9waW5zID0gQVJSQVlfU0laRShtbWMwXzNfcGlucyksCisJfSwKK307CisKKworc3RhdGljIGludCBmb29fZ2V0X2dyb3Vwc19jb3VudChzdHJ1Y3QgcGluY3RybF9kZXYgKnBjdGxkZXYpCit7CisJcmV0dXJuIEFSUkFZX1NJWkUoZm9vX2dyb3Vwcyk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICpmb29fZ2V0X2dyb3VwX25hbWUoc3RydWN0IHBpbmN0cmxfZGV2ICpwY3RsZGV2LAorCQkJCSAgICAgICB1bnNpZ25lZCBzZWxlY3RvcikKK3sKKwlyZXR1cm4gZm9vX2dyb3Vwc1tzZWxlY3Rvcl0ubmFtZTsKK30KKworc3RhdGljIGludCBmb29fZ2V0X2dyb3VwX3BpbnMoc3RydWN0IHBpbmN0cmxfZGV2ICpwY3RsZGV2LCB1bnNpZ25lZCBzZWxlY3RvciwKKwkJCSAgICAgICB1bnNpZ25lZCAqKiBjb25zdCBwaW5zLAorCQkJICAgICAgIHVuc2lnbmVkICogY29uc3QgbnVtX3BpbnMpCit7CisJKnBpbnMgPSAodW5zaWduZWQgKikgZm9vX2dyb3Vwc1tzZWxlY3Rvcl0ucGluczsKKwkqbnVtX3BpbnMgPSBmb29fZ3JvdXBzW3NlbGVjdG9yXS5udW1fcGluczsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBwaW5jdHJsX29wcyBmb29fcGN0cmxfb3BzID0geworCS5nZXRfZ3JvdXBzX2NvdW50ID0gZm9vX2dldF9ncm91cHNfY291bnQsCisJLmdldF9ncm91cF9uYW1lID0gZm9vX2dldF9ncm91cF9uYW1lLAorCS5nZXRfZ3JvdXBfcGlucyA9IGZvb19nZXRfZ3JvdXBfcGlucywKK307CisKK3N0cnVjdCBmb29fcG14X2Z1bmMgeworCWNvbnN0IGNoYXIgKm5hbWU7CisJY29uc3QgY2hhciAqIGNvbnN0ICpncm91cHM7CisJY29uc3QgdW5zaWduZWQgbnVtX2dyb3VwczsKK307CisKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgc3BpMF9ncm91cHNbXSA9IHsgInNwaTBfMF9ncnAiLCAic3BpMF8xX2dycCIgfTsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgaTJjMF9ncm91cHNbXSA9IHsgImkyYzBfZ3JwIiB9Oworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBtbWMwX2dyb3Vwc1tdID0geyAibW1jMF8xX2dycCIsICJtbWMwXzJfZ3JwIiwKKwkJCQkJIm1tYzBfM19ncnAiIH07CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZm9vX3BteF9mdW5jIGZvb19mdW5jdGlvbnNbXSA9IHsKKwl7CisJCS5uYW1lID0gInNwaTAiLAorCQkuZ3JvdXBzID0gc3BpMF9ncm91cHMsCisJCS5udW1fZ3JvdXBzID0gQVJSQVlfU0laRShzcGkwX2dyb3VwcyksCisJfSwKKwl7CisJCS5uYW1lID0gImkyYzAiLAorCQkuZ3JvdXBzID0gaTJjMF9ncm91cHMsCisJCS5udW1fZ3JvdXBzID0gQVJSQVlfU0laRShpMmMwX2dyb3VwcyksCisJfSwKKwl7CisJCS5uYW1lID0gIm1tYzAiLAorCQkuZ3JvdXBzID0gbW1jMF9ncm91cHMsCisJCS5udW1fZ3JvdXBzID0gQVJSQVlfU0laRShtbWMwX2dyb3VwcyksCisJfSwKK307CisKK3N0YXRpYyBpbnQgZm9vX2dldF9mdW5jdGlvbnNfY291bnQoc3RydWN0IHBpbmN0cmxfZGV2ICpwY3RsZGV2KQoreworCXJldHVybiBBUlJBWV9TSVpFKGZvb19mdW5jdGlvbnMpOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqZm9vX2dldF9mbmFtZShzdHJ1Y3QgcGluY3RybF9kZXYgKnBjdGxkZXYsIHVuc2lnbmVkIHNlbGVjdG9yKQoreworCXJldHVybiBmb29fZnVuY3Rpb25zW3NlbGVjdG9yXS5uYW1lOworfQorCitzdGF0aWMgaW50IGZvb19nZXRfZ3JvdXBzKHN0cnVjdCBwaW5jdHJsX2RldiAqcGN0bGRldiwgdW5zaWduZWQgc2VsZWN0b3IsCisJCQkgIGNvbnN0IGNoYXIgKiBjb25zdCAqKmdyb3VwcywKKwkJCSAgdW5zaWduZWQgKiBjb25zdCBudW1fZ3JvdXBzKQoreworCSpncm91cHMgPSBmb29fZnVuY3Rpb25zW3NlbGVjdG9yXS5ncm91cHM7CisJKm51bV9ncm91cHMgPSBmb29fZnVuY3Rpb25zW3NlbGVjdG9yXS5udW1fZ3JvdXBzOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGZvb19zZXRfbXV4KHN0cnVjdCBwaW5jdHJsX2RldiAqcGN0bGRldiwgdW5zaWduZWQgc2VsZWN0b3IsCisJCXVuc2lnbmVkIGdyb3VwKQoreworCXU4IHJlZ2JpdCA9ICgxIDw8IHNlbGVjdG9yICsgZ3JvdXApOworCisJd3JpdGViKChyZWFkYihNVVgpfHJlZ2JpdCksIE1VWCkKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBwaW5tdXhfb3BzIGZvb19wbXhvcHMgPSB7CisJLmdldF9mdW5jdGlvbnNfY291bnQgPSBmb29fZ2V0X2Z1bmN0aW9uc19jb3VudCwKKwkuZ2V0X2Z1bmN0aW9uX25hbWUgPSBmb29fZ2V0X2ZuYW1lLAorCS5nZXRfZnVuY3Rpb25fZ3JvdXBzID0gZm9vX2dldF9ncm91cHMsCisJLnNldF9tdXggPSBmb29fc2V0X211eCwKKwkuc3RyaWN0ID0gdHJ1ZSwKK307CisKKy8qIFBpbm11eCBvcGVyYXRpb25zIGFyZSBoYW5kbGVkIGJ5IHNvbWUgcGluIGNvbnRyb2xsZXIgKi8KK3N0YXRpYyBzdHJ1Y3QgcGluY3RybF9kZXNjIGZvb19kZXNjID0geworCS4uLgorCS5wY3Rsb3BzID0gJmZvb19wY3RybF9vcHMsCisJLnBteG9wcyA9ICZmb29fcG14b3BzLAorfTsKKworSW4gdGhlIGV4YW1wbGUgYWN0aXZhdGluZyBtdXhpbmcgMCBhbmQgMSBhdCB0aGUgc2FtZSB0aW1lIHNldHRpbmcgYml0cworMCBhbmQgMSwgdXNlcyBvbmUgcGluIGluIGNvbW1vbiBzbyB0aGV5IHdvdWxkIGNvbGxpZGUuCisKK1RoZSBiZWF1dHkgb2YgdGhlIHBpbm11eCBzdWJzeXN0ZW0gaXMgdGhhdCBzaW5jZSBpdCBrZWVwcyB0cmFjayBvZiBhbGwKK3BpbnMgYW5kIHdobyBpcyB1c2luZyB0aGVtLCBpdCB3aWxsIGFscmVhZHkgaGF2ZSBkZW5pZWQgYW4gaW1wb3NzaWJsZQorcmVxdWVzdCBsaWtlIHRoYXQsIHNvIHRoZSBkcml2ZXIgZG9lcyBub3QgbmVlZCB0byB3b3JyeSBhYm91dCBzdWNoCit0aGluZ3MgLSB3aGVuIGl0IGdldHMgYSBzZWxlY3RvciBwYXNzZWQgaW4sIHRoZSBwaW5tdXggc3Vic3lzdGVtIG1ha2VzCitzdXJlIG5vIG90aGVyIGRldmljZSBvciBHUElPIGFzc2lnbm1lbnQgaXMgYWxyZWFkeSB1c2luZyB0aGUgc2VsZWN0ZWQKK3BpbnMuIFRodXMgYml0cyAwIGFuZCAxIGluIHRoZSBjb250cm9sIHJlZ2lzdGVyIHdpbGwgbmV2ZXIgYmUgc2V0IGF0IHRoZQorc2FtZSB0aW1lLgorCitBbGwgdGhlIGFib3ZlIGZ1bmN0aW9ucyBhcmUgbWFuZGF0b3J5IHRvIGltcGxlbWVudCBmb3IgYSBwaW5tdXggZHJpdmVyLgorCisKK1BpbiBjb250cm9sIGludGVyYWN0aW9uIHdpdGggdGhlIEdQSU8gc3Vic3lzdGVtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitOb3RlIHRoYXQgdGhlIGZvbGxvd2luZyBpbXBsaWVzIHRoYXQgdGhlIHVzZSBjYXNlIGlzIHRvIHVzZSBhIGNlcnRhaW4gcGluCitmcm9tIHRoZSBMaW51eCBrZXJuZWwgdXNpbmcgdGhlIEFQSSBpbiA8bGludXgvZ3Bpby5oPiB3aXRoIGdwaW9fcmVxdWVzdCgpCithbmQgc2ltaWxhciBmdW5jdGlvbnMuIFRoZXJlIGFyZSBjYXNlcyB3aGVyZSB5b3UgbWF5IGJlIHVzaW5nIHNvbWV0aGluZwordGhhdCB5b3VyIGRhdGFzaGVldCBjYWxscyAiR1BJTyBtb2RlIiwgYnV0IGFjdHVhbGx5IGlzIGp1c3QgYW4gZWxlY3RyaWNhbAorY29uZmlndXJhdGlvbiBmb3IgYSBjZXJ0YWluIGRldmljZS4gU2VlIHRoZSBzZWN0aW9uIGJlbG93IG5hbWVkCisiR1BJTyBtb2RlIHBpdGZhbGxzIiBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoaXMgc2NlbmFyaW8uCisKK1RoZSBwdWJsaWMgcGlubXV4IEFQSSBjb250YWlucyB0d28gZnVuY3Rpb25zIG5hbWVkIHBpbmN0cmxfcmVxdWVzdF9ncGlvKCkKK2FuZCBwaW5jdHJsX2ZyZWVfZ3BpbygpLiBUaGVzZSB0d28gZnVuY3Rpb25zIHNoYWxsICpPTkxZKiBiZSBjYWxsZWQgZnJvbQorZ3Bpb2xpYi1iYXNlZCBkcml2ZXJzIGFzIHBhcnQgb2YgdGhlaXIgZ3Bpb19yZXF1ZXN0KCkgYW5kCitncGlvX2ZyZWUoKSBzZW1hbnRpY3MuIExpa2V3aXNlIHRoZSBwaW5jdHJsX2dwaW9fZGlyZWN0aW9uX1tpbnB1dHxvdXRwdXRdCitzaGFsbCBvbmx5IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiByZXNwZWN0aXZlIGdwaW9fZGlyZWN0aW9uX1tpbnB1dHxvdXRwdXRdCitncGlvbGliIGltcGxlbWVudGF0aW9uLgorCitOT1RFIHRoYXQgcGxhdGZvcm1zIGFuZCBpbmRpdmlkdWFsIGRyaXZlcnMgc2hhbGwgKk5PVCogcmVxdWVzdCBHUElPIHBpbnMgdG8gYmUKK2NvbnRyb2xsZWQgZS5nLiBtdXhlZCBpbi4gSW5zdGVhZCwgaW1wbGVtZW50IGEgcHJvcGVyIGdwaW9saWIgZHJpdmVyIGFuZCBoYXZlCit0aGF0IGRyaXZlciByZXF1ZXN0IHByb3BlciBtdXhpbmcgYW5kIG90aGVyIGNvbnRyb2wgZm9yIGl0cyBwaW5zLgorCitUaGUgZnVuY3Rpb24gbGlzdCBjb3VsZCBiZWNvbWUgbG9uZywgZXNwZWNpYWxseSBpZiB5b3UgY2FuIGNvbnZlcnQgZXZlcnkKK2luZGl2aWR1YWwgcGluIGludG8gYSBHUElPIHBpbiBpbmRlcGVuZGVudCBvZiBhbnkgb3RoZXIgcGlucywgYW5kIHRoZW4gdHJ5Cit0aGUgYXBwcm9hY2ggdG8gZGVmaW5lIGV2ZXJ5IHBpbiBhcyBhIGZ1bmN0aW9uLgorCitJbiB0aGlzIGNhc2UsIHRoZSBmdW5jdGlvbiBhcnJheSB3b3VsZCBiZWNvbWUgNjQgZW50cmllcyBmb3IgZWFjaCBHUElPCitzZXR0aW5nIGFuZCB0aGVuIHRoZSBkZXZpY2UgZnVuY3Rpb25zLgorCitGb3IgdGhpcyByZWFzb24gdGhlcmUgYXJlIHR3byBmdW5jdGlvbnMgYSBwaW4gY29udHJvbCBkcml2ZXIgY2FuIGltcGxlbWVudAordG8gZW5hYmxlIG9ubHkgR1BJTyBvbiBhbiBpbmRpdmlkdWFsIHBpbjogLmdwaW9fcmVxdWVzdF9lbmFibGUoKSBhbmQKKy5ncGlvX2Rpc2FibGVfZnJlZSgpLgorCitUaGlzIGZ1bmN0aW9uIHdpbGwgcGFzcyBpbiB0aGUgYWZmZWN0ZWQgR1BJTyByYW5nZSBpZGVudGlmaWVkIGJ5IHRoZSBwaW4KK2NvbnRyb2xsZXIgY29yZSwgc28geW91IGtub3cgd2hpY2ggR1BJTyBwaW5zIGFyZSBiZWluZyBhZmZlY3RlZCBieSB0aGUgcmVxdWVzdAorb3BlcmF0aW9uLgorCitJZiB5b3VyIGRyaXZlciBuZWVkcyB0byBoYXZlIGFuIGluZGljYXRpb24gZnJvbSB0aGUgZnJhbWV3b3JrIG9mIHdoZXRoZXIgdGhlCitHUElPIHBpbiBzaGFsbCBiZSB1c2VkIGZvciBpbnB1dCBvciBvdXRwdXQgeW91IGNhbiBpbXBsZW1lbnQgdGhlCisuZ3Bpb19zZXRfZGlyZWN0aW9uKCkgZnVuY3Rpb24uIEFzIGRlc2NyaWJlZCB0aGlzIHNoYWxsIGJlIGNhbGxlZCBmcm9tIHRoZQorZ3Bpb2xpYiBkcml2ZXIgYW5kIHRoZSBhZmZlY3RlZCBHUElPIHJhbmdlLCBwaW4gb2Zmc2V0IGFuZCBkZXNpcmVkIGRpcmVjdGlvbgord2lsbCBiZSBwYXNzZWQgYWxvbmcgdG8gdGhpcyBmdW5jdGlvbi4KKworQWx0ZXJuYXRpdmVseSB0byB1c2luZyB0aGVzZSBzcGVjaWFsIGZ1bmN0aW9ucywgaXQgaXMgZnVsbHkgYWxsb3dlZCB0byB1c2UKK25hbWVkIGZ1bmN0aW9ucyBmb3IgZWFjaCBHUElPIHBpbiwgdGhlIHBpbmN0cmxfcmVxdWVzdF9ncGlvKCkgd2lsbCBhdHRlbXB0IHRvCitvYnRhaW4gdGhlIGZ1bmN0aW9uICJncGlvTiIgd2hlcmUgIk4iIGlzIHRoZSBnbG9iYWwgR1BJTyBwaW4gbnVtYmVyIGlmIG5vCitzcGVjaWFsIEdQSU8taGFuZGxlciBpcyByZWdpc3RlcmVkLgorCisKK0dQSU8gbW9kZSBwaXRmYWxscworPT09PT09PT09PT09PT09PT09CisKK0R1ZSB0byB0aGUgbmFtaW5nIGNvbnZlbnRpb25zIHVzZWQgYnkgaGFyZHdhcmUgZW5naW5lZXJzLCB3aGVyZSAiR1BJTyIKK2lzIHRha2VuIHRvIG1lYW4gZGlmZmVyZW50IHRoaW5ncyB0aGFuIHdoYXQgdGhlIGtlcm5lbCBkb2VzLCB0aGUgZGV2ZWxvcGVyCittYXkgYmUgY29uZnVzZWQgYnkgYSBkYXRhc2hlZXQgdGFsa2luZyBhYm91dCBhIHBpbiBiZWluZyBwb3NzaWJsZSB0byBzZXQKK2ludG8gIkdQSU8gbW9kZSIuIEl0IGFwcGVhcnMgdGhhdCB3aGF0IGhhcmR3YXJlIGVuZ2luZWVycyBtZWFuIHdpdGgKKyJHUElPIG1vZGUiIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgdXNlIGNhc2UgdGhhdCBpcyBpbXBsaWVkIGluIHRoZSBrZXJuZWwKK2ludGVyZmFjZSA8bGludXgvZ3Bpby5oPjogYSBwaW4gdGhhdCB5b3UgZ3JhYiBmcm9tIGtlcm5lbCBjb2RlIGFuZCB0aGVuCitlaXRoZXIgbGlzdGVuIGZvciBpbnB1dCBvciBkcml2ZSBoaWdoL2xvdyB0byBhc3NlcnQvZGVhc3NlcnQgc29tZQorZXh0ZXJuYWwgbGluZS4KKworUmF0aGVyIGhhcmR3YXJlIGVuZ2luZWVycyB0aGluayB0aGF0ICJHUElPIG1vZGUiIG1lYW5zIHRoYXQgeW91IGNhbgorc29mdHdhcmUtY29udHJvbCBhIGZldyBlbGVjdHJpY2FsIHByb3BlcnRpZXMgb2YgdGhlIHBpbiB0aGF0IHlvdSB3b3VsZAorbm90IGJlIGFibGUgdG8gY29udHJvbCBpZiB0aGUgcGluIHdhcyBpbiBzb21lIG90aGVyIG1vZGUsIHN1Y2ggYXMgbXV4ZWQgaW4KK2ZvciBhIGRldmljZS4KKworVGhlIEdQSU8gcG9ydGlvbnMgb2YgYSBwaW4gYW5kIGl0cyByZWxhdGlvbiB0byBhIGNlcnRhaW4gcGluIGNvbnRyb2xsZXIKK2NvbmZpZ3VyYXRpb24gYW5kIG11eGluZyBsb2dpYyBjYW4gYmUgY29uc3RydWN0ZWQgaW4gc2V2ZXJhbCB3YXlzLiBIZXJlCithcmUgdHdvIGV4YW1wbGVzOgorCisoQSkKKyAgICAgICAgICAgICAgICAgICAgICAgcGluIGNvbmZpZworICAgICAgICAgICAgICAgICAgICAgICBsb2dpYyByZWdzCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICArLSBTUEkKKyAgICAgUGh5c2ljYWwgcGlucyAtLS0gcGFkIC0tLSBwaW5tdXggLSstIEkyQworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgKy0gbW1jCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICArLSBHUElPCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWMgcmVncworCitIZXJlIHNvbWUgZWxlY3RyaWNhbCBwcm9wZXJ0aWVzIG9mIHRoZSBwaW4gY2FuIGJlIGNvbmZpZ3VyZWQgbm8gbWF0dGVyCit3aGV0aGVyIHRoZSBwaW4gaXMgdXNlZCBmb3IgR1BJTyBvciBub3QuIElmIHlvdSBtdWx0aXBsZXggYSBHUElPIG9udG8gYQorcGluLCB5b3UgY2FuIGFsc28gZHJpdmUgaXQgaGlnaC9sb3cgZnJvbSAiR1BJTyIgcmVnaXN0ZXJzLgorQWx0ZXJuYXRpdmVseSwgdGhlIHBpbiBjYW4gYmUgY29udHJvbGxlZCBieSBhIGNlcnRhaW4gcGVyaXBoZXJhbCwgd2hpbGUKK3N0aWxsIGFwcGx5aW5nIGRlc2lyZWQgcGluIGNvbmZpZyBwcm9wZXJ0aWVzLiBHUElPIGZ1bmN0aW9uYWxpdHkgaXMgdGh1cworb3J0aG9nb25hbCB0byBhbnkgb3RoZXIgZGV2aWNlIHVzaW5nIHRoZSBwaW4uCisKK0luIHRoaXMgYXJyYW5nZW1lbnQgdGhlIHJlZ2lzdGVycyBmb3IgdGhlIEdQSU8gcG9ydGlvbnMgb2YgdGhlIHBpbiBjb250cm9sbGVyLAorb3IgdGhlIHJlZ2lzdGVycyBmb3IgdGhlIEdQSU8gaGFyZHdhcmUgbW9kdWxlIGFyZSBsaWtlbHkgdG8gcmVzaWRlIGluIGEKK3NlcGFyYXRlIG1lbW9yeSByYW5nZSBvbmx5IGludGVuZGVkIGZvciBHUElPIGRyaXZpbmcsIGFuZCB0aGUgcmVnaXN0ZXIKK3JhbmdlIGRlYWxpbmcgd2l0aCBwaW4gY29uZmlnIGFuZCBwaW4gbXVsdGlwbGV4aW5nIGdldCBwbGFjZWQgaW50byBhCitkaWZmZXJlbnQgbWVtb3J5IHJhbmdlIGFuZCBhIHNlcGFyYXRlIHNlY3Rpb24gb2YgdGhlIGRhdGEgc2hlZXQuCisKK0EgZmxhZyAic3RyaWN0IiBpbiBzdHJ1Y3QgcGlubXV4X29wcyBpcyBhdmFpbGFibGUgdG8gY2hlY2sgYW5kIGRlbnkKK3NpbXVsdGFuZW91cyBhY2Nlc3MgdG8gdGhlIHNhbWUgcGluIGZyb20gR1BJTyBhbmQgcGluIG11bHRpcGxleGluZworY29uc3VtZXJzIG9uIGhhcmR3YXJlIG9mIHRoaXMgdHlwZS4gVGhlIHBpbmN0cmwgZHJpdmVyIHNob3VsZCBzZXQgdGhpcyBmbGFnCithY2NvcmRpbmdseS4KKworKEIpCisKKyAgICAgICAgICAgICAgICAgICAgICAgcGluIGNvbmZpZworICAgICAgICAgICAgICAgICAgICAgICBsb2dpYyByZWdzCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICArLSBTUEkKKyAgICAgUGh5c2ljYWwgcGlucyAtLS0gcGFkIC0tLSBwaW5tdXggLSstIEkyQworICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwgICAgICAgKy0gbW1jCisgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICBHUElPICAgIHBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxleAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljIHJlZ3MKKworSW4gdGhpcyBhcnJhbmdlbWVudCwgdGhlIEdQSU8gZnVuY3Rpb25hbGl0eSBjYW4gYWx3YXlzIGJlIGVuYWJsZWQsIHN1Y2ggdGhhdAorZS5nLiBhIEdQSU8gaW5wdXQgY2FuIGJlIHVzZWQgdG8gInNweSIgb24gdGhlIFNQSS9JMkMvTU1DIHNpZ25hbCB3aGlsZSBpdCBpcworcHVsc2VkIG91dC4gSXQgaXMgbGlrZWx5IHBvc3NpYmxlIHRvIGRpc3J1cHQgdGhlIHRyYWZmaWMgb24gdGhlIHBpbiBieSBkb2luZword3JvbmcgdGhpbmdzIG9uIHRoZSBHUElPIGJsb2NrLCBhcyBpdCBpcyBuZXZlciByZWFsbHkgZGlzY29ubmVjdGVkLiBJdCBpcworcG9zc2libGUgdGhhdCB0aGUgR1BJTywgcGluIGNvbmZpZyBhbmQgcGluIG11bHRpcGxleCByZWdpc3RlcnMgYXJlIHBsYWNlZCBpbnRvCit0aGUgc2FtZSBtZW1vcnkgcmFuZ2UgYW5kIHRoZSBzYW1lIHNlY3Rpb24gb2YgdGhlIGRhdGEgc2hlZXQsIGFsdGhvdWdoIHRoYXQKK25lZWQgbm90IGJlIHRoZSBjYXNlLgorCitJbiBzb21lIHBpbiBjb250cm9sbGVycywgYWx0aG91Z2ggdGhlIHBoeXNpY2FsIHBpbnMgYXJlIGRlc2lnbmVkIGluIHRoZSBzYW1lCit3YXkgYXMgKEIpLCB0aGUgR1BJTyBmdW5jdGlvbiBzdGlsbCBjYW4ndCBiZSBlbmFibGVkIGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlCitwZXJpcGhlcmFsIGZ1bmN0aW9ucy4gU28gYWdhaW4gdGhlICJzdHJpY3QiIGZsYWcgc2hvdWxkIGJlIHNldCwgZGVueWluZworc2ltdWx0YW5lb3VzIGFjdGl2YXRpb24gYnkgR1BJTyBhbmQgb3RoZXIgbXV4ZWQgaW4gZGV2aWNlcy4KKworRnJvbSBhIGtlcm5lbCBwb2ludCBvZiB2aWV3LCBob3dldmVyLCB0aGVzZSBhcmUgZGlmZmVyZW50IGFzcGVjdHMgb2YgdGhlCitoYXJkd2FyZSBhbmQgc2hhbGwgYmUgcHV0IGludG8gZGlmZmVyZW50IHN1YnN5c3RlbXM6CisKKy0gUmVnaXN0ZXJzIChvciBmaWVsZHMgd2l0aGluIHJlZ2lzdGVycykgdGhhdCBjb250cm9sIGVsZWN0cmljYWwKKyAgcHJvcGVydGllcyBvZiB0aGUgcGluIHN1Y2ggYXMgYmlhc2luZyBhbmQgZHJpdmUgc3RyZW5ndGggc2hvdWxkIGJlCisgIGV4cG9zZWQgdGhyb3VnaCB0aGUgcGluY3RybCBzdWJzeXN0ZW0sIGFzICJwaW4gY29uZmlndXJhdGlvbiIgc2V0dGluZ3MuCisKKy0gUmVnaXN0ZXJzIChvciBmaWVsZHMgd2l0aGluIHJlZ2lzdGVycykgdGhhdCBjb250cm9sIG11eGluZyBvZiBzaWduYWxzCisgIGZyb20gdmFyaW91cyBvdGhlciBIVyBibG9ja3MgKGUuZy4gSTJDLCBNTUMsIG9yIEdQSU8pIG9udG8gcGlucyBzaG91bGQKKyAgYmUgZXhwb3NlZCB0aHJvdWdoIHRoZSBwaW5jdHJsIHN1YnN5c3RlbSwgYXMgbXV4IGZ1bmN0aW9ucy4KKworLSBSZWdpc3RlcnMgKG9yIGZpZWxkcyB3aXRoaW4gcmVnaXN0ZXJzKSB0aGF0IGNvbnRyb2wgR1BJTyBmdW5jdGlvbmFsaXR5CisgIHN1Y2ggYXMgc2V0dGluZyBhIEdQSU8ncyBvdXRwdXQgdmFsdWUsIHJlYWRpbmcgYSBHUElPJ3MgaW5wdXQgdmFsdWUsIG9yCisgIHNldHRpbmcgR1BJTyBwaW4gZGlyZWN0aW9uIHNob3VsZCBiZSBleHBvc2VkIHRocm91Z2ggdGhlIEdQSU8gc3Vic3lzdGVtLAorICBhbmQgaWYgdGhleSBhbHNvIHN1cHBvcnQgaW50ZXJydXB0IGNhcGFiaWxpdGllcywgdGhyb3VnaCB0aGUgaXJxY2hpcAorICBhYnN0cmFjdGlvbi4KKworRGVwZW5kaW5nIG9uIHRoZSBleGFjdCBIVyByZWdpc3RlciBkZXNpZ24sIHNvbWUgZnVuY3Rpb25zIGV4cG9zZWQgYnkgdGhlCitHUElPIHN1YnN5c3RlbSBtYXkgY2FsbCBpbnRvIHRoZSBwaW5jdHJsIHN1YnN5c3RlbSBpbiBvcmRlciB0bworY28tb3JkaW5hdGUgcmVnaXN0ZXIgc2V0dGluZ3MgYWNyb3NzIEhXIG1vZHVsZXMuIEluIHBhcnRpY3VsYXIsIHRoaXMgbWF5CitiZSBuZWVkZWQgZm9yIEhXIHdpdGggc2VwYXJhdGUgR1BJTyBhbmQgcGluIGNvbnRyb2xsZXIgSFcgbW9kdWxlcywgd2hlcmUKK2UuZy4gR1BJTyBkaXJlY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSBhIHJlZ2lzdGVyIGluIHRoZSBwaW4gY29udHJvbGxlciBIVworbW9kdWxlIHJhdGhlciB0aGFuIHRoZSBHUElPIEhXIG1vZHVsZS4KKworRWxlY3RyaWNhbCBwcm9wZXJ0aWVzIG9mIHRoZSBwaW4gc3VjaCBhcyBiaWFzaW5nIGFuZCBkcml2ZSBzdHJlbmd0aAorbWF5IGJlIHBsYWNlZCBhdCBzb21lIHBpbi1zcGVjaWZpYyByZWdpc3RlciBpbiBhbGwgY2FzZXMgb3IgYXMgcGFydAorb2YgdGhlIEdQSU8gcmVnaXN0ZXIgaW4gY2FzZSAoQikgZXNwZWNpYWxseS4gVGhpcyBkb2Vzbid0IG1lYW4gdGhhdCBzdWNoCitwcm9wZXJ0aWVzIG5lY2Vzc2FyaWx5IHBlcnRhaW4gdG8gd2hhdCB0aGUgTGludXgga2VybmVsIGNhbGxzICJHUElPIi4KKworRXhhbXBsZTogYSBwaW4gaXMgdXN1YWxseSBtdXhlZCBpbiB0byBiZSB1c2VkIGFzIGEgVUFSVCBUWCBsaW5lLiBCdXQgZHVyaW5nCitzeXN0ZW0gc2xlZXAsIHdlIG5lZWQgdG8gcHV0IHRoaXMgcGluIGludG8gIkdQSU8gbW9kZSIgYW5kIGdyb3VuZCBpdC4KKworSWYgeW91IG1ha2UgYSAxLXRvLTEgbWFwIHRvIHRoZSBHUElPIHN1YnN5c3RlbSBmb3IgdGhpcyBwaW4sIHlvdSBtYXkgc3RhcnQKK3RvIHRoaW5rIHRoYXQgeW91IG5lZWQgdG8gY29tZSB1cCB3aXRoIHNvbWV0aGluZyByZWFsbHkgY29tcGxleCwgdGhhdCB0aGUKK3BpbiBzaGFsbCBiZSB1c2VkIGZvciBVQVJUIFRYIGFuZCBHUElPIGF0IHRoZSBzYW1lIHRpbWUsIHRoYXQgeW91IHdpbGwgZ3JhYgorYSBwaW4gY29udHJvbCBoYW5kbGUgYW5kIHNldCBpdCB0byBhIGNlcnRhaW4gc3RhdGUgdG8gZW5hYmxlIFVBUlQgVFggdG8gYmUKK211eGVkIGluLCB0aGVuIHR3aXN0IGl0IG92ZXIgdG8gR1BJTyBtb2RlIGFuZCB1c2UgZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KCkKK3RvIGRyaXZlIGl0IGxvdyBkdXJpbmcgc2xlZXAsIHRoZW4gbXV4IGl0IG92ZXIgdG8gVUFSVCBUWCBhZ2FpbiB3aGVuIHlvdQord2FrZSB1cCBhbmQgbWF5YmUgZXZlbiBncGlvX3JlcXVlc3QvZ3Bpb19mcmVlIGFzIHBhcnQgb2YgdGhpcyBjeWNsZS4gVGhpcworYWxsIGdldHMgdmVyeSBjb21wbGljYXRlZC4KKworVGhlIHNvbHV0aW9uIGlzIHRvIG5vdCB0aGluayB0aGF0IHdoYXQgdGhlIGRhdGFzaGVldCBjYWxscyAiR1BJTyBtb2RlIgoraGFzIHRvIGJlIGhhbmRsZWQgYnkgdGhlIDxsaW51eC9ncGlvLmg+IGludGVyZmFjZS4gSW5zdGVhZCB2aWV3IHRoaXMgYXMKK2EgY2VydGFpbiBwaW4gY29uZmlnIHNldHRpbmcuIExvb2sgaW4gZS5nLiA8bGludXgvcGluY3RybC9waW5jb25mLWdlbmVyaWMuaD4KK2FuZCB5b3UgZmluZCB0aGlzIGluIHRoZSBkb2N1bWVudGF0aW9uOgorCisgIFBJTl9DT05GSUdfT1VUUFVUOiB0aGlzIHdpbGwgY29uZmlndXJlIHRoZSBwaW4gaW4gb3V0cHV0LCB1c2UgYXJndW1lbnQKKyAgICAgMSB0byBpbmRpY2F0ZSBoaWdoIGxldmVsLCBhcmd1bWVudCAwIHRvIGluZGljYXRlIGxvdyBsZXZlbC4KKworU28gaXQgaXMgcGVyZmVjdGx5IHBvc3NpYmxlIHRvIHB1c2ggYSBwaW4gaW50byAiR1BJTyBtb2RlIiBhbmQgZHJpdmUgdGhlCitsaW5lIGxvdyBhcyBwYXJ0IG9mIHRoZSB1c3VhbCBwaW4gY29udHJvbCBtYXAuIFNvIGZvciBleGFtcGxlIHlvdXIgVUFSVAorZHJpdmVyIG1heSBsb29rIGxpa2UgdGhpczoKKworI2luY2x1ZGUgPGxpbnV4L3BpbmN0cmwvY29uc3VtZXIuaD4KKworc3RydWN0IHBpbmN0cmwgICAgICAgICAgKnBpbmN0cmw7CitzdHJ1Y3QgcGluY3RybF9zdGF0ZSAgICAqcGluc19kZWZhdWx0Oworc3RydWN0IHBpbmN0cmxfc3RhdGUgICAgKnBpbnNfc2xlZXA7CisKK3BpbnNfZGVmYXVsdCA9IHBpbmN0cmxfbG9va3VwX3N0YXRlKHVhcC0+cGluY3RybCwgUElOQ1RSTF9TVEFURV9ERUZBVUxUKTsKK3BpbnNfc2xlZXAgPSBwaW5jdHJsX2xvb2t1cF9zdGF0ZSh1YXAtPnBpbmN0cmwsIFBJTkNUUkxfU1RBVEVfU0xFRVApOworCisvKiBOb3JtYWwgbW9kZSAqLworcmV0dmFsID0gcGluY3RybF9zZWxlY3Rfc3RhdGUocGluY3RybCwgcGluc19kZWZhdWx0KTsKKy8qIFNsZWVwIG1vZGUgKi8KK3JldHZhbCA9IHBpbmN0cmxfc2VsZWN0X3N0YXRlKHBpbmN0cmwsIHBpbnNfc2xlZXApOworCitBbmQgeW91ciBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gbWF5IGxvb2sgbGlrZSB0aGlzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIHVuc2lnbmVkIGxvbmcgdWFydF9kZWZhdWx0X21vZGVbXSA9IHsKKyAgICBQSU5fQ09ORl9QQUNLRUQoUElOX0NPTkZJR19EUklWRV9QVVNIX1BVTEwsIDApLAorfTsKKworc3RhdGljIHVuc2lnbmVkIGxvbmcgdWFydF9zbGVlcF9tb2RlW10gPSB7CisgICAgUElOX0NPTkZfUEFDS0VEKFBJTl9DT05GSUdfT1VUUFVULCAwKSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGluY3RybF9tYXAgcGlubWFwW10gX19pbml0ZGF0YSA9IHsKKyAgICBQSU5fTUFQX01VWF9HUk9VUCgidWFydCIsIFBJTkNUUkxfU1RBVEVfREVGQVVMVCwgInBpbmN0cmwtZm9vIiwKKyAgICAgICAgICAgICAgICAgICAgICAidTBfZ3JvdXAiLCAidTAiKSwKKyAgICBQSU5fTUFQX0NPTkZJR1NfUElOKCJ1YXJ0IiwgUElOQ1RSTF9TVEFURV9ERUZBVUxULCAicGluY3RybC1mb28iLAorICAgICAgICAgICAgICAgICAgICAgICAgIlVBUlRfVFhfUElOIiwgdWFydF9kZWZhdWx0X21vZGUpLAorICAgIFBJTl9NQVBfTVVYX0dST1VQKCJ1YXJ0IiwgUElOQ1RSTF9TVEFURV9TTEVFUCwgInBpbmN0cmwtZm9vIiwKKyAgICAgICAgICAgICAgICAgICAgICAidTBfZ3JvdXAiLCAiZ3Bpby1tb2RlIiksCisgICAgUElOX01BUF9DT05GSUdTX1BJTigidWFydCIsIFBJTkNUUkxfU1RBVEVfU0xFRVAsICJwaW5jdHJsLWZvbyIsCisgICAgICAgICAgICAgICAgICAgICAgICAiVUFSVF9UWF9QSU4iLCB1YXJ0X3NsZWVwX21vZGUpLAorfTsKKworZm9vX2luaXQodm9pZCkgeworICAgIHBpbmN0cmxfcmVnaXN0ZXJfbWFwcGluZ3MocGlubWFwLCBBUlJBWV9TSVpFKHBpbm1hcCkpOworfQorCitIZXJlIHRoZSBwaW5zIHdlIHdhbnQgdG8gY29udHJvbCBhcmUgaW4gdGhlICJ1MF9ncm91cCIgYW5kIHRoZXJlIGlzIHNvbWUKK2Z1bmN0aW9uIGNhbGxlZCAidTAiIHRoYXQgY2FuIGJlIGVuYWJsZWQgb24gdGhpcyBncm91cCBvZiBwaW5zLCBhbmQgdGhlbgorZXZlcnl0aGluZyBpcyBVQVJUIGJ1c2luZXNzIGFzIHVzdWFsLiBCdXQgdGhlcmUgaXMgYWxzbyBzb21lIGZ1bmN0aW9uCituYW1lZCAiZ3Bpby1tb2RlIiB0aGF0IGNhbiBiZSBtYXBwZWQgb250byB0aGUgc2FtZSBwaW5zIHRvIG1vdmUgdGhlbSBpbnRvCitHUElPIG1vZGUuCisKK1RoaXMgd2lsbCBnaXZlIHRoZSBkZXNpcmVkIGVmZmVjdCB3aXRob3V0IGFueSBib2d1cyBpbnRlcmFjdGlvbiB3aXRoIHRoZQorR1BJTyBzdWJzeXN0ZW0uIEl0IGlzIGp1c3QgYW4gZWxlY3RyaWNhbCBjb25maWd1cmF0aW9uIHVzZWQgYnkgdGhhdCBkZXZpY2UKK3doZW4gZ29pbmcgdG8gc2xlZXAsIGl0IG1pZ2h0IGltcGx5IHRoYXQgdGhlIHBpbiBpcyBzZXQgaW50byBzb21ldGhpbmcgdGhlCitkYXRhc2hlZXQgY2FsbHMgIkdQSU8gbW9kZSIsIGJ1dCB0aGF0IGlzIG5vdCB0aGUgcG9pbnQ6IGl0IGlzIHN0aWxsIHVzZWQKK2J5IHRoYXQgVUFSVCBkZXZpY2UgdG8gY29udHJvbCB0aGUgcGlucyB0aGF0IHBlcnRhaW4gdG8gdGhhdCB2ZXJ5IFVBUlQKK2RyaXZlciwgcHV0dGluZyB0aGVtIGludG8gbW9kZXMgbmVlZGVkIGJ5IHRoZSBVQVJULiBHUElPIGluIHRoZSBMaW51eAora2VybmVsIHNlbnNlIGFyZSBqdXN0IHNvbWUgMS1iaXQgbGluZSwgYW5kIGlzIGEgZGlmZmVyZW50IHVzZSBjYXNlLgorCitIb3cgdGhlIHJlZ2lzdGVycyBhcmUgcG9rZWQgdG8gYXR0YWluIHRoZSBwdXNoIG9yIHB1bGwsIGFuZCBvdXRwdXQgbG93Citjb25maWd1cmF0aW9uIGFuZCB0aGUgbXV4aW5nIG9mIHRoZSAidTAiIG9yICJncGlvLW1vZGUiIGdyb3VwIG9udG8gdGhlc2UKK3BpbnMgaXMgYSBxdWVzdGlvbiBmb3IgdGhlIGRyaXZlci4KKworU29tZSBkYXRhc2hlZXRzIHdpbGwgYmUgbW9yZSBoZWxwZnVsIGFuZCByZWZlciB0byB0aGUgIkdQSU8gbW9kZSIgYXMKKyJsb3cgcG93ZXIgbW9kZSIgcmF0aGVyIHRoYW4gYW55dGhpbmcgdG8gZG8gd2l0aCBHUElPLiBUaGlzIG9mdGVuIG1lYW5zCit0aGUgc2FtZSB0aGluZyBlbGVjdHJpY2FsbHkgc3BlYWtpbmcsIGJ1dCBpbiB0aGlzIGxhdHRlciBjYXNlIHRoZQorc29mdHdhcmUgZW5naW5lZXJzIHdpbGwgdXN1YWxseSBxdWlja2x5IGlkZW50aWZ5IHRoYXQgdGhpcyBpcyBzb21lCitzcGVjaWZpYyBtdXhpbmcgb3IgY29uZmlndXJhdGlvbiByYXRoZXIgdGhhbiBhbnl0aGluZyByZWxhdGVkIHRvIHRoZSBHUElPCitBUEkuCisKKworQm9hcmQvbWFjaGluZSBjb25maWd1cmF0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0JvYXJkcyBhbmQgbWFjaGluZXMgZGVmaW5lIGhvdyBhIGNlcnRhaW4gY29tcGxldGUgcnVubmluZyBzeXN0ZW0gaXMgcHV0Cit0b2dldGhlciwgaW5jbHVkaW5nIGhvdyBHUElPcyBhbmQgZGV2aWNlcyBhcmUgbXV4ZWQsIGhvdyByZWd1bGF0b3JzIGFyZQorY29uc3RyYWluZWQgYW5kIGhvdyB0aGUgY2xvY2sgdHJlZSBsb29rcy4gT2YgY291cnNlIHBpbm11eCBzZXR0aW5ncyBhcmUgYWxzbworcGFydCBvZiB0aGlzLgorCitBIHBpbiBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb24gZm9yIGEgbWFjaGluZSBsb29rcyBwcmV0dHkgbXVjaCBsaWtlIGEgc2ltcGxlCityZWd1bGF0b3IgY29uZmlndXJhdGlvbiwgc28gZm9yIHRoZSBleGFtcGxlIGFycmF5IGFib3ZlIHdlIHdhbnQgdG8gZW5hYmxlIGkyYworYW5kIHNwaSBvbiB0aGUgc2Vjb25kIGZ1bmN0aW9uIG1hcHBpbmc6CisKKyNpbmNsdWRlIDxsaW51eC9waW5jdHJsL21hY2hpbmUuaD4KKworc3RhdGljIGNvbnN0IHN0cnVjdCBwaW5jdHJsX21hcCBtYXBwaW5nW10gX19pbml0Y29uc3QgPSB7CisJeworCQkuZGV2X25hbWUgPSAiZm9vLXNwaS4wIiwKKwkJLm5hbWUgPSBQSU5DVFJMX1NUQVRFX0RFRkFVTFQsCisJCS50eXBlID0gUElOX01BUF9UWVBFX01VWF9HUk9VUCwKKwkJLmN0cmxfZGV2X25hbWUgPSAicGluY3RybC1mb28iLAorCQkuZGF0YS5tdXguZnVuY3Rpb24gPSAic3BpMCIsCisJfSwKKwl7CisJCS5kZXZfbmFtZSA9ICJmb28taTJjLjAiLAorCQkubmFtZSA9IFBJTkNUUkxfU1RBVEVfREVGQVVMVCwKKwkJLnR5cGUgPSBQSU5fTUFQX1RZUEVfTVVYX0dST1VQLAorCQkuY3RybF9kZXZfbmFtZSA9ICJwaW5jdHJsLWZvbyIsCisJCS5kYXRhLm11eC5mdW5jdGlvbiA9ICJpMmMwIiwKKwl9LAorCXsKKwkJLmRldl9uYW1lID0gImZvby1tbWMuMCIsCisJCS5uYW1lID0gUElOQ1RSTF9TVEFURV9ERUZBVUxULAorCQkudHlwZSA9IFBJTl9NQVBfVFlQRV9NVVhfR1JPVVAsCisJCS5jdHJsX2Rldl9uYW1lID0gInBpbmN0cmwtZm9vIiwKKwkJLmRhdGEubXV4LmZ1bmN0aW9uID0gIm1tYzAiLAorCX0sCit9OworCitUaGUgZGV2X25hbWUgaGVyZSBtYXRjaGVzIHRvIHRoZSB1bmlxdWUgZGV2aWNlIG5hbWUgdGhhdCBjYW4gYmUgdXNlZCB0byBsb29rCit1cCB0aGUgZGV2aWNlIHN0cnVjdCAoanVzdCBsaWtlIHdpdGggY2xvY2tkZXYgb3IgcmVndWxhdG9ycykuIFRoZSBmdW5jdGlvbiBuYW1lCittdXN0IG1hdGNoIGEgZnVuY3Rpb24gcHJvdmlkZWQgYnkgdGhlIHBpbm11eCBkcml2ZXIgaGFuZGxpbmcgdGhpcyBwaW4gcmFuZ2UuCisKK0FzIHlvdSBjYW4gc2VlIHdlIG1heSBoYXZlIHNldmVyYWwgcGluIGNvbnRyb2xsZXJzIG9uIHRoZSBzeXN0ZW0gYW5kIHRodXMKK3dlIG5lZWQgdG8gc3BlY2lmeSB3aGljaCBvbmUgb2YgdGhlbSBjb250YWlucyB0aGUgZnVuY3Rpb25zIHdlIHdpc2ggdG8gbWFwLgorCitZb3UgcmVnaXN0ZXIgdGhpcyBwaW5tdXggbWFwcGluZyB0byB0aGUgcGlubXV4IHN1YnN5c3RlbSBieSBzaW1wbHk6CisKKyAgICAgICByZXQgPSBwaW5jdHJsX3JlZ2lzdGVyX21hcHBpbmdzKG1hcHBpbmcsIEFSUkFZX1NJWkUobWFwcGluZykpOworCitTaW5jZSB0aGUgYWJvdmUgY29uc3RydWN0IGlzIHByZXR0eSBjb21tb24gdGhlcmUgaXMgYSBoZWxwZXIgbWFjcm8gdG8gbWFrZQoraXQgZXZlbiBtb3JlIGNvbXBhY3Qgd2hpY2ggYXNzdW1lcyB5b3Ugd2FudCB0byB1c2UgcGluY3RybC1mb28gYW5kIHBvc2l0aW9uCiswIGZvciBtYXBwaW5nLCBmb3IgZXhhbXBsZToKKworc3RhdGljIHN0cnVjdCBwaW5jdHJsX21hcCBtYXBwaW5nW10gX19pbml0ZGF0YSA9IHsKKwlQSU5fTUFQX01VWF9HUk9VUCgiZm9vLWkyYy5vIiwgUElOQ1RSTF9TVEFURV9ERUZBVUxULCAicGluY3RybC1mb28iLCBOVUxMLCAiaTJjMCIpLAorfTsKKworVGhlIG1hcHBpbmcgdGFibGUgbWF5IGFsc28gY29udGFpbiBwaW4gY29uZmlndXJhdGlvbiBlbnRyaWVzLiBJdCdzIGNvbW1vbiBmb3IKK2VhY2ggcGluL2dyb3VwIHRvIGhhdmUgYSBudW1iZXIgb2YgY29uZmlndXJhdGlvbiBlbnRyaWVzIHRoYXQgYWZmZWN0IGl0LCBzbwordGhlIHRhYmxlIGVudHJpZXMgZm9yIGNvbmZpZ3VyYXRpb24gcmVmZXJlbmNlIGFuIGFycmF5IG9mIGNvbmZpZyBwYXJhbWV0ZXJzCithbmQgdmFsdWVzLiBBbiBleGFtcGxlIHVzaW5nIHRoZSBjb252ZW5pZW5jZSBtYWNyb3MgaXMgc2hvd24gYmVsb3c6CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGkyY19ncnBfY29uZmlnc1tdID0geworCUZPT19QSU5fRFJJVkVOLAorCUZPT19QSU5fUFVMTFVQLAorfTsKKworc3RhdGljIHVuc2lnbmVkIGxvbmcgaTJjX3Bpbl9jb25maWdzW10gPSB7CisJRk9PX09QRU5fQ09MTEVDVE9SLAorCUZPT19TTEVXX1JBVEVfU0xPVywKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGluY3RybF9tYXAgbWFwcGluZ1tdIF9faW5pdGRhdGEgPSB7CisJUElOX01BUF9NVVhfR1JPVVAoImZvby1pMmMuMCIsIFBJTkNUUkxfU1RBVEVfREVGQVVMVCwgInBpbmN0cmwtZm9vIiwgImkyYzAiLCAiaTJjMCIpLAorCVBJTl9NQVBfQ09ORklHU19HUk9VUCgiZm9vLWkyYy4wIiwgUElOQ1RSTF9TVEFURV9ERUZBVUxULCAicGluY3RybC1mb28iLCAiaTJjMCIsIGkyY19ncnBfY29uZmlncyksCisJUElOX01BUF9DT05GSUdTX1BJTigiZm9vLWkyYy4wIiwgUElOQ1RSTF9TVEFURV9ERUZBVUxULCAicGluY3RybC1mb28iLCAiaTJjMHNjbCIsIGkyY19waW5fY29uZmlncyksCisJUElOX01BUF9DT05GSUdTX1BJTigiZm9vLWkyYy4wIiwgUElOQ1RSTF9TVEFURV9ERUZBVUxULCAicGluY3RybC1mb28iLCAiaTJjMHNkYSIsIGkyY19waW5fY29uZmlncyksCit9OworCitGaW5hbGx5LCBzb21lIGRldmljZXMgZXhwZWN0IHRoZSBtYXBwaW5nIHRhYmxlIHRvIGNvbnRhaW4gY2VydGFpbiBzcGVjaWZpYworbmFtZWQgc3RhdGVzLiBXaGVuIHJ1bm5pbmcgb24gaGFyZHdhcmUgdGhhdCBkb2Vzbid0IG5lZWQgYW55IHBpbiBjb250cm9sbGVyCitjb25maWd1cmF0aW9uLCB0aGUgbWFwcGluZyB0YWJsZSBtdXN0IHN0aWxsIGNvbnRhaW4gdGhvc2UgbmFtZWQgc3RhdGVzLCBpbgorb3JkZXIgdG8gZXhwbGljaXRseSBpbmRpY2F0ZSB0aGF0IHRoZSBzdGF0ZXMgd2VyZSBwcm92aWRlZCBhbmQgaW50ZW5kZWQgdG8KK2JlIGVtcHR5LiBUYWJsZSBlbnRyeSBtYWNybyBQSU5fTUFQX0RVTU1ZX1NUQVRFIHNlcnZlcyB0aGUgcHVycG9zZSBvZiBkZWZpbmluZworYSBuYW1lZCBzdGF0ZSB3aXRob3V0IGNhdXNpbmcgYW55IHBpbiBjb250cm9sbGVyIHRvIGJlIHByb2dyYW1tZWQ6CisKK3N0YXRpYyBzdHJ1Y3QgcGluY3RybF9tYXAgbWFwcGluZ1tdIF9faW5pdGRhdGEgPSB7CisJUElOX01BUF9EVU1NWV9TVEFURSgiZm9vLWkyYy4wIiwgUElOQ1RSTF9TVEFURV9ERUZBVUxUKSwKK307CisKKworQ29tcGxleCBtYXBwaW5ncworPT09PT09PT09PT09PT09PQorCitBcyBpdCBpcyBwb3NzaWJsZSB0byBtYXAgYSBmdW5jdGlvbiB0byBkaWZmZXJlbnQgZ3JvdXBzIG9mIHBpbnMgYW4gb3B0aW9uYWwKKy5ncm91cCBjYW4gYmUgc3BlY2lmaWVkIGxpa2UgdGhpczoKKworLi4uCit7CisJLmRldl9uYW1lID0gImZvby1zcGkuMCIsCisJLm5hbWUgPSAic3BpMC1wb3MtQSIsCisJLnR5cGUgPSBQSU5fTUFQX1RZUEVfTVVYX0dST1VQLAorCS5jdHJsX2Rldl9uYW1lID0gInBpbmN0cmwtZm9vIiwKKwkuZnVuY3Rpb24gPSAic3BpMCIsCisJLmdyb3VwID0gInNwaTBfMF9ncnAiLAorfSwKK3sKKwkuZGV2X25hbWUgPSAiZm9vLXNwaS4wIiwKKwkubmFtZSA9ICJzcGkwLXBvcy1CIiwKKwkudHlwZSA9IFBJTl9NQVBfVFlQRV9NVVhfR1JPVVAsCisJLmN0cmxfZGV2X25hbWUgPSAicGluY3RybC1mb28iLAorCS5mdW5jdGlvbiA9ICJzcGkwIiwKKwkuZ3JvdXAgPSAic3BpMF8xX2dycCIsCit9LAorLi4uCisKK1RoaXMgZXhhbXBsZSBtYXBwaW5nIGlzIHVzZWQgdG8gc3dpdGNoIGJldHdlZW4gdHdvIHBvc2l0aW9ucyBmb3Igc3BpMCBhdAorcnVudGltZSwgYXMgZGVzY3JpYmVkIGZ1cnRoZXIgYmVsb3cgdW5kZXIgdGhlIGhlYWRpbmcgIlJ1bnRpbWUgcGlubXV4aW5nIi4KKworRnVydGhlciBpdCBpcyBwb3NzaWJsZSBmb3Igb25lIG5hbWVkIHN0YXRlIHRvIGFmZmVjdCB0aGUgbXV4aW5nIG9mIHNldmVyYWwKK2dyb3VwcyBvZiBwaW5zLCBzYXkgZm9yIGV4YW1wbGUgaW4gdGhlIG1tYzAgZXhhbXBsZSBhYm92ZSwgd2hlcmUgeW91IGNhbgorYWRkaXRpdmVseSBleHBhbmQgdGhlIG1tYzAgYnVzIGZyb20gMiB0byA0IHRvIDggcGlucy4gSWYgd2Ugd2FudCB0byB1c2UgYWxsCit0aHJlZSBncm91cHMgZm9yIGEgdG90YWwgb2YgMisyKzQgPSA4IHBpbnMgKGZvciBhbiA4LWJpdCBNTUMgYnVzIGFzIGlzIHRoZQorY2FzZSksIHdlIGRlZmluZSBhIG1hcHBpbmcgbGlrZSB0aGlzOgorCisuLi4KK3sKKwkuZGV2X25hbWUgPSAiZm9vLW1tYy4wIiwKKwkubmFtZSA9ICIyYml0IgorCS50eXBlID0gUElOX01BUF9UWVBFX01VWF9HUk9VUCwKKwkuY3RybF9kZXZfbmFtZSA9ICJwaW5jdHJsLWZvbyIsCisJLmZ1bmN0aW9uID0gIm1tYzAiLAorCS5ncm91cCA9ICJtbWMwXzFfZ3JwIiwKK30sCit7CisJLmRldl9uYW1lID0gImZvby1tbWMuMCIsCisJLm5hbWUgPSAiNGJpdCIKKwkudHlwZSA9IFBJTl9NQVBfVFlQRV9NVVhfR1JPVVAsCisJLmN0cmxfZGV2X25hbWUgPSAicGluY3RybC1mb28iLAorCS5mdW5jdGlvbiA9ICJtbWMwIiwKKwkuZ3JvdXAgPSAibW1jMF8xX2dycCIsCit9LAoreworCS5kZXZfbmFtZSA9ICJmb28tbW1jLjAiLAorCS5uYW1lID0gIjRiaXQiCisJLnR5cGUgPSBQSU5fTUFQX1RZUEVfTVVYX0dST1VQLAorCS5jdHJsX2Rldl9uYW1lID0gInBpbmN0cmwtZm9vIiwKKwkuZnVuY3Rpb24gPSAibW1jMCIsCisJLmdyb3VwID0gIm1tYzBfMl9ncnAiLAorfSwKK3sKKwkuZGV2X25hbWUgPSAiZm9vLW1tYy4wIiwKKwkubmFtZSA9ICI4Yml0IgorCS50eXBlID0gUElOX01BUF9UWVBFX01VWF9HUk9VUCwKKwkuY3RybF9kZXZfbmFtZSA9ICJwaW5jdHJsLWZvbyIsCisJLmZ1bmN0aW9uID0gIm1tYzAiLAorCS5ncm91cCA9ICJtbWMwXzFfZ3JwIiwKK30sCit7CisJLmRldl9uYW1lID0gImZvby1tbWMuMCIsCisJLm5hbWUgPSAiOGJpdCIKKwkudHlwZSA9IFBJTl9NQVBfVFlQRV9NVVhfR1JPVVAsCisJLmN0cmxfZGV2X25hbWUgPSAicGluY3RybC1mb28iLAorCS5mdW5jdGlvbiA9ICJtbWMwIiwKKwkuZ3JvdXAgPSAibW1jMF8yX2dycCIsCit9LAoreworCS5kZXZfbmFtZSA9ICJmb28tbW1jLjAiLAorCS5uYW1lID0gIjhiaXQiCisJLnR5cGUgPSBQSU5fTUFQX1RZUEVfTVVYX0dST1VQLAorCS5jdHJsX2Rldl9uYW1lID0gInBpbmN0cmwtZm9vIiwKKwkuZnVuY3Rpb24gPSAibW1jMCIsCisJLmdyb3VwID0gIm1tYzBfM19ncnAiLAorfSwKKy4uLgorCitUaGUgcmVzdWx0IG9mIGdyYWJiaW5nIHRoaXMgbWFwcGluZyBmcm9tIHRoZSBkZXZpY2Ugd2l0aCBzb21ldGhpbmcgbGlrZQordGhpcyAoc2VlIG5leHQgcGFyYWdyYXBoKToKKworCXAgPSBkZXZtX3BpbmN0cmxfZ2V0KGRldik7CisJcyA9IHBpbmN0cmxfbG9va3VwX3N0YXRlKHAsICI4Yml0Iik7CisJcmV0ID0gcGluY3RybF9zZWxlY3Rfc3RhdGUocCwgcyk7CisKK29yIG1vcmUgc2ltcGx5OgorCisJcCA9IGRldm1fcGluY3RybF9nZXRfc2VsZWN0KGRldiwgIjhiaXQiKTsKKworV2lsbCBiZSB0aGF0IHlvdSBhY3RpdmF0ZSBhbGwgdGhlIHRocmVlIGJvdHRvbSByZWNvcmRzIGluIHRoZSBtYXBwaW5nIGF0CitvbmNlLiBTaW5jZSB0aGV5IHNoYXJlIHRoZSBzYW1lIG5hbWUsIHBpbiBjb250cm9sbGVyIGRldmljZSwgZnVuY3Rpb24gYW5kCitkZXZpY2UsIGFuZCBzaW5jZSB3ZSBhbGxvdyBtdWx0aXBsZSBncm91cHMgdG8gbWF0Y2ggdG8gYSBzaW5nbGUgZGV2aWNlLCB0aGV5CithbGwgZ2V0IHNlbGVjdGVkLCBhbmQgdGhleSBhbGwgZ2V0IGVuYWJsZWQgYW5kIGRpc2FibGUgc2ltdWx0YW5lb3VzbHkgYnkgdGhlCitwaW5tdXggY29yZS4KKworCitQaW4gY29udHJvbCByZXF1ZXN0cyBmcm9tIGRyaXZlcnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitXaGVuIGEgZGV2aWNlIGRyaXZlciBpcyBhYm91dCB0byBwcm9iZSB0aGUgZGV2aWNlIGNvcmUgd2lsbCBhdXRvbWF0aWNhbGx5CithdHRlbXB0IHRvIGlzc3VlIHBpbmN0cmxfZ2V0X3NlbGVjdF9kZWZhdWx0KCkgb24gdGhlc2UgZGV2aWNlcy4KK1RoaXMgd2F5IGRyaXZlciB3cml0ZXJzIGRvIG5vdCBuZWVkIHRvIGFkZCBhbnkgb2YgdGhlIGJvaWxlcnBsYXRlIGNvZGUKK29mIHRoZSB0eXBlIGZvdW5kIGJlbG93LiBIb3dldmVyIHdoZW4gZG9pbmcgZmluZS1ncmFpbmVkIHN0YXRlIHNlbGVjdGlvbgorYW5kIG5vdCB1c2luZyB0aGUgImRlZmF1bHQiIHN0YXRlLCB5b3UgbWF5IGhhdmUgdG8gZG8gc29tZSBkZXZpY2UgZHJpdmVyCitoYW5kbGluZyBvZiB0aGUgcGluY3RybCBoYW5kbGVzIGFuZCBzdGF0ZXMuCisKK1NvIGlmIHlvdSBqdXN0IHdhbnQgdG8gcHV0IHRoZSBwaW5zIGZvciBhIGNlcnRhaW4gZGV2aWNlIGludG8gdGhlIGRlZmF1bHQKK3N0YXRlIGFuZCBiZSBkb25lIHdpdGggaXQsIHRoZXJlIGlzIG5vdGhpbmcgeW91IG5lZWQgdG8gZG8gYmVzaWRlcworcHJvdmlkaW5nIHRoZSBwcm9wZXIgbWFwcGluZyB0YWJsZS4gVGhlIGRldmljZSBjb3JlIHdpbGwgdGFrZSBjYXJlIG9mCit0aGUgcmVzdC4KKworR2VuZXJhbGx5IGl0IGlzIGRpc2NvdXJhZ2VkIHRvIGxldCBpbmRpdmlkdWFsIGRyaXZlcnMgZ2V0IGFuZCBlbmFibGUgcGluCitjb250cm9sLiBTbyBpZiBwb3NzaWJsZSwgaGFuZGxlIHRoZSBwaW4gY29udHJvbCBpbiBwbGF0Zm9ybSBjb2RlIG9yIHNvbWUgb3RoZXIKK3BsYWNlIHdoZXJlIHlvdSBoYXZlIGFjY2VzcyB0byBhbGwgdGhlIGFmZmVjdGVkIHN0cnVjdCBkZXZpY2UgKiBwb2ludGVycy4gSW4KK3NvbWUgY2FzZXMgd2hlcmUgYSBkcml2ZXIgbmVlZHMgdG8gZS5nLiBzd2l0Y2ggYmV0d2VlbiBkaWZmZXJlbnQgbXV4IG1hcHBpbmdzCithdCBydW50aW1lIHRoaXMgaXMgbm90IHBvc3NpYmxlLgorCitBIHR5cGljYWwgY2FzZSBpcyBpZiBhIGRyaXZlciBuZWVkcyB0byBzd2l0Y2ggYmlhcyBvZiBwaW5zIGZyb20gbm9ybWFsCitvcGVyYXRpb24gYW5kIGdvaW5nIHRvIHNsZWVwLCBtb3ZpbmcgZnJvbSB0aGUgUElOQ1RSTF9TVEFURV9ERUZBVUxUIHRvCitQSU5DVFJMX1NUQVRFX1NMRUVQIGF0IHJ1bnRpbWUsIHJlLWJpYXNpbmcgb3IgZXZlbiByZS1tdXhpbmcgcGlucyB0byBzYXZlCitjdXJyZW50IGluIHNsZWVwIG1vZGUuCisKK0EgZHJpdmVyIG1heSByZXF1ZXN0IGEgY2VydGFpbiBjb250cm9sIHN0YXRlIHRvIGJlIGFjdGl2YXRlZCwgdXN1YWxseSBqdXN0IHRoZQorZGVmYXVsdCBzdGF0ZSBsaWtlIHRoaXM6CisKKyNpbmNsdWRlIDxsaW51eC9waW5jdHJsL2NvbnN1bWVyLmg+CisKK3N0cnVjdCBmb29fc3RhdGUgeworICAgICAgIHN0cnVjdCBwaW5jdHJsICpwOworICAgICAgIHN0cnVjdCBwaW5jdHJsX3N0YXRlICpzOworICAgICAgIC4uLgorfTsKKworZm9vX3Byb2JlKCkKK3sKKwkvKiBBbGxvY2F0ZSBhIHN0YXRlIGhvbGRlciBuYW1lZCAiZm9vIiBldGMgKi8KKwlzdHJ1Y3QgZm9vX3N0YXRlICpmb28gPSAuLi47CisKKwlmb28tPnAgPSBkZXZtX3BpbmN0cmxfZ2V0KCZkZXZpY2UpOworCWlmIChJU19FUlIoZm9vLT5wKSkgeworCQkvKiBGSVhNRTogY2xlYW4gdXAgImZvbyIgaGVyZSAqLworCQlyZXR1cm4gUFRSX0VSUihmb28tPnApOworCX0KKworCWZvby0+cyA9IHBpbmN0cmxfbG9va3VwX3N0YXRlKGZvby0+cCwgUElOQ1RSTF9TVEFURV9ERUZBVUxUKTsKKwlpZiAoSVNfRVJSKGZvby0+cykpIHsKKwkJLyogRklYTUU6IGNsZWFuIHVwICJmb28iIGhlcmUgKi8KKwkJcmV0dXJuIFBUUl9FUlIocyk7CisJfQorCisJcmV0ID0gcGluY3RybF9zZWxlY3Rfc3RhdGUoZm9vLT5zKTsKKwlpZiAocmV0IDwgMCkgeworCQkvKiBGSVhNRTogY2xlYW4gdXAgImZvbyIgaGVyZSAqLworCQlyZXR1cm4gcmV0OworCX0KK30KKworVGhpcyBnZXQvbG9va3VwL3NlbGVjdC9wdXQgc2VxdWVuY2UgY2FuIGp1c3QgYXMgd2VsbCBiZSBoYW5kbGVkIGJ5IGJ1cyBkcml2ZXJzCitpZiB5b3UgZG9uJ3Qgd2FudCBlYWNoIGFuZCBldmVyeSBkcml2ZXIgdG8gaGFuZGxlIGl0IGFuZCB5b3Uga25vdyB0aGUKK2FycmFuZ2VtZW50IG9uIHlvdXIgYnVzLgorCitUaGUgc2VtYW50aWNzIG9mIHRoZSBwaW5jdHJsIEFQSXMgYXJlOgorCistIHBpbmN0cmxfZ2V0KCkgaXMgY2FsbGVkIGluIHByb2Nlc3MgY29udGV4dCB0byBvYnRhaW4gYSBoYW5kbGUgdG8gYWxsIHBpbmN0cmwKKyAgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gY2xpZW50IGRldmljZS4gSXQgd2lsbCBhbGxvY2F0ZSBhIHN0cnVjdCBmcm9tIHRoZQorICBrZXJuZWwgbWVtb3J5IHRvIGhvbGQgdGhlIHBpbm11eCBzdGF0ZS4gQWxsIG1hcHBpbmcgdGFibGUgcGFyc2luZyBvciBzaW1pbGFyCisgIHNsb3cgb3BlcmF0aW9ucyB0YWtlIHBsYWNlIHdpdGhpbiB0aGlzIEFQSS4KKworLSBkZXZtX3BpbmN0cmxfZ2V0KCkgaXMgYSB2YXJpYW50IG9mIHBpbmN0cmxfZ2V0KCkgdGhhdCBjYXVzZXMgcGluY3RybF9wdXQoKQorICB0byBiZSBjYWxsZWQgYXV0b21hdGljYWxseSBvbiB0aGUgcmV0cmlldmVkIHBvaW50ZXIgd2hlbiB0aGUgYXNzb2NpYXRlZAorICBkZXZpY2UgaXMgcmVtb3ZlZC4gSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoaXMgZnVuY3Rpb24gb3ZlciBwbGFpbgorICBwaW5jdHJsX2dldCgpLgorCistIHBpbmN0cmxfbG9va3VwX3N0YXRlKCkgaXMgY2FsbGVkIGluIHByb2Nlc3MgY29udGV4dCB0byBvYnRhaW4gYSBoYW5kbGUgdG8gYQorICBzcGVjaWZpYyBzdGF0ZSBmb3IgYSBjbGllbnQgZGV2aWNlLiBUaGlzIG9wZXJhdGlvbiBtYXkgYmUgc2xvdywgdG9vLgorCistIHBpbmN0cmxfc2VsZWN0X3N0YXRlKCkgcHJvZ3JhbXMgcGluIGNvbnRyb2xsZXIgaGFyZHdhcmUgYWNjb3JkaW5nIHRvIHRoZQorICBkZWZpbml0aW9uIG9mIHRoZSBzdGF0ZSBhcyBnaXZlbiBieSB0aGUgbWFwcGluZyB0YWJsZS4gSW4gdGhlb3J5LCB0aGlzIGlzIGEKKyAgZmFzdC1wYXRoIG9wZXJhdGlvbiwgc2luY2UgaXQgb25seSBpbnZvbHZlZCBibGFzdGluZyBzb21lIHJlZ2lzdGVyIHNldHRpbmdzCisgIGludG8gaGFyZHdhcmUuIEhvd2V2ZXIsIG5vdGUgdGhhdCBzb21lIHBpbiBjb250cm9sbGVycyBtYXkgaGF2ZSB0aGVpcgorICByZWdpc3RlcnMgb24gYSBzbG93L0lSUS1iYXNlZCBidXMsIHNvIGNsaWVudCBkZXZpY2VzIHNob3VsZCBub3QgYXNzdW1lIHRoZXkKKyAgY2FuIGNhbGwgcGluY3RybF9zZWxlY3Rfc3RhdGUoKSBmcm9tIG5vbi1ibG9ja2luZyBjb250ZXh0cy4KKworLSBwaW5jdHJsX3B1dCgpIGZyZWVzIGFsbCBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggYSBwaW5jdHJsIGhhbmRsZS4KKworLSBkZXZtX3BpbmN0cmxfcHV0KCkgaXMgYSB2YXJpYW50IG9mIHBpbmN0cmxfcHV0KCkgdGhhdCBtYXkgYmUgdXNlZCB0bworICBleHBsaWNpdGx5IGRlc3Ryb3kgYSBwaW5jdHJsIG9iamVjdCByZXR1cm5lZCBieSBkZXZtX3BpbmN0cmxfZ2V0KCkuCisgIEhvd2V2ZXIsIHVzZSBvZiB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgcmFyZSwgZHVlIHRvIHRoZSBhdXRvbWF0aWMgY2xlYW51cAorICB0aGF0IHdpbGwgb2NjdXIgZXZlbiB3aXRob3V0IGNhbGxpbmcgaXQuCisKKyAgcGluY3RybF9nZXQoKSBtdXN0IGJlIHBhaXJlZCB3aXRoIGEgcGxhaW4gcGluY3RybF9wdXQoKS4KKyAgcGluY3RybF9nZXQoKSBtYXkgbm90IGJlIHBhaXJlZCB3aXRoIGRldm1fcGluY3RybF9wdXQoKS4KKyAgZGV2bV9waW5jdHJsX2dldCgpIGNhbiBvcHRpb25hbGx5IGJlIHBhaXJlZCB3aXRoIGRldm1fcGluY3RybF9wdXQoKS4KKyAgZGV2bV9waW5jdHJsX2dldCgpIG1heSBub3QgYmUgcGFpcmVkIHdpdGggcGxhaW4gcGluY3RybF9wdXQoKS4KKworVXN1YWxseSB0aGUgcGluIGNvbnRyb2wgY29yZSBoYW5kbGVkIHRoZSBnZXQvcHV0IHBhaXIgYW5kIGNhbGwgb3V0IHRvIHRoZQorZGV2aWNlIGRyaXZlcnMgYm9va2tlZXBpbmcgb3BlcmF0aW9ucywgbGlrZSBjaGVja2luZyBhdmFpbGFibGUgZnVuY3Rpb25zIGFuZAordGhlIGFzc29jaWF0ZWQgcGlucywgd2hlcmVhcyBzZWxlY3Rfc3RhdGUgcGFzcyBvbiB0byB0aGUgcGluIGNvbnRyb2xsZXIKK2RyaXZlciB3aGljaCB0YWtlcyBjYXJlIG9mIGFjdGl2YXRpbmcgYW5kL29yIGRlYWN0aXZhdGluZyB0aGUgbXV4IHNldHRpbmcgYnkKK3F1aWNrbHkgcG9raW5nIHNvbWUgcmVnaXN0ZXJzLgorCitUaGUgcGlucyBhcmUgYWxsb2NhdGVkIGZvciB5b3VyIGRldmljZSB3aGVuIHlvdSBpc3N1ZSB0aGUgZGV2bV9waW5jdHJsX2dldCgpCitjYWxsLCBhZnRlciB0aGlzIHlvdSBzaG91bGQgYmUgYWJsZSB0byBzZWUgdGhpcyBpbiB0aGUgZGVidWdmcyBsaXN0aW5nIG9mIGFsbAorcGlucy4KKworTk9URTogdGhlIHBpbmN0cmwgc3lzdGVtIHdpbGwgcmV0dXJuIC1FUFJPQkVfREVGRVIgaWYgaXQgY2Fubm90IGZpbmQgdGhlCityZXF1ZXN0ZWQgcGluY3RybCBoYW5kbGVzLCBmb3IgZXhhbXBsZSBpZiB0aGUgcGluY3RybCBkcml2ZXIgaGFzIG5vdCB5ZXQKK3JlZ2lzdGVyZWQuIFRodXMgbWFrZSBzdXJlIHRoYXQgdGhlIGVycm9yIHBhdGggaW4geW91ciBkcml2ZXIgZ3JhY2VmdWxseQorY2xlYW5zIHVwIGFuZCBpcyByZWFkeSB0byByZXRyeSB0aGUgcHJvYmluZyBsYXRlciBpbiB0aGUgc3RhcnR1cCBwcm9jZXNzLgorCisKK0RyaXZlcnMgbmVlZGluZyBib3RoIHBpbiBjb250cm9sIGFuZCBHUElPcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FnYWluLCBpdCBpcyBkaXNjb3VyYWdlZCB0byBsZXQgZHJpdmVycyBsb29rdXAgYW5kIHNlbGVjdCBwaW4gY29udHJvbCBzdGF0ZXMKK3RoZW1zZWx2ZXMsIGJ1dCBhZ2FpbiBzb21ldGltZXMgdGhpcyBpcyB1bmF2b2lkYWJsZS4KKworU28gc2F5IHRoYXQgeW91ciBkcml2ZXIgaXMgZmV0Y2hpbmcgaXRzIHJlc291cmNlcyBsaWtlIHRoaXM6CisKKyNpbmNsdWRlIDxsaW51eC9waW5jdHJsL2NvbnN1bWVyLmg+CisjaW5jbHVkZSA8bGludXgvZ3Bpby5oPgorCitzdHJ1Y3QgcGluY3RybCAqcGluY3RybDsKK2ludCBncGlvOworCitwaW5jdHJsID0gZGV2bV9waW5jdHJsX2dldF9zZWxlY3RfZGVmYXVsdCgmZGV2KTsKK2dwaW8gPSBkZXZtX2dwaW9fcmVxdWVzdCgmZGV2LCAxNCwgImZvbyIpOworCitIZXJlIHdlIGZpcnN0IHJlcXVlc3QgYSBjZXJ0YWluIHBpbiBzdGF0ZSBhbmQgdGhlbiByZXF1ZXN0IEdQSU8gMTQgdG8gYmUKK3VzZWQuIElmIHlvdSdyZSB1c2luZyB0aGUgc3Vic3lzdGVtcyBvcnRob2dvbmFsbHkgbGlrZSB0aGlzLCB5b3Ugc2hvdWxkCitub21pbmFsbHkgYWx3YXlzIGdldCB5b3VyIHBpbmN0cmwgaGFuZGxlIGFuZCBzZWxlY3QgdGhlIGRlc2lyZWQgcGluY3RybAorc3RhdGUgQkVGT1JFIHJlcXVlc3RpbmcgdGhlIEdQSU8uIFRoaXMgaXMgYSBzZW1hbnRpYyBjb252ZW50aW9uIHRvIGF2b2lkCitzaXR1YXRpb25zIHRoYXQgY2FuIGJlIGVsZWN0cmljYWxseSB1bnBsZWFzYW50LCB5b3Ugd2lsbCBjZXJ0YWlubHkgd2FudCB0bworbXV4IGluIGFuZCBiaWFzIHBpbnMgaW4gYSBjZXJ0YWluIHdheSBiZWZvcmUgdGhlIEdQSU8gc3Vic3lzdGVtcyBzdGFydHMgdG8KK2RlYWwgd2l0aCB0aGVtLgorCitUaGUgYWJvdmUgY2FuIGJlIGhpZGRlbjogdXNpbmcgdGhlIGRldmljZSBjb3JlLCB0aGUgcGluY3RybCBjb3JlIG1heSBiZQorc2V0dGluZyB1cCB0aGUgY29uZmlnIGFuZCBtdXhpbmcgZm9yIHRoZSBwaW5zIHJpZ2h0IGJlZm9yZSB0aGUgZGV2aWNlIGlzCitwcm9iaW5nLCBuZXZlcnRoZWxlc3Mgb3J0aG9nb25hbCB0byB0aGUgR1BJTyBzdWJzeXN0ZW0uCisKK0J1dCB0aGVyZSBhcmUgYWxzbyBzaXR1YXRpb25zIHdoZXJlIGl0IG1ha2VzIHNlbnNlIGZvciB0aGUgR1BJTyBzdWJzeXN0ZW0KK3RvIGNvbW11bmljYXRlIGRpcmVjdGx5IHdpdGggdGhlIHBpbmN0cmwgc3Vic3lzdGVtLCB1c2luZyB0aGUgbGF0dGVyIGFzIGEKK2JhY2stZW5kLiBUaGlzIGlzIHdoZW4gdGhlIEdQSU8gZHJpdmVyIG1heSBjYWxsIG91dCB0byB0aGUgZnVuY3Rpb25zCitkZXNjcmliZWQgaW4gdGhlIHNlY3Rpb24gIlBpbiBjb250cm9sIGludGVyYWN0aW9uIHdpdGggdGhlIEdQSU8gc3Vic3lzdGVtIgorYWJvdmUuIFRoaXMgb25seSBpbnZvbHZlcyBwZXItcGluIG11bHRpcGxleGluZywgYW5kIHdpbGwgYmUgY29tcGxldGVseQoraGlkZGVuIGJlaGluZCB0aGUgZ3Bpb18qKCkgZnVuY3Rpb24gbmFtZXNwYWNlLiBJbiB0aGlzIGNhc2UsIHRoZSBkcml2ZXIKK25lZWQgbm90IGludGVyYWN0IHdpdGggdGhlIHBpbiBjb250cm9sIHN1YnN5c3RlbSBhdCBhbGwuCisKK0lmIGEgcGluIGNvbnRyb2wgZHJpdmVyIGFuZCBhIEdQSU8gZHJpdmVyIGlzIGRlYWxpbmcgd2l0aCB0aGUgc2FtZSBwaW5zCithbmQgdGhlIHVzZSBjYXNlcyBpbnZvbHZlIG11bHRpcGxleGluZywgeW91IE1VU1QgaW1wbGVtZW50IHRoZSBwaW4gY29udHJvbGxlcgorYXMgYSBiYWNrLWVuZCBmb3IgdGhlIEdQSU8gZHJpdmVyIGxpa2UgdGhpcywgdW5sZXNzIHlvdXIgaGFyZHdhcmUgZGVzaWduCitpcyBzdWNoIHRoYXQgdGhlIEdQSU8gY29udHJvbGxlciBjYW4gb3ZlcnJpZGUgdGhlIHBpbiBjb250cm9sbGVyJ3MKK211bHRpcGxleGluZyBzdGF0ZSB0aHJvdWdoIGhhcmR3YXJlIHdpdGhvdXQgdGhlIG5lZWQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUKK3BpbiBjb250cm9sIHN5c3RlbS4KKworCitTeXN0ZW0gcGluIGNvbnRyb2wgaG9nZ2luZworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUGluIGNvbnRyb2wgbWFwIGVudHJpZXMgY2FuIGJlIGhvZ2dlZCBieSB0aGUgY29yZSB3aGVuIHRoZSBwaW4gY29udHJvbGxlcgoraXMgcmVnaXN0ZXJlZC4gVGhpcyBtZWFucyB0aGF0IHRoZSBjb3JlIHdpbGwgYXR0ZW1wdCB0byBjYWxsIHBpbmN0cmxfZ2V0KCksCitsb29rdXBfc3RhdGUoKSBhbmQgc2VsZWN0X3N0YXRlKCkgb24gaXQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHBpbiBjb250cm9sCitkZXZpY2UgaGFzIGJlZW4gcmVnaXN0ZXJlZC4KKworVGhpcyBvY2N1cnMgZm9yIG1hcHBpbmcgdGFibGUgZW50cmllcyB3aGVyZSB0aGUgY2xpZW50IGRldmljZSBuYW1lIGlzIGVxdWFsCit0byB0aGUgcGluIGNvbnRyb2xsZXIgZGV2aWNlIG5hbWUsIGFuZCB0aGUgc3RhdGUgbmFtZSBpcyBQSU5DVFJMX1NUQVRFX0RFRkFVTFQuCisKK3sKKwkuZGV2X25hbWUgPSAicGluY3RybC1mb28iLAorCS5uYW1lID0gUElOQ1RSTF9TVEFURV9ERUZBVUxULAorCS50eXBlID0gUElOX01BUF9UWVBFX01VWF9HUk9VUCwKKwkuY3RybF9kZXZfbmFtZSA9ICJwaW5jdHJsLWZvbyIsCisJLmZ1bmN0aW9uID0gInBvd2VyX2Z1bmMiLAorfSwKKworU2luY2UgaXQgbWF5IGJlIGNvbW1vbiB0byByZXF1ZXN0IHRoZSBjb3JlIHRvIGhvZyBhIGZldyBhbHdheXMtYXBwbGljYWJsZQorbXV4IHNldHRpbmdzIG9uIHRoZSBwcmltYXJ5IHBpbiBjb250cm9sbGVyLCB0aGVyZSBpcyBhIGNvbnZlbmllbmNlIG1hY3JvIGZvcgordGhpczoKKworUElOX01BUF9NVVhfR1JPVVBfSE9HX0RFRkFVTFQoInBpbmN0cmwtZm9vIiwgTlVMTCAvKiBncm91cCAqLywgInBvd2VyX2Z1bmMiKQorCitUaGlzIGdpdmVzIHRoZSBleGFjdCBzYW1lIHJlc3VsdCBhcyB0aGUgYWJvdmUgY29uc3RydWN0aW9uLgorCisKK1J1bnRpbWUgcGlubXV4aW5nCis9PT09PT09PT09PT09PT09PQorCitJdCBpcyBwb3NzaWJsZSB0byBtdXggYSBjZXJ0YWluIGZ1bmN0aW9uIGluIGFuZCBvdXQgYXQgcnVudGltZSwgc2F5IHRvIG1vdmUKK2FuIFNQSSBwb3J0IGZyb20gb25lIHNldCBvZiBwaW5zIHRvIGFub3RoZXIgc2V0IG9mIHBpbnMuIFNheSBmb3IgZXhhbXBsZSBmb3IKK3NwaTAgaW4gdGhlIGV4YW1wbGUgYWJvdmUsIHdlIGV4cG9zZSB0d28gZGlmZmVyZW50IGdyb3VwcyBvZiBwaW5zIGZvciB0aGUgc2FtZQorZnVuY3Rpb24sIGJ1dCB3aXRoIGRpZmZlcmVudCBuYW1lZCBpbiB0aGUgbWFwcGluZyBhcyBkZXNjcmliZWQgdW5kZXIKKyJBZHZhbmNlZCBtYXBwaW5nIiBhYm92ZS4gU28gdGhhdCBmb3IgYW4gU1BJIGRldmljZSwgd2UgaGF2ZSB0d28gc3RhdGVzIG5hbWVkCisicG9zLUEiIGFuZCAicG9zLUIiLgorCitUaGlzIHNuaXBwZXQgZmlyc3QgaW5pdGlhbGl6ZXMgYSBzdGF0ZSBvYmplY3QgZm9yIGJvdGggZ3JvdXBzIChpbiBmb29fcHJvYmUoKSksCit0aGVuIG11eGVzIHRoZSBmdW5jdGlvbiBpbiB0aGUgcGlucyBkZWZpbmVkIGJ5IGdyb3VwIEEsIGFuZCBmaW5hbGx5IG11eGVzIGl0IGluCitvbiB0aGUgcGlucyBkZWZpbmVkIGJ5IGdyb3VwIEI6CisKKyNpbmNsdWRlIDxsaW51eC9waW5jdHJsL2NvbnN1bWVyLmg+CisKK3N0cnVjdCBwaW5jdHJsICpwOworc3RydWN0IHBpbmN0cmxfc3RhdGUgKnMxLCAqczI7CisKK2Zvb19wcm9iZSgpCit7CisJLyogU2V0dXAgKi8KKwlwID0gZGV2bV9waW5jdHJsX2dldCgmZGV2aWNlKTsKKwlpZiAoSVNfRVJSKHApKQorCQkuLi4KKworCXMxID0gcGluY3RybF9sb29rdXBfc3RhdGUoZm9vLT5wLCAicG9zLUEiKTsKKwlpZiAoSVNfRVJSKHMxKSkKKwkJLi4uCisKKwlzMiA9IHBpbmN0cmxfbG9va3VwX3N0YXRlKGZvby0+cCwgInBvcy1CIik7CisJaWYgKElTX0VSUihzMikpCisJCS4uLgorfQorCitmb29fc3dpdGNoKCkKK3sKKwkvKiBFbmFibGUgb24gcG9zaXRpb24gQSAqLworCXJldCA9IHBpbmN0cmxfc2VsZWN0X3N0YXRlKHMxKTsKKwlpZiAocmV0IDwgMCkKKwkgICAgLi4uCisKKwkuLi4KKworCS8qIEVuYWJsZSBvbiBwb3NpdGlvbiBCICovCisJcmV0ID0gcGluY3RybF9zZWxlY3Rfc3RhdGUoczIpOworCWlmIChyZXQgPCAwKQorCSAgICAuLi4KKworCS4uLgorfQorCitUaGUgYWJvdmUgaGFzIHRvIGJlIGRvbmUgZnJvbSBwcm9jZXNzIGNvbnRleHQuIFRoZSByZXNlcnZhdGlvbiBvZiB0aGUgcGlucword2lsbCBiZSBkb25lIHdoZW4gdGhlIHN0YXRlIGlzIGFjdGl2YXRlZCwgc28gaW4gZWZmZWN0IG9uZSBzcGVjaWZpYyBwaW4KK2NhbiBiZSB1c2VkIGJ5IGRpZmZlcmVudCBmdW5jdGlvbnMgYXQgZGlmZmVyZW50IHRpbWVzIG9uIGEgcnVubmluZyBzeXN0ZW0uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3BsYXRmb3JtL3g4Ni1sYXB0b3AtZHJpdmVycy50eHQgYi9Eb2N1bWVudGF0aW9uL3BsYXRmb3JtL3g4Ni1sYXB0b3AtZHJpdmVycy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFmYWNkMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcGxhdGZvcm0veDg2LWxhcHRvcC1kcml2ZXJzLnR4dApAQCAtMCwwICsxLDE4IEBACitjb21wYWwtbGFwdG9wCis9PT09PT09PT09PT09CitMaXN0IG9mIHN1cHBvcnRlZCBoYXJkd2FyZToKKworYnkgQ29tcGFsOgorCUNvbXBhbCBGTDkwL0lGTDkwCisJQ29tcGFsIEZMOTEvSUZMOTEKKwlDb21wYWwgRkw5Mi9KRkw5MgorCUNvbXBhbCBGVDAwL0lGVDAwCisKK2J5IERlbGw6CisJRGVsbCBWb3N0cm8gMTIwMAorCURlbGwgTWluaSA5IChJbnNwaXJvbiA5MTApCisJRGVsbCBNaW5pIDEwIChJbnNwaXJvbiAxMDEwKQorCURlbGwgTWluaSAxMHYgKEluc3Bpcm9uIDEwMTEpCisJRGVsbCBNaW5pIDEwMTIgKEluc3Bpcm9uIDEwMTIpCisJRGVsbCBJbnNwaXJvbiAxMXogKEluc3Bpcm9uIDExMTApCisJRGVsbCBNaW5pIDEyIChJbnNwaXJvbiAxMjEwKQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wbnAudHh0IGIvRG9jdW1lbnRhdGlvbi9wbnAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2M2U0NjUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3BucC50eHQKQEAgLTAsMCArMSwyNTEgQEAKK0xpbnV4IFBsdWcgYW5kIFBsYXkgRG9jdW1lbnRhdGlvbgorYnkgQWRhbSBCZWxheSA8YW1ieDFAbmVvLnJyLmNvbT4KK2xhc3QgdXBkYXRlZDogT2N0LiAxNiwgMjAwMgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworCitPdmVydmlldworLS0tLS0tLS0KKwlQbHVnIGFuZCBQbGF5IHByb3ZpZGVzIGEgbWVhbnMgb2YgZGV0ZWN0aW5nIGFuZCBzZXR0aW5nIHJlc291cmNlcyBmb3IgbGVnYWN5IG9yCitvdGhlcndpc2UgdW5jb25maWd1cmFibGUgZGV2aWNlcy4gIFRoZSBMaW51eCBQbHVnIGFuZCBQbGF5IExheWVyIHByb3ZpZGVzIHRoZXNlIAorc2VydmljZXMgdG8gY29tcGF0aWJsZSBkcml2ZXJzLgorCisKKworVGhlIFVzZXIgSW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0tLS0KKwlUaGUgTGludXggUGx1ZyBhbmQgUGxheSB1c2VyIGludGVyZmFjZSBwcm92aWRlcyBhIG1lYW5zIHRvIGFjdGl2YXRlIFBuUCBkZXZpY2VzCitmb3IgbGVnYWN5IGFuZCB1c2VyIGxldmVsIGRyaXZlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBMaW51eCBQbHVnIGFuZCBQbGF5LiAgVGhlIAordXNlciBpbnRlcmZhY2UgaXMgaW50ZWdyYXRlZCBpbnRvIHN5c2ZzLgorCitJbiBhZGRpdGlvbiB0byB0aGUgc3RhbmRhcmQgc3lzZnMgZmlsZSB0aGUgZm9sbG93aW5nIGFyZSBjcmVhdGVkIGluIGVhY2gKK2RldmljZSdzIGRpcmVjdG9yeToKK2lkIC0gZGlzcGxheXMgYSBsaXN0IG9mIHN1cHBvcnQgRUlTQSBJRHMKK29wdGlvbnMgLSBkaXNwbGF5cyBwb3NzaWJsZSByZXNvdXJjZSBjb25maWd1cmF0aW9ucworcmVzb3VyY2VzIC0gZGlzcGxheXMgY3VycmVudGx5IGFsbG9jYXRlZCByZXNvdXJjZXMgYW5kIGFsbG93cyByZXNvdXJjZSBjaGFuZ2VzCisKKy1hY3RpdmF0aW5nIGEgZGV2aWNlCisKKyNlY2hvICJhdXRvIiA+IHJlc291cmNlcworCit0aGlzIHdpbGwgaW52b2tlIHRoZSBhdXRvbWF0aWMgcmVzb3VyY2UgY29uZmlnIHN5c3RlbSB0byBhY3RpdmF0ZSB0aGUgZGV2aWNlCisKKy1tYW51YWxseSBhY3RpdmF0aW5nIGEgZGV2aWNlCisKKyNlY2hvICJtYW51YWwgPGRlcG51bT4gPG1vZGU+IiA+IHJlc291cmNlcworPGRlcG51bT4gLSB0aGUgY29uZmlndXJhdGlvbiBudW1iZXIKKzxtb2RlPiAtIHN0YXRpYyBvciBkeW5hbWljCisJCXN0YXRpYyA9IGZvciBuZXh0IGJvb3QKKwkJZHluYW1pYyA9IG5vdworCistZGlzYWJsaW5nIGEgZGV2aWNlCisKKyNlY2hvICJkaXNhYmxlIiA+IHJlc291cmNlcworCisKK0VYQU1QTEU6CisKK1N1cHBvc2UgeW91IG5lZWQgdG8gYWN0aXZhdGUgdGhlIGZsb3BweSBkaXNrIGNvbnRyb2xsZXIuCisxLikgY2hhbmdlIHRvIHRoZSBwcm9wZXIgZGlyZWN0b3J5LCBpbiBteSBjYXNlIGl0IGlzIAorL2RyaXZlci9idXMvcG5wL2RldmljZXMvMDA6MGYKKyMgY2QgL2RyaXZlci9idXMvcG5wL2RldmljZXMvMDA6MGYKKyMgY2F0IG5hbWUKK1BDIHN0YW5kYXJkIGZsb3BweSBkaXNrIGNvbnRyb2xsZXIKKworMi4pIGNoZWNrIGlmIHRoZSBkZXZpY2UgaXMgYWxyZWFkeSBhY3RpdmUKKyMgY2F0IHJlc291cmNlcworRElTQUJMRUQKKworLSBOb3RpY2UgdGhlIHN0cmluZyAiRElTQUJMRUQiLiAgVGhpcyBtZWFucyB0aGUgZGV2aWNlIGlzIG5vdCBhY3RpdmUuCisKKzMuKSBjaGVjayB0aGUgZGV2aWNlJ3MgcG9zc2libGUgY29uZmlndXJhdGlvbnMgKG9wdGlvbmFsKQorIyBjYXQgb3B0aW9ucworRGVwZW5kZW50OiAwMSAtIFByaW9yaXR5IGFjY2VwdGFibGUKKyAgICBwb3J0IDB4M2YwLTB4M2YwLCBhbGlnbiAweDcsIHNpemUgMHg2LCAxNi1iaXQgYWRkcmVzcyBkZWNvZGluZworICAgIHBvcnQgMHgzZjctMHgzZjcsIGFsaWduIDB4MCwgc2l6ZSAweDEsIDE2LWJpdCBhZGRyZXNzIGRlY29kaW5nCisgICAgaXJxIDYKKyAgICBkbWEgMiA4LWJpdCBjb21wYXRpYmxlCitEZXBlbmRlbnQ6IDAyIC0gUHJpb3JpdHkgYWNjZXB0YWJsZQorICAgIHBvcnQgMHgzNzAtMHgzNzAsIGFsaWduIDB4Nywgc2l6ZSAweDYsIDE2LWJpdCBhZGRyZXNzIGRlY29kaW5nCisgICAgcG9ydCAweDM3Ny0weDM3NywgYWxpZ24gMHgwLCBzaXplIDB4MSwgMTYtYml0IGFkZHJlc3MgZGVjb2RpbmcKKyAgICBpcnEgNgorICAgIGRtYSAyIDgtYml0IGNvbXBhdGlibGUKKworNC4pIG5vdyBhY3RpdmF0ZSB0aGUgZGV2aWNlCisjIGVjaG8gImF1dG8iID4gcmVzb3VyY2VzCisKKzUuKSBmaW5hbGx5IGNoZWNrIGlmIHRoZSBkZXZpY2UgaXMgYWN0aXZlCisjIGNhdCByZXNvdXJjZXMKK2lvIDB4M2YwLTB4M2Y1CitpbyAweDNmNy0weDNmNworaXJxIDYKK2RtYSAyCisKK2Fsc28gdGhlcmUgYXJlIGEgc2VyaWVzIG9mIGtlcm5lbCBwYXJhbWV0ZXJzOgorcG5wX3Jlc2VydmVfaXJxPWlycTFbLGlycTJdIC4uLi4KK3BucF9yZXNlcnZlX2RtYT1kbWExWyxkbWEyXSAuLi4uCitwbnBfcmVzZXJ2ZV9pbz1pbzEsc2l6ZTFbLGlvMixzaXplMl0gLi4uLgorcG5wX3Jlc2VydmVfbWVtPW1lbTEsc2l6ZTFbLG1lbTIsc2l6ZTJdIC4uLi4KKworCisKK1RoZSBVbmlmaWVkIFBsdWcgYW5kIFBsYXkgTGF5ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlBbGwgUGx1ZyBhbmQgUGxheSBkcml2ZXJzLCBwcm90b2NvbHMsIGFuZCBzZXJ2aWNlcyBtZWV0IGF0IGEgY2VudHJhbCBsb2NhdGlvbiAKK2NhbGxlZCB0aGUgUGx1ZyBhbmQgUGxheSBMYXllci4gIFRoaXMgbGF5ZXIgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBleGNoYW5nZSBvZiAKK2luZm9ybWF0aW9uIGJldHdlZW4gUG5QIGRyaXZlcnMgYW5kIFBuUCBwcm90b2NvbHMuICBUaHVzIGl0IGF1dG9tYXRpY2FsbHkgCitmb3J3YXJkcyBjb21tYW5kcyB0byB0aGUgcHJvcGVyIHByb3RvY29sLiAgVGhpcyBtYWtlcyB3cml0aW5nIFBuUCBkcml2ZXJzIAorc2lnbmlmaWNhbnRseSBlYXNpZXIuCisKK1RoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgZnJvbSB0aGUgUGx1ZyBhbmQgUGxheSBMYXllcjoKKworcG5wX2dldF9wcm90b2NvbAorLSBpbmNyZW1lbnRzIHRoZSBudW1iZXIgb2YgdXNlcyBieSBvbmUKKworcG5wX3B1dF9wcm90b2NvbAorLSBkZWluY3JlbWVudHMgdGhlIG51bWJlciBvZiB1c2VzIGJ5IG9uZQorCitwbnBfcmVnaXN0ZXJfcHJvdG9jb2wKKy0gdXNlIHRoaXMgdG8gcmVnaXN0ZXIgYSBuZXcgUG5QIHByb3RvY29sCisKK3BucF91bnJlZ2lzdGVyX3Byb3RvY29sCistIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIHJlbW92ZSBhIFBuUCBwcm90b2NvbCBmcm9tIHRoZSBQbHVnIGFuZCBQbGF5IExheWVyCisKK3BucF9yZWdpc3Rlcl9kcml2ZXIKKy0gYWRkcyBhIFBuUCBkcml2ZXIgdG8gdGhlIFBsdWcgYW5kIFBsYXkgTGF5ZXIKKy0gdGhpcyBpbmNsdWRlcyBkcml2ZXIgbW9kZWwgaW50ZWdyYXRpb24KKy0gcmV0dXJucyB6ZXJvIGZvciBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgbnVtYmVyIGZvciBmYWlsdXJlOyBjb3VudAorICBjYWxscyB0byB0aGUgLmFkZCgpIG1ldGhvZCBpZiB5b3UgbmVlZCB0byBrbm93IGhvdyBtYW55IGRldmljZXMgYmluZCB0bworICB0aGUgZHJpdmVyCisKK3BucF91bnJlZ2lzdGVyX2RyaXZlcgorLSByZW1vdmVzIGEgUG5QIGRyaXZlciBmcm9tIHRoZSBQbHVnIGFuZCBQbGF5IExheWVyCisKKworCitQbHVnIGFuZCBQbGF5IFByb3RvY29scworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlUaGlzIHNlY3Rpb24gY29udGFpbnMgaW5mb3JtYXRpb24gZm9yIFBuUCBwcm90b2NvbCBkZXZlbG9wZXJzLgorCitUaGUgZm9sbG93aW5nIFByb3RvY29scyBhcmUgY3VycmVudGx5IGF2YWlsYWJsZSBpbiB0aGUgY29tcHV0aW5nIHdvcmxkOgorLSBQTlBCSU9TOiB1c2VkIGZvciBzeXN0ZW0gZGV2aWNlcyBzdWNoIGFzIHNlcmlhbCBhbmQgcGFyYWxsZWwgcG9ydHMuCistIElTQVBOUDogcHJvdmlkZXMgUG5QIHN1cHBvcnQgZm9yIHRoZSBJU0EgYnVzCistIEFDUEk6IGFtb25nIGl0cyBtYW55IHVzZXMsIEFDUEkgcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQgc3lzdGVtIGxldmVsIAorZGV2aWNlcy4KK0l0IGlzIG1lYW50IHRvIHJlcGxhY2UgdGhlIFBOUEJJT1MuICBJdCBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBieSBMaW51eAorUGx1ZyBhbmQgUGxheSBidXQgaXQgaXMgcGxhbm5lZCB0byBiZSBpbiB0aGUgbmVhciBmdXR1cmUuCisKKworUmVxdWlyZW1lbnRzIGZvciBhIExpbnV4IFBuUCBwcm90b2NvbDoKKzEuKSB0aGUgcHJvdG9jb2wgbXVzdCB1c2UgRUlTQSBJRHMKKzIuKSB0aGUgcHJvdG9jb2wgbXVzdCBpbmZvcm0gdGhlIFBuUCBMYXllciBvZiBhIGRldmljZSdzIGN1cnJlbnQgY29uZmlndXJhdGlvbgorLSB0aGUgYWJpbGl0eSB0byBzZXQgcmVzb3VyY2VzIGlzIG9wdGlvbmFsIGJ1dCBwcmVmZXJyZWQuCisKK1RoZSBmb2xsb3dpbmcgYXJlIFBuUCBwcm90b2NvbCByZWxhdGVkIGZ1bmN0aW9uczoKKworcG5wX2FkZF9kZXZpY2UKKy0gdXNlIHRoaXMgZnVuY3Rpb24gdG8gYWRkIGEgUG5QIGRldmljZSB0byB0aGUgUG5QIGxheWVyCistIG9ubHkgY2FsbCB0aGlzIGZ1bmN0aW9uIHdoZW4gYWxsIHdhbnRlZCB2YWx1ZXMgYXJlIHNldCBpbiB0aGUgcG5wX2RldiAKK3N0cnVjdHVyZQorCitwbnBfaW5pdF9kZXZpY2UKKy0gY2FsbCB0aGlzIHRvIGluaXRpYWxpemUgdGhlIFBuUCBzdHJ1Y3R1cmUKKworcG5wX3JlbW92ZV9kZXZpY2UKKy0gY2FsbCB0aGlzIHRvIHJlbW92ZSBhIGRldmljZSBmcm9tIHRoZSBQbHVnIGFuZCBQbGF5IExheWVyLgorLSBpdCB3aWxsIGZhaWwgaWYgdGhlIGRldmljZSBpcyBzdGlsbCBpbiB1c2UuCistIGF1dG9tYXRpY2FsbHkgd2lsbCBmcmVlIG1lbSB1c2VkIGJ5IHRoZSBkZXZpY2UgYW5kIHJlbGF0ZWQgc3RydWN0dXJlcworCitwbnBfYWRkX2lkCistIGFkZHMgYW4gRUlTQSBJRCB0byB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgSURzIGZvciB0aGUgc3BlY2lmaWVkIGRldmljZQorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBjb25zdWx0IHRoZSBzb3VyY2Ugb2YgYSBwcm90b2NvbCBzdWNoIGFzCisvZHJpdmVycy9wbnAvcG5wYmlvcy9jb3JlLmMuCisKKworCitMaW51eCBQbHVnIGFuZCBQbGF5IERyaXZlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCVRoaXMgc2VjdGlvbiBjb250YWlucyBpbmZvcm1hdGlvbiBmb3IgTGludXggUG5QIGRyaXZlciBkZXZlbG9wZXJzLgorCitUaGUgTmV3IFdheQorLi4uLi4uLi4uLi4KKzEuKSBmaXJzdCBtYWtlIGEgbGlzdCBvZiBzdXBwb3J0ZWQgRUlTQSBJRFMKK2V4Ogorc3RhdGljIGNvbnN0IHN0cnVjdCBwbnBfaWQgcG5wX2Rldl90YWJsZVtdID0geworCS8qIFN0YW5kYXJkIExQVCBQcmludGVyIFBvcnQgKi8KKwl7LmlkID0gIlBOUDA0MDAiLCAuZHJpdmVyX2RhdGEgPSAwfSwKKwkvKiBFQ1AgUHJpbnRlciBQb3J0ICovCisJey5pZCA9ICJQTlAwNDAxIiwgLmRyaXZlcl9kYXRhID0gMH0sCisJey5pZCA9ICIifQorfTsKKworUGxlYXNlIG5vdGUgdGhhdCB0aGUgY2hhcmFjdGVyICdYJyBjYW4gYmUgdXNlZCBhcyBhIHdpbGQgY2FyZCBpbiB0aGUgZnVuY3Rpb24KK3BvcnRpb24gKGxhc3QgZm91ciBjaGFyYWN0ZXJzKS4KK2V4OgorCS8qIFVua25vd24gUG5QIG1vZGVtcyAqLworCXsJIlBOUENYWFgiLAkJVU5LTk9XTl9ERVYJfSwKKworU3VwcG9ydGVkIFBuUCBjYXJkIElEcyBjYW4gb3B0aW9uYWxseSBiZSBkZWZpbmVkLgorZXg6CitzdGF0aWMgY29uc3Qgc3RydWN0IHBucF9pZCBwbnBfY2FyZF90YWJsZVtdID0geworCXsJIkFOWURFVlMiLAkJMAl9LAorCXsJIiIsCQkJMAl9Cit9OworCisyLikgT3B0aW9uYWxseSBkZWZpbmUgcHJvYmUgYW5kIHJlbW92ZSBmdW5jdGlvbnMuICBJdCBtYXkgbWFrZSBzZW5zZSBub3QgdG8gCitkZWZpbmUgdGhlc2UgZnVuY3Rpb25zIGlmIHRoZSBkcml2ZXIgYWxyZWFkeSBoYXMgYSByZWxpYWJsZSBtZXRob2Qgb2YgZGV0ZWN0aW5nCit0aGUgcmVzb3VyY2VzLCBzdWNoIGFzIHRoZSBwYXJwb3J0X3BjIGRyaXZlci4KK2V4Ogorc3RhdGljIGludAorc2VyaWFsX3BucF9wcm9iZShzdHJ1Y3QgcG5wX2RldiAqIGRldiwgY29uc3Qgc3RydWN0IHBucF9pZCAqY2FyZF9pZCwgY29uc3QgCisgICAgICAgICAgICAgICAgIHN0cnVjdCBwbnBfaWQgKmRldl9pZCkKK3sKKy4gLiAuCisKK2V4Ogorc3RhdGljIHZvaWQgc2VyaWFsX3BucF9yZW1vdmUoc3RydWN0IHBucF9kZXYgKiBkZXYpCit7CisuIC4gLgorCitjb25zdWx0IC9kcml2ZXJzL3NlcmlhbC84MjUwX3BucC5jIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCiszLikgY3JlYXRlIGEgZHJpdmVyIHN0cnVjdHVyZQorZXg6CisKK3N0YXRpYyBzdHJ1Y3QgcG5wX2RyaXZlciBzZXJpYWxfcG5wX2RyaXZlciA9IHsKKwkubmFtZQkJPSAic2VyaWFsIiwKKwkuY2FyZF9pZF90YWJsZQk9IHBucF9jYXJkX3RhYmxlLAorCS5pZF90YWJsZQk9IHBucF9kZXZfdGFibGUsCisJLnByb2JlCQk9IHNlcmlhbF9wbnBfcHJvYmUsCisJLnJlbW92ZQkJPSBzZXJpYWxfcG5wX3JlbW92ZSwKK307CisKKyogbmFtZSBhbmQgaWRfdGFibGUgY2Fubm90IGJlIE5VTEwuCisKKzQuKSByZWdpc3RlciB0aGUgZHJpdmVyCitleDoKKworc3RhdGljIGludCBfX2luaXQgc2VyaWFsODI1MF9wbnBfaW5pdCh2b2lkKQoreworCXJldHVybiBwbnBfcmVnaXN0ZXJfZHJpdmVyKCZzZXJpYWxfcG5wX2RyaXZlcik7Cit9CisKK1RoZSBPbGQgV2F5CisuLi4uLi4uLi4uLgorCitBIHNlcmllcyBvZiBjb21wYXRpYmlsaXR5IGZ1bmN0aW9ucyBoYXZlIGJlZW4gY3JlYXRlZCB0byBtYWtlIGl0IGVhc3kgdG8gY29udmVydAorSVNBUE5QIGRyaXZlcnMuICBUaGV5IHNob3VsZCBzZXJ2ZSBhcyBhIHRlbXBvcmFyeSBzb2x1dGlvbiBvbmx5LgorCitUaGV5IGFyZSBhcyBmb2xsb3dzOgorCitzdHJ1Y3QgcG5wX2NhcmQgKnBucF9maW5kX2NhcmQodW5zaWduZWQgc2hvcnQgdmVuZG9yLAorCQkJCSB1bnNpZ25lZCBzaG9ydCBkZXZpY2UsCisJCQkJIHN0cnVjdCBwbnBfY2FyZCAqZnJvbSkKKworc3RydWN0IHBucF9kZXYgKnBucF9maW5kX2RldihzdHJ1Y3QgcG5wX2NhcmQgKmNhcmQsCisJCQkJdW5zaWduZWQgc2hvcnQgdmVuZG9yLAorCQkJCXVuc2lnbmVkIHNob3J0IGZ1bmN0aW9uLAorCQkJCXN0cnVjdCBwbnBfZGV2ICpmcm9tKQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VyLzAwLUlOREVYIGIvRG9jdW1lbnRhdGlvbi9wb3dlci8wMC1JTkRFWApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDA0Y2M4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci8wMC1JTkRFWApAQCAtMCwwICsxLDQ2IEBACiswMC1JTkRFWAorCS0gVGhpcyBmaWxlCithcG0tYWNwaS50eHQKKwktIGJhc2ljIGluZm8gYWJvdXQgdGhlIEFQTSBhbmQgQUNQSSBzdXBwb3J0LgorYmFzaWMtcG0tZGVidWdnaW5nLnR4dAorCS0gRGVidWdnaW5nIHN1c3BlbmQgYW5kIHJlc3VtZQorY2hhcmdlci1tYW5hZ2VyLnR4dAorCS0gQmF0dGVyeSBjaGFyZ2VyIG1hbmFnZW1lbnQuCitkZXZpY2VzLnR4dAorCS0gSG93IGRyaXZlcnMgaW50ZXJhY3Qgd2l0aCBzeXN0ZW0td2lkZSBwb3dlciBtYW5hZ2VtZW50Citkcml2ZXJzLXRlc3RpbmcudHh0CisJLSBUZXN0aW5nIHN1c3BlbmQgYW5kIHJlc3VtZSBzdXBwb3J0IGluIGRldmljZSBkcml2ZXJzCitmcmVlemluZy1vZi10YXNrcy50eHQKKwktIEhvdyBwcm9jZXNzZXMgYW5kIGNvbnRyb2xsZWQgZHVyaW5nIHN1c3BlbmQKK2ludGVyZmFjZS50eHQKKwktIFBvd2VyIG1hbmFnZW1lbnQgdXNlciBpbnRlcmZhY2UgaW4gL3N5cy9wb3dlcgorbm90aWZpZXJzLnR4dAorCS0gUmVnaXN0ZXJpbmcgc3VzcGVuZCBub3RpZmllcnMgaW4gZGV2aWNlIGRyaXZlcnMKK29wcC50eHQKKwktIE9wZXJhdGluZyBQZXJmb3JtYW5jZSBQb2ludCBsaWJyYXJ5CitwY2kudHh0CisJLSBIb3cgdGhlIFBDSSBTdWJzeXN0ZW0gRG9lcyBQb3dlciBNYW5hZ2VtZW50CitwbV9xb3NfaW50ZXJmYWNlLnR4dAorCS0gaW5mbyBvbiBMaW51eCBQTSBRdWFsaXR5IG9mIFNlcnZpY2UgaW50ZXJmYWNlCitwb3dlcl9zdXBwbHlfY2xhc3MudHh0CisJLSBUZWxscyB1c2Vyc3BhY2UgYWJvdXQgYmF0dGVyeSwgVVBTLCBBQyBvciBEQyBwb3dlciBzdXBwbHkgcHJvcGVydGllcworcnVudGltZV9wbS50eHQKKwktIFBvd2VyIG1hbmFnZW1lbnQgZnJhbWV3b3JrIGZvciBJL08gZGV2aWNlcy4KK3MycmFtLnR4dAorCS0gSG93IHRvIGdldCBzdXNwZW5kIHRvIHJhbSB3b3JraW5nIChhbmQgZGVidWcgaXQgd2hlbiBpdCBpc24ndCkKK3N0YXRlcy50eHQKKwktIFN5c3RlbSBwb3dlciBtYW5hZ2VtZW50IHN0YXRlcworc3VzcGVuZC1hbmQtY3B1aG90cGx1Zy50eHQKKwktIEV4cGxhaW5zIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIFN1c3BlbmQtdG8tUkFNIChTMykgYW5kIENQVSBob3RwbHVnCitzd3N1c3AtYW5kLXN3YXAtZmlsZXMudHh0CisJLSBVc2luZyBzd2FwIGZpbGVzIHdpdGggc29mdHdhcmUgc3VzcGVuZCAodG8gZGlzaykKK3N3c3VzcC1kbWNyeXB0LnR4dAorCS0gSG93IHRvIHVzZSBkbS1jcnlwdCBhbmQgc29mdHdhcmUgc3VzcGVuZCAodG8gZGlzaykgdG9nZXRoZXIKK3N3c3VzcC50eHQKKwktIEdvYWxzLCBpbXBsZW1lbnRhdGlvbiwgYW5kIHVzYWdlIG9mIHNvZnR3YXJlIHN1c3BlbmQgKEFDUEkgUzMpCit0cmlja3MudHh0CisJLSBIb3cgdG8gdHJpY2sgc29mdHdhcmUgc3VzcGVuZCAodG8gZGlzaykgaW50byB3b3JraW5nIHdoZW4gaXQgaXNuJ3QKK3VzZXJsYW5kLXN3c3VzcC50eHQKKwktIEV4cGVyaW1lbnRhbCBpbXBsZW1lbnRhdGlvbiBvZiBzb2Z0d2FyZSBzdXNwZW5kIGluIHVzZXJzcGFjZQordmlkZW8udHh0CisJLSBWaWRlbyBpc3N1ZXMgZHVyaW5nIHJlc3VtZSBmcm9tIHN1c3BlbmQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvYXBtLWFjcGkudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci9hcG0tYWNwaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNjNDIzZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXIvYXBtLWFjcGkudHh0CkBAIC0wLDAgKzEsMzIgQEAKK0FQTSBvciBBQ1BJPworLS0tLS0tLS0tLS0tCitJZiB5b3UgaGF2ZSBhIHJlbGF0aXZlbHkgcmVjZW50IHg4NiBtb2JpbGUsIGRlc2t0b3AsIG9yIHNlcnZlciBzeXN0ZW0sCitvZGRzIGFyZSBpdCBzdXBwb3J0cyBlaXRoZXIgQWR2YW5jZWQgUG93ZXIgTWFuYWdlbWVudCAoQVBNKSBvcgorQWR2YW5jZWQgQ29uZmlndXJhdGlvbiBhbmQgUG93ZXIgSW50ZXJmYWNlIChBQ1BJKS4gIEFDUEkgaXMgdGhlIG5ld2VyCitvZiB0aGUgdHdvIHRlY2hub2xvZ2llcyBhbmQgcHV0cyBwb3dlciBtYW5hZ2VtZW50IGluIHRoZSBoYW5kcyBvZiB0aGUKK29wZXJhdGluZyBzeXN0ZW0sIGFsbG93aW5nIGZvciBtb3JlIGludGVsbGlnZW50IHBvd2VyIG1hbmFnZW1lbnQgdGhhbgoraXMgcG9zc2libGUgd2l0aCBCSU9TIGNvbnRyb2xsZWQgQVBNLgorCitUaGUgYmVzdCB3YXkgdG8gZGV0ZXJtaW5lIHdoaWNoLCBpZiBlaXRoZXIsIHlvdXIgc3lzdGVtIHN1cHBvcnRzIGlzIHRvCitidWlsZCBhIGtlcm5lbCB3aXRoIGJvdGggQUNQSSBhbmQgQVBNIGVuYWJsZWQgKGFzIG9mIDIuMy54IEFDUEkgaXMKK2VuYWJsZWQgYnkgZGVmYXVsdCkuICBJZiBhIHdvcmtpbmcgQUNQSSBpbXBsZW1lbnRhdGlvbiBpcyBmb3VuZCwgdGhlCitBQ1BJIGRyaXZlciB3aWxsIG92ZXJyaWRlIGFuZCBkaXNhYmxlIEFQTSwgb3RoZXJ3aXNlIHRoZSBBUE0gZHJpdmVyCit3aWxsIGJlIHVzZWQuCisKK05vLCBzb3JyeSwgeW91IGNhbm5vdCBoYXZlIGJvdGggQUNQSSBhbmQgQVBNIGVuYWJsZWQgYW5kIHJ1bm5pbmcgYXQKK29uY2UuICBTb21lIHBlb3BsZSB3aXRoIGJyb2tlbiBBQ1BJIG9yIGJyb2tlbiBBUE0gaW1wbGVtZW50YXRpb25zCit3b3VsZCBsaWtlIHRvIHVzZSBib3RoIHRvIGdldCBhIGZ1bGwgc2V0IG9mIHdvcmtpbmcgZmVhdHVyZXMsIGJ1dCB5b3UKK3NpbXBseSBjYW5ub3QgbWl4IGFuZCBtYXRjaCB0aGUgdHdvLiAgT25seSBvbmUgcG93ZXIgbWFuYWdlbWVudAoraW50ZXJmYWNlIGNhbiBiZSBpbiBjb250cm9sIG9mIHRoZSBtYWNoaW5lIGF0IG9uY2UuICBUaGluayBhYm91dCBpdC4uCisKK1VzZXItc3BhY2UgRGFlbW9ucworLS0tLS0tLS0tLS0tLS0tLS0tCitCb3RoIEFQTSBhbmQgQUNQSSByZWx5IG9uIHVzZXItc3BhY2UgZGFlbW9ucywgYXBtZCBhbmQgYWNwaWQKK3Jlc3BlY3RpdmVseSwgdG8gYmUgY29tcGxldGVseSBmdW5jdGlvbmFsLiAgT2J0YWluIGJvdGggb2YgdGhlc2UKK2RhZW1vbnMgZnJvbSB5b3VyIExpbnV4IGRpc3RyaWJ1dGlvbiBvciBmcm9tIHRoZSBJbnRlcm5ldCAoc2VlIGJlbG93KQorYW5kIGJlIHN1cmUgdGhhdCB0aGV5IGFyZSBzdGFydGVkIHNvbWV0aW1lIGluIHRoZSBzeXN0ZW0gYm9vdCBwcm9jZXNzLgorR28gYWhlYWQgYW5kIHN0YXJ0IGJvdGguICBJZiBBQ1BJIG9yIEFQTSBpcyBub3QgYXZhaWxhYmxlIG9uIHlvdXIKK3N5c3RlbSB0aGUgYXNzb2NpYXRlZCBkYWVtb24gd2lsbCBleGl0IGdyYWNlZnVsbHkuCisKKyAgYXBtZDogICBodHRwOi8vZnRwLmRlYmlhbi5vcmcvcG9vbC9tYWluL2EvYXBtZC8KKyAgYWNwaWQ6ICBodHRwOi8vYWNwaWQuc2YubmV0LwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlci9iYXNpYy1wbS1kZWJ1Z2dpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci9iYXNpYy1wbS1kZWJ1Z2dpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NjA5OGMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL2Jhc2ljLXBtLWRlYnVnZ2luZy50eHQKQEAgLTAsMCArMSwyMjkgQEAKK0RlYnVnZ2luZyBoaWJlcm5hdGlvbiBhbmQgc3VzcGVuZAorCShDKSAyMDA3IFJhZmFlbCBKLiBXeXNvY2tpIDxyandAc2lzay5wbD4sIEdQTAorCisxLiBUZXN0aW5nIGhpYmVybmF0aW9uIChha2Egc3VzcGVuZCB0byBkaXNrIG9yIFNURCkKKworVG8gY2hlY2sgaWYgaGliZXJuYXRpb24gd29ya3MsIHlvdSBjYW4gdHJ5IHRvIGhpYmVybmF0ZSBpbiB0aGUgInJlYm9vdCIgbW9kZToKKworIyBlY2hvIHJlYm9vdCA+IC9zeXMvcG93ZXIvZGlzaworIyBlY2hvIGRpc2sgPiAvc3lzL3Bvd2VyL3N0YXRlCisKK2FuZCB0aGUgc3lzdGVtIHNob3VsZCBjcmVhdGUgYSBoaWJlcm5hdGlvbiBpbWFnZSwgcmVib290LCByZXN1bWUgYW5kIGdldCBiYWNrIHRvCit0aGUgY29tbWFuZCBwcm9tcHQgd2hlcmUgeW91IGhhdmUgc3RhcnRlZCB0aGUgdHJhbnNpdGlvbi4gIElmIHRoYXQgaGFwcGVucywKK2hpYmVybmF0aW9uIGlzIG1vc3QgbGlrZWx5IHRvIHdvcmsgY29ycmVjdGx5LiAgU3RpbGwsIHlvdSBuZWVkIHRvIHJlcGVhdCB0aGUKK3Rlc3QgYXQgbGVhc3QgYSBjb3VwbGUgb2YgdGltZXMgaW4gYSByb3cgZm9yIGNvbmZpZGVuY2UuICBbVGhpcyBpcyBuZWNlc3NhcnksCitiZWNhdXNlIHNvbWUgcHJvYmxlbXMgb25seSBzaG93IHVwIG9uIGEgc2Vjb25kIGF0dGVtcHQgYXQgc3VzcGVuZGluZyBhbmQKK3Jlc3VtaW5nIHRoZSBzeXN0ZW0uXSAgTW9yZW92ZXIsIGhpYmVybmF0aW5nIGluIHRoZSAicmVib290IiBhbmQgInNodXRkb3duIgorbW9kZXMgY2F1c2VzIHRoZSBQTSBjb3JlIHRvIHNraXAgc29tZSBwbGF0Zm9ybS1yZWxhdGVkIGNhbGxiYWNrcyB3aGljaCBvbiBBQ1BJCitzeXN0ZW1zIG1pZ2h0IGJlIG5lY2Vzc2FyeSB0byBtYWtlIGhpYmVybmF0aW9uIHdvcmsuICBUaHVzLCBpZiB5b3VyIG1hY2hpbmUgZmFpbHMKK3RvIGhpYmVybmF0ZSBvciByZXN1bWUgaW4gdGhlICJyZWJvb3QiIG1vZGUsIHlvdSBzaG91bGQgdHJ5IHRoZSAicGxhdGZvcm0iIG1vZGU6CisKKyMgZWNobyBwbGF0Zm9ybSA+IC9zeXMvcG93ZXIvZGlzaworIyBlY2hvIGRpc2sgPiAvc3lzL3Bvd2VyL3N0YXRlCisKK3doaWNoIGlzIHRoZSBkZWZhdWx0IGFuZCByZWNvbW1lbmRlZCBtb2RlIG9mIGhpYmVybmF0aW9uLgorCitVbmZvcnR1bmF0ZWx5LCB0aGUgInBsYXRmb3JtIiBtb2RlIG9mIGhpYmVybmF0aW9uIGRvZXMgbm90IHdvcmsgb24gc29tZSBzeXN0ZW1zCit3aXRoIGJyb2tlbiBCSU9TZXMuICBJbiBzdWNoIGNhc2VzIHRoZSAic2h1dGRvd24iIG1vZGUgb2YgaGliZXJuYXRpb24gbWlnaHQKK3dvcms6CisKKyMgZWNobyBzaHV0ZG93biA+IC9zeXMvcG93ZXIvZGlzaworIyBlY2hvIGRpc2sgPiAvc3lzL3Bvd2VyL3N0YXRlCisKKyhpdCBpcyBzaW1pbGFyIHRvIHRoZSAicmVib290IiBtb2RlLCBidXQgaXQgcmVxdWlyZXMgeW91IHRvIHByZXNzIHRoZSBwb3dlcgorYnV0dG9uIHRvIG1ha2UgdGhlIHN5c3RlbSByZXN1bWUpLgorCitJZiBuZWl0aGVyICJwbGF0Zm9ybSIgbm9yICJzaHV0ZG93biIgaGliZXJuYXRpb24gbW9kZSB3b3JrcywgeW91IHdpbGwgbmVlZCB0bworaWRlbnRpZnkgd2hhdCBnb2VzIHdyb25nLgorCithKSBUZXN0IG1vZGVzIG9mIGhpYmVybmF0aW9uCisKK1RvIGZpbmQgb3V0IHdoeSBoaWJlcm5hdGlvbiBmYWlscyBvbiB5b3VyIHN5c3RlbSwgeW91IGNhbiB1c2UgYSBzcGVjaWFsIHRlc3RpbmcKK2ZhY2lsaXR5IGF2YWlsYWJsZSBpZiB0aGUga2VybmVsIGlzIGNvbXBpbGVkIHdpdGggQ09ORklHX1BNX0RFQlVHIHNldC4gIFRoZW4sCit0aGVyZSBpcyB0aGUgZmlsZSAvc3lzL3Bvd2VyL3BtX3Rlc3QgdGhhdCBjYW4gYmUgdXNlZCB0byBtYWtlIHRoZSBoaWJlcm5hdGlvbgorY29yZSBydW4gaW4gYSB0ZXN0IG1vZGUuICBUaGVyZSBhcmUgNSB0ZXN0IG1vZGVzIGF2YWlsYWJsZToKKworZnJlZXplcgorLSB0ZXN0IHRoZSBmcmVlemluZyBvZiBwcm9jZXNzZXMKKworZGV2aWNlcworLSB0ZXN0IHRoZSBmcmVlemluZyBvZiBwcm9jZXNzZXMgYW5kIHN1c3BlbmRpbmcgb2YgZGV2aWNlcworCitwbGF0Zm9ybQorLSB0ZXN0IHRoZSBmcmVlemluZyBvZiBwcm9jZXNzZXMsIHN1c3BlbmRpbmcgb2YgZGV2aWNlcyBhbmQgcGxhdGZvcm0KKyAgZ2xvYmFsIGNvbnRyb2wgbWV0aG9kcygqKQorCitwcm9jZXNzb3JzCistIHRlc3QgdGhlIGZyZWV6aW5nIG9mIHByb2Nlc3Nlcywgc3VzcGVuZGluZyBvZiBkZXZpY2VzLCBwbGF0Zm9ybQorICBnbG9iYWwgY29udHJvbCBtZXRob2RzKCopIGFuZCB0aGUgZGlzYWJsaW5nIG9mIG5vbmJvb3QgQ1BVcworCitjb3JlCistIHRlc3QgdGhlIGZyZWV6aW5nIG9mIHByb2Nlc3Nlcywgc3VzcGVuZGluZyBvZiBkZXZpY2VzLCBwbGF0Zm9ybSBnbG9iYWwKKyAgY29udHJvbCBtZXRob2RzKCopLCB0aGUgZGlzYWJsaW5nIG9mIG5vbmJvb3QgQ1BVcyBhbmQgc3VzcGVuZGluZyBvZgorICBwbGF0Zm9ybS9zeXN0ZW0gZGV2aWNlcworCisoKikgdGhlIHBsYXRmb3JtIGdsb2JhbCBjb250cm9sIG1ldGhvZHMgYXJlIG9ubHkgYXZhaWxhYmxlIG9uIEFDUEkgc3lzdGVtcworICAgIGFuZCBhcmUgb25seSB0ZXN0ZWQgaWYgdGhlIGhpYmVybmF0aW9uIG1vZGUgaXMgc2V0IHRvICJwbGF0Zm9ybSIKKworVG8gdXNlIG9uZSBvZiB0aGVtIGl0IGlzIG5lY2Vzc2FyeSB0byB3cml0ZSB0aGUgY29ycmVzcG9uZGluZyBzdHJpbmcgdG8KKy9zeXMvcG93ZXIvcG1fdGVzdCAoZWcuICJkZXZpY2VzIiB0byB0ZXN0IHRoZSBmcmVlemluZyBvZiBwcm9jZXNzZXMgYW5kCitzdXNwZW5kaW5nIGRldmljZXMpIGFuZCBpc3N1ZSB0aGUgc3RhbmRhcmQgaGliZXJuYXRpb24gY29tbWFuZHMuICBGb3IgZXhhbXBsZSwKK3RvIHVzZSB0aGUgImRldmljZXMiIHRlc3QgbW9kZSBhbG9uZyB3aXRoIHRoZSAicGxhdGZvcm0iIG1vZGUgb2YgaGliZXJuYXRpb24sCit5b3Ugc2hvdWxkIGRvIHRoZSBmb2xsb3dpbmc6CisKKyMgZWNobyBkZXZpY2VzID4gL3N5cy9wb3dlci9wbV90ZXN0CisjIGVjaG8gcGxhdGZvcm0gPiAvc3lzL3Bvd2VyL2Rpc2sKKyMgZWNobyBkaXNrID4gL3N5cy9wb3dlci9zdGF0ZQorCitUaGVuLCB0aGUga2VybmVsIHdpbGwgdHJ5IHRvIGZyZWV6ZSBwcm9jZXNzZXMsIHN1c3BlbmQgZGV2aWNlcywgd2FpdCBhIGZldworc2Vjb25kcyAoNSBieSBkZWZhdWx0LCBidXQgY29uZmlndXJhYmxlIGJ5IHRoZSBzdXNwZW5kLnBtX3Rlc3RfZGVsYXkgbW9kdWxlCitwYXJhbWV0ZXIpLCByZXN1bWUgZGV2aWNlcyBhbmQgdGhhdyBwcm9jZXNzZXMuICBJZiAicGxhdGZvcm0iIGlzIHdyaXR0ZW4gdG8KKy9zeXMvcG93ZXIvcG1fdGVzdCAsIHRoZW4gYWZ0ZXIgc3VzcGVuZGluZyBkZXZpY2VzIHRoZSBrZXJuZWwgd2lsbCBhZGRpdGlvbmFsbHkKK2ludm9rZSB0aGUgZ2xvYmFsIGNvbnRyb2wgbWV0aG9kcyAoZWcuIEFDUEkgZ2xvYmFsIGNvbnRyb2wgbWV0aG9kcykgdXNlZCB0bworcHJlcGFyZSB0aGUgcGxhdGZvcm0gZmlybXdhcmUgZm9yIGhpYmVybmF0aW9uLiAgTmV4dCwgaXQgd2lsbCB3YWl0IGEKK2NvbmZpZ3VyYWJsZSBudW1iZXIgb2Ygc2Vjb25kcyBhbmQgaW52b2tlIHRoZSBwbGF0Zm9ybSAoZWcuIEFDUEkpIGdsb2JhbAorbWV0aG9kcyB1c2VkIHRvIGNhbmNlbCBoaWJlcm5hdGlvbiBldGMuCisKK1dyaXRpbmcgIm5vbmUiIHRvIC9zeXMvcG93ZXIvcG1fdGVzdCBjYXVzZXMgdGhlIGtlcm5lbCB0byBzd2l0Y2ggdG8gdGhlIG5vcm1hbAoraGliZXJuYXRpb24vc3VzcGVuZCBvcGVyYXRpb25zLiAgQWxzbywgd2hlbiBvcGVuIGZvciByZWFkaW5nLCAvc3lzL3Bvd2VyL3BtX3Rlc3QKK2NvbnRhaW5zIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSB0ZXN0cyAoaW5jbHVkaW5nICJub25lIiB0aGF0CityZXByZXNlbnRzIHRoZSBub3JtYWwgZnVuY3Rpb25hbGl0eSkgaW4gd2hpY2ggdGhlIGN1cnJlbnQgdGVzdCBsZXZlbCBpcworaW5kaWNhdGVkIGJ5IHNxdWFyZSBicmFja2V0cy4KKworR2VuZXJhbGx5LCBhcyB5b3UgY2FuIHNlZSwgZWFjaCB0ZXN0IGxldmVsIGlzIG1vcmUgImludmFzaXZlIiB0aGFuIHRoZSBwcmV2aW91cworb25lIGFuZCB0aGUgImNvcmUiIGxldmVsIHRlc3RzIHRoZSBoYXJkd2FyZSBhbmQgZHJpdmVycyBhcyBkZWVwbHkgYXMgcG9zc2libGUKK3dpdGhvdXQgY3JlYXRpbmcgYSBoaWJlcm5hdGlvbiBpbWFnZS4gIE9idmlvdXNseSwgaWYgdGhlICJkZXZpY2VzIiB0ZXN0IGZhaWxzLAordGhlICJwbGF0Zm9ybSIgdGVzdCB3aWxsIGZhaWwgYXMgd2VsbCBhbmQgc28gb24uICBUaHVzLCBhcyBhIHJ1bGUgb2YgdGh1bWIsIHlvdQorc2hvdWxkIHRyeSB0aGUgdGVzdCBtb2RlcyBzdGFydGluZyBmcm9tICJmcmVlemVyIiwgdGhyb3VnaCAiZGV2aWNlcyIsICJwbGF0Zm9ybSIKK2FuZCAicHJvY2Vzc29ycyIgdXAgdG8gImNvcmUiIChyZXBlYXQgdGhlIHRlc3Qgb24gZWFjaCBsZXZlbCBhIGNvdXBsZSBvZiB0aW1lcwordG8gbWFrZSBzdXJlIHRoYXQgYW55IHJhbmRvbSBmYWN0b3JzIGFyZSBhdm9pZGVkKS4KKworSWYgdGhlICJmcmVlemVyIiB0ZXN0IGZhaWxzLCB0aGVyZSBpcyBhIHRhc2sgdGhhdCBjYW5ub3QgYmUgZnJvemVuIChpbiB0aGF0IGNhc2UKK2l0IHVzdWFsbHkgaXMgcG9zc2libGUgdG8gaWRlbnRpZnkgdGhlIG9mZmVuZGluZyB0YXNrIGJ5IGFuYWx5c2luZyB0aGUgb3V0cHV0IG9mCitkbWVzZyBvYnRhaW5lZCBhZnRlciB0aGUgZmFpbGluZyB0ZXN0KS4gIEZhaWx1cmUgYXQgdGhpcyBsZXZlbCB1c3VhbGx5IG1lYW5zCit0aGF0IHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSB0YXNrcyBmcmVlemVyIHN1YnN5c3RlbSB0aGF0IHNob3VsZCBiZQorcmVwb3J0ZWQuCisKK0lmIHRoZSAiZGV2aWNlcyIgdGVzdCBmYWlscywgbW9zdCBsaWtlbHkgdGhlcmUgaXMgYSBkcml2ZXIgdGhhdCBjYW5ub3Qgc3VzcGVuZAorb3IgcmVzdW1lIGl0cyBkZXZpY2UgKGluIHRoZSBsYXR0ZXIgY2FzZSB0aGUgc3lzdGVtIG1heSBoYW5nIG9yIGJlY29tZSB1bnN0YWJsZQorYWZ0ZXIgdGhlIHRlc3QsIHNvIHBsZWFzZSB0YWtlIHRoYXQgaW50byBjb25zaWRlcmF0aW9uKS4gIFRvIGZpbmQgdGhpcyBkcml2ZXIsCit5b3UgY2FuIGNhcnJ5IG91dCBhIGJpbmFyeSBzZWFyY2ggYWNjb3JkaW5nIHRvIHRoZSBydWxlczoKKy0gaWYgdGhlIHRlc3QgZmFpbHMsIHVubG9hZCBhIGhhbGYgb2YgdGhlIGRyaXZlcnMgY3VycmVudGx5IGxvYWRlZCBhbmQgcmVwZWF0CisodGhhdCB3b3VsZCBwcm9iYWJseSBpbnZvbHZlIHJlYm9vdGluZyB0aGUgc3lzdGVtLCBzbyBhbHdheXMgbm90ZSB3aGF0IGRyaXZlcnMKK2hhdmUgYmVlbiBsb2FkZWQgYmVmb3JlIHRoZSB0ZXN0KSwKKy0gaWYgdGhlIHRlc3Qgc3VjY2VlZHMsIGxvYWQgYSBoYWxmIG9mIHRoZSBkcml2ZXJzIHlvdSBoYXZlIHVubG9hZGVkIG1vc3QKK3JlY2VudGx5IGFuZCByZXBlYXQuCisKK09uY2UgeW91IGhhdmUgZm91bmQgdGhlIGZhaWxpbmcgZHJpdmVyICh0aGVyZSBjYW4gYmUgbW9yZSB0aGFuIGp1c3Qgb25lIG9mCit0aGVtKSwgeW91IGhhdmUgdG8gdW5sb2FkIGl0IGV2ZXJ5IHRpbWUgYmVmb3JlIGhpYmVybmF0aW9uLiAgSW4gdGhhdCBjYXNlIHBsZWFzZQorbWFrZSBzdXJlIHRvIHJlcG9ydCB0aGUgcHJvYmxlbSB3aXRoIHRoZSBkcml2ZXIuCisKK0l0IGlzIGFsc28gcG9zc2libGUgdGhhdCB0aGUgImRldmljZXMiIHRlc3Qgd2lsbCBzdGlsbCBmYWlsIGFmdGVyIHlvdSBoYXZlCit1bmxvYWRlZCBhbGwgbW9kdWxlcy4gSW4gdGhhdCBjYXNlLCB5b3UgbWF5IHdhbnQgdG8gbG9vayBpbiB5b3VyIGtlcm5lbAorY29uZmlndXJhdGlvbiBmb3IgdGhlIGRyaXZlcnMgdGhhdCBjYW4gYmUgY29tcGlsZWQgYXMgbW9kdWxlcyAoYW5kIHRlc3QgYWdhaW4KK3dpdGggdGhlc2UgZHJpdmVycyBjb21waWxlZCBhcyBtb2R1bGVzKS4gIFlvdSBtYXkgYWxzbyB0cnkgdG8gdXNlIHNvbWUgc3BlY2lhbAora2VybmVsIGNvbW1hbmQgbGluZSBvcHRpb25zIHN1Y2ggYXMgIm5vYXBpYyIsICJub2FjcGkiIG9yIGV2ZW4gImFjcGk9b2ZmIi4KKworSWYgdGhlICJwbGF0Zm9ybSIgdGVzdCBmYWlscywgdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGhhbmRsaW5nIG9mIHRoZQorcGxhdGZvcm0gKGVnLiBBQ1BJKSBmaXJtd2FyZSBvbiB5b3VyIHN5c3RlbS4gIEluIHRoYXQgY2FzZSB0aGUgInBsYXRmb3JtIiBtb2RlCitvZiBoaWJlcm5hdGlvbiBpcyBub3QgbGlrZWx5IHRvIHdvcmsuICBZb3UgY2FuIHRyeSB0aGUgInNodXRkb3duIiBtb2RlLCBidXQgdGhhdAoraXMgcmF0aGVyIGEgcG9vciBtYW4ncyB3b3JrYXJvdW5kLgorCitJZiB0aGUgInByb2Nlc3NvcnMiIHRlc3QgZmFpbHMsIHRoZSBkaXNhYmxpbmcvZW5hYmxpbmcgb2Ygbm9uYm9vdCBDUFVzIGRvZXMgbm90Cit3b3JrIChvZiBjb3Vyc2UsIHRoaXMgb25seSBtYXkgYmUgYW4gaXNzdWUgb24gU01QIHN5c3RlbXMpIGFuZCB0aGUgcHJvYmxlbQorc2hvdWxkIGJlIHJlcG9ydGVkLiAgSW4gdGhhdCBjYXNlIHlvdSBjYW4gYWxzbyB0cnkgdG8gc3dpdGNoIHRoZSBub25ib290IENQVXMKK29mZiBhbmQgb24gdXNpbmcgdGhlIC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdSovb25saW5lIHN5c2ZzIGF0dHJpYnV0ZXMgYW5kCitzZWUgaWYgdGhhdCB3b3Jrcy4KKworSWYgdGhlICJjb3JlIiB0ZXN0IGZhaWxzLCB3aGljaCBtZWFucyB0aGF0IHN1c3BlbmRpbmcgb2YgdGhlIHN5c3RlbS9wbGF0Zm9ybQorZGV2aWNlcyBoYXMgZmFpbGVkICh0aGVzZSBkZXZpY2VzIGFyZSBzdXNwZW5kZWQgb24gb25lIENQVSB3aXRoIGludGVycnVwdHMgb2ZmKSwKK3RoZSBwcm9ibGVtIGlzIG1vc3QgcHJvYmFibHkgaGFyZHdhcmUtcmVsYXRlZCBhbmQgc2VyaW91cywgc28gaXQgc2hvdWxkIGJlCityZXBvcnRlZC4KKworQSBmYWlsdXJlIG9mIGFueSBvZiB0aGUgInBsYXRmb3JtIiwgInByb2Nlc3NvcnMiIG9yICJjb3JlIiB0ZXN0cyBtYXkgY2F1c2UgeW91cgorc3lzdGVtIHRvIGhhbmcgb3IgYmVjb21lIHVuc3RhYmxlLCBzbyBwbGVhc2UgYmV3YXJlLiAgU3VjaCBhIGZhaWx1cmUgdXN1YWxseQoraW5kaWNhdGVzIGEgc2VyaW91cyBwcm9ibGVtIHRoYXQgdmVyeSB3ZWxsIG1heSBiZSByZWxhdGVkIHRvIHRoZSBoYXJkd2FyZSwgYnV0CitwbGVhc2UgcmVwb3J0IGl0IGFueXdheS4KKworYikgVGVzdGluZyBtaW5pbWFsIGNvbmZpZ3VyYXRpb24KKworSWYgYWxsIG9mIHRoZSBoaWJlcm5hdGlvbiB0ZXN0IG1vZGVzIHdvcmssIHlvdSBjYW4gYm9vdCB0aGUgc3lzdGVtIHdpdGggdGhlCisiaW5pdD0vYmluL2Jhc2giIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXIgYW5kIGF0dGVtcHQgdG8gaGliZXJuYXRlIGluIHRoZQorInJlYm9vdCIsICJzaHV0ZG93biIgYW5kICJwbGF0Zm9ybSIgbW9kZXMuICBJZiB0aGF0IGRvZXMgbm90IHdvcmssIHRoZXJlCitwcm9iYWJseSBpcyBhIHByb2JsZW0gd2l0aCBhIGRyaXZlciBzdGF0aWNhbGx5IGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbCBhbmQgeW91CitjYW4gdHJ5IHRvIGNvbXBpbGUgbW9yZSBkcml2ZXJzIGFzIG1vZHVsZXMsIHNvIHRoYXQgdGhleSBjYW4gYmUgdGVzdGVkCitpbmRpdmlkdWFsbHkuICBPdGhlcndpc2UsIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIGEgbW9kdWxhciBkcml2ZXIgYW5kIHlvdSBjYW4KK2ZpbmQgaXQgYnkgbG9hZGluZyBhIGhhbGYgb2YgdGhlIG1vZHVsZXMgeW91IG5vcm1hbGx5IHVzZSBhbmQgYmluYXJ5IHNlYXJjaGluZworaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBhbGdvcml0aG06CistIGlmIHRoZXJlIGFyZSBuIG1vZHVsZXMgbG9hZGVkIGFuZCB0aGUgYXR0ZW1wdCB0byBzdXNwZW5kIGFuZCByZXN1bWUgZmFpbHMsCit1bmxvYWQgbi8yIG9mIHRoZSBtb2R1bGVzIGFuZCB0cnkgYWdhaW4gKHRoYXQgd291bGQgcHJvYmFibHkgaW52b2x2ZSByZWJvb3RpbmcKK3RoZSBzeXN0ZW0pLAorLSBpZiB0aGVyZSBhcmUgbiBtb2R1bGVzIGxvYWRlZCBhbmQgdGhlIGF0dGVtcHQgdG8gc3VzcGVuZCBhbmQgcmVzdW1lIHN1Y2NlZWRzLAorbG9hZCBuLzIgbW9kdWxlcyBtb3JlIGFuZCB0cnkgYWdhaW4uCisKK0FnYWluLCBpZiB5b3UgZmluZCB0aGUgb2ZmZW5kaW5nIG1vZHVsZShzKSwgaXQodGhleSkgbXVzdCBiZSB1bmxvYWRlZCBldmVyeSB0aW1lCitiZWZvcmUgaGliZXJuYXRpb24sIGFuZCBwbGVhc2UgcmVwb3J0IHRoZSBwcm9ibGVtIHdpdGggaXQodGhlbSkuCisKK2MpIEFkdmFuY2VkIGRlYnVnZ2luZworCitJbiBjYXNlIHRoYXQgaGliZXJuYXRpb24gZG9lcyBub3Qgd29yayBvbiB5b3VyIHN5c3RlbSBldmVuIGluIHRoZSBtaW5pbWFsCitjb25maWd1cmF0aW9uIGFuZCBjb21waWxpbmcgbW9yZSBkcml2ZXJzIGFzIG1vZHVsZXMgaXMgbm90IHByYWN0aWNhbCBvciBzb21lCittb2R1bGVzIGNhbm5vdCBiZSB1bmxvYWRlZCwgeW91IGNhbiB1c2Ugb25lIG9mIHRoZSBtb3JlIGFkdmFuY2VkIGRlYnVnZ2luZwordGVjaG5pcXVlcyB0byBmaW5kIHRoZSBwcm9ibGVtLiAgRmlyc3QsIGlmIHRoZXJlIGlzIGEgc2VyaWFsIHBvcnQgaW4geW91ciBib3gsCit5b3UgY2FuIGJvb3QgdGhlIGtlcm5lbCB3aXRoIHRoZSAnbm9fY29uc29sZV9zdXNwZW5kJyBwYXJhbWV0ZXIgYW5kIHRyeSB0byBsb2cKK2tlcm5lbCBtZXNzYWdlcyB1c2luZyB0aGUgc2VyaWFsIGNvbnNvbGUuICBUaGlzIG1heSBwcm92aWRlIHlvdSB3aXRoIHNvbWUKK2luZm9ybWF0aW9uIGFib3V0IHRoZSByZWFzb25zIG9mIHRoZSBzdXNwZW5kIChyZXN1bWUpIGZhaWx1cmUuICBBbHRlcm5hdGl2ZWx5LAoraXQgbWF5IGJlIHBvc3NpYmxlIHRvIHVzZSBhIEZpcmVXaXJlIHBvcnQgZm9yIGRlYnVnZ2luZyB3aXRoIGZpcmVzY29wZQorKGh0dHA6Ly92My5zay9+bGt1bmRyYWsvZmlyZXNjb3BlLykuICBPbiB4ODYgaXQgaXMgYWxzbyBwb3NzaWJsZSB0bwordXNlIHRoZSBQTV9UUkFDRSBtZWNoYW5pc20gZG9jdW1lbnRlZCBpbiBEb2N1bWVudGF0aW9uL3Bvd2VyL3MycmFtLnR4dCAuCisKKzIuIFRlc3Rpbmcgc3VzcGVuZCB0byBSQU0gKFNUUikKKworVG8gdmVyaWZ5IHRoYXQgdGhlIFNUUiB3b3JrcywgaXQgaXMgZ2VuZXJhbGx5IG1vcmUgY29udmVuaWVudCB0byB1c2UgdGhlIHMycmFtCit0b29sIGF2YWlsYWJsZSBmcm9tIGh0dHA6Ly9zdXNwZW5kLnNmLm5ldCBhbmQgZG9jdW1lbnRlZCBhdAoraHR0cDovL2VuLm9wZW5zdXNlLm9yZy9TREI6U3VzcGVuZF90b19SQU0gKFMyUkFNX0xJTkspLgorCitOYW1lbHksIGFmdGVyIHdyaXRpbmcgImZyZWV6ZXIiLCAiZGV2aWNlcyIsICJwbGF0Zm9ybSIsICJwcm9jZXNzb3JzIiwgb3IgImNvcmUiCitpbnRvIC9zeXMvcG93ZXIvcG1fdGVzdCAoYXZhaWxhYmxlIGlmIHRoZSBrZXJuZWwgaXMgY29tcGlsZWQgd2l0aAorQ09ORklHX1BNX0RFQlVHIHNldCkgdGhlIHN1c3BlbmQgY29kZSB3aWxsIHdvcmsgaW4gdGhlIHRlc3QgbW9kZSBjb3JyZXNwb25kaW5nCit0byBnaXZlbiBzdHJpbmcuICBUaGUgU1RSIHRlc3QgbW9kZXMgYXJlIGRlZmluZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvcgoraGliZXJuYXRpb24sIHNvIHBsZWFzZSByZWZlciB0byBTZWN0aW9uIDEgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlbS4gIEluCitwYXJ0aWN1bGFyLCB0aGUgImNvcmUiIHRlc3QgYWxsb3dzIHlvdSB0byB0ZXN0IGV2ZXJ5dGhpbmcgZXhjZXB0IGZvciB0aGUgYWN0dWFsCitpbnZvY2F0aW9uIG9mIHRoZSBwbGF0Zm9ybSBmaXJtd2FyZSBpbiBvcmRlciB0byBwdXQgdGhlIHN5c3RlbSBpbnRvIHRoZSBzbGVlcAorc3RhdGUuCisKK0Ftb25nIG90aGVyIHRoaW5ncywgdGhlIHRlc3Rpbmcgd2l0aCB0aGUgaGVscCBvZiAvc3lzL3Bvd2VyL3BtX3Rlc3QgbWF5IGFsbG93Cit5b3UgdG8gaWRlbnRpZnkgZHJpdmVycyB0aGF0IGZhaWwgdG8gc3VzcGVuZCBvciByZXN1bWUgdGhlaXIgZGV2aWNlcy4gIFRoZXkKK3Nob3VsZCBiZSB1bmxvYWRlZCBldmVyeSB0aW1lIGJlZm9yZSBhbiBTVFIgdHJhbnNpdGlvbi4KKworTmV4dCwgeW91IGNhbiBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBhdCBTMlJBTV9MSU5LIHRvIHRlc3QgdGhlIHN5c3RlbSwgYnV0IGlmCitpdCBkb2VzIG5vdCB3b3JrICJvdXQgb2YgdGhlIGJveCIsIHlvdSBtYXkgbmVlZCB0byBib290IGl0IHdpdGgKKyJpbml0PS9iaW4vYmFzaCIgYW5kIHRlc3QgczJyYW0gaW4gdGhlIG1pbmltYWwgY29uZmlndXJhdGlvbi4gIEluIHRoYXQgY2FzZSwKK3lvdSBtYXkgYmUgYWJsZSB0byBzZWFyY2ggZm9yIGZhaWxpbmcgZHJpdmVycyBieSBmb2xsb3dpbmcgdGhlIHByb2NlZHVyZQorYW5hbG9nb3VzIHRvIHRoZSBvbmUgZGVzY3JpYmVkIGluIHNlY3Rpb24gMS4gIElmIHlvdSBmaW5kIHNvbWUgZmFpbGluZyBkcml2ZXJzLAoreW91IHdpbGwgaGF2ZSB0byB1bmxvYWQgdGhlbSBldmVyeSB0aW1lIGJlZm9yZSBhbiBTVFIgdHJhbnNpdGlvbiAoaWUuIGJlZm9yZQoreW91IHJ1biBzMnJhbSksIGFuZCBwbGVhc2UgcmVwb3J0IHRoZSBwcm9ibGVtcyB3aXRoIHRoZW0uCisKK1RoZXJlIGlzIGEgZGVidWdmcyBlbnRyeSB3aGljaCBzaG93cyB0aGUgc3VzcGVuZCB0byBSQU0gc3RhdGlzdGljcy4gSGVyZSBpcyBhbgorZXhhbXBsZSBvZiBpdHMgb3V0cHV0LgorCSMgbW91bnQgLXQgZGVidWdmcyBub25lIC9zeXMva2VybmVsL2RlYnVnCisJIyBjYXQgL3N5cy9rZXJuZWwvZGVidWcvc3VzcGVuZF9zdGF0cworCXN1Y2Nlc3M6IDIwCisJZmFpbDogNQorCWZhaWxlZF9mcmVlemU6IDAKKwlmYWlsZWRfcHJlcGFyZTogMAorCWZhaWxlZF9zdXNwZW5kOiA1CisJZmFpbGVkX3N1c3BlbmRfbm9pcnE6IDAKKwlmYWlsZWRfcmVzdW1lOiAwCisJZmFpbGVkX3Jlc3VtZV9ub2lycTogMAorCWZhaWx1cmVzOgorCSAgbGFzdF9mYWlsZWRfZGV2OglhbGFybQorCQkJCWFkYworCSAgbGFzdF9mYWlsZWRfZXJybm86CS0xNgorCQkJCS0xNgorCSAgbGFzdF9mYWlsZWRfc3RlcDoJc3VzcGVuZAorCQkJCXN1c3BlbmQKK0ZpZWxkIHN1Y2Nlc3MgbWVhbnMgdGhlIHN1Y2Nlc3MgbnVtYmVyIG9mIHN1c3BlbmQgdG8gUkFNLCBhbmQgZmllbGQgZmFpbCBtZWFucwordGhlIGZhaWx1cmUgbnVtYmVyLiBPdGhlcnMgYXJlIHRoZSBmYWlsdXJlIG51bWJlciBvZiBkaWZmZXJlbnQgc3RlcHMgb2Ygc3VzcGVuZAordG8gUkFNLiBzdXNwZW5kX3N0YXRzIGp1c3QgbGlzdHMgdGhlIGxhc3QgMiBmYWlsZWQgZGV2aWNlcywgZXJyb3IgbnVtYmVyIGFuZAorZmFpbGVkIHN0ZXAgb2Ygc3VzcGVuZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvY2hhcmdlci1tYW5hZ2VyLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvY2hhcmdlci1tYW5hZ2VyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmYxMTA1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci9jaGFyZ2VyLW1hbmFnZXIudHh0CkBAIC0wLDAgKzEsMjAwIEBACitDaGFyZ2VyIE1hbmFnZXIKKwkoQykgMjAxMSBNeXVuZ0pvbyBIYW0gPG15dW5nam9vLmhhbUBzYW1zdW5nLmNvbT4sIEdQTAorCitDaGFyZ2VyIE1hbmFnZXIgcHJvdmlkZXMgaW4ta2VybmVsIGJhdHRlcnkgY2hhcmdlciBtYW5hZ2VtZW50IHRoYXQKK3JlcXVpcmVzIHRlbXBlcmF0dXJlIG1vbml0b3JpbmcgZHVyaW5nIHN1c3BlbmQtdG8tUkFNIHN0YXRlCithbmQgd2hlcmUgZWFjaCBiYXR0ZXJ5IG1heSBoYXZlIG11bHRpcGxlIGNoYXJnZXJzIGF0dGFjaGVkIGFuZCB0aGUgdXNlcmxhbmQKK3dhbnRzIHRvIGxvb2sgYXQgdGhlIGFnZ3JlZ2F0ZWQgaW5mb3JtYXRpb24gb2YgdGhlIG11bHRpcGxlIGNoYXJnZXJzLgorCitDaGFyZ2VyIE1hbmFnZXIgaXMgYSBwbGF0Zm9ybV9kcml2ZXIgd2l0aCBwb3dlci1zdXBwbHktY2xhc3MgZW50cmllcy4KK0FuIGluc3RhbmNlIG9mIENoYXJnZXIgTWFuYWdlciAoYSBwbGF0Zm9ybS1kZXZpY2UgY3JlYXRlZCB3aXRoIENoYXJnZXItTWFuYWdlcikKK3JlcHJlc2VudHMgYW4gaW5kZXBlbmRlbnQgYmF0dGVyeSB3aXRoIGNoYXJnZXJzLiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUKK2JhdHRlcmllcyB3aXRoIHRoZWlyIG93biBjaGFyZ2VycyBhY3RpbmcgaW5kZXBlbmRlbnRseSBpbiBhIHN5c3RlbSwKK3RoZSBzeXN0ZW0gbWF5IG5lZWQgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIENoYXJnZXIgTWFuYWdlci4KKworMS4gSW50cm9kdWN0aW9uCis9PT09PT09PT09PT09PT0KKworQ2hhcmdlciBNYW5hZ2VyIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmc6CisKKyogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY2hhcmdlcnMgKGUuZy4sIGEgZGV2aWNlIHdpdGggVVNCLCBBQywgYW5kIHNvbGFyIHBhbmVscykKKwlBIHN5c3RlbSBtYXkgaGF2ZSBtdWx0aXBsZSBjaGFyZ2VycyAob3IgcG93ZXIgc291cmNlcykgYW5kIHNvbWUgb2YKKwl0aGV5IG1heSBiZSBhY3RpdmF0ZWQgYXQgdGhlIHNhbWUgdGltZS4gRWFjaCBjaGFyZ2VyIG1heSBoYXZlIGl0cworCW93biBwb3dlci1zdXBwbHktY2xhc3MgYW5kIGVhY2ggcG93ZXItc3VwcGx5LWNsYXNzIGNhbiBwcm92aWRlCisJZGlmZmVyZW50IGluZm9ybWF0aW9uIGFib3V0IHRoZSBiYXR0ZXJ5IHN0YXR1cy4gVGhpcyBmcmFtZXdvcmsKKwlhZ2dyZWdhdGVzIGNoYXJnZXItcmVsYXRlZCBpbmZvcm1hdGlvbiBmcm9tIG11bHRpcGxlIHNvdXJjZXMgYW5kCisJc2hvd3MgY29tYmluZWQgaW5mb3JtYXRpb24gYXMgYSBzaW5nbGUgcG93ZXItc3VwcGx5LWNsYXNzLgorCisqIFN1cHBvcnQgZm9yIGluIHN1c3BlbmQtdG8tUkFNIHBvbGxpbmcgKHdpdGggc3VzcGVuZF9hZ2FpbiBjYWxsYmFjaykKKwlXaGlsZSB0aGUgYmF0dGVyeSBpcyBiZWluZyBjaGFyZ2VkIGFuZCB0aGUgc3lzdGVtIGlzIGluIHN1c3BlbmQtdG8tUkFNLAorCXdlIG1heSBuZWVkIHRvIG1vbml0b3IgdGhlIGJhdHRlcnkgaGVhbHRoIGJ5IGxvb2tpbmcgYXQgdGhlIGFtYmllbnQgb3IKKwliYXR0ZXJ5IHRlbXBlcmF0dXJlLiBXZSBjYW4gYWNjb21wbGlzaCB0aGlzIGJ5IHdha2luZyB1cCB0aGUgc3lzdGVtCisJcGVyaW9kaWNhbGx5LiBIb3dldmVyLCBzdWNoIGEgbWV0aG9kIHdha2VzIHVwIGRldmljZXMgdW5uZWNlc3NhcmlseSBmb3IKKwltb25pdG9yaW5nIHRoZSBiYXR0ZXJ5IGhlYWx0aCBhbmQgdGFza3MsIGFuZCB1c2VyIHByb2Nlc3NlcyB0aGF0IGFyZQorCXN1cHBvc2VkIHRvIGJlIGtlcHQgc3VzcGVuZGVkLiBUaGF0LCBpbiB0dXJuLCBpbmN1cnMgdW5uZWNlc3NhcnkgcG93ZXIKKwljb25zdW1wdGlvbiBhbmQgc2xvdyBkb3duIGNoYXJnaW5nIHByb2Nlc3MuIE9yIGV2ZW4sIHN1Y2ggcGVhayBwb3dlcgorCWNvbnN1bXB0aW9uIGNhbiBzdG9wIGNoYXJnZXJzIGluIHRoZSBtaWRkbGUgb2YgY2hhcmdpbmcKKwkoZXh0ZXJuYWwgcG93ZXIgaW5wdXQgPCBkZXZpY2UgcG93ZXIgY29uc3VtcHRpb24pLCB3aGljaCBub3QKKwlvbmx5IGFmZmVjdHMgdGhlIGNoYXJnaW5nIHRpbWUsIGJ1dCB0aGUgbGlmZXNwYW4gb2YgdGhlIGJhdHRlcnkuCisKKwlDaGFyZ2VyIE1hbmFnZXIgcHJvdmlkZXMgYSBmdW5jdGlvbiAiY21fc3VzcGVuZF9hZ2FpbiIgdGhhdCBjYW4gYmUKKwl1c2VkIGFzIHN1c3BlbmRfYWdhaW4gY2FsbGJhY2sgb2YgcGxhdGZvcm1fc3VzcGVuZF9vcHMuIElmIHRoZSBwbGF0Zm9ybQorCXJlcXVpcmVzIHRhc2tzIG90aGVyIHRoYW4gY21fc3VzcGVuZF9hZ2FpbiwgaXQgbWF5IGltcGxlbWVudCBpdHMgb3duCisJc3VzcGVuZF9hZ2FpbiBjYWxsYmFjayB0aGF0IGNhbGxzIGNtX3N1c3BlbmRfYWdhaW4gaW4gdGhlIG1pZGRsZS4KKwlOb3JtYWxseSwgdGhlIHBsYXRmb3JtIHdpbGwgbmVlZCB0byByZXN1bWUgYW5kIHN1c3BlbmQgc29tZSBkZXZpY2VzCisJdGhhdCBhcmUgdXNlZCBieSBDaGFyZ2VyIE1hbmFnZXIuCisKKyogU3VwcG9ydCBmb3IgcHJlbWF0dXJlIGZ1bGwtYmF0dGVyeSBldmVudCBoYW5kbGluZworCUlmIHRoZSBiYXR0ZXJ5IHZvbHRhZ2UgZHJvcHMgYnkgImZ1bGxiYXR0X3ZjaGtkcm9wX3VWIiBhZnRlcgorCSJmdWxsYmF0dF92Y2hrZHJvcF9tcyIgZnJvbSB0aGUgZnVsbC1iYXR0ZXJ5IGV2ZW50LCB0aGUgZnJhbWV3b3JrCisJcmVzdGFydHMgY2hhcmdpbmcuIFRoaXMgY2hlY2sgaXMgYWxzbyBwZXJmb3JtZWQgd2hpbGUgc3VzcGVuZGVkIGJ5CisJc2V0dGluZyB3YWtldXAgdGltZSBhY2NvcmRpbmdseSBhbmQgdXNpbmcgc3VzcGVuZF9hZ2Fpbi4KKworKiBTdXBwb3J0IGZvciB1ZXZlbnQtbm90aWZ5CisJV2l0aCB0aGUgY2hhcmdlci1yZWxhdGVkIGV2ZW50cywgdGhlIGRldmljZSBzZW5kcworCW5vdGlmaWNhdGlvbiB0byB1c2VycyB3aXRoIFVFVkVOVC4KKworMi4gR2xvYmFsIENoYXJnZXItTWFuYWdlciBEYXRhIHJlbGF0ZWQgd2l0aCBzdXNwZW5kX2FnYWluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorSW4gb3JkZXIgdG8gc2V0dXAgQ2hhcmdlciBNYW5hZ2VyIHdpdGggc3VzcGVuZC1hZ2FpbiBmZWF0dXJlCisoaW4tc3VzcGVuZCBtb25pdG9yaW5nKSwgdGhlIHVzZXIgc2hvdWxkIHByb3ZpZGUgY2hhcmdlcl9nbG9iYWxfZGVzYword2l0aCBzZXR1cF9jaGFyZ2VyX21hbmFnZXIoc3RydWN0IGNoYXJnZXJfZ2xvYmFsX2Rlc2MgKikuCitUaGlzIGNoYXJnZXJfZ2xvYmFsX2Rlc2MgZGF0YSBmb3IgaW4tc3VzcGVuZCBtb25pdG9yaW5nIGlzIGdsb2JhbAorYXMgdGhlIG5hbWUgc3VnZ2VzdHMuIFRodXMsIHRoZSB1c2VyIG5lZWRzIHRvIHByb3ZpZGUgb25seSBvbmNlIGV2ZW4KK2lmIHRoZXJlIGFyZSBtdWx0aXBsZSBiYXR0ZXJpZXMuIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBiYXR0ZXJpZXMsIHRoZQorbXVsdGlwbGUgaW5zdGFuY2VzIG9mIENoYXJnZXIgTWFuYWdlciBzaGFyZSB0aGUgc2FtZSBjaGFyZ2VyX2dsb2JhbF9kZXNjCithbmQgaXQgd2lsbCBtYW5hZ2UgaW4tc3VzcGVuZCBtb25pdG9yaW5nIGZvciBhbGwgaW5zdGFuY2VzIG9mIENoYXJnZXIgTWFuYWdlci4KKworVGhlIHVzZXIgbmVlZHMgdG8gcHJvdmlkZSBhbGwgdGhlIHRocmVlIGVudHJpZXMgcHJvcGVybHkgaW4gb3JkZXIgdG8gYWN0aXZhdGUKK2luLXN1c3BlbmQgbW9uaXRvcmluZzoKKworc3RydWN0IGNoYXJnZXJfZ2xvYmFsX2Rlc2MgeworCitjaGFyICpydGNfbmFtZTsKKwk6IFRoZSBuYW1lIG9mIHJ0YyAoZS5nLiwgInJ0YzAiKSB1c2VkIHRvIHdha2V1cCB0aGUgc3lzdGVtIGZyb20KKwlzdXNwZW5kIGZvciBDaGFyZ2VyIE1hbmFnZXIuIFRoZSBhbGFybSBpbnRlcnJ1cHQgKEFJRSkgb2YgdGhlIHJ0YworCXNob3VsZCBiZSBhYmxlIHRvIHdha2UgdXAgdGhlIHN5c3RlbSBmcm9tIHN1c3BlbmQuIENoYXJnZXIgTWFuYWdlcgorCXNhdmVzIGFuZCByZXN0b3JlcyB0aGUgYWxhcm0gdmFsdWUgYW5kIHVzZSB0aGUgcHJldmlvdXNseS1kZWZpbmVkCisJYWxhcm0gaWYgaXQgaXMgZ29pbmcgdG8gZ28gb2ZmIGVhcmxpZXIgdGhhbiBDaGFyZ2VyIE1hbmFnZXIgc28gdGhhdAorCUNoYXJnZXIgTWFuYWdlciBkb2VzIG5vdCBpbnRlcmZlcmUgd2l0aCBwcmV2aW91c2x5LWRlZmluZWQgYWxhcm1zLgorCitib29sICgqcnRjX29ubHlfd2FrZXVwKSh2b2lkKTsKKwk6IFRoaXMgY2FsbGJhY2sgc2hvdWxkIGxldCBDTSBrbm93IHdoZXRoZXIKKwl0aGUgd2FrZXVwLWZyb20tc3VzcGVuZCBpcyBjYXVzZWQgb25seSBieSB0aGUgYWxhcm0gb2YgInJ0YyIgaW4gdGhlCisJc2FtZSBzdHJ1Y3QuIElmIHRoZXJlIGlzIGFueSBvdGhlciB3YWtldXAgc291cmNlIHRyaWdnZXJlZCB0aGUKKwl3YWtldXAsIGl0IHNob3VsZCByZXR1cm4gZmFsc2UuIElmIHRoZSAicnRjIiBpcyB0aGUgb25seSB3YWtldXAKKwlyZWFzb24sIGl0IHNob3VsZCByZXR1cm4gdHJ1ZS4KKworYm9vbCBhc3N1bWVfdGltZXJfc3RvcHNfaW5fc3VzcGVuZDsKKwk6IGlmIHRydWUsIENoYXJnZXIgTWFuYWdlciBhc3N1bWVzIHRoYXQKKwl0aGUgdGltZXIgKENNIHVzZXMgamlmZmllcyBhcyB0aW1lcikgc3RvcHMgZHVyaW5nIHN1c3BlbmQuIFRoZW4sIENNCisJYXNzdW1lcyB0aGF0IHRoZSBzdXNwZW5kLWR1cmF0aW9uIGlzIHNhbWUgYXMgdGhlIGFsYXJtIGxlbmd0aC4KK307CisKKzMuIEhvdyB0byBzZXR1cCBzdXNwZW5kX2FnYWluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ2hhcmdlciBNYW5hZ2VyIHByb3ZpZGVzIGEgZnVuY3Rpb24gImV4dGVybiBib29sIGNtX3N1c3BlbmRfYWdhaW4odm9pZCkiLgorV2hlbiBjbV9zdXNwZW5kX2FnYWluIGlzIGNhbGxlZCwgaXQgbW9uaXRvcnMgZXZlcnkgYmF0dGVyeS4gVGhlIHN1c3BlbmRfb3BzCitjYWxsYmFjayBvZiB0aGUgc3lzdGVtJ3MgcGxhdGZvcm1fc3VzcGVuZF9vcHMgY2FuIGNhbGwgY21fc3VzcGVuZF9hZ2FpbgorZnVuY3Rpb24gdG8ga25vdyB3aGV0aGVyIENoYXJnZXIgTWFuYWdlciB3YW50cyB0byBzdXNwZW5kIGFnYWluIG9yIG5vdC4KK0lmIHRoZXJlIGFyZSBubyBvdGhlciBkZXZpY2VzIG9yIHRhc2tzIHRoYXQgd2FudCB0byB1c2Ugc3VzcGVuZF9hZ2FpbgorZmVhdHVyZSwgdGhlIHBsYXRmb3JtX3N1c3BlbmRfb3BzIG1heSBkaXJlY3RseSByZWZlciB0byBjbV9zdXNwZW5kX2FnYWluCitmb3IgaXRzIHN1c3BlbmRfYWdhaW4gY2FsbGJhY2suCisKK1RoZSBjbV9zdXNwZW5kX2FnYWluKCkgcmV0dXJucyB0cnVlIChtZWFuaW5nICJJIHdhbnQgdG8gc3VzcGVuZCBhZ2FpbiIpCitpZiB0aGUgc3lzdGVtIHdhcyB3b2tlbiB1cCBieSBDaGFyZ2VyIE1hbmFnZXIgYW5kIHRoZSBwb2xsaW5nCisoaW4tc3VzcGVuZCBtb25pdG9yaW5nKSByZXN1bHRzIGluICJub3JtYWwiLgorCis0LiBDaGFyZ2VyLU1hbmFnZXIgRGF0YSAoc3RydWN0IGNoYXJnZXJfZGVzYykKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorRm9yIGVhY2ggYmF0dGVyeSBjaGFyZ2VkIGluZGVwZW5kZW50bHkgZnJvbSBvdGhlciBiYXR0ZXJpZXMgKGlmIGEgc2VyaWVzIG9mCitiYXR0ZXJpZXMgYXJlIGNoYXJnZWQgYnkgYSBzaW5nbGUgY2hhcmdlciwgdGhleSBhcmUgY291bnRlZCBhcyBvbmUgaW5kZXBlbmRlbnQKK2JhdHRlcnkpLCBhbiBpbnN0YW5jZSBvZiBDaGFyZ2VyIE1hbmFnZXIgaXMgYXR0YWNoZWQgdG8gaXQuCisKK3N0cnVjdCBjaGFyZ2VyX2Rlc2MgeworCitjaGFyICpwc3lfbmFtZTsKKwk6IFRoZSBwb3dlci1zdXBwbHktY2xhc3MgbmFtZSBvZiB0aGUgYmF0dGVyeS4gRGVmYXVsdCBpcworCSJiYXR0ZXJ5IiBpZiBwc3lfbmFtZSBpcyBOVUxMLiBVc2VycyBjYW4gYWNjZXNzIHRoZSBwc3kgZW50cmllcworCWF0ICIvc3lzL2NsYXNzL3Bvd2VyX3N1cHBseS9bcHN5X25hbWVdLyIuCisKK2VudW0gcG9sbGluZ19tb2RlcyBwb2xsaW5nX21vZGU7CisJOiBDTV9QT0xMX0RJU0FCTEU6IGRvIG5vdCBwb2xsIHRoaXMgYmF0dGVyeS4KKwkgIENNX1BPTExfQUxXQVlTOiBhbHdheXMgcG9sbCB0aGlzIGJhdHRlcnkuCisJICBDTV9QT0xMX0VYVEVSTkFMX1BPV0VSX09OTFk6IHBvbGwgdGhpcyBiYXR0ZXJ5IGlmIGFuZCBvbmx5IGlmCisJCQkJICAgICAgIGFuIGV4dGVybmFsIHBvd2VyIHNvdXJjZSBpcyBhdHRhY2hlZC4KKwkgIENNX1BPTExfQ0hBUkdJTkdfT05MWTogcG9sbCB0aGlzIGJhdHRlcnkgaWYgYW5kIG9ubHkgaWYgdGhlCisJCQkJIGJhdHRlcnkgaXMgYmVpbmcgY2hhcmdlZC4KKwordW5zaWduZWQgaW50IGZ1bGxiYXR0X3ZjaGtkcm9wX21zOwordW5zaWduZWQgaW50IGZ1bGxiYXR0X3ZjaGtkcm9wX3VWOworCTogSWYgYm90aCBoYXZlIG5vbi16ZXJvIHZhbHVlcywgQ2hhcmdlciBNYW5hZ2VyIHdpbGwgY2hlY2sgdGhlCisJYmF0dGVyeSB2b2x0YWdlIGRyb3AgZnVsbGJhdHRfdmNoa2Ryb3BfbXMgYWZ0ZXIgdGhlIGJhdHRlcnkgaXMgZnVsbHkKKwljaGFyZ2VkLiBJZiB0aGUgdm9sdGFnZSBkcm9wIGlzIG92ZXIgZnVsbGJhdHRfdmNoa2Ryb3BfdVYsIENoYXJnZXIKKwlNYW5hZ2VyIHdpbGwgdHJ5IHRvIHJlY2hhcmdlIHRoZSBiYXR0ZXJ5IGJ5IGRpc2FibGluZyBhbmQgZW5hYmxpbmcKKwljaGFyZ2Vycy4gUmVjaGFyZ2Ugd2l0aCB2b2x0YWdlIGRyb3AgY29uZGl0aW9uIG9ubHkgKHdpdGhvdXQgZGVsYXkKKwljb25kaXRpb24pIGlzIG5lZWRlZCB0byBiZSBpbXBsZW1lbnRlZCB3aXRoIGhhcmR3YXJlIGludGVycnVwdHMgZnJvbQorCWZ1ZWwgZ2F1Z2VzIG9yIGNoYXJnZXIgZGV2aWNlcy9jaGlwcy4KKwordW5zaWduZWQgaW50IGZ1bGxiYXR0X3VWOworCTogSWYgc3BlY2lmaWVkIHdpdGggYSBub24temVybyB2YWx1ZSwgQ2hhcmdlciBNYW5hZ2VyIGFzc3VtZXMKKwl0aGF0IHRoZSBiYXR0ZXJ5IGlzIGZ1bGwgKGNhcGFjaXR5ID0gMTAwKSBpZiB0aGUgYmF0dGVyeSBpcyBub3QgYmVpbmcKKwljaGFyZ2VkIGFuZCB0aGUgYmF0dGVyeSB2b2x0YWdlIGlzIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbgorCWZ1bGxiYXR0X3VWLgorCit1bnNpZ25lZCBpbnQgcG9sbGluZ19pbnRlcnZhbF9tczsKKwk6IFJlcXVpcmVkIHBvbGxpbmcgaW50ZXJ2YWwgaW4gbXMuIENoYXJnZXIgTWFuYWdlciB3aWxsIHBvbGwKKwl0aGlzIGJhdHRlcnkgZXZlcnkgcG9sbGluZ19pbnRlcnZhbF9tcyBvciBtb3JlIGZyZXF1ZW50bHkuCisKK2VudW0gZGF0YV9zb3VyY2UgYmF0dGVyeV9wcmVzZW50OworCTogQ01fQkFUVEVSWV9QUkVTRU5UOiBhc3N1bWUgdGhhdCB0aGUgYmF0dGVyeSBleGlzdHMuCisJQ01fTk9fQkFUVEVSWTogYXNzdW1lIHRoYXQgdGhlIGJhdHRlcnkgZG9lcyBub3QgZXhpc3RzLgorCUNNX0ZVRUxfR0FVR0U6IGdldCBiYXR0ZXJ5IHByZXNlbmNlIGluZm9ybWF0aW9uIGZyb20gZnVlbCBnYXVnZS4KKwlDTV9DSEFSR0VSX1NUQVQ6IGdldCBiYXR0ZXJ5IHByZXNlbmNlIGZyb20gY2hhcmdlcnMuCisKK2NoYXIgKipwc3lfY2hhcmdlcl9zdGF0OworCTogQW4gYXJyYXkgZW5kaW5nIHdpdGggTlVMTCB0aGF0IGhhcyBwb3dlci1zdXBwbHktY2xhc3MgbmFtZXMgb2YKKwljaGFyZ2Vycy4gRWFjaCBwb3dlci1zdXBwbHktY2xhc3Mgc2hvdWxkIHByb3ZpZGUgIlBSRVNFTlQiIChpZgorCWJhdHRlcnlfcHJlc2VudCBpcyAiQ01fQ0hBUkdFUl9TVEFUIiksICJPTkxJTkUiIChzaG93cyB3aGV0aGVyIGFuCisJZXh0ZXJuYWwgcG93ZXIgc291cmNlIGlzIGF0dGFjaGVkIG9yIG5vdCksIGFuZCAiU1RBVFVTIiAoc2hvd3Mgd2hldGhlcgorCXRoZSBiYXR0ZXJ5IGlzIHsiRlVMTCIgb3Igbm90IEZVTEx9IG9yIHsiRlVMTCIsICJDaGFyZ2luZyIsCisJIkRpc2NoYXJnaW5nIiwgIk5vdENoYXJnaW5nIn0pLgorCitpbnQgbnVtX2NoYXJnZXJfcmVndWxhdG9yczsKK3N0cnVjdCByZWd1bGF0b3JfYnVsa19kYXRhICpjaGFyZ2VyX3JlZ3VsYXRvcnM7CisJOiBSZWd1bGF0b3JzIHJlcHJlc2VudGluZyB0aGUgY2hhcmdlcnMgaW4gdGhlIGZvcm0gZm9yCisJcmVndWxhdG9yIGZyYW1ld29yaydzIGJ1bGsgZnVuY3Rpb25zLgorCitjaGFyICpwc3lfZnVlbF9nYXVnZTsKKwk6IFBvd2VyLXN1cHBseS1jbGFzcyBuYW1lIG9mIHRoZSBmdWVsIGdhdWdlLgorCitpbnQgKCp0ZW1wZXJhdHVyZV9vdXRfb2ZfcmFuZ2UpKGludCAqbUMpOworYm9vbCBtZWFzdXJlX2JhdHRlcnlfdGVtcDsKKwk6IFRoaXMgY2FsbGJhY2sgcmV0dXJucyAwIGlmIHRoZSB0ZW1wZXJhdHVyZSBpcyBzYWZlIGZvciBjaGFyZ2luZywKKwlhIHBvc2l0aXZlIG51bWJlciBpZiBpdCBpcyB0b28gaG90IHRvIGNoYXJnZSwgYW5kIGEgbmVnYXRpdmUgbnVtYmVyCisJaWYgaXQgaXMgdG9vIGNvbGQgdG8gY2hhcmdlLiBXaXRoIHRoZSB2YXJpYWJsZSBtQywgdGhlIGNhbGxiYWNrIHJldHVybnMKKwl0aGUgdGVtcGVyYXR1cmUgaW4gMS8xMDAwIG9mIGNlbnRpZ3JhZGUuCisJVGhlIHNvdXJjZSBvZiB0ZW1wZXJhdHVyZSBjYW4gYmUgYmF0dGVyeSBvciBhbWJpZW50IG9uZSBhY2NvcmRpbmcgdG8KKwl0aGUgdmFsdWUgb2YgbWVhc3VyZV9iYXR0ZXJ5X3RlbXAuCit9OworCis1LiBOb3RpZnkgQ2hhcmdlci1NYW5hZ2VyIG9mIGNoYXJnZXIgZXZlbnRzOiBjbV9ub3RpZnlfZXZlbnQoKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitJZiB0aGVyZSBpcyBhbiBjaGFyZ2VyIGV2ZW50IGlzIHJlcXVpcmVkIHRvIG5vdGlmeQorQ2hhcmdlciBNYW5hZ2VyLCBhIGNoYXJnZXIgZGV2aWNlIGRyaXZlciB0aGF0IHRyaWdnZXJzIHRoZSBldmVudCBjYW4gY2FsbAorY21fbm90aWZ5X2V2ZW50KHBzeSwgdHlwZSwgbXNnKSB0byBub3RpZnkgdGhlIGNvcnJlc3BvbmRpbmcgQ2hhcmdlciBNYW5hZ2VyLgorSW4gdGhlIGZ1bmN0aW9uLCBwc3kgaXMgdGhlIGNoYXJnZXIgZHJpdmVyJ3MgcG93ZXJfc3VwcGx5IHBvaW50ZXIsIHdoaWNoIGlzCithc3NvY2lhdGVkIHdpdGggQ2hhcmdlci1NYW5hZ2VyLiBUaGUgcGFyYW1ldGVyICJ0eXBlIgoraXMgdGhlIHNhbWUgYXMgaXJxJ3MgdHlwZSAoZW51bSBjbV9ldmVudF90eXBlcykuIFRoZSBldmVudCBtZXNzYWdlICJtc2ciIGlzCitvcHRpb25hbCBhbmQgaXMgZWZmZWN0aXZlIG9ubHkgaWYgdGhlIGV2ZW50IHR5cGUgaXMgIlVOREVTQ1JJQkVEIiBvciAiT1RIRVJTIi4KKworNi4gT3RoZXIgQ29uc2lkZXJhdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09CisKK0F0IHRoZSBjaGFyZ2VyL2JhdHRlcnktcmVsYXRlZCBldmVudHMgc3VjaCBhcyBiYXR0ZXJ5LXB1bGxlZC1vdXQsCitjaGFyZ2VyLXB1bGxlZC1vdXQsIGNoYXJnZXItaW5zZXJ0ZWQsIERDSU4tb3Zlci91bmRlci12b2x0YWdlLCBjaGFyZ2VyLXN0b3BwZWQsCithbmQgb3RoZXJzIGNyaXRpY2FsIHRvIGNoYXJnZXJzLCB0aGUgc3lzdGVtIHNob3VsZCBiZSBjb25maWd1cmVkIHRvIHdha2UgdXAuCitBdCBsZWFzdCB0aGUgZm9sbG93aW5nIHNob3VsZCB3YWtlIHVwIHRoZSBzeXN0ZW0gZnJvbSBhIHN1c3BlbmQ6CithKSBjaGFyZ2VyLW9uL29mZiBiKSBleHRlcm5hbC1wb3dlci1pbi9vdXQgYykgYmF0dGVyeS1pbi9vdXQgKHdoaWxlIGNoYXJnaW5nKQorCitJdCBpcyB1c3VhbGx5IGFjY29tcGxpc2hlZCBieSBjb25maWd1cmluZyB0aGUgUE1JQyBhcyBhIHdha2V1cCBzb3VyY2UuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL2RldmljZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci9kZXZpY2VzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmE2NjI1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci9kZXZpY2VzLnR4dApAQCAtMCwwICsxLDcwNCBAQAorRGV2aWNlIFBvd2VyIE1hbmFnZW1lbnQKKworQ29weXJpZ2h0IChjKSAyMDEwLTIwMTEgUmFmYWVsIEouIFd5c29ja2kgPHJqd0BzaXNrLnBsPiwgTm92ZWxsIEluYy4KK0NvcHlyaWdodCAoYykgMjAxMCBBbGFuIFN0ZXJuIDxzdGVybkByb3dsYW5kLmhhcnZhcmQuZWR1PgorQ29weXJpZ2h0IChjKSAyMDE0IEludGVsIENvcnAuLCBSYWZhZWwgSi4gV3lzb2NraSA8cmFmYWVsLmoud3lzb2NraUBpbnRlbC5jb20+CisKKworTW9zdCBvZiB0aGUgY29kZSBpbiBMaW51eCBpcyBkZXZpY2UgZHJpdmVycywgc28gbW9zdCBvZiB0aGUgTGludXggcG93ZXIKK21hbmFnZW1lbnQgKFBNKSBjb2RlIGlzIGFsc28gZHJpdmVyLXNwZWNpZmljLiAgTW9zdCBkcml2ZXJzIHdpbGwgZG8gdmVyeQorbGl0dGxlOyBvdGhlcnMsIGVzcGVjaWFsbHkgZm9yIHBsYXRmb3JtcyB3aXRoIHNtYWxsIGJhdHRlcmllcyAobGlrZSBjZWxsCitwaG9uZXMpLCB3aWxsIGRvIGEgbG90LgorCitUaGlzIHdyaXRldXAgZ2l2ZXMgYW4gb3ZlcnZpZXcgb2YgaG93IGRyaXZlcnMgaW50ZXJhY3Qgd2l0aCBzeXN0ZW0td2lkZQorcG93ZXIgbWFuYWdlbWVudCBnb2FscywgZW1waGFzaXppbmcgdGhlIG1vZGVscyBhbmQgaW50ZXJmYWNlcyB0aGF0IGFyZQorc2hhcmVkIGJ5IGV2ZXJ5dGhpbmcgdGhhdCBob29rcyB1cCB0byB0aGUgZHJpdmVyIG1vZGVsIGNvcmUuICBSZWFkIGl0IGFzCitiYWNrZ3JvdW5kIGZvciB0aGUgZG9tYWluLXNwZWNpZmljIHdvcmsgeW91J2QgZG8gd2l0aCBhbnkgc3BlY2lmaWMgZHJpdmVyLgorCisKK1R3byBNb2RlbHMgZm9yIERldmljZSBQb3dlciBNYW5hZ2VtZW50Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorRHJpdmVycyB3aWxsIHVzZSBvbmUgb3IgYm90aCBvZiB0aGVzZSBtb2RlbHMgdG8gcHV0IGRldmljZXMgaW50byBsb3ctcG93ZXIKK3N0YXRlczoKKworICAgIFN5c3RlbSBTbGVlcCBtb2RlbDoKKwlEcml2ZXJzIGNhbiBlbnRlciBsb3ctcG93ZXIgc3RhdGVzIGFzIHBhcnQgb2YgZW50ZXJpbmcgc3lzdGVtLXdpZGUKKwlsb3ctcG93ZXIgc3RhdGVzIGxpa2UgInN1c3BlbmQiIChhbHNvIGtub3duIGFzICJzdXNwZW5kLXRvLVJBTSIpLCBvcgorCShtb3N0bHkgZm9yIHN5c3RlbXMgd2l0aCBkaXNrcykgImhpYmVybmF0aW9uIiAoYWxzbyBrbm93biBhcworCSJzdXNwZW5kLXRvLWRpc2siKS4KKworCVRoaXMgaXMgc29tZXRoaW5nIHRoYXQgZGV2aWNlLCBidXMsIGFuZCBjbGFzcyBkcml2ZXJzIGNvbGxhYm9yYXRlIG9uCisJYnkgaW1wbGVtZW50aW5nIHZhcmlvdXMgcm9sZS1zcGVjaWZpYyBzdXNwZW5kIGFuZCByZXN1bWUgbWV0aG9kcyB0bworCWNsZWFubHkgcG93ZXIgZG93biBoYXJkd2FyZSBhbmQgc29mdHdhcmUgc3Vic3lzdGVtcywgdGhlbiByZWFjdGl2YXRlCisJdGhlbSB3aXRob3V0IGxvc3Mgb2YgZGF0YS4KKworCVNvbWUgZHJpdmVycyBjYW4gbWFuYWdlIGhhcmR3YXJlIHdha2V1cCBldmVudHMsIHdoaWNoIG1ha2UgdGhlIHN5c3RlbQorCWxlYXZlIHRoZSBsb3ctcG93ZXIgc3RhdGUuICBUaGlzIGZlYXR1cmUgbWF5IGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQKKwl1c2luZyB0aGUgcmVsZXZhbnQgL3N5cy9kZXZpY2VzLy4uLi9wb3dlci93YWtldXAgZmlsZSAoZm9yIEV0aGVybmV0CisJZHJpdmVycyB0aGUgaW9jdGwgaW50ZXJmYWNlIHVzZWQgYnkgZXRodG9vbCBtYXkgYWxzbyBiZSB1c2VkIGZvciB0aGlzCisJcHVycG9zZSk7IGVuYWJsaW5nIGl0IG1heSBjb3N0IHNvbWUgcG93ZXIgdXNhZ2UsIGJ1dCBsZXQgdGhlIHdob2xlCisJc3lzdGVtIGVudGVyIGxvdy1wb3dlciBzdGF0ZXMgbW9yZSBvZnRlbi4KKworICAgIFJ1bnRpbWUgUG93ZXIgTWFuYWdlbWVudCBtb2RlbDoKKwlEZXZpY2VzIG1heSBhbHNvIGJlIHB1dCBpbnRvIGxvdy1wb3dlciBzdGF0ZXMgd2hpbGUgdGhlIHN5c3RlbSBpcworCXJ1bm5pbmcsIGluZGVwZW5kZW50bHkgb2Ygb3RoZXIgcG93ZXIgbWFuYWdlbWVudCBhY3Rpdml0eSBpbiBwcmluY2lwbGUuCisJSG93ZXZlciwgZGV2aWNlcyBhcmUgbm90IGdlbmVyYWxseSBpbmRlcGVuZGVudCBvZiBlYWNoIG90aGVyIChmb3IKKwlleGFtcGxlLCBhIHBhcmVudCBkZXZpY2UgY2Fubm90IGJlIHN1c3BlbmRlZCB1bmxlc3MgYWxsIG9mIGl0cyBjaGlsZAorCWRldmljZXMgaGF2ZSBiZWVuIHN1c3BlbmRlZCkuICBNb3Jlb3ZlciwgZGVwZW5kaW5nIG9uIHRoZSBidXMgdHlwZSB0aGUKKwlkZXZpY2UgaXMgb24sIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8gY2Fycnkgb3V0IHNvbWUgYnVzLXNwZWNpZmljCisJb3BlcmF0aW9ucyBvbiB0aGUgZGV2aWNlIGZvciB0aGlzIHB1cnBvc2UuICBEZXZpY2VzIHB1dCBpbnRvIGxvdyBwb3dlcgorCXN0YXRlcyBhdCBydW4gdGltZSBtYXkgcmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5nIGR1cmluZyBzeXN0ZW0td2lkZSBwb3dlcgorCXRyYW5zaXRpb25zIChzdXNwZW5kIG9yIGhpYmVybmF0aW9uKS4KKworCUZvciB0aGVzZSByZWFzb25zIG5vdCBvbmx5IHRoZSBkZXZpY2UgZHJpdmVyIGl0c2VsZiwgYnV0IGFsc28gdGhlCisJYXBwcm9wcmlhdGUgc3Vic3lzdGVtIChidXMgdHlwZSwgZGV2aWNlIHR5cGUgb3IgZGV2aWNlIGNsYXNzKSBkcml2ZXIgYW5kCisJdGhlIFBNIGNvcmUgYXJlIGludm9sdmVkIGluIHJ1bnRpbWUgcG93ZXIgbWFuYWdlbWVudC4gIEFzIGluIHRoZSBzeXN0ZW0KKwlzbGVlcCBwb3dlciBtYW5hZ2VtZW50IGNhc2UsIHRoZXkgbmVlZCB0byBjb2xsYWJvcmF0ZSBieSBpbXBsZW1lbnRpbmcKKwl2YXJpb3VzIHJvbGUtc3BlY2lmaWMgc3VzcGVuZCBhbmQgcmVzdW1lIG1ldGhvZHMsIHNvIHRoYXQgdGhlIGhhcmR3YXJlCisJaXMgY2xlYW5seSBwb3dlcmVkIGRvd24gYW5kIHJlYWN0aXZhdGVkIHdpdGhvdXQgZGF0YSBvciBzZXJ2aWNlIGxvc3MuCisKK1RoZXJlJ3Mgbm90IGEgbG90IHRvIGJlIHNhaWQgYWJvdXQgdGhvc2UgbG93LXBvd2VyIHN0YXRlcyBleGNlcHQgdGhhdCB0aGV5IGFyZQordmVyeSBzeXN0ZW0tc3BlY2lmaWMsIGFuZCBvZnRlbiBkZXZpY2Utc3BlY2lmaWMuICBBbHNvLCB0aGF0IGlmIGVub3VnaCBkZXZpY2VzCitoYXZlIGJlZW4gcHV0IGludG8gbG93LXBvd2VyIHN0YXRlcyAoYXQgcnVudGltZSksIHRoZSBlZmZlY3QgbWF5IGJlIHZlcnkgc2ltaWxhcgordG8gZW50ZXJpbmcgc29tZSBzeXN0ZW0td2lkZSBsb3ctcG93ZXIgc3RhdGUgKHN5c3RlbSBzbGVlcCkgLi4uIGFuZCB0aGF0CitzeW5lcmdpZXMgZXhpc3QsIHNvIHRoYXQgc2V2ZXJhbCBkcml2ZXJzIHVzaW5nIHJ1bnRpbWUgUE0gbWlnaHQgcHV0IHRoZSBzeXN0ZW0KK2ludG8gYSBzdGF0ZSB3aGVyZSBldmVuIGRlZXBlciBwb3dlciBzYXZpbmcgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLgorCitNb3N0IHN1c3BlbmRlZCBkZXZpY2VzIHdpbGwgaGF2ZSBxdWllc2NlZCBhbGwgSS9POiBubyBtb3JlIERNQSBvciBJUlFzIChleGNlcHQKK2ZvciB3YWtldXAgZXZlbnRzKSwgbm8gbW9yZSBkYXRhIHJlYWQgb3Igd3JpdHRlbiwgYW5kIHJlcXVlc3RzIGZyb20gdXBzdHJlYW0KK2RyaXZlcnMgYXJlIG5vIGxvbmdlciBhY2NlcHRlZC4gIEEgZ2l2ZW4gYnVzIG9yIHBsYXRmb3JtIG1heSBoYXZlIGRpZmZlcmVudAorcmVxdWlyZW1lbnRzIHRob3VnaC4KKworRXhhbXBsZXMgb2YgaGFyZHdhcmUgd2FrZXVwIGV2ZW50cyBpbmNsdWRlIGFuIGFsYXJtIGZyb20gYSByZWFsIHRpbWUgY2xvY2ssCituZXR3b3JrIHdha2Utb24tTEFOIHBhY2tldHMsIGtleWJvYXJkIG9yIG1vdXNlIGFjdGl2aXR5LCBhbmQgbWVkaWEgaW5zZXJ0aW9uCitvciByZW1vdmFsIChmb3IgUENNQ0lBLCBNTUMvU0QsIFVTQiwgYW5kIHNvIG9uKS4KKworCitJbnRlcmZhY2VzIGZvciBFbnRlcmluZyBTeXN0ZW0gU2xlZXAgU3RhdGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitUaGVyZSBhcmUgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlcyBwcm92aWRlZCBmb3Igc3Vic3lzdGVtcyAoYnVzIHR5cGUsIGRldmljZSB0eXBlLAorZGV2aWNlIGNsYXNzKSBhbmQgZGV2aWNlIGRyaXZlcnMgdG8gYWxsb3cgdGhlbSB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgcG93ZXIKK21hbmFnZW1lbnQgb2YgZGV2aWNlcyB0aGV5IGFyZSBjb25jZXJuZWQgd2l0aC4gIFRoZXNlIGludGVyZmFjZXMgY292ZXIgYm90aAorc3lzdGVtIHNsZWVwIGFuZCBydW50aW1lIHBvd2VyIG1hbmFnZW1lbnQuCisKKworRGV2aWNlIFBvd2VyIE1hbmFnZW1lbnQgT3BlcmF0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRGV2aWNlIHBvd2VyIG1hbmFnZW1lbnQgb3BlcmF0aW9ucywgYXQgdGhlIHN1YnN5c3RlbSBsZXZlbCBhcyB3ZWxsIGFzIGF0IHRoZQorZGV2aWNlIGRyaXZlciBsZXZlbCwgYXJlIGltcGxlbWVudGVkIGJ5IGRlZmluaW5nIGFuZCBwb3B1bGF0aW5nIG9iamVjdHMgb2YgdHlwZQorc3RydWN0IGRldl9wbV9vcHM6CisKK3N0cnVjdCBkZXZfcG1fb3BzIHsKKwlpbnQgKCpwcmVwYXJlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOworCXZvaWQgKCpjb21wbGV0ZSkoc3RydWN0IGRldmljZSAqZGV2KTsKKwlpbnQgKCpzdXNwZW5kKShzdHJ1Y3QgZGV2aWNlICpkZXYpOworCWludCAoKnJlc3VtZSkoc3RydWN0IGRldmljZSAqZGV2KTsKKwlpbnQgKCpmcmVlemUpKHN0cnVjdCBkZXZpY2UgKmRldik7CisJaW50ICgqdGhhdykoc3RydWN0IGRldmljZSAqZGV2KTsKKwlpbnQgKCpwb3dlcm9mZikoc3RydWN0IGRldmljZSAqZGV2KTsKKwlpbnQgKCpyZXN0b3JlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOworCWludCAoKnN1c3BlbmRfbGF0ZSkoc3RydWN0IGRldmljZSAqZGV2KTsKKwlpbnQgKCpyZXN1bWVfZWFybHkpKHN0cnVjdCBkZXZpY2UgKmRldik7CisJaW50ICgqZnJlZXplX2xhdGUpKHN0cnVjdCBkZXZpY2UgKmRldik7CisJaW50ICgqdGhhd19lYXJseSkoc3RydWN0IGRldmljZSAqZGV2KTsKKwlpbnQgKCpwb3dlcm9mZl9sYXRlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOworCWludCAoKnJlc3RvcmVfZWFybHkpKHN0cnVjdCBkZXZpY2UgKmRldik7CisJaW50ICgqc3VzcGVuZF9ub2lycSkoc3RydWN0IGRldmljZSAqZGV2KTsKKwlpbnQgKCpyZXN1bWVfbm9pcnEpKHN0cnVjdCBkZXZpY2UgKmRldik7CisJaW50ICgqZnJlZXplX25vaXJxKShzdHJ1Y3QgZGV2aWNlICpkZXYpOworCWludCAoKnRoYXdfbm9pcnEpKHN0cnVjdCBkZXZpY2UgKmRldik7CisJaW50ICgqcG93ZXJvZmZfbm9pcnEpKHN0cnVjdCBkZXZpY2UgKmRldik7CisJaW50ICgqcmVzdG9yZV9ub2lycSkoc3RydWN0IGRldmljZSAqZGV2KTsKKwlpbnQgKCpydW50aW1lX3N1c3BlbmQpKHN0cnVjdCBkZXZpY2UgKmRldik7CisJaW50ICgqcnVudGltZV9yZXN1bWUpKHN0cnVjdCBkZXZpY2UgKmRldik7CisJaW50ICgqcnVudGltZV9pZGxlKShzdHJ1Y3QgZGV2aWNlICpkZXYpOworfTsKKworVGhpcyBzdHJ1Y3R1cmUgaXMgZGVmaW5lZCBpbiBpbmNsdWRlL2xpbnV4L3BtLmggYW5kIHRoZSBtZXRob2RzIGluY2x1ZGVkIGluIGl0CithcmUgYWxzbyBkZXNjcmliZWQgaW4gdGhhdCBmaWxlLiAgVGhlaXIgcm9sZXMgd2lsbCBiZSBleHBsYWluZWQgaW4gd2hhdCBmb2xsb3dzLgorRm9yIG5vdywgaXQgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gcmVtZW1iZXIgdGhhdCB0aGUgbGFzdCB0aHJlZSBtZXRob2RzIGFyZQorc3BlY2lmaWMgdG8gcnVudGltZSBwb3dlciBtYW5hZ2VtZW50IHdoaWxlIHRoZSByZW1haW5pbmcgb25lcyBhcmUgdXNlZCBkdXJpbmcKK3N5c3RlbS13aWRlIHBvd2VyIHRyYW5zaXRpb25zLgorCitUaGVyZSBhbHNvIGlzIGEgZGVwcmVjYXRlZCAib2xkIiBvciAibGVnYWN5IiBpbnRlcmZhY2UgZm9yIHBvd2VyIG1hbmFnZW1lbnQKK29wZXJhdGlvbnMgYXZhaWxhYmxlIGF0IGxlYXN0IGZvciBzb21lIHN1YnN5c3RlbXMuICBUaGlzIGFwcHJvYWNoIGRvZXMgbm90IHVzZQorc3RydWN0IGRldl9wbV9vcHMgb2JqZWN0cyBhbmQgaXQgaXMgc3VpdGFibGUgb25seSBmb3IgaW1wbGVtZW50aW5nIHN5c3RlbSBzbGVlcAorcG93ZXIgbWFuYWdlbWVudCBtZXRob2RzLiAgVGhlcmVmb3JlIGl0IGlzIG5vdCBkZXNjcmliZWQgaW4gdGhpcyBkb2N1bWVudCwgc28KK3BsZWFzZSByZWZlciBkaXJlY3RseSB0byB0aGUgc291cmNlIGNvZGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaXQuCisKKworU3Vic3lzdGVtLUxldmVsIE1ldGhvZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgY29yZSBtZXRob2RzIHRvIHN1c3BlbmQgYW5kIHJlc3VtZSBkZXZpY2VzIHJlc2lkZSBpbiBzdHJ1Y3QgZGV2X3BtX29wcworcG9pbnRlZCB0byBieSB0aGUgb3BzIG1lbWJlciBvZiBzdHJ1Y3QgZGV2X3BtX2RvbWFpbiwgb3IgYnkgdGhlIHBtIG1lbWJlciBvZgorc3RydWN0IGJ1c190eXBlLCBzdHJ1Y3QgZGV2aWNlX3R5cGUgYW5kIHN0cnVjdCBjbGFzcy4gIFRoZXkgYXJlIG1vc3RseSBvZgoraW50ZXJlc3QgdG8gdGhlIHBlb3BsZSB3cml0aW5nIGluZnJhc3RydWN0dXJlIGZvciBwbGF0Zm9ybXMgYW5kIGJ1c2VzLCBsaWtlIFBDSQorb3IgVVNCLCBvciBkZXZpY2UgdHlwZSBhbmQgZGV2aWNlIGNsYXNzIGRyaXZlcnMuICBUaGV5IGFsc28gYXJlIHJlbGV2YW50IHRvIHRoZQord3JpdGVycyBvZiBkZXZpY2UgZHJpdmVycyB3aG9zZSBzdWJzeXN0ZW1zIChQTSBkb21haW5zLCBkZXZpY2UgdHlwZXMsIGRldmljZQorY2xhc3NlcyBhbmQgYnVzIHR5cGVzKSBkb24ndCBwcm92aWRlIGFsbCBwb3dlciBtYW5hZ2VtZW50IG1ldGhvZHMuCisKK0J1cyBkcml2ZXJzIGltcGxlbWVudCB0aGVzZSBtZXRob2RzIGFzIGFwcHJvcHJpYXRlIGZvciB0aGUgaGFyZHdhcmUgYW5kIHRoZQorZHJpdmVycyB1c2luZyBpdDsgUENJIHdvcmtzIGRpZmZlcmVudGx5IGZyb20gVVNCLCBhbmQgc28gb24uICBOb3QgbWFueSBwZW9wbGUKK3dyaXRlIHN1YnN5c3RlbS1sZXZlbCBkcml2ZXJzOyBtb3N0IGRyaXZlciBjb2RlIGlzIGEgImRldmljZSBkcml2ZXIiIHRoYXQgYnVpbGRzCitvbiB0b3Agb2YgYnVzLXNwZWNpZmljIGZyYW1ld29yayBjb2RlLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGVzZSBkcml2ZXIgY2FsbHMsIHNlZSB0aGUgZGVzY3JpcHRpb24gbGF0ZXI7Cit0aGV5IGFyZSBjYWxsZWQgaW4gcGhhc2VzIGZvciBldmVyeSBkZXZpY2UsIHJlc3BlY3RpbmcgdGhlIHBhcmVudC1jaGlsZAorc2VxdWVuY2luZyBpbiB0aGUgZHJpdmVyIG1vZGVsIHRyZWUuCisKKworL3N5cy9kZXZpY2VzLy4uLi9wb3dlci93YWtldXAgZmlsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBbGwgZGV2aWNlIG9iamVjdHMgaW4gdGhlIGRyaXZlciBtb2RlbCBjb250YWluIGZpZWxkcyB0aGF0IGNvbnRyb2wgdGhlIGhhbmRsaW5nCitvZiBzeXN0ZW0gd2FrZXVwIGV2ZW50cyAoaGFyZHdhcmUgc2lnbmFscyB0aGF0IGNhbiBmb3JjZSB0aGUgc3lzdGVtIG91dCBvZiBhCitzbGVlcCBzdGF0ZSkuICBUaGVzZSBmaWVsZHMgYXJlIGluaXRpYWxpemVkIGJ5IGJ1cyBvciBkZXZpY2UgZHJpdmVyIGNvZGUgdXNpbmcKK2RldmljZV9zZXRfd2FrZXVwX2NhcGFibGUoKSBhbmQgZGV2aWNlX3NldF93YWtldXBfZW5hYmxlKCksIGRlZmluZWQgaW4KK2luY2x1ZGUvbGludXgvcG1fd2FrZXVwLmguCisKK1RoZSAicG93ZXIuY2FuX3dha2V1cCIgZmxhZyBqdXN0IHJlY29yZHMgd2hldGhlciB0aGUgZGV2aWNlIChhbmQgaXRzIGRyaXZlcikgY2FuCitwaHlzaWNhbGx5IHN1cHBvcnQgd2FrZXVwIGV2ZW50cy4gIFRoZSBkZXZpY2Vfc2V0X3dha2V1cF9jYXBhYmxlKCkgcm91dGluZQorYWZmZWN0cyB0aGlzIGZsYWcuICBUaGUgInBvd2VyLndha2V1cCIgZmllbGQgaXMgYSBwb2ludGVyIHRvIGFuIG9iamVjdCBvZiB0eXBlCitzdHJ1Y3Qgd2FrZXVwX3NvdXJjZSB1c2VkIGZvciBjb250cm9sbGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgZGV2aWNlIHNob3VsZCB1c2UKK2l0cyBzeXN0ZW0gd2FrZXVwIG1lY2hhbmlzbSBhbmQgZm9yIG5vdGlmeWluZyB0aGUgUE0gY29yZSBvZiBzeXN0ZW0gd2FrZXVwCitldmVudHMgc2lnbmFsZWQgYnkgdGhlIGRldmljZS4gIFRoaXMgb2JqZWN0IGlzIG9ubHkgcHJlc2VudCBmb3Igd2FrZXVwLWNhcGFibGUKK2RldmljZXMgKGkuZS4gZGV2aWNlcyB3aG9zZSAiY2FuX3dha2V1cCIgZmxhZ3MgYXJlIHNldCkgYW5kIGlzIGNyZWF0ZWQgKG9yCityZW1vdmVkKSBieSBkZXZpY2Vfc2V0X3dha2V1cF9jYXBhYmxlKCkuCisKK1doZXRoZXIgb3Igbm90IGEgZGV2aWNlIGlzIGNhcGFibGUgb2YgaXNzdWluZyB3YWtldXAgZXZlbnRzIGlzIGEgaGFyZHdhcmUKK21hdHRlciwgYW5kIHRoZSBrZXJuZWwgaXMgcmVzcG9uc2libGUgZm9yIGtlZXBpbmcgdHJhY2sgb2YgaXQuICBCeSBjb250cmFzdCwKK3doZXRoZXIgb3Igbm90IGEgd2FrZXVwLWNhcGFibGUgZGV2aWNlIHNob3VsZCBpc3N1ZSB3YWtldXAgZXZlbnRzIGlzIGEgcG9saWN5CitkZWNpc2lvbiwgYW5kIGl0IGlzIG1hbmFnZWQgYnkgdXNlciBzcGFjZSB0aHJvdWdoIGEgc3lzZnMgYXR0cmlidXRlOiB0aGUKKyJwb3dlci93YWtldXAiIGZpbGUuICBVc2VyIHNwYWNlIGNhbiB3cml0ZSB0aGUgc3RyaW5ncyAiZW5hYmxlZCIgb3IgImRpc2FibGVkIgordG8gaXQgdG8gaW5kaWNhdGUgd2hldGhlciBvciBub3QsIHJlc3BlY3RpdmVseSwgdGhlIGRldmljZSBpcyBzdXBwb3NlZCB0byBzaWduYWwKK3N5c3RlbSB3YWtldXAuICBUaGlzIGZpbGUgaXMgb25seSBwcmVzZW50IGlmIHRoZSAicG93ZXIud2FrZXVwIiBvYmplY3QgZXhpc3RzCitmb3IgdGhlIGdpdmVuIGRldmljZSBhbmQgaXMgY3JlYXRlZCAob3IgcmVtb3ZlZCkgYWxvbmcgd2l0aCB0aGF0IG9iamVjdCwgYnkKK2RldmljZV9zZXRfd2FrZXVwX2NhcGFibGUoKS4gIFJlYWRzIGZyb20gdGhlIGZpbGUgd2lsbCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcKK3N0cmluZy4KKworVGhlICJwb3dlci93YWtldXAiIGZpbGUgaXMgc3VwcG9zZWQgdG8gY29udGFpbiB0aGUgImRpc2FibGVkIiBzdHJpbmcgaW5pdGlhbGx5Citmb3IgdGhlIG1ham9yaXR5IG9mIGRldmljZXM7IHRoZSBtYWpvciBleGNlcHRpb25zIGFyZSBwb3dlciBidXR0b25zLCBrZXlib2FyZHMsCithbmQgRXRoZXJuZXQgYWRhcHRlcnMgd2hvc2UgV29MICh3YWtlLW9uLUxBTikgZmVhdHVyZSBoYXMgYmVlbiBzZXQgdXAgd2l0aAorZXRodG9vbC4gIEl0IHNob3VsZCBhbHNvIGRlZmF1bHQgdG8gImVuYWJsZWQiIGZvciBkZXZpY2VzIHRoYXQgZG9uJ3QgZ2VuZXJhdGUKK3dha2V1cCByZXF1ZXN0cyBvbiB0aGVpciBvd24gYnV0IG1lcmVseSBmb3J3YXJkIHdha2V1cCByZXF1ZXN0cyBmcm9tIG9uZSBidXMgdG8KK2Fub3RoZXIgKGxpa2UgUENJIEV4cHJlc3MgcG9ydHMpLgorCitUaGUgZGV2aWNlX21heV93YWtldXAoKSByb3V0aW5lIHJldHVybnMgdHJ1ZSBvbmx5IGlmIHRoZSAicG93ZXIud2FrZXVwIiBvYmplY3QKK2V4aXN0cyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgInBvd2VyL3dha2V1cCIgZmlsZSBjb250YWlucyB0aGUgc3RyaW5nICJlbmFibGVkIi4KK1RoaXMgaW5mb3JtYXRpb24gaXMgdXNlZCBieSBzdWJzeXN0ZW1zLCBsaWtlIHRoZSBQQ0kgYnVzIHR5cGUgY29kZSwgdG8gc2VlCit3aGV0aGVyIG9yIG5vdCB0byBlbmFibGUgdGhlIGRldmljZXMnIHdha2V1cCBtZWNoYW5pc21zLiAgSWYgZGV2aWNlIHdha2V1cAorbWVjaGFuaXNtcyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZCBkaXJlY3RseSBieSBkcml2ZXJzLCB0aGV5IGFsc28gc2hvdWxkIHVzZQorZGV2aWNlX21heV93YWtldXAoKSB0byBkZWNpZGUgd2hhdCB0byBkbyBkdXJpbmcgYSBzeXN0ZW0gc2xlZXAgdHJhbnNpdGlvbi4KK0RldmljZSBkcml2ZXJzLCBob3dldmVyLCBhcmUgbm90IHN1cHBvc2VkIHRvIGNhbGwgZGV2aWNlX3NldF93YWtldXBfZW5hYmxlKCkKK2RpcmVjdGx5IGluIGFueSBjYXNlLgorCitJdCBvdWdodCB0byBiZSBub3RlZCB0aGF0IHN5c3RlbSB3YWtldXAgaXMgY29uY2VwdHVhbGx5IGRpZmZlcmVudCBmcm9tICJyZW1vdGUKK3dha2V1cCIgdXNlZCBieSBydW50aW1lIHBvd2VyIG1hbmFnZW1lbnQsIGFsdGhvdWdoIGl0IG1heSBiZSBzdXBwb3J0ZWQgYnkgdGhlCitzYW1lIHBoeXNpY2FsIG1lY2hhbmlzbS4gIFJlbW90ZSB3YWtldXAgaXMgYSBmZWF0dXJlIGFsbG93aW5nIGRldmljZXMgaW4KK2xvdy1wb3dlciBzdGF0ZXMgdG8gdHJpZ2dlciBzcGVjaWZpYyBpbnRlcnJ1cHRzIHRvIHNpZ25hbCBjb25kaXRpb25zIGluIHdoaWNoCit0aGV5IHNob3VsZCBiZSBwdXQgaW50byB0aGUgZnVsbC1wb3dlciBzdGF0ZS4gIFRob3NlIGludGVycnVwdHMgbWF5IG9yIG1heSBub3QKK2JlIHVzZWQgdG8gc2lnbmFsIHN5c3RlbSB3YWtldXAgZXZlbnRzLCBkZXBlbmRpbmcgb24gdGhlIGhhcmR3YXJlIGRlc2lnbi4gIE9uCitzb21lIHN5c3RlbXMgaXQgaXMgaW1wb3NzaWJsZSB0byB0cmlnZ2VyIHRoZW0gZnJvbSBzeXN0ZW0gc2xlZXAgc3RhdGVzLiAgSW4gYW55CitjYXNlLCByZW1vdGUgd2FrZXVwIHNob3VsZCBhbHdheXMgYmUgZW5hYmxlZCBmb3IgcnVudGltZSBwb3dlciBtYW5hZ2VtZW50IGZvcgorYWxsIGRldmljZXMgYW5kIGRyaXZlcnMgdGhhdCBzdXBwb3J0IGl0LgorCisvc3lzL2RldmljZXMvLi4uL3Bvd2VyL2NvbnRyb2wgZmlsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRWFjaCBkZXZpY2UgaW4gdGhlIGRyaXZlciBtb2RlbCBoYXMgYSBmbGFnIHRvIGNvbnRyb2wgd2hldGhlciBpdCBpcyBzdWJqZWN0IHRvCitydW50aW1lIHBvd2VyIG1hbmFnZW1lbnQuICBUaGlzIGZsYWcsIGNhbGxlZCBydW50aW1lX2F1dG8sIGlzIGluaXRpYWxpemVkIGJ5IHRoZQorYnVzIHR5cGUgKG9yIGdlbmVyYWxseSBzdWJzeXN0ZW0pIGNvZGUgdXNpbmcgcG1fcnVudGltZV9hbGxvdygpIG9yCitwbV9ydW50aW1lX2ZvcmJpZCgpOyB0aGUgZGVmYXVsdCBpcyB0byBhbGxvdyBydW50aW1lIHBvd2VyIG1hbmFnZW1lbnQuCisKK1RoZSBzZXR0aW5nIGNhbiBiZSBhZGp1c3RlZCBieSB1c2VyIHNwYWNlIGJ5IHdyaXRpbmcgZWl0aGVyICJvbiIgb3IgImF1dG8iIHRvCit0aGUgZGV2aWNlJ3MgcG93ZXIvY29udHJvbCBzeXNmcyBmaWxlLiAgV3JpdGluZyAiYXV0byIgY2FsbHMgcG1fcnVudGltZV9hbGxvdygpLAorc2V0dGluZyB0aGUgZmxhZyBhbmQgYWxsb3dpbmcgdGhlIGRldmljZSB0byBiZSBydW50aW1lIHBvd2VyLW1hbmFnZWQgYnkgaXRzCitkcml2ZXIuICBXcml0aW5nICJvbiIgY2FsbHMgcG1fcnVudGltZV9mb3JiaWQoKSwgY2xlYXJpbmcgdGhlIGZsYWcsIHJldHVybmluZwordGhlIGRldmljZSB0byBmdWxsIHBvd2VyIGlmIGl0IHdhcyBpbiBhIGxvdy1wb3dlciBzdGF0ZSwgYW5kIHByZXZlbnRpbmcgdGhlCitkZXZpY2UgZnJvbSBiZWluZyBydW50aW1lIHBvd2VyLW1hbmFnZWQuICBVc2VyIHNwYWNlIGNhbiBjaGVjayB0aGUgY3VycmVudCB2YWx1ZQorb2YgdGhlIHJ1bnRpbWVfYXV0byBmbGFnIGJ5IHJlYWRpbmcgdGhlIGZpbGUuCisKK1RoZSBkZXZpY2UncyBydW50aW1lX2F1dG8gZmxhZyBoYXMgbm8gZWZmZWN0IG9uIHRoZSBoYW5kbGluZyBvZiBzeXN0ZW0td2lkZQorcG93ZXIgdHJhbnNpdGlvbnMuICBJbiBwYXJ0aWN1bGFyLCB0aGUgZGV2aWNlIGNhbiAoYW5kIGluIHRoZSBtYWpvcml0eSBvZiBjYXNlcworc2hvdWxkIGFuZCB3aWxsKSBiZSBwdXQgaW50byBhIGxvdy1wb3dlciBzdGF0ZSBkdXJpbmcgYSBzeXN0ZW0td2lkZSB0cmFuc2l0aW9uCit0byBhIHNsZWVwIHN0YXRlIGV2ZW4gdGhvdWdoIGl0cyBydW50aW1lX2F1dG8gZmxhZyBpcyBjbGVhci4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJ1bnRpbWUgcG93ZXIgbWFuYWdlbWVudCBmcmFtZXdvcmssIHJlZmVyIHRvCitEb2N1bWVudGF0aW9uL3Bvd2VyL3J1bnRpbWVfcG0udHh0LgorCisKK0NhbGxpbmcgRHJpdmVycyB0byBFbnRlciBhbmQgTGVhdmUgU3lzdGVtIFNsZWVwIFN0YXRlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitXaGVuIHRoZSBzeXN0ZW0gZ29lcyBpbnRvIGEgc2xlZXAgc3RhdGUsIGVhY2ggZGV2aWNlJ3MgZHJpdmVyIGlzIGFza2VkIHRvCitzdXNwZW5kIHRoZSBkZXZpY2UgYnkgcHV0dGluZyBpdCBpbnRvIGEgc3RhdGUgY29tcGF0aWJsZSB3aXRoIHRoZSB0YXJnZXQKK3N5c3RlbSBzdGF0ZS4gIFRoYXQncyB1c3VhbGx5IHNvbWUgdmVyc2lvbiBvZiAib2ZmIiwgYnV0IHRoZSBkZXRhaWxzIGFyZQorc3lzdGVtLXNwZWNpZmljLiAgQWxzbywgd2FrZXVwLWVuYWJsZWQgZGV2aWNlcyB3aWxsIHVzdWFsbHkgc3RheSBwYXJ0bHkKK2Z1bmN0aW9uYWwgaW4gb3JkZXIgdG8gd2FrZSB0aGUgc3lzdGVtLgorCitXaGVuIHRoZSBzeXN0ZW0gbGVhdmVzIHRoYXQgbG93LXBvd2VyIHN0YXRlLCB0aGUgZGV2aWNlJ3MgZHJpdmVyIGlzIGFza2VkIHRvCityZXN1bWUgaXQgYnkgcmV0dXJuaW5nIGl0IHRvIGZ1bGwgcG93ZXIuICBUaGUgc3VzcGVuZCBhbmQgcmVzdW1lIG9wZXJhdGlvbnMKK2Fsd2F5cyBnbyB0b2dldGhlciwgYW5kIGJvdGggYXJlIG11bHRpLXBoYXNlIG9wZXJhdGlvbnMuCisKK0ZvciBzaW1wbGUgZHJpdmVycywgc3VzcGVuZCBtaWdodCBxdWllc2NlIHRoZSBkZXZpY2UgdXNpbmcgY2xhc3MgY29kZQorYW5kIHRoZW4gdHVybiBpdHMgaGFyZHdhcmUgYXMgIm9mZiIgYXMgcG9zc2libGUgZHVyaW5nIHN1c3BlbmRfbm9pcnEuICBUaGUKK21hdGNoaW5nIHJlc3VtZSBjYWxscyB3b3VsZCB0aGVuIGNvbXBsZXRlbHkgcmVpbml0aWFsaXplIHRoZSBoYXJkd2FyZQorYmVmb3JlIHJlYWN0aXZhdGluZyBpdHMgY2xhc3MgSS9PIHF1ZXVlcy4KKworTW9yZSBwb3dlci1hd2FyZSBkcml2ZXJzIG1pZ2h0IHByZXBhcmUgdGhlIGRldmljZXMgZm9yIHRyaWdnZXJpbmcgc3lzdGVtIHdha2V1cAorZXZlbnRzLgorCisKK0NhbGwgU2VxdWVuY2UgR3VhcmFudGVlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUbyBlbnN1cmUgdGhhdCBicmlkZ2VzIGFuZCBzaW1pbGFyIGxpbmtzIG5lZWRpbmcgdG8gdGFsayB0byBhIGRldmljZSBhcmUKK2F2YWlsYWJsZSB3aGVuIHRoZSBkZXZpY2UgaXMgc3VzcGVuZGVkIG9yIHJlc3VtZWQsIHRoZSBkZXZpY2UgdHJlZSBpcword2Fsa2VkIGluIGEgYm90dG9tLXVwIG9yZGVyIHRvIHN1c3BlbmQgZGV2aWNlcy4gIEEgdG9wLWRvd24gb3JkZXIgaXMKK3VzZWQgdG8gcmVzdW1lIHRob3NlIGRldmljZXMuCisKK1RoZSBvcmRlcmluZyBvZiB0aGUgZGV2aWNlIHRyZWUgaXMgZGVmaW5lZCBieSB0aGUgb3JkZXIgaW4gd2hpY2ggZGV2aWNlcworZ2V0IHJlZ2lzdGVyZWQ6ICBhIGNoaWxkIGNhbiBuZXZlciBiZSByZWdpc3RlcmVkLCBwcm9iZWQgb3IgcmVzdW1lZCBiZWZvcmUKK2l0cyBwYXJlbnQ7IGFuZCBjYW4ndCBiZSByZW1vdmVkIG9yIHN1c3BlbmRlZCBhZnRlciB0aGF0IHBhcmVudC4KKworVGhlIHBvbGljeSBpcyB0aGF0IHRoZSBkZXZpY2UgdHJlZSBzaG91bGQgbWF0Y2ggaGFyZHdhcmUgYnVzIHRvcG9sb2d5LgorKE9yIGF0IGxlYXN0IHRoZSBjb250cm9sIGJ1cywgZm9yIGRldmljZXMgd2hpY2ggdXNlIG11bHRpcGxlIGJ1c3Nlcy4pCitJbiBwYXJ0aWN1bGFyLCB0aGlzIG1lYW5zIHRoYXQgYSBkZXZpY2UgcmVnaXN0cmF0aW9uIG1heSBmYWlsIGlmIHRoZSBwYXJlbnQgb2YKK3RoZSBkZXZpY2UgaXMgc3VzcGVuZGluZyAoaS5lLiBoYXMgYmVlbiBjaG9zZW4gYnkgdGhlIFBNIGNvcmUgYXMgdGhlIG5leHQKK2RldmljZSB0byBzdXNwZW5kKSBvciBoYXMgYWxyZWFkeSBzdXNwZW5kZWQsIGFzIHdlbGwgYXMgYWZ0ZXIgYWxsIG9mIHRoZSBvdGhlcgorZGV2aWNlcyBoYXZlIGJlZW4gc3VzcGVuZGVkLiAgRGV2aWNlIGRyaXZlcnMgbXVzdCBiZSBwcmVwYXJlZCB0byBjb3BlIHdpdGggc3VjaAorc2l0dWF0aW9ucy4KKworCitTeXN0ZW0gUG93ZXIgTWFuYWdlbWVudCBQaGFzZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU3VzcGVuZGluZyBvciByZXN1bWluZyB0aGUgc3lzdGVtIGlzIGRvbmUgaW4gc2V2ZXJhbCBwaGFzZXMuICBEaWZmZXJlbnQgcGhhc2VzCithcmUgdXNlZCBmb3IgZnJlZXplLCBzdGFuZGJ5LCBhbmQgbWVtb3J5IHNsZWVwIHN0YXRlcyAoInN1c3BlbmQtdG8tUkFNIikgYW5kIHRoZQoraGliZXJuYXRpb24gc3RhdGUgKCJzdXNwZW5kLXRvLWRpc2siKS4gIEVhY2ggcGhhc2UgaW52b2x2ZXMgZXhlY3V0aW5nIGNhbGxiYWNrcworZm9yIGV2ZXJ5IGRldmljZSBiZWZvcmUgdGhlIG5leHQgcGhhc2UgYmVnaW5zLiAgTm90IGFsbCBidXNzZXMgb3IgY2xhc3Nlcworc3VwcG9ydCBhbGwgdGhlc2UgY2FsbGJhY2tzIGFuZCBub3QgYWxsIGRyaXZlcnMgdXNlIGFsbCB0aGUgY2FsbGJhY2tzLiAgVGhlCit2YXJpb3VzIHBoYXNlcyBhbHdheXMgcnVuIGFmdGVyIHRhc2tzIGhhdmUgYmVlbiBmcm96ZW4gYW5kIGJlZm9yZSB0aGV5IGFyZQordW5mcm96ZW4uICBGdXJ0aGVybW9yZSwgdGhlICpfbm9pcnEgcGhhc2VzIHJ1biBhdCBhIHRpbWUgd2hlbiBJUlEgaGFuZGxlcnMgaGF2ZQorYmVlbiBkaXNhYmxlZCAoZXhjZXB0IGZvciB0aG9zZSBtYXJrZWQgd2l0aCB0aGUgSVJRRl9OT19TVVNQRU5EIGZsYWcpLgorCitBbGwgcGhhc2VzIHVzZSBQTSBkb21haW4sIGJ1cywgdHlwZSwgY2xhc3Mgb3IgZHJpdmVyIGNhbGxiYWNrcyAodGhhdCBpcywgbWV0aG9kcworZGVmaW5lZCBpbiBkZXYtPnBtX2RvbWFpbi0+b3BzLCBkZXYtPmJ1cy0+cG0sIGRldi0+dHlwZS0+cG0sIGRldi0+Y2xhc3MtPnBtIG9yCitkZXYtPmRyaXZlci0+cG0pLiAgVGhlc2UgY2FsbGJhY2tzIGFyZSByZWdhcmRlZCBieSB0aGUgUE0gY29yZSBhcyBtdXR1YWxseQorZXhjbHVzaXZlLiAgTW9yZW92ZXIsIFBNIGRvbWFpbiBjYWxsYmFja3MgYWx3YXlzIHRha2UgcHJlY2VkZW5jZSBvdmVyIGFsbCBvZiB0aGUKK290aGVyIGNhbGxiYWNrcyBhbmQsIGZvciBleGFtcGxlLCB0eXBlIGNhbGxiYWNrcyB0YWtlIHByZWNlZGVuY2Ugb3ZlciBidXMsIGNsYXNzCithbmQgZHJpdmVyIGNhbGxiYWNrcy4gIFRvIGJlIHByZWNpc2UsIHRoZSBmb2xsb3dpbmcgcnVsZXMgYXJlIHVzZWQgdG8gZGV0ZXJtaW5lCit3aGljaCBjYWxsYmFjayB0byBleGVjdXRlIGluIHRoZSBnaXZlbiBwaGFzZToKKworICAgIDEuCUlmIGRldi0+cG1fZG9tYWluIGlzIHByZXNlbnQsIHRoZSBQTSBjb3JlIHdpbGwgY2hvb3NlIHRoZSBjYWxsYmFjaworCWluY2x1ZGVkIGluIGRldi0+cG1fZG9tYWluLT5vcHMgZm9yIGV4ZWN1dGlvbgorCisgICAgMi4JT3RoZXJ3aXNlLCBpZiBib3RoIGRldi0+dHlwZSBhbmQgZGV2LT50eXBlLT5wbSBhcmUgcHJlc2VudCwgdGhlIGNhbGxiYWNrCisJaW5jbHVkZWQgaW4gZGV2LT50eXBlLT5wbSB3aWxsIGJlIGNob3NlbiBmb3IgZXhlY3V0aW9uLgorCisgICAgMy4JT3RoZXJ3aXNlLCBpZiBib3RoIGRldi0+Y2xhc3MgYW5kIGRldi0+Y2xhc3MtPnBtIGFyZSBwcmVzZW50LCB0aGUKKwljYWxsYmFjayBpbmNsdWRlZCBpbiBkZXYtPmNsYXNzLT5wbSB3aWxsIGJlIGNob3NlbiBmb3IgZXhlY3V0aW9uLgorCisgICAgNC4JT3RoZXJ3aXNlLCBpZiBib3RoIGRldi0+YnVzIGFuZCBkZXYtPmJ1cy0+cG0gYXJlIHByZXNlbnQsIHRoZSBjYWxsYmFjaworCWluY2x1ZGVkIGluIGRldi0+YnVzLT5wbSB3aWxsIGJlIGNob3NlbiBmb3IgZXhlY3V0aW9uLgorCitUaGlzIGFsbG93cyBQTSBkb21haW5zIGFuZCBkZXZpY2UgdHlwZXMgdG8gb3ZlcnJpZGUgY2FsbGJhY2tzIHByb3ZpZGVkIGJ5IGJ1cwordHlwZXMgb3IgZGV2aWNlIGNsYXNzZXMgaWYgbmVjZXNzYXJ5LgorCitUaGUgUE0gZG9tYWluLCB0eXBlLCBjbGFzcyBhbmQgYnVzIGNhbGxiYWNrcyBtYXkgaW4gdHVybiBpbnZva2UgZGV2aWNlLSBvcgorZHJpdmVyLXNwZWNpZmljIG1ldGhvZHMgc3RvcmVkIGluIGRldi0+ZHJpdmVyLT5wbSwgYnV0IHRoZXkgZG9uJ3QgaGF2ZSB0byBkbwordGhhdC4KKworSWYgdGhlIHN1YnN5c3RlbSBjYWxsYmFjayBjaG9zZW4gZm9yIGV4ZWN1dGlvbiBpcyBub3QgcHJlc2VudCwgdGhlIFBNIGNvcmUgd2lsbAorZXhlY3V0ZSB0aGUgY29ycmVzcG9uZGluZyBtZXRob2QgZnJvbSBkZXYtPmRyaXZlci0+cG0gaW5zdGVhZCBpZiB0aGVyZSBpcyBvbmUuCisKKworRW50ZXJpbmcgU3lzdGVtIFN1c3BlbmQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitXaGVuIHRoZSBzeXN0ZW0gZ29lcyBpbnRvIHRoZSBmcmVlemUsIHN0YW5kYnkgb3IgbWVtb3J5IHNsZWVwIHN0YXRlLAordGhlIHBoYXNlcyBhcmU6CisKKwkJcHJlcGFyZSwgc3VzcGVuZCwgc3VzcGVuZF9sYXRlLCBzdXNwZW5kX25vaXJxLgorCisgICAgMS4JVGhlIHByZXBhcmUgcGhhc2UgaXMgbWVhbnQgdG8gcHJldmVudCByYWNlcyBieSBwcmV2ZW50aW5nIG5ldyBkZXZpY2VzCisJZnJvbSBiZWluZyByZWdpc3RlcmVkOyB0aGUgUE0gY29yZSB3b3VsZCBuZXZlciBrbm93IHRoYXQgYWxsIHRoZQorCWNoaWxkcmVuIG9mIGEgZGV2aWNlIGhhZCBiZWVuIHN1c3BlbmRlZCBpZiBuZXcgY2hpbGRyZW4gY291bGQgYmUKKwlyZWdpc3RlcmVkIGF0IHdpbGwuICAoQnkgY29udHJhc3QsIGRldmljZXMgbWF5IGJlIHVucmVnaXN0ZXJlZCBhdCBhbnkKKwl0aW1lLikgIFVubGlrZSB0aGUgb3RoZXIgc3VzcGVuZC1yZWxhdGVkIHBoYXNlcywgZHVyaW5nIHRoZSBwcmVwYXJlCisJcGhhc2UgdGhlIGRldmljZSB0cmVlIGlzIHRyYXZlcnNlZCB0b3AtZG93bi4KKworCUFmdGVyIHRoZSBwcmVwYXJlIGNhbGxiYWNrIG1ldGhvZCByZXR1cm5zLCBubyBuZXcgY2hpbGRyZW4gbWF5IGJlCisJcmVnaXN0ZXJlZCBiZWxvdyB0aGUgZGV2aWNlLiAgVGhlIG1ldGhvZCBtYXkgYWxzbyBwcmVwYXJlIHRoZSBkZXZpY2Ugb3IKKwlkcml2ZXIgaW4gc29tZSB3YXkgZm9yIHRoZSB1cGNvbWluZyBzeXN0ZW0gcG93ZXIgdHJhbnNpdGlvbiwgYnV0IGl0CisJc2hvdWxkIG5vdCBwdXQgdGhlIGRldmljZSBpbnRvIGEgbG93LXBvd2VyIHN0YXRlLgorCisJRm9yIGRldmljZXMgc3VwcG9ydGluZyBydW50aW1lIHBvd2VyIG1hbmFnZW1lbnQsIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlCisJcHJlcGFyZSBjYWxsYmFjayBjYW4gYmUgdXNlZCB0byBpbmRpY2F0ZSB0byB0aGUgUE0gY29yZSB0aGF0IGl0IG1heQorCXNhZmVseSBsZWF2ZSB0aGUgZGV2aWNlIGluIHJ1bnRpbWUgc3VzcGVuZCAoaWYgcnVudGltZS1zdXNwZW5kZWQKKwlhbHJlYWR5KSwgcHJvdmlkZWQgdGhhdCBhbGwgb2YgdGhlIGRldmljZSdzIGRlc2NlbmRhbnRzIGFyZSBhbHNvIGxlZnQgaW4KKwlydW50aW1lIHN1c3BlbmQuICBOYW1lbHksIGlmIHRoZSBwcmVwYXJlIGNhbGxiYWNrIHJldHVybnMgYSBwb3NpdGl2ZQorCW51bWJlciBhbmQgdGhhdCBoYXBwZW5zIGZvciBhbGwgb2YgdGhlIGRlc2NlbmRhbnRzIG9mIHRoZSBkZXZpY2UgdG9vLAorCWFuZCBhbGwgb2YgdGhlbSAoaW5jbHVkaW5nIHRoZSBkZXZpY2UgaXRzZWxmKSBhcmUgcnVudGltZS1zdXNwZW5kZWQsIHRoZQorCVBNIGNvcmUgd2lsbCBza2lwIHRoZSBzdXNwZW5kLCBzdXNwZW5kX2xhdGUgYW5kCXN1c3BlbmRfbm9pcnEgc3VzcGVuZAorCXBoYXNlcyBhcyB3ZWxsIGFzIHRoZSByZXN1bWVfbm9pcnEsIHJlc3VtZV9lYXJseSBhbmQgcmVzdW1lIHBoYXNlcyBvZgorCXRoZSBmb2xsb3dpbmcgc3lzdGVtIHJlc3VtZSBmb3IgYWxsIG9mIHRoZXNlIGRldmljZXMuCUluIHRoYXQgY2FzZSwKKwl0aGUgY29tcGxldGUgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgZGlyZWN0bHkgYWZ0ZXIgdGhlIHByZXBhcmUgY2FsbGJhY2sKKwlhbmQgaXMgZW50aXJlbHkgcmVzcG9uc2libGUgZm9yIGJyaW5naW5nIHRoZSBkZXZpY2UgYmFjayB0byB0aGUKKwlmdW5jdGlvbmFsIHN0YXRlIGFzIGFwcHJvcHJpYXRlLgorCisJTm90ZSB0aGF0IHRoaXMgZGlyZWN0LWNvbXBsZXRlIHByb2NlZHVyZSBhcHBsaWVzIGV2ZW4gaWYgdGhlIGRldmljZSBpcworCWRpc2FibGVkIGZvciBydW50aW1lIFBNOyBvbmx5IHRoZSBydW50aW1lLVBNIHN0YXR1cyBtYXR0ZXJzLiAgSXQgZm9sbG93cworCXRoYXQgaWYgYSBkZXZpY2UgaGFzIHN5c3RlbS1zbGVlcCBjYWxsYmFja3MgYnV0IGRvZXMgbm90IHN1cHBvcnQgcnVudGltZQorCVBNLCB0aGVuIGl0cyBwcmVwYXJlIGNhbGxiYWNrIG11c3QgbmV2ZXIgcmV0dXJuIGEgcG9zaXRpdmUgdmFsdWUuICBUaGlzCisJaXMgYmVjYXVzZSBhbGwgZGV2aWNlcyBhcmUgaW5pdGlhbGx5IHNldCB0byBydW50aW1lLXN1c3BlbmRlZCB3aXRoCisJcnVudGltZSBQTSBkaXNhYmxlZC4KKworICAgIDIuCVRoZSBzdXNwZW5kIG1ldGhvZHMgc2hvdWxkIHF1aWVzY2UgdGhlIGRldmljZSB0byBzdG9wIGl0IGZyb20gcGVyZm9ybWluZworCUkvTy4gIFRoZXkgYWxzbyBtYXkgc2F2ZSB0aGUgZGV2aWNlIHJlZ2lzdGVycyBhbmQgcHV0IGl0IGludG8gdGhlCisJYXBwcm9wcmlhdGUgbG93LXBvd2VyIHN0YXRlLCBkZXBlbmRpbmcgb24gdGhlIGJ1cyB0eXBlIHRoZSBkZXZpY2UgaXMgb24sCisJYW5kIHRoZXkgbWF5IGVuYWJsZSB3YWtldXAgZXZlbnRzLgorCisgICAgMwlGb3IgYSBudW1iZXIgb2YgZGV2aWNlcyBpdCBpcyBjb252ZW5pZW50IHRvIHNwbGl0IHN1c3BlbmQgaW50byB0aGUKKwkicXVpZXNjZSBkZXZpY2UiIGFuZCAic2F2ZSBkZXZpY2Ugc3RhdGUiIHBoYXNlcywgaW4gd2hpY2ggY2FzZXMKKwlzdXNwZW5kX2xhdGUgaXMgbWVhbnQgdG8gZG8gdGhlIGxhdHRlci4gIEl0IGlzIGFsd2F5cyBleGVjdXRlZCBhZnRlcgorCXJ1bnRpbWUgcG93ZXIgbWFuYWdlbWVudCBoYXMgYmVlbiBkaXNhYmxlZCBmb3IgYWxsIGRldmljZXMuCisKKyAgICA0LglUaGUgc3VzcGVuZF9ub2lycSBwaGFzZSBvY2N1cnMgYWZ0ZXIgSVJRIGhhbmRsZXJzIGhhdmUgYmVlbiBkaXNhYmxlZCwKKwl3aGljaCBtZWFucyB0aGF0IHRoZSBkcml2ZXIncyBpbnRlcnJ1cHQgaGFuZGxlciB3aWxsIG5vdCBiZSBjYWxsZWQgd2hpbGUKKwl0aGUgY2FsbGJhY2sgbWV0aG9kIGlzIHJ1bm5pbmcuICBUaGUgbWV0aG9kcyBzaG91bGQgc2F2ZSB0aGUgdmFsdWVzIG9mCisJdGhlIGRldmljZSdzIHJlZ2lzdGVycyB0aGF0IHdlcmVuJ3Qgc2F2ZWQgcHJldmlvdXNseSBhbmQgZmluYWxseSBwdXQgdGhlCisJZGV2aWNlIGludG8gdGhlIGFwcHJvcHJpYXRlIGxvdy1wb3dlciBzdGF0ZS4KKworCVRoZSBtYWpvcml0eSBvZiBzdWJzeXN0ZW1zIGFuZCBkZXZpY2UgZHJpdmVycyBuZWVkIG5vdCBpbXBsZW1lbnQgdGhpcworCWNhbGxiYWNrLiAgSG93ZXZlciwgYnVzIHR5cGVzIGFsbG93aW5nIGRldmljZXMgdG8gc2hhcmUgaW50ZXJydXB0CisJdmVjdG9ycywgbGlrZSBQQ0ksIGdlbmVyYWxseSBuZWVkIGl0OyBvdGhlcndpc2UgYSBkcml2ZXIgbWlnaHQgZW5jb3VudGVyCisJYW4gZXJyb3IgZHVyaW5nIHRoZSBzdXNwZW5kIHBoYXNlIGJ5IGZpZWxkaW5nIGEgc2hhcmVkIGludGVycnVwdAorCWdlbmVyYXRlZCBieSBzb21lIG90aGVyIGRldmljZSBhZnRlciBpdHMgb3duIGRldmljZSBoYWQgYmVlbiBzZXQgdG8gbG93CisJcG93ZXIuCisKK0F0IHRoZSBlbmQgb2YgdGhlc2UgcGhhc2VzLCBkcml2ZXJzIHNob3VsZCBoYXZlIHN0b3BwZWQgYWxsIEkvTyB0cmFuc2FjdGlvbnMKKyhETUEsIElSUXMpLCBzYXZlZCBlbm91Z2ggc3RhdGUgdGhhdCB0aGV5IGNhbiByZS1pbml0aWFsaXplIG9yIHJlc3RvcmUgcHJldmlvdXMKK3N0YXRlIChhcyBuZWVkZWQgYnkgdGhlIGhhcmR3YXJlKSwgYW5kIHBsYWNlZCB0aGUgZGV2aWNlIGludG8gYSBsb3ctcG93ZXIgc3RhdGUuCitPbiBtYW55IHBsYXRmb3JtcyB0aGV5IHdpbGwgZ2F0ZSBvZmYgb25lIG9yIG1vcmUgY2xvY2sgc291cmNlczsgc29tZXRpbWVzIHRoZXkKK3dpbGwgYWxzbyBzd2l0Y2ggb2ZmIHBvd2VyIHN1cHBsaWVzIG9yIHJlZHVjZSB2b2x0YWdlcy4gIChEcml2ZXJzIHN1cHBvcnRpbmcKK3J1bnRpbWUgUE0gbWF5IGFscmVhZHkgaGF2ZSBwZXJmb3JtZWQgc29tZSBvciBhbGwgb2YgdGhlc2Ugc3RlcHMuKQorCitJZiBkZXZpY2VfbWF5X3dha2V1cChkZXYpIHJldHVybnMgdHJ1ZSwgdGhlIGRldmljZSBzaG91bGQgYmUgcHJlcGFyZWQgZm9yCitnZW5lcmF0aW5nIGhhcmR3YXJlIHdha2V1cCBzaWduYWxzIHRvIHRyaWdnZXIgYSBzeXN0ZW0gd2FrZXVwIGV2ZW50IHdoZW4gdGhlCitzeXN0ZW0gaXMgaW4gdGhlIHNsZWVwIHN0YXRlLiAgRm9yIGV4YW1wbGUsIGVuYWJsZV9pcnFfd2FrZSgpIG1pZ2h0IGlkZW50aWZ5CitHUElPIHNpZ25hbHMgaG9va2VkIHVwIHRvIGEgc3dpdGNoIG9yIG90aGVyIGV4dGVybmFsIGhhcmR3YXJlLCBhbmQKK3BjaV9lbmFibGVfd2FrZSgpIGRvZXMgc29tZXRoaW5nIHNpbWlsYXIgZm9yIHRoZSBQQ0kgUE1FIHNpZ25hbC4KKworSWYgYW55IG9mIHRoZXNlIGNhbGxiYWNrcyByZXR1cm5zIGFuIGVycm9yLCB0aGUgc3lzdGVtIHdvbid0IGVudGVyIHRoZSBkZXNpcmVkCitsb3ctcG93ZXIgc3RhdGUuICBJbnN0ZWFkIHRoZSBQTSBjb3JlIHdpbGwgdW53aW5kIGl0cyBhY3Rpb25zIGJ5IHJlc3VtaW5nIGFsbAordGhlIGRldmljZXMgdGhhdCB3ZXJlIHN1c3BlbmRlZC4KKworCitMZWF2aW5nIFN5c3RlbSBTdXNwZW5kCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitXaGVuIHJlc3VtaW5nIGZyb20gZnJlZXplLCBzdGFuZGJ5IG9yIG1lbW9yeSBzbGVlcCwgdGhlIHBoYXNlcyBhcmU6CisKKwkJcmVzdW1lX25vaXJxLCByZXN1bWVfZWFybHksIHJlc3VtZSwgY29tcGxldGUuCisKKyAgICAxLglUaGUgcmVzdW1lX25vaXJxIGNhbGxiYWNrIG1ldGhvZHMgc2hvdWxkIHBlcmZvcm0gYW55IGFjdGlvbnMgbmVlZGVkCisJYmVmb3JlIHRoZSBkcml2ZXIncyBpbnRlcnJ1cHQgaGFuZGxlcnMgYXJlIGludm9rZWQuICBUaGlzIGdlbmVyYWxseQorCW1lYW5zIHVuZG9pbmcgdGhlIGFjdGlvbnMgb2YgdGhlIHN1c3BlbmRfbm9pcnEgcGhhc2UuICBJZiB0aGUgYnVzIHR5cGUKKwlwZXJtaXRzIGRldmljZXMgdG8gc2hhcmUgaW50ZXJydXB0IHZlY3RvcnMsIGxpa2UgUENJLCB0aGUgbWV0aG9kIHNob3VsZAorCWJyaW5nIHRoZSBkZXZpY2UgYW5kIGl0cyBkcml2ZXIgaW50byBhIHN0YXRlIGluIHdoaWNoIHRoZSBkcml2ZXIgY2FuCisJcmVjb2duaXplIGlmIHRoZSBkZXZpY2UgaXMgdGhlIHNvdXJjZSBvZiBpbmNvbWluZyBpbnRlcnJ1cHRzLCBpZiBhbnksCisJYW5kIGhhbmRsZSB0aGVtIGNvcnJlY3RseS4KKworCUZvciBleGFtcGxlLCB0aGUgUENJIGJ1cyB0eXBlJ3MgLT5wbS5yZXN1bWVfbm9pcnEoKSBwdXRzIHRoZSBkZXZpY2UgaW50bworCXRoZSBmdWxsLXBvd2VyIHN0YXRlIChEMCBpbiB0aGUgUENJIHRlcm1pbm9sb2d5KSBhbmQgcmVzdG9yZXMgdGhlCisJc3RhbmRhcmQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgb2YgdGhlIGRldmljZS4gIFRoZW4gaXQgY2FsbHMgdGhlCisJZGV2aWNlIGRyaXZlcidzIC0+cG0ucmVzdW1lX25vaXJxKCkgbWV0aG9kIHRvIHBlcmZvcm0gZGV2aWNlLXNwZWNpZmljCisJYWN0aW9ucy4KKworICAgIDIuCVRoZSByZXN1bWVfZWFybHkgbWV0aG9kcyBzaG91bGQgcHJlcGFyZSBkZXZpY2VzIGZvciB0aGUgZXhlY3V0aW9uIG9mCisJdGhlIHJlc3VtZSBtZXRob2RzLiAgVGhpcyBnZW5lcmFsbHkgaW52b2x2ZXMgdW5kb2luZyB0aGUgYWN0aW9ucyBvZiB0aGUKKwlwcmVjZWRpbmcgc3VzcGVuZF9sYXRlIHBoYXNlLgorCisgICAgMwlUaGUgcmVzdW1lIG1ldGhvZHMgc2hvdWxkIGJyaW5nIHRoZSBkZXZpY2UgYmFjayB0byBpdHMgb3BlcmF0aW5nCisJc3RhdGUsIHNvIHRoYXQgaXQgY2FuIHBlcmZvcm0gbm9ybWFsIEkvTy4gIFRoaXMgZ2VuZXJhbGx5IGludm9sdmVzCisJdW5kb2luZyB0aGUgYWN0aW9ucyBvZiB0aGUgc3VzcGVuZCBwaGFzZS4KKworICAgIDQuCVRoZSBjb21wbGV0ZSBwaGFzZSBzaG91bGQgdW5kbyB0aGUgYWN0aW9ucyBvZiB0aGUgcHJlcGFyZSBwaGFzZS4gIE5vdGUsCisJaG93ZXZlciwgdGhhdCBuZXcgY2hpbGRyZW4gbWF5IGJlIHJlZ2lzdGVyZWQgYmVsb3cgdGhlIGRldmljZSBhcyBzb29uIGFzCisJdGhlIHJlc3VtZSBjYWxsYmFja3Mgb2NjdXI7IGl0J3Mgbm90IG5lY2Vzc2FyeSB0byB3YWl0IHVudGlsIHRoZQorCWNvbXBsZXRlIHBoYXNlLgorCisJTW9yZW92ZXIsIGlmIHRoZSBwcmVjZWRpbmcgcHJlcGFyZSBjYWxsYmFjayByZXR1cm5lZCBhIHBvc2l0aXZlIG51bWJlciwKKwl0aGUgZGV2aWNlIG1heSBoYXZlIGJlZW4gbGVmdCBpbiBydW50aW1lIHN1c3BlbmQgdGhyb3VnaG91dCB0aGUgd2hvbGUKKwlzeXN0ZW0gc3VzcGVuZCBhbmQgcmVzdW1lICh0aGUgc3VzcGVuZCwgc3VzcGVuZF9sYXRlLCBzdXNwZW5kX25vaXJxCisJcGhhc2VzIG9mIHN5c3RlbSBzdXNwZW5kIGFuZCB0aGUgcmVzdW1lX25vaXJxLCByZXN1bWVfZWFybHksIHJlc3VtZQorCXBoYXNlcyBvZiBzeXN0ZW0gcmVzdW1lIG1heSBoYXZlIGJlZW4gc2tpcHBlZCBmb3IgaXQpLiAgSW4gdGhhdCBjYXNlLAorCXRoZSBjb21wbGV0ZSBjYWxsYmFjayBpcyBlbnRpcmVseSByZXNwb25zaWJsZSBmb3IgYnJpbmdpbmcgdGhlIGRldmljZQorCWJhY2sgdG8gdGhlIGZ1bmN0aW9uYWwgc3RhdGUgYWZ0ZXIgc3lzdGVtIHN1c3BlbmQgaWYgbmVjZXNzYXJ5LiAgW0ZvcgorCWV4YW1wbGUsIGl0IG1heSBuZWVkIHRvIHF1ZXVlIHVwIGEgcnVudGltZSByZXN1bWUgcmVxdWVzdCBmb3IgdGhlIGRldmljZQorCWZvciB0aGlzIHB1cnBvc2UuXSAgVG8gY2hlY2sgaWYgdGhhdCBpcyB0aGUgY2FzZSwgdGhlIGNvbXBsZXRlIGNhbGxiYWNrCisJY2FuIGNvbnN1bHQgdGhlIGRldmljZSdzIHBvd2VyLmRpcmVjdF9jb21wbGV0ZSBmbGFnLiAgTmFtZWx5LCBpZiB0aGF0CisJZmxhZyBpcyBzZXQgd2hlbiB0aGUgY29tcGxldGUgY2FsbGJhY2sgaXMgYmVpbmcgcnVuLCBpdCBoYXMgYmVlbiBjYWxsZWQKKwlkaXJlY3RseSBhZnRlciB0aGUgcHJlY2VkaW5nIHByZXBhcmUgYW5kIHNwZWNpYWwgYWN0aW9uIG1heSBiZSByZXF1aXJlZAorCXRvIG1ha2UgdGhlIGRldmljZSB3b3JrIGNvcnJlY3RseSBhZnRlcndhcmQuCisKK0F0IHRoZSBlbmQgb2YgdGhlc2UgcGhhc2VzLCBkcml2ZXJzIHNob3VsZCBiZSBhcyBmdW5jdGlvbmFsIGFzIHRoZXkgd2VyZSBiZWZvcmUKK3N1c3BlbmRpbmc6IEkvTyBjYW4gYmUgcGVyZm9ybWVkIHVzaW5nIERNQSBhbmQgSVJRcywgYW5kIHRoZSByZWxldmFudCBjbG9ja3MgYXJlCitnYXRlZCBvbi4KKworSG93ZXZlciwgdGhlIGRldGFpbHMgaGVyZSBtYXkgYWdhaW4gYmUgcGxhdGZvcm0tc3BlY2lmaWMuICBGb3IgZXhhbXBsZSwKK3NvbWUgc3lzdGVtcyBzdXBwb3J0IG11bHRpcGxlICJydW4iIHN0YXRlcywgYW5kIHRoZSBtb2RlIGluIGVmZmVjdCBhdAordGhlIGVuZCBvZiByZXN1bWUgbWlnaHQgbm90IGJlIHRoZSBvbmUgd2hpY2ggcHJlY2VkZWQgc3VzcGVuc2lvbi4KK1RoYXQgbWVhbnMgYXZhaWxhYmlsaXR5IG9mIGNlcnRhaW4gY2xvY2tzIG9yIHBvd2VyIHN1cHBsaWVzIGNoYW5nZWQsCit3aGljaCBjb3VsZCBlYXNpbHkgYWZmZWN0IGhvdyBhIGRyaXZlciB3b3Jrcy4KKworRHJpdmVycyBuZWVkIHRvIGJlIGFibGUgdG8gaGFuZGxlIGhhcmR3YXJlIHdoaWNoIGhhcyBiZWVuIHJlc2V0IHNpbmNlIHRoZQorc3VzcGVuZCBtZXRob2RzIHdlcmUgY2FsbGVkLCBmb3IgZXhhbXBsZSBieSBjb21wbGV0ZSByZWluaXRpYWxpemF0aW9uLgorVGhpcyBtYXkgYmUgdGhlIGhhcmRlc3QgcGFydCwgYW5kIHRoZSBvbmUgbW9zdCBwcm90ZWN0ZWQgYnkgTkRBJ2QgZG9jdW1lbnRzCithbmQgY2hpcCBlcnJhdGEuICBJdCdzIHNpbXBsZXN0IGlmIHRoZSBoYXJkd2FyZSBzdGF0ZSBoYXNuJ3QgY2hhbmdlZCBzaW5jZQordGhlIHN1c3BlbmQgd2FzIGNhcnJpZWQgb3V0LCBidXQgdGhhdCBjYW4ndCBiZSBndWFyYW50ZWVkIChpbiBmYWN0LCBpdCB1c3VhbGx5CitpcyBub3QgdGhlIGNhc2UpLgorCitEcml2ZXJzIG11c3QgYWxzbyBiZSBwcmVwYXJlZCB0byBub3RpY2UgdGhhdCB0aGUgZGV2aWNlIGhhcyBiZWVuIHJlbW92ZWQKK3doaWxlIHRoZSBzeXN0ZW0gd2FzIHBvd2VyZWQgZG93biwgd2hlbmV2ZXIgdGhhdCdzIHBoeXNpY2FsbHkgcG9zc2libGUuCitQQ01DSUEsIE1NQywgVVNCLCBGaXJld2lyZSwgU0NTSSwgYW5kIGV2ZW4gSURFIGFyZSBjb21tb24gZXhhbXBsZXMgb2YgYnVzc2VzCit3aGVyZSBjb21tb24gTGludXggcGxhdGZvcm1zIHdpbGwgc2VlIHN1Y2ggcmVtb3ZhbC4gIERldGFpbHMgb2YgaG93IGRyaXZlcnMKK3dpbGwgbm90aWNlIGFuZCBoYW5kbGUgc3VjaCByZW1vdmFscyBhcmUgY3VycmVudGx5IGJ1cy1zcGVjaWZpYywgYW5kIG9mdGVuCitpbnZvbHZlIGEgc2VwYXJhdGUgdGhyZWFkLgorCitUaGVzZSBjYWxsYmFja3MgbWF5IHJldHVybiBhbiBlcnJvciB2YWx1ZSwgYnV0IHRoZSBQTSBjb3JlIHdpbGwgaWdub3JlIHN1Y2gKK2Vycm9ycyBzaW5jZSB0aGVyZSdzIG5vdGhpbmcgaXQgY2FuIGRvIGFib3V0IHRoZW0gb3RoZXIgdGhhbiBwcmludGluZyB0aGVtIGluCit0aGUgc3lzdGVtIGxvZy4KKworCitFbnRlcmluZyBIaWJlcm5hdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0hpYmVybmF0aW5nIHRoZSBzeXN0ZW0gaXMgbW9yZSBjb21wbGljYXRlZCB0aGFuIHB1dHRpbmcgaXQgaW50byB0aGUgb3RoZXIKK3NsZWVwIHN0YXRlcywgYmVjYXVzZSBpdCBpbnZvbHZlcyBjcmVhdGluZyBhbmQgc2F2aW5nIGEgc3lzdGVtIGltYWdlLgorVGhlcmVmb3JlIHRoZXJlIGFyZSBtb3JlIHBoYXNlcyBmb3IgaGliZXJuYXRpb24sIHdpdGggYSBkaWZmZXJlbnQgc2V0IG9mCitjYWxsYmFja3MuICBUaGVzZSBwaGFzZXMgYWx3YXlzIHJ1biBhZnRlciB0YXNrcyBoYXZlIGJlZW4gZnJvemVuIGFuZCBtZW1vcnkgaGFzCitiZWVuIGZyZWVkLgorCitUaGUgZ2VuZXJhbCBwcm9jZWR1cmUgZm9yIGhpYmVybmF0aW9uIGlzIHRvIHF1aWVzY2UgYWxsIGRldmljZXMgKGZyZWV6ZSksIGNyZWF0ZQorYW4gaW1hZ2Ugb2YgdGhlIHN5c3RlbSBtZW1vcnkgd2hpbGUgZXZlcnl0aGluZyBpcyBzdGFibGUsIHJlYWN0aXZhdGUgYWxsCitkZXZpY2VzICh0aGF3KSwgd3JpdGUgdGhlIGltYWdlIHRvIHBlcm1hbmVudCBzdG9yYWdlLCBhbmQgZmluYWxseSBzaHV0IGRvd24gdGhlCitzeXN0ZW0gKHBvd2Vyb2ZmKS4gIFRoZSBwaGFzZXMgdXNlZCB0byBhY2NvbXBsaXNoIHRoaXMgYXJlOgorCisJcHJlcGFyZSwgZnJlZXplLCBmcmVlemVfbGF0ZSwgZnJlZXplX25vaXJxLCB0aGF3X25vaXJxLCB0aGF3X2Vhcmx5LAorCXRoYXcsIGNvbXBsZXRlLCBwcmVwYXJlLCBwb3dlcm9mZiwgcG93ZXJvZmZfbGF0ZSwgcG93ZXJvZmZfbm9pcnEKKworICAgIDEuCVRoZSBwcmVwYXJlIHBoYXNlIGlzIGRpc2N1c3NlZCBpbiB0aGUgIkVudGVyaW5nIFN5c3RlbSBTdXNwZW5kIiBzZWN0aW9uCisJYWJvdmUuCisKKyAgICAyLglUaGUgZnJlZXplIG1ldGhvZHMgc2hvdWxkIHF1aWVzY2UgdGhlIGRldmljZSBzbyB0aGF0IGl0IGRvZXNuJ3QgZ2VuZXJhdGUKKwlJUlFzIG9yIERNQSwgYW5kIHRoZXkgbWF5IG5lZWQgdG8gc2F2ZSB0aGUgdmFsdWVzIG9mIGRldmljZSByZWdpc3RlcnMuCisJSG93ZXZlciB0aGUgZGV2aWNlIGRvZXMgbm90IGhhdmUgdG8gYmUgcHV0IGluIGEgbG93LXBvd2VyIHN0YXRlLCBhbmQgdG8KKwlzYXZlIHRpbWUgaXQncyBiZXN0IG5vdCB0byBkbyBzby4gIEFsc28sIHRoZSBkZXZpY2Ugc2hvdWxkIG5vdCBiZQorCXByZXBhcmVkIHRvIGdlbmVyYXRlIHdha2V1cCBldmVudHMuCisKKyAgICAzLglUaGUgZnJlZXplX2xhdGUgcGhhc2UgaXMgYW5hbG9nb3VzIHRvIHRoZSBzdXNwZW5kX2xhdGUgcGhhc2UgZGVzY3JpYmVkCisJYWJvdmUsIGV4Y2VwdCB0aGF0IHRoZSBkZXZpY2Ugc2hvdWxkIG5vdCBiZSBwdXQgaW4gYSBsb3ctcG93ZXIgc3RhdGUgYW5kCisJc2hvdWxkIG5vdCBiZSBhbGxvd2VkIHRvIGdlbmVyYXRlIHdha2V1cCBldmVudHMgYnkgaXQuCisKKyAgICA0LglUaGUgZnJlZXplX25vaXJxIHBoYXNlIGlzIGFuYWxvZ291cyB0byB0aGUgc3VzcGVuZF9ub2lycSBwaGFzZSBkaXNjdXNzZWQKKwlhYm92ZSwgZXhjZXB0IGFnYWluIHRoYXQgdGhlIGRldmljZSBzaG91bGQgbm90IGJlIHB1dCBpbiBhIGxvdy1wb3dlcgorCXN0YXRlIGFuZCBzaG91bGQgbm90IGJlIGFsbG93ZWQgdG8gZ2VuZXJhdGUgd2FrZXVwIGV2ZW50cy4KKworQXQgdGhpcyBwb2ludCB0aGUgc3lzdGVtIGltYWdlIGlzIGNyZWF0ZWQuICBBbGwgZGV2aWNlcyBzaG91bGQgYmUgaW5hY3RpdmUgYW5kCit0aGUgY29udGVudHMgb2YgbWVtb3J5IHNob3VsZCByZW1haW4gdW5kaXN0dXJiZWQgd2hpbGUgdGhpcyBoYXBwZW5zLCBzbyB0aGF0IHRoZQoraW1hZ2UgZm9ybXMgYW4gYXRvbWljIHNuYXBzaG90IG9mIHRoZSBzeXN0ZW0gc3RhdGUuCisKKyAgICA1LglUaGUgdGhhd19ub2lycSBwaGFzZSBpcyBhbmFsb2dvdXMgdG8gdGhlIHJlc3VtZV9ub2lycSBwaGFzZSBkaXNjdXNzZWQKKwlhYm92ZS4gIFRoZSBtYWluIGRpZmZlcmVuY2UgaXMgdGhhdCBpdHMgbWV0aG9kcyBjYW4gYXNzdW1lIHRoZSBkZXZpY2UgaXMKKwlpbiB0aGUgc2FtZSBzdGF0ZSBhcyBhdCB0aGUgZW5kIG9mIHRoZSBmcmVlemVfbm9pcnEgcGhhc2UuCisKKyAgICA2LglUaGUgdGhhd19lYXJseSBwaGFzZSBpcyBhbmFsb2dvdXMgdG8gdGhlIHJlc3VtZV9lYXJseSBwaGFzZSBkZXNjcmliZWQKKwlhYm92ZS4gIEl0cyBtZXRob2RzIHNob3VsZCB1bmRvIHRoZSBhY3Rpb25zIG9mIHRoZSBwcmVjZWRpbmcKKwlmcmVlemVfbGF0ZSwgaWYgbmVjZXNzYXJ5LgorCisgICAgNy4JVGhlIHRoYXcgcGhhc2UgaXMgYW5hbG9nb3VzIHRvIHRoZSByZXN1bWUgcGhhc2UgZGlzY3Vzc2VkIGFib3ZlLiAgSXRzCisJbWV0aG9kcyBzaG91bGQgYnJpbmcgdGhlIGRldmljZSBiYWNrIHRvIGFuIG9wZXJhdGluZyBzdGF0ZSwgc28gdGhhdCBpdAorCWNhbiBiZSB1c2VkIGZvciBzYXZpbmcgdGhlIGltYWdlIGlmIG5lY2Vzc2FyeS4KKworICAgIDguCVRoZSBjb21wbGV0ZSBwaGFzZSBpcyBkaXNjdXNzZWQgaW4gdGhlICJMZWF2aW5nIFN5c3RlbSBTdXNwZW5kIiBzZWN0aW9uCisJYWJvdmUuCisKK0F0IHRoaXMgcG9pbnQgdGhlIHN5c3RlbSBpbWFnZSBpcyBzYXZlZCwgYW5kIHRoZSBkZXZpY2VzIHRoZW4gbmVlZCB0byBiZQorcHJlcGFyZWQgZm9yIHRoZSB1cGNvbWluZyBzeXN0ZW0gc2h1dGRvd24uICBUaGlzIGlzIG11Y2ggbGlrZSBzdXNwZW5kaW5nIHRoZW0KK2JlZm9yZSBwdXR0aW5nIHRoZSBzeXN0ZW0gaW50byB0aGUgZnJlZXplLCBzdGFuZGJ5IG9yIG1lbW9yeSBzbGVlcCBzdGF0ZSwKK2FuZCB0aGUgcGhhc2VzIGFyZSBzaW1pbGFyLgorCisgICAgOS4JVGhlIHByZXBhcmUgcGhhc2UgaXMgZGlzY3Vzc2VkIGFib3ZlLgorCisgICAgMTAuCVRoZSBwb3dlcm9mZiBwaGFzZSBpcyBhbmFsb2dvdXMgdG8gdGhlIHN1c3BlbmQgcGhhc2UuCisKKyAgICAxMS4JVGhlIHBvd2Vyb2ZmX2xhdGUgcGhhc2UgaXMgYW5hbG9nb3VzIHRvIHRoZSBzdXNwZW5kX2xhdGUgcGhhc2UuCisKKyAgICAxMi4JVGhlIHBvd2Vyb2ZmX25vaXJxIHBoYXNlIGlzIGFuYWxvZ291cyB0byB0aGUgc3VzcGVuZF9ub2lycSBwaGFzZS4KKworVGhlIHBvd2Vyb2ZmLCBwb3dlcm9mZl9sYXRlIGFuZCBwb3dlcm9mZl9ub2lycSBjYWxsYmFja3Mgc2hvdWxkIGRvIGVzc2VudGlhbGx5Cit0aGUgc2FtZSB0aGluZ3MgYXMgdGhlIHN1c3BlbmQsIHN1c3BlbmRfbGF0ZSBhbmQgc3VzcGVuZF9ub2lycSBjYWxsYmFja3MsCityZXNwZWN0aXZlbHkuICBUaGUgb25seSBub3RhYmxlIGRpZmZlcmVuY2UgaXMgdGhhdCB0aGV5IG5lZWQgbm90IHN0b3JlIHRoZQorZGV2aWNlIHJlZ2lzdGVyIHZhbHVlcywgYmVjYXVzZSB0aGUgcmVnaXN0ZXJzIHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBzdG9yZWQKK2R1cmluZyB0aGUgZnJlZXplLCBmcmVlemVfbGF0ZSBvciBmcmVlemVfbm9pcnEgcGhhc2VzLgorCisKK0xlYXZpbmcgSGliZXJuYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0KK1Jlc3VtaW5nIGZyb20gaGliZXJuYXRpb24gaXMsIGFnYWluLCBtb3JlIGNvbXBsaWNhdGVkIHRoYW4gcmVzdW1pbmcgZnJvbSBhIHNsZWVwCitzdGF0ZSBpbiB3aGljaCB0aGUgY29udGVudHMgb2YgbWFpbiBtZW1vcnkgYXJlIHByZXNlcnZlZCwgYmVjYXVzZSBpdCByZXF1aXJlcworYSBzeXN0ZW0gaW1hZ2UgdG8gYmUgbG9hZGVkIGludG8gbWVtb3J5IGFuZCB0aGUgcHJlLWhpYmVybmF0aW9uIG1lbW9yeSBjb250ZW50cwordG8gYmUgcmVzdG9yZWQgYmVmb3JlIGNvbnRyb2wgY2FuIGJlIHBhc3NlZCBiYWNrIHRvIHRoZSBpbWFnZSBrZXJuZWwuCisKK0FsdGhvdWdoIGluIHByaW5jaXBsZSwgdGhlIGltYWdlIG1pZ2h0IGJlIGxvYWRlZCBpbnRvIG1lbW9yeSBhbmQgdGhlCitwcmUtaGliZXJuYXRpb24gbWVtb3J5IGNvbnRlbnRzIHJlc3RvcmVkIGJ5IHRoZSBib290IGxvYWRlciwgaW4gcHJhY3RpY2UgdGhpcworY2FuJ3QgYmUgZG9uZSBiZWNhdXNlIGJvb3QgbG9hZGVycyBhcmVuJ3Qgc21hcnQgZW5vdWdoIGFuZCB0aGVyZSBpcyBubworZXN0YWJsaXNoZWQgcHJvdG9jb2wgZm9yIHBhc3NpbmcgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbi4gIFNvIGluc3RlYWQsIHRoZQorYm9vdCBsb2FkZXIgbG9hZHMgYSBmcmVzaCBpbnN0YW5jZSBvZiB0aGUga2VybmVsLCBjYWxsZWQgdGhlIGJvb3Qga2VybmVsLCBpbnRvCittZW1vcnkgYW5kIHBhc3NlcyBjb250cm9sIHRvIGl0IGluIHRoZSB1c3VhbCB3YXkuICBUaGVuIHRoZSBib290IGtlcm5lbCByZWFkcwordGhlIHN5c3RlbSBpbWFnZSwgcmVzdG9yZXMgdGhlIHByZS1oaWJlcm5hdGlvbiBtZW1vcnkgY29udGVudHMsIGFuZCBwYXNzZXMKK2NvbnRyb2wgdG8gdGhlIGltYWdlIGtlcm5lbC4gIFRodXMgdHdvIGRpZmZlcmVudCBrZXJuZWxzIGFyZSBpbnZvbHZlZCBpbgorcmVzdW1pbmcgZnJvbSBoaWJlcm5hdGlvbi4gIEluIGZhY3QsIHRoZSBib290IGtlcm5lbCBtYXkgYmUgY29tcGxldGVseSBkaWZmZXJlbnQKK2Zyb20gdGhlIGltYWdlIGtlcm5lbDogYSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbiBhbmQgZXZlbiBhIGRpZmZlcmVudCB2ZXJzaW9uLgorVGhpcyBoYXMgaW1wb3J0YW50IGNvbnNlcXVlbmNlcyBmb3IgZGV2aWNlIGRyaXZlcnMgYW5kIHRoZWlyIHN1YnN5c3RlbXMuCisKK1RvIGJlIGFibGUgdG8gbG9hZCB0aGUgc3lzdGVtIGltYWdlIGludG8gbWVtb3J5LCB0aGUgYm9vdCBrZXJuZWwgbmVlZHMgdG8KK2luY2x1ZGUgYXQgbGVhc3QgYSBzdWJzZXQgb2YgZGV2aWNlIGRyaXZlcnMgYWxsb3dpbmcgaXQgdG8gYWNjZXNzIHRoZSBzdG9yYWdlCittZWRpdW0gY29udGFpbmluZyB0aGUgaW1hZ2UsIGFsdGhvdWdoIGl0IGRvZXNuJ3QgbmVlZCB0byBpbmNsdWRlIGFsbCBvZiB0aGUKK2RyaXZlcnMgcHJlc2VudCBpbiB0aGUgaW1hZ2Uga2VybmVsLiAgQWZ0ZXIgdGhlIGltYWdlIGhhcyBiZWVuIGxvYWRlZCwgdGhlCitkZXZpY2VzIG1hbmFnZWQgYnkgdGhlIGJvb3Qga2VybmVsIG5lZWQgdG8gYmUgcHJlcGFyZWQgZm9yIHBhc3NpbmcgY29udHJvbCBiYWNrCit0byB0aGUgaW1hZ2Uga2VybmVsLiAgVGhpcyBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhlIGluaXRpYWwgc3RlcHMgaW52b2x2ZWQgaW4KK2NyZWF0aW5nIGEgc3lzdGVtIGltYWdlLCBhbmQgaXQgaXMgYWNjb21wbGlzaGVkIGluIHRoZSBzYW1lIHdheSwgdXNpbmcgcHJlcGFyZSwKK2ZyZWV6ZSwgYW5kIGZyZWV6ZV9ub2lycSBwaGFzZXMuICBIb3dldmVyIHRoZSBkZXZpY2VzIGFmZmVjdGVkIGJ5IHRoZXNlIHBoYXNlcworYXJlIG9ubHkgdGhvc2UgaGF2aW5nIGRyaXZlcnMgaW4gdGhlIGJvb3Qga2VybmVsOyBvdGhlciBkZXZpY2VzIHdpbGwgc3RpbGwgYmUgaW4KK3doYXRldmVyIHN0YXRlIHRoZSBib290IGxvYWRlciBsZWZ0IHRoZW0uCisKK1Nob3VsZCB0aGUgcmVzdG9yYXRpb24gb2YgdGhlIHByZS1oaWJlcm5hdGlvbiBtZW1vcnkgY29udGVudHMgZmFpbCwgdGhlIGJvb3QKK2tlcm5lbCB3b3VsZCBnbyB0aHJvdWdoIHRoZSAidGhhd2luZyIgcHJvY2VkdXJlIGRlc2NyaWJlZCBhYm92ZSwgdXNpbmcgdGhlCit0aGF3X25vaXJxLCB0aGF3LCBhbmQgY29tcGxldGUgcGhhc2VzLCBhbmQgdGhlbiBjb250aW51ZSBydW5uaW5nIG5vcm1hbGx5LiAgVGhpcworaGFwcGVucyBvbmx5IHJhcmVseS4gIE1vc3Qgb2Z0ZW4gdGhlIHByZS1oaWJlcm5hdGlvbiBtZW1vcnkgY29udGVudHMgYXJlCityZXN0b3JlZCBzdWNjZXNzZnVsbHkgYW5kIGNvbnRyb2wgaXMgcGFzc2VkIHRvIHRoZSBpbWFnZSBrZXJuZWwsIHdoaWNoIHRoZW4KK2JlY29tZXMgcmVzcG9uc2libGUgZm9yIGJyaW5naW5nIHRoZSBzeXN0ZW0gYmFjayB0byB0aGUgd29ya2luZyBzdGF0ZS4KKworVG8gYWNoaWV2ZSB0aGlzLCB0aGUgaW1hZ2Uga2VybmVsIG11c3QgcmVzdG9yZSB0aGUgZGV2aWNlcycgcHJlLWhpYmVybmF0aW9uCitmdW5jdGlvbmFsaXR5LiAgVGhlIG9wZXJhdGlvbiBpcyBtdWNoIGxpa2Ugd2FraW5nIHVwIGZyb20gdGhlIG1lbW9yeSBzbGVlcAorc3RhdGUsIGFsdGhvdWdoIGl0IGludm9sdmVzIGRpZmZlcmVudCBwaGFzZXM6CisKKwlyZXN0b3JlX25vaXJxLCByZXN0b3JlX2Vhcmx5LCByZXN0b3JlLCBjb21wbGV0ZQorCisgICAgMS4JVGhlIHJlc3RvcmVfbm9pcnEgcGhhc2UgaXMgYW5hbG9nb3VzIHRvIHRoZSByZXN1bWVfbm9pcnEgcGhhc2UuCisKKyAgICAyLglUaGUgcmVzdG9yZV9lYXJseSBwaGFzZSBpcyBhbmFsb2dvdXMgdG8gdGhlIHJlc3VtZV9lYXJseSBwaGFzZS4KKworICAgIDMuCVRoZSByZXN0b3JlIHBoYXNlIGlzIGFuYWxvZ291cyB0byB0aGUgcmVzdW1lIHBoYXNlLgorCisgICAgNC4JVGhlIGNvbXBsZXRlIHBoYXNlIGlzIGRpc2N1c3NlZCBhYm92ZS4KKworVGhlIG1haW4gZGlmZmVyZW5jZSBmcm9tIHJlc3VtZVtfZWFybHl8X25vaXJxXSBpcyB0aGF0IHJlc3RvcmVbX2Vhcmx5fF9ub2lycV0KK211c3QgYXNzdW1lIHRoZSBkZXZpY2UgaGFzIGJlZW4gYWNjZXNzZWQgYW5kIHJlY29uZmlndXJlZCBieSB0aGUgYm9vdCBsb2FkZXIgb3IKK3RoZSBib290IGtlcm5lbC4gIENvbnNlcXVlbnRseSB0aGUgc3RhdGUgb2YgdGhlIGRldmljZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlCitzdGF0ZSByZW1lbWJlcmVkIGZyb20gdGhlIGZyZWV6ZSwgZnJlZXplX2xhdGUgYW5kIGZyZWV6ZV9ub2lycSBwaGFzZXMuICBUaGUKK2RldmljZSBtYXkgZXZlbiBuZWVkIHRvIGJlIHJlc2V0IGFuZCBjb21wbGV0ZWx5IHJlLWluaXRpYWxpemVkLiAgSW4gbWFueSBjYXNlcwordGhpcyBkaWZmZXJlbmNlIGRvZXNuJ3QgbWF0dGVyLCBzbyB0aGUgcmVzdW1lW19lYXJseXxfbm9pcnFdIGFuZAorcmVzdG9yZVtfZWFybHl8X25vcnFdIG1ldGhvZCBwb2ludGVycyBjYW4gYmUgc2V0IHRvIHRoZSBzYW1lIHJvdXRpbmVzLgorTmV2ZXJ0aGVsZXNzLCBkaWZmZXJlbnQgY2FsbGJhY2sgcG9pbnRlcnMgYXJlIHVzZWQgaW4gY2FzZSB0aGVyZSBpcyBhIHNpdHVhdGlvbgord2hlcmUgaXQgYWN0dWFsbHkgZG9lcyBtYXR0ZXIuCisKKworRGV2aWNlIFBvd2VyIE1hbmFnZW1lbnQgRG9tYWlucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU29tZXRpbWVzIGRldmljZXMgc2hhcmUgcmVmZXJlbmNlIGNsb2NrcyBvciBvdGhlciBwb3dlciByZXNvdXJjZXMuICBJbiB0aG9zZQorY2FzZXMgaXQgZ2VuZXJhbGx5IGlzIG5vdCBwb3NzaWJsZSB0byBwdXQgZGV2aWNlcyBpbnRvIGxvdy1wb3dlciBzdGF0ZXMKK2luZGl2aWR1YWxseS4gIEluc3RlYWQsIGEgc2V0IG9mIGRldmljZXMgc2hhcmluZyBhIHBvd2VyIHJlc291cmNlIGNhbiBiZSBwdXQKK2ludG8gYSBsb3ctcG93ZXIgc3RhdGUgdG9nZXRoZXIgYXQgdGhlIHNhbWUgdGltZSBieSB0dXJuaW5nIG9mZiB0aGUgc2hhcmVkCitwb3dlciByZXNvdXJjZS4gIE9mIGNvdXJzZSwgdGhleSBhbHNvIG5lZWQgdG8gYmUgcHV0IGludG8gdGhlIGZ1bGwtcG93ZXIgc3RhdGUKK3RvZ2V0aGVyLCBieSB0dXJuaW5nIHRoZSBzaGFyZWQgcG93ZXIgcmVzb3VyY2Ugb24uICBBIHNldCBvZiBkZXZpY2VzIHdpdGggdGhpcworcHJvcGVydHkgaXMgb2Z0ZW4gcmVmZXJyZWQgdG8gYXMgYSBwb3dlciBkb21haW4uCisKK1N1cHBvcnQgZm9yIHBvd2VyIGRvbWFpbnMgaXMgcHJvdmlkZWQgdGhyb3VnaCB0aGUgcG1fZG9tYWluIGZpZWxkIG9mIHN0cnVjdAorZGV2aWNlLiAgVGhpcyBmaWVsZCBpcyBhIHBvaW50ZXIgdG8gYW4gb2JqZWN0IG9mIHR5cGUgc3RydWN0IGRldl9wbV9kb21haW4sCitkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvcG0uaCwgcHJvdmlkaW5nIGEgc2V0IG9mIHBvd2VyIG1hbmFnZW1lbnQgY2FsbGJhY2tzCithbmFsb2dvdXMgdG8gdGhlIHN1YnN5c3RlbS1sZXZlbCBhbmQgZGV2aWNlIGRyaXZlciBjYWxsYmFja3MgdGhhdCBhcmUgZXhlY3V0ZWQKK2ZvciB0aGUgZ2l2ZW4gZGV2aWNlIGR1cmluZyBhbGwgcG93ZXIgdHJhbnNpdGlvbnMsIGluc3RlYWQgb2YgdGhlIHJlc3BlY3RpdmUKK3N1YnN5c3RlbS1sZXZlbCBjYWxsYmFja3MuICBTcGVjaWZpY2FsbHksIGlmIGEgZGV2aWNlJ3MgcG1fZG9tYWluIHBvaW50ZXIgaXMKK25vdCBOVUxMLCB0aGUgLT5zdXNwZW5kKCkgY2FsbGJhY2sgZnJvbSB0aGUgb2JqZWN0IHBvaW50ZWQgdG8gYnkgaXQgd2lsbCBiZQorZXhlY3V0ZWQgaW5zdGVhZCBvZiBpdHMgc3Vic3lzdGVtJ3MgKGUuZy4gYnVzIHR5cGUncykgLT5zdXNwZW5kKCkgY2FsbGJhY2sgYW5kCithbmFsb2dvdXNseSBmb3IgYWxsIG9mIHRoZSByZW1haW5pbmcgY2FsbGJhY2tzLiAgSW4gb3RoZXIgd29yZHMsIHBvd2VyCittYW5hZ2VtZW50IGRvbWFpbiBjYWxsYmFja3MsIGlmIGRlZmluZWQgZm9yIHRoZSBnaXZlbiBkZXZpY2UsIGFsd2F5cyB0YWtlCitwcmVjZWRlbmNlIG92ZXIgdGhlIGNhbGxiYWNrcyBwcm92aWRlZCBieSB0aGUgZGV2aWNlJ3Mgc3Vic3lzdGVtIChlLmcuIGJ1cwordHlwZSkuCisKK1RoZSBzdXBwb3J0IGZvciBkZXZpY2UgcG93ZXIgbWFuYWdlbWVudCBkb21haW5zIGlzIG9ubHkgcmVsZXZhbnQgdG8gcGxhdGZvcm1zCituZWVkaW5nIHRvIHVzZSB0aGUgc2FtZSBkZXZpY2UgZHJpdmVyIHBvd2VyIG1hbmFnZW1lbnQgY2FsbGJhY2tzIGluIG1hbnkKK2RpZmZlcmVudCBwb3dlciBkb21haW4gY29uZmlndXJhdGlvbnMgYW5kIHdhbnRpbmcgdG8gYXZvaWQgaW5jb3Jwb3JhdGluZyB0aGUKK3N1cHBvcnQgZm9yIHBvd2VyIGRvbWFpbnMgaW50byBzdWJzeXN0ZW0tbGV2ZWwgY2FsbGJhY2tzLCBmb3IgZXhhbXBsZSBieQorbW9kaWZ5aW5nIHRoZSBwbGF0Zm9ybSBidXMgdHlwZS4gIE90aGVyIHBsYXRmb3JtcyBuZWVkIG5vdCBpbXBsZW1lbnQgaXQgb3IgdGFrZQoraXQgaW50byBhY2NvdW50IGluIGFueSB3YXkuCisKKworRGV2aWNlIExvdyBQb3dlciAoc3VzcGVuZCkgU3RhdGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RldmljZSBsb3ctcG93ZXIgc3RhdGVzIGFyZW4ndCBzdGFuZGFyZC4gIE9uZSBkZXZpY2UgbWlnaHQgb25seSBoYW5kbGUKKyJvbiIgYW5kICJvZmYiLCB3aGlsZSBhbm90aGVyIG1pZ2h0IHN1cHBvcnQgYSBkb3plbiBkaWZmZXJlbnQgdmVyc2lvbnMgb2YKKyJvbiIgKGhvdyBtYW55IGVuZ2luZXMgYXJlIGFjdGl2ZT8pLCBwbHVzIGEgc3RhdGUgdGhhdCBnZXRzIGJhY2sgdG8gIm9uIgorZmFzdGVyIHRoYW4gZnJvbSBhIGZ1bGwgIm9mZiIuCisKK1NvbWUgYnVzc2VzIGRlZmluZSBydWxlcyBhYm91dCB3aGF0IGRpZmZlcmVudCBzdXNwZW5kIHN0YXRlcyBtZWFuLiAgUENJCitnaXZlcyBvbmUgZXhhbXBsZTogIGFmdGVyIHRoZSBzdXNwZW5kIHNlcXVlbmNlIGNvbXBsZXRlcywgYSBub24tbGVnYWN5CitQQ0kgZGV2aWNlIG1heSBub3QgcGVyZm9ybSBETUEgb3IgaXNzdWUgSVJRcywgYW5kIGFueSB3YWtldXAgZXZlbnRzIGl0Citpc3N1ZXMgd291bGQgYmUgaXNzdWVkIHRocm91Z2ggdGhlIFBNRSMgYnVzIHNpZ25hbC4gIFBsdXMsIHRoZXJlIGFyZQorc2V2ZXJhbCBQQ0ktc3RhbmRhcmQgZGV2aWNlIHN0YXRlcywgc29tZSBvZiB3aGljaCBhcmUgb3B0aW9uYWwuCisKK0luIGNvbnRyYXN0LCBpbnRlZ3JhdGVkIHN5c3RlbS1vbi1jaGlwIHByb2Nlc3NvcnMgb2Z0ZW4gdXNlIElSUXMgYXMgdGhlCit3YWtldXAgZXZlbnQgc291cmNlcyAoc28gZHJpdmVycyB3b3VsZCBjYWxsIGVuYWJsZV9pcnFfd2FrZSkgYW5kIG1pZ2h0CitiZSBhYmxlIHRvIHRyZWF0IERNQSBjb21wbGV0aW9uIGFzIGEgd2FrZXVwIGV2ZW50IChzb21ldGltZXMgRE1BIGNhbiBzdGF5CithY3RpdmUgdG9vLCBpdCdkIG9ubHkgYmUgdGhlIENQVSBhbmQgc29tZSBwZXJpcGhlcmFscyB0aGF0IHNsZWVwKS4KKworU29tZSBkZXRhaWxzIGhlcmUgbWF5IGJlIHBsYXRmb3JtLXNwZWNpZmljLiAgU3lzdGVtcyBtYXkgaGF2ZSBkZXZpY2VzIHRoYXQKK2NhbiBiZSBmdWxseSBhY3RpdmUgaW4gY2VydGFpbiBzbGVlcCBzdGF0ZXMsIHN1Y2ggYXMgYW4gTENEIGRpc3BsYXkgdGhhdCdzCityZWZyZXNoZWQgdXNpbmcgRE1BIHdoaWxlIG1vc3Qgb2YgdGhlIHN5c3RlbSBpcyBzbGVlcGluZyBsaWdodGx5IC4uLiBhbmQKK2l0cyBmcmFtZSBidWZmZXIgbWlnaHQgZXZlbiBiZSB1cGRhdGVkIGJ5IGEgRFNQIG9yIG90aGVyIG5vbi1MaW51eCBDUFUgd2hpbGUKK3RoZSBMaW51eCBjb250cm9sIHByb2Nlc3NvciBzdGF5cyBpZGxlLgorCitNb3Jlb3ZlciwgdGhlIHNwZWNpZmljIGFjdGlvbnMgdGFrZW4gbWF5IGRlcGVuZCBvbiB0aGUgdGFyZ2V0IHN5c3RlbSBzdGF0ZS4KK09uZSB0YXJnZXQgc3lzdGVtIHN0YXRlIG1pZ2h0IGFsbG93IGEgZ2l2ZW4gZGV2aWNlIHRvIGJlIHZlcnkgb3BlcmF0aW9uYWw7Cithbm90aGVyIG1pZ2h0IHJlcXVpcmUgYSBoYXJkIHNodXQgZG93biB3aXRoIHJlLWluaXRpYWxpemF0aW9uIG9uIHJlc3VtZS4KK0FuZCB0d28gZGlmZmVyZW50IHRhcmdldCBzeXN0ZW1zIG1pZ2h0IHVzZSB0aGUgc2FtZSBkZXZpY2UgaW4gZGlmZmVyZW50Cit3YXlzOyB0aGUgYWZvcmVtZW50aW9uZWQgTENEIG1pZ2h0IGJlIGFjdGl2ZSBpbiBvbmUgcHJvZHVjdCdzICJzdGFuZGJ5IiwKK2J1dCBhIGRpZmZlcmVudCBwcm9kdWN0IHVzaW5nIHRoZSBzYW1lIFNPQyBtaWdodCB3b3JrIGRpZmZlcmVudGx5LgorCisKK1Bvd2VyIE1hbmFnZW1lbnQgTm90aWZpZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlcmUgYXJlIHNvbWUgb3BlcmF0aW9ucyB0aGF0IGNhbm5vdCBiZSBjYXJyaWVkIG91dCBieSB0aGUgcG93ZXIgbWFuYWdlbWVudAorY2FsbGJhY2tzIGRpc2N1c3NlZCBhYm92ZSwgYmVjYXVzZSB0aGUgY2FsbGJhY2tzIG9jY3VyIHRvbyBsYXRlIG9yIHRvbyBlYXJseS4KK1RvIGhhbmRsZSB0aGVzZSBjYXNlcywgc3Vic3lzdGVtcyBhbmQgZGV2aWNlIGRyaXZlcnMgbWF5IHJlZ2lzdGVyIHBvd2VyCittYW5hZ2VtZW50IG5vdGlmaWVycyB0aGF0IGFyZSBjYWxsZWQgYmVmb3JlIHRhc2tzIGFyZSBmcm96ZW4gYW5kIGFmdGVyIHRoZXkgaGF2ZQorYmVlbiB0aGF3ZWQuICBHZW5lcmFsbHkgc3BlYWtpbmcsIHRoZSBQTSBub3RpZmllcnMgYXJlIHN1aXRhYmxlIGZvciBwZXJmb3JtaW5nCithY3Rpb25zIHRoYXQgZWl0aGVyIHJlcXVpcmUgdXNlciBzcGFjZSB0byBiZSBhdmFpbGFibGUsIG9yIGF0IGxlYXN0IHdvbid0CitpbnRlcmZlcmUgd2l0aCB1c2VyIHNwYWNlLgorCitGb3IgZGV0YWlscyByZWZlciB0byBEb2N1bWVudGF0aW9uL3Bvd2VyL25vdGlmaWVycy50eHQuCisKKworUnVudGltZSBQb3dlciBNYW5hZ2VtZW50Cis9PT09PT09PT09PT09PT09PT09PT09PT0KK01hbnkgZGV2aWNlcyBhcmUgYWJsZSB0byBkeW5hbWljYWxseSBwb3dlciBkb3duIHdoaWxlIHRoZSBzeXN0ZW0gaXMgc3RpbGwKK3J1bm5pbmcuIFRoaXMgZmVhdHVyZSBpcyB1c2VmdWwgZm9yIGRldmljZXMgdGhhdCBhcmUgbm90IGJlaW5nIHVzZWQsIGFuZAorY2FuIG9mZmVyIHNpZ25pZmljYW50IHBvd2VyIHNhdmluZ3Mgb24gYSBydW5uaW5nIHN5c3RlbS4gIFRoZXNlIGRldmljZXMKK29mdGVuIHN1cHBvcnQgYSByYW5nZSBvZiBydW50aW1lIHBvd2VyIHN0YXRlcywgd2hpY2ggbWlnaHQgdXNlIG5hbWVzIHN1Y2gKK2FzICJvZmYiLCAic2xlZXAiLCAiaWRsZSIsICJhY3RpdmUiLCBhbmQgc28gb24uICBUaG9zZSBzdGF0ZXMgd2lsbCBpbiBzb21lCitjYXNlcyAobGlrZSBQQ0kpIGJlIHBhcnRpYWxseSBjb25zdHJhaW5lZCBieSB0aGUgYnVzIHRoZSBkZXZpY2UgdXNlcywgYW5kIHdpbGwKK3VzdWFsbHkgaW5jbHVkZSBoYXJkd2FyZSBzdGF0ZXMgdGhhdCBhcmUgYWxzbyB1c2VkIGluIHN5c3RlbSBzbGVlcCBzdGF0ZXMuCisKK0Egc3lzdGVtLXdpZGUgcG93ZXIgdHJhbnNpdGlvbiBjYW4gYmUgc3RhcnRlZCB3aGlsZSBzb21lIGRldmljZXMgYXJlIGluIGxvdworcG93ZXIgc3RhdGVzIGR1ZSB0byBydW50aW1lIHBvd2VyIG1hbmFnZW1lbnQuICBUaGUgc3lzdGVtIHNsZWVwIFBNIGNhbGxiYWNrcworc2hvdWxkIHJlY29nbml6ZSBzdWNoIHNpdHVhdGlvbnMgYW5kIHJlYWN0IHRvIHRoZW0gYXBwcm9wcmlhdGVseSwgYnV0IHRoZQorbmVjZXNzYXJ5IGFjdGlvbnMgYXJlIHN1YnN5c3RlbS1zcGVjaWZpYy4KKworSW4gc29tZSBjYXNlcyB0aGUgZGVjaXNpb24gbWF5IGJlIG1hZGUgYXQgdGhlIHN1YnN5c3RlbSBsZXZlbCB3aGlsZSBpbiBvdGhlcgorY2FzZXMgdGhlIGRldmljZSBkcml2ZXIgbWF5IGJlIGxlZnQgdG8gZGVjaWRlLiAgSW4gc29tZSBjYXNlcyBpdCBtYXkgYmUKK2Rlc2lyYWJsZSB0byBsZWF2ZSBhIHN1c3BlbmRlZCBkZXZpY2UgaW4gdGhhdCBzdGF0ZSBkdXJpbmcgYSBzeXN0ZW0td2lkZSBwb3dlcgordHJhbnNpdGlvbiwgYnV0IGluIG90aGVyIGNhc2VzIHRoZSBkZXZpY2UgbXVzdCBiZSBwdXQgYmFjayBpbnRvIHRoZSBmdWxsLXBvd2VyCitzdGF0ZSB0ZW1wb3JhcmlseSwgZm9yIGV4YW1wbGUgc28gdGhhdCBpdHMgc3lzdGVtIHdha2V1cCBjYXBhYmlsaXR5IGNhbiBiZQorZGlzYWJsZWQuICBUaGlzIGFsbCBkZXBlbmRzIG9uIHRoZSBoYXJkd2FyZSBhbmQgdGhlIGRlc2lnbiBvZiB0aGUgc3Vic3lzdGVtIGFuZAorZGV2aWNlIGRyaXZlciBpbiBxdWVzdGlvbi4KKworRHVyaW5nIHN5c3RlbS13aWRlIHJlc3VtZSBmcm9tIGEgc2xlZXAgc3RhdGUgaXQncyBlYXNpZXN0IHRvIHB1dCBkZXZpY2VzIGludG8KK3RoZSBmdWxsLXBvd2VyIHN0YXRlLCBhcyBleHBsYWluZWQgaW4gRG9jdW1lbnRhdGlvbi9wb3dlci9ydW50aW1lX3BtLnR4dC4gIFJlZmVyCit0byB0aGF0IGRvY3VtZW50IGZvciBtb3JlIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGlzIHBhcnRpY3VsYXIgaXNzdWUgYXMgd2VsbCBhcworZm9yIGluZm9ybWF0aW9uIG9uIHRoZSBkZXZpY2UgcnVudGltZSBwb3dlciBtYW5hZ2VtZW50IGZyYW1ld29yayBpbiBnZW5lcmFsLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlci9kcml2ZXJzLXRlc3RpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci9kcml2ZXJzLXRlc3RpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzOGFmZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL2RyaXZlcnMtdGVzdGluZy50eHQKQEAgLTAsMCArMSw0NiBAQAorVGVzdGluZyBzdXNwZW5kIGFuZCByZXN1bWUgc3VwcG9ydCBpbiBkZXZpY2UgZHJpdmVycworCShDKSAyMDA3IFJhZmFlbCBKLiBXeXNvY2tpIDxyandAc2lzay5wbD4sIEdQTAorCisxLiBQcmVwYXJpbmcgdGhlIHRlc3Qgc3lzdGVtCisKK1VuZm9ydHVuYXRlbHksIHRvIGVmZmVjdGl2ZWx5IHRlc3QgdGhlIHN1cHBvcnQgZm9yIHRoZSBzeXN0ZW0td2lkZSBzdXNwZW5kIGFuZAorcmVzdW1lIHRyYW5zaXRpb25zIGluIGEgZHJpdmVyLCBpdCBpcyBuZWNlc3NhcnkgdG8gc3VzcGVuZCBhbmQgcmVzdW1lIGEgZnVsbHkKK2Z1bmN0aW9uYWwgc3lzdGVtIHdpdGggdGhpcyBkcml2ZXIgbG9hZGVkLiAgTW9yZW92ZXIsIHRoYXQgc2hvdWxkIGJlIGRvbmUKK3NldmVyYWwgdGltZXMsIHByZWZlcmFibHkgc2V2ZXJhbCB0aW1lcyBpbiBhIHJvdywgYW5kIHNlcGFyYXRlbHkgZm9yIGhpYmVybmF0aW9uCisoYWthIHN1c3BlbmQgdG8gZGlzayBvciBTVEQpIGFuZCBzdXNwZW5kIHRvIFJBTSAoU1RSKSwgYmVjYXVzZSBlYWNoIG9mIHRoZXNlCitjYXNlcyBpbnZvbHZlcyBzbGlnaHRseSBkaWZmZXJlbnQgb3BlcmF0aW9ucyBhbmQgZGlmZmVyZW50IGludGVyYWN0aW9ucyB3aXRoCit0aGUgbWFjaGluZSdzIEJJT1MuCisKK09mIGNvdXJzZSwgZm9yIHRoaXMgcHVycG9zZSB0aGUgdGVzdCBzeXN0ZW0gaGFzIHRvIGJlIGtub3duIHRvIHN1c3BlbmQgYW5kCityZXN1bWUgd2l0aG91dCB0aGUgZHJpdmVyIGJlaW5nIHRlc3RlZC4gIFRodXMsIGlmIHBvc3NpYmxlLCB5b3Ugc2hvdWxkIGZpcnN0CityZXNvbHZlIGFsbCBzdXNwZW5kL3Jlc3VtZS1yZWxhdGVkIHByb2JsZW1zIGluIHRoZSB0ZXN0IHN5c3RlbSBiZWZvcmUgeW91IHN0YXJ0Cit0ZXN0aW5nIHRoZSBuZXcgZHJpdmVyLiAgUGxlYXNlIHNlZSBEb2N1bWVudGF0aW9uL3Bvd2VyL2Jhc2ljLXBtLWRlYnVnZ2luZy50eHQKK2ZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkZWJ1Z2dpbmcgb2Ygc3VzcGVuZC9yZXN1bWUgZnVuY3Rpb25hbGl0eS4KKworMi4gVGVzdGluZyB0aGUgZHJpdmVyCisKK09uY2UgeW91IGhhdmUgcmVzb2x2ZWQgdGhlIHN1c3BlbmQvcmVzdW1lLXJlbGF0ZWQgcHJvYmxlbXMgd2l0aCB5b3VyIHRlc3Qgc3lzdGVtCit3aXRob3V0IHRoZSBuZXcgZHJpdmVyLCB5b3UgYXJlIHJlYWR5IHRvIHRlc3QgaXQ6CisKK2EpIEJ1aWxkIHRoZSBkcml2ZXIgYXMgYSBtb2R1bGUsIGxvYWQgaXQgYW5kIHRyeSB0aGUgdGVzdCBtb2RlcyBvZiBoaWJlcm5hdGlvbgorICAgKHNlZTogRG9jdW1lbnRhdGlvbi9wb3dlci9iYXNpYy1wbS1kZWJ1Z2dpbmcudHh0LCAxKS4KKworYikgTG9hZCB0aGUgZHJpdmVyIGFuZCBhdHRlbXB0IHRvIGhpYmVybmF0ZSBpbiB0aGUgInJlYm9vdCIsICJzaHV0ZG93biIgYW5kCisgICAicGxhdGZvcm0iIG1vZGVzIChzZWU6IERvY3VtZW50YXRpb24vcG93ZXIvYmFzaWMtcG0tZGVidWdnaW5nLnR4dCwgMSkuCisKK2MpIENvbXBpbGUgdGhlIGRyaXZlciBkaXJlY3RseSBpbnRvIHRoZSBrZXJuZWwgYW5kIHRyeSB0aGUgdGVzdCBtb2RlcyBvZgorICAgaGliZXJuYXRpb24uCisKK2QpIEF0dGVtcHQgdG8gaGliZXJuYXRlIHdpdGggdGhlIGRyaXZlciBjb21waWxlZCBkaXJlY3RseSBpbnRvIHRoZSBrZXJuZWwKKyAgIGluIHRoZSAicmVib290IiwgInNodXRkb3duIiBhbmQgInBsYXRmb3JtIiBtb2Rlcy4KKworZSkgVHJ5IHRoZSB0ZXN0IG1vZGVzIG9mIHN1c3BlbmQgKHNlZTogRG9jdW1lbnRhdGlvbi9wb3dlci9iYXNpYy1wbS1kZWJ1Z2dpbmcudHh0LAorICAgMikuICBbQXMgZmFyIGFzIHRoZSBTVFIgdGVzdHMgYXJlIGNvbmNlcm5lZCwgaXQgc2hvdWxkIG5vdCBtYXR0ZXIgd2hldGhlciBvcgorICAgbm90IHRoZSBkcml2ZXIgaXMgYnVpbHQgYXMgYSBtb2R1bGUuXQorCitmKSBBdHRlbXB0IHRvIHN1c3BlbmQgdG8gUkFNIHVzaW5nIHRoZSBzMnJhbSB0b29sIHdpdGggdGhlIGRyaXZlciBsb2FkZWQKKyAgIChzZWU6IERvY3VtZW50YXRpb24vcG93ZXIvYmFzaWMtcG0tZGVidWdnaW5nLnR4dCwgMikuCisKK0VhY2ggb2YgdGhlIGFib3ZlIHRlc3RzIHNob3VsZCBiZSByZXBlYXRlZCBzZXZlcmFsIHRpbWVzIGFuZCB0aGUgU1REIHRlc3RzCitzaG91bGQgYmUgbWl4ZWQgd2l0aCB0aGUgU1RSIHRlc3RzLiAgSWYgYW55IG9mIHRoZW0gZmFpbHMsIHRoZSBkcml2ZXIgY2Fubm90IGJlCityZWdhcmRlZCBhcyBzdXNwZW5kL3Jlc3VtZS1zYWZlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlci9mcmVlemluZy1vZi10YXNrcy50eHQgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL2ZyZWV6aW5nLW9mLXRhc2tzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTg5NGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci9mcmVlemluZy1vZi10YXNrcy50eHQKQEAgLTAsMCArMSwyMzAgQEAKK0ZyZWV6aW5nIG9mIHRhc2tzCisJKEMpIDIwMDcgUmFmYWVsIEouIFd5c29ja2kgPHJqd0BzaXNrLnBsPiwgR1BMCisKK0kuIFdoYXQgaXMgdGhlIGZyZWV6aW5nIG9mIHRhc2tzPworCitUaGUgZnJlZXppbmcgb2YgdGFza3MgaXMgYSBtZWNoYW5pc20gYnkgd2hpY2ggdXNlciBzcGFjZSBwcm9jZXNzZXMgYW5kIHNvbWUKK2tlcm5lbCB0aHJlYWRzIGFyZSBjb250cm9sbGVkIGR1cmluZyBoaWJlcm5hdGlvbiBvciBzeXN0ZW0td2lkZSBzdXNwZW5kIChvbiBzb21lCithcmNoaXRlY3R1cmVzKS4KKworSUkuIEhvdyBkb2VzIGl0IHdvcms/CisKK1RoZXJlIGFyZSB0aHJlZSBwZXItdGFzayBmbGFncyB1c2VkIGZvciB0aGF0LCBQRl9OT0ZSRUVaRSwgUEZfRlJPWkVOCithbmQgUEZfRlJFRVpFUl9TS0lQICh0aGUgbGFzdCBvbmUgaXMgYXV4aWxpYXJ5KS4gIFRoZSB0YXNrcyB0aGF0IGhhdmUKK1BGX05PRlJFRVpFIHVuc2V0IChhbGwgdXNlciBzcGFjZSBwcm9jZXNzZXMgYW5kIHNvbWUga2VybmVsIHRocmVhZHMpIGFyZQorcmVnYXJkZWQgYXMgJ2ZyZWV6YWJsZScgYW5kIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBiZWZvcmUgdGhlIHN5c3RlbSBlbnRlcnMgYQorc3VzcGVuZCBzdGF0ZSBhcyB3ZWxsIGFzIGJlZm9yZSBhIGhpYmVybmF0aW9uIGltYWdlIGlzIGNyZWF0ZWQgKGluIHdoYXQgZm9sbG93cword2Ugb25seSBjb25zaWRlciBoaWJlcm5hdGlvbiwgYnV0IHRoZSBkZXNjcmlwdGlvbiBhbHNvIGFwcGxpZXMgdG8gc3VzcGVuZCkuCisKK05hbWVseSwgYXMgdGhlIGZpcnN0IHN0ZXAgb2YgdGhlIGhpYmVybmF0aW9uIHByb2NlZHVyZSB0aGUgZnVuY3Rpb24KK2ZyZWV6ZV9wcm9jZXNzZXMoKSAoZGVmaW5lZCBpbiBrZXJuZWwvcG93ZXIvcHJvY2Vzcy5jKSBpcyBjYWxsZWQuICBBIHN5c3RlbS13aWRlCit2YXJpYWJsZSBzeXN0ZW1fZnJlZXppbmdfY250IChhcyBvcHBvc2VkIHRvIGEgcGVyLXRhc2sgZmxhZykgaXMgdXNlZCB0byBpbmRpY2F0ZQord2hldGhlciB0aGUgc3lzdGVtIGlzIHRvIHVuZGVyZ28gYSBmcmVlemluZyBvcGVyYXRpb24uIEFuZCBmcmVlemVfcHJvY2Vzc2VzKCkKK3NldHMgdGhpcyB2YXJpYWJsZS4gIEFmdGVyIHRoaXMsIGl0IGV4ZWN1dGVzIHRyeV90b19mcmVlemVfdGFza3MoKSB0aGF0IHNlbmRzIGEKK2Zha2Ugc2lnbmFsIHRvIGFsbCB1c2VyIHNwYWNlIHByb2Nlc3NlcywgYW5kIHdha2VzIHVwIGFsbCB0aGUga2VybmVsIHRocmVhZHMuCitBbGwgZnJlZXphYmxlIHRhc2tzIG11c3QgcmVhY3QgdG8gdGhhdCBieSBjYWxsaW5nIHRyeV90b19mcmVlemUoKSwgd2hpY2gKK3Jlc3VsdHMgaW4gYSBjYWxsIHRvIF9fcmVmcmlnZXJhdG9yKCkgKGRlZmluZWQgaW4ga2VybmVsL2ZyZWV6ZXIuYyksIHdoaWNoIHNldHMKK3RoZSB0YXNrJ3MgUEZfRlJPWkVOIGZsYWcsIGNoYW5nZXMgaXRzIHN0YXRlIHRvIFRBU0tfVU5JTlRFUlJVUFRJQkxFIGFuZCBtYWtlcworaXQgbG9vcCB1bnRpbCBQRl9GUk9aRU4gaXMgY2xlYXJlZCBmb3IgaXQuIFRoZW4sIHdlIHNheSB0aGF0IHRoZSB0YXNrIGlzCisnZnJvemVuJyBhbmQgdGhlcmVmb3JlIHRoZSBzZXQgb2YgZnVuY3Rpb25zIGhhbmRsaW5nIHRoaXMgbWVjaGFuaXNtIGlzIHJlZmVycmVkCit0byBhcyAndGhlIGZyZWV6ZXInICh0aGVzZSBmdW5jdGlvbnMgYXJlIGRlZmluZWQgaW4ga2VybmVsL3Bvd2VyL3Byb2Nlc3MuYywKK2tlcm5lbC9mcmVlemVyLmMgJiBpbmNsdWRlL2xpbnV4L2ZyZWV6ZXIuaCkuIFVzZXIgc3BhY2UgcHJvY2Vzc2VzIGFyZSBnZW5lcmFsbHkKK2Zyb3plbiBiZWZvcmUga2VybmVsIHRocmVhZHMuCisKK19fcmVmcmlnZXJhdG9yKCkgbXVzdCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LiAgSW5zdGVhZCwgdXNlIHRoZQordHJ5X3RvX2ZyZWV6ZSgpIGZ1bmN0aW9uIChkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvZnJlZXplci5oKSwgdGhhdCBjaGVja3MKK2lmIHRoZSB0YXNrIGlzIHRvIGJlIGZyb3plbiBhbmQgbWFrZXMgdGhlIHRhc2sgZW50ZXIgX19yZWZyaWdlcmF0b3IoKS4KKworRm9yIHVzZXIgc3BhY2UgcHJvY2Vzc2VzIHRyeV90b19mcmVlemUoKSBpcyBjYWxsZWQgYXV0b21hdGljYWxseSBmcm9tIHRoZQorc2lnbmFsLWhhbmRsaW5nIGNvZGUsIGJ1dCB0aGUgZnJlZXphYmxlIGtlcm5lbCB0aHJlYWRzIG5lZWQgdG8gY2FsbCBpdAorZXhwbGljaXRseSBpbiBzdWl0YWJsZSBwbGFjZXMgb3IgdXNlIHRoZSB3YWl0X2V2ZW50X2ZyZWV6YWJsZSgpIG9yCit3YWl0X2V2ZW50X2ZyZWV6YWJsZV90aW1lb3V0KCkgbWFjcm9zIChkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvZnJlZXplci5oKQordGhhdCBjb21iaW5lIGludGVycnVwdGlibGUgc2xlZXAgd2l0aCBjaGVja2luZyBpZiB0aGUgdGFzayBpcyB0byBiZSBmcm96ZW4gYW5kCitjYWxsaW5nIHRyeV90b19mcmVlemUoKS4gIFRoZSBtYWluIGxvb3Agb2YgYSBmcmVlemFibGUga2VybmVsIHRocmVhZCBtYXkgbG9vaworbGlrZSB0aGUgZm9sbG93aW5nIG9uZToKKworCXNldF9mcmVlemFibGUoKTsKKwlkbyB7CisJCWh1Yl9ldmVudHMoKTsKKwkJd2FpdF9ldmVudF9mcmVlemFibGUoa2h1YmRfd2FpdCwKKwkJCQkhbGlzdF9lbXB0eSgmaHViX2V2ZW50X2xpc3QpIHx8CisJCQkJa3RocmVhZF9zaG91bGRfc3RvcCgpKTsKKwl9IHdoaWxlICgha3RocmVhZF9zaG91bGRfc3RvcCgpIHx8ICFsaXN0X2VtcHR5KCZodWJfZXZlbnRfbGlzdCkpOworCisoZnJvbSBkcml2ZXJzL3VzYi9jb3JlL2h1Yi5jOjpodWJfdGhyZWFkKCkpLgorCitJZiBhIGZyZWV6YWJsZSBrZXJuZWwgdGhyZWFkIGZhaWxzIHRvIGNhbGwgdHJ5X3RvX2ZyZWV6ZSgpIGFmdGVyIHRoZSBmcmVlemVyIGhhcworaW5pdGlhdGVkIGEgZnJlZXppbmcgb3BlcmF0aW9uLCB0aGUgZnJlZXppbmcgb2YgdGFza3Mgd2lsbCBmYWlsIGFuZCB0aGUgZW50aXJlCitoaWJlcm5hdGlvbiBvcGVyYXRpb24gd2lsbCBiZSBjYW5jZWxsZWQuICBGb3IgdGhpcyByZWFzb24sIGZyZWV6YWJsZSBrZXJuZWwKK3RocmVhZHMgbXVzdCBjYWxsIHRyeV90b19mcmVlemUoKSBzb21ld2hlcmUgb3IgdXNlIG9uZSBvZiB0aGUKK3dhaXRfZXZlbnRfZnJlZXphYmxlKCkgYW5kIHdhaXRfZXZlbnRfZnJlZXphYmxlX3RpbWVvdXQoKSBtYWNyb3MuCisKK0FmdGVyIHRoZSBzeXN0ZW0gbWVtb3J5IHN0YXRlIGhhcyBiZWVuIHJlc3RvcmVkIGZyb20gYSBoaWJlcm5hdGlvbiBpbWFnZSBhbmQKK2RldmljZXMgaGF2ZSBiZWVuIHJlaW5pdGlhbGl6ZWQsIHRoZSBmdW5jdGlvbiB0aGF3X3Byb2Nlc3NlcygpIGlzIGNhbGxlZCBpbgorb3JkZXIgdG8gY2xlYXIgdGhlIFBGX0ZST1pFTiBmbGFnIGZvciBlYWNoIGZyb3plbiB0YXNrLiAgVGhlbiwgdGhlIHRhc2tzIHRoYXQKK2hhdmUgYmVlbiBmcm96ZW4gbGVhdmUgX19yZWZyaWdlcmF0b3IoKSBhbmQgY29udGludWUgcnVubmluZy4KKworCitSYXRpb25hbGUgYmVoaW5kIHRoZSBmdW5jdGlvbnMgZGVhbGluZyB3aXRoIGZyZWV6aW5nIGFuZCB0aGF3aW5nIG9mIHRhc2tzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitmcmVlemVfcHJvY2Vzc2VzKCk6CisgIC0gZnJlZXplcyBvbmx5IHVzZXJzcGFjZSB0YXNrcworCitmcmVlemVfa2VybmVsX3RocmVhZHMoKToKKyAgLSBmcmVlemVzIGFsbCB0YXNrcyAoaW5jbHVkaW5nIGtlcm5lbCB0aHJlYWRzKSBiZWNhdXNlIHdlIGNhbid0IGZyZWV6ZQorICAgIGtlcm5lbCB0aHJlYWRzIHdpdGhvdXQgZnJlZXppbmcgdXNlcnNwYWNlIHRhc2tzCisKK3RoYXdfa2VybmVsX3RocmVhZHMoKToKKyAgLSB0aGF3cyBvbmx5IGtlcm5lbCB0aHJlYWRzOyB0aGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgaWYgd2UgbmVlZCB0byBkbworICAgIGFueXRoaW5nIHNwZWNpYWwgaW4gYmV0d2VlbiB0aGF3aW5nIG9mIGtlcm5lbCB0aHJlYWRzIGFuZCB0aGF3aW5nIG9mCisgICAgdXNlcnNwYWNlIHRhc2tzLCBvciBpZiB3ZSB3YW50IHRvIHBvc3Rwb25lIHRoZSB0aGF3aW5nIG9mIHVzZXJzcGFjZSB0YXNrcworCit0aGF3X3Byb2Nlc3NlcygpOgorICAtIHRoYXdzIGFsbCB0YXNrcyAoaW5jbHVkaW5nIGtlcm5lbCB0aHJlYWRzKSBiZWNhdXNlIHdlIGNhbid0IHRoYXcgdXNlcnNwYWNlCisgICAgdGFza3Mgd2l0aG91dCB0aGF3aW5nIGtlcm5lbCB0aHJlYWRzCisKKworSUlJLiBXaGljaCBrZXJuZWwgdGhyZWFkcyBhcmUgZnJlZXphYmxlPworCitLZXJuZWwgdGhyZWFkcyBhcmUgbm90IGZyZWV6YWJsZSBieSBkZWZhdWx0LiAgSG93ZXZlciwgYSBrZXJuZWwgdGhyZWFkIG1heSBjbGVhcgorUEZfTk9GUkVFWkUgZm9yIGl0c2VsZiBieSBjYWxsaW5nIHNldF9mcmVlemFibGUoKSAodGhlIHJlc2V0dGluZyBvZiBQRl9OT0ZSRUVaRQorZGlyZWN0bHkgaXMgbm90IGFsbG93ZWQpLiAgRnJvbSB0aGlzIHBvaW50IGl0IGlzIHJlZ2FyZGVkIGFzIGZyZWV6YWJsZQorYW5kIG11c3QgY2FsbCB0cnlfdG9fZnJlZXplKCkgaW4gYSBzdWl0YWJsZSBwbGFjZS4KKworSVYuIFdoeSBkbyB3ZSBkbyB0aGF0PworCitHZW5lcmFsbHkgc3BlYWtpbmcsIHRoZXJlIGlzIGEgY291cGxlIG9mIHJlYXNvbnMgdG8gdXNlIHRoZSBmcmVlemluZyBvZiB0YXNrczoKKworMS4gVGhlIHByaW5jaXBhbCByZWFzb24gaXMgdG8gcHJldmVudCBmaWxlc3lzdGVtcyBmcm9tIGJlaW5nIGRhbWFnZWQgYWZ0ZXIKK2hpYmVybmF0aW9uLiAgQXQgdGhlIG1vbWVudCB3ZSBoYXZlIG5vIHNpbXBsZSBtZWFucyBvZiBjaGVja3BvaW50aW5nCitmaWxlc3lzdGVtcywgc28gaWYgdGhlcmUgYXJlIGFueSBtb2RpZmljYXRpb25zIG1hZGUgdG8gZmlsZXN5c3RlbSBkYXRhIGFuZC9vcgorbWV0YWRhdGEgb24gZGlza3MsIHdlIGNhbm5vdCBicmluZyB0aGVtIGJhY2sgdG8gdGhlIHN0YXRlIGZyb20gYmVmb3JlIHRoZQorbW9kaWZpY2F0aW9ucy4gIEF0IHRoZSBzYW1lIHRpbWUgZWFjaCBoaWJlcm5hdGlvbiBpbWFnZSBjb250YWlucyBzb21lCitmaWxlc3lzdGVtLXJlbGF0ZWQgaW5mb3JtYXRpb24gdGhhdCBtdXN0IGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgc3RhdGUgb2YgdGhlCitvbi1kaXNrIGRhdGEgYW5kIG1ldGFkYXRhIGFmdGVyIHRoZSBzeXN0ZW0gbWVtb3J5IHN0YXRlIGhhcyBiZWVuIHJlc3RvcmVkIGZyb20KK3RoZSBpbWFnZSAob3RoZXJ3aXNlIHRoZSBmaWxlc3lzdGVtcyB3aWxsIGJlIGRhbWFnZWQgaW4gYSBuYXN0eSB3YXksIHVzdWFsbHkKK21ha2luZyB0aGVtIGFsbW9zdCBpbXBvc3NpYmxlIHRvIHJlcGFpcikuICBXZSB0aGVyZWZvcmUgZnJlZXplIHRhc2tzIHRoYXQgbWlnaHQKK2NhdXNlIHRoZSBvbi1kaXNrIGZpbGVzeXN0ZW1zJyBkYXRhIGFuZCBtZXRhZGF0YSB0byBiZSBtb2RpZmllZCBhZnRlciB0aGUKK2hpYmVybmF0aW9uIGltYWdlIGhhcyBiZWVuIGNyZWF0ZWQgYW5kIGJlZm9yZSB0aGUgc3lzdGVtIGlzIGZpbmFsbHkgcG93ZXJlZCBvZmYuCitUaGUgbWFqb3JpdHkgb2YgdGhlc2UgYXJlIHVzZXIgc3BhY2UgcHJvY2Vzc2VzLCBidXQgaWYgYW55IG9mIHRoZSBrZXJuZWwgdGhyZWFkcworbWF5IGNhdXNlIHNvbWV0aGluZyBsaWtlIHRoaXMgdG8gaGFwcGVuLCB0aGV5IGhhdmUgdG8gYmUgZnJlZXphYmxlLgorCisyLiBOZXh0LCB0byBjcmVhdGUgdGhlIGhpYmVybmF0aW9uIGltYWdlIHdlIG5lZWQgdG8gZnJlZSBhIHN1ZmZpY2llbnQgYW1vdW50IG9mCittZW1vcnkgKGFwcHJveGltYXRlbHkgNTAlIG9mIGF2YWlsYWJsZSBSQU0pIGFuZCB3ZSBuZWVkIHRvIGRvIHRoYXQgYmVmb3JlCitkZXZpY2VzIGFyZSBkZWFjdGl2YXRlZCwgYmVjYXVzZSB3ZSBnZW5lcmFsbHkgbmVlZCB0aGVtIGZvciBzd2FwcGluZyBvdXQuICBUaGVuLAorYWZ0ZXIgdGhlIG1lbW9yeSBmb3IgdGhlIGltYWdlIGhhcyBiZWVuIGZyZWVkLCB3ZSBkb24ndCB3YW50IHRhc2tzIHRvIGFsbG9jYXRlCithZGRpdGlvbmFsIG1lbW9yeSBhbmQgd2UgcHJldmVudCB0aGVtIGZyb20gZG9pbmcgdGhhdCBieSBmcmVlemluZyB0aGVtIGVhcmxpZXIuCitbT2YgY291cnNlLCB0aGlzIGFsc28gbWVhbnMgdGhhdCBkZXZpY2UgZHJpdmVycyBzaG91bGQgbm90IGFsbG9jYXRlIHN1YnN0YW50aWFsCithbW91bnRzIG9mIG1lbW9yeSBmcm9tIHRoZWlyIC5zdXNwZW5kKCkgY2FsbGJhY2tzIGJlZm9yZSBoaWJlcm5hdGlvbiwgYnV0IHRoaXMKK2lzIGEgc2VwYXJhdGUgaXNzdWUuXQorCiszLiBUaGUgdGhpcmQgcmVhc29uIGlzIHRvIHByZXZlbnQgdXNlciBzcGFjZSBwcm9jZXNzZXMgYW5kIHNvbWUga2VybmVsIHRocmVhZHMKK2Zyb20gaW50ZXJmZXJpbmcgd2l0aCB0aGUgc3VzcGVuZGluZyBhbmQgcmVzdW1pbmcgb2YgZGV2aWNlcy4gIEEgdXNlciBzcGFjZQorcHJvY2VzcyBydW5uaW5nIG9uIGEgc2Vjb25kIENQVSB3aGlsZSB3ZSBhcmUgc3VzcGVuZGluZyBkZXZpY2VzIG1heSwgZm9yCitleGFtcGxlLCBiZSB0cm91Ymxlc29tZSBhbmQgd2l0aG91dCB0aGUgZnJlZXppbmcgb2YgdGFza3Mgd2Ugd291bGQgbmVlZCBzb21lCitzYWZlZ3VhcmRzIGFnYWluc3QgcmFjZSBjb25kaXRpb25zIHRoYXQgbWlnaHQgb2NjdXIgaW4gc3VjaCBhIGNhc2UuCisKK0FsdGhvdWdoIExpbnVzIFRvcnZhbGRzIGRvZXNuJ3QgbGlrZSB0aGUgZnJlZXppbmcgb2YgdGFza3MsIGhlIHNhaWQgdGhpcyBpbiBvbmUKK29mIHRoZSBkaXNjdXNzaW9ucyBvbiBMS01MIChodHRwOi8vbGttbC5vcmcvbGttbC8yMDA3LzQvMjcvNjA4KToKKworIlJKVzo+IFdoeSB3ZSBmcmVlemUgdGFza3MgYXQgYWxsIG9yIHdoeSB3ZSBmcmVlemUga2VybmVsIHRocmVhZHM/CisKK0xpbnVzOiBJbiBtYW55IHdheXMsICdhdCBhbGwnLgorCitJIF9kb18gcmVhbGl6ZSB0aGUgSU8gcmVxdWVzdCBxdWV1ZSBpc3N1ZXMsIGFuZCB0aGF0IHdlIGNhbm5vdCBhY3R1YWxseSBkbworczJyYW0gd2l0aCBzb21lIGRldmljZXMgaW4gdGhlIG1pZGRsZSBvZiBhIERNQS4gIFNvIHdlIHdhbnQgdG8gYmUgYWJsZSB0bworYXZvaWQgKnRoYXQqLCB0aGVyZSdzIG5vIHF1ZXN0aW9uIGFib3V0IHRoYXQuICBBbmQgSSBzdXNwZWN0IHRoYXQgc3RvcHBpbmcKK3VzZXIgdGhyZWFkcyBhbmQgdGhlbiB3YWl0aW5nIGZvciBhIHN5bmMgaXMgcHJhY3RpY2FsbHkgb25lIG9mIHRoZSBlYXNpZXIKK3dheXMgdG8gZG8gc28uCisKK1NvIGluIHByYWN0aWNlLCB0aGUgJ2F0IGFsbCcgbWF5IGJlY29tZSBhICd3aHkgZnJlZXplIGtlcm5lbCB0aHJlYWRzPycgYW5kCitmcmVlemluZyB1c2VyIHRocmVhZHMgSSBkb24ndCBmaW5kIHJlYWxseSBvYmplY3Rpb25hYmxlLiIKKworU3RpbGwsIHRoZXJlIGFyZSBrZXJuZWwgdGhyZWFkcyB0aGF0IG1heSB3YW50IHRvIGJlIGZyZWV6YWJsZS4gIEZvciBleGFtcGxlLCBpZgorYSBrZXJuZWwgdGhyZWFkIHRoYXQgYmVsb25ncyB0byBhIGRldmljZSBkcml2ZXIgYWNjZXNzZXMgdGhlIGRldmljZSBkaXJlY3RseSwgaXQKK2luIHByaW5jaXBsZSBuZWVkcyB0byBrbm93IHdoZW4gdGhlIGRldmljZSBpcyBzdXNwZW5kZWQsIHNvIHRoYXQgaXQgZG9lc24ndCB0cnkKK3RvIGFjY2VzcyBpdCBhdCB0aGF0IHRpbWUuICBIb3dldmVyLCBpZiB0aGUga2VybmVsIHRocmVhZCBpcyBmcmVlemFibGUsIGl0IHdpbGwKK2JlIGZyb3plbiBiZWZvcmUgdGhlIGRyaXZlcidzIC5zdXNwZW5kKCkgY2FsbGJhY2sgaXMgZXhlY3V0ZWQgYW5kIGl0IHdpbGwgYmUKK3RoYXdlZCBhZnRlciB0aGUgZHJpdmVyJ3MgLnJlc3VtZSgpIGNhbGxiYWNrIGhhcyBydW4sIHNvIGl0IHdvbid0IGJlIGFjY2Vzc2luZwordGhlIGRldmljZSB3aGlsZSBpdCdzIHN1c3BlbmRlZC4KKworNC4gQW5vdGhlciByZWFzb24gZm9yIGZyZWV6aW5nIHRhc2tzIGlzIHRvIHByZXZlbnQgdXNlciBzcGFjZSBwcm9jZXNzZXMgZnJvbQorcmVhbGl6aW5nIHRoYXQgaGliZXJuYXRpb24gKG9yIHN1c3BlbmQpIG9wZXJhdGlvbiB0YWtlcyBwbGFjZS4gIElkZWFsbHksIHVzZXIKK3NwYWNlIHByb2Nlc3NlcyBzaG91bGQgbm90IG5vdGljZSB0aGF0IHN1Y2ggYSBzeXN0ZW0td2lkZSBvcGVyYXRpb24gaGFzIG9jY3VycmVkCithbmQgc2hvdWxkIGNvbnRpbnVlIHJ1bm5pbmcgd2l0aG91dCBhbnkgcHJvYmxlbXMgYWZ0ZXIgdGhlIHJlc3RvcmUgKG9yIHJlc3VtZQorZnJvbSBzdXNwZW5kKS4gIFVuZm9ydHVuYXRlbHksIGluIHRoZSBtb3N0IGdlbmVyYWwgY2FzZSB0aGlzIGlzIHF1aXRlIGRpZmZpY3VsdAordG8gYWNoaWV2ZSB3aXRob3V0IHRoZSBmcmVlemluZyBvZiB0YXNrcy4gIENvbnNpZGVyLCBmb3IgZXhhbXBsZSwgYSBwcm9jZXNzCit0aGF0IGRlcGVuZHMgb24gYWxsIENQVXMgYmVpbmcgb25saW5lIHdoaWxlIGl0J3MgcnVubmluZy4gIFNpbmNlIHdlIG5lZWQgdG8KK2Rpc2FibGUgbm9uYm9vdCBDUFVzIGR1cmluZyB0aGUgaGliZXJuYXRpb24sIGlmIHRoaXMgcHJvY2VzcyBpcyBub3QgZnJvemVuLCBpdAorbWF5IG5vdGljZSB0aGF0IHRoZSBudW1iZXIgb2YgQ1BVcyBoYXMgY2hhbmdlZCBhbmQgbWF5IHN0YXJ0IHRvIHdvcmsgaW5jb3JyZWN0bHkKK2JlY2F1c2Ugb2YgdGhhdC4KKworVi4gQXJlIHRoZXJlIGFueSBwcm9ibGVtcyByZWxhdGVkIHRvIHRoZSBmcmVlemluZyBvZiB0YXNrcz8KKworWWVzLCB0aGVyZSBhcmUuCisKK0ZpcnN0IG9mIGFsbCwgdGhlIGZyZWV6aW5nIG9mIGtlcm5lbCB0aHJlYWRzIG1heSBiZSB0cmlja3kgaWYgdGhleSBkZXBlbmQgb25lCitvbiBhbm90aGVyLiAgRm9yIGV4YW1wbGUsIGlmIGtlcm5lbCB0aHJlYWQgQSB3YWl0cyBmb3IgYSBjb21wbGV0aW9uIChpbiB0aGUKK1RBU0tfVU5JTlRFUlJVUFRJQkxFIHN0YXRlKSB0aGF0IG5lZWRzIHRvIGJlIGRvbmUgYnkgZnJlZXphYmxlIGtlcm5lbCB0aHJlYWQgQgorYW5kIEIgaXMgZnJvemVuIGluIHRoZSBtZWFudGltZSwgdGhlbiBBIHdpbGwgYmUgYmxvY2tlZCB1bnRpbCBCIGlzIHRoYXdlZCwgd2hpY2gKK21heSBiZSB1bmRlc2lyYWJsZS4gIFRoYXQncyB3aHkga2VybmVsIHRocmVhZHMgYXJlIG5vdCBmcmVlemFibGUgYnkgZGVmYXVsdC4KKworU2Vjb25kLCB0aGVyZSBhcmUgdGhlIGZvbGxvd2luZyB0d28gcHJvYmxlbXMgcmVsYXRlZCB0byB0aGUgZnJlZXppbmcgb2YgdXNlcgorc3BhY2UgcHJvY2Vzc2VzOgorMS4gUHV0dGluZyBwcm9jZXNzZXMgaW50byBhbiB1bmludGVycnVwdGlibGUgc2xlZXAgZGlzdG9ydHMgdGhlIGxvYWQgYXZlcmFnZS4KKzIuIE5vdyB0aGF0IHdlIGhhdmUgRlVTRSwgcGx1cyB0aGUgZnJhbWV3b3JrIGZvciBkb2luZyBkZXZpY2UgZHJpdmVycyBpbgordXNlcnNwYWNlLCBpdCBnZXRzIGV2ZW4gbW9yZSBjb21wbGljYXRlZCBiZWNhdXNlIHNvbWUgdXNlcnNwYWNlIHByb2Nlc3NlcyBhcmUKK25vdyBkb2luZyB0aGUgc29ydHMgb2YgdGhpbmdzIHRoYXQga2VybmVsIHRocmVhZHMgZG8KKyhodHRwczovL2xpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnL3BpcGVybWFpbC9saW51eC1wbS8yMDA3LU1heS8wMTIzMDkuaHRtbCkuCisKK1RoZSBwcm9ibGVtIDEuIHNlZW1zIHRvIGJlIGZpeGFibGUsIGFsdGhvdWdoIGl0IGhhc24ndCBiZWVuIGZpeGVkIHNvIGZhci4gIFRoZQorb3RoZXIgb25lIGlzIG1vcmUgc2VyaW91cywgYnV0IGl0IHNlZW1zIHRoYXQgd2UgY2FuIHdvcmsgYXJvdW5kIGl0IGJ5IHVzaW5nCitoaWJlcm5hdGlvbiAoYW5kIHN1c3BlbmQpIG5vdGlmaWVycyAoaW4gdGhhdCBjYXNlLCB0aG91Z2gsIHdlIHdvbid0IGJlIGFibGUgdG8KK2F2b2lkIHRoZSByZWFsaXphdGlvbiBieSB0aGUgdXNlciBzcGFjZSBwcm9jZXNzZXMgdGhhdCB0aGUgaGliZXJuYXRpb24gaXMgdGFraW5nCitwbGFjZSkuCisKK1RoZXJlIGFyZSBhbHNvIHByb2JsZW1zIHRoYXQgdGhlIGZyZWV6aW5nIG9mIHRhc2tzIHRlbmRzIHRvIGV4cG9zZSwgYWx0aG91Z2gKK3RoZXkgYXJlIG5vdCBkaXJlY3RseSByZWxhdGVkIHRvIGl0LiAgRm9yIGV4YW1wbGUsIGlmIHJlcXVlc3RfZmlybXdhcmUoKSBpcworY2FsbGVkIGZyb20gYSBkZXZpY2UgZHJpdmVyJ3MgLnJlc3VtZSgpIHJvdXRpbmUsIGl0IHdpbGwgdGltZW91dCBhbmQgZXZlbnR1YWxseQorZmFpbCwgYmVjYXVzZSB0aGUgdXNlciBsYW5kIHByb2Nlc3MgdGhhdCBzaG91bGQgcmVzcG9uZCB0byB0aGUgcmVxdWVzdCBpcyBmcm96ZW4KK2F0IHRoaXMgcG9pbnQuICBTbywgc2VlbWluZ2x5LCB0aGUgZmFpbHVyZSBpcyBkdWUgdG8gdGhlIGZyZWV6aW5nIG9mIHRhc2tzLgorU3VwcG9zZSwgaG93ZXZlciwgdGhhdCB0aGUgZmlybXdhcmUgZmlsZSBpcyBsb2NhdGVkIG9uIGEgZmlsZXN5c3RlbSBhY2Nlc3NpYmxlCitvbmx5IHRocm91Z2ggYW5vdGhlciBkZXZpY2UgdGhhdCBoYXNuJ3QgYmVlbiByZXN1bWVkIHlldC4gIEluIHRoYXQgY2FzZSwKK3JlcXVlc3RfZmlybXdhcmUoKSB3aWxsIGZhaWwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgZnJlZXppbmcgb2YgdGFza3MKK2lzIHVzZWQuICBDb25zZXF1ZW50bHksIHRoZSBwcm9ibGVtIGlzIG5vdCByZWFsbHkgcmVsYXRlZCB0byB0aGUgZnJlZXppbmcgb2YKK3Rhc2tzLCBzaW5jZSBpdCBnZW5lcmFsbHkgZXhpc3RzIGFueXdheS4KKworQSBkcml2ZXIgbXVzdCBoYXZlIGFsbCBmaXJtd2FyZXMgaXQgbWF5IG5lZWQgaW4gUkFNIGJlZm9yZSBzdXNwZW5kKCkgaXMgY2FsbGVkLgorSWYga2VlcGluZyB0aGVtIGlzIG5vdCBwcmFjdGljYWwsIGZvciBleGFtcGxlIGR1ZSB0byB0aGVpciBzaXplLCB0aGV5IG11c3QgYmUKK3JlcXVlc3RlZCBlYXJseSBlbm91Z2ggdXNpbmcgdGhlIHN1c3BlbmQgbm90aWZpZXIgQVBJIGRlc2NyaWJlZCBpbiBub3RpZmllcnMudHh0LgorCitWSS4gQXJlIHRoZXJlIGFueSBwcmVjYXV0aW9ucyB0byBiZSB0YWtlbiB0byBwcmV2ZW50IGZyZWV6aW5nIGZhaWx1cmVzPworCitZZXMsIHRoZXJlIGFyZS4KKworRmlyc3Qgb2YgYWxsLCBncmFiYmluZyB0aGUgJ3BtX211dGV4JyBsb2NrIHRvIG11dHVhbGx5IGV4Y2x1ZGUgYSBwaWVjZSBvZiBjb2RlCitmcm9tIHN5c3RlbS13aWRlIHNsZWVwIHN1Y2ggYXMgc3VzcGVuZC9oaWJlcm5hdGlvbiBpcyBub3QgZW5jb3VyYWdlZC4KK0lmIHBvc3NpYmxlLCB0aGF0IHBpZWNlIG9mIGNvZGUgbXVzdCBpbnN0ZWFkIGhvb2sgb250byB0aGUgc3VzcGVuZC9oaWJlcm5hdGlvbgorbm90aWZpZXJzIHRvIGFjaGlldmUgbXV0dWFsIGV4Y2x1c2lvbi4gTG9vayBhdCB0aGUgQ1BVLUhvdHBsdWcgY29kZQorKGtlcm5lbC9jcHUuYykgZm9yIGFuIGV4YW1wbGUuCisKK0hvd2V2ZXIsIGlmIHRoYXQgaXMgbm90IGZlYXNpYmxlLCBhbmQgZ3JhYmJpbmcgJ3BtX211dGV4JyBpcyBkZWVtZWQgbmVjZXNzYXJ5LAoraXQgaXMgc3Ryb25nbHkgZGlzY291cmFnZWQgdG8gZGlyZWN0bHkgY2FsbCBtdXRleF9bdW5dbG9jaygmcG1fbXV0ZXgpIHNpbmNlCit0aGF0IGNvdWxkIGxlYWQgdG8gZnJlZXppbmcgZmFpbHVyZXMsIGJlY2F1c2UgaWYgdGhlIHN1c3BlbmQvaGliZXJuYXRlIGNvZGUKK3N1Y2Nlc3NmdWxseSBhY3F1aXJlZCB0aGUgJ3BtX211dGV4JyBsb2NrLCBhbmQgaGVuY2UgdGhhdCBvdGhlciBlbnRpdHkgZmFpbGVkCit0byBhY3F1aXJlIHRoZSBsb2NrLCB0aGVuIHRoYXQgdGFzayB3b3VsZCBnZXQgYmxvY2tlZCBpbiBUQVNLX1VOSU5URVJSVVBUSUJMRQorc3RhdGUuIEFzIGEgY29uc2VxdWVuY2UsIHRoZSBmcmVlemVyIHdvdWxkIG5vdCBiZSBhYmxlIHRvIGZyZWV6ZSB0aGF0IHRhc2ssCitsZWFkaW5nIHRvIGZyZWV6aW5nIGZhaWx1cmUuCisKK0hvd2V2ZXIsIHRoZSBbdW5dbG9ja19zeXN0ZW1fc2xlZXAoKSBBUElzIGFyZSBzYWZlIHRvIHVzZSBpbiB0aGlzIHNjZW5hcmlvLAorc2luY2UgdGhleSBhc2sgdGhlIGZyZWV6ZXIgdG8gc2tpcCBmcmVlemluZyB0aGlzIHRhc2ssIHNpbmNlIGl0IGlzIGFueXdheQorImZyb3plbiBlbm91Z2giIGFzIGl0IGlzIGJsb2NrZWQgb24gJ3BtX211dGV4Jywgd2hpY2ggd2lsbCBiZSByZWxlYXNlZAorb25seSBhZnRlciB0aGUgZW50aXJlIHN1c3BlbmQvaGliZXJuYXRpb24gc2VxdWVuY2UgaXMgY29tcGxldGUuCitTbywgdG8gc3VtbWFyaXplLCB1c2UgW3VuXWxvY2tfc3lzdGVtX3NsZWVwKCkgaW5zdGVhZCBvZiBkaXJlY3RseSB1c2luZworbXV0ZXhfW3VuXWxvY2soJnBtX211dGV4KS4gVGhhdCB3b3VsZCBwcmV2ZW50IGZyZWV6aW5nIGZhaWx1cmVzLgorCitWLiBNaXNjZWxsYW5lb3VzCisvc3lzL3Bvd2VyL3BtX2ZyZWV6ZV90aW1lb3V0IGNvbnRyb2xzIGhvdyBsb25nIGl0IHdpbGwgY29zdCBhdCBtb3N0IHRvIGZyZWV6ZQorYWxsIHVzZXIgc3BhY2UgcHJvY2Vzc2VzIG9yIGFsbCBmcmVlemFibGUga2VybmVsIHRocmVhZHMsIGluIHVuaXQgb2YgbWlsbGlzZWNvbmQuCitUaGUgZGVmYXVsdCB2YWx1ZSBpcyAyMDAwMCwgd2l0aCByYW5nZSBvZiB1bnNpZ25lZCBpbnRlZ2VyLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlci9pbnRlcmZhY2UudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci9pbnRlcmZhY2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxZjBmNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL2ludGVyZmFjZS50eHQKQEAgLTAsMCArMSw3NSBAQAorUG93ZXIgTWFuYWdlbWVudCBJbnRlcmZhY2UKKworCitUaGUgcG93ZXIgbWFuYWdlbWVudCBzdWJzeXN0ZW0gcHJvdmlkZXMgYSB1bmlmaWVkIHN5c2ZzIGludGVyZmFjZSB0byAKK3VzZXJzcGFjZSwgcmVnYXJkbGVzcyBvZiB3aGF0IGFyY2hpdGVjdHVyZSBvciBwbGF0Zm9ybSBvbmUgaXMKK3J1bm5pbmcuIFRoZSBpbnRlcmZhY2UgZXhpc3RzIGluIC9zeXMvcG93ZXIvIGRpcmVjdG9yeSAoYXNzdW1pbmcgc3lzZnMKK2lzIG1vdW50ZWQgYXQgL3N5cykuIAorCisvc3lzL3Bvd2VyL3N0YXRlIGNvbnRyb2xzIHN5c3RlbSBwb3dlciBzdGF0ZS4gUmVhZGluZyBmcm9tIHRoaXMgZmlsZQorcmV0dXJucyB3aGF0IHN0YXRlcyBhcmUgc3VwcG9ydGVkLCB3aGljaCBpcyBoYXJkLWNvZGVkIHRvICdmcmVlemUnLAorJ3N0YW5kYnknIChQb3dlci1PbiBTdXNwZW5kKSwgJ21lbScgKFN1c3BlbmQtdG8tUkFNKSwgYW5kICdkaXNrJworKFN1c3BlbmQtdG8tRGlzaykuIAorCitXcml0aW5nIHRvIHRoaXMgZmlsZSBvbmUgb2YgdGhvc2Ugc3RyaW5ncyBjYXVzZXMgdGhlIHN5c3RlbSB0bwordHJhbnNpdGlvbiBpbnRvIHRoYXQgc3RhdGUuIFBsZWFzZSBzZWUgdGhlIGZpbGUKK0RvY3VtZW50YXRpb24vcG93ZXIvc3RhdGVzLnR4dCBmb3IgYSBkZXNjcmlwdGlvbiBvZiBlYWNoIG9mIHRob3NlCitzdGF0ZXMuCisKKworL3N5cy9wb3dlci9kaXNrIGNvbnRyb2xzIHRoZSBvcGVyYXRpbmcgbW9kZSBvZiB0aGUgc3VzcGVuZC10by1kaXNrCittZWNoYW5pc20uIFN1c3BlbmQtdG8tZGlzayBjYW4gYmUgaGFuZGxlZCBpbiBzZXZlcmFsIHdheXMuIFdlIGhhdmUgYQorZmV3IG9wdGlvbnMgZm9yIHB1dHRpbmcgdGhlIHN5c3RlbSB0byBzbGVlcCAtIHVzaW5nIHRoZSBwbGF0Zm9ybSBkcml2ZXIKKyhlLmcuIEFDUEkgb3Igb3RoZXIgc3VzcGVuZF9vcHMpLCBwb3dlcmluZyBvZmYgdGhlIHN5c3RlbSBvciByZWJvb3RpbmcgdGhlCitzeXN0ZW0gKGZvciB0ZXN0aW5nKS4KKworQWRkaXRpb25hbGx5LCAvc3lzL3Bvd2VyL2Rpc2sgY2FuIGJlIHVzZWQgdG8gdHVybiBvbiBvbmUgb2YgdGhlIHR3byB0ZXN0aW5nCittb2RlcyBvZiB0aGUgc3VzcGVuZC10by1kaXNrIG1lY2hhbmlzbTogJ3Rlc3Rwcm9jJyBvciAndGVzdCcuICBJZiB0aGUKK3N1c3BlbmQtdG8tZGlzayBtZWNoYW5pc20gaXMgaW4gdGhlICd0ZXN0cHJvYycgbW9kZSwgd3JpdGluZyAnZGlzaycgdG8KKy9zeXMvcG93ZXIvc3RhdGUgd2lsbCBjYXVzZSB0aGUga2VybmVsIHRvIGRpc2FibGUgbm9uYm9vdCBDUFVzIGFuZCBmcmVlemUKK3Rhc2tzLCB3YWl0IGZvciA1IHNlY29uZHMsIHVuZnJlZXplIHRhc2tzIGFuZCBlbmFibGUgbm9uYm9vdCBDUFVzLiAgSWYgaXQgaXMKK2luIHRoZSAndGVzdCcgbW9kZSwgd3JpdGluZyAnZGlzaycgdG8gL3N5cy9wb3dlci9zdGF0ZSB3aWxsIGNhdXNlIHRoZSBrZXJuZWwKK3RvIGRpc2FibGUgbm9uYm9vdCBDUFVzIGFuZCBmcmVlemUgdGFza3MsIHNocmluayBtZW1vcnksIHN1c3BlbmQgZGV2aWNlcywgd2FpdAorZm9yIDUgc2Vjb25kcywgcmVzdW1lIGRldmljZXMsIHVuZnJlZXplIHRhc2tzIGFuZCBlbmFibGUgbm9uYm9vdCBDUFVzLiAgVGhlbiwKK3dlIGFyZSBhYmxlIHRvIGxvb2sgaW4gdGhlIGxvZyBtZXNzYWdlcyBhbmQgd29yayBvdXQsIGZvciBleGFtcGxlLCB3aGljaCBjb2RlCitpcyBiZWluZyBzbG93IGFuZCB3aGljaCBkZXZpY2UgZHJpdmVycyBhcmUgbWlzYmVoYXZpbmcuCisKK1JlYWRpbmcgZnJvbSB0aGlzIGZpbGUgd2lsbCBkaXNwbGF5IGFsbCBzdXBwb3J0ZWQgbW9kZXMgYW5kIHRoZSBjdXJyZW50bHkKK3NlbGVjdGVkIG9uZSBpbiBicmFja2V0cywgZm9yIGV4YW1wbGUKKworCVtzaHV0ZG93bl0gcmVib290IHRlc3QgdGVzdHByb2MKKworV3JpdGluZyB0byB0aGlzIGZpbGUgd2lsbCBhY2NlcHQgb25lIG9mCisKKyAgICAgICAncGxhdGZvcm0nIChvbmx5IGlmIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyBpdCkKKyAgICAgICAnc2h1dGRvd24nCisgICAgICAgJ3JlYm9vdCcKKyAgICAgICAndGVzdHByb2MnCisgICAgICAgJ3Rlc3QnCisKKy9zeXMvcG93ZXIvaW1hZ2Vfc2l6ZSBjb250cm9scyB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgY3JlYXRlZCBieQordGhlIHN1c3BlbmQtdG8tZGlzayBtZWNoYW5pc20uICBJdCBjYW4gYmUgd3JpdHRlbiBhIHN0cmluZworcmVwcmVzZW50aW5nIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgdGhhdCB3aWxsIGJlIHVzZWQgYXMgYW4gdXBwZXIKK2xpbWl0IG9mIHRoZSBpbWFnZSBzaXplLCBpbiBieXRlcy4gIFRoZSBzdXNwZW5kLXRvLWRpc2sgbWVjaGFuaXNtIHdpbGwKK2RvIGl0cyBiZXN0IHRvIGVuc3VyZSB0aGUgaW1hZ2Ugc2l6ZSB3aWxsIG5vdCBleGNlZWQgdGhhdCBudW1iZXIuICBIb3dldmVyLAoraWYgdGhpcyB0dXJucyBvdXQgdG8gYmUgaW1wb3NzaWJsZSwgaXQgd2lsbCB0cnkgdG8gc3VzcGVuZCBhbnl3YXkgdXNpbmcgdGhlCitzbWFsbGVzdCBpbWFnZSBwb3NzaWJsZS4gIEluIHBhcnRpY3VsYXIsIGlmICIwIiBpcyB3cml0dGVuIHRvIHRoaXMgZmlsZSwgdGhlCitzdXNwZW5kIGltYWdlIHdpbGwgYmUgYXMgc21hbGwgYXMgcG9zc2libGUuCisKK1JlYWRpbmcgZnJvbSB0aGlzIGZpbGUgd2lsbCBkaXNwbGF5IHRoZSBjdXJyZW50IGltYWdlIHNpemUgbGltaXQsIHdoaWNoCitpcyBzZXQgdG8gMi81IG9mIGF2YWlsYWJsZSBSQU0gYnkgZGVmYXVsdC4KKworL3N5cy9wb3dlci9wbV90cmFjZSBjb250cm9scyB0aGUgY29kZSB3aGljaCBzYXZlcyB0aGUgbGFzdCBQTSBldmVudCBwb2ludCBpbgordGhlIFJUQyBhY3Jvc3MgcmVib290cywgc28gdGhhdCB5b3UgY2FuIGRlYnVnIGEgbWFjaGluZSB0aGF0IGp1c3QgaGFuZ3MKK2R1cmluZyBzdXNwZW5kIChvciBtb3JlIGNvbW1vbmx5LCBkdXJpbmcgcmVzdW1lKS4gIE5hbWVseSwgdGhlIFJUQyBpcyBvbmx5Cit1c2VkIHRvIHNhdmUgdGhlIGxhc3QgUE0gZXZlbnQgcG9pbnQgaWYgdGhpcyBmaWxlIGNvbnRhaW5zICcxJy4gIEluaXRpYWxseSBpdAorY29udGFpbnMgJzAnIHdoaWNoIG1heSBiZSBjaGFuZ2VkIHRvICcxJyBieSB3cml0aW5nIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhCitub256ZXJvIGludGVnZXIgaW50byBpdC4KKworVG8gdXNlIHRoaXMgZGVidWdnaW5nIGZlYXR1cmUgeW91IHNob3VsZCBhdHRlbXB0IHRvIHN1c3BlbmQgdGhlIG1hY2hpbmUsIHRoZW4KK3JlYm9vdCBpdCBhbmQgcnVuCisKKwlkbWVzZyAtcyAxMDAwMDAwIHwgZ3JlcCAnaGFzaCBtYXRjaGVzJworCitDQVVUSU9OOiBVc2luZyBpdCB3aWxsIGNhdXNlIHlvdXIgbWFjaGluZSdzIHJlYWwtdGltZSAoQ01PUykgY2xvY2sgdG8gYmUKK3NldCB0byBhIHJhbmRvbSBpbnZhbGlkIHRpbWUgYWZ0ZXIgYSByZXN1bWUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL25vdGlmaWVycy50eHQgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL25vdGlmaWVycy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgxZmEyNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXIvbm90aWZpZXJzLnR4dApAQCAtMCwwICsxLDU1IEBACitTdXNwZW5kIG5vdGlmaWVycworCShDKSAyMDA3LTIwMTEgUmFmYWVsIEouIFd5c29ja2kgPHJqd0BzaXNrLnBsPiwgR1BMCisKK1RoZXJlIGFyZSBzb21lIG9wZXJhdGlvbnMgdGhhdCBzdWJzeXN0ZW1zIG9yIGRyaXZlcnMgbWF5IHdhbnQgdG8gY2Fycnkgb3V0CitiZWZvcmUgaGliZXJuYXRpb24vc3VzcGVuZCBvciBhZnRlciByZXN0b3JlL3Jlc3VtZSwgYnV0IHRoZXkgcmVxdWlyZSB0aGUgc3lzdGVtCit0byBiZSBmdWxseSBmdW5jdGlvbmFsLCBzbyB0aGUgZHJpdmVycycgYW5kIHN1YnN5c3RlbXMnIC5zdXNwZW5kKCkgYW5kIC5yZXN1bWUoKQorb3IgZXZlbiAucHJlcGFyZSgpIGFuZCAuY29tcGxldGUoKSBjYWxsYmFja3MgYXJlIG5vdCBzdWl0YWJsZSBmb3IgdGhpcyBwdXJwb3NlLgorRm9yIGV4YW1wbGUsIGRldmljZSBkcml2ZXJzIG1heSB3YW50IHRvIHVwbG9hZCBmaXJtd2FyZSB0byB0aGVpciBkZXZpY2VzIGFmdGVyCityZXN1bWUvcmVzdG9yZSwgYnV0IHRoZXkgY2Fubm90IGRvIGl0IGJ5IGNhbGxpbmcgcmVxdWVzdF9maXJtd2FyZSgpIGZyb20gdGhlaXIKKy5yZXN1bWUoKSBvciAuY29tcGxldGUoKSByb3V0aW5lcyAodXNlciBsYW5kIHByb2Nlc3NlcyBhcmUgZnJvemVuIGF0IHRoZXNlCitwb2ludHMpLiAgVGhlIHNvbHV0aW9uIG1heSBiZSB0byBsb2FkIHRoZSBmaXJtd2FyZSBpbnRvIG1lbW9yeSBiZWZvcmUgcHJvY2Vzc2VzCithcmUgZnJvemVuIGFuZCB1cGxvYWQgaXQgZnJvbSB0aGVyZSBpbiB0aGUgLnJlc3VtZSgpIHJvdXRpbmUuCitBIHN1c3BlbmQvaGliZXJuYXRpb24gbm90aWZpZXIgbWF5IGJlIHVzZWQgZm9yIHRoaXMgcHVycG9zZS4KKworVGhlIHN1YnN5c3RlbXMgb3IgZHJpdmVycyBoYXZpbmcgc3VjaCBuZWVkcyBjYW4gcmVnaXN0ZXIgc3VzcGVuZCBub3RpZmllcnMgdGhhdAord2lsbCBiZSBjYWxsZWQgdXBvbiB0aGUgZm9sbG93aW5nIGV2ZW50cyBieSB0aGUgUE0gY29yZToKKworUE1fSElCRVJOQVRJT05fUFJFUEFSRQlUaGUgc3lzdGVtIGlzIGdvaW5nIHRvIGhpYmVybmF0ZSwgdGFza3Mgd2lsbCBiZSBmcm96ZW4KKwkJCWltbWVkaWF0ZWx5LiBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIFBNX1NVU1BFTkRfUFJFUEFSRQorCQkJYmVsb3cgYmVjYXVzZSBoZXJlIHdlIGRvIGFkZGl0aW9uYWwgd29yayBiZXR3ZWVuIG5vdGlmaWVycworCQkJYW5kIGRyaXZlcnMgZnJlZXppbmcuCisKK1BNX1BPU1RfSElCRVJOQVRJT04JVGhlIHN5c3RlbSBtZW1vcnkgc3RhdGUgaGFzIGJlZW4gcmVzdG9yZWQgZnJvbSBhCisJCQloaWJlcm5hdGlvbiBpbWFnZSBvciBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcKKwkJCWhpYmVybmF0aW9uLiAgRGV2aWNlIGRyaXZlcnMnIHJlc3RvcmUgY2FsbGJhY2tzIGhhdmUKKwkJCWJlZW4gZXhlY3V0ZWQgYW5kIHRhc2tzIGhhdmUgYmVlbiB0aGF3ZWQuCisKK1BNX1JFU1RPUkVfUFJFUEFSRQlUaGUgc3lzdGVtIGlzIGdvaW5nIHRvIHJlc3RvcmUgYSBoaWJlcm5hdGlvbiBpbWFnZS4KKwkJCUlmIGFsbCBnb2VzIHdlbGwsIHRoZSByZXN0b3JlZCBrZXJuZWwgd2lsbCBpc3N1ZSBhCisJCQlQTV9QT1NUX0hJQkVSTkFUSU9OIG5vdGlmaWNhdGlvbi4KKworUE1fUE9TVF9SRVNUT1JFCQlBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcmVzdG9yZSBmcm9tIGhpYmVybmF0aW9uLgorCQkJRGV2aWNlIGRyaXZlcnMnIHJlc3RvcmUgY2FsbGJhY2tzIGhhdmUgYmVlbiBleGVjdXRlZAorCQkJYW5kIHRhc2tzIGhhdmUgYmVlbiB0aGF3ZWQuCisKK1BNX1NVU1BFTkRfUFJFUEFSRQlUaGUgc3lzdGVtIGlzIHByZXBhcmluZyBmb3Igc3VzcGVuZC4KKworUE1fUE9TVF9TVVNQRU5ECQlUaGUgc3lzdGVtIGhhcyBqdXN0IHJlc3VtZWQgb3IgYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nCisJCQlzdXNwZW5kLiAgRGV2aWNlIGRyaXZlcnMnIHJlc3VtZSBjYWxsYmFja3MgaGF2ZSBiZWVuCisJCQlleGVjdXRlZCBhbmQgdGFza3MgaGF2ZSBiZWVuIHRoYXdlZC4KKworSXQgaXMgZ2VuZXJhbGx5IGFzc3VtZWQgdGhhdCB3aGF0ZXZlciB0aGUgbm90aWZpZXJzIGRvIGZvcgorUE1fSElCRVJOQVRJT05fUFJFUEFSRSwgc2hvdWxkIGJlIHVuZG9uZSBmb3IgUE1fUE9TVF9ISUJFUk5BVElPTi4gIEFuYWxvZ291c2x5LAorb3BlcmF0aW9ucyBwZXJmb3JtZWQgZm9yIFBNX1NVU1BFTkRfUFJFUEFSRSBzaG91bGQgYmUgcmV2ZXJzZWQgZm9yCitQTV9QT1NUX1NVU1BFTkQuICBBZGRpdGlvbmFsbHksIGFsbCBvZiB0aGUgbm90aWZpZXJzIGFyZSBjYWxsZWQgZm9yCitQTV9QT1NUX0hJQkVSTkFUSU9OIGlmIG9uZSBvZiB0aGVtIGZhaWxzIGZvciBQTV9ISUJFUk5BVElPTl9QUkVQQVJFLCBhbmQKK2FsbCBvZiB0aGUgbm90aWZpZXJzIGFyZSBjYWxsZWQgZm9yIFBNX1BPU1RfU1VTUEVORCBpZiBvbmUgb2YgdGhlbSBmYWlscyBmb3IKK1BNX1NVU1BFTkRfUFJFUEFSRS4KKworVGhlIGhpYmVybmF0aW9uIGFuZCBzdXNwZW5kIG5vdGlmaWVycyBhcmUgY2FsbGVkIHdpdGggcG1fbXV0ZXggaGVsZC4gIFRoZXkgYXJlCitkZWZpbmVkIGluIHRoZSB1c3VhbCB3YXksIGJ1dCB0aGVpciBsYXN0IGFyZ3VtZW50IGlzIG1lYW5pbmdsZXNzIChpdCBpcyBhbHdheXMKK05VTEwpLiAgVG8gcmVnaXN0ZXIgYW5kL29yIHVucmVnaXN0ZXIgYSBzdXNwZW5kIG5vdGlmaWVyIHVzZSB0aGUgZnVuY3Rpb25zCityZWdpc3Rlcl9wbV9ub3RpZmllcigpIGFuZCB1bnJlZ2lzdGVyX3BtX25vdGlmaWVyKCksIHJlc3BlY3RpdmVseSwgZGVmaW5lZCBpbgoraW5jbHVkZS9saW51eC9zdXNwZW5kLmggLiAgSWYgeW91IGRvbid0IG5lZWQgdG8gdW5yZWdpc3RlciB0aGUgbm90aWZpZXIsIHlvdSBjYW4KK2Fsc28gdXNlIHRoZSBwbV9ub3RpZmllcigpIG1hY3JvIGRlZmluZWQgaW4gaW5jbHVkZS9saW51eC9zdXNwZW5kLmggLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlci9vcHAudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci9vcHAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2Mjc5YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL29wcC50eHQKQEAgLTAsMCArMSwzNjIgQEAKK09wZXJhdGluZyBQZXJmb3JtYW5jZSBQb2ludHMgKE9QUCkgTGlicmFyeQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyhDKSAyMDA5LTIwMTAgTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4sIFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZAorCitDb250ZW50cworLS0tLS0tLS0KKzEuIEludHJvZHVjdGlvbgorMi4gSW5pdGlhbCBPUFAgTGlzdCBSZWdpc3RyYXRpb24KKzMuIE9QUCBTZWFyY2ggRnVuY3Rpb25zCis0LiBPUFAgQXZhaWxhYmlsaXR5IENvbnRyb2wgRnVuY3Rpb25zCis1LiBPUFAgRGF0YSBSZXRyaWV2YWwgRnVuY3Rpb25zCis2LiBEYXRhIFN0cnVjdHVyZXMKKworMS4gSW50cm9kdWN0aW9uCis9PT09PT09PT09PT09PT0KKzEuMSBXaGF0IGlzIGFuIE9wZXJhdGluZyBQZXJmb3JtYW5jZSBQb2ludCAoT1BQKT8KKworQ29tcGxleCBTb0NzIG9mIHRvZGF5IGNvbnNpc3RzIG9mIGEgbXVsdGlwbGUgc3ViLW1vZHVsZXMgd29ya2luZyBpbiBjb25qdW5jdGlvbi4KK0luIGFuIG9wZXJhdGlvbmFsIHN5c3RlbSBleGVjdXRpbmcgdmFyaWVkIHVzZSBjYXNlcywgbm90IGFsbCBtb2R1bGVzIGluIHRoZSBTb0MKK25lZWQgdG8gZnVuY3Rpb24gYXQgdGhlaXIgaGlnaGVzdCBwZXJmb3JtaW5nIGZyZXF1ZW5jeSBhbGwgdGhlIHRpbWUuIFRvCitmYWNpbGl0YXRlIHRoaXMsIHN1Yi1tb2R1bGVzIGluIGEgU29DIGFyZSBncm91cGVkIGludG8gZG9tYWlucywgYWxsb3dpbmcgc29tZQorZG9tYWlucyB0byBydW4gYXQgbG93ZXIgdm9sdGFnZSBhbmQgZnJlcXVlbmN5IHdoaWxlIG90aGVyIGRvbWFpbnMgcnVuIGF0Cit2b2x0YWdlL2ZyZXF1ZW5jeSBwYWlycyB0aGF0IGFyZSBoaWdoZXIuCisKK1RoZSBzZXQgb2YgZGlzY3JldGUgdHVwbGVzIGNvbnNpc3Rpbmcgb2YgZnJlcXVlbmN5IGFuZCB2b2x0YWdlIHBhaXJzIHRoYXQKK3RoZSBkZXZpY2Ugd2lsbCBzdXBwb3J0IHBlciBkb21haW4gYXJlIGNhbGxlZCBPcGVyYXRpbmcgUGVyZm9ybWFuY2UgUG9pbnRzIG9yCitPUFBzLgorCitBcyBhbiBleGFtcGxlOgorTGV0IHVzIGNvbnNpZGVyIGFuIE1QVSBkZXZpY2Ugd2hpY2ggc3VwcG9ydHMgdGhlIGZvbGxvd2luZzoKK3szMDBNSHogYXQgbWluaW11bSB2b2x0YWdlIG9mIDFWfSwgezgwME1IeiBhdCBtaW5pbXVtIHZvbHRhZ2Ugb2YgMS4yVn0sCit7MUdIeiBhdCBtaW5pbXVtIHZvbHRhZ2Ugb2YgMS4zVn0KKworV2UgY2FuIHJlcHJlc2VudCB0aGVzZSBhcyB0aHJlZSBPUFBzIGFzIHRoZSBmb2xsb3dpbmcge0h6LCB1Vn0gdHVwbGVzOgorezMwMDAwMDAwMCwgMTAwMDAwMH0KK3s4MDAwMDAwMDAsIDEyMDAwMDB9Cit7MTAwMDAwMDAwMCwgMTMwMDAwMH0KKworMS4yIE9wZXJhdGluZyBQZXJmb3JtYW5jZSBQb2ludHMgTGlicmFyeQorCitPUFAgbGlicmFyeSBwcm92aWRlcyBhIHNldCBvZiBoZWxwZXIgZnVuY3Rpb25zIHRvIG9yZ2FuaXplIGFuZCBxdWVyeSB0aGUgT1BQCitpbmZvcm1hdGlvbi4gVGhlIGxpYnJhcnkgaXMgbG9jYXRlZCBpbiBkcml2ZXJzL2Jhc2UvcG93ZXIvb3BwLmMgYW5kIHRoZSBoZWFkZXIKK2lzIGxvY2F0ZWQgaW4gaW5jbHVkZS9saW51eC9wbV9vcHAuaC4gT1BQIGxpYnJhcnkgY2FuIGJlIGVuYWJsZWQgYnkgZW5hYmxpbmcKK0NPTkZJR19QTV9PUFAgZnJvbSBwb3dlciBtYW5hZ2VtZW50IG1lbnVjb25maWcgbWVudS4gT1BQIGxpYnJhcnkgZGVwZW5kcyBvbgorQ09ORklHX1BNIGFzIGNlcnRhaW4gU29DcyBzdWNoIGFzIFRleGFzIEluc3RydW1lbnQncyBPTUFQIGZyYW1ld29yayBhbGxvd3MgdG8KK29wdGlvbmFsbHkgYm9vdCBhdCBhIGNlcnRhaW4gT1BQIHdpdGhvdXQgbmVlZGluZyBjcHVmcmVxLgorCitUeXBpY2FsIHVzYWdlIG9mIHRoZSBPUFAgbGlicmFyeSBpcyBhcyBmb2xsb3dzOgorKHVzZXJzKQkJLT4gcmVnaXN0ZXJzIGEgc2V0IG9mIGRlZmF1bHQgT1BQcwkJLT4gKGxpYnJhcnkpCitTb0MgZnJhbWV3b3JrCS0+IG1vZGlmaWVzIG9uIHJlcXVpcmVkIGNhc2VzIGNlcnRhaW4gT1BQcwktPiBPUFAgbGF5ZXIKKwkJLT4gcXVlcmllcyB0byBzZWFyY2gvcmV0cmlldmUgaW5mb3JtYXRpb24JLT4KKworT1BQIGxheWVyIGV4cGVjdHMgZWFjaCBkb21haW4gdG8gYmUgcmVwcmVzZW50ZWQgYnkgYSB1bmlxdWUgZGV2aWNlIHBvaW50ZXIuIFNvQworZnJhbWV3b3JrIHJlZ2lzdGVycyBhIHNldCBvZiBpbml0aWFsIE9QUHMgcGVyIGRldmljZSB3aXRoIHRoZSBPUFAgbGF5ZXIuIFRoaXMKK2xpc3QgaXMgZXhwZWN0ZWQgdG8gYmUgYW4gb3B0aW1hbGx5IHNtYWxsIG51bWJlciB0eXBpY2FsbHkgYXJvdW5kIDUgcGVyIGRldmljZS4KK1RoaXMgaW5pdGlhbCBsaXN0IGNvbnRhaW5zIGEgc2V0IG9mIE9QUHMgdGhhdCB0aGUgZnJhbWV3b3JrIGV4cGVjdHMgdG8gYmUgc2FmZWx5CitlbmFibGVkIGJ5IGRlZmF1bHQgaW4gdGhlIHN5c3RlbS4KKworTm90ZSBvbiBPUFAgQXZhaWxhYmlsaXR5OgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBcyB0aGUgc3lzdGVtIHByb2NlZWRzIHRvIG9wZXJhdGUsIFNvQyBmcmFtZXdvcmsgbWF5IGNob29zZSB0byBtYWtlIGNlcnRhaW4KK09QUHMgYXZhaWxhYmxlIG9yIG5vdCBhdmFpbGFibGUgb24gZWFjaCBkZXZpY2UgYmFzZWQgb24gdmFyaW91cyBleHRlcm5hbAorZmFjdG9ycy4gRXhhbXBsZSB1c2FnZTogVGhlcm1hbCBtYW5hZ2VtZW50IG9yIG90aGVyIGV4Y2VwdGlvbmFsIHNpdHVhdGlvbnMgd2hlcmUKK1NvQyBmcmFtZXdvcmsgbWlnaHQgY2hvb3NlIHRvIGRpc2FibGUgYSBoaWdoZXIgZnJlcXVlbmN5IE9QUCB0byBzYWZlbHkgY29udGludWUKK29wZXJhdGlvbnMgdW50aWwgdGhhdCBPUFAgY291bGQgYmUgcmUtZW5hYmxlZCBpZiBwb3NzaWJsZS4KKworT1BQIGxpYnJhcnkgZmFjaWxpdGF0ZXMgdGhpcyBjb25jZXB0IGluIGl0J3MgaW1wbGVtZW50YXRpb24uIFRoZSBmb2xsb3dpbmcKK29wZXJhdGlvbmFsIGZ1bmN0aW9ucyBvcGVyYXRlIG9ubHkgb24gYXZhaWxhYmxlIG9wcHM6CitvcHBfZmluZF9mcmVxX3tjZWlsLCBmbG9vcn0sIGRldl9wbV9vcHBfZ2V0X3ZvbHRhZ2UsIGRldl9wbV9vcHBfZ2V0X2ZyZXEsIGRldl9wbV9vcHBfZ2V0X29wcF9jb3VudAorCitkZXZfcG1fb3BwX2ZpbmRfZnJlcV9leGFjdCBpcyBtZWFudCB0byBiZSB1c2VkIHRvIGZpbmQgdGhlIG9wcCBwb2ludGVyIHdoaWNoIGNhbiB0aGVuCitiZSB1c2VkIGZvciBkZXZfcG1fb3BwX2VuYWJsZS9kaXNhYmxlIGZ1bmN0aW9ucyB0byBtYWtlIGFuIG9wcCBhdmFpbGFibGUgYXMgcmVxdWlyZWQuCisKK1dBUk5JTkc6IFVzZXJzIG9mIE9QUCBsaWJyYXJ5IHNob3VsZCByZWZyZXNoIHRoZWlyIGF2YWlsYWJpbGl0eSBjb3VudCB1c2luZworZ2V0X29wcF9jb3VudCBpZiBkZXZfcG1fb3BwX2VuYWJsZS9kaXNhYmxlIGZ1bmN0aW9ucyBhcmUgaW52b2tlZCBmb3IgYSBkZXZpY2UsIHRoZQorZXhhY3QgbWVjaGFuaXNtIHRvIHRyaWdnZXIgdGhlc2Ugb3IgdGhlIG5vdGlmaWNhdGlvbiBtZWNoYW5pc20gdG8gb3RoZXIKK2RlcGVuZGVudCBzdWJzeXN0ZW1zIHN1Y2ggYXMgY3B1ZnJlcSBhcmUgbGVmdCB0byB0aGUgZGlzY3JldGlvbiBvZiB0aGUgU29DCitzcGVjaWZpYyBmcmFtZXdvcmsgd2hpY2ggdXNlcyB0aGUgT1BQIGxpYnJhcnkuIFNpbWlsYXIgY2FyZSBuZWVkcyB0byBiZSB0YWtlbgorY2FyZSB0byByZWZyZXNoIHRoZSBjcHVmcmVxIHRhYmxlIGluIGNhc2VzIG9mIHRoZXNlIG9wZXJhdGlvbnMuCisKK1dBUk5JTkcgb24gT1BQIExpc3QgbG9ja2luZyBtZWNoYW5pc206CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitPUFAgbGlicmFyeSB1c2VzIFJDVSBmb3IgZXhjbHVzaXZpdHkuIFJDVSBhbGxvd3MgdGhlIHF1ZXJ5IGZ1bmN0aW9ucyB0byBvcGVyYXRlCitpbiBtdWx0aXBsZSBjb250ZXh0cyBhbmQgdGhpcyBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtIGlzIG9wdGltYWwgZm9yIGEgcmVhZAoraW50ZW5zaXZlIG9wZXJhdGlvbnMgb24gZGF0YSBzdHJ1Y3R1cmUgYXMgdGhlIE9QUCBsaWJyYXJ5IGNhdGVycyB0by4KKworVG8gZW5zdXJlIHRoYXQgdGhlIGRhdGEgcmV0cmlldmVkIGFyZSBzYW5lLCB0aGUgdXNlcnMgc3VjaCBhcyBTb0MgZnJhbWV3b3JrCitzaG91bGQgZW5zdXJlIHRoYXQgdGhlIHNlY3Rpb24gb2YgY29kZSBvcGVyYXRpbmcgb24gT1BQIHF1ZXJpZXMgYXJlIGxvY2tlZAordXNpbmcgUkNVIHJlYWQgbG9ja3MuIFRoZSBvcHBfZmluZF9mcmVxX3tleGFjdCxjZWlsLGZsb29yfSwKK29wcF9nZXRfe3ZvbHRhZ2UsIGZyZXEsIG9wcF9jb3VudH0gZmFsbCBpbnRvIHRoaXMgY2F0ZWdvcnkuCisKK29wcF97YWRkLGVuYWJsZSxkaXNhYmxlfSBhcmUgdXBkYXRlcnMgd2hpY2ggdXNlIG11dGV4IGFuZCBpbXBsZW1lbnQgaXQncyBvd24KK1JDVSBsb2NraW5nIG1lY2hhbmlzbXMuIFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgKk5PVCogYmUgY2FsbGVkIHVuZGVyIFJDVSBsb2NrcworYW5kIG90aGVyIGNvbnRleHRzIHRoYXQgcHJldmVudCBibG9ja2luZyBmdW5jdGlvbnMgaW4gUkNVIG9yIG11dGV4IG9wZXJhdGlvbnMKK2Zyb20gd29ya2luZy4KKworMi4gSW5pdGlhbCBPUFAgTGlzdCBSZWdpc3RyYXRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitUaGUgU29DIGltcGxlbWVudGF0aW9uIGNhbGxzIGRldl9wbV9vcHBfYWRkIGZ1bmN0aW9uIGl0ZXJhdGl2ZWx5IHRvIGFkZCBPUFBzIHBlcgorZGV2aWNlLiBJdCBpcyBleHBlY3RlZCB0aGF0IHRoZSBTb0MgZnJhbWV3b3JrIHdpbGwgcmVnaXN0ZXIgdGhlIE9QUCBlbnRyaWVzCitvcHRpbWFsbHktIHR5cGljYWwgbnVtYmVycyByYW5nZSB0byBiZSBsZXNzIHRoYW4gNS4gVGhlIGxpc3QgZ2VuZXJhdGVkIGJ5CityZWdpc3RlcmluZyB0aGUgT1BQcyBpcyBtYWludGFpbmVkIGJ5IE9QUCBsaWJyYXJ5IHRocm91Z2hvdXQgdGhlIGRldmljZQorb3BlcmF0aW9uLiBUaGUgU29DIGZyYW1ld29yayBjYW4gc3Vic2VxdWVudGx5IGNvbnRyb2wgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGUKK09QUHMgZHluYW1pY2FsbHkgdXNpbmcgdGhlIGRldl9wbV9vcHBfZW5hYmxlIC8gZGlzYWJsZSBmdW5jdGlvbnMuCisKK2Rldl9wbV9vcHBfYWRkIC0gQWRkIGEgbmV3IE9QUCBmb3IgYSBzcGVjaWZpYyBkb21haW4gcmVwcmVzZW50ZWQgYnkgdGhlIGRldmljZSBwb2ludGVyLgorCVRoZSBPUFAgaXMgZGVmaW5lZCB1c2luZyB0aGUgZnJlcXVlbmN5IGFuZCB2b2x0YWdlLiBPbmNlIGFkZGVkLCB0aGUgT1BQCisJaXMgYXNzdW1lZCB0byBiZSBhdmFpbGFibGUgYW5kIGNvbnRyb2wgb2YgaXQncyBhdmFpbGFiaWxpdHkgY2FuIGJlIGRvbmUKKwl3aXRoIHRoZSBkZXZfcG1fb3BwX2VuYWJsZS9kaXNhYmxlIGZ1bmN0aW9ucy4gT1BQIGxpYnJhcnkgaW50ZXJuYWxseSBzdG9yZXMKKwlhbmQgbWFuYWdlcyB0aGlzIGluZm9ybWF0aW9uIGluIHRoZSBvcHAgc3RydWN0LiBUaGlzIGZ1bmN0aW9uIG1heSBiZQorCXVzZWQgYnkgU29DIGZyYW1ld29yayB0byBkZWZpbmUgYSBvcHRpbWFsIGxpc3QgYXMgcGVyIHRoZSBkZW1hbmRzIG9mCisJU29DIHVzYWdlIGVudmlyb25tZW50LgorCisJV0FSTklORzogRG8gbm90IHVzZSB0aGlzIGZ1bmN0aW9uIGluIGludGVycnVwdCBjb250ZXh0LgorCisJRXhhbXBsZToKKwkgc29jX3BtX2luaXQoKQorCSB7CisJCS8qIERvIHRoaW5ncyAqLworCQlyID0gZGV2X3BtX29wcF9hZGQobXB1X2RldiwgMTAwMDAwMCwgOTAwMDAwKTsKKwkJaWYgKCFyKSB7CisJCQlwcl9lcnIoIiVzOiB1bmFibGUgdG8gcmVnaXN0ZXIgbXB1IG9wcCglZClcbiIsIHIpOworCQkJZ290byBub19jcHVmcmVxOworCQl9CisJCS8qIERvIGNwdWZyZXEgdGhpbmdzICovCisJIG5vX2NwdWZyZXE6CisJCS8qIERvIHJlbWFpbmluZyB0aGluZ3MgKi8KKwkgfQorCiszLiBPUFAgU2VhcmNoIEZ1bmN0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT0KK0hpZ2ggbGV2ZWwgZnJhbWV3b3JrIHN1Y2ggYXMgY3B1ZnJlcSBvcGVyYXRlcyBvbiBmcmVxdWVuY2llcy4gVG8gbWFwIHRoZQorZnJlcXVlbmN5IGJhY2sgdG8gdGhlIGNvcnJlc3BvbmRpbmcgT1BQLCBPUFAgbGlicmFyeSBwcm92aWRlcyBoYW5keSBmdW5jdGlvbnMKK3RvIHNlYXJjaCB0aGUgT1BQIGxpc3QgdGhhdCBPUFAgbGlicmFyeSBpbnRlcm5hbGx5IG1hbmFnZXMuIFRoZXNlIHNlYXJjaAorZnVuY3Rpb25zIHJldHVybiB0aGUgbWF0Y2hpbmcgcG9pbnRlciByZXByZXNlbnRpbmcgdGhlIG9wcCBpZiBhIG1hdGNoIGlzCitmb3VuZCwgZWxzZSByZXR1cm5zIGVycm9yLiBUaGVzZSBlcnJvcnMgYXJlIGV4cGVjdGVkIHRvIGJlIGhhbmRsZWQgYnkgc3RhbmRhcmQKK2Vycm9yIGNoZWNrcyBzdWNoIGFzIElTX0VSUigpIGFuZCBhcHByb3ByaWF0ZSBhY3Rpb25zIHRha2VuIGJ5IHRoZSBjYWxsZXIuCisKK2Rldl9wbV9vcHBfZmluZF9mcmVxX2V4YWN0IC0gU2VhcmNoIGZvciBhbiBPUFAgYmFzZWQgb24gYW4gKmV4YWN0KiBmcmVxdWVuY3kgYW5kCisJYXZhaWxhYmlsaXR5LiBUaGlzIGZ1bmN0aW9uIGlzIGVzcGVjaWFsbHkgdXNlZnVsIHRvIGVuYWJsZSBhbiBPUFAgd2hpY2gKKwlpcyBub3QgYXZhaWxhYmxlIGJ5IGRlZmF1bHQuCisJRXhhbXBsZTogSW4gYSBjYXNlIHdoZW4gU29DIGZyYW1ld29yayBkZXRlY3RzIGEgc2l0dWF0aW9uIHdoZXJlIGEKKwloaWdoZXIgZnJlcXVlbmN5IGNvdWxkIGJlIG1hZGUgYXZhaWxhYmxlLCBpdCBjYW4gdXNlIHRoaXMgZnVuY3Rpb24gdG8KKwlmaW5kIHRoZSBPUFAgcHJpb3IgdG8gY2FsbCB0aGUgZGV2X3BtX29wcF9lbmFibGUgdG8gYWN0dWFsbHkgbWFrZSBpdCBhdmFpbGFibGUuCisJIHJjdV9yZWFkX2xvY2soKTsKKwkgb3BwID0gZGV2X3BtX29wcF9maW5kX2ZyZXFfZXhhY3QoZGV2LCAxMDAwMDAwMDAwLCBmYWxzZSk7CisJIHJjdV9yZWFkX3VubG9jaygpOworCSAvKiBkb250IG9wZXJhdGUgb24gdGhlIHBvaW50ZXIuLiBqdXN0IGRvIGEgc2FuaXR5IGNoZWNrLi4gKi8KKwkgaWYgKElTX0VSUihvcHApKSB7CisJCXByX2VycigiZnJlcXVlbmN5IG5vdCBkaXNhYmxlZCFcbiIpOworCQkvKiB0cmlnZ2VyIGFwcHJvcHJpYXRlIGFjdGlvbnMuLiAqLworCSB9IGVsc2UgeworCQlkZXZfcG1fb3BwX2VuYWJsZShkZXYsMTAwMDAwMDAwMCk7CisJIH0KKworCU5PVEU6IFRoaXMgaXMgdGhlIG9ubHkgc2VhcmNoIGZ1bmN0aW9uIHRoYXQgb3BlcmF0ZXMgb24gT1BQcyB3aGljaCBhcmUKKwlub3QgYXZhaWxhYmxlLgorCitkZXZfcG1fb3BwX2ZpbmRfZnJlcV9mbG9vciAtIFNlYXJjaCBmb3IgYW4gYXZhaWxhYmxlIE9QUCB3aGljaCBpcyAqYXQgbW9zdCogdGhlCisJcHJvdmlkZWQgZnJlcXVlbmN5LiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB3aGlsZSBzZWFyY2hpbmcgZm9yIGEgbGVzc2VyCisJbWF0Y2ggT1Igb3BlcmF0aW5nIG9uIE9QUCBpbmZvcm1hdGlvbiBpbiB0aGUgb3JkZXIgb2YgZGVjcmVhc2luZworCWZyZXF1ZW5jeS4KKwlFeGFtcGxlOiBUbyBmaW5kIHRoZSBoaWdoZXN0IG9wcCBmb3IgYSBkZXZpY2U6CisJIGZyZXEgPSBVTE9OR19NQVg7CisJIHJjdV9yZWFkX2xvY2soKTsKKwkgZGV2X3BtX29wcF9maW5kX2ZyZXFfZmxvb3IoZGV2LCAmZnJlcSk7CisJIHJjdV9yZWFkX3VubG9jaygpOworCitkZXZfcG1fb3BwX2ZpbmRfZnJlcV9jZWlsIC0gU2VhcmNoIGZvciBhbiBhdmFpbGFibGUgT1BQIHdoaWNoIGlzICphdCBsZWFzdCogdGhlCisJcHJvdmlkZWQgZnJlcXVlbmN5LiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB3aGlsZSBzZWFyY2hpbmcgZm9yIGEKKwloaWdoZXIgbWF0Y2ggT1Igb3BlcmF0aW5nIG9uIE9QUCBpbmZvcm1hdGlvbiBpbiB0aGUgb3JkZXIgb2YgaW5jcmVhc2luZworCWZyZXF1ZW5jeS4KKwlFeGFtcGxlIDE6IFRvIGZpbmQgdGhlIGxvd2VzdCBvcHAgZm9yIGEgZGV2aWNlOgorCSBmcmVxID0gMDsKKwkgcmN1X3JlYWRfbG9jaygpOworCSBkZXZfcG1fb3BwX2ZpbmRfZnJlcV9jZWlsKGRldiwgJmZyZXEpOworCSByY3VfcmVhZF91bmxvY2soKTsKKwlFeGFtcGxlIDI6IEEgc2ltcGxpZmllZCBpbXBsZW1lbnRhdGlvbiBvZiBhIFNvQyBjcHVmcmVxX2RyaXZlci0+dGFyZ2V0OgorCSBzb2NfY3B1ZnJlcV90YXJnZXQoLi4pCisJIHsKKwkJLyogRG8gc3R1ZmYgbGlrZSBwb2xpY3kgY2hlY2tzIGV0Yy4gKi8KKwkJLyogRmluZCB0aGUgYmVzdCBmcmVxdWVuY3kgbWF0Y2ggZm9yIHRoZSByZXEgKi8KKwkJcmN1X3JlYWRfbG9jaygpOworCQlvcHAgPSBkZXZfcG1fb3BwX2ZpbmRfZnJlcV9jZWlsKGRldiwgJmZyZXEpOworCQlyY3VfcmVhZF91bmxvY2soKTsKKwkJaWYgKCFJU19FUlIob3BwKSkKKwkJCXNvY19zd2l0Y2hfdG9fZnJlcV92b2x0YWdlKGZyZXEpOworCQllbHNlCisJCQkvKiBkbyBzb21ldGhpbmcgd2hlbiB3ZSBjYW4ndCBzYXRpc2Z5IHRoZSByZXEgKi8KKwkJLyogZG8gb3RoZXIgc3R1ZmYgKi8KKwkgfQorCis0LiBPUFAgQXZhaWxhYmlsaXR5IENvbnRyb2wgRnVuY3Rpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitBIGRlZmF1bHQgT1BQIGxpc3QgcmVnaXN0ZXJlZCB3aXRoIHRoZSBPUFAgbGlicmFyeSBtYXkgbm90IGNhdGVyIHRvIGFsbCBwb3NzaWJsZQorc2l0dWF0aW9uLiBUaGUgT1BQIGxpYnJhcnkgcHJvdmlkZXMgYSBzZXQgb2YgZnVuY3Rpb25zIHRvIG1vZGlmeSB0aGUKK2F2YWlsYWJpbGl0eSBvZiBhIE9QUCB3aXRoaW4gdGhlIE9QUCBsaXN0LiBUaGlzIGFsbG93cyBTb0MgZnJhbWV3b3JrcyB0byBoYXZlCitmaW5lIGdyYWluZWQgZHluYW1pYyBjb250cm9sIG9mIHdoaWNoIHNldHMgb2YgT1BQcyBhcmUgb3BlcmF0aW9uYWxseSBhdmFpbGFibGUuCitUaGVzZSBmdW5jdGlvbnMgYXJlIGludGVuZGVkIHRvICp0ZW1wb3JhcmlseSogcmVtb3ZlIGFuIE9QUCBpbiBjb25kaXRpb25zIHN1Y2gKK2FzIHRoZXJtYWwgY29uc2lkZXJhdGlvbnMgKGUuZy4gZG9uJ3QgdXNlIE9QUHggdW50aWwgdGhlIHRlbXBlcmF0dXJlIGRyb3BzKS4KKworV0FSTklORzogRG8gbm90IHVzZSB0aGVzZSBmdW5jdGlvbnMgaW4gaW50ZXJydXB0IGNvbnRleHQuCisKK2Rldl9wbV9vcHBfZW5hYmxlIC0gTWFrZSBhIE9QUCBhdmFpbGFibGUgZm9yIG9wZXJhdGlvbi4KKwlFeGFtcGxlOiBMZXRzIHNheSB0aGF0IDFHSHogT1BQIGlzIHRvIGJlIG1hZGUgYXZhaWxhYmxlIG9ubHkgaWYgdGhlCisJU29DIHRlbXBlcmF0dXJlIGlzIGxvd2VyIHRoYW4gYSBjZXJ0YWluIHRocmVzaG9sZC4gVGhlIFNvQyBmcmFtZXdvcmsKKwlpbXBsZW1lbnRhdGlvbiBtaWdodCBjaG9vc2UgdG8gZG8gc29tZXRoaW5nIGFzIGZvbGxvd3M6CisJIGlmIChjdXJfdGVtcCA8IHRlbXBfbG93X3RocmVzaCkgeworCQkvKiBFbmFibGUgMUdIeiBpZiBpdCB3YXMgZGlzYWJsZWQgKi8KKwkJcmN1X3JlYWRfbG9jaygpOworCQlvcHAgPSBkZXZfcG1fb3BwX2ZpbmRfZnJlcV9leGFjdChkZXYsIDEwMDAwMDAwMDAsIGZhbHNlKTsKKwkJcmN1X3JlYWRfdW5sb2NrKCk7CisJCS8qIGp1c3QgZXJyb3IgY2hlY2sgKi8KKwkJaWYgKCFJU19FUlIob3BwKSkKKwkJCXJldCA9IGRldl9wbV9vcHBfZW5hYmxlKGRldiwgMTAwMDAwMDAwMCk7CisJCWVsc2UKKwkJCWdvdG8gdHJ5X3NvbWV0aGluZ19lbHNlOworCSB9CisKK2Rldl9wbV9vcHBfZGlzYWJsZSAtIE1ha2UgYW4gT1BQIHRvIGJlIG5vdCBhdmFpbGFibGUgZm9yIG9wZXJhdGlvbgorCUV4YW1wbGU6IExldHMgc2F5IHRoYXQgMUdIeiBPUFAgaXMgdG8gYmUgZGlzYWJsZWQgaWYgdGhlIHRlbXBlcmF0dXJlCisJZXhjZWVkcyBhIHRocmVzaG9sZCB2YWx1ZS4gVGhlIFNvQyBmcmFtZXdvcmsgaW1wbGVtZW50YXRpb24gbWlnaHQKKwljaG9vc2UgdG8gZG8gc29tZXRoaW5nIGFzIGZvbGxvd3M6CisJIGlmIChjdXJfdGVtcCA+IHRlbXBfaGlnaF90aHJlc2gpIHsKKwkJLyogRGlzYWJsZSAxR0h6IGlmIGl0IHdhcyBlbmFibGVkICovCisJCXJjdV9yZWFkX2xvY2soKTsKKwkJb3BwID0gZGV2X3BtX29wcF9maW5kX2ZyZXFfZXhhY3QoZGV2LCAxMDAwMDAwMDAwLCB0cnVlKTsKKwkJcmN1X3JlYWRfdW5sb2NrKCk7CisJCS8qIGp1c3QgZXJyb3IgY2hlY2sgKi8KKwkJaWYgKCFJU19FUlIob3BwKSkKKwkJCXJldCA9IGRldl9wbV9vcHBfZGlzYWJsZShkZXYsIDEwMDAwMDAwMDApOworCQllbHNlCisJCQlnb3RvIHRyeV9zb21ldGhpbmdfZWxzZTsKKwkgfQorCis1LiBPUFAgRGF0YSBSZXRyaWV2YWwgRnVuY3Rpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitTaW5jZSBPUFAgbGlicmFyeSBhYnN0cmFjdHMgYXdheSB0aGUgT1BQIGluZm9ybWF0aW9uLCBhIHNldCBvZiBmdW5jdGlvbnMgdG8gcHVsbAoraW5mb3JtYXRpb24gZnJvbSB0aGUgT1BQIHN0cnVjdHVyZSBpcyBuZWNlc3NhcnkuIE9uY2UgYW4gT1BQIHBvaW50ZXIgaXMKK3JldHJpZXZlZCB1c2luZyB0aGUgc2VhcmNoIGZ1bmN0aW9ucywgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgY2FuIGJlIHVzZWQgYnkgU29DCitmcmFtZXdvcmsgdG8gcmV0cmlldmUgdGhlIGluZm9ybWF0aW9uIHJlcHJlc2VudGVkIGluc2lkZSB0aGUgT1BQIGxheWVyLgorCitkZXZfcG1fb3BwX2dldF92b2x0YWdlIC0gUmV0cmlldmUgdGhlIHZvbHRhZ2UgcmVwcmVzZW50ZWQgYnkgdGhlIG9wcCBwb2ludGVyLgorCUV4YW1wbGU6IEF0IGEgY3B1ZnJlcSB0cmFuc2l0aW9uIHRvIGEgZGlmZmVyZW50IGZyZXF1ZW5jeSwgU29DCisJZnJhbWV3b3JrIHJlcXVpcmVzIHRvIHNldCB0aGUgdm9sdGFnZSByZXByZXNlbnRlZCBieSB0aGUgT1BQIHVzaW5nCisJdGhlIHJlZ3VsYXRvciBmcmFtZXdvcmsgdG8gdGhlIFBvd2VyIE1hbmFnZW1lbnQgY2hpcCBwcm92aWRpbmcgdGhlCisJdm9sdGFnZS4KKwkgc29jX3N3aXRjaF90b19mcmVxX3ZvbHRhZ2UoZnJlcSkKKwkgeworCQkvKiBkbyB0aGluZ3MgKi8KKwkJcmN1X3JlYWRfbG9jaygpOworCQlvcHAgPSBkZXZfcG1fb3BwX2ZpbmRfZnJlcV9jZWlsKGRldiwgJmZyZXEpOworCQl2ID0gZGV2X3BtX29wcF9nZXRfdm9sdGFnZShvcHApOworCQlyY3VfcmVhZF91bmxvY2soKTsKKwkJaWYgKHYpCisJCQlyZWd1bGF0b3Jfc2V0X3ZvbHRhZ2UoLi4sIHYpOworCQkvKiBkbyBvdGhlciB0aGluZ3MgKi8KKwkgfQorCitkZXZfcG1fb3BwX2dldF9mcmVxIC0gUmV0cmlldmUgdGhlIGZyZXEgcmVwcmVzZW50ZWQgYnkgdGhlIG9wcCBwb2ludGVyLgorCUV4YW1wbGU6IExldHMgc2F5IHRoZSBTb0MgZnJhbWV3b3JrIHVzZXMgYSBjb3VwbGUgb2YgaGVscGVyIGZ1bmN0aW9ucworCXdlIGNvdWxkIHBhc3Mgb3BwIHBvaW50ZXJzIGluc3RlYWQgb2YgZG9pbmcgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHRvCisJaGFuZGxlIHF1aWV0IGEgYml0IG9mIGRhdGEgcGFyYW1ldGVycy4KKwkgc29jX2NwdWZyZXFfdGFyZ2V0KC4uKQorCSB7CisJCS8qIGRvIHRoaW5ncy4uICovCisJCSBtYXhfZnJlcSA9IFVMT05HX01BWDsKKwkJIHJjdV9yZWFkX2xvY2soKTsKKwkJIG1heF9vcHAgPSBkZXZfcG1fb3BwX2ZpbmRfZnJlcV9mbG9vcihkZXYsJm1heF9mcmVxKTsKKwkJIHJlcXVlc3RlZF9vcHAgPSBkZXZfcG1fb3BwX2ZpbmRfZnJlcV9jZWlsKGRldiwmZnJlcSk7CisJCSBpZiAoIUlTX0VSUihtYXhfb3BwKSAmJiAhSVNfRVJSKHJlcXVlc3RlZF9vcHApKQorCQkJciA9IHNvY190ZXN0X3ZhbGlkaXR5KG1heF9vcHAsIHJlcXVlc3RlZF9vcHApOworCQkgcmN1X3JlYWRfdW5sb2NrKCk7CisJCS8qIGRvIG90aGVyIHRoaW5ncyAqLworCSB9CisJIHNvY190ZXN0X3ZhbGlkaXR5KC4uKQorCSB7CisJCSBpZihkZXZfcG1fb3BwX2dldF92b2x0YWdlKG1heF9vcHApIDwgZGV2X3BtX29wcF9nZXRfdm9sdGFnZShyZXF1ZXN0ZWRfb3BwKSkKKwkJCSByZXR1cm4gLUVJTlZBTDsKKwkJIGlmKGRldl9wbV9vcHBfZ2V0X2ZyZXEobWF4X29wcCkgPCBkZXZfcG1fb3BwX2dldF9mcmVxKHJlcXVlc3RlZF9vcHApKQorCQkJIHJldHVybiAtRUlOVkFMOworCQkvKiBkbyB0aGluZ3MuLiAqLworCSB9CisKK2Rldl9wbV9vcHBfZ2V0X29wcF9jb3VudCAtIFJldHJpZXZlIHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIG9wcHMgZm9yIGEgZGV2aWNlCisJRXhhbXBsZTogTGV0cyBzYXkgYSBjby1wcm9jZXNzb3IgaW4gdGhlIFNvQyBuZWVkcyB0byBrbm93IHRoZSBhdmFpbGFibGUKKwlmcmVxdWVuY2llcyBpbiBhIHRhYmxlLCB0aGUgbWFpbiBwcm9jZXNzb3IgY2FuIG5vdGlmeSBhcyBmb2xsb3dpbmc6CisJIHNvY19ub3RpZnlfY29wcm9jX2F2YWlsYWJsZV9mcmVxdWVuY2llcygpCisJIHsKKwkJLyogRG8gdGhpbmdzICovCisJCXJjdV9yZWFkX2xvY2soKTsKKwkJbnVtX2F2YWlsYWJsZSA9IGRldl9wbV9vcHBfZ2V0X29wcF9jb3VudChkZXYpOworCQlzcGVlZHMgPSBremFsbG9jKHNpemVvZih1MzIpICogbnVtX2F2YWlsYWJsZSwgR0ZQX0tFUk5FTCk7CisJCS8qIHBvcHVsYXRlIHRoZSB0YWJsZSBpbiBpbmNyZWFzaW5nIG9yZGVyICovCisJCWZyZXEgPSAwOworCQl3aGlsZSAoIUlTX0VSUihvcHAgPSBkZXZfcG1fb3BwX2ZpbmRfZnJlcV9jZWlsKGRldiwgJmZyZXEpKSkgeworCQkJc3BlZWRzW2ldID0gZnJlcTsKKwkJCWZyZXErKzsKKwkJCWkrKzsKKwkJfQorCQlyY3VfcmVhZF91bmxvY2soKTsKKworCQlzb2Nfbm90aWZ5X2NvcHJvYyhBVkFJTEFCTEVfRlJFUXMsIHNwZWVkcywgbnVtX2F2YWlsYWJsZSk7CisJCS8qIERvIG90aGVyIHRoaW5ncyAqLworCSB9CisKKzYuIERhdGEgU3RydWN0dXJlcworPT09PT09PT09PT09PT09PT09CitUeXBpY2FsbHkgYW4gU29DIGNvbnRhaW5zIG11bHRpcGxlIHZvbHRhZ2UgZG9tYWlucyB3aGljaCBhcmUgdmFyaWFibGUuIEVhY2gKK2RvbWFpbiBpcyByZXByZXNlbnRlZCBieSBhIGRldmljZSBwb2ludGVyLiBUaGUgcmVsYXRpb25zaGlwIHRvIE9QUCBjYW4gYmUKK3JlcHJlc2VudGVkIGFzIGZvbGxvd3M6CitTb0MKKyB8LSBkZXZpY2UgMQorIHwJfC0gb3BwIDEgKGF2YWlsYWJpbGl0eSwgZnJlcSwgdm9sdGFnZSkKKyB8CXwtIG9wcCAyIC4uCisgLi4uCS4uLgorIHwJYC0gb3BwIG4gLi4KKyB8LSBkZXZpY2UgMgorIC4uLgorIGAtIGRldmljZSBtCisKK09QUCBsaWJyYXJ5IG1haW50YWlucyBhIGludGVybmFsIGxpc3QgdGhhdCB0aGUgU29DIGZyYW1ld29yayBwb3B1bGF0ZXMgYW5kCithY2Nlc3NlZCBieSB2YXJpb3VzIGZ1bmN0aW9ucyBhcyBkZXNjcmliZWQgYWJvdmUuIEhvd2V2ZXIsIHRoZSBzdHJ1Y3R1cmVzCityZXByZXNlbnRpbmcgdGhlIGFjdHVhbCBPUFBzIGFuZCBkb21haW5zIGFyZSBpbnRlcm5hbCB0byB0aGUgT1BQIGxpYnJhcnkgaXRzZWxmCit0byBhbGxvdyBmb3Igc3VpdGFibGUgYWJzdHJhY3Rpb24gcmV1c2FibGUgYWNyb3NzIHN5c3RlbXMuCisKK3N0cnVjdCBkZXZfcG1fb3BwIC0gVGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlIG9mIE9QUCBsaWJyYXJ5IHdoaWNoIGlzIHVzZWQgdG8KKwlyZXByZXNlbnQgYW4gT1BQLiBJbiBhZGRpdGlvbiB0byB0aGUgZnJlcSwgdm9sdGFnZSwgYXZhaWxhYmlsaXR5CisJaW5mb3JtYXRpb24sIGl0IGFsc28gY29udGFpbnMgaW50ZXJuYWwgYm9vayBrZWVwaW5nIGluZm9ybWF0aW9uIHJlcXVpcmVkCisJZm9yIHRoZSBPUFAgbGlicmFyeSB0byBvcGVyYXRlIG9uLiAgUG9pbnRlciB0byB0aGlzIHN0cnVjdHVyZSBpcworCXByb3ZpZGVkIGJhY2sgdG8gdGhlIHVzZXJzIHN1Y2ggYXMgU29DIGZyYW1ld29yayB0byBiZSB1c2VkIGFzIGEKKwlpZGVudGlmaWVyIGZvciBPUFAgaW4gdGhlIGludGVyYWN0aW9ucyB3aXRoIE9QUCBsYXllci4KKworCVdBUk5JTkc6IFRoZSBzdHJ1Y3QgZGV2X3BtX29wcCBwb2ludGVyIHNob3VsZCBub3QgYmUgcGFyc2VkIG9yIG1vZGlmaWVkIGJ5IHRoZQorCXVzZXJzLiBUaGUgZGVmYXVsdHMgb2YgZm9yIGFuIGluc3RhbmNlIGlzIHBvcHVsYXRlZCBieSBkZXZfcG1fb3BwX2FkZCwgYnV0IHRoZQorCWF2YWlsYWJpbGl0eSBvZiB0aGUgT1BQIGNhbiBiZSBtb2RpZmllZCBieSBkZXZfcG1fb3BwX2VuYWJsZS9kaXNhYmxlIGZ1bmN0aW9ucy4KKworc3RydWN0IGRldmljZSAtIFRoaXMgaXMgdXNlZCB0byBpZGVudGlmeSBhIGRvbWFpbiB0byB0aGUgT1BQIGxheWVyLiBUaGUKKwluYXR1cmUgb2YgdGhlIGRldmljZSBhbmQgaXQncyBpbXBsZW1lbnRhdGlvbiBpcyBsZWZ0IHRvIHRoZSB1c2VyIG9mCisJT1BQIGxpYnJhcnkgc3VjaCBhcyB0aGUgU29DIGZyYW1ld29yay4KKworT3ZlcmFsbCwgaW4gYSBzaW1wbGlzdGljIHZpZXcsIHRoZSBkYXRhIHN0cnVjdHVyZSBvcGVyYXRpb25zIGlzIHJlcHJlc2VudGVkIGFzCitmb2xsb3dpbmc6CisKK0luaXRpYWxpemF0aW9uIC8gbW9kaWZpY2F0aW9uOgorICAgICAgICAgICAgKy0tLS0tKyAgICAgICAgLy0gZGV2X3BtX29wcF9lbmFibGUKK2Rldl9wbV9vcHBfYWRkIC0tPiB8IG9wcCB8IDwtLS0tLS0tCisgIHwgICAgICAgICArLS0tLS0rICAgICAgICBcLSBkZXZfcG1fb3BwX2Rpc2FibGUKKyAgXC0tLS0tLS0+IGRvbWFpbl9pbmZvKGRldmljZSkKKworU2VhcmNoIGZ1bmN0aW9uczoKKyAgICAgICAgICAgICAvLS0gZGV2X3BtX29wcF9maW5kX2ZyZXFfY2VpbCAgLS0tXCAgICstLS0tLSsKK2RvbWFpbl9pbmZvPC0tLS0gZGV2X3BtX29wcF9maW5kX2ZyZXFfZXhhY3QgLS0tLS0+IHwgb3BwIHwKKyAgICAgICAgICAgICBcLS0gZGV2X3BtX29wcF9maW5kX2ZyZXFfZmxvb3IgLS0tLyAgICstLS0tLSsKKworUmV0cmlldmFsIGZ1bmN0aW9uczoKKystLS0tLSsgICAgIC8tIGRldl9wbV9vcHBfZ2V0X3ZvbHRhZ2UKK3wgb3BwIHwgPC0tLQorKy0tLS0tKyAgICAgXC0gZGV2X3BtX29wcF9nZXRfZnJlcQorCitkb21haW5faW5mbyA8LSBkZXZfcG1fb3BwX2dldF9vcHBfY291bnQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvcGNpLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvcGNpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGU5MTFlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci9wY2kudHh0CkBAIC0wLDAgKzEsMTA1MCBAQAorUENJIFBvd2VyIE1hbmFnZW1lbnQKKworQ29weXJpZ2h0IChjKSAyMDEwIFJhZmFlbCBKLiBXeXNvY2tpIDxyandAc2lzay5wbD4sIE5vdmVsbCBJbmMuCisKK0FuIG92ZXJ2aWV3IG9mIGNvbmNlcHRzIGFuZCB0aGUgTGludXgga2VybmVsJ3MgaW50ZXJmYWNlcyByZWxhdGVkIHRvIFBDSSBwb3dlcgorbWFuYWdlbWVudC4gIEJhc2VkIG9uIHByZXZpb3VzIHdvcmsgYnkgUGF0cmljayBNb2NoZWwgPG1vY2hlbEB0cmFuc21ldGEuY29tPgorKGFuZCBvdGhlcnMpLgorCitUaGlzIGRvY3VtZW50IG9ubHkgY292ZXJzIHRoZSBhc3BlY3RzIG9mIHBvd2VyIG1hbmFnZW1lbnQgc3BlY2lmaWMgdG8gUENJCitkZXZpY2VzLiAgRm9yIGdlbmVyYWwgZGVzY3JpcHRpb24gb2YgdGhlIGtlcm5lbCdzIGludGVyZmFjZXMgcmVsYXRlZCB0byBkZXZpY2UKK3Bvd2VyIG1hbmFnZW1lbnQgcmVmZXIgdG8gRG9jdW1lbnRhdGlvbi9wb3dlci9kZXZpY2VzLnR4dCBhbmQKK0RvY3VtZW50YXRpb24vcG93ZXIvcnVudGltZV9wbS50eHQuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisxLiBIYXJkd2FyZSBhbmQgUGxhdGZvcm0gU3VwcG9ydCBmb3IgUENJIFBvd2VyIE1hbmFnZW1lbnQKKzIuIFBDSSBTdWJzeXN0ZW0gYW5kIERldmljZSBQb3dlciBNYW5hZ2VtZW50CiszLiBQQ0kgRGV2aWNlIERyaXZlcnMgYW5kIFBvd2VyIE1hbmFnZW1lbnQKKzQuIFJlc291cmNlcworCisKKzEuIEhhcmR3YXJlIGFuZCBQbGF0Zm9ybSBTdXBwb3J0IGZvciBQQ0kgUG93ZXIgTWFuYWdlbWVudAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzEuMS4gTmF0aXZlIGFuZCBQbGF0Zm9ybS1CYXNlZCBQb3dlciBNYW5hZ2VtZW50CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSW4gZ2VuZXJhbCwgcG93ZXIgbWFuYWdlbWVudCBpcyBhIGZlYXR1cmUgYWxsb3dpbmcgb25lIHRvIHNhdmUgZW5lcmd5IGJ5IHB1dHRpbmcKK2RldmljZXMgaW50byBzdGF0ZXMgaW4gd2hpY2ggdGhleSBkcmF3IGxlc3MgcG93ZXIgKGxvdy1wb3dlciBzdGF0ZXMpIGF0IHRoZQorcHJpY2Ugb2YgcmVkdWNlZCBmdW5jdGlvbmFsaXR5IG9yIHBlcmZvcm1hbmNlLgorCitVc3VhbGx5LCBhIGRldmljZSBpcyBwdXQgaW50byBhIGxvdy1wb3dlciBzdGF0ZSB3aGVuIGl0IGlzIHVuZGVydXRpbGl6ZWQgb3IKK2NvbXBsZXRlbHkgaW5hY3RpdmUuICBIb3dldmVyLCB3aGVuIGl0IGlzIG5lY2Vzc2FyeSB0byB1c2UgdGhlIGRldmljZSBvbmNlCithZ2FpbiwgaXQgaGFzIHRvIGJlIHB1dCBiYWNrIGludG8gdGhlICJmdWxseSBmdW5jdGlvbmFsIiBzdGF0ZSAoZnVsbC1wb3dlcgorc3RhdGUpLiAgVGhpcyBtYXkgaGFwcGVuIHdoZW4gdGhlcmUgYXJlIHNvbWUgZGF0YSBmb3IgdGhlIGRldmljZSB0byBoYW5kbGUgb3IKK2FzIGEgcmVzdWx0IG9mIGFuIGV4dGVybmFsIGV2ZW50IHJlcXVpcmluZyB0aGUgZGV2aWNlIHRvIGJlIGFjdGl2ZSwgd2hpY2ggbWF5CitiZSBzaWduYWxlZCBieSB0aGUgZGV2aWNlIGl0c2VsZi4KKworUENJIGRldmljZXMgbWF5IGJlIHB1dCBpbnRvIGxvdy1wb3dlciBzdGF0ZXMgaW4gdHdvIHdheXMsIGJ5IHVzaW5nIHRoZSBkZXZpY2UKK2NhcGFiaWxpdGllcyBpbnRyb2R1Y2VkIGJ5IHRoZSBQQ0kgQnVzIFBvd2VyIE1hbmFnZW1lbnQgSW50ZXJmYWNlIFNwZWNpZmljYXRpb24sCitvciB3aXRoIHRoZSBoZWxwIG9mIHBsYXRmb3JtIGZpcm13YXJlLCBzdWNoIGFzIGFuIEFDUEkgQklPUy4gIEluIHRoZSBmaXJzdAorYXBwcm9hY2gsIHRoYXQgaXMgcmVmZXJyZWQgdG8gYXMgdGhlIG5hdGl2ZSBQQ0kgcG93ZXIgbWFuYWdlbWVudCAobmF0aXZlIFBDSSBQTSkKK2luIHdoYXQgZm9sbG93cywgdGhlIGRldmljZSBwb3dlciBzdGF0ZSBpcyBjaGFuZ2VkIGFzIGEgcmVzdWx0IG9mIHdyaXRpbmcgYQorc3BlY2lmaWMgdmFsdWUgaW50byBvbmUgb2YgaXRzIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzLiAgVGhlIHNlY29uZAorYXBwcm9hY2ggcmVxdWlyZXMgdGhlIHBsYXRmb3JtIGZpcm13YXJlIHRvIHByb3ZpZGUgc3BlY2lhbCBtZXRob2RzIHRoYXQgbWF5IGJlCit1c2VkIGJ5IHRoZSBrZXJuZWwgdG8gY2hhbmdlIHRoZSBkZXZpY2UncyBwb3dlciBzdGF0ZS4KKworRGV2aWNlcyBzdXBwb3J0aW5nIHRoZSBuYXRpdmUgUENJIFBNIHVzdWFsbHkgY2FuIGdlbmVyYXRlIHdha2V1cCBzaWduYWxzIGNhbGxlZAorUG93ZXIgTWFuYWdlbWVudCBFdmVudHMgKFBNRXMpIHRvIGxldCB0aGUga2VybmVsIGtub3cgYWJvdXQgZXh0ZXJuYWwgZXZlbnRzCityZXF1aXJpbmcgdGhlIGRldmljZSB0byBiZSBhY3RpdmUuICBBZnRlciByZWNlaXZpbmcgYSBQTUUgdGhlIGtlcm5lbCBpcyBzdXBwb3NlZAordG8gcHV0IHRoZSBkZXZpY2UgdGhhdCBzZW50IGl0IGludG8gdGhlIGZ1bGwtcG93ZXIgc3RhdGUuICBIb3dldmVyLCB0aGUgUENJIEJ1cworUG93ZXIgTWFuYWdlbWVudCBJbnRlcmZhY2UgU3BlY2lmaWNhdGlvbiBkb2Vzbid0IGRlZmluZSBhbnkgc3RhbmRhcmQgbWV0aG9kIG9mCitkZWxpdmVyaW5nIHRoZSBQTUUgZnJvbSB0aGUgZGV2aWNlIHRvIHRoZSBDUFUgYW5kIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGtlcm5lbC4KK0l0IGlzIGFzc3VtZWQgdGhhdCB0aGUgcGxhdGZvcm0gZmlybXdhcmUgd2lsbCBwZXJmb3JtIHRoaXMgdGFzayBhbmQgdGhlcmVmb3JlLAorZXZlbiB0aG91Z2ggYSBQQ0kgZGV2aWNlIGlzIHNldCB1cCB0byBnZW5lcmF0ZSBQTUVzLCBpdCBhbHNvIG1heSBiZSBuZWNlc3NhcnkgdG8KK3ByZXBhcmUgdGhlIHBsYXRmb3JtIGZpcm13YXJlIGZvciBub3RpZnlpbmcgdGhlIENQVSBvZiB0aGUgUE1FcyBjb21pbmcgZnJvbSB0aGUKK2RldmljZSAoZS5nLiBieSBnZW5lcmF0aW5nIGludGVycnVwdHMpLgorCitJbiB0dXJuLCBpZiB0aGUgbWV0aG9kcyBwcm92aWRlZCBieSB0aGUgcGxhdGZvcm0gZmlybXdhcmUgYXJlIHVzZWQgZm9yIGNoYW5naW5nCit0aGUgcG93ZXIgc3RhdGUgb2YgYSBkZXZpY2UsIHVzdWFsbHkgdGhlIHBsYXRmb3JtIGFsc28gcHJvdmlkZXMgYSBtZXRob2QgZm9yCitwcmVwYXJpbmcgdGhlIGRldmljZSB0byBnZW5lcmF0ZSB3YWtldXAgc2lnbmFscy4gIEluIHRoYXQgY2FzZSwgaG93ZXZlciwgaXQKK29mdGVuIGFsc28gaXMgbmVjZXNzYXJ5IHRvIHByZXBhcmUgdGhlIGRldmljZSBmb3IgZ2VuZXJhdGluZyBQTUVzIHVzaW5nIHRoZQorbmF0aXZlIFBDSSBQTSBtZWNoYW5pc20sIGJlY2F1c2UgdGhlIG1ldGhvZCBwcm92aWRlZCBieSB0aGUgcGxhdGZvcm0gZGVwZW5kcyBvbgordGhhdC4KKworVGh1cyBpbiBtYW55IHNpdHVhdGlvbnMgYm90aCB0aGUgbmF0aXZlIGFuZCB0aGUgcGxhdGZvcm0tYmFzZWQgcG93ZXIgbWFuYWdlbWVudAorbWVjaGFuaXNtcyBoYXZlIHRvIGJlIHVzZWQgc2ltdWx0YW5lb3VzbHkgdG8gb2J0YWluIHRoZSBkZXNpcmVkIHJlc3VsdC4KKworMS4yLiBOYXRpdmUgUENJIFBvd2VyIE1hbmFnZW1lbnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgUENJIEJ1cyBQb3dlciBNYW5hZ2VtZW50IEludGVyZmFjZSBTcGVjaWZpY2F0aW9uIChQQ0kgUE0gU3BlYykgd2FzCitpbnRyb2R1Y2VkIGJldHdlZW4gdGhlIFBDSSAyLjEgYW5kIFBDSSAyLjIgU3BlY2lmaWNhdGlvbnMuICBJdCBkZWZpbmVkIGEKK3N0YW5kYXJkIGludGVyZmFjZSBmb3IgcGVyZm9ybWluZyB2YXJpb3VzIG9wZXJhdGlvbnMgcmVsYXRlZCB0byBwb3dlcgorbWFuYWdlbWVudC4KKworVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBQQ0kgUE0gU3BlYyBpcyBvcHRpb25hbCBmb3IgY29udmVudGlvbmFsIFBDSSBkZXZpY2VzLAorYnV0IGl0IGlzIG1hbmRhdG9yeSBmb3IgUENJIEV4cHJlc3MgZGV2aWNlcy4gIElmIGEgZGV2aWNlIHN1cHBvcnRzIHRoZSBQQ0kgUE0KK1NwZWMsIGl0IGhhcyBhbiA4IGJ5dGUgcG93ZXIgbWFuYWdlbWVudCBjYXBhYmlsaXR5IGZpZWxkIGluIGl0cyBQQ0kKK2NvbmZpZ3VyYXRpb24gc3BhY2UuICBUaGlzIGZpZWxkIGlzIHVzZWQgdG8gZGVzY3JpYmUgYW5kIGNvbnRyb2wgdGhlIHN0YW5kYXJkCitmZWF0dXJlcyByZWxhdGVkIHRvIHRoZSBuYXRpdmUgUENJIHBvd2VyIG1hbmFnZW1lbnQuCisKK1RoZSBQQ0kgUE0gU3BlYyBkZWZpbmVzIDQgb3BlcmF0aW5nIHN0YXRlcyBmb3IgZGV2aWNlcyAoRDAtRDMpIGFuZCBmb3IgYnVzZXMKKyhCMC1CMykuICBUaGUgaGlnaGVyIHRoZSBudW1iZXIsIHRoZSBsZXNzIHBvd2VyIGlzIGRyYXduIGJ5IHRoZSBkZXZpY2Ugb3IgYnVzCitpbiB0aGF0IHN0YXRlLiAgSG93ZXZlciwgdGhlIGhpZ2hlciB0aGUgbnVtYmVyLCB0aGUgbG9uZ2VyIHRoZSBsYXRlbmN5IGZvcgordGhlIGRldmljZSBvciBidXMgdG8gcmV0dXJuIHRvIHRoZSBmdWxsLXBvd2VyIHN0YXRlIChEMCBvciBCMCwgcmVzcGVjdGl2ZWx5KS4KKworVGhlcmUgYXJlIHR3byB2YXJpYW50cyBvZiB0aGUgRDMgc3RhdGUgZGVmaW5lZCBieSB0aGUgc3BlY2lmaWNhdGlvbi4gIFRoZSBmaXJzdAorb25lIGlzIEQzaG90LCByZWZlcnJlZCB0byBhcyB0aGUgc29mdHdhcmUgYWNjZXNzaWJsZSBEMywgYmVjYXVzZSBkZXZpY2VzIGNhbiBiZQorcHJvZ3JhbW1lZCB0byBnbyBpbnRvIGl0LiAgVGhlIHNlY29uZCBvbmUsIEQzY29sZCwgaXMgdGhlIHN0YXRlIHRoYXQgUENJIGRldmljZXMKK2FyZSBpbiB3aGVuIHRoZSBzdXBwbHkgdm9sdGFnZSAoVmNjKSBpcyByZW1vdmVkIGZyb20gdGhlbS4gIEl0IGlzIG5vdCBwb3NzaWJsZQordG8gcHJvZ3JhbSBhIFBDSSBkZXZpY2UgdG8gZ28gaW50byBEM2NvbGQsIGFsdGhvdWdoIHRoZXJlIG1heSBiZSBhIHByb2dyYW1tYWJsZQoraW50ZXJmYWNlIGZvciBwdXR0aW5nIHRoZSBidXMgdGhlIGRldmljZSBpcyBvbiBpbnRvIGEgc3RhdGUgaW4gd2hpY2ggVmNjIGlzCityZW1vdmVkIGZyb20gYWxsIGRldmljZXMgb24gdGhlIGJ1cy4KKworUENJIGJ1cyBwb3dlciBtYW5hZ2VtZW50LCBob3dldmVyLCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBMaW51eCBrZXJuZWwgYXQgdGhlCit0aW1lIG9mIHRoaXMgd3JpdGluZyBhbmQgdGhlcmVmb3JlIGl0IGlzIG5vdCBjb3ZlcmVkIGJ5IHRoaXMgZG9jdW1lbnQuCisKK05vdGUgdGhhdCBldmVyeSBQQ0kgZGV2aWNlIGNhbiBiZSBpbiB0aGUgZnVsbC1wb3dlciBzdGF0ZSAoRDApIG9yIGluIEQzY29sZCwKK3JlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QgaXQgaW1wbGVtZW50cyB0aGUgUENJIFBNIFNwZWMuICBJbiBhZGRpdGlvbiB0bwordGhhdCwgaWYgdGhlIFBDSSBQTSBTcGVjIGlzIGltcGxlbWVudGVkIGJ5IHRoZSBkZXZpY2UsIGl0IG11c3Qgc3VwcG9ydCBEM2hvdAorYXMgd2VsbCBhcyBEMC4gIFRoZSBzdXBwb3J0IGZvciB0aGUgRDEgYW5kIEQyIHBvd2VyIHN0YXRlcyBpcyBvcHRpb25hbC4KKworUENJIGRldmljZXMgc3VwcG9ydGluZyB0aGUgUENJIFBNIFNwZWMgY2FuIGJlIHByb2dyYW1tZWQgdG8gZ28gdG8gYW55IG9mIHRoZQorc3VwcG9ydGVkIGxvdy1wb3dlciBzdGF0ZXMgKGV4Y2VwdCBmb3IgRDNjb2xkKS4gIFdoaWxlIGluIEQxLUQzaG90IHRoZQorc3RhbmRhcmQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgb2YgdGhlIGRldmljZSBtdXN0IGJlIGFjY2Vzc2libGUgdG8gc29mdHdhcmUKKyhpLmUuIHRoZSBkZXZpY2UgaXMgcmVxdWlyZWQgdG8gcmVzcG9uZCB0byBQQ0kgY29uZmlndXJhdGlvbiBhY2Nlc3NlcyksIGFsdGhvdWdoCitpdHMgSS9PIGFuZCBtZW1vcnkgc3BhY2VzIGFyZSB0aGVuIGRpc2FibGVkLiAgVGhpcyBhbGxvd3MgdGhlIGRldmljZSB0byBiZQorcHJvZ3JhbW1hdGljYWxseSBwdXQgaW50byBEMC4gIFRodXMgdGhlIGtlcm5lbCBjYW4gc3dpdGNoIHRoZSBkZXZpY2UgYmFjayBhbmQKK2ZvcnRoIGJldHdlZW4gRDAgYW5kIHRoZSBzdXBwb3J0ZWQgbG93LXBvd2VyIHN0YXRlcyAoZXhjZXB0IGZvciBEM2NvbGQpIGFuZCB0aGUKK3Bvc3NpYmxlIHBvd2VyIHN0YXRlIHRyYW5zaXRpb25zIHRoZSBkZXZpY2UgY2FuIHVuZGVyZ28gYXJlIHRoZSBmb2xsb3dpbmc6CisKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBDdXJyZW50IFN0YXRlIHwgTmV3IFN0YXRlICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgRDAgICAgICAgICAgICB8IEQxLCBEMiwgRDMgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEQxICAgICAgICAgICAgfCBEMiwgRDMgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBEMiAgICAgICAgICAgIHwgRDMgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgRDEsIEQyLCBEMyAgICB8IEQwICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKK1RoZSB0cmFuc2l0aW9uIGZyb20gRDNjb2xkIHRvIEQwIG9jY3VycyB3aGVuIHRoZSBzdXBwbHkgdm9sdGFnZSBpcyBwcm92aWRlZCB0bwordGhlIGRldmljZSAoaS5lLiBwb3dlciBpcyByZXN0b3JlZCkuICBJbiB0aGF0IGNhc2UgdGhlIGRldmljZSByZXR1cm5zIHRvIEQwIHdpdGgKK2EgZnVsbCBwb3dlci1vbiByZXNldCBzZXF1ZW5jZSBhbmQgdGhlIHBvd2VyLW9uIGRlZmF1bHRzIGFyZSByZXN0b3JlZCB0byB0aGUKK2RldmljZSBieSBoYXJkd2FyZSBqdXN0IGFzIGF0IGluaXRpYWwgcG93ZXIgdXAuCisKK1BDSSBkZXZpY2VzIHN1cHBvcnRpbmcgdGhlIFBDSSBQTSBTcGVjIGNhbiBiZSBwcm9ncmFtbWVkIHRvIGdlbmVyYXRlIFBNRXMKK3doaWxlIGluIGEgbG93LXBvd2VyIHN0YXRlIChEMS1EMyksIGJ1dCB0aGV5IGFyZSBub3QgcmVxdWlyZWQgdG8gYmUgY2FwYWJsZQorb2YgZ2VuZXJhdGluZyBQTUVzIGZyb20gYWxsIHN1cHBvcnRlZCBsb3ctcG93ZXIgc3RhdGVzLiAgSW4gcGFydGljdWxhciwgdGhlCitjYXBhYmlsaXR5IG9mIGdlbmVyYXRpbmcgUE1FcyBmcm9tIEQzY29sZCBpcyBvcHRpb25hbCBhbmQgZGVwZW5kcyBvbiB0aGUKK3ByZXNlbmNlIG9mIGFkZGl0aW9uYWwgdm9sdGFnZSAoMy4zVmF1eCkgYWxsb3dpbmcgdGhlIGRldmljZSB0byByZW1haW4KK3N1ZmZpY2llbnRseSBhY3RpdmUgdG8gZ2VuZXJhdGUgYSB3YWtldXAgc2lnbmFsLgorCisxLjMuIEFDUEkgRGV2aWNlIFBvd2VyIE1hbmFnZW1lbnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIHBsYXRmb3JtIGZpcm13YXJlIHN1cHBvcnQgZm9yIHRoZSBwb3dlciBtYW5hZ2VtZW50IG9mIFBDSSBkZXZpY2VzIGlzCitzeXN0ZW0tc3BlY2lmaWMuICBIb3dldmVyLCBpZiB0aGUgc3lzdGVtIGluIHF1ZXN0aW9uIGlzIGNvbXBsaWFudCB3aXRoIHRoZQorQWR2YW5jZWQgQ29uZmlndXJhdGlvbiBhbmQgUG93ZXIgSW50ZXJmYWNlIChBQ1BJKSBTcGVjaWZpY2F0aW9uLCBsaWtlIHRoZQorbWFqb3JpdHkgb2YgeDg2LWJhc2VkIHN5c3RlbXMsIGl0IGlzIHN1cHBvc2VkIHRvIGltcGxlbWVudCBkZXZpY2UgcG93ZXIKK21hbmFnZW1lbnQgaW50ZXJmYWNlcyBkZWZpbmVkIGJ5IHRoZSBBQ1BJIHN0YW5kYXJkLgorCitGb3IgdGhpcyBwdXJwb3NlIHRoZSBBQ1BJIEJJT1MgcHJvdmlkZXMgc3BlY2lhbCBmdW5jdGlvbnMgY2FsbGVkICJjb250cm9sCittZXRob2RzIiB0aGF0IG1heSBiZSBleGVjdXRlZCBieSB0aGUga2VybmVsIHRvIHBlcmZvcm0gc3BlY2lmaWMgdGFza3MsIHN1Y2ggYXMKK3B1dHRpbmcgYSBkZXZpY2UgaW50byBhIGxvdy1wb3dlciBzdGF0ZS4gIFRoZXNlIGNvbnRyb2wgbWV0aG9kcyBhcmUgZW5jb2RlZAordXNpbmcgc3BlY2lhbCBieXRlLWNvZGUgbGFuZ3VhZ2UgY2FsbGVkIHRoZSBBQ1BJIE1hY2hpbmUgTGFuZ3VhZ2UgKEFNTCkgYW5kCitzdG9yZWQgaW4gdGhlIG1hY2hpbmUncyBCSU9TLiAgVGhlIGtlcm5lbCBsb2FkcyB0aGVtIGZyb20gdGhlIEJJT1MgYW5kIGV4ZWN1dGVzCit0aGVtIGFzIG5lZWRlZCB1c2luZyBhbiBBTUwgaW50ZXJwcmV0ZXIgdGhhdCB0cmFuc2xhdGVzIHRoZSBBTUwgYnl0ZSBjb2RlIGludG8KK2NvbXB1dGF0aW9ucyBhbmQgbWVtb3J5IG9yIEkvTyBzcGFjZSBhY2Nlc3Nlcy4gIFRoaXMgd2F5LCBpbiB0aGVvcnksIGEgQklPUword3JpdGVyIGNhbiBwcm92aWRlIHRoZSBrZXJuZWwgd2l0aCBhIG1lYW5zIHRvIHBlcmZvcm0gYWN0aW9ucyBkZXBlbmRpbmcKK29uIHRoZSBzeXN0ZW0gZGVzaWduIGluIGEgc3lzdGVtLXNwZWNpZmljIGZhc2hpb24uCisKK0FDUEkgY29udHJvbCBtZXRob2RzIG1heSBiZSBkaXZpZGVkIGludG8gZ2xvYmFsIGNvbnRyb2wgbWV0aG9kcywgdGhhdCBhcmUgbm90Cithc3NvY2lhdGVkIHdpdGggYW55IHBhcnRpY3VsYXIgZGV2aWNlcywgYW5kIGRldmljZSBjb250cm9sIG1ldGhvZHMsIHRoYXQgaGF2ZQordG8gYmUgZGVmaW5lZCBzZXBhcmF0ZWx5IGZvciBlYWNoIGRldmljZSBzdXBwb3NlZCB0byBiZSBoYW5kbGVkIHdpdGggdGhlIGhlbHAgb2YKK3RoZSBwbGF0Zm9ybS4gIFRoaXMgbWVhbnMsIGluIHBhcnRpY3VsYXIsIHRoYXQgQUNQSSBkZXZpY2UgY29udHJvbCBtZXRob2RzIGNhbgorb25seSBiZSB1c2VkIHRvIGhhbmRsZSBkZXZpY2VzIHRoYXQgdGhlIEJJT1Mgd3JpdGVyIGtuZXcgYWJvdXQgaW4gYWR2YW5jZS4gIFRoZQorQUNQSSBtZXRob2RzIHVzZWQgZm9yIGRldmljZSBwb3dlciBtYW5hZ2VtZW50IGZhbGwgaW50byB0aGF0IGNhdGVnb3J5LgorCitUaGUgQUNQSSBzcGVjaWZpY2F0aW9uIGFzc3VtZXMgdGhhdCBkZXZpY2VzIGNhbiBiZSBpbiBvbmUgb2YgZm91ciBwb3dlciBzdGF0ZXMKK2xhYmVsZWQgYXMgRDAsIEQxLCBEMiwgYW5kIEQzIHRoYXQgcm91Z2hseSBjb3JyZXNwb25kIHRvIHRoZSBuYXRpdmUgUENJIFBNCitEMC1EMyBzdGF0ZXMgKGFsdGhvdWdoIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gRDNob3QgYW5kIEQzY29sZCBpcyBub3QgdGFrZW4KK2ludG8gYWNjb3VudCBieSBBQ1BJKS4gIE1vcmVvdmVyLCBmb3IgZWFjaCBwb3dlciBzdGF0ZSBvZiBhIGRldmljZSB0aGVyZSBpcyBhCitzZXQgb2YgcG93ZXIgcmVzb3VyY2VzIHRoYXQgaGF2ZSB0byBiZSBlbmFibGVkIGZvciB0aGUgZGV2aWNlIHRvIGJlIHB1dCBpbnRvCit0aGF0IHN0YXRlLiAgVGhlc2UgcG93ZXIgcmVzb3VyY2VzIGFyZSBjb250cm9sbGVkIChpLmUuIGVuYWJsZWQgb3IgZGlzYWJsZWQpCit3aXRoIHRoZSBoZWxwIG9mIHRoZWlyIG93biBjb250cm9sIG1ldGhvZHMsIF9PTiBhbmQgX09GRiwgdGhhdCBoYXZlIHRvIGJlCitkZWZpbmVkIGluZGl2aWR1YWxseSBmb3IgZWFjaCBvZiB0aGVtLgorCitUbyBwdXQgYSBkZXZpY2UgaW50byB0aGUgQUNQSSBwb3dlciBzdGF0ZSBEeCAod2hlcmUgeCBpcyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kCiszIGluY2x1c2l2ZSkgdGhlIGtlcm5lbCBpcyBzdXBwb3NlZCB0byAoMSkgZW5hYmxlIHRoZSBwb3dlciByZXNvdXJjZXMgcmVxdWlyZWQKK2J5IHRoZSBkZXZpY2UgaW4gdGhpcyBzdGF0ZSB1c2luZyB0aGVpciBfT04gY29udHJvbCBtZXRob2RzIGFuZCAoMikgZXhlY3V0ZSB0aGUKK19QU3ggY29udHJvbCBtZXRob2QgZGVmaW5lZCBmb3IgdGhlIGRldmljZS4gIEluIGFkZGl0aW9uIHRvIHRoYXQsIGlmIHRoZSBkZXZpY2UKK2lzIGdvaW5nIHRvIGJlIHB1dCBpbnRvIGEgbG93LXBvd2VyIHN0YXRlIChEMS1EMykgYW5kIGlzIHN1cHBvc2VkIHRvIGdlbmVyYXRlCit3YWtldXAgc2lnbmFscyBmcm9tIHRoYXQgc3RhdGUsIHRoZSBfRFNXIChvciBfUFNXLCByZXBsYWNlZCB3aXRoIF9EU1cgYnkgQUNQSQorMy4wKSBjb250cm9sIG1ldGhvZCBkZWZpbmVkIGZvciBpdCBoYXMgdG8gYmUgZXhlY3V0ZWQgYmVmb3JlIF9QU3guICBQb3dlcgorcmVzb3VyY2VzIHRoYXQgYXJlIG5vdCByZXF1aXJlZCBieSB0aGUgZGV2aWNlIGluIHRoZSB0YXJnZXQgcG93ZXIgc3RhdGUgYW5kIGFyZQorbm90IHJlcXVpcmVkIGFueSBtb3JlIGJ5IGFueSBvdGhlciBkZXZpY2Ugc2hvdWxkIGJlIGRpc2FibGVkIChieSBleGVjdXRpbmcgdGhlaXIKK19PRkYgY29udHJvbCBtZXRob2RzKS4gIElmIHRoZSBjdXJyZW50IHBvd2VyIHN0YXRlIG9mIHRoZSBkZXZpY2UgaXMgRDMsIGl0IGNhbgorb25seSBiZSBwdXQgaW50byBEMCB0aGlzIHdheS4KKworSG93ZXZlciwgcXVpdGUgb2Z0ZW4gdGhlIHBvd2VyIHN0YXRlcyBvZiBkZXZpY2VzIGFyZSBjaGFuZ2VkIGR1cmluZyBhCitzeXN0ZW0td2lkZSB0cmFuc2l0aW9uIGludG8gYSBzbGVlcCBzdGF0ZSBvciBiYWNrIGludG8gdGhlIHdvcmtpbmcgc3RhdGUuICBBQ1BJCitkZWZpbmVzIGZvdXIgc3lzdGVtIHNsZWVwIHN0YXRlcywgUzEsIFMyLCBTMywgYW5kIFM0LCBhbmQgZGVub3RlcyB0aGUgc3lzdGVtCit3b3JraW5nIHN0YXRlIGFzIFMwLiAgSW4gZ2VuZXJhbCwgdGhlIHRhcmdldCBzeXN0ZW0gc2xlZXAgKG9yIHdvcmtpbmcpIHN0YXRlCitkZXRlcm1pbmVzIHRoZSBoaWdoZXN0IHBvd2VyIChsb3dlc3QgbnVtYmVyKSBzdGF0ZSB0aGUgZGV2aWNlIGNhbiBiZSBwdXQKK2ludG8gYW5kIHRoZSBrZXJuZWwgaXMgc3VwcG9zZWQgdG8gb2J0YWluIHRoaXMgaW5mb3JtYXRpb24gYnkgZXhlY3V0aW5nIHRoZQorZGV2aWNlJ3MgX1N4RCBjb250cm9sIG1ldGhvZCAod2hlcmUgeCBpcyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDQgaW5jbHVzaXZlKS4KK0lmIHRoZSBkZXZpY2UgaXMgcmVxdWlyZWQgdG8gd2FrZSB1cCB0aGUgc3lzdGVtIGZyb20gdGhlIHRhcmdldCBzbGVlcCBzdGF0ZSwgdGhlCitsb3dlc3QgcG93ZXIgKGhpZ2hlc3QgbnVtYmVyKSBzdGF0ZSBpdCBjYW4gYmUgcHV0IGludG8gaXMgYWxzbyBkZXRlcm1pbmVkIGJ5IHRoZQordGFyZ2V0IHN0YXRlIG9mIHRoZSBzeXN0ZW0uICBUaGUga2VybmVsIGlzIHRoZW4gc3VwcG9zZWQgdG8gdXNlIHRoZSBkZXZpY2UncworX1N4VyBjb250cm9sIG1ldGhvZCB0byBvYnRhaW4gdGhlIG51bWJlciBvZiB0aGF0IHN0YXRlLiAgSXQgYWxzbyBpcyBzdXBwb3NlZCB0bwordXNlIHRoZSBkZXZpY2UncyBfUFJXIGNvbnRyb2wgbWV0aG9kIHRvIGxlYXJuIHdoaWNoIHBvd2VyIHJlc291cmNlcyBuZWVkIHRvIGJlCitlbmFibGVkIGZvciB0aGUgZGV2aWNlIHRvIGJlIGFibGUgdG8gZ2VuZXJhdGUgd2FrZXVwIHNpZ25hbHMuCisKKzEuNC4gV2FrZXVwIFNpZ25hbGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitXYWtldXAgc2lnbmFscyBnZW5lcmF0ZWQgYnkgUENJIGRldmljZXMsIGVpdGhlciBhcyBuYXRpdmUgUENJIFBNRXMsIG9yIGFzCithIHJlc3VsdCBvZiB0aGUgZXhlY3V0aW9uIG9mIHRoZSBfRFNXIChvciBfUFNXKSBBQ1BJIGNvbnRyb2wgbWV0aG9kIGJlZm9yZQorcHV0dGluZyB0aGUgZGV2aWNlIGludG8gYSBsb3ctcG93ZXIgc3RhdGUsIGhhdmUgdG8gYmUgY2F1Z2h0IGFuZCBoYW5kbGVkIGFzCithcHByb3ByaWF0ZS4gIElmIHRoZXkgYXJlIHNlbnQgd2hpbGUgdGhlIHN5c3RlbSBpcyBpbiB0aGUgd29ya2luZyBzdGF0ZQorKEFDUEkgUzApLCB0aGV5IHNob3VsZCBiZSB0cmFuc2xhdGVkIGludG8gaW50ZXJydXB0cyBzbyB0aGF0IHRoZSBrZXJuZWwgY2FuCitwdXQgdGhlIGRldmljZXMgZ2VuZXJhdGluZyB0aGVtIGludG8gdGhlIGZ1bGwtcG93ZXIgc3RhdGUgYW5kIHRha2UgY2FyZSBvZiB0aGUKK2V2ZW50cyB0aGF0IHRyaWdnZXJlZCB0aGVtLiAgSW4gdHVybiwgaWYgdGhleSBhcmUgc2VudCB3aGlsZSB0aGUgc3lzdGVtIGlzCitzbGVlcGluZywgdGhleSBzaG91bGQgY2F1c2UgdGhlIHN5c3RlbSdzIGNvcmUgbG9naWMgdG8gdHJpZ2dlciB3YWtldXAuCisKK09uIEFDUEktYmFzZWQgc3lzdGVtcyB3YWtldXAgc2lnbmFscyBzZW50IGJ5IGNvbnZlbnRpb25hbCBQQ0kgZGV2aWNlcyBhcmUKK2NvbnZlcnRlZCBpbnRvIEFDUEkgR2VuZXJhbC1QdXJwb3NlIEV2ZW50cyAoR1BFcykgd2hpY2ggYXJlIGhhcmR3YXJlIHNpZ25hbHMKK2Zyb20gdGhlIHN5c3RlbSBjb3JlIGxvZ2ljIGdlbmVyYXRlZCBpbiByZXNwb25zZSB0byB2YXJpb3VzIGV2ZW50cyB0aGF0IG5lZWQgdG8KK2JlIGFjdGVkIHVwb24uICBFdmVyeSBHUEUgaXMgYXNzb2NpYXRlZCB3aXRoIG9uZSBvciBtb3JlIHNvdXJjZXMgb2YgcG90ZW50aWFsbHkKK2ludGVyZXN0aW5nIGV2ZW50cy4gIEluIHBhcnRpY3VsYXIsIGEgR1BFIG1heSBiZSBhc3NvY2lhdGVkIHdpdGggYSBQQ0kgZGV2aWNlCitjYXBhYmxlIG9mIHNpZ25hbGluZyB3YWtldXAuICBUaGUgaW5mb3JtYXRpb24gb24gdGhlIGNvbm5lY3Rpb25zIGJldHdlZW4gR1BFcworYW5kIGV2ZW50IHNvdXJjZXMgaXMgcmVjb3JkZWQgaW4gdGhlIHN5c3RlbSdzIEFDUEkgQklPUyBmcm9tIHdoZXJlIGl0IGNhbiBiZQorcmVhZCBieSB0aGUga2VybmVsLgorCitJZiBhIFBDSSBkZXZpY2Uga25vd24gdG8gdGhlIHN5c3RlbSdzIEFDUEkgQklPUyBzaWduYWxzIHdha2V1cCwgdGhlIEdQRQorYXNzb2NpYXRlZCB3aXRoIGl0IChpZiB0aGVyZSBpcyBvbmUpIGlzIHRyaWdnZXJlZC4gIFRoZSBHUEVzIGFzc29jaWF0ZWQgd2l0aCBQQ0kKK2JyaWRnZXMgbWF5IGFsc28gYmUgdHJpZ2dlcmVkIGluIHJlc3BvbnNlIHRvIGEgd2FrZXVwIHNpZ25hbCBmcm9tIG9uZSBvZiB0aGUKK2RldmljZXMgYmVsb3cgdGhlIGJyaWRnZSAodGhpcyBhbHNvIGlzIHRoZSBjYXNlIGZvciByb290IGJyaWRnZXMpIGFuZCwgZm9yCitleGFtcGxlLCBuYXRpdmUgUENJIFBNRXMgZnJvbSBkZXZpY2VzIHVua25vd24gdG8gdGhlIHN5c3RlbSdzIEFDUEkgQklPUyBtYXkgYmUKK2hhbmRsZWQgdGhpcyB3YXkuCisKK0EgR1BFIG1heSBiZSB0cmlnZ2VyZWQgd2hlbiB0aGUgc3lzdGVtIGlzIHNsZWVwaW5nIChpLmUuIHdoZW4gaXQgaXMgaW4gb25lIG9mCit0aGUgQUNQSSBTMS1TNCBzdGF0ZXMpLCBpbiB3aGljaCBjYXNlIHN5c3RlbSB3YWtldXAgaXMgc3RhcnRlZCBieSBpdHMgY29yZSBsb2dpYworKHRoZSBkZXZpY2UgdGhhdCB3YXMgdGhlIHNvdXJjZSBvZiB0aGUgc2lnbmFsIGNhdXNpbmcgdGhlIHN5c3RlbSB3YWtldXAgdG8gb2NjdXIKK21heSBiZSBpZGVudGlmaWVkIGxhdGVyKS4gIFRoZSBHUEVzIHVzZWQgaW4gc3VjaCBzaXR1YXRpb25zIGFyZSByZWZlcnJlZCB0byBhcword2FrZXVwIEdQRXMuCisKK1VzdWFsbHksIGhvd2V2ZXIsIEdQRXMgYXJlIGFsc28gdHJpZ2dlcmVkIHdoZW4gdGhlIHN5c3RlbSBpcyBpbiB0aGUgd29ya2luZworc3RhdGUgKEFDUEkgUzApIGFuZCBpbiB0aGF0IGNhc2UgdGhlIHN5c3RlbSdzIGNvcmUgbG9naWMgZ2VuZXJhdGVzIGEgU3lzdGVtCitDb250cm9sIEludGVycnVwdCAoU0NJKSB0byBub3RpZnkgdGhlIGtlcm5lbCBvZiB0aGUgZXZlbnQuICBUaGVuLCB0aGUgU0NJCitoYW5kbGVyIGlkZW50aWZpZXMgdGhlIEdQRSB0aGF0IGNhdXNlZCB0aGUgaW50ZXJydXB0IHRvIGJlIGdlbmVyYXRlZCB3aGljaCwKK2luIHR1cm4sIGFsbG93cyB0aGUga2VybmVsIHRvIGlkZW50aWZ5IHRoZSBzb3VyY2Ugb2YgdGhlIGV2ZW50ICh0aGF0IG1heSBiZQorYSBQQ0kgZGV2aWNlIHNpZ25hbGluZyB3YWtldXApLiAgVGhlIEdQRXMgdXNlZCBmb3Igbm90aWZ5aW5nIHRoZSBrZXJuZWwgb2YKK2V2ZW50cyBvY2N1cnJpbmcgd2hpbGUgdGhlIHN5c3RlbSBpcyBpbiB0aGUgd29ya2luZyBzdGF0ZSBhcmUgcmVmZXJyZWQgdG8gYXMKK3J1bnRpbWUgR1BFcy4KKworVW5mb3J0dW5hdGVseSwgdGhlcmUgaXMgbm8gc3RhbmRhcmQgd2F5IG9mIGhhbmRsaW5nIHdha2V1cCBzaWduYWxzIHNlbnQgYnkKK2NvbnZlbnRpb25hbCBQQ0kgZGV2aWNlcyBvbiBzeXN0ZW1zIHRoYXQgYXJlIG5vdCBBQ1BJLWJhc2VkLCBidXQgdGhlcmUgaXMgb25lCitmb3IgUENJIEV4cHJlc3MgZGV2aWNlcy4gIE5hbWVseSwgdGhlIFBDSSBFeHByZXNzIEJhc2UgU3BlY2lmaWNhdGlvbiBpbnRyb2R1Y2VkCithIG5hdGl2ZSBtZWNoYW5pc20gZm9yIGNvbnZlcnRpbmcgbmF0aXZlIFBDSSBQTUVzIGludG8gaW50ZXJydXB0cyBnZW5lcmF0ZWQgYnkKK3Jvb3QgcG9ydHMuICBGb3IgY29udmVudGlvbmFsIFBDSSBkZXZpY2VzIG5hdGl2ZSBQTUVzIGFyZSBvdXQtb2YtYmFuZCwgc28gdGhleQorYXJlIHJvdXRlZCBzZXBhcmF0ZWx5IGFuZCB0aGV5IG5lZWQgbm90IHBhc3MgdGhyb3VnaCBicmlkZ2VzIChpbiBwcmluY2lwbGUgdGhleQorbWF5IGJlIHJvdXRlZCBkaXJlY3RseSB0byB0aGUgc3lzdGVtJ3MgY29yZSBsb2dpYyksIGJ1dCBmb3IgUENJIEV4cHJlc3MgZGV2aWNlcwordGhleSBhcmUgaW4tYmFuZCBtZXNzYWdlcyB0aGF0IGhhdmUgdG8gcGFzcyB0aHJvdWdoIHRoZSBQQ0kgRXhwcmVzcyBoaWVyYXJjaHksCitpbmNsdWRpbmcgdGhlIHJvb3QgcG9ydCBvbiB0aGUgcGF0aCBmcm9tIHRoZSBkZXZpY2UgdG8gdGhlIFJvb3QgQ29tcGxleC4gIFRodXMKK2l0IHdhcyBwb3NzaWJsZSB0byBpbnRyb2R1Y2UgYSBtZWNoYW5pc20gYnkgd2hpY2ggYSByb290IHBvcnQgZ2VuZXJhdGVzIGFuCitpbnRlcnJ1cHQgd2hlbmV2ZXIgaXQgcmVjZWl2ZXMgYSBQTUUgbWVzc2FnZSBmcm9tIG9uZSBvZiB0aGUgZGV2aWNlcyBiZWxvdyBpdC4KK1RoZSBQQ0kgRXhwcmVzcyBSZXF1ZXN0ZXIgSUQgb2YgdGhlIGRldmljZSB0aGF0IHNlbnQgdGhlIFBNRSBtZXNzYWdlIGlzIHRoZW4KK3JlY29yZGVkIGluIG9uZSBvZiB0aGUgcm9vdCBwb3J0J3MgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgZnJvbSB3aGVyZSBpdCBtYXkgYmUKK3JlYWQgYnkgdGhlIGludGVycnVwdCBoYW5kbGVyIGFsbG93aW5nIHRoZSBkZXZpY2UgdG8gYmUgaWRlbnRpZmllZC4gIFtQTUUKK21lc3NhZ2VzIHNlbnQgYnkgUENJIEV4cHJlc3MgZW5kcG9pbnRzIGludGVncmF0ZWQgd2l0aCB0aGUgUm9vdCBDb21wbGV4IGRvbid0CitwYXNzIHRocm91Z2ggcm9vdCBwb3J0cywgYnV0IGluc3RlYWQgdGhleSBjYXVzZSBhIFJvb3QgQ29tcGxleCBFdmVudCBDb2xsZWN0b3IKKyhpZiB0aGVyZSBpcyBvbmUpIHRvIGdlbmVyYXRlIGludGVycnVwdHMuXQorCitJbiBwcmluY2lwbGUgdGhlIG5hdGl2ZSBQQ0kgRXhwcmVzcyBQTUUgc2lnbmFsaW5nIG1heSBhbHNvIGJlIHVzZWQgb24gQUNQSS1iYXNlZAorc3lzdGVtcyBhbG9uZyB3aXRoIHRoZSBHUEVzLCBidXQgdG8gdXNlIGl0IHRoZSBrZXJuZWwgaGFzIHRvIGFzayB0aGUgc3lzdGVtJ3MKK0FDUEkgQklPUyB0byByZWxlYXNlIGNvbnRyb2wgb2Ygcm9vdCBwb3J0IGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzLiAgVGhlIEFDUEkKK0JJT1MsIGhvd2V2ZXIsIGlzIG5vdCByZXF1aXJlZCB0byBhbGxvdyB0aGUga2VybmVsIHRvIGNvbnRyb2wgdGhlc2UgcmVnaXN0ZXJzCithbmQgaWYgaXQgZG9lc24ndCBkbyB0aGF0LCB0aGUga2VybmVsIG11c3Qgbm90IG1vZGlmeSB0aGVpciBjb250ZW50cy4gIE9mIGNvdXJzZQordGhlIG5hdGl2ZSBQQ0kgRXhwcmVzcyBQTUUgc2lnbmFsaW5nIGNhbm5vdCBiZSB1c2VkIGJ5IHRoZSBrZXJuZWwgaW4gdGhhdCBjYXNlLgorCisKKzIuIFBDSSBTdWJzeXN0ZW0gYW5kIERldmljZSBQb3dlciBNYW5hZ2VtZW50Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisyLjEuIERldmljZSBQb3dlciBNYW5hZ2VtZW50IENhbGxiYWNrcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBQQ0kgU3Vic3lzdGVtIHBhcnRpY2lwYXRlcyBpbiB0aGUgcG93ZXIgbWFuYWdlbWVudCBvZiBQQ0kgZGV2aWNlcyBpbiBhCitudW1iZXIgb2Ygd2F5cy4gIEZpcnN0IG9mIGFsbCwgaXQgcHJvdmlkZXMgYW4gaW50ZXJtZWRpYXRlIGNvZGUgbGF5ZXIgYmV0d2VlbgordGhlIGRldmljZSBwb3dlciBtYW5hZ2VtZW50IGNvcmUgKFBNIGNvcmUpIGFuZCBQQ0kgZGV2aWNlIGRyaXZlcnMuCitTcGVjaWZpY2FsbHksIHRoZSBwbSBmaWVsZCBvZiB0aGUgUENJIHN1YnN5c3RlbSdzIHN0cnVjdCBidXNfdHlwZSBvYmplY3QsCitwY2lfYnVzX3R5cGUsIHBvaW50cyB0byBhIHN0cnVjdCBkZXZfcG1fb3BzIG9iamVjdCwgcGNpX2Rldl9wbV9vcHMsIGNvbnRhaW5pbmcKK3BvaW50ZXJzIHRvIHNldmVyYWwgZGV2aWNlIHBvd2VyIG1hbmFnZW1lbnQgY2FsbGJhY2tzOgorCitjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBwY2lfZGV2X3BtX29wcyA9IHsKKwkucHJlcGFyZSA9IHBjaV9wbV9wcmVwYXJlLAorCS5jb21wbGV0ZSA9IHBjaV9wbV9jb21wbGV0ZSwKKwkuc3VzcGVuZCA9IHBjaV9wbV9zdXNwZW5kLAorCS5yZXN1bWUgPSBwY2lfcG1fcmVzdW1lLAorCS5mcmVlemUgPSBwY2lfcG1fZnJlZXplLAorCS50aGF3ID0gcGNpX3BtX3RoYXcsCisJLnBvd2Vyb2ZmID0gcGNpX3BtX3Bvd2Vyb2ZmLAorCS5yZXN0b3JlID0gcGNpX3BtX3Jlc3RvcmUsCisJLnN1c3BlbmRfbm9pcnEgPSBwY2lfcG1fc3VzcGVuZF9ub2lycSwKKwkucmVzdW1lX25vaXJxID0gcGNpX3BtX3Jlc3VtZV9ub2lycSwKKwkuZnJlZXplX25vaXJxID0gcGNpX3BtX2ZyZWV6ZV9ub2lycSwKKwkudGhhd19ub2lycSA9IHBjaV9wbV90aGF3X25vaXJxLAorCS5wb3dlcm9mZl9ub2lycSA9IHBjaV9wbV9wb3dlcm9mZl9ub2lycSwKKwkucmVzdG9yZV9ub2lycSA9IHBjaV9wbV9yZXN0b3JlX25vaXJxLAorCS5ydW50aW1lX3N1c3BlbmQgPSBwY2lfcG1fcnVudGltZV9zdXNwZW5kLAorCS5ydW50aW1lX3Jlc3VtZSA9IHBjaV9wbV9ydW50aW1lX3Jlc3VtZSwKKwkucnVudGltZV9pZGxlID0gcGNpX3BtX3J1bnRpbWVfaWRsZSwKK307CisKK1RoZXNlIGNhbGxiYWNrcyBhcmUgZXhlY3V0ZWQgYnkgdGhlIFBNIGNvcmUgaW4gdmFyaW91cyBzaXR1YXRpb25zIHJlbGF0ZWQgdG8KK2RldmljZSBwb3dlciBtYW5hZ2VtZW50IGFuZCB0aGV5LCBpbiB0dXJuLCBleGVjdXRlIHBvd2VyIG1hbmFnZW1lbnQgY2FsbGJhY2tzCitwcm92aWRlZCBieSBQQ0kgZGV2aWNlIGRyaXZlcnMuICBUaGV5IGFsc28gcGVyZm9ybSBwb3dlciBtYW5hZ2VtZW50IG9wZXJhdGlvbnMKK2ludm9sdmluZyBzb21lIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIG9mIFBDSSBkZXZpY2VzIHRoYXQgZGV2aWNlCitkcml2ZXJzIG5lZWQgbm90IGtub3cgb3IgY2FyZSBhYm91dC4KKworVGhlIHN0cnVjdHVyZSByZXByZXNlbnRpbmcgYSBQQ0kgZGV2aWNlLCBzdHJ1Y3QgcGNpX2RldiwgY29udGFpbnMgc2V2ZXJhbCBmaWVsZHMKK3RoYXQgdGhlc2UgY2FsbGJhY2tzIG9wZXJhdGUgb246CisKK3N0cnVjdCBwY2lfZGV2IHsKKwkuLi4KKwlwY2lfcG93ZXJfdCAgICAgY3VycmVudF9zdGF0ZTsgIC8qIEN1cnJlbnQgb3BlcmF0aW5nIHN0YXRlLiAqLworCWludAkJcG1fY2FwOwkJLyogUE0gY2FwYWJpbGl0eSBvZmZzZXQgaW4gdGhlCisJCQkJCSAgIGNvbmZpZ3VyYXRpb24gc3BhY2UgKi8KKwl1bnNpZ25lZCBpbnQJcG1lX3N1cHBvcnQ6NTsJLyogQml0bWFzayBvZiBzdGF0ZXMgZnJvbSB3aGljaCBQTUUjCisJCQkJCSAgIGNhbiBiZSBnZW5lcmF0ZWQgKi8KKwl1bnNpZ25lZCBpbnQJcG1lX2ludGVycnVwdDoxOy8qIElzIG5hdGl2ZSBQQ0llIFBNRSBzaWduYWxpbmcgdXNlZD8gKi8KKwl1bnNpZ25lZCBpbnQJZDFfc3VwcG9ydDoxOwkvKiBMb3cgcG93ZXIgc3RhdGUgRDEgaXMgc3VwcG9ydGVkICovCisJdW5zaWduZWQgaW50CWQyX3N1cHBvcnQ6MTsJLyogTG93IHBvd2VyIHN0YXRlIEQyIGlzIHN1cHBvcnRlZCAqLworCXVuc2lnbmVkIGludAlub19kMWQyOjE7CS8qIEQxIGFuZCBEMiBhcmUgZm9yYmlkZGVuICovCisJdW5zaWduZWQgaW50CXdha2V1cF9wcmVwYXJlZDoxOyAgLyogRGV2aWNlIHByZXBhcmVkIGZvciB3YWtlIHVwICovCisJdW5zaWduZWQgaW50CWQzX2RlbGF5OwkvKiBEMy0+RDAgdHJhbnNpdGlvbiB0aW1lIGluIG1zICovCisJLi4uCit9OworCitUaGV5IGFsc28gaW5kaXJlY3RseSB1c2Ugc29tZSBmaWVsZHMgb2YgdGhlIHN0cnVjdCBkZXZpY2UgdGhhdCBpcyBlbWJlZGRlZCBpbgorc3RydWN0IHBjaV9kZXYuCisKKzIuMi4gRGV2aWNlIEluaXRpYWxpemF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIFBDSSBzdWJzeXN0ZW0ncyBmaXJzdCB0YXNrIHJlbGF0ZWQgdG8gZGV2aWNlIHBvd2VyIG1hbmFnZW1lbnQgaXMgdG8KK3ByZXBhcmUgdGhlIGRldmljZSBmb3IgcG93ZXIgbWFuYWdlbWVudCBhbmQgaW5pdGlhbGl6ZSB0aGUgZmllbGRzIG9mIHN0cnVjdAorcGNpX2RldiB1c2VkIGZvciB0aGlzIHB1cnBvc2UuICBUaGlzIGhhcHBlbnMgaW4gdHdvIGZ1bmN0aW9ucyBkZWZpbmVkIGluCitkcml2ZXJzL3BjaS9wY2kuYywgcGNpX3BtX2luaXQoKSBhbmQgcGxhdGZvcm1fcGNpX3dha2V1cF9pbml0KCkuCisKK1RoZSBmaXJzdCBvZiB0aGVzZSBmdW5jdGlvbnMgY2hlY2tzIGlmIHRoZSBkZXZpY2Ugc3VwcG9ydHMgbmF0aXZlIFBDSSBQTQorYW5kIGlmIHRoYXQncyB0aGUgY2FzZSB0aGUgb2Zmc2V0IG9mIGl0cyBwb3dlciBtYW5hZ2VtZW50IGNhcGFiaWxpdHkgc3RydWN0dXJlCitpbiB0aGUgY29uZmlndXJhdGlvbiBzcGFjZSBpcyBzdG9yZWQgaW4gdGhlIHBtX2NhcCBmaWVsZCBvZiB0aGUgZGV2aWNlJ3Mgc3RydWN0CitwY2lfZGV2IG9iamVjdC4gIE5leHQsIHRoZSBmdW5jdGlvbiBjaGVja3Mgd2hpY2ggUENJIGxvdy1wb3dlciBzdGF0ZXMgYXJlCitzdXBwb3J0ZWQgYnkgdGhlIGRldmljZSBhbmQgZnJvbSB3aGljaCBsb3ctcG93ZXIgc3RhdGVzIHRoZSBkZXZpY2UgY2FuIGdlbmVyYXRlCituYXRpdmUgUENJIFBNRXMuICBUaGUgcG93ZXIgbWFuYWdlbWVudCBmaWVsZHMgb2YgdGhlIGRldmljZSdzIHN0cnVjdCBwY2lfZGV2IGFuZAordGhlIHN0cnVjdCBkZXZpY2UgZW1iZWRkZWQgaW4gaXQgYXJlIHVwZGF0ZWQgYWNjb3JkaW5nbHkgYW5kIHRoZSBnZW5lcmF0aW9uIG9mCitQTUVzIGJ5IHRoZSBkZXZpY2UgaXMgZGlzYWJsZWQuCisKK1RoZSBzZWNvbmQgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBkZXZpY2UgY2FuIGJlIHByZXBhcmVkIHRvIHNpZ25hbCB3YWtldXAgd2l0aAordGhlIGhlbHAgb2YgdGhlIHBsYXRmb3JtIGZpcm13YXJlLCBzdWNoIGFzIHRoZSBBQ1BJIEJJT1MuICBJZiB0aGF0IGlzIHRoZSBjYXNlLAordGhlIGZ1bmN0aW9uIHVwZGF0ZXMgdGhlIHdha2V1cCBmaWVsZHMgaW4gc3RydWN0IGRldmljZSBlbWJlZGRlZCBpbiB0aGUKK2RldmljZSdzIHN0cnVjdCBwY2lfZGV2IGFuZCB1c2VzIHRoZSBmaXJtd2FyZS1wcm92aWRlZCBtZXRob2QgdG8gcHJldmVudCB0aGUKK2RldmljZSBmcm9tIHNpZ25hbGluZyB3YWtldXAuCisKK0F0IHRoaXMgcG9pbnQgdGhlIGRldmljZSBpcyByZWFkeSBmb3IgcG93ZXIgbWFuYWdlbWVudC4gIEZvciBkcml2ZXJsZXNzIGRldmljZXMsCitob3dldmVyLCB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgbGltaXRlZCB0byBhIGZldyBiYXNpYyBvcGVyYXRpb25zIGNhcnJpZWQgb3V0CitkdXJpbmcgc3lzdGVtLXdpZGUgdHJhbnNpdGlvbnMgdG8gYSBzbGVlcCBzdGF0ZSBhbmQgYmFjayB0byB0aGUgd29ya2luZyBzdGF0ZS4KKworMi4zLiBSdW50aW1lIERldmljZSBQb3dlciBNYW5hZ2VtZW50CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBQQ0kgc3Vic3lzdGVtIHBsYXlzIGEgdml0YWwgcm9sZSBpbiB0aGUgcnVudGltZSBwb3dlciBtYW5hZ2VtZW50IG9mIFBDSQorZGV2aWNlcy4gIEZvciB0aGlzIHB1cnBvc2UgaXQgdXNlcyB0aGUgZ2VuZXJhbCBydW50aW1lIHBvd2VyIG1hbmFnZW1lbnQKKyhydW50aW1lIFBNKSBmcmFtZXdvcmsgZGVzY3JpYmVkIGluIERvY3VtZW50YXRpb24vcG93ZXIvcnVudGltZV9wbS50eHQuCitOYW1lbHksIGl0IHByb3ZpZGVzIHN1YnN5c3RlbS1sZXZlbCBjYWxsYmFja3M6CisKKwlwY2lfcG1fcnVudGltZV9zdXNwZW5kKCkKKwlwY2lfcG1fcnVudGltZV9yZXN1bWUoKQorCXBjaV9wbV9ydW50aW1lX2lkbGUoKQorCit0aGF0IGFyZSBleGVjdXRlZCBieSB0aGUgY29yZSBydW50aW1lIFBNIHJvdXRpbmVzLiAgSXQgYWxzbyBpbXBsZW1lbnRzIHRoZQorZW50aXJlIG1lY2hhbmljcyBuZWNlc3NhcnkgZm9yIGhhbmRsaW5nIHJ1bnRpbWUgd2FrZXVwIHNpZ25hbHMgZnJvbSBQQ0kgZGV2aWNlcworaW4gbG93LXBvd2VyIHN0YXRlcywgd2hpY2ggYXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nIHdvcmtzIGZvciBib3RoIHRoZSBuYXRpdmUKK1BDSSBFeHByZXNzIFBNRSBzaWduYWxpbmcgYW5kIHRoZSBBQ1BJIEdQRS1iYXNlZCB3YWtldXAgc2lnbmFsaW5nIGRlc2NyaWJlZCBpbgorU2VjdGlvbiAxLgorCitGaXJzdCwgYSBQQ0kgZGV2aWNlIGlzIHB1dCBpbnRvIGEgbG93LXBvd2VyIHN0YXRlLCBvciBzdXNwZW5kZWQsIHdpdGggdGhlIGhlbHAKK29mIHBtX3NjaGVkdWxlX3N1c3BlbmQoKSBvciBwbV9ydW50aW1lX3N1c3BlbmQoKSB3aGljaCBmb3IgUENJIGRldmljZXMgY2FsbAorcGNpX3BtX3J1bnRpbWVfc3VzcGVuZCgpIHRvIGRvIHRoZSBhY3R1YWwgam9iLiAgRm9yIHRoaXMgdG8gd29yaywgdGhlIGRldmljZSdzCitkcml2ZXIgaGFzIHRvIHByb3ZpZGUgYSBwbS0+cnVudGltZV9zdXNwZW5kKCkgY2FsbGJhY2sgKHNlZSBiZWxvdyksIHdoaWNoIGlzCitydW4gYnkgcGNpX3BtX3J1bnRpbWVfc3VzcGVuZCgpIGFzIHRoZSBmaXJzdCBhY3Rpb24uICBJZiB0aGUgZHJpdmVyJ3MgY2FsbGJhY2sKK3JldHVybnMgc3VjY2Vzc2Z1bGx5LCB0aGUgZGV2aWNlJ3Mgc3RhbmRhcmQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYXJlIHNhdmVkLAordGhlIGRldmljZSBpcyBwcmVwYXJlZCB0byBnZW5lcmF0ZSB3YWtldXAgc2lnbmFscyBhbmQsIGZpbmFsbHksIGl0IGlzIHB1dCBpbnRvCit0aGUgdGFyZ2V0IGxvdy1wb3dlciBzdGF0ZS4KKworVGhlIGxvdy1wb3dlciBzdGF0ZSB0byBwdXQgdGhlIGRldmljZSBpbnRvIGlzIHRoZSBsb3dlc3QtcG93ZXIgKGhpZ2hlc3QgbnVtYmVyKQorc3RhdGUgZnJvbSB3aGljaCBpdCBjYW4gc2lnbmFsIHdha2V1cC4gIFRoZSBleGFjdCBtZXRob2Qgb2Ygc2lnbmFsaW5nIHdha2V1cCBpcworc3lzdGVtLWRlcGVuZGVudCBhbmQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgUENJIHN1YnN5c3RlbSBvbiB0aGUgYmFzaXMgb2YgdGhlCityZXBvcnRlZCBjYXBhYmlsaXRpZXMgb2YgdGhlIGRldmljZSBhbmQgdGhlIHBsYXRmb3JtIGZpcm13YXJlLiAgVG8gcHJlcGFyZSB0aGUKK2RldmljZSBmb3Igc2lnbmFsaW5nIHdha2V1cCBhbmQgcHV0IGl0IGludG8gdGhlIHNlbGVjdGVkIGxvdy1wb3dlciBzdGF0ZSwgdGhlCitQQ0kgc3Vic3lzdGVtIGNhbiB1c2UgdGhlIHBsYXRmb3JtIGZpcm13YXJlIGFzIHdlbGwgYXMgdGhlIGRldmljZSdzIG5hdGl2ZSBQQ0kKK1BNIGNhcGFiaWxpdGllcywgaWYgc3VwcG9ydGVkLgorCitJdCBpcyBleHBlY3RlZCB0aGF0IHRoZSBkZXZpY2UgZHJpdmVyJ3MgcG0tPnJ1bnRpbWVfc3VzcGVuZCgpIGNhbGxiYWNrIHdpbGwKK25vdCBhdHRlbXB0IHRvIHByZXBhcmUgdGhlIGRldmljZSBmb3Igc2lnbmFsaW5nIHdha2V1cCBvciB0byBwdXQgaXQgaW50byBhCitsb3ctcG93ZXIgc3RhdGUuICBUaGUgZHJpdmVyIG91Z2h0IHRvIGxlYXZlIHRoZXNlIHRhc2tzIHRvIHRoZSBQQ0kgc3Vic3lzdGVtCit0aGF0IGhhcyBhbGwgb2YgdGhlIGluZm9ybWF0aW9uIG5lY2Vzc2FyeSB0byBwZXJmb3JtIHRoZW0uCisKK0Egc3VzcGVuZGVkIGRldmljZSBpcyBicm91Z2h0IGJhY2sgaW50byB0aGUgImFjdGl2ZSIgc3RhdGUsIG9yIHJlc3VtZWQsCit3aXRoIHRoZSBoZWxwIG9mIHBtX3JlcXVlc3RfcmVzdW1lKCkgb3IgcG1fcnVudGltZV9yZXN1bWUoKSB3aGljaCBib3RoIGNhbGwKK3BjaV9wbV9ydW50aW1lX3Jlc3VtZSgpIGZvciBQQ0kgZGV2aWNlcy4gIEFnYWluLCB0aGlzIG9ubHkgd29ya3MgaWYgdGhlIGRldmljZSdzCitkcml2ZXIgcHJvdmlkZXMgYSBwbS0+cnVudGltZV9yZXN1bWUoKSBjYWxsYmFjayAoc2VlIGJlbG93KS4gIEhvd2V2ZXIsIGJlZm9yZQordGhlIGRyaXZlcidzIGNhbGxiYWNrIGlzIGV4ZWN1dGVkLCBwY2lfcG1fcnVudGltZV9yZXN1bWUoKSBicmluZ3MgdGhlIGRldmljZQorYmFjayBpbnRvIHRoZSBmdWxsLXBvd2VyIHN0YXRlLCBwcmV2ZW50cyBpdCBmcm9tIHNpZ25hbGluZyB3YWtldXAgd2hpbGUgaW4gdGhhdAorc3RhdGUgYW5kIHJlc3RvcmVzIGl0cyBzdGFuZGFyZCBjb25maWd1cmF0aW9uIHJlZ2lzdGVycy4gIFRodXMgdGhlIGRyaXZlcidzCitjYWxsYmFjayBuZWVkIG5vdCB3b3JyeSBhYm91dCB0aGUgUENJLXNwZWNpZmljIGFzcGVjdHMgb2YgdGhlIGRldmljZSByZXN1bWUuCisKK05vdGUgdGhhdCBnZW5lcmFsbHkgcGNpX3BtX3J1bnRpbWVfcmVzdW1lKCkgbWF5IGJlIGNhbGxlZCBpbiB0d28gZGlmZmVyZW50CitzaXR1YXRpb25zLiAgRmlyc3QsIGl0IG1heSBiZSBjYWxsZWQgYXQgdGhlIHJlcXVlc3Qgb2YgdGhlIGRldmljZSdzIGRyaXZlciwgZm9yCitleGFtcGxlIGlmIHRoZXJlIGFyZSBzb21lIGRhdGEgZm9yIGl0IHRvIHByb2Nlc3MuICBTZWNvbmQsIGl0IG1heSBiZSBjYWxsZWQKK2FzIGEgcmVzdWx0IG9mIGEgd2FrZXVwIHNpZ25hbCBmcm9tIHRoZSBkZXZpY2UgaXRzZWxmICh0aGlzIHNvbWV0aW1lcyBpcworcmVmZXJyZWQgdG8gYXMgInJlbW90ZSB3YWtldXAiKS4gIE9mIGNvdXJzZSwgZm9yIHRoaXMgcHVycG9zZSB0aGUgd2FrZXVwIHNpZ25hbAoraXMgaGFuZGxlZCBpbiBvbmUgb2YgdGhlIHdheXMgZGVzY3JpYmVkIGluIFNlY3Rpb24gMSBhbmQgZmluYWxseSBjb252ZXJ0ZWQgaW50bworYSBub3RpZmljYXRpb24gZm9yIHRoZSBQQ0kgc3Vic3lzdGVtIGFmdGVyIHRoZSBzb3VyY2UgZGV2aWNlIGhhcyBiZWVuCitpZGVudGlmaWVkLgorCitUaGUgcGNpX3BtX3J1bnRpbWVfaWRsZSgpIGZ1bmN0aW9uLCBjYWxsZWQgZm9yIFBDSSBkZXZpY2VzIGJ5IHBtX3J1bnRpbWVfaWRsZSgpCithbmQgcG1fcmVxdWVzdF9pZGxlKCksIGV4ZWN1dGVzIHRoZSBkZXZpY2UgZHJpdmVyJ3MgcG0tPnJ1bnRpbWVfaWRsZSgpCitjYWxsYmFjaywgaWYgZGVmaW5lZCwgYW5kIGlmIHRoYXQgY2FsbGJhY2sgZG9lc24ndCByZXR1cm4gZXJyb3IgY29kZSAob3IgaXMgbm90CitwcmVzZW50IGF0IGFsbCksIHN1c3BlbmRzIHRoZSBkZXZpY2Ugd2l0aCB0aGUgaGVscCBvZiBwbV9ydW50aW1lX3N1c3BlbmQoKS4KK1NvbWV0aW1lcyBwY2lfcG1fcnVudGltZV9pZGxlKCkgaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIFBNIGNvcmUgKGZvcgorZXhhbXBsZSwgaXQgaXMgY2FsbGVkIHJpZ2h0IGFmdGVyIHRoZSBkZXZpY2UgaGFzIGp1c3QgYmVlbiByZXN1bWVkKSwgaW4gd2hpY2gKK2Nhc2VzIGl0IGlzIGV4cGVjdGVkIHRvIHN1c3BlbmQgdGhlIGRldmljZSBpZiB0aGF0IG1ha2VzIHNlbnNlLiAgVXN1YWxseSwKK2hvd2V2ZXIsIHRoZSBQQ0kgc3Vic3lzdGVtIGRvZXNuJ3QgcmVhbGx5IGtub3cgaWYgdGhlIGRldmljZSByZWFsbHkgY2FuIGJlCitzdXNwZW5kZWQsIHNvIGl0IGxldHMgdGhlIGRldmljZSdzIGRyaXZlciBkZWNpZGUgYnkgcnVubmluZyBpdHMKK3BtLT5ydW50aW1lX2lkbGUoKSBjYWxsYmFjay4KKworMi40LiBTeXN0ZW0tV2lkZSBQb3dlciBUcmFuc2l0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlcmUgYXJlIGEgZmV3IGRpZmZlcmVudCB0eXBlcyBvZiBzeXN0ZW0td2lkZSBwb3dlciB0cmFuc2l0aW9ucywgZGVzY3JpYmVkIGluCitEb2N1bWVudGF0aW9uL3Bvd2VyL2RldmljZXMudHh0LiAgRWFjaCBvZiB0aGVtIHJlcXVpcmVzIGRldmljZXMgdG8gYmUgaGFuZGxlZAoraW4gYSBzcGVjaWZpYyB3YXkgYW5kIHRoZSBQTSBjb3JlIGV4ZWN1dGVzIHN1YnN5c3RlbS1sZXZlbCBwb3dlciBtYW5hZ2VtZW50CitjYWxsYmFja3MgZm9yIHRoaXMgcHVycG9zZS4gIFRoZXkgYXJlIGV4ZWN1dGVkIGluIHBoYXNlcyBzdWNoIHRoYXQgZWFjaCBwaGFzZQoraW52b2x2ZXMgZXhlY3V0aW5nIHRoZSBzYW1lIHN1YnN5c3RlbS1sZXZlbCBjYWxsYmFjayBmb3IgZXZlcnkgZGV2aWNlIGJlbG9uZ2luZwordG8gdGhlIGdpdmVuIHN1YnN5c3RlbSBiZWZvcmUgdGhlIG5leHQgcGhhc2UgYmVnaW5zLiAgVGhlc2UgcGhhc2VzIGFsd2F5cyBydW4KK2FmdGVyIHRhc2tzIGhhdmUgYmVlbiBmcm96ZW4uCisKKzIuNC4xLiBTeXN0ZW0gU3VzcGVuZAorCitXaGVuIHRoZSBzeXN0ZW0gaXMgZ29pbmcgaW50byBhIHNsZWVwIHN0YXRlIGluIHdoaWNoIHRoZSBjb250ZW50cyBvZiBtZW1vcnkgd2lsbAorYmUgcHJlc2VydmVkLCBzdWNoIGFzIG9uZSBvZiB0aGUgQUNQSSBzbGVlcCBzdGF0ZXMgUzEtUzMsIHRoZSBwaGFzZXMgYXJlOgorCisJcHJlcGFyZSwgc3VzcGVuZCwgc3VzcGVuZF9ub2lycS4KKworVGhlIGZvbGxvd2luZyBQQ0kgYnVzIHR5cGUncyBjYWxsYmFja3MsIHJlc3BlY3RpdmVseSwgYXJlIHVzZWQgaW4gdGhlc2UgcGhhc2VzOgorCisJcGNpX3BtX3ByZXBhcmUoKQorCXBjaV9wbV9zdXNwZW5kKCkKKwlwY2lfcG1fc3VzcGVuZF9ub2lycSgpCisKK1RoZSBwY2lfcG1fcHJlcGFyZSgpIHJvdXRpbmUgZmlyc3QgcHV0cyB0aGUgZGV2aWNlIGludG8gdGhlICJmdWxseSBmdW5jdGlvbmFsIgorc3RhdGUgd2l0aCB0aGUgaGVscCBvZiBwbV9ydW50aW1lX3Jlc3VtZSgpLiAgVGhlbiwgaXQgZXhlY3V0ZXMgdGhlIGRldmljZQorZHJpdmVyJ3MgcG0tPnByZXBhcmUoKSBjYWxsYmFjayBpZiBkZWZpbmVkIChpLmUuIGlmIHRoZSBkcml2ZXIncyBzdHJ1Y3QKK2Rldl9wbV9vcHMgb2JqZWN0IGlzIHByZXNlbnQgYW5kIHRoZSBwcmVwYXJlIHBvaW50ZXIgaW4gdGhhdCBvYmplY3QgaXMgdmFsaWQpLgorCitUaGUgcGNpX3BtX3N1c3BlbmQoKSByb3V0aW5lIGZpcnN0IGNoZWNrcyBpZiB0aGUgZGV2aWNlJ3MgZHJpdmVyIGltcGxlbWVudHMKK2xlZ2FjeSBQQ0kgc3VzcGVuZCByb3V0aW5lcyAoc2VlIFNlY3Rpb24gMyksIGluIHdoaWNoIGNhc2UgdGhlIGRyaXZlcidzIGxlZ2FjeQorc3VzcGVuZCBjYWxsYmFjayBpcyBleGVjdXRlZCwgaWYgcHJlc2VudCwgYW5kIGl0cyByZXN1bHQgaXMgcmV0dXJuZWQuICBOZXh0LCBpZgordGhlIGRldmljZSdzIGRyaXZlciBkb2Vzbid0IHByb3ZpZGUgYSBzdHJ1Y3QgZGV2X3BtX29wcyBvYmplY3QgKGNvbnRhaW5pbmcKK3BvaW50ZXJzIHRvIHRoZSBkcml2ZXIncyBjYWxsYmFja3MpLCBwY2lfcG1fZGVmYXVsdF9zdXNwZW5kKCkgaXMgY2FsbGVkLCB3aGljaAorc2ltcGx5IHR1cm5zIG9mZiB0aGUgZGV2aWNlJ3MgYnVzIG1hc3RlciBjYXBhYmlsaXR5IGFuZCBydW5zCitwY2liaW9zX2Rpc2FibGVfZGV2aWNlKCkgdG8gZGlzYWJsZSBpdCwgdW5sZXNzIHRoZSBkZXZpY2UgaXMgYSBicmlkZ2UgKFBDSQorYnJpZGdlcyBhcmUgaWdub3JlZCBieSB0aGlzIHJvdXRpbmUpLiAgTmV4dCwgdGhlIGRldmljZSBkcml2ZXIncyBwbS0+c3VzcGVuZCgpCitjYWxsYmFjayBpcyBleGVjdXRlZCwgaWYgZGVmaW5lZCwgYW5kIGl0cyByZXN1bHQgaXMgcmV0dXJuZWQgaWYgaXQgZmFpbHMuCitGaW5hbGx5LCBwY2lfZml4dXBfZGV2aWNlKCkgaXMgY2FsbGVkIHRvIGFwcGx5IGhhcmR3YXJlIHN1c3BlbmQgcXVpcmtzIHJlbGF0ZWQKK3RvIHRoZSBkZXZpY2UgaWYgbmVjZXNzYXJ5LgorCitOb3RlIHRoYXQgdGhlIHN1c3BlbmQgcGhhc2UgaXMgY2FycmllZCBvdXQgYXN5bmNocm9ub3VzbHkgZm9yIFBDSSBkZXZpY2VzLCBzbwordGhlIHBjaV9wbV9zdXNwZW5kKCkgY2FsbGJhY2sgbWF5IGJlIGV4ZWN1dGVkIGluIHBhcmFsbGVsIGZvciBhbnkgcGFpciBvZiBQQ0kKK2RldmljZXMgdGhhdCBkb24ndCBkZXBlbmQgb24gZWFjaCBvdGhlciBpbiBhIGtub3duIHdheSAoaS5lLiBub25lIG9mIHRoZSBwYXRocworaW4gdGhlIGRldmljZSB0cmVlIGZyb20gdGhlIHJvb3QgYnJpZGdlIHRvIGEgbGVhZiBkZXZpY2UgY29udGFpbnMgYm90aCBvZiB0aGVtKS4KKworVGhlIHBjaV9wbV9zdXNwZW5kX25vaXJxKCkgcm91dGluZSBpcyBleGVjdXRlZCBhZnRlciBzdXNwZW5kX2RldmljZV9pcnFzKCkgaGFzCitiZWVuIGNhbGxlZCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgZGV2aWNlIGRyaXZlcidzIGludGVycnVwdCBoYW5kbGVyIHdvbid0IGJlCitpbnZva2VkIHdoaWxlIHRoaXMgcm91dGluZSBpcyBydW5uaW5nLiAgSXQgZmlyc3QgY2hlY2tzIGlmIHRoZSBkZXZpY2UncyBkcml2ZXIKK2ltcGxlbWVudHMgbGVnYWN5IFBDSSBzdXNwZW5kcyByb3V0aW5lcyAoU2VjdGlvbiAzKSwgaW4gd2hpY2ggY2FzZSB0aGUgbGVnYWN5CitsYXRlIHN1c3BlbmQgcm91dGluZSBpcyBjYWxsZWQgYW5kIGl0cyByZXN1bHQgaXMgcmV0dXJuZWQgKHRoZSBzdGFuZGFyZAorY29uZmlndXJhdGlvbiByZWdpc3RlcnMgb2YgdGhlIGRldmljZSBhcmUgc2F2ZWQgaWYgdGhlIGRyaXZlcidzIGNhbGxiYWNrIGhhc24ndAorZG9uZSB0aGF0KS4gIFNlY29uZCwgaWYgdGhlIGRldmljZSBkcml2ZXIncyBzdHJ1Y3QgZGV2X3BtX29wcyBvYmplY3QgaXMgbm90CitwcmVzZW50LCB0aGUgZGV2aWNlJ3Mgc3RhbmRhcmQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYXJlIHNhdmVkIGFuZCB0aGUgcm91dGluZQorcmV0dXJucyBzdWNjZXNzLiAgT3RoZXJ3aXNlIHRoZSBkZXZpY2UgZHJpdmVyJ3MgcG0tPnN1c3BlbmRfbm9pcnEoKSBjYWxsYmFjayBpcworZXhlY3V0ZWQsIGlmIHByZXNlbnQsIGFuZCBpdHMgcmVzdWx0IGlzIHJldHVybmVkIGlmIGl0IGZhaWxzLiAgTmV4dCwgaWYgdGhlCitkZXZpY2UncyBzdGFuZGFyZCBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBoYXZlbid0IGJlZW4gc2F2ZWQgeWV0IChvbmUgb2YgdGhlCitkZXZpY2UgZHJpdmVyJ3MgY2FsbGJhY2tzIGV4ZWN1dGVkIGJlZm9yZSBtaWdodCBkbyB0aGF0KSwgcGNpX3BtX3N1c3BlbmRfbm9pcnEoKQorc2F2ZXMgdGhlbSwgcHJlcGFyZXMgdGhlIGRldmljZSB0byBzaWduYWwgd2FrZXVwIChpZiBuZWNlc3NhcnkpIGFuZCBwdXRzIGl0IGludG8KK2EgbG93LXBvd2VyIHN0YXRlLgorCitUaGUgbG93LXBvd2VyIHN0YXRlIHRvIHB1dCB0aGUgZGV2aWNlIGludG8gaXMgdGhlIGxvd2VzdC1wb3dlciAoaGlnaGVzdCBudW1iZXIpCitzdGF0ZSBmcm9tIHdoaWNoIGl0IGNhbiBzaWduYWwgd2FrZXVwIHdoaWxlIHRoZSBzeXN0ZW0gaXMgaW4gdGhlIHRhcmdldCBzbGVlcAorc3RhdGUuICBKdXN0IGxpa2UgaW4gdGhlIHJ1bnRpbWUgUE0gY2FzZSBkZXNjcmliZWQgYWJvdmUsIHRoZSBtZWNoYW5pc20gb2YKK3NpZ25hbGluZyB3YWtldXAgaXMgc3lzdGVtLWRlcGVuZGVudCBhbmQgZGV0ZXJtaW5lZCBieSB0aGUgUENJIHN1YnN5c3RlbSwgd2hpY2gKK2lzIGFsc28gcmVzcG9uc2libGUgZm9yIHByZXBhcmluZyB0aGUgZGV2aWNlIHRvIHNpZ25hbCB3YWtldXAgZnJvbSB0aGUgc3lzdGVtJ3MKK3RhcmdldCBzbGVlcCBzdGF0ZSBhcyBhcHByb3ByaWF0ZS4KKworUENJIGRldmljZSBkcml2ZXJzICh0aGF0IGRvbid0IGltcGxlbWVudCBsZWdhY3kgcG93ZXIgbWFuYWdlbWVudCBjYWxsYmFja3MpIGFyZQorZ2VuZXJhbGx5IG5vdCBleHBlY3RlZCB0byBwcmVwYXJlIGRldmljZXMgZm9yIHNpZ25hbGluZyB3YWtldXAgb3IgdG8gcHV0IHRoZW0KK2ludG8gbG93LXBvd2VyIHN0YXRlcy4gIEhvd2V2ZXIsIGlmIG9uZSBvZiB0aGUgZHJpdmVyJ3Mgc3VzcGVuZCBjYWxsYmFja3MKKyhwbS0+c3VzcGVuZCgpIG9yIHBtLT5zdXNwZW5kX25vaXJxKCkpIHNhdmVzIHRoZSBkZXZpY2UncyBzdGFuZGFyZCBjb25maWd1cmF0aW9uCityZWdpc3RlcnMsIHBjaV9wbV9zdXNwZW5kX25vaXJxKCkgd2lsbCBhc3N1bWUgdGhhdCB0aGUgZGV2aWNlIGhhcyBiZWVuIHByZXBhcmVkCit0byBzaWduYWwgd2FrZXVwIGFuZCBwdXQgaW50byBhIGxvdy1wb3dlciBzdGF0ZSBieSB0aGUgZHJpdmVyICh0aGUgZHJpdmVyIGlzCit0aGVuIGFzc3VtZWQgdG8gaGF2ZSB1c2VkIHRoZSBoZWxwZXIgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHRoZSBQQ0kgc3Vic3lzdGVtIGZvcgordGhpcyBwdXJwb3NlKS4gIFBDSSBkZXZpY2UgZHJpdmVycyBhcmUgbm90IGVuY291cmFnZWQgdG8gZG8gdGhhdCwgYnV0IGluIHNvbWUKK3JhcmUgY2FzZXMgZG9pbmcgdGhhdCBpbiB0aGUgZHJpdmVyIG1heSBiZSB0aGUgb3B0aW11bSBhcHByb2FjaC4KKworMi40LjIuIFN5c3RlbSBSZXN1bWUKKworV2hlbiB0aGUgc3lzdGVtIGlzIHVuZGVyZ29pbmcgYSB0cmFuc2l0aW9uIGZyb20gYSBzbGVlcCBzdGF0ZSBpbiB3aGljaCB0aGUKK2NvbnRlbnRzIG9mIG1lbW9yeSBoYXZlIGJlZW4gcHJlc2VydmVkLCBzdWNoIGFzIG9uZSBvZiB0aGUgQUNQSSBzbGVlcCBzdGF0ZXMKK1MxLVMzLCBpbnRvIHRoZSB3b3JraW5nIHN0YXRlIChBQ1BJIFMwKSwgdGhlIHBoYXNlcyBhcmU6CisKKwlyZXN1bWVfbm9pcnEsIHJlc3VtZSwgY29tcGxldGUuCisKK1RoZSBmb2xsb3dpbmcgUENJIGJ1cyB0eXBlJ3MgY2FsbGJhY2tzLCByZXNwZWN0aXZlbHksIGFyZSBleGVjdXRlZCBpbiB0aGVzZQorcGhhc2VzOgorCisJcGNpX3BtX3Jlc3VtZV9ub2lycSgpCisJcGNpX3BtX3Jlc3VtZSgpCisJcGNpX3BtX2NvbXBsZXRlKCkKKworVGhlIHBjaV9wbV9yZXN1bWVfbm9pcnEoKSByb3V0aW5lIGZpcnN0IHB1dHMgdGhlIGRldmljZSBpbnRvIHRoZSBmdWxsLXBvd2VyCitzdGF0ZSwgcmVzdG9yZXMgaXRzIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGFuZCBhcHBsaWVzIGVhcmx5IHJlc3VtZQoraGFyZHdhcmUgcXVpcmtzIHJlbGF0ZWQgdG8gdGhlIGRldmljZSwgaWYgbmVjZXNzYXJ5LiAgVGhpcyBpcyBkb25lCit1bmNvbmRpdGlvbmFsbHksIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QgdGhlIGRldmljZSdzIGRyaXZlciBpbXBsZW1lbnRzCitsZWdhY3kgUENJIHBvd2VyIG1hbmFnZW1lbnQgY2FsbGJhY2tzICh0aGlzIHdheSBhbGwgUENJIGRldmljZXMgYXJlIGluIHRoZQorZnVsbC1wb3dlciBzdGF0ZSBhbmQgdGhlaXIgc3RhbmRhcmQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgaGF2ZSBiZWVuIHJlc3RvcmVkCit3aGVuIHRoZWlyIGludGVycnVwdCBoYW5kbGVycyBhcmUgaW52b2tlZCBmb3IgdGhlIGZpcnN0IHRpbWUgZHVyaW5nIHJlc3VtZSwKK3doaWNoIGFsbG93cyB0aGUga2VybmVsIHRvIGF2b2lkIHByb2JsZW1zIHdpdGggdGhlIGhhbmRsaW5nIG9mIHNoYXJlZCBpbnRlcnJ1cHRzCitieSBkcml2ZXJzIHdob3NlIGRldmljZXMgYXJlIHN0aWxsIHN1c3BlbmRlZCkuICBJZiBsZWdhY3kgUENJIHBvd2VyIG1hbmFnZW1lbnQKK2NhbGxiYWNrcyAoc2VlIFNlY3Rpb24gMykgYXJlIGltcGxlbWVudGVkIGJ5IHRoZSBkZXZpY2UncyBkcml2ZXIsIHRoZSBsZWdhY3kKK2Vhcmx5IHJlc3VtZSBjYWxsYmFjayBpcyBleGVjdXRlZCBhbmQgaXRzIHJlc3VsdCBpcyByZXR1cm5lZC4gIE90aGVyd2lzZSwgdGhlCitkZXZpY2UgZHJpdmVyJ3MgcG0tPnJlc3VtZV9ub2lycSgpIGNhbGxiYWNrIGlzIGV4ZWN1dGVkLCBpZiBkZWZpbmVkLCBhbmQgaXRzCityZXN1bHQgaXMgcmV0dXJuZWQuCisKK1RoZSBwY2lfcG1fcmVzdW1lKCkgcm91dGluZSBmaXJzdCBjaGVja3MgaWYgdGhlIGRldmljZSdzIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24KK3JlZ2lzdGVycyBoYXZlIGJlZW4gcmVzdG9yZWQgYW5kIHJlc3RvcmVzIHRoZW0gaWYgdGhhdCdzIG5vdCB0aGUgY2FzZSAodGhpcworb25seSBpcyBuZWNlc3NhcnkgaW4gdGhlIGVycm9yIHBhdGggZHVyaW5nIGEgZmFpbGluZyBzdXNwZW5kKS4gIE5leHQsIHJlc3VtZQoraGFyZHdhcmUgcXVpcmtzIHJlbGF0ZWQgdG8gdGhlIGRldmljZSBhcmUgYXBwbGllZCwgaWYgbmVjZXNzYXJ5LCBhbmQgaWYgdGhlCitkZXZpY2UncyBkcml2ZXIgaW1wbGVtZW50cyBsZWdhY3kgUENJIHBvd2VyIG1hbmFnZW1lbnQgY2FsbGJhY2tzIChzZWUKK1NlY3Rpb24gMyksIHRoZSBkcml2ZXIncyBsZWdhY3kgcmVzdW1lIGNhbGxiYWNrIGlzIGV4ZWN1dGVkIGFuZCBpdHMgcmVzdWx0IGlzCityZXR1cm5lZC4gIE90aGVyd2lzZSwgdGhlIGRldmljZSdzIHdha2V1cCBzaWduYWxpbmcgbWVjaGFuaXNtcyBhcmUgYmxvY2tlZCBhbmQKK2l0cyBkcml2ZXIncyBwbS0+cmVzdW1lKCkgY2FsbGJhY2sgaXMgZXhlY3V0ZWQsIGlmIGRlZmluZWQgKHRoZSBjYWxsYmFjaydzCityZXN1bHQgaXMgdGhlbiByZXR1cm5lZCkuCisKK1RoZSByZXN1bWUgcGhhc2UgaXMgY2FycmllZCBvdXQgYXN5bmNocm9ub3VzbHkgZm9yIFBDSSBkZXZpY2VzLCBsaWtlIHRoZQorc3VzcGVuZCBwaGFzZSBkZXNjcmliZWQgYWJvdmUsIHdoaWNoIG1lYW5zIHRoYXQgaWYgdHdvIFBDSSBkZXZpY2VzIGRvbid0IGRlcGVuZAorb24gZWFjaCBvdGhlciBpbiBhIGtub3duIHdheSwgdGhlIHBjaV9wbV9yZXN1bWUoKSByb3V0aW5lIG1heSBiZSBleGVjdXRlZCBmb3IKK3RoZSBib3RoIG9mIHRoZW0gaW4gcGFyYWxsZWwuCisKK1RoZSBwY2lfcG1fY29tcGxldGUoKSByb3V0aW5lIG9ubHkgZXhlY3V0ZXMgdGhlIGRldmljZSBkcml2ZXIncyBwbS0+Y29tcGxldGUoKQorY2FsbGJhY2ssIGlmIGRlZmluZWQuCisKKzIuNC4zLiBTeXN0ZW0gSGliZXJuYXRpb24KKworU3lzdGVtIGhpYmVybmF0aW9uIGlzIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiBzeXN0ZW0gc3VzcGVuZCwgYmVjYXVzZSBpdCByZXF1aXJlcworYSBzeXN0ZW0gaW1hZ2UgdG8gYmUgY3JlYXRlZCBhbmQgd3JpdHRlbiBpbnRvIGEgcGVyc2lzdGVudCBzdG9yYWdlIG1lZGl1bS4gIFRoZQoraW1hZ2UgaXMgY3JlYXRlZCBhdG9taWNhbGx5IGFuZCBhbGwgZGV2aWNlcyBhcmUgcXVpZXNjZWQsIG9yIGZyb3plbiwgYmVmb3JlIHRoYXQKK2hhcHBlbnMuCisKK1RoZSBmcmVlemluZyBvZiBkZXZpY2VzIGlzIGNhcnJpZWQgb3V0IGFmdGVyIGVub3VnaCBtZW1vcnkgaGFzIGJlZW4gZnJlZWQgKGF0Cit0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcgdGhlIGltYWdlIGNyZWF0aW9uIHJlcXVpcmVzIGF0IGxlYXN0IDUwJSBvZiBzeXN0ZW0gUkFNCit0byBiZSBmcmVlKSBpbiB0aGUgZm9sbG93aW5nIHRocmVlIHBoYXNlczoKKworCXByZXBhcmUsIGZyZWV6ZSwgZnJlZXplX25vaXJxCisKK3RoYXQgY29ycmVzcG9uZCB0byB0aGUgUENJIGJ1cyB0eXBlJ3MgY2FsbGJhY2tzOgorCisJcGNpX3BtX3ByZXBhcmUoKQorCXBjaV9wbV9mcmVlemUoKQorCXBjaV9wbV9mcmVlemVfbm9pcnEoKQorCitUaGlzIG1lYW5zIHRoYXQgdGhlIHByZXBhcmUgcGhhc2UgaXMgZXhhY3RseSB0aGUgc2FtZSBhcyBmb3Igc3lzdGVtIHN1c3BlbmQuCitUaGUgb3RoZXIgdHdvIHBoYXNlcywgaG93ZXZlciwgYXJlIGRpZmZlcmVudC4KKworVGhlIHBjaV9wbV9mcmVlemUoKSByb3V0aW5lIGlzIHF1aXRlIHNpbWlsYXIgdG8gcGNpX3BtX3N1c3BlbmQoKSwgYnV0IGl0IHJ1bnMKK3RoZSBkZXZpY2UgZHJpdmVyJ3MgcG0tPmZyZWV6ZSgpIGNhbGxiYWNrLCBpZiBkZWZpbmVkLCBpbnN0ZWFkIG9mIHBtLT5zdXNwZW5kKCksCithbmQgaXQgZG9lc24ndCBhcHBseSB0aGUgc3VzcGVuZC1yZWxhdGVkIGhhcmR3YXJlIHF1aXJrcy4gIEl0IGlzIGV4ZWN1dGVkCithc3luY2hyb25vdXNseSBmb3IgZGlmZmVyZW50IFBDSSBkZXZpY2VzIHRoYXQgZG9uJ3QgZGVwZW5kIG9uIGVhY2ggb3RoZXIgaW4gYQora25vd24gd2F5LgorCitUaGUgcGNpX3BtX2ZyZWV6ZV9ub2lycSgpIHJvdXRpbmUsIGluIHR1cm4sIGlzIHNpbWlsYXIgdG8KK3BjaV9wbV9zdXNwZW5kX25vaXJxKCksIGJ1dCBpdCBjYWxscyB0aGUgZGV2aWNlIGRyaXZlcidzIHBtLT5mcmVlemVfbm9pcnEoKQorcm91dGluZSBpbnN0ZWFkIG9mIHBtLT5zdXNwZW5kX25vaXJxKCkuICBJdCBhbHNvIGRvZXNuJ3QgYXR0ZW1wdCB0byBwcmVwYXJlIHRoZQorZGV2aWNlIGZvciBzaWduYWxpbmcgd2FrZXVwIGFuZCBwdXQgaXQgaW50byBhIGxvdy1wb3dlciBzdGF0ZS4gIFN0aWxsLCBpdCBzYXZlcwordGhlIGRldmljZSdzIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGlmIHRoZXkgaGF2ZW4ndCBiZWVuIHNhdmVkIGJ5IG9uZQorb2YgdGhlIGRyaXZlcidzIGNhbGxiYWNrcy4KKworT25jZSB0aGUgaW1hZ2UgaGFzIGJlZW4gY3JlYXRlZCwgaXQgaGFzIHRvIGJlIHNhdmVkLiAgSG93ZXZlciwgYXQgdGhpcyBwb2ludCBhbGwKK2RldmljZXMgYXJlIGZyb3plbiBhbmQgdGhleSBjYW5ub3QgaGFuZGxlIEkvTywgd2hpbGUgdGhlaXIgYWJpbGl0eSB0byBoYW5kbGUKK0kvTyBpcyBvYnZpb3VzbHkgbmVjZXNzYXJ5IGZvciB0aGUgaW1hZ2Ugc2F2aW5nLiAgVGh1cyB0aGV5IGhhdmUgdG8gYmUgYnJvdWdodAorYmFjayB0byB0aGUgZnVsbHkgZnVuY3Rpb25hbCBzdGF0ZSBhbmQgdGhpcyBpcyBkb25lIGluIHRoZSBmb2xsb3dpbmcgcGhhc2VzOgorCisJdGhhd19ub2lycSwgdGhhdywgY29tcGxldGUKKwordXNpbmcgdGhlIGZvbGxvd2luZyBQQ0kgYnVzIHR5cGUncyBjYWxsYmFja3M6CisKKwlwY2lfcG1fdGhhd19ub2lycSgpCisJcGNpX3BtX3RoYXcoKQorCXBjaV9wbV9jb21wbGV0ZSgpCisKK3Jlc3BlY3RpdmVseS4KKworVGhlIGZpcnN0IG9mIHRoZW0sIHBjaV9wbV90aGF3X25vaXJxKCksIGlzIGFuYWxvZ291cyB0byBwY2lfcG1fcmVzdW1lX25vaXJxKCksCitidXQgaXQgZG9lc24ndCBwdXQgdGhlIGRldmljZSBpbnRvIHRoZSBmdWxsIHBvd2VyIHN0YXRlIGFuZCBkb2Vzbid0IGF0dGVtcHQgdG8KK3Jlc3RvcmUgaXRzIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzLiAgSXQgYWxzbyBleGVjdXRlcyB0aGUgZGV2aWNlCitkcml2ZXIncyBwbS0+dGhhd19ub2lycSgpIGNhbGxiYWNrLCBpZiBkZWZpbmVkLCBpbnN0ZWFkIG9mIHBtLT5yZXN1bWVfbm9pcnEoKS4KKworVGhlIHBjaV9wbV90aGF3KCkgcm91dGluZSBpcyBzaW1pbGFyIHRvIHBjaV9wbV9yZXN1bWUoKSwgYnV0IGl0IHJ1bnMgdGhlIGRldmljZQorZHJpdmVyJ3MgcG0tPnRoYXcoKSBjYWxsYmFjayBpbnN0ZWFkIG9mIHBtLT5yZXN1bWUoKS4gIEl0IGlzIGV4ZWN1dGVkCithc3luY2hyb25vdXNseSBmb3IgZGlmZmVyZW50IFBDSSBkZXZpY2VzIHRoYXQgZG9uJ3QgZGVwZW5kIG9uIGVhY2ggb3RoZXIgaW4gYQora25vd24gd2F5LgorCitUaGUgY29tcGxldGUgcGhhc2UgaXQgdGhlIHNhbWUgYXMgZm9yIHN5c3RlbSByZXN1bWUuCisKK0FmdGVyIHNhdmluZyB0aGUgaW1hZ2UsIGRldmljZXMgbmVlZCB0byBiZSBwb3dlcmVkIGRvd24gYmVmb3JlIHRoZSBzeXN0ZW0gY2FuCitlbnRlciB0aGUgdGFyZ2V0IHNsZWVwIHN0YXRlIChBQ1BJIFM0IGZvciBBQ1BJLWJhc2VkIHN5c3RlbXMpLiAgVGhpcyBpcyBkb25lIGluCit0aHJlZSBwaGFzZXM6CisKKwlwcmVwYXJlLCBwb3dlcm9mZiwgcG93ZXJvZmZfbm9pcnEKKword2hlcmUgdGhlIHByZXBhcmUgcGhhc2UgaXMgZXhhY3RseSB0aGUgc2FtZSBhcyBmb3Igc3lzdGVtIHN1c3BlbmQuICBUaGUgb3RoZXIKK3R3byBwaGFzZXMgYXJlIGFuYWxvZ291cyB0byB0aGUgc3VzcGVuZCBhbmQgc3VzcGVuZF9ub2lycSBwaGFzZXMsIHJlc3BlY3RpdmVseS4KK1RoZSBQQ0kgc3Vic3lzdGVtLWxldmVsIGNhbGxiYWNrcyB0aGV5IGNvcnJlc3BvbmQgdG8KKworCXBjaV9wbV9wb3dlcm9mZigpCisJcGNpX3BtX3Bvd2Vyb2ZmX25vaXJxKCkKKword29yayBpbiBhbmFsb2d5IHdpdGggcGNpX3BtX3N1c3BlbmQoKSBhbmQgcGNpX3BtX3Bvd2Vyb2ZmX25vaXJxKCksIHJlc3BlY3RpdmVseSwKK2FsdGhvdWdoIHRoZXkgZG9uJ3QgYXR0ZW1wdCB0byBzYXZlIHRoZSBkZXZpY2UncyBzdGFuZGFyZCBjb25maWd1cmF0aW9uCityZWdpc3RlcnMuCisKKzIuNC40LiBTeXN0ZW0gUmVzdG9yZQorCitTeXN0ZW0gcmVzdG9yZSByZXF1aXJlcyBhIGhpYmVybmF0aW9uIGltYWdlIHRvIGJlIGxvYWRlZCBpbnRvIG1lbW9yeSBhbmQgdGhlCitwcmUtaGliZXJuYXRpb24gbWVtb3J5IGNvbnRlbnRzIHRvIGJlIHJlc3RvcmVkIGJlZm9yZSB0aGUgcHJlLWhpYmVybmF0aW9uIHN5c3RlbQorYWN0aXZpdHkgY2FuIGJlIHJlc3VtZWQuCisKK0FzIGRlc2NyaWJlZCBpbiBEb2N1bWVudGF0aW9uL3Bvd2VyL2RldmljZXMudHh0LCB0aGUgaGliZXJuYXRpb24gaW1hZ2UgaXMgbG9hZGVkCitpbnRvIG1lbW9yeSBieSBhIGZyZXNoIGluc3RhbmNlIG9mIHRoZSBrZXJuZWwsIGNhbGxlZCB0aGUgYm9vdCBrZXJuZWwsIHdoaWNoIGluCit0dXJuIGlzIGxvYWRlZCBhbmQgcnVuIGJ5IGEgYm9vdCBsb2FkZXIgaW4gdGhlIHVzdWFsIHdheS4gIEFmdGVyIHRoZSBib290IGtlcm5lbAoraGFzIGxvYWRlZCB0aGUgaW1hZ2UsIGl0IG5lZWRzIHRvIHJlcGxhY2UgaXRzIG93biBjb2RlIGFuZCBkYXRhIHdpdGggdGhlIGNvZGUKK2FuZCBkYXRhIG9mIHRoZSAiaGliZXJuYXRlZCIga2VybmVsIHN0b3JlZCB3aXRoaW4gdGhlIGltYWdlLCBjYWxsZWQgdGhlIGltYWdlCitrZXJuZWwuICBGb3IgdGhpcyBwdXJwb3NlIGFsbCBkZXZpY2VzIGFyZSBmcm96ZW4ganVzdCBsaWtlIGJlZm9yZSBjcmVhdGluZwordGhlIGltYWdlIGR1cmluZyBoaWJlcm5hdGlvbiwgaW4gdGhlCisKKwlwcmVwYXJlLCBmcmVlemUsIGZyZWV6ZV9ub2lycQorCitwaGFzZXMgZGVzY3JpYmVkIGFib3ZlLiAgSG93ZXZlciwgdGhlIGRldmljZXMgYWZmZWN0ZWQgYnkgdGhlc2UgcGhhc2VzIGFyZSBvbmx5Cit0aG9zZSBoYXZpbmcgZHJpdmVycyBpbiB0aGUgYm9vdCBrZXJuZWw7IG90aGVyIGRldmljZXMgd2lsbCBzdGlsbCBiZSBpbiB3aGF0ZXZlcgorc3RhdGUgdGhlIGJvb3QgbG9hZGVyIGxlZnQgdGhlbS4KKworU2hvdWxkIHRoZSByZXN0b3JhdGlvbiBvZiB0aGUgcHJlLWhpYmVybmF0aW9uIG1lbW9yeSBjb250ZW50cyBmYWlsLCB0aGUgYm9vdAora2VybmVsIHdvdWxkIGdvIHRocm91Z2ggdGhlICJ0aGF3aW5nIiBwcm9jZWR1cmUgZGVzY3JpYmVkIGFib3ZlLCB1c2luZyB0aGUKK3RoYXdfbm9pcnEsIHRoYXcsIGFuZCBjb21wbGV0ZSBwaGFzZXMgKHRoYXQgd2lsbCBvbmx5IGFmZmVjdCB0aGUgZGV2aWNlcyBoYXZpbmcKK2RyaXZlcnMgaW4gdGhlIGJvb3Qga2VybmVsKSwgYW5kIHRoZW4gY29udGludWUgcnVubmluZyBub3JtYWxseS4KKworSWYgdGhlIHByZS1oaWJlcm5hdGlvbiBtZW1vcnkgY29udGVudHMgYXJlIHJlc3RvcmVkIHN1Y2Nlc3NmdWxseSwgd2hpY2ggaXMgdGhlCit1c3VhbCBzaXR1YXRpb24sIGNvbnRyb2wgaXMgcGFzc2VkIHRvIHRoZSBpbWFnZSBrZXJuZWwsIHdoaWNoIHRoZW4gYmVjb21lcworcmVzcG9uc2libGUgZm9yIGJyaW5naW5nIHRoZSBzeXN0ZW0gYmFjayB0byB0aGUgd29ya2luZyBzdGF0ZS4gIFRvIGFjaGlldmUgdGhpcywKK2l0IG11c3QgcmVzdG9yZSB0aGUgZGV2aWNlcycgcHJlLWhpYmVybmF0aW9uIGZ1bmN0aW9uYWxpdHksIHdoaWNoIGlzIGRvbmUgbXVjaAorbGlrZSB3YWtpbmcgdXAgZnJvbSB0aGUgbWVtb3J5IHNsZWVwIHN0YXRlLCBhbHRob3VnaCBpdCBpbnZvbHZlcyBkaWZmZXJlbnQKK3BoYXNlczoKKworCXJlc3RvcmVfbm9pcnEsIHJlc3RvcmUsIGNvbXBsZXRlCisKK1RoZSBmaXJzdCB0d28gb2YgdGhlc2UgYXJlIGFuYWxvZ291cyB0byB0aGUgcmVzdW1lX25vaXJxIGFuZCByZXN1bWUgcGhhc2VzCitkZXNjcmliZWQgYWJvdmUsIHJlc3BlY3RpdmVseSwgYW5kIGNvcnJlc3BvbmQgdG8gdGhlIGZvbGxvd2luZyBQQ0kgc3Vic3lzdGVtCitjYWxsYmFja3M6CisKKwlwY2lfcG1fcmVzdG9yZV9ub2lycSgpCisJcGNpX3BtX3Jlc3RvcmUoKQorCitUaGVzZSBjYWxsYmFja3Mgd29yayBpbiBhbmFsb2d5IHdpdGggcGNpX3BtX3Jlc3VtZV9ub2lycSgpIGFuZCBwY2lfcG1fcmVzdW1lKCksCityZXNwZWN0aXZlbHksIGJ1dCB0aGV5IGV4ZWN1dGUgdGhlIGRldmljZSBkcml2ZXIncyBwbS0+cmVzdG9yZV9ub2lycSgpIGFuZAorcG0tPnJlc3RvcmUoKSBjYWxsYmFja3MsIGlmIGF2YWlsYWJsZS4KKworVGhlIGNvbXBsZXRlIHBoYXNlIGlzIGNhcnJpZWQgb3V0IGluIGV4YWN0bHkgdGhlIHNhbWUgd2F5IGFzIGR1cmluZyBzeXN0ZW0KK3Jlc3VtZS4KKworCiszLiBQQ0kgRGV2aWNlIERyaXZlcnMgYW5kIFBvd2VyIE1hbmFnZW1lbnQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCiszLjEuIFBvd2VyIE1hbmFnZW1lbnQgQ2FsbGJhY2tzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitQQ0kgZGV2aWNlIGRyaXZlcnMgcGFydGljaXBhdGUgaW4gcG93ZXIgbWFuYWdlbWVudCBieSBwcm92aWRpbmcgY2FsbGJhY2tzIHRvIGJlCitleGVjdXRlZCBieSB0aGUgUENJIHN1YnN5c3RlbSdzIHBvd2VyIG1hbmFnZW1lbnQgcm91dGluZXMgZGVzY3JpYmVkIGFib3ZlIGFuZCBieQorY29udHJvbGxpbmcgdGhlIHJ1bnRpbWUgcG93ZXIgbWFuYWdlbWVudCBvZiB0aGVpciBkZXZpY2VzLgorCitBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcgdGhlcmUgYXJlIHR3byB3YXlzIHRvIGRlZmluZSBwb3dlciBtYW5hZ2VtZW50CitjYWxsYmFja3MgZm9yIGEgUENJIGRldmljZSBkcml2ZXIsIHRoZSByZWNvbW1lbmRlZCBvbmUsIGJhc2VkIG9uIHVzaW5nIGEKK2Rldl9wbV9vcHMgc3RydWN0dXJlIGRlc2NyaWJlZCBpbiBEb2N1bWVudGF0aW9uL3Bvd2VyL2RldmljZXMudHh0LCBhbmQgdGhlCisibGVnYWN5IiBvbmUsIGluIHdoaWNoIHRoZSAuc3VzcGVuZCgpLCAuc3VzcGVuZF9sYXRlKCksIC5yZXN1bWVfZWFybHkoKSwgYW5kCisucmVzdW1lKCkgY2FsbGJhY2tzIGZyb20gc3RydWN0IHBjaV9kcml2ZXIgYXJlIHVzZWQuICBUaGUgbGVnYWN5IGFwcHJvYWNoLAoraG93ZXZlciwgZG9lc24ndCBhbGxvdyBvbmUgdG8gZGVmaW5lIHJ1bnRpbWUgcG93ZXIgbWFuYWdlbWVudCBjYWxsYmFja3MgYW5kIGlzCitub3QgcmVhbGx5IHN1aXRhYmxlIGZvciBhbnkgbmV3IGRyaXZlcnMuICBUaGVyZWZvcmUgaXQgaXMgbm90IGNvdmVyZWQgYnkgdGhpcworZG9jdW1lbnQgKHJlZmVyIHRvIHRoZSBzb3VyY2UgY29kZSB0byBsZWFybiBtb3JlIGFib3V0IGl0KS4KKworSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBhbGwgUENJIGRldmljZSBkcml2ZXJzIGRlZmluZSBhIHN0cnVjdCBkZXZfcG1fb3BzIG9iamVjdAorY29udGFpbmluZyBwb2ludGVycyB0byBwb3dlciBtYW5hZ2VtZW50IChQTSkgY2FsbGJhY2tzIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBieQordGhlIFBDSSBzdWJzeXN0ZW0ncyBQTSByb3V0aW5lcyBpbiB2YXJpb3VzIGNpcmN1bXN0YW5jZXMuICBBIHBvaW50ZXIgdG8gdGhlCitkcml2ZXIncyBzdHJ1Y3QgZGV2X3BtX29wcyBvYmplY3QgaGFzIHRvIGJlIGFzc2lnbmVkIHRvIHRoZSBkcml2ZXIucG0gZmllbGQgaW4KK2l0cyBzdHJ1Y3QgcGNpX2RyaXZlciBvYmplY3QuICBPbmNlIHRoYXQgaGFzIGhhcHBlbmVkLCB0aGUgImxlZ2FjeSIgUE0gY2FsbGJhY2tzCitpbiBzdHJ1Y3QgcGNpX2RyaXZlciBhcmUgaWdub3JlZCAoZXZlbiBpZiB0aGV5IGFyZSBub3QgTlVMTCkuCisKK1RoZSBQTSBjYWxsYmFja3MgaW4gc3RydWN0IGRldl9wbV9vcHMgYXJlIG5vdCBtYW5kYXRvcnkgYW5kIGlmIHRoZXkgYXJlIG5vdAorZGVmaW5lZCAoaS5lLiB0aGUgcmVzcGVjdGl2ZSBmaWVsZHMgb2Ygc3RydWN0IGRldl9wbV9vcHMgYXJlIHVuc2V0KSB0aGUgUENJCitzdWJzeXN0ZW0gd2lsbCBoYW5kbGUgdGhlIGRldmljZSBpbiBhIHNpbXBsaWZpZWQgZGVmYXVsdCBtYW5uZXIuICBJZiB0aGV5IGFyZQorZGVmaW5lZCwgdGhvdWdoLCB0aGV5IGFyZSBleHBlY3RlZCB0byBiZWhhdmUgYXMgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcKK3N1YnNlY3Rpb25zLgorCiszLjEuMS4gcHJlcGFyZSgpCisKK1RoZSBwcmVwYXJlKCkgY2FsbGJhY2sgaXMgZXhlY3V0ZWQgZHVyaW5nIHN5c3RlbSBzdXNwZW5kLCBkdXJpbmcgaGliZXJuYXRpb24KKyh3aGVuIGEgaGliZXJuYXRpb24gaW1hZ2UgaXMgYWJvdXQgdG8gYmUgY3JlYXRlZCksIGR1cmluZyBwb3dlci1vZmYgYWZ0ZXIKK3NhdmluZyBhIGhpYmVybmF0aW9uIGltYWdlIGFuZCBkdXJpbmcgc3lzdGVtIHJlc3RvcmUsIHdoZW4gYSBoaWJlcm5hdGlvbiBpbWFnZQoraGFzIGp1c3QgYmVlbiBsb2FkZWQgaW50byBtZW1vcnkuCisKK1RoaXMgY2FsbGJhY2sgaXMgb25seSBuZWNlc3NhcnkgaWYgdGhlIGRyaXZlcidzIGRldmljZSBoYXMgY2hpbGRyZW4gdGhhdCBpbgorZ2VuZXJhbCBtYXkgYmUgcmVnaXN0ZXJlZCBhdCBhbnkgdGltZS4gIEluIHRoYXQgY2FzZSB0aGUgcm9sZSBvZiB0aGUgcHJlcGFyZSgpCitjYWxsYmFjayBpcyB0byBwcmV2ZW50IG5ldyBjaGlsZHJlbiBvZiB0aGUgZGV2aWNlIGZyb20gYmVpbmcgcmVnaXN0ZXJlZCB1bnRpbAorb25lIG9mIHRoZSByZXN1bWVfbm9pcnEoKSwgdGhhd19ub2lycSgpLCBvciByZXN0b3JlX25vaXJxKCkgY2FsbGJhY2tzIGlzIHJ1bi4KKworSW4gYWRkaXRpb24gdG8gdGhhdCB0aGUgcHJlcGFyZSgpIGNhbGxiYWNrIG1heSBjYXJyeSBvdXQgc29tZSBvcGVyYXRpb25zCitwcmVwYXJpbmcgdGhlIGRldmljZSB0byBiZSBzdXNwZW5kZWQsIGFsdGhvdWdoIGl0IHNob3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5CisoaWYgYWRkaXRpb25hbCBtZW1vcnkgaXMgcmVxdWlyZWQgdG8gc3VzcGVuZCB0aGUgZGV2aWNlLCBpdCBoYXMgdG8gYmUKK3ByZWFsbG9jYXRlZCBlYXJsaWVyLCBmb3IgZXhhbXBsZSBpbiBhIHN1c3BlbmQvaGliZXJuYXRlIG5vdGlmaWVyIGFzIGRlc2NyaWJlZAoraW4gRG9jdW1lbnRhdGlvbi9wb3dlci9ub3RpZmllcnMudHh0KS4KKworMy4xLjIuIHN1c3BlbmQoKQorCitUaGUgc3VzcGVuZCgpIGNhbGxiYWNrIGlzIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIHN5c3RlbSBzdXNwZW5kLCBhZnRlciBwcmVwYXJlKCkKK2NhbGxiYWNrcyBoYXZlIGJlZW4gZXhlY3V0ZWQgZm9yIGFsbCBkZXZpY2VzIGluIHRoZSBzeXN0ZW0uCisKK1RoaXMgY2FsbGJhY2sgaXMgZXhwZWN0ZWQgdG8gcXVpZXNjZSB0aGUgZGV2aWNlIGFuZCBwcmVwYXJlIGl0IHRvIGJlIHB1dCBpbnRvIGEKK2xvdy1wb3dlciBzdGF0ZSBieSB0aGUgUENJIHN1YnN5c3RlbS4gIEl0IGlzIG5vdCByZXF1aXJlZCAoaW4gZmFjdCBpdCBldmVuIGlzCitub3QgcmVjb21tZW5kZWQpIHRoYXQgYSBQQ0kgZHJpdmVyJ3Mgc3VzcGVuZCgpIGNhbGxiYWNrIHNhdmUgdGhlIHN0YW5kYXJkCitjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBvZiB0aGUgZGV2aWNlLCBwcmVwYXJlIGl0IGZvciB3YWtpbmcgdXAgdGhlIHN5c3RlbSwgb3IKK3B1dCBpdCBpbnRvIGEgbG93LXBvd2VyIHN0YXRlLiAgQWxsIG9mIHRoZXNlIG9wZXJhdGlvbnMgY2FuIHZlcnkgd2VsbCBiZSB0YWtlbgorY2FyZSBvZiBieSB0aGUgUENJIHN1YnN5c3RlbSwgd2l0aG91dCB0aGUgZHJpdmVyJ3MgcGFydGljaXBhdGlvbi4KKworSG93ZXZlciwgaW4gc29tZSByYXJlIGNhc2UgaXQgaXMgY29udmVuaWVudCB0byBjYXJyeSBvdXQgdGhlc2Ugb3BlcmF0aW9ucyBpbgorYSBQQ0kgZHJpdmVyLiAgVGhlbiwgcGNpX3NhdmVfc3RhdGUoKSwgcGNpX3ByZXBhcmVfdG9fc2xlZXAoKSwgYW5kCitwY2lfc2V0X3Bvd2VyX3N0YXRlKCkgc2hvdWxkIGJlIHVzZWQgdG8gc2F2ZSB0aGUgZGV2aWNlJ3Mgc3RhbmRhcmQgY29uZmlndXJhdGlvbgorcmVnaXN0ZXJzLCB0byBwcmVwYXJlIGl0IGZvciBzeXN0ZW0gd2FrZXVwIChpZiBuZWNlc3NhcnkpLCBhbmQgdG8gcHV0IGl0IGludG8gYQorbG93LXBvd2VyIHN0YXRlLCByZXNwZWN0aXZlbHkuICBNb3Jlb3ZlciwgaWYgdGhlIGRyaXZlciBjYWxscyBwY2lfc2F2ZV9zdGF0ZSgpLAordGhlIFBDSSBzdWJzeXN0ZW0gd2lsbCBub3QgZXhlY3V0ZSBlaXRoZXIgcGNpX3ByZXBhcmVfdG9fc2xlZXAoKSwgb3IKK3BjaV9zZXRfcG93ZXJfc3RhdGUoKSBmb3IgaXRzIGRldmljZSwgc28gdGhlIGRyaXZlciBpcyB0aGVuIHJlc3BvbnNpYmxlIGZvcgoraGFuZGxpbmcgdGhlIGRldmljZSBhcyBhcHByb3ByaWF0ZS4KKworV2hpbGUgdGhlIHN1c3BlbmQoKSBjYWxsYmFjayBpcyBiZWluZyBleGVjdXRlZCwgdGhlIGRyaXZlcidzIGludGVycnVwdCBoYW5kbGVyCitjYW4gYmUgaW52b2tlZCB0byBoYW5kbGUgYW4gaW50ZXJydXB0IGZyb20gdGhlIGRldmljZSwgc28gYWxsIHN1c3BlbmQtcmVsYXRlZAorb3BlcmF0aW9ucyByZWx5aW5nIG9uIHRoZSBkcml2ZXIncyBhYmlsaXR5IHRvIGhhbmRsZSBpbnRlcnJ1cHRzIHNob3VsZCBiZQorY2FycmllZCBvdXQgaW4gdGhpcyBjYWxsYmFjay4KKworMy4xLjMuIHN1c3BlbmRfbm9pcnEoKQorCitUaGUgc3VzcGVuZF9ub2lycSgpIGNhbGxiYWNrIGlzIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIHN5c3RlbSBzdXNwZW5kLCBhZnRlcgorc3VzcGVuZCgpIGNhbGxiYWNrcyBoYXZlIGJlZW4gZXhlY3V0ZWQgZm9yIGFsbCBkZXZpY2VzIGluIHRoZSBzeXN0ZW0gYW5kCithZnRlciBkZXZpY2UgaW50ZXJydXB0cyBoYXZlIGJlZW4gZGlzYWJsZWQgYnkgdGhlIFBNIGNvcmUuCisKK1RoZSBkaWZmZXJlbmNlIGJldHdlZW4gc3VzcGVuZF9ub2lycSgpIGFuZCBzdXNwZW5kKCkgaXMgdGhhdCB0aGUgZHJpdmVyJ3MKK2ludGVycnVwdCBoYW5kbGVyIHdpbGwgbm90IGJlIGludm9rZWQgd2hpbGUgc3VzcGVuZF9ub2lycSgpIGlzIHJ1bm5pbmcuICBUaHVzCitzdXNwZW5kX25vaXJxKCkgY2FuIGNhcnJ5IG91dCBvcGVyYXRpb25zIHRoYXQgd291bGQgY2F1c2UgcmFjZSBjb25kaXRpb25zIHRvCithcmlzZSBpZiB0aGV5IHdlcmUgcGVyZm9ybWVkIGluIHN1c3BlbmQoKS4KKworMy4xLjQuIGZyZWV6ZSgpCisKK1RoZSBmcmVlemUoKSBjYWxsYmFjayBpcyBoaWJlcm5hdGlvbi1zcGVjaWZpYyBhbmQgaXMgZXhlY3V0ZWQgaW4gdHdvIHNpdHVhdGlvbnMsCitkdXJpbmcgaGliZXJuYXRpb24sIGFmdGVyIHByZXBhcmUoKSBjYWxsYmFja3MgaGF2ZSBiZWVuIGV4ZWN1dGVkIGZvciBhbGwgZGV2aWNlcworaW4gcHJlcGFyYXRpb24gZm9yIHRoZSBjcmVhdGlvbiBvZiBhIHN5c3RlbSBpbWFnZSwgYW5kIGR1cmluZyByZXN0b3JlLAorYWZ0ZXIgYSBzeXN0ZW0gaW1hZ2UgaGFzIGJlZW4gbG9hZGVkIGludG8gbWVtb3J5IGZyb20gcGVyc2lzdGVudCBzdG9yYWdlIGFuZCB0aGUKK3ByZXBhcmUoKSBjYWxsYmFja3MgaGF2ZSBiZWVuIGV4ZWN1dGVkIGZvciBhbGwgZGV2aWNlcy4KKworVGhlIHJvbGUgb2YgdGhpcyBjYWxsYmFjayBpcyBhbmFsb2dvdXMgdG8gdGhlIHJvbGUgb2YgdGhlIHN1c3BlbmQoKSBjYWxsYmFjaworZGVzY3JpYmVkIGFib3ZlLiAgSW4gZmFjdCwgdGhleSBvbmx5IG5lZWQgdG8gYmUgZGlmZmVyZW50IGluIHRoZSByYXJlIGNhc2VzIHdoZW4KK3RoZSBkcml2ZXIgdGFrZXMgdGhlIHJlc3BvbnNpYmlsaXR5IGZvciBwdXR0aW5nIHRoZSBkZXZpY2UgaW50byBhIGxvdy1wb3dlcgorc3RhdGUuCisKK0luIHRoYXQgY2FzZXMgdGhlIGZyZWV6ZSgpIGNhbGxiYWNrIHNob3VsZCBub3QgcHJlcGFyZSB0aGUgZGV2aWNlIHN5c3RlbSB3YWtldXAKK29yIHB1dCBpdCBpbnRvIGEgbG93LXBvd2VyIHN0YXRlLiAgU3RpbGwsIGVpdGhlciBpdCBvciBmcmVlemVfbm9pcnEoKSBzaG91bGQKK3NhdmUgdGhlIGRldmljZSdzIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIHVzaW5nIHBjaV9zYXZlX3N0YXRlKCkuCisKKzMuMS41LiBmcmVlemVfbm9pcnEoKQorCitUaGUgZnJlZXplX25vaXJxKCkgY2FsbGJhY2sgaXMgaGliZXJuYXRpb24tc3BlY2lmaWMuICBJdCBpcyBleGVjdXRlZCBkdXJpbmcKK2hpYmVybmF0aW9uLCBhZnRlciBwcmVwYXJlKCkgYW5kIGZyZWV6ZSgpIGNhbGxiYWNrcyBoYXZlIGJlZW4gZXhlY3V0ZWQgZm9yIGFsbAorZGV2aWNlcyBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIGNyZWF0aW9uIG9mIGEgc3lzdGVtIGltYWdlLCBhbmQgZHVyaW5nIHJlc3RvcmUsCithZnRlciBhIHN5c3RlbSBpbWFnZSBoYXMgYmVlbiBsb2FkZWQgaW50byBtZW1vcnkgYW5kIGFmdGVyIHByZXBhcmUoKSBhbmQKK2ZyZWV6ZSgpIGNhbGxiYWNrcyBoYXZlIGJlZW4gZXhlY3V0ZWQgZm9yIGFsbCBkZXZpY2VzLiAgSXQgaXMgYWx3YXlzIGV4ZWN1dGVkCithZnRlciBkZXZpY2UgaW50ZXJydXB0cyBoYXZlIGJlZW4gZGlzYWJsZWQgYnkgdGhlIFBNIGNvcmUuCisKK1RoZSByb2xlIG9mIHRoaXMgY2FsbGJhY2sgaXMgYW5hbG9nb3VzIHRvIHRoZSByb2xlIG9mIHRoZSBzdXNwZW5kX25vaXJxKCkKK2NhbGxiYWNrIGRlc2NyaWJlZCBhYm92ZSBhbmQgaXQgdmVyeSByYXJlbHkgaXMgbmVjZXNzYXJ5IHRvIGRlZmluZQorZnJlZXplX25vaXJxKCkuCisKK1RoZSBkaWZmZXJlbmNlIGJldHdlZW4gZnJlZXplX25vaXJxKCkgYW5kIGZyZWV6ZSgpIGlzIGFuYWxvZ291cyB0byB0aGUKK2RpZmZlcmVuY2UgYmV0d2VlbiBzdXNwZW5kX25vaXJxKCkgYW5kIHN1c3BlbmQoKS4KKworMy4xLjYuIHBvd2Vyb2ZmKCkKKworVGhlIHBvd2Vyb2ZmKCkgY2FsbGJhY2sgaXMgaGliZXJuYXRpb24tc3BlY2lmaWMuICBJdCBpcyBleGVjdXRlZCB3aGVuIHRoZSBzeXN0ZW0KK2lzIGFib3V0IHRvIGJlIHBvd2VyZWQgb2ZmIGFmdGVyIHNhdmluZyBhIGhpYmVybmF0aW9uIGltYWdlIHRvIGEgcGVyc2lzdGVudAorc3RvcmFnZS4gIHByZXBhcmUoKSBjYWxsYmFja3MgYXJlIGV4ZWN1dGVkIGZvciBhbGwgZGV2aWNlcyBiZWZvcmUgcG93ZXJvZmYoKSBpcworY2FsbGVkLgorCitUaGUgcm9sZSBvZiB0aGlzIGNhbGxiYWNrIGlzIGFuYWxvZ291cyB0byB0aGUgcm9sZSBvZiB0aGUgc3VzcGVuZCgpIGFuZCBmcmVlemUoKQorY2FsbGJhY2tzIGRlc2NyaWJlZCBhYm92ZSwgYWx0aG91Z2ggaXQgZG9lcyBub3QgbmVlZCB0byBzYXZlIHRoZSBjb250ZW50cyBvZgordGhlIGRldmljZSdzIHJlZ2lzdGVycy4gIEluIHBhcnRpY3VsYXIsIGlmIHRoZSBkcml2ZXIgd2FudHMgdG8gcHV0IHRoZSBkZXZpY2UKK2ludG8gYSBsb3ctcG93ZXIgc3RhdGUgaXRzZWxmIGluc3RlYWQgb2YgYWxsb3dpbmcgdGhlIFBDSSBzdWJzeXN0ZW0gdG8gZG8gdGhhdCwKK3RoZSBwb3dlcm9mZigpIGNhbGxiYWNrIHNob3VsZCB1c2UgcGNpX3ByZXBhcmVfdG9fc2xlZXAoKSBhbmQKK3BjaV9zZXRfcG93ZXJfc3RhdGUoKSB0byBwcmVwYXJlIHRoZSBkZXZpY2UgZm9yIHN5c3RlbSB3YWtldXAgYW5kIHRvIHB1dCBpdAoraW50byBhIGxvdy1wb3dlciBzdGF0ZSwgcmVzcGVjdGl2ZWx5LCBidXQgaXQgbmVlZCBub3Qgc2F2ZSB0aGUgZGV2aWNlJ3Mgc3RhbmRhcmQKK2NvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzLgorCiszLjEuNy4gcG93ZXJvZmZfbm9pcnEoKQorCitUaGUgcG93ZXJvZmZfbm9pcnEoKSBjYWxsYmFjayBpcyBoaWJlcm5hdGlvbi1zcGVjaWZpYy4gIEl0IGlzIGV4ZWN1dGVkIGFmdGVyCitwb3dlcm9mZigpIGNhbGxiYWNrcyBoYXZlIGJlZW4gZXhlY3V0ZWQgZm9yIGFsbCBkZXZpY2VzIGluIHRoZSBzeXN0ZW0uCisKK1RoZSByb2xlIG9mIHRoaXMgY2FsbGJhY2sgaXMgYW5hbG9nb3VzIHRvIHRoZSByb2xlIG9mIHRoZSBzdXNwZW5kX25vaXJxKCkgYW5kCitmcmVlemVfbm9pcnEoKSBjYWxsYmFja3MgZGVzY3JpYmVkIGFib3ZlLCBidXQgaXQgZG9lcyBub3QgbmVlZCB0byBzYXZlIHRoZQorY29udGVudHMgb2YgdGhlIGRldmljZSdzIHJlZ2lzdGVycy4KKworVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBwb3dlcm9mZl9ub2lycSgpIGFuZCBwb3dlcm9mZigpIGlzIGFuYWxvZ291cyB0byB0aGUKK2RpZmZlcmVuY2UgYmV0d2VlbiBzdXNwZW5kX25vaXJxKCkgYW5kIHN1c3BlbmQoKS4KKworMy4xLjguIHJlc3VtZV9ub2lycSgpCisKK1RoZSByZXN1bWVfbm9pcnEoKSBjYWxsYmFjayBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBzeXN0ZW0gcmVzdW1lLCBhZnRlciB0aGUKK1BNIGNvcmUgaGFzIGVuYWJsZWQgdGhlIG5vbi1ib290IENQVXMuICBUaGUgZHJpdmVyJ3MgaW50ZXJydXB0IGhhbmRsZXIgd2lsbCBub3QKK2JlIGludm9rZWQgd2hpbGUgcmVzdW1lX25vaXJxKCkgaXMgcnVubmluZywgc28gdGhpcyBjYWxsYmFjayBjYW4gY2Fycnkgb3V0CitvcGVyYXRpb25zIHRoYXQgbWlnaHQgcmFjZSB3aXRoIHRoZSBpbnRlcnJ1cHQgaGFuZGxlci4KKworU2luY2UgdGhlIFBDSSBzdWJzeXN0ZW0gdW5jb25kaXRpb25hbGx5IHB1dHMgYWxsIGRldmljZXMgaW50byB0aGUgZnVsbCBwb3dlcgorc3RhdGUgaW4gdGhlIHJlc3VtZV9ub2lycSBwaGFzZSBvZiBzeXN0ZW0gcmVzdW1lIGFuZCByZXN0b3JlcyB0aGVpciBzdGFuZGFyZAorY29uZmlndXJhdGlvbiByZWdpc3RlcnMsIHJlc3VtZV9ub2lycSgpIGlzIHVzdWFsbHkgbm90IG5lY2Vzc2FyeS4gIEluIGdlbmVyYWwKK2l0IHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHBlcmZvcm1pbmcgb3BlcmF0aW9ucyB0aGF0IHdvdWxkIGxlYWQgdG8gcmFjZQorY29uZGl0aW9ucyBpZiBjYXJyaWVkIG91dCBieSByZXN1bWUoKS4KKworMy4xLjkuIHJlc3VtZSgpCisKK1RoZSByZXN1bWUoKSBjYWxsYmFjayBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBzeXN0ZW0gcmVzdW1lLCBhZnRlcgorcmVzdW1lX25vaXJxKCkgY2FsbGJhY2tzIGhhdmUgYmVlbiBleGVjdXRlZCBmb3IgYWxsIGRldmljZXMgaW4gdGhlIHN5c3RlbSBhbmQKK2RldmljZSBpbnRlcnJ1cHRzIGhhdmUgYmVlbiBlbmFibGVkIGJ5IHRoZSBQTSBjb3JlLgorCitUaGlzIGNhbGxiYWNrIGlzIHJlc3BvbnNpYmxlIGZvciByZXN0b3JpbmcgdGhlIHByZS1zdXNwZW5kIGNvbmZpZ3VyYXRpb24gb2YgdGhlCitkZXZpY2UgYW5kIGJyaW5naW5nIGl0IGJhY2sgdG8gdGhlIGZ1bGx5IGZ1bmN0aW9uYWwgc3RhdGUuICBUaGUgZGV2aWNlIHNob3VsZCBiZQorYWJsZSB0byBwcm9jZXNzIEkvTyBpbiBhIHVzdWFsIHdheSBhZnRlciByZXN1bWUoKSBoYXMgcmV0dXJuZWQuCisKKzMuMS4xMC4gdGhhd19ub2lycSgpCisKK1RoZSB0aGF3X25vaXJxKCkgY2FsbGJhY2sgaXMgaGliZXJuYXRpb24tc3BlY2lmaWMuICBJdCBpcyBleGVjdXRlZCBhZnRlciBhCitzeXN0ZW0gaW1hZ2UgaGFzIGJlZW4gY3JlYXRlZCBhbmQgdGhlIG5vbi1ib290IENQVXMgaGF2ZSBiZWVuIGVuYWJsZWQgYnkgdGhlIFBNCitjb3JlLCBpbiB0aGUgdGhhd19ub2lycSBwaGFzZSBvZiBoaWJlcm5hdGlvbi4gIEl0IGFsc28gbWF5IGJlIGV4ZWN1dGVkIGlmIHRoZQorbG9hZGluZyBvZiBhIGhpYmVybmF0aW9uIGltYWdlIGZhaWxzIGR1cmluZyBzeXN0ZW0gcmVzdG9yZSAoaXQgaXMgdGhlbiBleGVjdXRlZAorYWZ0ZXIgZW5hYmxpbmcgdGhlIG5vbi1ib290IENQVXMpLiAgVGhlIGRyaXZlcidzIGludGVycnVwdCBoYW5kbGVyIHdpbGwgbm90IGJlCitpbnZva2VkIHdoaWxlIHRoYXdfbm9pcnEoKSBpcyBydW5uaW5nLgorCitUaGUgcm9sZSBvZiB0aGlzIGNhbGxiYWNrIGlzIGFuYWxvZ291cyB0byB0aGUgcm9sZSBvZiByZXN1bWVfbm9pcnEoKS4gIFRoZQorZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZXNlIHR3byBjYWxsYmFja3MgaXMgdGhhdCB0aGF3X25vaXJxKCkgaXMgZXhlY3V0ZWQgYWZ0ZXIKK2ZyZWV6ZSgpIGFuZCBmcmVlemVfbm9pcnEoKSwgc28gaW4gZ2VuZXJhbCBpdCBkb2VzIG5vdCBuZWVkIHRvIG1vZGlmeSB0aGUKK2NvbnRlbnRzIG9mIHRoZSBkZXZpY2UncyByZWdpc3RlcnMuCisKKzMuMS4xMS4gdGhhdygpCisKK1RoZSB0aGF3KCkgY2FsbGJhY2sgaXMgaGliZXJuYXRpb24tc3BlY2lmaWMuICBJdCBpcyBleGVjdXRlZCBhZnRlciB0aGF3X25vaXJxKCkKK2NhbGxiYWNrcyBoYXZlIGJlZW4gZXhlY3V0ZWQgZm9yIGFsbCBkZXZpY2VzIGluIHRoZSBzeXN0ZW0gYW5kIGFmdGVyIGRldmljZQoraW50ZXJydXB0cyBoYXZlIGJlZW4gZW5hYmxlZCBieSB0aGUgUE0gY29yZS4KKworVGhpcyBjYWxsYmFjayBpcyByZXNwb25zaWJsZSBmb3IgcmVzdG9yaW5nIHRoZSBwcmUtZnJlZXplIGNvbmZpZ3VyYXRpb24gb2YKK3RoZSBkZXZpY2UsIHNvIHRoYXQgaXQgd2lsbCB3b3JrIGluIGEgdXN1YWwgd2F5IGFmdGVyIHRoYXcoKSBoYXMgcmV0dXJuZWQuCisKKzMuMS4xMi4gcmVzdG9yZV9ub2lycSgpCisKK1RoZSByZXN0b3JlX25vaXJxKCkgY2FsbGJhY2sgaXMgaGliZXJuYXRpb24tc3BlY2lmaWMuICBJdCBpcyBleGVjdXRlZCBpbiB0aGUKK3Jlc3RvcmVfbm9pcnEgcGhhc2Ugb2YgaGliZXJuYXRpb24sIHdoZW4gdGhlIGJvb3Qga2VybmVsIGhhcyBwYXNzZWQgY29udHJvbCB0bwordGhlIGltYWdlIGtlcm5lbCBhbmQgdGhlIG5vbi1ib290IENQVXMgaGF2ZSBiZWVuIGVuYWJsZWQgYnkgdGhlIGltYWdlIGtlcm5lbCdzCitQTSBjb3JlLgorCitUaGlzIGNhbGxiYWNrIGlzIGFuYWxvZ291cyB0byByZXN1bWVfbm9pcnEoKSB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBpdCBjYW5ub3QKK21ha2UgYW55IGFzc3VtcHRpb24gb24gdGhlIHByZXZpb3VzIHN0YXRlIG9mIHRoZSBkZXZpY2UsIGV2ZW4gaWYgdGhlIEJJT1MgKG9yCitnZW5lcmFsbHkgdGhlIHBsYXRmb3JtIGZpcm13YXJlKSBpcyBrbm93biB0byBwcmVzZXJ2ZSB0aGF0IHN0YXRlIG92ZXIgYQorc3VzcGVuZC1yZXN1bWUgY3ljbGUuCisKK0ZvciB0aGUgdmFzdCBtYWpvcml0eSBvZiBQQ0kgZGV2aWNlIGRyaXZlcnMgdGhlcmUgaXMgbm8gZGlmZmVyZW5jZSBiZXR3ZWVuCityZXN1bWVfbm9pcnEoKSBhbmQgcmVzdG9yZV9ub2lycSgpLgorCiszLjEuMTMuIHJlc3RvcmUoKQorCitUaGUgcmVzdG9yZSgpIGNhbGxiYWNrIGlzIGhpYmVybmF0aW9uLXNwZWNpZmljLiAgSXQgaXMgZXhlY3V0ZWQgYWZ0ZXIKK3Jlc3RvcmVfbm9pcnEoKSBjYWxsYmFja3MgaGF2ZSBiZWVuIGV4ZWN1dGVkIGZvciBhbGwgZGV2aWNlcyBpbiB0aGUgc3lzdGVtIGFuZAorYWZ0ZXIgdGhlIFBNIGNvcmUgaGFzIGVuYWJsZWQgZGV2aWNlIGRyaXZlcnMnIGludGVycnVwdCBoYW5kbGVycyB0byBiZSBpbnZva2VkLgorCitUaGlzIGNhbGxiYWNrIGlzIGFuYWxvZ291cyB0byByZXN1bWUoKSwganVzdCBsaWtlIHJlc3RvcmVfbm9pcnEoKSBpcyBhbmFsb2dvdXMKK3RvIHJlc3VtZV9ub2lycSgpLiAgQ29uc2VxdWVudGx5LCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHJlc3RvcmVfbm9pcnEoKSBhbmQKK3Jlc3RvcmUoKSBpcyBhbmFsb2dvdXMgdG8gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiByZXN1bWVfbm9pcnEoKSBhbmQgcmVzdW1lKCkuCisKK0ZvciB0aGUgdmFzdCBtYWpvcml0eSBvZiBQQ0kgZGV2aWNlIGRyaXZlcnMgdGhlcmUgaXMgbm8gZGlmZmVyZW5jZSBiZXR3ZWVuCityZXN1bWUoKSBhbmQgcmVzdG9yZSgpLgorCiszLjEuMTQuIGNvbXBsZXRlKCkKKworVGhlIGNvbXBsZXRlKCkgY2FsbGJhY2sgaXMgZXhlY3V0ZWQgaW4gdGhlIGZvbGxvd2luZyBzaXR1YXRpb25zOgorICAtIGR1cmluZyBzeXN0ZW0gcmVzdW1lLCBhZnRlciByZXN1bWUoKSBjYWxsYmFja3MgaGF2ZSBiZWVuIGV4ZWN1dGVkIGZvciBhbGwKKyAgICBkZXZpY2VzLAorICAtIGR1cmluZyBoaWJlcm5hdGlvbiwgYmVmb3JlIHNhdmluZyB0aGUgc3lzdGVtIGltYWdlLCBhZnRlciB0aGF3KCkgY2FsbGJhY2tzCisgICAgaGF2ZSBiZWVuIGV4ZWN1dGVkIGZvciBhbGwgZGV2aWNlcywKKyAgLSBkdXJpbmcgc3lzdGVtIHJlc3RvcmUsIHdoZW4gdGhlIHN5c3RlbSBpcyBnb2luZyBiYWNrIHRvIGl0cyBwcmUtaGliZXJuYXRpb24KKyAgICBzdGF0ZSwgYWZ0ZXIgcmVzdG9yZSgpIGNhbGxiYWNrcyBoYXZlIGJlZW4gZXhlY3V0ZWQgZm9yIGFsbCBkZXZpY2VzLgorSXQgYWxzbyBtYXkgYmUgZXhlY3V0ZWQgaWYgdGhlIGxvYWRpbmcgb2YgYSBoaWJlcm5hdGlvbiBpbWFnZSBpbnRvIG1lbW9yeSBmYWlscworKGluIHRoYXQgY2FzZSBpdCBpcyBydW4gYWZ0ZXIgdGhhdygpIGNhbGxiYWNrcyBoYXZlIGJlZW4gZXhlY3V0ZWQgZm9yIGFsbAorZGV2aWNlcyB0aGF0IGhhdmUgZHJpdmVycyBpbiB0aGUgYm9vdCBrZXJuZWwpLgorCitUaGlzIGNhbGxiYWNrIGlzIGVudGlyZWx5IG9wdGlvbmFsLCBhbHRob3VnaCBpdCBtYXkgYmUgbmVjZXNzYXJ5IGlmIHRoZQorcHJlcGFyZSgpIGNhbGxiYWNrIHBlcmZvcm1zIG9wZXJhdGlvbnMgdGhhdCBuZWVkIHRvIGJlIHJldmVyc2VkLgorCiszLjEuMTUuIHJ1bnRpbWVfc3VzcGVuZCgpCisKK1RoZSBydW50aW1lX3N1c3BlbmQoKSBjYWxsYmFjayBpcyBzcGVjaWZpYyB0byBkZXZpY2UgcnVudGltZSBwb3dlciBtYW5hZ2VtZW50CisocnVudGltZSBQTSkuICBJdCBpcyBleGVjdXRlZCBieSB0aGUgUE0gY29yZSdzIHJ1bnRpbWUgUE0gZnJhbWV3b3JrIHdoZW4gdGhlCitkZXZpY2UgaXMgYWJvdXQgdG8gYmUgc3VzcGVuZGVkIChpLmUuIHF1aWVzY2VkIGFuZCBwdXQgaW50byBhIGxvdy1wb3dlciBzdGF0ZSkKK2F0IHJ1biB0aW1lLgorCitUaGlzIGNhbGxiYWNrIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlemluZyB0aGUgZGV2aWNlIGFuZCBwcmVwYXJpbmcgaXQgdG8gYmUKK3B1dCBpbnRvIGEgbG93LXBvd2VyIHN0YXRlLCBidXQgaXQgbXVzdCBhbGxvdyB0aGUgUENJIHN1YnN5c3RlbSB0byBwZXJmb3JtIGFsbAorb2YgdGhlIFBDSS1zcGVjaWZpYyBhY3Rpb25zIG5lY2Vzc2FyeSBmb3Igc3VzcGVuZGluZyB0aGUgZGV2aWNlLgorCiszLjEuMTYuIHJ1bnRpbWVfcmVzdW1lKCkKKworVGhlIHJ1bnRpbWVfcmVzdW1lKCkgY2FsbGJhY2sgaXMgc3BlY2lmaWMgdG8gZGV2aWNlIHJ1bnRpbWUgUE0uICBJdCBpcyBleGVjdXRlZAorYnkgdGhlIFBNIGNvcmUncyBydW50aW1lIFBNIGZyYW1ld29yayB3aGVuIHRoZSBkZXZpY2UgaXMgYWJvdXQgdG8gYmUgcmVzdW1lZAorKGkuZS4gcHV0IGludG8gdGhlIGZ1bGwtcG93ZXIgc3RhdGUgYW5kIHByb2dyYW1tZWQgdG8gcHJvY2VzcyBJL08gbm9ybWFsbHkpIGF0CitydW4gdGltZS4KKworVGhpcyBjYWxsYmFjayBpcyByZXNwb25zaWJsZSBmb3IgcmVzdG9yaW5nIHRoZSBub3JtYWwgZnVuY3Rpb25hbGl0eSBvZiB0aGUKK2RldmljZSBhZnRlciBpdCBoYXMgYmVlbiBwdXQgaW50byB0aGUgZnVsbC1wb3dlciBzdGF0ZSBieSB0aGUgUENJIHN1YnN5c3RlbS4KK1RoZSBkZXZpY2UgaXMgZXhwZWN0ZWQgdG8gYmUgYWJsZSB0byBwcm9jZXNzIEkvTyBpbiB0aGUgdXN1YWwgd2F5IGFmdGVyCitydW50aW1lX3Jlc3VtZSgpIGhhcyByZXR1cm5lZC4KKworMy4xLjE3LiBydW50aW1lX2lkbGUoKQorCitUaGUgcnVudGltZV9pZGxlKCkgY2FsbGJhY2sgaXMgc3BlY2lmaWMgdG8gZGV2aWNlIHJ1bnRpbWUgUE0uICBJdCBpcyBleGVjdXRlZAorYnkgdGhlIFBNIGNvcmUncyBydW50aW1lIFBNIGZyYW1ld29yayB3aGVuZXZlciBpdCBtYXkgYmUgZGVzaXJhYmxlIHRvIHN1c3BlbmQKK3RoZSBkZXZpY2UgYWNjb3JkaW5nIHRvIHRoZSBQTSBjb3JlJ3MgaW5mb3JtYXRpb24uICBJbiBwYXJ0aWN1bGFyLCBpdCBpcworYXV0b21hdGljYWxseSBleGVjdXRlZCByaWdodCBhZnRlciBydW50aW1lX3Jlc3VtZSgpIGhhcyByZXR1cm5lZCBpbiBjYXNlIHRoZQorcmVzdW1lIG9mIHRoZSBkZXZpY2UgaGFzIGhhcHBlbmVkIGFzIGEgcmVzdWx0IG9mIGEgc3B1cmlvdXMgZXZlbnQuCisKK1RoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwsIGJ1dCBpZiBpdCBpcyBub3QgaW1wbGVtZW50ZWQgb3IgaWYgaXQgcmV0dXJucyAwLCB0aGUKK1BDSSBzdWJzeXN0ZW0gd2lsbCBjYWxsIHBtX3J1bnRpbWVfc3VzcGVuZCgpIGZvciB0aGUgZGV2aWNlLCB3aGljaCBpbiB0dXJuIHdpbGwKK2NhdXNlIHRoZSBkcml2ZXIncyBydW50aW1lX3N1c3BlbmQoKSBjYWxsYmFjayB0byBiZSBleGVjdXRlZC4KKworMy4xLjE4LiBQb2ludGluZyBNdWx0aXBsZSBDYWxsYmFjayBQb2ludGVycyB0byBPbmUgUm91dGluZQorCitBbHRob3VnaCBpbiBwcmluY2lwbGUgZWFjaCBvZiB0aGUgY2FsbGJhY2tzIGRlc2NyaWJlZCBpbiB0aGUgcHJldmlvdXMKK3N1YnNlY3Rpb25zIGNhbiBiZSBkZWZpbmVkIGFzIGEgc2VwYXJhdGUgZnVuY3Rpb24sIGl0IG9mdGVuIGlzIGNvbnZlbmllbnQgdG8KK3BvaW50IHR3byBvciBtb3JlIG1lbWJlcnMgb2Ygc3RydWN0IGRldl9wbV9vcHMgdG8gdGhlIHNhbWUgcm91dGluZS4gIFRoZXJlIGFyZQorYSBmZXcgY29udmVuaWVuY2UgbWFjcm9zIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHRoaXMgcHVycG9zZS4KKworVGhlIFNJTVBMRV9ERVZfUE1fT1BTIG1hY3JvIGRlY2xhcmVzIGEgc3RydWN0IGRldl9wbV9vcHMgb2JqZWN0IHdpdGggb25lCitzdXNwZW5kIHJvdXRpbmUgcG9pbnRlZCB0byBieSB0aGUgLnN1c3BlbmQoKSwgLmZyZWV6ZSgpLCBhbmQgLnBvd2Vyb2ZmKCkKK21lbWJlcnMgYW5kIG9uZSByZXN1bWUgcm91dGluZSBwb2ludGVkIHRvIGJ5IHRoZSAucmVzdW1lKCksIC50aGF3KCksIGFuZAorLnJlc3RvcmUoKSBtZW1iZXJzLiAgVGhlIG90aGVyIGZ1bmN0aW9uIHBvaW50ZXJzIGluIHRoaXMgc3RydWN0IGRldl9wbV9vcHMgYXJlCit1bnNldC4KKworVGhlIFVOSVZFUlNBTF9ERVZfUE1fT1BTIG1hY3JvIGlzIHNpbWlsYXIgdG8gU0lNUExFX0RFVl9QTV9PUFMsIGJ1dCBpdAorYWRkaXRpb25hbGx5IHNldHMgdGhlIC5ydW50aW1lX3Jlc3VtZSgpIHBvaW50ZXIgdG8gdGhlIHNhbWUgdmFsdWUgYXMKKy5yZXN1bWUoKSAoYW5kIC50aGF3KCksIGFuZCAucmVzdG9yZSgpKSBhbmQgdGhlIC5ydW50aW1lX3N1c3BlbmQoKSBwb2ludGVyIHRvCit0aGUgc2FtZSB2YWx1ZSBhcyAuc3VzcGVuZCgpIChhbmQgLmZyZWV6ZSgpIGFuZCAucG93ZXJvZmYoKSkuCisKK1RoZSBTRVRfU1lTVEVNX1NMRUVQX1BNX09QUyBjYW4gYmUgdXNlZCBpbnNpZGUgb2YgYSBkZWNsYXJhdGlvbiBvZiBzdHJ1Y3QKK2Rldl9wbV9vcHMgdG8gaW5kaWNhdGUgdGhhdCBvbmUgc3VzcGVuZCByb3V0aW5lIGlzIHRvIGJlIHBvaW50ZWQgdG8gYnkgdGhlCisuc3VzcGVuZCgpLCAuZnJlZXplKCksIGFuZCAucG93ZXJvZmYoKSBtZW1iZXJzIGFuZCBvbmUgcmVzdW1lIHJvdXRpbmUgaXMgdG8KK2JlIHBvaW50ZWQgdG8gYnkgdGhlIC5yZXN1bWUoKSwgLnRoYXcoKSwgYW5kIC5yZXN0b3JlKCkgbWVtYmVycy4KKworMy4yLiBEZXZpY2UgUnVudGltZSBQb3dlciBNYW5hZ2VtZW50CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0luIGFkZGl0aW9uIHRvIHByb3ZpZGluZyBkZXZpY2UgcG93ZXIgbWFuYWdlbWVudCBjYWxsYmFja3MgUENJIGRldmljZSBkcml2ZXJzCithcmUgcmVzcG9uc2libGUgZm9yIGNvbnRyb2xsaW5nIHRoZSBydW50aW1lIHBvd2VyIG1hbmFnZW1lbnQgKHJ1bnRpbWUgUE0pIG9mCit0aGVpciBkZXZpY2VzLgorCitUaGUgUENJIGRldmljZSBydW50aW1lIFBNIGlzIG9wdGlvbmFsLCBidXQgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCBQQ0kgZGV2aWNlCitkcml2ZXJzIGltcGxlbWVudCBpdCBhdCBsZWFzdCBpbiB0aGUgY2FzZXMgd2hlcmUgdGhlcmUgaXMgYSByZWxpYWJsZSB3YXkgb2YKK3ZlcmlmeWluZyB0aGF0IHRoZSBkZXZpY2UgaXMgbm90IHVzZWQgKGxpa2Ugd2hlbiB0aGUgbmV0d29yayBjYWJsZSBpcyBkZXRhY2hlZAorZnJvbSBhbiBFdGhlcm5ldCBhZGFwdGVyIG9yIHRoZXJlIGFyZSBubyBkZXZpY2VzIGF0dGFjaGVkIHRvIGEgVVNCIGNvbnRyb2xsZXIpLgorCitUbyBzdXBwb3J0IHRoZSBQQ0kgcnVudGltZSBQTSB0aGUgZHJpdmVyIGZpcnN0IG5lZWRzIHRvIGltcGxlbWVudCB0aGUKK3J1bnRpbWVfc3VzcGVuZCgpIGFuZCBydW50aW1lX3Jlc3VtZSgpIGNhbGxiYWNrcy4gIEl0IGFsc28gbWF5IG5lZWQgdG8gaW1wbGVtZW50Cit0aGUgcnVudGltZV9pZGxlKCkgY2FsbGJhY2sgdG8gcHJldmVudCB0aGUgZGV2aWNlIGZyb20gYmVpbmcgc3VzcGVuZGVkIGFnYWluCitldmVyeSB0aW1lIHJpZ2h0IGFmdGVyIHRoZSBydW50aW1lX3Jlc3VtZSgpIGNhbGxiYWNrIGhhcyByZXR1cm5lZAorKGFsdGVybmF0aXZlbHksIHRoZSBydW50aW1lX3N1c3BlbmQoKSBjYWxsYmFjayB3aWxsIGhhdmUgdG8gY2hlY2sgaWYgdGhlCitkZXZpY2Ugc2hvdWxkIHJlYWxseSBiZSBzdXNwZW5kZWQgYW5kIHJldHVybiAtRUFHQUlOIGlmIHRoYXQgaXMgbm90IHRoZSBjYXNlKS4KKworVGhlIHJ1bnRpbWUgUE0gb2YgUENJIGRldmljZXMgaXMgZW5hYmxlZCBieSBkZWZhdWx0IGJ5IHRoZSBQQ0kgY29yZS4gIFBDSQorZGV2aWNlIGRyaXZlcnMgZG8gbm90IG5lZWQgdG8gZW5hYmxlIGl0IGFuZCBzaG91bGQgbm90IGF0dGVtcHQgdG8gZG8gc28uCitIb3dldmVyLCBpdCBpcyBibG9ja2VkIGJ5IHBjaV9wbV9pbml0KCkgdGhhdCBydW5zIHRoZSBwbV9ydW50aW1lX2ZvcmJpZCgpCitoZWxwZXIgZnVuY3Rpb24uICBJbiBhZGRpdGlvbiB0byB0aGF0LCB0aGUgcnVudGltZSBQTSB1c2FnZSBjb3VudGVyIG9mCitlYWNoIFBDSSBkZXZpY2UgaXMgaW5jcmVtZW50ZWQgYnkgbG9jYWxfcGNpX3Byb2JlKCkgYmVmb3JlIGV4ZWN1dGluZyB0aGUKK3Byb2JlIGNhbGxiYWNrIHByb3ZpZGVkIGJ5IHRoZSBkZXZpY2UncyBkcml2ZXIuCisKK0lmIGEgUENJIGRyaXZlciBpbXBsZW1lbnRzIHRoZSBydW50aW1lIFBNIGNhbGxiYWNrcyBhbmQgaW50ZW5kcyB0byB1c2UgdGhlCitydW50aW1lIFBNIGZyYW1ld29yayBwcm92aWRlZCBieSB0aGUgUE0gY29yZSBhbmQgdGhlIFBDSSBzdWJzeXN0ZW0sIGl0IG5lZWRzCit0byBkZWNyZW1lbnQgdGhlIGRldmljZSdzIHJ1bnRpbWUgUE0gdXNhZ2UgY291bnRlciBpbiBpdHMgcHJvYmUgY2FsbGJhY2sKK2Z1bmN0aW9uLiAgSWYgaXQgZG9lc24ndCBkbyB0aGF0LCB0aGUgY291bnRlciB3aWxsIGFsd2F5cyBiZSBkaWZmZXJlbnQgZnJvbQoremVybyBmb3IgdGhlIGRldmljZSBhbmQgaXQgd2lsbCBuZXZlciBiZSBydW50aW1lLXN1c3BlbmRlZC4gIFRoZSBzaW1wbGVzdAord2F5IHRvIGRvIHRoYXQgaXMgYnkgY2FsbGluZyBwbV9ydW50aW1lX3B1dF9ub2lkbGUoKSwgYnV0IGlmIHRoZSBkcml2ZXIKK3dhbnRzIHRvIHNjaGVkdWxlIGFuIGF1dG9zdXNwZW5kIHJpZ2h0IGF3YXksIGZvciBleGFtcGxlLCBpdCBtYXkgY2FsbAorcG1fcnVudGltZV9wdXRfYXV0b3N1c3BlbmQoKSBpbnN0ZWFkIGZvciB0aGlzIHB1cnBvc2UuICBHZW5lcmFsbHksIGl0CitqdXN0IG5lZWRzIHRvIGNhbGwgYSBmdW5jdGlvbiB0aGF0IGRlY3JlbWVudHMgdGhlIGRldmljZXMgdXNhZ2UgY291bnRlcgorZnJvbSBpdHMgcHJvYmUgcm91dGluZSB0byBtYWtlIHJ1bnRpbWUgUE0gd29yayBmb3IgdGhlIGRldmljZS4KKworSXQgaXMgaW1wb3J0YW50IHRvIHJlbWVtYmVyIHRoYXQgdGhlIGRyaXZlcidzIHJ1bnRpbWVfc3VzcGVuZCgpIGNhbGxiYWNrCittYXkgYmUgZXhlY3V0ZWQgcmlnaHQgYWZ0ZXIgdGhlIHVzYWdlIGNvdW50ZXIgaGFzIGJlZW4gZGVjcmVtZW50ZWQsIGJlY2F1c2UKK3VzZXIgc3BhY2UgbWF5IGFscmVhZHkgaGF2ZSBjdWFzZWQgdGhlIHBtX3J1bnRpbWVfYWxsb3coKSBoZWxwZXIgZnVuY3Rpb24KK3VuYmxvY2tpbmcgdGhlIHJ1bnRpbWUgUE0gb2YgdGhlIGRldmljZSB0byBydW4gdmlhIHN5c2ZzLCBzbyB0aGUgZHJpdmVyIG11c3QKK2JlIHByZXBhcmVkIHRvIGNvcGUgd2l0aCB0aGF0LgorCitUaGUgZHJpdmVyIGl0c2VsZiBzaG91bGQgbm90IGNhbGwgcG1fcnVudGltZV9hbGxvdygpLCB0aG91Z2guICBJbnN0ZWFkLCBpdAorc2hvdWxkIGxldCB1c2VyIHNwYWNlIG9yIHNvbWUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBkbyB0aGF0ICh1c2VyIHNwYWNlIGNhbgorZG8gaXQgdmlhIHN5c2ZzIGFzIHN0YXRlZCBhYm92ZSksIGJ1dCBpdCBtdXN0IGJlIHByZXBhcmVkIHRvIGhhbmRsZSB0aGUKK3J1bnRpbWUgUE0gb2YgdGhlIGRldmljZSBjb3JyZWN0bHkgYXMgc29vbiBhcyBwbV9ydW50aW1lX2FsbG93KCkgaXMgY2FsbGVkCisod2hpY2ggbWF5IGhhcHBlbiBhdCBhbnkgdGltZSwgZXZlbiBiZWZvcmUgdGhlIGRyaXZlciBpcyBsb2FkZWQpLgorCitXaGVuIHRoZSBkcml2ZXIncyByZW1vdmUgY2FsbGJhY2sgcnVucywgaXQgaGFzIHRvIGJhbGFuY2UgdGhlIGRlY3JlbWVudGF0aW9uCitvZiB0aGUgZGV2aWNlJ3MgcnVudGltZSBQTSB1c2FnZSBjb3VudGVyIGF0IHRoZSBwcm9iZSB0aW1lLiAgRm9yIHRoaXMgcmVhc29uLAoraWYgaXQgaGFzIGRlY3JlbWVudGVkIHRoZSBjb3VudGVyIGluIGl0cyBwcm9iZSBjYWxsYmFjaywgaXQgbXVzdCBydW4KK3BtX3J1bnRpbWVfZ2V0X25vcmVzdW1lKCkgaW4gaXRzIHJlbW92ZSBjYWxsYmFjay4gIFtTaW5jZSB0aGUgY29yZSBjYXJyaWVzCitvdXQgYSBydW50aW1lIHJlc3VtZSBvZiB0aGUgZGV2aWNlIGFuZCBidW1wcyB1cCB0aGUgZGV2aWNlJ3MgdXNhZ2UgY291bnRlcgorYmVmb3JlIHJ1bm5pbmcgdGhlIGRyaXZlcidzIHJlbW92ZSBjYWxsYmFjaywgdGhlIHJ1bnRpbWUgUE0gb2YgdGhlIGRldmljZQoraXMgZWZmZWN0aXZlbHkgZGlzYWJsZWQgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgcmVtb3ZlIGV4ZWN1dGlvbiBhbmQgYWxsCitydW50aW1lIFBNIGhlbHBlciBmdW5jdGlvbnMgaW5jcmVtZW50aW5nIHRoZSBkZXZpY2UncyB1c2FnZSBjb3VudGVyIGFyZQordGhlbiBlZmZlY3RpdmVseSBlcXVpdmFsZW50IHRvIHBtX3J1bnRpbWVfZ2V0X25vcmVzdW1lKCkuXQorCitUaGUgcnVudGltZSBQTSBmcmFtZXdvcmsgd29ya3MgYnkgcHJvY2Vzc2luZyByZXF1ZXN0cyB0byBzdXNwZW5kIG9yIHJlc3VtZQorZGV2aWNlcywgb3IgdG8gY2hlY2sgaWYgdGhleSBhcmUgaWRsZSAoaW4gd2hpY2ggY2FzZXMgaXQgaXMgcmVhc29uYWJsZSB0bworc3Vic2VxdWVudGx5IHJlcXVlc3QgdGhhdCB0aGV5IGJlIHN1c3BlbmRlZCkuICBUaGVzZSByZXF1ZXN0cyBhcmUgcmVwcmVzZW50ZWQKK2J5IHdvcmsgaXRlbXMgcHV0IGludG8gdGhlIHBvd2VyIG1hbmFnZW1lbnQgd29ya3F1ZXVlLCBwbV93cS4gIEFsdGhvdWdoIHRoZXJlCithcmUgYSBmZXcgc2l0dWF0aW9ucyBpbiB3aGljaCBwb3dlciBtYW5hZ2VtZW50IHJlcXVlc3RzIGFyZSBhdXRvbWF0aWNhbGx5CitxdWV1ZWQgYnkgdGhlIFBNIGNvcmUgKGZvciBleGFtcGxlLCBhZnRlciBwcm9jZXNzaW5nIGEgcmVxdWVzdCB0byByZXN1bWUgYQorZGV2aWNlIHRoZSBQTSBjb3JlIGF1dG9tYXRpY2FsbHkgcXVldWVzIGEgcmVxdWVzdCB0byBjaGVjayBpZiB0aGUgZGV2aWNlIGlzCitpZGxlKSwgZGV2aWNlIGRyaXZlcnMgYXJlIGdlbmVyYWxseSByZXNwb25zaWJsZSBmb3IgcXVldWluZyBwb3dlciBtYW5hZ2VtZW50CityZXF1ZXN0cyBmb3IgdGhlaXIgZGV2aWNlcy4gIEZvciB0aGlzIHB1cnBvc2UgdGhleSBzaG91bGQgdXNlIHRoZSBydW50aW1lIFBNCitoZWxwZXIgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHRoZSBQTSBjb3JlLCBkaXNjdXNzZWQgaW4KK0RvY3VtZW50YXRpb24vcG93ZXIvcnVudGltZV9wbS50eHQuCisKK0RldmljZXMgY2FuIGFsc28gYmUgc3VzcGVuZGVkIGFuZCByZXN1bWVkIHN5bmNocm9ub3VzbHksIHdpdGhvdXQgcGxhY2luZyBhCityZXF1ZXN0IGludG8gcG1fd3EuICBJbiB0aGUgbWFqb3JpdHkgb2YgY2FzZXMgdGhpcyBhbHNvIGlzIGRvbmUgYnkgdGhlaXIKK2RyaXZlcnMgdGhhdCB1c2UgaGVscGVyIGZ1bmN0aW9ucyBwcm92aWRlZCBieSB0aGUgUE0gY29yZSBmb3IgdGhpcyBwdXJwb3NlLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgcnVudGltZSBQTSBvZiBkZXZpY2VzIHJlZmVyIHRvCitEb2N1bWVudGF0aW9uL3Bvd2VyL3J1bnRpbWVfcG0udHh0LgorCisKKzQuIFJlc291cmNlcworPT09PT09PT09PT09CisKK1BDSSBMb2NhbCBCdXMgU3BlY2lmaWNhdGlvbiwgUmV2LiAzLjAKK1BDSSBCdXMgUG93ZXIgTWFuYWdlbWVudCBJbnRlcmZhY2UgU3BlY2lmaWNhdGlvbiwgUmV2LiAxLjIKK0FkdmFuY2VkIENvbmZpZ3VyYXRpb24gYW5kIFBvd2VyIEludGVyZmFjZSAoQUNQSSkgU3BlY2lmaWNhdGlvbiwgUmV2LiAzLjBiCitQQ0kgRXhwcmVzcyBCYXNlIFNwZWNpZmljYXRpb24sIFJldi4gMi4wCitEb2N1bWVudGF0aW9uL3Bvd2VyL2RldmljZXMudHh0CitEb2N1bWVudGF0aW9uL3Bvd2VyL3J1bnRpbWVfcG0udHh0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL3BtX3Fvc19pbnRlcmZhY2UudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci9wbV9xb3NfaW50ZXJmYWNlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjlmN2MwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci9wbV9xb3NfaW50ZXJmYWNlLnR4dApAQCAtMCwwICsxLDIyNCBAQAorUE0gUXVhbGl0eSBPZiBTZXJ2aWNlIEludGVyZmFjZS4KKworVGhpcyBpbnRlcmZhY2UgcHJvdmlkZXMgYSBrZXJuZWwgYW5kIHVzZXIgbW9kZSBpbnRlcmZhY2UgZm9yIHJlZ2lzdGVyaW5nCitwZXJmb3JtYW5jZSBleHBlY3RhdGlvbnMgYnkgZHJpdmVycywgc3Vic3lzdGVtcyBhbmQgdXNlciBzcGFjZSBhcHBsaWNhdGlvbnMgb24KK29uZSBvZiB0aGUgcGFyYW1ldGVycy4KKworVHdvIGRpZmZlcmVudCBQTSBRb1MgZnJhbWV3b3JrcyBhcmUgYXZhaWxhYmxlOgorMS4gUE0gUW9TIGNsYXNzZXMgZm9yIGNwdV9kbWFfbGF0ZW5jeSwgbmV0d29ya19sYXRlbmN5LCBuZXR3b3JrX3Rocm91Z2hwdXQsCittZW1vcnlfYmFuZHdpZHRoLgorMi4gdGhlIHBlci1kZXZpY2UgUE0gUW9TIGZyYW1ld29yayBwcm92aWRlcyB0aGUgQVBJIHRvIG1hbmFnZSB0aGUgcGVyLWRldmljZSBsYXRlbmN5Citjb25zdHJhaW50cyBhbmQgUE0gUW9TIGZsYWdzLgorCitFYWNoIHBhcmFtZXRlcnMgaGF2ZSBkZWZpbmVkIHVuaXRzOgorICogbGF0ZW5jeTogdXNlYworICogdGltZW91dDogdXNlYworICogdGhyb3VnaHB1dDoga2JzIChraWxvIGJpdCAvIHNlYykKKyAqIG1lbW9yeSBiYW5kd2lkdGg6IG1icyAobWVnYSBiaXQgLyBzZWMpCisKKworMS4gUE0gUW9TIGZyYW1ld29yaworCitUaGUgaW5mcmFzdHJ1Y3R1cmUgZXhwb3NlcyBtdWx0aXBsZSBtaXNjIGRldmljZSBub2RlcyBvbmUgcGVyIGltcGxlbWVudGVkCitwYXJhbWV0ZXIuICBUaGUgc2V0IG9mIHBhcmFtZXRlcnMgaW1wbGVtZW50IGlzIGRlZmluZWQgYnkgcG1fcW9zX3Bvd2VyX2luaXQoKQorYW5kIHBtX3Fvc19wYXJhbXMuaC4gIFRoaXMgaXMgZG9uZSBiZWNhdXNlIGhhdmluZyB0aGUgYXZhaWxhYmxlIHBhcmFtZXRlcnMKK2JlaW5nIHJ1bnRpbWUgY29uZmlndXJhYmxlIG9yIGNoYW5nZWFibGUgZnJvbSBhIGRyaXZlciB3YXMgc2VlbiBhcyB0b28gZWFzeSB0bworYWJ1c2UuCisKK0ZvciBlYWNoIHBhcmFtZXRlciBhIGxpc3Qgb2YgcGVyZm9ybWFuY2UgcmVxdWVzdHMgaXMgbWFpbnRhaW5lZCBhbG9uZyB3aXRoCithbiBhZ2dyZWdhdGVkIHRhcmdldCB2YWx1ZS4gIFRoZSBhZ2dyZWdhdGVkIHRhcmdldCB2YWx1ZSBpcyB1cGRhdGVkIHdpdGgKK2NoYW5nZXMgdG8gdGhlIHJlcXVlc3QgbGlzdCBvciBlbGVtZW50cyBvZiB0aGUgbGlzdC4gIFR5cGljYWxseSB0aGUKK2FnZ3JlZ2F0ZWQgdGFyZ2V0IHZhbHVlIGlzIHNpbXBseSB0aGUgbWF4IG9yIG1pbiBvZiB0aGUgcmVxdWVzdCB2YWx1ZXMgaGVsZAoraW4gdGhlIHBhcmFtZXRlciBsaXN0IGVsZW1lbnRzLgorTm90ZTogdGhlIGFnZ3JlZ2F0ZWQgdGFyZ2V0IHZhbHVlIGlzIGltcGxlbWVudGVkIGFzIGFuIGF0b21pYyB2YXJpYWJsZSBzbyB0aGF0CityZWFkaW5nIHRoZSBhZ2dyZWdhdGVkIHZhbHVlIGRvZXMgbm90IHJlcXVpcmUgYW55IGxvY2tpbmcgbWVjaGFuaXNtLgorCisKK0Zyb20ga2VybmVsIG1vZGUgdGhlIHVzZSBvZiB0aGlzIGludGVyZmFjZSBpcyBzaW1wbGU6CisKK3ZvaWQgcG1fcW9zX2FkZF9yZXF1ZXN0KGhhbmRsZSwgcGFyYW1fY2xhc3MsIHRhcmdldF92YWx1ZSk6CitXaWxsIGluc2VydCBhbiBlbGVtZW50IGludG8gdGhlIGxpc3QgZm9yIHRoYXQgaWRlbnRpZmllZCBQTSBRb1MgY2xhc3Mgd2l0aCB0aGUKK3RhcmdldCB2YWx1ZS4gIFVwb24gY2hhbmdlIHRvIHRoaXMgbGlzdCB0aGUgbmV3IHRhcmdldCBpcyByZWNvbXB1dGVkIGFuZCBhbnkKK3JlZ2lzdGVyZWQgbm90aWZpZXJzIGFyZSBjYWxsZWQgb25seSBpZiB0aGUgdGFyZ2V0IHZhbHVlIGlzIG5vdyBkaWZmZXJlbnQuCitDbGllbnRzIG9mIHBtX3FvcyBuZWVkIHRvIHNhdmUgdGhlIHJldHVybmVkIGhhbmRsZSBmb3IgZnV0dXJlIHVzZSBpbiBvdGhlcgorcG1fcW9zIEFQSSBmdW5jdGlvbnMuCisKK3ZvaWQgcG1fcW9zX3VwZGF0ZV9yZXF1ZXN0KGhhbmRsZSwgbmV3X3RhcmdldF92YWx1ZSk6CitXaWxsIHVwZGF0ZSB0aGUgbGlzdCBlbGVtZW50IHBvaW50ZWQgdG8gYnkgdGhlIGhhbmRsZSB3aXRoIHRoZSBuZXcgdGFyZ2V0IHZhbHVlCithbmQgcmVjb21wdXRlIHRoZSBuZXcgYWdncmVnYXRlZCB0YXJnZXQsIGNhbGxpbmcgdGhlIG5vdGlmaWNhdGlvbiB0cmVlIGlmIHRoZQordGFyZ2V0IGlzIGNoYW5nZWQuCisKK3ZvaWQgcG1fcW9zX3JlbW92ZV9yZXF1ZXN0KGhhbmRsZSk6CitXaWxsIHJlbW92ZSB0aGUgZWxlbWVudC4gIEFmdGVyIHJlbW92YWwgaXQgd2lsbCB1cGRhdGUgdGhlIGFnZ3JlZ2F0ZSB0YXJnZXQgYW5kCitjYWxsIHRoZSBub3RpZmljYXRpb24gdHJlZSBpZiB0aGUgdGFyZ2V0IHdhcyBjaGFuZ2VkIGFzIGEgcmVzdWx0IG9mIHJlbW92aW5nCit0aGUgcmVxdWVzdC4KKworaW50IHBtX3Fvc19yZXF1ZXN0KHBhcmFtX2NsYXNzKToKK1JldHVybnMgdGhlIGFnZ3JlZ2F0ZWQgdmFsdWUgZm9yIGEgZ2l2ZW4gUE0gUW9TIGNsYXNzLgorCitpbnQgcG1fcW9zX3JlcXVlc3RfYWN0aXZlKGhhbmRsZSk6CitSZXR1cm5zIGlmIHRoZSByZXF1ZXN0IGlzIHN0aWxsIGFjdGl2ZSwgaS5lLiBpdCBoYXMgbm90IGJlZW4gcmVtb3ZlZCBmcm9tIGEKK1BNIFFvUyBjbGFzcyBjb25zdHJhaW50cyBsaXN0LgorCitpbnQgcG1fcW9zX2FkZF9ub3RpZmllcihwYXJhbV9jbGFzcywgbm90aWZpZXIpOgorQWRkcyBhIG5vdGlmaWNhdGlvbiBjYWxsYmFjayBmdW5jdGlvbiB0byB0aGUgUE0gUW9TIGNsYXNzLiBUaGUgY2FsbGJhY2sgaXMKK2NhbGxlZCB3aGVuIHRoZSBhZ2dyZWdhdGVkIHZhbHVlIGZvciB0aGUgUE0gUW9TIGNsYXNzIGlzIGNoYW5nZWQuCisKK2ludCBwbV9xb3NfcmVtb3ZlX25vdGlmaWVyKGludCBwYXJhbV9jbGFzcywgbm90aWZpZXIpOgorUmVtb3ZlcyB0aGUgbm90aWZpY2F0aW9uIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgUE0gUW9TIGNsYXNzLgorCisKK0Zyb20gdXNlciBtb2RlOgorT25seSBwcm9jZXNzZXMgY2FuIHJlZ2lzdGVyIGEgcG1fcW9zIHJlcXVlc3QuICBUbyBwcm92aWRlIGZvciBhdXRvbWF0aWMKK2NsZWFudXAgb2YgYSBwcm9jZXNzLCB0aGUgaW50ZXJmYWNlIHJlcXVpcmVzIHRoZSBwcm9jZXNzIHRvIHJlZ2lzdGVyIGl0cworcGFyYW1ldGVyIHJlcXVlc3RzIGluIHRoZSBmb2xsb3dpbmcgd2F5OgorCitUbyByZWdpc3RlciB0aGUgZGVmYXVsdCBwbV9xb3MgdGFyZ2V0IGZvciB0aGUgc3BlY2lmaWMgcGFyYW1ldGVyLCB0aGUgcHJvY2VzcworbXVzdCBvcGVuIG9uZSBvZiAvZGV2L1tjcHVfZG1hX2xhdGVuY3ksIG5ldHdvcmtfbGF0ZW5jeSwgbmV0d29ya190aHJvdWdocHV0XQorCitBcyBsb25nIGFzIHRoZSBkZXZpY2Ugbm9kZSBpcyBoZWxkIG9wZW4gdGhhdCBwcm9jZXNzIGhhcyBhIHJlZ2lzdGVyZWQKK3JlcXVlc3Qgb24gdGhlIHBhcmFtZXRlci4KKworVG8gY2hhbmdlIHRoZSByZXF1ZXN0ZWQgdGFyZ2V0IHZhbHVlIHRoZSBwcm9jZXNzIG5lZWRzIHRvIHdyaXRlIGFuIHMzMiB2YWx1ZSB0bwordGhlIG9wZW4gZGV2aWNlIG5vZGUuICBBbHRlcm5hdGl2ZWx5IHRoZSB1c2VyIG1vZGUgcHJvZ3JhbSBjb3VsZCB3cml0ZSBhIGhleAorc3RyaW5nIGZvciB0aGUgdmFsdWUgdXNpbmcgMTAgY2hhciBsb25nIGZvcm1hdCBlLmcuICIweDEyMzQ1Njc4Ii4gIFRoaXMKK3RyYW5zbGF0ZXMgdG8gYSBwbV9xb3NfdXBkYXRlX3JlcXVlc3QgY2FsbC4KKworVG8gcmVtb3ZlIHRoZSB1c2VyIG1vZGUgcmVxdWVzdCBmb3IgYSB0YXJnZXQgdmFsdWUgc2ltcGx5IGNsb3NlIHRoZSBkZXZpY2UKK25vZGUuCisKKworMi4gUE0gUW9TIHBlci1kZXZpY2UgbGF0ZW5jeSBhbmQgZmxhZ3MgZnJhbWV3b3JrCisKK0ZvciBlYWNoIGRldmljZSwgdGhlcmUgYXJlIHRocmVlIGxpc3RzIG9mIFBNIFFvUyByZXF1ZXN0cy4gVHdvIG9mIHRoZW0gYXJlCittYWludGFpbmVkIGFsb25nIHdpdGggdGhlIGFnZ3JlZ2F0ZWQgdGFyZ2V0cyBvZiByZXN1bWUgbGF0ZW5jeSBhbmQgYWN0aXZlCitzdGF0ZSBsYXRlbmN5IHRvbGVyYW5jZSAoaW4gbWljcm9zZWNvbmRzKSBhbmQgdGhlIHRoaXJkIG9uZSBpcyBmb3IgUE0gUW9TIGZsYWdzLgorVmFsdWVzIGFyZSB1cGRhdGVkIGluIHJlc3BvbnNlIHRvIGNoYW5nZXMgb2YgdGhlIHJlcXVlc3QgbGlzdC4KKworVGhlIHRhcmdldCB2YWx1ZXMgb2YgcmVzdW1lIGxhdGVuY3kgYW5kIGFjdGl2ZSBzdGF0ZSBsYXRlbmN5IHRvbGVyYW5jZSBhcmUKK3NpbXBseSB0aGUgbWluaW11bSBvZiB0aGUgcmVxdWVzdCB2YWx1ZXMgaGVsZCBpbiB0aGUgcGFyYW1ldGVyIGxpc3QgZWxlbWVudHMuCitUaGUgUE0gUW9TIGZsYWdzIGFnZ3JlZ2F0ZSB2YWx1ZSBpcyBhIGdhdGhlciAoYml0d2lzZSBPUikgb2YgYWxsIGxpc3QgZWxlbWVudHMnCit2YWx1ZXMuICBUd28gZGV2aWNlIFBNIFFvUyBmbGFncyBhcmUgZGVmaW5lZCBjdXJyZW50bHk6IFBNX1FPU19GTEFHX05PX1BPV0VSX09GRgorYW5kIFBNX1FPU19GTEFHX1JFTU9URV9XQUtFVVAuCisKK05vdGU6IFRoZSBhZ2dyZWdhdGVkIHRhcmdldCB2YWx1ZXMgYXJlIGltcGxlbWVudGVkIGluIHN1Y2ggYSB3YXkgdGhhdCByZWFkaW5nCit0aGUgYWdncmVnYXRlZCB2YWx1ZSBkb2VzIG5vdCByZXF1aXJlIGFueSBsb2NraW5nIG1lY2hhbmlzbS4KKworCitGcm9tIGtlcm5lbCBtb2RlIHRoZSB1c2Ugb2YgdGhpcyBpbnRlcmZhY2UgaXMgdGhlIGZvbGxvd2luZzoKKworaW50IGRldl9wbV9xb3NfYWRkX3JlcXVlc3QoZGV2aWNlLCBoYW5kbGUsIHR5cGUsIHZhbHVlKToKK1dpbGwgaW5zZXJ0IGFuIGVsZW1lbnQgaW50byB0aGUgbGlzdCBmb3IgdGhhdCBpZGVudGlmaWVkIGRldmljZSB3aXRoIHRoZQordGFyZ2V0IHZhbHVlLiAgVXBvbiBjaGFuZ2UgdG8gdGhpcyBsaXN0IHRoZSBuZXcgdGFyZ2V0IGlzIHJlY29tcHV0ZWQgYW5kIGFueQorcmVnaXN0ZXJlZCBub3RpZmllcnMgYXJlIGNhbGxlZCBvbmx5IGlmIHRoZSB0YXJnZXQgdmFsdWUgaXMgbm93IGRpZmZlcmVudC4KK0NsaWVudHMgb2YgZGV2X3BtX3FvcyBuZWVkIHRvIHNhdmUgdGhlIGhhbmRsZSBmb3IgZnV0dXJlIHVzZSBpbiBvdGhlcgorZGV2X3BtX3FvcyBBUEkgZnVuY3Rpb25zLgorCitpbnQgZGV2X3BtX3Fvc191cGRhdGVfcmVxdWVzdChoYW5kbGUsIG5ld192YWx1ZSk6CitXaWxsIHVwZGF0ZSB0aGUgbGlzdCBlbGVtZW50IHBvaW50ZWQgdG8gYnkgdGhlIGhhbmRsZSB3aXRoIHRoZSBuZXcgdGFyZ2V0IHZhbHVlCithbmQgcmVjb21wdXRlIHRoZSBuZXcgYWdncmVnYXRlZCB0YXJnZXQsIGNhbGxpbmcgdGhlIG5vdGlmaWNhdGlvbiB0cmVlcyBpZiB0aGUKK3RhcmdldCBpcyBjaGFuZ2VkLgorCitpbnQgZGV2X3BtX3Fvc19yZW1vdmVfcmVxdWVzdChoYW5kbGUpOgorV2lsbCByZW1vdmUgdGhlIGVsZW1lbnQuICBBZnRlciByZW1vdmFsIGl0IHdpbGwgdXBkYXRlIHRoZSBhZ2dyZWdhdGUgdGFyZ2V0IGFuZAorY2FsbCB0aGUgbm90aWZpY2F0aW9uIHRyZWVzIGlmIHRoZSB0YXJnZXQgd2FzIGNoYW5nZWQgYXMgYSByZXN1bHQgb2YgcmVtb3ZpbmcKK3RoZSByZXF1ZXN0LgorCitzMzIgZGV2X3BtX3Fvc19yZWFkX3ZhbHVlKGRldmljZSk6CitSZXR1cm5zIHRoZSBhZ2dyZWdhdGVkIHZhbHVlIGZvciBhIGdpdmVuIGRldmljZSdzIGNvbnN0cmFpbnRzIGxpc3QuCisKK2VudW0gcG1fcW9zX2ZsYWdzX3N0YXR1cyBkZXZfcG1fcW9zX2ZsYWdzKGRldmljZSwgbWFzaykKK0NoZWNrIFBNIFFvUyBmbGFncyBvZiB0aGUgZ2l2ZW4gZGV2aWNlIGFnYWluc3QgdGhlIGdpdmVuIG1hc2sgb2YgZmxhZ3MuCitUaGUgbWVhbmluZyBvZiB0aGUgcmV0dXJuIHZhbHVlcyBpcyBhcyBmb2xsb3dzOgorCVBNX1FPU19GTEFHU19BTEw6IEFsbCBmbGFncyBmcm9tIHRoZSBtYXNrIGFyZSBzZXQKKwlQTV9RT1NfRkxBR1NfU09NRTogU29tZSBmbGFncyBmcm9tIHRoZSBtYXNrIGFyZSBzZXQKKwlQTV9RT1NfRkxBR1NfTk9ORTogTm8gZmxhZ3MgZnJvbSB0aGUgbWFzayBhcmUgc2V0CisJUE1fUU9TX0ZMQUdTX1VOREVGSU5FRDogVGhlIGRldmljZSdzIFBNIFFvUyBzdHJ1Y3R1cmUgaGFzIG5vdCBiZWVuCisJCQlpbml0aWFsaXplZCBvciB0aGUgbGlzdCBvZiByZXF1ZXN0cyBpcyBlbXB0eS4KKworaW50IGRldl9wbV9xb3NfYWRkX2FuY2VzdG9yX3JlcXVlc3QoZGV2LCBoYW5kbGUsIHR5cGUsIHZhbHVlKQorQWRkIGEgUE0gUW9TIHJlcXVlc3QgZm9yIHRoZSBmaXJzdCBkaXJlY3QgYW5jZXN0b3Igb2YgdGhlIGdpdmVuIGRldmljZSB3aG9zZQorcG93ZXIuaWdub3JlX2NoaWxkcmVuIGZsYWcgaXMgdW5zZXQgKGZvciBERVZfUE1fUU9TX1JFU1VNRV9MQVRFTkNZIHJlcXVlc3RzKQorb3Igd2hvc2UgcG93ZXIuc2V0X2xhdGVuY3lfdG9sZXJhbmNlIGNhbGxiYWNrIHBvaW50ZXIgaXMgbm90IE5VTEwgKGZvcgorREVWX1BNX1FPU19MQVRFTkNZX1RPTEVSQU5DRSByZXF1ZXN0cykuCisKK2ludCBkZXZfcG1fcW9zX2V4cG9zZV9sYXRlbmN5X2xpbWl0KGRldmljZSwgdmFsdWUpCitBZGQgYSByZXF1ZXN0IHRvIHRoZSBkZXZpY2UncyBQTSBRb1MgbGlzdCBvZiByZXN1bWUgbGF0ZW5jeSBjb25zdHJhaW50cyBhbmQKK2NyZWF0ZSBhIHN5c2ZzIGF0dHJpYnV0ZSBwbV9xb3NfcmVzdW1lX2xhdGVuY3lfdXMgdW5kZXIgdGhlIGRldmljZSdzIHBvd2VyCitkaXJlY3RvcnkgYWxsb3dpbmcgdXNlciBzcGFjZSB0byBtYW5pcHVsYXRlIHRoYXQgcmVxdWVzdC4KKwordm9pZCBkZXZfcG1fcW9zX2hpZGVfbGF0ZW5jeV9saW1pdChkZXZpY2UpCitEcm9wIHRoZSByZXF1ZXN0IGFkZGVkIGJ5IGRldl9wbV9xb3NfZXhwb3NlX2xhdGVuY3lfbGltaXQoKSBmcm9tIHRoZSBkZXZpY2UncworUE0gUW9TIGxpc3Qgb2YgcmVzdW1lIGxhdGVuY3kgY29uc3RyYWludHMgYW5kIHJlbW92ZSBzeXNmcyBhdHRyaWJ1dGUKK3BtX3Fvc19yZXN1bWVfbGF0ZW5jeV91cyBmcm9tIHRoZSBkZXZpY2UncyBwb3dlciBkaXJlY3RvcnkuCisKK2ludCBkZXZfcG1fcW9zX2V4cG9zZV9mbGFncyhkZXZpY2UsIHZhbHVlKQorQWRkIGEgcmVxdWVzdCB0byB0aGUgZGV2aWNlJ3MgUE0gUW9TIGxpc3Qgb2YgZmxhZ3MgYW5kIGNyZWF0ZSBzeXNmcyBhdHRyaWJ1dGVzCitwbV9xb3Nfbm9fcG93ZXJfb2ZmIGFuZCBwbV9xb3NfcmVtb3RlX3dha2V1cCB1bmRlciB0aGUgZGV2aWNlJ3MgcG93ZXIgZGlyZWN0b3J5CithbGxvd2luZyB1c2VyIHNwYWNlIHRvIGNoYW5nZSB0aGVzZSBmbGFncycgdmFsdWUuCisKK3ZvaWQgZGV2X3BtX3Fvc19oaWRlX2ZsYWdzKGRldmljZSkKK0Ryb3AgdGhlIHJlcXVlc3QgYWRkZWQgYnkgZGV2X3BtX3Fvc19leHBvc2VfZmxhZ3MoKSBmcm9tIHRoZSBkZXZpY2UncyBQTSBRb1MgbGlzdAorb2YgZmxhZ3MgYW5kIHJlbW92ZSBzeXNmcyBhdHRyaWJ1dGVzIHBtX3Fvc19ub19wb3dlcl9vZmYgYW5kIHBtX3Fvc19yZW1vdGVfd2FrZXVwCit1bmRlciB0aGUgZGV2aWNlJ3MgcG93ZXIgZGlyZWN0b3J5LgorCitOb3RpZmljYXRpb24gbWVjaGFuaXNtczoKK1RoZSBwZXItZGV2aWNlIFBNIFFvUyBmcmFtZXdvcmsgaGFzIDIgZGlmZmVyZW50IGFuZCBkaXN0aW5jdCBub3RpZmljYXRpb24gdHJlZXM6CithIHBlci1kZXZpY2Ugbm90aWZpY2F0aW9uIHRyZWUgYW5kIGEgZ2xvYmFsIG5vdGlmaWNhdGlvbiB0cmVlLgorCitpbnQgZGV2X3BtX3Fvc19hZGRfbm90aWZpZXIoZGV2aWNlLCBub3RpZmllcik6CitBZGRzIGEgbm90aWZpY2F0aW9uIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgZGV2aWNlLgorVGhlIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuIHRoZSBhZ2dyZWdhdGVkIHZhbHVlIG9mIHRoZSBkZXZpY2UgY29uc3RyYWludHMgbGlzdAoraXMgY2hhbmdlZCAoZm9yIHJlc3VtZSBsYXRlbmN5IGRldmljZSBQTSBRb1Mgb25seSkuCisKK2ludCBkZXZfcG1fcW9zX3JlbW92ZV9ub3RpZmllcihkZXZpY2UsIG5vdGlmaWVyKToKK1JlbW92ZXMgdGhlIG5vdGlmaWNhdGlvbiBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlIGRldmljZS4KKworaW50IGRldl9wbV9xb3NfYWRkX2dsb2JhbF9ub3RpZmllcihub3RpZmllcik6CitBZGRzIGEgbm90aWZpY2F0aW9uIGNhbGxiYWNrIGZ1bmN0aW9uIGluIHRoZSBnbG9iYWwgbm90aWZpY2F0aW9uIHRyZWUgb2YgdGhlCitmcmFtZXdvcmsuCitUaGUgY2FsbGJhY2sgaXMgY2FsbGVkIHdoZW4gdGhlIGFnZ3JlZ2F0ZWQgdmFsdWUgZm9yIGFueSBkZXZpY2UgaXMgY2hhbmdlZAorKGZvciByZXN1bWUgbGF0ZW5jeSBkZXZpY2UgUE0gUW9TIG9ubHkpLgorCitpbnQgZGV2X3BtX3Fvc19yZW1vdmVfZ2xvYmFsX25vdGlmaWVyKG5vdGlmaWVyKToKK1JlbW92ZXMgdGhlIG5vdGlmaWNhdGlvbiBjYWxsYmFjayBmdW5jdGlvbiBmcm9tIHRoZSBnbG9iYWwgbm90aWZpY2F0aW9uIHRyZWUKK29mIHRoZSBmcmFtZXdvcmsuCisKKworQWN0aXZlIHN0YXRlIGxhdGVuY3kgdG9sZXJhbmNlCisKK1RoaXMgZGV2aWNlIFBNIFFvUyB0eXBlIGlzIHVzZWQgdG8gc3VwcG9ydCBzeXN0ZW1zIGluIHdoaWNoIGhhcmR3YXJlIG1heSBzd2l0Y2gKK3RvIGVuZXJneS1zYXZpbmcgb3BlcmF0aW9uIG1vZGVzIG9uIHRoZSBmbHkuICBJbiB0aG9zZSBzeXN0ZW1zLCBpZiB0aGUgb3BlcmF0aW9uCittb2RlIGNob3NlbiBieSB0aGUgaGFyZHdhcmUgYXR0ZW1wdHMgdG8gc2F2ZSBlbmVyZ3kgaW4gYW4gb3Zlcmx5IGFnZ3Jlc3NpdmUgd2F5LAoraXQgbWF5IGNhdXNlIGV4Y2VzcyBsYXRlbmNpZXMgdG8gYmUgdmlzaWJsZSB0byBzb2Z0d2FyZSwgY2F1c2luZyBpdCB0byBtaXNzCitjZXJ0YWluIHByb3RvY29sIHJlcXVpcmVtZW50cyBvciB0YXJnZXQgZnJhbWUgb3Igc2FtcGxlIHJhdGVzIGV0Yy4KKworSWYgdGhlcmUgaXMgYSBsYXRlbmN5IHRvbGVyYW5jZSBjb250cm9sIG1lY2hhbmlzbSBmb3IgYSBnaXZlbiBkZXZpY2UgYXZhaWxhYmxlCit0byBzb2Z0d2FyZSwgdGhlIC5zZXRfbGF0ZW5jeV90b2xlcmFuY2UgY2FsbGJhY2sgaW4gdGhhdCBkZXZpY2UncyBkZXZfcG1faW5mbworc3RydWN0dXJlIHNob3VsZCBiZSBwb3B1bGF0ZWQuICBUaGUgcm91dGluZSBwb2ludGVkIHRvIGJ5IGl0IGlzIHNob3VsZCBpbXBsZW1lbnQKK3doYXRldmVyIGlzIG5lY2Vzc2FyeSB0byB0cmFuc2ZlciB0aGUgZWZmZWN0aXZlIHJlcXVpcmVtZW50IHZhbHVlIHRvIHRoZQoraGFyZHdhcmUuCisKK1doZW5ldmVyIHRoZSBlZmZlY3RpdmUgbGF0ZW5jeSB0b2xlcmFuY2UgY2hhbmdlcyBmb3IgdGhlIGRldmljZSwgaXRzCisuc2V0X2xhdGVuY3lfdG9sZXJhbmNlKCkgY2FsbGJhY2sgd2lsbCBiZSBleGVjdXRlZCBhbmQgdGhlIGVmZmVjdGl2ZSB2YWx1ZSB3aWxsCitiZSBwYXNzZWQgdG8gaXQuICBJZiB0aGF0IHZhbHVlIGlzIG5lZ2F0aXZlLCB3aGljaCBtZWFucyB0aGF0IHRoZSBsaXN0IG9mCitsYXRlbmN5IHRvbGVyYW5jZSByZXF1aXJlbWVudHMgZm9yIHRoZSBkZXZpY2UgaXMgZW1wdHksIHRoZSBjYWxsYmFjayBpcyBleHBlY3RlZAordG8gc3dpdGNoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGxhdGVuY3kgdG9sZXJhbmNlIGNvbnRyb2wgbWVjaGFuaXNtIHRvIGFuCithdXRvbm9tb3VzIG1vZGUgaWYgYXZhaWxhYmxlLiAgSWYgdGhhdCB2YWx1ZSBpcyBQTV9RT1NfTEFURU5DWV9BTlksIGluIHR1cm4sIGFuZAordGhlIGhhcmR3YXJlIHN1cHBvcnRzIGEgc3BlY2lhbCAibm8gcmVxdWlyZW1lbnQiIHNldHRpbmcsIHRoZSBjYWxsYmFjayBpcworZXhwZWN0ZWQgdG8gdXNlIGl0LiAgVGhhdCBhbGxvd3Mgc29mdHdhcmUgdG8gcHJldmVudCB0aGUgaGFyZHdhcmUgZnJvbQorYXV0b21hdGljYWxseSB1cGRhdGluZyB0aGUgZGV2aWNlJ3MgbGF0ZW5jeSB0b2xlcmFuY2UgaW4gcmVzcG9uc2UgdG8gaXRzIHBvd2VyCitzdGF0ZSBjaGFuZ2VzIChlLmcuIGR1cmluZyB0cmFuc2l0aW9ucyBmcm9tIEQzY29sZCB0byBEMCksIHdoaWNoIGdlbmVyYWxseSBtYXkKK2JlIGRvbmUgaW4gdGhlIGF1dG9ub21vdXMgbGF0ZW5jeSB0b2xlcmFuY2UgY29udHJvbCBtb2RlLgorCitJZiAuc2V0X2xhdGVuY3lfdG9sZXJhbmNlKCkgaXMgcHJlc2VudCBmb3IgdGhlIGRldmljZSwgc3lzZnMgYXR0cmlidXRlCitwbV9xb3NfbGF0ZW5jeV90b2xlcmFuY2VfdXMgd2lsbCBiZSBwcmVzZW50IGluIHRoZSBkZXZpdmNlJ3MgcG93ZXIgZGlyZWN0b3J5LgorVGhlbiwgdXNlciBzcGFjZSBjYW4gdXNlIHRoYXQgYXR0cmlidXRlIHRvIHNwZWNpZnkgaXRzIGxhdGVuY3kgdG9sZXJhbmNlCityZXF1aXJlbWVudCBmb3IgdGhlIGRldmljZSwgaWYgYW55LiAgV3JpdGluZyAiYW55IiB0byBpdCBtZWFucyAibm8gcmVxdWlyZW1lbnQsCitidXQgZG8gbm90IGxldCB0aGUgaGFyZHdhcmUgY29udHJvbCBsYXRlbmN5IHRvbGVyYW5jZSIgYW5kIHdyaXRpbmcgImF1dG8iIHRvIGl0CithbGxvd3MgdGhlIGhhcmR3YXJlIHRvIGJlIHN3aXRjaGVkIHRvIHRoZSBhdXRvbm9tb3VzIG1vZGUgaWYgdGhlcmUgYXJlIG5vIG90aGVyCityZXF1aXJlbWVudHMgZnJvbSB0aGUga2VybmVsIHNpZGUgaW4gdGhlIGRldmljZSdzIGxpc3QuCisKK0tlcm5lbCBjb2RlIGNhbiB1c2UgdGhlIGZ1bmN0aW9ucyBkZXNjcmliZWQgYWJvdmUgYWxvbmcgd2l0aCB0aGUKK0RFVl9QTV9RT1NfTEFURU5DWV9UT0xFUkFOQ0UgZGV2aWNlIFBNIFFvUyB0eXBlIHRvIGFkZCwgcmVtb3ZlIGFuZCB1cGRhdGUKK2xhdGVuY3kgdG9sZXJhbmNlIHJlcXVpcmVtZW50cyBmb3IgZGV2aWNlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvcG93ZXJfc3VwcGx5X2NsYXNzLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvcG93ZXJfc3VwcGx5X2NsYXNzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmRhY2MwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci9wb3dlcl9zdXBwbHlfY2xhc3MudHh0CkBAIC0wLDAgKzEsMjE0IEBACitMaW51eCBwb3dlciBzdXBwbHkgY2xhc3MKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitTeW5vcHNpcworfn5+fn5+fn4KK1Bvd2VyIHN1cHBseSBjbGFzcyB1c2VkIHRvIHJlcHJlc2VudCBiYXR0ZXJ5LCBVUFMsIEFDIG9yIERDIHBvd2VyIHN1cHBseQorcHJvcGVydGllcyB0byB1c2VyLXNwYWNlLgorCitJdCBkZWZpbmVzIGNvcmUgc2V0IG9mIGF0dHJpYnV0ZXMsIHdoaWNoIHNob3VsZCBiZSBhcHBsaWNhYmxlIHRvIChhbG1vc3QpCitldmVyeSBwb3dlciBzdXBwbHkgb3V0IHRoZXJlLiBBdHRyaWJ1dGVzIGFyZSBhdmFpbGFibGUgdmlhIHN5c2ZzIGFuZCB1ZXZlbnQKK2ludGVyZmFjZXMuCisKK0VhY2ggYXR0cmlidXRlIGhhcyB3ZWxsIGRlZmluZWQgbWVhbmluZywgdXAgdG8gdW5pdCBvZiBtZWFzdXJlIHVzZWQuIFdoaWxlCit0aGUgYXR0cmlidXRlcyBwcm92aWRlZCBhcmUgYmVsaWV2ZWQgdG8gYmUgdW5pdmVyc2FsbHkgYXBwbGljYWJsZSB0byBhbnkKK3Bvd2VyIHN1cHBseSwgc3BlY2lmaWMgbW9uaXRvcmluZyBoYXJkd2FyZSBtYXkgbm90IGJlIGFibGUgdG8gcHJvdmlkZSB0aGVtCithbGwsIHNvIGFueSBvZiB0aGVtIG1heSBiZSBza2lwcGVkLgorCitQb3dlciBzdXBwbHkgY2xhc3MgaXMgZXh0ZW5zaWJsZSwgYW5kIGFsbG93cyB0byBkZWZpbmUgZHJpdmVycyBvd24gYXR0cmlidXRlcy4KK1RoZSBjb3JlIGF0dHJpYnV0ZSBzZXQgaXMgc3ViamVjdCB0byB0aGUgc3RhbmRhcmQgTGludXggZXZvbHV0aW9uIChpLmUuCitpZiBpdCB3aWxsIGJlIGZvdW5kIHRoYXQgc29tZSBhdHRyaWJ1dGUgaXMgYXBwbGljYWJsZSB0byBtYW55IHBvd2VyIHN1cHBseQordHlwZXMgb3IgdGhlaXIgZHJpdmVycywgaXQgY2FuIGJlIGFkZGVkIHRvIHRoZSBjb3JlIHNldCkuCisKK0l0IGFsc28gaW50ZWdyYXRlcyB3aXRoIExFRCBmcmFtZXdvcmssIGZvciB0aGUgcHVycG9zZSBvZiBwcm92aWRpbmcKK3R5cGljYWxseSBleHBlY3RlZCBmZWVkYmFjayBvZiBiYXR0ZXJ5IGNoYXJnaW5nL2Z1bGx5IGNoYXJnZWQgc3RhdHVzIGFuZAorQUMvVVNCIHBvd2VyIHN1cHBseSBvbmxpbmUgc3RhdHVzLiAoTm90ZSB0aGF0IHNwZWNpZmljIGRldGFpbHMgb2YgdGhlCitpbmRpY2F0aW9uIChpbmNsdWRpbmcgd2hldGhlciB0byB1c2UgaXQgYXQgYWxsKSBhcmUgZnVsbHkgY29udHJvbGxhYmxlIGJ5Cit1c2VyIGFuZC9vciBzcGVjaWZpYyBtYWNoaW5lIGRlZmF1bHRzLCBwZXIgZGVzaWduIHByaW5jaXBsZXMgb2YgTEVECitmcmFtZXdvcmspLgorCisKK0F0dHJpYnV0ZXMvcHJvcGVydGllcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+CitQb3dlciBzdXBwbHkgY2xhc3MgaGFzIHByZWRlZmluZWQgc2V0IG9mIGF0dHJpYnV0ZXMsIHRoaXMgZWxpbWluYXRlcyBjb2RlCitkdXBsaWNhdGlvbiBhY3Jvc3MgZHJpdmVycy4gUG93ZXIgc3VwcGx5IGNsYXNzIGluc2lzdCBvbiByZXVzaW5nIGl0cworcHJlZGVmaW5lZCBhdHRyaWJ1dGVzICphbmQqIHRoZWlyIHVuaXRzLgorCitTbywgdXNlcnNwYWNlIGdldHMgcHJlZGljdGFibGUgc2V0IG9mIGF0dHJpYnV0ZXMgYW5kIHRoZWlyIHVuaXRzIGZvciBhbnkKK2tpbmQgb2YgcG93ZXIgc3VwcGx5LCBhbmQgY2FuIHByb2Nlc3MvcHJlc2VudCB0aGVtIHRvIGEgdXNlciBpbiBjb25zaXN0ZW50CittYW5uZXIuIFJlc3VsdHMgZm9yIGRpZmZlcmVudCBwb3dlciBzdXBwbGllcyBhbmQgbWFjaGluZXMgYXJlIGFsc28gZGlyZWN0bHkKK2NvbXBhcmFibGUuCisKK1NlZSBkcml2ZXJzL3Bvd2VyL2RzMjc2MF9iYXR0ZXJ5LmMgYW5kIGRyaXZlcnMvcG93ZXIvcGRhX3Bvd2VyLmMgZm9yIHRoZQorZXhhbXBsZSBob3cgdG8gZGVjbGFyZSBhbmQgaGFuZGxlIGF0dHJpYnV0ZXMuCisKKworVW5pdHMKK35+fn5+CitRdW90aW5nIGluY2x1ZGUvbGludXgvcG93ZXJfc3VwcGx5Lmg6CisKKyAgQWxsIHZvbHRhZ2VzLCBjdXJyZW50cywgY2hhcmdlcywgZW5lcmdpZXMsIHRpbWUgYW5kIHRlbXBlcmF0dXJlcyBpbiDCtVYsCisgIMK1QSwgwrVBaCwgwrVXaCwgc2Vjb25kcyBhbmQgdGVudGhzIG9mIGRlZ3JlZSBDZWxzaXVzIHVubGVzcyBvdGhlcndpc2UKKyAgc3RhdGVkLiBJdCdzIGRyaXZlcidzIGpvYiB0byBjb252ZXJ0IGl0cyByYXcgdmFsdWVzIHRvIHVuaXRzIGluIHdoaWNoCisgIHRoaXMgY2xhc3Mgb3BlcmF0ZXMuCisKKworQXR0cmlidXRlcy9wcm9wZXJ0aWVzIGRldGFpbGVkCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworfiB+IH4gfiB+IH4gfiAgQ2hhcmdlL0VuZXJneS9DYXBhY2l0eSAtIGhvdyB0byBub3QgY29uZnVzZSAgfiB+IH4gfiB+IH4gfgorfiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfgorfiBCZWNhdXNlIGJvdGggImNoYXJnZSIgKMK1QWgpIGFuZCAiZW5lcmd5IiAowrVXaCkgcmVwcmVzZW50cyAiY2FwYWNpdHkiICB+Cit+IG9mIGJhdHRlcnksIHRoaXMgY2xhc3MgZGlzdGluZ3Vpc2ggdGhlc2UgdGVybXMuIERvbid0IG1peCB0aGVtISAgICAgICB+Cit+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+Cit+IENIQVJHRV8qIGF0dHJpYnV0ZXMgcmVwcmVzZW50cyBjYXBhY2l0eSBpbiDCtUFoIG9ubHkuICAgICAgICAgICAgICAgICAgfgorfiBFTkVSR1lfKiBhdHRyaWJ1dGVzIHJlcHJlc2VudHMgY2FwYWNpdHkgaW4gwrVXaCBvbmx5LiAgICAgICAgICAgICAgICAgIH4KK34gQ0FQQUNJVFkgYXR0cmlidXRlIHJlcHJlc2VudHMgY2FwYWNpdHkgaW4gKnBlcmNlbnRzKiwgZnJvbSAwIHRvIDEwMC4gIH4KK34gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH4KK34gfiB+IH4gfiB+IH4gfiB+IH4gfiB+IH4gfiB+IH4gfiB+IH4gfiB+IH4gfiB+IH4gfiB+IH4gfiB+IH4gfiB+IH4gfiB+IH4KKworUG9zdGZpeGVzOgorX0FWRyAtICpoYXJkd2FyZSogYXZlcmFnZWQgdmFsdWUsIHVzZSBpdCBpZiB5b3VyIGhhcmR3YXJlIGlzIHJlYWxseSBhYmxlIHRvCityZXBvcnQgYXZlcmFnZWQgdmFsdWVzLgorX05PVyAtIG1vbWVudGFyeS9pbnN0YW50YW5lb3VzIHZhbHVlcy4KKworU1RBVFVTIC0gdGhpcyBhdHRyaWJ1dGUgcmVwcmVzZW50cyBvcGVyYXRpbmcgc3RhdHVzIChjaGFyZ2luZywgZnVsbCwKK2Rpc2NoYXJnaW5nIChpLmUuIHBvd2VyaW5nIGEgbG9hZCksIGV0Yy4pLiBUaGlzIGNvcnJlc3BvbmRzIHRvCitCQVRURVJZX1NUQVRVU18qIHZhbHVlcywgYXMgZGVmaW5lZCBpbiBiYXR0ZXJ5LmguCisKK0NIQVJHRV9UWVBFIC0gYmF0dGVyaWVzIGNhbiB0eXBpY2FsbHkgY2hhcmdlIGF0IGRpZmZlcmVudCByYXRlcy4KK1RoaXMgZGVmaW5lcyB0cmlja2xlIGFuZCBmYXN0IGNoYXJnZXMuICBGb3IgYmF0dGVyaWVzIHRoYXQKK2FyZSBhbHJlYWR5IGNoYXJnZWQgb3IgZGlzY2hhcmdpbmcsICduL2EnIGNhbiBiZSBkaXNwbGF5ZWQgKG9yCisndW5rbm93bicsIGlmIHRoZSBzdGF0dXMgaXMgbm90IGtub3duKS4KKworQVVUSEVOVElDIC0gaW5kaWNhdGVzIHRoZSBwb3dlciBzdXBwbHkgKGJhdHRlcnkgb3IgY2hhcmdlcikgY29ubmVjdGVkCit0byB0aGUgcGxhdGZvcm0gaXMgYXV0aGVudGljKDEpIG9yIG5vbiBhdXRoZW50aWMoMCkuCisKK0hFQUxUSCAtIHJlcHJlc2VudHMgaGVhbHRoIG9mIHRoZSBiYXR0ZXJ5LCB2YWx1ZXMgY29ycmVzcG9uZHMgdG8KK1BPV0VSX1NVUFBMWV9IRUFMVEhfKiwgZGVmaW5lZCBpbiBiYXR0ZXJ5LmguCisKK1ZPTFRBR0VfT0NWIC0gb3BlbiBjaXJjdWl0IHZvbHRhZ2Ugb2YgdGhlIGJhdHRlcnkuCisKK1ZPTFRBR0VfTUFYX0RFU0lHTiwgVk9MVEFHRV9NSU5fREVTSUdOIC0gZGVzaWduIHZhbHVlcyBmb3IgbWF4aW1hbCBhbmQKK21pbmltYWwgcG93ZXIgc3VwcGx5IHZvbHRhZ2VzLiBNYXhpbWFsL21pbmltYWwgbWVhbnMgdmFsdWVzIG9mIHZvbHRhZ2VzCit3aGVuIGJhdHRlcnkgY29uc2lkZXJlZCAiZnVsbCIvImVtcHR5IiBhdCBub3JtYWwgY29uZGl0aW9ucy4gWWVzLCB0aGVyZSBpcworbm8gZGlyZWN0IHJlbGF0aW9uIGJldHdlZW4gdm9sdGFnZSBhbmQgYmF0dGVyeSBjYXBhY2l0eSwgYnV0IHNvbWUgZHVtYgorYmF0dGVyaWVzIHVzZSB2b2x0YWdlIGZvciB2ZXJ5IGFwcHJveGltYXRlZCBjYWxjdWxhdGlvbiBvZiBjYXBhY2l0eS4KK0JhdHRlcnkgZHJpdmVyIGFsc28gY2FuIHVzZSB0aGlzIGF0dHJpYnV0ZSBqdXN0IHRvIGluZm9ybSB1c2Vyc3BhY2UKK2Fib3V0IG1heGltYWwgYW5kIG1pbmltYWwgdm9sdGFnZSB0aHJlc2hvbGRzIG9mIGEgZ2l2ZW4gYmF0dGVyeS4KKworVk9MVEFHRV9NQVgsIFZPTFRBR0VfTUlOIC0gc2FtZSBhcyBfREVTSUdOIHZvbHRhZ2UgdmFsdWVzIGV4Y2VwdCB0aGF0Cit0aGVzZSBvbmVzIHNob3VsZCBiZSB1c2VkIGlmIGhhcmR3YXJlIGNvdWxkIG9ubHkgZ3Vlc3MgKG1lYXN1cmUgYW5kCityZXRhaW4pIHRoZSB0aHJlc2hvbGRzIG9mIGEgZ2l2ZW4gcG93ZXIgc3VwcGx5LgorCitWT0xUQUdFX0JPT1QgLSBSZXBvcnRzIHRoZSB2b2x0YWdlIG1lYXN1cmVkIGR1cmluZyBib290CisKK0NVUlJFTlRfQk9PVCAtIFJlcG9ydHMgdGhlIGN1cnJlbnQgbWVhc3VyZWQgZHVyaW5nIGJvb3QKKworQ0hBUkdFX0ZVTExfREVTSUdOLCBDSEFSR0VfRU1QVFlfREVTSUdOIC0gZGVzaWduIGNoYXJnZSB2YWx1ZXMsIHdoZW4KK2JhdHRlcnkgY29uc2lkZXJlZCBmdWxsL2VtcHR5LgorCitFTkVSR1lfRlVMTF9ERVNJR04sIEVORVJHWV9FTVBUWV9ERVNJR04gLSBzYW1lIGFzIGFib3ZlIGJ1dCBmb3IgZW5lcmd5LgorCitDSEFSR0VfRlVMTCwgQ0hBUkdFX0VNUFRZIC0gVGhlc2UgYXR0cmlidXRlcyBtZWFucyAibGFzdCByZW1lbWJlcmVkIHZhbHVlCitvZiBjaGFyZ2Ugd2hlbiBiYXR0ZXJ5IGJlY2FtZSBmdWxsL2VtcHR5Ii4gSXQgYWxzbyBjb3VsZCBtZWFuICJ2YWx1ZSBvZgorY2hhcmdlIHdoZW4gYmF0dGVyeSBjb25zaWRlcmVkIGZ1bGwvZW1wdHkgYXQgZ2l2ZW4gY29uZGl0aW9ucyAodGVtcGVyYXR1cmUsCithZ2UpIi4gSS5lLiB0aGVzZSBhdHRyaWJ1dGVzIHJlcHJlc2VudHMgcmVhbCB0aHJlc2hvbGRzLCBub3QgZGVzaWduIHZhbHVlcy4KKworQ0hBUkdFX0NPVU5URVIgLSB0aGUgY3VycmVudCBjaGFyZ2UgY291bnRlciAoaW4gwrVBaCkuICBUaGlzIGNvdWxkIGVhc2lseQorYmUgbmVnYXRpdmU7IHRoZXJlIGlzIG5vIGVtcHR5IG9yIGZ1bGwgdmFsdWUuICBJdCBpcyBvbmx5IHVzZWZ1bCBmb3IKK3JlbGF0aXZlLCB0aW1lLWJhc2VkIG1lYXN1cmVtZW50cy4KKworQ09OU1RBTlRfQ0hBUkdFX0NVUlJFTlQgLSBjb25zdGFudCBjaGFyZ2UgY3VycmVudCBwcm9ncmFtbWVkIGJ5IGNoYXJnZXIuCitDT05TVEFOVF9DSEFSR0VfQ1VSUkVOVF9NQVggLSBtYXhpbXVtIGNoYXJnZSBjdXJyZW50IHN1cHBvcnRlZCBieSB0aGUKK3Bvd2VyIHN1cHBseSBvYmplY3QuCitJTlBVVF9DVVJSRU5UX0xJTUlUIC0gaW5wdXQgY3VycmVudCBsaW1pdCBwcm9ncmFtbWVkIGJ5IGNoYXJnZXIuIEluZGljYXRlcwordGhlIGN1cnJlbnQgZHJhd24gZnJvbSBhIGNoYXJnaW5nIHNvdXJjZS4KK0NIQVJHRV9URVJNX0NVUlJFTlQgLSBDaGFyZ2UgdGVybWluYXRpb24gY3VycmVudCB1c2VkIHRvIGRldGVjdCB0aGUgZW5kIG9mIGNoYXJnZQorY29uZGl0aW9uLgorCitDQUxJQlJBVEUgLSBiYXR0ZXJ5IG9yIGNvdWxvbWIgY291bnRlciBjYWxpYnJhdGlvbiBzdGF0dXMKKworQ09OU1RBTlRfQ0hBUkdFX1ZPTFRBR0UgLSBjb25zdGFudCBjaGFyZ2Ugdm9sdGFnZSBwcm9ncmFtbWVkIGJ5IGNoYXJnZXIuCitDT05TVEFOVF9DSEFSR0VfVk9MVEFHRV9NQVggLSBtYXhpbXVtIGNoYXJnZSB2b2x0YWdlIHN1cHBvcnRlZCBieSB0aGUKK3Bvd2VyIHN1cHBseSBvYmplY3QuCisKK0NIQVJHRV9DT05UUk9MX0xJTUlUIC0gY3VycmVudCBjaGFyZ2UgY29udHJvbCBsaW1pdCBzZXR0aW5nCitDSEFSR0VfQ09OVFJPTF9MSU1JVF9NQVggLSBtYXhpbXVtIGNoYXJnZSBjb250cm9sIGxpbWl0IHNldHRpbmcKKworRU5FUkdZX0ZVTEwsIEVORVJHWV9FTVBUWSAtIHNhbWUgYXMgYWJvdmUgYnV0IGZvciBlbmVyZ3kuCisKK0NBUEFDSVRZIC0gY2FwYWNpdHkgaW4gcGVyY2VudHMuCitDQVBBQ0lUWV9BTEVSVF9NSU4gLSBtaW5pbXVtIGNhcGFjaXR5IGFsZXJ0IHZhbHVlIGluIHBlcmNlbnRzLgorQ0FQQUNJVFlfQUxFUlRfTUFYIC0gbWF4aW11bSBjYXBhY2l0eSBhbGVydCB2YWx1ZSBpbiBwZXJjZW50cy4KK0NBUEFDSVRZX0xFVkVMIC0gY2FwYWNpdHkgbGV2ZWwuIFRoaXMgY29ycmVzcG9uZHMgdG8KK1BPV0VSX1NVUFBMWV9DQVBBQ0lUWV9MRVZFTF8qLgorCitURU1QIC0gdGVtcGVyYXR1cmUgb2YgdGhlIHBvd2VyIHN1cHBseS4KK1RFTVBfQUxFUlRfTUlOIC0gbWluaW11bSBiYXR0ZXJ5IHRlbXBlcmF0dXJlIGFsZXJ0LgorVEVNUF9BTEVSVF9NQVggLSBtYXhpbXVtIGJhdHRlcnkgdGVtcGVyYXR1cmUgYWxlcnQuCitURU1QX0FNQklFTlQgLSBhbWJpZW50IHRlbXBlcmF0dXJlLgorVEVNUF9BTUJJRU5UX0FMRVJUX01JTiAtIG1pbmltdW0gYW1iaWVudCB0ZW1wZXJhdHVyZSBhbGVydC4KK1RFTVBfQU1CSUVOVF9BTEVSVF9NQVggLSBtYXhpbXVtIGFtYmllbnQgdGVtcGVyYXR1cmUgYWxlcnQuCitURU1QX01JTiAtIG1pbmltdW0gb3BlcmF0YWJsZSB0ZW1wZXJhdHVyZQorVEVNUF9NQVggLSBtYXhpbXVtIG9wZXJhdGFibGUgdGVtcGVyYXR1cmUKKworVElNRV9UT19FTVBUWSAtIHNlY29uZHMgbGVmdCBmb3IgYmF0dGVyeSB0byBiZSBjb25zaWRlcmVkIGVtcHR5IChpLmUuCit3aGlsZSBiYXR0ZXJ5IHBvd2VycyBhIGxvYWQpCitUSU1FX1RPX0ZVTEwgLSBzZWNvbmRzIGxlZnQgZm9yIGJhdHRlcnkgdG8gYmUgY29uc2lkZXJlZCBmdWxsIChpLmUuCit3aGlsZSBiYXR0ZXJ5IGlzIGNoYXJnaW5nKQorCisKK0JhdHRlcnkgPC0+IGV4dGVybmFsIHBvd2VyIHN1cHBseSBpbnRlcmFjdGlvbgorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitPZnRlbiBwb3dlciBzdXBwbGllcyBhcmUgYWN0aW5nIGFzIHN1cHBsaWVzIGFuZCBzdXBwbGljYW50cyBhdCB0aGUgc2FtZQordGltZS4gQmF0dGVyaWVzIGFyZSBnb29kIGV4YW1wbGUuIFNvLCBiYXR0ZXJpZXMgdXN1YWxseSBjYXJlIGlmIHRoZXkncmUKK2V4dGVybmFsbHkgcG93ZXJlZCBvciBub3QuCisKK0ZvciB0aGF0IGNhc2UsIHBvd2VyIHN1cHBseSBjbGFzcyBpbXBsZW1lbnRzIG5vdGlmaWNhdGlvbiBtZWNoYW5pc20gZm9yCitiYXR0ZXJpZXMuCisKK0V4dGVybmFsIHBvd2VyIHN1cHBseSAoQUMpIGxpc3RzIHN1cHBsaWNhbnRzIChiYXR0ZXJpZXMpIG5hbWVzIGluCisic3VwcGxpZWRfdG8iIHN0cnVjdCBtZW1iZXIsIGFuZCBlYWNoIHBvd2VyX3N1cHBseV9jaGFuZ2VkKCkgY2FsbAoraXNzdWVkIGJ5IGV4dGVybmFsIHBvd2VyIHN1cHBseSB3aWxsIG5vdGlmeSBzdXBwbGljYW50cyB2aWEKK2V4dGVybmFsX3Bvd2VyX2NoYW5nZWQgY2FsbGJhY2suCisKKworUUEKK35+CitROiBXaGVyZSBpcyBQT1dFUl9TVVBQTFlfUFJPUF9YWVogYXR0cmlidXRlPworQTogSWYgeW91IGNhbm5vdCBmaW5kIGF0dHJpYnV0ZSBzdWl0YWJsZSBmb3IgeW91ciBkcml2ZXIgbmVlZHMsIGZlZWwgZnJlZQorICAgdG8gYWRkIGl0IGFuZCBzZW5kIHBhdGNoIGFsb25nIHdpdGggeW91ciBkcml2ZXIuCisKKyAgIFRoZSBhdHRyaWJ1dGVzIGF2YWlsYWJsZSBjdXJyZW50bHkgYXJlIHRoZSBvbmVzIGN1cnJlbnRseSBwcm92aWRlZCBieSB0aGUKKyAgIGRyaXZlcnMgd3JpdHRlbi4KKworICAgR29vZCBjYW5kaWRhdGVzIHRvIGFkZCBpbiBmdXR1cmU6IG1vZGVsL3BhcnQjLCBjeWNsZV90aW1lLCBtYW51ZmFjdHVyZXIsCisgICBldGMuCisKKworUTogSSBoYXZlIHNvbWUgdmVyeSBzcGVjaWZpYyBhdHRyaWJ1dGUgKGUuZy4gYmF0dGVyeSBjb2xvciksIHNob3VsZCBJIGFkZAorICAgdGhpcyBhdHRyaWJ1dGUgdG8gc3RhbmRhcmQgb25lcz8KK0E6IE1vc3QgbGlrZWx5LCBuby4gU3VjaCBhdHRyaWJ1dGUgY2FuIGJlIHBsYWNlZCBpbiB0aGUgZHJpdmVyIGl0c2VsZiwgaWYKKyAgIGl0IGlzIHVzZWZ1bC4gT2YgY291cnNlLCBpZiB0aGUgYXR0cmlidXRlIGluIHF1ZXN0aW9uIGFwcGxpY2FibGUgdG8KKyAgIGxhcmdlIHNldCBvZiBiYXR0ZXJpZXMsIHByb3ZpZGVkIGJ5IG1hbnkgZHJpdmVycywgYW5kL29yIGNvbWVzIGZyb20KKyAgIHNvbWUgZ2VuZXJhbCBiYXR0ZXJ5IHNwZWNpZmljYXRpb24vc3RhbmRhcmQsIGl0IG1heSBiZSBhIGNhbmRpZGF0ZSB0bworICAgYmUgYWRkZWQgdG8gdGhlIGNvcmUgYXR0cmlidXRlIHNldC4KKworCitROiBTdXBwb3NlLCBteSBiYXR0ZXJ5IG1vbml0b3JpbmcgY2hpcC9maXJtd2FyZSBkb2VzIG5vdCBwcm92aWRlcyBjYXBhY2l0eQorICAgaW4gcGVyY2VudHMsIGJ1dCBwcm92aWRlcyBjaGFyZ2Vfe25vdyxmdWxsLGVtcHR5fS4gU2hvdWxkIEkgY2FsY3VsYXRlCisgICBwZXJjZW50YWdlIGNhcGFjaXR5IG1hbnVhbGx5LCBpbnNpZGUgdGhlIGRyaXZlciwgYW5kIHJlZ2lzdGVyIENBUEFDSVRZCisgICBhdHRyaWJ1dGU/IFRoZSBzYW1lIHF1ZXN0aW9uIGFib3V0IHRpbWVfdG9fZW1wdHkvdGltZV90b19mdWxsLgorQTogTW9zdCBsaWtlbHksIG5vLiBUaGlzIGNsYXNzIGlzIGRlc2lnbmVkIHRvIGV4cG9ydCBwcm9wZXJ0aWVzIHdoaWNoIGFyZQorICAgZGlyZWN0bHkgbWVhc3VyYWJsZSBieSB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgYXZhaWxhYmxlLgorCisgICBJbmZlcnJpbmcgbm90IGF2YWlsYWJsZSBwcm9wZXJ0aWVzIHVzaW5nIHNvbWUgaGV1cmlzdGljcyBvciBtYXRoZW1hdGljYWwKKyAgIG1vZGVsIGlzIG5vdCBzdWJqZWN0IG9mIHdvcmsgZm9yIGEgYmF0dGVyeSBkcml2ZXIuIFN1Y2ggZnVuY3Rpb25hbGl0eQorICAgc2hvdWxkIGJlIGZhY3RvcmVkIG91dCwgYW5kIGluIGZhY3QsIGFwbV9wb3dlciwgdGhlIGRyaXZlciB0byBzZXJ2ZQorICAgbGVnYWN5IEFQTSBBUEkgb24gdG9wIG9mIHBvd2VyIHN1cHBseSBjbGFzcywgdXNlcyBhIHNpbXBsZSBoZXVyaXN0aWMgb2YKKyAgIGFwcHJveGltYXRpbmcgcmVtYWluaW5nIGJhdHRlcnkgY2FwYWNpdHkgYmFzZWQgb24gaXRzIGNoYXJnZSwgY3VycmVudCwKKyAgIHZvbHRhZ2UgYW5kIHNvIG9uLiBCdXQgZnVsbC1mbGVkZ2VkIGJhdHRlcnkgbW9kZWwgaXMgbGlrZWx5IG5vdCBzdWJqZWN0CisgICBmb3Iga2VybmVsIGF0IGFsbCwgYXMgaXQgd291bGQgcmVxdWlyZSBmbG9hdGluZyBwb2ludCBjYWxjdWxhdGlvbiB0byBkZWFsCisgICB3aXRoIHRoaW5ncyBsaWtlIGRpZmZlcmVudGlhbCBlcXVhdGlvbnMgYW5kIEthbG1hbiBmaWx0ZXJzLiBUaGlzIGlzCisgICBiZXR0ZXIgYmUgaGFuZGxlZCBieSBiYXR0ZXJ5ZC9saWJiYXR0ZXJ5LCB5ZXQgdG8gYmUgd3JpdHRlbi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvcG93ZXJjYXAvcG93ZXJjYXAudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci9wb3dlcmNhcC9wb3dlcmNhcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU2ZWYxNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXIvcG93ZXJjYXAvcG93ZXJjYXAudHh0CkBAIC0wLDAgKzEsMjM2IEBACitQb3dlciBDYXBwaW5nIEZyYW1ld29yaworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgcG93ZXIgY2FwcGluZyBmcmFtZXdvcmsgcHJvdmlkZXMgYSBjb25zaXN0ZW50IGludGVyZmFjZSBiZXR3ZWVuIHRoZSBrZXJuZWwKK2FuZCB0aGUgdXNlciBzcGFjZSB0aGF0IGFsbG93cyBwb3dlciBjYXBwaW5nIGRyaXZlcnMgdG8gZXhwb3NlIHRoZSBzZXR0aW5ncyB0bwordXNlciBzcGFjZSBpbiBhIHVuaWZvcm0gd2F5LgorCitUZXJtaW5vbG9neQorPT09PT09PT09PT09PT09PT09PT09PT09PQorVGhlIGZyYW1ld29yayBleHBvc2VzIHBvd2VyIGNhcHBpbmcgZGV2aWNlcyB0byB1c2VyIHNwYWNlIHZpYSBzeXNmcyBpbiB0aGUKK2Zvcm0gb2YgYSB0cmVlIG9mIG9iamVjdHMuIFRoZSBvYmplY3RzIGF0IHRoZSByb290IGxldmVsIG9mIHRoZSB0cmVlIHJlcHJlc2VudAorJ2NvbnRyb2wgdHlwZXMnLCB3aGljaCBjb3JyZXNwb25kIHRvIGRpZmZlcmVudCBtZXRob2RzIG9mIHBvd2VyIGNhcHBpbmcuICBGb3IKK2V4YW1wbGUsIHRoZSBpbnRlbC1yYXBsIGNvbnRyb2wgdHlwZSByZXByZXNlbnRzIHRoZSBJbnRlbCAiUnVubmluZyBBdmVyYWdlCitQb3dlciBMaW1pdCIgKFJBUEwpIHRlY2hub2xvZ3ksIHdoZXJlYXMgdGhlICdpZGxlLWluamVjdGlvbicgY29udHJvbCB0eXBlCitjb3JyZXNwb25kcyB0byB0aGUgdXNlIG9mIGlkbGUgaW5qZWN0aW9uIGZvciBjb250cm9sbGluZyBwb3dlci4KKworUG93ZXIgem9uZXMgcmVwcmVzZW50IGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgc3lzdGVtLCB3aGljaCBjYW4gYmUgY29udHJvbGxlZCBhbmQKK21vbml0b3JlZCB1c2luZyB0aGUgcG93ZXIgY2FwcGluZyBtZXRob2QgZGV0ZXJtaW5lZCBieSB0aGUgY29udHJvbCB0eXBlIHRoZQorZ2l2ZW4gem9uZSBiZWxvbmdzIHRvLiBUaGV5IGVhY2ggY29udGFpbiBhdHRyaWJ1dGVzIGZvciBtb25pdG9yaW5nIHBvd2VyLCBhcword2VsbCBhcyBjb250cm9scyByZXByZXNlbnRlZCBpbiB0aGUgZm9ybSBvZiBwb3dlciBjb25zdHJhaW50cy4gIElmIHRoZSBwYXJ0cyBvZgordGhlIHN5c3RlbSByZXByZXNlbnRlZCBieSBkaWZmZXJlbnQgcG93ZXIgem9uZXMgYXJlIGhpZXJhcmNoaWNhbCAodGhhdCBpcywgb25lCitiaWdnZXIgcGFydCBjb25zaXN0cyBvZiBtdWx0aXBsZSBzbWFsbGVyIHBhcnRzIHRoYXQgZWFjaCBoYXZlIHRoZWlyIG93biBwb3dlcgorY29udHJvbHMpLCB0aG9zZSBwb3dlciB6b25lcyBtYXkgYWxzbyBiZSBvcmdhbml6ZWQgaW4gYSBoaWVyYXJjaHkgd2l0aCBvbmUKK3BhcmVudCBwb3dlciB6b25lIGNvbnRhaW5pbmcgbXVsdGlwbGUgc3Viem9uZXMgYW5kIHNvIG9uIHRvIHJlZmxlY3QgdGhlIHBvd2VyCitjb250cm9sIHRvcG9sb2d5IG9mIHRoZSBzeXN0ZW0uICBJbiB0aGF0IGNhc2UsIGl0IGlzIHBvc3NpYmxlIHRvIGFwcGx5IHBvd2VyCitjYXBwaW5nIHRvIGEgc2V0IG9mIGRldmljZXMgdG9nZXRoZXIgdXNpbmcgdGhlIHBhcmVudCBwb3dlciB6b25lIGFuZCBpZiBtb3JlCitmaW5lIGdyYWluZWQgY29udHJvbCBpcyByZXF1aXJlZCwgaXQgY2FuIGJlIGFwcGxpZWQgdGhyb3VnaCB0aGUgc3Viem9uZXMuCisKKworRXhhbXBsZSBzeXNmcyBpbnRlcmZhY2UgdHJlZToKKworL3N5cy9kZXZpY2VzL3ZpcnR1YWwvcG93ZXJjYXAKKz8/PyBpbnRlbC1yYXBsCisgICAgPz8/IGludGVsLXJhcGw6MAorICAgID/CoMKgID8/PyBjb25zdHJhaW50XzBfbmFtZQorICAgID/CoMKgID8/PyBjb25zdHJhaW50XzBfcG93ZXJfbGltaXRfdXcKKyAgICA/wqDCoCA/Pz8gY29uc3RyYWludF8wX3RpbWVfd2luZG93X3VzCisgICAgP8KgwqAgPz8/IGNvbnN0cmFpbnRfMV9uYW1lCisgICAgP8KgwqAgPz8/IGNvbnN0cmFpbnRfMV9wb3dlcl9saW1pdF91dworICAgID/CoMKgID8/PyBjb25zdHJhaW50XzFfdGltZV93aW5kb3dfdXMKKyAgICA/wqDCoCA/Pz8gZGV2aWNlIC0+IC4uLy4uL2ludGVsLXJhcGwKKyAgICA/wqDCoCA/Pz8gZW5lcmd5X3VqCisgICAgP8KgwqAgPz8/IGludGVsLXJhcGw6MDowCisgICAgP8KgwqAgP8KgwqAgPz8/IGNvbnN0cmFpbnRfMF9uYW1lCisgICAgP8KgwqAgP8KgwqAgPz8/IGNvbnN0cmFpbnRfMF9wb3dlcl9saW1pdF91dworICAgID/CoMKgID/CoMKgID8/PyBjb25zdHJhaW50XzBfdGltZV93aW5kb3dfdXMKKyAgICA/wqDCoCA/wqDCoCA/Pz8gY29uc3RyYWludF8xX25hbWUKKyAgICA/wqDCoCA/wqDCoCA/Pz8gY29uc3RyYWludF8xX3Bvd2VyX2xpbWl0X3V3CisgICAgP8KgwqAgP8KgwqAgPz8/IGNvbnN0cmFpbnRfMV90aW1lX3dpbmRvd191cworICAgID/CoMKgID/CoMKgID8/PyBkZXZpY2UgLT4gLi4vLi4vaW50ZWwtcmFwbDowCisgICAgP8KgwqAgP8KgwqAgPz8/IGVuZXJneV91agorICAgID/CoMKgID/CoMKgID8/PyBtYXhfZW5lcmd5X3JhbmdlX3VqCisgICAgP8KgwqAgP8KgwqAgPz8/IG5hbWUKKyAgICA/wqDCoCA/wqDCoCA/Pz8gZW5hYmxlZAorICAgID/CoMKgID/CoMKgID8/PyBwb3dlcgorICAgID/CoMKgID/CoMKgID/CoMKgID8/PyBhc3luYworICAgID/CoMKgID/CoMKgID/CoMKgIFtdCisgICAgP8KgwqAgP8KgwqAgPz8/IHN1YnN5c3RlbSAtPiAuLi8uLi8uLi8uLi8uLi8uLi9jbGFzcy9wb3dlcl9jYXAKKyAgICA/wqDCoCA/wqDCoCA/Pz8gdWV2ZW50CisgICAgP8KgwqAgPz8/IGludGVsLXJhcGw6MDoxCisgICAgP8KgwqAgP8KgwqAgPz8/IGNvbnN0cmFpbnRfMF9uYW1lCisgICAgP8KgwqAgP8KgwqAgPz8/IGNvbnN0cmFpbnRfMF9wb3dlcl9saW1pdF91dworICAgID/CoMKgID/CoMKgID8/PyBjb25zdHJhaW50XzBfdGltZV93aW5kb3dfdXMKKyAgICA/wqDCoCA/wqDCoCA/Pz8gY29uc3RyYWludF8xX25hbWUKKyAgICA/wqDCoCA/wqDCoCA/Pz8gY29uc3RyYWludF8xX3Bvd2VyX2xpbWl0X3V3CisgICAgP8KgwqAgP8KgwqAgPz8/IGNvbnN0cmFpbnRfMV90aW1lX3dpbmRvd191cworICAgID/CoMKgID/CoMKgID8/PyBkZXZpY2UgLT4gLi4vLi4vaW50ZWwtcmFwbDowCisgICAgP8KgwqAgP8KgwqAgPz8/IGVuZXJneV91agorICAgID/CoMKgID/CoMKgID8/PyBtYXhfZW5lcmd5X3JhbmdlX3VqCisgICAgP8KgwqAgP8KgwqAgPz8/IG5hbWUKKyAgICA/wqDCoCA/wqDCoCA/Pz8gZW5hYmxlZAorICAgID/CoMKgID/CoMKgID8/PyBwb3dlcgorICAgID/CoMKgID/CoMKgID/CoMKgID8/PyBhc3luYworICAgID/CoMKgID/CoMKgID/CoMKgIFtdCisgICAgP8KgwqAgP8KgwqAgPz8/IHN1YnN5c3RlbSAtPiAuLi8uLi8uLi8uLi8uLi8uLi9jbGFzcy9wb3dlcl9jYXAKKyAgICA/wqDCoCA/wqDCoCA/Pz8gdWV2ZW50CisgICAgP8KgwqAgPz8/IG1heF9lbmVyZ3lfcmFuZ2VfdWoKKyAgICA/wqDCoCA/Pz8gbWF4X3Bvd2VyX3JhbmdlX3V3CisgICAgP8KgwqAgPz8/IG5hbWUKKyAgICA/wqDCoCA/Pz8gZW5hYmxlZAorICAgID/CoMKgID8/PyBwb3dlcgorICAgID/CoMKgID/CoMKgID8/PyBhc3luYworICAgID/CoMKgID/CoMKgIFtdCisgICAgP8KgwqAgPz8/IHN1YnN5c3RlbSAtPiAuLi8uLi8uLi8uLi8uLi9jbGFzcy9wb3dlcl9jYXAKKyAgICA/wqDCoCA/Pz8gZW5hYmxlZAorICAgID/CoMKgID8/PyB1ZXZlbnQKKyAgICA/Pz8gaW50ZWwtcmFwbDoxCisgICAgP8KgwqAgPz8/IGNvbnN0cmFpbnRfMF9uYW1lCisgICAgP8KgwqAgPz8/IGNvbnN0cmFpbnRfMF9wb3dlcl9saW1pdF91dworICAgID/CoMKgID8/PyBjb25zdHJhaW50XzBfdGltZV93aW5kb3dfdXMKKyAgICA/wqDCoCA/Pz8gY29uc3RyYWludF8xX25hbWUKKyAgICA/wqDCoCA/Pz8gY29uc3RyYWludF8xX3Bvd2VyX2xpbWl0X3V3CisgICAgP8KgwqAgPz8/IGNvbnN0cmFpbnRfMV90aW1lX3dpbmRvd191cworICAgID/CoMKgID8/PyBkZXZpY2UgLT4gLi4vLi4vaW50ZWwtcmFwbAorICAgID/CoMKgID8/PyBlbmVyZ3lfdWoKKyAgICA/wqDCoCA/Pz8gaW50ZWwtcmFwbDoxOjAKKyAgICA/wqDCoCA/wqDCoCA/Pz8gY29uc3RyYWludF8wX25hbWUKKyAgICA/wqDCoCA/wqDCoCA/Pz8gY29uc3RyYWludF8wX3Bvd2VyX2xpbWl0X3V3CisgICAgP8KgwqAgP8KgwqAgPz8/IGNvbnN0cmFpbnRfMF90aW1lX3dpbmRvd191cworICAgID/CoMKgID/CoMKgID8/PyBjb25zdHJhaW50XzFfbmFtZQorICAgID/CoMKgID/CoMKgID8/PyBjb25zdHJhaW50XzFfcG93ZXJfbGltaXRfdXcKKyAgICA/wqDCoCA/wqDCoCA/Pz8gY29uc3RyYWludF8xX3RpbWVfd2luZG93X3VzCisgICAgP8KgwqAgP8KgwqAgPz8/IGRldmljZSAtPiAuLi8uLi9pbnRlbC1yYXBsOjEKKyAgICA/wqDCoCA/wqDCoCA/Pz8gZW5lcmd5X3VqCisgICAgP8KgwqAgP8KgwqAgPz8/IG1heF9lbmVyZ3lfcmFuZ2VfdWoKKyAgICA/wqDCoCA/wqDCoCA/Pz8gbmFtZQorICAgID/CoMKgID/CoMKgID8/PyBlbmFibGVkCisgICAgP8KgwqAgP8KgwqAgPz8/IHBvd2VyCisgICAgP8KgwqAgP8KgwqAgP8KgwqAgPz8/IGFzeW5jCisgICAgP8KgwqAgP8KgwqAgP8KgwqAgW10KKyAgICA/wqDCoCA/wqDCoCA/Pz8gc3Vic3lzdGVtIC0+IC4uLy4uLy4uLy4uLy4uLy4uL2NsYXNzL3Bvd2VyX2NhcAorICAgID/CoMKgID/CoMKgID8/PyB1ZXZlbnQKKyAgICA/wqDCoCA/Pz8gaW50ZWwtcmFwbDoxOjEKKyAgICA/wqDCoCA/wqDCoCA/Pz8gY29uc3RyYWludF8wX25hbWUKKyAgICA/wqDCoCA/wqDCoCA/Pz8gY29uc3RyYWludF8wX3Bvd2VyX2xpbWl0X3V3CisgICAgP8KgwqAgP8KgwqAgPz8/IGNvbnN0cmFpbnRfMF90aW1lX3dpbmRvd191cworICAgID/CoMKgID/CoMKgID8/PyBjb25zdHJhaW50XzFfbmFtZQorICAgID/CoMKgID/CoMKgID8/PyBjb25zdHJhaW50XzFfcG93ZXJfbGltaXRfdXcKKyAgICA/wqDCoCA/wqDCoCA/Pz8gY29uc3RyYWludF8xX3RpbWVfd2luZG93X3VzCisgICAgP8KgwqAgP8KgwqAgPz8/IGRldmljZSAtPiAuLi8uLi9pbnRlbC1yYXBsOjEKKyAgICA/wqDCoCA/wqDCoCA/Pz8gZW5lcmd5X3VqCisgICAgP8KgwqAgP8KgwqAgPz8/IG1heF9lbmVyZ3lfcmFuZ2VfdWoKKyAgICA/wqDCoCA/wqDCoCA/Pz8gbmFtZQorICAgID/CoMKgID/CoMKgID8/PyBlbmFibGVkCisgICAgP8KgwqAgP8KgwqAgPz8/IHBvd2VyCisgICAgP8KgwqAgP8KgwqAgP8KgwqAgPz8/IGFzeW5jCisgICAgP8KgwqAgP8KgwqAgP8KgwqAgW10KKyAgICA/wqDCoCA/wqDCoCA/Pz8gc3Vic3lzdGVtIC0+IC4uLy4uLy4uLy4uLy4uLy4uL2NsYXNzL3Bvd2VyX2NhcAorICAgID/CoMKgID/CoMKgID8/PyB1ZXZlbnQKKyAgICA/wqDCoCA/Pz8gbWF4X2VuZXJneV9yYW5nZV91agorICAgID/CoMKgID8/PyBtYXhfcG93ZXJfcmFuZ2VfdXcKKyAgICA/wqDCoCA/Pz8gbmFtZQorICAgID/CoMKgID8/PyBlbmFibGVkCisgICAgP8KgwqAgPz8/IHBvd2VyCisgICAgP8KgwqAgP8KgwqAgPz8/IGFzeW5jCisgICAgP8KgwqAgP8KgwqAgW10KKyAgICA/wqDCoCA/Pz8gc3Vic3lzdGVtIC0+IC4uLy4uLy4uLy4uLy4uL2NsYXNzL3Bvd2VyX2NhcAorICAgID/CoMKgID8/PyB1ZXZlbnQKKyAgICA/Pz8gcG93ZXIKKyAgICA/wqDCoCA/Pz8gYXN5bmMKKyAgICA/wqDCoCBbXQorICAgID8/PyBzdWJzeXN0ZW0gLT4gLi4vLi4vLi4vLi4vY2xhc3MvcG93ZXJfY2FwCisgICAgPz8/IGVuYWJsZWQKKyAgICA/Pz8gdWV2ZW50CisKK1RoZSBhYm92ZSBleGFtcGxlIGlsbHVzdHJhdGVzIGEgY2FzZSBpbiB3aGljaCB0aGUgSW50ZWwgUkFQTCB0ZWNobm9sb2d5LAorYXZhaWxhYmxlIGluIEludGVswq4gSUEtNjQgYW5kIElBLTMyIFByb2Nlc3NvciBBcmNoaXRlY3R1cmVzLCBpcyB1c2VkLiBUaGVyZSBpcyBvbmUKK2NvbnRyb2wgdHlwZSBjYWxsZWQgaW50ZWwtcmFwbCB3aGljaCBjb250YWlucyB0d28gcG93ZXIgem9uZXMsIGludGVsLXJhcGw6MCBhbmQKK2ludGVsLXJhcGw6MSwgcmVwcmVzZW50aW5nIENQVSBwYWNrYWdlcy4gIEVhY2ggb2YgdGhlc2UgcG93ZXIgem9uZXMgY29udGFpbnMKK3R3byBzdWJ6b25lcywgaW50ZWwtcmFwbDpqOjAgYW5kIGludGVsLXJhcGw6ajoxIChqID0gMCwgMSksIHJlcHJlc2VudGluZyB0aGUKKyJjb3JlIiBhbmQgdGhlICJ1bmNvcmUiIHBhcnRzIG9mIHRoZSBnaXZlbiBDUFUgcGFja2FnZSwgcmVzcGVjdGl2ZWx5LiAgQWxsIG9mCit0aGUgem9uZXMgYW5kIHN1YnpvbmVzIGNvbnRhaW4gZW5lcmd5IG1vbml0b3JpbmcgYXR0cmlidXRlcyAoZW5lcmd5X3VqLAorbWF4X2VuZXJneV9yYW5nZV91aikgYW5kIGNvbnN0cmFpbnQgYXR0cmlidXRlcyAoY29uc3RyYWludF8qKSBhbGxvd2luZyBjb250cm9scwordG8gYmUgYXBwbGllZCAodGhlIGNvbnN0cmFpbnRzIGluIHRoZSAncGFja2FnZScgcG93ZXIgem9uZXMgYXBwbHkgdG8gdGhlIHdob2xlCitDUFUgcGFja2FnZXMgYW5kIHRoZSBzdWJ6b25lIGNvbnN0cmFpbnRzIG9ubHkgYXBwbHkgdG8gdGhlIHJlc3BlY3RpdmUgcGFydHMgb2YKK3RoZSBnaXZlbiBwYWNrYWdlIGluZGl2aWR1YWxseSkuIFNpbmNlIEludGVsIFJBUEwgZG9lc24ndCBwcm92aWRlIGluc3RhbnRhbmVvdXMKK3Bvd2VyIHZhbHVlLCB0aGVyZSBpcyBubyBwb3dlcl91dyBhdHRyaWJ1dGUuCisKK0luIGFkZGl0aW9uIHRvIHRoYXQsIGVhY2ggcG93ZXIgem9uZSBjb250YWlucyBhIG5hbWUgYXR0cmlidXRlLCBhbGxvd2luZyB0aGUKK3BhcnQgb2YgdGhlIHN5c3RlbSByZXByZXNlbnRlZCBieSB0aGF0IHpvbmUgdG8gYmUgaWRlbnRpZmllZC4KK0ZvciBleGFtcGxlOgorCitjYXQgL3N5cy9jbGFzcy9wb3dlcl9jYXAvaW50ZWwtcmFwbC9pbnRlbC1yYXBsOjAvbmFtZQorcGFja2FnZS0wCisKK1RoZSBJbnRlbCBSQVBMIHRlY2hub2xvZ3kgYWxsb3dzIHR3byBjb25zdHJhaW50cywgc2hvcnQgdGVybSBhbmQgbG9uZyB0ZXJtLAord2l0aCB0d28gZGlmZmVyZW50IHRpbWUgd2luZG93cyB0byBiZSBhcHBsaWVkIHRvIGVhY2ggcG93ZXIgem9uZS4gIFRodXMgZm9yCitlYWNoIHpvbmUgdGhlcmUgYXJlIDIgYXR0cmlidXRlcyByZXByZXNlbnRpbmcgdGhlIGNvbnN0cmFpbnQgbmFtZXMsIDIgcG93ZXIKK2xpbWl0cyBhbmQgMiBhdHRyaWJ1dGVzIHJlcHJlc2VudGluZyB0aGUgc2l6ZXMgb2YgdGhlIHRpbWUgd2luZG93cy4gU3VjaCB0aGF0LAorY29uc3RyYWludF9qXyogYXR0cmlidXRlcyBjb3JyZXNwb25kIHRvIHRoZSBqdGggY29uc3RyYWludCAoaiA9IDAsMSkuCisKK0ZvciBleGFtcGxlOgorCWNvbnN0cmFpbnRfMF9uYW1lCisJY29uc3RyYWludF8wX3Bvd2VyX2xpbWl0X3V3CisJY29uc3RyYWludF8wX3RpbWVfd2luZG93X3VzCisJY29uc3RyYWludF8xX25hbWUKKwljb25zdHJhaW50XzFfcG93ZXJfbGltaXRfdXcKKwljb25zdHJhaW50XzFfdGltZV93aW5kb3dfdXMKKworUG93ZXIgWm9uZSBBdHRyaWJ1dGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK01vbml0b3JpbmcgYXR0cmlidXRlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitlbmVyZ3lfdWogKHJ3KTogQ3VycmVudCBlbmVyZ3kgY291bnRlciBpbiBtaWNybyBqb3VsZXMuIFdyaXRlICIwIiB0byByZXNldC4KK0lmIHRoZSBjb3VudGVyIGNhbiBub3QgYmUgcmVzZXQsIHRoZW4gdGhpcyBhdHRyaWJ1dGUgaXMgcmVhZCBvbmx5LgorCittYXhfZW5lcmd5X3JhbmdlX3VqIChybyk6IFJhbmdlIG9mIHRoZSBhYm92ZSBlbmVyZ3kgY291bnRlciBpbiBtaWNyby1qb3VsZXMuCisKK3Bvd2VyX3V3IChybyk6IEN1cnJlbnQgcG93ZXIgaW4gbWljcm8gd2F0dHMuCisKK21heF9wb3dlcl9yYW5nZV91dyAocm8pOiBSYW5nZSBvZiB0aGUgYWJvdmUgcG93ZXIgdmFsdWUgaW4gbWljcm8td2F0dHMuCisKK25hbWUgKHJvKTogTmFtZSBvZiB0aGlzIHBvd2VyIHpvbmUuCisKK0l0IGlzIHBvc3NpYmxlIHRoYXQgc29tZSBkb21haW5zIGhhdmUgYm90aCBwb3dlciByYW5nZXMgYW5kIGVuZXJneSBjb3VudGVyIHJhbmdlczsKK2hvd2V2ZXIsIG9ubHkgb25lIGlzIG1hbmRhdG9yeS4KKworQ29uc3RyYWludHMKKy0tLS0tLS0tLS0tLS0tLS0KK2NvbnN0cmFpbnRfWF9wb3dlcl9saW1pdF91dyAocncpOiBQb3dlciBsaW1pdCBpbiBtaWNybyB3YXR0cywgd2hpY2ggc2hvdWxkIGJlCithcHBsaWNhYmxlIGZvciB0aGUgdGltZSB3aW5kb3cgc3BlY2lmaWVkIGJ5ICJjb25zdHJhaW50X1hfdGltZV93aW5kb3dfdXMiLgorCitjb25zdHJhaW50X1hfdGltZV93aW5kb3dfdXMgKHJ3KTogVGltZSB3aW5kb3cgaW4gbWljcm8gc2Vjb25kcy4KKworY29uc3RyYWludF9YX25hbWUgKHJvKTogQW4gb3B0aW9uYWwgbmFtZSBvZiB0aGUgY29uc3RyYWludAorCitjb25zdHJhaW50X1hfbWF4X3Bvd2VyX3V3KHJvKTogTWF4aW11bSBhbGxvd2VkIHBvd2VyIGluIG1pY3JvIHdhdHRzLgorCitjb25zdHJhaW50X1hfbWluX3Bvd2VyX3V3KHJvKTogTWluaW11bSBhbGxvd2VkIHBvd2VyIGluIG1pY3JvIHdhdHRzLgorCitjb25zdHJhaW50X1hfbWF4X3RpbWVfd2luZG93X3VzKHJvKTogTWF4aW11bSBhbGxvd2VkIHRpbWUgd2luZG93IGluIG1pY3JvIHNlY29uZHMuCisKK2NvbnN0cmFpbnRfWF9taW5fdGltZV93aW5kb3dfdXMocm8pOiBNaW5pbXVtIGFsbG93ZWQgdGltZSB3aW5kb3cgaW4gbWljcm8gc2Vjb25kcy4KKworRXhjZXB0IHBvd2VyX2xpbWl0X3V3IGFuZCB0aW1lX3dpbmRvd191cyBvdGhlciBmaWVsZHMgYXJlIG9wdGlvbmFsLgorCitDb21tb24gem9uZSBhbmQgY29udHJvbCB0eXBlIGF0dHJpYnV0ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VuYWJsZWQgKHJ3KTogRW5hYmxlL0Rpc2FibGUgY29udHJvbHMgYXQgem9uZSBsZXZlbCBvciBmb3IgYWxsIHpvbmVzIHVzaW5nCithIGNvbnRyb2wgdHlwZS4KKworUG93ZXIgQ2FwIENsaWVudCBEcml2ZXIgSW50ZXJmYWNlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitUaGUgQVBJIHN1bW1hcnk6CisKK0NhbGwgcG93ZXJjYXBfcmVnaXN0ZXJfY29udHJvbF90eXBlKCkgdG8gcmVnaXN0ZXIgY29udHJvbCB0eXBlIG9iamVjdC4KK0NhbGwgcG93ZXJjYXBfcmVnaXN0ZXJfem9uZSgpIHRvIHJlZ2lzdGVyIGEgcG93ZXIgem9uZSAodW5kZXIgYSBnaXZlbgorY29udHJvbCB0eXBlKSwgZWl0aGVyIGFzIGEgdG9wLWxldmVsIHBvd2VyIHpvbmUgb3IgYXMgYSBzdWJ6b25lIG9mIGFub3RoZXIKK3Bvd2VyIHpvbmUgcmVnaXN0ZXJlZCBlYXJsaWVyLgorVGhlIG51bWJlciBvZiBjb25zdHJhaW50cyBpbiBhIHBvd2VyIHpvbmUgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGNhbGxiYWNrcyBoYXZlCit0byBiZSBkZWZpbmVkIHByaW9yIHRvIGNhbGxpbmcgcG93ZXJjYXBfcmVnaXN0ZXJfem9uZSgpIHRvIHJlZ2lzdGVyIHRoYXQgem9uZS4KKworVG8gRnJlZSBhIHBvd2VyIHpvbmUgY2FsbCBwb3dlcmNhcF91bnJlZ2lzdGVyX3pvbmUoKS4KK1RvIGZyZWUgYSBjb250cm9sIHR5cGUgb2JqZWN0IGNhbGwgcG93ZXJjYXBfdW5yZWdpc3Rlcl9jb250cm9sX3R5cGUoKS4KK0RldGFpbGVkIEFQSSBjYW4gYmUgZ2VuZXJhdGVkIHVzaW5nIGtlcm5lbC1kb2Mgb24gaW5jbHVkZS9saW51eC9wb3dlcmNhcC5oLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlci9yZWd1bGF0b3IvY29uc3VtZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci9yZWd1bGF0b3IvY29uc3VtZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MTU2NGMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL3JlZ3VsYXRvci9jb25zdW1lci50eHQKQEAgLTAsMCArMSwyMTggQEAKK1JlZ3VsYXRvciBDb25zdW1lciBEcml2ZXIgSW50ZXJmYWNlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIHRleHQgZGVzY3JpYmVzIHRoZSByZWd1bGF0b3IgaW50ZXJmYWNlIGZvciBjb25zdW1lciBkZXZpY2UgZHJpdmVycy4KK1BsZWFzZSBzZWUgb3ZlcnZpZXcudHh0IGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSB0ZXJtcyB1c2VkIGluIHRoaXMgdGV4dC4KKworCisxLiBDb25zdW1lciBSZWd1bGF0b3IgQWNjZXNzIChzdGF0aWMgJiBkeW5hbWljIGRyaXZlcnMpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0EgY29uc3VtZXIgZHJpdmVyIGNhbiBnZXQgYWNjZXNzIHRvIGl0cyBzdXBwbHkgcmVndWxhdG9yIGJ5IGNhbGxpbmcgOi0KKworcmVndWxhdG9yID0gcmVndWxhdG9yX2dldChkZXYsICJWY2MiKTsKKworVGhlIGNvbnN1bWVyIHBhc3NlcyBpbiBpdHMgc3RydWN0IGRldmljZSBwb2ludGVyIGFuZCBwb3dlciBzdXBwbHkgSUQuIFRoZSBjb3JlCit0aGVuIGZpbmRzIHRoZSBjb3JyZWN0IHJlZ3VsYXRvciBieSBjb25zdWx0aW5nIGEgbWFjaGluZSBzcGVjaWZpYyBsb29rdXAgdGFibGUuCitJZiB0aGUgbG9va3VwIGlzIHN1Y2Nlc3NmdWwgdGhlbiB0aGlzIGNhbGwgd2lsbCByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBzdHJ1Y3QKK3JlZ3VsYXRvciB0aGF0IHN1cHBsaWVzIHRoaXMgY29uc3VtZXIuCisKK1RvIHJlbGVhc2UgdGhlIHJlZ3VsYXRvciB0aGUgY29uc3VtZXIgZHJpdmVyIHNob3VsZCBjYWxsIDotCisKK3JlZ3VsYXRvcl9wdXQocmVndWxhdG9yKTsKKworQ29uc3VtZXJzIGNhbiBiZSBzdXBwbGllZCBieSBtb3JlIHRoYW4gb25lIHJlZ3VsYXRvciBlLmcuIGNvZGVjIGNvbnN1bWVyIHdpdGgKK2FuYWxvZyBhbmQgZGlnaXRhbCBzdXBwbGllcyA6LQorCitkaWdpdGFsID0gcmVndWxhdG9yX2dldChkZXYsICJWY2MiKTsgIC8qIGRpZ2l0YWwgY29yZSAqLworYW5hbG9nID0gcmVndWxhdG9yX2dldChkZXYsICJBdmRkIik7ICAvKiBhbmFsb2cgKi8KKworVGhlIHJlZ3VsYXRvciBhY2Nlc3MgZnVuY3Rpb25zIHJlZ3VsYXRvcl9nZXQoKSBhbmQgcmVndWxhdG9yX3B1dCgpIHdpbGwKK3VzdWFsbHkgYmUgY2FsbGVkIGluIHlvdXIgZGV2aWNlIGRyaXZlcnMgcHJvYmUoKSBhbmQgcmVtb3ZlKCkgcmVzcGVjdGl2ZWx5LgorCisKKzIuIFJlZ3VsYXRvciBPdXRwdXQgRW5hYmxlICYgRGlzYWJsZSAoc3RhdGljICYgZHluYW1pYyBkcml2ZXJzKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQSBjb25zdW1lciBjYW4gZW5hYmxlIGl0cyBwb3dlciBzdXBwbHkgYnkgY2FsbGluZzotCisKK2ludCByZWd1bGF0b3JfZW5hYmxlKHJlZ3VsYXRvcik7CisKK05PVEU6IFRoZSBzdXBwbHkgbWF5IGFscmVhZHkgYmUgZW5hYmxlZCBiZWZvcmUgcmVndWxhdG9yX2VuYWJsZWQoKSBpcyBjYWxsZWQuCitUaGlzIG1heSBoYXBwZW4gaWYgdGhlIGNvbnN1bWVyIHNoYXJlcyB0aGUgcmVndWxhdG9yIG9yIHRoZSByZWd1bGF0b3IgaGFzIGJlZW4KK3ByZXZpb3VzbHkgZW5hYmxlZCBieSBib290bG9hZGVyIG9yIGtlcm5lbCBib2FyZCBpbml0aWFsaXphdGlvbiBjb2RlLgorCitBIGNvbnN1bWVyIGNhbiBkZXRlcm1pbmUgaWYgYSByZWd1bGF0b3IgaXMgZW5hYmxlZCBieSBjYWxsaW5nIDotCisKK2ludCByZWd1bGF0b3JfaXNfZW5hYmxlZChyZWd1bGF0b3IpOworCitUaGlzIHdpbGwgcmV0dXJuID4gemVybyB3aGVuIHRoZSByZWd1bGF0b3IgaXMgZW5hYmxlZC4KKworCitBIGNvbnN1bWVyIGNhbiBkaXNhYmxlIGl0cyBzdXBwbHkgd2hlbiBubyBsb25nZXIgbmVlZGVkIGJ5IGNhbGxpbmcgOi0KKworaW50IHJlZ3VsYXRvcl9kaXNhYmxlKHJlZ3VsYXRvcik7CisKK05PVEU6IFRoaXMgbWF5IG5vdCBkaXNhYmxlIHRoZSBzdXBwbHkgaWYgaXQncyBzaGFyZWQgd2l0aCBvdGhlciBjb25zdW1lcnMuIFRoZQorcmVndWxhdG9yIHdpbGwgb25seSBiZSBkaXNhYmxlZCB3aGVuIHRoZSBlbmFibGVkIHJlZmVyZW5jZSBjb3VudCBpcyB6ZXJvLgorCitGaW5hbGx5LCBhIHJlZ3VsYXRvciBjYW4gYmUgZm9yY2VmdWxseSBkaXNhYmxlZCBpbiB0aGUgY2FzZSBvZiBhbiBlbWVyZ2VuY3kgOi0KKworaW50IHJlZ3VsYXRvcl9mb3JjZV9kaXNhYmxlKHJlZ3VsYXRvcik7CisKK05PVEU6IHRoaXMgd2lsbCBpbW1lZGlhdGVseSBhbmQgZm9yY2VmdWxseSBzaHV0ZG93biB0aGUgcmVndWxhdG9yIG91dHB1dC4gQWxsCitjb25zdW1lcnMgd2lsbCBiZSBwb3dlcmVkIG9mZi4KKworCiszLiBSZWd1bGF0b3IgVm9sdGFnZSBDb250cm9sICYgU3RhdHVzIChkeW5hbWljIGRyaXZlcnMpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU29tZSBjb25zdW1lciBkcml2ZXJzIG5lZWQgdG8gYmUgYWJsZSB0byBkeW5hbWljYWxseSBjaGFuZ2UgdGhlaXIgc3VwcGx5Cit2b2x0YWdlIHRvIG1hdGNoIHN5c3RlbSBvcGVyYXRpbmcgcG9pbnRzLiBlLmcuIENQVWZyZXEgZHJpdmVycyBjYW4gc2NhbGUKK3ZvbHRhZ2UgYWxvbmcgd2l0aCBmcmVxdWVuY3kgdG8gc2F2ZSBwb3dlciwgU0QgZHJpdmVycyBtYXkgbmVlZCB0byBzZWxlY3QgdGhlCitjb3JyZWN0IGNhcmQgdm9sdGFnZSwgZXRjLgorCitDb25zdW1lcnMgY2FuIGNvbnRyb2wgdGhlaXIgc3VwcGx5IHZvbHRhZ2UgYnkgY2FsbGluZyA6LQorCitpbnQgcmVndWxhdG9yX3NldF92b2x0YWdlKHJlZ3VsYXRvciwgbWluX3VWLCBtYXhfdVYpOworCitXaGVyZSBtaW5fdVYgYW5kIG1heF91ViBhcmUgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gYWNjZXB0YWJsZSB2b2x0YWdlcyBpbgorbWljcm92b2x0cy4KKworTk9URTogdGhpcyBjYW4gYmUgY2FsbGVkIHdoZW4gdGhlIHJlZ3VsYXRvciBpcyBlbmFibGVkIG9yIGRpc2FibGVkLiBJZiBjYWxsZWQKK3doZW4gZW5hYmxlZCwgdGhlbiB0aGUgdm9sdGFnZSBjaGFuZ2VzIGluc3RhbnRseSwgb3RoZXJ3aXNlIHRoZSB2b2x0YWdlCitjb25maWd1cmF0aW9uIGNoYW5nZXMgYW5kIHRoZSB2b2x0YWdlIGlzIHBoeXNpY2FsbHkgc2V0IHdoZW4gdGhlIHJlZ3VsYXRvciBpcworbmV4dCBlbmFibGVkLgorCitUaGUgcmVndWxhdG9ycyBjb25maWd1cmVkIHZvbHRhZ2Ugb3V0cHV0IGNhbiBiZSBmb3VuZCBieSBjYWxsaW5nIDotCisKK2ludCByZWd1bGF0b3JfZ2V0X3ZvbHRhZ2UocmVndWxhdG9yKTsKKworTk9URTogZ2V0X3ZvbHRhZ2UoKSB3aWxsIHJldHVybiB0aGUgY29uZmlndXJlZCBvdXRwdXQgdm9sdGFnZSB3aGV0aGVyIHRoZQorcmVndWxhdG9yIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQgYW5kIHNob3VsZCBOT1QgYmUgdXNlZCB0byBkZXRlcm1pbmUgcmVndWxhdG9yCitvdXRwdXQgc3RhdGUuIEhvd2V2ZXIgdGhpcyBjYW4gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGlzX2VuYWJsZWQoKSB0bworZGV0ZXJtaW5lIHRoZSByZWd1bGF0b3IgcGh5c2ljYWwgb3V0cHV0IHZvbHRhZ2UuCisKKworNC4gUmVndWxhdG9yIEN1cnJlbnQgTGltaXQgQ29udHJvbCAmIFN0YXR1cyAoZHluYW1pYyBkcml2ZXJzKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU29tZSBjb25zdW1lciBkcml2ZXJzIG5lZWQgdG8gYmUgYWJsZSB0byBkeW5hbWljYWxseSBjaGFuZ2UgdGhlaXIgc3VwcGx5CitjdXJyZW50IGxpbWl0IHRvIG1hdGNoIHN5c3RlbSBvcGVyYXRpbmcgcG9pbnRzLiBlLmcuIExDRCBiYWNrbGlnaHQgZHJpdmVyIGNhbgorY2hhbmdlIHRoZSBjdXJyZW50IGxpbWl0IHRvIHZhcnkgdGhlIGJhY2tsaWdodCBicmlnaHRuZXNzLCBVU0IgZHJpdmVycyBtYXkgd2FudAordG8gc2V0IHRoZSBsaW1pdCB0byA1MDBtQSB3aGVuIHN1cHBseWluZyBwb3dlci4KKworQ29uc3VtZXJzIGNhbiBjb250cm9sIHRoZWlyIHN1cHBseSBjdXJyZW50IGxpbWl0IGJ5IGNhbGxpbmcgOi0KKworaW50IHJlZ3VsYXRvcl9zZXRfY3VycmVudF9saW1pdChyZWd1bGF0b3IsIG1pbl91QSwgbWF4X3VBKTsKKworV2hlcmUgbWluX3VBIGFuZCBtYXhfdUEgYXJlIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIGFjY2VwdGFibGUgY3VycmVudCBsaW1pdCBpbgorbWljcm9hbXBzLgorCitOT1RFOiB0aGlzIGNhbiBiZSBjYWxsZWQgd2hlbiB0aGUgcmVndWxhdG9yIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuIElmIGNhbGxlZAord2hlbiBlbmFibGVkLCB0aGVuIHRoZSBjdXJyZW50IGxpbWl0IGNoYW5nZXMgaW5zdGFudGx5LCBvdGhlcndpc2UgdGhlIGN1cnJlbnQKK2xpbWl0IGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBhbmQgdGhlIGN1cnJlbnQgbGltaXQgaXMgcGh5c2ljYWxseSBzZXQgd2hlbiB0aGUKK3JlZ3VsYXRvciBpcyBuZXh0IGVuYWJsZWQuCisKK0EgcmVndWxhdG9ycyBjdXJyZW50IGxpbWl0IGNhbiBiZSBmb3VuZCBieSBjYWxsaW5nIDotCisKK2ludCByZWd1bGF0b3JfZ2V0X2N1cnJlbnRfbGltaXQocmVndWxhdG9yKTsKKworTk9URTogZ2V0X2N1cnJlbnRfbGltaXQoKSB3aWxsIHJldHVybiB0aGUgY3VycmVudCBsaW1pdCB3aGV0aGVyIHRoZSByZWd1bGF0b3IKK2lzIGVuYWJsZWQgb3IgZGlzYWJsZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZCB0byBkZXRlcm1pbmUgcmVndWxhdG9yIGN1cnJlbnQKK2xvYWQuCisKKworNS4gUmVndWxhdG9yIE9wZXJhdGluZyBNb2RlIENvbnRyb2wgJiBTdGF0dXMgKGR5bmFtaWMgZHJpdmVycykKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU29tZSBjb25zdW1lcnMgY2FuIGZ1cnRoZXIgc2F2ZSBzeXN0ZW0gcG93ZXIgYnkgY2hhbmdpbmcgdGhlIG9wZXJhdGluZyBtb2RlIG9mCit0aGVpciBzdXBwbHkgcmVndWxhdG9yIHRvIGJlIG1vcmUgZWZmaWNpZW50IHdoZW4gdGhlIGNvbnN1bWVycyBvcGVyYXRpbmcgc3RhdGUKK2NoYW5nZXMuIGUuZy4gY29uc3VtZXIgZHJpdmVyIGlzIGlkbGUgYW5kIHN1YnNlcXVlbnRseSBkcmF3cyBsZXNzIGN1cnJlbnQKKworUmVndWxhdG9yIG9wZXJhdGluZyBtb2RlIGNhbiBiZSBjaGFuZ2VkIGluZGlyZWN0bHkgb3IgZGlyZWN0bHkuCisKK0luZGlyZWN0IG9wZXJhdGluZyBtb2RlIGNvbnRyb2wuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ29uc3VtZXIgZHJpdmVycyBjYW4gcmVxdWVzdCBhIGNoYW5nZSBpbiB0aGVpciBzdXBwbHkgcmVndWxhdG9yIG9wZXJhdGluZyBtb2RlCitieSBjYWxsaW5nIDotCisKK2ludCByZWd1bGF0b3Jfc2V0X2xvYWQoc3RydWN0IHJlZ3VsYXRvciAqcmVndWxhdG9yLCBpbnQgbG9hZF91QSk7CisKK1RoaXMgd2lsbCBjYXVzZSB0aGUgY29yZSB0byByZWNhbGN1bGF0ZSB0aGUgdG90YWwgbG9hZCBvbiB0aGUgcmVndWxhdG9yIChiYXNlZAorb24gYWxsIGl0cyBjb25zdW1lcnMpIGFuZCBjaGFuZ2Ugb3BlcmF0aW5nIG1vZGUgKGlmIG5lY2Vzc2FyeSBhbmQgcGVybWl0dGVkKQordG8gYmVzdCBtYXRjaCB0aGUgY3VycmVudCBvcGVyYXRpbmcgbG9hZC4KKworVGhlIGxvYWRfdUEgdmFsdWUgY2FuIGJlIGRldGVybWluZWQgZnJvbSB0aGUgY29uc3VtZXIncyBkYXRhc2hlZXQuIGUuZy4gbW9zdAorZGF0YXNoZWV0cyBoYXZlIHRhYmxlcyBzaG93aW5nIHRoZSBtYXhpbXVtIGN1cnJlbnQgY29uc3VtZWQgaW4gY2VydGFpbgorc2l0dWF0aW9ucy4KKworTW9zdCBjb25zdW1lcnMgd2lsbCB1c2UgaW5kaXJlY3Qgb3BlcmF0aW5nIG1vZGUgY29udHJvbCBzaW5jZSB0aGV5IGhhdmUgbm8KK2tub3dsZWRnZSBvZiB0aGUgcmVndWxhdG9yIG9yIHdoZXRoZXIgdGhlIHJlZ3VsYXRvciBpcyBzaGFyZWQgd2l0aCBvdGhlcgorY29uc3VtZXJzLgorCitEaXJlY3Qgb3BlcmF0aW5nIG1vZGUgY29udHJvbC4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQmVzcG9rZSBvciB0aWdodGx5IGNvdXBsZWQgZHJpdmVycyBtYXkgd2FudCB0byBkaXJlY3RseSBjb250cm9sIHJlZ3VsYXRvcgorb3BlcmF0aW5nIG1vZGUgZGVwZW5kaW5nIG9uIHRoZWlyIG9wZXJhdGluZyBwb2ludC4gVGhpcyBjYW4gYmUgYWNoaWV2ZWQgYnkKK2NhbGxpbmcgOi0KKworaW50IHJlZ3VsYXRvcl9zZXRfbW9kZShzdHJ1Y3QgcmVndWxhdG9yICpyZWd1bGF0b3IsIHVuc2lnbmVkIGludCBtb2RlKTsKK3Vuc2lnbmVkIGludCByZWd1bGF0b3JfZ2V0X21vZGUoc3RydWN0IHJlZ3VsYXRvciAqcmVndWxhdG9yKTsKKworRGlyZWN0IG1vZGUgd2lsbCBvbmx5IGJlIHVzZWQgYnkgY29uc3VtZXJzIHRoYXQgKmtub3cqIGFib3V0IHRoZSByZWd1bGF0b3IgYW5kCithcmUgbm90IHNoYXJpbmcgdGhlIHJlZ3VsYXRvciB3aXRoIG90aGVyIGNvbnN1bWVycy4KKworCis2LiBSZWd1bGF0b3IgRXZlbnRzCis9PT09PT09PT09PT09PT09PT09CitSZWd1bGF0b3JzIGNhbiBub3RpZnkgY29uc3VtZXJzIG9mIGV4dGVybmFsIGV2ZW50cy4gRXZlbnRzIGNvdWxkIGJlIHJlY2VpdmVkIGJ5Citjb25zdW1lcnMgdW5kZXIgcmVndWxhdG9yIHN0cmVzcyBvciBmYWlsdXJlIGNvbmRpdGlvbnMuCisKK0NvbnN1bWVycyBjYW4gcmVnaXN0ZXIgaW50ZXJlc3QgaW4gcmVndWxhdG9yIGV2ZW50cyBieSBjYWxsaW5nIDotCisKK2ludCByZWd1bGF0b3JfcmVnaXN0ZXJfbm90aWZpZXIoc3RydWN0IHJlZ3VsYXRvciAqcmVndWxhdG9yLAorCQkJICAgICAgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CisKK0NvbnN1bWVycyBjYW4gdW5yZWdpc3RlciBpbnRlcmVzdCBieSBjYWxsaW5nIDotCisKK2ludCByZWd1bGF0b3JfdW5yZWdpc3Rlcl9ub3RpZmllcihzdHJ1Y3QgcmVndWxhdG9yICpyZWd1bGF0b3IsCisJCQkJc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYik7CisKK1JlZ3VsYXRvcnMgdXNlIHRoZSBrZXJuZWwgbm90aWZpZXIgZnJhbWV3b3JrIHRvIHNlbmQgZXZlbnQgdG8gdGhlaXIgaW50ZXJlc3RlZAorY29uc3VtZXJzLgorCis3LiBSZWd1bGF0b3IgRGlyZWN0IFJlZ2lzdGVyIEFjY2VzcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1NvbWUga2luZHMgb2YgcG93ZXIgbWFuYWdlbWVudCBoYXJkd2FyZSBvciBmaXJtd2FyZSBhcmUgZGVzaWduZWQgc3VjaCB0aGF0Cit0aGV5IG5lZWQgdG8gZG8gbG93LWxldmVsIGhhcmR3YXJlIGFjY2VzcyB0byByZWd1bGF0b3JzLCB3aXRoIG5vIGludm9sdmVtZW50Citmcm9tIHRoZSBrZXJuZWwuIEV4YW1wbGVzIG9mIHN1Y2ggZGV2aWNlcyBhcmU6CisKKy0gY2xvY2tzb3VyY2Ugd2l0aCBhIHZvbHRhZ2UtY29udHJvbGxlZCBvc2NpbGxhdG9yIGFuZCBjb250cm9sIGxvZ2ljIHRvIGNoYW5nZQorICB0aGUgc3VwcGx5IHZvbHRhZ2Ugb3ZlciBJMkMgdG8gYWNoaWV2ZSBhIGRlc2lyZWQgb3V0cHV0IGNsb2NrIHJhdGUKKy0gdGhlcm1hbCBtYW5hZ2VtZW50IGZpcm13YXJlIHRoYXQgY2FuIGlzc3VlIGFuIGFyYml0cmFyeSBJMkMgdHJhbnNhY3Rpb24gdG8KKyAgcGVyZm9ybSBzeXN0ZW0gcG93ZXJvZmYgZHVyaW5nIG92ZXJ0ZW1wZXJhdHVyZSBjb25kaXRpb25zCisKK1RvIHNldCB1cCBzdWNoIGEgZGV2aWNlL2Zpcm13YXJlLCB2YXJpb3VzIHBhcmFtZXRlcnMgbGlrZSBJMkMgYWRkcmVzcyBvZiB0aGUKK3JlZ3VsYXRvciwgYWRkcmVzc2VzIG9mIHZhcmlvdXMgcmVndWxhdG9yIHJlZ2lzdGVycyBldGMuIG5lZWQgdG8gYmUgY29uZmlndXJlZAordG8gaXQuIFRoZSByZWd1bGF0b3IgZnJhbWV3b3JrIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgaGVscGVycyBmb3IgcXVlcnlpbmcKK3RoZXNlIGRldGFpbHMuCisKK0J1cy1zcGVjaWZpYyBkZXRhaWxzLCBsaWtlIEkyQyBhZGRyZXNzZXMgb3IgdHJhbnNmZXIgcmF0ZXMgYXJlIGhhbmRsZWQgYnkgdGhlCityZWdtYXAgZnJhbWV3b3JrLiBUbyBnZXQgdGhlIHJlZ3VsYXRvcidzIHJlZ21hcCAoaWYgc3VwcG9ydGVkKSwgdXNlIDotCisKK3N0cnVjdCByZWdtYXAgKnJlZ3VsYXRvcl9nZXRfcmVnbWFwKHN0cnVjdCByZWd1bGF0b3IgKnJlZ3VsYXRvcik7CisKK1RvIG9idGFpbiB0aGUgaGFyZHdhcmUgcmVnaXN0ZXIgb2Zmc2V0IGFuZCBiaXRtYXNrIGZvciB0aGUgcmVndWxhdG9yJ3Mgdm9sdGFnZQorc2VsZWN0b3IgcmVnaXN0ZXIsIHVzZSA6LQorCitpbnQgcmVndWxhdG9yX2dldF9oYXJkd2FyZV92c2VsX3JlZ2lzdGVyKHN0cnVjdCByZWd1bGF0b3IgKnJlZ3VsYXRvciwKKwkJCQkJIHVuc2lnbmVkICp2c2VsX3JlZywKKwkJCQkJIHVuc2lnbmVkICp2c2VsX21hc2spOworCitUbyBjb252ZXJ0IGEgcmVndWxhdG9yIGZyYW1ld29yayB2b2x0YWdlIHNlbGVjdG9yIGNvZGUgKHVzZWQgYnkKK3JlZ3VsYXRvcl9saXN0X3ZvbHRhZ2UpIHRvIGEgaGFyZHdhcmUtc3BlY2lmaWMgdm9sdGFnZSBzZWxlY3RvciB0aGF0IGNhbiBiZQorZGlyZWN0bHkgd3JpdHRlbiB0byB0aGUgdm9sdGFnZSBzZWxlY3RvciByZWdpc3RlciwgdXNlIDotCisKK2ludCByZWd1bGF0b3JfbGlzdF9oYXJkd2FyZV92c2VsKHN0cnVjdCByZWd1bGF0b3IgKnJlZ3VsYXRvciwKKwkJCQkgdW5zaWduZWQgc2VsZWN0b3IpOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlci9yZWd1bGF0b3IvZGVzaWduLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvcmVndWxhdG9yL2Rlc2lnbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRkOTE5YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXIvcmVndWxhdG9yL2Rlc2lnbi50eHQKQEAgLTAsMCArMSwzMyBAQAorUmVndWxhdG9yIEFQSSBkZXNpZ24gbm90ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgZG9jdW1lbnQgcHJvdmlkZXMgYSBicmllZiwgcGFydGlhbGx5IHN0cnVjdHVyZWQsIG92ZXJ2aWV3IG9mIHNvbWUKK29mIHRoZSBkZXNpZ24gY29uc2lkZXJhdGlvbnMgd2hpY2ggaW1wYWN0IHRoZSByZWd1bGF0b3IgQVBJIGRlc2lnbi4KKworU2FmZXR5CistLS0tLS0KKworIC0gRXJyb3JzIGluIHJlZ3VsYXRvciBjb25maWd1cmF0aW9uIGNhbiBoYXZlIHZlcnkgc2VyaW91cyBjb25zZXF1ZW5jZXMKKyAgIGZvciB0aGUgc3lzdGVtLCBwb3RlbnRpYWxseSBpbmNsdWRpbmcgbGFzdGluZyBoYXJkd2FyZSBkYW1hZ2UuCisgLSBJdCBpcyBub3QgcG9zc2libGUgdG8gYXV0b21hdGljYWxseSBkZXRlcm1pbmUgdGhlIHBvd2VyIGNvbmZpZ3VyYXRpb24KKyAgIG9mIHRoZSBzeXN0ZW0gLSBzb2Z0d2FyZS1lcXVpdmFsZW50IHZhcmlhbnRzIG9mIHRoZSBzYW1lIGNoaXAgbWF5CisgICBoYXZlIGRpZmZlcmVudCBwb3dlciByZXF1aXJlbWVudHMsIGFuZCBub3QgYWxsIGNvbXBvbmVudHMgd2l0aCBwb3dlcgorICAgcmVxdWlyZW1lbnRzIGFyZSB2aXNpYmxlIHRvIHNvZnR3YXJlLgorCisgID0+IFRoZSBBUEkgc2hvdWxkIG1ha2Ugbm8gY2hhbmdlcyB0byB0aGUgaGFyZHdhcmUgc3RhdGUgdW5sZXNzIGl0IGhhcworICAgICBzcGVjaWZpYyBrbm93bGVkZ2UgdGhhdCB0aGVzZSBjaGFuZ2VzIGFyZSBzYWZlIHRvIHBlcmZvcm0gb24gdGhpcworICAgICBwYXJ0aWN1bGFyIHN5c3RlbS4KKworQ29uc3VtZXIgdXNlIGNhc2VzCistLS0tLS0tLS0tLS0tLS0tLS0KKworIC0gVGhlIG92ZXJ3aGVsbWluZyBtYWpvcml0eSBvZiBkZXZpY2VzIGluIGEgc3lzdGVtIHdpbGwgaGF2ZSBubworICAgcmVxdWlyZW1lbnQgdG8gZG8gYW55IHJ1bnRpbWUgY29uZmlndXJhdGlvbiBvZiB0aGVpciBwb3dlciBiZXlvbmQKKyAgIGJlaW5nIGFibGUgdG8gdHVybiBpdCBvbiBvciBvZmYuCisKKyAtIE1hbnkgb2YgdGhlIHBvd2VyIHN1cHBsaWVzIGluIHRoZSBzeXN0ZW0gd2lsbCBiZSBzaGFyZWQgYmV0d2VlbiBtYW55CisgICBkaWZmZXJlbnQgY29uc3VtZXJzLgorCisgID0+IFRoZSBjb25zdW1lciBBUEkgc2hvdWxkIGJlIHN0cnVjdHVyZWQgc28gdGhhdCB0aGVzZSB1c2UgY2FzZXMgYXJlCisgICAgIHZlcnkgZWFzeSB0byBoYW5kbGUgYW5kIHNvIHRoYXQgY29uc3VtZXJzIHdpbGwgd29yayB3aXRoIHNoYXJlZAorICAgICBzdXBwbGllcyB3aXRob3V0IGFueSBhZGRpdGlvbmFsIGVmZm9ydC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvcmVndWxhdG9yL21hY2hpbmUudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci9yZWd1bGF0b3IvbWFjaGluZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU3ZTNiNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXIvcmVndWxhdG9yL21hY2hpbmUudHh0CkBAIC0wLDAgKzEsMTAwIEBACitSZWd1bGF0b3IgTWFjaGluZSBEcml2ZXIgSW50ZXJmYWNlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgcmVndWxhdG9yIG1hY2hpbmUgZHJpdmVyIGludGVyZmFjZSBpcyBpbnRlbmRlZCBmb3IgYm9hcmQvbWFjaGluZSBzcGVjaWZpYworaW5pdGlhbGlzYXRpb24gY29kZSB0byBjb25maWd1cmUgdGhlIHJlZ3VsYXRvciBzdWJzeXN0ZW0uCisKK0NvbnNpZGVyIHRoZSBmb2xsb3dpbmcgbWFjaGluZSA6LQorCisgIFJlZ3VsYXRvci0xIC0rLT4gUmVndWxhdG9yLTIgLS0+IFtDb25zdW1lciBBIEAgMS44IC0gMi4wVl0KKyAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICstPiBbQ29uc3VtZXIgQiBAIDMuM1ZdCisKK1RoZSBkcml2ZXJzIGZvciBjb25zdW1lcnMgQSAmIEIgbXVzdCBiZSBtYXBwZWQgdG8gdGhlIGNvcnJlY3QgcmVndWxhdG9yIGluCitvcmRlciB0byBjb250cm9sIHRoZWlyIHBvd2VyIHN1cHBsaWVzLiBUaGlzIG1hcHBpbmcgY2FuIGJlIGFjaGlldmVkIGluIG1hY2hpbmUKK2luaXRpYWxpc2F0aW9uIGNvZGUgYnkgY3JlYXRpbmcgYSBzdHJ1Y3QgcmVndWxhdG9yX2NvbnN1bWVyX3N1cHBseSBmb3IKK2VhY2ggcmVndWxhdG9yLgorCitzdHJ1Y3QgcmVndWxhdG9yX2NvbnN1bWVyX3N1cHBseSB7CisJY29uc3QgY2hhciAqZGV2X25hbWU7CS8qIGNvbnN1bWVyIGRldl9uYW1lKCkgKi8KKwljb25zdCBjaGFyICpzdXBwbHk7CS8qIGNvbnN1bWVyIHN1cHBseSAtIGUuZy4gInZjYyIgKi8KK307CisKK2UuZy4gZm9yIHRoZSBtYWNoaW5lIGFib3ZlCisKK3N0YXRpYyBzdHJ1Y3QgcmVndWxhdG9yX2NvbnN1bWVyX3N1cHBseSByZWd1bGF0b3IxX2NvbnN1bWVyc1tdID0geworeworCS5kZXZfbmFtZQk9ICJkZXZfbmFtZShjb25zdW1lciBCKSIsCisJLnN1cHBseQkJPSAiVmNjIiwKK30sfTsKKworc3RhdGljIHN0cnVjdCByZWd1bGF0b3JfY29uc3VtZXJfc3VwcGx5IHJlZ3VsYXRvcjJfY29uc3VtZXJzW10gPSB7Cit7CisJLmRldgk9ICJkZXZfbmFtZShjb25zdW1lciBBIiksCisJLnN1cHBseQk9ICJWY2MiLAorfSx9OworCitUaGlzIG1hcHMgUmVndWxhdG9yLTEgdG8gdGhlICdWY2MnIHN1cHBseSBmb3IgQ29uc3VtZXIgQiBhbmQgbWFwcyBSZWd1bGF0b3ItMgordG8gdGhlICdWY2MnIHN1cHBseSBmb3IgQ29uc3VtZXIgQS4KKworQ29uc3RyYWludHMgY2FuIG5vdyBiZSByZWdpc3RlcmVkIGJ5IGRlZmluaW5nIGEgc3RydWN0IHJlZ3VsYXRvcl9pbml0X2RhdGEKK2ZvciBlYWNoIHJlZ3VsYXRvciBwb3dlciBkb21haW4uIFRoaXMgc3RydWN0dXJlIGFsc28gbWFwcyB0aGUgY29uc3VtZXJzCit0byB0aGVpciBzdXBwbHkgcmVndWxhdG9ycyA6LQorCitzdGF0aWMgc3RydWN0IHJlZ3VsYXRvcl9pbml0X2RhdGEgcmVndWxhdG9yMV9kYXRhID0geworCS5jb25zdHJhaW50cyA9IHsKKwkJLm5hbWUgPSAiUmVndWxhdG9yLTEiLAorCQkubWluX3VWID0gMzMwMDAwMCwKKwkJLm1heF91ViA9IDMzMDAwMDAsCisJCS52YWxpZF9tb2Rlc19tYXNrID0gUkVHVUxBVE9SX01PREVfTk9STUFMLAorCX0sCisJLm51bV9jb25zdW1lcl9zdXBwbGllcyA9IEFSUkFZX1NJWkUocmVndWxhdG9yMV9jb25zdW1lcnMpLAorCS5jb25zdW1lcl9zdXBwbGllcyA9IHJlZ3VsYXRvcjFfY29uc3VtZXJzLAorfTsKKworVGhlIG5hbWUgZmllbGQgc2hvdWxkIGJlIHNldCB0byBzb21ldGhpbmcgdGhhdCBpcyB1c2VmdWxseSBkZXNjcmlwdGl2ZQorZm9yIHRoZSBib2FyZCBmb3IgY29uZmlndXJhdGlvbiBvZiBzdXBwbGllcyBmb3Igb3RoZXIgcmVndWxhdG9ycyBhbmQKK2ZvciB1c2UgaW4gbG9nZ2luZyBhbmQgb3RoZXIgZGlhZ25vc3RpYyBvdXRwdXQuICBOb3JtYWxseSB0aGUgbmFtZQordXNlZCBmb3IgdGhlIHN1cHBseSByYWlsIGluIHRoZSBzY2hlbWF0aWMgaXMgYSBnb29kIGNob2ljZS4gIElmIG5vCituYW1lIGlzIHByb3ZpZGVkIHRoZW4gdGhlIHN1YnN5c3RlbSB3aWxsIGNob29zZSBvbmUuCisKK1JlZ3VsYXRvci0xIHN1cHBsaWVzIHBvd2VyIHRvIFJlZ3VsYXRvci0yLiBUaGlzIHJlbGF0aW9uc2hpcCBtdXN0IGJlIHJlZ2lzdGVyZWQKK3dpdGggdGhlIGNvcmUgc28gdGhhdCBSZWd1bGF0b3ItMSBpcyBhbHNvIGVuYWJsZWQgd2hlbiBDb25zdW1lciBBIGVuYWJsZXMgaXRzCitzdXBwbHkgKFJlZ3VsYXRvci0yKS4gVGhlIHN1cHBseSByZWd1bGF0b3IgaXMgc2V0IGJ5IHRoZSBzdXBwbHlfcmVndWxhdG9yCitmaWVsZCBiZWxvdyBhbmQgY286LQorCitzdGF0aWMgc3RydWN0IHJlZ3VsYXRvcl9pbml0X2RhdGEgcmVndWxhdG9yMl9kYXRhID0geworCS5zdXBwbHlfcmVndWxhdG9yID0gIlJlZ3VsYXRvci0xIiwKKwkuY29uc3RyYWludHMgPSB7CisJCS5taW5fdVYgPSAxODAwMDAwLAorCQkubWF4X3VWID0gMjAwMDAwMCwKKwkJLnZhbGlkX29wc19tYXNrID0gUkVHVUxBVE9SX0NIQU5HRV9WT0xUQUdFLAorCQkudmFsaWRfbW9kZXNfbWFzayA9IFJFR1VMQVRPUl9NT0RFX05PUk1BTCwKKwl9LAorCS5udW1fY29uc3VtZXJfc3VwcGxpZXMgPSBBUlJBWV9TSVpFKHJlZ3VsYXRvcjJfY29uc3VtZXJzKSwKKwkuY29uc3VtZXJfc3VwcGxpZXMgPSByZWd1bGF0b3IyX2NvbnN1bWVycywKK307CisKK0ZpbmFsbHkgdGhlIHJlZ3VsYXRvciBkZXZpY2VzIG11c3QgYmUgcmVnaXN0ZXJlZCBpbiB0aGUgdXN1YWwgbWFubmVyLgorCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSByZWd1bGF0b3JfZGV2aWNlc1tdID0geworeworCS5uYW1lID0gInJlZ3VsYXRvciIsCisJLmlkID0gRENEQ18xLAorCS5kZXYgPSB7CisJCS5wbGF0Zm9ybV9kYXRhID0gJnJlZ3VsYXRvcjFfZGF0YSwKKwl9LAorfSwKK3sKKwkubmFtZSA9ICJyZWd1bGF0b3IiLAorCS5pZCA9IERDRENfMiwKKwkuZGV2ID0geworCQkucGxhdGZvcm1fZGF0YSA9ICZyZWd1bGF0b3IyX2RhdGEsCisJfSwKK30sCit9OworLyogcmVnaXN0ZXIgcmVndWxhdG9yIDEgZGV2aWNlICovCitwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJnJlZ3VsYXRvcl9kZXZpY2VzWzBdKTsKKworLyogcmVnaXN0ZXIgcmVndWxhdG9yIDIgZGV2aWNlICovCitwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJnJlZ3VsYXRvcl9kZXZpY2VzWzFdKTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvcmVndWxhdG9yL292ZXJ2aWV3LnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvcmVndWxhdG9yL292ZXJ2aWV3LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGNhMmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci9yZWd1bGF0b3Ivb3ZlcnZpZXcudHh0CkBAIC0wLDAgKzEsMTcxIEBACitMaW51eCB2b2x0YWdlIGFuZCBjdXJyZW50IHJlZ3VsYXRvciBmcmFtZXdvcmsKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBYm91dAorPT09PT0KKworVGhpcyBmcmFtZXdvcmsgaXMgZGVzaWduZWQgdG8gcHJvdmlkZSBhIHN0YW5kYXJkIGtlcm5lbCBpbnRlcmZhY2UgdG8gY29udHJvbAordm9sdGFnZSBhbmQgY3VycmVudCByZWd1bGF0b3JzLgorCitUaGUgaW50ZW50aW9uIGlzIHRvIGFsbG93IHN5c3RlbXMgdG8gZHluYW1pY2FsbHkgY29udHJvbCByZWd1bGF0b3IgcG93ZXIgb3V0cHV0CitpbiBvcmRlciB0byBzYXZlIHBvd2VyIGFuZCBwcm9sb25nIGJhdHRlcnkgbGlmZS4gVGhpcyBhcHBsaWVzIHRvIGJvdGggdm9sdGFnZQorcmVndWxhdG9ycyAod2hlcmUgdm9sdGFnZSBvdXRwdXQgaXMgY29udHJvbGxhYmxlKSBhbmQgY3VycmVudCBzaW5rcyAod2hlcmUKK2N1cnJlbnQgbGltaXQgaXMgY29udHJvbGxhYmxlKS4KKworKEMpIDIwMDggIFdvbGZzb24gTWljcm9lbGVjdHJvbmljcyBQTEMuCitBdXRob3I6IExpYW0gR2lyZHdvb2QgPGxyZ0BzbGltbG9naWMuY28udWs+CisKKworTm9tZW5jbGF0dXJlCis9PT09PT09PT09PT0KKworU29tZSB0ZXJtcyB1c2VkIGluIHRoaXMgZG9jdW1lbnQ6LQorCisgIG8gUmVndWxhdG9yICAgIC0gRWxlY3Ryb25pYyBkZXZpY2UgdGhhdCBzdXBwbGllcyBwb3dlciB0byBvdGhlciBkZXZpY2VzLgorICAgICAgICAgICAgICAgICAgIE1vc3QgcmVndWxhdG9ycyBjYW4gZW5hYmxlIGFuZCBkaXNhYmxlIHRoZWlyIG91dHB1dCB3aGlsc3QKKyAgICAgICAgICAgICAgICAgICBzb21lIGNhbiBjb250cm9sIHRoZWlyIG91dHB1dCB2b2x0YWdlIGFuZCBvciBjdXJyZW50LgorCisgICAgICAgICAgICAgICAgICAgSW5wdXQgVm9sdGFnZSAtPiBSZWd1bGF0b3IgLT4gT3V0cHV0IFZvbHRhZ2UKKworCisgIG8gUE1JQyAgICAgICAgIC0gUG93ZXIgTWFuYWdlbWVudCBJQy4gQW4gSUMgdGhhdCBjb250YWlucyBudW1lcm91cyByZWd1bGF0b3JzCisgICAgICAgICAgICAgICAgICAgYW5kIG9mdGVuIGNvbnRhaW5zIG90aGVyIHN1YnN5c3RlbXMuCisKKworICBvIENvbnN1bWVyICAgICAtIEVsZWN0cm9uaWMgZGV2aWNlIHRoYXQgaXMgc3VwcGxpZWQgcG93ZXIgYnkgYSByZWd1bGF0b3IuCisgICAgICAgICAgICAgICAgICAgQ29uc3VtZXJzIGNhbiBiZSBjbGFzc2lmaWVkIGludG8gdHdvIHR5cGVzOi0KKworICAgICAgICAgICAgICAgICAgIFN0YXRpYzogY29uc3VtZXIgZG9lcyBub3QgY2hhbmdlIGl0cyBzdXBwbHkgdm9sdGFnZSBvcgorICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgbGltaXQuIEl0IG9ubHkgbmVlZHMgdG8gZW5hYmxlIG9yIGRpc2FibGUgaXRzCisgICAgICAgICAgICAgICAgICAgcG93ZXIgc3VwcGx5LiBJdHMgc3VwcGx5IHZvbHRhZ2UgaXMgc2V0IGJ5IHRoZSBoYXJkd2FyZSwKKyAgICAgICAgICAgICAgICAgICBib290bG9hZGVyLCBmaXJtd2FyZSBvciBrZXJuZWwgYm9hcmQgaW5pdGlhbGlzYXRpb24gY29kZS4KKworICAgICAgICAgICAgICAgICAgIER5bmFtaWM6IGNvbnN1bWVyIG5lZWRzIHRvIGNoYW5nZSBpdHMgc3VwcGx5IHZvbHRhZ2Ugb3IKKyAgICAgICAgICAgICAgICAgICBjdXJyZW50IGxpbWl0IHRvIG1lZXQgb3BlcmF0aW9uIGRlbWFuZHMuCisKKworICBvIFBvd2VyIERvbWFpbiAtIEVsZWN0cm9uaWMgY2lyY3VpdCB0aGF0IGlzIHN1cHBsaWVkIGl0cyBpbnB1dCBwb3dlciBieSB0aGUKKyAgICAgICAgICAgICAgICAgICBvdXRwdXQgcG93ZXIgb2YgYSByZWd1bGF0b3IsIHN3aXRjaCBvciBieSBhbm90aGVyIHBvd2VyCisgICAgICAgICAgICAgICAgICAgZG9tYWluLgorCisgICAgICAgICAgICAgICAgICAgVGhlIHN1cHBseSByZWd1bGF0b3IgbWF5IGJlIGJlaGluZCBhIHN3aXRjaChzKS4gaS5lLgorCisgICAgICAgICAgICAgICAgICAgUmVndWxhdG9yIC0rLT4gU3dpdGNoLTEgLSstPiBTd2l0Y2gtMiAtLT4gW0NvbnN1bWVyIEFdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgKy0+IFtDb25zdW1lciBCXSwgW0NvbnN1bWVyIENdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLT4gW0NvbnN1bWVyIERdLCBbQ29uc3VtZXIgRV0KKworICAgICAgICAgICAgICAgICAgIFRoYXQgaXMgb25lIHJlZ3VsYXRvciBhbmQgdGhyZWUgcG93ZXIgZG9tYWluczoKKworICAgICAgICAgICAgICAgICAgIERvbWFpbiAxOiBTd2l0Y2gtMSwgQ29uc3VtZXJzIEQgJiBFLgorICAgICAgICAgICAgICAgICAgIERvbWFpbiAyOiBTd2l0Y2gtMiwgQ29uc3VtZXJzIEIgJiBDLgorICAgICAgICAgICAgICAgICAgIERvbWFpbiAzOiBDb25zdW1lciBBLgorCisgICAgICAgICAgICAgICAgICAgYW5kIHRoaXMgcmVwcmVzZW50cyBhICJzdXBwbGllcyIgcmVsYXRpb25zaGlwOgorCisgICAgICAgICAgICAgICAgICAgRG9tYWluLTEgLS0+IERvbWFpbi0yIC0tPiBEb21haW4tMy4KKworICAgICAgICAgICAgICAgICAgIEEgcG93ZXIgZG9tYWluIG1heSBoYXZlIHJlZ3VsYXRvcnMgdGhhdCBhcmUgc3VwcGxpZWQgcG93ZXIKKyAgICAgICAgICAgICAgICAgICBieSBvdGhlciByZWd1bGF0b3JzLiBpLmUuCisKKyAgICAgICAgICAgICAgICAgICBSZWd1bGF0b3ItMSAtKy0+IFJlZ3VsYXRvci0yIC0rLT4gW0NvbnN1bWVyIEFdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0+IFtDb25zdW1lciBCXQorCisgICAgICAgICAgICAgICAgICAgVGhpcyBnaXZlcyB1cyB0d28gcmVndWxhdG9ycyBhbmQgdHdvIHBvd2VyIGRvbWFpbnM6CisKKyAgICAgICAgICAgICAgICAgICBEb21haW4gMTogUmVndWxhdG9yLTIsIENvbnN1bWVyIEIuCisgICAgICAgICAgICAgICAgICAgRG9tYWluIDI6IENvbnN1bWVyIEEuCisKKyAgICAgICAgICAgICAgICAgICBhbmQgYSAic3VwcGxpZXMiIHJlbGF0aW9uc2hpcDoKKworICAgICAgICAgICAgICAgICAgIERvbWFpbi0xIC0tPiBEb21haW4tMgorCisKKyAgbyBDb25zdHJhaW50cyAgLSBDb25zdHJhaW50cyBhcmUgdXNlZCB0byBkZWZpbmUgcG93ZXIgbGV2ZWxzIGZvciBwZXJmb3JtYW5jZQorICAgICAgICAgICAgICAgICAgIGFuZCBoYXJkd2FyZSBwcm90ZWN0aW9uLiBDb25zdHJhaW50cyBleGlzdCBhdCB0aHJlZSBsZXZlbHM6CisKKyAgICAgICAgICAgICAgICAgICBSZWd1bGF0b3IgTGV2ZWw6IFRoaXMgaXMgZGVmaW5lZCBieSB0aGUgcmVndWxhdG9yIGhhcmR3YXJlCisgICAgICAgICAgICAgICAgICAgb3BlcmF0aW5nIHBhcmFtZXRlcnMgYW5kIGlzIHNwZWNpZmllZCBpbiB0aGUgcmVndWxhdG9yCisgICAgICAgICAgICAgICAgICAgZGF0YXNoZWV0LiBpLmUuCisKKyAgICAgICAgICAgICAgICAgICAgIC0gdm9sdGFnZSBvdXRwdXQgaXMgaW4gdGhlIHJhbmdlIDgwMG1WIC0+IDM1MDBtVi4KKyAgICAgICAgICAgICAgICAgICAgIC0gcmVndWxhdG9yIGN1cnJlbnQgb3V0cHV0IGxpbWl0IGlzIDIwbUEgQCA1ViBidXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgMTBtQSBAIDEwVi4KKworICAgICAgICAgICAgICAgICAgIFBvd2VyIERvbWFpbiBMZXZlbDogVGhpcyBpcyBkZWZpbmVkIGluIHNvZnR3YXJlIGJ5IGtlcm5lbAorICAgICAgICAgICAgICAgICAgIGxldmVsIGJvYXJkIGluaXRpYWxpc2F0aW9uIGNvZGUuIEl0IGlzIHVzZWQgdG8gY29uc3RyYWluIGEKKyAgICAgICAgICAgICAgICAgICBwb3dlciBkb21haW4gdG8gYSBwYXJ0aWN1bGFyIHBvd2VyIHJhbmdlLiBpLmUuCisKKyAgICAgICAgICAgICAgICAgICAgIC0gRG9tYWluLTEgdm9sdGFnZSBpcyAzMzAwbVYKKyAgICAgICAgICAgICAgICAgICAgIC0gRG9tYWluLTIgdm9sdGFnZSBpcyAxNDAwbVYgLT4gMTYwMG1WCisgICAgICAgICAgICAgICAgICAgICAtIERvbWFpbi0zIGN1cnJlbnQgbGltaXQgaXMgMG1BIC0+IDIwbUEuCisKKyAgICAgICAgICAgICAgICAgICBDb25zdW1lciBMZXZlbDogVGhpcyBpcyBkZWZpbmVkIGJ5IGNvbnN1bWVyIGRyaXZlcnMKKyAgICAgICAgICAgICAgICAgICBkeW5hbWljYWxseSBzZXR0aW5nIHZvbHRhZ2Ugb3IgY3VycmVudCBsaW1pdCBsZXZlbHMuCisKKyAgICAgICAgICAgICAgICAgICBlLmcuIGEgY29uc3VtZXIgYmFja2xpZ2h0IGRyaXZlciBhc2tzIGZvciBhIGN1cnJlbnQgaW5jcmVhc2UKKyAgICAgICAgICAgICAgICAgICBmcm9tIDVtQSB0byAxMG1BIHRvIGluY3JlYXNlIExDRCBpbGx1bWluYXRpb24uIFRoaXMgcGFzc2VzCisgICAgICAgICAgICAgICAgICAgdG8gdGhyb3VnaCB0aGUgbGV2ZWxzIGFzIGZvbGxvd3MgOi0KKworICAgICAgICAgICAgICAgICAgIENvbnN1bWVyOiBuZWVkIHRvIGluY3JlYXNlIExDRCBicmlnaHRuZXNzLiBMb29rdXAgYW5kCisgICAgICAgICAgICAgICAgICAgcmVxdWVzdCBuZXh0IGN1cnJlbnQgbUEgdmFsdWUgaW4gYnJpZ2h0bmVzcyB0YWJsZSAodGhlCisgICAgICAgICAgICAgICAgICAgY29uc3VtZXIgZHJpdmVyIGNvdWxkIGJlIHVzZWQgb24gc2V2ZXJhbCBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICBwZXJzb25hbGl0aWVzIGJhc2VkIHVwb24gdGhlIHNhbWUgcmVmZXJlbmNlIGRldmljZSkuCisKKyAgICAgICAgICAgICAgICAgICBQb3dlciBEb21haW46IGlzIHRoZSBuZXcgY3VycmVudCBsaW1pdCB3aXRoaW4gdGhlIGRvbWFpbgorICAgICAgICAgICAgICAgICAgIG9wZXJhdGluZyBsaW1pdHMgZm9yIHRoaXMgZG9tYWluIGFuZCBzeXN0ZW0gc3RhdGUgKGUuZy4KKyAgICAgICAgICAgICAgICAgICBiYXR0ZXJ5IHBvd2VyLCBVU0IgcG93ZXIpCisKKyAgICAgICAgICAgICAgICAgICBSZWd1bGF0b3IgRG9tYWluczogaXMgdGhlIG5ldyBjdXJyZW50IGxpbWl0IHdpdGhpbiB0aGUKKyAgICAgICAgICAgICAgICAgICByZWd1bGF0b3Igb3BlcmF0aW5nIHBhcmFtZXRlcnMgZm9yIGlucHV0L291dHB1dCB2b2x0YWdlLgorCisgICAgICAgICAgICAgICAgICAgSWYgdGhlIHJlZ3VsYXRvciByZXF1ZXN0IHBhc3NlcyBhbGwgdGhlIGNvbnN0cmFpbnQgdGVzdHMKKyAgICAgICAgICAgICAgICAgICB0aGVuIHRoZSBuZXcgcmVndWxhdG9yIHZhbHVlIGlzIGFwcGxpZWQuCisKKworRGVzaWduCis9PT09PT0KKworVGhlIGZyYW1ld29yayBpcyBkZXNpZ25lZCBhbmQgdGFyZ2V0ZWQgYXQgU29DIGJhc2VkIGRldmljZXMgYnV0IG1heSBhbHNvIGJlCityZWxldmFudCB0byBub24gU29DIGRldmljZXMgYW5kIGlzIHNwbGl0IGludG8gdGhlIGZvbGxvd2luZyBmb3VyIGludGVyZmFjZXM6LQorCisKKyAgIDEuIENvbnN1bWVyIGRyaXZlciBpbnRlcmZhY2UuCisKKyAgICAgIFRoaXMgdXNlcyBhIHNpbWlsYXIgQVBJIHRvIHRoZSBrZXJuZWwgY2xvY2sgaW50ZXJmYWNlIGluIHRoYXQgY29uc3VtZXIKKyAgICAgIGRyaXZlcnMgY2FuIGdldCBhbmQgcHV0IGEgcmVndWxhdG9yIChsaWtlIHRoZXkgY2FuIHdpdGggY2xvY2tzIGF0bSkgYW5kCisgICAgICBnZXQvc2V0IHZvbHRhZ2UsIGN1cnJlbnQgbGltaXQsIG1vZGUsIGVuYWJsZSBhbmQgZGlzYWJsZS4gVGhpcyBzaG91bGQKKyAgICAgIGFsbG93IGNvbnN1bWVycyBjb21wbGV0ZSBjb250cm9sIG92ZXIgdGhlaXIgc3VwcGx5IHZvbHRhZ2UgYW5kIGN1cnJlbnQKKyAgICAgIGxpbWl0LiBUaGlzIGFsc28gY29tcGlsZXMgb3V0IGlmIG5vdCBpbiB1c2Ugc28gZHJpdmVycyBjYW4gYmUgcmV1c2VkIGluCisgICAgICBzeXN0ZW1zIHdpdGggbm8gcmVndWxhdG9yIGJhc2VkIHBvd2VyIGNvbnRyb2wuCisKKyAgICAgICAgU2VlIERvY3VtZW50YXRpb24vcG93ZXIvcmVndWxhdG9yL2NvbnN1bWVyLnR4dAorCisgICAyLiBSZWd1bGF0b3IgZHJpdmVyIGludGVyZmFjZS4KKworICAgICAgVGhpcyBhbGxvd3MgcmVndWxhdG9yIGRyaXZlcnMgdG8gcmVnaXN0ZXIgdGhlaXIgcmVndWxhdG9ycyBhbmQgcHJvdmlkZQorICAgICAgb3BlcmF0aW9ucyB0byB0aGUgY29yZS4gSXQgYWxzbyBoYXMgYSBub3RpZmllciBjYWxsIGNoYWluIGZvciBwcm9wYWdhdGluZworICAgICAgcmVndWxhdG9yIGV2ZW50cyB0byBjbGllbnRzLgorCisgICAgICAgIFNlZSBEb2N1bWVudGF0aW9uL3Bvd2VyL3JlZ3VsYXRvci9yZWd1bGF0b3IudHh0CisKKyAgIDMuIE1hY2hpbmUgaW50ZXJmYWNlLgorCisgICAgICBUaGlzIGludGVyZmFjZSBpcyBmb3IgbWFjaGluZSBzcGVjaWZpYyBjb2RlIGFuZCBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mCisgICAgICB2b2x0YWdlL2N1cnJlbnQgZG9tYWlucyAod2l0aCBjb25zdHJhaW50cykgZm9yIGVhY2ggcmVndWxhdG9yLiBJdCBjYW4KKyAgICAgIHByb3ZpZGUgcmVndWxhdG9yIGNvbnN0cmFpbnRzIHRoYXQgd2lsbCBwcmV2ZW50IGRldmljZSBkYW1hZ2UgdGhyb3VnaAorICAgICAgb3ZlcnZvbHRhZ2Ugb3Igb3ZlcmN1cnJlbnQgY2F1c2VkIGJ5IGJ1Z2d5IGNsaWVudCBkcml2ZXJzLiBJdCBhbHNvCisgICAgICBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mIGEgcmVndWxhdG9yIHRyZWUgd2hlcmVieSBzb21lIHJlZ3VsYXRvcnMgYXJlCisgICAgICBzdXBwbGllZCBieSBvdGhlcnMgKHNpbWlsYXIgdG8gYSBjbG9jayB0cmVlKS4KKworICAgICAgICBTZWUgRG9jdW1lbnRhdGlvbi9wb3dlci9yZWd1bGF0b3IvbWFjaGluZS50eHQKKworICAgNC4gVXNlcnNwYWNlIEFCSS4KKworICAgICAgVGhlIGZyYW1ld29yayBhbHNvIGV4cG9ydHMgYSBsb3Qgb2YgdXNlZnVsIHZvbHRhZ2UvY3VycmVudC9vcG1vZGUgZGF0YSB0bworICAgICAgdXNlcnNwYWNlIHZpYSBzeXNmcy4gVGhpcyBjb3VsZCBiZSB1c2VkIHRvIGhlbHAgbW9uaXRvciBkZXZpY2UgcG93ZXIKKyAgICAgIGNvbnN1bXB0aW9uIGFuZCBzdGF0dXMuCisKKyAgICAgICAgU2VlIERvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtcmVndWxhdG9yCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL3JlZ3VsYXRvci9yZWd1bGF0b3IudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci9yZWd1bGF0b3IvcmVndWxhdG9yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTdlNTgzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci9yZWd1bGF0b3IvcmVndWxhdG9yLnR4dApAQCAtMCwwICsxLDMwIEBACitSZWd1bGF0b3IgRHJpdmVyIEludGVyZmFjZQorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHJlZ3VsYXRvciBkcml2ZXIgaW50ZXJmYWNlIGlzIHJlbGF0aXZlbHkgc2ltcGxlIGFuZCBkZXNpZ25lZCB0byBhbGxvdworcmVndWxhdG9yIGRyaXZlcnMgdG8gcmVnaXN0ZXIgdGhlaXIgc2VydmljZXMgd2l0aCB0aGUgY29yZSBmcmFtZXdvcmsuCisKKworUmVnaXN0cmF0aW9uCis9PT09PT09PT09PT0KKworRHJpdmVycyBjYW4gcmVnaXN0ZXIgYSByZWd1bGF0b3IgYnkgY2FsbGluZyA6LQorCitzdHJ1Y3QgcmVndWxhdG9yX2RldiAqcmVndWxhdG9yX3JlZ2lzdGVyKHN0cnVjdCByZWd1bGF0b3JfZGVzYyAqcmVndWxhdG9yX2Rlc2MsCisJCQkJCSBjb25zdCBzdHJ1Y3QgcmVndWxhdG9yX2NvbmZpZyAqY29uZmlnKTsKKworVGhpcyB3aWxsIHJlZ2lzdGVyIHRoZSByZWd1bGF0b3IncyBjYXBhYmlsaXRpZXMgYW5kIG9wZXJhdGlvbnMgdG8gdGhlIHJlZ3VsYXRvcgorY29yZS4KKworUmVndWxhdG9ycyBjYW4gYmUgdW5yZWdpc3RlcmVkIGJ5IGNhbGxpbmcgOi0KKwordm9pZCByZWd1bGF0b3JfdW5yZWdpc3RlcihzdHJ1Y3QgcmVndWxhdG9yX2RldiAqcmRldik7CisKKworUmVndWxhdG9yIEV2ZW50cworPT09PT09PT09PT09PT09PQorUmVndWxhdG9ycyBjYW4gc2VuZCBldmVudHMgKGUuZy4gb3ZlcnRlbXBlcmF0dXJlLCB1bmRlcnZvbHRhZ2UsIGV0YykgdG8KK2NvbnN1bWVyIGRyaXZlcnMgYnkgY2FsbGluZyA6LQorCitpbnQgcmVndWxhdG9yX25vdGlmaWVyX2NhbGxfY2hhaW4oc3RydWN0IHJlZ3VsYXRvcl9kZXYgKnJkZXYsCisJCQkJICB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpkYXRhKTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvcnVudGltZV9wbS50eHQgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL3J1bnRpbWVfcG0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ODRiYzMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL3J1bnRpbWVfcG0udHh0CkBAIC0wLDAgKzEsOTE0IEBACitSdW50aW1lIFBvd2VyIE1hbmFnZW1lbnQgRnJhbWV3b3JrIGZvciBJL08gRGV2aWNlcworCisoQykgMjAwOS0yMDExIFJhZmFlbCBKLiBXeXNvY2tpIDxyandAc2lzay5wbD4sIE5vdmVsbCBJbmMuCisoQykgMjAxMCBBbGFuIFN0ZXJuIDxzdGVybkByb3dsYW5kLmhhcnZhcmQuZWR1PgorKEMpIDIwMTQgSW50ZWwgQ29ycC4sIFJhZmFlbCBKLiBXeXNvY2tpIDxyYWZhZWwuai53eXNvY2tpQGludGVsLmNvbT4KKworMS4gSW50cm9kdWN0aW9uCisKK1N1cHBvcnQgZm9yIHJ1bnRpbWUgcG93ZXIgbWFuYWdlbWVudCAocnVudGltZSBQTSkgb2YgSS9PIGRldmljZXMgaXMgcHJvdmlkZWQKK2F0IHRoZSBwb3dlciBtYW5hZ2VtZW50IGNvcmUgKFBNIGNvcmUpIGxldmVsIGJ5IG1lYW5zIG9mOgorCisqIFRoZSBwb3dlciBtYW5hZ2VtZW50IHdvcmtxdWV1ZSBwbV93cSBpbiB3aGljaCBidXMgdHlwZXMgYW5kIGRldmljZSBkcml2ZXJzIGNhbgorICBwdXQgdGhlaXIgUE0tcmVsYXRlZCB3b3JrIGl0ZW1zLiAgSXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdGhhdCBwbV93cSBiZQorICB1c2VkIGZvciBxdWV1aW5nIGFsbCB3b3JrIGl0ZW1zIHJlbGF0ZWQgdG8gcnVudGltZSBQTSwgYmVjYXVzZSB0aGlzIGFsbG93cworICB0aGVtIHRvIGJlIHN5bmNocm9uaXplZCB3aXRoIHN5c3RlbS13aWRlIHBvd2VyIHRyYW5zaXRpb25zIChzdXNwZW5kIHRvIFJBTSwKKyAgaGliZXJuYXRpb24gYW5kIHJlc3VtZSBmcm9tIHN5c3RlbSBzbGVlcCBzdGF0ZXMpLiAgcG1fd3EgaXMgZGVjbGFyZWQgaW4KKyAgaW5jbHVkZS9saW51eC9wbV9ydW50aW1lLmggYW5kIGRlZmluZWQgaW4ga2VybmVsL3Bvd2VyL21haW4uYy4KKworKiBBIG51bWJlciBvZiBydW50aW1lIFBNIGZpZWxkcyBpbiB0aGUgJ3Bvd2VyJyBtZW1iZXIgb2YgJ3N0cnVjdCBkZXZpY2UnICh3aGljaAorICBpcyBvZiB0aGUgdHlwZSAnc3RydWN0IGRldl9wbV9pbmZvJywgZGVmaW5lZCBpbiBpbmNsdWRlL2xpbnV4L3BtLmgpIHRoYXQgY2FuCisgIGJlIHVzZWQgZm9yIHN5bmNocm9uaXppbmcgcnVudGltZSBQTSBvcGVyYXRpb25zIHdpdGggb25lIGFub3RoZXIuCisKKyogVGhyZWUgZGV2aWNlIHJ1bnRpbWUgUE0gY2FsbGJhY2tzIGluICdzdHJ1Y3QgZGV2X3BtX29wcycgKGRlZmluZWQgaW4KKyAgaW5jbHVkZS9saW51eC9wbS5oKS4KKworKiBBIHNldCBvZiBoZWxwZXIgZnVuY3Rpb25zIGRlZmluZWQgaW4gZHJpdmVycy9iYXNlL3Bvd2VyL3J1bnRpbWUuYyB0aGF0IGNhbiBiZQorICB1c2VkIGZvciBjYXJyeWluZyBvdXQgcnVudGltZSBQTSBvcGVyYXRpb25zIGluIHN1Y2ggYSB3YXkgdGhhdCB0aGUKKyAgc3luY2hyb25pemF0aW9uIGJldHdlZW4gdGhlbSBpcyB0YWtlbiBjYXJlIG9mIGJ5IHRoZSBQTSBjb3JlLiAgQnVzIHR5cGVzIGFuZAorICBkZXZpY2UgZHJpdmVycyBhcmUgZW5jb3VyYWdlZCB0byB1c2UgdGhlc2UgZnVuY3Rpb25zLgorCitUaGUgcnVudGltZSBQTSBjYWxsYmFja3MgcHJlc2VudCBpbiAnc3RydWN0IGRldl9wbV9vcHMnLCB0aGUgZGV2aWNlIHJ1bnRpbWUgUE0KK2ZpZWxkcyBvZiAnc3RydWN0IGRldl9wbV9pbmZvJyBhbmQgdGhlIGNvcmUgaGVscGVyIGZ1bmN0aW9ucyBwcm92aWRlZCBmb3IKK3J1bnRpbWUgUE0gYXJlIGRlc2NyaWJlZCBiZWxvdy4KKworMi4gRGV2aWNlIFJ1bnRpbWUgUE0gQ2FsbGJhY2tzCisKK1RoZXJlIGFyZSB0aHJlZSBkZXZpY2UgcnVudGltZSBQTSBjYWxsYmFja3MgZGVmaW5lZCBpbiAnc3RydWN0IGRldl9wbV9vcHMnOgorCitzdHJ1Y3QgZGV2X3BtX29wcyB7CisJLi4uCisJaW50ICgqcnVudGltZV9zdXNwZW5kKShzdHJ1Y3QgZGV2aWNlICpkZXYpOworCWludCAoKnJ1bnRpbWVfcmVzdW1lKShzdHJ1Y3QgZGV2aWNlICpkZXYpOworCWludCAoKnJ1bnRpbWVfaWRsZSkoc3RydWN0IGRldmljZSAqZGV2KTsKKwkuLi4KK307CisKK1RoZSAtPnJ1bnRpbWVfc3VzcGVuZCgpLCAtPnJ1bnRpbWVfcmVzdW1lKCkgYW5kIC0+cnVudGltZV9pZGxlKCkgY2FsbGJhY2tzCithcmUgZXhlY3V0ZWQgYnkgdGhlIFBNIGNvcmUgZm9yIHRoZSBkZXZpY2UncyBzdWJzeXN0ZW0gdGhhdCBtYXkgYmUgZWl0aGVyIG9mCit0aGUgZm9sbG93aW5nOgorCisgIDEuIFBNIGRvbWFpbiBvZiB0aGUgZGV2aWNlLCBpZiB0aGUgZGV2aWNlJ3MgUE0gZG9tYWluIG9iamVjdCwgZGV2LT5wbV9kb21haW4sCisgICAgIGlzIHByZXNlbnQuCisKKyAgMi4gRGV2aWNlIHR5cGUgb2YgdGhlIGRldmljZSwgaWYgYm90aCBkZXYtPnR5cGUgYW5kIGRldi0+dHlwZS0+cG0gYXJlIHByZXNlbnQuCisKKyAgMy4gRGV2aWNlIGNsYXNzIG9mIHRoZSBkZXZpY2UsIGlmIGJvdGggZGV2LT5jbGFzcyBhbmQgZGV2LT5jbGFzcy0+cG0gYXJlCisgICAgIHByZXNlbnQuCisKKyAgNC4gQnVzIHR5cGUgb2YgdGhlIGRldmljZSwgaWYgYm90aCBkZXYtPmJ1cyBhbmQgZGV2LT5idXMtPnBtIGFyZSBwcmVzZW50LgorCitJZiB0aGUgc3Vic3lzdGVtIGNob3NlbiBieSBhcHBseWluZyB0aGUgYWJvdmUgcnVsZXMgZG9lc24ndCBwcm92aWRlIHRoZSByZWxldmFudAorY2FsbGJhY2ssIHRoZSBQTSBjb3JlIHdpbGwgaW52b2tlIHRoZSBjb3JyZXNwb25kaW5nIGRyaXZlciBjYWxsYmFjayBzdG9yZWQgaW4KK2Rldi0+ZHJpdmVyLT5wbSBkaXJlY3RseSAoaWYgcHJlc2VudCkuCisKK1RoZSBQTSBjb3JlIGFsd2F5cyBjaGVja3Mgd2hpY2ggY2FsbGJhY2sgdG8gdXNlIGluIHRoZSBvcmRlciBnaXZlbiBhYm92ZSwgc28gdGhlCitwcmlvcml0eSBvcmRlciBvZiBjYWxsYmFja3MgZnJvbSBoaWdoIHRvIGxvdyBpczogUE0gZG9tYWluLCBkZXZpY2UgdHlwZSwgY2xhc3MKK2FuZCBidXMgdHlwZS4gIE1vcmVvdmVyLCB0aGUgaGlnaC1wcmlvcml0eSBvbmUgd2lsbCBhbHdheXMgdGFrZSBwcmVjZWRlbmNlIG92ZXIKK2EgbG93LXByaW9yaXR5IG9uZS4gIFRoZSBQTSBkb21haW4sIGJ1cyB0eXBlLCBkZXZpY2UgdHlwZSBhbmQgY2xhc3MgY2FsbGJhY2tzCithcmUgcmVmZXJyZWQgdG8gYXMgc3Vic3lzdGVtLWxldmVsIGNhbGxiYWNrcyBpbiB3aGF0IGZvbGxvd3MuCisKK0J5IGRlZmF1bHQsIHRoZSBjYWxsYmFja3MgYXJlIGFsd2F5cyBpbnZva2VkIGluIHByb2Nlc3MgY29udGV4dCB3aXRoIGludGVycnVwdHMKK2VuYWJsZWQuICBIb3dldmVyLCB0aGUgcG1fcnVudGltZV9pcnFfc2FmZSgpIGhlbHBlciBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byB0ZWxsCit0aGUgUE0gY29yZSB0aGF0IGl0IGlzIHNhZmUgdG8gcnVuIHRoZSAtPnJ1bnRpbWVfc3VzcGVuZCgpLCAtPnJ1bnRpbWVfcmVzdW1lKCkKK2FuZCAtPnJ1bnRpbWVfaWRsZSgpIGNhbGxiYWNrcyBmb3IgdGhlIGdpdmVuIGRldmljZSBpbiBhdG9taWMgY29udGV4dCB3aXRoCitpbnRlcnJ1cHRzIGRpc2FibGVkLiAgVGhpcyBpbXBsaWVzIHRoYXQgdGhlIGNhbGxiYWNrIHJvdXRpbmVzIGluIHF1ZXN0aW9uIG11c3QKK25vdCBibG9jayBvciBzbGVlcCwgYnV0IGl0IGFsc28gbWVhbnMgdGhhdCB0aGUgc3luY2hyb25vdXMgaGVscGVyIGZ1bmN0aW9ucworbGlzdGVkIGF0IHRoZSBlbmQgb2YgU2VjdGlvbiA0IG1heSBiZSB1c2VkIGZvciB0aGF0IGRldmljZSB3aXRoaW4gYW4gaW50ZXJydXB0CitoYW5kbGVyIG9yIGdlbmVyYWxseSBpbiBhbiBhdG9taWMgY29udGV4dC4KKworVGhlIHN1YnN5c3RlbS1sZXZlbCBzdXNwZW5kIGNhbGxiYWNrLCBpZiBwcmVzZW50LCBpcyBfZW50aXJlbHlfIF9yZXNwb25zaWJsZV8KK2ZvciBoYW5kbGluZyB0aGUgc3VzcGVuZCBvZiB0aGUgZGV2aWNlIGFzIGFwcHJvcHJpYXRlLCB3aGljaCBtYXksIGJ1dCBuZWVkIG5vdAoraW5jbHVkZSBleGVjdXRpbmcgdGhlIGRldmljZSBkcml2ZXIncyBvd24gLT5ydW50aW1lX3N1c3BlbmQoKSBjYWxsYmFjayAoZnJvbSB0aGUKK1BNIGNvcmUncyBwb2ludCBvZiB2aWV3IGl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gaW1wbGVtZW50IGEgLT5ydW50aW1lX3N1c3BlbmQoKQorY2FsbGJhY2sgaW4gYSBkZXZpY2UgZHJpdmVyIGFzIGxvbmcgYXMgdGhlIHN1YnN5c3RlbS1sZXZlbCBzdXNwZW5kIGNhbGxiYWNrCitrbm93cyB3aGF0IHRvIGRvIHRvIGhhbmRsZSB0aGUgZGV2aWNlKS4KKworICAqIE9uY2UgdGhlIHN1YnN5c3RlbS1sZXZlbCBzdXNwZW5kIGNhbGxiYWNrIChvciB0aGUgZHJpdmVyIHN1c3BlbmQgY2FsbGJhY2ssCisgICAgaWYgaW52b2tlZCBkaXJlY3RseSkgaGFzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgZm9yIHRoZSBnaXZlbiBkZXZpY2UsIHRoZSBQTQorICAgIGNvcmUgcmVnYXJkcyB0aGUgZGV2aWNlIGFzIHN1c3BlbmRlZCwgd2hpY2ggbmVlZCBub3QgbWVhbiB0aGF0IGl0IGhhcyBiZWVuCisgICAgcHV0IGludG8gYSBsb3cgcG93ZXIgc3RhdGUuICBJdCBpcyBzdXBwb3NlZCB0byBtZWFuLCBob3dldmVyLCB0aGF0IHRoZQorICAgIGRldmljZSB3aWxsIG5vdCBwcm9jZXNzIGRhdGEgYW5kIHdpbGwgbm90IGNvbW11bmljYXRlIHdpdGggdGhlIENQVShzKSBhbmQKKyAgICBSQU0gdW50aWwgdGhlIGFwcHJvcHJpYXRlIHJlc3VtZSBjYWxsYmFjayBpcyBleGVjdXRlZCBmb3IgaXQuICBUaGUgcnVudGltZQorICAgIFBNIHN0YXR1cyBvZiBhIGRldmljZSBhZnRlciBzdWNjZXNzZnVsIGV4ZWN1dGlvbiBvZiB0aGUgc3VzcGVuZCBjYWxsYmFjayBpcworICAgICdzdXNwZW5kZWQnLgorCisgICogSWYgdGhlIHN1c3BlbmQgY2FsbGJhY2sgcmV0dXJucyAtRUJVU1kgb3IgLUVBR0FJTiwgdGhlIGRldmljZSdzIHJ1bnRpbWUgUE0KKyAgICBzdGF0dXMgcmVtYWlucyAnYWN0aXZlJywgd2hpY2ggbWVhbnMgdGhhdCB0aGUgZGV2aWNlIF9tdXN0XyBiZSBmdWxseQorICAgIG9wZXJhdGlvbmFsIGFmdGVyd2FyZHMuCisKKyAgKiBJZiB0aGUgc3VzcGVuZCBjYWxsYmFjayByZXR1cm5zIGFuIGVycm9yIGNvZGUgZGlmZmVyZW50IGZyb20gLUVCVVNZIGFuZAorICAgIC1FQUdBSU4sIHRoZSBQTSBjb3JlIHJlZ2FyZHMgdGhpcyBhcyBhIGZhdGFsIGVycm9yIGFuZCB3aWxsIHJlZnVzZSB0byBydW4KKyAgICB0aGUgaGVscGVyIGZ1bmN0aW9ucyBkZXNjcmliZWQgaW4gU2VjdGlvbiA0IGZvciB0aGUgZGV2aWNlIHVudGlsIGl0cyBzdGF0dXMKKyAgICBpcyBkaXJlY3RseSBzZXQgdG8gIGVpdGhlcidhY3RpdmUnLCBvciAnc3VzcGVuZGVkJyAodGhlIFBNIGNvcmUgcHJvdmlkZXMKKyAgICBzcGVjaWFsIGhlbHBlciBmdW5jdGlvbnMgZm9yIHRoaXMgcHVycG9zZSkuCisKK0luIHBhcnRpY3VsYXIsIGlmIHRoZSBkcml2ZXIgcmVxdWlyZXMgcmVtb3RlIHdha2V1cCBjYXBhYmlsaXR5IChpLmUuIGhhcmR3YXJlCittZWNoYW5pc20gYWxsb3dpbmcgdGhlIGRldmljZSB0byByZXF1ZXN0IGEgY2hhbmdlIG9mIGl0cyBwb3dlciBzdGF0ZSwgc3VjaCBhcworUENJIFBNRSkgZm9yIHByb3BlciBmdW5jdGlvbmluZyBhbmQgZGV2aWNlX3J1bl93YWtlKCkgcmV0dXJucyAnZmFsc2UnIGZvciB0aGUKK2RldmljZSwgdGhlbiAtPnJ1bnRpbWVfc3VzcGVuZCgpIHNob3VsZCByZXR1cm4gLUVCVVNZLiAgT24gdGhlIG90aGVyIGhhbmQsIGlmCitkZXZpY2VfcnVuX3dha2UoKSByZXR1cm5zICd0cnVlJyBmb3IgdGhlIGRldmljZSBhbmQgdGhlIGRldmljZSBpcyBwdXQgaW50byBhCitsb3ctcG93ZXIgc3RhdGUgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgdGhlIHN1c3BlbmQgY2FsbGJhY2ssIGl0IGlzIGV4cGVjdGVkCit0aGF0IHJlbW90ZSB3YWtldXAgd2lsbCBiZSBlbmFibGVkIGZvciB0aGUgZGV2aWNlLiAgR2VuZXJhbGx5LCByZW1vdGUgd2FrZXVwCitzaG91bGQgYmUgZW5hYmxlZCBmb3IgYWxsIGlucHV0IGRldmljZXMgcHV0IGludG8gbG93LXBvd2VyIHN0YXRlcyBhdCBydW4gdGltZS4KKworVGhlIHN1YnN5c3RlbS1sZXZlbCByZXN1bWUgY2FsbGJhY2ssIGlmIHByZXNlbnQsIGlzIF9lbnRpcmVseV8gX3Jlc3BvbnNpYmxlXyBmb3IKK2hhbmRsaW5nIHRoZSByZXN1bWUgb2YgdGhlIGRldmljZSBhcyBhcHByb3ByaWF0ZSwgd2hpY2ggbWF5LCBidXQgbmVlZCBub3QKK2luY2x1ZGUgZXhlY3V0aW5nIHRoZSBkZXZpY2UgZHJpdmVyJ3Mgb3duIC0+cnVudGltZV9yZXN1bWUoKSBjYWxsYmFjayAoZnJvbSB0aGUKK1BNIGNvcmUncyBwb2ludCBvZiB2aWV3IGl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gaW1wbGVtZW50IGEgLT5ydW50aW1lX3Jlc3VtZSgpCitjYWxsYmFjayBpbiBhIGRldmljZSBkcml2ZXIgYXMgbG9uZyBhcyB0aGUgc3Vic3lzdGVtLWxldmVsIHJlc3VtZSBjYWxsYmFjayBrbm93cword2hhdCB0byBkbyB0byBoYW5kbGUgdGhlIGRldmljZSkuCisKKyAgKiBPbmNlIHRoZSBzdWJzeXN0ZW0tbGV2ZWwgcmVzdW1lIGNhbGxiYWNrIChvciB0aGUgZHJpdmVyIHJlc3VtZSBjYWxsYmFjaywgaWYKKyAgICBpbnZva2VkIGRpcmVjdGx5KSBoYXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSwgdGhlIFBNIGNvcmUgcmVnYXJkcyB0aGUgZGV2aWNlCisgICAgYXMgZnVsbHkgb3BlcmF0aW9uYWwsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGRldmljZSBfbXVzdF8gYmUgYWJsZSB0byBjb21wbGV0ZQorICAgIEkvTyBvcGVyYXRpb25zIGFzIG5lZWRlZC4gIFRoZSBydW50aW1lIFBNIHN0YXR1cyBvZiB0aGUgZGV2aWNlIGlzIHRoZW4KKyAgICAnYWN0aXZlJy4KKworICAqIElmIHRoZSByZXN1bWUgY2FsbGJhY2sgcmV0dXJucyBhbiBlcnJvciBjb2RlLCB0aGUgUE0gY29yZSByZWdhcmRzIHRoaXMgYXMgYQorICAgIGZhdGFsIGVycm9yIGFuZCB3aWxsIHJlZnVzZSB0byBydW4gdGhlIGhlbHBlciBmdW5jdGlvbnMgZGVzY3JpYmVkIGluIFNlY3Rpb24KKyAgICA0IGZvciB0aGUgZGV2aWNlLCB1bnRpbCBpdHMgc3RhdHVzIGlzIGRpcmVjdGx5IHNldCB0byBlaXRoZXIgJ2FjdGl2ZScsIG9yCisgICAgJ3N1c3BlbmRlZCcgKGJ5IG1lYW5zIG9mIHNwZWNpYWwgaGVscGVyIGZ1bmN0aW9ucyBwcm92aWRlZCBieSB0aGUgUE0gY29yZQorICAgIGZvciB0aGlzIHB1cnBvc2UpLgorCitUaGUgaWRsZSBjYWxsYmFjayAoYSBzdWJzeXN0ZW0tbGV2ZWwgb25lLCBpZiBwcmVzZW50LCBvciB0aGUgZHJpdmVyIG9uZSkgaXMKK2V4ZWN1dGVkIGJ5IHRoZSBQTSBjb3JlIHdoZW5ldmVyIHRoZSBkZXZpY2UgYXBwZWFycyB0byBiZSBpZGxlLCB3aGljaCBpcworaW5kaWNhdGVkIHRvIHRoZSBQTSBjb3JlIGJ5IHR3byBjb3VudGVycywgdGhlIGRldmljZSdzIHVzYWdlIGNvdW50ZXIgYW5kIHRoZQorY291bnRlciBvZiAnYWN0aXZlJyBjaGlsZHJlbiBvZiB0aGUgZGV2aWNlLgorCisgICogSWYgYW55IG9mIHRoZXNlIGNvdW50ZXJzIGlzIGRlY3JlYXNlZCB1c2luZyBhIGhlbHBlciBmdW5jdGlvbiBwcm92aWRlZCBieQorICAgIHRoZSBQTSBjb3JlIGFuZCBpdCB0dXJucyBvdXQgdG8gYmUgZXF1YWwgdG8gemVybywgdGhlIG90aGVyIGNvdW50ZXIgaXMKKyAgICBjaGVja2VkLiAgSWYgdGhhdCBjb3VudGVyIGFsc28gaXMgZXF1YWwgdG8gemVybywgdGhlIFBNIGNvcmUgZXhlY3V0ZXMgdGhlCisgICAgaWRsZSBjYWxsYmFjayB3aXRoIHRoZSBkZXZpY2UgYXMgaXRzIGFyZ3VtZW50LgorCitUaGUgYWN0aW9uIHBlcmZvcm1lZCBieSB0aGUgaWRsZSBjYWxsYmFjayBpcyB0b3RhbGx5IGRlcGVuZGVudCBvbiB0aGUgc3Vic3lzdGVtCisob3IgZHJpdmVyKSBpbiBxdWVzdGlvbiwgYnV0IHRoZSBleHBlY3RlZCBhbmQgcmVjb21tZW5kZWQgYWN0aW9uIGlzIHRvIGNoZWNrCitpZiB0aGUgZGV2aWNlIGNhbiBiZSBzdXNwZW5kZWQgKGkuZS4gaWYgYWxsIG9mIHRoZSBjb25kaXRpb25zIG5lY2Vzc2FyeSBmb3IKK3N1c3BlbmRpbmcgdGhlIGRldmljZSBhcmUgc2F0aXNmaWVkKSBhbmQgdG8gcXVldWUgdXAgYSBzdXNwZW5kIHJlcXVlc3QgZm9yIHRoZQorZGV2aWNlIGluIHRoYXQgY2FzZS4gIElmIHRoZXJlIGlzIG5vIGlkbGUgY2FsbGJhY2ssIG9yIGlmIHRoZSBjYWxsYmFjayByZXR1cm5zCiswLCB0aGVuIHRoZSBQTSBjb3JlIHdpbGwgYXR0ZW1wdCB0byBjYXJyeSBvdXQgYSBydW50aW1lIHN1c3BlbmQgb2YgdGhlIGRldmljZSwKK2Fsc28gcmVzcGVjdGluZyBkZXZpY2VzIGNvbmZpZ3VyZWQgZm9yIGF1dG9zdXNwZW5kLiAgSW4gZXNzZW5jZSB0aGlzIG1lYW5zIGEKK2NhbGwgdG8gcG1fcnVudGltZV9hdXRvc3VzcGVuZCgpIChkbyBub3RlIHRoYXQgZHJpdmVycyBuZWVkcyB0byB1cGRhdGUgdGhlCitkZXZpY2UgbGFzdCBidXN5IG1hcmssIHBtX3J1bnRpbWVfbWFya19sYXN0X2J1c3koKSwgdG8gY29udHJvbCB0aGUgZGVsYXkgdW5kZXIKK3RoaXMgY2lyY3Vtc3RhbmNlKS4gIFRvIHByZXZlbnQgdGhpcyAoZm9yIGV4YW1wbGUsIGlmIHRoZSBjYWxsYmFjayByb3V0aW5lIGhhcworc3RhcnRlZCBhIGRlbGF5ZWQgc3VzcGVuZCksIHRoZSByb3V0aW5lIG11c3QgcmV0dXJuIGEgbm9uLXplcm8gdmFsdWUuICBOZWdhdGl2ZQorZXJyb3IgcmV0dXJuIGNvZGVzIGFyZSBpZ25vcmVkIGJ5IHRoZSBQTSBjb3JlLgorCitUaGUgaGVscGVyIGZ1bmN0aW9ucyBwcm92aWRlZCBieSB0aGUgUE0gY29yZSwgZGVzY3JpYmVkIGluIFNlY3Rpb24gNCwgZ3VhcmFudGVlCit0aGF0IHRoZSBmb2xsb3dpbmcgY29uc3RyYWludHMgYXJlIG1ldCB3aXRoIHJlc3BlY3QgdG8gcnVudGltZSBQTSBjYWxsYmFja3MgZm9yCitvbmUgZGV2aWNlOgorCisoMSkgVGhlIGNhbGxiYWNrcyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIChlLmcuIGl0IGlzIGZvcmJpZGRlbiB0byBleGVjdXRlCisgICAgLT5ydW50aW1lX3N1c3BlbmQoKSBpbiBwYXJhbGxlbCB3aXRoIC0+cnVudGltZV9yZXN1bWUoKSBvciB3aXRoIGFub3RoZXIKKyAgICBpbnN0YW5jZSBvZiAtPnJ1bnRpbWVfc3VzcGVuZCgpIGZvciB0aGUgc2FtZSBkZXZpY2UpIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0CisgICAgLT5ydW50aW1lX3N1c3BlbmQoKSBvciAtPnJ1bnRpbWVfcmVzdW1lKCkgY2FuIGJlIGV4ZWN1dGVkIGluIHBhcmFsbGVsIHdpdGgKKyAgICAtPnJ1bnRpbWVfaWRsZSgpIChhbHRob3VnaCAtPnJ1bnRpbWVfaWRsZSgpIHdpbGwgbm90IGJlIHN0YXJ0ZWQgd2hpbGUgYW55CisgICAgb2YgdGhlIG90aGVyIGNhbGxiYWNrcyBpcyBiZWluZyBleGVjdXRlZCBmb3IgdGhlIHNhbWUgZGV2aWNlKS4KKworKDIpIC0+cnVudGltZV9pZGxlKCkgYW5kIC0+cnVudGltZV9zdXNwZW5kKCkgY2FuIG9ubHkgYmUgZXhlY3V0ZWQgZm9yICdhY3RpdmUnCisgICAgZGV2aWNlcyAoaS5lLiB0aGUgUE0gY29yZSB3aWxsIG9ubHkgZXhlY3V0ZSAtPnJ1bnRpbWVfaWRsZSgpIG9yCisgICAgLT5ydW50aW1lX3N1c3BlbmQoKSBmb3IgdGhlIGRldmljZXMgdGhlIHJ1bnRpbWUgUE0gc3RhdHVzIG9mIHdoaWNoIGlzCisgICAgJ2FjdGl2ZScpLgorCisoMykgLT5ydW50aW1lX2lkbGUoKSBhbmQgLT5ydW50aW1lX3N1c3BlbmQoKSBjYW4gb25seSBiZSBleGVjdXRlZCBmb3IgYSBkZXZpY2UKKyAgICB0aGUgdXNhZ2UgY291bnRlciBvZiB3aGljaCBpcyBlcXVhbCB0byB6ZXJvIF9hbmRfIGVpdGhlciB0aGUgY291bnRlciBvZgorICAgICdhY3RpdmUnIGNoaWxkcmVuIG9mIHdoaWNoIGlzIGVxdWFsIHRvIHplcm8sIG9yIHRoZSAncG93ZXIuaWdub3JlX2NoaWxkcmVuJworICAgIGZsYWcgb2Ygd2hpY2ggaXMgc2V0LgorCisoNCkgLT5ydW50aW1lX3Jlc3VtZSgpIGNhbiBvbmx5IGJlIGV4ZWN1dGVkIGZvciAnc3VzcGVuZGVkJyBkZXZpY2VzICAoaS5lLiB0aGUKKyAgICBQTSBjb3JlIHdpbGwgb25seSBleGVjdXRlIC0+cnVudGltZV9yZXN1bWUoKSBmb3IgdGhlIGRldmljZXMgdGhlIHJ1bnRpbWUKKyAgICBQTSBzdGF0dXMgb2Ygd2hpY2ggaXMgJ3N1c3BlbmRlZCcpLgorCitBZGRpdGlvbmFsbHksIHRoZSBoZWxwZXIgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHRoZSBQTSBjb3JlIG9iZXkgdGhlIGZvbGxvd2luZworcnVsZXM6CisKKyAgKiBJZiAtPnJ1bnRpbWVfc3VzcGVuZCgpIGlzIGFib3V0IHRvIGJlIGV4ZWN1dGVkIG9yIHRoZXJlJ3MgYSBwZW5kaW5nIHJlcXVlc3QKKyAgICB0byBleGVjdXRlIGl0LCAtPnJ1bnRpbWVfaWRsZSgpIHdpbGwgbm90IGJlIGV4ZWN1dGVkIGZvciB0aGUgc2FtZSBkZXZpY2UuCisKKyAgKiBBIHJlcXVlc3QgdG8gZXhlY3V0ZSBvciB0byBzY2hlZHVsZSB0aGUgZXhlY3V0aW9uIG9mIC0+cnVudGltZV9zdXNwZW5kKCkKKyAgICB3aWxsIGNhbmNlbCBhbnkgcGVuZGluZyByZXF1ZXN0cyB0byBleGVjdXRlIC0+cnVudGltZV9pZGxlKCkgZm9yIHRoZSBzYW1lCisgICAgZGV2aWNlLgorCisgICogSWYgLT5ydW50aW1lX3Jlc3VtZSgpIGlzIGFib3V0IHRvIGJlIGV4ZWN1dGVkIG9yIHRoZXJlJ3MgYSBwZW5kaW5nIHJlcXVlc3QKKyAgICB0byBleGVjdXRlIGl0LCB0aGUgb3RoZXIgY2FsbGJhY2tzIHdpbGwgbm90IGJlIGV4ZWN1dGVkIGZvciB0aGUgc2FtZSBkZXZpY2UuCisKKyAgKiBBIHJlcXVlc3QgdG8gZXhlY3V0ZSAtPnJ1bnRpbWVfcmVzdW1lKCkgd2lsbCBjYW5jZWwgYW55IHBlbmRpbmcgb3IKKyAgICBzY2hlZHVsZWQgcmVxdWVzdHMgdG8gZXhlY3V0ZSB0aGUgb3RoZXIgY2FsbGJhY2tzIGZvciB0aGUgc2FtZSBkZXZpY2UsCisgICAgZXhjZXB0IGZvciBzY2hlZHVsZWQgYXV0b3N1c3BlbmRzLgorCiszLiBSdW50aW1lIFBNIERldmljZSBGaWVsZHMKKworVGhlIGZvbGxvd2luZyBkZXZpY2UgcnVudGltZSBQTSBmaWVsZHMgYXJlIHByZXNlbnQgaW4gJ3N0cnVjdCBkZXZfcG1faW5mbycsIGFzCitkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvcG0uaDoKKworICBzdHJ1Y3QgdGltZXJfbGlzdCBzdXNwZW5kX3RpbWVyOworICAgIC0gdGltZXIgdXNlZCBmb3Igc2NoZWR1bGluZyAoZGVsYXllZCkgc3VzcGVuZCBhbmQgYXV0b3N1c3BlbmQgcmVxdWVzdHMKKworICB1bnNpZ25lZCBsb25nIHRpbWVyX2V4cGlyZXM7CisgICAgLSB0aW1lciBleHBpcmF0aW9uIHRpbWUsIGluIGppZmZpZXMgKGlmIHRoaXMgaXMgZGlmZmVyZW50IGZyb20gemVybywgdGhlCisgICAgICB0aW1lciBpcyBydW5uaW5nIGFuZCB3aWxsIGV4cGlyZSBhdCB0aGF0IHRpbWUsIG90aGVyd2lzZSB0aGUgdGltZXIgaXMgbm90CisgICAgICBydW5uaW5nKQorCisgIHN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOworICAgIC0gd29yayBzdHJ1Y3R1cmUgdXNlZCBmb3IgcXVldWluZyB1cCByZXF1ZXN0cyAoaS5lLiB3b3JrIGl0ZW1zIGluIHBtX3dxKQorCisgIHdhaXRfcXVldWVfaGVhZF90IHdhaXRfcXVldWU7CisgICAgLSB3YWl0IHF1ZXVlIHVzZWQgaWYgYW55IG9mIHRoZSBoZWxwZXIgZnVuY3Rpb25zIG5lZWRzIHRvIHdhaXQgZm9yIGFub3RoZXIKKyAgICAgIG9uZSB0byBjb21wbGV0ZQorCisgIHNwaW5sb2NrX3QgbG9jazsKKyAgICAtIGxvY2sgdXNlZCBmb3Igc3luY2hyb25pc2F0aW9uCisKKyAgYXRvbWljX3QgdXNhZ2VfY291bnQ7CisgICAgLSB0aGUgdXNhZ2UgY291bnRlciBvZiB0aGUgZGV2aWNlCisKKyAgYXRvbWljX3QgY2hpbGRfY291bnQ7CisgICAgLSB0aGUgY291bnQgb2YgJ2FjdGl2ZScgY2hpbGRyZW4gb2YgdGhlIGRldmljZQorCisgIHVuc2lnbmVkIGludCBpZ25vcmVfY2hpbGRyZW47CisgICAgLSBpZiBzZXQsIHRoZSB2YWx1ZSBvZiBjaGlsZF9jb3VudCBpcyBpZ25vcmVkIChidXQgc3RpbGwgdXBkYXRlZCkKKworICB1bnNpZ25lZCBpbnQgZGlzYWJsZV9kZXB0aDsKKyAgICAtIHVzZWQgZm9yIGRpc2FibGluZyB0aGUgaGVscGVyIGZ1bmN0aW9ucyAodGhleSB3b3JrIG5vcm1hbGx5IGlmIHRoaXMgaXMKKyAgICAgIGVxdWFsIHRvIHplcm8pOyB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBpdCBpcyAxIChpLmUuIHJ1bnRpbWUgUE0gaXMKKyAgICAgIGluaXRpYWxseSBkaXNhYmxlZCBmb3IgYWxsIGRldmljZXMpCisKKyAgaW50IHJ1bnRpbWVfZXJyb3I7CisgICAgLSBpZiBzZXQsIHRoZXJlIHdhcyBhIGZhdGFsIGVycm9yIChvbmUgb2YgdGhlIGNhbGxiYWNrcyByZXR1cm5lZCBlcnJvciBjb2RlCisgICAgICBhcyBkZXNjcmliZWQgaW4gU2VjdGlvbiAyKSwgc28gdGhlIGhlbHBlciBmdW5jdGlvbnMgd2lsbCBub3Qgd29yayB1bnRpbAorICAgICAgdGhpcyBmbGFnIGlzIGNsZWFyZWQ7IHRoaXMgaXMgdGhlIGVycm9yIGNvZGUgcmV0dXJuZWQgYnkgdGhlIGZhaWxpbmcKKyAgICAgIGNhbGxiYWNrCisKKyAgdW5zaWduZWQgaW50IGlkbGVfbm90aWZpY2F0aW9uOworICAgIC0gaWYgc2V0LCAtPnJ1bnRpbWVfaWRsZSgpIGlzIGJlaW5nIGV4ZWN1dGVkCisKKyAgdW5zaWduZWQgaW50IHJlcXVlc3RfcGVuZGluZzsKKyAgICAtIGlmIHNldCwgdGhlcmUncyBhIHBlbmRpbmcgcmVxdWVzdCAoaS5lLiBhIHdvcmsgaXRlbSBxdWV1ZWQgdXAgaW50byBwbV93cSkKKworICBlbnVtIHJwbV9yZXF1ZXN0IHJlcXVlc3Q7CisgICAgLSB0eXBlIG9mIHJlcXVlc3QgdGhhdCdzIHBlbmRpbmcgKHZhbGlkIGlmIHJlcXVlc3RfcGVuZGluZyBpcyBzZXQpCisKKyAgdW5zaWduZWQgaW50IGRlZmVycmVkX3Jlc3VtZTsKKyAgICAtIHNldCBpZiAtPnJ1bnRpbWVfcmVzdW1lKCkgaXMgYWJvdXQgdG8gYmUgcnVuIHdoaWxlIC0+cnVudGltZV9zdXNwZW5kKCkgaXMKKyAgICAgIGJlaW5nIGV4ZWN1dGVkIGZvciB0aGF0IGRldmljZSBhbmQgaXQgaXMgbm90IHByYWN0aWNhbCB0byB3YWl0IGZvciB0aGUKKyAgICAgIHN1c3BlbmQgdG8gY29tcGxldGU7IG1lYW5zICJzdGFydCBhIHJlc3VtZSBhcyBzb29uIGFzIHlvdSd2ZSBzdXNwZW5kZWQiCisKKyAgdW5zaWduZWQgaW50IHJ1bl93YWtlOworICAgIC0gc2V0IGlmIHRoZSBkZXZpY2UgaXMgY2FwYWJsZSBvZiBnZW5lcmF0aW5nIHJ1bnRpbWUgd2FrZS11cCBldmVudHMKKworICBlbnVtIHJwbV9zdGF0dXMgcnVudGltZV9zdGF0dXM7CisgICAgLSB0aGUgcnVudGltZSBQTSBzdGF0dXMgb2YgdGhlIGRldmljZTsgdGhpcyBmaWVsZCdzIGluaXRpYWwgdmFsdWUgaXMKKyAgICAgIFJQTV9TVVNQRU5ERUQsIHdoaWNoIG1lYW5zIHRoYXQgZWFjaCBkZXZpY2UgaXMgaW5pdGlhbGx5IHJlZ2FyZGVkIGJ5IHRoZQorICAgICAgUE0gY29yZSBhcyAnc3VzcGVuZGVkJywgcmVnYXJkbGVzcyBvZiBpdHMgcmVhbCBoYXJkd2FyZSBzdGF0dXMKKworICB1bnNpZ25lZCBpbnQgcnVudGltZV9hdXRvOworICAgIC0gaWYgc2V0LCBpbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBzcGFjZSBoYXMgYWxsb3dlZCB0aGUgZGV2aWNlIGRyaXZlciB0bworICAgICAgcG93ZXIgbWFuYWdlIHRoZSBkZXZpY2UgYXQgcnVuIHRpbWUgdmlhIHRoZSAvc3lzL2RldmljZXMvLi4uL3Bvd2VyL2NvbnRyb2wKKyAgICAgIGludGVyZmFjZTsgaXQgbWF5IG9ubHkgYmUgbW9kaWZpZWQgd2l0aCB0aGUgaGVscCBvZiB0aGUgcG1fcnVudGltZV9hbGxvdygpCisgICAgICBhbmQgcG1fcnVudGltZV9mb3JiaWQoKSBoZWxwZXIgZnVuY3Rpb25zCisKKyAgdW5zaWduZWQgaW50IG5vX2NhbGxiYWNrczsKKyAgICAtIGluZGljYXRlcyB0aGF0IHRoZSBkZXZpY2UgZG9lcyBub3QgdXNlIHRoZSBydW50aW1lIFBNIGNhbGxiYWNrcyAoc2VlCisgICAgICBTZWN0aW9uIDgpOyBpdCBtYXkgYmUgbW9kaWZpZWQgb25seSBieSB0aGUgcG1fcnVudGltZV9ub19jYWxsYmFja3MoKQorICAgICAgaGVscGVyIGZ1bmN0aW9uCisKKyAgdW5zaWduZWQgaW50IGlycV9zYWZlOworICAgIC0gaW5kaWNhdGVzIHRoYXQgdGhlIC0+cnVudGltZV9zdXNwZW5kKCkgYW5kIC0+cnVudGltZV9yZXN1bWUoKSBjYWxsYmFja3MKKyAgICAgIHdpbGwgYmUgaW52b2tlZCB3aXRoIHRoZSBzcGlubG9jayBoZWxkIGFuZCBpbnRlcnJ1cHRzIGRpc2FibGVkCisKKyAgdW5zaWduZWQgaW50IHVzZV9hdXRvc3VzcGVuZDsKKyAgICAtIGluZGljYXRlcyB0aGF0IHRoZSBkZXZpY2UncyBkcml2ZXIgc3VwcG9ydHMgZGVsYXllZCBhdXRvc3VzcGVuZCAoc2VlCisgICAgICBTZWN0aW9uIDkpOyBpdCBtYXkgYmUgbW9kaWZpZWQgb25seSBieSB0aGUKKyAgICAgIHBtX3J1bnRpbWV7X2RvbnR9X3VzZV9hdXRvc3VzcGVuZCgpIGhlbHBlciBmdW5jdGlvbnMKKworICB1bnNpZ25lZCBpbnQgdGltZXJfYXV0b3N1c3BlbmRzOworICAgIC0gaW5kaWNhdGVzIHRoYXQgdGhlIFBNIGNvcmUgc2hvdWxkIGF0dGVtcHQgdG8gY2Fycnkgb3V0IGFuIGF1dG9zdXNwZW5kCisgICAgICB3aGVuIHRoZSB0aW1lciBleHBpcmVzIHJhdGhlciB0aGFuIGEgbm9ybWFsIHN1c3BlbmQKKworICBpbnQgYXV0b3N1c3BlbmRfZGVsYXk7CisgICAgLSB0aGUgZGVsYXkgdGltZSAoaW4gbWlsbGlzZWNvbmRzKSB0byBiZSB1c2VkIGZvciBhdXRvc3VzcGVuZAorCisgIHVuc2lnbmVkIGxvbmcgbGFzdF9idXN5OworICAgIC0gdGhlIHRpbWUgKGluIGppZmZpZXMpIHdoZW4gdGhlIHBtX3J1bnRpbWVfbWFya19sYXN0X2J1c3koKSBoZWxwZXIKKyAgICAgIGZ1bmN0aW9uIHdhcyBsYXN0IGNhbGxlZCBmb3IgdGhpcyBkZXZpY2U7IHVzZWQgaW4gY2FsY3VsYXRpbmcgaW5hY3Rpdml0eQorICAgICAgcGVyaW9kcyBmb3IgYXV0b3N1c3BlbmQKKworQWxsIG9mIHRoZSBhYm92ZSBmaWVsZHMgYXJlIG1lbWJlcnMgb2YgdGhlICdwb3dlcicgbWVtYmVyIG9mICdzdHJ1Y3QgZGV2aWNlJy4KKworNC4gUnVudGltZSBQTSBEZXZpY2UgSGVscGVyIEZ1bmN0aW9ucworCitUaGUgZm9sbG93aW5nIHJ1bnRpbWUgUE0gaGVscGVyIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCBpbgorZHJpdmVycy9iYXNlL3Bvd2VyL3J1bnRpbWUuYyBhbmQgaW5jbHVkZS9saW51eC9wbV9ydW50aW1lLmg6CisKKyAgdm9pZCBwbV9ydW50aW1lX2luaXQoc3RydWN0IGRldmljZSAqZGV2KTsKKyAgICAtIGluaXRpYWxpemUgdGhlIGRldmljZSBydW50aW1lIFBNIGZpZWxkcyBpbiAnc3RydWN0IGRldl9wbV9pbmZvJworCisgIHZvaWQgcG1fcnVudGltZV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KTsKKyAgICAtIG1ha2Ugc3VyZSB0aGF0IHRoZSBydW50aW1lIFBNIG9mIHRoZSBkZXZpY2Ugd2lsbCBiZSBkaXNhYmxlZCBhZnRlcgorICAgICAgcmVtb3ZpbmcgdGhlIGRldmljZSBmcm9tIGRldmljZSBoaWVyYXJjaHkKKworICBpbnQgcG1fcnVudGltZV9pZGxlKHN0cnVjdCBkZXZpY2UgKmRldik7CisgICAgLSBleGVjdXRlIHRoZSBzdWJzeXN0ZW0tbGV2ZWwgaWRsZSBjYWxsYmFjayBmb3IgdGhlIGRldmljZTsgcmV0dXJucyBhbgorICAgICAgZXJyb3IgY29kZSBvbiBmYWlsdXJlLCB3aGVyZSAtRUlOUFJPR1JFU1MgbWVhbnMgdGhhdCAtPnJ1bnRpbWVfaWRsZSgpIGlzCisgICAgICBhbHJlYWR5IGJlaW5nIGV4ZWN1dGVkOyBpZiB0aGVyZSBpcyBubyBjYWxsYmFjayBvciB0aGUgY2FsbGJhY2sgcmV0dXJucyAwCisgICAgICB0aGVuIHJ1biBwbV9ydW50aW1lX2F1dG9zdXNwZW5kKGRldikgYW5kIHJldHVybiBpdHMgcmVzdWx0CisKKyAgaW50IHBtX3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpOworICAgIC0gZXhlY3V0ZSB0aGUgc3Vic3lzdGVtLWxldmVsIHN1c3BlbmQgY2FsbGJhY2sgZm9yIHRoZSBkZXZpY2U7IHJldHVybnMgMCBvbgorICAgICAgc3VjY2VzcywgMSBpZiB0aGUgZGV2aWNlJ3MgcnVudGltZSBQTSBzdGF0dXMgd2FzIGFscmVhZHkgJ3N1c3BlbmRlZCcsIG9yCisgICAgICBlcnJvciBjb2RlIG9uIGZhaWx1cmUsIHdoZXJlIC1FQUdBSU4gb3IgLUVCVVNZIG1lYW5zIGl0IGlzIHNhZmUgdG8gYXR0ZW1wdAorICAgICAgdG8gc3VzcGVuZCB0aGUgZGV2aWNlIGFnYWluIGluIGZ1dHVyZSBhbmQgLUVBQ0NFUyBtZWFucyB0aGF0CisgICAgICAncG93ZXIuZGlzYWJsZV9kZXB0aCcgaXMgZGlmZmVyZW50IGZyb20gMAorCisgIGludCBwbV9ydW50aW1lX2F1dG9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldik7CisgICAgLSBzYW1lIGFzIHBtX3J1bnRpbWVfc3VzcGVuZCgpIGV4Y2VwdCB0aGF0IHRoZSBhdXRvc3VzcGVuZCBkZWxheSBpcyB0YWtlbgorICAgICAgaW50byBhY2NvdW50OyBpZiBwbV9ydW50aW1lX2F1dG9zdXNwZW5kX2V4cGlyYXRpb24oKSBzYXlzIHRoZSBkZWxheSBoYXMKKyAgICAgIG5vdCB5ZXQgZXhwaXJlZCB0aGVuIGFuIGF1dG9zdXNwZW5kIGlzIHNjaGVkdWxlZCBmb3IgdGhlIGFwcHJvcHJpYXRlIHRpbWUKKyAgICAgIGFuZCAwIGlzIHJldHVybmVkCisKKyAgaW50IHBtX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldik7CisgICAgLSBleGVjdXRlIHRoZSBzdWJzeXN0ZW0tbGV2ZWwgcmVzdW1lIGNhbGxiYWNrIGZvciB0aGUgZGV2aWNlOyByZXR1cm5zIDAgb24KKyAgICAgIHN1Y2Nlc3MsIDEgaWYgdGhlIGRldmljZSdzIHJ1bnRpbWUgUE0gc3RhdHVzIHdhcyBhbHJlYWR5ICdhY3RpdmUnIG9yCisgICAgICBlcnJvciBjb2RlIG9uIGZhaWx1cmUsIHdoZXJlIC1FQUdBSU4gbWVhbnMgaXQgbWF5IGJlIHNhZmUgdG8gYXR0ZW1wdCB0bworICAgICAgcmVzdW1lIHRoZSBkZXZpY2UgYWdhaW4gaW4gZnV0dXJlLCBidXQgJ3Bvd2VyLnJ1bnRpbWVfZXJyb3InIHNob3VsZCBiZQorICAgICAgY2hlY2tlZCBhZGRpdGlvbmFsbHksIGFuZCAtRUFDQ0VTIG1lYW5zIHRoYXQgJ3Bvd2VyLmRpc2FibGVfZGVwdGgnIGlzCisgICAgICBkaWZmZXJlbnQgZnJvbSAwCisKKyAgaW50IHBtX3JlcXVlc3RfaWRsZShzdHJ1Y3QgZGV2aWNlICpkZXYpOworICAgIC0gc3VibWl0IGEgcmVxdWVzdCB0byBleGVjdXRlIHRoZSBzdWJzeXN0ZW0tbGV2ZWwgaWRsZSBjYWxsYmFjayBmb3IgdGhlCisgICAgICBkZXZpY2UgKHRoZSByZXF1ZXN0IGlzIHJlcHJlc2VudGVkIGJ5IGEgd29yayBpdGVtIGluIHBtX3dxKTsgcmV0dXJucyAwIG9uCisgICAgICBzdWNjZXNzIG9yIGVycm9yIGNvZGUgaWYgdGhlIHJlcXVlc3QgaGFzIG5vdCBiZWVuIHF1ZXVlZCB1cAorCisgIGludCBwbV9yZXF1ZXN0X2F1dG9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldik7CisgICAgLSBzY2hlZHVsZSB0aGUgZXhlY3V0aW9uIG9mIHRoZSBzdWJzeXN0ZW0tbGV2ZWwgc3VzcGVuZCBjYWxsYmFjayBmb3IgdGhlCisgICAgICBkZXZpY2Ugd2hlbiB0aGUgYXV0b3N1c3BlbmQgZGVsYXkgaGFzIGV4cGlyZWQ7IGlmIHRoZSBkZWxheSBoYXMgYWxyZWFkeQorICAgICAgZXhwaXJlZCB0aGVuIHRoZSB3b3JrIGl0ZW0gaXMgcXVldWVkIHVwIGltbWVkaWF0ZWx5CisKKyAgaW50IHBtX3NjaGVkdWxlX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgZGVsYXkpOworICAgIC0gc2NoZWR1bGUgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgc3Vic3lzdGVtLWxldmVsIHN1c3BlbmQgY2FsbGJhY2sgZm9yIHRoZQorICAgICAgZGV2aWNlIGluIGZ1dHVyZSwgd2hlcmUgJ2RlbGF5JyBpcyB0aGUgdGltZSB0byB3YWl0IGJlZm9yZSBxdWV1aW5nIHVwIGEKKyAgICAgIHN1c3BlbmQgd29yayBpdGVtIGluIHBtX3dxLCBpbiBtaWxsaXNlY29uZHMgKGlmICdkZWxheScgaXMgemVybywgdGhlIHdvcmsKKyAgICAgIGl0ZW0gaXMgcXVldWVkIHVwIGltbWVkaWF0ZWx5KTsgcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIDEgaWYgdGhlIGRldmljZSdzIFBNCisgICAgICBydW50aW1lIHN0YXR1cyB3YXMgYWxyZWFkeSAnc3VzcGVuZGVkJywgb3IgZXJyb3IgY29kZSBpZiB0aGUgcmVxdWVzdAorICAgICAgaGFzbid0IGJlZW4gc2NoZWR1bGVkIChvciBxdWV1ZWQgdXAgaWYgJ2RlbGF5JyBpcyAwKTsgaWYgdGhlIGV4ZWN1dGlvbiBvZgorICAgICAgLT5ydW50aW1lX3N1c3BlbmQoKSBpcyBhbHJlYWR5IHNjaGVkdWxlZCBhbmQgbm90IHlldCBleHBpcmVkLCB0aGUgbmV3CisgICAgICB2YWx1ZSBvZiAnZGVsYXknIHdpbGwgYmUgdXNlZCBhcyB0aGUgdGltZSB0byB3YWl0CisKKyAgaW50IHBtX3JlcXVlc3RfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldik7CisgICAgLSBzdWJtaXQgYSByZXF1ZXN0IHRvIGV4ZWN1dGUgdGhlIHN1YnN5c3RlbS1sZXZlbCByZXN1bWUgY2FsbGJhY2sgZm9yIHRoZQorICAgICAgZGV2aWNlICh0aGUgcmVxdWVzdCBpcyByZXByZXNlbnRlZCBieSBhIHdvcmsgaXRlbSBpbiBwbV93cSk7IHJldHVybnMgMCBvbgorICAgICAgc3VjY2VzcywgMSBpZiB0aGUgZGV2aWNlJ3MgcnVudGltZSBQTSBzdGF0dXMgd2FzIGFscmVhZHkgJ2FjdGl2ZScsIG9yCisgICAgICBlcnJvciBjb2RlIGlmIHRoZSByZXF1ZXN0IGhhc24ndCBiZWVuIHF1ZXVlZCB1cAorCisgIHZvaWQgcG1fcnVudGltZV9nZXRfbm9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KTsKKyAgICAtIGluY3JlbWVudCB0aGUgZGV2aWNlJ3MgdXNhZ2UgY291bnRlcgorCisgIGludCBwbV9ydW50aW1lX2dldChzdHJ1Y3QgZGV2aWNlICpkZXYpOworICAgIC0gaW5jcmVtZW50IHRoZSBkZXZpY2UncyB1c2FnZSBjb3VudGVyLCBydW4gcG1fcmVxdWVzdF9yZXN1bWUoZGV2KSBhbmQKKyAgICAgIHJldHVybiBpdHMgcmVzdWx0CisKKyAgaW50IHBtX3J1bnRpbWVfZ2V0X3N5bmMoc3RydWN0IGRldmljZSAqZGV2KTsKKyAgICAtIGluY3JlbWVudCB0aGUgZGV2aWNlJ3MgdXNhZ2UgY291bnRlciwgcnVuIHBtX3J1bnRpbWVfcmVzdW1lKGRldikgYW5kCisgICAgICByZXR1cm4gaXRzIHJlc3VsdAorCisgIHZvaWQgcG1fcnVudGltZV9wdXRfbm9pZGxlKHN0cnVjdCBkZXZpY2UgKmRldik7CisgICAgLSBkZWNyZW1lbnQgdGhlIGRldmljZSdzIHVzYWdlIGNvdW50ZXIKKworICBpbnQgcG1fcnVudGltZV9wdXQoc3RydWN0IGRldmljZSAqZGV2KTsKKyAgICAtIGRlY3JlbWVudCB0aGUgZGV2aWNlJ3MgdXNhZ2UgY291bnRlcjsgaWYgdGhlIHJlc3VsdCBpcyAwIHRoZW4gcnVuCisgICAgICBwbV9yZXF1ZXN0X2lkbGUoZGV2KSBhbmQgcmV0dXJuIGl0cyByZXN1bHQKKworICBpbnQgcG1fcnVudGltZV9wdXRfYXV0b3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KTsKKyAgICAtIGRlY3JlbWVudCB0aGUgZGV2aWNlJ3MgdXNhZ2UgY291bnRlcjsgaWYgdGhlIHJlc3VsdCBpcyAwIHRoZW4gcnVuCisgICAgICBwbV9yZXF1ZXN0X2F1dG9zdXNwZW5kKGRldikgYW5kIHJldHVybiBpdHMgcmVzdWx0CisKKyAgaW50IHBtX3J1bnRpbWVfcHV0X3N5bmMoc3RydWN0IGRldmljZSAqZGV2KTsKKyAgICAtIGRlY3JlbWVudCB0aGUgZGV2aWNlJ3MgdXNhZ2UgY291bnRlcjsgaWYgdGhlIHJlc3VsdCBpcyAwIHRoZW4gcnVuCisgICAgICBwbV9ydW50aW1lX2lkbGUoZGV2KSBhbmQgcmV0dXJuIGl0cyByZXN1bHQKKworICBpbnQgcG1fcnVudGltZV9wdXRfc3luY19zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldik7CisgICAgLSBkZWNyZW1lbnQgdGhlIGRldmljZSdzIHVzYWdlIGNvdW50ZXI7IGlmIHRoZSByZXN1bHQgaXMgMCB0aGVuIHJ1bgorICAgICAgcG1fcnVudGltZV9zdXNwZW5kKGRldikgYW5kIHJldHVybiBpdHMgcmVzdWx0CisKKyAgaW50IHBtX3J1bnRpbWVfcHV0X3N5bmNfYXV0b3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KTsKKyAgICAtIGRlY3JlbWVudCB0aGUgZGV2aWNlJ3MgdXNhZ2UgY291bnRlcjsgaWYgdGhlIHJlc3VsdCBpcyAwIHRoZW4gcnVuCisgICAgICBwbV9ydW50aW1lX2F1dG9zdXNwZW5kKGRldikgYW5kIHJldHVybiBpdHMgcmVzdWx0CisKKyAgdm9pZCBwbV9ydW50aW1lX2VuYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYpOworICAgIC0gZGVjcmVtZW50IHRoZSBkZXZpY2UncyAncG93ZXIuZGlzYWJsZV9kZXB0aCcgZmllbGQ7IGlmIHRoYXQgZmllbGQgaXMgZXF1YWwKKyAgICAgIHRvIHplcm8sIHRoZSBydW50aW1lIFBNIGhlbHBlciBmdW5jdGlvbnMgY2FuIGV4ZWN1dGUgc3Vic3lzdGVtLWxldmVsCisgICAgICBjYWxsYmFja3MgZGVzY3JpYmVkIGluIFNlY3Rpb24gMiBmb3IgdGhlIGRldmljZQorCisgIGludCBwbV9ydW50aW1lX2Rpc2FibGUoc3RydWN0IGRldmljZSAqZGV2KTsKKyAgICAtIGluY3JlbWVudCB0aGUgZGV2aWNlJ3MgJ3Bvd2VyLmRpc2FibGVfZGVwdGgnIGZpZWxkIChpZiB0aGUgdmFsdWUgb2YgdGhhdAorICAgICAgZmllbGQgd2FzIHByZXZpb3VzbHkgemVybywgdGhpcyBwcmV2ZW50cyBzdWJzeXN0ZW0tbGV2ZWwgcnVudGltZSBQTQorICAgICAgY2FsbGJhY2tzIGZyb20gYmVpbmcgcnVuIGZvciB0aGUgZGV2aWNlKSwgbWFrZSBzdXJlIHRoYXQgYWxsIG9mIHRoZQorICAgICAgcGVuZGluZyBydW50aW1lIFBNIG9wZXJhdGlvbnMgb24gdGhlIGRldmljZSBhcmUgZWl0aGVyIGNvbXBsZXRlZCBvcgorICAgICAgY2FuY2VsZWQ7IHJldHVybnMgMSBpZiB0aGVyZSB3YXMgYSByZXN1bWUgcmVxdWVzdCBwZW5kaW5nIGFuZCBpdCB3YXMKKyAgICAgIG5lY2Vzc2FyeSB0byBleGVjdXRlIHRoZSBzdWJzeXN0ZW0tbGV2ZWwgcmVzdW1lIGNhbGxiYWNrIGZvciB0aGUgZGV2aWNlCisgICAgICB0byBzYXRpc2Z5IHRoYXQgcmVxdWVzdCwgb3RoZXJ3aXNlIDAgaXMgcmV0dXJuZWQKKworICBpbnQgcG1fcnVudGltZV9iYXJyaWVyKHN0cnVjdCBkZXZpY2UgKmRldik7CisgICAgLSBjaGVjayBpZiB0aGVyZSdzIGEgcmVzdW1lIHJlcXVlc3QgcGVuZGluZyBmb3IgdGhlIGRldmljZSBhbmQgcmVzdW1lIGl0CisgICAgICAoc3luY2hyb25vdXNseSkgaW4gdGhhdCBjYXNlLCBjYW5jZWwgYW55IG90aGVyIHBlbmRpbmcgcnVudGltZSBQTSByZXF1ZXN0cworICAgICAgcmVnYXJkaW5nIGl0IGFuZCB3YWl0IGZvciBhbGwgcnVudGltZSBQTSBvcGVyYXRpb25zIG9uIGl0IGluIHByb2dyZXNzIHRvCisgICAgICBjb21wbGV0ZTsgcmV0dXJucyAxIGlmIHRoZXJlIHdhcyBhIHJlc3VtZSByZXF1ZXN0IHBlbmRpbmcgYW5kIGl0IHdhcworICAgICAgbmVjZXNzYXJ5IHRvIGV4ZWN1dGUgdGhlIHN1YnN5c3RlbS1sZXZlbCByZXN1bWUgY2FsbGJhY2sgZm9yIHRoZSBkZXZpY2UgdG8KKyAgICAgIHNhdGlzZnkgdGhhdCByZXF1ZXN0LCBvdGhlcndpc2UgMCBpcyByZXR1cm5lZAorCisgIHZvaWQgcG1fc3VzcGVuZF9pZ25vcmVfY2hpbGRyZW4oc3RydWN0IGRldmljZSAqZGV2LCBib29sIGVuYWJsZSk7CisgICAgLSBzZXQvdW5zZXQgdGhlIHBvd2VyLmlnbm9yZV9jaGlsZHJlbiBmbGFnIG9mIHRoZSBkZXZpY2UKKworICBpbnQgcG1fcnVudGltZV9zZXRfYWN0aXZlKHN0cnVjdCBkZXZpY2UgKmRldik7CisgICAgLSBjbGVhciB0aGUgZGV2aWNlJ3MgJ3Bvd2VyLnJ1bnRpbWVfZXJyb3InIGZsYWcsIHNldCB0aGUgZGV2aWNlJ3MgcnVudGltZQorICAgICAgUE0gc3RhdHVzIHRvICdhY3RpdmUnIGFuZCB1cGRhdGUgaXRzIHBhcmVudCdzIGNvdW50ZXIgb2YgJ2FjdGl2ZScKKyAgICAgIGNoaWxkcmVuIGFzIGFwcHJvcHJpYXRlIChpdCBpcyBvbmx5IHZhbGlkIHRvIHVzZSB0aGlzIGZ1bmN0aW9uIGlmCisgICAgICAncG93ZXIucnVudGltZV9lcnJvcicgaXMgc2V0IG9yICdwb3dlci5kaXNhYmxlX2RlcHRoJyBpcyBncmVhdGVyIHRoYW4KKyAgICAgIHplcm8pOyBpdCB3aWxsIGZhaWwgYW5kIHJldHVybiBlcnJvciBjb2RlIGlmIHRoZSBkZXZpY2UgaGFzIGEgcGFyZW50CisgICAgICB3aGljaCBpcyBub3QgYWN0aXZlIGFuZCB0aGUgJ3Bvd2VyLmlnbm9yZV9jaGlsZHJlbicgZmxhZyBvZiB3aGljaCBpcyB1bnNldAorCisgIHZvaWQgcG1fcnVudGltZV9zZXRfc3VzcGVuZGVkKHN0cnVjdCBkZXZpY2UgKmRldik7CisgICAgLSBjbGVhciB0aGUgZGV2aWNlJ3MgJ3Bvd2VyLnJ1bnRpbWVfZXJyb3InIGZsYWcsIHNldCB0aGUgZGV2aWNlJ3MgcnVudGltZQorICAgICAgUE0gc3RhdHVzIHRvICdzdXNwZW5kZWQnIGFuZCB1cGRhdGUgaXRzIHBhcmVudCdzIGNvdW50ZXIgb2YgJ2FjdGl2ZScKKyAgICAgIGNoaWxkcmVuIGFzIGFwcHJvcHJpYXRlIChpdCBpcyBvbmx5IHZhbGlkIHRvIHVzZSB0aGlzIGZ1bmN0aW9uIGlmCisgICAgICAncG93ZXIucnVudGltZV9lcnJvcicgaXMgc2V0IG9yICdwb3dlci5kaXNhYmxlX2RlcHRoJyBpcyBncmVhdGVyIHRoYW4KKyAgICAgIHplcm8pCisKKyAgYm9vbCBwbV9ydW50aW1lX2FjdGl2ZShzdHJ1Y3QgZGV2aWNlICpkZXYpOworICAgIC0gcmV0dXJuIHRydWUgaWYgdGhlIGRldmljZSdzIHJ1bnRpbWUgUE0gc3RhdHVzIGlzICdhY3RpdmUnIG9yIGl0cworICAgICAgJ3Bvd2VyLmRpc2FibGVfZGVwdGgnIGZpZWxkIGlzIG5vdCBlcXVhbCB0byB6ZXJvLCBvciBmYWxzZSBvdGhlcndpc2UKKworICBib29sIHBtX3J1bnRpbWVfc3VzcGVuZGVkKHN0cnVjdCBkZXZpY2UgKmRldik7CisgICAgLSByZXR1cm4gdHJ1ZSBpZiB0aGUgZGV2aWNlJ3MgcnVudGltZSBQTSBzdGF0dXMgaXMgJ3N1c3BlbmRlZCcgYW5kIGl0cworICAgICAgJ3Bvd2VyLmRpc2FibGVfZGVwdGgnIGZpZWxkIGlzIGVxdWFsIHRvIHplcm8sIG9yIGZhbHNlIG90aGVyd2lzZQorCisgIGJvb2wgcG1fcnVudGltZV9zdGF0dXNfc3VzcGVuZGVkKHN0cnVjdCBkZXZpY2UgKmRldik7CisgICAgLSByZXR1cm4gdHJ1ZSBpZiB0aGUgZGV2aWNlJ3MgcnVudGltZSBQTSBzdGF0dXMgaXMgJ3N1c3BlbmRlZCcKKworICB2b2lkIHBtX3J1bnRpbWVfYWxsb3coc3RydWN0IGRldmljZSAqZGV2KTsKKyAgICAtIHNldCB0aGUgcG93ZXIucnVudGltZV9hdXRvIGZsYWcgZm9yIHRoZSBkZXZpY2UgYW5kIGRlY3JlYXNlIGl0cyB1c2FnZQorICAgICAgY291bnRlciAodXNlZCBieSB0aGUgL3N5cy9kZXZpY2VzLy4uLi9wb3dlci9jb250cm9sIGludGVyZmFjZSB0bworICAgICAgZWZmZWN0aXZlbHkgYWxsb3cgdGhlIGRldmljZSB0byBiZSBwb3dlciBtYW5hZ2VkIGF0IHJ1biB0aW1lKQorCisgIHZvaWQgcG1fcnVudGltZV9mb3JiaWQoc3RydWN0IGRldmljZSAqZGV2KTsKKyAgICAtIHVuc2V0IHRoZSBwb3dlci5ydW50aW1lX2F1dG8gZmxhZyBmb3IgdGhlIGRldmljZSBhbmQgaW5jcmVhc2UgaXRzIHVzYWdlCisgICAgICBjb3VudGVyICh1c2VkIGJ5IHRoZSAvc3lzL2RldmljZXMvLi4uL3Bvd2VyL2NvbnRyb2wgaW50ZXJmYWNlIHRvCisgICAgICBlZmZlY3RpdmVseSBwcmV2ZW50IHRoZSBkZXZpY2UgZnJvbSBiZWluZyBwb3dlciBtYW5hZ2VkIGF0IHJ1biB0aW1lKQorCisgIHZvaWQgcG1fcnVudGltZV9ub19jYWxsYmFja3Moc3RydWN0IGRldmljZSAqZGV2KTsKKyAgICAtIHNldCB0aGUgcG93ZXIubm9fY2FsbGJhY2tzIGZsYWcgZm9yIHRoZSBkZXZpY2UgYW5kIHJlbW92ZSB0aGUgcnVudGltZQorICAgICAgUE0gYXR0cmlidXRlcyBmcm9tIC9zeXMvZGV2aWNlcy8uLi4vcG93ZXIgKG9yIHByZXZlbnQgdGhlbSBmcm9tIGJlaW5nCisgICAgICBhZGRlZCB3aGVuIHRoZSBkZXZpY2UgaXMgcmVnaXN0ZXJlZCkKKworICB2b2lkIHBtX3J1bnRpbWVfaXJxX3NhZmUoc3RydWN0IGRldmljZSAqZGV2KTsKKyAgICAtIHNldCB0aGUgcG93ZXIuaXJxX3NhZmUgZmxhZyBmb3IgdGhlIGRldmljZSwgY2F1c2luZyB0aGUgcnVudGltZS1QTQorICAgICAgY2FsbGJhY2tzIHRvIGJlIGludm9rZWQgd2l0aCBpbnRlcnJ1cHRzIG9mZgorCisgIGJvb2wgcG1fcnVudGltZV9pc19pcnFfc2FmZShzdHJ1Y3QgZGV2aWNlICpkZXYpOworICAgIC0gcmV0dXJuIHRydWUgaWYgcG93ZXIuaXJxX3NhZmUgZmxhZyB3YXMgc2V0IGZvciB0aGUgZGV2aWNlLCBjYXVzaW5nCisgICAgICB0aGUgcnVudGltZS1QTSBjYWxsYmFja3MgdG8gYmUgaW52b2tlZCB3aXRoIGludGVycnVwdHMgb2ZmCisKKyAgdm9pZCBwbV9ydW50aW1lX21hcmtfbGFzdF9idXN5KHN0cnVjdCBkZXZpY2UgKmRldik7CisgICAgLSBzZXQgdGhlIHBvd2VyLmxhc3RfYnVzeSBmaWVsZCB0byB0aGUgY3VycmVudCB0aW1lCisKKyAgdm9pZCBwbV9ydW50aW1lX3VzZV9hdXRvc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpOworICAgIC0gc2V0IHRoZSBwb3dlci51c2VfYXV0b3N1c3BlbmQgZmxhZywgZW5hYmxpbmcgYXV0b3N1c3BlbmQgZGVsYXlzCisKKyAgdm9pZCBwbV9ydW50aW1lX2RvbnRfdXNlX2F1dG9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldik7CisgICAgLSBjbGVhciB0aGUgcG93ZXIudXNlX2F1dG9zdXNwZW5kIGZsYWcsIGRpc2FibGluZyBhdXRvc3VzcGVuZCBkZWxheXMKKworICB2b2lkIHBtX3J1bnRpbWVfc2V0X2F1dG9zdXNwZW5kX2RlbGF5KHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IGRlbGF5KTsKKyAgICAtIHNldCB0aGUgcG93ZXIuYXV0b3N1c3BlbmRfZGVsYXkgdmFsdWUgdG8gJ2RlbGF5JyAoZXhwcmVzc2VkIGluCisgICAgICBtaWxsaXNlY29uZHMpOyBpZiAnZGVsYXknIGlzIG5lZ2F0aXZlIHRoZW4gcnVudGltZSBzdXNwZW5kcyBhcmUKKyAgICAgIHByZXZlbnRlZAorCisgIHVuc2lnbmVkIGxvbmcgcG1fcnVudGltZV9hdXRvc3VzcGVuZF9leHBpcmF0aW9uKHN0cnVjdCBkZXZpY2UgKmRldik7CisgICAgLSBjYWxjdWxhdGUgdGhlIHRpbWUgd2hlbiB0aGUgY3VycmVudCBhdXRvc3VzcGVuZCBkZWxheSBwZXJpb2Qgd2lsbCBleHBpcmUsCisgICAgICBiYXNlZCBvbiBwb3dlci5sYXN0X2J1c3kgYW5kIHBvd2VyLmF1dG9zdXNwZW5kX2RlbGF5OyBpZiB0aGUgZGVsYXkgdGltZQorICAgICAgaXMgMTAwMCBtcyBvciBsYXJnZXIgdGhlbiB0aGUgZXhwaXJhdGlvbiB0aW1lIGlzIHJvdW5kZWQgdXAgdG8gdGhlCisgICAgICBuZWFyZXN0IHNlY29uZDsgcmV0dXJucyAwIGlmIHRoZSBkZWxheSBwZXJpb2QgaGFzIGFscmVhZHkgZXhwaXJlZCBvcgorICAgICAgcG93ZXIudXNlX2F1dG9zdXNwZW5kIGlzbid0IHNldCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIGV4cGlyYXRpb24gdGltZQorICAgICAgaW4gamlmZmllcworCitJdCBpcyBzYWZlIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBoZWxwZXIgZnVuY3Rpb25zIGZyb20gaW50ZXJydXB0IGNvbnRleHQ6CisKK3BtX3JlcXVlc3RfaWRsZSgpCitwbV9yZXF1ZXN0X2F1dG9zdXNwZW5kKCkKK3BtX3NjaGVkdWxlX3N1c3BlbmQoKQorcG1fcmVxdWVzdF9yZXN1bWUoKQorcG1fcnVudGltZV9nZXRfbm9yZXN1bWUoKQorcG1fcnVudGltZV9nZXQoKQorcG1fcnVudGltZV9wdXRfbm9pZGxlKCkKK3BtX3J1bnRpbWVfcHV0KCkKK3BtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKCkKK3BtX3J1bnRpbWVfZW5hYmxlKCkKK3BtX3N1c3BlbmRfaWdub3JlX2NoaWxkcmVuKCkKK3BtX3J1bnRpbWVfc2V0X2FjdGl2ZSgpCitwbV9ydW50aW1lX3NldF9zdXNwZW5kZWQoKQorcG1fcnVudGltZV9zdXNwZW5kZWQoKQorcG1fcnVudGltZV9tYXJrX2xhc3RfYnVzeSgpCitwbV9ydW50aW1lX2F1dG9zdXNwZW5kX2V4cGlyYXRpb24oKQorCitJZiBwbV9ydW50aW1lX2lycV9zYWZlKCkgaGFzIGJlZW4gY2FsbGVkIGZvciBhIGRldmljZSB0aGVuIHRoZSBmb2xsb3dpbmcgaGVscGVyCitmdW5jdGlvbnMgbWF5IGFsc28gYmUgdXNlZCBpbiBpbnRlcnJ1cHQgY29udGV4dDoKKworcG1fcnVudGltZV9pZGxlKCkKK3BtX3J1bnRpbWVfc3VzcGVuZCgpCitwbV9ydW50aW1lX2F1dG9zdXNwZW5kKCkKK3BtX3J1bnRpbWVfcmVzdW1lKCkKK3BtX3J1bnRpbWVfZ2V0X3N5bmMoKQorcG1fcnVudGltZV9wdXRfc3luYygpCitwbV9ydW50aW1lX3B1dF9zeW5jX3N1c3BlbmQoKQorcG1fcnVudGltZV9wdXRfc3luY19hdXRvc3VzcGVuZCgpCisKKzUuIFJ1bnRpbWUgUE0gSW5pdGlhbGl6YXRpb24sIERldmljZSBQcm9iaW5nIGFuZCBSZW1vdmFsCisKK0luaXRpYWxseSwgdGhlIHJ1bnRpbWUgUE0gaXMgZGlzYWJsZWQgZm9yIGFsbCBkZXZpY2VzLCB3aGljaCBtZWFucyB0aGF0IHRoZQorbWFqb3JpdHkgb2YgdGhlIHJ1bnRpbWUgUE0gaGVscGVyIGZ1bmN0aW9ucyBkZXNjcmliZWQgaW4gU2VjdGlvbiA0IHdpbGwgcmV0dXJuCistRUFHQUlOIHVudGlsIHBtX3J1bnRpbWVfZW5hYmxlKCkgaXMgY2FsbGVkIGZvciB0aGUgZGV2aWNlLgorCitJbiBhZGRpdGlvbiB0byB0aGF0LCB0aGUgaW5pdGlhbCBydW50aW1lIFBNIHN0YXR1cyBvZiBhbGwgZGV2aWNlcyBpcworJ3N1c3BlbmRlZCcsIGJ1dCBpdCBuZWVkIG5vdCByZWZsZWN0IHRoZSBhY3R1YWwgcGh5c2ljYWwgc3RhdGUgb2YgdGhlIGRldmljZS4KK1RodXMsIGlmIHRoZSBkZXZpY2UgaXMgaW5pdGlhbGx5IGFjdGl2ZSAoaS5lLiBpdCBpcyBhYmxlIHRvIHByb2Nlc3MgSS9PKSwgaXRzCitydW50aW1lIFBNIHN0YXR1cyBtdXN0IGJlIGNoYW5nZWQgdG8gJ2FjdGl2ZScsIHdpdGggdGhlIGhlbHAgb2YKK3BtX3J1bnRpbWVfc2V0X2FjdGl2ZSgpLCBiZWZvcmUgcG1fcnVudGltZV9lbmFibGUoKSBpcyBjYWxsZWQgZm9yIHRoZSBkZXZpY2UuCisKK0hvd2V2ZXIsIGlmIHRoZSBkZXZpY2UgaGFzIGEgcGFyZW50IGFuZCB0aGUgcGFyZW50J3MgcnVudGltZSBQTSBpcyBlbmFibGVkLAorY2FsbGluZyBwbV9ydW50aW1lX3NldF9hY3RpdmUoKSBmb3IgdGhlIGRldmljZSB3aWxsIGFmZmVjdCB0aGUgcGFyZW50LCB1bmxlc3MKK3RoZSBwYXJlbnQncyAncG93ZXIuaWdub3JlX2NoaWxkcmVuJyBmbGFnIGlzIHNldC4gIE5hbWVseSwgaW4gdGhhdCBjYXNlIHRoZQorcGFyZW50IHdvbid0IGJlIGFibGUgdG8gc3VzcGVuZCBhdCBydW4gdGltZSwgdXNpbmcgdGhlIFBNIGNvcmUncyBoZWxwZXIKK2Z1bmN0aW9ucywgYXMgbG9uZyBhcyB0aGUgY2hpbGQncyBzdGF0dXMgaXMgJ2FjdGl2ZScsIGV2ZW4gaWYgdGhlIGNoaWxkJ3MKK3J1bnRpbWUgUE0gaXMgc3RpbGwgZGlzYWJsZWQgKGkuZS4gcG1fcnVudGltZV9lbmFibGUoKSBoYXNuJ3QgYmVlbiBjYWxsZWQgZm9yCit0aGUgY2hpbGQgeWV0IG9yIHBtX3J1bnRpbWVfZGlzYWJsZSgpIGhhcyBiZWVuIGNhbGxlZCBmb3IgaXQpLiAgRm9yIHRoaXMgcmVhc29uLAorb25jZSBwbV9ydW50aW1lX3NldF9hY3RpdmUoKSBoYXMgYmVlbiBjYWxsZWQgZm9yIHRoZSBkZXZpY2UsIHBtX3J1bnRpbWVfZW5hYmxlKCkKK3Nob3VsZCBiZSBjYWxsZWQgZm9yIGl0IHRvbyBhcyBzb29uIGFzIHJlYXNvbmFibHkgcG9zc2libGUgb3IgaXRzIHJ1bnRpbWUgUE0KK3N0YXR1cyBzaG91bGQgYmUgY2hhbmdlZCBiYWNrIHRvICdzdXNwZW5kZWQnIHdpdGggdGhlIGhlbHAgb2YKK3BtX3J1bnRpbWVfc2V0X3N1c3BlbmRlZCgpLgorCitJZiB0aGUgZGVmYXVsdCBpbml0aWFsIHJ1bnRpbWUgUE0gc3RhdHVzIG9mIHRoZSBkZXZpY2UgKGkuZS4gJ3N1c3BlbmRlZCcpCityZWZsZWN0cyB0aGUgYWN0dWFsIHN0YXRlIG9mIHRoZSBkZXZpY2UsIGl0cyBidXMgdHlwZSdzIG9yIGl0cyBkcml2ZXIncworLT5wcm9iZSgpIGNhbGxiYWNrIHdpbGwgbGlrZWx5IG5lZWQgdG8gd2FrZSBpdCB1cCB1c2luZyBvbmUgb2YgdGhlIFBNIGNvcmUncworaGVscGVyIGZ1bmN0aW9ucyBkZXNjcmliZWQgaW4gU2VjdGlvbiA0LiAgSW4gdGhhdCBjYXNlLCBwbV9ydW50aW1lX3Jlc3VtZSgpCitzaG91bGQgYmUgdXNlZC4gIE9mIGNvdXJzZSwgZm9yIHRoaXMgcHVycG9zZSB0aGUgZGV2aWNlJ3MgcnVudGltZSBQTSBoYXMgdG8gYmUKK2VuYWJsZWQgZWFybGllciBieSBjYWxsaW5nIHBtX3J1bnRpbWVfZW5hYmxlKCkuCisKK05vdGUsIGlmIHRoZSBkZXZpY2UgbWF5IGV4ZWN1dGUgcG1fcnVudGltZSBjYWxscyBkdXJpbmcgdGhlIHByb2JlIChzdWNoIGFzCitpZiBpdCBpcyByZWdpc3RlcnMgd2l0aCBhIHN1YnN5c3RlbSB0aGF0IG1heSBjYWxsIGJhY2sgaW4pIHRoZW4gdGhlCitwbV9ydW50aW1lX2dldF9zeW5jKCkgY2FsbCBwYWlyZWQgd2l0aCBhIHBtX3J1bnRpbWVfcHV0KCkgY2FsbCB3aWxsIGJlCithcHByb3ByaWF0ZSB0byBlbnN1cmUgdGhhdCB0aGUgZGV2aWNlIGlzIG5vdCBwdXQgYmFjayB0byBzbGVlcCBkdXJpbmcgdGhlCitwcm9iZS4gVGhpcyBjYW4gaGFwcGVuIHdpdGggc3lzdGVtcyBzdWNoIGFzIHRoZSBuZXR3b3JrIGRldmljZSBsYXllci4KKworSXQgbWF5IGJlIGRlc2lyYWJsZSB0byBzdXNwZW5kIHRoZSBkZXZpY2Ugb25jZSAtPnByb2JlKCkgaGFzIGZpbmlzaGVkLgorVGhlcmVmb3JlIHRoZSBkcml2ZXIgY29yZSB1c2VzIHRoZSBhc3luY3Jvbm91cyBwbV9yZXF1ZXN0X2lkbGUoKSB0byBzdWJtaXQgYQorcmVxdWVzdCB0byBleGVjdXRlIHRoZSBzdWJzeXN0ZW0tbGV2ZWwgaWRsZSBjYWxsYmFjayBmb3IgdGhlIGRldmljZSBhdCB0aGF0Cit0aW1lLiAgQSBkcml2ZXIgdGhhdCBtYWtlcyB1c2Ugb2YgdGhlIHJ1bnRpbWUgYXV0b3N1c3BlbmQgZmVhdHVyZSwgbWF5IHdhbnQgdG8KK3VwZGF0ZSB0aGUgbGFzdCBidXN5IG1hcmsgYmVmb3JlIHJldHVybmluZyBmcm9tIC0+cHJvYmUoKS4KKworTW9yZW92ZXIsIHRoZSBkcml2ZXIgY29yZSBwcmV2ZW50cyBydW50aW1lIFBNIGNhbGxiYWNrcyBmcm9tIHJhY2luZyB3aXRoIHRoZSBidXMKK25vdGlmaWVyIGNhbGxiYWNrIGluIF9fZGV2aWNlX3JlbGVhc2VfZHJpdmVyKCksIHdoaWNoIGlzIG5lY2Vzc2FyeSwgYmVjYXVzZSB0aGUKK25vdGlmaWVyIGlzIHVzZWQgYnkgc29tZSBzdWJzeXN0ZW1zIHRvIGNhcnJ5IG91dCBvcGVyYXRpb25zIGFmZmVjdGluZyB0aGUKK3J1bnRpbWUgUE0gZnVuY3Rpb25hbGl0eS4gIEl0IGRvZXMgc28gYnkgY2FsbGluZyBwbV9ydW50aW1lX2dldF9zeW5jKCkgYmVmb3JlCitkcml2ZXJfc3lzZnNfcmVtb3ZlKCkgYW5kIHRoZSBCVVNfTk9USUZZX1VOQklORF9EUklWRVIgbm90aWZpY2F0aW9ucy4gIFRoaXMKK3Jlc3VtZXMgdGhlIGRldmljZSBpZiBpdCdzIGluIHRoZSBzdXNwZW5kZWQgc3RhdGUgYW5kIHByZXZlbnRzIGl0IGZyb20KK2JlaW5nIHN1c3BlbmRlZCBhZ2FpbiB3aGlsZSB0aG9zZSByb3V0aW5lcyBhcmUgYmVpbmcgZXhlY3V0ZWQuCisKK1RvIGFsbG93IGJ1cyB0eXBlcyBhbmQgZHJpdmVycyB0byBwdXQgZGV2aWNlcyBpbnRvIHRoZSBzdXNwZW5kZWQgc3RhdGUgYnkKK2NhbGxpbmcgcG1fcnVudGltZV9zdXNwZW5kKCkgZnJvbSB0aGVpciAtPnJlbW92ZSgpIHJvdXRpbmVzLCB0aGUgZHJpdmVyIGNvcmUKK2V4ZWN1dGVzIHBtX3J1bnRpbWVfcHV0X3N5bmMoKSBhZnRlciBydW5uaW5nIHRoZSBCVVNfTk9USUZZX1VOQklORF9EUklWRVIKK25vdGlmaWNhdGlvbnMgaW4gX19kZXZpY2VfcmVsZWFzZV9kcml2ZXIoKS4gIFRoaXMgcmVxdWlyZXMgYnVzIHR5cGVzIGFuZAorZHJpdmVycyB0byBtYWtlIHRoZWlyIC0+cmVtb3ZlKCkgY2FsbGJhY2tzIGF2b2lkIHJhY2VzIHdpdGggcnVudGltZSBQTSBkaXJlY3RseSwKK2J1dCBhbHNvIGl0IGFsbG93cyBvZiBtb3JlIGZsZXhpYmlsaXR5IGluIHRoZSBoYW5kbGluZyBvZiBkZXZpY2VzIGR1cmluZyB0aGUKK3JlbW92YWwgb2YgdGhlaXIgZHJpdmVycy4KKworVGhlIHVzZXIgc3BhY2UgY2FuIGVmZmVjdGl2ZWx5IGRpc2FsbG93IHRoZSBkcml2ZXIgb2YgdGhlIGRldmljZSB0byBwb3dlciBtYW5hZ2UKK2l0IGF0IHJ1biB0aW1lIGJ5IGNoYW5naW5nIHRoZSB2YWx1ZSBvZiBpdHMgL3N5cy9kZXZpY2VzLy4uLi9wb3dlci9jb250cm9sCithdHRyaWJ1dGUgdG8gIm9uIiwgd2hpY2ggY2F1c2VzIHBtX3J1bnRpbWVfZm9yYmlkKCkgdG8gYmUgY2FsbGVkLiAgSW4gcHJpbmNpcGxlLAordGhpcyBtZWNoYW5pc20gbWF5IGFsc28gYmUgdXNlZCBieSB0aGUgZHJpdmVyIHRvIGVmZmVjdGl2ZWx5IHR1cm4gb2ZmIHRoZQorcnVudGltZSBwb3dlciBtYW5hZ2VtZW50IG9mIHRoZSBkZXZpY2UgdW50aWwgdGhlIHVzZXIgc3BhY2UgdHVybnMgaXQgb24uCitOYW1lbHksIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gdGhlIGRyaXZlciBjYW4gbWFrZSBzdXJlIHRoYXQgdGhlIHJ1bnRpbWUgUE0KK3N0YXR1cyBvZiB0aGUgZGV2aWNlIGlzICdhY3RpdmUnIGFuZCBjYWxsIHBtX3J1bnRpbWVfZm9yYmlkKCkuICBJdCBzaG91bGQgYmUKK25vdGVkLCBob3dldmVyLCB0aGF0IGlmIHRoZSB1c2VyIHNwYWNlIGhhcyBhbHJlYWR5IGludGVudGlvbmFsbHkgY2hhbmdlZCB0aGUKK3ZhbHVlIG9mIC9zeXMvZGV2aWNlcy8uLi4vcG93ZXIvY29udHJvbCB0byAiYXV0byIgdG8gYWxsb3cgdGhlIGRyaXZlciB0byBwb3dlcgorbWFuYWdlIHRoZSBkZXZpY2UgYXQgcnVuIHRpbWUsIHRoZSBkcml2ZXIgbWF5IGNvbmZ1c2UgaXQgYnkgdXNpbmcKK3BtX3J1bnRpbWVfZm9yYmlkKCkgdGhpcyB3YXkuCisKKzYuIFJ1bnRpbWUgUE0gYW5kIFN5c3RlbSBTbGVlcAorCitSdW50aW1lIFBNIGFuZCBzeXN0ZW0gc2xlZXAgKGkuZS4sIHN5c3RlbSBzdXNwZW5kIGFuZCBoaWJlcm5hdGlvbiwgYWxzbyBrbm93bgorYXMgc3VzcGVuZC10by1SQU0gYW5kIHN1c3BlbmQtdG8tZGlzaykgaW50ZXJhY3Qgd2l0aCBlYWNoIG90aGVyIGluIGEgY291cGxlIG9mCit3YXlzLiAgSWYgYSBkZXZpY2UgaXMgYWN0aXZlIHdoZW4gYSBzeXN0ZW0gc2xlZXAgc3RhcnRzLCBldmVyeXRoaW5nIGlzCitzdHJhaWdodGZvcndhcmQuICBCdXQgd2hhdCBzaG91bGQgaGFwcGVuIGlmIHRoZSBkZXZpY2UgaXMgYWxyZWFkeSBzdXNwZW5kZWQ/CisKK1RoZSBkZXZpY2UgbWF5IGhhdmUgZGlmZmVyZW50IHdha2UtdXAgc2V0dGluZ3MgZm9yIHJ1bnRpbWUgUE0gYW5kIHN5c3RlbSBzbGVlcC4KK0ZvciBleGFtcGxlLCByZW1vdGUgd2FrZS11cCBtYXkgYmUgZW5hYmxlZCBmb3IgcnVudGltZSBzdXNwZW5kIGJ1dCBkaXNhbGxvd2VkCitmb3Igc3lzdGVtIHNsZWVwIChkZXZpY2VfbWF5X3dha2V1cChkZXYpIHJldHVybnMgJ2ZhbHNlJykuICBXaGVuIHRoaXMgaGFwcGVucywKK3RoZSBzdWJzeXN0ZW0tbGV2ZWwgc3lzdGVtIHN1c3BlbmQgY2FsbGJhY2sgaXMgcmVzcG9uc2libGUgZm9yIGNoYW5naW5nIHRoZQorZGV2aWNlJ3Mgd2FrZS11cCBzZXR0aW5nIChpdCBtYXkgbGVhdmUgdGhhdCB0byB0aGUgZGV2aWNlIGRyaXZlcidzIHN5c3RlbQorc3VzcGVuZCByb3V0aW5lKS4gIEl0IG1heSBiZSBuZWNlc3NhcnkgdG8gcmVzdW1lIHRoZSBkZXZpY2UgYW5kIHN1c3BlbmQgaXQgYWdhaW4KK2luIG9yZGVyIHRvIGRvIHNvLiAgVGhlIHNhbWUgaXMgdHJ1ZSBpZiB0aGUgZHJpdmVyIHVzZXMgZGlmZmVyZW50IHBvd2VyIGxldmVscworb3Igb3RoZXIgc2V0dGluZ3MgZm9yIHJ1bnRpbWUgc3VzcGVuZCBhbmQgc3lzdGVtIHNsZWVwLgorCitEdXJpbmcgc3lzdGVtIHJlc3VtZSwgdGhlIHNpbXBsZXN0IGFwcHJvYWNoIGlzIHRvIGJyaW5nIGFsbCBkZXZpY2VzIGJhY2sgdG8gZnVsbAorcG93ZXIsIGV2ZW4gaWYgdGhleSBoYWQgYmVlbiBzdXNwZW5kZWQgYmVmb3JlIHRoZSBzeXN0ZW0gc3VzcGVuZCBiZWdhbi4gIFRoZXJlCithcmUgc2V2ZXJhbCByZWFzb25zIGZvciB0aGlzLCBpbmNsdWRpbmc6CisKKyAgKiBUaGUgZGV2aWNlIG1pZ2h0IG5lZWQgdG8gc3dpdGNoIHBvd2VyIGxldmVscywgd2FrZS11cCBzZXR0aW5ncywgZXRjLgorCisgICogUmVtb3RlIHdha2UtdXAgZXZlbnRzIG1pZ2h0IGhhdmUgYmVlbiBsb3N0IGJ5IHRoZSBmaXJtd2FyZS4KKworICAqIFRoZSBkZXZpY2UncyBjaGlsZHJlbiBtYXkgbmVlZCB0aGUgZGV2aWNlIHRvIGJlIGF0IGZ1bGwgcG93ZXIgaW4gb3JkZXIKKyAgICB0byByZXN1bWUgdGhlbXNlbHZlcy4KKworICAqIFRoZSBkcml2ZXIncyBpZGVhIG9mIHRoZSBkZXZpY2Ugc3RhdGUgbWF5IG5vdCBhZ3JlZSB3aXRoIHRoZSBkZXZpY2UncworICAgIHBoeXNpY2FsIHN0YXRlLiAgVGhpcyBjYW4gaGFwcGVuIGR1cmluZyByZXN1bWUgZnJvbSBoaWJlcm5hdGlvbi4KKworICAqIFRoZSBkZXZpY2UgbWlnaHQgbmVlZCB0byBiZSByZXNldC4KKworICAqIEV2ZW4gdGhvdWdoIHRoZSBkZXZpY2Ugd2FzIHN1c3BlbmRlZCwgaWYgaXRzIHVzYWdlIGNvdW50ZXIgd2FzID4gMCB0aGVuIG1vc3QKKyAgICBsaWtlbHkgaXQgd291bGQgbmVlZCBhIHJ1bnRpbWUgcmVzdW1lIGluIHRoZSBuZWFyIGZ1dHVyZSBhbnl3YXkuCisKK0lmIHRoZSBkZXZpY2UgaGFkIGJlZW4gc3VzcGVuZGVkIGJlZm9yZSB0aGUgc3lzdGVtIHN1c3BlbmQgYmVnYW4gYW5kIGl0J3MKK2Jyb3VnaHQgYmFjayB0byBmdWxsIHBvd2VyIGR1cmluZyByZXN1bWUsIHRoZW4gaXRzIHJ1bnRpbWUgUE0gc3RhdHVzIHdpbGwgaGF2ZQordG8gYmUgdXBkYXRlZCB0byByZWZsZWN0IHRoZSBhY3R1YWwgcG9zdC1zeXN0ZW0gc2xlZXAgc3RhdHVzLiAgVGhlIHdheSB0byBkbwordGhpcyBpczoKKworCXBtX3J1bnRpbWVfZGlzYWJsZShkZXYpOworCXBtX3J1bnRpbWVfc2V0X2FjdGl2ZShkZXYpOworCXBtX3J1bnRpbWVfZW5hYmxlKGRldik7CisKK1RoZSBQTSBjb3JlIGFsd2F5cyBpbmNyZW1lbnRzIHRoZSBydW50aW1lIHVzYWdlIGNvdW50ZXIgYmVmb3JlIGNhbGxpbmcgdGhlCistPnN1c3BlbmQoKSBjYWxsYmFjayBhbmQgZGVjcmVtZW50cyBpdCBhZnRlciBjYWxsaW5nIHRoZSAtPnJlc3VtZSgpIGNhbGxiYWNrLgorSGVuY2UgZGlzYWJsaW5nIHJ1bnRpbWUgUE0gdGVtcG9yYXJpbHkgbGlrZSB0aGlzIHdpbGwgbm90IGNhdXNlIGFueSBydW50aW1lCitzdXNwZW5kIGF0dGVtcHRzIHRvIGJlIHBlcm1hbmVudGx5IGxvc3QuICBJZiB0aGUgdXNhZ2UgY291bnQgZ29lcyB0byB6ZXJvCitmb2xsb3dpbmcgdGhlIHJldHVybiBvZiB0aGUgLT5yZXN1bWUoKSBjYWxsYmFjaywgdGhlIC0+cnVudGltZV9pZGxlKCkgY2FsbGJhY2sKK3dpbGwgYmUgaW52b2tlZCBhcyB1c3VhbC4KKworT24gc29tZSBzeXN0ZW1zLCBob3dldmVyLCBzeXN0ZW0gc2xlZXAgaXMgbm90IGVudGVyZWQgdGhyb3VnaCBhIGdsb2JhbCBmaXJtd2FyZQorb3IgaGFyZHdhcmUgb3BlcmF0aW9uLiAgSW5zdGVhZCwgYWxsIGhhcmR3YXJlIGNvbXBvbmVudHMgYXJlIHB1dCBpbnRvIGxvdy1wb3dlcgorc3RhdGVzIGRpcmVjdGx5IGJ5IHRoZSBrZXJuZWwgaW4gYSBjb29yZGluYXRlZCB3YXkuICBUaGVuLCB0aGUgc3lzdGVtIHNsZWVwCitzdGF0ZSBlZmZlY3RpdmVseSBmb2xsb3dzIGZyb20gdGhlIHN0YXRlcyB0aGUgaGFyZHdhcmUgY29tcG9uZW50cyBlbmQgdXAgaW4KK2FuZCB0aGUgc3lzdGVtIGlzIHdva2VuIHVwIGZyb20gdGhhdCBzdGF0ZSBieSBhIGhhcmR3YXJlIGludGVycnVwdCBvciBhIHNpbWlsYXIKK21lY2hhbmlzbSBlbnRpcmVseSB1bmRlciB0aGUga2VybmVsJ3MgY29udHJvbC4gIEFzIGEgcmVzdWx0LCB0aGUga2VybmVsIG5ldmVyCitnaXZlcyBjb250cm9sIGF3YXkgYW5kIHRoZSBzdGF0ZXMgb2YgYWxsIGRldmljZXMgZHVyaW5nIHJlc3VtZSBhcmUgcHJlY2lzZWx5Citrbm93biB0byBpdC4gIElmIHRoYXQgaXMgdGhlIGNhc2UgYW5kIG5vbmUgb2YgdGhlIHNpdHVhdGlvbnMgbGlzdGVkIGFib3ZlIHRha2VzCitwbGFjZSAoaW4gcGFydGljdWxhciwgaWYgdGhlIHN5c3RlbSBpcyBub3Qgd2FraW5nIHVwIGZyb20gaGliZXJuYXRpb24pLCBpdCBtYXkKK2JlIG1vcmUgZWZmaWNpZW50IHRvIGxlYXZlIHRoZSBkZXZpY2VzIHRoYXQgaGFkIGJlZW4gc3VzcGVuZGVkIGJlZm9yZSB0aGUgc3lzdGVtCitzdXNwZW5kIGJlZ2FuIGluIHRoZSBzdXNwZW5kZWQgc3RhdGUuCisKK1RvIHRoaXMgZW5kLCB0aGUgUE0gY29yZSBwcm92aWRlcyBhIG1lY2hhbmlzbSBhbGxvd2luZyBzb21lIGNvb3JkaW5hdGlvbiBiZXR3ZWVuCitkaWZmZXJlbnQgbGV2ZWxzIG9mIGRldmljZSBoaWVyYXJjaHkuICBOYW1lbHksIGlmIGEgc3lzdGVtIHN1c3BlbmQgLnByZXBhcmUoKQorY2FsbGJhY2sgcmV0dXJucyBhIHBvc2l0aXZlIG51bWJlciBmb3IgYSBkZXZpY2UsIHRoYXQgaW5kaWNhdGVzIHRvIHRoZSBQTSBjb3JlCit0aGF0IHRoZSBkZXZpY2UgYXBwZWFycyB0byBiZSBydW50aW1lLXN1c3BlbmRlZCBhbmQgaXRzIHN0YXRlIGlzIGZpbmUsIHNvIGl0CittYXkgYmUgbGVmdCBpbiBydW50aW1lIHN1c3BlbmQgcHJvdmlkZWQgdGhhdCBhbGwgb2YgaXRzIGRlc2NlbmRhbnRzIGFyZSBhbHNvCitsZWZ0IGluIHJ1bnRpbWUgc3VzcGVuZC4gIElmIHRoYXQgaGFwcGVucywgdGhlIFBNIGNvcmUgd2lsbCBub3QgZXhlY3V0ZSBhbnkKK3N5c3RlbSBzdXNwZW5kIGFuZCByZXN1bWUgY2FsbGJhY2tzIGZvciBhbGwgb2YgdGhvc2UgZGV2aWNlcywgZXhjZXB0IGZvciB0aGUKK2NvbXBsZXRlIGNhbGxiYWNrLCB3aGljaCBpcyB0aGVuIGVudGlyZWx5IHJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgZGV2aWNlCithcyBhcHByb3ByaWF0ZS4gIFRoaXMgb25seSBhcHBsaWVzIHRvIHN5c3RlbSBzdXNwZW5kIHRyYW5zaXRpb25zIHRoYXQgYXJlIG5vdAorcmVsYXRlZCB0byBoaWJlcm5hdGlvbiAoc2VlIERvY3VtZW50YXRpb24vcG93ZXIvZGV2aWNlcy50eHQgZm9yIG1vcmUKK2luZm9ybWF0aW9uKS4KKworVGhlIFBNIGNvcmUgZG9lcyBpdHMgYmVzdCB0byByZWR1Y2UgdGhlIHByb2JhYmlsaXR5IG9mIHJhY2UgY29uZGl0aW9ucyBiZXR3ZWVuCit0aGUgcnVudGltZSBQTSBhbmQgc3lzdGVtIHN1c3BlbmQvcmVzdW1lIChhbmQgaGliZXJuYXRpb24pIGNhbGxiYWNrcyBieSBjYXJyeWluZworb3V0IHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9uczoKKworICAqIER1cmluZyBzeXN0ZW0gc3VzcGVuZCBwbV9ydW50aW1lX2dldF9ub3Jlc3VtZSgpIGlzIGNhbGxlZCBmb3IgZXZlcnkgZGV2aWNlCisgICAgcmlnaHQgYmVmb3JlIGV4ZWN1dGluZyB0aGUgc3Vic3lzdGVtLWxldmVsIC5wcmVwYXJlKCkgY2FsbGJhY2sgZm9yIGl0IGFuZAorICAgIHBtX3J1bnRpbWVfYmFycmllcigpIGlzIGNhbGxlZCBmb3IgZXZlcnkgZGV2aWNlIHJpZ2h0IGJlZm9yZSBleGVjdXRpbmcgdGhlCisgICAgc3Vic3lzdGVtLWxldmVsIC5zdXNwZW5kKCkgY2FsbGJhY2sgZm9yIGl0LiAgSW4gYWRkaXRpb24gdG8gdGhhdCB0aGUgUE0gY29yZQorICAgIGNhbGxzICBfX3BtX3J1bnRpbWVfZGlzYWJsZSgpIHdpdGggJ2ZhbHNlJyBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50IGZvciBldmVyeQorICAgIGRldmljZSByaWdodCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBzdWJzeXN0ZW0tbGV2ZWwgLnN1c3BlbmRfbGF0ZSgpIGNhbGxiYWNrCisgICAgZm9yIGl0LgorCisgICogRHVyaW5nIHN5c3RlbSByZXN1bWUgcG1fcnVudGltZV9lbmFibGUoKSBhbmQgcG1fcnVudGltZV9wdXQoKSBhcmUgY2FsbGVkIGZvcgorICAgIGV2ZXJ5IGRldmljZSByaWdodCBhZnRlciBleGVjdXRpbmcgdGhlIHN1YnN5c3RlbS1sZXZlbCAucmVzdW1lX2Vhcmx5KCkKKyAgICBjYWxsYmFjayBhbmQgcmlnaHQgYWZ0ZXIgZXhlY3V0aW5nIHRoZSBzdWJzeXN0ZW0tbGV2ZWwgLmNvbXBsZXRlKCkgY2FsbGJhY2sKKyAgICBmb3IgaXQsIHJlc3BlY3RpdmVseS4KKworNy4gR2VuZXJpYyBzdWJzeXN0ZW0gY2FsbGJhY2tzCisKK1N1YnN5c3RlbXMgbWF5IHdpc2ggdG8gY29uc2VydmUgY29kZSBzcGFjZSBieSB1c2luZyB0aGUgc2V0IG9mIGdlbmVyaWMgcG93ZXIKK21hbmFnZW1lbnQgY2FsbGJhY2tzIHByb3ZpZGVkIGJ5IHRoZSBQTSBjb3JlLCBkZWZpbmVkIGluCitkcml2ZXIvYmFzZS9wb3dlci9nZW5lcmljX29wcy5jOgorCisgIGludCBwbV9nZW5lcmljX3J1bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpOworICAgIC0gaW52b2tlIHRoZSAtPnJ1bnRpbWVfc3VzcGVuZCgpIGNhbGxiYWNrIHByb3ZpZGVkIGJ5IHRoZSBkcml2ZXIgb2YgdGhpcworICAgICAgZGV2aWNlIGFuZCByZXR1cm4gaXRzIHJlc3VsdCwgb3IgcmV0dXJuIDAgaWYgbm90IGRlZmluZWQKKworICBpbnQgcG1fZ2VuZXJpY19ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpOworICAgIC0gaW52b2tlIHRoZSAtPnJ1bnRpbWVfcmVzdW1lKCkgY2FsbGJhY2sgcHJvdmlkZWQgYnkgdGhlIGRyaXZlciBvZiB0aGlzCisgICAgICBkZXZpY2UgYW5kIHJldHVybiBpdHMgcmVzdWx0LCBvciByZXR1cm4gMCBpZiBub3QgZGVmaW5lZAorCisgIGludCBwbV9nZW5lcmljX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KTsKKyAgICAtIGlmIHRoZSBkZXZpY2UgaGFzIG5vdCBiZWVuIHN1c3BlbmRlZCBhdCBydW4gdGltZSwgaW52b2tlIHRoZSAtPnN1c3BlbmQoKQorICAgICAgY2FsbGJhY2sgcHJvdmlkZWQgYnkgaXRzIGRyaXZlciBhbmQgcmV0dXJuIGl0cyByZXN1bHQsIG9yIHJldHVybiAwIGlmIG5vdAorICAgICAgZGVmaW5lZAorCisgIGludCBwbV9nZW5lcmljX3N1c3BlbmRfbm9pcnEoc3RydWN0IGRldmljZSAqZGV2KTsKKyAgICAtIGlmIHBtX3J1bnRpbWVfc3VzcGVuZGVkKGRldikgcmV0dXJucyAiZmFsc2UiLCBpbnZva2UgdGhlIC0+c3VzcGVuZF9ub2lycSgpCisgICAgICBjYWxsYmFjayBwcm92aWRlZCBieSB0aGUgZGV2aWNlJ3MgZHJpdmVyIGFuZCByZXR1cm4gaXRzIHJlc3VsdCwgb3IgcmV0dXJuCisgICAgICAwIGlmIG5vdCBkZWZpbmVkCisKKyAgaW50IHBtX2dlbmVyaWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldik7CisgICAgLSBpbnZva2UgdGhlIC0+cmVzdW1lKCkgY2FsbGJhY2sgcHJvdmlkZWQgYnkgdGhlIGRyaXZlciBvZiB0aGlzIGRldmljZSBhbmQsCisgICAgICBpZiBzdWNjZXNzZnVsLCBjaGFuZ2UgdGhlIGRldmljZSdzIHJ1bnRpbWUgUE0gc3RhdHVzIHRvICdhY3RpdmUnCisKKyAgaW50IHBtX2dlbmVyaWNfcmVzdW1lX25vaXJxKHN0cnVjdCBkZXZpY2UgKmRldik7CisgICAgLSBpbnZva2UgdGhlIC0+cmVzdW1lX25vaXJxKCkgY2FsbGJhY2sgcHJvdmlkZWQgYnkgdGhlIGRyaXZlciBvZiB0aGlzIGRldmljZQorCisgIGludCBwbV9nZW5lcmljX2ZyZWV6ZShzdHJ1Y3QgZGV2aWNlICpkZXYpOworICAgIC0gaWYgdGhlIGRldmljZSBoYXMgbm90IGJlZW4gc3VzcGVuZGVkIGF0IHJ1biB0aW1lLCBpbnZva2UgdGhlIC0+ZnJlZXplKCkKKyAgICAgIGNhbGxiYWNrIHByb3ZpZGVkIGJ5IGl0cyBkcml2ZXIgYW5kIHJldHVybiBpdHMgcmVzdWx0LCBvciByZXR1cm4gMCBpZiBub3QKKyAgICAgIGRlZmluZWQKKworICBpbnQgcG1fZ2VuZXJpY19mcmVlemVfbm9pcnEoc3RydWN0IGRldmljZSAqZGV2KTsKKyAgICAtIGlmIHBtX3J1bnRpbWVfc3VzcGVuZGVkKGRldikgcmV0dXJucyAiZmFsc2UiLCBpbnZva2UgdGhlIC0+ZnJlZXplX25vaXJxKCkKKyAgICAgIGNhbGxiYWNrIHByb3ZpZGVkIGJ5IHRoZSBkZXZpY2UncyBkcml2ZXIgYW5kIHJldHVybiBpdHMgcmVzdWx0LCBvciByZXR1cm4KKyAgICAgIDAgaWYgbm90IGRlZmluZWQKKworICBpbnQgcG1fZ2VuZXJpY190aGF3KHN0cnVjdCBkZXZpY2UgKmRldik7CisgICAgLSBpZiB0aGUgZGV2aWNlIGhhcyBub3QgYmVlbiBzdXNwZW5kZWQgYXQgcnVuIHRpbWUsIGludm9rZSB0aGUgLT50aGF3KCkKKyAgICAgIGNhbGxiYWNrIHByb3ZpZGVkIGJ5IGl0cyBkcml2ZXIgYW5kIHJldHVybiBpdHMgcmVzdWx0LCBvciByZXR1cm4gMCBpZiBub3QKKyAgICAgIGRlZmluZWQKKworICBpbnQgcG1fZ2VuZXJpY190aGF3X25vaXJxKHN0cnVjdCBkZXZpY2UgKmRldik7CisgICAgLSBpZiBwbV9ydW50aW1lX3N1c3BlbmRlZChkZXYpIHJldHVybnMgImZhbHNlIiwgaW52b2tlIHRoZSAtPnRoYXdfbm9pcnEoKQorICAgICAgY2FsbGJhY2sgcHJvdmlkZWQgYnkgdGhlIGRldmljZSdzIGRyaXZlciBhbmQgcmV0dXJuIGl0cyByZXN1bHQsIG9yIHJldHVybgorICAgICAgMCBpZiBub3QgZGVmaW5lZAorCisgIGludCBwbV9nZW5lcmljX3Bvd2Vyb2ZmKHN0cnVjdCBkZXZpY2UgKmRldik7CisgICAgLSBpZiB0aGUgZGV2aWNlIGhhcyBub3QgYmVlbiBzdXNwZW5kZWQgYXQgcnVuIHRpbWUsIGludm9rZSB0aGUgLT5wb3dlcm9mZigpCisgICAgICBjYWxsYmFjayBwcm92aWRlZCBieSBpdHMgZHJpdmVyIGFuZCByZXR1cm4gaXRzIHJlc3VsdCwgb3IgcmV0dXJuIDAgaWYgbm90CisgICAgICBkZWZpbmVkCisKKyAgaW50IHBtX2dlbmVyaWNfcG93ZXJvZmZfbm9pcnEoc3RydWN0IGRldmljZSAqZGV2KTsKKyAgICAtIGlmIHBtX3J1bnRpbWVfc3VzcGVuZGVkKGRldikgcmV0dXJucyAiZmFsc2UiLCBydW4gdGhlIC0+cG93ZXJvZmZfbm9pcnEoKQorICAgICAgY2FsbGJhY2sgcHJvdmlkZWQgYnkgdGhlIGRldmljZSdzIGRyaXZlciBhbmQgcmV0dXJuIGl0cyByZXN1bHQsIG9yIHJldHVybgorICAgICAgMCBpZiBub3QgZGVmaW5lZAorCisgIGludCBwbV9nZW5lcmljX3Jlc3RvcmUoc3RydWN0IGRldmljZSAqZGV2KTsKKyAgICAtIGludm9rZSB0aGUgLT5yZXN0b3JlKCkgY2FsbGJhY2sgcHJvdmlkZWQgYnkgdGhlIGRyaXZlciBvZiB0aGlzIGRldmljZSBhbmQsCisgICAgICBpZiBzdWNjZXNzZnVsLCBjaGFuZ2UgdGhlIGRldmljZSdzIHJ1bnRpbWUgUE0gc3RhdHVzIHRvICdhY3RpdmUnCisKKyAgaW50IHBtX2dlbmVyaWNfcmVzdG9yZV9ub2lycShzdHJ1Y3QgZGV2aWNlICpkZXYpOworICAgIC0gaW52b2tlIHRoZSAtPnJlc3RvcmVfbm9pcnEoKSBjYWxsYmFjayBwcm92aWRlZCBieSB0aGUgZGV2aWNlJ3MgZHJpdmVyCisKK1RoZXNlIGZ1bmN0aW9ucyBhcmUgdGhlIGRlZmF1bHRzIHVzZWQgYnkgdGhlIFBNIGNvcmUsIGlmIGEgc3Vic3lzdGVtIGRvZXNuJ3QKK3Byb3ZpZGUgaXRzIG93biBjYWxsYmFja3MgZm9yIC0+cnVudGltZV9pZGxlKCksIC0+cnVudGltZV9zdXNwZW5kKCksCistPnJ1bnRpbWVfcmVzdW1lKCksIC0+c3VzcGVuZCgpLCAtPnN1c3BlbmRfbm9pcnEoKSwgLT5yZXN1bWUoKSwKKy0+cmVzdW1lX25vaXJxKCksIC0+ZnJlZXplKCksIC0+ZnJlZXplX25vaXJxKCksIC0+dGhhdygpLCAtPnRoYXdfbm9pcnEoKSwKKy0+cG93ZXJvZmYoKSwgLT5wb3dlcm9mZl9ub2lycSgpLCAtPnJlc3RvcmUoKSwgLT5yZXN0b3JlX25vaXJxKCkgaW4gdGhlCitzdWJzeXN0ZW0tbGV2ZWwgZGV2X3BtX29wcyBzdHJ1Y3R1cmUuCisKK0RldmljZSBkcml2ZXJzIHRoYXQgd2lzaCB0byB1c2UgdGhlIHNhbWUgZnVuY3Rpb24gYXMgYSBzeXN0ZW0gc3VzcGVuZCwgZnJlZXplLAorcG93ZXJvZmYgYW5kIHJ1bnRpbWUgc3VzcGVuZCBjYWxsYmFjaywgYW5kIHNpbWlsYXJseSBmb3Igc3lzdGVtIHJlc3VtZSwgdGhhdywKK3Jlc3RvcmUsIGFuZCBydW50aW1lIHJlc3VtZSwgY2FuIGFjaGlldmUgdGhpcyB3aXRoIHRoZSBoZWxwIG9mIHRoZQorVU5JVkVSU0FMX0RFVl9QTV9PUFMgbWFjcm8gZGVmaW5lZCBpbiBpbmNsdWRlL2xpbnV4L3BtLmggKHBvc3NpYmx5IHNldHRpbmcgaXRzCitsYXN0IGFyZ3VtZW50IHRvIE5VTEwpLgorCis4LiAiTm8tQ2FsbGJhY2siIERldmljZXMKKworU29tZSAiZGV2aWNlcyIgYXJlIG9ubHkgbG9naWNhbCBzdWItZGV2aWNlcyBvZiB0aGVpciBwYXJlbnQgYW5kIGNhbm5vdCBiZQorcG93ZXItbWFuYWdlZCBvbiB0aGVpciBvd24uICAoVGhlIHByb3RvdHlwZSBleGFtcGxlIGlzIGEgVVNCIGludGVyZmFjZS4gIEVudGlyZQorVVNCIGRldmljZXMgY2FuIGdvIGludG8gbG93LXBvd2VyIG1vZGUgb3Igc2VuZCB3YWtlLXVwIHJlcXVlc3RzLCBidXQgbmVpdGhlciBpcworcG9zc2libGUgZm9yIGluZGl2aWR1YWwgaW50ZXJmYWNlcy4pICBUaGUgZHJpdmVycyBmb3IgdGhlc2UgZGV2aWNlcyBoYXZlIG5vCituZWVkIG9mIHJ1bnRpbWUgUE0gY2FsbGJhY2tzOyBpZiB0aGUgY2FsbGJhY2tzIGRpZCBleGlzdCwgLT5ydW50aW1lX3N1c3BlbmQoKQorYW5kIC0+cnVudGltZV9yZXN1bWUoKSB3b3VsZCBhbHdheXMgcmV0dXJuIDAgd2l0aG91dCBkb2luZyBhbnl0aGluZyBlbHNlIGFuZAorLT5ydW50aW1lX2lkbGUoKSB3b3VsZCBhbHdheXMgY2FsbCBwbV9ydW50aW1lX3N1c3BlbmQoKS4KKworU3Vic3lzdGVtcyBjYW4gdGVsbCB0aGUgUE0gY29yZSBhYm91dCB0aGVzZSBkZXZpY2VzIGJ5IGNhbGxpbmcKK3BtX3J1bnRpbWVfbm9fY2FsbGJhY2tzKCkuICBUaGlzIHNob3VsZCBiZSBkb25lIGFmdGVyIHRoZSBkZXZpY2Ugc3RydWN0dXJlIGlzCitpbml0aWFsaXplZCBhbmQgYmVmb3JlIGl0IGlzIHJlZ2lzdGVyZWQgKGFsdGhvdWdoIGFmdGVyIGRldmljZSByZWdpc3RyYXRpb24gaXMKK2Fsc28gb2theSkuICBUaGUgcm91dGluZSB3aWxsIHNldCB0aGUgZGV2aWNlJ3MgcG93ZXIubm9fY2FsbGJhY2tzIGZsYWcgYW5kCitwcmV2ZW50IHRoZSBub24tZGVidWdnaW5nIHJ1bnRpbWUgUE0gc3lzZnMgYXR0cmlidXRlcyBmcm9tIGJlaW5nIGNyZWF0ZWQuCisKK1doZW4gcG93ZXIubm9fY2FsbGJhY2tzIGlzIHNldCwgdGhlIFBNIGNvcmUgd2lsbCBub3QgaW52b2tlIHRoZQorLT5ydW50aW1lX2lkbGUoKSwgLT5ydW50aW1lX3N1c3BlbmQoKSwgb3IgLT5ydW50aW1lX3Jlc3VtZSgpIGNhbGxiYWNrcy4KK0luc3RlYWQgaXQgd2lsbCBhc3N1bWUgdGhhdCBzdXNwZW5kcyBhbmQgcmVzdW1lcyBhbHdheXMgc3VjY2VlZCBhbmQgdGhhdCBpZGxlCitkZXZpY2VzIHNob3VsZCBiZSBzdXNwZW5kZWQuCisKK0FzIGEgY29uc2VxdWVuY2UsIHRoZSBQTSBjb3JlIHdpbGwgbmV2ZXIgZGlyZWN0bHkgaW5mb3JtIHRoZSBkZXZpY2UncyBzdWJzeXN0ZW0KK29yIGRyaXZlciBhYm91dCBydW50aW1lIHBvd2VyIGNoYW5nZXMuICBJbnN0ZWFkLCB0aGUgZHJpdmVyIGZvciB0aGUgZGV2aWNlJ3MKK3BhcmVudCBtdXN0IHRha2UgcmVzcG9uc2liaWxpdHkgZm9yIHRlbGxpbmcgdGhlIGRldmljZSdzIGRyaXZlciB3aGVuIHRoZQorcGFyZW50J3MgcG93ZXIgc3RhdGUgY2hhbmdlcy4KKworOS4gQXV0b3N1c3BlbmQsIG9yIGF1dG9tYXRpY2FsbHktZGVsYXllZCBzdXNwZW5kcworCitDaGFuZ2luZyBhIGRldmljZSdzIHBvd2VyIHN0YXRlIGlzbid0IGZyZWU7IGl0IHJlcXVpcmVzIGJvdGggdGltZSBhbmQgZW5lcmd5LgorQSBkZXZpY2Ugc2hvdWxkIGJlIHB1dCBpbiBhIGxvdy1wb3dlciBzdGF0ZSBvbmx5IHdoZW4gdGhlcmUncyBzb21lIHJlYXNvbiB0bwordGhpbmsgaXQgd2lsbCByZW1haW4gaW4gdGhhdCBzdGF0ZSBmb3IgYSBzdWJzdGFudGlhbCB0aW1lLiAgQSBjb21tb24gaGV1cmlzdGljCitzYXlzIHRoYXQgYSBkZXZpY2Ugd2hpY2ggaGFzbid0IGJlZW4gdXNlZCBmb3IgYSB3aGlsZSBpcyBsaWFibGUgdG8gcmVtYWluCit1bnVzZWQ7IGZvbGxvd2luZyB0aGlzIGFkdmljZSwgZHJpdmVycyBzaG91bGQgbm90IGFsbG93IGRldmljZXMgdG8gYmUgc3VzcGVuZGVkCithdCBydW50aW1lIHVudGlsIHRoZXkgaGF2ZSBiZWVuIGluYWN0aXZlIGZvciBzb21lIG1pbmltdW0gcGVyaW9kLiAgRXZlbiB3aGVuCit0aGUgaGV1cmlzdGljIGVuZHMgdXAgYmVpbmcgbm9uLW9wdGltYWwsIGl0IHdpbGwgc3RpbGwgcHJldmVudCBkZXZpY2VzIGZyb20KKyJib3VuY2luZyIgdG9vIHJhcGlkbHkgYmV0d2VlbiBsb3ctcG93ZXIgYW5kIGZ1bGwtcG93ZXIgc3RhdGVzLgorCitUaGUgdGVybSAiYXV0b3N1c3BlbmQiIGlzIGFuIGhpc3RvcmljYWwgcmVtbmFudC4gIEl0IGRvZXNuJ3QgbWVhbiB0aGF0IHRoZQorZGV2aWNlIGlzIGF1dG9tYXRpY2FsbHkgc3VzcGVuZGVkICh0aGUgc3Vic3lzdGVtIG9yIGRyaXZlciBzdGlsbCBoYXMgdG8gY2FsbAordGhlIGFwcHJvcHJpYXRlIFBNIHJvdXRpbmVzKTsgcmF0aGVyIGl0IG1lYW5zIHRoYXQgcnVudGltZSBzdXNwZW5kcyB3aWxsCithdXRvbWF0aWNhbGx5IGJlIGRlbGF5ZWQgdW50aWwgdGhlIGRlc2lyZWQgcGVyaW9kIG9mIGluYWN0aXZpdHkgaGFzIGVsYXBzZWQuCisKK0luYWN0aXZpdHkgaXMgZGV0ZXJtaW5lZCBiYXNlZCBvbiB0aGUgcG93ZXIubGFzdF9idXN5IGZpZWxkLiAgRHJpdmVycyBzaG91bGQKK2NhbGwgcG1fcnVudGltZV9tYXJrX2xhc3RfYnVzeSgpIHRvIHVwZGF0ZSB0aGlzIGZpZWxkIGFmdGVyIGNhcnJ5aW5nIG91dCBJL08sCit0eXBpY2FsbHkganVzdCBiZWZvcmUgY2FsbGluZyBwbV9ydW50aW1lX3B1dF9hdXRvc3VzcGVuZCgpLiAgVGhlIGRlc2lyZWQgbGVuZ3RoCitvZiB0aGUgaW5hY3Rpdml0eSBwZXJpb2QgaXMgYSBtYXR0ZXIgb2YgcG9saWN5LiAgU3Vic3lzdGVtcyBjYW4gc2V0IHRoaXMgbGVuZ3RoCitpbml0aWFsbHkgYnkgY2FsbGluZyBwbV9ydW50aW1lX3NldF9hdXRvc3VzcGVuZF9kZWxheSgpLCBidXQgYWZ0ZXIgZGV2aWNlCityZWdpc3RyYXRpb24gdGhlIGxlbmd0aCBzaG91bGQgYmUgY29udHJvbGxlZCBieSB1c2VyIHNwYWNlLCB1c2luZyB0aGUKKy9zeXMvZGV2aWNlcy8uLi4vcG93ZXIvYXV0b3N1c3BlbmRfZGVsYXlfbXMgYXR0cmlidXRlLgorCitJbiBvcmRlciB0byB1c2UgYXV0b3N1c3BlbmQsIHN1YnN5c3RlbXMgb3IgZHJpdmVycyBtdXN0IGNhbGwKK3BtX3J1bnRpbWVfdXNlX2F1dG9zdXNwZW5kKCkgKHByZWZlcmFibHkgYmVmb3JlIHJlZ2lzdGVyaW5nIHRoZSBkZXZpY2UpLCBhbmQKK3RoZXJlYWZ0ZXIgdGhleSBzaG91bGQgdXNlIHRoZSB2YXJpb3VzICpfYXV0b3N1c3BlbmQoKSBoZWxwZXIgZnVuY3Rpb25zIGluc3RlYWQKK29mIHRoZSBub24tYXV0b3N1c3BlbmQgY291bnRlcnBhcnRzOgorCisJSW5zdGVhZCBvZjogcG1fcnVudGltZV9zdXNwZW5kICAgIHVzZTogcG1fcnVudGltZV9hdXRvc3VzcGVuZDsKKwlJbnN0ZWFkIG9mOiBwbV9zY2hlZHVsZV9zdXNwZW5kICAgdXNlOiBwbV9yZXF1ZXN0X2F1dG9zdXNwZW5kOworCUluc3RlYWQgb2Y6IHBtX3J1bnRpbWVfcHV0ICAgICAgICB1c2U6IHBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kOworCUluc3RlYWQgb2Y6IHBtX3J1bnRpbWVfcHV0X3N5bmMgICB1c2U6IHBtX3J1bnRpbWVfcHV0X3N5bmNfYXV0b3N1c3BlbmQuCisKK0RyaXZlcnMgbWF5IGFsc28gY29udGludWUgdG8gdXNlIHRoZSBub24tYXV0b3N1c3BlbmQgaGVscGVyIGZ1bmN0aW9uczsgdGhleQord2lsbCBiZWhhdmUgbm9ybWFsbHksIG5vdCB0YWtpbmcgdGhlIGF1dG9zdXNwZW5kIGRlbGF5IGludG8gYWNjb3VudC4KK1NpbWlsYXJseSwgaWYgdGhlIHBvd2VyLnVzZV9hdXRvc3VzcGVuZCBmaWVsZCBpc24ndCBzZXQgdGhlbiB0aGUgYXV0b3N1c3BlbmQKK2hlbHBlciBmdW5jdGlvbnMgd2lsbCBiZWhhdmUganVzdCBsaWtlIHRoZSBub24tYXV0b3N1c3BlbmQgY291bnRlcnBhcnRzLgorCitVbmRlciBzb21lIGNpcmN1bXN0YW5jZXMgYSBkcml2ZXIgb3Igc3Vic3lzdGVtIG1heSB3YW50IHRvIHByZXZlbnQgYSBkZXZpY2UKK2Zyb20gYXV0b3N1c3BlbmRpbmcgaW1tZWRpYXRlbHksIGV2ZW4gdGhvdWdoIHRoZSB1c2FnZSBjb3VudGVyIGlzIHplcm8gYW5kIHRoZQorYXV0b3N1c3BlbmQgZGVsYXkgdGltZSBoYXMgZXhwaXJlZC4gIElmIHRoZSAtPnJ1bnRpbWVfc3VzcGVuZCgpIGNhbGxiYWNrCityZXR1cm5zIC1FQUdBSU4gb3IgLUVCVVNZLCBhbmQgaWYgdGhlIG5leHQgYXV0b3N1c3BlbmQgZGVsYXkgZXhwaXJhdGlvbiB0aW1lIGlzCitpbiB0aGUgZnV0dXJlIChhcyBpdCBub3JtYWxseSB3b3VsZCBiZSBpZiB0aGUgY2FsbGJhY2sgaW52b2tlZAorcG1fcnVudGltZV9tYXJrX2xhc3RfYnVzeSgpKSwgdGhlIFBNIGNvcmUgd2lsbCBhdXRvbWF0aWNhbGx5IHJlc2NoZWR1bGUgdGhlCithdXRvc3VzcGVuZC4gIFRoZSAtPnJ1bnRpbWVfc3VzcGVuZCgpIGNhbGxiYWNrIGNhbid0IGRvIHRoaXMgcmVzY2hlZHVsaW5nCitpdHNlbGYgYmVjYXVzZSBubyBzdXNwZW5kIHJlcXVlc3RzIG9mIGFueSBraW5kIGFyZSBhY2NlcHRlZCB3aGlsZSB0aGUgZGV2aWNlIGlzCitzdXNwZW5kaW5nIChpLmUuLCB3aGlsZSB0aGUgY2FsbGJhY2sgaXMgcnVubmluZykuCisKK1RoZSBpbXBsZW1lbnRhdGlvbiBpcyB3ZWxsIHN1aXRlZCBmb3IgYXN5bmNocm9ub3VzIHVzZSBpbiBpbnRlcnJ1cHQgY29udGV4dHMuCitIb3dldmVyIHN1Y2ggdXNlIGluZXZpdGFibHkgaW52b2x2ZXMgcmFjZXMsIGJlY2F1c2UgdGhlIFBNIGNvcmUgY2FuJ3QKK3N5bmNocm9uaXplIC0+cnVudGltZV9zdXNwZW5kKCkgY2FsbGJhY2tzIHdpdGggdGhlIGFycml2YWwgb2YgSS9PIHJlcXVlc3RzLgorVGhpcyBzeW5jaHJvbml6YXRpb24gbXVzdCBiZSBoYW5kbGVkIGJ5IHRoZSBkcml2ZXIsIHVzaW5nIGl0cyBwcml2YXRlIGxvY2suCitIZXJlIGlzIGEgc2NoZW1hdGljIHBzZXVkby1jb2RlIGV4YW1wbGU6CisKKwlmb29fcmVhZF9vcl93cml0ZShzdHJ1Y3QgZm9vX3ByaXYgKmZvbywgdm9pZCAqZGF0YSkKKwl7CisJCWxvY2soJmZvby0+cHJpdmF0ZV9sb2NrKTsKKwkJYWRkX3JlcXVlc3RfdG9faW9fcXVldWUoZm9vLCBkYXRhKTsKKwkJaWYgKGZvby0+bnVtX3BlbmRpbmdfcmVxdWVzdHMrKyA9PSAwKQorCQkJcG1fcnVudGltZV9nZXQoJmZvby0+ZGV2KTsKKwkJaWYgKCFmb28tPmlzX3N1c3BlbmRlZCkKKwkJCWZvb19wcm9jZXNzX25leHRfcmVxdWVzdChmb28pOworCQl1bmxvY2soJmZvby0+cHJpdmF0ZV9sb2NrKTsKKwl9CisKKwlmb29faW9fY29tcGxldGlvbihzdHJ1Y3QgZm9vX3ByaXYgKmZvbywgdm9pZCAqcmVxKQorCXsKKwkJbG9jaygmZm9vLT5wcml2YXRlX2xvY2spOworCQlpZiAoLS1mb28tPm51bV9wZW5kaW5nX3JlcXVlc3RzID09IDApIHsKKwkJCXBtX3J1bnRpbWVfbWFya19sYXN0X2J1c3koJmZvby0+ZGV2KTsKKwkJCXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKCZmb28tPmRldik7CisJCX0gZWxzZSB7CisJCQlmb29fcHJvY2Vzc19uZXh0X3JlcXVlc3QoZm9vKTsKKwkJfQorCQl1bmxvY2soJmZvby0+cHJpdmF0ZV9sb2NrKTsKKwkJLyogU2VuZCByZXEgcmVzdWx0IGJhY2sgdG8gdGhlIHVzZXIgLi4uICovCisJfQorCisJaW50IGZvb19ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQorCXsKKwkJc3RydWN0IGZvb19wcml2IGZvbyA9IGNvbnRhaW5lcl9vZihkZXYsIC4uLik7CisJCWludCByZXQgPSAwOworCisJCWxvY2soJmZvby0+cHJpdmF0ZV9sb2NrKTsKKwkJaWYgKGZvby0+bnVtX3BlbmRpbmdfcmVxdWVzdHMgPiAwKSB7CisJCQlyZXQgPSAtRUJVU1k7CisJCX0gZWxzZSB7CisJCQkvKiAuLi4gc3VzcGVuZCB0aGUgZGV2aWNlIC4uLiAqLworCQkJZm9vLT5pc19zdXNwZW5kZWQgPSAxOworCQl9CisJCXVubG9jaygmZm9vLT5wcml2YXRlX2xvY2spOworCQlyZXR1cm4gcmV0OworCX0KKworCWludCBmb29fcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQorCXsKKwkJc3RydWN0IGZvb19wcml2IGZvbyA9IGNvbnRhaW5lcl9vZihkZXYsIC4uLik7CisKKwkJbG9jaygmZm9vLT5wcml2YXRlX2xvY2spOworCQkvKiAuLi4gcmVzdW1lIHRoZSBkZXZpY2UgLi4uICovCisJCWZvby0+aXNfc3VzcGVuZGVkID0gMDsKKwkJcG1fcnVudGltZV9tYXJrX2xhc3RfYnVzeSgmZm9vLT5kZXYpOworCQlpZiAoZm9vLT5udW1fcGVuZGluZ19yZXF1ZXN0cyA+IDApCisJCQlmb29fcHJvY2Vzc19uZXh0X3JlcXVlc3QoZm9vKTsKKwkJdW5sb2NrKCZmb28tPnByaXZhdGVfbG9jayk7CisJCXJldHVybiAwOworCX0KKworVGhlIGltcG9ydGFudCBwb2ludCBpcyB0aGF0IGFmdGVyIGZvb19pb19jb21wbGV0aW9uKCkgYXNrcyBmb3IgYW4gYXV0b3N1c3BlbmQsCit0aGUgZm9vX3J1bnRpbWVfc3VzcGVuZCgpIGNhbGxiYWNrIG1heSByYWNlIHdpdGggZm9vX3JlYWRfb3Jfd3JpdGUoKS4KK1RoZXJlZm9yZSBmb29fcnVudGltZV9zdXNwZW5kKCkgaGFzIHRvIGNoZWNrIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBwZW5kaW5nIEkvTworcmVxdWVzdHMgKHdoaWxlIGhvbGRpbmcgdGhlIHByaXZhdGUgbG9jaykgYmVmb3JlIGFsbG93aW5nIHRoZSBzdXNwZW5kIHRvCitwcm9jZWVkLgorCitJbiBhZGRpdGlvbiwgdGhlIHBvd2VyLmF1dG9zdXNwZW5kX2RlbGF5IGZpZWxkIGNhbiBiZSBjaGFuZ2VkIGJ5IHVzZXIgc3BhY2UgYXQKK2FueSB0aW1lLiAgSWYgYSBkcml2ZXIgY2FyZXMgYWJvdXQgdGhpcywgaXQgY2FuIGNhbGwKK3BtX3J1bnRpbWVfYXV0b3N1c3BlbmRfZXhwaXJhdGlvbigpIGZyb20gd2l0aGluIHRoZSAtPnJ1bnRpbWVfc3VzcGVuZCgpCitjYWxsYmFjayB3aGlsZSBob2xkaW5nIGl0cyBwcml2YXRlIGxvY2suICBJZiB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIG5vbnplcm8KK3ZhbHVlIHRoZW4gdGhlIGRlbGF5IGhhcyBub3QgeWV0IGV4cGlyZWQgYW5kIHRoZSBjYWxsYmFjayBzaG91bGQgcmV0dXJuCistRUFHQUlOLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlci9zMnJhbS50eHQgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL3MycmFtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Njg1YWVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci9zMnJhbS50eHQKQEAgLTAsMCArMSw4NSBAQAorCQkJSG93IHRvIGdldCBzMnJhbSB3b3JraW5nCisJCQl+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJCTIwMDYgTGludXMgVG9ydmFsZHMKKwkJCTIwMDYgUGF2ZWwgTWFjaGVrCisKKzEpIENoZWNrIHN1c3BlbmQuc2YubmV0LCBwcm9ncmFtIHMycmFtIHRoZXJlIGhhcyBsb25nIHdoaXRlbGlzdCBvZgorICAgImtub3duIG9rIiBtYWNoaW5lcywgYWxvbmcgd2l0aCB0cmlja3MgdG8gdXNlIG9uIGVhY2ggb25lLgorCisyKSBJZiB0aGF0IGRvZXMgbm90IGhlbHAsIHRyeSByZWFkaW5nIHRyaWNrcy50eHQgYW5kCisgICB2aWRlby50eHQuIFBlcmhhcHMgcHJvYmxlbSBpcyBhcyBzaW1wbGUgYXMgYnJva2VuIG1vZHVsZSwgYW5kCisgICBzaW1wbGUgbW9kdWxlIHVubG9hZCBjYW4gZml4IGl0LgorCiszKSBZb3UgY2FuIHVzZSBMaW51cycgVFJBQ0VfUkVTVU1FIGluZnJhc3RydWN0dXJlLCBkZXNjcmliZWQgYmVsb3cuCisKKwkJICAgICAgVXNpbmcgVFJBQ0VfUkVTVU1FCisJCSAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fgorCitJJ3ZlIGJlZW4gd29ya2luZyBhdCBtYWtpbmcgdGhlIG1hY2hpbmVzIEkgaGF2ZSBhYmxlIHRvIFNUUiwgYW5kIGFsbW9zdAorYWx3YXlzIGl0J3MgYSBkcml2ZXIgdGhhdCBpcyBidWdneS4gVGhhbmsgR29kIGZvciB0aGUgc3VzcGVuZC9yZXN1bWUKK2RlYnVnZ2luZyAtIHRoZSB0aGluZyB0aGF0IENodWNrIHRyaWVkIHRvIGRpc2FibGUuIFRoYXQncyBvZnRlbiB0aGUgX29ubHlfCit3YXkgdG8gZGVidWcgdGhlc2UgdGhpbmdzLCBhbmQgaXQncyBhY3R1YWxseSBwcmV0dHkgcG93ZXJmdWwgKGJ1dAordGltZS1jb25zdW1pbmcgLSBoYXZpbmcgdG8gaW5zZXJ0IFRSQUNFX1JFU1VNRSgpIG1hcmtlcnMgaW50byB0aGUgZGV2aWNlCitkcml2ZXIgdGhhdCBkb2Vzbid0IHJlc3VtZSBhbmQgcmVjb21waWxlIGFuZCByZWJvb3QpLgorCitBbnl3YXksIHRoZSB3YXkgdG8gZGVidWcgdGhpcyBmb3IgcGVvcGxlIHdobyBhcmUgaW50ZXJlc3RlZCAoaGF2ZSBhCittYWNoaW5lIHRoYXQgZG9lc24ndCBib290KSBpczoKKworIC0gZW5hYmxlIFBNX0RFQlVHLCBhbmQgUE1fVFJBQ0UKKworIC0gdXNlIGEgc2NyaXB0IGxpa2UgdGhpczoKKworCSMhL2Jpbi9zaAorCXN5bmMKKwllY2hvIDEgPiAvc3lzL3Bvd2VyL3BtX3RyYWNlCisJZWNobyBtZW0gPiAvc3lzL3Bvd2VyL3N0YXRlCisKKyAgIHRvIHN1c3BlbmQKKworIC0gaWYgaXQgZG9lc24ndCBjb21lIGJhY2sgdXAgKHdoaWNoIGlzIHVzdWFsbHkgdGhlIHByb2JsZW0pLCByZWJvb3QgYnkKKyAgIGhvbGRpbmcgdGhlIHBvd2VyIGJ1dHRvbiBkb3duLCBhbmQgbG9vayBhdCB0aGUgZG1lc2cgb3V0cHV0IGZvciB0aGluZ3MKKyAgIGxpa2UKKworCU1hZ2ljIG51bWJlcjogNDoxNTY6NzI1CisJaGFzaCBtYXRjaGVzIGRyaXZlcnMvYmFzZS9wb3dlci9yZXN1bWUuYzoyOAorCWhhc2ggbWF0Y2hlcyBkZXZpY2UgMDAwMDowMTowMC4wCisKKyAgIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGxhc3QgdHJhY2UgZXZlbnQgd2FzIGp1c3QgYmVmb3JlIHRyeWluZyB0byByZXN1bWUKKyAgIGRldmljZSAwMDAwOjAxOjAwLjAuIFRoZW4gZmlndXJlIG91dCB3aGF0IGRyaXZlciBpcyBjb250cm9sbGluZyB0aGF0CisgICBkZXZpY2UgKGxzcGNpIGFuZCAvc3lzL2RldmljZXMvcGNpKiBpcyB5b3VyIGZyaWVuZCksIGFuZCBzZWUgaWYgeW91IGNhbgorICAgZml4IGl0LCBkaXNhYmxlIGl0LCBvciB0cmFjZSBpbnRvIGl0cyByZXN1bWUgZnVuY3Rpb24uCisKKyAgIElmIG5vIGRldmljZSBtYXRjaGVzIHRoZSBoYXNoIChvciBhbnkgbWF0Y2hlcyBhcHBlYXIgdG8gYmUgZmFsc2UgcG9zaXRpdmVzKSwKKyAgIHRoZSBjdWxwcml0IG1heSBiZSBhIGRldmljZSBmcm9tIGEgbG9hZGFibGUga2VybmVsIG1vZHVsZSB0aGF0IGlzIG5vdCBsb2FkZWQKKyAgIHVudGlsIGFmdGVyIHRoZSBoYXNoIGlzIGNoZWNrZWQuIFlvdSBjYW4gY2hlY2sgdGhlIGhhc2ggYWdhaW5zdCB0aGUgY3VycmVudAorICAgZGV2aWNlcyBhZ2FpbiBhZnRlciBtb3JlIG1vZHVsZXMgYXJlIGxvYWRlZCB1c2luZyBzeXNmczoKKworCWNhdCAvc3lzL3Bvd2VyL3BtX3RyYWNlX2Rldl9tYXRjaAorCitGb3IgZXhhbXBsZSwgdGhlIGFib3ZlIGhhcHBlbnMgdG8gYmUgdGhlIFZHQSBkZXZpY2Ugb24gbXkgRVZPLCB3aGljaCBJCit1c2VkIHRvIHJ1biB3aXRoICJyYWRlb25mYiIgKGl0J3MgYW4gQVRJIFJhZGVvbiBtb2JpbGl0eSkuIEl0IHR1cm5zIG91dAordGhhdCAicmFkZW9uZmIiIHNpbXBseSBjYW5ub3QgcmVzdW1lIHRoYXQgZGV2aWNlIC0gaXQgdHJpZXMgdG8gc2V0IHRoZQorUExMJ3MsIGFuZCBpdCBqdXN0IF9oYW5nc18uIFVzaW5nIHRoZSByZWd1bGFyIFZHQSBjb25zb2xlIGFuZCBsZXR0aW5nIFgKK3Jlc3VtZSBpdCBpbnN0ZWFkIHdvcmtzIGZpbmUuCisKK05PVEUKKz09PT0KK3BtX3RyYWNlIHVzZXMgdGhlIHN5c3RlbSdzIFJlYWwgVGltZSBDbG9jayAoUlRDKSB0byBzYXZlIHRoZSBtYWdpYyBudW1iZXIuCitSZWFzb24gZm9yIHRoaXMgaXMgdGhhdCB0aGUgUlRDIGlzIHRoZSBvbmx5IHJlbGlhYmx5IGF2YWlsYWJsZSBwaWVjZSBvZgoraGFyZHdhcmUgZHVyaW5nIHJlc3VtZSBvcGVyYXRpb25zIHdoZXJlIGEgdmFsdWUgY2FuIGJlIHNldCB0aGF0IHdpbGwKK3N1cnZpdmUgYSByZWJvb3QuCisKK3BtX3RyYWNlIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggYXN5bmNocm9ub3VzIHN1c3BlbmQsIHNvIGl0IHR1cm5zCithc3luY2hyb25vdXMgc3VzcGVuZCBvZmYgKHdoaWNoIG1heSB3b3JrIGFyb3VuZCB0aW1pbmcgb3IKK29yZGVyaW5nLXNlbnNpdGl2ZSBidWdzKS4KKworQ29uc2VxdWVuY2UgaXMgdGhhdCBhZnRlciBhIHJlc3VtZSAoZXZlbiBpZiBpdCBpcyBzdWNjZXNzZnVsKSB5b3VyIHN5c3RlbQorY2xvY2sgd2lsbCBoYXZlIGEgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgbWFnaWMgbnVtYmVyIGluc3RlYWQgb2YgdGhlCitjb3JyZWN0IGRhdGUvdGltZSEgSXQgaXMgdGhlcmVmb3JlIGFkdmlzYWJsZSB0byB1c2UgYSBwcm9ncmFtIGxpa2UgbnRwLWRhdGUKK29yIHJkYXRlIHRvIHJlc2V0IHRoZSBjb3JyZWN0IGRhdGUvdGltZSBmcm9tIGFuIGV4dGVybmFsIHRpbWUgc291cmNlIHdoZW4KK3VzaW5nIHRoaXMgdHJhY2Ugb3B0aW9uLgorCitBcyB0aGUgY2xvY2sga2VlcHMgdGlja2luZyBpdCBpcyBhbHNvIGVzc2VudGlhbCB0aGF0IHRoZSByZWJvb3QgaXMgZG9uZQorcXVpY2tseSBhZnRlciB0aGUgcmVzdW1lIGZhaWx1cmUuIFRoZSB0cmFjZSBvcHRpb24gZG9lcyBub3QgdXNlIHRoZSBzZWNvbmRzCitvciB0aGUgbG93IG9yZGVyIGJpdHMgb2YgdGhlIG1pbnV0ZXMgb2YgdGhlIFJUQywgYnV0IGEgdG9vIGxvbmcgZGVsYXkgd2lsbAorY29ycnVwdCB0aGUgbWFnaWMgdmFsdWUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL3N0YXRlcy50eHQgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL3N0YXRlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBmM2VmOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXIvc3RhdGVzLnR4dApAQCAtMCwwICsxLDEwOSBAQAorU3lzdGVtIFBvd2VyIE1hbmFnZW1lbnQgU2xlZXAgU3RhdGVzCisKKyhDKSAyMDE0IEludGVsIENvcnAuLCBSYWZhZWwgSi4gV3lzb2NraSA8cmFmYWVsLmoud3lzb2NraUBpbnRlbC5jb20+CisKK1RoZSBrZXJuZWwgc3VwcG9ydHMgdXAgdG8gZm91ciBzeXN0ZW0gc2xlZXAgc3RhdGVzIGdlbmVyaWNhbGx5LCBhbHRob3VnaCB0aHJlZQorb2YgdGhlbSBkZXBlbmQgb24gdGhlIHBsYXRmb3JtIHN1cHBvcnQgY29kZSB0byBpbXBsZW1lbnQgdGhlIGxvdy1sZXZlbCBkZXRhaWxzCitmb3IgZWFjaCBzdGF0ZS4KKworVGhlIHN0YXRlcyBhcmUgcmVwcmVzZW50ZWQgYnkgc3RyaW5ncyB0aGF0IGNhbiBiZSByZWFkIG9yIHdyaXR0ZW4gdG8gdGhlCisvc3lzL3Bvd2VyL3N0YXRlIGZpbGUuICBUaG9zZSBzdHJpbmdzIG1heSBiZSAibWVtIiwgInN0YW5kYnkiLCAiZnJlZXplIiBhbmQKKyJkaXNrIiwgd2hlcmUgdGhlIGxhc3Qgb25lIGFsd2F5cyByZXByZXNlbnRzIGhpYmVybmF0aW9uIChTdXNwZW5kLVRvLURpc2spIGFuZAordGhlIG1lYW5pbmcgb2YgdGhlIHJlbWFpbmluZyBvbmVzIGRlcGVuZHMgb24gdGhlIHJlbGF0aXZlX3NsZWVwX3N0YXRlcyBjb21tYW5kCitsaW5lIGFyZ3VtZW50LgorCitGb3IgcmVsYXRpdmVfc2xlZXBfc3RhdGVzPTEsIHRoZSBzdHJpbmdzICJtZW0iLCAic3RhbmRieSIgYW5kICJmcmVlemUiIGxhYmVsIHRoZQorYXZhaWxhYmxlIG5vbi1oaWJlcm5hdGlvbiBzbGVlcCBzdGF0ZXMgZnJvbSB0aGUgZGVlcGVzdCB0byB0aGUgc2hhbGxvd2VzdCwKK3Jlc3BlY3RpdmVseS4gIEluIHRoYXQgY2FzZSwgIm1lbSIgaXMgYWx3YXlzIHByZXNlbnQgaW4gL3N5cy9wb3dlci9zdGF0ZSwKK2JlY2F1c2UgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIG5vbi1oaWJlcm5hdGlvbiBzbGVlcCBzdGF0ZSBpbiBldmVyeSBzeXN0ZW0uICBJZgordGhlIGdpdmVuIHN5c3RlbSBzdXBwb3J0cyB0d28gbm9uLWhpYmVybmF0aW9uIHNsZWVwIHN0YXRlcywgInN0YW5kYnkiIGlzIHByZXNlbnQKK2luIC9zeXMvcG93ZXIvc3RhdGUgaW4gYWRkaXRpb24gdG8gIm1lbSIuICBJZiB0aGUgc3lzdGVtIHN1cHBvcnRzIHRocmVlCitub24taGliZXJuYXRpb24gc2xlZXAgc3RhdGVzLCAiZnJlZXplIiB3aWxsIGJlIHByZXNlbnQgaW4gL3N5cy9wb3dlci9zdGF0ZSBpbgorYWRkaXRpb24gdG8gIm1lbSIgYW5kICJzdGFuZGJ5Ii4KKworRm9yIHJlbGF0aXZlX3NsZWVwX3N0YXRlcz0wLCB3aGljaCBpcyB0aGUgZGVmYXVsdCwgdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbnMKK2FwcGx5LgorCitzdGF0ZToJCVN1c3BlbmQtVG8tSWRsZQorQUNQSSBzdGF0ZToJUzAKK0xhYmVsOgkJImZyZWV6ZSIKKworVGhpcyBzdGF0ZSBpcyBhIGdlbmVyaWMsIHB1cmUgc29mdHdhcmUsIGxpZ2h0LXdlaWdodCwgc3lzdGVtIHNsZWVwIHN0YXRlLgorSXQgYWxsb3dzIG1vcmUgZW5lcmd5IHRvIGJlIHNhdmVkIHJlbGF0aXZlIHRvIHJ1bnRpbWUgaWRsZSBieSBmcmVlemluZyB1c2VyCitzcGFjZSBhbmQgcHV0dGluZyBhbGwgSS9PIGRldmljZXMgaW50byBsb3ctcG93ZXIgc3RhdGVzIChwb3NzaWJseQorbG93ZXItcG93ZXIgdGhhbiBhdmFpbGFibGUgYXQgcnVuIHRpbWUpLCBzdWNoIHRoYXQgdGhlIHByb2Nlc3NvcnMgY2FuCitzcGVuZCBtb3JlIHRpbWUgaW4gdGhlaXIgaWRsZSBzdGF0ZXMuCisKK1RoaXMgc3RhdGUgY2FuIGJlIHVzZWQgZm9yIHBsYXRmb3JtcyB3aXRob3V0IFBvd2VyLU9uIFN1c3BlbmQvU3VzcGVuZC10by1SQU0KK3N1cHBvcnQsIG9yIGl0IGNhbiBiZSB1c2VkIGluIGFkZGl0aW9uIHRvIFN1c3BlbmQtdG8tUkFNIChtZW1vcnkgc2xlZXApCit0byBwcm92aWRlIHJlZHVjZWQgcmVzdW1lIGxhdGVuY3kuICBJdCBpcyBhbHdheXMgc3VwcG9ydGVkLgorCisKK1N0YXRlOgkJU3RhbmRieSAvIFBvd2VyLU9uIFN1c3BlbmQKK0FDUEkgU3RhdGU6CVMxCitMYWJlbDoJCSJzdGFuZGJ5IgorCitUaGlzIHN0YXRlLCBpZiBzdXBwb3J0ZWQsIG9mZmVycyBtb2RlcmF0ZSwgdGhvdWdoIHJlYWwsIHBvd2VyIHNhdmluZ3MsIHdoaWxlCitwcm92aWRpbmcgYSByZWxhdGl2ZWx5IGxvdy1sYXRlbmN5IHRyYW5zaXRpb24gYmFjayB0byBhIHdvcmtpbmcgc3lzdGVtLiAgTm8KK29wZXJhdGluZyBzdGF0ZSBpcyBsb3N0ICh0aGUgQ1BVIHJldGFpbnMgcG93ZXIpLCBzbyB0aGUgc3lzdGVtIGVhc2lseSBzdGFydHMgdXAKK2FnYWluIHdoZXJlIGl0IGxlZnQgb2ZmLiAKKworSW4gYWRkaXRpb24gdG8gZnJlZXppbmcgdXNlciBzcGFjZSBhbmQgcHV0dGluZyBhbGwgSS9PIGRldmljZXMgaW50byBsb3ctcG93ZXIKK3N0YXRlcywgd2hpY2ggaXMgZG9uZSBmb3IgU3VzcGVuZC1Uby1JZGxlIHRvbywgbm9uYm9vdCBDUFVzIGFyZSB0YWtlbiBvZmZsaW5lCithbmQgYWxsIGxvdy1sZXZlbCBzeXN0ZW0gZnVuY3Rpb25zIGFyZSBzdXNwZW5kZWQgZHVyaW5nIHRyYW5zaXRpb25zIGludG8gdGhpcworc3RhdGUuICBGb3IgdGhpcyByZWFzb24sIGl0IHNob3VsZCBhbGxvdyBtb3JlIGVuZXJneSB0byBiZSBzYXZlZCByZWxhdGl2ZSB0bworU3VzcGVuZC1Uby1JZGxlLCBidXQgdGhlIHJlc3VtZSBsYXRlbmN5IHdpbGwgZ2VuZXJhbGx5IGJlIGdyZWF0ZXIgdGhhbiBmb3IgdGhhdAorc3RhdGUuCisKKworU3RhdGU6CQlTdXNwZW5kLXRvLVJBTQorQUNQSSBTdGF0ZToJUzMKK0xhYmVsOgkJIm1lbSIKKworVGhpcyBzdGF0ZSwgaWYgc3VwcG9ydGVkLCBvZmZlcnMgc2lnbmlmaWNhbnQgcG93ZXIgc2F2aW5ncyBhcyBldmVyeXRoaW5nIGluIHRoZQorc3lzdGVtIGlzIHB1dCBpbnRvIGEgbG93LXBvd2VyIHN0YXRlLCBleGNlcHQgZm9yIG1lbW9yeSwgd2hpY2ggc2hvdWxkIGJlIHBsYWNlZAoraW50byB0aGUgc2VsZi1yZWZyZXNoIG1vZGUgdG8gcmV0YWluIGl0cyBjb250ZW50cy4gIEFsbCBvZiB0aGUgc3RlcHMgY2FycmllZCBvdXQKK3doZW4gZW50ZXJpbmcgUG93ZXItT24gU3VzcGVuZCBhcmUgYWxzbyBjYXJyaWVkIG91dCBkdXJpbmcgdHJhbnNpdGlvbnMgdG8gU1RSLgorQWRkaXRpb25hbCBvcGVyYXRpb25zIG1heSB0YWtlIHBsYWNlIGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0gY2FwYWJpbGl0aWVzLiAgSW4KK3BhcnRpY3VsYXIsIG9uIEFDUEkgc3lzdGVtcyB0aGUga2VybmVsIHBhc3NlcyBjb250cm9sIHRvIHRoZSBCSU9TIChwbGF0Zm9ybQorZmlybXdhcmUpIGFzIHRoZSBsYXN0IHN0ZXAgZHVyaW5nIFNUUiB0cmFuc2l0aW9ucyBhbmQgdGhhdCB1c3VhbGx5IHJlc3VsdHMgaW4KK3Bvd2VyaW5nIGRvd24gc29tZSBtb3JlIGxvdy1sZXZlbCBjb21wb25lbnRzIHRoYXQgYXJlbid0IGRpcmVjdGx5IGNvbnRyb2xsZWQgYnkKK3RoZSBrZXJuZWwuCisKK1N5c3RlbSBhbmQgZGV2aWNlIHN0YXRlIGlzIHNhdmVkIGFuZCBrZXB0IGluIG1lbW9yeS4gIEFsbCBkZXZpY2VzIGFyZSBzdXNwZW5kZWQKK2FuZCBwdXQgaW50byBsb3ctcG93ZXIgc3RhdGVzLiAgSW4gbWFueSBjYXNlcywgYWxsIHBlcmlwaGVyYWwgYnVzZXMgbG9zZSBwb3dlcgord2hlbiBlbnRlcmluZyBTVFIsIHNvIGRldmljZXMgbXVzdCBiZSBhYmxlIHRvIGhhbmRsZSB0aGUgdHJhbnNpdGlvbiBiYWNrIHRvIHRoZQorIm9uIiBzdGF0ZS4KKworRm9yIGF0IGxlYXN0IEFDUEksIFNUUiByZXF1aXJlcyBzb21lIG1pbmltYWwgYm9vdC1zdHJhcHBpbmcgY29kZSB0byByZXN1bWUgdGhlCitzeXN0ZW0gZnJvbSBpdC4gIFRoaXMgbWF5IGJlIHRoZSBjYXNlIG9uIG90aGVyIHBsYXRmb3JtcyB0b28uCisKKworU3RhdGU6CQlTdXNwZW5kLXRvLWRpc2sKK0FDUEkgU3RhdGU6CVM0CitMYWJlbDoJCSJkaXNrIgorCitUaGlzIHN0YXRlIG9mZmVycyB0aGUgZ3JlYXRlc3QgcG93ZXIgc2F2aW5ncywgYW5kIGNhbiBiZSB1c2VkIGV2ZW4gaW4KK3RoZSBhYnNlbmNlIG9mIGxvdy1sZXZlbCBwbGF0Zm9ybSBzdXBwb3J0IGZvciBwb3dlciBtYW5hZ2VtZW50LiBUaGlzCitzdGF0ZSBvcGVyYXRlcyBzaW1pbGFybHkgdG8gU3VzcGVuZC10by1SQU0sIGJ1dCBpbmNsdWRlcyBhIGZpbmFsIHN0ZXAKK29mIHdyaXRpbmcgbWVtb3J5IGNvbnRlbnRzIHRvIGRpc2suIE9uIHJlc3VtZSwgdGhpcyBpcyByZWFkIGFuZCBtZW1vcnkKK2lzIHJlc3RvcmVkIHRvIGl0cyBwcmUtc3VzcGVuZCBzdGF0ZS4gCisKK1NURCBjYW4gYmUgaGFuZGxlZCBieSB0aGUgZmlybXdhcmUgb3IgdGhlIGtlcm5lbC4gSWYgaXQgaXMgaGFuZGxlZCBieQordGhlIGZpcm13YXJlLCBpdCB1c3VhbGx5IHJlcXVpcmVzIGEgZGVkaWNhdGVkIHBhcnRpdGlvbiB0aGF0IG11c3QgYmUKK3NldHVwIHZpYSBhbm90aGVyIG9wZXJhdGluZyBzeXN0ZW0gZm9yIGl0IHRvIHVzZS4gRGVzcGl0ZSB0aGUKK2luY29udmVuaWVuY2UsIHRoaXMgbWV0aG9kIHJlcXVpcmVzIG1pbmltYWwgd29yayBieSB0aGUga2VybmVsLCBzaW5jZQordGhlIGZpcm13YXJlIHdpbGwgYWxzbyBoYW5kbGUgcmVzdG9yaW5nIG1lbW9yeSBjb250ZW50cyBvbiByZXN1bWUuIAorCitGb3Igc3VzcGVuZC10by1kaXNrLCBhIG1lY2hhbmlzbSBjYWxsZWQgJ3N3c3VzcCcgKFN3YXAgU3VzcGVuZCkgaXMgdXNlZAordG8gd3JpdGUgbWVtb3J5IGNvbnRlbnRzIHRvIGZyZWUgc3dhcCBzcGFjZS4gc3dzdXNwIGhhcyBzb21lIHJlc3RyaWN0aXZlCityZXF1aXJlbWVudHMsIGJ1dCBzaG91bGQgd29yayBpbiBtb3N0IGNhc2VzLiBTb21lLCBhbGJlaXQgb3V0ZGF0ZWQsCitkb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZCBpbiBEb2N1bWVudGF0aW9uL3Bvd2VyL3N3c3VzcC50eHQuCitBbHRlcm5hdGl2ZWx5LCB1c2Vyc3BhY2UgY2FuIGRvIG1vc3Qgb2YgdGhlIGFjdHVhbCBzdXNwZW5kIHRvIGRpc2sgd29yaywKK3NlZSB1c2VybGFuZC1zd3N1c3AudHh0LgorCitPbmNlIG1lbW9yeSBzdGF0ZSBpcyB3cml0dGVuIHRvIGRpc2ssIHRoZSBzeXN0ZW0gbWF5IGVpdGhlciBlbnRlciBhCitsb3ctcG93ZXIgc3RhdGUgKGxpa2UgQUNQSSBTNCksIG9yIGl0IG1heSBzaW1wbHkgcG93ZXIgZG93bi4gUG93ZXJpbmcKK2Rvd24gb2ZmZXJzIGdyZWF0ZXIgc2F2aW5ncywgYW5kIGFsbG93cyB0aGlzIG1lY2hhbmlzbSB0byB3b3JrIG9uIGFueQorc3lzdGVtLiBIb3dldmVyLCBlbnRlcmluZyBhIHJlYWwgbG93LXBvd2VyIHN0YXRlIGFsbG93cyB0aGUgdXNlciB0bwordHJpZ2dlciB3YWtlIHVwIGV2ZW50cyAoZS5nLiBwcmVzc2luZyBhIGtleSBvciBvcGVuaW5nIGEgbGFwdG9wIGxpZCkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL3N1c3BlbmQtYW5kLWNwdWhvdHBsdWcudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci9zdXNwZW5kLWFuZC1jcHVob3RwbHVnLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmM5MDk1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci9zdXNwZW5kLWFuZC1jcHVob3RwbHVnLnR4dApAQCAtMCwwICsxLDI3NSBAQAorSW50ZXJhY3Rpb24gb2YgU3VzcGVuZCBjb2RlIChTMykgd2l0aCB0aGUgQ1BVIGhvdHBsdWcgaW5mcmFzdHJ1Y3R1cmUKKworICAgICAoQykgMjAxMSAtIDIwMTQgU3JpdmF0c2EgUy4gQmhhdCA8c3JpdmF0c2EuYmhhdEBsaW51eC52bmV0LmlibS5jb20+CisKKworSS4gSG93IGRvZXMgdGhlIHJlZ3VsYXIgQ1BVIGhvdHBsdWcgY29kZSBkaWZmZXIgZnJvbSBob3cgdGhlIFN1c3BlbmQtdG8tUkFNCisgICBpbmZyYXN0cnVjdHVyZSB1c2VzIGl0IGludGVybmFsbHk/IEFuZCB3aGVyZSBkbyB0aGV5IHNoYXJlIGNvbW1vbiBjb2RlPworCitXZWxsLCBhIHBpY3R1cmUgaXMgd29ydGggYSB0aG91c2FuZCB3b3Jkcy4uLiBTbyBBU0NJSSBhcnQgZm9sbG93cyA6LSkKKworW1RoaXMgZGVwaWN0cyB0aGUgY3VycmVudCBkZXNpZ24gaW4gdGhlIGtlcm5lbCwgYW5kIGZvY3Vzc2VzIG9ubHkgb24gdGhlCitpbnRlcmFjdGlvbnMgaW52b2x2aW5nIHRoZSBmcmVlemVyIGFuZCBDUFUgaG90cGx1ZyBhbmQgYWxzbyB0cmllcyB0byBleHBsYWluCit0aGUgbG9ja2luZyBpbnZvbHZlZC4gSXQgb3V0bGluZXMgdGhlIG5vdGlmaWNhdGlvbnMgaW52b2x2ZWQgYXMgd2VsbC4KK0J1dCBwbGVhc2Ugbm90ZSB0aGF0IGhlcmUsIG9ubHkgdGhlIGNhbGwgcGF0aHMgYXJlIGlsbHVzdHJhdGVkLCB3aXRoIHRoZSBhaW0KK29mIGRlc2NyaWJpbmcgd2hlcmUgdGhleSB0YWtlIGRpZmZlcmVudCBwYXRocyBhbmQgd2hlcmUgdGhleSBzaGFyZSBjb2RlLgorV2hhdCBoYXBwZW5zIHdoZW4gcmVndWxhciBDUFUgaG90cGx1ZyBhbmQgU3VzcGVuZC10by1SQU0gcmFjZSB3aXRoIGVhY2ggb3RoZXIKK2lzIG5vdCBkZXBpY3RlZCBoZXJlLl0KKworT24gYSBoaWdoIGxldmVsLCB0aGUgc3VzcGVuZC1yZXN1bWUgY3ljbGUgZ29lcyBsaWtlIHRoaXM6CisKK3xGcmVlemV8IC0+IHxEaXNhYmxlIG5vbmJvb3R8IC0+IHxEbyBzdXNwZW5kfCAtPiB8RW5hYmxlIG5vbmJvb3R8IC0+IHxUaGF3IHwKK3x0YXNrcyB8ICAgIHwgICAgIGNwdXMgICAgICB8ICAgIHwgICAgICAgICAgfCAgICB8ICAgICBjcHVzICAgICB8ICAgIHx0YXNrc3wKKworCitNb3JlIGRldGFpbHMgZm9sbG93OgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1c3BlbmQgY2FsbCBwYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZSAnbWVtJyB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvc3lzL3Bvd2VyL3N0YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNmcyBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3F1aXJlIHBtX211dGV4IGxvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kIFBNX1NVU1BFTkRfUFJFUEFSRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJlZXplIHRhc2tzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlX25vbmJvb3RfY3B1cygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0YXJ0ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3F1aXJlIGNwdV9hZGRfcmVtb3ZlX2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRlIG92ZXIgQ1VSUkVOVExZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubGluZSBDUFVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ICAgICAgICAgICAgICAgICAgICAgICAgICB8IEwKKyAgICAgICAgICAgICA9PT09PT0+ICAgICAgICAgICAgICAgX2NwdV9kb3duKCkgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICB8ICAgICAgICAgICAgICBbVGhpcyB0YWtlcyBjcHVob3RwbHVnLmxvY2sgICAgICAgICAgICAgfAorICBDb21tb24gICAgfCAgICAgICAgICAgICAgIGJlZm9yZSB0YWtpbmcgZG93biB0aGUgQ1BVICAgICAgICAgICAgIHwKKyAgIGNvZGUgICAgIHwgICAgICAgICAgICAgICBhbmQgcmVsZWFzZXMgaXQgd2hlbiBkb25lXSAgICAgICAgICAgICB8IE8KKyAgICAgICAgICAgIHwgICAgICAgICAgICBXaGlsZSBpdCBpcyBhdCBpdCwgbm90aWZpY2F0aW9ucyAgICAgICAgICB8CisgICAgICAgICAgICB8ICAgICAgICAgICAgYXJlIHNlbnQgd2hlbiBub3RhYmxlIGV2ZW50cyBvY2N1ciwgICAgICAgfAorICAgICAgICAgICAgID09PT09PT4gICAgIGJ5IHJ1bm5pbmcgYWxsIHJlZ2lzdGVyZWQgY2FsbGJhY2tzLiAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8IE8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RlIGRvd24gdGhlc2UgY3B1cyBpbiAgICAgICAgICAgICAgICB8IFAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvemVuX2NwdXMgbWFzayAgICAgICAgIC0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdgorICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzYWJsZSByZWd1bGFyIGNwdSBob3RwbHVnCisgICAgICAgICAgICAgICAgICAgICAgICBieSBpbmNyZWFzaW5nIGNwdV9ob3RwbHVnX2Rpc2FibGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIGNwdV9hZGRfcmVtb3ZlX2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdgorICAgICAgICAgICAgICAgICAgICAgICAvKiBkaXNhYmxlX25vbmJvb3RfY3B1cygpIGNvbXBsZXRlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG8gc3VzcGVuZAorCisKKworUmVzdW1pbmcgYmFjayBpcyBsaWtld2lzZSwgd2l0aCB0aGUgY291bnRlcnBhcnRzIGJlaW5nIChpbiB0aGUgb3JkZXIgb2YKK2V4ZWN1dGlvbiBkdXJpbmcgcmVzdW1lKToKKyogZW5hYmxlX25vbmJvb3RfY3B1cygpIHdoaWNoIGludm9sdmVzOgorICAgfCAgQWNxdWlyZSBjcHVfYWRkX3JlbW92ZV9sb2NrCisgICB8ICBEZWNyZWFzZSBjcHVfaG90cGx1Z19kaXNhYmxlZCwgdGhlcmVieSBlbmFibGluZyByZWd1bGFyIGNwdSBob3RwbHVnCisgICB8ICBDYWxsIF9jcHVfdXAoKSBbZm9yIGFsbCB0aG9zZSBjcHVzIGluIHRoZSBmcm96ZW5fY3B1cyBtYXNrLCBpbiBhIGxvb3BdCisgICB8ICBSZWxlYXNlIGNwdV9hZGRfcmVtb3ZlX2xvY2sKKyAgIHYKKworKiB0aGF3IHRhc2tzCisqIHNlbmQgUE1fUE9TVF9TVVNQRU5EIG5vdGlmaWNhdGlvbnMKKyogUmVsZWFzZSBwbV9tdXRleCBsb2NrLgorCisKK0l0IGlzIHRvIGJlIG5vdGVkIGhlcmUgdGhhdCB0aGUgcG1fbXV0ZXggbG9jayBpcyBhY3F1aXJlZCBhdCB0aGUgdmVyeQorYmVnaW5uaW5nLCB3aGVuIHdlIGFyZSBqdXN0IHN0YXJ0aW5nIG91dCB0byBzdXNwZW5kLCBhbmQgdGhlbiByZWxlYXNlZCBvbmx5CithZnRlciB0aGUgZW50aXJlIGN5Y2xlIGlzIGNvbXBsZXRlIChpLmUuLCBzdXNwZW5kICsgcmVzdW1lKS4KKworCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUmVndWxhciBDUFUgaG90cGx1ZyBjYWxsIHBhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZSAwIChvciAxKSB0bworICAgICAgICAgICAgICAgICAgICAgICAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUqL29ubGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzZnMgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1X2Rvd24oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3F1aXJlIGNwdV9hZGRfcmVtb3ZlX2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdgorICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBjcHVfaG90cGx1Z19kaXNhYmxlZCA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdyYWNlZnVsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICAgICAgICAgICA9PT09PT0+ICAgICAgICAgICAgICAgIF9jcHVfZG93bigpCisgICAgICAgICAgICB8ICAgICAgICAgICAgICBbVGhpcyB0YWtlcyBjcHVob3RwbHVnLmxvY2sKKyAgQ29tbW9uICAgIHwgICAgICAgICAgICAgICBiZWZvcmUgdGFraW5nIGRvd24gdGhlIENQVQorICAgY29kZSAgICAgfCAgICAgICAgICAgICAgIGFuZCByZWxlYXNlcyBpdCB3aGVuIGRvbmVdCisgICAgICAgICAgICB8ICAgICAgICAgICAgV2hpbGUgaXQgaXMgYXQgaXQsIG5vdGlmaWNhdGlvbnMKKyAgICAgICAgICAgIHwgICAgICAgICAgIGFyZSBzZW50IHdoZW4gbm90YWJsZSBldmVudHMgb2NjdXIsCisgICAgICAgICAgICAgPT09PT09PiAgICBieSBydW5uaW5nIGFsbCByZWdpc3RlcmVkIGNhbGxiYWNrcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZSBjcHVfYWRkX3JlbW92ZV9sb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1RoYXQncyBpdCEsIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVndWxhciBDUFUgaG90cGx1Z10KKworCisKK1NvLCBhcyBjYW4gYmUgc2VlbiBmcm9tIHRoZSB0d28gZGlhZ3JhbXMgKHRoZSBwYXJ0cyBtYXJrZWQgYXMgIkNvbW1vbiBjb2RlIiksCityZWd1bGFyIENQVSBob3RwbHVnIGFuZCB0aGUgc3VzcGVuZCBjb2RlIHBhdGggY29udmVyZ2UgYXQgdGhlIF9jcHVfZG93bigpIGFuZAorX2NwdV91cCgpIGZ1bmN0aW9ucy4gVGhleSBkaWZmZXIgaW4gdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlc2UgZnVuY3Rpb25zLAoraW4gdGhhdCBkdXJpbmcgcmVndWxhciBDUFUgaG90cGx1ZywgMCBpcyBwYXNzZWQgZm9yIHRoZSAndGFza3NfZnJvemVuJworYXJndW1lbnQuIEJ1dCBkdXJpbmcgc3VzcGVuZCwgc2luY2UgdGhlIHRhc2tzIGFyZSBhbHJlYWR5IGZyb3plbiBieSB0aGUgdGltZQordGhlIG5vbi1ib290IENQVXMgYXJlIG9mZmxpbmVkIG9yIG9ubGluZWQsIHRoZSBfY3B1XyooKSBmdW5jdGlvbnMgYXJlIGNhbGxlZAord2l0aCB0aGUgJ3Rhc2tzX2Zyb3plbicgYXJndW1lbnQgc2V0IHRvIDEuCitbU2VlIGJlbG93IGZvciBzb21lIGtub3duIGlzc3VlcyByZWdhcmRpbmcgdGhpcy5dCisKKworSW1wb3J0YW50IGZpbGVzIGFuZCBmdW5jdGlvbnMvZW50cnkgcG9pbnRzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2tlcm5lbC9wb3dlci9wcm9jZXNzLmMgOiBmcmVlemVfcHJvY2Vzc2VzKCksIHRoYXdfcHJvY2Vzc2VzKCkKK2tlcm5lbC9wb3dlci9zdXNwZW5kLmMgOiBzdXNwZW5kX3ByZXBhcmUoKSwgc3VzcGVuZF9lbnRlcigpLCBzdXNwZW5kX2ZpbmlzaCgpCitrZXJuZWwvY3B1LmM6IGNwdV9bdXB8ZG93bl0oKSwgX2NwdV9bdXB8ZG93bl0oKSwgW2Rpc2FibGV8ZW5hYmxlXV9ub25ib290X2NwdXMoKQorCisKKworSUkuIFdoYXQgYXJlIHRoZSBpc3N1ZXMgaW52b2x2ZWQgaW4gQ1BVIGhvdHBsdWc/CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGVyZSBhcmUgc29tZSBpbnRlcmVzdGluZyBzaXR1YXRpb25zIGludm9sdmluZyBDUFUgaG90cGx1ZyBhbmQgbWljcm9jb2RlCit1cGRhdGUgb24gdGhlIENQVXMsIGFzIGRpc2N1c3NlZCBiZWxvdzoKKworW1BsZWFzZSBiZWFyIGluIG1pbmQgdGhhdCB0aGUga2VybmVsIHJlcXVlc3RzIHRoZSBtaWNyb2NvZGUgaW1hZ2VzIGZyb20KK3VzZXJzcGFjZSwgdXNpbmcgdGhlIHJlcXVlc3RfZmlybXdhcmUoKSBmdW5jdGlvbiBkZWZpbmVkIGluCitkcml2ZXJzL2Jhc2UvZmlybXdhcmVfY2xhc3MuY10KKworCithLiBXaGVuIGFsbCB0aGUgQ1BVcyBhcmUgaWRlbnRpY2FsOgorCisgICBUaGlzIGlzIHRoZSBtb3N0IGNvbW1vbiBzaXR1YXRpb24gYW5kIGl0IGlzIHF1aXRlIHN0cmFpZ2h0Zm9yd2FyZDogd2Ugd2FudAorICAgdG8gYXBwbHkgdGhlIHNhbWUgbWljcm9jb2RlIHJldmlzaW9uIHRvIGVhY2ggb2YgdGhlIENQVXMuCisgICBUbyBnaXZlIGFuIGV4YW1wbGUgb2YgeDg2LCB0aGUgY29sbGVjdF9jcHVfaW5mbygpIGZ1bmN0aW9uIGRlZmluZWQgaW4KKyAgIGFyY2gveDg2L2tlcm5lbC9taWNyb2NvZGVfY29yZS5jIGhlbHBzIGluIGRpc2NvdmVyaW5nIHRoZSB0eXBlIG9mIHRoZSBDUFUKKyAgIGFuZCB0aGVyZWJ5IGluIGFwcGx5aW5nIHRoZSBjb3JyZWN0IG1pY3JvY29kZSByZXZpc2lvbiB0byBpdC4KKyAgIEJ1dCBub3RlIHRoYXQgdGhlIGtlcm5lbCBkb2VzIG5vdCBtYWludGFpbiBhIGNvbW1vbiBtaWNyb2NvZGUgaW1hZ2UgZm9yIHRoZQorICAgYWxsIENQVXMsIGluIG9yZGVyIHRvIGhhbmRsZSBjYXNlICdiJyBkZXNjcmliZWQgYmVsb3cuCisKKworYi4gV2hlbiBzb21lIG9mIHRoZSBDUFVzIGFyZSBkaWZmZXJlbnQgdGhhbiB0aGUgcmVzdDoKKworICAgSW4gdGhpcyBjYXNlIHNpbmNlIHdlIHByb2JhYmx5IG5lZWQgdG8gYXBwbHkgZGlmZmVyZW50IG1pY3JvY29kZSByZXZpc2lvbnMKKyAgIHRvIGRpZmZlcmVudCBDUFVzLCB0aGUga2VybmVsIG1haW50YWlucyBhIGNvcHkgb2YgdGhlIGNvcnJlY3QgbWljcm9jb2RlCisgICBpbWFnZSBmb3IgZWFjaCBDUFUgKGFmdGVyIGFwcHJvcHJpYXRlIENQVSB0eXBlL21vZGVsIGRpc2NvdmVyeSB1c2luZworICAgZnVuY3Rpb25zIHN1Y2ggYXMgY29sbGVjdF9jcHVfaW5mbygpKS4KKworCitjLiBXaGVuIGEgQ1BVIGlzIHBoeXNpY2FsbHkgaG90LXVucGx1Z2dlZCBhbmQgYSBuZXcgKGFuZCBwb3NzaWJseSBkaWZmZXJlbnQKKyAgIHR5cGUgb2YpIENQVSBpcyBob3QtcGx1Z2dlZCBpbnRvIHRoZSBzeXN0ZW06CisKKyAgIEluIHRoZSBjdXJyZW50IGRlc2lnbiBvZiB0aGUga2VybmVsLCB3aGVuZXZlciBhIENQVSBpcyB0YWtlbiBvZmZsaW5lIGR1cmluZworICAgYSByZWd1bGFyIENQVSBob3RwbHVnIG9wZXJhdGlvbiwgdXBvbiByZWNlaXZpbmcgdGhlIENQVV9ERUFEIG5vdGlmaWNhdGlvbgorICAgKHdoaWNoIGlzIHNlbnQgYnkgdGhlIENQVSBob3RwbHVnIGNvZGUpLCB0aGUgbWljcm9jb2RlIHVwZGF0ZSBkcml2ZXIncworICAgY2FsbGJhY2sgZm9yIHRoYXQgZXZlbnQgcmVhY3RzIGJ5IGZyZWVpbmcgdGhlIGtlcm5lbCdzIGNvcHkgb2YgdGhlCisgICBtaWNyb2NvZGUgaW1hZ2UgZm9yIHRoYXQgQ1BVLgorCisgICBIZW5jZSwgd2hlbiBhIG5ldyBDUFUgaXMgYnJvdWdodCBvbmxpbmUsIHNpbmNlIHRoZSBrZXJuZWwgZmluZHMgdGhhdCBpdAorICAgZG9lc24ndCBoYXZlIHRoZSBtaWNyb2NvZGUgaW1hZ2UsIGl0IGRvZXMgdGhlIENQVSB0eXBlL21vZGVsIGRpc2NvdmVyeQorICAgYWZyZXNoIGFuZCB0aGVuIHJlcXVlc3RzIHRoZSB1c2Vyc3BhY2UgZm9yIHRoZSBhcHByb3ByaWF0ZSBtaWNyb2NvZGUgaW1hZ2UKKyAgIGZvciB0aGF0IENQVSwgd2hpY2ggaXMgc3Vic2VxdWVudGx5IGFwcGxpZWQuCisKKyAgIEZvciBleGFtcGxlLCBpbiB4ODYsIHRoZSBtY19jcHVfY2FsbGJhY2soKSBmdW5jdGlvbiAod2hpY2ggaXMgdGhlIG1pY3JvY29kZQorICAgdXBkYXRlIGRyaXZlcidzIGNhbGxiYWNrIHJlZ2lzdGVyZWQgZm9yIENQVSBob3RwbHVnIGV2ZW50cykgY2FsbHMKKyAgIG1pY3JvY29kZV91cGRhdGVfY3B1KCkgd2hpY2ggd291bGQgY2FsbCBtaWNyb2NvZGVfaW5pdF9jcHUoKSBpbiB0aGlzIGNhc2UsCisgICBpbnN0ZWFkIG9mIG1pY3JvY29kZV9yZXN1bWVfY3B1KCkgd2hlbiBpdCBmaW5kcyB0aGF0IHRoZSBrZXJuZWwgZG9lc24ndAorICAgaGF2ZSBhIHZhbGlkIG1pY3JvY29kZSBpbWFnZS4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIENQVSB0eXBlL21vZGVsCisgICBkaXNjb3ZlcnkgaXMgcGVyZm9ybWVkIGFuZCB0aGUgcmlnaHQgbWljcm9jb2RlIGlzIGFwcGxpZWQgdG8gdGhlIENQVSBhZnRlcgorICAgZ2V0dGluZyBpdCBmcm9tIHVzZXJzcGFjZS4KKworCitkLiBIYW5kbGluZyBtaWNyb2NvZGUgdXBkYXRlIGR1cmluZyBzdXNwZW5kL2hpYmVybmF0ZToKKworICAgU3RyaWN0bHkgc3BlYWtpbmcsIGR1cmluZyBhIENQVSBob3RwbHVnIG9wZXJhdGlvbiB3aGljaCBkb2VzIG5vdCBpbnZvbHZlCisgICBwaHlzaWNhbGx5IHJlbW92aW5nIG9yIGluc2VydGluZyBDUFVzLCB0aGUgQ1BVcyBhcmUgbm90IGFjdHVhbGx5IHBvd2VyZWQKKyAgIG9mZiBkdXJpbmcgYSBDUFUgb2ZmbGluZS4gVGhleSBhcmUganVzdCBwdXQgdG8gdGhlIGxvd2VzdCBDLXN0YXRlcyBwb3NzaWJsZS4KKyAgIEhlbmNlLCBpbiBzdWNoIGEgY2FzZSwgaXQgaXMgbm90IHJlYWxseSBuZWNlc3NhcnkgdG8gcmUtYXBwbHkgbWljcm9jb2RlCisgICB3aGVuIHRoZSBDUFVzIGFyZSBicm91Z2h0IGJhY2sgb25saW5lLCBzaW5jZSB0aGV5IHdvdWxkbid0IGhhdmUgbG9zdCB0aGUKKyAgIGltYWdlIGR1cmluZyB0aGUgQ1BVIG9mZmxpbmUgb3BlcmF0aW9uLgorCisgICBUaGlzIGlzIHRoZSB1c3VhbCBzY2VuYXJpbyBlbmNvdW50ZXJlZCBkdXJpbmcgYSByZXN1bWUgYWZ0ZXIgYSBzdXNwZW5kLgorICAgSG93ZXZlciwgaW4gdGhlIGNhc2Ugb2YgaGliZXJuYXRpb24sIHNpbmNlIGFsbCB0aGUgQ1BVcyBhcmUgY29tcGxldGVseQorICAgcG93ZXJlZCBvZmYsIGR1cmluZyByZXN0b3JlIGl0IGJlY29tZXMgbmVjZXNzYXJ5IHRvIGFwcGx5IHRoZSBtaWNyb2NvZGUKKyAgIGltYWdlcyB0byBhbGwgdGhlIENQVXMuCisKKyAgIFtOb3RlIHRoYXQgd2UgZG9uJ3QgZXhwZWN0IHNvbWVvbmUgdG8gcGh5c2ljYWxseSBwdWxsIG91dCBub2RlcyBhbmQgaW5zZXJ0CisgICBub2RlcyB3aXRoIGEgZGlmZmVyZW50IHR5cGUgb2YgQ1BVcyBpbi1iZXR3ZWVuIGEgc3VzcGVuZC1yZXN1bWUgb3IgYQorICAgaGliZXJuYXRlL3Jlc3RvcmUgY3ljbGUuXQorCisgICBJbiB0aGUgY3VycmVudCBkZXNpZ24gb2YgdGhlIGtlcm5lbCBob3dldmVyLCBkdXJpbmcgYSBDUFUgb2ZmbGluZSBvcGVyYXRpb24KKyAgIGFzIHBhcnQgb2YgdGhlIHN1c3BlbmQvaGliZXJuYXRlIGN5Y2xlICh0aGUgQ1BVX0RFQURfRlJPWkVOIG5vdGlmaWNhdGlvbiksCisgICB0aGUgZXhpc3RpbmcgY29weSBvZiBtaWNyb2NvZGUgaW1hZ2UgaW4gdGhlIGtlcm5lbCBpcyBub3QgZnJlZWQgdXAuCisgICBBbmQgZHVyaW5nIHRoZSBDUFUgb25saW5lIG9wZXJhdGlvbnMgKGR1cmluZyByZXN1bWUvcmVzdG9yZSksIHNpbmNlIHRoZQorICAga2VybmVsIGZpbmRzIHRoYXQgaXQgYWxyZWFkeSBoYXMgY29waWVzIG9mIHRoZSBtaWNyb2NvZGUgaW1hZ2VzIGZvciBhbGwgdGhlCisgICBDUFVzLCBpdCBqdXN0IGFwcGxpZXMgdGhlbSB0byB0aGUgQ1BVcywgYXZvaWRpbmcgYW55IHJlLWRpc2NvdmVyeSBvZiBDUFUKKyAgIHR5cGUvbW9kZWwgYW5kIHRoZSBuZWVkIGZvciB2YWxpZGF0aW5nIHdoZXRoZXIgdGhlIG1pY3JvY29kZSByZXZpc2lvbnMgYXJlCisgICByaWdodCBmb3IgdGhlIENQVXMgb3Igbm90IChkdWUgdG8gdGhlIGFib3ZlIGFzc3VtcHRpb24gdGhhdCBwaHlzaWNhbCBDUFUKKyAgIGhvdHBsdWcgd2lsbCBub3QgYmUgZG9uZSBpbi1iZXR3ZWVuIHN1c3BlbmQvcmVzdW1lIG9yIGhpYmVybmF0ZS9yZXN0b3JlCisgICBjeWNsZXMpLgorCisKK0lJSS4gQXJlIHRoZXJlIGFueSBrbm93biBwcm9ibGVtcyB3aGVuIHJlZ3VsYXIgQ1BVIGhvdHBsdWcgYW5kIHN1c3BlbmQgcmFjZQorICAgICB3aXRoIGVhY2ggb3RoZXI/CisKK1llcywgdGhleSBhcmUgbGlzdGVkIGJlbG93OgorCisxLiBXaGVuIGludm9raW5nIHJlZ3VsYXIgQ1BVIGhvdHBsdWcsIHRoZSAndGFza3NfZnJvemVuJyBhcmd1bWVudCBwYXNzZWQgdG8KKyAgIHRoZSBfY3B1X2Rvd24oKSBhbmQgX2NwdV91cCgpIGZ1bmN0aW9ucyBpcyAqYWx3YXlzKiAwLgorICAgVGhpcyBtaWdodCBub3QgcmVmbGVjdCB0aGUgdHJ1ZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBzeXN0ZW0sIHNpbmNlIHRoZQorICAgdGFza3MgY291bGQgaGF2ZSBiZWVuIGZyb3plbiBieSBhbiBvdXQtb2YtYmFuZCBldmVudCBzdWNoIGFzIGEgc3VzcGVuZAorICAgb3BlcmF0aW9uIGluIHByb2dyZXNzLiBIZW5jZSwgaXQgd2lsbCBsZWFkIHRvIHdyb25nIG5vdGlmaWNhdGlvbnMgYmVpbmcKKyAgIHNlbnQgZHVyaW5nIHRoZSBjcHUgb25saW5lL29mZmxpbmUgZXZlbnRzIChlZywgQ1BVX09OTElORSBub3RpZmljYXRpb24KKyAgIGluc3RlYWQgb2YgQ1BVX09OTElORV9GUk9aRU4pIHdoaWNoIGluIHR1cm4gd2lsbCBsZWFkIHRvIGV4ZWN1dGlvbiBvZgorICAgaW5hcHByb3ByaWF0ZSBjb2RlIGJ5IHRoZSBjYWxsYmFja3MgcmVnaXN0ZXJlZCBmb3Igc3VjaCBDUFUgaG90cGx1ZyBldmVudHMuCisKKzIuIElmIGEgcmVndWxhciBDUFUgaG90cGx1ZyBzdHJlc3MgdGVzdCBoYXBwZW5zIHRvIHJhY2Ugd2l0aCB0aGUgZnJlZXplciBkdWUKKyAgIHRvIGEgc3VzcGVuZCBvcGVyYXRpb24gaW4gcHJvZ3Jlc3MgYXQgdGhlIHNhbWUgdGltZSwgdGhlbiB3ZSBjb3VsZCBoaXQgdGhlCisgICBzaXR1YXRpb24gZGVzY3JpYmVkIGJlbG93OgorCisgICAgKiBBIHJlZ3VsYXIgY3B1IG9ubGluZSBvcGVyYXRpb24gY29udGludWVzIGl0cyBqb3VybmV5IGZyb20gdXNlcnNwYWNlCisgICAgICBpbnRvIHRoZSBrZXJuZWwsIHNpbmNlIHRoZSBmcmVlemluZyBoYXMgbm90IHlldCBiZWd1bi4KKyAgICAqIFRoZW4gZnJlZXplciBnZXRzIHRvIHdvcmsgYW5kIGZyZWV6ZXMgdXNlcnNwYWNlLgorICAgICogSWYgY3B1IG9ubGluZSBoYXMgbm90IHlldCBjb21wbGV0ZWQgdGhlIG1pY3JvY29kZSB1cGRhdGUgc3R1ZmYgYnkgbm93LAorICAgICAgaXQgd2lsbCBub3cgc3RhcnQgd2FpdGluZyBvbiB0aGUgZnJvemVuIHVzZXJzcGFjZSBpbiB0aGUKKyAgICAgIFRBU0tfVU5JTlRFUlJVUFRJQkxFIHN0YXRlLCBpbiBvcmRlciB0byBnZXQgdGhlIG1pY3JvY29kZSBpbWFnZS4KKyAgICAqIE5vdyB0aGUgZnJlZXplciBjb250aW51ZXMgYW5kIHRyaWVzIHRvIGZyZWV6ZSB0aGUgcmVtYWluaW5nIHRhc2tzLiBCdXQKKyAgICAgIGR1ZSB0byB0aGlzIHdhaXQgbWVudGlvbmVkIGFib3ZlLCB0aGUgZnJlZXplciB3b24ndCBiZSBhYmxlIHRvIGZyZWV6ZQorICAgICAgdGhlIGNwdSBvbmxpbmUgaG90cGx1ZyB0YXNrIGFuZCBoZW5jZSBmcmVlemluZyBvZiB0YXNrcyBmYWlscy4KKworICAgQXMgYSByZXN1bHQgb2YgdGhpcyB0YXNrIGZyZWV6aW5nIGZhaWx1cmUsIHRoZSBzdXNwZW5kIG9wZXJhdGlvbiBnZXRzCisgICBhYm9ydGVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlci9zdXNwZW5kLWFuZC1pbnRlcnJ1cHRzLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvc3VzcGVuZC1hbmQtaW50ZXJydXB0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFmYjI5YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXIvc3VzcGVuZC1hbmQtaW50ZXJydXB0cy50eHQKQEAgLTAsMCArMSwxMzUgQEAKK1N5c3RlbSBTdXNwZW5kIGFuZCBEZXZpY2UgSW50ZXJydXB0cworCitDb3B5cmlnaHQgKEMpIDIwMTQgSW50ZWwgQ29ycC4KK0F1dGhvcjogUmFmYWVsIEouIFd5c29ja2kgPHJhZmFlbC5qLnd5c29ja2lAaW50ZWwuY29tPgorCisKK1N1c3BlbmRpbmcgYW5kIFJlc3VtaW5nIERldmljZSBJUlFzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEZXZpY2UgaW50ZXJydXB0IHJlcXVlc3QgbGluZXMgKElSUXMpIGFyZSBnZW5lcmFsbHkgZGlzYWJsZWQgZHVyaW5nIHN5c3RlbQorc3VzcGVuZCBhZnRlciB0aGUgImxhdGUiIHBoYXNlIG9mIHN1c3BlbmRpbmcgZGV2aWNlcyAodGhhdCBpcywgYWZ0ZXIgYWxsIG9mIHRoZQorLT5wcmVwYXJlLCAtPnN1c3BlbmQgYW5kIC0+c3VzcGVuZF9sYXRlIGNhbGxiYWNrcyBoYXZlIGJlZW4gZXhlY3V0ZWQgZm9yIGFsbAorZGV2aWNlcykuICBUaGF0IGlzIGRvbmUgYnkgc3VzcGVuZF9kZXZpY2VfaXJxcygpLgorCitUaGUgcmF0aW9uYWxlIGZvciBkb2luZyBzbyBpcyB0aGF0IGFmdGVyIHRoZSAibGF0ZSIgcGhhc2Ugb2YgZGV2aWNlIHN1c3BlbmQKK3RoZXJlIGlzIG5vIGxlZ2l0aW1hdGUgcmVhc29uIHdoeSBhbnkgaW50ZXJydXB0cyBmcm9tIHN1c3BlbmRlZCBkZXZpY2VzIHNob3VsZAordHJpZ2dlciBhbmQgaWYgYW55IGRldmljZXMgaGF2ZSBub3QgYmVlbiBzdXNwZW5kZWQgcHJvcGVybHkgeWV0LCBpdCBpcyBiZXR0ZXIgdG8KK2Jsb2NrIGludGVycnVwdHMgZnJvbSB0aGVtIGFueXdheS4gIEFsc28sIGluIHRoZSBwYXN0IHdlIGhhZCBwcm9ibGVtcyB3aXRoCitpbnRlcnJ1cHQgaGFuZGxlcnMgZm9yIHNoYXJlZCBJUlFzIHRoYXQgZGV2aWNlIGRyaXZlcnMgaW1wbGVtZW50aW5nIHRoZW0gd2VyZQorbm90IHByZXBhcmVkIGZvciBpbnRlcnJ1cHRzIHRyaWdnZXJpbmcgYWZ0ZXIgdGhlaXIgZGV2aWNlcyBoYWQgYmVlbiBzdXNwZW5kZWQuCitJbiBzb21lIGNhc2VzIHRoZXkgd291bGQgYXR0ZW1wdCB0byBhY2Nlc3MsIGZvciBleGFtcGxlLCBtZW1vcnkgYWRkcmVzcyBzcGFjZXMKK29mIHN1c3BlbmRlZCBkZXZpY2VzIGFuZCBjYXVzZSB1bnByZWRpY3RhYmxlIGJlaGF2aW9yIHRvIGVuc3VlIGFzIGEgcmVzdWx0LgorVW5mb3J0dW5hdGVseSwgc3VjaCBwcm9ibGVtcyBhcmUgdmVyeSBkaWZmaWN1bHQgdG8gZGVidWcgYW5kIHRoZSBpbnRyb2R1Y3Rpb24KK29mIHN1c3BlbmRfZGV2aWNlX2lycXMoKSwgYWxvbmcgd2l0aCB0aGUgIm5vaXJxIiBwaGFzZSBvZiBkZXZpY2Ugc3VzcGVuZCBhbmQKK3Jlc3VtZSwgd2FzIHRoZSBvbmx5IHByYWN0aWNhbCB3YXkgdG8gbWl0aWdhdGUgdGhlbS4KKworRGV2aWNlIElSUXMgYXJlIHJlLWVuYWJsZWQgZHVyaW5nIHN5c3RlbSByZXN1bWUsIHJpZ2h0IGJlZm9yZSB0aGUgImVhcmx5IiBwaGFzZQorb2YgcmVzdW1pbmcgZGV2aWNlcyAodGhhdCBpcywgYmVmb3JlIHN0YXJ0aW5nIHRvIGV4ZWN1dGUgLT5yZXN1bWVfZWFybHkKK2NhbGxiYWNrcyBmb3IgZGV2aWNlcykuICBUaGUgZnVuY3Rpb24gZG9pbmcgdGhhdCBpcyByZXN1bWVfZGV2aWNlX2lycXMoKS4KKworCitUaGUgSVJRRl9OT19TVVNQRU5EIEZsYWcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGVyZSBhcmUgaW50ZXJydXB0cyB0aGF0IGNhbiBsZWdpdGltYXRlbHkgdHJpZ2dlciBkdXJpbmcgdGhlIGVudGlyZSBzeXN0ZW0KK3N1c3BlbmQtcmVzdW1lIGN5Y2xlLCBpbmNsdWRpbmcgdGhlICJub2lycSIgcGhhc2VzIG9mIHN1c3BlbmRpbmcgYW5kIHJlc3VtaW5nCitkZXZpY2VzIGFzIHdlbGwgYXMgZHVyaW5nIHRoZSB0aW1lIHdoZW4gbm9uYm9vdCBDUFVzIGFyZSB0YWtlbiBvZmZsaW5lIGFuZAorYnJvdWdodCBiYWNrIG9ubGluZS4gIFRoYXQgYXBwbGllcyB0byB0aW1lciBpbnRlcnJ1cHRzIGluIHRoZSBmaXJzdCBwbGFjZSwKK2J1dCBhbHNvIHRvIElQSXMgYW5kIHRvIHNvbWUgb3RoZXIgc3BlY2lhbC1wdXJwb3NlIGludGVycnVwdHMuCisKK1RoZSBJUlFGX05PX1NVU1BFTkQgZmxhZyBpcyB1c2VkIHRvIGluZGljYXRlIHRoYXQgdG8gdGhlIElSUSBzdWJzeXN0ZW0gd2hlbgorcmVxdWVzdGluZyBhIHNwZWNpYWwtcHVycG9zZSBpbnRlcnJ1cHQuICBJdCBjYXVzZXMgc3VzcGVuZF9kZXZpY2VfaXJxcygpIHRvCitsZWF2ZSB0aGUgY29ycmVzcG9uZGluZyBJUlEgZW5hYmxlZCBzbyBhcyB0byBhbGxvdyB0aGUgaW50ZXJydXB0IHRvIHdvcmsgYXMKK2V4cGVjdGVkIGR1cmluZyB0aGUgc3VzcGVuZC1yZXN1bWUgY3ljbGUsIGJ1dCBkb2VzIG5vdCBndWFyYW50ZWUgdGhhdCB0aGUKK2ludGVycnVwdCB3aWxsIHdha2UgdGhlIHN5c3RlbSBmcm9tIGEgc3VzcGVuZGVkIHN0YXRlIC0tIGZvciBzdWNoIGNhc2VzIGl0IGlzCituZWNlc3NhcnkgdG8gdXNlIGVuYWJsZV9pcnFfd2FrZSgpLgorCitOb3RlIHRoYXQgdGhlIElSUUZfTk9fU1VTUEVORCBmbGFnIGFmZmVjdHMgdGhlIGVudGlyZSBJUlEgYW5kIG5vdCBqdXN0IG9uZQordXNlciBvZiBpdC4gIFRodXMsIGlmIHRoZSBJUlEgaXMgc2hhcmVkLCBhbGwgb2YgdGhlIGludGVycnVwdCBoYW5kbGVycyBpbnN0YWxsZWQKK2ZvciBpdCB3aWxsIGJlIGV4ZWN1dGVkIGFzIHVzdWFsIGFmdGVyIHN1c3BlbmRfZGV2aWNlX2lycXMoKSwgZXZlbiBpZiB0aGUKK0lSUUZfTk9fU1VTUEVORCBmbGFnIHdhcyBub3QgcGFzc2VkIHRvIHJlcXVlc3RfaXJxKCkgKG9yIGVxdWl2YWxlbnQpIGJ5IHNvbWUgb2YKK3RoZSBJUlEncyB1c2Vycy4gIEZvciB0aGlzIHJlYXNvbiwgdXNpbmcgSVJRRl9OT19TVVNQRU5EIGFuZCBJUlFGX1NIQVJFRCBhdCB0aGUKK3NhbWUgdGltZSBzaG91bGQgYmUgYXZvaWRlZC4KKworCitTeXN0ZW0gV2FrZXVwIEludGVycnVwdHMsIGVuYWJsZV9pcnFfd2FrZSgpIGFuZCBkaXNhYmxlX2lycV93YWtlKCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTeXN0ZW0gd2FrZXVwIGludGVycnVwdHMgZ2VuZXJhbGx5IG5lZWQgdG8gYmUgY29uZmlndXJlZCB0byB3YWtlIHVwIHRoZSBzeXN0ZW0KK2Zyb20gc2xlZXAgc3RhdGVzLCBlc3BlY2lhbGx5IGlmIHRoZXkgYXJlIHVzZWQgZm9yIGRpZmZlcmVudCBwdXJwb3NlcyAoZS5nLiBhcworSS9PIGludGVycnVwdHMpIGluIHRoZSB3b3JraW5nIHN0YXRlLgorCitUaGF0IG1heSBpbnZvbHZlIHR1cm5pbmcgb24gYSBzcGVjaWFsIHNpZ25hbCBoYW5kbGluZyBsb2dpYyB3aXRoaW4gdGhlIHBsYXRmb3JtCisoc3VjaCBhcyBhbiBTb0MpIHNvIHRoYXQgc2lnbmFscyBmcm9tIGEgZ2l2ZW4gbGluZSBhcmUgcm91dGVkIGluIGEgZGlmZmVyZW50IHdheQorZHVyaW5nIHN5c3RlbSBzbGVlcCBzbyBhcyB0byB0cmlnZ2VyIGEgc3lzdGVtIHdha2V1cCB3aGVuIG5lZWRlZC4gIEZvciBleGFtcGxlLAordGhlIHBsYXRmb3JtIG1heSBpbmNsdWRlIGEgZGVkaWNhdGVkIGludGVycnVwdCBjb250cm9sbGVyIHVzZWQgc3BlY2lmaWNhbGx5IGZvcgoraGFuZGxpbmcgc3lzdGVtIHdha2V1cCBldmVudHMuICBUaGVuLCBpZiBhIGdpdmVuIGludGVycnVwdCBsaW5lIGlzIHN1cHBvc2VkIHRvCit3YWtlIHVwIHRoZSBzeXN0ZW0gZnJvbSBzbGVlcCBzYXRlcywgdGhlIGNvcnJlc3BvbmRpbmcgaW5wdXQgb2YgdGhhdCBpbnRlcnJ1cHQKK2NvbnRyb2xsZXIgbmVlZHMgdG8gYmUgZW5hYmxlZCB0byByZWNlaXZlIHNpZ25hbHMgZnJvbSB0aGUgbGluZSBpbiBxdWVzdGlvbi4KK0FmdGVyIHdha2V1cCwgaXQgZ2VuZXJhbGx5IGlzIGJldHRlciB0byBkaXNhYmxlIHRoYXQgaW5wdXQgdG8gcHJldmVudCB0aGUKK2RlZGljYXRlZCBjb250cm9sbGVyIGZyb20gdHJpZ2dlcmluZyBpbnRlcnJ1cHRzIHVubmVjZXNzYXJpbHkuCisKK1RoZSBJUlEgc3Vic3lzdGVtIHByb3ZpZGVzIHR3byBoZWxwZXIgZnVuY3Rpb25zIHRvIGJlIHVzZWQgYnkgZGV2aWNlIGRyaXZlcnMgZm9yCit0aG9zZSBwdXJwb3Nlcy4gIE5hbWVseSwgZW5hYmxlX2lycV93YWtlKCkgdHVybnMgb24gdGhlIHBsYXRmb3JtJ3MgbG9naWMgZm9yCitoYW5kbGluZyB0aGUgZ2l2ZW4gSVJRIGFzIGEgc3lzdGVtIHdha2V1cCBpbnRlcnJ1cHQgbGluZSBhbmQgZGlzYWJsZV9pcnFfd2FrZSgpCit0dXJucyB0aGF0IGxvZ2ljIG9mZi4KKworQ2FsbGluZyBlbmFibGVfaXJxX3dha2UoKSBjYXVzZXMgc3VzcGVuZF9kZXZpY2VfaXJxcygpIHRvIHRyZWF0IHRoZSBnaXZlbiBJUlEKK2luIGEgc3BlY2lhbCB3YXkuICBOYW1lbHksIHRoZSBJUlEgcmVtYWlucyBlbmFibGVkLCBieSBvbiB0aGUgZmlyc3QgaW50ZXJydXB0CitpdCB3aWxsIGJlIGRpc2FibGVkLCBtYXJrZWQgYXMgcGVuZGluZyBhbmQgInN1c3BlbmRlZCIgc28gdGhhdCBpdCB3aWxsIGJlCityZS1lbmFibGVkIGJ5IHJlc3VtZV9kZXZpY2VfaXJxcygpIGR1cmluZyB0aGUgc3Vic2VxdWVudCBzeXN0ZW0gcmVzdW1lLiAgQWxzbwordGhlIFBNIGNvcmUgaXMgbm90aWZpZWQgYWJvdXQgdGhlIGV2ZW50IHdoaWNoIGNhdXNlcyB0aGUgc3lzdGVtIHN1c3BlbmQgaW4KK3Byb2dyZXNzIHRvIGJlIGFib3J0ZWQgKHRoYXQgZG9lc24ndCBoYXZlIHRvIGhhcHBlbiBpbW1lZGlhdGVseSwgYnV0IGF0IG9uZQorb2YgdGhlIHBvaW50cyB3aGVyZSB0aGUgc3VzcGVuZCB0aHJlYWQgbG9va3MgZm9yIHBlbmRpbmcgd2FrZXVwIGV2ZW50cykuCisKK1RoaXMgd2F5IGV2ZXJ5IGludGVycnVwdCBmcm9tIGEgd2FrZXVwIGludGVycnVwdCBzb3VyY2Ugd2lsbCBlaXRoZXIgY2F1c2UgdGhlCitzeXN0ZW0gc3VzcGVuZCBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MgdG8gYmUgYWJvcnRlZCBvciB3YWtlIHVwIHRoZSBzeXN0ZW0gaWYKK2FscmVhZHkgc3VzcGVuZGVkLiAgSG93ZXZlciwgYWZ0ZXIgc3VzcGVuZF9kZXZpY2VfaXJxcygpIGludGVycnVwdCBoYW5kbGVycyBhcmUKK25vdCBleGVjdXRlZCBmb3Igc3lzdGVtIHdha2V1cCBJUlFzLiAgVGhleSBhcmUgb25seSBleGVjdXRlZCBmb3IgSVJRRl9OT19TVVNQRU5ECitJUlFzIGF0IHRoYXQgdGltZSwgYnV0IHRob3NlIElSUXMgc2hvdWxkIG5vdCBiZSBjb25maWd1cmVkIGZvciBzeXN0ZW0gd2FrZXVwCit1c2luZyBlbmFibGVfaXJxX3dha2UoKS4KKworCitJbnRlcnJ1cHRzIGFuZCBTdXNwZW5kLXRvLUlkbGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTdXNwZW5kLXRvLWlkbGUgKGFsc28ga25vd24gYXMgdGhlICJmcmVlemUiIHNsZWVwIHN0YXRlKSBpcyBhIHJlbGF0aXZlbHkgbmV3CitzeXN0ZW0gc2xlZXAgc3RhdGUgdGhhdCB3b3JrcyBieSBpZGxpbmcgYWxsIG9mIHRoZSBwcm9jZXNzb3JzIGFuZCB3YWl0aW5nIGZvcgoraW50ZXJydXB0cyByaWdodCBhZnRlciB0aGUgIm5vaXJxIiBwaGFzZSBvZiBzdXNwZW5kaW5nIGRldmljZXMuCisKK09mIGNvdXJzZSwgdGhpcyBtZWFucyB0aGF0IGFsbCBvZiB0aGUgaW50ZXJydXB0cyB3aXRoIHRoZSBJUlFGX05PX1NVU1BFTkQgZmxhZworc2V0IHdpbGwgYnJpbmcgQ1BVcyBvdXQgb2YgaWRsZSB3aGlsZSBpbiB0aGF0IHN0YXRlLCBidXQgdGhleSB3aWxsIG5vdCBjYXVzZSB0aGUKK0lSUSBzdWJzeXN0ZW0gdG8gdHJpZ2dlciBhIHN5c3RlbSB3YWtldXAuCisKK1N5c3RlbSB3YWtldXAgaW50ZXJydXB0cywgaW4gdHVybiwgd2lsbCB0cmlnZ2VyIHdha2V1cCBmcm9tIHN1c3BlbmQtdG8taWRsZSBpbgorYW5hbG9neSB3aXRoIHdoYXQgdGhleSBkbyBpbiB0aGUgZnVsbCBzeXN0ZW0gc3VzcGVuZCBjYXNlLiAgVGhlIG9ubHkgZGlmZmVyZW5jZQoraXMgdGhhdCB0aGUgd2FrZXVwIGZyb20gc3VzcGVuZC10by1pZGxlIGlzIHNpZ25hbGVkIHVzaW5nIHRoZSB1c3VhbCB3b3JraW5nCitzdGF0ZSBpbnRlcnJ1cHQgZGVsaXZlcnkgbWVjaGFuaXNtcyBhbmQgZG9lc24ndCByZXF1aXJlIHRoZSBwbGF0Zm9ybSB0byB1c2UKK2FueSBzcGVjaWFsIGludGVycnVwdCBoYW5kbGluZyBsb2dpYyBmb3IgaXQgdG8gd29yay4KKworCitJUlFGX05PX1NVU1BFTkQgYW5kIGVuYWJsZV9pcnFfd2FrZSgpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXJlIGFyZSB2ZXJ5IGZldyB2YWxpZCByZWFzb25zIHRvIHVzZSBib3RoIGVuYWJsZV9pcnFfd2FrZSgpIGFuZCB0aGUKK0lSUUZfTk9fU1VTUEVORCBmbGFnIG9uIHRoZSBzYW1lIElSUSwgYW5kIGl0IGlzIG5ldmVyIHZhbGlkIHRvIHVzZSBib3RoIGZvciB0aGUKK3NhbWUgZGV2aWNlLgorCitGaXJzdCBvZiBhbGwsIGlmIHRoZSBJUlEgaXMgbm90IHNoYXJlZCwgdGhlIHJ1bGVzIGZvciBoYW5kbGluZyBJUlFGX05PX1NVU1BFTkQKK2ludGVycnVwdHMgKGludGVycnVwdCBoYW5kbGVycyBhcmUgaW52b2tlZCBhZnRlciBzdXNwZW5kX2RldmljZV9pcnFzKCkpIGFyZQorZGlyZWN0bHkgYXQgb2RkcyB3aXRoIHRoZSBydWxlcyBmb3IgaGFuZGxpbmcgc3lzdGVtIHdha2V1cCBpbnRlcnJ1cHRzIChpbnRlcnJ1cHQKK2hhbmRsZXJzIGFyZSBub3QgaW52b2tlZCBhZnRlciBzdXNwZW5kX2RldmljZV9pcnFzKCkpLgorCitTZWNvbmQsIGJvdGggZW5hYmxlX2lycV93YWtlKCkgYW5kIElSUUZfTk9fU1VTUEVORCBhcHBseSB0byBlbnRpcmUgSVJRcyBhbmQgbm90Cit0byBpbmRpdmlkdWFsIGludGVycnVwdCBoYW5kbGVycywgc28gc2hhcmluZyBhbiBJUlEgYmV0d2VlbiBhIHN5c3RlbSB3YWtldXAKK2ludGVycnVwdCBzb3VyY2UgYW5kIGFuIElSUUZfTk9fU1VTUEVORCBpbnRlcnJ1cHQgc291cmNlIGRvZXMgbm90IGdlbmVyYWxseQorbWFrZSBzZW5zZS4KKworSW4gcmFyZSBjYXNlcyBhbiBJUlEgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGEgd2FrZXVwIGRldmljZSBkcml2ZXIgYW5kIGFuCitJUlFGX05PX1NVU1BFTkQgdXNlci4gSW4gb3JkZXIgZm9yIHRoaXMgdG8gYmUgc2FmZSwgdGhlIHdha2V1cCBkZXZpY2UgZHJpdmVyCittdXN0IGJlIGFibGUgdG8gZGlzY2VybiBzcHVyaW91cyBJUlFzIGZyb20gZ2VudWluZSB3YWtldXAgZXZlbnRzIChzaWduYWxsaW5nCit0aGUgbGF0dGVyIHRvIHRoZSBjb3JlIHdpdGggcG1fc3lzdGVtX3dha2V1cCgpKSwgbXVzdCB1c2UgZW5hYmxlX2lycV93YWtlKCkgdG8KK2Vuc3VyZSB0aGF0IHRoZSBJUlEgd2lsbCBmdW5jdGlvbiBhcyBhIHdha2V1cCBzb3VyY2UsIGFuZCBtdXN0IHJlcXVlc3QgdGhlIElSUQord2l0aCBJUlFGX0NPTkRfU1VTUEVORCB0byB0ZWxsIHRoZSBjb3JlIHRoYXQgaXQgbWVldHMgdGhlc2UgcmVxdWlyZW1lbnRzLiBJZgordGhlc2UgcmVxdWlyZW1lbnRzIGFyZSBub3QgbWV0LCBpdCBpcyBub3QgdmFsaWQgdG8gdXNlIElSUUZfQ09ORF9TVVNQRU5ELgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlci9zd3N1c3AtYW5kLXN3YXAtZmlsZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci9zd3N1c3AtYW5kLXN3YXAtZmlsZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyODE4ODYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL3N3c3VzcC1hbmQtc3dhcC1maWxlcy50eHQKQEAgLTAsMCArMSw2MCBAQAorVXNpbmcgc3dhcCBmaWxlcyB3aXRoIHNvZnR3YXJlIHN1c3BlbmQgKHN3c3VzcCkKKwkoQykgMjAwNiBSYWZhZWwgSi4gV3lzb2NraSA8cmp3QHNpc2sucGw+CisKK1RoZSBMaW51eCBrZXJuZWwgaGFuZGxlcyBzd2FwIGZpbGVzIGFsbW9zdCBpbiB0aGUgc2FtZSB3YXkgYXMgaXQgaGFuZGxlcyBzd2FwCitwYXJ0aXRpb25zIGFuZCB0aGVyZSBhcmUgb25seSB0d28gZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGVzZSB0d28gdHlwZXMgb2Ygc3dhcAorYXJlYXM6CisoMSkgc3dhcCBmaWxlcyBuZWVkIG5vdCBiZSBjb250aWd1b3VzLAorKDIpIHRoZSBoZWFkZXIgb2YgYSBzd2FwIGZpbGUgaXMgbm90IGluIHRoZSBmaXJzdCBibG9jayBvZiB0aGUgcGFydGl0aW9uIHRoYXQKK2hvbGRzIGl0LiAgRnJvbSB0aGUgc3dzdXNwJ3MgcG9pbnQgb2YgdmlldyAoMSkgaXMgbm90IGEgcHJvYmxlbSwgYmVjYXVzZSBpdCBpcworYWxyZWFkeSB0YWtlbiBjYXJlIG9mIGJ5IHRoZSBzd2FwLWhhbmRsaW5nIGNvZGUsIGJ1dCAoMikgaGFzIHRvIGJlIHRha2VuIGludG8KK2NvbnNpZGVyYXRpb24uCisKK0luIHByaW5jaXBsZSB0aGUgbG9jYXRpb24gb2YgYSBzd2FwIGZpbGUncyBoZWFkZXIgbWF5IGJlIGRldGVybWluZWQgd2l0aCB0aGUKK2hlbHAgb2YgYXBwcm9wcmlhdGUgZmlsZXN5c3RlbSBkcml2ZXIuICBVbmZvcnR1bmF0ZWx5LCBob3dldmVyLCBpdCByZXF1aXJlcyB0aGUKK2ZpbGVzeXN0ZW0gaG9sZGluZyB0aGUgc3dhcCBmaWxlIHRvIGJlIG1vdW50ZWQsIGFuZCBpZiB0aGlzIGZpbGVzeXN0ZW0gaXMKK2pvdXJuYWxlZCwgaXQgY2Fubm90IGJlIG1vdW50ZWQgZHVyaW5nIHJlc3VtZSBmcm9tIGRpc2suICBGb3IgdGhpcyByZWFzb24gdG8KK2lkZW50aWZ5IGEgc3dhcCBmaWxlIHN3c3VzcCB1c2VzIHRoZSBuYW1lIG9mIHRoZSBwYXJ0aXRpb24gdGhhdCBob2xkcyB0aGUgZmlsZQorYW5kIHRoZSBvZmZzZXQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXJ0aXRpb24gYXQgd2hpY2ggdGhlIHN3YXAgZmlsZSdzCitoZWFkZXIgaXMgbG9jYXRlZC4gIEZvciBjb252ZW5pZW5jZSwgdGhpcyBvZmZzZXQgaXMgZXhwcmVzc2VkIGluIDxQQUdFX1NJWkU+Cit1bml0cy4KKworSW4gb3JkZXIgdG8gdXNlIGEgc3dhcCBmaWxlIHdpdGggc3dzdXNwLCB5b3UgbmVlZCB0bzoKKworMSkgQ3JlYXRlIHRoZSBzd2FwIGZpbGUgYW5kIG1ha2UgaXQgYWN0aXZlLCBlZy4KKworIyBkZCBpZj0vZGV2L3plcm8gb2Y9PHN3YXBfZmlsZV9wYXRoPiBicz0xMDI0IGNvdW50PTxzd2FwX2ZpbGVfc2l6ZV9pbl9rPgorIyBta3N3YXAgPHN3YXBfZmlsZV9wYXRoPgorIyBzd2Fwb24gPHN3YXBfZmlsZV9wYXRoPgorCisyKSBVc2UgYW4gYXBwbGljYXRpb24gdGhhdCB3aWxsIGJtYXAgdGhlIHN3YXAgZmlsZSB3aXRoIHRoZSBoZWxwIG9mIHRoZQorRklCTUFQIGlvY3RsIGFuZCBkZXRlcm1pbmUgdGhlIGxvY2F0aW9uIG9mIHRoZSBmaWxlJ3Mgc3dhcCBoZWFkZXIsIGFzIHRoZQorb2Zmc2V0LCBpbiA8UEFHRV9TSVpFPiB1bml0cywgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXJ0aXRpb24gd2hpY2gKK2hvbGRzIHRoZSBzd2FwIGZpbGUuCisKKzMpIEFkZCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnMgdG8gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmU6CisKK3Jlc3VtZT08c3dhcF9maWxlX3BhcnRpdGlvbj4gcmVzdW1lX29mZnNldD08c3dhcF9maWxlX29mZnNldD4KKword2hlcmUgPHN3YXBfZmlsZV9wYXJ0aXRpb24+IGlzIHRoZSBwYXJ0aXRpb24gb24gd2hpY2ggdGhlIHN3YXAgZmlsZSBpcyBsb2NhdGVkCithbmQgPHN3YXBfZmlsZV9vZmZzZXQ+IGlzIHRoZSBvZmZzZXQgb2YgdGhlIHN3YXAgaGVhZGVyIGRldGVybWluZWQgYnkgdGhlCithcHBsaWNhdGlvbiBpbiAyKSAob2YgY291cnNlLCB0aGlzIHN0ZXAgbWF5IGJlIGNhcnJpZWQgb3V0IGF1dG9tYXRpY2FsbHkKK2J5IHRoZSBzYW1lIGFwcGxpY2F0aW9uIHRoYXQgZGV0ZXJtaW5lcyB0aGUgc3dhcCBmaWxlJ3MgaGVhZGVyIG9mZnNldCB1c2luZyB0aGUKK0ZJQk1BUCBpb2N0bCkKKworT1IKKworVXNlIGEgdXNlcmxhbmQgc3VzcGVuZCBhcHBsaWNhdGlvbiB0aGF0IHdpbGwgc2V0IHRoZSBwYXJ0aXRpb24gYW5kIG9mZnNldAord2l0aCB0aGUgaGVscCBvZiB0aGUgU05BUFNIT1RfU0VUX1NXQVBfQVJFQSBpb2N0bCBkZXNjcmliZWQgaW4KK0RvY3VtZW50YXRpb24vcG93ZXIvdXNlcmxhbmQtc3dzdXNwLnR4dCAodGhpcyBpcyB0aGUgb25seSBtZXRob2QgdG8gc3VzcGVuZAordG8gYSBzd2FwIGZpbGUgYWxsb3dpbmcgdGhlIHJlc3VtZSB0byBiZSBpbml0aWF0ZWQgZnJvbSBhbiBpbml0cmQgb3IgaW5pdHJhbWZzCitpbWFnZSkuCisKK05vdywgc3dzdXNwIHdpbGwgdXNlIHRoZSBzd2FwIGZpbGUgaW4gdGhlIHNhbWUgd2F5IGluIHdoaWNoIGl0IHdvdWxkIHVzZSBhIHN3YXAKK3BhcnRpdGlvbi4gIEluIHBhcnRpY3VsYXIsIHRoZSBzd2FwIGZpbGUgaGFzIHRvIGJlIGFjdGl2ZSAoaWUuIGJlIHByZXNlbnQgaW4KKy9wcm9jL3N3YXBzKSBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGZvciBzdXNwZW5kaW5nLgorCitOb3RlIHRoYXQgaWYgdGhlIHN3YXAgZmlsZSB1c2VkIGZvciBzdXNwZW5kaW5nIGlzIGRlbGV0ZWQgYW5kIHJlY3JlYXRlZCwKK3RoZSBsb2NhdGlvbiBvZiBpdHMgaGVhZGVyIG5lZWQgbm90IGJlIHRoZSBzYW1lIGFzIGJlZm9yZS4gIFRodXMgZXZlcnkgdGltZQordGhpcyBoYXBwZW5zIHRoZSB2YWx1ZSBvZiB0aGUgInJlc3VtZV9vZmZzZXQ9IiBrZXJuZWwgY29tbWFuZCBsaW5lIHBhcmFtZXRlcgoraGFzIHRvIGJlIHVwZGF0ZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL3N3c3VzcC1kbWNyeXB0LnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvc3dzdXNwLWRtY3J5cHQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5OTMxYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VyL3N3c3VzcC1kbWNyeXB0LnR4dApAQCAtMCwwICsxLDEzOCBAQAorQXV0aG9yOiBBbmRyZWFzIFN0ZWlubWV0eiA8YXN0QGRvbWR2LmRlPgorCisKK0hvdyB0byB1c2UgZG0tY3J5cHQgYW5kIHN3c3VzcCB0b2dldGhlcjoKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU29tZSBwcmVyZXF1aXNpdGVzOgorWW91IGtub3cgaG93IGRtLWNyeXB0IHdvcmtzLiBJZiBub3QsIHZpc2l0IHRoZSBmb2xsb3dpbmcgd2ViIHBhZ2U6CitodHRwOi8vd3d3LnNhb3V0LmRlL21pc2MvZG0tY3J5cHQvCitZb3UgaGF2ZSByZWFkIERvY3VtZW50YXRpb24vcG93ZXIvc3dzdXNwLnR4dCBhbmQgdW5kZXJzdGFuZCBpdC4KK1lvdSBkaWQgcmVhZCBEb2N1bWVudGF0aW9uL2luaXRyZC50eHQgYW5kIGtub3cgaG93IGFuIGluaXRyZCB3b3Jrcy4KK1lvdSBrbm93IGhvdyB0byBjcmVhdGUgb3IgaG93IHRvIG1vZGlmeSBhbiBpbml0cmQuCisKK05vdyB5b3VyIHN5c3RlbSBpcyBwcm9wZXJseSBzZXQgdXAsIHlvdXIgZGlzayBpcyBlbmNyeXB0ZWQgZXhjZXB0IGZvcgordGhlIHN3YXAgZGV2aWNlKHMpIGFuZCB0aGUgYm9vdCBwYXJ0aXRpb24gd2hpY2ggbWF5IGNvbnRhaW4gYSBtaW5pCitzeXN0ZW0gZm9yIGNyeXB0byBzZXR1cCBhbmQvb3IgcmVzY3VlIHB1cnBvc2VzLiBZb3UgbWF5IGV2ZW4gaGF2ZQorYW4gaW5pdHJkIHRoYXQgZG9lcyB5b3VyIGN1cnJlbnQgY3J5cHRvIHNldHVwIGFscmVhZHkuCisKK0F0IHRoaXMgcG9pbnQgeW91IHdhbnQgdG8gZW5jcnlwdCB5b3VyIHN3YXAsIHRvby4gU3RpbGwgeW91IHdhbnQgdG8KK2JlIGFibGUgdG8gc3VzcGVuZCB1c2luZyBzd3N1c3AuIFRoaXMsIGhvd2V2ZXIsIG1lYW5zIHRoYXQgeW91CitoYXZlIHRvIGJlIGFibGUgdG8gZWl0aGVyIGVudGVyIGEgcGFzc3BocmFzZSBvciB0aGF0IHlvdSByZWFkCit0aGUga2V5KHMpIGZyb20gYW4gZXh0ZXJuYWwgZGV2aWNlIGxpa2UgYSBwY21jaWEgZmxhc2ggZGlzaworb3IgYW4gdXNiIHN0aWNrIHByaW9yIHRvIHJlc3VtZS4gU28geW91IG5lZWQgYW4gaW5pdHJkLCB0aGF0IHNldHMKK3VwIGRtLWNyeXB0IGFuZCB0aGVuIGFza3Mgc3dzdXNwIHRvIHJlc3VtZSBmcm9tIHRoZSBlbmNyeXB0ZWQKK3N3YXAgZGV2aWNlLgorCitUaGUgbW9zdCBpbXBvcnRhbnQgdGhpbmcgaXMgdGhhdCB5b3Ugc2V0IHVwIGRtLWNyeXB0IGluIHN1Y2gKK2Egd2F5IHRoYXQgdGhlIHN3YXAgZGV2aWNlIHlvdSBzdXNwZW5kIHRvL3Jlc3VtZSBmcm9tIGhhcworYWx3YXlzIHRoZSBzYW1lIG1ham9yL21pbm9yIHdpdGhpbiB0aGUgaW5pdHJkIGFzIHdlbGwgYXMKK3dpdGhpbiB5b3VyIHJ1bm5pbmcgc3lzdGVtLiBUaGUgZWFzaWVzdCB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlzCit0byBhbHdheXMgc2V0IHVwIHRoaXMgc3dhcCBkZXZpY2UgZmlyc3Qgd2l0aCBkbXNldHVwLCBzbyB0aGF0CitpdCB3aWxsIGFsd2F5cyBsb29rIGxpa2UgdGhlIGZvbGxvd2luZzoKKworYnJ3LS0tLS0tLSAgMSByb290IHJvb3QgMjU0LCAwIEp1bCAyOCAxMzozNyAvZGV2L21hcHBlci9zd2FwMAorCitOb3cgc2V0IHVwIHlvdXIga2VybmVsIHRvIHVzZSAvZGV2L21hcHBlci9zd2FwMCBhcyB0aGUgZGVmYXVsdAorcmVzdW1lIHBhcnRpdGlvbiwgc28geW91ciBrZXJuZWwgLmNvbmZpZyBjb250YWluczoKKworQ09ORklHX1BNX1NURF9QQVJUSVRJT049Ii9kZXYvbWFwcGVyL3N3YXAwIgorCitQcmVwYXJlIHlvdXIgYm9vdCBsb2FkZXIgdG8gdXNlIHRoZSBpbml0cmQgeW91IHdpbGwgY3JlYXRlIG9yCittb2RpZnkuIEZvciBsaWxvIHRoZSBzaW1wbGVzdCBzZXR1cCBsb29rcyBsaWtlIHRoZSBmb2xsb3dpbmcKK2xpbmVzOgorCitpbWFnZT0vYm9vdC92bWxpbnV6Citpbml0cmQ9L2Jvb3QvaW5pdHJkLmd6CitsYWJlbD1saW51eAorYXBwZW5kPSJyb290PS9kZXYvcmFtMCBpbml0PS9saW51eHJjIHJ3IgorCitGaW5hbGx5IHlvdSBuZWVkIHRvIGNyZWF0ZSBvciBtb2RpZnkgeW91ciBpbml0cmQuIExldHMgYXNzdW1lCit5b3UgY3JlYXRlIGFuIGluaXRyZCB0aGF0IHJlYWRzIHRoZSByZXF1aXJlZCBkbS1jcnlwdCBzZXR1cAorZnJvbSBhIHBjbWNpYSBmbGFzaCBkaXNrIGNhcmQuIFRoZSBjYXJkIGlzIGZvcm1hdHRlZCB3aXRoIGFuIGV4dDIKK2ZzIHdoaWNoIHJlc2lkZXMgb24gL2Rldi9oZGUxIHdoZW4gdGhlIGNhcmQgaXMgaW5zZXJ0ZWQuIFRoZQorY2FyZCBjb250YWlucyBhdCBsZWFzdCB0aGUgZW5jcnlwdGVkIHN3YXAgc2V0dXAgaW4gYSBmaWxlCituYW1lZCAic3dhcGtleSIuIC9ldGMvZnN0YWIgb2YgeW91ciBpbml0cmQgY29udGFpbnMgc29tZXRoaW5nCitsaWtlIHRoZSBmb2xsb3dpbmc6CisKKy9kZXYvaGRhMSAgIC9tbnQgICAgZXh0MyAgICAgIHJvICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgMAorbm9uZSAgICAgICAgL3Byb2MgICBwcm9jICAgICAgZGVmYXVsdHMsbm9hdGltZSxub2RpcmF0aW1lICAgMCAwCitub25lICAgICAgICAvc3lzICAgIHN5c2ZzICAgICBkZWZhdWx0cyxub2F0aW1lLG5vZGlyYXRpbWUgICAwIDAKKworL2Rldi9oZGExIGNvbnRhaW5zIGFuIHVuZW5jcnlwdGVkIG1pbmkgc3lzdGVtIHRoYXQgc2V0cyB1cCBhbGwKK29mIHlvdXIgY3J5cHRvIGRldmljZXMsIGFnYWluIGJ5IHJlYWRpbmcgdGhlIHNldHVwIGZyb20gdGhlCitwY21jaWEgZmxhc2ggZGlzay4gV2hhdCBmb2xsb3dzIG5vdyBpcyBhIC9saW51eHJjIGZvciB5b3VyCitpbml0cmQgdGhhdCBhbGxvd3MgeW91IHRvIHJlc3VtZSBmcm9tIGVuY3J5cHRlZCBzd2FwIGFuZCB0aGF0Citjb250aW51ZXMgYm9vdCB3aXRoIHlvdXIgbWluaSBzeXN0ZW0gb24gL2Rldi9oZGExIGlmIHJlc3VtZQorZG9lcyBub3QgaGFwcGVuOgorCisjIS9iaW4vc2gKK1BBVEg9L3NiaW46L2JpbjovdXNyL3NiaW46L3Vzci9iaW4KK21vdW50IC9wcm9jCittb3VudCAvc3lzCittYXBwZWQ9MAorbm9yZXN1bWU9YGdyZXAgLWMgbm9yZXN1bWUgL3Byb2MvY21kbGluZWAKK2lmIFsgIiQqIiAhPSAiIiBdCit0aGVuCisgIG5vcmVzdW1lPTEKK2ZpCitkbWVzZyAtbiAxCisvc2Jpbi9jYXJkbWdyIC1xCitmb3IgaSBpbiAxIDIgMyA0IDUgNiA3IDggOSAwCitkbworICBpZiBbIC1mIC9wcm9jL2lkZS9oZGUvbWVkaWEgXQorICB0aGVuCisgICAgdXNsZWVwIDUwMDAwMAorICAgIG1vdW50IC10IGV4dDIgLW8gcm8gL2Rldi9oZGUxIC9tbnQKKyAgICBpZiBbIC1mIC9tbnQvc3dhcGtleSBdCisgICAgdGhlbgorICAgICAgZG1zZXR1cCBjcmVhdGUgc3dhcDAgL21udC9zd2Fwa2V5ID4gL2Rldi9udWxsIDI+JjEgJiYgbWFwcGVkPTEKKyAgICBmaQorICAgIHVtb3VudCAvbW50CisgICAgYnJlYWsKKyAgZmkKKyAgdXNsZWVwIDUwMDAwMAorZG9uZQora2lsbHByb2MgL3NiaW4vY2FyZG1ncgorZG1lc2cgLW4gNgoraWYgWyAkbWFwcGVkID0gMSBdCit0aGVuCisgIGlmIFsgJG5vcmVzdW1lICE9IDAgXQorICB0aGVuCisgICAgbWtzd2FwIC9kZXYvbWFwcGVyL3N3YXAwID4gL2Rldi9udWxsIDI+JjEKKyAgZmkKKyAgZWNobyAyNTQ6MCA+IC9zeXMvcG93ZXIvcmVzdW1lCisgIGRtc2V0dXAgcmVtb3ZlIHN3YXAwCitmaQordW1vdW50IC9zeXMKK21vdW50IC9tbnQKK3Vtb3VudCAvcHJvYworY2QgL21udAorcGl2b3Rfcm9vdCAuIG1udAorbW91bnQgL3Byb2MKK3Vtb3VudCAtbCAvbW50Cit1bW91bnQgL3Byb2MKK2V4ZWMgY2hyb290IC4gL3NiaW4vaW5pdCAkKiA8IGRldi9jb25zb2xlID4gZGV2L2NvbnNvbGUgMj4mMQorCitQbGVhc2UgZG9uJ3QgbWluZCB0aGUgd2VpcmQgbG9vcCBhYm92ZSwgYnVzeWJveCdzIG1zaCBkb2Vzbid0IGtub3cKK3RoZSBsZXQgc3RhdGVtZW50LiBOb3csIHdoYXQgaXMgaGFwcGVuaW5nIGluIHRoZSBzY3JpcHQ/CitGaXJzdCB3ZSBoYXZlIHRvIGRlY2lkZSBpZiB3ZSB3YW50IHRvIHRyeSB0byByZXN1bWUsIG9yIG5vdC4KK1dlIHdpbGwgbm90IHJlc3VtZSBpZiBib290aW5nIHdpdGggIm5vcmVzdW1lIiBvciBhbnkgcGFyYW1ldGVycworZm9yIGluaXQgbGlrZSAic2luZ2xlIiBvciAiZW1lcmdlbmN5IiBhcyBib290IHBhcmFtZXRlcnMuCisKK1RoZW4gd2UgbmVlZCB0byBzZXQgdXAgZG1jcnlwdCB3aXRoIHRoZSBzZXR1cCBkYXRhIGZyb20gdGhlCitwY21jaWEgZmxhc2ggZGlzay4gSWYgdGhpcyBzdWNjZWVkcyB3ZSBuZWVkIHRvIHJlc2V0IHRoZSBzd2FwCitkZXZpY2UgaWYgd2UgZG9uJ3Qgd2FudCB0byByZXN1bWUuIFRoZSBsaW5lICJlY2hvIDI1NDowID4gL3N5cy9wb3dlci9yZXN1bWUiCit0aGVuIGF0dGVtcHRzIHRvIHJlc3VtZSBmcm9tIHRoZSBmaXJzdCBkZXZpY2UgbWFwcGVyIGRldmljZS4KK05vdGUgdGhhdCBpdCBpcyBpbXBvcnRhbnQgdG8gc2V0IHRoZSBkZXZpY2UgaW4gL3N5cy9wb3dlci9yZXN1bWUsCityZWdhcmRsZXNzIGlmIHJlc3VtaW5nIG9yIG5vdCwgb3RoZXJ3aXNlIGxhdGVyIHN1c3BlbmQgd2lsbCBmYWlsLgorSWYgcmVzdW1lIHN0YXJ0cywgc2NyaXB0IGV4ZWN1dGlvbiB0ZXJtaW5hdGVzIGhlcmUuCisKK090aGVyd2lzZSB3ZSBqdXN0IHJlbW92ZSB0aGUgZW5jcnlwdGVkIHN3YXAgZGV2aWNlIGFuZCBsZWF2ZSBpdCB0byB0aGUKK21pbmkgc3lzdGVtIG9uIC9kZXYvaGRhMSB0byBzZXQgdGhlIHdob2xlIGNyeXB0byB1cCAoaXQgaXMgdXAgdG8KK3lvdSB0byBtb2RpZnkgdGhpcyB0byB5b3VyIHRhc3RlKS4KKworV2hhdCB0aGVuIGZvbGxvd3MgaXMgdGhlIHdlbGwga25vd24gcHJvY2VzcyB0byBjaGFuZ2UgdGhlIHJvb3QKK2ZpbGUgc3lzdGVtIGFuZCBjb250aW51ZSBib290aW5nIGZyb20gdGhlcmUuIEkgcHJlZmVyIHRvIHVubW91bnQKK3RoZSBpbml0cmQgcHJpb3IgdG8gY29udGludWUgYm9vdGluZyBidXQgaXQgaXMgdXAgdG8geW91IHRvIG1vZGlmeQordGhpcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvc3dzdXNwLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvc3dzdXNwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Y2MxN2NhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci9zd3N1c3AudHh0CkBAIC0wLDAgKzEsNDM4IEBACitTb21lIHdhcm5pbmdzLCBmaXJzdC4KKworICogQklHIEZBVCBXQVJOSU5HICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIElmIHlvdSB0b3VjaCBhbnl0aGluZyBvbiBkaXNrIGJldHdlZW4gc3VzcGVuZCBhbmQgcmVzdW1lLi4uCisgKgkJCQkuLi5raXNzIHlvdXIgZGF0YSBnb29kYnllLgorICoKKyAqIElmIHlvdSBkbyByZXN1bWUgZnJvbSBpbml0cmQgYWZ0ZXIgeW91ciBmaWxlc3lzdGVtcyBhcmUgbW91bnRlZC4uLgorICoJCQkJLi4uYnllIGJ5ZSByb290IHBhcnRpdGlvbi4KKyAqCQkJW3RoaXMgaXMgYWN0dWFsbHkgc2FtZSBjYXNlIGFzIGFib3ZlXQorICoKKyAqIElmIHlvdSBoYXZlIHVuc3VwcG9ydGVkICgqKSBkZXZpY2VzIHVzaW5nIERNQSwgeW91IG1heSBoYXZlIHNvbWUKKyAqIHByb2JsZW1zLiBJZiB5b3VyIGRpc2sgZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQgc3VzcGVuZC4uLiAoSURFIGRvZXMpLAorICogaXQgbWF5IGNhdXNlIHNvbWUgcHJvYmxlbXMsIHRvby4gSWYgeW91IGNoYW5nZSBrZXJuZWwgY29tbWFuZCBsaW5lCisgKiBiZXR3ZWVuIHN1c3BlbmQgYW5kIHJlc3VtZSwgaXQgbWF5IGRvIHNvbWV0aGluZyB3cm9uZy4gSWYgeW91IGNoYW5nZQorICogeW91ciBoYXJkd2FyZSB3aGlsZSBzeXN0ZW0gaXMgc3VzcGVuZGVkLi4uIHdlbGwsIGl0IHdhcyBub3QgZ29vZCBpZGVhOworICogYnV0IGl0IHdpbGwgcHJvYmFibHkgb25seSBjcmFzaC4KKyAqCisgKiAoKikgc3VzcGVuZC9yZXN1bWUgc3VwcG9ydCBpcyBuZWVkZWQgdG8gbWFrZSBpdCBzYWZlLgorICoKKyAqIElmIHlvdSBoYXZlIGFueSBmaWxlc3lzdGVtcyBvbiBVU0IgZGV2aWNlcyBtb3VudGVkIGJlZm9yZSBzb2Z0d2FyZSBzdXNwZW5kLAorICogdGhleSB3b24ndCBiZSBhY2Nlc3NpYmxlIGFmdGVyIHJlc3VtZSBhbmQgeW91IG1heSBsb3NlIGRhdGEsIGFzIHRob3VnaAorICogeW91IGhhdmUgdW5wbHVnZ2VkIHRoZSBVU0IgZGV2aWNlcyB3aXRoIG1vdW50ZWQgZmlsZXN5c3RlbXMgb24gdGhlbTsKKyAqIHNlZSB0aGUgRkFRIGJlbG93IGZvciBkZXRhaWxzLiAgKFRoaXMgaXMgbm90IHRydWUgZm9yIG1vcmUgdHJhZGl0aW9uYWwKKyAqIHBvd2VyIHN0YXRlcyBsaWtlICJzdGFuZGJ5Iiwgd2hpY2ggbm9ybWFsbHkgZG9uJ3QgdHVybiBVU0Igb2ZmLikKKworWW91IG5lZWQgdG8gYXBwZW5kIHJlc3VtZT0vZGV2L3lvdXJfc3dhcF9wYXJ0aXRpb24gdG8ga2VybmVsIGNvbW1hbmQKK2xpbmUuIFRoZW4geW91IHN1c3BlbmQgYnkKKworZWNobyBzaHV0ZG93biA+IC9zeXMvcG93ZXIvZGlzazsgZWNobyBkaXNrID4gL3N5cy9wb3dlci9zdGF0ZQorCisuIElmIHlvdSBmZWVsIEFDUEkgd29ya3MgcHJldHR5IHdlbGwgb24geW91ciBzeXN0ZW0sIHlvdSBtaWdodCB0cnkKKworZWNobyBwbGF0Zm9ybSA+IC9zeXMvcG93ZXIvZGlzazsgZWNobyBkaXNrID4gL3N5cy9wb3dlci9zdGF0ZQorCisuIElmIHlvdSB3b3VsZCBsaWtlIHRvIHdyaXRlIGhpYmVybmF0aW9uIGltYWdlIHRvIHN3YXAgYW5kIHRoZW4gc3VzcGVuZAordG8gUkFNIChwcm92aWRlZCB5b3VyIHBsYXRmb3JtIHN1cHBvcnRzIGl0KSwgeW91IGNhbiB0cnkKKworZWNobyBzdXNwZW5kID4gL3N5cy9wb3dlci9kaXNrOyBlY2hvIGRpc2sgPiAvc3lzL3Bvd2VyL3N0YXRlCisKKy4gSWYgeW91IGhhdmUgU0FUQSBkaXNrcywgeW91J2xsIG5lZWQgcmVjZW50IGtlcm5lbHMgd2l0aCBTQVRBIHN1c3BlbmQKK3N1cHBvcnQuIEZvciBzdXNwZW5kIGFuZCByZXN1bWUgdG8gd29yaywgbWFrZSBzdXJlIHlvdXIgZGlzayBkcml2ZXJzCithcmUgYnVpbHQgaW50byBrZXJuZWwgLS0gbm90IG1vZHVsZXMuIFtUaGVyZSdzIHdheSB0byBtYWtlCitzdXNwZW5kL3Jlc3VtZSB3aXRoIG1vZHVsYXIgZGlzayBkcml2ZXJzLCBzZWUgRkFRLCBidXQgeW91IHByb2JhYmx5CitzaG91bGQgbm90IGRvIHRoYXQuXQorCitJZiB5b3Ugd2FudCB0byBsaW1pdCB0aGUgc3VzcGVuZCBpbWFnZSBzaXplIHRvIE4gYnl0ZXMsIGRvCisKK2VjaG8gTiA+IC9zeXMvcG93ZXIvaW1hZ2Vfc2l6ZQorCitiZWZvcmUgc3VzcGVuZCAoaXQgaXMgbGltaXRlZCB0byA1MDAgTUIgYnkgZGVmYXVsdCkuCisKKy4gVGhlIHJlc3VtZSBwcm9jZXNzIGNoZWNrcyBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZSByZXN1bWUgZGV2aWNlLAoraWYgZm91bmQsIGl0IHRoZW4gY2hlY2tzIHRoZSBjb250ZW50cyBmb3IgdGhlIGhpYmVybmF0aW9uIGltYWdlIHNpZ25hdHVyZS4KK0lmIGJvdGggYXJlIGZvdW5kLCBpdCByZXN1bWVzIHRoZSBoaWJlcm5hdGlvbiBpbWFnZS4KKworLiBUaGUgcmVzdW1lIHByb2Nlc3MgbWF5IGJlIHRyaWdnZXJlZCBpbiB0d28gd2F5czoKKyAgMSkgRHVyaW5nIGxhdGVpbml0OiAgSWYgcmVzdW1lPS9kZXYveW91cl9zd2FwX3BhcnRpdGlvbiBpcyBzcGVjaWZpZWQgb24KKyAgICAgdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUsIGxhdGVpbml0IHJ1bnMgdGhlIHJlc3VtZSBwcm9jZXNzLiAgSWYgdGhlCisgICAgIHJlc3VtZSBkZXZpY2UgaGFzIG5vdCBiZWVuIHByb2JlZCB5ZXQsIHRoZSByZXN1bWUgcHJvY2VzcyBmYWlscyBhbmQKKyAgICAgYm9vdHVwIGNvbnRpbnVlcy4KKyAgMikgTWFudWFsbHkgZnJvbSBhbiBpbml0cmQgb3IgaW5pdHJhbWZzOiAgTWF5IGJlIHJ1biBmcm9tCisgICAgIHRoZSBpbml0IHNjcmlwdCBieSB1c2luZyB0aGUgL3N5cy9wb3dlci9yZXN1bWUgZmlsZS4gIEl0IGlzIHZpdGFsCisgICAgIHRoYXQgdGhpcyBiZSBkb25lIHByaW9yIHRvIHJlbW91bnRpbmcgYW55IGZpbGVzeXN0ZW1zIChldmVuIGFzCisgICAgIHJlYWQtb25seSkgb3RoZXJ3aXNlIGRhdGEgbWF5IGJlIGNvcnJ1cHRlZC4KKworQXJ0aWNsZSBhYm91dCBnb2FscyBhbmQgaW1wbGVtZW50YXRpb24gb2YgU29mdHdhcmUgU3VzcGVuZCBmb3IgTGludXgKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitBdXRob3I6IEfDoWJvciBLdXRpCitMYXN0IHJldmlzZWQ6IDIwMDMtMTAtMjAgYnkgUGF2ZWwgTWFjaGVrCisKK0lkZWEgYW5kIGdvYWxzIHRvIGFjaGlldmUKKworTm93YWRheXMgaXQgaXMgY29tbW9uIGluIHNldmVyYWwgbGFwdG9wcyB0aGF0IHRoZXkgaGF2ZSBhIHN1c3BlbmQgYnV0dG9uLiBJdAorc2F2ZXMgdGhlIHN0YXRlIG9mIHRoZSBtYWNoaW5lIHRvIGEgZmlsZXN5c3RlbSBvciB0byBhIHBhcnRpdGlvbiBhbmQgc3dpdGNoZXMKK3RvIHN0YW5kYnkgbW9kZS4gTGF0ZXIgcmVzdW1pbmcgdGhlIG1hY2hpbmUgdGhlIHNhdmVkIHN0YXRlIGlzIGxvYWRlZCBiYWNrIHRvCityYW0gYW5kIHRoZSBtYWNoaW5lIGNhbiBjb250aW51ZSBpdHMgd29yay4gSXQgaGFzIHR3byByZWFsIGJlbmVmaXRzLiBGaXJzdCB3ZQorc2F2ZSBvdXJzZWx2ZXMgdGhlIHRpbWUgbWFjaGluZSBnb2VzIGRvd24gYW5kIGxhdGVyIGJvb3RzIHVwLCBlbmVyZ3kgY29zdHMKK2FyZSByZWFsIGhpZ2ggd2hlbiBydW5uaW5nIGZyb20gYmF0dGVyaWVzLiBUaGUgb3RoZXIgZ2FpbiBpcyB0aGF0IHdlIGRvbid0IGhhdmUgdG8KK2ludGVycnVwdCBvdXIgcHJvZ3JhbXMgc28gcHJvY2Vzc2VzIHRoYXQgYXJlIGNhbGN1bGF0aW5nIHNvbWV0aGluZyBmb3IgYSBsb25nCit0aW1lIHNob3VsZG4ndCBuZWVkIHRvIGJlIHdyaXR0ZW4gaW50ZXJydXB0aWJsZS4KKworc3dzdXNwIHNhdmVzIHRoZSBzdGF0ZSBvZiB0aGUgbWFjaGluZSBpbnRvIGFjdGl2ZSBzd2FwcyBhbmQgdGhlbiByZWJvb3RzIG9yCitwb3dlcmRvd25zLiAgWW91IG11c3QgZXhwbGljaXRseSBzcGVjaWZ5IHRoZSBzd2FwIHBhcnRpdGlvbiB0byByZXN1bWUgZnJvbSB3aXRoCitgYHJlc3VtZT0nJyBrZXJuZWwgb3B0aW9uLiBJZiBzaWduYXR1cmUgaXMgZm91bmQgaXQgbG9hZHMgYW5kIHJlc3RvcmVzIHNhdmVkCitzdGF0ZS4gSWYgdGhlIG9wdGlvbiBgYG5vcmVzdW1lJycgaXMgc3BlY2lmaWVkIGFzIGEgYm9vdCBwYXJhbWV0ZXIsIGl0IHNraXBzCit0aGUgcmVzdW1pbmcuICBJZiB0aGUgb3B0aW9uIGBgaGliZXJuYXRlPW5vY29tcHJlc3MnJyBpcyBzcGVjaWZpZWQgYXMgYSBib290CitwYXJhbWV0ZXIsIGl0IHNhdmVzIGhpYmVybmF0aW9uIGltYWdlIHdpdGhvdXQgY29tcHJlc3Npb24uCisKK0luIHRoZSBtZWFudGltZSB3aGlsZSB0aGUgc3lzdGVtIGlzIHN1c3BlbmRlZCB5b3Ugc2hvdWxkIG5vdCBhZGQvcmVtb3ZlIGFueQorb2YgdGhlIGhhcmR3YXJlLCB3cml0ZSB0byB0aGUgZmlsZXN5c3RlbXMsIGV0Yy4KKworU2xlZXAgc3RhdGVzIHN1bW1hcnkKKz09PT09PT09PT09PT09PT09PT09CisKK1RoZXJlIGFyZSB0aHJlZSBkaWZmZXJlbnQgaW50ZXJmYWNlcyB5b3UgY2FuIHVzZSwgL3Byb2MvYWNwaSBzaG91bGQKK3dvcmsgbGlrZSB0aGlzOgorCitJbiBhIHJlYWxseSBwZXJmZWN0IHdvcmxkOgorZWNobyAxID4gL3Byb2MvYWNwaS9zbGVlcCAgICAgICAjIGZvciBzdGFuZGJ5CitlY2hvIDIgPiAvcHJvYy9hY3BpL3NsZWVwICAgICAgICMgZm9yIHN1c3BlbmQgdG8gcmFtCitlY2hvIDMgPiAvcHJvYy9hY3BpL3NsZWVwICAgICAgICMgZm9yIHN1c3BlbmQgdG8gcmFtLCBidXQgd2l0aCBtb3JlIHBvd2VyIGNvbnNlcnZhdGl2ZQorZWNobyA0ID4gL3Byb2MvYWNwaS9zbGVlcCAgICAgICAjIGZvciBzdXNwZW5kIHRvIGRpc2sKK2VjaG8gNSA+IC9wcm9jL2FjcGkvc2xlZXAgICAgICAgIyBmb3Igc2h1dGRvd24gdW5mcmllbmRseSB0aGUgc3lzdGVtCisKK2FuZCBwZXJoYXBzCitlY2hvIDRiID4gL3Byb2MvYWNwaS9zbGVlcCAgICAgICMgZm9yIHN1c3BlbmQgdG8gZGlzayB2aWEgczRiaW9zCisKK0ZyZXF1ZW50bHkgQXNrZWQgUXVlc3Rpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitROiB3ZWxsLCBzdXNwZW5kaW5nIGEgc2VydmVyIGlzIElNSE8gYSByZWFsbHkgc3R1cGlkIHRoaW5nLAorYnV0Li4uIChEaWVnbyBadWNjYXRvKToKKworQTogWW91IGJvdWdodCBuZXcgVVBTIGZvciB5b3VyIHNlcnZlci4gSG93IGRvIHlvdSBpbnN0YWxsIGl0IHdpdGhvdXQKK2JyaW5naW5nIG1hY2hpbmUgZG93bj8gU3VzcGVuZCB0byBkaXNrLCByZWFycmFuZ2UgcG93ZXIgY2FibGVzLAorcmVzdW1lLgorCitZb3UgaGF2ZSB5b3VyIHNlcnZlciBvbiBVUFMuIFBvd2VyIGRpZWQsIGFuZCBVUFMgaXMgaW5kaWNhdGluZyAzMAorc2Vjb25kcyB0byBmYWlsdXJlLiBXaGF0IGRvIHlvdSBkbz8gU3VzcGVuZCB0byBkaXNrLgorCisKK1E6IE1heWJlIEknbSBtaXNzaW5nIHNvbWV0aGluZywgYnV0IHdoeSBkb24ndCB0aGUgcmVndWxhciBJL08gcGF0aHMgd29yaz8KKworQTogV2UgZG8gdXNlIHRoZSByZWd1bGFyIEkvTyBwYXRocy4gSG93ZXZlciB3ZSBjYW5ub3QgcmVzdG9yZSB0aGUgZGF0YQordG8gaXRzIG9yaWdpbmFsIGxvY2F0aW9uIGFzIHdlIGxvYWQgaXQuIFRoYXQgd291bGQgY3JlYXRlIGFuCitpbmNvbnNpc3RlbnQga2VybmVsIHN0YXRlIHdoaWNoIHdvdWxkIGNlcnRhaW5seSByZXN1bHQgaW4gYW4gb29wcy4KK0luc3RlYWQsIHdlIGxvYWQgdGhlIGltYWdlIGludG8gdW51c2VkIG1lbW9yeSBhbmQgdGhlbiBhdG9taWNhbGx5IGNvcHkKK2l0IGJhY2sgdG8gaXQgb3JpZ2luYWwgbG9jYXRpb24uIFRoaXMgaW1wbGllcywgb2YgY291cnNlLCBhIG1heGltdW0KK2ltYWdlIHNpemUgb2YgaGFsZiB0aGUgYW1vdW50IG9mIG1lbW9yeS4KKworVGhlcmUgYXJlIHR3byBzb2x1dGlvbnMgdG8gdGhpczoKKworKiByZXF1aXJlIGhhbGYgb2YgbWVtb3J5IHRvIGJlIGZyZWUgZHVyaW5nIHN1c3BlbmQuIFRoYXQgd2F5IHlvdSBjYW4KK3JlYWQgIm5ldyIgZGF0YSBvbnRvIGZyZWUgc3BvdHMsIHRoZW4gY2xpIGFuZCBjb3B5CisKKyogYXNzdW1lIHdlIGhhZCBzcGVjaWFsICJwb2xsaW5nIiBpZGUgZHJpdmVyIHRoYXQgb25seSB1c2VzIG1lbW9yeQorYmV0d2VlbiAwLTY0MEtCLiBUaGF0IHdheSwgSSdkIGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgMC02NDBLQiBpcyBmcmVlCitkdXJpbmcgc3VzcGVuZGluZywgYnV0IG90aGVyd2lzZSBpdCB3b3VsZCB3b3JrLi4uCisKK3N1c3BlbmQyIHNoYXJlcyB0aGlzIGZ1bmRhbWVudGFsIGxpbWl0YXRpb24sIGJ1dCBkb2VzIG5vdCBpbmNsdWRlIHVzZXIKK2RhdGEgYW5kIGRpc2sgY2FjaGVzIGludG8gInVzZWQgbWVtb3J5IiBieSBzYXZpbmcgdGhlbSBpbgorYWR2YW5jZS4gVGhhdCBtZWFucyB0aGF0IHRoZSBsaW1pdGF0aW9uIGdvZXMgYXdheSBpbiBwcmFjdGljZS4KKworUTogRG9lcyBsaW51eCBzdXBwb3J0IEFDUEkgUzQ/CisKK0E6IFllcy4gVGhhdCdzIHdoYXQgZWNobyBwbGF0Zm9ybSA+IC9zeXMvcG93ZXIvZGlzayBkb2VzLgorCitROiBXaGF0IGlzICdzdXNwZW5kMic/CisKK0E6IHN1c3BlbmQyIGlzICdTb2Z0d2FyZSBTdXNwZW5kIDInLCBhIGZvcmtlZCBpbXBsZW1lbnRhdGlvbiBvZgorc3VzcGVuZC10by1kaXNrIHdoaWNoIGlzIGF2YWlsYWJsZSBhcyBzZXBhcmF0ZSBwYXRjaGVzIGZvciAyLjQgYW5kIDIuNgora2VybmVscyBmcm9tIHN3c3VzcC5zb3VyY2Vmb3JnZS5uZXQuIEl0IGluY2x1ZGVzIHN1cHBvcnQgZm9yIFNNUCwgNEdCCitoaWdobWVtIGFuZCBwcmVlbXB0aW9uLiBJdCBhbHNvIGhhcyBhIGV4dGVuc2libGUgYXJjaGl0ZWN0dXJlIHRoYXQKK2FsbG93cyBmb3IgYXJiaXRyYXJ5IHRyYW5zZm9ybWF0aW9ucyBvbiB0aGUgaW1hZ2UgKGNvbXByZXNzaW9uLAorZW5jcnlwdGlvbikgYW5kIGFyYml0cmFyeSBiYWNrZW5kcyBmb3Igd3JpdGluZyB0aGUgaW1hZ2UgKGVnIHRvIHN3YXAKK29yIGFuIE5GUyBzaGFyZVtXb3JrIEluIFByb2dyZXNzXSkuIFF1ZXN0aW9ucyByZWdhcmRpbmcgc3VzcGVuZDIKK3Nob3VsZCBiZSBzZW50IHRvIHRoZSBtYWlsaW5nIGxpc3QgYXZhaWxhYmxlIHRocm91Z2ggdGhlIHN1c3BlbmQyCit3ZWJzaXRlLCBhbmQgbm90IHRvIHRoZSBMaW51eCBLZXJuZWwgTWFpbGluZyBMaXN0LiBXZSBhcmUgd29ya2luZwordG93YXJkIG1lcmdpbmcgc3VzcGVuZDIgaW50byB0aGUgbWFpbmxpbmUga2VybmVsLgorCitROiBXaGF0IGlzIHRoZSBmcmVlemluZyBvZiB0YXNrcyBhbmQgd2h5IGFyZSB3ZSB1c2luZyBpdD8KKworQTogVGhlIGZyZWV6aW5nIG9mIHRhc2tzIGlzIGEgbWVjaGFuaXNtIGJ5IHdoaWNoIHVzZXIgc3BhY2UgcHJvY2Vzc2VzIGFuZCBzb21lCitrZXJuZWwgdGhyZWFkcyBhcmUgY29udHJvbGxlZCBkdXJpbmcgaGliZXJuYXRpb24gb3Igc3lzdGVtLXdpZGUgc3VzcGVuZCAob24gc29tZQorYXJjaGl0ZWN0dXJlcykuICBTZWUgZnJlZXppbmctb2YtdGFza3MudHh0IGZvciBkZXRhaWxzLgorCitROiBXaGF0IGlzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gInBsYXRmb3JtIiBhbmQgInNodXRkb3duIj8KKworQToKKworc2h1dGRvd246IHNhdmUgc3RhdGUgaW4gbGludXgsIHRoZW4gdGVsbCBiaW9zIHRvIHBvd2VyZG93bgorCitwbGF0Zm9ybTogc2F2ZSBzdGF0ZSBpbiBsaW51eCwgdGhlbiB0ZWxsIGJpb3MgdG8gcG93ZXJkb3duIGFuZCBibGluaworICAgICAgICAgICJzdXNwZW5kZWQgbGVkIgorCisicGxhdGZvcm0iIGlzIGFjdHVhbGx5IHJpZ2h0IHRoaW5nIHRvIGRvIHdoZXJlIHN1cHBvcnRlZCwgYnV0Cisic2h1dGRvd24iIGlzIG1vc3QgcmVsaWFibGUgKGV4Y2VwdCBvbiBBQ1BJIHN5c3RlbXMpLgorCitROiBJIGRvIG5vdCB1bmRlcnN0YW5kIHdoeSB5b3UgaGF2ZSBzdWNoIHN0cm9uZyBvYmplY3Rpb25zIHRvIGlkZWEgb2YKK3NlbGVjdGl2ZSBzdXNwZW5kLgorCitBOiBEbyBzZWxlY3RpdmUgc3VzcGVuZCBkdXJpbmcgcnVudGltZSBwb3dlciBtYW5hZ2VtZW50LCB0aGF0J3Mgb2theS4gQnV0CitpdCdzIHVzZWxlc3MgZm9yIHN1c3BlbmQtdG8tZGlzay4gKEFuZCBJIGRvIG5vdCBzZWUgaG93IHlvdSBjb3VsZCB1c2UKK2l0IGZvciBzdXNwZW5kLXRvLXJhbSwgSSBob3BlIHlvdSBkbyBub3Qgd2FudCB0aGF0KS4KKworTGV0cyBzZWUsIHNvIHlvdSBzdWdnZXN0IHRvCisKKyogU1VTUEVORCBhbGwgYnV0IHN3YXAgZGV2aWNlIGFuZCBwYXJlbnRzCisqIFNuYXBzaG90CisqIFdyaXRlIGltYWdlIHRvIGRpc2sKKyogU1VTUEVORCBzd2FwIGRldmljZSBhbmQgcGFyZW50cworKiBQb3dlcmRvd24KKworT2ggbm8sIHRoYXQgZG9lcyBub3Qgd29yaywgaWYgc3dhcCBkZXZpY2Ugb3IgaXRzIHBhcmVudHMgdXNlcyBETUEsCit5b3UndmUgY29ycnVwdGVkIGRhdGEuIFlvdSdkIGhhdmUgdG8gZG8KKworKiBTVVNQRU5EIGFsbCBidXQgc3dhcCBkZXZpY2UgYW5kIHBhcmVudHMKKyogRlJFRVpFIHN3YXAgZGV2aWNlIGFuZCBwYXJlbnRzCisqIFNuYXBzaG90CisqIFVORlJFRVpFIHN3YXAgZGV2aWNlIGFuZCBwYXJlbnRzCisqIFdyaXRlCisqIFNVU1BFTkQgc3dhcCBkZXZpY2UgYW5kIHBhcmVudHMKKworV2hpY2ggbWVhbnMgdGhhdCB5b3Ugc3RpbGwgbmVlZCB0aGF0IEZSRUVaRSBzdGF0ZSwgYW5kIHlvdSBnZXQgbW9yZQorY29tcGxpY2F0ZWQgY29kZS4gKEFuZCBJIGhhdmUgbm90IHlldCBpbnRyb2R1Y2UgZGV0YWlscyBsaWtlIHN5c3RlbQorZGV2aWNlcykuCisKK1E6IFRoZXJlIGRvbid0IHNlZW0gdG8gYmUgYW55IGdlbmVyYWxseSB1c2VmdWwgYmVoYXZpb3JhbAorZGlzdGluY3Rpb25zIGJldHdlZW4gU1VTUEVORCBhbmQgRlJFRVpFLgorCitBOiBEb2luZyBTVVNQRU5EIHdoZW4geW91IGFyZSBhc2tlZCB0byBkbyBGUkVFWkUgaXMgYWx3YXlzIGNvcnJlY3QsCitidXQgaXQgbWF5IGJlIHVubmVjZXNzYXJpbHkgc2xvdy4gSWYgeW91IHdhbnQgeW91ciBkcml2ZXIgdG8gc3RheSBzaW1wbGUsCitzbG93bmVzcyBtYXkgbm90IG1hdHRlciB0byB5b3UuIEl0IGNhbiBhbHdheXMgYmUgZml4ZWQgbGF0ZXIuCisKK0ZvciBkZXZpY2VzIGxpa2UgZGlzayBpdCBkb2VzIG1hdHRlciwgeW91IGRvIG5vdCB3YW50IHRvIHNwaW5kb3duIGZvcgorRlJFRVpFLgorCitROiBBZnRlciByZXN1bWluZywgc3lzdGVtIGlzIHBhZ2luZyBoZWF2aWx5LCBsZWFkaW5nIHRvIHZlcnkgYmFkIGludGVyYWN0aXZpdHkuCisKK0E6IFRyeSBydW5uaW5nCisKK2NhdCAvcHJvYy9bMC05XSovbWFwcyB8IGdyZXAgLyB8IHNlZCAnczouKiAvOi86JyB8IHNvcnQgLXUgfCB3aGlsZSByZWFkIGZpbGUKK2RvCisgIHRlc3QgLWYgIiRmaWxlIiAmJiBjYXQgIiRmaWxlIiA+IC9kZXYvbnVsbAorZG9uZQorCithZnRlciByZXN1bWUuIHN3YXBvZmYgLWE7IHN3YXBvbiAtYSBtYXkgYWxzbyBiZSB1c2VmdWwuCisKK1E6IFdoYXQgaGFwcGVucyB0byBkZXZpY2VzIGR1cmluZyBzd3N1c3A/IFRoZXkgc2VlbSB0byBiZSByZXN1bWVkCitkdXJpbmcgc3lzdGVtIHN1c3BlbmQ/CisKK0E6IFRoYXQncyBjb3JyZWN0LiBXZSBuZWVkIHRvIHJlc3VtZSB0aGVtIGlmIHdlIHdhbnQgdG8gd3JpdGUgaW1hZ2UgdG8KK2Rpc2suIFdob2xlIHNlcXVlbmNlIGdvZXMgbGlrZQorCisgICAgICBTdXNwZW5kIHBhcnQKKyAgICAgIH5+fn5+fn5+fn5+fgorICAgICAgcnVubmluZyBzeXN0ZW0sIHVzZXIgYXNrcyBmb3Igc3VzcGVuZC10by1kaXNrCisKKyAgICAgIHVzZXIgcHJvY2Vzc2VzIGFyZSBzdG9wcGVkCisKKyAgICAgIHN1c3BlbmQoUE1TR19GUkVFWkUpOiBkZXZpY2VzIGFyZSBmcm96ZW4gc28gdGhhdCB0aGV5IGRvbid0IGludGVyZmVyZQorICAgICAgCQkgICAgICB3aXRoIHN0YXRlIHNuYXBzaG90CisKKyAgICAgIHN0YXRlIHNuYXBzaG90OiBjb3B5IG9mIHdob2xlIHVzZWQgbWVtb3J5IGlzIHRha2VuIHdpdGggaW50ZXJydXB0cyBkaXNhYmxlZAorCisgICAgICByZXN1bWUoKTogZGV2aWNlcyBhcmUgd29rZW4gdXAgc28gdGhhdCB3ZSBjYW4gd3JpdGUgaW1hZ2UgdG8gc3dhcAorCisgICAgICB3cml0ZSBpbWFnZSB0byBzd2FwCisKKyAgICAgIHN1c3BlbmQoUE1TR19TVVNQRU5EKTogc3VzcGVuZCBkZXZpY2VzIHNvIHRoYXQgd2UgY2FuIHBvd2VyIG9mZgorCisgICAgICB0dXJuIHRoZSBwb3dlciBvZmYKKworICAgICAgUmVzdW1lIHBhcnQKKyAgICAgIH5+fn5+fn5+fn5+CisgICAgICAoaXMgYWN0dWFsbHkgcHJldHR5IHNpbWlsYXIpCisKKyAgICAgIHJ1bm5pbmcgc3lzdGVtLCB1c2VyIGFza3MgZm9yIHN1c3BlbmQtdG8tZGlzaworCisgICAgICB1c2VyIHByb2Nlc3NlcyBhcmUgc3RvcHBlZCAoaW4gY29tbW9uIGNhc2UgdGhlcmUgYXJlIG5vbmUsIGJ1dCB3aXRoIHJlc3VtZS1mcm9tLWluaXRyZCwgbm8gb25lIGtub3dzKQorCisgICAgICByZWFkIGltYWdlIGZyb20gZGlzaworCisgICAgICBzdXNwZW5kKFBNU0dfRlJFRVpFKTogZGV2aWNlcyBhcmUgZnJvemVuIHNvIHRoYXQgdGhleSBkb24ndCBpbnRlcmZlcmUKKyAgICAgIAkJICAgICAgd2l0aCBpbWFnZSByZXN0b3JhdGlvbgorCisgICAgICBpbWFnZSByZXN0b3JhdGlvbjogcmV3cml0ZSBtZW1vcnkgd2l0aCBpbWFnZQorCisgICAgICByZXN1bWUoKTogZGV2aWNlcyBhcmUgd29rZW4gdXAgc28gdGhhdCBzeXN0ZW0gY2FuIGNvbnRpbnVlCisKKyAgICAgIHRoYXcgYWxsIHVzZXIgcHJvY2Vzc2VzCisKK1E6IFdoYXQgaXMgdGhpcyAnRW5jcnlwdCBzdXNwZW5kIGltYWdlJyBmb3I/CisKK0E6IEZpcnN0IG9mIGFsbDogaXQgaXMgbm90IGEgcmVwbGFjZW1lbnQgZm9yIGRtLWNyeXB0IGVuY3J5cHRlZCBzd2FwLgorSXQgY2Fubm90IHByb3RlY3QgeW91ciBjb21wdXRlciB3aGlsZSBpdCBpcyBzdXNwZW5kZWQuIEluc3RlYWQgaXQgZG9lcworcHJvdGVjdCBmcm9tIGxlYWtpbmcgc2Vuc2l0aXZlIGRhdGEgYWZ0ZXIgcmVzdW1lIGZyb20gc3VzcGVuZC4KKworVGhpbmsgb2YgdGhlIGZvbGxvd2luZzogeW91IHN1c3BlbmQgd2hpbGUgYW4gYXBwbGljYXRpb24gaXMgcnVubmluZwordGhhdCBrZWVwcyBzZW5zaXRpdmUgZGF0YSBpbiBtZW1vcnkuIFRoZSBhcHBsaWNhdGlvbiBpdHNlbGYgcHJldmVudHMKK3RoZSBkYXRhIGZyb20gYmVpbmcgc3dhcHBlZCBvdXQuIFN1c3BlbmQsIGhvd2V2ZXIsIG11c3Qgd3JpdGUgdGhlc2UKK2RhdGEgdG8gc3dhcCB0byBiZSBhYmxlIHRvIHJlc3VtZSBsYXRlciBvbi4gV2l0aG91dCBzdXNwZW5kIGVuY3J5cHRpb24KK3lvdXIgc2Vuc2l0aXZlIGRhdGEgYXJlIHRoZW4gc3RvcmVkIGluIHBsYWludGV4dCBvbiBkaXNrLiAgVGhpcyBtZWFucwordGhhdCBhZnRlciByZXN1bWUgeW91ciBzZW5zaXRpdmUgZGF0YSBhcmUgYWNjZXNzaWJsZSB0byBhbGwKK2FwcGxpY2F0aW9ucyBoYXZpbmcgZGlyZWN0IGFjY2VzcyB0byB0aGUgc3dhcCBkZXZpY2Ugd2hpY2ggd2FzIHVzZWQKK2ZvciBzdXNwZW5kLiBJZiB5b3UgZG9uJ3QgbmVlZCBzd2FwIGFmdGVyIHJlc3VtZSB0aGVzZSBkYXRhIGNhbiByZW1haW4KK29uIGRpc2sgdmlydHVhbGx5IGZvcmV2ZXIuIFRodXMgaXQgY2FuIGhhcHBlbiB0aGF0IHlvdXIgc3lzdGVtIGdldHMKK2Jyb2tlbiBpbiB3ZWVrcyBsYXRlciBhbmQgc2Vuc2l0aXZlIGRhdGEgd2hpY2ggeW91IHRob3VnaHQgd2VyZQorZW5jcnlwdGVkIGFuZCBwcm90ZWN0ZWQgYXJlIHJldHJpZXZlZCBhbmQgc3RvbGVuIGZyb20gdGhlIHN3YXAgZGV2aWNlLgorVG8gcHJldmVudCB0aGlzIHNpdHVhdGlvbiB5b3Ugc2hvdWxkIHVzZSAnRW5jcnlwdCBzdXNwZW5kIGltYWdlJy4KKworRHVyaW5nIHN1c3BlbmQgYSB0ZW1wb3Jhcnkga2V5IGlzIGNyZWF0ZWQgYW5kIHRoaXMga2V5IGlzIHVzZWQgdG8KK2VuY3J5cHQgdGhlIGRhdGEgd3JpdHRlbiB0byBkaXNrLiBXaGVuLCBkdXJpbmcgcmVzdW1lLCB0aGUgZGF0YSB3YXMKK3JlYWQgYmFjayBpbnRvIG1lbW9yeSB0aGUgdGVtcG9yYXJ5IGtleSBpcyBkZXN0cm95ZWQgd2hpY2ggc2ltcGx5CittZWFucyB0aGF0IGFsbCBkYXRhIHdyaXR0ZW4gdG8gZGlzayBkdXJpbmcgc3VzcGVuZCBhcmUgdGhlbgoraW5hY2Nlc3NpYmxlIHNvIHRoZXkgY2FuJ3QgYmUgc3RvbGVuIGxhdGVyIG9uLiAgVGhlIG9ubHkgdGhpbmcgdGhhdAoreW91IG11c3QgdGhlbiB0YWtlIGNhcmUgb2YgaXMgdGhhdCB5b3UgY2FsbCAnbWtzd2FwJyBmb3IgdGhlIHN3YXAKK3BhcnRpdGlvbiB1c2VkIGZvciBzdXNwZW5kIGFzIGVhcmx5IGFzIHBvc3NpYmxlIGR1cmluZyByZWd1bGFyCitib290LiBUaGlzIGFzc2VydHMgdGhhdCBhbnkgdGVtcG9yYXJ5IGtleSBmcm9tIGFuIG9vcHNlZCBzdXNwZW5kIG9yCitmcm9tIGEgZmFpbGVkIG9yIGFib3J0ZWQgcmVzdW1lIGlzIGVyYXNlZCBmcm9tIHRoZSBzd2FwIGRldmljZS4KKworQXMgYSBydWxlIG9mIHRodW1iIHVzZSBlbmNyeXB0ZWQgc3dhcCB0byBwcm90ZWN0IHlvdXIgZGF0YSB3aGlsZSB5b3VyCitzeXN0ZW0gaXMgc2h1dCBkb3duIG9yIHN1c3BlbmRlZC4gQWRkaXRpb25hbGx5IHVzZSB0aGUgZW5jcnlwdGVkCitzdXNwZW5kIGltYWdlIHRvIHByZXZlbnQgc2Vuc2l0aXZlIGRhdGEgZnJvbSBiZWluZyBzdG9sZW4gYWZ0ZXIKK3Jlc3VtZS4KKworUTogQ2FuIEkgc3VzcGVuZCB0byBhIHN3YXAgZmlsZT8KKworQTogR2VuZXJhbGx5LCB5ZXMsIHlvdSBjYW4uICBIb3dldmVyLCBpdCByZXF1aXJlcyB5b3UgdG8gdXNlIHRoZSAicmVzdW1lPSIgYW5kCisicmVzdW1lX29mZnNldD0iIGtlcm5lbCBjb21tYW5kIGxpbmUgcGFyYW1ldGVycywgc28gdGhlIHJlc3VtZSBmcm9tIGEgc3dhcCBmaWxlCitjYW5ub3QgYmUgaW5pdGlhdGVkIGZyb20gYW4gaW5pdHJkIG9yIGluaXRyYW1mcyBpbWFnZS4gIFNlZQorc3dzdXNwLWFuZC1zd2FwLWZpbGVzLnR4dCBmb3IgZGV0YWlscy4KKworUTogSXMgdGhlcmUgYSBtYXhpbXVtIHN5c3RlbSBSQU0gc2l6ZSB0aGF0IGlzIHN1cHBvcnRlZCBieSBzd3N1c3A/CisKK0E6IEl0IHNob3VsZCB3b3JrIG9rYXkgd2l0aCBoaWdobWVtLgorCitROiBEb2VzIHN3c3VzcCAodG8gZGlzaykgdXNlIG9ubHkgb25lIHN3YXAgcGFydGl0aW9uIG9yIGNhbiBpdCB1c2UKK211bHRpcGxlIHN3YXAgcGFydGl0aW9ucyAoYWdncmVnYXRlIHRoZW0gaW50byBvbmUgbG9naWNhbCBzcGFjZSk/CisKK0E6IE9ubHkgb25lIHN3YXAgcGFydGl0aW9uLCBzb3JyeS4KKworUTogSWYgbXkgYXBwbGljYXRpb24ocykgY2F1c2VzIGxvdHMgb2YgbWVtb3J5ICYgc3dhcCBzcGFjZSB0byBiZSB1c2VkCisob3ZlciBoYWxmIG9mIHRoZSB0b3RhbCBzeXN0ZW0gUkFNKSwgaXMgaXQgY29ycmVjdCB0aGF0IGl0IGlzIGxpa2VseQordG8gYmUgdXNlbGVzcyB0byB0cnkgdG8gc3VzcGVuZCB0byBkaXNrIHdoaWxlIHRoYXQgYXBwIGlzIHJ1bm5pbmc/CisKK0E6IE5vLCBpdCBzaG91bGQgd29yayBva2F5LCBhcyBsb25nIGFzIHlvdXIgYXBwIGRvZXMgbm90IG1sb2NrKCkKK2l0LiBKdXN0IHByZXBhcmUgYmlnIGVub3VnaCBzd2FwIHBhcnRpdGlvbi4KKworUTogV2hhdCBpbmZvcm1hdGlvbiBpcyB1c2VmdWwgZm9yIGRlYnVnZ2luZyBzdXNwZW5kLXRvLWRpc2sgcHJvYmxlbXM/CisKK0E6IFdlbGwsIGxhc3QgbWVzc2FnZXMgb24gdGhlIHNjcmVlbiBhcmUgYWx3YXlzIHVzZWZ1bC4gSWYgc29tZXRoaW5nCitpcyBicm9rZW4sIGl0IGlzIHVzdWFsbHkgc29tZSBrZXJuZWwgZHJpdmVyLCB0aGVyZWZvcmUgdHJ5aW5nIHdpdGggYXMKK2xpdHRsZSBhcyBwb3NzaWJsZSBtb2R1bGVzIGxvYWRlZCBoZWxwcyBhIGxvdC4gSSBhbHNvIHByZWZlciBwZW9wbGUgdG8KK3N1c3BlbmQgZnJvbSBjb25zb2xlLCBwcmVmZXJhYmx5IHdpdGhvdXQgWCBydW5uaW5nLiBCb290aW5nIHdpdGgKK2luaXQ9L2Jpbi9iYXNoLCB0aGVuIHN3YXBvbiBhbmQgc3RhcnRpbmcgc3VzcGVuZCBzZXF1ZW5jZSBtYW51YWxseQordXN1YWxseSBkb2VzIHRoZSB0cmljay4gVGhlbiBpdCBpcyBnb29kIGlkZWEgdG8gdHJ5IHdpdGggbGF0ZXN0Cit2YW5pbGxhIGtlcm5lbC4KKworUTogSG93IGNhbiBkaXN0cmlidXRpb25zIHNoaXAgYSBzd3N1c3Atc3VwcG9ydGluZyBrZXJuZWwgd2l0aCBtb2R1bGFyCitkaXNrIGRyaXZlcnMgKGVzcGVjaWFsbHkgU0FUQSk/CisKK0E6IFdlbGwsIGl0IGNhbiBiZSBkb25lLCBsb2FkIHRoZSBkcml2ZXJzLCB0aGVuIGRvIGVjaG8gaW50bworL3N5cy9wb3dlci9yZXN1bWUgZmlsZSBmcm9tIGluaXRyZC4gQmUgc3VyZSBub3QgdG8gbW91bnQKK2FueXRoaW5nLCBub3QgZXZlbiByZWFkLW9ubHkgbW91bnQsIG9yIHlvdSBhcmUgZ29pbmcgdG8gbG9zZSB5b3VyCitkYXRhLgorCitROiBIb3cgZG8gSSBtYWtlIHN1c3BlbmQgbW9yZSB2ZXJib3NlPworCitBOiBJZiB5b3Ugd2FudCB0byBzZWUgYW55IG5vbi1lcnJvciBrZXJuZWwgbWVzc2FnZXMgb24gdGhlIHZpcnR1YWwKK3Rlcm1pbmFsIHRoZSBrZXJuZWwgc3dpdGNoZXMgdG8gZHVyaW5nIHN1c3BlbmQsIHlvdSBoYXZlIHRvIHNldCB0aGUKK2tlcm5lbCBjb25zb2xlIGxvZ2xldmVsIHRvIGF0IGxlYXN0IDQgKEtFUk5fV0FSTklORyksIGZvciBleGFtcGxlIGJ5Citkb2luZworCisJIyBzYXZlIHRoZSBvbGQgbG9nbGV2ZWwKKwlyZWFkIExPR0xFVkVMIERVTU1ZIDwgL3Byb2Mvc3lzL2tlcm5lbC9wcmludGsKKwkjIHNldCB0aGUgbG9nbGV2ZWwgc28gd2Ugc2VlIHRoZSBwcm9ncmVzcyBiYXIuCisJIyBpZiB0aGUgbGV2ZWwgaXMgaGlnaGVyIHRoYW4gbmVlZGVkLCB3ZSBsZWF2ZSBpdCBhbG9uZS4KKwlpZiBbICRMT0dMRVZFTCAtbHQgNSBdOyB0aGVuCisJICAgICAgICBlY2hvIDUgPiAvcHJvYy9zeXMva2VybmVsL3ByaW50aworCQlmaQorCisgICAgICAgIElNR19TWj0wCisgICAgICAgIHJlYWQgSU1HX1NaIDwgL3N5cy9wb3dlci9pbWFnZV9zaXplCisgICAgICAgIGVjaG8gLW4gZGlzayA+IC9zeXMvcG93ZXIvc3RhdGUKKyAgICAgICAgUkVUPSQ/CisgICAgICAgICMKKyAgICAgICAgIyB0aGUgbG9naWMgaGVyZSBpczoKKyAgICAgICAgIyBpZiBpbWFnZV9zaXplID4gMCAod2l0aG91dCBrZXJuZWwgc3VwcG9ydCwgSU1HX1NaIHdpbGwgYmUgemVybyksCisgICAgICAgICMgdGhlbiB0cnkgYWdhaW4gd2l0aCBpbWFnZV9zaXplIHNldCB0byB6ZXJvLgorCWlmIFsgJFJFVCAtbmUgMCAtYSAkSU1HX1NaIC1uZSAwIF07IHRoZW4gIyB0cnkgYWdhaW4gd2l0aCBtaW5pbWFsIGltYWdlIHNpemUKKyAgICAgICAgICAgICAgICBlY2hvIDAgPiAvc3lzL3Bvd2VyL2ltYWdlX3NpemUKKyAgICAgICAgICAgICAgICBlY2hvIC1uIGRpc2sgPiAvc3lzL3Bvd2VyL3N0YXRlCisgICAgICAgICAgICAgICAgUkVUPSQ/CisgICAgICAgIGZpCisKKwkjIHJlc3RvcmUgcHJldmlvdXMgbG9nbGV2ZWwKKwllY2hvICRMT0dMRVZFTCA+IC9wcm9jL3N5cy9rZXJuZWwvcHJpbnRrCisJZXhpdCAkUkVUCisKK1E6IElzIHRoaXMgdHJ1ZSB0aGF0IGlmIEkgaGF2ZSBhIG1vdW50ZWQgZmlsZXN5c3RlbSBvbiBhIFVTQiBkZXZpY2UgYW5kCitJIHN1c3BlbmQgdG8gZGlzaywgSSBjYW4gbG9zZSBkYXRhIHVubGVzcyB0aGUgZmlsZXN5c3RlbSBoYXMgYmVlbiBtb3VudGVkCit3aXRoICJzeW5jIj8KKworQTogVGhhdCdzIHJpZ2h0IC4uLiBpZiB5b3UgZGlzY29ubmVjdCB0aGF0IGRldmljZSwgeW91IG1heSBsb3NlIGRhdGEuCitJbiBmYWN0LCBldmVuIHdpdGggIi1vIHN5bmMiIHlvdSBjYW4gbG9zZSBkYXRhIGlmIHlvdXIgcHJvZ3JhbXMgaGF2ZQoraW5mb3JtYXRpb24gaW4gYnVmZmVycyB0aGV5IGhhdmVuJ3Qgd3JpdHRlbiBvdXQgdG8gYSBkaXNrIHlvdSBkaXNjb25uZWN0LAorb3IgaWYgeW91IGRpc2Nvbm5lY3QgYmVmb3JlIHRoZSBkZXZpY2UgZmluaXNoZWQgc2F2aW5nIGRhdGEgeW91IHdyb3RlLgorCitTb2Z0d2FyZSBzdXNwZW5kIG5vcm1hbGx5IHBvd2VycyBkb3duIFVTQiBjb250cm9sbGVycywgd2hpY2ggaXMgZXF1aXZhbGVudAordG8gZGlzY29ubmVjdGluZyBhbGwgVVNCIGRldmljZXMgYXR0YWNoZWQgdG8geW91ciBzeXN0ZW0uCisKK1lvdXIgc3lzdGVtIG1pZ2h0IHdlbGwgc3VwcG9ydCBsb3ctcG93ZXIgbW9kZXMgZm9yIGl0cyBVU0IgY29udHJvbGxlcnMKK3doaWxlIHRoZSBzeXN0ZW0gaXMgYXNsZWVwLCBtYWludGFpbmluZyB0aGUgY29ubmVjdGlvbiwgdXNpbmcgdHJ1ZSBzbGVlcAorbW9kZXMgbGlrZSAic3VzcGVuZC10by1SQU0iIG9yICJzdGFuZGJ5Ii4gIChEb24ndCB3cml0ZSAiZGlzayIgdG8gdGhlCisvc3lzL3Bvd2VyL3N0YXRlIGZpbGU7IHdyaXRlICJzdGFuZGJ5IiBvciAibWVtIi4pICBXZSd2ZSBub3Qgc2VlbiBhbnkKK2hhcmR3YXJlIHRoYXQgY2FuIHVzZSB0aGVzZSBtb2RlcyB0aHJvdWdoIHNvZnR3YXJlIHN1c3BlbmQsIGFsdGhvdWdoIGluCit0aGVvcnkgc29tZSBzeXN0ZW1zIG1pZ2h0IHN1cHBvcnQgInBsYXRmb3JtIiBtb2RlcyB0aGF0IHdvbid0IGJyZWFrIHRoZQorVVNCIGNvbm5lY3Rpb25zLgorCitSZW1lbWJlciB0aGF0IGl0J3MgYWx3YXlzIGEgYmFkIGlkZWEgdG8gdW5wbHVnIGEgZGlzayBkcml2ZSBjb250YWluaW5nIGEKK21vdW50ZWQgZmlsZXN5c3RlbS4gIFRoYXQncyB0cnVlIGV2ZW4gd2hlbiB5b3VyIHN5c3RlbSBpcyBhc2xlZXAhICBUaGUKK3NhZmVzdCB0aGluZyBpcyB0byB1bm1vdW50IGFsbCBmaWxlc3lzdGVtcyBvbiByZW1vdmFibGUgbWVkaWEgKHN1Y2ggVVNCLAorRmlyZXdpcmUsIENvbXBhY3RGbGFzaCwgTU1DLCBleHRlcm5hbCBTQVRBLCBvciBldmVuIElERSBob3RwbHVnIGJheXMpCitiZWZvcmUgc3VzcGVuZGluZzsgdGhlbiByZW1vdW50IHRoZW0gYWZ0ZXIgcmVzdW1pbmcuCisKK1RoZXJlIGlzIGEgd29yay1hcm91bmQgZm9yIHRoaXMgcHJvYmxlbS4gIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUKK0RvY3VtZW50YXRpb24vdXNiL3BlcnNpc3QudHh0LgorCitROiBDYW4gSSBzdXNwZW5kLXRvLWRpc2sgdXNpbmcgYSBzd2FwIHBhcnRpdGlvbiB1bmRlciBMVk0/CisKK0E6IFllcyBhbmQgTm8uICBZb3UgY2FuIHN1c3BlbmQgc3VjY2Vzc2Z1bGx5LCBidXQgdGhlIGtlcm5lbCB3aWxsIG5vdCBiZSBhYmxlCit0byByZXN1bWUgb24gaXRzIG93bi4gIFlvdSBuZWVkIGFuIGluaXRyYW1mcyB0aGF0IGNhbiByZWNvZ25pemUgdGhlIHJlc3VtZQorc2l0dWF0aW9uLCBhY3RpdmF0ZSB0aGUgbG9naWNhbCB2b2x1bWUgY29udGFpbmluZyB0aGUgc3dhcCB2b2x1bWUgKGJ1dCBub3QKK3RvdWNoIGFueSBmaWxlc3lzdGVtcyEpLCBhbmQgZXZlbnR1YWxseSBjYWxsCisKK2VjaG8gLW4gIiRtYWpvcjokbWlub3IiID4gL3N5cy9wb3dlci9yZXN1bWUKKword2hlcmUgJG1ham9yIGFuZCAkbWlub3IgYXJlIHRoZSByZXNwZWN0aXZlIG1ham9yIGFuZCBtaW5vciBkZXZpY2UgbnVtYmVycyBvZgordGhlIHN3YXAgdm9sdW1lLgorCit1c3dzdXNwIHdvcmtzIHdpdGggTFZNLCB0b28uICBTZWUgaHR0cDovL3N1c3BlbmQuc291cmNlZm9yZ2UubmV0LworCitROiBJIHVwZ3JhZGVkIHRoZSBrZXJuZWwgZnJvbSAyLjYuMTUgdG8gMi42LjE2LiBCb3RoIGtlcm5lbHMgd2VyZQorY29tcGlsZWQgd2l0aCB0aGUgc2ltaWxhciBjb25maWd1cmF0aW9uIGZpbGVzLiBBbnl3YXkgSSBmb3VuZCB0aGF0CitzdXNwZW5kIHRvIGRpc2sgKGFuZCByZXN1bWUpIGlzIG11Y2ggc2xvd2VyIG9uIDIuNi4xNiBjb21wYXJlZCB0bworMi42LjE1LiBBbnkgaWRlYSBmb3Igd2h5IHRoYXQgbWlnaHQgaGFwcGVuIG9yIGhvdyBjYW4gSSBzcGVlZCBpdCB1cD8KKworQTogVGhpcyBpcyBiZWNhdXNlIHRoZSBzaXplIG9mIHRoZSBzdXNwZW5kIGltYWdlIGlzIG5vdyBncmVhdGVyIHRoYW4KK2ZvciAyLjYuMTUgKGJ5IHNhdmluZyBtb3JlIGRhdGEgd2UgY2FuIGdldCBtb3JlIHJlc3BvbnNpdmUgc3lzdGVtCithZnRlciByZXN1bWUpLgorCitUaGVyZSdzIHRoZSAvc3lzL3Bvd2VyL2ltYWdlX3NpemUga25vYiB0aGF0IGNvbnRyb2xzIHRoZSBzaXplIG9mIHRoZQoraW1hZ2UuICBJZiB5b3Ugc2V0IGl0IHRvIDAgKGVnLiBieSBlY2hvIDAgPiAvc3lzL3Bvd2VyL2ltYWdlX3NpemUgYXMKK3Jvb3QpLCB0aGUgMi42LjE1IGJlaGF2aW9yIHNob3VsZCBiZSByZXN0b3JlZC4gIElmIGl0IGlzIHN0aWxsIHRvbworc2xvdywgdGFrZSBhIGxvb2sgYXQgc3VzcGVuZC5zZi5uZXQgLS0gdXNlcmxhbmQgc3VzcGVuZCBpcyBmYXN0ZXIgYW5kCitzdXBwb3J0cyBMWkYgY29tcHJlc3Npb24gdG8gc3BlZWQgaXQgdXAgZnVydGhlci4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvdHJpY2tzLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvdHJpY2tzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWI4ZjcyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci90cmlja3MudHh0CkBAIC0wLDAgKzEsMjcgQEAKKwlzd3N1c3AvUzMgdHJpY2tzCisJfn5+fn5+fn5+fn5+fn5+fgorUGF2ZWwgTWFjaGVrIDxwYXZlbEB1Y3cuY3o+CisKK0lmIHlvdSB3YW50IHRvIHRyaWNrIHN3c3VzcC9TMyBpbnRvIHdvcmtpbmcsIHlvdSBtaWdodCB3YW50IHRvIHRyeToKKworKiBnbyB3aXRoIG1pbmltYWwgY29uZmlnLCB0dXJuIG9mZiBkcml2ZXJzIGxpa2UgVVNCLCBBR1AgeW91IGRvbid0CisgIHJlYWxseSBuZWVkCisKKyogdHVybiBvZmYgQVBJQyBhbmQgcHJlZW1wdAorCisqIHVzZSBleHQyLiBBdCBsZWFzdCBpdCBoYXMgd29ya2luZyBmc2NrLiBbSWYgc29tZXRoaW5nIHNlZW1zIHRvIGdvCisgIHdyb25nLCBmb3JjZSBmc2NrIHdoZW4geW91IGhhdmUgYSBjaGFuY2VdCisKKyogdHVybiBvZmYgbW9kdWxlcworCisqIHVzZSB2Z2EgdGV4dCBjb25zb2xlLCBzaHV0IGRvd24gWC4gW0lmIHlvdSByZWFsbHkgd2FudCBYLCB5b3UgbWlnaHQKKyAgd2FudCB0byB0cnkgdmVzYWZiIGxhdGVyXQorCisqIHRyeSBydW5uaW5nIGFzIGZldyBwcm9jZXNzZXMgYXMgcG9zc2libGUsIHByZWZlcmFibHkgZ28gdG8gc2luZ2xlCisgIHVzZXIgbW9kZS4KKworKiBkdWUgdG8gdmlkZW8gaXNzdWVzLCBzd3N1c3Agc2hvdWxkIGJlIGVhc2llciB0byBnZXQgd29ya2luZyB0aGFuCisgIFMzLiBUcnkgdGhhdCBmaXJzdC4KKworV2hlbiB5b3UgbWFrZSBpdCB3b3JrLCB0cnkgdG8gZmluZCBvdXQgd2hhdCBleGFjdGx5IHdhcyBpdCB0aGF0IGJyb2tlCitzdXNwZW5kLCBhbmQgcHJlZmVyYWJseSBmaXggdGhhdC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvdXNlcmxhbmQtc3dzdXNwLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvdXNlcmxhbmQtc3dzdXNwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmZjZDFiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci91c2VybGFuZC1zd3N1c3AudHh0CkBAIC0wLDAgKzEsMTcwIEBACitEb2N1bWVudGF0aW9uIGZvciB1c2VybGFuZCBzb2Z0d2FyZSBzdXNwZW5kIGludGVyZmFjZQorCShDKSAyMDA2IFJhZmFlbCBKLiBXeXNvY2tpIDxyandAc2lzay5wbD4KKworRmlyc3QsIHRoZSB3YXJuaW5ncyBhdCB0aGUgYmVnaW5uaW5nIG9mIHN3c3VzcC50eHQgc3RpbGwgYXBwbHkuCisKK1NlY29uZCwgeW91IHNob3VsZCByZWFkIHRoZSBGQVEgaW4gc3dzdXNwLnR4dCBfbm93XyBpZiB5b3UgaGF2ZSBub3QKK2RvbmUgaXQgYWxyZWFkeS4KKworTm93LCB0byB1c2UgdGhlIHVzZXJsYW5kIGludGVyZmFjZSBmb3Igc29mdHdhcmUgc3VzcGVuZCB5b3UgbmVlZCBzcGVjaWFsCit1dGlsaXRpZXMgdGhhdCB3aWxsIHJlYWQvd3JpdGUgdGhlIHN5c3RlbSBtZW1vcnkgc25hcHNob3QgZnJvbS90byB0aGUKK2tlcm5lbC4gIFN1Y2ggdXRpbGl0aWVzIGFyZSBhdmFpbGFibGUsIGZvciBleGFtcGxlLCBmcm9tCis8aHR0cDovL3N1c3BlbmQuc291cmNlZm9yZ2UubmV0Pi4gIFlvdSBtYXkgd2FudCB0byBoYXZlIGEgbG9vayBhdCB0aGVtIGlmIHlvdQorYXJlIGdvaW5nIHRvIGRldmVsb3AgeW91ciBvd24gc3VzcGVuZC9yZXN1bWUgdXRpbGl0aWVzLgorCitUaGUgaW50ZXJmYWNlIGNvbnNpc3RzIG9mIGEgY2hhcmFjdGVyIGRldmljZSBwcm92aWRpbmcgdGhlIG9wZW4oKSwKK3JlbGVhc2UoKSwgcmVhZCgpLCBhbmQgd3JpdGUoKSBvcGVyYXRpb25zIGFzIHdlbGwgYXMgc2V2ZXJhbCBpb2N0bCgpCitjb21tYW5kcyBkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvc3VzcGVuZF9pb2N0bHMuaCAuICBUaGUgbWFqb3IgYW5kIG1pbm9yCitudW1iZXJzIG9mIHRoZSBkZXZpY2UgYXJlLCByZXNwZWN0aXZlbHksIDEwIGFuZCAyMzEsIGFuZCB0aGV5IGNhbgorYmUgcmVhZCBmcm9tIC9zeXMvY2xhc3MvbWlzYy9zbmFwc2hvdC9kZXYuCisKK1RoZSBkZXZpY2UgY2FuIGJlIG9wZW4gZWl0aGVyIGZvciByZWFkaW5nIG9yIGZvciB3cml0aW5nLiAgSWYgb3BlbiBmb3IKK3JlYWRpbmcsIGl0IGlzIGNvbnNpZGVyZWQgdG8gYmUgaW4gdGhlIHN1c3BlbmQgbW9kZS4gIE90aGVyd2lzZSBpdCBpcworYXNzdW1lZCB0byBiZSBpbiB0aGUgcmVzdW1lIG1vZGUuICBUaGUgZGV2aWNlIGNhbm5vdCBiZSBvcGVuIGZvciBzaW11bHRhbmVvdXMKK3JlYWRpbmcgYW5kIHdyaXRpbmcuICBJdCBpcyBhbHNvIGltcG9zc2libGUgdG8gaGF2ZSB0aGUgZGV2aWNlIG9wZW4gbW9yZSB0aGFuCitvbmNlIGF0IGEgdGltZS4KKworRXZlbiBvcGVuaW5nIHRoZSBkZXZpY2UgaGFzIHNpZGUgZWZmZWN0cy4gRGF0YSBzdHJ1Y3R1cmVzIGFyZQorYWxsb2NhdGVkLCBhbmQgUE1fSElCRVJOQVRJT05fUFJFUEFSRSAvIFBNX1JFU1RPUkVfUFJFUEFSRSBjaGFpbnMgYXJlCitjYWxsZWQuCisKK1RoZSBpb2N0bCgpIGNvbW1hbmRzIHJlY29nbml6ZWQgYnkgdGhlIGRldmljZSBhcmU6CisKK1NOQVBTSE9UX0ZSRUVaRSAtIGZyZWV6ZSB1c2VyIHNwYWNlIHByb2Nlc3NlcyAodGhlIGN1cnJlbnQgcHJvY2VzcyBpcworCW5vdCBmcm96ZW4pOyB0aGlzIGlzIHJlcXVpcmVkIGZvciBTTkFQU0hPVF9DUkVBVEVfSU1BR0UKKwlhbmQgU05BUFNIT1RfQVRPTUlDX1JFU1RPUkUgdG8gc3VjY2VlZAorCitTTkFQU0hPVF9VTkZSRUVaRSAtIHRoYXcgdXNlciBzcGFjZSBwcm9jZXNzZXMgZnJvemVuIGJ5IFNOQVBTSE9UX0ZSRUVaRQorCitTTkFQU0hPVF9DUkVBVEVfSU1BR0UgLSBjcmVhdGUgYSBzbmFwc2hvdCBvZiB0aGUgc3lzdGVtIG1lbW9yeTsgdGhlCisJbGFzdCBhcmd1bWVudCBvZiBpb2N0bCgpIHNob3VsZCBiZSBhIHBvaW50ZXIgdG8gYW4gaW50IHZhcmlhYmxlLAorCXRoZSB2YWx1ZSBvZiB3aGljaCB3aWxsIGluZGljYXRlIHdoZXRoZXIgdGhlIGNhbGwgcmV0dXJuZWQgYWZ0ZXIKKwljcmVhdGluZyB0aGUgc25hcHNob3QgKDEpIG9yIGFmdGVyIHJlc3RvcmluZyB0aGUgc3lzdGVtIG1lbW9yeSBzdGF0ZQorCWZyb20gaXQgKDApIChhZnRlciByZXN1bWUgdGhlIHN5c3RlbSBmaW5kcyBpdHNlbGYgZmluaXNoaW5nIHRoZQorCVNOQVBTSE9UX0NSRUFURV9JTUFHRSBpb2N0bCgpIGFnYWluKTsgYWZ0ZXIgdGhlIHNuYXBzaG90CisJaGFzIGJlZW4gY3JlYXRlZCB0aGUgcmVhZCgpIG9wZXJhdGlvbiBjYW4gYmUgdXNlZCB0byB0cmFuc2ZlcgorCWl0IG91dCBvZiB0aGUga2VybmVsCisKK1NOQVBTSE9UX0FUT01JQ19SRVNUT1JFIC0gcmVzdG9yZSB0aGUgc3lzdGVtIG1lbW9yeSBzdGF0ZSBmcm9tIHRoZQorCXVwbG9hZGVkIHNuYXBzaG90IGltYWdlOyBiZWZvcmUgY2FsbGluZyBpdCB5b3Ugc2hvdWxkIHRyYW5zZmVyCisJdGhlIHN5c3RlbSBtZW1vcnkgc25hcHNob3QgYmFjayB0byB0aGUga2VybmVsIHVzaW5nIHRoZSB3cml0ZSgpCisJb3BlcmF0aW9uOyB0aGlzIGNhbGwgd2lsbCBub3Qgc3VjY2VlZCBpZiB0aGUgc25hcHNob3QKKwlpbWFnZSBpcyBub3QgYXZhaWxhYmxlIHRvIHRoZSBrZXJuZWwKKworU05BUFNIT1RfRlJFRSAtIGZyZWUgbWVtb3J5IGFsbG9jYXRlZCBmb3IgdGhlIHNuYXBzaG90IGltYWdlCisKK1NOQVBTSE9UX1BSRUZfSU1BR0VfU0laRSAtIHNldCB0aGUgcHJlZmVycmVkIG1heGltdW0gc2l6ZSBvZiB0aGUgaW1hZ2UKKwkodGhlIGtlcm5lbCB3aWxsIGRvIGl0cyBiZXN0IHRvIGVuc3VyZSB0aGUgaW1hZ2Ugc2l6ZSB3aWxsIG5vdCBleGNlZWQKKwl0aGlzIG51bWJlciwgYnV0IGlmIGl0IHR1cm5zIG91dCB0byBiZSBpbXBvc3NpYmxlLCB0aGUga2VybmVsIHdpbGwKKwljcmVhdGUgdGhlIHNtYWxsZXN0IGltYWdlIHBvc3NpYmxlKQorCitTTkFQU0hPVF9HRVRfSU1BR0VfU0laRSAtIHJldHVybiB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIGhpYmVybmF0aW9uIGltYWdlCisKK1NOQVBTSE9UX0FWQUlMX1NXQVBfU0laRSAtIHJldHVybiB0aGUgYW1vdW50IG9mIGF2YWlsYWJsZSBzd2FwIGluIGJ5dGVzICh0aGUKKwlsYXN0IGFyZ3VtZW50IHNob3VsZCBiZSBhIHBvaW50ZXIgdG8gYW4gdW5zaWduZWQgaW50IHZhcmlhYmxlIHRoYXQgd2lsbAorCWNvbnRhaW4gdGhlIHJlc3VsdCBpZiB0aGUgY2FsbCBpcyBzdWNjZXNzZnVsKS4KKworU05BUFNIT1RfQUxMT0NfU1dBUF9QQUdFIC0gYWxsb2NhdGUgYSBzd2FwIHBhZ2UgZnJvbSB0aGUgcmVzdW1lIHBhcnRpdGlvbgorCSh0aGUgbGFzdCBhcmd1bWVudCBzaG91bGQgYmUgYSBwb2ludGVyIHRvIGEgbG9mZl90IHZhcmlhYmxlIHRoYXQKKwl3aWxsIGNvbnRhaW4gdGhlIHN3YXAgcGFnZSBvZmZzZXQgaWYgdGhlIGNhbGwgaXMgc3VjY2Vzc2Z1bCkKKworU05BUFNIT1RfRlJFRV9TV0FQX1BBR0VTIC0gZnJlZSBhbGwgc3dhcCBwYWdlcyBhbGxvY2F0ZWQgYnkKKwlTTkFQU0hPVF9BTExPQ19TV0FQX1BBR0UKKworU05BUFNIT1RfU0VUX1NXQVBfQVJFQSAtIHNldCB0aGUgcmVzdW1lIHBhcnRpdGlvbiBhbmQgdGhlIG9mZnNldCAoaW4gPFBBR0VfU0laRT4KKwl1bml0cykgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXJ0aXRpb24gYXQgd2hpY2ggdGhlIHN3YXAgaGVhZGVyIGlzCisJbG9jYXRlZCAodGhlIGxhc3QgaW9jdGwoKSBhcmd1bWVudCBzaG91bGQgcG9pbnQgdG8gYSBzdHJ1Y3QKKwlyZXN1bWVfc3dhcF9hcmVhLCBhcyBkZWZpbmVkIGluIGtlcm5lbC9wb3dlci9zdXNwZW5kX2lvY3Rscy5oLAorCWNvbnRhaW5pbmcgdGhlIHJlc3VtZSBkZXZpY2Ugc3BlY2lmaWNhdGlvbiBhbmQgdGhlIG9mZnNldCk7IGZvciBzd2FwCisJcGFydGl0aW9ucyB0aGUgb2Zmc2V0IGlzIGFsd2F5cyAwLCBidXQgaXQgaXMgZGlmZmVyZW50IGZyb20gemVybyBmb3IKKwlzd2FwIGZpbGVzIChzZWUgRG9jdW1lbnRhdGlvbi9wb3dlci9zd3N1c3AtYW5kLXN3YXAtZmlsZXMudHh0IGZvcgorCWRldGFpbHMpLgorCitTTkFQU0hPVF9QTEFURk9STV9TVVBQT1JUIC0gZW5hYmxlL2Rpc2FibGUgdGhlIGhpYmVybmF0aW9uIHBsYXRmb3JtIHN1cHBvcnQsCisJZGVwZW5kaW5nIG9uIHRoZSBhcmd1bWVudCB2YWx1ZSAoZW5hYmxlLCBpZiB0aGUgYXJndW1lbnQgaXMgbm9uemVybykKKworU05BUFNIT1RfUE9XRVJfT0ZGIC0gbWFrZSB0aGUga2VybmVsIHRyYW5zaXRpb24gdGhlIHN5c3RlbSB0byB0aGUgaGliZXJuYXRpb24KKwlzdGF0ZSAoZWcuIEFDUEkgUzQpIHVzaW5nIHRoZSBwbGF0Zm9ybSAoZWcuIEFDUEkpIGRyaXZlcgorCitTTkFQU0hPVF9TMlJBTSAtIHN1c3BlbmQgdG8gUkFNOyB1c2luZyB0aGlzIGNhbGwgY2F1c2VzIHRoZSBrZXJuZWwgdG8KKwlpbW1lZGlhdGVseSBlbnRlciB0aGUgc3VzcGVuZC10by1SQU0gc3RhdGUsIHNvIHRoaXMgY2FsbCBtdXN0IGFsd2F5cworCWJlIHByZWNlZGVkIGJ5IHRoZSBTTkFQU0hPVF9GUkVFWkUgY2FsbCBhbmQgaXQgaXMgYWxzbyBuZWNlc3NhcnkKKwl0byB1c2UgdGhlIFNOQVBTSE9UX1VORlJFRVpFIGNhbGwgYWZ0ZXIgdGhlIHN5c3RlbSB3YWtlcyB1cC4gIFRoaXMgY2FsbAorCWlzIG5lZWRlZCB0byBpbXBsZW1lbnQgdGhlIHN1c3BlbmQtdG8tYm90aCBtZWNoYW5pc20gaW4gd2hpY2ggdGhlCisJc3VzcGVuZCBpbWFnZSBpcyBmaXJzdCBjcmVhdGVkLCBhcyB0aG91Z2ggdGhlIHN5c3RlbSBoYWQgYmVlbiBzdXNwZW5kZWQKKwl0byBkaXNrLCBhbmQgdGhlbiB0aGUgc3lzdGVtIGlzIHN1c3BlbmRlZCB0byBSQU0gKHRoaXMgbWFrZXMgaXQgcG9zc2libGUKKwl0byByZXN1bWUgdGhlIHN5c3RlbSBmcm9tIFJBTSBpZiB0aGVyZSdzIGVub3VnaCBiYXR0ZXJ5IHBvd2VyIG9yIHJlc3RvcmUKKwlpdHMgc3RhdGUgb24gdGhlIGJhc2lzIG9mIHRoZSBzYXZlZCBzdXNwZW5kIGltYWdlIG90aGVyd2lzZSkKKworVGhlIGRldmljZSdzIHJlYWQoKSBvcGVyYXRpb24gY2FuIGJlIHVzZWQgdG8gdHJhbnNmZXIgdGhlIHNuYXBzaG90IGltYWdlIGZyb20KK3RoZSBrZXJuZWwuICBJdCBoYXMgdGhlIGZvbGxvd2luZyBsaW1pdGF0aW9uczoKKy0geW91IGNhbm5vdCByZWFkKCkgbW9yZSB0aGFuIG9uZSB2aXJ0dWFsIG1lbW9yeSBwYWdlIGF0IGEgdGltZQorLSByZWFkKClzIGFjcm9zcyBwYWdlIGJvdW5kYXJpZXMgYXJlIGltcG9zc2libGUgKGllLiBpZiB5b3UgcmVhZCgpIDEvMiBvZgorCWEgcGFnZSBpbiB0aGUgcHJldmlvdXMgY2FsbCwgeW91IHdpbGwgb25seSBiZSBhYmxlIHRvIHJlYWQoKQorCV9hdF8gX21vc3RfIDEvMiBvZiB0aGUgcGFnZSBpbiB0aGUgbmV4dCBjYWxsKQorCitUaGUgZGV2aWNlJ3Mgd3JpdGUoKSBvcGVyYXRpb24gaXMgdXNlZCBmb3IgdXBsb2FkaW5nIHRoZSBzeXN0ZW0gbWVtb3J5IHNuYXBzaG90CitpbnRvIHRoZSBrZXJuZWwuICBJdCBoYXMgdGhlIHNhbWUgbGltaXRhdGlvbnMgYXMgdGhlIHJlYWQoKSBvcGVyYXRpb24uCisKK1RoZSByZWxlYXNlKCkgb3BlcmF0aW9uIGZyZWVzIGFsbCBtZW1vcnkgYWxsb2NhdGVkIGZvciB0aGUgc25hcHNob3QgaW1hZ2UKK2FuZCBhbGwgc3dhcCBwYWdlcyBhbGxvY2F0ZWQgd2l0aCBTTkFQU0hPVF9BTExPQ19TV0FQX1BBR0UgKGlmIGFueSkuCitUaHVzIGl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gdXNlIGVpdGhlciBTTkFQU0hPVF9GUkVFIG9yCitTTkFQU0hPVF9GUkVFX1NXQVBfUEFHRVMgYmVmb3JlIGNsb3NpbmcgdGhlIGRldmljZSAoaW4gZmFjdCBpdCB3aWxsIGFsc28KK3VuZnJlZXplIHVzZXIgc3BhY2UgcHJvY2Vzc2VzIGZyb3plbiBieSBTTkFQU0hPVF9VTkZSRUVaRSBpZiB0aGV5IGFyZQorc3RpbGwgZnJvemVuIHdoZW4gdGhlIGRldmljZSBpcyBiZWluZyBjbG9zZWQpLgorCitDdXJyZW50bHkgaXQgaXMgYXNzdW1lZCB0aGF0IHRoZSB1c2VybGFuZCB1dGlsaXRpZXMgcmVhZGluZy93cml0aW5nIHRoZQorc25hcHNob3QgaW1hZ2UgZnJvbS90byB0aGUga2VybmVsIHdpbGwgdXNlIGEgc3dhcCBwYXJ0aXRpb24sIGNhbGxlZCB0aGUgcmVzdW1lCitwYXJ0aXRpb24sIG9yIGEgc3dhcCBmaWxlIGFzIHN0b3JhZ2Ugc3BhY2UgKGlmIGEgc3dhcCBmaWxlIGlzIHVzZWQsIHRoZSByZXN1bWUKK3BhcnRpdGlvbiBpcyB0aGUgcGFydGl0aW9uIHRoYXQgaG9sZHMgdGhpcyBmaWxlKS4gIEhvd2V2ZXIsIHRoaXMgaXMgbm90IHJlYWxseQorcmVxdWlyZWQsIGFzIHRoZXkgY2FuIHVzZSwgZm9yIGV4YW1wbGUsIGEgc3BlY2lhbCAoYmxhbmspIHN1c3BlbmQgcGFydGl0aW9uIG9yCithIGZpbGUgb24gYSBwYXJ0aXRpb24gdGhhdCBpcyB1bm1vdW50ZWQgYmVmb3JlIFNOQVBTSE9UX0NSRUFURV9JTUFHRSBhbmQKK21vdW50ZWQgYWZ0ZXJ3YXJkcy4KKworVGhlc2UgdXRpbGl0aWVzIE1VU1QgTk9UIG1ha2UgYW55IGFzc3VtcHRpb25zIHJlZ2FyZGluZyB0aGUgb3JkZXJpbmcgb2YKK2RhdGEgd2l0aGluIHRoZSBzbmFwc2hvdCBpbWFnZS4gIFRoZSBjb250ZW50cyBvZiB0aGUgaW1hZ2UgYXJlIGVudGlyZWx5IG93bmVkCitieSB0aGUga2VybmVsIGFuZCBpdHMgc3RydWN0dXJlIG1heSBiZSBjaGFuZ2VkIGluIGZ1dHVyZSBrZXJuZWwgcmVsZWFzZXMuCisKK1RoZSBzbmFwc2hvdCBpbWFnZSBNVVNUIGJlIHdyaXR0ZW4gdG8gdGhlIGtlcm5lbCB1bmFsdGVyZWQgKGllLiBhbGwgb2YgdGhlIGltYWdlCitkYXRhLCBtZXRhZGF0YSBhbmQgaGVhZGVyIE1VU1QgYmUgd3JpdHRlbiBpbiBfZXhhY3RseV8gdGhlIHNhbWUgYW1vdW50LCBmb3JtCithbmQgb3JkZXIgaW4gd2hpY2ggdGhleSBoYXZlIGJlZW4gcmVhZCkuICBPdGhlcndpc2UsIHRoZSBiZWhhdmlvciBvZiB0aGUKK3Jlc3VtZWQgc3lzdGVtIG1heSBiZSB0b3RhbGx5IHVucHJlZGljdGFibGUuCisKK1doaWxlIGV4ZWN1dGluZyBTTkFQU0hPVF9BVE9NSUNfUkVTVE9SRSB0aGUga2VybmVsIGNoZWNrcyBpZiB0aGUKK3N0cnVjdHVyZSBvZiB0aGUgc25hcHNob3QgaW1hZ2UgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBpbmZvcm1hdGlvbiBzdG9yZWQKK2luIHRoZSBpbWFnZSBoZWFkZXIuICBJZiBhbnkgaW5jb25zaXN0ZW5jaWVzIGFyZSBkZXRlY3RlZCwKK1NOQVBTSE9UX0FUT01JQ19SRVNUT1JFIHdpbGwgbm90IHN1Y2NlZWQuICBTdGlsbCwgdGhpcyBpcyBub3QgYSBmb29sLXByb29mCittZWNoYW5pc20gYW5kIHRoZSB1c2VybGFuZCB1dGlsaXRpZXMgdXNpbmcgdGhlIGludGVyZmFjZSBTSE9VTEQgdXNlIGFkZGl0aW9uYWwKK21lYW5zLCBzdWNoIGFzIGNoZWNrc3VtcywgdG8gZW5zdXJlIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIHNuYXBzaG90IGltYWdlLgorCitUaGUgc3VzcGVuZGluZyBhbmQgcmVzdW1pbmcgdXRpbGl0aWVzIE1VU1QgbG9jayB0aGVtc2VsdmVzIGluIG1lbW9yeSwKK3ByZWZlcmFibHkgdXNpbmcgbWxvY2thbGwoKSwgYmVmb3JlIGNhbGxpbmcgU05BUFNIT1RfRlJFRVpFLgorCitUaGUgc3VzcGVuZGluZyB1dGlsaXR5IE1VU1QgY2hlY2sgdGhlIHZhbHVlIHN0b3JlZCBieSBTTkFQU0hPVF9DUkVBVEVfSU1BR0UKK2luIHRoZSBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSB0aGUgbGFzdCBhcmd1bWVudCBvZiBpb2N0bCgpIGFuZCBwcm9jZWVkCitpbiBhY2NvcmRhbmNlIHdpdGggaXQ6CisxLiAJSWYgdGhlIHZhbHVlIGlzIDEgKGllLiB0aGUgc3lzdGVtIG1lbW9yeSBzbmFwc2hvdCBoYXMganVzdCBiZWVuCisJY3JlYXRlZCBhbmQgdGhlIHN5c3RlbSBpcyByZWFkeSBmb3Igc2F2aW5nIGl0KToKKwkoYSkJVGhlIHN1c3BlbmRpbmcgdXRpbGl0eSBNVVNUIE5PVCBjbG9zZSB0aGUgc25hcHNob3QgZGV2aWNlCisJCV91bmxlc3NfIHRoZSB3aG9sZSBzdXNwZW5kIHByb2NlZHVyZSBpcyB0byBiZSBjYW5jZWxsZWQsIGluCisJCXdoaWNoIGNhc2UsIGlmIHRoZSBzbmFwc2hvdCBpbWFnZSBoYXMgYWxyZWFkeSBiZWVuIHNhdmVkLCB0aGUKKwkJc3VzcGVuZGluZyB1dGlsaXR5IFNIT1VMRCBkZXN0cm95IGl0LCBwcmVmZXJhYmx5IGJ5IHphcHBpbmcKKwkJaXRzIGhlYWRlci4gIElmIHRoZSBzdXNwZW5kIGlzIG5vdCB0byBiZSBjYW5jZWxsZWQsIHRoZQorCQlzeXN0ZW0gTVVTVCBiZSBwb3dlcmVkIG9mZiBvciByZWJvb3RlZCBhZnRlciB0aGUgc25hcHNob3QKKwkJaW1hZ2UgaGFzIGJlZW4gc2F2ZWQuCisJKGIpCVRoZSBzdXNwZW5kaW5nIHV0aWxpdHkgU0hPVUxEIE5PVCBhdHRlbXB0IHRvIHBlcmZvcm0gYW55CisJCWZpbGUgc3lzdGVtIG9wZXJhdGlvbnMgKGluY2x1ZGluZyByZWFkcykgb24gdGhlIGZpbGUgc3lzdGVtcworCQl0aGF0IHdlcmUgbW91bnRlZCBiZWZvcmUgU05BUFNIT1RfQ1JFQVRFX0lNQUdFIGhhcyBiZWVuCisJCWNhbGxlZC4gIEhvd2V2ZXIsIGl0IE1BWSBtb3VudCBhIGZpbGUgc3lzdGVtIHRoYXQgd2FzIG5vdAorCQltb3VudGVkIGF0IHRoYXQgdGltZSBhbmQgcGVyZm9ybSBzb21lIG9wZXJhdGlvbnMgb24gaXQgKGVnLgorCQl1c2UgaXQgZm9yIHNhdmluZyB0aGUgaW1hZ2UpLgorMi4JSWYgdGhlIHZhbHVlIGlzIDAgKGllLiB0aGUgc3lzdGVtIHN0YXRlIGhhcyBqdXN0IGJlZW4gcmVzdG9yZWQgZnJvbQorCXRoZSBzbmFwc2hvdCBpbWFnZSksIHRoZSBzdXNwZW5kaW5nIHV0aWxpdHkgTVVTVCBjbG9zZSB0aGUgc25hcHNob3QKKwlkZXZpY2UuICBBZnRlcndhcmRzIGl0IHdpbGwgYmUgdHJlYXRlZCBhcyBhIHJlZ3VsYXIgdXNlcmxhbmQgcHJvY2VzcywKKwlzbyBpdCBuZWVkIG5vdCBleGl0LgorCitUaGUgcmVzdW1pbmcgdXRpbGl0eSBTSE9VTEQgTk9UIGF0dGVtcHQgdG8gbW91bnQgYW55IGZpbGUgc3lzdGVtcyB0aGF0IGNvdWxkCitiZSBtb3VudGVkIGJlZm9yZSBzdXNwZW5kIGFuZCBTSE9VTEQgTk9UIGF0dGVtcHQgdG8gcGVyZm9ybSBhbnkgb3BlcmF0aW9ucworaW52b2x2aW5nIHN1Y2ggZmlsZSBzeXN0ZW1zLgorCitGb3IgZGV0YWlscywgcGxlYXNlIHJlZmVyIHRvIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvdmlkZW8udHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci92aWRlby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U2MjcyYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXIvdmlkZW8udHh0CkBAIC0wLDAgKzEsMTg1IEBACisKKwkJVmlkZW8gaXNzdWVzIHdpdGggUzMgcmVzdW1lCisJCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkgIDIwMDMtMjAwNiwgUGF2ZWwgTWFjaGVrCisKK0R1cmluZyBTMyByZXN1bWUsIGhhcmR3YXJlIG5lZWRzIHRvIGJlIHJlaW5pdGlhbGl6ZWQuIEZvciBtb3N0CitkZXZpY2VzLCB0aGlzIGlzIGVhc3ksIGFuZCBrZXJuZWwgZHJpdmVyIGtub3dzIGhvdyB0byBkbworaXQuIFVuZm9ydHVuYXRlbHkgdGhlcmUncyBvbmUgZXhjZXB0aW9uOiB2aWRlbyBjYXJkLiBUaG9zZSBhcmUgdXN1YWxseQoraW5pdGlhbGl6ZWQgYnkgQklPUywgYW5kIGtlcm5lbCBkb2VzIG5vdCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0bworYm9vdCB2aWRlbyBjYXJkLiAoS2VybmVsIHVzdWFsbHkgZG9lcyBub3QgZXZlbiBjb250YWluIHZpZGVvIGNhcmQKK2RyaXZlciAtLSB2ZXNhZmIgYW5kIHZnYWNvbiBhcmUgd2lkZWx5IHVzZWQpLgorCitUaGlzIGlzIG5vdCBwcm9ibGVtIGZvciBzd3N1c3AsIGJlY2F1c2UgZHVyaW5nIHN3c3VzcCByZXN1bWUsIEJJT1MgaXMKK3J1biBub3JtYWxseSBzbyB2aWRlbyBjYXJkIGlzIG5vcm1hbGx5IGluaXRpYWxpemVkLiBJdCBzaG91bGQgbm90IGJlCitwcm9ibGVtIGZvciBTMSBzdGFuZGJ5LCBiZWNhdXNlIGhhcmR3YXJlIHNob3VsZCByZXRhaW4gaXRzIHN0YXRlIG92ZXIKK3RoYXQuCisKK1dlIGVpdGhlciBoYXZlIHRvIHJ1biB2aWRlbyBCSU9TIGR1cmluZyBlYXJseSByZXN1bWUsIG9yIGludGVycHJldCBpdAordXNpbmcgdmJldG9vbCBsYXRlciwgb3IgbWF5YmUgbm90aGluZyBpcyBuZWNlc3Nhcnkgb24gcGFydGljdWxhcgorc3lzdGVtIGJlY2F1c2UgdmlkZW8gc3RhdGUgaXMgcHJlc2VydmVkLiBVbmZvcnR1bmF0ZWx5IGRpZmZlcmVudAorbWV0aG9kcyB3b3JrIG9uIGRpZmZlcmVudCBzeXN0ZW1zLCBhbmQgbm8ga25vd24gbWV0aG9kIHN1aXRzIGFsbCBvZgordGhlbS4KKworVXNlcmxhbmQgYXBwbGljYXRpb24gY2FsbGVkIHMycmFtIGhhcyBiZWVuIGRldmVsb3BlZDsgaXQgY29udGFpbnMgbG9uZword2hpdGVsaXN0IG9mIHN5c3RlbXMsIGFuZCBhdXRvbWF0aWNhbGx5IHNlbGVjdHMgd29ya2luZyBtZXRob2QgZm9yIGEKK2dpdmVuIHN5c3RlbS4gSXQgY2FuIGJlIGRvd25sb2FkZWQgZnJvbSBDVlMgYXQKK3d3dy5zZi5uZXQvcHJvamVjdHMvc3VzcGVuZCAuIElmIHlvdSBnZXQgYSBzeXN0ZW0gdGhhdCBpcyBub3QgaW4gdGhlCit3aGl0ZWxpc3QsIHBsZWFzZSB0cnkgdG8gZmluZCBhIHdvcmtpbmcgc29sdXRpb24sIGFuZCBzdWJtaXQgd2hpdGVsaXN0CitlbnRyeSBzbyB0aGF0IHdvcmsgZG9lcyBub3QgbmVlZCB0byBiZSByZXBlYXRlZC4KKworQ3VycmVudGx5LCBWQkVfU0FWRSBtZXRob2QgKDYgYmVsb3cpIHdvcmtzIG9uIG1vc3QKK3N5c3RlbXMuIFVuZm9ydHVuYXRlbHksIHZiZXRvb2wgb25seSBydW5zIGFmdGVyIHVzZXJsYW5kIGlzIHJlc3VtZWQsCitzbyBpdCBtYWtlcyBkZWJ1Z2dpbmcgb2YgZWFybHkgcmVzdW1lIHByb2JsZW1zCitoYXJkL2ltcG9zc2libGUuIE1ldGhvZHMgdGhhdCBkbyBub3QgcmVseSBvbiB1c2VybGFuZCBhcmUgcHJlZmVyYWJsZS4KKworRGV0YWlscworfn5+fn5+fgorCitUaGVyZSBhcmUgYSBmZXcgdHlwZXMgb2Ygc3lzdGVtcyB3aGVyZSB2aWRlbyB3b3JrcyBhZnRlciBTMyByZXN1bWU6CisKKygxKSBzeXN0ZW1zIHdoZXJlIHZpZGVvIHN0YXRlIGlzIHByZXNlcnZlZCBvdmVyIFMzLgorCisoMikgc3lzdGVtcyB3aGVyZSBpdCBpcyBwb3NzaWJsZSB0byBjYWxsIHRoZSB2aWRlbyBCSU9TIGR1cmluZyBTMworICByZXN1bWUuIFVuZm9ydHVuYXRlbHksIGl0IGlzIG5vdCBjb3JyZWN0IHRvIGNhbGwgdGhlIHZpZGVvIEJJT1MgYXQKKyAgdGhhdCBwb2ludCwgYnV0IGl0IGhhcHBlbnMgdG8gd29yayBvbiBzb21lIG1hY2hpbmVzLiBVc2UKKyAgYWNwaV9zbGVlcD1zM19iaW9zLgorCisoMykgc3lzdGVtcyB0aGF0IGluaXRpYWxpemUgdmlkZW8gY2FyZCBpbnRvIHZnYSB0ZXh0IG1vZGUgYW5kIHdoZXJlCisgIHRoZSBCSU9TIHdvcmtzIHdlbGwgZW5vdWdoIHRvIGJlIGFibGUgdG8gc2V0IHZpZGVvIG1vZGUuIFVzZQorICBhY3BpX3NsZWVwPXMzX21vZGUgb24gdGhlc2UuCisKKyg0KSBvbiBzb21lIHN5c3RlbXMgczNfYmlvcyBraWNrcyB2aWRlbyBpbnRvIHRleHQgbW9kZSwgYW5kCisgIGFjcGlfc2xlZXA9czNfYmlvcyxzM19tb2RlIGlzIG5lZWRlZC4KKworKDUpIHJhZGVvbiBzeXN0ZW1zLCB3aGVyZSBYIGNhbiBzb2Z0LWJvb3QgeW91ciB2aWRlbyBjYXJkLiBZb3UnbGwgbmVlZAorICBhIG5ldyBlbm91Z2ggWCwgYW5kIGEgcGxhaW4gdGV4dCBjb25zb2xlIChubyB2ZXNhZmIgb3IgcmFkZW9uZmIpLiBTZWUKKyAgaHR0cDovL3d3dy5kb2VzaS5nbXhob21lLmRlL2xpbnV4L3RtODAwczMvczMuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgQWx0ZXJuYXRpdmVseSwgeW91IHNob3VsZCB1c2UgdmJldG9vbCAoNikgaW5zdGVhZC4KKworKDYpIG90aGVyIHJhZGVvbiBzeXN0ZW1zLCB3aGVyZSB2YmV0b29sIGlzIGVub3VnaCB0byBicmluZyBzeXN0ZW0gYmFjaworICB0byBsaWZlLiBJdCBuZWVkcyB0ZXh0IGNvbnNvbGUgdG8gYmUgd29ya2luZy4gRG8gdmJldG9vbCB2YmVzdGF0ZQorICBzYXZlID4gL3RtcC9kZWxtZTsgZWNobyAzID4gL3Byb2MvYWNwaS9zbGVlcDsgdmJldG9vbCBwb3N0OyB2YmV0b29sCisgIHZiZXN0YXRlIHJlc3RvcmUgPCAvdG1wL2RlbG1lOyBzZXRmb250IDx3aGF0ZXZlcj4sIGFuZCB5b3VyIHZpZGVvCisgIHNob3VsZCB3b3JrLgorCisoNykgb24gc29tZSBzeXN0ZW1zLCBpdCBpcyBwb3NzaWJsZSB0byBib290IG1vc3Qgb2Yga2VybmVsLCBhbmQgdGhlbgorICBQT1NUaW5nIGJpb3Mgd29ya3MuIE9sZSBSb2huZSBoYXMgcGF0Y2ggdG8gZG8ganVzdCB0aGF0IGF0CisgIGh0dHA6Ly9kZXYuZ2VudG9vLm9yZy9+bWFyaW5lYW0vcGF0Y2gtcmFkZW9uZmItMi42LjExLXJjMi1tbTIuCisKKyg4KSBvbiBzb21lIHN5c3RlbXMsIHlvdSBjYW4gdXNlIHRoZSB2aWRlb19wb3N0IHV0aWxpdHkgYW5kIG9yIAorICBkbyBlY2hvIDMgPiAvc3lzL3Bvd2VyL3N0YXRlICAmJiAvdXNyL3NiaW4vdmlkZW9fcG9zdCAtIHdoaWNoIHdpbGwgCisgIGluaXRpYWxpemUgdGhlIGRpc3BsYXkgaW4gY29uc29sZSBtb2RlLiBJZiB5b3UgYXJlIGluIFgsIHlvdSBjYW4gc3dpdGNoCisgIHRvIGEgdmlydHVhbCB0ZXJtaW5hbCBhbmQgYmFjayB0byBYIHVzaW5nICBDVFJMK0FMVCtGMSAtIENUUkwrQUxUK0Y3IHRvIGdldAorICB0aGUgZGlzcGxheSB3b3JraW5nIGluIGdyYXBoaWNhbCBtb2RlIGFnYWluLgorCitOb3csIGlmIHlvdSBwYXNzIGFjcGlfc2xlZXA9c29tZXRoaW5nLCBhbmQgaXQgZG9lcyBub3Qgd29yayB3aXRoIHlvdXIKK2Jpb3MsIHlvdSdsbCBnZXQgYSBoYXJkIGNyYXNoIGR1cmluZyByZXN1bWUuIEJlIGNhcmVmdWwuIEFsc28gaXQgaXMKK3NhZmVzdCB0byBkbyB5b3VyIGV4cGVyaW1lbnRzIHdpdGggcGxhaW4gb2xkIFZHQSBjb25zb2xlLiBUaGUgdmVzYWZiCithbmQgcmFkZW9uZmIgKGV0YykgZHJpdmVycyBoYXZlIGEgdGVuZGVuY3kgdG8gY3Jhc2ggdGhlIG1hY2hpbmUgZHVyaW5nCityZXN1bWUuCisKK1lvdSBtYXkgaGF2ZSBhIHN5c3RlbSB3aGVyZSBub25lIG9mIGFib3ZlIHdvcmtzLiBBdCB0aGF0IHBvaW50IHlvdQorZWl0aGVyIGludmVudCBhbm90aGVyIHVnbHkgaGFjayB0aGF0IHdvcmtzLCBvciB3cml0ZSBwcm9wZXIgZHJpdmVyIGZvcgoreW91ciB2aWRlbyBjYXJkIChnb29kIGx1Y2sgZ2V0dGluZyBkb2NzIDotKCkuIE1heWJlIHN1c3BlbmRpbmcgZnJvbSBYCisocHJvcGVyIFgsIGtub3dpbmcgeW91ciBoYXJkd2FyZSwgbm90IFhGNjhfRkJjb24pIG1pZ2h0IGhhdmUgYmV0dGVyCitjaGFuY2Ugb2Ygd29ya2luZy4KKworVGFibGUgb2Yga25vd24gd29ya2luZyBub3RlYm9va3M6CisKK01vZGVsICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFjayAob3IgImhvdyB0byBkbyBpdCIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FjZXIgQXNwaXJlIDE0MDZMQwkJb2xlJ3MgbGF0ZSBCSU9TIGluaXQgKDcpLCB0dXJuIG9mZiBEUkkKK0FjZXIgVE0gMjMwCQkJczNfYmlvcyAoMikKK0FjZXIgVE0gMjQyRlgJCQl2YmV0b29sICg2KQorQWNlciBUTSBDMTEwCQkJdmlkZW9fcG9zdCAoOCkKK0FjZXIgVE0gQzMwMCAgICAgICAgICAgICAgICAgICAgdmdhPW5vcm1hbCAob25seSBzdXNwZW5kIG9uIGNvbnNvbGUsIG5vdCBpbiBYKSwgdmJldG9vbCAoNikgb3IgdmlkZW9fcG9zdCAoOCkKK0FjZXIgVE0gNDA1MkxDaQkJICAgICAgICBzM19iaW9zICgyKQorQWNlciBUTSA2MzZMY2kJCQlzM19iaW9zLHMzX21vZGUgKDQpCitBY2VyIFRNIDY1MCAoUmFkZW9uIE03KQkJdmdhPW5vcm1hbCBwbHVzIGJvb3QtcmFkZW9uICg1KSBnZXRzIHRleHQgY29uc29sZSBiYWNrCitBY2VyIFRNIDY2MAkJCT8/PyAoKikKK0FjZXIgVE0gODAwCQkJdmdhPW5vcm1hbCwgWCBwYXRjaGVzLCBzZWUgd2VicGFnZSAoNSkgb3IgdmJldG9vbCAoNikKK0FjZXIgVE0gODAzCQkJdmdhPW5vcm1hbCwgWCBwYXRjaGVzLCBzZWUgd2VicGFnZSAoNSkgb3IgdmJldG9vbCAoNikKK0FjZXIgVE0gODAzTENpCQkJdmdhPW5vcm1hbCwgdmJldG9vbCAoNikKK0FyaW1hIFc3MzBhCQkJdmJldG9vbCBuZWVkZWQgKDYpCitBc3VzIEwyNDAwRCAgICAgICAgICAgICAgICAgICAgIHMzX21vZGUgKDMpKCoqKikgKFMxIGFsc28gd29ya3MgT0spCitBc3VzIEwzMzUwTSAoU2lTIDc0MCkgICAgICAgICAgICg2KQorQXN1cyBMMzgwMEMgKFJhZGVvbiBNNykJCXMzX2Jpb3MgKDIpIChTMSBhbHNvIHdvcmtzIE9LKQorQXN1cyBNNjg4N05lCQkJdmdhPW5vcm1hbCwgczNfYmlvcyAoMiksIHVzZSByYWRlb24gZHJpdmVyIGluc3RlYWQgb2YgZmdscnggaW4geC5vcmcKK0F0aGxvbjY0IGRlc2t0b3AgcHJvdG90eXBlCXMzX2Jpb3MgKDIpCitDb21wYWwgQ0wtNTAJCQk/Pz8gKCopCitDb21wYXEgQXJtYWRhIEU1MDAgLSBQMy03MDAgICAgIG5vbmUgKDEpIChTMSBhbHNvIHdvcmtzIE9LKQorQ29tcGFxIEV2byBONjIwYwkJdmdhPW5vcm1hbCwgczNfYmlvcyAoMikKK0RlbGwgNjAwbSwgQVRJIFIyNTAgTGYJCW5vbmUgKDEpLCBidXQgbmVlZHMgeG9yZy14MTEtNi44LjEuOTAyLTEKK0RlbGwgRDYwMCwgQVRJIFJWMjUwICAgICAgICAgICAgdmdhPW5vcm1hbCBhbmQgWCwgb3IgdHJ5IHZiZXN0YXRlICg2KQorRGVsbCBENjEwCQkJdmdhPW5vcm1hbCBhbmQgWCAocG9zc2libHkgdmJlc3RhdGUgKDYpIHRvbywgYnV0IG5vdCB0ZXN0ZWQpCitEZWxsIEluc3Bpcm9uIDQwMDAJCT8/PyAoKikKK0RlbGwgSW5zcGlyb24gNTAwbQkJPz8/ICgqKQorRGVsbCBJbnNwaXJvbiA1MTBtCQk/Pz8KK0RlbGwgSW5zcGlyb24gNTE1MAkJdmJldG9vbCBuZWVkZWQgKDYpCitEZWxsIEluc3Bpcm9uIDYwMG0JCT8/PyAoKikKK0RlbGwgSW5zcGlyb24gODIwMAkJPz8/ICgqKQorRGVsbCBJbnNwaXJvbiA4NTAwCQk/Pz8gKCopCitEZWxsIEluc3Bpcm9uIDg2MDAJCT8/PyAoKikKK2VNYWNoaW5lcyBhdGhsb242NCBtYWNoaW5lcwl2YmV0b29sIG5lZWRlZCAoNikgKHNvbWVvbmUgcGxlYXNlIGdldCBtZSBtb2RlbCAjcykKK0hQIE5DNjAwMAkJCXMzX2Jpb3MsIG1heSBub3QgdXNlIHJhZGVvbmZiICgyKTsgb3IgdmJldG9vbCAoNikKK0hQIE5YNzAwMAkJCT8/PyAoKikKK0hQIFBhdmlsaW9uIFpENzAwMAkJdmJldG9vbCBwb3N0IG5lZWRlZCwgbmVlZCBvcGVuLXNvdXJjZSBudiBkcml2ZXIgZm9yIFgKK0hQIE9tbmlib29rIFhFMwlhdGhsb24gdmVyc2lvbglub25lICgxKQorSFAgT21uaWJvb2sgWEUzR0MJCW5vbmUgKDEpLCB2aWRlbyBpcyBTMyBTYXZhZ2UvSVgtTVYKK0hQIE9tbmlib29rIFhFM0wtR0YJCXZiZXRvb2wgKDYpCitIUCBPbW5pYm9vayA1MTUwCQlub25lICgxKSwgKFMxIGFsc28gd29ya3MgT0spCitJQk0gVFAgVDIwLCBtb2RlbCAyNjQ3LTQ0Rwlub25lICgxKSwgdmlkZW8gaXMgUzMgSW5jLiA4NkMyNzAtMjk0IFNhdmFnZS9JWC1NViwgdmVzYWZiIGdldHMgImludGVyZXN0aW5nIiBidXQgWCB3b3JrLgorSUJNIFRQIEEzMSAvIFR5cGUgMjY1Mi1NNUcgICAgICBzM19tb2RlICgzKSBbd29ya3Mgb2sgd2l0aCBCSU9TIDEuMDQgMjAwMi0wOC0yMywgYnV0IG5vdCBhdCBhbGwgd2l0aCBCSU9TIDEuMTEgMjAwNC0xMS0wNSA6LShdCitJQk0gVFAgUjMyIC8gVHlwZSAyNjU4LU1NRyAgICAgIG5vbmUgKDEpCitJQk0gVFAgUjQwIDI3MjJCM0cJCT8/PyAoKikKK0lCTSBUUCBSNTBwIC8gVHlwZSAxODMyLTIyVSAgICAgczNfYmlvcyAoMikKK0lCTSBUUCBSNTEJCQlub25lICgxKQorSUJNIFRQIFQzMAkyMzY2ODFBCQk/Pz8gKCopCitJQk0gVFAgVDQwIC8gVHlwZSAyMzczLU1VNCAgICAgIG5vbmUgKDEpCitJQk0gVFAgVDQwcAkJCW5vbmUgKDEpCitJQk0gVFAgUjQwcAkJCXMzX2Jpb3MgKDIpCitJQk0gVFAgVDQxcAkJCXMzX2Jpb3MgKDIpLCBzd2l0Y2ggdG8gWCBhZnRlciByZXN1bWUKK0lCTSBUUCBUNDIJCQlzM19iaW9zICgyKQorSUJNIFRoaW5rUGFkIFQ0MnAgKDIzNzMtR1RHKQlzM19iaW9zICgyKQorSUJNIFRQIFgyMAkJCT8/PyAoKikKK0lCTSBUUCBYMzAJCQlzM19iaW9zLCBzM19tb2RlICg0KQorSUJNIFRQIFgzMSAvIFR5cGUgMjY3Mi1YWEggICAgICBub25lICgxKSwgdXNlIHJhZGVvbnRvb2wgKGh0dHA6Ly9mZGQuY29tL3NvZnR3YXJlL3JhZGVvbi8pIHRvIHR1cm4gb2ZmIGJhY2tsaWdodC4KK0lCTSBUUCBYMzIJCQlub25lICgxKSwgYnV0IGJhY2tsaWdodCBpcyBvbiBhbmQgdmlkZW8gaXMgdHJhc2hlZCBhZnRlciBsb25nIHN1c3BlbmQuIHMzX2Jpb3MsczNfbW9kZSAoNCkgd29ya3MgdG9vLiBQZXJoYXBzIHRoYXQgZ2V0cyBiZXR0ZXIgcmVzdWx0cz8KK0lCTSBUaGlua3BhZCBYNDAgVHlwZSAyMzcxLTdKRyAgczNfYmlvcyxzM19tb2RlICg0KQorSUJNIFRQIDYwMGUJCQlub25lKDEpLCBidXQgYSBzd2l0Y2ggdG8gY29uc29sZSBhbmQgYmFjayB0byBYIGlzIG5lZWRlZAorTWVkaW9uIE1ENDIyMAkJCT8/PyAoKikKK1NhbXN1bmcgUDM1CQkJdmJldG9vbCBuZWVkZWQgKDYpCitTaGFycCBQQy1BUjEwIChBVEkgcmFnZSkJbm9uZSAoMSksIGJhY2tsaWdodCBkb2VzIG5vdCBzd2l0Y2ggb2ZmCitTb255IFZhaW8gUENHLUMxVlJYL0sJCXMzX2Jpb3MgKDIpCitTb255IFZhaW8gUENHLUY0MDMJCT8/PyAoKikKK1NvbnkgVmFpbyBQQ0ctR1JUOTk1TVAJCW5vbmUgKDEpLCB3b3JrcyB3aXRoICdudicgWCBkcml2ZXIKK1NvbnkgVmFpbyBQQ0ctR1I3L0sJCW5vbmUgKDEpLCBidXQgbmVlZHMgcmFkZW9uZmIsIHVzZSByYWRlb250b29sIChodHRwOi8vZmRkLmNvbS9zb2Z0d2FyZS9yYWRlb24vKSB0byB0dXJuIG9mZiBiYWNrbGlnaHQuCitTb255IFZhaW8gUENHLU41MDVTTgkJPz8/ICgqKQorU29ueSBWYWlvIHZnbi1zMjYwCQlYIG9yIGJvb3QtcmFkZW9uIGNhbiBpbml0IGl0ICg1KQorU29ueSBWYWlvIHZnbi1TNTgwQkgJCXZnYT1ub3JtYWwsIGJ1dCBzdXNwZW5kIGZyb20gWC4gQ29uc29sZSB3aWxsIGJlIGJsYW5rIHVubGVzcyB5b3UgcmV0dXJuIHRvIFguCitTb255IFZhaW8gdmduLUZTMTE1QgkJczNfYmlvcyAoMiksczNfbW9kZSAoNCkKK1Rvc2hpYmEgTGlicmV0dG8gTDUJCW5vbmUgKDEpCitUb3NoaWJhIExpYnJldHRvIDEwMENULzExMENUICAgIHZiZXRvb2wgKDYpCitUb3NoaWJhIFBvcnRlZ2UgMzAyMENUCQlzM19tb2RlICgzKQorVG9zaGliYSBTYXRlbGxpdGUgNDAzMENEVAlzM19tb2RlICgzKSAoUzEgYWxzbyB3b3JrcyBPSykKK1Rvc2hpYmEgU2F0ZWxsaXRlIDQwODBYQ0RUICAgICAgczNfbW9kZSAoMykgKFMxIGFsc28gd29ya3MgT0spCitUb3NoaWJhIFNhdGVsbGl0ZSA0MDkwWENEVCAgICAgID8/PyAoKikKK1Rvc2hpYmEgU2F0ZWxsaXRlIFAxMC01NTQgICAgICAgczNfYmlvcyxzM19tb2RlICg0KSgqKioqKQorVG9zaGliYSBNMzAgICAgICAgICAgICAgICAgICAgICAoMikgeG9yIFggd2l0aCBudmlkaWEgZHJpdmVyIHVzaW5nIGludGVybmFsIEFHUAorVW5pd2lsbCAyNDRJSU8JCQk/Pz8gKCopCisKK0tub3duIHdvcmtpbmcgZGVza3RvcCBzeXN0ZW1zCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitNYWluYm9hcmQJICAgIEdyYXBoaWNzIGNhcmQgICAgICAgICAgICAgICAgIGhhY2sgKG9yICJob3cgdG8gZG8gaXQiKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBc3VzIEE3VjhYCSAgICBuVmlkaWEgUklWQSBUTlQyIG1vZGVsIDY0CSAgczNfYmlvcyxzM19tb2RlICg0KQorCisKKygqKSBmcm9tIGh0dHBzOi8vd2lraS51YnVudHUuY29tL0hvYXJ5UE1SZXN1bHRzLCBub3Qgc3VyZQorICAgIHdoaWNoIG9wdGlvbnMgdG8gdXNlLiBJZiB5b3Uga25vdywgcGxlYXNlIHRlbGwgbWUuCisKKygqKiopIFRvIGJlIHRlc3RlZCB3aXRoIGEgbmV3ZXIga2VybmVsLgorCisoKioqKikgTm90IHdpdGggU01QIGtlcm5lbCwgVVAgb25seS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXJwYy8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vcG93ZXJwYy8wMC1JTkRFWApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGM4NDVjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlcnBjLzAwLUlOREVYCkBAIC0wLDAgKzEsMzQgQEAKK0luZGV4IG9mIGZpbGVzIGluIERvY3VtZW50YXRpb24vcG93ZXJwYy4gIElmIHlvdSB0aGluayBzb21ldGhpbmcgYWJvdXQKK0xpbnV4L1BQQyBuZWVkcyBhbiBlbnRyeSBoZXJlLCBuZWVkcyBjb3JyZWN0aW9uIG9yIHlvdSd2ZSB3cml0dGVuIG9uZQorcGxlYXNlIG1haWwgbWUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29ydCBEb3VnYW4gKGNvcnRAZnNtbGFicy5jb20pCisKKzAwLUlOREVYCisJLSB0aGlzIGZpbGUKK2Jvb3R3cmFwcGVyLnR4dAorCS0gSW5mb3JtYXRpb24gb24gaG93IHRoZSBwb3dlcnBjIGtlcm5lbCBpcyB3cmFwcGVkIGZvciBib290IG9uIHZhcmlvdXMKKwkgIGRpZmZlcmVudCBwbGF0Zm9ybXMuCitjcHVfZmVhdHVyZXMudHh0CisJLSBpbmZvIG9uIGhvdyB3ZSBzdXBwb3J0IGEgdmFyaWV0eSBvZiBDUFVzIHdpdGggbWluaW1hbCBjb21waWxlLXRpbWUKKwlvcHRpb25zLgorY3hsLnR4dAorCS0gT3ZlcnZpZXcgb2YgdGhlIENYTCBkcml2ZXIuCitlZWgtcGNpLWVycm9yLXJlY292ZXJ5LnR4dAorCS0gaW5mbyBvbiBQQ0kgQnVzIEVFSCBFcnJvciBSZWNvdmVyeQorZmlybXdhcmUtYXNzaXN0ZWQtZHVtcC50eHQKKwktIERvY3VtZW50YXRpb24gb24gdGhlIGZpcm13YXJlIGFzc2lzdGVkIGR1bXAgbWVjaGFuaXNtICJmYWR1bXAiLgoraHZjcy50eHQKKwktIElCTSAiSHlwZXJ2aXNvciBWaXJ0dWFsIENvbnNvbGUgU2VydmVyIiBJbnN0YWxsYXRpb24gR3VpZGUKK21wYzUyeHgudHh0CisJLSBMaW51eCAyLjYueCBvbiBNUEM1Mnh4IGZhbWlseQorcG11LWViYi50eHQKKwktIERlc2NyaXB0aW9uIG9mIHRoZSBBUEkgZm9yIHVzaW5nIHRoZSBQTVUgd2l0aCBFdmVudCBCYXNlZCBCcmFuY2hlcy4KK3FlX2Zpcm13YXJlLnR4dAorCS0gZGVzY3JpYmVzIHRoZSBsYXlvdXQgb2YgZmlybXdhcmUgYmluYXJpZXMgZm9yIHRoZSBGcmVlc2NhbGUgUVVJQ0MKKwkgIEVuZ2luZSBhbmQgdGhlIGNvZGUgdGhhdCBwYXJzZXMgYW5kIHVwbG9hZHMgdGhlIG1pY3JvY29kZSB0aGVyZWluLgorcHRyYWNlLnR4dAorCS0gSW5mb3JtYXRpb24gb24gdGhlIHB0cmFjZSBpbnRlcmZhY2VzIGZvciBoYXJkd2FyZSBkZWJ1ZyByZWdpc3RlcnMuCit0cmFuc2FjdGlvbmFsX21lbW9yeS50eHQKKwktIE92ZXJ2aWV3IG9mIHRoZSBQb3dlcjggdHJhbnNhY3Rpb25hbCBtZW1vcnkgc3VwcG9ydC4KK2RzY3IudHh0CisJLSBPdmVydmlldyBEU0NSIChEYXRhIFN0cmVhbSBDb250cm9sIFJlZ2lzdGVyKSBzdXBwb3J0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlcnBjL2Jvb3R3cmFwcGVyLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXJwYy9ib290d3JhcHBlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDYwZmNlZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXJwYy9ib290d3JhcHBlci50eHQKQEAgLTAsMCArMSwxNDEgQEAKK1RoZSBQb3dlclBDIGJvb3Qgd3JhcHBlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDb3B5cmlnaHQgKEMpIFNlY3JldCBMYWIgVGVjaG5vbG9naWVzIEx0ZC4KKworUG93ZXJQQyBpbWFnZSB0YXJnZXRzIGNvbXByZXNzZXMgYW5kIHdyYXBzIHRoZSBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIHdpdGgKK2EgYm9vdCB3cmFwcGVyIHRvIG1ha2UgaXQgdXNhYmxlIGJ5IHRoZSBzeXN0ZW0gZmlybXdhcmUuICBUaGVyZSBpcyBubworc3RhbmRhcmQgUG93ZXJQQyBmaXJtd2FyZSBpbnRlcmZhY2UsIHNvIHRoZSBib290IHdyYXBwZXIgaXMgZGVzaWduZWQgdG8KK2JlIGFkYXB0YWJsZSBmb3IgZWFjaCBraW5kIG9mIGltYWdlIHRoYXQgbmVlZHMgdG8gYmUgYnVpbHQuCisKK1RoZSBib290IHdyYXBwZXIgY2FuIGJlIGZvdW5kIGluIHRoZSBhcmNoL3Bvd2VycGMvYm9vdC8gZGlyZWN0b3J5LiAgVGhlCitNYWtlZmlsZSBpbiB0aGF0IGRpcmVjdG9yeSBoYXMgdGFyZ2V0cyBmb3IgYWxsIHRoZSBhdmFpbGFibGUgaW1hZ2UgdHlwZXMuCitUaGUgZGlmZmVyZW50IGltYWdlIHR5cGVzIGFyZSB1c2VkIHRvIHN1cHBvcnQgYWxsIG9mIHRoZSB2YXJpb3VzIGZpcm13YXJlCitpbnRlcmZhY2VzIGZvdW5kIG9uIFBvd2VyUEMgcGxhdGZvcm1zLiAgT3BlbkZpcm13YXJlIGlzIHRoZSBtb3N0IGNvbW1vbmx5Cit1c2VkIGZpcm13YXJlIHR5cGUgb24gZ2VuZXJhbCBwdXJwb3NlIFBvd2VyUEMgc3lzdGVtcyBmcm9tIEFwcGxlLCBJQk0gYW5kCitvdGhlcnMuICBVLUJvb3QgaXMgdHlwaWNhbGx5IGZvdW5kIG9uIGVtYmVkZGVkIFBvd2VyUEMgaGFyZHdhcmUsIGJ1dCB0aGVyZQorYXJlIGEgaGFuZGZ1bCBvZiBvdGhlciBmaXJtd2FyZSBpbXBsZW1lbnRhdGlvbnMgd2hpY2ggYXJlIGFsc28gcG9wdWxhci4gIEVhY2gKK2Zpcm13YXJlIGludGVyZmFjZSByZXF1aXJlcyBhIGRpZmZlcmVudCBpbWFnZSBmb3JtYXQuCisKK1RoZSBib290IHdyYXBwZXIgaXMgYnVpbHQgZnJvbSB0aGUgbWFrZWZpbGUgaW4gYXJjaC9wb3dlcnBjL2Jvb3QvTWFrZWZpbGUgYW5kCitpdCB1c2VzIHRoZSB3cmFwcGVyIHNjcmlwdCAoYXJjaC9wb3dlcnBjL2Jvb3Qvd3JhcHBlcikgdG8gZ2VuZXJhdGUgdGFyZ2V0CitpbWFnZS4gIFRoZSBkZXRhaWxzIG9mIHRoZSBidWlsZCBzeXN0ZW0gaXMgZGlzY3Vzc2VkIGluIHRoZSBuZXh0IHNlY3Rpb24uCitDdXJyZW50bHksIHRoZSBmb2xsb3dpbmcgaW1hZ2UgZm9ybWF0IHRhcmdldHMgZXhpc3Q6CisKKyAgIGN1SW1hZ2UuJToJCUJhY2t3YXJkcyBjb21wYXRpYmxlIHVJbWFnZSBmb3Igb2xkZXIgdmVyc2lvbiBvZgorCQkJVS1Cb290IChmb3IgdmVyc2lvbnMgdGhhdCBkb24ndCB1bmRlcnN0YW5kIHRoZSBkZXZpY2UKKwkJCXRyZWUpLiAgVGhpcyBpbWFnZSBlbWJlZHMgYSBkZXZpY2UgdHJlZSBibG9iIGluc2lkZQorCQkJdGhlIGltYWdlLiAgVGhlIGJvb3Qgd3JhcHBlciwga2VybmVsIGFuZCBkZXZpY2UgdHJlZQorCQkJYXJlIGFsbCBlbWJlZGRlZCBpbnNpZGUgdGhlIFUtQm9vdCB1SW1hZ2UgZmlsZSBmb3JtYXQKKwkJCXdpdGggYm9vdCB3cmFwcGVyIGNvZGUgdGhhdCBleHRyYWN0cyBkYXRhIGZyb20gdGhlIG9sZAorCQkJYmRfaW5mbyBzdHJ1Y3R1cmUgYW5kIGxvYWRzIHRoZSBkYXRhIGludG8gdGhlIGRldmljZQorCQkJdHJlZSBiZWZvcmUganVtcGluZyBpbnRvIHRoZSBrZXJuZWwuCisJCQkgIEJlY2F1c2Ugb2YgdGhlIHNlcmllcyBvZiAjaWZkZWZzIGZvdW5kIGluIHRoZQorCQkJYmRfaW5mbyBzdHJ1Y3R1cmUgdXNlZCBpbiB0aGUgb2xkIFUtQm9vdCBpbnRlcmZhY2VzLAorCQkJY3VJbWFnZXMgYXJlIHBsYXRmb3JtIHNwZWNpZmljLiAgRWFjaCBzcGVjaWZpYworCQkJVS1Cb290IHBsYXRmb3JtIGhhcyBhIGRpZmZlcmVudCBwbGF0Zm9ybSBpbml0IGZpbGUKKwkJCXdoaWNoIHBvcHVsYXRlcyB0aGUgZW1iZWRkZWQgZGV2aWNlIHRyZWUgd2l0aCBkYXRhCisJCQlmcm9tIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBiZF9pbmZvIGZpbGUuICBUaGUgcGxhdGZvcm0KKwkJCXNwZWNpZmljIGN1SW1hZ2UgcGxhdGZvcm0gaW5pdCBjb2RlIGNhbiBiZSBmb3VuZCBpbgorCQkJYXJjaC9wb3dlcnBjL2Jvb3QvY3Vib290LiouYy4gIFNlbGVjdGlvbiBvZiB0aGUgY29ycmVjdAorCQkJY3VJbWFnZSBpbml0IGNvZGUgZm9yIGEgc3BlY2lmaWMgYm9hcmQgY2FuIGJlIGZvdW5kIGluCisJCQl0aGUgd3JhcHBlciBzdHJ1Y3R1cmUuCisgICBkdGJJbWFnZS4lOgkJU2ltaWxhciB0byB6SW1hZ2UsIGV4Y2VwdCBkZXZpY2UgdHJlZSBibG9iIGlzIGVtYmVkZGVkCisJCQlpbnNpZGUgdGhlIGltYWdlIGluc3RlYWQgb2YgcHJvdmlkZWQgYnkgZmlybXdhcmUuICBUaGUKKwkJCW91dHB1dCBpbWFnZSBmaWxlIGNhbiBiZSBlaXRoZXIgYW4gZWxmIGZpbGUgb3IgYSBmbGF0CisJCQliaW5hcnkgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybS4KKwkJCSAgZHRiSW1hZ2VzIGFyZSB1c2VkIG9uIHN5c3RlbXMgd2hpY2ggZG8gbm90IGhhdmUgYW4KKwkJCWludGVyZmFjZSBmb3IgcGFzc2luZyBhIGRldmljZSB0cmVlIGRpcmVjdGx5LgorCQkJZHRiSW1hZ2VzIGFyZSBzaW1pbGFyIHRvIHNpbXBsZUltYWdlcyBleGNlcHQgdGhhdAorCQkJZHRiSW1hZ2VzIGhhdmUgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSBmb3IgZXh0cmFjdGluZworCQkJZGF0YSBmcm9tIHRoZSBib2FyZCBmaXJtd2FyZSwgYnV0IHNpbXBsZUltYWdlcyBkbyBub3QKKwkJCXRhbGsgdG8gdGhlIGZpcm13YXJlIGF0IGFsbC4KKwkJCSAgUGxheVN0YXRpb24gMyBzdXBwb3J0IHVzZXMgZHRiSW1hZ2UuICBTbyBkbyBFbWJlZGRlZAorCQkJUGxhbmV0IGJvYXJkcyB1c2luZyB0aGUgUGxhbmV0Q29yZSBmaXJtd2FyZS4gIEJvYXJkCisJCQlzcGVjaWZpYyBpbml0aWFsaXphdGlvbiBjb2RlIGlzIHR5cGljYWxseSBmb3VuZCBpbiBhCisJCQlmaWxlIG5hbWVkIGFyY2gvcG93ZXJwYy9ib290LzxwbGF0Zm9ybT4uYzsgYnV0IHRoaXMKKwkJCWNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSB3cmFwcGVyIHNjcmlwdC4KKyAgIHNpbXBsZUltYWdlLiU6CUZpcm13YXJlIGluZGVwZW5kZW50IGNvbXByZXNzZWQgaW1hZ2UgdGhhdCBkb2VzIG5vdAorCQkJZGVwZW5kIG9uIGFueSBwYXJ0aWN1bGFyIGZpcm13YXJlIGludGVyZmFjZSBhbmQgZW1iZWRzCisJCQlhIGRldmljZSB0cmVlIGJsb2IuICBUaGlzIGltYWdlIGlzIGEgZmxhdCBiaW5hcnkgdGhhdAorCQkJY2FuIGJlIGxvYWRlZCB0byBhbnkgbG9jYXRpb24gaW4gUkFNIGFuZCBqdW1wZWQgdG8uCisJCQlGaXJtd2FyZSBjYW5ub3QgcGFzcyBhbnkgY29uZmlndXJhdGlvbiBkYXRhIHRvIHRoZQorCQkJa2VybmVsIHdpdGggdGhpcyBpbWFnZSB0eXBlIGFuZCBpdCBkZXBlbmRzIGVudGlyZWx5IG9uCisJCQl0aGUgZW1iZWRkZWQgZGV2aWNlIHRyZWUgZm9yIGFsbCBpbmZvcm1hdGlvbi4KKwkJCSAgVGhlIHNpbXBsZUltYWdlIGlzIHVzZWZ1bCBmb3IgYm9vdGluZyBzeXN0ZW1zIHdpdGgKKwkJCWFuIHVua25vd24gZmlybXdhcmUgaW50ZXJmYWNlIG9yIGZvciBib290aW5nIGZyb20KKwkJCWEgZGVidWdnZXIgd2hlbiBubyBmaXJtd2FyZSBpcyBwcmVzZW50IChzdWNoIGFzIG9uCisJCQl0aGUgWGlsaW54IFZpcnRleCBwbGF0Zm9ybSkuICBUaGUgb25seSBhc3N1bXB0aW9uIHRoYXQKKwkJCXNpbXBsZUltYWdlIG1ha2VzIGlzIHRoYXQgUkFNIGlzIGNvcnJlY3RseSBpbml0aWFsaXplZAorCQkJYW5kIHRoYXQgdGhlIE1NVSBpcyBlaXRoZXIgb2ZmIG9yIGhhcyBSQU0gbWFwcGVkIHRvCisJCQliYXNlIGFkZHJlc3MgMC4KKwkJCSAgc2ltcGxlSW1hZ2UgYWxzbyBzdXBwb3J0cyBpbnNlcnRpbmcgc3BlY2lhbCBwbGF0Zm9ybQorCQkJc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gY29kZSB0byB0aGUgc3RhcnQgb2YgdGhlIGJvb3R1cAorCQkJc2VxdWVuY2UuICBUaGUgdmlydGV4NDA1IHBsYXRmb3JtIHVzZXMgdGhpcyBmZWF0dXJlIHRvCisJCQllbnN1cmUgdGhhdCB0aGUgY2FjaGUgaXMgaW52YWxpZGF0ZWQgYmVmb3JlIGNhY2hpbmcKKwkJCWlzIGVuYWJsZWQuICBQbGF0Zm9ybSBzcGVjaWZpYyBpbml0aWFsaXphdGlvbiBjb2RlIGlzCisJCQlhZGRlZCBhcyBwYXJ0IG9mIHRoZSB3cmFwcGVyIHNjcmlwdCBhbmQgaXMga2V5ZWQgb24KKwkJCXRoZSBpbWFnZSB0YXJnZXQgbmFtZS4gIEZvciBleGFtcGxlLCBhbGwKKwkJCXNpbXBsZUltYWdlLnZpcnRleDQwNS0qIHRhcmdldHMgd2lsbCBhZGQgdGhlCisJCQl2aXJ0ZXg0MDUtaGVhZC5TIGluaXRpYWxpemF0aW9uIGNvZGUgKFRoaXMgYWxzbyBtZWFucworCQkJdGhhdCB0aGUgZHRzIGZpbGUgZm9yIHZpcnRleDQwNSB0YXJnZXRzIHNob3VsZCBiZQorCQkJbmFtZWQgKHZpcnRleDQwNS08Ym9hcmQ+LmR0cykuICBTZWFyY2ggdGhlIHdyYXBwZXIKKwkJCXNjcmlwdCBmb3IgJ3ZpcnRleDQwNScgYW5kIHNlZSB0aGUgZmlsZQorCQkJYXJjaC9wb3dlcnBjL2Jvb3QvdmlydGV4NDA1LWhlYWQuUyBmb3IgZGV0YWlscy4KKyAgIHRyZWVJbWFnZS4lOwkJSW1hZ2UgZm9ybWF0IGZvciB1c2VkIHdpdGggT3BlbkJJT1MgZmlybXdhcmUgZm91bmQKKwkJCW9uIHNvbWUgcHBjNHh4IGhhcmR3YXJlLiAgVGhpcyBpbWFnZSBlbWJlZHMgYSBkZXZpY2UKKwkJCXRyZWUgYmxvYiBpbnNpZGUgdGhlIGltYWdlLgorICAgdUltYWdlOgkJTmF0aXZlIGltYWdlIGZvcm1hdCB1c2VkIGJ5IFUtQm9vdC4gIFRoZSB1SW1hZ2UgdGFyZ2V0CisJCQlkb2VzIG5vdCBhZGQgYW55IGJvb3QgY29kZS4gIEl0IGp1c3Qgd3JhcHMgYSBjb21wcmVzc2VkCisJCQl2bWxpbnV4IGluIHRoZSB1SW1hZ2UgZGF0YSBzdHJ1Y3R1cmUuICBUaGlzIGltYWdlCisJCQlyZXF1aXJlcyBhIHZlcnNpb24gb2YgVS1Cb290IHRoYXQgaXMgYWJsZSB0byBwYXNzCisJCQlhIGRldmljZSB0cmVlIHRvIHRoZSBrZXJuZWwgYXQgYm9vdC4gIElmIHVzaW5nIGFuIG9sZGVyCisJCQl2ZXJzaW9uIG9mIFUtQm9vdCwgdGhlbiB5b3UgbmVlZCB0byB1c2UgYSBjdUltYWdlCisJCQlpbnN0ZWFkLgorICAgekltYWdlLiU6CQlJbWFnZSBmb3JtYXQgd2hpY2ggZG9lcyBub3QgZW1iZWQgYSBkZXZpY2UgdHJlZS4KKwkJCVVzZWQgYnkgT3BlbkZpcm13YXJlIGFuZCBvdGhlciBmaXJtd2FyZSBpbnRlcmZhY2VzCisJCQl3aGljaCBhcmUgYWJsZSB0byBzdXBwbHkgYSBkZXZpY2UgdHJlZS4gIFRoaXMgaW1hZ2UKKwkJCWV4cGVjdHMgZmlybXdhcmUgdG8gcHJvdmlkZSB0aGUgZGV2aWNlIHRyZWUgYXQgYm9vdC4KKwkJCVR5cGljYWxseSwgaWYgeW91IGhhdmUgZ2VuZXJhbCBwdXJwb3NlIFBvd2VyUEMKKwkJCWhhcmR3YXJlIHRoZW4geW91IHdhbnQgdGhpcyBpbWFnZSBmb3JtYXQuCisKK0ltYWdlIHR5cGVzIHdoaWNoIGVtYmVkIGEgZGV2aWNlIHRyZWUgYmxvYiAoc2ltcGxlSW1hZ2UsIGR0YkltYWdlLCB0cmVlSW1hZ2UsCithbmQgY3VJbWFnZSkgYWxsIGdlbmVyYXRlIHRoZSBkZXZpY2UgdHJlZSBibG9iIGZyb20gYSBmaWxlIGluIHRoZQorYXJjaC9wb3dlcnBjL2Jvb3QvZHRzLyBkaXJlY3RvcnkuICBUaGUgTWFrZWZpbGUgc2VsZWN0cyB0aGUgY29ycmVjdCBkZXZpY2UKK3RyZWUgc291cmNlIGJhc2VkIG9uIHRoZSBuYW1lIG9mIHRoZSB0YXJnZXQuICBUaGVyZWZvcmUsIGlmIHRoZSBrZXJuZWwgaXMKK2J1aWx0IHdpdGggJ21ha2UgdHJlZUltYWdlLndhbG51dCBzaW1wbGVJbWFnZS52aXJ0ZXg0MDUtbWw0MDMnLCB0aGVuIHRoZQorYnVpbGQgc3lzdGVtIHdpbGwgdXNlIGFyY2gvcG93ZXJwYy9ib290L2R0cy93YWxudXQuZHRzIHRvIGJ1aWxkCit0cmVlSW1hZ2Uud2FsbnV0IGFuZCBhcmNoL3Bvd2VycGMvYm9vdC9kdHMvdmlydGV4NDA1LW1sNDAzLmR0cyB0byBidWlsZAordGhlIHNpbXBsZUltYWdlLnZpcnRleDQwNS1tbDQwMy4KKworVHdvIHNwZWNpYWwgdGFyZ2V0cyBjYWxsZWQgJ3pJbWFnZScgYW5kICd6SW1hZ2UuaW5pdHJkJyBhbHNvIGV4aXN0LiAgVGhlc2UKK3RhcmdldHMgYnVpbGQgYWxsIHRoZSBkZWZhdWx0IGltYWdlcyBhcyBzZWxlY3RlZCBieSB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uCitEZWZhdWx0IGltYWdlcyBhcmUgc2VsZWN0ZWQgYnkgdGhlIGJvb3Qgd3JhcHBlciBNYWtlZmlsZQorKGFyY2gvcG93ZXJwYy9ib290L01ha2VmaWxlKSBieSBhZGRpbmcgdGFyZ2V0cyB0byB0aGUgJGltYWdlLXkgdmFyaWFibGUuICBMb29rCithdCB0aGUgTWFrZWZpbGUgdG8gc2VlIHdoaWNoIGRlZmF1bHQgaW1hZ2UgdGFyZ2V0cyBhcmUgYXZhaWxhYmxlLgorCitIb3cgaXQgaXMgYnVpbHQKKy0tLS0tLS0tLS0tLS0tLQorYXJjaC9wb3dlcnBjIGlzIGRlc2lnbmVkIHRvIHN1cHBvcnQgbXVsdGlwbGF0Zm9ybSBrZXJuZWxzLCB3aGljaCBtZWFucwordGhhdCBhIHNpbmdsZSB2bWxpbnV4IGltYWdlIGNhbiBiZSBib290ZWQgb24gbWFueSBkaWZmZXJlbnQgdGFyZ2V0IGJvYXJkcy4KK0l0IGFsc28gbWVhbnMgdGhhdCB0aGUgYm9vdCB3cmFwcGVyIG11c3QgYmUgYWJsZSB0byB3cmFwIGZvciBtYW55IGtpbmRzIG9mCitpbWFnZXMgb24gYSBzaW5nbGUgYnVpbGQuICBUaGUgZGVzaWduIGRlY2lzaW9uIHdhcyBtYWRlIHRvIG5vdCB1c2UgYW55Citjb25kaXRpb25hbCBjb21waWxhdGlvbiBjb2RlICgjaWZkZWYsIGV0YykgaW4gdGhlIGJvb3Qgd3JhcHBlciBzb3VyY2UgY29kZS4KK0FsbCBvZiB0aGUgYm9vdCB3cmFwcGVyIHBpZWNlcyBhcmUgYnVpbGRhYmxlIGF0IGFueSB0aW1lIHJlZ2FyZGxlc3Mgb2YgdGhlCitrZXJuZWwgY29uZmlndXJhdGlvbi4gIEJ1aWxkaW5nIGFsbCB0aGUgd3JhcHBlciBiaXRzIG9uIGV2ZXJ5IGtlcm5lbCBidWlsZAorYWxzbyBlbnN1cmVzIHRoYXQgb2JzY3VyZSBwYXJ0cyBvZiB0aGUgd3JhcHBlciBhcmUgYXQgdGhlIHZlcnkgbGVhc3QgY29tcGlsZQordGVzdGVkIGluIGEgbGFyZ2UgdmFyaWV0eSBvZiBlbnZpcm9ubWVudHMuCisKK1RoZSB3cmFwcGVyIGlzIGFkYXB0ZWQgZm9yIGRpZmZlcmVudCBpbWFnZSB0eXBlcyBhdCBsaW5rIHRpbWUgYnkgbGlua2luZyBpbgoranVzdCB0aGUgd3JhcHBlciBiaXRzIHRoYXQgYXJlIGFwcHJvcHJpYXRlIGZvciB0aGUgaW1hZ2UgdHlwZS4gIFRoZSAnd3JhcHBlcgorc2NyaXB0JyAoZm91bmQgaW4gYXJjaC9wb3dlcnBjL2Jvb3Qvd3JhcHBlcikgaXMgY2FsbGVkIGJ5IHRoZSBNYWtlZmlsZSBhbmQKK2lzIHJlc3BvbnNpYmxlIGZvciBzZWxlY3RpbmcgdGhlIGNvcnJlY3Qgd3JhcHBlciBiaXRzIGZvciB0aGUgaW1hZ2UgdHlwZS4KK1RoZSBhcmd1bWVudHMgYXJlIHdlbGwgZG9jdW1lbnRlZCBpbiB0aGUgc2NyaXB0J3MgY29tbWVudCBibG9jaywgc28gdGhleQorYXJlIG5vdCByZXBlYXRlZCBoZXJlLiAgSG93ZXZlciwgaXQgaXMgd29ydGggbWVudGlvbmluZyB0aGF0IHRoZSBzY3JpcHQKK3VzZXMgdGhlIC1wIChwbGF0Zm9ybSkgYXJndW1lbnQgYXMgdGhlIG1haW4gbWV0aG9kIG9mIGRlY2lkaW5nIHdoaWNoIHdyYXBwZXIKK2JpdHMgdG8gY29tcGlsZSBpbi4gIExvb2sgZm9yIHRoZSBsYXJnZSAnY2FzZSAiJHBsYXRmb3JtIiBpbicgYmxvY2sgaW4gdGhlCittaWRkbGUgb2YgdGhlIHNjcmlwdC4gIFRoaXMgaXMgYWxzbyB0aGUgcGxhY2Ugd2hlcmUgcGxhdGZvcm0gc3BlY2lmaWMgZml4dXBzCitjYW4gYmUgc2VsZWN0ZWQgYnkgY2hhbmdpbmcgdGhlIGxpbmsgb3JkZXIuCisKK0luIHBhcnRpY3VsYXIsIGNhcmUgc2hvdWxkIGJlIHRha2VuIHdoZW4gd29ya2luZyB3aXRoIGN1SW1hZ2VzLiAgY3VJbWFnZQord3JhcHBlciBiaXRzIGFyZSB2ZXJ5IGJvYXJkIHNwZWNpZmljIGFuZCBjYXJlIHNob3VsZCBiZSB0YWtlbiB0byBtYWtlIHN1cmUKK3RoZSB0YXJnZXQgeW91IGFyZSB0cnlpbmcgdG8gYnVpbGQgaXMgc3VwcG9ydGVkIGJ5IHRoZSB3cmFwcGVyIGJpdHMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VycGMvY3B1X2ZhbWlsaWVzLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXJwYy9jcHVfZmFtaWxpZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMDhlMjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VycGMvY3B1X2ZhbWlsaWVzLnR4dApAQCAtMCwwICsxLDIyMSBAQAorQ1BVIEZhbWlsaWVzCis9PT09PT09PT09PT0KKworVGhpcyBkb2N1bWVudCB0cmllcyB0byBzdW1tYXJpc2Ugc29tZSBvZiB0aGUgZGlmZmVyZW50IGNwdSBmYW1pbGllcyB0aGF0IGV4aXN0CithbmQgYXJlIHN1cHBvcnRlZCBieSBhcmNoL3Bvd2VycGMuCisKKworQm9vazNTIChha2Egc1BBUFIpCistLS0tLS0tLS0tLS0tLS0tLS0KKworIC0gSGFzaCBNTVUKKyAtIE1peCBvZiAzMiAmIDY0IGJpdAorCisgICArLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgIE9sZCBQT1dFUiAgIHwgLS0tLS0tLS0tLS0tLS0+IHwgUlM2NCAodGhyZWFkcykgfAorICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgfAorICAgICAgICAgIHwKKyAgICAgICAgICB2CisgICArLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLSsgICAgICArLS0tLS0tKworICAgfCAgICAgNjAxICAgICAgfCAtLS0tLS0tLS0tLS0tLT4gfCAgICAgIDYwMyAgICAgICB8IC0tLT4gfCBlMzAwIHwKKyAgICstLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tKyAgICAgICstLS0tLS0rCisgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgIHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CisgICArLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLSsgICAgICArLS0tLS0tLSsKKyAgIHwgICAgIDYwNCAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgNzUwIChHMykgICAgfCAtLS0+IHwgNzUwQ1ggfAorICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0rICAgICAgKy0tLS0tLS0rCisgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICB2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgICAgICAgICB2CisgICArLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLSsgICAgICArLS0tLS0tLSsKKyAgIHwgNjIwICg2NCBiaXQpIHwgICAgICAgICAgICAgICAgIHwgICAgICA3NDAwICAgICAgfCAgICAgIHwgNzUwQ0wgfAorICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0rICAgICAgKy0tLS0tLS0rCisgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICB2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgICAgICAgICB2CisgICArLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLSsgICAgICArLS0tLS0tLSsKKyAgIHwgIFBPV0VSMy82MzAgIHwgICAgICAgICAgICAgICAgIHwgICAgICA3NDEwICAgICAgfCAgICAgIHwgNzUwRlggfAorICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0rICAgICAgKy0tLS0tLS0rCisgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgIHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CisgICArLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgICBQT1dFUjMrICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICA3NDUwICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgIHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CisgICArLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgICAgUE9XRVI0ICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICA3NDU1ICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgIHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CisgICArLS0tLS0tLS0tLS0tLS0rICAgICArLS0tLS0tLSsgICArLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgICBQT1dFUjQrICAgIHwgLS0+IHwgIDk3MCAgfCAgIHwgICAgICA3NDQ3ICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgKy0tLS0tLS0rICAgKy0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwKKyAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfAorICAgICAgICAgIHYgICAgICAgICAgICAgICAgIHYgICAgICAgICAgICAgICB2CisgICArLS0tLS0tLS0tLS0tLS0rICAgICArLS0tLS0tLSsgICArLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgICAgUE9XRVI1ICAgIHwgICAgIHwgOTcwRlggfCAgIHwgICAgICA3NDQ4ICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgKy0tLS0tLS0rICAgKy0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwKKyAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfAorICAgICAgICAgIHYgICAgICAgICAgICAgICAgIHYgICAgICAgICAgICAgICB2CisgICArLS0tLS0tLS0tLS0tLS0rICAgICArLS0tLS0tLSsgICArLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgICBQT1dFUjUrICAgIHwgICAgIHwgOTcwTVAgfCAgIHwgICAgICBlNjAwICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgKy0tLS0tLS0rICAgKy0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgfAorICAgICAgICAgIHwKKyAgICAgICAgICB2CisgICArLS0tLS0tLS0tLS0tLS0rCisgICB8ICAgUE9XRVI1KysgICB8CisgICArLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgfAorICAgICAgICAgIHwKKyAgICAgICAgICB2CisgICArLS0tLS0tLS0tLS0tLS0rICAgICAgICstLS0tLS0tKworICAgfCAgICBQT1dFUjYgICAgfCA8LT8tPiB8IENlbGwgIHwKKyAgICstLS0tLS0tLS0tLS0tLSsgICAgICAgKy0tLS0tLS0rCisgICAgICAgICAgfAorICAgICAgICAgIHwKKyAgICAgICAgICB2CisgICArLS0tLS0tLS0tLS0tLS0rCisgICB8ICAgIFBPV0VSNyAgICB8CisgICArLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgfAorICAgICAgICAgIHwKKyAgICAgICAgICB2CisgICArLS0tLS0tLS0tLS0tLS0rCisgICB8ICAgUE9XRVI3KyAgICB8CisgICArLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgfAorICAgICAgICAgIHwKKyAgICAgICAgICB2CisgICArLS0tLS0tLS0tLS0tLS0rCisgICB8ICAgIFBPV0VSOCAgICB8CisgICArLS0tLS0tLS0tLS0tLS0rCisKKworICAgKy0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgUEE2VCAoNjQgYml0KSB8CisgICArLS0tLS0tLS0tLS0tLS0tKworCisKK0lCTSBCb29rRQorLS0tLS0tLS0tCisKKyAtIFNvZnR3YXJlIGxvYWRlZCBUTEIuCisgLSBBbGwgMzIgYml0CisKKyAgICstLS0tLS0tLS0tLS0tLSsKKyAgIHwgICAgIDQwMSAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICB8CisgICAgICAgICAgfAorICAgICAgICAgIHYKKyAgICstLS0tLS0tLS0tLS0tLSsKKyAgIHwgICAgIDQwMyAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICB8CisgICAgICAgICAgfAorICAgICAgICAgIHYKKyAgICstLS0tLS0tLS0tLS0tLSsKKyAgIHwgICAgIDQwNSAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICB8CisgICAgICAgICAgfAorICAgICAgICAgIHYKKyAgICstLS0tLS0tLS0tLS0tLSsKKyAgIHwgICAgIDQ0MCAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICB8CisgICAgICAgICAgfAorICAgICAgICAgIHYKKyAgICstLS0tLS0tLS0tLS0tLSsgICAgICstLS0tLS0tLS0tLS0tLS0tKworICAgfCAgICAgNDUwICAgICAgfCAtLT4gfCAgICAgIEJHL1AgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0rICAgICArLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICB8CisgICAgICAgICAgfAorICAgICAgICAgIHYKKyAgICstLS0tLS0tLS0tLS0tLSsKKyAgIHwgICAgIDQ2MCAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICB8CisgICAgICAgICAgfAorICAgICAgICAgIHYKKyAgICstLS0tLS0tLS0tLS0tLSsKKyAgIHwgICAgIDQ3NiAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLSsKKworCitNb3Rvcm9sYS9GcmVlc2NhbGUgOHh4CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAtIFNvZnR3YXJlIGxvYWRlZCB3aXRoIGhhcmR3YXJlIGFzc2lzdC4KKyAtIEFsbCAzMiBiaXQKKworICAgKy0tLS0tLS0tLS0tLS0rCisgICB8IE1QQzh4eCBDb3JlIHwKKyAgICstLS0tLS0tLS0tLS0tKworCisKK0ZyZWVzY2FsZSBCb29rRQorLS0tLS0tLS0tLS0tLS0tCisKKyAtIFNvZnR3YXJlIGxvYWRlZCBUTEIuCisgLSBlNjUwMCBhZGRzIEhXIGxvYWRlZCBpbmRpcmVjdCBUTEIgZW50cmllcy4KKyAtIE1peCBvZiAzMiAmIDY0IGJpdAorCisgICArLS0tLS0tLS0tLS0tLS0rCisgICB8ICAgICBlMjAwICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0rCisKKworICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCAgICAgICAgICAgICAgZTUwMCAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgdgorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCAgICAgICAgICAgICBlNTAwdjIgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgdgorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCAgICAgICAgZTUwMG1jIChCb29rM2UpICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgdgorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCAgICAgICAgICBlNTUwMCAoNjQgYml0KSAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgdgorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBlNjUwMCAoSFcgVExCKSAoTXVsdGl0aHJlYWRlZCkgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisKK0lCTSBBMiBjb3JlCistLS0tLS0tLS0tLQorCisgLSBCb29rM0UsIHNvZnR3YXJlIGxvYWRlZCBUTEIgKyBIVyBsb2FkZWQgaW5kaXJlY3QgVExCIGVudHJpZXMuCisgLSA2NCBiaXQKKworICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgKy0tLS0tLS0tLS0tLS0tLS0rCisgICB8ICAgQTIgY29yZSAgICB8IC0tPiB8ICAgICAgV1NQICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLSsgICAgICstLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICB8CisgICAgICAgICAgIHwKKyAgICAgICAgICAgdgorICAgKy0tLS0tLS0tLS0tLS0tKworICAgfCAgICAgQkcvUSAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlcnBjL2NwdV9mZWF0dXJlcy50eHQgYi9Eb2N1bWVudGF0aW9uL3Bvd2VycGMvY3B1X2ZlYXR1cmVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTA5ZGY4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlcnBjL2NwdV9mZWF0dXJlcy50eHQKQEAgLTAsMCArMSw1NiBAQAorSG9sbGlzIEJsYW5jaGFyZCA8aG9sbGlzQGF1c3Rpbi5pYm0uY29tPgorNSBKdW4gMjAwMgorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgc3lzdGVtIChpbmNsdWRpbmcgc2VsZi1tb2RpZnlpbmcgY29kZSkgdXNlZCBpbiB0aGUKK1BQQyBMaW51eCBrZXJuZWwgdG8gc3VwcG9ydCBhIHZhcmlldHkgb2YgUG93ZXJQQyBDUFVzIHdpdGhvdXQgcmVxdWlyaW5nCitjb21waWxlLXRpbWUgc2VsZWN0aW9uLgorCitFYXJseSBpbiB0aGUgYm9vdCBwcm9jZXNzIHRoZSBwcGMzMiBrZXJuZWwgZGV0ZWN0cyB0aGUgY3VycmVudCBDUFUgdHlwZSBhbmQKK2Nob29zZXMgYSBzZXQgb2YgZmVhdHVyZXMgYWNjb3JkaW5nbHkuIFNvbWUgZXhhbXBsZXMgaW5jbHVkZSBBbHRpdmVjIHN1cHBvcnQsCitzcGxpdCBpbnN0cnVjdGlvbiBhbmQgZGF0YSBjYWNoZXMsIGFuZCBpZiB0aGUgQ1BVIHN1cHBvcnRzIHRoZSBET1pFIGFuZCBOQVAKK3NsZWVwIG1vZGVzLgorCitEZXRlY3Rpb24gb2YgdGhlIGZlYXR1cmUgc2V0IGlzIHNpbXBsZS4gQSBsaXN0IG9mIHByb2Nlc3NvcnMgY2FuIGJlIGZvdW5kIGluCithcmNoL3Bvd2VycGMva2VybmVsL2NwdXRhYmxlLmMuIFRoZSBQVlIgcmVnaXN0ZXIgaXMgbWFza2VkIGFuZCBjb21wYXJlZCB3aXRoCitlYWNoIHZhbHVlIGluIHRoZSBsaXN0LiBJZiBhIG1hdGNoIGlzIGZvdW5kLCB0aGUgY3B1X2ZlYXR1cmVzIG9mIGN1cl9jcHVfc3BlYworaXMgYXNzaWduZWQgdG8gdGhlIGZlYXR1cmUgYml0bWFzayBmb3IgdGhpcyBwcm9jZXNzb3IgYW5kIGEgX19zZXR1cF9jcHUKK2Z1bmN0aW9uIGlzIGNhbGxlZC4KKworQyBjb2RlIG1heSB0ZXN0ICdjdXJfY3B1X3NwZWNbc21wX3Byb2Nlc3Nvcl9pZCgpXS0+Y3B1X2ZlYXR1cmVzJyBmb3IgYQorcGFydGljdWxhciBmZWF0dXJlIGJpdC4gVGhpcyBpcyBkb25lIGluIHF1aXRlIGEgZmV3IHBsYWNlcywgZm9yIGV4YW1wbGUKK2luIHBwY19zZXR1cF9sMmNyKCkuCisKK0ltcGxlbWVudGluZyBjcHVmZWF0dXJlcyBpbiBhc3NlbWJseSBpcyBhIGxpdHRsZSBtb3JlIGludm9sdmVkLiBUaGVyZSBhcmUKK3NldmVyYWwgcGF0aHMgdGhhdCBhcmUgcGVyZm9ybWFuY2UtY3JpdGljYWwgYW5kIHdvdWxkIHN1ZmZlciBpZiBhbiBhcnJheQoraW5kZXgsIHN0cnVjdHVyZSBkZXJlZmVyZW5jZSwgYW5kIGNvbmRpdGlvbmFsIGJyYW5jaCB3ZXJlIGFkZGVkLiBUbyBhdm9pZCB0aGUKK3BlcmZvcm1hbmNlIHBlbmFsdHkgYnV0IHN0aWxsIGFsbG93IGZvciBydW50aW1lIChyYXRoZXIgdGhhbiBjb21waWxlLXRpbWUpIENQVQorc2VsZWN0aW9uLCB1bnVzZWQgY29kZSBpcyByZXBsYWNlZCBieSAnbm9wJyBpbnN0cnVjdGlvbnMuIFRoaXMgbm9wJ2luZyBpcworYmFzZWQgb24gQ1BVIDAncyBjYXBhYmlsaXRpZXMsIHNvIGEgbXVsdGktcHJvY2Vzc29yIHN5c3RlbSB3aXRoIG5vbi1pZGVudGljYWwKK3Byb2Nlc3NvcnMgd2lsbCBub3Qgd29yayAoYnV0IHN1Y2ggYSBzeXN0ZW0gd291bGQgbGlrZWx5IGhhdmUgb3RoZXIgcHJvYmxlbXMKK2FueXdheXMpLgorCitBZnRlciBkZXRlY3RpbmcgdGhlIHByb2Nlc3NvciB0eXBlLCB0aGUga2VybmVsIHBhdGNoZXMgb3V0IHNlY3Rpb25zIG9mIGNvZGUKK3RoYXQgc2hvdWxkbid0IGJlIHVzZWQgYnkgd3JpdGluZyBub3AncyBvdmVyIGl0LiBVc2luZyBjcHVmZWF0dXJlcyByZXF1aXJlcworanVzdCAyIG1hY3JvcyAoZm91bmQgaW4gYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2NwdXRhYmxlLmgpLCBhcyBzZWVuIGluIGhlYWQuUwordHJhbnNmZXJfdG9faGFuZGxlcjoKKworCSNpZmRlZiBDT05GSUdfQUxUSVZFQworCUJFR0lOX0ZUUl9TRUNUSU9OCisJCW1mc3ByCXIyMixTUFJOX1ZSU0FWRQkJLyogaWYgRzQsIHNhdmUgdnJzYXZlIHJlZ2lzdGVyIHZhbHVlICovCisJCXN0dwlyMjIsVEhSRUFEX1ZSU0FWRShyMjMpCisJRU5EX0ZUUl9TRUNUSU9OX0lGU0VUKENQVV9GVFJfQUxUSVZFQykKKwkjZW5kaWYgLyogQ09ORklHX0FMVElWRUMgKi8KKworSWYgQ1BVIDAgc3VwcG9ydHMgQWx0aXZlYywgdGhlIGNvZGUgaXMgbGVmdCB1bnRvdWNoZWQuIElmIGl0IGRvZXNuJ3QsIGJvdGgKK2luc3RydWN0aW9ucyBhcmUgcmVwbGFjZWQgd2l0aCBub3Ancy4KKworVGhlIEVORF9GVFJfU0VDVElPTiBtYWNybyBoYXMgdHdvIHNpbXBsZXIgdmFyaWF0aW9uczogRU5EX0ZUUl9TRUNUSU9OX0lGU0VUCithbmQgRU5EX0ZUUl9TRUNUSU9OX0lGQ0xSLiBUaGVzZSBzaW1wbHkgdGVzdCBpZiBhIGZsYWcgaXMgc2V0IChpbgorY3VyX2NwdV9zcGVjWzBdLT5jcHVfZmVhdHVyZXMpIG9yIGlzIGNsZWFyZWQsIHJlc3BlY3RpdmVseS4gVGhlc2UgdHdvIG1hY3Jvcworc2hvdWxkIGJlIHVzZWQgaW4gdGhlIG1ham9yaXR5IG9mIGNhc2VzLgorCitUaGUgRU5EX0ZUUl9TRUNUSU9OIG1hY3JvcyBhcmUgaW1wbGVtZW50ZWQgYnkgc3RvcmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGlzCitjb2RlIGluIHRoZSAnX19mdHJfZml4dXAnIEVMRiBzZWN0aW9uLiBXaGVuIGRvX2NwdV9mdHJfZml4dXBzCisoYXJjaC9wb3dlcnBjL2tlcm5lbC9taXNjLlMpIGlzIGludm9rZWQsIGl0IHdpbGwgaXRlcmF0ZSBvdmVyIHRoZSByZWNvcmRzIGluCitfX2Z0cl9maXh1cCwgYW5kIGlmIHRoZSByZXF1aXJlZCBmZWF0dXJlIGlzIG5vdCBwcmVzZW50IGl0IHdpbGwgbG9vcCB3cml0aW5nCitub3AncyBmcm9tIGVhY2ggQkVHSU5fRlRSX1NFQ1RJT04gdG8gRU5EX0ZUUl9TRUNUSU9OLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlcnBjL2N4bC50eHQgYi9Eb2N1bWVudGF0aW9uL3Bvd2VycGMvY3hsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDVjMWI4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlcnBjL2N4bC50eHQKQEAgLTAsMCArMSwzODMgQEAKK0NvaGVyZW50IEFjY2VsZXJhdG9yIEludGVyZmFjZSAoQ1hMKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ludHJvZHVjdGlvbgorPT09PT09PT09PT09CisKKyAgICBUaGUgY29oZXJlbnQgYWNjZWxlcmF0b3IgaW50ZXJmYWNlIGlzIGRlc2lnbmVkIHRvIGFsbG93IHRoZQorICAgIGNvaGVyZW50IGNvbm5lY3Rpb24gb2YgYWNjZWxlcmF0b3JzIChGUEdBcyBhbmQgb3RoZXIgZGV2aWNlcykgdG8gYQorICAgIFBPV0VSIHN5c3RlbS4gVGhlc2UgZGV2aWNlcyBuZWVkIHRvIGFkaGVyZSB0byB0aGUgQ29oZXJlbnQKKyAgICBBY2NlbGVyYXRvciBJbnRlcmZhY2UgQXJjaGl0ZWN0dXJlIChDQUlBKS4KKworICAgIElCTSByZWZlcnMgdG8gdGhpcyBhcyB0aGUgQ29oZXJlbnQgQWNjZWxlcmF0b3IgUHJvY2Vzc29yIEludGVyZmFjZQorICAgIG9yIENBUEkuIEluIHRoZSBrZXJuZWwgaXQncyByZWZlcnJlZCB0byBieSB0aGUgbmFtZSBDWEwgdG8gYXZvaWQKKyAgICBjb25mdXNpb24gd2l0aCB0aGUgSVNETiBDQVBJIHN1YnN5c3RlbS4KKworICAgIENvaGVyZW50IGluIHRoaXMgY29udGV4dCBtZWFucyB0aGF0IHRoZSBhY2NlbGVyYXRvciBhbmQgQ1BVcyBjYW4KKyAgICBib3RoIGFjY2VzcyBzeXN0ZW0gbWVtb3J5IGRpcmVjdGx5IGFuZCB3aXRoIHRoZSBzYW1lIGVmZmVjdGl2ZQorICAgIGFkZHJlc3Nlcy4KKworCitIYXJkd2FyZSBvdmVydmlldworPT09PT09PT09PT09PT09PT0KKworICAgICAgICAgIFBPV0VSOCAgICAgICAgICAgICAgIEZQR0EKKyAgICAgICArLS0tLS0tLS0tLSsgICAgICAgICstLS0tLS0tLS0rCisgICAgICAgfCAgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfAorICAgICAgIHwgICBDUFUgICAgfCAgICAgICAgfCAgIEFGVSAgIHwKKyAgICAgICB8ICAgICAgICAgIHwgICAgICAgIHwgICAgICAgICB8CisgICAgICAgfCAgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgfAorICAgICAgIHwgICAgICAgICAgfCAgICAgICAgfCAgICAgICAgIHwKKyAgICAgICArLS0tLS0tLS0tLSsgICAgICAgICstLS0tLS0tLS0rCisgICAgICAgfCAgIFBIQiAgICB8ICAgICAgICB8ICAgICAgICAgfAorICAgICAgIHwgICArLS0tLS0tKyAgICAgICAgfCAgIFBTTCAgIHwKKyAgICAgICB8ICAgfCBDQVBQIHw8LS0tLS0tPnwgICAgICAgICB8CisgICAgICAgKy0tLSstLS0tLS0rICBQQ0lFICArLS0tLS0tLS0tKworCisgICAgVGhlIFBPV0VSOCBjaGlwIGhhcyBhIENvaGVyZW50bHkgQXR0YWNoZWQgUHJvY2Vzc29yIFByb3h5IChDQVBQKQorICAgIHVuaXQgd2hpY2ggaXMgcGFydCBvZiB0aGUgUENJZSBIb3N0IEJyaWRnZSAoUEhCKS4gVGhpcyBpcyBtYW5hZ2VkCisgICAgYnkgTGludXggYnkgY2FsbHMgaW50byBPUEFMLiBMaW51eCBkb2Vzbid0IGRpcmVjdGx5IHByb2dyYW0gdGhlCisgICAgQ0FQUC4KKworICAgIFRoZSBGUEdBIChvciBjb2hlcmVudGx5IGF0dGFjaGVkIGRldmljZSkgY29uc2lzdHMgb2YgdHdvIHBhcnRzLgorICAgIFRoZSBQT1dFUiBTZXJ2aWNlIExheWVyIChQU0wpIGFuZCB0aGUgQWNjZWxlcmF0b3IgRnVuY3Rpb24gVW5pdAorICAgIChBRlUpLiBUaGUgQUZVIGlzIHVzZWQgdG8gaW1wbGVtZW50IHNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgYmVoaW5kCisgICAgdGhlIFBTTC4gVGhlIFBTTCwgYW1vbmcgb3RoZXIgdGhpbmdzLCBwcm92aWRlcyBtZW1vcnkgYWRkcmVzcworICAgIHRyYW5zbGF0aW9uIHNlcnZpY2VzIHRvIGFsbG93IGVhY2ggQUZVIGRpcmVjdCBhY2Nlc3MgdG8gdXNlcnNwYWNlCisgICAgbWVtb3J5LgorCisgICAgVGhlIEFGVSBpcyB0aGUgY29yZSBwYXJ0IG9mIHRoZSBhY2NlbGVyYXRvciAoZWcuIHRoZSBjb21wcmVzc2lvbiwKKyAgICBjcnlwdG8gZXRjIGZ1bmN0aW9uKS4gVGhlIGtlcm5lbCBoYXMgbm8ga25vd2xlZGdlIG9mIHRoZSBmdW5jdGlvbgorICAgIG9mIHRoZSBBRlUuIE9ubHkgdXNlcnNwYWNlIGludGVyYWN0cyBkaXJlY3RseSB3aXRoIHRoZSBBRlUuCisKKyAgICBUaGUgUFNMIHByb3ZpZGVzIHRoZSB0cmFuc2xhdGlvbiBhbmQgaW50ZXJydXB0IHNlcnZpY2VzIHRoYXQgdGhlCisgICAgQUZVIG5lZWRzLiBUaGlzIGlzIHdoYXQgdGhlIGtlcm5lbCBpbnRlcmFjdHMgd2l0aC4gRm9yIGV4YW1wbGUsIGlmCisgICAgdGhlIEFGVSBuZWVkcyB0byByZWFkIGEgcGFydGljdWxhciBlZmZlY3RpdmUgYWRkcmVzcywgaXQgc2VuZHMKKyAgICB0aGF0IGFkZHJlc3MgdG8gdGhlIFBTTCwgdGhlIFBTTCB0aGVuIHRyYW5zbGF0ZXMgaXQsIGZldGNoZXMgdGhlCisgICAgZGF0YSBmcm9tIG1lbW9yeSBhbmQgcmV0dXJucyBpdCB0byB0aGUgQUZVLiBJZiB0aGUgUFNMIGhhcyBhCisgICAgdHJhbnNsYXRpb24gbWlzcywgaXQgaW50ZXJydXB0cyB0aGUga2VybmVsIGFuZCB0aGUga2VybmVsIHNlcnZpY2VzCisgICAgdGhlIGZhdWx0LiBUaGUgY29udGV4dCB0byB3aGljaCB0aGlzIGZhdWx0IGlzIHNlcnZpY2VkIGlzIGJhc2VkIG9uCisgICAgd2hvIG93bnMgdGhhdCBhY2NlbGVyYXRpb24gZnVuY3Rpb24uCisKKworQUZVIE1vZGVzCis9PT09PT09PT0KKworICAgIFRoZXJlIGFyZSB0d28gcHJvZ3JhbW1pbmcgbW9kZXMgc3VwcG9ydGVkIGJ5IHRoZSBBRlUuIERlZGljYXRlZAorICAgIGFuZCBBRlUgZGlyZWN0ZWQuIEFGVSBtYXkgc3VwcG9ydCBvbmUgb3IgYm90aCBtb2Rlcy4KKworICAgIFdoZW4gdXNpbmcgZGVkaWNhdGVkIG1vZGUgb25seSBvbmUgTU1VIGNvbnRleHQgaXMgc3VwcG9ydGVkLiBJbgorICAgIHRoaXMgbW9kZSwgb25seSBvbmUgdXNlcnNwYWNlIHByb2Nlc3MgY2FuIHVzZSB0aGUgYWNjZWxlcmF0b3IgYXQKKyAgICB0aW1lLgorCisgICAgV2hlbiB1c2luZyBBRlUgZGlyZWN0ZWQgbW9kZSwgdXAgdG8gMTZLIHNpbXVsdGFuZW91cyBjb250ZXh0cyBjYW4KKyAgICBiZSBzdXBwb3J0ZWQuIFRoaXMgbWVhbnMgdXAgdG8gMTZLIHNpbXVsdGFuZW91cyB1c2Vyc3BhY2UKKyAgICBhcHBsaWNhdGlvbnMgbWF5IHVzZSB0aGUgYWNjZWxlcmF0b3IgKGFsdGhvdWdoIHNwZWNpZmljIEFGVXMgbWF5CisgICAgc3VwcG9ydCBmZXdlcikuIEluIHRoaXMgbW9kZSwgdGhlIEFGVSBzZW5kcyBhIDE2IGJpdCBjb250ZXh0IElECisgICAgd2l0aCBlYWNoIG9mIGl0cyByZXF1ZXN0cy4gVGhpcyB0ZWxscyB0aGUgUFNMIHdoaWNoIGNvbnRleHQgaXMKKyAgICBhc3NvY2lhdGVkIHdpdGggZWFjaCBvcGVyYXRpb24uIElmIHRoZSBQU0wgY2FuJ3QgdHJhbnNsYXRlIGFuCisgICAgb3BlcmF0aW9uLCB0aGUgSUQgY2FuIGFsc28gYmUgYWNjZXNzZWQgYnkgdGhlIGtlcm5lbCBzbyBpdCBjYW4KKyAgICBkZXRlcm1pbmUgdGhlIHVzZXJzcGFjZSBjb250ZXh0IGFzc29jaWF0ZWQgd2l0aCBhbiBvcGVyYXRpb24uCisKKworTU1JTyBzcGFjZQorPT09PT09PT09PQorCisgICAgQSBwb3J0aW9uIG9mIHRoZSBhY2NlbGVyYXRvciBNTUlPIHNwYWNlIGNhbiBiZSBkaXJlY3RseSBtYXBwZWQKKyAgICBmcm9tIHRoZSBBRlUgdG8gdXNlcnNwYWNlLiBFaXRoZXIgdGhlIHdob2xlIHNwYWNlIGNhbiBiZSBtYXBwZWQgb3IKKyAgICBqdXN0IGEgcGVyIGNvbnRleHQgcG9ydGlvbi4gVGhlIGhhcmR3YXJlIGlzIHNlbGYgZGVzY3JpYmluZywgaGVuY2UKKyAgICB0aGUga2VybmVsIGNhbiBkZXRlcm1pbmUgdGhlIG9mZnNldCBhbmQgc2l6ZSBvZiB0aGUgcGVyIGNvbnRleHQKKyAgICBwb3J0aW9uLgorCisKK0ludGVycnVwdHMKKz09PT09PT09PT0KKworICAgIEFGVXMgbWF5IGdlbmVyYXRlIGludGVycnVwdHMgdGhhdCBhcmUgZGVzdGluZWQgZm9yIHVzZXJzcGFjZS4gVGhlc2UKKyAgICBhcmUgcmVjZWl2ZWQgYnkgdGhlIGtlcm5lbCBhcyBoYXJkd2FyZSBpbnRlcnJ1cHRzIGFuZCBwYXNzZWQgb250bworICAgIHVzZXJzcGFjZSBieSBhIHJlYWQgc3lzY2FsbCBkb2N1bWVudGVkIGJlbG93LgorCisgICAgRGF0YSBzdG9yYWdlIGZhdWx0cyBhbmQgZXJyb3IgaW50ZXJydXB0cyBhcmUgaGFuZGxlZCBieSB0aGUga2VybmVsCisgICAgZHJpdmVyLgorCisKK1dvcmsgRWxlbWVudCBEZXNjcmlwdG9yIChXRUQpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgVGhlIFdFRCBpcyBhIDY0LWJpdCBwYXJhbWV0ZXIgcGFzc2VkIHRvIHRoZSBBRlUgd2hlbiBhIGNvbnRleHQgaXMKKyAgICBzdGFydGVkLiBJdHMgZm9ybWF0IGlzIHVwIHRvIHRoZSBBRlUgaGVuY2UgdGhlIGtlcm5lbCBoYXMgbm8KKyAgICBrbm93bGVkZ2Ugb2Ygd2hhdCBpdCByZXByZXNlbnRzLiBUeXBpY2FsbHkgaXQgd2lsbCBiZSB0aGUKKyAgICBlZmZlY3RpdmUgYWRkcmVzcyBvZiBhIHdvcmsgcXVldWUgb3Igc3RhdHVzIGJsb2NrIHdoZXJlIHRoZSBBRlUKKyAgICBhbmQgdXNlcnNwYWNlIGNhbiBzaGFyZSBjb250cm9sIGFuZCBzdGF0dXMgaW5mb3JtYXRpb24uCisKKworCisKK1VzZXIgQVBJCis9PT09PT09PQorCisgICAgRm9yIEFGVXMgb3BlcmF0aW5nIGluIEFGVSBkaXJlY3RlZCBtb2RlLCB0d28gY2hhcmFjdGVyIGRldmljZQorICAgIGZpbGVzIHdpbGwgYmUgY3JlYXRlZC4gL2Rldi9jeGwvYWZ1MC4wbSB3aWxsIGNvcnJlc3BvbmQgdG8gYQorICAgIG1hc3RlciBjb250ZXh0IGFuZCAvZGV2L2N4bC9hZnUwLjBzIHdpbGwgY29ycmVzcG9uZCB0byBhIHNsYXZlCisgICAgY29udGV4dC4gTWFzdGVyIGNvbnRleHRzIGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsIE1NSU8gc3BhY2UgYW4KKyAgICBBRlUgcHJvdmlkZXMuIFNsYXZlIGNvbnRleHRzIGhhdmUgYWNjZXNzIHRvIG9ubHkgdGhlIHBlciBwcm9jZXNzCisgICAgTU1JTyBzcGFjZSBhbiBBRlUgcHJvdmlkZXMuCisKKyAgICBGb3IgQUZVcyBvcGVyYXRpbmcgaW4gZGVkaWNhdGVkIHByb2Nlc3MgbW9kZSwgdGhlIGRyaXZlciB3aWxsCisgICAgb25seSBjcmVhdGUgYSBzaW5nbGUgY2hhcmFjdGVyIGRldmljZSBwZXIgQUZVIGNhbGxlZAorICAgIC9kZXYvY3hsL2FmdTAuMGQuIFRoaXMgd2lsbCBoYXZlIGFjY2VzcyB0byB0aGUgZW50aXJlIE1NSU8gc3BhY2UKKyAgICB0aGF0IHRoZSBBRlUgcHJvdmlkZXMgKGxpa2UgbWFzdGVyIGNvbnRleHRzIGluIEFGVSBkaXJlY3RlZCkuCisKKyAgICBUaGUgdHlwZXMgZGVzY3JpYmVkIGJlbG93IGFyZSBkZWZpbmVkIGluIGluY2x1ZGUvdWFwaS9taXNjL2N4bC5oCisKKyAgICBUaGUgZm9sbG93aW5nIGZpbGUgb3BlcmF0aW9ucyBhcmUgc3VwcG9ydGVkIG9uIGJvdGggc2xhdmUgYW5kCisgICAgbWFzdGVyIGRldmljZXMuCisKKyAgICBBIHVzZXJzcGFjZSBsaWJyYXJ5IGxpYmN4bCBpcyBhdmFpbGFibGUgaGVyZToKKwlodHRwczovL2dpdGh1Yi5jb20vaWJtLWNhcGkvbGliY3hsCisgICAgVGhpcyBwcm92aWRlcyBhIEMgaW50ZXJmYWNlIHRvIHRoaXMga2VybmVsIEFQSS4KKworb3BlbgorLS0tLQorCisgICAgT3BlbnMgdGhlIGRldmljZSBhbmQgYWxsb2NhdGVzIGEgZmlsZSBkZXNjcmlwdG9yIHRvIGJlIHVzZWQgd2l0aAorICAgIHRoZSByZXN0IG9mIHRoZSBBUEkuCisKKyAgICBBIGRlZGljYXRlZCBtb2RlIEFGVSBvbmx5IGhhcyBvbmUgY29udGV4dCBhbmQgb25seSBhbGxvd3MgdGhlCisgICAgZGV2aWNlIHRvIGJlIG9wZW5lZCBvbmNlLgorCisgICAgQW4gQUZVIGRpcmVjdGVkIG1vZGUgQUZVIGNhbiBoYXZlIG1hbnkgY29udGV4dHMsIHRoZSBkZXZpY2UgY2FuIGJlCisgICAgb3BlbmVkIG9uY2UgZm9yIGVhY2ggY29udGV4dCB0aGF0IGlzIGF2YWlsYWJsZS4KKworICAgIFdoZW4gYWxsIGF2YWlsYWJsZSBjb250ZXh0cyBhcmUgYWxsb2NhdGVkIHRoZSBvcGVuIGNhbGwgd2lsbCBmYWlsCisgICAgYW5kIHJldHVybiAtRU5PU1BDLgorCisgICAgTm90ZTogSVJRcyBuZWVkIHRvIGJlIGFsbG9jYXRlZCBmb3IgZWFjaCBjb250ZXh0LCB3aGljaCBtYXkgbGltaXQKKyAgICAgICAgICB0aGUgbnVtYmVyIG9mIGNvbnRleHRzIHRoYXQgY2FuIGJlIGNyZWF0ZWQsIGFuZCB0aGVyZWZvcmUKKyAgICAgICAgICBob3cgbWFueSB0aW1lcyB0aGUgZGV2aWNlIGNhbiBiZSBvcGVuZWQuIFRoZSBQT1dFUjggQ0FQUAorICAgICAgICAgIHN1cHBvcnRzIDIwNDAgSVJRcyBhbmQgMyBhcmUgdXNlZCBieSB0aGUga2VybmVsLCBzbyAyMDM3IGFyZQorICAgICAgICAgIGxlZnQuIElmIDEgSVJRIGlzIG5lZWRlZCBwZXIgY29udGV4dCwgdGhlbiBvbmx5IDIwMzcKKyAgICAgICAgICBjb250ZXh0cyBjYW4gYmUgYWxsb2NhdGVkLiBJZiA0IElSUXMgYXJlIG5lZWRlZCBwZXIgY29udGV4dCwKKyAgICAgICAgICB0aGVuIG9ubHkgMjAzNy80ID0gNTA5IGNvbnRleHRzIGNhbiBiZSBhbGxvY2F0ZWQuCisKKworaW9jdGwKKy0tLS0tCisKKyAgICBDWExfSU9DVExfU1RBUlRfV09SSzoKKyAgICAgICAgU3RhcnRzIHRoZSBBRlUgY29udGV4dCBhbmQgYXNzb2NpYXRlcyBpdCB3aXRoIHRoZSBjdXJyZW50CisgICAgICAgIHByb2Nlc3MuIE9uY2UgdGhpcyBpb2N0bCBpcyBzdWNjZXNzZnVsbHkgZXhlY3V0ZWQsIGFsbCBtZW1vcnkKKyAgICAgICAgbWFwcGVkIGludG8gdGhpcyBwcm9jZXNzIGlzIGFjY2Vzc2libGUgdG8gdGhpcyBBRlUgY29udGV4dAorICAgICAgICB1c2luZyB0aGUgc2FtZSBlZmZlY3RpdmUgYWRkcmVzc2VzLiBObyBhZGRpdGlvbmFsIGNhbGxzIGFyZQorICAgICAgICByZXF1aXJlZCB0byBtYXAvdW5tYXAgbWVtb3J5LiBUaGUgQUZVIG1lbW9yeSBjb250ZXh0IHdpbGwgYmUKKyAgICAgICAgdXBkYXRlZCBhcyB1c2Vyc3BhY2UgYWxsb2NhdGVzIGFuZCBmcmVlcyBtZW1vcnkuIFRoaXMgaW9jdGwKKyAgICAgICAgcmV0dXJucyBvbmNlIHRoZSBBRlUgY29udGV4dCBpcyBzdGFydGVkLgorCisgICAgICAgIFRha2VzIGEgcG9pbnRlciB0byBhIHN0cnVjdCBjeGxfaW9jdGxfc3RhcnRfd29yazoKKworICAgICAgICAgICAgICAgIHN0cnVjdCBjeGxfaW9jdGxfc3RhcnRfd29yayB7CisgICAgICAgICAgICAgICAgICAgICAgICBfX3U2NCBmbGFnczsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fdTY0IHdvcmtfZWxlbWVudF9kZXNjcmlwdG9yOworICAgICAgICAgICAgICAgICAgICAgICAgX191NjQgYW1yOworICAgICAgICAgICAgICAgICAgICAgICAgX19zMTYgbnVtX2ludGVycnVwdHM7CisgICAgICAgICAgICAgICAgICAgICAgICBfX3MxNiByZXNlcnZlZDE7CisgICAgICAgICAgICAgICAgICAgICAgICBfX3MzMiByZXNlcnZlZDI7CisgICAgICAgICAgICAgICAgICAgICAgICBfX3U2NCByZXNlcnZlZDM7CisgICAgICAgICAgICAgICAgICAgICAgICBfX3U2NCByZXNlcnZlZDQ7CisgICAgICAgICAgICAgICAgICAgICAgICBfX3U2NCByZXNlcnZlZDU7CisgICAgICAgICAgICAgICAgICAgICAgICBfX3U2NCByZXNlcnZlZDY7CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgZmxhZ3M6CisgICAgICAgICAgICAgICAgSW5kaWNhdGVzIHdoaWNoIG9wdGlvbmFsIGZpZWxkcyBpbiB0aGUgc3RydWN0dXJlIGFyZQorICAgICAgICAgICAgICAgIHZhbGlkLgorCisgICAgICAgICAgICB3b3JrX2VsZW1lbnRfZGVzY3JpcHRvcjoKKyAgICAgICAgICAgICAgICBUaGUgV29yayBFbGVtZW50IERlc2NyaXB0b3IgKFdFRCkgaXMgYSA2NC1iaXQgYXJndW1lbnQKKyAgICAgICAgICAgICAgICBkZWZpbmVkIGJ5IHRoZSBBRlUuIFR5cGljYWxseSB0aGlzIGlzIGFuIGVmZmVjdGl2ZQorICAgICAgICAgICAgICAgIGFkZHJlc3MgcG9pbnRpbmcgdG8gYW4gQUZVIHNwZWNpZmljIHN0cnVjdHVyZQorICAgICAgICAgICAgICAgIGRlc2NyaWJpbmcgd2hhdCB3b3JrIHRvIHBlcmZvcm0uCisKKyAgICAgICAgICAgIGFtcjoKKyAgICAgICAgICAgICAgICBBdXRob3JpdHkgTWFzayBSZWdpc3RlciAoQU1SKSwgc2FtZSBhcyB0aGUgcG93ZXJwYworICAgICAgICAgICAgICAgIEFNUi4gVGhpcyBmaWVsZCBpcyBvbmx5IHVzZWQgYnkgdGhlIGtlcm5lbCB3aGVuIHRoZQorICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgQ1hMX1NUQVJUX1dPUktfQU1SIHZhbHVlIGlzIHNwZWNpZmllZCBpbgorICAgICAgICAgICAgICAgIGZsYWdzLiBJZiBub3Qgc3BlY2lmaWVkIHRoZSBrZXJuZWwgd2lsbCB1c2UgYSBkZWZhdWx0CisgICAgICAgICAgICAgICAgdmFsdWUgb2YgMC4KKworICAgICAgICAgICAgbnVtX2ludGVycnVwdHM6CisgICAgICAgICAgICAgICAgTnVtYmVyIG9mIHVzZXJzcGFjZSBpbnRlcnJ1cHRzIHRvIHJlcXVlc3QuIFRoaXMgZmllbGQKKyAgICAgICAgICAgICAgICBpcyBvbmx5IHVzZWQgYnkgdGhlIGtlcm5lbCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgQ1hMX1NUQVJUX1dPUktfTlVNX0lSUVMgdmFsdWUgaXMgc3BlY2lmaWVkIGluIGZsYWdzLgorICAgICAgICAgICAgICAgIElmIG5vdCBzcGVjaWZpZWQgdGhlIG1pbmltdW0gbnVtYmVyIHJlcXVpcmVkIGJ5IHRoZQorICAgICAgICAgICAgICAgIEFGVSB3aWxsIGJlIGFsbG9jYXRlZC4gVGhlIG1pbiBhbmQgbWF4IG51bWJlciBjYW4gYmUKKyAgICAgICAgICAgICAgICBvYnRhaW5lZCBmcm9tIHN5c2ZzLgorCisgICAgICAgICAgICByZXNlcnZlZCBmaWVsZHM6CisgICAgICAgICAgICAgICAgRm9yIEFCSSBwYWRkaW5nIGFuZCBmdXR1cmUgZXh0ZW5zaW9ucworCisgICAgQ1hMX0lPQ1RMX0dFVF9QUk9DRVNTX0VMRU1FTlQ6CisgICAgICAgIEdldCB0aGUgY3VycmVudCBjb250ZXh0IGlkLCBhbHNvIGtub3duIGFzIHRoZSBwcm9jZXNzIGVsZW1lbnQuCisgICAgICAgIFRoZSB2YWx1ZSBpcyByZXR1cm5lZCBmcm9tIHRoZSBrZXJuZWwgYXMgYSBfX3UzMi4KKworCittbWFwCistLS0tCisKKyAgICBBbiBBRlUgbWF5IGhhdmUgYW4gTU1JTyBzcGFjZSB0byBmYWNpbGl0YXRlIGNvbW11bmljYXRpb24gd2l0aCB0aGUKKyAgICBBRlUuIElmIGl0IGRvZXMsIHRoZSBNTUlPIHNwYWNlIGNhbiBiZSBhY2Nlc3NlZCB2aWEgbW1hcC4gVGhlIHNpemUKKyAgICBhbmQgY29udGVudHMgb2YgdGhpcyBhcmVhIGFyZSBzcGVjaWZpYyB0byB0aGUgcGFydGljdWxhciBBRlUuIFRoZQorICAgIHNpemUgY2FuIGJlIGRpc2NvdmVyZWQgdmlhIHN5c2ZzLgorCisgICAgSW4gQUZVIGRpcmVjdGVkIG1vZGUsIG1hc3RlciBjb250ZXh0cyBhcmUgYWxsb3dlZCB0byBtYXAgYWxsIG9mCisgICAgdGhlIE1NSU8gc3BhY2UgYW5kIHNsYXZlIGNvbnRleHRzIGFyZSBhbGxvd2VkIHRvIG9ubHkgbWFwIHRoZSBwZXIKKyAgICBwcm9jZXNzIE1NSU8gc3BhY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb250ZXh0LiBJbiBkZWRpY2F0ZWQKKyAgICBwcm9jZXNzIG1vZGUgdGhlIGVudGlyZSBNTUlPIHNwYWNlIGNhbiBhbHdheXMgYmUgbWFwcGVkLgorCisgICAgVGhpcyBtbWFwIGNhbGwgbXVzdCBiZSBkb25lIGFmdGVyIHRoZSBTVEFSVF9XT1JLIGlvY3RsLgorCisgICAgQ2FyZSBzaG91bGQgYmUgdGFrZW4gd2hlbiBhY2Nlc3NpbmcgTU1JTyBzcGFjZS4gT25seSAzMiBhbmQgNjQtYml0CisgICAgYWNjZXNzZXMgYXJlIHN1cHBvcnRlZCBieSBQT1dFUjguIEFsc28sIHRoZSBBRlUgd2lsbCBiZSBkZXNpZ25lZAorICAgIHdpdGggYSBzcGVjaWZpYyBlbmRpYW5uZXNzLCBzbyBhbGwgTU1JTyBhY2Nlc3NlcyBzaG91bGQgY29uc2lkZXIKKyAgICBlbmRpYW5uZXNzIChyZWNvbW1lbmQgZW5kaWFuKDMpIHZhcmlhbnRzIGxpa2U6IGxlNjR0b2goKSwKKyAgICBiZTY0dG9oKCkgZXRjKS4gVGhlc2UgZW5kaWFuIGlzc3VlcyBlcXVhbGx5IGFwcGx5IHRvIHNoYXJlZCBtZW1vcnkKKyAgICBxdWV1ZXMgdGhlIFdFRCBtYXkgZGVzY3JpYmUuCisKKworcmVhZAorLS0tLQorCisgICAgUmVhZHMgZXZlbnRzIGZyb20gdGhlIEFGVS4gQmxvY2tzIGlmIG5vIGV2ZW50cyBhcmUgcGVuZGluZworICAgICh1bmxlc3MgT19OT05CTE9DSyBpcyBzdXBwbGllZCkuIFJldHVybnMgLUVJTyBpbiB0aGUgY2FzZSBvZiBhbgorICAgIHVucmVjb3ZlcmFibGUgZXJyb3Igb3IgaWYgdGhlIGNhcmQgaXMgcmVtb3ZlZC4KKworICAgIHJlYWQoKSB3aWxsIGFsd2F5cyByZXR1cm4gYW4gaW50ZWdyYWwgbnVtYmVyIG9mIGV2ZW50cy4KKworICAgIFRoZSBidWZmZXIgcGFzc2VkIHRvIHJlYWQoKSBtdXN0IGJlIGF0IGxlYXN0IDRLIGJ5dGVzLgorCisgICAgVGhlIHJlc3VsdCBvZiB0aGUgcmVhZCB3aWxsIGJlIGEgYnVmZmVyIG9mIG9uZSBvciBtb3JlIGV2ZW50cywKKyAgICBlYWNoIGV2ZW50IGlzIG9mIHR5cGUgc3RydWN0IGN4bF9ldmVudCwgb2YgdmFyeWluZyBzaXplLgorCisgICAgICAgICAgICBzdHJ1Y3QgY3hsX2V2ZW50IHsKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0IGN4bF9ldmVudF9oZWFkZXIgaGVhZGVyOworICAgICAgICAgICAgICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGN4bF9ldmVudF9hZnVfaW50ZXJydXB0IGlycTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3hsX2V2ZW50X2RhdGFfc3RvcmFnZSBmYXVsdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3hsX2V2ZW50X2FmdV9lcnJvciBhZnVfZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICB9OworCisgICAgVGhlIHN0cnVjdCBjeGxfZXZlbnRfaGVhZGVyIGlzIGRlZmluZWQgYXM6CisKKyAgICAgICAgICAgIHN0cnVjdCBjeGxfZXZlbnRfaGVhZGVyIHsKKyAgICAgICAgICAgICAgICAgICAgX191MTYgdHlwZTsKKyAgICAgICAgICAgICAgICAgICAgX191MTYgc2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgX191MTYgcHJvY2Vzc19lbGVtZW50OworICAgICAgICAgICAgICAgICAgICBfX3UxNiByZXNlcnZlZDE7CisgICAgICAgICAgICB9OworCisgICAgICAgIHR5cGU6CisgICAgICAgICAgICBUaGlzIGRlZmluZXMgdGhlIHR5cGUgb2YgZXZlbnQuIFRoZSB0eXBlIGRldGVybWluZXMgaG93CisgICAgICAgICAgICB0aGUgcmVzdCBvZiB0aGUgZXZlbnQgaXMgc3RydWN0dXJlZC4gVGhlc2UgdHlwZXMgYXJlCisgICAgICAgICAgICBkZXNjcmliZWQgYmVsb3cgYW5kIGRlZmluZWQgYnkgZW51bSBjeGxfZXZlbnRfdHlwZS4KKworICAgICAgICBzaXplOgorICAgICAgICAgICAgVGhpcyBpcyB0aGUgc2l6ZSBvZiB0aGUgZXZlbnQgaW4gYnl0ZXMgaW5jbHVkaW5nIHRoZQorICAgICAgICAgICAgc3RydWN0IGN4bF9ldmVudF9oZWFkZXIuIFRoZSBzdGFydCBvZiB0aGUgbmV4dCBldmVudCBjYW4KKyAgICAgICAgICAgIGJlIGZvdW5kIGF0IHRoaXMgb2Zmc2V0IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50CisgICAgICAgICAgICBldmVudC4KKworICAgICAgICBwcm9jZXNzX2VsZW1lbnQ6CisgICAgICAgICAgICBDb250ZXh0IElEIG9mIHRoZSBldmVudC4KKworICAgICAgICByZXNlcnZlZCBmaWVsZDoKKyAgICAgICAgICAgIEZvciBmdXR1cmUgZXh0ZW5zaW9ucyBhbmQgcGFkZGluZy4KKworICAgIElmIHRoZSBldmVudCB0eXBlIGlzIENYTF9FVkVOVF9BRlVfSU5URVJSVVBUIHRoZW4gdGhlIGV2ZW50CisgICAgc3RydWN0dXJlIGlzIGRlZmluZWQgYXM6CisKKyAgICAgICAgICAgIHN0cnVjdCBjeGxfZXZlbnRfYWZ1X2ludGVycnVwdCB7CisgICAgICAgICAgICAgICAgICAgIF9fdTE2IGZsYWdzOworICAgICAgICAgICAgICAgICAgICBfX3UxNiBpcnE7IC8qIFJhaXNlZCBBRlUgaW50ZXJydXB0IG51bWJlciAqLworICAgICAgICAgICAgICAgICAgICBfX3UzMiByZXNlcnZlZDE7CisgICAgICAgICAgICB9OworCisgICAgICAgIGZsYWdzOgorICAgICAgICAgICAgVGhlc2UgZmxhZ3MgaW5kaWNhdGUgd2hpY2ggb3B0aW9uYWwgZmllbGRzIGFyZSBwcmVzZW50CisgICAgICAgICAgICBpbiB0aGlzIHN0cnVjdC4gQ3VycmVudGx5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4KKworICAgICAgICBpcnE6CisgICAgICAgICAgICBUaGUgSVJRIG51bWJlciBzZW50IGJ5IHRoZSBBRlUuCisKKyAgICAgICAgcmVzZXJ2ZWQgZmllbGQ6CisgICAgICAgICAgICBGb3IgZnV0dXJlIGV4dGVuc2lvbnMgYW5kIHBhZGRpbmcuCisKKyAgICBJZiB0aGUgZXZlbnQgdHlwZSBpcyBDWExfRVZFTlRfREFUQV9TVE9SQUdFIHRoZW4gdGhlIGV2ZW50CisgICAgc3RydWN0dXJlIGlzIGRlZmluZWQgYXM6CisKKyAgICAgICAgICAgIHN0cnVjdCBjeGxfZXZlbnRfZGF0YV9zdG9yYWdlIHsKKyAgICAgICAgICAgICAgICAgICAgX191MTYgZmxhZ3M7CisgICAgICAgICAgICAgICAgICAgIF9fdTE2IHJlc2VydmVkMTsKKyAgICAgICAgICAgICAgICAgICAgX191MzIgcmVzZXJ2ZWQyOworICAgICAgICAgICAgICAgICAgICBfX3U2NCBhZGRyOworICAgICAgICAgICAgICAgICAgICBfX3U2NCBkc2lzcjsKKyAgICAgICAgICAgICAgICAgICAgX191NjQgcmVzZXJ2ZWQzOworICAgICAgICAgICAgfTsKKworICAgICAgICBmbGFnczoKKyAgICAgICAgICAgIFRoZXNlIGZsYWdzIGluZGljYXRlIHdoaWNoIG9wdGlvbmFsIGZpZWxkcyBhcmUgcHJlc2VudCBpbgorICAgICAgICAgICAgdGhpcyBzdHJ1Y3QuIEN1cnJlbnRseSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuCisKKyAgICAgICAgYWRkcmVzczoKKyAgICAgICAgICAgIFRoZSBhZGRyZXNzIHRoYXQgdGhlIEFGVSB1bnN1Y2Nlc3NmdWxseSBhdHRlbXB0ZWQgdG8KKyAgICAgICAgICAgIGFjY2Vzcy4gVmFsaWQgYWNjZXNzZXMgd2lsbCBiZSBoYW5kbGVkIHRyYW5zcGFyZW50bHkgYnkgdGhlCisgICAgICAgICAgICBrZXJuZWwgYnV0IGludmFsaWQgYWNjZXNzZXMgd2lsbCBnZW5lcmF0ZSB0aGlzIGV2ZW50LgorCisgICAgICAgIGRzaXNyOgorICAgICAgICAgICAgVGhpcyBmaWVsZCBnaXZlcyBpbmZvcm1hdGlvbiBvbiB0aGUgdHlwZSBvZiBmYXVsdC4gSXQgaXMgYQorICAgICAgICAgICAgY29weSBvZiB0aGUgRFNJU1IgZnJvbSB0aGUgUFNMIGhhcmR3YXJlIHdoZW4gdGhlIGFkZHJlc3MKKyAgICAgICAgICAgIGZhdWx0IG9jY3VycmVkLiBUaGUgZm9ybSBvZiB0aGUgRFNJU1IgaXMgYXMgZGVmaW5lZCBpbiB0aGUKKyAgICAgICAgICAgIENBSUEuCisKKyAgICAgICAgcmVzZXJ2ZWQgZmllbGRzOgorICAgICAgICAgICAgRm9yIGZ1dHVyZSBleHRlbnNpb25zCisKKyAgICBJZiB0aGUgZXZlbnQgdHlwZSBpcyBDWExfRVZFTlRfQUZVX0VSUk9SIHRoZW4gdGhlIGV2ZW50IHN0cnVjdHVyZQorICAgIGlzIGRlZmluZWQgYXM6CisKKyAgICAgICAgICAgIHN0cnVjdCBjeGxfZXZlbnRfYWZ1X2Vycm9yIHsKKyAgICAgICAgICAgICAgICAgICAgX191MTYgZmxhZ3M7CisgICAgICAgICAgICAgICAgICAgIF9fdTE2IHJlc2VydmVkMTsKKyAgICAgICAgICAgICAgICAgICAgX191MzIgcmVzZXJ2ZWQyOworICAgICAgICAgICAgICAgICAgICBfX3U2NCBlcnJvcjsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgZmxhZ3M6CisgICAgICAgICAgICBUaGVzZSBmbGFncyBpbmRpY2F0ZSB3aGljaCBvcHRpb25hbCBmaWVsZHMgYXJlIHByZXNlbnQgaW4KKyAgICAgICAgICAgIHRoaXMgc3RydWN0LiBDdXJyZW50bHkgYWxsIGZpZWxkcyBhcmUgTWFuZGF0b3J5LgorCisgICAgICAgIGVycm9yOgorICAgICAgICAgICAgRXJyb3Igc3RhdHVzIGZyb20gdGhlIEFGVS4gRGVmaW5lZCBieSB0aGUgQUZVLgorCisgICAgICAgIHJlc2VydmVkIGZpZWxkczoKKyAgICAgICAgICAgIEZvciBmdXR1cmUgZXh0ZW5zaW9ucyBhbmQgcGFkZGluZworCitTeXNmcyBDbGFzcworPT09PT09PT09PT0KKworICAgIEEgY3hsIHN5c2ZzIGNsYXNzIGlzIGFkZGVkIHVuZGVyIC9zeXMvY2xhc3MvY3hsIHRvIGZhY2lsaXRhdGUKKyAgICBlbnVtZXJhdGlvbiBhbmQgdHVuaW5nIG9mIHRoZSBhY2NlbGVyYXRvcnMuIEl0cyBsYXlvdXQgaXMKKyAgICBkZXNjcmliZWQgaW4gRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1jeGwKKworCitVZGV2IHJ1bGVzCis9PT09PT09PT09CisKKyAgICBUaGUgZm9sbG93aW5nIHVkZXYgcnVsZXMgY291bGQgYmUgdXNlZCB0byBjcmVhdGUgYSBzeW1saW5rIHRvIHRoZQorICAgIG1vc3QgbG9naWNhbCBjaGFyZGV2IHRvIHVzZSBpbiBhbnkgcHJvZ3JhbW1pbmcgbW9kZSAoYWZ1WC5ZZCBmb3IKKyAgICBkZWRpY2F0ZWQsIGFmdVguWXMgZm9yIGFmdSBkaXJlY3RlZCksIHNpbmNlIHRoZSBBUEkgaXMgdmlydHVhbGx5CisgICAgaWRlbnRpY2FsIGZvciBlYWNoOgorCisJU1VCU1lTVEVNPT0iY3hsIiwgQVRUUlN7bW9kZX09PSJkZWRpY2F0ZWRfcHJvY2VzcyIsIFNZTUxJTks9ImN4bC8lYiIKKwlTVUJTWVNURU09PSJjeGwiLCBBVFRSU3ttb2RlfT09ImFmdV9kaXJlY3RlZCIsIFwKKwkgICAgICAgICAgICAgICAgICBLRVJORUw9PSJhZnVbMC05XSouWzAtOV0qcyIsIFNZTUxJTks9ImN4bC8lYiIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXJwYy9jeGxmbGFzaC50eHQgYi9Eb2N1bWVudGF0aW9uL3Bvd2VycGMvY3hsZmxhc2gudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyMDJkMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VycGMvY3hsZmxhc2gudHh0CkBAIC0wLDAgKzEsMzE4IEBACitJbnRyb2R1Y3Rpb24KKz09PT09PT09PT09PQorCisgICAgVGhlIElCTSBQb3dlciBhcmNoaXRlY3R1cmUgcHJvdmlkZXMgc3VwcG9ydCBmb3IgQ0FQSSAoQ29oZXJlbnQKKyAgICBBY2NlbGVyYXRvciBQb3dlciBJbnRlcmZhY2UpLCB3aGljaCBpcyBhdmFpbGFibGUgdG8gY2VydGFpbiBQQ0llIHNsb3RzCisgICAgb24gUG93ZXIgOCBzeXN0ZW1zLiBDQVBJIGNhbiBiZSB0aG91Z2h0IG9mIGFzIGEgc3BlY2lhbCB0dW5uZWxpbmcKKyAgICBwcm90b2NvbCB0aHJvdWdoIFBDSWUgdGhhdCBhbGxvdyBQQ0llIGFkYXB0ZXJzIHRvIGxvb2sgbGlrZSBzcGVjaWFsCisgICAgcHVycG9zZSBjby1wcm9jZXNzb3JzIHdoaWNoIGNhbiByZWFkIG9yIHdyaXRlIGFuIGFwcGxpY2F0aW9uJ3MKKyAgICBtZW1vcnkgYW5kIGdlbmVyYXRlIHBhZ2UgZmF1bHRzLiBBcyBhIHJlc3VsdCwgdGhlIGhvc3QgaW50ZXJmYWNlIHRvCisgICAgYW4gYWRhcHRlciBydW5uaW5nIGluIENBUEkgbW9kZSBkb2VzIG5vdCByZXF1aXJlIHRoZSBkYXRhIGJ1ZmZlcnMgdG8KKyAgICBiZSBtYXBwZWQgdG8gdGhlIGRldmljZSdzIG1lbW9yeSAoSU9NTVUgYnlwYXNzKSBub3IgZG9lcyBpdCByZXF1aXJlCisgICAgbWVtb3J5IHRvIGJlIHBpbm5lZC4KKworICAgIE9uIExpbnV4LCBDb2hlcmVudCBBY2NlbGVyYXRvciAoQ1hMKSBrZXJuZWwgc2VydmljZXMgcHJlc2VudCBDQVBJCisgICAgZGV2aWNlcyBhcyBhIFBDSSBkZXZpY2UgYnkgaW1wbGVtZW50aW5nIGEgdmlydHVhbCBQQ0kgaG9zdCBicmlkZ2UuCisgICAgVGhpcyBhYnN0cmFjdGlvbiBzaW1wbGlmaWVzIHRoZSBpbmZyYXN0cnVjdHVyZSBhbmQgcHJvZ3JhbW1pbmcKKyAgICBtb2RlbCwgYWxsb3dpbmcgZm9yIGRyaXZlcnMgdG8gbG9vayBzaW1pbGFyIHRvIG90aGVyIG5hdGl2ZSBQQ0kKKyAgICBkZXZpY2UgZHJpdmVycy4KKworICAgIENYTCBwcm92aWRlcyBhIG1lY2hhbmlzbSBieSB3aGljaCB1c2VyIHNwYWNlIGFwcGxpY2F0aW9ucyBjYW4KKyAgICBkaXJlY3RseSB0YWxrIHRvIGEgZGV2aWNlIChuZXR3b3JrIG9yIHN0b3JhZ2UpIGJ5cGFzc2luZyB0aGUgdHlwaWNhbAorICAgIGtlcm5lbC9kZXZpY2UgZHJpdmVyIHN0YWNrLiBUaGUgQ1hMIEZsYXNoIEFkYXB0ZXIgRHJpdmVyIGVuYWJsZXMgYQorICAgIHVzZXIgc3BhY2UgYXBwbGljYXRpb24gZGlyZWN0IGFjY2VzcyB0byBGbGFzaCBzdG9yYWdlLgorCisgICAgVGhlIENYTCBGbGFzaCBBZGFwdGVyIERyaXZlciBpcyBhIGtlcm5lbCBtb2R1bGUgdGhhdCBzaXRzIGluIHRoZQorICAgIFNDU0kgc3RhY2sgYXMgYSBsb3cgbGV2ZWwgZGV2aWNlIGRyaXZlciAoYmVsb3cgdGhlIFNDU0kgZGlzayBhbmQKKyAgICBwcm90b2NvbCBkcml2ZXJzKSBmb3IgdGhlIElCTSBDWEwgRmxhc2ggQWRhcHRlci4gVGhpcyBkcml2ZXIgaXMKKyAgICByZXNwb25zaWJsZSBmb3IgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBhZGFwdGVyLCBzZXR0aW5nIHVwIHRoZQorICAgIHNwZWNpYWwgcGF0aCBmb3IgdXNlciBzcGFjZSBhY2Nlc3MsIGFuZCBwZXJmb3JtaW5nIGVycm9yIHJlY292ZXJ5LiBJdAorICAgIGNvbW11bmljYXRlcyBkaXJlY3RseSB0aGUgRmxhc2ggQWNjZWxlcmF0b3IgRnVuY3Rpb25hbCBVbml0IChBRlUpCisgICAgYXMgZGVzY3JpYmVkIGluIERvY3VtZW50YXRpb24vcG93ZXJwYy9jeGwudHh0LgorCisgICAgVGhlIGN4bGZsYXNoIGRyaXZlciBzdXBwb3J0cyB0d28sIG11dHVhbGx5IGV4Y2x1c2l2ZSwgbW9kZXMgb2YKKyAgICBvcGVyYXRpb24gYXQgdGhlIGRldmljZSAoTFVOKSBsZXZlbDoKKworICAgICAgICAtIEFueSBmbGFzaCBkZXZpY2UgKExVTikgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gYmUgYWNjZXNzZWQgYXMgYQorICAgICAgICAgIHJlZ3VsYXIgZGlzayBkZXZpY2UgKGkuZS46IC9kZXYvc2RjKS4gVGhpcyBpcyB0aGUgZGVmYXVsdCBtb2RlLgorCisgICAgICAgIC0gQW55IGZsYXNoIGRldmljZSAoTFVOKSBjYW4gYmUgY29uZmlndXJlZCB0byBiZSBhY2Nlc3NlZCBmcm9tCisgICAgICAgICAgdXNlciBzcGFjZSB3aXRoIGEgc3BlY2lhbCBibG9jayBsaWJyYXJ5LiBUaGlzIG1vZGUgZnVydGhlcgorICAgICAgICAgIHNwZWNpZmllcyB0aGUgbWVhbnMgb2YgYWNjZXNzaW5nIHRoZSBkZXZpY2UgYW5kIHByb3ZpZGVzIGZvcgorICAgICAgICAgIGVpdGhlciByYXcgYWNjZXNzIHRvIHRoZSBlbnRpcmUgTFVOIChyZWZlcnJlZCB0byBhcyBkaXJlY3QKKyAgICAgICAgICBvciBwaHlzaWNhbCBMVU4gYWNjZXNzKSBvciBhY2Nlc3MgdG8gYSBrZXJuZWwvQUZVLW1lZGlhdGVkCisgICAgICAgICAgcGFydGl0aW9uIG9mIHRoZSBMVU4gKHJlZmVycmVkIHRvIGFzIHZpcnR1YWwgTFVOIGFjY2VzcykuIFRoZQorICAgICAgICAgIHNlZ21lbnRhdGlvbiBvZiBhIGRpc2sgZGV2aWNlIGludG8gdmlydHVhbCBMVU5zIGlzIGFzc2lzdGVkCisgICAgICAgICAgYnkgc3BlY2lhbCB0cmFuc2xhdGlvbiBzZXJ2aWNlcyBwcm92aWRlZCBieSB0aGUgRmxhc2ggQUZVLgorCitPdmVydmlldworPT09PT09PT0KKworICAgIFRoZSBDb2hlcmVudCBBY2NlbGVyYXRvciBJbnRlcmZhY2UgQXJjaGl0ZWN0dXJlIChDQUlBKSBpbnRyb2R1Y2VzIGEKKyAgICBjb25jZXB0IG9mIGEgbWFzdGVyIGNvbnRleHQuIEEgbWFzdGVyIHR5cGljYWxseSBoYXMgc3BlY2lhbCBwcml2aWxlZ2VzCisgICAgZ3JhbnRlZCB0byBpdCBieSB0aGUga2VybmVsIG9yIGh5cGVydmlzb3IgYWxsb3dpbmcgaXQgdG8gcGVyZm9ybSBBRlUKKyAgICB3aWRlIG1hbmFnZW1lbnQgYW5kIGNvbnRyb2wuIFRoZSBtYXN0ZXIgbWF5IG9yIG1heSBub3QgYmUgaW52b2x2ZWQKKyAgICBkaXJlY3RseSBpbiBlYWNoIHVzZXIgSS9PLCBidXQgYXQgdGhlIG1pbmltdW0gaXMgaW52b2x2ZWQgaW4gdGhlCisgICAgaW5pdGlhbCBzZXR1cCBiZWZvcmUgdGhlIHVzZXIgYXBwbGljYXRpb24gaXMgYWxsb3dlZCB0byBzZW5kIHJlcXVlc3RzCisgICAgZGlyZWN0bHkgdG8gdGhlIEFGVS4KKworICAgIFRoZSBDWEwgRmxhc2ggQWRhcHRlciBEcml2ZXIgZXN0YWJsaXNoZXMgYSBtYXN0ZXIgY29udGV4dCB3aXRoIHRoZQorICAgIEFGVS4gSXQgdXNlcyBtZW1vcnkgbWFwcGVkIEkvTyAoTU1JTykgZm9yIHRoaXMgY29udHJvbCBhbmQgc2V0dXAuIFRoZQorICAgIEFkYXB0ZXIgUHJvYmxlbSBTcGFjZSBNZW1vcnkgTWFwIGxvb2tzIGxpa2UgdGhpczoKKworICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgICB8ICAgIDUxMiAqIDY0IEtCIFVzZXIgTU1JTyAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgIChwZXIgY29udGV4dCkgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgfCAgICAgICBVc2VyIEFjY2Vzc2libGUgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgIHwgICAgNTEyICogMTI4IEIgcGVyIGNvbnRleHQgICAgfAorICAgICAgICAgICAgICAgICAgICAgfCAgICBQcm92aXNpb25pbmcgYW5kIENvbnRyb2wgICB8CisgICAgICAgICAgICAgICAgICAgICB8ICAgVHJ1c3RlZCBQcm9jZXNzIGFjY2Vzc2libGUgIHwKKyAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIDY0IEtCIEdsb2JhbCAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICB8ICAgVHJ1c3RlZCBQcm9jZXNzIGFjY2Vzc2libGUgIHwKKyAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisgICAgVGhpcyBkcml2ZXIgY29uZmlndXJlcyBpdHNlbGYgaW50byB0aGUgU0NTSSBzb2Z0d2FyZSBzdGFjayBhcyBhbgorICAgIGFkYXB0ZXIgZHJpdmVyLiBUaGUgZHJpdmVyIGlzIHRoZSBvbmx5IGVudGl0eSB0aGF0IGlzIGNvbnNpZGVyZWQgYQorICAgIFRydXN0ZWQgUHJvY2VzcyB0byBwcm9ncmFtIHRoZSBQcm92aXNpb25pbmcgYW5kIENvbnRyb2wgYW5kIEdsb2JhbAorICAgIGFyZWFzIGluIHRoZSBNTUlPIFNwYWNlIHNob3duIGFib3ZlLiAgVGhlIG1hc3RlciBjb250ZXh0IGRyaXZlcgorICAgIGRpc2NvdmVycyBhbGwgTFVOcyBhdHRhY2hlZCB0byB0aGUgQ1hMIEZsYXNoIGFkYXB0ZXIgYW5kIGluc3RhbnRpYXRlcworICAgIHNjc2kgYmxvY2sgZGV2aWNlcyAoL2Rldi9zZGIsIC9kZXYvc2RjIGV0Yy4pIGZvciBlYWNoIHVuaXF1ZSBMVU4KKyAgICBzZWVuIGZyb20gZWFjaCBwYXRoLgorCisgICAgT25jZSB0aGVzZSBzY3NpIGJsb2NrIGRldmljZXMgYXJlIGluc3RhbnRpYXRlZCwgYW4gYXBwbGljYXRpb24KKyAgICB3cml0dGVuIHRvIGEgc3BlY2lmaWNhdGlvbiBwcm92aWRlZCBieSB0aGUgYmxvY2sgbGlicmFyeSBtYXkgZ2V0CisgICAgYWNjZXNzIHRvIHRoZSBGbGFzaCBmcm9tIHVzZXIgc3BhY2UgKHdpdGhvdXQgcmVxdWlyaW5nIGEgc3lzdGVtIGNhbGwpLgorCisgICAgVGhpcyBtYXN0ZXIgY29udGV4dCBkcml2ZXIgYWxzbyBwcm92aWRlcyBhIHNlcmllcyBvZiBpb2N0bHMgZm9yIHRoaXMKKyAgICBibG9jayBsaWJyYXJ5IHRvIGVuYWJsZSB0aGlzIHVzZXIgc3BhY2UgYWNjZXNzLiAgVGhlIGRyaXZlciBzdXBwb3J0cworICAgIHR3byBtb2RlcyBmb3IgYWNjZXNzaW5nIHRoZSBibG9jayBkZXZpY2UuCisKKyAgICBUaGUgZmlyc3QgbW9kZSBpcyBjYWxsZWQgYSB2aXJ0dWFsIG1vZGUuIEluIHRoaXMgbW9kZSBhIHNpbmdsZSBzY3NpCisgICAgYmxvY2sgZGV2aWNlICgvZGV2L3NkYikgbWF5IGJlIGNhcnZlZCB1cCBpbnRvIGFueSBudW1iZXIgb2YgZGlzdGluY3QKKyAgICB2aXJ0dWFsIExVTnMuIFRoZSB2aXJ0dWFsIExVTnMgbWF5IGJlIHJlc2l6ZWQgYXMgbG9uZyBhcyB0aGUgc3VtIG9mCisgICAgdGhlIHNpemVzIG9mIGFsbCB0aGUgdmlydHVhbCBMVU5zLCBhbG9uZyB3aXRoIHRoZSBtZXRhLWRhdGEgYXNzb2NpYXRlZAorICAgIHdpdGggaXQgZG9lcyBub3QgZXhjZWVkIHRoZSBwaHlzaWNhbCBjYXBhY2l0eS4KKworICAgIFRoZSBzZWNvbmQgbW9kZSBpcyBjYWxsZWQgdGhlIHBoeXNpY2FsIG1vZGUuIEluIHRoaXMgbW9kZSBhIHNpbmdsZQorICAgIGJsb2NrIGRldmljZSAoL2Rldi9zZGIpIG1heSBiZSBvcGVuZWQgZGlyZWN0bHkgYnkgdGhlIGJsb2NrIGxpYnJhcnkKKyAgICBhbmQgdGhlIGVudGlyZSBzcGFjZSBmb3IgdGhlIExVTiBpcyBhdmFpbGFibGUgdG8gdGhlIGFwcGxpY2F0aW9uLgorCisgICAgT25seSB0aGUgcGh5c2ljYWwgbW9kZSBwcm92aWRlcyBwZXJzaXN0ZW5jZSBvZiB0aGUgZGF0YS4gIGkuZS4gVGhlCisgICAgZGF0YSB3cml0dGVuIHRvIHRoZSBibG9jayBkZXZpY2Ugd2lsbCBzdXJ2aXZlIGFwcGxpY2F0aW9uIGV4aXQgYW5kCisgICAgcmVzdGFydCBhbmQgYWxzbyByZWJvb3QuIFRoZSB2aXJ0dWFsIExVTnMgZG8gbm90IHBlcnNpc3QgKGkuZS4gZG8KKyAgICBub3Qgc3Vydml2ZSBhZnRlciB0aGUgYXBwbGljYXRpb24gdGVybWluYXRlcyBvciB0aGUgc3lzdGVtIHJlYm9vdHMpLgorCisKK0Jsb2NrIGxpYnJhcnkgQVBJCis9PT09PT09PT09PT09PT09PQorCisgICAgQXBwbGljYXRpb25zIGludGVuZGluZyB0byBnZXQgYWNjZXNzIHRvIHRoZSBDWEwgRmxhc2ggZnJvbSB1c2VyCisgICAgc3BhY2Ugc2hvdWxkIHVzZSB0aGUgYmxvY2sgbGlicmFyeSwgYXMgaXQgYWJzdHJhY3RzIHRoZSBkZXRhaWxzIG9mCisgICAgaW50ZXJmYWNpbmcgZGlyZWN0bHkgd2l0aCB0aGUgY3hsZmxhc2ggZHJpdmVyIHRoYXQgYXJlIG5lY2Vzc2FyeSBmb3IKKyAgICBwZXJmb3JtaW5nIGFkbWluaXN0cmF0aXZlIGFjdGlvbnMgKGkuZS46IHNldHVwLCB0ZWFyIGRvd24sIHJlc2l6ZSkuCisgICAgVGhlIGJsb2NrIGxpYnJhcnkgY2FuIGJlIHRob3VnaHQgb2YgYXMgYSAndXNlcicgb2Ygc2VydmljZXMsCisgICAgaW1wbGVtZW50ZWQgYXMgSU9DVExzLCB0aGF0IGFyZSBwcm92aWRlZCBieSB0aGUgY3hsZmxhc2ggZHJpdmVyCisgICAgc3BlY2lmaWNhbGx5IGZvciBkZXZpY2VzIChMVU5zKSBvcGVyYXRpbmcgaW4gdXNlciBzcGFjZSBhY2Nlc3MKKyAgICBtb2RlLiBXaGlsZSBpdCBpcyBub3QgYSByZXF1aXJlbWVudCB0aGF0IGFwcGxpY2F0aW9ucyB1bmRlcnN0YW5kCisgICAgdGhlIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBibG9jayBsaWJyYXJ5IGFuZCB0aGUgY3hsZmxhc2ggZHJpdmVyLAorICAgIGEgaGlnaC1sZXZlbCBvdmVydmlldyBvZiBlYWNoIHN1cHBvcnRlZCBzZXJ2aWNlIChJT0NUTCkgaXMgcHJvdmlkZWQKKyAgICBiZWxvdy4KKworICAgIFRoZSBibG9jayBsaWJyYXJ5IGNhbiBiZSBmb3VuZCBvbiBHaXRIdWI6CisgICAgaHR0cDovL3d3dy5naXRodWIuY29tL21pa2Vob2xsaW5nZXIvaWJtY2FwaWt2CisKKworQ1hMIEZsYXNoIERyaXZlciBJT0NUTHMKKz09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICBVc2Vycywgc3VjaCBhcyB0aGUgYmxvY2sgbGlicmFyeSwgdGhhdCB3aXNoIHRvIGludGVyZmFjZSB3aXRoIGEgZmxhc2gKKyAgICBkZXZpY2UgKExVTikgdmlhIHVzZXIgc3BhY2UgYWNjZXNzIG5lZWQgdG8gdXNlIHRoZSBzZXJ2aWNlcyBwcm92aWRlZAorICAgIGJ5IHRoZSBjeGxmbGFzaCBkcml2ZXIuIEFzIHRoZXNlIHNlcnZpY2VzIGFyZSBpbXBsZW1lbnRlZCBhcyBpb2N0bHMsCisgICAgYSBmaWxlIGRlc2NyaXB0b3IgaGFuZGxlIG11c3QgZmlyc3QgYmUgb2J0YWluZWQgaW4gb3JkZXIgdG8gZXN0YWJsaXNoCisgICAgdGhlIGNvbW11bmljYXRpb24gY2hhbm5lbCBiZXR3ZWVuIGEgdXNlciBhbmQgdGhlIGtlcm5lbC4gIFRoaXMgZmlsZQorICAgIGRlc2NyaXB0b3IgaXMgb2J0YWluZWQgYnkgb3BlbmluZyB0aGUgZGV2aWNlIHNwZWNpYWwgZmlsZSBhc3NvY2lhdGVkCisgICAgd2l0aCB0aGUgc2NzaSBkaXNrIGRldmljZSAoL2Rldi9zZGIpIHRoYXQgd2FzIGNyZWF0ZWQgZHVyaW5nIExVTgorICAgIGRpc2NvdmVyeS4gQXMgcGVyIHRoZSBsb2NhdGlvbiBvZiB0aGUgY3hsZmxhc2ggZHJpdmVyIHdpdGhpbiB0aGUKKyAgICBTQ1NJIHByb3RvY29sIHN0YWNrLCB0aGlzIG9wZW4gaXMgYWN0dWFsbHkgbm90IHNlZW4gYnkgdGhlIGN4bGZsYXNoCisgICAgZHJpdmVyLiBVcG9uIHN1Y2Nlc3NmdWwgb3BlbiwgdGhlIHVzZXIgcmVjZWl2ZXMgYSBmaWxlIGRlc2NyaXB0b3IKKyAgICAoaGVyZWluIHJlZmVycmVkIHRvIGFzIGZkMSkgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgaXNzdWluZyB0aGUKKyAgICBzdWJzZXF1ZW50IGlvY3RscyBsaXN0ZWQgYmVsb3cuCisKKyAgICBUaGUgc3RydWN0dXJlIGRlZmluaXRpb25zIGZvciB0aGVzZSBJT0NUTHMgYXJlIGF2YWlsYWJsZSBpbjoKKyAgICB1YXBpL3Njc2kvY3hsZmxhc2hfaW9jdGwuaAorCitES19DWExGTEFTSF9BVFRBQ0gKKy0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhpcyBpb2N0bCBvYnRhaW5zLCBpbml0aWFsaXplcywgYW5kIHN0YXJ0cyBhIGNvbnRleHQgdXNpbmcgdGhlIENYTAorICAgIGtlcm5lbCBzZXJ2aWNlcy4gVGhlc2Ugc2VydmljZXMgc3BlY2lmeSBhIGNvbnRleHQgaWQgKHUxNikgYnkgd2hpY2gKKyAgICB0byB1bmlxdWVseSBpZGVudGlmeSB0aGUgY29udGV4dCBhbmQgaXRzIGFsbG9jYXRlZCByZXNvdXJjZXMuIFRoZQorICAgIHNlcnZpY2VzIGFkZGl0aW9uYWxseSBwcm92aWRlIGEgc2Vjb25kIGZpbGUgZGVzY3JpcHRvciAoaGVyZWluCisgICAgcmVmZXJyZWQgdG8gYXMgZmQyKSB0aGF0IGlzIHVzZWQgYnkgdGhlIGJsb2NrIGxpYnJhcnkgdG8gaW5pdGlhdGUKKyAgICBtZW1vcnkgbWFwcGVkIEkvTyAodmlhIG1tYXAoKSkgdG8gdGhlIENYTCBmbGFzaCBkZXZpY2UgYW5kIHBvbGwgZm9yCisgICAgY29tcGxldGlvbiBldmVudHMuIFRoaXMgZmlsZSBkZXNjcmlwdG9yIGlzIGludGVudGlvbmFsbHkgaW5zdGFsbGVkIGJ5CisgICAgdGhpcyBkcml2ZXIgYW5kIG5vdCB0aGUgQ1hMIGtlcm5lbCBzZXJ2aWNlcyB0byBhbGxvdyBmb3IgaW50ZXJtZWRpYXJ5CisgICAgbm90aWZpY2F0aW9uIGFuZCBhY2Nlc3MgaW4gdGhlIGV2ZW50IG9mIGEgbm9uLXVzZXItaW5pdGlhdGVkIGNsb3NlKCksCisgICAgc3VjaCBhcyBhIGtpbGxlZCBwcm9jZXNzLiBUaGlzIGRlc2lnbiBwb2ludCBpcyBkZXNjcmliZWQgaW4gZnVydGhlcgorICAgIGRldGFpbCBpbiB0aGUgZGVzY3JpcHRpb24gZm9yIHRoZSBES19DWExGTEFTSF9ERVRBQ0ggaW9jdGwuCisKKyAgICBUaGVyZSBhcmUgYSBmZXcgaW1wb3J0YW50IGFzcGVjdHMgcmVnYXJkaW5nIHRoZSAidG9rZW5zIiAoY29udGV4dCBpZAorICAgIGFuZCBmZDIpIHRoYXQgYXJlIHByb3ZpZGVkIGJhY2sgdG8gdGhlIHVzZXI6CisKKyAgICAgICAgLSBUaGVzZSB0b2tlbnMgYXJlIG9ubHkgdmFsaWQgZm9yIHRoZSBwcm9jZXNzIHVuZGVyIHdoaWNoIHRoZXkKKyAgICAgICAgICB3ZXJlIGNyZWF0ZWQuIFRoZSBjaGlsZCBvZiBhIGZvcmtlZCBwcm9jZXNzIGNhbm5vdCBjb250aW51ZQorICAgICAgICAgIHRvIHVzZSB0aGUgY29udGV4dCBpZCBvciBmaWxlIGRlc2NyaXB0b3IgY3JlYXRlZCBieSBpdHMgcGFyZW50CisgICAgICAgICAgKHNlZSBES19DWExGTEFTSF9WTFVOX0NMT05FIGZvciBmdXJ0aGVyIGRldGFpbHMpLgorCisgICAgICAgIC0gVGhlc2UgdG9rZW5zIGFyZSBvbmx5IHZhbGlkIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIGNvbnRleHQgYW5kCisgICAgICAgICAgdGhlIHByb2Nlc3MgdW5kZXIgd2hpY2ggdGhleSB3ZXJlIGNyZWF0ZWQuIE9uY2UgZWl0aGVyIGlzCisgICAgICAgICAgZGVzdHJveWVkLCB0aGUgdG9rZW5zIGFyZSB0byBiZSBjb25zaWRlcmVkIHN0YWxlIGFuZCBzdWJzZXF1ZW50CisgICAgICAgICAgdXNhZ2Ugd2lsbCByZXN1bHQgaW4gZXJyb3JzLgorCisgICAgICAgIC0gV2hlbiBhIGNvbnRleHQgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgdGhlIHVzZXIgc2hhbGwgZGV0YWNoIGZyb20KKyAgICAgICAgICB0aGUgY29udGV4dCB2aWEgdGhlIERLX0NYTEZMQVNIX0RFVEFDSCBpb2N0bC4KKworICAgICAgICAtIEEgY2xvc2Ugb24gZmQyIHdpbGwgaW52YWxpZGF0ZSB0aGUgdG9rZW5zLiBUaGlzIG9wZXJhdGlvbiBpcyBub3QKKyAgICAgICAgICByZXF1aXJlZCBieSB0aGUgdXNlci4KKworREtfQ1hMRkxBU0hfVVNFUl9ESVJFQ1QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgVGhpcyBpb2N0bCBpcyByZXNwb25zaWJsZSBmb3IgdHJhbnNpdGlvbmluZyB0aGUgTFVOIHRvIGRpcmVjdAorICAgIChwaHlzaWNhbCkgbW9kZSBhY2Nlc3MgYW5kIGNvbmZpZ3VyaW5nIHRoZSBBRlUgZm9yIGRpcmVjdCBhY2Nlc3MgZnJvbQorICAgIHVzZXIgc3BhY2Ugb24gYSBwZXItY29udGV4dCBiYXNpcy4gQWRkaXRpb25hbGx5LCB0aGUgYmxvY2sgc2l6ZSBhbmQKKyAgICBsYXN0IGxvZ2ljYWwgYmxvY2sgYWRkcmVzcyAoTEJBKSBhcmUgcmV0dXJuZWQgdG8gdGhlIHVzZXIuCisKKyAgICBBcyBtZW50aW9uZWQgcHJldmlvdXNseSwgd2hlbiBvcGVyYXRpbmcgaW4gdXNlciBzcGFjZSBhY2Nlc3MgbW9kZSwKKyAgICBMVU5zIG1heSBiZSBhY2Nlc3NlZCBpbiB3aG9sZSBvciBpbiBwYXJ0LiBPbmx5IG9uZSBtb2RlIGlzIGFsbG93ZWQKKyAgICBhdCBhIHRpbWUgYW5kIGlmIG9uZSBtb2RlIGlzIGFjdGl2ZSAob3V0c3RhbmRpbmcgcmVmZXJlbmNlcyBleGlzdCksCisgICAgcmVxdWVzdHMgdG8gdXNlIHRoZSBMVU4gaW4gYSBkaWZmZXJlbnQgbW9kZSBhcmUgZGVuaWVkLgorCisgICAgVGhlIEFGVSBpcyBjb25maWd1cmVkIGZvciBkaXJlY3QgYWNjZXNzIGZyb20gdXNlciBzcGFjZSBieSBhZGRpbmcgYW4KKyAgICBlbnRyeSB0byB0aGUgQUZVJ3MgcmVzb3VyY2UgaGFuZGxlIHRhYmxlLiBUaGUgaW5kZXggb2YgdGhlIGVudHJ5IGlzCisgICAgdHJlYXRlZCBhcyBhIHJlc291cmNlIGhhbmRsZSB0aGF0IGlzIHJldHVybmVkIHRvIHRoZSB1c2VyLiBUaGUgdXNlcgorICAgIGlzIHRoZW4gYWJsZSB0byB1c2UgdGhlIGhhbmRsZSB0byByZWZlcmVuY2UgdGhlIExVTiBkdXJpbmcgSS9PLgorCitES19DWExGTEFTSF9VU0VSX1ZJUlRVQUwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIFRoaXMgaW9jdGwgaXMgcmVzcG9uc2libGUgZm9yIHRyYW5zaXRpb25pbmcgdGhlIExVTiB0byB2aXJ0dWFsIG1vZGUKKyAgICBvZiBhY2Nlc3MgYW5kIGNvbmZpZ3VyaW5nIHRoZSBBRlUgZm9yIHZpcnR1YWwgYWNjZXNzIGZyb20gdXNlciBzcGFjZQorICAgIG9uIGEgcGVyLWNvbnRleHQgYmFzaXMuIEFkZGl0aW9uYWxseSwgdGhlIGJsb2NrIHNpemUgYW5kIGxhc3QgbG9naWNhbAorICAgIGJsb2NrIGFkZHJlc3MgKExCQSkgYXJlIHJldHVybmVkIHRvIHRoZSB1c2VyLgorCisgICAgQXMgbWVudGlvbmVkIHByZXZpb3VzbHksIHdoZW4gb3BlcmF0aW5nIGluIHVzZXIgc3BhY2UgYWNjZXNzIG1vZGUsCisgICAgTFVOcyBtYXkgYmUgYWNjZXNzZWQgaW4gd2hvbGUgb3IgaW4gcGFydC4gT25seSBvbmUgbW9kZSBpcyBhbGxvd2VkCisgICAgYXQgYSB0aW1lIGFuZCBpZiBvbmUgbW9kZSBpcyBhY3RpdmUgKG91dHN0YW5kaW5nIHJlZmVyZW5jZXMgZXhpc3QpLAorICAgIHJlcXVlc3RzIHRvIHVzZSB0aGUgTFVOIGluIGEgZGlmZmVyZW50IG1vZGUgYXJlIGRlbmllZC4KKworICAgIFRoZSBBRlUgaXMgY29uZmlndXJlZCBmb3IgdmlydHVhbCBhY2Nlc3MgZnJvbSB1c2VyIHNwYWNlIGJ5IGFkZGluZworICAgIGFuIGVudHJ5IHRvIHRoZSBBRlUncyByZXNvdXJjZSBoYW5kbGUgdGFibGUuIFRoZSBpbmRleCBvZiB0aGUgZW50cnkKKyAgICBpcyB0cmVhdGVkIGFzIGEgcmVzb3VyY2UgaGFuZGxlIHRoYXQgaXMgcmV0dXJuZWQgdG8gdGhlIHVzZXIuIFRoZQorICAgIHVzZXIgaXMgdGhlbiBhYmxlIHRvIHVzZSB0aGUgaGFuZGxlIHRvIHJlZmVyZW5jZSB0aGUgTFVOIGR1cmluZyBJL08uCisKKyAgICBCeSBkZWZhdWx0LCB0aGUgdmlydHVhbCBMVU4gaXMgY3JlYXRlZCB3aXRoIGEgc2l6ZSBvZiAwLiBUaGUgdXNlcgorICAgIHdvdWxkIG5lZWQgdG8gdXNlIHRoZSBES19DWExGTEFTSF9WTFVOX1JFU0laRSBpb2N0bCB0byBhZGp1c3QgdGhlIGdyb3cKKyAgICB0aGUgdmlydHVhbCBMVU4gdG8gYSBkZXNpcmVkIHNpemUuIFRvIGF2b2lkIGhhdmluZyB0byBwZXJmb3JtIHRoaXMKKyAgICByZXNpemUgZm9yIHRoZSBpbml0aWFsIGNyZWF0aW9uIG9mIHRoZSB2aXJ0dWFsIExVTiwgdGhlIHVzZXIgaGFzIHRoZQorICAgIG9wdGlvbiBvZiBzcGVjaWZ5aW5nIGEgc2l6ZSBhcyBwYXJ0IG9mIHRoZSBES19DWExGTEFTSF9VU0VSX1ZJUlRVQUwKKyAgICBpb2N0bCwgc3VjaCB0aGF0IHdoZW4gc3VjY2VzcyBpcyByZXR1cm5lZCB0byB0aGUgdXNlciwgdGhlCisgICAgcmVzb3VyY2UgaGFuZGxlIHRoYXQgaXMgcHJvdmlkZWQgaXMgYWxyZWFkeSByZWZlcmVuY2luZyBwcm92aXNpb25lZAorICAgIHN0b3JhZ2UuIFRoaXMgaXMgcmVmbGVjdGVkIGJ5IHRoZSBsYXN0IExCQSBiZWluZyBhIG5vbi16ZXJvIHZhbHVlLgorCitES19DWExGTEFTSF9WTFVOX1JFU0laRQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBUaGlzIGlvY3RsIGlzIHJlc3BvbnNpYmxlIGZvciByZXNpemluZyBhIHByZXZpb3VzbHkgY3JlYXRlZCB2aXJ0dWFsCisgICAgTFVOIGFuZCB3aWxsIGZhaWwgaWYgaW52b2tlZCB1cG9uIGEgTFVOIHRoYXQgaXMgbm90IGluIHZpcnR1YWwKKyAgICBtb2RlLiBVcG9uIHN1Y2Nlc3MsIGFuIHVwZGF0ZWQgbGFzdCBMQkEgaXMgcmV0dXJuZWQgdG8gdGhlIHVzZXIKKyAgICBpbmRpY2F0aW5nIHRoZSBuZXcgc2l6ZSBvZiB0aGUgdmlydHVhbCBMVU4gYXNzb2NpYXRlZCB3aXRoIHRoZQorICAgIHJlc291cmNlIGhhbmRsZS4KKworICAgIFRoZSBwYXJ0aXRpb25pbmcgb2YgdmlydHVhbCBMVU5zIGlzIGpvaW50bHkgbWVkaWF0ZWQgYnkgdGhlIGN4bGZsYXNoCisgICAgZHJpdmVyIGFuZCB0aGUgQUZVLiBBbiBhbGxvY2F0aW9uIHRhYmxlIGlzIGtlcHQgZm9yIGVhY2ggTFVOIHRoYXQgaXMKKyAgICBvcGVyYXRpbmcgaW4gdGhlIHZpcnR1YWwgbW9kZSBhbmQgdXNlZCB0byBwcm9ncmFtIGEgTFVOIHRyYW5zbGF0aW9uCisgICAgdGFibGUgdGhhdCB0aGUgQUZVIHJlZmVyZW5jZXMgd2hlbiBwcm92aWRlZCB3aXRoIGEgcmVzb3VyY2UgaGFuZGxlLgorCitES19DWExGTEFTSF9SRUxFQVNFCistLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgVGhpcyBpb2N0bCBpcyByZXNwb25zaWJsZSBmb3IgcmVsZWFzaW5nIGEgcHJldmlvdXNseSBvYnRhaW5lZAorICAgIHJlZmVyZW5jZSB0byBlaXRoZXIgYSBwaHlzaWNhbCBvciB2aXJ0dWFsIExVTi4gVGhpcyBjYW4gYmUKKyAgICB0aG91Z2h0IG9mIGFzIHRoZSBpbnZlcnNlIG9mIHRoZSBES19DWExGTEFTSF9VU0VSX0RJUkVDVCBvcgorICAgIERLX0NYTEZMQVNIX1VTRVJfVklSVFVBTCBpb2N0bHMuIFVwb24gc3VjY2VzcywgdGhlIHJlc291cmNlIGhhbmRsZQorICAgIGlzIG5vIGxvbmdlciB2YWxpZCBhbmQgdGhlIGVudHJ5IGluIHRoZSByZXNvdXJjZSBoYW5kbGUgdGFibGUgaXMKKyAgICBtYWRlIGF2YWlsYWJsZSB0byBiZSB1c2VkIGFnYWluLgorCisgICAgQXMgcGFydCBvZiB0aGUgcmVsZWFzZSBwcm9jZXNzIGZvciB2aXJ0dWFsIExVTnMsIHRoZSB2aXJ0dWFsIExVTgorICAgIGlzIGZpcnN0IHJlc2l6ZWQgdG8gMCB0byBjbGVhciBvdXQgYW5kIGZyZWUgdGhlIHRyYW5zbGF0aW9uIHRhYmxlcworICAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgdmlydHVhbCBMVU4gcmVmZXJlbmNlLgorCitES19DWExGTEFTSF9ERVRBQ0gKKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgIFRoaXMgaW9jdGwgaXMgcmVzcG9uc2libGUgZm9yIHVucmVnaXN0ZXJpbmcgYSBjb250ZXh0IHdpdGggdGhlCisgICAgY3hsZmxhc2ggZHJpdmVyIGFuZCByZWxlYXNlIG91dHN0YW5kaW5nIHJlc291cmNlcyB0aGF0IHdlcmUKKyAgICBub3QgZXhwbGljaXRseSByZWxlYXNlZCB2aWEgdGhlIERLX0NYTEZMQVNIX1JFTEVBU0UgaW9jdGwuIFVwb24KKyAgICBzdWNjZXNzLCBhbGwgInRva2VucyIgd2hpY2ggaGFkIGJlZW4gcHJvdmlkZWQgdG8gdGhlIHVzZXIgZnJvbSB0aGUKKyAgICBES19DWExGTEFTSF9BVFRBQ0ggb253YXJkIGFyZSBubyBsb25nZXIgdmFsaWQuCisKK0RLX0NYTEZMQVNIX1ZMVU5fQ0xPTkUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBUaGlzIGlvY3RsIGlzIHJlc3BvbnNpYmxlIGZvciBjbG9uaW5nIGEgcHJldmlvdXNseSBjcmVhdGVkCisgICAgY29udGV4dCB0byBhIG1vcmUgcmVjZW50bHkgY3JlYXRlZCBjb250ZXh0LiBJdCBleGlzdHMgc29sZWx5IHRvCisgICAgc3VwcG9ydCBtYWludGFpbmluZyB1c2VyIHNwYWNlIGFjY2VzcyB0byBzdG9yYWdlIGFmdGVyIGEgcHJvY2VzcworICAgIGZvcmtzLiBVcG9uIHN1Y2Nlc3MsIHRoZSBjaGlsZCBwcm9jZXNzICh3aGljaCBpbnZva2VkIHRoZSBpb2N0bCkKKyAgICB3aWxsIGhhdmUgYWNjZXNzIHRvIHRoZSBzYW1lIExVTnMgdmlhIHRoZSBzYW1lIHJlc291cmNlIGhhbmRsZShzKQorICAgIGFuZCBmZDIgYXMgdGhlIHBhcmVudCwgYnV0IHVuZGVyIGEgZGlmZmVyZW50IGNvbnRleHQuCisKKyAgICBDb250ZXh0IHNoYXJpbmcgYWNyb3NzIHByb2Nlc3NlcyBpcyBub3Qgc3VwcG9ydGVkIHdpdGggQ1hMIGFuZAorICAgIHRoZXJlZm9yZSBlYWNoIGZvcmsgbXVzdCBiZSBtZXQgd2l0aCBlc3RhYmxpc2hpbmcgYSBuZXcgY29udGV4dAorICAgIGZvciB0aGUgY2hpbGQgcHJvY2Vzcy4gVGhpcyBpb2N0bCBzaW1wbGlmaWVzIHRoZSBzdGF0ZSBtYW5hZ2VtZW50CisgICAgYW5kIHBsYXliYWNrIHJlcXVpcmVkIGJ5IGEgdXNlciBpbiBzdWNoIGEgc2NlbmFyaW8uIFdoZW4gYSBwcm9jZXNzCisgICAgZm9ya3MsIGNoaWxkIHByb2Nlc3MgY2FuIGNsb25lIHRoZSBwYXJlbnRzIGNvbnRleHQgYnkgZmlyc3QgY3JlYXRpbmcKKyAgICBhIGNvbnRleHQgKHZpYSBES19DWExGTEFTSF9BVFRBQ0gpIGFuZCB0aGVuIHVzaW5nIHRoaXMgaW9jdGwgdG8KKyAgICBwZXJmb3JtIHRoZSBjbG9uZSBmcm9tIHRoZSBwYXJlbnQgdG8gdGhlIGNoaWxkLgorCisgICAgVGhlIGNsb25lIGl0c2VsZiBpcyBmYWlybHkgc2ltcGxlLiBUaGUgcmVzb3VyY2UgaGFuZGxlIGFuZCBsdW4KKyAgICB0cmFuc2xhdGlvbiB0YWJsZXMgYXJlIGNvcGllZCBmcm9tIHRoZSBwYXJlbnQgY29udGV4dCB0byB0aGUgY2hpbGQncworICAgIGFuZCB0aGVuIHN5bmNlZCB3aXRoIHRoZSBBRlUuCisKK0RLX0NYTEZMQVNIX1ZFUklGWQorLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgVGhpcyBpb2N0bCBpcyB1c2VkIHRvIGRldGVjdCB2YXJpb3VzIGNoYW5nZXMgc3VjaCBhcyB0aGUgY2FwYWNpdHkgb2YKKyAgICB0aGUgZGlzayBjaGFuZ2luZywgdGhlIG51bWJlciBvZiBMVU5zIHZpc2libGUgY2hhbmdpbmcsIGV0Yy4gSW4gY2FzZXMKKyAgICB3aGVyZSB0aGUgY2hhbmdlcyBhZmZlY3QgdGhlIGFwcGxpY2F0aW9uIChzdWNoIGFzIGEgTFVOIHJlc2l6ZSksIHRoZQorICAgIGN4bGZsYXNoIGRyaXZlciB3aWxsIHJlcG9ydCB0aGUgY2hhbmdlZCBzdGF0ZSB0byB0aGUgYXBwbGljYXRpb24uCisKKyAgICBUaGUgdXNlciBjYWxscyBpbiB3aGVuIHRoZXkgd2FudCB0byB2YWxpZGF0ZSB0aGF0IGEgTFVOIGhhc24ndCBiZWVuCisgICAgY2hhbmdlZCBpbiByZXNwb25zZSB0byBhIGNoZWNrIGNvbmRpdGlvbi4gQXMgdGhlIHVzZXIgaXMgb3BlcmF0aW5nIG91dAorICAgIG9mIGJhbmQgZnJvbSB0aGUga2VybmVsLCB0aGV5IHdpbGwgc2VlIHRoZXNlIHR5cGVzIG9mIGV2ZW50cyB3aXRob3V0CisgICAgdGhlIGtlcm5lbCdzIGtub3dsZWRnZS4gV2hlbiBlbmNvdW50ZXJlZCwgdGhlIHVzZXIncyBhcmNoaXRlY3RlZAorICAgIGJlaGF2aW9yIGlzIHRvIGNhbGwgaW4gdG8gdGhpcyBpb2N0bCwgaW5kaWNhdGluZyB3aGF0IHRoZXkgd2FudCB0bworICAgIHZlcmlmeSBhbmQgcGFzc2luZyBhbG9uZyBhbnkgYXBwcm9wcmlhdGUgaW5mb3JtYXRpb24uIEZvciBub3csIG9ubHkKKyAgICB2ZXJpZnlpbmcgYSBMVU4gY2hhbmdlIChpZTogc2l6ZSBkaWZmZXJlbnQpIHdpdGggc2Vuc2UgZGF0YSBpcworICAgIHN1cHBvcnRlZC4KKworREtfQ1hMRkxBU0hfUkVDT1ZFUl9BRlUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgVGhpcyBpb2N0bCBpcyB1c2VkIHRvIGRyaXZlIHJlY292ZXJ5IChpZiBzdWNoIGFuIGFjdGlvbiBpcyB3YXJyYW50ZWQpCisgICAgb2YgYSBzcGVjaWZpZWQgdXNlciBjb250ZXh0LiBBbnkgc3RhdGUgYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyIGNvbnRleHQKKyAgICBpcyByZS1lc3RhYmxpc2hlZCB1cG9uIHN1Y2Nlc3NmdWwgcmVjb3ZlcnkuCisKKyAgICBVc2VyIGNvbnRleHRzIGFyZSBwdXQgaW50byBhbiBlcnJvciBjb25kaXRpb24gd2hlbiB0aGUgZGV2aWNlIG5lZWRzIHRvCisgICAgYmUgcmVzZXQgb3IgaXMgdGVybWluYXRpbmcuIFVzZXJzIGFyZSBub3RpZmllZCBvZiB0aGlzIGVycm9yIGNvbmRpdGlvbgorICAgIGJ5IHNlZWluZyBhbGwgMHhGJ3Mgb24gYW4gTU1JTyByZWFkLiBVcG9uIGVuY291bnRlcmluZyB0aGlzLCB0aGUKKyAgICBhcmNoaXRlY3RlZCBiZWhhdmlvciBmb3IgYSB1c2VyIGlzIHRvIGNhbGwgaW50byB0aGlzIGlvY3RsIHRvIHJlY292ZXIKKyAgICB0aGVpciBjb250ZXh0LiBBIHVzZXIgbWF5IGFsc28gY2FsbCBpbnRvIHRoaXMgaW9jdGwgYXQgYW55IHRpbWUgdG8KKyAgICBjaGVjayBpZiB0aGUgZGV2aWNlIGlzIG9wZXJhdGluZyBub3JtYWxseS4gSWYgYSBmYWlsdXJlIGlzIHJldHVybmVkCisgICAgZnJvbSB0aGlzIGlvY3RsLCB0aGUgdXNlciBpcyBleHBlY3RlZCB0byBncmFjZWZ1bGx5IGNsZWFuIHVwIHRoZWlyCisgICAgY29udGV4dCB2aWEgcmVsZWFzZS9kZXRhY2ggaW9jdGxzLiBVbnRpbCB0aGV5IGRvLCB0aGUgY29udGV4dCB0aGV5CisgICAgaG9sZCBpcyBub3QgcmVsaW5xdWlzaGVkLiBUaGUgdXNlciBtYXkgYWxzbyBvcHRpb25hbGx5IGV4aXQgdGhlIHByb2Nlc3MKKyAgICBhdCB3aGljaCB0aW1lIHRoZSBjb250ZXh0L3Jlc291cmNlcyB0aGV5IGhlbGQgd2lsbCBiZSBmcmVlZCBhcyBwYXJ0IG9mCisgICAgdGhlIHJlbGVhc2UgZm9wLgorCitES19DWExGTEFTSF9NQU5BR0VfTFVOCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgVGhpcyBpb2N0bCBpcyB1c2VkIHRvIHN3aXRjaCBhIExVTiBmcm9tIGEgbW9kZSB3aGVyZSBpdCBpcyBhdmFpbGFibGUKKyAgICBmb3IgZmlsZS1zeXN0ZW0gYWNjZXNzIChsZWdhY3kpLCB0byBhIG1vZGUgd2hlcmUgaXQgaXMgc2V0IGFzaWRlIGZvcgorICAgIGV4Y2x1c2l2ZSB1c2VyIHNwYWNlIGFjY2VzcyAoc3VwZXJwaXBlKS4gSW4gY2FzZSBhIExVTiBpcyB2aXNpYmxlCisgICAgYWNyb3NzIG11bHRpcGxlIHBvcnRzIGFuZCBhZGFwdGVycywgdGhpcyBpb2N0bCBpcyB1c2VkIHRvIHVuaXF1ZWx5CisgICAgaWRlbnRpZnkgZWFjaCBMVU4gYnkgaXRzIFdvcmxkIFdpZGUgTm9kZSBOYW1lIChXV05OKS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXJwYy9kc2NyLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXJwYy9kc2NyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2UzMDBjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlcnBjL2RzY3IudHh0CkBAIC0wLDAgKzEsODMgQEAKKwkJCURTQ1IgKERhdGEgU3RyZWFtIENvbnRyb2wgUmVnaXN0ZXIpCisJCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitEU0NSIHJlZ2lzdGVyIGluIHBvd2VycGMgYWxsb3dzIHVzZXIgdG8gaGF2ZSBzb21lIGNvbnRyb2wgb2YgcHJlZmV0Y2ggb2YgZGF0YQorc3RyZWFtIGluIHRoZSBwcm9jZXNzb3IuIFBsZWFzZSByZWZlciB0byB0aGUgSVNBIGRvY3VtZW50cyBvciByZWxhdGVkIG1hbnVhbAorZm9yIG1vcmUgZGV0YWlsZWQgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGhvdyB0byB1c2UgdGhpcyBEU0NSIHRvIGF0dGFpbiB0aGlzCitjb250cm9sIG9mIHRoZSBwcmVmZXRjaGVzIC4gVGhpcyBkb2N1bWVudCBoZXJlIHByb3ZpZGVzIGFuIG92ZXJ2aWV3IG9mIGtlcm5lbAorc3VwcG9ydCBmb3IgRFNDUiwgcmVsYXRlZCBrZXJuZWwgb2JqZWN0cywgaXQncyBmdW5jdGlvbmFsaXRpZXMgYW5kIGV4cG9ydGVkCit1c2VyIGludGVyZmFjZS4KKworKEEpIERhdGEgU3RydWN0dXJlczoKKworCSgxKSB0aHJlYWRfc3RydWN0OgorCQlkc2NyCQkvKiBUaHJlYWQgRFNDUiB2YWx1ZSAqLworCQlkc2NyX2luaGVyaXQJLyogVGhyZWFkIGhhcyBjaGFuZ2VkIGRlZmF1bHQgRFNDUiAqLworCisJKDIpIFBBQ0E6CisJCWRzY3JfZGVmYXVsdAkvKiBwZXItQ1BVIERTQ1IgZGVmYXVsdCB2YWx1ZSAqLworCisJKDMpIHN5c2ZzLmM6CisJCWRzY3JfZGVmYXVsdAkvKiBTeXN0ZW0gRFNDUiBkZWZhdWx0IHZhbHVlICovCisKKyhCKSBTY2hlZHVsZXIgQ2hhbmdlczoKKworCVNjaGVkdWxlciB3aWxsIHdyaXRlIHRoZSBwZXItQ1BVIERTQ1IgZGVmYXVsdCB3aGljaCBpcyBzdG9yZWQgaW4gdGhlCisJQ1BVJ3MgUEFDQSB2YWx1ZSBpbnRvIHRoZSByZWdpc3RlciBpZiB0aGUgdGhyZWFkIGhhcyBkc2NyX2luaGVyaXQgdmFsdWUKKwljbGVhcmVkIHdoaWNoIG1lYW5zIHRoYXQgaXQgaGFzIG5vdCBjaGFuZ2VkIHRoZSBkZWZhdWx0IERTQ1IgdGlsbCBub3cuCisJSWYgdGhlIGRzY3JfaW5oZXJpdCB2YWx1ZSBpcyBzZXQgd2hpY2ggbWVhbnMgdGhhdCBpdCBoYXMgY2hhbmdlZCB0aGUKKwlkZWZhdWx0IERTQ1IgdmFsdWUsIHNjaGVkdWxlciB3aWxsIHdyaXRlIHRoZSBjaGFuZ2VkIHZhbHVlIHdoaWNoIHdpbGwKKwlub3cgYmUgY29udGFpbmVkIGluIHRocmVhZCBzdHJ1Y3QncyBkc2NyIGludG8gdGhlIHJlZ2lzdGVyIGluc3RlYWQgb2YKKwl0aGUgcGVyLUNQVSBkZWZhdWx0IFBBQ0EgYmFzZWQgRFNDUiB2YWx1ZS4KKworCU5PVEU6IFBsZWFzZSBub3RlIGhlcmUgdGhhdCB0aGUgc3lzdGVtIHdpZGUgZ2xvYmFsIERTQ1IgdmFsdWUgbmV2ZXIKKwlnZXRzIHVzZWQgZGlyZWN0bHkgaW4gdGhlIHNjaGVkdWxlciBwcm9jZXNzIGNvbnRleHQgc3dpdGNoIGF0IGFsbC4KKworKEMpIFNZU0ZTIEludGVyZmFjZToKKworCUdsb2JhbCBEU0NSIGRlZmF1bHQ6CQkvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9kc2NyX2RlZmF1bHQKKwlDUFUgc3BlY2lmaWMgRFNDUiBkZWZhdWx0Ogkvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHVOL2RzY3IKKworCUNoYW5naW5nIHRoZSBnbG9iYWwgRFNDUiBkZWZhdWx0IGluIHRoZSBzeXNmcyB3aWxsIGNoYW5nZSBhbGwgdGhlIENQVQorCXNwZWNpZmljIERTQ1IgZGVmYXVsdHMgaW1tZWRpYXRlbHkgaW4gdGhlaXIgUEFDQSBzdHJ1Y3R1cmVzLiBBZ2FpbiBpZgorCXRoZSBjdXJyZW50IHByb2Nlc3MgaGFzIHRoZSBkc2NyX2luaGVyaXQgY2xlYXIsIGl0IGFsc28gd3JpdGVzIHRoZSBuZXcKKwl2YWx1ZSBpbnRvIGV2ZXJ5IENQVSdzIERTQ1IgcmVnaXN0ZXIgcmlnaHQgYXdheSBhbmQgdXBkYXRlcyB0aGUgY3VycmVudAorCXRocmVhZCdzIERTQ1IgdmFsdWUgYXMgd2VsbC4KKworCUNoYW5naW5nIHRoZSBDUFUgc3BlY2lmaWMgRFNDUiBkZWZhdWx0IHZhbHVlIGluIHRoZSBzeXNmcyBkb2VzIGV4YWN0bHkKKwl0aGUgc2FtZSB0aGluZyBhcyBhYm92ZSBidXQgdW5saWtlIHRoZSBnbG9iYWwgb25lIGFib3ZlLCBpdCBqdXN0IGNoYW5nZXMKKwlzdHVmZiBmb3IgdGhhdCBwYXJ0aWN1bGFyIENQVSBpbnN0ZWFkIGZvciBhbGwgdGhlIENQVXMgb24gdGhlIHN5c3RlbS4KKworKEQpIFVzZXIgU3BhY2UgSW5zdHJ1Y3Rpb25zOgorCisJVGhlIERTQ1IgcmVnaXN0ZXIgY2FuIGJlIGFjY2Vzc2VkIGluIHRoZSB1c2VyIHNwYWNlIHVzaW5nIGFueSBvZiB0aGVzZQorCXR3byBTUFIgbnVtYmVycyBhdmFpbGFibGUgZm9yIHRoYXQgcHVycG9zZS4KKworCSgxKSBQcm9ibGVtIHN0YXRlIFNQUjoJCTB4MDMJKFVuLXByaXZpbGVnZWQsIFBPV0VSOCBvbmx5KQorCSgyKSBQcml2aWxlZ2VkIHN0YXRlIFNQUjoJMHgxMQkoUHJpdmlsZWdlZCkKKworCUFjY2Vzc2luZyBEU0NSIHRocm91Z2ggcHJpdmlsZWdlZCBTUFIgbnVtYmVyICgweDExKSBmcm9tIHVzZXIgc3BhY2UKKwl3b3JrcywgYXMgaXQgaXMgZW11bGF0ZWQgZm9sbG93aW5nIGFuIGlsbGVnYWwgaW5zdHJ1Y3Rpb24gZXhjZXB0aW9uCisJaW5zaWRlIHRoZSBrZXJuZWwuIEJvdGggbWZzcHIgYW5kIG10c3ByIGluc3RydWN0aW9ucyBhcmUgZW11bGF0ZWQuCisKKwlBY2Nlc3NpbmcgRFNDUiB0aHJvdWdoIHVzZXIgbGV2ZWwgU1BSICgweDAzKSBmcm9tIHVzZXIgc3BhY2Ugd2lsbCBmaXJzdAorCWNyZWF0ZSBhIGZhY2lsaXR5IHVuYXZhaWxhYmxlIGV4Y2VwdGlvbi4gSW5zaWRlIHRoaXMgZXhjZXB0aW9uIGhhbmRsZXIKKwlhbGwgbWZzcHIgaW5zdHJ1Y3Rpb24gYmFzZWQgcmVhZCBhdHRlbXB0cyB3aWxsIGdldCBlbXVsYXRlZCBhbmQgcmV0dXJuZWQKKwl3aGVyZSBhcyB0aGUgZmlyc3QgbXRzcHIgaW5zdHJ1Y3Rpb24gYmFzZWQgd3JpdGUgYXR0ZW1wdHMgd2lsbCBlbmFibGUKKwl0aGUgRFNDUiBmYWNpbGl0eSBmb3IgdGhlIG5leHQgdGltZSBhcm91bmQgKGJvdGggZm9yIHJlYWQgYW5kIHdyaXRlKSBieQorCXNldHRpbmcgRFNDUiBmYWNpbGl0eSBpbiB0aGUgRlNDUiByZWdpc3Rlci4KKworKEUpIFNwZWNpZmljcyBhYm91dCAnZHNjcl9pbmhlcml0JzoKKworCVRoZSB0aHJlYWQgc3RydWN0IGVsZW1lbnQgJ2RzY3JfaW5oZXJpdCcgcmVwcmVzZW50cyB3aGV0aGVyIHRoZSB0aHJlYWQKKwlpbiBxdWVzdGlvbiBoYXMgYXR0ZW1wdGVkIGFuZCBjaGFuZ2VkIHRoZSBEU0NSIGl0c2VsZiB1c2luZyBhbnkgb2YgdGhlCisJZm9sbG93aW5nIG1ldGhvZHMuIFRoaXMgZWxlbWVudCBzaWduaWZpZXMgd2hldGhlciB0aGUgdGhyZWFkIHdhbnRzIHRvCisJdXNlIHRoZSBDUFUgZGVmYXVsdCBEU0NSIHZhbHVlIG9yIGl0cyBvd24gY2hhbmdlZCBEU0NSIHZhbHVlIGluIHRoZQorCWtlcm5lbC4KKworCQkoMSkgbXRzcHIgaW5zdHJ1Y3Rpb24JKFNQUiBudW1iZXIgMHgwMykKKwkJKDIpIG10c3ByIGluc3RydWN0aW9uCShTUFIgbnVtYmVyIDB4MTEpCisJCSgzKSBwdHJhY2UgaW50ZXJmYWNlCShFeHBsaWNpdGx5IHNldCB1c2VyIERTQ1IgdmFsdWUpCisKKwlBbnkgY2hpbGQgb2YgdGhlIHByb2Nlc3MgY3JlYXRlZCBhZnRlciB0aGlzIGV2ZW50IGluIHRoZSBwcm9jZXNzIGluaGVyaXRzCisJdGhpcyBzYW1lIGJlaGF2aW91ciBhcyB3ZWxsLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlcnBjL2VlaC1wY2ktZXJyb3ItcmVjb3ZlcnkudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlcnBjL2VlaC1wY2ktZXJyb3ItcmVjb3ZlcnkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNGUzM2QKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VycGMvZWVoLXBjaS1lcnJvci1yZWNvdmVyeS50eHQKQEAgLTAsMCArMSwzMzQgQEAKKworCisgICAgICAgICAgICAgICAgICAgICAgUENJIEJ1cyBFRUggRXJyb3IgUmVjb3ZlcnkKKyAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluYXMgVmVwc3RhcworICAgICAgICAgICAgICAgICAgICAgICA8bGluYXNAYXVzdGluLmlibS5jb20+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDEyIEphbnVhcnkgMjAwNQorCisKK092ZXJ2aWV3OgorLS0tLS0tLS0tCitUaGUgSUJNIFBPV0VSLWJhc2VkIHBTZXJpZXMgYW5kIGlTZXJpZXMgY29tcHV0ZXJzIGluY2x1ZGUgUENJIGJ1cworY29udHJvbGxlciBjaGlwcyB0aGF0IGhhdmUgZXh0ZW5kZWQgY2FwYWJpbGl0aWVzIGZvciBkZXRlY3RpbmcgYW5kCityZXBvcnRpbmcgYSBsYXJnZSB2YXJpZXR5IG9mIFBDSSBidXMgZXJyb3IgY29uZGl0aW9ucy4gIFRoZXNlIGZlYXR1cmVzCitnbyB1bmRlciB0aGUgbmFtZSBvZiAiRUVIIiwgZm9yICJFeHRlbmRlZCBFcnJvciBIYW5kbGluZyIuICBUaGUgRUVICitoYXJkd2FyZSBmZWF0dXJlcyBhbGxvdyBQQ0kgYnVzIGVycm9ycyB0byBiZSBjbGVhcmVkIGFuZCBhIFBDSQorY2FyZCB0byBiZSAicmVib290ZWQiLCB3aXRob3V0IGFsc28gaGF2aW5nIHRvIHJlYm9vdCB0aGUgb3BlcmF0aW5nCitzeXN0ZW0uCisKK1RoaXMgaXMgaW4gY29udHJhc3QgdG8gdHJhZGl0aW9uYWwgUENJIGVycm9yIGhhbmRsaW5nLCB3aGVyZSB0aGUKK1BDSSBjaGlwIGlzIHdpcmVkIGRpcmVjdGx5IHRvIHRoZSBDUFUsIGFuZCBhbiBlcnJvciB3b3VsZCBjYXVzZQorYSBDUFUgbWFjaGluZS1jaGVjay9jaGVjay1zdG9wIGNvbmRpdGlvbiwgaGFsdGluZyB0aGUgQ1BVIGVudGlyZWx5LgorQW5vdGhlciAidHJhZGl0aW9uYWwiIHRlY2huaXF1ZSBpcyB0byBpZ25vcmUgc3VjaCBlcnJvcnMsIHdoaWNoCitjYW4gbGVhZCB0byBkYXRhIGNvcnJ1cHRpb24sIGJvdGggb2YgdXNlciBkYXRhIG9yIG9mIGtlcm5lbCBkYXRhLAoraHVuZy91bnJlc3BvbnNpdmUgYWRhcHRlcnMsIG9yIHN5c3RlbSBjcmFzaGVzL2xvY2t1cHMuICBUaHVzLAordGhlIGlkZWEgYmVoaW5kIEVFSCBpcyB0aGF0IHRoZSBvcGVyYXRpbmcgc3lzdGVtIGNhbiBiZWNvbWUgbW9yZQorcmVsaWFibGUgYW5kIHJvYnVzdCBieSBwcm90ZWN0aW5nIGl0IGZyb20gUENJIGVycm9ycywgYW5kIGdpdmluZwordGhlIE9TIHRoZSBhYmlsaXR5IHRvICJyZWJvb3QiL3JlY292ZXIgaW5kaXZpZHVhbCBQQ0kgZGV2aWNlcy4KKworRnV0dXJlIHN5c3RlbXMgZnJvbSBvdGhlciB2ZW5kb3JzLCBiYXNlZCBvbiB0aGUgUENJLUUgc3BlY2lmaWNhdGlvbiwKK21heSBjb250YWluIHNpbWlsYXIgZmVhdHVyZXMuCisKKworQ2F1c2VzIG9mIEVFSCBFcnJvcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCitFRUggd2FzIG9yaWdpbmFsbHkgZGVzaWduZWQgdG8gZ3VhcmQgYWdhaW5zdCBoYXJkd2FyZSBmYWlsdXJlLCBzdWNoCithcyBQQ0kgY2FyZHMgZHlpbmcgZnJvbSBoZWF0LCBodW1pZGl0eSwgZHVzdCwgdmlicmF0aW9uIGFuZCBiYWQKK2VsZWN0cmljYWwgY29ubmVjdGlvbnMuIFRoZSB2YXN0IG1ham9yaXR5IG9mIEVFSCBlcnJvcnMgc2VlbiBpbgorInJlYWwgbGlmZSIgYXJlIGR1ZSB0byBlaXRoZXIgcG9vcmx5IHNlYXRlZCBQQ0kgY2FyZHMsIG9yLAordW5mb3J0dW5hdGVseSBxdWl0ZSBjb21tb25seSwgZHVlIHRvIGRldmljZSBkcml2ZXIgYnVncywgZGV2aWNlIGZpcm13YXJlCitidWdzLCBhbmQgc29tZXRpbWVzIFBDSSBjYXJkIGhhcmR3YXJlIGJ1Z3MuCisKK1RoZSBtb3N0IGNvbW1vbiBzb2Z0d2FyZSBidWcsIGlzIG9uZSB0aGF0IGNhdXNlcyB0aGUgZGV2aWNlIHRvCithdHRlbXB0IHRvIERNQSB0byBhIGxvY2F0aW9uIGluIHN5c3RlbSBtZW1vcnkgdGhhdCBoYXMgbm90IGJlZW4KK3Jlc2VydmVkIGZvciBETUEgYWNjZXNzIGZvciB0aGF0IGNhcmQuICBUaGlzIGlzIGEgcG93ZXJmdWwgZmVhdHVyZSwKK2FzIGl0IHByZXZlbnRzIHdoYXQ7IG90aGVyd2lzZSwgd291bGQgaGF2ZSBiZWVuIHNpbGVudCBtZW1vcnkKK2NvcnJ1cHRpb24gY2F1c2VkIGJ5IHRoZSBiYWQgRE1BLiAgQSBudW1iZXIgb2YgZGV2aWNlIGRyaXZlcgorYnVncyBoYXZlIGJlZW4gZm91bmQgYW5kIGZpeGVkIGluIHRoaXMgd2F5IG92ZXIgdGhlIHBhc3QgZmV3Cit5ZWFycy4gIE90aGVyIHBvc3NpYmxlIGNhdXNlcyBvZiBFRUggZXJyb3JzIGluY2x1ZGUgZGF0YSBvcgorYWRkcmVzcyBsaW5lIHBhcml0eSBlcnJvcnMgKGZvciBleGFtcGxlLCBkdWUgdG8gcG9vciBlbGVjdHJpY2FsCitjb25uZWN0aXZpdHkgZHVlIHRvIGEgcG9vcmx5IHNlYXRlZCBjYXJkKSwgYW5kIFBDSS1YIHNwbGl0LWNvbXBsZXRpb24KK2Vycm9ycyAoZHVlIHRvIHNvZnR3YXJlLCBkZXZpY2UgZmlybXdhcmUsIG9yIGRldmljZSBQQ0kgaGFyZHdhcmUgYnVncykuCitUaGUgdmFzdCBtYWpvcml0eSBvZiAidHJ1ZSBoYXJkd2FyZSBmYWlsdXJlcyIgY2FuIGJlIGN1cmVkIGJ5CitwaHlzaWNhbGx5IHJlbW92aW5nIGFuZCByZS1zZWF0aW5nIHRoZSBQQ0kgY2FyZC4KKworCitEZXRlY3Rpb24gYW5kIFJlY292ZXJ5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJbiB0aGUgZm9sbG93aW5nIGRpc2N1c3Npb24sIGEgZ2VuZXJpYyBvdmVydmlldyBvZiBob3cgdG8gZGV0ZWN0CithbmQgcmVjb3ZlciBmcm9tIEVFSCBlcnJvcnMgd2lsbCBiZSBwcmVzZW50ZWQuIFRoaXMgaXMgZm9sbG93ZWQKK2J5IGFuIG92ZXJ2aWV3IG9mIGhvdyB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgTGludXgKK2tlcm5lbCBkb2VzIGl0LiAgVGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBpcyBzdWJqZWN0IHRvIGNoYW5nZSwKK2FuZCBzb21lIG9mIHRoZSBmaW5lciBwb2ludHMgYXJlIHN0aWxsIGJlaW5nIGRlYmF0ZWQuICBUaGVzZQorbWF5IGluIHR1cm4gYmUgc3dheWVkIGlmIG9yIHdoZW4gb3RoZXIgYXJjaGl0ZWN0dXJlcyBpbXBsZW1lbnQKK3NpbWlsYXIgZnVuY3Rpb25hbGl0eS4KKworV2hlbiBhIFBDSSBIb3N0IEJyaWRnZSAoUEhCLCB0aGUgYnVzIGNvbnRyb2xsZXIgY29ubmVjdGluZyB0aGUKK1BDSSBidXMgdG8gdGhlIHN5c3RlbSBDUFUgZWxlY3Ryb25pY3MgY29tcGxleCkgZGV0ZWN0cyBhIFBDSSBlcnJvcgorY29uZGl0aW9uLCBpdCB3aWxsICJpc29sYXRlIiB0aGUgYWZmZWN0ZWQgUENJIGNhcmQuICBJc29sYXRpb24KK3dpbGwgYmxvY2sgYWxsIHdyaXRlcyAoZWl0aGVyIHRvIHRoZSBjYXJkIGZyb20gdGhlIHN5c3RlbSwgb3IKK2Zyb20gdGhlIGNhcmQgdG8gdGhlIHN5c3RlbSksIGFuZCBpdCB3aWxsIGNhdXNlIGFsbCByZWFkcyB0bworcmV0dXJuIGFsbC1mZidzICgweGZmLCAweGZmZmYsIDB4ZmZmZmZmZmYgZm9yIDgvMTYvMzItYml0IHJlYWRzKS4KK1RoaXMgdmFsdWUgd2FzIGNob3NlbiBiZWNhdXNlIGl0IGlzIHRoZSBzYW1lIHZhbHVlIHlvdSB3b3VsZAorZ2V0IGlmIHRoZSBkZXZpY2Ugd2FzIHBoeXNpY2FsbHkgdW5wbHVnZ2VkIGZyb20gdGhlIHNsb3QuCitUaGlzIGluY2x1ZGVzIGFjY2VzcyB0byBQQ0kgbWVtb3J5LCBJL08gc3BhY2UsIGFuZCBQQ0kgY29uZmlnCitzcGFjZS4gIEludGVycnVwdHM7IGhvd2V2ZXIsIHdpbGwgY29udGludWVkIHRvIGJlIGRlbGl2ZXJlZC4KKworRGV0ZWN0aW9uIGFuZCByZWNvdmVyeSBhcmUgcGVyZm9ybWVkIHdpdGggdGhlIGFpZCBvZiBwcGM2NAorZmlybXdhcmUuICBUaGUgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlcyBpbiB0aGUgTGludXgga2VybmVsCitpbnRvIHRoZSBmaXJtd2FyZSBhcmUgcmVmZXJyZWQgdG8gYXMgUlRBUyAoUnVuLVRpbWUgQWJzdHJhY3Rpb24KK1NlcnZpY2VzKS4gIFRoZSBMaW51eCBrZXJuZWwgZG9lcyBub3QgKHNob3VsZCBub3QpIGFjY2VzcwordGhlIEVFSCBmdW5jdGlvbiBpbiB0aGUgUENJIGNoaXBzZXRzIGRpcmVjdGx5LCBwcmltYXJpbHkgYmVjYXVzZQordGhlcmUgYXJlIGEgbnVtYmVyIG9mIGRpZmZlcmVudCBjaGlwc2V0cyBvdXQgdGhlcmUsIGVhY2ggd2l0aAorZGlmZmVyZW50IGludGVyZmFjZXMgYW5kIHF1aXJrcy4gVGhlIGZpcm13YXJlIHByb3ZpZGVzIGEKK3VuaWZvcm0gYWJzdHJhY3Rpb24gbGF5ZXIgdGhhdCB3aWxsIHdvcmsgd2l0aCBhbGwgcFNlcmllcworYW5kIGlTZXJpZXMgaGFyZHdhcmUgKGFuZCBiZSBmb3J3YXJkcy1jb21wYXRpYmxlKS4KKworSWYgdGhlIE9TIG9yIGRldmljZSBkcml2ZXIgc3VzcGVjdHMgdGhhdCBhIFBDSSBzbG90IGhhcyBiZWVuCitFRUgtaXNvbGF0ZWQsIHRoZXJlIGlzIGEgZmlybXdhcmUgY2FsbCBpdCBjYW4gbWFrZSB0byBkZXRlcm1pbmUgaWYKK3RoaXMgaXMgdGhlIGNhc2UuIElmIHNvLCB0aGVuIHRoZSBkZXZpY2UgZHJpdmVyIHNob3VsZCBwdXQgaXRzZWxmCitpbnRvIGEgY29uc2lzdGVudCBzdGF0ZSAoZ2l2ZW4gdGhhdCBpdCB3b24ndCBiZSBhYmxlIHRvIGNvbXBsZXRlIGFueQorcGVuZGluZyB3b3JrKSBhbmQgc3RhcnQgcmVjb3Zlcnkgb2YgdGhlIGNhcmQuICBSZWNvdmVyeSBub3JtYWxseQord291bGQgY29uc2lzdCBvZiByZXNldHRpbmcgdGhlIFBDSSBkZXZpY2UgKGhvbGRpbmcgdGhlIFBDSSAjUlNUCitsaW5lIGhpZ2ggZm9yIHR3byBzZWNvbmRzKSwgZm9sbG93ZWQgYnkgc2V0dGluZyB1cCB0aGUgZGV2aWNlCitjb25maWcgc3BhY2UgKHRoZSBiYXNlIGFkZHJlc3MgcmVnaXN0ZXJzIChCQVIncyksIGxhdGVuY3kgdGltZXIsCitjYWNoZSBsaW5lIHNpemUsIGludGVycnVwdCBsaW5lLCBhbmQgc28gb24pLiAgVGhpcyBpcyBmb2xsb3dlZCBieSBhCityZWluaXRpYWxpemF0aW9uIG9mIHRoZSBkZXZpY2UgZHJpdmVyLiAgSW4gYSB3b3JzdC1jYXNlIHNjZW5hcmlvLAordGhlIHBvd2VyIHRvIHRoZSBjYXJkIGNhbiBiZSB0b2dnbGVkLCBhdCBsZWFzdCBvbiBob3QtcGx1Zy1jYXBhYmxlCitzbG90cy4gIEluIHByaW5jaXBsZSwgbGF5ZXJzIGZhciBhYm92ZSB0aGUgZGV2aWNlIGRyaXZlciBwcm9iYWJseQorZG8gbm90IG5lZWQgdG8ga25vdyB0aGF0IHRoZSBQQ0kgY2FyZCBoYXMgYmVlbiAicmVib290ZWQiIGluIHRoaXMKK3dheTsgaWRlYWxseSwgdGhlcmUgc2hvdWxkIGJlIGF0IG1vc3QgYSBwYXVzZSBpbiBFdGhlcm5ldC9kaXNrL1VTQgorSS9PIHdoaWxlIHRoZSBjYXJkIGlzIGJlaW5nIHJlc2V0LgorCitJZiB0aGUgY2FyZCBjYW5ub3QgYmUgcmVjb3ZlcmVkIGFmdGVyIHRocmVlIG9yIGZvdXIgcmVzZXRzLCB0aGUKK2tlcm5lbC9kZXZpY2UgZHJpdmVyIHNob3VsZCBhc3N1bWUgdGhlIHdvcnN0LWNhc2Ugc2NlbmFyaW8sIHRoYXQgdGhlCitjYXJkIGhhcyBkaWVkIGNvbXBsZXRlbHksIGFuZCByZXBvcnQgdGhpcyBlcnJvciB0byB0aGUgc3lzYWRtaW4uCitJbiBhZGRpdGlvbiwgZXJyb3IgbWVzc2FnZXMgYXJlIHJlcG9ydGVkIHRocm91Z2ggUlRBUyBhbmQgYWxzbyB0aHJvdWdoCitzeXNsb2dkICgvdmFyL2xvZy9tZXNzYWdlcykgdG8gYWxlcnQgdGhlIHN5c2FkbWluIG9mIFBDSSByZXNldHMuCitUaGUgY29ycmVjdCB3YXkgdG8gZGVhbCB3aXRoIGZhaWxlZCBhZGFwdGVycyBpcyB0byB1c2UgdGhlIHN0YW5kYXJkCitQQ0kgaG90cGx1ZyB0b29scyB0byByZW1vdmUgYW5kIHJlcGxhY2UgdGhlIGRlYWQgY2FyZC4KKworCitDdXJyZW50IFBQQzY0IExpbnV4IEVFSCBJbXBsZW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0F0IHRoaXMgdGltZSwgYSBnZW5lcmljIEVFSCByZWNvdmVyeSBtZWNoYW5pc20gaGFzIGJlZW4gaW1wbGVtZW50ZWQsCitzbyB0aGF0IGluZGl2aWR1YWwgZGV2aWNlIGRyaXZlcnMgZG8gbm90IG5lZWQgdG8gYmUgbW9kaWZpZWQgdG8gc3VwcG9ydAorRUVIIHJlY292ZXJ5LiAgVGhpcyBnZW5lcmljIG1lY2hhbmlzbSBwaWdneS1iYWNrcyBvbiB0aGUgUENJIGhvdHBsdWcKK2luZnJhc3RydWN0dXJlLCAgYW5kIHBlcmNvbGF0ZXMgZXZlbnRzIHVwIHRocm91Z2ggdGhlIHVzZXJzcGFjZS91ZGV2CitpbmZyYXN0cnVjdHVyZS4gIEZvbGxvd2luZyBpcyBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIGhvdyB0aGlzIGlzCithY2NvbXBsaXNoZWQuCisKK0VFSCBtdXN0IGJlIGVuYWJsZWQgaW4gdGhlIFBIQidzIHZlcnkgZWFybHkgZHVyaW5nIHRoZSBib290IHByb2Nlc3MsCithbmQgaWYgYSBQQ0kgc2xvdCBpcyBob3QtcGx1Z2dlZC4gVGhlIGZvcm1lciBpcyBwZXJmb3JtZWQgYnkKK2VlaF9pbml0KCkgaW4gYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2VlaC5jLCBhbmQgdGhlIGxhdGVyIGJ5Citkcml2ZXJzL3BjaS9ob3RwbHVnL3BTZXJpZXNfcGNpLmMgY2FsbGluZyBpbiB0byB0aGUgZWVoLmMgY29kZS4KK0VFSCBtdXN0IGJlIGVuYWJsZWQgYmVmb3JlIGEgUENJIHNjYW4gb2YgdGhlIGRldmljZSBjYW4gcHJvY2VlZC4KK0N1cnJlbnQgUG93ZXI1IGhhcmR3YXJlIHdpbGwgbm90IHdvcmsgdW5sZXNzIEVFSCBpcyBlbmFibGVkOworYWx0aG91Z2ggb2xkZXIgUG93ZXI0IGNhbiBydW4gd2l0aCBpdCBkaXNhYmxlZC4gIEVmZmVjdGl2ZWx5LAorRUVIIGNhbiBubyBsb25nZXIgYmUgdHVybmVkIG9mZi4gIFBDSSBkZXZpY2VzICptdXN0KiBiZQorcmVnaXN0ZXJlZCB3aXRoIHRoZSBFRUggY29kZTsgdGhlIEVFSCBjb2RlIG5lZWRzIHRvIGtub3cgYWJvdXQKK3RoZSBJL08gYWRkcmVzcyByYW5nZXMgb2YgdGhlIFBDSSBkZXZpY2UgaW4gb3JkZXIgdG8gZGV0ZWN0IGFuCitlcnJvci4gIEdpdmVuIGFuIGFyYml0cmFyeSBhZGRyZXNzLCB0aGUgcm91dGluZQorcGNpX2dldF9kZXZpY2VfYnlfYWRkcigpIHdpbGwgZmluZCB0aGUgcGNpIGRldmljZSBhc3NvY2lhdGVkCit3aXRoIHRoYXQgYWRkcmVzcyAoaWYgYW55KS4KKworVGhlIGRlZmF1bHQgYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2lvLmggbWFjcm9zIHJlYWRiKCksIGluYigpLCBpbnNiKCksCitldGMuIGluY2x1ZGUgYSBjaGVjayB0byBzZWUgaWYgdGhlIGkvbyByZWFkIHJldHVybmVkIGFsbC0weGZmJ3MuCitJZiBzbywgdGhlc2UgbWFrZSBhIGNhbGwgdG8gZWVoX2RuX2NoZWNrX2ZhaWx1cmUoKSwgd2hpY2ggaW4gdHVybgorYXNrcyB0aGUgZmlybXdhcmUgaWYgdGhlIGFsbC1mZidzIHZhbHVlIGlzIHRoZSBzaWduIG9mIGEgdHJ1ZSBFRUgKK2Vycm9yLiAgSWYgaXQgaXMgbm90LCBwcm9jZXNzaW5nIGNvbnRpbnVlcyBhcyBub3JtYWwuICBUaGUgZ3JhbmQKK3RvdGFsIG51bWJlciBvZiB0aGVzZSBmYWxzZSBhbGFybXMgb3IgImZhbHNlIHBvc2l0aXZlcyIgY2FuIGJlCitzZWVuIGluIC9wcm9jL3BwYzY0L2VlaCAoc3ViamVjdCB0byBjaGFuZ2UpLiAgTm9ybWFsbHksIGFsbW9zdAorYWxsIG9mIHRoZXNlIG9jY3VyIGR1cmluZyBib290LCB3aGVuIHRoZSBQQ0kgYnVzIGlzIHNjYW5uZWQsIHdoZXJlCithIGxhcmdlIG51bWJlciBvZiAweGZmIHJlYWRzIGFyZSBwYXJ0IG9mIHRoZSBidXMgc2NhbiBwcm9jZWR1cmUuCisKK0lmIGEgZnJvemVuIHNsb3QgaXMgZGV0ZWN0ZWQsIGNvZGUgaW4gCithcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvZWVoLmMgd2lsbCBwcmludCBhIHN0YWNrIHRyYWNlIHRvIAorc3lzbG9nICgvdmFyL2xvZy9tZXNzYWdlcykuICBUaGlzIHN0YWNrIHRyYWNlIGhhcyBwcm92ZW4gdG8gYmUgdmVyeSAKK3VzZWZ1bCB0byBkZXZpY2UtZHJpdmVyIGF1dGhvcnMgZm9yIGZpbmRpbmcgb3V0IGF0IHdoYXQgcG9pbnQgdGhlIEVFSCAKK2Vycm9yIHdhcyBkZXRlY3RlZCwgYXMgdGhlIGVycm9yIGl0c2VsZiB1c3VhbGx5IG9jY3VycyBzbGlnaHRseSAKK2JlZm9yZWhhbmQuCisKK05leHQsIGl0IHVzZXMgdGhlIExpbnV4IGtlcm5lbCBub3RpZmllciBjaGFpbi93b3JrIHF1ZXVlIG1lY2hhbmlzbSB0bworYWxsb3cgYW55IGludGVyZXN0ZWQgcGFydGllcyB0byBmaW5kIG91dCBhYm91dCB0aGUgZmFpbHVyZS4gIERldmljZQorZHJpdmVycywgb3Igb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbCwgY2FuIHVzZQorZWVoX3JlZ2lzdGVyX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqKSB0byBmaW5kIG91dCBhYm91dCBFRUgKK2V2ZW50cy4gIFRoZSBldmVudCB3aWxsIGluY2x1ZGUgYSBwb2ludGVyIHRvIHRoZSBwY2kgZGV2aWNlLCB0aGUKK2RldmljZSBub2RlIGFuZCBzb21lIHN0YXRlIGluZm8uICBSZWNlaXZlcnMgb2YgdGhlIGV2ZW50IGNhbiAiZG8gYXMKK3RoZXkgd2lzaCI7IHRoZSBkZWZhdWx0IGhhbmRsZXIgd2lsbCBiZSBkZXNjcmliZWQgZnVydGhlciBpbiB0aGlzCitzZWN0aW9uLgorCitUbyBhc3Npc3QgaW4gdGhlIHJlY292ZXJ5IG9mIHRoZSBkZXZpY2UsIGVlaC5jIGV4cG9ydHMgdGhlCitmb2xsb3dpbmcgZnVuY3Rpb25zOgorCitydGFzX3NldF9zbG90X3Jlc2V0KCkgLS0gYXNzZXJ0IHRoZSAgUENJICNSU1QgbGluZSBmb3IgMS84dGggb2YgYSBzZWNvbmQKK3J0YXNfY29uZmlndXJlX2JyaWRnZSgpIC0tIGFzayBmaXJtd2FyZSB0byBjb25maWd1cmUgYW55IFBDSSBicmlkZ2VzCisgICBsb2NhdGVkIHRvcG9sb2dpY2FsbHkgdW5kZXIgdGhlIHBjaSBzbG90LgorZWVoX3NhdmVfYmFycygpIGFuZCBlZWhfcmVzdG9yZV9iYXJzKCk6IHNhdmUgYW5kIHJlc3RvcmUgdGhlIFBDSQorICAgY29uZmlnLXNwYWNlIGluZm8gZm9yIGEgZGV2aWNlIGFuZCBhbnkgZGV2aWNlcyB1bmRlciBpdC4KKworCitBIGhhbmRsZXIgZm9yIHRoZSBFRUggbm90aWZpZXJfYmxvY2sgZXZlbnRzIGlzIGltcGxlbWVudGVkIGluCitkcml2ZXJzL3BjaS9ob3RwbHVnL3BTZXJpZXNfcGNpLmMsIGNhbGxlZCBoYW5kbGVfZWVoX2V2ZW50cygpLgorSXQgc2F2ZXMgdGhlIGRldmljZSBCQVIncyBhbmQgdGhlbiBjYWxscyBycGFwaHBfdW5jb25maWdfcGNpX2FkYXB0ZXIoKS4KK1RoaXMgbGFzdCBjYWxsIGNhdXNlcyB0aGUgZGV2aWNlIGRyaXZlciBmb3IgdGhlIGNhcmQgdG8gYmUgc3RvcHBlZCwKK3doaWNoIGNhdXNlcyB1ZXZlbnRzIHRvIGdvIG91dCB0byB1c2VyIHNwYWNlLiBUaGlzIHRyaWdnZXJzCit1c2VyLXNwYWNlIHNjcmlwdHMgdGhhdCBtaWdodCBpc3N1ZSBjb21tYW5kcyBzdWNoIGFzICJpZmRvd24gZXRoMCIKK2ZvciBldGhlcm5ldCBjYXJkcywgYW5kIHNvIG9uLiAgVGhpcyBoYW5kbGVyIHRoZW4gc2xlZXBzIGZvciA1IHNlY29uZHMsCitob3BpbmcgdG8gZ2l2ZSB0aGUgdXNlci1zcGFjZSBzY3JpcHRzIGVub3VnaCB0aW1lIHRvIGNvbXBsZXRlLgorSXQgdGhlbiByZXNldHMgdGhlIFBDSSBjYXJkLCByZWNvbmZpZ3VyZXMgdGhlIGRldmljZSBCQVIncywgYW5kCithbnkgYnJpZGdlcyB1bmRlcm5lYXRoLiBJdCB0aGVuIGNhbGxzIHJwYXBocF9lbmFibGVfcGNpX3Nsb3QoKSwKK3doaWNoIHJlc3RhcnRzIHRoZSBkZXZpY2UgZHJpdmVyIGFuZCB0cmlnZ2VycyBtb3JlIHVzZXItc3BhY2UKK2V2ZW50cyAoZm9yIGV4YW1wbGUsIGNhbGxpbmcgImlmdXAgZXRoMCIgZm9yIGV0aGVybmV0IGNhcmRzKS4KKworCitEZXZpY2UgU2h1dGRvd24gYW5kIFVzZXItU3BhY2UgRXZlbnRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGlzIHNlY3Rpb24gZG9jdW1lbnRzIHdoYXQgaGFwcGVucyB3aGVuIGEgcGNpIHNsb3QgaXMgdW5jb25maWd1cmVkLAorZm9jdXNpbmcgb24gaG93IHRoZSBkZXZpY2UgZHJpdmVyIGdldHMgc2h1dCBkb3duLCBhbmQgb24gaG93IHRoZQorZXZlbnRzIGdldCBkZWxpdmVyZWQgdG8gdXNlci1zcGFjZSBzY3JpcHRzLgorCitGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBzZXF1ZW5jZSBvZiBldmVudHMgdGhhdCBjYXVzZSBhIGRldmljZSBkcml2ZXIKK2Nsb3NlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBkdXJpbmcgdGhlIGZpcnN0IHBoYXNlIG9mIGFuIEVFSCByZXNldC4KK1RoZSBmb2xsb3dpbmcgc2VxdWVuY2UgaXMgYW4gZXhhbXBsZSBvZiB0aGUgcGNuZXQzMiBkZXZpY2UgZHJpdmVyLgorCisgICAgcnBhX3BocF91bmNvbmZpZ19wY2lfYWRhcHRlciAoc3RydWN0IHNsb3QgKikgIC8vIGluIHJwYXBocF9wY2kuYworICAgIHsKKyAgICAgIGNhbGxzCisgICAgICBwY2lfcmVtb3ZlX2J1c19kZXZpY2UgKHN0cnVjdCBwY2lfZGV2ICopIC8vIGluIC9kcml2ZXJzL3BjaS9yZW1vdmUuYworICAgICAgeworICAgICAgICBjYWxscworICAgICAgICBwY2lfZGVzdHJveV9kZXYgKHN0cnVjdCBwY2lfZGV2ICopCisgICAgICAgIHsKKyAgICAgICAgICBjYWxscworICAgICAgICAgIGRldmljZV91bnJlZ2lzdGVyICgmZGV2LT5kZXYpIC8vIGluIC9kcml2ZXJzL2Jhc2UvY29yZS5jCisgICAgICAgICAgeworICAgICAgICAgICAgY2FsbHMKKyAgICAgICAgICAgIGRldmljZV9kZWwgKHN0cnVjdCBkZXZpY2UgKikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FsbHMKKyAgICAgICAgICAgICAgYnVzX3JlbW92ZV9kZXZpY2UoKSAvLyBpbiAvZHJpdmVycy9iYXNlL2J1cy5jCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYWxscworICAgICAgICAgICAgICAgIGRldmljZV9yZWxlYXNlX2RyaXZlcigpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgY2FsbHMKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2VfZHJpdmVyLT5yZW1vdmUoKSB3aGljaCBpcyBqdXN0CisgICAgICAgICAgICAgICAgICBwY2lfZGV2aWNlX3JlbW92ZSgpICAvLyBpbiAvZHJpdmVycy9wY2kvcGNpX2RyaXZlci5jCisgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxzCisgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwY2lfZHJpdmVyLT5yZW1vdmUoKSB3aGljaCBpcyBqdXN0CisgICAgICAgICAgICAgICAgICAgIHBjbmV0MzJfcmVtb3ZlX29uZSgpIC8vIGluIC9kcml2ZXJzL25ldC9wY25ldDMyLmMKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgIGNhbGxzCisgICAgICAgICAgICAgICAgICAgICAgdW5yZWdpc3Rlcl9uZXRkZXYoKSAvLyBpbiAvbmV0L2NvcmUvZGV2LmMKKyAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYWxscworICAgICAgICAgICAgICAgICAgICAgICAgZGV2X2Nsb3NlKCkgIC8vIGluIC9uZXQvY29yZS9kZXYuYworICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbHMgZGV2LT5zdG9wKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBqdXN0IHBjbmV0MzJfY2xvc2UoKSAvLyBpbiBwY25ldDMyLmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggZG9lcyB3aGF0IHlvdSB3YW50ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gc3RvcCB0aGUgZGV2aWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgd2hpY2gKKyAgICAgICAgICAgICAgICAgICBmcmVlcyBwY25ldDMyIGRldmljZSBkcml2ZXIgbWVtb3J5CisgICAgICAgICAgICAgICAgfQorICAgICB9fX19fX0KKworCisgICAgaW4gZHJpdmVycy9wY2kvcGNpX2RyaXZlci5jLAorICAgIHN0cnVjdCBkZXZpY2VfZHJpdmVyLT5yZW1vdmUoKSBpcyBqdXN0IHBjaV9kZXZpY2VfcmVtb3ZlKCkKKyAgICB3aGljaCBjYWxscyBzdHJ1Y3QgcGNpX2RyaXZlci0+cmVtb3ZlKCkgd2hpY2ggaXMgcGNuZXQzMl9yZW1vdmVfb25lKCkKKyAgICB3aGljaCBjYWxscyB1bnJlZ2lzdGVyX25ldGRldigpICAoaW4gbmV0L2NvcmUvZGV2LmMpCisgICAgd2hpY2ggY2FsbHMgZGV2X2Nsb3NlKCkgIChpbiBuZXQvY29yZS9kZXYuYykKKyAgICB3aGljaCBjYWxscyBkZXYtPnN0b3AoKSB3aGljaCBpcyBwY25ldDMyX2Nsb3NlKCkKKyAgICB3aGljaCB0aGVuIGRvZXMgdGhlIGFwcHJvcHJpYXRlIHNodXRkb3duLgorCistLS0KK0ZvbGxvd2luZyBpcyB0aGUgYW5hbG9nb3VzIHN0YWNrIHRyYWNlIGZvciBldmVudHMgc2VudCB0byB1c2VyLXNwYWNlCit3aGVuIHRoZSBwY2kgZGV2aWNlIGlzIHVuY29uZmlndXJlZC4KKworcnBhX3BocF91bmNvbmZpZ19wY2lfYWRhcHRlcigpIHsgICAgICAgICAgICAgLy8gaW4gcnBhcGhwX3BjaS5jCisgIGNhbGxzCisgIHBjaV9yZW1vdmVfYnVzX2RldmljZSAoc3RydWN0IHBjaV9kZXYgKikgeyAvLyBpbiAvZHJpdmVycy9wY2kvcmVtb3ZlLmMKKyAgICBjYWxscworICAgIHBjaV9kZXN0cm95X2RldiAoc3RydWN0IHBjaV9kZXYgKikgeworICAgICAgY2FsbHMKKyAgICAgIGRldmljZV91bnJlZ2lzdGVyICgmZGV2LT5kZXYpIHsgICAgICAgIC8vIGluIC9kcml2ZXJzL2Jhc2UvY29yZS5jCisgICAgICAgIGNhbGxzCisgICAgICAgIGRldmljZV9kZWwoc3RydWN0IGRldmljZSAqIGRldikgeyAgICAvLyBpbiAvZHJpdmVycy9iYXNlL2NvcmUuYworICAgICAgICAgIGNhbGxzCisgICAgICAgICAga29iamVjdF9kZWwoKSB7ICAgICAgICAgICAgICAgICAgICAvL2luIC9saWJzL2tvYmplY3QuYworICAgICAgICAgICAgY2FsbHMKKyAgICAgICAgICAgIGtvYmplY3RfdWV2ZW50KCkgeyAgICAgICAgICAgICAgIC8vIGluIC9saWJzL2tvYmplY3QuYworICAgICAgICAgICAgICBjYWxscworICAgICAgICAgICAgICBrc2V0X3VldmVudCgpIHsgICAgICAgICAgICAgICAgLy8gaW4gL2xpYi9rb2JqZWN0LmMKKyAgICAgICAgICAgICAgICBjYWxscworICAgICAgICAgICAgICAgIGtzZXQtPnVldmVudF9vcHMtPnVldmVudCgpICAgLy8gd2hpY2ggaXMgcmVhbGx5IGp1c3QKKyAgICAgICAgICAgICAgICBhIGNhbGwgdG8KKyAgICAgICAgICAgICAgICBkZXZfdWV2ZW50KCkgeyAgICAgICAgICAgICAgIC8vIGluIC9kcml2ZXJzL2Jhc2UvY29yZS5jCisgICAgICAgICAgICAgICAgICBjYWxscworICAgICAgICAgICAgICAgICAgZGV2LT5idXMtPnVldmVudCgpIHdoaWNoIGlzIHJlYWxseSBqdXN0IGEgY2FsbCB0bworICAgICAgICAgICAgICAgICAgcGNpX3VldmVudCAoKSB7ICAgICAgICAgICAgLy8gaW4gZHJpdmVycy9wY2kvaG90cGx1Zy5jCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIHByaW50cyBkZXZpY2UgbmFtZSwgZXRjLi4uLgorICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICB0aGVuIGtvYmplY3RfdWV2ZW50KCkgc2VuZHMgYSBuZXRsaW5rIHVldmVudCB0byB1c2Vyc3BhY2UKKyAgICAgICAgICAgICAgIC0tPiB1c2Vyc3BhY2UgdWV2ZW50CisgICAgICAgICAgICAgICAoZHVyaW5nIGVhcmx5IGJvb3QsIG5vYm9keSBsaXN0ZW5zIHRvIG5ldGxpbmsgZXZlbnRzIGFuZAorICAgICAgICAgICAgICAga29iamVjdF91ZXZlbnQoKSBleGVjdXRlcyB1ZXZlbnRfaGVscGVyW10sIHdoaWNoIHJ1bnMgdGhlCisgICAgICAgICAgICAgICBldmVudCBwcm9jZXNzIC9zYmluL2hvdHBsdWcpCisgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIGtvYmplY3RfZGVsKCkgdGhlbiBjYWxscyBzeXNmc19yZW1vdmVfZGlyKCksIHdoaWNoIHdvdWxkCisgICAgICAgICB0cmlnZ2VyIGFueSB1c2VyLXNwYWNlIGRhZW1vbiB0aGF0IHdhcyB3YXRjaGluZyAvc3lzZnMsCisgICAgICAgICBhbmQgbm90aWNlIHRoZSBkZWxldGUgZXZlbnQuCisKKworUHJvJ3MgYW5kIENvbidzIG9mIHRoZSBDdXJyZW50IERlc2lnbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlcmUgYXJlIHNldmVyYWwgaXNzdWVzIHdpdGggdGhlIGN1cnJlbnQgRUVIIHNvZnR3YXJlIHJlY292ZXJ5IGRlc2lnbiwKK3doaWNoIG1heSBiZSBhZGRyZXNzZWQgaW4gZnV0dXJlIHJldmlzaW9ucy4gIEJ1dCBmaXJzdCwgbm90ZSB0aGF0IHRoZQorYmlnIHBsdXMgb2YgdGhlIGN1cnJlbnQgZGVzaWduIGlzIHRoYXQgbm8gY2hhbmdlcyBuZWVkIHRvIGJlIG1hZGUgdG8KK2luZGl2aWR1YWwgZGV2aWNlIGRyaXZlcnMsIHNvIHRoYXQgdGhlIGN1cnJlbnQgZGVzaWduIHRocm93cyBhIHdpZGUgbmV0LgorVGhlIGJpZ2dlc3QgbmVnYXRpdmUgb2YgdGhlIGRlc2lnbiBpcyB0aGF0IGl0IHBvdGVudGlhbGx5IGRpc3R1cmJzCituZXR3b3JrIGRhZW1vbnMgYW5kIGZpbGUgc3lzdGVtcyB0aGF0IGRpZG4ndCBuZWVkIHRvIGJlIGRpc3R1cmJlZC4KKworLS0gQSBtaW5vciBjb21wbGFpbnQgaXMgdGhhdCByZXNldHRpbmcgdGhlIG5ldHdvcmsgY2FyZCBjYXVzZXMKKyAgIHVzZXItc3BhY2UgYmFjay10by1iYWNrIGlmZG93bi9pZnVwIGJ1cnBzIHRoYXQgcG90ZW50aWFsbHkgZGlzdHVyYgorICAgbmV0d29yayBkYWVtb25zLCB0aGF0IGRpZG4ndCBuZWVkIHRvIGV2ZW4ga25vdyB0aGF0IHRoZSBwY2kKKyAgIGNhcmQgd2FzIGJlaW5nIHJlYm9vdGVkLgorCistLSBBIG1vcmUgc2VyaW91cyBjb25jZXJuIGlzIHRoYXQgdGhlIHNhbWUgcmVzZXQsIGZvciBTQ1NJIGRldmljZXMsCisgICBjYXVzZXMgaGF2b2MgdG8gbW91bnRlZCBmaWxlIHN5c3RlbXMuICBTY3JpcHRzIGNhbm5vdCBwb3N0LWZhY3RvCisgICB1bm1vdW50IGEgZmlsZSBzeXN0ZW0gd2l0aG91dCBmbHVzaGluZyBwZW5kaW5nIGJ1ZmZlcnMsIGJ1dCB0aGlzCisgICBpcyBpbXBvc3NpYmxlLCBiZWNhdXNlIEkvTyBoYXMgYWxyZWFkeSBiZWVuIHN0b3BwZWQuICBUaHVzLAorICAgaWRlYWxseSwgdGhlIHJlc2V0IHNob3VsZCBoYXBwZW4gYXQgb3IgYmVsb3cgdGhlIGJsb2NrIGxheWVyLAorICAgc28gdGhhdCB0aGUgZmlsZSBzeXN0ZW1zIGFyZSBub3QgZGlzdHVyYmVkLgorCisgICBSZWlzZXJmcyBkb2VzIG5vdCB0b2xlcmF0ZSBlcnJvcnMgcmV0dXJuZWQgZnJvbSB0aGUgYmxvY2sgZGV2aWNlLgorICAgRXh0M2ZzIHNlZW1zIHRvIGJlIHRvbGVyYW50LCByZXRyeWluZyByZWFkcy93cml0ZXMgdW50aWwgaXQgZG9lcworICAgc3VjY2VlZC4gQm90aCBoYXZlIGJlZW4gb25seSBsaWdodGx5IHRlc3RlZCBpbiB0aGlzIHNjZW5hcmlvLgorCisgICBUaGUgU0NTSS1nZW5lcmljIHN1YnN5c3RlbSBhbHJlYWR5IGhhcyBidWlsdC1pbiBjb2RlIGZvciBwZXJmb3JtaW5nCisgICBTQ1NJIGRldmljZSByZXNldHMsIFNDU0kgYnVzIHJlc2V0cywgYW5kIFNDU0kgaG9zdC1idXMtYWRhcHRlcgorICAgKEhCQSkgcmVzZXRzLiAgVGhlc2UgYXJlIGNhc2NhZGVkIGludG8gYSBjaGFpbiBvZiBhdHRlbXB0ZWQKKyAgIHJlc2V0cyBpZiBhIFNDU0kgY29tbWFuZCBmYWlscy4gVGhlc2UgYXJlIGNvbXBsZXRlbHkgaGlkZGVuCisgICBmcm9tIHRoZSBibG9jayBsYXllci4gIEl0IHdvdWxkIGJlIHZlcnkgbmF0dXJhbCB0byBhZGQgYW4gRUVICisgICByZXNldCBpbnRvIHRoaXMgY2hhaW4gb2YgZXZlbnRzLgorCistLSBJZiBhIFNDU0kgZXJyb3Igb2NjdXJzIGZvciB0aGUgcm9vdCBkZXZpY2UsIGFsbCBpcyBsb3N0IHVubGVzcworICAgdGhlIHN5c2FkbWluIGhhZCB0aGUgZm9yZXNpZ2h0IHRvIHJ1biAvYmluLCAvc2JpbiwgL2V0YywgL3ZhcgorICAgYW5kIHNvIG9uLCBvdXQgb2YgcmFtZGlzay90bXBmcy4KKworCitDb25jbHVzaW9ucworLS0tLS0tLS0tLS0KK1RoZXJlJ3MgZm9yd2FyZCBwcm9ncmVzcyAuLi4KKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VycGMvZmlybXdhcmUtYXNzaXN0ZWQtZHVtcC50eHQgYi9Eb2N1bWVudGF0aW9uL3Bvd2VycGMvZmlybXdhcmUtYXNzaXN0ZWQtZHVtcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAwN2JjOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXJwYy9maXJtd2FyZS1hc3Npc3RlZC1kdW1wLnR4dApAQCAtMCwwICsxLDI3MCBAQAorCisgICAgICAgICAgICAgICAgICAgRmlybXdhcmUtQXNzaXN0ZWQgRHVtcAorICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICBKdWx5IDIwMTEKKworVGhlIGdvYWwgb2YgZmlybXdhcmUtYXNzaXN0ZWQgZHVtcCBpcyB0byBlbmFibGUgdGhlIGR1bXAgb2YKK2EgY3Jhc2hlZCBzeXN0ZW0sIGFuZCB0byBkbyBzbyBmcm9tIGEgZnVsbHktcmVzZXQgc3lzdGVtLCBhbmQKK3RvIG1pbmltaXplIHRoZSB0b3RhbCBlbGFwc2VkIHRpbWUgdW50aWwgdGhlIHN5c3RlbSBpcyBiYWNrCitpbiBwcm9kdWN0aW9uIHVzZS4KKworLSBGaXJtd2FyZSBhc3Npc3RlZCBkdW1wIChmYWR1bXApIGluZnJhc3RydWN0dXJlIGlzIGludGVuZGVkIHRvIHJlcGxhY2UKKyAgdGhlIGV4aXN0aW5nIHBoeXAgYXNzaXN0ZWQgZHVtcC4KKy0gRmFkdW1wIHVzZXMgdGhlIHNhbWUgZmlybXdhcmUgaW50ZXJmYWNlcyBhbmQgbWVtb3J5IHJlc2VydmF0aW9uIG1vZGVsCisgIGFzIHBoeXAgYXNzaXN0ZWQgZHVtcC4KKy0gVW5saWtlIHBoeXAgZHVtcCwgZmFkdW1wIGV4cG9ydHMgdGhlIG1lbW9yeSBkdW1wIHRocm91Z2ggL3Byb2Mvdm1jb3JlCisgIGluIHRoZSBFTEYgZm9ybWF0IGluIHRoZSBzYW1lIHdheSBhcyBrZHVtcC4gVGhpcyBoZWxwcyB1cyByZXVzZSB0aGUKKyAga2R1bXAgaW5mcmFzdHJ1Y3R1cmUgZm9yIGR1bXAgY2FwdHVyZSBhbmQgZmlsdGVyaW5nLgorLSBVbmxpa2UgcGh5cCBkdW1wLCB1c2Vyc3BhY2UgdG9vbCBkb2VzIG5vdCBuZWVkIHRvIHJlZmVyIGFueSBzeXNmcworICBpbnRlcmZhY2Ugd2hpbGUgcmVhZGluZyAvcHJvYy92bWNvcmUuCistIFVubGlrZSBwaHlwIGR1bXAsIGZhZHVtcCBhbGxvd3MgdXNlciB0byByZWxlYXNlIGFsbCB0aGUgbWVtb3J5IHJlc2VydmVkCisgIGZvciBkdW1wLCB3aXRoIGEgc2luZ2xlIG9wZXJhdGlvbiBvZiBlY2hvIDEgPiAvc3lzL2tlcm5lbC9mYWR1bXBfcmVsZWFzZV9tZW0uCistIE9uY2UgZW5hYmxlZCB0aHJvdWdoIGtlcm5lbCBib290IHBhcmFtZXRlciwgZmFkdW1wIGNhbiBiZQorICBzdGFydGVkL3N0b3BwZWQgdGhyb3VnaCAvc3lzL2tlcm5lbC9mYWR1bXBfcmVnaXN0ZXJlZCBpbnRlcmZhY2UgKHNlZQorICBzeXNmcyBmaWxlcyBzZWN0aW9uIGJlbG93KSBhbmQgY2FuIGJlIGVhc2lseSBpbnRlZ3JhdGVkIHdpdGgga2R1bXAKKyAgc2VydmljZSBzdGFydC9zdG9wIGluaXQgc2NyaXB0cy4KKworQ29tcGFyaW5nIHdpdGgga2R1bXAgb3Igb3RoZXIgc3RyYXRlZ2llcywgZmlybXdhcmUtYXNzaXN0ZWQKK2R1bXAgb2ZmZXJzIHNldmVyYWwgc3Ryb25nLCBwcmFjdGljYWwgYWR2YW50YWdlczoKKworLS0gVW5saWtlIGtkdW1wLCB0aGUgc3lzdGVtIGhhcyBiZWVuIHJlc2V0LCBhbmQgbG9hZGVkCisgICB3aXRoIGEgZnJlc2ggY29weSBvZiB0aGUga2VybmVsLiAgSW4gcGFydGljdWxhciwKKyAgIFBDSSBhbmQgSS9PIGRldmljZXMgaGF2ZSBiZWVuIHJlaW5pdGlhbGl6ZWQgYW5kIGFyZQorICAgaW4gYSBjbGVhbiwgY29uc2lzdGVudCBzdGF0ZS4KKy0tIE9uY2UgdGhlIGR1bXAgaXMgY29waWVkIG91dCwgdGhlIG1lbW9yeSB0aGF0IGhlbGQgdGhlIGR1bXAKKyAgIGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZSB0byB0aGUgcnVubmluZyBrZXJuZWwuIEFuZCB0aGVyZWZvcmUsCisgICB1bmxpa2Uga2R1bXAsIGZhZHVtcCBkb2Vzbid0IG5lZWQgYSAybmQgcmVib290IHRvIGdldCBiYWNrCisgICB0aGUgc3lzdGVtIHRvIHRoZSBwcm9kdWN0aW9uIGNvbmZpZ3VyYXRpb24uCisKK1RoZSBhYm92ZSBjYW4gb25seSBiZSBhY2NvbXBsaXNoZWQgYnkgY29vcmRpbmF0aW9uIHdpdGgsCithbmQgYXNzaXN0YW5jZSBmcm9tIHRoZSBQb3dlciBmaXJtd2FyZS4gVGhlIHByb2NlZHVyZSBpcworYXMgZm9sbG93czoKKworLS0gVGhlIGZpcnN0IGtlcm5lbCByZWdpc3RlcnMgdGhlIHNlY3Rpb25zIG9mIG1lbW9yeSB3aXRoIHRoZQorICAgUG93ZXIgZmlybXdhcmUgZm9yIGR1bXAgcHJlc2VydmF0aW9uIGR1cmluZyBPUyBpbml0aWFsaXphdGlvbi4KKyAgIFRoZXNlIHJlZ2lzdGVyZWQgc2VjdGlvbnMgb2YgbWVtb3J5IGFyZSByZXNlcnZlZCBieSB0aGUgZmlyc3QKKyAgIGtlcm5lbCBkdXJpbmcgZWFybHkgYm9vdC4KKworLS0gV2hlbiBhIHN5c3RlbSBjcmFzaGVzLCB0aGUgUG93ZXIgZmlybXdhcmUgd2lsbCBzYXZlCisgICB0aGUgbG93IG1lbW9yeSAoYm9vdCBtZW1vcnkgb2Ygc2l6ZSBsYXJnZXIgb2YgNSUgb2Ygc3lzdGVtIFJBTQorICAgb3IgMjU2TUIpIG9mIFJBTSB0byB0aGUgcHJldmlvdXMgcmVnaXN0ZXJlZCByZWdpb24uIEl0IHdpbGwKKyAgIGFsc28gc2F2ZSBzeXN0ZW0gcmVnaXN0ZXJzLCBhbmQgaGFyZHdhcmUgUFRFJ3MuCisKKyAgIE5PVEU6IFRoZSB0ZXJtICdib290IG1lbW9yeScgbWVhbnMgc2l6ZSBvZiB0aGUgbG93IG1lbW9yeSBjaHVuaworICAgICAgICAgdGhhdCBpcyByZXF1aXJlZCBmb3IgYSBrZXJuZWwgdG8gYm9vdCBzdWNjZXNzZnVsbHkgd2hlbgorICAgICAgICAgYm9vdGVkIHdpdGggcmVzdHJpY3RlZCBtZW1vcnkuIEJ5IGRlZmF1bHQsIHRoZSBib290IG1lbW9yeQorICAgICAgICAgc2l6ZSB3aWxsIGJlIHRoZSBsYXJnZXIgb2YgNSUgb2Ygc3lzdGVtIFJBTSBvciAyNTZNQi4KKyAgICAgICAgIEFsdGVybmF0aXZlbHksIHVzZXIgY2FuIGFsc28gc3BlY2lmeSBib290IG1lbW9yeSBzaXplCisgICAgICAgICB0aHJvdWdoIGJvb3QgcGFyYW1ldGVyICdmYWR1bXBfcmVzZXJ2ZV9tZW09JyB3aGljaCB3aWxsCisgICAgICAgICBvdmVycmlkZSB0aGUgZGVmYXVsdCBjYWxjdWxhdGVkIHNpemUuIFVzZSB0aGlzIG9wdGlvbgorICAgICAgICAgaWYgZGVmYXVsdCBib290IG1lbW9yeSBzaXplIGlzIG5vdCBzdWZmaWNpZW50IGZvciBzZWNvbmQKKyAgICAgICAgIGtlcm5lbCB0byBib290IHN1Y2Nlc3NmdWxseS4KKworLS0gQWZ0ZXIgdGhlIGxvdyBtZW1vcnkgKGJvb3QgbWVtb3J5KSBhcmVhIGhhcyBiZWVuIHNhdmVkLCB0aGUKKyAgIGZpcm13YXJlIHdpbGwgcmVzZXQgUENJIGFuZCBvdGhlciBoYXJkd2FyZSBzdGF0ZS4gIEl0IHdpbGwKKyAgICpub3QqIGNsZWFyIHRoZSBSQU0uIEl0IHdpbGwgdGhlbiBsYXVuY2ggdGhlIGJvb3Rsb2FkZXIsIGFzCisgICBub3JtYWwuCisKKy0tIFRoZSBmcmVzaGx5IGJvb3RlZCBrZXJuZWwgd2lsbCBub3RpY2UgdGhhdCB0aGVyZSBpcyBhIG5ldworICAgbm9kZSAoaWJtLGR1bXAta2VybmVsKSBpbiB0aGUgZGV2aWNlIHRyZWUsIGluZGljYXRpbmcgdGhhdAorICAgdGhlcmUgaXMgY3Jhc2ggZGF0YSBhdmFpbGFibGUgZnJvbSBhIHByZXZpb3VzIGJvb3QuIER1cmluZworICAgdGhlIGVhcmx5IGJvb3QgT1Mgd2lsbCByZXNlcnZlIHJlc3Qgb2YgdGhlIG1lbW9yeSBhYm92ZQorICAgYm9vdCBtZW1vcnkgc2l6ZSBlZmZlY3RpdmVseSBib290aW5nIHdpdGggcmVzdHJpY3RlZCBtZW1vcnkKKyAgIHNpemUuIFRoaXMgd2lsbCBtYWtlIHN1cmUgdGhhdCB0aGUgc2Vjb25kIGtlcm5lbCB3aWxsIG5vdAorICAgdG91Y2ggYW55IG9mIHRoZSBkdW1wIG1lbW9yeSBhcmVhLgorCistLSBVc2VyLXNwYWNlIHRvb2xzIHdpbGwgcmVhZCAvcHJvYy92bWNvcmUgdG8gb2J0YWluIHRoZSBjb250ZW50cworICAgb2YgbWVtb3J5LCB3aGljaCBob2xkcyB0aGUgcHJldmlvdXMgY3Jhc2hlZCBrZXJuZWwgZHVtcCBpbiBFTEYKKyAgIGZvcm1hdC4gVGhlIHVzZXJzcGFjZSB0b29scyBtYXkgY29weSB0aGlzIGluZm8gdG8gZGlzaywgb3IKKyAgIG5ldHdvcmssIG5hcywgc2FuLCBpc2NzaSwgZXRjLiBhcyBkZXNpcmVkLgorCistLSBPbmNlIHRoZSB1c2Vyc3BhY2UgdG9vbCBpcyBkb25lIHNhdmluZyBkdW1wLCBpdCB3aWxsIGVjaG8KKyAgICcxJyB0byAvc3lzL2tlcm5lbC9mYWR1bXBfcmVsZWFzZV9tZW0gdG8gcmVsZWFzZSB0aGUgcmVzZXJ2ZWQKKyAgIG1lbW9yeSBiYWNrIHRvIGdlbmVyYWwgdXNlLCBleGNlcHQgdGhlIG1lbW9yeSByZXF1aXJlZCBmb3IKKyAgIG5leHQgZmlybXdhcmUtYXNzaXN0ZWQgZHVtcCByZWdpc3RyYXRpb24uCisKKyAgIGUuZy4KKyAgICAgIyBlY2hvIDEgPiAvc3lzL2tlcm5lbC9mYWR1bXBfcmVsZWFzZV9tZW0KKworUGxlYXNlIG5vdGUgdGhhdCB0aGUgZmlybXdhcmUtYXNzaXN0ZWQgZHVtcCBmZWF0dXJlCitpcyBvbmx5IGF2YWlsYWJsZSBvbiBQb3dlcjYgYW5kIGFib3ZlIHN5c3RlbXMgd2l0aCByZWNlbnQKK2Zpcm13YXJlIHZlcnNpb25zLgorCitJbXBsZW1lbnRhdGlvbiBkZXRhaWxzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEdXJpbmcgYm9vdCwgYSBjaGVjayBpcyBtYWRlIHRvIHNlZSBpZiBmaXJtd2FyZSBzdXBwb3J0cwordGhpcyBmZWF0dXJlIG9uIHRoYXQgcGFydGljdWxhciBtYWNoaW5lLiBJZiBpdCBkb2VzLCB0aGVuCit3ZSBjaGVjayB0byBzZWUgaWYgYW4gYWN0aXZlIGR1bXAgaXMgd2FpdGluZyBmb3IgdXMuIElmIHllcwordGhlbiBldmVyeXRoaW5nIGJ1dCBib290IG1lbW9yeSBzaXplIG9mIFJBTSBpcyByZXNlcnZlZCBkdXJpbmcKK2Vhcmx5IGJvb3QgKFNlZSBGaWcuIDIpLiBUaGlzIGFyZWEgaXMgcmVsZWFzZWQgb25jZSB3ZSBmaW5pc2gKK2NvbGxlY3RpbmcgdGhlIGR1bXAgZnJvbSB1c2VyIGxhbmQgc2NyaXB0cyAoZS5nLiBrZHVtcCBzY3JpcHRzKQordGhhdCBhcmUgcnVuLiBJZiB0aGVyZSBpcyBkdW1wIGRhdGEsIHRoZW4gdGhlCisvc3lzL2tlcm5lbC9mYWR1bXBfcmVsZWFzZV9tZW0gZmlsZSBpcyBjcmVhdGVkLCBhbmQgdGhlIHJlc2VydmVkCittZW1vcnkgaXMgaGVsZC4KKworSWYgdGhlcmUgaXMgbm8gd2FpdGluZyBkdW1wIGRhdGEsIHRoZW4gb25seSB0aGUgbWVtb3J5IHJlcXVpcmVkCit0byBob2xkIENQVSBzdGF0ZSwgSFBURSByZWdpb24sIGJvb3QgbWVtb3J5IGR1bXAgYW5kIGVsZmNvcmUKK2hlYWRlciwgaXMgcmVzZXJ2ZWQgYXQgdGhlIHRvcCBvZiBtZW1vcnkgKHNlZSBGaWcuIDEpLiBUaGlzIGFyZWEKK2lzICpub3QqIHJlbGVhc2VkOiB0aGlzIHJlZ2lvbiB3aWxsIGJlIGtlcHQgcGVybWFuZW50bHkgcmVzZXJ2ZWQsCitzbyB0aGF0IGl0IGNhbiBhY3QgYXMgYSByZWNlcHRhY2xlIGZvciBhIGNvcHkgb2YgdGhlIGJvb3QgbWVtb3J5Citjb250ZW50IGluIGFkZGl0aW9uIHRvIENQVSBzdGF0ZSBhbmQgSFBURSByZWdpb24sIGluIHRoZSBjYXNlIGEKK2NyYXNoIGRvZXMgb2NjdXIuCisKKyAgbyBNZW1vcnkgUmVzZXJ2YXRpb24gZHVyaW5nIGZpcnN0IGtlcm5lbAorCisgIExvdyBtZW1vcnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9wIG9mIG1lbW9yeQorICAwICAgICAgYm9vdCBtZW1vcnkgc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfDwtLVJlc2VydmVkIGR1bXAgYXJlYSAtLT58CisgIFYgICAgICAgICAgIFYgICAgICAgICAgICAgICAgICAgICAgIHwgICBQZXJtYW5lbnQgUmVzZXJ2YXRpb24gVgorICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS8gLy0tLS0tLS0tLS0rLS0tKy0tLS0rLS0tLS0tLS0tLS0rLS0tLSsKKyAgfCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfENQVXxIUFRFfCAgRFVNUCAgICAgfEVMRiB8CisgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLyAvLS0tLS0tLS0tLSstLS0rLS0tLSstLS0tLS0tLS0tLSstLS0tKworICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKyAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIFwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLworICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgIEJvb3QgbWVtb3J5IGNvbnRlbnQgZ2V0cyB0cmFuc2ZlcnJlZCB0bworICAgICAgICAgIHJlc2VydmVkIGFyZWEgYnkgZmlybXdhcmUgYXQgdGhlIHRpbWUgb2YKKyAgICAgICAgICBjcmFzaAorICAgICAgICAgICAgICAgICAgIEZpZy4gMQorCisgIG8gTWVtb3J5IFJlc2VydmF0aW9uIGR1cmluZyBzZWNvbmQga2VybmVsIGFmdGVyIGNyYXNoCisKKyAgTG93IG1lbW9yeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3Agb2YgbWVtb3J5CisgIDAgICAgICBib290IG1lbW9yeSBzaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICB8ICAgICAgICAgICB8PC0tLS0tLS0tLS0tLS0gUmVzZXJ2ZWQgZHVtcCBhcmVhIC0tLS0tLS0tLS0tIC0tPnwKKyAgViAgICAgICAgICAgViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWCisgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLyAvLS0tLS0tLS0tLSstLS0rLS0tLSstLS0tLS0tLS0tLSstLS0tKworICB8ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8Q1BVfEhQVEV8ICBEVU1QICAgICB8RUxGIHwKKyAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0vIC8tLS0tLS0tLS0tKy0tLSstLS0tKy0tLS0tLS0tLS0tKy0tLS0rCisgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICBWICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYKKyAgIFVzZWQgYnkgc2Vjb25kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL3Byb2Mvdm1jb3JlCisgICBrZXJuZWwgdG8gYm9vdAorICAgICAgICAgICAgICAgICAgIEZpZy4gMgorCitDdXJyZW50bHkgdGhlIGR1bXAgd2lsbCBiZSBjb3BpZWQgZnJvbSAvcHJvYy92bWNvcmUgdG8gYQorYSBuZXcgZmlsZSB1cG9uIHVzZXIgaW50ZXJ2ZW50aW9uLiBUaGUgZHVtcCBkYXRhIGF2YWlsYWJsZSB0aHJvdWdoCisvcHJvYy92bWNvcmUgd2lsbCBiZSBpbiBFTEYgZm9ybWF0LiBIZW5jZSB0aGUgZXhpc3Rpbmcga2R1bXAKK2luZnJhc3RydWN0dXJlIChrZHVtcCBzY3JpcHRzKSB0byBzYXZlIHRoZSBkdW1wIHdvcmtzIGZpbmUgd2l0aAorbWlub3IgbW9kaWZpY2F0aW9ucy4KKworVGhlIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGR1bXAgd2lsbCBiZSBzYW1lIGFzIHRoZSBvbmVzCit1c2VkIGZvciBrZHVtcC4KKworSG93IHRvIGVuYWJsZSBmaXJtd2FyZS1hc3Npc3RlZCBkdW1wIChmYWR1bXApOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisxLiBTZXQgY29uZmlnIG9wdGlvbiBDT05GSUdfRkFfRFVNUD15IGFuZCBidWlsZCBrZXJuZWwuCisyLiBCb290IGludG8gbGludXgga2VybmVsIHdpdGggJ2ZhZHVtcD1vbicga2VybmVsIGNtZGxpbmUgb3B0aW9uLgorMy4gT3B0aW9uYWxseSwgdXNlciBjYW4gYWxzbyBzZXQgJ2ZhZHVtcF9yZXNlcnZlX21lbT0nIGtlcm5lbCBjbWRsaW5lCisgICB0byBzcGVjaWZ5IHNpemUgb2YgdGhlIG1lbW9yeSB0byByZXNlcnZlIGZvciBib290IG1lbW9yeSBkdW1wCisgICBwcmVzZXJ2YXRpb24uCisKK05PVEU6IElmIGZpcm13YXJlLWFzc2lzdGVkIGR1bXAgZmFpbHMgdG8gcmVzZXJ2ZSBtZW1vcnkgdGhlbiBpdCB3aWxsCisgICBmYWxsYmFjayB0byBleGlzdGluZyBrZHVtcCBtZWNoYW5pc20gaWYgJ2NyYXNoa2VybmVsPScgb3B0aW9uCisgICBpcyBzZXQgYXQga2VybmVsIGNtZGxpbmUuCisKK1N5c2ZzL2RlYnVnZnMgZmlsZXM6CistLS0tLS0tLS0tLS0KKworRmlybXdhcmUtYXNzaXN0ZWQgZHVtcCBmZWF0dXJlIHVzZXMgc3lzZnMgZmlsZSBzeXN0ZW0gdG8gaG9sZAordGhlIGNvbnRyb2wgZmlsZXMgYW5kIGRlYnVnZnMgZmlsZSB0byBkaXNwbGF5IG1lbW9yeSByZXNlcnZlZCByZWdpb24uCisKK0hlcmUgaXMgdGhlIGxpc3Qgb2YgZmlsZXMgdW5kZXIga2VybmVsIHN5c2ZzOgorCisgL3N5cy9rZXJuZWwvZmFkdW1wX2VuYWJsZWQKKworICAgIFRoaXMgaXMgdXNlZCB0byBkaXNwbGF5IHRoZSBmYWR1bXAgc3RhdHVzLgorICAgIDAgPSBmYWR1bXAgaXMgZGlzYWJsZWQKKyAgICAxID0gZmFkdW1wIGlzIGVuYWJsZWQKKworICAgIFRoaXMgaW50ZXJmYWNlIGNhbiBiZSB1c2VkIGJ5IGtkdW1wIGluaXQgc2NyaXB0cyB0byBpZGVudGlmeSBpZgorICAgIGZhZHVtcCBpcyBlbmFibGVkIGluIHRoZSBrZXJuZWwgYW5kIGFjdCBhY2NvcmRpbmdseS4KKworIC9zeXMva2VybmVsL2ZhZHVtcF9yZWdpc3RlcmVkCisKKyAgICBUaGlzIGlzIHVzZWQgdG8gZGlzcGxheSB0aGUgZmFkdW1wIHJlZ2lzdHJhdGlvbiBzdGF0dXMgYXMgd2VsbAorICAgIGFzIHRvIGNvbnRyb2wgKHN0YXJ0L3N0b3ApIHRoZSBmYWR1bXAgcmVnaXN0cmF0aW9uLgorICAgIDAgPSBmYWR1bXAgaXMgbm90IHJlZ2lzdGVyZWQuCisgICAgMSA9IGZhZHVtcCBpcyByZWdpc3RlcmVkIGFuZCByZWFkeSB0byBoYW5kbGUgc3lzdGVtIGNyYXNoLgorCisgICAgVG8gcmVnaXN0ZXIgZmFkdW1wIGVjaG8gMSA+IC9zeXMva2VybmVsL2ZhZHVtcF9yZWdpc3RlcmVkIGFuZAorICAgIGVjaG8gMCA+IC9zeXMva2VybmVsL2ZhZHVtcF9yZWdpc3RlcmVkIGZvciB1bi1yZWdpc3RlciBhbmQgc3RvcCB0aGUKKyAgICBmYWR1bXAuIE9uY2UgdGhlIGZhZHVtcCBpcyB1bi1yZWdpc3RlcmVkLCB0aGUgc3lzdGVtIGNyYXNoIHdpbGwgbm90CisgICAgYmUgaGFuZGxlZCBhbmQgdm1jb3JlIHdpbGwgbm90IGJlIGNhcHR1cmVkLiBUaGlzIGludGVyZmFjZSBjYW4gYmUKKyAgICBlYXNpbHkgaW50ZWdyYXRlZCB3aXRoIGtkdW1wIHNlcnZpY2Ugc3RhcnQvc3RvcC4KKworIC9zeXMva2VybmVsL2ZhZHVtcF9yZWxlYXNlX21lbQorCisgICAgVGhpcyBmaWxlIGlzIGF2YWlsYWJsZSBvbmx5IHdoZW4gZmFkdW1wIGlzIGFjdGl2ZSBkdXJpbmcKKyAgICBzZWNvbmQga2VybmVsLiBUaGlzIGlzIHVzZWQgdG8gcmVsZWFzZSB0aGUgcmVzZXJ2ZWQgbWVtb3J5CisgICAgcmVnaW9uIHRoYXQgYXJlIGhlbGQgZm9yIHNhdmluZyBjcmFzaCBkdW1wLiBUbyByZWxlYXNlIHRoZQorICAgIHJlc2VydmVkIG1lbW9yeSBlY2hvIDEgdG8gaXQ6CisKKyAgICBlY2hvIDEgID4gL3N5cy9rZXJuZWwvZmFkdW1wX3JlbGVhc2VfbWVtCisKKyAgICBBZnRlciBlY2hvIDEsIHRoZSBjb250ZW50IG9mIHRoZSAvc3lzL2tlcm5lbC9kZWJ1Zy9wb3dlcnBjL2ZhZHVtcF9yZWdpb24KKyAgICBmaWxlIHdpbGwgY2hhbmdlIHRvIHJlZmxlY3QgdGhlIG5ldyBtZW1vcnkgcmVzZXJ2YXRpb25zLgorCisgICAgVGhlIGV4aXN0aW5nIHVzZXJzcGFjZSB0b29scyAoa2R1bXAgaW5mcmFzdHJ1Y3R1cmUpIGNhbiBiZSBlYXNpbHkKKyAgICBlbmhhbmNlZCB0byB1c2UgdGhpcyBpbnRlcmZhY2UgdG8gcmVsZWFzZSB0aGUgbWVtb3J5IHJlc2VydmVkIGZvcgorICAgIGR1bXAgYW5kIGNvbnRpbnVlIHdpdGhvdXQgMm5kIHJlYm9vdC4KKworSGVyZSBpcyB0aGUgbGlzdCBvZiBmaWxlcyB1bmRlciBwb3dlcnBjIGRlYnVnZnM6CisoQXNzdW1pbmcgZGVidWdmcyBpcyBtb3VudGVkIG9uIC9zeXMva2VybmVsL2RlYnVnIGRpcmVjdG9yeS4pCisKKyAvc3lzL2tlcm5lbC9kZWJ1Zy9wb3dlcnBjL2ZhZHVtcF9yZWdpb24KKworICAgIFRoaXMgZmlsZSBzaG93cyB0aGUgcmVzZXJ2ZWQgbWVtb3J5IHJlZ2lvbnMgaWYgZmFkdW1wIGlzCisgICAgZW5hYmxlZCBvdGhlcndpc2UgdGhpcyBmaWxlIGlzIGVtcHR5LiBUaGUgb3V0cHV0IGZvcm1hdAorICAgIGlzOgorICAgIDxyZWdpb24+OiBbPHN0YXJ0Pi08ZW5kPl0gPHJlc2VydmVkLXNpemU+IGJ5dGVzLCBEdW1wZWQ6IDxkdW1wLXNpemU+CisKKyAgICBlLmcuCisgICAgQ29udGVudHMgd2hlbiBmYWR1bXAgaXMgcmVnaXN0ZXJlZCBkdXJpbmcgZmlyc3Qga2VybmVsCisKKyAgICAjIGNhdCAvc3lzL2tlcm5lbC9kZWJ1Zy9wb3dlcnBjL2ZhZHVtcF9yZWdpb24KKyAgICBDUFUgOiBbMHgwMDAwMDA2ZmZiMDAwMC0weDAwMDAwMDZmZmYwMDFmXSAweDQwMDIwIGJ5dGVzLCBEdW1wZWQ6IDB4MAorICAgIEhQVEU6IFsweDAwMDAwMDZmZmYwMDIwLTB4MDAwMDAwNmZmZjEwMWZdIDB4MTAwMCBieXRlcywgRHVtcGVkOiAweDAKKyAgICBEVU1QOiBbMHgwMDAwMDA2ZmZmMTAyMC0weDAwMDAwMDdmZmYxMDFmXSAweDEwMDAwMDAwIGJ5dGVzLCBEdW1wZWQ6IDB4MAorCisgICAgQ29udGVudHMgd2hlbiBmYWR1bXAgaXMgYWN0aXZlIGR1cmluZyBzZWNvbmQga2VybmVsCisKKyAgICAjIGNhdCAvc3lzL2tlcm5lbC9kZWJ1Zy9wb3dlcnBjL2ZhZHVtcF9yZWdpb24KKyAgICBDUFUgOiBbMHgwMDAwMDA2ZmZiMDAwMC0weDAwMDAwMDZmZmYwMDFmXSAweDQwMDIwIGJ5dGVzLCBEdW1wZWQ6IDB4NDAwMjAKKyAgICBIUFRFOiBbMHgwMDAwMDA2ZmZmMDAyMC0weDAwMDAwMDZmZmYxMDFmXSAweDEwMDAgYnl0ZXMsIER1bXBlZDogMHgxMDAwCisgICAgRFVNUDogWzB4MDAwMDAwNmZmZjEwMjAtMHgwMDAwMDA3ZmZmMTAxZl0gMHgxMDAwMDAwMCBieXRlcywgRHVtcGVkOiAweDEwMDAwMDAwCisgICAgICAgIDogWzB4MDAwMDAwMTAwMDAwMDAtMHgwMDAwMDA2ZmZhZmZmZl0gMHg1ZmZiMDAwMCBieXRlcywgRHVtcGVkOiAweDVmZmIwMDAwCisKK05PVEU6IFBsZWFzZSByZWZlciB0byBEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2RlYnVnZnMudHh0IG9uCisgICAgICBob3cgdG8gbW91bnQgdGhlIGRlYnVnZnMgZmlsZXN5c3RlbS4KKworCitUT0RPOgorLS0tLS0KKyBvIE5lZWQgdG8gY29tZSB1cCB3aXRoIHRoZSBiZXR0ZXIgYXBwcm9hY2ggdG8gZmluZCBvdXQgbW9yZQorICAgYWNjdXJhdGUgYm9vdCBtZW1vcnkgc2l6ZSB0aGF0IGlzIHJlcXVpcmVkIGZvciBhIGtlcm5lbCB0bworICAgYm9vdCBzdWNjZXNzZnVsbHkgd2hlbiBib290ZWQgd2l0aCByZXN0cmljdGVkIG1lbW9yeS4KKyBvIFRoZSBmYWR1bXAgaW1wbGVtZW50YXRpb24gaW50cm9kdWNlcyBhIGZhZHVtcCBjcmFzaCBpbmZvIHN0cnVjdHVyZQorICAgaW4gdGhlIHNjcmF0Y2ggYXJlYSBiZWZvcmUgdGhlIEVMRiBjb3JlIGhlYWRlci4gVGhlIGlkZWEgb2YgaW50cm9kdWNpbmcKKyAgIHRoaXMgc3RydWN0dXJlIGlzIHRvIHBhc3Mgc29tZSBpbXBvcnRhbnQgY3Jhc2ggaW5mbyBkYXRhIHRvIHRoZSBzZWNvbmQKKyAgIGtlcm5lbCB3aGljaCB3aWxsIGhlbHAgc2Vjb25kIGtlcm5lbCB0byBwb3B1bGF0ZSBFTEYgY29yZSBoZWFkZXIgd2l0aAorICAgY29ycmVjdCBkYXRhIGJlZm9yZSBpdCBnZXRzIGV4cG9ydGVkIHRocm91Z2ggL3Byb2Mvdm1jb3JlLiBUaGUgY3VycmVudAorICAgZGVzaWduIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGFkZHJlc3MgYSBwb3NzaWJpbGl0eSBvZiBpbnRyb2R1Y2luZworICAgYWRkaXRpb25hbCBmaWVsZHMgKGluIGZ1dHVyZSkgdG8gdGhpcyBzdHJ1Y3R1cmUgd2l0aG91dCBhZmZlY3RpbmcKKyAgIGNvbXBhdGliaWxpdHkuIE5lZWQgdG8gY29tZSB1cCB3aXRoIHRoZSBiZXR0ZXIgYXBwcm9hY2ggdG8gYWRkcmVzcyB0aGlzLgorICAgVGhlIHBvc3NpYmxlIGFwcHJvYWNoZXMgYXJlOgorCTEuIEludHJvZHVjZSB2ZXJzaW9uIGZpZWxkIGZvciB2ZXJzaW9uIHRyYWNraW5nLCBidW1wIHVwIHRoZSB2ZXJzaW9uCisJd2hlbmV2ZXIgYSBuZXcgZmllbGQgaXMgYWRkZWQgdG8gdGhlIHN0cnVjdHVyZSBpbiBmdXR1cmUuIFRoZSB2ZXJzaW9uCisJZmllbGQgY2FuIGJlIHVzZWQgdG8gZmluZCBvdXQgd2hhdCBmaWVsZHMgYXJlIHZhbGlkIGZvciB0aGUgY3VycmVudAorCXZlcnNpb24gb2YgdGhlIHN0cnVjdHVyZS4KKwkyLiBSZXNlcnZlIHRoZSBhcmVhIG9mIHByZWRlZmluZWQgc2l6ZSAoc2F5IFBBR0VfU0laRSkgZm9yIHRoaXMKKwlzdHJ1Y3R1cmUgYW5kIGhhdmUgdW51c2VkIGFyZWEgYXMgcmVzZXJ2ZWQgKGluaXRpYWxpemVkIHRvIHplcm8pCisJZm9yIGZ1dHVyZSBmaWVsZCBhZGRpdGlvbnMuCisgICBUaGUgYWR2YW50YWdlIG9mIGFwcHJvYWNoIDEgb3ZlciAyIGlzIHdlIGRvbid0IG5lZWQgdG8gcmVzZXJ2ZSBleHRyYSBzcGFjZS4KKy0tLQorQXV0aG9yOiBNYWhlc2ggU2FsZ2FvbmthciA8bWFoZXNoQGxpbnV4LnZuZXQuaWJtLmNvbT4KK1RoaXMgZG9jdW1lbnQgaXMgYmFzZWQgb24gdGhlIG9yaWdpbmFsIGRvY3VtZW50YXRpb24gd3JpdHRlbiBmb3IgcGh5cAorYXNzaXN0ZWQgZHVtcCBieSBMaW5hcyBWZXBzdGFzIGFuZCBNYW5pc2ggQWh1amEuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VycGMvaHZjcy50eHQgYi9Eb2N1bWVudGF0aW9uL3Bvd2VycGMvaHZjcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTczMGNhNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXJwYy9odmNzLnR4dApAQCAtMCwwICsxLDU2NyBAQAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJCQkJICAgSFZDUworCUlCTSAiSHlwZXJ2aXNvciBWaXJ0dWFsIENvbnNvbGUgU2VydmVyIiBJbnN0YWxsYXRpb24gR3VpZGUKKwkJCSAgZm9yIExpbnV4IEtlcm5lbCAyLjYuNCsKKwkJICAgIENvcHlyaWdodCAoQykgMjAwNCBJQk0gQ29ycG9yYXRpb24KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitOT1RFOkVpZ2h0IHNwYWNlIHRhYnMgYXJlIHRoZSBvcHRpbXVtIGVkaXRvciBzZXR0aW5nIGZvciByZWFkaW5nIHRoaXMgZmlsZS4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisJICAgICAgIEF1dGhvcihzKSA6ICBSeWFuIFMuIEFybm9sZCA8cnNhQHVzLmlibS5jb20+CisJCSAgICAgICBEYXRlIENyZWF0ZWQ6IE1hcmNoLCAwMiwgMjAwNAorCQkgICAgICAgTGFzdCBDaGFuZ2VkOiBBdWd1c3QsIDI0LCAyMDA0CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGFibGUgb2YgY29udGVudHM6CisKKwkxLiAgRHJpdmVyIEludHJvZHVjdGlvbjoKKwkyLiAgU3lzdGVtIFJlcXVpcmVtZW50cworCTMuICBCdWlsZCBPcHRpb25zOgorCQkzLjEgIEJ1aWx0LWluOgorCQkzLjIgIE1vZHVsZToKKwk0LiAgSW5zdGFsbGF0aW9uOgorCTUuICBDb25uZWN0aW9uOgorCTYuICBEaXNjb25uZWN0aW9uOgorCTcuICBDb25maWd1cmF0aW9uOgorCTguICBRdWVzdGlvbnMgJiBBbnN3ZXJzOgorCTkuICBSZXBvcnRpbmcgQnVnczoKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisxLiBEcml2ZXIgSW50cm9kdWN0aW9uOgorCitUaGlzIGlzIHRoZSBkZXZpY2UgZHJpdmVyIGZvciB0aGUgSUJNIEh5cGVydmlzb3IgVmlydHVhbCBDb25zb2xlIFNlcnZlciwKKyJodmNzIi4gIFRoZSBJQk0gaHZjcyBwcm92aWRlcyBhIHR0eSBkcml2ZXIgaW50ZXJmYWNlIHRvIGFsbG93IExpbnV4IHVzZXIKK3NwYWNlIGFwcGxpY2F0aW9ucyBhY2Nlc3MgdG8gdGhlIHN5c3RlbSBjb25zb2xlcyBvZiBsb2dpY2FsbHkgcGFydGl0aW9uZWQKK29wZXJhdGluZyBzeXN0ZW1zIChMaW51eCBhbmQgQUlYKSBydW5uaW5nIG9uIHRoZSBzYW1lIHBhcnRpdGlvbmVkIFBvd2VyNQorcHBjNjQgc3lzdGVtLiAgUGh5c2ljYWwgaGFyZHdhcmUgY29uc29sZXMgcGVyIHBhcnRpdGlvbiBhcmUgbm90IHByYWN0aWNhbAorb24gdGhpcyBoYXJkd2FyZSBzbyBzeXN0ZW0gY29uc29sZXMgYXJlIGFjY2Vzc2VkIGJ5IHRoaXMgZHJpdmVyIHVzaW5nCitmaXJtd2FyZSBpbnRlcmZhY2VzIHRvIHZpcnR1YWwgdGVybWluYWwgZGV2aWNlcy4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyLiBTeXN0ZW0gUmVxdWlyZW1lbnRzOgorCitUaGlzIGRldmljZSBkcml2ZXIgd2FzIHdyaXR0ZW4gdXNpbmcgMi42LjQgTGludXgga2VybmVsIEFQSXMgYW5kIHdpbGwgb25seQorYnVpbGQgYW5kIHJ1biBvbiBrZXJuZWxzIG9mIHRoaXMgdmVyc2lvbiBvciBsYXRlci4KKworVGhpcyBkcml2ZXIgd2FzIHdyaXR0ZW4gdG8gb3BlcmF0ZSBzb2xlbHkgb24gSUJNIFBvd2VyNSBwcGM2NCBoYXJkd2FyZQordGhvdWdoIHNvbWUgY2FyZSB3YXMgdGFrZW4gdG8gYWJzdHJhY3QgdGhlIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQgZmlybXdhcmUKK2NhbGxzIGZyb20gdGhlIGRyaXZlciBjb2RlLgorCitTeXNmcyBtdXN0IGJlIG1vdW50ZWQgb24gdGhlIHN5c3RlbSBzbyB0aGF0IHRoZSB1c2VyIGNhbiBkZXRlcm1pbmUgd2hpY2gKK21ham9yIGFuZCBtaW5vciBudW1iZXJzIGFyZSBhc3NvY2lhdGVkIHdpdGggZWFjaCB2dHktc2VydmVyLiAgRGlyZWN0aW9ucworZm9yIHN5c2ZzIG1vdW50aW5nIGFyZSBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIGRvY3VtZW50LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzMuIEJ1aWxkIE9wdGlvbnM6CisKK1RoZSBodmNzIGRyaXZlciByZWdpc3RlcnMgaXRzZWxmIGFzIGEgdHR5IGRyaXZlci4gIFRoZSB0dHkgbGF5ZXIKK2R5bmFtaWNhbGx5IGFsbG9jYXRlcyBhIGJsb2NrIG9mIG1ham9yIGFuZCBtaW5vciBudW1iZXJzIGluIGEgcXVhbnRpdHkKK3JlcXVlc3RlZCBieSB0aGUgcmVnaXN0ZXJpbmcgZHJpdmVyLiAgVGhlIGh2Y3MgZHJpdmVyIGFza3MgdGhlIHR0eSBsYXllcgorZm9yIDY0IG9mIHRoZXNlIG1ham9yL21pbm9yIG51bWJlcnMgYnkgZGVmYXVsdCB0byB1c2UgZm9yIGh2Y3MgZGV2aWNlIG5vZGUKK2VudHJpZXMuCisKK0lmIHRoZSBkZWZhdWx0IG51bWJlciBvZiBkZXZpY2UgZW50cmllcyBpcyBhZGVxdWF0ZSB0aGVuIHRoaXMgZHJpdmVyIGNhbiBiZQorYnVpbHQgaW50byB0aGUga2VybmVsLiAgSWYgbm90LCB0aGUgZGVmYXVsdCBjYW4gYmUgb3Zlci1yaWRkZW4gYnkgaW5zZXJ0aW5nCit0aGUgZHJpdmVyIGFzIGEgbW9kdWxlIHdpdGggaW5zbW9kIHBhcmFtZXRlcnMuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMy4xIEJ1aWx0LWluOgorCitUaGUgZm9sbG93aW5nIG1lbnVjb25maWcgZXhhbXBsZSBkZW1vbnN0cmF0ZXMgc2VsZWN0aW5nIHRvIGJ1aWxkIHRoaXMKK2RyaXZlciBpbnRvIHRoZSBrZXJuZWwuCisKKwlEZXZpY2UgRHJpdmVycyAgLS0tPgorCQlDaGFyYWN0ZXIgZGV2aWNlcyAgLS0tPgorCQkJPCo+IElCTSBIeXBlcnZpc29yIFZpcnR1YWwgQ29uc29sZSBTZXJ2ZXIgU3VwcG9ydAorCitCZWdpbiB0aGUga2VybmVsIG1ha2UgcHJvY2Vzcy4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiszLjIgTW9kdWxlOgorCitUaGUgZm9sbG93aW5nIG1lbnVjb25maWcgZXhhbXBsZSBkZW1vbnN0cmF0ZXMgc2VsZWN0aW5nIHRvIGJ1aWxkIHRoaXMKK2RyaXZlciBhcyBhIGtlcm5lbCBtb2R1bGUuCisKKwlEZXZpY2UgRHJpdmVycyAgLS0tPgorCQlDaGFyYWN0ZXIgZGV2aWNlcyAgLS0tPgorCQkJPE0+IElCTSBIeXBlcnZpc29yIFZpcnR1YWwgQ29uc29sZSBTZXJ2ZXIgU3VwcG9ydAorCitUaGUgbWFrZSBwcm9jZXNzIHdpbGwgYnVpbGQgdGhlIGZvbGxvd2luZyBrZXJuZWwgbW9kdWxlczoKKworCWh2Y3Mua28KKwlodmNzZXJ2ZXIua28KKworVG8gaW5zZXJ0IHRoZSBtb2R1bGUgd2l0aCB0aGUgZGVmYXVsdCBhbGxvY2F0aW9uIGV4ZWN1dGUgdGhlIGZvbGxvd2luZworY29tbWFuZHMgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyOgorCisJaW5zbW9kIGh2Y3NlcnZlci5rbworCWluc21vZCBodmNzLmtvCisKK1RoZSBodmNzZXJ2ZXIgbW9kdWxlIGNvbnRhaW5zIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBmaXJtd2FyZSBjYWxscyBhbmQgbXVzdAorYmUgaW5zZXJ0ZWQgZmlyc3QsIG90aGVyd2lzZSB0aGUgaHZjcyBtb2R1bGUgd2lsbCBub3QgZmluZCBzb21lIG9mIHRoZQorc3ltYm9scyBpdCBleHBlY3RzLgorCitUbyBvdmVycmlkZSB0aGUgZGVmYXVsdCB1c2UgYW4gaW5zbW9kIHBhcmFtZXRlciBhcyBmb2xsb3dzIChyZXF1ZXN0aW5nIDQKK3R0eSBkZXZpY2VzIGFzIGFuIGV4YW1wbGUpOgorCisJaW5zbW9kIGh2Y3Mua28gaHZjc19wYXJtX251bV9kZXZzPTQKKworVGhlcmUgaXMgYSBtYXhpbXVtIG51bWJlciBvZiBkZXYgZW50cmllcyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgb24gaW5zbW9kLgorV2UgdGhpbmsgdGhhdCAxMDI0IGlzIGN1cnJlbnRseSBhIGRlY2VudCBtYXhpbXVtIG51bWJlciBvZiBzZXJ2ZXIgYWRhcHRlcnMKK3RvIGFsbG93LiAgVGhpcyBjYW4gYWx3YXlzIGJlIGNoYW5nZWQgYnkgbW9kaWZ5aW5nIHRoZSBjb25zdGFudCBpbiB0aGUKK3NvdXJjZSBmaWxlIGJlZm9yZSBidWlsZGluZy4KKworTk9URTogVGhlIGxlbmd0aCBvZiB0aW1lIGl0IHRha2VzIHRvIGluc21vZCB0aGUgZHJpdmVyIHNlZW1zIHRvIGJlIHJlbGF0ZWQKK3RvIHRoZSBudW1iZXIgb2YgdHR5IGludGVyZmFjZXMgdGhlIHJlZ2lzdGVyaW5nIGRyaXZlciByZXF1ZXN0cy4KKworSW4gb3JkZXIgdG8gcmVtb3ZlIHRoZSBkcml2ZXIgbW9kdWxlIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorCisJcm1tb2QgaHZjcy5rbworCitUaGUgcmVjb21tZW5kZWQgbWV0aG9kIGZvciBpbnN0YWxsaW5nIGh2Y3MgYXMgYSBtb2R1bGUgaXMgdG8gdXNlIGRlcG1vZCB0bworYnVpbGQgYSBjdXJyZW50IG1vZHVsZXMuZGVwIGZpbGUgaW4gL2xpYi9tb2R1bGVzL2B1bmFtZSAtcmAgYW5kIHRoZW4KK2V4ZWN1dGU6CisKK21vZHByb2JlIGh2Y3MgaHZjc19wYXJtX251bV9kZXZzPTQKKworVGhlIG1vZHVsZXMuZGVwIGZpbGUgaW5kaWNhdGVzIHRoYXQgaHZjc2VydmVyLmtvIG5lZWRzIHRvIGJlIGluc2VydGVkCitiZWZvcmUgaHZjcy5rbyBhbmQgbW9kcHJvYmUgdXNlcyB0aGlzIGZpbGUgdG8gc21hcnRseSBpbnNlcnQgdGhlIG1vZHVsZXMgaW4KK3RoZSBwcm9wZXIgb3JkZXIuCisKK1RoZSBmb2xsb3dpbmcgbW9kcHJvYmUgY29tbWFuZCBpcyB1c2VkIHRvIHJlbW92ZSBodmNzIGFuZCBodmNzZXJ2ZXIgaW4gdGhlCitwcm9wZXIgb3JkZXI6CisKK21vZHByb2JlIC1yIGh2Y3MKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis0LiBJbnN0YWxsYXRpb246CisKK1RoZSB0dHkgbGF5ZXIgY3JlYXRlcyBzeXNmcyBlbnRyaWVzIHdoaWNoIGNvbnRhaW4gdGhlIG1ham9yIGFuZCBtaW5vcgorbnVtYmVycyBhbGxvY2F0ZWQgZm9yIHRoZSBodmNzIGRyaXZlci4gIFRoZSBmb2xsb3dpbmcgc25pcHBldCBvZiAidHJlZSIKK291dHB1dCBvZiB0aGUgc3lzZnMgZGlyZWN0b3J5IHNob3dzIHdoZXJlIHRoZXNlIG51bWJlcnMgYXJlIHByZXNlbnRlZDoKKworCXN5cy8KKwl8LS0gKm90aGVyIHN5c2ZzIGJhc2UgZGlycyoKKwl8CisJfC0tIGNsYXNzCisJfCAgIHwtLSAqb3RoZXIgY2xhc3NlcyBvZiBkZXZpY2VzKgorCXwgICB8CisJfCAgIGAtLSB0dHkKKwl8ICAgICAgIHwtLSAqb3RoZXIgdHR5IGRldmljZXMqCisJfCAgICAgICB8CisJfCAgICAgICB8LS0gaHZjczAKKwl8ICAgICAgIHwgICBgLS0gZGV2CisJfCAgICAgICB8LS0gaHZjczEKKwl8ICAgICAgIHwgICBgLS0gZGV2CisJfCAgICAgICB8LS0gaHZjczIKKwl8ICAgICAgIHwgICBgLS0gZGV2CisJfCAgICAgICB8LS0gaHZjczMKKwl8ICAgICAgIHwgICBgLS0gZGV2CisJfCAgICAgICB8CisJfCAgICAgICB8LS0gKm90aGVyIHR0eSBkZXZpY2VzKgorCXwKKwl8LS0gKm90aGVyIHN5c2ZzIGJhc2UgZGlycyoKKworRm9yIHRoZSBhYm92ZSBleGFtcGxlcyB0aGUgZm9sbG93aW5nIG91dHB1dCBpcyBhIHJlc3VsdCBvZiBjYXQnaW5nIHRoZQorImRldiIgZW50cnkgaW4gdGhlIGh2Y3MgZGlyZWN0b3J5OgorCisJUG93NTovc3lzL2NsYXNzL3R0eS9odmNzMC8gIyBjYXQgZGV2CisJMjU0OjAKKworCVBvdzU6L3N5cy9jbGFzcy90dHkvaHZjczEvICMgY2F0IGRldgorCTI1NDoxCisKKwlQb3c1Oi9zeXMvY2xhc3MvdHR5L2h2Y3MyLyAjIGNhdCBkZXYKKwkyNTQ6MgorCisJUG93NTovc3lzL2NsYXNzL3R0eS9odmNzMy8gIyBjYXQgZGV2CisJMjU0OjMKKworVGhlIG91dHB1dCBmcm9tIHJlYWRpbmcgdGhlICJkZXYiIGF0dHJpYnV0ZSBpcyB0aGUgY2hhciBkZXZpY2UgbWFqb3IgYW5kCittaW5vciBudW1iZXJzIHRoYXQgdGhlIHR0eSBsYXllciBoYXMgYWxsb2NhdGVkIGZvciB0aGlzIGRyaXZlcidzIHVzZS4gIE1vc3QKK3N5c3RlbXMgcnVubmluZyBodmNzIHdpbGwgYWxyZWFkeSBoYXZlIHRoZSBkZXZpY2UgZW50cmllcyBjcmVhdGVkIG9yIHVkZXYKK3dpbGwgZG8gaXQgYXV0b21hdGljYWxseS4KKworR2l2ZW4gdGhlIGV4YW1wbGUgb3V0cHV0IGFib3ZlLCB0byBtYW51YWxseSBjcmVhdGUgYSAvZGV2L2h2Y3MqIG5vZGUgZW50cnkKK21rbm9kIGNhbiBiZSB1c2VkIGFzIGZvbGxvd3M6CisKKwlta25vZCAvZGV2L2h2Y3MwIGMgMjU0IDAKKwlta25vZCAvZGV2L2h2Y3MxIGMgMjU0IDEKKwlta25vZCAvZGV2L2h2Y3MyIGMgMjU0IDIKKwlta25vZCAvZGV2L2h2Y3MzIGMgMjU0IDMKKworVXNpbmcgbWtub2QgdG8gbWFudWFsbHkgY3JlYXRlIHRoZSBkZXZpY2UgZW50cmllcyBtYWtlcyB0aGVzZSBkZXZpY2Ugbm9kZXMKK3BlcnNpc3RlbnQuICBPbmNlIGNyZWF0ZWQgdGhleSB3aWxsIGV4aXN0IHByaW9yIHRvIHRoZSBkcml2ZXIgaW5zbW9kLgorCitBdHRlbXB0aW5nIHRvIGNvbm5lY3QgYW4gYXBwbGljYXRpb24gdG8gL2Rldi9odmNzKiBwcmlvciB0byBpbnNlcnRpb24gb2YKK3RoZSBodmNzIG1vZHVsZSB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvciBtZXNzYWdlIHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZzoKKworCSIvZGV2L2h2Y3MqOiBObyBzdWNoIGRldmljZSIuCisKK05PVEU6IEp1c3QgYmVjYXVzZSB0aGVyZSBpcyBhIGRldmljZSBub2RlIHByZXNlbnQgZG9lc24ndCBtZWFuIHRoYXQgdGhlcmUKK2lzIGEgdnR5LXNlcnZlciBkZXZpY2UgY29uZmlndXJlZCBmb3IgdGhhdCBub2RlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzUuIENvbm5lY3Rpb24KKworU2luY2UgdGhpcyBkcml2ZXIgY29udHJvbHMgZGV2aWNlcyB0aGF0IHByb3ZpZGUgYSB0dHkgaW50ZXJmYWNlIGEgdXNlciBjYW4KK2ludGVyYWN0IHdpdGggdGhlIGRldmljZSBub2RlIGVudHJpZXMgdXNpbmcgYW55IHN0YW5kYXJkIHR0eS1pbnRlcmFjdGl2ZQorbWV0aG9kIChlLmcuICJjYXQiLCAiZGQiLCAiZWNobyIpLiAgVGhlIGludGVudCBvZiB0aGlzIGRyaXZlciBob3dldmVyLCBpcwordG8gcHJvdmlkZSByZWFsIHRpbWUgY29uc29sZSBpbnRlcmFjdGlvbiB3aXRoIGEgTGludXggcGFydGl0aW9uJ3MgY29uc29sZSwKK3doaWNoIHJlcXVpcmVzIHRoZSB1c2Ugb2YgYXBwbGljYXRpb25zIHRoYXQgcHJvdmlkZSBiaS1kaXJlY3Rpb25hbCwKK2ludGVyYWN0aXZlIEkvTyB3aXRoIGEgdHR5IGRldmljZS4KKworQXBwbGljYXRpb25zIChlLmcuICJtaW5pY29tIiBhbmQgInNjcmVlbiIpIHRoYXQgYWN0IGFzIHRlcm1pbmFsIGVtdWxhdG9ycworb3IgcGVyZm9ybSB0ZXJtaW5hbCB0eXBlIGNvbnRyb2wgc2VxdWVuY2UgY29udmVyc2lvbiBvbiB0aGUgZGF0YSBiZWluZworcGFzc2VkIHRocm91Z2ggdGhlbSBhcmUgTk9UIGFjY2VwdGFibGUgZm9yIHByb3ZpZGluZyBpbnRlcmFjdGl2ZSBjb25zb2xlCitJL08uICBUaGVzZSBwcm9ncmFtcyBvZnRlbiBlbXVsYXRlIGFudGlxdWF0ZWQgdGVybWluYWwgdHlwZXMgKHZ0MTAwIGFuZAorQU5TSSkgYW5kIGV4cGVjdCBpbmJvdW5kIGRhdGEgdG8gdGFrZSB0aGUgZm9ybSBvZiBvbmUgb2YgdGhlc2Ugc3VwcG9ydGVkCit0ZXJtaW5hbCB0eXBlcyBidXQgdGhleSBlaXRoZXIgZG8gbm90IGNvbnZlcnQsIG9yIGRvIG5vdCBfYWRlcXVhdGVseV8KK2NvbnZlcnQsIG91dGJvdW5kIGRhdGEgaW50byB0aGUgdGVybWluYWwgdHlwZSBvZiB0aGUgdGVybWluYWwgd2hpY2ggaW52b2tlZAordGhlbSAodGhvdWdoIHNjcmVlbiBtYWtlcyBhbiBhdHRlbXB0IGFuZCBjYW4gYXBwYXJlbnRseSBiZSBjb25maWd1cmVkIHdpdGgKK211Y2ggdGVybWNhcCB3cmVzdGxpbmcuKQorCitGb3IgdGhpcyByZWFzb24ga2VybWl0IGFuZCBjdSBhcmUgdHdvIG9mIHRoZSByZWNvbW1lbmRlZCBhcHBsaWNhdGlvbnMgZm9yCitpbnRlcmFjdGluZyB3aXRoIGEgTGludXggY29uc29sZSB2aWEgYW4gaHZjcyBkZXZpY2UuICBUaGVzZSBwcm9ncmFtcyBzaW1wbHkKK2FjdCBhcyBhIGNvbmR1aXQgZm9yIGRhdGEgdHJhbnNmZXIgdG8gYW5kIGZyb20gdGhlIHR0eSBkZXZpY2UuICBUaGV5IGRvIG5vdAorcmVxdWlyZSBpbmJvdW5kIGRhdGEgdG8gdGFrZSB0aGUgZm9ybSBvZiBhIHBhcnRpY3VsYXIgdGVybWluYWwgdHlwZSwgbm9yIGRvCit0aGV5IGNvb2sgb3V0Ym91bmQgZGF0YSB0byBhIHBhcnRpY3VsYXIgdGVybWluYWwgdHlwZS4KKworSW4gb3JkZXIgdG8gZW5zdXJlIHByb3BlciBmdW5jdGlvbmluZyBvZiBjb25zb2xlIGFwcGxpY2F0aW9ucyBvbmUgbXVzdCBtYWtlCitzdXJlIHRoYXQgb25jZSBjb25uZWN0ZWQgdG8gYSAvZGV2L2h2Y3MgY29uc29sZSB0aGF0IHRoZSBjb25zb2xlJ3MgJFRFUk0KK2VudiB2YXJpYWJsZSBpcyBzZXQgdG8gdGhlIGV4YWN0IHRlcm1pbmFsIHR5cGUgb2YgdGhlIHRlcm1pbmFsIGVtdWxhdG9yCit1c2VkIHRvIGxhdW5jaCB0aGUgaW50ZXJhY3RpdmUgSS9PIGFwcGxpY2F0aW9uLiAgSWYgb25lIGlzIHVzaW5nIHh0ZXJtIGFuZAora2VybWl0IHRvIGNvbm5lY3QgdG8gL2Rldi9odmNzMCB3aGVuIHRoZSBjb25zb2xlIHByb21wdCBiZWNvbWVzIGF2YWlsYWJsZQorb25lIHNob3VsZCAiZXhwb3J0IFRFUk09eHRlcm0iIG9uIHRoZSBjb25zb2xlLiAgVGhpcyB0ZWxscyBuY3Vyc2VzCithcHBsaWNhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBmcm9tIHRoZSBjb25zb2xlIHRoYXQgdGhleSBzaG91bGQgb3V0cHV0Citjb250cm9sIHNlcXVlbmNlcyB0aGF0IHh0ZXJtIGNhbiB1bmRlcnN0YW5kLgorCitBcyBhIHByZWNhdXRpb25hcnkgbWVhc3VyZSBhbiBodmNzIHVzZXIgc2hvdWxkIGFsd2F5cyAiZXhpdCIgZnJvbSB0aGVpcgorc2Vzc2lvbiBiZWZvcmUgZGlzY29ubmVjdGluZyBhbiBhcHBsaWNhdGlvbiBzdWNoIGFzIGtlcm1pdCBmcm9tIHRoZSBkZXZpY2UKK25vZGUuICBJZiB0aGlzIGlzIG5vdCBkb25lLCB0aGUgbmV4dCB1c2VyIHRvIGNvbm5lY3QgdG8gdGhlIGNvbnNvbGUgd2lsbAorY29udGludWUgdXNpbmcgdGhlIHByZXZpb3VzIHVzZXIncyBsb2dnZWQgaW4gc2Vzc2lvbiB3aGljaCBpbmNsdWRlcwordXNpbmcgdGhlICRURVJNIHZhcmlhYmxlIHRoYXQgdGhlIHByZXZpb3VzIHVzZXIgc3VwcGxpZWQuCisKK0hvdHBsdWcgYWRkIGFuZCByZW1vdmUgb2YgdnR5LXNlcnZlciBhZGFwdGVycyBhZmZlY3RzIHdoaWNoIC9kZXYvaHZjcyogbm9kZQoraXMgdXNlZCB0byBjb25uZWN0IHRvIGVhY2ggdnR5LXNlcnZlciBhZGFwdGVyLiAgSW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHdoaWNoCit2dHktc2VydmVyIGFkYXB0ZXIgaXMgYXNzb2NpYXRlZCB3aXRoIHdoaWNoIC9kZXYvaHZjcyogbm9kZSBhIHNwZWNpYWwgc3lzZnMKK2F0dHJpYnV0ZSBoYXMgYmVlbiBhZGRlZCB0byBlYWNoIHZ0eS1zZXJ2ZXIgc3lzZnMgZW50cnkuICBUaGlzIGVudHJ5IGlzCitjYWxsZWQgImluZGV4IiBhbmQgc2hvd2luZyBpdCByZXZlYWxzIGFuIGludGVnZXIgdGhhdCByZWZlcnMgdG8gdGhlCisvZGV2L2h2Y3MqIGVudHJ5IHRvIHVzZSB0byBjb25uZWN0IHRvIHRoYXQgZGV2aWNlLiAgRm9yIGluc3RhbmNlIGNhdGluZyB0aGUKK2luZGV4IGF0dHJpYnV0ZSBvZiB2dHktc2VydmVyIGFkYXB0ZXIgMzAwMDAwMDQgc2hvd3MgdGhlIGZvbGxvd2luZy4KKworCVBvdzU6L3N5cy9idXMvdmlvL2RyaXZlcnMvaHZjcy8zMDAwMDAwNCAjIGNhdCBpbmRleAorCTIKKworVGhpcyBpbmRleCBvZiAnMicgbWVhbnMgdGhhdCBpbiBvcmRlciB0byBjb25uZWN0IHRvIHZ0eS1zZXJ2ZXIgYWRhcHRlcgorMzAwMDAwMDQgdGhlIHVzZXIgc2hvdWxkIGludGVyYWN0IHdpdGggL2Rldi9odmNzMi4KKworSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgZHVlIHRvIHRoZSBzeXN0ZW0gaG90cGx1ZyBJL08gY2FwYWJpbGl0aWVzIG9mIGEKK3N5c3RlbSB0aGUgL2Rldi9odmNzKiBlbnRyeSB0aGF0IGludGVyYWN0cyB3aXRoIGEgcGFydGljdWxhciB2dHktc2VydmVyCithZGFwdGVyIGlzIG5vdCBndWFyYW50ZWVkIHRvIHJlbWFpbiB0aGUgc2FtZSBhY3Jvc3Mgc3lzdGVtIHJlYm9vdHMuICBMb29rCitpbiB0aGUgUSAmIEEgc2VjdGlvbiBmb3IgbW9yZSBvbiB0aGlzIGlzc3VlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzYuIERpc2Nvbm5lY3Rpb24KKworQXMgYSBzZWN1cml0eSBmZWF0dXJlIHRvIHByZXZlbnQgdGhlIGRlbGl2ZXJ5IG9mIHN0YWxlIGRhdGEgdG8gYW4KK3VuaW50ZW5kZWQgdGFyZ2V0IHRoZSBQb3dlcjUgc3lzdGVtIGZpcm13YXJlIGRpc2FibGVzIHRoZSBmZXRjaGluZyBvZiBkYXRhCithbmQgZGlzY2FyZHMgdGhhdCBkYXRhIHdoZW4gYSBjb25uZWN0aW9uIGJldHdlZW4gYSB2dHktc2VydmVyIGFuZCBhIHZ0eSBoYXMKK2JlZW4gc2V2ZXJlZC4gIEFzIGFuIGV4YW1wbGUsIHdoZW4gYSB2dHktc2VydmVyIGlzIGltbWVkaWF0ZWx5IGRpc2Nvbm5lY3RlZAorZnJvbSBhIHZ0eSBmb2xsb3dpbmcgb3V0cHV0IG9mIGRhdGEgdG8gdGhlIHZ0eSB0aGUgdnR5IGFkYXB0ZXIgbWF5IG5vdCBoYXZlCitlbm91Z2ggdGltZSBiZXR3ZWVuIHdoZW4gaXQgcmVjZWl2ZWQgdGhlIGRhdGEgaW50ZXJydXB0IGFuZCB3aGVuIHRoZQorY29ubmVjdGlvbiB3YXMgc2V2ZXJlZCB0byBmZXRjaCB0aGUgZGF0YSBmcm9tIGZpcm13YXJlIGJlZm9yZSB0aGUgZmV0Y2ggaXMKK2Rpc2FibGVkIGJ5IGZpcm13YXJlLgorCitXaGVuIGh2Y3MgaXMgYmVpbmcgdXNlZCB0byBzZXJ2ZSBjb25zb2xlcyB0aGlzIGJlaGF2aW9yIGlzIG5vdCBhIGh1Z2UgaXNzdWUKK2JlY2F1c2UgdGhlIGFkYXB0ZXIgc3RheXMgY29ubmVjdGVkIGZvciBsYXJnZSBhbW91bnRzIG9mIHRpbWUgZm9sbG93aW5nCithbG1vc3QgYWxsIGRhdGEgd3JpdGVzLiAgV2hlbiBodmNzIGlzIGJlaW5nIHVzZWQgYXMgYSB0dHkgY29uZHVpdCB0byB0dW5uZWwKK2RhdGEgYmV0d2VlbiB0d28gcGFydGl0aW9ucyBbc2VlIFEgJiBBIGJlbG93XSB0aGlzIGlzIGEgaHVnZSBwcm9ibGVtCitiZWNhdXNlIHRoZSBzdGFuZGFyZCBMaW51eCBiZWhhdmlvciB3aGVuIGNhdCdpbmcgb3IgZGQnaW5nIGRhdGEgdG8gYSBkZXZpY2UKK2lzIHRvIG9wZW4gdGhlIHR0eSwgc2VuZCB0aGUgZGF0YSwgYW5kIHRoZW4gY2xvc2UgdGhlIHR0eS4gIElmIHRoaXMgZHJpdmVyCittYW51YWxseSB0ZXJtaW5hdGVkIHZ0eS1zZXJ2ZXIgY29ubmVjdGlvbnMgb24gdHR5IGNsb3NlIHRoaXMgd291bGQgY2xvc2UKK3RoZSB2dHktc2VydmVyIGFuZCB2dHkgY29ubmVjdGlvbiBiZWZvcmUgdGhlIHRhcmdldCB2dHkgaGFzIGhhZCBhIGNoYW5jZSB0bworZmV0Y2ggdGhlIGRhdGEuCisKK0FkZGl0aW9uYWxseSwgZGlzY29ubmVjdGluZyBhIHZ0eS1zZXJ2ZXIgYW5kIHZ0eSBvbmx5IG9uIG1vZHVsZSByZW1vdmFsIG9yCithZGFwdGVyIHJlbW92YWwgaXMgaW1wcmFjdGljYWwgYmVjYXVzZSBvdGhlciB2dHktc2VydmVycyBpbiBvdGhlcgorcGFydGl0aW9ucyBtYXkgcmVxdWlyZSB0aGUgdXNhZ2Ugb2YgdGhlIHRhcmdldCB2dHkgYXQgYW55IHRpbWUuCisKK0R1ZSB0byB0aGlzIGJlaGF2aW9yYWwgcmVzdHJpY3Rpb24gZGlzY29ubmVjdGlvbiBvZiB2dHktc2VydmVycyBmcm9tIHRoZQorY29ubmVjdGVkIHZ0eSBpcyBhIG1hbnVhbCBwcm9jZWR1cmUgdXNpbmcgYSB3cml0ZSB0byBhIHN5c2ZzIGF0dHJpYnV0ZQorb3V0bGluZWQgYmVsb3csIG9uIHRoZSBvdGhlciBoYW5kIHRoZSBpbml0aWFsIHZ0eS1zZXJ2ZXIgY29ubmVjdGlvbiB0byBhCit2dHkgaXMgZXN0YWJsaXNoZWQgYXV0b21hdGljYWxseSBieSB0aGlzIGRyaXZlci4gIE1hbnVhbCB2dHktc2VydmVyCitjb25uZWN0aW9uIGlzIG5ldmVyIHJlcXVpcmVkLgorCitJbiBvcmRlciB0byB0ZXJtaW5hdGUgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBhIHZ0eS1zZXJ2ZXIgYW5kIHZ0eSB0aGUKKyJ2dGVybV9zdGF0ZSIgc3lzZnMgYXR0cmlidXRlIHdpdGhpbiBlYWNoIHZ0eS1zZXJ2ZXIncyBzeXNmcyBlbnRyeSBpcyB1c2VkLgorUmVhZGluZyB0aGlzIGF0dHJpYnV0ZSByZXZlYWxzIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24gc3RhdGUgb2YgdGhlCit2dHktc2VydmVyIGFkYXB0ZXIuICBBIHplcm8gbWVhbnMgdGhhdCB0aGUgdnR5LXNlcnZlciBpcyBub3QgY29ubmVjdGVkIHRvIGEKK3Z0eS4gIEEgb25lIGluZGljYXRlcyB0aGF0IGEgY29ubmVjdGlvbiBpcyBhY3RpdmUuCisKK1dyaXRpbmcgYSAnMCcgKHplcm8pIHRvIHRoZSB2dGVybV9zdGF0ZSBhdHRyaWJ1dGUgd2lsbCBkaXNjb25uZWN0IHRoZSBWVEVSTQorY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSB2dHktc2VydmVyIGFuZCB0YXJnZXQgdnR5IE9OTFkgaWYgdGhlIHZ0ZXJtX3N0YXRlCitwcmV2aW91c2x5IHJlYWQgJzEnLiAgVGhlIHdyaXRlIGRpcmVjdGl2ZSBpcyBpZ25vcmVkIGlmIHRoZSB2dGVybV9zdGF0ZQorcmVhZCAnMCcgb3IgaWYgYW55IHZhbHVlIG90aGVyIHRoYW4gJzAnIHdhcyB3cml0dGVuIHRvIHRoZSB2dGVybV9zdGF0ZQorYXR0cmlidXRlLiAgVGhlIGZvbGxvd2luZyBleGFtcGxlIHdpbGwgc2hvdyB0aGUgbWV0aG9kIHVzZWQgZm9yIHZlcmlmeWluZwordGhlIHZ0eS1zZXJ2ZXIgY29ubmVjdGlvbiBzdGF0dXMgYW5kIGRpc2Nvbm5lY3RpbmcgYSB2dHktc2VydmVyIGNvbm5lY3Rpb24uCisKKwlQb3c1Oi9zeXMvYnVzL3Zpby9kcml2ZXJzL2h2Y3MvMzAwMDAwMDQgIyBjYXQgdnRlcm1fc3RhdGUKKwkxCisKKwlQb3c1Oi9zeXMvYnVzL3Zpby9kcml2ZXJzL2h2Y3MvMzAwMDAwMDQgIyBlY2hvIDAgPiB2dGVybV9zdGF0ZQorCisJUG93NTovc3lzL2J1cy92aW8vZHJpdmVycy9odmNzLzMwMDAwMDA0ICMgY2F0IHZ0ZXJtX3N0YXRlCisJMAorCitBbGwgdnR5LXNlcnZlciBjb25uZWN0aW9ucyBhcmUgYXV0b21hdGljYWxseSB0ZXJtaW5hdGVkIHdoZW4gdGhlIGRldmljZSBpcworaG90cGx1ZyByZW1vdmVkIGFuZCB3aGVuIHRoZSBtb2R1bGUgaXMgcmVtb3ZlZC4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis3LiBDb25maWd1cmF0aW9uCisKK0VhY2ggdnR5LXNlcnZlciBoYXMgYSBzeXNmcyBlbnRyeSBpbiB0aGUgL3N5cy9kZXZpY2VzL3ZpbyBkaXJlY3RvcnksIHdoaWNoCitpcyBzeW1saW5rZWQgaW4gc2V2ZXJhbCBvdGhlciBzeXNmcyB0cmVlIGRpcmVjdG9yaWVzLCBub3RhYmx5IHVuZGVyIHRoZQoraHZjcyBkcml2ZXIgZW50cnksIHdoaWNoIGxvb2tzIGxpa2UgdGhlIGZvbGxvd2luZyBleGFtcGxlOgorCisJUG93NTovc3lzL2J1cy92aW8vZHJpdmVycy9odmNzICMgbHMKKwkuICAuLiAgMzAwMDAwMDMgIDMwMDAwMDA0ICByZXNjYW4KKworQnkgZGVzaWduLCBmaXJtd2FyZSBub3RpZmllcyB0aGUgaHZjcyBkcml2ZXIgb2YgdnR5LXNlcnZlciBsaWZldGltZXMgYW5kCitwYXJ0bmVyIHZ0eSByZW1vdmFscyBidXQgbm90IHRoZSBhZGRpdGlvbiBvZiBwYXJ0bmVyIHZ0eXMuICBTaW5jZSBhbiBITUMKK1N1cGVyIEFkbWluIGNhbiBhZGQgcGFydG5lciBpbmZvIGR5bmFtaWNhbGx5IHdlIGhhdmUgcHJvdmlkZWQgdGhlIGh2Y3MKK2RyaXZlciBzeXNmcyBkaXJlY3Rvcnkgd2l0aCB0aGUgInJlc2NhbiIgdXBkYXRlIGF0dHJpYnV0ZSB3aGljaCB3aWxsIHF1ZXJ5CitmaXJtd2FyZSBhbmQgdXBkYXRlIHRoZSBwYXJ0bmVyIGluZm8gZm9yIGFsbCB0aGUgdnR5LXNlcnZlcnMgdGhhdCB0aGlzCitkcml2ZXIgbWFuYWdlcy4gIFdyaXRpbmcgYSAnMScgdG8gdGhlIGF0dHJpYnV0ZSB0cmlnZ2VycyB0aGUgdXBkYXRlLiAgQW4KK2V4cGxpY2l0IGV4YW1wbGUgZm9sbG93czoKKworCVBvdzU6L3N5cy9idXMvdmlvL2RyaXZlcnMvaHZjcyAjIGVjaG8gMSA+IHJlc2NhbgorCitSZWFkaW5nIHRoZSBhdHRyaWJ1dGUgd2lsbCBpbmRpY2F0ZSBhIHN0YXRlIG9mICcxJyBvciAnMCcuICBBIG9uZSBpbmRpY2F0ZXMKK3RoYXQgYW4gdXBkYXRlIGlzIGluIHByb2Nlc3MuICBBIHplcm8gaW5kaWNhdGVzIHRoYXQgYW4gdXBkYXRlIGhhcworY29tcGxldGVkIG9yIHdhcyBuZXZlciBleGVjdXRlZC4KKworVnR5LXNlcnZlciBlbnRyaWVzIGluIHRoaXMgZGlyZWN0b3J5IGFyZSBhIDMyIGJpdCBwYXJ0aXRpb24gdW5pcXVlIHVuaXQKK2FkZHJlc3MgdGhhdCBpcyBjcmVhdGVkIGJ5IGZpcm13YXJlLiAgQW4gZXhhbXBsZSB2dHktc2VydmVyIHN5c2ZzIGVudHJ5Citsb29rcyBsaWtlIHRoZSBmb2xsb3dpbmc6CisKKwlQb3c1Oi9zeXMvYnVzL3Zpby9kcml2ZXJzL2h2Y3MvMzAwMDAwMDQgIyBscworCS4gICBjdXJyZW50X3Z0eSAgIGRldnNwZWMgICAgICAgbmFtZSAgICAgICAgICBwYXJ0bmVyX3Z0eXMKKwkuLiAgaW5kZXggICAgICAgICBwYXJ0bmVyX2NsY3MgIHZ0ZXJtX3N0YXRlCisKK0VhY2ggZW50cnkgaXMgcHJvdmlkZWQsIGJ5IGRlZmF1bHQgd2l0aCBhICJuYW1lIiBhdHRyaWJ1dGUuICBSZWFkaW5nIHRoZQorIm5hbWUiIGF0dHJpYnV0ZSB3aWxsIHJldmVhbCB0aGUgZGV2aWNlIHR5cGUgYXMgc2hvd24gaW4gdGhlIGZvbGxvd2luZworZXhhbXBsZToKKworCVBvdzU6L3N5cy9idXMvdmlvL2RyaXZlcnMvaHZjcy8zMDAwMDAwMyAjIGNhdCBuYW1lCisJdnR5LXNlcnZlcgorCitFYWNoIGVudHJ5IGlzIGFsc28gcHJvdmlkZWQsIGJ5IGRlZmF1bHQsIHdpdGggYSAiZGV2c3BlYyIgYXR0cmlidXRlIHdoaWNoCityZXZlYWxzIHRoZSBmdWxsIGRldmljZSBzcGVjaWZpY2F0aW9uIHdoZW4gcmVhZCwgYXMgc2hvd24gaW4gdGhlIGZvbGxvd2luZworZXhhbXBsZToKKworCVBvdzU6L3N5cy9idXMvdmlvL2RyaXZlcnMvaHZjcy8zMDAwMDAwNCAjIGNhdCBkZXZzcGVjCisJL3ZkZXZpY2UvdnR5LXNlcnZlckAzMDAwMDAwNAorCitFYWNoIHZ0eS1zZXJ2ZXIgc3lzZnMgZGlyIGlzIHByb3ZpZGVkIHdpdGggdHdvIHJlYWQtb25seSBhdHRyaWJ1dGVzIHRoYXQKK3Byb3ZpZGUgbGlzdHMgb2YgZWFzaWx5IHBhcnNlZCBwYXJ0bmVyIHZ0eSBkYXRhOiAicGFydG5lcl92dHlzIiBhbmQKKyJwYXJ0bmVyX2NsY3MiLgorCisJUG93NTovc3lzL2J1cy92aW8vZHJpdmVycy9odmNzLzMwMDAwMDA0ICMgY2F0IHBhcnRuZXJfdnR5cworCTMwMDAwMDAwCisJMzAwMDAwMDEKKwkzMDAwMDAwMgorCTMwMDAwMDAwCisJMzAwMDAwMDAKKworCVBvdzU6L3N5cy9idXMvdmlvL2RyaXZlcnMvaHZjcy8zMDAwMDAwNCAjIGNhdCBwYXJ0bmVyX2NsY3MKKwlVNTExMi40MjguMTAzMDQ4QS1WMy1DMAorCVU1MTEyLjQyOC4xMDMwNDhBLVYzLUMyCisJVTUxMTIuNDI4LjEwMzA0OEEtVjMtQzMKKwlVNTExMi40MjguMTAzMDQ4QS1WNC1DMAorCVU1MTEyLjQyOC4xMDMwNDhBLVY1LUMwCisKK1JlYWRpbmcgcGFydG5lcl92dHlzIHJldHVybnMgYSBsaXN0IG9mIHBhcnRuZXIgdnR5cy4gIFZ0eSB1bml0IGFkZHJlc3MKK251bWJlcmluZyBpcyBvbmx5IHBlci1wYXJ0aXRpb24tdW5pcXVlIHNvIGVudHJpZXMgd2lsbCBmcmVxdWVudGx5IHJlcGVhdC4KKworUmVhZGluZyBwYXJ0bmVyX2NsY3MgcmV0dXJucyBhIGxpc3Qgb2YgImNvbnZlcmdlZCBsb2NhdGlvbiBjb2RlcyIgd2hpY2ggYXJlCitjb21wb3NlZCBvZiBhIHN5c3RlbSBzZXJpYWwgbnVtYmVyIGZvbGxvd2VkIGJ5ICItVioiLCB3aGVyZSB0aGUgJyonIGlzIHRoZQordGFyZ2V0IHBhcnRpdGlvbiBudW1iZXIsIGFuZCAiLUMqIiwgd2hlcmUgdGhlICcqJyBpcyB0aGUgc2xvdCBvZiB0aGUKK2FkYXB0ZXIuICBUaGUgZmlyc3QgdnR5IHBhcnRuZXIgY29ycmVzcG9uZHMgdG8gdGhlIGZpcnN0IGNsYyBpdGVtLCB0aGUKK3NlY29uZCB2dHkgcGFydG5lciB0byB0aGUgc2Vjb25kIGNsYyBpdGVtLCBldGMuCisKK0EgdnR5LXNlcnZlciBjYW4gb25seSBiZSBjb25uZWN0ZWQgdG8gYSBzaW5nbGUgdnR5IGF0IGEgdGltZS4gIFRoZSBlbnRyeSwKKyJjdXJyZW50X3Z0eSIgcHJpbnRzIHRoZSBjbGMgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBwYXJ0bmVyIHZ0eSB3aGVuCityZWFkLgorCitUaGUgY3VycmVudF92dHkgY2FuIGJlIGNoYW5nZWQgYnkgd3JpdGluZyBhIHZhbGlkIHBhcnRuZXIgY2xjIHRvIHRoZSBlbnRyeQorYXMgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlOgorCisJUG93NTovc3lzL2J1cy92aW8vZHJpdmVycy9odmNzLzMwMDAwMDA0ICMgZWNobyBVNTExMi40MjguMTAzMDQKKwk4QS1WNC1DMCA+IGN1cnJlbnRfdnR5CisKK0NoYW5naW5nIHRoZSBjdXJyZW50X3Z0eSB3aGVuIGEgdnR5LXNlcnZlciBpcyBhbHJlYWR5IGNvbm5lY3RlZCB0byBhIHZ0eQorZG9lcyBub3QgYWZmZWN0IHRoZSBjdXJyZW50IGNvbm5lY3Rpb24uICBUaGUgY2hhbmdlIHRha2VzIGVmZmVjdCB3aGVuIHRoZQorY3VycmVudGx5IG9wZW4gY29ubmVjdGlvbiBpcyBmcmVlZC4KKworSW5mb3JtYXRpb24gb24gdGhlICJ2dGVybV9zdGF0ZSIgYXR0cmlidXRlIHdhcyBjb3ZlcmVkIGVhcmxpZXIgb24gdGhlCitjaGFwdGVyIGVudGl0bGVkICJkaXNjb25uZWN0aW9uIi4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis4LiBRdWVzdGlvbnMgJiBBbnN3ZXJzOgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitROiBXaGF0IGFyZSB0aGUgc2VjdXJpdHkgY29uY2VybnMgaW52b2x2aW5nIGh2Y3M/CisKK0E6IFRoZXJlIGFyZSB0aHJlZSBtYWluIHNlY3VyaXR5IGNvbmNlcm5zOgorCisJMS4gVGhlIGNyZWF0b3Igb2YgdGhlIC9kZXYvaHZjcyogbm9kZXMgaGFzIHRoZSBhYmlsaXR5IHRvIHJlc3RyaWN0CisJdGhlIGFjY2VzcyBvZiB0aGUgZGV2aWNlIGVudHJpZXMgdG8gY2VydGFpbiB1c2VycyBvciBncm91cHMuICBJdAorCW1heSBiZSBiZXN0IHRvIGNyZWF0ZSBhIHNwZWNpYWwgaHZjcyBncm91cCBwcml2aWxlZ2UgZm9yIHByb3ZpZGluZworCWFjY2VzcyB0byBzeXN0ZW0gY29uc29sZXMuCisKKwkyLiBUbyBwcm92aWRlIG5ldHdvcmsgc2VjdXJpdHkgd2hlbiBncmFiYmluZyB0aGUgY29uc29sZSBpdCBpcworCXN1Z2dlc3RlZCB0aGF0IHRoZSB1c2VyIGNvbm5lY3QgdG8gdGhlIGNvbnNvbGUgaG9zdGluZyBwYXJ0aXRpb24KKwl1c2luZyBhIHNlY3VyZSBtZXRob2QsIHN1Y2ggYXMgU1NIIG9yIHNpdCBhdCBhIGhhcmR3YXJlIGNvbnNvbGUuCisKKwkzLiBNYWtlIHN1cmUgdG8gZXhpdCB0aGUgdXNlciBzZXNzaW9uIHdoZW4gZG9uZSB3aXRoIGEgY29uc29sZSBvcgorCXRoZSBuZXh0IHZ0eS1zZXJ2ZXIgY29ubmVjdGlvbiAod2hpY2ggbWF5IGJlIGZyb20gYW5vdGhlcgorCXBhcnRpdGlvbikgd2lsbCBleHBlcmllbmNlIHRoZSBwcmV2aW91c2x5IGxvZ2dlZCBpbiBzZXNzaW9uLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1E6IEhvdyBkbyBJIG11bHRpcGxleCBhIGNvbnNvbGUgdGhhdCBJIGdyYWIgdGhyb3VnaCBodmNzIHNvIHRoYXQgb3RoZXIKK3Blb3BsZSBjYW4gc2VlIGl0OgorCitBOiBZb3UgY2FuIHVzZSAic2NyZWVuIiB0byBkaXJlY3RseSBjb25uZWN0IHRvIHRoZSAvZGV2L2h2Y3MqIGRldmljZSBhbmQKK3NldHVwIGEgc2Vzc2lvbiBvbiB5b3VyIG1hY2hpbmUgd2l0aCB0aGUgY29uc29sZSBncm91cCBwcml2aWxlZ2VzLiAgQXMKK3BvaW50ZWQgb3V0IGVhcmxpZXIgYnkgZGVmYXVsdCBzY3JlZW4gZG9lc24ndCBwcm92aWRlIHRoZSB0ZXJtY2FwIHNldHRpbmdzCitmb3IgbW9zdCB0ZXJtaW5hbCBlbXVsYXRvcnMgdG8gcHJvdmlkZSBhZGVxdWF0ZSBjaGFyYWN0ZXIgY29udmVyc2lvbiBmcm9tCit0ZXJtIHR5cGUgInNjcmVlbiIgdG8gb3RoZXJzLiAgVGhpcyBtZWFucyB0aGF0IGN1cnNlcyBiYXNlZCBwcm9ncmFtcyBtYXkKK25vdCBkaXNwbGF5IHByb3Blcmx5IGluIHNjcmVlbiBzZXNzaW9ucy4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitROiBXaHkgYXJlIHRoZSBjb2xvcnMgYWxsIG1lc3NlZCB1cD8KK1E6IFdoeSBhcmUgdGhlIGNvbnRyb2wgY2hhcmFjdGVycyBhY3Rpbmcgc3RyYW5nZSBvciBub3Qgd29ya2luZz8KK1E6IFdoeSBpcyB0aGUgY29uc29sZSBvdXRwdXQgYWxsIHN0cmFuZ2UgYW5kIHVuaW50ZWxsaWdpYmxlPworCitBOiBQbGVhc2Ugc2VlIHRoZSBwcmVjZWRpbmcgc2VjdGlvbiBvbiAiQ29ubmVjdGlvbiIgZm9yIGEgZGlzY3Vzc2lvbiBvZiBob3cKK2FwcGxpY2F0aW9ucyBjYW4gYWZmZWN0IHRoZSBkaXNwbGF5IG9mIGNoYXJhY3RlciBjb250cm9sIHNlcXVlbmNlcy4KK0FkZGl0aW9uYWxseSwganVzdCBiZWNhdXNlIHlvdSBsb2dnZWQgaW50byB0aGUgY29uc29sZSB1c2luZyBhbmQgeHRlcm0KK2RvZXNuJ3QgbWVhbiBzb21lb25lIGVsc2UgZGlkbid0IGxvZyBpbnRvIHRoZSBjb25zb2xlIHdpdGggdGhlIEhNQyBjb25zb2xlCisodnQzMjApIGJlZm9yZSB5b3UgYW5kIGxlYXZlIHRoZSBzZXNzaW9uIGxvZ2dlZCBpbi4gIFRoZSBiZXN0IHRoaW5nIHRvIGRvCitpcyB0byBleHBvcnQgVEVSTSB0byB0aGUgdGVybWluYWwgdHlwZSBvZiB5b3VyIHRlcm1pbmFsIGVtdWxhdG9yIHdoZW4geW91CitnZXQgdGhlIGNvbnNvbGUuICBBZGRpdGlvbmFsbHkgbWFrZSBzdXJlIHRvICJleGl0IiB0aGUgY29uc29sZSBiZWZvcmUgeW91CitkaXNjb25uZWN0IGZyb20gdGhlIGNvbnNvbGUuICBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgdGhlIG5leHQgdXNlciBnZXRzCit0aGVpciBvd24gVEVSTSB0eXBlIHNldCB3aGVuIHRoZXkgbG9naW4uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUTogV2hlbiBJIHRyeSB0byBDT05ORUNUIGtlcm1pdCB0byBhbiBodmNzIGRldmljZSBJIGdldDoKKyJTb3JyeSwgY2FuJ3Qgb3BlbiBjb25uZWN0aW9uOiAvZGV2L2h2Y3MqIldoYXQgaXMgaGFwcGVuaW5nPworCitBOiBTb21lIG90aGVyIFBvd2VyNSBjb25zb2xlIG1lY2hhbmlzbSBoYXMgYSBjb25uZWN0aW9uIHRvIHRoZSB2dHkgYW5kCitpc24ndCBnaXZpbmcgaXQgdXAuICBZb3UgY2FuIHRyeSB0byBmb3JjZSBkaXNjb25uZWN0IHRoZSBjb25zb2xlcyBmcm9tIHRoZQorSE1DIGJ5IHJpZ2h0IGNsaWNraW5nIG9uIHRoZSBwYXJ0aXRpb24gYW5kIHRoZW4gc2VsZWN0aW5nICJjbG9zZSB0ZXJtaW5hbCIuCitPdGhlcndpc2UgeW91IGhhdmUgdG8gaHVudCBkb3duIHRoZSBwZW9wbGUgd2hvIGhhdmUgY29uc29sZSBhdXRob3JpdHkuICBJdAoraXMgcG9zc2libGUgdGhhdCB5b3UgYWxyZWFkeSBoYXZlIHRoZSBjb25zb2xlIG9wZW4gdXNpbmcgYW5vdGhlciBrZXJtaXQKK3Nlc3Npb24gYW5kIGp1c3QgZm9yZ290IGFib3V0IGl0LiAgUGxlYXNlIHJldmlldyB0aGUgY29uc29sZSBvcHRpb25zIGZvcgorUG93ZXI1IHN5c3RlbXMgdG8gZGV0ZXJtaW5lIHRoZSBtYW55IHdheXMgYSBzeXN0ZW0gY29uc29sZSBjYW4gYmUgaGVsZC4KKworT1IKKworQTogQW5vdGhlciB1c2VyIG1heSBub3QgaGF2ZSBhIGNvbm5lY3Rpdml0eSBtZXRob2QgY3VycmVudGx5IGF0dGFjaGVkIHRvIGEKKy9kZXYvaHZjcyBkZXZpY2UgYnV0IHRoZSB2dGVybV9zdGF0ZSBtYXkgcmV2ZWFsIHRoYXQgdGhleSBzdGlsbCBoYXZlIHRoZQordnR5LXNlcnZlciBjb25uZWN0aW9uIGVzdGFibGlzaGVkLiAgVGhleSBuZWVkIHRvIGZyZWUgdGhpcyB1c2luZyB0aGUgbWV0aG9kCitvdXRsaW5lZCBpbiB0aGUgc2VjdGlvbiBvbiAiRGlzY29ubmVjdGlvbiIgaW4gb3JkZXIgZm9yIG90aGVycyB0byBjb25uZWN0Cit0byB0aGUgdGFyZ2V0IHZ0eS4KKworT1IKKworQTogVGhlIHVzZXIgcHJvZmlsZSB5b3UgYXJlIHVzaW5nIHRvIGV4ZWN1dGUga2VybWl0IHByb2JhYmx5IGRvZXNuJ3QgaGF2ZQorcGVybWlzc2lvbnMgdG8gdXNlIHRoZSAvZGV2L2h2Y3MqIGRldmljZS4KKworT1IKKworQTogWW91IHByb2JhYmx5IGhhdmVuJ3QgaW5zZXJ0ZWQgdGhlIGh2Y3Mua28gbW9kdWxlIHlldCBidXQgdGhlIC9kZXYvaHZjcyoKK2VudHJ5IHN0aWxsIGV4aXN0cyAob24gc3lzdGVtcyB3aXRob3V0IHVkZXYpLgorCitPUgorCitBOiBUaGVyZSBpcyBub3QgYSBjb3JyZXNwb25kaW5nIHZ0eS1zZXJ2ZXIgZGV2aWNlIHRoYXQgbWFwcyB0byBhbiBleGlzdGluZworL2Rldi9odmNzKiBlbnRyeS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitROiBXaGVuIEkgdHJ5IHRvIENPTk5FQ1Qga2VybWl0IHRvIGFuIGh2Y3MgZGV2aWNlIEkgZ2V0OgorIlNvcnJ5LCB3cml0ZSBhY2Nlc3MgdG8gVVVDUCBsb2NrZmlsZSBkaXJlY3RvcnkgZGVuaWVkLiIKKworQTogVGhlIC9kZXYvaHZjcyogZW50cnkgeW91IGhhdmUgc3BlY2lmaWVkIGRvZXNuJ3QgZXhpc3Qgd2hlcmUgeW91IHNhaWQgaXQKK2RvZXM/ICBNYXliZSB5b3UgaGF2ZW4ndCBpbnNlcnRlZCB0aGUgbW9kdWxlIChvbiBzeXN0ZW1zIHdpdGggdWRldikuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUTogSWYgSSBhbHJlYWR5IGhhdmUgb25lIExpbnV4IHBhcnRpdGlvbiBpbnN0YWxsZWQgY2FuIEkgdXNlIGh2Y3Mgb24gc2FpZAorcGFydGl0aW9uIHRvIHByb3ZpZGUgdGhlIGNvbnNvbGUgZm9yIHRoZSBpbnN0YWxsIG9mIGEgc2Vjb25kIExpbnV4CitwYXJ0aXRpb24/CisKK0E6IFllcyBncmFudGVkIHRoYXQgeW91ciBhcmUgY29ubmVjdGVkIHRvIHRoZSAvZGV2L2h2Y3MqIGRldmljZSB1c2luZwora2VybWl0IG9yIGN1IG9yIHNvbWUgb3RoZXIgcHJvZ3JhbSB0aGF0IGRvZXNuJ3QgcHJvdmlkZSB0ZXJtaW5hbCBlbXVsYXRpb24uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUTogQ2FuIEkgY29ubmVjdCB0byBtb3JlIHRoYW4gb25lIHBhcnRpdGlvbidzIGNvbnNvbGUgYXQgYSB0aW1lIHVzaW5nIHRoaXMKK2RyaXZlcj8KKworQTogWWVzLiAgT2YgY291cnNlIHRoaXMgbWVhbnMgdGhhdCB0aGVyZSBtdXN0IGJlIG1vcmUgdGhhbiBvbmUgdnR5LXNlcnZlcgorY29uZmlndXJlZCBmb3IgdGhpcyBwYXJ0aXRpb24gYW5kIGVhY2ggbXVzdCBwb2ludCB0byBhIGRpc2Nvbm5lY3RlZCB2dHkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUTogRG9lcyB0aGUgaHZjcyBkcml2ZXIgc3VwcG9ydCBkeW5hbWljIChob3RwbHVnKSBhZGRpdGlvbiBvZiBkZXZpY2VzPworCitBOiBZZXMsIGlmIHlvdSBoYXZlIGRscGFyIGFuZCBob3RwbHVnIGVuYWJsZWQgZm9yIHlvdXIgc3lzdGVtIGFuZCBpdCBoYXMKK2JlZW4gYnVpbHQgaW50byB0aGUga2VybmVsIHRoZSBodmNzIGRyaXZlcnMgaXMgY29uZmlndXJlZCB0byBkeW5hbWljYWxseQoraGFuZGxlIGFkZGl0aW9ucyBvZiBuZXcgZGV2aWNlcyBhbmQgcmVtb3ZhbHMgb2YgdW51c2VkIGRldmljZXMuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUTogRm9yIHNvbWUgcmVhc29uIC9kZXYvaHZjcyogZG9lc24ndCBtYXAgdG8gdGhlIHNhbWUgdnR5LXNlcnZlciBhZGFwdGVyCithZnRlciBhIHJlYm9vdC4gIFdoYXQgaGFwcGVuZWQ/CisKK0E6IEFzc2lnbm1lbnQgb2YgdnR5LXNlcnZlciBhZGFwdGVycyB0byAvZGV2L2h2Y3MqIGVudHJpZXMgaXMgYWx3YXlzIGRvbmUKK2luIHRoZSBvcmRlciB0aGF0IHRoZSBhZGFwdGVycyBhcmUgZXhwb3NlZC4gIER1ZSB0byBob3RwbHVnIGNhcGFiaWxpdGllcyBvZgordGhpcyBkcml2ZXIgYXNzaWdubWVudCBvZiBob3RwbHVnIGFkZGVkIHZ0eS1zZXJ2ZXJzIG1heSBiZSBpbiBhIGRpZmZlcmVudAorb3JkZXIgdGhhbiBob3cgdGhleSB3b3VsZCBiZSBleHBvc2VkIG9uIG1vZHVsZSBsb2FkLiAgUmVib290aW5nIG9yCityZWxvYWRpbmcgdGhlIG1vZHVsZSBhZnRlciBkeW5hbWljIGFkZGl0aW9uIG1heSByZXN1bHQgaW4gdGhlIC9kZXYvaHZjcyoKK2FuZCB2dHktc2VydmVyIGNvdXBsaW5nIGNoYW5naW5nIGlmIGEgdnR5LXNlcnZlciBhZGFwdGVyIHdhcyBhZGRlZCBpbiBhCitzbG90IGJldHdlZW4gdHdvIG90aGVyIHZ0eS1zZXJ2ZXIgYWRhcHRlcnMuICBSZWZlciB0byB0aGUgc2VjdGlvbiBhYm92ZQorb24gaG93IHRvIGRldGVybWluZSB3aGljaCB2dHktc2VydmVyIGdvZXMgd2l0aCB3aGljaCAvZGV2L2h2Y3MqIG5vZGUuCitIaW50OyBsb29rIGF0IHRoZSBzeXNmcyAiaW5kZXgiIGF0dHJpYnV0ZSBmb3IgdGhlIHZ0eS1zZXJ2ZXIuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUTogQ2FuIEkgdXNlIC9kZXYvaHZjcyogYXMgYSBjb25kdWl0IHRvIGFub3RoZXIgcGFydGl0aW9uIGFuZCB1c2UgYSB0dHkKK2RldmljZSBvbiB0aGF0IHBhcnRpdGlvbiBhcyB0aGUgb3RoZXIgZW5kIG9mIHRoZSBwaXBlPworCitBOiBZZXMsIG9uIFBvd2VyNSBwbGF0Zm9ybXMgdGhlIGh2Y19jb25zb2xlIGRyaXZlciBwcm92aWRlcyBhIHR0eSBpbnRlcmZhY2UKK2ZvciBleHRyYSAvZGV2L2h2YyogZGV2aWNlcyAod2hlcmUgL2Rldi9odmMwIGlzIG1vc3QgbGlrZWx5IHRoZSBjb25zb2xlKS4KK0luIG9yZGVyIHRvIGdldCBhIHR0eSBjb25kdWl0IHdvcmtpbmcgYmV0d2VlbiB0aGUgdHdvIHBhcnRpdGlvbnMgdGhlIEhNQworU3VwZXIgQWRtaW4gbXVzdCBjcmVhdGUgYW4gYWRkaXRpb25hbCAic2VyaWFsIHNlcnZlciIgZm9yIHRoZSB0YXJnZXQKK3BhcnRpdGlvbiB3aXRoIHRoZSBITUMgZ3VpIHdoaWNoIHdpbGwgc2hvdyB1cCBhcyAvZGV2L2h2Yyogd2hlbiB0aGUgdGFyZ2V0CitwYXJ0aXRpb24gaXMgcmVib290ZWQuCisKK1RoZSBITUMgU3VwZXIgQWRtaW4gdGhlbiBjcmVhdGVzIGFuIGFkZGl0aW9uYWwgInNlcmlhbCBjbGllbnQiIGZvciB0aGUKK2N1cnJlbnQgcGFydGl0aW9uIGFuZCBwb2ludHMgdGhpcyBhdCB0aGUgdGFyZ2V0IHBhcnRpdGlvbidzIG5ld2x5IGNyZWF0ZWQKKyJzZXJpYWwgc2VydmVyIiBhZGFwdGVyIChyZW1lbWJlciB0aGUgc2xvdCkuICBUaGlzIHNob3dzIHVwIGFzIGFuCithZGRpdGlvbmFsIC9kZXYvaHZjcyogZGV2aWNlLgorCitOb3cgYSBwcm9ncmFtIG9uIHRoZSB0YXJnZXQgc3lzdGVtIGNhbiBiZSBjb25maWd1cmVkIHRvIHJlYWQgb3Igd3JpdGUgdG8KKy9kZXYvaHZjKiBhbmQgYW5vdGhlciBwcm9ncmFtIG9uIHRoZSBjdXJyZW50IHBhcnRpdGlvbiBjYW4gYmUgY29uZmlndXJlZCB0bworcmVhZCBvciB3cml0ZSB0byAvZGV2L2h2Y3MqLiAgTm93IHlvdSBoYXZlIGEgdHR5IGNvbmR1aXQgYmV0d2VlbiB0d28KK3BhcnRpdGlvbnMuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorOS4gUmVwb3J0aW5nIEJ1Z3M6CisKK1RoZSBwcm9wZXIgY2hhbm5lbCBmb3IgcmVwb3J0aW5nIGJ1Z3MgaXMgZWl0aGVyIHRocm91Z2ggdGhlIExpbnV4IE9TCitkaXN0cmlidXRpb24gY29tcGFueSB0aGF0IHByb3ZpZGVkIHlvdXIgT1Mgb3IgYnkgcG9zdGluZyBpc3N1ZXMgdG8gdGhlCitQb3dlclBDIGRldmVsb3BtZW50IG1haWxpbmcgbGlzdCBhdDoKKworbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcKKworVGhpcyByZXF1ZXN0IGlzIHRvIHByb3ZpZGUgYSBkb2N1bWVudGVkIGFuZCBzZWFyY2hhYmxlIHB1YmxpYyBleGNoYW5nZQorb2YgdGhlIHByb2JsZW1zIGFuZCBzb2x1dGlvbnMgc3Vycm91bmRpbmcgdGhpcyBkcml2ZXIgZm9yIHRoZSBiZW5lZml0IG9mCithbGwgdXNlcnMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VycGMvbXBjNTJ4eC50eHQgYi9Eb2N1bWVudGF0aW9uL3Bvd2VycGMvbXBjNTJ4eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ1NDBhMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXJwYy9tcGM1Mnh4LnR4dApAQCAtMCwwICsxLDM5IEBACitMaW51eCAyLjYueCBvbiBNUEM1Mnh4IGZhbWlseQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRm9yIHRoZSBsYXRlc3QgaW5mbywgZ28gdG8gaHR0cDovL3d3dy4yNDZ0TnQuY29tL21wYzUyeHgvCisKK1RvIGNvbXBpbGUvdXNlIDoKKworICAtIFUtQm9vdDoKKyAgICAgIyA8ZWRpdCBNYWtlZmlsZSB0byBzZXQgQVJDSD1wcGMgJiBDUk9TU19DT01QSUxFPS4uLiAoIGFsc28gRVhUUkFWRVJTSU9OCisgICAgICAgIGlmIHlvdSB3aXNoIHRvICkuCisgICAgICMgbWFrZSBsaXRlNTIwMF9kZWZjb25maWcKKyAgICAgIyBtYWtlIHVJbWFnZQorCisgICAgIHRoZW4sIG9uIFUtYm9vdDoKKyAgICAgPT4gdGZ0cGJvb3QgMjAwMDAwIHVJbWFnZQorICAgICA9PiB0ZnRwYm9vdCA0MDAwMDAgcFJhbWRpc2sKKyAgICAgPT4gYm9vdG0gMjAwMDAwIDQwMDAwMAorCisgIC0gREJ1ZzoKKyAgICAgIyA8ZWRpdCBNYWtlZmlsZSB0byBzZXQgQVJDSD1wcGMgJiBDUk9TU19DT01QSUxFPS4uLiAoIGFsc28gRVhUUkFWRVJTSU9OCisgICAgICAgIGlmIHlvdSB3aXNoIHRvICkuCisgICAgICMgbWFrZSBsaXRlNTIwMF9kZWZjb25maWcKKyAgICAgIyBjcCB5b3VyX2luaXRyZC5neiBhcmNoL3BwYy9ib290L2ltYWdlcy9yYW1kaXNrLmltYWdlLmd6CisgICAgICMgbWFrZSB6SW1hZ2UuaW5pdHJkCisgICAgICMgbWFrZQorCisgICAgIHRoZW4gaW4gREJ1ZzoKKyAgICAgREJ1Zz4gZG4gLWkgekltYWdlLmluaXRyZC5saXRlNTIwMAorCisKK1NvbWUgcmVtYXJrcyA6CisgLSBUaGUgcG9ydCBpcyBuYW1lZCBtcGM1Mnh4eCwgYW5kIGNvbmZpZyBvcHRpb25zIGFyZSBQUENfTVBDNTJ4eC4gVGhlIE1HVDUxMDAKKyAgIGlzIG5vdCBzdXBwb3J0ZWQsIGFuZCBJJ20gbm90IHN1cmUgYW55b25lIGlzIGludGVyZXN0aW5nIGluIHdvcmtpbmcgb24gaXQKKyAgIHNvLiBJIGRpZG4ndCB0b29rIDV4eHggYmVjYXVzZSB0aGVyZSdzIGFwcGFyZW50bHkgYSBsb3Qgb2YgNXh4eCB0aGF0IGhhdmUKKyAgIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgTVBDNTIwMC4gSSBhbHNvIGluY2x1ZGVkIHRoZSAnTVBDJyBmb3IgdGhlIHNhbWUKKyAgIHJlYXNvbi4KKyAtIE9mIGNvdXJzZSwgSSBpbnNwaXJlZCBteXNlbGYgZnJvbSB0aGUgMi40IHBvcnQuIElmIHlvdSB0aGluayBJIGZvcmdvdCB0bworICAgbWVudGlvbiB5b3UveW91ciBjb21wYW55IGluIHRoZSBjb3B5cmlnaHQgb2Ygc29tZSBjb2RlLCBJJ2xsIGNvcnJlY3QgaXQKKyAgIEFTQVAuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VycGMvcGNpX2lvdl9yZXNvdXJjZV9vbl9wb3dlcm52LnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXJwYy9wY2lfaW92X3Jlc291cmNlX29uX3Bvd2VybnYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1NWM1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VycGMvcGNpX2lvdl9yZXNvdXJjZV9vbl9wb3dlcm52LnR4dApAQCAtMCwwICsxLDMwMSBAQAorV2VpIFlhbmcgPHdlaXlhbmdAbGludXgudm5ldC5pYm0uY29tPgorQmVuamFtaW4gSGVycmVuc2NobWlkdCA8YmVuaEBhdTEuaWJtLmNvbT4KK0Jqb3JuIEhlbGdhYXMgPGJoZWxnYWFzQGdvb2dsZS5jb20+CisyNiBBdWcgMjAxNAorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgcmVxdWlyZW1lbnQgZnJvbSBoYXJkd2FyZSBmb3IgUENJIE1NSU8gcmVzb3VyY2UKK3NpemluZyBhbmQgYXNzaWdubWVudCBvbiBQb3dlcktWTSBhbmQgaG93IGdlbmVyaWMgUENJIGNvZGUgaGFuZGxlcyB0aGlzCityZXF1aXJlbWVudC4gVGhlIGZpcnN0IHR3byBzZWN0aW9ucyBkZXNjcmliZSB0aGUgY29uY2VwdHMgb2YgUGFydGl0aW9uYWJsZQorRW5kcG9pbnRzIGFuZCB0aGUgaW1wbGVtZW50YXRpb24gb24gUDggKElPREEyKS4gVGhlIG5leHQgdHdvIHNlY3Rpb25zIHRhbGtzCithYm91dCBjb25zaWRlcmF0aW9ucyBvbiBlbmFibGluZyBTUklPViBvbiBJT0RBMi4KKworMS4gSW50cm9kdWN0aW9uIHRvIFBhcnRpdGlvbmFibGUgRW5kcG9pbnRzCisKK0EgUGFydGl0aW9uYWJsZSBFbmRwb2ludCAoUEUpIGlzIGEgd2F5IHRvIGdyb3VwIHRoZSB2YXJpb3VzIHJlc291cmNlcworYXNzb2NpYXRlZCB3aXRoIGEgZGV2aWNlIG9yIGEgc2V0IG9mIGRldmljZXMgdG8gcHJvdmlkZSBpc29sYXRpb24gYmV0d2VlbgorcGFydGl0aW9ucyAoaS5lLiwgZmlsdGVyaW5nIG9mIERNQSwgTVNJcyBldGMuKSBhbmQgdG8gcHJvdmlkZSBhIG1lY2hhbmlzbQordG8gZnJlZXplIGEgZGV2aWNlIHRoYXQgaXMgY2F1c2luZyBlcnJvcnMgaW4gb3JkZXIgdG8gbGltaXQgdGhlIHBvc3NpYmlsaXR5CitvZiBwcm9wYWdhdGlvbiBvZiBiYWQgZGF0YS4KKworVGhlcmUgaXMgdGh1cywgaW4gSFcsIGEgdGFibGUgb2YgUEUgc3RhdGVzIHRoYXQgY29udGFpbnMgYSBwYWlyIG9mICJmcm96ZW4iCitzdGF0ZSBiaXRzIChvbmUgZm9yIE1NSU8gYW5kIG9uZSBmb3IgRE1BLCB0aGV5IGdldCBzZXQgdG9nZXRoZXIgYnV0IGNhbiBiZQorY2xlYXJlZCBpbmRlcGVuZGVudGx5KSBmb3IgZWFjaCBQRS4KKworV2hlbiBhIFBFIGlzIGZyb3plbiwgYWxsIHN0b3JlcyBpbiBhbnkgZGlyZWN0aW9uIGFyZSBkcm9wcGVkIGFuZCBhbGwgbG9hZHMKK3JldHVybiBhbGwgMSdzIHZhbHVlLiBNU0lzIGFyZSBhbHNvIGJsb2NrZWQuIFRoZXJlJ3MgYSBiaXQgbW9yZSBzdGF0ZSB0aGF0CitjYXB0dXJlcyB0aGluZ3MgbGlrZSB0aGUgZGV0YWlscyBvZiB0aGUgZXJyb3IgdGhhdCBjYXVzZWQgdGhlIGZyZWV6ZSBldGMuLCBidXQKK3RoYXQncyBub3QgY3JpdGljYWwuCisKK1RoZSBpbnRlcmVzdGluZyBwYXJ0IGlzIGhvdyB0aGUgdmFyaW91cyBQQ0llIHRyYW5zYWN0aW9ucyAoTU1JTywgRE1BLCAuLi4pCithcmUgbWF0Y2hlZCB0byB0aGVpciBjb3JyZXNwb25kaW5nIFBFcy4KKworVGhlIGZvbGxvd2luZyBzZWN0aW9uIHByb3ZpZGVzIGEgcm91Z2ggZGVzY3JpcHRpb24gb2Ygd2hhdCB3ZSBoYXZlIG9uIFA4CisoSU9EQTIpLiAgS2VlcCBpbiBtaW5kIHRoYXQgdGhpcyBpcyBhbGwgcGVyIFBIQiAoUENJIGhvc3QgYnJpZGdlKS4gIEVhY2ggUEhCCitpcyBhIGNvbXBsZXRlbHkgc2VwYXJhdGUgSFcgZW50aXR5IHRoYXQgcmVwbGljYXRlcyB0aGUgZW50aXJlIGxvZ2ljLCBzbyBoYXMKK2l0cyBvd24gc2V0IG9mIFBFcywgZXRjLgorCisyLiBJbXBsZW1lbnRhdGlvbiBvZiBQYXJ0aXRpb25hYmxlIEVuZHBvaW50cyBvbiBQOCAoSU9EQTIpCisKK1A4IHN1cHBvcnRzIHVwIHRvIDI1NiBQYXJ0aXRpb25hYmxlIEVuZHBvaW50cyBwZXIgUEhCLgorCisgICogSW5ib3VuZAorCisgICAgRm9yIERNQSwgTVNJcyBhbmQgaW5ib3VuZCBQQ0llIGVycm9yIG1lc3NhZ2VzLCB3ZSBoYXZlIGEgdGFibGUgKGluCisgICAgbWVtb3J5IGJ1dCBhY2Nlc3NlZCBpbiBIVyBieSB0aGUgY2hpcCkgdGhhdCBwcm92aWRlcyBhIGRpcmVjdAorICAgIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gYSBQQ0llIFJJRCAoYnVzL2Rldi9mbikgd2l0aCBhIFBFIG51bWJlci4KKyAgICBXZSBjYWxsIHRoaXMgdGhlIFJUVC4KKworICAgIC0gRm9yIERNQSB3ZSB0aGVuIHByb3ZpZGUgYW4gZW50aXJlIGFkZHJlc3Mgc3BhY2UgZm9yIGVhY2ggUEUgdGhhdCBjYW4KKyAgICAgIGNvbnRhaW4gdHdvICJ3aW5kb3dzIiwgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBQQ0kgYWRkcmVzcyBiaXQgNTkuCisgICAgICBFYWNoIHdpbmRvdyBjYW4gYmUgY29uZmlndXJlZCB0byBiZSByZW1hcHBlZCB2aWEgYSAiVENFIHRhYmxlIiAoSU9NTVUKKyAgICAgIHRyYW5zbGF0aW9uIHRhYmxlKSwgd2hpY2ggaGFzIHZhcmlvdXMgY29uZmlndXJhYmxlIGNoYXJhY3RlcmlzdGljcworICAgICAgbm90IGRlc2NyaWJlZCBoZXJlLgorCisgICAgLSBGb3IgTVNJcywgd2UgaGF2ZSB0d28gd2luZG93cyBpbiB0aGUgYWRkcmVzcyBzcGFjZSAob25lIGF0IHRoZSB0b3Agb2YKKyAgICAgIHRoZSAzMi1iaXQgc3BhY2UgYW5kIG9uZSBtdWNoIGhpZ2hlcikgd2hpY2gsIHZpYSBhIGNvbWJpbmF0aW9uIG9mIHRoZQorICAgICAgYWRkcmVzcyBhbmQgTVNJIHZhbHVlLCB3aWxsIHJlc3VsdCBpbiBvbmUgb2YgdGhlIDIwNDggaW50ZXJydXB0cyBwZXIKKyAgICAgIGJyaWRnZSBiZWluZyB0cmlnZ2VyZWQuICBUaGVyZSdzIGEgUEUjIGluIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlcgorICAgICAgZGVzY3JpcHRvciB0YWJsZSBhcyB3ZWxsIHdoaWNoIGlzIGNvbXBhcmVkIHdpdGggdGhlIFBFIyBvYnRhaW5lZCBmcm9tCisgICAgICB0aGUgUlRUIHRvICJhdXRob3JpemUiIHRoZSBkZXZpY2UgdG8gZW1pdCB0aGF0IHNwZWNpZmljIGludGVycnVwdC4KKworICAgIC0gRXJyb3IgbWVzc2FnZXMganVzdCB1c2UgdGhlIFJUVC4KKworICAqIE91dGJvdW5kLiAgVGhhdCdzIHdoZXJlIHRoZSB0cmlja3kgcGFydCBpcy4KKworICAgIExpa2Ugb3RoZXIgUENJIGhvc3QgYnJpZGdlcywgdGhlIFBvd2VyOCBJT0RBMiBQSEIgc3VwcG9ydHMgIndpbmRvd3MiCisgICAgZnJvbSB0aGUgQ1BVIGFkZHJlc3Mgc3BhY2UgdG8gdGhlIFBDSSBhZGRyZXNzIHNwYWNlLiAgVGhlcmUgaXMgb25lIE0zMgorICAgIHdpbmRvdyBhbmQgc2l4dGVlbiBNNjQgd2luZG93cy4gIFRoZXkgaGF2ZSBkaWZmZXJlbnQgY2hhcmFjdGVyaXN0aWNzLgorICAgIEZpcnN0IHdoYXQgdGhleSBoYXZlIGluIGNvbW1vbjogdGhleSBmb3J3YXJkIGEgY29uZmlndXJhYmxlIHBvcnRpb24gb2YKKyAgICB0aGUgQ1BVIGFkZHJlc3Mgc3BhY2UgdG8gdGhlIFBDSWUgYnVzIGFuZCBtdXN0IGJlIG5hdHVyYWxseSBhbGlnbmVkCisgICAgcG93ZXIgb2YgdHdvIGluIHNpemUuICBUaGUgcmVzdCBpcyBkaWZmZXJlbnQ6CisKKyAgICAtIFRoZSBNMzIgd2luZG93OgorCisgICAgICAqIElzIGxpbWl0ZWQgdG8gNEdCIGluIHNpemUuCisKKyAgICAgICogRHJvcHMgdGhlIHRvcCBiaXRzIG9mIHRoZSBhZGRyZXNzIChhYm92ZSB0aGUgc2l6ZSkgYW5kIHJlcGxhY2VzCisJdGhlbSB3aXRoIGEgY29uZmlndXJhYmxlIHZhbHVlLiAgVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCB0byBnZW5lcmF0ZQorCTMyLWJpdCBQQ0llIGFjY2Vzc2VzLiAgV2UgY29uZmlndXJlIHRoYXQgd2luZG93IGF0IGJvb3QgZnJvbSBGVyBhbmQKKwlkb24ndCB0b3VjaCBpdCBmcm9tIExpbnV4OyBpdCdzIHVzdWFsbHkgc2V0IHRvIGZvcndhcmQgYSAyR0IKKwlwb3J0aW9uIG9mIGFkZHJlc3Mgc3BhY2UgZnJvbSB0aGUgQ1BVIHRvIFBDSWUKKwkweDgwMDBfMDAwMC4uMHhmZmZmX2ZmZmYuICAoTm90ZTogVGhlIHRvcCA2NEtCIGFyZSBhY3R1YWxseQorCXJlc2VydmVkIGZvciBNU0lzIGJ1dCB0aGlzIGlzIG5vdCBhIHByb2JsZW0gYXQgdGhpcyBwb2ludDsgd2UganVzdAorCW5lZWQgdG8gZW5zdXJlIExpbnV4IGRvZXNuJ3QgYXNzaWduIGFueXRoaW5nIHRoZXJlLCB0aGUgTTMyIGxvZ2ljCisJaWdub3JlcyB0aGF0IGhvd2V2ZXIgYW5kIHdpbGwgZm9yd2FyZCBpbiB0aGF0IHNwYWNlIGlmIHdlIHRyeSkuCisKKyAgICAgICogSXQgaXMgZGl2aWRlZCBpbnRvIDI1NiBzZWdtZW50cyBvZiBlcXVhbCBzaXplLiAgQSB0YWJsZSBpbiB0aGUgY2hpcAorCW1hcHMgZWFjaCBzZWdtZW50IHRvIGEgUEUjLiAgVGhhdCBhbGxvd3MgcG9ydGlvbnMgb2YgdGhlIE1NSU8gc3BhY2UKKwl0byBiZSBhc3NpZ25lZCB0byBQRXMgb24gYSBzZWdtZW50IGdyYW51bGFyaXR5LiAgRm9yIGEgMkdCIHdpbmRvdywKKwl0aGUgc2VnbWVudCBncmFudWxhcml0eSBpcyAyR0IvMjU2ID0gOE1CLgorCisgICAgTm93LCB0aGlzIGlzIHRoZSAibWFpbiIgd2luZG93IHdlIHVzZSBpbiBMaW51eCB0b2RheSAoZXhjbHVkaW5nCisgICAgU1ItSU9WKS4gIFdlIGJhc2ljYWxseSB1c2UgdGhlIHRyaWNrIG9mIGZvcmNpbmcgdGhlIGJyaWRnZSBNTUlPIHdpbmRvd3MKKyAgICBvbnRvIGEgc2VnbWVudCBhbGlnbm1lbnQvZ3JhbnVsYXJpdHkgc28gdGhhdCB0aGUgc3BhY2UgYmVoaW5kIGEgYnJpZGdlCisgICAgY2FuIGJlIGFzc2lnbmVkIHRvIGEgUEUuCisKKyAgICBJZGVhbGx5IHdlIHdvdWxkIGxpa2UgdG8gYmUgYWJsZSB0byBoYXZlIGluZGl2aWR1YWwgZnVuY3Rpb25zIGluIFBFcworICAgIGJ1dCB0aGF0IHdvdWxkIG1lYW4gdXNpbmcgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBhZGRyZXNzIGFsbG9jYXRpb24KKyAgICBzY2hlbWUgd2hlcmUgaW5kaXZpZHVhbCBmdW5jdGlvbiBCQVJzIGNhbiBiZSAiZ3JvdXBlZCIgdG8gZml0IGluIG9uZSBvcgorICAgIG1vcmUgc2VnbWVudHMuCisKKyAgICAtIFRoZSBNNjQgd2luZG93czoKKworICAgICAgKiBNdXN0IGJlIGF0IGxlYXN0IDI1Nk1CIGluIHNpemUuCisKKyAgICAgICogRG8gbm90IHRyYW5zbGF0ZSBhZGRyZXNzZXMgKHRoZSBhZGRyZXNzIG9uIFBDSWUgaXMgdGhlIHNhbWUgYXMgdGhlCisJYWRkcmVzcyBvbiB0aGUgUG93ZXJCdXMpLiAgVGhlcmUgaXMgYSB3YXkgdG8gYWxzbyBzZXQgdGhlIHRvcCAxNAorCWJpdHMgd2hpY2ggYXJlIG5vdCBjb252ZXllZCBieSBQb3dlckJ1cyBidXQgd2UgZG9uJ3QgdXNlIHRoaXMuCisKKyAgICAgICogQ2FuIGJlIGNvbmZpZ3VyZWQgdG8gYmUgc2VnbWVudGVkLiAgV2hlbiBub3Qgc2VnbWVudGVkLCB3ZSBjYW4KKwlzcGVjaWZ5IHRoZSBQRSMgZm9yIHRoZSBlbnRpcmUgd2luZG93LiAgV2hlbiBzZWdtZW50ZWQsIGEgd2luZG93CisJaGFzIDI1NiBzZWdtZW50czsgaG93ZXZlciwgdGhlcmUgaXMgbm8gdGFibGUgZm9yIG1hcHBpbmcgYSBzZWdtZW50CisJdG8gYSBQRSMuICBUaGUgc2VnbWVudCBudW1iZXIgKmlzKiB0aGUgUEUjLgorCisgICAgICAqIFN1cHBvcnQgb3ZlcmxhcHMuICBJZiBhbiBhZGRyZXNzIGlzIGNvdmVyZWQgYnkgbXVsdGlwbGUgd2luZG93cywKKwl0aGVyZSdzIGEgZGVmaW5lZCBvcmRlcmluZyBmb3Igd2hpY2ggd2luZG93IGFwcGxpZXMuCisKKyAgICBXZSBoYXZlIGNvZGUgKGZhaXJseSBuZXcgY29tcGFyZWQgdG8gdGhlIE0zMiBzdHVmZikgdGhhdCBleHBsb2l0cyB0aGF0CisgICAgZm9yIGxhcmdlIEJBUnMgaW4gNjQtYml0IHNwYWNlOgorCisgICAgV2UgY29uZmlndXJlIGFuIE02NCB3aW5kb3cgdG8gY292ZXIgdGhlIGVudGlyZSByZWdpb24gb2YgYWRkcmVzcyBzcGFjZQorICAgIHRoYXQgaGFzIGJlZW4gYXNzaWduZWQgYnkgRlcgZm9yIHRoZSBQSEIgKGFib3V0IDY0R0IsIGlnbm9yZSB0aGUgc3BhY2UKKyAgICBmb3IgdGhlIE0zMiwgaXQgY29tZXMgb3V0IG9mIGEgZGlmZmVyZW50ICJyZXNlcnZlIikuICBXZSBjb25maWd1cmUgaXQKKyAgICBhcyBzZWdtZW50ZWQuCisKKyAgICBUaGVuIHdlIGRvIHRoZSBzYW1lIHRoaW5nIGFzIHdpdGggTTMyLCB1c2luZyB0aGUgYnJpZGdlIGFsaWdubWVudAorICAgIHRyaWNrLCB0byBtYXRjaCB0byB0aG9zZSBnaWFudCBzZWdtZW50cy4KKworICAgIFNpbmNlIHdlIGNhbm5vdCByZW1hcCwgd2UgaGF2ZSB0d28gYWRkaXRpb25hbCBjb25zdHJhaW50czoKKworICAgIC0gV2UgZG8gdGhlIFBFIyBhbGxvY2F0aW9uICphZnRlciogdGhlIDY0LWJpdCBzcGFjZSBoYXMgYmVlbiBhc3NpZ25lZAorICAgICAgYmVjYXVzZSB0aGUgYWRkcmVzc2VzIHdlIHVzZSBkaXJlY3RseSBkZXRlcm1pbmUgdGhlIFBFIy4gIFdlIHRoZW4KKyAgICAgIHVwZGF0ZSB0aGUgTTMyIFBFIyBmb3IgdGhlIGRldmljZXMgdGhhdCB1c2UgYm90aCAzMi1iaXQgYW5kIDY0LWJpdAorICAgICAgc3BhY2VzIG9yIGFzc2lnbiB0aGUgcmVtYWluaW5nIFBFIyB0byAzMi1iaXQgb25seSBkZXZpY2VzLgorCisgICAgLSBXZSBjYW5ub3QgImdyb3VwIiBzZWdtZW50cyBpbiBIVywgc28gaWYgYSBkZXZpY2UgZW5kcyB1cCB1c2luZyBtb3JlCisgICAgICB0aGFuIG9uZSBzZWdtZW50LCB3ZSBlbmQgdXAgd2l0aCBtb3JlIHRoYW4gb25lIFBFIy4gIFRoZXJlIGlzIGEgSFcKKyAgICAgIG1lY2hhbmlzbSB0byBtYWtlIHRoZSBmcmVlemUgc3RhdGUgY2FzY2FkZSB0byAiY29tcGFuaW9uIiBQRXMgYnV0CisgICAgICB0aGF0IG9ubHkgd29ya3MgZm9yIFBDSWUgZXJyb3IgbWVzc2FnZXMgKHR5cGljYWxseSB1c2VkIHNvIHRoYXQgaWYKKyAgICAgIHlvdSBmcmVlemUgYSBzd2l0Y2gsIGl0IGZyZWV6ZXMgYWxsIGl0cyBjaGlsZHJlbikuICBTbyB3ZSBkbyBpdCBpbgorICAgICAgU1cuICBXZSBsb3NlIGEgYml0IG9mIGVmZmVjdGl2ZW5lc3Mgb2YgRUVIIGluIHRoYXQgY2FzZSwgYnV0IHRoYXQncworICAgICAgdGhlIGJlc3Qgd2UgZm91bmQuICBTbyB3aGVuIGFueSBvZiB0aGUgUEVzIGZyZWV6ZXMsIHdlIGZyZWV6ZSB0aGUKKyAgICAgIG90aGVyIG9uZXMgZm9yIHRoYXQgImRvbWFpbiIuICBXZSB0aHVzIGludHJvZHVjZSB0aGUgY29uY2VwdCBvZgorICAgICAgIm1hc3RlciBQRSIgd2hpY2ggaXMgdGhlIG9uZSB1c2VkIGZvciBETUEsIE1TSXMsIGV0Yy4sIGFuZCAic2Vjb25kYXJ5CisgICAgICBQRXMiIHRoYXQgYXJlIHVzZWQgZm9yIHRoZSByZW1haW5pbmcgTTY0IHNlZ21lbnRzLgorCisgICAgV2Ugd291bGQgbGlrZSB0byBpbnZlc3RpZ2F0ZSB1c2luZyBhZGRpdGlvbmFsIE02NCB3aW5kb3dzIGluICJzaW5nbGUKKyAgICBQRSIgbW9kZSB0byBvdmVybGF5IG92ZXIgc3BlY2lmaWMgQkFScyB0byB3b3JrIGFyb3VuZCBzb21lIG9mIHRoYXQsIGZvcgorICAgIGV4YW1wbGUgZm9yIGRldmljZXMgd2l0aCB2ZXJ5IGxhcmdlIEJBUnMsIGUuZy4sIEdQVXMuICBJdCB3b3VsZCBtYWtlCisgICAgc2Vuc2UsIGJ1dCB3ZSBoYXZlbid0IGRvbmUgaXQgeWV0LgorCiszLiBDb25zaWRlcmF0aW9ucyBmb3IgU1ItSU9WIG9uIFBvd2VyS1ZNCisKKyAgKiBTUi1JT1YgQmFja2dyb3VuZAorCisgICAgVGhlIFBDSWUgU1ItSU9WIGZlYXR1cmUgYWxsb3dzIGEgc2luZ2xlIFBoeXNpY2FsIEZ1bmN0aW9uIChQRikgdG8KKyAgICBzdXBwb3J0IHNldmVyYWwgVmlydHVhbCBGdW5jdGlvbnMgKFZGcykuICBSZWdpc3RlcnMgaW4gdGhlIFBGJ3MgU1ItSU9WCisgICAgQ2FwYWJpbGl0eSBjb250cm9sIHRoZSBudW1iZXIgb2YgVkZzIGFuZCB3aGV0aGVyIHRoZXkgYXJlIGVuYWJsZWQuCisKKyAgICBXaGVuIFZGcyBhcmUgZW5hYmxlZCwgdGhleSBhcHBlYXIgaW4gQ29uZmlndXJhdGlvbiBTcGFjZSBsaWtlIG5vcm1hbAorICAgIFBDSSBkZXZpY2VzLCBidXQgdGhlIEJBUnMgaW4gVkYgY29uZmlnIHNwYWNlIGhlYWRlcnMgYXJlIHVudXN1YWwuICBGb3IKKyAgICBhIG5vbi1WRiBkZXZpY2UsIHNvZnR3YXJlIHVzZXMgQkFScyBpbiB0aGUgY29uZmlnIHNwYWNlIGhlYWRlciB0bworICAgIGRpc2NvdmVyIHRoZSBCQVIgc2l6ZXMgYW5kIGFzc2lnbiBhZGRyZXNzZXMgZm9yIHRoZW0uICBGb3IgVkYgZGV2aWNlcywKKyAgICBzb2Z0d2FyZSB1c2VzIFZGIEJBUiByZWdpc3RlcnMgaW4gdGhlICpQRiogU1ItSU9WIENhcGFiaWxpdHkgdG8KKyAgICBkaXNjb3ZlciBzaXplcyBhbmQgYXNzaWduIGFkZHJlc3Nlcy4gIFRoZSBCQVJzIGluIHRoZSBWRidzIGNvbmZpZyBzcGFjZQorICAgIGhlYWRlciBhcmUgcmVhZC1vbmx5IHplcm9zLgorCisgICAgV2hlbiBhIFZGIEJBUiBpbiB0aGUgUEYgU1ItSU9WIENhcGFiaWxpdHkgaXMgcHJvZ3JhbW1lZCwgaXQgc2V0cyB0aGUKKyAgICBiYXNlIGFkZHJlc3MgZm9yIGFsbCB0aGUgY29ycmVzcG9uZGluZyBWRihuKSBCQVJzLiAgRm9yIGV4YW1wbGUsIGlmIHRoZQorICAgIFBGIFNSLUlPViBDYXBhYmlsaXR5IGlzIHByb2dyYW1tZWQgdG8gZW5hYmxlIGVpZ2h0IFZGcywgYW5kIGl0IGhhcyBhCisgICAgMU1CIFZGIEJBUjAsIHRoZSBhZGRyZXNzIGluIHRoYXQgVkYgQkFSIHNldHMgdGhlIGJhc2Ugb2YgYW4gOE1CIHJlZ2lvbi4KKyAgICBUaGlzIHJlZ2lvbiBpcyBkaXZpZGVkIGludG8gZWlnaHQgY29udGlndW91cyAxTUIgcmVnaW9ucywgZWFjaCBvZiB3aGljaAorICAgIGlzIGEgQkFSMCBmb3Igb25lIG9mIHRoZSBWRnMuICBOb3RlIHRoYXQgZXZlbiB0aG91Z2ggdGhlIFZGIEJBUgorICAgIGRlc2NyaWJlcyBhbiA4TUIgcmVnaW9uLCB0aGUgYWxpZ25tZW50IHJlcXVpcmVtZW50IGlzIGZvciBhIHNpbmdsZSBWRiwKKyAgICBpLmUuLCAxTUIgaW4gdGhpcyBleGFtcGxlLgorCisgIFRoZXJlIGFyZSBzZXZlcmFsIHN0cmF0ZWdpZXMgZm9yIGlzb2xhdGluZyBWRnMgaW4gUEVzOgorCisgIC0gTTMyIHdpbmRvdzogVGhlcmUncyBvbmUgTTMyIHdpbmRvdywgYW5kIGl0IGlzIHNwbGl0IGludG8gMjU2CisgICAgZXF1YWxseS1zaXplZCBzZWdtZW50cy4gIFRoZSBmaW5lc3QgZ3JhbnVsYXJpdHkgcG9zc2libGUgaXMgYSAyNTZNQgorICAgIHdpbmRvdyB3aXRoIDFNQiBzZWdtZW50cy4gIFZGIEJBUnMgdGhhdCBhcmUgMU1CIG9yIGxhcmdlciBjb3VsZCBiZQorICAgIG1hcHBlZCB0byBzZXBhcmF0ZSBQRXMgaW4gdGhpcyB3aW5kb3cuICBFYWNoIHNlZ21lbnQgY2FuIGJlCisgICAgaW5kaXZpZHVhbGx5IG1hcHBlZCB0byBhIFBFIHZpYSB0aGUgbG9va3VwIHRhYmxlLCBzbyB0aGlzIGlzIHF1aXRlCisgICAgZmxleGlibGUsIGJ1dCBpdCB3b3JrcyBiZXN0IHdoZW4gYWxsIHRoZSBWRiBCQVJzIGFyZSB0aGUgc2FtZSBzaXplLiAgSWYKKyAgICB0aGV5IGFyZSBkaWZmZXJlbnQgc2l6ZXMsIHRoZSBlbnRpcmUgd2luZG93IGhhcyB0byBiZSBzbWFsbCBlbm91Z2ggdGhhdAorICAgIHRoZSBzZWdtZW50IHNpemUgbWF0Y2hlcyB0aGUgc21hbGxlc3QgVkYgQkFSLCB3aGljaCBtZWFucyBsYXJnZXIgVkYKKyAgICBCQVJzIHNwYW4gc2V2ZXJhbCBzZWdtZW50cy4KKworICAtIE5vbi1zZWdtZW50ZWQgTTY0IHdpbmRvdzogQSBub24tc2VnbWVudGVkIE02NCB3aW5kb3cgaXMgbWFwcGVkIGVudGlyZWx5CisgICAgdG8gYSBzaW5nbGUgUEUsIHNvIGl0IGNvdWxkIG9ubHkgaXNvbGF0ZSBvbmUgVkYuCisKKyAgLSBTaW5nbGUgc2VnbWVudGVkIE02NCB3aW5kb3dzOiBBIHNlZ21lbnRlZCBNNjQgd2luZG93IGNvdWxkIGJlIHVzZWQganVzdAorICAgIGxpa2UgdGhlIE0zMiB3aW5kb3csIGJ1dCB0aGUgc2VnbWVudHMgY2FuJ3QgYmUgaW5kaXZpZHVhbGx5IG1hcHBlZCB0bworICAgIFBFcyAodGhlIHNlZ21lbnQgbnVtYmVyIGlzIHRoZSBQRSMpLCBzbyB0aGVyZSBpc24ndCBhcyBtdWNoCisgICAgZmxleGliaWxpdHkuICBBIFZGIHdpdGggbXVsdGlwbGUgQkFScyB3b3VsZCBoYXZlIHRvIGJlIGluIGEgImRvbWFpbiIgb2YKKyAgICBtdWx0aXBsZSBQRXMsIHdoaWNoIGlzIG5vdCBhcyB3ZWxsIGlzb2xhdGVkIGFzIGEgc2luZ2xlIFBFLgorCisgIC0gTXVsdGlwbGUgc2VnbWVudGVkIE02NCB3aW5kb3dzOiBBcyB1c3VhbCwgZWFjaCB3aW5kb3cgaXMgc3BsaXQgaW50byAyNTYKKyAgICBlcXVhbGx5LXNpemVkIHNlZ21lbnRzLCBhbmQgdGhlIHNlZ21lbnQgbnVtYmVyIGlzIHRoZSBQRSMuICBCdXQgaWYgd2UKKyAgICB1c2Ugc2V2ZXJhbCBNNjQgd2luZG93cywgdGhleSBjYW4gYmUgc2V0IHRvIGRpZmZlcmVudCBiYXNlIGFkZHJlc3NlcworICAgIGFuZCBkaWZmZXJlbnQgc2VnbWVudCBzaXplcy4gIElmIHdlIGhhdmUgVkZzIHRoYXQgZWFjaCBoYXZlIGEgMU1CIEJBUgorICAgIGFuZCBhIDMyTUIgQkFSLCB3ZSBjb3VsZCB1c2Ugb25lIE02NCB3aW5kb3cgdG8gYXNzaWduIDFNQiBzZWdtZW50cyBhbmQKKyAgICBhbm90aGVyIE02NCB3aW5kb3cgdG8gYXNzaWduIDMyTUIgc2VnbWVudHMuCisKKyAgRmluYWxseSwgdGhlIHBsYW4gdG8gdXNlIE02NCB3aW5kb3dzIGZvciBTUi1JT1YsIHdoaWNoIHdpbGwgYmUgZGVzY3JpYmVkCisgIG1vcmUgaW4gdGhlIG5leHQgdHdvIHNlY3Rpb25zLiAgRm9yIGEgZ2l2ZW4gVkYgQkFSLCB3ZSBuZWVkIHRvCisgIGVmZmVjdGl2ZWx5IHJlc2VydmUgdGhlIGVudGlyZSAyNTYgc2VnbWVudHMgKDI1NiAqIFZGIEJBUiBzaXplKSBhbmQKKyAgcG9zaXRpb24gdGhlIFZGIEJBUiB0byBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgZnJlZSByYW5nZSBvZgorICBzZWdtZW50cy9QRXMgaW5zaWRlIHRoYXQgTTY0IHdpbmRvdy4KKworICBUaGUgZ29hbCBpcyBvZiBjb3Vyc2UgdG8gYmUgYWJsZSB0byBnaXZlIGEgc2VwYXJhdGUgUEUgZm9yIGVhY2ggVkYuCisKKyAgVGhlIElPREEyIHBsYXRmb3JtIGhhcyAxNiBNNjQgd2luZG93cywgd2hpY2ggYXJlIHVzZWQgdG8gbWFwIE1NSU8KKyAgcmFuZ2UgdG8gUEUjLiAgRWFjaCBNNjQgd2luZG93IGRlZmluZXMgb25lIE1NSU8gcmFuZ2UgYW5kIHRoaXMgcmFuZ2UgaXMKKyAgZGl2aWRlZCBpbnRvIDI1NiBzZWdtZW50cywgd2l0aCBlYWNoIHNlZ21lbnQgY29ycmVzcG9uZGluZyB0byBvbmUgUEUuCisKKyAgV2UgZGVjaWRlIHRvIGxldmVyYWdlIHRoaXMgTTY0IHdpbmRvdyB0byBtYXAgVkZzIHRvIGluZGl2aWR1YWwgUEVzLCBzaW5jZQorICBTUi1JT1YgVkYgQkFScyBhcmUgYWxsIHRoZSBzYW1lIHNpemUuCisKKyAgQnV0IGRvaW5nIHNvIGludHJvZHVjZXMgYW5vdGhlciBwcm9ibGVtOiB0b3RhbF9WRnMgaXMgdXN1YWxseSBzbWFsbGVyCisgIHRoYW4gdGhlIG51bWJlciBvZiBNNjQgd2luZG93IHNlZ21lbnRzLCBzbyBpZiB3ZSBtYXAgb25lIFZGIEJBUiBkaXJlY3RseQorICB0byBvbmUgTTY0IHdpbmRvdywgc29tZSBwYXJ0IG9mIHRoZSBNNjQgd2luZG93IHdpbGwgbWFwIHRvIGFub3RoZXIKKyAgZGV2aWNlJ3MgTU1JTyByYW5nZS4KKworICBJT0RBIHN1cHBvcnRzIDI1NiBQRXMsIHNvIHNlZ21lbnRlZCB3aW5kb3dzIGNvbnRhaW4gMjU2IHNlZ21lbnRzLCBzbyBpZgorICB0b3RhbF9WRnMgaXMgbGVzcyB0aGFuIDI1Niwgd2UgaGF2ZSB0aGUgc2l0dWF0aW9uIGluIEZpZ3VyZSAxLjAsIHdoZXJlCisgIHNlZ21lbnRzIFt0b3RhbF9WRnMsIDI1NV0gb2YgdGhlIE02NCB3aW5kb3cgbWF5IG1hcCB0byBzb21lIE1NSU8gcmFuZ2Ugb24KKyAgb3RoZXIgZGV2aWNlczoKKworICAgICAwICAgICAgMSAgICAgICAgICAgICAgICAgICAgIHRvdGFsX1ZGcyAtIDEKKyAgICAgKy0tLS0tLSstLS0tLS0rLSAgICAgLSstLS0tLS0rLS0tLS0tKworICAgICB8ICAgICAgfCAgICAgIHwgIC4uLiAgfCAgICAgIHwgICAgICB8CisgICAgICstLS0tLS0rLS0tLS0tKy0gICAgIC0rLS0tLS0tKy0tLS0tLSsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgVkYobikgQkFSIHNwYWNlCisKKyAgICAgMCAgICAgIDEgICAgICAgICAgICAgICAgICAgICB0b3RhbF9WRnMgLSAxICAgICAgICAgICAgICAgIDI1NQorICAgICArLS0tLS0tKy0tLS0tLSstICAgICAtKy0tLS0tLSstLS0tLS0rLSAgICAgIC0rLS0tLS0tKy0tLS0tLSsKKyAgICAgfCAgICAgIHwgICAgICB8ICAuLi4gIHwgICAgICB8ICAgICAgfCAgIC4uLiAgfCAgICAgIHwgICAgICB8CisgICAgICstLS0tLS0rLS0tLS0tKy0gICAgIC0rLS0tLS0tKy0tLS0tLSstICAgICAgLSstLS0tLS0rLS0tLS0tKworCisgICAgICAgICAgICAgICAgICAgICAgICAgICBNNjQgd2luZG93CisKKwkJRmlndXJlIDEuMCBEaXJlY3QgbWFwIFZGKG4pIEJBUiBzcGFjZQorCisgIE91ciBjdXJyZW50IHNvbHV0aW9uIGlzIHRvIGFsbG9jYXRlIDI1NiBzZWdtZW50cyBldmVuIGlmIHRoZSBWRihuKSBCQVIKKyAgc3BhY2UgZG9lc24ndCBuZWVkIHRoYXQgbXVjaCwgYXMgc2hvd24gaW4gRmlndXJlIDEuMToKKworICAgICAwICAgICAgMSAgICAgICAgICAgICAgICAgICAgIHRvdGFsX1ZGcyAtIDEgICAgICAgICAgICAgICAgMjU1CisgICAgICstLS0tLS0rLS0tLS0tKy0gICAgIC0rLS0tLS0tKy0tLS0tLSstICAgICAgLSstLS0tLS0rLS0tLS0tKworICAgICB8ICAgICAgfCAgICAgIHwgIC4uLiAgfCAgICAgIHwgICAgICB8ICAgLi4uICB8ICAgICAgfCAgICAgIHwKKyAgICAgKy0tLS0tLSstLS0tLS0rLSAgICAgLSstLS0tLS0rLS0tLS0tKy0gICAgICAtKy0tLS0tLSstLS0tLS0rCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFZGKG4pIEJBUiBzcGFjZSArIGV4dHJhCisKKyAgICAgMCAgICAgIDEgICAgICAgICAgICAgICAgICAgICB0b3RhbF9WRnMgLSAxICAgICAgICAgICAgICAgIDI1NQorICAgICArLS0tLS0tKy0tLS0tLSstICAgICAtKy0tLS0tLSstLS0tLS0rLSAgICAgIC0rLS0tLS0tKy0tLS0tLSsKKyAgICAgfCAgICAgIHwgICAgICB8ICAuLi4gIHwgICAgICB8ICAgICAgfCAgIC4uLiAgfCAgICAgIHwgICAgICB8CisgICAgICstLS0tLS0rLS0tLS0tKy0gICAgIC0rLS0tLS0tKy0tLS0tLSstICAgICAgLSstLS0tLS0rLS0tLS0tKworCisJCQkgICBNNjQgd2luZG93CisKKwkJRmlndXJlIDEuMSBNYXAgVkYobikgQkFSIHNwYWNlICsgZXh0cmEKKworICBBbGxvY2F0aW5nIHRoZSBleHRyYSBzcGFjZSBlbnN1cmVzIHRoYXQgdGhlIGVudGlyZSBNNjQgd2luZG93IHdpbGwgYmUKKyAgYXNzaWduZWQgdG8gdGhpcyBvbmUgU1ItSU9WIGRldmljZSBhbmQgbm9uZSBvZiB0aGUgc3BhY2Ugd2lsbCBiZQorICBhdmFpbGFibGUgZm9yIG90aGVyIGRldmljZXMuICBOb3RlIHRoYXQgdGhpcyBvbmx5IGV4cGFuZHMgdGhlIHNwYWNlCisgIHJlc2VydmVkIGluIHNvZnR3YXJlOyB0aGVyZSBhcmUgc3RpbGwgb25seSB0b3RhbF9WRnMgVkZzLCBhbmQgdGhleSBvbmx5CisgIHJlc3BvbmQgdG8gc2VnbWVudHMgWzAsIHRvdGFsX1ZGcyAtIDFdLiAgVGhlcmUncyBub3RoaW5nIGluIGhhcmR3YXJlIHRoYXQKKyAgcmVzcG9uZHMgdG8gc2VnbWVudHMgW3RvdGFsX1ZGcywgMjU1XS4KKworNC4gSW1wbGljYXRpb25zIGZvciB0aGUgR2VuZXJpYyBQQ0kgQ29kZQorCitUaGUgUENJZSBTUi1JT1Ygc3BlYyByZXF1aXJlcyB0aGF0IHRoZSBiYXNlIG9mIHRoZSBWRihuKSBCQVIgc3BhY2UgYmUKK2FsaWduZWQgdG8gdGhlIHNpemUgb2YgYW4gaW5kaXZpZHVhbCBWRiBCQVIuCisKK0luIElPREEyLCB0aGUgTU1JTyBhZGRyZXNzIGRldGVybWluZXMgdGhlIFBFIy4gIElmIHRoZSBhZGRyZXNzIGlzIGluIGFuIE0zMgord2luZG93LCB3ZSBjYW4gc2V0IHRoZSBQRSMgYnkgdXBkYXRpbmcgdGhlIHRhYmxlIHRoYXQgdHJhbnNsYXRlcyBzZWdtZW50cwordG8gUEUjcy4gIFNpbWlsYXJseSwgaWYgdGhlIGFkZHJlc3MgaXMgaW4gYW4gdW5zZWdtZW50ZWQgTTY0IHdpbmRvdywgd2UgY2FuCitzZXQgdGhlIFBFIyBmb3IgdGhlIHdpbmRvdy4gIEJ1dCBpZiBpdCdzIGluIGEgc2VnbWVudGVkIE02NCB3aW5kb3csIHRoZQorc2VnbWVudCBudW1iZXIgaXMgdGhlIFBFIy4KKworVGhlcmVmb3JlLCB0aGUgb25seSB3YXkgdG8gY29udHJvbCB0aGUgUEUjIGZvciBhIFZGIGlzIHRvIGNoYW5nZSB0aGUgYmFzZQorb2YgdGhlIFZGKG4pIEJBUiBzcGFjZSBpbiB0aGUgVkYgQkFSLiAgSWYgdGhlIFBDSSBjb3JlIGFsbG9jYXRlcyB0aGUgZXhhY3QKK2Ftb3VudCBvZiBzcGFjZSByZXF1aXJlZCBmb3IgdGhlIFZGKG4pIEJBUiBzcGFjZSwgdGhlIFZGIEJBUiB2YWx1ZSBpcyBmaXhlZAorYW5kIGNhbm5vdCBiZSBjaGFuZ2VkLgorCitPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIFBDSSBjb3JlIGFsbG9jYXRlcyBhZGRpdGlvbmFsIHNwYWNlLCB0aGUgVkYgQkFSCit2YWx1ZSBjYW4gYmUgY2hhbmdlZCBhcyBsb25nIGFzIHRoZSBlbnRpcmUgVkYobikgQkFSIHNwYWNlIHJlbWFpbnMgaW5zaWRlCit0aGUgc3BhY2UgYWxsb2NhdGVkIGJ5IHRoZSBjb3JlLgorCitJZGVhbGx5IHRoZSBzZWdtZW50IHNpemUgd2lsbCBiZSB0aGUgc2FtZSBhcyBhbiBpbmRpdmlkdWFsIFZGIEJBUiBzaXplLgorVGhlbiBlYWNoIFZGIHdpbGwgYmUgaW4gaXRzIG93biBQRS4gIFRoZSBWRiBCQVJzIChhbmQgdGhlcmVmb3JlIHRoZSBQRSNzKQorYXJlIGNvbnRpZ3VvdXMuICBJZiBWRjAgaXMgaW4gUEUoeCksIHRoZW4gVkYobikgaXMgaW4gUEUoeCtuKS4gIElmIHdlCithbGxvY2F0ZSAyNTYgc2VnbWVudHMsIHRoZXJlIGFyZSAoMjU2IC0gbnVtVkZzKSBjaG9pY2VzIGZvciB0aGUgUEUjIG9mIFZGMC4KKworSWYgdGhlIHNlZ21lbnQgc2l6ZSBpcyBzbWFsbGVyIHRoYW4gdGhlIFZGIEJBUiBzaXplLCBpdCB3aWxsIHRha2Ugc2V2ZXJhbAorc2VnbWVudHMgdG8gY292ZXIgYSBWRiBCQVIsIGFuZCBhIFZGIHdpbGwgYmUgaW4gc2V2ZXJhbCBQRXMuICBUaGlzIGlzCitwb3NzaWJsZSwgYnV0IHRoZSBpc29sYXRpb24gaXNuJ3QgYXMgZ29vZCwgYW5kIGl0IHJlZHVjZXMgdGhlIG51bWJlciBvZiBQRSMKK2Nob2ljZXMgYmVjYXVzZSBpbnN0ZWFkIG9mIGNvbnN1bWluZyBvbmx5IG51bVZGcyBzZWdtZW50cywgdGhlIFZGKG4pIEJBUgorc3BhY2Ugd2lsbCBjb25zdW1lIChudW1WRnMgKiBuKSBzZWdtZW50cy4gIFRoYXQgbWVhbnMgdGhlcmUgYXJlbid0IGFzIG1hbnkKK2F2YWlsYWJsZSBzZWdtZW50cyBmb3IgYWRqdXN0aW5nIGJhc2Ugb2YgdGhlIFZGKG4pIEJBUiBzcGFjZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXJwYy9wbXUtZWJiLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXJwYy9wbXUtZWJiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2NkMTYzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlcnBjL3BtdS1lYmIudHh0CkBAIC0wLDAgKzEsMTM3IEBACitQTVUgRXZlbnQgQmFzZWQgQnJhbmNoZXMKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitFdmVudCBCYXNlZCBCcmFuY2hlcyAoRUJCcykgYXJlIGEgZmVhdHVyZSB3aGljaCBhbGxvd3MgdGhlIGhhcmR3YXJlIHRvCiticmFuY2ggZGlyZWN0bHkgdG8gYSBzcGVjaWZpZWQgdXNlciBzcGFjZSBhZGRyZXNzIHdoZW4gY2VydGFpbiBldmVudHMgb2NjdXIuCisKK1RoZSBmdWxsIHNwZWNpZmljYXRpb24gaXMgYXZhaWxhYmxlIGluIFBvd2VyIElTQSB2Mi4wNzoKKworICBodHRwczovL3d3dy5wb3dlci5vcmcvZG9jdW1lbnRhdGlvbi9wb3dlci1pc2EtdmVyc2lvbi0yLTA3LworCitPbmUgdHlwZSBvZiBldmVudCBmb3Igd2hpY2ggRUJCcyBjYW4gYmUgY29uZmlndXJlZCBpcyBQTVUgZXhjZXB0aW9ucy4gVGhpcworZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBBUEkgZm9yIGNvbmZpZ3VyaW5nIHRoZSBQb3dlciBQTVUgdG8gZ2VuZXJhdGUgRUJCcywKK3VzaW5nIHRoZSBMaW51eCBwZXJmX2V2ZW50cyBBUEkuCisKKworVGVybWlub2xvZ3kKKy0tLS0tLS0tLS0tCisKK1Rocm91Z2hvdXQgdGhpcyBkb2N1bWVudCB3ZSB3aWxsIHJlZmVyIHRvIGFuICJFQkIgZXZlbnQiIG9yICJFQkIgZXZlbnRzIi4gVGhpcworanVzdCByZWZlcnMgdG8gYSBzdHJ1Y3QgcGVyZl9ldmVudCB3aGljaCBoYXMgc2V0IHRoZSAiRUJCIiBmbGFnIGluIGl0cworYXR0ci5jb25maWcuIEFsbCBldmVudHMgd2hpY2ggY2FuIGJlIGNvbmZpZ3VyZWQgb24gdGhlIGhhcmR3YXJlIFBNVSBhcmUKK3Bvc3NpYmxlICJFQkIgZXZlbnRzIi4KKworCitCYWNrZ3JvdW5kCistLS0tLS0tLS0tCisKK1doZW4gYSBQTVUgRUJCIG9jY3VycyBpdCBpcyBkZWxpdmVyZWQgdG8gdGhlIGN1cnJlbnRseSBydW5uaW5nIHByb2Nlc3MuIEFzIHN1Y2gKK0VCQnMgY2FuIG9ubHkgc2Vuc2libHkgYmUgdXNlZCBieSBwcm9ncmFtcyBmb3Igc2VsZi1tb25pdG9yaW5nLgorCitJdCBpcyBhIGZlYXR1cmUgb2YgdGhlIHBlcmZfZXZlbnRzIEFQSSB0aGF0IGV2ZW50cyBjYW4gYmUgY3JlYXRlZCBvbiBvdGhlcgorcHJvY2Vzc2VzLCBzdWJqZWN0IHRvIHN0YW5kYXJkIHBlcm1pc3Npb24gY2hlY2tzLiBUaGlzIGlzIGFsc28gdHJ1ZSBvZiBFQkIKK2V2ZW50cywgaG93ZXZlciB1bmxlc3MgdGhlIHRhcmdldCBwcm9jZXNzIGVuYWJsZXMgRUJCcyAodmlhIG10c3ByKEJFU0NSKSkgbm8KK0VCQnMgd2lsbCBldmVyIGJlIGRlbGl2ZXJlZC4KKworVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgYSBwcm9jZXNzIHRvIGVuYWJsZSBFQkJzIGZvciBpdHNlbGYsIGJ1dCBub3QKK2FjdHVhbGx5IGNvbmZpZ3VyZSBhbnkgZXZlbnRzLiBBdCBhIGxhdGVyIHRpbWUgYW5vdGhlciBwcm9jZXNzIGNhbiBjb21lIGFsb25nCithbmQgYXR0YWNoIGFuIEVCQiBldmVudCB0byB0aGUgcHJvY2Vzcywgd2hpY2ggd2lsbCB0aGVuIGNhdXNlIEVCQnMgdG8gYmUKK2RlbGl2ZXJlZCB0byB0aGUgZmlyc3QgcHJvY2Vzcy4gSXQncyBub3QgY2xlYXIgaWYgdGhpcyBpcyBhY3R1YWxseSB1c2VmdWwuCisKKworV2hlbiB0aGUgUE1VIGlzIGNvbmZpZ3VyZWQgZm9yIEVCQnMsIGFsbCBQTVUgaW50ZXJydXB0cyBhcmUgZGVsaXZlcmVkIHRvIHRoZQordXNlciBwcm9jZXNzLiBUaGlzIG1lYW5zIG9uY2UgYW4gRUJCIGV2ZW50IGlzIHNjaGVkdWxlZCBvbiB0aGUgUE1VLCBubyBub24tRUJCCitldmVudHMgY2FuIGJlIGNvbmZpZ3VyZWQuIFRoaXMgbWVhbnMgdGhhdCBFQkIgZXZlbnRzIGNhbiBub3QgYmUgcnVuCitjb25jdXJyZW50bHkgd2l0aCByZWd1bGFyICdwZXJmJyBjb21tYW5kcywgb3IgYW55IG90aGVyIHBlcmYgZXZlbnRzLgorCitJdCBpcyBob3dldmVyIHNhZmUgdG8gcnVuICdwZXJmJyBjb21tYW5kcyBvbiBhIHByb2Nlc3Mgd2hpY2ggaXMgdXNpbmcgRUJCcy4gVGhlCitrZXJuZWwgd2lsbCBpbiBnZW5lcmFsIHNjaGVkdWxlIHRoZSBFQkIgZXZlbnQsIGFuZCBwZXJmIHdpbGwgYmUgbm90aWZpZWQgdGhhdAoraXRzIGV2ZW50cyBjb3VsZCBub3QgcnVuLgorCitUaGUgZXhjbHVzaW9uIGJldHdlZW4gRUJCIGV2ZW50cyBhbmQgcmVndWxhciBldmVudHMgaXMgaW1wbGVtZW50ZWQgdXNpbmcgdGhlCitleGlzdGluZyAicGlubmVkIiBhbmQgImV4Y2x1c2l2ZSIgYXR0cmlidXRlcyBvZiBwZXJmX2V2ZW50cy4gVGhpcyBtZWFucyBFQkIKK2V2ZW50cyB3aWxsIGJlIGdpdmVuIHByaW9yaXR5IG92ZXIgb3RoZXIgZXZlbnRzLCB1bmxlc3MgdGhleSBhcmUgYWxzbyBwaW5uZWQuCitJZiBhbiBFQkIgZXZlbnQgYW5kIGEgcmVndWxhciBldmVudCBhcmUgYm90aCBwaW5uZWQsIHRoZW4gd2hpY2hldmVyIGlzIGVuYWJsZWQKK2ZpcnN0IHdpbGwgYmUgc2NoZWR1bGVkIGFuZCB0aGUgb3RoZXIgd2lsbCBiZSBwdXQgaW4gZXJyb3Igc3RhdGUuIFNlZSB0aGUKK3NlY3Rpb24gYmVsb3cgdGl0bGVkICJFbmFibGluZyBhbiBFQkIgZXZlbnQiIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisKK0NyZWF0aW5nIGFuIEVCQiBldmVudAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RvIHJlcXVlc3QgdGhhdCBhbiBldmVudCBpcyBjb3VudGVkIHVzaW5nIEVCQiwgdGhlIGV2ZW50IGNvZGUgc2hvdWxkIGhhdmUgYml0Cis2MyBzZXQuCisKK0VCQiBldmVudHMgbXVzdCBiZSBjcmVhdGVkIHdpdGggYSBwYXJ0aWN1bGFyLCBhbmQgcmVzdHJpY3RpdmUsIHNldCBvZgorYXR0cmlidXRlcyAtIHRoaXMgaXMgc28gdGhhdCB0aGV5IGludGVyb3BlcmF0ZSBjb3JyZWN0bHkgd2l0aCB0aGUgcmVzdCBvZiB0aGUKK3BlcmZfZXZlbnRzIHN1YnN5c3RlbS4KKworQW4gRUJCIGV2ZW50IG11c3QgYmUgY3JlYXRlZCB3aXRoIHRoZSAicGlubmVkIiBhbmQgImV4Y2x1c2l2ZSIgYXR0cmlidXRlcyBzZXQuCitOb3RlIHRoYXQgaWYgeW91IGFyZSBjcmVhdGluZyBhIGdyb3VwIG9mIEVCQiBldmVudHMsIG9ubHkgdGhlIGxlYWRlciBjYW4gaGF2ZQordGhlc2UgYXR0cmlidXRlcyBzZXQuCisKK0FuIEVCQiBldmVudCBtdXN0IE5PVCBzZXQgYW55IG9mIHRoZSAiaW5oZXJpdCIsICJzYW1wbGVfcGVyaW9kIiwgImZyZXEiIG9yCisiZW5hYmxlX29uX2V4ZWMiIGF0dHJpYnV0ZXMuCisKK0FuIEVCQiBldmVudCBtdXN0IGJlIGF0dGFjaGVkIHRvIGEgdGFzay4gVGhpcyBpcyBzcGVjaWZpZWQgdG8gcGVyZl9ldmVudF9vcGVuKCkKK2J5IHBhc3NpbmcgYSBwaWQgdmFsdWUsIHR5cGljYWxseSAwIGluZGljYXRpbmcgdGhlIGN1cnJlbnQgdGFzay4KKworQWxsIGV2ZW50cyBpbiBhIGdyb3VwIG11c3QgYWdyZWUgb24gd2hldGhlciB0aGV5IHdhbnQgRUJCLiBUaGF0IGlzIGFsbCBldmVudHMKK211c3QgcmVxdWVzdCBFQkIsIG9yIG5vbmUgbWF5IHJlcXVlc3QgRUJCLgorCitFQkIgZXZlbnRzIG11c3Qgc3BlY2lmeSB0aGUgUE1DIHRoZXkgYXJlIHRvIGJlIGNvdW50ZWQgb24uIFRoaXMgZW5zdXJlcwordXNlcnNwYWNlIGlzIGFibGUgdG8gcmVsaWFibHkgZGV0ZXJtaW5lIHdoaWNoIFBNQyB0aGUgZXZlbnQgaXMgc2NoZWR1bGVkIG9uLgorCisKK0VuYWJsaW5nIGFuIEVCQiBldmVudAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK09uY2UgYW4gRUJCIGV2ZW50IGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBvcGVuZWQsIGl0IG11c3QgYmUgZW5hYmxlZCB3aXRoIHRoZQorcGVyZl9ldmVudHMgQVBJLiBUaGlzIGNhbiBiZSBhY2hpZXZlZCBlaXRoZXIgdmlhIHRoZSBpb2N0bCgpIGludGVyZmFjZSwgb3IgdGhlCitwcmN0bCgpIGludGVyZmFjZS4KKworSG93ZXZlciwgZHVlIHRvIHRoZSBkZXNpZ24gb2YgdGhlIHBlcmZfZXZlbnRzIEFQSSwgZW5hYmxpbmcgYW4gZXZlbnQgZG9lcyBub3QKK2d1YXJhbnRlZSB0aGF0IGl0IGhhcyBiZWVuIHNjaGVkdWxlZCBvbiB0aGUgUE1VLiBUbyBlbnN1cmUgdGhhdCB0aGUgRUJCIGV2ZW50CitoYXMgYmVlbiBzY2hlZHVsZWQgb24gdGhlIFBNVSwgeW91IG11c3QgcGVyZm9ybSBhIHJlYWQoKSBvbiB0aGUgZXZlbnQuIElmIHRoZQorcmVhZCgpIHJldHVybnMgRU9GLCB0aGVuIHRoZSBldmVudCBoYXMgbm90IGJlZW4gc2NoZWR1bGVkIGFuZCBFQkJzIGFyZSBub3QKK2VuYWJsZWQuCisKK1RoaXMgYmVoYXZpb3VyIG9jY3VycyBiZWNhdXNlIHRoZSBFQkIgZXZlbnQgaXMgcGlubmVkIGFuZCBleGNsdXNpdmUuIFdoZW4gdGhlCitFQkIgZXZlbnQgaXMgZW5hYmxlZCBpdCB3aWxsIGZvcmNlIGFsbCBvdGhlciBub24tcGlubmVkIGV2ZW50cyBvZmYgdGhlIFBNVS4gSW4KK3RoaXMgY2FzZSB0aGUgZW5hYmxlIHdpbGwgYmUgc3VjY2Vzc2Z1bC4gSG93ZXZlciBpZiB0aGVyZSBpcyBhbHJlYWR5IGFuIGV2ZW50CitwaW5uZWQgb24gdGhlIFBNVSB0aGVuIHRoZSBlbmFibGUgd2lsbCBub3QgYmUgc3VjY2Vzc2Z1bC4KKworCitSZWFkaW5nIGFuIEVCQiBldmVudAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSXQgaXMgcG9zc2libGUgdG8gcmVhZCgpIGZyb20gYW4gRUJCIGV2ZW50LiBIb3dldmVyIHRoZSByZXN1bHRzIGFyZQorbWVhbmluZ2xlc3MuIEJlY2F1c2UgaW50ZXJydXB0cyBhcmUgYmVpbmcgZGVsaXZlcmVkIHRvIHRoZSB1c2VyIHByb2Nlc3MgdGhlCitrZXJuZWwgaXMgbm90IGFibGUgdG8gY291bnQgdGhlIGV2ZW50LCBhbmQgc28gd2lsbCByZXR1cm4gYSBqdW5rIHZhbHVlLgorCisKK0Nsb3NpbmcgYW4gRUJCIGV2ZW50CistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaGVuIGFuIEVCQiBldmVudCBpcyBmaW5pc2hlZCB3aXRoLCB5b3UgY2FuIGNsb3NlIGl0IHVzaW5nIGNsb3NlKCkgYXMgZm9yIGFueQorcmVndWxhciBldmVudC4gSWYgdGhpcyBpcyB0aGUgbGFzdCBFQkIgZXZlbnQgdGhlIFBNVSB3aWxsIGJlIGRlY29uZmlndXJlZCBhbmQKK25vIGZ1cnRoZXIgUE1VIEVCQnMgd2lsbCBiZSBkZWxpdmVyZWQuCisKKworRUJCIEhhbmRsZXIKKy0tLS0tLS0tLS0tCisKK1RoZSBFQkIgaGFuZGxlciBpcyBqdXN0IHJlZ3VsYXIgdXNlcnNwYWNlIGNvZGUsIGhvd2V2ZXIgaXQgbXVzdCBiZSB3cml0dGVuIGluCit0aGUgc3R5bGUgb2YgYW4gaW50ZXJydXB0IGhhbmRsZXIuIFdoZW4gdGhlIGhhbmRsZXIgaXMgZW50ZXJlZCBhbGwgcmVnaXN0ZXJzCithcmUgbGl2ZSAocG9zc2libHkpIGFuZCBzbyBtdXN0IGJlIHNhdmVkIHNvbWVob3cgYmVmb3JlIHRoZSBoYW5kbGVyIGNhbiBpbnZva2UKK290aGVyIGNvZGUuCisKK0l0J3MgdXAgdG8gdGhlIHByb2dyYW0gaG93IHRvIGhhbmRsZSB0aGlzLiBGb3IgQyBwcm9ncmFtcyBhIHJlbGF0aXZlbHkgc2ltcGxlCitvcHRpb24gaXMgdG8gY3JlYXRlIGFuIGludGVycnVwdCBmcmFtZSBvbiB0aGUgc3RhY2sgYW5kIHNhdmUgcmVnaXN0ZXJzIHRoZXJlLgorCitGb3JrCistLS0tCisKK0VCQiBldmVudHMgYXJlIG5vdCBpbmhlcml0ZWQgYWNyb3NzIGZvcmsuIElmIHRoZSBjaGlsZCBwcm9jZXNzIHdpc2hlcyB0byB1c2UKK0VCQnMgaXQgc2hvdWxkIG9wZW4gYSBuZXcgZXZlbnQgZm9yIGl0c2VsZi4gU2ltaWxhcmx5IHRoZSBFQkIgc3RhdGUgaW4KK0JFU0NSL0VCQkhSL0VCQlJSIGlzIGNsZWFyZWQgYWNyb3NzIGZvcmsoKS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXJwYy9wdHJhY2UudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlcnBjL3B0cmFjZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTljNWNlOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXJwYy9wdHJhY2UudHh0CkBAIC0wLDAgKzEsMTUxIEBACitHREIgaW50ZW5kcyB0byBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgaGFyZHdhcmUgZGVidWcgZmVhdHVyZXMgb2YgQm9va0UKK3Byb2Nlc3NvcnM6CisKKzQgaGFyZHdhcmUgYnJlYWtwb2ludHMgKElBQykKKzIgaGFyZHdhcmUgd2F0Y2hwb2ludHMgKHJlYWQsIHdyaXRlIGFuZCByZWFkLXdyaXRlKSAoREFDKQorMiB2YWx1ZSBjb25kaXRpb25zIGZvciB0aGUgaGFyZHdhcmUgd2F0Y2hwb2ludHMgKERWQykKKworRm9yIHRoYXQsIHdlIG5lZWQgdG8gZXh0ZW5kIHB0cmFjZSBzbyB0aGF0IEdEQiBjYW4gcXVlcnkgYW5kIHNldCB0aGVzZQorcmVzb3VyY2VzLiBTaW5jZSB3ZSdyZSBleHRlbmRpbmcsIHdlJ3JlIHRyeWluZyB0byBjcmVhdGUgYW4gaW50ZXJmYWNlCit0aGF0J3MgZXh0ZW5kYWJsZSBhbmQgdGhhdCBjb3ZlcnMgYm90aCBCb29rRSBhbmQgc2VydmVyIHByb2Nlc3NvcnMsIHNvCit0aGF0IEdEQiBkb2Vzbid0IG5lZWQgdG8gc3BlY2lhbC1jYXNlIGVhY2ggb2YgdGhlbS4gV2UgYWRkZWQgdGhlCitmb2xsb3dpbmcgMyBuZXcgcHRyYWNlIHJlcXVlc3RzLgorCisxLiBQVFJBQ0VfUFBDX0dFVEhXREVCVUdJTkZPCisKK1F1ZXJ5IGZvciBHREIgdG8gZGlzY292ZXIgdGhlIGhhcmR3YXJlIGRlYnVnIGZlYXR1cmVzLiBUaGUgbWFpbiBpbmZvIHRvCitiZSByZXR1cm5lZCBoZXJlIGlzIHRoZSBtaW5pbXVtIGFsaWdubWVudCBmb3IgdGhlIGhhcmR3YXJlIHdhdGNocG9pbnRzLgorQm9va0UgcHJvY2Vzc29ycyBkb24ndCBoYXZlIHJlc3RyaWN0aW9ucyBoZXJlLCBidXQgc2VydmVyIHByb2Nlc3NvcnMgaGF2ZQorYW4gOC1ieXRlIGFsaWdubWVudCByZXN0cmljdGlvbiBmb3IgaGFyZHdhcmUgd2F0Y2hwb2ludHMuIFdlJ2QgbGlrZSB0byBhdm9pZAorYWRkaW5nIHNwZWNpYWwgY2FzZXMgdG8gR0RCIGJhc2VkIG9uIHdoYXQgaXQgc2VlcyBpbiBBVVhWLgorCitTaW5jZSB3ZSdyZSBhdCBpdCwgd2UgYWRkZWQgb3RoZXIgdXNlZnVsIGluZm8gdGhhdCB0aGUga2VybmVsIGNhbiByZXR1cm4gdG8KK0dEQjogdGhpcyBxdWVyeSB3aWxsIHJldHVybiB0aGUgbnVtYmVyIG9mIGhhcmR3YXJlIGJyZWFrcG9pbnRzLCBoYXJkd2FyZQord2F0Y2hwb2ludHMgYW5kIHdoZXRoZXIgaXQgc3VwcG9ydHMgYSByYW5nZSBvZiBhZGRyZXNzZXMgYW5kIGEgY29uZGl0aW9uLgorVGhlIHF1ZXJ5IHdpbGwgZmlsbCB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZSBwcm92aWRlZCBieSB0aGUgcmVxdWVzdGluZyBwcm9jZXNzOgorCitzdHJ1Y3QgcHBjX2RlYnVnX2luZm8geworICAgICAgIHVuaXQzMl90IHZlcnNpb247CisgICAgICAgdW5pdDMyX3QgbnVtX2luc3RydWN0aW9uX2JwczsKKyAgICAgICB1bml0MzJfdCBudW1fZGF0YV9icHM7CisgICAgICAgdW5pdDMyX3QgbnVtX2NvbmRpdGlvbl9yZWdzOworICAgICAgIHVuaXQzMl90IGRhdGFfYnBfYWxpZ25tZW50OworICAgICAgIHVuaXQzMl90IHNpemVvZl9jb25kaXRpb247IC8qIHNpemUgb2YgdGhlIERWQyByZWdpc3RlciAqLworICAgICAgIHVpbnQ2NF90IGZlYXR1cmVzOyAvKiBiaXRtYXNrIG9mIHRoZSBpbmRpdmlkdWFsIGZsYWdzICovCit9OworCitmZWF0dXJlcyB3aWxsIGhhdmUgYml0cyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlcmUgaXMgc3VwcG9ydCBmb3I6CisKKyNkZWZpbmUgUFBDX0RFQlVHX0ZFQVRVUkVfSU5TTl9CUF9SQU5HRQkJMHgxCisjZGVmaW5lIFBQQ19ERUJVR19GRUFUVVJFX0lOU05fQlBfTUFTSwkJMHgyCisjZGVmaW5lIFBQQ19ERUJVR19GRUFUVVJFX0RBVEFfQlBfUkFOR0UJCTB4NAorI2RlZmluZSBQUENfREVCVUdfRkVBVFVSRV9EQVRBX0JQX01BU0sJCTB4OAorI2RlZmluZSBQUENfREVCVUdfRkVBVFVSRV9EQVRBX0JQX0RBV1IJCTB4MTAKKworMi4gUFRSQUNFX1NFVEhXREVCVUcKKworU2V0cyBhIGhhcmR3YXJlIGJyZWFrcG9pbnQgb3Igd2F0Y2hwb2ludCwgYWNjb3JkaW5nIHRvIHRoZSBwcm92aWRlZCBzdHJ1Y3R1cmU6CisKK3N0cnVjdCBwcGNfaHdfYnJlYWtwb2ludCB7CisgICAgICAgIHVpbnQzMl90IHZlcnNpb247CisjZGVmaW5lIFBQQ19CUkVBS1BPSU5UX1RSSUdHRVJfRVhFQ1VURSAgMHgxCisjZGVmaW5lIFBQQ19CUkVBS1BPSU5UX1RSSUdHRVJfUkVBRCAgICAgMHgyCisjZGVmaW5lIFBQQ19CUkVBS1BPSU5UX1RSSUdHRVJfV1JJVEUgICAgMHg0CisgICAgICAgIHVpbnQzMl90IHRyaWdnZXJfdHlwZTsgICAgICAgLyogb25seSBzb21lIGNvbWJpbmF0aW9ucyBhbGxvd2VkICovCisjZGVmaW5lIFBQQ19CUkVBS1BPSU5UX01PREVfRVhBQ1QgICAgICAgICAgICAgICAweDAKKyNkZWZpbmUgUFBDX0JSRUFLUE9JTlRfTU9ERV9SQU5HRV9JTkNMVVNJVkUgICAgIDB4MQorI2RlZmluZSBQUENfQlJFQUtQT0lOVF9NT0RFX1JBTkdFX0VYQ0xVU0lWRSAgICAgMHgyCisjZGVmaW5lIFBQQ19CUkVBS1BPSU5UX01PREVfTUFTSyAgICAgICAgICAgICAgICAweDMKKyAgICAgICAgdWludDMyX3QgYWRkcl9tb2RlOyAgICAgICAgICAvKiBhZGRyZXNzIG1hdGNoIG1vZGUgKi8KKworI2RlZmluZSBQUENfQlJFQUtQT0lOVF9DT05ESVRJT05fTU9ERSAgIDB4MworI2RlZmluZSBQUENfQlJFQUtQT0lOVF9DT05ESVRJT05fTk9ORSAgIDB4MAorI2RlZmluZSBQUENfQlJFQUtQT0lOVF9DT05ESVRJT05fQU5EICAgIDB4MQorI2RlZmluZSBQUENfQlJFQUtQT0lOVF9DT05ESVRJT05fRVhBQ1QgIDB4MQkvKiBkaWZmZXJlbnQgbmFtZSBmb3IgdGhlIHNhbWUgdGhpbmcgYXMgYWJvdmUgKi8KKyNkZWZpbmUgUFBDX0JSRUFLUE9JTlRfQ09ORElUSU9OX09SICAgICAweDIKKyNkZWZpbmUgUFBDX0JSRUFLUE9JTlRfQ09ORElUSU9OX0FORF9PUiAweDMKKyNkZWZpbmUgUFBDX0JSRUFLUE9JTlRfQ09ORElUSU9OX0JFX0FMTCAweDAwZmYwMDAwCS8qIGJ5dGUgZW5hYmxlIGJpdHMgKi8KKyNkZWZpbmUgUFBDX0JSRUFLUE9JTlRfQ09ORElUSU9OX0JFKG4pICAoMTw8KChuKSsxNikpCisgICAgICAgIHVpbnQzMl90IGNvbmRpdGlvbl9tb2RlOyAgICAgLyogYnJlYWsvd2F0Y2hwb2ludCBjb25kaXRpb24gZmxhZ3MgKi8KKworICAgICAgICB1aW50NjRfdCBhZGRyOworICAgICAgICB1aW50NjRfdCBhZGRyMjsKKyAgICAgICAgdWludDY0X3QgY29uZGl0aW9uX3ZhbHVlOworfTsKKworQSByZXF1ZXN0IHNwZWNpZmllcyBvbmUgZXZlbnQsIG5vdCBuZWNlc3NhcmlseSBqdXN0IG9uZSByZWdpc3RlciB0byBiZSBzZXQuCitGb3IgaW5zdGFuY2UsIGlmIHRoZSByZXF1ZXN0IGlzIGZvciBhIHdhdGNocG9pbnQgd2l0aCBhIGNvbmRpdGlvbiwgYm90aCB0aGUKK0RBQyBhbmQgRFZDIHJlZ2lzdGVycyB3aWxsIGJlIHNldCBpbiB0aGUgc2FtZSByZXF1ZXN0LgorCitXaXRoIHRoaXMgR0RCIGNhbiBhc2sgZm9yIGFsbCBraW5kcyBvZiBoYXJkd2FyZSBicmVha3BvaW50cyBhbmQgd2F0Y2hwb2ludHMKK3RoYXQgdGhlIEJvb2tFIHN1cHBvcnRzLiBDT01FRlJPTSBicmVha3BvaW50cyBhdmFpbGFibGUgaW4gc2VydmVyIHByb2Nlc3NvcnMKK2FyZSBub3QgY29udGVtcGxhdGVkLCBidXQgdGhhdCBpcyBvdXQgb2YgdGhlIHNjb3BlIG9mIHRoaXMgd29yay4KKworcHRyYWNlIHdpbGwgcmV0dXJuIGFuIGludGVnZXIgKGhhbmRsZSkgdW5pcXVlbHkgaWRlbnRpZnlpbmcgdGhlIGJyZWFrcG9pbnQgb3IKK3dhdGNocG9pbnQganVzdCBjcmVhdGVkLiBUaGlzIGludGVnZXIgd2lsbCBiZSB1c2VkIGluIHRoZSBQVFJBQ0VfREVMSFdERUJVRworcmVxdWVzdCB0byBhc2sgZm9yIGl0cyByZW1vdmFsLiBSZXR1cm4gLUVOT1NQQyBpZiB0aGUgcmVxdWVzdGVkIGJyZWFrcG9pbnQKK2Nhbid0IGJlIGFsbG9jYXRlZCBvbiB0aGUgcmVnaXN0ZXJzLgorCitTb21lIGV4YW1wbGVzIG9mIHVzaW5nIHRoZSBzdHJ1Y3R1cmUgdG86CisKKy0gc2V0IGEgYnJlYWtwb2ludCBpbiB0aGUgZmlyc3QgYnJlYWtwb2ludCByZWdpc3RlcgorCisgIHAudmVyc2lvbiAgICAgICAgID0gUFBDX0RFQlVHX0NVUlJFTlRfVkVSU0lPTjsKKyAgcC50cmlnZ2VyX3R5cGUgICAgPSBQUENfQlJFQUtQT0lOVF9UUklHR0VSX0VYRUNVVEU7CisgIHAuYWRkcl9tb2RlICAgICAgID0gUFBDX0JSRUFLUE9JTlRfTU9ERV9FWEFDVDsKKyAgcC5jb25kaXRpb25fbW9kZSAgPSBQUENfQlJFQUtQT0lOVF9DT05ESVRJT05fTk9ORTsKKyAgcC5hZGRyICAgICAgICAgICAgPSAodWludDY0X3QpIGFkZHJlc3M7CisgIHAuYWRkcjIgICAgICAgICAgID0gMDsKKyAgcC5jb25kaXRpb25fdmFsdWUgPSAwOworCistIHNldCBhIHdhdGNocG9pbnQgd2hpY2ggdHJpZ2dlcnMgb24gcmVhZHMgaW4gdGhlIHNlY29uZCB3YXRjaHBvaW50IHJlZ2lzdGVyCisKKyAgcC52ZXJzaW9uICAgICAgICAgPSBQUENfREVCVUdfQ1VSUkVOVF9WRVJTSU9OOworICBwLnRyaWdnZXJfdHlwZSAgICA9IFBQQ19CUkVBS1BPSU5UX1RSSUdHRVJfUkVBRDsKKyAgcC5hZGRyX21vZGUgICAgICAgPSBQUENfQlJFQUtQT0lOVF9NT0RFX0VYQUNUOworICBwLmNvbmRpdGlvbl9tb2RlICA9IFBQQ19CUkVBS1BPSU5UX0NPTkRJVElPTl9OT05FOworICBwLmFkZHIgICAgICAgICAgICA9ICh1aW50NjRfdCkgYWRkcmVzczsKKyAgcC5hZGRyMiAgICAgICAgICAgPSAwOworICBwLmNvbmRpdGlvbl92YWx1ZSA9IDA7CisKKy0gc2V0IGEgd2F0Y2hwb2ludCB3aGljaCB0cmlnZ2VycyBvbmx5IHdpdGggYSBzcGVjaWZpYyB2YWx1ZQorCisgIHAudmVyc2lvbiAgICAgICAgID0gUFBDX0RFQlVHX0NVUlJFTlRfVkVSU0lPTjsKKyAgcC50cmlnZ2VyX3R5cGUgICAgPSBQUENfQlJFQUtQT0lOVF9UUklHR0VSX1JFQUQ7CisgIHAuYWRkcl9tb2RlICAgICAgID0gUFBDX0JSRUFLUE9JTlRfTU9ERV9FWEFDVDsKKyAgcC5jb25kaXRpb25fbW9kZSAgPSBQUENfQlJFQUtQT0lOVF9DT05ESVRJT05fQU5EIHwgUFBDX0JSRUFLUE9JTlRfQ09ORElUSU9OX0JFX0FMTDsKKyAgcC5hZGRyICAgICAgICAgICAgPSAodWludDY0X3QpIGFkZHJlc3M7CisgIHAuYWRkcjIgICAgICAgICAgID0gMDsKKyAgcC5jb25kaXRpb25fdmFsdWUgPSAodWludDY0X3QpIGNvbmRpdGlvbjsKKworLSBzZXQgYSByYW5nZWQgaGFyZHdhcmUgYnJlYWtwb2ludAorCisgIHAudmVyc2lvbiAgICAgICAgID0gUFBDX0RFQlVHX0NVUlJFTlRfVkVSU0lPTjsKKyAgcC50cmlnZ2VyX3R5cGUgICAgPSBQUENfQlJFQUtQT0lOVF9UUklHR0VSX0VYRUNVVEU7CisgIHAuYWRkcl9tb2RlICAgICAgID0gUFBDX0JSRUFLUE9JTlRfTU9ERV9SQU5HRV9JTkNMVVNJVkU7CisgIHAuY29uZGl0aW9uX21vZGUgID0gUFBDX0JSRUFLUE9JTlRfQ09ORElUSU9OX05PTkU7CisgIHAuYWRkciAgICAgICAgICAgID0gKHVpbnQ2NF90KSBiZWdpbl9yYW5nZTsKKyAgcC5hZGRyMiAgICAgICAgICAgPSAodWludDY0X3QpIGVuZF9yYW5nZTsKKyAgcC5jb25kaXRpb25fdmFsdWUgPSAwOworCistIHNldCBhIHdhdGNocG9pbnQgaW4gc2VydmVyIHByb2Nlc3NvcnMgKEJvb2tTKQorCisgIHAudmVyc2lvbiAgICAgICAgID0gMTsKKyAgcC50cmlnZ2VyX3R5cGUgICAgPSBQUENfQlJFQUtQT0lOVF9UUklHR0VSX1JXOworICBwLmFkZHJfbW9kZSAgICAgICA9IFBQQ19CUkVBS1BPSU5UX01PREVfUkFOR0VfSU5DTFVTSVZFOworICBvcgorICBwLmFkZHJfbW9kZSAgICAgICA9IFBQQ19CUkVBS1BPSU5UX01PREVfRVhBQ1Q7CisKKyAgcC5jb25kaXRpb25fbW9kZSAgPSBQUENfQlJFQUtQT0lOVF9DT05ESVRJT05fTk9ORTsKKyAgcC5hZGRyICAgICAgICAgICAgPSAodWludDY0X3QpIGJlZ2luX3JhbmdlOworICAvKiBGb3IgUFBDX0JSRUFLUE9JTlRfTU9ERV9SQU5HRV9JTkNMVVNJVkUgYWRkcjIgbmVlZHMgdG8gYmUgc3BlY2lmaWVkLCB3aGVyZQorICAgKiBhZGRyMiAtIGFkZHIgPD0gOCBCeXRlcy4KKyAgICovCisgIHAuYWRkcjIgICAgICAgICAgID0gKHVpbnQ2NF90KSBlbmRfcmFuZ2U7CisgIHAuY29uZGl0aW9uX3ZhbHVlID0gMDsKKworMy4gUFRSQUNFX0RFTEhXREVCVUcKKworVGFrZXMgYW4gaW50ZWdlciB3aGljaCBpZGVudGlmaWVzIGFuIGV4aXN0aW5nIGJyZWFrcG9pbnQgb3Igd2F0Y2hwb2ludAorKGkuZS4sIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIFBUUkFDRV9TRVRIV0RFQlVHKSwgYW5kIGRlbGV0ZXMgdGhlCitjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgb3Igd2F0Y2hwb2ludC4uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VycGMvcWVfZmlybXdhcmUudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlcnBjL3FlX2Zpcm13YXJlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2FjMjRhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlcnBjL3FlX2Zpcm13YXJlLnR4dApAQCAtMCwwICsxLDI5NSBAQAorCSAgIEZyZWVzY2FsZSBRVUlDQyBFbmdpbmUgRmlybXdhcmUgVXBsb2FkaW5nCisJICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKGMpIDIwMDcgVGltdXIgVGFiaSA8dGltdXIgYXQgZnJlZXNjYWxlLmNvbT4sCisgICAgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IKKworVGFibGUgb2YgQ29udGVudHMKKz09PT09PT09PT09PT09PT09CisKKyAgSSAtIFNvZnR3YXJlIExpY2Vuc2UgZm9yIEZpcm13YXJlCisKKyAgSUkgLSBNaWNyb2NvZGUgQXZhaWxhYmlsaXR5CisKKyAgSUlJIC0gRGVzY3JpcHRpb24gYW5kIFRlcm1pbm9sb2d5CisKKyAgSVYgLSBNaWNyb2NvZGUgUHJvZ3JhbW1pbmcgRGV0YWlscworCisgIFYgLSBGaXJtd2FyZSBTdHJ1Y3R1cmUgTGF5b3V0CisKKyAgVkkgLSBTYW1wbGUgQ29kZSBmb3IgQ3JlYXRpbmcgRmlybXdhcmUgRmlsZXMKKworUmV2aXNpb24gSW5mb3JtYXRpb24KKz09PT09PT09PT09PT09PT09PT09CisKK05vdmVtYmVyIDMwLCAyMDA3OiBSZXYgMS4wIC0gSW5pdGlhbCB2ZXJzaW9uCisKK0kgLSBTb2Z0d2FyZSBMaWNlbnNlIGZvciBGaXJtd2FyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0VhY2ggZmlybXdhcmUgZmlsZSBjb21lcyB3aXRoIGl0cyBvd24gc29mdHdhcmUgbGljZW5zZS4gIEZvciBpbmZvcm1hdGlvbiBvbgordGhlIHBhcnRpY3VsYXIgbGljZW5zZSwgcGxlYXNlIHNlZSB0aGUgbGljZW5zZSB0ZXh0IHRoYXQgaXMgZGlzdHJpYnV0ZWQgd2l0aAordGhlIGZpcm13YXJlLgorCitJSSAtIE1pY3JvY29kZSBBdmFpbGFiaWxpdHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXJtd2FyZSBmaWxlcyBhcmUgZGlzdHJpYnV0ZWQgdGhyb3VnaCB2YXJpb3VzIGNoYW5uZWxzLiAgU29tZSBhcmUgYXZhaWxhYmxlIG9uCitodHRwOi8vb3BlbnNvdXJjZS5mcmVlc2NhbGUuY29tLiAgRm9yIG90aGVyIGZpcm13YXJlIGZpbGVzLCBwbGVhc2UgY29udGFjdAoreW91ciBGcmVlc2NhbGUgcmVwcmVzZW50YXRpdmUgb3IgeW91ciBvcGVyYXRpbmcgc3lzdGVtIHZlbmRvci4KKworSUlJIC0gRGVzY3JpcHRpb24gYW5kIFRlcm1pbm9sb2d5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbiB0aGlzIGRvY3VtZW50LCB0aGUgdGVybSAnbWljcm9jb2RlJyByZWZlcnMgdG8gdGhlIHNlcXVlbmNlIG9mIDMyLWJpdAoraW50ZWdlcnMgdGhhdCBjb21wb3NlIHRoZSBhY3R1YWwgUUUgbWljcm9jb2RlLgorCitUaGUgdGVybSAnZmlybXdhcmUnIHJlZmVycyB0byBhIGJpbmFyeSBibG9iIHRoYXQgY29udGFpbnMgdGhlIG1pY3JvY29kZSBhcword2VsbCBhcyBvdGhlciBkYXRhIHRoYXQKKworCTEpIGRlc2NyaWJlcyB0aGUgbWljcm9jb2RlJ3MgcHVycG9zZQorCTIpIGRlc2NyaWJlcyBob3cgYW5kIHdoZXJlIHRvIHVwbG9hZCB0aGUgbWljcm9jb2RlCisJMykgc3BlY2lmaWVzIHRoZSB2YWx1ZXMgb2YgdmFyaW91cyByZWdpc3RlcnMKKwk0KSBpbmNsdWRlcyBhZGRpdGlvbmFsIGRhdGEgZm9yIHVzZSBieSBzcGVjaWZpYyBkZXZpY2UgZHJpdmVycworCitGaXJtd2FyZSBmaWxlcyBhcmUgYmluYXJ5IGZpbGVzIHRoYXQgY29udGFpbiBvbmx5IGEgZmlybXdhcmUuCisKK0lWIC0gTWljcm9jb2RlIFByb2dyYW1taW5nIERldGFpbHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBRRSBhcmNoaXRlY3R1cmUgYWxsb3dzIGZvciBvbmx5IG9uZSBtaWNyb2NvZGUgcHJlc2VudCBpbiBJLVJBTSBmb3IgZWFjaAorUklTQyBwcm9jZXNzb3IuICBUbyByZXBsYWNlIGFueSBjdXJyZW50IG1pY3JvY29kZSwgYSBmdWxsIFFFIHJlc2V0ICh3aGljaAorZGlzYWJsZXMgdGhlIG1pY3JvY29kZSkgbXVzdCBiZSBwZXJmb3JtZWQgZmlyc3QuCisKK1FFIG1pY3JvY29kZSBpcyB1cGxvYWRlZCB1c2luZyB0aGUgZm9sbG93aW5nIHByb2NlZHVyZToKKworMSkgVGhlIG1pY3JvY29kZSBpcyBwbGFjZWQgaW50byBJLVJBTSBhdCBhIHNwZWNpZmljIGxvY2F0aW9uLCB1c2luZyB0aGUKKyAgIElSQU0uSUFERCBhbmQgSVJBTS5JREFUQSByZWdpc3RlcnMuCisKKzIpIFRoZSBDRVJDUi5DSVIgYml0IGlzIHNldCB0byAwIG9yIDEsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBmaXJtd2FyZQorICAgbmVlZHMgc3BsaXQgSS1SQU0uICBTcGxpdCBJLVJBTSBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIFNPQ3MgdGhhdCBoYXZlCisgICBRRXMgd2l0aCBtdWx0aXBsZSBSSVNDIHByb2Nlc3NvcnMsIHN1Y2ggYXMgdGhlIDgzNjAuICBTcGxpdHRpbmcgdGhlIEktUkFNCisgICBhbGxvd3MgZWFjaCBwcm9jZXNzb3IgdG8gcnVuIGEgZGlmZmVyZW50IG1pY3JvY29kZSwgZWZmZWN0aXZlbHkgY3JlYXRpbmcgYW4KKyAgIGFzeW1tZXRyaWMgbXVsdGlwcm9jZXNzaW5nIChBTVApIHN5c3RlbS4KKworMykgVGhlIFRJQkNSIHRyYXAgcmVnaXN0ZXJzIGFyZSBsb2FkZWQgd2l0aCB0aGUgYWRkcmVzc2VzIG9mIHRoZSB0cmFwIGhhbmRsZXJzCisgICBpbiB0aGUgbWljcm9jb2RlLgorCis0KSBUaGUgUlNQLkVDQ1IgcmVnaXN0ZXIgaXMgcHJvZ3JhbW1lZCB3aXRoIHRoZSB2YWx1ZSBwcm92aWRlZC4KKworNSkgSWYgbmVjZXNzYXJ5LCBkZXZpY2UgZHJpdmVycyB0aGF0IG5lZWQgdGhlIHZpcnR1YWwgdHJhcHMgYW5kIGV4dGVuZGVkIG1vZGUKKyAgIGRhdGEgd2lsbCB1c2UgdGhlbS4KKworVmlydHVhbCBNaWNyb2NvZGUgVHJhcHMKKworVGhlc2UgdmlydHVhbCB0cmFwcyBhcmUgY29uZGl0aW9uYWwgYnJhbmNoZXMgaW4gdGhlIG1pY3JvY29kZS4gIFRoZXNlIGFyZQorInNvZnQiIHByb3Zpc2lvbmFsIGludHJvZHVjZWQgaW4gdGhlIFJPTWNvZGUgaW4gb3JkZXIgdG8gZW5hYmxlIGhpZ2hlcgorZmxleGliaWxpdHkgYW5kIHNhdmUgaC93IHRyYXBzIElmIG5ldyBmZWF0dXJlcyBhcmUgYWN0aXZhdGVkIG9yIGFuIGlzc3VlIGlzCitiZWluZyBmaXhlZCBpbiB0aGUgUkFNIHBhY2thZ2UgdXRpbGl6aW5nIHRoZXkgc2hvdWxkIGJlIGFjdGl2YXRlZC4gIFRoaXMgZGF0YQorc3RydWN0dXJlIHNpZ25hbHMgdGhlIG1pY3JvY29kZSB3aGljaCBvZiB0aGVzZSB2aXJ0dWFsIHRyYXBzIGlzIGFjdGl2ZS4KKworVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgNiB3b3JkcyB0aGF0IHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgY29weSB0byBzb21lCitzcGVjaWZpYyBiZWVuIGRlZmluZWQuICBUaGlzIHRhYmxlIGRlc2NyaWJlcyB0aGUgc3RydWN0dXJlLgorCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJfCBPZmZzZXQgaW4gfCAgICAgICAgICAgICAgICAgIHwgRGVzdGluYXRpb24gT2Zmc2V0IHwgU2l6ZSBvZiB8CisJfCAgIGFycmF5ICAgfCAgICAgUHJvdG9jb2wgICAgIHwgICB3aXRoaW4gUFJBTSAgICAgIHwgT3BlcmFuZCB8CisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisJfCAgICAgMCAgICAgfCBFdGhlcm5ldCAgICAgICAgIHwgICAgICAweEY4ICAgICAgICAgIHwgNCBieXRlcyB8CisJfCAgICAgICAgICAgfCBpbnRlcndvcmtpbmcgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8CisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJfCAgICAgNCAgICAgfCBBVE0gICAgICAgICAgICAgIHwgICAgICAweEY4ICAgICAgICAgIHwgNCBieXRlcyB8CisJfCAgICAgICAgICAgfCBpbnRlcndvcmtpbmcgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8CisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJfCAgICAgOCAgICAgfCBQUFAgICAgICAgICAgICAgIHwgICAgICAweEY4ICAgICAgICAgIHwgNCBieXRlcyB8CisJfCAgICAgICAgICAgfCBpbnRlcndvcmtpbmcgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8CisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJfCAgICAgMTIgICAgfCBFdGhlcm5ldCBSWCAgICAgIHwgICAgICAweDIyICAgICAgICAgIHwgMSBieXRlICB8CisJfCAgICAgICAgICAgfCBEaXN0cmlidXRvciBQYWdlIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8CisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJfCAgICAgMTYgICAgfCBBVE0gR2xvYnRhbCAgICAgIHwgICAgICAweDI4ICAgICAgICAgIHwgMSBieXRlICB8CisJfCAgICAgICAgICAgfCBQYXJhbXMgVGFibGUgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8CisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJfCAgICAgMjAgICAgfCBJbnNlcnQgRnJhbWUgICAgIHwgICAgICAweEY4ICAgICAgICAgIHwgNCBieXRlcyB8CisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworRXh0ZW5kZWQgTW9kZXMKKworVGhpcyBpcyBhIGRvdWJsZSB3b3JkIGJpdCBhcnJheSAoNjQgYml0cykgdGhhdCBkZWZpbmVzIHNwZWNpYWwgZnVuY3Rpb25hbGl0eQord2hpY2ggaGFzIGFuIGltcGFjdCBvbiB0aGUgc29mdHdhcmUgZHJpdmVycy4gIEVhY2ggYml0IGhhcyBpdHMgb3duIGltcGFjdAorYW5kIGhhcyBzcGVjaWFsIGluc3RydWN0aW9ucyBmb3IgdGhlIHMvdyBhc3NvY2lhdGVkIHdpdGggaXQuICBUaGlzIHN0cnVjdHVyZSBpcworZGVzY3JpYmVkIGluIHRoaXMgdGFibGU6CisKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCXwgQml0ICMgIHwgICAgIE5hbWUgICAgIHwgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwl8ICAgMCAgICB8IEdlbmVyYWwgICAgICB8IEluZGljYXRlcyB0aGF0IHByaW9yIHRvIGVhY2ggaG9zdCBjb21tYW5kICAgfAorCXwgICAgICAgIHwgcHVzaCBjb21tYW5kIHwgZ2l2ZW4gYnkgdGhlIGFwcGxpY2F0aW9uLCB0aGUgc29mdHdhcmUgbXVzdCB8CisJfCAgICAgICAgfCAgICAgICAgICAgICAgfCBhc3NlcnQgYSBzcGVjaWFsIGhvc3QgY29tbWFuZCAocHVzaCBjb21tYW5kKXwKKwl8ICAgICAgICB8ICAgICAgICAgICAgICB8IENFQ0RSID0gMHgwMDgwMDAwMC4gICAgICAgICAgICAgICAgICAgICAgICAgfAorCXwgICAgICAgIHwgICAgICAgICAgICAgIHwgQ0VDUiA9IDB4MDFjMTAwMGYuICAgICAgICAgICAgICAgICAgICAgICAgICB8CisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwl8ICAgMSAgICB8IFVDQyBBVE0gICAgICB8IEluZGljYXRlcyB0aGF0IGFmdGVyIGlzc3VpbmcgQVRNIFJYIElOSVQgICAgfAorCXwgICAgICAgIHwgUlggSU5JVCAgICAgIHwgY29tbWFuZCwgdGhlIGhvc3QgbXVzdCBpc3N1ZSBhbm90aGVyIHNwZWNpYWx8CisJfCAgICAgICAgfCBwdXNoIGNvbW1hbmQgfCBjb21tYW5kIChwdXNoIGNvbW1hbmQpIGFuZCBpbW1lZGlhdGVseSAgICAgIHwKKwl8ICAgICAgICB8ICAgICAgICAgICAgICB8IGZvbGxvd2luZyB0aGF0IHJlLWlzc3VlIHRoZSBBVE0gUlggSU5JVCAgICAgfAorCXwgICAgICAgIHwgICAgICAgICAgICAgIHwgY29tbWFuZC4gKFRoaXMgbWFrZXMgdGhlIHNlcXVlbmNlIG9mICAgICAgICB8CisJfCAgICAgICAgfCAgICAgICAgICAgICAgfCBpbml0aWFsaXppbmcgdGhlIEFUTSByZWNlaXZlciBhIHNlcXVlbmNlIG9mIHwKKwl8ICAgICAgICB8ICAgICAgICAgICAgICB8IHRocmVlIGhvc3QgY29tbWFuZHMpICAgICAgICAgICAgICAgICAgICAgICAgfAorCXwgICAgICAgIHwgICAgICAgICAgICAgIHwgQ0VDRFIgPSAweDAwODAwMDAwLiAgICAgICAgICAgICAgICAgICAgICAgICB8CisJfCAgICAgICAgfCAgICAgICAgICAgICAgfCBDRUNSID0gMHgwMWMxMDAwZi4gICAgICAgICAgICAgICAgICAgICAgICAgIHwKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCXwgICAyICAgIHwgQWRkL3JlbW92ZSAgIHwgSW5kaWNhdGVzIHRoYXQgZm9sbG93aW5nIHRoZSBzcGVjaWZpYyBob3N0ICB8CisJfCAgICAgICAgfCBjb21tYW5kICAgICAgfCBjb21tYW5kOiAiQWRkL1JlbW92ZSBlbnRyeSBpbiBIYXNoIExvb2t1cCAgIHwKKwl8ICAgICAgICB8IHZhbGlkYXRpb24gICB8IFRhYmxlIiB1c2VkIGluIEludGVyd29ya2luZyBzZXR1cCwgdGhlIHVzZXIgfAorCXwgICAgICAgIHwgICAgICAgICAgICAgIHwgbXVzdCBpc3N1ZSBhbm90aGVyIGNvbW1hbmQuICAgICAgICAgICAgICAgICB8CisJfCAgICAgICAgfCAgICAgICAgICAgICAgfCBDRUNEUiA9IDB4Y2UwMDAwMDMuICAgICAgICAgICAgICAgICAgICAgICAgIHwKKwl8ICAgICAgICB8ICAgICAgICAgICAgICB8IENFQ1IgPSAweDAxYzEwZjU4LiAgICAgICAgICAgICAgICAgICAgICAgICAgfAorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJfCAgIDMgICAgfCBHZW5lcmFsIHB1c2ggfCBJbmRpY2F0ZXMgdGhhdCB0aGUgcy93IGhhcyB0byBpbml0aWFsaXplICAgIHwKKwl8ICAgICAgICB8IGNvbW1hbmQgICAgICB8IHNvbWUgcG9pbnRlcnMgaW4gdGhlIEV0aGVybmV0IHRocmVhZCBwYWdlcyAgfAorCXwgICAgICAgIHwgICAgICAgICAgICAgIHwgd2hpY2ggYXJlIHVzZWQgd2hlbiBIZWFkZXIgQ29tcHJlc3Npb24gaXMgICB8CisJfCAgICAgICAgfCAgICAgICAgICAgICAgfCBhY3RpdmF0ZWQuICBUaGUgZnVsbCBkZXRhaWxzIG9mIHRoZXNlICAgICAgIHwKKwl8ICAgICAgICB8ICAgICAgICAgICAgICB8IHBvaW50ZXJzIGlzIGxvY2F0ZWQgaW4gdGhlIHNvZnR3YXJlIGRyaXZlcnMufAorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJfCAgIDQgICAgfCBHZW5lcmFsIHB1c2ggfCBJbmRpY2F0ZXMgdGhhdCBhZnRlciBpc3N1aW5nIEV0aGVybmV0IFRYICAgIHwKKwl8ICAgICAgICB8IGNvbW1hbmQgICAgICB8IElOSVQgY29tbWFuZCwgdXNlciBtdXN0IGlzc3VlIHRoaXMgY29tbWFuZCAgfAorCXwgICAgICAgIHwgICAgICAgICAgICAgIHwgZm9yIGVhY2ggU05VTSBvZiBFdGhlcm5ldCBUWCB0aHJlYWQuICAgICAgICB8CisJfCAgICAgICAgfCAgICAgICAgICAgICAgfCBDRUNEUiA9IDB4MDA4MDAwMDMuICAgICAgICAgICAgICAgICAgICAgICAgIHwKKwl8ICAgICAgICB8ICAgICAgICAgICAgICB8IENFQ1IgPSAweDcnYnswfSwgOCdie0VuZXQgVFggdGhyZWFkIFNOVU19LCAgfAorCXwgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgIDEnYnsxfSwgMTInYnswfSwgNCdiezF9ICAgICAgICAgICAgICB8CisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwl8IDUgLSAzMSB8ICAgICBOL0EgICAgICB8IFJlc2VydmVkLCBzZXQgdG8gemVyby4gICAgICAgICAgICAgICAgICAgICAgfAorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1YgLSBGaXJtd2FyZSBTdHJ1Y3R1cmUgTGF5b3V0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUUUgbWljcm9jb2RlIGZyb20gRnJlZXNjYWxlIGlzIHR5cGljYWxseSBwcm92aWRlZCBhcyBhIGhlYWRlciBmaWxlLiAgVGhpcworaGVhZGVyIGZpbGUgY29udGFpbnMgbWFjcm9zIHRoYXQgZGVmaW5lIHRoZSBtaWNyb2NvZGUgYmluYXJ5IGl0c2VsZiBhcyB3ZWxsIGFzCitzb21lIG90aGVyIGRhdGEgdXNlZCBpbiB1cGxvYWRpbmcgdGhhdCBtaWNyb2NvZGUuICBUaGUgZm9ybWF0IG9mIHRoZXNlIGZpbGVzCitkbyBub3QgbGVuZCB0aGVtc2VsdmVzIHRvIHNpbXBsZSBpbmNsdXNpb24gaW50byBvdGhlciBjb2RlLiAgSGVuY2UsCit0aGUgbmVlZCBmb3IgYSBtb3JlIHBvcnRhYmxlIGZvcm1hdC4gIFRoaXMgc2VjdGlvbiBkZWZpbmVzIHRoYXQgZm9ybWF0LgorCitJbnN0ZWFkIG9mIGRpc3RyaWJ1dGluZyBhIGhlYWRlciBmaWxlLCB0aGUgbWljcm9jb2RlIGFuZCByZWxhdGVkIGRhdGEgYXJlCitlbWJlZGRlZCBpbnRvIGEgYmluYXJ5IGJsb2IuICBUaGlzIGJsb2IgaXMgcGFzc2VkIHRvIHRoZSBxZV91cGxvYWRfZmlybXdhcmUoKQorZnVuY3Rpb24sIHdoaWNoIHBhcnNlcyB0aGUgYmxvYiBhbmQgcGVyZm9ybXMgZXZlcnl0aGluZyBuZWNlc3NhcnkgdG8gdXBsb2FkCit0aGUgbWljcm9jb2RlLgorCitBbGwgaW50ZWdlcnMgYXJlIGJpZy1lbmRpYW4uICBTZWUgdGhlIGNvbW1lbnRzIGZvciBmdW5jdGlvbgorcWVfdXBsb2FkX2Zpcm13YXJlKCkgZm9yIHVwLXRvLWRhdGUgaW1wbGVtZW50YXRpb24gaW5mb3JtYXRpb24uCisKK1RoaXMgc3RydWN0dXJlIHN1cHBvcnRzIHZlcnNpb25pbmcsIHdoZXJlIHRoZSB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgaXMKK2VtYmVkZGVkIGludG8gdGhlIHN0cnVjdHVyZSBpdHNlbGYuICBUbyBlbnN1cmUgZm9yd2FyZCBhbmQgYmFja3dhcmRzCitjb21wYXRpYmlsaXR5LCBhbGwgdmVyc2lvbnMgb2YgdGhlIHN0cnVjdHVyZSBtdXN0IHVzZSB0aGUgc2FtZSAncWVfaGVhZGVyJworc3RydWN0dXJlIGF0IHRoZSBiZWdpbm5pbmcuCisKKydoZWFkZXInICh0eXBlOiBzdHJ1Y3QgcWVfaGVhZGVyKToKKwlUaGUgJ2xlbmd0aCcgZmllbGQgaXMgdGhlIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgZW50aXJlIHN0cnVjdHVyZSwKKwlpbmNsdWRpbmcgYWxsIHRoZSBtaWNyb2NvZGUgZW1iZWRkZWQgaW4gaXQsIGFzIHdlbGwgYXMgdGhlIENSQyAoaWYKKwlwcmVzZW50KS4KKworCVRoZSAnbWFnaWMnIGZpZWxkIGlzIGFuIGFycmF5IG9mIHRocmVlIGJ5dGVzIHRoYXQgY29udGFpbnMgdGhlIGxldHRlcnMKKwknUScsICdFJywgYW5kICdGJy4gIFRoaXMgaXMgYW4gaWRlbnRpZmllciB0aGF0IGluZGljYXRlcyB0aGF0IHRoaXMKKwlzdHJ1Y3R1cmUgaXMgYSBRRSBGaXJtd2FyZSBzdHJ1Y3R1cmUuCisKKwlUaGUgJ3ZlcnNpb24nIGZpZWxkIGlzIGEgc2luZ2xlIGJ5dGUgdGhhdCBpbmRpY2F0ZXMgdGhlIHZlcnNpb24gb2YgdGhpcworCXN0cnVjdHVyZS4gIElmIHRoZSBsYXlvdXQgb2YgdGhlIHN0cnVjdHVyZSBzaG91bGQgZXZlciBuZWVkIHRvIGJlCisJY2hhbmdlZCB0byBhZGQgc3VwcG9ydCBmb3IgYWRkaXRpb25hbCB0eXBlcyBvZiBtaWNyb2NvZGUsIHRoZW4gdGhlCisJdmVyc2lvbiBudW1iZXIgc2hvdWxkIGFsc28gYmUgY2hhbmdlZC4KKworVGhlICdpZCcgZmllbGQgaXMgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nKHN1aXRhYmxlIGZvciBwcmludGluZykgdGhhdAoraWRlbnRpZmllcyB0aGUgZmlybXdhcmUuCisKK1RoZSAnY291bnQnIGZpZWxkIGluZGljYXRlcyB0aGUgbnVtYmVyIG9mICdtaWNyb2NvZGUnIHN0cnVjdHVyZXMuICBUaGVyZQorbXVzdCBiZSBvbmUgYW5kIG9ubHkgb25lICdtaWNyb2NvZGUnIHN0cnVjdHVyZSBmb3IgZWFjaCBSSVNDIHByb2Nlc3Nvci4KK1RoZXJlZm9yZSwgdGhpcyBmaWVsZCBhbHNvIHJlcHJlc2VudHMgdGhlIG51bWJlciBvZiBSSVNDIHByb2Nlc3NvcnMgZm9yIHRoaXMKK1NPQy4KKworVGhlICdzb2MnIHN0cnVjdHVyZSBjb250YWlucyB0aGUgU09DIG51bWJlcnMgYW5kIHJldmlzaW9ucyB1c2VkIHRvIG1hdGNoCit0aGUgbWljcm9jb2RlIHRvIHRoZSBTT0MgaXRzZWxmLiAgTm9ybWFsbHksIHRoZSBtaWNyb2NvZGUgbG9hZGVyIHNob3VsZAorY2hlY2sgdGhlIGRhdGEgaW4gdGhpcyBzdHJ1Y3R1cmUgd2l0aCB0aGUgU09DIG51bWJlciBhbmQgcmV2aXNpb25zLCBhbmQKK29ubHkgdXBsb2FkIHRoZSBtaWNyb2NvZGUgaWYgdGhlcmUncyBhIG1hdGNoLiAgSG93ZXZlciwgdGhpcyBjaGVjayBpcyBub3QKK21hZGUgb24gYWxsIHBsYXRmb3Jtcy4KKworQWx0aG91Z2ggaXQgaXMgbm90IHJlY29tbWVuZGVkLCB5b3UgY2FuIHNwZWNpZnkgJzAnIGluIHRoZSBzb2MubW9kZWwKK2ZpZWxkIHRvIHNraXAgbWF0Y2hpbmcgU09DcyBhbHRvZ2V0aGVyLgorCitUaGUgJ21vZGVsJyBmaWVsZCBpcyBhIDE2LWJpdCBudW1iZXIgdGhhdCBtYXRjaGVzIHRoZSBhY3R1YWwgU09DLiBUaGUKKydtYWpvcicgYW5kICdtaW5vcicgZmllbGRzIGFyZSB0aGUgbWFqb3IgYW5kIG1pbm9yIHJldmlzaW9uIG51bWJlcnMsCityZXNwZWN0aXZlbHksIG9mIHRoZSBTT0MuCisKK0ZvciBleGFtcGxlLCB0byBtYXRjaCB0aGUgODMyMywgcmV2aXNpb24gMS4wOgorICAgICBzb2MubW9kZWwgPSA4MzIzCisgICAgIHNvYy5tYWpvciA9IDEKKyAgICAgc29jLm1pbm9yID0gMAorCisncGFkZGluZycgaXMgbmVjZXNzYXJ5IGZvciBzdHJ1Y3R1cmUgYWxpZ25tZW50LiAgVGhpcyBmaWVsZCBlbnN1cmVzIHRoYXQgdGhlCisnZXh0ZW5kZWRfbW9kZXMnIGZpZWxkIGlzIGFsaWduZWQgb24gYSA2NC1iaXQgYm91bmRhcnkuCisKKydleHRlbmRlZF9tb2RlcycgaXMgYSBiaXRmaWVsZCB0aGF0IGRlZmluZXMgc3BlY2lhbCBmdW5jdGlvbmFsaXR5IHdoaWNoIGhhcyBhbgoraW1wYWN0IG9uIHRoZSBkZXZpY2UgZHJpdmVycy4gIEVhY2ggYml0IGhhcyBpdHMgb3duIGltcGFjdCBhbmQgaGFzIHNwZWNpYWwKK2luc3RydWN0aW9ucyBmb3IgdGhlIGRyaXZlciBhc3NvY2lhdGVkIHdpdGggaXQuICBUaGlzIGZpZWxkIGlzIHN0b3JlZCBpbgordGhlIFFFIGxpYnJhcnkgYW5kIGF2YWlsYWJsZSB0byBhbnkgZHJpdmVyIHRoYXQgY2FsbGVzIHFlX2dldF9maXJtd2FyZV9pbmZvKCkuCisKKyd2dHJhcHMnIGlzIGFuIGFycmF5IG9mIDggd29yZHMgdGhhdCBjb250YWluIHZpcnR1YWwgdHJhcCB2YWx1ZXMgZm9yIGVhY2gKK3ZpcnR1YWwgdHJhcHMuICBBcyB3aXRoICdleHRlbmRlZF9tb2RlcycsIHRoaXMgZmllbGQgaXMgc3RvcmVkIGluIHRoZSBRRQorbGlicmFyeSBhbmQgYXZhaWxhYmxlIHRvIGFueSBkcml2ZXIgdGhhdCBjYWxsZXMgcWVfZ2V0X2Zpcm13YXJlX2luZm8oKS4KKworJ21pY3JvY29kZScgKHR5cGU6IHN0cnVjdCBxZV9taWNyb2NvZGUpOgorCUZvciBlYWNoIFJJU0MgcHJvY2Vzc29yIHRoZXJlIGlzIG9uZSAnbWljcm9jb2RlJyBzdHJ1Y3R1cmUuICBUaGUgZmlyc3QKKwknbWljcm9jb2RlJyBzdHJ1Y3R1cmUgaXMgZm9yIHRoZSBmaXJzdCBSSVNDLCBhbmQgc28gb24uCisKKwlUaGUgJ2lkJyBmaWVsZCBpcyBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcgc3VpdGFibGUgZm9yIHByaW50aW5nIHRoYXQKKwlpZGVudGlmaWVzIHRoaXMgcGFydGljdWxhciBtaWNyb2NvZGUuCisKKwkndHJhcHMnIGlzIGFuIGFycmF5IG9mIDE2IHdvcmRzIHRoYXQgY29udGFpbiBoYXJkd2FyZSB0cmFwIHZhbHVlcworCWZvciBlYWNoIG9mIHRoZSAxNiB0cmFwcy4gIElmIHRyYXBbaV0gaXMgMCwgdGhlbiB0aGlzIHBhcnRpY3VsYXIKKwl0cmFwIGlzIHRvIGJlIGlnbm9yZWQgKGkuZS4gbm90IHdyaXR0ZW4gdG8gVElCQ1JbaV0pLiAgVGhlIGVudGlyZSB2YWx1ZQorCWlzIHdyaXR0ZW4gYXMtaXMgdG8gdGhlIFRJQkNSW2ldIHJlZ2lzdGVyLCBzbyBiZSBzdXJlIHRvIHNldCB0aGUgRU4KKwlhbmQgVF9JQlAgYml0cyBpZiBuZWNlc3NhcnkuCisKKwknZWNjcicgaXMgdGhlIHZhbHVlIHRvIHByb2dyYW0gaW50byB0aGUgRUNDUiByZWdpc3Rlci4KKworCSdpcmFtX29mZnNldCcgaXMgdGhlIG9mZnNldCBpbnRvIElSQU0gdG8gc3RhcnQgd3JpdGluZyB0aGUKKwltaWNyb2NvZGUuCisKKwknY291bnQnIGlzIHRoZSBudW1iZXIgb2YgMzItYml0IHdvcmRzIGluIHRoZSBtaWNyb2NvZGUuCisKKwknY29kZV9vZmZzZXQnIGlzIHRoZSBvZmZzZXQsIGluIGJ5dGVzLCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhpcworCXN0cnVjdHVyZSB3aGVyZSB0aGUgbWljcm9jb2RlIGl0c2VsZiBjYW4gYmUgZm91bmQuICBUaGUgZmlyc3QKKwltaWNyb2NvZGUgYmluYXJ5IHNob3VsZCBiZSBsb2NhdGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSAnbWljcm9jb2RlJworCWFycmF5LgorCisJJ21ham9yJywgJ21pbm9yJywgYW5kICdyZXZpc2lvbicgYXJlIHRoZSBtYWpvciwgbWlub3IsIGFuZCByZXZpc2lvbgorCXZlcnNpb24gbnVtYmVycywgcmVzcGVjdGl2ZWx5LCBvZiB0aGUgbWljcm9jb2RlLiAgSWYgYWxsIHZhbHVlcyBhcmUgMCwKKwl0aGVuIHRoZXNlIGZpZWxkcyBhcmUgaWdub3JlZC4KKworCSdyZXNlcnZlZCcgaXMgbmVjZXNzYXJ5IGZvciBzdHJ1Y3R1cmUgYWxpZ25tZW50LiAgU2luY2UgJ21pY3JvY29kZScKKwlpcyBhbiBhcnJheSwgdGhlIDY0LWJpdCAnZXh0ZW5kZWRfbW9kZXMnIGZpZWxkIG5lZWRzIHRvIGJlIGFsaWduZWQKKwlvbiBhIDY0LWJpdCBib3VuZGFyeSwgYW5kIHRoaXMgY2FuIG9ubHkgaGFwcGVuIGlmIHRoZSBzaXplIG9mCisJJ21pY3JvY29kZScgaXMgYSBtdWx0aXBsZSBvZiA4IGJ5dGVzLiAgVG8gZW5zdXJlIHRoYXQsIHdlIGFkZAorCSdyZXNlcnZlZCcuCisKK0FmdGVyIHRoZSBsYXN0IG1pY3JvY29kZSBpcyBhIDMyLWJpdCBDUkMuICBJdCBjYW4gYmUgY2FsY3VsYXRlZCB1c2luZwordGhpcyBhbGdvcml0aG06CisKK3UzMiBjcmMzMihjb25zdCB1OCAqcCwgdW5zaWduZWQgaW50IGxlbikKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKwl1MzIgY3JjID0gMDsKKworCXdoaWxlIChsZW4tLSkgeworCSAgIGNyYyBePSAqcCsrOworCSAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspCisJCSAgIGNyYyA9IChjcmMgPj4gMSkgXiAoKGNyYyAmIDEpID8gMHhlZGI4ODMyMCA6IDApOworCX0KKwlyZXR1cm4gY3JjOworfQorCitWSSAtIFNhbXBsZSBDb2RlIGZvciBDcmVhdGluZyBGaXJtd2FyZSBGaWxlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQSBQeXRob24gcHJvZ3JhbSB0aGF0IGNyZWF0ZXMgZmlybXdhcmUgYmluYXJpZXMgZnJvbSB0aGUgaGVhZGVyIGZpbGVzIG5vcm1hbGx5CitkaXN0cmlidXRlZCBieSBGcmVlc2NhbGUgY2FuIGJlIGZvdW5kIG9uIGh0dHA6Ly9vcGVuc291cmNlLmZyZWVzY2FsZS5jb20uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VycGMvdHJhbnNhY3Rpb25hbF9tZW1vcnkudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlcnBjL3RyYW5zYWN0aW9uYWxfbWVtb3J5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTBhMmE0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlcnBjL3RyYW5zYWN0aW9uYWxfbWVtb3J5LnR4dApAQCAtMCwwICsxLDE5OCBAQAorVHJhbnNhY3Rpb25hbCBNZW1vcnkgc3VwcG9ydAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQT1dFUiBrZXJuZWwgc3VwcG9ydCBmb3IgdGhpcyBmZWF0dXJlIGlzIGN1cnJlbnRseSBsaW1pdGVkIHRvIHN1cHBvcnRpbmcKK2l0cyB1c2UgYnkgdXNlciBwcm9ncmFtcy4gIEl0IGlzIG5vdCBjdXJyZW50bHkgdXNlZCBieSB0aGUga2VybmVsIGl0c2VsZi4KKworVGhpcyBmaWxlIGFpbXMgdG8gc3VtIHVwIGhvdyBpdCBpcyBzdXBwb3J0ZWQgYnkgTGludXggYW5kIHdoYXQgYmVoYXZpb3VyIHlvdQorY2FuIGV4cGVjdCBmcm9tIHlvdXIgdXNlciBwcm9ncmFtcy4KKworCitCYXNpYyBvdmVydmlldworPT09PT09PT09PT09PT0KKworSGFyZHdhcmUgVHJhbnNhY3Rpb25hbCBNZW1vcnkgaXMgc3VwcG9ydGVkIG9uIFBPV0VSOCBwcm9jZXNzb3JzLCBhbmQgaXMgYQorZmVhdHVyZSB0aGF0IGVuYWJsZXMgYSBkaWZmZXJlbnQgZm9ybSBvZiBhdG9taWMgbWVtb3J5IGFjY2Vzcy4gIFNldmVyYWwgbmV3CitpbnN0cnVjdGlvbnMgYXJlIHByZXNlbnRlZCB0byBkZWxpbWl0IHRyYW5zYWN0aW9uczsgdHJhbnNhY3Rpb25zIGFyZQorZ3VhcmFudGVlZCB0byBlaXRoZXIgY29tcGxldGUgYXRvbWljYWxseSBvciByb2xsIGJhY2sgYW5kIHVuZG8gYW55IHBhcnRpYWwKK2NoYW5nZXMuCisKK0Egc2ltcGxlIHRyYW5zYWN0aW9uIGxvb2tzIGxpa2UgdGhpczoKKworYmVnaW5fbW92ZV9tb25leToKKyAgdGJlZ2luCisgIGJlcSAgIGFib3J0X2hhbmRsZXIKKworICBsZCAgICByNCwgU0FWSU5HU19BQ0NUKHIzKQorICBsZCAgICByNSwgQ1VSUkVOVF9BQ0NUKHIzKQorICBzdWJpICByNSwgcjUsIDEKKyAgYWRkaSAgcjQsIHI0LCAxCisgIHN0ZCAgIHI0LCBTQVZJTkdTX0FDQ1QocjMpCisgIHN0ZCAgIHI1LCBDVVJSRU5UX0FDQ1QocjMpCisKKyAgdGVuZAorCisgIGIgICAgIGNvbnRpbnVlCisKK2Fib3J0X2hhbmRsZXI6CisgIC4uLiB0ZXN0IGZvciBvZGQgZmFpbHVyZXMgLi4uCisKKyAgLyogUmV0cnkgdGhlIHRyYW5zYWN0aW9uIGlmIGl0IGZhaWxlZCBiZWNhdXNlIGl0IGNvbmZsaWN0ZWQgd2l0aAorICAgKiBzb21lb25lIGVsc2U6ICovCisgIGIgICAgIGJlZ2luX21vdmVfbW9uZXkKKworCitUaGUgJ3RiZWdpbicgaW5zdHJ1Y3Rpb24gZGVub3RlcyB0aGUgc3RhcnQgcG9pbnQsIGFuZCAndGVuZCcgdGhlIGVuZCBwb2ludC4KK0JldHdlZW4gdGhlc2UgcG9pbnRzIHRoZSBwcm9jZXNzb3IgaXMgaW4gJ1RyYW5zYWN0aW9uYWwnIHN0YXRlOyBhbnkgbWVtb3J5CityZWZlcmVuY2VzIHdpbGwgY29tcGxldGUgaW4gb25lIGdvIGlmIHRoZXJlIGFyZSBubyBjb25mbGljdHMgd2l0aCBvdGhlcgordHJhbnNhY3Rpb25hbCBvciBub24tdHJhbnNhY3Rpb25hbCBhY2Nlc3NlcyB3aXRoaW4gdGhlIHN5c3RlbS4gIEluIHRoaXMKK2V4YW1wbGUsIHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0ZXMgYXMgdGhvdWdoIGl0IHdlcmUgbm9ybWFsIHN0cmFpZ2h0LWxpbmUgY29kZQorSUYgbm8gb3RoZXIgcHJvY2Vzc29yIGhhcyB0b3VjaGVkIFNBVklOR1NfQUNDVChyMykgb3IgQ1VSUkVOVF9BQ0NUKHIzKTsgYW4KK2F0b21pYyBtb3ZlIG9mIG1vbmV5IGZyb20gdGhlIGN1cnJlbnQgYWNjb3VudCB0byB0aGUgc2F2aW5ncyBhY2NvdW50IGhhcyBiZWVuCitwZXJmb3JtZWQuICBFdmVuIHRob3VnaCB0aGUgbm9ybWFsIGxkL3N0ZCBpbnN0cnVjdGlvbnMgYXJlIHVzZWQgKG5vdGUgbm8KK2x3YXJ4L3N0d2N4KSwgZWl0aGVyICpib3RoKiBTQVZJTkdTX0FDQ1QocjMpIGFuZCBDVVJSRU5UX0FDQ1QocjMpIHdpbGwgYmUKK3VwZGF0ZWQsIG9yIG5laXRoZXIgd2lsbCBiZSB1cGRhdGVkLgorCitJZiwgaW4gdGhlIG1lYW50aW1lLCB0aGVyZSBpcyBhIGNvbmZsaWN0IHdpdGggdGhlIGxvY2F0aW9ucyBhY2Nlc3NlZCBieSB0aGUKK3RyYW5zYWN0aW9uLCB0aGUgdHJhbnNhY3Rpb24gd2lsbCBiZSBhYm9ydGVkIGJ5IHRoZSBDUFUuICBSZWdpc3RlciBhbmQgbWVtb3J5CitzdGF0ZSB3aWxsIHJvbGwgYmFjayB0byB0aGF0IGF0IHRoZSAndGJlZ2luJywgYW5kIGNvbnRyb2wgd2lsbCBjb250aW51ZSBmcm9tCisndGJlZ2luKzQnLiAgVGhlIGJyYW5jaCB0byBhYm9ydF9oYW5kbGVyIHdpbGwgYmUgdGFrZW4gdGhpcyBzZWNvbmQgdGltZTsgdGhlCithYm9ydCBoYW5kbGVyIGNhbiBjaGVjayB0aGUgY2F1c2Ugb2YgdGhlIGZhaWx1cmUsIGFuZCByZXRyeS4KKworQ2hlY2twb2ludGVkIHJlZ2lzdGVycyBpbmNsdWRlIGFsbCBHUFJzLCBGUFJzLCBWUnMvVlNScywgTFIsIENDUi9DUiwgQ1RSLCBGUENTUgorYW5kIGEgZmV3IG90aGVyIHN0YXR1cy9mbGFnIHJlZ3M7IHNlZSB0aGUgSVNBIGZvciBkZXRhaWxzLgorCitDYXVzZXMgb2YgdHJhbnNhY3Rpb24gYWJvcnRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0gQ29uZmxpY3RzIHdpdGggY2FjaGUgbGluZXMgdXNlZCBieSBvdGhlciBwcm9jZXNzb3JzCistIFNpZ25hbHMKKy0gQ29udGV4dCBzd2l0Y2hlcworLSBTZWUgdGhlIElTQSBmb3IgZnVsbCBkb2N1bWVudGF0aW9uIG9mIGV2ZXJ5dGhpbmcgdGhhdCB3aWxsIGFib3J0IHRyYW5zYWN0aW9ucy4KKworCitTeXNjYWxscworPT09PT09PT0KKworU3lzY2FsbHMgbWFkZSBmcm9tIHdpdGhpbiBhbiBhY3RpdmUgdHJhbnNhY3Rpb24gd2lsbCBub3QgYmUgcGVyZm9ybWVkIGFuZCB0aGUKK3RyYW5zYWN0aW9uIHdpbGwgYmUgZG9vbWVkIGJ5IHRoZSBrZXJuZWwgd2l0aCB0aGUgZmFpbHVyZSBjb2RlIFRNX0NBVVNFX1NZU0NBTEwKK3wgVE1fQ0FVU0VfUEVSU0lTVEVOVC4KKworU3lzY2FsbHMgbWFkZSBmcm9tIHdpdGhpbiBhIHN1c3BlbmRlZCB0cmFuc2FjdGlvbiBhcmUgcGVyZm9ybWVkIGFzIG5vcm1hbCBhbmQKK3RoZSB0cmFuc2FjdGlvbiBpcyBub3QgZXhwbGljaXRseSBkb29tZWQgYnkgdGhlIGtlcm5lbC4gIEhvd2V2ZXIsIHdoYXQgdGhlCitrZXJuZWwgZG9lcyB0byBwZXJmb3JtIHRoZSBzeXNjYWxsIG1heSByZXN1bHQgaW4gdGhlIHRyYW5zYWN0aW9uIGJlaW5nIGRvb21lZAorYnkgdGhlIGhhcmR3YXJlLiAgVGhlIHN5c2NhbGwgaXMgcGVyZm9ybWVkIGluIHN1c3BlbmRlZCBtb2RlIHNvIGFueSBzaWRlCitlZmZlY3RzIHdpbGwgYmUgcGVyc2lzdGVudCwgaW5kZXBlbmRlbnQgb2YgdHJhbnNhY3Rpb24gc3VjY2VzcyBvciBmYWlsdXJlLiAgTm8KK2d1YXJhbnRlZXMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBrZXJuZWwgYWJvdXQgd2hpY2ggc3lzY2FsbHMgd2lsbCBhZmZlY3QKK3RyYW5zYWN0aW9uIHN1Y2Nlc3MuCisKK0NhcmUgbXVzdCBiZSB0YWtlbiB3aGVuIHJlbHlpbmcgb24gc3lzY2FsbHMgdG8gYWJvcnQgZHVyaW5nIGFjdGl2ZSB0cmFuc2FjdGlvbnMKK2lmIHRoZSBjYWxscyBhcmUgbWFkZSB2aWEgYSBsaWJyYXJ5LiAgTGlicmFyaWVzIG1heSBjYWNoZSB2YWx1ZXMgKHdoaWNoIG1heQorZ2l2ZSB0aGUgYXBwZWFyYW5jZSBvZiBzdWNjZXNzKSBvciBwZXJmb3JtIG9wZXJhdGlvbnMgdGhhdCBjYXVzZSB0cmFuc2FjdGlvbgorZmFpbHVyZSBiZWZvcmUgZW50ZXJpbmcgdGhlIGtlcm5lbCAod2hpY2ggbWF5IHByb2R1Y2UgZGlmZmVyZW50IGZhaWx1cmUgY29kZXMpLgorRXhhbXBsZXMgYXJlIGdsaWJjJ3MgZ2V0cGlkKCkgYW5kIGxhenkgc3ltYm9sIHJlc29sdXRpb24uCisKKworU2lnbmFscworPT09PT09PQorCitEZWxpdmVyeSBvZiBzaWduYWxzIChib3RoIHN5bmMgYW5kIGFzeW5jKSBkdXJpbmcgdHJhbnNhY3Rpb25zIHByb3ZpZGVzIGEgc2Vjb25kCit0aHJlYWQgc3RhdGUgKHVjb250ZXh0L21jb250ZXh0KSB0byByZXByZXNlbnQgdGhlIHNlY29uZCB0cmFuc2FjdGlvbmFsIHJlZ2lzdGVyCitzdGF0ZS4gIFNpZ25hbCBkZWxpdmVyeSAndHJlY2xhaW0ncyB0byBjYXB0dXJlIGJvdGggcmVnaXN0ZXIgc3RhdGVzLCBzbyBzaWduYWxzCithYm9ydCB0cmFuc2FjdGlvbnMuICBUaGUgdXN1YWwgdWNvbnRleHRfdCBwYXNzZWQgdG8gdGhlIHNpZ25hbCBoYW5kbGVyCityZXByZXNlbnRzIHRoZSBjaGVja3BvaW50ZWQvb3JpZ2luYWwgcmVnaXN0ZXIgc3RhdGU7IHRoZSBzaWduYWwgYXBwZWFycyB0byBoYXZlCithcmlzZW4gYXQgJ3RiZWdpbis0Jy4KKworSWYgdGhlIHNpZ2hhbmRsZXIgdWNvbnRleHQgaGFzIHVjX2xpbmsgc2V0LCBhIHNlY29uZCB1Y29udGV4dCBoYXMgYmVlbgorZGVsaXZlcmVkLiAgRm9yIGZ1dHVyZSBjb21wYXRpYmlsaXR5IHRoZSBNU1IuVFMgZmllbGQgc2hvdWxkIGJlIGNoZWNrZWQgdG8KK2RldGVybWluZSB0aGUgdHJhbnNhY3Rpb25hbCBzdGF0ZSAtLSBpZiBzbywgdGhlIHNlY29uZCB1Y29udGV4dCBpbiB1Yy0+dWNfbGluaworcmVwcmVzZW50cyB0aGUgYWN0aXZlIHRyYW5zYWN0aW9uYWwgcmVnaXN0ZXJzIGF0IHRoZSBwb2ludCBvZiB0aGUgc2lnbmFsLgorCitGb3IgNjQtYml0IHByb2Nlc3NlcywgdWMtPnVjX21jb250ZXh0LnJlZ3MtPm1zciBpcyBhIGZ1bGwgNjQtYml0IE1TUiBhbmQgaXRzIFRTCitmaWVsZCBzaG93cyB0aGUgdHJhbnNhY3Rpb25hbCBtb2RlLgorCitGb3IgMzItYml0IHByb2Nlc3NlcywgdGhlIG1jb250ZXh0J3MgTVNSIHJlZ2lzdGVyIGlzIG9ubHkgMzIgYml0czsgdGhlIHRvcCAzMgorYml0cyBhcmUgc3RvcmVkIGluIHRoZSBNU1Igb2YgdGhlIHNlY29uZCB1Y29udGV4dCwgaS5lLiBpbgordWMtPnVjX2xpbmstPnVjX21jb250ZXh0LnJlZ3MtPm1zci4gIFRoZSB0b3Agd29yZCBjb250YWlucyB0aGUgdHJhbnNhY3Rpb25hbAorc3RhdGUgVFMuCisKK0hvd2V2ZXIsIGJhc2ljIHNpZ25hbCBoYW5kbGVycyBkb24ndCBuZWVkIHRvIGJlIGF3YXJlIG9mIHRyYW5zYWN0aW9ucworYW5kIHNpbXBseSByZXR1cm5pbmcgZnJvbSB0aGUgaGFuZGxlciB3aWxsIGRlYWwgd2l0aCB0aGluZ3MgY29ycmVjdGx5OgorCitUcmFuc2FjdGlvbi1hd2FyZSBzaWduYWwgaGFuZGxlcnMgY2FuIHJlYWQgdGhlIHRyYW5zYWN0aW9uYWwgcmVnaXN0ZXIgc3RhdGUKK2Zyb20gdGhlIHNlY29uZCB1Y29udGV4dC4gIFRoaXMgd2lsbCBiZSBuZWNlc3NhcnkgZm9yIGNyYXNoIGhhbmRsZXJzIHRvCitkZXRlcm1pbmUsIGZvciBleGFtcGxlLCB0aGUgYWRkcmVzcyBvZiB0aGUgaW5zdHJ1Y3Rpb24gY2F1c2luZyB0aGUgU0lHU0VHVi4KKworRXhhbXBsZSBzaWduYWwgaGFuZGxlcjoKKworICAgIHZvaWQgY3Jhc2hfaGFuZGxlcihpbnQgc2lnLCBzaWdpbmZvX3QgKnNpLCB2b2lkICp1YykKKyAgICB7CisgICAgICB1Y29udGV4dF90ICp1Y3AgPSB1YzsKKyAgICAgIHVjb250ZXh0X3QgKnRyYW5zYWN0aW9uYWxfdWNwID0gdWNwLT51Y19saW5rOworCisgICAgICBpZiAodWNwX2xpbmspIHsKKyAgICAgICAgdTY0IG1zciA9IHVjcC0+dWNfbWNvbnRleHQucmVncy0+bXNyOworICAgICAgICAvKiBNYXkgaGF2ZSB0cmFuc2FjdGlvbmFsIHVjb250ZXh0ISAqLworI2lmbmRlZiBfX3Bvd2VycGM2NF9fCisgICAgICAgIG1zciB8PSAoKHU2NCl0cmFuc2FjdGlvbmFsX3VjcC0+dWNfbWNvbnRleHQucmVncy0+bXNyKSA8PCAzMjsKKyNlbmRpZgorICAgICAgICBpZiAoTVNSX1RNX0FDVElWRShtc3IpKSB7CisgICAgICAgICAgIC8qIFllcywgd2UgY3Jhc2hlZCBkdXJpbmcgYSB0cmFuc2FjdGlvbi4gIE9vcHMuICovCisgICBmcHJpbnRmKHN0ZGVyciwgIlRyYW5zYWN0aW9uIHRvIGJlIHJlc3RhcnRlZCBhdCAweCVsbHgsIGJ1dCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3Jhc2h5IGluc3RydWN0aW9uIHdhcyBhdCAweCVsbHhcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1Y3AtPnVjX21jb250ZXh0LnJlZ3MtPm5pcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uYWxfdWNwLT51Y19tY29udGV4dC5yZWdzLT5uaXApOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGZpeF90aGVfcHJvYmxlbSh1Y3AtPmRhcik7CisgICAgfQorCitXaGVuIGluIGFuIGFjdGl2ZSB0cmFuc2FjdGlvbiB0aGF0IHRha2VzIGEgc2lnbmFsLCB3ZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2l0aAordGhlIHN0YWNrLiAgSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBzdGFjayBoYXMgbW92ZWQgYmFjayB1cCBhZnRlciB0aGUgdGJlZ2luLgorVGhlIG9idmlvdXMgY2FzZSBoZXJlIGlzIHdoZW4gdGhlIHRiZWdpbiBpcyBjYWxsZWQgaW5zaWRlIGEgZnVuY3Rpb24gdGhhdAorcmV0dXJucyBiZWZvcmUgYSB0ZW5kLiAgSW4gdGhpcyBjYXNlLCB0aGUgc3RhY2sgaXMgcGFydCBvZiB0aGUgY2hlY2twb2ludGVkCit0cmFuc2FjdGlvbmFsIG1lbW9yeSBzdGF0ZS4gIElmIHdlIHdyaXRlIG92ZXIgdGhpcyBub24gdHJhbnNhY3Rpb25hbGx5IG9yIGluCitzdXNwZW5kLCB3ZSBhcmUgaW4gdHJvdWJsZSBiZWNhdXNlIGlmIHdlIGdldCBhIHRtIGFib3J0LCB0aGUgcHJvZ3JhbSBjb3VudGVyIGFuZAorc3RhY2sgcG9pbnRlciB3aWxsIGJlIGJhY2sgYXQgdGhlIHRiZWdpbiBidXQgb3VyIGluIG1lbW9yeSBzdGFjayB3b24ndCBiZSB2YWxpZAorYW55bW9yZS4KKworVG8gYXZvaWQgdGhpcywgd2hlbiB0YWtpbmcgYSBzaWduYWwgaW4gYW4gYWN0aXZlIHRyYW5zYWN0aW9uLCB3ZSBuZWVkIHRvIHVzZQordGhlIHN0YWNrIHBvaW50ZXIgZnJvbSB0aGUgY2hlY2twb2ludGVkIHN0YXRlLCByYXRoZXIgdGhhbiB0aGUgc3BlY3VsYXRlZAorc3RhdGUuICBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgc2lnbmFsIGNvbnRleHQgKHdyaXR0ZW4gdG0gc3VzcGVuZGVkKSB3aWxsIGJlCit3cml0dGVuIGJlbG93IHRoZSBzdGFjayByZXF1aXJlZCBmb3IgdGhlIHJvbGxiYWNrLiAgVGhlIHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQKK2JlY2F1c2Ugb2YgdGhlIHRyZWNsYWltLCBzbyBhbnkgbWVtb3J5IHdyaXR0ZW4gYmV0d2VlbiB0aGUgdGJlZ2luIGFuZCB0aGUKK3NpZ25hbCB3aWxsIGJlIHJvbGxlZCBiYWNrIGFueXdheS4KKworRm9yIHNpZ25hbHMgdGFrZW4gaW4gbm9uLVRNIG9yIHN1c3BlbmRlZCBtb2RlLCB3ZSB1c2UgdGhlCitub3JtYWwvbm9uLWNoZWNrcG9pbnRlZCBzdGFjayBwb2ludGVyLgorCisKK0ZhaWx1cmUgY2F1c2UgY29kZXMgdXNlZCBieSBrZXJuZWwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlc2UgYXJlIGRlZmluZWQgaW4gPGFzbS9yZWcuaD4sIGFuZCBkaXN0aW5ndWlzaCBkaWZmZXJlbnQgcmVhc29ucyB3aHkgdGhlCitrZXJuZWwgYWJvcnRlZCBhIHRyYW5zYWN0aW9uOgorCisgVE1fQ0FVU0VfUkVTQ0hFRCAgICAgICBUaHJlYWQgd2FzIHJlc2NoZWR1bGVkLgorIFRNX0NBVVNFX1RMQkkgICAgICAgICAgU29mdHdhcmUgVExCIGludmFsaWQuCisgVE1fQ0FVU0VfRkFDX1VOQVYgICAgICBGUC9WRUMvVlNYIHVuYXZhaWxhYmxlIHRyYXAuCisgVE1fQ0FVU0VfU1lTQ0FMTCAgICAgICBTeXNjYWxsIGZyb20gYWN0aXZlIHRyYW5zYWN0aW9uLgorIFRNX0NBVVNFX1NJR05BTCAgICAgICAgU2lnbmFsIGRlbGl2ZXJlZC4KKyBUTV9DQVVTRV9NSVNDICAgICAgICAgIEN1cnJlbnRseSB1bnVzZWQuCisgVE1fQ0FVU0VfQUxJR05NRU5UICAgICBBbGlnbm1lbnQgZmF1bHQuCisgVE1fQ0FVU0VfRU1VTEFURSAgICAgICBFbXVsYXRpb24gdGhhdCB0b3VjaGVkIG1lbW9yeS4KKworVGhlc2UgY2FuIGJlIGNoZWNrZWQgYnkgdGhlIHVzZXIgcHJvZ3JhbSdzIGFib3J0IGhhbmRsZXIgYXMgVEVYQVNSWzA6N10uICBJZgorYml0IDcgaXMgc2V0LCBpdCBpbmRpY2F0ZXMgdGhhdCB0aGUgZXJyb3IgaXMgY29uc2lkZXIgcGVyc2lzdGVudC4gIEZvciBleGFtcGxlCithIFRNX0NBVVNFX0FMSUdOTUVOVCB3aWxsIGJlIHBlcnNpc3RlbnQgd2hpbGUgYSBUTV9DQVVTRV9SRVNDSEVEIHdpbGwgbm90LgorCitHREIKKz09PQorCitHREIgYW5kIHB0cmFjZSBhcmUgbm90IGN1cnJlbnRseSBUTS1hd2FyZS4gIElmIG9uZSBzdG9wcyBkdXJpbmcgYSB0cmFuc2FjdGlvbiwKK2l0IGxvb2tzIGxpa2UgdGhlIHRyYW5zYWN0aW9uIGhhcyBqdXN0IHN0YXJ0ZWQgKHRoZSBjaGVja3BvaW50ZWQgc3RhdGUgaXMKK3ByZXNlbnRlZCkuICBUaGUgdHJhbnNhY3Rpb24gY2Fubm90IHRoZW4gYmUgY29udGludWVkIGFuZCB3aWxsIHRha2UgdGhlIGZhaWx1cmUKK2hhbmRsZXIgcm91dGUuICBGdXJ0aGVybW9yZSwgdGhlIHRyYW5zYWN0aW9uYWwgMm5kIHJlZ2lzdGVyIHN0YXRlIHdpbGwgYmUKK2luYWNjZXNzaWJsZS4gIEdEQiBjYW4gY3VycmVudGx5IGJlIHVzZWQgb24gcHJvZ3JhbXMgdXNpbmcgVE0sIGJ1dCBub3Qgc2Vuc2libHkKK2luIHBhcnRzIHdpdGhpbiB0cmFuc2FjdGlvbnMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bwcy9wcHMudHh0IGIvRG9jdW1lbnRhdGlvbi9wcHMvcHBzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2I3MjY0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wcHMvcHBzLnR4dApAQCAtMCwwICsxLDIzMyBAQAorCisJCQlQUFMgLSBQdWxzZSBQZXIgU2Vjb25kCisJCQktLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyhDKSBDb3B5cmlnaHQgMjAwNyBSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBlbm5lZW5uZS5jb20+CisKK1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CitpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQordGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyhhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKK1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKK01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKworCitPdmVydmlldworLS0tLS0tLS0KKworTGludXhQUFMgcHJvdmlkZXMgYSBwcm9ncmFtbWluZyBpbnRlcmZhY2UgKEFQSSkgdG8gZGVmaW5lIGluIHRoZQorc3lzdGVtIHNldmVyYWwgUFBTIHNvdXJjZXMuCisKK1BQUyBtZWFucyAicHVsc2UgcGVyIHNlY29uZCIgYW5kIGEgUFBTIHNvdXJjZSBpcyBqdXN0IGEgZGV2aWNlIHdoaWNoCitwcm92aWRlcyBhIGhpZ2ggcHJlY2lzaW9uIHNpZ25hbCBlYWNoIHNlY29uZCBzbyB0aGF0IGFuIGFwcGxpY2F0aW9uCitjYW4gdXNlIGl0IHRvIGFkanVzdCBzeXN0ZW0gY2xvY2sgdGltZS4KKworQSBQUFMgc291cmNlIGNhbiBiZSBjb25uZWN0ZWQgdG8gYSBzZXJpYWwgcG9ydCAodXN1YWxseSB0byB0aGUgRGF0YQorQ2FycmllciBEZXRlY3QgcGluKSBvciB0byBhIHBhcmFsbGVsIHBvcnQgKEFDSy1waW4pIG9yIHRvIGEgc3BlY2lhbAorQ1BVJ3MgR1BJT3MgKHRoaXMgaXMgdGhlIGNvbW1vbiBjYXNlIGluIGVtYmVkZGVkIHN5c3RlbXMpIGJ1dCBpbiBlYWNoCitjYXNlIHdoZW4gYSBuZXcgcHVsc2UgYXJyaXZlcyB0aGUgc3lzdGVtIG11c3QgYXBwbHkgdG8gaXQgYSB0aW1lc3RhbXAKK2FuZCByZWNvcmQgaXQgZm9yIHVzZXJsYW5kLgorCitDb21tb24gdXNlIGlzIHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgTlRQRCBhcyB1c2VybGFuZCBwcm9ncmFtLCB3aXRoIGEKK0dQUyByZWNlaXZlciBhcyBQUFMgc291cmNlLCB0byBvYnRhaW4gYSB3YWxsY2xvY2stdGltZSB3aXRoCitzdWItbWlsbGlzZWNvbmQgc3luY2hyb25pc2F0aW9uIHRvIFVUQy4KKworCitSRkMgY29uc2lkZXJhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitXaGlsZSBpbXBsZW1lbnRpbmcgYSBQUFMgQVBJIGFzIFJGQyAyNzgzIGRlZmluZXMgYW5kIHVzaW5nIGFuIGVtYmVkZGVkCitDUFUgR1BJTy1QaW4gYXMgcGh5c2ljYWwgbGluayB0byB0aGUgc2lnbmFsLCBJIGVuY291bnRlcmVkIGEgZGVlcGVyCitwcm9ibGVtOgorCisgICBBdCBzdGFydHVwIGl0IG5lZWRzIGEgZmlsZSBkZXNjcmlwdG9yIGFzIGFyZ3VtZW50IGZvciB0aGUgZnVuY3Rpb24KKyAgIHRpbWVfcHBzX2NyZWF0ZSgpLgorCitUaGlzIGltcGxpZXMgdGhhdCB0aGUgc291cmNlIGhhcyBhIC9kZXYvLi4uIGVudHJ5LiBUaGlzIGFzc3VtcHRpb24gaXMKK29rIGZvciB0aGUgc2VyaWFsIGFuZCBwYXJhbGxlbCBwb3J0LCB3aGVyZSB5b3UgY2FuIGRvIHNvbWV0aGluZwordXNlZnVsIGJlc2lkZXMoISkgdGhlIGdhdGhlcmluZyBvZiB0aW1lc3RhbXBzIGFzIGl0IGlzIHRoZSBjZW50cmFsCit0YXNrIGZvciBhIFBQUy1BUEkuIEJ1dCB0aGlzIGFzc3VtcHRpb24gZG9lcyBub3Qgd29yayBmb3IgYSBzaW5nbGUKK3B1cnBvc2UgR1BJTyBsaW5lLiBJbiB0aGlzIGNhc2UgZXZlbiBiYXNpYyBmaWxlLXJlbGF0ZWQgZnVuY3Rpb25hbGl0eQorKGxpa2UgcmVhZCgpIGFuZCB3cml0ZSgpKSBtYWtlcyBubyBzZW5zZSBhdCBhbGwgYW5kIHNob3VsZCBub3QgYmUgYQorcHJlY29uZGl0aW9uIGZvciB0aGUgdXNlIG9mIGEgUFBTLUFQSS4KKworVGhlIHByb2JsZW0gY2FuIGJlIHNpbXBseSBzb2x2ZWQgaWYgeW91IGNvbnNpZGVyIHRoYXQgYSBQUFMgc291cmNlIGlzCitub3QgYWx3YXlzIGNvbm5lY3RlZCB3aXRoIGEgR1BTIGRhdGEgc291cmNlLgorCitTbyB5b3VyIHByb2dyYW1zIHNob3VsZCBjaGVjayBpZiB0aGUgR1BTIGRhdGEgc291cmNlICh0aGUgc2VyaWFsIHBvcnQKK2ZvciBpbnN0YW5jZSkgaXMgYSBQUFMgc291cmNlIHRvbywgYW5kIGlmIG5vdCB0aGV5IHNob3VsZCBwcm92aWRlIHRoZQorcG9zc2liaWxpdHkgdG8gb3BlbiBhbm90aGVyIGRldmljZSBhcyBQUFMgc291cmNlLgorCitJbiBMaW51eFBQUyB0aGUgUFBTIHNvdXJjZXMgYXJlIHNpbXBseSBjaGFyIGRldmljZXMgdXN1YWxseSBtYXBwZWQKK2ludG8gZmlsZXMgL2Rldi9wcHMwLCAvZGV2L3BwczEsIGV0Yy4uCisKKworUFBTIHdpdGggVVNCIHRvIHNlcmlhbCBkZXZpY2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSXQgaXMgcG9zc2libGUgdG8gZ3JhYiB0aGUgUFBTIGZyb20gYW4gVVNCIHRvIHNlcmlhbCBkZXZpY2UuIEhvd2V2ZXIsCit5b3Ugc2hvdWxkIHRha2UgaW50byBhY2NvdW50IHRoZSBsYXRlbmNpZXMgYW5kIGppdHRlciBpbnRyb2R1Y2VkIGJ5Cit0aGUgVVNCIHN0YWNrLiBVc2VycyBoYXMgcmVwb3J0ZWQgY2xvY2sgaW5zdGFiaWxpdHkgYXJvdW5kICstMW1zIHdoZW4KK3N5bmNocm9uaXplZCB3aXRoIFBQUyB0aHJvdWdoIFVTQi4gVGhpcyBpc24ndCBzdWl0ZWQgZm9yIHRpbWUgc2VydmVyCitzeW5jaHJvbml6YXRpb24uCisKK0lmIHlvdXIgZGV2aWNlIGRvZXNuJ3QgcmVwb3J0IFBQUywgeW91IGNhbiBjaGVjayB0aGF0IHRoZSBmZWF0dXJlIGlzCitzdXBwb3J0ZWQgYnkgaXRzIGRyaXZlci4gTW9zdCBvZiB0aGUgdGltZSwgeW91IG9ubHkgbmVlZCB0byBhZGQgYSBjYWxsCit0byB1c2Jfc2VyaWFsX2hhbmRsZV9kY2RfY2hhbmdlIGFmdGVyIGNoZWNraW5nIHRoZSBEQ0Qgc3RhdHVzIChzZWUKK2NoMzQxIGFuZCBwbDIzMDMgZXhhbXBsZXMpLgorCisKK0NvZGluZyBleGFtcGxlCistLS0tLS0tLS0tLS0tLQorCitUbyByZWdpc3RlciBhIFBQUyBzb3VyY2UgaW50byB0aGUga2VybmVsIHlvdSBzaG91bGQgZGVmaW5lIGEgc3RydWN0CitwcHNfc291cmNlX2luZm9fcyBhcyBmb2xsb3dzOgorCisgICAgc3RhdGljIHN0cnVjdCBwcHNfc291cmNlX2luZm8gcHBzX2t0aW1lcl9pbmZvID0geworCSAgICAubmFtZSAgICAgICAgID0gImt0aW1lciIsCisJICAgIC5wYXRoICAgICAgICAgPSAiIiwKKwkgICAgLm1vZGUgICAgICAgICA9IFBQU19DQVBUVVJFQVNTRVJUIHwgUFBTX09GRlNFVEFTU0VSVCB8IFwKKwkJCSAgICBQUFNfRUNIT0FTU0VSVCB8IFwKKwkJCSAgICBQUFNfQ0FOV0FJVCB8IFBQU19UU0ZNVF9UU1BFQywKKwkgICAgLmVjaG8gICAgICAgICA9IHBwc19rdGltZXJfZWNobywKKwkgICAgLm93bmVyICAgICAgICA9IFRISVNfTU9EVUxFLAorICAgIH07CisKK2FuZCB0aGVuIGNhbGxpbmcgdGhlIGZ1bmN0aW9uIHBwc19yZWdpc3Rlcl9zb3VyY2UoKSBpbiB5b3VyCitpbnRpYWxpemF0aW9uIHJvdXRpbmUgYXMgZm9sbG93czoKKworICAgIHNvdXJjZSA9IHBwc19yZWdpc3Rlcl9zb3VyY2UoJnBwc19rdGltZXJfaW5mbywKKwkJCVBQU19DQVBUVVJFQVNTRVJUIHwgUFBTX09GRlNFVEFTU0VSVCk7CisKK1RoZSBwcHNfcmVnaXN0ZXJfc291cmNlKCkgcHJvdG90eXBlIGlzOgorCisgIGludCBwcHNfcmVnaXN0ZXJfc291cmNlKHN0cnVjdCBwcHNfc291cmNlX2luZm9fcyAqaW5mbywgaW50IGRlZmF1bHRfcGFyYW1zKQorCit3aGVyZSAiaW5mbyIgaXMgYSBwb2ludGVyIHRvIGEgc3RydWN0dXJlIHRoYXQgZGVzY3JpYmVzIGEgcGFydGljdWxhcgorUFBTIHNvdXJjZSwgImRlZmF1bHRfcGFyYW1zIiB0ZWxscyB0aGUgc3lzdGVtIHdoYXQgdGhlIGluaXRpYWwgZGVmYXVsdAorcGFyYW1ldGVycyBmb3IgdGhlIGRldmljZSBzaG91bGQgYmUgKGl0IGlzIG9idmlvdXMgdGhhdCB0aGVzZSBwYXJhbWV0ZXJzCittdXN0IGJlIGEgc3Vic2V0IG9mIG9uZXMgZGVmaW5lZCBpbiB0aGUgc3RydWN0CitwcHNfc291cmNlX2luZm9fcyB3aGljaCBkZXNjcmliZSB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBkcml2ZXIpLgorCitPbmNlIHlvdSBoYXZlIHJlZ2lzdGVyZWQgYSBuZXcgUFBTIHNvdXJjZSBpbnRvIHRoZSBzeXN0ZW0geW91IGNhbgorc2lnbmFsIGFuIGFzc2VydCBldmVudCAoZm9yIGV4YW1wbGUgaW4gdGhlIGludGVycnVwdCBoYW5kbGVyIHJvdXRpbmUpCitqdXN0IHVzaW5nOgorCisgICAgcHBzX2V2ZW50KHNvdXJjZSwgJnRzLCBQUFNfQ0FQVFVSRUFTU0VSVCwgcHRyKQorCit3aGVyZSAidHMiIGlzIHRoZSBldmVudCdzIHRpbWVzdGFtcC4KKworVGhlIHNhbWUgZnVuY3Rpb24gbWF5IGFsc28gcnVuIHRoZSBkZWZpbmVkIGVjaG8gZnVuY3Rpb24KKyhwcHNfa3RpbWVyX2VjaG8oKSwgcGFzc2luZyB0byBpdCB0aGUgInB0ciIgcG9pbnRlcikgaWYgdGhlIHVzZXIKK2Fza2VkIGZvciB0aGF0Li4uIGV0Yy4uCisKK1BsZWFzZSBzZWUgdGhlIGZpbGUgZHJpdmVycy9wcHMvY2xpZW50cy9wcHMta3RpbWVyLmMgZm9yIGV4YW1wbGUgY29kZS4KKworCitTWVNGUyBzdXBwb3J0CistLS0tLS0tLS0tLS0tCisKK0lmIHRoZSBTWVNGUyBmaWxlc3lzdGVtIGlzIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBpdCBwcm92aWRlcyBhIG5ldyBjbGFzczoKKworICAgJCBscyAvc3lzL2NsYXNzL3Bwcy8KKyAgIHBwczAvICBwcHMxLyAgcHBzMi8KKworRXZlcnkgZGlyZWN0b3J5IGlzIHRoZSBJRCBvZiBhIFBQUyBzb3VyY2VzIGRlZmluZWQgaW4gdGhlIHN5c3RlbSBhbmQKK2luc2lkZSB5b3UgZmluZCBzZXZlcmFsIGZpbGVzOgorCisgICAkIGxzIC9zeXMvY2xhc3MvcHBzL3BwczAvCisgICBhc3NlcnQJY2xlYXIgIGVjaG8gIG1vZGUgIG5hbWUgIHBhdGggIHN1YnN5c3RlbUAgIHVldmVudAorCitJbnNpZGUgZWFjaCAiYXNzZXJ0IiBhbmQgImNsZWFyIiBmaWxlIHlvdSBjYW4gZmluZCB0aGUgdGltZXN0YW1wIGFuZCBhCitzZXF1ZW5jZSBudW1iZXI6CisKKyAgICQgY2F0IC9zeXMvY2xhc3MvcHBzL3BwczAvYXNzZXJ0CisgICAxMTcwMDI2ODcwLjk4MzIwNzk2NyM4CisKK1doZXJlIGJlZm9yZSB0aGUgIiMiIGlzIHRoZSB0aW1lc3RhbXAgaW4gc2Vjb25kczsgYWZ0ZXIgaXQgaXMgdGhlCitzZXF1ZW5jZSBudW1iZXIuIE90aGVyIGZpbGVzIGFyZToKKworKiBlY2hvOiByZXBvcnRzIGlmIHRoZSBQUFMgc291cmNlIGhhcyBhbiBlY2hvIGZ1bmN0aW9uIG9yIG5vdDsKKworKiBtb2RlOiByZXBvcnRzIGF2YWlsYWJsZSBQUFMgZnVuY3Rpb25pbmcgbW9kZXM7CisKKyogbmFtZTogcmVwb3J0cyB0aGUgUFBTIHNvdXJjZSdzIG5hbWU7CisKKyogcGF0aDogcmVwb3J0cyB0aGUgUFBTIHNvdXJjZSdzIGRldmljZSBwYXRoLCB0aGF0IGlzIHRoZSBkZXZpY2UgdGhlCisgIFBQUyBzb3VyY2UgaXMgY29ubmVjdGVkIHRvIChpZiBpdCBleGlzdHMpLgorCisKK1Rlc3RpbmcgdGhlIFBQUyBzdXBwb3J0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbiBvcmRlciB0byB0ZXN0IHRoZSBQUFMgc3VwcG9ydCBldmVuIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgeW91IGNhbiB1c2UKK3RoZSBrdGltZXIgZHJpdmVyIChzZWUgdGhlIGNsaWVudCBzdWJzZWN0aW9uIGluIHRoZSBQUFMgY29uZmlndXJhdGlvbiBtZW51KQorYW5kIHRoZSB1c2VybGFuZCB0b29scyBwcm92aWRlZCBpbiB0aGUgRG9jdW1lbnRhdGlvbi9wcHMvIGRpcmVjdG9yeS4KKworT25jZSB5b3UgaGF2ZSBlbmFibGVkIHRoZSBjb21waWxhdGlvbiBvZiBrdGltZXIganVzdCBtb2Rwcm9iZSBpdCAoaWYKK25vdCBzdGF0aWNhbGx5IGNvbXBpbGVkKToKKworICAgIyBtb2Rwcm9iZSBrdGltZXIKKworYW5kIHRoZSBydW4gcHBzdGVzdCBhcyBmb2xsb3c6CisKKyAgICQgLi9wcHN0ZXN0IC9kZXYvcHBzMAorICAgdHJ5aW5nIFBQUyBzb3VyY2UgIi9kZXYvcHBzMSIKKyAgIGZvdW5kIFBQUyBzb3VyY2UgIi9kZXYvcHBzMSIKKyAgIG9rLCBmb3VuZCAxIHNvdXJjZShzKSwgbm93IHN0YXJ0IGZldGNoaW5nIGRhdGEuLi4KKyAgIHNvdXJjZSAwIC0gYXNzZXJ0IDExODY1OTI2OTkuMzg4ODMyNDQzLCBzZXF1ZW5jZTogMzY0IC0gY2xlYXIgIDAuMDAwMDAwMDAwLCBzZXF1ZW5jZTogMAorICAgc291cmNlIDAgLSBhc3NlcnQgMTE4NjU5MjcwMC4zODg5MzEyOTUsIHNlcXVlbmNlOiAzNjUgLSBjbGVhciAgMC4wMDAwMDAwMDAsIHNlcXVlbmNlOiAwCisgICBzb3VyY2UgMCAtIGFzc2VydCAxMTg2NTkyNzAxLjM4OTAzMjc2NSwgc2VxdWVuY2U6IDM2NiAtIGNsZWFyICAwLjAwMDAwMDAwMCwgc2VxdWVuY2U6IDAKKworUGxlYXNlLCBub3RlIHRoYXQgdG8gY29tcGlsZSB1c2VybGFuZCBwcm9ncmFtcyB5b3UgbmVlZCB0aGUgZmlsZSB0aW1lcHBzLmgKKyhzZWUgRG9jdW1lbnRhdGlvbi9wcHMvKS4KKworCitHZW5lcmF0b3JzCistLS0tLS0tLS0tCisKK1NvbWV0aW1lcyBvbmUgbmVlZHMgdG8gYmUgYWJsZSBub3Qgb25seSB0byBjYXRjaCBQUFMgc2lnbmFscyBidXQgdG8gcHJvZHVjZQordGhlbSBhbHNvLiBGb3IgZXhhbXBsZSwgcnVubmluZyBhIGRpc3RyaWJ1dGVkIHNpbXVsYXRpb24sIHdoaWNoIHJlcXVpcmVzCitjb21wdXRlcnMnIGNsb2NrIHRvIGJlIHN5bmNocm9uaXplZCB2ZXJ5IHRpZ2h0bHkuIE9uZSB3YXkgdG8gZG8gdGhpcyBpcyB0bworaW52ZW50IHNvbWUgY29tcGxpY2F0ZWQgaGFyZHdhcmUgc29sdXRpb25zIGJ1dCBpdCBtYXkgYmUgbmVpdGhlciBuZWNlc3NhcnkKK25vciBhZmZvcmRhYmxlLiBUaGUgY2hlYXAgd2F5IGlzIHRvIGxvYWQgYSBQUFMgZ2VuZXJhdG9yIG9uIG9uZSBvZiB0aGUKK2NvbXB1dGVycyAobWFzdGVyKSBhbmQgUFBTIGNsaWVudHMgb24gb3RoZXJzIChzbGF2ZXMpLCBhbmQgdXNlIHZlcnkgc2ltcGxlCitjYWJsZXMgdG8gZGVsaXZlciBzaWduYWxzIHVzaW5nIHBhcmFsbGVsIHBvcnRzLCBmb3IgZXhhbXBsZS4KKworUGFyYWxsZWwgcG9ydCBjYWJsZSBwaW5vdXQ6CitwaW4JbmFtZQltYXN0ZXIgICAgICBzbGF2ZQorMQlTVFJPQkUJICAqLS0tLS0tICAgICAqCisyCUQwCSAgKiAgICAgfCAgICAgKgorMwlEMQkgICogICAgIHwgICAgICoKKzQJRDIJICAqICAgICB8ICAgICAqCis1CUQzCSAgKiAgICAgfCAgICAgKgorNglENAkgICogICAgIHwgICAgICoKKzcJRDUJICAqICAgICB8ICAgICAqCis4CUQ2CSAgKiAgICAgfCAgICAgKgorOQlENwkgICogICAgIHwgICAgICoKKzEwCUFDSwkgICogICAgIC0tLS0tLSoKKzExCUJVU1kJICAqICAgICAgICAgICAqCisxMglQRQkgICogICAgICAgICAgICoKKzEzCVNFTAkgICogICAgICAgICAgICoKKzE0CUFVVE9GRAkgICogICAgICAgICAgICoKKzE1CUVSUk9SCSAgKiAgICAgICAgICAgKgorMTYJSU5JVAkgICogICAgICAgICAgICoKKzE3CVNFTElOCSAgKiAgICAgICAgICAgKgorMTgtMjUJR05ECSAgKi0tLS0tLS0tLS0tKgorCitQbGVhc2Ugbm90ZSB0aGF0IHBhcmFsbGVsIHBvcnQgaW50ZXJydXB0IG9jY3VycyBvbmx5IG9uIGhpZ2gtPmxvdyB0cmFuc2l0aW9uLAorc28gaXQgaXMgdXNlZCBmb3IgUFBTIGFzc2VydCBlZGdlLiBQUFMgY2xlYXIgZWRnZSBjYW4gYmUgZGV0ZXJtaW5lZCBvbmx5Cit1c2luZyBwb2xsaW5nIGluIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciB3aGljaCBhY3R1YWxseSBjYW4gYmUgZG9uZSB3YXkgbW9yZQorcHJlY2lzZWx5IGJlY2F1c2UgaW50ZXJydXB0IGhhbmRsaW5nIGRlbGF5cyBjYW4gYmUgcXVpdGUgYmlnIGFuZCByYW5kb20uIFNvCitjdXJyZW50IHBhcnBvcnQgUFBTIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbiAocHBzX2dlbl9wYXJwb3J0IG1vZHVsZSkgaXMKK2dlYXJlZCB0b3dhcmRzIHVzaW5nIHRoZSBjbGVhciBlZGdlIGZvciB0aW1lIHN5bmNocm9uaXphdGlvbi4KKworQ2xlYXIgZWRnZSBwb2xsaW5nIGlzIGRvbmUgd2l0aCBkaXNhYmxlZCBpbnRlcnJ1cHRzIHNvIGl0J3MgYmV0dGVyIHRvIHNlbGVjdAorZGVsYXkgYmV0d2VlbiBhc3NlcnQgYW5kIGNsZWFyIGVkZ2UgYXMgc21hbGwgYXMgcG9zc2libGUgdG8gcmVkdWNlIHN5c3RlbQorbGF0ZW5jaWVzLiBCdXQgaWYgaXQgaXMgdG9vIHNtYWxsIHNsYXZlIHdvbid0IGJlIGFibGUgdG8gY2FwdHVyZSBjbGVhciBlZGdlCit0cmFuc2l0aW9uLiBUaGUgZGVmYXVsdCBvZiAzMHVzIHNob3VsZCBiZSBnb29kIGVub3VnaCBpbiBtb3N0IHNpdHVhdGlvbnMuCitUaGUgZGVsYXkgY2FuIGJlIHNlbGVjdGVkIHVzaW5nICdkZWxheScgcHBzX2dlbl9wYXJwb3J0IG1vZHVsZSBwYXJhbWV0ZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ByY3RsLy5naXRpZ25vcmUgYi9Eb2N1bWVudGF0aW9uL3ByY3RsLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI1YzI3NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcHJjdGwvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDMgQEAKK2Rpc2FibGUtdHNjLWN0eHQtc3ctc3RyZXNzLXRlc3QKK2Rpc2FibGUtdHNjLW9uLW9mZi1zdHJlc3MtdGVzdAorZGlzYWJsZS10c2MtdGVzdApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wcmN0bC9NYWtlZmlsZSBiL0RvY3VtZW50YXRpb24vcHJjdGwvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRkZTMwOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcHJjdGwvTWFrZWZpbGUKQEAgLTAsMCArMSwxMCBAQAoraWZuZGVmIENST1NTX0NPTVBJTEUKKyMgTGlzdCBvZiBwcm9ncmFtcyB0byBidWlsZAoraG9zdHByb2dzLSQoQ09ORklHX1g4NikgOj0gZGlzYWJsZS10c2MtY3R4dC1zdy1zdHJlc3MtdGVzdCBkaXNhYmxlLXRzYy1vbi1vZmYtc3RyZXNzLXRlc3QgZGlzYWJsZS10c2MtdGVzdAorIyBUZWxsIGtidWlsZCB0byBhbHdheXMgYnVpbGQgdGhlIHByb2dyYW1zCithbHdheXMgOj0gJChob3N0cHJvZ3MteSkKKworSE9TVENGTEFHU19kaXNhYmxlLXRzYy1jdHh0LXN3LXN0cmVzcy10ZXN0Lm8gKz0gLUkkKG9ianRyZWUpL3Vzci9pbmNsdWRlCitIT1NUQ0ZMQUdTX2Rpc2FibGUtdHNjLW9uLW9mZi1zdHJlc3MtdGVzdC5vICs9IC1JJChvYmp0cmVlKS91c3IvaW5jbHVkZQorSE9TVENGTEFHU19kaXNhYmxlLXRzYy10ZXN0Lm8gKz0gLUkkKG9ianRyZWUpL3Vzci9pbmNsdWRlCitlbmRpZgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wcmN0bC9kaXNhYmxlLXRzYy1jdHh0LXN3LXN0cmVzcy10ZXN0LmMgYi9Eb2N1bWVudGF0aW9uL3ByY3RsL2Rpc2FibGUtdHNjLWN0eHQtc3ctc3RyZXNzLXRlc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWZkZDQyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wcmN0bC9kaXNhYmxlLXRzYy1jdHh0LXN3LXN0cmVzcy10ZXN0LmMKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIFRlc3RzIGZvciBwcmN0bChQUl9HRVRfVFNDLCAuLi4pIC8gcHJjdGwoUFJfU0VUX1RTQywgLi4uKQorICoKKyAqIFRlc3RzIGlmIHRoZSBjb250cm9sIHJlZ2lzdGVyIGlzIHVwZGF0ZWQgY29ycmVjdGx5CisgKiBhdCBjb250ZXh0IHN3aXRjaGVzCisgKgorICogV2FybmluZzogdGhpcyB0ZXN0IHdpbGwgY2F1c2UgYSB2ZXJ5IGhpZ2ggbG9hZCBmb3IgYSBmZXcgc2Vjb25kcworICoKKyAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2luY2x1ZGUgPHdhaXQuaD4KKworCisjaW5jbHVkZSA8c3lzL3ByY3RsLmg+CisjaW5jbHVkZSA8bGludXgvcHJjdGwuaD4KKworLyogR2V0L3NldCB0aGUgcHJvY2VzcycgYWJpbGl0eSB0byB1c2UgdGhlIHRpbWVzdGFtcCBjb3VudGVyIGluc3RydWN0aW9uICovCisjaWZuZGVmIFBSX0dFVF9UU0MKKyNkZWZpbmUgUFJfR0VUX1RTQyAyNQorI2RlZmluZSBQUl9TRVRfVFNDIDI2CisjIGRlZmluZSBQUl9UU0NfRU5BQkxFCQkxICAgLyogYWxsb3cgdGhlIHVzZSBvZiB0aGUgdGltZXN0YW1wIGNvdW50ZXIgKi8KKyMgZGVmaW5lIFBSX1RTQ19TSUdTRUdWCQkyICAgLyogdGhyb3cgYSBTSUdTRUdWIGluc3RlYWQgb2YgcmVhZGluZyB0aGUgVFNDICovCisjZW5kaWYKKworc3RhdGljIHVpbnQ2NF90IHJkdHNjKHZvaWQpCit7Cit1aW50MzJfdCBsbywgaGk7CisvKiBXZSBjYW5ub3QgdXNlICI9QSIsIHNpbmNlIHRoaXMgd291bGQgdXNlICVyYXggb24geDg2XzY0ICovCitfX2FzbV9fIF9fdm9sYXRpbGVfXyAoInJkdHNjIiA6ICI9YSIgKGxvKSwgIj1kIiAoaGkpKTsKK3JldHVybiAodWludDY0X3QpaGkgPDwgMzIgfCBsbzsKK30KKworc3RhdGljIHZvaWQgc2lnc2Vndl9leHBlY3QoaW50IHNpZykKK3sKKwkvKiAqLworfQorCitzdGF0aWMgdm9pZCBzZWd2dGFzayh2b2lkKQoreworCWlmIChwcmN0bChQUl9TRVRfVFNDLCBQUl9UU0NfU0lHU0VHVikgPCAwKQorCXsKKwkJcGVycm9yKCJwcmN0bCIpOworCQlleGl0KDApOworCX0KKwlzaWduYWwoU0lHU0VHViwgc2lnc2Vndl9leHBlY3QpOworCWFsYXJtKDEwKTsKKwlyZHRzYygpOworCWZwcmludGYoc3RkZXJyLCAiRkFUQUwgRVJST1IsIHJkdHNjKCkgc3VjY2VlZGVkIHdoaWxlIGRpc2FibGVkXG4iKTsKKwlleGl0KDApOworfQorCisKK3N0YXRpYyB2b2lkIHNpZ3NlZ3ZfZmFpbChpbnQgc2lnKQoreworCWZwcmludGYoc3RkZXJyLCAiRkFUQUwgRVJST1IsIHJkdHNjKCkgZmFpbGVkIHdoaWxlIGVuYWJsZWRcbiIpOworCWV4aXQoMCk7Cit9CisKK3N0YXRpYyB2b2lkIHJkdHNjdGFzayh2b2lkKQoreworCWlmIChwcmN0bChQUl9TRVRfVFNDLCBQUl9UU0NfRU5BQkxFKSA8IDApCisJeworCQlwZXJyb3IoInByY3RsIik7CisJCWV4aXQoMCk7CisJfQorCXNpZ25hbChTSUdTRUdWLCBzaWdzZWd2X2ZhaWwpOworCWFsYXJtKDEwKTsKKwlmb3IoOzspIHJkdHNjKCk7Cit9CisKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWludCBuX3Rhc2tzID0gMTAwLCBpOworCisJZnByaW50ZihzdGRlcnIsICJbTm8gZnVydGhlciBvdXRwdXQgbWVhbnMgd2UncmUgYWxscmlnaHRdXG4iKTsKKworCWZvciAoaT0wOyBpPG5fdGFza3M7IGkrKykKKwkJaWYgKGZvcmsoKSA9PSAwKQorCQl7CisJCQlpZiAoaSAmIDEpCisJCQkJc2VndnRhc2soKTsKKwkJCWVsc2UKKwkJCQlyZHRzY3Rhc2soKTsKKwkJfQorCisJZm9yIChpPTA7IGk8bl90YXNrczsgaSsrKQorCQl3YWl0KE5VTEwpOworCisJZXhpdCgwKTsKK30KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wcmN0bC9kaXNhYmxlLXRzYy1vbi1vZmYtc3RyZXNzLXRlc3QuYyBiL0RvY3VtZW50YXRpb24vcHJjdGwvZGlzYWJsZS10c2Mtb24tb2ZmLXN0cmVzcy10ZXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ4M2EyNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcHJjdGwvZGlzYWJsZS10c2Mtb24tb2ZmLXN0cmVzcy10ZXN0LmMKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIFRlc3RzIGZvciBwcmN0bChQUl9HRVRfVFNDLCAuLi4pIC8gcHJjdGwoUFJfU0VUX1RTQywgLi4uKQorICoKKyAqIFRlc3RzIGlmIHRoZSBjb250cm9sIHJlZ2lzdGVyIGlzIHVwZGF0ZWQgY29ycmVjdGx5CisgKiB3aGVuIHNldCB3aXRoIHByY3RsKCkKKyAqCisgKiBXYXJuaW5nOiB0aGlzIHRlc3Qgd2lsbCBjYXVzZSBhIHZlcnkgaGlnaCBsb2FkIGZvciBhIGZldyBzZWNvbmRzCisgKgorICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPGludHR5cGVzLmg+CisjaW5jbHVkZSA8d2FpdC5oPgorCisKKyNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KKyNpbmNsdWRlIDxsaW51eC9wcmN0bC5oPgorCisvKiBHZXQvc2V0IHRoZSBwcm9jZXNzJyBhYmlsaXR5IHRvIHVzZSB0aGUgdGltZXN0YW1wIGNvdW50ZXIgaW5zdHJ1Y3Rpb24gKi8KKyNpZm5kZWYgUFJfR0VUX1RTQworI2RlZmluZSBQUl9HRVRfVFNDIDI1CisjZGVmaW5lIFBSX1NFVF9UU0MgMjYKKyMgZGVmaW5lIFBSX1RTQ19FTkFCTEUJCTEgICAvKiBhbGxvdyB0aGUgdXNlIG9mIHRoZSB0aW1lc3RhbXAgY291bnRlciAqLworIyBkZWZpbmUgUFJfVFNDX1NJR1NFR1YJCTIgICAvKiB0aHJvdyBhIFNJR1NFR1YgaW5zdGVhZCBvZiByZWFkaW5nIHRoZSBUU0MgKi8KKyNlbmRpZgorCisvKiBzbmlwcGV0IGZyb20gd2lraXBlZGlhIDotKSAqLworCitzdGF0aWMgdWludDY0X3QgcmR0c2Modm9pZCkKK3sKK3VpbnQzMl90IGxvLCBoaTsKKy8qIFdlIGNhbm5vdCB1c2UgIj1BIiwgc2luY2UgdGhpcyB3b3VsZCB1c2UgJXJheCBvbiB4ODZfNjQgKi8KK19fYXNtX18gX192b2xhdGlsZV9fICgicmR0c2MiIDogIj1hIiAobG8pLCAiPWQiIChoaSkpOworcmV0dXJuICh1aW50NjRfdCloaSA8PCAzMiB8IGxvOworfQorCitpbnQgc2hvdWxkX3NlZ3YgPSAwOworCitzdGF0aWMgdm9pZCBzaWdzZWd2X2NiKGludCBzaWcpCit7CisJaWYgKCFzaG91bGRfc2VndikKKwl7CisJCWZwcmludGYoc3RkZXJyLCAiRkFUQUwgRVJST1IsIHJkdHNjKCkgZmFpbGVkIHdoaWxlIGVuYWJsZWRcbiIpOworCQlleGl0KDApOworCX0KKwlpZiAocHJjdGwoUFJfU0VUX1RTQywgUFJfVFNDX0VOQUJMRSkgPCAwKQorCXsKKwkJcGVycm9yKCJwcmN0bCIpOworCQlleGl0KDApOworCX0KKwlzaG91bGRfc2VndiA9IDA7CisKKwlyZHRzYygpOworfQorCitzdGF0aWMgdm9pZCB0YXNrKHZvaWQpCit7CisJc2lnbmFsKFNJR1NFR1YsIHNpZ3NlZ3ZfY2IpOworCWFsYXJtKDEwKTsKKwlmb3IoOzspCisJeworCQlyZHRzYygpOworCQlpZiAoc2hvdWxkX3NlZ3YpCisJCXsKKwkJCWZwcmludGYoc3RkZXJyLCAiRkFUQUwgRVJST1IsIHJkdHNjKCkgc3VjY2VlZGVkIHdoaWxlIGRpc2FibGVkXG4iKTsKKwkJCWV4aXQoMCk7CisJCX0KKwkJaWYgKHByY3RsKFBSX1NFVF9UU0MsIFBSX1RTQ19TSUdTRUdWKSA8IDApCisJCXsKKwkJCXBlcnJvcigicHJjdGwiKTsKKwkJCWV4aXQoMCk7CisJCX0KKwkJc2hvdWxkX3NlZ3YgPSAxOworCX0KK30KKworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJaW50IG5fdGFza3MgPSAxMDAsIGk7CisKKwlmcHJpbnRmKHN0ZGVyciwgIltObyBmdXJ0aGVyIG91dHB1dCBtZWFucyB3ZSdyZSBhbGxyaWdodF1cbiIpOworCisJZm9yIChpPTA7IGk8bl90YXNrczsgaSsrKQorCQlpZiAoZm9yaygpID09IDApCisJCQl0YXNrKCk7CisKKwlmb3IgKGk9MDsgaTxuX3Rhc2tzOyBpKyspCisJCXdhaXQoTlVMTCk7CisKKwlleGl0KDApOworfQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ByY3RsL2Rpc2FibGUtdHNjLXRlc3QuYyBiL0RvY3VtZW50YXRpb24vcHJjdGwvZGlzYWJsZS10c2MtdGVzdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NDFlNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ByY3RsL2Rpc2FibGUtdHNjLXRlc3QuYwpAQCAtMCwwICsxLDk1IEBACisvKgorICogVGVzdHMgZm9yIHByY3RsKFBSX0dFVF9UU0MsIC4uLikgLyBwcmN0bChQUl9TRVRfVFNDLCAuLi4pCisgKgorICogQmFzaWMgdGVzdCB0byB0ZXN0IGJlaGF2aW91ciBvZiBQUl9HRVRfVFNDIGFuZCBQUl9TRVRfVFNDCisgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKworCisjaW5jbHVkZSA8c3lzL3ByY3RsLmg+CisjaW5jbHVkZSA8bGludXgvcHJjdGwuaD4KKworLyogR2V0L3NldCB0aGUgcHJvY2VzcycgYWJpbGl0eSB0byB1c2UgdGhlIHRpbWVzdGFtcCBjb3VudGVyIGluc3RydWN0aW9uICovCisjaWZuZGVmIFBSX0dFVF9UU0MKKyNkZWZpbmUgUFJfR0VUX1RTQyAyNQorI2RlZmluZSBQUl9TRVRfVFNDIDI2CisjIGRlZmluZSBQUl9UU0NfRU5BQkxFCQkxICAgLyogYWxsb3cgdGhlIHVzZSBvZiB0aGUgdGltZXN0YW1wIGNvdW50ZXIgKi8KKyMgZGVmaW5lIFBSX1RTQ19TSUdTRUdWCQkyICAgLyogdGhyb3cgYSBTSUdTRUdWIGluc3RlYWQgb2YgcmVhZGluZyB0aGUgVFNDICovCisjZW5kaWYKKworY29uc3QgY2hhciAqdHNjX25hbWVzW10gPQoreworCVswXSA9ICJbbm90IHNldF0iLAorCVtQUl9UU0NfRU5BQkxFXSA9ICJQUl9UU0NfRU5BQkxFIiwKKwlbUFJfVFNDX1NJR1NFR1ZdID0gIlBSX1RTQ19TSUdTRUdWIiwKK307CisKK3N0YXRpYyB1aW50NjRfdCByZHRzYyh2b2lkKQorewordWludDMyX3QgbG8sIGhpOworLyogV2UgY2Fubm90IHVzZSAiPUEiLCBzaW5jZSB0aGlzIHdvdWxkIHVzZSAlcmF4IG9uIHg4Nl82NCAqLworX19hc21fXyBfX3ZvbGF0aWxlX18gKCJyZHRzYyIgOiAiPWEiIChsbyksICI9ZCIgKGhpKSk7CityZXR1cm4gKHVpbnQ2NF90KWhpIDw8IDMyIHwgbG87Cit9CisKK3N0YXRpYyB2b2lkIHNpZ3NlZ3ZfY2IoaW50IHNpZykKK3sKKwlpbnQgdHNjX3ZhbCA9IDA7CisKKwlwcmludGYoIlsgU0lHX1NFR1YgXVxuIik7CisJcHJpbnRmKCJwcmN0bChQUl9HRVRfVFNDLCAmdHNjX3ZhbCk7ICIpOworCWZmbHVzaChzdGRvdXQpOworCisJaWYgKCBwcmN0bChQUl9HRVRfVFNDLCAmdHNjX3ZhbCkgPT0gLTEpCisJCXBlcnJvcigicHJjdGwiKTsKKworCXByaW50ZigidHNjX3ZhbCA9PSAlc1xuIiwgdHNjX25hbWVzW3RzY192YWxdKTsKKwlwcmludGYoInByY3RsKFBSX1NFVF9UU0MsIFBSX1RTQ19FTkFCTEUpXG4iKTsKKwlmZmx1c2goc3Rkb3V0KTsKKwlpZiAoIHByY3RsKFBSX1NFVF9UU0MsIFBSX1RTQ19FTkFCTEUpID09IC0xKQorCQlwZXJyb3IoInByY3RsIik7CisKKwlwcmludGYoInJkdHNjKCkgPT0gIik7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlpbnQgdHNjX3ZhbCA9IDA7CisKKwlzaWduYWwoU0lHU0VHViwgc2lnc2Vndl9jYik7CisKKwlwcmludGYoInJkdHNjKCkgPT0gJWxsdVxuIiwgKHVuc2lnbmVkIGxvbmcgbG9uZylyZHRzYygpKTsKKwlwcmludGYoInByY3RsKFBSX0dFVF9UU0MsICZ0c2NfdmFsKTsgIik7CisJZmZsdXNoKHN0ZG91dCk7CisKKwlpZiAoIHByY3RsKFBSX0dFVF9UU0MsICZ0c2NfdmFsKSA9PSAtMSkKKwkJcGVycm9yKCJwcmN0bCIpOworCisJcHJpbnRmKCJ0c2NfdmFsID09ICVzXG4iLCB0c2NfbmFtZXNbdHNjX3ZhbF0pOworCXByaW50ZigicmR0c2MoKSA9PSAlbGx1XG4iLCAodW5zaWduZWQgbG9uZyBsb25nKXJkdHNjKCkpOworCXByaW50ZigicHJjdGwoUFJfU0VUX1RTQywgUFJfVFNDX0VOQUJMRSlcbiIpOworCWZmbHVzaChzdGRvdXQpOworCisJaWYgKCBwcmN0bChQUl9TRVRfVFNDLCBQUl9UU0NfRU5BQkxFKSA9PSAtMSkKKwkJcGVycm9yKCJwcmN0bCIpOworCisJcHJpbnRmKCJyZHRzYygpID09ICVsbHVcbiIsICh1bnNpZ25lZCBsb25nIGxvbmcpcmR0c2MoKSk7CisJcHJpbnRmKCJwcmN0bChQUl9TRVRfVFNDLCBQUl9UU0NfU0lHU0VHVilcbiIpOworCWZmbHVzaChzdGRvdXQpOworCisJaWYgKCBwcmN0bChQUl9TRVRfVFNDLCBQUl9UU0NfU0lHU0VHVikgPT0gLTEpCisJCXBlcnJvcigicHJjdGwiKTsKKworCXByaW50ZigicmR0c2MoKSA9PSAiKTsKKwlmZmx1c2goc3Rkb3V0KTsKKwlwcmludGYoIiVsbHVcbiIsICh1bnNpZ25lZCBsb25nIGxvbmcpcmR0c2MoKSk7CisJZmZsdXNoKHN0ZG91dCk7CisKKwlleGl0KEVYSVRfU1VDQ0VTUyk7Cit9CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcHJjdGwvbm9fbmV3X3ByaXZzLnR4dCBiL0RvY3VtZW50YXRpb24vcHJjdGwvbm9fbmV3X3ByaXZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mN2JlODRmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wcmN0bC9ub19uZXdfcHJpdnMudHh0CkBAIC0wLDAgKzEsNTcgQEAKK1RoZSBleGVjdmUgc3lzdGVtIGNhbGwgY2FuIGdyYW50IGEgbmV3bHktc3RhcnRlZCBwcm9ncmFtIHByaXZpbGVnZXMgdGhhdAoraXRzIHBhcmVudCBkaWQgbm90IGhhdmUuICBUaGUgbW9zdCBvYnZpb3VzIGV4YW1wbGVzIGFyZSBzZXR1aWQvc2V0Z2lkCitwcm9ncmFtcyBhbmQgZmlsZSBjYXBhYmlsaXRpZXMuICBUbyBwcmV2ZW50IHRoZSBwYXJlbnQgcHJvZ3JhbSBmcm9tCitnYWluaW5nIHRoZXNlIHByaXZpbGVnZXMgYXMgd2VsbCwgdGhlIGtlcm5lbCBhbmQgdXNlciBjb2RlIG11c3QgYmUKK2NhcmVmdWwgdG8gcHJldmVudCB0aGUgcGFyZW50IGZyb20gZG9pbmcgYW55dGhpbmcgdGhhdCBjb3VsZCBzdWJ2ZXJ0IHRoZQorY2hpbGQuICBGb3IgZXhhbXBsZToKKworIC0gVGhlIGR5bmFtaWMgbG9hZGVyIGhhbmRsZXMgTERfKiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZGlmZmVyZW50bHkgaWYKKyAgIGEgcHJvZ3JhbSBpcyBzZXR1aWQuCisKKyAtIGNocm9vdCBpcyBkaXNhbGxvd2VkIHRvIHVucHJpdmlsZWdlZCBwcm9jZXNzZXMsIHNpbmNlIGl0IHdvdWxkIGFsbG93CisgICAvZXRjL3Bhc3N3ZCB0byBiZSByZXBsYWNlZCBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mIGEgcHJvY2VzcyB0aGF0CisgICBpbmhlcml0ZWQgY2hyb290LgorCisgLSBUaGUgZXhlYyBjb2RlIGhhcyBzcGVjaWFsIGhhbmRsaW5nIGZvciBwdHJhY2UuCisKK1RoZXNlIGFyZSBhbGwgYWQtaG9jIGZpeGVzLiAgVGhlIG5vX25ld19wcml2cyBiaXQgKHNpbmNlIExpbnV4IDMuNSkgaXMgYQorbmV3LCBnZW5lcmljIG1lY2hhbmlzbSB0byBtYWtlIGl0IHNhZmUgZm9yIGEgcHJvY2VzcyB0byBtb2RpZnkgaXRzCitleGVjdXRpb24gZW52aXJvbm1lbnQgaW4gYSBtYW5uZXIgdGhhdCBwZXJzaXN0cyBhY3Jvc3MgZXhlY3ZlLiAgQW55IHRhc2sKK2NhbiBzZXQgbm9fbmV3X3ByaXZzLiAgT25jZSB0aGUgYml0IGlzIHNldCwgaXQgaXMgaW5oZXJpdGVkIGFjcm9zcyBmb3JrLAorY2xvbmUsIGFuZCBleGVjdmUgYW5kIGNhbm5vdCBiZSB1bnNldC4gIFdpdGggbm9fbmV3X3ByaXZzIHNldCwgZXhlY3ZlCitwcm9taXNlcyBub3QgdG8gZ3JhbnQgdGhlIHByaXZpbGVnZSB0byBkbyBhbnl0aGluZyB0aGF0IGNvdWxkIG5vdCBoYXZlCitiZWVuIGRvbmUgd2l0aG91dCB0aGUgZXhlY3ZlIGNhbGwuICBGb3IgZXhhbXBsZSwgdGhlIHNldHVpZCBhbmQgc2V0Z2lkCitiaXRzIHdpbGwgbm8gbG9uZ2VyIGNoYW5nZSB0aGUgdWlkIG9yIGdpZDsgZmlsZSBjYXBhYmlsaXRpZXMgd2lsbCBub3QKK2FkZCB0byB0aGUgcGVybWl0dGVkIHNldCwgYW5kIExTTXMgd2lsbCBub3QgcmVsYXggY29uc3RyYWludHMgYWZ0ZXIKK2V4ZWN2ZS4KKworVG8gc2V0IG5vX25ld19wcml2cywgdXNlIHByY3RsKFBSX1NFVF9OT19ORVdfUFJJVlMsIDEsIDAsIDAsIDApLgorCitCZSBjYXJlZnVsLCB0aG91Z2g6IExTTXMgbWlnaHQgYWxzbyBub3QgdGlnaHRlbiBjb25zdHJhaW50cyBvbiBleGVjCitpbiBub19uZXdfcHJpdnMgbW9kZS4gIChUaGlzIG1lYW5zIHRoYXQgc2V0dGluZyB1cCBhIGdlbmVyYWwtcHVycG9zZQorc2VydmljZSBsYXVuY2hlciB0byBzZXQgbm9fbmV3X3ByaXZzIGJlZm9yZSBleGVjaW5nIGRhZW1vbnMgbWF5CitpbnRlcmZlcmUgd2l0aCBMU00tYmFzZWQgc2FuZGJveGluZy4pCisKK05vdGUgdGhhdCBub19uZXdfcHJpdnMgZG9lcyBub3QgcHJldmVudCBwcml2aWxlZ2UgY2hhbmdlcyB0aGF0IGRvIG5vdAoraW52b2x2ZSBleGVjdmUuICBBbiBhcHByb3ByaWF0ZWx5IHByaXZpbGVnZWQgdGFzayBjYW4gc3RpbGwgY2FsbAorc2V0dWlkKDIpIGFuZCByZWNlaXZlIFNDTV9SSUdIVFMgZGF0YWdyYW1zLgorCitUaGVyZSBhcmUgdHdvIG1haW4gdXNlIGNhc2VzIGZvciBub19uZXdfcHJpdnMgc28gZmFyOgorCisgLSBGaWx0ZXJzIGluc3RhbGxlZCBmb3IgdGhlIHNlY2NvbXAgbW9kZSAyIHNhbmRib3ggcGVyc2lzdCBhY3Jvc3MKKyAgIGV4ZWN2ZSBhbmQgY2FuIGNoYW5nZSB0aGUgYmVoYXZpb3Igb2YgbmV3bHktZXhlY3V0ZWQgcHJvZ3JhbXMuCisgICBVbnByaXZpbGVnZWQgdXNlcnMgYXJlIHRoZXJlZm9yZSBvbmx5IGFsbG93ZWQgdG8gaW5zdGFsbCBzdWNoIGZpbHRlcnMKKyAgIGlmIG5vX25ld19wcml2cyBpcyBzZXQuCisKKyAtIEJ5IGl0c2VsZiwgbm9fbmV3X3ByaXZzIGNhbiBiZSB1c2VkIHRvIHJlZHVjZSB0aGUgYXR0YWNrIHN1cmZhY2UKKyAgIGF2YWlsYWJsZSB0byBhbiB1bnByaXZpbGVnZWQgdXNlci4gIElmIGV2ZXJ5dGhpbmcgcnVubmluZyB3aXRoIGEKKyAgIGdpdmVuIHVpZCBoYXMgbm9fbmV3X3ByaXZzIHNldCwgdGhlbiB0aGF0IHVpZCB3aWxsIGJlIHVuYWJsZSB0bworICAgZXNjYWxhdGUgaXRzIHByaXZpbGVnZXMgYnkgZGlyZWN0bHkgYXR0YWNraW5nIHNldHVpZCwgc2V0Z2lkLCBhbmQKKyAgIGZjYXAtdXNpbmcgYmluYXJpZXM7IGl0IHdpbGwgbmVlZCB0byBjb21wcm9taXNlIHNvbWV0aGluZyB3aXRob3V0IHRoZQorICAgbm9fbmV3X3ByaXZzIGJpdCBzZXQgZmlyc3QuCisKK0luIHRoZSBmdXR1cmUsIG90aGVyIHBvdGVudGlhbGx5IGRhbmdlcm91cyBrZXJuZWwgZmVhdHVyZXMgY291bGQgYmVjb21lCithdmFpbGFibGUgdG8gdW5wcml2aWxlZ2VkIHRhc2tzIGlmIG5vX25ld19wcml2cyBpcyBzZXQuICBJbiBwcmluY2lwbGUsCitzZXZlcmFsIG9wdGlvbnMgdG8gdW5zaGFyZSgyKSBhbmQgY2xvbmUoMikgd291bGQgYmUgc2FmZSB3aGVuCitub19uZXdfcHJpdnMgaXMgc2V0LCBhbmQgbm9fbmV3X3ByaXZzICsgY2hyb290IGlzIGNvbnNpZGVyYWJsZSBsZXNzCitkYW5nZXJvdXMgdGhhbiBjaHJvb3QgYnkgaXRzZWxmLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wcmN0bC9zZWNjb21wX2ZpbHRlci50eHQgYi9Eb2N1bWVudGF0aW9uL3ByY3RsL3NlY2NvbXBfZmlsdGVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTQ2OWVmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wcmN0bC9zZWNjb21wX2ZpbHRlci50eHQKQEAgLTAsMCArMSwyMjUgQEAKKwkJU0VDdXJlIENPTVB1dGluZyB3aXRoIGZpbHRlcnMKKwkJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0KKworQSBsYXJnZSBudW1iZXIgb2Ygc3lzdGVtIGNhbGxzIGFyZSBleHBvc2VkIHRvIGV2ZXJ5IHVzZXJsYW5kIHByb2Nlc3MKK3dpdGggbWFueSBvZiB0aGVtIGdvaW5nIHVudXNlZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZiB0aGUgcHJvY2Vzcy4KK0FzIHN5c3RlbSBjYWxscyBjaGFuZ2UgYW5kIG1hdHVyZSwgYnVncyBhcmUgZm91bmQgYW5kIGVyYWRpY2F0ZWQuICBBCitjZXJ0YWluIHN1YnNldCBvZiB1c2VybGFuZCBhcHBsaWNhdGlvbnMgYmVuZWZpdCBieSBoYXZpbmcgYSByZWR1Y2VkIHNldAorb2YgYXZhaWxhYmxlIHN5c3RlbSBjYWxscy4gIFRoZSByZXN1bHRpbmcgc2V0IHJlZHVjZXMgdGhlIHRvdGFsIGtlcm5lbAorc3VyZmFjZSBleHBvc2VkIHRvIHRoZSBhcHBsaWNhdGlvbi4gIFN5c3RlbSBjYWxsIGZpbHRlcmluZyBpcyBtZWFudCBmb3IKK3VzZSB3aXRoIHRob3NlIGFwcGxpY2F0aW9ucy4KKworU2VjY29tcCBmaWx0ZXJpbmcgcHJvdmlkZXMgYSBtZWFucyBmb3IgYSBwcm9jZXNzIHRvIHNwZWNpZnkgYSBmaWx0ZXIgZm9yCitpbmNvbWluZyBzeXN0ZW0gY2FsbHMuICBUaGUgZmlsdGVyIGlzIGV4cHJlc3NlZCBhcyBhIEJlcmtlbGV5IFBhY2tldAorRmlsdGVyIChCUEYpIHByb2dyYW0sIGFzIHdpdGggc29ja2V0IGZpbHRlcnMsIGV4Y2VwdCB0aGF0IHRoZSBkYXRhCitvcGVyYXRlZCBvbiBpcyByZWxhdGVkIHRvIHRoZSBzeXN0ZW0gY2FsbCBiZWluZyBtYWRlOiBzeXN0ZW0gY2FsbAorbnVtYmVyIGFuZCB0aGUgc3lzdGVtIGNhbGwgYXJndW1lbnRzLiAgVGhpcyBhbGxvd3MgZm9yIGV4cHJlc3NpdmUKK2ZpbHRlcmluZyBvZiBzeXN0ZW0gY2FsbHMgdXNpbmcgYSBmaWx0ZXIgcHJvZ3JhbSBsYW5ndWFnZSB3aXRoIGEgbG9uZworaGlzdG9yeSBvZiBiZWluZyBleHBvc2VkIHRvIHVzZXJsYW5kIGFuZCBhIHN0cmFpZ2h0Zm9yd2FyZCBkYXRhIHNldC4KKworQWRkaXRpb25hbGx5LCBCUEYgbWFrZXMgaXQgaW1wb3NzaWJsZSBmb3IgdXNlcnMgb2Ygc2VjY29tcCB0byBmYWxsIHByZXkKK3RvIHRpbWUtb2YtY2hlY2stdGltZS1vZi11c2UgKFRPQ1RPVSkgYXR0YWNrcyB0aGF0IGFyZSBjb21tb24gaW4gc3lzdGVtCitjYWxsIGludGVycG9zaXRpb24gZnJhbWV3b3Jrcy4gIEJQRiBwcm9ncmFtcyBtYXkgbm90IGRlcmVmZXJlbmNlCitwb2ludGVycyB3aGljaCBjb25zdHJhaW5zIGFsbCBmaWx0ZXJzIHRvIHNvbGVseSBldmFsdWF0aW5nIHRoZSBzeXN0ZW0KK2NhbGwgYXJndW1lbnRzIGRpcmVjdGx5LgorCitXaGF0IGl0IGlzbid0CistLS0tLS0tLS0tLS0tCisKK1N5c3RlbSBjYWxsIGZpbHRlcmluZyBpc24ndCBhIHNhbmRib3guICBJdCBwcm92aWRlcyBhIGNsZWFybHkgZGVmaW5lZAorbWVjaGFuaXNtIGZvciBtaW5pbWl6aW5nIHRoZSBleHBvc2VkIGtlcm5lbCBzdXJmYWNlLiAgSXQgaXMgbWVhbnQgdG8gYmUKK2EgdG9vbCBmb3Igc2FuZGJveCBkZXZlbG9wZXJzIHRvIHVzZS4gIEJleW9uZCB0aGF0LCBwb2xpY3kgZm9yIGxvZ2ljYWwKK2JlaGF2aW9yIGFuZCBpbmZvcm1hdGlvbiBmbG93IHNob3VsZCBiZSBtYW5hZ2VkIHdpdGggYSBjb21iaW5hdGlvbiBvZgorb3RoZXIgc3lzdGVtIGhhcmRlbmluZyB0ZWNobmlxdWVzIGFuZCwgcG90ZW50aWFsbHksIGFuIExTTSBvZiB5b3VyCitjaG9vc2luZy4gIEV4cHJlc3NpdmUsIGR5bmFtaWMgZmlsdGVycyBwcm92aWRlIGZ1cnRoZXIgb3B0aW9ucyBkb3duIHRoaXMKK3BhdGggKGF2b2lkaW5nIHBhdGhvbG9naWNhbCBzaXplcyBvciBzZWxlY3Rpbmcgd2hpY2ggb2YgdGhlIG11bHRpcGxleGVkCitzeXN0ZW0gY2FsbHMgaW4gc29ja2V0Y2FsbCgpIGlzIGFsbG93ZWQsIGZvciBpbnN0YW5jZSkgd2hpY2ggY291bGQgYmUKK2NvbnN0cnVlZCwgaW5jb3JyZWN0bHksIGFzIGEgbW9yZSBjb21wbGV0ZSBzYW5kYm94aW5nIHNvbHV0aW9uLgorCitVc2FnZQorLS0tLS0KKworQW4gYWRkaXRpb25hbCBzZWNjb21wIG1vZGUgaXMgYWRkZWQgYW5kIGlzIGVuYWJsZWQgdXNpbmcgdGhlIHNhbWUKK3ByY3RsKDIpIGNhbGwgYXMgdGhlIHN0cmljdCBzZWNjb21wLiAgSWYgdGhlIGFyY2hpdGVjdHVyZSBoYXMKK0NPTkZJR19IQVZFX0FSQ0hfU0VDQ09NUF9GSUxURVIsIHRoZW4gZmlsdGVycyBtYXkgYmUgYWRkZWQgYXMgYmVsb3c6CisKK1BSX1NFVF9TRUNDT01QOgorCU5vdyB0YWtlcyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHdoaWNoIHNwZWNpZmllcyBhIG5ldyBmaWx0ZXIKKwl1c2luZyBhIEJQRiBwcm9ncmFtLgorCVRoZSBCUEYgcHJvZ3JhbSB3aWxsIGJlIGV4ZWN1dGVkIG92ZXIgc3RydWN0IHNlY2NvbXBfZGF0YQorCXJlZmxlY3RpbmcgdGhlIHN5c3RlbSBjYWxsIG51bWJlciwgYXJndW1lbnRzLCBhbmQgb3RoZXIKKwltZXRhZGF0YS4gIFRoZSBCUEYgcHJvZ3JhbSBtdXN0IHRoZW4gcmV0dXJuIG9uZSBvZiB0aGUKKwlhY2NlcHRhYmxlIHZhbHVlcyB0byBpbmZvcm0gdGhlIGtlcm5lbCB3aGljaCBhY3Rpb24gc2hvdWxkIGJlCisJdGFrZW4uCisKKwlVc2FnZToKKwkJcHJjdGwoUFJfU0VUX1NFQ0NPTVAsIFNFQ0NPTVBfTU9ERV9GSUxURVIsIHByb2cpOworCisJVGhlICdwcm9nJyBhcmd1bWVudCBpcyBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3Qgc29ja19mcHJvZyB3aGljaAorCXdpbGwgY29udGFpbiB0aGUgZmlsdGVyIHByb2dyYW0uICBJZiB0aGUgcHJvZ3JhbSBpcyBpbnZhbGlkLCB0aGUKKwljYWxsIHdpbGwgcmV0dXJuIC0xIGFuZCBzZXQgZXJybm8gdG8gRUlOVkFMLgorCisJSWYgZm9yay9jbG9uZSBhbmQgZXhlY3ZlIGFyZSBhbGxvd2VkIGJ5IEBwcm9nLCBhbnkgY2hpbGQKKwlwcm9jZXNzZXMgd2lsbCBiZSBjb25zdHJhaW5lZCB0byB0aGUgc2FtZSBmaWx0ZXJzIGFuZCBzeXN0ZW0KKwljYWxsIEFCSSBhcyB0aGUgcGFyZW50LgorCisJUHJpb3IgdG8gdXNlLCB0aGUgdGFzayBtdXN0IGNhbGwgcHJjdGwoUFJfU0VUX05PX05FV19QUklWUywgMSkgb3IKKwlydW4gd2l0aCBDQVBfU1lTX0FETUlOIHByaXZpbGVnZXMgaW4gaXRzIG5hbWVzcGFjZS4gIElmIHRoZXNlIGFyZSBub3QKKwl0cnVlLCAtRUFDQ0VTIHdpbGwgYmUgcmV0dXJuZWQuICBUaGlzIHJlcXVpcmVtZW50IGVuc3VyZXMgdGhhdCBmaWx0ZXIKKwlwcm9ncmFtcyBjYW5ub3QgYmUgYXBwbGllZCB0byBjaGlsZCBwcm9jZXNzZXMgd2l0aCBncmVhdGVyIHByaXZpbGVnZXMKKwl0aGFuIHRoZSB0YXNrIHRoYXQgaW5zdGFsbGVkIHRoZW0uCisKKwlBZGRpdGlvbmFsbHksIGlmIHByY3RsKDIpIGlzIGFsbG93ZWQgYnkgdGhlIGF0dGFjaGVkIGZpbHRlciwKKwlhZGRpdGlvbmFsIGZpbHRlcnMgbWF5IGJlIGxheWVyZWQgb24gd2hpY2ggd2lsbCBpbmNyZWFzZSBldmFsdWF0aW9uCisJdGltZSwgYnV0IGFsbG93IGZvciBmdXJ0aGVyIGRlY3JlYXNpbmcgdGhlIGF0dGFjayBzdXJmYWNlIGR1cmluZworCWV4ZWN1dGlvbiBvZiBhIHByb2Nlc3MuCisKK1RoZSBhYm92ZSBjYWxsIHJldHVybnMgMCBvbiBzdWNjZXNzIGFuZCBub24temVybyBvbiBlcnJvci4KKworUmV0dXJuIHZhbHVlcworLS0tLS0tLS0tLS0tLQorQSBzZWNjb21wIGZpbHRlciBtYXkgcmV0dXJuIGFueSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlcy4gSWYgbXVsdGlwbGUKK2ZpbHRlcnMgZXhpc3QsIHRoZSByZXR1cm4gdmFsdWUgZm9yIHRoZSBldmFsdWF0aW9uIG9mIGEgZ2l2ZW4gc3lzdGVtCitjYWxsIHdpbGwgYWx3YXlzIHVzZSB0aGUgaGlnaGVzdCBwcmVjZWRlbnQgdmFsdWUuIChGb3IgZXhhbXBsZSwKK1NFQ0NPTVBfUkVUX0tJTEwgd2lsbCBhbHdheXMgdGFrZSBwcmVjZWRlbmNlLikKKworSW4gcHJlY2VkZW5jZSBvcmRlciwgdGhleSBhcmU6CisKK1NFQ0NPTVBfUkVUX0tJTEw6CisJUmVzdWx0cyBpbiB0aGUgdGFzayBleGl0aW5nIGltbWVkaWF0ZWx5IHdpdGhvdXQgZXhlY3V0aW5nIHRoZQorCXN5c3RlbSBjYWxsLiAgVGhlIGV4aXQgc3RhdHVzIG9mIHRoZSB0YXNrIChzdGF0dXMgJiAweDdmKSB3aWxsCisJYmUgU0lHU1lTLCBub3QgU0lHS0lMTC4KKworU0VDQ09NUF9SRVRfVFJBUDoKKwlSZXN1bHRzIGluIHRoZSBrZXJuZWwgc2VuZGluZyBhIFNJR1NZUyBzaWduYWwgdG8gdGhlIHRyaWdnZXJpbmcKKwl0YXNrIHdpdGhvdXQgZXhlY3V0aW5nIHRoZSBzeXN0ZW0gY2FsbC4gIHNpZ2luZm8tPnNpX2NhbGxfYWRkcgorCXdpbGwgc2hvdyB0aGUgYWRkcmVzcyBvZiB0aGUgc3lzdGVtIGNhbGwgaW5zdHJ1Y3Rpb24sIGFuZAorCXNpZ2luZm8tPnNpX3N5c2NhbGwgYW5kIHNpZ2luZm8tPnNpX2FyY2ggd2lsbCBpbmRpY2F0ZSB3aGljaAorCXN5c2NhbGwgd2FzIGF0dGVtcHRlZC4gIFRoZSBwcm9ncmFtIGNvdW50ZXIgd2lsbCBiZSBhcyB0aG91Z2gKKwl0aGUgc3lzY2FsbCBoYXBwZW5lZCAoaS5lLiBpdCB3aWxsIG5vdCBwb2ludCB0byB0aGUgc3lzY2FsbAorCWluc3RydWN0aW9uKS4gIFRoZSByZXR1cm4gdmFsdWUgcmVnaXN0ZXIgd2lsbCBjb250YWluIGFuIGFyY2gtCisJZGVwZW5kZW50IHZhbHVlIC0tIGlmIHJlc3VtaW5nIGV4ZWN1dGlvbiwgc2V0IGl0IHRvIHNvbWV0aGluZworCXNlbnNpYmxlLiAgKFRoZSBhcmNoaXRlY3R1cmUgZGVwZW5kZW5jeSBpcyBiZWNhdXNlIHJlcGxhY2luZworCWl0IHdpdGggLUVOT1NZUyBjb3VsZCBvdmVyd3JpdGUgc29tZSB1c2VmdWwgaW5mb3JtYXRpb24uKQorCisJVGhlIFNFQ0NPTVBfUkVUX0RBVEEgcG9ydGlvbiBvZiB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgcGFzc2VkCisJYXMgc2lfZXJybm8uCisKKwlTSUdTWVMgdHJpZ2dlcmVkIGJ5IHNlY2NvbXAgd2lsbCBoYXZlIGEgc2lfY29kZSBvZiBTWVNfU0VDQ09NUC4KKworU0VDQ09NUF9SRVRfRVJSTk86CisJUmVzdWx0cyBpbiB0aGUgbG93ZXIgMTYtYml0cyBvZiB0aGUgcmV0dXJuIHZhbHVlIGJlaW5nIHBhc3NlZAorCXRvIHVzZXJsYW5kIGFzIHRoZSBlcnJubyB3aXRob3V0IGV4ZWN1dGluZyB0aGUgc3lzdGVtIGNhbGwuCisKK1NFQ0NPTVBfUkVUX1RSQUNFOgorCVdoZW4gcmV0dXJuZWQsIHRoaXMgdmFsdWUgd2lsbCBjYXVzZSB0aGUga2VybmVsIHRvIGF0dGVtcHQgdG8KKwlub3RpZnkgYSBwdHJhY2UoKS1iYXNlZCB0cmFjZXIgcHJpb3IgdG8gZXhlY3V0aW5nIHRoZSBzeXN0ZW0KKwljYWxsLiAgSWYgdGhlcmUgaXMgbm8gdHJhY2VyIHByZXNlbnQsIC1FTk9TWVMgaXMgcmV0dXJuZWQgdG8KKwl1c2VybGFuZCBhbmQgdGhlIHN5c3RlbSBjYWxsIGlzIG5vdCBleGVjdXRlZC4KKworCUEgdHJhY2VyIHdpbGwgYmUgbm90aWZpZWQgaWYgaXQgcmVxdWVzdHMgUFRSQUNFX09fVFJBQ0VTRUNDT01QCisJdXNpbmcgcHRyYWNlKFBUUkFDRV9TRVRPUFRJT05TKS4gIFRoZSB0cmFjZXIgd2lsbCBiZSBub3RpZmllZAorCW9mIGEgUFRSQUNFX0VWRU5UX1NFQ0NPTVAgYW5kIHRoZSBTRUNDT01QX1JFVF9EQVRBIHBvcnRpb24gb2YKKwl0aGUgQlBGIHByb2dyYW0gcmV0dXJuIHZhbHVlIHdpbGwgYmUgYXZhaWxhYmxlIHRvIHRoZSB0cmFjZXIKKwl2aWEgUFRSQUNFX0dFVEVWRU5UTVNHLgorCisJVGhlIHRyYWNlciBjYW4gc2tpcCB0aGUgc3lzdGVtIGNhbGwgYnkgY2hhbmdpbmcgdGhlIHN5c2NhbGwgbnVtYmVyCisJdG8gLTEuICBBbHRlcm5hdGl2ZWx5LCB0aGUgdHJhY2VyIGNhbiBjaGFuZ2UgdGhlIHN5c3RlbSBjYWxsCisJcmVxdWVzdGVkIGJ5IGNoYW5naW5nIHRoZSBzeXN0ZW0gY2FsbCB0byBhIHZhbGlkIHN5c2NhbGwgbnVtYmVyLiAgSWYKKwl0aGUgdHJhY2VyIGFza3MgdG8gc2tpcCB0aGUgc3lzdGVtIGNhbGwsIHRoZW4gdGhlIHN5c3RlbSBjYWxsIHdpbGwKKwlhcHBlYXIgdG8gcmV0dXJuIHRoZSB2YWx1ZSB0aGF0IHRoZSB0cmFjZXIgcHV0cyBpbiB0aGUgcmV0dXJuIHZhbHVlCisJcmVnaXN0ZXIuCisKKwlUaGUgc2VjY29tcCBjaGVjayB3aWxsIG5vdCBiZSBydW4gYWdhaW4gYWZ0ZXIgdGhlIHRyYWNlciBpcworCW5vdGlmaWVkLiAgKFRoaXMgbWVhbnMgdGhhdCBzZWNjb21wLWJhc2VkIHNhbmRib3hlcyBNVVNUIE5PVAorCWFsbG93IHVzZSBvZiBwdHJhY2UsIGV2ZW4gb2Ygb3RoZXIgc2FuZGJveGVkIHByb2Nlc3Nlcywgd2l0aG91dAorCWV4dHJlbWUgY2FyZTsgcHRyYWNlcnMgY2FuIHVzZSB0aGlzIG1lY2hhbmlzbSB0byBlc2NhcGUuKQorCitTRUNDT01QX1JFVF9BTExPVzoKKwlSZXN1bHRzIGluIHRoZSBzeXN0ZW0gY2FsbCBiZWluZyBleGVjdXRlZC4KKworSWYgbXVsdGlwbGUgZmlsdGVycyBleGlzdCwgdGhlIHJldHVybiB2YWx1ZSBmb3IgdGhlIGV2YWx1YXRpb24gb2YgYQorZ2l2ZW4gc3lzdGVtIGNhbGwgd2lsbCBhbHdheXMgdXNlIHRoZSBoaWdoZXN0IHByZWNlZGVudCB2YWx1ZS4KKworUHJlY2VkZW5jZSBpcyBvbmx5IGRldGVybWluZWQgdXNpbmcgdGhlIFNFQ0NPTVBfUkVUX0FDVElPTiBtYXNrLiAgV2hlbgorbXVsdGlwbGUgZmlsdGVycyByZXR1cm4gdmFsdWVzIG9mIHRoZSBzYW1lIHByZWNlZGVuY2UsIG9ubHkgdGhlCitTRUNDT01QX1JFVF9EQVRBIGZyb20gdGhlIG1vc3QgcmVjZW50bHkgaW5zdGFsbGVkIGZpbHRlciB3aWxsIGJlCityZXR1cm5lZC4KKworUGl0ZmFsbHMKKy0tLS0tLS0tCisKK1RoZSBiaWdnZXN0IHBpdGZhbGwgdG8gYXZvaWQgZHVyaW5nIHVzZSBpcyBmaWx0ZXJpbmcgb24gc3lzdGVtIGNhbGwKK251bWJlciB3aXRob3V0IGNoZWNraW5nIHRoZSBhcmNoaXRlY3R1cmUgdmFsdWUuICBXaHk/ICBPbiBhbnkKK2FyY2hpdGVjdHVyZSB0aGF0IHN1cHBvcnRzIG11bHRpcGxlIHN5c3RlbSBjYWxsIGludm9jYXRpb24gY29udmVudGlvbnMsCit0aGUgc3lzdGVtIGNhbGwgbnVtYmVycyBtYXkgdmFyeSBiYXNlZCBvbiB0aGUgc3BlY2lmaWMgaW52b2NhdGlvbi4gIElmCit0aGUgbnVtYmVycyBpbiB0aGUgZGlmZmVyZW50IGNhbGxpbmcgY29udmVudGlvbnMgb3ZlcmxhcCwgdGhlbiBjaGVja3MgaW4KK3RoZSBmaWx0ZXJzIG1heSBiZSBhYnVzZWQuICBBbHdheXMgY2hlY2sgdGhlIGFyY2ggdmFsdWUhCisKK0V4YW1wbGUKKy0tLS0tLS0KKworVGhlIHNhbXBsZXMvc2VjY29tcC8gZGlyZWN0b3J5IGNvbnRhaW5zIGJvdGggYW4geDg2LXNwZWNpZmljIGV4YW1wbGUKK2FuZCBhIG1vcmUgZ2VuZXJpYyBleGFtcGxlIG9mIGEgaGlnaGVyIGxldmVsIG1hY3JvIGludGVyZmFjZSBmb3IgQlBGCitwcm9ncmFtIGdlbmVyYXRpb24uCisKKworCitBZGRpbmcgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NlZSBhcmNoL0tjb25maWcgZm9yIHRoZSBhdXRob3JpdGF0aXZlIHJlcXVpcmVtZW50cy4gIEluIGdlbmVyYWwsIGlmIGFuCithcmNoaXRlY3R1cmUgc3VwcG9ydHMgYm90aCBwdHJhY2VfZXZlbnQgYW5kIHNlY2NvbXAsIGl0IHdpbGwgYmUgYWJsZSB0bworc3VwcG9ydCBzZWNjb21wIGZpbHRlciB3aXRoIG1pbm9yIGZpeHVwOiBTSUdTWVMgc3VwcG9ydCBhbmQgc2VjY29tcCByZXR1cm4KK3ZhbHVlIGNoZWNraW5nLiAgVGhlbiBpdCBtdXN0IGp1c3QgYWRkIENPTkZJR19IQVZFX0FSQ0hfU0VDQ09NUF9GSUxURVIKK3RvIGl0cyBhcmNoLXNwZWNpZmljIEtjb25maWcuCisKKworCitDYXZlYXRzCistLS0tLS0tCisKK1RoZSB2RFNPIGNhbiBjYXVzZSBzb21lIHN5c3RlbSBjYWxscyB0byBydW4gZW50aXJlbHkgaW4gdXNlcnNwYWNlLAorbGVhZGluZyB0byBzdXJwcmlzZXMgd2hlbiB5b3UgcnVuIHByb2dyYW1zIG9uIGRpZmZlcmVudCBtYWNoaW5lcyB0aGF0CitmYWxsIGJhY2sgdG8gcmVhbCBzeXNjYWxscy4gIFRvIG1pbmltaXplIHRoZXNlIHN1cnByaXNlcyBvbiB4ODYsIG1ha2UKK3N1cmUgeW91IHRlc3Qgd2l0aAorL3N5cy9kZXZpY2VzL3N5c3RlbS9jbG9ja3NvdXJjZS9jbG9ja3NvdXJjZTAvY3VycmVudF9jbG9ja3NvdXJjZSBzZXQgdG8KK3NvbWV0aGluZyBsaWtlIGFjcGlfcG0uCisKK09uIHg4Ni02NCwgdnN5c2NhbGwgZW11bGF0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4gICh2c3lzY2FsbHMgYXJlCitsZWdhY3kgdmFyaWFudHMgb24gdkRTTyBjYWxscy4pICBDdXJyZW50bHksIGVtdWxhdGVkIHZzeXNjYWxscyB3aWxsIGhvbm9yIHNlY2NvbXAsIHdpdGggYSBmZXcgb2RkaXRpZXM6CisKKy0gQSByZXR1cm4gdmFsdWUgb2YgU0VDQ09NUF9SRVRfVFJBUCB3aWxsIHNldCBhIHNpX2NhbGxfYWRkciBwb2ludGluZyB0bworICB0aGUgdnN5c2NhbGwgZW50cnkgZm9yIHRoZSBnaXZlbiBjYWxsIGFuZCBub3QgdGhlIGFkZHJlc3MgYWZ0ZXIgdGhlCisgICdzeXNjYWxsJyBpbnN0cnVjdGlvbi4gIEFueSBjb2RlIHdoaWNoIHdhbnRzIHRvIHJlc3RhcnQgdGhlIGNhbGwKKyAgc2hvdWxkIGJlIGF3YXJlIHRoYXQgKGEpIGEgcmV0IGluc3RydWN0aW9uIGhhcyBiZWVuIGVtdWxhdGVkIGFuZCAoYikKKyAgdHJ5aW5nIHRvIHJlc3VtZSB0aGUgc3lzY2FsbCB3aWxsIGFnYWluIHRyaWdnZXIgdGhlIHN0YW5kYXJkIHZzeXNjYWxsCisgIGVtdWxhdGlvbiBzZWN1cml0eSBjaGVja3MsIG1ha2luZyByZXN1bWluZyB0aGUgc3lzY2FsbCBtb3N0bHkKKyAgcG9pbnRsZXNzLgorCistIEEgcmV0dXJuIHZhbHVlIG9mIFNFQ0NPTVBfUkVUX1RSQUNFIHdpbGwgc2lnbmFsIHRoZSB0cmFjZXIgYXMgdXN1YWwsCisgIGJ1dCB0aGUgc3lzY2FsbCBtYXkgbm90IGJlIGNoYW5nZWQgdG8gYW5vdGhlciBzeXN0ZW0gY2FsbCB1c2luZyB0aGUKKyAgb3JpZ19yYXggcmVnaXN0ZXIuIEl0IG1heSBvbmx5IGJlIGNoYW5nZWQgdG8gLTEgb3JkZXIgdG8gc2tpcCB0aGUKKyAgY3VycmVudGx5IGVtdWxhdGVkIGNhbGwuIEFueSBvdGhlciBjaGFuZ2UgTUFZIHRlcm1pbmF0ZSB0aGUgcHJvY2Vzcy4KKyAgVGhlIHJpcCB2YWx1ZSBzZWVuIGJ5IHRoZSB0cmFjZXIgd2lsbCBiZSB0aGUgc3lzY2FsbCBlbnRyeSBhZGRyZXNzOworICB0aGlzIGlzIGRpZmZlcmVudCBmcm9tIG5vcm1hbCBiZWhhdmlvci4gIFRoZSB0cmFjZXIgTVVTVCBOT1QgbW9kaWZ5CisgIHJpcCBvciByc3AuICAoRG8gbm90IHJlbHkgb24gb3RoZXIgY2hhbmdlcyB0ZXJtaW5hdGluZyB0aGUgcHJvY2Vzcy4KKyAgVGhleSBtaWdodCB3b3JrLiAgRm9yIGV4YW1wbGUsIG9uIHNvbWUga2VybmVscywgY2hvb3NpbmcgYSBzeXNjYWxsCisgIHRoYXQgb25seSBleGlzdHMgaW4gZnV0dXJlIGtlcm5lbHMgd2lsbCBiZSBjb3JyZWN0bHkgZW11bGF0ZWQgKGJ5CisgIHJldHVybmluZyAtRU5PU1lTKS4KKworVG8gZGV0ZWN0IHRoaXMgcXVpcmt5IGJlaGF2aW9yLCBjaGVjayBmb3IgYWRkciAmIH4weDBDMDAgPT0KKzB4RkZGRkZGRkZGRjYwMDAwMC4gIChGb3IgU0VDQ09NUF9SRVRfVFJBQ0UsIHVzZSByaXAuICBGb3IKK1NFQ0NPTVBfUkVUX1RSQVAsIHVzZSBzaWdpbmZvLT5zaV9jYWxsX2FkZHIuKSAgRG8gbm90IGNoZWNrIGFueSBvdGhlcgorY29uZGl0aW9uOiBmdXR1cmUga2VybmVscyBtYXkgaW1wcm92ZSB2c3lzY2FsbCBlbXVsYXRpb24gYW5kIGN1cnJlbnQKK2tlcm5lbHMgaW4gdnN5c2NhbGw9bmF0aXZlIG1vZGUgd2lsbCBiZWhhdmUgZGlmZmVyZW50bHksIGJ1dCB0aGUKK2luc3RydWN0aW9ucyBhdCAweEYuLi5GNjAwezAsNCw4LEN9MDAgd2lsbCBub3QgYmUgc3lzdGVtIGNhbGxzIGluIHRoZXNlCitjYXNlcy4KKworTm90ZSB0aGF0IG1vZGVybiBzeXN0ZW1zIGFyZSB1bmxpa2VseSB0byB1c2UgdnN5c2NhbGxzIGF0IGFsbCAtLSB0aGV5CithcmUgYSBsZWdhY3kgZmVhdHVyZSBhbmQgdGhleSBhcmUgY29uc2lkZXJhYmx5IHNsb3dlciB0aGFuIHN0YW5kYXJkCitzeXNjYWxscy4gIE5ldyBjb2RlIHdpbGwgdXNlIHRoZSB2RFNPLCBhbmQgdkRTTy1pc3N1ZWQgc3lzdGVtIGNhbGxzCithcmUgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBub3JtYWwgc3lzdGVtIGNhbGxzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wcmVlbXB0LWxvY2tpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9wcmVlbXB0LWxvY2tpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4OWNlNjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ByZWVtcHQtbG9ja2luZy50eHQKQEAgLTAsMCArMSwxMzUgQEAKKwkJICBQcm9wZXIgTG9ja2luZyBVbmRlciBhIFByZWVtcHRpYmxlIEtlcm5lbDoKKwkJICAgICAgIEtlZXBpbmcgS2VybmVsIENvZGUgUHJlZW1wdC1TYWZlCisJCQkgUm9iZXJ0IExvdmUgPHJtbEB0ZWNoOS5uZXQ+CisJCQkgIExhc3QgVXBkYXRlZDogMjggQXVnIDIwMDIKKworCitJTlRST0RVQ1RJT04KKworCitBIHByZWVtcHRpYmxlIGtlcm5lbCBjcmVhdGVzIG5ldyBsb2NraW5nIGlzc3Vlcy4gIFRoZSBpc3N1ZXMgYXJlIHRoZSBzYW1lIGFzCit0aG9zZSB1bmRlciBTTVA6IGNvbmN1cnJlbmN5IGFuZCByZWVudHJhbmN5LiAgVGhhbmtmdWxseSwgdGhlIExpbnV4IHByZWVtcHRpYmxlCitrZXJuZWwgbW9kZWwgbGV2ZXJhZ2VzIGV4aXN0aW5nIFNNUCBsb2NraW5nIG1lY2hhbmlzbXMuICBUaHVzLCB0aGUga2VybmVsCityZXF1aXJlcyBleHBsaWNpdCBhZGRpdGlvbmFsIGxvY2tpbmcgZm9yIHZlcnkgZmV3IGFkZGl0aW9uYWwgc2l0dWF0aW9ucy4KKworVGhpcyBkb2N1bWVudCBpcyBmb3IgYWxsIGtlcm5lbCBoYWNrZXJzLiAgRGV2ZWxvcGluZyBjb2RlIGluIHRoZSBrZXJuZWwKK3JlcXVpcmVzIHByb3RlY3RpbmcgdGhlc2Ugc2l0dWF0aW9ucy4KKyAKKworUlVMRSAjMTogUGVyLUNQVSBkYXRhIHN0cnVjdHVyZXMgbmVlZCBleHBsaWNpdCBwcm90ZWN0aW9uCisKKworVHdvIHNpbWlsYXIgcHJvYmxlbXMgYXJpc2UuIEFuIGV4YW1wbGUgY29kZSBzbmlwcGV0OgorCisJc3RydWN0IHRoaXNfbmVlZHNfbG9ja2luZyB0dXhbTlJfQ1BVU107CisJdHV4W3NtcF9wcm9jZXNzb3JfaWQoKV0gPSBzb21lX3ZhbHVlOworCS8qIHRhc2sgaXMgcHJlZW1wdGVkIGhlcmUuLi4gKi8KKwlzb21ldGhpbmcgPSB0dXhbc21wX3Byb2Nlc3Nvcl9pZCgpXTsKKworRmlyc3QsIHNpbmNlIHRoZSBkYXRhIGlzIHBlci1DUFUsIGl0IG1heSBub3QgaGF2ZSBleHBsaWNpdCBTTVAgbG9ja2luZywgYnV0CityZXF1aXJlIGl0IG90aGVyd2lzZS4gIFNlY29uZCwgd2hlbiBhIHByZWVtcHRlZCB0YXNrIGlzIGZpbmFsbHkgcmVzY2hlZHVsZWQsCit0aGUgcHJldmlvdXMgdmFsdWUgb2Ygc21wX3Byb2Nlc3Nvcl9pZCBtYXkgbm90IGVxdWFsIHRoZSBjdXJyZW50LiAgWW91IG11c3QKK3Byb3RlY3QgdGhlc2Ugc2l0dWF0aW9ucyBieSBkaXNhYmxpbmcgcHJlZW1wdGlvbiBhcm91bmQgdGhlbS4KKworWW91IGNhbiBhbHNvIHVzZSBwdXRfY3B1KCkgYW5kIGdldF9jcHUoKSwgd2hpY2ggd2lsbCBkaXNhYmxlIHByZWVtcHRpb24uCisKKworUlVMRSAjMjogQ1BVIHN0YXRlIG11c3QgYmUgcHJvdGVjdGVkLgorCisKK1VuZGVyIHByZWVtcHRpb24sIHRoZSBzdGF0ZSBvZiB0aGUgQ1BVIG11c3QgYmUgcHJvdGVjdGVkLiAgVGhpcyBpcyBhcmNoLQorZGVwZW5kZW50LCBidXQgaW5jbHVkZXMgQ1BVIHN0cnVjdHVyZXMgYW5kIHN0YXRlIG5vdCBwcmVzZXJ2ZWQgb3ZlciBhIGNvbnRleHQKK3N3aXRjaC4gIEZvciBleGFtcGxlLCBvbiB4ODYsIGVudGVyaW5nIGFuZCBleGl0aW5nIEZQVSBtb2RlIGlzIG5vdyBhIGNyaXRpY2FsCitzZWN0aW9uIHRoYXQgbXVzdCBvY2N1ciB3aGlsZSBwcmVlbXB0aW9uIGlzIGRpc2FibGVkLiAgVGhpbmsgd2hhdCB3b3VsZCBoYXBwZW4KK2lmIHRoZSBrZXJuZWwgaXMgZXhlY3V0aW5nIGEgZmxvYXRpbmctcG9pbnQgaW5zdHJ1Y3Rpb24gYW5kIGlzIHRoZW4gcHJlZW1wdGVkLgorUmVtZW1iZXIsIHRoZSBrZXJuZWwgZG9lcyBub3Qgc2F2ZSBGUFUgc3RhdGUgZXhjZXB0IGZvciB1c2VyIHRhc2tzLiAgVGhlcmVmb3JlLAordXBvbiBwcmVlbXB0aW9uLCB0aGUgRlBVIHJlZ2lzdGVycyB3aWxsIGJlIHNvbGQgdG8gdGhlIGxvd2VzdCBiaWRkZXIuICBUaHVzLAorcHJlZW1wdGlvbiBtdXN0IGJlIGRpc2FibGVkIGFyb3VuZCBzdWNoIHJlZ2lvbnMuCisKK05vdGUsIHNvbWUgRlBVIGZ1bmN0aW9ucyBhcmUgYWxyZWFkeSBleHBsaWNpdGx5IHByZWVtcHQgc2FmZS4gIEZvciBleGFtcGxlLAora2VybmVsX2ZwdV9iZWdpbiBhbmQga2VybmVsX2ZwdV9lbmQgd2lsbCBkaXNhYmxlIGFuZCBlbmFibGUgcHJlZW1wdGlvbi4KK0hvd2V2ZXIsIGZwdV9fcmVzdG9yZSgpIG11c3QgYmUgY2FsbGVkIHdpdGggcHJlZW1wdGlvbiBkaXNhYmxlZC4KKworCitSVUxFICMzOiBMb2NrIGFjcXVpcmUgYW5kIHJlbGVhc2UgbXVzdCBiZSBwZXJmb3JtZWQgYnkgc2FtZSB0YXNrCisKKworQSBsb2NrIGFjcXVpcmVkIGluIG9uZSB0YXNrIG11c3QgYmUgcmVsZWFzZWQgYnkgdGhlIHNhbWUgdGFzay4gIFRoaXMKK21lYW5zIHlvdSBjYW4ndCBkbyBvZGRiYWxsIHRoaW5ncyBsaWtlIGFjcXVpcmUgYSBsb2NrIGFuZCBnbyBvZmYgdG8KK3BsYXkgd2hpbGUgYW5vdGhlciB0YXNrIHJlbGVhc2VzIGl0LiAgSWYgeW91IHdhbnQgdG8gZG8gc29tZXRoaW5nCitsaWtlIHRoaXMsIGFjcXVpcmUgYW5kIHJlbGVhc2UgdGhlIHRhc2sgaW4gdGhlIHNhbWUgY29kZSBwYXRoIGFuZAoraGF2ZSB0aGUgY2FsbGVyIHdhaXQgb24gYW4gZXZlbnQgYnkgdGhlIG90aGVyIHRhc2suCisKKworU09MVVRJT04KKworCitEYXRhIHByb3RlY3Rpb24gdW5kZXIgcHJlZW1wdGlvbiBpcyBhY2hpZXZlZCBieSBkaXNhYmxpbmcgcHJlZW1wdGlvbiBmb3IgdGhlCitkdXJhdGlvbiBvZiB0aGUgY3JpdGljYWwgcmVnaW9uLgorCitwcmVlbXB0X2VuYWJsZSgpCQlkZWNyZW1lbnQgdGhlIHByZWVtcHQgY291bnRlcgorcHJlZW1wdF9kaXNhYmxlKCkJCWluY3JlbWVudCB0aGUgcHJlZW1wdCBjb3VudGVyCitwcmVlbXB0X2VuYWJsZV9ub19yZXNjaGVkKCkJZGVjcmVtZW50LCBidXQgZG8gbm90IGltbWVkaWF0ZWx5IHByZWVtcHQKK3ByZWVtcHRfY2hlY2tfcmVzY2hlZCgpCQlpZiBuZWVkZWQsIHJlc2NoZWR1bGUKK3ByZWVtcHRfY291bnQoKQkJCXJldHVybiB0aGUgcHJlZW1wdCBjb3VudGVyCisKK1RoZSBmdW5jdGlvbnMgYXJlIG5lc3RhYmxlLiAgSW4gb3RoZXIgd29yZHMsIHlvdSBjYW4gY2FsbCBwcmVlbXB0X2Rpc2FibGUKK24tdGltZXMgaW4gYSBjb2RlIHBhdGgsIGFuZCBwcmVlbXB0aW9uIHdpbGwgbm90IGJlIHJlZW5hYmxlZCB1bnRpbCB0aGUgbi10aAorY2FsbCB0byBwcmVlbXB0X2VuYWJsZS4gIFRoZSBwcmVlbXB0IHN0YXRlbWVudHMgZGVmaW5lIHRvIG5vdGhpbmcgaWYKK3ByZWVtcHRpb24gaXMgbm90IGVuYWJsZWQuCisKK05vdGUgdGhhdCB5b3UgZG8gbm90IG5lZWQgdG8gZXhwbGljaXRseSBwcmV2ZW50IHByZWVtcHRpb24gaWYgeW91IGFyZSBob2xkaW5nCithbnkgbG9ja3Mgb3IgaW50ZXJydXB0cyBhcmUgZGlzYWJsZWQsIHNpbmNlIHByZWVtcHRpb24gaXMgaW1wbGljaXRseSBkaXNhYmxlZAoraW4gdGhvc2UgY2FzZXMuCisKK0J1dCBrZWVwIGluIG1pbmQgdGhhdCAnaXJxcyBkaXNhYmxlZCcgaXMgYSBmdW5kYW1lbnRhbGx5IHVuc2FmZSB3YXkgb2YKK2Rpc2FibGluZyBwcmVlbXB0aW9uIC0gYW55IHNwaW5fdW5sb2NrKCkgZGVjcmVhc2luZyB0aGUgcHJlZW1wdGlvbiBjb3VudAordG8gMCBtaWdodCB0cmlnZ2VyIGEgcmVzY2hlZHVsZS4gQSBzaW1wbGUgcHJpbnRrKCkgbWlnaHQgdHJpZ2dlciBhIHJlc2NoZWR1bGUuCitTbyB1c2UgdGhpcyBpbXBsaWNpdCBwcmVlbXB0aW9uLWRpc2FibGluZyBwcm9wZXJ0eSBvbmx5IGlmIHlvdSBrbm93IHRoYXQgdGhlCithZmZlY3RlZCBjb2RlcGF0aCBkb2VzIG5vdCBkbyBhbnkgb2YgdGhpcy4gQmVzdCBwb2xpY3kgaXMgdG8gdXNlIHRoaXMgb25seSBmb3IKK3NtYWxsLCBhdG9taWMgY29kZSB0aGF0IHlvdSB3cm90ZSBhbmQgd2hpY2ggY2FsbHMgbm8gY29tcGxleCBmdW5jdGlvbnMuCisKK0V4YW1wbGU6CisKKwljcHVjYWNoZV90ICpjYzsgLyogdGhpcyBpcyBwZXItQ1BVICovCisJcHJlZW1wdF9kaXNhYmxlKCk7CisJY2MgPSBjY19kYXRhKHNlYXJjaHApOworCWlmIChjYyAmJiBjYy0+YXZhaWwpIHsKKwkJX19mcmVlX2Jsb2NrKHNlYXJjaHAsIGNjX2VudHJ5KGNjKSwgY2MtPmF2YWlsKTsKKwkJY2MtPmF2YWlsID0gMDsKKwl9CisJcHJlZW1wdF9lbmFibGUoKTsKKwlyZXR1cm4gMDsKKworTm90aWNlIGhvdyB0aGUgcHJlZW1wdGlvbiBzdGF0ZW1lbnRzIG11c3QgZW5jb21wYXNzIGV2ZXJ5IHJlZmVyZW5jZSBvZiB0aGUKK2NyaXRpY2FsIHZhcmlhYmxlcy4gIEFub3RoZXIgZXhhbXBsZToKKworCWludCBidWZbTlJfQ1BVU107CisJc2V0X2NwdV92YWwoYnVmKTsKKwlpZiAoYnVmW3NtcF9wcm9jZXNzb3JfaWQoKV0gPT0gLTEpIHByaW50ZihLRVJOX0lORk8gIndlZSFcbiIpOworCXNwaW5fbG9jaygmYnVmX2xvY2spOworCS8qIC4uLiAqLworCitUaGlzIGNvZGUgaXMgbm90IHByZWVtcHQtc2FmZSwgYnV0IHNlZSBob3cgZWFzaWx5IHdlIGNhbiBmaXggaXQgYnkgc2ltcGx5Cittb3ZpbmcgdGhlIHNwaW5fbG9jayB1cCB0d28gbGluZXMuCisKKworUFJFVkVOVElORyBQUkVFTVBUSU9OIFVTSU5HIElOVEVSUlVQVCBESVNBQkxJTkcKKworCitJdCBpcyBwb3NzaWJsZSB0byBwcmV2ZW50IGEgcHJlZW1wdGlvbiBldmVudCB1c2luZyBsb2NhbF9pcnFfZGlzYWJsZSBhbmQKK2xvY2FsX2lycV9zYXZlLiAgTm90ZSwgd2hlbiBkb2luZyBzbywgeW91IG11c3QgYmUgdmVyeSBjYXJlZnVsIHRvIG5vdCBjYXVzZQorYW4gZXZlbnQgdGhhdCB3b3VsZCBzZXQgbmVlZF9yZXNjaGVkIGFuZCByZXN1bHQgaW4gYSBwcmVlbXB0aW9uIGNoZWNrLiAgV2hlbgoraW4gZG91YnQsIHJlbHkgb24gbG9ja2luZyBvciBleHBsaWNpdCBwcmVlbXB0aW9uIGRpc2FibGluZy4KKworTm90ZSBpbiAyLjUgaW50ZXJydXB0IGRpc2FibGluZyBpcyBub3cgb25seSBwZXItQ1BVIChlLmcuIGxvY2FsKS4KKworQW4gYWRkaXRpb25hbCBjb25jZXJuIGlzIHByb3BlciB1c2FnZSBvZiBsb2NhbF9pcnFfZGlzYWJsZSBhbmQgbG9jYWxfaXJxX3NhdmUuCitUaGVzZSBtYXkgYmUgdXNlZCB0byBwcm90ZWN0IGZyb20gcHJlZW1wdGlvbiwgaG93ZXZlciwgb24gZXhpdCwgaWYgcHJlZW1wdGlvbgorbWF5IGJlIGVuYWJsZWQsIGEgdGVzdCB0byBzZWUgaWYgcHJlZW1wdGlvbiBpcyByZXF1aXJlZCBzaG91bGQgYmUgZG9uZS4gIElmCit0aGVzZSBhcmUgY2FsbGVkIGZyb20gdGhlIHNwaW5fbG9jayBhbmQgcmVhZC93cml0ZSBsb2NrIG1hY3JvcywgdGhlIHJpZ2h0IHRoaW5nCitpcyBkb25lLiAgVGhleSBtYXkgYWxzbyBiZSBjYWxsZWQgd2l0aGluIGEgc3Bpbi1sb2NrIHByb3RlY3RlZCByZWdpb24sIGhvd2V2ZXIsCitpZiB0aGV5IGFyZSBldmVyIGNhbGxlZCBvdXRzaWRlIG9mIHRoaXMgY29udGV4dCwgYSB0ZXN0IGZvciBwcmVlbXB0aW9uIHNob3VsZAorYmUgbWFkZS4gRG8gbm90ZSB0aGF0IGNhbGxzIGZyb20gaW50ZXJydXB0IGNvbnRleHQgb3IgYm90dG9tIGhhbGYvIHRhc2tsZXRzCithcmUgYWxzbyBwcm90ZWN0ZWQgYnkgcHJlZW1wdGlvbiBsb2NrcyBhbmQgc28gbWF5IHVzZSB0aGUgdmVyc2lvbnMgd2hpY2ggZG8KK25vdCBjaGVjayBwcmVlbXB0aW9uLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wcmludGstZm9ybWF0cy50eHQgYi9Eb2N1bWVudGF0aW9uL3ByaW50ay1mb3JtYXRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzg0YzI3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wcmludGstZm9ybWF0cy50eHQKQEAgLTAsMCArMSwzMjAgQEAKK0lmIHZhcmlhYmxlIGlzIG9mIFR5cGUsCQl1c2UgcHJpbnRrIGZvcm1hdCBzcGVjaWZpZXI6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkJaW50CQkJJWQgb3IgJXgKKwkJdW5zaWduZWQgaW50CQkldSBvciAleAorCQlsb25nCQkJJWxkIG9yICVseAorCQl1bnNpZ25lZCBsb25nCQklbHUgb3IgJWx4CisJCWxvbmcgbG9uZwkJJWxsZCBvciAlbGx4CisJCXVuc2lnbmVkIGxvbmcgbG9uZwklbGx1IG9yICVsbHgKKwkJc2l6ZV90CQkJJXp1IG9yICV6eAorCQlzc2l6ZV90CQkJJXpkIG9yICV6eAorCQlzMzIJCQklZCBvciAleAorCQl1MzIJCQkldSBvciAleAorCQlzNjQJCQklbGxkIG9yICVsbHgKKwkJdTY0CQkJJWxsdSBvciAlbGx4CisKK0lmIDx0eXBlPiBpcyBkZXBlbmRlbnQgb24gYSBjb25maWcgb3B0aW9uIGZvciBpdHMgc2l6ZSAoZS5nLiwgc2VjdG9yX3QsCitibGtjbnRfdCkgb3IgaXMgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBmb3IgaXRzIHNpemUgKGUuZy4sIHRjZmxhZ190KSwgdXNlIGEKK2Zvcm1hdCBzcGVjaWZpZXIgb2YgaXRzIGxhcmdlc3QgcG9zc2libGUgdHlwZSBhbmQgZXhwbGljaXRseSBjYXN0IHRvIGl0LgorRXhhbXBsZToKKworCXByaW50aygidGVzdDogc2VjdG9yIG51bWJlci90b3RhbCBibG9ja3M6ICVsbHUvJWxsdVxuIiwKKwkJKHVuc2lnbmVkIGxvbmcgbG9uZylzZWN0b3IsICh1bnNpZ25lZCBsb25nIGxvbmcpYmxvY2tjb3VudCk7CisKK1JlbWluZGVyOiBzaXplb2YoKSByZXN1bHQgaXMgb2YgdHlwZSBzaXplX3QuCisKK1RoZSBrZXJuZWwncyBwcmludGYgZG9lcyBub3Qgc3VwcG9ydCAlbi4gRm9yIG9idmlvdXMgcmVhc29ucywgZmxvYXRpbmcKK3BvaW50IGZvcm1hdHMgKCVlLCAlZiwgJWcsICVhKSBhcmUgYWxzbyBub3QgcmVjb2duaXplZC4gVXNlIG9mIGFueQordW5zdXBwb3J0ZWQgc3BlY2lmaWVyIG9yIGxlbmd0aCBxdWFsaWZpZXIgcmVzdWx0cyBpbiBhIFdBUk4gYW5kIGVhcmx5CityZXR1cm4gZnJvbSB2c25wcmludGYuCisKK1JhdyBwb2ludGVyIHZhbHVlIFNIT1VMRCBiZSBwcmludGVkIHdpdGggJXAuIFRoZSBrZXJuZWwgc3VwcG9ydHMKK3RoZSBmb2xsb3dpbmcgZXh0ZW5kZWQgZm9ybWF0IHNwZWNpZmllcnMgZm9yIHBvaW50ZXIgdHlwZXM6CisKK1N5bWJvbHMvRnVuY3Rpb24gUG9pbnRlcnM6CisKKwklcEYJdmVyc2F0aWxlX2luaXQrMHgwLzB4MTEwCisJJXBmCXZlcnNhdGlsZV9pbml0CisJJXBTCXZlcnNhdGlsZV9pbml0KzB4MC8weDExMAorCSVwU1IJdmVyc2F0aWxlX2luaXQrMHg5LzB4MTEwCisJCSh3aXRoIF9fYnVpbHRpbl9leHRyYWN0X3JldHVybl9hZGRyKCkgdHJhbnNsYXRpb24pCisJJXBzCXZlcnNhdGlsZV9pbml0CisJJXBCCXByZXZfZm5fb2ZfdmVyc2F0aWxlX2luaXQrMHg4OC8weDg4CisKKwlGb3IgcHJpbnRpbmcgc3ltYm9scyBhbmQgZnVuY3Rpb24gcG9pbnRlcnMuIFRoZSAnUycgYW5kICdzJyBzcGVjaWZpZXJzCisJcmVzdWx0IGluIHRoZSBzeW1ib2wgbmFtZSB3aXRoICgnUycpIG9yIHdpdGhvdXQgKCdzJykgb2Zmc2V0cy4gV2hlcmUKKwl0aGlzIGlzIHVzZWQgb24gYSBrZXJuZWwgd2l0aG91dCBLQUxMU1lNUyAtIHRoZSBzeW1ib2wgYWRkcmVzcyBpcworCXByaW50ZWQgaW5zdGVhZC4KKworCVRoZSAnQicgc3BlY2lmaWVyIHJlc3VsdHMgaW4gdGhlIHN5bWJvbCBuYW1lIHdpdGggb2Zmc2V0cyBhbmQgc2hvdWxkIGJlCisJdXNlZCB3aGVuIHByaW50aW5nIHN0YWNrIGJhY2t0cmFjZXMuIFRoZSBzcGVjaWZpZXIgdGFrZXMgaW50bworCWNvbnNpZGVyYXRpb24gdGhlIGVmZmVjdCBvZiBjb21waWxlciBvcHRpbWlzYXRpb25zIHdoaWNoIG1heSBvY2N1cgorCXdoZW4gdGFpbC1jYWxsJ3MgYXJlIHVzZWQgYW5kIG1hcmtlZCB3aXRoIHRoZSBub3JldHVybiBHQ0MgYXR0cmlidXRlLgorCisJT24gaWE2NCwgcHBjNjQgYW5kIHBhcmlzYzY0IGFyY2hpdGVjdHVyZXMgZnVuY3Rpb24gcG9pbnRlcnMgYXJlCisJYWN0dWFsbHkgZnVuY3Rpb24gZGVzY3JpcHRvcnMgd2hpY2ggbXVzdCBmaXJzdCBiZSByZXNvbHZlZC4gVGhlICdGJyBhbmQKKwknZicgc3BlY2lmaWVycyBwZXJmb3JtIHRoaXMgcmVzb2x1dGlvbiBhbmQgdGhlbiBwcm92aWRlIHRoZSBzYW1lCisJZnVuY3Rpb25hbGl0eSBhcyB0aGUgJ1MnIGFuZCAncycgc3BlY2lmaWVycy4KKworS2VybmVsIFBvaW50ZXJzOgorCisJJXBLCTB4MDEyMzQ1Njcgb3IgMHgwMTIzNDU2Nzg5YWJjZGVmCisKKwlGb3IgcHJpbnRpbmcga2VybmVsIHBvaW50ZXJzIHdoaWNoIHNob3VsZCBiZSBoaWRkZW4gZnJvbSB1bnByaXZpbGVnZWQKKwl1c2Vycy4gVGhlIGJlaGF2aW91ciBvZiAlcEsgZGVwZW5kcyBvbiB0aGUga3B0cl9yZXN0cmljdCBzeXNjdGwgLSBzZWUKKwlEb2N1bWVudGF0aW9uL3N5c2N0bC9rZXJuZWwudHh0IGZvciBtb3JlIGRldGFpbHMuCisKK1N0cnVjdCBSZXNvdXJjZXM6CisKKwklcHIJW21lbSAweDYwMDAwMDAwLTB4NmZmZmZmZmYgZmxhZ3MgMHgyMjAwXSBvcgorCQlbbWVtIDB4MDAwMDAwMDA2MDAwMDAwMC0weDAwMDAwMDAwNmZmZmZmZmYgZmxhZ3MgMHgyMjAwXQorCSVwUglbbWVtIDB4NjAwMDAwMDAtMHg2ZmZmZmZmZiBwcmVmXSBvcgorCQlbbWVtIDB4MDAwMDAwMDA2MDAwMDAwMC0weDAwMDAwMDAwNmZmZmZmZmYgcHJlZl0KKworCUZvciBwcmludGluZyBzdHJ1Y3QgcmVzb3VyY2VzLiBUaGUgJ1InIGFuZCAncicgc3BlY2lmaWVycyByZXN1bHQgaW4gYQorCXByaW50ZWQgcmVzb3VyY2Ugd2l0aCAoJ1InKSBvciB3aXRob3V0ICgncicpIGEgZGVjb2RlZCBmbGFncyBtZW1iZXIuCisJUGFzc2VkIGJ5IHJlZmVyZW5jZS4KKworUGh5c2ljYWwgYWRkcmVzc2VzIHR5cGVzIHBoeXNfYWRkcl90OgorCisJJXBhW3BdCTB4MDEyMzQ1Njcgb3IgMHgwMTIzNDU2Nzg5YWJjZGVmCisKKwlGb3IgcHJpbnRpbmcgYSBwaHlzX2FkZHJfdCB0eXBlIChhbmQgaXRzIGRlcml2YXRpdmVzLCBzdWNoIGFzCisJcmVzb3VyY2Vfc2l6ZV90KSB3aGljaCBjYW4gdmFyeSBiYXNlZCBvbiBidWlsZCBvcHRpb25zLCByZWdhcmRsZXNzIG9mCisJdGhlIHdpZHRoIG9mIHRoZSBDUFUgZGF0YSBwYXRoLiBQYXNzZWQgYnkgcmVmZXJlbmNlLgorCitETUEgYWRkcmVzc2VzIHR5cGVzIGRtYV9hZGRyX3Q6CisKKwklcGFkCTB4MDEyMzQ1Njcgb3IgMHgwMTIzNDU2Nzg5YWJjZGVmCisKKwlGb3IgcHJpbnRpbmcgYSBkbWFfYWRkcl90IHR5cGUgd2hpY2ggY2FuIHZhcnkgYmFzZWQgb24gYnVpbGQgb3B0aW9ucywKKwlyZWdhcmRsZXNzIG9mIHRoZSB3aWR0aCBvZiB0aGUgQ1BVIGRhdGEgcGF0aC4gUGFzc2VkIGJ5IHJlZmVyZW5jZS4KKworUmF3IGJ1ZmZlciBhcyBhbiBlc2NhcGVkIHN0cmluZzoKKworCSUqcEVbYWNobm9wc10KKworCUZvciBwcmludGluZyByYXcgYnVmZmVyIGFzIGFuIGVzY2FwZWQgc3RyaW5nLiBGb3IgdGhlIGZvbGxvd2luZyBidWZmZXIKKworCQkxYiA2MiAyMCA1YyA0MyAwNyAyMiA5MCAwZCA1ZAorCisJZmV3IGV4YW1wbGVzIHNob3cgaG93IHRoZSBjb252ZXJzaW9uIHdvdWxkIGJlIGRvbmUgKHRoZSByZXN1bHQgc3RyaW5nCisJd2l0aG91dCBzdXJyb3VuZGluZyBxdW90ZXMpOgorCisJCSUqcEUJCSJcZWIgXENcYSJcMjIwXHJdIgorCQklKnBFaHAJCSJceDFiYiBcQ1x4MDciXHg5MFx4MGRdIgorCQklKnBFYQkJIlxlXDE0MlwwNDBcXFwxMDNcYVwwNDJcMjIwXHJcMTM1IgorCisJVGhlIGNvbnZlcnNpb24gcnVsZXMgYXJlIGFwcGxpZWQgYWNjb3JkaW5nIHRvIGFuIG9wdGlvbmFsIGNvbWJpbmF0aW9uCisJb2YgZmxhZ3MgKHNlZSBzdHJpbmdfZXNjYXBlX21lbSgpIGtlcm5lbCBkb2N1bWVudGF0aW9uIGZvciB0aGUKKwlkZXRhaWxzKToKKwkJYSAtIEVTQ0FQRV9BTlkKKwkJYyAtIEVTQ0FQRV9TUEVDSUFMCisJCWggLSBFU0NBUEVfSEVYCisJCW4gLSBFU0NBUEVfTlVMTAorCQlvIC0gRVNDQVBFX09DVEFMCisJCXAgLSBFU0NBUEVfTlAKKwkJcyAtIEVTQ0FQRV9TUEFDRQorCUJ5IGRlZmF1bHQgRVNDQVBFX0FOWV9OUCBpcyB1c2VkLgorCisJRVNDQVBFX0FOWV9OUCBpcyB0aGUgc2FuZSBjaG9pY2UgZm9yIG1hbnkgY2FzZXMsIGluIHBhcnRpY3VsYXJseSBmb3IKKwlwcmludGluZyBTU0lEcy4KKworCUlmIGZpZWxkIHdpZHRoIGlzIG9taXR0ZWQgdGhlIDEgYnl0ZSBvbmx5IHdpbGwgYmUgZXNjYXBlZC4KKworUmF3IGJ1ZmZlciBhcyBhIGhleCBzdHJpbmc6CisKKwklKnBoCTAwIDAxIDAyICAuLi4gIDNmCisJJSpwaEMJMDA6MDE6MDI6IC4uLiA6M2YKKwklKnBoRAkwMC0wMS0wMi0gLi4uIC0zZgorCSUqcGhOCTAwMDEwMiAuLi4gM2YKKworCUZvciBwcmludGluZyBhIHNtYWxsIGJ1ZmZlcnMgKHVwIHRvIDY0IGJ5dGVzIGxvbmcpIGFzIGEgaGV4IHN0cmluZyB3aXRoCisJY2VydGFpbiBzZXBhcmF0b3IuIEZvciB0aGUgbGFyZ2VyIGJ1ZmZlcnMgY29uc2lkZXIgdG8gdXNlCisJcHJpbnRfaGV4X2R1bXAoKS4KKworTUFDL0ZEREkgYWRkcmVzc2VzOgorCisJJXBNCTAwOjAxOjAyOjAzOjA0OjA1CisJJXBNUgkwNTowNDowMzowMjowMTowMAorCSVwTUYJMDAtMDEtMDItMDMtMDQtMDUKKwklcG0JMDAwMTAyMDMwNDA1CisJJXBtUgkwNTA0MDMwMjAxMDAKKworCUZvciBwcmludGluZyA2LWJ5dGUgTUFDL0ZEREkgYWRkcmVzc2VzIGluIGhleCBub3RhdGlvbi4gVGhlICdNJyBhbmQgJ20nCisJc3BlY2lmaWVycyByZXN1bHQgaW4gYSBwcmludGVkIGFkZHJlc3Mgd2l0aCAoJ00nKSBvciB3aXRob3V0ICgnbScpIGJ5dGUKKwlzZXBhcmF0b3JzLiBUaGUgZGVmYXVsdCBieXRlIHNlcGFyYXRvciBpcyB0aGUgY29sb24gKCc6JykuCisKKwlXaGVyZSBGRERJIGFkZHJlc3NlcyBhcmUgY29uY2VybmVkIHRoZSAnRicgc3BlY2lmaWVyIGNhbiBiZSB1c2VkIGFmdGVyCisJdGhlICdNJyBzcGVjaWZpZXIgdG8gdXNlIGRhc2ggKCctJykgc2VwYXJhdG9ycyBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0CisJc2VwYXJhdG9yLgorCisJRm9yIEJsdWV0b290aCBhZGRyZXNzZXMgdGhlICdSJyBzcGVjaWZpZXIgc2hhbGwgYmUgdXNlZCBhZnRlciB0aGUgJ00nCisJc3BlY2lmaWVyIHRvIHVzZSByZXZlcnNlZCBieXRlIG9yZGVyIHN1aXRhYmxlIGZvciB2aXN1YWwgaW50ZXJwcmV0YXRpb24KKwlvZiBCbHVldG9vdGggYWRkcmVzc2VzIHdoaWNoIGFyZSBpbiB0aGUgbGl0dGxlIGVuZGlhbiBvcmRlci4KKworCVBhc3NlZCBieSByZWZlcmVuY2UuCisKK0lQdjQgYWRkcmVzc2VzOgorCisJJXBJNAkxLjIuMy40CisJJXBpNAkwMDEuMDAyLjAwMy4wMDQKKwklcFtJaV00W2huYmxdCisKKwlGb3IgcHJpbnRpbmcgSVB2NCBkb3Qtc2VwYXJhdGVkIGRlY2ltYWwgYWRkcmVzc2VzLiBUaGUgJ0k0JyBhbmQgJ2k0JworCXNwZWNpZmllcnMgcmVzdWx0IGluIGEgcHJpbnRlZCBhZGRyZXNzIHdpdGggKCdpNCcpIG9yIHdpdGhvdXQgKCdJNCcpCisJbGVhZGluZyB6ZXJvcy4KKworCVRoZSBhZGRpdGlvbmFsICdoJywgJ24nLCAnYicsIGFuZCAnbCcgc3BlY2lmaWVycyBhcmUgdXNlZCB0byBzcGVjaWZ5CisJaG9zdCwgbmV0d29yaywgYmlnIG9yIGxpdHRsZSBlbmRpYW4gb3JkZXIgYWRkcmVzc2VzIHJlc3BlY3RpdmVseS4gV2hlcmUKKwlubyBzcGVjaWZpZXIgaXMgcHJvdmlkZWQgdGhlIGRlZmF1bHQgbmV0d29yay9iaWcgZW5kaWFuIG9yZGVyIGlzIHVzZWQuCisKKwlQYXNzZWQgYnkgcmVmZXJlbmNlLgorCitJUHY2IGFkZHJlc3NlczoKKworCSVwSTYJMDAwMTowMDAyOjAwMDM6MDAwNDowMDA1OjAwMDY6MDAwNzowMDA4CisJJXBpNgkwMDAxMDAwMjAwMDMwMDA0MDAwNTAwMDYwMDA3MDAwOAorCSVwSTZjCTE6MjozOjQ6NTo2Ojc6OAorCisJRm9yIHByaW50aW5nIElQdjYgbmV0d29yay1vcmRlciAxNi1iaXQgaGV4IGFkZHJlc3Nlcy4gVGhlICdJNicgYW5kICdpNicKKwlzcGVjaWZpZXJzIHJlc3VsdCBpbiBhIHByaW50ZWQgYWRkcmVzcyB3aXRoICgnSTYnKSBvciB3aXRob3V0ICgnaTYnKQorCWNvbG9uLXNlcGFyYXRvcnMuIExlYWRpbmcgemVyb3MgYXJlIGFsd2F5cyB1c2VkLgorCisJVGhlIGFkZGl0aW9uYWwgJ2MnIHNwZWNpZmllciBjYW4gYmUgdXNlZCB3aXRoIHRoZSAnSScgc3BlY2lmaWVyIHRvCisJcHJpbnQgYSBjb21wcmVzc2VkIElQdjYgYWRkcmVzcyBhcyBkZXNjcmliZWQgYnkKKwlodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM1OTUyCisKKwlQYXNzZWQgYnkgcmVmZXJlbmNlLgorCitJUHY0L0lQdjYgYWRkcmVzc2VzIChnZW5lcmljLCB3aXRoIHBvcnQsIGZsb3dpbmZvLCBzY29wZSk6CisKKwklcElTCTEuMi4zLjQJCW9yIDAwMDE6MDAwMjowMDAzOjAwMDQ6MDAwNTowMDA2OjAwMDc6MDAwOAorCSVwaVMJMDAxLjAwMi4wMDMuMDA0CW9yIDAwMDEwMDAyMDAwMzAwMDQwMDA1MDAwNjAwMDcwMDA4CisJJXBJU2MJMS4yLjMuNAkJb3IgMToyOjM6NDo1OjY6Nzo4CisJJXBJU3BjCTEuMi4zLjQ6MTIzNDUJb3IgWzE6MjozOjQ6NTo2Ojc6OF06MTIzNDUKKwklcFtJaV1TW3Bmc2NobmJsXQorCisJRm9yIHByaW50aW5nIGFuIElQIGFkZHJlc3Mgd2l0aG91dCB0aGUgbmVlZCB0byBkaXN0aW5ndWlzaCB3aGV0aGVyIGl0J3MKKwlvZiB0eXBlIEFGX0lORVQgb3IgQUZfSU5FVDYsIGEgcG9pbnRlciB0byBhIHZhbGlkICdzdHJ1Y3Qgc29ja2FkZHInLAorCXNwZWNpZmllZCB0aHJvdWdoICdJUycgb3IgJ2lTJywgY2FuIGJlIHBhc3NlZCB0byB0aGlzIGZvcm1hdCBzcGVjaWZpZXIuCisKKwlUaGUgYWRkaXRpb25hbCAncCcsICdmJywgYW5kICdzJyBzcGVjaWZpZXJzIGFyZSB1c2VkIHRvIHNwZWNpZnkgcG9ydAorCShJUHY0LCBJUHY2KSwgZmxvd2luZm8gKElQdjYpIGFuZCBzY29wZSAoSVB2NikuIFBvcnRzIGhhdmUgYSAnOicgcHJlZml4LAorCWZsb3dpbmZvIGEgJy8nIGFuZCBzY29wZSBhICclJywgZWFjaCBmb2xsb3dlZCBieSB0aGUgYWN0dWFsIHZhbHVlLgorCisJSW4gY2FzZSBvZiBhbiBJUHY2IGFkZHJlc3MgdGhlIGNvbXByZXNzZWQgSVB2NiBhZGRyZXNzIGFzIGRlc2NyaWJlZCBieQorCWh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzU5NTIgaXMgYmVpbmcgdXNlZCBpZiB0aGUgYWRkaXRpb25hbAorCXNwZWNpZmllciAnYycgaXMgZ2l2ZW4uIFRoZSBJUHY2IGFkZHJlc3MgaXMgc3Vycm91bmRlZCBieSAnWycsICddJyBpbgorCWNhc2Ugb2YgYWRkaXRpb25hbCBzcGVjaWZpZXJzICdwJywgJ2YnIG9yICdzJyBhcyBzdWdnZXN0ZWQgYnkKKwlodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi02bWFuLXRleHQtYWRkci1yZXByZXNlbnRhdGlvbi0wNworCisJSW4gY2FzZSBvZiBJUHY0IGFkZHJlc3NlcywgdGhlIGFkZGl0aW9uYWwgJ2gnLCAnbicsICdiJywgYW5kICdsJworCXNwZWNpZmllcnMgY2FuIGJlIHVzZWQgYXMgd2VsbCBhbmQgYXJlIGlnbm9yZWQgaW4gY2FzZSBvZiBhbiBJUHY2CisJYWRkcmVzcy4KKworCVBhc3NlZCBieSByZWZlcmVuY2UuCisKKwlGdXJ0aGVyIGV4YW1wbGVzOgorCisJJXBJU2ZjCQkxLjIuMy40CQlvciBbMToyOjM6NDo1OjY6Nzo4XS8xMjM0NTY3ODkKKwklcElTc2MJCTEuMi4zLjQJCW9yIFsxOjI6Mzo0OjU6Njo3OjhdJTEyMzQ1Njc4OTAKKwklcElTcGZjCQkxLjIuMy40OjEyMzQ1CW9yIFsxOjI6Mzo0OjU6Njo3OjhdOjEyMzQ1LzEyMzQ1Njc4OQorCitVVUlEL0dVSUQgYWRkcmVzc2VzOgorCisJJXBVYgkwMDAxMDIwMy0wNDA1LTA2MDctMDgwOS0wYTBiMGMwZDBlMGYKKwklcFVCCTAwMDEwMjAzLTA0MDUtMDYwNy0wODA5LTBBMEIwQzBEMEUwRgorCSVwVWwJMDMwMjAxMDAtMDUwNC0wNzA2LTA4MDktMGEwYjBjMGUwZTBmCisJJXBVTAkwMzAyMDEwMC0wNTA0LTA3MDYtMDgwOS0wQTBCMEMwRTBFMEYKKworCUZvciBwcmludGluZyAxNi1ieXRlIFVVSUQvR1VJRHMgYWRkcmVzc2VzLiBUaGUgYWRkaXRpb25hbCAnbCcsICdMJywKKwknYicgYW5kICdCJyBzcGVjaWZpZXJzIGFyZSB1c2VkIHRvIHNwZWNpZnkgYSBsaXR0bGUgZW5kaWFuIG9yZGVyIGluCisJbG93ZXIgKCdsJykgb3IgdXBwZXIgY2FzZSAoJ0wnKSBoZXggY2hhcmFjdGVycyAtIGFuZCBiaWcgZW5kaWFuIG9yZGVyCisJaW4gbG93ZXIgKCdiJykgb3IgdXBwZXIgY2FzZSAoJ0InKSBoZXggY2hhcmFjdGVycy4KKworCVdoZXJlIG5vIGFkZGl0aW9uYWwgc3BlY2lmaWVycyBhcmUgdXNlZCB0aGUgZGVmYXVsdCBiaWcgZW5kaWFuCisJb3JkZXIgd2l0aCBsb3dlciBjYXNlIGhleCBjaGFyYWN0ZXJzIHdpbGwgYmUgcHJpbnRlZC4KKworCVBhc3NlZCBieSByZWZlcmVuY2UuCisKK2RlbnRyeSBuYW1lczoKKworCSVwZHssMiwzLDR9CisJJXBEeywyLDMsNH0KKworCUZvciBwcmludGluZyBkZW50cnkgbmFtZTsgaWYgd2UgcmFjZSB3aXRoIGRfbW92ZSgpLCB0aGUgbmFtZSBtaWdodCBiZQorCWEgbWl4IG9mIG9sZCBhbmQgbmV3IG9uZXMsIGJ1dCBpdCB3b24ndCBvb3BzLiAgJXBkIGRlbnRyeSBpcyBhIHNhZmVyCisJZXF1aXZhbGVudCBvZiAlcyBkZW50cnktPmRfbmFtZS5uYW1lIHdlIHVzZWQgdG8gdXNlLCAlcGQ8bj4gcHJpbnRzCisJbiBsYXN0IGNvbXBvbmVudHMuICAlcEQgZG9lcyB0aGUgc2FtZSB0aGluZyBmb3Igc3RydWN0IGZpbGUuCisKKwlQYXNzZWQgYnkgcmVmZXJlbmNlLgorCitzdHJ1Y3QgdmFfZm9ybWF0OgorCisJJXBWCisKKwlGb3IgcHJpbnRpbmcgc3RydWN0IHZhX2Zvcm1hdCBzdHJ1Y3R1cmVzLiBUaGVzZSBjb250YWluIGEgZm9ybWF0IHN0cmluZworCWFuZCB2YV9saXN0IGFzIGZvbGxvd3M6CisKKwlzdHJ1Y3QgdmFfZm9ybWF0IHsKKwkJY29uc3QgY2hhciAqZm10OworCQl2YV9saXN0ICp2YTsKKwl9OworCisJSW1wbGVtZW50cyBhICJyZWN1cnNpdmUgdnNucHJpbnRmIi4KKworCURvIG5vdCB1c2UgdGhpcyBmZWF0dXJlIHdpdGhvdXQgc29tZSBtZWNoYW5pc20gdG8gdmVyaWZ5IHRoZQorCWNvcnJlY3RuZXNzIG9mIHRoZSBmb3JtYXQgc3RyaW5nIGFuZCB2YV9saXN0IGFyZ3VtZW50cy4KKworCVBhc3NlZCBieSByZWZlcmVuY2UuCisKK3N0cnVjdCBjbGs6CisKKwklcEMJcGxsMQorCSVwQ24JcGxsMQorCSVwQ3IJMTU2MDAwMDAwMAorCisJRm9yIHByaW50aW5nIHN0cnVjdCBjbGsgc3RydWN0dXJlcy4gJyVwQycgYW5kICclcENuJyBwcmludCB0aGUgbmFtZQorCShDb21tb24gQ2xvY2sgRnJhbWV3b3JrKSBvciBhZGRyZXNzIChsZWdhY3kgY2xvY2sgZnJhbWV3b3JrKSBvZiB0aGUKKwlzdHJ1Y3R1cmU7ICclcENyJyBwcmludHMgdGhlIGN1cnJlbnQgY2xvY2sgcmF0ZS4KKworCVBhc3NlZCBieSByZWZlcmVuY2UuCisKK2JpdG1hcCBhbmQgaXRzIGRlcml2YXRpdmVzIHN1Y2ggYXMgY3B1bWFzayBhbmQgbm9kZW1hc2s6CisKKwklKnBiCTA3NzkKKwklKnBibAkwLDMtNiw4LTEwCisKKwlGb3IgcHJpbnRpbmcgYml0bWFwIGFuZCBpdHMgZGVyaXZhdGl2ZXMgc3VjaCBhcyBjcHVtYXNrIGFuZCBub2RlbWFzaywKKwklKnBiIG91dHB1dCB0aGUgYml0bWFwIHdpdGggZmllbGQgd2lkdGggYXMgdGhlIG51bWJlciBvZiBiaXRzIGFuZCAlKnBibAorCW91dHB1dCB0aGUgYml0bWFwIGFzIHJhbmdlIGxpc3Qgd2l0aCBmaWVsZCB3aWR0aCBhcyB0aGUgbnVtYmVyIG9mIGJpdHMuCisKKwlQYXNzZWQgYnkgcmVmZXJlbmNlLgorCitOZXR3b3JrIGRldmljZSBmZWF0dXJlczoKKworCSVwTkYJMHgwMDAwMDAwMDAwMDBjMDAwCisKKwlGb3IgcHJpbnRpbmcgbmV0ZGV2X2ZlYXR1cmVzX3QuCisKKwlQYXNzZWQgYnkgcmVmZXJlbmNlLgorCitDb21tYW5kIGZyb20gc3RydWN0IHRhc2tfc3RydWN0CisKKwklcFQJbHMKKworCUZvciBwcmludGluZyBleGVjdXRhYmxlIG5hbWUgZXhjbHVkaW5nIHBhdGggZnJvbSBzdHJ1Y3QKKwl0YXNrX3N0cnVjdC4KKworCVBhc3NlZCBieSByZWZlcmVuY2UuCisKK0lmIHlvdSBhZGQgb3RoZXIgJXAgZXh0ZW5zaW9ucywgcGxlYXNlIGV4dGVuZCBsaWIvdGVzdF9wcmludGYuYyB3aXRoCitvbmUgb3IgbW9yZSB0ZXN0IGNhc2VzLCBpZiBhdCBhbGwgZmVhc2libGUuCisKKworVGhhbmsgeW91IGZvciB5b3VyIGNvb3BlcmF0aW9uIGFuZCBhdHRlbnRpb24uCisKKworQnkgUmFuZHkgRHVubGFwIDxyZHVubGFwQGluZnJhZGVhZC5vcmc+IGFuZAorQW5kcmV3IE11cnJheSA8YW11cnJheUBtcGMtZGF0YS5jby51az4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcHRpL3B0aV9pbnRlbF9taWQudHh0IGIvRG9jdW1lbnRhdGlvbi9wdGkvcHRpX2ludGVsX21pZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdhNWI2ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcHRpL3B0aV9pbnRlbF9taWQudHh0CkBAIC0wLDAgKzEsOTkgQEAKK1RoZSBJbnRlbCBNSUQgUFRJIHByb2plY3QgaXMgSFcgaW1wbGVtZW50ZWQgaW4gSW50ZWwgQXRvbQorc3lzdGVtLW9uLWEtY2hpcCBkZXNpZ25zIGJhc2VkIG9uIHRoZSBQYXJhbGxlbCBUcmFjZQorSW50ZXJmYWNlIGZvciBNSVBJIFAxMTQ5LjcgY0pUQUcgc3RhbmRhcmQuICBUaGUga2VybmVsIHNvbHV0aW9uCitmb3IgdGhpcyBwbGF0Zm9ybSBpbnZvbHZlcyB0aGUgZm9sbG93aW5nIGZpbGVzOgorCisuL2luY2x1ZGUvbGludXgvcHRpLmgKKy4vZHJpdmVycy8uLi4vbl90cmFjZXNpbmsuaAorLi9kcml2ZXJzLy4uLi9uX3RyYWNlcm91dGVyLmMKKy4vZHJpdmVycy8uLi4vbl90cmFjZXNpbmsuYworLi9kcml2ZXJzLy4uLi9wdGkuYworCitwdGkuYyBpcyB0aGUgZHJpdmVyIHRoYXQgZW5hYmxlcyB2YXJpb3VzIGRlYnVnZ2luZyBmZWF0dXJlcworcG9wdWxhciBvbiBwbGF0Zm9ybXMgZnJvbSBjZXJ0YWluIG1vYmlsZSBtYW51ZmFjdHVyZXJzLgorbl90cmFjZXJvdXRlci5jIGFuZCBuX3RyYWNlc2luay5jIGFsbG93IGV4dHJhIHN5c3RlbSBpbmZvcm1hdGlvbiB0bworYmUgY29sbGVjdGVkIGFuZCByb3V0ZWQgdG8gdGhlIHB0aSBkcml2ZXIsIHN1Y2ggYXMgdHJhY2UKK2RlYnVnZ2luZyBkYXRhIGZyb20gYSBtb2RlbS4gIEFsdGhvdWdoIG5fdHJhY2Vyb3V0ZXIKK2FuZCBuX3RyYWNlc2luayBhcmUgYSBwYXJ0IG9mIHRoZSBjb21wbGV0ZSBQVEkgc29sdXRpb24sCit0aGVzZSB0d28gbGluZSBkaXNjaXBsaW5lcyBjYW4gd29yayBzZXBhcmF0ZWx5IGZyb20KK3B0aS5jIGFuZCByb3V0ZSBhbnkgZGF0YSBzdHJlYW0gZnJvbSBvbmUgL2Rldi90dHkgbm9kZQordG8gYW5vdGhlciAvZGV2L3R0eSBub2RlIHZpYSBrZXJuZWwtc3BhY2UuICBUaGlzIHByb3ZpZGVzCithIHN0YWJsZSwgcmVsaWFibGUgY29ubmVjdGlvbiB0aGF0IHdpbGwgbm90IGJyZWFrIHVubGVzcwordGhlIHVzZXItc3BhY2UgYXBwbGljYXRpb24gc2h1dHMgZG93biAocGx1cyBhdm9pZHMKK2tlcm5lbC0+dXNlci0+a2VybmVsIGNvbnRleHQgc3dpdGNoIG92ZXJoZWFkcyBvZiByb3V0aW5nCitkYXRhKS4KKworQW4gZXhhbXBsZSBkZWJ1Z2dpbmcgdXNhZ2UgZm9yIHRoaXMgZHJpdmVyIHN5c3RlbToKKyAgICpIb29rIC9kZXYvdHR5UFRJMCB0byBzeXNsb2dkLiAgT3BlbmluZyB0aGlzIHBvcnQgd2lsbCBhbHNvIHN0YXJ0CisgICAgYSBjb25zb2xlIGRldmljZSB0byBmdXJ0aGVyIGNhcHR1cmUgZGVidWdnaW5nIG1lc3NhZ2VzIHRvIFBUSS4KKyAgICpIb29rIC9kZXYvdHR5UFRJMSB0byBtb2RlbSBkZWJ1Z2dpbmcgZGF0YSB0byB3cml0ZSB0byBQVEkgSFcuCisgICAgVGhpcyBpcyB3aGVyZSBuX3RyYWNlcm91dGVyIGFuZCBuX3RyYWNlc2luayBhcmUgdXNlZC4KKyAgICpIb29rIC9kZXYvcHRpIHRvIGEgdXNlci1sZXZlbCBkZWJ1Z2dpbmcgYXBwbGljYXRpb24gZm9yIHdyaXRpbmcKKyAgICB0byBQVEkgSFcuCisgICAqVXNlIG1pcGlfKiBLZXJuZWwgRHJpdmVyIEFQSSBpbiBvdGhlciBkZXZpY2UgZHJpdmVycyBmb3IKKyAgICBkZWJ1Z2dpbmcgdG8gUFRJIGJ5IGZpcnN0IHJlcXVlc3RpbmcgYSBQVEkgd3JpdGUgYWRkcmVzcyB2aWEKKyAgICBtaXBpX3JlcXVlc3RfbWFzdGVyY2hhbm5lbCgxKS4KKworQmVsb3cgaXMgZXhhbXBsZSBwc2V1ZG8tY29kZSBvbiBob3cgYSAncHJpdmlsZWdlZCcgYXBwbGljYXRpb24KK2NhbiBob29rIHVwIG5fdHJhY2Vyb3V0ZXIgYW5kIG5fdHJhY2VzaW5rIHRvIGFueSB0dHkgb24KK2Egc3lzdGVtLiAgJ1ByaXZpbGVnZWQnIG1lYW5zIHRoZSBhcHBsaWNhdGlvbiBoYXMgZW5vdWdoCitwcml2aWxlZ2VzIHRvIHN1Y2Nlc3NmdWxseSBtYW5pcHVsYXRlIHRoZSBsZGlzYyBkcml2ZXJzCitidXQgaXMgbm90IGp1c3QgYmxpbmRseSBleGVjdXRpbmcgYXMgJ3Jvb3QnLiBLZWVwIGluIG1pbmQKK3RoZSB1c2Ugb2YgaW9jdGwoLFRJT0NTRVRELCkgaXMgbm90IHNwZWNpZmljIHRvIHRoZSBuX3RyYWNlcm91dGVyCithbmQgbl90cmFjZXNpbmsgbGluZSBkaXNjcGxpbmUgZHJpdmVycyBidXQgaXMgYSBnZW5lcmljCitvcGVyYXRpb24gZm9yIGEgcHJvZ3JhbSB0byB1c2UgYSBsaW5lIGRpc2NwbGluZSBkcml2ZXIKK29uIGEgdHR5IHBvcnQgb3RoZXIgdGhhbiB0aGUgZGVmYXVsdCBuX3R0eS4KKworLy8vLy8vLy8vLy8gVG8gaG9vayB1cCBuX3RyYWNlcm91dGVyIGFuZCBuX3RyYWNlc2luayAvLy8vLy8vLy8KKworLy8gTm90ZSB0aGF0IG5fdHJhY2Vyb3V0ZXIgZGVwZW5kcyBvbiBuX3RyYWNlc2luay4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2RlZmluZSBPTkVfVFRZICIvZGV2L3R0eU9uZSIKKyNkZWZpbmUgVFdPX1RUWSAiL2Rldi90dHlUd28iCisKKy8vIG5lZWRlZCBnbG9iYWwgdG8gaGFuZCBvbnRvIGxkaXNjIGNvbm5lY3Rpb24KK3N0YXRpYyBpbnQgZ19mZF9zb3VyY2UgPSAtMTsKK3N0YXRpYyBpbnQgZ19mZF9zaW5rICA9IC0xOworCisvLyB0aGVzZSB0d28gdmFycyB1c2VkIHRvIGdyYWIgTERJU0MgdmFsdWVzIGZyb20gbG9hZGVkIGxkaXNjIGRyaXZlcnMKKy8vIGluIE9TLiAgTG9vayBhdCAvcHJvYy90dHkvbGRpc2NzIHRvIGdldCB0aGUgcmlnaHQgbnVtYmVycyBmcm9tCisvLyB0aGUgbGRpc2NzIGxvYWRlZCBpbiB0aGUgc3lzdGVtLgoraW50IHNvdXJjZV9sZGlzY19udW0sIHNpbmtfbGRpc2NfbnVtID0gLTE7CitpbnQgcmV0dmFsOworCitnX2ZkX3NvdXJjZSA9IG9wZW4oT05FX1RUWSwgT19SRFdSKTsgLy8gbXVzdCBiZSBSL1cKK2dfZmRfc2luayAgID0gb3BlbihUV09fVFRZLCBPX1JEV1IpOyAvLyBtdXN0IGJlIFIvVworCitpZiAoZ19mZF9zb3VyY2UgPD0gMCkgfHwgKGdfZmRfc2luayA8PSAwKSB7CisgICAvLyBkb3VidCB5b3UnbGwgd2FudCB0byB1c2UgdGhlc2UgZXhhY3QgZXJyb3IgbGluZXMgb2YgY29kZQorICAgcHJpbnRmKCJFcnJvciBvbiBvcGVuKCkuIGVycm5vOiAlZFxuIixlcnJubyk7CisgICByZXR1cm4gZXJybm87Cit9CisKK3JldHZhbCA9IGlvY3RsKGdfZmRfc2luaywgVElPQ1NFVEQsICZzaW5rX2xkaXNjX251bSk7CitpZiAocmV0dmFsIDwgMCkgeworICAgcHJpbnRmKCJFcnJvciBvbiBpb2N0bCgpLiAgZXJybm86ICVkXG4iLCBlcnJubyk7CisgICByZXR1cm4gZXJybm87Cit9CisKK3JldHZhbCA9IGlvY3RsKGdfZmRfc291cmNlLCBUSU9DU0VURCwgJnNvdXJjZV9sZGlzY19udW0pOworaWYgKHJldHZhbCA8IDApIHsKKyAgIHByaW50ZigiRXJyb3Igb24gaW9jdGwoKS4gIGVycm5vOiAlZFxuIiwgZXJybm8pOworICAgcmV0dXJuIGVycm5vOworfQorCisvLy8vLy8vLy8vLyBUbyBkaXNjb25uZWN0IG5fdHJhY2Vyb3V0ZXIgYW5kIG5fdHJhY2VzaW5rIC8vLy8vLy8vCisKKy8vIEZpcnN0IG1ha2Ugc3VyZSBkYXRhIHRocm91Z2ggdGhlIGxkaXNjcyBoYXMgc3RvcHBlZC4KKworLy8gU2Vjb25kLCBkaXNjb25uZWN0IGxkaXNjcy4gIFRoaXMgcHJvdmlkZXMgYQorLy8gbGl0dGxlIGNsZWFuZXIgc2h1dGRvd24gb24gdHR5IHN0YWNrLgorc2lua19sZGlzY19udW0gPSAwOworc291cmNlX2xkaXNjX251bSA9IDA7Citpb2N0bChnX2ZkX3VhcnQsIFRJT0NTRVRELCAmc2lua19sZGlzY19udW0pOworaW9jdGwoZ19mZF9nYWRnZXQsIFRJT0NTRVRELCAmc291cmNlX2xkaXNjX251bSk7CisKKy8vIFRocmVlLCBwcm9ncmFtIGNsb3NlcyBjb25uZWN0aW9uLCBhbmQgY2xlYW51cDoKK2Nsb3NlKGdfZmRfdWFydCk7CitjbG9zZShnX2ZkX2dhZGdldCk7CitnX2ZkX3VhcnQgPSBnX2ZkX2dhZGdldCA9IE5VTEw7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3B0cC8uZ2l0aWdub3JlIGIvRG9jdW1lbnRhdGlvbi9wdHAvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTYyZTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wdHAvLmdpdGlnbm9yZQpAQCAtMCwwICsxIEBACit0ZXN0cHRwCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3B0cC9NYWtlZmlsZSBiL0RvY3VtZW50YXRpb24vcHRwL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5M2Q2YzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3B0cC9NYWtlZmlsZQpAQCAtMCwwICsxLDggQEAKKyMgTGlzdCBvZiBwcm9ncmFtcyB0byBidWlsZAoraG9zdHByb2dzLXkgOj0gdGVzdHB0cAorCisjIFRlbGwga2J1aWxkIHRvIGFsd2F5cyBidWlsZCB0aGUgcHJvZ3JhbXMKK2Fsd2F5cyA6PSAkKGhvc3Rwcm9ncy15KQorCitIT1NUQ0ZMQUdTX3Rlc3RwdHAubyArPSAtSSQob2JqdHJlZSkvdXNyL2luY2x1ZGUKK0hPU1RMT0FETElCRVNfdGVzdHB0cCA6PSAtbHJ0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3B0cC9wdHAudHh0IGIvRG9jdW1lbnRhdGlvbi9wdHAvcHRwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZThmZWY4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wdHAvcHRwLnR4dApAQCAtMCwwICsxLDg5IEBACisKKyogUFRQIGhhcmR3YXJlIGNsb2NrIGluZnJhc3RydWN0dXJlIGZvciBMaW51eAorCisgIFRoaXMgcGF0Y2ggc2V0IGludHJvZHVjZXMgc3VwcG9ydCBmb3IgSUVFRSAxNTg4IFBUUCBjbG9ja3MgaW4KKyAgTGludXguIFRvZ2V0aGVyIHdpdGggdGhlIFNPX1RJTUVTVEFNUElORyBzb2NrZXQgb3B0aW9ucywgdGhpcworICBwcmVzZW50cyBhIHN0YW5kYXJkaXplZCBtZXRob2QgZm9yIGRldmVsb3BpbmcgUFRQIHVzZXIgc3BhY2UKKyAgcHJvZ3JhbXMsIHN5bmNocm9uaXppbmcgTGludXggd2l0aCBleHRlcm5hbCBjbG9ja3MsIGFuZCB1c2luZyB0aGUKKyAgYW5jaWxsYXJ5IGZlYXR1cmVzIG9mIFBUUCBoYXJkd2FyZSBjbG9ja3MuCisKKyAgQSBuZXcgY2xhc3MgZHJpdmVyIGV4cG9ydHMgYSBrZXJuZWwgaW50ZXJmYWNlIGZvciBzcGVjaWZpYyBjbG9jaworICBkcml2ZXJzIGFuZCBhIHVzZXIgc3BhY2UgaW50ZXJmYWNlLiBUaGUgaW5mcmFzdHJ1Y3R1cmUgc3VwcG9ydHMgYQorICBjb21wbGV0ZSBzZXQgb2YgUFRQIGhhcmR3YXJlIGNsb2NrIGZ1bmN0aW9uYWxpdHkuCisKKyAgKyBCYXNpYyBjbG9jayBvcGVyYXRpb25zCisgICAgLSBTZXQgdGltZQorICAgIC0gR2V0IHRpbWUKKyAgICAtIFNoaWZ0IHRoZSBjbG9jayBieSBhIGdpdmVuIG9mZnNldCBhdG9taWNhbGx5CisgICAgLSBBZGp1c3QgY2xvY2sgZnJlcXVlbmN5CisKKyAgKyBBbmNpbGxhcnkgY2xvY2sgZmVhdHVyZXMKKyAgICAtIE9uZSBzaG9ydCBvciBwZXJpb2RpYyBhbGFybXMsIHdpdGggc2lnbmFsIGRlbGl2ZXJ5IHRvIHVzZXIgcHJvZ3JhbQorICAgIC0gVGltZSBzdGFtcCBleHRlcm5hbCBldmVudHMKKyAgICAtIFBlcmlvZCBvdXRwdXQgc2lnbmFscyBjb25maWd1cmFibGUgZnJvbSB1c2VyIHNwYWNlCisgICAgLSBTeW5jaHJvbml6YXRpb24gb2YgdGhlIExpbnV4IHN5c3RlbSB0aW1lIHZpYSB0aGUgUFBTIHN1YnN5c3RlbQorCisqKiBQVFAgaGFyZHdhcmUgY2xvY2sga2VybmVsIEFQSQorCisgICBBIFBUUCBjbG9jayBkcml2ZXIgcmVnaXN0ZXJzIGl0c2VsZiB3aXRoIHRoZSBjbGFzcyBkcml2ZXIuIFRoZQorICAgY2xhc3MgZHJpdmVyIGhhbmRsZXMgYWxsIG9mIHRoZSBkZWFsaW5ncyB3aXRoIHVzZXIgc3BhY2UuIFRoZQorICAgYXV0aG9yIG9mIGEgY2xvY2sgZHJpdmVyIG5lZWQgb25seSBpbXBsZW1lbnQgdGhlIGRldGFpbHMgb2YKKyAgIHByb2dyYW1taW5nIHRoZSBjbG9jayBoYXJkd2FyZS4gVGhlIGNsb2NrIGRyaXZlciBub3RpZmllcyB0aGUgY2xhc3MKKyAgIGRyaXZlciBvZiBhc3luY2hyb25vdXMgZXZlbnRzIChhbGFybXMgYW5kIGV4dGVybmFsIHRpbWUgc3RhbXBzKSB2aWEKKyAgIGEgc2ltcGxlIG1lc3NhZ2UgcGFzc2luZyBpbnRlcmZhY2UuCisKKyAgIFRoZSBjbGFzcyBkcml2ZXIgc3VwcG9ydHMgbXVsdGlwbGUgUFRQIGNsb2NrIGRyaXZlcnMuIEluIG5vcm1hbCB1c2UKKyAgIGNhc2VzLCBvbmx5IG9uZSBQVFAgY2xvY2sgaXMgbmVlZGVkLiBIb3dldmVyLCBmb3IgdGVzdGluZyBhbmQKKyAgIGRldmVsb3BtZW50LCBpdCBjYW4gYmUgdXNlZnVsIHRvIGhhdmUgbW9yZSB0aGFuIG9uZSBjbG9jayBpbiBhCisgICBzaW5nbGUgc3lzdGVtLCBpbiBvcmRlciB0byBhbGxvdyBwZXJmb3JtYW5jZSBjb21wYXJpc29ucy4KKworKiogUFRQIGhhcmR3YXJlIGNsb2NrIHVzZXIgc3BhY2UgQVBJCisKKyAgIFRoZSBjbGFzcyBkcml2ZXIgYWxzbyBjcmVhdGVzIGEgY2hhcmFjdGVyIGRldmljZSBmb3IgZWFjaAorICAgcmVnaXN0ZXJlZCBjbG9jay4gVXNlciBzcGFjZSBjYW4gdXNlIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZyb20KKyAgIHRoZSBjaGFyYWN0ZXIgZGV2aWNlIGFzIGEgUE9TSVggY2xvY2sgaWQgYW5kIG1heSBjYWxsCisgICBjbG9ja19nZXR0aW1lLCBjbG9ja19zZXR0aW1lLCBhbmQgY2xvY2tfYWRqdGltZS4gIFRoZXNlIGNhbGxzCisgICBpbXBsZW1lbnQgdGhlIGJhc2ljIGNsb2NrIG9wZXJhdGlvbnMuCisKKyAgIFVzZXIgc3BhY2UgcHJvZ3JhbXMgbWF5IGNvbnRyb2wgdGhlIGNsb2NrIHVzaW5nIHN0YW5kYXJkaXplZAorICAgaW9jdGxzLiBBIHByb2dyYW0gbWF5IHF1ZXJ5LCBlbmFibGUsIGNvbmZpZ3VyZSwgYW5kIGRpc2FibGUgdGhlCisgICBhbmNpbGxhcnkgY2xvY2sgZmVhdHVyZXMuIFVzZXIgc3BhY2UgY2FuIHJlY2VpdmUgdGltZSBzdGFtcGVkCisgICBldmVudHMgdmlhIGJsb2NraW5nIHJlYWQoKSBhbmQgcG9sbCgpLiBPbmUgc2hvdCBhbmQgcGVyaW9kaWMKKyAgIHNpZ25hbHMgbWF5IGJlIGNvbmZpZ3VyZWQgdmlhIHRoZSBQT1NJWCB0aW1lcl9zZXR0aW1lKCkgc3lzdGVtCisgICBjYWxsLgorCisqKiBXcml0aW5nIGNsb2NrIGRyaXZlcnMKKworICAgQ2xvY2sgZHJpdmVycyBpbmNsdWRlIGluY2x1ZGUvbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oIGFuZCByZWdpc3RlcgorICAgdGhlbXNlbHZlcyBieSBwcmVzZW50aW5nIGEgJ3N0cnVjdCBwdHBfY2xvY2tfaW5mbycgdG8gdGhlCisgICByZWdpc3RyYXRpb24gbWV0aG9kLiBDbG9jayBkcml2ZXJzIG11c3QgaW1wbGVtZW50IGFsbCBvZiB0aGUKKyAgIGZ1bmN0aW9ucyBpbiB0aGUgaW50ZXJmYWNlLiBJZiBhIGNsb2NrIGRvZXMgbm90IG9mZmVyIGEgcGFydGljdWxhcgorICAgYW5jaWxsYXJ5IGZlYXR1cmUsIHRoZW4gdGhlIGRyaXZlciBzaG91bGQganVzdCByZXR1cm4gLUVPUE5PVFNVUFAKKyAgIGZyb20gdGhvc2UgZnVuY3Rpb25zLgorCisgICBEcml2ZXJzIG11c3QgZW5zdXJlIHRoYXQgYWxsIG9mIHRoZSBtZXRob2RzIGluIGludGVyZmFjZSBhcmUKKyAgIHJlZW50cmFudC4gU2luY2UgbW9zdCBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbnMgdHJlYXQgdGhlIHRpbWUgdmFsdWUKKyAgIGFzIGEgNjQgYml0IGludGVnZXIgYWNjZXNzZWQgYXMgdHdvIDMyIGJpdCByZWdpc3RlcnMsIGRyaXZlcnMKKyAgIHNob3VsZCB1c2Ugc3Bpbl9sb2NrX2lycXNhdmUvc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSB0byBwcm90ZWN0CisgICBhZ2FpbnN0IGNvbmN1cnJlbnQgYWNjZXNzLiBUaGlzIGxvY2tpbmcgY2Fubm90IGJlIGFjY29tcGxpc2hlZCBpbgorICAgY2xhc3MgZHJpdmVyLCBzaW5jZSB0aGUgbG9jayBtYXkgYWxzbyBiZSBuZWVkZWQgYnkgdGhlIGNsb2NrCisgICBkcml2ZXIncyBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lLgorCisqKiBTdXBwb3J0ZWQgaGFyZHdhcmUKKworICAgKyBGcmVlc2NhbGUgZVRTRUMgZ2lhbmZhcgorICAgICAtIDIgVGltZSBzdGFtcCBleHRlcm5hbCB0cmlnZ2VycywgcHJvZ3JhbW1hYmxlIHBvbGFyaXR5IChvcHQuIGludGVycnVwdCkKKyAgICAgLSAyIEFsYXJtIHJlZ2lzdGVycyAob3B0aW9uYWwgaW50ZXJydXB0KQorICAgICAtIDMgUGVyaW9kaWMgc2lnbmFscyAob3B0aW9uYWwgaW50ZXJydXB0KQorCisgICArIE5hdGlvbmFsIERQODM2NDAKKyAgICAgLSA2IEdQSU9zIHByb2dyYW1tYWJsZSBhcyBpbnB1dHMgb3Igb3V0cHV0cworICAgICAtIDYgR1BJT3Mgd2l0aCBkZWRpY2F0ZWQgZnVuY3Rpb25zIChMRUQvSlRBRy9jbG9jaykgY2FuIGFsc28gYmUKKyAgICAgICB1c2VkIGFzIGdlbmVyYWwgaW5wdXRzIG9yIG91dHB1dHMKKyAgICAgLSBHUElPIGlucHV0cyBjYW4gdGltZSBzdGFtcCBleHRlcm5hbCB0cmlnZ2VycworICAgICAtIEdQSU8gb3V0cHV0cyBjYW4gcHJvZHVjZSBwZXJpb2RpYyBzaWduYWxzCisgICAgIC0gMSBpbnRlcnJ1cHQgcGluCisKKyAgICsgSW50ZWwgSVhQNDY1CisgICAgIC0gQXV4aWxpYXJ5IFNsYXZlL01hc3RlciBNb2RlIFNuYXBzaG90IChvcHRpb25hbCBpbnRlcnJ1cHQpCisgICAgIC0gVGFyZ2V0IFRpbWUgKG9wdGlvbmFsIGludGVycnVwdCkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcHRwL3Rlc3RwdHAuYyBiL0RvY3VtZW50YXRpb24vcHRwL3Rlc3RwdHAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzYyNDdhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9wdHAvdGVzdHB0cC5jCkBAIC0wLDAgKzEsNTIwIEBACisvKgorICogUFRQIDE1ODggY2xvY2sgc3VwcG9ydCAtIFVzZXIgc3BhY2UgdGVzdCBwcm9ncmFtCisgKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE9NSUNST04gZWxlY3Ryb25pY3MgR21iSAorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisgKi8KKyNkZWZpbmUgX0dOVV9TT1VSQ0UKKyNkZWZpbmUgX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fICAgICAgICAvKiBGb3IgUFBDNjQsIHRvIGdldCBMTDY0IHR5cGVzICovCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGludHR5cGVzLmg+CisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8c3lzL3RpbWV4Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaW5jbHVkZSA8bGludXgvcHRwX2Nsb2NrLmg+CisKKyNkZWZpbmUgREVWSUNFICIvZGV2L3B0cDAiCisKKyNpZm5kZWYgQURKX1NFVE9GRlNFVAorI2RlZmluZSBBREpfU0VUT0ZGU0VUIDB4MDEwMAorI2VuZGlmCisKKyNpZm5kZWYgQ0xPQ0tfSU5WQUxJRAorI2RlZmluZSBDTE9DS19JTlZBTElEIC0xCisjZW5kaWYKKworLyogY2xvY2tfYWRqdGltZSBpcyBub3QgYXZhaWxhYmxlIGluIEdMSUJDIDwgMi4xNCAqLworI2lmICFfX0dMSUJDX1BSRVJFUSgyLCAxNCkKKyNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorc3RhdGljIGludCBjbG9ja19hZGp0aW1lKGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWV4ICp0eCkKK3sKKwlyZXR1cm4gc3lzY2FsbChfX05SX2Nsb2NrX2FkanRpbWUsIGlkLCB0eCk7Cit9CisjZW5kaWYKKworc3RhdGljIGNsb2NraWRfdCBnZXRfY2xvY2tpZChpbnQgZmQpCit7CisjZGVmaW5lIENMT0NLRkQgMworI2RlZmluZSBGRF9UT19DTE9DS0lEKGZkKQkoKH4oY2xvY2tpZF90KSAoZmQpIDw8IDMpIHwgQ0xPQ0tGRCkKKworCXJldHVybiBGRF9UT19DTE9DS0lEKGZkKTsKK30KKworc3RhdGljIHZvaWQgaGFuZGxlX2FsYXJtKGludCBzKQoreworCXByaW50ZigicmVjZWl2ZWQgc2lnbmFsICVkXG4iLCBzKTsKK30KKworc3RhdGljIGludCBpbnN0YWxsX2hhbmRsZXIoaW50IHNpZ251bSwgdm9pZCAoKmhhbmRsZXIpKGludCkpCit7CisJc3RydWN0IHNpZ2FjdGlvbiBhY3Rpb247CisJc2lnc2V0X3QgbWFzazsKKworCS8qIFVuYmxvY2sgdGhlIHNpZ25hbC4gKi8KKwlzaWdlbXB0eXNldCgmbWFzayk7CisJc2lnYWRkc2V0KCZtYXNrLCBzaWdudW0pOworCXNpZ3Byb2NtYXNrKFNJR19VTkJMT0NLLCAmbWFzaywgTlVMTCk7CisKKwkvKiBJbnN0YWxsIHRoZSBzaWduYWwgaGFuZGxlci4gKi8KKwlhY3Rpb24uc2FfaGFuZGxlciA9IGhhbmRsZXI7CisJYWN0aW9uLnNhX2ZsYWdzID0gMDsKKwlzaWdlbXB0eXNldCgmYWN0aW9uLnNhX21hc2spOworCXNpZ2FjdGlvbihzaWdudW0sICZhY3Rpb24sIE5VTEwpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBsb25nIHBwYl90b19zY2FsZWRfcHBtKGludCBwcGIpCit7CisJLyoKKwkgKiBUaGUgJ2ZyZXEnIGZpZWxkIGluIHRoZSAnc3RydWN0IHRpbWV4JyBpcyBpbiBwYXJ0cyBwZXIKKwkgKiBtaWxsaW9uLCBidXQgd2l0aCBhIDE2IGJpdCBiaW5hcnkgZnJhY3Rpb25hbCBmaWVsZC4KKwkgKiBJbnN0ZWFkIG9mIGNhbGN1bGF0aW5nIGVpdGhlciBvbmUgb2YKKwkgKgorCSAqICAgIHNjYWxlZF9wcG0gPSAocHBiIC8gMTAwMCkgPDwgMTYgIFsxXQorCSAqICAgIHNjYWxlZF9wcG0gPSAocHBiIDw8IDE2KSAvIDEwMDAgIFsyXQorCSAqCisJICogd2Ugc2ltcGx5IHVzZSBkb3VibGUgcHJlY2lzaW9uIG1hdGgsIGluIG9yZGVyIHRvIGF2b2lkIHRoZQorCSAqIHRydW5jYXRpb24gaW4gWzFdIGFuZCB0aGUgcG9zc2libGUgb3ZlcmZsb3cgaW4gWzJdLgorCSAqLworCXJldHVybiAobG9uZykgKHBwYiAqIDY1LjUzNik7Cit9CisKK3N0YXRpYyBpbnQ2NF90IHBjdG5zKHN0cnVjdCBwdHBfY2xvY2tfdGltZSAqdCkKK3sKKwlyZXR1cm4gdC0+c2VjICogMTAwMDAwMDAwMExMICsgdC0+bnNlYzsKK30KKworc3RhdGljIHZvaWQgdXNhZ2UoY2hhciAqcHJvZ25hbWUpCit7CisJZnByaW50ZihzdGRlcnIsCisJCSJ1c2FnZTogJXMgW29wdGlvbnNdXG4iCisJCSIgLWEgdmFsICAgICByZXF1ZXN0IGEgb25lLXNob3QgYWxhcm0gYWZ0ZXIgJ3ZhbCcgc2Vjb25kc1xuIgorCQkiIC1BIHZhbCAgICAgcmVxdWVzdCBhIHBlcmlvZGljIGFsYXJtIGV2ZXJ5ICd2YWwnIHNlY29uZHNcbiIKKwkJIiAtYyAgICAgICAgIHF1ZXJ5IHRoZSBwdHAgY2xvY2sncyBjYXBhYmlsaXRpZXNcbiIKKwkJIiAtZCBuYW1lICAgIGRldmljZSB0byBvcGVuXG4iCisJCSIgLWUgdmFsICAgICByZWFkICd2YWwnIGV4dGVybmFsIHRpbWUgc3RhbXAgZXZlbnRzXG4iCisJCSIgLWYgdmFsICAgICBhZGp1c3QgdGhlIHB0cCBjbG9jayBmcmVxdWVuY3kgYnkgJ3ZhbCcgcHBiXG4iCisJCSIgLWcgICAgICAgICBnZXQgdGhlIHB0cCBjbG9jayB0aW1lXG4iCisJCSIgLWggICAgICAgICBwcmludHMgdGhpcyBtZXNzYWdlXG4iCisJCSIgLWkgdmFsICAgICBpbmRleCBmb3IgZXZlbnQvdHJpZ2dlclxuIgorCQkiIC1rIHZhbCAgICAgbWVhc3VyZSB0aGUgdGltZSBvZmZzZXQgYmV0d2VlbiBzeXN0ZW0gYW5kIHBoYyBjbG9ja1xuIgorCQkiICAgICAgICAgICAgZm9yICd2YWwnIHRpbWVzIChNYXhpbXVtIDI1KVxuIgorCQkiIC1sICAgICAgICAgbGlzdCB0aGUgY3VycmVudCBwaW4gY29uZmlndXJhdGlvblxuIgorCQkiIC1MIHBpbix2YWwgY29uZmlndXJlIHBpbiBpbmRleCAncGluJyB3aXRoIGZ1bmN0aW9uICd2YWwnXG4iCisJCSIgICAgICAgICAgICB0aGUgY2hhbm5lbCBpbmRleCBpcyB0YWtlbiBmcm9tIHRoZSAnLWknIG9wdGlvblxuIgorCQkiICAgICAgICAgICAgJ3ZhbCcgc3BlY2lmaWVzIHRoZSBhdXhpbGlhcnkgZnVuY3Rpb246XG4iCisJCSIgICAgICAgICAgICAwIC0gbm9uZVxuIgorCQkiICAgICAgICAgICAgMSAtIGV4dGVybmFsIHRpbWUgc3RhbXBcbiIKKwkJIiAgICAgICAgICAgIDIgLSBwZXJpb2RpYyBvdXRwdXRcbiIKKwkJIiAtcCB2YWwgICAgIGVuYWJsZSBvdXRwdXQgd2l0aCBhIHBlcmlvZCBvZiAndmFsJyBuYW5vc2Vjb25kc1xuIgorCQkiIC1QIHZhbCAgICAgZW5hYmxlIG9yIGRpc2FibGUgKHZhbD0xfDApIHRoZSBzeXN0ZW0gY2xvY2sgUFBTXG4iCisJCSIgLXMgICAgICAgICBzZXQgdGhlIHB0cCBjbG9jayB0aW1lIGZyb20gdGhlIHN5c3RlbSB0aW1lXG4iCisJCSIgLVMgICAgICAgICBzZXQgdGhlIHN5c3RlbSB0aW1lIGZyb20gdGhlIHB0cCBjbG9jayB0aW1lXG4iCisJCSIgLXQgdmFsICAgICBzaGlmdCB0aGUgcHRwIGNsb2NrIHRpbWUgYnkgJ3ZhbCcgc2Vjb25kc1xuIgorCQkiIC1UIHZhbCAgICAgc2V0IHRoZSBwdHAgY2xvY2sgdGltZSB0byAndmFsJyBzZWNvbmRzXG4iLAorCQlwcm9nbmFtZSk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJc3RydWN0IHB0cF9jbG9ja19jYXBzIGNhcHM7CisJc3RydWN0IHB0cF9leHR0c19ldmVudCBldmVudDsKKwlzdHJ1Y3QgcHRwX2V4dHRzX3JlcXVlc3QgZXh0dHNfcmVxdWVzdDsKKwlzdHJ1Y3QgcHRwX3Blcm91dF9yZXF1ZXN0IHBlcm91dF9yZXF1ZXN0OworCXN0cnVjdCBwdHBfcGluX2Rlc2MgZGVzYzsKKwlzdHJ1Y3QgdGltZXNwZWMgdHM7CisJc3RydWN0IHRpbWV4IHR4OworCisJc3RhdGljIHRpbWVyX3QgdGltZXJpZDsKKwlzdHJ1Y3QgaXRpbWVyc3BlYyB0aW1lb3V0OworCXN0cnVjdCBzaWdldmVudCBzaWdldmVudDsKKworCXN0cnVjdCBwdHBfY2xvY2tfdGltZSAqcGN0OworCXN0cnVjdCBwdHBfc3lzX29mZnNldCAqc3lzb2ZmOworCisKKwljaGFyICpwcm9nbmFtZTsKKwlpbnQgaSwgYywgY250LCBmZDsKKworCWNoYXIgKmRldmljZSA9IERFVklDRTsKKwljbG9ja2lkX3QgY2xraWQ7CisJaW50IGFkamZyZXEgPSAweDdmZmZmZmZmOworCWludCBhZGp0aW1lID0gMDsKKwlpbnQgY2FwYWJpbGl0aWVzID0gMDsKKwlpbnQgZXh0dHMgPSAwOworCWludCBnZXR0aW1lID0gMDsKKwlpbnQgaW5kZXggPSAwOworCWludCBsaXN0X3BpbnMgPSAwOworCWludCBvbmVzaG90ID0gMDsKKwlpbnQgcGN0X29mZnNldCA9IDA7CisJaW50IG5fc2FtcGxlcyA9IDA7CisJaW50IHBlcmlvZGljID0gMDsKKwlpbnQgcGVyb3V0ID0gLTE7CisJaW50IHBpbl9pbmRleCA9IC0xLCBwaW5fZnVuYzsKKwlpbnQgcHBzID0gLTE7CisJaW50IHNlY29uZHMgPSAwOworCWludCBzZXR0aW1lID0gMDsKKworCWludDY0X3QgdDEsIHQyLCB0cDsKKwlpbnQ2NF90IGludGVydmFsLCBvZmZzZXQ7CisKKwlwcm9nbmFtZSA9IHN0cnJjaHIoYXJndlswXSwgJy8nKTsKKwlwcm9nbmFtZSA9IHByb2duYW1lID8gMStwcm9nbmFtZSA6IGFyZ3ZbMF07CisJd2hpbGUgKEVPRiAhPSAoYyA9IGdldG9wdChhcmdjLCBhcmd2LCAiYTpBOmNkOmU6ZjpnaGk6azpsTDpwOlA6c1N0OlQ6diIpKSkgeworCQlzd2l0Y2ggKGMpIHsKKwkJY2FzZSAnYSc6CisJCQlvbmVzaG90ID0gYXRvaShvcHRhcmcpOworCQkJYnJlYWs7CisJCWNhc2UgJ0EnOgorCQkJcGVyaW9kaWMgPSBhdG9pKG9wdGFyZyk7CisJCQlicmVhazsKKwkJY2FzZSAnYyc6CisJCQljYXBhYmlsaXRpZXMgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ2QnOgorCQkJZGV2aWNlID0gb3B0YXJnOworCQkJYnJlYWs7CisJCWNhc2UgJ2UnOgorCQkJZXh0dHMgPSBhdG9pKG9wdGFyZyk7CisJCQlicmVhazsKKwkJY2FzZSAnZic6CisJCQlhZGpmcmVxID0gYXRvaShvcHRhcmcpOworCQkJYnJlYWs7CisJCWNhc2UgJ2cnOgorCQkJZ2V0dGltZSA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAnaSc6CisJCQlpbmRleCA9IGF0b2kob3B0YXJnKTsKKwkJCWJyZWFrOworCQljYXNlICdrJzoKKwkJCXBjdF9vZmZzZXQgPSAxOworCQkJbl9zYW1wbGVzID0gYXRvaShvcHRhcmcpOworCQkJYnJlYWs7CisJCWNhc2UgJ2wnOgorCQkJbGlzdF9waW5zID0gMTsKKwkJCWJyZWFrOworCQljYXNlICdMJzoKKwkJCWNudCA9IHNzY2FuZihvcHRhcmcsICIlZCwlZCIsICZwaW5faW5kZXgsICZwaW5fZnVuYyk7CisJCQlpZiAoY250ICE9IDIpIHsKKwkJCQl1c2FnZShwcm9nbmFtZSk7CisJCQkJcmV0dXJuIC0xOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgJ3AnOgorCQkJcGVyb3V0ID0gYXRvaShvcHRhcmcpOworCQkJYnJlYWs7CisJCWNhc2UgJ1AnOgorCQkJcHBzID0gYXRvaShvcHRhcmcpOworCQkJYnJlYWs7CisJCWNhc2UgJ3MnOgorCQkJc2V0dGltZSA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAnUyc6CisJCQlzZXR0aW1lID0gMjsKKwkJCWJyZWFrOworCQljYXNlICd0JzoKKwkJCWFkanRpbWUgPSBhdG9pKG9wdGFyZyk7CisJCQlicmVhazsKKwkJY2FzZSAnVCc6CisJCQlzZXR0aW1lID0gMzsKKwkJCXNlY29uZHMgPSBhdG9pKG9wdGFyZyk7CisJCQlicmVhazsKKwkJY2FzZSAnaCc6CisJCQl1c2FnZShwcm9nbmFtZSk7CisJCQlyZXR1cm4gMDsKKwkJY2FzZSAnPyc6CisJCWRlZmF1bHQ6CisJCQl1c2FnZShwcm9nbmFtZSk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisKKwlmZCA9IG9wZW4oZGV2aWNlLCBPX1JEV1IpOworCWlmIChmZCA8IDApIHsKKwkJZnByaW50ZihzdGRlcnIsICJvcGVuaW5nICVzOiAlc1xuIiwgZGV2aWNlLCBzdHJlcnJvcihlcnJubykpOworCQlyZXR1cm4gLTE7CisJfQorCisJY2xraWQgPSBnZXRfY2xvY2tpZChmZCk7CisJaWYgKENMT0NLX0lOVkFMSUQgPT0gY2xraWQpIHsKKwkJZnByaW50ZihzdGRlcnIsICJmYWlsZWQgdG8gcmVhZCBjbG9jayBpZFxuIik7CisJCXJldHVybiAtMTsKKwl9CisKKwlpZiAoY2FwYWJpbGl0aWVzKSB7CisJCWlmIChpb2N0bChmZCwgUFRQX0NMT0NLX0dFVENBUFMsICZjYXBzKSkgeworCQkJcGVycm9yKCJQVFBfQ0xPQ0tfR0VUQ0FQUyIpOworCQl9IGVsc2UgeworCQkJcHJpbnRmKCJjYXBhYmlsaXRpZXM6XG4iCisJCQkgICAgICAgIiAgJWQgbWF4aW11bSBmcmVxdWVuY3kgYWRqdXN0bWVudCAocHBiKVxuIgorCQkJICAgICAgICIgICVkIHByb2dyYW1tYWJsZSBhbGFybXNcbiIKKwkJCSAgICAgICAiICAlZCBleHRlcm5hbCB0aW1lIHN0YW1wIGNoYW5uZWxzXG4iCisJCQkgICAgICAgIiAgJWQgcHJvZ3JhbW1hYmxlIHBlcmlvZGljIHNpZ25hbHNcbiIKKwkJCSAgICAgICAiICAlZCBwdWxzZSBwZXIgc2Vjb25kXG4iCisJCQkgICAgICAgIiAgJWQgcHJvZ3JhbW1hYmxlIHBpbnNcbiIsCisJCQkgICAgICAgY2Fwcy5tYXhfYWRqLAorCQkJICAgICAgIGNhcHMubl9hbGFybSwKKwkJCSAgICAgICBjYXBzLm5fZXh0X3RzLAorCQkJICAgICAgIGNhcHMubl9wZXJfb3V0LAorCQkJICAgICAgIGNhcHMucHBzLAorCQkJICAgICAgIGNhcHMubl9waW5zKTsKKwkJfQorCX0KKworCWlmICgweDdmZmZmZmZmICE9IGFkamZyZXEpIHsKKwkJbWVtc2V0KCZ0eCwgMCwgc2l6ZW9mKHR4KSk7CisJCXR4Lm1vZGVzID0gQURKX0ZSRVFVRU5DWTsKKwkJdHguZnJlcSA9IHBwYl90b19zY2FsZWRfcHBtKGFkamZyZXEpOworCQlpZiAoY2xvY2tfYWRqdGltZShjbGtpZCwgJnR4KSkgeworCQkJcGVycm9yKCJjbG9ja19hZGp0aW1lIik7CisJCX0gZWxzZSB7CisJCQlwdXRzKCJmcmVxdWVuY3kgYWRqdXN0bWVudCBva2F5Iik7CisJCX0KKwl9CisKKwlpZiAoYWRqdGltZSkgeworCQltZW1zZXQoJnR4LCAwLCBzaXplb2YodHgpKTsKKwkJdHgubW9kZXMgPSBBREpfU0VUT0ZGU0VUOworCQl0eC50aW1lLnR2X3NlYyA9IGFkanRpbWU7CisJCXR4LnRpbWUudHZfdXNlYyA9IDA7CisJCWlmIChjbG9ja19hZGp0aW1lKGNsa2lkLCAmdHgpIDwgMCkgeworCQkJcGVycm9yKCJjbG9ja19hZGp0aW1lIik7CisJCX0gZWxzZSB7CisJCQlwdXRzKCJ0aW1lIHNoaWZ0IG9rYXkiKTsKKwkJfQorCX0KKworCWlmIChnZXR0aW1lKSB7CisJCWlmIChjbG9ja19nZXR0aW1lKGNsa2lkLCAmdHMpKSB7CisJCQlwZXJyb3IoImNsb2NrX2dldHRpbWUiKTsKKwkJfSBlbHNlIHsKKwkJCXByaW50ZigiY2xvY2sgdGltZTogJWxkLiUwOWxkIG9yICVzIiwKKwkJCSAgICAgICB0cy50dl9zZWMsIHRzLnR2X25zZWMsIGN0aW1lKCZ0cy50dl9zZWMpKTsKKwkJfQorCX0KKworCWlmIChzZXR0aW1lID09IDEpIHsKKwkJY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwgJnRzKTsKKwkJaWYgKGNsb2NrX3NldHRpbWUoY2xraWQsICZ0cykpIHsKKwkJCXBlcnJvcigiY2xvY2tfc2V0dGltZSIpOworCQl9IGVsc2UgeworCQkJcHV0cygic2V0IHRpbWUgb2theSIpOworCQl9CisJfQorCisJaWYgKHNldHRpbWUgPT0gMikgeworCQljbG9ja19nZXR0aW1lKGNsa2lkLCAmdHMpOworCQlpZiAoY2xvY2tfc2V0dGltZShDTE9DS19SRUFMVElNRSwgJnRzKSkgeworCQkJcGVycm9yKCJjbG9ja19zZXR0aW1lIik7CisJCX0gZWxzZSB7CisJCQlwdXRzKCJzZXQgdGltZSBva2F5Iik7CisJCX0KKwl9CisKKwlpZiAoc2V0dGltZSA9PSAzKSB7CisJCXRzLnR2X3NlYyA9IHNlY29uZHM7CisJCXRzLnR2X25zZWMgPSAwOworCQlpZiAoY2xvY2tfc2V0dGltZShjbGtpZCwgJnRzKSkgeworCQkJcGVycm9yKCJjbG9ja19zZXR0aW1lIik7CisJCX0gZWxzZSB7CisJCQlwdXRzKCJzZXQgdGltZSBva2F5Iik7CisJCX0KKwl9CisKKwlpZiAoZXh0dHMpIHsKKwkJbWVtc2V0KCZleHR0c19yZXF1ZXN0LCAwLCBzaXplb2YoZXh0dHNfcmVxdWVzdCkpOworCQlleHR0c19yZXF1ZXN0LmluZGV4ID0gaW5kZXg7CisJCWV4dHRzX3JlcXVlc3QuZmxhZ3MgPSBQVFBfRU5BQkxFX0ZFQVRVUkU7CisJCWlmIChpb2N0bChmZCwgUFRQX0VYVFRTX1JFUVVFU1QsICZleHR0c19yZXF1ZXN0KSkgeworCQkJcGVycm9yKCJQVFBfRVhUVFNfUkVRVUVTVCIpOworCQkJZXh0dHMgPSAwOworCQl9IGVsc2UgeworCQkJcHV0cygiZXh0ZXJuYWwgdGltZSBzdGFtcCByZXF1ZXN0IG9rYXkiKTsKKwkJfQorCQlmb3IgKDsgZXh0dHM7IGV4dHRzLS0pIHsKKwkJCWNudCA9IHJlYWQoZmQsICZldmVudCwgc2l6ZW9mKGV2ZW50KSk7CisJCQlpZiAoY250ICE9IHNpemVvZihldmVudCkpIHsKKwkJCQlwZXJyb3IoInJlYWQiKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCXByaW50ZigiZXZlbnQgaW5kZXggJXUgYXQgJWxsZC4lMDl1XG4iLCBldmVudC5pbmRleCwKKwkJCSAgICAgICBldmVudC50LnNlYywgZXZlbnQudC5uc2VjKTsKKwkJCWZmbHVzaChzdGRvdXQpOworCQl9CisJCS8qIERpc2FibGUgdGhlIGZlYXR1cmUgYWdhaW4uICovCisJCWV4dHRzX3JlcXVlc3QuZmxhZ3MgPSAwOworCQlpZiAoaW9jdGwoZmQsIFBUUF9FWFRUU19SRVFVRVNULCAmZXh0dHNfcmVxdWVzdCkpIHsKKwkJCXBlcnJvcigiUFRQX0VYVFRTX1JFUVVFU1QiKTsKKwkJfQorCX0KKworCWlmIChsaXN0X3BpbnMpIHsKKwkJaW50IG5fcGlucyA9IDA7CisJCWlmIChpb2N0bChmZCwgUFRQX0NMT0NLX0dFVENBUFMsICZjYXBzKSkgeworCQkJcGVycm9yKCJQVFBfQ0xPQ0tfR0VUQ0FQUyIpOworCQl9IGVsc2UgeworCQkJbl9waW5zID0gY2Fwcy5uX3BpbnM7CisJCX0KKwkJZm9yIChpID0gMDsgaSA8IG5fcGluczsgaSsrKSB7CisJCQlkZXNjLmluZGV4ID0gaTsKKwkJCWlmIChpb2N0bChmZCwgUFRQX1BJTl9HRVRGVU5DLCAmZGVzYykpIHsKKwkJCQlwZXJyb3IoIlBUUF9QSU5fR0VURlVOQyIpOworCQkJCWJyZWFrOworCQkJfQorCQkJcHJpbnRmKCJuYW1lICVzIGluZGV4ICV1IGZ1bmMgJXUgY2hhbiAldVxuIiwKKwkJCSAgICAgICBkZXNjLm5hbWUsIGRlc2MuaW5kZXgsIGRlc2MuZnVuYywgZGVzYy5jaGFuKTsKKwkJfQorCX0KKworCWlmIChvbmVzaG90KSB7CisJCWluc3RhbGxfaGFuZGxlcihTSUdBTFJNLCBoYW5kbGVfYWxhcm0pOworCQkvKiBDcmVhdGUgYSB0aW1lci4gKi8KKwkJc2lnZXZlbnQuc2lnZXZfbm90aWZ5ID0gU0lHRVZfU0lHTkFMOworCQlzaWdldmVudC5zaWdldl9zaWdubyA9IFNJR0FMUk07CisJCWlmICh0aW1lcl9jcmVhdGUoY2xraWQsICZzaWdldmVudCwgJnRpbWVyaWQpKSB7CisJCQlwZXJyb3IoInRpbWVyX2NyZWF0ZSIpOworCQkJcmV0dXJuIC0xOworCQl9CisJCS8qIFN0YXJ0IHRoZSB0aW1lci4gKi8KKwkJbWVtc2V0KCZ0aW1lb3V0LCAwLCBzaXplb2YodGltZW91dCkpOworCQl0aW1lb3V0Lml0X3ZhbHVlLnR2X3NlYyA9IG9uZXNob3Q7CisJCWlmICh0aW1lcl9zZXR0aW1lKHRpbWVyaWQsIDAsICZ0aW1lb3V0LCBOVUxMKSkgeworCQkJcGVycm9yKCJ0aW1lcl9zZXR0aW1lIik7CisJCQlyZXR1cm4gLTE7CisJCX0KKwkJcGF1c2UoKTsKKwkJdGltZXJfZGVsZXRlKHRpbWVyaWQpOworCX0KKworCWlmIChwZXJpb2RpYykgeworCQlpbnN0YWxsX2hhbmRsZXIoU0lHQUxSTSwgaGFuZGxlX2FsYXJtKTsKKwkJLyogQ3JlYXRlIGEgdGltZXIuICovCisJCXNpZ2V2ZW50LnNpZ2V2X25vdGlmeSA9IFNJR0VWX1NJR05BTDsKKwkJc2lnZXZlbnQuc2lnZXZfc2lnbm8gPSBTSUdBTFJNOworCQlpZiAodGltZXJfY3JlYXRlKGNsa2lkLCAmc2lnZXZlbnQsICZ0aW1lcmlkKSkgeworCQkJcGVycm9yKCJ0aW1lcl9jcmVhdGUiKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCQkvKiBTdGFydCB0aGUgdGltZXIuICovCisJCW1lbXNldCgmdGltZW91dCwgMCwgc2l6ZW9mKHRpbWVvdXQpKTsKKwkJdGltZW91dC5pdF9pbnRlcnZhbC50dl9zZWMgPSBwZXJpb2RpYzsKKwkJdGltZW91dC5pdF92YWx1ZS50dl9zZWMgPSBwZXJpb2RpYzsKKwkJaWYgKHRpbWVyX3NldHRpbWUodGltZXJpZCwgMCwgJnRpbWVvdXQsIE5VTEwpKSB7CisJCQlwZXJyb3IoInRpbWVyX3NldHRpbWUiKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCQl3aGlsZSAoMSkgeworCQkJcGF1c2UoKTsKKwkJfQorCQl0aW1lcl9kZWxldGUodGltZXJpZCk7CisJfQorCisJaWYgKHBlcm91dCA+PSAwKSB7CisJCWlmIChjbG9ja19nZXR0aW1lKGNsa2lkLCAmdHMpKSB7CisJCQlwZXJyb3IoImNsb2NrX2dldHRpbWUiKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCQltZW1zZXQoJnBlcm91dF9yZXF1ZXN0LCAwLCBzaXplb2YocGVyb3V0X3JlcXVlc3QpKTsKKwkJcGVyb3V0X3JlcXVlc3QuaW5kZXggPSBpbmRleDsKKwkJcGVyb3V0X3JlcXVlc3Quc3RhcnQuc2VjID0gdHMudHZfc2VjICsgMjsKKwkJcGVyb3V0X3JlcXVlc3Quc3RhcnQubnNlYyA9IDA7CisJCXBlcm91dF9yZXF1ZXN0LnBlcmlvZC5zZWMgPSAwOworCQlwZXJvdXRfcmVxdWVzdC5wZXJpb2QubnNlYyA9IHBlcm91dDsKKwkJaWYgKGlvY3RsKGZkLCBQVFBfUEVST1VUX1JFUVVFU1QsICZwZXJvdXRfcmVxdWVzdCkpIHsKKwkJCXBlcnJvcigiUFRQX1BFUk9VVF9SRVFVRVNUIik7CisJCX0gZWxzZSB7CisJCQlwdXRzKCJwZXJpb2RpYyBvdXRwdXQgcmVxdWVzdCBva2F5Iik7CisJCX0KKwl9CisKKwlpZiAocGluX2luZGV4ID49IDApIHsKKwkJbWVtc2V0KCZkZXNjLCAwLCBzaXplb2YoZGVzYykpOworCQlkZXNjLmluZGV4ID0gcGluX2luZGV4OworCQlkZXNjLmZ1bmMgPSBwaW5fZnVuYzsKKwkJZGVzYy5jaGFuID0gaW5kZXg7CisJCWlmIChpb2N0bChmZCwgUFRQX1BJTl9TRVRGVU5DLCAmZGVzYykpIHsKKwkJCXBlcnJvcigiUFRQX1BJTl9TRVRGVU5DIik7CisJCX0gZWxzZSB7CisJCQlwdXRzKCJzZXQgcGluIGZ1bmN0aW9uIG9rYXkiKTsKKwkJfQorCX0KKworCWlmIChwcHMgIT0gLTEpIHsKKwkJaW50IGVuYWJsZSA9IHBwcyA/IDEgOiAwOworCQlpZiAoaW9jdGwoZmQsIFBUUF9FTkFCTEVfUFBTLCBlbmFibGUpKSB7CisJCQlwZXJyb3IoIlBUUF9FTkFCTEVfUFBTIik7CisJCX0gZWxzZSB7CisJCQlwdXRzKCJwcHMgZm9yIHN5c3RlbSB0aW1lIHJlcXVlc3Qgb2theSIpOworCQl9CisJfQorCisJaWYgKHBjdF9vZmZzZXQpIHsKKwkJaWYgKG5fc2FtcGxlcyA8PSAwIHx8IG5fc2FtcGxlcyA+IDI1KSB7CisJCQlwdXRzKCJuX3NhbXBsZXMgc2hvdWxkIGJlIGJldHdlZW4gMSBhbmQgMjUiKTsKKwkJCXVzYWdlKHByb2duYW1lKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCisJCXN5c29mZiA9IGNhbGxvYygxLCBzaXplb2YoKnN5c29mZikpOworCQlpZiAoIXN5c29mZikgeworCQkJcGVycm9yKCJjYWxsb2MiKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCQlzeXNvZmYtPm5fc2FtcGxlcyA9IG5fc2FtcGxlczsKKworCQlpZiAoaW9jdGwoZmQsIFBUUF9TWVNfT0ZGU0VULCBzeXNvZmYpKQorCQkJcGVycm9yKCJQVFBfU1lTX09GRlNFVCIpOworCQllbHNlCisJCQlwdXRzKCJzeXN0ZW0gYW5kIHBoYyBjbG9jayB0aW1lIG9mZnNldCByZXF1ZXN0IG9rYXkiKTsKKworCQlwY3QgPSAmc3lzb2ZmLT50c1swXTsKKwkJZm9yIChpID0gMDsgaSA8IHN5c29mZi0+bl9zYW1wbGVzOyBpKyspIHsKKwkJCXQxID0gcGN0bnMocGN0KzIqaSk7CisJCQl0cCA9IHBjdG5zKHBjdCsyKmkrMSk7CisJCQl0MiA9IHBjdG5zKHBjdCsyKmkrMik7CisJCQlpbnRlcnZhbCA9IHQyIC0gdDE7CisJCQlvZmZzZXQgPSAodDIgKyB0MSkgLyAyIC0gdHA7CisKKwkJCXByaW50Zigic3lzdGVtIHRpbWU6ICVsbGQuJXVcbiIsCisJCQkJKHBjdCsyKmkpLT5zZWMsIChwY3QrMippKS0+bnNlYyk7CisJCQlwcmludGYoInBoYyAgICB0aW1lOiAlbGxkLiV1XG4iLAorCQkJCShwY3QrMippKzEpLT5zZWMsIChwY3QrMippKzEpLT5uc2VjKTsKKwkJCXByaW50Zigic3lzdGVtIHRpbWU6ICVsbGQuJXVcbiIsCisJCQkJKHBjdCsyKmkrMiktPnNlYywgKHBjdCsyKmkrMiktPm5zZWMpOworCQkJcHJpbnRmKCJzeXN0ZW0vcGhjIGNsb2NrIHRpbWUgb2Zmc2V0IGlzICUiIFBSSWQ2NCAiIG5zXG4iCisJCQkgICAgICAgInN5c3RlbSAgICAgY2xvY2sgdGltZSBkZWxheSAgaXMgJSIgUFJJZDY0ICIgbnNcbiIsCisJCQkJb2Zmc2V0LCBpbnRlcnZhbCk7CisJCX0KKworCQlmcmVlKHN5c29mZik7CisJfQorCisJY2xvc2UoZmQpOworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wdHAvdGVzdHB0cC5tayBiL0RvY3VtZW50YXRpb24vcHRwL3Rlc3RwdHAubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVmMmQ5NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcHRwL3Rlc3RwdHAubWsKQEAgLTAsMCArMSwzMyBAQAorIyBQVFAgMTU4OCBjbG9jayBzdXBwb3J0IC0gVXNlciBzcGFjZSB0ZXN0IHByb2dyYW0KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEwIE9NSUNST04gZWxlY3Ryb25pY3MgR21iSAorIworIyAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorCitDQyAgICAgICAgPSAkKENST1NTX0NPTVBJTEUpZ2NjCitJTkMgICAgICAgPSAtSSQoS0JVSUxEX09VVFBVVCkvdXNyL2luY2x1ZGUKK0NGTEFHUyAgICA9IC1XYWxsICQoSU5DKQorTERMSUJTICAgID0gLWxydAorUFJPR1MgICAgID0gdGVzdHB0cAorCithbGw6ICQoUFJPR1MpCisKK3Rlc3RwdHA6IHRlc3RwdHAubworCitjbGVhbjoKKwlybSAtZiB0ZXN0cHRwLm8KKworZGlzdGNsZWFuOiBjbGVhbgorCXJtIC1mICQoUFJPR1MpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3B3bS50eHQgYi9Eb2N1bWVudGF0aW9uL3B3bS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E4OTVmZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcHdtLnR4dApAQCAtMCwwICsxLDEyMiBAQAorUHVsc2UgV2lkdGggTW9kdWxhdGlvbiAoUFdNKSBpbnRlcmZhY2UKKworVGhpcyBwcm92aWRlcyBhbiBvdmVydmlldyBhYm91dCB0aGUgTGludXggUFdNIGludGVyZmFjZQorCitQV01zIGFyZSBjb21tb25seSB1c2VkIGZvciBjb250cm9sbGluZyBMRURzLCBmYW5zIG9yIHZpYnJhdG9ycyBpbgorY2VsbCBwaG9uZXMuIFBXTXMgd2l0aCBhIGZpeGVkIHB1cnBvc2UgaGF2ZSBubyBuZWVkIGltcGxlbWVudGluZwordGhlIExpbnV4IFBXTSBBUEkgKGFsdGhvdWdoIHRoZXkgY291bGQpLiBIb3dldmVyLCBQV01zIGFyZSBvZnRlbgorZm91bmQgYXMgZGlzY3JldGUgZGV2aWNlcyBvbiBTb0NzIHdoaWNoIGhhdmUgbm8gZml4ZWQgcHVycG9zZS4gSXQncwordXAgdG8gdGhlIGJvYXJkIGRlc2lnbmVyIHRvIGNvbm5lY3QgdGhlbSB0byBMRURzIG9yIGZhbnMuIFRvIHByb3ZpZGUKK3RoaXMga2luZCBvZiBmbGV4aWJpbGl0eSB0aGUgZ2VuZXJpYyBQV00gQVBJIGV4aXN0cy4KKworSWRlbnRpZnlpbmcgUFdNcworLS0tLS0tLS0tLS0tLS0tLQorCitVc2VycyBvZiB0aGUgbGVnYWN5IFBXTSBBUEkgdXNlIHVuaXF1ZSBJRHMgdG8gcmVmZXIgdG8gUFdNIGRldmljZXMuCisKK0luc3RlYWQgb2YgcmVmZXJyaW5nIHRvIGEgUFdNIGRldmljZSB2aWEgaXRzIHVuaXF1ZSBJRCwgYm9hcmQgc2V0dXAgY29kZQorc2hvdWxkIGluc3RlYWQgcmVnaXN0ZXIgYSBzdGF0aWMgbWFwcGluZyB0aGF0IGNhbiBiZSB1c2VkIHRvIG1hdGNoIFBXTQorY29uc3VtZXJzIHRvIHByb3ZpZGVycywgYXMgZ2l2ZW4gaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlOgorCisJc3RhdGljIHN0cnVjdCBwd21fbG9va3VwIGJvYXJkX3B3bV9sb29rdXBbXSA9IHsKKwkJUFdNX0xPT0tVUCgidGVncmEtcHdtIiwgMCwgInB3bS1iYWNrbGlnaHQiLCBOVUxMLAorCQkJICAgNTAwMDAsIFBXTV9QT0xBUklUWV9OT1JNQUwpLAorCX07CisKKwlzdGF0aWMgdm9pZCBfX2luaXQgYm9hcmRfaW5pdCh2b2lkKQorCXsKKwkJLi4uCisJCXB3bV9hZGRfdGFibGUoYm9hcmRfcHdtX2xvb2t1cCwgQVJSQVlfU0laRShib2FyZF9wd21fbG9va3VwKSk7CisJCS4uLgorCX0KKworVXNpbmcgUFdNcworLS0tLS0tLS0tLQorCitMZWdhY3kgdXNlcnMgY2FuIHJlcXVlc3QgYSBQV00gZGV2aWNlIHVzaW5nIHB3bV9yZXF1ZXN0KCkgYW5kIGZyZWUgaXQKK2FmdGVyIHVzYWdlIHdpdGggcHdtX2ZyZWUoKS4KKworTmV3IHVzZXJzIHNob3VsZCB1c2UgdGhlIHB3bV9nZXQoKSBmdW5jdGlvbiBhbmQgcGFzcyB0byBpdCB0aGUgY29uc3VtZXIKK2RldmljZSBvciBhIGNvbnN1bWVyIG5hbWUuIHB3bV9wdXQoKSBpcyB1c2VkIHRvIGZyZWUgdGhlIFBXTSBkZXZpY2UuIE1hbmFnZWQKK3ZhcmlhbnRzIG9mIHRoZXNlIGZ1bmN0aW9ucywgZGV2bV9wd21fZ2V0KCkgYW5kIGRldm1fcHdtX3B1dCgpLCBhbHNvIGV4aXN0LgorCitBZnRlciBiZWluZyByZXF1ZXN0ZWQsIGEgUFdNIGhhcyB0byBiZSBjb25maWd1cmVkIHVzaW5nOgorCitpbnQgcHdtX2NvbmZpZyhzdHJ1Y3QgcHdtX2RldmljZSAqcHdtLCBpbnQgZHV0eV9ucywgaW50IHBlcmlvZF9ucyk7CisKK1RvIHN0YXJ0L3N0b3AgdG9nZ2xpbmcgdGhlIFBXTSBvdXRwdXQgdXNlIHB3bV9lbmFibGUoKS9wd21fZGlzYWJsZSgpLgorCitVc2luZyBQV01zIHdpdGggdGhlIHN5c2ZzIGludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgQ09ORklHX1NZU0ZTIGlzIGVuYWJsZWQgaW4geW91ciBrZXJuZWwgY29uZmlndXJhdGlvbiBhIHNpbXBsZSBzeXNmcworaW50ZXJmYWNlIGlzIHByb3ZpZGVkIHRvIHVzZSB0aGUgUFdNcyBmcm9tIHVzZXJzcGFjZS4gSXQgaXMgZXhwb3NlZCBhdAorL3N5cy9jbGFzcy9wd20vLiBFYWNoIHByb2JlZCBQV00gY29udHJvbGxlci9jaGlwIHdpbGwgYmUgZXhwb3J0ZWQgYXMKK3B3bWNoaXBOLCB3aGVyZSBOIGlzIHRoZSBiYXNlIG9mIHRoZSBQV00gY2hpcC4gSW5zaWRlIHRoZSBkaXJlY3RvcnkgeW91Cit3aWxsIGZpbmQ6CisKK25wd20gLSBUaGUgbnVtYmVyIG9mIFBXTSBjaGFubmVscyB0aGlzIGNoaXAgc3VwcG9ydHMgKHJlYWQtb25seSkuCisKK2V4cG9ydCAtIEV4cG9ydHMgYSBQV00gY2hhbm5lbCBmb3IgdXNlIHdpdGggc3lzZnMgKHdyaXRlLW9ubHkpLgorCit1bmV4cG9ydCAtIFVuZXhwb3J0cyBhIFBXTSBjaGFubmVsIGZyb20gc3lzZnMgKHdyaXRlLW9ubHkpLgorCitUaGUgUFdNIGNoYW5uZWxzIGFyZSBudW1iZXJlZCB1c2luZyBhIHBlci1jaGlwIGluZGV4IGZyb20gMCB0byBucHdtLTEuCisKK1doZW4gYSBQV00gY2hhbm5lbCBpcyBleHBvcnRlZCBhIHB3bVggZGlyZWN0b3J5IHdpbGwgYmUgY3JlYXRlZCBpbiB0aGUKK3B3bWNoaXBOIGRpcmVjdG9yeSBpdCBpcyBhc3NvY2lhdGVkIHdpdGgsIHdoZXJlIFggaXMgdGhlIG51bWJlciBvZiB0aGUKK2NoYW5uZWwgdGhhdCB3YXMgZXhwb3J0ZWQuIFRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyB3aWxsIHRoZW4gYmUgYXZhaWxhYmxlOgorCitwZXJpb2QgLSBUaGUgdG90YWwgcGVyaW9kIG9mIHRoZSBQV00gc2lnbmFsIChyZWFkL3dyaXRlKS4KKwlWYWx1ZSBpcyBpbiBuYW5vc2Vjb25kcyBhbmQgaXMgdGhlIHN1bSBvZiB0aGUgYWN0aXZlIGFuZCBpbmFjdGl2ZQorCXRpbWUgb2YgdGhlIFBXTS4KKworZHV0eV9jeWNsZSAtIFRoZSBhY3RpdmUgdGltZSBvZiB0aGUgUFdNIHNpZ25hbCAocmVhZC93cml0ZSkuCisJVmFsdWUgaXMgaW4gbmFub3NlY29uZHMgYW5kIG11c3QgYmUgbGVzcyB0aGFuIHRoZSBwZXJpb2QuCisKK3BvbGFyaXR5IC0gQ2hhbmdlcyB0aGUgcG9sYXJpdHkgb2YgdGhlIFBXTSBzaWduYWwgKHJlYWQvd3JpdGUpLgorCVdyaXRlcyB0byB0aGlzIHByb3BlcnR5IG9ubHkgd29yayBpZiB0aGUgUFdNIGNoaXAgc3VwcG9ydHMgY2hhbmdpbmcKKwl0aGUgcG9sYXJpdHkuIFRoZSBwb2xhcml0eSBjYW4gb25seSBiZSBjaGFuZ2VkIGlmIHRoZSBQV00gaXMgbm90CisJZW5hYmxlZC4gVmFsdWUgaXMgdGhlIHN0cmluZyAibm9ybWFsIiBvciAiaW52ZXJzZWQiLgorCitlbmFibGUgLSBFbmFibGUvZGlzYWJsZSB0aGUgUFdNIHNpZ25hbCAocmVhZC93cml0ZSkuCisJMCAtIGRpc2FibGVkCisJMSAtIGVuYWJsZWQKKworSW1wbGVtZW50aW5nIGEgUFdNIGRyaXZlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDdXJyZW50bHkgdGhlcmUgYXJlIHR3byB3YXlzIHRvIGltcGxlbWVudCBwd20gZHJpdmVycy4gVHJhZGl0aW9uYWxseQordGhlcmUgb25seSBoYXMgYmVlbiB0aGUgYmFyZWJvbmUgQVBJIG1lYW5pbmcgdGhhdCBlYWNoIGRyaXZlciBoYXMKK3RvIGltcGxlbWVudCB0aGUgcHdtXyooKSBmdW5jdGlvbnMgaXRzZWxmLiBUaGlzIG1lYW5zIHRoYXQgaXQncyBpbXBvc3NpYmxlCit0byBoYXZlIG11bHRpcGxlIFBXTSBkcml2ZXJzIGluIHRoZSBzeXN0ZW0uIEZvciB0aGlzIHJlYXNvbiBpdCdzIG1hbmRhdG9yeQorZm9yIG5ldyBkcml2ZXJzIHRvIHVzZSB0aGUgZ2VuZXJpYyBQV00gZnJhbWV3b3JrLgorCitBIG5ldyBQV00gY29udHJvbGxlci9jaGlwIGNhbiBiZSBhZGRlZCB1c2luZyBwd21jaGlwX2FkZCgpIGFuZCByZW1vdmVkCithZ2FpbiB3aXRoIHB3bWNoaXBfcmVtb3ZlKCkuIHB3bWNoaXBfYWRkKCkgdGFrZXMgYSBmaWxsZWQgaW4gc3RydWN0Citwd21fY2hpcCBhcyBhcmd1bWVudCB3aGljaCBwcm92aWRlcyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBQV00gY2hpcCwgdGhlCitudW1iZXIgb2YgUFdNIGRldmljZXMgcHJvdmlkZWQgYnkgdGhlIGNoaXAgYW5kIHRoZSBjaGlwLXNwZWNpZmljCitpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3VwcG9ydGVkIFBXTSBvcGVyYXRpb25zIHRvIHRoZSBmcmFtZXdvcmsuCisKK1doZW4gaW1wbGVtZW50aW5nIHBvbGFyaXR5IHN1cHBvcnQgaW4gYSBQV00gZHJpdmVyLCBtYWtlIHN1cmUgdG8gcmVzcGVjdCB0aGUKK3NpZ25hbCBjb252ZW50aW9ucyBpbiB0aGUgUFdNIGZyYW1ld29yay4gQnkgZGVmaW5pdGlvbiwgbm9ybWFsIHBvbGFyaXR5CitjaGFyYWN0ZXJpemVzIGEgc2lnbmFsIHN0YXJ0cyBoaWdoIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGR1dHkgY3ljbGUgYW5kCitnb2VzIGxvdyBmb3IgdGhlIHJlbWFpbmRlciBvZiB0aGUgcGVyaW9kLiBDb252ZXJzZWx5LCBhIHNpZ25hbCB3aXRoIGludmVyc2VkCitwb2xhcml0eSBzdGFydHMgbG93IGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGR1dHkgY3ljbGUgYW5kIGdvZXMgaGlnaCBmb3IgdGhlCityZW1haW5kZXIgb2YgdGhlIHBlcmlvZC4KKworTG9ja2luZworLS0tLS0tLQorCitUaGUgUFdNIGNvcmUgbGlzdCBtYW5pcHVsYXRpb25zIGFyZSBwcm90ZWN0ZWQgYnkgYSBtdXRleCwgc28gcHdtX3JlcXVlc3QoKQorYW5kIHB3bV9mcmVlKCkgbWF5IG5vdCBiZSBjYWxsZWQgZnJvbSBhbiBhdG9taWMgY29udGV4dC4gQ3VycmVudGx5IHRoZQorUFdNIGNvcmUgZG9lcyBub3QgZW5mb3JjZSBhbnkgbG9ja2luZyB0byBwd21fZW5hYmxlKCksIHB3bV9kaXNhYmxlKCkgYW5kCitwd21fY29uZmlnKCksIHNvIHRoZSBjYWxsaW5nIGNvbnRleHQgaXMgY3VycmVudGx5IGRyaXZlciBzcGVjaWZpYy4gVGhpcworaXMgYW4gaXNzdWUgZGVyaXZlZCBmcm9tIHRoZSBmb3JtZXIgYmFyZWJvbmUgQVBJIGFuZCBzaG91bGQgYmUgZml4ZWQgc29vbi4KKworSGVscGVycworLS0tLS0tLQorCitDdXJyZW50bHkgYSBQV00gY2FuIG9ubHkgYmUgY29uZmlndXJlZCB3aXRoIHBlcmlvZF9ucyBhbmQgZHV0eV9ucy4gRm9yIHNldmVyYWwKK3VzZSBjYXNlcyBmcmVxX2h6IGFuZCBkdXR5X3BlcmNlbnQgbWlnaHQgYmUgYmV0dGVyLiBJbnN0ZWFkIG9mIGNhbGN1bGF0aW5nCit0aGlzIGluIHlvdXIgZHJpdmVyIHBsZWFzZSBjb25zaWRlciBhZGRpbmcgYXBwcm9wcmlhdGUgaGVscGVycyB0byB0aGUgZnJhbWV3b3JrLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9yYW1vb3BzLnR4dCBiL0RvY3VtZW50YXRpb24vcmFtb29wcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ4Njc1NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcmFtb29wcy50eHQKQEAgLTAsMCArMSwxMjggQEAKK1JhbW9vcHMgb29wcy9wYW5pYyBsb2dnZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworU2VyZ2l1IElvcmRhY2hlIDxzZXJnaXVAY2hyb21pdW0ub3JnPgorCitVcGRhdGVkOiAxNyBOb3ZlbWJlciAyMDExCisKKzAuIEludHJvZHVjdGlvbgorCitSYW1vb3BzIGlzIGFuIG9vcHMvcGFuaWMgbG9nZ2VyIHRoYXQgd3JpdGVzIGl0cyBsb2dzIHRvIFJBTSBiZWZvcmUgdGhlIHN5c3RlbQorY3Jhc2hlcy4gSXQgd29ya3MgYnkgbG9nZ2luZyBvb3BzZXMgYW5kIHBhbmljcyBpbiBhIGNpcmN1bGFyIGJ1ZmZlci4gUmFtb29wcworbmVlZHMgYSBzeXN0ZW0gd2l0aCBwZXJzaXN0ZW50IFJBTSBzbyB0aGF0IHRoZSBjb250ZW50IG9mIHRoYXQgYXJlYSBjYW4KK3N1cnZpdmUgYWZ0ZXIgYSByZXN0YXJ0LgorCisxLiBSYW1vb3BzIGNvbmNlcHRzCisKK1JhbW9vcHMgdXNlcyBhIHByZWRlZmluZWQgbWVtb3J5IGFyZWEgdG8gc3RvcmUgdGhlIGR1bXAuIFRoZSBzdGFydCBhbmQgc2l6ZQorYW5kIHR5cGUgb2YgdGhlIG1lbW9yeSBhcmVhIGFyZSBzZXQgdXNpbmcgdGhyZWUgdmFyaWFibGVzOgorICAqICJtZW1fYWRkcmVzcyIgZm9yIHRoZSBzdGFydAorICAqICJtZW1fc2l6ZSIgZm9yIHRoZSBzaXplLiBUaGUgbWVtb3J5IHNpemUgd2lsbCBiZSByb3VuZGVkIGRvd24gdG8gYQorICBwb3dlciBvZiB0d28uCisgICogIm1lbV90eXBlIiB0byBzcGVjaWZpeSBpZiB0aGUgbWVtb3J5IHR5cGUgKGRlZmF1bHQgaXMgcGdwcm90X3dyaXRlY29tYmluZSkuCisKK1R5cGljYWxseSB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBtZW1fdHlwZT0wIHNob3VsZCBiZSB1c2VkIGFzIHRoYXQgc2V0cyB0aGUgcHN0b3JlCittYXBwaW5nIHRvIHBncHJvdF93cml0ZWNvbWJpbmUuIFNldHRpbmcgbWVtX3R5cGU9MSBhdHRlbXB0cyB0byB1c2UKK3BncHJvdF9ub25jYWNoZWQsIHdoaWNoIG9ubHkgd29ya3Mgb24gc29tZSBwbGF0Zm9ybXMuIFRoaXMgaXMgYmVjYXVzZSBwc3RvcmUKK2RlcGVuZHMgb24gYXRvbWljIG9wZXJhdGlvbnMuIEF0IGxlYXN0IG9uIEFSTSwgcGdwcm90X25vbmNhY2hlZCBjYXVzZXMgdGhlCittZW1vcnkgdG8gYmUgbWFwcGVkIHN0cm9uZ2x5IG9yZGVyZWQsIGFuZCBhdG9taWMgb3BlcmF0aW9ucyBvbiBzdHJvbmdseSBvcmRlcmVkCittZW1vcnkgYXJlIGltcGxlbWVudGF0aW9uIGRlZmluZWQsIGFuZCB3b24ndCB3b3JrIG9uIG1hbnkgQVJNcyBzdWNoIGFzIG9tYXBzLgorCitUaGUgbWVtb3J5IGFyZWEgaXMgZGl2aWRlZCBpbnRvICJyZWNvcmRfc2l6ZSIgY2h1bmtzIChhbHNvIHJvdW5kZWQgZG93biB0bworcG93ZXIgb2YgdHdvKSBhbmQgZWFjaCBvb3BzL3BhbmljIHdyaXRlcyBhICJyZWNvcmRfc2l6ZSIgY2h1bmsgb2YKK2luZm9ybWF0aW9uLgorCitEdW1waW5nIGJvdGggb29wc2VzIGFuZCBwYW5pY3MgY2FuIGJlIGRvbmUgYnkgc2V0dGluZyAxIGluIHRoZSAiZHVtcF9vb3BzIgordmFyaWFibGUgd2hpbGUgc2V0dGluZyAwIGluIHRoYXQgdmFyaWFibGUgZHVtcHMgb25seSB0aGUgcGFuaWNzLgorCitUaGUgbW9kdWxlIHVzZXMgYSBjb3VudGVyIHRvIHJlY29yZCBtdWx0aXBsZSBkdW1wcyBidXQgdGhlIGNvdW50ZXIgZ2V0cyByZXNldAorb24gcmVzdGFydCAoaS5lLiBuZXcgZHVtcHMgYWZ0ZXIgdGhlIHJlc3RhcnQgd2lsbCBvdmVyd3JpdGUgb2xkIG9uZXMpLgorCitSYW1vb3BzIGFsc28gc3VwcG9ydHMgc29mdHdhcmUgRUNDIHByb3RlY3Rpb24gb2YgcGVyc2lzdGVudCBtZW1vcnkgcmVnaW9ucy4KK1RoaXMgbWlnaHQgYmUgdXNlZnVsIHdoZW4gYSBoYXJkd2FyZSByZXNldCB3YXMgdXNlZCB0byBicmluZyB0aGUgbWFjaGluZSBiYWNrCit0byBsaWZlIChpLmUuIGEgd2F0Y2hkb2cgdHJpZ2dlcmVkKS4gSW4gc3VjaCBjYXNlcywgUkFNIG1heSBiZSBzb21ld2hhdAorY29ycnVwdCwgYnV0IHVzdWFsbHkgaXQgaXMgcmVzdG9yYWJsZS4KKworMi4gU2V0dGluZyB0aGUgcGFyYW1ldGVycworCitTZXR0aW5nIHRoZSByYW1vb3BzIHBhcmFtZXRlcnMgY2FuIGJlIGRvbmUgaW4gMiBkaWZmZXJlbnQgbWFubmVyczoKKyAxLiBVc2UgdGhlIG1vZHVsZSBwYXJhbWV0ZXJzICh3aGljaCBoYXZlIHRoZSBuYW1lcyBvZiB0aGUgdmFyaWFibGVzIGRlc2NyaWJlZAorIGFzIGJlZm9yZSkuCisgRm9yIHF1aWNrIGRlYnVnZ2luZywgeW91IGNhbiBhbHNvIHJlc2VydmUgcGFydHMgb2YgbWVtb3J5IGR1cmluZyBib290CisgYW5kIHRoZW4gdXNlIHRoZSByZXNlcnZlZCBtZW1vcnkgZm9yIHJhbW9vcHMuIEZvciBleGFtcGxlLCBhc3N1bWluZyBhIG1hY2hpbmUKKyB3aXRoID4gMTI4IE1CIG9mIG1lbW9yeSwgdGhlIGZvbGxvd2luZyBrZXJuZWwgY29tbWFuZCBsaW5lIHdpbGwgdGVsbCB0aGUKKyBrZXJuZWwgdG8gdXNlIG9ubHkgdGhlIGZpcnN0IDEyOCBNQiBvZiBtZW1vcnksIGFuZCBwbGFjZSBFQ0MtcHJvdGVjdGVkIHJhbW9vcHMKKyByZWdpb24gYXQgMTI4IE1CIGJvdW5kYXJ5OgorICJtZW09MTI4TSByYW1vb3BzLm1lbV9hZGRyZXNzPTB4ODAwMDAwMCByYW1vb3BzLmVjYz0xIgorIDIuIFVzZSBhIHBsYXRmb3JtIGRldmljZSBhbmQgc2V0IHRoZSBwbGF0Zm9ybSBkYXRhLiBUaGUgcGFyYW1ldGVycyBjYW4gdGhlbgorIGJlIHNldCB0aHJvdWdoIHRoYXQgcGxhdGZvcm0gZGF0YS4gQW4gZXhhbXBsZSBvZiBkb2luZyB0aGF0IGlzOgorCisjaW5jbHVkZSA8bGludXgvcHN0b3JlX3JhbS5oPgorWy4uLl0KKworc3RhdGljIHN0cnVjdCByYW1vb3BzX3BsYXRmb3JtX2RhdGEgcmFtb29wc19kYXRhID0geworICAgICAgICAubWVtX3NpemUgICAgICAgICAgICAgICA9IDwuLi4+LAorICAgICAgICAubWVtX2FkZHJlc3MgICAgICAgICAgICA9IDwuLi4+LAorICAgICAgICAubWVtX3R5cGUgICAgICAgICAgICAgICA9IDwuLi4+LAorICAgICAgICAucmVjb3JkX3NpemUgICAgICAgICAgICA9IDwuLi4+LAorICAgICAgICAuZHVtcF9vb3BzICAgICAgICAgICAgICA9IDwuLi4+LAorICAgICAgICAuZWNjICAgICAgICAgICAgICAgICAgICA9IDwuLi4+LAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgcmFtb29wc19kZXYgPSB7CisgICAgICAgIC5uYW1lID0gInJhbW9vcHMiLAorICAgICAgICAuZGV2ID0geworICAgICAgICAgICAgICAgIC5wbGF0Zm9ybV9kYXRhID0gJnJhbW9vcHNfZGF0YSwKKyAgICAgICAgfSwKK307CisKK1suLi4gaW5zaWRlIGEgZnVuY3Rpb24gLi4uXQoraW50IHJldDsKKworcmV0ID0gcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZyYW1vb3BzX2Rldik7CitpZiAocmV0KSB7CisJcHJpbnRrKEtFUk5fRVJSICJ1bmFibGUgdG8gcmVnaXN0ZXIgcGxhdGZvcm0gZGV2aWNlXG4iKTsKKwlyZXR1cm4gcmV0OworfQorCitZb3UgY2FuIHNwZWNpZnkgZWl0aGVyIFJBTSBtZW1vcnkgb3IgcGVyaXBoZXJhbCBkZXZpY2VzJyBtZW1vcnkuIEhvd2V2ZXIsIHdoZW4KK3NwZWNpZnlpbmcgUkFNLCBiZSBzdXJlIHRvIHJlc2VydmUgdGhlIG1lbW9yeSBieSBpc3N1aW5nIG1lbWJsb2NrX3Jlc2VydmUoKQordmVyeSBlYXJseSBpbiB0aGUgYXJjaGl0ZWN0dXJlIGNvZGUsIGUuZy46CisKKyNpbmNsdWRlIDxsaW51eC9tZW1ibG9jay5oPgorCittZW1ibG9ja19yZXNlcnZlKHJhbW9vcHNfZGF0YS5tZW1fYWRkcmVzcywgcmFtb29wc19kYXRhLm1lbV9zaXplKTsKKworMy4gRHVtcCBmb3JtYXQKKworVGhlIGRhdGEgZHVtcCBiZWdpbnMgd2l0aCBhIGhlYWRlciwgY3VycmVudGx5IGRlZmluZWQgYXMgIj09PT0iIGZvbGxvd2VkIGJ5IGEKK3RpbWVzdGFtcCBhbmQgYSBuZXcgbGluZS4gVGhlIGR1bXAgdGhlbiBjb250aW51ZXMgd2l0aCB0aGUgYWN0dWFsIGRhdGEuCisKKzQuIFJlYWRpbmcgdGhlIGRhdGEKKworVGhlIGR1bXAgZGF0YSBjYW4gYmUgcmVhZCBmcm9tIHRoZSBwc3RvcmUgZmlsZXN5c3RlbS4gVGhlIGZvcm1hdCBmb3IgdGhlc2UKK2ZpbGVzIGlzICJkbWVzZy1yYW1vb3BzLU4iLCB3aGVyZSBOIGlzIHRoZSByZWNvcmQgbnVtYmVyIGluIG1lbW9yeS4gVG8gZGVsZXRlCithIHN0b3JlZCByZWNvcmQgZnJvbSBSQU0sIHNpbXBseSB1bmxpbmsgdGhlIHJlc3BlY3RpdmUgcHN0b3JlIGZpbGUuCisKKzUuIFBlcnNpc3RlbnQgZnVuY3Rpb24gdHJhY2luZworCitQZXJzaXN0ZW50IGZ1bmN0aW9uIHRyYWNpbmcgbWlnaHQgYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgc29mdHdhcmUgb3IgaGFyZHdhcmUKK3JlbGF0ZWQgaGFuZ3MuIFRoZSBmdW5jdGlvbnMgY2FsbCBjaGFpbiBsb2cgaXMgc3RvcmVkIGluIGEgImZ0cmFjZS1yYW1vb3BzIgorZmlsZS4gSGVyZSBpcyBhbiBleGFtcGxlIG9mIHVzYWdlOgorCisgIyBtb3VudCAtdCBkZWJ1Z2ZzIGRlYnVnZnMgL3N5cy9rZXJuZWwvZGVidWcvCisgIyBlY2hvIDEgPiAvc3lzL2tlcm5lbC9kZWJ1Zy9wc3RvcmUvcmVjb3JkX2Z0cmFjZQorICMgcmVib290IC1mCisgWy4uLl0KKyAjIG1vdW50IC10IHBzdG9yZSBwc3RvcmUgL21udC8KKyAjIHRhaWwgL21udC9mdHJhY2UtcmFtb29wcworIDAgZmZmZmZmZmY4MTAxZWE2NCAgZmZmZmZmZmY4MTAxYmNkYSAgbmF0aXZlX2FwaWNfbWVtX3JlYWQgPC0gZGlzY29ubmVjdF9ic3BfQVBJQysweDZhLzB4YzAKKyAwIGZmZmZmZmZmODEwMWVhNDQgIGZmZmZmZmZmODEwMWJjZjYgIG5hdGl2ZV9hcGljX21lbV93cml0ZSA8LSBkaXNjb25uZWN0X2JzcF9BUElDKzB4ODYvMHhjMAorIDAgZmZmZmZmZmY4MTAyMDA4NCAgZmZmZmZmZmY4MTAxYTRiNSAgaHBldF9kaXNhYmxlIDwtIG5hdGl2ZV9tYWNoaW5lX3NodXRkb3duKzB4NzUvMHg5MAorIDAgZmZmZmZmZmY4MTAwNWY5NCAgZmZmZmZmZmY4MTAxYTRiYiAgaW9tbXVfc2h1dGRvd25fbm9vcCA8LSBuYXRpdmVfbWFjaGluZV9zaHV0ZG93bisweDdiLzB4OTAKKyAwIGZmZmZmZmZmODEwMWE2YTEgIGZmZmZmZmZmODEwMWE0MzcgIG5hdGl2ZV9tYWNoaW5lX2VtZXJnZW5jeV9yZXN0YXJ0IDwtIG5hdGl2ZV9tYWNoaW5lX3Jlc3RhcnQrMHgzNy8weDQwCisgMCBmZmZmZmZmZjgxMWY5ODc2ICBmZmZmZmZmZjgxMDFhNzNhICBhY3BpX3JlYm9vdCA8LSBuYXRpdmVfbWFjaGluZV9lbWVyZ2VuY3lfcmVzdGFydCsweGFhLzB4MWUwCisgMCBmZmZmZmZmZjgxMDFhNTE0ICBmZmZmZmZmZjgxMDFhNzcyICBtYWNoX3JlYm9vdF9maXh1cHMgPC0gbmF0aXZlX21hY2hpbmVfZW1lcmdlbmN5X3Jlc3RhcnQrMHhlMi8weDFlMAorIDAgZmZmZmZmZmY4MTFkOWM1NCAgZmZmZmZmZmY4MTAxYTdhMCAgX19jb25zdF91ZGVsYXkgPC0gbmF0aXZlX21hY2hpbmVfZW1lcmdlbmN5X3Jlc3RhcnQrMHgxMTAvMHgxZTAKKyAwIGZmZmZmZmZmODExZDljMzQgIGZmZmZmZmZmODExZDljODAgIF9fZGVsYXkgPC0gX19jb25zdF91ZGVsYXkrMHgzMC8weDQwCisgMCBmZmZmZmZmZjgxMWQ5ZDE0ICBmZmZmZmZmZjgxMWQ5YzNmICBkZWxheV90c2MgPC0gX19kZWxheSsweGYvMHgyMApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9yYXBpZGlvL3JhcGlkaW8udHh0IGIvRG9jdW1lbnRhdGlvbi9yYXBpZGlvL3JhcGlkaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4ZmJkODcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3JhcGlkaW8vcmFwaWRpby50eHQKQEAgLTAsMCArMSwzNTEgQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIExpbnV4IFJhcGlkSU8gU3Vic3lzdGVtCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1RoZSBSYXBpZElPIHN0YW5kYXJkIGlzIGEgcGFja2V0LWJhc2VkIGZhYnJpYyBpbnRlcmNvbm5lY3Qgc3RhbmRhcmQgZGVzaWduZWQgZm9yCit1c2UgaW4gZW1iZWRkZWQgc3lzdGVtcy4gRGV2ZWxvcG1lbnQgb2YgdGhlIFJhcGlkSU8gc3RhbmRhcmQgaXMgZGlyZWN0ZWQgYnkgdGhlCitSYXBpZElPIFRyYWRlIEFzc29jaWF0aW9uIChSVEEpLiBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBSYXBpZElPIHNwZWNpZmljYXRpb24KK2lzIHB1YmxpY2x5IGF2YWlsYWJsZSBmb3IgZG93bmxvYWQgZnJvbSB0aGUgUlRBIHdlYi1zaXRlIFsxXS4KKworVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIGJhc2ljcyBvZiB0aGUgTGludXggUmFwaWRJTyBzdWJzeXN0ZW0gYW5kIHByb3ZpZGVzCitpbmZvcm1hdGlvbiBvbiBpdHMgbWFqb3IgY29tcG9uZW50cy4KKworMSBPdmVydmlldworLS0tLS0tLS0tLQorCitCZWNhdXNlIHRoZSBSYXBpZElPIHN1YnN5c3RlbSBmb2xsb3dzIHRoZSBMaW51eCBkZXZpY2UgbW9kZWwgaXQgaXMgaW50ZWdyYXRlZAoraW50byB0aGUga2VybmVsIHNpbWlsYXJseSB0byBvdGhlciBidXNlcyBieSBkZWZpbmluZyBSYXBpZElPLXNwZWNpZmljIGRldmljZSBhbmQKK2J1cyB0eXBlcyBhbmQgcmVnaXN0ZXJpbmcgdGhlbSB3aXRoaW4gdGhlIGRldmljZSBtb2RlbC4KKworVGhlIExpbnV4IFJhcGlkSU8gc3Vic3lzdGVtIGlzIGFyY2hpdGVjdHVyZSBpbmRlcGVuZGVudCBhbmQgdGhlcmVmb3JlIGRlZmluZXMKK2FyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbnRlcmZhY2VzIHRoYXQgcHJvdmlkZSBzdXBwb3J0IGZvciBjb21tb24gUmFwaWRJTworc3Vic3lzdGVtIG9wZXJhdGlvbnMuCisKKzIuIENvcmUgQ29tcG9uZW50cworLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgdHlwaWNhbCBSYXBpZElPIG5ldHdvcmsgaXMgYSBjb21iaW5hdGlvbiBvZiBlbmRwb2ludHMgYW5kIHN3aXRjaGVzLgorRWFjaCBvZiB0aGVzZSBjb21wb25lbnRzIGlzIHJlcHJlc2VudGVkIGluIHRoZSBzdWJzeXN0ZW0gYnkgYW4gYXNzb2NpYXRlZCBkYXRhCitzdHJ1Y3R1cmUuIFRoZSBjb3JlIGxvZ2ljYWwgY29tcG9uZW50cyBvZiB0aGUgUmFwaWRJTyBzdWJzeXN0ZW0gYXJlIGRlZmluZWQKK2luIGluY2x1ZGUvbGludXgvcmlvLmggZmlsZS4KKworMi4xIE1hc3RlciBQb3J0CisKK0EgbWFzdGVyIHBvcnQgKG9yIG1wb3J0KSBpcyBhIFJhcGlkSU8gaW50ZXJmYWNlIGNvbnRyb2xsZXIgdGhhdCBpcyBsb2NhbCB0byB0aGUKK3Byb2Nlc3NvciBleGVjdXRpbmcgdGhlIExpbnV4IGNvZGUuIEEgbWFzdGVyIHBvcnQgZ2VuZXJhdGVzIGFuZCByZWNlaXZlcyBSYXBpZElPCitwYWNrZXRzICh0cmFuc2FjdGlvbnMpLiBJbiB0aGUgUmFwaWRJTyBzdWJzeXN0ZW0gZWFjaCBtYXN0ZXIgcG9ydCBpcyByZXByZXNlbnRlZAorYnkgYSByaW9fbXBvcnQgZGF0YSBzdHJ1Y3R1cmUuIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIG1hc3RlciBwb3J0IHNwZWNpZmljCityZXNvdXJjZXMgc3VjaCBhcyBtYWlsYm94ZXMgYW5kIGRvb3JiZWxscy4gVGhlIHJpb19tcG9ydCBhbHNvIGluY2x1ZGVzIGEgdW5pcXVlCitob3N0IGRldmljZSBJRCB0aGF0IGlzIHZhbGlkIHdoZW4gYSBtYXN0ZXIgcG9ydCBpcyBjb25maWd1cmVkIGFzIGFuIGVudW1lcmF0aW5nCitob3N0LgorCitSYXBpZElPIG1hc3RlciBwb3J0cyBhcmUgc2VydmljZWQgYnkgc3Vic3lzdGVtIHNwZWNpZmljIG1wb3J0IGRldmljZSBkcml2ZXJzCit0aGF0IHByb3ZpZGUgZnVuY3Rpb25hbGl0eSBkZWZpbmVkIGZvciB0aGlzIHN1YnN5c3RlbS4gVG8gcHJvdmlkZSBhIGhhcmR3YXJlCitpbmRlcGVuZGVudCBpbnRlcmZhY2UgZm9yIFJhcGlkSU8gc3Vic3lzdGVtIG9wZXJhdGlvbnMsIHJpb19tcG9ydCBzdHJ1Y3R1cmUKK2luY2x1ZGVzIHJpb19vcHMgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggY29udGFpbnMgcG9pbnRlcnMgdG8gaGFyZHdhcmUgc3BlY2lmaWMKK2ltcGxlbWVudGF0aW9ucyBvZiBSYXBpZElPIGZ1bmN0aW9ucy4KKworMi4yIERldmljZQorCitBIFJhcGlkSU8gZGV2aWNlIGlzIGFueSBlbmRwb2ludCAob3RoZXIgdGhhbiBtcG9ydCkgb3Igc3dpdGNoIGluIHRoZSBuZXR3b3JrLgorQWxsIGRldmljZXMgYXJlIHByZXNlbnRlZCBpbiB0aGUgUmFwaWRJTyBzdWJzeXN0ZW0gYnkgY29ycmVzcG9uZGluZyByaW9fZGV2IGRhdGEKK3N0cnVjdHVyZS4gRGV2aWNlcyBmb3JtIG9uZSBnbG9iYWwgZGV2aWNlIGxpc3QgYW5kIHBlci1uZXR3b3JrIGRldmljZSBsaXN0cworKGRlcGVuZGluZyBvbiBudW1iZXIgb2YgYXZhaWxhYmxlIG1wb3J0cyBhbmQgbmV0d29ya3MpLgorCisyLjMgU3dpdGNoCisKK0EgUmFwaWRJTyBzd2l0Y2ggaXMgYSBzcGVjaWFsIGNsYXNzIG9mIGRldmljZSB0aGF0IHJvdXRlcyBwYWNrZXRzIGJldHdlZW4gaXRzCitwb3J0cyB0b3dhcmRzIHRoZWlyIGZpbmFsIGRlc3RpbmF0aW9uLiBUaGUgcGFja2V0IGRlc3RpbmF0aW9uIHBvcnQgd2l0aGluIGEKK3N3aXRjaCBpcyBkZWZpbmVkIGJ5IGFuIGludGVybmFsIHJvdXRpbmcgdGFibGUuIEEgc3dpdGNoIGlzIHByZXNlbnRlZCBpbiB0aGUKK1JhcGlkSU8gc3Vic3lzdGVtIGJ5IHJpb19kZXYgZGF0YSBzdHJ1Y3R1cmUgZXhwYW5kZWQgYnkgYWRkaXRpb25hbCByaW9fc3dpdGNoCitkYXRhIHN0cnVjdHVyZSwgd2hpY2ggY29udGFpbnMgc3dpdGNoIHNwZWNpZmljIGluZm9ybWF0aW9uIHN1Y2ggYXMgY29weSBvZiB0aGUKK3JvdXRpbmcgdGFibGUgYW5kIHBvaW50ZXJzIHRvIHN3aXRjaCBzcGVjaWZpYyBmdW5jdGlvbnMuCisKK1RoZSBSYXBpZElPIHN1YnN5c3RlbSBkZWZpbmVzIHRoZSBmb3JtYXQgYW5kIGluaXRpYWxpemF0aW9uIG1ldGhvZCBmb3Igc3Vic3lzdGVtCitzcGVjaWZpYyBzd2l0Y2ggZHJpdmVycyB0aGF0IGFyZSBkZXNpZ25lZCB0byBwcm92aWRlIGhhcmR3YXJlLXNwZWNpZmljCitpbXBsZW1lbnRhdGlvbiBvZiBjb21tb24gc3dpdGNoIG1hbmFnZW1lbnQgcm91dGluZXMuCisKKzIuNCBOZXR3b3JrCisKK0EgUmFwaWRJTyBuZXR3b3JrIGlzIGEgY29tYmluYXRpb24gb2YgaW50ZXJjb25uZWN0ZWQgZW5kcG9pbnQgYW5kIHN3aXRjaCBkZXZpY2VzLgorRWFjaCBSYXBpZElPIG5ldHdvcmsga25vd24gdG8gdGhlIHN5c3RlbSBpcyByZXByZXNlbnRlZCBieSBjb3JyZXNwb25kaW5nIHJpb19uZXQKK2RhdGEgc3RydWN0dXJlLiBUaGlzIHN0cnVjdHVyZSBpbmNsdWRlcyBsaXN0cyBvZiBhbGwgZGV2aWNlcyBhbmQgbG9jYWwgbWFzdGVyCitwb3J0cyB0aGF0IGZvcm0gdGhlIHNhbWUgbmV0d29yay4gSXQgYWxzbyBjb250YWlucyBhIHBvaW50ZXIgdG8gdGhlIGRlZmF1bHQKK21hc3RlciBwb3J0IHRoYXQgaXMgdXNlZCB0byBjb21tdW5pY2F0ZSB3aXRoIGRldmljZXMgd2l0aGluIHRoZSBuZXR3b3JrLgorCisyLjUgRGV2aWNlIERyaXZlcnMKKworUmFwaWRJTyBkZXZpY2Utc3BlY2lmaWMgZHJpdmVycyBmb2xsb3cgTGludXggS2VybmVsIERyaXZlciBNb2RlbCBhbmQgYXJlCitpbnRlbmRlZCB0byBzdXBwb3J0IHNwZWNpZmljIFJhcGlkSU8gZGV2aWNlcyBhdHRhY2hlZCB0byB0aGUgUmFwaWRJTyBuZXR3b3JrLgorCisyLjYgU3Vic3lzdGVtIEludGVyZmFjZXMKKworUmFwaWRJTyBpbnRlcmNvbm5lY3Qgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIGZlYXR1cmVzIHRoYXQgbWF5IGJlIHVzZWQgdG8gcHJvdmlkZQorb25lIG9yIG1vcmUgY29tbW9uIHNlcnZpY2UgbGF5ZXJzIGZvciBhbGwgcGFydGljaXBhdGluZyBSYXBpZElPIGRldmljZXMuIFRoZXNlCitjb21tb24gc2VydmljZXMgbWF5IGFjdCBzZXBhcmF0ZWx5IGZyb20gZGV2aWNlLXNwZWNpZmljIGRyaXZlcnMgb3IgYmUgdXNlZCBieQorZGV2aWNlLXNwZWNpZmljIGRyaXZlcnMuIEV4YW1wbGUgb2Ygc3VjaCBzZXJ2aWNlIHByb3ZpZGVyIGlzIHRoZSBSSU9ORVQgZHJpdmVyCit3aGljaCBpbXBsZW1lbnRzIEV0aGVybmV0LW92ZXItUmFwaWRJTyBpbnRlcmZhY2UuIEJlY2F1c2Ugb25seSBvbmUgZHJpdmVyIGNhbiBiZQorcmVnaXN0ZXJlZCBmb3IgYSBkZXZpY2UsIGFsbCBjb21tb24gUmFwaWRJTyBzZXJ2aWNlcyBoYXZlIHRvIGJlIHJlZ2lzdGVyZWQgYXMKK3N1YnN5c3RlbSBpbnRlcmZhY2VzLiBUaGlzIGFsbG93cyB0byBoYXZlIG11bHRpcGxlIGNvbW1vbiBzZXJ2aWNlcyBhdHRhY2hlZCB0bwordGhlIHNhbWUgZGV2aWNlIHdpdGhvdXQgYmxvY2tpbmcgYXR0YWNobWVudCBvZiBhIGRldmljZS1zcGVjaWZpYyBkcml2ZXIuCisKKzMuIFN1YnN5c3RlbSBJbml0aWFsaXphdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0luIG9yZGVyIHRvIGluaXRpYWxpemUgdGhlIFJhcGlkSU8gc3Vic3lzdGVtLCBhIHBsYXRmb3JtIG11c3QgaW5pdGlhbGl6ZSBhbmQKK3JlZ2lzdGVyIGF0IGxlYXN0IG9uZSBtYXN0ZXIgcG9ydCB3aXRoaW4gdGhlIFJhcGlkSU8gbmV0d29yay4gVG8gcmVnaXN0ZXIgbXBvcnQKK3dpdGhpbiB0aGUgc3Vic3lzdGVtIGNvbnRyb2xsZXIgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24gY29kZSBjYWxscyBmdW5jdGlvbgorcmlvX3JlZ2lzdGVyX21wb3J0KCkgZm9yIGVhY2ggYXZhaWxhYmxlIG1hc3RlciBwb3J0LgorCitBZnRlciBhbGwgYWN0aXZlIG1hc3RlciBwb3J0cyBhcmUgcmVnaXN0ZXJlZCB3aXRoIGEgUmFwaWRJTyBzdWJzeXN0ZW0sCithbiBlbnVtZXJhdGlvbiBhbmQvb3IgZGlzY292ZXJ5IHJvdXRpbmUgbWF5IGJlIGNhbGxlZCBhdXRvbWF0aWNhbGx5IG9yCitieSB1c2VyLXNwYWNlIGNvbW1hbmQuCisKK1JhcGlkSU8gc3Vic3lzdGVtIGNhbiBiZSBjb25maWd1cmVkIHRvIGJlIGJ1aWx0IGFzIGEgc3RhdGljYWxseSBsaW5rZWQgb3IKK21vZHVsYXIgY29tcG9uZW50IG9mIHRoZSBrZXJuZWwgKHNlZSBkZXRhaWxzIGJlbG93KS4KKworNC4gRW51bWVyYXRpb24gYW5kIERpc2NvdmVyeQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis0LjEgT3ZlcnZpZXcKKy0tLS0tLS0tLS0tLQorCitSYXBpZElPIHN1YnN5c3RlbSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYWxsb3cgdXNlcnMgdG8gYnVpbGQgZW51bWVyYXRpb24gYW5kCitkaXNjb3ZlcnkgbWV0aG9kcyBhcyBzdGF0aWNhbGx5IGxpbmtlZCBjb21wb25lbnRzIG9yIGxvYWRhYmxlIG1vZHVsZXMuCitBbiBlbnVtZXJhdGlvbi9kaXNjb3ZlcnkgbWV0aG9kIGltcGxlbWVudGF0aW9uIGFuZCBhdmFpbGFibGUgaW5wdXQgcGFyYW1ldGVycworZGVmaW5lIGhvdyBhbnkgZ2l2ZW4gbWV0aG9kIGNhbiBiZSBhdHRhY2hlZCB0byBhdmFpbGFibGUgUmFwaWRJTyBtcG9ydHM6CitzaW1wbHkgdG8gYWxsIGF2YWlsYWJsZSBtcG9ydHMgT1IgaW5kaXZpZHVhbGx5IHRvIHRoZSBzcGVjaWZpZWQgbXBvcnQgZGV2aWNlLgorCitEZXBlbmRpbmcgb24gc2VsZWN0ZWQgZW51bWVyYXRpb24vZGlzY292ZXJ5IGJ1aWxkIGNvbmZpZ3VyYXRpb24sIHRoZXJlIGFyZQorc2V2ZXJhbCBtZXRob2RzIHRvIGluaXRpYXRlIGFuIGVudW1lcmF0aW9uIGFuZC9vciBkaXNjb3ZlcnkgcHJvY2VzczoKKworICAoYSkgU3RhdGljYWxseSBsaW5rZWQgZW51bWVyYXRpb24gYW5kIGRpc2NvdmVyeSBwcm9jZXNzIGNhbiBiZSBzdGFydGVkCisgIGF1dG9tYXRpY2FsbHkgZHVyaW5nIGtlcm5lbCBpbml0aWFsaXphdGlvbiB0aW1lIHVzaW5nIGNvcnJlc3BvbmRpbmcgbW9kdWxlCisgIHBhcmFtZXRlcnMuIFRoaXMgd2FzIHRoZSBvcmlnaW5hbCBtZXRob2QgdXNlZCBzaW5jZSBpbnRyb2R1Y3Rpb24gb2YgUmFwaWRJTworICBzdWJzeXN0ZW0uIE5vdyB0aGlzIG1ldGhvZCByZWxpZXMgb24gZW51bWVyYXRvciBtb2R1bGUgcGFyYW1ldGVyIHdoaWNoIGlzCisgICdyaW8tc2Nhbi5zY2FuJyBmb3IgZXhpc3RpbmcgYmFzaWMgZW51bWVyYXRpb24vZGlzY292ZXJ5IG1ldGhvZC4KKyAgV2hlbiBhdXRvbWF0aWMgc3RhcnQgb2YgZW51bWVyYXRpb24vZGlzY292ZXJ5IGlzIHVzZWQgYSB1c2VyIGhhcyB0byBlbnN1cmUKKyAgdGhhdCBhbGwgZGlzY292ZXJpbmcgZW5kcG9pbnRzIGFyZSBzdGFydGVkIGJlZm9yZSB0aGUgZW51bWVyYXRpbmcgZW5kcG9pbnQKKyAgYW5kIGFyZSB3YWl0aW5nIGZvciBlbnVtZXJhdGlvbiB0byBiZSBjb21wbGV0ZWQuCisgIENvbmZpZ3VyYXRpb24gb3B0aW9uIENPTkZJR19SQVBJRElPX0RJU0NfVElNRU9VVCBkZWZpbmVzIHRpbWUgdGhhdCBkaXNjb3ZlcmluZworICBlbmRwb2ludCB3YWl0cyBmb3IgZW51bWVyYXRpb24gdG8gYmUgY29tcGxldGVkLiBJZiB0aGUgc3BlY2lmaWVkIHRpbWVvdXQKKyAgZXhwaXJlcyB0aGUgZGlzY292ZXJ5IHByb2Nlc3MgaXMgdGVybWluYXRlZCB3aXRob3V0IG9idGFpbmluZyBSYXBpZElPIG5ldHdvcmsKKyAgaW5mb3JtYXRpb24uIE5PVEU6IGEgdGltZWQgb3V0IGRpc2NvdmVyeSBwcm9jZXNzIG1heSBiZSByZXN0YXJ0ZWQgbGF0ZXIgdXNpbmcKKyAgYSB1c2VyLXNwYWNlIGNvbW1hbmQgYXMgaXQgaXMgZGVzY3JpYmVkIGJlbG93IChpZiB0aGUgZ2l2ZW4gZW5kcG9pbnQgd2FzCisgIGVudW1lcmF0ZWQgc3VjY2Vzc2Z1bGx5KS4KKworICAoYikgU3RhdGljYWxseSBsaW5rZWQgZW51bWVyYXRpb24gYW5kIGRpc2NvdmVyeSBwcm9jZXNzIGNhbiBiZSBzdGFydGVkIGJ5CisgIGEgY29tbWFuZCBmcm9tIHVzZXIgc3BhY2UuIFRoaXMgaW5pdGlhdGlvbiBtZXRob2QgcHJvdmlkZXMgbW9yZSBmbGV4aWJpbGl0eQorICBmb3IgYSBzeXN0ZW0gc3RhcnR1cCBjb21wYXJlZCB0byB0aGUgb3B0aW9uIChhKSBhYm92ZS4gQWZ0ZXIgYWxsIHBhcnRpY2lwYXRpbmcKKyAgZW5kcG9pbnRzIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgYm9vdGVkLCBhbiBlbnVtZXJhdGlvbiBwcm9jZXNzIHNoYWxsIGJlCisgIHN0YXJ0ZWQgZmlyc3QgYnkgaXNzdWluZyBhIHVzZXItc3BhY2UgY29tbWFuZCwgYWZ0ZXIgYW4gZW51bWVyYXRpb24gaXMKKyAgY29tcGxldGVkIGEgZGlzY292ZXJ5IHByb2Nlc3MgY2FuIGJlIHN0YXJ0ZWQgb24gYWxsIHJlbWFpbmluZyBlbmRwb2ludHMuCisKKyAgKGMpIE1vZHVsYXIgZW51bWVyYXRpb24gYW5kIGRpc2NvdmVyeSBwcm9jZXNzIGNhbiBiZSBzdGFydGVkIGJ5IGEgY29tbWFuZCBmcm9tCisgIHVzZXIgc3BhY2UuIEFmdGVyIGFuIGVudW1lcmF0aW9uL2Rpc2NvdmVyeSBtb2R1bGUgaXMgbG9hZGVkLCBhIG5ldHdvcmsgc2NhbgorICBwcm9jZXNzIGNhbiBiZSBzdGFydGVkIGJ5IGlzc3VpbmcgYSB1c2VyLXNwYWNlIGNvbW1hbmQuCisgIFNpbWlsYXIgdG8gdGhlIG9wdGlvbiAoYikgYWJvdmUsIGFuIGVudW1lcmF0b3IgaGFzIHRvIGJlIHN0YXJ0ZWQgZmlyc3QuCisKKyAgKGQpIE1vZHVsYXIgZW51bWVyYXRpb24gYW5kIGRpc2NvdmVyeSBwcm9jZXNzIGNhbiBiZSBzdGFydGVkIGJ5IGEgbW9kdWxlCisgIGluaXRpYWxpemF0aW9uIHJvdXRpbmUuIEluIHRoaXMgY2FzZSBhbiBlbnVtZXJhdGluZyBtb2R1bGUgc2hhbGwgYmUgbG9hZGVkCisgIGZpcnN0LgorCitXaGVuIGEgbmV0d29yayBzY2FuIHByb2Nlc3MgaXMgc3RhcnRlZCBpdCBjYWxscyBhbiBlbnVtZXJhdGlvbiBvciBkaXNjb3ZlcnkKK3JvdXRpbmUgZGVwZW5kaW5nIG9uIHRoZSBjb25maWd1cmVkIHJvbGUgb2YgYSBtYXN0ZXIgcG9ydDogaG9zdCBvciBhZ2VudC4KKworRW51bWVyYXRpb24gaXMgcGVyZm9ybWVkIGJ5IGEgbWFzdGVyIHBvcnQgaWYgaXQgaXMgY29uZmlndXJlZCBhcyBhIGhvc3QgcG9ydCBieQorYXNzaWduaW5nIGEgaG9zdCBkZXN0aW5hdGlvbiBJRCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gemVyby4gVGhlIGhvc3QKK2Rlc3RpbmF0aW9uIElEIGNhbiBiZSBhc3NpZ25lZCB0byBhIG1hc3RlciBwb3J0IHVzaW5nIHZhcmlvdXMgbWV0aG9kcyBkZXBlbmRpbmcKK29uIFJhcGlkSU8gc3Vic3lzdGVtIGJ1aWxkIGNvbmZpZ3VyYXRpb246CisKKyAgKGEpIEZvciBhIHN0YXRpY2FsbHkgbGlua2VkIFJhcGlkSU8gc3Vic3lzdGVtIGNvcmUgdXNlIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXIKKyAgInJhcGlkaW8uaGRpZD0iIHdpdGggYSBsaXN0IG9mIGRlc3RpbmF0aW9uIElEIGFzc2lnbm1lbnRzIGluIG9yZGVyIG9mIG1wb3J0CisgIGRldmljZSByZWdpc3RyYXRpb24uIEZvciBleGFtcGxlLCBpbiBhIHN5c3RlbSB3aXRoIHR3byBSYXBpZElPIGNvbnRyb2xsZXJzCisgIHRoZSBjb21tYW5kIGxpbmUgcGFyYW1ldGVyICJyYXBpZGlvLmhkaWQ9LTEsNyIgd2lsbCByZXN1bHQgaW4gYXNzaWdubWVudCBvZgorICB0aGUgaG9zdCBkZXN0aW5hdGlvbiBJRD03IHRvIHRoZSBzZWNvbmQgUmFwaWRJTyBjb250cm9sbGVyLCB3aGlsZSB0aGUgZmlyc3QKKyAgb25lIHdpbGwgYmUgYXNzaWduZWQgZGVzdGluYXRpb24gSUQ9LTEuCisKKyAgKGIpIElmIHRoZSBSYXBpZElPIHN1YnN5c3RlbSBjb3JlIGlzIGJ1aWx0IGFzIGEgbG9hZGFibGUgbW9kdWxlLCBpbiBhZGRpdGlvbgorICB0byB0aGUgbWV0aG9kIHNob3duIGFib3ZlLCB0aGUgaG9zdCBkZXN0aW5hdGlvbiBJRChzKSBjYW4gYmUgc3BlY2lmaWVkIHVzaW5nCisgIHRyYWRpdGlvbmFsIG1ldGhvZHMgb2YgcGFzc2luZyBtb2R1bGUgcGFyYW1ldGVyICJoZGlkPSIgZHVyaW5nIGl0cyBsb2FkaW5nOgorICAtIGZyb20gY29tbWFuZCBsaW5lOiAibW9kcHJvYmUgcmFwaWRpbyBoZGlkPS0xLDciLCBvcgorICAtIGZyb20gbW9kcHJvYmUgY29uZmlndXJhdGlvbiBmaWxlIHVzaW5nIGNvbmZpZ3VyYXRpb24gY29tbWFuZCAib3B0aW9ucyIsCisgICAgbGlrZSBpbiB0aGlzIGV4YW1wbGU6ICJvcHRpb25zIHJhcGlkaW8gaGRpZD0tMSw3Ii4gQW4gZXhhbXBsZSBvZiBtb2Rwcm9iZQorICAgIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBwcm92aWRlZCBpbiB0aGUgc2VjdGlvbiBiZWxvdy4KKworICBOT1RFUzoKKyAgKGkpIGlmICJoZGlkPSIgcGFyYW1ldGVyIGlzIG9taXR0ZWQgYWxsIGF2YWlsYWJsZSBtcG9ydCB3aWxsIGJlIGFzc2lnbmVkCisgIGRlc3RpbmF0aW9uIElEID0gLTE7CisgIChpaSkgdGhlICJoZGlkPSIgcGFyYW1ldGVyIGluIHN5c3RlbXMgd2l0aCBtdWx0aXBsZSBtcG9ydHMgY2FuIGhhdmUKKyAgZGVzdGluYXRpb24gSUQgYXNzaWdubWVudHMgb21pdHRlZCBmcm9tIHRoZSBlbmQgb2YgbGlzdCAoZGVmYXVsdCA9IC0xKS4KKworSWYgdGhlIGhvc3QgZGV2aWNlIElEIGZvciBhIHNwZWNpZmljIG1hc3RlciBwb3J0IGlzIHNldCB0byAtMSwgdGhlIGRpc2NvdmVyeQorcHJvY2VzcyB3aWxsIGJlIHBlcmZvcm1lZCBmb3IgaXQuCisKK1RoZSBlbnVtZXJhdGlvbiBhbmQgZGlzY292ZXJ5IHJvdXRpbmVzIHVzZSBSYXBpZElPIG1haW50ZW5hbmNlIHRyYW5zYWN0aW9ucwordG8gYWNjZXNzIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlIG9mIGRldmljZXMuCisKK05PVEU6IElmIFJhcGlkSU8gc3dpdGNoLXNwZWNpZmljIGRldmljZSBkcml2ZXJzIGFyZSBidWlsdCBhcyBsb2FkYWJsZSBtb2R1bGVzCit0aGV5IG11c3QgYmUgbG9hZGVkIGJlZm9yZSBlbnVtZXJhdGlvbi9kaXNjb3ZlcnkgcHJvY2VzcyBzdGFydHMuCitUaGlzIHJlcXVpcmVtZW50IGlzIGNhc2VkIGJ5IHRoZSBmYWN0IHRoYXQgZW51bWVyYXRpb24vZGlzY292ZXJ5IG1ldGhvZHMgaW52b2tlCit2ZW5kb3Itc3BlY2lmaWMgY2FsbGJhY2tzIG9uIGVhcmx5IHN0YWdlcy4KKworNC4yIEF1dG9tYXRpYyBTdGFydCBvZiBFbnVtZXJhdGlvbiBhbmQgRGlzY292ZXJ5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQXV0b21hdGljIGVudW1lcmF0aW9uL2Rpc2NvdmVyeSBzdGFydCBtZXRob2QgaXMgYXBwbGljYWJsZSBvbmx5IHRvIGJ1aWx0LWluCitlbnVtZXJhdGlvbi9kaXNjb3ZlcnkgUmFwaWRJTyBjb25maWd1cmF0aW9uIHNlbGVjdGlvbi4gVG8gZW5hYmxlIGF1dG9tYXRpYworZW51bWVyYXRpb24vZGlzY292ZXJ5IHN0YXJ0IGJ5IGV4aXN0aW5nIGJhc2ljIGVudW1lcmF0b3IgbWV0aG9kIHNldCB1c2UgYm9vdAorY29tbWFuZCBsaW5lIHBhcmFtZXRlciAicmlvLXNjYW4uc2Nhbj0xIi4KKworVGhpcyBjb25maWd1cmF0aW9uIHJlcXVpcmVzIHN5bmNocm9uaXplZCBzdGFydCBvZiBhbGwgUmFwaWRJTyBlbmRwb2ludHMgdGhhdAorZm9ybSBhIG5ldHdvcmsgd2hpY2ggd2lsbCBiZSBlbnVtZXJhdGVkL2Rpc2NvdmVyZWQuIERpc2NvdmVyaW5nIGVuZHBvaW50cyBoYXZlCit0byBiZSBzdGFydGVkIGJlZm9yZSBhbiBlbnVtZXJhdGlvbiBzdGFydHMgdG8gZW5zdXJlIHRoYXQgYWxsIFJhcGlkSU8KK2NvbnRyb2xsZXJzIGhhdmUgYmVlbiBpbml0aWFsaXplZCBhbmQgYXJlIHJlYWR5IHRvIGJlIGRpc2NvdmVyZWQuIENvbmZpZ3VyYXRpb24KK3BhcmFtZXRlciBDT05GSUdfUkFQSURJT19ESVNDX1RJTUVPVVQgZGVmaW5lcyB0aW1lIChpbiBzZWNvbmRzKSB3aGljaAorYSBkaXNjb3ZlcmluZyBlbmRwb2ludCB3aWxsIHdhaXQgZm9yIGVudW1lcmF0aW9uIHRvIGJlIGNvbXBsZXRlZC4KKworV2hlbiBhdXRvbWF0aWMgZW51bWVyYXRpb24vZGlzY292ZXJ5IHN0YXJ0IGlzIHNlbGVjdGVkLCBiYXNpYyBtZXRob2QncworaW5pdGlhbGl6YXRpb24gcm91dGluZSBjYWxscyByaW9faW5pdF9tcG9ydHMoKSB0byBwZXJmb3JtIGVudW1lcmF0aW9uIG9yCitkaXNjb3ZlcnkgZm9yIGFsbCBrbm93biBtcG9ydCBkZXZpY2VzLgorCitEZXBlbmRpbmcgb24gUmFwaWRJTyBuZXR3b3JrIHNpemUgYW5kIGNvbmZpZ3VyYXRpb24gdGhpcyBhdXRvbWF0aWMKK2VudW1lcmF0aW9uL2Rpc2NvdmVyeSBzdGFydCBtZXRob2QgbWF5IGJlIGRpZmZpY3VsdCB0byB1c2UgZHVlIHRvIHRoZQorcmVxdWlyZW1lbnQgZm9yIHN5bmNocm9uaXplZCBzdGFydCBvZiBhbGwgZW5kcG9pbnRzLgorCis0LjMgVXNlci1zcGFjZSBTdGFydCBvZiBFbnVtZXJhdGlvbiBhbmQgRGlzY292ZXJ5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1VzZXItc3BhY2Ugc3RhcnQgb2YgZW51bWVyYXRpb24gYW5kIGRpc2NvdmVyeSBjYW4gYmUgdXNlZCB3aXRoIGJ1aWx0LWluIGFuZAorbW9kdWxhciBidWlsZCBjb25maWd1cmF0aW9ucy4gRm9yIHVzZXItc3BhY2UgY29udHJvbGxlZCBzdGFydCBSYXBpZElPIHN1YnN5c3RlbQorY3JlYXRlcyB0aGUgc3lzZnMgd3JpdGUtb25seSBhdHRyaWJ1dGUgZmlsZSAnL3N5cy9idXMvcmFwaWRpby9zY2FuJy4gVG8gaW5pdGlhdGUKK2FuIGVudW1lcmF0aW9uIG9yIGRpc2NvdmVyeSBwcm9jZXNzIG9uIHNwZWNpZmljIG1wb3J0IGRldmljZSwgYSB1c2VyIG5lZWRzIHRvCit3cml0ZSBtcG9ydF9JRCAobm90IFJhcGlkSU8gZGVzdGluYXRpb24gSUQpIGludG8gdGhhdCBmaWxlLiBUaGUgbXBvcnRfSUQgaXMgYQorc2VxdWVudGlhbCBudW1iZXIgKDAgLi4uIFJJT19NQVhfTVBPUlRTKSBhc3NpZ25lZCBkdXJpbmcgbXBvcnQgZGV2aWNlCityZWdpc3RyYXRpb24uIEZvciBleGFtcGxlIGZvciBtYWNoaW5lIHdpdGggc2luZ2xlIFJhcGlkSU8gY29udHJvbGxlciwgbXBvcnRfSUQKK2ZvciB0aGF0IGNvbnRyb2xsZXIgYWx3YXlzIHdpbGwgYmUgMC4KKworVG8gaW5pdGlhdGUgUmFwaWRJTyBlbnVtZXJhdGlvbi9kaXNjb3Zlcnkgb24gYWxsIGF2YWlsYWJsZSBtcG9ydHMgYSB1c2VyIG1heQord3JpdGUgJy0xJyAob3IgUklPX01QT1JUX0FOWSkgaW50byB0aGUgc2NhbiBhdHRyaWJ1dGUgZmlsZS4KKworNC40IEJhc2ljIEVudW1lcmF0aW9uIE1ldGhvZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGlzIGFuIG9yaWdpbmFsIGVudW1lcmF0aW9uL2Rpc2NvdmVyeSBtZXRob2Qgd2hpY2ggaXMgYXZhaWxhYmxlIHNpbmNlCitmaXJzdCByZWxlYXNlIG9mIFJhcGlkSU8gc3Vic3lzdGVtIGNvZGUuIFRoZSBlbnVtZXJhdGlvbiBwcm9jZXNzIGlzCitpbXBsZW1lbnRlZCBhY2NvcmRpbmcgdG8gdGhlIGVudW1lcmF0aW9uIGFsZ29yaXRobSBvdXRsaW5lZCBpbiB0aGUgUmFwaWRJTworSW50ZXJjb25uZWN0IFNwZWNpZmljYXRpb246IEFubmV4IEkgWzFdLgorCitUaGlzIG1ldGhvZCBjYW4gYmUgY29uZmlndXJlZCBhcyBzdGF0aWNhbGx5IGxpbmtlZCBvciBsb2FkYWJsZSBtb2R1bGUuCitUaGUgbWV0aG9kJ3Mgc2luZ2xlIHBhcmFtZXRlciAic2NhbiIgYWxsb3dzIHRvIHRyaWdnZXIgdGhlIGVudW1lcmF0aW9uL2Rpc2NvdmVyeQorcHJvY2VzcyBmcm9tIG1vZHVsZSBpbml0aWFsaXphdGlvbiByb3V0aW5lLgorCitUaGlzIGVudW1lcmF0aW9uL2Rpc2NvdmVyeSBtZXRob2QgY2FuIGJlIHN0YXJ0ZWQgb25seSBvbmNlIGFuZCBkb2VzIG5vdCBzdXBwb3J0Cit1bmxvYWRpbmcgaWYgaXQgaXMgYnVpbHQgYXMgYSBtb2R1bGUuCisKK1RoZSBlbnVtZXJhdGlvbiBwcm9jZXNzIHRyYXZlcnNlcyB0aGUgbmV0d29yayB1c2luZyBhIHJlY3Vyc2l2ZSBkZXB0aC1maXJzdAorYWxnb3JpdGhtLiBXaGVuIGEgbmV3IGRldmljZSBpcyBmb3VuZCwgdGhlIGVudW1lcmF0b3IgdGFrZXMgb3duZXJzaGlwIG9mIHRoYXQKK2RldmljZSBieSB3cml0aW5nIGludG8gdGhlIEhvc3QgRGV2aWNlIElEIExvY2sgQ1NSLiBJdCBkb2VzIHRoaXMgdG8gZW5zdXJlIHRoYXQKK3RoZSBlbnVtZXJhdG9yIGhhcyBleGNsdXNpdmUgcmlnaHQgdG8gZW51bWVyYXRlIHRoZSBkZXZpY2UuIElmIGRldmljZSBvd25lcnNoaXAKK2lzIHN1Y2Nlc3NmdWxseSBhY3F1aXJlZCwgdGhlIGVudW1lcmF0b3IgYWxsb2NhdGVzIGEgbmV3IHJpb19kZXYgc3RydWN0dXJlIGFuZAoraW5pdGlhbGl6ZXMgaXQgYWNjb3JkaW5nIHRvIGRldmljZSBjYXBhYmlsaXRpZXMuCisKK0lmIHRoZSBkZXZpY2UgaXMgYW4gZW5kcG9pbnQsIGEgdW5pcXVlIGRldmljZSBJRCBpcyBhc3NpZ25lZCB0byBpdCBhbmQgaXRzIHZhbHVlCitpcyB3cml0dGVuIGludG8gdGhlIGRldmljZSdzIEJhc2UgRGV2aWNlIElEIENTUi4KKworSWYgdGhlIGRldmljZSBpcyBhIHN3aXRjaCwgdGhlIGVudW1lcmF0b3IgYWxsb2NhdGVzIGFuIGFkZGl0aW9uYWwgcmlvX3N3aXRjaAorc3RydWN0dXJlIHRvIHN0b3JlIHN3aXRjaCBzcGVjaWZpYyBpbmZvcm1hdGlvbi4gVGhlbiB0aGUgc3dpdGNoJ3MgdmVuZG9yIElEIGFuZAorZGV2aWNlIElEIGFyZSBxdWVyaWVkIGFnYWluc3QgYSB0YWJsZSBvZiBrbm93biBSYXBpZElPIHN3aXRjaGVzLiBFYWNoIHN3aXRjaAordGFibGUgZW50cnkgY29udGFpbnMgYSBwb2ludGVyIHRvIGEgc3dpdGNoLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgdGhhdAoraW5pdGlhbGl6ZXMgcG9pbnRlcnMgdG8gdGhlIHJlc3Qgb2Ygc3dpdGNoIHNwZWNpZmljIG9wZXJhdGlvbnMsIGFuZCBwZXJmb3JtcworaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gaWYgbmVjZXNzYXJ5LiBBIFJhcGlkSU8gc3dpdGNoIGRvZXMgbm90IGhhdmUgYSB1bmlxdWUKK2RldmljZSBJRDsgaXQgcmVsaWVzIG9uIGhvcGNvdW50IGFuZCByb3V0aW5nIGZvciBkZXZpY2UgSUQgb2YgYW4gYXR0YWNoZWQKK2VuZHBvaW50IGlmIGFjY2VzcyB0byBpdHMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgaXMgcmVxdWlyZWQuIElmIGEgc3dpdGNoIChvcgorY2hhaW4gb2Ygc3dpdGNoZXMpIGRvZXMgbm90IGhhdmUgYW55IGVuZHBvaW50IChleGNlcHQgZW51bWVyYXRvcikgYXR0YWNoZWQgdG8KK2l0LCBhIGZha2UgZGV2aWNlIElEIHdpbGwgYmUgYXNzaWduZWQgdG8gY29uZmlndXJlIGEgcm91dGUgdG8gdGhhdCBzd2l0Y2guCitJbiB0aGUgY2FzZSBvZiBhIGNoYWluIG9mIHN3aXRjaGVzIHdpdGhvdXQgZW5kcG9pbnQsIG9uZSBmYWtlIGRldmljZSBJRCBpcyB1c2VkCit0byBjb25maWd1cmUgYSByb3V0ZSB0aHJvdWdoIHRoZSBlbnRpcmUgY2hhaW4gYW5kIHN3aXRjaGVzIGFyZSBkaWZmZXJlbnRpYXRlZCBieQordGhlaXIgaG9wY291bnQgdmFsdWUuCisKK0ZvciBib3RoIGVuZHBvaW50cyBhbmQgc3dpdGNoZXMgdGhlIGVudW1lcmF0b3Igd3JpdGVzIGEgdW5pcXVlIGNvbXBvbmVudCB0YWcKK2ludG8gZGV2aWNlJ3MgQ29tcG9uZW50IFRhZyBDU1IuIFRoYXQgdW5pcXVlIHZhbHVlIGlzIHVzZWQgYnkgdGhlIGVycm9yCittYW5hZ2VtZW50IG5vdGlmaWNhdGlvbiBtZWNoYW5pc20gdG8gaWRlbnRpZnkgYSBkZXZpY2UgdGhhdCBpcyByZXBvcnRpbmcgYW4KK2Vycm9yIG1hbmFnZW1lbnQgZXZlbnQuCisKK0VudW1lcmF0aW9uIGJleW9uZCBhIHN3aXRjaCBpcyBjb21wbGV0ZWQgYnkgaXRlcmF0aW5nIG92ZXIgZWFjaCBhY3RpdmUgZWdyZXNzCitwb3J0IG9mIHRoYXQgc3dpdGNoLiBGb3IgZWFjaCBhY3RpdmUgbGluaywgYSByb3V0ZSB0byBhIGRlZmF1bHQgZGV2aWNlIElECisoMHhGRiBmb3IgOC1iaXQgc3lzdGVtcyBhbmQgMHhGRkZGIGZvciAxNi1iaXQgc3lzdGVtcykgaXMgdGVtcG9yYXJpbHkgd3JpdHRlbgoraW50byB0aGUgcm91dGluZyB0YWJsZS4gVGhlIGFsZ29yaXRobSByZWN1cnMgYnkgY2FsbGluZyBpdHNlbGYgd2l0aCBob3Bjb3VudCArIDEKK2FuZCB0aGUgZGVmYXVsdCBkZXZpY2UgSUQgaW4gb3JkZXIgdG8gYWNjZXNzIHRoZSBkZXZpY2Ugb24gdGhlIGFjdGl2ZSBwb3J0LgorCitBZnRlciB0aGUgaG9zdCBoYXMgY29tcGxldGVkIGVudW1lcmF0aW9uIG9mIHRoZSBlbnRpcmUgbmV0d29yayBpdCByZWxlYXNlcworZGV2aWNlcyBieSBjbGVhcmluZyBkZXZpY2UgSUQgbG9ja3MgKGNhbGxzIHJpb19jbGVhcl9sb2NrcygpKS4gRm9yIGVhY2ggZW5kcG9pbnQKK2luIHRoZSBzeXN0ZW0sIGl0IHNldHMgdGhlIERpc2NvdmVyZWQgYml0IGluIHRoZSBQb3J0IEdlbmVyYWwgQ29udHJvbCBDU1IKK3RvIGluZGljYXRlIHRoYXQgZW51bWVyYXRpb24gaXMgY29tcGxldGVkIGFuZCBhZ2VudHMgYXJlIGFsbG93ZWQgdG8gZXhlY3V0ZQorcGFzc2l2ZSBkaXNjb3Zlcnkgb2YgdGhlIG5ldHdvcmsuCisKK1RoZSBkaXNjb3ZlcnkgcHJvY2VzcyBpcyBwZXJmb3JtZWQgYnkgYWdlbnRzIGFuZCBpcyBzaW1pbGFyIHRvIHRoZSBlbnVtZXJhdGlvbgorcHJvY2VzcyB0aGF0IGlzIGRlc2NyaWJlZCBhYm92ZS4gSG93ZXZlciwgdGhlIGRpc2NvdmVyeSBwcm9jZXNzIGlzIHBlcmZvcm1lZAord2l0aG91dCBjaGFuZ2VzIHRvIHRoZSBleGlzdGluZyByb3V0aW5nIGJlY2F1c2UgYWdlbnRzIG9ubHkgZ2F0aGVyIGluZm9ybWF0aW9uCithYm91dCBSYXBpZElPIG5ldHdvcmsgc3RydWN0dXJlIGFuZCBhcmUgYnVpbGRpbmcgYW4gaW50ZXJuYWwgbWFwIG9mIGRpc2NvdmVyZWQKK2RldmljZXMuIFRoaXMgd2F5IGVhY2ggTGludXgtYmFzZWQgY29tcG9uZW50IG9mIHRoZSBSYXBpZElPIHN1YnN5c3RlbSBoYXMKK2EgY29tcGxldGUgdmlldyBvZiB0aGUgbmV0d29yay4gVGhlIGRpc2NvdmVyeSBwcm9jZXNzIGNhbiBiZSBwZXJmb3JtZWQKK3NpbXVsdGFuZW91c2x5IGJ5IHNldmVyYWwgYWdlbnRzLiBBZnRlciBpbml0aWFsaXppbmcgaXRzIFJhcGlkSU8gbWFzdGVyIHBvcnQKK2VhY2ggYWdlbnQgd2FpdHMgZm9yIGVudW1lcmF0aW9uIGNvbXBsZXRpb24gYnkgdGhlIGhvc3QgZm9yIHRoZSBjb25maWd1cmVkIHdhaXQKK3RpbWUgcGVyaW9kLiBJZiB0aGlzIHdhaXQgdGltZSBwZXJpb2QgZXhwaXJlcyBiZWZvcmUgZW51bWVyYXRpb24gaXMgY29tcGxldGVkLAorYW4gYWdlbnQgc2tpcHMgUmFwaWRJTyBkaXNjb3ZlcnkgYW5kIGNvbnRpbnVlcyB3aXRoIHJlbWFpbmluZyBrZXJuZWwKK2luaXRpYWxpemF0aW9uLgorCis0LjUgQWRkaW5nIE5ldyBFbnVtZXJhdGlvbi9EaXNjb3ZlcnkgTWV0aG9kCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JhcGlkSU8gc3Vic3lzdGVtIGNvZGUgb3JnYW5pemF0aW9uIGFsbG93cyBhZGRpdGlvbiBvZiBuZXcgZW51bWVyYXRpb24vZGlzY292ZXJ5CittZXRob2RzIGFzIG5ldyBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aG91dCBzaWduaWZpY2FudCBpbXBhY3QgdG8gdGhlIGNvcmUKK1JhcGlkSU8gY29kZS4KKworQSBuZXcgZW51bWVyYXRpb24vZGlzY292ZXJ5IG1ldGhvZCBoYXMgdG8gYmUgYXR0YWNoZWQgdG8gb25lIG9yIG1vcmUgbXBvcnQKK2RldmljZXMgYmVmb3JlIGFuIGVudW1lcmF0aW9uL2Rpc2NvdmVyeSBwcm9jZXNzIGNhbiBiZSBzdGFydGVkLiBOb3JtYWxseSwKK21ldGhvZCdzIG1vZHVsZSBpbml0aWFsaXphdGlvbiByb3V0aW5lIGNhbGxzIHJpb19yZWdpc3Rlcl9zY2FuKCkgdG8gYXR0YWNoCithbiBlbnVtZXJhdG9yIHRvIGEgc3BlY2lmaWVkIG1wb3J0IGRldmljZSAob3IgZGV2aWNlcykuIFRoZSBiYXNpYyBlbnVtZXJhdG9yCitpbXBsZW1lbnRhdGlvbiBkZW1vbnN0cmF0ZXMgdGhpcyBwcm9jZXNzLgorCis0LjYgVXNpbmcgTG9hZGFibGUgUmFwaWRJTyBTd2l0Y2ggRHJpdmVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW4gdGhlIGNhc2Ugd2hlbiBSYXBpZElPIHN3aXRjaCBkcml2ZXJzIGFyZSBidWlsdCBhcyBsb2FkYWJsZSBtb2R1bGVzIGEgdXNlcgorbXVzdCBlbnN1cmUgdGhhdCB0aGV5IGFyZSBsb2FkZWQgYmVmb3JlIHRoZSBlbnVtZXJhdGlvbi9kaXNjb3Zlcnkgc3RhcnRzLgorVGhpcyBwcm9jZXNzIGNhbiBiZSBhdXRvbWF0ZWQgYnkgc3BlY2lmeWluZyBwcmUtIG9yIHBvc3QtIGRlcGVuZGVuY2llcyBpbiB0aGUKK1JhcGlkSU8tc3BlY2lmaWMgbW9kcHJvYmUgY29uZmlndXJhdGlvbiBmaWxlIGFzIHNob3duIGluIHRoZSBleGFtcGxlIGJlbG93LgorCisgIEZpbGUgL2V0Yy9tb2Rwcm9iZS5kL3JhcGlkaW8uY29uZjoKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICMgQ29uZmlndXJlIFJhcGlkSU8gc3Vic3lzdGVtIG1vZHVsZXMKKworICAjIFNldCBlbnVtZXJhdG9yIGhvc3QgZGVzdGluYXRpb24gSUQgKG92ZXJyaWRlcyBrZXJuZWwgY29tbWFuZCBsaW5lIG9wdGlvbikKKyAgb3B0aW9ucyByYXBpZGlvIGhkaWQ9LTEsMgorCisgICMgTG9hZCBSYXBpZElPIHN3aXRjaCBkcml2ZXJzIGltbWVkaWF0ZWx5IGFmdGVyIHJhcGlkaW8gY29yZSBtb2R1bGUgd2FzIGxvYWRlZAorICBzb2Z0ZGVwIHJhcGlkaW8gcG9zdDogaWR0X2dlbjIgaWR0Y3BzIHRzaTU3eAorCisgICMgT1IgOgorCisgICMgTG9hZCBSYXBpZElPIHN3aXRjaCBkcml2ZXJzIGp1c3QgYmVmb3JlIHJpby1zY2FuIGVudW1lcmF0b3IgbW9kdWxlIGlzIGxvYWRlZAorICBzb2Z0ZGVwIHJpby1zY2FuIHByZTogaWR0X2dlbjIgaWR0Y3BzIHRzaTU3eAorCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05PVEU6IEluIHRoZSBleGFtcGxlIGFib3ZlLCBvbmUgb2YgInNvZnRkZXAiIGNvbW1hbmRzIG11c3QgYmUgcmVtb3ZlZCBvcgorY29tbWVudGVkIG91dCB0byBrZWVwIHJlcXVpcmVkIG1vZHVsZSBsb2FkaW5nIHNlcXVlbmNlLgorCitBLiBSZWZlcmVuY2VzCistLS0tLS0tLS0tLS0tCisKK1sxXSBSYXBpZElPIFRyYWRlIEFzc29jaWF0aW9uLiBSYXBpZElPIEludGVyY29ubmVjdCBTcGVjaWZpY2F0aW9ucy4KKyAgICBodHRwOi8vd3d3LnJhcGlkaW8ub3JnLgorWzJdIFJhcGlkaW8gVEEuIFRlY2hub2xvZ3kgQ29tcGFyaXNvbnMuCisgICAgaHR0cDovL3d3dy5yYXBpZGlvLm9yZy9lZHVjYXRpb24vdGVjaG5vbG9neV9jb21wYXJpc29ucy8KK1szXSBSYXBpZElPIHN1cHBvcnQgZm9yIExpbnV4LgorICAgIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzEzOTExOC8KK1s0XSBNYXR0IFBvcnRlci4gUmFwaWRJTyBmb3IgTGludXguIE90dGF3YSBMaW51eCBTeW1wb3NpdW0sIDIwMDUKKyAgICBodHRwOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL29scy8yMDA1L29sczIwMDV2Mi1wYWdlcy00My01Ni5wZGYKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcmFwaWRpby9zeXNmcy50eHQgYi9Eb2N1bWVudGF0aW9uL3JhcGlkaW8vc3lzZnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3Y2U5YTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3JhcGlkaW8vc3lzZnMudHh0CkBAIC0wLDAgKzEsMTU4IEBACisgICAgICAgICAgICAgICAgICAgICAgICAgUmFwaWRJTyBzeXNmcyBGaWxlcworCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisxLiBSYXBpZElPIERldmljZSBTdWJkaXJlY3RvcmllcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRm9yIGVhY2ggUmFwaWRJTyBkZXZpY2UsIHRoZSBSYXBpZElPIHN1YnN5c3RlbSBjcmVhdGVzIGZpbGVzIGluIGFuIGluZGl2aWR1YWwKK3N1YmRpcmVjdG9yeSB3aXRoIHRoZSBmb2xsb3dpbmcgbmFtZSwgL3N5cy9idXMvcmFwaWRpby9kZXZpY2VzLzxkZXZpY2VfbmFtZT4uCisKK1RoZSBmb3JtYXQgb2YgZGV2aWNlX25hbWUgaXMgIm5uOmQ6aWlpaSIsIHdoZXJlOgorCitubiAtIHR3by1kaWdpdCBoZXhhZGVjaW1hbCBJRCBvZiBSYXBpZElPIG5ldHdvcmsgd2hlcmUgdGhlIGRldmljZSByZXNpZGVzCitkICAtIGRldmljZSB0eXByOiAnZScgLSBmb3IgZW5kcG9pbnQgb3IgJ3MnIC0gZm9yIHN3aXRjaAoraWlpaSAtIGZvdXItZGlnaXQgZGV2aWNlIGRlc3RJRCBmb3IgZW5kcG9pbnRzLCBvciBzd2l0Y2hJRCBmb3Igc3dpdGNoZXMKKworRm9yIGV4YW1wbGUsIGJlbG93IGlzIGEgbGlzdCBvZiBkZXZpY2UgZGlyZWN0b3JpZXMgdGhhdCByZXByZXNlbnRzIGEgdHlwaWNhbAorUmFwaWRJTyBuZXR3b3JrIHdpdGggb25lIHN3aXRjaCwgb25lIGhvc3QsIGFuZCB0d28gYWdlbnQgZW5kcG9pbnRzLCBhcyBpdCBpcworc2VlbiBieSB0aGUgZW51bWVyYXRpbmcgaG9zdCAoZGVzdElEID0gMSk6CisKKy9zeXMvYnVzL3JhcGlkaW8vZGV2aWNlcy8wMDplOjAwMDAKKy9zeXMvYnVzL3JhcGlkaW8vZGV2aWNlcy8wMDplOjAwMDIKKy9zeXMvYnVzL3JhcGlkaW8vZGV2aWNlcy8wMDpzOjAwMDEKKworTk9URTogQW4gZW51bWVyYXRpbmcgb3IgZGlzY292ZXJpbmcgZW5kcG9pbnQgZG9lcyBub3QgY3JlYXRlIGEgc3lzZnMgZW50cnkgZm9yCitpdHNlbGYsIHRoaXMgaXMgd2h5IGFuIGVuZHBvaW50IHdpdGggZGVzdElEPTEgaXMgbm90IHNob3duIGluIHRoZSBsaXN0LgorCisyLiBBdHRyaWJ1dGVzIENvbW1vbiBmb3IgQWxsIFJhcGlkSU8gRGV2aWNlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRWFjaCBkZXZpY2Ugc3ViZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb25hbCByZWFkLW9ubHkgZmlsZXM6CisKKyAgICAgICBkaWQgLSByZXR1cm5zIHRoZSBkZXZpY2UgaWRlbnRpZmllcgorICAgICAgIHZpZCAtIHJldHVybnMgdGhlIGRldmljZSB2ZW5kb3IgaWRlbnRpZmllcgorZGV2aWNlX3JldiAtIHJldHVybnMgdGhlIGRldmljZSByZXZpc2lvbiBsZXZlbAorICAgYXNtX2RpZCAtIHJldHVybnMgaWRlbnRpZmllciBmb3IgdGhlIGFzc2VtYmx5IGNvbnRhaW5pbmcgdGhlIGRldmljZQorICAgYXNtX3JldiAtIHJldHVybnMgcmV2aXNpb24gbGV2ZWwgb2YgdGhlIGFzc2VtYmx5IGNvbnRhaW5pbmcgdGhlIGRldmljZQorICAgYXNtX3ZpZCAtIHJldHVybnMgdmVuZG9yIGlkZW50aWZpZXIgb2YgdGhlIGFzc2VtYmx5IGNvbnRhaW5pbmcgdGhlIGRldmljZQorICAgZGVzdGlkICAtIHJldHVybnMgZGV2aWNlIGRlc3RpbmF0aW9uIElEIGFzc2lnbmVkIGJ5IHRoZSBlbnVtZXJhdGlvbiByb3V0aW5lCisgICAgICAgICAgICAgKHNlZSA0LjEgZm9yIHN3aXRjaCBzcGVjaWZpYyBkZXRhaWxzKQorICAgbHByZXYgICAtIHJldHVybnMgbmFtZSBvZiBwcmV2aW91cyBkZXZpY2UgKHN3aXRjaCkgb24gdGhlIHBhdGggdG8gdGhlIGRldmljZQorICAgICAgICAgICAgIHRoYXQgdGhhdCBvd25zIHRoaXMgYXR0cmlidXRlCisgIG1vZGFsaWFzIC0gcmV0dXJucyB0aGUgZGV2aWNlIG1vZGFsaWFzCisKK0luIGFkZGl0aW9uIHRvIHRoZSBmaWxlcyBsaXN0ZWQgYWJvdmUsIGVhY2ggZGV2aWNlIGhhcyBhIGJpbmFyeSBhdHRyaWJ1dGUgZmlsZQordGhhdCBhbGxvd3MgcmVhZC93cml0ZSBhY2Nlc3MgdG8gdGhlIGRldmljZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyB1c2luZwordGhlIFJhcGlkSU8gbWFpbnRlbmFuY2UgdHJhbnNhY3Rpb25zOgorCisgY29uZmlnIC0gcmVhZHMgZnJvbSBhbmQgd3JpdGVzIHRvIHRoZSBkZXZpY2UgY29uZmlndXJhdGlvbiByZWdpc3RlcnMuCisKK1RoaXMgYXR0cmlidXRlIGlzIHNpbWlsYXIgaW4gYmVoYXZpb3IgdG8gdGhlICJjb25maWciIGF0dHJpYnV0ZSBvZiBQQ0kgZGV2aWNlcworYW5kIHByb3ZpZGVzIGFuIGFjY2VzcyB0byB0aGUgUmFwaWRJTyBkZXZpY2UgcmVnaXN0ZXJzIHVzaW5nIHN0YW5kYXJkIGZpbGUgcmVhZAorYW5kIHdyaXRlIG9wZXJhdGlvbnMuCisKKzMuIFJhcGlkSU8gRW5kcG9pbnQgRGV2aWNlIEF0dHJpYnV0ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ3VycmVudGx5IExpbnV4IFJhcGlkSU8gc3Vic3lzdGVtIGRvZXMgbm90IGNyZWF0ZSBhbnkgZW5kcG9pbnQgc3BlY2lmaWMgc3lzZnMKK2F0dHJpYnV0ZXMuIEl0IGlzIHBvc3NpYmxlIHRoYXQgUmFwaWRJTyBtYXN0ZXIgcG9ydCBkcml2ZXJzIGFuZCBlbmRwb2ludCBkZXZpY2UKK2RyaXZlcnMgd2lsbCBhZGQgdGhlaXIgZGV2aWNlLXNwZWNpZmljIHN5c2ZzIGF0dHJpYnV0ZXMgYnV0IHN1Y2ggYXR0cmlidXRlcyBhcmUKK291dHNpZGUgdGhlIHNjb3BlIG9mIHRoaXMgZG9jdW1lbnQuCisKKzQuIFJhcGlkSU8gU3dpdGNoIERldmljZSBBdHRyaWJ1dGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSYXBpZElPIHN3aXRjaGVzIGhhdmUgYWRkaXRpb25hbCBhdHRyaWJ1dGVzIGluIHN5c2ZzLiBSYXBpZElPIHN1YnN5c3RlbSBzdXBwb3J0cworY29tbW9uIGFuZCBkZXZpY2Utc3BlY2lmaWMgc3lzZnMgYXR0cmlidXRlcyBmb3Igc3dpdGNoZXMuIEJlY2F1c2Ugc3dpdGNoZXMgYXJlCitpbnRlZ3JhdGVkIGludG8gdGhlIFJhcGlkSU8gc3Vic3lzdGVtLCBpdCBvZmZlcnMgYSBtZXRob2QgdG8gY3JlYXRlCitkZXZpY2Utc3BlY2lmaWMgc3lzZnMgYXR0cmlidXRlcyBieSBzcGVjaWZ5aW5nIGEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBtYXkgYmUKK3NldCBieSB0aGUgc3dpdGNoIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgZHVyaW5nIGVudW1lcmF0aW9uIG9yIGRpc2NvdmVyeSBwcm9jZXNzLgorCis0LjEgQ29tbW9uIFN3aXRjaCBBdHRyaWJ1dGVzCisKKyAgIHJvdXRlcyAtIHJlcG9ydHMgc3dpdGNoIHJvdXRpbmcgaW5mb3JtYXRpb24gaW4gImRlc3RJRCBwb3J0IiBmb3JtYXQuIFRoaXMKKyAgICAgICAgICAgIGF0dHJpYnV0ZSByZXBvcnRzIG9ubHkgdmFsaWQgcm91dGluZyB0YWJsZSBlbnRyaWVzLCBvbmUgbGluZSBmb3IKKyAgICAgICAgICAgIGVhY2ggZW50cnkuCisgICBkZXN0aWQgLSBkZXZpY2UgZGVzdGluYXRpb24gSUQgdGhhdCBkZWZpbmVzIGEgcm91dGUgdG8gdGhlIHN3aXRjaAorIGhvcGNvdW50IC0gbnVtYmVyIG9mIGhvcHMgb24gdGhlIHBhdGggdG8gdGhlIHN3aXRjaAorICAgIGxuZXh0IC0gcmV0dXJucyBuYW1lcyBvZiBkZXZpY2VzIGxpbmtlZCB0byB0aGUgc3dpdGNoIGV4Y2VwdCBvbmUgb2YgYSBkZXZpY2UKKyAgICAgICAgICAgIGxpbmtlZCB0byB0aGUgaW5ncmVzcyBwb3J0IChyZXBvcnRlZCBhcyAibHByZXYiKS4gVGhpcyBpcyBhbiBhcnJheQorICAgICAgICAgICAgbmFtZXMgd2l0aCBudW1iZXIgb2YgbGluZXMgZXF1YWwgdG8gbnVtYmVyIG9mIHBvcnRzIGluIHN3aXRjaC4gSWYKKyAgICAgICAgICAgIGEgc3dpdGNoIHBvcnQgaGFzIG5vIGF0dGFjaGVkIGRldmljZSwgcmV0dXJucyAibnVsbCIgaW5zdGVhZCBvZgorICAgICAgICAgICAgYSBkZXZpY2UgbmFtZS4KKworNC4yIERldmljZS1zcGVjaWZpYyBTd2l0Y2ggQXR0cmlidXRlcworCitEZXZpY2Utc3BlY2lmaWMgc3dpdGNoIGF0dHJpYnV0ZXMgYXJlIGxpc3RlZCBmb3IgZWFjaCBSYXBpZElPIHN3aXRjaCBkcml2ZXIKK3RoYXQgZXhwb3J0cyBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMuCisKK0lEVF9HRU4yOgorIGVycmxvZyAtIHJlYWRzIGNvbnRlbnRzIG9mIGRldmljZSBlcnJvciBsb2cgdW50aWwgaXQgaXMgZW1wdHkuCisKKworNS4gUmFwaWRJTyBCdXMgQXR0cmlidXRlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSYXBpZElPIGJ1cyBzdWJkaXJlY3RvcnkgL3N5cy9idXMvcmFwaWRpbyBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgYnVzLXNwZWNpZmljCithdHRyaWJ1dGU6CisKKyAgc2NhbiAtIGFsbG93cyB0byB0cmlnZ2VyIGVudW1lcmF0aW9uIGRpc2NvdmVyeSBwcm9jZXNzIGZyb20gdXNlciBzcGFjZS4gVGhpcworCSBpcyBhIHdyaXRlLW9ubHkgYXR0cmlidXRlLiBUbyBpbml0aWF0ZSBhbiBlbnVtZXJhdGlvbiBvciBkaXNjb3ZlcnkKKwkgcHJvY2VzcyBvbiBzcGVjaWZpYyBtcG9ydCBkZXZpY2UsIGEgdXNlciBuZWVkcyB0byB3cml0ZSBtcG9ydF9JRCAobm90CisJIFJhcGlkSU8gZGVzdGluYXRpb24gSUQpIGludG8gdGhpcyBmaWxlLiBUaGUgbXBvcnRfSUQgaXMgYSBzZXF1ZW50aWFsCisJIG51bWJlciAoMCAuLi4gUklPX01BWF9NUE9SVFMpIGFzc2lnbmVkIHRvIHRoZSBtcG9ydCBkZXZpY2UuCisJIEZvciBleGFtcGxlLCBmb3IgYSBtYWNoaW5lIHdpdGggYSBzaW5nbGUgUmFwaWRJTyBjb250cm9sbGVyLCBtcG9ydF9JRAorCSBmb3IgdGhhdCBjb250cm9sbGVyIGFsd2F5cyB3aWxsIGJlIDAuCisJIFRvIGluaXRpYXRlIFJhcGlkSU8gZW51bWVyYXRpb24vZGlzY292ZXJ5IG9uIGFsbCBhdmFpbGFibGUgbXBvcnRzCisJIGEgdXNlciBtdXN0IHdyaXRlICctMScgKG9yIFJJT19NUE9SVF9BTlkpIGludG8gdGhpcyBhdHRyaWJ1dGUgZmlsZS4KKworCis2LiBSYXBpZElPIEJ1cyBDb250cm9sbGVycy9Qb3J0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT24tY2hpcCBSYXBpZElPIGNvbnRyb2xsZXJzIGFuZCBQQ0llLXRvLVJhcGlkSU8gYnJpZGdlcyAocmVmZXJlbmNlZCBhcworIk1hc3RlciBQb3J0IiBvciAibXBvcnQiKSBhcmUgcHJlc2VudGVkIGluIHN5c2ZzIGFzIHRoZSBzcGVjaWFsIGNsYXNzIG9mCitkZXZpY2VzOiAicmFwaWRpb19wb3J0Ii4KKworVGhlIC9zeXMvY2xhc3MvcmFwaWRpb19wb3J0IHN1YmRpcmVjdG9yeSBjb250YWlucyBpbmRpdmlkdWFsIHN1YmRpcmVjdG9yaWVzCituYW1lZCBhcyAicmFwaWRpb04iIHdoZXJlIE4gPSBtcG9ydCBJRCByZWdpc3RlcmVkIHdpdGggUmFwaWRJTyBzdWJzeXN0ZW0uCisKK05PVEU6IEFuIG1wb3J0IElEIGlzIG5vdCBhIFJhcGlkSU8gZGVzdGluYXRpb24gSUQgYXNzaWduZWQgdG8gYSBnaXZlbiBsb2NhbAorbXBvcnQgZGV2aWNlLgorCitFYWNoIG1wb3J0IGRldmljZSBzdWJkaXJlY3RvcnkgaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgZW50cmllcyBjb250YWlucyB0aGUKK2ZvbGxvd2luZyBkZXZpY2Utc3BlY2lmaWMgYXR0cmlidXRlczoKKworICAgcG9ydF9kZXN0aWQgLSByZXBvcnRzIFJhcGlkSU8gZGVzdGluYXRpb24gSUQgYXNzaWduZWQgdG8gdGhlIGdpdmVuIFJhcGlkSU8KKyAgICAgICAgICAgICAgICAgbXBvcnQgZGV2aWNlLiBJZiB2YWx1ZSAweEZGRkZGRkZGIGlzIHJldHVybmVkIHRoaXMgbWVhbnMgdGhhdAorICAgICAgICAgICAgICAgICBubyB2YWxpZCBkZXN0aW5hdGlvbiBJRCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gdGhlIG1wb3J0ICh5ZXQpLgorICAgICAgICAgICAgICAgICBOb3JtYWxseSwgYmVmb3JlIGVudW1lcmF0aW9uL2Rpc2NvdmVyeSBoYXZlIGJlZW4gZXhlY3V0ZWQgb25seQorICAgICAgICAgICAgICAgICBmYWJyaWMgZW51bWVyYXRpbmcgbXBvcnRzIGhhdmUgYSB2YWxpZCBkZXN0aW5hdGlvbiBJRCBhc3NpZ25lZAorICAgICAgICAgICAgICAgICB0byB0aGVtIHVzaW5nICJoZGlkPS4uLiIgcmFwaWRpbyBtb2R1bGUgcGFyYW1ldGVyLgorICAgICAgc3lzX3NpemUgLSByZXBvcnRzIFJhcGlkSU8gY29tbW9uIHRyYW5zcG9ydCBzeXN0ZW0gc2l6ZToKKyAgICAgICAgICAgICAgICAgICAwID0gc21hbGwgKDgtYml0IGRlc3RpbmF0aW9uIElELCBtYXguIDI1NiBkZXZpY2VzKSwKKyAgICAgICAgICAgICAgICAgICAxID0gbGFyZ2UgKDE2LWJpdCBkZXN0aW5hdGlvbiBJRCwgbWF4LiA2NTUzNiBkZXZpY2VzKS4KKworQWZ0ZXIgZW51bWVyYXRpb24gb3IgZGlzY292ZXJ5IHdhcyBwZXJmb3JtZWQgZm9yIGEgZ2l2ZW4gbXBvcnQgZGV2aWNlLAordGhlIGNvcnJlc3BvbmRpbmcgc3ViZGlyZWN0b3J5IHdpbGwgYWxzbyBjb250YWluIHN1YmRpcmVjdG9yaWVzIGZvciBlYWNoCitjaGlsZCBSYXBpZElPIGRldmljZSBjb25uZWN0ZWQgdG8gdGhlIG1wb3J0LiBOYW1pbmcgY29udmVudGlvbnMgZm9yIFJhcGlkSU8KK2RldmljZXMgYXJlIGRlc2NyaWJlZCBpbiBTZWN0aW9uIDEgYWJvdmUuCisKK1RoZSBleGFtcGxlIGJlbG93IHNob3dzIG1wb3J0IGRldmljZSBzdWJkaXJlY3Rvcnkgd2l0aCBzZXZlcmFsIGNoaWxkIFJhcGlkSU8KK2RldmljZXMgYXR0YWNoZWQgdG8gaXQuCisKK1tyaW9AcmFwaWRpbyB+XSQgbHMgL3N5cy9jbGFzcy9yYXBpZGlvX3BvcnQvcmFwaWRpbzAvIC1sCit0b3RhbCAwCitkcnd4ci14ci14IDMgcm9vdCByb290ICAgIDAgRmViIDExIDE1OjEwIDAwOmU6MDAwMQorZHJ3eHIteHIteCAzIHJvb3Qgcm9vdCAgICAwIEZlYiAxMSAxNToxMCAwMDplOjAwMDQKK2Ryd3hyLXhyLXggMyByb290IHJvb3QgICAgMCBGZWIgMTEgMTU6MTAgMDA6ZTowMDA3Citkcnd4ci14ci14IDMgcm9vdCByb290ICAgIDAgRmViIDExIDE1OjEwIDAwOnM6MDAwMgorZHJ3eHIteHIteCAzIHJvb3Qgcm9vdCAgICAwIEZlYiAxMSAxNToxMCAwMDpzOjAwMDMKK2Ryd3hyLXhyLXggMyByb290IHJvb3QgICAgMCBGZWIgMTEgMTU6MTAgMDA6czowMDA1Citscnd4cnd4cnd4IDEgcm9vdCByb290ICAgIDAgRmViIDExIDE1OjExIGRldmljZSAtPiAuLi8uLi8uLi8wMDAwOjAxOjAwLjAKKy1yLS1yLS1yLS0gMSByb290IHJvb3QgNDA5NiBGZWIgMTEgMTU6MTEgcG9ydF9kZXN0aWQKK2Ryd3hyLXhyLXggMiByb290IHJvb3QgICAgMCBGZWIgMTEgMTU6MTEgcG93ZXIKK2xyd3hyd3hyd3ggMSByb290IHJvb3QgICAgMCBGZWIgMTEgMTU6MDQgc3Vic3lzdGVtIC0+IC4uLy4uLy4uLy4uLy4uLy4uL2NsYXNzL3JhcGlkaW9fcG9ydAorLXItLXItLXItLSAxIHJvb3Qgcm9vdCA0MDk2IEZlYiAxMSAxNToxMSBzeXNfc2l6ZQorLXJ3LXItLXItLSAxIHJvb3Qgcm9vdCA0MDk2IEZlYiAxMSAxNTowNCB1ZXZlbnQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcmFwaWRpby90c2k3MjEudHh0IGIvRG9jdW1lbnRhdGlvbi9yYXBpZGlvL3RzaTcyMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI2MDUyZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcmFwaWRpby90c2k3MjEudHh0CkBAIC0wLDAgKzEsNjIgQEAKK1JhcGlkSU8gc3Vic3lzdGVtIG1wb3J0IGRyaXZlciBmb3IgSURUIFRzaTcyMSBQQ0kgRXhwcmVzcy10by1TUklPIGJyaWRnZS4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSS4gT3ZlcnZpZXcKKworVGhpcyBkcml2ZXIgaW1wbGVtZW50cyBhbGwgY3VycmVudGx5IGRlZmluZWQgUmFwaWRJTyBtcG9ydCBjYWxsYmFjayBmdW5jdGlvbnMuCitJdCBzdXBwb3J0cyBtYWludGVuYW5jZSByZWFkIGFuZCB3cml0ZSBvcGVyYXRpb25zLCBpbmJvdW5kIGFuZCBvdXRib3VuZCBSYXBpZElPCitkb29yYmVsbHMsIGluYm91bmQgbWFpbnRlbmFuY2UgcG9ydC13cml0ZXMgYW5kIFJhcGlkSU8gbWVzc2FnaW5nLgorCitUbyBnZW5lcmF0ZSBTUklPIG1haW50ZW5hbmNlIHRyYW5zYWN0aW9ucyB0aGlzIGRyaXZlciB1c2VzIG9uZSBvZiBUc2k3MjEgRE1BCitjaGFubmVscy4gVGhpcyBtZWNoYW5pc20gcHJvdmlkZXMgYWNjZXNzIHRvIGxhcmdlciByYW5nZSBvZiBob3AgY291bnRzIGFuZAorZGVzdGluYXRpb24gSURzIHdpdGhvdXQgbmVlZCBmb3IgY2hhbmdlcyBpbiBvdXRib3VuZCB3aW5kb3cgdHJhbnNsYXRpb24uCisKK1JhcGlkSU8gbWVzc2FnaW5nIHN1cHBvcnQgdXNlcyBkZWRpY2F0ZWQgbWVzc2FnaW5nIGNoYW5uZWxzIGZvciBlYWNoIG1haWxib3guCitGb3IgaW5ib3VuZCBtZXNzYWdlcyB0aGlzIGRyaXZlciB1c2VzIGRlc3RpbmF0aW9uIElEIG1hdGNoaW5nIHRvIGZvcndhcmQgbWVzc2FnZXMKK2ludG8gdGhlIGNvcnJlc3BvbmRpbmcgbWVzc2FnZSBxdWV1ZS4gTWVzc2FnaW5nIGNhbGxiYWNrcyBhcmUgaW1wbGVtZW50ZWQgdG8gYmUKK2Z1bGx5IGNvbXBhdGlibGUgd2l0aCBSSU9ORVQgZHJpdmVyIChFdGhlcm5ldCBvdmVyIFJhcGlkSU8gbWVzc2FnaW5nIHNlcnZpY2VzKS4KKworSUkuIEtub3duIHByb2JsZW1zCisKKyAgTm9uZS4KKworSUlJLiBETUEgRW5naW5lIFN1cHBvcnQKKworVHNpNzIxIG1wb3J0IGRyaXZlciBzdXBwb3J0cyBETUEgZGF0YSB0cmFuc2ZlcnMgYmV0d2VlbiBsb2NhbCBzeXN0ZW0gbWVtb3J5IGFuZAorcmVtb3RlIFJhcGlkSU8gZGV2aWNlcy4gVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGltcGxlbWVudGVkIGFjY29yZGluZyB0byBTTEFWRQorbW9kZSBBUEkgZGVmaW5lZCBieSBjb21tb24gTGludXgga2VybmVsIERNQSBFbmdpbmUgZnJhbWV3b3JrLgorCitEZXBlbmRpbmcgb24gc3lzdGVtIHJlcXVpcmVtZW50cyBSYXBpZElPIERNQSBvcGVyYXRpb25zIGNhbiBiZSBpbmNsdWRlZC9leGNsdWRlZAorYnkgc2V0dGluZyBDT05GSUdfUkFQSURJT19ETUFfRU5HSU5FIG9wdGlvbi4gVHNpNzIxIG1pbmlwb3J0IGRyaXZlciB1c2VzIHNldmVuCitvdXQgb2YgZWlnaHQgYXZhaWxhYmxlIEJETUEgY2hhbm5lbHMgdG8gc3VwcG9ydCBETUEgZGF0YSB0cmFuc2ZlcnMuCitPbmUgQkRNQSBjaGFubmVsIGlzIHJlc2VydmVkIGZvciBnZW5lcmF0aW9uIG9mIG1haW50ZW5hbmNlIHJlYWQvd3JpdGUgcmVxdWVzdHMuCisKK0lmIFRzaTcyMSBtcG9ydCBkcml2ZXIgaGF2ZSBiZWVuIGJ1aWx0IHdpdGggUkFQSURJT19ETUFfRU5HSU5FIHN1cHBvcnQgaW5jbHVkZWQsCit0aGlzIGRyaXZlciB3aWxsIGFjY2VwdCBETUEtc3BlY2lmaWMgbW9kdWxlIHBhcmFtZXRlcjoKKyAgImRtYV9kZXNjX3Blcl9jaGFubmVsIiAtIGRlZmluZXMgbnVtYmVyIG9mIGhhcmR3YXJlIGJ1ZmZlciBkZXNjcmlwdG9ycyB1c2VkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICBlYWNoIEJETUEgY2hhbm5lbCBvZiBUc2k3MjEgKGJ5IGRlZmF1bHQgLSAxMjgpLgorCitJVi4gVmVyc2lvbiBIaXN0b3J5CisKKyAgMS4xLjAgLSBETUEgb3BlcmF0aW9ucyByZS13b3JrZWQgdG8gc3VwcG9ydCBkYXRhIHNjYXR0ZXIvZ2F0aGVyIGxpc3RzIGxhcmdlcgorICAgICAgICAgIHRoYW4gaGFyZHdhcmUgYnVmZmVyIGRlc2NyaXB0b3JzIHJpbmcuCisgIDEuMC4wIC0gSW5pdGlhbCBkcml2ZXIgcmVsZWFzZS4KKworVi4gIExpY2Vuc2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgQ29weXJpZ2h0KGMpIDIwMTEgSW50ZWdyYXRlZCBEZXZpY2UgVGVjaG5vbG9neSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlCisgIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorICBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgIG1vcmUgZGV0YWlscy4KKworICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorICA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcsIFVTQS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcmJ0cmVlLnR4dCBiL0RvY3VtZW50YXRpb24vcmJ0cmVlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWQ5Y2M1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9yYnRyZWUudHh0CkBAIC0wLDAgKzEsMzkyIEBACitSZWQtYmxhY2sgVHJlZXMgKHJidHJlZSkgaW4gTGludXgKK0phbnVhcnkgMTgsIDIwMDcKK1JvYiBMYW5kbGV5IDxyb2JAbGFuZGxleS5uZXQ+Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitXaGF0IGFyZSByZWQtYmxhY2sgdHJlZXMsIGFuZCB3aGF0IGFyZSB0aGV5IGZvcj8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZWQtYmxhY2sgdHJlZXMgYXJlIGEgdHlwZSBvZiBzZWxmLWJhbGFuY2luZyBiaW5hcnkgc2VhcmNoIHRyZWUsIHVzZWQgZm9yCitzdG9yaW5nIHNvcnRhYmxlIGtleS92YWx1ZSBkYXRhIHBhaXJzLiAgVGhpcyBkaWZmZXJzIGZyb20gcmFkaXggdHJlZXMgKHdoaWNoCithcmUgdXNlZCB0byBlZmZpY2llbnRseSBzdG9yZSBzcGFyc2UgYXJyYXlzIGFuZCB0aHVzIHVzZSBsb25nIGludGVnZXIgaW5kZXhlcwordG8gaW5zZXJ0L2FjY2Vzcy9kZWxldGUgbm9kZXMpIGFuZCBoYXNoIHRhYmxlcyAod2hpY2ggYXJlIG5vdCBrZXB0IHNvcnRlZCB0bworYmUgZWFzaWx5IHRyYXZlcnNlZCBpbiBvcmRlciwgYW5kIG11c3QgYmUgdHVuZWQgZm9yIGEgc3BlY2lmaWMgc2l6ZSBhbmQKK2hhc2ggZnVuY3Rpb24gd2hlcmUgcmJ0cmVlcyBzY2FsZSBncmFjZWZ1bGx5IHN0b3JpbmcgYXJiaXRyYXJ5IGtleXMpLgorCitSZWQtYmxhY2sgdHJlZXMgYXJlIHNpbWlsYXIgdG8gQVZMIHRyZWVzLCBidXQgcHJvdmlkZSBmYXN0ZXIgcmVhbC10aW1lIGJvdW5kZWQKK3dvcnN0IGNhc2UgcGVyZm9ybWFuY2UgZm9yIGluc2VydGlvbiBhbmQgZGVsZXRpb24gKGF0IG1vc3QgdHdvIHJvdGF0aW9ucyBhbmQKK3RocmVlIHJvdGF0aW9ucywgcmVzcGVjdGl2ZWx5LCB0byBiYWxhbmNlIHRoZSB0cmVlKSwgd2l0aCBzbGlnaHRseSBzbG93ZXIKKyhidXQgc3RpbGwgTyhsb2cgbikpIGxvb2t1cCB0aW1lLgorCitUbyBxdW90ZSBMaW51eCBXZWVrbHkgTmV3czoKKworICAgIFRoZXJlIGFyZSBhIG51bWJlciBvZiByZWQtYmxhY2sgdHJlZXMgaW4gdXNlIGluIHRoZSBrZXJuZWwuCisgICAgVGhlIGRlYWRsaW5lIGFuZCBDRlEgSS9PIHNjaGVkdWxlcnMgZW1wbG95IHJidHJlZXMgdG8KKyAgICB0cmFjayByZXF1ZXN0czsgdGhlIHBhY2tldCBDRC9EVkQgZHJpdmVyIGRvZXMgdGhlIHNhbWUuCisgICAgVGhlIGhpZ2gtcmVzb2x1dGlvbiB0aW1lciBjb2RlIHVzZXMgYW4gcmJ0cmVlIHRvIG9yZ2FuaXplIG91dHN0YW5kaW5nCisgICAgdGltZXIgcmVxdWVzdHMuICBUaGUgZXh0MyBmaWxlc3lzdGVtIHRyYWNrcyBkaXJlY3RvcnkgZW50cmllcyBpbiBhCisgICAgcmVkLWJsYWNrIHRyZWUuICBWaXJ0dWFsIG1lbW9yeSBhcmVhcyAoVk1BcykgYXJlIHRyYWNrZWQgd2l0aCByZWQtYmxhY2sKKyAgICB0cmVlcywgYXMgYXJlIGVwb2xsIGZpbGUgZGVzY3JpcHRvcnMsIGNyeXB0b2dyYXBoaWMga2V5cywgYW5kIG5ldHdvcmsKKyAgICBwYWNrZXRzIGluIHRoZSAiaGllcmFyY2hpY2FsIHRva2VuIGJ1Y2tldCIgc2NoZWR1bGVyLgorCitUaGlzIGRvY3VtZW50IGNvdmVycyB1c2Ugb2YgdGhlIExpbnV4IHJidHJlZSBpbXBsZW1lbnRhdGlvbi4gIEZvciBtb3JlCitpbmZvcm1hdGlvbiBvbiB0aGUgbmF0dXJlIGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBSZWQgQmxhY2sgVHJlZXMsICBzZWU6CisKKyAgTGludXggV2Vla2x5IE5ld3MgYXJ0aWNsZSBvbiByZWQtYmxhY2sgdHJlZXMKKyAgICBodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8xODQ0OTUvCisKKyAgV2lraXBlZGlhIGVudHJ5IG9uIHJlZC1ibGFjayB0cmVlcworICAgIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVkLWJsYWNrX3RyZWUKKworTGludXggaW1wbGVtZW50YXRpb24gb2YgcmVkLWJsYWNrIHRyZWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTGludXgncyByYnRyZWUgaW1wbGVtZW50YXRpb24gbGl2ZXMgaW4gdGhlIGZpbGUgImxpYi9yYnRyZWUuYyIuICBUbyB1c2UgaXQsCisiI2luY2x1ZGUgPGxpbnV4L3JidHJlZS5oPiIuCisKK1RoZSBMaW51eCByYnRyZWUgaW1wbGVtZW50YXRpb24gaXMgb3B0aW1pemVkIGZvciBzcGVlZCwgYW5kIHRodXMgaGFzIG9uZQorbGVzcyBsYXllciBvZiBpbmRpcmVjdGlvbiAoYW5kIGJldHRlciBjYWNoZSBsb2NhbGl0eSkgdGhhbiBtb3JlIHRyYWRpdGlvbmFsCit0cmVlIGltcGxlbWVudGF0aW9ucy4gIEluc3RlYWQgb2YgdXNpbmcgcG9pbnRlcnMgdG8gc2VwYXJhdGUgcmJfbm9kZSBhbmQgZGF0YQorc3RydWN0dXJlcywgZWFjaCBpbnN0YW5jZSBvZiBzdHJ1Y3QgcmJfbm9kZSBpcyBlbWJlZGRlZCBpbiB0aGUgZGF0YSBzdHJ1Y3R1cmUKK2l0IG9yZ2FuaXplcy4gIEFuZCBpbnN0ZWFkIG9mIHVzaW5nIGEgY29tcGFyaXNvbiBjYWxsYmFjayBmdW5jdGlvbiBwb2ludGVyLAordXNlcnMgYXJlIGV4cGVjdGVkIHRvIHdyaXRlIHRoZWlyIG93biB0cmVlIHNlYXJjaCBhbmQgaW5zZXJ0IGZ1bmN0aW9ucword2hpY2ggY2FsbCB0aGUgcHJvdmlkZWQgcmJ0cmVlIGZ1bmN0aW9ucy4gIExvY2tpbmcgaXMgYWxzbyBsZWZ0IHVwIHRvIHRoZQordXNlciBvZiB0aGUgcmJ0cmVlIGNvZGUuCisKK0NyZWF0aW5nIGEgbmV3IHJidHJlZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RhdGEgbm9kZXMgaW4gYW4gcmJ0cmVlIHRyZWUgYXJlIHN0cnVjdHVyZXMgY29udGFpbmluZyBhIHN0cnVjdCByYl9ub2RlIG1lbWJlcjoKKworICBzdHJ1Y3QgbXl0eXBlIHsKKyAgCXN0cnVjdCByYl9ub2RlIG5vZGU7CisgIAljaGFyICprZXlzdHJpbmc7CisgIH07CisKK1doZW4gZGVhbGluZyB3aXRoIGEgcG9pbnRlciB0byB0aGUgZW1iZWRkZWQgc3RydWN0IHJiX25vZGUsIHRoZSBjb250YWluaW5nIGRhdGEKK3N0cnVjdHVyZSBtYXkgYmUgYWNjZXNzZWQgd2l0aCB0aGUgc3RhbmRhcmQgY29udGFpbmVyX29mKCkgbWFjcm8uICBJbiBhZGRpdGlvbiwKK2luZGl2aWR1YWwgbWVtYmVycyBtYXkgYmUgYWNjZXNzZWQgZGlyZWN0bHkgdmlhIHJiX2VudHJ5KG5vZGUsIHR5cGUsIG1lbWJlcikuCisKK0F0IHRoZSByb290IG9mIGVhY2ggcmJ0cmVlIGlzIGFuIHJiX3Jvb3Qgc3RydWN0dXJlLCB3aGljaCBpcyBpbml0aWFsaXplZCB0byBiZQorZW1wdHkgdmlhOgorCisgIHN0cnVjdCByYl9yb290IG15dHJlZSA9IFJCX1JPT1Q7CisKK1NlYXJjaGluZyBmb3IgYSB2YWx1ZSBpbiBhbiByYnRyZWUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV3JpdGluZyBhIHNlYXJjaCBmdW5jdGlvbiBmb3IgeW91ciB0cmVlIGlzIGZhaXJseSBzdHJhaWdodGZvcndhcmQ6IHN0YXJ0IGF0IHRoZQorcm9vdCwgY29tcGFyZSBlYWNoIHZhbHVlLCBhbmQgZm9sbG93IHRoZSBsZWZ0IG9yIHJpZ2h0IGJyYW5jaCBhcyBuZWNlc3NhcnkuCisKK0V4YW1wbGU6CisKKyAgc3RydWN0IG15dHlwZSAqbXlfc2VhcmNoKHN0cnVjdCByYl9yb290ICpyb290LCBjaGFyICpzdHJpbmcpCisgIHsKKyAgCXN0cnVjdCByYl9ub2RlICpub2RlID0gcm9vdC0+cmJfbm9kZTsKKworICAJd2hpbGUgKG5vZGUpIHsKKyAgCQlzdHJ1Y3QgbXl0eXBlICpkYXRhID0gY29udGFpbmVyX29mKG5vZGUsIHN0cnVjdCBteXR5cGUsIG5vZGUpOworCQlpbnQgcmVzdWx0OworCisJCXJlc3VsdCA9IHN0cmNtcChzdHJpbmcsIGRhdGEtPmtleXN0cmluZyk7CisKKwkJaWYgKHJlc3VsdCA8IDApCisgIAkJCW5vZGUgPSBub2RlLT5yYl9sZWZ0OworCQllbHNlIGlmIChyZXN1bHQgPiAwKQorICAJCQlub2RlID0gbm9kZS0+cmJfcmlnaHQ7CisJCWVsc2UKKyAgCQkJcmV0dXJuIGRhdGE7CisJfQorCXJldHVybiBOVUxMOworICB9CisKK0luc2VydGluZyBkYXRhIGludG8gYW4gcmJ0cmVlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbnNlcnRpbmcgZGF0YSBpbiB0aGUgdHJlZSBpbnZvbHZlcyBmaXJzdCBzZWFyY2hpbmcgZm9yIHRoZSBwbGFjZSB0byBpbnNlcnQgdGhlCituZXcgbm9kZSwgdGhlbiBpbnNlcnRpbmcgdGhlIG5vZGUgYW5kIHJlYmFsYW5jaW5nICgicmVjb2xvcmluZyIpIHRoZSB0cmVlLgorCitUaGUgc2VhcmNoIGZvciBpbnNlcnRpb24gZGlmZmVycyBmcm9tIHRoZSBwcmV2aW91cyBzZWFyY2ggYnkgZmluZGluZyB0aGUKK2xvY2F0aW9uIG9mIHRoZSBwb2ludGVyIG9uIHdoaWNoIHRvIGdyYWZ0IHRoZSBuZXcgbm9kZS4gIFRoZSBuZXcgbm9kZSBhbHNvCituZWVkcyBhIGxpbmsgdG8gaXRzIHBhcmVudCBub2RlIGZvciByZWJhbGFuY2luZyBwdXJwb3Nlcy4KKworRXhhbXBsZToKKworICBpbnQgbXlfaW5zZXJ0KHN0cnVjdCByYl9yb290ICpyb290LCBzdHJ1Y3QgbXl0eXBlICpkYXRhKQorICB7CisgIAlzdHJ1Y3QgcmJfbm9kZSAqKm5ldyA9ICYocm9vdC0+cmJfbm9kZSksICpwYXJlbnQgPSBOVUxMOworCisgIAkvKiBGaWd1cmUgb3V0IHdoZXJlIHRvIHB1dCBuZXcgbm9kZSAqLworICAJd2hpbGUgKCpuZXcpIHsKKyAgCQlzdHJ1Y3QgbXl0eXBlICp0aGlzID0gY29udGFpbmVyX29mKCpuZXcsIHN0cnVjdCBteXR5cGUsIG5vZGUpOworICAJCWludCByZXN1bHQgPSBzdHJjbXAoZGF0YS0+a2V5c3RyaW5nLCB0aGlzLT5rZXlzdHJpbmcpOworCisJCXBhcmVudCA9ICpuZXc7CisgIAkJaWYgKHJlc3VsdCA8IDApCisgIAkJCW5ldyA9ICYoKCpuZXcpLT5yYl9sZWZ0KTsKKyAgCQllbHNlIGlmIChyZXN1bHQgPiAwKQorICAJCQluZXcgPSAmKCgqbmV3KS0+cmJfcmlnaHQpOworICAJCWVsc2UKKyAgCQkJcmV0dXJuIEZBTFNFOworICAJfQorCisgIAkvKiBBZGQgbmV3IG5vZGUgYW5kIHJlYmFsYW5jZSB0cmVlLiAqLworICAJcmJfbGlua19ub2RlKCZkYXRhLT5ub2RlLCBwYXJlbnQsIG5ldyk7CisgIAlyYl9pbnNlcnRfY29sb3IoJmRhdGEtPm5vZGUsIHJvb3QpOworCisJcmV0dXJuIFRSVUU7CisgIH0KKworUmVtb3Zpbmcgb3IgcmVwbGFjaW5nIGV4aXN0aW5nIGRhdGEgaW4gYW4gcmJ0cmVlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVG8gcmVtb3ZlIGFuIGV4aXN0aW5nIG5vZGUgZnJvbSBhIHRyZWUsIGNhbGw6CisKKyAgdm9pZCByYl9lcmFzZShzdHJ1Y3QgcmJfbm9kZSAqdmljdGltLCBzdHJ1Y3QgcmJfcm9vdCAqdHJlZSk7CisKK0V4YW1wbGU6CisKKyAgc3RydWN0IG15dHlwZSAqZGF0YSA9IG15c2VhcmNoKCZteXRyZWUsICJ3YWxydXMiKTsKKworICBpZiAoZGF0YSkgeworICAJcmJfZXJhc2UoJmRhdGEtPm5vZGUsICZteXRyZWUpOworICAJbXlmcmVlKGRhdGEpOworICB9CisKK1RvIHJlcGxhY2UgYW4gZXhpc3Rpbmcgbm9kZSBpbiBhIHRyZWUgd2l0aCBhIG5ldyBvbmUgd2l0aCB0aGUgc2FtZSBrZXksIGNhbGw6CisKKyAgdm9pZCByYl9yZXBsYWNlX25vZGUoc3RydWN0IHJiX25vZGUgKm9sZCwgc3RydWN0IHJiX25vZGUgKm5ldywKKyAgCQkJc3RydWN0IHJiX3Jvb3QgKnRyZWUpOworCitSZXBsYWNpbmcgYSBub2RlIHRoaXMgd2F5IGRvZXMgbm90IHJlLXNvcnQgdGhlIHRyZWU6IElmIHRoZSBuZXcgbm9kZSBkb2Vzbid0CitoYXZlIHRoZSBzYW1lIGtleSBhcyB0aGUgb2xkIG5vZGUsIHRoZSByYnRyZWUgd2lsbCBwcm9iYWJseSBiZWNvbWUgY29ycnVwdGVkLgorCitJdGVyYXRpbmcgdGhyb3VnaCB0aGUgZWxlbWVudHMgc3RvcmVkIGluIGFuIHJidHJlZSAoaW4gc29ydCBvcmRlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGb3VyIGZ1bmN0aW9ucyBhcmUgcHJvdmlkZWQgZm9yIGl0ZXJhdGluZyB0aHJvdWdoIGFuIHJidHJlZSdzIGNvbnRlbnRzIGluCitzb3J0ZWQgb3JkZXIuICBUaGVzZSB3b3JrIG9uIGFyYml0cmFyeSB0cmVlcywgYW5kIHNob3VsZCBub3QgbmVlZCB0byBiZQorbW9kaWZpZWQgb3Igd3JhcHBlZCAoZXhjZXB0IGZvciBsb2NraW5nIHB1cnBvc2VzKToKKworICBzdHJ1Y3QgcmJfbm9kZSAqcmJfZmlyc3Qoc3RydWN0IHJiX3Jvb3QgKnRyZWUpOworICBzdHJ1Y3QgcmJfbm9kZSAqcmJfbGFzdChzdHJ1Y3QgcmJfcm9vdCAqdHJlZSk7CisgIHN0cnVjdCByYl9ub2RlICpyYl9uZXh0KHN0cnVjdCByYl9ub2RlICpub2RlKTsKKyAgc3RydWN0IHJiX25vZGUgKnJiX3ByZXYoc3RydWN0IHJiX25vZGUgKm5vZGUpOworCitUbyBzdGFydCBpdGVyYXRpbmcsIGNhbGwgcmJfZmlyc3QoKSBvciByYl9sYXN0KCkgd2l0aCBhIHBvaW50ZXIgdG8gdGhlIHJvb3QKK29mIHRoZSB0cmVlLCB3aGljaCB3aWxsIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIG5vZGUgc3RydWN0dXJlIGNvbnRhaW5lZCBpbgordGhlIGZpcnN0IG9yIGxhc3QgZWxlbWVudCBpbiB0aGUgdHJlZS4gIFRvIGNvbnRpbnVlLCBmZXRjaCB0aGUgbmV4dCBvciBwcmV2aW91cworbm9kZSBieSBjYWxsaW5nIHJiX25leHQoKSBvciByYl9wcmV2KCkgb24gdGhlIGN1cnJlbnQgbm9kZS4gIFRoaXMgd2lsbCByZXR1cm4KK05VTEwgd2hlbiB0aGVyZSBhcmUgbm8gbW9yZSBub2RlcyBsZWZ0LgorCitUaGUgaXRlcmF0b3IgZnVuY3Rpb25zIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGVtYmVkZGVkIHN0cnVjdCByYl9ub2RlLCBmcm9tCit3aGljaCB0aGUgY29udGFpbmluZyBkYXRhIHN0cnVjdHVyZSBtYXkgYmUgYWNjZXNzZWQgd2l0aCB0aGUgY29udGFpbmVyX29mKCkKK21hY3JvLCBhbmQgaW5kaXZpZHVhbCBtZW1iZXJzIG1heSBiZSBhY2Nlc3NlZCBkaXJlY3RseSB2aWEKK3JiX2VudHJ5KG5vZGUsIHR5cGUsIG1lbWJlcikuCisKK0V4YW1wbGU6CisKKyAgc3RydWN0IHJiX25vZGUgKm5vZGU7CisgIGZvciAobm9kZSA9IHJiX2ZpcnN0KCZteXRyZWUpOyBub2RlOyBub2RlID0gcmJfbmV4dChub2RlKSkKKwlwcmludGsoImtleT0lc1xuIiwgcmJfZW50cnkobm9kZSwgc3RydWN0IG15dHlwZSwgbm9kZSktPmtleXN0cmluZyk7CisKK1N1cHBvcnQgZm9yIEF1Z21lbnRlZCByYnRyZWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBdWdtZW50ZWQgcmJ0cmVlIGlzIGFuIHJidHJlZSB3aXRoICJzb21lIiBhZGRpdGlvbmFsIGRhdGEgc3RvcmVkIGluCitlYWNoIG5vZGUsIHdoZXJlIHRoZSBhZGRpdGlvbmFsIGRhdGEgZm9yIG5vZGUgTiBtdXN0IGJlIGEgZnVuY3Rpb24gb2YKK3RoZSBjb250ZW50cyBvZiBhbGwgbm9kZXMgaW4gdGhlIHN1YnRyZWUgcm9vdGVkIGF0IE4uIFRoaXMgZGF0YSBjYW4KK2JlIHVzZWQgdG8gYXVnbWVudCBzb21lIG5ldyBmdW5jdGlvbmFsaXR5IHRvIHJidHJlZS4gQXVnbWVudGVkIHJidHJlZQoraXMgYW4gb3B0aW9uYWwgZmVhdHVyZSBidWlsdCBvbiB0b3Agb2YgYmFzaWMgcmJ0cmVlIGluZnJhc3RydWN0dXJlLgorQW4gcmJ0cmVlIHVzZXIgd2hvIHdhbnRzIHRoaXMgZmVhdHVyZSB3aWxsIGhhdmUgdG8gY2FsbCB0aGUgYXVnbWVudGF0aW9uCitmdW5jdGlvbnMgd2l0aCB0aGUgdXNlciBwcm92aWRlZCBhdWdtZW50YXRpb24gY2FsbGJhY2sgd2hlbiBpbnNlcnRpbmcKK2FuZCBlcmFzaW5nIG5vZGVzLgorCitDIGZpbGVzIGltcGxlbWVudGluZyBhdWdtZW50ZWQgcmJ0cmVlIG1hbmlwdWxhdGlvbiBtdXN0IGluY2x1ZGUKKzxsaW51eC9yYnRyZWVfYXVnbWVudGVkLmg+IGluc3RlYWQgb2YgPGxpbnV4L3JidHJlZS5oPi4gTm90ZSB0aGF0CitsaW51eC9yYnRyZWVfYXVnbWVudGVkLmggZXhwb3NlcyBzb21lIHJidHJlZSBpbXBsZW1lbnRhdGlvbnMgZGV0YWlscworeW91IGFyZSBub3QgZXhwZWN0ZWQgdG8gcmVseSBvbjsgcGxlYXNlIHN0aWNrIHRvIHRoZSBkb2N1bWVudGVkIEFQSXMKK3RoZXJlIGFuZCBkbyBub3QgaW5jbHVkZSA8bGludXgvcmJ0cmVlX2F1Z21lbnRlZC5oPiBmcm9tIGhlYWRlciBmaWxlcworZWl0aGVyIHNvIGFzIHRvIG1pbmltaXplIGNoYW5jZXMgb2YgeW91ciB1c2VycyBhY2NpZGVudGFsbHkgcmVseWluZyBvbgorc3VjaCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgorCitPbiBpbnNlcnRpb24sIHRoZSB1c2VyIG11c3QgdXBkYXRlIHRoZSBhdWdtZW50ZWQgaW5mb3JtYXRpb24gb24gdGhlIHBhdGgKK2xlYWRpbmcgdG8gdGhlIGluc2VydGVkIG5vZGUsIHRoZW4gY2FsbCByYl9saW5rX25vZGUoKSBhcyB1c3VhbCBhbmQKK3JiX2F1Z21lbnRfaW5zZXJ0ZWQoKSBpbnN0ZWFkIG9mIHRoZSB1c3VhbCByYl9pbnNlcnRfY29sb3IoKSBjYWxsLgorSWYgcmJfYXVnbWVudF9pbnNlcnRlZCgpIHJlYmFsYW5jZXMgdGhlIHJidHJlZSwgaXQgd2lsbCBjYWxsYmFjayBpbnRvCithIHVzZXIgcHJvdmlkZWQgZnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBhdWdtZW50ZWQgaW5mb3JtYXRpb24gb24gdGhlCithZmZlY3RlZCBzdWJ0cmVlcy4KKworV2hlbiBlcmFzaW5nIGEgbm9kZSwgdGhlIHVzZXIgbXVzdCBjYWxsIHJiX2VyYXNlX2F1Z21lbnRlZCgpIGluc3RlYWQgb2YKK3JiX2VyYXNlKCkuIHJiX2VyYXNlX2F1Z21lbnRlZCgpIGNhbGxzIGJhY2sgaW50byB1c2VyIHByb3ZpZGVkIGZ1bmN0aW9ucwordG8gdXBkYXRlZCB0aGUgYXVnbWVudGVkIGluZm9ybWF0aW9uIG9uIGFmZmVjdGVkIHN1YnRyZWVzLgorCitJbiBib3RoIGNhc2VzLCB0aGUgY2FsbGJhY2tzIGFyZSBwcm92aWRlZCB0aHJvdWdoIHN0cnVjdCByYl9hdWdtZW50X2NhbGxiYWNrcy4KKzMgY2FsbGJhY2tzIG11c3QgYmUgZGVmaW5lZDoKKworLSBBIHByb3BhZ2F0aW9uIGNhbGxiYWNrLCB3aGljaCB1cGRhdGVzIHRoZSBhdWdtZW50ZWQgdmFsdWUgZm9yIGEgZ2l2ZW4KKyAgbm9kZSBhbmQgaXRzIGFuY2VzdG9ycywgdXAgdG8gYSBnaXZlbiBzdG9wIHBvaW50IChvciBOVUxMIHRvIHVwZGF0ZQorICBhbGwgdGhlIHdheSB0byB0aGUgcm9vdCkuCisKKy0gQSBjb3B5IGNhbGxiYWNrLCB3aGljaCBjb3BpZXMgdGhlIGF1Z21lbnRlZCB2YWx1ZSBmb3IgYSBnaXZlbiBzdWJ0cmVlCisgIHRvIGEgbmV3bHkgYXNzaWduZWQgc3VidHJlZSByb290LgorCistIEEgdHJlZSByb3RhdGlvbiBjYWxsYmFjaywgd2hpY2ggY29waWVzIHRoZSBhdWdtZW50ZWQgdmFsdWUgZm9yIGEgZ2l2ZW4KKyAgc3VidHJlZSB0byBhIG5ld2x5IGFzc2lnbmVkIHN1YnRyZWUgcm9vdCBBTkQgcmVjb21wdXRlcyB0aGUgYXVnbWVudGVkCisgIGluZm9ybWF0aW9uIGZvciB0aGUgZm9ybWVyIHN1YnRyZWUgcm9vdC4KKworVGhlIGNvbXBpbGVkIGNvZGUgZm9yIHJiX2VyYXNlX2F1Z21lbnRlZCgpIG1heSBpbmxpbmUgdGhlIHByb3BhZ2F0aW9uIGFuZAorY29weSBjYWxsYmFja3MsIHdoaWNoIHJlc3VsdHMgaW4gYSBsYXJnZSBmdW5jdGlvbiwgc28gZWFjaCBhdWdtZW50ZWQgcmJ0cmVlCit1c2VyIHNob3VsZCBoYXZlIGEgc2luZ2xlIHJiX2VyYXNlX2F1Z21lbnRlZCgpIGNhbGwgc2l0ZSBpbiBvcmRlciB0byBsaW1pdAorY29tcGlsZWQgY29kZSBzaXplLgorCisKK1NhbXBsZSB1c2FnZToKKworSW50ZXJ2YWwgdHJlZSBpcyBhbiBleGFtcGxlIG9mIGF1Z21lbnRlZCByYiB0cmVlLiBSZWZlcmVuY2UgLQorIkludHJvZHVjdGlvbiB0byBBbGdvcml0aG1zIiBieSBDb3JtZW4sIExlaXNlcnNvbiwgUml2ZXN0IGFuZCBTdGVpbi4KK01vcmUgZGV0YWlscyBhYm91dCBpbnRlcnZhbCB0cmVlczoKKworQ2xhc3NpY2FsIHJidHJlZSBoYXMgYSBzaW5nbGUga2V5IGFuZCBpdCBjYW5ub3QgYmUgZGlyZWN0bHkgdXNlZCB0byBzdG9yZQoraW50ZXJ2YWwgcmFuZ2VzIGxpa2UgW2xvOmhpXSBhbmQgZG8gYSBxdWljayBsb29rdXAgZm9yIGFueSBvdmVybGFwIHdpdGggYSBuZXcKK2xvOmhpIG9yIHRvIGZpbmQgd2hldGhlciB0aGVyZSBpcyBhbiBleGFjdCBtYXRjaCBmb3IgYSBuZXcgbG86aGkuCisKK0hvd2V2ZXIsIHJidHJlZSBjYW4gYmUgYXVnbWVudGVkIHRvIHN0b3JlIHN1Y2ggaW50ZXJ2YWwgcmFuZ2VzIGluIGEgc3RydWN0dXJlZAord2F5IG1ha2luZyBpdCBwb3NzaWJsZSB0byBkbyBlZmZpY2llbnQgbG9va3VwIGFuZCBleGFjdCBtYXRjaC4KKworVGhpcyAiZXh0cmEgaW5mb3JtYXRpb24iIHN0b3JlZCBpbiBlYWNoIG5vZGUgaXMgdGhlIG1heGltdW0gaGkKKyhtYXhfaGkpIHZhbHVlIGFtb25nIGFsbCB0aGUgbm9kZXMgdGhhdCBhcmUgaXRzIGRlc2NlbmRhbnRzLiBUaGlzCitpbmZvcm1hdGlvbiBjYW4gYmUgbWFpbnRhaW5lZCBhdCBlYWNoIG5vZGUganVzdCBiZSBsb29raW5nIGF0IHRoZSBub2RlCithbmQgaXRzIGltbWVkaWF0ZSBjaGlsZHJlbi4gQW5kIHRoaXMgd2lsbCBiZSB1c2VkIGluIE8obG9nIG4pIGxvb2t1cAorZm9yIGxvd2VzdCBtYXRjaCAobG93ZXN0IHN0YXJ0IGFkZHJlc3MgYW1vbmcgYWxsIHBvc3NpYmxlIG1hdGNoZXMpCit3aXRoIHNvbWV0aGluZyBsaWtlOgorCitzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlICoKK2ludGVydmFsX3RyZWVfZmlyc3RfbWF0Y2goc3RydWN0IHJiX3Jvb3QgKnJvb3QsCisJCQkgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgbGFzdCkKK3sKKwlzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlICpub2RlOworCisJaWYgKCFyb290LT5yYl9ub2RlKQorCQlyZXR1cm4gTlVMTDsKKwlub2RlID0gcmJfZW50cnkocm9vdC0+cmJfbm9kZSwgc3RydWN0IGludGVydmFsX3RyZWVfbm9kZSwgcmIpOworCisJd2hpbGUgKHRydWUpIHsKKwkJaWYgKG5vZGUtPnJiLnJiX2xlZnQpIHsKKwkJCXN0cnVjdCBpbnRlcnZhbF90cmVlX25vZGUgKmxlZnQgPQorCQkJCXJiX2VudHJ5KG5vZGUtPnJiLnJiX2xlZnQsCisJCQkJCSBzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlLCByYik7CisJCQlpZiAobGVmdC0+X19zdWJ0cmVlX2xhc3QgPj0gc3RhcnQpIHsKKwkJCQkvKgorCQkJCSAqIFNvbWUgbm9kZXMgaW4gbGVmdCBzdWJ0cmVlIHNhdGlzZnkgQ29uZDIuCisJCQkJICogSXRlcmF0ZSB0byBmaW5kIHRoZSBsZWZ0bW9zdCBzdWNoIG5vZGUgTi4KKwkJCQkgKiBJZiBpdCBhbHNvIHNhdGlzZmllcyBDb25kMSwgdGhhdCdzIHRoZSBtYXRjaAorCQkJCSAqIHdlIGFyZSBsb29raW5nIGZvci4gT3RoZXJ3aXNlLCB0aGVyZSBpcyBubworCQkJCSAqIG1hdGNoaW5nIGludGVydmFsIGFzIG5vZGVzIHRvIHRoZSByaWdodCBvZiBOCisJCQkJICogY2FuJ3Qgc2F0aXNmeSBDb25kMSBlaXRoZXIuCisJCQkJICovCisJCQkJbm9kZSA9IGxlZnQ7CisJCQkJY29udGludWU7CisJCQl9CisJCX0KKwkJaWYgKG5vZGUtPnN0YXJ0IDw9IGxhc3QpIHsJCS8qIENvbmQxICovCisJCQlpZiAobm9kZS0+bGFzdCA+PSBzdGFydCkJLyogQ29uZDIgKi8KKwkJCQlyZXR1cm4gbm9kZTsJLyogbm9kZSBpcyBsZWZ0bW9zdCBtYXRjaCAqLworCQkJaWYgKG5vZGUtPnJiLnJiX3JpZ2h0KSB7CisJCQkJbm9kZSA9IHJiX2VudHJ5KG5vZGUtPnJiLnJiX3JpZ2h0LAorCQkJCQlzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlLCByYik7CisJCQkJaWYgKG5vZGUtPl9fc3VidHJlZV9sYXN0ID49IHN0YXJ0KQorCQkJCQljb250aW51ZTsKKwkJCX0KKwkJfQorCQlyZXR1cm4gTlVMTDsJLyogTm8gbWF0Y2ggKi8KKwl9Cit9CisKK0luc2VydGlvbi9yZW1vdmFsIGFyZSBkZWZpbmVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgYXVnbWVudGVkIGNhbGxiYWNrczoKKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCitjb21wdXRlX3N1YnRyZWVfbGFzdChzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlICpub2RlKQoreworCXVuc2lnbmVkIGxvbmcgbWF4ID0gbm9kZS0+bGFzdCwgc3VidHJlZV9sYXN0OworCWlmIChub2RlLT5yYi5yYl9sZWZ0KSB7CisJCXN1YnRyZWVfbGFzdCA9IHJiX2VudHJ5KG5vZGUtPnJiLnJiX2xlZnQsCisJCQlzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlLCByYiktPl9fc3VidHJlZV9sYXN0OworCQlpZiAobWF4IDwgc3VidHJlZV9sYXN0KQorCQkJbWF4ID0gc3VidHJlZV9sYXN0OworCX0KKwlpZiAobm9kZS0+cmIucmJfcmlnaHQpIHsKKwkJc3VidHJlZV9sYXN0ID0gcmJfZW50cnkobm9kZS0+cmIucmJfcmlnaHQsCisJCQlzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlLCByYiktPl9fc3VidHJlZV9sYXN0OworCQlpZiAobWF4IDwgc3VidHJlZV9sYXN0KQorCQkJbWF4ID0gc3VidHJlZV9sYXN0OworCX0KKwlyZXR1cm4gbWF4OworfQorCitzdGF0aWMgdm9pZCBhdWdtZW50X3Byb3BhZ2F0ZShzdHJ1Y3QgcmJfbm9kZSAqcmIsIHN0cnVjdCByYl9ub2RlICpzdG9wKQoreworCXdoaWxlIChyYiAhPSBzdG9wKSB7CisJCXN0cnVjdCBpbnRlcnZhbF90cmVlX25vZGUgKm5vZGUgPQorCQkJcmJfZW50cnkocmIsIHN0cnVjdCBpbnRlcnZhbF90cmVlX25vZGUsIHJiKTsKKwkJdW5zaWduZWQgbG9uZyBzdWJ0cmVlX2xhc3QgPSBjb21wdXRlX3N1YnRyZWVfbGFzdChub2RlKTsKKwkJaWYgKG5vZGUtPl9fc3VidHJlZV9sYXN0ID09IHN1YnRyZWVfbGFzdCkKKwkJCWJyZWFrOworCQlub2RlLT5fX3N1YnRyZWVfbGFzdCA9IHN1YnRyZWVfbGFzdDsKKwkJcmIgPSByYl9wYXJlbnQoJm5vZGUtPnJiKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGF1Z21lbnRfY29weShzdHJ1Y3QgcmJfbm9kZSAqcmJfb2xkLCBzdHJ1Y3QgcmJfbm9kZSAqcmJfbmV3KQoreworCXN0cnVjdCBpbnRlcnZhbF90cmVlX25vZGUgKm9sZCA9CisJCXJiX2VudHJ5KHJiX29sZCwgc3RydWN0IGludGVydmFsX3RyZWVfbm9kZSwgcmIpOworCXN0cnVjdCBpbnRlcnZhbF90cmVlX25vZGUgKm5ldyA9CisJCXJiX2VudHJ5KHJiX25ldywgc3RydWN0IGludGVydmFsX3RyZWVfbm9kZSwgcmIpOworCisJbmV3LT5fX3N1YnRyZWVfbGFzdCA9IG9sZC0+X19zdWJ0cmVlX2xhc3Q7Cit9CisKK3N0YXRpYyB2b2lkIGF1Z21lbnRfcm90YXRlKHN0cnVjdCByYl9ub2RlICpyYl9vbGQsIHN0cnVjdCByYl9ub2RlICpyYl9uZXcpCit7CisJc3RydWN0IGludGVydmFsX3RyZWVfbm9kZSAqb2xkID0KKwkJcmJfZW50cnkocmJfb2xkLCBzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlLCByYik7CisJc3RydWN0IGludGVydmFsX3RyZWVfbm9kZSAqbmV3ID0KKwkJcmJfZW50cnkocmJfbmV3LCBzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlLCByYik7CisKKwluZXctPl9fc3VidHJlZV9sYXN0ID0gb2xkLT5fX3N1YnRyZWVfbGFzdDsKKwlvbGQtPl9fc3VidHJlZV9sYXN0ID0gY29tcHV0ZV9zdWJ0cmVlX2xhc3Qob2xkKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCByYl9hdWdtZW50X2NhbGxiYWNrcyBhdWdtZW50X2NhbGxiYWNrcyA9IHsKKwlhdWdtZW50X3Byb3BhZ2F0ZSwgYXVnbWVudF9jb3B5LCBhdWdtZW50X3JvdGF0ZQorfTsKKwordm9pZCBpbnRlcnZhbF90cmVlX2luc2VydChzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlICpub2RlLAorCQkJICBzdHJ1Y3QgcmJfcm9vdCAqcm9vdCkKK3sKKwlzdHJ1Y3QgcmJfbm9kZSAqKmxpbmsgPSAmcm9vdC0+cmJfbm9kZSwgKnJiX3BhcmVudCA9IE5VTEw7CisJdW5zaWduZWQgbG9uZyBzdGFydCA9IG5vZGUtPnN0YXJ0LCBsYXN0ID0gbm9kZS0+bGFzdDsKKwlzdHJ1Y3QgaW50ZXJ2YWxfdHJlZV9ub2RlICpwYXJlbnQ7CisKKwl3aGlsZSAoKmxpbmspIHsKKwkJcmJfcGFyZW50ID0gKmxpbms7CisJCXBhcmVudCA9IHJiX2VudHJ5KHJiX3BhcmVudCwgc3RydWN0IGludGVydmFsX3RyZWVfbm9kZSwgcmIpOworCQlpZiAocGFyZW50LT5fX3N1YnRyZWVfbGFzdCA8IGxhc3QpCisJCQlwYXJlbnQtPl9fc3VidHJlZV9sYXN0ID0gbGFzdDsKKwkJaWYgKHN0YXJ0IDwgcGFyZW50LT5zdGFydCkKKwkJCWxpbmsgPSAmcGFyZW50LT5yYi5yYl9sZWZ0OworCQllbHNlCisJCQlsaW5rID0gJnBhcmVudC0+cmIucmJfcmlnaHQ7CisJfQorCisJbm9kZS0+X19zdWJ0cmVlX2xhc3QgPSBsYXN0OworCXJiX2xpbmtfbm9kZSgmbm9kZS0+cmIsIHJiX3BhcmVudCwgbGluayk7CisJcmJfaW5zZXJ0X2F1Z21lbnRlZCgmbm9kZS0+cmIsIHJvb3QsICZhdWdtZW50X2NhbGxiYWNrcyk7Cit9CisKK3ZvaWQgaW50ZXJ2YWxfdHJlZV9yZW1vdmUoc3RydWN0IGludGVydmFsX3RyZWVfbm9kZSAqbm9kZSwKKwkJCSAgc3RydWN0IHJiX3Jvb3QgKnJvb3QpCit7CisJcmJfZXJhc2VfYXVnbWVudGVkKCZub2RlLT5yYiwgcm9vdCwgJmF1Z21lbnRfY2FsbGJhY2tzKTsKK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcmVtb3RlcHJvYy50eHQgYi9Eb2N1bWVudGF0aW9uL3JlbW90ZXByb2MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmMDIxOWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3JlbW90ZXByb2MudHh0CkBAIC0wLDAgKzEsMzA1IEBACitSZW1vdGUgUHJvY2Vzc29yIEZyYW1ld29yaworCisxLiBJbnRyb2R1Y3Rpb24KKworTW9kZXJuIFNvQ3MgdHlwaWNhbGx5IGhhdmUgaGV0ZXJvZ2VuZW91cyByZW1vdGUgcHJvY2Vzc29yIGRldmljZXMgaW4gYXN5bW1ldHJpYworbXVsdGlwcm9jZXNzaW5nIChBTVApIGNvbmZpZ3VyYXRpb25zLCB3aGljaCBtYXkgYmUgcnVubmluZyBkaWZmZXJlbnQgaW5zdGFuY2VzCitvZiBvcGVyYXRpbmcgc3lzdGVtLCB3aGV0aGVyIGl0J3MgTGludXggb3IgYW55IG90aGVyIGZsYXZvciBvZiByZWFsLXRpbWUgT1MuCisKK09NQVA0LCBmb3IgZXhhbXBsZSwgaGFzIGR1YWwgQ29ydGV4LUE5LCBkdWFsIENvcnRleC1NMyBhbmQgYSBDNjR4KyBEU1AuCitJbiBhIHR5cGljYWwgY29uZmlndXJhdGlvbiwgdGhlIGR1YWwgY29ydGV4LUE5IGlzIHJ1bm5pbmcgTGludXggaW4gYSBTTVAKK2NvbmZpZ3VyYXRpb24sIGFuZCBlYWNoIG9mIHRoZSBvdGhlciB0aHJlZSBjb3JlcyAodHdvIE0zIGNvcmVzIGFuZCBhIERTUCkKK2lzIHJ1bm5pbmcgaXRzIG93biBpbnN0YW5jZSBvZiBSVE9TIGluIGFuIEFNUCBjb25maWd1cmF0aW9uLgorCitUaGUgcmVtb3RlcHJvYyBmcmFtZXdvcmsgYWxsb3dzIGRpZmZlcmVudCBwbGF0Zm9ybXMvYXJjaGl0ZWN0dXJlcyB0bworY29udHJvbCAocG93ZXIgb24sIGxvYWQgZmlybXdhcmUsIHBvd2VyIG9mZikgdGhvc2UgcmVtb3RlIHByb2Nlc3NvcnMgd2hpbGUKK2Fic3RyYWN0aW5nIHRoZSBoYXJkd2FyZSBkaWZmZXJlbmNlcywgc28gdGhlIGVudGlyZSBkcml2ZXIgZG9lc24ndCBuZWVkIHRvIGJlCitkdXBsaWNhdGVkLiBJbiBhZGRpdGlvbiwgdGhpcyBmcmFtZXdvcmsgYWxzbyBhZGRzIHJwbXNnIHZpcnRpbyBkZXZpY2VzCitmb3IgcmVtb3RlIHByb2Nlc3NvcnMgdGhhdCBzdXBwb3J0cyB0aGlzIGtpbmQgb2YgY29tbXVuaWNhdGlvbi4gVGhpcyB3YXksCitwbGF0Zm9ybS1zcGVjaWZpYyByZW1vdGVwcm9jIGRyaXZlcnMgb25seSBuZWVkIHRvIHByb3ZpZGUgYSBmZXcgbG93LWxldmVsCitoYW5kbGVycywgYW5kIHRoZW4gYWxsIHJwbXNnIGRyaXZlcnMgd2lsbCB0aGVuIGp1c3Qgd29yaworKGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB2aXJ0aW8tYmFzZWQgcnBtc2cgYnVzIGFuZCBpdHMgZHJpdmVycywKK3BsZWFzZSByZWFkIERvY3VtZW50YXRpb24vcnBtc2cudHh0KS4KK1JlZ2lzdHJhdGlvbiBvZiBvdGhlciB0eXBlcyBvZiB2aXJ0aW8gZGV2aWNlcyBpcyBub3cgYWxzbyBwb3NzaWJsZS4gRmlybXdhcmVzCitqdXN0IG5lZWQgdG8gcHVibGlzaCB3aGF0IGtpbmQgb2YgdmlydGlvIGRldmljZXMgZG8gdGhleSBzdXBwb3J0LCBhbmQgdGhlbgorcmVtb3RlcHJvYyB3aWxsIGFkZCB0aG9zZSBkZXZpY2VzLiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHJldXNlIHRoZQorZXhpc3RpbmcgdmlydGlvIGRyaXZlcnMgd2l0aCByZW1vdGUgcHJvY2Vzc29yIGJhY2tlbmRzIGF0IGEgbWluaW1hbCBkZXZlbG9wbWVudAorY29zdC4KKworMi4gVXNlciBBUEkKKworICBpbnQgcnByb2NfYm9vdChzdHJ1Y3QgcnByb2MgKnJwcm9jKQorICAgIC0gQm9vdCBhIHJlbW90ZSBwcm9jZXNzb3IgKGkuZS4gbG9hZCBpdHMgZmlybXdhcmUsIHBvd2VyIGl0IG9uLCAuLi4pLgorICAgICAgSWYgdGhlIHJlbW90ZSBwcm9jZXNzb3IgaXMgYWxyZWFkeSBwb3dlcmVkIG9uLCB0aGlzIGZ1bmN0aW9uIGltbWVkaWF0ZWx5CisgICAgICByZXR1cm5zIChzdWNjZXNzZnVsbHkpLgorICAgICAgUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIGFuZCBhbiBhcHByb3ByaWF0ZSBlcnJvciB2YWx1ZSBvdGhlcndpc2UuCisgICAgICBOb3RlOiB0byB1c2UgdGhpcyBmdW5jdGlvbiB5b3Ugc2hvdWxkIGFscmVhZHkgaGF2ZSBhIHZhbGlkIHJwcm9jCisgICAgICBoYW5kbGUuIFRoZXJlIGFyZSBzZXZlcmFsIHdheXMgdG8gYWNoaWV2ZSB0aGF0IGNsZWFubHkgKGRldnJlcywgcGRhdGEsCisgICAgICB0aGUgd2F5IHJlbW90ZXByb2NfcnBtc2cuYyBkb2VzIHRoaXMsIG9yLCBpZiB0aGlzIGJlY29tZXMgcHJldmFsZW50LCB3ZQorICAgICAgbWlnaHQgYWxzbyBjb25zaWRlciB1c2luZyBkZXZfYXJjaGRhdGEgZm9yIHRoaXMpLgorCisgIHZvaWQgcnByb2Nfc2h1dGRvd24oc3RydWN0IHJwcm9jICpycHJvYykKKyAgICAtIFBvd2VyIG9mZiBhIHJlbW90ZSBwcm9jZXNzb3IgKHByZXZpb3VzbHkgYm9vdGVkIHdpdGggcnByb2NfYm9vdCgpKS4KKyAgICAgIEluIGNhc2UgQHJwcm9jIGlzIHN0aWxsIGJlaW5nIHVzZWQgYnkgYW4gYWRkaXRpb25hbCB1c2VyKHMpLCB0aGVuCisgICAgICB0aGlzIGZ1bmN0aW9uIHdpbGwganVzdCBkZWNyZW1lbnQgdGhlIHBvd2VyIHJlZmNvdW50IGFuZCBleGl0LAorICAgICAgd2l0aG91dCByZWFsbHkgcG93ZXJpbmcgb2ZmIHRoZSBkZXZpY2UuCisgICAgICBFdmVyeSBjYWxsIHRvIHJwcm9jX2Jvb3QoKSBtdXN0IChldmVudHVhbGx5KSBiZSBhY2NvbXBhbmllZCBieSBhIGNhbGwKKyAgICAgIHRvIHJwcm9jX3NodXRkb3duKCkuIENhbGxpbmcgcnByb2Nfc2h1dGRvd24oKSByZWR1bmRhbnRseSBpcyBhIGJ1Zy4KKyAgICAgIE5vdGVzOgorICAgICAgLSB3ZSdyZSBub3QgZGVjcmVtZW50aW5nIHRoZSBycHJvYydzIHJlZmNvdW50LCBvbmx5IHRoZSBwb3dlciByZWZjb3VudC4KKyAgICAgICAgd2hpY2ggbWVhbnMgdGhhdCB0aGUgQHJwcm9jIGhhbmRsZSBzdGF5cyB2YWxpZCBldmVuIGFmdGVyCisgICAgICAgIHJwcm9jX3NodXRkb3duKCkgcmV0dXJucywgYW5kIHVzZXJzIGNhbiBzdGlsbCB1c2UgaXQgd2l0aCBhIHN1YnNlcXVlbnQKKyAgICAgICAgcnByb2NfYm9vdCgpLCBpZiBuZWVkZWQuCisKKyAgc3RydWN0IHJwcm9jICpycHJvY19nZXRfYnlfcGhhbmRsZShwaGFuZGxlIHBoYW5kbGUpCisgICAgLSBGaW5kIGFuIHJwcm9jIGhhbmRsZSB1c2luZyBhIGRldmljZSB0cmVlIHBoYW5kbGUuIFJldHVybnMgdGhlIHJwcm9jCisgICAgICBoYW5kbGUgb24gc3VjY2VzcywgYW5kIE5VTEwgb24gZmFpbHVyZS4gVGhpcyBmdW5jdGlvbiBpbmNyZW1lbnRzCisgICAgICB0aGUgcmVtb3RlIHByb2Nlc3NvcidzIHJlZmNvdW50LCBzbyBhbHdheXMgdXNlIHJwcm9jX3B1dCgpIHRvCisgICAgICBkZWNyZW1lbnQgaXQgYmFjayBvbmNlIHJwcm9jIGlzbid0IG5lZWRlZCBhbnltb3JlLgorCiszLiBUeXBpY2FsIHVzYWdlCisKKyNpbmNsdWRlIDxsaW51eC9yZW1vdGVwcm9jLmg+CisKKy8qIGluIGNhc2Ugd2Ugd2VyZSBnaXZlbiBhIHZhbGlkICdycHJvYycgaGFuZGxlICovCitpbnQgZHVtbXlfcnByb2NfZXhhbXBsZShzdHJ1Y3QgcnByb2MgKm15X3Jwcm9jKQoreworCWludCByZXQ7CisKKwkvKiBsZXQncyBwb3dlciBvbiBhbmQgYm9vdCBvdXIgcmVtb3RlIHByb2Nlc3NvciAqLworCXJldCA9IHJwcm9jX2Jvb3QobXlfcnByb2MpOworCWlmIChyZXQpIHsKKwkJLyoKKwkJICogc29tZXRoaW5nIHdlbnQgd3JvbmcuIGhhbmRsZSBpdCBhbmQgbGVhdmUuCisJCSAqLworCX0KKworCS8qCisJICogb3VyIHJlbW90ZSBwcm9jZXNzb3IgaXMgbm93IHBvd2VyZWQgb24uLi4gZ2l2ZSBpdCBzb21lIHdvcmsKKwkgKi8KKworCS8qIGxldCdzIHNodXQgaXQgZG93biBub3cgKi8KKwlycHJvY19zaHV0ZG93bihteV9ycHJvYyk7Cit9CisKKzQuIEFQSSBmb3IgaW1wbGVtZW50b3JzCisKKyAgc3RydWN0IHJwcm9jICpycHJvY19hbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJY29uc3Qgc3RydWN0IHJwcm9jX29wcyAqb3BzLAorCQkJCWNvbnN0IGNoYXIgKmZpcm13YXJlLCBpbnQgbGVuKQorICAgIC0gQWxsb2NhdGUgYSBuZXcgcmVtb3RlIHByb2Nlc3NvciBoYW5kbGUsIGJ1dCBkb24ndCByZWdpc3RlcgorICAgICAgaXQgeWV0LiBSZXF1aXJlZCBwYXJhbWV0ZXJzIGFyZSB0aGUgdW5kZXJseWluZyBkZXZpY2UsIHRoZQorICAgICAgbmFtZSBvZiB0aGlzIHJlbW90ZSBwcm9jZXNzb3IsIHBsYXRmb3JtLXNwZWNpZmljIG9wcyBoYW5kbGVycywKKyAgICAgIHRoZSBuYW1lIG9mIHRoZSBmaXJtd2FyZSB0byBib290IHRoaXMgcnByb2Mgd2l0aCwgYW5kIHRoZQorICAgICAgbGVuZ3RoIG9mIHByaXZhdGUgZGF0YSBuZWVkZWQgYnkgdGhlIGFsbG9jYXRpbmcgcnByb2MgZHJpdmVyIChpbiBieXRlcykuCisKKyAgICAgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgYnkgcnByb2MgaW1wbGVtZW50YXRpb25zIGR1cmluZworICAgICAgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHJlbW90ZSBwcm9jZXNzb3IuCisgICAgICBBZnRlciBjcmVhdGluZyBhbiBycHJvYyBoYW5kbGUgdXNpbmcgdGhpcyBmdW5jdGlvbiwgYW5kIHdoZW4gcmVhZHksCisgICAgICBpbXBsZW1lbnRhdGlvbnMgc2hvdWxkIHRoZW4gY2FsbCBycHJvY19hZGQoKSB0byBjb21wbGV0ZQorICAgICAgdGhlIHJlZ2lzdHJhdGlvbiBvZiB0aGUgcmVtb3RlIHByb2Nlc3Nvci4KKyAgICAgIE9uIHN1Y2Nlc3MsIHRoZSBuZXcgcnByb2MgaXMgcmV0dXJuZWQsIGFuZCBvbiBmYWlsdXJlLCBOVUxMLgorCisgICAgICBOb3RlOiBfbmV2ZXJfIGRpcmVjdGx5IGRlYWxsb2NhdGUgQHJwcm9jLCBldmVuIGlmIGl0IHdhcyBub3QgcmVnaXN0ZXJlZAorICAgICAgeWV0LiBJbnN0ZWFkLCB3aGVuIHlvdSBuZWVkIHRvIHVucm9sbCBycHJvY19hbGxvYygpLCB1c2UgcnByb2NfcHV0KCkuCisKKyAgdm9pZCBycHJvY19wdXQoc3RydWN0IHJwcm9jICpycHJvYykKKyAgICAtIEZyZWUgYW4gcnByb2MgaGFuZGxlIHRoYXQgd2FzIGFsbG9jYXRlZCBieSBycHJvY19hbGxvYy4KKyAgICAgIFRoaXMgZnVuY3Rpb24gZXNzZW50aWFsbHkgdW5yb2xscyBycHJvY19hbGxvYygpLCBieSBkZWNyZW1lbnRpbmcgdGhlCisgICAgICBycHJvYydzIHJlZmNvdW50LiBJdCBkb2Vzbid0IGRpcmVjdGx5IGZyZWUgcnByb2M7IHRoYXQgd291bGQgaGFwcGVuCisgICAgICBvbmx5IGlmIHRoZXJlIGFyZSBubyBvdGhlciByZWZlcmVuY2VzIHRvIHJwcm9jIGFuZCBpdHMgcmVmY291bnQgbm93CisgICAgICBkcm9wcGVkIHRvIHplcm8uCisKKyAgaW50IHJwcm9jX2FkZChzdHJ1Y3QgcnByb2MgKnJwcm9jKQorICAgIC0gUmVnaXN0ZXIgQHJwcm9jIHdpdGggdGhlIHJlbW90ZXByb2MgZnJhbWV3b3JrLCBhZnRlciBpdCBoYXMgYmVlbgorICAgICAgYWxsb2NhdGVkIHdpdGggcnByb2NfYWxsb2MoKS4KKyAgICAgIFRoaXMgaXMgY2FsbGVkIGJ5IHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBycHJvYyBpbXBsZW1lbnRhdGlvbiwgd2hlbmV2ZXIKKyAgICAgIGEgbmV3IHJlbW90ZSBwcm9jZXNzb3IgZGV2aWNlIGlzIHByb2JlZC4KKyAgICAgIFJldHVybnMgMCBvbiBzdWNjZXNzIGFuZCBhbiBhcHByb3ByaWF0ZSBlcnJvciBjb2RlIG90aGVyd2lzZS4KKyAgICAgIE5vdGU6IHRoaXMgZnVuY3Rpb24gaW5pdGlhdGVzIGFuIGFzeW5jaHJvbm91cyBmaXJtd2FyZSBsb2FkaW5nCisgICAgICBjb250ZXh0LCB3aGljaCB3aWxsIGxvb2sgZm9yIHZpcnRpbyBkZXZpY2VzIHN1cHBvcnRlZCBieSB0aGUgcnByb2MncworICAgICAgZmlybXdhcmUuCisgICAgICBJZiBmb3VuZCwgdGhvc2UgdmlydGlvIGRldmljZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCBhZGRlZCwgc28gYXMgYSByZXN1bHQKKyAgICAgIG9mIHJlZ2lzdGVyaW5nIHRoaXMgcmVtb3RlIHByb2Nlc3NvciwgYWRkaXRpb25hbCB2aXJ0aW8gZHJpdmVycyBtaWdodCBnZXQKKyAgICAgIHByb2JlZC4KKworICBpbnQgcnByb2NfZGVsKHN0cnVjdCBycHJvYyAqcnByb2MpCisgICAgLSBVbnJvbGwgcnByb2NfYWRkKCkuCisgICAgICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgcnByb2MKKyAgICAgIGltcGxlbWVudGF0aW9uIGRlY2lkZXMgdG8gcmVtb3ZlIHRoZSBycHJvYyBkZXZpY2UuIGl0IHNob3VsZAorICAgICAgX29ubHlfIGJlIGNhbGxlZCBpZiBhIHByZXZpb3VzIGludm9jYXRpb24gb2YgcnByb2NfYWRkKCkKKyAgICAgIGhhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgorCisgICAgICBBZnRlciBycHJvY19kZWwoKSByZXR1cm5zLCBAcnByb2MgaXMgc3RpbGwgdmFsaWQsIGFuZCBpdHMKKyAgICAgIGxhc3QgcmVmY291bnQgc2hvdWxkIGJlIGRlY3JlbWVudGVkIGJ5IGNhbGxpbmcgcnByb2NfcHV0KCkuCisKKyAgICAgIFJldHVybnMgMCBvbiBzdWNjZXNzIGFuZCAtRUlOVkFMIGlmIEBycHJvYyBpc24ndCB2YWxpZC4KKworICB2b2lkIHJwcm9jX3JlcG9ydF9jcmFzaChzdHJ1Y3QgcnByb2MgKnJwcm9jLCBlbnVtIHJwcm9jX2NyYXNoX3R5cGUgdHlwZSkKKyAgICAtIFJlcG9ydCBhIGNyYXNoIGluIGEgcmVtb3RlcHJvYworICAgICAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBldmVyeSB0aW1lIGEgY3Jhc2ggaXMgZGV0ZWN0ZWQgYnkgdGhlCisgICAgICBwbGF0Zm9ybSBzcGVjaWZpYyBycHJvYyBpbXBsZW1lbnRhdGlvbi4gVGhpcyBzaG91bGQgbm90IGJlIGNhbGxlZCBmcm9tIGEKKyAgICAgIG5vbi1yZW1vdGVwcm9jIGRyaXZlci4gVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGZyb20gYXRvbWljL2ludGVycnVwdAorICAgICAgY29udGV4dC4KKworNS4gSW1wbGVtZW50YXRpb24gY2FsbGJhY2tzCisKK1RoZXNlIGNhbGxiYWNrcyBzaG91bGQgYmUgcHJvdmlkZWQgYnkgcGxhdGZvcm0tc3BlY2lmaWMgcmVtb3RlcHJvYworZHJpdmVyczoKKworLyoqCisgKiBzdHJ1Y3QgcnByb2Nfb3BzIC0gcGxhdGZvcm0tc3BlY2lmaWMgZGV2aWNlIGhhbmRsZXJzCisgKiBAc3RhcnQ6CXBvd2VyIG9uIHRoZSBkZXZpY2UgYW5kIGJvb3QgaXQKKyAqIEBzdG9wOglwb3dlciBvZmYgdGhlIGRldmljZQorICogQGtpY2s6CWtpY2sgYSB2aXJ0cXVldWUgKHZpcnRxdWV1ZSBpZCBnaXZlbiBhcyBhIHBhcmFtZXRlcikKKyAqLworc3RydWN0IHJwcm9jX29wcyB7CisJaW50ICgqc3RhcnQpKHN0cnVjdCBycHJvYyAqcnByb2MpOworCWludCAoKnN0b3ApKHN0cnVjdCBycHJvYyAqcnByb2MpOworCXZvaWQgKCpraWNrKShzdHJ1Y3QgcnByb2MgKnJwcm9jLCBpbnQgdnFpZCk7Cit9OworCitFdmVyeSByZW1vdGVwcm9jIGltcGxlbWVudGF0aW9uIHNob3VsZCBhdCBsZWFzdCBwcm92aWRlIHRoZSAtPnN0YXJ0IGFuZCAtPnN0b3AKK2hhbmRsZXJzLiBJZiBycG1zZy92aXJ0aW8gZnVuY3Rpb25hbGl0eSBpcyBhbHNvIGRlc2lyZWQsIHRoZW4gdGhlIC0+a2ljayBoYW5kbGVyCitzaG91bGQgYmUgcHJvdmlkZWQgYXMgd2VsbC4KKworVGhlIC0+c3RhcnQoKSBoYW5kbGVyIHRha2VzIGFuIHJwcm9jIGhhbmRsZSBhbmQgc2hvdWxkIHRoZW4gcG93ZXIgb24gdGhlCitkZXZpY2UgYW5kIGJvb3QgaXQgKHVzZSBycHJvYy0+cHJpdiB0byBhY2Nlc3MgcGxhdGZvcm0tc3BlY2lmaWMgcHJpdmF0ZSBkYXRhKS4KK1RoZSBib290IGFkZHJlc3MsIGluIGNhc2UgbmVlZGVkLCBjYW4gYmUgZm91bmQgaW4gcnByb2MtPmJvb3RhZGRyIChyZW1vdGVwcm9jCitjb3JlIHB1dHMgdGhlcmUgdGhlIEVMRiBlbnRyeSBwb2ludCkuCitPbiBzdWNjZXNzLCAwIHNob3VsZCBiZSByZXR1cm5lZCwgYW5kIG9uIGZhaWx1cmUsIGFuIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUuCisKK1RoZSAtPnN0b3AoKSBoYW5kbGVyIHRha2VzIGFuIHJwcm9jIGhhbmRsZSBhbmQgcG93ZXJzIHRoZSBkZXZpY2UgZG93bi4KK09uIHN1Y2Nlc3MsIDAgaXMgcmV0dXJuZWQsIGFuZCBvbiBmYWlsdXJlLCBhbiBhcHByb3ByaWF0ZSBlcnJvciBjb2RlLgorCitUaGUgLT5raWNrKCkgaGFuZGxlciB0YWtlcyBhbiBycHJvYyBoYW5kbGUsIGFuZCBhbiBpbmRleCBvZiBhIHZpcnRxdWV1ZQord2hlcmUgbmV3IG1lc3NhZ2Ugd2FzIHBsYWNlZCBpbi4gSW1wbGVtZW50YXRpb25zIHNob3VsZCBpbnRlcnJ1cHQgdGhlIHJlbW90ZQorcHJvY2Vzc29yIGFuZCBsZXQgaXQga25vdyBpdCBoYXMgcGVuZGluZyBtZXNzYWdlcy4gTm90aWZ5aW5nIHJlbW90ZSBwcm9jZXNzb3JzCit0aGUgZXhhY3QgdmlydHF1ZXVlIGluZGV4IHRvIGxvb2sgaW4gaXMgb3B0aW9uYWw6IGl0IGlzIGVhc3kgKGFuZCBub3QKK3RvbyBleHBlbnNpdmUpIHRvIGdvIHRocm91Z2ggdGhlIGV4aXN0aW5nIHZpcnRxdWV1ZXMgYW5kIGxvb2sgZm9yIG5ldyBidWZmZXJzCitpbiB0aGUgdXNlZCByaW5ncy4KKworNi4gQmluYXJ5IEZpcm13YXJlIFN0cnVjdHVyZQorCitBdCB0aGlzIHBvaW50IHJlbW90ZXByb2Mgb25seSBzdXBwb3J0cyBFTEYzMiBmaXJtd2FyZSBiaW5hcmllcy4gSG93ZXZlciwKK2l0IGlzIHF1aXRlIGV4cGVjdGVkIHRoYXQgb3RoZXIgcGxhdGZvcm1zL2RldmljZXMgd2hpY2ggd2UnZCB3YW50IHRvCitzdXBwb3J0IHdpdGggdGhpcyBmcmFtZXdvcmsgd2lsbCBiZSBiYXNlZCBvbiBkaWZmZXJlbnQgYmluYXJ5IGZvcm1hdHMuCisKK1doZW4gdGhvc2UgdXNlIGNhc2VzIHNob3cgdXAsIHdlIHdpbGwgaGF2ZSB0byBkZWNvdXBsZSB0aGUgYmluYXJ5IGZvcm1hdAorZnJvbSB0aGUgZnJhbWV3b3JrIGNvcmUsIHNvIHdlIGNhbiBzdXBwb3J0IHNldmVyYWwgYmluYXJ5IGZvcm1hdHMgd2l0aG91dAorZHVwbGljYXRpbmcgY29tbW9uIGNvZGUuCisKK1doZW4gdGhlIGZpcm13YXJlIGlzIHBhcnNlZCwgaXRzIHZhcmlvdXMgc2VnbWVudHMgYXJlIGxvYWRlZCB0byBtZW1vcnkKK2FjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGRldmljZSBhZGRyZXNzIChtaWdodCBiZSBhIHBoeXNpY2FsIGFkZHJlc3MKK2lmIHRoZSByZW1vdGUgcHJvY2Vzc29yIGlzIGFjY2Vzc2luZyBtZW1vcnkgZGlyZWN0bHkpLgorCitJbiBhZGRpdGlvbiB0byB0aGUgc3RhbmRhcmQgRUxGIHNlZ21lbnRzLCBtb3N0IHJlbW90ZSBwcm9jZXNzb3JzIHdvdWxkCithbHNvIGluY2x1ZGUgYSBzcGVjaWFsIHNlY3Rpb24gd2hpY2ggd2UgY2FsbCAidGhlIHJlc291cmNlIHRhYmxlIi4KKworVGhlIHJlc291cmNlIHRhYmxlIGNvbnRhaW5zIHN5c3RlbSByZXNvdXJjZXMgdGhhdCB0aGUgcmVtb3RlIHByb2Nlc3NvcgorcmVxdWlyZXMgYmVmb3JlIGl0IHNob3VsZCBiZSBwb3dlcmVkIG9uLCBzdWNoIGFzIGFsbG9jYXRpb24gb2YgcGh5c2ljYWxseQorY29udGlndW91cyBtZW1vcnksIG9yIGlvbW11IG1hcHBpbmcgb2YgY2VydGFpbiBvbi1jaGlwIHBlcmlwaGVyYWxzLgorUmVtb3RlY29yZSB3aWxsIG9ubHkgcG93ZXIgdXAgdGhlIGRldmljZSBhZnRlciBhbGwgdGhlIHJlc291cmNlIHRhYmxlJ3MKK3JlcXVpcmVtZW50IGFyZSBtZXQuCisKK0luIGFkZGl0aW9uIHRvIHN5c3RlbSByZXNvdXJjZXMsIHRoZSByZXNvdXJjZSB0YWJsZSBtYXkgYWxzbyBjb250YWluCityZXNvdXJjZSBlbnRyaWVzIHRoYXQgcHVibGlzaCB0aGUgZXhpc3RlbmNlIG9mIHN1cHBvcnRlZCBmZWF0dXJlcworb3IgY29uZmlndXJhdGlvbnMgYnkgdGhlIHJlbW90ZSBwcm9jZXNzb3IsIHN1Y2ggYXMgdHJhY2UgYnVmZmVycyBhbmQKK3N1cHBvcnRlZCB2aXJ0aW8gZGV2aWNlcyAoYW5kIHRoZWlyIGNvbmZpZ3VyYXRpb25zKS4KKworVGhlIHJlc291cmNlIHRhYmxlIGJlZ2lucyB3aXRoIHRoaXMgaGVhZGVyOgorCisvKioKKyAqIHN0cnVjdCByZXNvdXJjZV90YWJsZSAtIGZpcm13YXJlIHJlc291cmNlIHRhYmxlIGhlYWRlcgorICogQHZlcjogdmVyc2lvbiBudW1iZXIKKyAqIEBudW06IG51bWJlciBvZiByZXNvdXJjZSBlbnRyaWVzCisgKiBAcmVzZXJ2ZWQ6IHJlc2VydmVkIChtdXN0IGJlIHplcm8pCisgKiBAb2Zmc2V0OiBhcnJheSBvZiBvZmZzZXRzIHBvaW50aW5nIGF0IHRoZSB2YXJpb3VzIHJlc291cmNlIGVudHJpZXMKKyAqCisgKiBUaGUgaGVhZGVyIG9mIHRoZSByZXNvdXJjZSB0YWJsZSwgYXMgZXhwcmVzc2VkIGJ5IHRoaXMgc3RydWN0dXJlLAorICogY29udGFpbnMgYSB2ZXJzaW9uIG51bWJlciAoc2hvdWxkIHdlIG5lZWQgdG8gY2hhbmdlIHRoaXMgZm9ybWF0IGluIHRoZQorICogZnV0dXJlKSwgdGhlIG51bWJlciBvZiBhdmFpbGFibGUgcmVzb3VyY2UgZW50cmllcywgYW5kIHRoZWlyIG9mZnNldHMKKyAqIGluIHRoZSB0YWJsZS4KKyAqLworc3RydWN0IHJlc291cmNlX3RhYmxlIHsKKwl1MzIgdmVyOworCXUzMiBudW07CisJdTMyIHJlc2VydmVkWzJdOworCXUzMiBvZmZzZXRbMF07Cit9IF9fcGFja2VkOworCitJbW1lZGlhdGVseSBmb2xsb3dpbmcgdGhpcyBoZWFkZXIgYXJlIHRoZSByZXNvdXJjZSBlbnRyaWVzIHRoZW1zZWx2ZXMsCitlYWNoIG9mIHdoaWNoIGJlZ2lucyB3aXRoIHRoZSBmb2xsb3dpbmcgcmVzb3VyY2UgZW50cnkgaGVhZGVyOgorCisvKioKKyAqIHN0cnVjdCBmd19yc2NfaGRyIC0gZmlybXdhcmUgcmVzb3VyY2UgZW50cnkgaGVhZGVyCisgKiBAdHlwZTogcmVzb3VyY2UgdHlwZQorICogQGRhdGE6IHJlc291cmNlIGRhdGEKKyAqCisgKiBFdmVyeSByZXNvdXJjZSBlbnRyeSBiZWdpbnMgd2l0aCBhICdzdHJ1Y3QgZndfcnNjX2hkcicgaGVhZGVyIHByb3ZpZGluZworICogaXRzIEB0eXBlLiBUaGUgY29udGVudCBvZiB0aGUgZW50cnkgaXRzZWxmIHdpbGwgaW1tZWRpYXRlbHkgZm9sbG93CisgKiB0aGlzIGhlYWRlciwgYW5kIGl0IHNob3VsZCBiZSBwYXJzZWQgYWNjb3JkaW5nIHRvIHRoZSByZXNvdXJjZSB0eXBlLgorICovCitzdHJ1Y3QgZndfcnNjX2hkciB7CisJdTMyIHR5cGU7CisJdTggZGF0YVswXTsKK30gX19wYWNrZWQ7CisKK1NvbWUgcmVzb3VyY2VzIGVudHJpZXMgYXJlIG1lcmUgYW5ub3VuY2VtZW50cywgd2hlcmUgdGhlIGhvc3QgaXMgaW5mb3JtZWQKK29mIHNwZWNpZmljIHJlbW90ZXByb2MgY29uZmlndXJhdGlvbi4gT3RoZXIgZW50cmllcyByZXF1aXJlIHRoZSBob3N0IHRvCitkbyBzb21ldGhpbmcgKGUuZy4gYWxsb2NhdGUgYSBzeXN0ZW0gcmVzb3VyY2UpLiBTb21ldGltZXMgYSBuZWdvdGlhdGlvbgoraXMgZXhwZWN0ZWQsIHdoZXJlIHRoZSBmaXJtd2FyZSByZXF1ZXN0cyBhIHJlc291cmNlLCBhbmQgb25jZSBhbGxvY2F0ZWQsCit0aGUgaG9zdCBzaG91bGQgcHJvdmlkZSBiYWNrIGl0cyBkZXRhaWxzIChlLmcuIGFkZHJlc3Mgb2YgYW4gYWxsb2NhdGVkCittZW1vcnkgcmVnaW9uKS4KKworSGVyZSBhcmUgdGhlIHZhcmlvdXMgcmVzb3VyY2UgdHlwZXMgdGhhdCBhcmUgY3VycmVudGx5IHN1cHBvcnRlZDoKKworLyoqCisgKiBlbnVtIGZ3X3Jlc291cmNlX3R5cGUgLSB0eXBlcyBvZiByZXNvdXJjZSBlbnRyaWVzCisgKgorICogQFJTQ19DQVJWRU9VVDogICByZXF1ZXN0IGZvciBhbGxvY2F0aW9uIG9mIGEgcGh5c2ljYWxseSBjb250aWd1b3VzCisgKgkJICAgIG1lbW9yeSByZWdpb24uCisgKiBAUlNDX0RFVk1FTTogICAgIHJlcXVlc3QgdG8gaW9tbXVfbWFwIGEgbWVtb3J5LWJhc2VkIHBlcmlwaGVyYWwuCisgKiBAUlNDX1RSQUNFOgkgICAgYW5ub3VuY2VzIHRoZSBhdmFpbGFiaWxpdHkgb2YgYSB0cmFjZSBidWZmZXIgaW50byB3aGljaAorICoJCSAgICB0aGUgcmVtb3RlIHByb2Nlc3NvciB3aWxsIGJlIHdyaXRpbmcgbG9ncy4KKyAqIEBSU0NfVkRFVjogICAgICAgZGVjbGFyZSBzdXBwb3J0IGZvciBhIHZpcnRpbyBkZXZpY2UsIGFuZCBzZXJ2ZSBhcyBpdHMKKyAqCQkgICAgdmlydGlvIGhlYWRlci4KKyAqIEBSU0NfTEFTVDogICAgICAganVzdCBrZWVwIHRoaXMgb25lIGF0IHRoZSBlbmQKKyAqCisgKiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIHZhbHVlcyBhcmUgdXNlZCBhcyBpbmRpY2VzIHRvIHRoZSBycHJvY19oYW5kbGVfcnNjCisgKiBsb29rdXAgdGFibGUsIHNvIHBsZWFzZSBrZWVwIHRoZW0gc2FuZS4gTW9yZW92ZXIsIEBSU0NfTEFTVCBpcyB1c2VkIHRvCisgKiBjaGVjayB0aGUgdmFsaWRpdHkgb2YgYW4gaW5kZXggYmVmb3JlIHRoZSBsb29rdXAgdGFibGUgaXMgYWNjZXNzZWQsIHNvCisgKiBwbGVhc2UgdXBkYXRlIGl0IGFzIG5lZWRlZC4KKyAqLworZW51bSBmd19yZXNvdXJjZV90eXBlIHsKKwlSU0NfQ0FSVkVPVVQJPSAwLAorCVJTQ19ERVZNRU0JPSAxLAorCVJTQ19UUkFDRQk9IDIsCisJUlNDX1ZERVYJPSAzLAorCVJTQ19MQVNUCT0gNCwKK307CisKK0ZvciBtb3JlIGRldGFpbHMgcmVnYXJkaW5nIGEgc3BlY2lmaWMgcmVzb3VyY2UgdHlwZSwgcGxlYXNlIHNlZSBpdHMKK2RlZGljYXRlZCBzdHJ1Y3R1cmUgaW4gaW5jbHVkZS9saW51eC9yZW1vdGVwcm9jLmguCisKK1dlIGFsc28gZXhwZWN0IHRoYXQgcGxhdGZvcm0tc3BlY2lmaWMgcmVzb3VyY2UgZW50cmllcyB3aWxsIHNob3cgdXAKK2F0IHNvbWUgcG9pbnQuIFdoZW4gdGhhdCBoYXBwZW5zLCB3ZSBjb3VsZCBlYXNpbHkgYWRkIGEgbmV3IFJTQ19QTEFURk9STQordHlwZSwgYW5kIGhhbmQgdGhvc2UgcmVzb3VyY2VzIHRvIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBycHJvYyBkcml2ZXIgdG8gaGFuZGxlLgorCis3LiBWaXJ0aW8gYW5kIHJlbW90ZXByb2MKKworVGhlIGZpcm13YXJlIHNob3VsZCBwcm92aWRlIHJlbW90ZXByb2MgaW5mb3JtYXRpb24gYWJvdXQgdmlydGlvIGRldmljZXMKK3RoYXQgaXQgc3VwcG9ydHMsIGFuZCB0aGVpciBjb25maWd1cmF0aW9uczogYSBSU0NfVkRFViByZXNvdXJjZSBlbnRyeQorc2hvdWxkIHNwZWNpZnkgdGhlIHZpcnRpbyBkZXZpY2UgaWQgKGFzIGluIHZpcnRpb19pZHMuaCksIHZpcnRpbyBmZWF0dXJlcywKK3ZpcnRpbyBjb25maWcgc3BhY2UsIHZyaW5ncyBpbmZvcm1hdGlvbiwgZXRjLgorCitXaGVuIGEgbmV3IHJlbW90ZSBwcm9jZXNzb3IgaXMgcmVnaXN0ZXJlZCwgdGhlIHJlbW90ZXByb2MgZnJhbWV3b3JrCit3aWxsIGxvb2sgZm9yIGl0cyByZXNvdXJjZSB0YWJsZSBhbmQgd2lsbCByZWdpc3RlciB0aGUgdmlydGlvIGRldmljZXMKK2l0IHN1cHBvcnRzLiBBIGZpcm13YXJlIG1heSBzdXBwb3J0IGFueSBudW1iZXIgb2YgdmlydGlvIGRldmljZXMsIGFuZAorb2YgYW55IHR5cGUgKGEgc2luZ2xlIHJlbW90ZSBwcm9jZXNzb3IgY2FuIGFsc28gZWFzaWx5IHN1cHBvcnQgc2V2ZXJhbAorcnBtc2cgdmlydGlvIGRldmljZXMgdGhpcyB3YXksIGlmIGRlc2lyZWQpLgorCitPZiBjb3Vyc2UsIFJTQ19WREVWIHJlc291cmNlIGVudHJpZXMgYXJlIG9ubHkgZ29vZCBlbm91Z2ggZm9yIHN0YXRpYworYWxsb2NhdGlvbiBvZiB2aXJ0aW8gZGV2aWNlcy4gRHluYW1pYyBhbGxvY2F0aW9ucyB3aWxsIGFsc28gYmUgbWFkZSBwb3NzaWJsZQordXNpbmcgdGhlIHJwbXNnIGJ1cyAoc2ltaWxhciB0byBob3cgd2UgYWxyZWFkeSBkbyBkeW5hbWljIGFsbG9jYXRpb25zIG9mCitycG1zZyBjaGFubmVsczsgcmVhZCBtb3JlIGFib3V0IGl0IGluIHJwbXNnLnR4dCkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Jma2lsbC50eHQgYi9Eb2N1bWVudGF0aW9uL3Jma2lsbC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVlNmVmOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcmZraWxsLnR4dApAQCAtMCwwICsxLDEyMyBAQAorcmZraWxsIC0gUkYga2lsbCBzd2l0Y2ggc3VwcG9ydAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisxLiBJbnRyb2R1Y3Rpb24KKzIuIEltcGxlbWVudGF0aW9uIGRldGFpbHMKKzMuIEtlcm5lbCBBUEkKKzQuIFVzZXJzcGFjZSBzdXBwb3J0CisKKworMS4gSW50cm9kdWN0aW9uCisKK1RoZSByZmtpbGwgc3Vic3lzdGVtIHByb3ZpZGVzIGEgZ2VuZXJpYyBpbnRlcmZhY2UgdG8gZGlzYWJsaW5nIGFueSByYWRpbwordHJhbnNtaXR0ZXIgaW4gdGhlIHN5c3RlbS4gV2hlbiBhIHRyYW5zbWl0dGVyIGlzIGJsb2NrZWQsIGl0IHNoYWxsIG5vdAorcmFkaWF0ZSBhbnkgcG93ZXIuCisKK1RoZSBzdWJzeXN0ZW0gYWxzbyBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byByZWFjdCBvbiBidXR0b24gcHJlc3NlcyBhbmQKK2Rpc2FibGUgYWxsIHRyYW5zbWl0dGVycyBvZiBhIGNlcnRhaW4gdHlwZSAob3IgYWxsKS4gVGhpcyBpcyBpbnRlbmRlZCBmb3IKK3NpdHVhdGlvbnMgd2hlcmUgdHJhbnNtaXR0ZXJzIG5lZWQgdG8gYmUgdHVybmVkIG9mZiwgZm9yIGV4YW1wbGUgb24KK2FpcmNyYWZ0LgorCitUaGUgcmZraWxsIHN1YnN5c3RlbSBoYXMgYSBjb25jZXB0IG9mICJoYXJkIiBhbmQgInNvZnQiIGJsb2NrLCB3aGljaAorZGlmZmVyIGxpdHRsZSBpbiB0aGVpciBtZWFuaW5nIChibG9jayA9PSB0cmFuc21pdHRlcnMgb2ZmKSBidXQgcmF0aGVyIGluCit3aGV0aGVyIHRoZXkgY2FuIGJlIGNoYW5nZWQgb3Igbm90OgorIC0gaGFyZCBibG9jazogcmVhZC1vbmx5IHJhZGlvIGJsb2NrIHRoYXQgY2Fubm90IGJlIG92ZXJyaWRkZW4gYnkgc29mdHdhcmUKKyAtIHNvZnQgYmxvY2s6IHdyaXRhYmxlIHJhZGlvIGJsb2NrIChuZWVkIG5vdCBiZSByZWFkYWJsZSkgdGhhdCBpcyBzZXQgYnkKKyAgICAgICAgICAgICAgIHRoZSBzeXN0ZW0gc29mdHdhcmUuCisKK1RoZSByZmtpbGwgc3Vic3lzdGVtIGhhcyB0d28gcGFyYW1ldGVycywgcmZraWxsLmRlZmF1bHRfc3RhdGUgYW5kCityZmtpbGwubWFzdGVyX3N3aXRjaF9tb2RlLCB3aGljaCBhcmUgZG9jdW1lbnRlZCBpbiBrZXJuZWwtcGFyYW1ldGVycy50eHQuCisKKworMi4gSW1wbGVtZW50YXRpb24gZGV0YWlscworCitUaGUgcmZraWxsIHN1YnN5c3RlbSBpcyBjb21wb3NlZCBvZiB0aHJlZSBtYWluIGNvbXBvbmVudHM6CisgKiB0aGUgcmZraWxsIGNvcmUsCisgKiB0aGUgZGVwcmVjYXRlZCByZmtpbGwtaW5wdXQgbW9kdWxlIChhbiBpbnB1dCBsYXllciBoYW5kbGVyLCBiZWluZworICAgcmVwbGFjZWQgYnkgdXNlcnNwYWNlIHBvbGljeSBjb2RlKSBhbmQKKyAqIHRoZSByZmtpbGwgZHJpdmVycy4KKworVGhlIHJma2lsbCBjb3JlIHByb3ZpZGVzIEFQSSBmb3Iga2VybmVsIGRyaXZlcnMgdG8gcmVnaXN0ZXIgdGhlaXIgcmFkaW8KK3RyYW5zbWl0dGVyIHdpdGggdGhlIGtlcm5lbCwgbWV0aG9kcyBmb3IgdHVybmluZyBpdCBvbiBhbmQgb2ZmIGFuZCwgbGV0dGluZwordGhlIHN5c3RlbSBrbm93IGFib3V0IGhhcmR3YXJlLWRpc2FibGVkIHN0YXRlcyB0aGF0IG1heSBiZSBpbXBsZW1lbnRlZCBvbgordGhlIGRldmljZS4KKworVGhlIHJma2lsbCBjb3JlIGNvZGUgYWxzbyBub3RpZmllcyB1c2Vyc3BhY2Ugb2Ygc3RhdGUgY2hhbmdlcywgYW5kIHByb3ZpZGVzCit3YXlzIGZvciB1c2Vyc3BhY2UgdG8gcXVlcnkgdGhlIGN1cnJlbnQgc3RhdGVzLiBTZWUgdGhlICJVc2Vyc3BhY2Ugc3VwcG9ydCIKK3NlY3Rpb24gYmVsb3cuCisKK1doZW4gdGhlIGRldmljZSBpcyBoYXJkLWJsb2NrZWQgKGVpdGhlciBieSBhIGNhbGwgdG8gcmZraWxsX3NldF9od19zdGF0ZSgpCitvciBmcm9tIHF1ZXJ5X2h3X2Jsb2NrKSBzZXRfYmxvY2soKSB3aWxsIGJlIGludm9rZWQgZm9yIGFkZGl0aW9uYWwgc29mdHdhcmUKK2Jsb2NrLCBidXQgZHJpdmVycyBjYW4gaWdub3JlIHRoZSBtZXRob2QgY2FsbCBzaW5jZSB0aGV5IGNhbiB1c2UgdGhlIHJldHVybgordmFsdWUgb2YgdGhlIGZ1bmN0aW9uIHJma2lsbF9zZXRfaHdfc3RhdGUoKSB0byBzeW5jIHRoZSBzb2Z0d2FyZSBzdGF0ZQoraW5zdGVhZCBvZiBrZWVwaW5nIHRyYWNrIG9mIGNhbGxzIHRvIHNldF9ibG9jaygpLiBJbiBmYWN0LCBkcml2ZXJzIHNob3VsZAordXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgcmZraWxsX3NldF9od19zdGF0ZSgpIHVubGVzcyB0aGUgaGFyZHdhcmUgYWN0dWFsbHkKK2tlZXBzIHRyYWNrIG9mIHNvZnQgYW5kIGhhcmQgYmxvY2sgc2VwYXJhdGVseS4KKworCiszLiBLZXJuZWwgQVBJCisKKworRHJpdmVycyBmb3IgcmFkaW8gdHJhbnNtaXR0ZXJzIG5vcm1hbGx5IGltcGxlbWVudCBhbiByZmtpbGwgZHJpdmVyLgorCitQbGF0Zm9ybSBkcml2ZXJzIG1pZ2h0IGltcGxlbWVudCBpbnB1dCBkZXZpY2VzIGlmIHRoZSByZmtpbGwgYnV0dG9uIGlzIGp1c3QKK3RoYXQsIGEgYnV0dG9uLiBJZiB0aGF0IGJ1dHRvbiBpbmZsdWVuY2VzIHRoZSBoYXJkd2FyZSB0aGVuIHlvdSBuZWVkIHRvCitpbXBsZW1lbnQgYW4gcmZraWxsIGRyaXZlciBpbnN0ZWFkLiBUaGlzIGFsc28gYXBwbGllcyBpZiB0aGUgcGxhdGZvcm0gcHJvdmlkZXMKK2Egd2F5IHRvIHR1cm4gb24vb2ZmIHRoZSB0cmFuc21pdHRlcihzKS4KKworRm9yIHNvbWUgcGxhdGZvcm1zLCBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBoYXJkd2FyZSBzdGF0ZSBjaGFuZ2VzIGR1cmluZworc3VzcGVuZC9oaWJlcm5hdGlvbiwgaW4gd2hpY2ggY2FzZSBpdCB3aWxsIGJlIG5lY2Vzc2FyeSB0byB1cGRhdGUgdGhlIHJma2lsbAorY29yZSB3aXRoIHRoZSBjdXJyZW50IHN0YXRlIGlzIGF0IHJlc3VtZSB0aW1lLgorCitUbyBjcmVhdGUgYW4gcmZraWxsIGRyaXZlciwgZHJpdmVyJ3MgS2NvbmZpZyBuZWVkcyB0byBoYXZlCisKKwlkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMCisKK3RvIGVuc3VyZSB0aGUgZHJpdmVyIGNhbm5vdCBiZSBidWlsdC1pbiB3aGVuIHJma2lsbCBpcyBtb2R1bGFyLiBUaGUgIVJGS0lMTAorY2FzZSBhbGxvd3MgdGhlIGRyaXZlciB0byBiZSBidWlsdCB3aGVuIHJma2lsbCBpcyBub3QgY29uZmlndXJlZCwgd2hpY2gKK2Nhc2UgYWxsIHJma2lsbCBBUEkgY2FuIHN0aWxsIGJlIHVzZWQgYnV0IHdpbGwgYmUgcHJvdmlkZWQgYnkgc3RhdGljIGlubGluZXMKK3doaWNoIGNvbXBpbGUgdG8gYWxtb3N0IG5vdGhpbmcuCisKK0NhbGxpbmcgcmZraWxsX3NldF9od19zdGF0ZSgpIHdoZW4gYSBzdGF0ZSBjaGFuZ2UgaGFwcGVucyBpcyByZXF1aXJlZCBmcm9tCityZmtpbGwgZHJpdmVycyB0aGF0IGNvbnRyb2wgZGV2aWNlcyB0aGF0IGNhbiBiZSBoYXJkLWJsb2NrZWQgdW5sZXNzIHRoZXkgYWxzbworYXNzaWduIHRoZSBwb2xsX2h3X2Jsb2NrKCkgY2FsbGJhY2sgKHRoZW4gdGhlIHJma2lsbCBjb3JlIHdpbGwgcG9sbCB0aGUKK2RldmljZSkuIERvbid0IGRvIHRoaXMgdW5sZXNzIHlvdSBjYW5ub3QgZ2V0IHRoZSBldmVudCBpbiBhbnkgb3RoZXIgd2F5LgorCisKKworNS4gVXNlcnNwYWNlIHN1cHBvcnQKKworVGhlIHJlY29tbWVuZGVkIHVzZXJzcGFjZSBpbnRlcmZhY2UgdG8gdXNlIGlzIC9kZXYvcmZraWxsLCB3aGljaCBpcyBhIG1pc2MKK2NoYXJhY3RlciBkZXZpY2UgdGhhdCBhbGxvd3MgdXNlcnNwYWNlIHRvIG9idGFpbiBhbmQgc2V0IHRoZSBzdGF0ZSBvZiByZmtpbGwKK2RldmljZXMgYW5kIHNldHMgb2YgZGV2aWNlcy4gSXQgYWxzbyBub3RpZmllcyB1c2Vyc3BhY2UgYWJvdXQgZGV2aWNlIGFkZGl0aW9uCithbmQgcmVtb3ZhbC4gVGhlIEFQSSBpcyBhIHNpbXBsZSByZWFkL3dyaXRlIEFQSSB0aGF0IGlzIGRlZmluZWQgaW4KK2xpbnV4L3Jma2lsbC5oLCB3aXRoIG9uZSBpb2N0bCB0aGF0IGFsbG93cyB0dXJuaW5nIG9mZiB0aGUgZGVwcmVjYXRlZCBpbnB1dAoraGFuZGxlciBpbiB0aGUga2VybmVsIGZvciB0aGUgdHJhbnNpdGlvbiBwZXJpb2QuCisKK0V4Y2VwdCBmb3IgdGhlIG9uZSBpb2N0bCwgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBrZXJuZWwgaXMgZG9uZSB2aWEgcmVhZCgpCithbmQgd3JpdGUoKSBvZiBpbnN0YW5jZXMgb2YgJ3N0cnVjdCByZmtpbGxfZXZlbnQnLiBJbiB0aGlzIHN0cnVjdHVyZSwgdGhlCitzb2Z0IGFuZCBoYXJkIGJsb2NrIGFyZSBwcm9wZXJseSBzZXBhcmF0ZWQgKHVubGlrZSBzeXNmcywgc2VlIGJlbG93KSBhbmQKK3VzZXJzcGFjZSBpcyBhYmxlIHRvIGdldCBhIGNvbnNpc3RlbnQgc25hcHNob3Qgb2YgYWxsIHJma2lsbCBkZXZpY2VzIGluIHRoZQorc3lzdGVtLiBBbHNvLCBpdCBpcyBwb3NzaWJsZSB0byBzd2l0Y2ggYWxsIHJma2lsbCBkcml2ZXJzIChvciBhbGwgZHJpdmVycyBvZgorYSBzcGVjaWZpZWQgdHlwZSkgaW50byBhIHN0YXRlIHdoaWNoIGFsc28gdXBkYXRlcyB0aGUgZGVmYXVsdCBzdGF0ZSBmb3IKK2hvdHBsdWdnZWQgZGV2aWNlcy4KKworQWZ0ZXIgYW4gYXBwbGljYXRpb24gb3BlbnMgL2Rldi9yZmtpbGwsIGl0IGNhbiByZWFkIHRoZSBjdXJyZW50IHN0YXRlIG9mIGFsbAorZGV2aWNlcy4gQ2hhbmdlcyBjYW4gYmUgZWl0aGVyIG9idGFpbmVkIGJ5IGVpdGhlciBwb2xsaW5nIHRoZSBkZXNjcmlwdG9yIGZvcgoraG90cGx1ZyBvciBzdGF0ZSBjaGFuZ2UgZXZlbnRzIG9yIGJ5IGxpc3RlbmluZyBmb3IgdWV2ZW50cyBlbWl0dGVkIGJ5IHRoZQorcmZraWxsIGNvcmUgZnJhbWV3b3JrLgorCitBZGRpdGlvbmFsbHksIGVhY2ggcmZraWxsIGRldmljZSBpcyByZWdpc3RlcmVkIGluIHN5c2ZzIGFuZCBlbWl0cyB1ZXZlbnRzLgorCityZmtpbGwgZGV2aWNlcyBpc3N1ZSB1ZXZlbnRzICh3aXRoIGFuIGFjdGlvbiBvZiAiY2hhbmdlIiksIHdpdGggdGhlIGZvbGxvd2luZworZW52aXJvbm1lbnQgdmFyaWFibGVzIHNldDoKKworUkZLSUxMX05BTUUKK1JGS0lMTF9TVEFURQorUkZLSUxMX1RZUEUKKworVGhlIGNvbnRlbnRzIG9mIHRoZXNlIHZhcmlhYmxlcyBjb3JyZXNwb25kcyB0byB0aGUgIm5hbWUiLCAic3RhdGUiIGFuZAorInR5cGUiIHN5c2ZzIGZpbGVzIGV4cGxhaW5lZCBhYm92ZS4KKworCitGb3IgZnVydGhlciBkZXRhaWxzIGNvbnN1bHQgRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWNsYXNzLXJma2lsbC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcm9idXN0LWZ1dGV4LUFCSS50eHQgYi9Eb2N1bWVudGF0aW9uL3JvYnVzdC1mdXRleC1BQkkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2ZWIzMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3JvYnVzdC1mdXRleC1BQkkudHh0CkBAIC0wLDAgKzEsMTgyIEBACitTdGFydGVkIGJ5IFBhdWwgSmFja3NvbiA8cGpAc2dpLmNvbT4KKworVGhlIHJvYnVzdCBmdXRleCBBQkkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JvYnVzdF9mdXRleGVzIHByb3ZpZGUgYSBtZWNoYW5pc20gdGhhdCBpcyB1c2VkIGluIGFkZGl0aW9uIHRvIG5vcm1hbAorZnV0ZXhlcywgZm9yIGtlcm5lbCBhc3Npc3Qgb2YgY2xlYW51cCBvZiBoZWxkIGxvY2tzIG9uIHRhc2sgZXhpdC4KKworVGhlIGludGVyZXN0aW5nIGRhdGEgYXMgdG8gd2hhdCBmdXRleGVzIGEgdGhyZWFkIGlzIGhvbGRpbmcgaXMga2VwdCBvbiBhCitsaW5rZWQgbGlzdCBpbiB1c2VyIHNwYWNlLCB3aGVyZSBpdCBjYW4gYmUgdXBkYXRlZCBlZmZpY2llbnRseSBhcyBsb2NrcworYXJlIHRha2VuIGFuZCBkcm9wcGVkLCB3aXRob3V0IGtlcm5lbCBpbnRlcnZlbnRpb24uICBUaGUgb25seSBhZGRpdGlvbmFsCitrZXJuZWwgaW50ZXJ2ZW50aW9uIHJlcXVpcmVkIGZvciByb2J1c3RfZnV0ZXhlcyBhYm92ZSBhbmQgYmV5b25kIHdoYXQgaXMKK3JlcXVpcmVkIGZvciBmdXRleGVzIGlzOgorCisgMSkgYSBvbmUgdGltZSBjYWxsLCBwZXIgdGhyZWFkLCB0byB0ZWxsIHRoZSBrZXJuZWwgd2hlcmUgaXRzIGxpc3Qgb2YKKyAgICBoZWxkIHJvYnVzdF9mdXRleGVzIGJlZ2lucywgYW5kCisgMikgaW50ZXJuYWwga2VybmVsIGNvZGUgYXQgZXhpdCwgdG8gaGFuZGxlIGFueSBsaXN0ZWQgbG9ja3MgaGVsZAorICAgIGJ5IHRoZSBleGl0aW5nIHRocmVhZC4KKworVGhlIGV4aXN0aW5nIG5vcm1hbCBmdXRleGVzIGFscmVhZHkgcHJvdmlkZSBhICJGYXN0IFVzZXJzcGFjZSBMb2NraW5nIgorbWVjaGFuaXNtLCB3aGljaCBoYW5kbGVzIHVuY29udGVzdGVkIGxvY2tpbmcgd2l0aG91dCBuZWVkaW5nIGEgc3lzdGVtCitjYWxsLCBhbmQgaGFuZGxlcyBjb250ZXN0ZWQgbG9ja2luZyBieSBtYWludGFpbmluZyBhIGxpc3Qgb2Ygd2FpdGluZwordGhyZWFkcyBpbiB0aGUga2VybmVsLiAgT3B0aW9ucyBvbiB0aGUgc3lzX2Z1dGV4KDIpIHN5c3RlbSBjYWxsIHN1cHBvcnQKK3dhaXRpbmcgb24gYSBwYXJ0aWN1bGFyIGZ1dGV4LCBhbmQgd2FraW5nIHVwIHRoZSBuZXh0IHdhaXRlciBvbiBhCitwYXJ0aWN1bGFyIGZ1dGV4LgorCitGb3Igcm9idXN0X2Z1dGV4ZXMgdG8gd29yaywgdGhlIHVzZXIgY29kZSAodHlwaWNhbGx5IGluIGEgbGlicmFyeSBzdWNoCithcyBnbGliYyBsaW5rZWQgd2l0aCB0aGUgYXBwbGljYXRpb24pIGhhcyB0byBtYW5hZ2UgYW5kIHBsYWNlIHRoZQorbmVjZXNzYXJ5IGxpc3QgZWxlbWVudHMgZXhhY3RseSBhcyB0aGUga2VybmVsIGV4cGVjdHMgdGhlbS4gIElmIGl0IGZhaWxzCit0byBkbyBzbywgdGhlbiBpbXByb3Blcmx5IGxpc3RlZCBsb2NrcyB3aWxsIG5vdCBiZSBjbGVhbmVkIHVwIG9uIGV4aXQsCitwcm9iYWJseSBjYXVzaW5nIGRlYWRsb2NrIG9yIG90aGVyIHN1Y2ggZmFpbHVyZSBvZiB0aGUgb3RoZXIgdGhyZWFkcword2FpdGluZyBvbiB0aGUgc2FtZSBsb2Nrcy4KKworQSB0aHJlYWQgdGhhdCBhbnRpY2lwYXRlcyBwb3NzaWJseSB1c2luZyByb2J1c3RfZnV0ZXhlcyBzaG91bGQgZmlyc3QKK2lzc3VlIHRoZSBzeXN0ZW0gY2FsbDoKKworICAgIGFzbWxpbmthZ2UgbG9uZworICAgIHN5c19zZXRfcm9idXN0X2xpc3Qoc3RydWN0IHJvYnVzdF9saXN0X2hlYWQgX191c2VyICpoZWFkLCBzaXplX3QgbGVuKTsKKworVGhlIHBvaW50ZXIgJ2hlYWQnIHBvaW50cyB0byBhIHN0cnVjdHVyZSBpbiB0aGUgdGhyZWFkcyBhZGRyZXNzIHNwYWNlCitjb25zaXN0aW5nIG9mIHRocmVlIHdvcmRzLiAgRWFjaCB3b3JkIGlzIDMyIGJpdHMgb24gMzIgYml0IGFyY2gncywgb3IgNjQKK2JpdHMgb24gNjQgYml0IGFyY2gncywgYW5kIGxvY2FsIGJ5dGUgb3JkZXIuICBFYWNoIHRocmVhZCBzaG91bGQgaGF2ZQoraXRzIG93biB0aHJlYWQgcHJpdmF0ZSAnaGVhZCcuCisKK0lmIGEgdGhyZWFkIGlzIHJ1bm5pbmcgaW4gMzIgYml0IGNvbXBhdGliaWxpdHkgbW9kZSBvbiBhIDY0IG5hdGl2ZSBhcmNoCitrZXJuZWwsIHRoZW4gaXQgY2FuIGFjdHVhbGx5IGhhdmUgdHdvIHN1Y2ggc3RydWN0dXJlcyAtIG9uZSB1c2luZyAzMiBiaXQKK3dvcmRzIGZvciAzMiBiaXQgY29tcGF0aWJpbGl0eSBtb2RlLCBhbmQgb25lIHVzaW5nIDY0IGJpdCB3b3JkcyBmb3IgNjQKK2JpdCBuYXRpdmUgbW9kZS4gIFRoZSBrZXJuZWwsIGlmIGl0IGlzIGEgNjQgYml0IGtlcm5lbCBzdXBwb3J0aW5nIDMyIGJpdAorY29tcGF0aWJpbGl0eSBtb2RlLCB3aWxsIGF0dGVtcHQgdG8gcHJvY2VzcyBib3RoIGxpc3RzIG9uIGVhY2ggdGFzaworZXhpdCwgaWYgdGhlIGNvcnJlc3BvbmRpbmcgc3lzX3NldF9yb2J1c3RfbGlzdCgpIGNhbGwgaGFzIGJlZW4gbWFkZSB0bworc2V0dXAgdGhhdCBsaXN0LgorCisgIFRoZSBmaXJzdCB3b3JkIGluIHRoZSBtZW1vcnkgc3RydWN0dXJlIGF0ICdoZWFkJyBjb250YWlucyBhCisgIHBvaW50ZXIgdG8gYSBzaW5nbGUgbGlua2VkIGxpc3Qgb2YgJ2xvY2sgZW50cmllcycsIG9uZSBwZXIgbG9jaywKKyAgYXMgZGVzY3JpYmVkIGJlbG93LiAgSWYgdGhlIGxpc3QgaXMgZW1wdHksIHRoZSBwb2ludGVyIHdpbGwgcG9pbnQKKyAgdG8gaXRzZWxmLCAnaGVhZCcuICBUaGUgbGFzdCAnbG9jayBlbnRyeScgcG9pbnRzIGJhY2sgdG8gdGhlICdoZWFkJy4KKworICBUaGUgc2Vjb25kIHdvcmQsIGNhbGxlZCAnb2Zmc2V0Jywgc3BlY2lmaWVzIHRoZSBvZmZzZXQgZnJvbSB0aGUKKyAgYWRkcmVzcyBvZiB0aGUgYXNzb2NpYXRlZCAnbG9jayBlbnRyeScsIHBsdXMgb3IgbWludXMsIG9mIHdoYXQgd2lsbAorICBiZSBjYWxsZWQgdGhlICdsb2NrIHdvcmQnLCBmcm9tIHRoYXQgJ2xvY2sgZW50cnknLiAgVGhlICdsb2NrIHdvcmQnCisgIGlzIGFsd2F5cyBhIDMyIGJpdCB3b3JkLCB1bmxpa2UgdGhlIG90aGVyIHdvcmRzIGFib3ZlLiAgVGhlICdsb2NrCisgIHdvcmQnIGhvbGRzIDMgZmxhZyBiaXRzIGluIHRoZSB1cHBlciAzIGJpdHMsIGFuZCB0aGUgdGhyZWFkIGlkIChUSUQpCisgIG9mIHRoZSB0aHJlYWQgaG9sZGluZyB0aGUgbG9jayBpbiB0aGUgYm90dG9tIDI5IGJpdHMuICBTZWUgZnVydGhlcgorICBiZWxvdyBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZmxhZyBiaXRzLgorCisgIFRoZSB0aGlyZCB3b3JkLCBjYWxsZWQgJ2xpc3Rfb3BfcGVuZGluZycsIGNvbnRhaW5zIHRyYW5zaWVudCBjb3B5IG9mCisgIHRoZSBhZGRyZXNzIG9mIHRoZSAnbG9jayBlbnRyeScsIGR1cmluZyBsaXN0IGluc2VydGlvbiBhbmQgcmVtb3ZhbCwKKyAgYW5kIGlzIG5lZWRlZCB0byBjb3JyZWN0bHkgcmVzb2x2ZSByYWNlcyBzaG91bGQgYSB0aHJlYWQgZXhpdCB3aGlsZQorICBpbiB0aGUgbWlkZGxlIG9mIGEgbG9ja2luZyBvciB1bmxvY2tpbmcgb3BlcmF0aW9uLgorCitFYWNoICdsb2NrIGVudHJ5JyBvbiB0aGUgc2luZ2xlIGxpbmtlZCBsaXN0IHN0YXJ0aW5nIGF0ICdoZWFkJyBjb25zaXN0cworb2YganVzdCBhIHNpbmdsZSB3b3JkLCBwb2ludGluZyB0byB0aGUgbmV4dCAnbG9jayBlbnRyeScsIG9yIGJhY2sgdG8KKydoZWFkJyBpZiB0aGVyZSBhcmUgbm8gbW9yZSBlbnRyaWVzLiAgSW4gYWRkaXRpb24sIG5lYXJieSB0byBlYWNoICdsb2NrCitlbnRyeScsIGF0IGFuIG9mZnNldCBmcm9tIHRoZSAnbG9jayBlbnRyeScgc3BlY2lmaWVkIGJ5IHRoZSAnb2Zmc2V0Jword29yZCwgaXMgb25lICdsb2NrIHdvcmQnLgorCitUaGUgJ2xvY2sgd29yZCcgaXMgYWx3YXlzIDMyIGJpdHMsIGFuZCBpcyBpbnRlbmRlZCB0byBiZSB0aGUgc2FtZSAzMiBiaXQKK2xvY2sgdmFyaWFibGUgdXNlZCBieSB0aGUgZnV0ZXggbWVjaGFuaXNtLCBpbiBjb25qdW5jdGlvbiB3aXRoCityb2J1c3RfZnV0ZXhlcy4gIFRoZSBrZXJuZWwgd2lsbCBvbmx5IGJlIGFibGUgdG8gd2FrZXVwIHRoZSBuZXh0IHRocmVhZAord2FpdGluZyBmb3IgYSBsb2NrIG9uIGEgdGhyZWFkcyBleGl0IGlmIHRoYXQgbmV4dCB0aHJlYWQgdXNlZCB0aGUgZnV0ZXgKK21lY2hhbmlzbSB0byByZWdpc3RlciB0aGUgYWRkcmVzcyBvZiB0aGF0ICdsb2NrIHdvcmQnIHdpdGggdGhlIGtlcm5lbC4KKworRm9yIGVhY2ggZnV0ZXggbG9jayBjdXJyZW50bHkgaGVsZCBieSBhIHRocmVhZCwgaWYgaXQgd2FudHMgdGhpcworcm9idXN0X2Z1dGV4IHN1cHBvcnQgZm9yIGV4aXQgY2xlYW51cCBvZiB0aGF0IGxvY2ssIGl0IHNob3VsZCBoYXZlIG9uZQorJ2xvY2sgZW50cnknIG9uIHRoaXMgbGlzdCwgd2l0aCBpdHMgYXNzb2NpYXRlZCAnbG9jayB3b3JkJyBhdCB0aGUKK3NwZWNpZmllZCAnb2Zmc2V0Jy4gIFNob3VsZCBhIHRocmVhZCBkaWUgd2hpbGUgaG9sZGluZyBhbnkgc3VjaCBsb2NrcywKK3RoZSBrZXJuZWwgd2lsbCB3YWxrIHRoaXMgbGlzdCwgbWFyayBhbnkgc3VjaCBsb2NrcyB3aXRoIGEgYml0CitpbmRpY2F0aW5nIHRoZWlyIGhvbGRlciBkaWVkLCBhbmQgd2FrZXVwIHRoZSBuZXh0IHRocmVhZCB3YWl0aW5nIGZvcgordGhhdCBsb2NrIHVzaW5nIHRoZSBmdXRleCBtZWNoYW5pc20uCisKK1doZW4gYSB0aHJlYWQgaGFzIGludm9rZWQgdGhlIGFib3ZlIHN5c3RlbSBjYWxsIHRvIGluZGljYXRlIGl0CithbnRpY2lwYXRlcyB1c2luZyByb2J1c3RfZnV0ZXhlcywgdGhlIGtlcm5lbCBzdG9yZXMgdGhlIHBhc3NlZCBpbiAnaGVhZCcKK3BvaW50ZXIgZm9yIHRoYXQgdGFzay4gIFRoZSB0YXNrIG1heSByZXRyaWV2ZSB0aGF0IHZhbHVlIGxhdGVyIG9uIGJ5Cit1c2luZyB0aGUgc3lzdGVtIGNhbGw6CisKKyAgICBhc21saW5rYWdlIGxvbmcKKyAgICBzeXNfZ2V0X3JvYnVzdF9saXN0KGludCBwaWQsIHN0cnVjdCByb2J1c3RfbGlzdF9oZWFkIF9fdXNlciAqKmhlYWRfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fdXNlciAqbGVuX3B0cik7CisKK0l0IGlzIGFudGljaXBhdGVkIHRoYXQgdGhyZWFkcyB3aWxsIHVzZSByb2J1c3RfZnV0ZXhlcyBlbWJlZGRlZCBpbgorbGFyZ2VyLCB1c2VyIGxldmVsIGxvY2tpbmcgc3RydWN0dXJlcywgb25lIHBlciBsb2NrLiAgVGhlIGtlcm5lbAorcm9idXN0X2Z1dGV4IG1lY2hhbmlzbSBkb2Vzbid0IGNhcmUgd2hhdCBlbHNlIGlzIGluIHRoYXQgc3RydWN0dXJlLCBzbworbG9uZyBhcyB0aGUgJ29mZnNldCcgdG8gdGhlICdsb2NrIHdvcmQnIGlzIHRoZSBzYW1lIGZvciBhbGwKK3JvYnVzdF9mdXRleGVzIHVzZWQgYnkgdGhhdCB0aHJlYWQuICBUaGUgdGhyZWFkIHNob3VsZCBsaW5rIHRob3NlIGxvY2tzCitpdCBjdXJyZW50bHkgaG9sZHMgdXNpbmcgdGhlICdsb2NrIGVudHJ5JyBwb2ludGVycy4gIEl0IG1heSBhbHNvIGhhdmUKK290aGVyIGxpbmtzIGJldHdlZW4gdGhlIGxvY2tzLCBzdWNoIGFzIHRoZSByZXZlcnNlIHNpZGUgb2YgYSBkb3VibGUKK2xpbmtlZCBsaXN0LCBidXQgdGhhdCBkb2Vzbid0IG1hdHRlciB0byB0aGUga2VybmVsLgorCitCeSBrZWVwaW5nIGl0cyBsb2NrcyBsaW5rZWQgdGhpcyB3YXksIG9uIGEgbGlzdCBzdGFydGluZyB3aXRoIGEgJ2hlYWQnCitwb2ludGVyIGtub3duIHRvIHRoZSBrZXJuZWwsIHRoZSBrZXJuZWwgY2FuIHByb3ZpZGUgdG8gYSB0aHJlYWQgdGhlCitlc3NlbnRpYWwgc2VydmljZSBhdmFpbGFibGUgZm9yIHJvYnVzdF9mdXRleGVzLCB3aGljaCBpcyB0byBoZWxwIGNsZWFuCit1cCBsb2NrcyBoZWxkIGF0IHRoZSB0aW1lIG9mIChhIHBlcmhhcHMgdW5leHBlY3RlZGx5KSBleGl0LgorCitBY3R1YWwgbG9ja2luZyBhbmQgdW5sb2NraW5nLCBkdXJpbmcgbm9ybWFsIG9wZXJhdGlvbnMsIGlzIGhhbmRsZWQKK2VudGlyZWx5IGJ5IHVzZXIgbGV2ZWwgY29kZSBpbiB0aGUgY29udGVuZGluZyB0aHJlYWRzLCBhbmQgYnkgdGhlCitleGlzdGluZyBmdXRleCBtZWNoYW5pc20gdG8gd2FpdCBmb3IsIGFuZCB3YWtldXAsIGxvY2tzLiAgVGhlIGtlcm5lbHMKK29ubHkgZXNzZW50aWFsIGludm9sdmVtZW50IGluIHJvYnVzdF9mdXRleGVzIGlzIHRvIHJlbWVtYmVyIHdoZXJlIHRoZQorbGlzdCAnaGVhZCcgaXMsIGFuZCB0byB3YWxrIHRoZSBsaXN0IG9uIHRocmVhZCBleGl0LCBoYW5kbGluZyBsb2Nrcworc3RpbGwgaGVsZCBieSB0aGUgZGVwYXJ0aW5nIHRocmVhZCwgYXMgZGVzY3JpYmVkIGJlbG93LgorCitUaGVyZSBtYXkgZXhpc3QgdGhvdXNhbmRzIG9mIGZ1dGV4IGxvY2sgc3RydWN0dXJlcyBpbiBhIHRocmVhZHMgc2hhcmVkCittZW1vcnksIG9uIHZhcmlvdXMgZGF0YSBzdHJ1Y3R1cmVzLCBhdCBhIGdpdmVuIHBvaW50IGluIHRpbWUuIE9ubHkgdGhvc2UKK2xvY2sgc3RydWN0dXJlcyBmb3IgbG9ja3MgY3VycmVudGx5IGhlbGQgYnkgdGhhdCB0aHJlYWQgc2hvdWxkIGJlIG9uCit0aGF0IHRocmVhZCdzIHJvYnVzdF9mdXRleCBsaW5rZWQgbG9jayBsaXN0IGEgZ2l2ZW4gdGltZS4KKworQSBnaXZlbiBmdXRleCBsb2NrIHN0cnVjdHVyZSBpbiBhIHVzZXIgc2hhcmVkIG1lbW9yeSByZWdpb24gbWF5IGJlIGhlbGQKK2F0IGRpZmZlcmVudCB0aW1lcyBieSBhbnkgb2YgdGhlIHRocmVhZHMgd2l0aCBhY2Nlc3MgdG8gdGhhdCByZWdpb24uIFRoZQordGhyZWFkIGN1cnJlbnRseSBob2xkaW5nIHN1Y2ggYSBsb2NrLCBpZiBhbnksIGlzIG1hcmtlZCB3aXRoIHRoZSB0aHJlYWRzCitUSUQgaW4gdGhlIGxvd2VyIDI5IGJpdHMgb2YgdGhlICdsb2NrIHdvcmQnLgorCitXaGVuIGFkZGluZyBvciByZW1vdmluZyBhIGxvY2sgZnJvbSBpdHMgbGlzdCBvZiBoZWxkIGxvY2tzLCBpbiBvcmRlciBmb3IKK3RoZSBrZXJuZWwgdG8gY29ycmVjdGx5IGhhbmRsZSBsb2NrIGNsZWFudXAgcmVnYXJkbGVzcyBvZiB3aGVuIHRoZSB0YXNrCitleGl0cyAocGVyaGFwcyBpdCBnZXRzIGFuIHVuZXhwZWN0ZWQgc2lnbmFsIDkgaW4gdGhlIG1pZGRsZSBvZgorbWFuaXB1bGF0aW5nIHRoaXMgbGlzdCksIHRoZSB1c2VyIGNvZGUgbXVzdCBvYnNlcnZlIHRoZSBmb2xsb3dpbmcKK3Byb3RvY29sIG9uICdsb2NrIGVudHJ5JyBpbnNlcnRpb24gYW5kIHJlbW92YWw6CisKK09uIGluc2VydGlvbjoKKyAxKSBzZXQgdGhlICdsaXN0X29wX3BlbmRpbmcnIHdvcmQgdG8gdGhlIGFkZHJlc3Mgb2YgdGhlICdsb2NrIGVudHJ5JworICAgIHRvIGJlIGluc2VydGVkLAorIDIpIGFjcXVpcmUgdGhlIGZ1dGV4IGxvY2ssCisgMykgYWRkIHRoZSBsb2NrIGVudHJ5LCB3aXRoIGl0cyB0aHJlYWQgaWQgKFRJRCkgaW4gdGhlIGJvdHRvbSAyOSBiaXRzCisgICAgb2YgdGhlICdsb2NrIHdvcmQnLCB0byB0aGUgbGlua2VkIGxpc3Qgc3RhcnRpbmcgYXQgJ2hlYWQnLCBhbmQKKyA0KSBjbGVhciB0aGUgJ2xpc3Rfb3BfcGVuZGluZycgd29yZC4KKworT24gcmVtb3ZhbDoKKyAxKSBzZXQgdGhlICdsaXN0X29wX3BlbmRpbmcnIHdvcmQgdG8gdGhlIGFkZHJlc3Mgb2YgdGhlICdsb2NrIGVudHJ5JworICAgIHRvIGJlIHJlbW92ZWQsCisgMikgcmVtb3ZlIHRoZSBsb2NrIGVudHJ5IGZvciB0aGlzIGxvY2sgZnJvbSB0aGUgJ2hlYWQnIGxpc3QsCisgMykgcmVsZWFzZSB0aGUgZnV0ZXggbG9jaywgYW5kCisgNCkgY2xlYXIgdGhlICdsb2NrX29wX3BlbmRpbmcnIHdvcmQuCisKK09uIGV4aXQsIHRoZSBrZXJuZWwgd2lsbCBjb25zaWRlciB0aGUgYWRkcmVzcyBzdG9yZWQgaW4KKydsaXN0X29wX3BlbmRpbmcnIGFuZCB0aGUgYWRkcmVzcyBvZiBlYWNoICdsb2NrIHdvcmQnIGZvdW5kIGJ5IHdhbGtpbmcKK3RoZSBsaXN0IHN0YXJ0aW5nIGF0ICdoZWFkJy4gIEZvciBlYWNoIHN1Y2ggYWRkcmVzcywgaWYgdGhlIGJvdHRvbSAyOQorYml0cyBvZiB0aGUgJ2xvY2sgd29yZCcgYXQgb2Zmc2V0ICdvZmZzZXQnIGZyb20gdGhhdCBhZGRyZXNzIGVxdWFscyB0aGUKK2V4aXRpbmcgdGhyZWFkcyBUSUQsIHRoZW4gdGhlIGtlcm5lbCB3aWxsIGRvIHR3byB0aGluZ3M6CisKKyAxKSBpZiBiaXQgMzEgKDB4ODAwMDAwMDApIGlzIHNldCBpbiB0aGF0IHdvcmQsIHRoZW4gYXR0ZW1wdCBhIGZ1dGV4CisgICAgd2FrZXVwIG9uIHRoYXQgYWRkcmVzcywgd2hpY2ggd2lsbCB3YWtlbiB0aGUgbmV4dCB0aHJlYWQgdGhhdCBoYXMKKyAgICB1c2VkIHRvIHRoZSBmdXRleCBtZWNoYW5pc20gdG8gd2FpdCBvbiB0aGF0IGFkZHJlc3MsIGFuZAorIDIpIGF0b21pY2FsbHkgc2V0ICBiaXQgMzAgKDB4NDAwMDAwMDApIGluIHRoZSAnbG9jayB3b3JkJy4KKworSW4gdGhlIGFib3ZlLCBiaXQgMzEgd2FzIHNldCBieSBmdXRleCB3YWl0ZXJzIG9uIHRoYXQgbG9jayB0byBpbmRpY2F0ZQordGhleSB3ZXJlIHdhaXRpbmcsIGFuZCBiaXQgMzAgaXMgc2V0IGJ5IHRoZSBrZXJuZWwgdG8gaW5kaWNhdGUgdGhhdCB0aGUKK2xvY2sgb3duZXIgZGllZCBob2xkaW5nIHRoZSBsb2NrLgorCitUaGUga2VybmVsIGV4aXQgY29kZSB3aWxsIHNpbGVudGx5IHN0b3Agc2Nhbm5pbmcgdGhlIGxpc3QgZnVydGhlciBpZiBhdAorYW55IHBvaW50OgorCisgMSkgdGhlICdoZWFkJyBwb2ludGVyIG9yIGFuIHN1YnNlcXVlbnQgbGlua2VkIGxpc3QgcG9pbnRlcgorICAgIGlzIG5vdCBhIHZhbGlkIGFkZHJlc3Mgb2YgYSB1c2VyIHNwYWNlIHdvcmQKKyAyKSB0aGUgY2FsY3VsYXRlZCBsb2NhdGlvbiBvZiB0aGUgJ2xvY2sgd29yZCcgKGFkZHJlc3MgcGx1cworICAgICdvZmZzZXQnKSBpcyBub3QgdGhlIHZhbGlkIGFkZHJlc3Mgb2YgYSAzMiBiaXQgdXNlciBzcGFjZQorICAgIHdvcmQKKyAzKSBpZiB0aGUgbGlzdCBjb250YWlucyBtb3JlIHRoYW4gMSBtaWxsaW9uIChzdWJqZWN0IHRvCisgICAgZnV0dXJlIGtlcm5lbCBjb25maWd1cmF0aW9uIGNoYW5nZXMpIGVsZW1lbnRzLgorCitXaGVuIHRoZSBrZXJuZWwgc2VlcyBhIGxpc3QgZW50cnkgd2hvc2UgJ2xvY2sgd29yZCcgZG9lc24ndCBoYXZlIHRoZQorY3VycmVudCB0aHJlYWRzIFRJRCBpbiB0aGUgbG93ZXIgMjkgYml0cywgaXQgZG9lcyBub3RoaW5nIHdpdGggdGhhdAorZW50cnksIGFuZCBnb2VzIG9uIHRvIHRoZSBuZXh0IGVudHJ5LgorCitCaXQgMjkgKDB4MjAwMDAwMDApIG9mIHRoZSAnbG9jayB3b3JkJyBpcyByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcm9idXN0LWZ1dGV4ZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9yb2J1c3QtZnV0ZXhlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY2ZmNlMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcm9idXN0LWZ1dGV4ZXMudHh0CkBAIC0wLDAgKzEsMjE4IEBACitTdGFydGVkIGJ5OiBJbmdvIE1vbG5hciA8bWluZ29AcmVkaGF0LmNvbT4KKworQmFja2dyb3VuZAorLS0tLS0tLS0tLQorCit3aGF0IGFyZSByb2J1c3QgZnV0ZXhlcz8gVG8gYW5zd2VyIHRoYXQsIHdlIGZpcnN0IG5lZWQgdG8gdW5kZXJzdGFuZAord2hhdCBmdXRleGVzIGFyZTogbm9ybWFsIGZ1dGV4ZXMgYXJlIHNwZWNpYWwgdHlwZXMgb2YgbG9ja3MgdGhhdCBpbiB0aGUKK25vbmNvbnRlbmRlZCBjYXNlIGNhbiBiZSBhY3F1aXJlZC9yZWxlYXNlZCBmcm9tIHVzZXJzcGFjZSB3aXRob3V0IGhhdmluZwordG8gZW50ZXIgdGhlIGtlcm5lbC4KKworQSBmdXRleCBpcyBpbiBlc3NlbmNlIGEgdXNlci1zcGFjZSBhZGRyZXNzLCBlLmcuIGEgMzItYml0IGxvY2sgdmFyaWFibGUKK2ZpZWxkLiBJZiB1c2Vyc3BhY2Ugbm90aWNlcyBjb250ZW50aW9uICh0aGUgbG9jayBpcyBhbHJlYWR5IG93bmVkIGFuZAorc29tZW9uZSBlbHNlIHdhbnRzIHRvIGdyYWIgaXQgdG9vKSB0aGVuIHRoZSBsb2NrIGlzIG1hcmtlZCB3aXRoIGEgdmFsdWUKK3RoYXQgc2F5cyAidGhlcmUncyBhIHdhaXRlciBwZW5kaW5nIiwgYW5kIHRoZSBzeXNfZnV0ZXgoRlVURVhfV0FJVCkKK3N5c2NhbGwgaXMgdXNlZCB0byB3YWl0IGZvciB0aGUgb3RoZXIgZ3V5IHRvIHJlbGVhc2UgaXQuIFRoZSBrZXJuZWwKK2NyZWF0ZXMgYSAnZnV0ZXggcXVldWUnIGludGVybmFsbHksIHNvIHRoYXQgaXQgY2FuIGxhdGVyIG9uIG1hdGNoIHVwIHRoZQord2FpdGVyIHdpdGggdGhlIHdha2VyIC0gd2l0aG91dCB0aGVtIGhhdmluZyB0byBrbm93IGFib3V0IGVhY2ggb3RoZXIuCitXaGVuIHRoZSBvd25lciB0aHJlYWQgcmVsZWFzZXMgdGhlIGZ1dGV4LCBpdCBub3RpY2VzICh2aWEgdGhlIHZhcmlhYmxlCit2YWx1ZSkgdGhhdCB0aGVyZSB3ZXJlIHdhaXRlcihzKSBwZW5kaW5nLCBhbmQgZG9lcyB0aGUKK3N5c19mdXRleChGVVRFWF9XQUtFKSBzeXNjYWxsIHRvIHdha2UgdGhlbSB1cC4gIE9uY2UgYWxsIHdhaXRlcnMgaGF2ZQordGFrZW4gYW5kIHJlbGVhc2VkIHRoZSBsb2NrLCB0aGUgZnV0ZXggaXMgYWdhaW4gYmFjayB0byAndW5jb250ZW5kZWQnCitzdGF0ZSwgYW5kIHRoZXJlJ3Mgbm8gaW4ta2VybmVsIHN0YXRlIGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhlIGtlcm5lbAorY29tcGxldGVseSBmb3JnZXRzIHRoYXQgdGhlcmUgZXZlciB3YXMgYSBmdXRleCBhdCB0aGF0IGFkZHJlc3MuIFRoaXMKK21ldGhvZCBtYWtlcyBmdXRleGVzIHZlcnkgbGlnaHR3ZWlnaHQgYW5kIHNjYWxhYmxlLgorCisiUm9idXN0bmVzcyIgaXMgYWJvdXQgZGVhbGluZyB3aXRoIGNyYXNoZXMgd2hpbGUgaG9sZGluZyBhIGxvY2s6IGlmIGEKK3Byb2Nlc3MgZXhpdHMgcHJlbWF0dXJlbHkgd2hpbGUgaG9sZGluZyBhIHB0aHJlYWRfbXV0ZXhfdCBsb2NrIHRoYXQgaXMKK2Fsc28gc2hhcmVkIHdpdGggc29tZSBvdGhlciBwcm9jZXNzIChlLmcuIHl1bSBzZWdmYXVsdHMgd2hpbGUgaG9sZGluZyBhCitwdGhyZWFkX211dGV4X3QsIG9yIHl1bSBpcyBraWxsIC05LWVkKSwgdGhlbiB3YWl0ZXJzIGZvciB0aGF0IGxvY2sgbmVlZAordG8gYmUgbm90aWZpZWQgdGhhdCB0aGUgbGFzdCBvd25lciBvZiB0aGUgbG9jayBleGl0ZWQgaW4gc29tZSBpcnJlZ3VsYXIKK3dheS4KKworVG8gc29sdmUgc3VjaCB0eXBlcyBvZiBwcm9ibGVtcywgInJvYnVzdCBtdXRleCIgdXNlcnNwYWNlIEFQSXMgd2VyZQorY3JlYXRlZDogcHRocmVhZF9tdXRleF9sb2NrKCkgcmV0dXJucyBhbiBlcnJvciB2YWx1ZSBpZiB0aGUgb3duZXIgZXhpdHMKK3ByZW1hdHVyZWx5IC0gYW5kIHRoZSBuZXcgb3duZXIgY2FuIGRlY2lkZSB3aGV0aGVyIHRoZSBkYXRhIHByb3RlY3RlZCBieQordGhlIGxvY2sgY2FuIGJlIHJlY292ZXJlZCBzYWZlbHkuCisKK1RoZXJlIGlzIGEgYmlnIGNvbmNlcHR1YWwgcHJvYmxlbSB3aXRoIGZ1dGV4IGJhc2VkIG11dGV4ZXMgdGhvdWdoOiBpdCBpcwordGhlIGtlcm5lbCB0aGF0IGRlc3Ryb3lzIHRoZSBvd25lciB0YXNrIChlLmcuIGR1ZSB0byBhIFNFR0ZBVUxUKSwgYnV0Cit0aGUga2VybmVsIGNhbm5vdCBoZWxwIHdpdGggdGhlIGNsZWFudXA6IGlmIHRoZXJlIGlzIG5vICdmdXRleCBxdWV1ZScKKyhhbmQgaW4gbW9zdCBjYXNlcyB0aGVyZSBpcyBub25lLCBmdXRleGVzIGJlaW5nIGZhc3QgbGlnaHR3ZWlnaHQgbG9ja3MpCit0aGVuIHRoZSBrZXJuZWwgaGFzIG5vIGluZm9ybWF0aW9uIHRvIGNsZWFuIHVwIGFmdGVyIHRoZSBoZWxkIGxvY2shCitVc2Vyc3BhY2UgaGFzIG5vIGNoYW5jZSB0byBjbGVhbiB1cCBhZnRlciB0aGUgbG9jayBlaXRoZXIgLSB1c2Vyc3BhY2UgaXMKK3RoZSBvbmUgdGhhdCBjcmFzaGVzLCBzbyBpdCBoYXMgbm8gb3Bwb3J0dW5pdHkgdG8gY2xlYW4gdXAuIENhdGNoLTIyLgorCitJbiBwcmFjdGljZSwgd2hlbiBlLmcuIHl1bSBpcyBraWxsIC05LWVkIChvciBzZWdmYXVsdHMpLCBhIHN5c3RlbSByZWJvb3QKK2lzIG5lZWRlZCB0byByZWxlYXNlIHRoYXQgZnV0ZXggYmFzZWQgbG9jay4gVGhpcyBpcyBvbmUgb2YgdGhlIGxlYWRpbmcKK2J1Z3JlcG9ydHMgYWdhaW5zdCB5dW0uCisKK1RvIHNvbHZlIHRoaXMgcHJvYmxlbSwgdGhlIHRyYWRpdGlvbmFsIGFwcHJvYWNoIHdhcyB0byBleHRlbmQgdGhlIHZtYQorKHZpcnR1YWwgbWVtb3J5IGFyZWEgZGVzY3JpcHRvcikgY29uY2VwdCB0byBoYXZlIGEgbm90aW9uIG9mICdwZW5kaW5nCityb2J1c3QgZnV0ZXhlcyBhdHRhY2hlZCB0byB0aGlzIGFyZWEnLiBUaGlzIGFwcHJvYWNoIHJlcXVpcmVzIDMgbmV3CitzeXNjYWxsIHZhcmlhbnRzIHRvIHN5c19mdXRleCgpOiBGVVRFWF9SRUdJU1RFUiwgRlVURVhfREVSRUdJU1RFUiBhbmQKK0ZVVEVYX1JFQ09WRVIuIEF0IGRvX2V4aXQoKSB0aW1lLCBhbGwgdm1hcyBhcmUgc2VhcmNoZWQgdG8gc2VlIHdoZXRoZXIKK3RoZXkgaGF2ZSBhIHJvYnVzdF9oZWFkIHNldC4gVGhpcyBhcHByb2FjaCBoYXMgdHdvIGZ1bmRhbWVudGFsIHByb2JsZW1zCitsZWZ0OgorCisgLSBpdCBoYXMgcXVpdGUgY29tcGxleCBsb2NraW5nIGFuZCByYWNlIHNjZW5hcmlvcy4gVGhlIHZtYS1iYXNlZAorICAgYXBwcm9hY2ggaGFkIGJlZW4gcGVuZGluZyBmb3IgeWVhcnMsIGJ1dCB0aGV5IGFyZSBzdGlsbCBub3QgY29tcGxldGVseQorICAgcmVsaWFibGUuCisKKyAtIHRoZXkgaGF2ZSB0byBzY2FuIF9ldmVyeV8gdm1hIGF0IHN5c19leGl0KCkgdGltZSwgcGVyIHRocmVhZCEKKworVGhlIHNlY29uZCBkaXNhZHZhbnRhZ2UgaXMgYSByZWFsIGtpbGxlcjogcHRocmVhZF9leGl0KCkgdGFrZXMgYXJvdW5kIDEKK21pY3Jvc2Vjb25kIG9uIExpbnV4LCBidXQgd2l0aCB0aG91c2FuZHMgKG9yIHRlbnMgb2YgdGhvdXNhbmRzKSBvZiB2bWFzCitldmVyeSBwdGhyZWFkX2V4aXQoKSB0YWtlcyBhIG1pbGxpc2Vjb25kIG9yIG1vcmUsIGFsc28gdG90YWxseQorZGVzdHJveWluZyB0aGUgQ1BVJ3MgTDEgYW5kIEwyIGNhY2hlcyEKKworVGhpcyBpcyB2ZXJ5IG11Y2ggbm90aWNlYWJsZSBldmVuIGZvciBub3JtYWwgcHJvY2VzcyBzeXNfZXhpdF9ncm91cCgpCitjYWxsczogdGhlIGtlcm5lbCBoYXMgdG8gZG8gdGhlIHZtYSBzY2FubmluZyB1bmNvbmRpdGlvbmFsbHkhICh0aGlzIGlzCitiZWNhdXNlIHRoZSBrZXJuZWwgaGFzIG5vIGtub3dsZWRnZSBhYm91dCBob3cgbWFueSByb2J1c3QgZnV0ZXhlcyB0aGVyZQorYXJlIHRvIGJlIGNsZWFuZWQgdXAsIGJlY2F1c2UgYSByb2J1c3QgZnV0ZXggbWlnaHQgaGF2ZSBiZWVuIHJlZ2lzdGVyZWQKK2luIGFub3RoZXIgdGFzaywgYW5kIHRoZSBmdXRleCB2YXJpYWJsZSBtaWdodCBoYXZlIGJlZW4gc2ltcGx5IG1tYXAoKS1lZAoraW50byB0aGlzIHByb2Nlc3MncyBhZGRyZXNzIHNwYWNlKS4KKworVGhpcyBodWdlIG92ZXJoZWFkIGZvcmNlZCB0aGUgY3JlYXRpb24gb2YgQ09ORklHX0ZVVEVYX1JPQlVTVCBzbyB0aGF0Citub3JtYWwga2VybmVscyBjYW4gdHVybiBpdCBvZmYsIGJ1dCB3b3JzZSB0aGFuIHRoYXQ6IHRoZSBvdmVyaGVhZCBtYWtlcworcm9idXN0IGZ1dGV4ZXMgaW1wcmFjdGljYWwgZm9yIGFueSB0eXBlIG9mIGdlbmVyaWMgTGludXggZGlzdHJpYnV0aW9uLgorCitTbyBzb21ldGhpbmcgaGFkIHRvIGJlIGRvbmUuCisKK05ldyBhcHByb2FjaCB0byByb2J1c3QgZnV0ZXhlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0F0IHRoZSBoZWFydCBvZiB0aGlzIG5ldyBhcHByb2FjaCB0aGVyZSBpcyBhIHBlci10aHJlYWQgcHJpdmF0ZSBsaXN0IG9mCityb2J1c3QgbG9ja3MgdGhhdCB1c2Vyc3BhY2UgaXMgaG9sZGluZyAobWFpbnRhaW5lZCBieSBnbGliYykgLSB3aGljaAordXNlcnNwYWNlIGxpc3QgaXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBrZXJuZWwgdmlhIGEgbmV3IHN5c2NhbGwgW3RoaXMKK3JlZ2lzdHJhdGlvbiBoYXBwZW5zIGF0IG1vc3Qgb25jZSBwZXIgdGhyZWFkIGxpZmV0aW1lXS4gQXQgZG9fZXhpdCgpCit0aW1lLCB0aGUga2VybmVsIGNoZWNrcyB0aGlzIHVzZXItc3BhY2UgbGlzdDogYXJlIHRoZXJlIGFueSByb2J1c3QgZnV0ZXgKK2xvY2tzIHRvIGJlIGNsZWFuZWQgdXA/CisKK0luIHRoZSBjb21tb24gY2FzZSwgYXQgZG9fZXhpdCgpIHRpbWUsIHRoZXJlIGlzIG5vIGxpc3QgcmVnaXN0ZXJlZCwgc28KK3RoZSBjb3N0IG9mIHJvYnVzdCBmdXRleGVzIGlzIGp1c3QgYSBzaW1wbGUgY3VycmVudC0+cm9idXN0X2xpc3QgIT0gTlVMTAorY29tcGFyaXNvbi4gSWYgdGhlIHRocmVhZCBoYXMgcmVnaXN0ZXJlZCBhIGxpc3QsIHRoZW4gbm9ybWFsbHkgdGhlIGxpc3QKK2lzIGVtcHR5LiBJZiB0aGUgdGhyZWFkL3Byb2Nlc3MgY3Jhc2hlZCBvciB0ZXJtaW5hdGVkIGluIHNvbWUgaW5jb3JyZWN0Cit3YXkgdGhlbiB0aGUgbGlzdCBtaWdodCBiZSBub24tZW1wdHk6IGluIHRoaXMgY2FzZSB0aGUga2VybmVsIGNhcmVmdWxseQord2Fsa3MgdGhlIGxpc3QgW25vdCB0cnVzdGluZyBpdF0sIGFuZCBtYXJrcyBhbGwgbG9ja3MgdGhhdCBhcmUgb3duZWQgYnkKK3RoaXMgdGhyZWFkIHdpdGggdGhlIEZVVEVYX09XTkVSX0RJRUQgYml0LCBhbmQgd2FrZXMgdXAgb25lIHdhaXRlciAoaWYKK2FueSkuCisKK1RoZSBsaXN0IGlzIGd1YXJhbnRlZWQgdG8gYmUgcHJpdmF0ZSBhbmQgcGVyLXRocmVhZCBhdCBkb19leGl0KCkgdGltZSwKK3NvIGl0IGNhbiBiZSBhY2Nlc3NlZCBieSB0aGUga2VybmVsIGluIGEgbG9ja2xlc3Mgd2F5LgorCitUaGVyZSBpcyBvbmUgcmFjZSBwb3NzaWJsZSB0aG91Z2g6IHNpbmNlIGFkZGluZyB0byBhbmQgcmVtb3ZpbmcgZnJvbSB0aGUKK2xpc3QgaXMgZG9uZSBhZnRlciB0aGUgZnV0ZXggaXMgYWNxdWlyZWQgYnkgZ2xpYmMsIHRoZXJlIGlzIGEgZmV3CitpbnN0cnVjdGlvbnMgd2luZG93IGZvciB0aGUgdGhyZWFkIChvciBwcm9jZXNzKSB0byBkaWUgdGhlcmUsIGxlYXZpbmcKK3RoZSBmdXRleCBodW5nLiBUbyBwcm90ZWN0IGFnYWluc3QgdGhpcyBwb3NzaWJpbGl0eSwgdXNlcnNwYWNlIChnbGliYykKK2Fsc28gbWFpbnRhaW5zIGEgc2ltcGxlIHBlci10aHJlYWQgJ2xpc3Rfb3BfcGVuZGluZycgZmllbGQsIHRvIGFsbG93IHRoZQora2VybmVsIHRvIGNsZWFuIHVwIGlmIHRoZSB0aHJlYWQgZGllcyBhZnRlciBhY3F1aXJpbmcgdGhlIGxvY2ssIGJ1dCBqdXN0CitiZWZvcmUgaXQgY291bGQgaGF2ZSBhZGRlZCBpdHNlbGYgdG8gdGhlIGxpc3QuIEdsaWJjIHNldHMgdGhpcworbGlzdF9vcF9wZW5kaW5nIGZpZWxkIGJlZm9yZSBpdCB0cmllcyB0byBhY3F1aXJlIHRoZSBmdXRleCwgYW5kIGNsZWFycworaXQgYWZ0ZXIgdGhlIGxpc3QtYWRkIChvciBsaXN0LXJlbW92ZSkgaGFzIGZpbmlzaGVkLgorCitUaGF0J3MgYWxsIHRoYXQgaXMgbmVlZGVkIC0gYWxsIHRoZSByZXN0IG9mIHJvYnVzdC1mdXRleCBjbGVhbnVwIGlzIGRvbmUKK2luIHVzZXJzcGFjZSBbanVzdCBsaWtlIHdpdGggdGhlIHByZXZpb3VzIHBhdGNoZXNdLgorCitVbHJpY2ggRHJlcHBlciBoYXMgaW1wbGVtZW50ZWQgdGhlIG5lY2Vzc2FyeSBnbGliYyBzdXBwb3J0IGZvciB0aGlzIG5ldworbWVjaGFuaXNtLCB3aGljaCBmdWxseSBlbmFibGVzIHJvYnVzdCBtdXRleGVzLgorCitLZXkgZGlmZmVyZW5jZXMgb2YgdGhpcyB1c2Vyc3BhY2UtbGlzdCBiYXNlZCBhcHByb2FjaCwgY29tcGFyZWQgdG8gdGhlCit2bWEgYmFzZWQgbWV0aG9kOgorCisgLSBpdCdzIG11Y2gsIG11Y2ggZmFzdGVyOiBhdCB0aHJlYWQgZXhpdCB0aW1lLCB0aGVyZSdzIG5vIG5lZWQgdG8gbG9vcAorICAgb3ZlciBldmVyeSB2bWEgKCEpLCB3aGljaCB0aGUgVk0tYmFzZWQgbWV0aG9kIGhhcyB0byBkby4gT25seSBhIHZlcnkKKyAgIHNpbXBsZSAnaXMgdGhlIGxpc3QgZW1wdHknIG9wIGlzIGRvbmUuCisKKyAtIG5vIFZNIGNoYW5nZXMgYXJlIG5lZWRlZCAtICdzdHJ1Y3QgYWRkcmVzc19zcGFjZScgaXMgbGVmdCBhbG9uZS4KKworIC0gbm8gcmVnaXN0cmF0aW9uIG9mIGluZGl2aWR1YWwgbG9ja3MgaXMgbmVlZGVkOiByb2J1c3QgbXV0ZXhlcyBkb250CisgICBuZWVkIGFueSBleHRyYSBwZXItbG9jayBzeXNjYWxscy4gUm9idXN0IG11dGV4ZXMgdGh1cyBiZWNvbWUgYSB2ZXJ5CisgICBsaWdodHdlaWdodCBwcmltaXRpdmUgLSBzbyB0aGV5IGRvbnQgZm9yY2UgdGhlIGFwcGxpY2F0aW9uIGRlc2lnbmVyCisgICB0byBkbyBhIGhhcmQgY2hvaWNlIGJldHdlZW4gcGVyZm9ybWFuY2UgYW5kIHJvYnVzdG5lc3MgLSByb2J1c3QKKyAgIG11dGV4ZXMgYXJlIGp1c3QgYXMgZmFzdC4KKworIC0gbm8gcGVyLWxvY2sga2VybmVsIGFsbG9jYXRpb24gaGFwcGVucy4KKworIC0gbm8gcmVzb3VyY2UgbGltaXRzIGFyZSBuZWVkZWQuCisKKyAtIG5vIGtlcm5lbC1zcGFjZSByZWNvdmVyeSBjYWxsIChGVVRFWF9SRUNPVkVSKSBpcyBuZWVkZWQuCisKKyAtIHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgdGhlIGxvY2tpbmcgaXMgIm9idmlvdXMiLCBhbmQgdGhlcmUgYXJlIG5vCisgICBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgVk0uCisKK1BlcmZvcm1hbmNlCistLS0tLS0tLS0tLQorCitJIGhhdmUgYmVuY2htYXJrZWQgdGhlIHRpbWUgbmVlZGVkIGZvciB0aGUga2VybmVsIHRvIHByb2Nlc3MgYSBsaXN0IG9mIDEKK21pbGxpb24gKCEpIGhlbGQgbG9ja3MsIHVzaW5nIHRoZSBuZXcgbWV0aG9kIFtvbiBhIDJHSHogQ1BVXToKKworIC0gd2l0aCBGVVRFWF9XQUlUIHNldCBbY29udGVuZGVkIG11dGV4XTogMTMwIG1zZWNzCisgLSB3aXRob3V0IEZVVEVYX1dBSVQgc2V0IFt1bmNvbnRlbmRlZCBtdXRleF06IDMwIG1zZWNzCisKK0kgaGF2ZSBhbHNvIG1lYXN1cmVkIGFuIGFwcHJvYWNoIHdoZXJlIGdsaWJjIGRvZXMgdGhlIGxvY2sgbm90aWZpY2F0aW9uCitbd2hpY2ggaXQgY3VycmVudGx5IGRvZXMgZm9yICFwc2hhcmVkIHJvYnVzdCBtdXRleGVzXSwgYW5kIHRoYXQgdG9vayAyNTYKK21zZWNzIC0gY2xlYXJseSBzbG93ZXIsIGR1ZSB0byB0aGUgMSBtaWxsaW9uIEZVVEVYX1dBS0Ugc3lzY2FsbHMKK3VzZXJzcGFjZSBoYWQgdG8gZG8uCisKKygxIG1pbGxpb24gaGVsZCBsb2NrcyBhcmUgdW5oZWFyZCBvZiAtIHdlIGV4cGVjdCBhdCBtb3N0IGEgaGFuZGZ1bCBvZgorbG9ja3MgdG8gYmUgaGVsZCBhdCBhIHRpbWUuIE5ldmVydGhlbGVzcyBpdCdzIG5pY2UgdG8ga25vdyB0aGF0IHRoaXMKK2FwcHJvYWNoIHNjYWxlcyBuaWNlbHkuKQorCitJbXBsZW1lbnRhdGlvbiBkZXRhaWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBwYXRjaCBhZGRzIHR3byBuZXcgc3lzY2FsbHM6IG9uZSB0byByZWdpc3RlciB0aGUgdXNlcnNwYWNlIGxpc3QsIGFuZAorb25lIHRvIHF1ZXJ5IHRoZSByZWdpc3RlcmVkIGxpc3QgcG9pbnRlcjoKKworIGFzbWxpbmthZ2UgbG9uZworIHN5c19zZXRfcm9idXN0X2xpc3Qoc3RydWN0IHJvYnVzdF9saXN0X2hlYWQgX191c2VyICpoZWFkLAorICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbik7CisKKyBhc21saW5rYWdlIGxvbmcKKyBzeXNfZ2V0X3JvYnVzdF9saXN0KGludCBwaWQsIHN0cnVjdCByb2J1c3RfbGlzdF9oZWFkIF9fdXNlciAqKmhlYWRfcHRyLAorICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fdXNlciAqbGVuX3B0cik7CisKK0xpc3QgcmVnaXN0cmF0aW9uIGlzIHZlcnkgZmFzdDogdGhlIHBvaW50ZXIgaXMgc2ltcGx5IHN0b3JlZCBpbgorY3VycmVudC0+cm9idXN0X2xpc3QuIFtOb3RlIHRoYXQgaW4gdGhlIGZ1dHVyZSwgaWYgcm9idXN0IGZ1dGV4ZXMgYmVjb21lCit3aWRlc3ByZWFkLCB3ZSBjb3VsZCBleHRlbmQgc3lzX2Nsb25lKCkgdG8gcmVnaXN0ZXIgYSByb2J1c3QtbGlzdCBoZWFkCitmb3IgbmV3IHRocmVhZHMsIHdpdGhvdXQgdGhlIG5lZWQgb2YgYW5vdGhlciBzeXNjYWxsLl0KKworU28gdGhlcmUgaXMgdmlydHVhbGx5IHplcm8gb3ZlcmhlYWQgZm9yIHRhc2tzIG5vdCB1c2luZyByb2J1c3QgZnV0ZXhlcywKK2FuZCBldmVuIGZvciByb2J1c3QgZnV0ZXggdXNlcnMsIHRoZXJlIGlzIG9ubHkgb25lIGV4dHJhIHN5c2NhbGwgcGVyCit0aHJlYWQgbGlmZXRpbWUsIGFuZCB0aGUgY2xlYW51cCBvcGVyYXRpb24sIGlmIGl0IGhhcHBlbnMsIGlzIGZhc3QgYW5kCitzdHJhaWdodGZvcndhcmQuIFRoZSBrZXJuZWwgZG9lc24ndCBoYXZlIGFueSBpbnRlcm5hbCBkaXN0aW5jdGlvbiBiZXR3ZWVuCityb2J1c3QgYW5kIG5vcm1hbCBmdXRleGVzLgorCitJZiBhIGZ1dGV4IGlzIGZvdW5kIHRvIGJlIGhlbGQgYXQgZXhpdCB0aW1lLCB0aGUga2VybmVsIHNldHMgdGhlCitmb2xsb3dpbmcgYml0IG9mIHRoZSBmdXRleCB3b3JkOgorCisJI2RlZmluZSBGVVRFWF9PV05FUl9ESUVEICAgICAgICAweDQwMDAwMDAwCisKK2FuZCB3YWtlcyB1cCB0aGUgbmV4dCBmdXRleCB3YWl0ZXIgKGlmIGFueSkuIFVzZXItc3BhY2UgZG9lcyB0aGUgcmVzdCBvZgordGhlIGNsZWFudXAuCisKK090aGVyd2lzZSwgcm9idXN0IGZ1dGV4ZXMgYXJlIGFjcXVpcmVkIGJ5IGdsaWJjIGJ5IHB1dHRpbmcgdGhlIFRJRCBpbnRvCit0aGUgZnV0ZXggZmllbGQgYXRvbWljYWxseS4gV2FpdGVycyBzZXQgdGhlIEZVVEVYX1dBSVRFUlMgYml0OgorCisJI2RlZmluZSBGVVRFWF9XQUlURVJTICAgICAgICAgICAweDgwMDAwMDAwCisKK2FuZCB0aGUgcmVtYWluaW5nIGJpdHMgYXJlIGZvciB0aGUgVElELgorCitUZXN0aW5nLCBhcmNoaXRlY3R1cmUgc3VwcG9ydAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaSd2ZSB0ZXN0ZWQgdGhlIG5ldyBzeXNjYWxscyBvbiB4ODYgYW5kIHg4Nl82NCwgYW5kIGhhdmUgbWFkZSBzdXJlIHRoZQorcGFyc2luZyBvZiB0aGUgdXNlcnNwYWNlIGxpc3QgaXMgcm9idXN0IFsgOy0pIF0gZXZlbiBpZiB0aGUgbGlzdCBpcworZGVsaWJlcmF0ZWx5IGNvcnJ1cHRlZC4KKworaTM4NiBhbmQgeDg2XzY0IHN5c2NhbGxzIGFyZSB3aXJlZCB1cCBhdCB0aGUgbW9tZW50LCBhbmQgVWxyaWNoIGhhcwordGVzdGVkIHRoZSBuZXcgZ2xpYmMgY29kZSAob24geDg2XzY0IGFuZCBpMzg2KSwgYW5kIGl0IHdvcmtzIGZvciBoaXMKK3JvYnVzdC1tdXRleCB0ZXN0Y2FzZXMuCisKK0FsbCBvdGhlciBhcmNoaXRlY3R1cmVzIHNob3VsZCBidWlsZCBqdXN0IGZpbmUgdG9vIC0gYnV0IHRoZXkgd29uJ3QgaGF2ZQordGhlIG5ldyBzeXNjYWxscyB5ZXQuCisKK0FyY2hpdGVjdHVyZXMgbmVlZCB0byBpbXBsZW1lbnQgdGhlIG5ldyBmdXRleF9hdG9taWNfY21weGNoZ19pbmF0b21pYygpCitpbmxpbmUgZnVuY3Rpb24gYmVmb3JlIHdyaXRpbmcgdXAgdGhlIHN5c2NhbGxzICh0aGF0IGZ1bmN0aW9uIHJldHVybnMKKy1FTk9TWVMgcmlnaHQgbm93KS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcnBtc2cudHh0IGIvRG9jdW1lbnRhdGlvbi9ycG1zZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdlZGMzYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcnBtc2cudHh0CkBAIC0wLDAgKzEsMjkzIEBACitSZW1vdGUgUHJvY2Vzc29yIE1lc3NhZ2luZyAocnBtc2cpIEZyYW1ld29yaworCitOb3RlOiB0aGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgcnBtc2cgYnVzIGFuZCBob3cgdG8gd3JpdGUgcnBtc2cgZHJpdmVycy4KK1RvIGxlYXJuIGhvdyB0byBhZGQgcnBtc2cgc3VwcG9ydCBmb3IgbmV3IHBsYXRmb3JtcywgY2hlY2sgb3V0IHJlbW90ZXByb2MudHh0CisoYWxzbyBhIHJlc2lkZW50IG9mIERvY3VtZW50YXRpb24vKS4KKworMS4gSW50cm9kdWN0aW9uCisKK01vZGVybiBTb0NzIHR5cGljYWxseSBlbXBsb3kgaGV0ZXJvZ2VuZW91cyByZW1vdGUgcHJvY2Vzc29yIGRldmljZXMgaW4KK2FzeW1tZXRyaWMgbXVsdGlwcm9jZXNzaW5nIChBTVApIGNvbmZpZ3VyYXRpb25zLCB3aGljaCBtYXkgYmUgcnVubmluZworZGlmZmVyZW50IGluc3RhbmNlcyBvZiBvcGVyYXRpbmcgc3lzdGVtLCB3aGV0aGVyIGl0J3MgTGludXggb3IgYW55IG90aGVyCitmbGF2b3Igb2YgcmVhbC10aW1lIE9TLgorCitPTUFQNCwgZm9yIGV4YW1wbGUsIGhhcyBkdWFsIENvcnRleC1BOSwgZHVhbCBDb3J0ZXgtTTMgYW5kIGEgQzY0eCsgRFNQLgorVHlwaWNhbGx5LCB0aGUgZHVhbCBjb3J0ZXgtQTkgaXMgcnVubmluZyBMaW51eCBpbiBhIFNNUCBjb25maWd1cmF0aW9uLAorYW5kIGVhY2ggb2YgdGhlIG90aGVyIHRocmVlIGNvcmVzICh0d28gTTMgY29yZXMgYW5kIGEgRFNQKSBpcyBydW5uaW5nCitpdHMgb3duIGluc3RhbmNlIG9mIFJUT1MgaW4gYW4gQU1QIGNvbmZpZ3VyYXRpb24uCisKK1R5cGljYWxseSBBTVAgcmVtb3RlIHByb2Nlc3NvcnMgZW1wbG95IGRlZGljYXRlZCBEU1AgY29kZWNzIGFuZCBtdWx0aW1lZGlhCitoYXJkd2FyZSBhY2NlbGVyYXRvcnMsIGFuZCB0aGVyZWZvcmUgYXJlIG9mdGVuIHVzZWQgdG8gb2ZmbG9hZCBDUFUtaW50ZW5zaXZlCittdWx0aW1lZGlhIHRhc2tzIGZyb20gdGhlIG1haW4gYXBwbGljYXRpb24gcHJvY2Vzc29yLgorCitUaGVzZSByZW1vdGUgcHJvY2Vzc29ycyBjb3VsZCBhbHNvIGJlIHVzZWQgdG8gY29udHJvbCBsYXRlbmN5LXNlbnNpdGl2ZQorc2Vuc29ycywgZHJpdmUgcmFuZG9tIGhhcmR3YXJlIGJsb2Nrcywgb3IganVzdCBwZXJmb3JtIGJhY2tncm91bmQgdGFza3MKK3doaWxlIHRoZSBtYWluIENQVSBpcyBpZGxpbmcuCisKK1VzZXJzIG9mIHRob3NlIHJlbW90ZSBwcm9jZXNzb3JzIGNhbiBlaXRoZXIgYmUgdXNlcmxhbmQgYXBwcyAoZS5nLiBtdWx0aW1lZGlhCitmcmFtZXdvcmtzIHRhbGtpbmcgd2l0aCByZW1vdGUgT01YIGNvbXBvbmVudHMpIG9yIGtlcm5lbCBkcml2ZXJzIChjb250cm9sbGluZworaGFyZHdhcmUgYWNjZXNzaWJsZSBvbmx5IGJ5IHRoZSByZW1vdGUgcHJvY2Vzc29yLCByZXNlcnZpbmcga2VybmVsLWNvbnRyb2xsZWQKK3Jlc291cmNlcyBvbiBiZWhhbGYgb2YgdGhlIHJlbW90ZSBwcm9jZXNzb3IsIGV0Yy4uKS4KKworUnBtc2cgaXMgYSB2aXJ0aW8tYmFzZWQgbWVzc2FnaW5nIGJ1cyB0aGF0IGFsbG93cyBrZXJuZWwgZHJpdmVycyB0byBjb21tdW5pY2F0ZQord2l0aCByZW1vdGUgcHJvY2Vzc29ycyBhdmFpbGFibGUgb24gdGhlIHN5c3RlbS4gSW4gdHVybiwgZHJpdmVycyBjb3VsZCB0aGVuCitleHBvc2UgYXBwcm9wcmlhdGUgdXNlciBzcGFjZSBpbnRlcmZhY2VzLCBpZiBuZWVkZWQuCisKK1doZW4gd3JpdGluZyBhIGRyaXZlciB0aGF0IGV4cG9zZXMgcnBtc2cgY29tbXVuaWNhdGlvbiB0byB1c2VybGFuZCwgcGxlYXNlCitrZWVwIGluIG1pbmQgdGhhdCByZW1vdGUgcHJvY2Vzc29ycyBtaWdodCBoYXZlIGRpcmVjdCBhY2Nlc3MgdG8gdGhlCitzeXN0ZW0ncyBwaHlzaWNhbCBtZW1vcnkgYW5kIG90aGVyIHNlbnNpdGl2ZSBoYXJkd2FyZSByZXNvdXJjZXMgKGUuZy4gb24KK09NQVA0LCByZW1vdGUgY29yZXMgYW5kIGhhcmR3YXJlIGFjY2VsZXJhdG9ycyBtYXkgaGF2ZSBkaXJlY3QgYWNjZXNzIHRvIHRoZQorcGh5c2ljYWwgbWVtb3J5LCBncGlvIGJhbmtzLCBkbWEgY29udHJvbGxlcnMsIGkyYyBidXMsIGdwdGltZXJzLCBtYWlsYm94CitkZXZpY2VzLCBod3NwaW5sb2NrcywgZXRjLi4pLiBNb3Jlb3ZlciwgdGhvc2UgcmVtb3RlIHByb2Nlc3NvcnMgbWlnaHQgYmUKK3J1bm5pbmcgUlRPUyB3aGVyZSBldmVyeSB0YXNrIGNhbiBhY2Nlc3MgdGhlIGVudGlyZSBtZW1vcnkvZGV2aWNlcyBleHBvc2VkCit0byB0aGUgcHJvY2Vzc29yLiBUbyBtaW5pbWl6ZSB0aGUgcmlza3Mgb2Ygcm9ndWUgKG9yIGJ1Z2d5KSB1c2VybGFuZCBjb2RlCitleHBsb2l0aW5nIHJlbW90ZSBidWdzLCBhbmQgYnkgdGhhdCB0YWtpbmcgb3ZlciB0aGUgc3lzdGVtLCBpdCBpcyBvZnRlbgorZGVzaXJlZCB0byBsaW1pdCB1c2VybGFuZCB0byBzcGVjaWZpYyBycG1zZyBjaGFubmVscyAoc2VlIGRlZmluaXRpb24gYmVsb3cpCitpdCBjYW4gc2VuZCBtZXNzYWdlcyBvbiwgYW5kIGlmIHBvc3NpYmxlLCBtaW5pbWl6ZSBob3cgbXVjaCBjb250cm9sCitpdCBoYXMgb3ZlciB0aGUgY29udGVudCBvZiB0aGUgbWVzc2FnZXMuCisKK0V2ZXJ5IHJwbXNnIGRldmljZSBpcyBhIGNvbW11bmljYXRpb24gY2hhbm5lbCB3aXRoIGEgcmVtb3RlIHByb2Nlc3NvciAodGh1cworcnBtc2cgZGV2aWNlcyBhcmUgY2FsbGVkIGNoYW5uZWxzKS4gQ2hhbm5lbHMgYXJlIGlkZW50aWZpZWQgYnkgYSB0ZXh0dWFsIG5hbWUKK2FuZCBoYXZlIGEgbG9jYWwgKCJzb3VyY2UiKSBycG1zZyBhZGRyZXNzLCBhbmQgcmVtb3RlICgiZGVzdGluYXRpb24iKSBycG1zZworYWRkcmVzcy4KKworV2hlbiBhIGRyaXZlciBzdGFydHMgbGlzdGVuaW5nIG9uIGEgY2hhbm5lbCwgaXRzIHJ4IGNhbGxiYWNrIGlzIGJvdW5kIHdpdGgKK2EgdW5pcXVlIHJwbXNnIGxvY2FsIGFkZHJlc3MgKGEgMzItYml0IGludGVnZXIpLiBUaGlzIHdheSB3aGVuIGluYm91bmQgbWVzc2FnZXMKK2Fycml2ZSwgdGhlIHJwbXNnIGNvcmUgZGlzcGF0Y2hlcyB0aGVtIHRvIHRoZSBhcHByb3ByaWF0ZSBkcml2ZXIgYWNjb3JkaW5nCit0byB0aGVpciBkZXN0aW5hdGlvbiBhZGRyZXNzICh0aGlzIGlzIGRvbmUgYnkgaW52b2tpbmcgdGhlIGRyaXZlcidzIHJ4IGhhbmRsZXIKK3dpdGggdGhlIHBheWxvYWQgb2YgdGhlIGluYm91bmQgbWVzc2FnZSkuCisKKworMi4gVXNlciBBUEkKKworICBpbnQgcnBtc2dfc2VuZChzdHJ1Y3QgcnBtc2dfY2hhbm5lbCAqcnBkZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pOworICAgLSBzZW5kcyBhIG1lc3NhZ2UgYWNyb3NzIHRvIHRoZSByZW1vdGUgcHJvY2Vzc29yIG9uIGEgZ2l2ZW4gY2hhbm5lbC4KKyAgICAgVGhlIGNhbGxlciBzaG91bGQgc3BlY2lmeSB0aGUgY2hhbm5lbCwgdGhlIGRhdGEgaXQgd2FudHMgdG8gc2VuZCwKKyAgICAgYW5kIGl0cyBsZW5ndGggKGluIGJ5dGVzKS4gVGhlIG1lc3NhZ2Ugd2lsbCBiZSBzZW50IG9uIHRoZSBzcGVjaWZpZWQKKyAgICAgY2hhbm5lbCwgaS5lLiBpdHMgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhZGRyZXNzIGZpZWxkcyB3aWxsIGJlCisgICAgIHNldCB0byB0aGUgY2hhbm5lbCdzIHNyYyBhbmQgZHN0IGFkZHJlc3Nlcy4KKworICAgICBJbiBjYXNlIHRoZXJlIGFyZSBubyBUWCBidWZmZXJzIGF2YWlsYWJsZSwgdGhlIGZ1bmN0aW9uIHdpbGwgYmxvY2sgdW50aWwKKyAgICAgb25lIGJlY29tZXMgYXZhaWxhYmxlIChpLmUuIHVudGlsIHRoZSByZW1vdGUgcHJvY2Vzc29yIGNvbnN1bWVzCisgICAgIGEgdHggYnVmZmVyIGFuZCBwdXRzIGl0IGJhY2sgb24gdmlydGlvJ3MgdXNlZCBkZXNjcmlwdG9yIHJpbmcpLAorICAgICBvciBhIHRpbWVvdXQgb2YgMTUgc2Vjb25kcyBlbGFwc2VzLiBXaGVuIHRoZSBsYXR0ZXIgaGFwcGVucywKKyAgICAgLUVSRVNUQVJUU1lTIGlzIHJldHVybmVkLgorICAgICBUaGUgZnVuY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIGZyb20gYSBwcm9jZXNzIGNvbnRleHQgKGZvciBub3cpLgorICAgICBSZXR1cm5zIDAgb24gc3VjY2VzcyBhbmQgYW4gYXBwcm9wcmlhdGUgZXJyb3IgdmFsdWUgb24gZmFpbHVyZS4KKworICBpbnQgcnBtc2dfc2VuZHRvKHN0cnVjdCBycG1zZ19jaGFubmVsICpycGRldiwgdm9pZCAqZGF0YSwgaW50IGxlbiwgdTMyIGRzdCk7CisgICAtIHNlbmRzIGEgbWVzc2FnZSBhY3Jvc3MgdG8gdGhlIHJlbW90ZSBwcm9jZXNzb3Igb24gYSBnaXZlbiBjaGFubmVsLAorICAgICB0byBhIGRlc3RpbmF0aW9uIGFkZHJlc3MgcHJvdmlkZWQgYnkgdGhlIGNhbGxlci4KKyAgICAgVGhlIGNhbGxlciBzaG91bGQgc3BlY2lmeSB0aGUgY2hhbm5lbCwgdGhlIGRhdGEgaXQgd2FudHMgdG8gc2VuZCwKKyAgICAgaXRzIGxlbmd0aCAoaW4gYnl0ZXMpLCBhbmQgYW4gZXhwbGljaXQgZGVzdGluYXRpb24gYWRkcmVzcy4KKyAgICAgVGhlIG1lc3NhZ2Ugd2lsbCB0aGVuIGJlIHNlbnQgdG8gdGhlIHJlbW90ZSBwcm9jZXNzb3IgdG8gd2hpY2ggdGhlCisgICAgIGNoYW5uZWwgYmVsb25ncywgdXNpbmcgdGhlIGNoYW5uZWwncyBzcmMgYWRkcmVzcywgYW5kIHRoZSB1c2VyLXByb3ZpZGVkCisgICAgIGRzdCBhZGRyZXNzICh0aHVzIHRoZSBjaGFubmVsJ3MgZHN0IGFkZHJlc3Mgd2lsbCBiZSBpZ25vcmVkKS4KKworICAgICBJbiBjYXNlIHRoZXJlIGFyZSBubyBUWCBidWZmZXJzIGF2YWlsYWJsZSwgdGhlIGZ1bmN0aW9uIHdpbGwgYmxvY2sgdW50aWwKKyAgICAgb25lIGJlY29tZXMgYXZhaWxhYmxlIChpLmUuIHVudGlsIHRoZSByZW1vdGUgcHJvY2Vzc29yIGNvbnN1bWVzCisgICAgIGEgdHggYnVmZmVyIGFuZCBwdXRzIGl0IGJhY2sgb24gdmlydGlvJ3MgdXNlZCBkZXNjcmlwdG9yIHJpbmcpLAorICAgICBvciBhIHRpbWVvdXQgb2YgMTUgc2Vjb25kcyBlbGFwc2VzLiBXaGVuIHRoZSBsYXR0ZXIgaGFwcGVucywKKyAgICAgLUVSRVNUQVJUU1lTIGlzIHJldHVybmVkLgorICAgICBUaGUgZnVuY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIGZyb20gYSBwcm9jZXNzIGNvbnRleHQgKGZvciBub3cpLgorICAgICBSZXR1cm5zIDAgb24gc3VjY2VzcyBhbmQgYW4gYXBwcm9wcmlhdGUgZXJyb3IgdmFsdWUgb24gZmFpbHVyZS4KKworICBpbnQgcnBtc2dfc2VuZF9vZmZjaGFubmVsKHN0cnVjdCBycG1zZ19jaGFubmVsICpycGRldiwgdTMyIHNyYywgdTMyIGRzdCwKKwkJCQkJCQl2b2lkICpkYXRhLCBpbnQgbGVuKTsKKyAgIC0gc2VuZHMgYSBtZXNzYWdlIGFjcm9zcyB0byB0aGUgcmVtb3RlIHByb2Nlc3NvciwgdXNpbmcgdGhlIHNyYyBhbmQgZHN0CisgICAgIGFkZHJlc3NlcyBwcm92aWRlZCBieSB0aGUgdXNlci4KKyAgICAgVGhlIGNhbGxlciBzaG91bGQgc3BlY2lmeSB0aGUgY2hhbm5lbCwgdGhlIGRhdGEgaXQgd2FudHMgdG8gc2VuZCwKKyAgICAgaXRzIGxlbmd0aCAoaW4gYnl0ZXMpLCBhbmQgZXhwbGljaXQgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhZGRyZXNzZXMuCisgICAgIFRoZSBtZXNzYWdlIHdpbGwgdGhlbiBiZSBzZW50IHRvIHRoZSByZW1vdGUgcHJvY2Vzc29yIHRvIHdoaWNoIHRoZQorICAgICBjaGFubmVsIGJlbG9uZ3MsIGJ1dCB0aGUgY2hhbm5lbCdzIHNyYyBhbmQgZHN0IGFkZHJlc3NlcyB3aWxsIGJlCisgICAgIGlnbm9yZWQgKGFuZCB0aGUgdXNlci1wcm92aWRlZCBhZGRyZXNzZXMgd2lsbCBiZSB1c2VkIGluc3RlYWQpLgorCisgICAgIEluIGNhc2UgdGhlcmUgYXJlIG5vIFRYIGJ1ZmZlcnMgYXZhaWxhYmxlLCB0aGUgZnVuY3Rpb24gd2lsbCBibG9jayB1bnRpbAorICAgICBvbmUgYmVjb21lcyBhdmFpbGFibGUgKGkuZS4gdW50aWwgdGhlIHJlbW90ZSBwcm9jZXNzb3IgY29uc3VtZXMKKyAgICAgYSB0eCBidWZmZXIgYW5kIHB1dHMgaXQgYmFjayBvbiB2aXJ0aW8ncyB1c2VkIGRlc2NyaXB0b3IgcmluZyksCisgICAgIG9yIGEgdGltZW91dCBvZiAxNSBzZWNvbmRzIGVsYXBzZXMuIFdoZW4gdGhlIGxhdHRlciBoYXBwZW5zLAorICAgICAtRVJFU1RBUlRTWVMgaXMgcmV0dXJuZWQuCisgICAgIFRoZSBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSBhIHByb2Nlc3MgY29udGV4dCAoZm9yIG5vdykuCisgICAgIFJldHVybnMgMCBvbiBzdWNjZXNzIGFuZCBhbiBhcHByb3ByaWF0ZSBlcnJvciB2YWx1ZSBvbiBmYWlsdXJlLgorCisgIGludCBycG1zZ190cnlzZW5kKHN0cnVjdCBycG1zZ19jaGFubmVsICpycGRldiwgdm9pZCAqZGF0YSwgaW50IGxlbik7CisgICAtIHNlbmRzIGEgbWVzc2FnZSBhY3Jvc3MgdG8gdGhlIHJlbW90ZSBwcm9jZXNzb3Igb24gYSBnaXZlbiBjaGFubmVsLgorICAgICBUaGUgY2FsbGVyIHNob3VsZCBzcGVjaWZ5IHRoZSBjaGFubmVsLCB0aGUgZGF0YSBpdCB3YW50cyB0byBzZW5kLAorICAgICBhbmQgaXRzIGxlbmd0aCAoaW4gYnl0ZXMpLiBUaGUgbWVzc2FnZSB3aWxsIGJlIHNlbnQgb24gdGhlIHNwZWNpZmllZAorICAgICBjaGFubmVsLCBpLmUuIGl0cyBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFkZHJlc3MgZmllbGRzIHdpbGwgYmUKKyAgICAgc2V0IHRvIHRoZSBjaGFubmVsJ3Mgc3JjIGFuZCBkc3QgYWRkcmVzc2VzLgorCisgICAgIEluIGNhc2UgdGhlcmUgYXJlIG5vIFRYIGJ1ZmZlcnMgYXZhaWxhYmxlLCB0aGUgZnVuY3Rpb24gd2lsbCBpbW1lZGlhdGVseQorICAgICByZXR1cm4gLUVOT01FTSB3aXRob3V0IHdhaXRpbmcgdW50aWwgb25lIGJlY29tZXMgYXZhaWxhYmxlLgorICAgICBUaGUgZnVuY3Rpb24gY2FuIG9ubHkgYmUgY2FsbGVkIGZyb20gYSBwcm9jZXNzIGNvbnRleHQgKGZvciBub3cpLgorICAgICBSZXR1cm5zIDAgb24gc3VjY2VzcyBhbmQgYW4gYXBwcm9wcmlhdGUgZXJyb3IgdmFsdWUgb24gZmFpbHVyZS4KKworICBpbnQgcnBtc2dfdHJ5c2VuZHRvKHN0cnVjdCBycG1zZ19jaGFubmVsICpycGRldiwgdm9pZCAqZGF0YSwgaW50IGxlbiwgdTMyIGRzdCkKKyAgIC0gc2VuZHMgYSBtZXNzYWdlIGFjcm9zcyB0byB0aGUgcmVtb3RlIHByb2Nlc3NvciBvbiBhIGdpdmVuIGNoYW5uZWwsCisgICAgIHRvIGEgZGVzdGluYXRpb24gYWRkcmVzcyBwcm92aWRlZCBieSB0aGUgdXNlci4KKyAgICAgVGhlIHVzZXIgc2hvdWxkIHNwZWNpZnkgdGhlIGNoYW5uZWwsIHRoZSBkYXRhIGl0IHdhbnRzIHRvIHNlbmQsCisgICAgIGl0cyBsZW5ndGggKGluIGJ5dGVzKSwgYW5kIGFuIGV4cGxpY2l0IGRlc3RpbmF0aW9uIGFkZHJlc3MuCisgICAgIFRoZSBtZXNzYWdlIHdpbGwgdGhlbiBiZSBzZW50IHRvIHRoZSByZW1vdGUgcHJvY2Vzc29yIHRvIHdoaWNoIHRoZQorICAgICBjaGFubmVsIGJlbG9uZ3MsIHVzaW5nIHRoZSBjaGFubmVsJ3Mgc3JjIGFkZHJlc3MsIGFuZCB0aGUgdXNlci1wcm92aWRlZAorICAgICBkc3QgYWRkcmVzcyAodGh1cyB0aGUgY2hhbm5lbCdzIGRzdCBhZGRyZXNzIHdpbGwgYmUgaWdub3JlZCkuCisKKyAgICAgSW4gY2FzZSB0aGVyZSBhcmUgbm8gVFggYnVmZmVycyBhdmFpbGFibGUsIHRoZSBmdW5jdGlvbiB3aWxsIGltbWVkaWF0ZWx5CisgICAgIHJldHVybiAtRU5PTUVNIHdpdGhvdXQgd2FpdGluZyB1bnRpbCBvbmUgYmVjb21lcyBhdmFpbGFibGUuCisgICAgIFRoZSBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSBhIHByb2Nlc3MgY29udGV4dCAoZm9yIG5vdykuCisgICAgIFJldHVybnMgMCBvbiBzdWNjZXNzIGFuZCBhbiBhcHByb3ByaWF0ZSBlcnJvciB2YWx1ZSBvbiBmYWlsdXJlLgorCisgIGludCBycG1zZ190cnlzZW5kX29mZmNoYW5uZWwoc3RydWN0IHJwbXNnX2NoYW5uZWwgKnJwZGV2LCB1MzIgc3JjLCB1MzIgZHN0LAorCQkJCQkJCXZvaWQgKmRhdGEsIGludCBsZW4pOworICAgLSBzZW5kcyBhIG1lc3NhZ2UgYWNyb3NzIHRvIHRoZSByZW1vdGUgcHJvY2Vzc29yLCB1c2luZyBzb3VyY2UgYW5kCisgICAgIGRlc3RpbmF0aW9uIGFkZHJlc3NlcyBwcm92aWRlZCBieSB0aGUgdXNlci4KKyAgICAgVGhlIHVzZXIgc2hvdWxkIHNwZWNpZnkgdGhlIGNoYW5uZWwsIHRoZSBkYXRhIGl0IHdhbnRzIHRvIHNlbmQsCisgICAgIGl0cyBsZW5ndGggKGluIGJ5dGVzKSwgYW5kIGV4cGxpY2l0IHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYWRkcmVzc2VzLgorICAgICBUaGUgbWVzc2FnZSB3aWxsIHRoZW4gYmUgc2VudCB0byB0aGUgcmVtb3RlIHByb2Nlc3NvciB0byB3aGljaCB0aGUKKyAgICAgY2hhbm5lbCBiZWxvbmdzLCBidXQgdGhlIGNoYW5uZWwncyBzcmMgYW5kIGRzdCBhZGRyZXNzZXMgd2lsbCBiZQorICAgICBpZ25vcmVkIChhbmQgdGhlIHVzZXItcHJvdmlkZWQgYWRkcmVzc2VzIHdpbGwgYmUgdXNlZCBpbnN0ZWFkKS4KKworICAgICBJbiBjYXNlIHRoZXJlIGFyZSBubyBUWCBidWZmZXJzIGF2YWlsYWJsZSwgdGhlIGZ1bmN0aW9uIHdpbGwgaW1tZWRpYXRlbHkKKyAgICAgcmV0dXJuIC1FTk9NRU0gd2l0aG91dCB3YWl0aW5nIHVudGlsIG9uZSBiZWNvbWVzIGF2YWlsYWJsZS4KKyAgICAgVGhlIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIGEgcHJvY2VzcyBjb250ZXh0IChmb3Igbm93KS4KKyAgICAgUmV0dXJucyAwIG9uIHN1Y2Nlc3MgYW5kIGFuIGFwcHJvcHJpYXRlIGVycm9yIHZhbHVlIG9uIGZhaWx1cmUuCisKKyAgc3RydWN0IHJwbXNnX2VuZHBvaW50ICpycG1zZ19jcmVhdGVfZXB0KHN0cnVjdCBycG1zZ19jaGFubmVsICpycGRldiwKKwkJdm9pZCAoKmNiKShzdHJ1Y3QgcnBtc2dfY2hhbm5lbCAqLCB2b2lkICosIGludCwgdm9pZCAqLCB1MzIpLAorCQl2b2lkICpwcml2LCB1MzIgYWRkcik7CisgICAtIGV2ZXJ5IHJwbXNnIGFkZHJlc3MgaW4gdGhlIHN5c3RlbSBpcyBib3VuZCB0byBhbiByeCBjYWxsYmFjayAoc28gd2hlbgorICAgICBpbmJvdW5kIG1lc3NhZ2VzIGFycml2ZSwgdGhleSBhcmUgZGlzcGF0Y2hlZCBieSB0aGUgcnBtc2cgYnVzIHVzaW5nIHRoZQorICAgICBhcHByb3ByaWF0ZSBjYWxsYmFjayBoYW5kbGVyKSBieSBtZWFucyBvZiBhbiBycG1zZ19lbmRwb2ludCBzdHJ1Y3QuCisKKyAgICAgVGhpcyBmdW5jdGlvbiBhbGxvd3MgZHJpdmVycyB0byBjcmVhdGUgc3VjaCBhbiBlbmRwb2ludCwgYW5kIGJ5IHRoYXQsCisgICAgIGJpbmQgYSBjYWxsYmFjaywgYW5kIHBvc3NpYmx5IHNvbWUgcHJpdmF0ZSBkYXRhIHRvbywgdG8gYW4gcnBtc2cgYWRkcmVzcworICAgICAoZWl0aGVyIG9uZSB0aGF0IGlzIGtub3duIGluIGFkdmFuY2UsIG9yIG9uZSB0aGF0IHdpbGwgYmUgZHluYW1pY2FsbHkKKyAgICAgYXNzaWduZWQgZm9yIHRoZW0pLgorCisgICAgIFNpbXBsZSBycG1zZyBkcml2ZXJzIG5lZWQgbm90IGNhbGwgcnBtc2dfY3JlYXRlX2VwdCwgYmVjYXVzZSBhbiBlbmRwb2ludAorICAgICBpcyBhbHJlYWR5IGNyZWF0ZWQgZm9yIHRoZW0gd2hlbiB0aGV5IGFyZSBwcm9iZWQgYnkgdGhlIHJwbXNnIGJ1cworICAgICAodXNpbmcgdGhlIHJ4IGNhbGxiYWNrIHRoZXkgcHJvdmlkZSB3aGVuIHRoZXkgcmVnaXN0ZXJlZCB0byB0aGUgcnBtc2cgYnVzKS4KKworICAgICBTbyB0aGluZ3Mgc2hvdWxkIGp1c3Qgd29yayBmb3Igc2ltcGxlIGRyaXZlcnM6IHRoZXkgYWxyZWFkeSBoYXZlIGFuCisgICAgIGVuZHBvaW50LCB0aGVpciByeCBjYWxsYmFjayBpcyBib3VuZCB0byB0aGVpciBycG1zZyBhZGRyZXNzLCBhbmQgd2hlbgorICAgICByZWxldmFudCBpbmJvdW5kIG1lc3NhZ2VzIGFycml2ZSAoaS5lLiBtZXNzYWdlcyB3aGljaCB0aGVpciBkc3QgYWRkcmVzcworICAgICBlcXVhbHMgdG8gdGhlIHNyYyBhZGRyZXNzIG9mIHRoZWlyIHJwbXNnIGNoYW5uZWwpLCB0aGUgZHJpdmVyJ3MgaGFuZGxlcgorICAgICBpcyBpbnZva2VkIHRvIHByb2Nlc3MgaXQuCisKKyAgICAgVGhhdCBzYWlkLCBtb3JlIGNvbXBsaWNhdGVkIGRyaXZlcnMgbWlnaHQgZG8gbmVlZCB0byBhbGxvY2F0ZQorICAgICBhZGRpdGlvbmFsIHJwbXNnIGFkZHJlc3NlcywgYW5kIGJpbmQgdGhlbSB0byBkaWZmZXJlbnQgcnggY2FsbGJhY2tzLgorICAgICBUbyBhY2NvbXBsaXNoIHRoYXQsIHRob3NlIGRyaXZlcnMgbmVlZCB0byBjYWxsIHRoaXMgZnVuY3Rpb24uCisgICAgIERyaXZlcnMgc2hvdWxkIHByb3ZpZGUgdGhlaXIgY2hhbm5lbCAoc28gdGhlIG5ldyBlbmRwb2ludCB3b3VsZCBiaW5kCisgICAgIHRvIHRoZSBzYW1lIHJlbW90ZSBwcm9jZXNzb3IgdGhlaXIgY2hhbm5lbCBiZWxvbmdzIHRvKSwgYW4gcnggY2FsbGJhY2sKKyAgICAgZnVuY3Rpb24sIGFuIG9wdGlvbmFsIHByaXZhdGUgZGF0YSAod2hpY2ggaXMgcHJvdmlkZWQgYmFjayB3aGVuIHRoZQorICAgICByeCBjYWxsYmFjayBpcyBpbnZva2VkKSwgYW5kIGFuIGFkZHJlc3MgdGhleSB3YW50IHRvIGJpbmQgd2l0aCB0aGUKKyAgICAgY2FsbGJhY2suIElmIGFkZHIgaXMgUlBNU0dfQUREUl9BTlksIHRoZW4gcnBtc2dfY3JlYXRlX2VwdCB3aWxsCisgICAgIGR5bmFtaWNhbGx5IGFzc2lnbiB0aGVtIGFuIGF2YWlsYWJsZSBycG1zZyBhZGRyZXNzIChkcml2ZXJzIHNob3VsZCBoYXZlCisgICAgIGEgdmVyeSBnb29kIHJlYXNvbiB3aHkgbm90IHRvIGFsd2F5cyB1c2UgUlBNU0dfQUREUl9BTlkgaGVyZSkuCisKKyAgICAgUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGVuZHBvaW50IG9uIHN1Y2Nlc3MsIG9yIE5VTEwgb24gZXJyb3IuCisKKyAgdm9pZCBycG1zZ19kZXN0cm95X2VwdChzdHJ1Y3QgcnBtc2dfZW5kcG9pbnQgKmVwdCk7CisgICAtIGRlc3Ryb3lzIGFuIGV4aXN0aW5nIHJwbXNnIGVuZHBvaW50LiB1c2VyIHNob3VsZCBwcm92aWRlIGEgcG9pbnRlcgorICAgICB0byBhbiBycG1zZyBlbmRwb2ludCB0aGF0IHdhcyBwcmV2aW91c2x5IGNyZWF0ZWQgd2l0aCBycG1zZ19jcmVhdGVfZXB0KCkuCisKKyAgaW50IHJlZ2lzdGVyX3JwbXNnX2RyaXZlcihzdHJ1Y3QgcnBtc2dfZHJpdmVyICpycGRydik7CisgICAtIHJlZ2lzdGVycyBhbiBycG1zZyBkcml2ZXIgd2l0aCB0aGUgcnBtc2cgYnVzLiB1c2VyIHNob3VsZCBwcm92aWRlCisgICAgIGEgcG9pbnRlciB0byBhbiBycG1zZ19kcml2ZXIgc3RydWN0LCB3aGljaCBjb250YWlucyB0aGUgZHJpdmVyJ3MKKyAgICAgLT5wcm9iZSgpIGFuZCAtPnJlbW92ZSgpIGZ1bmN0aW9ucywgYW4gcnggY2FsbGJhY2ssIGFuZCBhbiBpZF90YWJsZQorICAgICBzcGVjaWZ5aW5nIHRoZSBuYW1lcyBvZiB0aGUgY2hhbm5lbHMgdGhpcyBkcml2ZXIgaXMgaW50ZXJlc3RlZCB0bworICAgICBiZSBwcm9iZWQgd2l0aC4KKworICB2b2lkIHVucmVnaXN0ZXJfcnBtc2dfZHJpdmVyKHN0cnVjdCBycG1zZ19kcml2ZXIgKnJwZHJ2KTsKKyAgIC0gdW5yZWdpc3RlcnMgYW4gcnBtc2cgZHJpdmVyIGZyb20gdGhlIHJwbXNnIGJ1cy4gdXNlciBzaG91bGQgcHJvdmlkZQorICAgICBhIHBvaW50ZXIgdG8gYSBwcmV2aW91c2x5LXJlZ2lzdGVyZWQgcnBtc2dfZHJpdmVyIHN0cnVjdC4KKyAgICAgUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIGFuZCBhbiBhcHByb3ByaWF0ZSBlcnJvciB2YWx1ZSBvbiBmYWlsdXJlLgorCisKKzMuIFR5cGljYWwgdXNhZ2UKKworVGhlIGZvbGxvd2luZyBpcyBhIHNpbXBsZSBycG1zZyBkcml2ZXIsIHRoYXQgc2VuZHMgYW4gImhlbGxvISIgbWVzc2FnZQorb24gcHJvYmUoKSwgYW5kIHdoZW5ldmVyIGl0IHJlY2VpdmVzIGFuIGluY29taW5nIG1lc3NhZ2UsIGl0IGR1bXBzIGl0cworY29udGVudCB0byB0aGUgY29uc29sZS4KKworI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L3JwbXNnLmg+CisKK3N0YXRpYyB2b2lkIHJwbXNnX3NhbXBsZV9jYihzdHJ1Y3QgcnBtc2dfY2hhbm5lbCAqcnBkZXYsIHZvaWQgKmRhdGEsIGludCBsZW4sCisJCQkJCQl2b2lkICpwcml2LCB1MzIgc3JjKQoreworCXByaW50X2hleF9kdW1wKEtFUk5fSU5GTywgImluY29taW5nIG1lc3NhZ2U6IiwgRFVNUF9QUkVGSVhfTk9ORSwKKwkJCQkJCTE2LCAxLCBkYXRhLCBsZW4sIHRydWUpOworfQorCitzdGF0aWMgaW50IHJwbXNnX3NhbXBsZV9wcm9iZShzdHJ1Y3QgcnBtc2dfY2hhbm5lbCAqcnBkZXYpCit7CisJaW50IGVycjsKKworCWRldl9pbmZvKCZycGRldi0+ZGV2LCAiY2hubDogMHgleCAtPiAweCV4XG4iLCBycGRldi0+c3JjLCBycGRldi0+ZHN0KTsKKworCS8qIHNlbmQgYSBtZXNzYWdlIG9uIG91ciBjaGFubmVsICovCisJZXJyID0gcnBtc2dfc2VuZChycGRldiwgImhlbGxvISIsIDYpOworCWlmIChlcnIpIHsKKwkJcHJfZXJyKCJycG1zZ19zZW5kIGZhaWxlZDogJWRcbiIsIGVycik7CisJCXJldHVybiBlcnI7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHJwbXNnX3NhbXBsZV9yZW1vdmUoc3RydWN0IHJwbXNnX2NoYW5uZWwgKnJwZGV2KQoreworCWRldl9pbmZvKCZycGRldi0+ZGV2LCAicnBtc2cgc2FtcGxlIGNsaWVudCBkcml2ZXIgaXMgcmVtb3ZlZFxuIik7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcnBtc2dfZGV2aWNlX2lkIHJwbXNnX2RyaXZlcl9zYW1wbGVfaWRfdGFibGVbXSA9IHsKKwl7IC5uYW1lCT0gInJwbXNnLWNsaWVudC1zYW1wbGUiIH0sCisJeyB9LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUocnBtc2csIHJwbXNnX2RyaXZlcl9zYW1wbGVfaWRfdGFibGUpOworCitzdGF0aWMgc3RydWN0IHJwbXNnX2RyaXZlciBycG1zZ19zYW1wbGVfY2xpZW50ID0geworCS5kcnYubmFtZQk9IEtCVUlMRF9NT0ROQU1FLAorCS5kcnYub3duZXIJPSBUSElTX01PRFVMRSwKKwkuaWRfdGFibGUJPSBycG1zZ19kcml2ZXJfc2FtcGxlX2lkX3RhYmxlLAorCS5wcm9iZQkJPSBycG1zZ19zYW1wbGVfcHJvYmUsCisJLmNhbGxiYWNrCT0gcnBtc2dfc2FtcGxlX2NiLAorCS5yZW1vdmUJCT0gcnBtc2dfc2FtcGxlX3JlbW92ZSwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IGluaXQodm9pZCkKK3sKKwlyZXR1cm4gcmVnaXN0ZXJfcnBtc2dfZHJpdmVyKCZycG1zZ19zYW1wbGVfY2xpZW50KTsKK30KK21vZHVsZV9pbml0KGluaXQpOworCitzdGF0aWMgdm9pZCBfX2V4aXQgZmluaSh2b2lkKQoreworCXVucmVnaXN0ZXJfcnBtc2dfZHJpdmVyKCZycG1zZ19zYW1wbGVfY2xpZW50KTsKK30KK21vZHVsZV9leGl0KGZpbmkpOworCitOb3RlOiBhIHNpbWlsYXIgc2FtcGxlIHdoaWNoIGNhbiBiZSBidWlsdCBhbmQgbG9hZGVkIGNhbiBiZSBmb3VuZAoraW4gc2FtcGxlcy9ycG1zZy8uCisKKzQuIEFsbG9jYXRpb25zIG9mIHJwbXNnIGNoYW5uZWxzOgorCitBdCB0aGlzIHBvaW50IHdlIG9ubHkgc3VwcG9ydCBkeW5hbWljIGFsbG9jYXRpb25zIG9mIHJwbXNnIGNoYW5uZWxzLgorCitUaGlzIGlzIHBvc3NpYmxlIG9ubHkgd2l0aCByZW1vdGUgcHJvY2Vzc29ycyB0aGF0IGhhdmUgdGhlIFZJUlRJT19SUE1TR19GX05TCit2aXJ0aW8gZGV2aWNlIGZlYXR1cmUgc2V0LiBUaGlzIGZlYXR1cmUgYml0IG1lYW5zIHRoYXQgdGhlIHJlbW90ZQorcHJvY2Vzc29yIHN1cHBvcnRzIGR5bmFtaWMgbmFtZSBzZXJ2aWNlIGFubm91bmNlbWVudCBtZXNzYWdlcy4KKworV2hlbiB0aGlzIGZlYXR1cmUgaXMgZW5hYmxlZCwgY3JlYXRpb24gb2YgcnBtc2cgZGV2aWNlcyAoaS5lLiBjaGFubmVscykKK2lzIGNvbXBsZXRlbHkgZHluYW1pYzogdGhlIHJlbW90ZSBwcm9jZXNzb3IgYW5ub3VuY2VzIHRoZSBleGlzdGVuY2Ugb2YgYQorcmVtb3RlIHJwbXNnIHNlcnZpY2UgYnkgc2VuZGluZyBhIG5hbWUgc2VydmljZSBtZXNzYWdlICh3aGljaCBjb250YWlucwordGhlIG5hbWUgYW5kIHJwbXNnIGFkZHIgb2YgdGhlIHJlbW90ZSBzZXJ2aWNlLCBzZWUgc3RydWN0IHJwbXNnX25zX21zZykuCisKK1RoaXMgbWVzc2FnZSBpcyB0aGVuIGhhbmRsZWQgYnkgdGhlIHJwbXNnIGJ1cywgd2hpY2ggaW4gdHVybiBkeW5hbWljYWxseQorY3JlYXRlcyBhbmQgcmVnaXN0ZXJzIGFuIHJwbXNnIGNoYW5uZWwgKHdoaWNoIHJlcHJlc2VudHMgdGhlIHJlbW90ZSBzZXJ2aWNlKS4KK0lmL3doZW4gYSByZWxldmFudCBycG1zZyBkcml2ZXIgaXMgcmVnaXN0ZXJlZCwgaXQgd2lsbCBiZSBpbW1lZGlhdGVseSBwcm9iZWQKK2J5IHRoZSBidXMsIGFuZCBjYW4gdGhlbiBzdGFydCBzZW5kaW5nIG1lc3NhZ2VzIHRvIHRoZSByZW1vdGUgc2VydmljZS4KKworVGhlIHBsYW4gaXMgYWxzbyB0byBhZGQgc3RhdGljIGNyZWF0aW9uIG9mIHJwbXNnIGNoYW5uZWxzIHZpYSB0aGUgdmlydGlvCitjb25maWcgc3BhY2UsIGJ1dCBpdCdzIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3J0Yy50eHQgYi9Eb2N1bWVudGF0aW9uL3J0Yy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ0NmYxZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vcnRjLnR4dApAQCAtMCwwICsxLDIwNyBAQAorCisJUmVhbCBUaW1lIENsb2NrIChSVEMpIERyaXZlcnMgZm9yIExpbnV4CisJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1doZW4gTGludXggZGV2ZWxvcGVycyB0YWxrIGFib3V0IGEgIlJlYWwgVGltZSBDbG9jayIsIHRoZXkgdXN1YWxseSBtZWFuCitzb21ldGhpbmcgdGhhdCB0cmFja3Mgd2FsbCBjbG9jayB0aW1lIGFuZCBpcyBiYXR0ZXJ5IGJhY2tlZCBzbyB0aGF0IGl0Cit3b3JrcyBldmVuIHdpdGggc3lzdGVtIHBvd2VyIG9mZi4gIFN1Y2ggY2xvY2tzIHdpbGwgbm9ybWFsbHkgbm90IHRyYWNrCit0aGUgbG9jYWwgdGltZSB6b25lIG9yIGRheWxpZ2h0IHNhdmluZ3MgdGltZSAtLSB1bmxlc3MgdGhleSBkdWFsIGJvb3QKK3dpdGggTVMtV2luZG93cyAtLSBidXQgd2lsbCBpbnN0ZWFkIGJlIHNldCB0byBDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZQorKFVUQywgZm9ybWVybHkgIkdyZWVud2ljaCBNZWFuIFRpbWUiKS4KKworVGhlIG5ld2VzdCBub24tUEMgaGFyZHdhcmUgdGVuZHMgdG8ganVzdCBjb3VudCBzZWNvbmRzLCBsaWtlIHRoZSB0aW1lKDIpCitzeXN0ZW0gY2FsbCByZXBvcnRzLCBidXQgUlRDcyBhbHNvIHZlcnkgY29tbW9ubHkgcmVwcmVzZW50IHRpbWUgdXNpbmcKK3RoZSBHcmVnb3JpYW4gY2FsZW5kYXIgYW5kIDI0IGhvdXIgdGltZSwgYXMgcmVwb3J0ZWQgYnkgZ210aW1lKDMpLgorCitMaW51eCBoYXMgdHdvIGxhcmdlbHktY29tcGF0aWJsZSB1c2Vyc3BhY2UgUlRDIEFQSSBmYW1pbGllcyB5b3UgbWF5CituZWVkIHRvIGtub3cgYWJvdXQ6CisKKyAgICAqCS9kZXYvcnRjIC4uLiBpcyB0aGUgUlRDIHByb3ZpZGVkIGJ5IFBDIGNvbXBhdGlibGUgc3lzdGVtcywKKwlzbyBpdCdzIG5vdCB2ZXJ5IHBvcnRhYmxlIHRvIG5vbi14ODYgc3lzdGVtcy4KKworICAgICoJL2Rldi9ydGMwLCAvZGV2L3J0YzEgLi4uIGFyZSBwYXJ0IG9mIGEgZnJhbWV3b3JrIHRoYXQncworCXN1cHBvcnRlZCBieSBhIHdpZGUgdmFyaWV0eSBvZiBSVEMgY2hpcHMgb24gYWxsIHN5c3RlbXMuCisKK1Byb2dyYW1tZXJzIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IHRoZSBQQy9BVCBmdW5jdGlvbmFsaXR5IGlzIG5vdAorYWx3YXlzIGF2YWlsYWJsZSwgYW5kIHNvbWUgc3lzdGVtcyBjYW4gZG8gbXVjaCBtb3JlLiAgVGhhdCBpcywgdGhlCitSVENzIHVzZSB0aGUgc2FtZSBBUEkgdG8gbWFrZSByZXF1ZXN0cyBpbiBib3RoIFJUQyBmcmFtZXdvcmtzICh1c2luZworZGlmZmVyZW50IGZpbGVuYW1lcyBvZiBjb3Vyc2UpLCBidXQgdGhlIGhhcmR3YXJlIG1heSBub3Qgb2ZmZXIgdGhlCitzYW1lIGZ1bmN0aW9uYWxpdHkuICBGb3IgZXhhbXBsZSwgbm90IGV2ZXJ5IFJUQyBpcyBob29rZWQgdXAgdG8gYW4KK0lSUSwgc28gdGhleSBjYW4ndCBhbGwgaXNzdWUgYWxhcm1zOyBhbmQgd2hlcmUgc3RhbmRhcmQgUEMgUlRDcyBjYW4KK29ubHkgaXNzdWUgYW4gYWxhcm0gdXAgdG8gMjQgaG91cnMgaW4gdGhlIGZ1dHVyZSwgb3RoZXIgaGFyZHdhcmUgbWF5CitiZSBhYmxlIHRvIHNjaGVkdWxlIG9uZSBhbnkgdGltZSBpbiB0aGUgdXBjb21pbmcgY2VudHVyeS4KKworCisJT2xkIFBDL0FULUNvbXBhdGlibGUgZHJpdmVyOiAgL2Rldi9ydGMKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbGwgUENzIChldmVuIEFscGhhIG1hY2hpbmVzKSBoYXZlIGEgUmVhbCBUaW1lIENsb2NrIGJ1aWx0IGludG8gdGhlbS4KK1VzdWFsbHkgdGhleSBhcmUgYnVpbHQgaW50byB0aGUgY2hpcHNldCBvZiB0aGUgY29tcHV0ZXIsIGJ1dCBzb21lIG1heQorYWN0dWFsbHkgaGF2ZSBhIE1vdG9yb2xhIE1DMTQ2ODE4IChvciBjbG9uZSkgb24gdGhlIGJvYXJkLiBUaGlzIGlzIHRoZQorY2xvY2sgdGhhdCBrZWVwcyB0aGUgZGF0ZSBhbmQgdGltZSB3aGlsZSB5b3VyIGNvbXB1dGVyIGlzIHR1cm5lZCBvZmYuCisKK0FDUEkgaGFzIHN0YW5kYXJkaXplZCB0aGF0IE1DMTQ2ODE4IGZ1bmN0aW9uYWxpdHksIGFuZCBleHRlbmRlZCBpdCBpbgorYSBmZXcgd2F5cyAoZW5hYmxpbmcgbG9uZ2VyIGFsYXJtIHBlcmlvZHMsIGFuZCB3YWtlLWZyb20taGliZXJuYXRlKS4KK1RoYXQgZnVuY3Rpb25hbGl0eSBpcyBOT1QgZXhwb3NlZCBpbiB0aGUgb2xkIGRyaXZlci4KKworSG93ZXZlciBpdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGdlbmVyYXRlIHNpZ25hbHMgZnJvbSBhIHNsb3cgMkh6IHRvIGEKK3JlbGF0aXZlbHkgZmFzdCA4MTkySHosIGluIGluY3JlbWVudHMgb2YgcG93ZXJzIG9mIHR3by4gVGhlc2Ugc2lnbmFscworYXJlIHJlcG9ydGVkIGJ5IGludGVycnVwdCBudW1iZXIgOC4gKE9oISBTbyAqdGhhdCogaXMgd2hhdCBJUlEgOCBpcworZm9yLi4uKSBJdCBjYW4gYWxzbyBmdW5jdGlvbiBhcyBhIDI0aHIgYWxhcm0sIHJhaXNpbmcgSVJRIDggd2hlbiB0aGUKK2FsYXJtIGdvZXMgb2ZmLiBUaGUgYWxhcm0gY2FuIGFsc28gYmUgcHJvZ3JhbW1lZCB0byBvbmx5IGNoZWNrIGFueQorc3Vic2V0IG9mIHRoZSB0aHJlZSBwcm9ncmFtbWFibGUgdmFsdWVzLCBtZWFuaW5nIHRoYXQgaXQgY291bGQgYmUgc2V0IHRvCityaW5nIG9uIHRoZSAzMHRoIHNlY29uZCBvZiB0aGUgMzB0aCBtaW51dGUgb2YgZXZlcnkgaG91ciwgZm9yIGV4YW1wbGUuCitUaGUgY2xvY2sgY2FuIGFsc28gYmUgc2V0IHRvIGdlbmVyYXRlIGFuIGludGVycnVwdCB1cG9uIGV2ZXJ5IGNsb2NrCit1cGRhdGUsIHRodXMgZ2VuZXJhdGluZyBhIDFIeiBzaWduYWwuCisKK1RoZSBpbnRlcnJ1cHRzIGFyZSByZXBvcnRlZCB2aWEgL2Rldi9ydGMgKG1ham9yIDEwLCBtaW5vciAxMzUsIHJlYWQgb25seQorY2hhcmFjdGVyIGRldmljZSkgaW4gdGhlIGZvcm0gb2YgYW4gdW5zaWduZWQgbG9uZy4gVGhlIGxvdyBieXRlIGNvbnRhaW5zCit0aGUgdHlwZSBvZiBpbnRlcnJ1cHQgKHVwZGF0ZS1kb25lLCBhbGFybS1yYW5nLCBvciBwZXJpb2RpYykgdGhhdCB3YXMKK3JhaXNlZCwgYW5kIHRoZSByZW1haW5pbmcgYnl0ZXMgY29udGFpbiB0aGUgbnVtYmVyIG9mIGludGVycnVwdHMgc2luY2UKK3RoZSBsYXN0IHJlYWQuICBTdGF0dXMgaW5mb3JtYXRpb24gaXMgcmVwb3J0ZWQgdGhyb3VnaCB0aGUgcHNldWRvLWZpbGUKKy9wcm9jL2RyaXZlci9ydGMgaWYgdGhlIC9wcm9jIGZpbGVzeXN0ZW0gd2FzIGVuYWJsZWQuICBUaGUgZHJpdmVyIGhhcworYnVpbHQgaW4gbG9ja2luZyBzbyB0aGF0IG9ubHkgb25lIHByb2Nlc3MgaXMgYWxsb3dlZCB0byBoYXZlIHRoZSAvZGV2L3J0YworaW50ZXJmYWNlIG9wZW4gYXQgYSB0aW1lLgorCitBIHVzZXIgcHJvY2VzcyBjYW4gbW9uaXRvciB0aGVzZSBpbnRlcnJ1cHRzIGJ5IGRvaW5nIGEgcmVhZCgyKSBvciBhCitzZWxlY3QoMikgb24gL2Rldi9ydGMgLS0gZWl0aGVyIHdpbGwgYmxvY2svc3RvcCB0aGUgdXNlciBwcm9jZXNzIHVudGlsCit0aGUgbmV4dCBpbnRlcnJ1cHQgaXMgcmVjZWl2ZWQuIFRoaXMgaXMgdXNlZnVsIGZvciB0aGluZ3MgbGlrZQorcmVhc29uYWJseSBoaWdoIGZyZXF1ZW5jeSBkYXRhIGFjcXVpc2l0aW9uIHdoZXJlIG9uZSBkb2Vzbid0IHdhbnQgdG8KK2J1cm4gdXAgMTAwJSBDUFUgYnkgcG9sbGluZyBnZXR0aW1lb2ZkYXkgZXRjLiBldGMuCisKK0F0IGhpZ2ggZnJlcXVlbmNpZXMsIG9yIHVuZGVyIGhpZ2ggbG9hZHMsIHRoZSB1c2VyIHByb2Nlc3Mgc2hvdWxkIGNoZWNrCit0aGUgbnVtYmVyIG9mIGludGVycnVwdHMgcmVjZWl2ZWQgc2luY2UgdGhlIGxhc3QgcmVhZCB0byBkZXRlcm1pbmUgaWYKK3RoZXJlIGhhcyBiZWVuIGFueSBpbnRlcnJ1cHQgInBpbGV1cCIgc28gdG8gc3BlYWsuIEp1c3QgZm9yIHJlZmVyZW5jZSwgYQordHlwaWNhbCA0ODYtMzMgcnVubmluZyBhIHRpZ2h0IHJlYWQgbG9vcCBvbiAvZGV2L3J0YyB3aWxsIHN0YXJ0IHRvIHN1ZmZlcgorb2NjYXNpb25hbCBpbnRlcnJ1cHQgcGlsZXVwIChpLmUuID4gMSBJUlEgZXZlbnQgc2luY2UgbGFzdCByZWFkKSBmb3IKK2ZyZXF1ZW5jaWVzIGFib3ZlIDEwMjRIei4gU28geW91IHJlYWxseSBzaG91bGQgY2hlY2sgdGhlIGhpZ2ggYnl0ZXMKK29mIHRoZSB2YWx1ZSB5b3UgcmVhZCwgZXNwZWNpYWxseSBhdCBmcmVxdWVuY2llcyBhYm92ZSB0aGF0IG9mIHRoZQorbm9ybWFsIHRpbWVyIGludGVycnVwdCwgd2hpY2ggaXMgMTAwSHouCisKK1Byb2dyYW1taW5nIGFuZC9vciBlbmFibGluZyBpbnRlcnJ1cHQgZnJlcXVlbmNpZXMgZ3JlYXRlciB0aGFuIDY0SHogaXMKK29ubHkgYWxsb3dlZCBieSByb290LiBUaGlzIGlzIHBlcmhhcHMgYSBiaXQgY29uc2VydmF0aXZlLCBidXQgd2UgZG9uJ3Qgd2FudAorYW4gZXZpbCB1c2VyIGdlbmVyYXRpbmcgbG90cyBvZiBJUlFzIG9uIGEgc2xvdyAzODZzeC0xNiwgd2hlcmUgaXQgbWlnaHQgaGF2ZQorYSBuZWdhdGl2ZSBpbXBhY3Qgb24gcGVyZm9ybWFuY2UuIFRoaXMgNjRIeiBsaW1pdCBjYW4gYmUgY2hhbmdlZCBieSB3cml0aW5nCithIGRpZmZlcmVudCB2YWx1ZSB0byAvcHJvYy9zeXMvZGV2L3J0Yy9tYXgtdXNlci1mcmVxLiBOb3RlIHRoYXQgdGhlCitpbnRlcnJ1cHQgaGFuZGxlciBpcyBvbmx5IGEgZmV3IGxpbmVzIG9mIGNvZGUgdG8gbWluaW1pemUgYW55IHBvc3NpYmlsaXR5CitvZiB0aGlzIGVmZmVjdC4KKworQWxzbywgaWYgdGhlIGtlcm5lbCB0aW1lIGlzIHN5bmNocm9uaXplZCB3aXRoIGFuIGV4dGVybmFsIHNvdXJjZSwgdGhlIAora2VybmVsIHdpbGwgd3JpdGUgdGhlIHRpbWUgYmFjayB0byB0aGUgQ01PUyBjbG9jayBldmVyeSAxMSBtaW51dGVzLiBJbiAKK3RoZSBwcm9jZXNzIG9mIGRvaW5nIHRoaXMsIHRoZSBrZXJuZWwgYnJpZWZseSB0dXJucyBvZmYgUlRDIHBlcmlvZGljIAoraW50ZXJydXB0cywgc28gYmUgYXdhcmUgb2YgdGhpcyBpZiB5b3UgYXJlIGRvaW5nIHNlcmlvdXMgd29yay4gSWYgeW91Citkb24ndCBzeW5jaHJvbml6ZSB0aGUga2VybmVsIHRpbWUgd2l0aCBhbiBleHRlcm5hbCBzb3VyY2UgKHZpYSBudHAgb3IKK3doYXRldmVyKSB0aGVuIHRoZSBrZXJuZWwgd2lsbCBrZWVwIGl0cyBoYW5kcyBvZmYgdGhlIFJUQywgYWxsb3dpbmcgeW91CitleGNsdXNpdmUgYWNjZXNzIHRvIHRoZSBkZXZpY2UgZm9yIHlvdXIgYXBwbGljYXRpb25zLgorCitUaGUgYWxhcm0gYW5kL29yIGludGVycnVwdCBmcmVxdWVuY3kgYXJlIHByb2dyYW1tZWQgaW50byB0aGUgUlRDIHZpYQordmFyaW91cyBpb2N0bCgyKSBjYWxscyBhcyBsaXN0ZWQgaW4gLi9pbmNsdWRlL2xpbnV4L3J0Yy5oCitSYXRoZXIgdGhhbiB3cml0ZSA1MCBwYWdlcyBkZXNjcmliaW5nIHRoZSBpb2N0bCgpIGFuZCBzbyBvbiwgaXQgaXMKK3BlcmhhcHMgbW9yZSB1c2VmdWwgdG8gaW5jbHVkZSBhIHNtYWxsIHRlc3QgcHJvZ3JhbSB0aGF0IGRlbW9uc3RyYXRlcworaG93IHRvIHVzZSB0aGVtLCBhbmQgZGVtb25zdHJhdGVzIHRoZSBmZWF0dXJlcyBvZiB0aGUgZHJpdmVyLiBUaGlzIGlzCitwcm9iYWJseSBhIGxvdCBtb3JlIHVzZWZ1bCB0byBwZW9wbGUgaW50ZXJlc3RlZCBpbiB3cml0aW5nIGFwcGxpY2F0aW9ucwordGhhdCB3aWxsIGJlIHVzaW5nIHRoaXMgZHJpdmVyLiAgU2VlIHRoZSBjb2RlIGF0IHRoZSBlbmQgb2YgdGhpcyBkb2N1bWVudC4KKworKFRoZSBvcmlnaW5hbCAvZGV2L3J0YyBkcml2ZXIgd2FzIHdyaXR0ZW4gYnkgUGF1bCBHb3J0bWFrZXIuKQorCisKKwlOZXcgcG9ydGFibGUgIlJUQyBDbGFzcyIgZHJpdmVyczogIC9kZXYvcnRjTgorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JlY2F1c2UgTGludXggc3VwcG9ydHMgbWFueSBub24tQUNQSSBhbmQgbm9uLVBDIHBsYXRmb3Jtcywgc29tZSBvZiB3aGljaAoraGF2ZSBtb3JlIHRoYW4gb25lIFJUQyBzdHlsZSBjbG9jaywgaXQgbmVlZGVkIGEgbW9yZSBwb3J0YWJsZSBzb2x1dGlvbgordGhhbiBleHBlY3RpbmcgYSBzaW5nbGUgYmF0dGVyeS1iYWNrZWQgTUMxNDY4MTggY2xvbmUgb24gZXZlcnkgc3lzdGVtLgorQWNjb3JkaW5nbHksIGEgbmV3ICJSVEMgQ2xhc3MiIGZyYW1ld29yayBoYXMgYmVlbiBkZWZpbmVkLiAgSXQgb2ZmZXJzCit0aHJlZSBkaWZmZXJlbnQgdXNlcnNwYWNlIGludGVyZmFjZXM6CisKKyAgICAqCS9kZXYvcnRjTiAuLi4gbXVjaCB0aGUgc2FtZSBhcyB0aGUgb2xkZXIgL2Rldi9ydGMgaW50ZXJmYWNlCisKKyAgICAqCS9zeXMvY2xhc3MvcnRjL3J0Y04gLi4uIHN5c2ZzIGF0dHJpYnV0ZXMgc3VwcG9ydCByZWFkb25seQorCWFjY2VzcyB0byBzb21lIFJUQyBhdHRyaWJ1dGVzLgorCisgICAgKgkvcHJvYy9kcml2ZXIvcnRjIC4uLiB0aGUgc3lzdGVtIGNsb2NrIFJUQyBtYXkgZXhwb3NlIGl0c2VsZgorCXVzaW5nIGEgcHJvY2ZzIGludGVyZmFjZS4gSWYgdGhlcmUgaXMgbm8gUlRDIGZvciB0aGUgc3lzdGVtIGNsb2NrLAorCXJ0YzAgaXMgdXNlZCBieSBkZWZhdWx0LiBNb3JlIGluZm9ybWF0aW9uIGlzIChjdXJyZW50bHkpIHNob3duCisJaGVyZSB0aGFuIHRocm91Z2ggc3lzZnMuCisKK1RoZSBSVEMgQ2xhc3MgZnJhbWV3b3JrIHN1cHBvcnRzIGEgd2lkZSB2YXJpZXR5IG9mIFJUQ3MsIHJhbmdpbmcgZnJvbSB0aG9zZQoraW50ZWdyYXRlZCBpbnRvIGVtYmVkZGFibGUgc3lzdGVtLW9uLWNoaXAgKFNPQykgcHJvY2Vzc29ycyB0byBkaXNjcmV0ZSBjaGlwcwordXNpbmcgSTJDLCBTUEksIG9yIHNvbWUgb3RoZXIgYnVzIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIGhvc3QgQ1BVLiAgVGhlcmUncworZXZlbiBzdXBwb3J0IGZvciBQQy1zdHlsZSBSVENzIC4uLiBpbmNsdWRpbmcgdGhlIGZlYXR1cmVzIGV4cG9zZWQgb24gbmV3ZXIgUENzCit0aHJvdWdoIEFDUEkuCisKK1RoZSBuZXcgZnJhbWV3b3JrIGFsc28gcmVtb3ZlcyB0aGUgIm9uZSBSVEMgcGVyIHN5c3RlbSIgcmVzdHJpY3Rpb24uICBGb3IKK2V4YW1wbGUsIG1heWJlIHRoZSBsb3ctcG93ZXIgYmF0dGVyeS1iYWNrZWQgUlRDIGlzIGEgZGlzY3JldGUgSTJDIGNoaXAsIGJ1dAorYSBoaWdoIGZ1bmN0aW9uYWxpdHkgUlRDIGlzIGludGVncmF0ZWQgaW50byB0aGUgU09DLiAgVGhhdCBzeXN0ZW0gbWlnaHQgcmVhZAordGhlIHN5c3RlbSBjbG9jayBmcm9tIHRoZSBkaXNjcmV0ZSBSVEMsIGJ1dCB1c2UgdGhlIGludGVncmF0ZWQgb25lIGZvciBhbGwKK290aGVyIHRhc2tzLCBiZWNhdXNlIG9mIGl0cyBncmVhdGVyIGZ1bmN0aW9uYWxpdHkuCisKK1NZU0ZTIElOVEVSRkFDRQorLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBzeXNmcyBpbnRlcmZhY2UgdW5kZXIgL3N5cy9jbGFzcy9ydGMvcnRjTiBwcm92aWRlcyBhY2Nlc3MgdG8gdmFyaW91cworcnRjIGF0dHJpYnV0ZXMgd2l0aG91dCByZXF1aXJpbmcgdGhlIHVzZSBvZiBpb2N0bHMuIEFsbCBkYXRlcyBhbmQgdGltZXMKK2FyZSBpbiB0aGUgUlRDJ3MgdGltZXpvbmUsIHJhdGhlciB0aGFuIGluIHN5c3RlbSB0aW1lLgorCitkYXRlOiAgCSAgIAkgUlRDLXByb3ZpZGVkIGRhdGUKK2hjdG9zeXM6ICAgCSAxIGlmIHRoZSBSVEMgcHJvdmlkZWQgdGhlIHN5c3RlbSB0aW1lIGF0IGJvb3QgdmlhIHRoZQorCQkgQ09ORklHX1JUQ19IQ1RPU1lTIGtlcm5lbCBvcHRpb24sIDAgb3RoZXJ3aXNlCittYXhfdXNlcl9mcmVxOgkgVGhlIG1heGltdW0gaW50ZXJydXB0IHJhdGUgYW4gdW5wcml2aWxlZ2VkIHVzZXIgbWF5IHJlcXVlc3QKKwkJIGZyb20gdGhpcyBSVEMuCituYW1lOgkJIFRoZSBuYW1lIG9mIHRoZSBSVEMgY29ycmVzcG9uZGluZyB0byB0aGlzIHN5c2ZzIGRpcmVjdG9yeQorc2luY2VfZXBvY2g6CSBUaGUgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoIGFjY29yZGluZyB0byB0aGUgUlRDCit0aW1lOgkJIFJUQy1wcm92aWRlZCB0aW1lCit3YWtlYWxhcm06CSBUaGUgdGltZSBhdCB3aGljaCB0aGUgY2xvY2sgd2lsbCBnZW5lcmF0ZSBhIHN5c3RlbSB3YWtldXAKKwkJIGV2ZW50LiBUaGlzIGlzIGEgb25lIHNob3Qgd2FrZXVwIGV2ZW50LCBzbyBtdXN0IGJlIHJlc2V0CisJCSBhZnRlciB3YWtlIGlmIGEgZGFpbHkgd2FrZXVwIGlzIHJlcXVpcmVkLiBGb3JtYXQgaXMgc2Vjb25kcyBzaW5jZQorCQkgdGhlIGVwb2NoIGJ5IGRlZmF1bHQsIG9yIGlmIHRoZXJlJ3MgYSBsZWFkaW5nICssIHNlY29uZHMgaW4gdGhlCisJCSBmdXR1cmUsIG9yIGlmIHRoZXJlIGlzIGEgbGVhZGluZyArPSwgc2Vjb25kcyBhaGVhZCBvZiB0aGUgY3VycmVudAorCQkgYWxhcm0uCisKK0lPQ1RMIElOVEVSRkFDRQorLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBpb2N0bCgpIGNhbGxzIHN1cHBvcnRlZCBieSAvZGV2L3J0YyBhcmUgYWxzbyBzdXBwb3J0ZWQgYnkgdGhlIFJUQyBjbGFzcworZnJhbWV3b3JrLiAgSG93ZXZlciwgYmVjYXVzZSB0aGUgY2hpcHMgYW5kIHN5c3RlbXMgYXJlIG5vdCBzdGFuZGFyZGl6ZWQsCitzb21lIFBDL0FUIGZ1bmN0aW9uYWxpdHkgbWlnaHQgbm90IGJlIHByb3ZpZGVkLiAgQW5kIGluIHRoZSBzYW1lIHdheSwgc29tZQorbmV3ZXIgZmVhdHVyZXMgLS0gaW5jbHVkaW5nIHRob3NlIGVuYWJsZWQgYnkgQUNQSSAtLSBhcmUgZXhwb3NlZCBieSB0aGUKK1JUQyBjbGFzcyBmcmFtZXdvcmssIGJ1dCBjYW4ndCBiZSBzdXBwb3J0ZWQgYnkgdGhlIG9sZGVyIGRyaXZlci4KKworICAgICoJUlRDX1JEX1RJTUUsIFJUQ19TRVRfVElNRSAuLi4gZXZlcnkgUlRDIHN1cHBvcnRzIGF0IGxlYXN0IHJlYWRpbmcKKwl0aW1lLCByZXR1cm5pbmcgdGhlIHJlc3VsdCBhcyBhIEdyZWdvcmlhbiBjYWxlbmRhciBkYXRlIGFuZCAyNCBob3VyCisJd2FsbCBjbG9jayB0aW1lLiAgVG8gYmUgbW9zdCB1c2VmdWwsIHRoaXMgdGltZSBtYXkgYWxzbyBiZSB1cGRhdGVkLgorCisgICAgKglSVENfQUlFX09OLCBSVENfQUlFX09GRiwgUlRDX0FMTV9TRVQsIFJUQ19BTE1fUkVBRCAuLi4gd2hlbiB0aGUgUlRDCisJaXMgY29ubmVjdGVkIHRvIGFuIElSUSBsaW5lLCBpdCBjYW4gb2Z0ZW4gaXNzdWUgYW4gYWxhcm0gSVJRIHVwIHRvCisJMjQgaG91cnMgaW4gdGhlIGZ1dHVyZS4gIChVc2UgUlRDX1dLQUxNXyogYnkgcHJlZmVyZW5jZS4pCisKKyAgICAqCVJUQ19XS0FMTV9TRVQsIFJUQ19XS0FMTV9SRCAuLi4gUlRDcyB0aGF0IGNhbiBpc3N1ZSBhbGFybXMgYmV5b25kCisJdGhlIG5leHQgMjQgaG91cnMgdXNlIGEgc2xpZ2h0bHkgbW9yZSBwb3dlcmZ1bCBBUEksIHdoaWNoIHN1cHBvcnRzCisJc2V0dGluZyB0aGUgbG9uZ2VyIGFsYXJtIHRpbWUgYW5kIGVuYWJsaW5nIGl0cyBJUlEgdXNpbmcgYSBzaW5nbGUKKwlyZXF1ZXN0ICh1c2luZyB0aGUgc2FtZSBtb2RlbCBhcyBFRkkgZmlybXdhcmUpLgorCisgICAgKglSVENfVUlFX09OLCBSVENfVUlFX09GRiAuLi4gaWYgdGhlIFJUQyBvZmZlcnMgSVJRcywgdGhlIFJUQyBmcmFtZXdvcmsKKwl3aWxsIGVtdWxhdGUgdGhpcyBtZWNoYW5pc20uCisKKyAgICAqCVJUQ19QSUVfT04sIFJUQ19QSUVfT0ZGLCBSVENfSVJRUF9TRVQsIFJUQ19JUlFQX1JFQUQgLi4uIHRoZXNlIGljb3RscworCWFyZSBlbXVsYXRlZCB2aWEgYSBrZXJuZWwgaHJ0aW1lci4KKworSW4gbWFueSBjYXNlcywgdGhlIFJUQyBhbGFybSBjYW4gYmUgYSBzeXN0ZW0gd2FrZSBldmVudCwgdXNlZCB0byBmb3JjZQorTGludXggb3V0IG9mIGEgbG93IHBvd2VyIHNsZWVwIHN0YXRlIChvciBoaWJlcm5hdGlvbikgYmFjayB0byBhIGZ1bGx5CitvcGVyYXRpb25hbCBzdGF0ZS4gIEZvciBleGFtcGxlLCBhIHN5c3RlbSBjb3VsZCBlbnRlciBhIGRlZXAgcG93ZXIgc2F2aW5nCitzdGF0ZSB1bnRpbCBpdCdzIHRpbWUgdG8gZXhlY3V0ZSBzb21lIHNjaGVkdWxlZCB0YXNrcy4KKworTm90ZSB0aGF0IG1hbnkgb2YgdGhlc2UgaW9jdGxzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjb21tb24gcnRjLWRldiBpbnRlcmZhY2UuCitTb21lIGNvbW1vbiBleGFtcGxlczoKKworICAgICoJUlRDX1JEX1RJTUUsIFJUQ19TRVRfVElNRTogdGhlIHJlYWRfdGltZS9zZXRfdGltZSBmdW5jdGlvbnMgd2lsbCBiZQorCWNhbGxlZCB3aXRoIGFwcHJvcHJpYXRlIHZhbHVlcy4KKworICAgICoJUlRDX0FMTV9TRVQsIFJUQ19BTE1fUkVBRCwgUlRDX1dLQUxNX1NFVCwgUlRDX1dLQUxNX1JEOiBnZXRzIG9yIHNldHMKKwl0aGUgYWxhcm0gcnRjX3RpbWVyLiBNYXkgY2FsbCB0aGUgc2V0X2FsYXJtIGRyaXZlciBmdW5jdGlvbi4KKworICAgICoJUlRDX0lSUVBfU0VULCBSVENfSVJRUF9SRUFEOiBUaGVzZSBhcmUgZW11bGF0ZWQgYnkgdGhlIGdlbmVyaWMgY29kZS4KKworICAgICoJUlRDX1BJRV9PTiwgUlRDX1BJRV9PRkY6IFRoZXNlIGFyZSBhbHNvIGVtdWxhdGVkIGJ5IHRoZSBnZW5lcmljIGNvZGUuCisKK0lmIGFsbCBlbHNlIGZhaWxzLCBjaGVjayBvdXQgdGhlIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9ydGN0ZXN0LmMgdGVzdCEKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vczM5MC8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vczM5MC8wMC1JTkRFWApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTg5NTM1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zMzkwLzAwLUlOREVYCkBAIC0wLDAgKzEsMjYgQEAKKzAwLUlOREVYCisJLSB0aGlzIGZpbGUuCiszMjcwLkNoYW5nZUxvZworCS0gQ2hhbmdlTG9nIGZvciB0aGUgVVRTIEdsb2JhbCAzMjcwLXN1cHBvcnQgcGF0Y2ggKG91dGRhdGVkKS4KKzMyNzAudHh0CisJLSBob3cgdG8gdXNlIHRoZSBJQk0gMzI3MCBkaXNwbGF5IHN5c3RlbSBzdXBwb3J0LgorY2RzLnR4dAorCS0gczM5MCBjb21tb24gZGV2aWNlIHN1cHBvcnQgKGNvbW1vbiBJL08gbGF5ZXIpLgorQ29tbW9uSU8KKwktIGNvbW1vbiBJL08gbGF5ZXIgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMsIHByb2NmcyBhbmQgZGVidWdmcwllbnRyaWVzCitjb25maWczMjcwLnNoCisJLSBleGFtcGxlIGNvbmZpZ3VyYXRpb24gZm9yIDMyNzAgZGV2aWNlcy4KK0RBU0QKKwktIGluZm9ybWF0aW9uIG9uIHRoZSBEQVNEIGRpc2sgZGV2aWNlIGRyaXZlci4KK0RlYnVnZ2luZzM5MC50eHQKKwktIGhpbnRzIGZvciBkZWJ1Z2dpbmcgb24gczM5MCBzeXN0ZW1zLgorZHJpdmVyLW1vZGVsLnR4dAorCS0gaW5mb3JtYXRpb24gb24gczM5MCBkZXZpY2VzIGFuZCB0aGUgZHJpdmVyIG1vZGVsLgorbW9ucmVhZGVyLnR4dAorCS0gaW5mb3JtYXRpb24gb24gYWNjZXNzaW5nIHRoZSB6L1ZNIG1vbml0b3Igc3RyZWFtIGZyb20gTGludXguCitxZXRoLnR4dAorCS0gSGlwZXJTb2NrZXRzIEJyaWRnZSBQb3J0IFN1cHBvcnQuCitzMzkwZGJmLnR4dAorCS0gaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlIHMzOTAgZGVidWcgZmVhdHVyZS4KK3pmY3BkdW1wLnR4dAorCS0gaW5mb3JtYXRpb24gb24gdGhlIHMzOTAgU0NTSSBkdW1wIHRvb2wuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3MzOTAvMzI3MC5DaGFuZ2VMb2cgYi9Eb2N1bWVudGF0aW9uL3MzOTAvMzI3MC5DaGFuZ2VMb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMxYzM2MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vczM5MC8zMjcwLkNoYW5nZUxvZwpAQCAtMCwwICsxLDQ0IEBACitDaGFuZ2VMb2cgZm9yIHRoZSBVVFMgR2xvYmFsIDMyNzAtc3VwcG9ydCBwYXRjaAorCitTZXAgMjAwMjoJR2V0IGJvb3R1cCBjb2xvcnMgcmlnaHQgb24gMzI3MCBjb25zb2xlCisJKiBJbiB0dWJ0dHlibGQuYywgc3Vic3RhbnRpYWxseSByZXZpc2UgRVNDIHByb2Nlc3Npbmcgc28gdGhhdAorCSAgRVNDIHNlcXVlbmNlcyAoZXNwZWNpYWxseSBjb2xvcmluZyBvbmVzKSBhbmQgdGhlIHN0cmluZ3MKKwkgIHRoZXkgYWZmZWN0IHdvcmsgYXMgcmlnaHQgYXMgMzI3MCBjYW4gZ2V0IHRoZW0uICBBbHNvLCBzZXQKKwkgIHNjcmVlbiBoZWlnaHQgdG8gb21pdCB0aGUgdHdvIHJvd3MgdXNlZCBmb3IgaW5wdXQgYXJlYSwgaW4KKwkgIHR0eTMyNzBfb3BlbigpIGluIHR1YnR0eS5jLgorCitTZXAgMjAwMjoJRHluYW1pY2FsbHkgZ2V0IDMyNzAgaW5wdXQgYnVmZmVyCisJKiBPdmVyc2l6ZSAzMjcwIHNjcmVlbiB3aWR0aHMgbWF5IGV4Y2VlZCBHRU9NX01BWElOUExFTiBjb2x1bW5zLAorCSAgc28gZ2V0IGlucHV0LWFyZWEgYnVmZmVyIGR5bmFtaWNhbGx5IHdoZW4gc2l6aW5nIHRoZSBkZXZpY2UgaW4KKwkgIHR1Ym1ha2VtaW4oKSBpbiB0dWJhbGwuYyAoaWYgaXQncyB0aGUgY29uc29sZSkgb3IgdHR5MzI3MF9vcGVuKCkKKwkgIGluIHR1YnR0eS5jIChpZiBuZWVkZWQpLiAgQ2hhbmdlIHR1YnAtPnR0eV9pbnB1dCB0byBiZSBhCisJICBwb2ludGVyIHJhdGhlciB0aGFuIGFuIGFycmF5LCBpbiB0dWJpby5oLgorCitTZXAgMjAwMjoJRml4IHR1YmZzIGttYWxsb2MoKXMKKwkqIERvIHJlYWQgYW5kIHdyaXRlIGxlbmd0aHMgY29ycmVjdGx5IGluIGZzMzI3MF9yZWFkKCkKKwkgIGFuZCBmczMyNzBfd3JpdGUoKSwgd2hpbHN0IG5ldmVyIGFza2luZyBrbWFsbG9jKCkKKwkgIGZvciBtb3JlIHRoYW4gMHg4MDAgYnl0ZXMuICBBZmZlY3RzIHR1YmZzLmMgYW5kIHR1YmlvLmguCisKK1NlcCAyMDAyOglSZWNvZ25pemUgMzI3MCBjb250cm9sIHVuaXQgdHlwZSAzMTc0CisJKiBSZWNvZ25pemUgY29udHJvbC11bml0IHR5cGUgMHgzMTc0IGFzIHdlbGwgYXMgMHgzMjc/LgorCSAgVGhlIElCTSAyMDQ3IGRldmljZSBlbXVsYXRlcyBhIDMxNzQgY29udHJvbCB1bml0LgorCSAgTW9kdWxhcml6ZSBjb250cm9sLXVuaXQgcmVjb2duaXRpb24gaW4gdHViYWxsLmMgYnkKKwkgIGFkZGluZyBhbmQgaW52b2tpbmcgbmV3IHR1YjMyNzBfaXNfb3VycygpLgorCitBcHIgMjAwMjoJRml4IDMyNzAgY29uc29sZSByZWJvb3QgbG9vcAorCSogKEJlbGF0ZWQgbG9nIGVudHJ5KSBGaXhlZCByZWJvb3QgbG9vcCBpZiAzMjcwIGNvbnNvbGUsCisJICBpbiB0dWJ0dHkuYzp0dHUzMjcwX2JoKCkuCisKK0ZlYiA2LCAyMDAxOgorCSogVGhpcyBjaGFuZ2Vsb2cgaXMgbmV3CisJKiB0dWIzMjcwIG5vdyBzdXBwb3J0cyAzMjcwIGNvbnNvbGU6CisJCVNwZWNpZnkgeSBmb3IgQ09ORklHXzMyNzAgYW5kIHkgZm9yIENPTkZJR18zMjcwX0NPTlNPTEUuCisJCVN1cHBvcnQgZm9yIDMyMTUgd2lsbCBub3QgYXBwZWFyIGlmIDMyNzAgY29uc29sZSBzdXBwb3J0CisJCWlzIGNob3Nlbi4KKwkJTk9URTogIFRoZSBkZWZhdWx0IGlzIDMyNzAgY29uc29sZSBzdXBwb3J0LCBOT1QgMzIxNS4KKwkqIHRoZSBjb21wb25lbnRzIGFyZSByZW1vZHVsYXJpemVkOiBhZGRlZCBzb3VyY2UgbW9kdWxlcyBhcmUKKwkgIHR1YnR0eWJsZC5jIGFuZCB0dWJ0dHlzY2wuYywgZm9yIHNjcmVlbi1idWlsZGluZyBjb2RlIGFuZAorCSAgc2Nyb2xsLXRpbWVvdXQgY29kZS4KKwkqIHR1YjMyNzAgc291cmNlIGZvciB0aGlzICgyLjQuMCkgdmVyc2lvbiBpcyAjaWZkZWZmZWQgdG8KKwkgIGJ1aWxkIHdpdGggYm90aCAyLjQuMCBhbmQgMi4yLjE2LjIuCisJKiBjb2xvciBzdXBwb3J0IGFuZCBtaW5pbWFsIG90aGVyIEVTQy1zZXF1ZW5jZSBzdXBwb3J0IGlzIGFkZGVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zMzkwLzMyNzAudHh0IGIvRG9jdW1lbnRhdGlvbi9zMzkwLzMyNzAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjNzE1ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3MzOTAvMzI3MC50eHQKQEAgLTAsMCArMSwyNzEgQEAKK0lCTSAzMjcwIERpc3BsYXkgU3lzdGVtIHN1cHBvcnQKKworVGhpcyBmaWxlIGRlc2NyaWJlcyB0aGUgZHJpdmVyIHRoYXQgc3VwcG9ydHMgbG9jYWwgY2hhbm5lbCBhdHRhY2htZW50CitvZiBJQk0gMzI3MCBkZXZpY2VzLiAgSXQgY29uc2lzdHMgb2YgdGhyZWUgc2VjdGlvbnM6CisJKiBJbnRyb2R1Y3Rpb24KKwkqIEluc3RhbGxhdGlvbgorCSogT3BlcmF0aW9uCisKKworSU5UUk9EVUNUSU9OLgorCitUaGlzIHBhcGVyIGRlc2NyaWJlcyBpbnN0YWxsaW5nIGFuZCBvcGVyYXRpbmcgMzI3MCBkZXZpY2VzIHVuZGVyCitMaW51eC8zOTAuICBBIDMyNzAgZGV2aWNlIGlzIGEgYmxvY2stbW9kZSByb3dzLWFuZC1jb2x1bW5zIHRlcm1pbmFsIG9mCit3aGljaCBJJ20gc3VyZSBodW5kcmVkcyBvZiBtaWxsaW9ucyB3ZXJlIHNvbGQgYnkgSUJNIGFuZCBjbG9uZW1ha2VycwordHdlbnR5IGFuZCB0aGlydHkgeWVhcnMgYWdvLgorCitZb3UgbWF5IGhhdmUgMzI3MHMgaW4taG91c2UgYW5kIG5vdCBrbm93IGl0LiAgSWYgeW91J3JlIHVzaW5nIHRoZQorVk0tRVNBIG9wZXJhdGluZyBzeXN0ZW0sIGRlZmluZSBhIDMyNzAgdG8geW91ciB2aXJ0dWFsIG1hY2hpbmUgYnkgdXNpbmcKK3RoZSBjb21tYW5kICJERUYgR1JBRiA8aGV4LWFkZHJlc3M+IiAgVGhpcyBwYXBlciBwcmVzdW1lcyB5b3Ugd2lsbCBiZQorZGVmaW5pbmcgZm91ciAzMjcwcyB3aXRoIHRoZSBDUC9DTVMgY29tbWFuZHMKKworCURFRiBHUkFGIDYyMAorCURFRiBHUkFGIDYyMQorCURFRiBHUkFGIDYyMgorCURFRiBHUkFGIDYyMworCitZb3VyIG5ldHdvcmsgY29ubmVjdGlvbiBmcm9tIFZNLUVTQSBhbGxvd3MgeW91IHRvIHVzZSB4MzI3MCwgdG4zMjcwLCBvcgorYW5vdGhlciAzMjcwIGVtdWxhdG9yLCBzdGFydGVkIGZyb20gYW4geHRlcm0gd2luZG93IG9uIHlvdXIgUEMgb3IKK3dvcmtzdGF0aW9uLiAgV2l0aCB0aGUgREVGIEdSQUYgY29tbWFuZCwgYW4gYXBwbGljYXRpb24gc3VjaCBhcyB4dGVybSwKK2FuZCB0aGlzIExpbnV4LTM5MCAzMjcwIGRyaXZlciwgeW91IGhhdmUgYW5vdGhlciB3YXkgb2YgdGFsa2luZyB0byB5b3VyCitMaW51eCBib3guCisKK1RoaXMgcGFwZXIgY292ZXJzIGluc3RhbGxhdGlvbiBvZiB0aGUgZHJpdmVyIGFuZCBvcGVyYXRpb24gb2YgYQorZGlhbGVkLWluIHgzMjcwLgorCisKK0lOU1RBTExBVElPTi4KKworWW91IGluc3RhbGwgdGhlIGRyaXZlciBieSBpbnN0YWxsaW5nIGEgcGF0Y2gsIGRvaW5nIGEga2VybmVsIGJ1aWxkLCBhbmQKK3J1bm5pbmcgdGhlIGNvbmZpZ3VyYXRpb24gc2NyaXB0IChjb25maWczMjcwLnNoLCBpbiB0aGlzIGRpcmVjdG9yeSkuCisKK1dBUk5JTkc6ICBJZiB5b3UgYXJlIHVzaW5nIDMyNzAgY29uc29sZSBzdXBwb3J0LCB5b3UgbXVzdCByZXJ1biB0aGUKK2NvbmZpZ3VyYXRpb24gc2NyaXB0IGV2ZXJ5IHRpbWUgeW91IGNoYW5nZSB0aGUgY29uc29sZSdzIGFkZHJlc3MgKHBlcmhhcHMKK2J5IHVzaW5nIHRoZSBjb25kZXY9IHBhcmFtZXRlciBpbiBzaWxvJ3MgL2Jvb3QvcGFybWZpbGUpLiAgTW9yZSBwcmVjaXNlbHksCit5b3Ugc2hvdWxkIHJlcnVuIHRoZSBjb25maWd1cmF0aW9uIHNjcmlwdCBldmVyeSB0aW1lIHlvdXIgc2V0IG9mIDMyNzBzLAoraW5jbHVkaW5nIHRoZSBjb25zb2xlIDMyNzAsIGNoYW5nZXMgc3ViY2hhbm5lbCBpZGVudGlmaWVyIHJlbGF0aXZlIHRvCitvbmUgYW5vdGhlci4gIFJlSVBMIGFzIHNvb24gYXMgcG9zc2libGUgYWZ0ZXIgcnVubmluZyB0aGUgY29uZmlndXJhdGlvbgorc2NyaXB0IGFuZCB0aGUgcmVzdWx0aW5nIC90bXAvbWtkZXYzMjcwLgorCitJZiB5b3UgaGF2ZSBjaG9zZW4gdG8gbWFrZSB0dWIzMjcwIGEgbW9kdWxlLCB5b3UgYWRkIGEgbGluZSB0byBhCitjb25maWd1cmF0aW9uIGZpbGUgdW5kZXIgL2V0Yy9tb2Rwcm9iZS5kLy4gIElmIHlvdSBhcmUgd29ya2luZyBvbiBhIFZNCit2aXJ0dWFsIG1hY2hpbmUsIHlvdSBjYW4gdXNlIERFRiBHUkFGIHRvIGRlZmluZSB2aXJ0dWFsIDMyNzAgZGV2aWNlcy4KKworWW91IG1heSBnZW5lcmF0ZSBib3RoIDMyNzAgYW5kIDMyMTUgY29uc29sZSBzdXBwb3J0LCBvciBvbmUgb3IgdGhlCitvdGhlciwgb3IgbmVpdGhlci4gIElmIHlvdSBnZW5lcmF0ZSBib3RoLCB0aGUgY29uc29sZSB0eXBlIHVuZGVyIFZNIGlzCitub3QgY2hhbmdlZC4gIFVzZSAjQ1AgUSBURVJNIHRvIHNlZSB3aGF0IHRoZSBjdXJyZW50IGNvbnNvbGUgdHlwZSBpcy4KK1VzZSAjQ1AgVEVSTSBDT05NT0RFIDMyNzAgdG8gY2hhbmdlIGl0IHRvIDMyNzAuICBJZiB5b3UgZ2VuZXJhdGUgb25seQorMzI3MCBjb25zb2xlIHN1cHBvcnQsIHRoZW4gdGhlIGRyaXZlciBhdXRvbWF0aWNhbGx5IGNvbnZlcnRzIHlvdXIgY29uc29sZQorYXQgYm9vdCB0aW1lIHRvIGEgMzI3MCBpZiBpdCBpcyBhIDMyMTUuCisKK0luIGJyaWVmLCB0aGVzZSBhcmUgdGhlIHN0ZXBzOgorCTEuIEluc3RhbGwgdGhlIHR1YjMyNzAgcGF0Y2gKKwkyLiAoSWYgYSBtb2R1bGUpIGFkZCBhIGxpbmUgdG8gYSBmaWxlIGluIC9ldGMvbW9kcHJvYmUuZC8qLmNvbmYKKwkzLiAoSWYgVk0pIGRlZmluZSBkZXZpY2VzIHdpdGggREVGIEdSQUYKKwk0LiBSZWJvb3QKKwk1LiBDb25maWd1cmUKKworVG8gdGVzdCB0aGF0IGV2ZXJ5dGhpbmcgd29ya3MsIGFzc3VtaW5nIFZNIGFuZCB4MzI3MCwKKwkxLiBCcmluZyB1cCBhbiB4MzI3MCB3aW5kb3cuCisJMi4gVXNlIHRoZSBESUFMIGNvbW1hbmQgaW4gdGhhdCB3aW5kb3cuCisJMy4gWW91IHNob3VsZCBpbW1lZGlhdGVseSBzZWUgYSBMaW51eCBsb2dpbiBzY3JlZW4uCisKK0hlcmUgYXJlIHRoZSBpbnN0YWxsYXRpb24gc3RlcHMgaW4gZGV0YWlsOgorCisJMS4gIFRoZSAzMjcwIGRyaXZlciBpcyBhIHBhcnQgb2YgdGhlIG9mZmljaWFsIExpbnV4IGtlcm5lbAorCXNvdXJjZS4gIEJ1aWxkIGEgdHJlZSB3aXRoIHRoZSBrZXJuZWwgc291cmNlIGFuZCBhbnkgbmVjZXNzYXJ5CisJcGF0Y2hlcy4gIFRoZW4gZG8KKwkJbWFrZSBvbGRjb25maWcKKwkJKElmIHlvdSB3aXNoIHRvIGRpc2FibGUgMzIxNSBjb25zb2xlIHN1cHBvcnQsIGVkaXQKKwkJLmNvbmZpZzsgY2hhbmdlIENPTkZJR19UTjMyMTUncyB2YWx1ZSB0byAibiI7CisJCWFuZCByZXJ1biAibWFrZSBvbGRjb25maWciLikKKwkJbWFrZSBpbWFnZQorCQltYWtlIG1vZHVsZXMKKwkJbWFrZSBtb2R1bGVzX2luc3RhbGwKKworCTIuIChQZXJmb3JtIHRoaXMgc3RlcCBvbmx5IGlmIHlvdSBoYXZlIGNvbmZpZ3VyZWQgdHViMzI3MCBhcyBhCisJbW9kdWxlLikgIEFkZCBhIGxpbmUgdG8gYSBmaWxlIC9ldGMvbW9kcHJvYmUuZC8qLmNvbmYgdG8gYXV0b21hdGljYWxseQorCWxvYWQgdGhlIGRyaXZlciB3aGVuIGl0J3MgbmVlZGVkLiAgV2l0aCB0aGlzIGxpbmUgYWRkZWQsIHlvdSB3aWxsIHNlZQorCWxvZ2luIHByb21wdHMgYXBwZWFyIG9uIHlvdXIgMzI3MHMgYXMgc29vbiBhcyBib290IGlzIGNvbXBsZXRlIChvcgorCXdpdGggZW11bGF0ZWQgMzI3MHMsIGFzIHNvb24gYXMgeW91IGRpYWwgaW50byB5b3VyIHZtIGd1ZXN0IHVzaW5nIHRoZQorCWNvbW1hbmQgIkRJQUwgPHZtZ3Vlc3RuYW1lPiIpLiAgU2luY2UgdGhlIGxpbmUtbW9kZSBtYWpvciBudW1iZXIgaXMKKwkyMjcsIHRoZSBsaW5lIHRvIGFkZCBzaG91bGQgYmU6CisJCWFsaWFzIGNoYXItbWFqb3ItMjI3IHR1YjMyNzAKKworCTMuIERlZmluZSBncmFwaGljIGRldmljZXMgdG8geW91ciB2bSBndWVzdCBtYWNoaW5lLCBpZiB5b3UKKwloYXZlbid0IGFscmVhZHkuICBEZWZpbmUgdGhlbSBiZWZvcmUgeW91IHJlYm9vdCAocmVpcGwpOgorCQlERUZJTkUgR1JBRiA2MjAKKwkJREVGSU5FIEdSQUYgNjIxCisJCURFRklORSBHUkFGIDYyMgorCQlERUZJTkUgR1JBRiA2MjMKKworCTQuIFJlYm9vdC4gIFRoZSByZWJvb3QgcHJvY2VzcyBzY2FucyBoYXJkd2FyZSBkZXZpY2VzLCBpbmNsdWRpbmcKKwkzMjcwcywgYW5kIHRoaXMgZW5hYmxlcyB0aGUgdHViMzI3MCBkcml2ZXIgb25jZSBsb2FkZWQgdG8gcmVzcG9uZAorCWNvcnJlY3RseSB0byB0aGUgY29uZmlndXJhdGlvbiByZXF1ZXN0cyBvZiB0aGUgbmV4dCBzdGVwLiAgSWYKKwl5b3UgaGF2ZSBjaG9zZW4gMzI3MCBjb25zb2xlIHN1cHBvcnQsIHlvdXIgY29uc29sZSBub3cgYmVoYXZlcworCWFzIGEgMzI3MCwgbm90IGEgMzIxNS4KKworCTUuIFJ1biB0aGUgMzI3MCBjb25maWd1cmF0aW9uIHNjcmlwdCBjb25maWczMjcwLiAgSXQgaXMKKwlkaXN0cmlidXRlZCBpbiB0aGlzIHNhbWUgZGlyZWN0b3J5LCBEb2N1bWVudGF0aW9uL3MzOTAsIGFzCisJY29uZmlnMzI3MC5zaC4JSW5zcGVjdCB0aGUgb3V0cHV0IHNjcmlwdCBpdCBwcm9kdWNlcywKKwkvdG1wL21rZGV2MzI3MCwgYW5kIHRoZW4gcnVuIHRoYXQgc2NyaXB0LiAgVGhpcyB3aWxsIGNyZWF0ZSB0aGUKKwluZWNlc3NhcnkgY2hhcmFjdGVyIHNwZWNpYWwgZGV2aWNlIGZpbGVzIGFuZCBtYWtlIHRoZSBuZWNlc3NhcnkKKwljaGFuZ2VzIHRvIC9ldGMvaW5pdHRhYi4KKworCVRoZW4gbm90aWZ5IC9zYmluL2luaXQgdGhhdCAvZXRjL2luaXR0YWIgaGFzIGNoYW5nZWQsIGJ5IGlzc3VpbmcKKwl0aGUgdGVsaW5pdCBjb21tYW5kIHdpdGggdGhlIHEgb3BlcmFuZDoKKwkJY2QgRG9jdW1lbnRhdGlvbi9zMzkwCisJCXNoIGNvbmZpZzMyNzAuc2gKKwkJc2ggL3RtcC9ta2RldjMyNzAKKwkJdGVsaW5pdCBxCisKKwlUaGlzIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciB5b3VyIGZpcnN0IHRpbWUuCUlmIHlvdXIgMzI3MAorCWNvbmZpZ3VyYXRpb24gaGFzIGNoYW5nZWQgYW5kIHlvdSdyZSByZXVzaW5nIGNvbmZpZzMyNzAsIHlvdQorCXNob3VsZCBmb2xsb3cgdGhlc2Ugc3RlcHM6CisJCUNoYW5nZSAzMjcwIGNvbmZpZ3VyYXRpb24KKwkJUmVib290CisJCVJ1biBjb25maWczMjcwIGFuZCAvdG1wL21rZGV2MzI3MAorCQlSZWJvb3QKKworSGVyZSBhcmUgdGhlIHRlc3Rpbmcgc3RlcHMgaW4gZGV0YWlsOgorCisJMS4gQnJpbmcgdXAgYW4geDMyNzAgd2luZG93LCBvciB1c2UgYW4gYWN0dWFsIGhhcmR3YXJlIDMyNzggb3IKKwkzMjc5LCBvciB1c2UgdGhlIDMyNzAgZW11bGF0b3Igb2YgeW91ciBjaG9pY2UuICBZb3Ugd291bGQgYmUKKwlydW5uaW5nIHRoZSBlbXVsYXRvciBvbiB5b3VyIFBDIG9yIHdvcmtzdGF0aW9uLiAgWW91IHdvdWxkIHVzZQorCXRoZSBjb21tYW5kLCBmb3IgZXhhbXBsZSwKKwkJeDMyNzAgdm0tZXNhLWRvbWFpbi1uYW1lICYKKwlpZiB5b3Ugd2FudGVkIGEgMzI3OCBNb2RlbCA0IHdpdGggNDMgcm93cyBvZiA4MCBjb2x1bW5zLCB0aGUKKwlkZWZhdWx0IG1vZGVsIG51bWJlci4gIFRoZSBkcml2ZXIgZG9lcyBub3QgdGFrZSBhZHZhbnRhZ2Ugb2YKKwlleHRlbmRlZCBhdHRyaWJ1dGVzLgorCisJVGhlIHNjcmVlbiB5b3Ugc2hvdWxkIG5vdyBzZWUgY29udGFpbnMgYSBWTSBsb2dvIHdpdGggaW5wdXQKKwlsaW5lcyBuZWFyIHRoZSBib3R0b20uICBVc2UgVEFCIHRvIG1vdmUgdG8gdGhlIGJvdHRvbSBsaW5lLAorCXByb2JhYmx5IGxhYmVsZWQgIkNPTU1BTkQgID09PT4iLgorCisJMi4gVXNlIHRoZSBESUFMIGNvbW1hbmQgaW5zdGVhZCBvZiB0aGUgTE9HSU4gY29tbWFuZCB0byBjb25uZWN0CisJdG8gb25lIG9mIHRoZSB2aXJ0dWFsIDMyNzBzIHlvdSBkZWZpbmVkIHdpdGggdGhlIERFRiBHUkFGCisJY29tbWFuZHM6CisJCWRpYWwgbXktdm0tZ3Vlc3QtbmFtZQorCisJMy4gWW91IHNob3VsZCBpbW1lZGlhdGVseSBzZWUgYSBsb2dpbiBwcm9tcHQgZnJvbSB5b3VyCisJTGludXgtMzkwIG9wZXJhdGluZyBzeXN0ZW0uICBJZiB0aGF0IGRvZXMgbm90IGhhcHBlbiwgeW91IHdvdWxkCisJc2VlIGluc3RlYWQgdGhlIGxpbmUgIkRJQUxFRCBUTyBteS12bS1ndWVzdC1uYW1lICAgMDYyMCIuCisKKwlUbyB0cm91Ymxlc2hvb3Q6ICBkbyB0aGVzZSB0aGluZ3MuCisKKwlBLiBJcyB0aGUgZHJpdmVyIGxvYWRlZD8gIFVzZSB0aGUgbHNtb2QgY29tbWFuZCAobm8gb3BlcmFuZHMpCisJdG8gZmluZCBvdXQuICBQcm9iYWJseSBpdCBpc24ndC4gIFRyeSBsb2FkaW5nIGl0IG1hbnVhbGx5LCB3aXRoCisJdGhlIGNvbW1hbmQgImluc21vZCB0dWIzMjcwIi4gIERvZXMgdGhhdCBjb21tYW5kIGdpdmUgZXJyb3IKKwltZXNzYWdlcz8gIEhhISAgVGhlcmUncyB5b3VyIHByb2JsZW0uCisKKwlCLiBJcyB0aGUgL2V0Yy9pbml0dGFiIGZpbGUgbW9kaWZpZWQgYXMgaW4gaW5zdGFsbGF0aW9uIHN0ZXAgMworCWFib3ZlPyAgVXNlIHRoZSBncmVwIGNvbW1hbmQgdG8gZmluZCBvdXQ7IGZvciBpbnN0YW5jZSwgaXNzdWUKKwkiZ3JlcCAzMjcwIC9ldGMvaW5pdHRhYiIuICBOb3RoaW5nIGZvdW5kPyAgVGhlcmUncyB5b3VyCisJcHJvYmxlbSEKKworCUMuIEFyZSB0aGUgZGV2aWNlIHNwZWNpYWwgZmlsZXMgY3JlYXRlZCwgYXMgaW4gaW5zdGFsbGF0aW9uCisJc3RlcCAyIGFib3ZlPyAgVXNlIHRoZSBscyAtbCBjb21tYW5kIHRvIGZpbmQgb3V0OyBmb3IgaW5zdGFuY2UsCisJaXNzdWUgImxzIC1sIC9kZXYvMzI3MC90dHk2MjAiLiAgVGhlIG91dHB1dCBzaG91bGQgc3RhcnQgd2l0aCB0aGUKKwlsZXR0ZXIgImMiIG1lYW5pbmcgY2hhcmFjdGVyIGRldmljZSBhbmQgc2hvdWxkIGNvbnRhaW4gIjIyNywgMSIKKwlqdXN0IHRvIHRoZSBsZWZ0IG9mIHRoZSBkZXZpY2UgbmFtZS4gIE5vIHN1Y2ggZmlsZT8gIG5vICJjIj8KKwlXcm9uZyBtYWpvciBudW1iZXI/ICBXcm9uZyBtaW5vciBudW1iZXI/ICBUaGVyZSdzIHlvdXIKKwlwcm9ibGVtIQorCisJRC4gRG8geW91IGdldCB0aGUgbWVzc2FnZQorCQkgIkhDUERJQTA0N0UgbXktdm0tZ3Vlc3QtbmFtZSAwNjIwIGRvZXMgbm90IGV4aXN0Ij8KKwlJZiBzbywgeW91IG11c3QgaXNzdWUgdGhlIGNvbW1hbmQgIkRFRiBHUkFGIDYyMCIgZnJvbSB5b3VyIFZNCisJMzIxNSBjb25zb2xlIGFuZCB0aGVuIHJlYm9vdCB0aGUgc3lzdGVtLgorCisKKworT1BFUkFUSU9OLgorCitUaGUgZHJpdmVyIGRlZmluZXMgdGhyZWUgYXJlYXMgb24gdGhlIDMyNzAgc2NyZWVuOiAgdGhlIGxvZyBhcmVhLCB0aGUKK2lucHV0IGFyZWEsIGFuZCB0aGUgc3RhdHVzIGFyZWEuCisKK1RoZSBsb2cgYXJlYSB0YWtlcyB1cCBhbGwgYnV0IHRoZSBib3R0b20gdHdvIGxpbmVzIG9mIHRoZSBzY3JlZW4uICBUaGUKK2RyaXZlciB3cml0ZXMgdGVybWluYWwgb3V0cHV0IHRvIGl0LCBzdGFydGluZyBhdCB0aGUgdG9wIGxpbmUgYW5kIGdvaW5nCitkb3duLiAgV2hlbiBpdCBmaWxscywgdGhlIHN0YXR1cyBhcmVhIGNoYW5nZXMgZnJvbSAiTGludXggUnVubmluZyIgdG8KKyJMaW51eCBNb3JlLi4uIi4gIEFmdGVyIGEgc2Nyb2xsaW5nIHRpbWVvdXQgb2YgKGRlZmF1bHQpIDUgc2VjLCB0aGUKK3NjcmVlbiBjbGVhcnMgYW5kIG1vcmUgb3V0cHV0IGlzIHdyaXR0ZW4sIGZyb20gdGhlIHRvcCBkb3duLgorCitUaGUgaW5wdXQgYXJlYSBleHRlbmRzIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgc2Vjb25kLXRvLWxhc3Qgc2NyZWVuCitsaW5lIHRvIHRoZSBzdGFydCBvZiB0aGUgc3RhdHVzIGFyZWEuICBZb3UgdHlwZSBjb21tYW5kcyBpbiB0aGlzIGFyZWEKK2FuZCBoaXQgRU5URVIgdG8gZXhlY3V0ZSB0aGVtLgorCitUaGUgc3RhdHVzIGFyZWEgaW5pdGlhbGl6ZXMgdG8gIkxpbnV4IFJ1bm5pbmciIHRvIGdpdmUgeW91IGEgd2FybQorZnV6enkgZmVlbGluZy4gIFdoZW4gdGhlIGxvZyBhcmVhIGZpbGxzIHVwIGFuZCBvdXRwdXQgYXdhaXRzLCBpdAorY2hhbmdlcyB0byAiTGludXggTW9yZS4uLiIuICBBdCB0aGlzIHRpbWUgeW91IGNhbiBkbyBzZXZlcmFsIHRoaW5ncyBvcgorbm90aGluZy4gIElmIHlvdSBkbyBub3RoaW5nLCB0aGUgc2NyZWVuIHdpbGwgY2xlYXIgaW4gKGRlZmF1bHQpIDUgc2VjCithbmQgbW9yZSBvdXRwdXQgd2lsbCBhcHBlYXIuICBZb3UgbWF5IGhpdCBFTlRFUiB3aXRoIG5vdGhpbmcgdHlwZWQgaW4KK3RoZSBpbnB1dCBhcmVhIHRvIHRvZ2dsZSBiZXR3ZWVuICJMaW51eCBNb3JlLi4uIiBhbmQgIkxpbnV4IEhvbGRpbmciLAord2hpY2ggaW5kaWNhdGVzIG5vIHNjcm9sbGluZyB3aWxsIG9jY3VyLiAgKElmIHlvdSBoaXQgRU5URVIgd2l0aCAiTGludXgKK1J1bm5pbmciIGFuZCBub3RoaW5nIHR5cGVkLCB0aGUgYXBwbGljYXRpb24gcmVjZWl2ZXMgYSBuZXdsaW5lLikKKworWW91IG1heSBjaGFuZ2UgdGhlIHNjcm9sbGluZyB0aW1lb3V0IHZhbHVlLiAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcKK2NvbW1hbmQgbGluZToKKwllY2hvIHNjcm9sbHRpbWU9NjAgPiAvcHJvYy90dHkvZHJpdmVyL3R0eTMyNzAKK2NoYW5nZXMgdGhlIHNjcm9sbGluZyB0aW1lb3V0IHZhbHVlIHRvIDYwIHNlYy4gIFNldCBzY3JvbGx0aW1lIHRvIDAgaWYKK3lvdSB3aXNoIHRvIHByZXZlbnQgc2Nyb2xsaW5nIGVudGlyZWx5LgorCitPdGhlciB0aGluZ3MgeW91IG1heSBkbyB3aGVuIHRoZSBsb2cgYXJlYSBmaWxscyB1cCBhcmU6ICBoaXQgUEEyIHRvCitjbGVhciB0aGUgbG9nIGFyZWEgYW5kIHdyaXRlIG1vcmUgb3V0cHV0IHRvIGl0LCBvciBoaXQgQ0xFQVIgdG8gY2xlYXIKK3RoZSBsb2cgYXJlYSBhbmQgdGhlIGlucHV0IGFyZWEgYW5kIHdyaXRlIG1vcmUgb3V0cHV0IHRvIHRoZSBsb2cgYXJlYS4KKworU29tZSBvZiB0aGUgUHJvZ3JhbSBGdW5jdGlvbiAoUEYpIGFuZCBQcm9ncmFtIEF0dGVudGlvbiAoUEEpIGtleXMgYXJlCitwcmVhc3NpZ25lZCBzcGVjaWFsIGZ1bmN0aW9ucy4gIFRoZSBvbmVzIHRoYXQgYXJlIG5vdCB5aWVsZCBhbiBhbGFybQord2hlbiBwcmVzc2VkLgorCitQQTEgY2F1c2VzIGEgU0lHSU5UIHRvIHRoZSBjdXJyZW50bHkgcnVubmluZyBhcHBsaWNhdGlvbi4gIFlvdSBtYXkgZG8KK3RoZSBzYW1lIHRoaW5nIGZyb20gdGhlIGlucHV0IGFyZWEsIGJ5IHR5cGluZyAiXkMiIGFuZCBoaXR0aW5nIEVOVEVSLgorCitQQTIgY2F1c2VzIHRoZSBsb2cgYXJlYSB0byBiZSBjbGVhcmVkLiAgSWYgb3V0cHV0IGF3YWl0cywgaXQgaXMgdGhlbgord3JpdHRlbiB0byB0aGUgbG9nIGFyZWEuCisKK1BGMyBjYXVzZXMgYW4gRU9GIHRvIGJlIHJlY2VpdmVkIGFzIGlucHV0IGJ5IHRoZSBhcHBsaWNhdGlvbi4gIFlvdSBtYXkKK2NhdXNlIGFuIEVPRiBhbHNvIGJ5IHR5cGluZyAiXkQiIGFuZCBoaXR0aW5nIEVOVEVSLgorCitObyBQRiBrZXkgaXMgcHJlYXNzaWduZWQgdG8gY2F1c2UgYSBqb2Igc3VzcGVuc2lvbiwgYnV0IHlvdSBtYXkgY2F1c2UgYQoram9iIHN1c3BlbnNpb24gYnkgdHlwaW5nICJeWiIgYW5kIGhpdHRpbmcgRU5URVIuICBZb3UgbWF5IHdpc2ggdG8KK2Fzc2lnbiB0aGlzIGZ1bmN0aW9uIHRvIGEgUEYga2V5LiAgVG8gbWFrZSBQRjcgY2F1c2Ugam9iIHN1c3BlbnNpb24sCitleGVjdXRlIHRoZSBjb21tYW5kOgorCWVjaG8gcGY3PV56ID4gL3Byb2MvdHR5L2RyaXZlci90dHkzMjcwCisKK0lmIHRoZSBpbnB1dCB5b3UgdHlwZSBkb2VzIG5vdCBlbmQgd2l0aCB0aGUgdHdvIGNoYXJhY3RlcnMgIl5uIiwgdGhlCitkcml2ZXIgYXBwZW5kcyBhIG5ld2xpbmUgY2hhcmFjdGVyIGFuZCBzZW5kcyBpdCB0byB0aGUgdHR5IGRyaXZlcjsKK290aGVyd2lzZSB0aGUgZHJpdmVyIHN0cmlwcyB0aGUgIl5uIiBhbmQgZG9lcyBub3QgYXBwZW5kIGEgbmV3bGluZS4KK1RoZSBJQk0gMzIxNSBkcml2ZXIgYmVoYXZlcyBzaW1pbGFybHkuCisKK1BmMTAgY2F1c2VzIHRoZSBtb3N0IHJlY2VudCBjb21tYW5kIHRvIGJlIHJldHJpZXZlZCBmcm9tIHRoZSB0dWJlJ3MKK2NvbW1hbmQgc3RhY2sgKGRlZmF1bHQgZGVwdGggMjApIGFuZCBkaXNwbGF5ZWQgaW4gdGhlIGlucHV0IGFyZWEuICBZb3UKK21heSBoaXQgUEYxMCBhZ2FpbiBmb3IgdGhlIG5leHQtbW9zdC1yZWNlbnQgY29tbWFuZCwgYW5kIHNvIG9uLiAgQQorY29tbWFuZCBpcyBlbnRlcmVkIGludG8gdGhlIHN0YWNrIG9ubHkgd2hlbiB0aGUgaW5wdXQgYXJlYSBpcyBub3QgbWFkZQoraW52aXNpYmxlIChzdWNoIGFzIGZvciBwYXNzd29yZCBlbnRyeSkgYW5kIGl0IGlzIG5vdCBpZGVudGljYWwgdG8gdGhlCitjdXJyZW50IHRvcCBlbnRyeS4gIFBGMTAgcm90YXRlcyBiYWNrd2FyZCB0aHJvdWdoIHRoZSBjb21tYW5kIHN0YWNrOworUEYxMSByb3RhdGVzIGZvcndhcmQuICBZb3UgbWF5IGFzc2lnbiB0aGUgYmFja3dhcmQgZnVuY3Rpb24gdG8gYW55IFBGCitrZXkgKG9yIFBBIGtleSwgZm9yIHRoYXQgbWF0dGVyKSwgc2F5LCBQQTMsIHdpdGggdGhlIGNvbW1hbmQ6CisJZWNobyAtZSBwYTM9XFwwMzNrID4gL3Byb2MvdHR5L2RyaXZlci90dHkzMjcwCitUaGlzIGFzc2lnbnMgdGhlIHN0cmluZyBFU0MtayB0byBQQTMuICBTaW1pbGFybHksIHRoZSBzdHJpbmcgRVNDLWoKK3BlcmZvcm1zIHRoZSBmb3J3YXJkIGZ1bmN0aW9uLiAgKFJhdGlvbmFsZTogIEluIGJhc2ggd2l0aCB2aS1tb2RlIGxpbmUKK2VkaXRpbmcsIEVTQy1rIGFuZCBFU0MtaiByZXRyaWV2ZSBiYWNrd2FyZCBhbmQgZm9yd2FyZCBoaXN0b3J5LgorU3VnZ2VzdGlvbnMgd2VsY29tZS4pCisKK0lzIGEgc3RhY2sgc2l6ZSBvZiB0d2VudHkgY29tbWFuZHMgbm90IHRvIHlvdXIgbGlraW5nPyAgQ2hhbmdlIGl0IG9uCit0aGUgZmx5LiAgVG8gY2hhbmdlIHRvIHNhdmluZyB0aGUgbGFzdCAxMDAgY29tbWFuZHMsIGV4ZWN1dGUgdGhlCitjb21tYW5kOgorCWVjaG8gcmVjYWxsc2l6ZT0xMDAgPiAvcHJvYy90dHkvZHJpdmVyL3R0eTMyNzAKKworSGF2ZSBhIGNvbW1hbmQgeW91IGlzc3VlIGZyZXF1ZW50bHk/ICBBc3NpZ24gaXQgdG8gYSBQRiBvciBQQSBrZXkhICBVc2UKK3RoZSBjb21tYW5kCisJZWNobyBwZjI0PSJta2RpciBmb29iYXI7IGNkIGZvb2JhciIgPiAvcHJvYy90dHkvZHJpdmVyL3R0eTMyNzAgCit0byBleGVjdXRlIHRoZSBjb21tYW5kcyBta2RpciBmb29iYXIgYW5kIGNkIGZvb2JhciBpbW1lZGlhdGVseSB3aGVuIHlvdQoraGl0IFBGMjQuICBXYW50IHRvIHNlZSB0aGUgY29tbWFuZCBsaW5lIGZpcnN0LCBiZWZvcmUgeW91IGV4ZWN1dGUgaXQ/CitVc2UgdGhlIC1uIG9wdGlvbiBvZiB0aGUgZWNobyBjb21tYW5kOgorCWVjaG8gLW4gcGYyND0ibWtkaXIgZm9vOyBjZCBmb28iID4gL3Byb2MvdHR5L2RyaXZlci90dHkzMjcwCisKKworCitIYXBweSB0ZXN0aW5nISAgSSB3ZWxjb21lIGFueSBhbmQgYWxsIGNvbW1lbnRzIGFib3V0IHRoaXMgZG9jdW1lbnQsIHRoZQorZHJpdmVyLCBldGMgZXRjLgorCitEaWNrIEhpdHQgPHJiaDAwQHV0c2dsb2JhbC5jb20+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3MzOTAvQ29tbW9uSU8gYi9Eb2N1bWVudGF0aW9uL3MzOTAvQ29tbW9uSU8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmUwZjYzZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vczM5MC9Db21tb25JTwpAQCAtMCwwICsxLDEyNSBAQAorUy8zOTAgY29tbW9uIEkvTy1MYXllciAtIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzLCBwcm9jZnMgYW5kIGRlYnVnZnMgZW50cmllcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitDb21tYW5kIGxpbmUgcGFyYW1ldGVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBjY3dfdGltZW91dF9sb2cKKworICBFbmFibGUgbG9nZ2luZyBvZiBkZWJ1ZyBpbmZvcm1hdGlvbiBpbiBjYXNlIG9mIGNjdyBkZXZpY2UgdGltZW91dHMuCisKKyogY2lvX2lnbm9yZSA9IGRldmljZVssZGV2aWNlWywuLl1dCisKKwlkZXZpY2UgOj0ge2FsbCB8IFshXWlwbGRldiB8IFshXWNvbmRldiB8IFshXTxkZXZubz4gfCBbIV08ZGV2bm8+LTxkZXZubz59CisKKyAgVGhlIGdpdmVuIGRldmljZXMgd2lsbCBiZSBpZ25vcmVkIGJ5IHRoZSBjb21tb24gSS9PLWxheWVyOyBubyBkZXRlY3Rpb24KKyAgYW5kIGRldmljZSBzZW5zaW5nIHdpbGwgYmUgZG9uZSBvbiBhbnkgb2YgdGhvc2UgZGV2aWNlcy4gVGhlIHN1YmNoYW5uZWwgdG8gCisgIHdoaWNoIHRoZSBkZXZpY2UgaW4gcXVlc3Rpb24gaXMgYXR0YWNoZWQgd2lsbCBiZSB0cmVhdGVkIGFzIGlmIG5vIGRldmljZSB3YXMKKyAgYXR0YWNoZWQuCisKKyAgQW4gaWdub3JlZCBkZXZpY2UgY2FuIGJlIHVuLWlnbm9yZWQgbGF0ZXI7IHNlZSB0aGUgIi9wcm9jIGVudHJpZXMiLXNlY3Rpb24gZm9yCisgIGRldGFpbHMuCisKKyAgVGhlIGRldmljZXMgbXVzdCBiZSBnaXZlbiBlaXRoZXIgYXMgYnVzIGlkcyAoMC54LmFiY2QpIG9yIGFzIGhleGFkZWNpbWFsCisgIGRldmljZSBudW1iZXJzICgweGFiY2Qgb3IgYWJjZCwgZm9yIDIuNCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KS4gSWYgeW91CisgIGdpdmUgYSBkZXZpY2UgbnVtYmVyIDB4YWJjZCwgaXQgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyAwLjAuYWJjZC4KKworICBZb3UgY2FuIHVzZSB0aGUgJ2FsbCcga2V5d29yZCB0byBpZ25vcmUgYWxsIGRldmljZXMuIFRoZSAnaXBsZGV2JyBhbmQgJ2NvbmRldicKKyAga2V5d29yZHMgY2FuIGJlIHVzZWQgdG8gcmVmZXIgdG8gdGhlIENDVyBiYXNlZCBib290IGRldmljZSBhbmQgQ0NXIGNvbnNvbGUKKyAgZGV2aWNlIHJlc3BlY3RpdmVseSAodGhlc2UgYXJlIHByb2JhYmx5IHVzZWZ1bCBvbmx5IHdoZW4gY29tYmluZWQgd2l0aCB0aGUgJyEnCisgIG9wZXJhdG9yKS4gVGhlICchJyBvcGVyYXRvciB3aWxsIGNhdXNlIHRoZSBJL08tbGF5ZXIgdG8gX25vdF8gaWdub3JlIGEgZGV2aWNlLgorICBUaGUgY29tbWFuZCBsaW5lIGlzIHBhcnNlZCBmcm9tIGxlZnQgdG8gcmlnaHQuCisKKyAgRm9yIGV4YW1wbGUsIAorCWNpb19pZ25vcmU9MC4wLjAwMjMtMC4wLjAwNDIsMC4wLjQ3MTEKKyAgd2lsbCBpZ25vcmUgYWxsIGRldmljZXMgcmFuZ2luZyBmcm9tIDAuMC4wMDIzIHRvIDAuMC4wMDQyIGFuZCB0aGUgZGV2aWNlCisgIDAuMC40NzExLCBpZiBkZXRlY3RlZC4KKyAgQXMgYW5vdGhlciBleGFtcGxlLAorCWNpb19pZ25vcmU9YWxsLCEwLjAuNDcxMSwhMC4wLmZkMDAtMC4wLmZkMDIKKyAgd2lsbCBpZ25vcmUgYWxsIGRldmljZXMgYnV0IDAuMC40NzExLCAwLjAuZmQwMCwgMC4wLmZkMDEsIDAuMC5mZDAyLgorCisgIEJ5IGRlZmF1bHQsIG5vIGRldmljZXMgYXJlIGlnbm9yZWQuCisKKworL3Byb2MgZW50cmllcworLS0tLS0tLS0tLS0tLQorCisqIC9wcm9jL2Npb19pZ25vcmUKKworICBMaXN0cyB0aGUgcmFuZ2VzIG9mIGRldmljZXMgKGJ5IGJ1cyBpZCkgd2hpY2ggYXJlIGlnbm9yZWQgYnkgY29tbW9uIEkvTy4KKworICBZb3UgY2FuIHVuLWlnbm9yZSBjZXJ0YWluIG9yIGFsbCBkZXZpY2VzIGJ5IHBpcGluZyB0byAvcHJvYy9jaW9faWdub3JlLiAKKyAgImZyZWUgYWxsIiB3aWxsIHVuLWlnbm9yZSBhbGwgaWdub3JlZCBkZXZpY2VzLCAKKyAgImZyZWUgPGRldmljZSByYW5nZT4sIDxkZXZpY2UgcmFuZ2U+LCAuLi4iIHdpbGwgdW4taWdub3JlIHRoZSBzcGVjaWZpZWQKKyAgZGV2aWNlcy4KKworICBGb3IgZXhhbXBsZSwgaWYgZGV2aWNlcyAwLjAuMDAyMyB0byAwLjAuMDA0MiBhbmQgMC4wLjQ3MTEgYXJlIGlnbm9yZWQsCisgIC0gZWNobyBmcmVlIDAuMC4wMDMwLTAuMC4wMDMyID4gL3Byb2MvY2lvX2lnbm9yZQorICAgIHdpbGwgdW4taWdub3JlIGRldmljZXMgMC4wLjAwMzAgdG8gMC4wLjAwMzIgYW5kIHdpbGwgbGVhdmUgZGV2aWNlcyAwLjAuMDAyMworICAgIHRvIDAuMC4wMDJmLCAwLjAuMDAzMyB0byAwLjAuMDA0MiBhbmQgMC4wLjQ3MTEgaWdub3JlZDsKKyAgLSBlY2hvIGZyZWUgMC4wLjAwNDEgPiAvcHJvYy9jaW9faWdub3JlIHdpbGwgZnVydGhlcm1vcmUgdW4taWdub3JlIGRldmljZQorICAgIDAuMC4wMDQxOworICAtIGVjaG8gZnJlZSBhbGwgPiAvcHJvYy9jaW9faWdub3JlIHdpbGwgdW4taWdub3JlIGFsbCByZW1haW5pbmcgaWdub3JlZCAKKyAgICBkZXZpY2VzLgorCisgIFdoZW4gYSBkZXZpY2UgaXMgdW4taWdub3JlZCwgZGV2aWNlIHJlY29nbml0aW9uIGFuZCBzZW5zaW5nIGlzIHBlcmZvcm1lZCBhbmQgCisgIHRoZSBkZXZpY2UgZHJpdmVyIHdpbGwgYmUgbm90aWZpZWQgaWYgcG9zc2libGUsIHNvIHRoZSBkZXZpY2Ugd2lsbCBiZWNvbWUKKyAgYXZhaWxhYmxlIHRvIHRoZSBzeXN0ZW0uIE5vdGUgdGhhdCB1bi1pZ25vcmluZyBpcyBwZXJmb3JtZWQgYXN5bmNocm9ub3VzbHkuCisKKyAgWW91IGNhbiBhbHNvIGFkZCByYW5nZXMgb2YgZGV2aWNlcyB0byBiZSBpZ25vcmVkIGJ5IHBpcGluZyB0byAKKyAgL3Byb2MvY2lvX2lnbm9yZTsgImFkZCA8ZGV2aWNlIHJhbmdlPiwgPGRldmljZSByYW5nZT4sIC4uLiIgd2lsbCBpZ25vcmUgdGhlCisgIHNwZWNpZmllZCBkZXZpY2VzLgorCisgIE5vdGU6IFdoaWxlIGFscmVhZHkga25vd24gZGV2aWNlcyBjYW4gYmUgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgZGV2aWNlcyB0byBiZQorICAgICAgICBpZ25vcmVkLCB0aGVyZSB3aWxsIGJlIG5vIGVmZmVjdCBvbiB0aGVuLiBIb3dldmVyLCBpZiBzdWNoIGEgZGV2aWNlCisJZGlzYXBwZWFycyBhbmQgdGhlbiByZWFwcGVhcnMsIGl0IHdpbGwgdGhlbiBiZSBpZ25vcmVkLiBUbyBtYWtlCisJa25vd24gZGV2aWNlcyBnbyBhd2F5LCB5b3UgbmVlZCB0aGUgInB1cmdlIiBjb21tYW5kIChzZWUgYmVsb3cpLgorCisgIEZvciBleGFtcGxlLAorCSJlY2hvIGFkZCAwLjAuYTAwMC0wLjAuYWNjYywgMC4wLmFmMDAtMC4wLmFmZmYgPiAvcHJvYy9jaW9faWdub3JlIgorICB3aWxsIGFkZCAwLjAuYTAwMC0wLjAuYWNjYyBhbmQgMC4wLmFmMDAtMC4wLmFmZmYgdG8gdGhlIGxpc3Qgb2YgaWdub3JlZAorICBkZXZpY2VzLgorCisgIFlvdSBjYW4gcmVtb3ZlIGFscmVhZHkga25vd24gYnV0IG5vdyBpZ25vcmVkIGRldmljZXMgdmlhCisJImVjaG8gcHVyZ2UgPiAvcHJvYy9jaW9faWdub3JlIgorICBBbGwgZGV2aWNlcyBpZ25vcmVkIGJ1dCBzdGlsbCByZWdpc3RlcmVkIGFuZCBub3Qgb25saW5lICg9IG5vdCBpbiB1c2UpCisgIHdpbGwgYmUgZGVyZWdpc3RlcmVkIGFuZCB0aHVzIHJlbW92ZWQgZnJvbSB0aGUgc3lzdGVtLgorCisgIFRoZSBkZXZpY2VzIGNhbiBiZSBzcGVjaWZpZWQgZWl0aGVyIGJ5IGJ1cyBpZCAoMC54LmFiY2QpIG9yLCBmb3IgMi40IGJhY2t3YXJkCisgIGNvbXBhdGliaWxpdHksIGJ5IHRoZSBkZXZpY2UgbnVtYmVyIGluIGhleGFkZWNpbWFsICgweGFiY2Qgb3IgYWJjZCkuIERldmljZQorICBudW1iZXJzIGdpdmVuIGFzIDB4YWJjZCB3aWxsIGJlIGludGVycHJldGVkIGFzIDAuMC5hYmNkLgorCisqIC9wcm9jL2Npb19zZXR0bGUKKworICBBIHdyaXRlIHJlcXVlc3QgdG8gdGhpcyBmaWxlIGlzIGJsb2NrZWQgdW50aWwgYWxsIHF1ZXVlZCBjaW8gYWN0aW9ucyBhcmUKKyAgaGFuZGxlZC4gVGhpcyB3aWxsIGFsbG93IHVzZXJzcGFjZSB0byB3YWl0IGZvciBwZW5kaW5nIHdvcmsgYWZmZWN0aW5nCisgIGRldmljZSBhdmFpbGFiaWxpdHkgYWZ0ZXIgY2hhbmdpbmcgY2lvX2lnbm9yZSBvciB0aGUgaGFyZHdhcmUgY29uZmlndXJhdGlvbi4KKworKiBGb3Igc29tZSBvZiB0aGUgaW5mb3JtYXRpb24gcHJlc2VudCBpbiB0aGUgL3Byb2MgZmlsZXN5c3RlbSBpbiAyLjQgKG5hbWVseSwKKyAgL3Byb2Mvc3ViY2hhbm5lbHMgYW5kIC9wcm9jL2NocGlkcyksIHNlZSBkcml2ZXItbW9kZWwudHh0LgorICBJbmZvcm1hdGlvbiBmb3JtZXJseSBpbiAvcHJvYy9pcnFfY291bnQgaXMgbm93IGluIC9wcm9jL2ludGVycnVwdHMuCisKKworZGVidWdmcyBlbnRyaWVzCistLS0tLS0tLS0tLS0tLS0KKworKiAvc3lzL2tlcm5lbC9kZWJ1Zy9zMzkwZGJmL2Npb18qLyAoUy8zOTAgZGVidWcgZmVhdHVyZSkKKworICBTb21lIHZpZXdzIGdlbmVyYXRlZCBieSB0aGUgZGVidWcgZmVhdHVyZSB0byBob2xkIHZhcmlvdXMgZGVidWcgb3V0cHV0cy4KKworICAtIC9zeXMva2VybmVsL2RlYnVnL3MzOTBkYmYvY2lvX2Nydy9zcHJpbnRmCisgICAgTWVzc2FnZXMgZnJvbSB0aGUgcHJvY2Vzc2luZyBvZiBwZW5kaW5nIGNoYW5uZWwgcmVwb3J0IHdvcmRzIChtYWNoaW5lIGNoZWNrCisgICAgaGFuZGxpbmcpLgorCisgIC0gL3N5cy9rZXJuZWwvZGVidWcvczM5MGRiZi9jaW9fbXNnL3NwcmludGYKKyAgICBWYXJpb3VzIGRlYnVnIG1lc3NhZ2VzIGZyb20gdGhlIGNvbW1vbiBJL08tbGF5ZXIuCisKKyAgLSAvc3lzL2tlcm5lbC9kZWJ1Zy9zMzkwZGJmL2Npb190cmFjZS9oZXhfYXNjaWkKKyAgICBMb2dzIHRoZSBjYWxsaW5nIG9mIGZ1bmN0aW9ucyBpbiB0aGUgY29tbW9uIEkvTy1sYXllciBhbmQsIGlmIGFwcGxpY2FibGUsIAorICAgIHdoaWNoIHN1YmNoYW5uZWwgdGhleSB3ZXJlIGNhbGxlZCBmb3IsIGFzIHdlbGwgYXMgZHVtcHMgb2Ygc29tZSBkYXRhCisgICAgc3RydWN0dXJlcyAobGlrZSBpcmIgaW4gYW4gZXJyb3IgY2FzZSkuCisKKyAgVGhlIGxldmVsIG9mIGxvZ2dpbmcgY2FuIGJlIGNoYW5nZWQgdG8gYmUgbW9yZSBvciBsZXNzIHZlcmJvc2UgYnkgcGlwaW5nIHRvIAorICAvc3lzL2tlcm5lbC9kZWJ1Zy9zMzkwZGJmL2Npb18qL2xldmVsIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgNjsgc2VlIHRoZQorICBkb2N1bWVudGF0aW9uIG9uIHRoZSBTLzM5MCBkZWJ1ZyBmZWF0dXJlIChEb2N1bWVudGF0aW9uL3MzOTAvczM5MGRiZi50eHQpCisgIGZvciBkZXRhaWxzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zMzkwL0RBU0QgYi9Eb2N1bWVudGF0aW9uL3MzOTAvREFTRApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTYzZjFlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zMzkwL0RBU0QKQEAgLTAsMCArMSw3MyBAQAorREFTRCBkZXZpY2UgZHJpdmVyCisKK1MvMzkwJ3MgZGlzayBkZXZpY2VzIChEQVNEcykgYXJlIG1hbmFnZWQgYnkgTGludXggdmlhIHRoZSBEQVNEIGRldmljZQorZHJpdmVyLiBJdCBpcyB2YWxpZCBmb3IgYWxsIHR5cGVzIG9mIERBU0RzIGFuZCByZXByZXNlbnRzIHRoZW0gdG8KK0xpbnV4IGFzIGJsb2NrIGRldmljZXMsIG5hbWVseSAiZGQiLiBDdXJyZW50bHkgdGhlIERBU0QgZHJpdmVyIHVzZXMgYQorc2luZ2xlIG1ham9yIG51bWJlciAoMjU0KSBhbmQgNCBtaW5vciBudW1iZXJzIHBlciB2b2x1bWUgKDEgZm9yIHRoZQorcGh5c2ljYWwgdm9sdW1lIGFuZCAzIGZvciBwYXJ0aXRpb25zKS4gV2l0aCByZXNwZWN0IHRvIHBhcnRpdGlvbnMgc2VlCitiZWxvdy4gVGh1cyB5b3UgbWF5IGhhdmUgdXAgdG8gNjQgREFTRCBkZXZpY2VzIGluIHlvdXIgc3lzdGVtLgorCitUaGUga2VybmVsIHBhcmFtZXRlciAnZGFzZD1mcm9tLXRvLC4uLicgbWF5IGJlIGlzc3VlZCBhcmJpdHJhcnkgdGltZXMKK2luIHRoZSBrZXJuZWwncyBwYXJhbWV0ZXIgbGluZSBvciBub3QgYXQgYWxsLiBUaGUgJ2Zyb20nIGFuZCAndG8nCitwYXJhbWV0ZXJzIGFyZSB0byBiZSBnaXZlbiBpbiBoZXhhZGVjaW1hbCBub3RhdGlvbiB3aXRob3V0IGEgbGVhZGluZworMHguCitJZiB5b3Ugc3VwcGx5IGtlcm5lbCBwYXJhbWV0ZXJzIHRoZSBkaWZmZXJlbnQgaW5zdGFuY2VzIGFyZSBwcm9jZXNzZWQKK2luIG9yZGVyIG9mIGFwcGVhcmFuY2UgYW5kIGEgbWlub3IgbnVtYmVyIGlzIHJlc2VydmVkIGZvciBhbnkgZGV2aWNlCitjb3ZlcmVkIGJ5IHRoZSBzdXBwbGllZCByYW5nZSB1cCB0byA2NCB2b2x1bWVzLiBBZGRpdGlvbmFsIERBU0RzIGFyZQoraWdub3JlZC4gSWYgeW91IGRvIG5vdCBzdXBwbHkgdGhlICdkYXNkPScga2VybmVsIHBhcmFtZXRlciBhdCBhbGwsIHRoZSAKK0RBU0QgZHJpdmVyIHJlZ2lzdGVycyBhbGwgc3VwcG9ydGVkIERBU0RzIG9mIHlvdXIgc3lzdGVtIHRvIGEgbWlub3IKK251bWJlciBpbiBhc2NlbmRpbmcgb3JkZXIgb2YgdGhlIHN1YmNoYW5uZWwgbnVtYmVyLgorCitUaGUgZHJpdmVyIGN1cnJlbnRseSBzdXBwb3J0cyBFQ0tELWRldmljZXMgYW5kIHRoZXJlIGFyZSBzdHVicyBmb3IKK3N1cHBvcnQgb2YgdGhlIEZCQSBhbmQgQ0tEIGFyY2hpdGVjdHVyZXMuIEZvciB0aGUgRkJBIGFyY2hpdGVjdHVyZQorb25seSBzb21lIHNtYXJ0IGRhdGEgc3RydWN0dXJlcyBhcmUgbWlzc2luZyB0byBtYWtlIHRoZSBzdXBwb3J0Citjb21wbGV0ZS4gCitXZSBwZXJmb3JtZWQgb3VyIHRlc3Rpbmcgb24gMzM4MCBhbmQgMzM5MCB0eXBlIGRpc2tzIG9mIGRpZmZlcmVudAorc2l6ZXMsIHVuZGVyIFZNIGFuZCBvbiB0aGUgYmFyZSBoYXJkd2FyZSAoTFBBUiksIHVzaW5nIGludGVybmFsIGRpc2tzCitvZiB0aGUgbXVsdGlwcmlzZSBhcyB3ZWxsIGFzIGEgUkFNQUMgdmlydHVhbCBhcnJheS4gRGlza3MgZXhwb3J0ZWQgYnkKK2FuIEVudGVycHJpc2UgU3RvcmFnZSBTZXJ2ZXIgKFNlYXNjYXBlKSBzaG91bGQgd29yayBmaW5lIGFzIHdlbGwuCisKK1dlIGN1cnJlbnRseSBpbXBsZW1lbnQgb25lIHBhcnRpdGlvbiBwZXIgdm9sdW1lLCB3aGljaCBpcyB0aGUgd2hvbGUKK3ZvbHVtZSwgc2tpcHBpbmcgdGhlIGZpcnN0IGJsb2NrcyB1cCB0byB0aGUgdm9sdW1lIGxhYmVsLiBUaGVzZSBhcmUKK3Jlc2VydmVkIGZvciBJUEwgcmVjb3JkcyBhbmQgSUJNJ3Mgdm9sdW1lIGxhYmVsIHRvIGFzc3VyZQorYWNjZXNzaWJpbGl0eSBvZiB0aGUgREFTRCBmcm9tIG90aGVyIE9Tcy4gSW4gYSBsYXRlciBzdGFnZSB3ZSB3aWxsCitwcm92aWRlIHN1cHBvcnQgb2YgcGFydGl0aW9ucywgbWF5YmUgVlRPQyBvcmllbnRlZCBvciB1c2luZyBhIGtpbmQgb2YKK3BhcnRpdGlvbiB0YWJsZSBpbiB0aGUgbGFiZWwgcmVjb3JkLgorCitVU0FHRQorCistTG93LWxldmVsIGZvcm1hdCAoP0NLRCBvbmx5KQorRm9yIHVzaW5nIGFuIEVDS0QtREFTRCBhcyBhIExpbnV4IGhhcmRkaXNrIHlvdSBoYXZlIHRvIGxvdy1sZXZlbAorZm9ybWF0IHRoZSB0cmFja3MgYnkgaXNzdWluZyB0aGUgQkxLREFTREZPUk1BVC1pb2N0bCBvbiB0aGF0CitkZXZpY2UuIFRoaXMgd2lsbCBlcmFzZSBhbnkgZGF0YSBvbiB0aGF0IHZvbHVtZSBpbmNsdWRpbmcgSUJNIHZvbHVtZQorbGFiZWxzLCBWVE9DcyBldGMuIFRoZSBpb2N0bCBtYXkgdGFrZSBhICdzdHJ1Y3QgZm9ybWF0X2RhdGEgKicgb3IKKydOVUxMJyBhcyBhbiBhcmd1bWVudC4gIAordHlwZWRlZiBzdHJ1Y3QgeworCWludCBzdGFydF91bml0OworCWludCBzdG9wX3VuaXQ7CisJaW50IGJsa3NpemU7Cit9IGZvcm1hdF9kYXRhX3Q7CitXaGVuIGEgTlVMTCBhcmd1bWVudCBpcyBwYXNzZWQgdG8gdGhlIEJMS0RBU0RGT1JNQVQgaW9jdGwgdGhlIHdob2xlCitkaXNrIGlzIGZvcm1hdHRlZCB0byBhIGJsb2Nrc2l6ZSBvZiAxMDI0IGJ5dGVzLiBPdGhlcndpc2Ugc3RhcnRfdW5pdAorYW5kIHN0b3BfdW5pdCBhcmUgdGhlIGZpcnN0IGFuZCBsYXN0IHRyYWNrIHRvIGJlIGZvcm1hdHRlZC4gSWYKK3N0b3BfdW5pdCBpcyAtMSBpdCBpbXBsaWVzIHRoYXQgdGhlIERBU0QgaXMgZm9ybWF0dGVkIGZyb20gc3RhcnRfdW5pdAordXAgdG8gdGhlIGxhc3QgdHJhY2suIGJsa3NpemUgY2FuIGJlIGFueSBwb3dlciBvZiB0d28gYmV0d2VlbiA1MTIgYW5kCis0MDk2LiBXZSByZWNvbW1lbmQgbm8gYmxrc2l6ZSBsb3dlciB0aGFuIDEwMjQgYmVjYXVzZSB0aGUgZXh0MmZzIHVzZXMKKzFrQiBibG9ja3MgYW55d2F5IGFuZCB5b3UgZ2FpbiBhcHByb3guIDUwJSBvZiBjYXBhY2l0eSBpbmNyZWFzaW5nIHlvdXIKK2Jsa3NpemUgZnJvbSA1MTIgYnl0ZSB0byAxa0IuCisKKy1NYWtlIGEgZmlsZXN5c3RlbQorVGhlbiB5b3UgY2FuIG1rPz9mcyB0aGUgZmlsZXN5c3RlbSBvZiB5b3VyIGNob2ljZSBvbiB0aGF0IHZvbHVtZSBvcgorcGFydGl0aW9uLiBGb3IgcmVhc29ucyBvZiBzYW5pdHkgeW91IHNob3VsZCBidWlsZCB5b3VyIGZpbGVzeXN0ZW0gb24KK3RoZSBwYXJ0aXRpb24gL2Rldi9kZD8xIGluc3RlYWQgb2YgdGhlIHdob2xlIHZvbHVtZS4gWW91IG9ubHkgbG9zZSAza0IJCitidXQgbWF5IGJlIHN1cmUgdGhhdCB5b3UgY2FuIHJldXNlIHlvdXIgZGF0YSBhZnRlciBpbnRyb2R1Y3Rpb24gb2YgYQorcmVhbCBwYXJ0aXRpb24gdGFibGUuCisKK0JVR1M6CistIFBlcmZvcm1hbmNlIHNvbWV0aW1lcyBpcyByYXRoZXIgbG93IGJlY2F1c2Ugd2UgZG9uJ3QgZnVsbHkgZXhwbG9pdCBjbHVzdGVyaW5nCisKK1RPRE8tTGlzdDoKKy0gQWRkIElCTSdTIERpc2sgbGF5b3V0IHRvIGdlbmhkCistIEVuaGFuY2UgZHJpdmVyIHRvIHVzZSBtb3JlIHRoYW4gb25lIG1ham9yIG51bWJlcgorLSBFbmFibGUgdXNhZ2UgYXMgYSBtb2R1bGUKKy0gU3VwcG9ydCBDYWNoZSBmYXN0IHdyaXRlIGFuZCBEQVNEIGZhc3Qgd3JpdGUgKEVDS0QpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3MzOTAvRGVidWdnaW5nMzkwLnR4dCBiL0RvY3VtZW50YXRpb24vczM5MC9EZWJ1Z2dpbmczOTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkZjhiYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3MzOTAvRGVidWdnaW5nMzkwLnR4dApAQCAtMCwwICsxLDIxNDIgQEAKKworCQkgIERlYnVnZ2luZyBvbiBMaW51eCBmb3Igcy8zOTAgJiB6L0FyY2hpdGVjdHVyZQorCQkJCSAgICAgICBieQorCSAgRGVuaXMgSm9zZXBoIEJhcnJvdyAoZGpiYXJyb3dAZGUuaWJtLmNvbSxiYXJyb3dfZGpAeWFob28uY29tKQorICAgIENvcHlyaWdodCAoQykgMjAwMC0yMDAxIElCTSBEZXV0c2NobGFuZCBFbnR3aWNrbHVuZyBHbWJILCBJQk0gQ29ycG9yYXRpb24KKwkJCUJlc3Qgdmlld2VkIHdpdGggZml4ZWQgd2lkdGggZm9udHMKKworT3ZlcnZpZXcgb2YgRG9jdW1lbnQ6Cis9PT09PT09PT09PT09PT09PT09PT0KK1RoaXMgZG9jdW1lbnQgaXMgaW50ZW5kZWQgdG8gZ2l2ZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgaG93IHRvIGRlYnVnIExpbnV4IGZvcgorcy8zOTAgYW5kIHovQXJjaGl0ZWN0dXJlLiBJdCBpcyBub3QgaW50ZW5kZWQgYXMgYSBjb21wbGV0ZSByZWZlcmVuY2UgYW5kIG5vdCBhCit0dXRvcmlhbCBvbiB0aGUgZnVuZGFtZW50YWxzIG9mIEMgJiBhc3NlbWJseS4gSXQgZG9lc24ndCBnbyBpbnRvCiszOTAgSU8gaW4gYW55IGRldGFpbC4gSXQgaXMgaW50ZW5kZWQgdG8gY29tcGxlbWVudCB0aGUgZG9jdW1lbnRzIGluIHRoZQorcmVmZXJlbmNlIHNlY3Rpb24gYmVsb3cgJiBhbnkgb3RoZXIgd29ydGh3aGlsZSByZWZlcmVuY2VzIHlvdSBnZXQuCisKK0l0IGlzIGludGVuZGVkIGxpa2UgdGhlIEVudGVycHJpc2UgU3lzdGVtcyBBcmNoaXRlY3R1cmUvMzkwIFJlZmVyZW5jZSBTdW1tYXJ5Cit0byBiZSBwcmludGVkIG91dCAmIHVzZWQgYXMgYSBxdWljayBjaGVhdCBzaGVldCBzZWxmIGhlbHAgc3R5bGUgcmVmZXJlbmNlIHdoZW4KK3Byb2JsZW1zIG9jY3VyLgorCitDb250ZW50cworPT09PT09PT0KK1JlZ2lzdGVyIFNldAorQWRkcmVzcyBTcGFjZXMgb24gSW50ZWwgTGludXgKK0FkZHJlc3MgU3BhY2VzIG9uIExpbnV4IGZvciBzLzM5MCAmIHovQXJjaGl0ZWN0dXJlCitUaGUgTGludXggZm9yIHMvMzkwICYgei9BcmNoaXRlY3R1cmUgS2VybmVsIFRhc2sgU3RydWN0dXJlCitSZWdpc3RlciBVc2FnZSAmIFN0YWNrZnJhbWVzIG9uIExpbnV4IGZvciBzLzM5MCAmIHovQXJjaGl0ZWN0dXJlCitBIHNhbXBsZSBwcm9ncmFtIHdpdGggY29tbWVudHMKK0NvbXBpbGluZyBwcm9ncmFtcyBmb3IgZGVidWdnaW5nIG9uIExpbnV4IGZvciBzLzM5MCAmIHovQXJjaGl0ZWN0dXJlCitEZWJ1Z2dpbmcgdW5kZXIgVk0KK3MvMzkwICYgei9BcmNoaXRlY3R1cmUgSU8gT3ZlcnZpZXcKK0RlYnVnZ2luZyBJTyBvbiBzLzM5MCAmIHovQXJjaGl0ZWN0dXJlIHVuZGVyIFZNCitHREIgb24gcy8zOTAgJiB6L0FyY2hpdGVjdHVyZQorU3RhY2sgY2hhaW5pbmcgaW4gZ2RiIGJ5IGhhbmQKK0V4YW1pbmluZyBjb3JlIGR1bXBzCitsZGQKK0RlYnVnZ2luZyBtb2R1bGVzCitUaGUgcHJvYyBmaWxlIHN5c3RlbQorU3lzUnEKK1JlZmVyZW5jZXMKK1NwZWNpYWwgVGhhbmtzCisKK1JlZ2lzdGVyIFNldAorPT09PT09PT09PT09CitUaGUgY3VycmVudCBhcmNoaXRlY3R1cmVzIGhhdmUgdGhlIGZvbGxvd2luZyByZWdpc3RlcnMuCisgCisxNiBHZW5lcmFsIHByb3Bvc2UgcmVnaXN0ZXJzLCAzMiBiaXQgb24gcy8zOTAgYW5kIDY0IGJpdCBvbiB6L0FyY2hpdGVjdHVyZSwKK3IwLXIxNSAob3IgZ3ByMC1ncHIxNSksIHVzZWQgZm9yIGFyaXRobWV0aWMgYW5kIGFkZHJlc3NpbmcuCisKKzE2IENvbnRyb2wgcmVnaXN0ZXJzLCAzMiBiaXQgb24gcy8zOTAgYW5kIDY0IGJpdCBvbiB6L0FyY2hpdGVjdHVyZSwgY3IwLWNyMTUsCitrZXJuZWwgdXNhZ2Ugb25seSwgdXNlZCBmb3IgbWVtb3J5IG1hbmFnZW1lbnQsIGludGVycnVwdCBjb250cm9sLCBkZWJ1Z2dpbmcKK2NvbnRyb2wgZXRjLgorCisxNiBBY2Nlc3MgcmVnaXN0ZXJzIChhcjAtYXIxNSksIDMyIGJpdCBvbiBib3RoIHMvMzkwIGFuZCB6L0FyY2hpdGVjdHVyZSwKK25vcm1hbGx5IG5vdCB1c2VkIGJ5IG5vcm1hbCBwcm9ncmFtcyBidXQgcG90ZW50aWFsbHkgY291bGQgYmUgdXNlZCBhcwordGVtcG9yYXJ5IHN0b3JhZ2UuIFRoZXNlIHJlZ2lzdGVycyBoYXZlIGEgMToxIGFzc29jaWF0aW9uIHdpdGggZ2VuZXJhbAorcHVycG9zZSByZWdpc3RlcnMgYW5kIGFyZSBkZXNpZ25lZCB0byBiZSB1c2VkIGluIHRoZSBzby1jYWxsZWQgYWNjZXNzCityZWdpc3RlciBtb2RlIHRvIHNlbGVjdCBkaWZmZXJlbnQgYWRkcmVzcyBzcGFjZXMuCitBY2Nlc3MgcmVnaXN0ZXIgMCAoYW5kIGFjY2VzcyByZWdpc3RlciAxIG9uIHovQXJjaGl0ZWN0dXJlLCB3aGljaCBuZWVkcyBhCis2NCBiaXQgcG9pbnRlcikgaXMgY3VycmVudGx5IHVzZWQgYnkgdGhlIHB0aHJlYWQgbGlicmFyeSBhcyBhIHBvaW50ZXIgdG8KK3RoZSBjdXJyZW50IHJ1bm5pbmcgdGhyZWFkcyBwcml2YXRlIGFyZWEuCisKKzE2IDY0IGJpdCBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMgKGZwMC1mcDE1ICkgSUVFRSAmIEhGUCBmbG9hdGluZyAKK3BvaW50IGZvcm1hdCBjb21wbGlhbnQgb24gRzUgdXB3YXJkcyAmIGEgRmxvYXRpbmcgcG9pbnQgY29udHJvbCByZWcgKEZQQykgCis0ICA2NCBiaXQgcmVnaXN0ZXJzIChmcDAsZnAyLGZwNCAmIGZwNikgSEZQIG9ubHkgb24gb2xkZXIgbWFjaGluZXMuCitOb3RlOgorTGludXggKGN1cnJlbnRseSkgYWx3YXlzIHVzZXMgSUVFRSAmIGVtdWxhdGVzIEc1IElFRUUgZm9ybWF0IG9uIG9sZGVyIG1hY2hpbmVzLAorKCBwcm92aWRlZCB0aGUga2VybmVsIGlzIGNvbmZpZ3VyZWQgZm9yIHRoaXMgKS4KKworCitUaGUgUFNXIGlzIHRoZSBtb3N0IGltcG9ydGFudCByZWdpc3RlciBvbiB0aGUgbWFjaGluZSBpdAoraXMgNjQgYml0IG9uIHMvMzkwICYgMTI4IGJpdCBvbiB6L0FyY2hpdGVjdHVyZSAmIHNlcnZlcyB0aGUgcm9sZXMgb2YgCithIHByb2dyYW0gY291bnRlciAocGMpLCBjb25kaXRpb24gY29kZSByZWdpc3RlcixtZW1vcnkgc3BhY2UgZGVzaWduYXRvci4KK0luIElCTSBzdGFuZGFyZCBub3RhdGlvbiBJIGFtIGNvdW50aW5nIGJpdCAwIGFzIHRoZSBNU0IuCitJdCBoYXMgc2V2ZXJhbCBhZHZhbnRhZ2VzIG92ZXIgYSBub3JtYWwgcHJvZ3JhbSBjb3VudGVyCitpbiB0aGF0IHlvdSBjYW4gY2hhbmdlIGFkZHJlc3MgdHJhbnNsYXRpb24gJiBwcm9ncmFtIGNvdW50ZXIgCitpbiBhIHNpbmdsZSBpbnN0cnVjdGlvbi4gVG8gY2hhbmdlIGFkZHJlc3MgdHJhbnNsYXRpb24sCitlLmcuIHN3aXRjaGluZyBhZGRyZXNzIHRyYW5zbGF0aW9uIG9mZiByZXF1aXJlcyB0aGF0IHlvdQoraGF2ZSBhIGxvZ2ljYWw9cGh5c2ljYWwgbWFwcGluZyBmb3IgdGhlIGFkZHJlc3MgeW91IGFyZQorY3VycmVudGx5IHJ1bm5pbmcgYXQuCisKKyAgICAgIEJpdCAgICAgICAgICAgVmFsdWUKK3MvMzkwIHovQXJjaGl0ZWN0dXJlCiswICAgICAgIDAgICAgIFJlc2VydmVkICggbXVzdCBiZSAwICkgb3RoZXJ3aXNlIHNwZWNpZmljYXRpb24gZXhjZXB0aW9uIG9jY3Vycy4KKworMSAgICAgICAxICAgICBQcm9ncmFtIEV2ZW50IFJlY29yZGluZyAxIFBFUiBlbmFibGVkLCAKKwkgICAgICBQRVIgaXMgdXNlZCB0byBmYWNpbGl0YXRlIGRlYnVnZ2luZyBlLmcuIHNpbmdsZSBzdGVwcGluZy4KKworMi00ICAgIDItNCAgICBSZXNlcnZlZCAoIG11c3QgYmUgMCApLiAKKworNSAgICAgICA1ICAgICBEeW5hbWljIGFkZHJlc3MgdHJhbnNsYXRpb24gMT1EQVQgb24uCisKKzYgICAgICAgNiAgICAgSW5wdXQvT3V0cHV0IGludGVycnVwdCBNYXNrCisKKzcJNyAgICAgRXh0ZXJuYWwgaW50ZXJydXB0IE1hc2sgdXNlZCBwcmltYXJpbHkgZm9yIGludGVycHJvY2Vzc29yCisJICAgICAgc2lnbmFsbGluZyBhbmQgY2xvY2sgaW50ZXJydXB0cy4KKworOC0xMSAgOC0xMSAgICBQU1cgS2V5IHVzZWQgZm9yIGNvbXBsZXggbWVtb3J5IHByb3RlY3Rpb24gbWVjaGFuaXNtCisJICAgICAgKG5vdCB1c2VkIHVuZGVyIGxpbnV4KQorCisxMiAgICAgIDEyICAgIDEgb24gcy8zOTAgMCBvbiB6L0FyY2hpdGVjdHVyZQorCisxMyAgICAgIDEzICAgIE1hY2hpbmUgQ2hlY2sgTWFzayAxPWVuYWJsZSBtYWNoaW5lIGNoZWNrIGludGVycnVwdHMKKworMTQJMTQgICAgV2FpdCBTdGF0ZS4gU2V0IHRoaXMgdG8gMSB0byBzdG9wIHRoZSBwcm9jZXNzb3IgZXhjZXB0IGZvcgorCSAgICAgIGludGVycnVwdHMgYW5kIGdpdmUgIHRpbWUgdG8gb3RoZXIgTFBBUlMuIFVzZWQgaW4gQ1BVIGlkbGUgaW4KKwkgICAgICB0aGUga2VybmVsIHRvIGluY3JlYXNlIG92ZXJhbGwgdXNhZ2Ugb2YgcHJvY2Vzc29yIHJlc291cmNlcy4KKworMTUgICAgICAxNSAgICBQcm9ibGVtIHN0YXRlICggaWYgc2V0IHRvIDEgY2VydGFpbiBpbnN0cnVjdGlvbnMgYXJlIGRpc2FibGVkICkKKwkgICAgICBhbGwgbGludXggdXNlciBwcm9ncmFtcyBydW4gd2l0aCB0aGlzIGJpdCAxIAorCSAgICAgICggdXNlZnVsIGluZm8gZm9yIGRlYnVnZ2luZyB1bmRlciBWTSApLgorCisxNi0xNyAxNi0xNyAgIEFkZHJlc3MgU3BhY2UgQ29udHJvbAorCisJICAgICAgMDAgUHJpbWFyeSBTcGFjZSBNb2RlOgorCSAgICAgIFRoZSByZWdpc3RlciBDUjEgY29udGFpbnMgdGhlIHByaW1hcnkgYWRkcmVzcy1zcGFjZSBjb250cm9sIGVsZS0KKwkgICAgICBtZW50IChQQVNDRSksIHdoaWNoIHBvaW50cyB0byB0aGUgcHJpbWFyeSBzcGFjZSByZWdpb24vc2VnbWVudAorCSAgICAgIHRhYmxlIG9yaWdpbi4KKworCSAgICAgIDAxIEFjY2VzcyByZWdpc3RlciBtb2RlCisKKwkgICAgICAxMCBTZWNvbmRhcnkgU3BhY2UgTW9kZToKKwkgICAgICBUaGUgcmVnaXN0ZXIgQ1I3IGNvbnRhaW5zIHRoZSBzZWNvbmRhcnkgYWRkcmVzcy1zcGFjZSBjb250cm9sCisJICAgICAgZWxlbWVudCAoU0FTQ0UpLCB3aGljaCBwb2ludHMgdG8gdGhlIHNlY29uZGFyeSBzcGFjZSByZWdpb24gb3IKKwkgICAgICBzZWdtZW50IHRhYmxlIG9yaWdpbi4KKworCSAgICAgIDExIEhvbWUgU3BhY2UgTW9kZToKKwkgICAgICBUaGUgcmVnaXN0ZXIgQ1IxMyBjb250YWlucyB0aGUgaG9tZSBzcGFjZSBhZGRyZXNzLXNwYWNlIGNvbnRyb2wKKwkgICAgICBlbGVtZW50IChIQVNDRSksIHdoaWNoIHBvaW50cyB0byB0aGUgaG9tZSBzcGFjZSByZWdpb24vc2VnbWVudAorCSAgICAgIHRhYmxlIG9yaWdpbi4KKworCSAgICAgIFNlZSAiQWRkcmVzcyBTcGFjZXMgb24gTGludXggZm9yIHMvMzkwICYgei9BcmNoaXRlY3R1cmUiIGJlbG93CisJICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYWRkcmVzcyBzcGFjZSB1c2FnZSBpbiBMaW51eC4KKworMTgtMTkgMTgtMTkgICBDb25kaXRpb24gY29kZXMgKENDKQorCisyMCAgICAyMCAgICAgIEZpeGVkIHBvaW50IG92ZXJmbG93IG1hc2sgaWYgMT1GUFUgZXhjZXB0aW9ucyBmb3IgdGhpcyBldmVudCAKKyAgICAgICAgICAgICAgb2NjdXIgKCBub3JtYWxseSAwICkgCisKKzIxICAgIDIxICAgICAgRGVjaW1hbCBvdmVyZmxvdyBtYXNrIGlmIDE9RlBVIGV4Y2VwdGlvbnMgZm9yIHRoaXMgZXZlbnQgb2NjdXIgCisgICAgICAgICAgICAgICggbm9ybWFsbHkgMCApCisKKzIyICAgIDIyICAgICAgRXhwb25lbnQgdW5kZXJmbG93IG1hc2sgaWYgMT1GUFUgZXhjZXB0aW9ucyBmb3IgdGhpcyBldmVudCBvY2N1ciAKKyAgICAgICAgICAgICAgKCBub3JtYWxseSAwICkKKworMjMgICAgMjMgICAgICBTaWduaWZpY2FuY2UgTWFzayBpZiAxPUZQVSBleGNlcHRpb25zIGZvciB0aGlzIGV2ZW50IG9jY3VyIAorICAgICAgICAgICAgICAoIG5vcm1hbGx5IDAgKQorCisyNC0zMSAyNC0zMCAgIFJlc2VydmVkIE11c3QgYmUgMC4KKworICAgICAgMzEgICAgICBFeHRlbmRlZCBBZGRyZXNzaW5nIE1vZGUKKyAgICAgIDMyICAgICAgQmFzaWMgQWRkcmVzc2luZyBNb2RlCisgICAgICAgICAgICAgIFVzZWQgdG8gc2V0IGFkZHJlc3NpbmcgbW9kZQorCSAgICAgIFBTVyAzMSAgIFBTVyAzMgorICAgICAgICAgICAgICAgIDAgICAgICAgICAwICAgICAgICAyNCBiaXQKKyAgICAgICAgICAgICAgICAwICAgICAgICAgMSAgICAgICAgMzEgYml0CisgICAgICAgICAgICAgICAgMSAgICAgICAgIDEgICAgICAgIDY0IGJpdAorCiszMiAgICAgICAgICAgICAxPTMxIGJpdCBhZGRyZXNzaW5nIG1vZGUgMD0yNCBiaXQgYWRkcmVzc2luZyBtb2RlIChmb3IgYmFja3dhcmQgCisgICAgICAgICAgICAgICBjb21wYXRpYmlsaXR5KSwgbGludXggYWx3YXlzIHJ1bnMgd2l0aCB0aGlzIGJpdCBzZXQgdG8gMQorCiszMy02NCAgICAgICAgICBJbnN0cnVjdGlvbiBhZGRyZXNzLgorICAgICAgMzMtNjMgICAgUmVzZXJ2ZWQgbXVzdCBiZSAwCisgICAgICA2NC0xMjcgICBBZGRyZXNzCisgICAgICAgICAgICAgICBJbiAyNCBiaXRzIG1vZGUgYml0cyA2NC0xMDM9MCBiaXRzIDEwNC0xMjcgQWRkcmVzcyAKKyAgICAgICAgICAgICAgIEluIDMxIGJpdHMgbW9kZSBiaXRzIDY0LTk2PTAgYml0cyA5Ny0xMjcgQWRkcmVzcworICAgICAgICAgICAgICAgTm90ZTogdW5saWtlIDMxIGJpdCBtb2RlIG9uIHMvMzkwIGJpdCA5NiBtdXN0IGJlIHplcm8KKwkgICAgICAgd2hlbiBsb2FkaW5nIHRoZSBhZGRyZXNzIHdpdGggTFBTV0Ugb3RoZXJ3aXNlIGEgCisgICAgICAgICAgICAgICBzcGVjaWZpY2F0aW9uIGV4Y2VwdGlvbiBvY2N1cnMsIExQU1cgaXMgZnVsbHkgYmFja3dhcmQKKyAgICAgICAgICAgICAgIGNvbXBhdGlibGUuCisKKworUHJlZml4IFBhZ2UocykKKy0tLS0tLS0tLS0tLS0tCitUaGlzIHBlciBjcHUgbWVtb3J5IGFyZWEgaXMgdG9vIGludGltYXRlbHkgdGllZCB0byB0aGUgcHJvY2Vzc29yIG5vdCB0byBtZW50aW9uLgorSXQgZXhpc3RzIGJldHdlZW4gdGhlIHJlYWwgYWRkcmVzc2VzIDAtNDA5NiBvbiBzLzM5MCBhbmQgYmV0d2VlbiAwLTgxOTIgb24KK3ovQXJjaGl0ZWN0dXJlIGFuZCBpcyBleGNoYW5nZWQgd2l0aCBvbmUgcGFnZSBvbiBzLzM5MCBvciB0d28gcGFnZXMgb24KK3ovQXJjaGl0ZWN0dXJlIGluIGFic29sdXRlIHN0b3JhZ2UgYnkgdGhlIHNldCBwcmVmaXggaW5zdHJ1Y3Rpb24gZHVyaW5nIExpbnV4CitzdGFydHVwLgorVGhpcyBwYWdlIGlzIG1hcHBlZCB0byBhIGRpZmZlcmVudCBwcmVmaXggZm9yIGVhY2ggcHJvY2Vzc29yIGluIGFuIFNNUAorY29uZmlndXJhdGlvbiAoYXNzdW1pbmcgdGhlIE9TIGRlc2lnbmVyIGlzIHNhbmUgb2YgY291cnNlKS4KK0J5dGVzIDAtNTEyICgyMDAgaGV4KSBvbiBzLzM5MCBhbmQgMC01MTIsIDQwOTYtNDU0NCwgNDYwNC01MTE5IGN1cnJlbnRseSBvbgorei9BcmNoaXRlY3R1cmUgYXJlIHVzZWQgYnkgdGhlIHByb2Nlc3NvciBpdHNlbGYgZm9yIGhvbGRpbmcgc3VjaCBpbmZvcm1hdGlvbgorYXMgZXhjZXB0aW9uIGluZGljYXRpb25zIGFuZCBlbnRyeSBwb2ludHMgZm9yIGV4Y2VwdGlvbnMuCitCeXRlcyBhZnRlciAweGMwMCBoZXggYXJlIHVzZWQgYnkgbGludXggZm9yIHBlciBwcm9jZXNzb3IgZ2xvYmFscyBvbiBzLzM5MCBhbmQKK3ovQXJjaGl0ZWN0dXJlICh0aGVyZSBpcyBhIGdhcCBvbiB6L0FyY2hpdGVjdHVyZSBjdXJyZW50bHkgYmV0d2VlbiAweGMwMCBhbmQKKzB4MTAwMCwgdG9vLCB3aGljaCBpcyB1c2VkIGJ5IExpbnV4KS4KK1RoZSBjbG9zZXN0IHRoaW5nIHRvIHRoaXMgb24gdHJhZGl0aW9uYWwgYXJjaGl0ZWN0dXJlcyBpcyB0aGUgaW50ZXJydXB0Cit2ZWN0b3IgdGFibGUuIFRoaXMgaXMgYSBnb29kIHRoaW5nICYgZG9lcyBzaW1wbGlmeSBzb21lIG9mIHRoZSBrZXJuZWwgY29kaW5nCitob3dldmVyIGl0IG1lYW5zIHRoYXQgd2Ugbm93IGNhbm5vdCBjYXRjaCBzdHJheSBOVUxMIHBvaW50ZXJzIGluIHRoZQora2VybmVsIHdpdGhvdXQgaGFyZCBjb2RlZCBjaGVja3MuCisKKworCitBZGRyZXNzIFNwYWNlcyBvbiBJbnRlbCBMaW51eAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHRyYWRpdGlvbmFsIEludGVsIExpbnV4IGlzIGFwcHJveGltYXRlbHkgbWFwcGVkIGFzIGZvbGxvd3MgZm9yZ2l2ZQordGhlIGFzY2lpIGFydC4KKzB4RkZGRkZGRkYgNEdCIEhpbWVtCQkqKioqKioqKioqKioqKioqKgorCQkJCSoJCSoKKwkJCQkqIEtlcm5lbCBTcGFjZQkqCisJCQkJKgkJKgorCQkJCSoqKioqKioqKioqKioqKioqCSAgKioqKioqKioqKioqKioqKgorVXNlciBTcGFjZSBIaW1lbQkJKiAgVXNlciBTdGFjawkqCSAgKgkJICoKKyh0eXBpY2FsbHkgMHhDMDAwMDAwMCAzR0IgKQkqKioqKioqKioqKioqKioqKgkgICoJCSAqCisJCQkJKiAgU2hhcmVkIExpYnMJKgkgICogTmV4dCBQcm9jZXNzICoKKwkJCQkqKioqKioqKioqKioqKioqKgkgICoJdG8JICoKKwkJCQkqCQkqICAgPD09ICAgKglSdW4JICogIDw9PQorCQkJCSogIFVzZXIgUHJvZ3JhbSAqCSAgKgkJICoKKwkJCQkqICAgRGF0YSBCU1MJKgkgICoJCSAqCisJCQkJKiAgICBUZXh0CSoJICAqCQkgKgorCQkJCSogICBTZWN0aW9ucwkqCSAgKgkJICoKKzB4MDAwMDAwMDAJCQkqKioqKioqKioqKioqKioqKgkgICoqKioqKioqKioqKioqKioKKworTm93IGl0IGlzIGVhc3kgdG8gc2VlIHRoYXQgb24gSW50ZWwgaXQgaXMgcXVpdGUgZWFzeSB0byByZWNvZ25pc2UgYSBrZXJuZWwKK2FkZHJlc3MgYXMgYmVpbmcgb25lIGdyZWF0ZXIgdGhhbiB1c2VyIHNwYWNlIGhpbWVtIChpbiB0aGlzIGNhc2UgMHhDMDAwMDAwMCksCithbmQgYWRkcmVzc2VzIG9mIGxlc3MgdGhhbiB0aGlzIGFyZSB0aGUgb25lcyBpbiB0aGUgY3VycmVudCBydW5uaW5nIHByb2dyYW0gb24KK3RoaXMgcHJvY2Vzc29yIChpZiBhbiBzbXAgYm94KS4KK0lmIHVzaW5nIHRoZSB2aXJ0dWFsIG1hY2hpbmUgKCBWTSApIGFzIGEgZGVidWdnZXIgaXQgaXMgcXVpdGUgZGlmZmljdWx0IHRvCitrbm93IHdoaWNoIHVzZXIgcHJvY2VzcyBpcyBydW5uaW5nIGFzIHRoZSBhZGRyZXNzIHNwYWNlIHlvdSBhcmUgbG9va2luZyBhdAorY291bGQgYmUgZnJvbSBhbnkgcHJvY2VzcyBpbiB0aGUgcnVuIHF1ZXVlLgorCitUaGUgbGltaXRhdGlvbiBvZiBJbnRlbHMgYWRkcmVzc2luZyB0ZWNobmlxdWUgaXMgdGhhdCB0aGUgbGludXgKK2tlcm5lbCB1c2VzIGEgdmVyeSBzaW1wbGUgcmVhbCBhZGRyZXNzIHRvIHZpcnR1YWwgYWRkcmVzc2luZyB0ZWNobmlxdWUKK29mIFJlYWwgQWRkcmVzcz1WaXJ0dWFsIEFkZHJlc3MtVXNlciBTcGFjZSBIaW1lbS4KK1RoaXMgbWVhbnMgdGhhdCBvbiBJbnRlbCB0aGUga2VybmVsIGxpbnV4IGNhbiB0eXBpY2FsbHkgb25seSBhZGRyZXNzCitIaW1lbT0weEZGRkZGRkZGLTB4QzAwMDAwMDA9MUdCICYgdGhpcyBpcyBhbGwgdGhlIFJBTSB0aGVzZSBtYWNoaW5lcworY2FuIHR5cGljYWxseSB1c2UuCitUaGV5IGNhbiBsb3dlciBVc2VyIEhpbWVtIHRvIDJHQiBvciBsb3dlciAmIHRodXMgYmUKK2FibGUgdG8gdXNlIDJHQiBvZiBSQU0gaG93ZXZlciB0aGlzIHNocmlua3MgdGhlIG1heGltdW0gc2l6ZQorb2YgVXNlciBTcGFjZSBmcm9tIDNHQiB0byAyR0IgdGhleSBoYXZlIGEgbm8gd2luIGxpbWl0IG9mIDRHQiB1bmxlc3MKK3RoZXkgZ28gdG8gNjQgQml0LgorCisKK09uIDM5MCBvdXIgbGltaXRhdGlvbnMgJiBzdHJlbmd0aHMgbWFrZSB1cyBzbGlnaHRseSBkaWZmZXJlbnQuCitGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3ZSBhcmUgb25seSBhbGxvd2VkIHVzZSAzMSBiaXRzICgyR0IpCitvZiBvdXIgMzIgYml0IGFkZHJlc3NlcywgaG93ZXZlciwgd2UgdXNlIGVudGlyZWx5IHNlcGFyYXRlIGFkZHJlc3MgCitzcGFjZXMgZm9yIHRoZSB1c2VyICYga2VybmVsLgorCitUaGlzIG1lYW5zIHdlIGNhbiBzdXBwb3J0IDJHQiBvZiBub24gRXh0ZW5kZWQgUkFNIG9uIHMvMzkwLCAmIG1vcmUKK3dpdGggdGhlIEV4dGVuZGVkIG1lbW9yeSBtYW5hZ2VtZW50IHN3YXAgZGV2aWNlICYgCitjdXJyZW50bHkgNFRCIG9mIHBoeXNpY2FsIG1lbW9yeSBjdXJyZW50bHkgb24gei9BcmNoaXRlY3R1cmUuCisKKworQWRkcmVzcyBTcGFjZXMgb24gTGludXggZm9yIHMvMzkwICYgei9BcmNoaXRlY3R1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK091ciBhZGRyZXNzaW5nIHNjaGVtZSBpcyBiYXNpY2FsbHkgYXMgZm9sbG93czoKKworCQkJCSAgIFByaW1hcnkgU3BhY2UJICAgICAgIEhvbWUgU3BhY2UKK0hpbWVtIDB4N2ZmZmZmZmYgMkdCIG9uIHMvMzkwICAgICoqKioqKioqKioqKioqKioqICAgICAgICAgICoqKioqKioqKioqKioqKioKK2N1cnJlbnRseSAweDNmZmZmZmZmZmZmICgyXjQyKS0xICogIFVzZXIgU3RhY2sgICAqICAgICAgICAgICogICAgICAgICAgICAgICoKK29uIHovQXJjaGl0ZWN0dXJlLgkJICoqKioqKioqKioqKioqKioqICAgICAgICAgICogICAgICAgICAgICAgICoKKwkJCQkgKiAgU2hhcmVkIExpYnMgICoJICAgICoJCSAgICoKKwkJCQkgKioqKioqKioqKioqKioqKioJICAgICoJCSAgICoKKwkJCSAgICAgICAgICogICAgICAgICAgICAgICAqICAgICAgICAgICogICAgS2VybmVsICAgICogIAorCQkgICAgICAgICAgICAgICAgICogIFVzZXIgUHJvZ3JhbSAqICAgICAgICAgICogICAgICAgICAgICAgICoKKwkJICAgICAgICAgICAgICAgICAqICAgRGF0YSBCU1MgICAgKiAgICAgICAgICAqICAgICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgIFRleHQgICAgICAgKiAgICAgICAgICAqICAgICAgICAgICAgICAqCisgICAgICAgICAgICAJCQkgKiAgIFNlY3Rpb25zICAgICogICAgICAgICAgKiAgICAgICAgICAgICAgKgorMHgwMDAwMDAwMCAgICAgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKioqKiogICAgICAgICAgKioqKioqKioqKioqKioqKgorCitUaGlzIGFsc28gbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIGxvb2sgYXQgdGhlIFBTVyBwcm9ibGVtIHN0YXRlIGJpdCBhbmQgdGhlCithZGRyZXNzaW5nIG1vZGUgdG8gZGVjaWRlIHdoZXRoZXIgd2UgYXJlIGxvb2tpbmcgYXQgdXNlciBvciBrZXJuZWwgc3BhY2UuCisKK1VzZXIgc3BhY2UgcnVucyBpbiBwcmltYXJ5IGFkZHJlc3MgbW9kZSAob3IgYWNjZXNzIHJlZ2lzdGVyIG1vZGUgd2l0aGluCit0aGUgdmRzbyBjb2RlKS4KKworVGhlIGtlcm5lbCB1c3VhbGx5IGFsc28gcnVucyBpbiBob21lIHNwYWNlIG1vZGUsIGhvd2V2ZXIgd2hlbiBhY2Nlc3NpbmcKK3VzZXIgc3BhY2UgdGhlIGtlcm5lbCBzd2l0Y2hlcyB0byBwcmltYXJ5IG9yIHNlY29uZGFyeSBhZGRyZXNzIG1vZGUgaWYKK3RoZSBtdmNvcyBpbnN0cnVjdGlvbiBpcyBub3QgYXZhaWxhYmxlIG9yIGlmIGEgY29tcGFyZS1hbmQtc3dhcCAoZnV0ZXgpCitpbnN0cnVjdGlvbiBvbiBhIHVzZXIgc3BhY2UgYWRkcmVzcyBpcyBwZXJmb3JtZWQuCisKK1doZW4gYWxzbyBsb29raW5nIGF0IHRoZSBBU0NFIGNvbnRyb2wgcmVnaXN0ZXJzLCB0aGlzIG1lYW5zOgorCitVc2VyIHNwYWNlOgorLSBydW5zIGluIHByaW1hcnkgb3IgYWNjZXNzIHJlZ2lzdGVyIG1vZGUKKy0gY3IxIGNvbnRhaW5zIHRoZSB1c2VyIGFzY2UKKy0gY3I3IGNvbnRhaW5zIHRoZSB1c2VyIGFzY2UKKy0gY3IxMyBjb250YWlucyB0aGUga2VybmVsIGFzY2UKKworS2VybmVsIHNwYWNlOgorLSBydW5zIGluIGhvbWUgc3BhY2UgbW9kZQorLSBjcjEgY29udGFpbnMgdGhlIHVzZXIgb3Iga2VybmVsIGFzY2UKKyAgLT4gdGhlIGtlcm5lbCBhc2NlIGlzIGxvYWRlZCB3aGVuIGEgdWFjY2VzcyByZXF1aXJlcyBwcmltYXJ5IG9yCisgICAgIHNlY29uZGFyeSBhZGRyZXNzIG1vZGUKKy0gY3I3IGNvbnRhaW5zIHRoZSB1c2VyIG9yIGtlcm5lbCBhc2NlLCAoY2hhbmdlZCB3aXRoIHNldF9mcygpKQorLSBjcjEzIGNvbnRhaW5zIHRoZSBrZXJuZWwgYXNjZQorCitJbiBjYXNlIG9mIHVhY2Nlc3MgdGhlIGtlcm5lbCBjaGFuZ2VzIHRvOgorLSBwcmltYXJ5IHNwYWNlIG1vZGUgaW4gY2FzZSBvZiBhIHVhY2Nlc3MgKGNvcHlfdG9fdXNlcikgYW5kIHVzZXMKKyAgZS5nLiB0aGUgbXZjcCBpbnN0cnVjdGlvbiB0byBhY2Nlc3MgdXNlciBzcGFjZS4gSG93ZXZlciB0aGUga2VybmVsCisgIHdpbGwgc3RheSBpbiBob21lIHNwYWNlIG1vZGUgaWYgdGhlIG12Y29zIGluc3RydWN0aW9uIGlzIGF2YWlsYWJsZQorLSBzZWNvbmRhcnkgc3BhY2UgbW9kZSBpbiBjYXNlIG9mIGZ1dGV4IGF0b21pYyBvcGVyYXRpb25zLCBzbyB0aGF0IHRoZQorICBpbnN0cnVjdGlvbnMgY29tZSBmcm9tIHByaW1hcnkgYWRkcmVzcyBzcGFjZSBhbmQgZGF0YSBmcm9tIHNlY29uZGFyeQorICBzcGFjZQorCitJbiBjYXNlIG9mIEtWTSwgdGhlIGtlcm5lbCBydW5zIGluIGhvbWUgc3BhY2UgbW9kZSwgYnV0IGNyMSBnZXRzIHN3aXRjaGVkCit0byBjb250YWluIHRoZSBnbWFwIGFzY2UgYmVmb3JlIHRoZSBTSUUgaW5zdHJ1Y3Rpb24gZ2V0cyBleGVjdXRlZC4gV2hlbgordGhlIFNJRSBpbnN0cnVjdGlvbiBpcyBmaW5pc2hlZCwgY3IxIHdpbGwgYmUgc3dpdGNoZWQgYmFjayB0byBjb250YWluIHRoZQordXNlciBhc2NlLgorCisKK1ZpcnR1YWwgQWRkcmVzc2VzIG9uIHMvMzkwICYgei9BcmNoaXRlY3R1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQSB2aXJ0dWFsIGFkZHJlc3Mgb24gcy8zOTAgaXMgbWFkZSB1cCBvZiAzIHBhcnRzCitUaGUgU1ggKHNlZ21lbnQgaW5kZXgsIHJvdWdobHkgY29ycmVzcG9uZGluZyB0byB0aGUgUEdEICYgUE1EIGluIExpbnV4Cit0ZXJtaW5vbG9neSkgYmVpbmcgYml0cyAxLTExLgorVGhlIFBYIChwYWdlIGluZGV4LCBjb3JyZXNwb25kaW5nIHRvIHRoZSBwYWdlIHRhYmxlIGVudHJ5IChwdGUpIGluIExpbnV4Cit0ZXJtaW5vbG9neSkgYmVpbmcgYml0cyAxMi0xOS4KK1RoZSByZW1haW5pbmcgYml0cyBCWCAodGhlIGJ5dGUgaW5kZXggYXJlIHRoZSBvZmZzZXQgaW4gdGhlIHBhZ2UgKQoraS5lLiBiaXRzIDIwIHRvIDMxLgorCitPbiB6L0FyY2hpdGVjdHVyZSBpbiBsaW51eCB3ZSBjdXJyZW50bHkgbWFrZSB1cCBhbiBhZGRyZXNzIGZyb20gNCBwYXJ0cy4KK1RoZSByZWdpb24gaW5kZXggYml0cyAoUlgpIDAtMzIgd2UgY3VycmVudGx5IHVzZSBiaXRzIDIyLTMyCitUaGUgc2VnbWVudCBpbmRleCAoU1gpIGJlaW5nIGJpdHMgMzMtNDMKK1RoZSBwYWdlIGluZGV4IChQWCkgYmVpbmcgYml0cyAgNDQtNTEKK1RoZSBieXRlIGluZGV4IChCWCkgYmVpbmcgYml0cyAgNTItNjMKKworTm90ZXM6CisxKSBzLzM5MCBoYXMgbm8gUE1EIHNvIHRoZSBQTUQgaXMgcmVhbGx5IHRoZSBQR0QgYWxzby4KK0EgbG90IG9mIHRoaXMgc3R1ZmYgaXMgZGVmaW5lZCBpbiBwZ3RhYmxlLmguCisKKzIpIEFsc28gc2VlaW5nIGFzIHMvMzkwJ3MgcGFnZSBpbmRleGVzIGFyZSBvbmx5IDFrICBpbiBzaXplIAorKGJpdHMgMTItMTkgeCA0IGJ5dGVzIHBlciBwdGUgKSB3ZSB1c2UgMSAoIHBhZ2UgNGsgKQordG8gbWFrZSB0aGUgYmVzdCB1c2Ugb2YgbWVtb3J5IGJ5IHVwZGF0aW5nIDQgc2VnbWVudCBpbmRpY2VzIAorZW50cmllcyBlYWNoIHRpbWUgd2UgbWVzcyB3aXRoIGEgUE1EICYgdXNlIG9mZnNldHMgCiswLDEwMjQsMjA0OCAmIDMwNzIgaW4gdGhpcyBwYWdlIGFzIGZvciBvdXIgc2VnbWVudCBpbmRleGVzLgorT24gei9BcmNoaXRlY3R1cmUgb3VyIHBhZ2UgaW5kZXhlcyBhcmUgbm93IDJrIGluIHNpemUKKyggYml0cyAxMi0xOSB4IDggYnl0ZXMgcGVyIHB0ZSApIHdlIGRvIGEgc2ltaWxhciB0cmljaworYnV0IG9ubHkgbWVzcyB3aXRoIDIgc2VnbWVudCBpbmRpY2VzIGVhY2ggdGltZSB3ZSBtZXNzIHdpdGgKK2EgUE1ELgorCiszKSBBcyB6L0FyY2hpdGVjdHVyZSBzdXBwb3J0cyB1cCB0byBhIG1hc3NpdmUgNS1sZXZlbCBwYWdlIHRhYmxlIGxvb2t1cCB3ZQorY2FuIG9ubHkgdXNlIDMgY3VycmVudGx5IG9uIExpbnV4ICggYXMgdGhpcyBpcyBhbGwgdGhlIGdlbmVyaWMga2VybmVsCitjdXJyZW50bHkgc3VwcG9ydHMgKSBob3dldmVyIHRoaXMgbWF5IGNoYW5nZSBpbiBmdXR1cmUKK3RoaXMgYWxsb3dzIHVzIHRvIGFjY2VzcyAoIGFjY29yZGluZyB0byBteSBzdW1zICkKKzRUQiBvZiB2aXJ0dWFsIHN0b3JhZ2UgcGVyIHByb2Nlc3MgaS5lLgorNDA5Nio1MTIoUFRFUykqMTAyNChQTURTKSoyMDQ4KFBHRCkgPSA0Mzk4MDQ2NTExMTA0IGJ5dGVzLAorZW5vdWdoIGZvciBhbm90aGVyIDIgb3IgMyBvZiB5ZWFycyBJIHRoaW5rIDotKS4KK3RvIGRvIHRoaXMgd2UgdXNlIGEgcmVnaW9uLXRoaXJkLXRhYmxlIGRlc2lnbmF0aW9uIHR5cGUgaW4KK291ciBhZGRyZXNzIHNwYWNlIGNvbnRyb2wgcmVnaXN0ZXJzLgorIAorCitUaGUgTGludXggZm9yIHMvMzkwICYgei9BcmNoaXRlY3R1cmUgS2VybmVsIFRhc2sgU3RydWN0dXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitFYWNoIHByb2Nlc3MvdGhyZWFkIHVuZGVyIExpbnV4IGZvciBTMzkwIGhhcyBpdHMgb3duIGtlcm5lbCB0YXNrX3N0cnVjdAorZGVmaW5lZCBpbiBsaW51eC9pbmNsdWRlL2xpbnV4L3NjaGVkLmgKK1RoZSBTMzkwIG9uIGluaXRpYWxpc2F0aW9uICYgcmVzdW1pbmcgb2YgYSBwcm9jZXNzIG9uIGEgY3B1IHNldHMKK3RoZSBfX0xDX0tFUk5FTF9TVEFDSyB2YXJpYWJsZSBpbiB0aGUgc3BhcmUgcHJlZml4IGFyZWEgZm9yIHRoaXMgY3B1Cisod2hpY2ggd2UgdXNlIGZvciBwZXItcHJvY2Vzc29yIGdsb2JhbHMpLgorCitUaGUga2VybmVsIHN0YWNrIHBvaW50ZXIgaXMgaW50aW1hdGVseSB0aWVkIHdpdGggdGhlIHRhc2sgc3RydWN0dXJlIGZvcgorZWFjaCBwcm9jZXNzb3IgYXMgZm9sbG93cy4KKworICAgICAgICAgICAgICAgICAgICAgIHMvMzkwCisgICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgICAgICAgICogIDEgcGFnZSBrZXJuZWwgc3RhY2sgKgorCSAgICAqICAgICAgICAoIDRLICkgICAgICAgICoKKyAgICAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAgICAgICAgKiAgIDEgcGFnZSB0YXNrX3N0cnVjdCAqICAgICAgICAKKyAgICAgICAgICAgICogICAgICAgICggNEsgKSAgICAgICAgKgorOEsgYWxpZ25lZCAgKioqKioqKioqKioqKioqKioqKioqKioqIAorCisgICAgICAgICAgICAgICAgIHovQXJjaGl0ZWN0dXJlCisgICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgICAgICAgICogIDIgcGFnZSBrZXJuZWwgc3RhY2sgKgorCSAgICAqICAgICAgICAoIDhLICkgICAgICAgICoKKyAgICAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAgICAgICAgKiAgMiBwYWdlIHRhc2tfc3RydWN0ICAqICAgICAgICAKKyAgICAgICAgICAgICogICAgICAgICggOEsgKSAgICAgICAgKgorMTZLIGFsaWduZWQgKioqKioqKioqKioqKioqKioqKioqKioqIAorCitXaGF0IHRoaXMgbWVhbnMgaXMgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIGRlZGljYXRlIGFueSByZWdpc3RlciBvciBnbG9iYWwKK3ZhcmlhYmxlIHRvIHBvaW50IHRvIHRoZSBjdXJyZW50IHJ1bm5pbmcgcHJvY2VzcyAmIGNhbiByZXRyaWV2ZSBpdCB3aXRoIHRoZQorZm9sbG93aW5nIHZlcnkgc2ltcGxlIGNvbnN0cnVjdCBmb3Igcy8zOTAgJiBvbmUgdmVyeSBzaW1pbGFyIGZvciB6L0FyY2hpdGVjdHVyZS4KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgdGFza19zdHJ1Y3QgKiBnZXRfY3VycmVudCh2b2lkKQoreworICAgICAgICBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmN1cnJlbnQ7CisgICAgICAgIF9fYXNtX18oImxoaSAgICUwLC04MTkyXG5cdCIKKyAgICAgICAgICAgICAgICAibnIgICAgJTAsMTUiCisgICAgICAgICAgICAgICAgOiAiPXIiIChjdXJyZW50KSApOworICAgICAgICByZXR1cm4gY3VycmVudDsKK30KKworaS5lLiBqdXN0IGFuZGluZyB0aGUgY3VycmVudCBrZXJuZWwgc3RhY2sgcG9pbnRlciB3aXRoIHRoZSBtYXNrIC04MTkyLgorVGhhbmtmdWxseSBiZWNhdXNlIExpbnV4IGRvZXNuJ3QgaGF2ZSBzdXBwb3J0IGZvciBuZXN0ZWQgSU8gaW50ZXJydXB0cworJiBvdXIgZGV2aWNlcyBoYXZlIGxhcmdlIGJ1ZmZlcnMgY2FuIHN1cnZpdmUgaW50ZXJydXB0cyBiZWluZyBzaHV0IGZvciAKK3Nob3J0IGFtb3VudHMgb2YgdGltZSB3ZSBkb24ndCBuZWVkIGEgc2VwYXJhdGUgc3RhY2sgZm9yIGludGVycnVwdHMuCisKKworCisKK1JlZ2lzdGVyIFVzYWdlICYgU3RhY2tmcmFtZXMgb24gTGludXggZm9yIHMvMzkwICYgei9BcmNoaXRlY3R1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitPdmVydmlldzoKKy0tLS0tLS0tLQorVGhpcyBpcyB0aGUgY29kZSB0aGF0IGdjYyBwcm9kdWNlcyBhdCB0aGUgdG9wICYgdGhlIGJvdHRvbSBvZgorZWFjaCBmdW5jdGlvbi4gSXQgdXN1YWxseSBpcyBmYWlybHkgY29uc2lzdGVudCAmIHNpbWlsYXIgZnJvbSAKK2Z1bmN0aW9uIHRvIGZ1bmN0aW9uICYgaWYgeW91IGtub3cgaXRzIGxheW91dCB5b3UgY2FuIHByb2JhYmx5CittYWtlIHNvbWUgaGVhZHdheSBpbiBmaW5kaW5nIHRoZSB1bHRpbWF0ZSBjYXVzZSBvZiBhIHByb2JsZW0KK2FmdGVyIGEgY3Jhc2ggd2l0aG91dCBhIHNvdXJjZSBsZXZlbCBkZWJ1Z2dlci4KKworTm90ZTogVG8gZm9sbG93IHN0YWNrZnJhbWVzIHJlcXVpcmVzIGEga25vd2xlZGdlIG9mIEMgb3IgUGFzY2FsICYKK2xpbWl0ZWQga25vd2xlZGdlIG9mIG9uZSBhc3NlbWJseSBsYW5ndWFnZS4KKworSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgdGhlcmUgYXJlIHNvbWUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUKK3MvMzkwIGFuZCB6L0FyY2hpdGVjdHVyZSBzdGFjayBsYXlvdXRzIGFzIHRoZSB6L0FyY2hpdGVjdHVyZSBzdGFjayBsYXlvdXQKK2RpZG4ndCBoYXZlIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBsaW5rYWdlIGZvcm1hdHMuCisKK0dsb3NzYXJ5OgorLS0tLS0tLS0tCithbGxvY2E6CitUaGlzIGlzIGEgYnVpbHQgaW4gY29tcGlsZXIgZnVuY3Rpb24gZm9yIHJ1bnRpbWUgYWxsb2NhdGlvbgorb2YgZXh0cmEgc3BhY2Ugb24gdGhlIGNhbGxlcnMgc3RhY2sgd2hpY2ggaXMgb2J2aW91c2x5IGZyZWVkCit1cCBvbiBmdW5jdGlvbiBleGl0ICggZS5nLiB0aGUgY2FsbGVyIG1heSBjaG9vc2UgdG8gYWxsb2NhdGUgbm90aGluZworb2YgYSBidWZmZXIgb2YgNGsgaWYgcmVxdWlyZWQgZm9yIHRlbXBvcmFyeSBwdXJwb3NlcyApLCBpdCBnZW5lcmF0ZXMgCit2ZXJ5IGVmZmljaWVudCBjb2RlICggYSBmZXcgY3ljbGVzICApIHdoZW4gY29tcGFyZWQgdG8gYWx0ZXJuYXRpdmVzIAorbGlrZSBtYWxsb2MuCisKK2F1dG9tYXRpY3M6IFRoZXNlIGFyZSBsb2NhbCB2YXJpYWJsZXMgb24gdGhlIHN0YWNrLAoraS5lIHRoZXkgYXJlbid0IGluIHJlZ2lzdGVycyAmIHRoZXkgYXJlbid0IHN0YXRpYy4KKworYmFjay1jaGFpbjoKK1RoaXMgaXMgYSBwb2ludGVyIHRvIHRoZSBzdGFjayBwb2ludGVyIGJlZm9yZSBlbnRlcmluZyBhCitmcmFtZWQgZnVuY3Rpb25zICggc2VlIGZyYW1lbGVzcyBmdW5jdGlvbiApIHByb2xvZ3VlIGdvdCBieSAKK2RlcmVmZXJlbmNpbmcgdGhlIGFkZHJlc3Mgb2YgdGhlIGN1cnJlbnQgc3RhY2sgcG9pbnRlciwKKyBpLmUuIGdvdCBieSBhY2Nlc3NpbmcgdGhlIDMyIGJpdCB2YWx1ZSBhdCB0aGUgc3RhY2sgcG9pbnRlcnMKK2N1cnJlbnQgbG9jYXRpb24uCisKK2Jhc2UtcG9pbnRlcjoKK1RoaXMgaXMgYSBwb2ludGVyIHRvIHRoZSBiYWNrIG9mIHRoZSBsaXRlcmFsIHBvb2wgd2hpY2gKK2lzIGFuIGFyZWEganVzdCBiZWhpbmQgZWFjaCBwcm9jZWR1cmUgdXNlZCB0byBzdG9yZSBjb25zdGFudHMKK2luIGVhY2ggZnVuY3Rpb24uCisKK2NhbGwtY2xvYmJlcmVkOiBUaGUgY2FsbGVyIHByb2JhYmx5IG5lZWRzIHRvIHNhdmUgdGhlc2UgcmVnaXN0ZXJzIGlmIHRoZXJlIAoraXMgc29tZXRoaW5nIG9mIHZhbHVlIGluIHRoZW0sIG9uIHRoZSBzdGFjayBvciBlbHNld2hlcmUgYmVmb3JlIG1ha2luZyBhIAorY2FsbCB0byBhbm90aGVyIHByb2NlZHVyZSBzbyB0aGF0IGl0IGNhbiByZXN0b3JlIGl0IGxhdGVyLgorCitlcGlsb2d1ZToKK1RoZSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgY29tcGlsZXIgdG8gcmV0dXJuIHRvIHRoZSBjYWxsZXIuCisKK2ZyYW1lbGVzcy1mdW5jdGlvbgorQSBmcmFtZWxlc3MgZnVuY3Rpb24gaW4gTGludXggZm9yIHMzOTAgJiB6L0FyY2hpdGVjdHVyZSBpcyBvbmUgd2hpY2ggZG9lc24ndCAKK25lZWQgbW9yZSB0aGFuIHRoZSByZWdpc3RlciBzYXZlIGFyZWEgKDk2IGJ5dGVzIG9uIHMvMzkwLCAxNjAgb24gei9BcmNoaXRlY3R1cmUpCitnaXZlbiB0byBpdCBieSB0aGUgY2FsbGVyLgorQSBmcmFtZWxlc3MgZnVuY3Rpb24gbmV2ZXI6CisxKSBTZXRzIHVwIGEgYmFjayBjaGFpbi4KKzIpIENhbGxzIGFsbG9jYS4KKzMpIENhbGxzIG90aGVyIG5vcm1hbCBmdW5jdGlvbnMKKzQpIEhhcyBhdXRvbWF0aWNzLgorCitHT1QtcG9pbnRlcjoKK1RoaXMgaXMgYSBwb2ludGVyIHRvIHRoZSBnbG9iYWwtb2Zmc2V0LXRhYmxlIGluIEVMRgorKCBFeGVjdXRhYmxlIExpbmthYmxlIEZvcm1hdCwgTGludXgnZXMgbW9zdCBjb21tb24gZXhlY3V0YWJsZSBmb3JtYXQgKSwKK2FsbCBnbG9iYWxzICYgc2hhcmVkIGxpYnJhcnkgb2JqZWN0cyBhcmUgZm91bmQgdXNpbmcgdGhpcyBwb2ludGVyLgorCitsYXp5LWJpbmRpbmcKK0VMRiBzaGFyZWQgbGlicmFyaWVzIGFyZSB0eXBpY2FsbHkgb25seSBsb2FkZWQgd2hlbiByb3V0aW5lcyBpbiB0aGUgc2hhcmVkCitsaWJyYXJ5IGFyZSBhY3R1YWxseSBmaXJzdCBjYWxsZWQgYXQgcnVudGltZS4gVGhpcyBpcyBsYXp5IGJpbmRpbmcuCisKK3Byb2NlZHVyZS1saW5rYWdlLXRhYmxlCitUaGlzIGlzIGEgdGFibGUgZm91bmQgZnJvbSB0aGUgR09UIHdoaWNoIGNvbnRhaW5zIHBvaW50ZXJzIHRvIHJvdXRpbmVzCitpbiBvdGhlciBzaGFyZWQgbGlicmFyaWVzIHdoaWNoIGNhbid0IGJlIGNhbGxlZCB0byBieSBlYXNpZXIgbWVhbnMuCisKK3Byb2xvZ3VlOgorVGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IHRoZSBjb21waWxlciB0byBzZXQgdXAgdGhlIHN0YWNrIGZyYW1lLgorCitvdXRnb2luZy1hcmdzOgorVGhpcyBpcyBleHRyYSBhcmVhIGFsbG9jYXRlZCBvbiB0aGUgc3RhY2sgb2YgdGhlIGNhbGxpbmcgZnVuY3Rpb24gaWYgdGhlCitwYXJhbWV0ZXJzIGZvciB0aGUgY2FsbGVlJ3MgY2Fubm90IGFsbCBiZSBwdXQgaW4gcmVnaXN0ZXJzLCB0aGUgc2FtZQorYXJlYSBjYW4gYmUgcmV1c2VkIGJ5IGVhY2ggZnVuY3Rpb24gdGhlIGNhbGxlciBjYWxscy4KKworcm91dGluZS1kZXNjcmlwdG9yOgorQSBDT0ZGICBleGVjdXRhYmxlIGZvcm1hdCBiYXNlZCBjb25jZXB0IG9mIGEgcHJvY2VkdXJlIHJlZmVyZW5jZSAKK2FjdHVhbGx5IGJlaW5nIDggYnl0ZXMgb3IgbW9yZSBhcyBvcHBvc2VkIHRvIGEgc2ltcGxlIHBvaW50ZXIgdG8gdGhlIHJvdXRpbmUuCitUaGlzIGlzIHR5cGljYWxseSBkZWZpbmVkIGFzIGZvbGxvd3MKK1JvdXRpbmUgRGVzY3JpcHRvciBvZmZzZXQgMD1Qb2ludGVyIHRvIEZ1bmN0aW9uCitSb3V0aW5lIERlc2NyaXB0b3Igb2Zmc2V0IDQ9UG9pbnRlciB0byBUYWJsZSBvZiBDb250ZW50cworVGhlIHRhYmxlIG9mIGNvbnRlbnRzL1RPQyBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gYSBHT1QgcG9pbnRlci4KKyYgaXQgbWVhbnMgdGhhdCBzaGFyZWQgbGlicmFyaWVzIGV0Yy4gY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIHNldmVyYWwKK2Vudmlyb25tZW50cyBlYWNoIHdpdGggdGhlaXIgb3duIFRPQy4KKworIAorc3RhdGljLWNoYWluOiBUaGlzIGlzIHVzZWQgaW4gbmVzdGVkIGZ1bmN0aW9ucyBhIGNvbmNlcHQgYWRvcHRlZCBmcm9tIHBhc2NhbCAKK2J5IGdjYyBub3QgdXNlZCBpbiBhbnNpIEMgb3IgQysrICggYWx0aG91Z2ggcXVpdGUgdXNlZnVsICksIGJhc2ljYWxseSBpdAoraXMgYSBwb2ludGVyIHVzZWQgdG8gcmVmZXJlbmNlIGxvY2FsIHZhcmlhYmxlcyBvZiBlbmNsb3NpbmcgZnVuY3Rpb25zLgorWW91IG1pZ2h0IGNvbWUgYWNyb3NzIHRoaXMgc3R1ZmYgb25jZSBvciB0d2ljZSBpbiB5b3VyIGxpZmV0aW1lLgorCitlLmcuCitUaGUgZnVuY3Rpb24gYmVsb3cgc2hvdWxkIHJldHVybiAxMSB0aG91Z2ggZ2NjIG1heSBnZXQgdXBzZXQgJiB0b3NzIHdhcm5pbmdzIAorYWJvdXQgdW51c2VkIHZhcmlhYmxlcy4KK2ludCBGdW5jdGlvbkEoaW50IGEpCit7CisJaW50IGI7CisJRnVuY3Rpb25DKGludCBjKQorCXsKKwkJYj1jKzE7CisJfQorCUZ1bmN0aW9uQygxMCk7CisJcmV0dXJuKGIpOworfQorCisKK3MvMzkwICYgei9BcmNoaXRlY3R1cmUgUmVnaXN0ZXIgdXNhZ2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3IwICAgICAgIHVzZWQgYnkgc3lzY2FsbHMvYXNzZW1ibHkgICAgICAgICAgICAgICAgICBjYWxsLWNsb2JiZXJlZAorcjEJIHVzZWQgYnkgc3lzY2FsbHMvYXNzZW1ibHkgICAgICAgICAgICAgICAgICBjYWxsLWNsb2JiZXJlZAorcjIgICAgICAgYXJndW1lbnQgMCAvIHJldHVybiB2YWx1ZSAwICAgICAgICAgICAgICAgIGNhbGwtY2xvYmJlcmVkCityMyAgICAgICBhcmd1bWVudCAxIC8gcmV0dXJuIHZhbHVlIDEgKGlmIGxvbmcgbG9uZykgY2FsbC1jbG9iYmVyZWQKK3I0ICAgICAgIGFyZ3VtZW50IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsLWNsb2JiZXJlZAorcjUgICAgICAgYXJndW1lbnQgMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwtY2xvYmJlcmVkCityNgkgYXJndW1lbnQgNAkJCQkgICAgc2F2ZWQKK3I3ICAgICAgIHBvaW50ZXItdG8gYXJndW1lbnRzIDUgdG8gLi4uICAgICAgICAgICAgICBzYXZlZCAgICAgIAorcjggICAgICAgdGhpcyAmIHRoYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVkCityOSAgICAgICB0aGlzICYgdGhhdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZWQKK3IxMCAgICAgIHN0YXRpYy1jaGFpbiAoIGlmIG5lc3RlZCBmdW5jdGlvbiApICAgICAgICBzYXZlZAorcjExICAgICAgZnJhbWUtcG9pbnRlciAoIGlmIGZ1bmN0aW9uIHVzZWQgYWxsb2NhICkgIHNhdmVkCityMTIgICAgICBnb3QtcG9pbnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZWQKK3IxMyAgICAgIGJhc2UtcG9pbnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlZAorcjE0ICAgICAgcmV0dXJuLWFkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVkCityMTUgICAgICBzdGFjay1wb2ludGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZWQKKworZjAgICAgICAgYXJndW1lbnQgMCAvIHJldHVybiB2YWx1ZSAoIGZsb2F0L2RvdWJsZSApIGNhbGwtY2xvYmJlcmVkCitmMiAgICAgICBhcmd1bWVudCAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbC1jbG9iYmVyZWQKK2Y0ICAgICAgIHovQXJjaGl0ZWN0dXJlIGFyZ3VtZW50IDIgICAgICAgICAgICAgICAgICBzYXZlZAorZjYgICAgICAgei9BcmNoaXRlY3R1cmUgYXJndW1lbnQgMyAgICAgICAgICAgICAgICAgIHNhdmVkCitUaGUgcmVtYWluaW5nIGZsb2F0aW5nIHBvaW50cworZjEsZjMsZjUgZjctZjE1IGFyZSBjYWxsLWNsb2JiZXJlZC4KKworTm90ZXM6CistLS0tLS0KKzEpIFRoZSBvbmx5IHJlcXVpcmVtZW50IGlzIHRoYXQgcmVnaXN0ZXJzIHdoaWNoIGFyZSB1c2VkCitieSB0aGUgY2FsbGVlIGFyZSBzYXZlZCwgZS5nLiB0aGUgY29tcGlsZXIgaXMgcGVyZmVjdGx5CitjYXBhYmxlIG9mIHVzaW5nIHIxMSBmb3IgcHVycG9zZXMgb3RoZXIgdGhhbiBhIGZyYW1lIGEKK2ZyYW1lIHBvaW50ZXIgaWYgYSBmcmFtZSBwb2ludGVyIGlzIG5vdCBuZWVkZWQuCisyKSBJbiBmdW5jdGlvbnMgd2l0aCB2YXJpYWJsZSBhcmd1bWVudHMgZS5nLiBwcmludGYgdGhlIGNhbGxpbmcgcHJvY2VkdXJlIAoraXMgaWRlbnRpY2FsIHRvIG9uZSB3aXRob3V0IHZhcmlhYmxlIGFyZ3VtZW50cyAmIHRoZSBzYW1lIG51bWJlciBvZiAKK3BhcmFtZXRlcnMuIEhvd2V2ZXIsIHRoZSBwcm9sb2d1ZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIHNvbWV3aGF0IG1vcmUKK2hhaXJ5IG93aW5nIHRvIGl0IGhhdmluZyB0byBtb3ZlIHRoZXNlIHBhcmFtZXRlcnMgdG8gdGhlIHN0YWNrIHRvCitnZXQgdmFfc3RhcnQsIHZhX2FyZyAmIHZhX2VuZCB0byB3b3JrLgorMykgQWNjZXNzIHJlZ2lzdGVycyBhcmUgY3VycmVudGx5IHVudXNlZCBieSBnY2MgYnV0IGFyZSB1c2VkIGluCit0aGUga2VybmVsLiBQb3NzaWJpbGl0aWVzIGV4aXN0IHRvIHVzZSB0aGVtIGF0IHRoZSBtb21lbnQgZm9yCit0ZW1wb3Jhcnkgc3RvcmFnZSBidXQgaXQgaXNuJ3QgcmVjb21tZW5kZWQuCis0KSBPbmx5IDQgb2YgdGhlIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyBhcmUgdXNlZCBmb3IKK3BhcmFtZXRlciBwYXNzaW5nIGFzIG9sZGVyIG1hY2hpbmVzIHN1Y2ggYXMgRzMgb25seSBoYXZlIG9ubHkgNAorJiBpdCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgY29tcGF0aWJsZSB3aXRoIG90aGVyIGNvbXBpbGVycy4KK0hvd2V2ZXIgd2l0aCBJRUVFIGZsb2F0aW5nIHBvaW50IGVtdWxhdGlvbiB1bmRlciBsaW51eCBvbiB0aGUKK29sZGVyIG1hY2hpbmVzIHlvdSBhcmUgZnJlZSB0byB1c2UgdGhlIG90aGVyIDEyLgorNSkgQSBsb25nIGxvbmcgb3IgZG91YmxlIHBhcmFtZXRlciBjYW5ub3QgYmUgaGF2ZSB0aGUgCitmaXJzdCA0IGJ5dGVzIGluIGEgcmVnaXN0ZXIgJiB0aGUgc2Vjb25kIGZvdXIgYnl0ZXMgaW4gdGhlIAorb3V0Z29pbmcgYXJncyBhcmVhLiBJdCBtdXN0IGJlIHB1cmVseSBpbiB0aGUgb3V0Z29pbmcgYXJncworYXJlYSBpZiBjcm9zc2luZyB0aGlzIGJvdW5kYXJ5LgorNikgRmxvYXRpbmcgcG9pbnQgcGFyYW1ldGVycyBhcmUgbWl4ZWQgd2l0aCBvdXRnb2luZyBhcmdzCitvbiB0aGUgb3V0Z29pbmcgYXJncyBhcmVhIGluIHRoZSBvcmRlciB0aGUgYXJlIHBhc3NlZCBpbiBhcyBwYXJhbWV0ZXJzLgorNykgRmxvYXRpbmcgcG9pbnQgYXJndW1lbnRzIDIgJiAzIGFyZSBzYXZlZCBpbiB0aGUgb3V0Z29pbmcgYXJncyBhcmVhIGZvciAKK3ovQXJjaGl0ZWN0dXJlCisKKworU3RhY2sgRnJhbWUgTGF5b3V0CistLS0tLS0tLS0tLS0tLS0tLS0KK3MvMzkwICAgICB6L0FyY2hpdGVjdHVyZQorMCAgICAgICAgIDAgICAgICAgICAgICAgYmFjayBjaGFpbiAoIGEgMCBoZXJlIHNpZ25pZmllcyBlbmQgb2YgYmFjayBjaGFpbiApCis0ICAgICAgICAgOCAgICAgICAgICAgICBlb3MgKCBlbmQgb2Ygc3RhY2ssIG5vdCB1c2VkIG9uIExpbnV4IGZvciBTMzkwIHVzZWQgaW4gb3RoZXIgbGlua2FnZSBmb3JtYXRzICkKKzggICAgICAgICAxNiAgICAgICAgICAgIGdsdWUgdXNlZCBpbiBvdGhlciBzLzM5MCBsaW5rYWdlIGZvcm1hdHMgZm9yIHNhdmVkIHJvdXRpbmUgZGVzY3JpcHRvcnMgZXRjLgorMTIgICAgICAgIDI0ICAgICAgICAgICAgZ2x1ZSB1c2VkIGluIG90aGVyIHMvMzkwIGxpbmthZ2UgZm9ybWF0cyBmb3Igc2F2ZWQgcm91dGluZSBkZXNjcmlwdG9ycyBldGMuCisxNiAgICAgICAgMzIgICAgICAgICAgICBzY3JhdGNoIGFyZWEKKzIwICAgICAgICA0MCAgICAgICAgICAgIHNjcmF0Y2ggYXJlYQorMjQgICAgICAgIDQ4ICAgICAgICAgICAgc2F2ZWQgcjYgb2YgY2FsbGVyIGZ1bmN0aW9uCisyOCAgICAgICAgNTYgICAgICAgICAgICBzYXZlZCByNyBvZiBjYWxsZXIgZnVuY3Rpb24KKzMyICAgICAgICA2NCAgICAgICAgICAgIHNhdmVkIHI4IG9mIGNhbGxlciBmdW5jdGlvbgorMzYgICAgICAgIDcyICAgICAgICAgICAgc2F2ZWQgcjkgb2YgY2FsbGVyIGZ1bmN0aW9uCis0MCAgICAgICAgODAgICAgICAgICAgICBzYXZlZCByMTAgb2YgY2FsbGVyIGZ1bmN0aW9uCis0NCAgICAgICAgODggICAgICAgICAgICBzYXZlZCByMTEgb2YgY2FsbGVyIGZ1bmN0aW9uCis0OCAgICAgICAgOTYgICAgICAgICAgICBzYXZlZCByMTIgb2YgY2FsbGVyIGZ1bmN0aW9uCis1MiAgICAgICAgMTA0ICAgICAgICAgICBzYXZlZCByMTMgb2YgY2FsbGVyIGZ1bmN0aW9uCis1NiAgICAgICAgMTEyICAgICAgICAgICBzYXZlZCByMTQgb2YgY2FsbGVyIGZ1bmN0aW9uCis2MCAgICAgICAgMTIwICAgICAgICAgICBzYXZlZCByMTUgb2YgY2FsbGVyIGZ1bmN0aW9uCis2NCAgICAgICAgMTI4ICAgICAgICAgICBzYXZlZCBmNCBvZiBjYWxsZXIgZnVuY3Rpb24KKzcyICAgICAgICAxMzIgICAgICAgICAgIHNhdmVkIGY2IG9mIGNhbGxlciBmdW5jdGlvbgorODAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkCis5NiAgICAgICAgMTYwICAgICAgICAgICBvdXRnb2luZyBhcmdzIHBhc3NlZCBmcm9tIGNhbGxlciB0byBjYWxsZWUKKzk2K3ggICAgICAxNjAreCAgICAgICAgIHBvc3NpYmxlIHN0YWNrIGFsaWdubWVudCAoIDggYnl0ZXMgZGVzaXJhYmxlICkKKzk2K3greSAgICAxNjAreCt5ICAgICAgIGFsbG9jYSBzcGFjZSBvZiBjYWxsZXIgKCBpZiB1c2VkICkKKzk2K3greSt6ICAxNjAreCt5K3ogICAgIGF1dG9tYXRpY3Mgb2YgY2FsbGVyICggaWYgdXNlZCApCiswICAgICAgICAgICAgICAgICAgICAgICBiYWNrLWNoYWluCisKK0Egc2FtcGxlIHByb2dyYW0gd2l0aCBjb21tZW50cy4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQ29tbWVudHMgb24gdGhlIGZ1bmN0aW9uIHRlc3QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisxKSBJdCBkaWRuJ3QgbmVlZCB0byBzZXQgdXAgYSBwb2ludGVyIHRvIHRoZSBjb25zdGFudCBwb29sIGdwcjEzIGFzIGl0IGlzIG5vdAordXNlZCAoIDotKCApLgorMikgVGhpcyBpcyBhIGZyYW1lbGVzcyBmdW5jdGlvbiAmIG5vIHN0YWNrIGlzIGJvdWdodC4KKzMpIFRoZSBjb21waWxlciB3YXMgY2xldmVyIGVub3VnaCB0byByZWNvZ25pc2UgdGhhdCBpdCBjb3VsZCByZXR1cm4gdGhlCit2YWx1ZSBpbiByMiBhcyB3ZWxsIGFzIHVzZSBpdCBmb3IgdGhlIHBhc3NlZCBpbiBwYXJhbWV0ZXIgKCA6LSkgKS4KKzQpIFRoZSBiYXNyICggYnJhbmNoIHJlbGF0aXZlICYgc2F2ZSApIHRyaWNrIHdvcmtzIGFzIGZvbGxvd3MgdGhlIGluc3RydWN0aW9uIAoraGFzIGEgc3BlY2lhbCBjYXNlIHdpdGggcjAscjAgd2l0aCBzb21lIGluc3RydWN0aW9uIG9wZXJhbmRzIGlzIHVuZGVyc3Rvb2QgYXMgCit0aGUgbGl0ZXJhbCB2YWx1ZSAwLCBzb21lIHJpc2MgYXJjaGl0ZWN0dXJlcyBhbHNvIGRvIHRoaXMgKS4gU28gbm93Cit3ZSBhcmUgYnJhbmNoaW5nIHRvIHRoZSBuZXh0IGFkZHJlc3MgJiB0aGUgYWRkcmVzcyBuZXcgcHJvZ3JhbSBjb3VudGVyIGlzCitpbiByMTMsc28gbm93IHdlIHN1YnRyYWN0IHRoZSBzaXplIG9mIHRoZSBmdW5jdGlvbiBwcm9sb2d1ZSB3ZSBoYXZlIGV4ZWN1dGVkCisrIHRoZSBzaXplIG9mIHRoZSBsaXRlcmFsIHBvb2wgdG8gZ2V0IHRvIHRoZSB0b3Agb2YgdGhlIGxpdGVyYWwgcG9vbAorMDA0MDAzN2MgaW50IHRlc3QoaW50IGIpCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRnVuY3Rpb24gcHJvbG9ndWUgYmVsb3cKKyAgNDAwMzdjOgk5MCBkZSBmMCAzNCAJc3RtCSVyMTMsJXIxNCw1MiglcjE1KSAjIFNhdmUgcmVnaXN0ZXJzIHIxMyAmIHIxNAorICA0MDAzODA6CTBkIGQwICAgICAgIAliYXNyCSVyMTMsJXIwICAgICAgICAgICAjIFNldCB1cCBwb2ludGVyIHRvIGNvbnN0YW50IHBvb2wgdXNpbmcKKyAgNDAwMzgyOglhNyBkYSBmZiBmYSAJYWhpCSVyMTMsLTYgICAgICAgICAgICAjIGJhc3IgdHJpY2sKKwlyZXR1cm4oNStiKTsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEh1Z2UgbWFpbiBwcm9ncmFtCisgIDQwMDM4NjoJYTcgMmEgMDAgMDUgCWFoaQklcjIsNSAgICAgICAgICAgICAgIyBhZGQgNSB0byByMgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRnVuY3Rpb24gZXBpbG9ndWUgYmVsb3cgCisgIDQwMDM4YToJOTggZGUgZjAgMzQgCWxtCSVyMTMsJXIxNCw1MiglcjE1KSAjIHJlc3RvcmUgcmVnaXN0ZXJzIHIxMyAmIDE0CisgIDQwMDM4ZToJMDcgZmUgICAgICAgCWJyCSVyMTQgICAgICAgICAgICAgICAjIHJldHVybgorfQorCitDb21tZW50cyBvbiB0aGUgZnVuY3Rpb24gbWFpbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzEpIFRoZSBjb21waWxlciBkaWQgdGhpcyBmdW5jdGlvbiBvcHRpbWFsbHkgKCA4LSkgKQorCitMaXRlcmFsIHBvb2wgZm9yIG1haW4uCis0MDAzOTA6CWZmIGZmIGZmIGVjIAkubG9uZyAweGZmZmZmZmVjCittYWluKGludCBhcmdjLGNoYXIgKmFyZ3ZbXSkKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGdW5jdGlvbiBwcm9sb2d1ZSBiZWxvdworICA0MDAzOTQ6CTkwIGJmIGYwIDJjIAlzdG0JJXIxMSwlcjE1LDQ0KCVyMTUpICMgU2F2ZSBuZWNlc3NhcnkgcmVnaXN0ZXJzCisgIDQwMDM5ODoJMTggMGYgICAgICAgCWxyCSVyMCwlcjE1ICAgICAgICAgICAjIGNvcHkgc3RhY2sgcG9pbnRlciB0byByMAorICA0MDAzOWE6CWE3IGZhIGZmIGEwIAlhaGkJJXIxNSwtOTYgICAgICAgICAgICMgTWFrZSBhcmVhIGZvciBjYWxsZWUgc2F2aW5nIAorICA0MDAzOWU6CTBkIGQwICAgICAgIAliYXNyCSVyMTMsJXIwICAgICAgICAgICAjIFNldCB1cCByMTMgdG8gcG9pbnQgdG8KKyAgNDAwM2EwOglhNyBkYSBmZiBmMCAJYWhpCSVyMTMsLTE2ICAgICAgICAgICAjIGxpdGVyYWwgcG9vbAorICA0MDAzYTQ6CTUwIDAwIGYwIDAwIAlzdAklcjAsMCglcjE1KSAgICAgICAgIyBTYXZlIGJhY2tjaGFpbgorCisJcmV0dXJuKHRlc3QoNSkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBNYWluIFByb2dyYW0gQmVsb3cKKyAgNDAwM2E4Ogk1OCBlMCBkMCAwMCAJbAklcjE0LDAoJXIxMykgICAgICAgIyBsb2FkIHJlbGF0aXZlIGFkZHJlc3Mgb2YgdGVzdCBmcm9tCisJCQkJCQkgICAgICAgICAgICMgbGl0ZXJhbCBwb29sCisgIDQwMDNhYzoJYTcgMjggMDAgMDUgCWxoaQklcjIsNSAgICAgICAgICAgICAgIyBTZXQgZmlyc3QgcGFyYW1ldGVyIHRvIDUKKyAgNDAwM2IwOgk0ZCBlZSBkMCAwMCAJYmFzCSVyMTQsMCglcjE0LCVyMTMpICAjIGp1bXAgdG8gdGVzdCBzZXR0aW5nIHIxNCBhcyByZXR1cm4KKwkJCQkJCQkgICAjIGFkZHJlc3MgdXNpbmcgYnJhbmNoICYgc2F2ZSBpbnN0cnVjdGlvbi4KKworCQkJCQkJCSAgICMgRnVuY3Rpb24gRXBpbG9ndWUgYmVsb3cKKyAgNDAwM2I0Ogk5OCBiZiBmMCA4YyAJbG0JJXIxMSwlcjE1LDE0MCglcjE1KSMgUmVzdG9yZSBuZWNlc3NhcnkgcmVnaXN0ZXJzLgorICA0MDAzYjg6CTA3IGZlICAgICAgIAlicgklcjE0ICAgICAgICAgICAgICAgIyByZXR1cm4gdG8gZG8gcHJvZ3JhbSBleGl0IAorfQorCisKK0NvbXBpbGVyIHVwZGF0ZXMKKy0tLS0tLS0tLS0tLS0tLS0KKworbWFpbihpbnQgYXJnYyxjaGFyICphcmd2W10pCit7CisgIDQwMDRmYzoJOTAgN2YgZjAgMWMgICAgICAgCXN0bQklcjcsJXIxNSwyOCglcjE1KQorICA0MDA1MDA6CWE3IGQ1IDAwIDA0ICAgICAgIAlicmFzCSVyMTMsNDAwNTA4IDxtYWluKzB4Yz4KKyAgNDAwNTA0OgkwMCA0MCAwNCBmNCAgICAgICAJLmxvbmcJMHgwMDQwMDRmNCAKKyAgIyBjb21waWxlciBub3cgcHV0cyBjb25zdGFudCBwb29sIGluIGNvZGUgdG8gc28gaXQgc2F2ZXMgYW4gaW5zdHJ1Y3Rpb24gCisgIDQwMDUwODoJMTggMGYgICAgICAgICAgICAgCWxyCSVyMCwlcjE1CisgIDQwMDUwYToJYTcgZmEgZmYgYTAgICAgICAgCWFoaQklcjE1LC05NgorICA0MDA1MGU6CTUwIDAwIGYwIDAwICAgICAgIAlzdAklcjAsMCglcjE1KQorCXJldHVybih0ZXN0KDUpKTsKKyAgNDAwNTEyOgk1OCAxMCBkMCAwMCAgICAgICAJbAklcjEsMCglcjEzKQorICA0MDA1MTY6CWE3IDI4IDAwIDA1ICAgICAgIAlsaGkJJXIyLDUKKyAgNDAwNTFhOgkwZCBlMSAgICAgICAgICAgICAJYmFzcgklcjE0LCVyMQorICAjIGNvbXBpbGVyIGFkZHMgMSBleHRyYSBpbnN0cnVjdGlvbiB0byBlcGlsb2d1ZSB0aGlzIGlzIGRvbmUgdG8KKyAgIyBhdm9pZCBwcm9jZXNzb3IgcGlwZWxpbmUgc3RhbGxzIG93aW5nIHRvIGRhdGEgZGVwZW5kZW5jaWVzIG9uIGc1ICYKKyAgIyBhYm92ZSBhcyByZWdpc3RlciAxNCBpbiB0aGUgb2xkIGNvZGUgd2FzIG5lZWRlZCBkaXJlY3RseSBhZnRlciBiZWluZyBsb2FkZWQgCisgICMgYnkgdGhlIGxtCSVyMTEsJXIxNSwxNDAoJXIxNSkgZm9yIHRoZSBiciAlMTQuCisgIDQwMDUxYzoJNTggNDAgZjAgOTggICAgICAgCWwJJXI0LDE1MiglcjE1KQorICA0MDA1MjA6CTk4IDdmIGYwIDdjICAgICAgIAlsbQklcjcsJXIxNSwxMjQoJXIxNSkKKyAgNDAwNTI0OgkwNyBmNCAgICAgICAgICAgICAJYnIJJXI0Cit9CisKKworSGFydG11dCAoIG91ciBjb21waWxlciBkZXZlbG9wZXIgKSBhbHNvIGhhcyBiZWVuIHRocmVhdGVuaW5nIHRvIHRha2Ugb3V0IHRoZQorc3RhY2sgYmFja2NoYWluIGluIG9wdGltaXNlZCBjb2RlIGFzIHRoaXMgYWxzbyBjYXVzZXMgcGlwZWxpbmUgc3RhbGxzLCB5b3UKK2hhdmUgYmVlbiB3YXJuZWQuCisKKzY0IGJpdCB6L0FyY2hpdGVjdHVyZSBjb2RlIGRpc2Fzc2VtYmx5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJZiB5b3UgdW5kZXJzdGFuZCB0aGUgc3R1ZmYgYWJvdmUgeW91J2xsIHVuZGVyc3RhbmQgdGhlIHN0dWZmCitiZWxvdyB0b28gc28gSSdsbCBhdm9pZCByZXBlYXRpbmcgbXlzZWxmICYganVzdCBzYXkgdGhhdCAKK3NvbWUgb2YgdGhlIGluc3RydWN0aW9ucyBoYXZlIGcncyBvbiB0aGUgZW5kIG9mIHRoZW0gdG8gaW5kaWNhdGUKK3RoZXkgYXJlIDY0IGJpdCAmIHRoZSBzdGFjayBvZmZzZXRzIGFyZSBhIGJpZ2dlciwgCit0aGUgb25seSBvdGhlciBkaWZmZXJlbmNlIHlvdSdsbCBmaW5kIGJldHdlZW4gMzIgJiA2NCBiaXQgaXMgdGhhdAord2Ugbm93IHVzZSBmNCAmIGY2IGZvciBmbG9hdGluZyBwb2ludCBhcmd1bWVudHMgb24gNjQgYml0LgorMDAwMDAwMDA4MDAwMDViMCA8dGVzdD46CitpbnQgdGVzdChpbnQgYikKK3sKKwlyZXR1cm4oNStiKTsKKyAgICA4MDAwMDViMDoJYTcgMmEgMDAgMDUgICAgICAgCWFoaQklcjIsNQorICAgIDgwMDAwNWI0OgliOSAxNCAwMCAyMiAgICAgICAJbGdmcgklcjIsJXIyICMgZG93bmNhc3QgdG8gaW50ZWdlcgorICAgIDgwMDAwNWI4OgkwNyBmZSAgICAgICAgICAgICAJYnIJJXIxNAorICAgIDgwMDAwNWJhOgkwNyAwNyAgICAgICAgICAgICAJYmNyCTAsJXI3CisKKworfQorCiswMDAwMDAwMDgwMDAwNWJjIDxtYWluPjoKK21haW4oaW50IGFyZ2MsY2hhciAqYXJndltdKQoreyAKKyAgICA4MDAwMDViYzoJZWIgYmYgZjAgNTggMDAgMjQgCXN0bWcJJXIxMSwlcjE1LDg4KCVyMTUpCisgICAgODAwMDA1YzI6CWI5IDA0IDAwIDFmICAgICAgIAlsZ3IJJXIxLCVyMTUKKyAgICA4MDAwMDVjNjoJYTcgZmIgZmYgNjAgICAgICAgCWFnaGkJJXIxNSwtMTYwCisgICAgODAwMDA1Y2E6CWUzIDEwIGYwIDAwIDAwIDI0IAlzdGcJJXIxLDAoJXIxNSkKKwlyZXR1cm4odGVzdCg1KSk7CisgICAgODAwMDA1ZDA6CWE3IDI5IDAwIDA1ICAgICAgIAlsZ2hpCSVyMiw1CisgICAgIyBicmFzbCBhbGxvd3MganVtcHMgPiA2NGsgJiBpcyBvdmVya2lsbCBoZXJlIGJyYXMgd291bGQgZG8gZnVuZQorICAgIDgwMDAwNWQ0OgljMCBlNSBmZiBmZiBmZiBlZSAJYnJhc2wJJXIxNCw4MDAwMDViMCA8dGVzdD4gCisgICAgODAwMDA1ZGE6CWUzIDQwIGYxIDEwIDAwIDA0IAlsZwklcjQsMjcyKCVyMTUpCisgICAgODAwMDA1ZTA6CWViIGJmIGYwIGY4IDAwIDA0IAlsbWcJJXIxMSwlcjE1LDI0OCglcjE1KQorICAgIDgwMDAwNWU2OgkwNyBmNCAgICAgICAgICAgICAJYnIJJXI0Cit9CisKKworCitDb21waWxpbmcgcHJvZ3JhbXMgZm9yIGRlYnVnZ2luZyBvbiBMaW51eCBmb3Igcy8zOTAgJiB6L0FyY2hpdGVjdHVyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy1nZHdhcmYtMiBub3cgd29ya3MgaXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgdGhlIGRlZmF1bHQgZGVidWdnaW5nCitmb3JtYXQgZm9yIHMvMzkwICYgei9BcmNoaXRlY3R1cmUgYXMgaXQgaXMgbW9yZSByZWxpYWJsZSBmb3IgZGVidWdnaW5nCitzaGFyZWQgbGlicmFyaWVzLCAgbm9ybWFsIC1nIGRlYnVnZ2luZyB3b3JrcyBtdWNoIGJldHRlciBub3cKK1RoYW5rcyB0byB0aGUgSUJNIGphdmEgY29tcGlsZXIgZGV2ZWxvcGVycyBidWcgcmVwb3J0cy4gCisKK1RoaXMgaXMgdHlwaWNhbGx5IGRvbmUgYWRkaW5nL2FwcGVuZGluZyB0aGUgZmxhZ3MgLWcgb3IgLWdkd2FyZi0yIHRvIHRoZSAKK0NGTEFHUyAmIExERkxBR1MgdmFyaWFibGVzIE1ha2VmaWxlIG9mIHRoZSBwcm9ncmFtIGNvbmNlcm5lZC4KKworSWYgdXNpbmcgZ2RiICYgeW91IHdvdWxkIGxpa2UgYWNjdXJhdGUgZGlzcGxheXMgb2YgcmVnaXN0ZXJzICYKKyBzdGFjayB0cmFjZXMgY29tcGlsZSB3aXRob3V0IG9wdGltaXNhdGlvbiBpLmUgbWFrZSBzdXJlCit0aGF0IHRoZXJlIGlzIG5vIC1PMiBvciBzaW1pbGFyIG9uIHRoZSBDRkxBR1MgbGluZSBvZiB0aGUgTWFrZWZpbGUgJgordGhlIGVtaXR0ZWQgZ2NjIGNvbW1hbmRzLCBvYnZpb3VzbHkgdGhpcyB3aWxsIHByb2R1Y2Ugd29yc2UgY29kZSAKKyggbm90IGFkdmlzYWJsZSBmb3Igc2hpcG1lbnQgKSBidXQgaXQgaXMgYW4gIGFpZCB0byB0aGUgZGVidWdnaW5nIHByb2Nlc3MuCisKK1RoaXMgYWlkcyBkZWJ1Z2dpbmcgYmVjYXVzZSB0aGUgY29tcGlsZXIgd2lsbCBjb3B5IHBhcmFtZXRlcnMgcGFzc2VkIGluCitpbiByZWdpc3RlcnMgb250byB0aGUgc3RhY2sgc28gYmFja3RyYWNpbmcgJiBsb29raW5nIGF0IHBhc3NlZCBpbgorcGFyYW1ldGVycyB3aWxsIHdvcmssIGhvd2V2ZXIgc29tZSBsYXJnZXIgcHJvZ3JhbXMgd2hpY2ggdXNlIGlubGluZSBmdW5jdGlvbnMKK3dpbGwgbm90IGNvbXBpbGUgd2l0aG91dCBvcHRpbWlzYXRpb24uCisKK0RlYnVnZ2luZyB3aXRoIG9wdGltaXNhdGlvbiBoYXMgc2luY2UgbXVjaCBpbXByb3ZlZCBhZnRlciBmaXhpbmcKK3NvbWUgYnVncywgcGxlYXNlIG1ha2Ugc3VyZSB5b3UgYXJlIHVzaW5nIGdkYi01LjAgb3IgbGF0ZXIgZGV2ZWxvcGVkIAorYWZ0ZXIgTm92JzIwMDAuCisKKworCitEZWJ1Z2dpbmcgdW5kZXIgVk0KKz09PT09PT09PT09PT09PT09PQorCitOb3RlcworLS0tLS0KK0FkZHJlc3NlcyAmIHZhbHVlcyBpbiB0aGUgVk0gZGVidWdnZXIgYXJlIGFsd2F5cyBoZXggbmV2ZXIgZGVjaW1hbAorQWRkcmVzcyByYW5nZXMgYXJlIG9mIHRoZSBmb3JtYXQgPEhleFZhbHVlMT4tPEhleFZhbHVlMj4gb3IKKzxIZXhWYWx1ZTE+LjxIZXhWYWx1ZTI+CitGb3IgZXhhbXBsZSwgdGhlIGFkZHJlc3MgcmFuZ2UJMHgyMDAwIHRvIDB4MzAwMCBjYW4gYmUgZGVzY3JpYmVkIGFzIDIwMDAtMzAwMAorb3IgMjAwMC4xMDAwCisKK1RoZSBWTSBEZWJ1Z2dlciBpcyBjYXNlIGluc2Vuc2l0aXZlLgorCitWTSdzIHN0cmVuZ3RocyBhcmUgdXN1YWxseSBvdGhlciBkZWJ1Z2dlcnMgd2Vha25lc3NlcyB5b3UgY2FuIGdldCBhdCBhbnkKK3Jlc291cmNlIG5vIG1hdHRlciBob3cgc2Vuc2l0aXZlIGUuZy4gbWVtb3J5IG1hbmFnZW1lbnQgcmVzb3VyY2VzLCBjaGFuZ2UKK2FkZHJlc3MgdHJhbnNsYXRpb24gaW4gdGhlIFBTVy4gRm9yIGtlcm5lbCBoYWNraW5nIHlvdSB3aWxsIHJlYXAgZGl2aWRlbmRzIGlmCit5b3UgZ2V0IGdvb2QgYXQgaXQuCisKK1RoZSBWTSBEZWJ1Z2dlciBkaXNwbGF5cyBvcGVyYXRvcnMgYnV0IG5vdCBvcGVyYW5kcywgYW5kIGFsc28gdGhlIGRlYnVnZ2VyCitkaXNwbGF5cyB1c2VmdWwgaW5mb3JtYXRpb24gb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgYXV0aG9yIG9mIHRoZSBjb2RlIHByb2JhYmx5CitmZWx0IHRoYXQgaXQgd2FzIGEgZ29vZCBpZGVhIG5vdCB0byBnbyBvdmVyIHRoZSA4MCBjb2x1bW5zIG9uIHRoZSBzY3JlZW4uCitUaGlzIGlzbid0IGFzIHVuaW50dWl0aXZlIGFzIGl0IG1heSBzZWVtIGFzIHRoZSBzLzM5MCBpbnN0cnVjdGlvbnMgYXJlIGVhc3kgdG8KK2RlY29kZSBtZW50YWxseSBhbmQgeW91IGNhbiBtYWtlIGEgZ29vZCBndWVzcyBhdCBhIGxvdCBvZiB0aGVtIGFzIGFsbCB0aGUKK29wZXJhbmRzIGFyZSBuaWJibGUgKGhhbGYgYnl0ZSBhbGlnbmVkKS4KK1NvIGlmIHlvdSBoYXZlIGFuIG9iamR1bXAgbGlzdGluZyBieSBoYW5kLCBpdCBpcyBxdWl0ZSBlYXN5IHRvIGZvbGxvdywgYW5kIGlmCit5b3UgZG9uJ3QgaGF2ZSBhbiBvYmpkdW1wIGxpc3Rpbmcga2VlcCBhIGNvcHkgb2YgdGhlIHMvMzkwIFJlZmVyZW5jZSBTdW1tYXJ5CitvciBhbHRlcm5hdGl2ZWx5IHRoZSBzLzM5MCBwcmluY2lwbGVzIG9mIG9wZXJhdGlvbiBuZXh0IHRvIHlvdS4KK2UuZy4gZXZlbiBJIGNhbiBndWVzcyB0aGF0IAorMDAwMUFGRjgnIExSICAgIDE4MEYgICAgICAgIENDIDAKK2lzIGEgKCBsb2FkIHJlZ2lzdGVyICkgbHIgcjAscjE1IAorCitBbHNvIGl0IGlzIHZlcnkgZWFzeSB0byB0ZWxsIHRoZSBsZW5ndGggb2YgYSAzOTAgaW5zdHJ1Y3Rpb24gZnJvbSB0aGUgMiBtb3N0CitzaWduaWZpY2FudCBiaXRzIGluIHRoZSBpbnN0cnVjdGlvbiAobm90IHRoYXQgdGhpcyBpbmZvIGlzIHJlYWxseSB1c2VmdWwgZXhjZXB0CitpZiB5b3UgYXJlIHRyeWluZyB0byBtYWtlIHNlbnNlIG9mIGEgaGV4ZHVtcCBvZiBjb2RlKS4KK0hlcmUgaXMgYSB0YWJsZQorQml0cyAgICAgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb24gTGVuZ3RoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzAwICAgICAgICAgICAgICAgICAgICAgICAgICAyIEJ5dGVzCiswMSAgICAgICAgICAgICAgICAgICAgICAgICAgNCBCeXRlcworMTAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgQnl0ZXMKKzExICAgICAgICAgICAgICAgICAgICAgICAgICA2IEJ5dGVzCisKK1RoZSBkZWJ1Z2dlciBhbHNvIGRpc3BsYXlzIG90aGVyIHVzZWZ1bCBpbmZvIG9uIHRoZSBzYW1lIGxpbmUgc3VjaCBhcyB0aGUKK2FkZHJlc3NlcyBiZWluZyBvcGVyYXRlZCBvbiBkZXN0aW5hdGlvbiBhZGRyZXNzZXMgb2YgYnJhbmNoZXMgJiBjb25kaXRpb24gY29kZXMuCitlLmcuICAKKzAwMDE5NzM2JyBBSEkgICBBN0RBRkYwRSAgICBDQyAxCiswMDAxOThCQScgQlJDICAgQTc4NDAwMDQgLT4gMDAwMTk4QzInICAgQ0MgMAorMDAwMTk4Q0UnIFNUTSAgIDkwMEVGMDY4ID4+IDBGQTk1RTc4ICAgIENDIDIKKworCisKK1VzZWZ1bCBWTSBkZWJ1Z2dlciBjb21tYW5kcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0kgc3VwcG9zZSBJJ2QgYmV0dGVyIG1lbnRpb24gdGhpcyBiZWZvcmUgSSBzdGFydAordG8gbGlzdCB0aGUgY3VycmVudCBhY3RpdmUgdHJhY2VzIGRvIAorUSBUUgordGhlcmUgY2FuIGJlIGEgbWF4aW11bSBvZiAyNTUgb2YgdGhlc2UgcGVyIHNldAorKCBtb3JlIGFib3V0IHRyYWNlIHNldHMgbGF0ZXIgKS4KK1RvIHN0b3AgdHJhY2VzIGlzc3VlIGEKK1RSIEVORC4KK1RvIGRlbGV0ZSBhIHBhcnRpY3VsYXIgYnJlYWtwb2ludCBpc3N1ZQorVFIgREVMIDxicmVha3BvaW50IG51bWJlcj4KKworVGhlIFBBMSBrZXkgZHJvcHMgdG8gQ1AgbW9kZSBzbyB5b3UgY2FuIGlzc3VlIGRlYnVnZ2VyIGNvbW1hbmRzLAorRG9pbmcgYWx0IGMgKG9uIG15IDMyNzAgY29uc29sZSBhdCBsZWFzdCApIGNsZWFycyB0aGUgc2NyZWVuLiAKK2hpdHRpbmcgYiA8ZW50ZXI+IGNvbWVzIGJhY2sgdG8gdGhlIHJ1bm5pbmcgb3BlcmF0aW5nIHN5c3RlbQorZnJvbSBjcCBtb2RlICggaW4gb3VyIGNhc2UgbGludXggKS4KK0l0IGlzIHR5cGljYWxseSB1c2VmdWwgdG8gYWRkIHNob3J0Y3V0cyB0byB5b3VyIHByb2ZpbGUuZXhlYyBmaWxlCitpZiB5b3UgaGF2ZSBvbmUgKCB0aGlzIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byBhdXRvZXhlYy5iYXQgaW4gRE9TICkuCitmaWxlIGhlcmUgYXJlIGEgZmV3IGZyb20gbWluZS4KKy8qIHRoaXMgZ2l2ZXMgbWUgY29tbWFuZCBoaXN0b3J5IG9uIGlzc3VpbmcgZjEyICovCitzZXQgcGYxMiByZXRyaWV2ZSAKKy8qIHRoaXMgY29udGludWVzICovCitzZXQgcGY4IGltbSBiCisvKiBnb2VzIHRvIHRyYWNlIHNldCBhICovCitzZXQgcGYxIGltbSB0ciBnb3RvIGEKKy8qIGdvZXMgdG8gdHJhY2Ugc2V0IGIgKi8KK3NldCBwZjIgaW1tIHRyIGdvdG8gYgorLyogZ29lcyB0byB0cmFjZSBzZXQgYyAqLworc2V0IHBmMyBpbW0gdHIgZ290byBjCisKKworCitJbnN0cnVjdGlvbiBUcmFjaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tCitTZXR0aW5nIGEgc2ltcGxlIGJyZWFrcG9pbnQKK1RSIEkgUFNXQSA8YWRkcmVzcz4KK1RvIGRlYnVnIGEgcGFydGljdWxhciBmdW5jdGlvbiB0cnkKK1RSIEkgUiA8ZnVuY3Rpb24gYWRkcmVzcyByYW5nZT4KK1RSIEkgb24gaXRzIG93biB3aWxsIHNpbmdsZSBzdGVwLgorVFIgSSBEQVRBIDxNTkVNT05JQz4gPE9QVElPTkFMIFJBTkdFPiB3aWxsIHRyYWNlIGZvciBwYXJ0aWN1bGFyIG1uZW1vbmljcworZS5nLgorVFIgSSBEQVRBIDREIFIgMDE5N0JDLjQwMDAKK3dpbGwgdHJhY2UgZm9yIEJBUydlcyAoIG9wY29kZSA0RCApIGluIHRoZSByYW5nZSAwMTk3QkMuNDAwMAoraWYgeW91IHdlcmUgaW5jbGluZWQgeW91IGNvdWxkIGFkZCB0cmFjZXMgZm9yIGFsbCBicmFuY2ggaW5zdHJ1Y3Rpb25zICYKK3N1ZmZpeCB0aGVtIHdpdGggdGhlIHJ1biBwcmVmaXggc28geW91IHdvdWxkIGhhdmUgYSBiYWNrdHJhY2Ugb24gc2NyZWVuIAord2hlbiBhIHByb2dyYW0gY3Jhc2hlcy4KK1RSIEJSIDxJTlRPIE9SIEZST00+IHdpbGwgdHJhY2UgYnJhbmNoZXMgaW50byBvciBvdXQgb2YgYW4gYWRkcmVzcy4KK2UuZy4KK1RSIEJSIElOVE8gMCBpcyBvZnRlbiBxdWl0ZSB1c2VmdWwgaWYgYSBwcm9ncmFtIGlzIGdldHRpbmcgYXdrd2FyZCAmIGRlY2lkaW5nCit0byBicmFuY2ggdG8gMCAmIGNyYXNoaW5nIGFzIHRoaXMgd2lsbCBzdG9wIGF0IHRoZSBhZGRyZXNzIGJlZm9yZSBpbiBqdW1wcyB0byAwLgorVFIgSSBSIDxhZGRyZXNzIHJhbmdlPiBSVU4gY21kIGQgZworc2luZ2xlIHN0ZXBzIGEgcmFuZ2Ugb2YgYWRkcmVzc2VzIGJ1dCBzdGF5cyBydW5uaW5nICYKK2Rpc3BsYXlzIHRoZSBncHJzIG9uIGVhY2ggc3RlcC4KKworCisKK0Rpc3BsYXlpbmcgJiBtb2RpZnlpbmcgUmVnaXN0ZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRCBHIHdpbGwgZGlzcGxheSBhbGwgdGhlIGdwcnMKK0FkZGluZyBhIGV4dHJhIEcgdG8gYWxsIHRoZSBjb21tYW5kcyBpcyBuZWNlc3NhcnkgdG8gYWNjZXNzIHRoZSBmdWxsIDY0IGJpdCAKK2NvbnRlbnQgaW4gVk0gb24gei9BcmNoaXRlY3R1cmUuIE9idmlvdXNseSB0aGlzIGlzbid0IHJlcXVpcmVkIGZvciBhY2Nlc3MKK3JlZ2lzdGVycyBhcyB0aGVzZSBhcmUgc3RpbGwgMzIgYml0LgorZS5nLiBER0cgaW5zdGVhZCBvZiBERyAKK0QgWCB3aWxsIGRpc3BsYXkgYWxsIHRoZSBjb250cm9sIHJlZ2lzdGVycworRCBBUiB3aWxsIGRpc3BsYXkgYWxsIHRoZSBhY2Nlc3MgcmVnaXN0ZXJzCitEIEFSNC03IHdpbGwgZGlzcGxheSBhY2Nlc3MgcmVnaXN0ZXJzIDQgdG8gNworQ1BVIEFMTCBEIEcgd2lsbCBkaXNwbGF5IHRoZSBHUlBTIG9mIGFsbCBDUFVTIGluIHRoZSBjb25maWd1cmF0aW9uCitEIFBTVyB3aWxsIGRpc3BsYXkgdGhlIGN1cnJlbnQgUFNXCitzdCBQU1cgMjAwMCB3aWxsIHB1dCB0aGUgdmFsdWUgMjAwMCBpbnRvIHRoZSBQU1cgJgorY2F1c2UgY3Jhc2ggeW91ciBtYWNoaW5lLgorRCBQUkVGSVggZGlzcGxheXMgdGhlIHByZWZpeCBvZmZzZXQKKworCitEaXNwbGF5aW5nIE1lbW9yeQorLS0tLS0tLS0tLS0tLS0tLS0KK1RvIGRpc3BsYXkgbWVtb3J5IG1hcHBlZCB1c2luZyB0aGUgY3VycmVudCBQU1cncyBtYXBwaW5nIHRyeQorRCA8cmFuZ2U+CitUbyBtYWtlIFZNIGRpc3BsYXkgYSBtZXNzYWdlIGVhY2ggdGltZSBpdCBoaXRzIGEgcGFydGljdWxhciBhZGRyZXNzIGFuZAorY29udGludWUgdHJ5CitEIEk8cmFuZ2U+IHdpbGwgZGlzYXNzZW1ibGUvZGlzcGxheSBhIHJhbmdlIG9mIGluc3RydWN0aW9ucy4KK1NUIGFkZHIgMzIgYml0IHdvcmQgd2lsbCBzdG9yZSBhIDMyIGJpdCBhbGlnbmVkIGFkZHJlc3MKK0QgVDxyYW5nZT4gd2lsbCBkaXNwbGF5IHRoZSBFQkNESUMgaW4gYW4gYWRkcmVzcyAoaWYgeW91IGFyZSB0aGF0IHdheSBpbmNsaW5lZCkKK0QgUjxyYW5nZT4gd2lsbCBkaXNwbGF5IHJlYWwgYWRkcmVzc2VzICggd2l0aG91dCBEQVQgKSBidXQgd2l0aCBwcmVmaXhpbmcuCitUaGVyZSBhcmUgb3RoZXIgY29tcGxleCBvcHRpb25zIHRvIGRpc3BsYXkgaWYgeW91IG5lZWQgdG8gZ2V0IGF0IHNheSBob21lIHNwYWNlCitidXQgYXJlIGluIHByaW1hcnkgc3BhY2UgdGhlIGVhc2llc3QgdGhpbmcgdG8gZG8gaXMgdG8gdGVtcG9yYXJpbHkKK21vZGlmeSB0aGUgUFNXIHRvIHRoZSBvdGhlciBhZGRyZXNzaW5nIG1vZGUsIGRpc3BsYXkgdGhlIHN0dWZmICYgdGhlbgorcmVzdG9yZSBpdC4KKworCisgCitIaW50cworLS0tLS0KK0lmIHlvdSB3YW50IHRvIGlzc3VlIGEgZGVidWdnZXIgY29tbWFuZCB3aXRob3V0IGhhbHRpbmcgeW91ciB2aXJ0dWFsIG1hY2hpbmUKK3dpdGggdGhlIFBBMSBrZXkgdHJ5IHByZWZpeGluZyB0aGUgY29tbWFuZCB3aXRoICNDUCBlLmcuCisjY3AgdHIgaSBwc3dhIDIwMDAKK2Fsc28gc3VmZml4aW5nIG1vc3QgZGVidWdnZXIgY29tbWFuZHMgd2l0aCBSVU4gd2lsbCBjYXVzZSB0aGVtIG5vdAordG8gc3RvcCBqdXN0IGRpc3BsYXkgdGhlIG1uZW1vbmljIGF0IHRoZSBjdXJyZW50IGluc3RydWN0aW9uIG9uIHRoZSBjb25zb2xlLgorSWYgeW91IGhhdmUgc2V2ZXJhbCBicmVha3BvaW50cyB5b3Ugd2FudCB0byBwdXQgaW50byB5b3VyIHByb2dyYW0gJgoreW91IGdldCBmZWQgdXAgb2YgY3Jvc3MgcmVmZXJlbmNpbmcgd2l0aCBTeXN0ZW0ubWFwCit5b3UgY2FuIGRvIHRoZSBmb2xsb3dpbmcgdHJpY2sgZm9yIHNldmVyYWwgc3ltYm9scy4KK2dyZXAgZG9fc2lnbmFsIFN5c3RlbS5tYXAgCit3aGljaCBlbWl0cyB0aGUgZm9sbG93aW5nIGFtb25nIG90aGVyIHRoaW5ncworMDAwMWY0ZTAgVCBkb19zaWduYWwgCitub3cgeW91IGNhbiBkbworCitUUiBJIFBTV0EgMDAwMWY0ZTAgY21kIG1zZyAqIGRvX3NpZ25hbAorVGhpcyBzZW5kcyBhIG1lc3NhZ2UgdG8geW91ciBvd24gY29uc29sZSBlYWNoIHRpbWUgZG9fc2lnbmFsIGlzIGVudGVyZWQuCisoIEFzIGFuIGFzaWRlIEkgd3JvdGUgYSBwZXJsIHNjcmlwdCBvbmNlIHdoaWNoIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGEgUkVYWAorc2NyaXB0IHdpdGggYnJlYWtwb2ludHMgb24gZXZlcnkga2VybmVsIHByb2NlZHVyZSwgdGhpcyBpc24ndCBhIGdvb2QgaWRlYQorYmVjYXVzZSB0aGVyZSBhcmUgdGhvdXNhbmRzIG9mIHRoZXNlIHJvdXRpbmVzICYgVk0gY2FuIG9ubHkgc2V0IDI1NSBicmVha3BvaW50cworYXQgYSB0aW1lIHNvIHlvdSBuZWFybHkgaGFkIHRvIHNwZW5kIGFzIGxvbmcgcHJ1bmluZyB0aGUgZmlsZSBkb3duIGFzIHlvdSB3b3VsZCAKK2VudGVyaW5nIHRoZSBtc2dzIGJ5IGhhbmQpLCBob3dldmVyLCB0aGUgdHJpY2sgbWlnaHQgYmUgdXNlZnVsIGZvciBhIHNpbmdsZQorb2JqZWN0IGZpbGUuIEluIHRoZSAzMjcwIHRlcm1pbmFsIGVtdWxhdG9yIHgzMjcwIHRoZXJlIGlzIGEgdmVyeSB1c2VmdWwgb3B0aW9uCitpbiB0aGUgZmlsZSBtZW51IGNhbGxlZCAiU2F2ZSBTY3JlZW4gSW4gRmlsZSIgLSB0aGlzIGlzIHZlcnkgZ29vZCBmb3Iga2VlcGluZyBhCitjb3B5IG9mIHRyYWNlcy4KKworRnJvbSBDTVMgaGVscCA8Y29tbWFuZCBuYW1lPiB3aWxsIGdpdmUgeW91IG9ubGluZSBoZWxwIG9uIGEgcGFydGljdWxhciBjb21tYW5kLiAKK2UuZy4gCitIRUxQIERJU1BMQVkKKworQWxzbyBDUCBoYXMgYSBmaWxlIGNhbGxlZCBwcm9maWxlLmV4ZWMgd2hpY2ggYXV0b21hdGljYWxseSBnZXRzIGNhbGxlZAorb24gc3RhcnR1cCBvZiBDTVMgKCBsaWtlIGF1dG9leGVjLmJhdCApLCBrZWVwaW5nIG9uIGEgRE9TIGFuYWxvZ3kgc2Vzc2lvbgorQ1AgaGFzIGEgZmVhdHVyZSBzaW1pbGFyIHRvIGRvc2tleSwgaXQgbWF5IGJlIHVzZWZ1bCBmb3IgeW91IHRvCit1c2UgcHJvZmlsZS5leGVjIHRvIGRlZmluZSBzb21lIGtleXN0cm9rZXMuIAorZS5nLgorU0VUIFBGOSBJTU0gQgorVGhpcyBkb2VzIGEgc2luZ2xlIHN0ZXAgaW4gVk0gb24gcHJlc3NpbmcgRjguIAorU0VUIFBGMTAgIF4KK1RoaXMgc2V0cyB1cCB0aGUgXiBrZXkuCit3aGljaCBjYW4gYmUgdXNlZCBmb3IgXmMgKGN0cmwtYyksXnogKGN0cmwteikgd2hpY2ggY2FuJ3QgYmUgdHlwZWQgZGlyZWN0bHkKK2ludG8gc29tZSAzMjcwIGNvbnNvbGVzLgorU0VUIFBGMTEgXi0KK1RoaXMgdHlwZXMgdGhlIHN0YXJ0aW5nIGtleXN0cm9rZXMgZm9yIGEgc3lzcnEgc2VlIFN5c1JxIGJlbG93LgorU0VUIFBGMTIgUkVUUklFVkUKK1RoaXMgcmV0cmlldmVzIGNvbW1hbmQgaGlzdG9yeSBvbiBwcmVzc2luZyBGMTIuCisKKworU29tZXRpbWVzIGluIFZNIHRoZSBkaXNwbGF5IGlzIHNldCB1cCB0byBzY3JvbGwgYXV0b21hdGljYWxseSB0aGlzCitjYW4gYmUgdmVyeSBhbm5veWluZyBpZiB0aGVyZSBhcmUgbWVzc2FnZXMgeW91IHdpc2ggdG8gbG9vayBhdAordG8gc3RvcCB0aGlzIGRvCitURVJNIE1PUkUgMjU1IDI1NQorVGhpcyB3aWxsIG5lYXJseSBzdG9wIGF1dG9tYXRpYyBzY3JlZW4gdXBkYXRlcywgaG93ZXZlciBpdCB3aWxsCitjYXVzZSBhIGRlbmlhbCBvZiBzZXJ2aWNlIGlmIGxvdHMgb2YgbWVzc2FnZXMgZ28gdG8gdGhlIDMyNzAgY29uc29sZSwKK3NvIGl0IHdvdWxkIGJlIGZvb2xpc2ggdG8gdXNlIHRoaXMgYXMgdGhlIGRlZmF1bHQgb24gYSBwcm9kdWN0aW9uIG1hY2hpbmUuCisgCisKK1RyYWNpbmcgcGFydGljdWxhciBwcm9jZXNzZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBrZXJuZWwncyB0ZXh0IHNlZ21lbnQgaXMgaW50ZW50aW9uYWxseSBhdCBhbiBhZGRyZXNzIGluIG1lbW9yeSB0aGF0IGl0IHdpbGwKK3Zlcnkgc2VsZG9tIGNvbGxpZGUgd2l0aCB0ZXh0IHNlZ21lbnRzIG9mIHVzZXIgcHJvZ3JhbXMgKCB0aGFua3MgTWFydGluICksCit0aGlzIHNpbXBsaWZpZXMgZGVidWdnaW5nIHRoZSBrZXJuZWwuCitIb3dldmVyIGl0IGlzIHF1aXRlIGNvbW1vbiBmb3IgdXNlciBwcm9jZXNzZXMgdG8gaGF2ZSBhZGRyZXNzZXMgd2hpY2ggY29sbGlkZQordGhpcyBjYW4gbWFrZSBkZWJ1Z2dpbmcgYSBwYXJ0aWN1bGFyIHByb2Nlc3MgdW5kZXIgVk0gcGFpbmZ1bCB1bmRlciBub3JtYWwKK2NpcmN1bXN0YW5jZXMgYXMgdGhlIHByb2Nlc3MgbWF5IGNoYW5nZSB3aGVuIGRvaW5nIGEgCitUUiBJIFIgPGFkZHJlc3MgcmFuZ2U+LgorVGhhbmtmdWxseSBhZnRlciByZWFkaW5nIFZNJ3Mgb25saW5lIGhlbHAgSSBmaWd1cmVkIG91dCBob3cgdG8gZGVidWcKK0kgcGFydGljdWxhciBwcm9jZXNzLgorCitZb3VyIGZpcnN0IHByb2JsZW0gaXMgdG8gZmluZCB0aGUgU1REICggc2VnbWVudCB0YWJsZSBkZXNpZ25hdGlvbiApCitvZiB0aGUgcHJvZ3JhbSB5b3Ugd2lzaCB0byBkZWJ1Zy4KK1RoZXJlIGFyZSBzZXZlcmFsIHdheXMgeW91IGNhbiBkbyB0aGlzIGhlcmUgYXJlIGEgZmV3CisxKSBvYmpkdW1wIC0tc3ltcyA8cHJvZ3JhbSB0byBiZSBkZWJ1Z2dlZD4gfCBncmVwIG1haW4KK1RvIGdldCB0aGUgYWRkcmVzcyBvZiBtYWluIGluIHRoZSBwcm9ncmFtLgordHIgaSBwc3dhIDxhZGRyZXNzIG9mIG1haW4+CitTdGFydCB0aGUgcHJvZ3JhbSwgaWYgVk0gZHJvcHMgdG8gQ1Agb24gd2hhdCBsb29rcyBsaWtlIHRoZSBlbnRyeQorcG9pbnQgb2YgdGhlIG1haW4gZnVuY3Rpb24gdGhpcyBpcyBtb3N0IGxpa2VseSB0aGUgcHJvY2VzcyB5b3Ugd2lzaCB0byBkZWJ1Zy4KK05vdyBkbyBhIEQgWDEzIG9yIEQgWEcxMyBvbiB6L0FyY2hpdGVjdHVyZS4KK09uIDMxIGJpdCB0aGUgU1REIGlzIGJpdHMgMS0xOSAoIHRoZSBTVE8gc2VnbWVudCB0YWJsZSBvcmlnaW4gKSAKKyYgMjUtMzEgKCB0aGUgU1RMIHNlZ21lbnQgdGFibGUgbGVuZ3RoICkgb2YgQ1IxMy4KK25vdyB0eXBlCitUUiBJIFIgU1REIDxDUjEzJ3MgdmFsdWU+IDAuN2ZmZmZmZmYKK2UuZy4KK1RSIEkgUiBTVEQgOEYzMkUxRkYgMC43ZmZmZmZmZgorQW5vdGhlciB2ZXJ5IHVzZWZ1bCB2YXJpYXRpb24gaXMKK1RSIFNUT1JFIElOVE8gU1REIDxDUjEzJ3MgdmFsdWU+IDxhZGRyZXNzIHJhbmdlPgorZm9yIGZpbmRpbmcgb3V0IHdoZW4gYSBwYXJ0aWN1bGFyIHZhcmlhYmxlIGNoYW5nZXMuCisKK0FuIGFsdGVybmF0aXZlIHdheSBvZiBmaW5kaW5nIHRoZSBTVEQgb2YgYSBjdXJyZW50bHkgcnVubmluZyBwcm9jZXNzIAoraXMgdG8gZG8gdGhlIGZvbGxvd2luZywgKCB0aGlzIG1ldGhvZCBpcyBtb3JlIGNvbXBsZXggYnV0Citjb3VsZCBiZSBxdWl0ZSBjb252ZW5pZW50IGlmIHlvdSBhcmVuJ3QgdXBkYXRpbmcgdGhlIGtlcm5lbCBtdWNoICYKK3NvIHlvdXIga2VybmVsIHN0cnVjdHVyZXMgd2lsbCBzdGF5IGNvbnN0YW50IGZvciBhIHJlYXNvbmFibGUgcGVyaW9kIG9mCit0aW1lICkuCisKK2dyZXAgdGFzayAvcHJvYy88cGlkPi9zdGF0dXMKK2Zyb20gdGhpcyB5b3Ugc2hvdWxkIHNlZSBzb21ldGhpbmcgbGlrZQordGFzazogMGYxNjAwMDAga3NwOiAwZjE2MWRlOCBwdF9yZWdzOiAwZjE2MWY2OAorVGhpcyBub3cgZ2l2ZXMgeW91IGEgcG9pbnRlciB0byB0aGUgdGFzayBzdHJ1Y3R1cmUuCitOb3cgbWFrZSBDQzo9InMzOTAtZ2NjIC1nIiBrZXJuZWwvc2NoZWQucworVG8gZ2V0IHRoZSB0YXNrX3N0cnVjdCBzdGFiaW5mby4KKyggdGFza19zdHJ1Y3QgaXMgZGVmaW5lZCBpbiBpbmNsdWRlL2xpbnV4L3NjaGVkLmggKS4KK05vdyB3ZSB3YW50IHRvIGxvb2sgYXQKK3Rhc2stPmFjdGl2ZV9tbS0+cGdkCitvbiBteSBtYWNoaW5lIHRoZSBhY3RpdmVfbW0gaW4gdGhlIHRhc2sgc3RydWN0dXJlIHN0YWIgaXMKK2FjdGl2ZV9tbTooNCwxMiksNjcyLDMyCitpdHMgb2Zmc2V0IGlzIDY3Mi84PTg0PTB4NTQKK3RoZSBwZ2QgbWVtYmVyIGluIHRoZSBtbV9zdHJ1Y3Qgc3RhYiBpcworcGdkOig0LDYpPSooMjksNSksOTYsMzIKK3NvIGl0cyBvZmZzZXQgaXMgOTYvOD0xMj0weGMKKworc28gd2UnbGwKK2hleGR1bXAgLXMgMHhmMTYwMDU0IC9kZXYvbWVtIHwgbW9yZQoraS5lLiB0YXNrX3N0cnVjdCthY3RpdmVfbW0gb2Zmc2V0Cit0byBsb29rIGF0IHRoZSBhY3RpdmVfbW0gbWVtYmVyCitmMTYwMDU0IDBmZWUgY2M2MCAwMDE5IGUzMzQgMDAwMCAwMDAwIDAwMDAgMDAxMQoraGV4ZHVtcCAtcyAweDBmZWVjYzZjIC9kZXYvbWVtIHwgbW9yZQoraS5lLiBhY3RpdmVfbW0rcGdkIG9mZnNldAorZmVlY2M2YyAwZjJjIDAwMDAgMDAwMCAwMDAxIDAwMDAgMDAwMSAwMDAwIDAwMTAKK3dlIGdldCBzb21ldGhpbmcgbGlrZQorbm93IGRvIAorVFIgSSBSIFNURCA8cGdkfDB4N2Y+IDAuN2ZmZmZmZmYKK2kuZS4gdGhlIDB4N2YgaXMgYWRkZWQgYmVjYXVzZSB0aGUgcGdkIG9ubHkKK2dpdmVzIHRoZSBwYWdlIHRhYmxlIG9yaWdpbiAmIHdlIG5lZWQgdG8gc2V0IHRoZSBsb3cgYml0cwordG8gdGhlIG1heGltdW0gcG9zc2libGUgc2VnbWVudCB0YWJsZSBsZW5ndGguCitUUiBJIFIgU1REIDBmMmMwMDdmIDAuN2ZmZmZmZmYKK29uIHovQXJjaGl0ZWN0dXJlIHlvdSdsbCBwcm9iYWJseSBuZWVkIHRvIGRvCitUUiBJIFIgU1REIDxwZ2R8MHg3PiAwLmZmZmZmZmZmZmZmZmZmZmYKK3RvIHNldCB0aGUgVGFibGVUeXBlIHRvIDB4MSAmIHRoZSBUYWJsZSBsZW5ndGggdG8gMy4KKworCisKK1RyYWNpbmcgUHJvZ3JhbSBFeGNlcHRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSWYgeW91IGdldCBhIGNyYXNoIHdoaWNoIHNheXMgc29tZXRoaW5nIGxpa2UKK2lsbGVnYWwgb3BlcmF0aW9uIG9yIHNwZWNpZmljYXRpb24gZXhjZXB0aW9uIGZvbGxvd2VkIGJ5IGEgcmVnaXN0ZXIgZHVtcAorWW91IGNhbiByZXN0YXJ0IGxpbnV4ICYgdHJhY2UgdGhlc2UgdXNpbmcgdGhlIHRyIHByb2cgPHJhbmdlIG9yIHZhbHVlPiB0cmFjZQorb3B0aW9uLgorCisKK1RoZSBtb3N0IGNvbW1vbiBvbmVzIHlvdSB3aWxsIG5vcm1hbGx5IGJlIHRyYWNpbmcgZm9yIGlzCisxPW9wZXJhdGlvbiBleGNlcHRpb24KKzI9cHJpdmlsZWdlZCBvcGVyYXRpb24gZXhjZXB0aW9uCis0PXByb3RlY3Rpb24gZXhjZXB0aW9uCis1PWFkZHJlc3NpbmcgZXhjZXB0aW9uCis2PXNwZWNpZmljYXRpb24gZXhjZXB0aW9uCisxMD1zZWdtZW50IHRyYW5zbGF0aW9uIGV4Y2VwdGlvbgorMTE9cGFnZSB0cmFuc2xhdGlvbiBleGNlcHRpb24KKworVGhlIGZ1bGwgbGlzdCBvZiB0aGVzZSBpcyBvbiBwYWdlIDIyIG9mIHRoZSBjdXJyZW50IHMvMzkwIFJlZmVyZW5jZSBTdW1tYXJ5LgorZS5nLgordHIgcHJvZyAxMCB3aWxsIHRyYWNlIHNlZ21lbnQgdHJhbnNsYXRpb24gZXhjZXB0aW9ucy4KK3RyIHByb2cgb24gaXRzIG93biB3aWxsIHRyYWNlIGFsbCBwcm9ncmFtIGludGVycnVwdGlvbiBjb2Rlcy4KKworVHJhY2UgU2V0cworLS0tLS0tLS0tLQorT24gc3RhcnRpbmcgVk0geW91IGFyZSBpbml0aWFsbHkgaW4gdGhlIElOSVRJQUwgdHJhY2Ugc2V0LgorWW91IGNhbiBkbyBhIFEgVFIgdG8gdmVyaWZ5IHRoaXMuCitJZiB5b3UgaGF2ZSBhIGNvbXBsZXggdHJhY2luZyBzaXR1YXRpb24gd2hlcmUgeW91IHdpc2ggdG8gd2FpdCBmb3IgaW5zdGFuY2UgCit0aWxsIGEgZHJpdmVyIGlzIG9wZW4gYmVmb3JlIHlvdSBzdGFydCB0cmFjaW5nIElPLCBidXQga25vdyBpbiB5b3VyCitoZWFydCB0aGF0IHlvdSBhcmUgZ29pbmcgdG8gaGF2ZSB0byBtYWtlIHNldmVyYWwgcnVucyB0aHJvdWdoIHRoZSBjb2RlIHRpbGwgeW91CitoYXZlIGEgY2x1ZSB3aGF0cyBnb2luZyBvbi4gCisKK1doYXQgeW91IGNhbiBkbyBpcworVFIgSSBQU1dBIDxEcml2ZXIgb3BlbiBhZGRyZXNzPgoraGl0IGIgdG8gY29udGludWUgdGlsbCBicmVha3BvaW50CityZWFjaCB0aGUgYnJlYWtwb2ludAorbm93IGRvIHlvdXIKK1RSIEdPVE8gQiAKK1RSIElPIDdjMDgtN2MwOSBpbnN0IGludCBydW4gCitvciB3aGF0ZXZlciB0aGUgSU8gY2hhbm5lbHMgeW91IHdpc2ggdG8gdHJhY2UgYXJlICYgaGl0IGIKKworVG8gZ290IGJhY2sgdG8gdGhlIGluaXRpYWwgdHJhY2Ugc2V0IGRvCitUUiBHT1RPIElOSVRJQUwKKyYgdGhlIFRSIEkgUFNXQSA8RHJpdmVyIG9wZW4gYWRkcmVzcz4gd2lsbCBiZSB0aGUgb25seSBhY3RpdmUgYnJlYWtwb2ludCBhZ2Fpbi4KKworCitUcmFjaW5nIGxpbnV4IHN5c2NhbGxzIHVuZGVyIFZNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTeXNjYWxscyBhcmUgaW1wbGVtZW50ZWQgb24gTGludXggZm9yIFMzOTAgYnkgdGhlIFN1cGVydmlzb3IgY2FsbCBpbnN0cnVjdGlvbgorKFNWQykuIFRoZXJlIDI1NiBwb3NzaWJpbGl0aWVzIG9mIHRoZXNlIGFzIHRoZSBpbnN0cnVjdGlvbiBpcyBtYWRlIHVwIG9mIGEgMHhBCitvcGNvZGUgYW5kIHRoZSBzZWNvbmQgYnl0ZSBiZWluZyB0aGUgc3lzY2FsbCBudW1iZXIuIFRoZXkgYXJlIHRyYWNlZCB1c2luZyB0aGUKK3NpbXBsZSBjb21tYW5kOgorVFIgU1ZDICA8T3B0aW9uYWwgdmFsdWUgb3IgcmFuZ2U+Cit0aGUgc3lzY2FsbHMgYXJlIGRlZmluZWQgaW4gbGludXgvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL3VuaXN0ZC5oCitlLmcuIHRvIHRyYWNlIGFsbCBmaWxlIG9wZW5zIGp1c3QgZG8KK1RSIFNWQyA1ICggYXMgdGhpcyBpcyB0aGUgc3lzY2FsbCBudW1iZXIgb2Ygb3BlbiApCisKKworU01QIFNwZWNpZmljIGNvbW1hbmRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RvIGZpbmQgb3V0IGhvdyBtYW55IGNwdXMgeW91IGhhdmUKK1EgQ1BVUyBkaXNwbGF5cyBhbGwgdGhlIENQVSdzIGF2YWlsYWJsZSB0byB5b3VyIHZpcnR1YWwgbWFjaGluZQorVG8gZmluZCB0aGUgY3B1IHRoYXQgdGhlIGN1cnJlbnQgY3B1IFZNIGRlYnVnZ2VyIGNvbW1hbmRzIGFyZSBiZWluZyBkaXJlY3RlZCBhdAorZG8gUSBDUFUgdG8gY2hhbmdlIHRoZSBjdXJyZW50IGNwdSBWTSBkZWJ1Z2dlciBjb21tYW5kcyBhcmUgYmVpbmcgZGlyZWN0ZWQgYXQgZG8KK0NQVSA8ZGVzaXJlZCBjcHUgbm8+CisKK09uIGEgU01QIGd1ZXN0IGlzc3VlIGEgY29tbWFuZCB0byBhbGwgQ1BVcyB0cnkgcHJlZml4aW5nIHRoZSBjb21tYW5kIHdpdGggY3B1CithbGwuIFRvIGlzc3VlIGEgY29tbWFuZCB0byBhIHBhcnRpY3VsYXIgY3B1IHRyeSBjcHUgPGNwdSBudW1iZXI+IGUuZy4KK0NQVSAwMSBUUiBJIFIgMjAwMC4zMDAwCitJZiB5b3UgYXJlIHJ1bm5pbmcgb24gYSBndWVzdCB3aXRoIHNldmVyYWwgY3B1cyAmIHlvdSBoYXZlIGEgSU8gcmVsYXRlZCBwcm9ibGVtCismIGNhbm5vdCBmb2xsb3cgdGhlIGZsb3cgb2YgY29kZSBidXQgeW91IGtub3cgaXQgaXNuJ3Qgc21wIHJlbGF0ZWQuCitmcm9tIHRoZSBiYXNoIHByb21wdCBpc3N1ZQorc2h1dGRvd24gLWggbm93IG9yIGhhbHQuCitkbyBhIFEgQ1BVUyB0byBmaW5kIG91dCBob3cgbWFueSBjcHVzIHlvdSBoYXZlCitkZXRhY2ggZWFjaCBvbmUgb2YgdGhlbSBmcm9tIGNwIGV4Y2VwdCBjcHUgMCAKK2J5IGlzc3VpbmcgYSAKK0RFVEFDSCBDUFUgMDEtKG51bWJlciBvZiBjcHVzIGluIGNvbmZpZ3VyYXRpb24pCismIGJvb3QgbGludXggYWdhaW4uCitUUiBTSUdQIHdpbGwgdHJhY2UgaW50ZXIgcHJvY2Vzc29yIHNpZ25hbCBwcm9jZXNzb3IgaW5zdHJ1Y3Rpb25zLgorREVGSU5FIENQVSAwMS0obnVtYmVyIGluIGNvbmZpZ3VyYXRpb24pIAord2lsbCBnZXQgeW91ciBndWVzdHMgY3B1cyBiYWNrLgorCisKK0hlbHAgZm9yIGRpc3BsYXlpbmcgYXNjaWkgdGV4dHN0cmluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK09uIHRoZSB2ZXJ5IGxhdGVzdCBWTSBOdWNsZXVzJ2VzIFZNIGNhbiBub3cgZGlzcGxheSBhc2NpaQorKCB0aGFua3MgTmVhbGUgZm9yIHRoZSBoaW50ICkgYnkgZG9pbmcKK0QgVFg8bG93YWRkcj4uPGxlbj4KK2UuZy4KK0QgVFgwLjEwMAorCitBbHRlcm5hdGl2ZWx5Cis9PT09PT09PT09PT09CitVbmRlciBvbGRlciBWTSBkZWJ1Z2dlcnMgKEkgbG92ZSBFQkRJQyB0b28pIHlvdSBjYW4gdXNlIGZvbGxvd2luZyBsaXR0bGUKK3Byb2dyYW0gd2hpY2ggY29udmVydHMgYSBjb21tYW5kIGxpbmUgb2YgaGV4IGRpZ2l0cyB0byBhc2NpaSB0ZXh0LiBJdCBjYW4gYmUKK2NvbXBpbGVkIHVuZGVyIGxpbnV4IGFuZCB5b3UgY2FuIGNvcHkgdGhlIGhleCBkaWdpdHMgZnJvbSB5b3VyIHgzMjcwIHRlcm1pbmFsCit0byB5b3VyIHh0ZXJtIGlmIHlvdSBhcmUgZGVidWdnaW5nIGZyb20gYSBsaW51eGJveC4KKworVGhpcyBpcyBxdWl0ZSB1c2VmdWwgd2hlbiBsb29raW5nIGF0IGEgcGFyYW1ldGVyIHBhc3NlZCBpbiBhcyBhIHRleHQgc3RyaW5nCit1bmRlciBWTSAoIHVubGVzcyB5b3UgYXJlIGdvb2QgYXQgZGVjb2RpbmcgQVNDSUkgaW4geW91ciBoZWFkICkuCisKK2UuZy4gY29uc2lkZXIgdHJhY2luZyBhbiBvcGVuIHN5c2NhbGwKK1RSIFNWQyA1CitXZSBoYXZlIHN0b3BwZWQgYXQgYSBicmVha3BvaW50CiswMDAxNTFCMCcgU1ZDICAgMEEwNSAgICAgLT4gMDAwMTkwOUEnICAgQ0MgMAorCitEIDIwLjggdG8gY2hlY2sgdGhlIFNWQyBvbGQgcHN3IGluIHRoZSBwcmVmaXggYXJlYSBhbmQgc2VlIHdhcyBpdCBmcm9tIHVzZXJzcGFjZQorKGZvciB0aGUgbGF5b3V0IG9mIHRoZSBwcmVmaXggYXJlYSBjb25zdWx0IHRoZSAiRml4ZWQgU3RvcmFnZSBMb2NhdGlvbnMiCitjaGFwdGVyIG9mIHRoZSBzLzM5MCBSZWZlcmVuY2UgU3VtbWFyeSBpZiB5b3UgaGF2ZSBpdCBhdmFpbGFibGUpLgorVjAwMDAwMDIwICAwNzBDMjAwMCA4MDAxNTFCMgorVGhlIHByb2JsZW0gc3RhdGUgYml0IHdhc24ndCBzZXQgJiAgaXQncyBhbHNvIHRvbyBlYXJseSBpbiB0aGUgYm9vdCBzZXF1ZW5jZQorZm9yIGl0IHRvIGJlIGEgdXNlcnNwYWNlIFNWQyBpZiBpdCB3YXMgd2Ugd291bGQgaGF2ZSB0byB0ZW1wb3JhcmlseSBzd2l0Y2ggdGhlIAorcHN3IHRvIHVzZXIgc3BhY2UgYWRkcmVzc2luZyBzbyB3ZSBjb3VsZCBnZXQgYXQgdGhlIGZpcnN0IHBhcmFtZXRlciBvZiB0aGUgb3BlbgoraW4gZ3ByMi4KK05leHQgZG8gYSAKK0QgRzIKK0dQUiAgMiA9ICAwMDAxNENCNAorTm93IGRpc3BsYXkgd2hhdCBncHIyIGlzIHBvaW50aW5nIHRvCitEIDAwMDE0Q0I0LjIwCitWMDAwMTRDQjQgIDJGNjQ2NTc2IDJGNjM2RjZFIDczNkY2QzY1IDAwMDAxQkY1CitWMDAwMTRDQzQgIEZDMDAwMTRDIEI0MDAxMDAxIEUwMDAxMDAwIEI4MDcwNzA3CitOb3cgY29weSB0aGUgdGV4dCB0aWxsIHRoZSBmaXJzdCAwMCBoZXggKCB3aGljaCBpcyB0aGUgZW5kIG9mIHRoZSBzdHJpbmcKK3RvIGFuIHh0ZXJtICYgZG8gaGV4MmFzY2lpIG9uIGl0LgoraGV4MmFzY2lpIDJGNjQ2NTc2IDJGNjM2RjZFIDczNkY2QzY1IDAwIAorb3V0cHV0cworRGVjb2RlZCBIZXg6PS8gZCBlIHYgLyBjIG8gbiBzIG8gbCBlIDB4MDAgCitXZSB3ZXJlIG9wZW5pbmcgdGhlIGNvbnNvbGUgZGV2aWNlLAorCitZb3UgY2FuIGNvbXBpbGUgdGhlIGNvZGUgYmVsb3cgeW91cnNlbGYgZm9yIHByYWN0aWNlIDotKSwKKy8qCisgKiAgICBoZXgyYXNjaWkuYworICogICAgYSB1c2VmdWwgbGl0dGxlIHRvb2wgZm9yIGNvbnZlcnRpbmcgYSBoZXhhZGVjaW1hbCBjb21tYW5kIGxpbmUgdG8gYXNjaWkKKyAqCisgKiAgICBBdXRob3Iocyk6IERlbmlzIEpvc2VwaCBCYXJyb3cgKGRqYmFycm93QGRlLmlibS5jb20sYmFycm93X2RqQHlhaG9vLmNvbSkKKyAqICAgIChDKSAyMDAwIElCTSBEZXV0c2NobGFuZCBFbnR3aWNrbHVuZyBHbWJILCBJQk0gQ29ycG9yYXRpb24uCisgKi8gICAKKyNpbmNsdWRlIDxzdGRpby5oPgorCitpbnQgbWFpbihpbnQgYXJnYyxjaGFyICphcmd2W10pCit7CisgIGludCBjbnQxLGNudDIsbGVuLHRvZ2dsZT0wOworICBpbnQgc3RhcnRjbnQ9MTsKKyAgdW5zaWduZWQgY2hhciBjLGhleDsKKyAgCisgIGlmKGFyZ2M+MSYmKHN0cmNtcChhcmd2WzFdLCItYSIpPT0wKSkKKyAgICAgc3RhcnRjbnQ9MjsKKyAgcHJpbnRmKCJEZWNvZGVkIEhleDo9Iik7CisgIGZvcihjbnQxPXN0YXJ0Y250O2NudDE8YXJnYztjbnQxKyspCisgIHsKKyAgICBsZW49c3RybGVuKGFyZ3ZbY250MV0pOworICAgIGZvcihjbnQyPTA7Y250MjxsZW47Y250MisrKQorICAgIHsKKyAgICAgICBjPWFyZ3ZbY250MV1bY250Ml07CisgICAgICAgaWYoYz49JzAnJiZjPD0nOScpCisJICBjPWMtJzAnOworICAgICAgIGlmKGM+PSdBJyYmYzw9J0YnKQorCSAgYz1jLSdBJysxMDsKKyAgICAgICBpZihjPj0nYScmJmM8PSdmJykKKwkgIGM9Yy0nYScrMTA7CisgICAgICAgc3dpdGNoKHRvZ2dsZSkKKyAgICAgICB7CisJICBjYXNlIDA6CisJICAgICBoZXg9Yzw8NDsKKwkgICAgIHRvZ2dsZT0xOworCSAgYnJlYWs7CisJICBjYXNlIDE6CisJICAgICBoZXgrPWM7CisJICAgICBpZihoZXg8MzJ8fGhleD4xMjcpCisJICAgICB7CisJCWlmKHN0YXJ0Y250PT0xKQorCQkgICBwcmludGYoIjB4JTAyWCAiLChpbnQpaGV4KTsKKwkJZWxzZQorCQkgICBwcmludGYoIi4iKTsKKwkgICAgIH0KKwkgICAgIGVsc2UKKwkgICAgIHsKKwkgICAgICAgcHJpbnRmKCIlYyIsaGV4KTsKKwkgICAgICAgaWYoc3RhcnRjbnQ9PTEpCisJCSAgcHJpbnRmKCIgIik7CisJICAgICB9CisJICAgICB0b2dnbGU9MDsKKwkgIGJyZWFrOworICAgICAgIH0KKyAgICB9CisgIH0KKyAgcHJpbnRmKCJcbiIpOworfQorCisKKworCitTdGFjayB0cmFjaW5nIHVuZGVyIFZNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBIGJhc2ljIGJhY2t0cmFjZQorLS0tLS0tLS0tLS0tLS0tLS0KKworSGVyZSBhcmUgdGhlIHRyaWNrcyBJIHVzZSA5IG91dCBvZiAxMCB0aW1lcyBpdCB3b3JrcyBwcmV0dHkgd2VsbCwKKworV2hlbiB5b3VyIGJhY2tjaGFpbiByZWFjaGVzIGEgZGVhZCBlbmQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGlzIGNhbiBoYXBwZW4gd2hlbiBhbiBleGNlcHRpb24gaGFwcGVucyBpbiB0aGUga2VybmVsIGFuZCB0aGUga2VybmVsIGlzCitlbnRlcmVkIHR3aWNlLiBJZiB5b3UgcmVhY2ggdGhlIE5VTEwgcG9pbnRlciBhdCB0aGUgZW5kIG9mIHRoZSBiYWNrIGNoYWluIHlvdQorc2hvdWxkIGJlIGFibGUgdG8gc25pZmYgZnVydGhlciBiYWNrIGlmIHlvdSBmb2xsb3cgdGhlIGZvbGxvd2luZyB0cmlja3MuCisxKSBBIGtlcm5lbCBhZGRyZXNzIHNob3VsZCBiZSBlYXN5IHRvIHJlY29nbmlzZSBzaW5jZSBpdCBpcyBpbgorcHJpbWFyeSBzcGFjZSAmIHRoZSBwcm9ibGVtIHN0YXRlIGJpdCBpc24ndCBzZXQgJiBhbHNvCitUaGUgSGkgYml0IG9mIHRoZSBhZGRyZXNzIGlzIHNldC4KKzIpIEFub3RoZXIgYmFja2NoYWluIHNob3VsZCBhbHNvIGJlIGVhc3kgdG8gcmVjb2duaXNlIHNpbmNlIGl0IGlzIGFuIAorYWRkcmVzcyBwb2ludGluZyB0byBhbm90aGVyIGFkZHJlc3MgYXBwcm94aW1hdGVseSAxMDAgYnl0ZXMgb3IgMHg3MCBoZXgKK2JlaGluZCB0aGUgY3VycmVudCBzdGFja3BvaW50ZXIuCisKKworSGVyZSBpcyBzb21lIHByYWN0aWNlLgorYm9vdCB0aGUga2VybmVsICYgaGl0IFBBMSBhdCBzb21lIHJhbmRvbSB0aW1lCitkIGcgdG8gZGlzcGxheSB0aGUgZ3BycywgdGhpcyBzaG91bGQgZGlzcGxheSBzb21ldGhpbmcgbGlrZQorR1BSICAwID0gIDAwMDAwMDAxICAwMDE1NjAxOCAgMDAxNDM1OUMgIDAwMDAwMDAwCitHUFIgIDQgPSAgMDAwMDAwMDEgIDAwMUI4ODg4ICAwMDAwMDNFMCAgMDAwMDAwMDAKK0dQUiAgOCA9ICAwMDEwMDA4MCAgMDAxMDAwODQgIDAwMDAwMDAwICAwMDBGRTAwMAorR1BSIDEyID0gIDAwMDEwNDAwICA4MDAxQjJEQyAgODAwMUIzNkEgIDAwMEZGRUQ4CitOb3RlIHRoYXQgR1BSMTQgaXMgYSByZXR1cm4gYWRkcmVzcyBidXQgYXMgd2UgYXJlIHJlYWwgbWVuIHdlIGFyZSBnb2luZyB0bwordHJhY2UgdGhlIHN0YWNrLgorZGlzcGxheSAweDQwIGJ5dGVzIGFmdGVyIHRoZSBzdGFjayBwb2ludGVyLgorCitWMDAwRkZFRDggIDAwMEZGRjM4IDgwMDFCODM4IDgwMDE0QzhFIDAwMEZGRjM4CitWMDAwRkZFRTggIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwM0UwIDAwMDAwMDAwCitWMDAwRkZFRjggIDAwMTAwMDgwIDAwMTAwMDg0IDAwMDAwMDAwIDAwMEZFMDAwCitWMDAwRkZGMDggIDAwMDEwNDAwIDgwMDFCMkRDIDgwMDFCMzZBIDAwMEZGRUQ4CisKKworQWggbm93IGxvb2sgYXQgd2hhdHMgaW4gc3ArNTYgKHNwKzB4MzgpIHRoaXMgaXMgODAwMUIzNkEgb3VyIHNhdmVkIHIxNCBpZgoreW91IGxvb2sgYWJvdmUgYXQgb3VyIHN0YWNrZnJhbWUgJiBhbHNvIGFncmVlcyB3aXRoIEdQUjE0LgorCitub3cgYmFja2NoYWluIAorZCAwMDBGRkYzOC40MAord2Ugbm93IGFyZSB0YWtpbmcgdGhlIGNvbnRlbnRzIG9mIFNQIHRvIGdldCBvdXIgZmlyc3QgYmFja2NoYWluLgorCitWMDAwRkZGMzggIDAwMEZGRkEwIDAwMDAwMDAwIDAwMDE0OTk1IDAwMTQ3MDk0CitWMDAwRkZGNDggIDAwMTQ3MDkwIDAwMTQ3MEEwIDAwMDAwM0UwIDAwMDAwMDAwCitWMDAwRkZGNTggIDAwMTAwMDgwIDAwMTAwMDg0IDAwMDAwMDAwIDAwMUJGMUQwCitWMDAwRkZGNjggIDAwMDEwNDAwIDgwMDE0OUJBIDgwMDE0Q0E2IDAwMEZGRjM4CisKK1RoaXMgZGlzcGxheXMgYSAybmQgcmV0dXJuIGFkZHJlc3Mgb2YgODAwMTRDQTYKKworbm93IGRvIGQgMDAwRkZGQTAuNDAgZm9yIG91ciAzcmQgYmFja2NoYWluCisKK1YwMDBGRkZBMCAgMDRCNTIwMDIgMDAwMTEwN0YgMDAwMDAwMDAgMDAwMDAwMDAKK1YwMDBGRkZCMCAgMDAwMDAwMDAgMDAwMDAwMDAgRkYwMDAwMDAgMDAwMTEwN0YKK1YwMDBGRkZDMCAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAKK1YwMDBGRkZEMCAgMDAwMTA0MDAgODAwMTA4MDIgODAwMTA4NUEgMDAwRkZGQTAKKworCitvdXIgM3JkIHJldHVybiBhZGRyZXNzIGlzIDgwMDEwODVBCisKK2FzIHRoZSAwNEI1MjAwMiBsb29rcyBzdXNwaWNpb3VzbHkgbGlrZSBydWJiaXNoIGl0IGlzIGZhaXIgdG8gYXNzdW1lIHRoYXQgdGhlCitrZXJuZWwgZW50cnkgcm91dGluZXMgZm9yIHRoZSBzYWtlIG9mIG9wdGltaXNhdGlvbiBkb24ndCBzZXQgdXAgYSBiYWNrY2hhaW4uCisKK25vdyBsb29rIGF0IFN5c3RlbS5tYXAgdG8gc2VlIGlmIHRoZSBhZGRyZXNzZXMgbWFrZSBhbnkgc2Vuc2UuCisKK2dyZXAgLWkgMDAwMWIzIFN5c3RlbS5tYXAKK291dHB1dHMgYW1vbmcgb3RoZXIgdGhpbmdzCiswMDAxYjMwNCBUIGNwdV9pZGxlIAorc28gODAwMUIzNkEKK2lzIGNwdV9pZGxlKzB4NjYgKCBxdWlldCB0aGUgY3B1IGlzIGFzbGVlcCwgZG9uJ3Qgd2FrZSBpdCApCisKKworZ3JlcCAtaSAwMDAxNCBTeXN0ZW0ubWFwIAorcHJvZHVjZXMgYW1vbmcgb3RoZXIgdGhpbmdzCiswMDAxNGE3OCBUIHN0YXJ0X2tlcm5lbCAgCitzbyAwMDE0Q0E2IGlzIHN0YXJ0X2tlcm5lbCtzb21lIGhleCBudW1iZXIgSSBjYW4ndCBhZGQgaW4gbXkgaGVhZC4KKworZ3JlcCAtaSAwMDEwOCBTeXN0ZW0ubWFwIAordGhpcyBwcm9kdWNlcworMDAwMTA4MDAgVCBfc3RleHQKK3NvICAgODAwMTA4NUEgaXMgX3N0ZXh0KzB4NWEKKworQ29uZ3JhdHMgeW91J3ZlIGRvbmUgeW91ciBmaXJzdCBiYWNrY2hhaW4uCisKKworCitzLzM5MCAmIHovQXJjaGl0ZWN0dXJlIElPIE92ZXJ2aWV3Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0kgYW0gbm90IGdvaW5nIHRvIGdpdmUgYSBjb3Vyc2UgaW4gMzkwIElPIGFyY2hpdGVjdHVyZSBhcyB0aGlzIHdvdWxkIHRha2UgbWUKK3F1aXRlIGEgd2hpbGUgYW5kIEknbSBubyBleHBlcnQuIEluc3RlYWQgSSdsbCBnaXZlIGEgMzkwIElPIGFyY2hpdGVjdHVyZQorc3VtbWFyeSBmb3IgRHVtbWllcy4gSWYgeW91IGhhdmUgdGhlIHMvMzkwIHByaW5jaXBsZXMgb2Ygb3BlcmF0aW9uIGF2YWlsYWJsZQorcmVhZCB0aGlzIGluc3RlYWQuIElmIG5vdGhpbmcgZWxzZSB5b3UgbWF5IGZpbmQgYSBmZXcgdXNlZnVsIGtleXdvcmRzIGluIGhlcmUKK2FuZCBiZSBhYmxlIHRvIHVzZSB0aGVtIG9uIGEgd2ViIHNlYXJjaCBlbmdpbmUgdG8gZmluZCBtb3JlIHVzZWZ1bCBpbmZvcm1hdGlvbi4KKworVW5saWtlIG90aGVyIGJ1cyBhcmNoaXRlY3R1cmVzIG1vZGVybiAzOTAgc3lzdGVtcyBkbyB0aGVpciBJTyB1c2luZyBtb3N0bHkKK2ZpYnJlIG9wdGljcyBhbmQgZGV2aWNlcyBzdWNoIGFzIHRhcGVzIGFuZCBkaXNrcyBjYW4gYmUgc2hhcmVkIGJldHdlZW4gc2V2ZXJhbAorbWFpbmZyYW1lcy4gQWxzbyBTMzkwIGNhbiBzdXBwb3J0IHVwIHRvIDY1NTM2IGRldmljZXMgd2hpbGUgYSBoaWdoIGVuZCBQQyBiYXNlZAorc3lzdGVtIG1pZ2h0IGJlIGNob2tpbmcgd2l0aCBhcm91bmQgNjQuCisKK0hlcmUgaXMgc29tZSBvZiB0aGUgY29tbW9uIElPIHRlcm1pbm9sb2d5OgorCitTdWJjaGFubmVsOgorVGhpcyBpcyB0aGUgbG9naWNhbCBudW1iZXIgbW9zdCBJTyBjb21tYW5kcyB1c2UgdG8gdGFsayB0byBhbiBJTyBkZXZpY2UuIFRoZXJlCitjYW4gYmUgdXAgdG8gMHgxMDAwMCAoNjU1MzYpIG9mIHRoZXNlIGluIGEgY29uZmlndXJhdGlvbiwgdHlwaWNhbGx5IHRoZXJlIGFyZSBhCitmZXcgaHVuZHJlZC4gVW5kZXIgVk0gZm9yIHNpbXBsaWNpdHkgdGhleSBhcmUgYWxsb2NhdGVkIGNvbnRpZ3VvdXNseSwgaG93ZXZlcgorb24gdGhlIG5hdGl2ZSBoYXJkd2FyZSB0aGV5IGFyZSBub3QuIFRoZXkgdHlwaWNhbGx5IHN0YXkgY29uc2lzdGVudCBiZXR3ZWVuCitib290cyBwcm92aWRlZCBubyBuZXcgaGFyZHdhcmUgaXMgaW5zZXJ0ZWQgb3IgcmVtb3ZlZC4KK1VuZGVyIExpbnV4IGZvciBzMzkwIHdlIHVzZSB0aGVzZSBhcyBJUlEncyBhbmQgYWxzbyB3aGVuIGlzc3VpbmcgYW4gSU8gY29tbWFuZAorKENMRUFSIFNVQkNIQU5ORUwsIEhBTFQgU1VCQ0hBTk5FTCwgTU9ESUZZIFNVQkNIQU5ORUwsIFJFU1VNRSBTVUJDSEFOTkVMLAorU1RBUlQgU1VCQ0hBTk5FTCwgU1RPUkUgU1VCQ0hBTk5FTCBhbmQgVEVTVCBTVUJDSEFOTkVMKS4gV2UgdXNlIHRoaXMgYXMgdGhlIElECitvZiB0aGUgZGV2aWNlIHdlIHdpc2ggdG8gdGFsayB0by4gVGhlIG1vc3QgaW1wb3J0YW50IG9mIHRoZXNlIGluc3RydWN0aW9ucyBhcmUKK1NUQVJUIFNVQkNIQU5ORUwgKHRvIHN0YXJ0IElPKSwgVEVTVCBTVUJDSEFOTkVMICh0byBjaGVjayB3aGV0aGVyIHRoZSBJTworY29tcGxldGVkIHN1Y2Nlc3NmdWxseSkgYW5kIEhBTFQgU1VCQ0hBTk5FTCAodG8ga2lsbCBJTykuIEEgc3ViY2hhbm5lbCBjYW4gaGF2ZQordXAgdG8gOCBjaGFubmVsIHBhdGhzIHRvIGEgZGV2aWNlLCB0aGlzIG9mZmVycyByZWR1bmRhbmN5IGlmIG9uZSBpcyBub3QKK2F2YWlsYWJsZS4KKworRGV2aWNlIE51bWJlcjoKK1RoaXMgbnVtYmVyIHJlbWFpbnMgc3RhdGljIGFuZCBpcyBjbG9zZWx5IHRpZWQgdG8gdGhlIGhhcmR3YXJlLiBUaGVyZSBhcmUgNjU1MzYKK29mIHRoZXNlLCBtYWRlIHVwIG9mIGEgQ0hQSUQgKENoYW5uZWwgUGF0aCBJRCwgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgOCBiaXRzKSBhbmQKK2Fub3RoZXIgbHNiIDggYml0cy4gVGhlc2UgcmVtYWluIHN0YXRpYyBldmVuIGlmIG1vcmUgZGV2aWNlcyBhcmUgaW5zZXJ0ZWQgb3IKK3JlbW92ZWQgZnJvbSB0aGUgaGFyZHdhcmUuIFRoZXJlIGlzIGEgMSB0byAxIG1hcHBpbmcgYmV0d2VlbiBzdWJjaGFubmVscyBhbmQKK2RldmljZSBudW1iZXJzLCBwcm92aWRlZCBkZXZpY2VzIGFyZW4ndCBpbnNlcnRlZCBvciByZW1vdmVkLgorCitDaGFubmVsIENvbnRyb2wgV29yZHM6CitDQ1dzIGFyZSBsaW5rZWQgbGlzdHMgb2YgaW5zdHJ1Y3Rpb25zIGluaXRpYWxseSBwb2ludGVkIHRvIGJ5IGFuIG9wZXJhdGlvbgorcmVxdWVzdCBibG9jayAoT1JCKSwgd2hpY2ggaXMgaW5pdGlhbGx5IGdpdmVuIHRvIFN0YXJ0IFN1YmNoYW5uZWwgKFNTQ0gpCitjb21tYW5kIGFsb25nIHdpdGggdGhlIHN1YmNoYW5uZWwgbnVtYmVyIGZvciB0aGUgSU8gc3Vic3lzdGVtIHRvIHByb2Nlc3MKK3doaWxlIHRoZSBDUFUgY29udGludWVzIGV4ZWN1dGluZyBub3JtYWwgY29kZS4KK0NDV3MgY29tZSBpbiB0d28gZmxhdm91cnMsIEZvcm1hdCAwICgyNCBiaXQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpIGFuZAorRm9ybWF0IDEgKDMxIGJpdCkuIFRoZXNlIGFyZSB0eXBpY2FsbHkgdXNlZCB0byBpc3N1ZSByZWFkIGFuZCB3cml0ZSAoYW5kIG1hbnkKK290aGVyKSBpbnN0cnVjdGlvbnMuIFRoZXkgY29uc2lzdCBvZiBhIGxlbmd0aCBmaWVsZCBhbmQgYW4gYWJzb2x1dGUgYWRkcmVzcworZmllbGQuCitFYWNoIElPIHR5cGljYWxseSBnZXRzIDEgb3IgMiBpbnRlcnJ1cHRzLCBvbmUgZm9yIGNoYW5uZWwgZW5kIChwcmltYXJ5IHN0YXR1cykKK3doZW4gdGhlIGNoYW5uZWwgaXMgaWRsZSwgYW5kIHRoZSBzZWNvbmQgZm9yIGRldmljZSBlbmQgKHNlY29uZGFyeSBzdGF0dXMpLgorU29tZXRpbWVzIHlvdSBnZXQgYm90aCBjb25jdXJyZW50bHkuIFlvdSBjaGVjayBob3cgdGhlIElPIHdlbnQgb24gYnkgaXNzdWluZyBhCitURVNUIFNVQkNIQU5ORUwgYXQgZWFjaCBpbnRlcnJ1cHQsIGZyb20gd2hpY2ggeW91IHJlY2VpdmUgYW4gSW50ZXJydXB0aW9uCityZXNwb25zZSBibG9jayAoSVJCKS4gSWYgeW91IGdldCBjaGFubmVsIGFuZCBkZXZpY2UgZW5kIHN0YXR1cyBpbiB0aGUgSVJCCit3aXRob3V0IGNoYW5uZWwgY2hlY2tzIGV0Yy4geW91ciBJTyBwcm9iYWJseSB3ZW50IG9rYXkuIElmIHlvdSBkaWRuJ3QgeW91Citwcm9iYWJseSBuZWVkIHRvIGV4YW1pbmUgdGhlIElSQiwgZXh0ZW5kZWQgc3RhdHVzIHdvcmQgZXRjLgorSWYgYW4gZXJyb3Igb2NjdXJzLCBtb3JlIHNvcGhpc3RpY2F0ZWQgY29udHJvbCB1bml0cyBoYXZlIGEgZmFjaWxpdHkga25vd24gYXMKK2NvbmN1cnJlbnQgc2Vuc2UuIFRoaXMgbWVhbnMgdGhhdCBpZiBhbiBlcnJvciBvY2N1cnMgRXh0ZW5kZWQgc2Vuc2UgaW5mb3JtYXRpb24KK3dpbGwgYmUgcHJlc2VudGVkIGluIHRoZSBFeHRlbmRlZCBzdGF0dXMgd29yZCBpbiB0aGUgSVJCLiBJZiBub3QgeW91IGhhdmUgdG8KK2lzc3VlIGEgc3Vic2VxdWVudCBTRU5TRSBDQ1cgY29tbWFuZCBhZnRlciB0aGUgdGVzdCBzdWJjaGFubmVsLgorCisKK1RQSSAoVGVzdCBwZW5kaW5nIGludGVycnVwdCkgY2FuIGFsc28gYmUgdXNlZCBmb3IgcG9sbGVkIElPLCBidXQgaW4KK211bHRpdGFza2luZyBtdWx0aXByb2Nlc3NvciBzeXN0ZW1zIGl0IGlzbid0IHJlY29tbWVuZGVkIGV4Y2VwdCBmb3IKK2NoZWNraW5nIHNwZWNpYWwgY2FzZXMgKGkuZS4gbm9uIGxvb3BpbmcgY2hlY2tzIGZvciBwZW5kaW5nIElPIGV0Yy4pLgorCitTdG9yZSBTdWJjaGFubmVsIGFuZCBNb2RpZnkgU3ViY2hhbm5lbCBjYW4gYmUgdXNlZCB0byBleGFtaW5lIGFuZCBtb2RpZnkKK29wZXJhdGluZyBjaGFyYWN0ZXJpc3RpY3Mgb2YgYSBzdWJjaGFubmVsIChlLmcuIGNoYW5uZWwgcGF0aHMpLgorCitPdGhlciBJTyByZWxhdGVkIFRlcm1zOgorU3lzcGxleDogUzM5MCdzIENsdXN0ZXJpbmcgVGVjaG5vbG9neQorUURJTzogUzM5MCdzIG5ldyBoaWdoIHNwZWVkIElPIGFyY2hpdGVjdHVyZSB0byBzdXBwb3J0IGRldmljZXMgc3VjaCBhcyBnaWdhYml0CitldGhlcm5ldCwgdGhpcyBhcmNoaXRlY3R1cmUgaXMgYWxzbyBkZXNpZ25lZCB0byBiZSBmb3J3YXJkIGNvbXBhdGlibGUgd2l0aAordXBjb21pbmcgNjQgYml0IG1hY2hpbmVzLgorCisKK0dlbmVyYWwgQ29uY2VwdHMgCisKK0lucHV0IE91dHB1dCBQcm9jZXNzb3JzIChJT1AncykgYXJlIHJlc3BvbnNpYmxlIGZvciBjb21tdW5pY2F0aW5nIGJldHdlZW4KK3RoZSBtYWluZnJhbWUgQ1BVJ3MgJiB0aGUgY2hhbm5lbCAmIHJlbGlldmUgdGhlIG1haW5mcmFtZSBDUFUncyBmcm9tIHRoZQorYnVyZGVuIG9mIGNvbW11bmljYXRpbmcgd2l0aCBJTyBkZXZpY2VzIGRpcmVjdGx5LCB0aGlzIGFsbG93cyB0aGUgQ1BVJ3MgdG8gCitjb25jZW50cmF0ZSBvbiBkYXRhIHByb2Nlc3NpbmcuIAorCitJT1AncyBjYW4gdXNlIG9uZSBvciBtb3JlIGxpbmtzICgga25vd24gYXMgY2hhbm5lbCBwYXRocyApIHRvIHRhbGsgdG8gZWFjaCAKK0lPIGRldmljZS4gSXQgZmlyc3QgY2hlY2tzIGZvciBwYXRoIGF2YWlsYWJpbGl0eSAmIGNob29zZXMgYW4gYXZhaWxhYmxlIG9uZSwKK3RoZW4gc3RhcnRzICggJiBzb21ldGltZXMgdGVybWluYXRlcyBJTyApLgorVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBjaGFubmVsIHBhdGg6IEVTQ09OICYgdGhlIFBhcmFsbGVsIElPIGludGVyZmFjZS4KKworSU8gZGV2aWNlcyBhcmUgYXR0YWNoZWQgdG8gY29udHJvbCB1bml0cywgY29udHJvbCB1bml0cyBwcm92aWRlIHRoZQorbG9naWMgdG8gaW50ZXJmYWNlIHRoZSBjaGFubmVsIHBhdGhzICYgY2hhbm5lbCBwYXRoIElPIHByb3RvY29scyB0byAKK3RoZSBJTyBkZXZpY2VzLCB0aGV5IGNhbiBiZSBpbnRlZ3JhdGVkIHdpdGggdGhlIGRldmljZXMgb3IgaG91c2VkIHNlcGFyYXRlbHkKKyYgb2Z0ZW4gdGFsayB0byBzZXZlcmFsIHNpbWlsYXIgZGV2aWNlcyAoIHR5cGljYWwgZXhhbXBsZXMgd291bGQgYmUgcmFpZCAKK2NvbnRyb2xsZXJzIG9yIGEgY29udHJvbCB1bml0IHdoaWNoIGNvbm5lY3RzIHRvIDEwMDAgMzI3MCB0ZXJtaW5hbHMgKS4KKworCisgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICB8ICstLS0tLSsgKy0tLS0tKyArLS0tLS0rICstLS0tLSsgICstLS0tLS0tLS0tKyAgKy0tLS0tLS0tLS0rICAgfAorICAgIHwgfCBDUFUgfCB8IENQVSB8IHwgQ1BVIHwgfCBDUFUgfCAgfCAgTWFpbiAgICB8ICB8IEV4cGFuZGVkIHwgICB8CisgICAgfCB8ICAgICB8IHwgICAgIHwgfCAgICAgfCB8ICAgICB8ICB8ICBNZW1vcnkgIHwgIHwgIFN0b3JhZ2UgfCAgIHwKKyAgICB8ICstLS0tLSsgKy0tLS0tKyArLS0tLS0rICstLS0tLSsgICstLS0tLS0tLS0tKyAgKy0tLS0tLS0tLS0rICAgfCAKKyAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgIHwgICBJT1AgICAgICAgIHwgICAgICBJT1AgICAgICB8ICAgICAgIElPUCAgICAgICAgICAgICAgICAgICAgICB8CisgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHwgQyB8IEMgfCBDIHwgQyB8IEMgfCBDIHwgQyB8IEMgfCBDIHwgQyB8IEMgfCBDIHwgQyB8IEMgfCBDIHwgQyB8IAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICB8fCAgQnVzICYgVGFnIENoYW5uZWwgUGF0aCAgICAgICAgICAgICAgICAgICAgICB8fCBFU0NPTgorICAgICAgICAgfHwgID09PT09PT09PT09PT09PT09PT09PT0gICAgICAgICAgICAgICAgICAgICAgfHwgQ2hhbm5lbAorICAgICAgICAgfHwgIHx8ICAgICAgICAgICAgICAgICAgfHwgICAgICAgICAgICAgICAgICAgICAgfHwgUGF0aAorICAgICstLS0tLS0tLS0tKyAgICAgICAgICAgICAgICstLS0tLS0tLS0tKyAgICAgICAgICstLS0tLS0tLS0tKworICAgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgfAorICAgIHwgICAgQ1UgICAgfCAgICAgICAgICAgICAgIHwgICAgQ1UgICAgfCAgICAgICAgIHwgICAgQ1UgICAgfAorICAgIHwgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgfAorICAgICstLS0tLS0tLS0tKyAgICAgICAgICAgICAgICstLS0tLS0tLS0tKyAgICAgICAgICstLS0tLS0tLS0tKworICAgICAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tKyArLS0tLS0tLS0tLSsgICAgICArLS0tLS0tLS0tLSsgICArLS0tLS0tLS0tLSsgKy0tLS0tLS0tLS0rCit8SS9PIERldmljZXwgfEkvTyBEZXZpY2V8ICAgICAgfEkvTyBEZXZpY2V8ICAgfEkvTyBEZXZpY2V8IHxJL08gRGV2aWNlfAorKy0tLS0tLS0tLS0rICstLS0tLS0tLS0tKyAgICAgICstLS0tLS0tLS0tKyAgICstLS0tLS0tLS0tKyArLS0tLS0tLS0tLSsKKyAgQ1BVID0gQ2VudHJhbCBQcm9jZXNzaW5nIFVuaXQgICAgCisgIEMgPSBDaGFubmVsICAgICAgICAgICAgICAgICAgICAgIAorICBJT1AgPSBJUCBQcm9jZXNzb3IgICAgICAgICAgICAgICAKKyAgQ1UgPSBDb250cm9sIFVuaXQKKworVGhlIDM5MCBJTyBzeXN0ZW1zIGNvbWUgaW4gMiBmbGF2b3VycyB0aGUgY3VycmVudCAzOTAgbWFjaGluZXMgc3VwcG9ydCBib3RoCisKK1RoZSBPbGRlciAzNjAgJiAzNzAgSW50ZXJmYWNlLHNvbWV0aW1lcyBjYWxsZWQgdGhlIFBhcmFsbGVsIEkvTyBpbnRlcmZhY2UsCitzb21ldGltZXMgY2FsbGVkIEJ1cy1hbmQgVGFnICYgc29tZXRpbWVzIE9yaWdpbmFsIEVxdWlwbWVudCBNYW51ZmFjdHVyZXJzCitJbnRlcmZhY2UgKE9FTUkpLgorCitUaGlzIGJ5dGUgd2lkZSBQYXJhbGxlbCBjaGFubmVsIHBhdGgvYnVzIGhhcyBwYXJpdHkgJiBkYXRhIG9uIHRoZSAiQnVzIiBjYWJsZSAKK2FuZCBjb250cm9sIGxpbmVzIG9uIHRoZSAiVGFnIiBjYWJsZS4gVGhlc2UgY2FuIG9wZXJhdGUgaW4gYnl0ZSBtdWx0aXBsZXggbW9kZQorZm9yIHNoYXJpbmcgYmV0d2VlbiBzZXZlcmFsIHNsb3cgZGV2aWNlcyBvciBidXJzdCBtb2RlIGFuZCBtb25vcG9saXplIHRoZQorY2hhbm5lbCBmb3IgdGhlIHdob2xlIGJ1cnN0LiBVcCB0byAyNTYgZGV2aWNlcyBjYW4gYmUgYWRkcmVzc2VkIG9uIG9uZSBvZiB0aGVzZQorY2FibGVzLiBUaGVzZSBjYWJsZXMgYXJlIGFib3V0IG9uZSBpbmNoIGluIGRpYW1ldGVyLiBUaGUgbWF4aW11bSB1bmV4dGVuZGVkCitsZW5ndGggc3VwcG9ydGVkIGJ5IHRoZXNlIGNhYmxlcyBpcyAxMjUgTWV0ZXJzIGJ1dCB0aGlzIGNhbiBiZSBleHRlbmRlZCB1cCB0bworMmttIHdpdGggYSBmaWJyZSBvcHRpYyBjaGFubmVsIGV4dGVuZGVkIHN1Y2ggYXMgYSAzMDQ0LiBUaGUgbWF4aW11bSBidXJzdCBzcGVlZAorc3VwcG9ydGVkIGlzIDQuNSBtZWdhYnl0ZXMgcGVyIHNlY29uZC4gSG93ZXZlciwgc29tZSByZWFsbHkgb2xkIHByb2Nlc3NvcnMKK3N1cHBvcnQgb25seSB0cmFuc2ZlciByYXRlcyBvZiAzLjAsIDIuMCAmIDEuMCBNQi9zZWMuCitPbmUgb2YgdGhlc2UgcGF0aHMgY2FuIGJlIGRhaXN5IGNoYWluZWQgdG8gdXAgdG8gOCBjb250cm9sIHVuaXRzLgorCisKK0VTQ09OIGlmIGZpYnJlIG9wdGljIGl0IGlzIGFsc28gY2FsbGVkIEZJQ09OIAorV2FzIGludHJvZHVjZWQgYnkgSUJNIGluIDE5OTAuIEhhcyAyIGZpYnJlIG9wdGljIGNhYmxlcyBhbmQgdXNlcyBlaXRoZXIgbGVkcyBvcgorbGFzZXJzIGZvciBjb21tdW5pY2F0aW9uIGF0IGEgc2lnbmFsaW5nIHJhdGUgb2YgdXAgdG8gMjAwIG1lZ2FiaXRzL3NlYy4gQXMKKzEwYml0cyBhcmUgdHJhbnNmZXJyZWQgZm9yIGV2ZXJ5IDggYml0cyBpbmZvIHRoaXMgZHJvcHMgdG8gMTYwIG1lZ2FiaXRzL3NlYworYW5kIHRvIDE4LjYgTWVnYWJ5dGVzL3NlYyBvbmNlIGNvbnRyb2wgaW5mbyBhbmQgQ1JDIGFyZSBhZGRlZC4gRVNDT04gb25seQorb3BlcmF0ZXMgaW4gYnVyc3QgbW9kZS4KKyAKK0VTQ09OcyB0eXBpY2FsIG1heCBjYWJsZSBsZW5ndGggaXMgM2ttIGZvciB0aGUgbGVkIHZlcnNpb24gYW5kIDIwa20gZm9yIHRoZQorbGFzZXIgdmVyc2lvbiBrbm93biBhcyBYREYgKGV4dGVuZGVkIGRpc3RhbmNlIGZhY2lsaXR5KS4gVGhpcyBjYW4gYmUgZnVydGhlcgorZXh0ZW5kZWQgYnkgdXNpbmcgYW4gRVNDT04gZGlyZWN0b3Igd2hpY2ggdHJpcGxlcyB0aGUgYWJvdmUgbWVudGlvbmVkIHJhbmdlcy4KK1VubGlrZSBCdXMgJiBUYWcgYXMgRVNDT04gaXMgc2VyaWFsIGl0IHVzZXMgYSBwYWNrZXQgc3dpdGNoaW5nIGFyY2hpdGVjdHVyZSwKK3RoZSBzdGFuZGFyZCBCdXMgJiBUYWcgY29udHJvbCBwcm90b2NvbCBpcyBob3dldmVyIHByZXNlbnQgd2l0aGluIHRoZSBwYWNrZXRzLgorVXAgdG8gMjU2IGRldmljZXMgY2FuIGJlIGF0dGFjaGVkIHRvIGVhY2ggY29udHJvbCB1bml0IHRoYXQgdXNlcyBvbmUgb2YgdGhlc2UKK2ludGVyZmFjZXMuCisKK0NvbW1vbiAzOTAgRGV2aWNlcyBpbmNsdWRlOgorTmV0d29yayBhZGFwdGVycyB0eXBpY2FsbHkgT1NBMiwzMTcyJ3MsMjExNidzICYgT1NBLUUgZ2lnYWJpdCBldGhlcm5ldCBhZGFwdGVycywKK0NvbnNvbGVzIDMyNzAgJiAzMjE1IChhIHRlbGV0eXBlIGVtdWxhdGVkIHVuZGVyIGxpbnV4IGZvciBhIGxpbmUgbW9kZSBjb25zb2xlKS4KK0RBU0QncyBkaXJlY3QgYWNjZXNzIHN0b3JhZ2UgZGV2aWNlcyAoIG90aGVyd2lzZSBrbm93biBhcyBoYXJkIGRpc2tzICkuCitUYXBlIERyaXZlcy4KK0NUQyAoIENoYW5uZWwgdG8gQ2hhbm5lbCBBZGFwdGVycyApLAorRVNDT04gb3IgUGFyYWxsZWwgQ2FibGVzIHVzZWQgYXMgYSB2ZXJ5IGhpZ2ggc3BlZWQgc2VyaWFsIGxpbmsKK2JldHdlZW4gMiBtYWNoaW5lcy4KKworCitEZWJ1Z2dpbmcgSU8gb24gcy8zOTAgJiB6L0FyY2hpdGVjdHVyZSB1bmRlciBWTQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworTm93IHdlIGFyZSByZWFkeSB0byBnbyBvbiB3aXRoIElPIHRyYWNpbmcgY29tbWFuZHMgdW5kZXIgVk0KKworQSBmZXcgc2VsZiBleHBsYW5hdG9yeSBxdWVyaWVzOgorUSBPU0EKK1EgQ1RDCitRIERJU0sgKCBUaGlzIGNvbW1hbmQgaXMgQ01TIHNwZWNpZmljICkKK1EgREFTRAorCisKKworCisKKworUSBPU0Egb24gbXkgbWFjaGluZSByZXR1cm5zCitPU0EgIDdDMDggT04gT1NBICAgN0MwOCBTVUJDSEFOTkVMID0gMDAwMAorT1NBICA3QzA5IE9OIE9TQSAgIDdDMDkgU1VCQ0hBTk5FTCA9IDAwMDEKK09TQSAgN0MxNCBPTiBPU0EgICA3QzE0IFNVQkNIQU5ORUwgPSAwMDAyCitPU0EgIDdDMTUgT04gT1NBICAgN0MxNSBTVUJDSEFOTkVMID0gMDAwMworCitJZiB5b3UgaGF2ZSBhIGd1ZXN0IHdpdGggY2VydGFpbiBwcml2aWxlZ2VzIHlvdSBtYXkgYmUgYWJsZSB0byBzZWUgZGV2aWNlcword2hpY2ggZG9uJ3QgYmVsb25nIHRvIHlvdS4gVG8gYXZvaWQgdGhpcywgYWRkIHRoZSBvcHRpb24gVi4KK2UuZy4KK1EgViBPU0EKKworTm93IHVzaW5nIHRoZSBkZXZpY2UgbnVtYmVycyByZXR1cm5lZCBieSB0aGlzIGNvbW1hbmQgd2Ugd2lsbAorVHJhY2UgdGhlIGlvIHN0YXJ0aW5nIHVwIG9uIHRoZSBmaXJzdCBkZXZpY2UgN2MwOCAmIDdjMDkKK0luIG91ciBzaW1wbGVzdCBjYXNlIHdlIGNhbiB0cmFjZSB0aGUgCitzdGFydCBzdWJjaGFubmVscworbGlrZSBUUiBTU0NIIDdDMDgtN0MwOQorb3IgdGhlIGhhbHQgc3ViY2hhbm5lbHMKK29yIFRSIEhTQ0ggN0MwOC03QzA5CitNU0NIJ3MgLFNUU0NIJ3MgSSB0aGluayB5b3UgY2FuIGd1ZXNzIHRoZSByZXN0CisKK0EgZ29vZCB0cmljayBpcyB0cmFjaW5nIGFsbCB0aGUgSU8ncyBhbmQgQ0NXUyBhbmQgc3Bvb2xpbmcgdGhlbSBpbnRvIHRoZSByZWFkZXIKK29mIGFub3RoZXIgVk0gZ3Vlc3Qgc28gaGUgY2FuIGZ0cCB0aGUgbG9nZmlsZSBiYWNrIHRvIGhpcyBvd24gbWFjaGluZS4gSSdsbCBkbworYSBzbWFsbCBiaXQgb2YgdGhpcyBhbmQgZ2l2ZSB5b3UgYSBsb29rIGF0IHRoZSBvdXRwdXQuCisKKzEpIFNwb29sIHN0ZG91dCB0byBWTSByZWFkZXIKK1NQIFBSVCBUTyAoYW5vdGhlciB2bSBndWVzdCApIG9yICogZm9yIHRoZSBsb2NhbCB2bSBndWVzdAorMikgRmlsbCB0aGUgcmVhZGVyIHdpdGggdGhlIHRyYWNlCitUUiBJTyA3YzA4LTdjMDkgSU5TVCBJTlQgQ0NXIFBSVCBSVU4KKzMpIFN0YXJ0IHVwIGxpbnV4IAoraSAwMGMgIAorNCkgRmluaXNoIHRoZSB0cmFjZQorVFIgRU5ECis1KSBjbG9zZSB0aGUgcmVhZGVyCitDIFBSVAorNikgbGlzdCByZWFkZXIgY29udGVudHMKK1JEUkxJU1QKKzcpIGNvcHkgaXQgdG8gbGludXg0J3MgbWluaWRpc2sgCitSRUNFSVZFIC8gTE9HIFRYVCBBMSAoIHJlcGxhY2UKKzgpCitmaWxlbCAmIHByZXNzIEYxMSB0byBsb29rIGF0IGl0CitZb3Ugc2hvdWxkIHNlZSBzb21ldGhpbmcgbGlrZToKKworMDAwMjA5NDInIFNTQ0ggIEIyMzM0MDAwICAgIDAwNDg4MTNDICAgIENDIDAgICAgU0NIIDAwMDAgICAgREVWIDdDMDgKKyAgICAgICAgICBDUEEgMDAwRkZERjAgICBQQVJNIDAwRTJDOUM0ICAgIEtFWSAwICBGUEkgQzAgIExQTSA4MAorICAgICAgICAgIENDVyAgICAwMDBGRkRGMCAgRTQyMDAxMDAgMDA0ODdGRTggICAwMDAwICBFNDI0MDEwMCAuLi4uLi4uLgorICAgICAgICAgIElEQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQzRDhBRkU4CisgICAgICAgICAgSURBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMEZCNzYwMDAKKzAwMDIwQjBBJyAgIEkvTyBERVYgN0MwOCAtPiAwMDAxOTdCQycgICBTQ0ggMDAwMCAgIFBBUk0gMDBFMkM5QzQKKzAwMDIxNjI4JyBUU0NIICBCMjM1NDAwMCA+PiAwMDQ4ODE2NCAgICBDQyAwICAgIFNDSCAwMDAwICAgIERFViA3QzA4CisgICAgICAgICAgQ0NXQSAwMDBGRkRGOCAgIERFViBTVFMgMEMgIFNDSCBTVFMgMDAgIENOVCAwMEVDCisgICAgICAgICAgIEtFWSAwICAgRlBJIEMwICBDQyAwICAgQ1RMUyA0MDA3CiswMDAyMjIzOCcgU1RTQ0ggQjIzNDQwMDAgPj4gMDA0ODgxMDggICAgQ0MgMCAgICBTQ0ggMDAwMCAgICBERVYgN0MwOAorCitJZiB5b3UgZG9uJ3QgbGlrZSBtZXNzaW5nIHVwIHlvdXIgcmVhZGVkICggYmVjYXVzZSB5b3UgcG9zc2libHkgYm9vdGVkIGZyb20gaXQgKQoreW91IGNhbiBhbHRlcm5hdGl2ZWx5IHNwb29sIGl0IHRvIGFub3RoZXIgcmVhZGVycyBndWVzdC4KKworCitPdGhlciBjb21tb24gVk0gZGV2aWNlIHJlbGF0ZWQgY29tbWFuZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlc2UgY29tbWFuZHMgYXJlIGxpc3RlZCBvbmx5IGJlY2F1c2UgdGhleSBoYXZlCitiZWVuIG9mIHVzZSB0byBtZSBpbiB0aGUgcGFzdCAmIG1heSBiZSBvZiB1c2UgdG8KK3lvdSB0b28uIEZvciBtb3JlIGNvbXBsZXRlIGluZm8gb24gZWFjaCBvZiB0aGUgY29tbWFuZHMKK3VzZSB0eXBlIEhFTFAgPGNvbW1hbmQ+IGZyb20gQ01TLgorZGV0YWNoaW5nIGRldmljZXMKK0RFVCA8ZGV2bm8gcmFuZ2U+CitBVFQgPGRldm5vIHJhbmdlPiA8Z3Vlc3Q+IAorYXR0YWNoIGEgZGV2aWNlIHRvIGd1ZXN0ICogZm9yIHlvdXIgb3duIGd1ZXN0CitSRUFEWSA8ZGV2bm8+IGNhdXNlIFZNIHRvIGlzc3VlIGEgZmFrZSBpbnRlcnJ1cHQuCisKK1RoZSBWQVJZIGNvbW1hbmQgaXMgbm9ybWFsbHkgb25seSBhdmFpbGFibGUgdG8gVk0gYWRtaW5pc3RyYXRvcnMuCitWQVJZIE9OIFBBVEggPHBhdGg+IFRPIDxkZXZubyByYW5nZT4KK1ZBUlkgT0ZGIFBBVEggPFBBVEg+IEZST00gPGRldm5vIHJhbmdlPgorVGhpcyBpcyB1c2VkIHRvIHN3aXRjaCBvbiBvciBvZmYgY2hhbm5lbCBwYXRocyB0byBkZXZpY2VzLgorCitRIENIUElEIDxjaGFubmVsIHBhdGggSUQ+CitUaGlzIGRpc3BsYXlzIHN0YXRlIG9mIGRldmljZXMgdXNpbmcgdGhpcyBjaGFubmVsIHBhdGgKK0QgU0NISUIgPHN1YmNoYW5uZWw+CitUaGlzIGRpc3BsYXlzIHRoZSBzdWJjaGFubmVsIGluZm9ybWF0aW9uIFNDSElCIGJsb2NrIGZvciB0aGUgZGV2aWNlLgordGhpcyBJIGJlbGlldmUgaXMgYWxzbyBvbmx5IGF2YWlsYWJsZSB0byBhZG1pbmlzdHJhdG9ycy4KK0RFRklORSBDVEMgPGRldm5vPgorZGVmaW5lcyBhIHZpcnR1YWwgQ1RDIGNoYW5uZWwgdG8gY2hhbm5lbCBjb25uZWN0aW9uCisyIG5lZWQgdG8gYmUgZGVmaW5lZCBvbiBlYWNoIGd1ZXN0IGZvciB0aGUgQ1RDIGRyaXZlciB0byB1c2UuCitDT1VQTEUgIGRldm5vIHVzZXJpZCByZW1vdGUgZGV2bm8KK0pvaW5zIGEgbG9jYWwgdmlydHVhbCBkZXZpY2UgdG8gYSByZW1vdGUgdmlydHVhbCBkZXZpY2UKKyggY29tbW9ubHkgdXNlZCBmb3IgdGhlIENUQyBkcml2ZXIgKS4KKworQnVpbGRpbmcgYSBWTSByYW1kaXNrIHVuZGVyIENNUyB3aGljaCBsaW51eCBjYW4gdXNlCitkZWYgdmZiLTxibG9ja3NpemU+IDxzdWJjaGFubmVsPiA8bnVtYmVyIGJsb2Nrcz4KK2Jsb2Nrc2l6ZSBpcyBjb21tb25seSA0MDk2IGZvciBsaW51eC4KK0Zvcm1hdHRpbmcgaXQKK2Zvcm1hdCA8c3ViY2hhbm5lbD4gPGRyaXZlciBsZXR0ZXIgZS5nLiB4PiAoYmxrc2l6ZSA8YmxvY2tzaXplPgorCitTaGFyaW5nIGEgZGlzayBiZXR3ZWVuIG11bHRpcGxlIGd1ZXN0cworTElOSyB1c2VyaWQgZGV2bm8xIGRldm5vMiBtb2RlIHBhc3N3b3JkCisKKworCitHREIgb24gUzM5MAorPT09PT09PT09PT0KK04uQi4gaWYgY29tcGlsaW5nIGZvciBkZWJ1Z2dpbmcgZ2RiIHdvcmtzIGJldHRlciB3aXRob3V0IG9wdGltaXNhdGlvbiAKKyggc2VlIENvbXBpbGluZyBwcm9ncmFtcyBmb3IgZGVidWdnaW5nICkKKworaW52b2NhdGlvbgorLS0tLS0tLS0tLQorZ2RiIDx2aWN0aW0gcHJvZ3JhbT4gPG9wdGlvbmFsIGNvcmVmaWxlPgorCitPbmxpbmUgaGVscAorLS0tLS0tLS0tLS0KK2hlbHA6IGdpdmVzIGhlbHAgb24gY29tbWFuZHMKK2UuZy4KK2hlbHAKK2hlbHAgZGlzcGxheQorTm90ZSBnZGIncyBvbmxpbmUgaGVscCBpcyB2ZXJ5IGdvb2QgdXNlIGl0LgorCisKK0Fzc2VtYmx5CistLS0tLS0tLQoraW5mbyByZWdpc3RlcnM6IGRpc3BsYXlzIHJlZ2lzdGVycyBvdGhlciB0aGFuIGZsb2F0aW5nIHBvaW50LgoraW5mbyBhbGwtcmVnaXN0ZXJzOiBkaXNwbGF5cyBmbG9hdGluZyBwb2ludHMgYXMgd2VsbC4KK2Rpc2Fzc2VtYmxlOiBkaXNhc3NlbWJsZXMKK2UuZy4KK2Rpc2Fzc2VtYmxlIHdpdGhvdXQgcGFyYW1ldGVycyB3aWxsIGRpc2Fzc2VtYmxlIHRoZSBjdXJyZW50IGZ1bmN0aW9uCitkaXNhc3NlbWJsZSAkcGMgJHBjKzEwIAorCitWaWV3aW5nICYgbW9kaWZ5aW5nIHZhcmlhYmxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3ByaW50IG9yIHA6IGRpc3BsYXlzIHZhcmlhYmxlIG9yIHJlZ2lzdGVyCitlLmcuIHAveCAkc3Agd2lsbCBkaXNwbGF5IHRoZSBzdGFjayBwb2ludGVyCisKK2Rpc3BsYXk6IHByaW50cyB2YXJpYWJsZSBvciByZWdpc3RlciBlYWNoIHRpbWUgcHJvZ3JhbSBzdG9wcworZS5nLgorZGlzcGxheS94ICRwYyB3aWxsIGRpc3BsYXkgdGhlIHByb2dyYW0gY291bnRlcgorZGlzcGxheSBhcmdjCisKK3VuZGlzcGxheSA6IHVuZG8ncyBkaXNwbGF5J3MKKworaW5mbyBicmVha3BvaW50czogc2hvd3MgYWxsIGN1cnJlbnQgYnJlYWtwb2ludHMKKworaW5mbyBzdGFjazogc2hvd3Mgc3RhY2sgYmFjayB0cmFjZSAoaWYgdGhpcyBkb2Vzbid0IHdvcmsgdG9vIHdlbGwsIEknbGwgc2hvdworeW91IHRoZSBzdGFja3RyYWNlIGJ5IGhhbmQgYmVsb3cpLgorCitpbmZvIGxvY2FsczogZGlzcGxheXMgbG9jYWwgdmFyaWFibGVzLgorCitpbmZvIGFyZ3M6IGRpc3BsYXkgY3VycmVudCBwcm9jZWR1cmUgYXJndW1lbnRzLgorCitzZXQgYXJnczogd2lsbCBzZXQgYXJnYyAmIGFyZ3YgZWFjaCB0aW1lIHRoZSB2aWN0aW0gcHJvZ3JhbSBpcyBpbnZva2VkLgorCitzZXQgPHZhcmlhYmxlPj12YWx1ZQorc2V0IGFyZ2M9MTAwCitzZXQgJHBjPTAKKworCisKK01vZGlmeWluZyBleGVjdXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0KK3N0ZXA6IHN0ZXBzIG4gbGluZXMgb2Ygc291cmNlY29kZQorc3RlcCBzdGVwcyAxIGxpbmUuCitzdGVwIDEwMCBzdGVwcyAxMDAgbGluZXMgb2YgY29kZS4KKworbmV4dDogbGlrZSBzdGVwIGV4Y2VwdCB0aGlzIHdpbGwgbm90IHN0ZXAgaW50byBzdWJyb3V0aW5lcworCitzdGVwaTogc3RlcHMgYSBzaW5nbGUgbWFjaGluZSBjb2RlIGluc3RydWN0aW9uLgorZS5nLiBzdGVwaSAxMDAKKworbmV4dGk6IHN0ZXBzIGEgc2luZ2xlIG1hY2hpbmUgY29kZSBpbnN0cnVjdGlvbiBidXQgd2lsbCBub3Qgc3RlcCBpbnRvCitzdWJyb3V0aW5lcy4KKworZmluaXNoOiB3aWxsIHJ1biB1bnRpbCBleGl0IG9mIHRoZSBjdXJyZW50IHJvdXRpbmUKKworcnVuOiAocmUpc3RhcnRzIGEgcHJvZ3JhbQorCitjb250OiBjb250aW51ZXMgYSBwcm9ncmFtCisKK3F1aXQ6IGV4aXRzIGdkYi4KKworCiticmVha3BvaW50cworLS0tLS0tLS0tLS0tCisKK2JyZWFrCitzZXRzIGEgYnJlYWtwb2ludAorZS5nLgorCiticmVhayBtYWluCisKK2JyZWFrICokcGMKKworYnJlYWsgKjB4NDAwNjE4CisKK0hlcmUncyBhIHJlYWxseSB1c2VmdWwgb25lIGZvciBsYXJnZSBwcm9ncmFtcworcmJyCitTZXQgYSBicmVha3BvaW50IGZvciBhbGwgZnVuY3Rpb25zIG1hdGNoaW5nIFJFR0VYUAorZS5nLgorcmJyIDM5MAord2lsbCBzZXQgYSBicmVha3BvaW50IHdpdGggYWxsIGZ1bmN0aW9ucyB3aXRoIDM5MCBpbiB0aGVpciBuYW1lLgorCitpbmZvIGJyZWFrcG9pbnRzCitsaXN0cyBhbGwgYnJlYWtwb2ludHMKKworZGVsZXRlOiBkZWxldGUgYnJlYWtwb2ludCBieSBudW1iZXIgb3IgZGVsZXRlIHRoZW0gYWxsCitlLmcuCitkZWxldGUgMSB3aWxsIGRlbGV0ZSB0aGUgZmlyc3QgYnJlYWtwb2ludAorZGVsZXRlIHdpbGwgZGVsZXRlIHRoZW0gYWxsCisKK3dhdGNoOiBUaGlzIHdpbGwgc2V0IGEgd2F0Y2hwb2ludCAoIHVzdWFsbHkgaGFyZHdhcmUgYXNzaXN0ZWQgKSwKK1RoaXMgd2lsbCB3YXRjaCBhIHZhcmlhYmxlIHRpbGwgaXQgY2hhbmdlcworZS5nLgord2F0Y2ggY250LCB3aWxsIHdhdGNoIHRoZSB2YXJpYWJsZSBjbnQgdGlsbCBpdCBjaGFuZ2VzLgorQXMgYW4gYXNpZGUgdW5mb3J0dW5hdGVseSBnZGIncywgYXJjaGl0ZWN0dXJlIGluZGVwZW5kZW50IHdhdGNocG9pbnQgY29kZQoraXMgaW5jb25zaXN0ZW50ICYgbm90IHZlcnkgZ29vZCwgd2F0Y2hwb2ludHMgdXN1YWxseSB3b3JrIGJ1dCBub3QgYWx3YXlzLgorCitpbmZvIHdhdGNocG9pbnRzOiBEaXNwbGF5IGN1cnJlbnRseSBhY3RpdmUgd2F0Y2hwb2ludHMKKworY29uZGl0aW9uOiAoIGFub3RoZXIgdXNlZnVsIG9uZSApCitTcGVjaWZ5IGJyZWFrcG9pbnQgbnVtYmVyIE4gdG8gYnJlYWsgb25seSBpZiBDT05EIGlzIHRydWUuCitVc2FnZSBpcyBgY29uZGl0aW9uIE4gQ09ORCcsIHdoZXJlIE4gaXMgYW4gaW50ZWdlciBhbmQgQ09ORCBpcyBhbgorZXhwcmVzc2lvbiB0byBiZSBldmFsdWF0ZWQgd2hlbmV2ZXIgYnJlYWtwb2ludCBOIGlzIHJlYWNoZWQuCisKKworCitVc2VyIGRlZmluZWQgZnVuY3Rpb25zL21hY3JvcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RlZmluZTogKCBOb3RlIHRoaXMgaXMgdmVyeSB2ZXJ5IHVzZWZ1bCxzaW1wbGUgJiBwb3dlcmZ1bCApCit1c2FnZSBkZWZpbmUgPG5hbWU+IDxsaXN0IG9mIGNvbW1hbmRzPiBlbmQKKworZXhhbXBsZXMgd2hpY2ggeW91IHNob3VsZCBjb25zaWRlciBwdXR0aW5nIGludG8gLmdkYmluaXQgaW4geW91ciBob21lIGRpcmVjdG9yeQorZGVmaW5lIGQKK3N0ZXBpCitkaXNhc3NlbWJsZSAkcGMgJHBjKzEwCitlbmQKKworZGVmaW5lIGUKK25leHRpCitkaXNhc3NlbWJsZSAkcGMgJHBjKzEwCitlbmQKKworCitPdGhlciBoYXJkIHRvIGNsYXNzaWZ5IHN0dWZmCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzaWduYWwgbjoKK3NlbmRzIHRoZSB2aWN0aW0gcHJvZ3JhbSBhIHNpZ25hbC4KK2UuZy4gc2lnbmFsIDMgd2lsbCBzZW5kIGEgU0lHUVVJVC4KKworaW5mbyBzaWduYWxzOgord2hhdCBnZGIgZG9lcyB3aGVuIHRoZSB2aWN0aW0gcmVjZWl2ZXMgY2VydGFpbiBzaWduYWxzLgorCitsaXN0OgorZS5nLgorbGlzdCBsaXN0cyBjdXJyZW50IGZ1bmN0aW9uIHNvdXJjZQorbGlzdCAxLDEwIGxpc3QgZmlyc3QgMTAgbGluZXMgb2YgY3VycmVudCBmaWxlLgorbGlzdCB0ZXN0LmM6MSwxMAorCisKK2RpcmVjdG9yeToKK0FkZHMgZGlyZWN0b3JpZXMgdG8gYmUgc2VhcmNoZWQgZm9yIHNvdXJjZSBpZiBnZGIgY2Fubm90IGZpbmQgdGhlIHNvdXJjZS4KKyhub3RlIGl0IGlzIGEgYml0IHNlbnNpdGl2ZSBhYm91dCBzbGFzaGVzKQorZS5nLiBUbyBhZGQgdGhlIHJvb3Qgb2YgdGhlIGZpbGVzeXN0ZW0gdG8gdGhlIHNlYXJjaHBhdGggZG8KK2RpcmVjdG9yeSAvLworCisKK2NhbGwgPGZ1bmN0aW9uPgorVGhpcyBjYWxscyBhIGZ1bmN0aW9uIGluIHRoZSB2aWN0aW0gcHJvZ3JhbSwgdGhpcyBpcyBwcmV0dHkgcG93ZXJmdWwKK2UuZy4KKyhnZGIpIGNhbGwgcHJpbnRmKCJoZWxsbyB3b3JsZCIpCitvdXRwdXRzOgorJDEgPSAxMSAKKworWW91IG1pZ2h0IG5vdyBiZSB0aGlua2luZyB0aGF0IHRoZSBsaW5lIGFib3ZlIGRpZG4ndCB3b3JrLCBzb21ldGhpbmcgZXh0cmEgaGFkCit0byBiZSBkb25lLgorKGdkYikgY2FsbCBmZmx1c2goc3Rkb3V0KQoraGVsbG8gd29ybGQkMiA9IDAKK0FzIGFuIGFzaWRlIHRoZSBkZWJ1Z2dlciBhbHNvIGNhbGxzIG1hbGxvYyAmIGZyZWUgdW5kZXIgdGhlIGhvb2QgCit0byBtYWtlIHNwYWNlIGZvciB0aGUgImhlbGxvIHdvcmxkIiBzdHJpbmcuCisKKworCitoaW50cworLS0tLS0KKzEpIGNvbW1hbmQgY29tcGxldGlvbiB3b3JrcyBqdXN0IGxpa2UgYmFzaCAKKyggaWYgeW91IGFyZSBhIGJhZCB0eXBpc3QgbGlrZSBtZSB0aGlzIHJlYWxseSBoZWxwcyApCitlLmcuIGhpdCBiciA8VEFCPiAmIGN1cnNvciB1cCAmIGRvd24gOi0pLgorCisyKSBpZiB5b3UgaGF2ZSBhIGRlYnVnZ2luZyBwcm9ibGVtIHRoYXQgdGFrZXMgYSBmZXcgc3RlcHMgdG8gcmVjcmVhdGUKK3B1dCB0aGUgc3RlcHMgaW50byBhIGZpbGUgY2FsbGVkIC5nZGJpbml0IGluIHlvdXIgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQoraWYgeW91IGhhdmUgZGVmaW5lZCBhIGZldyBleHRyYSB1c2VmdWwgdXNlciBkZWZpbmVkIGNvbW1hbmRzIHB1dCB0aGVzZSBpbiAKK3lvdXIgaG9tZSBkaXJlY3RvcnkgJiB0aGV5IHdpbGwgYmUgcmVhZCBlYWNoIHRpbWUgZ2RiIGlzIGxhdW5jaGVkLgorCitBIHR5cGljYWwgLmdkYmluaXQgZmlsZSBtaWdodCBiZS4KK2JyZWFrIG1haW4KK3J1bgorYnJlYWsgcnVudGltZV9leGNlcHRpb24KK2NvbnQgCisKKworc3RhY2sgY2hhaW5pbmcgaW4gZ2RiIGJ5IGhhbmQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGlzIGlzIGRvbmUgdXNpbmcgYSB0aGUgc2FtZSB0cmljayBkZXNjcmliZWQgZm9yIFZNIAorcC94ICgqKCRzcCs1NikpJjB4N2ZmZmZmZmYgZ2V0IHRoZSBmaXJzdCBiYWNrY2hhaW4uCisKK0ZvciB6L0FyY2hpdGVjdHVyZQorUmVwbGFjZSA1NiB3aXRoIDExMiAmIGlnbm9yZSB0aGUgJjB4N2ZmZmZmZmYKK2luIHRoZSBtYWNyb3MgYmVsb3cgJiBkbyBuYXN0eSBjYXN0cyB0byBsb25ncyBsaWtlIHRoZSBmb2xsb3dpbmcKK2FzIGdkYiB1bmZvcnR1bmF0ZWx5IGRlYWxzIHdpdGggcHJpbnRlZCBhcmd1bWVudHMgYXMgaW50cyB3aGljaAorbWVzc2VzIHVwIGV2ZXJ5dGhpbmcuCitpLmUuIGhlcmUgaXMgYSAzcmQgYmFja2NoYWluIGRlcmVmZXJlbmNlCitwL3ggKihsb25nICopKCoqKihsb25nICoqKikkc3ArMTEyKQorCisKK3RoaXMgb3V0cHV0cyAKKyQ1ID0gMHg1MjhmMTggCitvbiBteSBtYWNoaW5lLgorTm93IHlvdSBjYW4gdXNlIAoraW5mbyBzeW1ib2wgKCooJHNwKzU2KSkmMHg3ZmZmZmZmZiAKK3lvdSBtaWdodCBzZWUgc29tZXRoaW5nIGxpa2UuCitybF9nZXRjICsgMzYgaW4gc2VjdGlvbiAudGV4dCAgdGVsbGluZyB5b3Ugd2hhdCBpcyBsb2NhdGVkIGF0IGFkZHJlc3MgMHg1MjhmMTgKK05vdyBkby4KK3AveCAoKigqJHNwKzU2KSkmMHg3ZmZmZmZmZiAKK1RoaXMgb3V0cHV0cworJDYgPSAweDUyOGVkMAorTm93IGRvLgoraW5mbyBzeW1ib2wgKCooKiRzcCs1NikpJjB4N2ZmZmZmZmYKK3JsX3JlYWRfa2V5ICsgMTgwIGluIHNlY3Rpb24gLnRleHQKK25vdyBkbworcC94ICgqKCoqJHNwKzU2KSkmMHg3ZmZmZmZmZgorJiBzbyBvbi4KKworRGlzYXNzZW1ibGluZyBpbnN0cnVjdGlvbnMgd2l0aG91dCBkZWJ1ZyBpbmZvCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2dkYiB0eXBpY2FsbHkgY29tcGxhaW5zIGlmIHRoZXJlIGlzIGEgbGFjayBvZiBkZWJ1Z2dpbmcKK3N5bWJvbHMgaW4gdGhlIGRpc2Fzc2VtYmxlIGNvbW1hbmQgd2l0aCAKKyJObyBmdW5jdGlvbiBjb250YWlucyBzcGVjaWZpZWQgYWRkcmVzcy4iIFRvIGdldCBhcm91bmQKK3RoaXMgZG8gCit4LzxudW1iZXIgbGluZXMgdG8gZGlzYXNzZW1ibGU+eGkgPGFkZHJlc3M+CitlLmcuCit4LzIweGkgMHg0MDA3MzAKKworCisKK05vdGU6IFJlbWVtYmVyIGdkYiBoYXMgaGlzdG9yeSBqdXN0IGxpa2UgYmFzaCB5b3UgZG9uJ3QgbmVlZCB0byByZXR5cGUgdGhlCit3aG9sZSBsaW5lIGp1c3QgdXNlIHRoZSB1cCAmIGRvd24gYXJyb3dzLgorCisKKworRm9yIG1vcmUgaW5mbworLS0tLS0tLS0tLS0tLQorRnJvbSB5b3VyIGxpbnV4Ym94IGRvIAorbWFuIGdkYiBvciBpbmZvIGdkYi4KKworY29yZSBkdW1wcworLS0tLS0tLS0tLQorV2hhdCBhIGNvcmUgZHVtcCA/LAorQSBjb3JlIGR1bXAgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSB0aGUga2VybmVsIChpZiBhbGxvd2VkKSB3aGljaCBjb250YWlucyB0aGUKK3JlZ2lzdGVycyBhbmQgYWxsIGFjdGl2ZSBwYWdlcyBvZiB0aGUgcHJvZ3JhbSB3aGljaCBoYXMgY3Jhc2hlZC4KK0Zyb20gdGhpcyBmaWxlIGdkYiB3aWxsIGFsbG93IHlvdSB0byBsb29rIGF0IHRoZSByZWdpc3RlcnMsIHN0YWNrIHRyYWNlIGFuZAorbWVtb3J5IG9mIHRoZSBwcm9ncmFtIGFzIGlmIGl0IGp1c3QgY3Jhc2hlZCBvbiB5b3VyIHN5c3RlbS4gSXQgaXMgdXN1YWxseQorY2FsbGVkIGNvcmUgYW5kIGNyZWF0ZWQgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCitUaGlzIGlzIHZlcnkgdXNlZnVsIGluIHRoYXQgYSBjdXN0b21lciBjYW4gbWFpbCBhIGNvcmUgZHVtcCB0byBhIHRlY2huaWNhbAorc3VwcG9ydCBkZXBhcnRtZW50IGFuZCB0aGUgdGVjaG5pY2FsIHN1cHBvcnQgZGVwYXJ0bWVudCBjYW4gcmVjb25zdHJ1Y3Qgd2hhdAoraGFwcGVuZWQuIFByb3ZpZGVkIHRoZXkgaGF2ZSBhbiBpZGVudGljYWwgY29weSBvZiB0aGlzIHByb2dyYW0gd2l0aCBkZWJ1Z2dpbmcKK3N5bWJvbHMgY29tcGlsZWQgaW4gYW5kIHRoZSBzb3VyY2UgYmFzZSBvZiB0aGlzIGJ1aWxkIGlzIGF2YWlsYWJsZS4KK0luIHNob3J0IGl0IGlzIGZhciBtb3JlIHVzZWZ1bCB0aGFuIHNvbWV0aGluZyBsaWtlIGEgY3Jhc2ggbG9nIGNvdWxkIGV2ZXIgaG9wZQordG8gYmUuCisKK1doeSBoYXZlIEkgbmV2ZXIgc2VlbiBvbmUgPy4KK1Byb2JhYmx5IGJlY2F1c2UgeW91IGhhdmVuJ3QgdXNlZCB0aGUgY29tbWFuZCAKK3VsaW1pdCAtYyB1bmxpbWl0ZWQgaW4gYmFzaAordG8gYWxsb3cgY29yZSBkdW1wcywgbm93IGRvIAordWxpbWl0IC1hIAordG8gdmVyaWZ5IHRoYXQgdGhlIGxpbWl0IHdhcyBhY2NlcHRlZC4KKworQSBzYW1wbGUgY29yZSBkdW1wCitUbyBjcmVhdGUgdGhpcyBJJ20gZ29pbmcgdG8gZG8KK3VsaW1pdCAtYyB1bmxpbWl0ZWQKK2dkYiAKK3RvIGxhdW5jaCBnZGIgKG15IHZpY3RpbSBhcHAuICkgbm93IGJlIGJhZCAmIGRvIHRoZSBmb2xsb3dpbmcgZnJvbSBhbm90aGVyIAordGVsbmV0L3h0ZXJtIHNlc3Npb24gdG8gdGhlIHNhbWUgbWFjaGluZQorcHMgLWF1eCB8IGdyZXAgZ2RiCitraWxsIC1TSUdTRUdWIDxnZGIncyBwaWQ+CitvciBhbHRlcm5hdGl2ZWx5IHVzZSBraWxsYWxsIC1TSUdTRUdWIGdkYiBpZiB5b3UgaGF2ZSB0aGUga2lsbGFsbCBjb21tYW5kLgorTm93IGxvb2sgYXQgdGhlIGNvcmUgZHVtcC4KKy4vZ2RiIGNvcmUKK0Rpc3BsYXlzIHRoZSBmb2xsb3dpbmcKK0dOVSBnZGIgNC4xOAorQ29weXJpZ2h0IDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitHREIgaXMgZnJlZSBzb2Z0d2FyZSwgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB5b3UgYXJlCit3ZWxjb21lIHRvIGNoYW5nZSBpdCBhbmQvb3IgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgaXQgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zLgorVHlwZSAic2hvdyBjb3B5aW5nIiB0byBzZWUgdGhlIGNvbmRpdGlvbnMuCitUaGVyZSBpcyBhYnNvbHV0ZWx5IG5vIHdhcnJhbnR5IGZvciBHREIuICBUeXBlICJzaG93IHdhcnJhbnR5IiBmb3IgZGV0YWlscy4KK1RoaXMgR0RCIHdhcyBjb25maWd1cmVkIGFzICJzMzkwLWlibS1saW51eCIuLi4KK0NvcmUgd2FzIGdlbmVyYXRlZCBieSBgLi9nZGInLgorUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDExLCBTZWdtZW50YXRpb24gZmF1bHQuCitSZWFkaW5nIHN5bWJvbHMgZnJvbSAvdXNyL2xpYi9saWJuY3Vyc2VzLnNvLjQuLi5kb25lLgorUmVhZGluZyBzeW1ib2xzIGZyb20gL2xpYi9saWJtLnNvLjYuLi5kb25lLgorUmVhZGluZyBzeW1ib2xzIGZyb20gL2xpYi9saWJjLnNvLjYuLi5kb25lLgorUmVhZGluZyBzeW1ib2xzIGZyb20gL2xpYi9sZC1saW51eC5zby4yLi4uZG9uZS4KKyMwICAweDQwMTI2ZDFhIGluIHJlYWQgKCkgZnJvbSAvbGliL2xpYmMuc28uNgorU2V0dGluZyB1cCB0aGUgZW52aXJvbm1lbnQgZm9yIGRlYnVnZ2luZyBnZGIuCitCcmVha3BvaW50IDEgYXQgMHg0ZGM2Zjg6IGZpbGUgdXRpbHMuYywgbGluZSA0NzEuCitCcmVha3BvaW50IDIgYXQgMHg0ZDg3YTQ6IGZpbGUgdG9wLmMsIGxpbmUgMjYwOS4KKyh0b3AtZ2RiKSBpbmZvIHN0YWNrCisjMCAgMHg0MDEyNmQxYSBpbiByZWFkICgpIGZyb20gL2xpYi9saWJjLnNvLjYKKyMxICAweDUyOGYyNiBpbiBybF9nZXRjIChzdHJlYW09MHg3ZmZmZmRlOCkgYXQgaW5wdXQuYzo0MDIKKyMyICAweDUyOGVkMCBpbiBybF9yZWFkX2tleSAoKSBhdCBpbnB1dC5jOjM4MQorIzMgIDB4NTE2N2U2IGluIHJlYWRsaW5lX2ludGVybmFsX2NoYXIgKCkgYXQgcmVhZGxpbmUuYzo0NTQKKyM0ICAweDUxNjhlZSBpbiByZWFkbGluZV9pbnRlcm5hbF9jaGFybG9vcCAoKSBhdCByZWFkbGluZS5jOjUwNworIzUgIDB4NTE2OTJjIGluIHJlYWRsaW5lX2ludGVybmFsICgpIGF0IHJlYWRsaW5lLmM6NTIxCisjNiAgMHg1MTY0ZmUgaW4gcmVhZGxpbmUgKHByb21wdD0weDdmZmZmODEwKQorICAgIGF0IHJlYWRsaW5lLmM6MzQ5CisjNyAgMHg0ZDdhOGEgaW4gY29tbWFuZF9saW5lX2lucHV0IChwcm9tcHQ9MHg1NjQ0MjAgIihnZGIpICIsIHJlcGVhdD0xLAorICAgIGFubm90YXRpb25fc3VmZml4PTB4NGQ2YjQ0ICJwcm9tcHQiKSBhdCB0b3AuYzoyMDkxCisjOCAgMHg0ZDZjZjAgaW4gY29tbWFuZF9sb29wICgpIGF0IHRvcC5jOjEzNDUKKyM5ICAweDRlMjViYyBpbiBtYWluIChhcmdjPTEsIGFyZ3Y9MHg3ZmZmZmRmNCkgYXQgbWFpbi5jOjYzNQorCisKK0xERAorPT09CitUaGlzIGlzIGEgcHJvZ3JhbSB3aGljaCBsaXN0cyB0aGUgc2hhcmVkIGxpYnJhcmllcyB3aGljaCBhIGxpYnJhcnkgbmVlZHMsCitOb3RlIHlvdSBhbHNvIGdldCB0aGUgcmVsb2NhdGlvbnMgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IHRleHQgc2VnbWVudHMgd2hpY2gKK2hlbHAgd2hlbiB1c2luZyBvYmpkdW1wIC0tc291cmNlLgorZS5nLgorIGxkZCAuL2dkYgorb3V0cHV0cworbGlibmN1cnNlcy5zby40ID0+IC91c3IvbGliL2xpYm5jdXJzZXMuc28uNCAoMHg0MDAxODAwMCkKK2xpYm0uc28uNiA9PiAvbGliL2xpYm0uc28uNiAoMHg0MDA1ZTAwMCkKK2xpYmMuc28uNiA9PiAvbGliL2xpYmMuc28uNiAoMHg0MDA4NDAwMCkKKy9saWIvbGQtbGludXguc28uMiA9PiAvbGliL2xkLWxpbnV4LnNvLjIgKDB4NDAwMDAwMDApCisKKworRGVidWdnaW5nIHNoYXJlZCBsaWJyYXJpZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09CitNb3N0IHByb2dyYW1zIHVzZSBzaGFyZWQgbGlicmFyaWVzLCBob3dldmVyIGl0IGNhbiBiZSB2ZXJ5IHBhaW5mdWwKK3doZW4geW91IHNpbmdsZSBzdGVwIGluc3RydWN0aW9uIGludG8gYSBmdW5jdGlvbiBsaWtlIHByaW50ZiBmb3IgdGhlIAorZmlyc3QgdGltZSAmIHlvdSBlbmQgdXAgaW4gZnVuY3Rpb25zIGxpa2UgX2RsX3J1bnRpbWVfcmVzb2x2ZSB0aGlzIGlzCit0aGUgbGQuc28gZG9pbmcgbGF6eSBiaW5kaW5nLCBsYXp5IGJpbmRpbmcgaXMgYSBjb25jZXB0IGluIEVMRiB3aGVyZSAKK3NoYXJlZCBsaWJyYXJ5IGZ1bmN0aW9ucyBhcmUgbm90IGxvYWRlZCBpbnRvIG1lbW9yeSB1bmxlc3MgdGhleSBhcmUgCithY3R1YWxseSB1c2VkLCBncmVhdCBmb3Igc2F2aW5nIG1lbW9yeSBidXQgYSBwYWluIHRvIGRlYnVnLgorVG8gZ2V0IGFyb3VuZCB0aGlzIGVpdGhlciByZWxpbmsgdGhlIHByb2dyYW0gLXN0YXRpYyBvciBleGl0IGdkYiB0eXBlIAorZXhwb3J0IExEX0JJTkRfTk9XPXRydWUgdGhpcyB3aWxsIHN0b3AgbGF6eSBiaW5kaW5nICYgcmVzdGFydCB0aGUgZ2RiJ2luZyAKK3RoZSBwcm9ncmFtIGluIHF1ZXN0aW9uLgorIAorCisKK0RlYnVnZ2luZyBtb2R1bGVzCis9PT09PT09PT09PT09PT09PQorQXMgbW9kdWxlcyBhcmUgZHluYW1pY2FsbHkgbG9hZGVkIGludG8gdGhlIGtlcm5lbCB0aGVpciBhZGRyZXNzIGNhbiBiZQorYW55d2hlcmUgdG8gZ2V0IGFyb3VuZCB0aGlzIHVzZSB0aGUgLW0gb3B0aW9uIHdpdGggaW5zbW9kIHRvIGVtaXQgYSBsb2FkCittYXAgd2hpY2ggY2FuIGJlIHBpcGVkIGludG8gYSBmaWxlIGlmIHJlcXVpcmVkLgorCitUaGUgcHJvYyBmaWxlIHN5c3RlbQorPT09PT09PT09PT09PT09PT09PT0KK1doYXQgaXMgaXQgPy4KK0l0IGlzIGEgZmlsZXN5c3RlbSBjcmVhdGVkIGJ5IHRoZSBrZXJuZWwgd2l0aCBmaWxlcyB3aGljaCBhcmUgY3JlYXRlZCBvbiBkZW1hbmQKK2J5IHRoZSBrZXJuZWwgaWYgcmVhZCwgb3IgY2FuIGJlIHVzZWQgdG8gbW9kaWZ5IGtlcm5lbCBwYXJhbWV0ZXJzLAoraXQgaXMgYSBwb3dlcmZ1bCBjb25jZXB0LgorCitlLmcuCisKK2NhdCAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfZm9yd2FyZCAKK09uIG15IG1hY2hpbmUgb3V0cHV0cyAKKzAgCit0ZWxsaW5nIG1lIGlwX2ZvcndhcmRpbmcgaXMgbm90IG9uIHRvIHN3aXRjaCBpdCBvbiBJIGNhbiBkbworZWNobyAxID4gIC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9mb3J3YXJkCitjYXQgaXQgYWdhaW4KK2NhdCAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfZm9yd2FyZCAKK09uIG15IG1hY2hpbmUgbm93IG91dHB1dHMKKzEKK0lQIGZvcndhcmRpbmcgaXMgb24uCitUaGVyZSBpcyBhIGxvdCBvZiB1c2VmdWwgaW5mbyBpbiBoZXJlIGJlc3QgZm91bmQgYnkgZ29pbmcgaW4gYW5kIGhhdmluZyBhIGxvb2sKK2Fyb3VuZCwgc28gSSdsbCB0YWtlIHlvdSB0aHJvdWdoIHNvbWUgZW50cmllcyBJIGNvbnNpZGVyIGltcG9ydGFudC4KKworQWxsIHRoZSBwcm9jZXNzZXMgcnVubmluZyBvbiB0aGUgbWFjaGluZSBoYXZlIHRoZWlyIG93biBlbnRyeSBkZWZpbmVkIGJ5CisvcHJvYy88cGlkPgorU28gbGV0cyBoYXZlIGEgbG9vayBhdCB0aGUgaW5pdCBwcm9jZXNzCitjZCAvcHJvYy8xCisKK2NhdCBjbWRsaW5lCitlbWl0cworaW5pdCBbMl0KKworY2QgL3Byb2MvMS9mZAorVGhpcyBjb250YWlucyBudW1lcmljYWwgZW50cmllcyBvZiBhbGwgdGhlIG9wZW4gZmlsZXMsCitzb21lIG9mIHRoZXNlIHlvdSBjYW4gY2F0IGUuZy4gc3Rkb3V0ICgyKQorCitjYXQgL3Byb2MvMjkvbWFwcworb24gbXkgbWFjaGluZSBlbWl0cworCiswMDQwMDAwMC0wMDQ3ODAwMCByLXhwIDAwMDAwMDAwIDVmOjAwIDQxMDMgICAgICAgL2Jpbi9iYXNoCiswMDQ3ODAwMC0wMDQ3ZTAwMCBydy1wIDAwMDc3MDAwIDVmOjAwIDQxMDMgICAgICAgL2Jpbi9iYXNoCiswMDQ3ZTAwMC0wMDQ5MjAwMCByd3hwIDAwMDAwMDAwIDAwOjAwIDAKKzQwMDAwMDAwLTQwMDE1MDAwIHIteHAgMDAwMDAwMDAgNWY6MDAgMTQzODIgICAgICAvbGliL2xkLTIuMS4yLnNvCis0MDAxNTAwMC00MDAxNjAwMCBydy1wIDAwMDE0MDAwIDVmOjAwIDE0MzgyICAgICAgL2xpYi9sZC0yLjEuMi5zbworNDAwMTYwMDAtNDAwMTcwMDAgcnd4cCAwMDAwMDAwMCAwMDowMCAwCis0MDAxNzAwMC00MDAxODAwMCBydy1wIDAwMDAwMDAwIDAwOjAwIDAKKzQwMDE4MDAwLTQwMDFiMDAwIHIteHAgMDAwMDAwMDAgNWY6MDAgMTQ0MzUgICAgICAvbGliL2xpYnRlcm1jYXAuc28uMi4wLjgKKzQwMDFiMDAwLTQwMDFjMDAwIHJ3LXAgMDAwMDIwMDAgNWY6MDAgMTQ0MzUgICAgICAvbGliL2xpYnRlcm1jYXAuc28uMi4wLjgKKzQwMDFjMDAwLTQwMTBkMDAwIHIteHAgMDAwMDAwMDAgNWY6MDAgMTQzODcgICAgICAvbGliL2xpYmMtMi4xLjIuc28KKzQwMTBkMDAwLTQwMTExMDAwIHJ3LXAgMDAwZjAwMDAgNWY6MDAgMTQzODcgICAgICAvbGliL2xpYmMtMi4xLjIuc28KKzQwMTExMDAwLTQwMTE0MDAwIHJ3LXAgMDAwMDAwMDAgMDA6MDAgMAorNDAxMTQwMDAtNDAxMWUwMDAgci14cCAwMDAwMDAwMCA1ZjowMCAxNDQwOCAgICAgIC9saWIvbGlibnNzX2ZpbGVzLTIuMS4yLnNvCis0MDExZTAwMC00MDExZjAwMCBydy1wIDAwMDA5MDAwIDVmOjAwIDE0NDA4ICAgICAgL2xpYi9saWJuc3NfZmlsZXMtMi4xLjIuc28KKzdmZmZkMDAwLTgwMDAwMDAwIHJ3eHAgZmZmZmUwMDAgMDA6MDAgMAorCisKK1Nob3dpbmcgdXMgdGhlIHNoYXJlZCBsaWJyYXJpZXMgaW5pdCB1c2VzIHdoZXJlIHRoZXkgYXJlIGluIG1lbW9yeQorJiBtZW1vcnkgYWNjZXNzIHBlcm1pc3Npb25zIGZvciBlYWNoIHZpcnR1YWwgbWVtb3J5IGFyZWEuCisKKy9wcm9jLzEvY3dkIGlzIGEgc29mdGxpbmsgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCisvcHJvYy8xL3Jvb3QgaXMgdGhlIHJvb3Qgb2YgdGhlIGZpbGVzeXN0ZW0gZm9yIHRoaXMgcHJvY2Vzcy4gCisKKy9wcm9jLzEvbWVtIGlzIHRoZSBjdXJyZW50IHJ1bm5pbmcgcHJvY2Vzc2VzIG1lbW9yeSB3aGljaCB5b3UKK2NhbiByZWFkICYgd3JpdGUgdG8gbGlrZSBhIGZpbGUuCitzdHJhY2UgdXNlcyB0aGlzIHNvbWV0aW1lcyBhcyBpdCBpcyBhIGJpdCBmYXN0ZXIgdGhhbiB0aGUKK3JhdGhlciBpbmVmZmljaWVudCBwdHJhY2UgaW50ZXJmYWNlIGZvciBwZWVraW5nIGF0IERBVEEuCisKKworY2F0IHN0YXR1cyAKKworTmFtZTogICBpbml0CitTdGF0ZTogIFMgKHNsZWVwaW5nKQorUGlkOiAgICAxCitQUGlkOiAgIDAKK1VpZDogICAgMCAgICAgICAwICAgICAgIDAgICAgICAgMAorR2lkOiAgICAwICAgICAgIDAgICAgICAgMCAgICAgICAwCitHcm91cHM6CitWbVNpemU6ICAgICAgNDA4IGtCCitWbUxjazogICAgICAgICAwIGtCCitWbVJTUzogICAgICAgMjA4IGtCCitWbURhdGE6ICAgICAgIDI0IGtCCitWbVN0azogICAgICAgICA4IGtCCitWbUV4ZTogICAgICAgMzY4IGtCCitWbUxpYjogICAgICAgICAwIGtCCitTaWdQbmQ6IDAwMDAwMDAwMDAwMDAwMDAKK1NpZ0JsazogMDAwMDAwMDAwMDAwMDAwMAorU2lnSWduOiA3ZmZmZmZmZmQ3ZjBkOGZjCitTaWdDZ3Q6IDAwMDAwMDAwMjgwYjI2MDMKK0NhcEluaDogMDAwMDAwMDBmZmZmZmVmZgorQ2FwUHJtOiAwMDAwMDAwMGZmZmZmZmZmCitDYXBFZmY6IDAwMDAwMDAwZmZmZmZlZmYKKworVXNlciBQU1c6ICAgIDA3MGRlMDAwIDgwNDE0MTQ2Cit0YXNrOiAwMDRiNjAwMCB0c3M6IDAwNGI2MmQ4IGtzcDogMDA0YjdjYTggcHRfcmVnczogMDA0YjdmNjgKK1VzZXIgR1BSUzoKKzAwMDAwNDAwICAwMDAwMDAwMCAgMDAwMDAwMGIgIDdmZmZmYTkwCiswMDAwMDAwMCAgMDAwMDAwMDAgIDAwMDAwMDAwICAwMDQ1ZDlmNAorMDA0NWNhZmMgIDdmZmZmYTkwICA3ZmZmZmYxOCAgMDA0NWNiMDgKKzAwMDEwNDAwICA4MDQwMzllOCAgODA0MDNhZjggIDdmZmZmOGIwCitVc2VyIEFDUlM6CiswMDAwMDAwMCAgMDAwMDAwMDAgIDAwMDAwMDAwICAwMDAwMDAwMAorMDAwMDAwMDEgIDAwMDAwMDAwICAwMDAwMDAwMCAgMDAwMDAwMDAKKzAwMDAwMDAwICAwMDAwMDAwMCAgMDAwMDAwMDAgIDAwMDAwMDAwCiswMDAwMDAwMCAgMDAwMDAwMDAgIDAwMDAwMDAwICAwMDAwMDAwMAorS2VybmVsIEJhY2tDaGFpbiAgQ2FsbENoYWluICAgIEJhY2tDaGFpbiAgQ2FsbENoYWluCisgICAgICAgMDA0YjdjYTggICA4MDAyYmQwYyAgICAgMDA0YjdkMTggICA4MDAyYjkyYworICAgICAgIDAwNGI3ZGI4ICAgODAwNWNkNTAgICAgIDAwNGI3ZTM4ICAgODAwNWQxMmEKKyAgICAgICAwMDRiN2YwOCAgIDgwMDE5MTE0ICAgICAgICAgICAgICAgICAgICAgCitTaG93aW5nIGFtb25nIG90aGVyIHRoaW5ncyBtZW1vcnkgdXNhZ2UgJiBzdGF0dXMgb2Ygc29tZSBzaWduYWxzICYKK3RoZSBwcm9jZXNzZXMnZXMgcmVnaXN0ZXJzIGZyb20gdGhlIGtlcm5lbCB0YXNrX3N0cnVjdHVyZQorYXMgd2VsbCBhcyBhIGJhY2tjaGFpbiB3aGljaCBtYXkgYmUgdXNlZnVsIGlmIGEgcHJvY2VzcyBjcmFzaGVzCitpbiB0aGUga2VybmVsIGZvciBzb21lIHVua25vd24gcmVhc29uLgorCitTb21lIGRyaXZlciBkZWJ1Z2dpbmcgdGVjaG5pcXVlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2RlYnVnIGZlYXR1cmUKKy0tLS0tLS0tLS0tLS0KK1NvbWUgb2Ygb3VyIGRyaXZlcnMgbm93IHN1cHBvcnQgYSAiZGVidWcgZmVhdHVyZSIgaW4KKy9wcm9jL3MzOTBkYmYgc2VlIHMzOTBkYmYudHh0IGluIHRoZSBsaW51eC9Eb2N1bWVudGF0aW9uIGRpcmVjdG9yeQorZm9yIG1vcmUgaW5mby4KK2UuZy4gCit0byBzd2l0Y2ggb24gdGhlIGxjcyAiZGVidWcgZmVhdHVyZSIKK2VjaG8gNSA+IC9wcm9jL3MzOTBkYmYvbGNzL2xldmVsCismIHRoZW4gYWZ0ZXIgdGhlIGVycm9yIG9jY3VycmVkLgorY2F0IC9wcm9jL3MzOTBkYmYvbGNzL3NwcmludGYgPi9sb2dmaWxlCit0aGUgbG9nZmlsZSBub3cgY29udGFpbnMgc29tZSBpbmZvcm1hdGlvbiB3aGljaCBtYXkgaGVscAordGVjaCBzdXBwb3J0IHJlc29sdmUgYSBwcm9ibGVtIGluIHRoZSBmaWVsZC4KKworCisKK2hpZ2ggbGV2ZWwgZGVidWdnaW5nIG5ldHdvcmsgZHJpdmVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitpZmNvbmZpZyBpcyBhIHF1aXRlIHVzZWZ1bCBjb21tYW5kCitpdCBnaXZlcyB0aGUgY3VycmVudCBzdGF0ZSBvZiBuZXR3b3JrIGRyaXZlcnMuCisKK0lmIHlvdSBzdXNwZWN0IHlvdXIgbmV0d29yayBkZXZpY2UgZHJpdmVyIGlzIGRlYWQKK29uZSB3YXkgdG8gY2hlY2sgaXMgdHlwZSAKK2lmY29uZmlnIDxuZXR3b3JrIGRldmljZT4gCitlLmcuIHRyMAorWW91IHNob3VsZCBzZWUgc29tZXRoaW5nIGxpa2UKK3RyMCAgICAgICBMaW5rIGVuY2FwOjE2LzQgTWJwcyBUb2tlbiBSaW5nIChOZXcpICBIV2FkZHIgMDA6MDQ6QUM6MjA6OEU6NDgKKyAgICAgICAgICBpbmV0IGFkZHI6OS4xNjQuMTg1LjEzMiAgQmNhc3Q6OS4xNjQuMTkxLjI1NSAgTWFzazoyNTUuMjU1LjIyNC4wCisgICAgICAgICAgVVAgQlJPQURDQVNUIFJVTk5JTkcgTVVMVElDQVNUICBNVFU6MjAwMCAgTWV0cmljOjEKKyAgICAgICAgICBSWCBwYWNrZXRzOjI0NjEzNCBlcnJvcnM6MCBkcm9wcGVkOjAgb3ZlcnJ1bnM6MCBmcmFtZTowCisgICAgICAgICAgVFggcGFja2V0czo1IGVycm9yczowIGRyb3BwZWQ6MCBvdmVycnVuczowIGNhcnJpZXI6MAorICAgICAgICAgIGNvbGxpc2lvbnM6MCB0eHF1ZXVlbGVuOjEwMAorCitpZiB0aGUgZGV2aWNlIGRvZXNuJ3Qgc2F5IHVwCit0cnkKKy9ldGMvcmMuZC9pbml0LmQvbmV0d29yayBzdGFydCAKKyggdGhpcyBzdGFydHMgdGhlIG5ldHdvcmsgc3RhY2sgJiBob3BlZnVsbHkgY2FsbHMgaWZjb25maWcgdHIwIHVwICkuCitpZmNvbmZpZyBsb29rcyBhdCB0aGUgb3V0cHV0IG9mIC9wcm9jL25ldC9kZXYgYW5kIHByZXNlbnRzIGl0IGluIGEgbW9yZQorcHJlc2VudGFibGUgZm9ybS4KK05vdyBwaW5nIHRoZSBkZXZpY2UgZnJvbSBhIG1hY2hpbmUgaW4gdGhlIHNhbWUgc3VibmV0LgoraWYgdGhlIFJYIHBhY2tldHMgY291bnQgJiBUWCBwYWNrZXRzIGNvdW50cyBkb24ndCBpbmNyZW1lbnQgeW91IHByb2JhYmx5CitoYXZlIHByb2JsZW1zLgorbmV4dCAKK2NhdCAvcHJvYy9uZXQvYXJwCitEbyB5b3Ugc2VlIGFueSBoYXJkd2FyZSBhZGRyZXNzZXMgaW4gdGhlIGNhY2hlIGlmIG5vdCB5b3UgbWF5IGhhdmUgcHJvYmxlbXMuCitOZXh0IHRyeQorcGluZyAtYyA1IDxicm9hZGNhc3RfYWRkcj4gaS5lLiB0aGUgQmNhc3QgZmllbGQgYWJvdmUgaW4gdGhlIG91dHB1dCBvZgoraWZjb25maWcuIERvIHlvdSBzZWUgYW55IHJlcGxpZXMgZnJvbSBtYWNoaW5lcyBvdGhlciB0aGFuIHRoZSBsb2NhbCBtYWNoaW5lCitpZiBub3QgeW91IG1heSBoYXZlIHByb2JsZW1zLiBhbHNvIGlmIHRoZSBUWCBwYWNrZXRzIGNvdW50IGluIGlmY29uZmlnCitoYXNuJ3QgaW5jcmVtZW50ZWQgZWl0aGVyIHlvdSBoYXZlIHNlcmlvdXMgcHJvYmxlbXMgaW4geW91ciBkcml2ZXIgCisoZS5nLiB0aGUgdHhidXN5IGZpZWxkIG9mIHRoZSBuZXR3b3JrIGRldmljZSBiZWluZyBzdHVjayBvbiApIAorb3IgeW91IG1heSBoYXZlIG11bHRpcGxlIG5ldHdvcmsgZGV2aWNlcyBjb25uZWN0ZWQuCisKKworY2hhbmRldgorLS0tLS0tLQorVGhlcmUgaXMgYSBuZXcgZGV2aWNlIGxheWVyIGZvciBjaGFubmVsIGRldmljZXMsIHNvbWUKK2RyaXZlcnMgZS5nLiBsY3MgYXJlIHJlZ2lzdGVyZWQgd2l0aCB0aGlzIGxheWVyLgorSWYgdGhlIGRldmljZSB1c2VzIHRoZSBjaGFubmVsIGRldmljZSBsYXllciB5b3UnbGwgYmUKK2FibGUgdG8gZmluZCB3aGF0IGludGVycnVwdHMgaXQgdXNlcyAmIHRoZSBjdXJyZW50IHN0YXRlIAorb2YgdGhlIGRldmljZS4KK1NlZSB0aGUgbWFucGFnZSBjaGFuZGV2LjggJnR5cGUgY2F0IC9wcm9jL2NoYW5kZXYgZm9yIG1vcmUgaW5mby4KKworCitTeXNScQorPT09PT0KK1RoaXMgaXMgbm93IHN1cHBvcnRlZCBieSBsaW51eCBmb3Igcy8zOTAgJiB6L0FyY2hpdGVjdHVyZS4KK1RvIGVuYWJsZSBpdCBkbyBjb21waWxlIHRoZSBrZXJuZWwgd2l0aCAKK0tlcm5lbCBIYWNraW5nIC0+IE1hZ2ljIFN5c1JxIEtleSBFbmFibGVkCitlY2hvICIxIiA+IC9wcm9jL3N5cy9rZXJuZWwvc3lzcnEKK2Fsc28gdHlwZQorZWNobyAiOCIgPi9wcm9jL3N5cy9rZXJuZWwvcHJpbnRrCitUbyBtYWtlIHByaW50ayBvdXRwdXQgZ28gdG8gY29uc29sZS4KK09uIDM5MCBhbGwgY29tbWFuZHMgYXJlIHByZWZpeGVkIHdpdGgKK14tCitlLmcuCiteLXQgd2lsbCBzaG93IHRhc2tzLgorXi0/IG9yIHNvbWUgdW5rbm93biBjb21tYW5kIHdpbGwgZGlzcGxheSBoZWxwLgorVGhlIHN5c3JxIGtleSByZWFkaW5nIGlzIHZlcnkgcGlja3kgKCBJIGhhdmUgdG8gdHlwZSB0aGUga2V5cyBpbiBhbgorIHh0ZXJtIHNlc3Npb24gJiBwYXN0ZSB0aGVtICBpbnRvIHRoZSB4MzI3MCBjb25zb2xlICkKKyYgaXQgbWF5IGJlIHdpc2UgdG8gcHJlZGVmaW5lIHRoZSBrZXlzIGFzIGRlc2NyaWJlZCBpbiB0aGUgVk0gaGludHMgYWJvdmUKKworVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBzeW5jaW5nIGRpc2tzIHVubW91bnRpbmcgJiByZWJvb3RpbmcKK2lmIHRoZSBtYWNoaW5lIGdldHMgcGFydGlhbGx5IGh1bmcuCisKK1JlYWQgRG9jdW1lbnRhdGlvbi9zeXNycS50eHQgZm9yIG1vcmUgaW5mbworCitSZWZlcmVuY2VzOgorPT09PT09PT09PT0KK0VudGVycHJpc2UgU3lzdGVtcyBBcmNoaXRlY3R1cmUgUmVmZXJlbmNlIFN1bW1hcnkKK0VudGVycHJpc2UgU3lzdGVtcyBBcmNoaXRlY3R1cmUgUHJpbmNpcGxlcyBvZiBPcGVyYXRpb24KK0hhcnRtdXQgUGVubmVycyBzMzkwIHN0YWNrIGZyYW1lIHNoZWV0LgorSUJNIE1haW5mcmFtZSBDaGFubmVsIEF0dGFjaG1lbnQgYSB0ZWNobm9sb2d5IGJyaWVmIGZyb20gYSBDSVNDTyB3ZWJwYWdlCitWYXJpb3VzIGJpdHMgb2YgbWFuICYgaW5mbyBwYWdlcyBvZiBMaW51eC4KK0xpbnV4ICYgR0RCIHNvdXJjZS4KK1ZhcmlvdXMgaW5mbyAmIG1hbiBwYWdlcy4KK0NNUyBIZWxwIG9uIHRyYWNpbmcgY29tbWFuZHMuCitMaW51eCBmb3Igcy8zOTAgRWxmIEFwcGxpY2F0aW9uIEJpbmFyeSBJbnRlcmZhY2UKK0xpbnV4IGZvciB6L1NlcmllcyBFbGYgQXBwbGljYXRpb24gQmluYXJ5IEludGVyZmFjZSAoIEJvdGggSGlnaGx5IFJlY29tbWVuZGVkICkKK3ovQXJjaGl0ZWN0dXJlIFByaW5jaXBsZXMgb2YgT3BlcmF0aW9uIFNBMjItNzgzMi0wMAorRW50ZXJwcmlzZSBTeXN0ZW1zIEFyY2hpdGVjdHVyZS8zOTAgUmVmZXJlbmNlIFN1bW1hcnkgU0EyMi03MjA5LTAxICYgdGhlCitFbnRlcnByaXNlIFN5c3RlbXMgQXJjaGl0ZWN0dXJlLzM5MCBQcmluY2lwbGVzIG9mIE9wZXJhdGlvbiBTQTIyLTcyMDEtMDUKKworU3BlY2lhbCBUaGFua3MKKz09PT09PT09PT09PT09CitTcGVjaWFsIHRoYW5rcyB0byBOZWFsZSBGZXJndXNvbiB3aG8gbWFpbnRhaW5zIGEgbXVjaAorcHJldHRpZXIgSFRNTCB2ZXJzaW9uIG9mIHRoaXMgcGFnZSBhdAoraHR0cDovL2xpbnV4dm0ub3JnL3Blbmd1aW52bS8KK0JvYiBHcmFpbmdlciBTdGVmYW4gQmFkZXIgJiBvdGhlcnMgZm9yIHJlcG9ydGluZyBidWdzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3MzOTAvY2RzLnR4dCBiL0RvY3VtZW50YXRpb24vczM5MC9jZHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4MGE3OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3MzOTAvY2RzLnR4dApAQCAtMCwwICsxLDQ3MiBAQAorTGludXggZm9yIFMvMzkwIGFuZCB6U2VyaWVzCisKK0NvbW1vbiBEZXZpY2UgU3VwcG9ydCAoQ0RTKQorRGV2aWNlIERyaXZlciBJL08gU3VwcG9ydCBSb3V0aW5lcworCitBdXRob3JzIDogSW5nbyBBZGx1bmcKKwkgIENvcm5lbGlhIEh1Y2sKKworQ29weXJpZ2h0LCBJQk0gQ29ycC4gMTk5OS0yMDAyCisKK0ludHJvZHVjdGlvbgorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgY29tbW9uIGRldmljZSBzdXBwb3J0IHJvdXRpbmVzIGZvciBMaW51eC8zOTAuCitEaWZmZXJlbnQgdGhhbiBvdGhlciBoYXJkd2FyZSBhcmNoaXRlY3R1cmVzLCBFU0EvMzkwIGhhcyBkZWZpbmVkIGEgdW5pZmllZAorSS9PIGFjY2VzcyBtZXRob2QuIFRoaXMgZ2l2ZXMgcmVsaWVmIHRvIHRoZSBkZXZpY2UgZHJpdmVycyBhcyB0aGV5IGRvbid0CitoYXZlIHRvIGRlYWwgd2l0aCBkaWZmZXJlbnQgYnVzIHR5cGVzLCBwb2xsaW5nIHZlcnN1cyBpbnRlcnJ1cHQKK3Byb2Nlc3NpbmcsIHNoYXJlZCB2ZXJzdXMgbm9uLXNoYXJlZCBpbnRlcnJ1cHQgcHJvY2Vzc2luZywgRE1BIHZlcnN1cyBwb3J0CitJL08gKFBJTyksIGFuZCBvdGhlciBoYXJkd2FyZSBmZWF0dXJlcyBtb3JlLiBIb3dldmVyLCB0aGlzIGltcGxpZXMgdGhhdAorZWl0aGVyIGV2ZXJ5IHNpbmdsZSBkZXZpY2UgZHJpdmVyIG5lZWRzIHRvIGltcGxlbWVudCB0aGUgaGFyZHdhcmUgSS9PCithdHRhY2htZW50IGZ1bmN0aW9uYWxpdHkgaXRzZWxmLCBvciB0aGUgb3BlcmF0aW5nIHN5c3RlbSBwcm92aWRlcyBmb3IgYQordW5pZmllZCBtZXRob2QgdG8gYWNjZXNzIHRoZSBoYXJkd2FyZSwgcHJvdmlkaW5nIGFsbCB0aGUgZnVuY3Rpb25hbGl0eSB0aGF0CitldmVyeSBzaW5nbGUgZGV2aWNlIGRyaXZlciB3b3VsZCBoYXZlIHRvIHByb3ZpZGUgaXRzZWxmLgorCitUaGUgZG9jdW1lbnQgZG9lcyBub3QgaW50ZW5kIHRvIGV4cGxhaW4gdGhlIEVTQS8zOTAgaGFyZHdhcmUgYXJjaGl0ZWN0dXJlIGluCitldmVyeSBkZXRhaWwuVGhpcyBpbmZvcm1hdGlvbiBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgRVNBLzM5MCBQcmluY2lwbGVzIG9mCitPcGVyYXRpb24gbWFudWFsIChJQk0gRm9ybS4gTm8uIFNBMjItNzIwMSkuCisKK0luIG9yZGVyIHRvIGJ1aWxkIGNvbW1vbiBkZXZpY2Ugc3VwcG9ydCBmb3IgRVNBLzM5MCBJL08gaW50ZXJmYWNlcywgYQorZnVuY3Rpb25hbCBsYXllciB3YXMgaW50cm9kdWNlZCB0aGF0IHByb3ZpZGVzIGdlbmVyaWMgSS9PIGFjY2VzcyBtZXRob2RzIHRvCit0aGUgaGFyZHdhcmUuIAorCitUaGUgY29tbW9uIGRldmljZSBzdXBwb3J0IGxheWVyIGNvbXByaXNlcyB0aGUgSS9PIHN1cHBvcnQgcm91dGluZXMgZGVmaW5lZCAKK2JlbG93LiBTb21lIG9mIHRoZW0gaW1wbGVtZW50IGNvbW1vbiBMaW51eCBkZXZpY2UgZHJpdmVyIGludGVyZmFjZXMsIHdoaWxlIAorc29tZSBvZiB0aGVtIGFyZSBFU0EvMzkwIHBsYXRmb3JtIHNwZWNpZmljLgorCitOb3RlOgorSW4gb3JkZXIgdG8gd3JpdGUgYSBkcml2ZXIgZm9yIFMvMzkwLCB5b3UgYWxzbyBuZWVkIHRvIGxvb2sgaW50byB0aGUgaW50ZXJmYWNlCitkZXNjcmliZWQgaW4gRG9jdW1lbnRhdGlvbi9zMzkwL2RyaXZlci1tb2RlbC50eHQuCisKK05vdGUgZm9yIHBvcnRpbmcgZHJpdmVycyBmcm9tIDIuNDoKK1RoZSBtYWpvciBjaGFuZ2VzIGFyZToKKyogVGhlIGZ1bmN0aW9ucyB1c2UgYSBjY3dfZGV2aWNlIGluc3RlYWQgb2YgYW4gaXJxIChzdWJjaGFubmVsKS4KKyogQWxsIGRyaXZlcnMgbXVzdCBkZWZpbmUgYSBjY3dfZHJpdmVyIChzZWUgZHJpdmVyLW1vZGVsLnR4dCkgYW5kIHRoZSBhc3NvY2lhdGVkCisgIGZ1bmN0aW9ucy4KKyogcmVxdWVzdF9pcnEoKSBhbmQgZnJlZV9pcnEoKSBhcmUgbm8gbG9uZ2VyIGRvbmUgYnkgdGhlIGRyaXZlci4KKyogVGhlIG9wZXJfaGFuZGxlciBpcyAoa2luZG9mKSByZXBsYWNlZCBieSB0aGUgcHJvYmUoKSBhbmQgc2V0X29ubGluZSgpIGZ1bmN0aW9ucworICBvZiB0aGUgY2N3X2RyaXZlci4KKyogVGhlIG5vdF9vcGVyX2hhbmRsZXIgaXMgKGtpbmRvZikgcmVwbGFjZWQgYnkgdGhlIHJlbW92ZSgpIGFuZCBzZXRfb2ZmbGluZSgpCisgIGZ1bmN0aW9ucyBvZiB0aGUgY2N3X2RyaXZlci4KKyogVGhlIGNoYW5uZWwgZGV2aWNlIGxheWVyIGlzIGdvbmUuCisqIFRoZSBpbnRlcnJ1cHQgaGFuZGxlcnMgbXVzdCBiZSBhZGFwdGVkIHRvIHVzZSBhIGNjd19kZXZpY2UgYXMgYXJndW1lbnQuCisgIE1vcmVvdmVyLCB0aGV5IGRvbid0IHJldHVybiBhIGRldnN0YXQsIGJ1dCBhbiBpcmIuCisqIEJlZm9yZSBpbml0aWF0aW5nIGFuIGlvLCB0aGUgb3B0aW9ucyBtdXN0IGJlIHNldCB2aWEgY2N3X2RldmljZV9zZXRfb3B0aW9ucygpLgorKiBJbnN0ZWFkIG9mIGNhbGxpbmcgcmVhZF9kZXZfY2hhcnMoKS9yZWFkX2NvbmZfZGF0YSgpLCB0aGUgZHJpdmVyIGlzc3VlcworICB0aGUgY2hhbm5lbCBwcm9ncmFtIGFuZCBoYW5kbGVzIHRoZSBpbnRlcnJ1cHQgaXRzZWxmLgorCitjY3dfZGV2aWNlX2dldF9jaXcoKQorICAgZ2V0IGNvbW1hbmRzIGZyb20gZXh0ZW5kZWQgc2Vuc2UgZGF0YS4KKworY2N3X2RldmljZV9zdGFydCgpCQorY2N3X2RldmljZV9zdGFydF90aW1lb3V0KCkKK2Njd19kZXZpY2Vfc3RhcnRfa2V5KCkKK2Njd19kZXZpY2Vfc3RhcnRfa2V5X3RpbWVvdXQoKQorICAgaW5pdGlhdGUgYW4gSS9PIHJlcXVlc3QuCisKK2Njd19kZXZpY2VfcmVzdW1lKCkKKyAgIHJlc3VtZSBjaGFubmVsIHByb2dyYW0gZXhlY3V0aW9uLgorCitjY3dfZGV2aWNlX2hhbHQoKQkKKyAgIHRlcm1pbmF0ZSB0aGUgY3VycmVudCBJL08gcmVxdWVzdCBwcm9jZXNzZWQgb24gdGhlIGRldmljZS4KKworZG9fSVJRKCkJCisgICBnZW5lcmljIGludGVycnVwdCByb3V0aW5lLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgaW50ZXJydXB0IGVudHJ5CisgICByb3V0aW5lIHdoZW5ldmVyIGFuIEkvTyBpbnRlcnJ1cHQgaXMgcHJlc2VudGVkIHRvIHRoZSBzeXN0ZW0uIFRoZSBkb19JUlEoKQorICAgcm91dGluZSBkZXRlcm1pbmVzIHRoZSBpbnRlcnJ1cHQgc3RhdHVzIGFuZCBjYWxscyB0aGUgZGV2aWNlIHNwZWNpZmljCisgICBpbnRlcnJ1cHQgaGFuZGxlciBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIChmbGFncykgZGVmaW5lZCBkdXJpbmcgSS9PIHJlcXVlc3QKKyAgIGluaXRpYXRpb24gd2l0aCBkb19JTygpLgorCitUaGUgbmV4dCBjaGFwdGVycyBkZXNjcmliZSB0aGUgZnVuY3Rpb25zIG90aGVyIHRoYW4gZG9fSVJRKCkgaW4gbW9yZSBkZXRhaWxzLgorVGhlIGRvX0lSUSgpIGludGVyZmFjZSBpcyBub3QgZGVzY3JpYmVkLCBhcyBpdCBpcyBjYWxsZWQgZnJvbSB0aGUgTGludXgvMzkwCitmaXJzdCBsZXZlbCBpbnRlcnJ1cHQgaGFuZGxlciBvbmx5IGFuZCBkb2VzIG5vdCBjb21wcmlzZSBhIGRldmljZSBkcml2ZXIKK2NhbGxhYmxlIGludGVyZmFjZS4gSW5zdGVhZCwgdGhlIGZ1bmN0aW9uYWwgZGVzY3JpcHRpb24gb2YgZG9fSU8oKSBhbHNvCitkZXNjcmliZXMgdGhlIGlucHV0IHRvIHRoZSBkZXZpY2Ugc3BlY2lmaWMgaW50ZXJydXB0IGhhbmRsZXIuCisKK05vdGU6IEFsbCBleHBsYW5hdGlvbnMgYXBwbHkgYWxzbyB0byB0aGUgNjQgYml0IGFyY2hpdGVjdHVyZSBzMzkweC4KKworCitDb21tb24gRGV2aWNlIFN1cHBvcnQgKENEUykgZm9yIExpbnV4LzM5MCBEZXZpY2UgRHJpdmVycworCitHZW5lcmFsIEluZm9ybWF0aW9uCisKK1RoZSBmb2xsb3dpbmcgY2hhcHRlcnMgZGVzY3JpYmUgdGhlIEkvTyByZWxhdGVkIGludGVyZmFjZSByb3V0aW5lcyB0aGUKK0xpbnV4LzM5MCBjb21tb24gZGV2aWNlIHN1cHBvcnQgKENEUykgcHJvdmlkZXMgdG8gYWxsb3cgZm9yIGRldmljZSBzcGVjaWZpYworZHJpdmVyIGltcGxlbWVudGF0aW9ucyBvbiB0aGUgSUJNIEVTQS8zOTAgaGFyZHdhcmUgcGxhdGZvcm0uIFRob3NlIGludGVyZmFjZXMKK2ludGVuZCB0byBwcm92aWRlIHRoZSBmdW5jdGlvbmFsaXR5IHJlcXVpcmVkIGJ5IGV2ZXJ5IGRldmljZSBkcml2ZXIKK2ltcGxlbWVudGF0aW9uIHRvIGFsbG93IHRvIGRyaXZlIGEgc3BlY2lmaWMgaGFyZHdhcmUgZGV2aWNlIG9uIHRoZSBFU0EvMzkwCitwbGF0Zm9ybS4gU29tZSBvZiB0aGUgaW50ZXJmYWNlIHJvdXRpbmVzIGFyZSBzcGVjaWZpYyB0byBMaW51eC8zOTAgYW5kIHNvbWUKK29mIHRoZW0gY2FuIGJlIGZvdW5kIG9uIG90aGVyIExpbnV4IHBsYXRmb3JtcyBpbXBsZW1lbnRhdGlvbnMgdG9vLgorTWlzY2VsbGFuZW91cyBmdW5jdGlvbiBwcm90b3R5cGVzLCBkYXRhIGRlY2xhcmF0aW9ucywgYW5kIG1hY3JvIGRlZmluaXRpb25zCitjYW4gYmUgZm91bmQgaW4gdGhlIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBDIGhlYWRlciBmaWxlCitsaW51eC9hcmNoL3MzOTAvaW5jbHVkZS9hc20vaXJxLmguCisKK092ZXJ2aWV3IG9mIENEUyBpbnRlcmZhY2UgY29uY2VwdHMKKworRGlmZmVyZW50IHRvIG90aGVyIGhhcmR3YXJlIHBsYXRmb3JtcywgdGhlIEVTQS8zOTAgYXJjaGl0ZWN0dXJlIGRvZXNuJ3QgZGVmaW5lCitpbnRlcnJ1cHQgbGluZXMgbWFuYWdlZCBieSBhIHNwZWNpZmljIGludGVycnVwdCBjb250cm9sbGVyIGFuZCBidXMgc3lzdGVtcwordGhhdCBtYXkgb3IgbWF5IG5vdCBhbGxvdyBmb3Igc2hhcmVkIGludGVycnVwdHMsIERNQSBwcm9jZXNzaW5nLCBldGMuLiBJbnN0ZWFkLAordGhlIEVTQS8zOTAgYXJjaGl0ZWN0dXJlIGhhcyBpbXBsZW1lbnRlZCBhIHNvIGNhbGxlZCBjaGFubmVsIHN1YnN5c3RlbSwgdGhhdAorcHJvdmlkZXMgYSB1bmlmaWVkIHZpZXcgb2YgdGhlIGRldmljZXMgcGh5c2ljYWxseSBhdHRhY2hlZCB0byB0aGUgc3lzdGVtcy4KK1Rob3VnaCB0aGUgRVNBLzM5MCBoYXJkd2FyZSBwbGF0Zm9ybSBrbm93cyBhYm91dCBhIGh1Z2UgdmFyaWV0eSBvZiBkaWZmZXJlbnQKK3BlcmlwaGVyYWwgYXR0YWNobWVudHMgbGlrZSBkaXNrIGRldmljZXMgKGFrYS4gREFTRHMpLCB0YXBlcywgY29tbXVuaWNhdGlvbgorY29udHJvbGxlcnMsIGV0Yy4gdGhleSBjYW4gYWxsIGJlIGFjY2Vzc2VkIGJ5IGEgd2VsbCBkZWZpbmVkIGFjY2VzcyBtZXRob2QgYW5kCit0aGV5IGFyZSBwcmVzZW50aW5nIEkvTyBjb21wbGV0aW9uIGEgdW5pZmllZCB3YXkgOiBJL08gaW50ZXJydXB0aW9ucy4gRXZlcnkKK3NpbmdsZSBkZXZpY2UgaXMgdW5pcXVlbHkgaWRlbnRpZmllZCB0byB0aGUgc3lzdGVtIGJ5IGEgc28gY2FsbGVkIHN1YmNoYW5uZWwsCit3aGVyZSB0aGUgRVNBLzM5MCBhcmNoaXRlY3R1cmUgYWxsb3dzIGZvciA2NGsgZGV2aWNlcyBiZSBhdHRhY2hlZC4KKworTGludXgsIGhvd2V2ZXIsIHdhcyBmaXJzdCBidWlsdCBvbiB0aGUgSW50ZWwgUEMgYXJjaGl0ZWN0dXJlLCB3aXRoIGl0cyB0d28KK2Nhc2NhZGVkIDgyNTkgcHJvZ3JhbW1hYmxlIGludGVycnVwdCBjb250cm9sbGVycyAoUElDcyksIHRoYXQgYWxsb3cgZm9yIGEKK21heGltdW0gb2YgMTUgZGlmZmVyZW50IGludGVycnVwdCBsaW5lcy4gQWxsIGRldmljZXMgYXR0YWNoZWQgdG8gc3VjaCBhIHN5c3RlbQorc2hhcmUgdGhvc2UgMTUgaW50ZXJydXB0IGxldmVscy4gRGV2aWNlcyBhdHRhY2hlZCB0byB0aGUgSVNBIGJ1cyBzeXN0ZW0gbXVzdAorbm90IHNoYXJlIGludGVycnVwdCBsZXZlbHMgKGFrYS4gSVJRcyksIGFzIHRoZSBJU0EgYnVzIGJhc2VzIG9uIGVkZ2UgdHJpZ2dlcmVkCitpbnRlcnJ1cHRzLiBNQ0EsIEVJU0EsIFBDSSBhbmQgb3RoZXIgYnVzIHN5c3RlbXMgYmFzZSBvbiBsZXZlbCB0cmlnZ2VyZWQKK2ludGVycnVwdHMsIGFuZCB0aGVyZXdpdGggYWxsb3cgZm9yIHNoYXJlZCBJUlFzLiBIb3dldmVyLCBpZiBtdWx0aXBsZSBkZXZpY2VzCitwcmVzZW50IHRoZWlyIGhhcmR3YXJlIHN0YXR1cyBieSB0aGUgc2FtZSAoc2hhcmVkKSBJUlEsIHRoZSBvcGVyYXRpbmcgc3lzdGVtCitoYXMgdG8gY2FsbCBldmVyeSBzaW5nbGUgZGV2aWNlIGRyaXZlciByZWdpc3RlcmVkIG9uIHRoaXMgSVJRIGluIG9yZGVyIHRvCitkZXRlcm1pbmUgdGhlIGRldmljZSBkcml2ZXIgb3duaW5nIHRoZSBkZXZpY2UgdGhhdCByYWlzZWQgdGhlIGludGVycnVwdC4KKworVXAgdG8ga2VybmVsIDIuNCwgTGludXgvMzkwIHVzZWQgdG8gcHJvdmlkZSBpbnRlcmZhY2VzIHZpYSB0aGUgSVJRIChzdWJjaGFubmVsKS4KK0ZvciBpbnRlcm5hbCB1c2Ugb2YgdGhlIGNvbW1vbiBJL08gbGF5ZXIsIHRoZXNlIGFyZSBzdGlsbCB0aGVyZS4gSG93ZXZlciwgCitkZXZpY2UgZHJpdmVycyBzaG91bGQgdXNlIHRoZSBuZXcgY2FsbGluZyBpbnRlcmZhY2UgdmlhIHRoZSBjY3dfZGV2aWNlIG9ubHkuCisKK0R1cmluZyBpdHMgc3RhcnR1cCB0aGUgTGludXgvMzkwIHN5c3RlbSBjaGVja3MgZm9yIHBlcmlwaGVyYWwgZGV2aWNlcy4gRWFjaAorb2YgdGhvc2UgZGV2aWNlcyBpcyB1bmlxdWVseSBkZWZpbmVkIGJ5IGEgc28gY2FsbGVkIHN1YmNoYW5uZWwgYnkgdGhlIEVTQS8zOTAKK2NoYW5uZWwgc3Vic3lzdGVtLiBXaGlsZSB0aGUgc3ViY2hhbm5lbCBudW1iZXJzIGFyZSBzeXN0ZW0gZ2VuZXJhdGVkLCBlYWNoCitzdWJjaGFubmVsIGFsc28gdGFrZXMgYSB1c2VyIGRlZmluZWQgYXR0cmlidXRlLCB0aGUgc28gY2FsbGVkIGRldmljZSBudW1iZXIuCitCb3RoIHN1YmNoYW5uZWwgbnVtYmVyIGFuZCBkZXZpY2UgbnVtYmVyIGNhbm5vdCBleGNlZWQgNjU1MzUuIER1cmluZyBzeXNmcworaW5pdGlhbGlzYXRpb24sIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBjb250cm9sIHVuaXQgdHlwZSBhbmQgZGV2aWNlIHR5cGVzIHRoYXQgCitpbXBseSBzcGVjaWZpYyBJL08gY29tbWFuZHMgKGNoYW5uZWwgY29tbWFuZCB3b3JkcyAtIENDV3MpIGluIG9yZGVyIHRvIG9wZXJhdGUKK3RoZSBkZXZpY2UgYXJlIGdhdGhlcmVkLiBEZXZpY2UgZHJpdmVycyBjYW4gcmV0cmlldmUgdGhpcyBzZXQgb2YgaGFyZHdhcmUKK2luZm9ybWF0aW9uIGR1cmluZyB0aGVpciBpbml0aWFsaXphdGlvbiBzdGVwIHRvIHJlY29nbml6ZSB0aGUgZGV2aWNlcyB0aGV5CitzdXBwb3J0IHVzaW5nIHRoZSBpbmZvcm1hdGlvbiBzYXZlZCBpbiB0aGUgc3RydWN0IGNjd19kZXZpY2UgZ2l2ZW4gdG8gdGhlbS4KK1RoaXMgbWV0aG9kcyBpbXBsaWVzIHRoYXQgTGludXgvMzkwIGRvZXNuJ3QgcmVxdWlyZSB0byBwcm9iZSBmb3IgZnJlZSAobm90Cithcm1lZCkgaW50ZXJydXB0IHJlcXVlc3QgbGluZXMgKElSUXMpIHRvIGRyaXZlIGl0cyBkZXZpY2VzIHdpdGguIFdoZXJlCithcHBsaWNhYmxlLCB0aGUgZGV2aWNlIGRyaXZlcnMgY2FuIHVzZSBpc3N1ZSB0aGUgUkVBRCBERVZJQ0UgQ0hBUkFDVEVSSVNUSUNTCitjY3cgdG8gcmV0cmlldmUgZGV2aWNlIGNoYXJhY3RlcmlzdGljcyBpbiBpdHMgb25saW5lIHJvdXRpbmUuCisKK0luIG9yZGVyIHRvIGFsbG93IGZvciBlYXN5IEkvTyBpbml0aWF0aW9uIHRoZSBDRFMgbGF5ZXIgcHJvdmlkZXMgYQorY2N3X2RldmljZV9zdGFydCgpIGludGVyZmFjZSB0aGF0IHRha2VzIGEgZGV2aWNlIHNwZWNpZmljIGNoYW5uZWwgcHJvZ3JhbSAob25lCitvciBtb3JlIENDV3MpIGFzIGlucHV0IHNldHMgdXAgdGhlIHJlcXVpcmVkIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBjb250cm9sIGJsb2NrcworYW5kIGluaXRpYXRlcyBhbiBJL08gcmVxdWVzdCBvbiBiZWhhbGYgb2YgdGhlIGRldmljZSBkcml2ZXIuIFRoZQorY2N3X2RldmljZV9zdGFydCgpIHJvdXRpbmUgYWxsb3dzIHRvIHNwZWNpZnkgd2hldGhlciBpdCBleHBlY3RzIHRoZSBDRFMgbGF5ZXIKK3RvIG5vdGlmeSB0aGUgZGV2aWNlIGRyaXZlciBmb3IgZXZlcnkgaW50ZXJydXB0IGl0IG9ic2VydmVzLCBvciB3aXRoIGZpbmFsIHN0YXR1cworb25seS4gU2VlIGNjd19kZXZpY2Vfc3RhcnQoKSBmb3IgbW9yZSBkZXRhaWxzLiBBIGRldmljZSBkcml2ZXIgbXVzdCBuZXZlciBpc3N1ZQorRVNBLzM5MCBJL08gY29tbWFuZHMgaXRzZWxmLCBidXQgbXVzdCB1c2UgdGhlIExpbnV4LzM5MCBDRFMgaW50ZXJmYWNlcyBpbnN0ZWFkLgorCitGb3IgbG9uZyBydW5uaW5nIEkvTyByZXF1ZXN0IHRvIGJlIGNhbmNlbGVkLCB0aGUgQ0RTIGxheWVyIHByb3ZpZGVzIHRoZQorY2N3X2RldmljZV9oYWx0KCkgZnVuY3Rpb24uIFNvbWUgZGV2aWNlcyByZXF1aXJlIHRvIGluaXRpYWxseSBpc3N1ZSBhIEhBTFQKK1NVQkNIQU5ORUwgKEhTQ0gpIGNvbW1hbmQgd2l0aG91dCBoYXZpbmcgcGVuZGluZyBJL08gcmVxdWVzdHMuIFRoaXMgZnVuY3Rpb24gaXMKK2Fsc28gY292ZXJlZCBieSBjY3dfZGV2aWNlX2hhbHQoKS4KKworCitnZXRfY2l3KCkgLSBnZXQgY29tbWFuZCBpbmZvcm1hdGlvbiB3b3JkCisKK1RoaXMgY2FsbCBlbmFibGVzIGEgZGV2aWNlIGRyaXZlciB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgc3VwcG9ydGVkIGNvbW1hbmRzCitmcm9tIHRoZSBleHRlbmRlZCBTZW5zZUlEIGRhdGEuCisKK3N0cnVjdCBjaXcgKgorY2N3X2RldmljZV9nZXRfY2l3KHN0cnVjdCBjY3dfZGV2aWNlICpjZGV2LCBfX3UzMiBjbWQpOworCitjZGV2IC0gVGhlIGNjd19kZXZpY2UgZm9yIHdoaWNoIHRoZSBjb21tYW5kIGlzIHRvIGJlIHJldHJpZXZlZC4KK2NtZCAgLSBUaGUgY29tbWFuZCB0eXBlIHRvIGJlIHJldHJpZXZlZC4KKworY2N3X2RldmljZV9nZXRfY2l3KCkgcmV0dXJuczoKK05VTEwgICAgLSBObyBleHRlbmRlZCBkYXRhIGF2YWlsYWJsZSwgaW52YWxpZCBkZXZpY2Ugb3IgY29tbWFuZCBub3QgZm91bmQuCishTlVMTCAgIC0gVGhlIGNvbW1hbmQgcmVxdWVzdGVkLgorCisKK2Njd19kZXZpY2Vfc3RhcnQoKSAtIEluaXRpYXRlIEkvTyBSZXF1ZXN0CisKK1RoZSBjY3dfZGV2aWNlX3N0YXJ0KCkgcm91dGluZXMgaXMgdGhlIEkvTyByZXF1ZXN0IGZyb250LWVuZCBwcm9jZXNzb3IuIEFsbAorZGV2aWNlIGRyaXZlciBJL08gcmVxdWVzdHMgbXVzdCBiZSBpc3N1ZWQgdXNpbmcgdGhpcyByb3V0aW5lLiBBIGRldmljZSBkcml2ZXIKK211c3Qgbm90IGlzc3VlIEVTQS8zOTAgSS9PIGNvbW1hbmRzIGl0c2VsZi4gSW5zdGVhZCB0aGUgY2N3X2RldmljZV9zdGFydCgpCityb3V0aW5lIHByb3ZpZGVzIGFsbCBpbnRlcmZhY2VzIHJlcXVpcmVkIHRvIGRyaXZlIGFyYml0cmFyeSBkZXZpY2VzLgorCitUaGlzIGRlc2NyaXB0aW9uIGFsc28gY292ZXJzIHRoZSBzdGF0dXMgaW5mb3JtYXRpb24gcGFzc2VkIHRvIHRoZSBkZXZpY2UKK2RyaXZlcidzIGludGVycnVwdCBoYW5kbGVyIGFzIHRoaXMgaXMgcmVsYXRlZCB0byB0aGUgcnVsZXMgKGZsYWdzKSBkZWZpbmVkCit3aXRoIHRoZSBhc3NvY2lhdGVkIEkvTyByZXF1ZXN0IHdoZW4gY2FsbGluZyBjY3dfZGV2aWNlX3N0YXJ0KCkuCisKK2ludCBjY3dfZGV2aWNlX3N0YXJ0KHN0cnVjdCBjY3dfZGV2aWNlICpjZGV2LAorCQkgICAgIHN0cnVjdCBjY3cxICpjcGEsCisJCSAgICAgdW5zaWduZWQgbG9uZyBpbnRwYXJtLAorCQkgICAgIF9fdTggbHBtLAorCQkgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOworaW50IGNjd19kZXZpY2Vfc3RhcnRfdGltZW91dChzdHJ1Y3QgY2N3X2RldmljZSAqY2RldiwKKwkJCSAgICAgc3RydWN0IGNjdzEgKmNwYSwKKwkJCSAgICAgdW5zaWduZWQgbG9uZyBpbnRwYXJtLAorCQkJICAgICBfX3U4IGxwbSwKKwkJCSAgICAgdW5zaWduZWQgbG9uZyBmbGFncywKKwkJCSAgICAgaW50IGV4cGlyZXMpOworaW50IGNjd19kZXZpY2Vfc3RhcnRfa2V5KHN0cnVjdCBjY3dfZGV2aWNlICpjZGV2LAorCQkJIHN0cnVjdCBjY3cxICpjcGEsCisJCQkgdW5zaWduZWQgbG9uZyBpbnRwYXJtLAorCQkJIF9fdTggbHBtLAorCQkJIF9fdTgga2V5LAorCQkJIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOworaW50IGNjd19kZXZpY2Vfc3RhcnRfa2V5X3RpbWVvdXQoc3RydWN0IGNjd19kZXZpY2UgKmNkZXYsCisJCQkJIHN0cnVjdCBjY3cxICpjcGEsCisJCQkJIHVuc2lnbmVkIGxvbmcgaW50cGFybSwKKwkJCQkgX191OCBscG0sCisJCQkJIF9fdTgga2V5LAorCQkJCSB1bnNpZ25lZCBsb25nIGZsYWdzLAorCQkJCSBpbnQgZXhwaXJlcyk7CisKK2NkZXYgICAgICAgICA6IGNjd19kZXZpY2UgdGhlIEkvTyBpcyBkZXN0aW5lZCBmb3IKK2NwYSAgICAgICAgICA6IGxvZ2ljYWwgc3RhcnQgYWRkcmVzcyBvZiBjaGFubmVsIHByb2dyYW0KK3VzZXJfaW50cGFybSA6IHVzZXIgc3BlY2lmaWMgaW50ZXJydXB0IGluZm9ybWF0aW9uOyB3aWxsIGJlIHByZXNlbnRlZAorCSAgICAgICBiYWNrIHRvIHRoZSBkZXZpY2UgZHJpdmVyJ3MgaW50ZXJydXB0IGhhbmRsZXIuIEFsbG93cyBhCisgICAgICAgICAgICAgICBkZXZpY2UgZHJpdmVyIHRvIGFzc29jaWF0ZSB0aGUgaW50ZXJydXB0IHdpdGggYQorICAgICAgICAgICAgICAgcGFydGljdWxhciBJL08gcmVxdWVzdC4KK2xwbSAgICAgICAgICA6IGRlZmluZXMgdGhlIGNoYW5uZWwgcGF0aCB0byBiZSB1c2VkIGZvciBhIHNwZWNpZmljIEkvTworICAgICAgICAgICAgICAgcmVxdWVzdC4gQSB2YWx1ZSBvZiAwIHdpbGwgbWFrZSBjaW8gdXNlIHRoZSBvcG0uCitrZXkJICAgICA6IHRoZSBzdG9yYWdlIGtleSB0byB1c2UgZm9yIHRoZSBJL08gKHVzZWZ1bCBmb3Igb3BlcmF0aW5nIG9uIGEKKwkgICAgICAgc3RvcmFnZSB3aXRoIGEgc3RvcmFnZSBrZXkgIT0gZGVmYXVsdCBrZXkpCitmbGFnICAgICAgICAgOiBkZWZpbmVzIHRoZSBhY3Rpb24gdG8gYmUgcGVyZm9ybWVkIGZvciBJL08gcHJvY2Vzc2luZworZXhwaXJlcyAgICAgIDogdGltZW91dCB2YWx1ZSBpbiBqaWZmaWVzLiBUaGUgY29tbW9uIEkvTyBsYXllciB3aWxsIHRlcm1pbmF0ZQorCSAgICAgICB0aGUgcnVubmluZyBwcm9ncmFtIGFmdGVyIHRoaXMgYW5kIGNhbGwgdGhlIGludGVycnVwdCBoYW5kbGVyCisJICAgICAgIHdpdGggRVJSX1BUUigtRVRJTUVET1VUKSBhcyBpcmIuCisKK1Bvc3NpYmxlIGZsYWcgdmFsdWVzIGFyZSA6CisKK0RPSU9fQUxMT1dfU1VTUEVORCAgICAgICAtIGNoYW5uZWwgcHJvZ3JhbSBtYXkgYmVjb21lIHN1c3BlbmRlZAorRE9JT19ERU5ZX1BSRUZFVENIICAgICAgIC0gZG9uJ3QgYWxsb3cgZm9yIENDVyBwcmVmZXRjaDsgdXN1YWxseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBpbXBsaWVzIHRoZSBjaGFubmVsIHByb2dyYW0gbWlnaHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlY29tZSBtb2RpZmllZAorRE9JT19TVVBQUkVTU19JTlRFUiAgICAgLSBkb24ndCBjYWxsIHRoZSBoYW5kbGVyIG9uIGludGVybWVkaWF0ZSBzdGF0dXMKKworVGhlIGNwYSBwYXJhbWV0ZXIgcG9pbnRzIHRvIHRoZSBmaXJzdCBmb3JtYXQgMSBDQ1cgb2YgYSBjaGFubmVsIHByb2dyYW0gOgorCitzdHJ1Y3QgY2N3MSB7CisgICAgICBfX3U4ICBjbWRfY29kZTsvKiBjb21tYW5kIGNvZGUgKi8KKyAgICAgIF9fdTggIGZsYWdzOyAgIC8qIGZsYWdzLCBsaWtlIElEQSBhZGRyZXNzaW5nLCBldGMuICovCisgICAgICBfX3UxNiBjb3VudDsgICAvKiBieXRlIGNvdW50ICovCisgICAgICBfX3UzMiBjZGE7ICAgICAvKiBkYXRhIGFkZHJlc3MgKi8KK30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCxhbGlnbmVkKDgpKSk7CisKK3dpdGggdGhlIGZvbGxvd2luZyBDQ1cgZmxhZ3MgdmFsdWVzIGRlZmluZWQgOgorCitDQ1dfRkxBR19EQyAgICAgICAgLSBkYXRhIGNoYWluaW5nCitDQ1dfRkxBR19DQyAgICAgICAgLSBjb21tYW5kIGNoYWluaW5nCitDQ1dfRkxBR19TTEkgICAgICAgLSBzdXBwcmVzcyBpbmNvcnJlY3QgbGVuZ3RoCitDQ1dfRkxBR19TS0lQICAgICAgLSBza2lwCitDQ1dfRkxBR19QQ0kgICAgICAgLSBQQ0kKK0NDV19GTEFHX0lEQSAgICAgICAtIGluZGlyZWN0IGFkZHJlc3NpbmcKK0NDV19GTEFHX1NVU1BFTkQgICAtIHN1c3BlbmQKKworCitWaWEgY2N3X2RldmljZV9zZXRfb3B0aW9ucygpLCB0aGUgZGV2aWNlIGRyaXZlciBtYXkgc3BlY2lmeSB0aGUgZm9sbG93aW5nCitvcHRpb25zIGZvciB0aGUgZGV2aWNlOgorCitET0lPX0VBUkxZX05PVElGSUNBVElPTiAgLSBhbGxvdyBmb3IgZWFybHkgaW50ZXJydXB0IG5vdGlmaWNhdGlvbgorRE9JT19SRVBPUlRfQUxMICAgICAgICAgIC0gcmVwb3J0IGFsbCBpbnRlcnJ1cHQgY29uZGl0aW9ucworCisKK1RoZSBjY3dfZGV2aWNlX3N0YXJ0KCkgZnVuY3Rpb24gcmV0dXJucyA6CisKKyAgICAgIDAgLSBzdWNjZXNzZnVsIGNvbXBsZXRpb24gb3IgcmVxdWVzdCBzdWNjZXNzZnVsbHkgaW5pdGlhdGVkCistRUJVU1kJLSBUaGUgZGV2aWNlIGlzIGN1cnJlbnRseSBwcm9jZXNzaW5nIGEgcHJldmlvdXMgSS9PIHJlcXVlc3QsIG9yIHRoZXJlIGlzCisgICAgICAgICAgYSBzdGF0dXMgcGVuZGluZyBhdCB0aGUgZGV2aWNlLgorLUVOT0RFViAtIGNkZXYgaXMgaW52YWxpZCwgdGhlIGRldmljZSBpcyBub3Qgb3BlcmF0aW9uYWwgb3IgdGhlIGNjd19kZXZpY2UgaXMKKyAgICAgICAgICBub3Qgb25saW5lLgorCitXaGVuIHRoZSBJL08gcmVxdWVzdCBjb21wbGV0ZXMsIHRoZSBDRFMgZmlyc3QgbGV2ZWwgaW50ZXJydXB0IGhhbmRsZXIgd2lsbAorYWNjdW11bGF0ZSB0aGUgc3RhdHVzIGluIGEgc3RydWN0IGlyYiBhbmQgdGhlbiBjYWxsIHRoZSBkZXZpY2UgaW50ZXJydXB0IGhhbmRsZXIuCitUaGUgaW50cGFybSBmaWVsZCB3aWxsIGNvbnRhaW4gdGhlIHZhbHVlIHRoZSBkZXZpY2UgZHJpdmVyIGhhcyBhc3NvY2lhdGVkIHdpdGggYSAKK3BhcnRpY3VsYXIgSS9PIHJlcXVlc3QuIElmIGEgcGVuZGluZyBkZXZpY2Ugc3RhdHVzIHdhcyByZWNvZ25pemVkLCAKK2ludHBhcm0gd2lsbCBiZSBzZXQgdG8gMCAoemVybykuIFRoaXMgbWF5IGhhcHBlbiBkdXJpbmcgSS9PIGluaXRpYXRpb24gb3IgZGVsYXllZAorYnkgYW4gYWxlcnQgc3RhdHVzIG5vdGlmaWNhdGlvbi4gSW4gYW55IGNhc2UgdGhpcyBzdGF0dXMgaXMgbm90IHJlbGF0ZWQgdG8gdGhlCitjdXJyZW50IChsYXN0KSBJL08gcmVxdWVzdC4gSW4gY2FzZSBvZiBhIGRlbGF5ZWQgc3RhdHVzIG5vdGlmaWNhdGlvbiBubyBzcGVjaWFsCitpbnRlcnJ1cHQgd2lsbCBiZSBwcmVzZW50ZWQgdG8gaW5kaWNhdGUgSS9PIGNvbXBsZXRpb24gYXMgdGhlIEkvTyByZXF1ZXN0IHdhcworbmV2ZXIgc3RhcnRlZCwgZXZlbiB0aG91Z2ggY2N3X2RldmljZV9zdGFydCgpIHJldHVybmVkIHdpdGggc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLgorCitUaGUgaXJiIG1heSBjb250YWluIGFuIGVycm9yIHZhbHVlLCBhbmQgdGhlIGRldmljZSBkcml2ZXIgc2hvdWxkIGNoZWNrIGZvciB0aGlzCitmaXJzdDoKKworLUVUSU1FRE9VVDogdGhlIGNvbW1vbiBJL08gbGF5ZXIgdGVybWluYXRlZCB0aGUgcmVxdWVzdCBhZnRlciB0aGUgc3BlY2lmaWVkCisgICAgICAgICAgICB0aW1lb3V0IHZhbHVlCistRUlPOiAgICAgICB0aGUgY29tbW9uIEkvTyBsYXllciB0ZXJtaW5hdGVkIHRoZSByZXF1ZXN0IGR1ZSB0byBhbiBlcnJvciBzdGF0ZQorCitJZiB0aGUgY29uY3VycmVudCBzZW5zZSBmbGFnIGluIHRoZSBleHRlbmRlZCBzdGF0dXMgd29yZCAoZXN3KSBpbiB0aGUgaXJiIGlzCitzZXQsIHRoZSBmaWVsZCBlcncuc2NudCBpbiB0aGUgZXN3IGRlc2NyaWJlcyB0aGUgbnVtYmVyIG9mIGRldmljZSBzcGVjaWZpYworc2Vuc2UgYnl0ZXMgYXZhaWxhYmxlIGluIHRoZSBleHRlbmRlZCBjb250cm9sIHdvcmQgaXJiLT5zY3N3LmVjd1tdLiBObyBkZXZpY2UKK3NlbnNpbmcgYnkgdGhlIGRldmljZSBkcml2ZXIgaXRzZWxmIGlzIHJlcXVpcmVkLgorCitUaGUgZGV2aWNlIGludGVycnVwdCBoYW5kbGVyIGNhbiB1c2UgdGhlIGZvbGxvd2luZyBkZWZpbml0aW9ucyB0byBpbnZlc3RpZ2F0ZQordGhlIHByaW1hcnkgdW5pdCBjaGVjayBzb3VyY2UgY29kZWQgaW4gc2Vuc2UgYnl0ZSAwIDoKKworU05TMF9DTURfUkVKRUNUICAgICAgICAgMHg4MAorU05TMF9JTlRFUlZFTlRJT05fUkVRICAgMHg0MAorU05TMF9CVVNfT1VUX0NIRUNLICAgICAgMHgyMAorU05TMF9FUVVJUE1FTlRfQ0hFQ0sgICAgMHgxMAorU05TMF9EQVRBX0NIRUNLICAgICAgICAgMHgwOAorU05TMF9PVkVSUlVOICAgICAgICAgICAgMHgwNAorU05TMF9JTkNPTVBMX0RPTUFJTiAgICAgMHgwMQorCitEZXBlbmRpbmcgb24gdGhlIGRldmljZSBzdGF0dXMsIG11bHRpcGxlIG9mIHRob3NlIHZhbHVlcyBtYXkgYmUgc2V0IHRvZ2V0aGVyLgorUGxlYXNlIHJlZmVyIHRvIHRoZSBkZXZpY2Ugc3BlY2lmaWMgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KKworVGhlIGlyYi0+c2Nzdy5jc3RhdCBmaWVsZCBwcm92aWRlcyB0aGUgKGFjY3VtdWxhdGVkKSBzdWJjaGFubmVsIHN0YXR1cyA6CisKK1NDSE5fU1RBVF9QQ0kgICAgICAgICAgICAtIHByb2dyYW0gY29udHJvbGxlZCBpbnRlcnJ1cHQKK1NDSE5fU1RBVF9JTkNPUlJfTEVOICAgICAtIGluY29ycmVjdCBsZW5ndGgKK1NDSE5fU1RBVF9QUk9HX0NIRUNLICAgICAtIHByb2dyYW0gY2hlY2sKK1NDSE5fU1RBVF9QUk9UX0NIRUNLICAgICAtIHByb3RlY3Rpb24gY2hlY2sKK1NDSE5fU1RBVF9DSE5fREFUQV9DSEsgICAtIGNoYW5uZWwgZGF0YSBjaGVjaworU0NITl9TVEFUX0NITl9DVFJMX0NISyAgIC0gY2hhbm5lbCBjb250cm9sIGNoZWNrCitTQ0hOX1NUQVRfSU5URl9DVFJMX0NISyAgLSBpbnRlcmZhY2UgY29udHJvbCBjaGVjaworU0NITl9TVEFUX0NIQUlOX0NIRUNLICAgIC0gY2hhaW5pbmcgY2hlY2sKKworVGhlIGlyYi0+c2Nzdy5kc3RhdCBmaWVsZCBwcm92aWRlcyB0aGUgKGFjY3VtdWxhdGVkKSBkZXZpY2Ugc3RhdHVzIDoKKworREVWX1NUQVRfQVRURU5USU9OICAgLSBhdHRlbnRpb24KK0RFVl9TVEFUX1NUQVRfTU9EICAgIC0gc3RhdHVzIG1vZGlmaWVyCitERVZfU1RBVF9DVV9FTkQgICAgICAtIGNvbnRyb2wgdW5pdCBlbmQKK0RFVl9TVEFUX0JVU1kgICAgICAgIC0gYnVzeQorREVWX1NUQVRfQ0hOX0VORCAgICAgLSBjaGFubmVsIGVuZAorREVWX1NUQVRfREVWX0VORCAgICAgLSBkZXZpY2UgZW5kCitERVZfU1RBVF9VTklUX0NIRUNLICAtIHVuaXQgY2hlY2sKK0RFVl9TVEFUX1VOSVRfRVhDRVAgIC0gdW5pdCBleGNlcHRpb24KKworUGxlYXNlIHNlZSB0aGUgRVNBLzM5MCBQcmluY2lwbGVzIG9mIE9wZXJhdGlvbiBtYW51YWwgZm9yIGRldGFpbHMgb24gdGhlCitpbmRpdmlkdWFsIGZsYWcgbWVhbmluZ3MuCisKK1VzYWdlIE5vdGVzIDoKKworY2N3X2RldmljZV9zdGFydCgpIG11c3QgYmUgY2FsbGVkIGRpc2FibGVkIGFuZCB3aXRoIHRoZSBjY3cgZGV2aWNlIGxvY2sgaGVsZC4KKworVGhlIGRldmljZSBkcml2ZXIgaXMgYWxsb3dlZCB0byBpc3N1ZSB0aGUgbmV4dCBjY3dfZGV2aWNlX3N0YXJ0KCkgY2FsbCBmcm9tCit3aXRoaW4gaXRzIGludGVycnVwdCBoYW5kbGVyIGFscmVhZHkuIEl0IGlzIG5vdCByZXF1aXJlZCB0byBzY2hlZHVsZSBhCitib3R0b20taGFsZiwgdW5sZXNzIGEgbm9uIGRldGVybWluaXN0aWNhbGx5IGxvbmcgcnVubmluZyBlcnJvciByZWNvdmVyeSBwcm9jZWR1cmUKK29yIHNpbWlsYXIgbmVlZHMgdG8gYmUgc2NoZWR1bGVkLiBEdXJpbmcgSS9PIHByb2Nlc3NpbmcgdGhlIExpbnV4LzM5MCBnZW5lcmljCitJL08gZGV2aWNlIGRyaXZlciBzdXBwb3J0IGhhcyBhbHJlYWR5IG9idGFpbmVkIHRoZSBJUlEgbG9jaywgaS5lLiB0aGUgaGFuZGxlcgorbXVzdCBub3QgdHJ5IHRvIG9idGFpbiBpdCBhZ2FpbiB3aGVuIGNhbGxpbmcgY2N3X2RldmljZV9zdGFydCgpIG9yIHdlIGVuZCBpbiBhCitkZWFkbG9jayBzaXR1YXRpb24hCisKK0lmIGEgZGV2aWNlIGRyaXZlciByZWxpZXMgb24gYW4gSS9PIHJlcXVlc3QgdG8gYmUgY29tcGxldGVkIHByaW9yIHRvIHN0YXJ0IHRoZQorbmV4dCBpdCBjYW4gcmVkdWNlIEkvTyBwcm9jZXNzaW5nIG92ZXJoZWFkIGJ5IGNoYWluaW5nIGEgTm9PcCBJL08gY29tbWFuZAorQ0NXX0NNRF9OT09QIHRvIHRoZSBlbmQgb2YgdGhlIHN1Ym1pdHRlZCBDQ1cgY2hhaW4uIFRoaXMgd2lsbCBmb3JjZSBDaGFubmVsLUVuZAorYW5kIERldmljZS1FbmQgc3RhdHVzIHRvIGJlIHByZXNlbnRlZCB0b2dldGhlciwgd2l0aCBhIHNpbmdsZSBpbnRlcnJ1cHQuCitIb3dldmVyLCB0aGlzIHNob3VsZCBiZSB1c2VkIHdpdGggY2FyZSBhcyBpdCBpbXBsaWVzIHRoZSBjaGFubmVsIHdpbGwgcmVtYWluCitidXN5LCBub3QgYmVpbmcgYWJsZSB0byBwcm9jZXNzIEkvTyByZXF1ZXN0cyBmb3Igb3RoZXIgZGV2aWNlcyBvbiB0aGUgc2FtZQorY2hhbm5lbC4gVGhlcmVmb3JlIGUuZy4gcmVhZCBjb21tYW5kcyBzaG91bGQgbmV2ZXIgdXNlIHRoaXMgdGVjaG5pcXVlLCBhcyB0aGUKK3Jlc3VsdCB3aWxsIGJlIHByZXNlbnRlZCBieSBhIHNpbmdsZSBpbnRlcnJ1cHQgYW55d2F5LgorCitJbiBvcmRlciB0byBtaW5pbWl6ZSBJL08gb3ZlcmhlYWQsIGEgZGV2aWNlIGRyaXZlciBzaG91bGQgdXNlIHRoZQorRE9JT19SRVBPUlRfQUxMICBvbmx5IGlmIHRoZSBkZXZpY2UgY2FuIHJlcG9ydCBpbnRlcm1lZGlhdGUgaW50ZXJydXB0CitpbmZvcm1hdGlvbiBwcmlvciB0byBkZXZpY2UtZW5kIHRoZSBkZXZpY2UgZHJpdmVyIHVyZ2VudGx5IHJlbGllcyBvbi4gSW4gdGhpcworY2FzZSBhbGwgSS9PIGludGVycnVwdGlvbnMgYXJlIHByZXNlbnRlZCB0byB0aGUgZGV2aWNlIGRyaXZlciB1bnRpbCBmaW5hbAorc3RhdHVzIGlzIHJlY29nbml6ZWQuCisKK0lmIGEgZGV2aWNlIGlzIGFibGUgdG8gcmVjb3ZlciBmcm9tIGFzeW5jaHJvbm91c2x5IHByZXNlbnRlZCBJL08gZXJyb3JzLCBpdCBjYW4KK3BlcmZvcm0gb3ZlcmxhcHBpbmcgSS9PIHVzaW5nIHRoZSBET0lPX0VBUkxZX05PVElGSUNBVElPTiBmbGFnLiBXaGlsZSBzb21lCitkZXZpY2VzIGFsd2F5cyByZXBvcnQgY2hhbm5lbC1lbmQgYW5kIGRldmljZS1lbmQgdG9nZXRoZXIsIHdpdGggYSBzaW5nbGUKK2ludGVycnVwdCwgb3RoZXJzIHByZXNlbnQgcHJpbWFyeSBzdGF0dXMgKGNoYW5uZWwtZW5kKSB3aGVuIHRoZSBjaGFubmVsIGlzCityZWFkeSBmb3IgdGhlIG5leHQgSS9PIHJlcXVlc3QgYW5kIHNlY29uZGFyeSBzdGF0dXMgKGRldmljZS1lbmQpIHdoZW4gdGhlIGRhdGEKK3RyYW5zbWlzc2lvbiBoYXMgYmVlbiBjb21wbGV0ZWQgYXQgdGhlIGRldmljZS4KKworQWJvdmUgZmxhZyBhbGxvd3MgdG8gZXhwbG9pdCB0aGlzIGZlYXR1cmUsIGUuZy4gZm9yIGNvbW11bmljYXRpb24gZGV2aWNlcyB0aGF0CitjYW4gaGFuZGxlIGxvc3QgZGF0YSBvbiB0aGUgbmV0d29yayB0byBhbGxvdyBmb3IgZW5oYW5jZWQgSS9PIHByb2Nlc3NpbmcuCisKK1VubGVzcyB0aGUgY2hhbm5lbCBzdWJzeXN0ZW0gYXQgYW55IHRpbWUgcHJlc2VudHMgYSBzZWNvbmRhcnkgc3RhdHVzIGludGVycnVwdCwKK2V4cGxvaXRpbmcgdGhpcyBmZWF0dXJlIHdpbGwgY2F1c2Ugb25seSBwcmltYXJ5IHN0YXR1cyBpbnRlcnJ1cHRzIHRvIGJlCitwcmVzZW50ZWQgdG8gdGhlIGRldmljZSBkcml2ZXIgd2hpbGUgb3ZlcmxhcHBpbmcgSS9PIGlzIHBlcmZvcm1lZC4gV2hlbiBhCitzZWNvbmRhcnkgc3RhdHVzIHdpdGhvdXQgZXJyb3IgKGFsZXJ0IHN0YXR1cykgaXMgcHJlc2VudGVkLCB0aGlzIGluZGljYXRlcworc3VjY2Vzc2Z1bCBjb21wbGV0aW9uIGZvciBhbGwgb3ZlcmxhcHBpbmcgY2N3X2RldmljZV9zdGFydCgpIHJlcXVlc3RzIHRoYXQgaGF2ZQorYmVlbiBpc3N1ZWQgc2luY2UgdGhlIGxhc3Qgc2Vjb25kYXJ5IChmaW5hbCkgc3RhdHVzLgorCitDaGFubmVsIHByb2dyYW1zIHRoYXQgaW50ZW5kIHRvIHNldCB0aGUgc3VzcGVuZCBmbGFnIG9uIGEgY2hhbm5lbCBjb21tYW5kIHdvcmQgCisoQ0NXKSAgbXVzdCBzdGFydCB0aGUgSS9PIG9wZXJhdGlvbiB3aXRoIHRoZSBET0lPX0FMTE9XX1NVU1BFTkQgb3B0aW9uIG9yIHRoZSAKK3N1c3BlbmQgZmxhZyB3aWxsIGNhdXNlIGEgY2hhbm5lbCBwcm9ncmFtIGNoZWNrLiBBdCB0aGUgdGltZSB0aGUgY2hhbm5lbCBwcm9ncmFtIAorYmVjb21lcyBzdXNwZW5kZWQgYW4gaW50ZXJtZWRpYXRlIGludGVycnVwdCB3aWxsIGJlIGdlbmVyYXRlZCBieSB0aGUgY2hhbm5lbCAKK3N1YnN5c3RlbS4KKworY2N3X2RldmljZV9yZXN1bWUoKSAtIFJlc3VtZSBDaGFubmVsIFByb2dyYW0gRXhlY3V0aW9uIAorCitJZiBhIGRldmljZSBkcml2ZXIgY2hvb3NlcyB0byBzdXNwZW5kIHRoZSBjdXJyZW50IGNoYW5uZWwgcHJvZ3JhbSBleGVjdXRpb24gYnkgCitzZXR0aW5nIHRoZSBDQ1cgc3VzcGVuZCBmbGFnIG9uIGEgcGFydGljdWxhciBDQ1csIHRoZSBjaGFubmVsIHByb2dyYW0gZXhlY3V0aW9uIAoraXMgc3VzcGVuZGVkLiBJbiBvcmRlciB0byByZXN1bWUgY2hhbm5lbCBwcm9ncmFtIGV4ZWN1dGlvbiB0aGUgQ0lPIGxheWVyIAorcHJvdmlkZXMgdGhlIGNjd19kZXZpY2VfcmVzdW1lKCkgcm91dGluZS4gCisKK2ludCBjY3dfZGV2aWNlX3Jlc3VtZShzdHJ1Y3QgY2N3X2RldmljZSAqY2Rldik7CisKK2NkZXYgLSBjY3dfZGV2aWNlIHRoZSByZXN1bWUgb3BlcmF0aW9uIGlzIHJlcXVlc3RlZCBmb3IKKworVGhlIGNjd19kZXZpY2VfcmVzdW1lKCkgZnVuY3Rpb24gcmV0dXJuczoKKworICAgICAgICAwICAtIHN1c3BlbmRlZCBjaGFubmVsIHByb2dyYW0gaXMgcmVzdW1lZAorLUVCVVNZICAgICAtIHN0YXR1cyBwZW5kaW5nCistRU5PREVWICAgIC0gY2RldiBpbnZhbGlkIG9yIG5vdC1vcGVyYXRpb25hbCBzdWJjaGFubmVsIAorLUVJTlZBTCAgICAtIHJlc3VtZSBmdW5jdGlvbiBub3QgYXBwbGljYWJsZSAgCistRU5PVENPTk4gIC0gdGhlcmUgaXMgbm8gSS9PIHJlcXVlc3QgcGVuZGluZyBmb3IgY29tcGxldGlvbiAKKworVXNhZ2UgTm90ZXM6CitQbGVhc2UgaGF2ZSBhIGxvb2sgYXQgdGhlIGNjd19kZXZpY2Vfc3RhcnQoKSB1c2FnZSBub3RlcyBmb3IgbW9yZSBkZXRhaWxzIG9uCitzdXNwZW5kZWQgY2hhbm5lbCBwcm9ncmFtcy4KKworY2N3X2RldmljZV9oYWx0KCkgLSBIYWx0IEkvTyBSZXF1ZXN0IFByb2Nlc3NpbmcKKworU29tZXRpbWVzIGEgZGV2aWNlIGRyaXZlciBtaWdodCBuZWVkIGEgcG9zc2liaWxpdHkgdG8gc3RvcCB0aGUgcHJvY2Vzc2luZyBvZgorYSBsb25nLXJ1bm5pbmcgY2hhbm5lbCBwcm9ncmFtIG9yIHRoZSBkZXZpY2UgbWlnaHQgcmVxdWlyZSB0byBpbml0aWFsbHkgaXNzdWUKK2EgaGFsdCBzdWJjaGFubmVsIChIU0NIKSBJL08gY29tbWFuZC4gRm9yIHRob3NlIHB1cnBvc2VzIHRoZSBjY3dfZGV2aWNlX2hhbHQoKQorY29tbWFuZCBpcyBwcm92aWRlZC4KKworY2N3X2RldmljZV9oYWx0KCkgbXVzdCBiZSBjYWxsZWQgZGlzYWJsZWQgYW5kIHdpdGggdGhlIGNjdyBkZXZpY2UgbG9jayBoZWxkLgorCitpbnQgY2N3X2RldmljZV9oYWx0KHN0cnVjdCBjY3dfZGV2aWNlICpjZGV2LAorICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGludHBhcm0pOworCitjZGV2ICAgIDogY2N3X2RldmljZSB0aGUgaGFsdCBvcGVyYXRpb24gaXMgcmVxdWVzdGVkIGZvcgoraW50cGFybSA6IGludGVycnVwdGlvbiBwYXJhbWV0ZXI7IHZhbHVlIGlzIG9ubHkgdXNlZCBpZiBubyBJL08KKyAgICAgICAgICBpcyBvdXRzdGFuZGluZywgb3RoZXJ3aXNlIHRoZSBpbnRwYXJtIGFzc29jaWF0ZWQgd2l0aAorICAgICAgICAgIHRoZSBJL08gcmVxdWVzdCBpcyByZXR1cm5lZAorCitUaGUgY2N3X2RldmljZV9oYWx0KCkgZnVuY3Rpb24gcmV0dXJucyA6CisKKyAgICAgIDAgLSByZXF1ZXN0IHN1Y2Nlc3NmdWxseSBpbml0aWF0ZWQKKy1FQlVTWSAgLSB0aGUgZGV2aWNlIGlzIGN1cnJlbnRseSBidXN5LCBvciBzdGF0dXMgcGVuZGluZy4KKy1FTk9ERVYgLSBjZGV2IGludmFsaWQuCistRUlOVkFMIC0gVGhlIGRldmljZSBpcyBub3Qgb3BlcmF0aW9uYWwgb3IgdGhlIGNjdyBkZXZpY2UgaXMgbm90IG9ubGluZS4KKworVXNhZ2UgTm90ZXMgOgorCitBIGRldmljZSBkcml2ZXIgbWF5IHdyaXRlIGEgbmV2ZXItZW5kaW5nIGNoYW5uZWwgcHJvZ3JhbSBieSB3cml0aW5nIGEgY2hhbm5lbAorcHJvZ3JhbSB0aGF0IGF0IGl0cyBlbmQgbG9vcHMgYmFjayB0byBpdHMgYmVnaW5uaW5nIGJ5IG1lYW5zIG9mIGEgdHJhbnNmZXIgaW4KK2NoYW5uZWwgKFRJQykgICBjb21tYW5kIChDQ1dfQ01EX1RJQykuIFVzdWFsbHkgdGhpcyBpcyBwZXJmb3JtZWQgYnkgbmV0d29yaworZGV2aWNlIGRyaXZlcnMgYnkgc2V0dGluZyB0aGUgUENJIENDVyBmbGFnIChDQ1dfRkxBR19QQ0kpLiBPbmNlIHRoaXMgQ0NXIGlzCitleGVjdXRlZCBhIHByb2dyYW0gY29udHJvbGxlZCBpbnRlcnJ1cHQgKFBDSSkgaXMgZ2VuZXJhdGVkLiBUaGUgZGV2aWNlIGRyaXZlcgorY2FuIHRoZW4gcGVyZm9ybSBhbiBhcHByb3ByaWF0ZSBhY3Rpb24uIFByaW9yIHRvIGludGVycnVwdCBvZiBhbiBvdXRzdGFuZGluZworcmVhZCB0byBhIG5ldHdvcmsgZGV2aWNlICh3aXRoIG9yIHdpdGhvdXQgUENJIGZsYWcpIGEgY2N3X2RldmljZV9oYWx0KCkKK2lzIHJlcXVpcmVkIHRvIGVuZCB0aGUgcGVuZGluZyBvcGVyYXRpb24uCisKK2Njd19kZXZpY2VfY2xlYXIoKSAtIFRlcm1pbmFnZSBJL08gUmVxdWVzdCBQcm9jZXNzaW5nCisKK0luIG9yZGVyIHRvIHRlcm1pbmF0ZSBhbGwgSS9PIHByb2Nlc3NpbmcgYXQgdGhlIHN1YmNoYW5uZWwsIHRoZSBjbGVhciBzdWJjaGFubmVsCisoQ1NDSCkgY29tbWFuZCBpcyB1c2VkLiBJdCBjYW4gYmUgaXNzdWVkIHZpYSBjY3dfZGV2aWNlX2NsZWFyKCkuCisKK2Njd19kZXZpY2VfY2xlYXIoKSBtdXN0IGJlIGNhbGxlZCBkaXNhYmxlZCBhbmQgd2l0aCB0aGUgY2N3IGRldmljZSBsb2NrIGhlbGQuCisKK2ludCBjY3dfZGV2aWNlX2NsZWFyKHN0cnVjdCBjY3dfZGV2aWNlICpjZGV2LCB1bnNpZ25lZCBsb25nIGludHBhcm0pOworCitjZGV2OgkgY2N3X2RldmljZSB0aGUgY2xlYXIgb3BlcmF0aW9uIGlzIHJlcXVlc3RlZCBmb3IKK2ludHBhcm06IGludGVycnVwdGlvbiBwYXJhbWV0ZXIgKHNlZSBjY3dfZGV2aWNlX2hhbHQoKSkKKworVGhlIGNjd19kZXZpY2VfY2xlYXIoKSBmdW5jdGlvbiByZXR1cm5zOgorCisgICAgICAwIC0gcmVxdWVzdCBzdWNjZXNzZnVsbHkgaW5pdGlhdGVkCistRU5PREVWIC0gY2RldiBpbnZhbGlkCistRUlOVkFMIC0gVGhlIGRldmljZSBpcyBub3Qgb3BlcmF0aW9uYWwgb3IgdGhlIGNjdyBkZXZpY2UgaXMgbm90IG9ubGluZS4KKworTWlzY2VsbGFuZW91cyBTdXBwb3J0IFJvdXRpbmVzCisKK1RoaXMgY2hhcHRlciBkZXNjcmliZXMgdmFyaW91cyByb3V0aW5lcyB0byBiZSB1c2VkIGluIGEgTGludXgvMzkwIGRldmljZQorZHJpdmVyIHByb2dyYW1taW5nIGVudmlyb25tZW50LgorCitnZXRfY2N3ZGV2X2xvY2soKQorCitHZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIGRldmljZSBzcGVjaWZpYyBsb2NrLiBUaGlzIGlzIHRoZW4gdXNlZCBpbgorc3Bpbl9sb2NrKCkgLyBzcGluX3VubG9jaygpIGNhbGxzLgorCisKK19fdTggY2N3X2RldmljZV9nZXRfcGF0aF9tYXNrKHN0cnVjdCBjY3dfZGV2aWNlICpjZGV2KTsKKworR2V0IHRoZSBtYXNrIG9mIHRoZSBwYXRoIGN1cnJlbnRseSBhdmFpbGFibGUgZm9yIGNkZXYuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3MzOTAvY29uZmlnMzI3MC5zaCBiL0RvY3VtZW50YXRpb24vczM5MC9jb25maWczMjcwLnNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNWUyZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3MzOTAvY29uZmlnMzI3MC5zaApAQCAtMCwwICsxLDc2IEBACisjIS9iaW4vc2gKKyMKKyMgY29uZmlnMzI3MCAtLSBBdXRvY29uZmlndXJlIC9kZXYvMzI3MC8qIGFuZCAvZXRjL2luaXR0YWIKKyMKKyMgICAgICAgVXNhZ2U6CisjICAgICAgICAgICAgICAgY29uZmlnMzI3MAorIworIyAgICAgICBPdXRwdXQ6CisjICAgICAgICAgICAgICAgL3RtcC9ta2RldjMyNzAKKyMKKyMgICAgICAgT3BlcmF0aW9uOgorIyAgICAgICAgICAgICAgIDEuIFJ1biB0aGlzIHNjcmlwdAorIyAgICAgICAgICAgICAgIDIuIFJ1biB0aGUgc2NyaXB0IGl0IHByb2R1Y2VzOiAvdG1wL21rZGV2MzI3MAorIyAgICAgICAgICAgICAgIDMuIElzc3VlICJ0ZWxpbml0IHEiIG9yIHJlYm9vdCwgYXMgYXBwcm9wcmlhdGUuCisjCitQPS9wcm9jL3R0eS9kcml2ZXIvdHR5MzI3MAorUk9PVD0KK0Q9JFJPT1QvZGV2CitTVUJEPTMyNzAKK1RUWT0kU1VCRC90dHkKK1RVQj0kU1VCRC90dWIKK1NDUj0kUk9PVC90bXAvbWtkZXYzMjcwCitTQ1JUTVA9JFNDUi5hCitHRVRUWUxJTkU9OjIzNDU6cmVzcGF3bjovc2Jpbi9taW5nZXR0eQorSU5JVFRBQj0kUk9PVC9ldGMvaW5pdHRhYgorTklOSVRUQUI9JFJPT1QvZXRjL05FV2luaXR0YWIKK09JTklUVEFCPSRST09UL2V0Yy9PTERpbml0dGFiCitBREROT1RFPVxcIiMgQWRkaXRpb25hbCBtaW5nZXR0eXMgZm9yIHRoZSAzMjcwL3R0eSogZHJpdmVyLCB0dWIzMjcwIC0tLVxcIgorCitpZiAhIGxzICRQID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KKwltb2Rwcm9iZSB0dWIzMjcwID4gL2Rldi9udWxsIDI+JjEKK2ZpCitscyAkUCA+IC9kZXYvbnVsbCAyPiYxIHx8IGV4aXQgMQorCisjIEluaXRpYWxpemUgdHdvIGZpbGVzLCBvbmUgZm9yIC9kZXYvMzI3MCBjb21tYW5kcyBhbmQgb25lCisjIHRvIHJlcGxhY2UgdGhlIC9ldGMvaW5pdHRhYiBmaWxlIChvbGQgb25lIHNhdmVkIGluIE9MRGluaXR0YWIpCitlY2hvICIjIS9iaW4vc2giID4gJFNDUiB8fCBleGl0IDEKK2VjaG8gIiAiID4+ICRTQ1IKK2VjaG8gIiMgU2NyaXB0IGJ1aWx0IGJ5IC9zYmluL2NvbmZpZzMyNzAiID4+ICRTQ1IKK2lmIFsgISAtZCAvZGV2L2Rhc2QgXTsgdGhlbgorCWVjaG8gcm0gLXJmICIkRC8kU1VCRC8qIiA+PiAkU0NSCitmaQorZWNobyAiZ3JlcCAtdiAkVFRZICRJTklUVEFCID4gJE5JTklUVEFCIiA+ICRTQ1JUTVAgfHwgZXhpdCAxCitlY2hvICJlY2hvICRBREROT1RFID4+ICROSU5JVFRBQiIgPj4gJFNDUlRNUAoraWYgWyAhIC1kIC9kZXYvZGFzZCBdOyB0aGVuCisJZWNobyBta2RpciAtcCAkRC8kU1VCRCA+PiAkU0NSCitmaQorCisjIE5vdyBxdWVyeSB0aGUgdHViMzI3MCBkcml2ZXIgZm9yIDMyNzAgZGV2aWNlIGluZm9ybWF0aW9uCisjIGFuZCBhZGQgYXBwcm9wcmlhdGUgbWtub2QgYW5kIG1pbmdldHR5IGxpbmVzIHRvIG91ciBmaWxlcworZWNobyB3aGF0PWNvbmZpZyA+ICRQCit3aGlsZSByZWFkIGRldm5vIG1haiBtaW47ZG8KKwlpZiBbICRtaW4gPSAwIF07IHRoZW4KKwkJZnNtYWo9JG1hagorCQlpZiBbICEgLWQgL2Rldi9kYXNkIF07IHRoZW4KKwkJCWVjaG8gbWtub2QgJEQvJFRVQiBjICRmc21haiAwID4+ICRTQ1IKKwkJCWVjaG8gY2htb2QgNjY2ICRELyRUVUIgPj4gJFNDUgorCQlmaQorCWVsaWYgWyAkbWFqID0gQ09OU09MRSBdOyB0aGVuCisJCWlmIFsgISAtZCAvZGV2L2Rhc2QgXTsgdGhlbgorCQkJZWNobyBta25vZCAkRC8kVFVCJGRldm5vIGMgJGZzbWFqICRtaW4gPj4gJFNDUgorCQlmaQorCWVsc2UKKwkJaWYgWyAhIC1kIC9kZXYvZGFzZCBdOyB0aGVuCisJCQllY2hvIG1rbm9kICRELyRUVFkkZGV2bm8gYyAkbWFqICRtaW4gPj4kU0NSCisJCQllY2hvIG1rbm9kICRELyRUVUIkZGV2bm8gYyAkZnNtYWogJG1pbiA+PiAkU0NSCisJCWZpCisJCWVjaG8gImVjaG8gdCRtaW4kR0VUVFlMSU5FICRUVFkkZGV2bm8gPj4gJE5JTklUVEFCIiA+PiAkU0NSVE1QCisJZmkKK2RvbmUgPCAkUAorCitlY2hvIG12ICRJTklUVEFCICRPSU5JVFRBQiA+PiAkU0NSVE1QIHx8IGV4aXQgMQorZWNobyBtdiAkTklOSVRUQUIgJElOSVRUQUIgPj4gJFNDUlRNUAorY2F0ICRTQ1JUTVAgPj4gJFNDUgorcm0gJFNDUlRNUAorZXhpdCAwCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3MzOTAvZHJpdmVyLW1vZGVsLnR4dCBiL0RvY3VtZW50YXRpb24vczM5MC9kcml2ZXItbW9kZWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkMjY1Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3MzOTAvZHJpdmVyLW1vZGVsLnR4dApAQCAtMCwwICsxLDI4NyBAQAorUy8zOTAgZHJpdmVyIG1vZGVsIGludGVyZmFjZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzEuIENDVyBkZXZpY2VzCistLS0tLS0tLS0tLS0tLQorCitBbGwgZGV2aWNlcyB3aGljaCBjYW4gYmUgYWRkcmVzc2VkIGJ5IG1lYW5zIG9mIGNjd3MgYXJlIGNhbGxlZCAnQ0NXIGRldmljZXMnIC0KK2V2ZW4gaWYgdGhleSBhcmVuJ3QgYWN0dWFsbHkgZHJpdmVuIGJ5IGNjd3MuCisKK0FsbCBjY3cgZGV2aWNlcyBhcmUgYWNjZXNzZWQgdmlhIGEgc3ViY2hhbm5lbCwgdGhpcyBpcyByZWZsZWN0ZWQgaW4gdGhlIAorc3RydWN0dXJlcyB1bmRlciBkZXZpY2VzLzoKKworZGV2aWNlcy8KKyAgICAgLSBzeXN0ZW0vCisgICAgIC0gY3NzMC8KKyAgICAgICAgICAgLSAwLjAuMDAwMC8wLjAuMDgxNS8KKwkgICAtIDAuMC4wMDAxLzAuMC40NzExLworCSAgIC0gMC4wLjAwMDIvCisJICAgLSAwLjEuMDAwMC8wLjEuMTIzNC8KKwkgICAuLi4KKwkgICAtIGRlZnVuY3QvCisKK0luIHRoaXMgZXhhbXBsZSwgZGV2aWNlIDA4MTUgaXMgYWNjZXNzZWQgdmlhIHN1YmNoYW5uZWwgMCBpbiBzdWJjaGFubmVsIHNldCAwLAorZGV2aWNlIDQ3MTEgdmlhIHN1YmNoYW5uZWwgMSBpbiBzdWJjaGFubmVsIHNldCAwLCBhbmQgc3ViY2hhbm5lbCAyIGlzIGEgbm9uLUkvTworc3ViY2hhbm5lbC4gRGV2aWNlIDEyMzQgaXMgYWNjZXNzZWQgdmlhIHN1YmNoYW5uZWwgMCBpbiBzdWJjaGFubmVsIHNldCAxLgorCitUaGUgc3ViY2hhbm5lbCBuYW1lZCAnZGVmdW5jdCcgZG9lcyBub3QgcmVwcmVzZW50IGFueSByZWFsIHN1YmNoYW5uZWwgb24gdGhlCitzeXN0ZW07IGl0IGlzIGEgcHNldWRvIHN1YmNoYW5uZWwgd2hlcmUgZGlzY29ubmVjdGVkIGNjdyBkZXZpY2VzIGFyZSBtb3ZlZCB0bworaWYgdGhleSBhcmUgZGlzcGxhY2VkIGJ5IGFub3RoZXIgY2N3IGRldmljZSBiZWNvbWluZyBvcGVyYXRpb25hbCBvbiB0aGVpcgorZm9ybWVyIHN1YmNoYW5uZWwuIFRoZSBjY3cgZGV2aWNlcyB3aWxsIGJlIG1vdmVkIGFnYWluIHRvIGEgcHJvcGVyIHN1YmNoYW5uZWwKK2lmIHRoZXkgYmVjb21lIG9wZXJhdGlvbmFsIGFnYWluIG9uIHRoYXQgc3ViY2hhbm5lbC4KKworWW91IHNob3VsZCBhZGRyZXNzIGEgY2N3IGRldmljZSB2aWEgaXRzIGJ1cyBpZCAoZS5nLiAwLjAuNDcxMSk7IHRoZSBkZXZpY2UgY2FuCitiZSBmb3VuZCB1bmRlciBidXMvY2N3L2RldmljZXMvLgorCitBbGwgY2N3IGRldmljZXMgZXhwb3J0IHNvbWUgZGF0YSB2aWEgc3lzZnMuCisKK2N1dHlwZToJICAgIFRoZSBjb250cm9sIHVuaXQgdHlwZSAvIG1vZGVsLgorCitkZXZ0eXBlOiAgICBUaGUgZGV2aWNlIHR5cGUgLyBtb2RlbCwgaWYgYXBwbGljYWJsZS4KKworYXZhaWxhYmlsaXR5OiBDYW4gYmUgJ2dvb2QnIG9yICdib3hlZCc7ICdubyBwYXRoJyBvciAnbm8gZGV2aWNlJyBmb3IKKwkgICAgICBkaXNjb25uZWN0ZWQgZGV2aWNlcy4KKworb25saW5lOiAgICAgQW4gaW50ZXJmYWNlIHRvIHNldCB0aGUgZGV2aWNlIG9ubGluZSBhbmQgb2ZmbGluZS4KKwkgICAgSW4gdGhlIHNwZWNpYWwgY2FzZSBvZiB0aGUgZGV2aWNlIGJlaW5nIGRpc2Nvbm5lY3RlZCAoc2VlIHRoZQorCSAgICBub3RpZnkgZnVuY3Rpb24gdW5kZXIgMS4yKSwgcGlwaW5nIDAgdG8gb25saW5lIHdpbGwgZm9yY2libHkgZGVsZXRlCisJICAgIHRoZSBkZXZpY2UuCisKK1RoZSBkZXZpY2UgZHJpdmVycyBjYW4gYWRkIGVudHJpZXMgdG8gZXhwb3J0IHBlci1kZXZpY2UgZGF0YSBhbmQgaW50ZXJmYWNlcy4KKworVGhlcmUgaXMgYWxzbyBzb21lIGRhdGEgZXhwb3J0ZWQgb24gYSBwZXItc3ViY2hhbm5lbCBiYXNpcyAoc2VlIHVuZGVyCitidXMvY3NzL2RldmljZXMvKToKKworY2hwaWRzOgkgICAgVmlhIHdoaWNoIGNocGlkcyB0aGUgZGV2aWNlIGlzIGNvbm5lY3RlZC4KKworcGltcGFtcG9tOiAgVGhlIHBhdGggaW5zdGFsbGVkLCBwYXRoIGF2YWlsYWJsZSBhbmQgcGF0aCBvcGVyYXRpb25hbCBtYXNrcy4KKworVGhlcmUgYWxzbyBtaWdodCBiZSBhZGRpdGlvbmFsIGRhdGEsIGZvciBleGFtcGxlIGZvciBibG9jayBkZXZpY2VzLgorCisKKzEuMSBCcmluZ2luZyB1cCBhIGNjdyBkZXZpY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBpcyBkb25lIGluIHNldmVyYWwgc3RlcHMuCisKK2EuIEVhY2ggZHJpdmVyIGNhbiBwcm92aWRlIG9uZSBvciBtb3JlIHBhcmFtZXRlciBpbnRlcmZhY2VzIHdoZXJlIHBhcmFtZXRlcnMgY2FuCisgICBiZSBzcGVjaWZpZWQuIFRoZXNlIGludGVyZmFjZXMgYXJlIGFsc28gaW4gdGhlIGRyaXZlcidzIHJlc3BvbnNpYmlsaXR5LgorYi4gQWZ0ZXIgYS4gaGFzIGJlZW4gcGVyZm9ybWVkLCBpZiBuZWNlc3NhcnksIHRoZSBkZXZpY2UgaXMgZmluYWxseSBicm91Z2h0IHVwCisgICB2aWEgdGhlICdvbmxpbmUnIGludGVyZmFjZS4KKworCisxLjIgV3JpdGluZyBhIGRyaXZlciBmb3IgY2N3IGRldmljZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgYmFzaWMgc3RydWN0IGNjd19kZXZpY2UgYW5kIHN0cnVjdCBjY3dfZHJpdmVyIGRhdGEgc3RydWN0dXJlcyBjYW4gYmUgZm91bmQKK3VuZGVyIGluY2x1ZGUvYXNtL2Njd2Rldi5oLgorCitzdHJ1Y3QgY2N3X2RldmljZSB7CisgICAgICAgIHNwaW5sb2NrX3QgKmNjd2xvY2s7CisgICAgICAgIHN0cnVjdCBjY3dfZGV2aWNlX3ByaXZhdGUgKnByaXZhdGU7CisJc3RydWN0IGNjd19kZXZpY2VfaWQgaWQ7CQorCisJc3RydWN0IGNjd19kcml2ZXIgKmRydjsJCQorCXN0cnVjdCBkZXZpY2UgZGV2OwkJCisJaW50IG9ubGluZTsKKworCXZvaWQgKCpoYW5kbGVyKSAoc3RydWN0IGNjd19kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBpbnRwYXJtLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpcmIgKmlyYik7Cit9OworCitzdHJ1Y3QgY2N3X2RyaXZlciB7CisJc3RydWN0IG1vZHVsZSAqb3duZXI7CQkKKwlzdHJ1Y3QgY2N3X2RldmljZV9pZCAqaWRzOwkKKwlpbnQgKCpwcm9iZSkgKHN0cnVjdCBjY3dfZGV2aWNlICopOyAKKwlpbnQgKCpyZW1vdmUpIChzdHJ1Y3QgY2N3X2RldmljZSAqKTsKKwlpbnQgKCpzZXRfb25saW5lKSAoc3RydWN0IGNjd19kZXZpY2UgKik7CisJaW50ICgqc2V0X29mZmxpbmUpIChzdHJ1Y3QgY2N3X2RldmljZSAqKTsKKwlpbnQgKCpub3RpZnkpIChzdHJ1Y3QgY2N3X2RldmljZSAqLCBpbnQpOworCXN0cnVjdCBkZXZpY2VfZHJpdmVyIGRyaXZlcjsKKwljaGFyICpuYW1lOworfTsKKworVGhlICdwcml2YXRlJyBmaWVsZCBjb250YWlucyBkYXRhIG5lZWRlZCBmb3IgaW50ZXJuYWwgaS9vIG9wZXJhdGlvbiBvbmx5LCBhbmQKK2lzIG5vdCBhdmFpbGFibGUgdG8gdGhlIGRldmljZSBkcml2ZXIuCisKK0VhY2ggZHJpdmVyIHNob3VsZCBkZWNsYXJlIGluIGEgTU9EVUxFX0RFVklDRV9UQUJMRSBpbnRvIHdoaWNoIENVIHR5cGVzL21vZGVscworYW5kL29yIGRldmljZSB0eXBlcy9tb2RlbHMgaXQgaXMgaW50ZXJlc3RlZC4gVGhpcyBpbmZvcm1hdGlvbiBjYW4gbGF0ZXIgYmUgZm91bmQKK2luIHRoZSBzdHJ1Y3QgY2N3X2RldmljZV9pZCBmaWVsZHM6CisKK3N0cnVjdCBjY3dfZGV2aWNlX2lkIHsKKwlfX3UxNgltYXRjaF9mbGFnczsJCisKKwlfX3UxNgljdV90eXBlOwkKKwlfX3UxNglkZXZfdHlwZTsJCisJX191OAljdV9tb2RlbDsJCisJX191OAlkZXZfbW9kZWw7CQorCisJdW5zaWduZWQgbG9uZyBkcml2ZXJfaW5mbzsKK307CisKK1RoZSBmdW5jdGlvbnMgaW4gY2N3X2RyaXZlciBzaG91bGQgYmUgdXNlZCBpbiB0aGUgZm9sbG93aW5nIHdheToKK3Byb2JlOiAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBkZXZpY2UgbGF5ZXIgZm9yIGVhY2ggZGV2aWNlIHRoZSBkcml2ZXIKKwkgaXMgaW50ZXJlc3RlZCBpbi4gVGhlIGRyaXZlciBzaG91bGQgb25seSBhbGxvY2F0ZSBwcml2YXRlIHN0cnVjdHVyZXMKKwkgdG8gcHV0IGluIGRldi0+ZHJpdmVyX2RhdGEgYW5kIGNyZWF0ZSBhdHRyaWJ1dGVzIChpZiBuZWVkZWQpLiBBbHNvLAorCSB0aGUgaW50ZXJydXB0IGhhbmRsZXIgKHNlZSBiZWxvdykgc2hvdWxkIGJlIHNldCBoZXJlLgorCitpbnQgKCpwcm9iZSkgKHN0cnVjdCBjY3dfZGV2aWNlICpjZGV2KTsgCisKK1BhcmFtZXRlcnM6ICBjZGV2ICAgICAtIHRoZSBkZXZpY2UgdG8gYmUgcHJvYmVkLgorCisKK3JlbW92ZTogIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBkZXZpY2UgbGF5ZXIgdXBvbiByZW1vdmFsIG9mIHRoZSBkcml2ZXIsCisJIHRoZSBkZXZpY2Ugb3IgdGhlIG1vZHVsZS4gVGhlIGRyaXZlciBzaG91bGQgcGVyZm9ybSBjbGVhbnVwcyBoZXJlLgorCitpbnQgKCpyZW1vdmUpIChzdHJ1Y3QgY2N3X2RldmljZSAqY2Rldik7CisKK1BhcmFtZXRlcnM6ICAgY2RldiAgICAtIHRoZSBkZXZpY2UgdG8gYmUgcmVtb3ZlZC4KKworCitzZXRfb25saW5lOiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgY29tbW9uIEkvTyBsYXllciB3aGVuIHRoZSBkZXZpY2UgaXMKKwkgICAgYWN0aXZhdGVkIHZpYSB0aGUgJ29ubGluZScgYXR0cmlidXRlLiBUaGUgZHJpdmVyIHNob3VsZCBmaW5hbGx5CisJICAgIHNldHVwIGFuZCBhY3RpdmF0ZSB0aGUgZGV2aWNlIGhlcmUuCisKK2ludCAoKnNldF9vbmxpbmUpIChzdHJ1Y3QgY2N3X2RldmljZSAqKTsKKworUGFyYW1ldGVyczogICBjZGV2CS0gdGhlIGRldmljZSB0byBiZSBhY3RpdmF0ZWQuIFRoZSBjb21tb24gbGF5ZXIgaGFzCisJCQkgIHZlcmlmaWVkIHRoYXQgdGhlIGRldmljZSBpcyBub3QgYWxyZWFkeSBvbmxpbmUuCisKKworc2V0X29mZmxpbmU6IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBjb21tb24gSS9PIGxheWVyIHdoZW4gdGhlIGRldmljZSBpcworCSAgICAgZGUtYWN0aXZhdGVkIHZpYSB0aGUgJ29ubGluZScgYXR0cmlidXRlLiBUaGUgZHJpdmVyIHNob3VsZCBzaHV0CisJICAgICBkb3duIHRoZSBkZXZpY2UsIGJ1dCBub3QgZGUtYWxsb2NhdGUgaXRzIHByaXZhdGUgZGF0YS4KKworaW50ICgqc2V0X29mZmxpbmUpIChzdHJ1Y3QgY2N3X2RldmljZSAqKTsKKworUGFyYW1ldGVyczogICBjZGV2ICAgICAgIC0gdGhlIGRldmljZSB0byBiZSBkZWFjdGl2YXRlZC4gVGhlIGNvbW1vbiBsYXllciBoYXMKKwkJCSAgIHZlcmlmaWVkIHRoYXQgdGhlIGRldmljZSBpcyBvbmxpbmUuCisKKworbm90aWZ5OiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgY29tbW9uIEkvTyBsYXllciBmb3Igc29tZSBzdGF0ZSBjaGFuZ2VzCisJb2YgdGhlIGRldmljZS4KKwlTaWduYWxsZWQgdG8gdGhlIGRyaXZlciBhcmU6CisJKiBJbiBvbmxpbmUgc3RhdGUsIGRldmljZSBkZXRhY2hlZCAoQ0lPX0dPTkUpIG9yIGxhc3QgcGF0aCBnb25lCisJICAoQ0lPX05PX1BBVEgpLiBUaGUgZHJpdmVyIG11c3QgcmV0dXJuICEwIHRvIGtlZXAgdGhlIGRldmljZTsgZm9yCisJICByZXR1cm4gY29kZSAwLCB0aGUgZGV2aWNlIHdpbGwgYmUgZGVsZXRlZCBhcyB1c3VhbCAoYWxzbyB3aGVuIG5vCisJICBub3RpZnkgZnVuY3Rpb24gaXMgcmVnaXN0ZXJlZCkuIElmIHRoZSBkcml2ZXIgd2FudHMgdG8ga2VlcCB0aGUKKwkgIGRldmljZSwgaXQgaXMgbW92ZWQgaW50byBkaXNjb25uZWN0ZWQgc3RhdGUuCisJKiBJbiBkaXNjb25uZWN0ZWQgc3RhdGUsIGRldmljZSBvcGVyYXRpb25hbCBhZ2FpbiAoQ0lPX09QRVIpLiBUaGUKKwkgIGNvbW1vbiBJL08gbGF5ZXIgcGVyZm9ybXMgc29tZSBzYW5pdHkgY2hlY2tzIG9uIGRldmljZSBudW1iZXIgYW5kCisJICBEZXZpY2UgLyBDVSB0byBiZSByZWFzb25hYmx5IHN1cmUgaWYgaXQgaXMgc3RpbGwgdGhlIHNhbWUgZGV2aWNlLgorCSAgSWYgbm90LCB0aGUgb2xkIGRldmljZSBpcyByZW1vdmVkIGFuZCBhIG5ldyBvbmUgcmVnaXN0ZXJlZC4gQnkgdGhlCisJICByZXR1cm4gY29kZSBvZiB0aGUgbm90aWZ5IGZ1bmN0aW9uIHRoZSBkZXZpY2UgZHJpdmVyIHNpZ25hbHMgaWYgaXQKKwkgIHdhbnRzIHRoZSBkZXZpY2UgYmFjazogITAgZm9yIGtlZXBpbmcsIDAgdG8gbWFrZSB0aGUgZGV2aWNlIGJlaW5nCisJICByZW1vdmVkIGFuZCByZS1yZWdpc3RlcmVkLgorCQoraW50ICgqbm90aWZ5KSAoc3RydWN0IGNjd19kZXZpY2UgKiwgaW50KTsKKworUGFyYW1ldGVyczogICBjZGV2ICAgIC0gdGhlIGRldmljZSB3aG9zZSBzdGF0ZSBjaGFuZ2VkLgorCSAgICAgIGV2ZW50ICAgLSB0aGUgZXZlbnQgdGhhdCBoYXBwZW5lZC4gVGhpcyBjYW4gYmUgb25lIG9mIENJT19HT05FLAorCQkgICAgICAgIENJT19OT19QQVRIIG9yIENJT19PUEVSLgorCitUaGUgaGFuZGxlciBmaWVsZCBvZiB0aGUgc3RydWN0IGNjd19kZXZpY2UgaXMgbWVhbnQgdG8gYmUgc2V0IHRvIHRoZSBpbnRlcnJ1cHQKK2hhbmRsZXIgZm9yIHRoZSBkZXZpY2UuIEluIG9yZGVyIHRvIGFjY29tbW9kYXRlIGRyaXZlcnMgd2hpY2ggdXNlIHNldmVyYWwgCitkaXN0aW5jdCBoYW5kbGVycyAoZS5nLiBtdWx0aSBzdWJjaGFubmVsIGRldmljZXMpLCB0aGlzIGlzIGEgbWVtYmVyIG9mIGNjd19kZXZpY2UKK2luc3RlYWQgb2YgY2N3X2RyaXZlci4KK1RoZSBoYW5kbGVyIGlzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgY29tbW9uIGxheWVyIGR1cmluZyBzZXRfb25saW5lKCkgcHJvY2Vzc2luZworYmVmb3JlIHRoZSBkcml2ZXIgaXMgY2FsbGVkLCBhbmQgaXMgZGVyZWdpc3RlcmVkIGR1cmluZyBzZXRfb2ZmbGluZSgpIGFmdGVyIHRoZQorZHJpdmVyIGhhcyBiZWVuIGNhbGxlZC4gQWxzbywgYWZ0ZXIgcmVnaXN0ZXJpbmcgLyBiZWZvcmUgZGVyZWdpc3RlcmluZywgcGF0aCAKK2dyb3VwaW5nIHJlc3AuIGRpc2JhbmRpbmcgb2YgdGhlIHBhdGggZ3JvdXAgKGlmIGFwcGxpY2FibGUpIGFyZSBwZXJmb3JtZWQuCisKK3ZvaWQgKCpoYW5kbGVyKSAoc3RydWN0IGNjd19kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBpbnRwYXJtLCBzdHJ1Y3QgaXJiICppcmIpOworCitQYXJhbWV0ZXJzOglkZXYJLSB0aGUgZGV2aWNlIHRoZSBoYW5kbGVyIGlzIGNhbGxlZCBmb3IKKwkJaW50cGFybSAtIHRoZSBpbnRwYXJtIHdoaWNoIGFsbG93cyB0aGUgZGV2aWNlIGRyaXZlciB0byBpZGVudGlmeQorICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgaS9vIHRoZSBpbnRlcnJ1cHQgaXMgYXNzb2NpYXRlZCB3aXRoLCBvciB0byByZWNvZ25pemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGludGVycnVwdCBhcyB1bnNvbGljaXRlZC4KKyAgICAgICAgICAgICAgICBpcmIgICAgIC0gaW50ZXJydXB0aW9uIHJlc3BvbnNlIGJsb2NrIHdoaWNoIGNvbnRhaW5zIHRoZSBhY2N1bXVsYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMuCisKK1RoZSBkZXZpY2UgZHJpdmVyIGlzIGNhbGxlZCBmcm9tIHRoZSBjb21tb24gY2N3X2RldmljZSBsYXllciBhbmQgY2FuIHJldHJpZXZlIAoraW5mb3JtYXRpb24gYWJvdXQgdGhlIGludGVycnVwdCBmcm9tIHRoZSBpcmIgcGFyYW1ldGVyLgorCisKKzEuMyBjY3dncm91cCBkZXZpY2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgY2N3Z3JvdXAgbWVjaGFuaXNtIGlzIGRlc2lnbmVkIHRvIGhhbmRsZSBkZXZpY2VzIGNvbnNpc3Rpbmcgb2YgbXVsdGlwbGUgY2N3CitkZXZpY2VzLCBsaWtlIGxjcyBvciBjdGMuCisKK1RoZSBjY3cgZHJpdmVyIHByb3ZpZGVzIGEgJ2dyb3VwJyBhdHRyaWJ1dGUuIFBpcGluZyBidXMgaWRzIG9mIGNjdyBkZXZpY2VzIHRvCit0aGlzIGF0dHJpYnV0ZXMgY3JlYXRlcyBhIGNjd2dyb3VwIGRldmljZSBjb25zaXN0aW5nIG9mIHRoZXNlIGNjdyBkZXZpY2VzIChpZgorcG9zc2libGUpLiBUaGlzIGNjd2dyb3VwIGRldmljZSBjYW4gYmUgc2V0IG9ubGluZSBvciBvZmZsaW5lIGp1c3QgbGlrZSBhIG5vcm1hbAorY2N3IGRldmljZS4KKworRWFjaCBjY3dncm91cCBkZXZpY2UgYWxzbyBwcm92aWRlcyBhbiAndW5ncm91cCcgYXR0cmlidXRlIHRvIGRlc3Ryb3kgdGhlIGRldmljZQorYWdhaW4gKG9ubHkgd2hlbiBvZmZsaW5lKS4gVGhpcyBpcyBhIGdlbmVyaWMgY2N3Z3JvdXAgbWVjaGFuaXNtICh0aGUgZHJpdmVyIGRvZXMKK25vdCBuZWVkIHRvIGltcGxlbWVudCBhbnl0aGluZyBiZXlvbmQgbm9ybWFsIHJlbW92YWwgcm91dGluZXMpLgorCitBIGNjdyBkZXZpY2Ugd2hpY2ggaXMgYSBtZW1iZXIgb2YgYSBjY3dncm91cCBkZXZpY2UgY2FycmllcyBhIHBvaW50ZXIgdG8gdGhlCitjY3dncm91cCBkZXZpY2UgaW4gdGhlIGRyaXZlcl9kYXRhIG9mIGl0cyBkZXZpY2Ugc3RydWN0LiBUaGlzIGZpZWxkIG11c3Qgbm90IGJlCit0b3VjaGVkIGJ5IHRoZSBkcml2ZXIgLSBpdCBzaG91bGQgdXNlIHRoZSBjY3dncm91cCBkZXZpY2UncyBkcml2ZXJfZGF0YSBmb3IgaXRzCitwcml2YXRlIGRhdGEuCisKK1RvIGltcGxlbWVudCBhIGNjd2dyb3VwIGRyaXZlciwgcGxlYXNlIHJlZmVyIHRvIGluY2x1ZGUvYXNtL2Njd2dyb3VwLmguIEtlZXAgaW4KK21pbmQgdGhhdCBtb3N0IGRyaXZlcnMgd2lsbCBuZWVkIHRvIGltcGxlbWVudCBib3RoIGEgY2N3Z3JvdXAgYW5kIGEgY2N3Citkcml2ZXIuCisKKworMi4gQ2hhbm5lbCBwYXRocworLS0tLS0tLS0tLS0tLS0tLS0KKworQ2hhbm5lbCBwYXRocyBzaG93IHVwLCBsaWtlIHN1YmNoYW5uZWxzLCB1bmRlciB0aGUgY2hhbm5lbCBzdWJzeXN0ZW0gcm9vdCAoY3NzMCkKK2FuZCBhcmUgY2FsbGVkICdjaHAwLjxjaHBpZD4nLiBUaGV5IGhhdmUgbm8gZHJpdmVyIGFuZCBkbyBub3QgYmVsb25nIHRvIGFueSBidXMuCitQbGVhc2Ugbm90ZSwgdGhhdCB1bmxpa2UgL3Byb2MvY2hwaWRzIGluIDIuNCwgdGhlIGNoYW5uZWwgcGF0aCBvYmplY3RzIHJlZmxlY3QKK29ubHkgdGhlIGxvZ2ljYWwgc3RhdGUgYW5kIG5vdCB0aGUgcGh5c2ljYWwgc3RhdGUsIHNpbmNlIHdlIGNhbm5vdCB0cmFjayB0aGUKK2xhdHRlciBjb25zaXN0ZW50bHkgZHVlIHRvIGxhY2tpbmcgbWFjaGluZSBzdXBwb3J0ICh3ZSBkb24ndCBuZWVkIHRvIGJlIGF3YXJlCitvZiBpdCBhbnl3YXkpLgorCitzdGF0dXMgLSBDYW4gYmUgJ29ubGluZScgb3IgJ29mZmxpbmUnLgorCSBQaXBpbmcgJ29uJyBvciAnb2ZmJyBzZXRzIHRoZSBjaHBpZCBsb2dpY2FsbHkgb25saW5lL29mZmxpbmUuCisJIFBpcGluZyAnb24nIHRvIGFuIG9ubGluZSBjaHBpZCB0cmlnZ2VycyBwYXRoIHJlcHJvYmluZyBmb3IgYWxsIGRldmljZXMKKwkgdGhlIGNocGlkIGNvbm5lY3RzIHRvLiBUaGlzIGNhbiBiZSB1c2VkIHRvIGZvcmNlIHRoZSBrZXJuZWwgdG8gcmUtdXNlCisJIGEgY2hhbm5lbCBwYXRoIHRoZSB1c2VyIGtub3dzIHRvIGJlIG9ubGluZSwgYnV0IHRoZSBtYWNoaW5lIGhhc24ndAorCSBjcmVhdGVkIGEgbWFjaGluZSBjaGVjayBmb3IuCisKK3R5cGUgLSBUaGUgcGh5c2ljYWwgdHlwZSBvZiB0aGUgY2hhbm5lbCBwYXRoLgorCitzaGFyZWQgLSBXaGV0aGVyIHRoZSBjaGFubmVsIHBhdGggaXMgc2hhcmVkLgorCitjbWcgLSBUaGUgY2hhbm5lbCBtZWFzdXJlbWVudCBncm91cC4KKworMy4gU3lzdGVtIGRldmljZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKzMuMSB4cHJhbSAKKy0tLS0tLS0tLQorCit4cHJhbSBzaG93cyB1cCB1bmRlciBkZXZpY2VzL3N5c3RlbS8gYXMgJ3hwcmFtJy4KKworMy4yIGNwdXMKKy0tLS0tLS0tCisKK0ZvciBlYWNoIGNwdSwgYSBkaXJlY3RvcnkgaXMgY3JlYXRlZCB1bmRlciBkZXZpY2VzL3N5c3RlbS9jcHUvLiBFYWNoIGNwdSBoYXMgYW4KK2F0dHJpYnV0ZSAnb25saW5lJyB3aGljaCBjYW4gYmUgMCBvciAxLgorCisKKzQuIE90aGVyIGRldmljZXMKKy0tLS0tLS0tLS0tLS0tLS0KKworNC4xIE5ldGl1Y3YKKy0tLS0tLS0tLS0tCisKK1RoZSBuZXRpdWN2IGRyaXZlciBjcmVhdGVzIGFuIGF0dHJpYnV0ZSAnY29ubmVjdGlvbicgdW5kZXIKK2J1cy9pdWN2L2RyaXZlcnMvbmV0aXVjdi4gUGlwaW5nIHRvIHRoaXMgYXR0cmlidXRlIGNyZWF0ZXMgYSBuZXcgbmV0aXVjdgorY29ubmVjdGlvbiB0byB0aGUgc3BlY2lmaWVkIGhvc3QuCisKK05ldGl1Y3YgY29ubmVjdGlvbnMgc2hvdyB1cCB1bmRlciBkZXZpY2VzL2l1Y3YvIGFzICJuZXRpdWN2PGlmbnVtPiIuIFRoZSBpbnRlcmZhY2UKK251bWJlciBpcyBhc3NpZ25lZCBzZXF1ZW50aWFsbHkgdG8gdGhlIGNvbm5lY3Rpb25zIGRlZmluZWQgdmlhIHRoZSAnY29ubmVjdGlvbicKK2F0dHJpYnV0ZS4KKwordXNlcgkJCSAgLSBzaG93cyB0aGUgY29ubmVjdGlvbiBwYXJ0bmVyLgorCitidWZmZXIJCQkgIC0gbWF4aW11bSBidWZmZXIgc2l6ZS4KKwkJCSAgICBQaXBlIHRvIGl0IHRvIGNoYW5nZSBidWZmZXIgc2l6ZS4KKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3MzOTAvbW9ucmVhZGVyLnR4dCBiL0RvY3VtZW50YXRpb24vczM5MC9tb25yZWFkZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzNzI5NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3MzOTAvbW9ucmVhZGVyLnR4dApAQCAtMCwwICsxLDE5NyBAQAorCitEYXRlICA6IDIwMDQtTm92LTI2CitBdXRob3I6IEdlcmFsZCBTY2hhZWZlciAoZ2VyYWxkc2NAZGUuaWJtLmNvbSkKKworCisgICAgICAgICAgICAgTGludXggQVBJIGZvciByZWFkIGFjY2VzcyB0byB6L1ZNIE1vbml0b3IgUmVjb3JkcworICAgICAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCitEZXNjcmlwdGlvbgorPT09PT09PT09PT0KK1RoaXMgaXRlbSBkZWxpdmVycyBhIG5ldyBMaW51eCBBUEkgaW4gdGhlIGZvcm0gb2YgYSBtaXNjIGNoYXIgZGV2aWNlIHRoYXQgaXMKK3VzYWJsZSBmcm9tIHVzZXIgc3BhY2UgYW5kIGFsbG93cyByZWFkIGFjY2VzcyB0byB0aGUgei9WTSBNb25pdG9yIFJlY29yZHMKK2NvbGxlY3RlZCBieSB0aGUgKk1PTklUT1IgU3lzdGVtIFNlcnZpY2Ugb2Ygei9WTS4KKworCitVc2VyIFJlcXVpcmVtZW50cworPT09PT09PT09PT09PT09PT0KK1RoZSB6L1ZNIGd1ZXN0IG9uIHdoaWNoIHlvdSB3YW50IHRvIGFjY2VzcyB0aGlzIEFQSSBuZWVkcyB0byBiZSBjb25maWd1cmVkIGluCitvcmRlciB0byBhbGxvdyBJVUNWIGNvbm5lY3Rpb25zIHRvIHRoZSAqTU9OSVRPUiBzZXJ2aWNlLCBpLmUuIGl0IG5lZWRzIHRoZQorSVVDViAqTU9OSVRPUiBzdGF0ZW1lbnQgaW4gaXRzIHVzZXIgZW50cnkuIElmIHRoZSBtb25pdG9yIERDU1MgdG8gYmUgdXNlZCBpcworcmVzdHJpY3RlZCAobGlrZWx5KSwgeW91IGFsc28gbmVlZCB0aGUgTkFNRVNBVkUgPERDU1MgTkFNRT4gc3RhdGVtZW50LgorVGhpcyBpdGVtIHdpbGwgdXNlIHRoZSBJVUNWIGRldmljZSBkcml2ZXIgdG8gYWNjZXNzIHRoZSB6L1ZNIHNlcnZpY2VzLCBzbyB5b3UKK25lZWQgYSBrZXJuZWwgd2l0aCBJVUNWIHN1cHBvcnQuIFlvdSBhbHNvIG5lZWQgei9WTSB2ZXJzaW9uIDQuNCBvciA1LjEuCisKK1RoZXJlIGFyZSB0d28gb3B0aW9ucyBmb3IgYmVpbmcgYWJsZSB0byBsb2FkIHRoZSBtb25pdG9yIERDU1MgKGV4YW1wbGVzIGFzc3VtZQordGhhdCB0aGUgbW9uaXRvciBEQ1NTIGJlZ2lucyBhdCAxNDQgTUIgYW5kIGVuZHMgYXQgMTUyIE1CKS4gWW91IGNhbiBxdWVyeSB0aGUKK2xvY2F0aW9uIG9mIHRoZSBtb25pdG9yIERDU1Mgd2l0aCB0aGUgQ2xhc3MgRSBwcml2aWxlZ2VkIENQIGNvbW1hbmQgUSBOU1MgTUFQCisodGhlIHZhbHVlcyBCRUdQQUcgYW5kIEVORFBBRyBhcmUgZ2l2ZW4gaW4gdW5pdHMgb2YgNEsgcGFnZXMpLgorCitTZWUgYWxzbyAiQ1AgQ29tbWFuZCBhbmQgVXRpbGl0eSBSZWZlcmVuY2UiIChTQzI0LTYwODEtMDApIGZvciBtb3JlIGluZm9ybWF0aW9uCitvbiB0aGUgREVGIFNUT1IgYW5kIFEgTlNTIE1BUCBjb21tYW5kcywgYXMgd2VsbCBhcyAiU2F2ZWQgU2VnbWVudHMgUGxhbm5pbmcKK2FuZCBBZG1pbmlzdHJhdGlvbiIgKFNDMjQtNjExNi0wMCkgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gRENTU2VzLgorCisxc3Qgb3B0aW9uOgorLS0tLS0tLS0tLS0KK1lvdSBjYW4gdXNlIHRoZSBDUCBjb21tYW5kIERFRiBTVE9SIENPTkZJRyB0byBkZWZpbmUgYSAibWVtb3J5IGhvbGUiIGluIHlvdXIKK2d1ZXN0IHZpcnR1YWwgc3RvcmFnZSBhcm91bmQgdGhlIGFkZHJlc3MgcmFuZ2Ugb2YgdGhlIERDU1MuCisKK0V4YW1wbGU6IERFRiBTVE9SIENPTkZJRyAwLjE0ME0gMjAwTS4yMDBNCisKK1RoaXMgZGVmaW5lcyB0d28gYmxvY2tzIG9mIHN0b3JhZ2UsIHRoZSBmaXJzdCBpcyAxNDBNQiBpbiBzaXplIGFuIGJlZ2lucyBhdAorYWRkcmVzcyAwTUIsIHRoZSBzZWNvbmQgaXMgMjAwTUIgaW4gc2l6ZSBhbmQgYmVnaW5zIGF0IGFkZHJlc3MgMjAwTUIsCityZXN1bHRpbmcgaW4gYSB0b3RhbCBzdG9yYWdlIG9mIDM0ME1CLiBOb3RlIHRoYXQgdGhlIGZpcnN0IGJsb2NrIHNob3VsZAorYWx3YXlzIHN0YXJ0IGF0IDAgYW5kIGJlIGF0IGxlYXN0IDY0TUIgaW4gc2l6ZS4KKworMm5kIG9wdGlvbjoKKy0tLS0tLS0tLS0tCitZb3VyIGd1ZXN0IHZpcnR1YWwgc3RvcmFnZSBoYXMgdG8gZW5kIGJlbG93IHRoZSBzdGFydGluZyBhZGRyZXNzIG9mIHRoZSBEQ1NTCithbmQgeW91IGhhdmUgdG8gc3BlY2lmeSB0aGUgIm1lbT0iIGtlcm5lbCBwYXJhbWV0ZXIgaW4geW91ciBwYXJtZmlsZSB3aXRoIGEKK3ZhbHVlIGdyZWF0ZXIgdGhhbiB0aGUgZW5kaW5nIGFkZHJlc3Mgb2YgdGhlIERDU1MuCisKK0V4YW1wbGU6IERFRiBTVE9SIDE0ME0KKworVGhpcyBkZWZpbmVzIDE0ME1CIHN0b3JhZ2Ugc2l6ZSBmb3IgeW91ciBndWVzdCwgdGhlIHBhcmFtZXRlciAibWVtPTE2ME0iIGlzCithZGRlZCB0byB0aGUgcGFybWZpbGUuCisKKworVXNlciBJbnRlcmZhY2UKKz09PT09PT09PT09PT09CitUaGUgY2hhciBkZXZpY2UgaXMgaW1wbGVtZW50ZWQgYXMgYSBrZXJuZWwgbW9kdWxlIG5hbWVkICJtb25yZWFkZXIiLAord2hpY2ggY2FuIGJlIGxvYWRlZCB2aWEgdGhlIG1vZHByb2JlIGNvbW1hbmQsIG9yIGl0IGNhbiBiZSBjb21waWxlZCBpbnRvIHRoZQora2VybmVsIGluc3RlYWQuIFRoZXJlIGlzIG9uZSBvcHRpb25hbCBtb2R1bGUgKG9yIGtlcm5lbCkgcGFyYW1ldGVyLCAibW9uZGNzcyIsCit0byBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSBtb25pdG9yIERDU1MuIElmIHRoZSBtb2R1bGUgaXMgY29tcGlsZWQgaW50byB0aGUKK2tlcm5lbCwgdGhlIGtlcm5lbCBwYXJhbWV0ZXIgIm1vbnJlYWRlci5tb25kY3NzPTxEQ1NTIE5BTUU+IiBjYW4gYmUgc3BlY2lmaWVkCitpbiB0aGUgcGFybWZpbGUuCisKK1RoZSBkZWZhdWx0IG5hbWUgZm9yIHRoZSBEQ1NTIGlzICJNT05EQ1NTIiBpZiBub25lIGlzIHNwZWNpZmllZC4gSW4gY2FzZSB0aGF0Cit0aGVyZSBhcmUgb3RoZXIgdXNlcnMgYWxyZWFkeSBjb25uZWN0ZWQgdG8gdGhlICpNT05JVE9SIHNlcnZpY2UgKGUuZy4KK1BlcmZvcm1hbmNlIFRvb2xraXQpLCB0aGUgbW9uaXRvciBEQ1NTIGlzIGFscmVhZHkgZGVmaW5lZCBhbmQgeW91IGhhdmUgdG8gdXNlCit0aGUgc2FtZSBEQ1NTLiBUaGUgQ1AgY29tbWFuZCBRIE1PTklUT1IgKENsYXNzIEUgcHJpdmlsZWdlZCkgc2hvd3MgdGhlIG5hbWUKK29mIHRoZSBtb25pdG9yIERDU1MsIGlmIGFscmVhZHkgZGVmaW5lZCwgYW5kIHRoZSB1c2VycyBjb25uZWN0ZWQgdG8gdGhlCisqTU9OSVRPUiBzZXJ2aWNlLgorUmVmZXIgdG8gdGhlICJ6L1ZNIFBlcmZvcm1hbmNlIiBib29rIChTQzI0LTYxMDktMDApIG9uIGhvdyB0byBjcmVhdGUgYSBtb25pdG9yCitEQ1NTIGlmIHlvdXIgei9WTSBkb2Vzbid0IGhhdmUgb25lIGFscmVhZHksIHlvdSBuZWVkIENsYXNzIEUgcHJpdmlsZWdlcyB0bworZGVmaW5lIGFuZCBzYXZlIGEgRENTUy4KKworRXhhbXBsZToKKy0tLS0tLS0tCittb2Rwcm9iZSBtb25yZWFkZXIgbW9uZGNzcz1NWURDU1MKKworVGhpcyBsb2FkcyB0aGUgbW9kdWxlIGFuZCBzZXRzIHRoZSBEQ1NTIG5hbWUgdG8gIk1ZRENTUyIuCisKK05PVEU6CistLS0tLQorVGhpcyBBUEkgcHJvdmlkZXMgbm8gaW50ZXJmYWNlIHRvIGNvbnRyb2wgdGhlICpNT05JVE9SIHNlcnZpY2UsIGUuZy4gc3BlY2lmeQord2hpY2ggZGF0YSBzaG91bGQgYmUgY29sbGVjdGVkLiBUaGlzIGNhbiBiZSBkb25lIGJ5IHRoZSBDUCBjb21tYW5kIE1PTklUT1IKKyhDbGFzcyBFIHByaXZpbGVnZWQpLCBzZWUgIkNQIENvbW1hbmQgYW5kIFV0aWxpdHkgUmVmZXJlbmNlIi4KKworRGV2aWNlIG5vZGVzIHdpdGggdWRldjoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBZnRlciBsb2FkaW5nIHRoZSBtb2R1bGUsIGEgY2hhciBkZXZpY2Ugd2lsbCBiZSBjcmVhdGVkIGFsb25nIHdpdGggdGhlIGRldmljZQorbm9kZSAvPHVkZXYgZGlyZWN0b3J5Pi9tb25yZWFkZXIuCisKK0RldmljZSBub2RlcyB3aXRob3V0IHVkZXY6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSWYgeW91ciBkaXN0cmlidXRpb24gZG9lcyBub3Qgc3VwcG9ydCB1ZGV2LCBhIGRldmljZSBub2RlIHdpbGwgbm90IGJlIGNyZWF0ZWQKK2F1dG9tYXRpY2FsbHkgYW5kIHlvdSBoYXZlIHRvIGNyZWF0ZSBpdCBtYW51YWxseSBhZnRlciBsb2FkaW5nIHRoZSBtb2R1bGUuCitUaGVyZWZvcmUgeW91IG5lZWQgdG8ga25vdyB0aGUgbWFqb3IgYW5kIG1pbm9yIG51bWJlcnMgb2YgdGhlIGRldmljZS4gVGhlc2UKK251bWJlcnMgY2FuIGJlIGZvdW5kIGluIC9zeXMvY2xhc3MvbWlzYy9tb25yZWFkZXIvZGV2LgorVHlwaW5nIGNhdCAvc3lzL2NsYXNzL21pc2MvbW9ucmVhZGVyL2RldiB3aWxsIGdpdmUgYW4gb3V0cHV0IG9mIHRoZSBmb3JtCis8bWFqb3I+OjxtaW5vcj4uIFRoZSBkZXZpY2Ugbm9kZSBjYW4gYmUgY3JlYXRlZCB2aWEgdGhlIG1rbm9kIGNvbW1hbmQsIGVudGVyCitta25vZCA8bmFtZT4gYyA8bWFqb3I+IDxtaW5vcj4sIHdoZXJlIDxuYW1lPiBpcyB0aGUgbmFtZSBvZiB0aGUgZGV2aWNlIG5vZGUKK3RvIGJlIGNyZWF0ZWQuCisKK0V4YW1wbGU6CistLS0tLS0tLQorIyBtb2Rwcm9iZSBtb25yZWFkZXIKKyMgY2F0IC9zeXMvY2xhc3MvbWlzYy9tb25yZWFkZXIvZGV2CisxMDo2MworIyBta25vZCAvZGV2L21vbnJlYWRlciBjIDEwIDYzCisKK1RoaXMgbG9hZHMgdGhlIG1vZHVsZSB3aXRoIHRoZSBkZWZhdWx0IG1vbml0b3IgRENTUyAoTU9ORENTUykgYW5kIGNyZWF0ZXMgYQorZGV2aWNlIG5vZGUuCisKK0ZpbGUgb3BlcmF0aW9uczoKKy0tLS0tLS0tLS0tLS0tLS0KK1RoZSBmb2xsb3dpbmcgZmlsZSBvcGVyYXRpb25zIGFyZSBzdXBwb3J0ZWQ6IG9wZW4sIHJlbGVhc2UsIHJlYWQsIHBvbGwuCitUaGVyZSBhcmUgdHdvIGFsdGVybmF0aXZlIG1ldGhvZHMgZm9yIHJlYWRpbmc6IGVpdGhlciBub24tYmxvY2tpbmcgcmVhZCBpbgorY29uanVuY3Rpb24gd2l0aCBwb2xsaW5nLCBvciBibG9ja2luZyByZWFkIHdpdGhvdXQgcG9sbGluZy4gSU9DVExzIGFyZSBub3QKK3N1cHBvcnRlZC4KKworUmVhZDoKKy0tLS0tCitSZWFkaW5nIGZyb20gdGhlIGRldmljZSBwcm92aWRlcyBhIDEyIEJ5dGUgbW9uaXRvciBjb250cm9sIGVsZW1lbnQgKE1DRSksCitmb2xsb3dlZCBieSBhIHNldCBvZiBvbmUgb3IgbW9yZSBjb250aWd1b3VzIG1vbml0b3IgcmVjb3JkcyAoc2ltaWxhciB0byB0aGUKK291dHB1dCBvZiB0aGUgQ01TIHV0aWxpdHkgTU9OV1JJVEUgd2l0aG91dCB0aGUgNEsgY29udHJvbCBibG9ja3MpLiBUaGUgTUNFCitjb250YWlucyBpbmZvcm1hdGlvbiBvbiB0aGUgdHlwZSBvZiB0aGUgZm9sbG93aW5nIHJlY29yZCBzZXQgKHNhbXBsZS9ldmVudAorZGF0YSksIHRoZSBtb25pdG9yIGRvbWFpbnMgY29udGFpbmVkIHdpdGhpbiBpdCBhbmQgdGhlIHN0YXJ0IGFuZCBlbmQgYWRkcmVzcworb2YgdGhlIHJlY29yZCBzZXQgaW4gdGhlIG1vbml0b3IgRENTUy4gVGhlIHN0YXJ0IGFuZCBlbmQgYWRkcmVzcyBjYW4gYmUgdXNlZAordG8gZGV0ZXJtaW5lIHRoZSBzaXplIG9mIHRoZSByZWNvcmQgc2V0LCB0aGUgZW5kIGFkZHJlc3MgaXMgdGhlIGFkZHJlc3Mgb2YgdGhlCitsYXN0IGJ5dGUgb2YgZGF0YS4gVGhlIHN0YXJ0IGFkZHJlc3MgaXMgbmVlZGVkIHRvIGhhbmRsZSAiZW5kLW9mLWZyYW1lIiByZWNvcmRzCitjb3JyZWN0bHkgKGRvbWFpbiAxLCByZWNvcmQgMTMpLCBpLmUuIGl0IGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgcmVjb3JkCitzdGFydCBvZmZzZXQgcmVsYXRpdmUgdG8gYSA0SyBwYWdlIChmcmFtZSkgYm91bmRhcnkuCisKK1NlZSAiQXBwZW5kaXggQTogKk1PTklUT1IiIGluIHRoZSAiei9WTSBQZXJmb3JtYW5jZSIgZG9jdW1lbnQgZm9yIGEgZGVzY3JpcHRpb24KK29mIHRoZSBtb25pdG9yIGNvbnRyb2wgZWxlbWVudCBsYXlvdXQuIFRoZSBsYXlvdXQgb2YgdGhlIG1vbml0b3IgcmVjb3JkcyBjYW4KK2JlIGZvdW5kIGhlcmUgKHovVk0gNS4xKTogaHR0cDovL3d3dy52bS5pYm0uY29tL3B1YnMvbW9uNTEwL2luZGV4Lmh0bWwKKworVGhlIGxheW91dCBvZiB0aGUgZGF0YSBzdHJlYW0gcHJvdmlkZWQgYnkgdGhlIG1vbnJlYWRlciBkZXZpY2UgaXMgYXMgZm9sbG93czoKKy4uLgorPDAgYnl0ZSByZWFkPgorPGZpcnN0IE1DRT4gICAgICAgICAgICAgIFwKKzxmaXJzdCBzZXQgb2YgcmVjb3Jkcz4gICAgfAorLi4uICAgICAgICAgICAgICAgICAgICAgICB8LSBkYXRhIHNldAorPGxhc3QgTUNFPiAgICAgICAgICAgICAgICB8Cis8bGFzdCBzZXQgb2YgcmVjb3Jkcz4gICAgLworPDAgYnl0ZSByZWFkPgorLi4uCisKK1RoZXJlIG1heSBiZSBtb3JlIHRoYW4gb25lIGNvbWJpbmF0aW9uIG9mIE1DRSBhbmQgY29ycmVzcG9uZGluZyByZWNvcmQgc2V0Cit3aXRoaW4gb25lIGRhdGEgc2V0IGFuZCB0aGUgZW5kIG9mIGVhY2ggZGF0YSBzZXQgaXMgaW5kaWNhdGVkIGJ5IGEgc3VjY2Vzc2Z1bAorcmVhZCB3aXRoIGEgcmV0dXJuIHZhbHVlIG9mIDAgKDAgYnl0ZSByZWFkKS4KK0FueSByZWNlaXZlZCBkYXRhIG11c3QgYmUgY29uc2lkZXJlZCBpbnZhbGlkIHVudGlsIGEgY29tcGxldGUgc2V0IHdhcworcmVhZCBzdWNjZXNzZnVsbHksIGluY2x1ZGluZyB0aGUgY2xvc2luZyAwIGJ5dGUgcmVhZC4gVGhlcmVmb3JlIHlvdSBzaG91bGQKK2Fsd2F5cyByZWFkIHRoZSBjb21wbGV0ZSBzZXQgaW50byBhIGJ1ZmZlciBiZWZvcmUgcHJvY2Vzc2luZyB0aGUgZGF0YS4KKworVGhlIG1heGltdW0gc2l6ZSBvZiBhIGRhdGEgc2V0IGNhbiBiZSBhcyBsYXJnZSBhcyB0aGUgc2l6ZSBvZiB0aGUKK21vbml0b3IgRENTUywgc28gZGVzaWduIHRoZSBidWZmZXIgYWRlcXVhdGVseSBvciB1c2UgZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbi4KK1RoZSBzaXplIG9mIHRoZSBtb25pdG9yIERDU1Mgd2lsbCBiZSBwcmludGVkIGludG8gc3lzbG9nIGFmdGVyIGxvYWRpbmcgdGhlCittb2R1bGUuIFlvdSBjYW4gYWxzbyB1c2UgdGhlIChDbGFzcyBFIHByaXZpbGVnZWQpIENQIGNvbW1hbmQgUSBOU1MgTUFQIHRvCitsaXN0IGFsbCBhdmFpbGFibGUgc2VnbWVudHMgYW5kIGluZm9ybWF0aW9uIGFib3V0IHRoZW0uCisKK0FzIHdpdGggbW9zdCBjaGFyIGRldmljZXMsIGVycm9yIGNvbmRpdGlvbnMgYXJlIGluZGljYXRlZCBieSByZXR1cm5pbmcgYQorbmVnYXRpdmUgdmFsdWUgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZC4gSW4gdGhpcyBjYXNlLCB0aGUgZXJybm8gdmFyaWFibGUKK2luZGljYXRlcyB0aGUgZXJyb3IgY29uZGl0aW9uOgorCitFSU86IHJlcGx5IGZhaWxlZCwgcmVhZCBkYXRhIGlzIGludmFsaWQgYW5kIHRoZSBhcHBsaWNhdGlvbgorICAgICBzaG91bGQgZGlzY2FyZCB0aGUgZGF0YSByZWFkIHNpbmNlIHRoZSBsYXN0IHN1Y2Nlc3NmdWwgcmVhZCB3aXRoIDAgc2l6ZS4KK0VGQVVMVDogY29weV90b191c2VyIGZhaWxlZCwgcmVhZCBkYXRhIGlzIGludmFsaWQgYW5kIHRoZSBhcHBsaWNhdGlvbiBzaG91bGQKKyAgICAgICAgZGlzY2FyZCB0aGUgZGF0YSByZWFkIHNpbmNlIHRoZSBsYXN0IHN1Y2Nlc3NmdWwgcmVhZCB3aXRoIDAgc2l6ZS4KK0VBR0FJTjogb2NjdXJzIG9uIGEgbm9uLWJsb2NraW5nIHJlYWQgaWYgdGhlcmUgaXMgbm8gZGF0YSBhdmFpbGFibGUgYXQgdGhlCisgICAgICAgIG1vbWVudC4gVGhlcmUgaXMgbm8gZGF0YSBtaXNzaW5nIG9yIGNvcnJ1cHRlZCwganVzdCB0cnkgYWdhaW4gb3IgcmF0aGVyCisgICAgICAgIHVzZSBwb2xsaW5nIGZvciBub24tYmxvY2tpbmcgcmVhZHMuCitFT1ZFUkZMT1c6IG1lc3NhZ2UgbGltaXQgcmVhY2hlZCwgdGhlIGRhdGEgcmVhZCBzaW5jZSB0aGUgbGFzdCBzdWNjZXNzZnVsCisgICAgICAgICAgIHJlYWQgd2l0aCAwIHNpemUgaXMgdmFsaWQgYnV0IHN1YnNlcXVlbnQgcmVjb3JkcyBtYXkgYmUgbWlzc2luZy4KKworSW4gdGhlIGxhc3QgY2FzZSAoRU9WRVJGTE9XKSB0aGVyZSBtYXkgYmUgbWlzc2luZyBkYXRhLCBpbiB0aGUgZmlyc3QgdHdvIGNhc2VzCisoRUlPLCBFRkFVTFQpIHRoZXJlIHdpbGwgYmUgbWlzc2luZyBkYXRhLiBJdCdzIHVwIHRvIHRoZSBhcHBsaWNhdGlvbiBpZiBpdCB3aWxsCitjb250aW51ZSByZWFkaW5nIHN1YnNlcXVlbnQgZGF0YSBvciByYXRoZXIgZXhpdC4KKworT3BlbjoKKy0tLS0tCitPbmx5IG9uZSB1c2VyIGlzIGFsbG93ZWQgdG8gb3BlbiB0aGUgY2hhciBkZXZpY2UuIElmIGl0IGlzIGFscmVhZHkgaW4gdXNlLCB0aGUKK29wZW4gZnVuY3Rpb24gd2lsbCBmYWlsIChyZXR1cm4gYSBuZWdhdGl2ZSB2YWx1ZSkgYW5kIHNldCBlcnJubyB0byBFQlVTWS4KK1RoZSBvcGVuIGZ1bmN0aW9uIG1heSBhbHNvIGZhaWwgaWYgYW4gSVVDViBjb25uZWN0aW9uIHRvIHRoZSAqTU9OSVRPUiBzZXJ2aWNlCitjYW5ub3QgYmUgZXN0YWJsaXNoZWQuIEluIHRoaXMgY2FzZSBlcnJubyB3aWxsIGJlIHNldCB0byBFSU8gYW5kIGFuIGVycm9yCittZXNzYWdlIHdpdGggYW4gSVBVU0VSIFNFVkVSIGNvZGUgd2lsbCBiZSBwcmludGVkIGludG8gc3lzbG9nLiBUaGUgSVBVU0VSIFNFVkVSCitjb2RlcyBhcmUgZGVzY3JpYmVkIGluIHRoZSAiei9WTSBQZXJmb3JtYW5jZSIgYm9vaywgQXBwZW5kaXggQS4KKworTk9URToKKy0tLS0tCitBcyBzb29uIGFzIHRoZSBkZXZpY2UgaXMgb3BlbmVkLCBpbmNvbWluZyBtZXNzYWdlcyB3aWxsIGJlIGFjY2VwdGVkIGFuZCB0aGV5Cit3aWxsIGFjY291bnQgZm9yIHRoZSBtZXNzYWdlIGxpbWl0LCBpLmUuIG9wZW5pbmcgdGhlIGRldmljZSB3aXRob3V0IHJlYWRpbmcKK2Zyb20gaXQgd2lsbCBwcm92b2tlIHRoZSAibWVzc2FnZSBsaW1pdCByZWFjaGVkIiBlcnJvciAoRU9WRVJGTE9XIGVycm9yIGNvZGUpCitldmVudHVhbGx5LgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3MzOTAvcWV0aC50eHQgYi9Eb2N1bWVudGF0aW9uL3MzOTAvcWV0aC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWEwNmZjZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vczM5MC9xZXRoLnR4dApAQCAtMCwwICsxLDUwIEBACitJQk0gczM5MCBRRElPIEV0aGVybmV0IERyaXZlcgorCitPU0EgYW5kIEhpcGVyU29ja2V0cyBCcmlkZ2UgUG9ydCBTdXBwb3J0CisKK1VldmVudHMKKworVG8gZ2VuZXJhdGUgdGhlIGV2ZW50cyB0aGUgZGV2aWNlIG11c3QgYmUgYXNzaWduZWQgYSByb2xlIG9mIGVpdGhlcgorYSBwcmltYXJ5IG9yIGEgc2Vjb25kYXJ5IEJyaWRnZSBQb3J0LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlCisiei9WTSBDb25uZWN0aXZpdHksIFNDMjQtNjE3NCIuCisKK1doZW4gcnVuIG9uIGFuIE9TQSBvciBIaXBlclNvY2tldHMgQnJpZGdlIENhcGFibGUgUG9ydCBoYXJkd2FyZSwgYW5kIHRoZSBzdGF0ZQorb2Ygc29tZSBjb25maWd1cmVkIEJyaWRnZSBQb3J0IGRldmljZSBvbiB0aGUgY2hhbm5lbCBjaGFuZ2VzLCBhIHVkZXYKK2V2ZW50IHdpdGggQUNUSU9OPUNIQU5HRSBpcyBlbWl0dGVkIG9uIGJlaGFsZiBvZiB0aGUgY29ycmVzcG9uZGluZworY2N3Z3JvdXAgZGV2aWNlLiBUaGUgZXZlbnQgaGFzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKworQlJJREdFUE9SVD1zdGF0ZWNoYW5nZSAtICBpbmRpY2F0ZXMgdGhhdCB0aGUgQnJpZGdlIFBvcnQgZGV2aWNlIGNoYW5nZWQKKyAgaXRzIHN0YXRlLgorCitST0xFPXtwcmltYXJ5fHNlY29uZGFyeXxub25lfSAtIHRoZSByb2xlIGFzc2lnbmVkIHRvIHRoZSBwb3J0LgorCitTVEFURT17YWN0aXZlfHN0YW5kYnl8aW5hY3RpdmV9IC0gdGhlIG5ld2x5IGFzc3VtZWQgc3RhdGUgb2YgdGhlIHBvcnQuCisKK1doZW4gcnVuIG9uIEhpcGVyU29ja2V0cyBCcmlkZ2UgQ2FwYWJsZSBQb3J0IGhhcmR3YXJlIHdpdGggaG9zdCBhZGRyZXNzCitub3RpZmljYXRpb25zIGVuYWJsZWQsIGEgdWRldiBldmVudCB3aXRoIEFDVElPTj1DSEFOR0UgaXMgZW1pdHRlZC4KK0l0IGlzIGVtaXR0ZWQgb24gYmVoYWxmIG9mIHRoZSBjb3JyZXNwb25kaW5nIGNjd2dyb3VwIGRldmljZSB3aGVuIGEgaG9zdAorb3IgYSBWTEFOIGlzIHJlZ2lzdGVyZWQgb3IgdW5yZWdpc3RlcmVkIG9uIHRoZSBuZXR3b3JrIHNlcnZlZCBieSB0aGUgZGV2aWNlLgorVGhlIGV2ZW50IGhhcyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CisKK0JSSURHRURIT1NUPXtyZXNldHxyZWdpc3RlcnxkZXJlZ2lzdGVyfGFib3J0fSAtIGhvc3QgYWRkcmVzcworICBub3RpZmljYXRpb25zIGFyZSBzdGFydGVkIGFmcmVzaCwgYSBuZXcgaG9zdCBvciBWTEFOIGlzIHJlZ2lzdGVyZWQgb3IKKyAgZGVyZWdpc3RlcmVkIG9uIHRoZSBCcmlkZ2UgUG9ydCBIaXBlclNvY2tldHMgY2hhbm5lbCwgb3IgYWRkcmVzcworICBub3RpZmljYXRpb25zIGFyZSBhYm9ydGVkLgorCitWTEFOPW51bWVyaWMtdmxhbi1pZCAtIFZMQU4gSUQgb24gd2hpY2ggdGhlIGV2ZW50IG9jY3VycmVkLiBOb3QgaW5jbHVkZWQKKyAgaWYgbm8gVkxBTiBpcyBpbnZvbHZlZCBpbiB0aGUgZXZlbnQuCisKK01BQz14eDp4eDp4eDp4eDp4eDp4eCAtIE1BQyBhZGRyZXNzIG9mIHRoZSBob3N0IHRoYXQgaXMgYmVpbmcgcmVnaXN0ZXJlZAorICBvciBkZXJlZ2lzdGVyZWQgZnJvbSB0aGUgSGlwZXJTb2NrZXRzIGNoYW5uZWwuIE5vdCByZXBvcnRlZCBpZiB0aGUKKyAgZXZlbnQgcmVwb3J0cyB0aGUgY3JlYXRpb24gb3IgZGVzdHJ1Y3Rpb24gb2YgYSBWTEFOLgorCitOVE9LX0JVU0lEPXgueS56enp6IC0gZGV2aWNlIGJ1cyBJRCAoQ1NTSUQsIFNTSUQgYW5kIGRldmljZSBudW1iZXIpLgorCitOVE9LX0lJRD14eCAtIGRldmljZSBJSUQuCisKK05UT0tfQ0hQSUQ9eHggLSBkZXZpY2UgQ0hQSUQuCisKK05UT0tfQ0hJRD14eHh4IC0gZGV2aWNlIGNoYW5uZWwgSUQuCisKK05vdGUgdGhhdCB0aGUgTlRPS18qIGF0dHJpYnV0ZXMgcmVmZXIgdG8gZGV2aWNlcyBvdGhlciB0aGFuICB0aGUgb25lCitjb25uZWN0ZWQgdG8gdGhlIHN5c3RlbSBvbiB3aGljaCB0aGUgT1MgaXMgcnVubmluZy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vczM5MC9zMzkwZGJmLnR4dCBiL0RvY3VtZW50YXRpb24vczM5MC9zMzkwZGJmLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGExNjMzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zMzkwL3MzOTBkYmYudHh0CkBAIC0wLDAgKzEsNjY3IEBACitTMzkwIERlYnVnIEZlYXR1cmUKKz09PT09PT09PT09PT09PT09PQorCitmaWxlczogYXJjaC9zMzkwL2tlcm5lbC9kZWJ1Zy5jCisgICAgICAgYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2RlYnVnLmgKKworRGVzY3JpcHRpb246CistLS0tLS0tLS0tLS0KK1RoZSBnb2FsIG9mIHRoaXMgZmVhdHVyZSBpcyB0byBwcm92aWRlIGEga2VybmVsIGRlYnVnIGxvZ2dpbmcgQVBJIAord2hlcmUgbG9nIHJlY29yZHMgY2FuIGJlIHN0b3JlZCBlZmZpY2llbnRseSBpbiBtZW1vcnksIHdoZXJlIGVhY2ggY29tcG9uZW50IAorKGUuZy4gZGV2aWNlIGRyaXZlcnMpIGNhbiBoYXZlIG9uZSBzZXBhcmF0ZSBkZWJ1ZyBsb2cuCitPbmUgcHVycG9zZSBvZiB0aGlzIGlzIHRvIGluc3BlY3QgdGhlIGRlYnVnIGxvZ3MgYWZ0ZXIgYSBwcm9kdWN0aW9uIHN5c3RlbSBjcmFzaAoraW4gb3JkZXIgdG8gYW5hbHl6ZSB0aGUgcmVhc29uIGZvciB0aGUgY3Jhc2guCitJZiB0aGUgc3lzdGVtIHN0aWxsIHJ1bnMgYnV0IG9ubHkgYSBzdWJjb21wb25lbnQgd2hpY2ggdXNlcyBkYmYgZmFpbHMsCitpdCBpcyBwb3NzaWJsZSB0byBsb29rIGF0IHRoZSBkZWJ1ZyBsb2dzIG9uIGEgbGl2ZSBzeXN0ZW0gdmlhIHRoZSBMaW51eAorZGVidWdmcyBmaWxlc3lzdGVtLgorVGhlIGRlYnVnIGZlYXR1cmUgbWF5IGFsc28gdmVyeSB1c2VmdWwgZm9yIGtlcm5lbCBhbmQgZHJpdmVyIGRldmVsb3BtZW50LgorCitEZXNpZ246CistLS0tLS0tCitLZXJuZWwgY29tcG9uZW50cyAoZS5nLiBkZXZpY2UgZHJpdmVycykgY2FuIHJlZ2lzdGVyIHRoZW1zZWx2ZXMgYXQgdGhlIGRlYnVnIAorZmVhdHVyZSB3aXRoIHRoZSBmdW5jdGlvbiBjYWxsIGRlYnVnX3JlZ2lzdGVyKCkuIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgYSAKK2RlYnVnIGxvZyBmb3IgdGhlIGNhbGxlci4gRm9yIGVhY2ggZGVidWcgbG9nIGV4aXN0cyBhIG51bWJlciBvZiBkZWJ1ZyBhcmVhcyAKK3doZXJlIGV4YWN0bHkgb25lIGlzIGFjdGl2ZSBhdCBvbmUgdGltZS4gIEVhY2ggZGVidWcgYXJlYSBjb25zaXN0cyBvZiBjb250aWd1b3VzCitwYWdlcyBpbiBtZW1vcnkuIEluIHRoZSBkZWJ1ZyBhcmVhcyB0aGVyZSBhcmUgc3RvcmVkIGRlYnVnIGVudHJpZXMgKGxvZyByZWNvcmRzKQord2hpY2ggYXJlIHdyaXR0ZW4gYnkgZXZlbnQtIGFuZCBleGNlcHRpb24tY2FsbHMuIAorCitBbiBldmVudC1jYWxsIHdyaXRlcyB0aGUgc3BlY2lmaWVkIGRlYnVnIGVudHJ5IHRvIHRoZSBhY3RpdmUgZGVidWcKK2FyZWEgYW5kIHVwZGF0ZXMgdGhlIGxvZyBwb2ludGVyIGZvciB0aGUgYWN0aXZlIGFyZWEuIElmIHRoZSBlbmQgCitvZiB0aGUgYWN0aXZlIGRlYnVnIGFyZWEgaXMgcmVhY2hlZCwgYSB3cmFwIGFyb3VuZCBpcyBkb25lIChyaW5nIGJ1ZmZlcikgCithbmQgdGhlIG5leHQgZGVidWcgZW50cnkgd2lsbCBiZSB3cml0dGVuIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFjdGl2ZSAKK2RlYnVnIGFyZWEuCisKK0FuIGV4Y2VwdGlvbi1jYWxsIHdyaXRlcyB0aGUgc3BlY2lmaWVkIGRlYnVnIGVudHJ5IHRvIHRoZSBsb2cgYW5kCitzd2l0Y2hlcyB0byB0aGUgbmV4dCBkZWJ1ZyBhcmVhLiBUaGlzIGlzIGRvbmUgaW4gb3JkZXIgdG8gYmUgc3VyZQordGhhdCB0aGUgcmVjb3JkcyB3aGljaCBkZXNjcmliZSB0aGUgb3JpZ2luIG9mIHRoZSBleGNlcHRpb24gYXJlIG5vdAorb3ZlcndyaXR0ZW4gd2hlbiBhIHdyYXAgYXJvdW5kIGZvciB0aGUgY3VycmVudCBhcmVhIG9jY3Vycy4KKworVGhlIGRlYnVnIGFyZWFzIHRoZW1zZWx2ZXMgYXJlIGFsc28gb3JkZXJlZCBpbiBmb3JtIG9mIGEgcmluZyBidWZmZXIuCitXaGVuIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gaW4gdGhlIGxhc3QgZGVidWcgYXJlYSwgdGhlIGZvbGxvd2luZyBkZWJ1ZyAKK2VudHJpZXMgYXJlIHRoZW4gd3JpdHRlbiBhZ2FpbiBpbiB0aGUgdmVyeSBmaXJzdCBhcmVhLgorCitUaGVyZSBhcmUgdGhyZWUgdmVyc2lvbnMgZm9yIHRoZSBldmVudC0gYW5kIGV4Y2VwdGlvbi1jYWxsczogT25lIGZvcgorbG9nZ2luZyByYXcgZGF0YSwgb25lIGZvciB0ZXh0IGFuZCBvbmUgZm9yIG51bWJlcnMuCisKK0VhY2ggZGVidWcgZW50cnkgY29udGFpbnMgdGhlIGZvbGxvd2luZyBkYXRhOgorCistIFRpbWVzdGFtcAorLSBDcHUtTnVtYmVyIG9mIGNhbGxpbmcgdGFzaworLSBMZXZlbCBvZiBkZWJ1ZyBlbnRyeSAoMC4uLjYpCistIFJldHVybiBBZGRyZXNzIHRvIGNhbGxlcgorLSBGbGFnLCBpZiBlbnRyeSBpcyBhbiBleGNlcHRpb24gb3Igbm90CisKK1RoZSBkZWJ1ZyBsb2dzIGNhbiBiZSBpbnNwZWN0ZWQgaW4gYSBsaXZlIHN5c3RlbSB0aHJvdWdoIGVudHJpZXMgaW4KK3RoZSBkZWJ1Z2ZzLWZpbGVzeXN0ZW0uIFVuZGVyIHRoZSB0b3BsZXZlbCBkaXJlY3RvcnkgInMzOTBkYmYiIHRoZXJlIGlzCithIGRpcmVjdG9yeSBmb3IgZWFjaCByZWdpc3RlcmVkIGNvbXBvbmVudCwgd2hpY2ggaXMgbmFtZWQgbGlrZSB0aGUKK2NvcnJlc3BvbmRpbmcgY29tcG9uZW50LiBUaGUgZGVidWdmcyBub3JtYWxseSBzaG91bGQgYmUgbW91bnRlZCB0bworL3N5cy9rZXJuZWwvZGVidWcgdGhlcmVmb3JlIHRoZSBkZWJ1ZyBmZWF0dXJlIGNhbiBiZSBhY2Nlc3NlZCB1bmRlcgorL3N5cy9rZXJuZWwvZGVidWcvczM5MGRiZi4KKworVGhlIGNvbnRlbnQgb2YgdGhlIGRpcmVjdG9yaWVzIGFyZSBmaWxlcyB3aGljaCByZXByZXNlbnQgZGlmZmVyZW50IHZpZXdzCit0byB0aGUgZGVidWcgbG9nLiBFYWNoIGNvbXBvbmVudCBjYW4gZGVjaWRlIHdoaWNoIHZpZXdzIHNob3VsZCBiZQordXNlZCB0aHJvdWdoIHJlZ2lzdGVyaW5nIHRoZW0gd2l0aCB0aGUgZnVuY3Rpb24gZGVidWdfcmVnaXN0ZXJfdmlldygpLgorUHJlZGVmaW5lZCB2aWV3cyBmb3IgaGV4L2FzY2lpLCBzcHJpbnRmIGFuZCByYXcgYmluYXJ5IGRhdGEgYXJlIHByb3ZpZGVkLgorSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBkZWZpbmUgb3RoZXIgdmlld3MuIFRoZSBjb250ZW50IG9mCithIHZpZXcgY2FuIGJlIGluc3BlY3RlZCBzaW1wbHkgYnkgcmVhZGluZyB0aGUgY29ycmVzcG9uZGluZyBkZWJ1Z2ZzIGZpbGUuCisKK0FsbCBkZWJ1ZyBsb2dzIGhhdmUgYW4gYWN0dWFsIGRlYnVnIGxldmVsIChyYW5nZSBmcm9tIDAgdG8gNikuCitUaGUgZGVmYXVsdCBsZXZlbCBpcyAzLiBFdmVudCBhbmQgRXhjZXB0aW9uIGZ1bmN0aW9ucyBoYXZlIGEgJ2xldmVsJworcGFyYW1ldGVyLiBPbmx5IGRlYnVnIGVudHJpZXMgd2l0aCBhIGxldmVsIHRoYXQgaXMgbG93ZXIgb3IgZXF1YWwKK3RoYW4gdGhlIGFjdHVhbCBsZXZlbCBhcmUgd3JpdHRlbiB0byB0aGUgbG9nLiBUaGlzIG1lYW5zLCB3aGVuCit3cml0aW5nIGV2ZW50cywgaGlnaCBwcmlvcml0eSBsb2cgZW50cmllcyBzaG91bGQgaGF2ZSBhIGxvdyBsZXZlbAordmFsdWUgd2hlcmVhcyBsb3cgcHJpb3JpdHkgZW50cmllcyBzaG91bGQgaGF2ZSBhIGhpZ2ggb25lLgorVGhlIGFjdHVhbCBkZWJ1ZyBsZXZlbCBjYW4gYmUgY2hhbmdlZCB3aXRoIHRoZSBoZWxwIG9mIHRoZSBkZWJ1Z2ZzLWZpbGVzeXN0ZW0KK3Rocm91Z2ggd3JpdGluZyBhIG51bWJlciBzdHJpbmcgIngiIHRvIHRoZSAnbGV2ZWwnIGRlYnVnZnMgZmlsZSB3aGljaCBpcworcHJvdmlkZWQgZm9yIGV2ZXJ5IGRlYnVnIGxvZy4gRGVidWdnaW5nIGNhbiBiZSBzd2l0Y2hlZCBvZmYgY29tcGxldGVseQorYnkgdXNpbmcgIi0iIG9uIHRoZSAnbGV2ZWwnIGRlYnVnZnMgZmlsZS4KKworRXhhbXBsZToKKworPiBlY2hvICItIiA+IC9zeXMva2VybmVsL2RlYnVnL3MzOTBkYmYvZGFzZC9sZXZlbAorCitJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGRlYWN0aXZhdGUgdGhlIGRlYnVnIGZlYXR1cmUgZ2xvYmFsbHkgZm9yIGV2ZXJ5CitkZWJ1ZyBsb2cuIFlvdSBjYW4gY2hhbmdlIHRoZSBiZWhhdmlvciB1c2luZyAgMiBzeXNjdGwgcGFyYW1ldGVycyBpbgorL3Byb2Mvc3lzL3MzOTBkYmY6CitUaGVyZSBhcmUgY3VycmVudGx5IDIgcG9zc2libGUgdHJpZ2dlcnMsIHdoaWNoIHN0b3AgdGhlIGRlYnVnIGZlYXR1cmUKK2dsb2JhbGx5LiBUaGUgZmlyc3QgcG9zc2liaWxpdHkgaXMgdG8gdXNlIHRoZSAiZGVidWdfYWN0aXZlIiBzeXNjdGwuIElmCitzZXQgdG8gMSB0aGUgZGVidWcgZmVhdHVyZSBpcyBydW5uaW5nLiBJZiAiZGVidWdfYWN0aXZlIiBpcyBzZXQgdG8gMCB0aGUKK2RlYnVnIGZlYXR1cmUgaXMgdHVybmVkIG9mZi4KK1RoZSBzZWNvbmQgdHJpZ2dlciB3aGljaCBzdG9wcyB0aGUgZGVidWcgZmVhdHVyZSBpcyBhIGtlcm5lbCBvb3BzLgorVGhhdCBwcmV2ZW50cyB0aGUgZGVidWcgZmVhdHVyZSBmcm9tIG92ZXJ3cml0aW5nIGRlYnVnIGluZm9ybWF0aW9uIHRoYXQKK2hhcHBlbmVkIGJlZm9yZSB0aGUgb29wcy4gQWZ0ZXIgYW4gb29wcyB5b3UgY2FuIHJlYWN0aXZhdGUgdGhlIGRlYnVnIGZlYXR1cmUKK2J5IHBpcGluZyAxIHRvIC9wcm9jL3N5cy9zMzkwZGJmL2RlYnVnX2FjdGl2ZS4gTmV2ZXJ0aGVsZXNzLCBpdHMgbm90CitzdWdnZXN0ZWQgdG8gdXNlIGFuIG9vcHNlZCBrZXJuZWwgaW4gYSBwcm9kdWN0aW9uIGVudmlyb25tZW50LgorSWYgeW91IHdhbnQgdG8gZGlzYWxsb3cgdGhlIGRlYWN0aXZhdGlvbiBvZiB0aGUgZGVidWcgZmVhdHVyZSwgeW91IGNhbiB1c2UKK3RoZSAiZGVidWdfc3RvcHBhYmxlIiBzeXNjdGwuIElmIHlvdSBzZXQgImRlYnVnX3N0b3BwYWJsZSIgdG8gMCB0aGUgZGVidWcKK2ZlYXR1cmUgY2Fubm90IGJlIHN0b3BwZWQuIElmIHRoZSBkZWJ1ZyBmZWF0dXJlIGlzIGFscmVhZHkgc3RvcHBlZCwgaXQKK3dpbGwgc3RheSBkZWFjdGl2YXRlZC4KKworS2VybmVsIEludGVyZmFjZXM6CistLS0tLS0tLS0tLS0tLS0tLS0KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZGVidWdfaW5mb190ICpkZWJ1Z19yZWdpc3RlcihjaGFyICpuYW1lLCBpbnQgcGFnZXMsIGludCBucl9hcmVhcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ1Zl9zaXplKTsKKworUGFyYW1ldGVyOiAgICBuYW1lOiAgICAgICAgTmFtZSBvZiBkZWJ1ZyBsb2cgKGUuZy4gdXNlZCBmb3IgZGVidWdmcyBlbnRyeSkKKyAgICAgICAgICAgICAgcGFnZXM6ICAgICAgIG51bWJlciBvZiBwYWdlcywgd2hpY2ggd2lsbCBiZSBhbGxvY2F0ZWQgcGVyIGFyZWEKKyAgICAgICAgICAgICAgbnJfYXJlYXM6ICAgIG51bWJlciBvZiBkZWJ1ZyBhcmVhcworICAgICAgICAgICAgICBidWZfc2l6ZTogICAgc2l6ZSBvZiBkYXRhIGFyZWEgaW4gZWFjaCBkZWJ1ZyBlbnRyeQorCitSZXR1cm4gVmFsdWU6IEhhbmRsZSBmb3IgZ2VuZXJhdGVkIGRlYnVnIGFyZWEgICAKKyAgICAgICAgICAgICAgTlVMTCBpZiByZWdpc3RlciBmYWlsZWQgCisKK0Rlc2NyaXB0aW9uOiAgQWxsb2NhdGVzIG1lbW9yeSBmb3IgYSBkZWJ1ZyBsb2cgICAgIAorICAgICAgICAgICAgICBNdXN0IG5vdCBiZSBjYWxsZWQgd2l0aGluIGFuIGludGVycnVwdCBoYW5kbGVyIAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkZWJ1Z19pbmZvX3QgKmRlYnVnX3JlZ2lzdGVyX21vZGUoY2hhciAqbmFtZSwgaW50IHBhZ2VzLCBpbnQgbnJfYXJlYXMsCisJCQkJICBpbnQgYnVmX3NpemUsIG1vZGVfdCBtb2RlLCB1aWRfdCB1aWQsCisJCQkJICBnaWRfdCBnaWQpOworCitQYXJhbWV0ZXI6ICAgIG5hbWU6CSAgIE5hbWUgb2YgZGVidWcgbG9nIChlLmcuIHVzZWQgZm9yIGRlYnVnZnMgZW50cnkpCisJICAgICAgcGFnZXM6CSAgIE51bWJlciBvZiBwYWdlcywgd2hpY2ggd2lsbCBiZSBhbGxvY2F0ZWQgcGVyIGFyZWEKKwkgICAgICBucl9hcmVhczogICAgTnVtYmVyIG9mIGRlYnVnIGFyZWFzCisJICAgICAgYnVmX3NpemU6ICAgIFNpemUgb2YgZGF0YSBhcmVhIGluIGVhY2ggZGVidWcgZW50cnkKKwkgICAgICBtb2RlOgkgICBGaWxlIG1vZGUgZm9yIGRlYnVnZnMgZmlsZXMuIEUuZy4gU19JUldYVUdPCisJICAgICAgdWlkOgkgICBVc2VyIElEIGZvciBkZWJ1Z2ZzIGZpbGVzLiBDdXJyZW50bHkgb25seSAwIGlzCisJCQkgICBzdXBwb3J0ZWQuCisJICAgICAgZ2lkOgkgICBHcm91cCBJRCBmb3IgZGVidWdmcyBmaWxlcy4gQ3VycmVudGx5IG9ubHkgMCBpcworCQkJICAgc3VwcG9ydGVkLgorCitSZXR1cm4gVmFsdWU6IEhhbmRsZSBmb3IgZ2VuZXJhdGVkIGRlYnVnIGFyZWEKKwkgICAgICBOVUxMIGlmIHJlZ2lzdGVyIGZhaWxlZAorCitEZXNjcmlwdGlvbjogIEFsbG9jYXRlcyBtZW1vcnkgZm9yIGEgZGVidWcgbG9nCisJICAgICAgTXVzdCBub3QgYmUgY2FsbGVkIHdpdGhpbiBhbiBpbnRlcnJ1cHQgaGFuZGxlcgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3ZvaWQgZGVidWdfdW5yZWdpc3RlciAoZGVidWdfaW5mb190ICogaWQpOworCitQYXJhbWV0ZXI6ICAgICBpZDogICBoYW5kbGUgZm9yIGRlYnVnIGxvZyAgCisKK1JldHVybiBWYWx1ZTogIG5vbmUgCisKK0Rlc2NyaXB0aW9uOiAgIGZyZWVzIG1lbW9yeSBmb3IgYSBkZWJ1ZyBsb2cgYW5kIHJlbW92ZXMgYWxsIHJlZ2lzdGVyZWQgZGVidWcKKwkgICAgICAgdmlld3MuCisgICAgICAgICAgICAgICBNdXN0IG5vdCBiZSBjYWxsZWQgd2l0aGluIGFuIGludGVycnVwdCBoYW5kbGVyIAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3ZvaWQgZGVidWdfc2V0X2xldmVsIChkZWJ1Z19pbmZvX3QgKiBpZCwgaW50IG5ld19sZXZlbCk7CisKK1BhcmFtZXRlcjogICAgIGlkOiAgICAgICAgaGFuZGxlIGZvciBkZWJ1ZyBsb2cgIAorICAgICAgICAgICAgICAgbmV3X2xldmVsOiBuZXcgZGVidWcgbGV2ZWwgCisKK1JldHVybiBWYWx1ZTogIG5vbmUgCisKK0Rlc2NyaXB0aW9uOiAgIFNldHMgbmV3IGFjdHVhbCBkZWJ1ZyBsZXZlbCBpZiBuZXdfbGV2ZWwgaXMgdmFsaWQuIAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2Jvb2wgZGVidWdfbGV2ZWxfZW5hYmxlZCAoZGVidWdfaW5mb190ICogaWQsIGludCBsZXZlbCk7CisKK1BhcmFtZXRlcjogICAgaWQ6CSAgaGFuZGxlIGZvciBkZWJ1ZyBsb2cKKwkgICAgICBsZXZlbDoJICBkZWJ1ZyBsZXZlbAorCitSZXR1cm4gVmFsdWU6IFRydWUgaWYgbGV2ZWwgaXMgbGVzcyBvciBlcXVhbCB0byB0aGUgY3VycmVudCBkZWJ1ZyBsZXZlbC4KKworRGVzY3JpcHRpb246ICBSZXR1cm5zIHRydWUgaWYgZGVidWcgZXZlbnRzIGZvciB0aGUgc3BlY2lmaWVkIGxldmVsIHdvdWxkIGJlCisJICAgICAgbG9nZ2VkLiBPdGhlcndpc2UgcmV0dXJucyBmYWxzZS4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordm9pZCBkZWJ1Z19zdG9wX2FsbCh2b2lkKTsKKworUGFyYW1ldGVyOiAgICAgbm9uZQorCitSZXR1cm4gVmFsdWU6ICBub25lCisKK0Rlc2NyaXB0aW9uOiAgIHN0b3BzIHRoZSBkZWJ1ZyBmZWF0dXJlIGlmIHN0b3BwaW5nIGlzIGFsbG93ZWQuIEN1cnJlbnRseQorICAgICAgICAgICAgICAgdXNlZCBpbiBjYXNlIG9mIGEga2VybmVsIG9vcHMuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZGVidWdfZW50cnlfdCogZGVidWdfZXZlbnQgKGRlYnVnX2luZm9fdCogaWQsIGludCBsZXZlbCwgdm9pZCogZGF0YSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aCk7CisKK1BhcmFtZXRlcjogICAgIGlkOiAgICAgaGFuZGxlIGZvciBkZWJ1ZyBsb2cgIAorICAgICAgICAgICAgICAgbGV2ZWw6ICBkZWJ1ZyBsZXZlbCAgICAgICAgICAgCisgICAgICAgICAgICAgICBkYXRhOiAgIHBvaW50ZXIgdG8gZGF0YSBmb3IgZGVidWcgZW50cnkgIAorICAgICAgICAgICAgICAgbGVuZ3RoOiBsZW5ndGggb2YgZGF0YSBpbiBieXRlcyAgICAgICAKKworUmV0dXJuIFZhbHVlOiAgQWRkcmVzcyBvZiB3cml0dGVuIGRlYnVnIGVudHJ5IAorCitEZXNjcmlwdGlvbjogICB3cml0ZXMgZGVidWcgZW50cnkgdG8gYWN0aXZlIGRlYnVnIGFyZWEgKGlmIGxldmVsIDw9IGFjdHVhbCAKKyAgICAgICAgICAgICAgIGRlYnVnIGxldmVsKSAgICAKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkZWJ1Z19lbnRyeV90KiBkZWJ1Z19pbnRfZXZlbnQgKGRlYnVnX2luZm9fdCAqIGlkLCBpbnQgbGV2ZWwsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGF0YSk7CitkZWJ1Z19lbnRyeV90KiBkZWJ1Z19sb25nX2V2ZW50KGRlYnVnX2luZm9fdCAqIGlkLCBpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YSk7CisKK1BhcmFtZXRlcjogICAgIGlkOiAgICAgaGFuZGxlIGZvciBkZWJ1ZyBsb2cgIAorICAgICAgICAgICAgICAgbGV2ZWw6ICBkZWJ1ZyBsZXZlbCAgICAgICAgICAgCisgICAgICAgICAgICAgICBkYXRhOiAgIGludGVnZXIgdmFsdWUgZm9yIGRlYnVnIGVudHJ5ICAgICAgICAgICAKKworUmV0dXJuIFZhbHVlOiAgQWRkcmVzcyBvZiB3cml0dGVuIGRlYnVnIGVudHJ5IAorCitEZXNjcmlwdGlvbjogICB3cml0ZXMgZGVidWcgZW50cnkgdG8gYWN0aXZlIGRlYnVnIGFyZWEgKGlmIGxldmVsIDw9IGFjdHVhbCAKKyAgICAgICAgICAgICAgIGRlYnVnIGxldmVsKSAgICAKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkZWJ1Z19lbnRyeV90KiBkZWJ1Z190ZXh0X2V2ZW50IChkZWJ1Z19pbmZvX3QgKiBpZCwgaW50IGxldmVsLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEpOworCitQYXJhbWV0ZXI6ICAgICBpZDogICAgIGhhbmRsZSBmb3IgZGVidWcgbG9nICAKKyAgICAgICAgICAgICAgIGxldmVsOiAgZGVidWcgbGV2ZWwgICAgICAgICAgIAorICAgICAgICAgICAgICAgZGF0YTogICBzdHJpbmcgZm9yIGRlYnVnIGVudHJ5ICAKKworUmV0dXJuIFZhbHVlOiAgQWRkcmVzcyBvZiB3cml0dGVuIGRlYnVnIGVudHJ5IAorCitEZXNjcmlwdGlvbjogICB3cml0ZXMgZGVidWcgZW50cnkgaW4gYXNjaWkgZm9ybWF0IHRvIGFjdGl2ZSBkZWJ1ZyBhcmVhIAorICAgICAgICAgICAgICAgKGlmIGxldmVsIDw9IGFjdHVhbCBkZWJ1ZyBsZXZlbCkgICAgIAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RlYnVnX2VudHJ5X3QqIGRlYnVnX3NwcmludGZfZXZlbnQgKGRlYnVnX2luZm9fdCAqIGlkLCBpbnQgbGV2ZWwsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciogc3RyaW5nLC4uLik7CisKK1BhcmFtZXRlcjogICAgIGlkOiAgICBoYW5kbGUgZm9yIGRlYnVnIGxvZyAKKyAgICAgICAgICAgICAgIGxldmVsOiBkZWJ1ZyBsZXZlbAorICAgICAgICAgICAgICAgc3RyaW5nOiBmb3JtYXQgc3RyaW5nIGZvciBkZWJ1ZyBlbnRyeSAKKyAgICAgICAgICAgICAgIC4uLjogdmFyYXJncyB1c2VkIGFzIGluIHNwcmludGYoKQorCitSZXR1cm4gVmFsdWU6ICBBZGRyZXNzIG9mIHdyaXR0ZW4gZGVidWcgZW50cnkKKworRGVzY3JpcHRpb246ICAgd3JpdGVzIGRlYnVnIGVudHJ5IHdpdGggZm9ybWF0IHN0cmluZyBhbmQgdmFyYXJncyAobG9uZ3MpIHRvIAorICAgICAgICAgICAgICAgYWN0aXZlIGRlYnVnIGFyZWEgKGlmIGxldmVsICQ8PSQgYWN0dWFsIGRlYnVnIGxldmVsKS4gCisgICAgICAgICAgICAgICBmbG9hdHMgYW5kIGxvbmcgbG9uZyBkYXRhdHlwZXMgY2Fubm90IGJlIHVzZWQgYXMgdmFyYXJncy4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2RlYnVnX2VudHJ5X3QqIGRlYnVnX2V4Y2VwdGlvbiAoZGVidWdfaW5mb190KiBpZCwgaW50IGxldmVsLCB2b2lkKiBkYXRhLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aCk7CisKK1BhcmFtZXRlcjogICAgIGlkOiAgICAgaGFuZGxlIGZvciBkZWJ1ZyBsb2cgIAorICAgICAgICAgICAgICAgbGV2ZWw6ICBkZWJ1ZyBsZXZlbCAgICAgICAgICAgCisgICAgICAgICAgICAgICBkYXRhOiAgIHBvaW50ZXIgdG8gZGF0YSBmb3IgZGVidWcgZW50cnkgIAorICAgICAgICAgICAgICAgbGVuZ3RoOiBsZW5ndGggb2YgZGF0YSBpbiBieXRlcyAgICAgICAKKworUmV0dXJuIFZhbHVlOiAgQWRkcmVzcyBvZiB3cml0dGVuIGRlYnVnIGVudHJ5IAorCitEZXNjcmlwdGlvbjogICB3cml0ZXMgZGVidWcgZW50cnkgdG8gYWN0aXZlIGRlYnVnIGFyZWEgKGlmIGxldmVsIDw9IGFjdHVhbCAKKyAgICAgICAgICAgICAgIGRlYnVnIGxldmVsKSBhbmQgc3dpdGNoZXMgdG8gbmV4dCBkZWJ1ZyBhcmVhICAKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkZWJ1Z19lbnRyeV90KiBkZWJ1Z19pbnRfZXhjZXB0aW9uIChkZWJ1Z19pbmZvX3QgKiBpZCwgaW50IGxldmVsLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkYXRhKTsKK2RlYnVnX2VudHJ5X3QqIGRlYnVnX2xvbmdfZXhjZXB0aW9uKGRlYnVnX2luZm9fdCAqIGlkLCBpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGEpOworCitQYXJhbWV0ZXI6ICAgICBpZDogICAgIGhhbmRsZSBmb3IgZGVidWcgbG9nICAKKyAgICAgICAgICAgICAgIGxldmVsOiAgZGVidWcgbGV2ZWwgICAgICAgICAgIAorICAgICAgICAgICAgICAgZGF0YTogICBpbnRlZ2VyIHZhbHVlIGZvciBkZWJ1ZyBlbnRyeSAgICAgICAgICAgCisKK1JldHVybiBWYWx1ZTogIEFkZHJlc3Mgb2Ygd3JpdHRlbiBkZWJ1ZyBlbnRyeSAKKworRGVzY3JpcHRpb246ICAgd3JpdGVzIGRlYnVnIGVudHJ5IHRvIGFjdGl2ZSBkZWJ1ZyBhcmVhIChpZiBsZXZlbCA8PSBhY3R1YWwgCisgICAgICAgICAgICAgICBkZWJ1ZyBsZXZlbCkgYW5kIHN3aXRjaGVzIHRvIG5leHQgZGVidWcgYXJlYSAgCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZGVidWdfZW50cnlfdCogZGVidWdfdGV4dF9leGNlcHRpb24gKGRlYnVnX2luZm9fdCAqIGlkLCBpbnQgbGV2ZWwsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEpOworCitQYXJhbWV0ZXI6ICAgICBpZDogICAgIGhhbmRsZSBmb3IgZGVidWcgbG9nICAKKyAgICAgICAgICAgICAgIGxldmVsOiAgZGVidWcgbGV2ZWwgICAgICAgICAgIAorICAgICAgICAgICAgICAgZGF0YTogICBzdHJpbmcgZm9yIGRlYnVnIGVudHJ5ICAKKworUmV0dXJuIFZhbHVlOiAgQWRkcmVzcyBvZiB3cml0dGVuIGRlYnVnIGVudHJ5IAorCitEZXNjcmlwdGlvbjogICB3cml0ZXMgZGVidWcgZW50cnkgaW4gYXNjaWkgZm9ybWF0IHRvIGFjdGl2ZSBkZWJ1ZyBhcmVhIAorICAgICAgICAgICAgICAgKGlmIGxldmVsIDw9IGFjdHVhbCBkZWJ1ZyBsZXZlbCkgYW5kIHN3aXRjaGVzIHRvIG5leHQgZGVidWcgCisgICAgICAgICAgICAgICBhcmVhICAKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkZWJ1Z19lbnRyeV90KiBkZWJ1Z19zcHJpbnRmX2V4Y2VwdGlvbiAoZGVidWdfaW5mb190ICogaWQsIGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyKiBzdHJpbmcsLi4uKTsKKworUGFyYW1ldGVyOiAgICAgaWQ6ICAgIGhhbmRsZSBmb3IgZGVidWcgbG9nICAKKyAgICAgICAgICAgICAgIGxldmVsOiBkZWJ1ZyBsZXZlbCAgCisgICAgICAgICAgICAgICBzdHJpbmc6IGZvcm1hdCBzdHJpbmcgZm9yIGRlYnVnIGVudHJ5ICAKKyAgICAgICAgICAgICAgIC4uLjogdmFyYXJncyB1c2VkIGFzIGluIHNwcmludGYoKQorCitSZXR1cm4gVmFsdWU6ICBBZGRyZXNzIG9mIHdyaXR0ZW4gZGVidWcgZW50cnkgCisKK0Rlc2NyaXB0aW9uOiAgIHdyaXRlcyBkZWJ1ZyBlbnRyeSB3aXRoIGZvcm1hdCBzdHJpbmcgYW5kIHZhcmFyZ3MgKGxvbmdzKSB0byAKKyAgICAgICAgICAgICAgIGFjdGl2ZSBkZWJ1ZyBhcmVhIChpZiBsZXZlbCAkPD0kIGFjdHVhbCBkZWJ1ZyBsZXZlbCkgYW5kCisgICAgICAgICAgICAgICBzd2l0Y2hlcyB0byBuZXh0IGRlYnVnIGFyZWEuIAorICAgICAgICAgICAgICAgZmxvYXRzIGFuZCBsb25nIGxvbmcgZGF0YXR5cGVzIGNhbm5vdCBiZSB1c2VkIGFzIHZhcmFyZ3MuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbnQgZGVidWdfcmVnaXN0ZXJfdmlldyAoZGVidWdfaW5mb190ICogaWQsIHN0cnVjdCBkZWJ1Z192aWV3ICp2aWV3KTsKKworUGFyYW1ldGVyOiAgICAgaWQ6ICAgIGhhbmRsZSBmb3IgZGVidWcgbG9nICAKKyAgICAgICAgICAgICAgIHZpZXc6ICBwb2ludGVyIHRvIGRlYnVnIHZpZXcgc3RydWN0IAorCitSZXR1cm4gVmFsdWU6ICAwICA6IG9rIAorICAgICAgICAgICAgICAgPCAwOiBFcnJvciAKKworRGVzY3JpcHRpb246ICAgcmVnaXN0ZXJzIG5ldyBkZWJ1ZyB2aWV3IGFuZCBjcmVhdGVzIGRlYnVnZnMgZGlyIGVudHJ5CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoraW50IGRlYnVnX3VucmVnaXN0ZXJfdmlldyAoZGVidWdfaW5mb190ICogaWQsIHN0cnVjdCBkZWJ1Z192aWV3ICp2aWV3KTsgCisKK1BhcmFtZXRlcjogICAgIGlkOiAgICBoYW5kbGUgZm9yIGRlYnVnIGxvZyAgCisgICAgICAgICAgICAgICB2aWV3OiAgcG9pbnRlciB0byBkZWJ1ZyB2aWV3IHN0cnVjdCAKKworUmV0dXJuIFZhbHVlOiAgMCAgOiBvayAKKyAgICAgICAgICAgICAgIDwgMDogRXJyb3IgCisKK0Rlc2NyaXB0aW9uOiAgIHVucmVnaXN0ZXJzIGRlYnVnIHZpZXcgYW5kIHJlbW92ZXMgZGVidWdmcyBkaXIgZW50cnkKKworCisKK1ByZWRlZmluZWQgdmlld3M6CistLS0tLS0tLS0tLS0tLS0tLQorCitleHRlcm4gc3RydWN0IGRlYnVnX3ZpZXcgZGVidWdfaGV4X2FzY2lpX3ZpZXc7CitleHRlcm4gc3RydWN0IGRlYnVnX3ZpZXcgZGVidWdfcmF3X3ZpZXc7CitleHRlcm4gc3RydWN0IGRlYnVnX3ZpZXcgZGVidWdfc3ByaW50Zl92aWV3OworCitFeGFtcGxlcworLS0tLS0tLS0KKworLyoKKyAqIGhleF9hc2NpaS0gKyByYXctdmlldyBFeGFtcGxlCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxhc20vZGVidWcuaD4KKworc3RhdGljIGRlYnVnX2luZm9fdCogZGVidWdfaW5mbzsKKworc3RhdGljIGludCBpbml0KHZvaWQpCit7CisgICAgLyogcmVnaXN0ZXIgNCBkZWJ1ZyBhcmVhcyB3aXRoIG9uZSBwYWdlIGVhY2ggYW5kIDQgYnl0ZSBkYXRhIGZpZWxkICovCisKKyAgICBkZWJ1Z19pbmZvID0gZGVidWdfcmVnaXN0ZXIgKCJ0ZXN0IiwgMSwgNCwgNCApOworICAgIGRlYnVnX3JlZ2lzdGVyX3ZpZXcoZGVidWdfaW5mbywmZGVidWdfaGV4X2FzY2lpX3ZpZXcpOworICAgIGRlYnVnX3JlZ2lzdGVyX3ZpZXcoZGVidWdfaW5mbywmZGVidWdfcmF3X3ZpZXcpOworCisgICAgZGVidWdfdGV4dF9ldmVudChkZWJ1Z19pbmZvLCA0ICwgIm9uZSAiKTsKKyAgICBkZWJ1Z19pbnRfZXhjZXB0aW9uKGRlYnVnX2luZm8sIDQsIDQ3MTEpOworICAgIGRlYnVnX2V2ZW50KGRlYnVnX2luZm8sIDMsICZkZWJ1Z19pbmZvLCA0KTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBjbGVhbnVwKHZvaWQpCit7CisgICAgZGVidWdfdW5yZWdpc3RlciAoZGVidWdfaW5mbyk7Cit9CisKK21vZHVsZV9pbml0KGluaXQpOworbW9kdWxlX2V4aXQoY2xlYW51cCk7CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvKgorICogc3ByaW50Zi12aWV3IEV4YW1wbGUKKyAqLworCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGFzbS9kZWJ1Zy5oPgorCitzdGF0aWMgZGVidWdfaW5mb190KiBkZWJ1Z19pbmZvOworCitzdGF0aWMgaW50IGluaXQodm9pZCkKK3sKKyAgICAvKiByZWdpc3RlciA0IGRlYnVnIGFyZWFzIHdpdGggb25lIHBhZ2UgZWFjaCBhbmQgZGF0YSBmaWVsZCBmb3IgKi8KKyAgICAvKiBmb3JtYXQgc3RyaW5nIHBvaW50ZXIgKyAyIHZhcmFyZ3MgKD0gMyAqIHNpemVvZihsb25nKSkgICAgICAgKi8KKworICAgIGRlYnVnX2luZm8gPSBkZWJ1Z19yZWdpc3RlciAoInRlc3QiLCAxLCA0LCBzaXplb2YobG9uZykgKiAzKTsKKyAgICBkZWJ1Z19yZWdpc3Rlcl92aWV3KGRlYnVnX2luZm8sJmRlYnVnX3NwcmludGZfdmlldyk7CisKKyAgICBkZWJ1Z19zcHJpbnRmX2V2ZW50KGRlYnVnX2luZm8sIDIgLCAiZmlyc3QgZXZlbnQgaW4gJXM6JWlcbiIsX19GSUxFX18sX19MSU5FX18pOworICAgIGRlYnVnX3NwcmludGZfZXhjZXB0aW9uKGRlYnVnX2luZm8sIDEsICJwb2ludGVyIHRvIGRlYnVnIGluZm86ICVwXG4iLCZkZWJ1Z19pbmZvKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBjbGVhbnVwKHZvaWQpCit7CisgICAgZGVidWdfdW5yZWdpc3RlciAoZGVidWdfaW5mbyk7Cit9CisKK21vZHVsZV9pbml0KGluaXQpOworbW9kdWxlX2V4aXQoY2xlYW51cCk7CisKKworCitEZWJ1Z2ZzIEludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tLQorVmlld3MgdG8gdGhlIGRlYnVnIGxvZ3MgY2FuIGJlIGludmVzdGlnYXRlZCB0aHJvdWdoIHJlYWRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgCitkZWJ1Z2ZzLWZpbGVzOgorCitFeGFtcGxlOgorCis+IGxzIC9zeXMva2VybmVsL2RlYnVnL3MzOTBkYmYvZGFzZAorZmx1c2ggIGhleF9hc2NpaSAgbGV2ZWwgcGFnZXMgcmF3Cis+IGNhdCAvc3lzL2tlcm5lbC9kZWJ1Zy9zMzkwZGJmL2Rhc2QvaGV4X2FzY2lpIHwgc29ydCArMQorMDAgMDA5NzQ3MzMyNzI6NjgwMDk5IDIgLSAwMiAwMDA2YWQ3ZSAgMDcgZWEgNGEgOTAgfCAuLi4uCiswMCAwMDk3NDczMzI3Mjo2ODIyMTAgMiAtIDAyIDAwMDZhZGU2ICA0NiA1MiA0NSA0NSB8IEZSRUUKKzAwIDAwOTc0NzMzMjcyOjY4MjIxMyAyIC0gMDIgMDAwNmFkZjYgIDA3IGVhIDRhIDkwIHwgLi4uLgorMDAgMDA5NzQ3MzMyNzI6NjgyMjgxIDEgKiAwMiAwMDA2YWIwOCAgNDEgNGMgNGMgNDMgfCBFWENQIAorMDEgMDA5NzQ3MzMyNzI6NjgyMjg0IDIgLSAwMiAwMDA2YWIxNiAgNDUgNDMgNGIgNDQgfCBFQ0tECiswMSAwMDk3NDczMzI3Mjo2ODIyODcgMiAtIDAyIDAwMDZhYjI4ICAwMCAwMCAwMCAwNCB8IC4uLi4KKzAxIDAwOTc0NzMzMjcyOjY4MjI4OSAyIC0gMDIgMDAwNmFiM2UgIDAwIDAwIDAwIDIwIHwgLi4uIAorMDEgMDA5NzQ3MzMyNzI6NjgyMjk3IDIgLSAwMiAwMDA2YWQ3ZSAgMDcgZWEgNGEgOTAgfCAuLi4uCiswMSAwMDk3NDczMzI3Mjo2ODQzODQgMiAtIDAwIDAwMDZhZGU2ICA0NiA1MiA0NSA0NSB8IEZSRUUKKzAxIDAwOTc0NzMzMjcyOjY4NDM4OCAyIC0gMDAgMDAwNmFkZjYgIDA3IGVhIDRhIDkwIHwgLi4uLgorCitTZWUgc2VjdGlvbiBhYm91dCBwcmVkZWZpbmVkIHZpZXdzIGZvciBleHBsYW5hdGlvbiBvZiB0aGUgYWJvdmUgb3V0cHV0IQorCitDaGFuZ2luZyB0aGUgZGVidWcgbGV2ZWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFeGFtcGxlOgorCisKKz4gY2F0IC9zeXMva2VybmVsL2RlYnVnL3MzOTBkYmYvZGFzZC9sZXZlbAorMworPiBlY2hvICI1IiA+IC9zeXMva2VybmVsL2RlYnVnL3MzOTBkYmYvZGFzZC9sZXZlbAorPiBjYXQgL3N5cy9rZXJuZWwvZGVidWcvczM5MGRiZi9kYXNkL2xldmVsCis1CisKK0ZsdXNoaW5nIGRlYnVnIGFyZWFzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorRGVidWcgYXJlYXMgY2FuIGJlIGZsdXNoZWQgd2l0aCBwaXBpbmcgdGhlIG51bWJlciBvZiB0aGUgZGVzaXJlZAorYXJlYSAoMC4uLm4pIHRvIHRoZSBkZWJ1Z2ZzIGZpbGUgImZsdXNoIi4gV2hlbiB1c2luZyAiLSIgYWxsIGRlYnVnIGFyZWFzCithcmUgZmx1c2hlZC4KKworRXhhbXBsZXM6CisKKzEuIEZsdXNoIGRlYnVnIGFyZWEgMDoKKz4gZWNobyAiMCIgPiAvc3lzL2tlcm5lbC9kZWJ1Zy9zMzkwZGJmL2Rhc2QvZmx1c2gKKworMi4gRmx1c2ggYWxsIGRlYnVnIGFyZWFzOgorPiBlY2hvICItIiA+IC9zeXMva2VybmVsL2RlYnVnL3MzOTBkYmYvZGFzZC9mbHVzaAorCitDaGFuZ2luZyB0aGUgc2l6ZSBvZiBkZWJ1ZyBhcmVhcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJdCBpcyBwb3NzaWJsZSB0aGUgY2hhbmdlIHRoZSBzaXplIG9mIGRlYnVnIGFyZWFzIHRocm91Z2ggcGlwaW5nCit0aGUgbnVtYmVyIG9mIHBhZ2VzIHRvIHRoZSBkZWJ1Z2ZzIGZpbGUgInBhZ2VzIi4gVGhlIHJlc2l6ZSByZXF1ZXN0IHdpbGwKK2Fsc28gZmx1c2ggdGhlIGRlYnVnIGFyZWFzLgorCitFeGFtcGxlOgorCitEZWZpbmUgNCBwYWdlcyBmb3IgdGhlIGRlYnVnIGFyZWFzIG9mIGRlYnVnIGZlYXR1cmUgImRhc2QiOgorPiBlY2hvICI0IiA+IC9zeXMva2VybmVsL2RlYnVnL3MzOTBkYmYvZGFzZC9wYWdlcworCitTdG9vcGluZyB0aGUgZGVidWcgZmVhdHVyZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0V4YW1wbGU6CisKKzEuIENoZWNrIGlmIHN0b3BwaW5nIGlzIGFsbG93ZWQKKz4gY2F0IC9wcm9jL3N5cy9zMzkwZGJmL2RlYnVnX3N0b3BwYWJsZQorMi4gU3RvcCBkZWJ1ZyBmZWF0dXJlCis+IGVjaG8gMCA+IC9wcm9jL3N5cy9zMzkwZGJmL2RlYnVnX2FjdGl2ZQorCitsY3Jhc2ggSW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0tCitJdCBpcyBwbGFubmVkIHRoYXQgdGhlIGR1bXAgYW5hbHlzaXMgdG9vbCBsY3Jhc2ggZ2V0cyBhbiBhZGRpdGlvbmFsIGNvbW1hbmQKKydzMzkwZGJmJyB0byBkaXNwbGF5IGFsbCB0aGUgZGVidWcgbG9ncy4gV2l0aCB0aGlzIHRvb2wgaXQgd2lsbCBiZSBwb3NzaWJsZSAKK3RvIGludmVzdGlnYXRlIHRoZSBkZWJ1ZyBsb2dzIG9uIGEgbGl2ZSBzeXN0ZW0gYW5kIHdpdGggYSBtZW1vcnkgZHVtcCBhZnRlciAKK2Egc3lzdGVtIGNyYXNoLgorCitJbnZlc3RpZ2F0aW5nIHJhdyBtZW1vcnkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorT25lIGxhc3QgcG9zc2liaWxpdHkgdG8gaW52ZXN0aWdhdGUgdGhlIGRlYnVnIGxvZ3MgYXQgYSBsaXZlCitzeXN0ZW0gYW5kIGFmdGVyIGEgc3lzdGVtIGNyYXNoIGlzIHRvIGxvb2sgYXQgdGhlIHJhdyBtZW1vcnkKK3VuZGVyIFZNIG9yIGF0IHRoZSBTZXJ2aWNlIEVsZW1lbnQuCitJdCBpcyBwb3NzaWJsZSB0byBmaW5kIHRoZSBhbmtlciBvZiB0aGUgZGVidWctbG9ncyB0aHJvdWdoCit0aGUgJ2RlYnVnX2FyZWFfZmlyc3QnIHN5bWJvbCBpbiB0aGUgU3lzdGVtIG1hcC4gVGhlbiBvbmUgaGFzCit0byBmb2xsb3cgdGhlIGNvcnJlY3QgcG9pbnRlcnMgb2YgdGhlIGRhdGEtc3RydWN0dXJlcyBkZWZpbmVkCitpbiBkZWJ1Zy5oIGFuZCBmaW5kIHRoZSBkZWJ1Zy1hcmVhcyBpbiBtZW1vcnkuCitOb3JtYWxseSBtb2R1bGVzIHdoaWNoIHVzZSB0aGUgZGVidWcgZmVhdHVyZSB3aWxsIGFsc28gaGF2ZQorYSBnbG9iYWwgdmFyaWFibGUgd2l0aCB0aGUgcG9pbnRlciB0byB0aGUgZGVidWctbG9ncy4gRm9sbG93aW5nCit0aGlzIHBvaW50ZXIgaXQgd2lsbCBhbHNvIGJlIHBvc3NpYmxlIHRvIGZpbmQgdGhlIGRlYnVnIGxvZ3MgaW4KK21lbW9yeS4KKworRm9yIHRoaXMgbWV0aG9kIGl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSAnMTYgKiB4ICsgNCcgYnl0ZSAoeCA9IDAuLm4pCitmb3IgdGhlIGxlbmd0aCBvZiB0aGUgZGF0YSBmaWVsZCBpbiBkZWJ1Z19yZWdpc3RlcigpIGluCitvcmRlciB0byBzZWUgdGhlIGRlYnVnIGVudHJpZXMgd2VsbCBmb3JtYXR0ZWQuCisKKworUHJlZGVmaW5lZCBWaWV3cworLS0tLS0tLS0tLS0tLS0tLQorCitUaGVyZSBhcmUgdGhyZWUgcHJlZGVmaW5lZCB2aWV3czogaGV4X2FzY2lpLCByYXcgYW5kIHNwcmludGYuIAorVGhlIGhleF9hc2NpaSB2aWV3IHNob3dzIHRoZSBkYXRhIGZpZWxkIGluIGhleCBhbmQgYXNjaWkgcmVwcmVzZW50YXRpb24gCisoZS5nLiAnNDUgNDMgNGIgNDQgfCBFQ0tEJykuIAorVGhlIHJhdyB2aWV3IHJldHVybnMgYSBieXRlc3RyZWFtIGFzIHRoZSBkZWJ1ZyBhcmVhcyBhcmUgc3RvcmVkIGluIG1lbW9yeS4KKworVGhlIHNwcmludGYgdmlldyBmb3JtYXRzIHRoZSBkZWJ1ZyBlbnRyaWVzIGluIHRoZSBzYW1lIHdheSBhcyB0aGUgc3ByaW50ZgorZnVuY3Rpb24gd291bGQgZG8uIFRoZSBzcHJpbnRmIGV2ZW50L2V4Y2VwdGlvbiBmdW5jdGlvbnMgd3JpdGUgdG8gdGhlCitkZWJ1ZyBlbnRyeSBhIHBvaW50ZXIgdG8gdGhlIGZvcm1hdCBzdHJpbmcgKHNpemUgPSBzaXplb2YobG9uZykpIAorYW5kIGZvciBlYWNoIHZhcmFyZyBhIGxvbmcgdmFsdWUuIFNvIGUuZy4gZm9yIGEgZGVidWcgZW50cnkgd2l0aCBhIGZvcm1hdCAKK3N0cmluZyBwbHVzIHR3byB2YXJhcmdzIG9uZSB3b3VsZCBuZWVkIHRvIGFsbG9jYXRlIGEgKDMgKiBzaXplb2YobG9uZykpIAorYnl0ZSBkYXRhIGFyZWEgaW4gdGhlIGRlYnVnX3JlZ2lzdGVyKCkgZnVuY3Rpb24uCisKK0lNUE9SVEFOVDogVXNpbmcgIiVzIiBpbiBzcHJpbnRmIGV2ZW50IGZ1bmN0aW9ucyBpcyBkYW5nZXJvdXMuIFlvdSBjYW4gb25seQordXNlICIlcyIgaW4gdGhlIHNwcmludGYgZXZlbnQgZnVuY3Rpb25zLCBpZiB0aGUgbWVtb3J5IGZvciB0aGUgcGFzc2VkIHN0cmluZyBpcworYXZhaWxhYmxlIGFzIGxvbmcgYXMgdGhlIGRlYnVnIGZlYXR1cmUgZXhpc3RzLiBUaGUgcmVhc29uIGJlaGluZCB0aGlzIGlzIHRoYXQKK2R1ZSB0byBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucyBvbmx5IGEgcG9pbnRlciB0byB0aGUgc3RyaW5nIGlzIHN0b3JlZCBpbgordGhlIGRlYnVnIGZlYXR1cmUuIElmIHlvdSBsb2cgYSBzdHJpbmcgdGhhdCBpcyBmcmVlZCBhZnRlcndhcmRzLCB5b3Ugd2lsbCBnZXQKK2FuIE9PUFMgd2hlbiBpbnNwZWN0aW5nIHRoZSBkZWJ1ZyBmZWF0dXJlLCBiZWNhdXNlIHRoZW4gdGhlIGRlYnVnIGZlYXR1cmUgd2lsbAorYWNjZXNzIHRoZSBhbHJlYWR5IGZyZWVkIG1lbW9yeS4KKworTk9URTogSWYgdXNpbmcgdGhlIHNwcmludGYgdmlldyBkbyBOT1QgdXNlIG90aGVyIGV2ZW50L2V4Y2VwdGlvbiBmdW5jdGlvbnMKK3RoYW4gdGhlIHNwcmludGYtZXZlbnQgYW5kIC1leGNlcHRpb24gZnVuY3Rpb25zLgorCitUaGUgZm9ybWF0IG9mIHRoZSBoZXhfYXNjaWkgYW5kIHNwcmludGYgdmlldyBpcyBhcyBmb2xsb3dzOgorLSBOdW1iZXIgb2YgYXJlYQorLSBUaW1lc3RhbXAgKGZvcm1hdHRlZCBhcyBzZWNvbmRzIGFuZCBtaWNyb3NlY29uZHMgc2luY2UgMDA6MDA6MDAgQ29vcmRpbmF0ZWQgCisgIFVuaXZlcnNhbCBUaW1lIChVVEMpLCBKYW51YXJ5IDEsIDE5NzApCistIGxldmVsIG9mIGRlYnVnIGVudHJ5CistIEV4Y2VwdGlvbiBmbGFnICgqID0gRXhjZXB0aW9uKQorLSBDcHUtTnVtYmVyIG9mIGNhbGxpbmcgdGFzaworLSBSZXR1cm4gQWRkcmVzcyB0byBjYWxsZXIKKy0gZGF0YSBmaWVsZAorCitUaGUgZm9ybWF0IG9mIHRoZSByYXcgdmlldyBpczoKKy0gSGVhZGVyIGFzIGRlc2NyaWJlZCBpbiBkZWJ1Zy5oCistIGRhdGFmaWVsZCAKKworQSB0eXBpY2FsIGxpbmUgb2YgdGhlIGhleF9hc2NpaSB2aWV3IHdpbGwgbG9vayBsaWtlIHRoZSBmb2xsb3dpbmcgKGZpcnN0IGxpbmUgCitpcyBvbmx5IGZvciBleHBsYW5hdGlvbiBhbmQgd2lsbCBub3QgYmUgZGlzcGxheWVkIHdoZW4gJ2NhdGluZycgdGhlIHZpZXcpOgorCithcmVhICB0aW1lICAgICAgICAgICBsZXZlbCBleGNlcHRpb24gY3B1IGNhbGxlciAgICBkYXRhIChoZXggKyBhc2NpaSkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiswMCAgICAwMDk2NDQxOTQwOTo0NDA2OTAgMSAtICAgICAgICAgMDAgIDg4MDIzZmUgICAKKworCitEZWZpbmluZyB2aWV3cworLS0tLS0tLS0tLS0tLS0KKworVmlld3MgYXJlIHNwZWNpZmllZCB3aXRoIHRoZSAnZGVidWdfdmlldycgc3RydWN0dXJlLiBUaGVyZSBhcmUgZGVmaW5lZAorY2FsbGJhY2sgZnVuY3Rpb25zIHdoaWNoIGFyZSB1c2VkIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIHRoZSBkZWJ1Z2ZzIGZpbGVzOgorCitzdHJ1Y3QgZGVidWdfdmlldyB7CisgICAgICAgIGNoYXIgbmFtZVtERUJVR19NQVhfUFJPQ0ZfTEVOXTsgIAorICAgICAgICBkZWJ1Z19wcm9sb2dfcHJvY190KiBwcm9sb2dfcHJvYzsgCisgICAgICAgIGRlYnVnX2hlYWRlcl9wcm9jX3QqIGhlYWRlcl9wcm9jOworICAgICAgICBkZWJ1Z19mb3JtYXRfcHJvY190KiBmb3JtYXRfcHJvYzsKKyAgICAgICAgZGVidWdfaW5wdXRfcHJvY190KiAgaW5wdXRfcHJvYzsKKwl2b2lkKiAgICAgICAgICAgICAgICBwcml2YXRlX2RhdGE7Cit9OworCit3aGVyZQorCit0eXBlZGVmIGludCAoZGVidWdfaGVhZGVyX3Byb2NfdCkgKGRlYnVnX2luZm9fdCogaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZWJ1Z192aWV3KiB2aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfZW50cnlfdCogZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIG91dF9idWYpOworCit0eXBlZGVmIGludCAoZGVidWdfZm9ybWF0X3Byb2NfdCkgKGRlYnVnX2luZm9fdCogaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZWJ1Z192aWV3KiB2aWV3LCBjaGFyKiBvdXRfYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBpbl9idWYpOwordHlwZWRlZiBpbnQgKGRlYnVnX3Byb2xvZ19wcm9jX3QpIChkZWJ1Z19pbmZvX3QqIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGVidWdfdmlldyogdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciogb3V0X2J1Zik7Cit0eXBlZGVmIGludCAoZGVidWdfaW5wdXRfcHJvY190KSAoZGVidWdfaW5mb190KiBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGVidWdfdmlldyogdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZSogZmlsZSwgY29uc3QgY2hhciogdXNlcl9idWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGluX2J1Zl9zaXplLCBsb2ZmX3QqIG9mZnNldCk7CisKKworVGhlICJwcml2YXRlX2RhdGEiIG1lbWJlciBjYW4gYmUgdXNlZCBhcyBwb2ludGVyIHRvIHZpZXcgc3BlY2lmaWMgZGF0YS4KK0l0IGlzIG5vdCB1c2VkIGJ5IHRoZSBkZWJ1ZyBmZWF0dXJlIGl0c2VsZi4KKworVGhlIG91dHB1dCB3aGVuIHJlYWRpbmcgYSBkZWJ1Z2ZzIGZpbGUgaXMgc3RydWN0dXJlZCBsaWtlIHRoaXM6CisKKyJwcm9sb2dfcHJvYyBvdXRwdXQiCisKKyJoZWFkZXJfcHJvYyBvdXRwdXQgMSIgICJmb3JtYXRfcHJvYyBvdXRwdXQgMSIKKyJoZWFkZXJfcHJvYyBvdXRwdXQgMiIgICJmb3JtYXRfcHJvYyBvdXRwdXQgMiIKKyJoZWFkZXJfcHJvYyBvdXRwdXQgMyIgICJmb3JtYXRfcHJvYyBvdXRwdXQgMyIKKy4uLgorCitXaGVuIGEgdmlldyBpcyByZWFkIGZyb20gdGhlIGRlYnVnZnMsIHRoZSBEZWJ1ZyBGZWF0dXJlIGNhbGxzIHRoZQorJ3Byb2xvZ19wcm9jJyBvbmNlIGZvciB3cml0aW5nIHRoZSBwcm9sb2cuCitUaGVuICdoZWFkZXJfcHJvYycgYW5kICdmb3JtYXRfcHJvYycgYXJlIGNhbGxlZCBmb3IgZWFjaCAKK2V4aXN0aW5nIGRlYnVnIGVudHJ5LgorCitUaGUgaW5wdXRfcHJvYyBjYW4gYmUgdXNlZCB0byBpbXBsZW1lbnQgZnVuY3Rpb25hbGl0eSB3aGVuIGl0IGlzIHdyaXR0ZW4gdG8gCit0aGUgdmlldyAoZS5nLiBsaWtlIHdpdGggJ2VjaG8gIjAiID4gL3N5cy9rZXJuZWwvZGVidWcvczM5MGRiZi9kYXNkL2xldmVsKS4KKworRm9yIGhlYWRlcl9wcm9jIHRoZXJlIGNhbiBiZSB1c2VkIHRoZSBkZWZhdWx0IGZ1bmN0aW9uCitkZWJ1Z19kZmx0X2hlYWRlcl9mbigpIHdoaWNoIGlzIGRlZmluZWQgaW4gZGVidWcuaC4KK2FuZCB3aGljaCBwcm9kdWNlcyB0aGUgc2FtZSBoZWFkZXIgb3V0cHV0IGFzIHRoZSBwcmVkZWZpbmVkIHZpZXdzLgorRS5nOgorMDAgMDA5NjQ0MTk0MDk6NDQwNzYxIDIgLSAwMCA4ODAyM2VjCisKK0luIG9yZGVyIHRvIHNlZSBob3cgdG8gdXNlIHRoZSBjYWxsYmFjayBmdW5jdGlvbnMgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uCitvZiB0aGUgZGVmYXVsdCB2aWV3cyEKKworRXhhbXBsZQorCisjaW5jbHVkZSA8YXNtL2RlYnVnLmg+CisKKyNkZWZpbmUgVU5LTk9XTlNUUiAiZGF0YTogJTA4eCIKKworY29uc3QgY2hhciogbWVzc2FnZXNbXSA9Cit7IlRoaXMgZXJyb3IuLi4uLi4uLi4uLlxuIiwKKyAiVGhhdCBlcnJvci4uLi4uLi4uLi4uXG4iLAorICJQcm9ibGVtLi4uLi4uLi4uLi4uLi5cbiIsCisgIlNvbWV0aGluZyB3ZW50IHdyb25nLlxuIiwKKyAiRXZlcnl0aGluZyBvay4uLi4uLi4uXG4iLAorIE5VTEwKK307CisKK3N0YXRpYyBpbnQgZGVidWdfdGVzdF9mb3JtYXRfZm4oCisgICBkZWJ1Z19pbmZvX3QgKiBpZCwgc3RydWN0IGRlYnVnX3ZpZXcgKnZpZXcsIAorICAgY2hhciAqb3V0X2J1ZiwgY29uc3QgY2hhciAqaW5fYnVmCispCit7CisgIGludCBpLCByYyA9IDA7CisKKyAgaWYoaWQtPmJ1Zl9zaXplID49IDQpIHsKKyAgICAgaW50IG1zZ19uciA9ICooKGludCopaW5fYnVmKTsKKyAgICAgaWYobXNnX25yIDwgc2l6ZW9mKG1lc3NhZ2VzKS9zaXplb2YoY2hhciopIC0gMSkKKyAgICAgICAgcmMgKz0gc3ByaW50ZihvdXRfYnVmLCAiJXMiLCBtZXNzYWdlc1ttc2dfbnJdKTsJCisgICAgIGVsc2UKKyAgICAgICAgcmMgKz0gc3ByaW50ZihvdXRfYnVmLCBVTktOT1dOU1RSLCBtc2dfbnIpOworICB9Cisgb3V0OgorICAgcmV0dXJuIHJjOworfQorCitzdHJ1Y3QgZGVidWdfdmlldyBkZWJ1Z190ZXN0X3ZpZXcgPSB7CisgICJteXZpZXciLCAgICAgICAgICAgICAgICAgLyogbmFtZSBvZiB2aWV3ICovCisgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgLyogbm8gcHJvbG9nICovCisgICZkZWJ1Z19kZmx0X2hlYWRlcl9mbiwgICAgLyogZGVmYXVsdCBoZWFkZXIgZm9yIGVhY2ggZW50cnkgKi8KKyAgJmRlYnVnX3Rlc3RfZm9ybWF0X2ZuLCAgICAvKiBvdXIgb3duIGZvcm1hdCBmdW5jdGlvbiAqLworICBOVUxMLCAgICAgICAgICAgICAgICAgICAgIC8qIG5vIGlucHV0IGZ1bmN0aW9uICovCisgIE5VTEwgICAgICAgICAgICAgICAgICAgICAgLyogbm8gcHJpdmF0ZSBkYXRhICovCit9OworCis9PT09PQordGVzdDoKKz09PT09CitkZWJ1Z19pbmZvX3QgKmRlYnVnX2luZm87CisuLi4KK2RlYnVnX2luZm8gPSBkZWJ1Z19yZWdpc3RlciAoInRlc3QiLCAwLCA0LCA0ICkpOworZGVidWdfcmVnaXN0ZXJfdmlldyhkZWJ1Z19pbmZvLCAmZGVidWdfdGVzdF92aWV3KTsKK2ZvcihpID0gMDsgaSA8IDEwOyBpICsrKSBkZWJ1Z19pbnRfZXZlbnQoZGVidWdfaW5mbywgMSwgaSk7CisKKz4gY2F0IC9zeXMva2VybmVsL2RlYnVnL3MzOTBkYmYvdGVzdC9teXZpZXcKKzAwIDAwOTY0NDE5NzM0OjYxMTQwMiAxIC0gMDAgODgwNDJjYSAgIFRoaXMgZXJyb3IuLi4uLi4uLi4uLgorMDAgMDA5NjQ0MTk3MzQ6NjExNDA1IDEgLSAwMCA4ODA0MmNhICAgVGhhdCBlcnJvci4uLi4uLi4uLi4uCiswMCAwMDk2NDQxOTczNDo2MTE0MDggMSAtIDAwIDg4MDQyY2EgICBQcm9ibGVtLi4uLi4uLi4uLi4uLi4KKzAwIDAwOTY0NDE5NzM0OjYxMTQxMSAxIC0gMDAgODgwNDJjYSAgIFNvbWV0aGluZyB3ZW50IHdyb25nLgorMDAgMDA5NjQ0MTk3MzQ6NjExNDE0IDEgLSAwMCA4ODA0MmNhICAgRXZlcnl0aGluZyBvay4uLi4uLi4uCiswMCAwMDk2NDQxOTczNDo2MTE0MTcgMSAtIDAwIDg4MDQyY2EgICBkYXRhOiAwMDAwMDAwNQorMDAgMDA5NjQ0MTk3MzQ6NjExNDE5IDEgLSAwMCA4ODA0MmNhICAgZGF0YTogMDAwMDAwMDYKKzAwIDAwOTY0NDE5NzM0OjYxMTQyMiAxIC0gMDAgODgwNDJjYSAgIGRhdGE6IDAwMDAwMDA3CiswMCAwMDk2NDQxOTczNDo2MTE0MjUgMSAtIDAwIDg4MDQyY2EgICBkYXRhOiAwMDAwMDAwOAorMDAgMDA5NjQ0MTk3MzQ6NjExNDI4IDEgLSAwMCA4ODA0MmNhICAgZGF0YTogMDAwMDAwMDkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vczM5MC96ZmNwZHVtcC50eHQgYi9Eb2N1bWVudGF0aW9uL3MzOTAvemZjcGR1bXAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjOTI5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3MzOTAvemZjcGR1bXAudHh0CkBAIC0wLDAgKzEsNTIgQEAKK1RoZSBzMzkwIFNDU0kgZHVtcCB0b29sICh6ZmNwZHVtcCkKKworU3lzdGVtIHogbWFjaGluZXMgKHo5MDAgb3IgaGlnaGVyKSBwcm92aWRlIGhhcmR3YXJlIHN1cHBvcnQgZm9yIGNyZWF0aW5nIHN5c3RlbQorZHVtcHMgb24gU0NTSSBkaXNrcy4gVGhlIGR1bXAgcHJvY2VzcyBpcyBpbml0aWF0ZWQgYnkgYm9vdGluZyBhIGR1bXAgdG9vbCwgd2hpY2gKK2hhcyB0byBjcmVhdGUgYSBkdW1wIG9mIHRoZSBjdXJyZW50IChwcm9iYWJseSBjcmFzaGVkKSBMaW51eCBpbWFnZS4gSW4gb3JkZXIgdG8KK25vdCBvdmVyd3JpdGUgbWVtb3J5IG9mIHRoZSBjcmFzaGVkIExpbnV4IHdpdGggZGF0YSBvZiB0aGUgZHVtcCB0b29sLCB0aGUKK2hhcmR3YXJlIHNhdmVzIHNvbWUgbWVtb3J5IHBsdXMgdGhlIHJlZ2lzdGVyIHNldHMgb2YgdGhlIGJvb3QgQ1BVIGJlZm9yZSB0aGUKK2R1bXAgdG9vbCBpcyBsb2FkZWQuIFRoZXJlIGV4aXN0cyBhbiBTQ0xQIGhhcmR3YXJlIGludGVyZmFjZSB0byBvYnRhaW4gdGhlIHNhdmVkCittZW1vcnkgYWZ0ZXJ3YXJkcy4gQ3VycmVudGx5IDMyIE1CIGFyZSBzYXZlZC4KKworVGhpcyB6ZmNwZHVtcCBpbXBsZW1lbnRhdGlvbiBjb25zaXN0cyBvZiBhIExpbnV4IGR1bXAga2VybmVsIHRvZ2V0aGVyIHdpdGgKK2EgdXNlciBzcGFjZSBkdW1wIHRvb2wsIHdoaWNoIGFyZSBsb2FkZWQgdG9nZXRoZXIgaW50byB0aGUgc2F2ZWQgbWVtb3J5IHJlZ2lvbgorYmVsb3cgMzIgTUIuIHpmY3BkdW1wIGlzIGluc3RhbGxlZCBvbiBhIFNDU0kgZGlzayB1c2luZyB6aXBsIChhcyBjb250YWluZWQgaW4KK3RoZSBzMzkwLXRvb2xzIHBhY2thZ2UpIHRvIG1ha2UgdGhlIGRldmljZSBib290YWJsZS4gVGhlIG9wZXJhdG9yIG9mIGEgTGludXgKK3N5c3RlbSBjYW4gdGhlbiB0cmlnZ2VyIGEgU0NTSSBkdW1wIGJ5IGJvb3RpbmcgdGhlIFNDU0kgZGlzaywgd2hlcmUgemZjcGR1bXAKK3Jlc2lkZXMgb24uCisKK1RoZSBrZXJuZWwgcGFydCBvZiB6ZmNwZHVtcCBpcyBpbXBsZW1lbnRlZCBhcyBhIGRlYnVnZnMgZmlsZSB1bmRlciAiemNvcmUvbWVtIiwKK3doaWNoIGV4cG9ydHMgbWVtb3J5IGFuZCByZWdpc3RlcnMgb2YgdGhlIGNyYXNoZWQgTGludXggaW4gYW4gczM5MAorc3RhbmRhbG9uZSBkdW1wIGZvcm1hdC4gSXQgY2FuIGJlIHVzZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGUuZy4gL2Rldi9tZW0uIFRoZQorZHVtcCBmb3JtYXQgZGVmaW5lcyBhIDRLIGhlYWRlciBmb2xsb3dlZCBieSBwbGFpbiB1bmNvbXByZXNzZWQgbWVtb3J5LiBUaGUKK3JlZ2lzdGVyIHNldHMgYXJlIHN0b3JlZCBpbiB0aGUgcHJlZml4IHBhZ2VzIG9mIHRoZSByZXNwZWN0aXZlIENQVXMuIFRvIGJ1aWxkIGEKK2R1bXAgZW5hYmxlZCBrZXJuZWwgd2l0aCB0aGUgemNvcmUgZHJpdmVyLCB0aGUga2VybmVsIGNvbmZpZyBvcHRpb24KK0NPTkZJR19DUkFTSF9EVU1QIGhhcyB0byBiZSBzZXQuIFdoZW4gcmVhZGluZyBmcm9tICJ6Y29yZS9tZW0iLCB0aGUgcGFydCBvZgorbWVtb3J5LCB3aGljaCBoYXMgYmVlbiBzYXZlZCBieSBoYXJkd2FyZSBpcyByZWFkIGJ5IHRoZSBkcml2ZXIgdmlhIHRoZSBTQ0xQCitoYXJkd2FyZSBpbnRlcmZhY2UuIFRoZSBzZWNvbmQgcGFydCBpcyBqdXN0IGNvcGllZCBmcm9tIHRoZSBub24gb3ZlcndyaXR0ZW4gcmVhbAorbWVtb3J5LgorCitTaW5jZSBrZXJuZWwgdmVyc2lvbiAzLjEyIGFsc28gdGhlIC9wcm9jL3ZtY29yZSBmaWxlIGNhbiBhbHNvIGJlIHVzZWQgdG8gYWNjZXNzCit0aGUgZHVtcC4KKworVG8gZ2V0IGEgdmFsaWQgemZjcGR1bXAga2VybmVsIGNvbmZpZ3VyYXRpb24gdXNlICJtYWtlIHpmY3BkdW1wX2RlZmNvbmZpZyIuCisKK1RoZSBzMzkwIHppcGwgdG9vbCBsb29rcyBmb3IgdGhlIHpmY3BkdW1wIGtlcm5lbCBhbmQgb3B0aW9uYWwgaW5pdHJkL2luaXRyYW1mcwordW5kZXIgdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6CisKKyoga2VybmVsOiAgPHpmY3BkdW1wIGRpcmVjdG9yeT4vemZjcGR1bXAuaW1hZ2UKKyogcmFtZGlzazogPHpmY3BkdW1wIGRpcmVjdG9yeT4vemZjcGR1bXAucmQKKworVGhlIHpmY3BkdW1wIGRpcmVjdG9yeSBpcyBkZWZpbmVkIGluIHRoZSBzMzkwLXRvb2xzIHBhY2thZ2UuCisKK1RoZSB1c2VyIHNwYWNlIGFwcGxpY2F0aW9uIG9mIHpmY3BkdW1wIGNhbiByZXNpZGUgaW4gYW4gaW50aXRyYW1mcyBvciBhbgoraW5pdHJkLiBJdCBjYW4gYWxzbyBiZSBpbmNsdWRlZCBpbiBhIGJ1aWx0LWluIGtlcm5lbCBpbml0cmFtZnMuIFRoZSBhcHBsaWNhdGlvbgorcmVhZHMgZnJvbSAvcHJvYy92bWNvcmUgb3IgemNvcmUvbWVtIGFuZCB3cml0ZXMgdGhlIHN5c3RlbSBkdW1wIHRvIGEgU0NTSSBkaXNrLgorCitUaGUgczM5MC10b29scyBwYWNrYWdlIHZlcnNpb24gMS4yNC4wIGFuZCBhYm92ZSBidWlsZHMgYW4gZXh0ZXJuYWwgemZjcGR1bXAKK2luaXRyYW1mcyB3aXRoIGEgdXNlciBzcGFjZSBhcHBsaWNhdGlvbiB0aGF0IHdyaXRlcyB0aGUgZHVtcCB0byBhIFNDU0kKK3BhcnRpdGlvbi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZSB6ZmNwZHVtcCByZWZlciB0byB0aGUgczM5MCAnVXNpbmcgdGhlIER1bXAKK1Rvb2xzIGJvb2snLCB3aGljaCBpcyBhdmFpbGFibGUgZnJvbQoraHR0cDovL3d3dy5pYm0uY29tL2RldmVsb3BlcndvcmtzL2xpbnV4L2xpbnV4MzkwLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvMDAtSU5ERVggYi9Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci8wMC1JTkRFWApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2NmN2FkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvMDAtSU5ERVgKQEAgLTAsMCArMSwxOCBAQAorMDAtSU5ERVgKKwktIHRoaXMgZmlsZS4KK3NjaGVkLWFyY2gudHh0CisJLSBDUFUgU2NoZWR1bGVyIGltcGxlbWVudGF0aW9uIGhpbnRzIGZvciBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgY29kZS4KK3NjaGVkLWJ3Yy50eHQKKwktIENGUyBiYW5kd2lkdGggY29udHJvbCBvdmVydmlldy4KK3NjaGVkLWRlc2lnbi1DRlMudHh0CisJLSBnb2FscywgZGVzaWduIGFuZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQ29tcGxldGVseSBGYWlyIFNjaGVkdWxlci4KK3NjaGVkLWRvbWFpbnMudHh0CisJLSBpbmZvcm1hdGlvbiBvbiBzY2hlZHVsaW5nIGRvbWFpbnMuCitzY2hlZC1uaWNlLWRlc2lnbi50eHQKKwktIEhvdyBhbmQgd2h5IHRoZSBzY2hlZHVsZXIncyBuaWNlIGxldmVscyBhcmUgaW1wbGVtZW50ZWQuCitzY2hlZC1ydC1ncm91cC50eHQKKwktIHJlYWwtdGltZSBncm91cCBzY2hlZHVsaW5nLgorc2NoZWQtZGVhZGxpbmUudHh0CisJLSBkZWFkbGluZSBzY2hlZHVsaW5nLgorc2NoZWQtc3RhdHMudHh0CisJLSBpbmZvcm1hdGlvbiBvbiBzY2hlZHN0YXRzIChMaW51eCBTY2hlZHVsZXIgU3RhdGlzdGljcykuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9jb21wbGV0aW9uLnR4dCBiL0RvY3VtZW50YXRpb24vc2NoZWR1bGVyL2NvbXBsZXRpb24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2MjJiYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9jb21wbGV0aW9uLnR4dApAQCAtMCwwICsxLDI0OCBAQAorY29tcGxldGlvbnMgLSB3YWl0IGZvciBjb21wbGV0aW9uIGhhbmRsaW5nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBkb2N1bWVudCB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGJhc2VkIG9uIDMuMTguMCAobGludXgtbmV4dCkKKworSW50cm9kdWN0aW9uOgorLS0tLS0tLS0tLS0tLQorCitJZiB5b3UgaGF2ZSBvbmUgb3IgbW9yZSB0aHJlYWRzIG9mIGV4ZWN1dGlvbiB0aGF0IG11c3Qgd2FpdCBmb3Igc29tZSBwcm9jZXNzCit0byBoYXZlIHJlYWNoZWQgYSBwb2ludCBvciBhIHNwZWNpZmljIHN0YXRlLCBjb21wbGV0aW9ucyBjYW4gcHJvdmlkZSBhCityYWNlLWZyZWUgc29sdXRpb24gdG8gdGhpcyBwcm9ibGVtLiBTZW1hbnRpY2FsbHkgdGhleSBhcmUgc29tZXdoYXQgbGlrZSBhCitwdGhyZWFkX2JhcnJpZXIgYW5kIGhhdmUgc2ltaWxhciB1c2UtY2FzZXMuCisKK0NvbXBsZXRpb25zIGFyZSBhIGNvZGUgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbSB3aGljaCBpcyBwcmVmZXJhYmxlIHRvIGFueQorbWlzdXNlIG9mIGxvY2tzLiBBbnkgdGltZSB5b3UgdGhpbmsgb2YgdXNpbmcgeWllbGQoKSBvciBzb21lIHF1aXJreQorbXNsZWVwKDEpIGxvb3AgdG8gYWxsb3cgc29tZXRoaW5nIGVsc2UgdG8gcHJvY2VlZCwgeW91IHByb2JhYmx5IHdhbnQgdG8KK2xvb2sgaW50byB1c2luZyBvbmUgb2YgdGhlIHdhaXRfZm9yX2NvbXBsZXRpb24qKCkgY2FsbHMgaW5zdGVhZC4gVGhlCithZHZhbnRhZ2Ugb2YgdXNpbmcgY29tcGxldGlvbnMgaXMgY2xlYXIgaW50ZW50IG9mIHRoZSBjb2RlLCBidXQgYWxzbyBtb3JlCitlZmZpY2llbnQgY29kZSBhcyBib3RoIHRocmVhZHMgY2FuIGNvbnRpbnVlIHVudGlsIHRoZSByZXN1bHQgaXMgYWN0dWFsbHkKK25lZWRlZC4KKworQ29tcGxldGlvbnMgYXJlIGJ1aWx0IG9uIHRvcCBvZiB0aGUgZ2VuZXJpYyBldmVudCBpbmZyYXN0cnVjdHVyZSBpbiBMaW51eCwKK3dpdGggdGhlIGV2ZW50IHJlZHVjZWQgdG8gYSBzaW1wbGUgZmxhZyAoYXBwcm9wcmlhdGVseSBjYWxsZWQgImRvbmUiKSBpbgorc3RydWN0IGNvbXBsZXRpb24gdGhhdCB0ZWxscyB0aGUgd2FpdGluZyB0aHJlYWRzIG9mIGV4ZWN1dGlvbiBpZiB0aGV5CitjYW4gY29udGludWUgc2FmZWx5LgorCitBcyBjb21wbGV0aW9ucyBhcmUgc2NoZWR1bGluZyByZWxhdGVkLCB0aGUgY29kZSBpcyBmb3VuZCBpbgora2VybmVsL3NjaGVkL2NvbXBsZXRpb24uYyAtIGZvciBkZXRhaWxzIG9uIGNvbXBsZXRpb24gZGVzaWduIGFuZAoraW1wbGVtZW50YXRpb24gc2VlIGNvbXBsZXRpb25zLWRlc2lnbi50eHQKKworCitVc2FnZToKKy0tLS0tLQorCitUaGVyZSBhcmUgdGhyZWUgcGFydHMgdG8gdXNpbmcgY29tcGxldGlvbnMsIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUKK3N0cnVjdCBjb21wbGV0aW9uLCB0aGUgd2FpdGluZyBwYXJ0IHRocm91Z2ggYSBjYWxsIHRvIG9uZSBvZiB0aGUgdmFyaWFudHMgb2YKK3dhaXRfZm9yX2NvbXBsZXRpb24oKSBhbmQgdGhlIHNpZ25hbGluZyBzaWRlIHRocm91Z2ggYSBjYWxsIHRvIGNvbXBsZXRlKCkKK29yIGNvbXBsZXRlX2FsbCgpLiBGdXJ0aGVyIHRoZXJlIGFyZSBzb21lIGhlbHBlciBmdW5jdGlvbnMgZm9yIGNoZWNraW5nIHRoZQorc3RhdGUgb2YgY29tcGxldGlvbnMuCisKK1RvIHVzZSBjb21wbGV0aW9ucyBvbmUgbmVlZHMgdG8gaW5jbHVkZSA8bGludXgvY29tcGxldGlvbi5oPiBhbmQKK2NyZWF0ZSBhIHZhcmlhYmxlIG9mIHR5cGUgc3RydWN0IGNvbXBsZXRpb24uIFRoZSBzdHJ1Y3R1cmUgdXNlZCBmb3IKK2hhbmRsaW5nIG9mIGNvbXBsZXRpb25zIGlzOgorCisJc3RydWN0IGNvbXBsZXRpb24geworCQl1bnNpZ25lZCBpbnQgZG9uZTsKKwkJd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdDsKKwl9OworCitwcm92aWRpbmcgdGhlIHdhaXQgcXVldWUgdG8gcGxhY2UgdGFza3Mgb24gZm9yIHdhaXRpbmcgYW5kIHRoZSBmbGFnIGZvcgoraW5kaWNhdGluZyB0aGUgc3RhdGUgb2YgYWZmYWlycy4KKworQ29tcGxldGlvbnMgc2hvdWxkIGJlIG5hbWVkIHRvIGNvbnZleSB0aGUgaW50ZW50IG9mIHRoZSB3YWl0ZXIuIEEgZ29vZAorZXhhbXBsZSBpczoKKworCXdhaXRfZm9yX2NvbXBsZXRpb24oJmVhcmx5X2NvbnNvbGVfYWRkZWQpOworCisJY29tcGxldGUoJmVhcmx5X2NvbnNvbGVfYWRkZWQpOworCitHb29kIG5hbWluZyAoYXMgYWx3YXlzKSBoZWxwcyBjb2RlIHJlYWRhYmlsaXR5LgorCisKK0luaXRpYWxpemluZyBjb21wbGV0aW9uczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW5pdGlhbGl6YXRpb24gb2YgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGNvbXBsZXRpb25zLCBvZnRlbiBlbWJlZGRlZCBpbgorb3RoZXIgc3RydWN0dXJlcywgaXMgZG9uZSB3aXRoOgorCisJdm9pZCBpbml0X2NvbXBsZXRpb24oJmRvbmUpOworCitJbml0aWFsaXphdGlvbiBpcyBhY2NvbXBsaXNoZWQgYnkgaW5pdGlhbGl6aW5nIHRoZSB3YWl0IHF1ZXVlIGFuZCBzZXR0aW5nCit0aGUgZGVmYXVsdCBzdGF0ZSB0byAibm90IGF2YWlsYWJsZSIsIHRoYXQgaXMsICJkb25lIiBpcyBzZXQgdG8gMC4KKworVGhlIHJlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLCByZWluaXRfY29tcGxldGlvbigpLCBzaW1wbHkgcmVzZXRzIHRoZQorZG9uZSBlbGVtZW50IHRvICJub3QgYXZhaWxhYmxlIiwgdGh1cyBhZ2FpbiB0byAwLCB3aXRob3V0IHRvdWNoaW5nIHRoZQord2FpdCBxdWV1ZS4gQ2FsbGluZyBpbml0X2NvbXBsZXRpb24oKSB0d2ljZSBvbiB0aGUgc2FtZSBjb21wbGV0aW9uIG9iamVjdCBpcworbW9zdCBsaWtlbHkgYSBidWcgYXMgaXQgcmUtaW5pdGlhbGl6ZXMgdGhlIHF1ZXVlIHRvIGFuIGVtcHR5IHF1ZXVlIGFuZAorZW5xdWV1ZWQgdGFza3MgY291bGQgZ2V0ICJsb3N0IiAtIHVzZSByZWluaXRfY29tcGxldGlvbigpIGluIHRoYXQgY2FzZS4KKworRm9yIHN0YXRpYyBkZWNsYXJhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24sIG1hY3JvcyBhcmUgYXZhaWxhYmxlLiBUaGVzZSBhcmU6CisKKwlzdGF0aWMgREVDTEFSRV9DT01QTEVUSU9OKHNldHVwX2RvbmUpCisKK3VzZWQgZm9yIHN0YXRpYyBkZWNsYXJhdGlvbnMgaW4gZmlsZSBzY29wZS4gV2l0aGluIGZ1bmN0aW9ucyB0aGUgc3RhdGljCitpbml0aWFsaXphdGlvbiBzaG91bGQgYWx3YXlzIHVzZToKKworCURFQ0xBUkVfQ09NUExFVElPTl9PTlNUQUNLKHNldHVwX2RvbmUpCisKK3N1aXRhYmxlIGZvciBhdXRvbWF0aWMvbG9jYWwgdmFyaWFibGVzIG9uIHRoZSBzdGFjayBhbmQgd2lsbCBtYWtlIGxvY2tkZXAKK2hhcHB5LiBOb3RlIGFsc28gdGhhdCBvbmUgbmVlZHMgdG8gbWFrZSAqc3VyZSogdGhlIGNvbXBsZXRpb24gcGFzc2VkIHRvCit3b3JrIHRocmVhZHMgcmVtYWlucyBpbi1zY29wZSwgYW5kIG5vIHJlZmVyZW5jZXMgcmVtYWluIHRvIG9uLXN0YWNrIGRhdGEKK3doZW4gdGhlIGluaXRpYXRpbmcgZnVuY3Rpb24gcmV0dXJucy4KKworVXNpbmcgb24tc3RhY2sgY29tcGxldGlvbnMgZm9yIGNvZGUgdGhhdCBjYWxscyBhbnkgb2YgdGhlIF90aW1lb3V0IG9yCitfaW50ZXJydXB0aWJsZS9fa2lsbGFibGUgdmFyaWFudHMgaXMgbm90IGFkdmlzYWJsZSBhcyB0aGV5IHdpbGwgcmVxdWlyZQorYWRkaXRpb25hbCBzeW5jaHJvbml6YXRpb24gdG8gcHJldmVudCB0aGUgb24tc3RhY2sgY29tcGxldGlvbiBvYmplY3QgaW4KK3RoZSB0aW1lb3V0L3NpZ25hbCBjYXNlcyBmcm9tIGdvaW5nIG91dCBvZiBzY29wZS4gQ29uc2lkZXIgdXNpbmcgZHluYW1pY2FsbHkKK2FsbG9jYXRlZCBjb21wbGV0aW9ucyB3aGVuIGludGVuZGluZyB0byB1c2UgdGhlIF9pbnRlcnJ1cHRpYmxlL19raWxsYWJsZQorb3IgX3RpbWVvdXQgdmFyaWFudHMgb2Ygd2FpdF9mb3JfY29tcGxldGlvbigpLgorCisKK1dhaXRpbmcgZm9yIGNvbXBsZXRpb25zOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZvciBhIHRocmVhZCBvZiBleGVjdXRpb24gdG8gd2FpdCBmb3Igc29tZSBjb25jdXJyZW50IHdvcmsgdG8gZmluaXNoLCBpdAorY2FsbHMgd2FpdF9mb3JfY29tcGxldGlvbigpIG9uIHRoZSBpbml0aWFsaXplZCBjb21wbGV0aW9uIHN0cnVjdHVyZS4KK0EgdHlwaWNhbCB1c2FnZSBzY2VuYXJpbyBpczoKKworCXN0cnVjdCBjb21wbGV0aW9uIHNldHVwX2RvbmU7CisJaW5pdF9jb21wbGV0aW9uKCZzZXR1cF9kb25lKTsKKwlpbml0aWFsaXplX3dvcmsoLi4uLCZzZXR1cF9kb25lLC4uLikKKworCS8qIHJ1biBub24tZGVwZW5kZW50IGNvZGUgKi8gICAgICAgICAgICAgIC8qIGRvIHNldHVwICovCisKKwl3YWl0X2Zvcl9jb21wbGV0aW9uKCZzZXR1cF9kb25lKTsgICAgICAgICBjb21wbGV0ZShzZXR1cF9kb25lKQorCitUaGlzIGlzIG5vdCBpbXBseWluZyBhbnkgdGVtcG9yYWwgb3JkZXIgb24gd2FpdF9mb3JfY29tcGxldGlvbigpIGFuZCB0aGUKK2NhbGwgdG8gY29tcGxldGUoKSAtIGlmIHRoZSBjYWxsIHRvIGNvbXBsZXRlKCkgaGFwcGVuZWQgYmVmb3JlIHRoZSBjYWxsCit0byB3YWl0X2Zvcl9jb21wbGV0aW9uKCkgdGhlbiB0aGUgd2FpdGluZyBzaWRlIHNpbXBseSB3aWxsIGNvbnRpbnVlCitpbW1lZGlhdGVseSBhcyBhbGwgZGVwZW5kZW5jaWVzIGFyZSBzYXRpc2ZpZWQgaWYgbm90IGl0IHdpbGwgYmxvY2sgdW50aWwKK2NvbXBsZXRpb24gaXMgc2lnbmFsZWQgYnkgY29tcGxldGUoKS4KKworTm90ZSB0aGF0IHdhaXRfZm9yX2NvbXBsZXRpb24oKSBpcyBjYWxsaW5nIHNwaW5fbG9ja19pcnEoKS9zcGluX3VubG9ja19pcnEoKSwKK3NvIGl0IGNhbiBvbmx5IGJlIGNhbGxlZCBzYWZlbHkgd2hlbiB5b3Uga25vdyB0aGF0IGludGVycnVwdHMgYXJlIGVuYWJsZWQuCitDYWxsaW5nIGl0IGZyb20gaGFyZC1pcnEgb3IgaXJxcy1vZmYgYXRvbWljIGNvbnRleHRzIHdpbGwgcmVzdWx0IGluCitoYXJkLXRvLWRldGVjdCBzcHVyaW91cyBlbmFibGluZyBvZiBpbnRlcnJ1cHRzLgorCit3YWl0X2Zvcl9jb21wbGV0aW9uKCk6CisKKwl2b2lkIHdhaXRfZm9yX2NvbXBsZXRpb24oc3RydWN0IGNvbXBsZXRpb24gKmRvbmUpOgorCitUaGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0byB3YWl0IHdpdGhvdXQgYSB0aW1lb3V0IGFuZCB0byBtYXJrIHRoZSB0YXNrIGFzCit1bmludGVycnVwdGlibGUuIHdhaXRfZm9yX2NvbXBsZXRpb24oKSBhbmQgaXRzIHZhcmlhbnRzIGFyZSBvbmx5IHNhZmUKK2luIHByb2Nlc3MgY29udGV4dCAoYXMgdGhleSBjYW4gc2xlZXApIGJ1dCBub3QgaW4gYXRvbWljIGNvbnRleHQsCitpbnRlcnJ1cHQgY29udGV4dCwgd2l0aCBkaXNhYmxlZCBpcnFzLiBvciBwcmVlbXB0aW9uIGlzIGRpc2FibGVkIC0gc2VlIGFsc28KK3RyeV93YWl0X2Zvcl9jb21wbGV0aW9uKCkgYmVsb3cgZm9yIGhhbmRsaW5nIGNvbXBsZXRpb24gaW4gYXRvbWljL2ludGVycnVwdAorY29udGV4dC4KKworQXMgYWxsIHZhcmlhbnRzIG9mIHdhaXRfZm9yX2NvbXBsZXRpb24oKSBjYW4gKG9idmlvdXNseSkgYmxvY2sgZm9yIGEgbG9uZwordGltZSwgeW91IHByb2JhYmx5IGRvbid0IHdhbnQgdG8gY2FsbCB0aGlzIHdpdGggaGVsZCBtdXRleGVzLgorCisKK1ZhcmlhbnRzIGF2YWlsYWJsZToKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGJlbG93IHZhcmlhbnRzIGFsbCByZXR1cm4gc3RhdHVzIGFuZCB0aGlzIHN0YXR1cyBzaG91bGQgYmUgY2hlY2tlZCBpbgorbW9zdCgvYWxsKSBjYXNlcyAtIGluIGNhc2VzIHdoZXJlIHRoZSBzdGF0dXMgaXMgZGVsaWJlcmF0ZWx5IG5vdCBjaGVja2VkIHlvdQorcHJvYmFibHkgd2FudCB0byBtYWtlIGEgbm90ZSBleHBsYWluaW5nIHRoaXMgKGUuZy4gc2VlCithcmNoL2FybS9rZXJuZWwvc21wLmM6X19jcHVfdXAoKSkuCisKK0EgY29tbW9uIHByb2JsZW0gdGhhdCBvY2N1cnMgaXMgdG8gaGF2ZSB1bmNsZWFuIGFzc2lnbm1lbnQgb2YgcmV0dXJuIHR5cGVzLAorc28gY2FyZSBzaG91bGQgYmUgdGFrZW4gd2l0aCBhc3NpZ25pbmcgcmV0dXJuLXZhbHVlcyB0byB2YXJpYWJsZXMgb2YgcHJvcGVyCit0eXBlLiBDaGVja2luZyBmb3IgdGhlIHNwZWNpZmljIG1lYW5pbmcgb2YgcmV0dXJuIHZhbHVlcyBhbHNvIGhhcyBiZWVuIGZvdW5kCit0byBiZSBxdWl0ZSBpbmFjY3VyYXRlIGUuZy4gY29uc3RydWN0cyBsaWtlCitpZiAoIXdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZV90aW1lb3V0KC4uLikpIHdvdWxkIGV4ZWN1dGUgdGhlIHNhbWUKK2NvZGUgcGF0aCBmb3Igc3VjY2Vzc2Z1bCBjb21wbGV0aW9uIGFuZCBmb3IgdGhlIGludGVycnVwdGVkIGNhc2UgLSB3aGljaCBpcworcHJvYmFibHkgbm90IHdoYXQgeW91IHdhbnQuCisKKwlpbnQgd2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlKHN0cnVjdCBjb21wbGV0aW9uICpkb25lKQorCitUaGlzIGZ1bmN0aW9uIG1hcmtzIHRoZSB0YXNrIFRBU0tfSU5URVJSVVBUSUJMRS4gSWYgYSBzaWduYWwgd2FzIHJlY2VpdmVkCit3aGlsZSB3YWl0aW5nIGl0IHdpbGwgcmV0dXJuIC1FUkVTVEFSVFNZUzsgMCBvdGhlcndpc2UuCisKKwl1bnNpZ25lZCBsb25nIHdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dChzdHJ1Y3QgY29tcGxldGlvbiAqZG9uZSwKKwkJdW5zaWduZWQgbG9uZyB0aW1lb3V0KQorCitUaGUgdGFzayBpcyBtYXJrZWQgYXMgVEFTS19VTklOVEVSUlVQVElCTEUgYW5kIHdpbGwgd2FpdCBhdCBtb3N0ICd0aW1lb3V0JworKGluIGppZmZpZXMpLiBJZiB0aW1lb3V0IG9jY3VycyBpdCByZXR1cm5zIDAgZWxzZSB0aGUgcmVtYWluaW5nIHRpbWUgaW4KK2ppZmZpZXMgKGJ1dCBhdCBsZWFzdCAxKS4gVGltZW91dHMgYXJlIHByZWZlcmFibHkgY2FsY3VsYXRlZCB3aXRoCittc2Vjc190b19qaWZmaWVzKCkgb3IgdXNlY3NfdG9famlmZmllcygpLiBJZiB0aGUgcmV0dXJuZWQgdGltZW91dCB2YWx1ZSBpcworZGVsaWJlcmF0ZWx5IGlnbm9yZWQgYSBjb21tZW50IHNob3VsZCBwcm9iYWJseSBleHBsYWluIHdoeSAoZS5nLiBzZWUKK2RyaXZlcnMvbWZkL3dtODM1MC1jb3JlLmMgd204MzUwX3JlYWRfYXV4YWRjKCkpCisKKwlsb25nIHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZV90aW1lb3V0KAorCQlzdHJ1Y3QgY29tcGxldGlvbiAqZG9uZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0KQorCitUaGlzIGZ1bmN0aW9uIHBhc3NlcyBhIHRpbWVvdXQgaW4gamlmZmllcyBhbmQgbWFya3MgdGhlIHRhc2sgYXMKK1RBU0tfSU5URVJSVVBUSUJMRS4gSWYgYSBzaWduYWwgd2FzIHJlY2VpdmVkIGl0IHdpbGwgcmV0dXJuIC1FUkVTVEFSVFNZUzsKK290aGVyd2lzZSBpdCByZXR1cm5zIDAgaWYgdGhlIGNvbXBsZXRpb24gdGltZWQgb3V0IG9yIHRoZSByZW1haW5pbmcgdGltZSBpbgoramlmZmllcyBpZiBjb21wbGV0aW9uIG9jY3VycmVkLgorCitGdXJ0aGVyIHZhcmlhbnRzIGluY2x1ZGUgX2tpbGxhYmxlIHdoaWNoIHVzZXMgVEFTS19LSUxMQUJMRSBhcyB0aGUKK2Rlc2lnbmF0ZWQgdGFza3Mgc3RhdGUgYW5kIHdpbGwgcmV0dXJuIC1FUkVTVEFSVFNZUyBpZiBpdCBpcyBpbnRlcnJ1cHRlZCBvcgorZWxzZSAwIGlmIGNvbXBsZXRpb24gd2FzIGFjaGlldmVkLiAgVGhlcmUgaXMgYSBfdGltZW91dCB2YXJpYW50IGFzIHdlbGw6CisKKwlsb25nIHdhaXRfZm9yX2NvbXBsZXRpb25fa2lsbGFibGUoc3RydWN0IGNvbXBsZXRpb24gKmRvbmUpCisJbG9uZyB3YWl0X2Zvcl9jb21wbGV0aW9uX2tpbGxhYmxlX3RpbWVvdXQoc3RydWN0IGNvbXBsZXRpb24gKmRvbmUsCisJCXVuc2lnbmVkIGxvbmcgdGltZW91dCkKKworVGhlIF9pbyB2YXJpYW50cyB3YWl0X2Zvcl9jb21wbGV0aW9uX2lvKCkgYmVoYXZlIHRoZSBzYW1lIGFzIHRoZSBub24tX2lvCit2YXJpYW50cywgZXhjZXB0IGZvciBhY2NvdW50aW5nIHdhaXRpbmcgdGltZSBhcyB3YWl0aW5nIG9uIElPLCB3aGljaCBoYXMKK2FuIGltcGFjdCBvbiBob3cgdGhlIHRhc2sgaXMgYWNjb3VudGVkIGluIHNjaGVkdWxpbmcgc3RhdHMuCisKKwl2b2lkIHdhaXRfZm9yX2NvbXBsZXRpb25faW8oc3RydWN0IGNvbXBsZXRpb24gKmRvbmUpCisJdW5zaWduZWQgbG9uZyB3YWl0X2Zvcl9jb21wbGV0aW9uX2lvX3RpbWVvdXQoc3RydWN0IGNvbXBsZXRpb24gKmRvbmUKKwkJdW5zaWduZWQgbG9uZyB0aW1lb3V0KQorCisKK1NpZ25hbGluZyBjb21wbGV0aW9uczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSB0aHJlYWQgdGhhdCB3YW50cyB0byBzaWduYWwgdGhhdCB0aGUgY29uZGl0aW9ucyBmb3IgY29udGludWF0aW9uIGhhdmUgYmVlbgorYWNoaWV2ZWQgY2FsbHMgY29tcGxldGUoKSB0byBzaWduYWwgZXhhY3RseSBvbmUgb2YgdGhlIHdhaXRlcnMgdGhhdCBpdCBjYW4KK2NvbnRpbnVlLgorCisJdm9pZCBjb21wbGV0ZShzdHJ1Y3QgY29tcGxldGlvbiAqZG9uZSkKKworb3IgY2FsbHMgY29tcGxldGVfYWxsKCkgdG8gc2lnbmFsIGFsbCBjdXJyZW50IGFuZCBmdXR1cmUgd2FpdGVycy4KKworCXZvaWQgY29tcGxldGVfYWxsKHN0cnVjdCBjb21wbGV0aW9uICpkb25lKQorCitUaGUgc2lnbmFsaW5nIHdpbGwgd29yayBhcyBleHBlY3RlZCBldmVuIGlmIGNvbXBsZXRpb25zIGFyZSBzaWduYWxlZCBiZWZvcmUKK2EgdGhyZWFkIHN0YXJ0cyB3YWl0aW5nLiBUaGlzIGlzIGFjaGlldmVkIGJ5IHRoZSB3YWl0ZXIgImNvbnN1bWluZyIKKyhkZWNyZW1lbnRpbmcpIHRoZSBkb25lIGVsZW1lbnQgb2Ygc3RydWN0IGNvbXBsZXRpb24uIFdhaXRpbmcgdGhyZWFkcword2FrZXVwIG9yZGVyIGlzIHRoZSBzYW1lIGluIHdoaWNoIHRoZXkgd2VyZSBlbnF1ZXVlZCAoRklGTyBvcmRlcikuCisKK0lmIGNvbXBsZXRlKCkgaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRoZW4gdGhpcyB3aWxsIGFsbG93IGZvciB0aGF0IG51bWJlcgorb2Ygd2FpdGVycyB0byBjb250aW51ZSAtIGVhY2ggY2FsbCB0byBjb21wbGV0ZSgpIHdpbGwgc2ltcGx5IGluY3JlbWVudCB0aGUKK2RvbmUgZWxlbWVudC4gQ2FsbGluZyBjb21wbGV0ZV9hbGwoKSBtdWx0aXBsZSB0aW1lcyBpcyBhIGJ1ZyB0aG91Z2guIEJvdGgKK2NvbXBsZXRlKCkgYW5kIGNvbXBsZXRlX2FsbCgpIGNhbiBiZSBjYWxsZWQgaW4gaGFyZC1pcnEvYXRvbWljIGNvbnRleHQgc2FmZWx5LgorCitUaGVyZSBvbmx5IGNhbiBiZSBvbmUgdGhyZWFkIGNhbGxpbmcgY29tcGxldGUoKSBvciBjb21wbGV0ZV9hbGwoKSBvbiBhCitwYXJ0aWN1bGFyIHN0cnVjdCBjb21wbGV0aW9uIGF0IGFueSB0aW1lIC0gc2VyaWFsaXplZCB0aHJvdWdoIHRoZSB3YWl0CitxdWV1ZSBzcGlubG9jay4gQW55IHN1Y2ggY29uY3VycmVudCBjYWxscyB0byBjb21wbGV0ZSgpIG9yIGNvbXBsZXRlX2FsbCgpCitwcm9iYWJseSBhcmUgYSBkZXNpZ24gYnVnLgorCitTaWduYWxpbmcgY29tcGxldGlvbiBmcm9tIGhhcmQtaXJxIGNvbnRleHQgaXMgZmluZSBhcyBpdCB3aWxsIGFwcHJvcHJpYXRlbHkKK2xvY2sgd2l0aCBzcGluX2xvY2tfaXJxc2F2ZS9zcGluX3VubG9ja19pcnFyZXN0b3JlIGFuZCBpdCB3aWxsIG5ldmVyIHNsZWVwLgorCisKK3RyeV93YWl0X2Zvcl9jb21wbGV0aW9uKCkvY29tcGxldGlvbl9kb25lKCk6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgdHJ5X3dhaXRfZm9yX2NvbXBsZXRpb24oKSBmdW5jdGlvbiB3aWxsIG5vdCBwdXQgdGhlIHRocmVhZCBvbiB0aGUgd2FpdAorcXVldWUgYnV0IHJhdGhlciByZXR1cm5zIGZhbHNlIGlmIGl0IHdvdWxkIG5lZWQgdG8gZW5xdWV1ZSAoYmxvY2spIHRoZSB0aHJlYWQsCitlbHNlIGl0IGNvbnN1bWVzIG9uZSBwb3N0ZWQgY29tcGxldGlvbiBhbmQgcmV0dXJucyB0cnVlLgorCisJYm9vbCB0cnlfd2FpdF9mb3JfY29tcGxldGlvbihzdHJ1Y3QgY29tcGxldGlvbiAqZG9uZSkKKworRmluYWxseSwgdG8gY2hlY2sgdGhlIHN0YXRlIG9mIGEgY29tcGxldGlvbiB3aXRob3V0IGNoYW5naW5nIGl0IGluIGFueSB3YXksIAorY2FsbCBjb21wbGV0aW9uX2RvbmUoKSwgd2hpY2ggcmV0dXJucyBmYWxzZSBpZiB0aGVyZSBhcmUgbm8gcG9zdGVkCitjb21wbGV0aW9ucyB0aGF0IHdlcmUgbm90IHlldCBjb25zdW1lZCBieSB3YWl0ZXJzIChpbXBseWluZyB0aGF0IHRoZXJlIGFyZQord2FpdGVycykgYW5kIHRydWUgb3RoZXJ3aXNlOworCisJYm9vbCBjb21wbGV0aW9uX2RvbmUoc3RydWN0IGNvbXBsZXRpb24gKmRvbmUpCisKK0JvdGggdHJ5X3dhaXRfZm9yX2NvbXBsZXRpb24oKSBhbmQgY29tcGxldGlvbl9kb25lKCkgYXJlIHNhZmUgdG8gYmUgY2FsbGVkIGluCitoYXJkLWlycSBvciBhdG9taWMgY29udGV4dC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWFyY2gudHh0IGIvRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtYXJjaC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJmMjdiYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWFyY2gudHh0CkBAIC0wLDAgKzEsNzQgQEAKKwlDUFUgU2NoZWR1bGVyIGltcGxlbWVudGF0aW9uIGhpbnRzIGZvciBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgY29kZQorCisJTmljayBQaWdnaW4sIDIwMDUKKworQ29udGV4dCBzd2l0Y2gKKz09PT09PT09PT09PT09CisxLiBSdW5xdWV1ZSBsb2NraW5nCitCeSBkZWZhdWx0LCB0aGUgc3dpdGNoX3RvIGFyY2ggZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggdGhlIHJ1bnF1ZXVlCitsb2NrZWQuIFRoaXMgaXMgdXN1YWxseSBub3QgYSBwcm9ibGVtIHVubGVzcyBzd2l0Y2hfdG8gbWF5IG5lZWQgdG8KK3Rha2UgdGhlIHJ1bnF1ZXVlIGxvY2suIFRoaXMgaXMgdXN1YWxseSBkdWUgdG8gYSB3YWtlIHVwIG9wZXJhdGlvbiBpbgordGhlIGNvbnRleHQgc3dpdGNoLiBTZWUgYXJjaC9pYTY0L2luY2x1ZGUvYXNtL3N3aXRjaF90by5oIGZvciBhbiBleGFtcGxlLgorCitUbyByZXF1ZXN0IHRoZSBzY2hlZHVsZXIgY2FsbCBzd2l0Y2hfdG8gd2l0aCB0aGUgcnVucXVldWUgdW5sb2NrZWQsCit5b3UgbXVzdCBgI2RlZmluZSBfX0FSQ0hfV0FOVF9VTkxPQ0tFRF9DVFhTV2AgaW4gYSBoZWFkZXIgZmlsZQorKHR5cGljYWxseSB0aGUgb25lIHdoZXJlIHN3aXRjaF90byBpcyBkZWZpbmVkKS4KKworVW5sb2NrZWQgY29udGV4dCBzd2l0Y2hlcyBpbnRyb2R1Y2Ugb25seSBhIHZlcnkgbWlub3IgcGVyZm9ybWFuY2UKK3BlbmFsdHkgdG8gdGhlIGNvcmUgc2NoZWR1bGVyIGltcGxlbWVudGF0aW9uIGluIHRoZSBDT05GSUdfU01QIGNhc2UuCisKK0NQVSBpZGxlCis9PT09PT09PQorWW91ciBjcHVfaWRsZSByb3V0aW5lcyBuZWVkIHRvIG9iZXkgdGhlIGZvbGxvd2luZyBydWxlczoKKworMS4gUHJlZW1wdCBzaG91bGQgbm93IGRpc2FibGVkIG92ZXIgaWRsZSByb3V0aW5lcy4gU2hvdWxkIG9ubHkKKyAgIGJlIGVuYWJsZWQgdG8gY2FsbCBzY2hlZHVsZSgpIHRoZW4gZGlzYWJsZWQgYWdhaW4uCisKKzIuIG5lZWRfcmVzY2hlZC9USUZfTkVFRF9SRVNDSEVEIGlzIG9ubHkgZXZlciBzZXQsIGFuZCB3aWxsIG5ldmVyCisgICBiZSBjbGVhcmVkIHVudGlsIHRoZSBydW5uaW5nIHRhc2sgaGFzIGNhbGxlZCBzY2hlZHVsZSgpLiBJZGxlCisgICB0aHJlYWRzIG5lZWQgb25seSBldmVyIHF1ZXJ5IG5lZWRfcmVzY2hlZCwgYW5kIG1heSBuZXZlciBzZXQgb3IKKyAgIGNsZWFyIGl0LgorCiszLiBXaGVuIGNwdV9pZGxlIGZpbmRzIChuZWVkX3Jlc2NoZWQoKSA9PSAndHJ1ZScpLCBpdCBzaG91bGQgY2FsbAorICAgc2NoZWR1bGUoKS4gSXQgc2hvdWxkIG5vdCBjYWxsIHNjaGVkdWxlKCkgb3RoZXJ3aXNlLgorCis0LiBUaGUgb25seSB0aW1lIGludGVycnVwdHMgbmVlZCB0byBiZSBkaXNhYmxlZCB3aGVuIGNoZWNraW5nCisgICBuZWVkX3Jlc2NoZWQgaXMgaWYgd2UgYXJlIGFib3V0IHRvIHNsZWVwIHRoZSBwcm9jZXNzb3IgdW50aWwKKyAgIHRoZSBuZXh0IGludGVycnVwdCAodGhpcyBkb2Vzbid0IHByb3ZpZGUgYW55IHByb3RlY3Rpb24gb2YKKyAgIG5lZWRfcmVzY2hlZCwgaXQgcHJldmVudHMgbG9zaW5nIGFuIGludGVycnVwdCkuCisKKwk0YS4gQ29tbW9uIHByb2JsZW0gd2l0aCB0aGlzIHR5cGUgb2Ygc2xlZXAgYXBwZWFycyB0byBiZToKKwkgICAgICAgIGxvY2FsX2lycV9kaXNhYmxlKCk7CisJICAgICAgICBpZiAoIW5lZWRfcmVzY2hlZCgpKSB7CisJICAgICAgICAgICAgICAgIGxvY2FsX2lycV9lbmFibGUoKTsKKwkgICAgICAgICAgICAgICAgKioqIHJlc2NoZWQgaW50ZXJydXB0IGFycml2ZXMgaGVyZSAqKioKKwkgICAgICAgICAgICAgICAgX19hc21fXygic2xlZXAgdW50aWwgbmV4dCBpbnRlcnJ1cHQiKTsKKwkgICAgICAgIH0KKworNS4gVElGX1BPTExJTkdfTlJGTEFHIGNhbiBiZSBzZXQgYnkgaWRsZSByb3V0aW5lcyB0aGF0IGRvIG5vdAorICAgbmVlZCBhbiBpbnRlcnJ1cHQgdG8gd2FrZSB0aGVtIHVwIHdoZW4gbmVlZF9yZXNjaGVkIGdvZXMgaGlnaC4KKyAgIEluIG90aGVyIHdvcmRzLCB0aGV5IG11c3QgYmUgcGVyaW9kaWNhbGx5IHBvbGxpbmcgbmVlZF9yZXNjaGVkLAorICAgYWx0aG91Z2ggaXQgbWF5IGJlIHJlYXNvbmFibGUgdG8gZG8gc29tZSBiYWNrZ3JvdW5kIHdvcmsgb3IgZW50ZXIKKyAgIGEgbG93IENQVSBwcmlvcml0eS4KKworICAgCTVhLiBJZiBUSUZfUE9MTElOR19OUkZMQUcgaXMgc2V0LCBhbmQgd2UgZG8gZGVjaWRlIHRvIGVudGVyCisJICAgIGFuIGludGVycnVwdCBzbGVlcCwgaXQgbmVlZHMgdG8gYmUgY2xlYXJlZCB0aGVuIGEgbWVtb3J5CisJICAgIGJhcnJpZXIgaXNzdWVkIChmb2xsb3dlZCBieSBhIHRlc3Qgb2YgbmVlZF9yZXNjaGVkIHdpdGgKKwkgICAgaW50ZXJydXB0cyBkaXNhYmxlZCwgYXMgZXhwbGFpbmVkIGluIDMpLgorCithcmNoL3g4Ni9rZXJuZWwvcHJvY2Vzcy5jIGhhcyBleGFtcGxlcyBvZiBib3RoIHBvbGxpbmcgYW5kCitzbGVlcGluZyBpZGxlIGZ1bmN0aW9ucy4KKworCitQb3NzaWJsZSBhcmNoLyBwcm9ibGVtcworPT09PT09PT09PT09PT09PT09PT09PT0KKworUG9zc2libGUgYXJjaCBwcm9ibGVtcyBJIGZvdW5kIChhbmQgZWl0aGVyIHRyaWVkIHRvIGZpeCBvciBkaWRuJ3QpOgorCitpYTY0IC0gaXMgc2FmZV9oYWx0IGNhbGwgcmFjeSB2cyBpbnRlcnJ1cHRzPyAoZG9lcyBpdCBzbGVlcD8pIChTZWUgIzRhKQorCitzaDY0IC0gSXMgc2xlZXBpbmcgcmFjeSB2cyBpbnRlcnJ1cHRzPyAoU2VlICM0YSkKKworc3BhcmMgLSBJUlFzIG9uIGF0IHRoaXMgcG9pbnQoPyksIGNoYW5nZSBsb2NhbF9pcnFfc2F2ZSB0byBfZGlzYWJsZS4KKyAgICAgIC0gVE9ETzogbmVlZHMgc2Vjb25kYXJ5IENQVXMgdG8gZGlzYWJsZSBwcmVlbXB0IChTZWUgIzEpCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWJ3Yy50eHQgYi9Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1id2MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2YjE4NzMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1id2MudHh0CkBAIC0wLDAgKzEsMTIyIEBACitDRlMgQmFuZHdpZHRoIENvbnRyb2wKKz09PT09PT09PT09PT09PT09PT09PQorCitbIFRoaXMgZG9jdW1lbnQgb25seSBkaXNjdXNzZXMgQ1BVIGJhbmR3aWR0aCBjb250cm9sIGZvciBTQ0hFRF9OT1JNQUwuCisgIFRoZSBTQ0hFRF9SVCBjYXNlIGlzIGNvdmVyZWQgaW4gRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtcnQtZ3JvdXAudHh0IF0KKworQ0ZTIGJhbmR3aWR0aCBjb250cm9sIGlzIGEgQ09ORklHX0ZBSVJfR1JPVVBfU0NIRUQgZXh0ZW5zaW9uIHdoaWNoIGFsbG93cyB0aGUKK3NwZWNpZmljYXRpb24gb2YgdGhlIG1heGltdW0gQ1BVIGJhbmR3aWR0aCBhdmFpbGFibGUgdG8gYSBncm91cCBvciBoaWVyYXJjaHkuCisKK1RoZSBiYW5kd2lkdGggYWxsb3dlZCBmb3IgYSBncm91cCBpcyBzcGVjaWZpZWQgdXNpbmcgYSBxdW90YSBhbmQgcGVyaW9kLiBXaXRoaW4KK2VhY2ggZ2l2ZW4gInBlcmlvZCIgKG1pY3Jvc2Vjb25kcyksIGEgZ3JvdXAgaXMgYWxsb3dlZCB0byBjb25zdW1lIG9ubHkgdXAgdG8KKyJxdW90YSIgbWljcm9zZWNvbmRzIG9mIENQVSB0aW1lLiAgV2hlbiB0aGUgQ1BVIGJhbmR3aWR0aCBjb25zdW1wdGlvbiBvZiBhCitncm91cCBleGNlZWRzIHRoaXMgbGltaXQgKGZvciB0aGF0IHBlcmlvZCksIHRoZSB0YXNrcyBiZWxvbmdpbmcgdG8gaXRzCitoaWVyYXJjaHkgd2lsbCBiZSB0aHJvdHRsZWQgYW5kIGFyZSBub3QgYWxsb3dlZCB0byBydW4gYWdhaW4gdW50aWwgdGhlIG5leHQKK3BlcmlvZC4KKworQSBncm91cCdzIHVudXNlZCBydW50aW1lIGlzIGdsb2JhbGx5IHRyYWNrZWQsIGJlaW5nIHJlZnJlc2hlZCB3aXRoIHF1b3RhIHVuaXRzCithYm92ZSBhdCBlYWNoIHBlcmlvZCBib3VuZGFyeS4gIEFzIHRocmVhZHMgY29uc3VtZSB0aGlzIGJhbmR3aWR0aCBpdCBpcwordHJhbnNmZXJyZWQgdG8gY3B1LWxvY2FsICJzaWxvcyIgb24gYSBkZW1hbmQgYmFzaXMuICBUaGUgYW1vdW50IHRyYW5zZmVycmVkCit3aXRoaW4gZWFjaCBvZiB0aGVzZSB1cGRhdGVzIGlzIHR1bmFibGUgYW5kIGRlc2NyaWJlZCBhcyB0aGUgInNsaWNlIi4KKworTWFuYWdlbWVudAorLS0tLS0tLS0tLQorUXVvdGEgYW5kIHBlcmlvZCBhcmUgbWFuYWdlZCB3aXRoaW4gdGhlIGNwdSBzdWJzeXN0ZW0gdmlhIGNncm91cGZzLgorCitjcHUuY2ZzX3F1b3RhX3VzOiB0aGUgdG90YWwgYXZhaWxhYmxlIHJ1bi10aW1lIHdpdGhpbiBhIHBlcmlvZCAoaW4gbWljcm9zZWNvbmRzKQorY3B1LmNmc19wZXJpb2RfdXM6IHRoZSBsZW5ndGggb2YgYSBwZXJpb2QgKGluIG1pY3Jvc2Vjb25kcykKK2NwdS5zdGF0OiBleHBvcnRzIHRocm90dGxpbmcgc3RhdGlzdGljcyBbZXhwbGFpbmVkIGZ1cnRoZXIgYmVsb3ddCisKK1RoZSBkZWZhdWx0IHZhbHVlcyBhcmU6CisJY3B1LmNmc19wZXJpb2RfdXM9MTAwbXMKKwljcHUuY2ZzX3F1b3RhPS0xCisKK0EgdmFsdWUgb2YgLTEgZm9yIGNwdS5jZnNfcXVvdGFfdXMgaW5kaWNhdGVzIHRoYXQgdGhlIGdyb3VwIGRvZXMgbm90IGhhdmUgYW55CitiYW5kd2lkdGggcmVzdHJpY3Rpb24gaW4gcGxhY2UsIHN1Y2ggYSBncm91cCBpcyBkZXNjcmliZWQgYXMgYW4gdW5jb25zdHJhaW5lZAorYmFuZHdpZHRoIGdyb3VwLiAgVGhpcyByZXByZXNlbnRzIHRoZSB0cmFkaXRpb25hbCB3b3JrLWNvbnNlcnZpbmcgYmVoYXZpb3IgZm9yCitDRlMuCisKK1dyaXRpbmcgYW55ICh2YWxpZCkgcG9zaXRpdmUgdmFsdWUocykgd2lsbCBlbmFjdCB0aGUgc3BlY2lmaWVkIGJhbmR3aWR0aCBsaW1pdC4KK1RoZSBtaW5pbXVtIHF1b3RhIGFsbG93ZWQgZm9yIHRoZSBxdW90YSBvciBwZXJpb2QgaXMgMW1zLiAgVGhlcmUgaXMgYWxzbyBhbgordXBwZXIgYm91bmQgb24gdGhlIHBlcmlvZCBsZW5ndGggb2YgMXMuICBBZGRpdGlvbmFsIHJlc3RyaWN0aW9ucyBleGlzdCB3aGVuCitiYW5kd2lkdGggbGltaXRzIGFyZSB1c2VkIGluIGEgaGllcmFyY2hpY2FsIGZhc2hpb24sIHRoZXNlIGFyZSBleHBsYWluZWQgaW4KK21vcmUgZGV0YWlsIGJlbG93LgorCitXcml0aW5nIGFueSBuZWdhdGl2ZSB2YWx1ZSB0byBjcHUuY2ZzX3F1b3RhX3VzIHdpbGwgcmVtb3ZlIHRoZSBiYW5kd2lkdGggbGltaXQKK2FuZCByZXR1cm4gdGhlIGdyb3VwIHRvIGFuIHVuY29uc3RyYWluZWQgc3RhdGUgb25jZSBtb3JlLgorCitBbnkgdXBkYXRlcyB0byBhIGdyb3VwJ3MgYmFuZHdpZHRoIHNwZWNpZmljYXRpb24gd2lsbCByZXN1bHQgaW4gaXQgYmVjb21pbmcKK3VudGhyb3R0bGVkIGlmIGl0IGlzIGluIGEgY29uc3RyYWluZWQgc3RhdGUuCisKK1N5c3RlbSB3aWRlIHNldHRpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorRm9yIGVmZmljaWVuY3kgcnVuLXRpbWUgaXMgdHJhbnNmZXJyZWQgYmV0d2VlbiB0aGUgZ2xvYmFsIHBvb2wgYW5kIENQVSBsb2NhbAorInNpbG9zIiBpbiBhIGJhdGNoIGZhc2hpb24uICBUaGlzIGdyZWF0bHkgcmVkdWNlcyBnbG9iYWwgYWNjb3VudGluZyBwcmVzc3VyZQorb24gbGFyZ2Ugc3lzdGVtcy4gIFRoZSBhbW91bnQgdHJhbnNmZXJyZWQgZWFjaCB0aW1lIHN1Y2ggYW4gdXBkYXRlIGlzIHJlcXVpcmVkCitpcyBkZXNjcmliZWQgYXMgdGhlICJzbGljZSIuCisKK1RoaXMgaXMgdHVuYWJsZSB2aWEgcHJvY2ZzOgorCS9wcm9jL3N5cy9rZXJuZWwvc2NoZWRfY2ZzX2JhbmR3aWR0aF9zbGljZV91cyAoZGVmYXVsdD01bXMpCisKK0xhcmdlciBzbGljZSB2YWx1ZXMgd2lsbCByZWR1Y2UgdHJhbnNmZXIgb3ZlcmhlYWRzLCB3aGlsZSBzbWFsbGVyIHZhbHVlcyBhbGxvdworZm9yIG1vcmUgZmluZS1ncmFpbmVkIGNvbnN1bXB0aW9uLgorCitTdGF0aXN0aWNzCistLS0tLS0tLS0tCitBIGdyb3VwJ3MgYmFuZHdpZHRoIHN0YXRpc3RpY3MgYXJlIGV4cG9ydGVkIHZpYSAzIGZpZWxkcyBpbiBjcHUuc3RhdC4KKworY3B1LnN0YXQ6CistIG5yX3BlcmlvZHM6IE51bWJlciBvZiBlbmZvcmNlbWVudCBpbnRlcnZhbHMgdGhhdCBoYXZlIGVsYXBzZWQuCistIG5yX3Rocm90dGxlZDogTnVtYmVyIG9mIHRpbWVzIHRoZSBncm91cCBoYXMgYmVlbiB0aHJvdHRsZWQvbGltaXRlZC4KKy0gdGhyb3R0bGVkX3RpbWU6IFRoZSB0b3RhbCB0aW1lIGR1cmF0aW9uIChpbiBuYW5vc2Vjb25kcykgZm9yIHdoaWNoIGVudGl0aWVzCisgIG9mIHRoZSBncm91cCBoYXZlIGJlZW4gdGhyb3R0bGVkLgorCitUaGlzIGludGVyZmFjZSBpcyByZWFkLW9ubHkuCisKK0hpZXJhcmNoaWNhbCBjb25zaWRlcmF0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgaW50ZXJmYWNlIGVuZm9yY2VzIHRoYXQgYW4gaW5kaXZpZHVhbCBlbnRpdHkncyBiYW5kd2lkdGggaXMgYWx3YXlzCithdHRhaW5hYmxlLCB0aGF0IGlzOiBtYXgoY19pKSA8PSBDLiBIb3dldmVyLCBvdmVyLXN1YnNjcmlwdGlvbiBpbiB0aGUKK2FnZ3JlZ2F0ZSBjYXNlIGlzIGV4cGxpY2l0bHkgYWxsb3dlZCB0byBlbmFibGUgd29yay1jb25zZXJ2aW5nIHNlbWFudGljcword2l0aGluIGEgaGllcmFyY2h5LgorICBlLmcuIFxTdW0gKGNfaSkgbWF5IGV4Y2VlZCBDCitbIFdoZXJlIEMgaXMgdGhlIHBhcmVudCdzIGJhbmR3aWR0aCwgYW5kIGNfaSBpdHMgY2hpbGRyZW4gXQorCisKK1RoZXJlIGFyZSB0d28gd2F5cyBpbiB3aGljaCBhIGdyb3VwIG1heSBiZWNvbWUgdGhyb3R0bGVkOgorCWEuIGl0IGZ1bGx5IGNvbnN1bWVzIGl0cyBvd24gcXVvdGEgd2l0aGluIGEgcGVyaW9kCisJYi4gYSBwYXJlbnQncyBxdW90YSBpcyBmdWxseSBjb25zdW1lZCB3aXRoaW4gaXRzIHBlcmlvZAorCitJbiBjYXNlIGIpIGFib3ZlLCBldmVuIHRob3VnaCB0aGUgY2hpbGQgbWF5IGhhdmUgcnVudGltZSByZW1haW5pbmcgaXQgd2lsbCBub3QKK2JlIGFsbG93ZWQgdG8gdW50aWwgdGhlIHBhcmVudCdzIHJ1bnRpbWUgaXMgcmVmcmVzaGVkLgorCitFeGFtcGxlcworLS0tLS0tLS0KKzEuIExpbWl0IGEgZ3JvdXAgdG8gMSBDUFUgd29ydGggb2YgcnVudGltZS4KKworCUlmIHBlcmlvZCBpcyAyNTBtcyBhbmQgcXVvdGEgaXMgYWxzbyAyNTBtcywgdGhlIGdyb3VwIHdpbGwgZ2V0CisJMSBDUFUgd29ydGggb2YgcnVudGltZSBldmVyeSAyNTBtcy4KKworCSMgZWNobyAyNTAwMDAgPiBjcHUuY2ZzX3F1b3RhX3VzIC8qIHF1b3RhID0gMjUwbXMgKi8KKwkjIGVjaG8gMjUwMDAwID4gY3B1LmNmc19wZXJpb2RfdXMgLyogcGVyaW9kID0gMjUwbXMgKi8KKworMi4gTGltaXQgYSBncm91cCB0byAyIENQVXMgd29ydGggb2YgcnVudGltZSBvbiBhIG11bHRpLUNQVSBtYWNoaW5lLgorCisJV2l0aCA1MDBtcyBwZXJpb2QgYW5kIDEwMDBtcyBxdW90YSwgdGhlIGdyb3VwIGNhbiBnZXQgMiBDUFVzIHdvcnRoIG9mCisJcnVudGltZSBldmVyeSA1MDBtcy4KKworCSMgZWNobyAxMDAwMDAwID4gY3B1LmNmc19xdW90YV91cyAvKiBxdW90YSA9IDEwMDBtcyAqLworCSMgZWNobyA1MDAwMDAgPiBjcHUuY2ZzX3BlcmlvZF91cyAvKiBwZXJpb2QgPSA1MDBtcyAqLworCisJVGhlIGxhcmdlciBwZXJpb2QgaGVyZSBhbGxvd3MgZm9yIGluY3JlYXNlZCBidXJzdCBjYXBhY2l0eS4KKworMy4gTGltaXQgYSBncm91cCB0byAyMCUgb2YgMSBDUFUuCisKKwlXaXRoIDUwbXMgcGVyaW9kLCAxMG1zIHF1b3RhIHdpbGwgYmUgZXF1aXZhbGVudCB0byAyMCUgb2YgMSBDUFUuCisKKwkjIGVjaG8gMTAwMDAgPiBjcHUuY2ZzX3F1b3RhX3VzIC8qIHF1b3RhID0gMTBtcyAqLworCSMgZWNobyA1MDAwMCA+IGNwdS5jZnNfcGVyaW9kX3VzIC8qIHBlcmlvZCA9IDUwbXMgKi8KKworCUJ5IHVzaW5nIGEgc21hbGwgcGVyaW9kIGhlcmUgd2UgYXJlIGVuc3VyaW5nIGEgY29uc2lzdGVudCBsYXRlbmN5CisJcmVzcG9uc2UgYXQgdGhlIGV4cGVuc2Ugb2YgYnVyc3QgY2FwYWNpdHkuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWRlYWRsaW5lLnR4dCBiL0RvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWRlYWRsaW5lLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTE0NTEzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZGVhZGxpbmUudHh0CkBAIC0wLDAgKzEsNjQ5IEBACisJCQkgIERlYWRsaW5lIFRhc2sgU2NoZWR1bGluZworCQkJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ09OVEVOVFMKKz09PT09PT09CisKKyAwLiBXQVJOSU5HCisgMS4gT3ZlcnZpZXcKKyAyLiBTY2hlZHVsaW5nIGFsZ29yaXRobQorIDMuIFNjaGVkdWxpbmcgUmVhbC1UaW1lIFRhc2tzCisgICAzLjEgRGVmaW5pdGlvbnMKKyAgIDMuMiBTY2hlZHVsYWJpbGl0eSBBbmFseXNpcyBmb3IgVW5pcHJvY2Vzc29yIFN5c3RlbXMKKyAgIDMuMyBTY2hlZHVsYWJpbGl0eSBBbmFseXNpcyBmb3IgTXVsdGlwcm9jZXNzb3IgU3lzdGVtcworICAgMy40IFJlbGF0aW9uc2hpcCB3aXRoIFNDSEVEX0RFQURMSU5FIFBhcmFtZXRlcnMKKyA0LiBCYW5kd2lkdGggbWFuYWdlbWVudAorICAgNC4xIFN5c3RlbS13aWRlIHNldHRpbmdzCisgICA0LjIgVGFzayBpbnRlcmZhY2UKKyAgIDQuMyBEZWZhdWx0IGJlaGF2aW9yCisgNS4gVGFza3MgQ1BVIGFmZmluaXR5CisgICA1LjEgU0NIRURfREVBRExJTkUgYW5kIGNwdXNldHMgSE9XVE8KKyA2LiBGdXR1cmUgcGxhbnMKKyBBLiBUZXN0IHN1aXRlCisgQi4gTWluaW1hbCBtYWluKCkKKworCiswLiBXQVJOSU5HCis9PT09PT09PT09CisKKyBGaWRkbGluZyB3aXRoIHRoZXNlIHNldHRpbmdzIGNhbiByZXN1bHQgaW4gYW4gdW5wcmVkaWN0YWJsZSBvciBldmVuIHVuc3RhYmxlCisgc3lzdGVtIGJlaGF2aW9yLiBBcyBmb3IgLXJ0IChncm91cCkgc2NoZWR1bGluZywgaXQgaXMgYXNzdW1lZCB0aGF0IHJvb3QgdXNlcnMKKyBrbm93IHdoYXQgdGhleSdyZSBkb2luZy4KKworCisxLiBPdmVydmlldworPT09PT09PT09PT0KKworIFRoZSBTQ0hFRF9ERUFETElORSBwb2xpY3kgY29udGFpbmVkIGluc2lkZSB0aGUgc2NoZWRfZGwgc2NoZWR1bGluZyBjbGFzcyBpcworIGJhc2ljYWxseSBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgRWFybGllc3QgRGVhZGxpbmUgRmlyc3QgKEVERikgc2NoZWR1bGluZworIGFsZ29yaXRobSwgYXVnbWVudGVkIHdpdGggYSBtZWNoYW5pc20gKGNhbGxlZCBDb25zdGFudCBCYW5kd2lkdGggU2VydmVyLCBDQlMpCisgdGhhdCBtYWtlcyBpdCBwb3NzaWJsZSB0byBpc29sYXRlIHRoZSBiZWhhdmlvciBvZiB0YXNrcyBiZXR3ZWVuIGVhY2ggb3RoZXIuCisKKworMi4gU2NoZWR1bGluZyBhbGdvcml0aG0KKz09PT09PT09PT09PT09PT09PQorCisgU0NIRURfREVBRExJTkUgdXNlcyB0aHJlZSBwYXJhbWV0ZXJzLCBuYW1lZCAicnVudGltZSIsICJwZXJpb2QiLCBhbmQKKyAiZGVhZGxpbmUiLCB0byBzY2hlZHVsZSB0YXNrcy4gQSBTQ0hFRF9ERUFETElORSB0YXNrIHNob3VsZCByZWNlaXZlCisgInJ1bnRpbWUiIG1pY3Jvc2Vjb25kcyBvZiBleGVjdXRpb24gdGltZSBldmVyeSAicGVyaW9kIiBtaWNyb3NlY29uZHMsIGFuZAorIHRoZXNlICJydW50aW1lIiBtaWNyb3NlY29uZHMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gImRlYWRsaW5lIiBtaWNyb3NlY29uZHMKKyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBlcmlvZC4gIEluIG9yZGVyIHRvIGltcGxlbWVudCB0aGlzIGJlaGF2aW9yLAorIGV2ZXJ5IHRpbWUgdGhlIHRhc2sgd2FrZXMgdXAsIHRoZSBzY2hlZHVsZXIgY29tcHV0ZXMgYSAic2NoZWR1bGluZyBkZWFkbGluZSIKKyBjb25zaXN0ZW50IHdpdGggdGhlIGd1YXJhbnRlZSAodXNpbmcgdGhlIENCU1syLDNdIGFsZ29yaXRobSkuIFRhc2tzIGFyZSB0aGVuCisgc2NoZWR1bGVkIHVzaW5nIEVERlsxXSBvbiB0aGVzZSBzY2hlZHVsaW5nIGRlYWRsaW5lcyAodGhlIHRhc2sgd2l0aCB0aGUKKyBlYXJsaWVzdCBzY2hlZHVsaW5nIGRlYWRsaW5lIGlzIHNlbGVjdGVkIGZvciBleGVjdXRpb24pLiBOb3RpY2UgdGhhdCB0aGUKKyB0YXNrIGFjdHVhbGx5IHJlY2VpdmVzICJydW50aW1lIiB0aW1lIHVuaXRzIHdpdGhpbiAiZGVhZGxpbmUiIGlmIGEgcHJvcGVyCisgImFkbWlzc2lvbiBjb250cm9sIiBzdHJhdGVneSAoc2VlIFNlY3Rpb24gIjQuIEJhbmR3aWR0aCBtYW5hZ2VtZW50IikgaXMgdXNlZAorIChjbGVhcmx5LCBpZiB0aGUgc3lzdGVtIGlzIG92ZXJsb2FkZWQgdGhpcyBndWFyYW50ZWUgY2Fubm90IGJlIHJlc3BlY3RlZCkuCisKKyBTdW1taW5nIHVwLCB0aGUgQ0JTWzIsM10gYWxnb3JpdGhtIGFzc2lnbnMgc2NoZWR1bGluZyBkZWFkbGluZXMgdG8gdGFza3Mgc28KKyB0aGF0IGVhY2ggdGFzayBydW5zIGZvciBhdCBtb3N0IGl0cyBydW50aW1lIGV2ZXJ5IHBlcmlvZCwgYXZvaWRpbmcgYW55CisgaW50ZXJmZXJlbmNlIGJldHdlZW4gZGlmZmVyZW50IHRhc2tzIChiYW5kd2lkdGggaXNvbGF0aW9uKSwgd2hpbGUgdGhlIEVERlsxXQorIGFsZ29yaXRobSBzZWxlY3RzIHRoZSB0YXNrIHdpdGggdGhlIGVhcmxpZXN0IHNjaGVkdWxpbmcgZGVhZGxpbmUgYXMgdGhlIG9uZQorIHRvIGJlIGV4ZWN1dGVkIG5leHQuIFRoYW5rcyB0byB0aGlzIGZlYXR1cmUsIHRhc2tzIHRoYXQgZG8gbm90IHN0cmljdGx5IGNvbXBseQorIHdpdGggdGhlICJ0cmFkaXRpb25hbCIgcmVhbC10aW1lIHRhc2sgbW9kZWwgKHNlZSBTZWN0aW9uIDMpIGNhbiBlZmZlY3RpdmVseQorIHVzZSB0aGUgbmV3IHBvbGljeS4KKworIEluIG1vcmUgZGV0YWlscywgdGhlIENCUyBhbGdvcml0aG0gYXNzaWducyBzY2hlZHVsaW5nIGRlYWRsaW5lcyB0bworIHRhc2tzIGluIHRoZSBmb2xsb3dpbmcgd2F5OgorCisgIC0gRWFjaCBTQ0hFRF9ERUFETElORSB0YXNrIGlzIGNoYXJhY3Rlcml6ZWQgYnkgdGhlICJydW50aW1lIiwKKyAgICAiZGVhZGxpbmUiLCBhbmQgInBlcmlvZCIgcGFyYW1ldGVyczsKKworICAtIFRoZSBzdGF0ZSBvZiB0aGUgdGFzayBpcyBkZXNjcmliZWQgYnkgYSAic2NoZWR1bGluZyBkZWFkbGluZSIsIGFuZAorICAgIGEgInJlbWFpbmluZyBydW50aW1lIi4gVGhlc2UgdHdvIHBhcmFtZXRlcnMgYXJlIGluaXRpYWxseSBzZXQgdG8gMDsKKworICAtIFdoZW4gYSBTQ0hFRF9ERUFETElORSB0YXNrIHdha2VzIHVwIChiZWNvbWVzIHJlYWR5IGZvciBleGVjdXRpb24pLAorICAgIHRoZSBzY2hlZHVsZXIgY2hlY2tzIGlmCisKKyAgICAgICAgICAgICAgICAgcmVtYWluaW5nIHJ1bnRpbWUgICAgICAgICAgICAgICAgICBydW50aW1lCisgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgPiAgICAtLS0tLS0tLS0KKyAgICAgICAgc2NoZWR1bGluZyBkZWFkbGluZSAtIGN1cnJlbnQgdGltZSAgICAgICAgICAgcGVyaW9kCisKKyAgICB0aGVuLCBpZiB0aGUgc2NoZWR1bGluZyBkZWFkbGluZSBpcyBzbWFsbGVyIHRoYW4gdGhlIGN1cnJlbnQgdGltZSwgb3IKKyAgICB0aGlzIGNvbmRpdGlvbiBpcyB2ZXJpZmllZCwgdGhlIHNjaGVkdWxpbmcgZGVhZGxpbmUgYW5kIHRoZQorICAgIHJlbWFpbmluZyBydW50aW1lIGFyZSByZS1pbml0aWFsaXplZCBhcworCisgICAgICAgICBzY2hlZHVsaW5nIGRlYWRsaW5lID0gY3VycmVudCB0aW1lICsgZGVhZGxpbmUKKyAgICAgICAgIHJlbWFpbmluZyBydW50aW1lID0gcnVudGltZQorCisgICAgb3RoZXJ3aXNlLCB0aGUgc2NoZWR1bGluZyBkZWFkbGluZSBhbmQgdGhlIHJlbWFpbmluZyBydW50aW1lIGFyZQorICAgIGxlZnQgdW5jaGFuZ2VkOworCisgIC0gV2hlbiBhIFNDSEVEX0RFQURMSU5FIHRhc2sgZXhlY3V0ZXMgZm9yIGFuIGFtb3VudCBvZiB0aW1lIHQsIGl0cworICAgIHJlbWFpbmluZyBydW50aW1lIGlzIGRlY3JlYXNlZCBhcworCisgICAgICAgICByZW1haW5pbmcgcnVudGltZSA9IHJlbWFpbmluZyBydW50aW1lIC0gdAorCisgICAgKHRlY2huaWNhbGx5LCB0aGUgcnVudGltZSBpcyBkZWNyZWFzZWQgYXQgZXZlcnkgdGljaywgb3Igd2hlbiB0aGUKKyAgICB0YXNrIGlzIGRlc2NoZWR1bGVkIC8gcHJlZW1wdGVkKTsKKworICAtIFdoZW4gdGhlIHJlbWFpbmluZyBydW50aW1lIGJlY29tZXMgbGVzcyBvciBlcXVhbCB0aGFuIDAsIHRoZSB0YXNrIGlzCisgICAgc2FpZCB0byBiZSAidGhyb3R0bGVkIiAoYWxzbyBrbm93biBhcyAiZGVwbGV0ZWQiIGluIHJlYWwtdGltZSBsaXRlcmF0dXJlKQorICAgIGFuZCBjYW5ub3QgYmUgc2NoZWR1bGVkIHVudGlsIGl0cyBzY2hlZHVsaW5nIGRlYWRsaW5lLiBUaGUgInJlcGxlbmlzaG1lbnQKKyAgICB0aW1lIiBmb3IgdGhpcyB0YXNrIChzZWUgbmV4dCBpdGVtKSBpcyBzZXQgdG8gYmUgZXF1YWwgdG8gdGhlIGN1cnJlbnQKKyAgICB2YWx1ZSBvZiB0aGUgc2NoZWR1bGluZyBkZWFkbGluZTsKKworICAtIFdoZW4gdGhlIGN1cnJlbnQgdGltZSBpcyBlcXVhbCB0byB0aGUgcmVwbGVuaXNobWVudCB0aW1lIG9mIGEKKyAgICB0aHJvdHRsZWQgdGFzaywgdGhlIHNjaGVkdWxpbmcgZGVhZGxpbmUgYW5kIHRoZSByZW1haW5pbmcgcnVudGltZSBhcmUKKyAgICB1cGRhdGVkIGFzCisKKyAgICAgICAgIHNjaGVkdWxpbmcgZGVhZGxpbmUgPSBzY2hlZHVsaW5nIGRlYWRsaW5lICsgcGVyaW9kCisgICAgICAgICByZW1haW5pbmcgcnVudGltZSA9IHJlbWFpbmluZyBydW50aW1lICsgcnVudGltZQorCisKKzMuIFNjaGVkdWxpbmcgUmVhbC1UaW1lIFRhc2tzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgKiBCSUcgRkFUIFdBUk5JTkcgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGEgKG5vdC10aG9yb3VnaCkgc3VtbWFyeSBvbiBjbGFzc2ljYWwgZGVhZGxpbmUKKyAqIHNjaGVkdWxpbmcgdGhlb3J5LCBhbmQgaG93IGl0IGFwcGxpZXMgdG8gU0NIRURfREVBRExJTkUuCisgKiBUaGUgcmVhZGVyIGNhbiAic2FmZWx5IiBza2lwIHRvIFNlY3Rpb24gNCBpZiBvbmx5IGludGVyZXN0ZWQgaW4gc2VlaW5nCisgKiBob3cgdGhlIHNjaGVkdWxpbmcgcG9saWN5IGNhbiBiZSB1c2VkLiBBbnl3YXksIHdlIHN0cm9uZ2x5IHJlY29tbWVuZAorICogdG8gY29tZSBiYWNrIGhlcmUgYW5kIGNvbnRpbnVlIHJlYWRpbmcgKG9uY2UgdGhlIHVyZ2UgZm9yIHRlc3RpbmcgaXMKKyAqIHNhdGlzZmllZCA6UCkgdG8gYmUgc3VyZSBvZiBmdWxseSB1bmRlcnN0YW5kaW5nIGFsbCB0ZWNobmljYWwgZGV0YWlscy4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworIFRoZXJlIGFyZSBubyBsaW1pdGF0aW9ucyBvbiB3aGF0IGtpbmQgb2YgdGFzayBjYW4gZXhwbG9pdCB0aGlzIG5ldworIHNjaGVkdWxpbmcgZGlzY2lwbGluZSwgZXZlbiBpZiBpdCBtdXN0IGJlIHNhaWQgdGhhdCBpdCBpcyBwYXJ0aWN1bGFybHkKKyBzdWl0ZWQgZm9yIHBlcmlvZGljIG9yIHNwb3JhZGljIHJlYWwtdGltZSB0YXNrcyB0aGF0IG5lZWQgZ3VhcmFudGVlcyBvbiB0aGVpcgorIHRpbWluZyBiZWhhdmlvciwgZS5nLiwgbXVsdGltZWRpYSwgc3RyZWFtaW5nLCBjb250cm9sIGFwcGxpY2F0aW9ucywgZXRjLgorCiszLjEgRGVmaW5pdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgQSB0eXBpY2FsIHJlYWwtdGltZSB0YXNrIGlzIGNvbXBvc2VkIG9mIGEgcmVwZXRpdGlvbiBvZiBjb21wdXRhdGlvbiBwaGFzZXMKKyAodGFzayBpbnN0YW5jZXMsIG9yIGpvYnMpIHdoaWNoIGFyZSBhY3RpdmF0ZWQgb24gYSBwZXJpb2RpYyBvciBzcG9yYWRpYworIGZhc2hpb24uCisgRWFjaCBqb2IgSl9qICh3aGVyZSBKX2ogaXMgdGhlIGpedGggam9iIG9mIHRoZSB0YXNrKSBpcyBjaGFyYWN0ZXJpemVkIGJ5IGFuCisgYXJyaXZhbCB0aW1lIHJfaiAodGhlIHRpbWUgd2hlbiB0aGUgam9iIHN0YXJ0cyksIGFuIGFtb3VudCBvZiBjb21wdXRhdGlvbgorIHRpbWUgY19qIG5lZWRlZCB0byBmaW5pc2ggdGhlIGpvYiwgYW5kIGEgam9iIGFic29sdXRlIGRlYWRsaW5lIGRfaiwgd2hpY2gKKyBpcyB0aGUgdGltZSB3aXRoaW4gd2hpY2ggdGhlIGpvYiBzaG91bGQgYmUgZmluaXNoZWQuIFRoZSBtYXhpbXVtIGV4ZWN1dGlvbgorIHRpbWUgbWF4e2Nfan0gaXMgY2FsbGVkICJXb3JzdCBDYXNlIEV4ZWN1dGlvbiBUaW1lIiAoV0NFVCkgZm9yIHRoZSB0YXNrLgorIEEgcmVhbC10aW1lIHRhc2sgY2FuIGJlIHBlcmlvZGljIHdpdGggcGVyaW9kIFAgaWYgcl97aisxfSA9IHJfaiArIFAsIG9yCisgc3BvcmFkaWMgd2l0aCBtaW5pbXVtIGludGVyLWFycml2YWwgdGltZSBQIGlzIHJfe2orMX0gPj0gcl9qICsgUC4gRmluYWxseSwKKyBkX2ogPSByX2ogKyBELCB3aGVyZSBEIGlzIHRoZSB0YXNrJ3MgcmVsYXRpdmUgZGVhZGxpbmUuCisgU3VtbWluZyB1cCwgYSByZWFsLXRpbWUgdGFzayBjYW4gYmUgZGVzY3JpYmVkIGFzCisJVGFzayA9IChXQ0VULCBELCBQKQorCisgVGhlIHV0aWxpemF0aW9uIG9mIGEgcmVhbC10aW1lIHRhc2sgaXMgZGVmaW5lZCBhcyB0aGUgcmF0aW8gYmV0d2VlbiBpdHMKKyBXQ0VUIGFuZCBpdHMgcGVyaW9kIChvciBtaW5pbXVtIGludGVyLWFycml2YWwgdGltZSksIGFuZCByZXByZXNlbnRzCisgdGhlIGZyYWN0aW9uIG9mIENQVSB0aW1lIG5lZWRlZCB0byBleGVjdXRlIHRoZSB0YXNrLgorCisgSWYgdGhlIHRvdGFsIHV0aWxpemF0aW9uIFU9c3VtKFdDRVRfaS9QX2kpIGlzIGxhcmdlciB0aGFuIE0gKHdpdGggTSBlcXVhbAorIHRvIHRoZSBudW1iZXIgb2YgQ1BVcyksIHRoZW4gdGhlIHNjaGVkdWxlciBpcyB1bmFibGUgdG8gcmVzcGVjdCBhbGwgdGhlCisgZGVhZGxpbmVzLgorIE5vdGUgdGhhdCB0b3RhbCB1dGlsaXphdGlvbiBpcyBkZWZpbmVkIGFzIHRoZSBzdW0gb2YgdGhlIHV0aWxpemF0aW9ucworIFdDRVRfaS9QX2kgb3ZlciBhbGwgdGhlIHJlYWwtdGltZSB0YXNrcyBpbiB0aGUgc3lzdGVtLiBXaGVuIGNvbnNpZGVyaW5nCisgbXVsdGlwbGUgcmVhbC10aW1lIHRhc2tzLCB0aGUgcGFyYW1ldGVycyBvZiB0aGUgaS10aCB0YXNrIGFyZSBpbmRpY2F0ZWQKKyB3aXRoIHRoZSAiX2kiIHN1ZmZpeC4KKyBNb3Jlb3ZlciwgaWYgdGhlIHRvdGFsIHV0aWxpemF0aW9uIGlzIGxhcmdlciB0aGFuIE0sIHRoZW4gd2UgcmlzayBzdGFydmluZworIG5vbi0gcmVhbC10aW1lIHRhc2tzIGJ5IHJlYWwtdGltZSB0YXNrcy4KKyBJZiwgaW5zdGVhZCwgdGhlIHRvdGFsIHV0aWxpemF0aW9uIGlzIHNtYWxsZXIgdGhhbiBNLCB0aGVuIG5vbiByZWFsLXRpbWUKKyB0YXNrcyB3aWxsIG5vdCBiZSBzdGFydmVkIGFuZCB0aGUgc3lzdGVtIG1pZ2h0IGJlIGFibGUgdG8gcmVzcGVjdCBhbGwgdGhlCisgZGVhZGxpbmVzLgorIEFzIGEgbWF0dGVyIG9mIGZhY3QsIGluIHRoaXMgY2FzZSBpdCBpcyBwb3NzaWJsZSB0byBwcm92aWRlIGFuIHVwcGVyIGJvdW5kCisgZm9yIHRhcmRpbmVzcyAoZGVmaW5lZCBhcyB0aGUgbWF4aW11bSBiZXR3ZWVuIDAgYW5kIHRoZSBkaWZmZXJlbmNlCisgYmV0d2VlbiB0aGUgZmluaXNoaW5nIHRpbWUgb2YgYSBqb2IgYW5kIGl0cyBhYnNvbHV0ZSBkZWFkbGluZSkuCisgTW9yZSBwcmVjaXNlbHksIGl0IGNhbiBiZSBwcm92ZW4gdGhhdCB1c2luZyBhIGdsb2JhbCBFREYgc2NoZWR1bGVyIHRoZQorIG1heGltdW0gdGFyZGluZXNzIG9mIGVhY2ggdGFzayBpcyBzbWFsbGVyIG9yIGVxdWFsIHRoYW4KKwkoKE0g4oiSIDEpIMK3IFdDRVRfbWF4IOKIkiBXQ0VUX21pbikvKE0g4oiSIChNIOKIkiAyKSDCtyBVX21heCkgKyBXQ0VUX21heAorIHdoZXJlIFdDRVRfbWF4ID0gbWF4e1dDRVRfaX0gaXMgdGhlIG1heGltdW0gV0NFVCwgV0NFVF9taW49bWlue1dDRVRfaX0KKyBpcyB0aGUgbWluaW11bSBXQ0VULCBhbmQgVV9tYXggPSBtYXh7V0NFVF9pL1BfaX0gaXMgdGhlIG1heGltdW0KKyB1dGlsaXphdGlvblsxMl0uCisKKzMuMiBTY2hlZHVsYWJpbGl0eSBBbmFseXNpcyBmb3IgVW5pcHJvY2Vzc29yIFN5c3RlbXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgSWYgTT0xICh1bmlwcm9jZXNzb3Igc3lzdGVtKSwgb3IgaW4gY2FzZSBvZiBwYXJ0aXRpb25lZCBzY2hlZHVsaW5nIChlYWNoCisgcmVhbC10aW1lIHRhc2sgaXMgc3RhdGljYWxseSBhc3NpZ25lZCB0byBvbmUgYW5kIG9ubHkgb25lIENQVSksIGl0IGlzCisgcG9zc2libGUgdG8gZm9ybWFsbHkgY2hlY2sgaWYgYWxsIHRoZSBkZWFkbGluZXMgYXJlIHJlc3BlY3RlZC4KKyBJZiBEX2kgPSBQX2kgZm9yIGFsbCB0YXNrcywgdGhlbiBFREYgaXMgYWJsZSB0byByZXNwZWN0IGFsbCB0aGUgZGVhZGxpbmVzCisgb2YgYWxsIHRoZSB0YXNrcyBleGVjdXRpbmcgb24gYSBDUFUgaWYgYW5kIG9ubHkgaWYgdGhlIHRvdGFsIHV0aWxpemF0aW9uCisgb2YgdGhlIHRhc2tzIHJ1bm5pbmcgb24gc3VjaCBhIENQVSBpcyBzbWFsbGVyIG9yIGVxdWFsIHRoYW4gMS4KKyBJZiBEX2kgIT0gUF9pIGZvciBzb21lIHRhc2ssIHRoZW4gaXQgaXMgcG9zc2libGUgdG8gZGVmaW5lIHRoZSBkZW5zaXR5IG9mCisgYSB0YXNrIGFzIFdDRVRfaS9taW57RF9pLFBfaX0sIGFuZCBFREYgaXMgYWJsZSB0byByZXNwZWN0IGFsbCB0aGUgZGVhZGxpbmVzCisgb2YgYWxsIHRoZSB0YXNrcyBydW5uaW5nIG9uIGEgQ1BVIGlmIHRoZSBzdW0gb2YgdGhlIGRlbnNpdGllcyBvZiB0aGUgdGFza3MKKyBydW5uaW5nIG9uIHN1Y2ggYSBDUFUgaXMgc21hbGxlciBvciBlcXVhbCB0aGFuIDE6CisJc3VtKFdDRVRfaSAvIG1pbntEX2ksIFBfaX0pIDw9IDEKKyBJdCBpcyBpbXBvcnRhbnQgdG8gbm90aWNlIHRoYXQgdGhpcyBjb25kaXRpb24gaXMgb25seSBzdWZmaWNpZW50LCBhbmQgbm90CisgbmVjZXNzYXJ5OiB0aGVyZSBhcmUgdGFzayBzZXRzIHRoYXQgYXJlIHNjaGVkdWxhYmxlLCBidXQgZG8gbm90IHJlc3BlY3QgdGhlCisgY29uZGl0aW9uLiBGb3IgZXhhbXBsZSwgY29uc2lkZXIgdGhlIHRhc2sgc2V0IHtUYXNrXzEsVGFza18yfSBjb21wb3NlZCBieQorIFRhc2tfMT0oNTBtcyw1MG1zLDEwMG1zKSBhbmQgVGFza18yPSgxMG1zLDEwMG1zLDEwMG1zKS4KKyBFREYgaXMgY2xlYXJseSBhYmxlIHRvIHNjaGVkdWxlIHRoZSB0d28gdGFza3Mgd2l0aG91dCBtaXNzaW5nIGFueSBkZWFkbGluZQorIChUYXNrXzEgaXMgc2NoZWR1bGVkIGFzIHNvb24gYXMgaXQgaXMgcmVsZWFzZWQsIGFuZCBmaW5pc2hlcyBqdXN0IGluIHRpbWUKKyB0byByZXNwZWN0IGl0cyBkZWFkbGluZTsgVGFza18yIGlzIHNjaGVkdWxlZCBpbW1lZGlhdGVseSBhZnRlciBUYXNrXzEsIGhlbmNlCisgaXRzIHJlc3BvbnNlIHRpbWUgY2Fubm90IGJlIGxhcmdlciB0aGFuIDUwbXMgKyAxMG1zID0gNjBtcykgZXZlbiBpZgorCTUwIC8gbWluezUwLDEwMH0gKyAxMCAvIG1pbnsxMDAsIDEwMH0gPSA1MCAvIDUwICsgMTAgLyAxMDAgPSAxLjEKKyBPZiBjb3Vyc2UgaXQgaXMgcG9zc2libGUgdG8gdGVzdCB0aGUgZXhhY3Qgc2NoZWR1bGFiaWxpdHkgb2YgdGFza3Mgd2l0aAorIERfaSAhPSBQX2kgKGNoZWNraW5nIGEgY29uZGl0aW9uIHRoYXQgaXMgYm90aCBzdWZmaWNpZW50IGFuZCBuZWNlc3NhcnkpLAorIGJ1dCB0aGlzIGNhbm5vdCBiZSBkb25lIGJ5IGNvbXBhcmluZyB0aGUgdG90YWwgdXRpbGl6YXRpb24gb3IgZGVuc2l0eSB3aXRoCisgYSBjb25zdGFudC4gSW5zdGVhZCwgdGhlIHNvIGNhbGxlZCAicHJvY2Vzc29yIGRlbWFuZCIgYXBwcm9hY2ggY2FuIGJlIHVzZWQsCisgY29tcHV0aW5nIHRoZSB0b3RhbCBhbW91bnQgb2YgQ1BVIHRpbWUgaCh0KSBuZWVkZWQgYnkgYWxsIHRoZSB0YXNrcyB0bworIHJlc3BlY3QgYWxsIG9mIHRoZWlyIGRlYWRsaW5lcyBpbiBhIHRpbWUgaW50ZXJ2YWwgb2Ygc2l6ZSB0LCBhbmQgY29tcGFyaW5nCisgc3VjaCBhIHRpbWUgd2l0aCB0aGUgaW50ZXJ2YWwgc2l6ZSB0LiBJZiBoKHQpIGlzIHNtYWxsZXIgdGhhbiB0ICh0aGF0IGlzLAorIHRoZSBhbW91bnQgb2YgdGltZSBuZWVkZWQgYnkgdGhlIHRhc2tzIGluIGEgdGltZSBpbnRlcnZhbCBvZiBzaXplIHQgaXMKKyBzbWFsbGVyIHRoYW4gdGhlIHNpemUgb2YgdGhlIGludGVydmFsKSBmb3IgYWxsIHRoZSBwb3NzaWJsZSB2YWx1ZXMgb2YgdCwgdGhlbgorIEVERiBpcyBhYmxlIHRvIHNjaGVkdWxlIHRoZSB0YXNrcyByZXNwZWN0aW5nIGFsbCBvZiB0aGVpciBkZWFkbGluZXMuIFNpbmNlCisgcGVyZm9ybWluZyB0aGlzIGNoZWNrIGZvciBhbGwgcG9zc2libGUgdmFsdWVzIG9mIHQgaXMgaW1wb3NzaWJsZSwgaXQgaGFzIGJlZW4KKyBwcm92ZW5bNCw1LDZdIHRoYXQgaXQgaXMgc3VmZmljaWVudCB0byBwZXJmb3JtIHRoZSB0ZXN0IGZvciB2YWx1ZXMgb2YgdAorIGJldHdlZW4gMCBhbmQgYSBtYXhpbXVtIHZhbHVlIEwuIFRoZSBjaXRlZCBwYXBlcnMgY29udGFpbiBhbGwgb2YgdGhlCisgbWF0aGVtYXRpY2FsIGRldGFpbHMgYW5kIGV4cGxhaW4gaG93IHRvIGNvbXB1dGUgaCh0KSBhbmQgTC4KKyBJbiBhbnkgY2FzZSwgdGhpcyBraW5kIG9mIGFuYWx5c2lzIGlzIHRvbyBjb21wbGV4IGFzIHdlbGwgYXMgdG9vCisgdGltZS1jb25zdW1pbmcgdG8gYmUgcGVyZm9ybWVkIG9uLWxpbmUuIEhlbmNlLCBhcyBleHBsYWluZWQgaW4gU2VjdGlvbgorIDQgTGludXggdXNlcyBhbiBhZG1pc3Npb24gdGVzdCBiYXNlZCBvbiB0aGUgdGFza3MnIHV0aWxpemF0aW9ucy4KKworMy4zIFNjaGVkdWxhYmlsaXR5IEFuYWx5c2lzIGZvciBNdWx0aXByb2Nlc3NvciBTeXN0ZW1zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIE9uIG11bHRpcHJvY2Vzc29yIHN5c3RlbXMgd2l0aCBnbG9iYWwgRURGIHNjaGVkdWxpbmcgKG5vbiBwYXJ0aXRpb25lZAorIHN5c3RlbXMpLCBhIHN1ZmZpY2llbnQgdGVzdCBmb3Igc2NoZWR1bGFiaWxpdHkgY2FuIG5vdCBiZSBiYXNlZCBvbiB0aGUKKyB1dGlsaXphdGlvbnMgb3IgZGVuc2l0aWVzOiBpdCBjYW4gYmUgc2hvd24gdGhhdCBldmVuIGlmIERfaSA9IFBfaSB0YXNrCisgc2V0cyB3aXRoIHV0aWxpemF0aW9ucyBzbGlnaHRseSBsYXJnZXIgdGhhbiAxIGNhbiBtaXNzIGRlYWRsaW5lcyByZWdhcmRsZXNzCisgb2YgdGhlIG51bWJlciBvZiBDUFVzLgorCisgQ29uc2lkZXIgYSBzZXQge1Rhc2tfMSwuLi5UYXNrX3tNKzF9fSBvZiBNKzEgdGFza3Mgb24gYSBzeXN0ZW0gd2l0aCBNCisgQ1BVcywgd2l0aCB0aGUgZmlyc3QgdGFzayBUYXNrXzE9KFAsUCxQKSBoYXZpbmcgcGVyaW9kLCByZWxhdGl2ZSBkZWFkbGluZQorIGFuZCBXQ0VUIGVxdWFsIHRvIFAuIFRoZSByZW1haW5pbmcgTSB0YXNrcyBUYXNrX2k9KGUsUC0xLFAtMSkgaGF2ZSBhbgorIGFyYml0cmFyaWx5IHNtYWxsIHdvcnN0IGNhc2UgZXhlY3V0aW9uIHRpbWUgKGluZGljYXRlZCBhcyAiZSIgaGVyZSkgYW5kIGEKKyBwZXJpb2Qgc21hbGxlciB0aGFuIHRoZSBvbmUgb2YgdGhlIGZpcnN0IHRhc2suIEhlbmNlLCBpZiBhbGwgdGhlIHRhc2tzCisgYWN0aXZhdGUgYXQgdGhlIHNhbWUgdGltZSB0LCBnbG9iYWwgRURGIHNjaGVkdWxlcyB0aGVzZSBNIHRhc2tzIGZpcnN0CisgKGJlY2F1c2UgdGhlaXIgYWJzb2x1dGUgZGVhZGxpbmVzIGFyZSBlcXVhbCB0byB0ICsgUCAtIDEsIGhlbmNlIHRoZXkgYXJlCisgc21hbGxlciB0aGFuIHRoZSBhYnNvbHV0ZSBkZWFkbGluZSBvZiBUYXNrXzEsIHdoaWNoIGlzIHQgKyBQKS4gQXMgYQorIHJlc3VsdCwgVGFza18xIGNhbiBiZSBzY2hlZHVsZWQgb25seSBhdCB0aW1lIHQgKyBlLCBhbmQgd2lsbCBmaW5pc2ggYXQKKyB0aW1lIHQgKyBlICsgUCwgYWZ0ZXIgaXRzIGFic29sdXRlIGRlYWRsaW5lLiBUaGUgdG90YWwgdXRpbGl6YXRpb24gb2YgdGhlCisgdGFzayBzZXQgaXMgVSA9IE0gwrcgZSAvIChQIC0gMSkgKyBQIC8gUCA9IE0gwrcgZSAvIChQIC0gMSkgKyAxLCBhbmQgZm9yIHNtYWxsCisgdmFsdWVzIG9mIGUgdGhpcyBjYW4gYmVjb21lIHZlcnkgY2xvc2UgdG8gMS4gVGhpcyBpcyBrbm93biBhcyAiRGhhbGwncworIGVmZmVjdCJbN10uIE5vdGU6IHRoZSBleGFtcGxlIGluIHRoZSBvcmlnaW5hbCBwYXBlciBieSBEaGFsbCBoYXMgYmVlbgorIHNsaWdodGx5IHNpbXBsaWZpZWQgaGVyZSAoZm9yIGV4YW1wbGUsIERoYWxsIG1vcmUgY29ycmVjdGx5IGNvbXB1dGVkCisgbGltX3tlLT4wfVUpLgorCisgTW9yZSBjb21wbGV4IHNjaGVkdWxhYmlsaXR5IHRlc3RzIGZvciBnbG9iYWwgRURGIGhhdmUgYmVlbiBkZXZlbG9wZWQgaW4KKyByZWFsLXRpbWUgbGl0ZXJhdHVyZVs4LDldLCBidXQgdGhleSBhcmUgbm90IGJhc2VkIG9uIGEgc2ltcGxlIGNvbXBhcmlzb24KKyBiZXR3ZWVuIHRvdGFsIHV0aWxpemF0aW9uIChvciBkZW5zaXR5KSBhbmQgYSBmaXhlZCBjb25zdGFudC4gSWYgYWxsIHRhc2tzCisgaGF2ZSBEX2kgPSBQX2ksIGEgc3VmZmljaWVudCBzY2hlZHVsYWJpbGl0eSBjb25kaXRpb24gY2FuIGJlIGV4cHJlc3NlZCBpbgorIGEgc2ltcGxlIHdheToKKwlzdW0oV0NFVF9pIC8gUF9pKSA8PSBNIC0gKE0gLSAxKSDCtyBVX21heAorIHdoZXJlIFVfbWF4ID0gbWF4e1dDRVRfaSAvIFBfaX1bMTBdLiBOb3RpY2UgdGhhdCBmb3IgVV9tYXggPSAxLAorIE0gLSAoTSAtIDEpIMK3IFVfbWF4IGJlY29tZXMgTSAtIE0gKyAxID0gMSBhbmQgdGhpcyBzY2hlZHVsYWJpbGl0eSBjb25kaXRpb24KKyBqdXN0IGNvbmZpcm1zIHRoZSBEaGFsbCdzIGVmZmVjdC4gQSBtb3JlIGNvbXBsZXRlIHN1cnZleSBvZiB0aGUgbGl0ZXJhdHVyZQorIGFib3V0IHNjaGVkdWxhYmlsaXR5IHRlc3RzIGZvciBtdWx0aS1wcm9jZXNzb3IgcmVhbC10aW1lIHNjaGVkdWxpbmcgY2FuIGJlCisgZm91bmQgaW4gWzExXS4KKworIEFzIHNlZW4sIGVuZm9yY2luZyB0aGF0IHRoZSB0b3RhbCB1dGlsaXphdGlvbiBpcyBzbWFsbGVyIHRoYW4gTSBkb2VzIG5vdAorIGd1YXJhbnRlZSB0aGF0IGdsb2JhbCBFREYgc2NoZWR1bGVzIHRoZSB0YXNrcyB3aXRob3V0IG1pc3NpbmcgYW55IGRlYWRsaW5lCisgKGluIG90aGVyIHdvcmRzLCBnbG9iYWwgRURGIGlzIG5vdCBhbiBvcHRpbWFsIHNjaGVkdWxpbmcgYWxnb3JpdGhtKS4gSG93ZXZlciwKKyBhIHRvdGFsIHV0aWxpemF0aW9uIHNtYWxsZXIgdGhhbiBNIGlzIGVub3VnaCB0byBndWFyYW50ZWUgdGhhdCBub24gcmVhbC10aW1lCisgdGFza3MgYXJlIG5vdCBzdGFydmVkIGFuZCB0aGF0IHRoZSB0YXJkaW5lc3Mgb2YgcmVhbC10aW1lIHRhc2tzIGhhcyBhbiB1cHBlcgorIGJvdW5kWzEyXSAoYXMgcHJldmlvdXNseSBub3RlZCkuIERpZmZlcmVudCBib3VuZHMgb24gdGhlIG1heGltdW0gdGFyZGluZXNzCisgZXhwZXJpZW5jZWQgYnkgcmVhbC10aW1lIHRhc2tzIGhhdmUgYmVlbiBkZXZlbG9wZWQgaW4gdmFyaW91cyBwYXBlcnNbMTMsMTRdLAorIGJ1dCB0aGUgdGhlb3JldGljYWwgcmVzdWx0IHRoYXQgaXMgaW1wb3J0YW50IGZvciBTQ0hFRF9ERUFETElORSBpcyB0aGF0IGlmCisgdGhlIHRvdGFsIHV0aWxpemF0aW9uIGlzIHNtYWxsZXIgb3IgZXF1YWwgdGhhbiBNIHRoZW4gdGhlIHJlc3BvbnNlIHRpbWVzIG9mCisgdGhlIHRhc2tzIGFyZSBsaW1pdGVkLgorCiszLjQgUmVsYXRpb25zaGlwIHdpdGggU0NIRURfREVBRExJTkUgUGFyYW1ldGVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyBGaW5hbGx5LCBpdCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlCisgU0NIRURfREVBRExJTkUgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIGRlc2NyaWJlZCBpbiBTZWN0aW9uIDIgKHJ1bnRpbWUsCisgZGVhZGxpbmUgYW5kIHBlcmlvZCkgYW5kIHRoZSByZWFsLXRpbWUgdGFzayBwYXJhbWV0ZXJzIChXQ0VULCBELCBQKQorIGRlc2NyaWJlZCBpbiB0aGlzIHNlY3Rpb24uIE5vdGUgdGhhdCB0aGUgdGFza3MnIHRlbXBvcmFsIGNvbnN0cmFpbnRzIGFyZQorIHJlcHJlc2VudGVkIGJ5IGl0cyBhYnNvbHV0ZSBkZWFkbGluZXMgZF9qID0gcl9qICsgRCBkZXNjcmliZWQgYWJvdmUsIHdoaWxlCisgU0NIRURfREVBRExJTkUgc2NoZWR1bGVzIHRoZSB0YXNrcyBhY2NvcmRpbmcgdG8gc2NoZWR1bGluZyBkZWFkbGluZXMgKHNlZQorIFNlY3Rpb24gMikuCisgSWYgYW4gYWRtaXNzaW9uIHRlc3QgaXMgdXNlZCB0byBndWFyYW50ZWUgdGhhdCB0aGUgc2NoZWR1bGluZyBkZWFkbGluZXMKKyBhcmUgcmVzcGVjdGVkLCB0aGVuIFNDSEVEX0RFQURMSU5FIGNhbiBiZSB1c2VkIHRvIHNjaGVkdWxlIHJlYWwtdGltZSB0YXNrcworIGd1YXJhbnRlZWluZyB0aGF0IGFsbCB0aGUgam9icycgZGVhZGxpbmVzIG9mIGEgdGFzayBhcmUgcmVzcGVjdGVkLgorIEluIG9yZGVyIHRvIGRvIHRoaXMsIGEgdGFzayBtdXN0IGJlIHNjaGVkdWxlZCBieSBzZXR0aW5nOgorCisgIC0gcnVudGltZSA+PSBXQ0VUCisgIC0gZGVhZGxpbmUgPSBECisgIC0gcGVyaW9kIDw9IFAKKworIElPVywgaWYgcnVudGltZSA+PSBXQ0VUIGFuZCBpZiBwZXJpb2QgaXMgPD0gUCwgdGhlbiB0aGUgc2NoZWR1bGluZyBkZWFkbGluZXMKKyBhbmQgdGhlIGFic29sdXRlIGRlYWRsaW5lcyAoZF9qKSBjb2luY2lkZSwgc28gYSBwcm9wZXIgYWRtaXNzaW9uIGNvbnRyb2wKKyBhbGxvd3MgdG8gcmVzcGVjdCB0aGUgam9icycgYWJzb2x1dGUgZGVhZGxpbmVzIGZvciB0aGlzIHRhc2sgKHRoaXMgaXMgd2hhdCBpcworIGNhbGxlZCAiaGFyZCBzY2hlZHVsYWJpbGl0eSBwcm9wZXJ0eSIgYW5kIGlzIGFuIGV4dGVuc2lvbiBvZiBMZW1tYSAxIG9mIFsyXSkuCisgTm90aWNlIHRoYXQgaWYgcnVudGltZSA+IGRlYWRsaW5lIHRoZSBhZG1pc3Npb24gY29udHJvbCB3aWxsIHN1cmVseSByZWplY3QKKyB0aGlzIHRhc2ssIGFzIGl0IGlzIG5vdCBwb3NzaWJsZSB0byByZXNwZWN0IGl0cyB0ZW1wb3JhbCBjb25zdHJhaW50cy4KKworIFJlZmVyZW5jZXM6CisgIDEgLSBDLiBMLiBMaXUgYW5kIEouIFcuIExheWxhbmQuIFNjaGVkdWxpbmcgYWxnb3JpdGhtcyBmb3IgbXVsdGlwcm9ncmFtLQorICAgICAgbWluZyBpbiBhIGhhcmQtcmVhbC10aW1lIGVudmlyb25tZW50LiBKb3VybmFsIG9mIHRoZSBBc3NvY2lhdGlvbiBmb3IKKyAgICAgIENvbXB1dGluZyBNYWNoaW5lcnksIDIwKDEpLCAxOTczLgorICAyIC0gTC4gQWJlbmkgLCBHLiBCdXR0YXp6by4gSW50ZWdyYXRpbmcgTXVsdGltZWRpYSBBcHBsaWNhdGlvbnMgaW4gSGFyZAorICAgICAgUmVhbC1UaW1lIFN5c3RlbXMuIFByb2NlZWRpbmdzIG9mIHRoZSAxOXRoIElFRUUgUmVhbC10aW1lIFN5c3RlbXMKKyAgICAgIFN5bXBvc2l1bSwgMTk5OC4gaHR0cDovL3JldGlzLnNzc3VwLml0L35naW9yZ2lvL3BhcHMvMTk5OC9ydHNzOTgtY2JzLnBkZgorICAzIC0gTC4gQWJlbmkuIFNlcnZlciBNZWNoYW5pc21zIGZvciBNdWx0aW1lZGlhIEFwcGxpY2F0aW9ucy4gUmVUaVMgTGFiCisgICAgICBUZWNobmljYWwgUmVwb3J0LiBodHRwOi8vZGlzaS51bml0bi5pdC9+YWJlbmkvdHItOTgtMDEucGRmCisgIDQgLSBKLiBZLiBMZXVuZyBhbmQgTS5MLiBNZXJyaWwuIEEgTm90ZSBvbiBQcmVlbXB0aXZlIFNjaGVkdWxpbmcgb2YKKyAgICAgIFBlcmlvZGljLCBSZWFsLVRpbWUgVGFza3MuIEluZm9ybWF0aW9uIFByb2Nlc3NpbmcgTGV0dGVycywgdm9sLiAxMSwKKyAgICAgIG5vLiAzLCBwcC4gMTE1LTExOCwgMTk4MC4KKyAgNSAtIFMuIEsuIEJhcnVhaCwgQS4gSy4gTW9rIGFuZCBMLiBFLiBSb3NpZXIuIFByZWVtcHRpdmVseSBTY2hlZHVsaW5nCisgICAgICBIYXJkLVJlYWwtVGltZSBTcG9yYWRpYyBUYXNrcyBvbiBPbmUgUHJvY2Vzc29yLiBQcm9jZWVkaW5ncyBvZiB0aGUKKyAgICAgIDExdGggSUVFRSBSZWFsLXRpbWUgU3lzdGVtcyBTeW1wb3NpdW0sIDE5OTAuCisgIDYgLSBTLiBLLiBCYXJ1YWgsIEwuIEUuIFJvc2llciBhbmQgUi4gUi4gSG93ZWxsLiBBbGdvcml0aG1zIGFuZCBDb21wbGV4aXR5CisgICAgICBDb25jZXJuaW5nIHRoZSBQcmVlbXB0aXZlIFNjaGVkdWxpbmcgb2YgUGVyaW9kaWMgUmVhbC1UaW1lIHRhc2tzIG9uCisgICAgICBPbmUgUHJvY2Vzc29yLiBSZWFsLVRpbWUgU3lzdGVtcyBKb3VybmFsLCB2b2wuIDQsIG5vLiAyLCBwcCAzMDEtMzI0LAorICAgICAgMTk5MC4KKyAgNyAtIFMuIEouIERoYWxsIGFuZCBDLiBMLiBMaXUuIE9uIGEgcmVhbC10aW1lIHNjaGVkdWxpbmcgcHJvYmxlbS4gT3BlcmF0aW9ucworICAgICAgcmVzZWFyY2gsIHZvbC4gMjYsIG5vLiAxLCBwcCAxMjctMTQwLCAxOTc4LgorICA4IC0gVC4gQmFrZXIuIE11bHRpcHJvY2Vzc29yIEVERiBhbmQgRGVhZGxpbmUgTW9ub3RvbmljIFNjaGVkdWxhYmlsaXR5CisgICAgICBBbmFseXNpcy4gUHJvY2VlZGluZ3Mgb2YgdGhlIDI0dGggSUVFRSBSZWFsLVRpbWUgU3lzdGVtcyBTeW1wb3NpdW0sIDIwMDMuCisgIDkgLSBULiBCYWtlci4gQW4gQW5hbHlzaXMgb2YgRURGIFNjaGVkdWxhYmlsaXR5IG9uIGEgTXVsdGlwcm9jZXNzb3IuCisgICAgICBJRUVFIFRyYW5zYWN0aW9ucyBvbiBQYXJhbGxlbCBhbmQgRGlzdHJpYnV0ZWQgU3lzdGVtcywgdm9sLiAxNiwgbm8uIDgsCisgICAgICBwcCA3NjAtNzY4LCAyMDA1LgorICAxMCAtIEouIEdvb3NzZW5zLCBTLiBGdW5rIGFuZCBTLiBCYXJ1YWgsIFByaW9yaXR5LURyaXZlbiBTY2hlZHVsaW5nIG9mCisgICAgICAgUGVyaW9kaWMgVGFzayBTeXN0ZW1zIG9uIE11bHRpcHJvY2Vzc29ycy4gUmVhbC1UaW1lIFN5c3RlbXMgSm91cm5hbCwKKyAgICAgICB2b2wuIDI1LCBuby4gMuKAkzMsIHBwLiAxODfigJMyMDUsIDIwMDMuCisgIDExIC0gUi4gRGF2aXMgYW5kIEEuIEJ1cm5zLiBBIFN1cnZleSBvZiBIYXJkIFJlYWwtVGltZSBTY2hlZHVsaW5nIGZvcgorICAgICAgIE11bHRpcHJvY2Vzc29yIFN5c3RlbXMuIEFDTSBDb21wdXRpbmcgU3VydmV5cywgdm9sLiA0Mywgbm8uIDQsIDIwMTEuCisgICAgICAgaHR0cDovL3d3dy11c2Vycy5jcy55b3JrLmFjLnVrL35yb2JkYXZpcy9wYXBlcnMvTVBTdXJ2ZXl2NS4wLnBkZgorICAxMiAtIFUuIEMuIERldmkgYW5kIEouIEguIEFuZGVyc29uLiBUYXJkaW5lc3MgQm91bmRzIHVuZGVyIEdsb2JhbCBFREYKKyAgICAgICBTY2hlZHVsaW5nIG9uIGEgTXVsdGlwcm9jZXNzb3IuIFJlYWwtVGltZSBTeXN0ZW1zIEpvdXJuYWwsIHZvbC4gMzIsCisgICAgICAgbm8uIDIsIHBwIDEzMy0xODksIDIwMDguCisgIDEzIC0gUC4gVmFsZW50ZSBhbmQgRy4gTGlwYXJpLiBBbiBVcHBlciBCb3VuZCB0byB0aGUgTGF0ZW5lc3Mgb2YgU29mdAorICAgICAgIFJlYWwtVGltZSBUYXNrcyBTY2hlZHVsZWQgYnkgRURGIG9uIE11bHRpcHJvY2Vzc29ycy4gUHJvY2VlZGluZ3Mgb2YKKyAgICAgICB0aGUgMjZ0aCBJRUVFIFJlYWwtVGltZSBTeXN0ZW1zIFN5bXBvc2l1bSwgMjAwNS4KKyAgMTQgLSBKLiBFcmlja3NvbiwgVS4gRGV2aSBhbmQgUy4gQmFydWFoLiBJbXByb3ZlZCB0YXJkaW5lc3MgYm91bmRzIGZvcgorICAgICAgIEdsb2JhbCBFREYuIFByb2NlZWRpbmdzIG9mIHRoZSAyMm5kIEV1cm9taWNybyBDb25mZXJlbmNlIG9uCisgICAgICAgUmVhbC1UaW1lIFN5c3RlbXMsIDIwMTAuCisKKworNC4gQmFuZHdpZHRoIG1hbmFnZW1lbnQKKz09PT09PT09PT09PT09PT09PT09PT09CisKKyBBcyBwcmV2aW91c2x5IG1lbnRpb25lZCwgaW4gb3JkZXIgZm9yIC1kZWFkbGluZSBzY2hlZHVsaW5nIHRvIGJlCisgZWZmZWN0aXZlIGFuZCB1c2VmdWwgKHRoYXQgaXMsIHRvIGJlIGFibGUgdG8gcHJvdmlkZSAicnVudGltZSIgdGltZSB1bml0cworIHdpdGhpbiAiZGVhZGxpbmUiKSwgaXQgaXMgaW1wb3J0YW50IHRvIGhhdmUgc29tZSBtZXRob2QgdG8ga2VlcCB0aGUgYWxsb2NhdGlvbgorIG9mIHRoZSBhdmFpbGFibGUgZnJhY3Rpb25zIG9mIENQVSB0aW1lIHRvIHRoZSB2YXJpb3VzIHRhc2tzIHVuZGVyIGNvbnRyb2wuCisgVGhpcyBpcyB1c3VhbGx5IGNhbGxlZCAiYWRtaXNzaW9uIGNvbnRyb2wiIGFuZCBpZiBpdCBpcyBub3QgcGVyZm9ybWVkLCB0aGVuCisgbm8gZ3VhcmFudGVlIGNhbiBiZSBnaXZlbiBvbiB0aGUgYWN0dWFsIHNjaGVkdWxpbmcgb2YgdGhlIC1kZWFkbGluZSB0YXNrcy4KKworIEFzIGFscmVhZHkgc3RhdGVkIGluIFNlY3Rpb24gMywgYSBuZWNlc3NhcnkgY29uZGl0aW9uIHRvIGJlIHJlc3BlY3RlZCB0bworIGNvcnJlY3RseSBzY2hlZHVsZSBhIHNldCBvZiByZWFsLXRpbWUgdGFza3MgaXMgdGhhdCB0aGUgdG90YWwgdXRpbGl6YXRpb24KKyBpcyBzbWFsbGVyIHRoYW4gTS4gV2hlbiB0YWxraW5nIGFib3V0IC1kZWFkbGluZSB0YXNrcywgdGhpcyByZXF1aXJlcyB0aGF0CisgdGhlIHN1bSBvZiB0aGUgcmF0aW8gYmV0d2VlbiBydW50aW1lIGFuZCBwZXJpb2QgZm9yIGFsbCB0YXNrcyBpcyBzbWFsbGVyCisgdGhhbiBNLiBOb3RpY2UgdGhhdCB0aGUgcmF0aW8gcnVudGltZS9wZXJpb2QgaXMgZXF1aXZhbGVudCB0byB0aGUgdXRpbGl6YXRpb24KKyBvZiBhICJ0cmFkaXRpb25hbCIgcmVhbC10aW1lIHRhc2ssIGFuZCBpcyBhbHNvIG9mdGVuIHJlZmVycmVkIHRvIGFzCisgImJhbmR3aWR0aCIuCisgVGhlIGludGVyZmFjZSB1c2VkIHRvIGNvbnRyb2wgdGhlIENQVSBiYW5kd2lkdGggdGhhdCBjYW4gYmUgYWxsb2NhdGVkCisgdG8gLWRlYWRsaW5lIHRhc2tzIGlzIHNpbWlsYXIgdG8gdGhlIG9uZSBhbHJlYWR5IHVzZWQgZm9yIC1ydAorIHRhc2tzIHdpdGggcmVhbC10aW1lIGdyb3VwIHNjaGVkdWxpbmcgKGEuay5hLiBSVC10aHJvdHRsaW5nIC0gc2VlCisgRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtcnQtZ3JvdXAudHh0KSwgYW5kIGlzIGJhc2VkIG9uIHJlYWRhYmxlLworIHdyaXRhYmxlIGNvbnRyb2wgZmlsZXMgbG9jYXRlZCBpbiBwcm9jZnMgKGZvciBzeXN0ZW0gd2lkZSBzZXR0aW5ncykuCisgTm90aWNlIHRoYXQgcGVyLWdyb3VwIHNldHRpbmdzIChjb250cm9sbGVkIHRocm91Z2ggY2dyb3VwZnMpIGFyZSBzdGlsbCBub3QKKyBkZWZpbmVkIGZvciAtZGVhZGxpbmUgdGFza3MsIGJlY2F1c2UgbW9yZSBkaXNjdXNzaW9uIGlzIG5lZWRlZCBpbiBvcmRlciB0bworIGZpZ3VyZSBvdXQgaG93IHdlIHdhbnQgdG8gbWFuYWdlIFNDSEVEX0RFQURMSU5FIGJhbmR3aWR0aCBhdCB0aGUgdGFzayBncm91cAorIGxldmVsLgorCisgQSBtYWluIGRpZmZlcmVuY2UgYmV0d2VlbiBkZWFkbGluZSBiYW5kd2lkdGggbWFuYWdlbWVudCBhbmQgUlQtdGhyb3R0bGluZworIGlzIHRoYXQgLWRlYWRsaW5lIHRhc2tzIGhhdmUgYmFuZHdpZHRoIG9uIHRoZWlyIG93biAod2hpbGUgLXJ0IG9uZXMgZG9uJ3QhKSwKKyBhbmQgdGh1cyB3ZSBkb24ndCBuZWVkIGEgaGlnaGVyIGxldmVsIHRocm90dGxpbmcgbWVjaGFuaXNtIHRvIGVuZm9yY2UgdGhlCisgZGVzaXJlZCBiYW5kd2lkdGguIEluIG90aGVyIHdvcmRzLCB0aGlzIG1lYW5zIHRoYXQgaW50ZXJmYWNlIHBhcmFtZXRlcnMgYXJlCisgb25seSB1c2VkIGF0IGFkbWlzc2lvbiBjb250cm9sIHRpbWUgKGkuZS4sIHdoZW4gdGhlIHVzZXIgY2FsbHMKKyBzY2hlZF9zZXRhdHRyKCkpLiBTY2hlZHVsaW5nIGlzIHRoZW4gcGVyZm9ybWVkIGNvbnNpZGVyaW5nIGFjdHVhbCB0YXNrcycKKyBwYXJhbWV0ZXJzLCBzbyB0aGF0IENQVSBiYW5kd2lkdGggaXMgYWxsb2NhdGVkIHRvIFNDSEVEX0RFQURMSU5FIHRhc2tzCisgcmVzcGVjdGluZyB0aGVpciBuZWVkcyBpbiB0ZXJtcyBvZiBncmFudWxhcml0eS4gVGhlcmVmb3JlLCB1c2luZyB0aGlzIHNpbXBsZQorIGludGVyZmFjZSB3ZSBjYW4gcHV0IGEgY2FwIG9uIHRvdGFsIHV0aWxpemF0aW9uIG9mIC1kZWFkbGluZSB0YXNrcyAoaS5lLiwKKyBcU3VtIChydW50aW1lX2kgLyBwZXJpb2RfaSkgPCBnbG9iYWxfZGxfdXRpbGl6YXRpb25fY2FwKS4KKworNC4xIFN5c3RlbSB3aWRlIHNldHRpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIFRoZSBzeXN0ZW0gd2lkZSBzZXR0aW5ncyBhcmUgY29uZmlndXJlZCB1bmRlciB0aGUgL3Byb2MgdmlydHVhbCBmaWxlIHN5c3RlbS4KKworIEZvciBub3cgdGhlIC1ydCBrbm9icyBhcmUgdXNlZCBmb3IgLWRlYWRsaW5lIGFkbWlzc2lvbiBjb250cm9sIGFuZCB0aGUKKyAtZGVhZGxpbmUgcnVudGltZSBpcyBhY2NvdW50ZWQgYWdhaW5zdCB0aGUgLXJ0IHJ1bnRpbWUuIFdlIHJlYWxpemUgdGhhdCB0aGlzCisgaXNuJ3QgZW50aXJlbHkgZGVzaXJhYmxlOyBob3dldmVyLCBpdCBpcyBiZXR0ZXIgdG8gaGF2ZSBhIHNtYWxsIGludGVyZmFjZSBmb3IKKyBub3csIGFuZCBiZSBhYmxlIHRvIGNoYW5nZSBpdCBlYXNpbHkgbGF0ZXIuIFRoZSBpZGVhbCBzaXR1YXRpb24gKHNlZSA1LikgaXMgdG8KKyBydW4gLXJ0IHRhc2tzIGZyb20gYSAtZGVhZGxpbmUgc2VydmVyOyBpbiB3aGljaCBjYXNlIHRoZSAtcnQgYmFuZHdpZHRoIGlzIGEKKyBkaXJlY3Qgc3Vic2V0IG9mIGRsX2J3LgorCisgVGhpcyBtZWFucyB0aGF0LCBmb3IgYSByb290X2RvbWFpbiBjb21wcmlzaW5nIE0gQ1BVcywgLWRlYWRsaW5lIHRhc2tzCisgY2FuIGJlIGNyZWF0ZWQgd2hpbGUgdGhlIHN1bSBvZiB0aGVpciBiYW5kd2lkdGhzIHN0YXlzIGJlbG93OgorCisgICBNICogKHNjaGVkX3J0X3J1bnRpbWVfdXMgLyBzY2hlZF9ydF9wZXJpb2RfdXMpCisKKyBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGRpc2FibGUgdGhpcyBiYW5kd2lkdGggbWFuYWdlbWVudCBsb2dpYywgYW5kCisgYmUgdGh1cyBmcmVlIG9mIG92ZXJzdWJzY3JpYmluZyB0aGUgc3lzdGVtIHVwIHRvIGFueSBhcmJpdHJhcnkgbGV2ZWwuCisgVGhpcyBpcyBkb25lIGJ5IHdyaXRpbmcgLTEgaW4gL3Byb2Mvc3lzL2tlcm5lbC9zY2hlZF9ydF9ydW50aW1lX3VzLgorCisKKzQuMiBUYXNrIGludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tLS0tCisKKyBTcGVjaWZ5aW5nIGEgcGVyaW9kaWMvc3BvcmFkaWMgdGFzayB0aGF0IGV4ZWN1dGVzIGZvciBhIGdpdmVuIGFtb3VudCBvZgorIHJ1bnRpbWUgYXQgZWFjaCBpbnN0YW5jZSwgYW5kIHRoYXQgaXMgc2NoZWR1bGVkIGFjY29yZGluZyB0byB0aGUgdXJnZW5jeSBvZgorIGl0cyBvd24gdGltaW5nIGNvbnN0cmFpbnRzIG5lZWRzLCBpbiBnZW5lcmFsLCBhIHdheSBvZiBkZWNsYXJpbmc6CisgIC0gYSAobWF4aW11bS90eXBpY2FsKSBpbnN0YW5jZSBleGVjdXRpb24gdGltZSwKKyAgLSBhIG1pbmltdW0gaW50ZXJ2YWwgYmV0d2VlbiBjb25zZWN1dGl2ZSBpbnN0YW5jZXMsCisgIC0gYSB0aW1lIGNvbnN0cmFpbnQgYnkgd2hpY2ggZWFjaCBpbnN0YW5jZSBtdXN0IGJlIGNvbXBsZXRlZC4KKworIFRoZXJlZm9yZToKKyAgKiBhIG5ldyBzdHJ1Y3Qgc2NoZWRfYXR0ciwgY29udGFpbmluZyBhbGwgdGhlIG5lY2Vzc2FyeSBmaWVsZHMgaXMKKyAgICBwcm92aWRlZDsKKyAgKiB0aGUgbmV3IHNjaGVkdWxpbmcgcmVsYXRlZCBzeXNjYWxscyB0aGF0IG1hbmlwdWxhdGUgaXQsIGkuZS4sCisgICAgc2NoZWRfc2V0YXR0cigpIGFuZCBzY2hlZF9nZXRhdHRyKCkgYXJlIGltcGxlbWVudGVkLgorCisKKzQuMyBEZWZhdWx0IGJlaGF2aW9yCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBTQ0hFRF9ERUFETElORSBiYW5kd2lkdGggaXMgdG8gaGF2ZSBydF9ydW50aW1lIGVxdWFsIHRvCisgOTUwMDAwLiBXaXRoIHJ0X3BlcmlvZCBlcXVhbCB0byAxMDAwMDAwLCBieSBkZWZhdWx0LCBpdCBtZWFucyB0aGF0IC1kZWFkbGluZQorIHRhc2tzIGNhbiB1c2UgYXQgbW9zdCA5NSUsIG11bHRpcGxpZWQgYnkgdGhlIG51bWJlciBvZiBDUFVzIHRoYXQgY29tcG9zZSB0aGUKKyByb290X2RvbWFpbiwgZm9yIGVhY2ggcm9vdF9kb21haW4uCisgVGhpcyBtZWFucyB0aGF0IG5vbiAtZGVhZGxpbmUgdGFza3Mgd2lsbCByZWNlaXZlIGF0IGxlYXN0IDUlIG9mIHRoZSBDUFUgdGltZSwKKyBhbmQgdGhhdCAtZGVhZGxpbmUgdGFza3Mgd2lsbCByZWNlaXZlIHRoZWlyIHJ1bnRpbWUgd2l0aCBhIGd1YXJhbnRlZWQKKyB3b3JzdC1jYXNlIGRlbGF5IHJlc3BlY3QgdG8gdGhlICJkZWFkbGluZSIgcGFyYW1ldGVyLiBJZiAiZGVhZGxpbmUiID0gInBlcmlvZCIKKyBhbmQgdGhlIGNwdXNldCBtZWNoYW5pc20gaXMgdXNlZCB0byBpbXBsZW1lbnQgcGFydGl0aW9uZWQgc2NoZWR1bGluZyAoc2VlCisgU2VjdGlvbiA1KSwgdGhlbiB0aGlzIHNpbXBsZSBzZXR0aW5nIG9mIHRoZSBiYW5kd2lkdGggbWFuYWdlbWVudCBpcyBhYmxlIHRvCisgZGV0ZXJtaW5pc3RpY2FsbHkgZ3VhcmFudGVlIHRoYXQgLWRlYWRsaW5lIHRhc2tzIHdpbGwgcmVjZWl2ZSB0aGVpciBydW50aW1lCisgaW4gYSBwZXJpb2QuCisKKyBGaW5hbGx5LCBub3RpY2UgdGhhdCBpbiBvcmRlciBub3QgdG8gamVvcGFyZGl6ZSB0aGUgYWRtaXNzaW9uIGNvbnRyb2wgYQorIC1kZWFkbGluZSB0YXNrIGNhbm5vdCBmb3JrLgorCis1LiBUYXNrcyBDUFUgYWZmaW5pdHkKKz09PT09PT09PT09PT09PT09PT09PQorCisgLWRlYWRsaW5lIHRhc2tzIGNhbm5vdCBoYXZlIGFuIGFmZmluaXR5IG1hc2sgc21hbGxlciB0aGF0IHRoZSBlbnRpcmUKKyByb290X2RvbWFpbiB0aGV5IGFyZSBjcmVhdGVkIG9uLiBIb3dldmVyLCBhZmZpbml0aWVzIGNhbiBiZSBzcGVjaWZpZWQKKyB0aHJvdWdoIHRoZSBjcHVzZXQgZmFjaWxpdHkgKERvY3VtZW50YXRpb24vY2dyb3Vwcy9jcHVzZXRzLnR4dCkuCisKKzUuMSBTQ0hFRF9ERUFETElORSBhbmQgY3B1c2V0cyBIT1dUTworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyBBbiBleGFtcGxlIG9mIGEgc2ltcGxlIGNvbmZpZ3VyYXRpb24gKHBpbiBhIC1kZWFkbGluZSB0YXNrIHRvIENQVTApCisgZm9sbG93cyAocnQtYXBwIGlzIHVzZWQgdG8gY3JlYXRlIGEgLWRlYWRsaW5lIHRhc2spLgorCisgbWtkaXIgL2Rldi9jcHVzZXQKKyBtb3VudCAtdCBjZ3JvdXAgLW8gY3B1c2V0IGNwdXNldCAvZGV2L2NwdXNldAorIGNkIC9kZXYvY3B1c2V0CisgbWtkaXIgY3B1MAorIGVjaG8gMCA+IGNwdTAvY3B1c2V0LmNwdXMKKyBlY2hvIDAgPiBjcHUwL2NwdXNldC5tZW1zCisgZWNobyAxID4gY3B1c2V0LmNwdV9leGNsdXNpdmUKKyBlY2hvIDAgPiBjcHVzZXQuc2NoZWRfbG9hZF9iYWxhbmNlCisgZWNobyAxID4gY3B1MC9jcHVzZXQuY3B1X2V4Y2x1c2l2ZQorIGVjaG8gMSA+IGNwdTAvY3B1c2V0Lm1lbV9leGNsdXNpdmUKKyBlY2hvICQkID4gY3B1MC90YXNrcworIHJ0LWFwcCAtdCAxMDAwMDA6MTAwMDA6ZDowIC1ENSAoaXQgaXMgbm93IGFjdHVhbGx5IHN1cGVyZmx1b3VzIHRvIHNwZWNpZnkKKyB0YXNrIGFmZmluaXR5KQorCis2LiBGdXR1cmUgcGxhbnMKKz09PT09PT09PT09PT09PQorCisgU3RpbGwgbWlzc2luZzoKKworICAtIHJlZmluZW1lbnRzIHRvIGRlYWRsaW5lIGluaGVyaXRhbmNlLCBlc3BlY2lhbGx5IHJlZ2FyZGluZyB0aGUgcG9zc2liaWxpdHkKKyAgICBvZiByZXRhaW5pbmcgYmFuZHdpZHRoIGlzb2xhdGlvbiBhbW9uZyBub24taW50ZXJhY3RpbmcgdGFza3MuIFRoaXMgaXMKKyAgICBiZWluZyBzdHVkaWVkIGZyb20gYm90aCB0aGVvcmV0aWNhbCBhbmQgcHJhY3RpY2FsIHBvaW50cyBvZiB2aWV3LCBhbmQKKyAgICBob3BlZnVsbHkgd2Ugc2hvdWxkIGJlIGFibGUgdG8gcHJvZHVjZSBzb21lIGRlbW9uc3RyYXRpdmUgY29kZSBzb29uOworICAtIChjKWdyb3VwIGJhc2VkIGJhbmR3aWR0aCBtYW5hZ2VtZW50LCBhbmQgbWF5YmUgc2NoZWR1bGluZzsKKyAgLSBhY2Nlc3MgY29udHJvbCBmb3Igbm9uLXJvb3QgdXNlcnMgKGFuZCByZWxhdGVkIHNlY3VyaXR5IGNvbmNlcm5zIHRvCisgICAgYWRkcmVzcyksIHdoaWNoIGlzIHRoZSBiZXN0IHdheSB0byBhbGxvdyB1bnByaXZpbGVnZWQgdXNlIG9mIHRoZSBtZWNoYW5pc21zCisgICAgYW5kIGhvdyB0byBwcmV2ZW50IG5vbi1yb290IHVzZXJzICJjaGVhdCIgdGhlIHN5c3RlbT8KKworIEFzIGFscmVhZHkgZGlzY3Vzc2VkLCB3ZSBhcmUgcGxhbm5pbmcgYWxzbyB0byBtZXJnZSB0aGlzIHdvcmsgd2l0aCB0aGUgRURGCisgdGhyb3R0bGluZyBwYXRjaGVzIFtodHRwczovL2xrbWwub3JnL2xrbWwvMjAxMC8yLzIzLzIzOV0gYnV0IHdlIHN0aWxsIGFyZSBpbgorIHRoZSBwcmVsaW1pbmFyeSBwaGFzZXMgb2YgdGhlIG1lcmdlIGFuZCB3ZSByZWFsbHkgc2VlayBmZWVkYmFjayB0aGF0IHdvdWxkCisgaGVscCB1cyBkZWNpZGUgb24gdGhlIGRpcmVjdGlvbiBpdCBzaG91bGQgdGFrZS4KKworQXBwZW5kaXggQS4gVGVzdCBzdWl0ZQorPT09PT09PT09PT09PT09PT09PT09PQorCisgVGhlIFNDSEVEX0RFQURMSU5FIHBvbGljeSBjYW4gYmUgZWFzaWx5IHRlc3RlZCB1c2luZyB0d28gYXBwbGljYXRpb25zIHRoYXQKKyBhcmUgcGFydCBvZiBhIHdpZGVyIExpbnV4IFNjaGVkdWxlciB2YWxpZGF0aW9uIHN1aXRlLiBUaGUgc3VpdGUgaXMKKyBhdmFpbGFibGUgYXMgYSBHaXRIdWIgcmVwb3NpdG9yeTogaHR0cHM6Ly9naXRodWIuY29tL3NjaGVkdWxlci10b29scy4KKworIFRoZSBmaXJzdCB0ZXN0aW5nIGFwcGxpY2F0aW9uIGlzIGNhbGxlZCBydC1hcHAgYW5kIGNhbiBiZSB1c2VkIHRvCisgc3RhcnQgbXVsdGlwbGUgdGhyZWFkcyB3aXRoIHNwZWNpZmljIHBhcmFtZXRlcnMuIHJ0LWFwcCBzdXBwb3J0cworIFNDSEVEX3tPVEhFUixGSUZPLFJSLERFQURMSU5FfSBzY2hlZHVsaW5nIHBvbGljaWVzIGFuZCB0aGVpciByZWxhdGVkCisgcGFyYW1ldGVycyAoZS5nLiwgbmljZW5lc3MsIHByaW9yaXR5LCBydW50aW1lL2RlYWRsaW5lL3BlcmlvZCkuIHJ0LWFwcAorIGlzIGEgdmFsdWFibGUgdG9vbCwgYXMgaXQgY2FuIGJlIHVzZWQgdG8gc3ludGhldGljYWxseSByZWNyZWF0ZSBjZXJ0YWluCisgd29ya2xvYWRzIChtYXliZSBtaW1pY2tpbmcgcmVhbCB1c2UtY2FzZXMpIGFuZCBldmFsdWF0ZSBob3cgdGhlIHNjaGVkdWxlcgorIGJlaGF2ZXMgdW5kZXIgc3VjaCB3b3JrbG9hZHMuIEluIHRoaXMgd2F5LCByZXN1bHRzIGFyZSBlYXNpbHkgcmVwcm9kdWNpYmxlLgorIHJ0LWFwcCBpcyBhdmFpbGFibGUgYXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9zY2hlZHVsZXItdG9vbHMvcnQtYXBwLgorCisgVGhyZWFkIHBhcmFtZXRlcnMgY2FuIGJlIHNwZWNpZmllZCBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIHdpdGggc29tZXRoaW5nIGxpa2UKKyB0aGlzOgorCisgICMgcnQtYXBwIC10IDEwMDAwMDoxMDAwMDpkIC10IDE1MDAwMDoyMDAwMDpmOjEwIC1ENQorCisgVGhlIGFib3ZlIGNyZWF0ZXMgMiB0aHJlYWRzLiBUaGUgZmlyc3Qgb25lLCBzY2hlZHVsZWQgYnkgU0NIRURfREVBRExJTkUsCisgZXhlY3V0ZXMgZm9yIDEwbXMgZXZlcnkgMTAwbXMuIFRoZSBzZWNvbmQgb25lLCBzY2hlZHVsZWQgYXQgU0NIRURfRklGTworIHByaW9yaXR5IDEwLCBleGVjdXRlcyBmb3IgMjBtcyBldmVyeSAxNTBtcy4gVGhlIHRlc3Qgd2lsbCBydW4gZm9yIGEgdG90YWwKKyBvZiA1IHNlY29uZHMuCisKKyBNb3JlIGludGVyZXN0aW5nbHksIGNvbmZpZ3VyYXRpb25zIGNhbiBiZSBkZXNjcmliZWQgd2l0aCBhIGpzb24gZmlsZSB0aGF0CisgY2FuIGJlIHBhc3NlZCBhcyBpbnB1dCB0byBydC1hcHAgd2l0aCBzb21ldGhpbmcgbGlrZSB0aGlzOgorCisgICMgcnQtYXBwIG15X2NvbmZpZy5qc29uCisKKyBUaGUgcGFyYW1ldGVycyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgd2l0aCB0aGUgc2Vjb25kIG1ldGhvZCBhcmUgYSBzdXBlcnNldAorIG9mIHRoZSBjb21tYW5kIGxpbmUgb3B0aW9ucy4gUGxlYXNlIHJlZmVyIHRvIHJ0LWFwcCBkb2N1bWVudGF0aW9uIGZvciBtb3JlCisgZGV0YWlscyAoPHJ0LWFwcC1zb3VyY2VzPi9kb2MvKi5qc29uKS4KKworIFRoZSBzZWNvbmQgdGVzdGluZyBhcHBsaWNhdGlvbiBpcyBhIG1vZGlmaWNhdGlvbiBvZiBzY2hlZHRvb2wsIGNhbGxlZAorIHNjaGVkdG9vbC1kbCwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc2V0dXAgU0NIRURfREVBRExJTkUgcGFyYW1ldGVycyBmb3IgYQorIGNlcnRhaW4gcGlkL2FwcGxpY2F0aW9uLiBzY2hlZHRvb2wtZGwgaXMgYXZhaWxhYmxlIGF0OgorIGh0dHBzOi8vZ2l0aHViLmNvbS9zY2hlZHVsZXItdG9vbHMvc2NoZWR0b29sLWRsLmdpdC4KKworIFRoZSB1c2FnZSBpcyBzdHJhaWdodGZvcndhcmQ6CisKKyAgIyBzY2hlZHRvb2wgLUUgLXQgMTAwMDAwMDA6MTAwMDAwMDAwIC1lIC4vbXlfY3B1aG9nX2FwcAorCisgV2l0aCB0aGlzLCBteV9jcHVob2dfYXBwIGlzIHB1dCB0byBydW4gaW5zaWRlIGEgU0NIRURfREVBRExJTkUgcmVzZXJ2YXRpb24KKyBvZiAxMG1zIGV2ZXJ5IDEwMG1zIChub3RlIHRoYXQgcGFyYW1ldGVycyBhcmUgZXhwcmVzc2VkIGluIG1pY3Jvc2Vjb25kcykuCisgWW91IGNhbiBhbHNvIHVzZSBzY2hlZHRvb2wgdG8gY3JlYXRlIGEgcmVzZXJ2YXRpb24gZm9yIGFuIGFscmVhZHkgcnVubmluZworIGFwcGxpY2F0aW9uLCBnaXZlbiB0aGF0IHlvdSBrbm93IGl0cyBwaWQ6CisKKyAgIyBzY2hlZHRvb2wgLUUgLXQgMTAwMDAwMDA6MTAwMDAwMDAwIG15X2FwcF9waWQKKworQXBwZW5kaXggQi4gTWluaW1hbCBtYWluKCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyBXZSBwcm92aWRlIGluIHdoYXQgZm9sbG93cyBhIHNpbXBsZSAodWdseSkgc2VsZi1jb250YWluZWQgY29kZSBzbmlwcGV0Cisgc2hvd2luZyBob3cgU0NIRURfREVBRExJTkUgcmVzZXJ2YXRpb25zIGNhbiBiZSBjcmVhdGVkIGJ5IGEgcmVhbC10aW1lCisgYXBwbGljYXRpb24gZGV2ZWxvcGVyLgorCisgI2RlZmluZSBfR05VX1NPVVJDRQorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDx0aW1lLmg+CisgI2luY2x1ZGUgPGxpbnV4L3VuaXN0ZC5oPgorICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKyAjaW5jbHVkZSA8cHRocmVhZC5oPgorCisgI2RlZmluZSBnZXR0aWQoKSBzeXNjYWxsKF9fTlJfZ2V0dGlkKQorCisgI2RlZmluZSBTQ0hFRF9ERUFETElORQk2CisKKyAvKiBYWFggdXNlIHRoZSBwcm9wZXIgc3lzY2FsbCBudW1iZXJzICovCisgI2lmZGVmIF9feDg2XzY0X18KKyAjZGVmaW5lIF9fTlJfc2NoZWRfc2V0YXR0cgkJMzE0CisgI2RlZmluZSBfX05SX3NjaGVkX2dldGF0dHIJCTMxNQorICNlbmRpZgorCisgI2lmZGVmIF9faTM4Nl9fCisgI2RlZmluZSBfX05SX3NjaGVkX3NldGF0dHIJCTM1MQorICNkZWZpbmUgX19OUl9zY2hlZF9nZXRhdHRyCQkzNTIKKyAjZW5kaWYKKworICNpZmRlZiBfX2FybV9fCisgI2RlZmluZSBfX05SX3NjaGVkX3NldGF0dHIJCTM4MAorICNkZWZpbmUgX19OUl9zY2hlZF9nZXRhdHRyCQkzODEKKyAjZW5kaWYKKworIHN0YXRpYyB2b2xhdGlsZSBpbnQgZG9uZTsKKworIHN0cnVjdCBzY2hlZF9hdHRyIHsKKwlfX3UzMiBzaXplOworCisJX191MzIgc2NoZWRfcG9saWN5OworCV9fdTY0IHNjaGVkX2ZsYWdzOworCisJLyogU0NIRURfTk9STUFMLCBTQ0hFRF9CQVRDSCAqLworCV9fczMyIHNjaGVkX25pY2U7CisKKwkvKiBTQ0hFRF9GSUZPLCBTQ0hFRF9SUiAqLworCV9fdTMyIHNjaGVkX3ByaW9yaXR5OworCisJLyogU0NIRURfREVBRExJTkUgKG5zZWMpICovCisJX191NjQgc2NoZWRfcnVudGltZTsKKwlfX3U2NCBzY2hlZF9kZWFkbGluZTsKKwlfX3U2NCBzY2hlZF9wZXJpb2Q7CisgfTsKKworIGludCBzY2hlZF9zZXRhdHRyKHBpZF90IHBpZCwKKwkJICBjb25zdCBzdHJ1Y3Qgc2NoZWRfYXR0ciAqYXR0ciwKKwkJICB1bnNpZ25lZCBpbnQgZmxhZ3MpCisgeworCXJldHVybiBzeXNjYWxsKF9fTlJfc2NoZWRfc2V0YXR0ciwgcGlkLCBhdHRyLCBmbGFncyk7CisgfQorCisgaW50IHNjaGVkX2dldGF0dHIocGlkX3QgcGlkLAorCQkgIHN0cnVjdCBzY2hlZF9hdHRyICphdHRyLAorCQkgIHVuc2lnbmVkIGludCBzaXplLAorCQkgIHVuc2lnbmVkIGludCBmbGFncykKKyB7CisJcmV0dXJuIHN5c2NhbGwoX19OUl9zY2hlZF9nZXRhdHRyLCBwaWQsIGF0dHIsIHNpemUsIGZsYWdzKTsKKyB9CisKKyB2b2lkICpydW5fZGVhZGxpbmUodm9pZCAqZGF0YSkKKyB7CisJc3RydWN0IHNjaGVkX2F0dHIgYXR0cjsKKwlpbnQgeCA9IDA7CisJaW50IHJldDsKKwl1bnNpZ25lZCBpbnQgZmxhZ3MgPSAwOworCisJcHJpbnRmKCJkZWFkbGluZSB0aHJlYWQgc3RhcnRlZCBbJWxkXVxuIiwgZ2V0dGlkKCkpOworCisJYXR0ci5zaXplID0gc2l6ZW9mKGF0dHIpOworCWF0dHIuc2NoZWRfZmxhZ3MgPSAwOworCWF0dHIuc2NoZWRfbmljZSA9IDA7CisJYXR0ci5zY2hlZF9wcmlvcml0eSA9IDA7CisKKwkvKiBUaGlzIGNyZWF0ZXMgYSAxMG1zLzMwbXMgcmVzZXJ2YXRpb24gKi8KKwlhdHRyLnNjaGVkX3BvbGljeSA9IFNDSEVEX0RFQURMSU5FOworCWF0dHIuc2NoZWRfcnVudGltZSA9IDEwICogMTAwMCAqIDEwMDA7CisJYXR0ci5zY2hlZF9wZXJpb2QgPSBhdHRyLnNjaGVkX2RlYWRsaW5lID0gMzAgKiAxMDAwICogMTAwMDsKKworCXJldCA9IHNjaGVkX3NldGF0dHIoMCwgJmF0dHIsIGZsYWdzKTsKKwlpZiAocmV0IDwgMCkgeworCQlkb25lID0gMDsKKwkJcGVycm9yKCJzY2hlZF9zZXRhdHRyIik7CisJCWV4aXQoLTEpOworCX0KKworCXdoaWxlICghZG9uZSkgeworCQl4Kys7CisJfQorCisJcHJpbnRmKCJkZWFkbGluZSB0aHJlYWQgZGllcyBbJWxkXVxuIiwgZ2V0dGlkKCkpOworCXJldHVybiBOVUxMOworIH0KKworIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgeworCXB0aHJlYWRfdCB0aHJlYWQ7CisKKwlwcmludGYoIm1haW4gdGhyZWFkIFslbGRdXG4iLCBnZXR0aWQoKSk7CisKKwlwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkLCBOVUxMLCBydW5fZGVhZGxpbmUsIE5VTEwpOworCisJc2xlZXAoMTApOworCisJZG9uZSA9IDE7CisJcHRocmVhZF9qb2luKHRocmVhZCwgTlVMTCk7CisKKwlwcmludGYoIm1haW4gZGllcyBbJWxkXVxuIiwgZ2V0dGlkKCkpOworCXJldHVybiAwOworIH0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWRlc2lnbi1DRlMudHh0IGIvRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZGVzaWduLUNGUy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjE0ZjQ5MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWRlc2lnbi1DRlMudHh0CkBAIC0wLDAgKzEsMjQyIEBACisgICAgICAgICAgICAgICAgICAgICAgPT09PT09PT09PT09PQorICAgICAgICAgICAgICAgICAgICAgIENGUyBTY2hlZHVsZXIKKyAgICAgICAgICAgICAgICAgICAgICA9PT09PT09PT09PT09CisKKworMS4gIE9WRVJWSUVXCisKK0NGUyBzdGFuZHMgZm9yICJDb21wbGV0ZWx5IEZhaXIgU2NoZWR1bGVyLCIgYW5kIGlzIHRoZSBuZXcgImRlc2t0b3AiIHByb2Nlc3MKK3NjaGVkdWxlciBpbXBsZW1lbnRlZCBieSBJbmdvIE1vbG5hciBhbmQgbWVyZ2VkIGluIExpbnV4IDIuNi4yMy4gIEl0IGlzIHRoZQorcmVwbGFjZW1lbnQgZm9yIHRoZSBwcmV2aW91cyB2YW5pbGxhIHNjaGVkdWxlcidzIFNDSEVEX09USEVSIGludGVyYWN0aXZpdHkKK2NvZGUuCisKKzgwJSBvZiBDRlMncyBkZXNpZ24gY2FuIGJlIHN1bW1lZCB1cCBpbiBhIHNpbmdsZSBzZW50ZW5jZTogQ0ZTIGJhc2ljYWxseSBtb2RlbHMKK2FuICJpZGVhbCwgcHJlY2lzZSBtdWx0aS10YXNraW5nIENQVSIgb24gcmVhbCBoYXJkd2FyZS4KKworIklkZWFsIG11bHRpLXRhc2tpbmcgQ1BVIiBpcyBhIChub24tZXhpc3RlbnQgIDotKSkgQ1BVIHRoYXQgaGFzIDEwMCUgcGh5c2ljYWwKK3Bvd2VyIGFuZCB3aGljaCBjYW4gcnVuIGVhY2ggdGFzayBhdCBwcmVjaXNlIGVxdWFsIHNwZWVkLCBpbiBwYXJhbGxlbCwgZWFjaCBhdAorMS9ucl9ydW5uaW5nIHNwZWVkLiAgRm9yIGV4YW1wbGU6IGlmIHRoZXJlIGFyZSAyIHRhc2tzIHJ1bm5pbmcsIHRoZW4gaXQgcnVucworZWFjaCBhdCA1MCUgcGh5c2ljYWwgcG93ZXIgLS0tIGkuZS4sIGFjdHVhbGx5IGluIHBhcmFsbGVsLgorCitPbiByZWFsIGhhcmR3YXJlLCB3ZSBjYW4gcnVuIG9ubHkgYSBzaW5nbGUgdGFzayBhdCBvbmNlLCBzbyB3ZSBoYXZlIHRvCitpbnRyb2R1Y2UgdGhlIGNvbmNlcHQgb2YgInZpcnR1YWwgcnVudGltZS4iICBUaGUgdmlydHVhbCBydW50aW1lIG9mIGEgdGFzaworc3BlY2lmaWVzIHdoZW4gaXRzIG5leHQgdGltZXNsaWNlIHdvdWxkIHN0YXJ0IGV4ZWN1dGlvbiBvbiB0aGUgaWRlYWwKK211bHRpLXRhc2tpbmcgQ1BVIGRlc2NyaWJlZCBhYm92ZS4gIEluIHByYWN0aWNlLCB0aGUgdmlydHVhbCBydW50aW1lIG9mIGEgdGFzaworaXMgaXRzIGFjdHVhbCBydW50aW1lIG5vcm1hbGl6ZWQgdG8gdGhlIHRvdGFsIG51bWJlciBvZiBydW5uaW5nIHRhc2tzLgorCisKKworMi4gIEZFVyBJTVBMRU1FTlRBVElPTiBERVRBSUxTCisKK0luIENGUyB0aGUgdmlydHVhbCBydW50aW1lIGlzIGV4cHJlc3NlZCBhbmQgdHJhY2tlZCB2aWEgdGhlIHBlci10YXNrCitwLT5zZS52cnVudGltZSAobmFub3NlYy11bml0KSB2YWx1ZS4gIFRoaXMgd2F5LCBpdCdzIHBvc3NpYmxlIHRvIGFjY3VyYXRlbHkKK3RpbWVzdGFtcCBhbmQgbWVhc3VyZSB0aGUgImV4cGVjdGVkIENQVSB0aW1lIiBhIHRhc2sgc2hvdWxkIGhhdmUgZ290dGVuLgorCitbIHNtYWxsIGRldGFpbDogb24gImlkZWFsIiBoYXJkd2FyZSwgYXQgYW55IHRpbWUgYWxsIHRhc2tzIHdvdWxkIGhhdmUgdGhlIHNhbWUKKyAgcC0+c2UudnJ1bnRpbWUgdmFsdWUgLS0tIGkuZS4sIHRhc2tzIHdvdWxkIGV4ZWN1dGUgc2ltdWx0YW5lb3VzbHkgYW5kIG5vIHRhc2sKKyAgd291bGQgZXZlciBnZXQgIm91dCBvZiBiYWxhbmNlIiBmcm9tIHRoZSAiaWRlYWwiIHNoYXJlIG9mIENQVSB0aW1lLiAgXQorCitDRlMncyB0YXNrIHBpY2tpbmcgbG9naWMgaXMgYmFzZWQgb24gdGhpcyBwLT5zZS52cnVudGltZSB2YWx1ZSBhbmQgaXQgaXMgdGh1cwordmVyeSBzaW1wbGU6IGl0IGFsd2F5cyB0cmllcyB0byBydW4gdGhlIHRhc2sgd2l0aCB0aGUgc21hbGxlc3QgcC0+c2UudnJ1bnRpbWUKK3ZhbHVlIChpLmUuLCB0aGUgdGFzayB3aGljaCBleGVjdXRlZCBsZWFzdCBzbyBmYXIpLiAgQ0ZTIGFsd2F5cyB0cmllcyB0byBzcGxpdAordXAgQ1BVIHRpbWUgYmV0d2VlbiBydW5uYWJsZSB0YXNrcyBhcyBjbG9zZSB0byAiaWRlYWwgbXVsdGl0YXNraW5nIGhhcmR3YXJlIiBhcworcG9zc2libGUuCisKK01vc3Qgb2YgdGhlIHJlc3Qgb2YgQ0ZTJ3MgZGVzaWduIGp1c3QgZmFsbHMgb3V0IG9mIHRoaXMgcmVhbGx5IHNpbXBsZSBjb25jZXB0LAord2l0aCBhIGZldyBhZGQtb24gZW1iZWxsaXNobWVudHMgbGlrZSBuaWNlIGxldmVscywgbXVsdGlwcm9jZXNzaW5nIGFuZCB2YXJpb3VzCithbGdvcml0aG0gdmFyaWFudHMgdG8gcmVjb2duaXplIHNsZWVwZXJzLgorCisKKworMy4gIFRIRSBSQlRSRUUKKworQ0ZTJ3MgZGVzaWduIGlzIHF1aXRlIHJhZGljYWw6IGl0IGRvZXMgbm90IHVzZSB0aGUgb2xkIGRhdGEgc3RydWN0dXJlcyBmb3IgdGhlCitydW5xdWV1ZXMsIGJ1dCBpdCB1c2VzIGEgdGltZS1vcmRlcmVkIHJidHJlZSB0byBidWlsZCBhICJ0aW1lbGluZSIgb2YgZnV0dXJlCit0YXNrIGV4ZWN1dGlvbiwgYW5kIHRodXMgaGFzIG5vICJhcnJheSBzd2l0Y2giIGFydGlmYWN0cyAoYnkgd2hpY2ggYm90aCB0aGUKK3ByZXZpb3VzIHZhbmlsbGEgc2NoZWR1bGVyIGFuZCBSU0RML1NEIGFyZSBhZmZlY3RlZCkuCisKK0NGUyBhbHNvIG1haW50YWlucyB0aGUgcnEtPmNmcy5taW5fdnJ1bnRpbWUgdmFsdWUsIHdoaWNoIGlzIGEgbW9ub3RvbmljCitpbmNyZWFzaW5nIHZhbHVlIHRyYWNraW5nIHRoZSBzbWFsbGVzdCB2cnVudGltZSBhbW9uZyBhbGwgdGFza3MgaW4gdGhlCitydW5xdWV1ZS4gIFRoZSB0b3RhbCBhbW91bnQgb2Ygd29yayBkb25lIGJ5IHRoZSBzeXN0ZW0gaXMgdHJhY2tlZCB1c2luZworbWluX3ZydW50aW1lOyB0aGF0IHZhbHVlIGlzIHVzZWQgdG8gcGxhY2UgbmV3bHkgYWN0aXZhdGVkIGVudGl0aWVzIG9uIHRoZSBsZWZ0CitzaWRlIG9mIHRoZSB0cmVlIGFzIG11Y2ggYXMgcG9zc2libGUuCisKK1RoZSB0b3RhbCBudW1iZXIgb2YgcnVubmluZyB0YXNrcyBpbiB0aGUgcnVucXVldWUgaXMgYWNjb3VudGVkIHRocm91Z2ggdGhlCitycS0+Y2ZzLmxvYWQgdmFsdWUsIHdoaWNoIGlzIHRoZSBzdW0gb2YgdGhlIHdlaWdodHMgb2YgdGhlIHRhc2tzIHF1ZXVlZCBvbiB0aGUKK3J1bnF1ZXVlLgorCitDRlMgbWFpbnRhaW5zIGEgdGltZS1vcmRlcmVkIHJidHJlZSwgd2hlcmUgYWxsIHJ1bm5hYmxlIHRhc2tzIGFyZSBzb3J0ZWQgYnkgdGhlCitwLT5zZS52cnVudGltZSBrZXkuIENGUyBwaWNrcyB0aGUgImxlZnRtb3N0IiB0YXNrIGZyb20gdGhpcyB0cmVlIGFuZCBzdGlja3MgdG8gaXQuCitBcyB0aGUgc3lzdGVtIHByb2dyZXNzZXMgZm9yd2FyZHMsIHRoZSBleGVjdXRlZCB0YXNrcyBhcmUgcHV0IGludG8gdGhlIHRyZWUKK21vcmUgYW5kIG1vcmUgdG8gdGhlIHJpZ2h0IC0tLSBzbG93bHkgYnV0IHN1cmVseSBnaXZpbmcgYSBjaGFuY2UgZm9yIGV2ZXJ5IHRhc2sKK3RvIGJlY29tZSB0aGUgImxlZnRtb3N0IHRhc2siIGFuZCB0aHVzIGdldCBvbiB0aGUgQ1BVIHdpdGhpbiBhIGRldGVybWluaXN0aWMKK2Ftb3VudCBvZiB0aW1lLgorCitTdW1taW5nIHVwLCBDRlMgd29ya3MgbGlrZSB0aGlzOiBpdCBydW5zIGEgdGFzayBhIGJpdCwgYW5kIHdoZW4gdGhlIHRhc2sKK3NjaGVkdWxlcyAob3IgYSBzY2hlZHVsZXIgdGljayBoYXBwZW5zKSB0aGUgdGFzaydzIENQVSB1c2FnZSBpcyAiYWNjb3VudGVkCitmb3IiOiB0aGUgKHNtYWxsKSB0aW1lIGl0IGp1c3Qgc3BlbnQgdXNpbmcgdGhlIHBoeXNpY2FsIENQVSBpcyBhZGRlZCB0bworcC0+c2UudnJ1bnRpbWUuICBPbmNlIHAtPnNlLnZydW50aW1lIGdldHMgaGlnaCBlbm91Z2ggc28gdGhhdCBhbm90aGVyIHRhc2sKK2JlY29tZXMgdGhlICJsZWZ0bW9zdCB0YXNrIiBvZiB0aGUgdGltZS1vcmRlcmVkIHJidHJlZSBpdCBtYWludGFpbnMgKHBsdXMgYQorc21hbGwgYW1vdW50IG9mICJncmFudWxhcml0eSIgZGlzdGFuY2UgcmVsYXRpdmUgdG8gdGhlIGxlZnRtb3N0IHRhc2sgc28gdGhhdCB3ZQorZG8gbm90IG92ZXItc2NoZWR1bGUgdGFza3MgYW5kIHRyYXNoIHRoZSBjYWNoZSksIHRoZW4gdGhlIG5ldyBsZWZ0bW9zdCB0YXNrIGlzCitwaWNrZWQgYW5kIHRoZSBjdXJyZW50IHRhc2sgaXMgcHJlZW1wdGVkLgorCisKKworNC4gIFNPTUUgRkVBVFVSRVMgT0YgQ0ZTCisKK0NGUyB1c2VzIG5hbm9zZWNvbmQgZ3JhbnVsYXJpdHkgYWNjb3VudGluZyBhbmQgZG9lcyBub3QgcmVseSBvbiBhbnkgamlmZmllcyBvcgorb3RoZXIgSFogZGV0YWlsLiAgVGh1cyB0aGUgQ0ZTIHNjaGVkdWxlciBoYXMgbm8gbm90aW9uIG9mICJ0aW1lc2xpY2VzIiBpbiB0aGUKK3dheSB0aGUgcHJldmlvdXMgc2NoZWR1bGVyIGhhZCwgYW5kIGhhcyBubyBoZXVyaXN0aWNzIHdoYXRzb2V2ZXIuICBUaGVyZSBpcworb25seSBvbmUgY2VudHJhbCB0dW5hYmxlICh5b3UgaGF2ZSB0byBzd2l0Y2ggb24gQ09ORklHX1NDSEVEX0RFQlVHKToKKworICAgL3Byb2Mvc3lzL2tlcm5lbC9zY2hlZF9taW5fZ3JhbnVsYXJpdHlfbnMKKword2hpY2ggY2FuIGJlIHVzZWQgdG8gdHVuZSB0aGUgc2NoZWR1bGVyIGZyb20gImRlc2t0b3AiIChpLmUuLCBsb3cgbGF0ZW5jaWVzKSB0bworInNlcnZlciIgKGkuZS4sIGdvb2QgYmF0Y2hpbmcpIHdvcmtsb2Fkcy4gIEl0IGRlZmF1bHRzIHRvIGEgc2V0dGluZyBzdWl0YWJsZQorZm9yIGRlc2t0b3Agd29ya2xvYWRzLiAgU0NIRURfQkFUQ0ggaXMgaGFuZGxlZCBieSB0aGUgQ0ZTIHNjaGVkdWxlciBtb2R1bGUgdG9vLgorCitEdWUgdG8gaXRzIGRlc2lnbiwgdGhlIENGUyBzY2hlZHVsZXIgaXMgbm90IHByb25lIHRvIGFueSBvZiB0aGUgImF0dGFja3MiIHRoYXQKK2V4aXN0IHRvZGF5IGFnYWluc3QgdGhlIGhldXJpc3RpY3Mgb2YgdGhlIHN0b2NrIHNjaGVkdWxlcjogZmlmdHlwLmMsIHRodWQuYywKK2NoZXcuYywgcmluZy10ZXN0LmMsIG1hc3NpdmVfaW50ci5jIGFsbCB3b3JrIGZpbmUgYW5kIGRvIG5vdCBpbXBhY3QKK2ludGVyYWN0aXZpdHkgYW5kIHByb2R1Y2UgdGhlIGV4cGVjdGVkIGJlaGF2aW9yLgorCitUaGUgQ0ZTIHNjaGVkdWxlciBoYXMgYSBtdWNoIHN0cm9uZ2VyIGhhbmRsaW5nIG9mIG5pY2UgbGV2ZWxzIGFuZCBTQ0hFRF9CQVRDSAordGhhbiB0aGUgcHJldmlvdXMgdmFuaWxsYSBzY2hlZHVsZXI6IGJvdGggdHlwZXMgb2Ygd29ya2xvYWRzIGFyZSBpc29sYXRlZCBtdWNoCittb3JlIGFnZ3Jlc3NpdmVseS4KKworU01QIGxvYWQtYmFsYW5jaW5nIGhhcyBiZWVuIHJld29ya2VkL3Nhbml0aXplZDogdGhlIHJ1bnF1ZXVlLXdhbGtpbmcKK2Fzc3VtcHRpb25zIGFyZSBnb25lIGZyb20gdGhlIGxvYWQtYmFsYW5jaW5nIGNvZGUgbm93LCBhbmQgaXRlcmF0b3JzIG9mIHRoZQorc2NoZWR1bGluZyBtb2R1bGVzIGFyZSB1c2VkLiAgVGhlIGJhbGFuY2luZyBjb2RlIGdvdCBxdWl0ZSBhIGJpdCBzaW1wbGVyIGFzIGEKK3Jlc3VsdC4KKworCisKKzUuIFNjaGVkdWxpbmcgcG9saWNpZXMKKworQ0ZTIGltcGxlbWVudHMgdGhyZWUgc2NoZWR1bGluZyBwb2xpY2llczoKKworICAtIFNDSEVEX05PUk1BTCAodHJhZGl0aW9uYWxseSBjYWxsZWQgU0NIRURfT1RIRVIpOiBUaGUgc2NoZWR1bGluZworICAgIHBvbGljeSB0aGF0IGlzIHVzZWQgZm9yIHJlZ3VsYXIgdGFza3MuCisKKyAgLSBTQ0hFRF9CQVRDSDogRG9lcyBub3QgcHJlZW1wdCBuZWFybHkgYXMgb2Z0ZW4gYXMgcmVndWxhciB0YXNrcworICAgIHdvdWxkLCB0aGVyZWJ5IGFsbG93aW5nIHRhc2tzIHRvIHJ1biBsb25nZXIgYW5kIG1ha2UgYmV0dGVyIHVzZSBvZgorICAgIGNhY2hlcyBidXQgYXQgdGhlIGNvc3Qgb2YgaW50ZXJhY3Rpdml0eS4gVGhpcyBpcyB3ZWxsIHN1aXRlZCBmb3IKKyAgICBiYXRjaCBqb2JzLgorCisgIC0gU0NIRURfSURMRTogVGhpcyBpcyBldmVuIHdlYWtlciB0aGFuIG5pY2UgMTksIGJ1dCBpdHMgbm90IGEgdHJ1ZQorICAgIGlkbGUgdGltZXIgc2NoZWR1bGVyIGluIG9yZGVyIHRvIGF2b2lkIHRvIGdldCBpbnRvIHByaW9yaXR5CisgICAgaW52ZXJzaW9uIHByb2JsZW1zIHdoaWNoIHdvdWxkIGRlYWRsb2NrIHRoZSBtYWNoaW5lLgorCitTQ0hFRF9GSUZPL19SUiBhcmUgaW1wbGVtZW50ZWQgaW4gc2NoZWQvcnQuYyBhbmQgYXJlIGFzIHNwZWNpZmllZCBieQorUE9TSVguCisKK1RoZSBjb21tYW5kIGNocnQgZnJvbSB1dGlsLWxpbnV4LW5nIDIuMTMuMS4xIGNhbiBzZXQgYWxsIG9mIHRoZXNlIGV4Y2VwdAorU0NIRURfSURMRS4KKworCisKKzYuICBTQ0hFRFVMSU5HIENMQVNTRVMKKworVGhlIG5ldyBDRlMgc2NoZWR1bGVyIGhhcyBiZWVuIGRlc2lnbmVkIGluIHN1Y2ggYSB3YXkgdG8gaW50cm9kdWNlICJTY2hlZHVsaW5nCitDbGFzc2VzLCIgYW4gZXh0ZW5zaWJsZSBoaWVyYXJjaHkgb2Ygc2NoZWR1bGVyIG1vZHVsZXMuICBUaGVzZSBtb2R1bGVzCitlbmNhcHN1bGF0ZSBzY2hlZHVsaW5nIHBvbGljeSBkZXRhaWxzIGFuZCBhcmUgaGFuZGxlZCBieSB0aGUgc2NoZWR1bGVyIGNvcmUKK3dpdGhvdXQgdGhlIGNvcmUgY29kZSBhc3N1bWluZyB0b28gbXVjaCBhYm91dCB0aGVtLgorCitzY2hlZC9mYWlyLmMgaW1wbGVtZW50cyB0aGUgQ0ZTIHNjaGVkdWxlciBkZXNjcmliZWQgYWJvdmUuCisKK3NjaGVkL3J0LmMgaW1wbGVtZW50cyBTQ0hFRF9GSUZPIGFuZCBTQ0hFRF9SUiBzZW1hbnRpY3MsIGluIGEgc2ltcGxlciB3YXkgdGhhbgordGhlIHByZXZpb3VzIHZhbmlsbGEgc2NoZWR1bGVyIGRpZC4gIEl0IHVzZXMgMTAwIHJ1bnF1ZXVlcyAoZm9yIGFsbCAxMDAgUlQKK3ByaW9yaXR5IGxldmVscywgaW5zdGVhZCBvZiAxNDAgaW4gdGhlIHByZXZpb3VzIHNjaGVkdWxlcikgYW5kIGl0IG5lZWRzIG5vCitleHBpcmVkIGFycmF5LgorCitTY2hlZHVsaW5nIGNsYXNzZXMgYXJlIGltcGxlbWVudGVkIHRocm91Z2ggdGhlIHNjaGVkX2NsYXNzIHN0cnVjdHVyZSwgd2hpY2gKK2NvbnRhaW5zIGhvb2tzIHRvIGZ1bmN0aW9ucyB0aGF0IG11c3QgYmUgY2FsbGVkIHdoZW5ldmVyIGFuIGludGVyZXN0aW5nIGV2ZW50CitvY2N1cnMuCisKK1RoaXMgaXMgdGhlIChwYXJ0aWFsKSBsaXN0IG9mIHRoZSBob29rczoKKworIC0gZW5xdWV1ZV90YXNrKC4uLikKKworICAgQ2FsbGVkIHdoZW4gYSB0YXNrIGVudGVycyBhIHJ1bm5hYmxlIHN0YXRlLgorICAgSXQgcHV0cyB0aGUgc2NoZWR1bGluZyBlbnRpdHkgKHRhc2spIGludG8gdGhlIHJlZC1ibGFjayB0cmVlIGFuZAorICAgaW5jcmVtZW50cyB0aGUgbnJfcnVubmluZyB2YXJpYWJsZS4KKworIC0gZGVxdWV1ZV90YXNrKC4uLikKKworICAgV2hlbiBhIHRhc2sgaXMgbm8gbG9uZ2VyIHJ1bm5hYmxlLCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBrZWVwIHRoZQorICAgY29ycmVzcG9uZGluZyBzY2hlZHVsaW5nIGVudGl0eSBvdXQgb2YgdGhlIHJlZC1ibGFjayB0cmVlLiAgSXQgZGVjcmVtZW50cworICAgdGhlIG5yX3J1bm5pbmcgdmFyaWFibGUuCisKKyAtIHlpZWxkX3Rhc2soLi4uKQorCisgICBUaGlzIGZ1bmN0aW9uIGlzIGJhc2ljYWxseSBqdXN0IGEgZGVxdWV1ZSBmb2xsb3dlZCBieSBhbiBlbnF1ZXVlLCB1bmxlc3MgdGhlCisgICBjb21wYXRfeWllbGQgc3lzY3RsIGlzIHR1cm5lZCBvbjsgaW4gdGhhdCBjYXNlLCBpdCBwbGFjZXMgdGhlIHNjaGVkdWxpbmcKKyAgIGVudGl0eSBhdCB0aGUgcmlnaHQtbW9zdCBlbmQgb2YgdGhlIHJlZC1ibGFjayB0cmVlLgorCisgLSBjaGVja19wcmVlbXB0X2N1cnIoLi4uKQorCisgICBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiBhIHRhc2sgdGhhdCBlbnRlcmVkIHRoZSBydW5uYWJsZSBzdGF0ZSBzaG91bGQKKyAgIHByZWVtcHQgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRhc2suCisKKyAtIHBpY2tfbmV4dF90YXNrKC4uLikKKworICAgVGhpcyBmdW5jdGlvbiBjaG9vc2VzIHRoZSBtb3N0IGFwcHJvcHJpYXRlIHRhc2sgZWxpZ2libGUgdG8gcnVuIG5leHQuCisKKyAtIHNldF9jdXJyX3Rhc2soLi4uKQorCisgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIGEgdGFzayBjaGFuZ2VzIGl0cyBzY2hlZHVsaW5nIGNsYXNzIG9yIGNoYW5nZXMKKyAgIGl0cyB0YXNrIGdyb3VwLgorCisgLSB0YXNrX3RpY2soLi4uKQorCisgICBUaGlzIGZ1bmN0aW9uIGlzIG1vc3RseSBjYWxsZWQgZnJvbSB0aW1lIHRpY2sgZnVuY3Rpb25zOyBpdCBtaWdodCBsZWFkIHRvCisgICBwcm9jZXNzIHN3aXRjaC4gIFRoaXMgZHJpdmVzIHRoZSBydW5uaW5nIHByZWVtcHRpb24uCisKKworCisKKzcuICBHUk9VUCBTQ0hFRFVMRVIgRVhURU5TSU9OUyBUTyBDRlMKKworTm9ybWFsbHksIHRoZSBzY2hlZHVsZXIgb3BlcmF0ZXMgb24gaW5kaXZpZHVhbCB0YXNrcyBhbmQgc3RyaXZlcyB0byBwcm92aWRlCitmYWlyIENQVSB0aW1lIHRvIGVhY2ggdGFzay4gIFNvbWV0aW1lcywgaXQgbWF5IGJlIGRlc2lyYWJsZSB0byBncm91cCB0YXNrcyBhbmQKK3Byb3ZpZGUgZmFpciBDUFUgdGltZSB0byBlYWNoIHN1Y2ggdGFzayBncm91cC4gIEZvciBleGFtcGxlLCBpdCBtYXkgYmUKK2Rlc2lyYWJsZSB0byBmaXJzdCBwcm92aWRlIGZhaXIgQ1BVIHRpbWUgdG8gZWFjaCB1c2VyIG9uIHRoZSBzeXN0ZW0gYW5kIHRoZW4gdG8KK2VhY2ggdGFzayBiZWxvbmdpbmcgdG8gYSB1c2VyLgorCitDT05GSUdfQ0dST1VQX1NDSEVEIHN0cml2ZXMgdG8gYWNoaWV2ZSBleGFjdGx5IHRoYXQuICBJdCBsZXRzIHRhc2tzIHRvIGJlCitncm91cGVkIGFuZCBkaXZpZGVzIENQVSB0aW1lIGZhaXJseSBhbW9uZyBzdWNoIGdyb3Vwcy4KKworQ09ORklHX1JUX0dST1VQX1NDSEVEIHBlcm1pdHMgdG8gZ3JvdXAgcmVhbC10aW1lIChpLmUuLCBTQ0hFRF9GSUZPIGFuZAorU0NIRURfUlIpIHRhc2tzLgorCitDT05GSUdfRkFJUl9HUk9VUF9TQ0hFRCBwZXJtaXRzIHRvIGdyb3VwIENGUyAoaS5lLiwgU0NIRURfTk9STUFMIGFuZAorU0NIRURfQkFUQ0gpIHRhc2tzLgorCisgICBUaGVzZSBvcHRpb25zIG5lZWQgQ09ORklHX0NHUk9VUFMgdG8gYmUgZGVmaW5lZCwgYW5kIGxldCB0aGUgYWRtaW5pc3RyYXRvcgorICAgY3JlYXRlIGFyYml0cmFyeSBncm91cHMgb2YgdGFza3MsIHVzaW5nIHRoZSAiY2dyb3VwIiBwc2V1ZG8gZmlsZXN5c3RlbS4gIFNlZQorICAgRG9jdW1lbnRhdGlvbi9jZ3JvdXBzL2Nncm91cHMudHh0IGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgZmlsZXN5c3RlbS4KKworV2hlbiBDT05GSUdfRkFJUl9HUk9VUF9TQ0hFRCBpcyBkZWZpbmVkLCBhICJjcHUuc2hhcmVzIiBmaWxlIGlzIGNyZWF0ZWQgZm9yIGVhY2gKK2dyb3VwIGNyZWF0ZWQgdXNpbmcgdGhlIHBzZXVkbyBmaWxlc3lzdGVtLiAgU2VlIGV4YW1wbGUgc3RlcHMgYmVsb3cgdG8gY3JlYXRlCit0YXNrIGdyb3VwcyBhbmQgbW9kaWZ5IHRoZWlyIENQVSBzaGFyZSB1c2luZyB0aGUgImNncm91cHMiIHBzZXVkbyBmaWxlc3lzdGVtLgorCisJIyBtb3VudCAtdCB0bXBmcyBjZ3JvdXBfcm9vdCAvc3lzL2ZzL2Nncm91cAorCSMgbWtkaXIgL3N5cy9mcy9jZ3JvdXAvY3B1CisJIyBtb3VudCAtdCBjZ3JvdXAgLW9jcHUgbm9uZSAvc3lzL2ZzL2Nncm91cC9jcHUKKwkjIGNkIC9zeXMvZnMvY2dyb3VwL2NwdQorCisJIyBta2RpciBtdWx0aW1lZGlhCSMgY3JlYXRlICJtdWx0aW1lZGlhIiBncm91cCBvZiB0YXNrcworCSMgbWtkaXIgYnJvd3NlcgkJIyBjcmVhdGUgImJyb3dzZXIiIGdyb3VwIG9mIHRhc2tzCisKKwkjICNDb25maWd1cmUgdGhlIG11bHRpbWVkaWEgZ3JvdXAgdG8gcmVjZWl2ZSB0d2ljZSB0aGUgQ1BVIGJhbmR3aWR0aAorCSMgI3RoYXQgb2YgYnJvd3NlciBncm91cAorCisJIyBlY2hvIDIwNDggPiBtdWx0aW1lZGlhL2NwdS5zaGFyZXMKKwkjIGVjaG8gMTAyNCA+IGJyb3dzZXIvY3B1LnNoYXJlcworCisJIyBmaXJlZm94ICYJIyBMYXVuY2ggZmlyZWZveCBhbmQgbW92ZSBpdCB0byAiYnJvd3NlciIgZ3JvdXAKKwkjIGVjaG8gPGZpcmVmb3hfcGlkPiA+IGJyb3dzZXIvdGFza3MKKworCSMgI0xhdW5jaCBnbXBsYXllciAob3IgeW91ciBmYXZvdXJpdGUgbW92aWUgcGxheWVyKQorCSMgZWNobyA8bW92aWVfcGxheWVyX3BpZD4gPiBtdWx0aW1lZGlhL3Rhc2tzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1kb21haW5zLnR4dCBiL0RvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLWRvbWFpbnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhZjgwYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1kb21haW5zLnR4dApAQCAtMCwwICsxLDc3IEBACitFYWNoIENQVSBoYXMgYSAiYmFzZSIgc2NoZWR1bGluZyBkb21haW4gKHN0cnVjdCBzY2hlZF9kb21haW4pLiBUaGUgZG9tYWluCitoaWVyYXJjaHkgaXMgYnVpbHQgZnJvbSB0aGVzZSBiYXNlIGRvbWFpbnMgdmlhIHRoZSAtPnBhcmVudCBwb2ludGVyLiAtPnBhcmVudAorTVVTVCBiZSBOVUxMIHRlcm1pbmF0ZWQsIGFuZCBkb21haW4gc3RydWN0dXJlcyBzaG91bGQgYmUgcGVyLUNQVSBhcyB0aGV5IGFyZQorbG9ja2xlc3NseSB1cGRhdGVkLgorCitFYWNoIHNjaGVkdWxpbmcgZG9tYWluIHNwYW5zIGEgbnVtYmVyIG9mIENQVXMgKHN0b3JlZCBpbiB0aGUgLT5zcGFuIGZpZWxkKS4KK0EgZG9tYWluJ3Mgc3BhbiBNVVNUIGJlIGEgc3VwZXJzZXQgb2YgaXQgY2hpbGQncyBzcGFuICh0aGlzIHJlc3RyaWN0aW9uIGNvdWxkCitiZSByZWxheGVkIGlmIHRoZSBuZWVkIGFyaXNlcyksIGFuZCBhIGJhc2UgZG9tYWluIGZvciBDUFUgaSBNVVNUIHNwYW4gYXQgbGVhc3QKK2kuIFRoZSB0b3AgZG9tYWluIGZvciBlYWNoIENQVSB3aWxsIGdlbmVyYWxseSBzcGFuIGFsbCBDUFVzIGluIHRoZSBzeXN0ZW0KK2FsdGhvdWdoIHN0cmljdGx5IGl0IGRvZXNuJ3QgaGF2ZSB0bywgYnV0IHRoaXMgY291bGQgbGVhZCB0byBhIGNhc2Ugd2hlcmUgc29tZQorQ1BVcyB3aWxsIG5ldmVyIGJlIGdpdmVuIHRhc2tzIHRvIHJ1biB1bmxlc3MgdGhlIENQVXMgYWxsb3dlZCBtYXNrIGlzCitleHBsaWNpdGx5IHNldC4gQSBzY2hlZCBkb21haW4ncyBzcGFuIG1lYW5zICJiYWxhbmNlIHByb2Nlc3MgbG9hZCBhbW9uZyB0aGVzZQorQ1BVcyIuCisKK0VhY2ggc2NoZWR1bGluZyBkb21haW4gbXVzdCBoYXZlIG9uZSBvciBtb3JlIENQVSBncm91cHMgKHN0cnVjdCBzY2hlZF9ncm91cCkKK3doaWNoIGFyZSBvcmdhbmlzZWQgYXMgYSBjaXJjdWxhciBvbmUgd2F5IGxpbmtlZCBsaXN0IGZyb20gdGhlIC0+Z3JvdXBzCitwb2ludGVyLiBUaGUgdW5pb24gb2YgY3B1bWFza3Mgb2YgdGhlc2UgZ3JvdXBzIE1VU1QgYmUgdGhlIHNhbWUgYXMgdGhlCitkb21haW4ncyBzcGFuLiBUaGUgaW50ZXJzZWN0aW9uIG9mIGNwdW1hc2tzIGZyb20gYW55IHR3byBvZiB0aGVzZSBncm91cHMKK01VU1QgYmUgdGhlIGVtcHR5IHNldC4gVGhlIGdyb3VwIHBvaW50ZWQgdG8gYnkgdGhlIC0+Z3JvdXBzIHBvaW50ZXIgTVVTVAorY29udGFpbiB0aGUgQ1BVIHRvIHdoaWNoIHRoZSBkb21haW4gYmVsb25ncy4gR3JvdXBzIG1heSBiZSBzaGFyZWQgYW1vbmcKK0NQVXMgYXMgdGhleSBjb250YWluIHJlYWQgb25seSBkYXRhIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIHNldCB1cC4KKworQmFsYW5jaW5nIHdpdGhpbiBhIHNjaGVkIGRvbWFpbiBvY2N1cnMgYmV0d2VlbiBncm91cHMuIFRoYXQgaXMsIGVhY2ggZ3JvdXAKK2lzIHRyZWF0ZWQgYXMgb25lIGVudGl0eS4gVGhlIGxvYWQgb2YgYSBncm91cCBpcyBkZWZpbmVkIGFzIHRoZSBzdW0gb2YgdGhlCitsb2FkIG9mIGVhY2ggb2YgaXRzIG1lbWJlciBDUFVzLCBhbmQgb25seSB3aGVuIHRoZSBsb2FkIG9mIGEgZ3JvdXAgYmVjb21lcworb3V0IG9mIGJhbGFuY2UgYXJlIHRhc2tzIG1vdmVkIGJldHdlZW4gZ3JvdXBzLgorCitJbiBrZXJuZWwvc2NoZWQvY29yZS5jLCB0cmlnZ2VyX2xvYWRfYmFsYW5jZSgpIGlzIHJ1biBwZXJpb2RpY2FsbHkgb24gZWFjaCBDUFUKK3Rocm91Z2ggc2NoZWR1bGVyX3RpY2soKS4gSXQgcmFpc2VzIGEgc29mdGlycSBhZnRlciB0aGUgbmV4dCByZWd1bGFybHkgc2NoZWR1bGVkCityZWJhbGFuY2luZyBldmVudCBmb3IgdGhlIGN1cnJlbnQgcnVucXVldWUgaGFzIGFycml2ZWQuIFRoZSBhY3R1YWwgbG9hZAorYmFsYW5jaW5nIHdvcmtob3JzZSwgcnVuX3JlYmFsYW5jZV9kb21haW5zKCktPnJlYmFsYW5jZV9kb21haW5zKCksIGlzIHRoZW4gcnVuCitpbiBzb2Z0aXJxIGNvbnRleHQgKFNDSEVEX1NPRlRJUlEpLgorCitUaGUgbGF0dGVyIGZ1bmN0aW9uIHRha2VzIHR3byBhcmd1bWVudHM6IHRoZSBjdXJyZW50IENQVSBhbmQgd2hldGhlciBpdCB3YXMgaWRsZQorYXQgdGhlIHRpbWUgdGhlIHNjaGVkdWxlcl90aWNrKCkgaGFwcGVuZWQgYW5kIGl0ZXJhdGVzIG92ZXIgYWxsIHNjaGVkIGRvbWFpbnMKK291ciBDUFUgaXMgb24sIHN0YXJ0aW5nIGZyb20gaXRzIGJhc2UgZG9tYWluIGFuZCBnb2luZyB1cCB0aGUgLT5wYXJlbnQgY2hhaW4uCitXaGlsZSBkb2luZyB0aGF0LCBpdCBjaGVja3MgdG8gc2VlIGlmIHRoZSBjdXJyZW50IGRvbWFpbiBoYXMgZXhoYXVzdGVkIGl0cworcmViYWxhbmNlIGludGVydmFsLiBJZiBzbywgaXQgcnVucyBsb2FkX2JhbGFuY2UoKSBvbiB0aGF0IGRvbWFpbi4gSXQgdGhlbiBjaGVja3MKK3RoZSBwYXJlbnQgc2NoZWRfZG9tYWluIChpZiBpdCBleGlzdHMpLCBhbmQgdGhlIHBhcmVudCBvZiB0aGUgcGFyZW50IGFuZCBzbworZm9ydGguCisKK0luaXRpYWxseSwgbG9hZF9iYWxhbmNlKCkgZmluZHMgdGhlIGJ1c2llc3QgZ3JvdXAgaW4gdGhlIGN1cnJlbnQgc2NoZWQgZG9tYWluLgorSWYgaXQgc3VjY2VlZHMsIGl0IGxvb2tzIGZvciB0aGUgYnVzaWVzdCBydW5xdWV1ZSBvZiBhbGwgdGhlIENQVXMnIHJ1bnF1ZXVlcyBpbgordGhhdCBncm91cC4gSWYgaXQgbWFuYWdlcyB0byBmaW5kIHN1Y2ggYSBydW5xdWV1ZSwgaXQgbG9ja3MgYm90aCBvdXIgaW5pdGlhbAorQ1BVJ3MgcnVucXVldWUgYW5kIHRoZSBuZXdseSBmb3VuZCBidXNpZXN0IG9uZSBhbmQgc3RhcnRzIG1vdmluZyB0YXNrcyBmcm9tIGl0Cit0byBvdXIgcnVucXVldWUuIFRoZSBleGFjdCBudW1iZXIgb2YgdGFza3MgYW1vdW50cyB0byBhbiBpbWJhbGFuY2UgcHJldmlvdXNseQorY29tcHV0ZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgdGhpcyBzY2hlZCBkb21haW4ncyBncm91cHMuCisKKyoqKiBJbXBsZW1lbnRpbmcgc2NoZWQgZG9tYWlucyAqKioKK1RoZSAiYmFzZSIgZG9tYWluIHdpbGwgInNwYW4iIHRoZSBmaXJzdCBsZXZlbCBvZiB0aGUgaGllcmFyY2h5LiBJbiB0aGUgY2FzZQorb2YgU01ULCB5b3UnbGwgc3BhbiBhbGwgc2libGluZ3Mgb2YgdGhlIHBoeXNpY2FsIENQVSwgd2l0aCBlYWNoIGdyb3VwIGJlaW5nCithIHNpbmdsZSB2aXJ0dWFsIENQVS4KKworSW4gU01QLCB0aGUgcGFyZW50IG9mIHRoZSBiYXNlIGRvbWFpbiB3aWxsIHNwYW4gYWxsIHBoeXNpY2FsIENQVXMgaW4gdGhlCitub2RlLiBFYWNoIGdyb3VwIGJlaW5nIGEgc2luZ2xlIHBoeXNpY2FsIENQVS4gVGhlbiB3aXRoIE5VTUEsIHRoZSBwYXJlbnQKK29mIHRoZSBTTVAgZG9tYWluIHdpbGwgc3BhbiB0aGUgZW50aXJlIG1hY2hpbmUsIHdpdGggZWFjaCBncm91cCBoYXZpbmcgdGhlCitjcHVtYXNrIG9mIGEgbm9kZS4gT3IsIHlvdSBjb3VsZCBkbyBtdWx0aS1sZXZlbCBOVU1BIG9yIE9wdGVyb24sIGZvciBleGFtcGxlLAorbWlnaHQgaGF2ZSBqdXN0IG9uZSBkb21haW4gY292ZXJpbmcgaXRzIG9uZSBOVU1BIGxldmVsLgorCitUaGUgaW1wbGVtZW50b3Igc2hvdWxkIHJlYWQgY29tbWVudHMgaW4gaW5jbHVkZS9saW51eC9zY2hlZC5oOgorc3RydWN0IHNjaGVkX2RvbWFpbiBmaWVsZHMsIFNEX0ZMQUdfKiwgU0RfKl9JTklUIHRvIGdldCBhbiBpZGVhIG9mCit0aGUgc3BlY2lmaWNzIGFuZCB3aGF0IHRvIHR1bmUuCisKK0FyY2hpdGVjdHVyZXMgbWF5IHJldGFpbiB0aGUgcmVndWxhciBvdmVycmlkZSB0aGUgZGVmYXVsdCBTRF8qX0lOSVQgZmxhZ3MKK3doaWxlIHVzaW5nIHRoZSBnZW5lcmljIGRvbWFpbiBidWlsZGVyIGluIGtlcm5lbC9zY2hlZC9jb3JlLmMgaWYgdGhleSB3aXNoIHRvCityZXRhaW4gdGhlIHRyYWRpdGlvbmFsIFNNVC0+U01QLT5OVU1BIHRvcG9sb2d5IChvciBzb21lIHN1YnNldCBvZiB0aGF0KS4gVGhpcworY2FuIGJlIGRvbmUgYnkgI2RlZmluZSdpbmcgQVJDSF9IQVNIX1NDSEVEX1RVTkUuCisKK0FsdGVybmF0aXZlbHksIHRoZSBhcmNoaXRlY3R1cmUgbWF5IGNvbXBsZXRlbHkgb3ZlcnJpZGUgdGhlIGdlbmVyaWMgZG9tYWluCitidWlsZGVyIGJ5ICNkZWZpbmUnaW5nIEFSQ0hfSEFTSF9TQ0hFRF9ET01BSU4sIGFuZCBleHBvcnRpbmcgeW91cgorYXJjaF9pbml0X3NjaGVkX2RvbWFpbnMgZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gd2lsbCBhdHRhY2ggZG9tYWlucyB0byBhbGwKK0NQVXMgdXNpbmcgY3B1X2F0dGFjaF9kb21haW4uCisKK1RoZSBzY2hlZC1kb21haW5zIGRlYnVnZ2luZyBpbmZyYXN0cnVjdHVyZSBjYW4gYmUgZW5hYmxlZCBieSBlbmFibGluZworQ09ORklHX1NDSEVEX0RFQlVHLiBUaGlzIGVuYWJsZXMgYW4gZXJyb3IgY2hlY2tpbmcgcGFyc2Ugb2YgdGhlIHNjaGVkIGRvbWFpbnMKK3doaWNoIHNob3VsZCBjYXRjaCBtb3N0IHBvc3NpYmxlIGVycm9ycyAoZGVzY3JpYmVkIGFib3ZlKS4gSXQgYWxzbyBwcmludHMgb3V0Cit0aGUgZG9tYWluIHN0cnVjdHVyZSBpbiBhIHZpc3VhbCBmb3JtYXQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1uaWNlLWRlc2lnbi50eHQgYi9Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1uaWNlLWRlc2lnbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2FjMWU0NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLW5pY2UtZGVzaWduLnR4dApAQCAtMCwwICsxLDEwOCBAQAorVGhpcyBkb2N1bWVudCBleHBsYWlucyB0aGUgdGhpbmtpbmcgYWJvdXQgdGhlIHJldmFtcGVkIGFuZCBzdHJlYW1saW5lZAorbmljZS1sZXZlbHMgaW1wbGVtZW50YXRpb24gaW4gdGhlIG5ldyBMaW51eCBzY2hlZHVsZXIuCisKK05pY2UgbGV2ZWxzIHdlcmUgYWx3YXlzIHByZXR0eSB3ZWFrIHVuZGVyIExpbnV4IGFuZCBwZW9wbGUgY29udGludW91c2x5CitwZXN0ZXJlZCB1cyB0byBtYWtlIG5pY2UgKzE5IHRhc2tzIHVzZSB1cCBtdWNoIGxlc3MgQ1BVIHRpbWUuCisKK1VuZm9ydHVuYXRlbHkgdGhhdCB3YXMgbm90IHRoYXQgZWFzeSB0byBpbXBsZW1lbnQgdW5kZXIgdGhlIG9sZAorc2NoZWR1bGVyLCAob3RoZXJ3aXNlIHdlJ2QgaGF2ZSBkb25lIGl0IGxvbmcgYWdvKSBiZWNhdXNlIG5pY2UgbGV2ZWwKK3N1cHBvcnQgd2FzIGhpc3RvcmljYWxseSBjb3VwbGVkIHRvIHRpbWVzbGljZSBsZW5ndGgsIGFuZCB0aW1lc2xpY2UKK3VuaXRzIHdlcmUgZHJpdmVuIGJ5IHRoZSBIWiB0aWNrLCBzbyB0aGUgc21hbGxlc3QgdGltZXNsaWNlIHdhcyAxL0haLgorCitJbiB0aGUgTygxKSBzY2hlZHVsZXIgKGluIDIwMDMpIHdlIGNoYW5nZWQgbmVnYXRpdmUgbmljZSBsZXZlbHMgdG8gYmUKK211Y2ggc3Ryb25nZXIgdGhhbiB0aGV5IHdlcmUgYmVmb3JlIGluIDIuNCAoYW5kIHBlb3BsZSB3ZXJlIGhhcHB5IGFib3V0Cit0aGF0IGNoYW5nZSksIGFuZCB3ZSBhbHNvIGludGVudGlvbmFsbHkgY2FsaWJyYXRlZCB0aGUgbGluZWFyIHRpbWVzbGljZQorcnVsZSBzbyB0aGF0IG5pY2UgKzE5IGxldmVsIHdvdWxkIGJlIF9leGFjdGx5XyAxIGppZmZ5LiBUbyBiZXR0ZXIKK3VuZGVyc3RhbmQgaXQsIHRoZSB0aW1lc2xpY2UgZ3JhcGggd2VudCBsaWtlIHRoaXMgKGNoZWVzeSBBU0NJSSBhcnQKK2FsZXJ0ISk6CisKKworICAgICAgICAgICAgICAgICAgIEEKKyAgICAgICAgICAgICBcICAgICB8IFt0aW1lc2xpY2UgbGVuZ3RoXQorICAgICAgICAgICAgICBcICAgIHwKKyAgICAgICAgICAgICAgIFwgICB8CisgICAgICAgICAgICAgICAgXCAgfAorICAgICAgICAgICAgICAgICBcIHwKKyAgICAgICAgICAgICAgICAgIFx8X19fMTAwbXNlY3MKKyAgICAgICAgICAgICAgICAgICB8XiAuIF8KKyAgICAgICAgICAgICAgICAgICB8ICAgICAgXiAuIF8KKyAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgXiAuIF8KKyAtKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLS0tLS0+IFtuaWNlIGxldmVsXQorIC0yMCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgKzE5CisgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgIHwKKworU28gdGhhdCBpZiBzb21lb25lIHdhbnRlZCB0byByZWFsbHkgcmVuaWNlIHRhc2tzLCArMTkgd291bGQgZ2l2ZSBhIG11Y2gKK2JpZ2dlciBoaXQgdGhhbiB0aGUgbm9ybWFsIGxpbmVhciBydWxlIHdvdWxkIGRvLiAoVGhlIHNvbHV0aW9uIG9mCitjaGFuZ2luZyB0aGUgQUJJIHRvIGV4dGVuZCBwcmlvcml0aWVzIHdhcyBkaXNjYXJkZWQgZWFybHkgb24uKQorCitUaGlzIGFwcHJvYWNoIHdvcmtlZCB0byBzb21lIGRlZ3JlZSBmb3Igc29tZSB0aW1lLCBidXQgbGF0ZXIgb24gd2l0aAorSFo9MTAwMCBpdCBjYXVzZWQgMSBqaWZmeSB0byBiZSAxIG1zZWMsIHdoaWNoIG1lYW50IDAuMSUgQ1BVIHVzYWdlIHdoaWNoCit3ZSBmZWx0IHRvIGJlIGEgYml0IGV4Y2Vzc2l2ZS4gRXhjZXNzaXZlIF9ub3RfIGJlY2F1c2UgaXQncyB0b28gc21hbGwgb2YKK2EgQ1BVIHV0aWxpemF0aW9uLCBidXQgYmVjYXVzZSBpdCBjYXVzZXMgdG9vIGZyZXF1ZW50IChvbmNlIHBlcgorbWlsbGlzZWMpIHJlc2NoZWR1bGluZy4gKGFuZCB3b3VsZCB0aHVzIHRyYXNoIHRoZSBjYWNoZSwgZXRjLiBSZW1lbWJlciwKK3RoaXMgd2FzIGxvbmcgYWdvIHdoZW4gaGFyZHdhcmUgd2FzIHdlYWtlciBhbmQgY2FjaGVzIHdlcmUgc21hbGxlciwgYW5kCitwZW9wbGUgd2VyZSBydW5uaW5nIG51bWJlciBjcnVuY2hpbmcgYXBwcyBhdCBuaWNlICsxOS4pCisKK1NvIGZvciBIWj0xMDAwIHdlIGNoYW5nZWQgbmljZSArMTkgdG8gNW1zZWNzLCBiZWNhdXNlIHRoYXQgZmVsdCBsaWtlIHRoZQorcmlnaHQgbWluaW1hbCBncmFudWxhcml0eSAtIGFuZCB0aGlzIHRyYW5zbGF0ZXMgdG8gNSUgQ1BVIHV0aWxpemF0aW9uLgorQnV0IHRoZSBmdW5kYW1lbnRhbCBIWi1zZW5zaXRpdmUgcHJvcGVydHkgZm9yIG5pY2UrMTkgc3RpbGwgcmVtYWluZWQsCithbmQgd2UgbmV2ZXIgZ290IGEgc2luZ2xlIGNvbXBsYWludCBhYm91dCBuaWNlICsxOSBiZWluZyB0b28gX3dlYWtfIGluCit0ZXJtcyBvZiBDUFUgdXRpbGl6YXRpb24sIHdlIG9ubHkgZ290IGNvbXBsYWludHMgYWJvdXQgaXQgKHN0aWxsKSBiZWluZwordG9vIF9zdHJvbmdfIDotKQorCitUbyBzdW0gaXQgdXA6IHdlIGFsd2F5cyB3YW50ZWQgdG8gbWFrZSBuaWNlIGxldmVscyBtb3JlIGNvbnNpc3RlbnQsIGJ1dAord2l0aGluIHRoZSBjb25zdHJhaW50cyBvZiBIWiBhbmQgamlmZmllcyBhbmQgdGhlaXIgbmFzdHkgZGVzaWduIGxldmVsCitjb3VwbGluZyB0byB0aW1lc2xpY2VzIGFuZCBncmFudWxhcml0eSBpdCB3YXMgbm90IHJlYWxseSB2aWFibGUuCisKK1RoZSBzZWNvbmQgKGxlc3MgZnJlcXVlbnQgYnV0IHN0aWxsIHBlcmlvZGljYWxseSBvY2N1cnJpbmcpIGNvbXBsYWludAorYWJvdXQgTGludXgncyBuaWNlIGxldmVsIHN1cHBvcnQgd2FzIGl0cyBhc3N5bWV0cnkgYXJvdW5kIHRoZSBvcmlnbworKHdoaWNoIHlvdSBjYW4gc2VlIGRlbW9uc3RyYXRlZCBpbiB0aGUgcGljdHVyZSBhYm92ZSksIG9yIG1vcmUKK2FjY3VyYXRlbHk6IHRoZSBmYWN0IHRoYXQgbmljZSBsZXZlbCBiZWhhdmlvciBkZXBlbmRlZCBvbiB0aGUgX2Fic29sdXRlXworbmljZSBsZXZlbCBhcyB3ZWxsLCB3aGlsZSB0aGUgbmljZSBBUEkgaXRzZWxmIGlzIGZ1bmRhbWVudGFsbHkKKyJyZWxhdGl2ZSI6CisKKyAgIGludCBuaWNlKGludCBpbmMpOworCisgICBhc21saW5rYWdlIGxvbmcgc3lzX25pY2UoaW50IGluY3JlbWVudCkKKworKHRoZSBmaXJzdCBvbmUgaXMgdGhlIGdsaWJjIEFQSSwgdGhlIHNlY29uZCBvbmUgaXMgdGhlIHN5c2NhbGwgQVBJLikKK05vdGUgdGhhdCB0aGUgJ2luYycgaXMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgbmljZSBsZXZlbC4gVG9vbHMgbGlrZQorYmFzaCdzICJuaWNlIiBjb21tYW5kIG1pcnJvciB0aGlzIHJlbGF0aXZlIEFQSS4KKworV2l0aCB0aGUgb2xkIHNjaGVkdWxlciwgaWYgeW91IGZvciBleGFtcGxlIHN0YXJ0ZWQgYSBuaWNlZCB0YXNrIHdpdGggKzEKK2FuZCBhbm90aGVyIHRhc2sgd2l0aCArMiwgdGhlIENQVSBzcGxpdCBiZXR3ZWVuIHRoZSB0d28gdGFza3Mgd291bGQKK2RlcGVuZCBvbiB0aGUgbmljZSBsZXZlbCBvZiB0aGUgcGFyZW50IHNoZWxsIC0gaWYgaXQgd2FzIGF0IG5pY2UgLTEwIHRoZQorQ1BVIHNwbGl0IHdhcyBkaWZmZXJlbnQgdGhhbiBpZiBpdCB3YXMgYXQgKzUgb3IgKzEwLgorCitBIHRoaXJkIGNvbXBsYWludCBhZ2FpbnN0IExpbnV4J3MgbmljZSBsZXZlbCBzdXBwb3J0IHdhcyB0aGF0IG5lZ2F0aXZlCituaWNlIGxldmVscyB3ZXJlIG5vdCAncHVuY2h5IGVub3VnaCcsIHNvIGxvdHMgb2YgcGVvcGxlIGhhZCB0byByZXNvcnQgdG8KK3J1biBhdWRpbyAoYW5kIG90aGVyIG11bHRpbWVkaWEpIGFwcHMgdW5kZXIgUlQgcHJpb3JpdGllcyBzdWNoIGFzCitTQ0hFRF9GSUZPLiBCdXQgdGhpcyBjYXVzZWQgb3RoZXIgcHJvYmxlbXM6IFNDSEVEX0ZJRk8gaXMgbm90IHN0YXJ2YXRpb24KK3Byb29mLCBhbmQgYSBidWdneSBTQ0hFRF9GSUZPIGFwcCBjYW4gYWxzbyBsb2NrIHVwIHRoZSBzeXN0ZW0gZm9yIGdvb2QuCisKK1RoZSBuZXcgc2NoZWR1bGVyIGluIHYyLjYuMjMgYWRkcmVzc2VzIGFsbCB0aHJlZSB0eXBlcyBvZiBjb21wbGFpbnRzOgorCitUbyBhZGRyZXNzIHRoZSBmaXJzdCBjb21wbGFpbnQgKG9mIG5pY2UgbGV2ZWxzIGJlaW5nIG5vdCAicHVuY2h5IgorZW5vdWdoKSwgdGhlIHNjaGVkdWxlciB3YXMgZGVjb3VwbGVkIGZyb20gJ3RpbWUgc2xpY2UnIGFuZCBIWiBjb25jZXB0cworKGFuZCBncmFudWxhcml0eSB3YXMgbWFkZSBhIHNlcGFyYXRlIGNvbmNlcHQgZnJvbSBuaWNlIGxldmVscykgYW5kIHRodXMKK2l0IHdhcyBwb3NzaWJsZSB0byBpbXBsZW1lbnQgYmV0dGVyIGFuZCBtb3JlIGNvbnNpc3RlbnQgbmljZSArMTkKK3N1cHBvcnQ6IHdpdGggdGhlIG5ldyBzY2hlZHVsZXIgbmljZSArMTkgdGFza3MgZ2V0IGEgSFotaW5kZXBlbmRlbnQKKzEuNSUsIGluc3RlYWQgb2YgdGhlIHZhcmlhYmxlIDMlLTUlLTklIHJhbmdlIHRoZXkgZ290IGluIHRoZSBvbGQKK3NjaGVkdWxlci4KKworVG8gYWRkcmVzcyB0aGUgc2Vjb25kIGNvbXBsYWludCAob2YgbmljZSBsZXZlbHMgbm90IGJlaW5nIGNvbnNpc3RlbnQpLAordGhlIG5ldyBzY2hlZHVsZXIgbWFrZXMgbmljZSgxKSBoYXZlIHRoZSBzYW1lIENQVSB1dGlsaXphdGlvbiBlZmZlY3Qgb24KK3Rhc2tzLCByZWdhcmRsZXNzIG9mIHRoZWlyIGFic29sdXRlIG5pY2UgbGV2ZWxzLiBTbyBvbiB0aGUgbmV3CitzY2hlZHVsZXIsIHJ1bm5pbmcgYSBuaWNlICsxMCBhbmQgYSBuaWNlIDExIHRhc2sgaGFzIHRoZSBzYW1lIENQVQordXRpbGl6YXRpb24gInNwbGl0IiBiZXR3ZWVuIHRoZW0gYXMgcnVubmluZyBhIG5pY2UgLTUgYW5kIGEgbmljZSAtNAordGFzay4gKG9uZSB3aWxsIGdldCA1NSUgb2YgdGhlIENQVSwgdGhlIG90aGVyIDQ1JS4pIFRoYXQgaXMgd2h5IG5pY2UKK2xldmVscyB3ZXJlIGNoYW5nZWQgdG8gYmUgIm11bHRpcGxpY2F0aXZlIiAob3IgZXhwb25lbnRpYWwpIC0gdGhhdCB3YXkKK2l0IGRvZXMgbm90IG1hdHRlciB3aGljaCBuaWNlIGxldmVsIHlvdSBzdGFydCBvdXQgZnJvbSwgdGhlICdyZWxhdGl2ZQorcmVzdWx0JyB3aWxsIGFsd2F5cyBiZSB0aGUgc2FtZS4KKworVGhlIHRoaXJkIGNvbXBsYWludCAob2YgbmVnYXRpdmUgbmljZSBsZXZlbHMgbm90IGJlaW5nICJwdW5jaHkiIGVub3VnaAorYW5kIGZvcmNpbmcgYXVkaW8gYXBwcyB0byBydW4gdW5kZXIgdGhlIG1vcmUgZGFuZ2Vyb3VzIFNDSEVEX0ZJRk8KK3NjaGVkdWxpbmcgcG9saWN5KSBpcyBhZGRyZXNzZWQgYnkgdGhlIG5ldyBzY2hlZHVsZXIgYWxtb3N0CithdXRvbWF0aWNhbGx5OiBzdHJvbmdlciBuZWdhdGl2ZSBuaWNlIGxldmVscyBhcmUgYW4gYXV0b21hdGljCitzaWRlLWVmZmVjdCBvZiB0aGUgcmVjYWxpYnJhdGVkIGR5bmFtaWMgcmFuZ2Ugb2YgbmljZSBsZXZlbHMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1ydC1ncm91cC50eHQgYi9Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1ydC1ncm91cC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiNTRkNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2NoZWR1bGVyL3NjaGVkLXJ0LWdyb3VwLnR4dApAQCAtMCwwICsxLDE4MyBAQAorCQkJCVJlYWwtVGltZSBncm91cCBzY2hlZHVsaW5nCisJCQkJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ09OVEVOVFMKKz09PT09PT09CisKKzAuIFdBUk5JTkcKKzEuIE92ZXJ2aWV3CisgIDEuMSBUaGUgcHJvYmxlbQorICAxLjIgVGhlIHNvbHV0aW9uCisyLiBUaGUgaW50ZXJmYWNlCisgIDIuMSBTeXN0ZW0td2lkZSBzZXR0aW5ncworICAyLjIgRGVmYXVsdCBiZWhhdmlvdXIKKyAgMi4zIEJhc2lzIGZvciBncm91cGluZyB0YXNrcworMy4gRnV0dXJlIHBsYW5zCisKKworMC4gV0FSTklORworPT09PT09PT09PQorCisgRmlkZGxpbmcgd2l0aCB0aGVzZSBzZXR0aW5ncyBjYW4gcmVzdWx0IGluIGFuIHVuc3RhYmxlIHN5c3RlbSwgdGhlIGtub2JzIGFyZQorIHJvb3Qgb25seSBhbmQgYXNzdW1lcyByb290IGtub3dzIHdoYXQgaGUgaXMgZG9pbmcuCisKK01vc3Qgbm90YWJsZToKKworICogdmVyeSBzbWFsbCB2YWx1ZXMgaW4gc2NoZWRfcnRfcGVyaW9kX3VzIGNhbiByZXN1bHQgaW4gYW4gdW5zdGFibGUKKyAgIHN5c3RlbSB3aGVuIHRoZSBwZXJpb2QgaXMgc21hbGxlciB0aGFuIGVpdGhlciB0aGUgYXZhaWxhYmxlIGhydGltZXIKKyAgIHJlc29sdXRpb24sIG9yIHRoZSB0aW1lIGl0IHRha2VzIHRvIGhhbmRsZSB0aGUgYnVkZ2V0IHJlZnJlc2ggaXRzZWxmLgorCisgKiB2ZXJ5IHNtYWxsIHZhbHVlcyBpbiBzY2hlZF9ydF9ydW50aW1lX3VzIGNhbiByZXN1bHQgaW4gYW4gdW5zdGFibGUKKyAgIHN5c3RlbSB3aGVuIHRoZSBydW50aW1lIGlzIHNvIHNtYWxsIHRoZSBzeXN0ZW0gaGFzIGRpZmZpY3VsdHkgbWFraW5nCisgICBmb3J3YXJkIHByb2dyZXNzIChOT1RFOiB0aGUgbWlncmF0aW9uIHRocmVhZCBhbmQga3N0b3BtYWNoaW5lIGJvdGgKKyAgIGFyZSByZWFsLXRpbWUgcHJvY2Vzc2VzKS4KKworMS4gT3ZlcnZpZXcKKz09PT09PT09PT09CisKKworMS4xIFRoZSBwcm9ibGVtCistLS0tLS0tLS0tLS0tLS0KKworUmVhbHRpbWUgc2NoZWR1bGluZyBpcyBhbGwgYWJvdXQgZGV0ZXJtaW5pc20sIGEgZ3JvdXAgaGFzIHRvIGJlIGFibGUgdG8gcmVseSBvbgordGhlIGFtb3VudCBvZiBiYW5kd2lkdGggKGVnLiBDUFUgdGltZSkgYmVpbmcgY29uc3RhbnQuIEluIG9yZGVyIHRvIHNjaGVkdWxlCittdWx0aXBsZSBncm91cHMgb2YgcmVhbHRpbWUgdGFza3MsIGVhY2ggZ3JvdXAgbXVzdCBiZSBhc3NpZ25lZCBhIGZpeGVkIHBvcnRpb24KK29mIHRoZSBDUFUgdGltZSBhdmFpbGFibGUuICBXaXRob3V0IGEgbWluaW11bSBndWFyYW50ZWUgYSByZWFsdGltZSBncm91cCBjYW4KK29idmlvdXNseSBmYWxsIHNob3J0LiBBIGZ1enp5IHVwcGVyIGxpbWl0IGlzIG9mIG5vIHVzZSBzaW5jZSBpdCBjYW5ub3QgYmUKK3JlbGllZCB1cG9uLiBXaGljaCBsZWF2ZXMgdXMgd2l0aCBqdXN0IHRoZSBzaW5nbGUgZml4ZWQgcG9ydGlvbi4KKworMS4yIFRoZSBzb2x1dGlvbgorLS0tLS0tLS0tLS0tLS0tLQorCitDUFUgdGltZSBpcyBkaXZpZGVkIGJ5IG1lYW5zIG9mIHNwZWNpZnlpbmcgaG93IG11Y2ggdGltZSBjYW4gYmUgc3BlbnQgcnVubmluZworaW4gYSBnaXZlbiBwZXJpb2QuIFdlIGFsbG9jYXRlIHRoaXMgInJ1biB0aW1lIiBmb3IgZWFjaCByZWFsdGltZSBncm91cCB3aGljaAordGhlIG90aGVyIHJlYWx0aW1lIGdyb3VwcyB3aWxsIG5vdCBiZSBwZXJtaXR0ZWQgdG8gdXNlLgorCitBbnkgdGltZSBub3QgYWxsb2NhdGVkIHRvIGEgcmVhbHRpbWUgZ3JvdXAgd2lsbCBiZSB1c2VkIHRvIHJ1biBub3JtYWwgcHJpb3JpdHkKK3Rhc2tzIChTQ0hFRF9PVEhFUikuIEFueSBhbGxvY2F0ZWQgcnVuIHRpbWUgbm90IHVzZWQgd2lsbCBhbHNvIGJlIHBpY2tlZCB1cCBieQorU0NIRURfT1RIRVIuCisKK0xldCdzIGNvbnNpZGVyIGFuIGV4YW1wbGU6IGEgZnJhbWUgZml4ZWQgcmVhbHRpbWUgcmVuZGVyZXIgbXVzdCBkZWxpdmVyIDI1CitmcmFtZXMgYSBzZWNvbmQsIHdoaWNoIHlpZWxkcyBhIHBlcmlvZCBvZiAwLjA0cyBwZXIgZnJhbWUuIE5vdyBzYXkgaXQgd2lsbCBhbHNvCitoYXZlIHRvIHBsYXkgc29tZSBtdXNpYyBhbmQgcmVzcG9uZCB0byBpbnB1dCwgbGVhdmluZyBpdCB3aXRoIGFyb3VuZCA4MCUgQ1BVCit0aW1lIGRlZGljYXRlZCBmb3IgdGhlIGdyYXBoaWNzLiBXZSBjYW4gdGhlbiBnaXZlIHRoaXMgZ3JvdXAgYSBydW4gdGltZSBvZiAwLjgKKyogMC4wNHMgPSAwLjAzMnMuCisKK1RoaXMgd2F5IHRoZSBncmFwaGljcyBncm91cCB3aWxsIGhhdmUgYSAwLjA0cyBwZXJpb2Qgd2l0aCBhIDAuMDMycyBydW4gdGltZQorbGltaXQuIE5vdyBpZiB0aGUgYXVkaW8gdGhyZWFkIG5lZWRzIHRvIHJlZmlsbCB0aGUgRE1BIGJ1ZmZlciBldmVyeSAwLjAwNXMsIGJ1dAorbmVlZHMgb25seSBhYm91dCAzJSBDUFUgdGltZSB0byBkbyBzbywgaXQgY2FuIGRvIHdpdGggYSAwLjAzICogMC4wMDVzID0KKzAuMDAwMTVzLiBTbyB0aGlzIGdyb3VwIGNhbiBiZSBzY2hlZHVsZWQgd2l0aCBhIHBlcmlvZCBvZiAwLjAwNXMgYW5kIGEgcnVuIHRpbWUKK29mIDAuMDAwMTVzLgorCitUaGUgcmVtYWluaW5nIENQVSB0aW1lIHdpbGwgYmUgdXNlZCBmb3IgdXNlciBpbnB1dCBhbmQgb3RoZXIgdGFza3MuIEJlY2F1c2UKK3JlYWx0aW1lIHRhc2tzIGhhdmUgZXhwbGljaXRseSBhbGxvY2F0ZWQgdGhlIENQVSB0aW1lIHRoZXkgbmVlZCB0byBwZXJmb3JtCit0aGVpciB0YXNrcywgYnVmZmVyIHVuZGVycnVucyBpbiB0aGUgZ3JhcGhpY3Mgb3IgYXVkaW8gY2FuIGJlIGVsaW1pbmF0ZWQuCisKK05PVEU6IHRoZSBhYm92ZSBleGFtcGxlIGlzIG5vdCBmdWxseSBpbXBsZW1lbnRlZCB5ZXQuIFdlIHN0aWxsCitsYWNrIGFuIEVERiBzY2hlZHVsZXIgdG8gbWFrZSBub24tdW5pZm9ybSBwZXJpb2RzIHVzYWJsZS4KKworCisyLiBUaGUgSW50ZXJmYWNlCis9PT09PT09PT09PT09PT09CisKKworMi4xIFN5c3RlbSB3aWRlIHNldHRpbmdzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHN5c3RlbSB3aWRlIHNldHRpbmdzIGFyZSBjb25maWd1cmVkIHVuZGVyIHRoZSAvcHJvYyB2aXJ0dWFsIGZpbGUgc3lzdGVtOgorCisvcHJvYy9zeXMva2VybmVsL3NjaGVkX3J0X3BlcmlvZF91czoKKyAgVGhlIHNjaGVkdWxpbmcgcGVyaW9kIHRoYXQgaXMgZXF1aXZhbGVudCB0byAxMDAlIENQVSBiYW5kd2lkdGgKKworL3Byb2Mvc3lzL2tlcm5lbC9zY2hlZF9ydF9ydW50aW1lX3VzOgorICBBIGdsb2JhbCBsaW1pdCBvbiBob3cgbXVjaCB0aW1lIHJlYWx0aW1lIHNjaGVkdWxpbmcgbWF5IHVzZS4gIEV2ZW4gd2l0aG91dAorICBDT05GSUdfUlRfR1JPVVBfU0NIRUQgZW5hYmxlZCwgdGhpcyB3aWxsIGxpbWl0IHRpbWUgcmVzZXJ2ZWQgdG8gcmVhbHRpbWUKKyAgcHJvY2Vzc2VzLiBXaXRoIENPTkZJR19SVF9HUk9VUF9TQ0hFRCBpdCBzaWduaWZpZXMgdGhlIHRvdGFsIGJhbmR3aWR0aAorICBhdmFpbGFibGUgdG8gYWxsIHJlYWx0aW1lIGdyb3Vwcy4KKworICAqIFRpbWUgaXMgc3BlY2lmaWVkIGluIHVzIGJlY2F1c2UgdGhlIGludGVyZmFjZSBpcyBzMzIuIFRoaXMgZ2l2ZXMgYW4KKyAgICBvcGVyYXRpbmcgcmFuZ2UgZnJvbSAxdXMgdG8gYWJvdXQgMzUgbWludXRlcy4KKyAgKiBzY2hlZF9ydF9wZXJpb2RfdXMgdGFrZXMgdmFsdWVzIGZyb20gMSB0byBJTlRfTUFYLgorICAqIHNjaGVkX3J0X3J1bnRpbWVfdXMgdGFrZXMgdmFsdWVzIGZyb20gLTEgdG8gKElOVF9NQVggLSAxKS4KKyAgKiBBIHJ1biB0aW1lIG9mIC0xIHNwZWNpZmllcyBydW50aW1lID09IHBlcmlvZCwgaWUuIG5vIGxpbWl0LgorCisKKzIuMiBEZWZhdWx0IGJlaGF2aW91cgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBkZWZhdWx0IHZhbHVlcyBmb3Igc2NoZWRfcnRfcGVyaW9kX3VzICgxMDAwMDAwIG9yIDFzKSBhbmQKK3NjaGVkX3J0X3J1bnRpbWVfdXMgKDk1MDAwMCBvciAwLjk1cykuICBUaGlzIGdpdmVzIDAuMDVzIHRvIGJlIHVzZWQgYnkKK1NDSEVEX09USEVSIChub24tUlQgdGFza3MpLiBUaGVzZSBkZWZhdWx0cyB3ZXJlIGNob3NlbiBzbyB0aGF0IGEgcnVuLWF3YXkKK3JlYWx0aW1lIHRhc2tzIHdpbGwgbm90IGxvY2sgdXAgdGhlIG1hY2hpbmUgYnV0IGxlYXZlIGEgbGl0dGxlIHRpbWUgdG8gcmVjb3ZlcgoraXQuICBCeSBzZXR0aW5nIHJ1bnRpbWUgdG8gLTEgeW91J2QgZ2V0IHRoZSBvbGQgYmVoYXZpb3VyIGJhY2suCisKK0J5IGRlZmF1bHQgYWxsIGJhbmR3aWR0aCBpcyBhc3NpZ25lZCB0byB0aGUgcm9vdCBncm91cCBhbmQgbmV3IGdyb3VwcyBnZXQgdGhlCitwZXJpb2QgZnJvbSAvcHJvYy9zeXMva2VybmVsL3NjaGVkX3J0X3BlcmlvZF91cyBhbmQgYSBydW4gdGltZSBvZiAwLiBJZiB5b3UKK3dhbnQgdG8gYXNzaWduIGJhbmR3aWR0aCB0byBhbm90aGVyIGdyb3VwLCByZWR1Y2UgdGhlIHJvb3QgZ3JvdXAncyBiYW5kd2lkdGgKK2FuZCBhc3NpZ24gc29tZSBvciBhbGwgb2YgdGhlIGRpZmZlcmVuY2UgdG8gYW5vdGhlciBncm91cC4KKworUmVhbHRpbWUgZ3JvdXAgc2NoZWR1bGluZyBtZWFucyB5b3UgaGF2ZSB0byBhc3NpZ24gYSBwb3J0aW9uIG9mIHRvdGFsIENQVQorYmFuZHdpZHRoIHRvIHRoZSBncm91cCBiZWZvcmUgaXQgd2lsbCBhY2NlcHQgcmVhbHRpbWUgdGFza3MuIFRoZXJlZm9yZSB5b3Ugd2lsbAorbm90IGJlIGFibGUgdG8gcnVuIHJlYWx0aW1lIHRhc2tzIGFzIGFueSB1c2VyIG90aGVyIHRoYW4gcm9vdCB1bnRpbCB5b3UgaGF2ZQorZG9uZSB0aGF0LCBldmVuIGlmIHRoZSB1c2VyIGhhcyB0aGUgcmlnaHRzIHRvIHJ1biBwcm9jZXNzZXMgd2l0aCByZWFsdGltZQorcHJpb3JpdHkhCisKKworMi4zIEJhc2lzIGZvciBncm91cGluZyB0YXNrcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFbmFibGluZyBDT05GSUdfUlRfR1JPVVBfU0NIRUQgbGV0cyB5b3UgZXhwbGljaXRseSBhbGxvY2F0ZSByZWFsCitDUFUgYmFuZHdpZHRoIHRvIHRhc2sgZ3JvdXBzLgorCitUaGlzIHVzZXMgdGhlIGNncm91cCB2aXJ0dWFsIGZpbGUgc3lzdGVtIGFuZCAiPGNncm91cD4vY3B1LnJ0X3J1bnRpbWVfdXMiCit0byBjb250cm9sIHRoZSBDUFUgdGltZSByZXNlcnZlZCBmb3IgZWFjaCBjb250cm9sIGdyb3VwLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB3b3JraW5nIHdpdGggY29udHJvbCBncm91cHMsIHlvdSBzaG91bGQgcmVhZAorRG9jdW1lbnRhdGlvbi9jZ3JvdXBzL2Nncm91cHMudHh0IGFzIHdlbGwuCisKK0dyb3VwIHNldHRpbmdzIGFyZSBjaGVja2VkIGFnYWluc3QgdGhlIGZvbGxvd2luZyBsaW1pdHMgaW4gb3JkZXIgdG8ga2VlcCB0aGUKK2NvbmZpZ3VyYXRpb24gc2NoZWR1bGFibGU6CisKKyAgIFxTdW1fe2l9IHJ1bnRpbWVfe2l9IC8gZ2xvYmFsX3BlcmlvZCA8PSBnbG9iYWxfcnVudGltZSAvIGdsb2JhbF9wZXJpb2QKKworRm9yIG5vdywgdGhpcyBjYW4gYmUgc2ltcGxpZmllZCB0byBqdXN0IHRoZSBmb2xsb3dpbmcgKGJ1dCBzZWUgRnV0dXJlIHBsYW5zKToKKworICAgXFN1bV97aX0gcnVudGltZV97aX0gPD0gZ2xvYmFsX3J1bnRpbWUKKworCiszLiBGdXR1cmUgcGxhbnMKKz09PT09PT09PT09PT09PQorCitUaGVyZSBpcyB3b3JrIGluIHByb2dyZXNzIHRvIG1ha2UgdGhlIHNjaGVkdWxpbmcgcGVyaW9kIGZvciBlYWNoIGdyb3VwCisoIjxjZ3JvdXA+L2NwdS5ydF9wZXJpb2RfdXMiKSBjb25maWd1cmFibGUgYXMgd2VsbC4KKworVGhlIGNvbnN0cmFpbnQgb24gdGhlIHBlcmlvZCBpcyB0aGF0IGEgc3ViZ3JvdXAgbXVzdCBoYXZlIGEgc21hbGxlciBvcgorZXF1YWwgcGVyaW9kIHRvIGl0cyBwYXJlbnQuIEJ1dCByZWFsaXN0aWNhbGx5IGl0cyBub3QgdmVyeSB1c2VmdWwgX3lldF8KK2FzIGl0cyBwcm9uZSB0byBzdGFydmF0aW9uIHdpdGhvdXQgZGVhZGxpbmUgc2NoZWR1bGluZy4KKworQ29uc2lkZXIgdHdvIHNpYmxpbmcgZ3JvdXBzIEEgYW5kIEI7IGJvdGggaGF2ZSA1MCUgYmFuZHdpZHRoLCBidXQgQSdzCitwZXJpb2QgaXMgdHdpY2UgdGhlIGxlbmd0aCBvZiBCJ3MuCisKKyogZ3JvdXAgQTogcGVyaW9kPTEwMDAwMHVzLCBydW50aW1lPTEwMDAwdXMKKwktIHRoaXMgcnVucyBmb3IgMC4wMXMgb25jZSBldmVyeSAwLjFzCisKKyogZ3JvdXAgQjogcGVyaW9kPSA1MDAwMHVzLCBydW50aW1lPTEwMDAwdXMKKwktIHRoaXMgcnVucyBmb3IgMC4wMXMgdHdpY2UgZXZlcnkgMC4xcyAob3Igb25jZSBldmVyeSAwLjA1IHNlYykuCisKK1RoaXMgbWVhbnMgdGhhdCBjdXJyZW50bHkgYSB3aGlsZSAoMSkgbG9vcCBpbiBBIHdpbGwgcnVuIGZvciB0aGUgZnVsbCBwZXJpb2Qgb2YKK0IgYW5kIGNhbiBzdGFydmUgQidzIHRhc2tzIChhc3N1bWluZyB0aGV5IGFyZSBvZiBsb3dlciBwcmlvcml0eSkgZm9yIGEgd2hvbGUKK3BlcmlvZC4KKworVGhlIG5leHQgcHJvamVjdCB3aWxsIGJlIFNDSEVEX0VERiAoRWFybGllc3QgRGVhZGxpbmUgRmlyc3Qgc2NoZWR1bGluZykgdG8gYnJpbmcKK2Z1bGwgZGVhZGxpbmUgc2NoZWR1bGluZyB0byB0aGUgbGludXgga2VybmVsLiBEZWFkbGluZSBzY2hlZHVsaW5nIHRoZSBhYm92ZQorZ3JvdXBzIGFuZCB0cmVhdGluZyBlbmQgb2YgdGhlIHBlcmlvZCBhcyBhIGRlYWRsaW5lIHdpbGwgZW5zdXJlIHRoYXQgdGhleSBib3RoCitnZXQgdGhlaXIgYWxsb2NhdGVkIHRpbWUuCisKK0ltcGxlbWVudGluZyBTQ0hFRF9FREYgbWlnaHQgdGFrZSBhIHdoaWxlIHRvIGNvbXBsZXRlLiBQcmlvcml0eSBJbmhlcml0YW5jZSBpcwordGhlIGJpZ2dlc3QgY2hhbGxlbmdlIGFzIHRoZSBjdXJyZW50IGxpbnV4IFBJIGluZnJhc3RydWN0dXJlIGlzIGdlYXJlZCB0b3dhcmRzCit0aGUgbGltaXRlZCBzdGF0aWMgcHJpb3JpdHkgbGV2ZWxzIDAtOTkuIFdpdGggZGVhZGxpbmUgc2NoZWR1bGluZyB5b3UgbmVlZCB0bworZG8gZGVhZGxpbmUgaW5oZXJpdGFuY2UgKHNpbmNlIHByaW9yaXR5IGlzIGludmVyc2VseSBwcm9wb3J0aW9uYWwgdG8gdGhlCitkZWFkbGluZSBkZWx0YSAoZGVhZGxpbmUgLSBub3cpKS4KKworVGhpcyBtZWFucyB0aGUgd2hvbGUgUEkgbWFjaGluZXJ5IHdpbGwgaGF2ZSB0byBiZSByZXdvcmtlZCAtIGFuZCB0aGF0IGlzIG9uZSBvZgordGhlIG1vc3QgY29tcGxleCBwaWVjZXMgb2YgY29kZSB3ZSBoYXZlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtc3RhdHMudHh0IGIvRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtc3RhdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyNTliMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NjaGVkdWxlci9zY2hlZC1zdGF0cy50eHQKQEAgLTAsMCArMSwxNTQgQEAKK1ZlcnNpb24gMTUgb2Ygc2NoZWRzdGF0cyBkcm9wcGVkIGNvdW50ZXJzIGZvciBzb21lIHNjaGVkX3lpZWxkOgoreWxkX2V4cF9lbXB0eSwgeWxkX2FjdF9lbXB0eSBhbmQgeWxkX2JvdGhfZW1wdHkuIE90aGVyd2lzZSwgaXQgaXMKK2lkZW50aWNhbCB0byB2ZXJzaW9uIDE0LgorCitWZXJzaW9uIDE0IG9mIHNjaGVkc3RhdHMgaW5jbHVkZXMgc3VwcG9ydCBmb3Igc2NoZWRfZG9tYWlucywgd2hpY2ggaGl0IHRoZQorbWFpbmxpbmUga2VybmVsIGluIDIuNi4yMCBhbHRob3VnaCBpdCBpcyBpZGVudGljYWwgdG8gdGhlIHN0YXRzIGZyb20gdmVyc2lvbgorMTIgd2hpY2ggd2FzIGluIHRoZSBrZXJuZWwgZnJvbSAyLjYuMTMtMi42LjE5ICh2ZXJzaW9uIDEzIG5ldmVyIHNhdyBhIGtlcm5lbAorcmVsZWFzZSkuICBTb21lIGNvdW50ZXJzIG1ha2UgbW9yZSBzZW5zZSB0byBiZSBwZXItcnVucXVldWU7IG90aGVyIHRvIGJlCitwZXItZG9tYWluLiAgTm90ZSB0aGF0IGRvbWFpbnMgKGFuZCB0aGVpciBhc3NvY2lhdGVkIGluZm9ybWF0aW9uKSB3aWxsIG9ubHkKK2JlIHBlcnRpbmVudCBhbmQgYXZhaWxhYmxlIG9uIG1hY2hpbmVzIHV0aWxpemluZyBDT05GSUdfU01QLgorCitJbiB2ZXJzaW9uIDE0IG9mIHNjaGVkc3RhdCwgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGxldmVsIG9mIGRvbWFpbgorc3RhdGlzdGljcyBmb3IgZWFjaCBjcHUgbGlzdGVkLCBhbmQgdGhlcmUgbWF5IHdlbGwgYmUgbW9yZSB0aGFuIG9uZQorZG9tYWluLiAgRG9tYWlucyBoYXZlIG5vIHBhcnRpY3VsYXIgbmFtZXMgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbiwgYnV0Cit0aGUgaGlnaGVzdCBudW1iZXJlZCBvbmUgdHlwaWNhbGx5IGFyYml0cmF0ZXMgYmFsYW5jaW5nIGFjcm9zcyBhbGwgdGhlCitjcHVzIG9uIHRoZSBtYWNoaW5lLCB3aGlsZSBkb21haW4wIGlzIHRoZSBtb3N0IHRpZ2h0bHkgZm9jdXNlZCBkb21haW4sCitzb21ldGltZXMgYmFsYW5jaW5nIG9ubHkgYmV0d2VlbiBwYWlycyBvZiBjcHVzLiAgQXQgdGhpcyB0aW1lLCB0aGVyZQorYXJlIG5vIGFyY2hpdGVjdHVyZXMgd2hpY2ggbmVlZCBtb3JlIHRoYW4gdGhyZWUgZG9tYWluIGxldmVscy4gVGhlIGZpcnN0CitmaWVsZCBpbiB0aGUgZG9tYWluIHN0YXRzIGlzIGEgYml0IG1hcCBpbmRpY2F0aW5nIHdoaWNoIGNwdXMgYXJlIGFmZmVjdGVkCitieSB0aGF0IGRvbWFpbi4KKworVGhlc2UgZmllbGRzIGFyZSBjb3VudGVycywgYW5kIG9ubHkgaW5jcmVtZW50LiAgUHJvZ3JhbXMgd2hpY2ggbWFrZSB1c2UKK29mIHRoZXNlIHdpbGwgbmVlZCB0byBzdGFydCB3aXRoIGEgYmFzZWxpbmUgb2JzZXJ2YXRpb24gYW5kIHRoZW4gY2FsY3VsYXRlCit0aGUgY2hhbmdlIGluIHRoZSBjb3VudGVycyBhdCBlYWNoIHN1YnNlcXVlbnQgb2JzZXJ2YXRpb24uICBBIHBlcmwgc2NyaXB0Cit3aGljaCBkb2VzIHRoaXMgZm9yIG1hbnkgb2YgdGhlIGZpZWxkcyBpcyBhdmFpbGFibGUgYXQKKworICAgIGh0dHA6Ly9lYWdsZXQucmFpbi5jb20vcmljay9saW51eC9zY2hlZHN0YXQvCisKK05vdGUgdGhhdCBhbnkgc3VjaCBzY3JpcHQgd2lsbCBuZWNlc3NhcmlseSBiZSB2ZXJzaW9uLXNwZWNpZmljLCBhcyB0aGUgbWFpbgorcmVhc29uIHRvIGNoYW5nZSB2ZXJzaW9ucyBpcyBjaGFuZ2VzIGluIHRoZSBvdXRwdXQgZm9ybWF0LiAgRm9yIHRob3NlIHdpc2hpbmcKK3RvIHdyaXRlIHRoZWlyIG93biBzY3JpcHRzLCB0aGUgZmllbGRzIGFyZSBkZXNjcmliZWQgaGVyZS4KKworQ1BVIHN0YXRpc3RpY3MKKy0tLS0tLS0tLS0tLS0tCitjcHU8Tj4gMSAyIDMgNCA1IDYgNyA4IDkKKworRmlyc3QgZmllbGQgaXMgYSBzY2hlZF95aWVsZCgpIHN0YXRpc3RpYzoKKyAgICAgMSkgIyBvZiB0aW1lcyBzY2hlZF95aWVsZCgpIHdhcyBjYWxsZWQKKworTmV4dCB0aHJlZSBhcmUgc2NoZWR1bGUoKSBzdGF0aXN0aWNzOgorICAgICAyKSBUaGlzIGZpZWxkIGlzIGEgbGVnYWN5IGFycmF5IGV4cGlyYXRpb24gY291bnQgZmllbGQgdXNlZCBpbiB0aGUgTygxKQorCXNjaGVkdWxlci4gV2Uga2VwdCBpdCBmb3IgQUJJIGNvbXBhdGliaWxpdHksIGJ1dCBpdCBpcyBhbHdheXMgc2V0IHRvIHplcm8uCisgICAgIDMpICMgb2YgdGltZXMgc2NoZWR1bGUoKSB3YXMgY2FsbGVkCisgICAgIDQpICMgb2YgdGltZXMgc2NoZWR1bGUoKSBsZWZ0IHRoZSBwcm9jZXNzb3IgaWRsZQorCitOZXh0IHR3byBhcmUgdHJ5X3RvX3dha2VfdXAoKSBzdGF0aXN0aWNzOgorICAgICA1KSAjIG9mIHRpbWVzIHRyeV90b193YWtlX3VwKCkgd2FzIGNhbGxlZAorICAgICA2KSAjIG9mIHRpbWVzIHRyeV90b193YWtlX3VwKCkgd2FzIGNhbGxlZCB0byB3YWtlIHVwIHRoZSBsb2NhbCBjcHUKKworTmV4dCB0aHJlZSBhcmUgc3RhdGlzdGljcyBkZXNjcmliaW5nIHNjaGVkdWxpbmcgbGF0ZW5jeToKKyAgICAgNykgc3VtIG9mIGFsbCB0aW1lIHNwZW50IHJ1bm5pbmcgYnkgdGFza3Mgb24gdGhpcyBwcm9jZXNzb3IgKGluIGppZmZpZXMpCisgICAgIDgpIHN1bSBvZiBhbGwgdGltZSBzcGVudCB3YWl0aW5nIHRvIHJ1biBieSB0YXNrcyBvbiB0aGlzIHByb2Nlc3NvciAoaW4KKyAgICAgICAgamlmZmllcykKKyAgICAgOSkgIyBvZiB0aW1lc2xpY2VzIHJ1biBvbiB0aGlzIGNwdQorCisKK0RvbWFpbiBzdGF0aXN0aWNzCistLS0tLS0tLS0tLS0tLS0tLQorT25lIG9mIHRoZXNlIGlzIHByb2R1Y2VkIHBlciBkb21haW4gZm9yIGVhY2ggY3B1IGRlc2NyaWJlZC4gKE5vdGUgdGhhdCBpZgorQ09ORklHX1NNUCBpcyBub3QgZGVmaW5lZCwgKm5vKiBkb21haW5zIGFyZSB1dGlsaXplZCBhbmQgdGhlc2UgbGluZXMKK3dpbGwgbm90IGFwcGVhciBpbiB0aGUgb3V0cHV0LikKKworZG9tYWluPE4+IDxjcHVtYXNrPiAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAyMCAyMSAyMiAyMyAyNCAyNSAyNiAyNyAyOCAyOSAzMCAzMSAzMiAzMyAzNCAzNSAzNgorCitUaGUgZmlyc3QgZmllbGQgaXMgYSBiaXQgbWFzayBpbmRpY2F0aW5nIHdoYXQgY3B1cyB0aGlzIGRvbWFpbiBvcGVyYXRlcyBvdmVyLgorCitUaGUgbmV4dCAyNCBhcmUgYSB2YXJpZXR5IG9mIGxvYWRfYmFsYW5jZSgpIHN0YXRpc3RpY3MgaW4gZ3JvdXBlZCBpbnRvIHR5cGVzCitvZiBpZGxlbmVzcyAoaWRsZSwgYnVzeSwgYW5kIG5ld2x5IGlkbGUpOgorCisgICAgIDEpICMgb2YgdGltZXMgaW4gdGhpcyBkb21haW4gbG9hZF9iYWxhbmNlKCkgd2FzIGNhbGxlZCB3aGVuIHRoZQorICAgICAgICBjcHUgd2FzIGlkbGUKKyAgICAgMikgIyBvZiB0aW1lcyBpbiB0aGlzIGRvbWFpbiBsb2FkX2JhbGFuY2UoKSBjaGVja2VkIGJ1dCBmb3VuZAorICAgICAgICB0aGUgbG9hZCBkaWQgbm90IHJlcXVpcmUgYmFsYW5jaW5nIHdoZW4gdGhlIGNwdSB3YXMgaWRsZQorICAgICAzKSAjIG9mIHRpbWVzIGluIHRoaXMgZG9tYWluIGxvYWRfYmFsYW5jZSgpIHRyaWVkIHRvIG1vdmUgb25lIG9yCisgICAgICAgIG1vcmUgdGFza3MgYW5kIGZhaWxlZCwgd2hlbiB0aGUgY3B1IHdhcyBpZGxlCisgICAgIDQpIHN1bSBvZiBpbWJhbGFuY2VzIGRpc2NvdmVyZWQgKGlmIGFueSkgd2l0aCBlYWNoIGNhbGwgdG8KKyAgICAgICAgbG9hZF9iYWxhbmNlKCkgaW4gdGhpcyBkb21haW4gd2hlbiB0aGUgY3B1IHdhcyBpZGxlCisgICAgIDUpICMgb2YgdGltZXMgaW4gdGhpcyBkb21haW4gcHVsbF90YXNrKCkgd2FzIGNhbGxlZCB3aGVuIHRoZSBjcHUKKyAgICAgICAgd2FzIGlkbGUKKyAgICAgNikgIyBvZiB0aW1lcyBpbiB0aGlzIGRvbWFpbiBwdWxsX3Rhc2soKSB3YXMgY2FsbGVkIGV2ZW4gdGhvdWdoCisgICAgICAgIHRoZSB0YXJnZXQgdGFzayB3YXMgY2FjaGUtaG90IHdoZW4gaWRsZQorICAgICA3KSAjIG9mIHRpbWVzIGluIHRoaXMgZG9tYWluIGxvYWRfYmFsYW5jZSgpIHdhcyBjYWxsZWQgYnV0IGRpZAorICAgICAgICBub3QgZmluZCBhIGJ1c2llciBxdWV1ZSB3aGlsZSB0aGUgY3B1IHdhcyBpZGxlCisgICAgIDgpICMgb2YgdGltZXMgaW4gdGhpcyBkb21haW4gYSBidXNpZXIgcXVldWUgd2FzIGZvdW5kIHdoaWxlIHRoZQorICAgICAgICBjcHUgd2FzIGlkbGUgYnV0IG5vIGJ1c2llciBncm91cCB3YXMgZm91bmQKKworICAgICA5KSAjIG9mIHRpbWVzIGluIHRoaXMgZG9tYWluIGxvYWRfYmFsYW5jZSgpIHdhcyBjYWxsZWQgd2hlbiB0aGUKKyAgICAgICAgY3B1IHdhcyBidXN5CisgICAgMTApICMgb2YgdGltZXMgaW4gdGhpcyBkb21haW4gbG9hZF9iYWxhbmNlKCkgY2hlY2tlZCBidXQgZm91bmQgdGhlCisgICAgICAgIGxvYWQgZGlkIG5vdCByZXF1aXJlIGJhbGFuY2luZyB3aGVuIGJ1c3kKKyAgICAxMSkgIyBvZiB0aW1lcyBpbiB0aGlzIGRvbWFpbiBsb2FkX2JhbGFuY2UoKSB0cmllZCB0byBtb3ZlIG9uZSBvcgorICAgICAgICBtb3JlIHRhc2tzIGFuZCBmYWlsZWQsIHdoZW4gdGhlIGNwdSB3YXMgYnVzeQorICAgIDEyKSBzdW0gb2YgaW1iYWxhbmNlcyBkaXNjb3ZlcmVkIChpZiBhbnkpIHdpdGggZWFjaCBjYWxsIHRvCisgICAgICAgIGxvYWRfYmFsYW5jZSgpIGluIHRoaXMgZG9tYWluIHdoZW4gdGhlIGNwdSB3YXMgYnVzeQorICAgIDEzKSAjIG9mIHRpbWVzIGluIHRoaXMgZG9tYWluIHB1bGxfdGFzaygpIHdhcyBjYWxsZWQgd2hlbiBidXN5CisgICAgMTQpICMgb2YgdGltZXMgaW4gdGhpcyBkb21haW4gcHVsbF90YXNrKCkgd2FzIGNhbGxlZCBldmVuIHRob3VnaCB0aGUKKyAgICAgICAgdGFyZ2V0IHRhc2sgd2FzIGNhY2hlLWhvdCB3aGVuIGJ1c3kKKyAgICAxNSkgIyBvZiB0aW1lcyBpbiB0aGlzIGRvbWFpbiBsb2FkX2JhbGFuY2UoKSB3YXMgY2FsbGVkIGJ1dCBkaWQgbm90CisgICAgICAgIGZpbmQgYSBidXNpZXIgcXVldWUgd2hpbGUgdGhlIGNwdSB3YXMgYnVzeQorICAgIDE2KSAjIG9mIHRpbWVzIGluIHRoaXMgZG9tYWluIGEgYnVzaWVyIHF1ZXVlIHdhcyBmb3VuZCB3aGlsZSB0aGUgY3B1CisgICAgICAgIHdhcyBidXN5IGJ1dCBubyBidXNpZXIgZ3JvdXAgd2FzIGZvdW5kCisKKyAgICAxNykgIyBvZiB0aW1lcyBpbiB0aGlzIGRvbWFpbiBsb2FkX2JhbGFuY2UoKSB3YXMgY2FsbGVkIHdoZW4gdGhlCisgICAgICAgIGNwdSB3YXMganVzdCBiZWNvbWluZyBpZGxlCisgICAgMTgpICMgb2YgdGltZXMgaW4gdGhpcyBkb21haW4gbG9hZF9iYWxhbmNlKCkgY2hlY2tlZCBidXQgZm91bmQgdGhlCisgICAgICAgIGxvYWQgZGlkIG5vdCByZXF1aXJlIGJhbGFuY2luZyB3aGVuIHRoZSBjcHUgd2FzIGp1c3QgYmVjb21pbmcgaWRsZQorICAgIDE5KSAjIG9mIHRpbWVzIGluIHRoaXMgZG9tYWluIGxvYWRfYmFsYW5jZSgpIHRyaWVkIHRvIG1vdmUgb25lIG9yIG1vcmUKKyAgICAgICAgdGFza3MgYW5kIGZhaWxlZCwgd2hlbiB0aGUgY3B1IHdhcyBqdXN0IGJlY29taW5nIGlkbGUKKyAgICAyMCkgc3VtIG9mIGltYmFsYW5jZXMgZGlzY292ZXJlZCAoaWYgYW55KSB3aXRoIGVhY2ggY2FsbCB0bworICAgICAgICBsb2FkX2JhbGFuY2UoKSBpbiB0aGlzIGRvbWFpbiB3aGVuIHRoZSBjcHUgd2FzIGp1c3QgYmVjb21pbmcgaWRsZQorICAgIDIxKSAjIG9mIHRpbWVzIGluIHRoaXMgZG9tYWluIHB1bGxfdGFzaygpIHdhcyBjYWxsZWQgd2hlbiBuZXdseSBpZGxlCisgICAgMjIpICMgb2YgdGltZXMgaW4gdGhpcyBkb21haW4gcHVsbF90YXNrKCkgd2FzIGNhbGxlZCBldmVuIHRob3VnaCB0aGUKKyAgICAgICAgdGFyZ2V0IHRhc2sgd2FzIGNhY2hlLWhvdCB3aGVuIGp1c3QgYmVjb21pbmcgaWRsZQorICAgIDIzKSAjIG9mIHRpbWVzIGluIHRoaXMgZG9tYWluIGxvYWRfYmFsYW5jZSgpIHdhcyBjYWxsZWQgYnV0IGRpZCBub3QKKyAgICAgICAgZmluZCBhIGJ1c2llciBxdWV1ZSB3aGlsZSB0aGUgY3B1IHdhcyBqdXN0IGJlY29taW5nIGlkbGUKKyAgICAyNCkgIyBvZiB0aW1lcyBpbiB0aGlzIGRvbWFpbiBhIGJ1c2llciBxdWV1ZSB3YXMgZm91bmQgd2hpbGUgdGhlIGNwdQorICAgICAgICB3YXMganVzdCBiZWNvbWluZyBpZGxlIGJ1dCBubyBidXNpZXIgZ3JvdXAgd2FzIGZvdW5kCisKKyAgIE5leHQgdGhyZWUgYXJlIGFjdGl2ZV9sb2FkX2JhbGFuY2UoKSBzdGF0aXN0aWNzOgorICAgIDI1KSAjIG9mIHRpbWVzIGFjdGl2ZV9sb2FkX2JhbGFuY2UoKSB3YXMgY2FsbGVkCisgICAgMjYpICMgb2YgdGltZXMgYWN0aXZlX2xvYWRfYmFsYW5jZSgpIHRyaWVkIHRvIG1vdmUgYSB0YXNrIGFuZCBmYWlsZWQKKyAgICAyNykgIyBvZiB0aW1lcyBhY3RpdmVfbG9hZF9iYWxhbmNlKCkgc3VjY2Vzc2Z1bGx5IG1vdmVkIGEgdGFzaworCisgICBOZXh0IHRocmVlIGFyZSBzY2hlZF9iYWxhbmNlX2V4ZWMoKSBzdGF0aXN0aWNzOgorICAgIDI4KSBzYmVfY250IGlzIG5vdCB1c2VkCisgICAgMjkpIHNiZV9iYWxhbmNlZCBpcyBub3QgdXNlZAorICAgIDMwKSBzYmVfcHVzaGVkIGlzIG5vdCB1c2VkCisKKyAgIE5leHQgdGhyZWUgYXJlIHNjaGVkX2JhbGFuY2VfZm9yaygpIHN0YXRpc3RpY3M6CisgICAgMzEpIHNiZl9jbnQgaXMgbm90IHVzZWQKKyAgICAzMikgc2JmX2JhbGFuY2VkIGlzIG5vdCB1c2VkCisgICAgMzMpIHNiZl9wdXNoZWQgaXMgbm90IHVzZWQKKworICAgTmV4dCB0aHJlZSBhcmUgdHJ5X3RvX3dha2VfdXAoKSBzdGF0aXN0aWNzOgorICAgIDM0KSAjIG9mIHRpbWVzIGluIHRoaXMgZG9tYWluIHRyeV90b193YWtlX3VwKCkgYXdva2UgYSB0YXNrIHRoYXQKKyAgICAgICAgbGFzdCByYW4gb24gYSBkaWZmZXJlbnQgY3B1IGluIHRoaXMgZG9tYWluCisgICAgMzUpICMgb2YgdGltZXMgaW4gdGhpcyBkb21haW4gdHJ5X3RvX3dha2VfdXAoKSBtb3ZlZCBhIHRhc2sgdG8gdGhlCisgICAgICAgIHdha2luZyBjcHUgYmVjYXVzZSBpdCB3YXMgY2FjaGUtY29sZCBvbiBpdHMgb3duIGNwdSBhbnl3YXkKKyAgICAzNikgIyBvZiB0aW1lcyBpbiB0aGlzIGRvbWFpbiB0cnlfdG9fd2FrZV91cCgpIHN0YXJ0ZWQgcGFzc2l2ZSBiYWxhbmNpbmcKKworL3Byb2MvPHBpZD4vc2NoZWRzdGF0CistLS0tLS0tLS0tLS0tLS0tCitzY2hlZHN0YXRzIGFsc28gYWRkcyBhIG5ldyAvcHJvYy88cGlkPi9zY2hlZHN0YXQgZmlsZSB0byBpbmNsdWRlIHNvbWUgb2YKK3RoZSBzYW1lIGluZm9ybWF0aW9uIG9uIGEgcGVyLXByb2Nlc3MgbGV2ZWwuICBUaGVyZSBhcmUgdGhyZWUgZmllbGRzIGluCit0aGlzIGZpbGUgY29ycmVsYXRpbmcgZm9yIHRoYXQgcHJvY2VzcyB0bzoKKyAgICAgMSkgdGltZSBzcGVudCBvbiB0aGUgY3B1CisgICAgIDIpIHRpbWUgc3BlbnQgd2FpdGluZyBvbiBhIHJ1bnF1ZXVlCisgICAgIDMpICMgb2YgdGltZXNsaWNlcyBydW4gb24gdGhpcyBjcHUKKworQSBwcm9ncmFtIGNvdWxkIGJlIGVhc2lseSB3cml0dGVuIHRvIG1ha2UgdXNlIG9mIHRoZXNlIGV4dHJhIGZpZWxkcyB0bworcmVwb3J0IG9uIGhvdyB3ZWxsIGEgcGFydGljdWxhciBwcm9jZXNzIG9yIHNldCBvZiBwcm9jZXNzZXMgaXMgZmFyaW5nCit1bmRlciB0aGUgc2NoZWR1bGVyJ3MgcG9saWNpZXMuICBBIHNpbXBsZSB2ZXJzaW9uIG9mIHN1Y2ggYSBwcm9ncmFtIGlzCithdmFpbGFibGUgYXQKKyAgICBodHRwOi8vZWFnbGV0LnJhaW4uY29tL3JpY2svbGludXgvc2NoZWRzdGF0L3YxMi9sYXRlbmN5LmMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vc2NzaS8wMC1JTkRFWApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGI5NzhhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpLzAwLUlOREVYCkBAIC0wLDAgKzEsMTEwIEBACiswMC1JTkRFWAorCS0gdGhpcyBmaWxlCis1M2M3MDAudHh0CisJLSBpbmZvIG9uIGRyaXZlciBmb3IgNTNjNzAwIGJhc2VkIGFkYXB0ZXJzCitCdXNMb2dpYy50eHQKKwktIGluZm8gb24gZHJpdmVyIGZvciBhZGFwdGVycyB3aXRoIEJ1c0xvZ2ljIGNoaXBzCitDaGFuZ2VMb2cuMTk5Mi0xOTk3CisJLSBDaGFuZ2VzIHRvIHNjc2kgZmlsZXMsIGlmIG5vdCBsaXN0ZWQgZWxzZXdoZXJlCitDaGFuZ2VMb2cuYXJjbXNyCisJLSBDaGFuZ2VzIHRvIGRyaXZlciBmb3IgQVJFQ0EncyBTQVRBIFJBSUQgY29udHJvbGxlciBjYXJkcworQ2hhbmdlTG9nLmlwcworCS0gSUJNIFNlcnZlUkFJRCBkcml2ZXIgQ2hhbmdlbG9nCitDaGFuZ2VMb2cubHBmYworCS0gQ2hhbmdlcyB0byBscGZjIGRyaXZlcgorQ2hhbmdlTG9nLm1lZ2FyYWlkCisJLSBDaGFuZ2VzIHRvIExTSSBtZWdhcmFpZCBjb250cm9sbGVyLgorQ2hhbmdlTG9nLm1lZ2FyYWlkX3NhcworCS0gQ2hhbmdlcyB0byBzZXJpYWwgYXR0YWNoZWQgc2NzaSB2ZXJzaW9uIG9mIExTSSBtZWdhcmFpZCBjb250cm9sbGVyLgorQ2hhbmdlTG9nLm5jcjUzYzh4eAorCS0gQ2hhbmdlcyB0byBuY3I1M2M4eHggZHJpdmVyCitDaGFuZ2VMb2cuc3ltNTNjOHh4CisJLSBDaGFuZ2VzIHRvIHN5bTUzYzh4eCBkcml2ZXIKK0NoYW5nZUxvZy5zeW01M2M4eHhfMgorCS0gQ2hhbmdlcyB0byBzZWNvbmQgZ2VuZXJhdGlvbiBvZiBzeW01M2M4eHggZHJpdmVyCitGbGFzaFBvaW50LnR4dAorCS0gaW5mbyBvbiBkcml2ZXIgZm9yIEJ1c0xvZ2ljIEZsYXNoUG9pbnQgYWRhcHRlcnMKK0xJQ0VOU0UuRmxhc2hQb2ludAorCS0gTGljZW5jZSBvZiB0aGUgRmxhc2hwb2ludCBkcml2ZXIKK0xJQ0VOU0UucWxhMnh4eAorCS0gTGljZW5zZSBmb3IgUUxvZ2ljIExpbnV4IEZpYnJlIENoYW5uZWwgSEJBIERyaXZlciBmaXJtd2FyZS4KK0xJQ0VOU0UucWxhNHh4eAorCS0gTGljZW5zZSBmb3IgUUxvZ2ljIExpbnV4IGlTQ1NJIEhCQSBEcml2ZXIuCitNeWxleC50eHQKKwktIGluZm8gb24gZHJpdmVyIGZvciBNeWxleCBhZGFwdGVycworTmluamFTQ1NJLnR4dAorCS0gaW5mbyBvbiBXb3JrQmlUIE5pbmphU0NTSS0zMi8zMkJpIGRyaXZlcgorYWFjcmFpZC50eHQKKwktIERyaXZlciBzdXBwb3J0aW5nIEFkYXB0ZWMgUkFJRCBjb250cm9sbGVycworYWR2YW5zeXMudHh0CisJLSBMaXN0IG9mIEFkdmFuc3lzIEhvc3QgQWRhcHRlcnMKK2FoYTE1MngudHh0CisJLSBpbmZvIG9uIGRyaXZlciBmb3IgQWRhcHRlYyBBSEExNTJ4IGJhc2VkIGFkYXB0ZXJzCithaWM3OXh4LnR4dAorCS0gQWRhcHRlYyBVbHRyYTMyMCBTQ1NJIGhvc3QgYWRhcHRlcnMKK2FpYzd4eHgudHh0CisJLSBpbmZvIG9uIGRyaXZlciBmb3IgQWRhcHRlYyBjb250cm9sbGVycworYXJjbXNyX3NwZWMudHh0CisJLSBBUkVDQSBGSVJNV0FSRSBTUEVDIChmb3IgSU9QMzMxIGFkYXB0ZXIpCitiZmEudHh0CisJLSBCcm9jYWRlIEZDL0ZDT0UgYWRhcHRlciBkcml2ZXIuCitibngyZmMudHh0CisJLSBGQ29FIGhhcmR3YXJlIG9mZmxvYWQgZm9yIEJyb2FkY29tIG5ldHdvcmsgaW50ZXJmYWNlcy4KK2N4Z2IzaS50eHQKKwktIENoZWxzaW8gaVNDU0kgTGludXggRHJpdmVyCitkYzM5NXgudHh0CisJLSBSRUFETUUgZmlsZSBmb3IgdGhlIGRjMzk1eCBTQ1NJIGRyaXZlcgorZHB0aS50eHQKKwktIGluZm8gb24gZHJpdmVyIGZvciBEUFQgU21hcnRSQUlEIGFuZCBBZGFwdGVjIEkyTyBSQUlEIGJhc2VkIGFkYXB0ZXJzCitkdGMzeDgwLnR4dAorCS0gaW5mbyBvbiBkcml2ZXIgZm9yIERUQyAyeDgwIGJhc2VkIGFkYXB0ZXJzCitnX05DUjUzODAudHh0CisJLSBpbmZvIG9uIGRyaXZlciBmb3IgTkNSNTM4MCBhbmQgTkNSNTNjNDAwIGJhc2VkIGFkYXB0ZXJzCitocHNhLnR4dAorCS0gSFAgU21hcnQgQXJyYXkgQ29udHJvbGxlciBTQ1NJIGRyaXZlci4KK2hwdGlvcC50eHQKKwktIEhJR0hQT0lOVCBST0NLRVRSQUlEIDN4eHggUkFJRCBEUklWRVIKK2luMjAwMC50eHQKKwktIGluZm8gb24gaW4yMDAwIGRyaXZlcgorbGlic2FzLnR4dAorCS0gU2VyaWFsIEF0dGFjaGVkIFNDU0kgbWFuYWdlbWVudCBsYXllci4KK2xpbmtfcG93ZXJfbWFuYWdlbWVudF9wb2xpY3kudHh0CisJLSBMaW5rIHBvd2VyIG1hbmFnZW1lbnQgb3B0aW9ucy4KK2xwZmMudHh0CisJLSBMUEZDIGRyaXZlciByZWxlYXNlIG5vdGVzCittZWdhcmFpZC50eHQKKwktIENvbW1vbiBNYW5hZ2VtZW50IE1vZHVsZSwgc2hhcmVkIGNvZGUgaGFuZGxpbmcgaW9jdGxzIGZvciBMU0kgZHJpdmVycworbmNyNTNjOHh4LnR4dAorCS0gaW5mbyBvbiBkcml2ZXIgZm9yIE5DUjUzYzh4eCBiYXNlZCBhZGFwdGVycworb3NkLnR4dAorCU9iamVjdC1CYXNlZCBTdG9yYWdlIERldmljZSwgY29tbWFuZCBzZXQgaW50cm9kdWN0aW9uLgorb3NzdC50eHQKKwktIGluZm8gb24gZHJpdmVyIGZvciBPblN0cmVhbSBTQy14MCBTQ1NJIHRhcGUKK3BwYS50eHQKKwktIGluZm8gb24gZHJpdmVyIGZvciBJT21lZ2EgemlwIGRyaXZlCitxbG9naWNmYXMudHh0CisJLSBpbmZvIG9uIGRyaXZlciBmb3IgUUxvZ2ljIEZBU3h4eCBiYXNlZCBhZGFwdGVycworc2NzaS1jaGFuZ2VyLnR4dAorCS0gUkVBRE1FIGZvciB0aGUgU0NTSSBtZWRpYSBjaGFuZ2VyIGRyaXZlcgorc2NzaS1nZW5lcmljLnR4dAorCS0gaW5mbyBvbiB0aGUgc2cgZHJpdmVyIGZvciBnZW5lcmljIChub24tZGlzay9DRC90YXBlKSBTQ1NJIGRldmljZXMuCitzY3NpLXBhcmFtZXRlcnMudHh0CisJLSBMaXN0IG9mIFNDU0ktcGFyYW1ldGVycyB0byBwYXNzIHRvIHRoZSBrZXJuZWwgYXQgbW9kdWxlIGxvYWQtdGltZS4KK3Njc2kudHh0CisJLSBzaG9ydCBibHVyYiBvbiB1c2luZyBTQ1NJIHN1cHBvcnQgYXMgYSBtb2R1bGUuCitzY3NpX21pZF9sb3dfYXBpLnR4dAorCS0gaW5mbyBvbiBBUEkgYmV0d2VlbiBTQ1NJIGxheWVyIGFuZCBsb3cgbGV2ZWwgZHJpdmVycworc2NzaV9laC50eHQKKwktIGluZm8gb24gU0NTSSBtaWRsYXllciBlcnJvciBoYW5kbGluZyBpbmZyYXN0cnVjdHVyZQorc2NzaV9mY190cmFuc3BvcnQudHh0CisJLSBTQ1NJIEZpYmVyIENoYW5uZWwgVGFuc3BvcnQKK3N0LnR4dAorCS0gaW5mbyBvbiBzY3NpIHRhcGUgZHJpdmVyCitzeW01M2M1MDBfY3MudHh0CisJLSBpbmZvIG9uIFBDTUNJQSBkcml2ZXIgZm9yIFN5bWJpb3MgTG9naWMgNTNjNTAwIGJhc2VkIGFkYXB0ZXJzCitzeW01M2M4eHhfMi50eHQKKwktIGluZm8gb24gc2Vjb25kIGdlbmVyYXRpb24gZHJpdmVyIGZvciBzeW01M2M4eHggYmFzZWQgYWRhcHRlcnMKK3Rtc2NzaW0udHh0CisJLSBpbmZvIG9uIGRyaXZlciBmb3IgQU01M2M5NzQgYmFzZWQgYWRhcHRlcnMKK3Vmcy50eHQKKwktIGluZm8gb24gVW5pdmVyc2FsIEZsYXNoIFN0b3JhZ2UoVUZTKSBhbmQgVUZTIGhvc3QgY29udHJvbGxlciBkcml2ZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvNTNjNzAwLnR4dCBiL0RvY3VtZW50YXRpb24vc2NzaS81M2M3MDAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMWFjZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvNTNjNzAwLnR4dApAQCAtMCwwICsxLDEzNSBAQAorR2VuZXJhbCBEZXNjcmlwdGlvbgorPT09PT09PT09PT09PT09PT09PQorCitUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgNTNjNzAwIGFuZCA1M2M3MDAtNjYgY2hpcHMuICBJdCBhbHNvIHN1cHBvcnRzCit0aGUgNTNjNzEwIGJ1dCBvbmx5IGluIDUzYzcwMCBlbXVsYXRpb24gbW9kZS4gIEl0IGlzIGZ1bGwgZmVhdHVyZWQgYW5kCitkb2VzIHN5bmMgKC02NiBhbmQgNzEwIG9ubHkpLCBkaXNjb25uZWN0cyBhbmQgdGFnIGNvbW1hbmQgcXVldWVpbmcuCisKK1NpbmNlIHRoZSA1M2M3MDAgbXVzdCBiZSBpbnRlcmZhY2VkIHRvIGEgYnVzLCB5b3UgbmVlZCB0byB3cmFwcGVyIHRoZQorY2FyZCBkZXRlY3RvciBhcm91bmQgdGhpcyBkcml2ZXIuICBGb3IgYW4gZXhhbXBsZSwgc2VlIHRoZQorTkNSX0Q3MDAuW2NoXSBvciBsYXNpNzAwLltjaF0gZmlsZXMuCisKK1RoZSBjb21tZW50cyBpbiB0aGUgNTNjNzAwLltjaF0gZmlsZXMgdGVsbCB5b3Ugd2hpY2ggcGFydHMgeW91IG5lZWQgdG8KK2ZpbGwgaW4gdG8gZ2V0IHRoZSBkcml2ZXIgd29ya2luZy4KKworCitDb21waWxlIFRpbWUgRmxhZ3MKKz09PT09PT09PT09PT09PT09PQorCitBIGNvbXBpbGUgdGltZSBmbGFnIGlzOgorCitDT05GSUdfNTNDNzAwX0xFX09OX0JFCisKK2RlZmluZSBpZiB0aGUgY2hpcHNldCBtdXN0IGJlIHN1cHBvcnRlZCBpbiBsaXR0bGUgZW5kaWFuIG1vZGUgb24gYSBiaWcKK2VuZGlhbiBhcmNoaXRlY3R1cmUgKHVzZWQgZm9yIHRoZSA3MDAgb24gcGFyaXNjKS4KKworCitVc2luZyB0aGUgQ2hpcCBDb3JlIERyaXZlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW4gb3JkZXIgdG8gcGx1bWIgdGhlIDUzYzcwMCBjaGlwIGNvcmUgZHJpdmVyIGludG8gYSB3b3JraW5nIFNDU0kKK2RyaXZlciwgeW91IG5lZWQgdG8ga25vdyB0aHJlZSB0aGluZ3MgYWJvdXQgdGhlIHdheSB0aGUgY2hpcCBpcyB3aXJlZAoraW50byB5b3VyIHN5c3RlbSAob3IgZXhwYW5zaW9uIGNhcmQpLgorCisxLiBUaGUgY2xvY2sgc3BlZWQgb2YgdGhlIFNDU0kgY29yZQorMi4gVGhlIGludGVycnVwdCBsaW5lIHVzZWQKKzMuIFRoZSBtZW1vcnkgKG9yIGlvIHNwYWNlKSBsb2NhdGlvbiBvZiB0aGUgNTNjNzAwIHJlZ2lzdGVycy4KKworT3B0aW9uYWxseSwgeW91IG1heSBhbHNvIG5lZWQgdG8ga25vdyBvdGhlciB0aGluZ3MsIGxpa2UgaG93IHRvIHJlYWQKK3RoZSBTQ1NJIElkIGZyb20gdGhlIGNhcmQgYmlvcyBvciB3aGV0aGVyIHRoZSBjaGlwIGlzIHdpcmVkIGZvcgorZGlmZmVyZW50aWFsIG9wZXJhdGlvbi4KKworVXN1YWxseSB5b3UgY2FuIGZpbmQgaXRlbXMgMi4gYW5kIDMuIGZyb20gZ2VuZXJhbCBzcGVjLiBkb2N1bWVudHMgb3IKK2V2ZW4gYnkgZXhhbWluaW5nIHRoZSBjb25maWd1cmF0aW9uIG9mIGEgd29ya2luZyBkcml2ZXIgdW5kZXIgYW5vdGhlcgorb3BlcmF0aW5nIHN5c3RlbS4KKworVGhlIGNsb2NrIHNwZWVkIGlzIHVzdWFsbHkgYnVyaWVkIGRlZXAgaW4gdGhlIHRlY2huaWNhbCBsaXRlcmF0dXJlLgorSXQgaXMgcmVxdWlyZWQgYmVjYXVzZSBpdCBpcyB1c2VkIHRvIHNldCB1cCBib3RoIHRoZSBzeW5jaHJvbm91cyBhbmQKK2FzeW5jaHJvbm91cyBkaXZpZGVycyBmb3IgdGhlIGNoaXAuICBBcyBhIGdlbmVyYWwgcnVsZSBvZiB0aHVtYiwKK21hbnVmYWN0dXJlcnMgc2V0IHRoZSBjbG9jayBzcGVlZCBhdCB0aGUgbG93ZXN0IHBvc3NpYmxlIHNldHRpbmcKK2NvbnNpc3RlbnQgd2l0aCB0aGUgYmVzdCBvcGVyYXRpb24gb2YgdGhlIGNoaXAgKGFsdGhvdWdoIHNvbWUgY2hvb3NlCit0byBkcml2ZSBpdCBvZmYgdGhlIENQVSBvciBidXMgY2xvY2sgcmF0aGVyIHRoYW4gZ29pbmcgdG8gdGhlIGV4cGVuc2UKK29mIGFuIGV4dHJhIGNsb2NrIGNoaXApLiAgVGhlIGJlc3Qgb3BlcmF0aW9uIGNsb2NrIHNwZWVkcyBhcmU6CisKKzUzYzcwMCAtIDI1TUh6Cis1M2M3MDAtNjYgLSA1ME1IegorNTNjNzEwIC0gNDBNaHoKKworV3JpdGluZyBZb3VyIEdsdWUgRHJpdmVyCis9PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyB3aWxsIGJlIGEgc3RhbmRhcmQgU0NTSSBkcml2ZXIgKEkgZG9uJ3Qga25vdyBvZiBhIGdvb2QgZG9jdW1lbnQKK2Rlc2NyaWJpbmcgdGhpcywganVzdCBjb3B5IGZyb20gc29tZSBvdGhlciBkcml2ZXIpIHdpdGggYXQgbGVhc3QgYQorZGV0ZWN0IGFuZCByZWxlYXNlIGVudHJ5LgorCitJbiB0aGUgZGV0ZWN0IHJvdXRpbmUsIHlvdSBuZWVkIHRvIGFsbG9jYXRlIGEgc3RydWN0CitOQ1JfNzAwX0hvc3RfUGFyYW1ldGVycyBzaXplZCBtZW1vcnkgYXJlYSBhbmQgY2xlYXIgaXQgKHNvIHRoYXQgdGhlCitkZWZhdWx0IHZhbHVlcyBmb3IgZXZlcnl0aGluZyBhcmUgMCkuICBUaGVuIHlvdSBtdXN0IGZpbGwgaW4gdGhlCitwYXJhbWV0ZXJzIHRoYXQgbWF0dGVyIHRvIHlvdSAoc2VlIGJlbG93KSwgcGx1bWIgdGhlIE5DUl83MDBfaW50cgorcm91dGluZSBpbnRvIHRoZSBpbnRlcnJ1cHQgbGluZSBhbmQgY2FsbCBOQ1JfNzAwX2RldGVjdCB3aXRoIHRoZSBob3N0Cit0ZW1wbGF0ZSBhbmQgdGhlIG5ldyBwYXJhbWV0ZXJzIGFzIGFyZ3VtZW50cy4gIFlvdSBzaG91bGQgYWxzbyBjYWxsCit0aGUgcmVsZXZhbnQgcmVxdWVzdF8qX3JlZ2lvbiBmdW5jdGlvbiBhbmQgcGxhY2UgdGhlIHJlZ2lzdGVyIGJhc2UKK2FkZHJlc3MgaW50byB0aGUgYGJhc2UnIHBvaW50ZXIgb2YgdGhlIGhvc3QgcGFyYW1ldGVycy4KKworSW4gdGhlIHJlbGVhc2Ugcm91dGluZSwgeW91IG11c3QgZnJlZSB0aGUgTkNSXzcwMF9Ib3N0X1BhcmFtZXRlcnMgdGhhdAoreW91IGFsbG9jYXRlZCwgY2FsbCB0aGUgY29ycmVzcG9uZGluZyByZWxlYXNlXypfcmVnaW9uIGFuZCBmcmVlIHRoZQoraW50ZXJydXB0LgorCitIYW5kbGluZyBJbnRlcnJ1cHRzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0luIGdlbmVyYWwsIHlvdSBzaG91bGQganVzdCBwbHVtYiB0aGUgY2FyZCdzIGludGVycnVwdCBsaW5lIGluIHdpdGggCisKK3JlcXVlc3RfaXJxKGlycSwgTkNSXzcwMF9pbnRyLCA8aXJxIGZsYWdzPiwgPGRyaXZlciBuYW1lPiwgaG9zdCk7CisKK3doZXJlIGhvc3QgaXMgdGhlIHJldHVybiBmcm9tIHRoZSByZWxldmFudCBOQ1JfNzAwX2RldGVjdCgpIHJvdXRpbmUuCisKK1lvdSBtYXkgYWxzbyB3cml0ZSB5b3VyIG93biBpbnRlcnJ1cHQgaGFuZGxpbmcgcm91dGluZSB3aGljaCBjYWxscworTkNSXzcwMF9pbnRyKCkgZGlyZWN0bHkuICBIb3dldmVyLCB5b3Ugc2hvdWxkIG9ubHkgcmVhbGx5IGRvIHRoaXMgaWYKK3lvdSBoYXZlIGEgY2FyZCB3aXRoIG1vcmUgdGhhbiBvbmUgY2hpcCBvbiBpdCBhbmQgeW91IGNhbiByZWFkIGEKK3JlZ2lzdGVyIHRvIHRlbGwgd2hpY2ggc2V0IG9mIGNoaXBzIHdhbnRzIHRoZSBpbnRlcnJ1cHQuCisKK1NldHRhYmxlIE5DUl83MDBfSG9zdF9QYXJhbWV0ZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIGFyZSBhIGxpc3Qgb2YgdGhlIHVzZXIgc2V0dGFibGUgcGFyYW1ldGVyczoKKworY2xvY2s6IChNQU5EQVRPUlkpCisKK1NldCB0byB0aGUgY2xvY2sgc3BlZWQgb2YgdGhlIGNoaXAgaW4gTUh6LgorCitiYXNlOiAoTUFOREFUT1JZKQorCitzZXQgdG8gdGhlIGJhc2Ugb2YgdGhlIGlvIG9yIG1lbSByZWdpb24gZm9yIHRoZSByZWdpc3RlciBzZXQuIE9uIDY0CitiaXQgYXJjaGl0ZWN0dXJlcyB0aGlzIGlzIG9ubHkgMzIgYml0cyB3aWRlLCBzbyB0aGUgcmVnaXN0ZXJzIG11c3QgYmUKK21hcHBlZCBpbnRvIHRoZSBsb3cgMzIgYml0cyBvZiBtZW1vcnkuCisKK3BjaV9kZXY6IChPUFRJT05BTCkKKworc2V0IHRvIHRoZSBQQ0kgYm9hcmQgZGV2aWNlLiAgTGVhdmUgTlVMTCBmb3IgYSBub24tcGNpIGJvYXJkLiAgVGhpcyBpcwordXNlZCBmb3IgdGhlIHBjaV9hbGxvY19jb25zaXN0ZW50KCkgYW5kIHBjaV9tYXBfKigpIGZ1bmN0aW9ucy4KKworZG1vZGVfZXh0cmE6IChPUFRJT05BTCwgNTNjNzEwIG9ubHkpCisKK2V4dHJhIGZsYWdzIGZvciB0aGUgRE1PREUgcmVnaXN0ZXIuICBUaGVzZSBhcmUgdXNlZCB0byBjb250cm9sIGJ1cworb3V0cHV0IHBpbnMgb24gdGhlIDcxMC4gIFRoZSBzZXR0aW5ncyBzaG91bGQgYmUgYSBjb21iaW5hdGlvbiBvZgorRE1PREVfRkMxIGFuZCBETU9ERV9GQzIuICBXaGF0IHRoZXNlIHBpbnMgYWN0dWFsbHkgZG8gaXMgZW50aXJlbHkgdXAKK3RvIHRoZSBib2FyZCBkZXNpZ25lci4gIFVzdWFsbHkgaXQgaXMgc2FmZSB0byBpZ25vcmUgdGhpcyBzZXR0aW5nLgorCitkaWZmZXJlbnRpYWw6IChPUFRJT05BTCkKKworc2V0IHRvIDEgaWYgdGhlIGNoaXAgZHJpdmVzIGEgZGlmZmVyZW50aWFsIGJ1cy4KKworZm9yY2VfbGVfb25fYmU6IChPUFRJT05BTCwgb25seSBpZiBDT05GSUdfNTNDNzAwX0xFX09OX0JFIGlzIHNldCkKKworc2V0IHRvIDEgaWYgdGhlIGNoaXAgaXMgb3BlcmF0aW5nIGluIGxpdHRsZSBlbmRpYW4gbW9kZSBvbiBhIGJpZworZW5kaWFuIGFyY2hpdGVjdHVyZS4KKworY2hpcDcxMDogKE9QVElPTkFMKQorCitzZXQgdG8gMSBpZiB0aGUgY2hpcCBpcyBhIDUzYzcxMC4KKworYnVyc3RfZGlzYWJsZTogKE9QVElPTkFMLCA1M2M3MTAgb25seSkKKworZGlzYWJsZSA4IGJ5dGUgYnVyc3RpbmcgZm9yIERNQSB0cmFuc2ZlcnMuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9CdXNMb2dpYy50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvQnVzTG9naWMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4ZTk4MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvQnVzTG9naWMudHh0CkBAIC0wLDAgKzEsNTY2IEBACisJICAgQnVzTG9naWMgTXVsdGlNYXN0ZXIgYW5kIEZsYXNoUG9pbnQgU0NTSSBEcml2ZXIgZm9yIExpbnV4CisKKwkJCSBWZXJzaW9uIDIuMC4xNSBmb3IgTGludXggMi4wCisJCQkgVmVyc2lvbiAyLjEuMTUgZm9yIExpbnV4IDIuMQorCisJCQkgICAgICBQUk9EVUNUSU9OIFJFTEVBU0UKKworCQkJCTE3IEF1Z3VzdCAxOTk4CisKKwkJCSAgICAgICBMZW9uYXJkIE4uIFp1YmtvZmYKKwkJCSAgICAgICBEYW5kZWxpb24gRGlnaXRhbAorCQkJICAgICAgIGxuekBkYW5kZWxpb24uY29tCisKKwkgQ29weXJpZ2h0IDE5OTUtMTk5OCBieSBMZW9uYXJkIE4uIFp1YmtvZmYgPGxuekBkYW5kZWxpb24uY29tPgorCisKKwkJCQkgSU5UUk9EVUNUSU9OCisKK0J1c0xvZ2ljLCBJbmMuIGRlc2lnbmVkIGFuZCBtYW51ZmFjdHVyZWQgYSB2YXJpZXR5IG9mIGhpZ2ggcGVyZm9ybWFuY2UgU0NTSQoraG9zdCBhZGFwdGVycyB3aGljaCBzaGFyZSBhIGNvbW1vbiBwcm9ncmFtbWluZyBpbnRlcmZhY2UgYWNyb3NzIGEgZGl2ZXJzZQorY29sbGVjdGlvbiBvZiBidXMgYXJjaGl0ZWN0dXJlcyBieSB2aXJ0dWUgb2YgdGhlaXIgTXVsdGlNYXN0ZXIgQVNJQyB0ZWNobm9sb2d5LgorQnVzTG9naWMgd2FzIGFjcXVpcmVkIGJ5IE15bGV4IENvcnBvcmF0aW9uIGluIEZlYnJ1YXJ5IDE5OTYsIGJ1dCB0aGUgcHJvZHVjdHMKK3N1cHBvcnRlZCBieSB0aGlzIGRyaXZlciBvcmlnaW5hdGVkIHVuZGVyIHRoZSBCdXNMb2dpYyBuYW1lIGFuZCBzbyB0aGF0IG5hbWUgaXMKK3JldGFpbmVkIGluIHRoZSBzb3VyY2UgY29kZSBhbmQgZG9jdW1lbnRhdGlvbi4KKworVGhpcyBkcml2ZXIgc3VwcG9ydHMgYWxsIHByZXNlbnQgQnVzTG9naWMgTXVsdGlNYXN0ZXIgSG9zdCBBZGFwdGVycywgYW5kIHNob3VsZAorc3VwcG9ydCBhbnkgZnV0dXJlIE11bHRpTWFzdGVyIGRlc2lnbnMgd2l0aCBsaXR0bGUgb3Igbm8gbW9kaWZpY2F0aW9uLiAgTW9yZQorcmVjZW50bHksIEJ1c0xvZ2ljIGludHJvZHVjZWQgdGhlIEZsYXNoUG9pbnQgSG9zdCBBZGFwdGVycywgd2hpY2ggYXJlIGxlc3MKK2Nvc3RseSBhbmQgcmVseSBvbiB0aGUgaG9zdCBDUFUsIHJhdGhlciB0aGFuIGluY2x1ZGluZyBhbiBvbmJvYXJkIHByb2Nlc3Nvci4KK0Rlc3BpdGUgbm90IGhhdmluZyBhbiBvbmJvYXJkIENQVSwgdGhlIEZsYXNoUG9pbnQgSG9zdCBBZGFwdGVycyBwZXJmb3JtIHZlcnkKK3dlbGwgYW5kIGhhdmUgdmVyeSBsb3cgY29tbWFuZCBsYXRlbmN5LiAgQnVzTG9naWMgaGFzIHJlY2VudGx5IHByb3ZpZGVkIG1lIHdpdGgKK3RoZSBGbGFzaFBvaW50IERyaXZlciBEZXZlbG9wZXIncyBLaXQsIHdoaWNoIGNvbXByaXNlcyBkb2N1bWVudGF0aW9uIGFuZCBmcmVlbHkKK3JlZGlzdHJpYnV0YWJsZSBzb3VyY2UgY29kZSBmb3IgdGhlIEZsYXNoUG9pbnQgU0NDQiBNYW5hZ2VyLiAgVGhlIFNDQ0IgTWFuYWdlcgoraXMgdGhlIGxpYnJhcnkgb2YgY29kZSB0aGF0IHJ1bnMgb24gdGhlIGhvc3QgQ1BVIGFuZCBwZXJmb3JtcyBmdW5jdGlvbnMKK2FuYWxvZ291cyB0byB0aGUgZmlybXdhcmUgb24gdGhlIE11bHRpTWFzdGVyIEhvc3QgQWRhcHRlcnMuICBUaGFua3MgdG8gdGhlaXIKK2hhdmluZyBwcm92aWRlZCB0aGUgU0NDQiBNYW5hZ2VyLCB0aGlzIGRyaXZlciBub3cgc3VwcG9ydHMgdGhlIEZsYXNoUG9pbnQgSG9zdAorQWRhcHRlcnMgYXMgd2VsbC4KKworTXkgcHJpbWFyeSBnb2FscyBpbiB3cml0aW5nIHRoaXMgY29tcGxldGVseSBuZXcgQnVzTG9naWMgZHJpdmVyIGZvciBMaW51eCBhcmUKK3RvIGFjaGlldmUgdGhlIGZ1bGwgcGVyZm9ybWFuY2UgdGhhdCBCdXNMb2dpYyBTQ1NJIEhvc3QgQWRhcHRlcnMgYW5kIG1vZGVybgorU0NTSSBwZXJpcGhlcmFscyBhcmUgY2FwYWJsZSBvZiwgYW5kIHRvIHByb3ZpZGUgYSBoaWdobHkgcm9idXN0IGRyaXZlciB0aGF0IGNhbgorYmUgZGVwZW5kZWQgdXBvbiBmb3IgaGlnaCBwZXJmb3JtYW5jZSBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucy4gIEFsbCBvZgordGhlIG1ham9yIHBlcmZvcm1hbmNlIGZlYXR1cmVzIGNhbiBiZSBjb25maWd1cmVkIGZyb20gdGhlIExpbnV4IGtlcm5lbCBjb21tYW5kCitsaW5lIG9yIGF0IG1vZHVsZSBpbml0aWFsaXphdGlvbiB0aW1lLCBhbGxvd2luZyBpbmRpdmlkdWFsIGluc3RhbGxhdGlvbnMgdG8KK3R1bmUgZHJpdmVyIHBlcmZvcm1hbmNlIGFuZCBlcnJvciByZWNvdmVyeSB0byB0aGVpciBwYXJ0aWN1bGFyIG5lZWRzLgorCitUaGUgbGF0ZXN0IGluZm9ybWF0aW9uIG9uIExpbnV4IHN1cHBvcnQgZm9yIEJ1c0xvZ2ljIFNDU0kgSG9zdCBBZGFwdGVycywgYXMKK3dlbGwgYXMgdGhlIG1vc3QgcmVjZW50IHJlbGVhc2Ugb2YgdGhpcyBkcml2ZXIgYW5kIHRoZSBsYXRlc3QgZmlybXdhcmUgZm9yIHRoZQorQlQtOTQ4Lzk1OC85NThELCB3aWxsIGFsd2F5cyBiZSBhdmFpbGFibGUgZnJvbSBteSBMaW51eCBIb21lIFBhZ2UgYXQgVVJMCisiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9kYW5kZWxpb24vIi4KKworQnVnIHJlcG9ydHMgc2hvdWxkIGJlIHNlbnQgdmlhIGVsZWN0cm9uaWMgbWFpbCB0byAibG56QGRhbmRlbGlvbi5jb20iLiAgUGxlYXNlCitpbmNsdWRlIHdpdGggdGhlIGJ1ZyByZXBvcnQgdGhlIGNvbXBsZXRlIGNvbmZpZ3VyYXRpb24gbWVzc2FnZXMgcmVwb3J0ZWQgYnkgdGhlCitkcml2ZXIgYW5kIFNDU0kgc3Vic3lzdGVtIGF0IHN0YXJ0dXAsIGFsb25nIHdpdGggYW55IHN1YnNlcXVlbnQgc3lzdGVtIG1lc3NhZ2VzCityZWxldmFudCB0byBTQ1NJIG9wZXJhdGlvbnMsIGFuZCBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHlvdXIgc3lzdGVtJ3MKK2hhcmR3YXJlIGNvbmZpZ3VyYXRpb24uCisKK015bGV4IGhhcyBiZWVuIGFuIGV4Y2VsbGVudCBjb21wYW55IHRvIHdvcmsgd2l0aCBhbmQgSSBoaWdobHkgcmVjb21tZW5kIHRoZWlyCitwcm9kdWN0cyB0byB0aGUgTGludXggY29tbXVuaXR5LiAgSW4gTm92ZW1iZXIgMTk5NSwgSSB3YXMgb2ZmZXJlZCB0aGUKK29wcG9ydHVuaXR5IHRvIGJlY29tZSBhIGJldGEgdGVzdCBzaXRlIGZvciB0aGVpciBsYXRlc3QgTXVsdGlNYXN0ZXIgcHJvZHVjdCwKK3RoZSBCVC05NDggUENJIFVsdHJhIFNDU0kgSG9zdCBBZGFwdGVyLCBhbmQgdGhlbiBhZ2FpbiBmb3IgdGhlIEJULTk1OCBQQ0kgV2lkZQorVWx0cmEgU0NTSSBIb3N0IEFkYXB0ZXIgaW4gSmFudWFyeSAxOTk2LiAgVGhpcyB3YXMgbXV0dWFsbHkgYmVuZWZpY2lhbCBzaW5jZQorTXlsZXggcmVjZWl2ZWQgYSBkZWdyZWUgYW5kIGtpbmQgb2YgdGVzdGluZyB0aGF0IHRoZWlyIG93biB0ZXN0aW5nIGdyb3VwIGNhbm5vdAorcmVhZGlseSBhY2hpZXZlLCBhbmQgdGhlIExpbnV4IGNvbW11bml0eSBoYXMgYXZhaWxhYmxlIGhpZ2ggcGVyZm9ybWFuY2UgaG9zdAorYWRhcHRlcnMgdGhhdCBoYXZlIGJlZW4gd2VsbCB0ZXN0ZWQgd2l0aCBMaW51eCBldmVuIGJlZm9yZSBiZWluZyBicm91Z2h0IHRvCittYXJrZXQuICBUaGlzIHJlbGF0aW9uc2hpcCBoYXMgYWxzbyBnaXZlbiBtZSB0aGUgb3Bwb3J0dW5pdHkgdG8gaW50ZXJhY3QKK2RpcmVjdGx5IHdpdGggdGhlaXIgdGVjaG5pY2FsIHN0YWZmLCB0byB1bmRlcnN0YW5kIG1vcmUgYWJvdXQgdGhlIGludGVybmFsCit3b3JraW5ncyBvZiB0aGVpciBwcm9kdWN0cywgYW5kIGluIHR1cm4gdG8gZWR1Y2F0ZSB0aGVtIGFib3V0IHRoZSBuZWVkcyBhbmQKK3BvdGVudGlhbCBvZiB0aGUgTGludXggY29tbXVuaXR5LgorCitNb3JlIHJlY2VudGx5LCBNeWxleCBoYXMgcmVhZmZpcm1lZCB0aGUgY29tcGFueSdzIGludGVyZXN0IGluIHN1cHBvcnRpbmcgdGhlCitMaW51eCBjb21tdW5pdHksIGFuZCBJIGFtIG5vdyB3b3JraW5nIG9uIGEgTGludXggZHJpdmVyIGZvciB0aGUgREFDOTYwIFBDSSBSQUlECitDb250cm9sbGVycy4gIE15bGV4J3MgaW50ZXJlc3QgYW5kIHN1cHBvcnQgaXMgZ3JlYXRseSBhcHByZWNpYXRlZC4KKworVW5saWtlIHNvbWUgb3RoZXIgdmVuZG9ycywgaWYgeW91IGNvbnRhY3QgTXlsZXggVGVjaG5pY2FsIFN1cHBvcnQgd2l0aCBhCitwcm9ibGVtIGFuZCBhcmUgcnVubmluZyBMaW51eCwgdGhleSB3aWxsIG5vdCB0ZWxsIHlvdSB0aGF0IHlvdXIgdXNlIG9mIHRoZWlyCitwcm9kdWN0cyBpcyB1bnN1cHBvcnRlZC4gIFRoZWlyIGxhdGVzdCBwcm9kdWN0IG1hcmtldGluZyBsaXRlcmF0dXJlIGV2ZW4gc3RhdGVzCisiTXlsZXggU0NTSSBob3N0IGFkYXB0ZXJzIGFyZSBjb21wYXRpYmxlIHdpdGggYWxsIG1ham9yIG9wZXJhdGluZyBzeXN0ZW1zCitpbmNsdWRpbmc6IC4uLiBMaW51eCAuLi4iLgorCitNeWxleCBDb3Jwb3JhdGlvbiBpcyBsb2NhdGVkIGF0IDM0NTUxIEFyZGVud29vZCBCbHZkLiwgRnJlbW9udCwgQ2FsaWZvcm5pYQorOTQ1NTUsIFVTQSBhbmQgY2FuIGJlIHJlYWNoZWQgYXQgNTEwLzc5Ni02MTAwIG9yIG9uIHRoZSBXb3JsZCBXaWRlIFdlYiBhdAoraHR0cDovL3d3dy5teWxleC5jb20uICBNeWxleCBIQkEgVGVjaG5pY2FsIFN1cHBvcnQgY2FuIGJlIHJlYWNoZWQgYnkgZWxlY3Ryb25pYworbWFpbCBhdCB0ZWNoc3VwQG15bGV4LmNvbSwgYnkgVm9pY2UgYXQgNTEwLzYwOC0yNDAwLCBvciBieSBGQVggYXQgNTEwLzc0NS03NzE1LgorQ29udGFjdCBpbmZvcm1hdGlvbiBmb3Igb2ZmaWNlcyBpbiBFdXJvcGUgYW5kIEphcGFuIGlzIGF2YWlsYWJsZSBvbiB0aGUgV2ViCitzaXRlLgorCisKKwkJCQlEUklWRVIgRkVBVFVSRVMKKworbyBDb25maWd1cmF0aW9uIFJlcG9ydGluZyBhbmQgVGVzdGluZworCisgIER1cmluZyBzeXN0ZW0gaW5pdGlhbGl6YXRpb24sIHRoZSBkcml2ZXIgcmVwb3J0cyBleHRlbnNpdmVseSBvbiB0aGUgaG9zdAorICBhZGFwdGVyIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24sIGluY2x1ZGluZyB0aGUgc3luY2hyb25vdXMgdHJhbnNmZXIgcGFyYW1ldGVycworICByZXF1ZXN0ZWQgYW5kIG5lZ290aWF0ZWQgd2l0aCBlYWNoIHRhcmdldCBkZXZpY2UuICBBdXRvU0NTSSBzZXR0aW5ncyBmb3IKKyAgU3luY2hyb25vdXMgTmVnb3RpYXRpb24sIFdpZGUgTmVnb3RpYXRpb24sIGFuZCBEaXNjb25uZWN0L1JlY29ubmVjdCBhcmUKKyAgcmVwb3J0ZWQgZm9yIGVhY2ggdGFyZ2V0IGRldmljZSwgYXMgd2VsbCBhcyB0aGUgc3RhdHVzIG9mIFRhZ2dlZCBRdWV1aW5nLgorICBJZiB0aGUgc2FtZSBzZXR0aW5nIGlzIGluIGVmZmVjdCBmb3IgYWxsIHRhcmdldCBkZXZpY2VzLCB0aGVuIGEgc2luZ2xlIHdvcmQKKyAgb3IgcGhyYXNlIGlzIHVzZWQ7IG90aGVyd2lzZSwgYSBsZXR0ZXIgaXMgcHJvdmlkZWQgZm9yIGVhY2ggdGFyZ2V0IGRldmljZSB0bworICBpbmRpY2F0ZSB0aGUgaW5kaXZpZHVhbCBzdGF0dXMuICBUaGUgZm9sbG93aW5nIGV4YW1wbGVzCisgIHNob3VsZCBjbGFyaWZ5IHRoaXMgcmVwb3J0aW5nIGZvcm1hdDoKKworICAgIFN5bmNocm9ub3VzIE5lZ290aWF0aW9uOiBVbHRyYQorCisgICAgICBTeW5jaHJvbm91cyBuZWdvdGlhdGlvbiBpcyBlbmFibGVkIGZvciBhbGwgdGFyZ2V0IGRldmljZXMgYW5kIHRoZSBob3N0CisgICAgICBhZGFwdGVyIHdpbGwgYXR0ZW1wdCB0byBuZWdvdGlhdGUgZm9yIDIwLjAgbWVnYS10cmFuc2ZlcnMvc2Vjb25kLgorCisgICAgU3luY2hyb25vdXMgTmVnb3RpYXRpb246IEZhc3QKKworICAgICAgU3luY2hyb25vdXMgbmVnb3RpYXRpb24gaXMgZW5hYmxlZCBmb3IgYWxsIHRhcmdldCBkZXZpY2VzIGFuZCB0aGUgaG9zdAorICAgICAgYWRhcHRlciB3aWxsIGF0dGVtcHQgdG8gbmVnb3RpYXRlIGZvciAxMC4wIG1lZ2EtdHJhbnNmZXJzL3NlY29uZC4KKworICAgIFN5bmNocm9ub3VzIE5lZ290aWF0aW9uOiBTbG93CisKKyAgICAgIFN5bmNocm9ub3VzIG5lZ290aWF0aW9uIGlzIGVuYWJsZWQgZm9yIGFsbCB0YXJnZXQgZGV2aWNlcyBhbmQgdGhlIGhvc3QKKyAgICAgIGFkYXB0ZXIgd2lsbCBhdHRlbXB0IHRvIG5lZ290aWF0ZSBmb3IgNS4wIG1lZ2EtdHJhbnNmZXJzL3NlY29uZC4KKworICAgIFN5bmNocm9ub3VzIE5lZ290aWF0aW9uOiBEaXNhYmxlZAorCisgICAgICBTeW5jaHJvbm91cyBuZWdvdGlhdGlvbiBpcyBkaXNhYmxlZCBhbmQgYWxsIHRhcmdldCBkZXZpY2VzIGFyZSBsaW1pdGVkIHRvCisgICAgICBhc3luY2hyb25vdXMgb3BlcmF0aW9uLgorCisgICAgU3luY2hyb25vdXMgTmVnb3RpYXRpb246IFVGU05VVVUjVVVVVVVVVVUKKworICAgICAgU3luY2hyb25vdXMgbmVnb3RpYXRpb24gdG8gVWx0cmEgc3BlZWQgaXMgZW5hYmxlZCBmb3IgdGFyZ2V0IGRldmljZXMgMAorICAgICAgYW5kIDQgdGhyb3VnaCAxNSwgdG8gRmFzdCBzcGVlZCBmb3IgdGFyZ2V0IGRldmljZSAxLCB0byBTbG93IHNwZWVkIGZvcgorICAgICAgdGFyZ2V0IGRldmljZSAyLCBhbmQgaXMgbm90IHBlcm1pdHRlZCB0byB0YXJnZXQgZGV2aWNlIDMuICBUaGUgaG9zdAorICAgICAgYWRhcHRlcidzIFNDU0kgSUQgaXMgcmVwcmVzZW50ZWQgYnkgdGhlICIjIi4KKworICAgIFRoZSBzdGF0dXMgb2YgV2lkZSBOZWdvdGlhdGlvbiwgRGlzY29ubmVjdC9SZWNvbm5lY3QsIGFuZCBUYWdnZWQgUXVldWluZworICAgIGFyZSByZXBvcnRlZCBhcyAiRW5hYmxlZCIsIERpc2FibGVkIiwgb3IgYSBzZXF1ZW5jZSBvZiAiWSIgYW5kICJOIiBsZXR0ZXJzLgorCitvIFBlcmZvcm1hbmNlIEZlYXR1cmVzCisKKyAgQnVzTG9naWMgU0NTSSBIb3N0IEFkYXB0ZXJzIGRpcmVjdGx5IGltcGxlbWVudCBTQ1NJLTIgVGFnZ2VkIFF1ZXVpbmcsIGFuZCBzbworICBzdXBwb3J0IGhhcyBiZWVuIGluY2x1ZGVkIGluIHRoZSBkcml2ZXIgdG8gdXRpbGl6ZSB0YWdnZWQgcXVldWluZyB3aXRoIGFueQorICB0YXJnZXQgZGV2aWNlcyB0aGF0IHJlcG9ydCBoYXZpbmcgdGhlIHRhZ2dlZCBxdWV1aW5nIGNhcGFiaWxpdHkuICBUYWdnZWQKKyAgcXVldWluZyBhbGxvd3MgZm9yIG11bHRpcGxlIG91dHN0YW5kaW5nIGNvbW1hbmRzIHRvIGJlIGlzc3VlZCB0byBlYWNoIHRhcmdldAorICBkZXZpY2Ugb3IgbG9naWNhbCB1bml0LCBhbmQgY2FuIGltcHJvdmUgSS9PIHBlcmZvcm1hbmNlIHN1YnN0YW50aWFsbHkuICBJbgorICBhZGRpdGlvbiwgQnVzTG9naWMncyBTdHJpY3QgUm91bmQgUm9iaW4gTW9kZSBpcyB1c2VkIHRvIG9wdGltaXplIGhvc3QgYWRhcHRlcgorICBwZXJmb3JtYW5jZSwgYW5kIHNjYXR0ZXIvZ2F0aGVyIEkvTyBjYW4gc3VwcG9ydCBhcyBtYW55IHNlZ21lbnRzIGFzIGNhbiBiZQorICBlZmZlY3RpdmVseSB1dGlsaXplZCBieSB0aGUgTGludXggSS9PIHN1YnN5c3RlbS4gIENvbnRyb2wgb3ZlciB0aGUgdXNlIG9mCisgIHRhZ2dlZCBxdWV1aW5nIGZvciBlYWNoIHRhcmdldCBkZXZpY2UgYXMgd2VsbCBhcyBpbmRpdmlkdWFsIHNlbGVjdGlvbiBvZiB0aGUKKyAgdGFnZ2VkIHF1ZXVlIGRlcHRoIGlzIGF2YWlsYWJsZSB0aHJvdWdoIGRyaXZlciBvcHRpb25zIHByb3ZpZGVkIG9uIHRoZSBrZXJuZWwKKyAgY29tbWFuZCBsaW5lIG9yIGF0IG1vZHVsZSBpbml0aWFsaXphdGlvbiB0aW1lLiAgQnkgZGVmYXVsdCwgdGhlIHF1ZXVlIGRlcHRoCisgIGlzIGRldGVybWluZWQgYXV0b21hdGljYWxseSBiYXNlZCBvbiB0aGUgaG9zdCBhZGFwdGVyJ3MgdG90YWwgcXVldWUgZGVwdGggYW5kCisgIHRoZSBudW1iZXIsIHR5cGUsIHNwZWVkLCBhbmQgY2FwYWJpbGl0aWVzIG9mIHRoZSB0YXJnZXQgZGV2aWNlcyBmb3VuZC4gIEluCisgIGFkZGl0aW9uLCB0YWdnZWQgcXVldWluZyBpcyBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIHdoZW5ldmVyIHRoZSBob3N0IGFkYXB0ZXIKKyAgZmlybXdhcmUgdmVyc2lvbiBpcyBrbm93biBub3QgdG8gaW1wbGVtZW50IGl0IGNvcnJlY3RseSwgb3Igd2hlbmV2ZXIgYSB0YWdnZWQKKyAgcXVldWUgZGVwdGggb2YgMSBpcyBzZWxlY3RlZC4gIFRhZ2dlZCBxdWV1aW5nIGlzIGFsc28gZGlzYWJsZWQgZm9yIGluZGl2aWR1YWwKKyAgdGFyZ2V0IGRldmljZXMgaWYgZGlzY29ubmVjdC9yZWNvbm5lY3QgaXMgZGlzYWJsZWQgZm9yIHRoYXQgZGV2aWNlLgorCitvIFJvYnVzdG5lc3MgRmVhdHVyZXMKKworICBUaGUgZHJpdmVyIGltcGxlbWVudHMgZXh0ZW5zaXZlIGVycm9yIHJlY292ZXJ5IHByb2NlZHVyZXMuICBXaGVuIHRoZSBoaWdoZXIKKyAgbGV2ZWwgcGFydHMgb2YgdGhlIFNDU0kgc3Vic3lzdGVtIHJlcXVlc3QgdGhhdCBhIHRpbWVkIG91dCBjb21tYW5kIGJlIHJlc2V0LAorICBhIHNlbGVjdGlvbiBpcyBtYWRlIGJldHdlZW4gYSBmdWxsIGhvc3QgYWRhcHRlciBoYXJkIHJlc2V0IGFuZCBTQ1NJIGJ1cyByZXNldAorICB2ZXJzdXMgc2VuZGluZyBhIGJ1cyBkZXZpY2UgcmVzZXQgbWVzc2FnZSB0byB0aGUgaW5kaXZpZHVhbCB0YXJnZXQgZGV2aWNlCisgIGJhc2VkIG9uIHRoZSByZWNvbW1lbmRhdGlvbiBvZiB0aGUgU0NTSSBzdWJzeXN0ZW0uICBFcnJvciByZWNvdmVyeSBzdHJhdGVnaWVzCisgIGFyZSBzZWxlY3RhYmxlIHRocm91Z2ggZHJpdmVyIG9wdGlvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIHRhcmdldCBkZXZpY2UsCisgIGFuZCBhbHNvIGluY2x1ZGUgc2VuZGluZyBhIGJ1cyBkZXZpY2UgcmVzZXQgdG8gdGhlIHNwZWNpZmljIHRhcmdldCBkZXZpY2UKKyAgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb21tYW5kIGJlaW5nIHJlc2V0LCBhcyB3ZWxsIGFzIHN1cHByZXNzaW5nIGVycm9yCisgIHJlY292ZXJ5IGVudGlyZWx5IHRvIGF2b2lkIHBlcnR1cmJpbmcgYW4gaW1wcm9wZXJseSBmdW5jdGlvbmluZyBkZXZpY2UuICBJZgorICB0aGUgYnVzIGRldmljZSByZXNldCBlcnJvciByZWNvdmVyeSBzdHJhdGVneSBpcyBzZWxlY3RlZCBhbmQgc2VuZGluZyBhIGJ1cworICBkZXZpY2UgcmVzZXQgZG9lcyBub3QgcmVzdG9yZSBjb3JyZWN0IG9wZXJhdGlvbiwgdGhlIG5leHQgY29tbWFuZCB0aGF0IGlzCisgIHJlc2V0IHdpbGwgZm9yY2UgYSBmdWxsIGhvc3QgYWRhcHRlciBoYXJkIHJlc2V0IGFuZCBTQ1NJIGJ1cyByZXNldC4gIFNDU0kgYnVzCisgIHJlc2V0cyBjYXVzZWQgYnkgb3RoZXIgZGV2aWNlcyBhbmQgZGV0ZWN0ZWQgYnkgdGhlIGhvc3QgYWRhcHRlciBhcmUgYWxzbworICBoYW5kbGVkIGJ5IGlzc3VpbmcgYSBzb2Z0IHJlc2V0IHRvIHRoZSBob3N0IGFkYXB0ZXIgYW5kIHJlLWluaXRpYWxpemF0aW9uLgorICBGaW5hbGx5LCBpZiB0YWdnZWQgcXVldWluZyBpcyBhY3RpdmUgYW5kIG1vcmUgdGhhbiBvbmUgY29tbWFuZCByZXNldCBvY2N1cnMKKyAgaW4gYSAxMCBtaW51dGUgaW50ZXJ2YWwsIG9yIGlmIGEgY29tbWFuZCByZXNldCBvY2N1cnMgd2l0aGluIHRoZSBmaXJzdCAxMAorICBtaW51dGVzIG9mIG9wZXJhdGlvbiwgdGhlbiB0YWdnZWQgcXVldWluZyB3aWxsIGJlIGRpc2FibGVkIGZvciB0aGF0IHRhcmdldAorICBkZXZpY2UuICBUaGVzZSBlcnJvciByZWNvdmVyeSBvcHRpb25zIGltcHJvdmUgb3ZlcmFsbCBzeXN0ZW0gcm9idXN0bmVzcyBieQorICBwcmV2ZW50aW5nIGluZGl2aWR1YWwgZXJyYW50IGRldmljZXMgZnJvbSBjYXVzaW5nIHRoZSBzeXN0ZW0gYXMgYSB3aG9sZSB0bworICBsb2NrIHVwIG9yIGNyYXNoLCBhbmQgdGhlcmVieSBhbGxvd2luZyBhIGNsZWFuIHNodXRkb3duIGFuZCByZXN0YXJ0IGFmdGVyIHRoZQorICBvZmZlbmRpbmcgY29tcG9uZW50IGlzIHJlbW92ZWQuCisKK28gUENJIENvbmZpZ3VyYXRpb24gU3VwcG9ydAorCisgIE9uIFBDSSBzeXN0ZW1zIHJ1bm5pbmcga2VybmVscyBjb21waWxlZCB3aXRoIFBDSSBCSU9TIHN1cHBvcnQgZW5hYmxlZCwgdGhpcworICBkcml2ZXIgd2lsbCBpbnRlcnJvZ2F0ZSB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIHVzZSB0aGUgSS9PIHBvcnQKKyAgYWRkcmVzc2VzIGFzc2lnbmVkIGJ5IHRoZSBzeXN0ZW0gQklPUywgcmF0aGVyIHRoYW4gdGhlIElTQSBjb21wYXRpYmxlIEkvTworICBwb3J0IGFkZHJlc3Nlcy4gIFRoZSBJU0EgY29tcGF0aWJsZSBJL08gcG9ydCBhZGRyZXNzIGlzIHRoZW4gZGlzYWJsZWQgYnkgdGhlCisgIGRyaXZlci4gIE9uIFBDSSBzeXN0ZW1zIGl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCB0aGUgQXV0b1NDU0kgdXRpbGl0eSBiZQorICB1c2VkIHRvIGRpc2FibGUgdGhlIElTQSBjb21wYXRpYmxlIEkvTyBwb3J0IGVudGlyZWx5IGFzIGl0IGlzIG5vdCBuZWNlc3NhcnkuCisgIFRoZSBJU0EgY29tcGF0aWJsZSBJL08gcG9ydCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0IG9uIHRoZSBCVC05NDgvOTU4Lzk1OEQuCisKK28gL3Byb2MgRmlsZSBTeXN0ZW0gU3VwcG9ydAorCisgIENvcGllcyBvZiB0aGUgaG9zdCBhZGFwdGVyIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gdG9nZXRoZXIgd2l0aCB1cGRhdGVkCisgIGRhdGEgdHJhbnNmZXIgYW5kIGVycm9yIHJlY292ZXJ5IHN0YXRpc3RpY3MgYXJlIGF2YWlsYWJsZSB0aHJvdWdoIHRoZQorICAvcHJvYy9zY3NpL0J1c0xvZ2ljLzxOPiBpbnRlcmZhY2UuCisKK28gU2hhcmVkIEludGVycnVwdHMgU3VwcG9ydAorCisgIE9uIHN5c3RlbXMgdGhhdCBzdXBwb3J0IHNoYXJlZCBpbnRlcnJ1cHRzLCBhbnkgbnVtYmVyIG9mIEJ1c0xvZ2ljIEhvc3QKKyAgQWRhcHRlcnMgbWF5IHNoYXJlIHRoZSBzYW1lIGludGVycnVwdCByZXF1ZXN0IGNoYW5uZWwuCisKKworCQkJICAgIFNVUFBPUlRFRCBIT1NUIEFEQVBURVJTCisKK1RoZSBmb2xsb3dpbmcgbGlzdCBjb21wcmlzZXMgdGhlIHN1cHBvcnRlZCBCdXNMb2dpYyBTQ1NJIEhvc3QgQWRhcHRlcnMgYXMgb2YKK3RoZSBkYXRlIG9mIHRoaXMgZG9jdW1lbnQuICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IGFueW9uZSBwdXJjaGFzaW5nIGEgQnVzTG9naWMKK0hvc3QgQWRhcHRlciBub3QgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBjb250YWN0IHRoZSBhdXRob3IgYmVmb3JlaGFuZCB0byB2ZXJpZnkKK3RoYXQgaXQgaXMgb3Igd2lsbCBiZSBzdXBwb3J0ZWQuCisKK0ZsYXNoUG9pbnQgU2VyaWVzIFBDSSBIb3N0IEFkYXB0ZXJzOgorCitGbGFzaFBvaW50IExUIChCVC05MzApCVVsdHJhIFNDU0ktMworRmxhc2hQb2ludCBMVCAoQlQtOTMwUikJVWx0cmEgU0NTSS0zIHdpdGggUkFJRFBsdXMKK0ZsYXNoUG9pbnQgTFQgKEJULTkyMCkJVWx0cmEgU0NTSS0zIChCVC05MzAgd2l0aG91dCBCSU9TKQorRmxhc2hQb2ludCBETCAoQlQtOTMyKQlEdWFsIENoYW5uZWwgVWx0cmEgU0NTSS0zCitGbGFzaFBvaW50IERMIChCVC05MzJSKQlEdWFsIENoYW5uZWwgVWx0cmEgU0NTSS0zIHdpdGggUkFJRFBsdXMKK0ZsYXNoUG9pbnQgTFcgKEJULTk1MCkJV2lkZSBVbHRyYSBTQ1NJLTMKK0ZsYXNoUG9pbnQgTFcgKEJULTk1MFIpCVdpZGUgVWx0cmEgU0NTSS0zIHdpdGggUkFJRFBsdXMKK0ZsYXNoUG9pbnQgRFcgKEJULTk1MikJRHVhbCBDaGFubmVsIFdpZGUgVWx0cmEgU0NTSS0zCitGbGFzaFBvaW50IERXIChCVC05NTJSKQlEdWFsIENoYW5uZWwgV2lkZSBVbHRyYSBTQ1NJLTMgd2l0aCBSQUlEUGx1cworCitNdWx0aU1hc3RlciAiVyIgU2VyaWVzIEhvc3QgQWRhcHRlcnM6CisKK0JULTk0OAkgICAgUENJCQlVbHRyYSBTQ1NJLTMKK0JULTk1OAkgICAgUENJCQlXaWRlIFVsdHJhIFNDU0ktMworQlQtOTU4RAkgICAgUENJCQlXaWRlIERpZmZlcmVudGlhbCBVbHRyYSBTQ1NJLTMKKworTXVsdGlNYXN0ZXIgIkMiIFNlcmllcyBIb3N0IEFkYXB0ZXJzOgorCitCVC05NDZDCSAgICBQQ0kJCUZhc3QgU0NTSS0yCitCVC05NTZDCSAgICBQQ0kJCVdpZGUgRmFzdCBTQ1NJLTIKK0JULTk1NkNEICAgIFBDSQkJV2lkZSBEaWZmZXJlbnRpYWwgRmFzdCBTQ1NJLTIKK0JULTQ0NUMJICAgIFZMQgkJRmFzdCBTQ1NJLTIKK0JULTc0N0MJICAgIEVJU0EJRmFzdCBTQ1NJLTIKK0JULTc1N0MJICAgIEVJU0EJV2lkZSBGYXN0IFNDU0ktMgorQlQtNzU3Q0QgICAgRUlTQQlXaWRlIERpZmZlcmVudGlhbCBGYXN0IFNDU0ktMgorQlQtNTQ1QwkgICAgSVNBCQlGYXN0IFNDU0ktMgorQlQtNTQwQ0YgICAgSVNBCQlGYXN0IFNDU0ktMgorCitNdWx0aU1hc3RlciAiUyIgU2VyaWVzIEhvc3QgQWRhcHRlcnM6CisKK0JULTQ0NVMJICAgIFZMQgkJRmFzdCBTQ1NJLTIKK0JULTc0N1MJICAgIEVJU0EJRmFzdCBTQ1NJLTIKK0JULTc0N0QJICAgIEVJU0EJRGlmZmVyZW50aWFsIEZhc3QgU0NTSS0yCitCVC03NTdTCSAgICBFSVNBCVdpZGUgRmFzdCBTQ1NJLTIKK0JULTc1N0QJICAgIEVJU0EJV2lkZSBEaWZmZXJlbnRpYWwgRmFzdCBTQ1NJLTIKK0JULTU0NVMJICAgIElTQQkJRmFzdCBTQ1NJLTIKK0JULTU0MkQJICAgIElTQQkJRGlmZmVyZW50aWFsIEZhc3QgU0NTSS0yCitCVC03NDJBCSAgICBFSVNBCVNDU0ktMiAoNzQyQSByZXZpc2lvbiBIKQorQlQtNTQyQgkgICAgSVNBCQlTQ1NJLTIgKDU0MkIgcmV2aXNpb24gSCkKKworTXVsdGlNYXN0ZXIgIkEiIFNlcmllcyBIb3N0IEFkYXB0ZXJzOgorCitCVC03NDJBCSAgICBFSVNBCVNDU0ktMiAoNzQyQSByZXZpc2lvbnMgQSAtIEcpCitCVC01NDJCCSAgICBJU0EJCVNDU0ktMiAoNTQyQiByZXZpc2lvbnMgQSAtIEcpCisKK0FNSSBGYXN0RGlzayBIb3N0IEFkYXB0ZXJzIHRoYXQgYXJlIHRydWUgQnVzTG9naWMgTXVsdGlNYXN0ZXIgY2xvbmVzIGFyZSBhbHNvCitzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIuCisKK0J1c0xvZ2ljIFNDU0kgSG9zdCBBZGFwdGVycyBhcmUgYXZhaWxhYmxlIHBhY2thZ2VkIGJvdGggYXMgYmFyZSBib2FyZHMgYW5kIGFzCityZXRhaWwga2l0cy4gIFRoZSBCVC0gbW9kZWwgbnVtYmVycyBhYm92ZSByZWZlciB0byB0aGUgYmFyZSBib2FyZCBwYWNrYWdpbmcuCitUaGUgcmV0YWlsIGtpdCBtb2RlbCBudW1iZXJzIGFyZSBmb3VuZCBieSByZXBsYWNpbmcgQlQtIHdpdGggS1QtIGluIHRoZSBhYm92ZQorbGlzdC4gIFRoZSByZXRhaWwga2l0IGluY2x1ZGVzIHRoZSBiYXJlIGJvYXJkIGFuZCBtYW51YWwgYXMgd2VsbCBhcyBjYWJsaW5nIGFuZAorZHJpdmVyIG1lZGlhIGFuZCBkb2N1bWVudGF0aW9uIHRoYXQgYXJlIG5vdCBwcm92aWRlZCB3aXRoIGJhcmUgYm9hcmRzLgorCisKKwkJCSBGTEFTSFBPSU5UIElOU1RBTExBVElPTiBOT1RFUworCitvIFJBSURQbHVzIFN1cHBvcnQKKworICBGbGFzaFBvaW50IEhvc3QgQWRhcHRlcnMgbm93IGluY2x1ZGUgUkFJRFBsdXMsIE15bGV4J3MgYm9vdGFibGUgc29mdHdhcmUKKyAgUkFJRC4gIFJBSURQbHVzIGlzIG5vdCBzdXBwb3J0ZWQgb24gTGludXgsIGFuZCB0aGVyZSBhcmUgbm8gcGxhbnMgdG8gc3VwcG9ydAorICBpdC4gIFRoZSBNRCBkcml2ZXIgaW4gTGludXggMi4wIHByb3ZpZGVzIGZvciBjb25jYXRlbmF0aW9uIChMSU5FQVIpIGFuZAorICBzdHJpcGluZyAoUkFJRC0wKSwgYW5kIHN1cHBvcnQgZm9yIG1pcnJvcmluZyAoUkFJRC0xKSwgZml4ZWQgcGFyaXR5IChSQUlELTQpLAorICBhbmQgZGlzdHJpYnV0ZWQgcGFyaXR5IChSQUlELTUpIGlzIGF2YWlsYWJsZSBzZXBhcmF0ZWx5LiAgVGhlIGJ1aWx0LWluIExpbnV4CisgIFJBSUQgc3VwcG9ydCBpcyBnZW5lcmFsbHkgbW9yZSBmbGV4aWJsZSBhbmQgaXMgZXhwZWN0ZWQgdG8gcGVyZm9ybSBiZXR0ZXIKKyAgdGhhbiBSQUlEUGx1cywgc28gdGhlcmUgaXMgbGl0dGxlIGltcGV0dXMgdG8gaW5jbHVkZSBSQUlEUGx1cyBzdXBwb3J0IGluIHRoZQorICBCdXNMb2dpYyBkcml2ZXIuCisKK28gRW5hYmxpbmcgVWx0cmFTQ1NJIFRyYW5zZmVycworCisgIEZsYXNoUG9pbnQgSG9zdCBBZGFwdGVycyBzaGlwIHdpdGggdGhlaXIgY29uZmlndXJhdGlvbiBzZXQgdG8gIkZhY3RvcnkKKyAgRGVmYXVsdCIgc2V0dGluZ3MgdGhhdCBhcmUgY29uc2VydmF0aXZlIGFuZCBkbyBub3QgYWxsb3cgZm9yIFVsdHJhU0NTSSBzcGVlZAorICB0byBiZSBuZWdvdGlhdGVkLiAgVGhpcyByZXN1bHRzIGluIGZld2VyIHByb2JsZW1zIHdoZW4gdGhlc2UgaG9zdCBhZGFwdGVycworICBhcmUgaW5zdGFsbGVkIGluIHN5c3RlbXMgd2l0aCBjYWJsaW5nIG9yIHRlcm1pbmF0aW9uIHRoYXQgaXMgbm90IHN1ZmZpY2llbnQKKyAgZm9yIFVsdHJhU0NTSSBvcGVyYXRpb24sIG9yIHdoZXJlIGV4aXN0aW5nIFNDU0kgZGV2aWNlcyBkbyBub3QgcHJvcGVybHkKKyAgcmVzcG9uZCB0byBzeW5jaHJvbm91cyB0cmFuc2ZlciBuZWdvdGlhdGlvbiBmb3IgVWx0cmFTQ1NJIHNwZWVkLiAgQXV0b1NDU0kKKyAgbWF5IGJlIHVzZWQgdG8gbG9hZCAiT3B0aW11bSBQZXJmb3JtYW5jZSIgc2V0dGluZ3Mgd2hpY2ggYWxsb3cgVWx0cmFTQ1NJCisgIHNwZWVkIHRvIGJlIG5lZ290aWF0ZWQgd2l0aCBhbGwgZGV2aWNlcywgb3IgVWx0cmFTQ1NJIHNwZWVkIGNhbiBiZSBlbmFibGVkIG9uCisgIGFuIGluZGl2aWR1YWwgYmFzaXMuICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IFNDQU0gYmUgbWFudWFsbHkgZGlzYWJsZWQgYWZ0ZXIKKyAgdGhlICJPcHRpbXVtIFBlcmZvcm1hbmNlIiBzZXR0aW5ncyBhcmUgbG9hZGVkLgorCisKKwkJICAgICAgQlQtOTQ4Lzk1OC85NThEIElOU1RBTExBVElPTiBOT1RFUworCitUaGUgQlQtOTQ4Lzk1OC85NThEIFBDSSBVbHRyYSBTQ1NJIEhvc3QgQWRhcHRlcnMgaGF2ZSBzb21lIGZlYXR1cmVzIHdoaWNoIG1heQorcmVxdWlyZSBhdHRlbnRpb24gaW4gc29tZSBjaXJjdW1zdGFuY2VzIHdoZW4gaW5zdGFsbGluZyBMaW51eC4KKworbyBQQ0kgSS9PIFBvcnQgQXNzaWdubWVudHMKKworICBXaGVuIGNvbmZpZ3VyZWQgdG8gZmFjdG9yeSBkZWZhdWx0IHNldHRpbmdzLCB0aGUgQlQtOTQ4Lzk1OC85NThEIHdpbGwgb25seQorICByZWNvZ25pemUgdGhlIFBDSSBJL08gcG9ydCBhc3NpZ25tZW50cyBtYWRlIGJ5IHRoZSBtb3RoZXJib2FyZCdzIFBDSSBCSU9TLgorICBUaGUgQlQtOTQ4Lzk1OC85NThEIHdpbGwgbm90IHJlc3BvbmQgdG8gYW55IG9mIHRoZSBJU0EgY29tcGF0aWJsZSBJL08gcG9ydHMKKyAgdGhhdCBwcmV2aW91cyBCdXNMb2dpYyBTQ1NJIEhvc3QgQWRhcHRlcnMgcmVzcG9uZCB0by4gIFRoaXMgZHJpdmVyIHN1cHBvcnRzCisgIHRoZSBQQ0kgSS9PIHBvcnQgYXNzaWdubWVudHMsIHNvIHRoaXMgaXMgdGhlIHByZWZlcnJlZCBjb25maWd1cmF0aW9uLgorICBIb3dldmVyLCBpZiB0aGUgb2Jzb2xldGUgQnVzTG9naWMgZHJpdmVyIG11c3QgYmUgdXNlZCBmb3IgYW55IHJlYXNvbiwgc3VjaCBhcworICBhIExpbnV4IGRpc3RyaWJ1dGlvbiB0aGF0IGRvZXMgbm90IHlldCB1c2UgdGhpcyBkcml2ZXIgaW4gaXRzIGJvb3Qga2VybmVsLAorICBCdXNMb2dpYyBoYXMgcHJvdmlkZWQgYW4gQXV0b1NDU0kgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gZW5hYmxlIGEgbGVnYWN5IElTQQorICBjb21wYXRpYmxlIEkvTyBwb3J0LgorCisgIFRvIGVuYWJsZSB0aGlzIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgb3B0aW9uLCBpbnZva2UgdGhlIEF1dG9TQ1NJIHV0aWxpdHkgdmlhCisgIEN0cmwtQiBhdCBzeXN0ZW0gc3RhcnR1cCBhbmQgc2VsZWN0ICJBZGFwdGVyIENvbmZpZ3VyYXRpb24iLCAiVmlldy9Nb2RpZnkKKyAgQ29uZmlndXJhdGlvbiIsIGFuZCB0aGVuIGNoYW5nZSB0aGUgIklTQSBDb21wYXRpYmxlIFBvcnQiIHNldHRpbmcgZnJvbQorICAiRGlzYWJsZSIgdG8gIlByaW1hcnkiIG9yICJBbHRlcm5hdGUiLiAgT25jZSB0aGlzIGRyaXZlciBoYXMgYmVlbiBpbnN0YWxsZWQsCisgIHRoZSAiSVNBIENvbXBhdGlibGUgUG9ydCIgb3B0aW9uIHNob3VsZCBiZSBzZXQgYmFjayB0byAiRGlzYWJsZSIgdG8gYXZvaWQKKyAgcG9zc2libGUgZnV0dXJlIEkvTyBwb3J0IGNvbmZsaWN0cy4gIFRoZSBvbGRlciBCVC05NDZDLzk1NkMvOTU2Q0QgYWxzbyBoYXZlCisgIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24sIGJ1dCB0aGUgZmFjdG9yeSBkZWZhdWx0IHNldHRpbmcgaXMgIlByaW1hcnkiLgorCitvIFBDSSBTbG90IFNjYW5uaW5nIE9yZGVyCisKKyAgSW4gc3lzdGVtcyB3aXRoIG11bHRpcGxlIEJ1c0xvZ2ljIFBDSSBIb3N0IEFkYXB0ZXJzLCB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlCisgIFBDSSBzbG90cyBhcmUgc2Nhbm5lZCBtYXkgYXBwZWFyIHJldmVyc2VkIHdpdGggdGhlIEJULTk0OC85NTgvOTU4RCBhcworICBjb21wYXJlZCB0byB0aGUgQlQtOTQ2Qy85NTZDLzk1NkNELiAgRm9yIGJvb3RpbmcgZnJvbSBhIFNDU0kgZGlzayB0byB3b3JrCisgIGNvcnJlY3RseSwgaXQgaXMgbmVjZXNzYXJ5IHRoYXQgdGhlIGhvc3QgYWRhcHRlcidzIEJJT1MgYW5kIHRoZSBrZXJuZWwgYWdyZWUKKyAgb24gd2hpY2ggZGlzayBpcyB0aGUgYm9vdCBkZXZpY2UsIHdoaWNoIHJlcXVpcmVzIHRoYXQgdGhleSByZWNvZ25pemUgdGhlIFBDSQorICBob3N0IGFkYXB0ZXJzIGluIHRoZSBzYW1lIG9yZGVyLiAgVGhlIG1vdGhlcmJvYXJkJ3MgUENJIEJJT1MgcHJvdmlkZXMgYQorICBzdGFuZGFyZCB3YXkgb2YgZW51bWVyYXRpbmcgdGhlIFBDSSBob3N0IGFkYXB0ZXJzLCB3aGljaCBpcyB1c2VkIGJ5IHRoZSBMaW51eAorICBrZXJuZWwuICBTb21lIFBDSSBCSU9TIGltcGxlbWVudGF0aW9ucyBlbnVtZXJhdGUgdGhlIFBDSSBzbG90cyBpbiBvcmRlciBvZgorICBpbmNyZWFzaW5nIGJ1cyBudW1iZXIgYW5kIGRldmljZSBudW1iZXIsIHdoaWxlIG90aGVycyBkbyBzbyBpbiB0aGUgb3Bwb3NpdGUKKyAgZGlyZWN0aW9uLgorCisgIFVuZm9ydHVuYXRlbHksIE1pY3Jvc29mdCBkZWNpZGVkIHRoYXQgV2luZG93cyA5NSB3b3VsZCBhbHdheXMgZW51bWVyYXRlIHRoZQorICBQQ0kgc2xvdHMgaW4gb3JkZXIgb2YgaW5jcmVhc2luZyBidXMgbnVtYmVyIGFuZCBkZXZpY2UgbnVtYmVyIHJlZ2FyZGxlc3Mgb2YKKyAgdGhlIFBDSSBCSU9TIGVudW1lcmF0aW9uLCBhbmQgcmVxdWlyZXMgdGhhdCB0aGVpciBzY2hlbWUgYmUgc3VwcG9ydGVkIGJ5IHRoZQorICBob3N0IGFkYXB0ZXIncyBCSU9TIHRvIHJlY2VpdmUgV2luZG93cyA5NSBjZXJ0aWZpY2F0aW9uLiAgVGhlcmVmb3JlLCB0aGUKKyAgZmFjdG9yeSBkZWZhdWx0IHNldHRpbmdzIG9mIHRoZSBCVC05NDgvOTU4Lzk1OEQgZW51bWVyYXRlIHRoZSBob3N0IGFkYXB0ZXJzCisgIGJ5IGluY3JlYXNpbmcgYnVzIG51bWJlciBhbmQgZGV2aWNlIG51bWJlci4gIFRvIGRpc2FibGUgdGhpcyBmZWF0dXJlLCBpbnZva2UKKyAgdGhlIEF1dG9TQ1NJIHV0aWxpdHkgdmlhIEN0cmwtQiBhdCBzeXN0ZW0gc3RhcnR1cCBhbmQgc2VsZWN0ICJBZGFwdGVyCisgIENvbmZpZ3VyYXRpb24iLCAiVmlldy9Nb2RpZnkgQ29uZmlndXJhdGlvbiIsIHByZXNzIEN0cmwtRjEwLCBhbmQgdGhlbiBjaGFuZ2UKKyAgdGhlICJVc2UgQnVzIEFuZCBEZXZpY2UgIyBGb3IgUENJIFNjYW5uaW5nIFNlcS4iIG9wdGlvbiB0byBPRkYuCisKKyAgVGhpcyBkcml2ZXIgd2lsbCBpbnRlcnJvZ2F0ZSB0aGUgc2V0dGluZyBvZiB0aGUgUENJIFNjYW5uaW5nIFNlcXVlbmNlIG9wdGlvbgorICBzbyBhcyB0byByZWNvZ25pemUgdGhlIGhvc3QgYWRhcHRlcnMgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhleSBhcmUgZW51bWVyYXRlZAorICBieSB0aGUgaG9zdCBhZGFwdGVyJ3MgQklPUy4KKworbyBFbmFibGluZyBVbHRyYVNDU0kgVHJhbnNmZXJzCisKKyAgVGhlIEJULTk0OC85NTgvOTU4RCBzaGlwIHdpdGggdGhlaXIgY29uZmlndXJhdGlvbiBzZXQgdG8gIkZhY3RvcnkgRGVmYXVsdCIKKyAgc2V0dGluZ3MgdGhhdCBhcmUgY29uc2VydmF0aXZlIGFuZCBkbyBub3QgYWxsb3cgZm9yIFVsdHJhU0NTSSBzcGVlZCB0byBiZQorICBuZWdvdGlhdGVkLiAgVGhpcyByZXN1bHRzIGluIGZld2VyIHByb2JsZW1zIHdoZW4gdGhlc2UgaG9zdCBhZGFwdGVycyBhcmUKKyAgaW5zdGFsbGVkIGluIHN5c3RlbXMgd2l0aCBjYWJsaW5nIG9yIHRlcm1pbmF0aW9uIHRoYXQgaXMgbm90IHN1ZmZpY2llbnQgZm9yCisgIFVsdHJhU0NTSSBvcGVyYXRpb24sIG9yIHdoZXJlIGV4aXN0aW5nIFNDU0kgZGV2aWNlcyBkbyBub3QgcHJvcGVybHkgcmVzcG9uZAorICB0byBzeW5jaHJvbm91cyB0cmFuc2ZlciBuZWdvdGlhdGlvbiBmb3IgVWx0cmFTQ1NJIHNwZWVkLiAgQXV0b1NDU0kgbWF5IGJlCisgIHVzZWQgdG8gbG9hZCAiT3B0aW11bSBQZXJmb3JtYW5jZSIgc2V0dGluZ3Mgd2hpY2ggYWxsb3cgVWx0cmFTQ1NJIHNwZWVkIHRvIGJlCisgIG5lZ290aWF0ZWQgd2l0aCBhbGwgZGV2aWNlcywgb3IgVWx0cmFTQ1NJIHNwZWVkIGNhbiBiZSBlbmFibGVkIG9uIGFuCisgIGluZGl2aWR1YWwgYmFzaXMuICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IFNDQU0gYmUgbWFudWFsbHkgZGlzYWJsZWQgYWZ0ZXIgdGhlCisgICJPcHRpbXVtIFBlcmZvcm1hbmNlIiBzZXR0aW5ncyBhcmUgbG9hZGVkLgorCisKKwkJCQlEUklWRVIgT1BUSU9OUworCitCdXNMb2dpYyBEcml2ZXIgT3B0aW9ucyBtYXkgYmUgc3BlY2lmaWVkIGVpdGhlciB2aWEgdGhlIExpbnV4IEtlcm5lbCBDb21tYW5kCitMaW5lIG9yIHZpYSB0aGUgTG9hZGFibGUgS2VybmVsIE1vZHVsZSBJbnN0YWxsYXRpb24gRmFjaWxpdHkuICBEcml2ZXIgT3B0aW9ucworZm9yIG11bHRpcGxlIGhvc3QgYWRhcHRlcnMgbWF5IGJlIHNwZWNpZmllZCBlaXRoZXIgYnkgc2VwYXJhdGluZyB0aGUgb3B0aW9uCitzdHJpbmdzIGJ5IGEgc2VtaWNvbG9uLCBvciBieSBzcGVjaWZ5aW5nIG11bHRpcGxlICJCdXNMb2dpYz0iIHN0cmluZ3Mgb24gdGhlCitjb21tYW5kIGxpbmUuICBJbmRpdmlkdWFsIG9wdGlvbiBzcGVjaWZpY2F0aW9ucyBmb3IgYSBzaW5nbGUgaG9zdCBhZGFwdGVyIGFyZQorc2VwYXJhdGVkIGJ5IGNvbW1hcy4gIFRoZSBQcm9iaW5nIGFuZCBEZWJ1Z2dpbmcgT3B0aW9ucyBhcHBseSB0byBhbGwgaG9zdAorYWRhcHRlcnMgd2hlcmVhcyB0aGUgcmVtYWluaW5nIG9wdGlvbnMgYXBwbHkgaW5kaXZpZHVhbGx5IG9ubHkgdG8gdGhlCitzZWxlY3RlZCBob3N0IGFkYXB0ZXIuCisKK1RoZSBCdXNMb2dpYyBEcml2ZXIgUHJvYmluZyBPcHRpb25zIGNvbXByaXNlIHRoZSBmb2xsb3dpbmc6CisKK0lPOjxpbnRlZ2VyPgorCisgIFRoZSAiSU86IiBvcHRpb24gc3BlY2lmaWVzIGFuIElTQSBJL08gQWRkcmVzcyB0byBiZSBwcm9iZWQgZm9yIGEgbm9uLVBDSQorICBNdWx0aU1hc3RlciBIb3N0IEFkYXB0ZXIuICBJZiBuZWl0aGVyICJJTzoiIG5vciAiTm9Qcm9iZUlTQSIgb3B0aW9ucyBhcmUKKyAgc3BlY2lmaWVkLCB0aGVuIHRoZSBzdGFuZGFyZCBsaXN0IG9mIEJ1c0xvZ2ljIE11bHRpTWFzdGVyIElTQSBJL08gQWRkcmVzc2VzCisgIHdpbGwgYmUgcHJvYmVkICgweDMzMCwgMHgzMzQsIDB4MjMwLCAweDIzNCwgMHgxMzAsIGFuZCAweDEzNCkuICBNdWx0aXBsZQorICAiSU86IiBvcHRpb25zIG1heSBiZSBzcGVjaWZpZWQgdG8gcHJlY2lzZWx5IGRldGVybWluZSB0aGUgSS9PIEFkZHJlc3NlcyB0bworICBiZSBwcm9iZWQsIGJ1dCB0aGUgcHJvYmUgb3JkZXIgd2lsbCBhbHdheXMgZm9sbG93IHRoZSBzdGFuZGFyZCBsaXN0LgorCitOb1Byb2JlCisKKyAgVGhlICJOb1Byb2JlIiBvcHRpb24gZGlzYWJsZXMgYWxsIHByb2JpbmcgYW5kIHRoZXJlZm9yZSBubyBCdXNMb2dpYyBIb3N0CisgIEFkYXB0ZXJzIHdpbGwgYmUgZGV0ZWN0ZWQuCisKK05vUHJvYmVJU0EKKworICBUaGUgIk5vUHJvYmVJU0EiIG9wdGlvbiBkaXNhYmxlcyBwcm9iaW5nIG9mIHRoZSBzdGFuZGFyZCBCdXNMb2dpYyBJU0EgSS9PCisgIEFkZHJlc3NlcyBhbmQgdGhlcmVmb3JlIG9ubHkgUENJIE11bHRpTWFzdGVyIGFuZCBGbGFzaFBvaW50IEhvc3QgQWRhcHRlcnMKKyAgd2lsbCBiZSBkZXRlY3RlZC4KKworTm9Qcm9iZVBDSQorCisgIFRoZSAiTm9Qcm9iZVBDSSIgb3B0aW9ucyBkaXNhYmxlcyB0aGUgaW50ZXJyb2dhdGlvbiBvZiBQQ0kgQ29uZmlndXJhdGlvbgorICBTcGFjZSBhbmQgdGhlcmVmb3JlIG9ubHkgSVNBIE11bHRpbWFzdGVyIEhvc3QgQWRhcHRlcnMgd2lsbCBiZSBkZXRlY3RlZCwgYXMKKyAgd2VsbCBhcyBQQ0kgTXVsdGltYXN0ZXIgSG9zdCBBZGFwdGVycyB0aGF0IGhhdmUgdGhlaXIgSVNBIENvbXBhdGlibGUgSS9PCisgIFBvcnQgc2V0IHRvICJQcmltYXJ5IiBvciAiQWx0ZXJuYXRlIi4KKworTm9Tb3J0UENJCisKKyAgVGhlICJOb1NvcnRQQ0kiIG9wdGlvbiBmb3JjZXMgUENJIE11bHRpTWFzdGVyIEhvc3QgQWRhcHRlcnMgdG8gYmUKKyAgZW51bWVyYXRlZCBpbiB0aGUgb3JkZXIgcHJvdmlkZWQgYnkgdGhlIFBDSSBCSU9TLCBpZ25vcmluZyBhbnkgc2V0dGluZyBvZgorICB0aGUgQXV0b1NDU0kgIlVzZSBCdXMgQW5kIERldmljZSAjIEZvciBQQ0kgU2Nhbm5pbmcgU2VxLiIgb3B0aW9uLgorCitNdWx0aU1hc3RlckZpcnN0CisKKyAgVGhlICJNdWx0aU1hc3RlckZpcnN0IiBvcHRpb24gZm9yY2VzIE11bHRpTWFzdGVyIEhvc3QgQWRhcHRlcnMgdG8gYmUgcHJvYmVkCisgIGJlZm9yZSBGbGFzaFBvaW50IEhvc3QgQWRhcHRlcnMuICBCeSBkZWZhdWx0LCBpZiBib3RoIEZsYXNoUG9pbnQgYW5kIFBDSQorICBNdWx0aU1hc3RlciBIb3N0IEFkYXB0ZXJzIGFyZSBwcmVzZW50LCB0aGlzIGRyaXZlciB3aWxsIHByb2JlIGZvcgorICBGbGFzaFBvaW50IEhvc3QgQWRhcHRlcnMgZmlyc3QgdW5sZXNzIHRoZSBCSU9TIHByaW1hcnkgZGlzayBpcyBjb250cm9sbGVkCisgIGJ5IHRoZSBmaXJzdCBQQ0kgTXVsdGlNYXN0ZXIgSG9zdCBBZGFwdGVyLCBpbiB3aGljaCBjYXNlIE11bHRpTWFzdGVyIEhvc3QKKyAgQWRhcHRlcnMgd2lsbCBiZSBwcm9iZWQgZmlyc3QuCisKK0ZsYXNoUG9pbnRGaXJzdAorCisgIFRoZSAiRmxhc2hQb2ludEZpcnN0IiBvcHRpb24gZm9yY2VzIEZsYXNoUG9pbnQgSG9zdCBBZGFwdGVycyB0byBiZSBwcm9iZWQKKyAgYmVmb3JlIE11bHRpTWFzdGVyIEhvc3QgQWRhcHRlcnMuCisKK1RoZSBCdXNMb2dpYyBEcml2ZXIgVGFnZ2VkIFF1ZXVpbmcgT3B0aW9ucyBhbGxvdyBmb3IgZXhwbGljaXRseSBzcGVjaWZ5aW5nCit0aGUgUXVldWUgRGVwdGggYW5kIHdoZXRoZXIgVGFnZ2VkIFF1ZXVpbmcgaXMgcGVybWl0dGVkIGZvciBlYWNoIFRhcmdldAorRGV2aWNlIChhc3N1bWluZyB0aGF0IHRoZSBUYXJnZXQgRGV2aWNlIHN1cHBvcnRzIFRhZ2dlZCBRdWV1aW5nKS4gIFRoZSBRdWV1ZQorRGVwdGggaXMgdGhlIG51bWJlciBvZiBTQ1NJIENvbW1hbmRzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgY29uY3VycmVudGx5CitwcmVzZW50ZWQgZm9yIGV4ZWN1dGlvbiAoZWl0aGVyIHRvIHRoZSBIb3N0IEFkYXB0ZXIgb3IgVGFyZ2V0IERldmljZSkuICBOb3RlCit0aGF0IGV4cGxpY2l0bHkgZW5hYmxpbmcgVGFnZ2VkIFF1ZXVpbmcgbWF5IGxlYWQgdG8gcHJvYmxlbXM7IHRoZSBvcHRpb24gdG8KK2VuYWJsZSBvciBkaXNhYmxlIFRhZ2dlZCBRdWV1aW5nIGlzIHByb3ZpZGVkIHByaW1hcmlseSB0byBhbGxvdyBkaXNhYmxpbmcKK1RhZ2dlZCBRdWV1aW5nIG9uIFRhcmdldCBEZXZpY2VzIHRoYXQgZG8gbm90IGltcGxlbWVudCBpdCBjb3JyZWN0bHkuICBUaGUKK2ZvbGxvd2luZyBvcHRpb25zIGFyZSBhdmFpbGFibGU6CisKK1F1ZXVlRGVwdGg6PGludGVnZXI+CisKKyAgVGhlICJRdWV1ZURlcHRoOiIgb3IgUUQ6IiBvcHRpb24gc3BlY2lmaWVzIHRoZSBRdWV1ZSBEZXB0aCB0byB1c2UgZm9yIGFsbAorICBUYXJnZXQgRGV2aWNlcyB0aGF0IHN1cHBvcnQgVGFnZ2VkIFF1ZXVpbmcsIGFzIHdlbGwgYXMgdGhlIG1heGltdW0gUXVldWUKKyAgRGVwdGggZm9yIGRldmljZXMgdGhhdCBkbyBub3Qgc3VwcG9ydCBUYWdnZWQgUXVldWluZy4gIElmIG5vIFF1ZXVlIERlcHRoCisgIG9wdGlvbiBpcyBwcm92aWRlZCwgdGhlIFF1ZXVlIERlcHRoIHdpbGwgYmUgZGV0ZXJtaW5lZCBhdXRvbWF0aWNhbGx5IGJhc2VkCisgIG9uIHRoZSBIb3N0IEFkYXB0ZXIncyBUb3RhbCBRdWV1ZSBEZXB0aCBhbmQgdGhlIG51bWJlciwgdHlwZSwgc3BlZWQsIGFuZAorICBjYXBhYmlsaXRpZXMgb2YgdGhlIGRldGVjdGVkIFRhcmdldCBEZXZpY2VzLiAgRm9yIEhvc3QgQWRhcHRlcnMgdGhhdAorICByZXF1aXJlIElTQSBCb3VuY2UgQnVmZmVycywgdGhlIFF1ZXVlIERlcHRoIGlzIGF1dG9tYXRpY2FsbHkgc2V0IGJ5IGRlZmF1bHQKKyAgdG8gQnVzTG9naWNfVGFnZ2VkUXVldWVEZXB0aEJCIG9yIEJ1c0xvZ2ljX1VudGFnZ2VkUXVldWVEZXB0aEJCIHRvIGF2b2lkCisgIGV4Y2Vzc2l2ZSBwcmVhbGxvY2F0aW9uIG9mIERNQSBCb3VuY2UgQnVmZmVyIG1lbW9yeS4gIFRhcmdldCBEZXZpY2VzIHRoYXQKKyAgZG8gbm90IHN1cHBvcnQgVGFnZ2VkIFF1ZXVpbmcgYWx3YXlzIGhhdmUgdGhlaXIgUXVldWUgRGVwdGggc2V0IHRvCisgIEJ1c0xvZ2ljX1VudGFnZ2VkUXVldWVEZXB0aCBvciBCdXNMb2dpY19VbnRhZ2dlZFF1ZXVlRGVwdGhCQiwgdW5sZXNzIGEKKyAgbG93ZXIgUXVldWUgRGVwdGggb3B0aW9uIGlzIHByb3ZpZGVkLiAgQSBRdWV1ZSBEZXB0aCBvZiAxIGF1dG9tYXRpY2FsbHkKKyAgZGlzYWJsZXMgVGFnZ2VkIFF1ZXVpbmcuCisKK1F1ZXVlRGVwdGg6WzxpbnRlZ2VyPiw8aW50ZWdlcj4uLi5dCisKKyAgVGhlICJRdWV1ZURlcHRoOlsuLi5dIiBvciAiUUQ6Wy4uLl0iIG9wdGlvbiBzcGVjaWZpZXMgdGhlIFF1ZXVlIERlcHRoCisgIGluZGl2aWR1YWxseSBmb3IgZWFjaCBUYXJnZXQgRGV2aWNlLiAgSWYgYW4gPGludGVnZXI+IGlzIG9taXR0ZWQsIHRoZQorICBhc3NvY2lhdGVkIFRhcmdldCBEZXZpY2Ugd2lsbCBoYXZlIGl0cyBRdWV1ZSBEZXB0aCBzZWxlY3RlZCBhdXRvbWF0aWNhbGx5LgorCitUYWdnZWRRdWV1aW5nOkRlZmF1bHQKKworICBUaGUgIlRhZ2dlZFF1ZXVpbmc6RGVmYXVsdCIgb3IgIlRROkRlZmF1bHQiIG9wdGlvbiBwZXJtaXRzIFRhZ2dlZCBRdWV1aW5nCisgIGJhc2VkIG9uIHRoZSBmaXJtd2FyZSB2ZXJzaW9uIG9mIHRoZSBCdXNMb2dpYyBIb3N0IEFkYXB0ZXIgYW5kIGJhc2VkIG9uCisgIHdoZXRoZXIgdGhlIFF1ZXVlIERlcHRoIGFsbG93cyBxdWV1aW5nIG11bHRpcGxlIGNvbW1hbmRzLgorCitUYWdnZWRRdWV1aW5nOkVuYWJsZQorCisgIFRoZSAiVGFnZ2VkUXVldWluZzpFbmFibGUiIG9yICJUUTpFbmFibGUiIG9wdGlvbiBlbmFibGVzIFRhZ2dlZCBRdWV1aW5nIGZvcgorICBhbGwgVGFyZ2V0IERldmljZXMgb24gdGhpcyBIb3N0IEFkYXB0ZXIsIG92ZXJyaWRpbmcgYW55IGxpbWl0YXRpb24gdGhhdAorICB3b3VsZCBvdGhlcndpc2UgYmUgaW1wb3NlZCBiYXNlZCBvbiB0aGUgSG9zdCBBZGFwdGVyIGZpcm13YXJlIHZlcnNpb24uCisKK1RhZ2dlZFF1ZXVpbmc6RGlzYWJsZQorCisgIFRoZSAiVGFnZ2VkUXVldWluZzpEaXNhYmxlIiBvciAiVFE6RGlzYWJsZSIgb3B0aW9uIGRpc2FibGVzIFRhZ2dlZCBRdWV1aW5nCisgIGZvciBhbGwgVGFyZ2V0IERldmljZXMgb24gdGhpcyBIb3N0IEFkYXB0ZXIuCisKK1RhZ2dlZFF1ZXVpbmc6PFRhcmdldC1TcGVjPgorCisgIFRoZSAiVGFnZ2VkUXVldWluZzo8VGFyZ2V0LVNwZWM+IiBvciAiVFE6PFRhcmdldC1TcGVjPiIgb3B0aW9uIGNvbnRyb2xzCisgIFRhZ2dlZCBRdWV1aW5nIGluZGl2aWR1YWxseSBmb3IgZWFjaCBUYXJnZXQgRGV2aWNlLiAgPFRhcmdldC1TcGVjPiBpcyBhCisgIHNlcXVlbmNlIG9mICJZIiwgIk4iLCBhbmQgIlgiIGNoYXJhY3RlcnMuICAiWSIgZW5hYmxlcyBUYWdnZWQgUXVldWluZywgIk4iCisgIGRpc2FibGVzIFRhZ2dlZCBRdWV1aW5nLCBhbmQgIlgiIGFjY2VwdHMgdGhlIGRlZmF1bHQgYmFzZWQgb24gdGhlIGZpcm13YXJlCisgIHZlcnNpb24uICBUaGUgZmlyc3QgY2hhcmFjdGVyIHJlZmVycyB0byBUYXJnZXQgRGV2aWNlIDAsIHRoZSBzZWNvbmQgdG8KKyAgVGFyZ2V0IERldmljZSAxLCBhbmQgc28gb247IGlmIHRoZSBzZXF1ZW5jZSBvZiAiWSIsICJOIiwgYW5kICJYIiBjaGFyYWN0ZXJzCisgIGRvZXMgbm90IGNvdmVyIGFsbCB0aGUgVGFyZ2V0IERldmljZXMsIHVuc3BlY2lmaWVkIGNoYXJhY3RlcnMgYXJlIGFzc3VtZWQKKyAgdG8gYmUgIlgiLgorCitUaGUgQnVzTG9naWMgRHJpdmVyIE1pc2NlbGxhbmVvdXMgT3B0aW9ucyBjb21wcmlzZSB0aGUgZm9sbG93aW5nOgorCitCdXNTZXR0bGVUaW1lOjxzZWNvbmRzPgorCisgIFRoZSAiQnVzU2V0dGxlVGltZToiIG9yICJCU1Q6IiBvcHRpb24gc3BlY2lmaWVzIHRoZSBCdXMgU2V0dGxlIFRpbWUgaW4KKyAgc2Vjb25kcy4gIFRoZSBCdXMgU2V0dGxlIFRpbWUgaXMgdGhlIGFtb3VudCBvZiB0aW1lIHRvIHdhaXQgYmV0d2VlbiBhIEhvc3QKKyAgQWRhcHRlciBIYXJkIFJlc2V0IHdoaWNoIGluaXRpYXRlcyBhIFNDU0kgQnVzIFJlc2V0IGFuZCBpc3N1aW5nIGFueSBTQ1NJCisgIENvbW1hbmRzLiAgSWYgdW5zcGVjaWZpZWQsIGl0IGRlZmF1bHRzIHRvIEJ1c0xvZ2ljX0RlZmF1bHRCdXNTZXR0bGVUaW1lLgorCitJbmhpYml0VGFyZ2V0SW5xdWlyeQorCisgIFRoZSAiSW5oaWJpdFRhcmdldElucXVpcnkiIG9wdGlvbiBpbmhpYml0cyB0aGUgZXhlY3V0aW9uIG9mIGFuIElucXVpcmUKKyAgVGFyZ2V0IERldmljZXMgb3IgSW5xdWlyZSBJbnN0YWxsZWQgRGV2aWNlcyBjb21tYW5kIG9uIE11bHRpTWFzdGVyIEhvc3QKKyAgQWRhcHRlcnMuICBUaGlzIG1heSBiZSBuZWNlc3Nhcnkgd2l0aCBzb21lIG9sZGVyIFRhcmdldCBEZXZpY2VzIHRoYXQgZG8gbm90CisgIHJlc3BvbmQgY29ycmVjdGx5IHdoZW4gTG9naWNhbCBVbml0cyBhYm92ZSAwIGFyZSBhZGRyZXNzZWQuCisKK1RoZSBCdXNMb2dpYyBEcml2ZXIgRGVidWdnaW5nIE9wdGlvbnMgY29tcHJpc2UgdGhlIGZvbGxvd2luZzoKKworVHJhY2VQcm9iZQorCisgIFRoZSAiVHJhY2VQcm9iZSIgb3B0aW9uIGVuYWJsZXMgdHJhY2luZyBvZiBIb3N0IEFkYXB0ZXIgUHJvYmluZy4KKworVHJhY2VIYXJkd2FyZVJlc2V0CisKKyAgVGhlICJUcmFjZUhhcmR3YXJlUmVzZXQiIG9wdGlvbiBlbmFibGVzIHRyYWNpbmcgb2YgSG9zdCBBZGFwdGVyIEhhcmR3YXJlCisgIFJlc2V0LgorCitUcmFjZUNvbmZpZ3VyYXRpb24KKworICBUaGUgIlRyYWNlQ29uZmlndXJhdGlvbiIgb3B0aW9uIGVuYWJsZXMgdHJhY2luZyBvZiBIb3N0IEFkYXB0ZXIKKyAgQ29uZmlndXJhdGlvbi4KKworVHJhY2VFcnJvcnMKKworICBUaGUgIlRyYWNlRXJyb3JzIiBvcHRpb24gZW5hYmxlcyB0cmFjaW5nIG9mIFNDU0kgQ29tbWFuZHMgdGhhdCByZXR1cm4gYW4KKyAgZXJyb3IgZnJvbSB0aGUgVGFyZ2V0IERldmljZS4gIFRoZSBDREIgYW5kIFNlbnNlIERhdGEgd2lsbCBiZSBwcmludGVkIGZvcgorICBlYWNoIFNDU0kgQ29tbWFuZCB0aGF0IGZhaWxzLgorCitEZWJ1ZworCisgIFRoZSAiRGVidWciIG9wdGlvbiBlbmFibGVzIGFsbCBkZWJ1Z2dpbmcgb3B0aW9ucy4KKworVGhlIGZvbGxvd2luZyBleGFtcGxlcyBkZW1vbnN0cmF0ZSBzZXR0aW5nIHRoZSBRdWV1ZSBEZXB0aCBmb3IgVGFyZ2V0IERldmljZXMKKzEgYW5kIDIgb24gdGhlIGZpcnN0IGhvc3QgYWRhcHRlciB0byA3IGFuZCAxNSwgdGhlIFF1ZXVlIERlcHRoIGZvciBhbGwgVGFyZ2V0CitEZXZpY2VzIG9uIHRoZSBzZWNvbmQgaG9zdCBhZGFwdGVyIHRvIDMxLCBhbmQgdGhlIEJ1cyBTZXR0bGUgVGltZSBvbiB0aGUKK3NlY29uZCBob3N0IGFkYXB0ZXIgdG8gMzAgc2Vjb25kcy4KKworTGludXggS2VybmVsIENvbW1hbmQgTGluZToKKworICBsaW51eCBCdXNMb2dpYz1RdWV1ZURlcHRoOlssNywxNV07UXVldWVEZXB0aDozMSxCdXNTZXR0bGVUaW1lOjMwCisKK0xJTE8gTGludXggQm9vdCBMb2FkZXIgKGluIC9ldGMvbGlsby5jb25mKToKKworICBhcHBlbmQgPSAiQnVzTG9naWM9UXVldWVEZXB0aDpbLDcsMTVdO1F1ZXVlRGVwdGg6MzEsQnVzU2V0dGxlVGltZTozMCIKKworSU5TTU9EIExvYWRhYmxlIEtlcm5lbCBNb2R1bGUgSW5zdGFsbGF0aW9uIEZhY2lsaXR5OgorCisgIGluc21vZCBCdXNMb2dpYy5vIFwKKyAgICAgICdCdXNMb2dpYz0iUXVldWVEZXB0aDpbLDcsMTVdO1F1ZXVlRGVwdGg6MzEsQnVzU2V0dGxlVGltZTozMCInCisKK05PVEU6IE1vZHVsZSBVdGlsaXRpZXMgMi4xLjcxIG9yIGxhdGVyIGlzIHJlcXVpcmVkIGZvciBjb3JyZWN0IHBhcnNpbmcKKyAgICAgIG9mIGRyaXZlciBvcHRpb25zIGNvbnRhaW5pbmcgY29tbWFzLgorCisKKwkJCSAgICAgIERSSVZFUiBJTlNUQUxMQVRJT04KKworVGhpcyBkaXN0cmlidXRpb24gd2FzIHByZXBhcmVkIGZvciBMaW51eCBrZXJuZWwgdmVyc2lvbiAyLjAuMzUsIGJ1dCBzaG91bGQgYmUKK2NvbXBhdGlibGUgd2l0aCAyLjAuNCBvciBhbnkgbGF0ZXIgMi4wIHNlcmllcyBrZXJuZWwuCisKK1RvIGluc3RhbGwgdGhlIG5ldyBCdXNMb2dpYyBTQ1NJIGRyaXZlciwgeW91IG1heSB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kcywKK3JlcGxhY2luZyAiL3Vzci9zcmMiIHdpdGggd2hlcmV2ZXIgeW91IGtlZXAgeW91ciBMaW51eCBrZXJuZWwgc291cmNlIHRyZWU6CisKKyAgY2QgL3Vzci9zcmMKKyAgdGFyIC14dnpmIEJ1c0xvZ2ljLTIuMC4xNS50YXIuZ3oKKyAgbXYgUkVBRE1FLiogTElDRU5TRS4qIEJ1c0xvZ2ljLltjaF0gRmxhc2hQb2ludC5jIGxpbnV4L2RyaXZlcnMvc2NzaQorICBwYXRjaCAtcDAgPCBCdXNMb2dpYy5wYXRjaCAob25seSBmb3IgMi4wLjMzIGFuZCBiZWxvdykKKyAgY2QgbGludXgKKyAgbWFrZSBjb25maWcKKyAgbWFrZSB6SW1hZ2UKKworVGhlbiBpbnN0YWxsICJhcmNoL3g4Ni9ib290L3pJbWFnZSIgYXMgeW91ciBzdGFuZGFyZCBrZXJuZWwsIHJ1biBsaWxvIGlmCithcHByb3ByaWF0ZSwgYW5kIHJlYm9vdC4KKworCisJCSAgICAgIEJVU0xPR0lDIEFOTk9VTkNFTUVOVFMgTUFJTElORyBMSVNUCisKK1RoZSBCdXNMb2dpYyBBbm5vdW5jZW1lbnRzIE1haWxpbmcgTGlzdCBwcm92aWRlcyBhIGZvcnVtIGZvciBpbmZvcm1pbmcgTGludXgKK3VzZXJzIG9mIG5ldyBkcml2ZXIgcmVsZWFzZXMgYW5kIG90aGVyIGFubm91bmNlbWVudHMgcmVnYXJkaW5nIExpbnV4IHN1cHBvcnQKK2ZvciBCdXNMb2dpYyBTQ1NJIEhvc3QgQWRhcHRlcnMuICBUbyBqb2luIHRoZSBtYWlsaW5nIGxpc3QsIHNlbmQgYSBtZXNzYWdlIHRvCisiYnVzbG9naWMtYW5ub3VuY2UtcmVxdWVzdEBkYW5kZWxpb24uY29tIiB3aXRoIHRoZSBsaW5lICJzdWJzY3JpYmUiIGluIHRoZQorbWVzc2FnZSBib2R5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL0NoYW5nZUxvZy4xOTkyLTE5OTcgYi9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLjE5OTItMTk5NwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmFhZDdlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL0NoYW5nZUxvZy4xOTkyLTE5OTcKQEAgLTAsMCArMSwyMDIzIEBACitTYXQgSmFuIDE4IDE1OjUxOjQ1IDE5OTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHRhbXUuZWR1PgorCisJKiBEb24ndCBwbGF5IHdpdGggdXNhZ2VfY291bnQgZGlyZWN0bHksIGluc3RlYWQgaGFuZCBhcm91bmQKKwl0aGUgbW9kdWxlIGhlYWRlciBhbmQgdXNlIHRoZSBtb2R1bGUgbWFjcm9zLgorCitGcmkgTWF5IDE3IDAwOjAwOjAwIDE5OTYgIExlb25hcmQgTi4gWnVia29mZiA8bG56QGRhbmRlbGlvbi5jb20+CisKKwkqIEJ1c0xvZ2ljIERyaXZlciBWZXJzaW9uIDIuMC4zIFJlbGVhc2VkLgorCitUdWUgQXByIDE2IDIxOjAwOjAwIDE5OTYgIExlb25hcmQgTi4gWnVia29mZiA8bG56QGRhbmRlbGlvbi5jb20+CisKKwkqIEJ1c0xvZ2ljIERyaXZlciBWZXJzaW9uIDEuMy4yIFJlbGVhc2VkLgorCitTdW4gRGVjIDMxIDIzOjI2OjAwIDE5OTUgIExlb25hcmQgTi4gWnVia29mZiA8bG56QGRhbmRlbGlvbi5jb20+CisKKwkqIEJ1c0xvZ2ljIERyaXZlciBWZXJzaW9uIDEuMy4xIFJlbGVhc2VkLgorCitGcmkgTm92IDEwIDE1OjI5OjQ5IDE5OTUgIExlb25hcmQgTi4gWnVia29mZiA8bG56QGRhbmRlbGlvbi5jb20+CisKKwkqIFJlbGVhc2VkIG5ldyBCdXNMb2dpYyBkcml2ZXIuCisKK1dlZCBBdWcgIDkgMjI6Mzc6MDQgMTk5NSAgQW5kcmllcyBCcm91d2VyICA8YWViQGN3aS5ubD4KKworCUFzIGEgcHJlcGFyYXRpb24gZm9yIG5ldyBkZXZpY2UgY29kZSwgc2VwYXJhdGVkIHRoZSB2YXJpb3VzCisJZnVuY3Rpb25zIHRoZSByZXF1ZXN0LT5kZXYgZmllbGQgaGFkIGludG8gdGhlIGRldmljZSBwcm9wZXIsCisJcmVxdWVzdC0+cnFfZGV2IGFuZCBhIHN0YXR1cyBmaWVsZCByZXF1ZXN0LT5ycV9zdGF0dXMuCisKKwlUaGUgMm5kIGFyZ3VtZW50IG9mIGJpb3NfcGFyYW0gaXMgbm93IGEga2Rldl90LgorCitXZWQgSnVsIDE5IDEwOjQzOjE1IDE5OTUgIE1pY2hhZWwgTmV1ZmZlciAgPG5ldWZmZXJAZ29vZnkuemR2LnVuaS1tYWluei5kZT4KKworICAgICAgICAqIHNjc2kuYyAoc2NzaV9wcm9jX2luZm8pOiAvcHJvYy9zY3NpL3Njc2kgbm93IGFsc28gbGlzdHMgYWxsCisJYXR0YWNoZWQgZGV2aWNlcy4KKworCSogc2NzaV9wcm9jLmMgKHByb2NfcHJpbnRfc2NzaWRldmljZSk6IEFkZGVkLiBVc2VkIGJ5IHNjc2kuYyBhbmQKKwllYXRhX2RtYV9wcm9jLmMgdG8gcHJvZHVjZSBzb21lIGRldmljZSBpbmZvIGZvciAvcHJvYy9zY3NpLgorCisJKiBlYXRhX2RtYS5jIChlYXRhX3F1ZXVlKShlYXRhX2ludF9oYW5kbGVyKShlYXRhX3Njc2lfZG9uZSk6CisJQ2hhbmdlZCBoYW5kbGluZyBvZiBpbnRlcm5hbCBTQ1NJIGNvbW1hbmRzIHNlbmQgdG8gdGhlIEhCQS4KKworCitXZWQgSnVsIDE5IDEwOjA5OjE3IDE5OTUgIE1pY2hhZWwgTmV1ZmZlciAgPG5ldWZmZXJAZ29vZnkuemR2LnVuaS1tYWluei5kZT4KKworCSogTGludXggMS4zLjExIHJlbGVhc2VkLgorCisJKiBlYXRhX2RtYS5jIChlYXRhX3F1ZXVlKShlYXRhX2ludF9oYW5kbGVyKTogQWRkZWQgY29kZSB0byBkbworCWNvbW1hbmQgbGF0ZW5jeSBtZWFzdXJlbWVudHMgaWYgcmVxdWVzdGVkIGJ5IHJvb3QgdGhyb3VnaAorCS9wcm9jL3Njc2kgaW50ZXJmYWNlLgorCVRocm91Z2hvdXQgVXNlIEhaIGNvbnN0YW50IGZvciB0aW1lIHJlZmVyZW5jZXMuCisKKwkqIGVhdGFfcGlvLmM6IFVzZSBIWiBjb25zdGFudCBmb3IgdGltZSByZWZlcmVuY2VzLgorCisJKiBhaWM3eHh4LmMsIGFpYzd4eHguaCwgYWljN3h4eF9hc20uYzogQ2hhbmdlZCBjb3B5cmlnaHQgZnJvbSBCU0QKKwl0byBHTlUgc3R5bGUuCisKKwkqIHNjc2kuaDogQWRkZWQgUkVBRF8xMiBjb21tYW5kIG9wY29kZSBjb25zdGFudAorCitXZWQgSnVsIDE5IDA5OjI1OjMwIDE5OTUgIE1pY2hhZWwgTmV1ZmZlciA8bmV1ZmZlckBnb29meS56ZHYudW5pLW1haW56LmRlPgorCisJKiBMaW51eCAxLjMuMTAgcmVsZWFzZWQuCisKKwkqIHNjc2lfcHJvYy5jIChkaXNwYXRjaF9zY3NpX2luZm8pOiBSZW1vdmVkIHVudXNlZCB2YXJpYWJsZS4KKworV2VkIEp1bCAxOSAwOToyNTozMCAxOTk1ICBNaWNoYWVsIE5ldWZmZXIgIDxuZXVmZmVyQGdvb2Z5Lnpkdi51bmktbWFpbnouZGU+CisKKwkqIExpbnV4IDEuMy45IHJlbGVhc2VkLgorCisJKiBzY3NpLmMgQmxhY2tsaXN0IGNvbmNlcHQgZXhwYW5kZWQgdG8gJ3N1cHBvcnQnIG1vcmUgZGV2aWNlCisJZGVmaWNpZW5jaWVzLiBibGFja2xpc3RbXSByZW5hbWVkIHRvIGRldmljZV9saXN0W10KKwkoc2Nhbl9zY3Npcyk6IENvZGUgY2xlYW51cC4KKworCSogc2NzaV9kZWJ1Zy5jIChzY3NpX2RlYnVnX3Byb2NfaW5mbyk6IEFkZGVkIHN1cHBvcnQgdG8gY29udHJvbAorCWRldmljZSBsb2NrdXAgc2ltdWxhdGlvbiB2aWEgL3Byb2Mvc2NzaSBpbnRlcmZhY2UuCisKKworV2VkIEp1bCAxOSAwOToyMjozNCAxOTk1ICBNaWNoYWVsIE5ldWZmZXIgIDxuZXVmZmVyQGdvb2Z5Lnpkdi51bmktbWFpbnouZGU+CisKKwkqIExpbnV4IDEuMy43IHJlbGVhc2VkLgorCisJKiBzY3NpX3Byb2MuYzogRml4ZWQgYSBudW1iZXIgb2YgYnVncyBpbiBkaXJlY3RvcnkgaGFuZGxpbmcKKworV2VkIEp1bCAxOSAwOToxODoyOCAxOTk1ICBNaWNoYWVsIE5ldWZmZXIgIDxuZXVmZmVyQGdvb2Z5Lnpkdi51bmktbWFpbnouZGU+CisKKwkqIExpbnV4IDEuMy41IHJlbGVhc2VkLgorCisJKiBOYXRpdmUgd2lkZSwgbXVsdGljaGFubmVsIGFuZCAvcHJvYy9zY3NpIHN1cHBvcnQgbm93IGluIG9mZmljaWFsCisJa2VybmVsIGRpc3RyaWJ1dGlvbi4KKworICAgICAgICAqIHNjc2kuYy9oLCBob3N0cy5jL2ggZXQgYWwgcmVpbmRlbnRlZCB0byBpbmNyZWFzZSByZWFkYWJpbGl0eQorCShlc3BlY2lhbGx5IG9uIDgwIGNvbHVtbiB3aWRlIHRlcm1pbmFscykuCisKKwkqIHNjc2kuYywgc2NzaV9wcm9jLmMsIC4uLy4uL2ZzL3Byb2MvaW5vZGUuYzogQWRkZWQKKwkvcHJvYy9zY3NpL3Njc2kgd2hpY2ggYWxsb3dzIHJvb3QgdG8gc2NhbiBmb3IgaG90cGx1Z2dlZCBkZXZpY2VzLgorCisJKiBzY3NpLmMgKHNjc2lfcHJvY19pbmZvKTogQWRkZWQsIHRvIHN1cHBvcnQgL3Byb2Mvc2NzaS9zY3NpLgorCShzY2FuX3Njc2lzKTogQWRkZWQgc29tZSAnc3BhZ2hldHRpJyBjb2RlIHRvIGFsbG93IHNjYW5uaW5nIGZvcgorCXNpbmdsZSBkZXZpY2VzLgorCQorCitUaHUgSnVuIDIwIDE1OjIwOjI3IDE5OTUgIE1pY2hhZWwgTmV1ZmZlciAgPG5ldWZmZXJAZ29vZnkuemR2LnVuaS1tYWluei5kZT4KKworICAgICAgICAqIHByb2MuYzogUmVuYW1lZCB0byBzY3NpX3Byb2MuYworCitNb24gSnVuIDEyIDIwOjMyOjQ1IDE5OTUgIE1pY2hhZWwgTmV1ZmZlciAgPG5ldWZmZXJAZ29vZnkuemR2LnVuaS1tYWluei5kZT4KKworCSogTGludXggMS4zLjAgcmVsZWFzZWQuCisKK01vbiBNYXkgMTUgMTk6MzM6MTQgMTk5NSAgTWljaGFlbCBOZXVmZmVyICA8bmV1ZmZlckBnb29meS56ZHYudW5pLW1haW56LmRlPgorCisJKiBzY3NpLmM6IEFkZGVkIG5hdGl2ZSBtdWx0aWNoYW5uZWwgYW5kIHdpZGUgc2NzaSBzdXBwb3J0LgorCisJKiBwcm9jLmMgKGRpc3BhdGNoX3Njc2lfaW5mbykgKGJ1aWxkX3Byb2NfZGlyX2hiYV9lbnRyaWVzKToKKwlVcGRhdGVkIC9wcm9jL3Njc2kgaW50ZXJmYWNlLgorCitUaHUgTWF5ICA0IDE3OjU4OjQ4IDE5OTUgIE1pY2hhZWwgTmV1ZmZlciAgPG5ldWZmZXJAZ29vZnkuemR2LnVuaS1tYWluei5kZT4KKworCSogc2QuYyAocmVxdWV1ZV9zZF9yZXF1ZXN0KTogWmVybyBvdXQgdGhlIHNjYXR0ZXJsaXN0IG9ubHkgaWYKKwlzY3NpX21hbGxvYyByZXR1cm5lZCBtZW1vcnkgZm9yIGl0LgorCisJKiBlYXRhX2RtYS5jIChyZWdpc3Rlcl9IQkEpIChlYXRhX3F1ZXVlKTogQWRkIHN1cHBvcnQgZm9yCisJbGFyZ2Ugc2NhdHRlci9nYXRoZXIgdGFibGVzIGFuZCBzZXQgdXNlX2NsdXN0ZXJpbmcgYWNjb3JkaW5nbHkKKworCSogaG9zdHMuYzogTWFrZSB1c2VfY2x1c3RlcmluZyBjaGFuZ2VhYmxlIGluIHRoZSBTY3NpX0hvc3Qgc3RydWN0dXJlLgorCitXZWQgQXByIDEyIDE1OjI1OjUyIDE5OTUgIEVyaWMgWW91bmdkYWxlICAoZXJpY0BhbmRhbnRlKQorCisJKiBMaW51eCAxLjIuNSByZWxlYXNlZC4KKworCSogYnVzbG9naWMuYzogVXBkYXRlIHRvIHZlcnNpb24gMS4xNSAoRnJvbSBMZW9uYXJkIE4uIFp1YmtvZmYpLgorCUZpeGVkIGludGVycnVwdCByb3V0aW5lIHRvIGF2b2lkIHJhY2VzIHdoZW4gaGFuZGxpbmcgbXVsdGlwbGUKKwljb21wbGV0ZSBjb21tYW5kcyBwZXIgaW50ZXJydXB0LiAgU2VlbXMgdG8gY29tZSB1cCB3aXRoIGZhc3RlcgorCWNhcmRzLgorCisJKiBlYXRhX2RtYS5jOiBVcGRhdGUgdG8gMi4zLjVyLiBNb2R1bGFyaXplLiBJbXByb3ZlZCBlcnJvciBoYW5kbGluZworICAgICAgICB0aHJvdWdob3V0IGFuZCBmaXhlZCBidWcgaW50ZXJydXB0IHJvdXRpbmUgd2hpY2ggcmVzdWx0ZWQgaW4gc2hpZnRlZAorICAgICAgICBzdGF0dXMgYnl0ZXMuIEFkZGVkIGJsaW5rIExFRCBzdGF0ZSBjaGVja3MgZm9yIElTQSBhbmQgRUlTQSBIQkFzLgorICAgICAgICBNZW1vcnkgbWFuYWdlbWVudCBidWcgc2VlbXMgdG8gaGF2ZSBkaXNhcHBlYXJlZCA9PT4gaW5jcmVhc2luZworICAgICAgICBDX1BfTF9DVVJSRU5UX01BWCB0byAxNiBmb3Igbm93LiBEZWNyZWFzaW5nIENfUF9MX0RJViB0byAzIGZvcgorICAgICAgICBwZXJmb3JtYW5jZSByZWFzb25zLgorCisJKiBzY3NpLmM6IElmIHdlIGdldCBhIEZNSywgRU9NLCBvciBJTEkgd2hlbiBhdHRlbXB0aW5nIHRvIHNjYW4KKwl0aGUgYnVzLCBhc3N1bWUgdGhhdCBpdCB3YXMganVzdCBub2lzZSBvbiB0aGUgYnVzLCBhbmQgaWdub3JlCisJdGhlIGRldmljZS4KKworCSogc2NzaS5oOiBVcGRhdGUgYW5kIGFkZCBhIGJ1bmNoIG9mIG1pc3NpbmcgY29tbWFuZHMgd2hpY2ggd2UKKwl3ZXJlIG5ldmVyIHVzaW5nLgorCisJKiBzZC5jOiBVc2UgcmVzdG9yZV9mbGFncyBpbiBkb19zZF9yZXF1ZXN0IC0gdGhpcyBtYXkgcmVzdWx0IGluCisJbGF0ZW5jeSBjb25kaXRpb25zLCBidXQgaXQgZ2V0cyByaWQgb2YgcmFjZXMgYW5kIGNyYXNoZXMuCisJRG8gbm90IHNhdmUgZmxhZ3MgYWdhaW4gd2hlbiBzZWFyY2hpbmcgZm9yIGEgc2Vjb25kIGNvbW1hbmQgdG8KKwlxdWV1ZS4KKworCSogc3QuYzogVXNlIGJ5dGVzLCBub3QgU1RQLT5idWZmZXItPmJ1ZmZlcl9zaXplIHdoZW4gcmVhZGluZworCWZyb20gdGFwZS4KKworCitUdWUgQXByICA0IDA5OjQyOjA4IDE5OTUgIEVyaWMgWW91bmdkYWxlICAoZXJpY0BhbmRhbnRlKQorCisJKiBMaW51eCAxLjIuNCByZWxlYXNlZC4KKworCSogc3QuYzogRml4IHR5cG8gLSByZXN0b3Jpbmcgd3JvbmcgZmxhZ3MuCisKK1dlZCBNYXIgMjkgMDY6NTU6MTIgMTk5NSAgRXJpYyBZb3VuZ2RhbGUgIChlcmljQGFuZGFudGUpCisKKwkqIExpbnV4IDEuMi4zIHJlbGVhc2VkLgorCisJKiBzdC5jOiBQZXJmb3JtIHNvbWUgd2FpdGluZyBvcGVyYXRpb25zIHdpdGggaW50ZXJydXB0cyBvZmYuCisJSXMgdGhpcyBjb3JyZWN0Pz8/CisKK1dlZCBNYXIgMjIgMTA6MzQ6MjYgMTk5NSAgRXJpYyBZb3VuZ2RhbGUgIChlcmljQGFuZGFudGUpCisKKwkqIExpbnV4IDEuMi4yIHJlbGVhc2VkLgorCisJKiBhaGExNTJ4LmM6IE1vZHVsYXJpemUuICBBZGQgc3VwcG9ydCBmb3IgUENNQ0lBLgorCisJKiBlYXRhLmM6IFVwZGF0ZSB0byB2ZXJzaW9uIDIuMC4gIEZpeGVkIGJ1ZyBwcmV2ZW50aW5nIG1lZGlhCisJZGV0ZWN0aW9uLiAgSWYgc2NzaV9yZWdpc3Rlcl9ob3N0IHJldHVybnMgTlVMTCwgZmFpbCBncmFjZWZ1bGx5LgorCisJKiBzY3NpLmM6IERldGVjdCBhcyBORUMgKGZvciBwaG90by1jZCBwdXJwb3NlcykgZm9yIHRoZSA4NAorCWFuZCAyNSBtb2RlbHMgYXMgIk5FQ19PTERDRFIiLgorCisJKiBzY3NpLmg6IEFkZCBkZWZpbmUgZm9yIE5FQ19PTERDRFIKKworCSogc3IuYzogQWRkIGhhbmRsaW5nIGZvciBORUNfT0xEQ0RSLiAgVHJlYXQgYXMgdW5rbm93bi4KKworCSogdTE0LTM0Zi5jOiBVcGRhdGUgdG8gdmVyc2lvbiAyLjAuICBGaXhlZCBzYW1lIGJ1ZyBhcyBpbgorCWVhdGEuYy4KKworCitNb24gTWFyICA2IDExOjExOjIwIDE5OTUgIEVyaWMgWW91bmdkYWxlICAoZXJpY0BhbmRhbnRlKQorCisJKiBMaW51eCAxLjIuMCByZWxlYXNlZC4gIFllYWghISEKKworCSogTWlub3Igc3BlbGxpbmcvcHVuY3R1YXRpb24gY2hhbmdlcyB0aHJvdWdob3V0LiAgTm90aGluZworCXN1YnN0YW50aXZlLgorCitNb24gRmViIDIwIDIxOjMzOjAzIDE5OTUgIEVyaWMgWW91bmdkYWxlICAoZXJpY0BhbmRhbnRlKQorCisJKiBMaW51eCAxLjEuOTUgcmVsZWFzZWQuCisKKwkqIHFsb2dpYy5jOiBVcGRhdGUgdG8gdmVyc2lvbiAwLjQxLgorCisJKiBzZWFnYXRlLmM6IENoYW5nZSBzb21lIG1lc3NhZ2UgdG8gYmUgbW9yZSBkZXNjcmlwdGl2ZSBhYm91dCB3aGF0CisJd2UgZGV0ZWN0ZWQuCisKKwkqIHNyLmM6IHNwZWxsaW5nL3doaXRlc3BhY2UgY2hhbmdlcy4KKworTW9uIEZlYiAyMCAyMTozMzowMyAxOTk1ICBFcmljIFlvdW5nZGFsZSAgKGVyaWNAYW5kYW50ZSkKKworCSogTGludXggMS4xLjk0IHJlbGVhc2VkLgorCitNb24gRmViIDIwIDA4OjU3OjE3IDE5OTUgIEVyaWMgWW91bmdkYWxlICAoZXJpY0BhbmRhbnRlKQorCisJKiBMaW51eCAxLjEuOTMgcmVsZWFzZWQuCisKKwkqIGhvc3RzLmg6IENoYW5nZSBpb19wb3J0IHRvIGxvbmcgaW50IGZyb20gc2hvcnQuCisKKyAJKiA1M2M3LDh4eC5jOiBjcmFzaCBvbiBBRU4gZml4ZWQsIFNDU0kgcmVzZXQgaXMgbm8gbG9uZ2VyIGEgTk9QLAorIAkgIE5VTEwgcG9pbnRlciBwYW5pYyBvbiBvZGQgVURDcyBmaXhlZCwgdHdvIGJ1Z3MgaW4gZGlhZ25vc3RpYyBvdXRwdXQKKyAJICBmaXhlZCwgc2hvdWxkIGluaXRpYWxpemUgY29ycmVjdGx5IGlmIGxlZnQgcnVubmluZywgbm93IGxvYWRhYmxlLAorICAJICBuZXcgbWVtb3J5IGFsbG9jYXRpb24sIGV4dHJhbmVvdXMgZGlhZ25vc3RpYyBvdXRwdXQgc3VwcHJlc3NlZCwKKyAJICBzcGx4KCkgcmVwbGFjZWQgd2l0aCBzYXZlL3Jlc3RvcmUgZmxhZ3MuIFsgRHJldyBdCisKKwkqIGhvc3RzLmMsIGhvc3RzLmgsIHNjc2lfaW9jdGwuYywgc2QuYywgc2RfaW9jdGwuYywgc2cuYywgc3IuYywKKwlzcl9pb2N0bC5jOiBBZGQgc3BlY2lhbCBqdW5rIGF0IGVuZCB0aGF0IEVtYWNzIHdpbGwgdXNlIGZvcgorCWZvcm1hdHRpbmcgdGhlIGZpbGUuCisKKwkqIHFsb2dpYy5jOiBVcGRhdGUgdG8gdjAuNDBhLiAgSW1wcm92ZSBwYXJpdHkgaGFuZGxpbmcuCisKKwkqIHNjc2kuYzogQWRkIEhpdGFjaGkgREszMTJDIHRvIGJsYWNrbGlzdC4gIENoYW5nZSAifTsiIHRvICJ9IiBpbgorCW1hbnkgcGxhY2VzLiAgVXNlIHNjc2lfaW5pdF9tYWxsb2MgdG8gZ2V0IGNvbW1hbmQgYmxvY2sgLSBtYXkKKwluZWVkIHRoaXMgdG8gYmUgZG1hIGNvbXBhdGlibGUgZm9yIHNvbWUgaG9zdCBhZGFwdGVycy4KKwlSZXN0b3JlIGludGVycnVwdHMgYWZ0ZXIgdW5yZWdpc3RlcmluZyBhIGhvc3QuCisKKwkqIHNkLmM6IFVzZSBzdGkgaW5zdGVhZCBvZiByZXN0b3JlIGZsYWdzIC0gY2F1c2VzIGxhdGVuY3kgcHJvYmxlbXMuCisKKwkqIHNlYWdhdGUuYzogVXNlIGNvbnRyb2xsZXJfdHlwZSB0byBkZXRlcm1pbmUgc3RyaW5nIHVzZWQgd2hlbgorCXJlZ2lzdGVyaW5nIGlycS4KKworCSogc3IuYzogTW9yZSBwaG90by1jZCBoYWNrcyB0byBtYWtlIHN1cmUgd2UgZ2V0IHRoZSB4YSBzdHVmZiByaWdodC4KKwkqIHNyLmgsIHNyLmM6IENoYW5nZSBpc194YSB0byB4YV9mbGFncyBmaWVsZC4KKworCSogc3QuYzogRGlzYWJsZSByZXRyaWVzIGZvciB3cml0ZSBvcGVyYXRpb25zLgorCitXZWQgRmViIDE1IDEwOjUyOjU2IDE5OTUgIEVyaWMgWW91bmdkYWxlICAoZXJpY0BhbmRhbnRlKQorCisJKiBMaW51eCAxLjEuOTIgcmVsZWFzZWQuCisKKwkqIGVhdGEuYzogVXBkYXRlIHRvIDEuMTcuCisKKwkqIGVhdGFfZG1hLmM6IFVwZGF0ZSB0byAyLjMxYS4gQWRkIG1vcmUgc3VwcG9ydCBmb3IgL3Byb2Mvc2NzaS4KKyAgICAgICAgQ29udGludWluZyBtb2R1bGFyaXphdGlvbi4gTGVzcyBjcmFzaGVzIGJlY2F1c2Ugb2YgdGhlIGJ1ZyBpbiB0aGUKKyAgICAgICAgbWVtb3J5IG1hbmFnZW1lbnQgPT0+IGluY3JlYXNlIENfUF9MX0NVUlJFTlRfTUFYIHRvIDEwCisgICAgICAgIGFuZCBkZWNyZWFzZSBDX1BfTF9ESVYgdG8gNC4KKworCSogaG9zdHMuYzogSWYgd2UgcmVtb3ZlIGxhc3QgaG9zdCByZWdpc3RlcmVkLCByZXVzZSBob3N0IG51bWJlci4KKwlXaGVuIGZyZWVpbmcgbWVtb3J5IGZyb20gaG9zdCBiZWluZyBkZXJlZ2lzdGVyZWQsIGZyZWUgZXh0cmFfYnl0ZXMKKwl0b28uCisKKwkqIHNjc2kuYyAoc2Nhbl9zY3Npcyk6IG1lbXNldChTRHBudCwgMCkgYW5kIHNldCBTQ21kLmRldmljZSB0byBTRHBudC4KKwlDaGFuZ2UgbWVtb3J5IGFsbG9jYXRpb24gdG8gd29yayBhcm91bmQgYnVncyBpbiBfX2dldF9kbWFfcGFnZXMuCisJRG8gbm90IGZyZWUgaG9zdCBpZiB1c2FnZSBjb3VudCBpcyBub3QgemVybyAoZm9yIG1vZHVsZXMpLgorCisJKiBzcl9pb2N0bC5jOiBJbmNyZWFzZSBJT0NUTF9USU1FT1VUIHRvIDMwMDAuCisKKwkqIHN0LmM6IEFsbG93IGZvciBTVF9FWFRSQV9ERVZTIGluIHN0IGRhdGEgc3RydWN0dXJlcy4KKworCSogdTE0LTM0Zi5jOiBVcGRhdGUgdG8gMS4xNy4KKworVGh1IEZlYiAgOSAxMDoxMToxNiAxOTk1ICBFcmljIFlvdW5nZGFsZSAgKGVyaWNAYW5kYW50ZSkKKworCSogTGludXggMS4xLjkxIHJlbGVhc2VkLgorCisJKiBlYXRhLmM6IFVwZGF0ZSB0byAxLjE2LiAgVXNlIHdpc2hfYmxvY2sgaW5zdGVhZCBvZiBob3N0LT5ibG9jay4KKworCSogaG9zdHMuYzogSW5pdGlhbGl6ZSB3aXNoX2Jsb2NrIHRvIDAuCisKKwkqIGhvc3RzLmg6IEFkZCB3aXNoX2Jsb2NrLgorCisJKiBzY3NpLmM6IFVzZSB3aXNoX2Jsb2NrIGFzIGluZGljYXRvciB0aGF0IHRoZSBob3N0IHNob3VsZCBiZSBhZGRlZAorCXRvIGJsb2NrIGxpc3QuCisKKwkqIHNnLmM6IEFkZCBTR19FWFRSQV9ERVZTIHRvIG51bWJlciBvZiBzbG90cy4KKworCSogdTE0LTM0Zi5jOiBVc2Ugd2lzaF9ibG9jay4KKworVHVlIEZlYiAgNyAxMTo0NjowNCAxOTk1ICBFcmljIFlvdW5nZGFsZSAgKGVyaWNAYW5kYW50ZSkKKworCSogTGludXggMS4xLjkwIHJlbGVhc2VkLgorCisJKiBlYXRhLmM6IENoYW5nZSBuYW1pbmcgZnJvbSBlYXRhXyogdG8gZWF0YTJ4XyouICBOb3cgYXQgdmVycyAxLjE1LgorCVVwZGF0ZSBpbnRlcnJ1cHQgaGFuZGxlciB0byB0YWtlIHB0X3JlZ3MgYXMgYXJnLiAgQWxsb3cgYmxvY2tpbmcKKwlldmVuIGlmIGxvYWRlZCBhcyBtb2R1bGUuICBJbml0aWFsaXplIHRhcmdldF90aW1lX291dCBhcnJheS4KKwlEbyBub3QgcHV0IHN0aSgpOyBpbiB0aW1pbmcgbG9vcC4KKworCSogaG9zdHMuYzogRG8gbm90IHJldXNlIGhvc3QgbnVtYmVycy4KKwlVc2Ugc2NzaV9tYWtlX2Jsb2NrZWRfbGlzdCB0byBnZW5lcmF0ZSBibG9ja2luZyBsaXN0LgorCisJKiBzY3JpcHRfYXNtLnBsOiAgQmVhdHMgbWUuICBEb24ndCBrbm93IHBlcmwuICBTb21ldGhpbmcgdG8gZG8gd2l0aAorCXBoYXNlIGluZGV4LgorCisJKiBzY3NpLmMgKHNjc2lfbWFrZV9ibG9ja2VkX2xpc3QpOiBOZXcgZnVuY3Rpb24gLSBjb2RlIGNvcGllZCBmcm9tCisJaG9zdHMuYy4KKworCSogc2NzaS5jOiBVcGRhdGUgY29kZSB0byBkaXNhYmxlIHBob3RvIENEIGZvciBUb3NoaWJhIGNkcm9tcy4KKwlVc2UganVzdCBtYW51ZmFjdHVyZXIgbmFtZSwgbm90IG1vZGVsIG51bWJlci4KKworCSogc3IuYzogRml4IHNldHRpbmcgZGVuc2l0eSBmb3IgVG9zaGliYSBkcml2ZXMuCisKKwkqIHUxNC0zNGYuYzogQ2xlYXIgdGFyZ2V0X3RpbWVfb3V0IGFycmF5IGR1cmluZyByZXNldC4KKworV2VkIEZlYiAgMSAwOToyMDo0NSAxOTk1ICBFcmljIFlvdW5nZGFsZSAgKGVyaWNAYW5kYW50ZSkKKworCSogTGludXggMS4xLjg5IHJlbGVhc2VkLgorCisJKiBNYWtlZmlsZSwgdTE0LTM0Zi5jOiBNb2R1bGFyaXplLgorCisJKiBNYWtlZmlsZSwgZWF0YS5jOiBNb2R1bGFyaXplLiAgTm93IHZlcnNpb24gMS4xNAorCisJKiBOQ1I1MzgwLmM6IFVwZGF0ZSBpbnRlcnJ1cHQgaGFuZGxlciB3aXRoIG5ldyBhcmdsaXN0LiAgTWlub3IKKwljbGVhbnVwcy4KKworCSogZWF0YV9kbWEuYzogQmVnaW4gdG8gbW9kdWxhcml6ZS4gIEFkZCBob29rcyBmb3IgL3Byb2Mvc2NzaS4KKwlOZXcgdmVyc2lvbiAyLjMuMGEuIEFkZCBjb2RlIGluIGludGVycnVwdCBoYW5kbGVyIHRvIGFsbG93CisgICAgICAgIGNlcnRhaW4gQ0RST00gZHJpdmVycyB0byBiZSBkZXRlY3RlZCB3aGljaCByZXR1cm4gYQorICAgICAgICBDSEVDS19DT05ESVRJT04gZHVyaW5nIFNDU0kgYnVzIHNjYW4uIEFkZCBvcGNvZGUgY2hlY2sgdG8gZ2V0CisgICAgICAgIGFsbCBEQVRBIElOIGFuZCBEQVRBIE9VVCBwaGFzZXMgcmlnaHQuIFV0aWxpemUgSEJBX2ludGVycHJldCBmbGFnLgorCUltcHJvdmVtZW50cyBpbiBIQkEgaWRlbnRpZmljYXRpb24uIFZhcmlvdXMgb3RoZXIgbWlub3Igc3R1ZmYuCisKKwkqIGhvc3RzLmM6IEluaXRpYWxpemUgLT5kbWFfY2hhbm5lbCBhbmQgLT5pb19wb3J0IHdoZW4gcmVnaXN0ZXJpbmcKKwlhIG5ldyBob3N0LgorCisJKiBxbG9naWMuYzogTW9kdWxhcml6ZSBhbmQgYWRkIFBDTUNJQSBzdXBwb3J0LgorCisJKiBzY3NpLmM6IEFkZCBIaXRhY2hpIHRvIGJsYWNrbGlzdC4KKworCSogc2NzaS5jOiBDaGFuZ2UgZGVmYXVsdCB0byBubyBsdW4gc2NhbiAodG9vIG1hbnkgcHJvYmxlbSBkZXZpY2VzKS4KKworCSogc2NzaS5oOiBEZWZpbmUgUVVFVUVfRlVMTCBjb25kaXRpb24uCisKKwkqIHNkLmM6IERvIG5vdCBjaGVjayBmb3Igbm9uLWV4aXN0ZW50IHBhcnRpdGlvbiB1bnRpbCBhZnRlcgorCW5ldyBtZWRpYSBjaGVjay4KKworCSogc2cuYzogVW5kbyBwcmV2aW91cyBjaGFuZ2Ugd2hpY2ggd2FzIHdyb25nLgorCisJKiBzcl9pb2N0bC5jOiBJbmNyZWFzZSBJT0NUTF9USU1FT1VUIHRvIDIwMDAuCisKKwkqIHN0LmM6IFBhdGNoZXMgZnJvbSBLYWkgLSBpbXByb3ZlIGZpbGVtYXJrIGhhbmRsaW5nLgorCitUdWUgSmFuIDMxIDE3OjMyOjEyIDE5OTUgIEVyaWMgWW91bmdkYWxlICAoZXJpY0BhbmRhbnRlKQorCisJKiBMaW51eCAxLjEuODggcmVsZWFzZWQuCisKKwkqIFRocm91Z2hvdXQgLSBzcGVsbGluZy9ncmFtbWFyIGZpeHVwcy4KKworCSogc2NzaS5jOiBNYWtlIHN1cmUgdGhhdCBhbGwgYnVmZmVycyBhcmUgMTYgYnl0ZSBhbGlnbmVkIC0gc29tZQorCWRyaXZlcnMgKGJ1c2xvZ2ljKSBuZWVkIHRoaXMuCisKKwkqIHNjc2kuYyAoc2Nhbl9zY3Npcyk6IFJlbW92ZSBtZXNzYWdlIHByaW50ZWQuCisKKwkqIHNjc2kuYyAoc2NzaV9pbml0KTogTW92ZSBtZXNzYWdlIGhlcmUuCisKK01vbiBKYW4gMzAgMDY6NDA6MjUgMTk5NSAgRXJpYyBZb3VuZ2RhbGUgIChlcmljQGFuZGFudGUpCisKKwkqIExpbnV4IDEuMS44NyByZWxlYXNlZC4KKworCSogc3IuYzogUGhvdG8tY2QgcmVsYXRlZCBjaGFuZ2VzLiAoR2VyZCBLbm9ycj8/KS4KKworCSogc3QuYzogQ2hhbmdlcyBmcm9tIEthaSByZWxhdGVkIHRvIEVPTSBkZXRlY3Rpb24uCisKK01vbiBKYW4gMjMgMjM6NTM6MTAgMTk5NSAgRXJpYyBZb3VuZ2RhbGUgIChlcmljQGFuZGFudGUpCisKKwkqIExpbnV4IDEuMS44NiByZWxlYXNlZC4KKworCSogNTNjNyw4eHguaDogQ2hhbmdlIFNHIHNpemUgdG8gMTI3LgorCisJKiBlYXRhX2RtYTogVXBkYXRlIHRvIHZlcnNpb24gMi4xMGkuIFJlbW92ZSBidWcgaW4gdGhlIHJlZ2lzdHJhdGlvbgorICAgICAgICBvZiBtdWx0aXBsZSBIQkFzIGFuZCBjaGFubmVscy4gTWlub3Igb3RoZXIgaW1wcm92ZW1lbnRzIGFuZCBzdHlsaXN0aWMKKyAgICAgICAgY2hhbmdlcy4KKworCSogc2NzaS5jOiBUZXN0IGZvciBUb3NoaWJhIFhNLTM0MDFUQSBhbmQgZXhjbHVkZSBmcm9tIGRldGVjdGlvbgorCWFzIHRvc2hpYmEgZHJpdmUgLSBwaG90byBjZCBkb2VzIG5vdCB3b3JrIHdpdGggdGhpcyBkcml2ZS4KKworCSogc3IuYzogIFVwZGF0ZSBwaG90b2NkIGNvZGUuCisKK01vbiBKYW4gMjMgMjM6NTM6MTAgMTk5NSAgRXJpYyBZb3VuZ2RhbGUgIChlcmljQGFuZGFudGUpCisKKwkqIExpbnV4IDEuMS44NSByZWxlYXNlZC4KKworCSogc3QuYywgc3RfaW9jdGwuYywgc2cuYywgc2RfaW9jdGwuYywgc2NzaV9pb2N0bC5jLCBob3N0cy5jOgorCWluY2x1ZGUgbGludXgvbW0uaAorCisJKiBxbG9naWMuYywgYnVzbG9naWMuYywgYWhhMTU0Mi5jOiBJbmNsdWRlIGxpbnV4L21vZHVsZS5oLgorCitTdW4gSmFuIDIyIDIyOjA4OjQ2IDE5OTUgIEVyaWMgWW91bmdkYWxlICAoZXJpY0BhbmRhbnRlKQorCisJKiBMaW51eCAxLjEuODQgcmVsZWFzZWQuCisKKwkqIE1ha2VmaWxlOiBTdXBwb3J0IGZvciBsb2FkYWJsZSBRTE9HSUMgYm9hcmRzLgorCisJKiBhaGExNTJ4LmM6IFVwZGF0ZSB0byB2ZXJzaW9uIDEuOCBmcm9tIEp1ZXJnZW4uCisKKwkqIGVhdGFfZG1hLmM6IFVwZGF0ZSBmcm9tIE1pY2hhZWwgTmV1ZmZlci4KKyAgICAgICAgUmVtb3ZlIGhhcmQgbGltaXQgb2YgMiBjb21tYW5kcyBwZXIgbHVuIGFuZCBtYWtlIGl0IGJldHRlcgorICAgICAgICBjb25maWd1cmFibGUuIEltcHJvdmVtZW50cyBpbiBIQkEgaWRlbnRpZmljYXRpb24uCisKKwkqIGluMjAwMC5jOiBGaXggYmlvc3BhcmFtIHRvIHN1cHBvcnQgbGFyZ2UgZGlza3MuCisKKwkqIHFsb2dpYy5jOiBNaW5vciBjaGFuZ2VzIChjaGFuZ2Ugc3RpIC0+IHJlc3RvcmVfZmxhZ3MpLgorCitXZWQgSmFuIDE4IDIzOjMzOjA5IDE5OTUgIEVyaWMgWW91bmdkYWxlICAoZXJpY0BhbmRhbnRlKQorCisJKiBMaW51eCAxLjEuODMgcmVsZWFzZWQuCisKKwkqIGFoYTE1NDIuYyhhaGExNTQyX2ludHJfaGFuZGxlKTogVXNlIGFyZ3VtZW50cyBoYW5kZWQgZG93biB0byBmaW5kCisJd2hpY2ggaXJxLgorCisJKiBidXNsb2dpYy5jOiBMaWtld2lzZS4KKworCSogZWF0YV9kbWEuYzogVXNlIG1pbiBvZiAyIGNtZF9wZXJfbHVuIGZvciBPQ1NfZW5hYmxlZCBib2FyZHMuCisKKwkqIHNjc2kuYzogTWFrZSBSRUNPVkVSRURfRVJST1IgYSBTVUdHRVNUX0lTX09LLgorCisJKiBzZC5jOiBGYWlsIGlmIHdlIGFyZSBvcGVuaW5nIGEgbm9uLWV4aXN0ZW50IHBhcnRpdGlvbi4KKworCSogc3IuYzogQnVtcCBTUl9USU1FT1VUIHRvIDE1MDAwLgorCURvIG5vdCBwcm9iZSBmb3IgbWVkaWEgc2l6ZSBhdCBib290IHRpbWUoaGFyZCBvbiBjaGFuZ2VycykuCisJRmxhZyBkZXZpY2UgYXMgbmVlZGluZyBzZWN0b3Igc2l6ZSBpbnN0ZWFkLgorCisJKiBzcl9pb2N0bC5jOiBSZW1vdmUgQ0RST01NVUxUSVNFU1NJT05fU1lTIGlvY3RsLgorCisJKiB1bHRyYXN0b3IuYzogRml4IGJ1ZyBpbiBjYWxsIHRvIHVsdHJhc3Rvcl9pbnRlcnJ1cHQgKHdyb25nICNhcmdzKS4KKworTW9uIEphbiAxNiAwNzoxODoyMyAxOTk1ICBFcmljIFlvdW5nZGFsZSAgKGVyaWNAYW5kYW50ZSkKKworCSogTGludXggMS4xLjgyIHJlbGVhc2VkLgorCisJVGhyb3VnaG91dC4KKwktIENoYW5nZSBhbGwgaW50ZXJydXB0IGhhbmRsZXJzIHRvIGFjY2VwdCBuZXcgY2FsbGluZyBjb252ZW50aW9uLgorCUluIHBhcnRpY3VsYXIsIHdlIG5vdyByZWNlaXZlIHRoZSBpcnEgbnVtYmVyIGFzIG9uZSBvZiB0aGUgYXJndW1lbnRzLgorCisJKiBNb3JlIG1pbm9yIHNwZWxsaW5nIGNvcnJlY3Rpb25zIGluIHNvbWUgb2YgdGhlIG5ldyBmaWxlcy4KKworCSogYWhhMTU0Mi5jLCBidXNsb2dpYy5jOiBDbGVhbiB1cCBpbnRlcnJ1cHQgaGFuZGxlciBhIGxpdHRsZSBub3cKKwl0aGF0IHdlIHJlY2VpdmUgdGhlIGlycSBhcyBhbiBhcmcuCisKKwkqIGFoYTI3NHguYzogcy9zbmFyZl9yZWdpb24vcmVxdWVzdF9yZWdpb24vCisKKwkqIGVhdGEuYzogVXBkYXRlIHRvIHZlcnNpb24gMS4xMi4gICBGaXggc29tZSBjb21tZW50cyBhbmQgZGlzcGxheSBhCisJbWVzc2FnZSBpZiB3ZSBjYW5ub3QgcmVzZXJ2ZSB0aGUgcG9ydCBhZGRyZXNzZXMuCisKKwkqIHUxNC0zNGYuYzogVXBkYXRlIHRvIHZlcnNpb24gMS4xMy4gICBGaXggc29tZSBjb21tZW50cyBhbmQgZGlzcGxheSBhCisJbWVzc2FnZSBpZiB3ZSBjYW5ub3QgcmVzZXJ2ZSB0aGUgcG9ydCBhZGRyZXNzZXMuCisKKwkqIGVhdGFfZG1hLmM6IERlZmluZSBnZXRfYm9hcmRfZGF0YSBmdW5jdGlvbiAoc2VuZCBJTlFVSVJZIGNvbW1hbmQpLgorCVVzZSB0byBpbXByb3ZlIGRldGVjdGlvbiBvZiB2YXJpYW50cyBvZiBkaWZmZXJlbnQgRFBUIGJvYXJkcy4gIENoYW5nZQorCXZlcnNpb24gc3VibnVtYmVyIHRvICIwZyIuCisKKwkqIGZkb21haW4uYzogIFVwZGF0ZSB0byB2ZXJzaW9uIDUuMjYuICBJbXByb3ZlIGRldGVjdGlvbiBvZiBzb21lIGJvYXJkcworCXJlcGFja2FnZWQgYnkgSUJNLgorCisJKiBzY3NpLmMgKHNjc2lfcmVnaXN0ZXJfaG9zdCk6IENoYW5nZSAibmFtZSIgdG8gY29uc3QgY2hhciAqLgorCisJKiBzci5jOiBGaXggcHJvYmxlbSBpbiBzZXQgbW9kZSBjb21tYW5kIGZvciBUb3NoaWJhIGRyaXZlcy4KKworCSogc3IuYzogRml4IHR5cG8gZnJvbSBwYXRjaCA4MS4KKworRnJpIEphbiAxMyAxMjo1NDo0NiAxOTk1ICBFcmljIFlvdW5nZGFsZSAgKGVyaWNAYW5kYW50ZSkKKworCSogTGludXggMS4xLjgxIHJlbGVhc2VkLiAgQ29kZWZyZWV6ZSBmb3IgMS4yIHJlbGVhc2UgYW5ub3VuY2VkLgorCisJQmlnIGNoYW5nZXMgaGVyZS4KKworCSogZWF0YV9kbWEuKjogTmV3IGZpbGVzIGZyb20gTWljaGFlbCBOZXVmZmVyLgorCShuZXVmZmVyQGdvb2Z5Lnpkdi51bmktbWFpbnouZGUpLiAgU2hvdWxkIHN1cHBvcnQKKwlhbGwgZWF0YS9kcHQgY2FyZHMuCisKKwkqIGhvc3RzLmMsIE1ha2VmaWxlOiBBZGQgZWF0YV9kbWEuCisKKwkqIFJFQURNRS5zdDogRG9jdW1lbnQgTVRFT00uCisKKwlQYXRjaGVzIGZyb20gbWUgKEVSWSkgdG8gZmluaXNoIHN1cHBvcnQgZm9yIGxvdy1sZXZlbCBsb2FkYWJsZSBzY3NpLgorCUl0IG5vdyB3b3JrcywgYW5kIGlzIGFjdHVhbGx5IHVzZWZ1bC4KKworCSogVGhyb3VnaG91dCAtIGFkZCBuZXcgYXJndW1lbnQgdG8gc2NzaV9pbml0X21hbGxvYyB0aGF0IHRha2VzIGFuCisJYWRkaXRpb25hbCBwYXJhbWV0ZXIuICBUaGlzIGlzIHVzZWQgYXMgYSBwcmlvcml0eSB0byBrbWFsbG9jLAorCWFuZCB5b3UgY2FuIHNwZWNpZnkgdGhlIEdGUF9ETUEgZmxhZyBpZiB5b3UgbmVlZCBETUEtYWJsZSBtZW1vcnkuCisKKwkqIE1ha2VmaWxlOiBGb3Igc291cmNlIGZpbGVzIHRoYXQgYXJlIGxvYWRhYmxlLCBhbHdheXMgYWRkIG5hbWUKKwl0byBTQ1NJX1NSQ1MuICBGaWxsIGluIG1vZHVsZXM6IHRhcmdldC4KKworCSogaG9zdHMuYzogIENoYW5nZSBuZXh0X2hvc3QgdG8gbmV4dF9zY3NpX2hvc3QsIGFuZCBtYWtlIGdsb2JhbC4KKwlQcmludCBob3N0cyBhZnRlciB3ZSBoYXZlIGlkZW50aWZpZWQgYWxsIG9mIHRoZW0uICBVc2UgaW5mbygpCisJZnVuY3Rpb24gaWYgcHJlc2VudCwgb3RoZXJ3aXNlIHVzZSBuYW1lIGZpZWxkLgorCisJKiBob3N0cy5oOiBDaGFuZ2UgYXR0YWNoIGZ1bmN0aW9uIHRvIHJldHVybiBpbnQsIG5vdCB2b2lkLgorCURlZmluZSBudW1iZXIgb2YgZGV2aWNlIHNsb3RzIHRvIGFsbG93IGZvciBsb2FkYWJsZSBkZXZpY2VzLgorCURlZmluZSB0YWdzIHRvIHRlbGwgc2NzaSBtb2R1bGUgY29kZSB3aGF0IHR5cGUgb2YgbW9kdWxlIHdlCisJYXJlIGxvYWRpbmcuCisKKwkqIHNjc2kuYzogRml4IHNjYW5fc2NzaXMgc28gdGhhdCBpdCBjYW4gYmUgcnVuIGJ5IGEgdXNlciBwcm9jZXNzLgorCURvIG5vdCB1c2Ugd2FpdGluZyBsb29wcyAtIHVzZSB1cCBhbmQgZG93biBtZWNoYW5pc20gYXMgbG9uZworCWFzIGN1cnJlbnQgIT0gdGFza1swXS4KKworCSogc2NzaS5jKHNjYW5fc2NzaXMpOiBEbyBub3QgdXNlIHN0YWNrIHZhcmlhYmxlcyBmb3IgSS9PIC0gdGhpcworCWNvdWxkIGJlID4gMTZNYiBpZiB3ZSBhcmUgbG9hZGluZyBhIG1vZHVsZSBhdCBydW50aW1lIChpLmUuIHVzZQorCXNjc2lfaW5pdF9tYWxsb2MgdG8gZ2V0IHNvbWUgbWVtb3J5IHdlIGtub3cgd2lsbCBiZSBzYWZlKS4KKworCSogc2NzaS5jOiBDaGFuZ2UgZG1hIGZyZWVsaXN0IHRvIGJlIGEgc2V0IG9mIHBhZ2VzLiAgVGhpcyBhbGxvd3MKKwl1cyB0byBkeW5hbWljYWxseSBhZGp1c3QgdGhlIHNpemUgb2YgdGhlIGxpc3QgYnkgYWRkaW5nIG1vcmUgcGFnZXMKKwl0byB0aGUgcGFnZWxpc3QuICBGaXggc2NzaV9tYWxsb2MgYW5kIHNjc2lfZnJlZSBhY2NvcmRpbmdseS4KKworCSogc2NzaV9tb2R1bGUuYzogRml4IGluY2x1ZGUuCisKKwkqIHNkLmM6IERlY2xhcmUgZGV0YWNoIGZ1bmN0aW9uLiAgSW5jcmVtZW50L2RlY3JlbWVudCBtb2R1bGUgdXNhZ2UKKwljb3VudCBhcyByZXF1aXJlZC4gIEZpeCBpbml0IGZ1bmN0aW9ucyB0byBhbGxvdyBsb2FkZWQgZGV2aWNlcy4KKwlSZXZhbGlkYXRlIGFsbCBuZXcgZGlza3Mgc28gd2UgZ2V0IHRoZSBwYXJ0aXRpb24gdGFibGVzLiAgRGVmaW5lCisJZGV0YWNoIGZ1bmN0aW9uLgorCisJKiBzci5jOiBMaWtld2lzZS4KKworCSogc2cuYzogRGVjbGFyZSBkZXRhY2ggZnVuY3Rpb24uICBBbGxvdyBhdHRhY2htZW50IG9mIGRldmljZXMgb24KKwlsb2FkZWQgZHJpdmVycy4KKworCSogc3QuYzogRGVjbGFyZSBkZXRhY2ggZnVuY3Rpb24uICBJbmNyZW1lbnQvZGVjcmVtZW50IG1vZHVsZSB1c2FnZQorCWNvdW50IGFzIHJlcXVpcmVkLgorCitUdWUgSmFuIDEwIDEwOjA5OjU4IDE5OTUgIEVyaWMgWW91bmdkYWxlICAoZXJpY0BhbmRhbnRlKQorCisJKiBMaW51eCAxLjEuNzkgcmVsZWFzZWQuCisKKwlQYXRjaCBmcm9tIHNvbWUgdW5kZXRlcm1pbmVkIGluZGl2aWR1YWwgd2hvIG5lZWRzIHRvIGdldCBhIGxpZmUgOi0pLgorCisJKiBzci5jOiBBdHRhY2tlZCBieSBzcGVsbGluZyBiZWUuLi4KKworCVBhdGNoZXMgZnJvbSBHZXJkIEtub3JyOgorCisJKiBzci5jOiBtYWtlIHByaW50ayBtZXNzYWdlcyBmb3IgcGhvdG9DRCBhIGxpdHRsZSBtb3JlIGluZm9ybWF0aXZlLgorCisJKiBzcl9pb2N0bC5jOiBGaXggQ0RST01NVUxUSVNFU1NJT05fU1lTIGlvY3RsLgorCitNb24gSmFuICA5IDEwOjAxOjM3IDE5OTUgIEVyaWMgWW91bmdkYWxlICAoZXJpY0BhbmRhbnRlKQorCisJKiBMaW51eCAxLjEuNzggcmVsZWFzZWQuCisKKwkqIE1ha2VmaWxlOiBBZGQgZW1wdHkgbW9kdWxlczogdGFyZ2V0LgorCisJKiBXaGVlZS4gIE5vdyBjaGFuZ2UgcmVnaXN0ZXJfaW9tZW0gdG8gcmVxdWVzdF9yZWdpb24uCisKKwkqIGluMjAwMC5jOiBCdWdmaXggLSBhcHBhcmVudGx5IHRoaXMgaXMgdGhlIGZpeCB0aGF0IHdlIGhhdmUKKwlhbGwgYmVlbiB3YWl0aW5nIGZvci4gIEl0IGZpeGVzIGEgcHJvYmxlbSB3aGVyZWJ5IHRoZSBkcml2ZXIKKwlpcyBub3Qgc3RhYmxlIHVuZGVyIGhlYXZ5IGxvYWQuICBSYWNlIGNvbmRpdGlvbiBhbmQgYWxsIHRoYXQuCisJUGF0Y2ggZnJvbSBQZXRlciBMdS4KKworV2VkIEphbiAgNCAyMToxNzo0MCAxOTk1ICBFcmljIFlvdW5nZGFsZSAgKGVyaWNAYW5kYW50ZSkKKworCSogTGludXggMS4xLjc3IHJlbGVhc2VkLgorCisJKiA1M2M3LDh4eC5jOiBGaXggZnJvbSBMaW51cyAtIGVtdWxhdGUgc3BseC4KKworCVRocm91Z2hvdXQ6CisKKwkJQ2hhbmdlICJzbmFyZl9yZWdpb24iIHdpdGggInJlZ2lzdGVyX2lvbWVtIi4KKworCSogc2NzaV9tb2R1bGUuYzogTmV3IGZpbGUuICBDb250YWlucyBzdXBwb3J0IGZvciBsb3ctbGV2ZWwgbG9hZGFibGUKKwkgIHNjc2kgZHJpdmVycy4gW0VSWV0uCisKKwkqIHNkLmM6IE1vcmUgcy9pbnQvbG9uZy8gY2hhbmdlcy4KKworCSogc2VhZ2F0ZS5jOiBFeHBsaWNpdGx5IGluY2x1ZGUgbGludXgvY29uZmlnLmgKKworCSogc2cuYzogSW5jcmVtZW50L2RlY3JlbWVudCBtb2R1bGUgdXNhZ2UgY291bnQgb24gb3Blbi9jbG9zZS4KKworCSogc2cuYzogQmUgYSBiaXQgbW9yZSBjYXJlZnVsIGFib3V0IHRoZSB1c2VyIG5vdCBzdXBwbHlpbmcgZW5vdWdoCisJICBpbmZvcm1hdGlvbiBmb3IgYSB2YWxpZCBjb21tYW5kLiAgUGFzcyBjb3JyZWN0IHNpemUgZG93biB0bworCSAgc2NzaV9kb19jbWQuCisKKwkqIHNyLmM6ICBNb3JlIGNoYW5nZXMgZm9yIFBob3RvLUNELiAgVGhpcyBhcHBhcmVudGx5IGJyZWFrcyBORUMgZHJpdmVzLgorCisJKiBzcl9pb2N0bC5jOiAgU3VwcG9ydCBDRFJPTU1VTFRJU0VTU0lPTiBpb2N0bC4KKworCitTdW4gSmFuICAxIDE5OjU1OjIxIDE5OTUgIEVyaWMgWW91bmdkYWxlICAoZXJpY0BhbmRhbnRlKQorCisJKiBMaW51eCAxLjEuNzYgcmVsZWFzZWQuCisKKwkqIGNvbnN0YW50cy5jOiBBZGQgdHlwZSBjYXN0IGluIHN3aXRjaCBzdGF0ZW1lbnQuCisKKwkqIHNjc2kuYyAoc2NzaV9mcmVlKTogQ2hhbmdlIGRhdGF0eXBlIG9mICJvZmZzZXQiIHRvIGxvbmcuCisJICAoc2NzaV9tYWxsb2MpOiBDaGFuZ2UgYSBmZXcgbW9yZSB2YXJpYWJsZXMgdG8gbG9uZy4gIFdobworCSAgZGlkIHRoaXMgYW5kIHdoeSB3YXMgaXQgaW1wb3J0YW50PyAgNjQgYml0IG1hY2hpbmVzPworCisKKwlMb3RzIG9mIGNoYW5nZXMgdG8gdXNlIHNhdmVfc3RhdGUvcmVzdG9yZV9zdGF0ZSBpbnN0ZWFkIG9mIGNsaS9zdGkuCisJRmlsZXMgY2hhbmdlZCBpbmNsdWRlOgorCisJKiBhaGExNTQyLmM6CisJKiBhaGExNzQwLmM6CisJKiBidXNsb2dpYy5jOgorCSogaW4yMDAwLmM6CisJKiBzY3NpLmM6CisJKiBzY3NpX2RlYnVnLmM6CisJKiBzZC5jOgorCSogc3IuYzoKKwkqIHN0LmM6CisKK1dlZCBEZWMgMjggMTY6Mzg6MjkgMTk5NCAgRXJpYyBZb3VuZ2RhbGUgIChlcmljQGFuZGFudGUpCisKKwkqIExpbnV4IDEuMS43NSByZWxlYXNlZC4KKworCSogYnVzbG9naWMuYzogU3BlbGxpbmcgZml4LgorCisJKiBzY3NpLmM6IEFkZCBIUCBDMTc5MEEgYW5kIEMyNTAwQSBzY2FuamV0IHRvIGJsYWNrbGlzdC4KKworCSogc2NzaS5jOiBTcGVsbGluZyBmaXh1cC4KKworCSogc2QuYzogQWRkIHN1cHBvcnQgZm9yIHNkX2hhcmRzaXplcyAoaGFyZCBzZWN0b3Igc2l6ZXMpLgorCisJKiB1bHRyYXN0b3IuYzogVXNlIHNhdmVfZmxhZ3MvcmVzdG9yZV9mbGFncyBpbnN0ZWFkIG9mIGNsaS9zdGkuCisKK0ZyaSBEZWMgMjMgMTM6MzY6MjUgMTk5NCAgRXJpYyBZb3VuZ2RhbGUgIChlcmljQGFuZGFudGUpCisKKwkqIExpbnV4IDEuMS43NCByZWxlYXNlZC4KKworCSogUkVBRE1FLnN0OiBVcGRhdGUgZnJvbSBLYWkgTWFraXNhcmEuCisKKwkqIGVhdGEuYzogTmV3IHZlcnNpb24gZnJvbSBEYXJpbyAtIHZlcnNpb24gMS4xMS4KKwkgIHVzZSBzY3NpY2FtIGJpb3NfcGFyYW0gcm91dGluZS4gIEFkZCBzdXBwb3J0IGZvciAyMDExCisJICBhbmQgMjAyMSBib2FyZHMuCisKKwkqIGhvc3RzLmM6IEFkZCBzdXBwb3J0IGZvciBibG9ja2luZy4gIExpbmtlZCBsaXN0IGF1dG9tYXRpY2FsbHkKKwkgIGdlbmVyYXRlZCB3aGVuIHNocG50LT5ibG9jayBpcyBzZXQuCisKKwkqIHNjc2kuYzogQWRkIHNhbmt5byAmIEhQIHNjYW5qZXQgdG8gYmxhY2tsaXN0LiAgQWRkIHN1cHBvcnQgZm9yCisJICBraWNraW5nIHRoaW5ncyBsb29zZSB3aGVuIHdlIGRlYWRsb2NrLgorCisJKiBzY3NpLmM6IFJlY29nbml6ZSBzY2FubmVycyBhbmQgcHJvY2Vzc29ycyBpbiBzY2FuX3Njc2lzLgorCisJKiBzY3NpX2lvY3RsLmg6IEluY3JlYXNlIHRpbWVvdXQgdG8gOSBzZWNvbmRzLgorCisJKiBzdC5jOiBOZXcgdmVyc2lvbiBmcm9tIEthaSAtIGFkZCBiZXR0ZXIgc3VwcG9ydCBmb3IgYmFja3NwYWNlLgorCisJKiB1MTQtMzRmLmM6IE5ldyB2ZXJzaW9uIGZyb20gRGFyaW8uICBTdXBwb3J0cyBibG9ja2luZy4KKworV2VkIERlYyAxNCAxNDo0NjozMCAxOTk0ICBFcmljIFlvdW5nZGFsZSAgKGVyaWNAYW5kYW50ZSkKKworCSogTGludXggMS4xLjczIHJlbGVhc2VkLgorCisJKiBidXNsb2dpYy5jOiBVcGRhdGUgZnJvbSBEYXZlIEdlbnR6ZWwuICBWZXJzaW9uIDEuMTQuCisJICBBZGQgbW9kdWxlIHJlbGF0ZWQgc3R1ZmYuICAgTW9yZSBmYXVsdCB0b2xlcmFudCBpZiBvdXQgb2YKKwkgIERNQSBtZW1vcnkuCisKKwkqIGZkb21haW4uYzogTmV3IHZlcnNpb24gZnJvbSBSaWsgRmFpdGggLSB2ZXJzaW9uIDUuMjIuICBBZGQgc3VwcG9ydAorCSAgZm9yIElTQS0yMDBTIFNDU0kgYWRhcHRlci4KKworCSogaG9zdHMuYzogU3BlbGxpbmcuCisKKwkqIHFsb2dpYy5jOiBVcGRhdGUgdG8gdmVyc2lvbiAwLjM4YS4gIEFkZCBtb3JlIHN1cHBvcnQgZm9yIFBDTUNJQS4KKworCSogc2NzaS5jOiBNYXNrIGRldmljZSB0eXBlIHdpdGggMHgxZiBkdXJpbmcgc2Nhbl9zY3Npcy4KKwkgIEFkZCBzdXBwb3J0IGZvciBkZWFkbG9ja2luZywgZXJyLCBtYWtlIHRoYXQgZ2V0dGluZyBvdXQgb2YKKwkgIGRlYWRsb2NrIHNpdHVhdGlvbnMgdGhhdCBhcmUgY3JlYXRlZCB3aGVuIHdlIGFsbG93IHRoZSB1c2VyCisJICB0byBsaW1pdCByZXF1ZXN0cyB0byBvbmUgaG9zdCBhZGFwdGVyIGF0IGEgdGltZS4KKworCSogc2NzaS5jOiBCdWdmaXggLSBwYXNzIHBpZCwgbm90IFNDcG50IGFzIHNlY29uZCBhcmcgdG8KKwkgIHNjc2lfdGltZXNfb3V0LgorCisJKiBzY3NpLmM6IFJlc3RvcmUgaW50ZXJydXB0IHN0YXRlIHRvIHByZXZpb3VzIHZhbHVlIGluc3RlYWQgb2YgdXNpbmcKKwkgIGNsaS9zdGkgcGFpcnMuCisKKwkqIHNjc2kuYzogQWRkIGEgYnVuY2ggb2YgbW9kdWxlIHN0dWZmIChhbGwgY29tbWVudGVkIG91dCBmb3Igbm93KS4KKworCSogc2NzaS5jOiBDbGVhbiB1cCBzY3NpX2R1bXBfc3RhdHVzLgorCitUdWUgRGVjICA2IDEyOjM0OjIwIDE5OTQgIEVyaWMgWW91bmdkYWxlICAoZXJpY0BhbmRhbnRlKQorCisJKiBMaW51eCAxLjEuNzIgcmVsZWFzZWQuCisKKwkqIHNnLmM6IEJ1Z2ZpeCAtIGFsd2F5cyB1c2Ugc2dfZnJlZSwgc2luY2Ugd2UgbWlnaHQgaGF2ZSBiaWcgYnVmZi4KKworRnJpIERlYyAgMiAxMToyNDo1MyAxOTk0ICBFcmljIFlvdW5nZGFsZSAgKGVyaWNAYW5kYW50ZSkKKworCSogTGludXggMS4xLjcxIHJlbGVhc2VkLgorCisJKiBzZy5jOiBDbGVhciBidWZmIGZpZWxkIHdoZW4gbm90IGluIHVzZS4gIE9ubHkgY2FsbCBzY3NpX2ZyZWUgaWYKKwlub24tbnVsbC4KKworCSogc2NzaS5oOiBDYWxsIHdha2VfdXAoJndhaXRfZm9yX3JlcXVlc3QpIHdoZW4gZG9uZSB3aXRoIGEKKwljb21tYW5kLgorCisJKiBzY3NpLmMgKHNjc2lfdGltZXNfb3V0KTogUGFzcyBwaWQgZG93biBzbyB0aGF0IHdlIGNhbiBwcm90ZWN0CisJYWdhaW5zdCByYWNlIGNvbmRpdGlvbnMuCisKKwkqIHNjc2kuYyAoc2NzaV9hYm9ydCk6IFplcm8gdGltZW91dCBmaWVsZCBpZiB3ZSBnZXQgdGhlCisJTk9UX1JVTk5JTkcgbWVzc2FnZSBiYWNrIGZyb20gbG93LWxldmVsIGRyaXZlci4KKworCisJKiBzY3NpLmMgKHNjc2lfZG9uZSk6IFJlc3RvcmUgY21kX2xlbiwgdXNlX3NnIGhlcmUuCisKKwkqIHNjc2kuYyAocmVxdWVzdF9zZW5zZSk6IE5vdCBoZXJlLgorCisJKiBob3N0cy5oOiBBZGQgbmV3IGZvcmJpZGRlbl9hZGRyLCBmb3JiaWRkZW5fc2l6ZSBmaWVsZHMuICBXaG8KKwlhZGRlZCB0aGVzZSBhbmQgd2h5Pz8/PworCisJKiBob3N0cy5jIChzY3NpX21lbV9pbml0KTogTWFyayBwYWdlcyBhcyByZXNlcnZlZCBpZiB0aGV5IGZhbGwgaW4KKwl0aGUgZm9yYmlkZGVuIHJlZ2lvbnMuICBJIGFtIG5vdCBzdXJlIC0gSSB0aGluayB0aGlzIGlzIHNvIHRoYXQKKwl3ZSBjYW4gZGVhbCB3aXRoIGJvYXJkcyB0aGF0IGRvIGluY29tcGxldGUgZGVjb2Rpbmcgb2YgdGhlaXIKKwlhZGRyZXNzIGxpbmVzIGZvciB0aGUgYmlvcyBjaGlwcywgYnV0IEkgYW0gbm90IGVudGlyZWx5IHN1cmUuCisKKwkqIGJ1c2xvZ2ljLmM6IFNldCBmb3JiaWRkZW5fYWRkciBzdHVmZiBpZiB1c2luZyBhIGJ1Z2d5IGJvYXJkLgorCisJKiBhaGExNzQwLmM6IFRlc3QgZm9yIE5VTEwgcG9pbnRlciBpbiBTQ3RtcC4gIFRoaXMgc2hvdWxkIG5vdAorCW9jY3VyLCBidXQgYSBuaWNlIG1lc3NhZ2UgaXMgYmV0dGVyIHRoYW4gYSBrZXJuZWwgc2VnZmF1bHQuCisKKwkqIDUzYzcsOHh4LmM6IEFkZCBuZXcgUENJIGNoaXAgSUQgZm9yIDgxNS4KKworRnJpIERlYyAgMiAxMToyNDo1MyAxOTk0ICBFcmljIFlvdW5nZGFsZSAgKGVyaWNAYW5kYW50ZSkKKworCSogTGludXggMS4xLjcwIHJlbGVhc2VkLgorCisJKiBDaGFuZ2VMb2csIHN0LmM6IFNwZWxsaW5nLgorCitUdWUgTm92IDI5IDE4OjQ4OjQyIDE5OTQgIEVyaWMgWW91bmdkYWxlICAoZXJpY0BhbmRhbnRlKQorCisJKiBMaW51eCAxLjEuNjkgcmVsZWFzZWQuCisKKwkqIHUxNC0zNGYuaDogTm9uLWZ1bmN0aW9uYWwgY2hhbmdlLiAgW0RhcmlvXS4KKworCSogdTE0LTM0Zi5jOiBVc2UgYmxvY2sgZmllbGQgaW4gU2NzaV9Ib3N0IHRvIHByZXZlbnQgY29tbWFuZHMgZnJvbQorCWJlaW5nIHF1ZXVlZCB0byBtb3JlIHRoYW4gb25lIGhvc3QgYXQgdGhlIHNhbWUgdGltZSAodXNlZCB3aGVuCisJbW90aGVyYm9hcmQgZG9lcyBub3QgZGVhbCB3aXRoIG11bHRpcGxlIGJ1cy1tYXN0ZXJzIHZlcnkgd2VsbCkuCisJT25seSB3aGVuIFNJTkdMRV9IT1NUX09QRVJBVElPTlMgaXMgZGVmaW5lZC4KKwlVc2UgbmV3IGNtZF9wZXJfbHVuIGZpZWxkLiAgW0RhcmlvXQorCisJKiBlYXRhLmM6IExpa2V3aXNlLgorCisJKiBzdC5jOiBNb3JlIGNoYW5nZXMgZnJvbSBLYWkuICBBZGQgcmVhZHkgZmxhZyB0byBpbmRpY2F0ZSBkcml2ZQorCXN0YXR1cy4KKworCSogUkVBRE1FLnN0OiBEb2N1bWVudCB0aGlzLgorCisJKiBzci5jOiBCdWdmaXggKGRvIG5vdCBzdWJ0cmFjdCBDRF9CTE9DS19PRkZTRVQpIGZvciBwaG90by1jZAorCWNvZGUuCisKKwkqIHNnLmM6IEJ1Z2ZpeCAtIGZpeCBwcm9ibGVtIHdoZXJlIG9wY29kZSBpcyBub3QgY29ycmVjdGx5IHNldCB1cC4KKworCSogc2VhZ2F0ZS5bYyxoXTogVXNlICNkZWZpbmVzIHRvIHNldCBkcml2ZXIgbmFtZS4KKworCSogc2NzaV9pb2N0bC5jOiBaZXJvIGJ1ZmZlciBiZWZvcmUgZXhlY3V0aW5nIGNvbW1hbmQuCisKKwkqIHNjc2kuYzogVXNlIG5ldyBjbWRfcGVyX2x1biBmaWVsZCBpbiBTY3NpX0hvc3RzIGFzIGFwcHJvcHJpYXRlLgorCUFkZCBTb255IENEVTU1UyB0byBibGFja2xpc3QuCisKKwkqIGhvc3RzLmg6IEFkZCBuZXcgY21kX3Blcl9sdW4gZmllbGQgdG8gU2NzaV9Ib3N0cy4KKworCSogaG9zdHMuYzogSW5pdGlhbGl6ZSBjbWRfcGVyX2x1biBpbiBTY3NpX0hvc3RzIGZyb20gdGVtcGxhdGUuCisKKwkqIGJ1c2xvZ2ljLmM6IFVzZSBjbWRfcGVyX2x1biBmaWVsZCAtIGluaXRpYWxpemUgdG8gZGlmZmVyZW50CisJdmFsdWVzIGRlcGVuZGluZyB1cG9uIGJ1cyB0eXBlIChpLmUuIHVzZSAxIGlmIElTQSwgc28gd2UgZG8gbm90CisJaG9nIG1lbW9yeSkuICBVc2Ugb3RoZXIgcGF0Y2hlcyB3aGljaCBnb3QgbG9zdCBmcm9tIDEuMS42OC4KKworCSogYWhhMTU0Mi5jOiBTcGVsbGluZy4KKworVHVlIE5vdiAyOSAxNTo0Mzo1MCAxOTk0ICBFcmljIFlvdW5nZGFsZSAgKGVyaWNAYW5kYW50ZS5haWIuY29tKQorCisJKiBMaW51eCAxLjEuNjggcmVsZWFzZWQuCisKKwlBZGQgc3VwcG9ydCBmb3IgMTIgYnl0ZSB2ZW5kb3Igc3BlY2lmaWMgY29tbWFuZHMgaW4gc2NzaS1nZW5lcmljcywKKwltb3JlIChpLmUuIHRoZSBsYXN0IG1hbmRhdG9yeSkgbG93LWxldmVsIGNoYW5nZXMgdG8gc3VwcG9ydAorCWxvYWRhYmxlIG1vZHVsZXMsIHBsdXMgYSBmZXcgb3RoZXIgY2hhbmdlcyBwZW9wbGUgaGF2ZSByZXF1ZXN0ZWQKKwlsYXRlbHkuICBDaGFuZ2VzIGJ5IG1lIChFUlkpIHVubGVzcyBvdGhlcndpc2Ugbm90ZWQuICBTcGVsbGluZworCWNoYW5nZXMgYXBwZWFyIGZyb20gc29tZSB1bmtub3duIGNvcm5lciBvZiB0aGUgdW5pdmVyc2UuCisKKwkqIFRocm91Z2hvdXQ6IENoYW5nZSBDT01NQU5EX1NJWkUoKSB0byB1c2UgU0NwbnQtPmNtZF9sZW4uCisKKwkqIFRocm91Z2hvdXQ6IENoYW5nZSBpbmZvKCkgbG93IGxldmVsIGZ1bmN0aW9uIHRvIHRha2UgYSBTY3NpX0hvc3QKKwlwb2ludGVyLiAgVGhpcyB3YXkgdGhlIGluZm8gZnVuY3Rpb24gY2FuIHJldHVybiBzcGVjaWZpYworCWluZm9ybWF0aW9uIGFib3V0IHRoZSBob3N0IGluIHF1ZXN0aW9uLCBpZiBkZXNpcmVkLgorCisJKiBBbGwgbG93LWxldmVsIGRyaXZlcnM6IEFkZCBOVUxMIGluIGluaXRpYWxpemVyIGZvciB0aGUKKwl1c2FnZV9jb3VudCBmaWVsZCBhZGRlZCB0byBTY3NpX0hvc3RfVGVtcGxhdGUuCisKKwkqIGFoYTE1MnguW2MsaF06IFJlbW92ZSByZWR1bmRhbnQgaW5mbygpIGZ1bmN0aW9uLgorCisJKiBhaGExNTQyLltjLGhdOiBMaWtld2lzZS4KKworCSogYWhhMTc0MC5bYyxoXTogTGlrZXdpc2UuCisKKwkqIGFoYTI3NHguW2MsaF06IExpa2V3aXNlLgorCisJKiBlYXRhLltjLGhdOiBMaWtld2lzZS4KKworCSogcGFzMTYuW2MsaF06IExpa2V3aXNlLgorCisJKiBzY3NpX2RlYnVnLltjLGhdOiBMaWtld2lzZS4KKworCSogdDEyOC5bYyxoXTogTGlrZXdpc2UuCisKKwkqIHUxNC0zNGYuW2MsaF06IExpa2V3aXNlLgorCisJKiB1bHRyYXN0b3IuW2MsaF06IExpa2V3aXNlLgorCisJKiB3ZDcwMDAuW2MsaF06IExpa2V3aXNlLgorCisJKiBhaGExNTQyLmM6IEFkZCBzdXBwb3J0IGZvciBjb21tYW5kIGxpbmUgb3B0aW9ucyB3aXRoIGxpbG8gdG8gc2V0CisJRE1BIHBhcmFtZXRlcnMsIEkvTyBwb3J0LiAgRnJvbSBNYXR0IEFhcm5pby4KKworCSogYnVzbG9naWMuW2MsaF06IE5ldyB2ZXJzaW9uICgxLjEzKSBmcm9tIERhdmUgR2VudHplbC4KKworCSogaG9zdHMuaDogQWRkIG5ldyBmaWVsZCB0byBTY3NpX0hvc3RzICJibG9jayIgdG8gYWxsb3cgYmxvY2tpbmcKKwlhbGwgSS9PIHRvIGNlcnRhaW4gb3RoZXIgY2FyZHMuICBIZWxwcyBwcmV2ZW50IHByb2JsZW1zIHdpdGggc29tZQorCUlTQSBtb3RoZXJib2FyZHMuCisKKwkqIGhvc3RzLmg6IEFkZCB1c2FnZV9jb3VudCB0byBTY3NpX0hvc3RfVGVtcGxhdGUuCisKKwkqIGhvc3RzLmg6IEFkZCBuX2lvX3BvcnQgdG8gU2NzaV9Ib3N0ICh1c2VkIHdoZW4gcmVsZWFzaW5nIG1vZHVsZSkuCisKKwkqIGhvc3RzLmM6IEluaXRpYWxpemUgYmxvY2sgZmllbGQuCisKKwkqIGluMjAwMC5jOiBSZW1vdmUgInN0YXRpYyIgZGVjbGFyYXRpb25zIGZyb20gZXhwb3J0ZWQgZnVuY3Rpb25zLgorCisJKiBpbjIwMDAuaDogTGlrZXdpc2UuCisKKwkqIHNjc2kuYzogQ29ycmVjdGx5IHNldCBjbWRfbGVuIGZpZWxkIGFzIHJlcXVpcmVkLiAgU2F2ZSBhbmQKKwljaGFuZ2Ugc2V0dGluZyB3aGVuIGRvaW5nIGEgcmVxdWVzdF9zZW5zZSwgcmVzdG9yZSB3aGVuIGRvbmUuCisJTW92ZSBhYm9ydCB0aW1lb3V0IG1lc3NhZ2UuICBGaXggcGFuaWMgaW4gcmVxdWVzdF9xdWV1ZWFibGUgdG8KKwlwcmludCBjb3JyZWN0IGZ1bmN0aW9uIG5hbWUuCisKKwkqIHNjc2kuYzogV2hlbiBpbmNyZW1lbnRpbmcgdXNhZ2UgY291bnQsIHdhbGsgYmxvY2sgbGlua2VkIGxpc3QKKwlmb3IgaG9zdCwgYW5kIG9yIGluIFNDU0lfSE9TVF9CTE9DSyBiaXQuICBXaGVuIGRlY3JlbWVudGluZyB1c2FnZQorCWNvdW50IHRvIDAsIGNsZWFyIHRoaXMgYml0IHRvIGFsbG93IHVzYWdlIHRvIGNvbnRpbnVlLCB3YWtlIHVwCisJcHJvY2Vzc2VzIHdhaXRpbmcuCisKKworCSogc2NzaV9pb2N0bC5jOiBJZiB3ZSBoYXZlIGFuIGluZm8oKSBmdW5jdGlvbiwgY2FsbCBpdCwgb3RoZXJ3aXNlCisJaWYgd2UgaGF2ZSBhICJuYW1lIiBmaWVsZCwgdXNlIGl0LCBlbHNlIGRvIG5vdGhpbmcuCisKKwkqIHNkLmMsIHNyLmM6IENsZWFyIGNtZF9sZW4gZmllbGQgcHJpb3IgdG8gZWFjaCBjb21tYW5kIHdlCisJZ2VuZXJhdGUuCisKKwkqIHNkLmg6IEFkZCAiaGFzX3BhcnRfdGFibGUiIGJpdCB0byByc2NzaV9kaXNrcy4KKworCSogc2cuW2MsaF06IEFkZCBzdXBwb3J0IGZvciB2ZW5kb3Igc3BlY2lmaWMgMTIgYnl0ZSBjb21tYW5kcyAoaS5lLgorCW92ZXJyaWRlIGNvbW1hbmQgbGVuZ3RoIGluIENPTU1BTkRfU0laRSkuCisKKwkqIHNyLmM6IEJ1Z2ZpeCBmcm9tIEdlcmQgaW4gcGhvdG9jZCBjb2RlLgorCisJKiBzci5jOiBCdWdmaXggaW4gZ2V0X3NlY3RvcnNpemUgLSBhbHdheXMgdXNlIHNjc2lfbWFsbG9jIGJ1ZmZlciAtCisJd2UgY2Fubm90IGd1YXJhbnRlZSB0aGF0IHRoZSBzdGFjayBpcyA8IDE2TWIuCisKK1R1ZSBOb3YgMjIgMTU6NDA6NDYgMTk5NCAgRXJpYyBZb3VuZ2RhbGUgIChlcmljQGFuZGFudGUuYWliLmNvbSkKKworCSogTGludXggMS4xLjY3IHJlbGVhc2VkLgorCisJKiBzci5jOiBDaGFuZ2Ugc3BlbGxpbmcgb2YgbWFudWZhY3RvciB0byBtYW51ZmFjdHVyZXIuCisKKwkqIHNjc2kuaDogTGlrZXdpc2UuCisKKwkqIHNjc2kuYzogTGlrZXdpc2UuCisKKwkqIHFsb2dpYy5jOiBTcGVsbGluZyBjb3JyZWN0aW9ucy4KKworCSogaW4yMDAwLmg6IFNwZWxsaW5nIGNvcnJlY3Rpb25zLgorCisJKiBpbjIwMDAuYzogVXBkYXRlIGZyb20gQmlsbCBFYXJuZXN0LCBjaGFuZ2UgZnJvbQorCWpzaGlmZmxlQG5ldGNvbS5jb20uICBTdXBwb3J0IG5ldyBiaW9zIHZlcnNpb25zLgorCisJKiBSRUFETUUucWxvZ2ljOiBTcGVsbGluZyBjb3JyZWN0aW9uLgorCitUdWUgTm92IDIyIDE1OjQwOjQ2IDE5OTQgIEVyaWMgWW91bmdkYWxlICAoZXJpY0BhbmRhbnRlLmFpYi5jb20pCisKKwkqIExpbnV4IDEuMS42NiByZWxlYXNlZC4KKworCSogdTE0LTM0Zi5jOiBTcGVsbGluZyBjb3JyZWN0aW9ucy4KKworCSogc3IuW2gsY106IEFkZCBzdXBwb3J0IGZvciBtdWx0aS1zZXNzaW9uIENEcyBmcm9tIEdlcmQgS25vcnIuCisKKwkqIHNjc2kuaDogQWRkIG1hbnVmYWN0b3IgZmllbGQgZm9yIGtlZXBpbmcgdHJhY2sgb2YgZGV2aWNlCisJbWFudWZhY3R1cmVyLgorCisJKiBzY3NpLmM6IE1vcmUgc3BlbGxpbmcgY29ycmVjdGlvbnMuCisKKwkqIHFsb2dpYy5oLCBxbG9naWMuYywgUkVBRE1FLnFsb2dpYzogTmV3IGRyaXZlciBmcm9tIFRvbSBaZXJ1Y2hhLgorCisJKiBpbjIwMDAuYywgaW4yMDAwLmg6IE5ldyBkcml2ZXIgZnJvbSBCcmFkIE1jTGVhbi9CaWxsIEVhcm5lc3QuCisKKwkqIGZkb21haW4uYzogU3BlbGxpbmcgY29ycmVjdGlvbi4KKworCSogZWF0YS5jOiBTcGVsbGluZyBjb3JyZWN0aW9uLgorCitGcmkgTm92IDE4IDE1OjIyOjQ0IDE5OTQgIEVyaWMgWW91bmdkYWxlICAoZXJpY0BhbmRhbnRlLmFpYi5jb20pCisKKwkqIExpbnV4IDEuMS42NSByZWxlYXNlZC4KKworCSogZWF0YS5oOiBVcGRhdGUgdmVyc2lvbiBzdHJpbmcgdG8gMS4wOC4wMC4KKworCSogZWF0YS5jOiBTZXQgc2dfdGFibGVzaXplIGNvcnJlY3RseSBmb3IgRFBUIFBNMjAxMiBib2FyZHMuCisKKwkqIGFoYTI3NHguc2VxOiBTcGVsbCBjaGVja2luZy4KKworCSogUkVBRE1FLnN0OiBMaWtld2lzZS4KKworCSogUkVBRE1FLmFoYTI3NHg6IExpa2V3aXNlLgorCisJKiBDaGFuZ2VMb2c6IExpa2V3aXNlLgorCitUdWUgTm92IDE1IDE1OjM1OjA4IDE5OTQgIEVyaWMgWW91bmdkYWxlICAoZXJpY0BhbmRhbnRlLmFpYi5jb20pCisKKwkqIExpbnV4IDEuMS42NCByZWxlYXNlZC4KKworCSogdTE0LTM0Zi5oOiBVcGRhdGUgdmVyc2lvbiBudW1iZXIgdG8gMS4xMC4wMS4KKworCSogdTE0LTM0Zi5jOiBVc2UgU2NzaV9Ib3N0IGNhbl9xdWV1ZSB2YXJpYWJsZSBpbnN0ZWFkIG9mIG9uZSBmcm9tIHRlbXBsYXRlLgorCisJKiBlYXRhLltjLGhdOiBOZXcgZHJpdmVyIGZvciBEUFQgYm9hcmRzIGZyb20gRGFyaW8gQmFsbGFiaW8uCisKKwkqIGJ1c2xvZ2ljLmM6IFVzZSBjYW5fcXVldWUgZmllbGQuCisKK1dlZCBOb3YgMzAgMTI6MDk6MDkgMTk5NCAgRXJpYyBZb3VuZ2RhbGUgIChlcmljQGFuZGFudGUuYWliLmNvbSkKKworCSogTGludXggMS4xLjYzIHJlbGVhc2VkLgorCisJKiBzZC5jOiBHaXZlIEkvTyBlcnJvciBpZiB3ZSBhdHRlbXB0IDUxMiBieXRlIEkvTyB0byBhIGRpc2sgd2l0aAorCTEwMjQgYnl0ZSBzZWN0b3JzLgorCisJKiBzY3NpY2FtLmM6IE1ha2Ugc3VyZSB3ZSBkbyByZWFkIGZyb20gd2hvbGUgZGlzayAobWFzayBvZmYKKwlwYXJ0aXRpb24pLgorCisJKiBzY3NpLmM6IFVzZSBjYW5fcXVldWUgaW4gU2NzaV9Ib3N0IHN0cnVjdHVyZS4KKwlGaXggcGFuaWMgbWVzc2FnZSBhYm91dCBpbnZhbGlkIGhvc3QuCisKKwkqIGhvc3RzLmM6IEluaXRpYWxpemUgY2FuX3F1ZXVlIGZyb20gdGVtcGxhdGUuCisKKwkqIGhvc3RzLmg6IEFkZCBjYW5fcXVldWUgdG8gU2NzaV9Ib3N0IHN0cnVjdHVyZS4KKworCSogYWhhMTc0MC5jOiBQcmludCBvdXQgd2FybmluZyBhYm91dCBOVUxMIGVjYnB0ci4KKworRnJpIE5vdiAgNCAxMjo0MDozMCAxOTk0ICBFcmljIFlvdW5nZGFsZSAgKGVyaWNAYW5kYW50ZS5haWIuY29tKQorCisJKiBMaW51eCAxLjEuNjIgcmVsZWFzZWQuCisKKwkqIGZkb21haW4uYzogVXBkYXRlIHRvIHZlcnNpb24gNS4yMC4gKEZyb20gUmlrIEZhaXRoKS4gIFN1cHBvcnQKKwlCSU9TIHZlcnNpb24gMy41LgorCisJKiBzdC5oOiBBZGQgU1RfRU9EIHN5bWJvbC4KKworCSogc3QuYzogUGF0Y2hlcyBmcm9tIEthaSBNYWtpc2FyYSAtIHN1cHBvcnQgYWRkaXRpb25hbCBkZW5zaXRpZXMsCisJYWRkIHN1cHBvcnQgZm9yIE1URlNTLCBNVEJTUywgTVRXU00gY29tbWFuZHMuCisKKwkqIFJFQURNRS5zdDogVXBkYXRlIHRvIGRvY3VtZW50IG5ldyBjb21tYW5kcy4KKworCSogc2NzaS5jOiBBZGQgTWVkaWF2aXNpb24gQ0RSLUg5M01WIHRvIGJsYWNrbGlzdC4KKworU2F0IE9jdCAyOSAyMDo1NzozNiAxOTk0ICBFcmljIFlvdW5nZGFsZSAgKGVyaWNAYW5kYW50ZS5haWIuY29tKQorCisJKiBMaW51eCAxLjEuNjAgcmVsZWFzZWQuCisKKwkqIHUxNC0zNGYuW2MsaF06IE5ldyBkcml2ZXIgZnJvbSBEYXJpbyBCYWxsYWJpby4KKworCSogYWljNzc3MC5jLCBhaGEyNzR4X3NlcS5oLCBhaGEyNzR4LnNlcSwgYWhhMjc0eC5oLCBhaGEyNzR4LmMsCisJUkVBRE1FLmFoYTI3NHg6IE5ldyBmaWxlcywgbmV3IGRyaXZlciBmcm9tIEpvaG4gQXljb2NrLgorCisKK1R1ZSBPY3QgMTEgMDg6NDc6MzkgMTk5NCAgRXJpYyBZb3VuZ2RhbGUgIChlcmljQGFuZGFudGUpCisKKwkqIExpbnV4IDEuMS41NCByZWxlYXNlZC4KKworCSogQWRkIHRoaXJkIFBDSSBjaGlwIGlkLiAgW0RyZXddCisKKwkqIGJ1c2xvZ2ljLmM6IFNldCBCVVNMT0dJQ19DTURMVU4gYmFjayB0byAxIFtFcmljXS4KKworCSogdWx0cmFzdG9yLmM6IEZpeCBhc20gZGlyZWN0aXZlcyBmb3IgbmV3IEdDQy4KKworCSogc3IuYywgc2QuYzogVXNlIG5ldyBlbmRfc2NzaV9yZXF1ZXN0IGZ1bmN0aW9uLgorCisJKiBzY3NpLmgoZW5kX3Njc2lfcmVxdWVzdCk6IFJldHVybiBwb2ludGVyIHRvIGJsb2NrIGlmIHN0aWxsCisJYWN0aXZlLCBlbHNlIHJldHVybiBOVUxMIGlmIGluYWN0aXZlLiAgRml4ZXMgcmFjZSBjb25kaXRpb24uCisKK1N1biBPY3QgIDkgMjA6MjM6MTQgMTk5NCAgRXJpYyBZb3VuZ2RhbGUgIChlcmljQGFuZGFudGUpCisKKwkqIExpbnV4IDEuMS41MyByZWxlYXNlZC4KKworCSogc2NzaS5jOiBEbyBub3QgYWxsb2NhdGUgZG1hIGJvdW5jZSBidWZmZXJzIGlmIHdlIGhhdmUgZXhhY3RseQorCTE2TWIuCisKK0ZyaSBTZXAgIDkgMDU6MzU6MzAgMTk5NCAgRXJpYyBZb3VuZ2RhbGUgIChlcmljQGFuZGFudGUpCisKKwkqIExpbnV4IDEuMS41MSByZWxlYXNlZC4KKworCSogYWhhMTUyeC5jOiBBZGQgc3VwcG9ydCBmb3IgZGlzYWJsaW5nIHRoZSBwYXJpdHkgY2hlY2suICBVcGRhdGUKKwl0byB2ZXJzaW9uIDEuNC4gW0p1ZXJnZW5dLgorCisJKiBzZWFnYXRlLmM6IFR3ZWFrIGRlYnVnZ2luZyBtZXNzYWdlLgorCitXZWQgQXVnIDMxIDEwOjE1OjU1IDE5OTQgIEVyaWMgWW91bmdkYWxlICAoZXJpY0BhbmRhbnRlKQorCisJKiBMaW51eCAxLjEuNTAgcmVsZWFzZWQuCisKKwkqIGFoYTE1MnguYzogQWRkIGViODAwIGZvciBWdGVjaCBQbGF0aW51bSBTTVAgYm9hcmRzLiBbSnVlcmdlbl0uCisKKwkqIHNjc2kuYzogQWRkIFF1YW50dW0gUEQxMjI1UyB0byBibGFja2xpc3QuCisKK0ZyaSBBdWcgMjYgMDk6Mzg6NDUgMTk5NCAgRXJpYyBZb3VuZ2RhbGUgIChlcmljQGFuZGFudGUpCisKKwkqIExpbnV4IDEuMS40OSByZWxlYXNlZC4KKworCSogc2QuYzogRml4IGJ1ZyB3aGVuIHdlIHdlcmUgZGVsZXRpbmcgdGhlIHdyb25nIGVudHJ5IGlmIHdlCisJZ2V0IGFuIHVuc3VwcG9ydGVkIHNlY3RvciBzaXplIGRldmljZS4KKworCSogc3IuYzogQW5vdGhlciBzcGVsbGluZyBwYXRjaC4KKworVGh1IEF1ZyAyNSAwOToxNToyNyAxOTk0ICBFcmljIFlvdW5nZGFsZSAgKGVyaWNAYW5kYW50ZSkKKworCSogTGludXggMS4xLjQ4IHJlbGVhc2VkLgorCisJKiBUaHJvdWdob3V0OiBVc2UgbmV3IHNlbWFudGljcyBmb3IgcmVxdWVzdF9kbWEsIGFzIGFwcHJvcHJpYXRlLgorCisJKiBzci5jOiBQcmludCBjb3JyZWN0IGRldmljZSBudW1iZXIuCisKK1N1biBBdWcgMjEgMTc6NDk6MjMgMTk5NCAgRXJpYyBZb3VuZ2RhbGUgIChlcmljQGFuZGFudGUpCisKKwkqIExpbnV4IDEuMS40NyByZWxlYXNlZC4KKworCSogTkNSNTM4MC5jOiBBZGQgc3VwcG9ydCBmb3IgTElNSVRfVFJBTlNGRVJTSVpFLgorCisJKiBjb25zdGFudHMuaDogQWRkIHByb3RvdHlwZSBmb3IgcHJpbnRfU2NzaV9DbW5kLgorCisJKiBwYXMxNi5jOiBTb21lIG1vcmUgbWlub3IgdHdlYWtzLiAgVGVzdCBmb3IgTWVkaWF2aXNpb24gYm9hcmQuCisJQWxsb3cgZm9yIGRpc2tzID4gMUdiLiAgW0RyZXc/P10KKworCSogc3IuYzogU2V0IFNDcG50LT50cmFuc2ZlcnNpemUuCisKK1R1ZSBBdWcgMTYgMTc6Mjk6MzUgMTk5NCAgRXJpYyBZb3VuZ2RhbGUgIChlcmljQGFuZGFudGUpCisKKwkqIExpbnV4IDEuMS40NiByZWxlYXNlZC4KKworCSogVGhyb3VnaG91dDogTW9yZSBzcGVsbGluZyBmaXh1cHMuCisKKwkqIGJ1c2xvZ2ljLmM6IEFkZCBhIGZldyBtb3JlIGZpeHVwcyBmcm9tIERhdmUuICBEaXNrIHRyYW5zbGF0aW9uCisJbWFpbmx5LgorCisJKiBwYXMxNi5jOiBBZGQgYSBmZXcgcGF0Y2hlcyAoRHJldz8pLgorCisKK1RodSBBdWcgMTEgMjA6NDU6MTUgMTk5NCAgRXJpYyBZb3VuZ2RhbGUgIChlcmljQGFuZGFudGUpCisKKwkqIExpbnV4IDEuMS40NCByZWxlYXNlZC4KKworCSogaG9zdHMuYzogQWRkIHR5cGUgY2FzdHMgZm9yIHNjc2lfaW5pdF9tYWxsb2MuCisKKwkqIHNjc2ljYW0uYzogQWRkIHR5cGUgY2FzdC4KKworV2VkIEF1ZyAxMCAxOToyMzowMSAxOTk0ICBFcmljIFlvdW5nZGFsZSAgKGVyaWNAYW5kYW50ZSkKKworCSogTGludXggMS4xLjQzIHJlbGVhc2VkLgorCisJKiBUaHJvdWdob3V0OiBTcGVsbGluZyBjbGVhbnVwcy4gWz8/XQorCisJKiBhaGExNTJ4LmMsIE5DUjUzKi5jLCBmZG9tYWluLmMsIGdfTkNSNTM4MC5jLCBwYXMxNi5jLCBzZWFnYXRlLmMsCisJIHQxMjguYzogVXNlIHJlcXVlc3RfaXJxLCBub3QgaXJxYWN0aW9uLiBbPz9dCisKKwkqIGFoYTE1NDIuYzogTW92ZSB0ZXN0IGZvciBzaG9zdCBiZWZvcmUgd2Ugc3RhcnQgdG8gdXNlIHNob3N0LgorCisJKiBhaGExNTQyLmMsIGFoYTE3NDAuYywgdWx0cmFzdG9yLmMsIHdkNzAwMC5jOiBVc2UgbmV3CisJY2FsbGluZyBzZXF1ZW5jZSBmb3IgcmVxdWVzdF9pcnEuCisKKwkqIGJ1c2xvZ2ljLmM6IFVwZGF0ZSBmcm9tIERhdmUgR2VudHplbC4KKworVHVlIEF1ZyAgOSAwOTozMjo1OSAxOTk0ICBFcmljIFlvdW5nZGFsZSAgKGVyaWNAYW5kYW50ZSkKKworCSogTGludXggMS4xLjQyIHJlbGVhc2VkLgorCisJKiBOQ1I1MzgwLmM6IENoYW5nZSBOQ1I1MzgwX3ByaW50X3N0YXR1cyB0byBzdGF0aWMuCisKKwkqIHNlYWdhdGUuYzogQSBmZXcgbW9yZSBidWdmaXhlcy4gIE9ubHkgRHJldyBrbm93cyB3aGF0IHRoZXkgYXJlCisJZm9yLgorCisJKiB1bHRyYXN0b3IuYzogVHdlYWsgc29tZSBfX2FzbV9fIGRpcmVjdGl2ZXMgc28gdGhhdCBpdCB3b3JrcworCXdpdGggbmV3ZXIgY29tcGlsZXJzLiBbPz9dCisKK1NhdCBBdWcgIDYgMjE6Mjk6MzYgMTk5NCAgRXJpYyBZb3VuZ2RhbGUgIChlcmljQGFuZGFudGUpCisKKwkqIExpbnV4IDEuMS40MCByZWxlYXNlZC4KKworCSogTkNSNTM4MC5jOiBSZXR1cm4gU0NTSV9SRVNFVF9XQUtFVVAgZnJvbSByZXNldCBmdW5jdGlvbi4KKworCSogYWhhMTU0Mi5jOiBSZXNldCBtYWlsYm94IHN0YXR1cyBhZnRlciBhIGJ1cyBkZXZpY2UgcmVzZXQuCisKKwkqIGNvbnN0YW50cy5jOiBGaXggdHlwbyAoOzspLgorCisJKiBnX05DUjUzODAuYzoKKwkqIHBhczE2LmM6ICBDb3JyZWN0IHVzYWdlIG9mIE5DUjUzODBfaW5pdC4KKworCSogc2NzaS5jOiBSZW1vdmUgcmVkdW5kYW50IChhbmQgdW51c2VkIHZhcmlhYmxlcykuCisKKwkqIHNkLmM6IFVzZSBtZW1zZXQgdG8gY2xlYXIgYWxsIG9mIHJzY3NpX2Rpc2tzIGJlZm9yZSB3ZSB1c2UgaXQuCisKKwkqIHNnLmM6IERpdHRvLCBleGNlcHQgZm9yIHNjc2lfZ2VuZXJpY3MuCisKKwkqIHNyLmM6IERpdHRvLCBleGNlcHQgZm9yIHNjc2lfQ0RzLgorCisJKiBzdC5jOiBJbml0aWFsaXplIFNUcC0+ZGV2aWNlLgorCisJKiBzZWFnYXRlLmM6IEZpeCBidWcuIFtEcmV3XQorCitUaHUgQXVnICA0IDA4OjQ3OjI3IDE5OTQgIEVyaWMgWW91bmdkYWxlICAoZXJpY0BhbmRhbnRlKQorCisJKiBMaW51eCAxLjEuMzkgcmVsZWFzZWQuCisKKwkqIE1ha2VmaWxlOiBGaXggdHlwbyBpbiBOQ1I1M0M3eHguCisKKwkqIHN0LmM6IFByaW50IGNvcnJlY3QgbnVtYmVyIGZvciBkZXZpY2UuCisKK1R1ZSBBdWcgIDIgMTE6Mjk6MTQgMTk5NCAgRXJpYyBZb3VuZ2RhbGUgIChlcmljQGVzcDIyKQorCisJKiBMaW51eCAxLjEuMzggcmVsZWFzZWQuCisKKwlMb3RzIG9mIGNoYW5nZXMgaW4gMS4xLjM4LiAgQWxsIGZyb20gRHJldyB1bmxlc3Mgb3RoZXJ3aXNlIG5vdGVkLgorCisJKiA1M2M3LDh4eC5jOiBOZXcgZmlsZSBmcm9tIERyZXcuICBQQ0kgZHJpdmVyLgorCisJKiA1M2M3LDh4eC5oOiBMaWtld2lzZS4KKworCSogNTNjNyw4eHguc2NyOiBMaWtld2lzZS4KKworCSogNTNjOHh4X2QuaCwgNTNjOHh4X3UuaCwgc2NyaXB0X2FzbS5wbDogTGlrZXdpc2UuCisKKwkqIHNjc2ljYW0uYzogTmV3IGZpbGUgZnJvbSBEcmV3LiAgUmVhZCBibG9jayAwIG9uIHRoZSBkaXNrIGFuZAorCXJlYWQgdGhlIHBhcnRpdGlvbiB0YWJsZS4gIEF0dGVtcHQgdG8gZGVkdWNlIHRoZSBnZW9tZXRyeSBmcm9tCisJdGhlIHBhcnRpdGlvbiB0YWJsZSBpZiBwb3NzaWJsZS4gIE9ubHkgdXNlZCBieSA1M2NbNyw4XXh4IHJpZ2h0CisJbm93LCBidXQgY291bGQgYmUgdXNlZCBieSBhbnkgZGV2aWNlIGZvciB3aGljaCB3ZSBoYXZlIG5vIHdheQorCW9mIGlkZW50aWZ5aW5nIHRoZSBnZW9tZXRyeS4KKworCSogc2QuYzogVXNlIGRldmljZSBsZXR0ZXJzIGluc3RlYWQgb2Ygc2QlZCBpbiBhIGxvdCBvZiBtZXNzYWdlcy4KKworCSogc2VhZ2F0ZS5jOiBGaXggYnVnIHRoYXQgcmVzdWx0ZWQgaW4gbG9ja3VwcyB3aXRoIHNvbWUgZGV2aWNlcy4KKworCSogc3IuYyAoc3Jfb3Blbik6IFJldHVybiAtRVJPRlMsIG5vdCAtRUFDQ0VTIGlmIHdlIGF0dGVtcHQgdG8gb3BlbgorCWRldmljZSBmb3Igd3JpdGUuCisKKwkqIGhvc3RzLmMsIE1ha2VmaWxlOiBVcGRhdGUgZm9yIG5ldyBkcml2ZXIuCisKKwkqIE5DUjUzODAuYywgTkNSNTM4MC5oLCBnX05DUjUzODAuaDogVXBkYXRlIGZyb20gRHJldyB0byBzdXBwb3J0CisJNTNDNDAwIGNoaXAuCisKKwkqIGNvbnN0YW50cy5jOiBEZWZpbmUgQ09OU1RfQ01ORCBhbmQgQ09OU1RfTVNHLiAgT3RoZXIgbWlub3IKKwljbGVhbnVwcyBhbG9uZyB0aGUgd2F5LiAgSW1wcm92ZSBoYW5kbGluZyBvZiBDT05TVF9NU0cuCisKKwkqIGZkb21haW4uYywgZmRvbWFpbi5oOiBOZXcgdmVyc2lvbiBmcm9tIFJpayBGYWl0aC4gIFVwZGF0ZSB0bworCTUuMTguICBTaG91bGQgbm93IHN1cHBvcnQgVE1DLTMyNjAgUENJIGNhcmQgd2l0aCAxOEMzMCBjaGlwLgorCisJKiBwYXMxNi5jOiBVcGRhdGUgd2l0aCBuZXcgaXJxIGluaXRpYWxpemF0aW9uLgorCisJKiB0MTI4LmM6IFVwZGF0ZSB3aXRoIG1pbm9yIGNsZWFudXBzLgorCisJKiBzY3NpLmMgKHNjc2lfcGlkKTogTmV3IHZhcmlhYmxlIC0gZ2l2ZXMgZWFjaCBjb21tYW5kIGEgdW5pcXVlCisJaWQuIEFkZCBRdWFudHVtIExQUzUyMzVTIHRvIGJsYWNrbGlzdC4gIENoYW5nZSBpbl9zY2FuIHRvCisJaW5fc2Nhbl9zY3NpcyBhbmQgbWFrZSBnbG9iYWwuCisKKwkqIHNjc2kuaDogQWRkIHNvbWUgZGVmaW5lcyBmb3IgZXh0ZW5kZWQgbWVzc2FnZSBoYW5kbGluZywKKwlJTklUSUFURS9SRUxFQVNFX1JFQ09WRVJZLiAgQWRkIGEgZmV3IG5ldyBmaWVsZHMgdG8gc3VwcG9ydCBzeW5jCisJdHJhbnNmZXJzLgorCisJKiBzY3NpX2lvY3RsLmg6IEFkZCBpb2N0bCB0byByZXF1ZXN0IHN5bmNocm9ub3VzIHRyYW5zZmVycy4KKworCitUdWUgSnVsIDI2IDIxOjM2OjU4IDE5OTQgIEVyaWMgWW91bmdkYWxlICAoZXJpY0Blc3AyMikKKworCSogTGludXggMS4xLjM3IHJlbGVhc2VkLgorCisJKiBhaGExNTQyLmM6IEFsd2F5cyBjYWxsIGFoYTE1NDJfbWJlbmFibGUsIHVzZSBuZXcgdWRlbGF5CisJbWVjaGFuaXNtIHNvIHdlIGRvIG5vdCB3YWl0IGEgbG9uZyB0aW1lIGlmIHRoZSBib2FyZCBkb2VzIG5vdAorCWltcGxlbWVudCB0aGlzIGNvbW1hbmQuCisKKwkqIGdfTkNSNTM4MC5jOiBSZW1vdmUgI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPiBhbmQgI2lmCisJZGVmaW5lZChDT05GSUdfU0NTSV8qKS4KKworCSogc2VhZ2F0ZS5jOiBMaWtld2lzZS4KKworCU5leHQgcm91bmQgb2YgY2hhbmdlcyB0byBzdXBwb3J0IGxvYWRhYmxlIG1vZHVsZXMuICBHZXR0aW5nIGNsb3NlcgorCW5vdywgc3RpbGwgbm90IHBvc3NpYmxlIHRvIGRvIGFueXRoaW5nIHJlbW90ZWx5IHVzYWJsZS4KKworCWhvc3RzLmM6IENyZWF0ZSBhIGxpbmtlZCBsaXN0IG9mIGRldGVjdGVkIGhpZ2ggbGV2ZWwgZGV2aWNlcy4KKwkoc2NzaV9yZWdpc3Rlcl9kZXZpY2UpOiBOZXcgZnVuY3Rpb24gdG8gaW5zZXJ0IGludG8gdGhpcyBsaXN0LgorCShzY3NpX2luaXQpOiBDYWxsIHNjc2lfcmVnaXN0ZXJfZGV2aWNlIGZvciBlYWNoIG9mIHRoZSBrbm93biBoaWdoCisJbGV2ZWwgZHJpdmVycy4KKworCWhvc3RzLmg6IEFkZCBwcm90b3R5cGUgZm9yIGxpbmtlZCBsaXN0IGhlYWRlci4gIEFkZCBzdHJ1Y3R1cmUKKwlkZWZpbml0aW9uIGZvciBkZXZpY2UgdGVtcGxhdGUgc3RydWN0dXJlIHdoaWNoIGRlZmluZXMgdGhlIGxpbmtlZAorCWxpc3QuCisKKwlzY3NpLmM6IChzY2FuX3Njc2lzKTogVXNlIGxpbmtlZCBsaXN0IGluc3RlYWQgb2Yga25vd2xlZGdlIGFib3V0CisJZXhpc3RpbmcgaGlnaCBsZXZlbCBkZXZpY2UgZHJpdmVycy4KKwkoc2NzaV9kZXZfaW5pdCk6IFVzZSBpbml0IGZ1bmN0aW9ucyBmb3IgZHJpdmVycyBvbiBsaW5rZWQgbGlzdAorCWluc3RlYWQgb2YgZXhwbGljaXQgbGlzdCB0byBpbml0aWFsaXplIGFuZCBhdHRhY2ggZGV2aWNlcyB0byBoaWdoCisJbGV2ZWwgZHJpdmVycy4KKworCXNjc2kuaDogQWRkIG5ldyBmaWVsZCAiYXR0YWNoZWQiIHRvIHNjc2lfZGV2aWNlIC0gY291bnQgb2YgbnVtYmVyCisJb2YgaGlnaCBsZXZlbCBkZXZpY2VzIGF0dGFjaGVkLgorCisJc2QuYywgc3IuYywgc2cuYywgc3QuYzogQWRqdXN0IGluaXQvYXR0YWNoIGZ1bmN0aW9ucyB0byB1c2UgbmV3CisJc2NoZW1lLgorCitTYXQgSnVsIDIzIDEzOjAzOjE3IDE5OTQgIEVyaWMgWW91bmdkYWxlICAoZXJpY0Blc3AyMikKKworCSogTGludXggMS4xLjM1IHJlbGVhc2VkLgorCisJKiB1bHRyYXN0b3IuYzogQ2hhbmdlIGNvbnN0cmFpbnQgb24gYXNtKCkgb3BlcmFuZCBzbyB0aGF0IGl0IHdvcmtzCisJd2l0aCBnY2MgMi42LjAuCisKK1RodSBKdWwgMjEgMTA6Mzc6MzkgMTk5NCAgRXJpYyBZb3VuZ2RhbGUgIChlcmljQGVzcDIyKQorCisJKiBMaW51eCAxLjEuMzMgcmVsZWFzZWQuCisKKwkqIHNyLmMoc3Jfb3Blbik6IERvIG5vdCBhbGxvdyBvcGVucyB3aXRoIHdyaXRlIGFjY2Vzcy4KKworTW9uIEp1bCAxOCAwOTo1MToyMiAxOTk0ICBFcmljIFlvdW5nZGFsZSAgKGVyaWNAZXNwMjIpCisKKwkqIExpbnV4IDEuMS4zMSByZWxlYXNlZC4KKworCSogc2QuYzogSW5jcmVhc2UgU0RfVElNRU9VVCBmcm9tIDMwMCB0byA2MDAuCisKKwkqIHNyLmM6IFJlbW92ZSBzdHJheSB0YXNrX3N0cnVjdCogdmFyaWFibGUgdGhhdCB3YXMgbm8gbG9uZ2VyCisJdXNlZC4KKworCSogc3JfaW9jdGwuYzogRml4IHR5cG8gaW4gdXAoKSBjYWxsLgorCitTdW4gSnVsIDE3IDE2OjI1OjI5IDE5OTQgIEVyaWMgWW91bmdkYWxlICAoZXJpY0Blc3AyMikKKworCSogTGludXggMS4xLjMwIHJlbGVhc2VkLgorCisJKiBzY3NpLmMgKHNjYW5fc2NzaXMpOiBGaXggZGV0ZWN0aW9uIG9mIHNvbWUgVG9zaGliYSBDRFJPTSBkcml2ZXMKKwl0aGF0IHJlcG9ydCB0aGVtc2VsdmVzIGFzIGRpc2sgZHJpdmVzLgorCisJKiAoVGhyb3VnaG91dCk6IFVzZSByZXF1ZXN0LnNlbSBpbnN0ZWFkIG9mIHJlcXVlc3Qud2FpdGluZy4KKwlTaG91bGQgZml4IHN3YXAgcHJvYmxlbSB3aXRoIGZkb21haW4uCisKK1RodSBKdWwgMTQgMTA6NTE6NDIgMTk5NCAgRXJpYyBZb3VuZ2RhbGUgIChlcmljQGVzcDIyKQorCisJKiBMaW51eCAxLjEuMjkgcmVsZWFzZWQuCisKKwkqIHNjc2kuYyAoc2Nhbl9zY3Npcyk6IEFkZCBuZXcgZGV2aWNlcyB0byBlbmQgb2YgbGlua2VkIGxpc3QsIG5vdAorCXRvIHRoZSBiZWdpbm5pbmcuCisKKwkqIHNjc2kuaCAoU0NTSV9TTEVFUCk6IFJlbW92ZSBicmFpbiBkZWFkIGhhY2sgdG8gdHJ5IHRvIHNhdmUKKwl0aGUgdGFzayBzdGF0ZSBiZWZvcmUgc2xlZXBpbmcuCisKK1NhdCBKdWwgIDkgMTU6MDE6MDMgMTk5NCAgRXJpYyBZb3VuZ2RhbGUgIChlcmljQGVzcDIyKQorCisJTW9yZSBjaGFuZ2VzIHRvIGV2ZW50dWFsbHkgc3VwcG9ydCBsb2FkYWJsZSBtb2R1bGVzLiAgTWFpbmx5CisJd2Ugd2FudCB0byB1c2UgbGlua2VkIGxpc3RzIGluc3RlYWQgb2YgYXJyYXlzIGJlY2F1c2UgaXQgaXMgZWFzaWVyCisJdG8gZHluYW1pY2FsbHkgYWRkIGFuZCByZW1vdmUgdGhpbmdzIHRoaXMgd2F5LgorCisJUXVpdGUgYSBiaXQgbW9yZSB3b3JrIGlzIG5lZWRlZCBiZWZvcmUgbG9hZGFibGUgbW9kdWxlcyBhcmUKKwlwb3NzaWJsZSAoYW5kIHVzYWJsZSkgd2l0aCBzY3NpLCBidXQgdGhpcyBpcyBtb3N0IG9mIHRoZSBncnVuZ2UKKwl3b3JrLgorCisJKiBMaW51eCAxLjEuMjggcmVsZWFzZWQuCisKKwkqIHNjc2kuYywgc2NzaS5oIChhbGxvY2F0ZV9kZXZpY2UsIHJlcXVlc3RfcXVldWVhYmxlKTogQ2hhbmdlCisJYXJndW1lbnQgZnJvbSBpbmRleCBpbnRvIHNjc2lfZGV2aWNlcyB0byBhIHBvaW50ZXIgdG8gdGhlCisJU2NzaV9EZXZpY2Ugc3RydWN0LgorCisJKiBUaHJvdWdob3V0OiBDaGFuZ2UgYWxsIGNhbGxzIHRvIGFsbG9jYXRlX2RldmljZSwKKwlyZXF1ZXN0X3F1ZXVlYWJsZSB0byB1c2UgbmV3IGNhbGxpbmcgc2VxdWVuY2UuCisKKwkqIFRocm91Z2hvdXQ6IFVzZSBTQ3BudC0+ZGV2aWNlIGluc3RlYWQgb2YKKwlzY3NpX2RldmljZXNbU0NwbnQtPmluZGV4XS4gIFVnaCAtIHRoZSBwb2ludGVyIHdhcyB0aGVyZSBhbGwgYWxvbmcKKwktIG11Y2ggY2xlYW5lciB0aGlzIHdheS4KKworCSogc2NzaS5jIChzY3NpX2luaXRfbWFsbG9jLCBzY3NpX2ZyZWVfbWFsbG9jKTogTmV3IGZ1bmN0aW9ucyAtCisJYWxsb3cgdXMgdG8gcHJldGVuZCB0aGF0IHdlIGhhdmUgYSB3b3JraW5nIG1hbGxvYyB3aGVuIHdlCisJaW5pdGlhbGl6ZS4gIFVzZSB0aGlzIGluc3RlYWQgb2YgcGFzc2luZyBtZW1vcnlfc3RhcnQsIG1lbW9yeV9lbmQKKwlhcm91bmQgYWxsIG92ZXIgdGhlIHBsYWNlLgorCisJKiBzY3NpLmgsIHN0LmMsIHNyLmMsIHNkLmMsIHNnLmM6IENoYW5nZSAqX2luaXQxIGZ1bmN0aW9ucyB0byB1c2UKKwlzY3NpX2luaXRfbWFsbG9jLCByZW1vdmUgYWxsIGFyZ3VtZW50cywgbm8gcmV0dXJuIHZhbHVlLgorCisJKiBzY3NpLmg6IFJlbW92ZSBpbmRleCBmaWVsZCBmcm9tIFNjc2lfRGV2aWNlIGFuZCBTY3NpX0NtbmQKKwlzdHJ1Y3RzLgorCisJKiBzY3NpLmMgKHNjc2lfZGV2X2luaXQpOiBTZXQgdXAgZm9yIHNjc2lfaW5pdF9tYWxsb2MuCisJKHNjYW5fc2NzaXMpOiBHZXQgU0RwbnQgZnJvbSBzY3NpX2luaXRfbWFsbG9jLCBhbmQgcmVmcmVzaAorCXdoZW4gd2UgZGlzY292ZXIgYSBkZXZpY2UuICBGcmVlIHBvaW50ZXIgYmVmb3JlIHJldHVybmluZy4KKwlDaGFuZ2Ugc2NzaV9kZXZpY2VzIGludG8gYSBsaW5rZWQgbGlzdC4KKworCSogc2NzaS5jIChzY2FuX3Njc2lzKTogQ2hhbmdlIHRvIG9ubHkgc2NhbiBvbmUgaG9zdC4KKwkoc2NzaV9kZXZfaW5pdCk6IExvb3Agb3ZlciBhbGwgZGV0ZWN0ZWQgaG9zdHMsIGFuZCBzY2FuIHRoZW0uCisKKwkqIGhvc3RzLmMgIChzY3NpX2luaXRfZnJlZSk6IENoYW5nZSBzbyB0aGF0ICBudW1iZXIgb2YgZXh0cmEgYnl0ZXMKKwlpcyBzdG9yZWQgaW4gc3RydWN0LCBhbmQgd2UgZG8gbm90IGhhdmUgdG8gcGFzcyBpdCBlYWNoIHRpbWUuCisKKwkqIGhvc3RzLmg6IENoYW5nZSBTY3NpX0hvc3RfVGVtcGxhdGUgc3RydWN0IHRvIGluY2x1ZGUgIm5leHQiIGFuZAorCSJyZWxlYXNlIiBmdW5jdGlvbnMuICBJbml0aWFsaXplIHRvIE5VTEwgaW4gYWxsIGxvdyBsZXZlbAorCWFkYXB0ZXJzLgorCisJKiBob3N0cy5jOiBSZW5hbWUgc2NzaV9ob3N0cyB0byBidWlsdGluX3Njc2lfaG9zdHMsIGNyZWF0ZSBsaW5rZWQKKwlsaXN0IHNjc2lfaG9zdHMsIGxpbmtlZCB0b2dldGhlciB3aXRoIHRoZSBuZXcgIm5leHQiIGZpZWxkLgorCitXZWQgSnVsICA2IDA1OjQ1OjAyIDE5OTQgIEVyaWMgWW91bmdkYWxlICAoZXJpY0Blc3AyMikKKworCSogTGludXggMS4xLjI1IHJlbGVhc2VkLgorCisJKiBhaGExNTJ4LmM6IENoYW5nZXMgZnJvbSBKdWVyZ2VuIC0gY2xlYW51cHMgYW5kIHVwZGF0ZXMuCisKKwkqIHNkLmMsIHNyLmM6IFVzZSBuZXcgY2hlY2tfbWVkaWFfY2hhbmdlIGFuZCByZXZhbGlkYXRlCisJZmlsZV9vcGVyYXRpb25zIGZpZWxkcy4KKworCSogc3QuYywgc3QuaDogQWRkIGNoYW5nZXMgZnJvbSBLYWkgTWFraXNhcmEsIGRhdGVkIEp1biAyMi4KKworCSogaG9zdHMuaDogQ2hhbmdlIFNHX0FMTCBiYWNrIHRvIDB4ZmYuICBBcHBhcmVudGx5IHNvZnQgZXJyb3IKKwlpbiAvZGV2L2JyYWluIHJlc3VsdGVkIGluIGhhdmluZyB0aGlzIGJ1bXBlZCB1cC4KKwlDaGFuZ2UgZmlyc3QgcGFyYW1ldGVyIGluIGJpb3NfcGFyYW0gZnVuY3Rpb24gdG8gYmUgRGlzayAqIGluc3RlYWQKKwlvZiBpbmRleCBpbnRvIHJzY3NpX2Rpc2tzLgorCisJKiBzZF9pb2N0bC5jOiBQYXNzIHBvaW50ZXIgdG8gcnNjc2lfZGlza3MgZWxlbWVudCBpbnN0ZWFkIG9mIGluZGV4CisJdG8gYXJyYXkuCisKKwkqIHNkLmg6IEFkZCBzdHJ1Y3QgbmFtZSAic2NzaV9kaXNrIiB0byB0eXBlZGVmIGZvciBTY3NpX0Rpc2suCisKKwkqIHNjc2kuYzogUmVtb3ZlIHJlZHVuZGFudCBNYXh0b3IgWFQ4NzYwUyBmcm9tIGJsYWNrbGlzdC4KKwlJbiBzY3NpX3Jlc2V0LCBhZGQgcHJpbnRrIHdoZW4gREVCVUcgZGVmaW5lZC4KKworCSogQWxsIGxvdyBsZXZlbCBkcml2ZXJzOiBNb2RpZnkgZGVmaW5pdGlvbnMgb2YgYmlvc19wYXJhbSBpbgorCWFwcHJvcHJpYXRlIHdheS4KKworVGh1IEp1biAxNiAxMDozMTo1OSAxOTk0ICBFcmljIFlvdW5nZGFsZSAgKGVyaWNAZXNwMjIpCisKKwkqIExpbnV4IDEuMS4yMCByZWxlYXNlZC4KKworCSogc2NzaV9pb2N0bC5jOiBPbmx5IHBhc3MgZG93biB0aGUgYWN0dWFsIG51bWJlciBvZiBjaGFyYWN0ZXJzCisJcmVxdWlyZWQgdG8gc2NzaV9kb19jbWQsIG5vdCB0aGUgb25lIHJvdW5kZWQgdXAgdG8gYSBldmVuIG51bWJlcgorCW9mIHNlY3RvcnMuCisKKwkqIHVsdHJhc3Rvci5jOiBDaGFuZ2VzIGZyb20gQ2FsZWIgRXBzdGVpbiBmb3IgMjRmIGNhcmRzLiAgU3VwcG9ydAorCWxhcmdlciBTRyBsaXN0cy4KKworCSogdWx0cmFzdG9yLmM6IENoYW5nZXMgZnJvbSBtZSAtIHVzZSBzY3NpX3JlZ2lzdGVyIHRvIHJlZ2lzdGVyCisJaG9zdC4gIEFkZCBzb21lIGNvbnNpc3RlbmN5IGNoZWNraW5nLAorCitXZWQgSnVuICAxIDIxOjEyOjEzIDE5OTQgIEVyaWMgWW91bmdkYWxlICAoZXJpY0Blc3AyMikKKworCSogTGludXggMS4xLjE5IHJlbGVhc2VkLgorCisJKiBzY3NpLmg6IEFkZCBuZXcgcmV0dXJuIGNvZGUgZm9yIHJlc2V0KCkgZnVuY3Rpb246CisJU0NTSV9SRVNFVF9QVU5ULgorCisJKiBzY3NpLmM6IE1ha2UgU0NTSV9SRVNFVF9QVU5UIHRoZSBzYW1lIGFzIFNDU0lfUkVTRVRfV0FLRVVQIGZvcgorCW5vdy4KKworCSogYWhhMTU0Mi5jOiBJZiB0aGUgY29tbWFuZCByZXNwb25zaWJsZSBmb3IgdGhlIHJlc2V0IGlzIG5vdAorCXBlbmRpbmcsIHJldHVybiBTQ1NJX1JFU0VUX1BVTlQuCisKKwkqIGFoYTE3NDAuYywgYnVzbG9naWMuYywgd2Q3MDAwLmMsIHVsdHJhc3Rvci5jOiBSZXR1cm4KKwlTQ1NJX1JFU0VUX1BVTlQgaW5zdGVhZCBvZiBTQ1NJX1JFU0VUX1NOT09aRS4KKworVHVlIE1heSAzMSAxOTozNjowMSAxOTk0ICBFcmljIFlvdW5nZGFsZSAgKGVyaWNAZXNwMjIpCisKKwkqIGJ1c2xvZ2ljLmM6IERvIG5vdCBwcmludCBvdXQgbWVzc2FnZSBhYm91dCAibXVzdCBiZSBBZGFwdGVjIgorCWlmIHdlIGhhdmUgZGV0ZWN0ZWQgYSBidXNsb2dpYyBjYXJkLiAgUHJpbnQgb3V0IGEgd2FybmluZyBtZXNzYWdlCisJaWYgd2UgYXJlIGNvbmZpZ3VyaW5nIGZvciA+MTZNYiwgc2luY2UgdGhlIDQ0NVMgYXQgYm9hcmQgbGV2ZWwKKwlEIG9yIGVhcmxpZXIgZG9lcyBub3Qgd29yayByaWdodC4gIFRoZSAiRCIgbGV2ZWwgYm9hcmQgY2FuIGJlIG1hZGUKKwl0byB3b3JrIGJ5IGZsaXBwaW5nIGFuIHVuZG9jdW1lbnRlZCBzd2l0Y2gsIGJ1dCB0aGlzIGlzIHRvbyBzdWJ0bGUuCisKKyAgICBDaGFuZ2VzIGJhc2VkIHVwb24gcGF0Y2hlcyBpbiBZZ2dkcmFzaWwgZGlzdHJpYnV0aW9uLgorCisJKiBzZy5jLCBzZy5oOiBSZXR1cm4gc2Vuc2UgZGF0YSB0byB1c2VyLgorCisJKiBhaGExNTQyLmMsIGFoYTE3NDAuYywgYnVzbG9naWMuYzogRG8gbm90IHBhbmljIGlmCisJc2Vuc2UgYnVmZmVyIGlzIHdyb25nIHNpemUuCisKKwkqIGhvc3RzLmM6IFRlc3QgZm9yIHVsdHJhc3RvciBjYXJkIGJlZm9yZSBhbnkgb2YgdGhlIG90aGVycy4KKworCSogc2NzaS5jOiBBbGxvdyBib290LXRpbWUgb3B0aW9uIGZvciBtYXhfc2NzaV9sdW5zPT8gc28gdGhhdAorCWJ1Z2d5IGZpcm13YXJlIGhhcyBhbiBlYXN5IHdvcmstYXJvdW5kLgorCitTdW4gTWF5IDE1IDIwOjI0OjM0IDE5OTQgIEVyaWMgWW91bmdkYWxlICAoZXJpY0Blc3AyMikKKworCSogTGludXggMS4xLjE1IHJlbGVhc2VkLgorCisJUG9zdC1jb2RlZnJlZXplIHRoYXcuLi4KKworCSogYnVzbG9naWMuW2MsaF06IE5ldyBkcml2ZXIgZnJvbSBEYXZpZCBHZW50emVsLgorCisJKiBob3N0cy5oOiBBZGQgdXNlX2NsdXN0ZXJpbmcgZmllbGQgdG8gZXhwbGljaXRseSBzYXkgd2hldGhlcgorCWNsdXN0ZXJpbmcgc2hvdWxkIGJlIHVzZWQgZm9yIGRldmljZXMgYXR0YWNoZWQgdG8gdGhpcyBob3N0CisJYWRhcHRlci4gIFRoZSBidXNsb2dpYyBib2FyZCBhcHBhcmVudGx5IHN1cHBvcnRzIGxhcmdlIFNHIGxpc3RzLAorCWJ1dCBpdCBpcyBhcHBhcmVudGx5IGZhc3RlciBpZiBzZC5jIGNvbmRlbnNlcyB0aGlzIGludG8gYSBzbWFsbGVyCisJbGlzdC4KKworCSogc2QuYzogVXNlIHRoaXMgZmllbGQgaW5zdGVhZCBvZiBoZXVyaXN0aWMuCisKKwkqIEFsbCBob3N0IGFkYXB0ZXIgaW5jbHVkZSBmaWxlczogQWRkIGFwcHJvcHJpYXRlIGluaXRpYWxpemVyIGZvcgorCXVzZV9jbHVzdGVyaW5nIGZpZWxkLgorCisJKiBzY3NpLmg6IEFkZCAjZGVmaW5lcyBmb3IgcmV0dXJuIGNvZGVzIGZvciB0aGUgYWJvcnQgYW5kIHJlc2V0CisJZnVuY3Rpb25zLiAgVGhlcmUgYXJlIG5vdyBhIHNwZWNpZmljIHNldCBvZiByZXR1cm4gY29kZXMgdG8gZnVsbHkKKwlzcGVjaWZ5IGFsbCBvZiB0aGUgcG9zc2libGUgdGhpbmdzIHRoYXQgdGhlIGxvdy1sZXZlbCBhZGFwdGVyCisJY291bGQgZG8uCisKKwkqIHNjc2kuYzogQWN0IGJhc2VkIHVwb24gcmV0dXJuIGNvZGVzIGZyb20gYWJvcnQvcmVzZXQgZnVuY3Rpb25zLgorCisJKiBBbGwgaG9zdCBhZGFwdGVyIGFib3J0L3Jlc2V0IGZ1bmN0aW9uczogUmV0dXJuIG5ldyByZXR1cm4gY29kZS4KKworCSogQWRkIGNvZGUgaW4gc2NzaS5jIHRvIGhlbHAgZGVidWcgdGltZW91dHMuICBVc2UgI2RlZmluZQorCURFQlVHX1RJTUVPVVQgdG8gZW5hYmxlIHRoaXMuCisKKwkqIHNjc2kuYzogSWYgdGhlIGhvc3QtPmlycSBmaWVsZCBpcyBzZXQsIHVzZQorCWRpc2FibGVfaXJxL2VuYWJsZV9pcnEgYmVmb3JlIGNhbGxpbmcgcXVldWVjb21tYW5kIGlmIHdlCisJYXJlIG5vdCBhbHJlYWR5IGluIGFuIGludGVycnVwdC4gIFJlZHVjZSByYWNlcywgYW5kIHdlCisJY2FuIGJlIHNsb3BwaWVyIGFib3V0IGNsaS9zdGkgaW4gdGhlIGludGVycnVwdCByb3V0aW5lcyBub3cKKwkocmVkdWNlIGludGVycnVwdCBsYXRlbmN5KS4KKworCSogY29uc3RhbnRzLmM6IEZpeCBzb21lIHRoaW5ncyB0byBlbGltaW5hdGUgd2FybmluZ3MuICBBZGQgc29tZQorCXNlbnNlIGRlc2NyaXB0aW9ucyB0aGF0IHdlcmUgb21pdHRlZCBiZWZvcmUuCisKKwkqIGFoYTE1NDIuYzogV2F0Y2ggZm9yIFNDUkQgZnJvbSBob3N0IGFkYXB0ZXIgLSBpZiB3ZSBzZWUgaXQsIHNldAorCWEgZmxhZy4gIEN1cnJlbnRseSB3ZSBvbmx5IHByaW50IG91dCB0aGUgbnVtYmVyIG9mIHBlbmRpbmcKKwljb21tYW5kcyB0aGF0IG1pZ2h0IG5lZWQgdG8gYmUgcmVzdGFydGVkLgorCisJKiBhaGExNTQyLmMgKGFoYTE1NDJfYWJvcnQpOiBMb29rIGZvciBsb3N0IGludGVycnVwdHMsIE9HTUIgc3RpbGwKKwlmdWxsLCBhbmQgYXR0ZW1wdCB0byByZWNvdmVyLiAgT3RoZXJ3aXNlIGdpdmUgdXAuCisKKwkqIGFoYTE1NDIuYyAoYWhhMTU0Ml9yZXNldCk6IFRyeSBCVVMgREVWSUNFIFJFU0VULCBhbmQgdGhlbiBwYXNzCisJRElEX1JFU0VUIGJhY2sgdXAgdG8gdGhlIHVwcGVyIGxldmVsIGNvZGUgZm9yIGFsbCBjb21tYW5kcyBydW5uaW5nCisJb24gdGhpcyB0YXJnZXQgKGV2ZW4gb24gZGlmZmVyZW50IExVTnMpLgorCitTYXQgTWF5ICA3IDE0OjU0OjAxIDE5OTQKKworCSogTGludXggMS4xLjEyIHJlbGVhc2VkLgorCisJKiBzdC5jLCBzdC5oOiBOZXcgdmVyc2lvbiBmcm9tIEthaS4gIFN1cHBvcnRzIGJvb3QgdGltZQorCXNwZWNpZmljYXRpb24gb2YgbnVtYmVyIG9mIGJ1ZmZlcnMuCisKKwkqIHdkNzAwMC5bYyxoXTogVXBkYXRlZCBkcml2ZXIgZnJvbSBKb2huIEJveWQuICBOb3cgc3VwcG9ydHMKKwltb3JlIHRoYW4gb25lIHdkNzAwMCBib2FyZCBpbiBtYWNoaW5lIGF0IG9uZSB0aW1lLCBhbW9uZyBvdGhlciB0aGluZ3MuCisKK1dlZCBBcHIgMjAgMjI6MjA6MzUgMTk5NAorCisJKiBMaW51eCAxLjEuOCByZWxlYXNlZC4KKworCSogc2QuYzogQWRkIGEgZmV3IHR5cGUgY2FzdHMgd2hlcmUgc2NzaV9tYWxsb2MgaXMgY2FsbGVkLgorCitXZWQgQXByIDEzIDEyOjUzOjI5IDE5OTQKKworCSogTGludXggMS4xLjQgcmVsZWFzZWQuCisKKwkqIHNjc2kuYzogQ2xlYW4gdXAgYSBmZXcgcHJpbnRrcyAodXNlICVwIHRvIHByaW50IHBvaW50ZXJzKS4KKworV2VkIEFwciAxMyAxMTozMzowMiAxOTk0CisKKwkqIExpbnV4IDEuMS4zIHJlbGVhc2VkLgorCisJKiBmZG9tYWluLmM6IFVwZGF0ZSB0byB2ZXJzaW9uIDUuMTYgKEhhbmRsZSBkaWZmZXJlbnQgRklGTyBzaXplcworCWJldHRlcikuCisKK0ZyaSBBcHIgIDggMDg6NTc6MTkgMTk5NAorCisJKiBMaW51eCAxLjEuMiByZWxlYXNlZC4KKworCSogVGhyb3VnaG91dDogU0NTSSBwb3J0aW9uIG9mIGNsdXN0ZXIgZGlmZnMgYWRkZWQuCisKK1R1ZSBBcHIgIDUgMDc6NDE6NTAgMTk5NAorCisJKiBMaW51eCAxLjEgZGV2ZWxvcG1lbnQgdHJlZSBpbml0aWF0ZWQuCisKKwkqIFRoZSBsaW51eCAxLjAgZGV2ZWxvcG1lbnQgdHJlZSBpcyBub3cgZWZmZWN0aXZlbHkgZnJvemVuIGV4Y2VwdAorCWZvciBvYnZpb3VzIGJ1Z2ZpeGVzLgorCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworU3VuIEFwciAxNyAwMDoxNzozOSAxOTk0CisKKwkqIExpbnV4IDEuMCwgcGF0Y2hsZXZlbCA5IHJlbGVhc2VkLgorCisJKiBmZG9tYWluLmM6IFVwZGF0ZSB0byB2ZXJzaW9uIDUuMTYgKEhhbmRsZSBkaWZmZXJlbnQgRklGTyBzaXplcworCWJldHRlcikuCisKK1RodSBBcHIgIDcgMDg6MzY6MjAgMTk5NAorCisJKiBMaW51eCAxLjAsIHBhdGNobGV2ZWw4IHJlbGVhc2VkLgorCisJKiBmZG9tYWluLmM6IFVwZGF0ZSB0byB2ZXJzaW9uIDUuMTUgZnJvbSA1LjkuICBIYW5kbGVzIDMuNCBiaW9zLgorCitTdW4gQXByICAzIDE0OjQzOjAzIDE5OTQKKworCSogTGludXggMS4wLCBwYXRjaGxldmVsNiByZWxlYXNlZC4KKworCSogd2Q3MDAwLmM6IE1ha2Ugc3RhYiBhdCBmaXhpbmcgcmFjZSBjb25kaXRpb24uCisKK1NhdCBNYXIgMjYgMTQ6MTQ6NTAgMTk5NAorCisJKiBMaW51eCAxLjAsIHBhdGNobGV2ZWw1IHJlbGVhc2VkLgorCisJKiBhaGExNTJ4LmMsIE1ha2VmaWxlOiBGaXggYSBmZXcgYnVncyAodG9vIG11Y2ggZGF0YSBtZXNzYWdlKS4KKwlBZGQgYSBmZXcgbW9yZSBiaW9zIHNpZ25hdHVyZXMuIChQYXRjaGVzIGZyb20gSnVlcmdlbikuCisKKwkqIGFoYTE1NDIuYzogRml4IHJhY2UgY29uZGl0aW9uIGluIGFoYTE1NDJfb3V0LgorCitNb24gTWFyIDIxIDE2OjM2OjIwIDE5OTQKKworCSogTGludXggMS4wLCBwYXRjaGxldmVsMyByZWxlYXNlZC4KKworCSogc2QuYywgc3QuYywgc3IuYywgc2cuYzogUmV0dXJuIC1FTlhJTywgbm90IC1FTk9ERVYgaWYgd2UgYXR0ZW1wdAorCXRvIG9wZW4gYSBub24tZXhpc3RlbnQgZGV2aWNlLgorCisJKiBzY3NpLmM6IEFkZCBDaGlub24gY2Ryb20gdG8gYmxhY2tsaXN0LgorCisJKiBzcl9pb2N0bC5jOiBDaGVjayByZXR1cm4gc3RhdHVzIG9mIHZlcmlmeV9hcmVhLgorCitTYXQgTWFyICA2IDE2OjA2OjE5IDE5OTQKKworCSogTGludXggMS4wIHJlbGVhc2VkICh0ZWNobmljYWxseSBhIHByZS1yZWxlYXNlKS4KKworCSogc2NzaS5jOiBBZGQgSU1TIENERDUyMSwgTWF4dG9yIFhULTg3NjBTIHRvIGJsYWNrbGlzdC4KKworVHVlIEZlYiAxNSAxMDo1ODoyMCAxOTk0CisKKyAgICAgICAgKiBwbDE1ZSByZWxlYXNlZC4KKworICAgICAgICAqIGFoYTE1NDIuYzogRm9yIDE1NDJDLCBhbGxvdyBkeW5hbWljIGRldmljZSBzY2FuIHdpdGggPjFHYiB0dXJuZWQKKwlvZmYuCisKKwkqIGNvbnN0YW50cy5jOiBGaXggdHlwbyBpbiBkZWZpbml0aW9uIG9mIENPTlNUQU5UUy4KKworICAgICAgICAqIHBsMTVkIHJlbGVhc2VkLgorCitGcmkgRmViIDExIDEwOjEwOjE2IDE5OTQKKworICAgICAgICAqIHBsMTVjIHJlbGVhc2VkLgorCisJKiBzY3NpLmM6IEFkZCBNYXh0b3IgWFQtMzI4MCBhbmQgUm9kaW1lIFJPMzAwMFMgdG8gYmxhY2tsaXN0LgorCisJKiBzY3NpLmM6IEFsbG93IHRhZ2dlZCBxdWV1ZWluZyBmb3Igc2NzaSAzIGRldmljZXMgYXMgd2VsbC4KKwlTb21lIHJlYWxseSBvbGQgZGV2aWNlcyByZXBvcnQgYSB2ZXJzaW9uIG51bWJlciBvZiAwLiAgRGlzYWxsb3cKKwlMVU4gIT0gMCBmb3IgdGhlc2UuCisKK1RodSBGZWIgMTAgMDk6NDg6NTcgMTk5NAorCisgICAgICAgICogcGwxNWIgcmVsZWFzZWQuCisKK1N1biBGZWIgIDYgMTI6MTk6NDYgMTk5NAorCisgICAgICAgICogcGwxNWEgcmVsZWFzZWQuCisKK0ZyaSBGZWIgIDQgMDk6MDI6MTcgMTk5NAorCisgICAgICAgICogc2NzaS5jOiBBZGQgVGVhYyBjZHJvbSB0byBibGFja2xpc3QuCisKK1RodSBGZWIgIDMgMTQ6MTY6NDMgMTk5NAorCisJKiBwbDE1IHJlbGVhc2VkLgorCitUdWUgRmViICAxIDE1OjQ3OjQzIDE5OTQKKworCSogcGwxNHcgcmVsZWFzZWQuCisKKwkqIHdkNzAwMC5jICh3ZF9iYXNlcyk6IEZpeCB0eXBvIGluIGxhc3QgY2hhbmdlLgorCitNb24gSmFuIDI0IDE3OjM3OjIzIDE5OTQKKworCSogcGwxNHUgcmVsZWFzZWQuCisKKwkqIGFoYTE1NDIuYzogU3VwcG9ydCAxNTQyQ0YvZXh0ZW5kZWQgYmlvcy4gIERpZmZlcmVudCBmcm9tIDE1NDJDCisKKwkqIHdkNzAwMC5jOiBBbGxvdyBiaW9zIGF0IDB4ZDgwMDAgYXMgd2VsbC4KKworCSogdWx0cmFzdG9yLmM6IERvIG5vdCB0cnVuY2F0ZSBjeWxpbmRlcnMgdG8gMTAyNC4KKworCSogZmRvbWFpbi5jOiBVcGRhdGUgdG8gdmVyc2lvbiA1LjkgKGFkZCBuZXcgYmlvcyBzaWduYXR1cmUpLgorCisJKiBOQ1I1MzgwLmM6IFVwZGF0ZSBmcm9tIERyZXcgLSBzaG91bGQgd29yayBhIGxvdCBiZXR0ZXIgbm93LgorCitTYXQgSmFuICA4IDE1OjEzOjEwIDE5OTQKKworCSogcGwxNG8gcmVsZWFzZWQuCisKKwkqIHNyX2lvY3RsLmM6IFplcm8gcmVzZXJ2ZWQgZmllbGQgYmVmb3JlIHRyeWluZyB0byBzZXQgYXVkaW8gdm9sdW1lLgorCitXZWQgSmFuICA1IDEzOjIxOjEwIDE5OTQKKworCSogcGwxNG0gcmVsZWFzZWQuCisKKwkqIGZkb21haW4uYzogVXBkYXRlIHRvIHZlcnNpb24gNS44LiAgTm8gZnVuY3Rpb25hbCBkaWZmZXJlbmNlPz8/CisKK1R1ZSBKYW4gIDQgMTQ6MjY6MTMgMTk5NAorCisJKiBwbDE0bCByZWxlYXNlZC4KKworCSogdWx0cmFzdG9yLmM6IFJlbW92ZSBvdXRsLCBpbmwgZnVuY3Rpb25zIChub3cgcHJvdmlkZWQgZWxzZXdoZXJlKS4KKworTW9uIEphbiAgMyAxMjoyNzoyNSAxOTk0CisKKwkqIHBsMTRrIHJlbGVhc2VkLgorCisJKiBhaGExNTJ4LmM6IFJlbW92ZSBpbnN3IGFuZCBvdXRzdyBmdW5jdGlvbnMuCisKKwkqIGZkb21haW4uYzogRGl0dG8uCisKK1dlZCBEZWMgMjkgMDk6NDc6MjAgMTk5MworCisJKiBwbDE0aSByZWxlYXNlZC4KKworCSogc2NzaS5jOiBTdXBwb3J0IFJFQ09WRVJFRF9FUlJPUiBmb3IgdGFwZSBkcml2ZXMuCisKKwkqIHN0LmM6IFVwZGF0ZSBvZiB0YXBlIGRyaXZlciBmcm9tIEthaS4KKworVHVlIERlYyAyMSAwOToxODozMCAxOTkzCisKKwkqIHBsMTRnIHJlbGVhc2VkLgorCisJKiBhaGExNTQyLltjLGhdOiBTdXBwb3J0IGV4dGVuZGVkIEJJT1Mgc3R1ZmYuCisKKwkqIHNjc2kuYzogQ2xlYW4gdXAgbWVzc2FnZXMgYWJvdXQgZGlza3MsIHNvIHRoZXkgYXJlIGRpc3BsYXllZCBhcworCXNkYSwgc2RiLCBldGMgaW5zdGVhZCBvZiBzZDAsIHNkMSwgZXRjLgorCisJKiBzci5jOiAgRm9yY2UgcmVyZWFkIG9mIGNhcGFjaXR5IGlmIGRpc2sgd2FzIGNoYW5nZWQuCisJQ2xlYXIgYnVmZmVyIGJlZm9yZSBhc2tpbmcgZm9yIGNhcGFjaXR5L3NlY3RvcnNpemUgKHNvbWUgZHJpdmVzCisJZG8gbm90IHJlcG9ydCB0aGlzIHByb3Blcmx5KS4gIFNldCBuZWVkc19zZWN0b3Jfc2l6ZSBmbGFnIGlmCisJZHJpdmUgZGlkIG5vdCByZXR1cm4gc2Vuc2libGUgc2VjdG9yIHNpemUuCisKK01vbiBEZWMgMTMgMTI6MTM6NDcgMTk5MworCisJKiBhaGExNTJ4LmM6IFVwZGF0ZSB0byB2ZXJzaW9uIC4xMDEgZnJvbSBKdWVyZ2VuLgorCitNb24gTm92IDI5IDAzOjAzOjAwIDE5OTMKKworICAgICAgICAqIGxpbnV4IDAuOTkuMTQgcmVsZWFzZWQuCisKKwkqIEFsbCBzY3NpIHN0dWZmIG1vdmVkIGZyb20ga2VybmVsL2Jsa19kcnYvc2NzaSB0byBkcml2ZXJzL3Njc2kuCisKKwkqIFRocm91Z2hvdXQ6IEdyYW1tYXRpY2FsIGNvcnJlY3Rpb25zIHRvIHZhcmlvdXMgY29tbWVudHMuCisKKwkqIE1ha2VmaWxlOiBmaXggc28gdGhhdCB3ZSBkbyBub3QgbmVlZCB0byBjb21waWxlIHRoaW5ncyB3ZSBhcmUKKwlub3QgZ29pbmcgdG8gdXNlLgorCisJKiBOQ1I1MzgwLmMsIE5DUjUzODAuaCwgZ19OQ1I1MzgwLmMsIGdfTkNSNTM4MC5oLCBwYXMxNi5jLAorCXBhczE2LmgsIHQxMjguYywgdDEyOC5oOiAgTmV3IGZpbGVzIGZyb20gRHJldy4KKworCSogYWhhMTUyeC5jLCBhaGExNTJ4Lmg6IE5ldyBmaWxlcyBmcm9tIEp1ZXJnZW4gRmlzY2hlci4KKworCSogYWhhMTU0Mi5jOiBTdXBwb3J0IGZvciBtb3JlIHRoYW4gb25lIDE1NDIgaW4gdGhlIG1hY2hpbmUKKwlhdCB0aGUgc2FtZSB0aW1lLiAgTWFrZSBmdW5jdGlvbnMgc3RhdGljIHRoYXQgZG8gbm90IG5lZWQKKwl2aXNpYmlsaXR5LgorCisJKiBhaGExNzQwLmM6IFNldCBORUVEU19KVU1QU1RBUlQgZmxhZyBpbiByZXNldCBmdW5jdGlvbiwgc28gd2UKKwlrbm93IHRvIHJlc3RhcnQgdGhlIGNvbW1hbmQuICBDaGFuZ2UgcHJvdG90eXBlIG9mIGFoYTE3NDBfcmVzZXQKKwl0byB0YWtlIGEgY29tbWFuZCBwb2ludGVyLgorCisJKiBjb25zdGFudHMuYzogQ2xlYW4gdXAgYSBmZXcgdGhpbmdzLgorCisJKiBmZG9tYWluLmM6IFVwZGF0ZSB0byB2ZXJzaW9uIDUuNi4gIE1vdmUgc25hcmZfcmVnaW9uLiAgQWxsb3cKKwlib2FyZCB0byBiZSBzZXQgYXQgZGlmZmVyZW50IFNDU0kgaWRzLiAgUmVtb3ZlIHN1cHBvcnQgZm9yCisJcmVzZWxlY3Rpb24gKGRpZCBub3Qgd29yayB3ZWxsKS4gIFNldCBKVU1QU1RBUlQgZmxhZyBpbiByZXNldAorCWNvZGUuCisKKwkqIGhvc3RzLmM6IFN1cHBvcnQgbmV3IGxvdy1sZXZlbCBhZGFwdGVycy4gIEFsbG93IGZvciBtb3JlIHRoYW4KKwlvbmUgYWRhcHRlciBvZiBhIGdpdmVuIHR5cGUuCisKKwkqIGhvc3RzLmg6IEFsbG93IGZvciBtb3JlIHRoYW4gb25lIGFkYXB0ZXIgb2YgYSBnaXZlbiB0eXBlLgorCisJKiBzY3NpLmM6ICBBZGQgc2NzaV9kZXZpY2VfdHlwZXMgYXJyYXksIGlmIE5FRURTX0pVTVBTVEFSVCBpcyBzZXQKKwlhZnRlciBhIGxvdy1sZXZlbCByZXNldCwgc3RhcnQgdGhlIGNvbW1hbmQgYWdhaW4uICBTb3J0IGJsYWNrbGlzdCwKKwlhbmQgYWRkIE1heHRvciBNWFQtMTI0MFMsIFhULTQxNzBTLCBORUMgQ0RST00gODQsIFNlYWdhdGUgU1QxNTdOLgorCisJKiBzY3NpLmg6IEFkZCBjb25zdGFudHMgZm9yIHRhZ2dlZCBxdWV1ZWluZy4KKworCSogVGhyb3VnaG91dDogVXNlIGNvbnN0YW50cyBmcm9tIG1ham9yLmggaW5zdGVhZCBvZiBoYXJkY29kZWQKKwludW1iZXJzIGZvciBtYWpvciBudW1iZXJzLgorCisJKiBzY3NpX2lvY3RsLmM6IEZpeCBidWcgaW4gYnVmZmVyIGxlbmd0aCBpbiBpb2N0bF9jb21tYW5kLiAgVXNlCisJdmVyaWZ5X2FyZWEgaW4gR0VUX0lETFVOIGlvY3RsLiAgQWRkIG5ldyBpb2N0bHMgZm9yCisJVEFHR0VEX1FVRVVFX0VOQUJMRSwgRElTQUJMRS4gIE9ubHkgYWxsb3cgSU9DVExfU0VORF9DT01NQU5EIGJ5CisJc3VwZXJ1c2VyLgorCisJKiBzZC5jOiBPbmx5IHBheSBhdHRlbnRpb24gdG8gVU5JVF9BVFRFTlRJT04gZm9yIHJlbW92YWJsZSBkaXNrcy4KKwlGaXggYnVnIHdoZXJlIHNvbWV0aW1lcyBwb3J0aW9ucyBvZiBibG9ja3Mgd291bGQgZ2V0IGxvc3QKKwlyZXN1bHRpbmcgaW4gcHJvY2Vzc2VzIGhhbmdpbmcuICBBZGQgbWVzc2FnZXMgd2hlbiB3ZSBzcGluIHVwIGEKKwlkaXNrLCBhbmQgZml4IGEgYnVnIGluIHRoZSB0aW1pbmcuICBJbmNyZWFzZSByZWFkLWFoZWFkIGZvciBkaXNrcworCXRoYXQgYXJlIG9uIGEgc2NhdHRlci1nYXRoZXIgY2FwYWJsZSBob3N0IGFkYXB0ZXIuCisKKwkqIHNlYWdhdGUuYzogRml4IHNvIHRoYXQgc29tZSBwYXJhbWV0ZXJzIGNhbiBiZSBzZXQgZnJvbSB0aGUgbGlsbworCXByb21wdC4gIFN1cHBseSBqdW1wc3RhcnQgZmxhZyBpZiB3ZSBhcmUgcmVzZXR0aW5nIGFuZCBuZWVkIHRoZQorCWNvbW1hbmQgcmVzdGFydGVkLiAgIEZpeCBzbyB0aGF0IHdlIHJldHVybiAxIGlmIHdlIGRldGVjdCBhIGNhcmQKKwlzbyB0aGF0IG11bHRpcGxlIGNhcmQgZGV0ZWN0aW9uIHdvcmtzIGNvcnJlY3RseS4gIEFkZCB5ZXQgYW5vdGhlcgorCXNpZ25hdHVyZSBmb3IgRkQgY2FyZHMgKDk1MCkuICBBZGQgYW5vdGhlciBzaWduYXR1cmUgZm9yIFNUMHguCisKKwkqIHNnLmMsIHNnLmg6IE5ldyBmaWxlcyBmcm9tIExhd3JlbmNlIEZvYXJkIGZvciBnZW5lcmljIHNjc2kKKwlhY2Nlc3MuCisKKwkqIHNyLmM6ICBBZGQgdHlwZSBjYXN0cyBmb3IgKHZvaWQqKSBzbyB0aGF0IHdlIGNhbiBkbyBwb2ludGVyCisJYXJpdGhtZXRpYy4gIFdvcmtzIHdpdGggR0NDIHdpdGhvdXQgdGhpcywgYnV0IGl0IGlzIG5vdCBzdHJpY3RseQorCWNvcnJlY3QuICBTYW1lIGJ1Z2ZpeCBhcyB3YXMgaW4gc2QuYy4gIEluY3JlYXNlIHJlYWQtYWhlYWQgYSBsYQorCWRpc2sgZHJpdmVyLgorCisJKiBzcl9pb2N0bC5jOiBVc2Ugc2NzaV9tYWxsb2MgYnVmZmVyIGluc3RlYWQgb2YgYnVmZmVyIGZyb20gc3RhY2sKKwlzaW5jZSB3ZSBjYW5ub3QgZ3VhcmFudGVlIHRoYXQgdGhlIHN0YWNrIGlzIDwgMTZNYi4KKworCXVsdHJhc3Rvci5jOiBVcGRhdGUgdG8gc3VwcG9ydCAyNGYgcHJvcGVybHkgKEpGQydzIGRyaXZlcikuCisKKwl3ZDcwMDAuYzogU3VwcGx5IGp1bXBzdGFydCBmbGFnIGZvciByZXNldC4gIERvIG5vdCByb3VuZCB1cAorCW51bWJlciBvZiBjeWxpbmRlcnMgaW4gYmlvc3BhcmFtIGZ1bmN0aW9uLgorCitTYXQgU2VwICA0IDIwOjQ5OjU2IDE5OTMKKworICAgICogMC45OXBsMTMgcmVsZWFzZWQuCisKKyAgICAqIFRocm91Z2hvdXQ6ICBVc2UgY2hlY2tfcmVnaW9uL3NuYXJmX3JlZ2lvbiBmb3IgYWxsIGxvdy1sZXZlbAorICAgIGRyaXZlcnMuCisKKyAgICAqIGFoYTE1NDIuYzogRG8gaGFyZCByZXNldCBpbnN0ZWFkIG9mIHNvZnQgKHNvbWUgZXRoZXJjYXJkIHByb2JlcworICAgIHNjcmV3IHVzIHVwKS4KKworICAgICogc2NzaS5jOiBBZGQgbmV3IGZsYWcgQVNLRURfRk9SX1NFTlNFIHNvIHRoYXQgd2UgY2FuIHRlbGwgaWYgd2UgYXJlCisgICAgaW4gYSBsb29wIHdoZXJlYnkgdGhlIGRldmljZSByZXR1cm5zIG51bGwgc2Vuc2UgZGF0YS4KKworICAgICogc2QuYzogQWRkIGNvZGUgdG8gc3BpbiB1cCBhIGRyaXZlIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHNwaW5uaW5nLgorICAgIERvIHRoaXMgb25lIGF0IGEgdGltZSB0byBtYWtlIGl0IGVhc2llciBvbiBwb3dlciBzdXBwbGllcy4KKworICAgICogc2RfaW9jdGwuYzogVXNlIHN5bmNfZGV2IGluc3RlYWQgb2YgZnN5bmNfZGV2IGluIEJMS0ZMU0JVRiBpb2N0bC4KKworICAgICogc2VhZ2F0ZS5jOiBTd2l0Y2ggYXJvdW5kIERBVEEvQ09OVFJPTCBsaW5lcy4KKworICAgICogc3QuYzogQ2hhbmdlIHNlbnNlIHRvIHVuc2lnbmVkLgorCitUaHUgQXVnICA1IDExOjU5OjE4IDE5OTMKKworICAgICogMC45OXBsMTIgcmVsZWFzZWQuCisKKyAgICAqIGNvbnN0YW50cy5jLCBjb25zdGFudHMuaDogTmV3IGZpbGVzIHdpdGggYXNjaWkgZGVzY3JpcHRpb25zIG9mCisgICAgdmFyaW91cyBjb25kaXRpb25zLgorCisgICAgKiBNYWtlZmlsZTogRG8gbm90IHRyeSB0byBjb3VudCB0aGUgbnVtYmVyIG9mIGxvdy1sZXZlbCBkcml2ZXJzLAorICAgIGp1c3QgZ2VuZXJhdGUgdGhlIGxpc3Qgb2YgLm8gZmlsZXMuCisKKyAgICAqIGFoYTE1NDIuYzogUmVwbGFjZSAxNiB3aXRoIHNpemVvZihTQ3BudC0+c2Vuc2VfYnVmZmVyKS4gIEFkZCB0ZXN0cworICAgIGZvciBhZGRyZXNzZXMgPiAxNk1iLCBwYW5pYyBpZiB3ZSBmaW5kIG9uZS4KKworICAgICogYWhhMTc0MC5jOiBEaXR0byB3aXRoIHNpemVvZigpLgorCisgICAgKiBmZG9tYWluLmM6IFVwZGF0ZSB0byB2ZXJzaW9uIDMuMTguICBBZGQgbmV3IHNpZ25hdHVyZSwgcmVnaXN0ZXIgSVJRCisgICAgd2l0aCBpcnFhY3Rpb24uICBVc2UgSUQgNyBmb3IgbmV3IGJvYXJkLiAgQmUgbW9yZSBpbnRlbGxpZ2VudCBhYm91dAorICAgIG9idGFpbmluZyB0aGUgaC9zL2MgbnVtYmVycyBmb3IgYmlvc3BhcmFtLgorCisgICAgKiBob3N0cy5jOiBEbyBub3QgZGVwZW5kIHVwb24gTWFrZWZpbGUgZ2VuZXJhdGVkIGNvdW50IG9mIHRoZSBudW1iZXIKKyAgICBvZiBsb3ctbGV2ZWwgaG9zdCBhZGFwdGVycy4KKworICAgICogc2NzaS5jOiBVc2UgYXJyYXkgZm9yIHNjc2lfY29tbWFuZF9zaXplIGluc3RlYWQgb2YgYSBmdW5jdGlvbi4gIEFkZAorICAgIFRleGVsIGNkcm9tIGFuZCBNYXh0b3IgWFQtNDM4MFMgdG8gYmxhY2tsaXN0LiAgQWxsb3cgY29tcGlsZSB0aW1lCisgICAgb3B0aW9uIGZvciBuby1tdWx0aSBsdW4gc2Nhbi4gIEFkZCBzZW1hcGhvcmUgZm9yIHBvc3NpYmxlIHByb2JsZW1zCisgICAgd2l0aCBoYW5kc2hha2luZywgYXNzdW1lIGRldmljZSBpcyBmYXVsdHkgdW50aWwgd2Uga25vdyBpdCBub3QgdG8gYmUKKyAgICB0aGUgY2FzZS4gIEFkZCBERUJVR19JTklUIHN5bWJvbCB0byBkdW1wIGluZm8gYXMgd2Ugc2NhbiBmb3IgZGV2aWNlcy4KKyAgICBaZXJvIHNlbnNlIGJ1ZmZlciBzbyB3ZSBjYW4gdGVsbCBpZiB3ZSBuZWVkIHRvIHJlcXVlc3QgaXQuICBXaGVuCisgICAgZXhhbWluaW5nIHNlbnNlIGluZm9ybWF0aW9uLCByZXF1ZXN0IHNlbnNlIGlmIGJ1ZmZlciBpcyBhbGwgemVyby4KKyAgICBJZiBSRVNFVCwgcmVxdWVzdCBzZW5zZSBpbmZvcm1hdGlvbiB0byBzZWUgd2hhdCB0byBkbyBuZXh0LgorCisgICAgKiBzY3NpX2RlYnVnLmM6IENoYW5nZSBzb21lIGNvbnN0YW50cyB0byB1c2Ugc3ltYm9scyBsaWtlIElOVF9NQVguCisKKyAgICAqIHNjc2lfaW9jdGwuYyAoa2VybmVsX3Njc2lfaW9jdGwpOiBOZXcgZnVuY3Rpb24gLWZvciBtYWtpbmcgaW9jdGwKKyAgICBjYWxscyBmcm9tIGtlcm5lbCBzcGFjZS4KKworICAgICogc2QuYzogSW5jcmVhc2UgdGltZW91dCB0byAzMDAuICBVc2UgZnVuY3Rpb25zIGluIGNvbnN0YW50cy5oIHRvCisgICAgZGlzcGxheSBpbmZvLiAgVXNlIHNjc2lfbWFsbG9jIGJ1ZmZlciBmb3IgUkVBRF9DQVBBQ0lUWSwgc2luY2UKKyAgICB3ZSBjYW5ub3QgZ3VhcmFudGVlIHRoYXQgYSBzdGFjayBiYXNlZCBidWZmZXIgaXMgPCAxNk1iLgorCisgICAgKiBzZF9pb2N0bC5jOiBBZGQgQkxLRkxTQlVGIGlvY3RsLgorCisgICAgKiBzZWFnYXRlLmM6IEFkZCBuZXcgY29tcGlsZSB0aW1lIG9wdGlvbnMgZm9yIEFSQklUUkFURSwKKyAgICBTTE9XX0hBTkRTSEFLRSwgYW5kIFNMT1dfUkFURS4gIFVwZGF0ZSBhc3NlbWJseSBsb29wcyBmb3IgdHJhbnNmZXJyaW5nCisgICAgZGF0YS4gIFVzZSBrZXJuZWxfc2NzaV9pb2N0bCB0byByZXF1ZXN0IG1vZGUgcGFnZSB3aXRoIGdlb21ldHJ5LgorCisgICAgKiBzci5jOiBVc2UgZnVuY3Rpb25zIGluIGNvbnN0YW50cy5jIHRvIGRpc3BsYXkgbWVzc2FnZXMuCisKKyAgICAqIHN0LmM6IFN1cHBvcnQgZm9yIHZhcmlhYmxlIGJsb2NrIHNpemUuCisKKyAgICAqIHVsdHJhc3Rvci5jOiBEbyBub3QgdXNlIGNhY2hlIGZvciB0YXBlIGRyaXZlcy4gIFNldAorICAgIHVuY2hlY2tlZF9pc2FfZG1hIGZsYWcsIGV2ZW4gdGhvdWdoIHRoaXMgbWF5IG5vdCBiZSBuZWVkZWQgKGdldHMgc2V0CisgICAgbGF0ZXIpLgorCitTYXQgSnVsIDE3IDE4OjMyOjQ0IDE5OTMKKworICAgICogMC45OXBsMTEgcmVsZWFzZWQuICBDKysgY29tcGlsYWJsZS4KKworICAgICogVGhyb3VnaG91dDogQWRkIHR5cGUgY2FzdHMgYWxsIG92ZXIgdGhlIHBsYWNlLCBhbmQgdXNlICJpcCIgaW5zdGVhZAorICAgIG9mICJpbmZvIiBpbiB0aGUgdmFyaW91cyBiaW9zcGFyYW0gZnVuY3Rpb25zLgorCisgICAgKiBNYWtlZmlsZTogQ29tcGlsZSBzZWFnYXRlLmMgd2l0aCBDKysgY29tcGlsZXIuCisKKyAgICAqIGFoYTE1NDIuYzogQWx3YXlzIHNldCBjY2IgcG9pbnRlciBhcyB0aGlzIGdldHMgdHJhc2hlZCBzb21laG93IG9uCisgICAgc29tZSBzeXN0ZW1zLiAgQWRkIGEgZmV3IHR5cGUgY2FzdHMuICBVcGRhdGUgYmlvc3BhcmFtIGZ1bmN0aW9uIGEgbGl0dGxlLgorCisgICAgKiBhaGExNzQwLmM6IEFkZCBhIGZldyB0eXBlIGNhc3RzLgorCisgICAgKiBmZG9tYWluLmM6IFVwZGF0ZSB0byB2ZXJzaW9uIDMuMTcgZnJvbSAzLjYuICBOb3cgd29ya3Mgd2l0aAorICAgIFRNQy0xOEM1MC4KKworICAgICogc2NzaS5jOiBNaW5vciBjaGFuZ2VzIGhlcmUgYW5kIHRoZXJlIHdpdGggZGF0YXR5cGVzLiAgU2F2ZSB1c2Vfc2cKKyAgICB3aGVuIHJlcXVlc3Rpbmcgc2Vuc2UgaW5mb3JtYXRpb24gc28gdGhhdCB0aGlzIGNhbiBwcm9wZXJseSBiZQorICAgIHJlc3RvcmVkIGlmIHdlIHJldHJ5IHRoZSBjb21tYW5kLiAgU2V0IGFzaWRlIGRtYSBidWZmZXJzIGFzc3VtaW5nIGVhY2gKKyAgICBibG9jayBpcyAxIHBhZ2UsIG5vdCAxS2IgbWluaXggYmxvY2suCisKKyAgICAqIHNjc2lfaW9jdGwuYzogQWRkIGEgZmV3IHR5cGUgY2FzdHMuICBPdGhlciBtaW5vciBjaGFuZ2VzLgorCisgICAgKiBzZC5jOiAgQ29ycmVjdGx5ICBmcmVlIGFsbCBzY3NpX21hbGxvYydkIG1lbW9yeSBpZiB3ZSBydW4gb3V0IG9mCisgICAgZG1hX3Bvb2wuIFN0b3JlIGJsb2Nrc2l6ZSBpbmZvcm1hdGlvbiBmb3IgZWFjaCBwYXJ0aXRpb24uCisKKyAgICAqIHNlYWdhdGUuYzogTWlub3IgY2xlYW51cHMgaGVyZSBhbmQgdGhlcmUuCisKKyAgICAqIHNyLmM6IFNldCB1cCBibG9ja3NpemUgYXJyYXkgZm9yIGFsbCBkaXNjcy4gIEZpeCBidWcgaW4gZnJlZWluZworICAgIGJ1ZmZlcnMgaWYgd2UgcnVuIG91dCBvZiBkbWEgcG9vbC4KKworVGh1IEp1biAgMiAxNzo1ODoxMSAxOTkzCisKKyAgICAqIDAuOTlwbDEwIHJlbGVhc2VkLgorCisgICAgKiBhaGExNTQyLmM6IFN1cHBvcnQgZm9yIEJUIDQ0NVMgKFZMLWJ1cyBib2FyZCB3aXRoIG5vIGRtYSBjaGFubmVsKS4KKworICAgICogZmRvbWFpbi5jOiBVcGdyYWRlIHRvIHZlcnNpb24gMy42LiBQcmVsaW1pbmFyeSBzdXBwb3J0IGZvciBUTkMtMThDNTAuCisKKyAgICAqIHNjc2kuYzogRmlyc3QgYXR0ZW1wdCB0byBmaXggcHJvYmxlbSB3aXRoIG9sZF91c2Vfc2cuICBDaGFuZ2UKKyAgICBOT1RfUkVBRFkgdG8gYSBTVUdHRVNUX0FCT1JULiAgRml4IHRpbWVvdXQgcmFjZSB3aGVyZSB0aW1lIG1pZ2h0CisgICAgZ2V0IGRlY3JlbWVudGVkIHBhc3QgemVyby4KKworICAgICogc2QuYzogQWRkIGJsb2NrX2ZzeW5jIGZ1bmN0aW9uIHRvIGRpc3BhdGNoIHRhYmxlLgorCisgICAgKiBzci5jOiBJbmNyZWFzZSB0aW1lb3V0IHRvIDUwMCBmcm9tIDI1MC4gIEFkZCBlbnRyeSBmb3Igc3luYyBpbgorICAgIGRpc3BhdGNoIHRhYmxlIChzdXBwbHkgTlVMTCkuICBJZiB3ZSBkbyBub3QgaGF2ZSBhIHNlY3RvcnNpemUsCisgICAgdHJ5IHRvIGdldCBpdCBpbiB0aGUgc2Rfb3BlbiBmdW5jdGlvbi4gIEFkZCBuZXcgZnVuY3Rpb24ganVzdCB0bworICAgIG9idGFpbiBzZWN0b3JzaXplLgorCisgICAgKiBzci5oOiBBZGQgbmVlZHNfc2VjdG9yX3NpemUgc2VtYXBob3JlLgorCisgICAgKiBzdC5jOiBBZGQgTlVMTCBmb3IgZnN5bmMgaW4gZGlzcGF0Y2ggdGFibGUuCisKKyAgICAqIHdkNzAwMC5jOiBBbGxvdyBhbm90aGVyIGNvbmRpdGlvbiBmb3IgcG93ZXIgb24gdGhhdCBhcmUgbm9ybWFsCisgICAgYW5kIGRvIG5vdCByZXF1aXJlIGEgcGFuaWMuCisKK1RodSBBcHIgMjIgMjM6MTA6MTEgMTk5MworCisgICAgKiAwLjk5cGw5IHJlbGVhc2VkLgorCisgICAgKiBhaGExNTQyLmM6IFVzZSAodm9pZCkgaW5zdGVhZCBvZiAoKSBpbiBzZXR1cF9tYWlsYm94ZXMuCisKKyAgICAqIHNjc2kuYzogSW5pdGlhbGl6ZSB0cmFuc2ZlcnNpemUgYW5kIHVuZGVyZmxvdyBmaWVsZHMgaW4gU0NtZCB0byAwLgorICAgIERvIG5vdCBwYW5pYyBmb3IgdW5zdXBwb3J0ZWQgbWVzc2FnZSBieXRlcy4KKworICAgICogc2NzaS5oOiBBbGxvY2F0ZSAxMiBieXRlcyBpbnN0ZWFkIG9mIDEwIGZvciBjb21tYW5kcy4gIEFkZAorICAgIHRyYW5zZmVyc2l6ZSBhbmQgdW5kZXJmbG93IGZpZWxkcy4KKworICAgICogc2NzaV9pb2N0bC5jOiBGdXJ0aGVyIGJ1Z2ZpeCB0byBpb2N0bF9wcm9iZS4KKworICAgICogc2QuYzogVXNlIGxvbmcgaW5zdGVhZCBvZiBpbnQgZm9yIGxhc3QgcGFyYW1ldGVyIGluIHNkX2lvY3RsLgorICAgIEluaXRpYWxpemUgdHJhbnNmZXJzaXplIGFuZCB1bmRlcmZsb3cgZmllbGRzLgorCisgICAgKiBzZF9pb2N0bC5jOiBEaXR0byBmb3Igc2RfaW9jdGwoLCwsLCk7CisKKyAgICAqIHNlYWdhdGUuYzogTmV3IHZlcnNpb24gZnJvbSBEcmV3LiAgSW5jbHVkZXMgbmV3IHNpZ25hdHVyZXMgZm9yIEZECisgICAgY2FyZHMuICBTdXBwb3J0IGZvciAwd3MganVtcGVyLiBDb3JyZWN0bHkgaW5pdGlhbGl6ZQorICAgIHNjc2lfaG9zdHNbaG9zdG51bV0udGhpc19pZC4gIEltcHJvdmVkIGhhbmRpbmcgb2YKKyAgICBkaXNjb25uZWN0L3JlY29ubmVjdCwgYW5kIHN1cHBvcnQgY29tbWFuZCBsaW5raW5nLiAgVXNlCisgICAgdHJhbnNmZXJzaXplIGFuZCB1bmRlcmZsb3cgZmllbGRzLiAgU3VwcG9ydCBzY2F0dGVyLWdhdGhlci4KKworICAgICogc3IuYywgc3JfaW9jdGwuYzogVXNlIGxvbmcgaW5zdGVhZCBvZiBpbnQgZm9yIGxhc3QgcGFyYW1ldGVyIGluIHNyX2lvY3RsLgorICAgIFVzZSBidWZmZXIgYW5kIGJ1Zmxlbmd0aCBpbiBkb19pb2N0bC4gIFBhdGNoZXMgZnJvbSBDaHJpcyBOZXdib2xkIGZvcgorICAgIHNjc2ktMiBhdWRpbyBjb21tYW5kcy4KKworICAgICogdWx0cmFzdG9yLmM6IENvbW1lbnQgb3V0IGluX2J5dGUgKGNvbXBpbGVyIHdhcm5pbmcpLgorCisgICAgKiB3ZDcwMDAuYzogQ2hhbmdlICgpIHRvICh2b2lkKSBpbiB3ZDcwMDBfZW5hYmxlX2RtYS4KKworV2VkIE1hciAzMSAxNjozNjoyNSAxOTkzCisKKyAgICAqIDAuOTlwbDggcmVsZWFzZWQuCisKKyAgICAqIGFoYTE1NDIuYzogSGFuZGxlIG1haWxib3hlcyBiZXR0ZXIgZm9yIDE1NDJDLgorICAgICAgICBEbyBub3QgdHJ1bmNhdGUgbnVtYmVyIG9mIGN5bGluZGVycyBhdCAxMDI0IGZvciBiaW9zcGFyYW0gY2FsbC4KKworICAgICogYWhhMTc0MC5jOiBGaXggYSBmZXcgbWlub3IgYnVncyBmb3IgbXVsdGlwbGUgZGV2aWNlcy4KKyAgICAgICAgU2FtZSBhcyBhYm92ZSBmb3IgYmlvc3BhcmFtLgorCisgICAgKiBzY3NpLmM6IEFkZCBsb2NrYWJsZSBzZW1hcGhvcmUgZm9yIHJlbW92YWJsZSBkZXZpY2VzIHRoYXQgY2FuIGhhdmUKKyAgICBtZWRpYSByZW1vdmFsIHByZXZlbnRlZC4gIEFkZCBhbm90aGVyIHNpZ25hdHVyZSBmb3IgZmxvcHRpY2Fscy4KKyAgICAoYWxsb2NhdGVfZGV2aWNlKTogRml4IHJhY2UgY29uZGl0aW9uLiAgQWxsb3cgbW9yZSBzcGFjZSBpbiBkbWEgcG9vbAorICAgIGZvciBibG9ja3NpemVzIG9mIHVwIHRvIDRLYi4KKworICAgICogc2NzaS5oOiBEZWZpbmUgQ09NTUFORF9TSVpFLiAgRGVmaW5lIGEgU0NTSSBzcGVjaWZpYyB2ZXJzaW9uIG9mCisgICAgSU5JVF9SRVFVRVNUIHRoYXQgY2FuIHJ1biB3aXRoIGludGVycnVwdHMgb2ZmLgorCisgICAgKiBzY3NpX2lvY3RsLmM6IE1ha2UgaW9jdGxfcHJvYmUgZnVuY3Rpb24gbW9yZSBpZGlvdC1wcm9vZi4gIElmCisgICAgYSByZW1vdmFibGUgZGV2aWNlIHNheXMgSUxMRUdBTCBSRVFVRVNUIHRvIGEgZG9vci1sb2NraW5nIGNvbW1hbmQsCisgICAgY2xlYXIgbG9ja2FibGUgZmxhZy4gIEFkZCBTQ1NJX0lPQ1RMX0dFVF9JRExVTiBpb2N0bC4gIERvIG5vdCBhdHRlbXB0CisgICAgdG8gbG9jayBkb29yIGZvciBkZXZpY2VzIHRoYXQgZG8gbm90IGhhdmUgbG9ja2FibGUgc2VtYXBob3JlIHNldC4KKworICAgICogc2QuYzogRml4IHJhY2UgY29uZGl0aW9uIGZvciBtdWx0aXBsZSBkaXNrcy4gIFVzZSBJTklUX1NDU0lfUkVRVUVTVAorICAgIGluc3RlYWQgb2YgSU5JVF9SRVFVRVNULiAgQWxsb3cgc2VjdG9yIHNpemVzIG9mIDEwMjQgYW5kIDI1Ni4gIEZvcgorICAgIHJlbW92YWJsZSBkaXNrcyB0aGF0IGFyZSBub3QgcmVhZHksIG1hcmsgdGhlbSBhcyBoYXZpbmcgYSBtZWRpYSBjaGFuZ2UKKyAgICAoc29tZSBkcml2ZXMgZG8gbm90IHJlcG9ydCB0aGlzIGxhdGVyKS4KKworICAgICogc2VhZ2F0ZS5jOiBVc2Ugdm9sYXRpbGUga2V5d29yZCBmb3IgbWVtb3J5LW1hcHBlZCByZWdpc3RlciBwb2ludGVycy4KKworICAgICogc3IuYzogRml4IHJhY2UgY29uZGl0aW9uLCBhIGxhIHNkLmMuICBJbmNyZWFzZSB0aGUgbnVtYmVyIG9mIHJldHJpZXMKKyAgICB0byAxLiAgVXNlIElOSVRfU0NTSV9SRVFVRVNULiAgQWxsb3cgNTEyIGJ5dGUgc2VjdG9yIHNpemVzLiAgRG8gYQorICAgIHJlYWRfY2FwYWNpdHkgd2hlbiB3ZSBpbml0IHRoZSBkZXZpY2Ugc28gd2Uga25vdyB0aGUgc2l6ZSBhbmQKKyAgICBzZWN0b3JzaXplLgorCisgICAgKiBzdC5jOiBJZiBpb2N0bCBub3QgZm91bmQgaW4gc3QuYywgdHJ5IHNjc2lfaW9jdGwgZm9yIG90aGVycy4KKworICAgICogdWx0cmFzdG9yLmM6IERvIG5vdCB0cnVuY2F0ZSBudW1iZXIgb2YgY3lsaW5kZXJzIGF0IDEwMjQgZm9yCisgICAgYmlvc3BhcmFtIGNhbGwuCisKKyAgICAqIHdkNzAwMC5jOiBEaXR0by4KKyAgICBUaHJvdWdob3V0OiBVc2UgQ09NTUFORF9TSVpFIG1hY3JvIHRvIGRldGVybWluZSBsZW5ndGggb2Ygc2NzaQorICAgIGNvbW1hbmQuCisKKworCitTYXQgTWFyIDEzIDE3OjMxOjI5IDE5OTMKKworICAgICogMC45OXBsNyByZWxlYXNlZC4KKworICAgIFRocm91Z2hvdXQ6IEltcHJvdmUgcHVuY3R1YXRpb24gaW4gc29tZSBtZXNzYWdlcywgYW5kIHVzZSBuZXcKKyAgICB2ZXJpZnlfYXJlYSBzeW50YXguCisKKyAgICAqIGFoYTE1NDIuYzogSGFuZGxlIHVuZXhwZWN0ZWQgaW50ZXJydXB0cyBiZXR0ZXIuCisKKyAgICAqIHNjc2kuYzogRGl0dG8uICBIYW5kbGUgcmVzZXQgY29uZGl0aW9ucyBhIGJpdCBiZXR0ZXIsIGFza2luZyBmb3IKKyAgICBzZW5zZSBpbmZvcm1hdGlvbiBhbmQgcmV0cnlpbmcgaWYgcmVxdWlyZWQuCisKKyAgICAqIHNjc2lfaW9jdGwuYzogQWxsb3cgZm9yIDEyIGJ5dGUgc2NzaSBjb21tYW5kcy4KKworICAgICogdWx0cmFzdG9yLmM6IFVwZGF0ZSB0byB1c2Ugc2NhdHRlci1nYXRoZXIuCisKK1NhdCBGZWIgMjAgMTc6NTc6MTUgMTk5MworCisgICAgKiAwLjk5cGw2IHJlbGVhc2VkLgorCisgICAgKiBmZG9tYWluLmM6IFVwZGF0ZSB0byB2ZXJzaW9uIDMuNS4gIEhhbmRsZSBzcHVyaW91cyBpbnRlcnJ1cHRzCisgICAgYmV0dGVyLgorCisgICAgKiBzZC5jOiBVc2UgcmVnaXN0ZXJfYmxrZGV2IGZ1bmN0aW9uLgorCisgICAgKiBzci5jOiBEaXR0by4KKworICAgICogc3QuYzogVXNlIHJlZ2lzdGVyX2NocmRldiBmdW5jdGlvbi4KKworICAgICogd2Q3MDAwLmM6IFVuZG8gcHJldmlvdXMgY2hhbmdlLgorCitTYXQgRmViICA2IDExOjIwOjQzIDE5OTMKKworICAgICogMC45OXBsNSByZWxlYXNlZC4KKworICAgICogc2NzaS5jOiBGaXggYnVnIGluIHRlc3RpbmcgZm9yIFVOSVRfQVRURU5USU9OLgorCisgICAgKiB3ZDcwMDAuYzogQ2hlY2sgYXQgbW9yZSBhZGRyZXNzZXMgZm9yIGJpb3MuICBGaXggYnVnIGluIGJpb3NwYXJhbQorICAgIChoZWFkcyAmIHNlY3RvcnMgdHVybmVkIGFyb3VuZCkuCisKK1dlZCBKYW4gMjAgMTg6MTM6NTkgMTk5MworCisgICAgKiAwLjk5cGw0IHJlbGVhc2VkLgorCisgICAgKiBzY3NpLmM6IElnbm9yZSBsZWFkaW5nIHNwYWNlcyB3aGVuIGxvb2tpbmcgZm9yIGJsYWNrbGlzdGVkIGRldmljZXMuCisKKyAgICAqIHNlYWdhdGUuYzogQWRkIGEgZmV3IG5ldyBzaWduYXR1cmVzIGZvciBGRCBjYXJkcy4gIEFub3RoZXIgcGF0Y2gKKyAgICB3aXRoIFNDaW50IHRvIGZpeCByYWNlIGNvbmRpdGlvbi4gIFVzZSByZWN1cnNpb25fZGVwdGggdG8ga2VlcCB0cmFjaworICAgIG9mIGhvdyBtYW55IHRpbWVzIHdlIGhhdmUgYmVlbiByZWN1cnNpdmVseSBjYWxsZWQsIGFuZCBkbyBub3Qgc3RhcnQKKyAgICBhbm90aGVyIGNvbW1hbmQgdW5sZXNzIHdlIGFyZSBvbiB0aGUgb3V0ZXIgbGV2ZWwuICBGaXhlcyBidWcKKyAgICB3aXRoIFN5cXVlc3QgY2FydHJpZGdlIGRyaXZlcyAodXNlZCB0byBjcmFzaCBrZXJuZWwpLCBiZWNhdXNlCisgICAgdGhleSBkbyBub3QgZGlzY29ubmVjdCB3aXRoIGxhcmdlIGRhdGEgdHJhbnNmZXJzLgorCitUdWUgSmFuIDEyIDE0OjMzOjM2IDE5OTMKKworICAgICogMC45OXBsMyByZWxlYXNlZC4KKworICAgICogZmRvbWFpbi5jOiBVcGRhdGUgdG8gdmVyc2lvbiAzLjMgKGEgZmV3IG5ldyBzaWduYXR1cmVzKS4KKworICAgICogc2NzaS5jOiBBZGQgQ0RVLTU0MSwgRGVub24gRFJELTI1WCB0byBibGFja2xpc3QuCisgICAgKGFsbG9jYXRlX3JlcXVlc3QsIHJlcXVlc3RfcXVldWVhYmxlKTogSW5pdCByZXF1ZXN0LndhaXRpbmcgdG8gTlVMTCBpZgorICAgIG5vbi1idWZmZXIgdHlwZSBvZiByZXF1ZXN0LgorCisgICAgKiBzZWFnYXRlLmM6ICBBbGxvdyBjb250cm9sbGVyIHRvIGJlIG92ZXJyaWRkZW4gd2l0aCBDT05UUk9MTEVSIHN5bWJvbC4KKyAgICBTZXQgU0NpbnQ9TlVMTCB3aGVuIHdlIGFyZSBkb25lLCB0byByZW1vdmUgcmFjZSBjb25kaXRpb24uCisKKyAgICAqIHN0LmM6IENoYW5nZXMgZnJvbSBLYWkuCisKK1dlZCBEZWMgMzAgMjA6MDM6NDcgMTk5MgorCisgICAgKiAwLjk5cGwyIHJlbGVhc2VkLgorCisgICAgKiBzY3NpLmM6IEJsYWNrbGlzdCBiYWNrIGluLiAgUmVtb3ZlIE5ld2J1cnkgZHJpdmUgYXMgb3RoZXIgYnVnZml4CisgICAgZWxpbWluYXRlcyBuZWVkIGZvciBpdCBoZXJlLgorCisgICAgKiBzZC5jOiBSZXR1cm4gRU5PREVWIGluc3RlYWQgb2YgRUFDQ0VTIGlmIG5vIHN1Y2ggZGV2aWNlIGF2YWlsYWJsZS4KKyAgICAoc2RfaW5pdCkgSW5pdCBibGtkZXZfZm9wcyBlYXJsaWVyIHNvIHRoYXQgc2Rfb3BlbiBpcyBhdmFpbGFibGUgc29vbmVyLgorCisgICAgKiBzci5jOiBTYW1lIGFzIGFib3ZlIGZvciBzZC5jLgorCisgICAgKiBzdC5jOiBSZXR1cm4gRU5PREVWIGluc3RlYWQgb2YgRU5YSU8gaWYgbm8gZGV2aWNlLiAgSW5pdCBjaHJkZXZfZm9wcworICAgIHNvb25lciwgc28gdGhhdCBpdCBpcyBhbHdheXMgdGhlcmUgZXZlbiBpZiBubyB0YXBlcy4KKworICAgICogc2VhZ2F0ZS5jIChjb250cm9sbGVyX3R5cGUpOiBOZXcgdmFyaWFibGUgdG8ga2VlcCB0cmFjayBvZiBTVDB4IG9yCisgICAgRkQuICBNb2RpZnkgc2lnbmF0dXJlcyBsaXN0IHRvIGluZGljYXRlIGNvbnRyb2xsZXIgdHlwZSwgYW5kIGluaXQKKyAgICBjb250cm9sbGVyX3R5cGUgb25jZSB3ZSBmaW5kIGEgbWF0Y2guCisKKyAgICAqIHdkNzAwMC5jICh3ZDcwMDBfc2V0X3N5bmMpOiBSZW1vdmUgcmVkdW5kYW50IGZ1bmN0aW9uLgorCitTdW4gRGVjIDIwIDE2OjI2OjI0IDE5OTIKKworICAgICogMC45OXBsMSByZWxlYXNlZC4KKworICAgICogc2NzaV9pb2N0bC5jOiBCdWdmaXggLSBjaGVjayBkZXYtPmluZGV4LCBub3QgZGV2LT5pZCBhZ2FpbnN0CisgICAgTlJfU0NTSV9ERVZJQ0VTLgorCisgICAgKiBzcl9pb2N0bC5jOiBWZXJpZnkgdGhhdCBkZXZpY2UgZXhpc3RzIGJlZm9yZSBhbGxvd2luZyBhbiBpb2N0bC4KKworICAgICogc3QuYzogUGF0Y2hlcyBmcm9tIEthaSAtIGNoYW5nZSB0aW1lb3V0IHZhbHVlcywgaW1wcm92ZSBlbmQgb2YgdGFwZQorICAgIGhhbmRsaW5nLgorCitTdW4gRGVjIDEzIDE4OjE1OjIzIDE5OTIKKworICAgICogMC45OSBrZXJuZWwgcmVsZWFzZWQuICBCYXNlbGluZSBmb3IgdGhpcyBDaGFuZ2VMb2cuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLmFyY21zciBiL0RvY3VtZW50YXRpb24vc2NzaS9DaGFuZ2VMb2cuYXJjbXNyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzOGEzZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLmFyY21zcgpAQCAtMCwwICsxLDExOCBAQAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoqIEhpc3RvcnkKKyoqCisqKiAgIFJFViMgICAgICAgICBEQVRFICAgICAgICAgICAgIE5BTUUgICAgICAgICBERVNDUklQVElPTgorKiogMS4wMC4wMC4wMCAgICAzLzMxLzIwMDQgICAgICAgRXJpY2ggQ2hlbiAgICAgRmlyc3QgcmVsZWFzZQorKiogMS4xMC4wMC4wNCAgICA3LzI4LzIwMDQgICAgICAgRXJpY2ggQ2hlbiAgICAgbW9kaWZ5IGZvciBpb2N0bAorKiogMS4xMC4wMC4wNiAgICA4LzI4LzIwMDQgICAgICAgRXJpY2ggQ2hlbiAgICAgbW9kaWZ5IGZvciAyLjYueAorKiogMS4xMC4wMC4wOCAgICA5LzI4LzIwMDQgICAgICAgRXJpY2ggQ2hlbiAgICAgbW9kaWZ5IGZvciB4ODZfNjQKKyoqIDEuMTAuMDAuMTAgICAxMC8xMC8yMDA0ICAgICAgIEVyaWNoIENoZW4gICAgIGJ1ZyBmaXggZm9yIFNNUCAmIGlvY3RsCisqKiAxLjIwLjAwLjAwICAgMTEvMjkvMjAwNCAgICAgICBFcmljaCBDaGVuICAgICBidWcgZml4IHdpdGggYXJjbXNyX2J1c19yZXNldCB3aGVuIFBIWSBlcnJvcgorKiogMS4yMC4wMC4wMiAgIDEyLzA5LzIwMDQgICAgICAgRXJpY2ggQ2hlbiAgICAgYnVnIGZpeCB3aXRoIG92ZXIgMlQgYnl0ZXMgUkFJRCBWb2x1bWUKKyoqIDEuMjAuMDAuMDQgICAgMS8wOS8yMDA1ICAgICAgIEVyaWNoIENoZW4gICAgIGZpdHMgZm9yIERlYmlhbiBsaW51eCBrZXJuZWwgdmVyc2lvbiAyLjIueHgKKyoqIDEuMjAuMDAuMDUgICAgMi8yMC8yMDA1ICAgICAgIEVyaWNoIENoZW4gICAgIGNsZWFubHkgYXMgbG9vayBsaWtlIGEgTGludXggZHJpdmVyIGF0IDIuNi54CisqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGFua3MgZm9yIHBlb3BsZXMga2luZG5lc3MgY29tbWVudAorKioJCQkJCQlLb3JuZWwgV2llbGljemVrCisqKgkJCQkJCUNocmlzdG9waCBIZWxsd2lnCisqKgkJCQkJCUFkcmlhbiBCdW5rCisqKgkJCQkJCUFuZHJldyBNb3J0b24KKyoqCQkJCQkJQ2hyaXN0b3BoIEhlbGx3aWcKKyoqCQkJCQkJSmFtZXMgQm90dG9tbGV5CisqKgkJCQkJCUFyamFuIHZhbiBkZSBWZW4KKyoqIDEuMjAuMDAuMDYgICAgMy8xMi8yMDA1ICAgICAgIEVyaWNoIENoZW4gICAgIGZpeCB3aXRoIGFyY21zcl9wY2lfdW5tYXBfZG1hICJ1bnNpZ25lZCBsb25nIiBjYXN0LAorKioJCQkJCQltb2RpZnkgUENDQiBQT09MIGFsbG9jYXRlZCBieSAiZG1hX2FsbG9jX2NvaGVyZW50IgorKioJCQkJCQkoS29ybmVsIFdpZWxpY3playdzIGNvbW1lbnQpCisqKiAxLjIwLjAwLjA3ICAgIDMvMjMvMjAwNSAgICAgICBFcmljaCBDaGVuICAgICBidWcgZml4IHdpdGggYXJjbXNyX3Njc2lfaG9zdF90ZW1wbGF0ZV9pbml0CisqKgkJCQkJCW9jY3VyIHNlZ21lbnRhdGlvbiBmYXVsdCwKKyoqCQkJCQkJaWYgUkFJRCBhZGFwdGVyIGRvZXMgbm90IG9uIFBDSSBzbG90CisqKgkJCQkJCWFuZCBtb2Rwcm9iZS9ybW1vZCB0aGlzIGRyaXZlciB0d2ljZS4KKyoqCQkJCQkJYnVnIGZpeCBlbm9ybW91cyBzdGFjayB1c2FnZSAoQWRyaWFuIEJ1bmsncyBjb21tZW50KQorKiogMS4yMC4wMC4wOCAgICA2LzIzLzIwMDUgICAgICAgRXJpY2ggQ2hlbiAgICAgYnVnIGZpeCB3aXRoIGFib3J0IGNvbW1hbmQsCisqKgkJCQkJCWluIGNhc2Ugb2YgaGVhdnkgbG9hZGluZyB3aGVuIHNhdGEgY2FibGUKKyoqCQkJCQkJd29ya2luZyBvbiBsb3cgcXVhbGl0eSBjb25uZWN0aW9uCisqKiAxLjIwLjAwLjA5ICAgIDkvMTIvMjAwNSAgICAgICBFcmljaCBDaGVuICAgICBidWcgZml4IHdpdGggYWJvcnQgY29tbWFuZCBoYW5kbGluZywgZmlybXdhcmUgdmVyc2lvbiBjaGVjaworKioJCQkJCQlhbmQgZmlybXdhcmUgdXBkYXRlIG5vdGlmeSBmb3IgaGFyZHdhcmUgYnVnIGZpeAorKiogMS4yMC4wMC4xMCAgICA5LzIzLzIwMDUgICAgICAgRXJpY2ggQ2hlbiAgICAgZW5oYW5jZSBzeXNmcyBmdW5jdGlvbiBmb3IgY2hhbmdlIGRyaXZlcidzIG1heCB0YWcgUSBudW1iZXIuCisqKgkJCQkJCWFkZCBETUFfNjRCSVRfTUFTSyBmb3IgYmFja3dhcmQgY29tcGF0aWJsZSB3aXRoIGFsbCAyLjYueAorKioJCQkJCQlhZGQgc29tZSB1c2VmdWwgbWVzc2FnZSBmb3IgYWJvcnQgY29tbWFuZAorKioJCQkJCQlhZGQgaW9jdGwgY29kZSAnQVJDTVNSX0lPQ1RMX0ZMVVNIX0FEQVBURVJfQ0FDSEUnCisqKgkJCQkJCWN1c3RvbWVyIGNhbiBzZW5kIHRoaXMgY29tbWFuZCBmb3Igc3luYyByYWlkIHZvbHVtZSBkYXRhCisqKiAxLjIwLjAwLjExICAgIDkvMjkvMjAwNSAgICAgICBFcmljaCBDaGVuICAgICBieSBjb21tZW50IG9mIEFyamFuIHZhbiBkZSBWZW4gZml4IGluY29ycmVjdCBtc2xlZXAgcmVkZWZpbmUKKyoqCQkJCQkJY2FzdCBvZmYgc2l6ZW9mKGRtYV9hZGRyX3QpIGNvbmRpdGlvbiBmb3IgNjRiaXQgcGNpX3NldF9kbWFfbWFzaworKiogMS4yMC4wMC4xMiAgICA5LzMwLzIwMDUgICAgICAgRXJpY2ggQ2hlbiAgICAgYnVnIGZpeCB3aXRoIDY0Yml0IHBsYXRmb3JtJ3MgY2NicyB1c2luZyBpZiBvdmVyIDRHIHN5c3RlbSBtZW1vcnkKKyoqCQkJCQkJY2hhbmdlIDY0Yml0IHBjaV9zZXRfY29uc2lzdGVudF9kbWFfbWFzayBpbnRvIDMyYml0CisqKgkJCQkJCWluY3JlY2N0IGFkYXB0ZXIgY291bnQgaWYgYWRhcHRlciBpbml0aWFsaXplIGZhaWwuCisqKgkJCQkJCW1pc3MgZWRpdCBhdCBhcmNtc3JfYnVpbGRfY2NiLi4uLgorKioJCQkJCQlwc2dlICs9IHNpemVvZihzdHJ1Y3QgX1NHNjRFTlRSWSAqKSA9PgorKioJCQkJCQlwc2dlICs9IHNpemVvZihzdHJ1Y3QgX1NHNjRFTlRSWSkKKyoqCQkJCQkJNjQgYml0cyBzZyBlbnRyeSB3b3VsZCBiZSBpbmNvcnJlY3RseSBjYWxjdWxhdGVkCisqKgkJCQkJCXRoYW5rcyBLb3JuZWwgV2llbGljemVrIGdpdmUgbWUga2luZGx5IG5vdGlmeQorKioJCQkJCQlhbmQgZGV0YWlsIGRlc2NyaXB0aW9uCisqKiAxLjIwLjAwLjEzICAgMTEvMTUvMjAwNSAgICAgICBFcmljaCBDaGVuICAgICBzY2hlZHVsaW5nIHBlbmRpbmcgY2NiIHdpdGggRklGTworKioJCQkJCQljaGFuZ2UgdGhlIGFyY2hpdGVjdHVyZSBvZiBhcmNtc3IgY29tbWFuZCBxdWV1ZSBsaXN0CisqKgkJCQkJCWZvciBsaW51eCBzdGFuZGFyZCBsaXN0CisqKgkJCQkJCWVuYWJsZSB1c2FnZSBvZiBwY2kgbWVzc2FnZSBzaWduYWwgaW50ZXJydXB0CisqKgkJCQkJCWZvbGxvdyBSYW5keS5EYW5sdXAga2luZG5lc3Mgc3VnZ2VzdGlvbiBjbGVhbnVwIHRoaXMgY29kZQorKiogMS4yMC4wMC4xNCAgIDA1LzAyLzIwMDcJIEVyaWNoIENoZW4gJiBOaWNrIENoZW5nCisqKgkJCQkJCTEuaW1wbGVtZW50IFBDSS1FeHByZXNzIGVycm9yIHJlY292ZXJ5IGZ1bmN0aW9uIGFuZCBBRVIgY2FwYWJpbGl0eQorKioJCQkJCQkyLmltcGxlbWVudCB0aGUgc2VsZWN0aW9uIG9mIEFSQ01TUl9NQVhfWEZFUl9TRUNUT1JTX0I9NDA5NgorKioJCQkJIAkJaWYgZmlybXdhcmUgdmVyc2lvbiBpcyBuZXdlciB0aGFuIDEuNDIKKyoqCQkJCQkJMy5tb2RpZnkgYXJjbXNyX2lvcF9yZXNldCB0byBpbXByb3ZlIHRoZSBhYmlsaXR5CisqKgkJCQkJCTQubW9kaWZ5IHRoZSBJU1IsIGFyY21zcl9pbnRlcnJ1cHQgcm91dGluZSx0byBwcmV2ZW50IHRoZQorKioJCQkJCQlpbmNvbnNpc3RlbmN5IHdpdGggc2dfbW9kIGRyaXZlciBpZiBhcHBsaWNhdGlvbglkaXJlY3RseSBjYWxscworKioJCQkJCQl0aGUgYXJjbXNyIGRyaXZlciB3L28gcGFzc2luZyB0aHJvdWdoIHNjc2kgbWlkIGxheWVyCisqKgkJCQkJCXNwZWNpYWxseSB0aGFua3MgdG8gWWFubWluIFpoYW5nJ3Mgb3BlbmhhbmRlZCBoZWxwIGFib3V0IEFFUgorKiogMS4yMC4wMC4xNSAgIDA4LzMwLzIwMDcJIEVyaWNoIENoZW4gJiBOaWNrIENoZW5nCisqKgkJCQkJCTEuIHN1cHBvcnQgQVJDMTIwMC8xMjAxLzEyMDIgU0FUQSBSQUlEIGFkYXB0ZXIsIHdoaWNoIGlzIG5hbWVkCisqKgkJCQkJCUFDQl9BREFQVEVSX1RZUEVfQgorKioJCQkJCQkyLiBtb2RpZnkgdGhlIGFyY21zcl9wY2lfc2xvdF9yZXNldCBmdW5jdGlvbgorKioJCQkJCQkzLiBtb2RpZnkgdGhlIGFyY21zcl9wY2lfZXJzX2Rpc2Nvbm5lY3RfZm9yZXBhcnQgZnVuY3Rpb24KKyoqCQkJCQkJNC4gbW9kaWZ5IHRoZSBhcmNtc3JfcGNpX2Vyc19uZWVkX3Jlc2V0X2ZvcmVwYXJ0IGZ1bmN0aW9uCisqKiAxLjIwLjAwLjE1ICAgMDkvMjcvMjAwNwkgRXJpY2ggQ2hlbiAmIE5pY2sgQ2hlbmcKKyoqCQkJCQkJMS4gYWRkIGFyY21zcl9lbmFibGVfZW9pX21vZGUoKSBvbiBhZGFwdGVyIFR5cGUgQgorKiogCQkJCQkJMi4gYWRkIHJlYWRsKHJlZy0+aW9wMmRydl9kb29yYmVsbF9yZWcpIGluIGFyY21zcl9oYW5kbGVfaGJiX2lzcigpCisqKgkJCQkJCWluIGNhc2Ugb2YgdGhlIGRvb3JiZWxsIGludGVycnVwdCBjbGVhcmFuY2UgaXMgY2FjaGVkCisqKiAxLjIwLjAwLjE1ICAgMTAvMDEvMjAwNwkgRXJpY2ggQ2hlbiAmIE5pY2sgQ2hlbmcKKyoqCQkJCQkJMS4gbW9kaWZ5IGFjYi0+ZGV2c3RhdGVbaV1bal0KKyoqCQkJCQkJYXMgQVJFQ0FfUkFJRF9HT09EIGluc3RlYWQgb2YKKyoqCQkJCQkJQVJFQ0FfUkFJRF9HT05FIGluIGFyY21zcl9hbGxvY19jY2JfcG9vbAorKiogMS4yMC4wMC4xNSAgIDExLzA2LzIwMDcgICAgICAgRXJpY2ggQ2hlbiAmIE5pY2sgQ2hlbmcKKyoqCQkJCQkJMS4gYWRkIGNvbmRpdGlvbmFsIGRlY2xhcmF0aW9uIGZvcgorKiogCQkJCQkJYXJjbXNyX3BjaV9lcnJvcl9kZXRlY3RlZCgpIGFuZAorKioJCQkJCQlhcmNtc3JfcGNpX3Nsb3RfcmVzZXQKKyoqIDEuMjAuMDAuMTUJMTEvMjMvMjAwNyAgICAgICBFcmljaCBDaGVuICYgTmljayBDaGVuZworKioJCQkJCQkxLmNoZWNrIGlmIHRoZSBzZyBsaXN0IG1lbWJlciBudW1iZXIKKyoqCQkJCQkJZXhjZWVkcyBhcmNtc3IgZGVmYXVsdCBsaW1pdCBpbiBhcmNtc3JfYnVpbGRfY2NiKCkKKyoqCQkJCQkJMi5jaGFuZ2UgdGhlIHJldHVybmVkIHZhbHVlIHR5cGUgb2YgYXJjbXNyX2J1aWxkX2NjYigpCisqKgkJCQkJCWZyb20gInZvaWQiIHRvICJpbnQiCisqKgkJCQkJCTMuYWRkIHRoZSBjb25kaXRpb25hbCBjaGVjayBpZiBhcmNtc3JfYnVpbGRfY2NiKCkKKyoqCQkJCQkJcmV0dXJucyBGQUlMRUQKKyoqIDEuMjAuMDAuMTUJMTIvMDQvMjAwNwkgRXJpY2ggQ2hlbiAmIE5pY2sgQ2hlbmcKKyoqCQkJCQkJMS4gbW9kaWZ5IGFyY21zcl9kcmFpbl9kb25lcXVldWUoKSB0byBpZ25vcmUgdW5rbm93bgorKioJCQkJCQljb21tYW5kIGFuZCBsZXQga2VybmVsIHByb2Nlc3MgY29tbWFuZCB0aW1lb3V0LgorKioJCQkJCQlUaGlzIGNvdWxkIGhhbmRsZSBJTyByZXF1ZXN0IHZpb2xhdGluZyBtYXguIHNlZ21lbnRzCisqKgkJCQkJCXdoaWxlIExpbnV4IFhGUyBvdmVyIERNLUNSWVBULgorKioJCQkJCQlUaGFua3MgdG8gTWlsYW4gQnJveidzIGNvbW1lbnRzIDxtYnJvekByZWRoYXQuY29tPgorKiogMS4yMC4wMC4xNQkxMi8yNC8yMDA3CSBFcmljaCBDaGVuICYgTmljayBDaGVuZworKioJCQkJCQkxLmZpeCB0aGUgcG9ydGFiaWxpdHkgcHJvYmxlbXMKKyoqCQkJCQkJMi5maXggdHlwZSBCIHdoZXJlIHdlIHNob3VsZCBfbm90XyBpb3VubWFwKCkgYWNiLT5wbXU7CisqKgkJCQkJCWl0J3Mgbm90IGlvcmVtYXBwZWQuCisqKgkJCQkJCTMuYWRkIHJldHVybiAtRU5PTUVNIGlmIGlvcmVtYXAoKSBmYWlscworKioJCQkJCQk0LnRyYW5zZmVyIElTX1NHNjRfQUREUiB3LyBjcHVfdG9fbGUzMigpCisqKgkJCQkJCWluIGFyY21zcl9idWlsZF9jY2IKKyoqCQkJCQkJNS4gbW9kaWZ5IGFjYi0+ZGV2c3RhdGVbaV1bal0gYXMgQVJFQ0FfUkFJRF9HT05FIGluc3RlYWQgb2YKKyoqCQkJCQkJQVJFQ0FfUkFJRF9HT09EIGluIGFyY21zcl9hbGxvY19jY2JfcG9vbCgpCisqKgkJCQkJCTYuZml4IGFyY21zcl9jZGItPkNvbnRleHQgYXMgKHVuc2lnbmVkIGxvbmcpYXJjbXNyX2NkYgorKioJCQkJCQk3LmFkZCB0aGUgY2hlY2tpbmcgc3RhdGUgb2YKKyoqCQkJCQkJKG91dGJvdW5kX2ludHN0YXR1cyAmIEFSQ01TUl9NVV9PVVRCT1VORF9IQU5ETEVfSU5UKSA9PSAwCisqKgkJCQkJCWluIGFyY21zcl9oYW5kbGVfaGJhX2lzcgorKioJCQkJCQk4LnJlcGxhY2UgcGNpX2FsbG9jX2NvbnNpc3RlbnQoKS9wY2lfZnJlZV9jb25zaXN0ZW50KCkgd2l0aCBrbWFsbG9jKCkva2ZyZWUoKSBpbiBhcmNtc3JfaW9wX21lc3NhZ2VfeGZlcigpCisqKgkJCQkJCTkuIGZpeCB0aGUgcmVsZWFzZSBvZiBkbWEgbWVtb3J5IGZvciB0eXBlIEIgaW4gYXJjbXNyX2ZyZWVfY2NiX3Bvb2woKQorKioJCQkJCQkxMC5maXggdGhlIGFyY21zcl9wb2xsaW5nX2hiYl9jY2Jkb25lKCkKKyoqIDEuMjAuMDAuMTUJMDIvMjcvMjAwOAlFcmljaCBDaGVuICYgTmljayBDaGVuZworKioJCQkJCQkxLmFyY21zcl9pb3BfbWVzc2FnZV94ZmVyKCkgaXMgY2FsbGVkIGZyb20gYXRvbWljIGNvbnRleHQgdW5kZXIgdGhlCisqKgkJCQkJCXF1ZXVlY29tbWFuZCBzY3NpX2hvc3RfdGVtcGxhdGUgaGFuZGxlci4gSmFtZXMgQm90dG9tbGV5IHBvaW50ZWQgb3V0CisqKgkJCQkJCXRoYXQgdGhlIGN1cnJlbnQgR0ZQX0tFUk5FTHxHRlBfRE1BIGZsYWdzIGFyZSB3cm9uZzogZmlyc3RseSB3ZSBhcmUgaW4KKyoqCQkJCQkJYXRvbWljIGNvbnRleHQsIHNlY29uZGx5IHRoaXMgbWVtb3J5IGlzIG5vdCB1c2VkIGZvciBETUEuCisqKgkJCQkJCUFsc28gcmVtb3ZlZCBzb21lIHVubmVlZGVkIGNhc3RzLiBUaGFua3MgdG8gRGFuaWVsIERyYWtlIDxkc2RAZ2VudG9vLm9yZz4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLmlwcyBiL0RvY3VtZW50YXRpb24vc2NzaS9DaGFuZ2VMb2cuaXBzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwMTlmNTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLmlwcwpAQCAtMCwwICsxLDEyMiBAQAorSUJNIFNlcnZlUkFJRCBkcml2ZXIgQ2hhbmdlIExvZworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisgICAgICAgIDUuMDAuMDEgIC0gU2FyYXNvdGEgKCA1aSApIGFkYXB0ZXJzIG11c3QgYWx3YXlzIGJlIHNjYW5uZWQgZmlyc3QgIAorICAgICAgICAgICAgICAgICAtIEdldCByaWQgb24gSU9DVExfTkVXX0NPTU1BTkQgY29kZSAgCisgICAgICAgICAgICAgICAgIC0gQWRkIEV4dGVuZGVkIERDREIgQ29tbWFuZHMgZm9yIFRhcGUgU3VwcG9ydCBpbiA1SSAgICAgICAgICAgICAgICAgIAorICAgICAgICAKKyAgICAgICAgNC45MC4xMSAgLSBEb24ndCBhY3R1YWxseSBSRVNFVCB1bmxlc3MgaXQncyBwaHlzaWNhbGx5IHJlcXVpcmVkCisgICAgICAgICAgICAgICAgIC0gUmVtb3ZlIHVudXNlZCBjb21waWxlIG9wdGlvbnMKKyAgICAgICAgCisgICAgICAgIDQuOTAuMDggIC0gRGF0YSBDb3JydXB0aW9uIGlmIEZpcnN0IFNjYXR0ZXIgR2F0aGVyIEVsZW1lbnQgaXMgPiA2NEsKKyAgICAgICAgCisgICAgICAgIDQuOTAuMDggIC0gSW5jcmVhc2UgRGVsYXlzIGluIEZsYXNoaW5nICggVHJvbWJvbmUgT25seSAtIDRIICkgICAgICAgIAorICAgICAgICAKKyAgICAgICAgNC45MC4wNSAgLSBVc2UgTmV3IFBDSSBBcmNoaXRlY3R1cmUgdG8gZmFjaWxpdGF0ZSBIb3QgUGx1ZyBEZXZlbG9wbWVudAorICAgICAgICAKKyAgICAgICAgNC45MC4wMSAgLSBBZGQgU2VydmVSQUlEIFZlcnNpb24gQ2hlY2tpbmcKKworICAgICAgICA0LjgwLjI2ICAtIENsZWFuIHVwIHBvdGVudGlhbCBjb2RlIHByb2JsZW1zICggQXJqYW4ncyByZWNvbW1lbmRhdGlvbnMgKQorICAgICAgICAKKyAgICAgICAgNC44MC4yMSAgLSBDaGFuZ2UgbWVtY3B5KCkgdG8gY29weV90b191c2VyKCkgaW4gTlZSQU0gUGFnZSA1IElPQ1RMIHBhdGggICAKKyAgICAgICAgCisgICAgICAgIDQuODAuMjAgIC0gU2V0IG1heF9zZWN0b3JzIGluIFNjc2lfSG9zdCBzdHJ1Y3R1cmUgKCBpZiA+PSAyLjQuNyBrZXJuZWwgKQorICAgICAgICAgICAgICAgICAtIDUgc2Vjb25kIGRlbGF5IG5lZWRlZCBhZnRlciByZXNldHRpbmcgYW4gaTk2MCBhZGFwdGVyCisgICAgICAgIAorICAgICAgICA0LjgwLjE0ICAtIFRha2UgYWxsIHNlbWFwaG9yZXMgb2ZmIHN0YWNrICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgLSBDbGVhbiBVcCBOZXdfSU9DVEwgcGF0aAorICAgICAgICAgICAgICAgICAgIAorICAgICAgICA0LjgwLjA0ICAtIEVsaW1pbmF0ZSBjYWxscyB0byBzdHJ0b2soKSBpZiAyLjQueCBvciBncmVhdGVyIAorICAgICAgICAgICAgICAgICAtIEFkanVzdG1lbnRzIHRvIERldmljZSBRdWV1ZSBEZXB0aCAgICAgICAgICAgICAgIAorCisgICAgICAgIDQuODAuMDAgIC0gTWFrZSBpYTY0IFNhZmUgICAgCisgICAgICAgIAorICAgICAgICA0LjcyLjAxICAtIEkvTyBNYXBwZWQgTWVtb3J5IHJlbGVhc2UgKCBzbyAiaW5zbW9kIGlwcyIgZG9lcyBub3QgRmFpbCApICAgIAorICAgICAgICAgICAgICAgICAtIERvbid0IElzc3VlIEludGVybmFsIEZGREMgQ29tbWFuZCBpZiB0aGVyZSBhcmUgQWN0aXZlIENvbW1hbmRzIAorICAgICAgICAgICAgICAgICAtIENsb3NlIFdpbmRvdyBmb3IgZ2V0dGluZyB0b28gbWFueSBJT0NUTCdzIGFjdGl2ZSAKKyAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgNC43Mi4wMCAgLSBBbGxvdyBmb3IgYSBTY2F0dGVyLUdhdGhlciBFbGVtZW50IHRvIGV4Y2VlZCBNQVhfWEZFUiBTaXplICAgICAKKyAgICAgICAgCisgICAgICAgIDQuNzEuMDAgIC0gQ2hhbmdlIGFsbCBtZW1vcnkgYWxsb2NhdGlvbnMgdG8gbm90IHVzZSBHRlBfRE1BIGZsYWcgCisgICAgICAgICAgICAgICAgIC0gQ29kZSBDbGVhbi1VcCBmb3IgMi40Lngga2VybmVsICAgICAgCisgICAgICAgIAorICAgICAgICA0LjcwLjE1ICAtIEZpeCBCcmVha3VwIGZvciB2ZXJ5IGxhcmdlICggbm9uLVNHICkgcmVxdWVzdHMKKyAgICAgICAgCisgICAgICAgIDQuNzAuMTMgIC0gRG9uJ3QgcmVsZWFzZSBIQSBMb2NrIGluIGlwc19uZXh0KCkgdW50aWwgU0MgdGFrZW4gb2ZmIHF1ZXVlICAKKyAgICAgICAgICAgICAgICAgLSBVbnJlZ2lzdGVyIFNDU0kgZGV2aWNlIGluIGlwc19yZWxlYXNlKCkgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgLSBEb24ndCBTZW5kIENEQidzIGlmIHdlIGFscmVhZHkga25vdyB0aGUgZGV2aWNlIGlzIG5vdCBwcmVzZW50ICAKKyAgICAgICAgICAgICAgICAgCisgICAgICAgIDQuNzAuMTIgIC0gQ29ycmVjdGl2ZSBhY3Rpb25zIGZvciBiYWQgY29udHJvbGxlciAoIGR1cmluZyBpbml0aWFsaXphdGlvbiApCisgICAgICAgIAorICAgICAgICA0LjcwLjA5ICAtIFVzZSBhIENvbW1vbiAoIExhcmdlIEJ1ZmZlciApIGZvciBGbGFzaGluZyBmcm9tIHRoZSBKQ1JNIENEICAgIAorICAgICAgICAgICAgICAgICAtIEFkZCBJUFNTRU5EIEZsYXNoIFN1cHBvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAtIFNldCBTZW5zZSBEYXRhIGZvciBVbmtub3duIFNDU0kgQ29tbWFuZCAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAtIFVzZSBTbG90IE51bWJlciBmcm9tIE5WUkFNIFBhZ2UgNSAKKyAgICAgICAgICAgICAgICAgLSBSZXN0b3JlIGNhbGxlcidzIERDREIgU3RydWN0dXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgNC4yMC4xNCAgLSBVcGRhdGUgcGF0Y2ggZmlsZXMgZm9yIGtlcm5lbCAyLjQuMC10ZXN0NQorCisgICAgICAgIDQuMjAuMTMgIC0gRml4IHNvbWUgZmFpbHVyZSBjYXNlcyAvIHJlc2V0IGNvZGUKKyAgICAgICAgICAgICAgICAgLSBIb29rIGludG8gdGhlIHJlYm9vdF9ub3RpZmllciB0byBmbHVzaCB0aGUgY29udHJvbGxlcgorICAgICAgICAgICAgICAgICAgIGNhY2hlCisKKyAgICAgICAgNC4yMC4wMyAtIFJlbmFtZSB2ZXJzaW9uIHRvIGNvaW5jaWRlIHdpdGggbmV3IHJlbGVhc2Ugc2NoZWR1bGVzCisgICAgICAgICAgICAgICAgLSBQZXJmb3JtYW5jZSBmaXhlcworICAgICAgICAgICAgICAgIC0gRml4IHRydW5jYXRpb24gb2YgL3Byb2MgZmlsZXMgd2l0aCBjYXQKKyAgICAgICAgICAgICAgICAtIE1lcmdlIGluIGNoYW5nZXMgdGhyb3VnaCBrZXJuZWwgMi40LjB0ZXN0MWFjMjEKKworICAgICAgICA0LjEwLjEzIC0gRml4IGZvciBkeW5hbWljIHVubG9hZCBhbmQgcHJvYyBmaWxlIHN5c3RlbQorCisgICAgICAgIDQuMTAuMDAgLSBBZGQgc3VwcG9ydCBmb3IgU2VydmVSQUlEIDRNLzRMCisKKyAgICAgICAgNC4wMC4wNiAtIEZpeCB0aW1lb3V0IHdpdGggaW5pdGlhbCBGRkRDIGNvbW1hbmQKKworICAgICAgICA0LjAwLjA1IC0gUmVtb3ZlIHdpc2hfYmxvY2sgZnJvbSBpbml0IHJvdXRpbmUKKyAgICAgICAgICAgICAgICAtIFVzZSBsaW51eC9zcGlubG9jay5oIGluc3RlYWQgb2YgYXNtL3NwaW5sb2NrLmggZm9yIGtlcm5lbHMKKyAgICAgICAgICAgICAgICAgIDIuMy4xOCBhbmQgbGF0ZXIKKyAgICAgICAgICAgICAgICAtIFN5bmMgd2l0aCBvdGhlciBjaGFuZ2VzIGZyb20gdGhlIDIuMyBrZXJuZWxzCisKKyAgICAgICAgNC4wMC4wNCAtIFJlbmFtZSBzdHJ1Y3R1cmVzL2NvbnN0YW50cyB0byBiZSBwcmVmaXhlZCB3aXRoIElQU18KKworICAgICAgICA0LjAwLjAzIC0gQWRkIGFsdGVybmF0aXZlIHBhc3N0aHJ1IGludGVyZmFjZQorICAgICAgICAgICAgICAgIC0gQWRkIGFiaWxpdHkgdG8gZmxhc2ggU2VydmVSQUlEIEJJT1MKKworICAgICAgICA0LjAwLjAyIC0gRml4IHByb2JsZW0gd2l0aCBQVCBEQ0RCIHdpdGggbm8gYnVmZmVyCisKKyAgICAgICAgNC4wMC4wMSAtIEFkZCBzdXBwb3J0IGZvciBGaXJzdCBGYWlsdXJlIERhdGEgQ2FwdHVyZQorCisgICAgICAgIDQuMDAuMDAgLSBBZGQgc3VwcG9ydCBmb3IgU2VydmVSQUlEIDQKKworICAgICAgICAzLjYwLjAyIC0gTWFrZSBEQ0RCIGRpcmVjdGlvbiBiYXNlZCBvbiBsb29rdXAgdGFibGUuCisgICAgICAgICAgICAgICAgLSBPbmx5IGFsbG93IG9uZSBEQ0RCIGNvbW1hbmQgdG8gYSBTQ1NJIElEIGF0IGEgdGltZS4KKworICAgICAgICAzLjYwLjAxIC0gUmVtb3ZlIGJvZ3VzIGVycm9yIGNoZWNrIGluIHBhc3N0aHJ1IHJvdXRpbmUuCisKKyAgICAgICAgMy42MC4wMCAtIEJ1bXAgbWF4IGNvbW1hbmRzIHRvIDEyOCBmb3IgdXNlIHdpdGggU2VydmVSQUlECisgICAgICAgICAgICAgICAgICBmaXJtd2FyZSAzLjYwLgorICAgICAgICAgICAgICAgIC0gQ2hhbmdlIHZlcnNpb24gdG8gMy42MCB0byBjb2luY2lkZSB3aXRoIFNlcnZlUkFJRCByZWxlYXNlCisgICAgICAgICAgICAgICAgICBudW1iZXJpbmcuCisKKyAgICAgICAgMS4wMC4wMCAtIEluaXRpYWwgUHVibGljIFJlbGVhc2UKKyAgICAgICAgICAgICAgICAtIEZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIDAuOTkuMDUKKworICAgICAgICAwLjk5LjA1IC0gRml4IGFuIG9vcHMgb24gY2VydGFpbiBwYXNzdGhydSBjb21tYW5kcworCisgICAgICAgIDAuOTkuMDQgLSBGaXggcmFjZSBjb25kaXRpb24gaW4gdGhlIHBhc3N0aHJ1IG1lY2hhbmlzbQorICAgICAgICAgICAgICAgICAgLS0gdGhpcyByZXF1aXJlZCB0aGUgaW50ZXJmYWNlIHRvIHRoZSB1dGlsaXRpZXMgdG8gY2hhbmdlCisgICAgICAgICAgICAgICAgLSBGaXggZXJyb3IgcmVjb3ZlcnkgY29kZQorCisgICAgICAgIDAuOTkuMDMgLSBNYWtlIGludGVycnVwdCByb3V0aW5lIGhhbmRsZSBhbGwgY29tcGxldGVkIHJlcXVlc3Qgb24gdGhlCisgICAgICAgICAgICAgICAgICBhZGFwdGVyIG5vdCBqdXN0IHRoZSBmaXJzdCBvbmUKKyAgICAgICAgICAgICAgICAtIE1ha2Ugc3VyZSBwYXNzdGhydSBjb21tYW5kcyBnZXQgd29rZW4gdXAgaWYgd2UgcnVuIG91dCBvZgorICAgICAgICAgICAgICAgICAgU0NCcworICAgICAgICAgICAgICAgIC0gU2VuZCBhbGwgb2YgdGhlIGNvbW1hbmRzIG9uIHRoZSBxdWV1ZSBhdCBvbmNlIHJhdGhlciB0aGFuCisgICAgICAgICAgICAgICAgICBvbmUgYXQgYSB0aW1lIHNpbmNlIHRoZSBjYXJkIHdpbGwgc3VwcG9ydCBpdC4KKworICAgICAgICAwLjk5LjAyIC0gQWRkZWQgc29tZSBhZGRpdGlvbmFsIGRlYnVnIHN0YXRlbWVudHMgdG8gcHJpbnQgb3V0CisgICAgICAgICAgICAgICAgICBlcnJvcnMgaWYgYW4gZXJyb3Igb2NjdXJzIHdoaWxlIHRyeWluZyB0byByZWFkL3dyaXRlCisgICAgICAgICAgICAgICAgICB0byBhIGxvZ2ljYWwgZHJpdmUgKElQU19ERUJVRykuCisKKyAgICAgICAgICAgICAgICAtIEZpeGVkIHJlYWQvd3JpdGUgZXJyb3JzIHdoZW4gdGhlIGFkYXB0ZXIgaXMgdXNpbmcgYW4KKyAgICAgICAgICAgICAgICAgIDhLIHN0cmlwZSBzaXplLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLmxwZmMgYi9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLmxwZmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY2ZDU5NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2NzaS9DaGFuZ2VMb2cubHBmYwpAQCAtMCwwICsxLDE4NjUgQEAKK0tub3duIGlzc3VlcyA6CisJKiBQbGVhc2UgcmVhZCB0aGUgYXNzb2NpYXRlZCBSRUxFQVNFLU5PVEVTIGZpbGUgISEhCisJKiBUaGlzIHNvdXJjZSByZWxlYXNlIGludGVuZGVkIGZvciB1cHN0cmVhbSBrZXJuZWwgcmVsZWFzZXMgb25seSEKKworQ2hhbmdlcyBmcm9tIDIwMDUwMzIzIHRvIDIwMDUwNDEzCisKKwkqIENoYW5nZWQgdmVyc2lvbiBudW1iZXIgdG8gOC4wLjI4CisJKiBGaXhlZCBidWlsZCB3YXJuaW5nIGZvciAyLjYuMTItcmMyIGtlcm5lbHM6IG1lbXBvb2xfYWxsb2Mgbm93CisJICByZXF1aXJlcyBhIGZ1bmN0aW9uIHdoaWNoIHRha2VzIGFuIHVuc2lnbmVkIGludCBmb3IgZ2ZwX2ZsYWdzLgorCSogUmVtb3ZlZCBwY2kgZG1hIHN5bmMgY2FsbHMgdG8gY29oZXJlbnQvY29uc2lzdGVudCBwY2kgbWVtb3J5LgorCSogTWVyZ2VkIHBhdGNoIGZyb20gQ2hyaXN0b3BoIEhlbGx3aWcgPGhjaEBsc3QuZGU+OiBzcGxpdCBoZWxwZXJzCisJICBmb3IgZmFicmljIGFuZCBucG9ydCBsb2dpbnMgb3V0IG9mIGxwZmNfY21wbF9lbHNfZmxvZ2kuCisJKiBSZW1vdmVkIHN5c2ZzIGF0dHJpYnV0ZXMgdGhhdCBhcmUgdXNlZCB0byBkdW1wIHRoZSB2YXJpb3VzCisJICBkaXNjb3ZlcnkgbGlzdHMuCisJKiBGaXggZm9yIGlzc3VlIHdoZXJlIG5vdCBhbGwgbHVucyBhcmUgc2Vlbi4gIFNlYXJjaCBhbGwgbGlzdHMKKwkgIG90aGVyIHRoYW4gdW5tYXAgbGlzdCBpbiBscGZjX2ZpbmRfdGFyZ2V0KCkuICBPdGhlcndpc2UgSU5RVUlSWQorCSAgdG8gbHVucyBvbiBub2RlcyBpbiBOUFIgb3Igb3RoZXIgcmVsZXZhbnQgc3RhdGVzIChQTE9HSSwKKwkgIFBSTEkuLi4pIGFyZSBlcnJvcmVkIGJhY2sgYW5kIHNjYW4oKSB0ZXJtaW5hdGVzLgorCSogUmVtb3ZlZCBGQ19UUkFOU1BPUlRfUEFUQ0hFU3h4eCBkZWZpbmVzLiAgVGhleSdyZSBpbiAyLjYuMTItcmMxLgorCSogQ29tcGFyZSByZXR1cm4gdmFsdWUgb2YgbHBmY19zY3NpX3RndF9yZXNldCBhZ2FpbnN0IFNDU0kKKwkgIG1pZGxheWVyIGNvZGVzIFNVQ0NFU1MvRkFJTEVEIHdoaWNoIHRoYXQgZnVuY3Rpb24gcmV0dXJucyByYXRoZXIKKwkgIHRoYW4gU0xJIHJldHVybiBjb2RlLgorCSogUmVtb3ZlZCBleHRyYW5lb3VzIGNhbGxzIHRvIGxwZmNfc2xpX25leHRfaW90YWcgd2hpY2ggc2hvdWxkCisJICBvbmx5IGJlIGNhbGxlZCBmcm9tIGxwZmNfc2xpX3N1Ym1pdF9pb2NiLiAgQWxzbyBtYWtlCisJICBscGZjX3NsaV9uZXh0X2lvdGFnIHN0YXRpYy4KKwkqIEFkZGVkIFBDSSBJRCBmb3IgTFAxMDAwMC1TLgorCSogQ2hhbmdlcyBpbiBscGZjX2Fib3J0X2hhbmRsZXIoKTogUmV0dXJuIFNVQ0NFU1MgaWYgd2UgZGlkIG5vdAorCSAgZmluZCBjb21tYW5kIGluIGJvdGggVFggYW5kIFRYIGNvbXBsZXRpb24gcXVldWVzLiAgUmV0dXJuIEVSUk9SCisJICBpZiB3ZSB0aW1lZCBvdXQgd2FpdGluZyBmb3IgY29tbWFuZCB0byBjb21wbGV0ZSBhZnRlciBhYm9ydCB3YXMKKwkgIGlzc3VlZC4KKwkqIFplcm8tb3V0IHJlc3BvbnNlIHNlbnNlIGxlbmd0aCBpbiBscGZjX3Njc2lfcHJlcF9jbW5kIHRvIHByZXZlbnQKKwkgIGludGVycHJldGF0aW9uIG9mIHN0YWxlIHNlbnNlIGxlbmd0aCB3aGVuIHRoZSBjb21tYW5kIGNvbXBsZXRlcworCSAgLSB3YXMgY2F1c2luZyBzcHVyaW91cyAwNzEwIG1lc3NhZ2VzLgorCSogTW92ZWQgY2xlYXJpbmcgb2YgaG9zdF9zY3JpYmJsZSBpbnNpZGUgaG9zdF9sb2NrIGluIElPCisJICBjb21wbGV0aW9uIHBhdGguCisJKiBGaXhlZCBhIGJ1bmNoIG9mIG1peGVkIHRhYi9zcGFjZSBpbmRlbnRhdGlvbi4KKwkqIEFsbG93IGhleCBmb3JtYXQgbnVtYmVycyBpbiBzeXNmcyBhdHRyaWJ1dGUgc2V0dGluZy4gIEZpeAorCSAgYXBwbGljYXRpb24gaGFuZyB3aGVuIGludmFsaWQgbnVtYmVycyBhcmUgdXNlZCBpbiBzeXNmcworCSAgc2V0dGluZ3MuCisJKiBSZW1vdmVkIGV4dHJhIGlvdGFnIGFsbG9jYXRpb24gYnkgbHBmY19hYm9ydF9oYW5kbGVyLgorCSogQ2xlYXIgaG9zdF9zY3JpYmJsZSBpbiB0aGUgc2NzaV9jbW5kIHN0cnVjdHVyZSB3aGVuIGZhaWxpbmcgaW4KKwkgIHF1ZXVlY29tbWFuZC4KKwkqIENoYW5nZWQgbG9naWMgYXQgdG9wIG9mIGxwZmNfYWJvcnRfaGFuZGxlciBzbyB0aGF0IGlmIHRoZQorCSAgY29tbWFuZCdzIGhvc3Rfc2NpYmJsZSBmaWVsZCBpcyBOVUxMLCByZXR1cm4gU1VDQ0VTUyBiZWNhdXNlIHRoZQorCSAgZHJpdmVyIGhhcyBhbHJlYWR5IHJldHVybmVkIHRoZSBjb21tYW5kIHRvIHRoZSBtaWRsYXllci4KKworQ2hhbmdlcyBmcm9tIDIwMDUwMzA4IHRvIDIwMDUwMzIzCisKKwkqIENoYW5nZWQgdmVyc2lvbiBudW1iZXIgdG8gOC4wLjI3CisJKiBDaGFuZ2VkIGEgZmV3IGxpbmVzIGZyb20gcGF0Y2ggc3VibWl0dGVkIGJ5IENocmlzdG9waCBIZWxsd2lnCisJICAoMy8xOSkuIE1BSUxCT1hfV1NJWkUgKiAodWludDMyX3QpIGlzIHJlcGxhY2VkIHdpdGggYW4KKwkgIGVxdWl2YWxlbnQgTUFJTEJPWF9DTURTSVpFIG1hY3JvLgorCSogTWVyZ2VkIHBhdGNoIGZyb20gQ2hyaXN0b3BoIEhlbGx3aWcgKDMvMTkpOiBzb21lIG1pc2MgcGF0Y2hlcworCSAgYWdhaW5zdCB0aGUgbGF0ZXN0IGRyaXZlcnM6CisJICAtIHN0b3AgdXNpbmcgdm9sYXRpbGUuICBpZiB5b3UgbmVlZCBzcGVjaWFsIG9yZGVyaW5nIHVzZSBtZW1vcnkKKwkgICAgYmFycmllcnMgYnV0IHRoYXQgZG9lc24ndCBzZWVtIHRvIGJlIHRoZSBjYXNlIGhlcmUKKwkgIC0gc3dpdGNoIGxwZmNfc2xpX3BjaW1lbV9iY29weSB0byB0YWtlIHZvaWQgKiBhcmd1bWVudHMuCisJICAtIHJlbW92ZSB0eXBlY2FzdCBmb3IgY29uc3RhbnRzIC0gYSBVIHBvc3RmaXggbWFya3MgdGhlbQorCSAgICB1bnNpZ25lZCBpbnQgaW4gQworCSAgLSBhZGQgYSBNQUlMQk9YX0NNRF9TSVpFIG1hY3JvLCBhcyBtb3N0IHVzZXJzIG9mCisJICAgIE1BSUxCT1hfQ01EX1dTSVpFIGRpZG4ndCByZWFsbHkgd2FudCB0aGUgd29yZCBjb3VudAorCSAgLSBraWxsIHN0cnVjdCBscGZjX3Njc2lfZG1hX2J1ZiBhbmQgZW1iZWRkZWQgdGhlIHR3byBtZW1iZXJzCisJICAgIGRpcmVjdGx5IGluIHN0cnVjdCBscGZjX3Njc2lfYnVmCisJICAtIGRvbid0IGNhbGwgZG1hX3N5bmMgZnVuY3Rpb24gb24gYWxsb2NhdGlvbnMgZnJvbQorCSAgICBwY2lfcG9vbF9hbGxvYyAtIGl0J3Mgb25seSBmb3Igc3RyZWFtaW5nIG1hcHBpbmdzIChwY2lfbWFwXyopCisJKiBNZXJnZWQgcGF0Y2ggZnJvbSBDaHJpc3RvcGggSGVsbHdpZyAoMy8xOSkgLSBubHBfZmFpbE1hc2sgaXNuJ3QKKwkgIGV2ZXIgdXNlZCBieSB0aGUgZHJpdmVyLCBqdXN0IHJlcG9ydGVkIHRvIHVzZXJzcGFjZSAoYW5kIHRoYXQgaW4KKwkgIGEgbXVsdGktdmFsdWUgZmlsZSB3aGljaCBpcyBhZ2FpbnN0IHRoZSBzeXNmcyBndWlkZWxpbmVzKS4KKwkqIENoYW5nZSBwY2lfbW9kdWxlX2luaXQgdG8gcGNpX3JlZ2lzdGVyX21vZHVsZSgpIHdpdGggYXBwcm9wcmlhdGUKKwkgIGlmZGVmcy4KKwkqIEFkZGVkICNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPiBhcyByZXF1aXJlZCBieSB0aGUgRE1BCisJICAzMmJpdCBhbmQgNjRiaXQgZGVmaW5lcyBvbiBzb21lIGFyY2hzLgorCSogTWVyZ2VkIHBhdGNoIGZyb20gQ2hyaXN0b3BoIEhlbGx3aWcgKDAzLzE5KSAtIGZpeCBpbml0aWFsaXphdGlvbgorCSAgb3JkZXIgLSBzY3NpX2FkZF9ob3N0IG11c3QgaGFwcGVuIGxhc3QgZnJvbSBzY3NpIFBPVi4gQWxzbyBzb21lCisJICBtaW5vciBzdHlsZS9jb21tZW50IGZpeHVwcy4KKwkqIEZpeGVkIHVzZSBvZiBUUkFOU1BPUlRfUEFUQ0hFU19WMiBieSBjaGFuZ2luZyB0bworCSAgRkNfVFJBTlNQT1JUX1BBVENIRVNfVjIuCisKK0NoYW5nZXMgZnJvbSAyMDA1MDIyMyB0byAyMDA1MDMwOAorCisJKiBDaGFuZ2VkIHZlcnNpb24gbnVtYmVyIHRvIDguMC4yNgorCSogUmV2aXNlIFRSQU5TUE9SVF9QQVRDSEVTX1YyIHNvIHRoYXQgbHBmY190YXJnZXQgaXMgcmVtb3ZlZCBhbmQKKwkgIHJwb3J0IGRhdGEgaXMgdXNlZCBpbnN0ZWFkLiBSZW1vdmVkIGRldmljZV9xdWV1ZV9oYXNoW10uCisJKiBDaGFuZ2VkIFJXIGF0dHJpYnV0ZXMgb2Ygc2Nhbl9kb3duLCBtYXhfbHVucyBhbmQgZmNwX2JpbmRfbWV0aG9kCisJICB0byBSIG9ubHkuCisJKiBGaXhlZCBSU0NOIGhhbmRsaW5nIGR1cmluZyBpbml0aWFsIGxpbmsgaW5pdGlhbGl6YXRpb24uCisJKiBGaXhlZCBpc3N1ZSB3aXRoIHJlY2VpdmluZyBQTE9HSSBoYW5kbGluZyB3aGVuIG5vZGUgaXMgb24gTlBSCisJICBsaXN0IGFuZCBtYXJrZWQgZm9yIEFESVNDLgorCSogRml4ZWQgUlNDTiB0aW1lb3V0IGlzc3Vlcy4KKwkqIFJlZHVjZWQgc2V2ZXJpdHkgb2YgIlNDU0kgbGF5ZXIgaXNzdWVkIGFib3J0IGRldmljZSIgbWVzc2FnZSB0bworCSAgS0VSTl9XQVJOSU5HLgorCSogRmVlZGJhY2sgZnJvbSBDaHJpc3RvcGggSGVsbHdpZyAob24gMi81KSAtIEluIHRoZSBMUEZDX0VWVF9TQ0FOCisJICBjYXNlIHRoZSBjYWxsZXIgYWxyZWFkeSBoYXMgdGhlIHRhcmdldCBJRCBoYW5kbHksIHNvIHBhc3MgdGhhdAorCSAgb25lIGluIGV2dF9hcmcxLgorCSogRml4IGNvbXBpbGUgd2FybmluZy9yZXN1bHRhbnQgcGFuaWMgaW4KKwkgIGxwZmNfcmVnaXN0ZXJfcmVtb3RlX3BvcnQoKS4KKworQ2hhbmdlcyBmcm9tIDIwMDUwMjE1IHRvIDIwMDUwMjIzCisKKwkqIENoYW5nZWQgdmVyc2lvbiBudW1iZXIgdG8gOC4wLjI1CisJKiBBZGQgYXBwcm9wcmlhdGUgY29tbWVudHMgdG8gbHBmY19zbGkuYy4KKwkqIFVzZSBETUFfNjRCSVRfTUFTSyBhbmQgRE1BXzMyQklUX01BU0sgZGVmaW5lcyBpbnN0ZWFkIG9mCisJICAweGZmZmZmZmZmZmZmZmZmZmZVTEwgJiAweGZmZmZmZmZmVUxMIHJlc3BlY3RpdmVseS4gIFVzZSBwY2kKKwkgIGVxdWl2YWxlbnRzIGluc3RlYWQgb2YgZG1hX3NldF9tYXNrIGFuZCBhbHNvIG1vZGlmeSBjb25kaXRpb24KKwkgIGNsYXVzZSB0byBhY3R1YWxseSBleGl0IG9uIGVycm9yIGNvbmRpdGlvbi4KKwkqIFJlc3RhcnQgZWxzIHRpbWVvdXQgaGFuZGxlciBvbmx5IGlmIHR4Y21wbHFfY250LiBPbiBzdWJtaXNzaW9uLAorCSAgbW9kX3RpbWVyIHRoZSBlbHNfdG1vZnVuYy4gIFRoaXMgcHJldmVudHMgdGhlIHdvcmtlciB0aHJlYWQgZnJvbQorCSAgd2FraW5nIHVwIHRoZSBlbHNfdG1vIGhhbmRsZXIgdW4tbmVjZXNzYXJpbHkuICBUaGUgdGhyZWFkIHdhcworCSAgYmVpbmcgd29rZW4gdXAgZXZlbiB3aGVuIHRoZXJlIHdlcmUgbm8gcGVuZGluZyBlbHMgY29tbWFuZHMuCisJKiBBZGRlZCBuZXcgdHlwZWRlZnMgZm9yIGFib3J0IGFuZCByZXNldCBmdW5jdGlvbnMuCisJKiBDb2xsYXBzZWQgbHBmY19zbGlfYWJvcnRfaW9jYl94eHggaW50byBhIHNpbmdsZSBmdW5jdGlvbi4KKwkqIENvbGxhcHNlZCBscGZjX3NsaV9zdW1faW9jYl94eHggaW50byBhIHNpbmdsZSBmdW5jdGlvbi4KKwkqIFJlbW92ZWQgVFhRIGZyb20gYWxsIGFib3J0IGFuZCByZXNldCBoYW5kbGVycyBzaW5jZSBpdCBpcyBuZXZlcgorCSAgdXNlZC4KKwkqIEZpeGVkIE9vcHMgcGFuaWMgaW4gOC4wLjIzIChyZXBvcnRlZCBvbiBTb3VyY2VGb3JnZSkuICBUaGUKKwkgIGRyaXZlciB3YXMgbm90IGhhbmRsaW5nIExQRkNfSU9fUE9MTCBjYXNlcyBjb3JyZWN0bHkgaW4KKwkgIGZhc3RfcmluZ19ldmVudCBhbmQgd2FzIHNldHRpbmcgdGhlIHRndF9yZXNldCB0aW1lb3V0IHRvIDAgaW4KKwkgIGxwZmNfcmVzZXRfYnVzX2hhbmRsZXIuICBUaGlzIDAgdGltZW91dCB3b3VsZCBub3QgYWxsb3cgdGhlIEZXCisJICB0byB0aW1lb3V0IEFCVFMncyBvbiBiYWQgdGFyZ2V0cyBhbmQgYWxsb3cgdGhlIGRyaXZlciB0byBoYXZlIGFuCisJICBpb2NiIG9uIHR3byBsaXN0cy4gIEFsc28gc3BsaXQgdGhlIGxwZmNfc2xpX3Jpbmd0eGNtcGxfZ2V0CisJICBmdW5jdGlvbiBpbnRvIHR3byByb3V0aW5lcyB0byBtYXRjaCB0aGUgZmFzdCBhbmQgc2xvdyBjb21wbGV0aW9uCisJICBzZW1hbnRpY3MgLSBFTFMgY29tcGxldGlvbnMgd29ya2VkIGZvciB0aGUgd3JvbmcgcmVhc29ucy4gIEFsc28KKwkgIHByb3ZpZGVkIG5ldyBsb2cgbWVzc2FnZSBudW1iZXIgLSBoYWQgdHdvIDAzMjYgZW50cmllcy4KKwkqIFJlbW92ZWQgdW51c2VkICNkZWZpbmUgTFBGQ19TQ1NJX0lOSVRJQUxfQlBMX1NJWkUuCisJKiBSZW1vdmVkIHVudXNlZCBzdHJ1Y3QgbHBmY19ub2RlX2ZhcnBfcGVuZCBkZWZpbml0aW9uLgorCSogUmVtb3ZlZCB1bnVzZWQgI2RlZmluZSBMUEZDX1NMSU0yX1BBR0VfQVJFQS4KKwkqIENoYW5nZWQgemVyb3MgdXNlZCBhcyBwb2ludGVycyB0byBOVUxMLgorCSogUmVtb3ZlZCB1bm5lZWRlZCBicmFjZXMgYXJvdW5kIHNpbmdsZSBsaW5lIGluIGxwZmNfZG9fd29yay4KKwkqIENsb3NlIGh1bW9uZ291cyBtZW1vcnkgbGVhayBpbiBscGZjX3NsaS5jIC0gZHJpdmVyIHdhcyBsb3NpbmcgMTMKKwkgIGlvY2JxIHN0cnVjdHVyZXMgcGVyIExJUC4KKwkqIFJlbW92ZWQgbGFzdCBvZiBHRlBfQVRPTUlDIGFsbG9jYXRpb25zLgorCSogTG9ja3MgYXJlIG5vdCB0YWtlbiBvdXRzaWRlIG9mIG5wb3J0ZGlzYywgaGJhZGlzYywgZWxzIGFuZCBtb3N0CisJICBvZiB0aGUgaW5pdCwgc2xpLCBtYm94IGFuZCBjdCBncm91cHMgb2YgZnVuY3Rpb25zCisJKiBGaXggY29tbWVudCBmb3IgbHBmY19zbGlfaW9jYl9jbWRfdHlwZSB0byBmaXQgd2l0aGluIDgwIGNvbHVtbnMuCisJKiBSZXBsYWNlZCB3YWl0X2V2ZW50KCkgd2l0aCB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoKS4KKwkgIHdhaXRfZXZlbnQoKSBwdXRzIHRoZSB3b2tlciB0aHJlYWQgaW4gYW4gVU5JTlRFUlJVUFRJQkxFIHN0YXRlCisJICBjYXVzaW5nIGl0IHRvIGZpZ3VyZSBpbiBsb2FkIGF2ZXJhZ2UgY2FsY3VsYXRpb25zLiBBbHNvIGFkZCBhCisJICBCVUdfT04gdG8gdGhlIHJldCBjb2RlIG9mIHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZSgpIHNpbmNlIHRoZQorCSAgcHJlbWlzZSBpcyB0aGF0IHRoZSB3b3JrZXIgdGhyZWFkIGlzIHNpZ25hbC1pbW11bmUuCisKK0NoYW5nZXMgZnJvbSAyMDA1MDIwOCB0byAyMDA1MDIxNQorCisJKiBDaGFuZ2VkIHZlcnNpb24gbnVtYmVyIHRvIDguMC4yNAorCSogRml4ZWQgYSBtZW1vcnkgbGVhayBvZiBpb2NicSBzdHJ1Y3R1cmUuICBGb3IgRUxTIHNvbGljaXRlZCBpb2NicworCSAgc2xpIGxheWVyIG5vdyBmcmVlcyB0aGUgcmVzcG9uc2UgaW9jYnMgYWZ0ZXIgcHJvY2Vzc2luZyBpdC4KKwkqIENsb3NlZCBsYXJnZSBtZW1vcnkgbGVhayAtLSB3ZSB3ZXJlIGxvc2luZyAxMyBpb2NicSBzdHJ1Y3R1cmVzCisJICBwZXIgTElQLgorCSogQ2hhbmdpbmcgRUlPIGFuZCBFTk9NRU0gdG8gLUVJTyBhbmQgLUVOT01FTSByZXNwZWN0aXZlbHkuCisJKiBDbGVhbnVwIG9mIGxwZmNfc2xpX2lvY2JfY21kX3R5cGUgYXJyYXkgYW5kIHR5cGluZyBvZiBpb2NiIHR5cGUuCisJKiBJbXBsZW1lbnRlZCBDaHJpc3RvcGggSGVsbHdpZydzIGZlZWRiYWNrIGZyb20gMDIvMDU6IFJlbW92ZQorCSAgbWFjcm9zIHB1dEx1bkhpZ2gsIHB1dEx1bkxvdy4gVXNlIGxwZmNfcHV0X2x1bigpIGlubGluZSBpbnN0ZWFkLgorCSogSW50ZWdyYXRlZCBDaHJpc3RvcGggSGVsbHdpZydzIGZlZWRiYWNrIGZyb20gMDIvMDU6IEluc3RlYWQgb2YKKwkgIGNwdV90b19iZTMyKCksIHVzZSBzd2FiMTYoKHVpbnQxNl90KWx1bikuIFRoaXMgaXMgdGhlIHNhbWUgYXMKKwkgICJzd2FiMTYoKSBvbiBMRSIgYW5kICI8PDE2IG9uIEJFIi4KKwkqIEFkZGVkIHVwZGF0ZXMgZm9yIHJldmlzZWQgRkMgcmVtb3RlIHBvcnQgcGF0Y2ggKGRldl9sb3NzX3RtbworCSAgbW92ZWQgdG8gcnBvcnQsIGhvc3RkYXRhIHJlbmFtZWQgZGRfZGF0YSwgYWRkIGZjX3JlbW90ZV9ob3N0KCkKKwkgIG9uIHNodXRkb3duKS4KKwkqIFJlbW92ZWQgdW5uZWNlc3NhcnkgZnVuY3Rpb24gcHJvdG90eXBlLgorCSogQWRkZWQgY29kZSB0byBwcmV2ZW50IHdha2luZyB1cCB3b3JrZXIgdGhyZWFkIGFmdGVyIHRoZSBleGl0IG9mCisJICB3b3JrZXIgdGhyZWFkLiAgRml4ZXMgcGFuaWMgc2VlbiB3aXRoIGluc21vZC9ybW1vZCB0ZXN0aW5nIHdpdGgKKwkgIDcwIGRpc2tzLgorCSogSW50ZWdyYXRlZCBDaHJpc3RvcGggSGVsbHdpZydzIHBhdGNoIGZyb20gMS8zMDogTWFrZSBzb21lCisJICB2YXJpYWJsZXMvY29kZSBzdGF0aWMgKG5hbWVseSBscGZjQWxwYUFycmF5IGFuZAorCSAgcHJvY2Vzc19ub2Rldl90aW1lb3V0KCkpLgorCSogSW50ZWdyYXRlZCBDaHJpc3RvcGggSGVsbHdpZydzIHBhdGNoIGZyb20gMS8zMDogVXNlCisJICBzd2l0Y2guLi5jYXNlIGluc3RlYWQgb2YgaWYuLi5lbHNlIGlmLi4uZWxzZSBpZiB3aGlsZSBkZWNvZGluZworCSAgSkRFQyBpZC4KKworQ2hhbmdlcyBmcm9tIDIwMDUwMjAxIHRvIDIwMDUwMjA4CisKKwkqIENoYW5nZWQgdmVyc2lvbiBudW1iZXIgdG8gOC4wLjIzCisJKiBNYWtlIGxwZmNfd29ya19kb25lLCBscGZjX2dldF9zY3NpX2J1ZiwKKwkgIGxwZmNfbWJ4X3Byb2Nlc3NfbGlua191cCwgbHBmY19tYnhfaXNzdWVfbGlua19kb3duIGFuZAorCSAgbHBmY19zbGlfY2hpcHNldF9pbml0IHN0YXRpYy4KKwkqIENsZWFuZWQgdXAgcmVmZXJlbmNlcyB0byBsaXN0X2hlYWQtPm5leHQgZmllbGQgaW4gdGhlIGRyaXZlci4KKwkqIFJlcGxhY2VkIGxwZmNfZGlzY3FfcG9zdF9ldmVudCB3aXRoIGxwZmNfd29ya3FfcG9zdF9ldmVudC4KKwkqIEltcGxtZW50ZWQgQ2hyaXN0b3BoIEhlbGx3aWcncyByZXZpZXcgZnJvbSAyLzU6IENoZWNrIGZvciByZXR1cm4KKwkgIHZhbHVlcyBvZiBrbWFsbG9jLgorCSogSW50ZWdyYXRlZCBDaHJpc3RvcGggSGVsbHdpZydzIHBhdGNoIGZyb20gMS8zMDogUHJvdGVjdGluZworCSAgc2Nhbl90bW8gYW5kIGZyaWVuZHMgaW4gIUZDX1RSQU5TUE9SVF9QQVRDSEVTX1YyICYmCisJICAhVVNFX1NDQU5fVEFSR0VULgorCSogSW50ZWdyYXRlZCBDaHJpc3RvcGggSGVsbHdpZydzIHBhdGNoIGZyb20gMS8zMDogU29tZSBmaXhlcyBpbgorCSAgdGhlIGV2dCBoYW5kbGluZyBhcmVhLgorCSogSW50ZWdyYXRlZCBDaHJpc3RvcGggSGVsbHdpZydzIHBhdGNoIGZyb20gMS8zMDogUmVtb3ZlIHVzYWdlIG9mCisJICBpbnRyX2luaXRlZCB2YXJpYWJsZS4gVGhlIGludGVycnVwdCBpbml0aWxpemF0aW9uIGZyb20gT1Mgc2lkZQorCSAgbm93IGhhcHBlbnMgaW4gbHBmY19wcm9iZV9vbmUoKS4KKwkqIEludGVncmF0ZWQgQ2hyaXN0b3BoIEhlbGx3aWcncyBwYXRjaCBmcm9tIDEvMzA6IHJlbW92ZSBzaGltCisJICBscGZjX2FsbG9jX3RyYW5zcG9ydF9hdHRyIC0gcmVtb3ZlIHNoaW0gbHBmY19hbGxvY19zaG9zdF9hdHRycyAtCisJICByZW1vdmUgc2hpbSBscGZjX3Njc2lfaG9zdF9pbml0IC0gYWxsb2NhdGUgcGhiYSBtZW0gaW4gc2NzaSdzCisJICBob3N0ZGF0YSByZWFkanVzdCBjb2RlIHNvIHRoYXQgdGhleSBhcmUgbm8gdXNlIGFmdGVyIGZyZWUncworCSAgKGRvbid0IHVzZSBhZnRlciBzY3NpX2hvc3RfcHV0KSAtIG1ha2UgbHBmY19hbGxvY19zeXNmc19hdHRyCisJICByZXR1cm4gZXJyb3JzCisJKiBGaXhlZCBwYW5pYyBpbiBscGZjX3Byb2JlX29uZSgpLiBEbyBub3QgZGVsZXRlIGluIGEgbGlzdAorCSAgaXRlcmF0b3IgdGhhdCBpcyBub3Qgc2FmZS4KKwkqIENsZWFuIHVwIGZhc3QgbG9va3VwIGFycmF5IG9mIHRoZSBmY3BfcmluZyB3aGVuIGFib3J0aW5nIGlvY2JzLgorCSogRm9sbG93aW5nIHRpbWVvdXQgaGFuZGxlcnMgbW92ZWQgdG8gdGhlIGxwZmMgd29ya2VyIHRocmVhZDoKKwkgIGxwZmNfZGlzY190aW1lb3V0LCBscGZjX2Vsc190aW1lb3V0LCBscGZjX21ib3gsIGxwZmNfZmRtaV90bW8sCisJICBscGZjX25vZGV2X3RpbWVvdXQsIGxwZmNfZWxzX3JldHJ5X2RlbGF5LgorCSogUmVtb3ZlZCB1bnVzZWQgTkxQX05TX05PREUgI2RlZmluZS4KKwkqIEludGVncmF0ZWQgQ2hyaXN0b3BoIEhlbGx3aWcncyBwYXRjaCBmcm9tIDEvMzA6IHJlbW92ZSB1bnVzZWQKKwkgIGxwZmNfaGJhX2xpc3Q7IHJlbW92ZSB1bnVzZWQgbHBmY19yZHJldl93ZDMwOyByZW1vdmUKKwkgIGxwZmNfZ2V0X2JyZF9ubyBhbmQgdXNlIExpbnV4IHByb3ZpZGVkIElEUi4KKwkqIENoYW5nZWQgYm9hcmQgcmVzZXQgcHJvY2VkdXJlIHNvIHRoYXQgbHBmY19zbGlfc2VuZF9yZXNldCgpCisJICB3cml0ZXMgdGhlIElOSVRGRiBiaXQgYW5kIGxlYXZlcyBscGZjX3NsaV9icmRyZXNldCgpIHRvIGNsZWFyCisJICB0aGUgYml0LgorCSogUmVtb3ZlZCBvdXRmY3BpbyBzeXNmcyBkZXZpY2UgYXR0cmlidXRlLgorCSogVlBEIGNoYW5nZXM6IDEpIE1vZGlmeSBkcml2ZXIgdG8gdXNlIHRoZSBtb2RlbCBuYW1lIGFuZAorCSAgZGVzY3JpcHRpb24gZnJvbSB0aGUgVlBEIGRhdGEgaWYgaXQgZXhpc3RzIDIpIFJld29yayB1c2Ugb2YgRFVNUAorCSAgbWFpbGJveCBjb21tYW5kIHRvIHN1cHBvcnQgSEJBcyB3aXRoIDI1NiBieXRlcyBvZiBTTElNLgorCSogRml4ZWQgY29tcGlsZSBlcnJvciBmb3IgaW1wbGljaXQgZGVmaW5pdGlvbiBvZiBzdHJ1Y3QKKwkgIHNjc2lfdGFyZ2V0CisKK0NoYW5nZXMgZnJvbSAyMDA1MDEyNCB0byAyMDA1MDIwMQorCisJKiBDaGFuZ2VkIHZlcnNpb24gbnVtYmVyIHRvIDguMC4yMgorCSogTW92ZWQgZGlzY292ZXJ5IHRpbWVvdXQgaGFuZGxlciB0byB3b3JrZXIgdGhyZWFkLiBUaGVyZSBhcmUKKwkgIGZ1bmN0aW9uIGNhbGxzIGluIHRoaXMgZnVuY3Rpb24gd2hpY2ggYXJlIG5vdCBzYWZlIHRvIGNhbGwgZnJvbQorCSAgSFcgaW50ZXJydXB0IGNvbnRleHQuCisJKiBSZW1vdmVkIGZyZWVfaXJxIGZyb20gdGhlIGVycm9yIHBhdGggb2YgSEJBIGluaXRpYWxpemF0aW9uLgorCSAgVGhpcyB3aWxsIGZpeCB0aGUgZnJlZSBvZiB1bmluaXRpYWxpc2VkIElSUSB3aGVuIGNvbmZpZ19wb3J0CisJICBmYWlscy4KKwkqIE1ha2Ugc3VyZSBmdW5jdGlvbiB3aGljaCBwcm9jZXNzZXMgdW5zb2xpY2l0ZWQgSU9DQnMgb24gRUxTIHJpbmcKKwkgIHN0aWxsIGlzIGNhbGxlZCB3aXRoIHRoZSBsb2NrIGhlbGQuCisJKiBDbGVhciBMQSBiaXQgZnJvbSB3b3JrX2hhIHdoZW4gd2UgYXJlIG5vdCBzdXBwb3NlZCB0byBoYW5kbGUgTEEuCisJKiBGaXggZG91YmxlIGxvY2tpbmcgYnVnIGluIHRoZSBlcnJvciBoYW5kbGluZyBwYXJ0IG9mCisJICBscGZjX21ieF9jbXBsX3JlYWRfbGEuCisJKiBJbXBsZW1lbnRlZCBmYXN0IElPQ0IgcHJvY2Vzc2luZyBmb3IgRkNQIHJpbmcuCisJKiBTaW5jZSBtYm94ZXMgYXJlIG5vdyB1bmNvbmRpdGlvbmFsbHkgYWxsb2NhdGVkIG91dHNpZGUgb2YgdGhlCisJICBsb2NrLCBmcmVlIHRoZW0gaW4gY2FzZXMgd2hlcmUgdGhleSBhcmUgbm90IHVzZWQuCisJKiBNb3ZlZCBvdXQgYSBjb3VwbGUgb2YgR0ZQX0FUT01JQ3MgaW4gbHBmY19kaXNjX3RpbWVvdXQsIHRvCisJICBiZWZvcmUgbG9ja3Mgc28gdGhhdCB0aGV5IGNhbiBHRlBfS0VSTkVMIGluc3RlYWQuIEFsc28gY2xlYW5lZAorCSAgdXAgY29kZS4KKwkqIENvbGxhcHNlZCBpbnRlcnJ1cHQgaGFuZGxpbmcgY29kZSBpbnRvIG9uZSBmdW5jdGlvbi4KKwkqIFJlbW92ZWQgZXZlbnQgcG9zdGluZyBhbmQgaGFuZGxpbmcgb2Ygc29saWNpdGVkIGFuZCB1bnNvbGljaXRlZAorCSAgaW9jYnMuCisJKiBSZW1vdmUgRUxTIHJpbmcgaGFuZGxpbmcgbGVmdG92ZXJzIGZyb20gdGhlIGxwZmNfc2xpX2ludGVyKCkuCisJKiBFTFMgcmluZyAoYW55IHNsb3cgcmluZykgbW92ZWQgZnJvbSB0aGUgbHBmY19zbGlfaW50ZXIoKSBpbnRvIGEKKwkgIHdvcmtlciB0aHJlYWQuICBMaW5rIEF0dGVudGlvbiwgTWJveCBBdHRlbnRpb24sIGFuZCBFcnJvcgorCSAgQXR0ZW50aW9uLCBhcyB3ZWxsIGFzIHNsb3cgcmluZ3MnIGF0dGVudGlvbiBpcyBwYXNzZWQgdG8gdGhlCisJICB3b3JrZXIgdGhyZWFkIHZpYSB3b3JrZXIgdGhyZWFkIGNvcHkgb2YgSG9zdCBBdHRlbnRpb24KKwkgIHJlZ2lzdGVyLiBDb3JyZXNwb25kaW5nIGV2ZW50cyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBldmVudCBxdWV1ZQorCSAgaGFuZGxpbmcuCisJKiBBZGQgZW50cmllcyB0byBoYmEgc3RydWN0dXJlIHRvIGRlbGVnYXRlIHNvbWUgZnVuY3Rpb25hbGl0eSBmcm9tCisJICB0aGUgbHBmY19zbGlfaW50ZXIoKSB0byBhIHdvcmtlciB0aHJlYWQuCisJKiBSZWR1Y2VkIHVzZWQgb2YgR0ZQX0FUT01JQyBmb3IgbWVtb3J5IGFsbG9jYXRpb25zLgorCSogTW92ZWQgbG9ja3MgZGVlcGVyIGluIG9yZGVyIHRvIGNoYW5nZSBHRlBfQVRPTUlDIHRvIEdGUF9LRVJORUwuCisJKiBJT0NCIGluaXRpYWxpemF0aW9uIGZpeCBmb3IgUmF3IElPLgorCSogUmVtb3ZlZCBxY21kY250LCBpb2RvbmVjbnQsIGVycmNudCBmcm9tIGxwZmNfdGFyZ2V0IGFuZCBmcm9tCisJICBkcml2ZXIuCisJKiBBZGRlZCBjYWxsIHRvIGxwZmNfZWxzX2Fib3J0IGluIGxwZmNfZnJlZV9ub2RlLiAgTW9kaWZpZWQKKwkgIGxwZmNfZWxzX2Fib3J0IHRvIHJlc2V0IHR4cSBhbmQgdHhjbXBscSBpdGVyYXRvciBhZnRlciBhCisJICBpb2NiX2NtcGwgY2FsbC4KKwkqIEZpeGVkIGEgdXNlIGFmdGVyIGZyZWUgaXNzdWUgaW4gbHBmY19pbml0LmMuCisJKiBEZWZpbmVkIGRlZmF1bHQgbWFpbGJveCBjb21wbGV0aW9uIHJvdXRpbmUgYW5kIHJlbW92ZWQgY29kZSBpbgorCSAgdGhlIHNsaSBsYXllciB3aGljaCBjaGVja3MgdGhlIG1ib3hfY21wbCA9PSAwIHRvIGZyZWUgbWFpbCBib3gKKwkgIHJlc291cmNlcy4KKwkqIEluIGxwZmNfd29ya3FfcG9zdF9ldmVudCwgY2xlYW4gdXAgY29tbWVudCBmb3JtYXR0aW5nIGFuZCByZW1vdmUKKwkgIHVubmVlZGVkIGNhc3Qgb2Yga21hbGxvYydzIHJldHVybi4KKwkqIFJlbW92ZWQgbG9vcCB3aGljaCBjYWxscyBmY19yZW1vdGVfcG9ydF91bmJsb2NrIGFuZAorCSAgZmNfcmVtb3RlX3BvcnRfZGVsZXRlIGZvciBldmVyeSB0YXJnZXQgYXMgdGhpcyBzYW1lIGVmZmVjdCBpcworCSAgYWNjb21wbGlzaGVkIGJ5IHRoZSBzY3NpX3JlbW92ZV9ob3N0IGNhbGwuCisJKiBNaW5vciBjbGVhbnVwIG9mIGhlYWRlciBmaWxlcy4gIFN0b3AgaGVhZGVyIGZpbGVzIGluY2x1ZGluZworCSAgb3RoZXIgaGVhZGVyIGZpbGVzLiAgUmVtb3ZlZCBzZW50aW5lbHMgd2hpY2ggaGlkZSBtdWx0aXBsZQorCSAgaW5jbHVzaW9ucy4gIFJlbW92ZWQgdW5uZWVkZWQgI2luY2x1ZGUgZGlyZWN0aXZlcy4KKwkqIEZpeGVkIG1lbW9yeSBsZWFrcyBpbiBtYWlsYm94IGVycm9yIHBhdGhzLgorCSogTW92ZWQgbG9jayBmcm9tIGFyb3VuZCBvZiBscGZjX3dvcmtfZG9uZSB0byBscGZjX3dvcmtfZG9uZQorCSAgaXRzZWxmLgorCSogUmVtb3ZlZCB0eXBlZGVmIGZvciBMUEZDX1dPUktfRVZUX3QgYW5kIGxlZnQganVzdCBzdHJ1Y3QKKwkgIGxwZmNfd29ya19ldnQgdG8gY29tcGx5IHdpdGggbGludXhfc2NzaSByZXZpZXcgY29kaW5nIHN0eWxlLgorCSogRml4ZWQgc29tZSB0cmFpbGluZyB3aGl0ZXNwYWNlcywgc3BhY2VzIHVzZWQgZm9yIGluZGVudGF0aW9uIGFuZAorCSAgaWxsLWZvcm1hdHRpbmcgbXVsdGlsaW5lIGNvbW1lbnRzLgorCSogQnVnIGZpeCBmb3IgUmF3IElPIGVycm9ycy4gIFJldXNlIG9mIElPQ0JzIG5vdyBtYW5kYXRlcyBzZXR0aW5nCisJICBvZiB1bHBQVSBhbmQgZmNwaV9wYXJtIHRvIGF2b2lkIGluY29ycmVjdCByZWFkIGNoZWNrIG9mIFdyaXRlIElPCisJICBhbmQgaW5jb3JyZWN0IHJlYWQgbGVuZ3RoLgorCitDaGFuZ2VzIGZyb20gMjAwNTAxMTAgdG8gMjAwNTAxMjQKKworCSogQ2hhbmdlZCB2ZXJzaW9uIG51bWJlciB0byA4LjAuMjEKKwkqIFJlbW92ZWQgdW5wbGVhc2FudCBjYXN0aW5nIGluIHRoZSBkZWZpbml0aW9uIGFuZCB1c2Ugb2YKKwkgIGxwZmNfZGlzY19hY3Rpb24gZnVuY3Rpb24gcG9pbnRlciBhcnJheS4KKwkqIE1ha2VmaWxlIGNsZWFudXAuICBVc2UgPz0gb3BlcmF0b3IgZm9yIHNldHRpbmcgZGVmYXVsdAorCSAgS0VSTkVMVkVSU0lPTiBhbmQgQkFTRUlOQ0xVREUgdmFsdWVzLiAgVXNlICQoUFdEKSBjb25zaXN0ZW50bHkuCisJKiBSZW1vdmVkIGNhbGwgdG8gbHBmY19zbGlfaW50ciBmcm9tIGxwZmNfY29uZmlnX3BvcnRfcG9zdC4gIEFsbAorCSAgTGludXggc3lzdGVtcyB3aWxsIHNlcnZpY2UgaGFyZHdhcmUgaW50ZXJydXB0cyB3aGlsZSBicmluZ2luZyB1cAorCSAgdGhlIGRyaXZlci4KKwkqIENocmlzdG9waCBIZWxsd2lnIGNoYW5nZSByZXF1ZXN0OiBSZW9yZyBvZiBjb250ZW50cyBvZgorCSAgbHBmY19oYmFkaXNjLmMsIGxwZmNfc2NzaS5oLCBscGZjX2luaXQuYywgbHBmY19zbGkuYywKKwkgIGxwZmNfYXR0ci5jLCBscGZjX3Njc2kuYy4KKwkqIFJlbmFtZWQgZGlzY292ZXJ5IHRocmVhZCB0byBscGZjX3dvcmtlciB0aHJlYWQuICBNb3ZlZCBoYW5kbGluZworCSAgb2YgZXJyb3IgYXR0ZW50aW9uIGFuZCBsaW5rIGF0dGVudGlvbiBhbmQgbWJveCBldmVudCBoYW5kbGVyIHRvCisJICBscGZjX3dvcmtlciB0aHJlYWQuCisJKiBSZW1vdmVkIC5wcm9jX2luZm8gYW5kIC5wcm9jX25hbWUgZnJvbSB0aGUgZHJpdmVyIHRlbXBsYXRlIGFuZAorCSAgYXNzb2NpYXRlZCBjb2RlLgorCSogUmVtb3ZlZCBjaGVjayBvZiBGQ19VTkxPQURJTkcgZmxhZyBpbiBscGZjX3F1ZXVlY29tbWFuZCB0bworCSAgZGV0ZXJtaW5lIHdoYXQgcmVzdWx0IHRvIHJldHVybi4KKwkqIE1vdmUgbW9kaWZpY2F0aW9uIG9mIEZDX1VOTE9BRElORyBmbGFnIHVuZGVyIGhvc3RfbG9jay4KKwkqIEZpeCBJT0VSUl9SQ1ZfQlVGRkVSX1dBSVRJTkcgaGFuZGxpbmcgZm9yIENUIGFuZCBFTFMgc3Vic3lzdGVtLgorCSogV29ya2Fyb3VuZCBmaXJtd2FyZSBidWcgZm9yIElPRVJSX1JDVl9CVUZGRVJfV0FJVElORyBvbiBFTFMKKwkgIHJpbmcuCisJKiBGaXhlZCBhIGNvdXBsZSBscGZjX3Bvc3RfYnVmZmVyIHByb2JsZW1zIGluIGxwZmNfaW5pdC5jLgorCSogQWRkIG1pc3Npbmcgc3BhY2VzIHRvIHRoZSBwYXJhbWV0ZXIgZGVzY3JpcHRpb25zIGZvcgorCSAgbHBmY19jcl9kZWxheSwgbHBmY19jcl9jb3VudCBhbmQgbHBmY19kaXNjb3ZlcnlfdGhyZWFkcy4KKwkqIExvY2sgYmVmb3JlIGNhbGxpbmcgbHBmY19zbGlfaGJhX2Rvd24oKS4KKwkqIEZpeCBsZWFrIG9mICJob3N0IiBpbiB0aGUgZXJyb3IgcGF0aCBpbiB0aGUgcmVtb3ZlX29uZSgpIHBhdGguCisJKiBGaXggY29tbWVudCBmb3IgbHBmY19jcl9jb3VudC4gIEl0IGRlZmF1bHRzIHRvIDEuCisJKiBGaXggaXNzdWUgd2hlcmUgd2UgYXJlIGNhbGxpbmcgbHBmY19kaXNjX2RvbmUoKSByZWN1cnNpdmVseSBmcm9tCisJICBscGZjX2xpbmtkb3duKCksIGJ1dCBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoKSBpcyBub3Qgc2FmZSBmb3IKKwkgIHN1Y2ggdXNlLgorCSogQnVtcCBscGZjX2Rpc2NvdmVyeV90aHJlYWRzIChjb3VudCBvZiBvdXRzdGFkaW5nIEVMUyBjb21tYW5kcyBpbgorCSAgZGlzY292ZXJ5KSB0byAzMgorCSogSWYgdGhlIFNDU0kgbWlkbGF5ZXIgdHJpZXMgdG8gcmVjb3ZlciBmcm9tIGFuIGVycm9yIG9uIGEgbHVuCisJICB3aGlsZSB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXQgaXMgaW4gdGhlIE5QUiBzdGF0ZSwgbHBmYyBkcml2ZXIKKwkgIHdpbGwgcmVqZWN0IGFsbCB0aGUgcmVzZXRzLiBUaGlzIHdpbGwgY2F1c2UgdGhlIHRhcmdldCB0byBiZQorCSAgbW92ZWQgdG8gb2ZmbGluZSBzdGF0ZSBhbmQgYmxvY2sgYWxsIHRoZSBJL09zLiBUaGUgZml4IGZvciB0aGlzCisJICBpcyB0byBkZWxheSB0aGUgbHVuIHJlc2V0IHRvIGEgdGFyZ2V0IHdoaWNoIGlzIG5vdCBpbiBNQVBQRUQKKwkgIHN0YXRlIHVudGlsIHRoZSB0YXJnZXQgaXMgcmVkaXNjb3ZlcmVkIG9yIG5vZGV2IHRpbWVvdXQgaXMKKwkgIGZpcmVkLgorCitDaGFuZ2VzIGZyb20gMjAwNDEyMjkgdG8gMjAwNTAxMTAKKworCSogQ2hhbmdlZCB2ZXJzaW9uIG51bWJlciB0byA4LjAuMjAKKwkqIHJwb3J0IGZpeDogdXNlIG5ldyBmY19yZW1vdGVfcG9ydF9yb2xlY2hnKCkgZnVuY3Rpb24gaW5zdGVhZCBvZgorCSAgZGlyZWN0IHN0cnVjdHVyZSBjaGFuZ2UKKwkqIHJwb3J0IGZpeDogbGFzdCBudWxsIHBvaW50ZXIgY2hlY2sKKwkqIFBoYXNlIElJIG9mIEdGUF9BVE9NSUMgZWZmb3J0LiAgUmVwbGFjZWQgaW9jYl9tZW1fcG9vbCBhbmQKKwkgIHNjc2lidWZfbWVtX3Bvb2wgd2l0aCBrbWFsbG9jIGFuZCBsaW5rZWQgbGlzdC4gIEluc2VydGVkIGxpc3QKKwkgIG9wZXJhdGlvbnMgZm9yIG1lbXBvb2xfYWxsb2MgY2FsbHMuICBHZW5lcmFsIGNvZGUgY2xlYW51cC4gIEFsbAorCSAgYWJvcnQgYW5kIHJlc2V0IHJvdXRpbmVzIGNvbnZlcnRlZC4gIEhhbmRsZV9yaW5nX2V2ZW50CisJICBjb252ZXJ0ZWQuCisJKiBJZiB0aGUgbWJveF9jbXBsID09IGxwZmNfc2xpX3dha2VfbWJveF93YWl0IGluCisJICBscGZjX3NsaV9oYW5kbGVfbWJfZXZlbnQsIHBtYi0+Y29udGV4dDEgcG9pbnRzIHRvIGEgd2FpdHEuIERvCisJICBub3QgZnJlZSB0aGUgc3RydWN0dXJlLgorCSogcnBvcnQgZml4ZXM6IGZpeCBmb3Igcm1tb2QgY3Jhc2gKKwkqIHJwb3J0IGZpeGVzOiB3aGVuIHJlY2VpdmluZyBQUkxJJ3MsIHNldCBub2RlL3Jwb3J0IHJvbGUgdmFsdWVzCisJKiBycG9ydCBmaXhlczogZml4IGZvciB1bmxvYWQgYW5kIGZvciBmYWJyaWMgcG9ydCBkZWxldGVzCisJKiBWUEQgaW5mbyBidWcgZml4LgorCSogbHBmY19saW5rZG93bigpIHNob3VsZCBiZSBhYmxlIHRvIHByb2Nlc3MgYWxsIG91dHN0YW5kaW5nIGV2ZW50cworCSAgYnkgY2FsbGluZyBscGZjX2Rpc2NfZG9uZSgpIGV2ZW4gaWYgaXQgaXMgY2FsbGVkIGZyb20KKwkgIGxwZmNfZGlzY19kb25lKCkgTW92aW5nIGFsbCBldmVudHMgZnJvbSBwaGJhLT5kcGNfZGlzYyB0byBsb2NhbAorCSAgbG9jYWxfZHBjX2Rpc2MgcHJldmVudHMgdGhvc2UgZXZlbnRzIGZyb20gYmVpbmcgcHJvY2Vzc2VkLgorCSAgUmVtb3ZpbmcgdGhhdCBxdWV1ZS4gRnJvbSBub3cgb24gd2Ugc2hvdWxkIG5vdCBzZWUgIklsbGVnYWwKKwkgIFN0YXRlIFRyYW5zaXRpb24iIG1lc3NhZ2VzLgorCSogUmVsZWFzZSBob3N0IGxvY2sgYW5kIGVuYWJsZSBpbnRlcnJ1cHRzIHdoZW4gY2FsbGluZworCSAgZGVsX3RpbWVyX3N5bmMoKQorCSogQWxsIHJlbGF0ZWQgdG8gcnBvcnRzOiBDbGVhbiB1cCBpc3N1ZXMgd2l0aCBycG9ydCBkZWxldGlvbgorCSAgQ29udmVydCB0byB1c2luZyBibG9jay91bmJsb2NrIG9uIGxpc3QgcmVtb3ZlICh3YXMgZGVsL2FkZCkKKwkgIE1vdmVkIHJwb3J0IGRlbGV0ZSB0byBmcmVlbm9kZSAtIHNvIHJwb3J0IHRyYWNrcyBub2RlLgorCSogcnBvcnQgZml4ZXM6IGZvciBmcG9ydCwgZ2V0IG1heGZyYW1lIGFuZCBjbGFzcyBzdXBwb3J0CisJICBpbmZvcm1hdGlvbgorCSogQWRkZWQgdXNlIG9mIHdhaXRfZXZlbnQgdG8gd29yayB3aXRoIGt0aHJlYWQgaW50ZXJmYWNlLgorCSogRW5zdXJlIHRoYXQgc2NzaV90cmFuc3BvcnRfZmMuaCBpcyBhbHdheXMgcHVsbGVkIGluIGJ5CisJICBscGZjX3Njc2lwb3J0LmMKKwkqIEluIHJlbW90ZSBwb3J0IGNoYW5nZXM6IG5vIGxvbmdlciBudWxsaW5nIHRhcmdldC0+cG5vZGUgd2hlbgorCSAgcmVtb3ZpbmcgZnJvbSBtYXBwZWQgbGlzdC4gUG5vZGUgZ2V0IG51bGxlZCB3aGVuIHRoZSBub2RlIGlzCisJICBmcmVlZCAoYWZ0ZXIgbm9kZXYgdG1vKS4gVGhpcyBidWcgd2FzIGNhdXNpbmcgaS9vIHJlY2VpdmVkIGluCisJICB0aGUgc21hbGwgd2luZG93IHdoaWxlIHRoZSBkZXZpY2Ugd2FzIGJsb2NrZWQgdG8gYmUgZXJyb3JlZCB3LworCSAgZGlkX25vX2Nvbm5lY3QuIFdpdGggdGhlIGZpeCwgaXQgcmV0dXJucyBob3N0X2J1c3kKKwkgIChwZXIgdGhlIHByZS1yZW1vdGUgcG9ydCBjaGFuZ2VzKS4KKwkqIE1lcmdlIGluIHN1cHBvcnQgZm9yIGZjIHRyYW5zcG9ydCByZW1vdGUgcG9ydCB1c2UuIFRoaXMgcmVtb3ZlcworCSAgYW55IGNvbnNpc3RlbnQgYmluZGluZ3Mgd2l0aGluIHRoZSBkcml2ZXIuIEFsbCBzY2FubmluZyBpcyBub3cKKwkgIG9uIGEgcGVyLXRhcmdldCBiYXNpcyBkcml2ZW4gYnkgdGhlIGRpc2NvdmVyeSBlbmdpbmUuCisKK0NoYW5nZXMgZnJvbSAyMDA0MTIyMCB0byAyMDA0MTIyOQorCisJKiBDaGFuZ2VkIHZlcnNpb24gbnVtYmVyIHRvIDguMC4xOQorCSogRml4ZWQgYnVnIGZvciBoYW5kbGluZyBSU0NOIHR5cGUgMy4gIFRlcm1pbmF0ZSBSU0NOIG1vZGUKKwkgIHByb3Blcmx5IGFmdGVyIEFESVNDIGhhbmRsaW5nIGNvbXBsZXRlcy4KKwkqIEFkZCBsaXN0X3JlbW92ZV9oZWFkIG1hY3JvLiAgTWFjcm8gY2xlYW5zIHVwIG1lbW9yeSBhbGxvY2F0aW9uCisJICBsaXN0IGhhbmRsaW5nLiAgQWxzbyBjbGVhbiB1cCBscGZjX3Jlc2V0X2J1c19oYW5kbGVyIC0gcm91dGluZQorCSAgZG9lcyBub3QgbmVlZCB0byBhbGxvY2F0ZSBpdHMgb3duIHNjc2lfY21uZCBhbmQgc2NzaV9kZXZpY2UKKwkgIHN0cnVjdHVyZXMuCisJKiBGaXhlZCBwb3RlbnRpYWwgZGlzY292ZXJ5IGJ1ZywgbmxwIGxpc3QgY29ycnV0cGlvbiBmaXggcG90ZW50aWFsCisJICBtZW1vcnkgbGVhaworCSogUGFydCAxIG9mIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiByZXdvcmsgcmVxdWVzdCBieSBsaW51eC1zY3NpLgorCSAgVGhpcyBlZmZvcnQgZml4ZXMgdGhlIG51bWJlciBvZiBiZGVzIHBlciBzY3NpX2J1ZiB0byA2NCwgbWFrZXMKKwkgIHRoZSBzY2F0dGVyLWdhdGhlciBjb3VudCBhIG1vZHVsZSBwYXJhbWV0ZXIsIGJ1aWxkcyBhIGxpbmtlZAorCSAgbGlzdCBvZiBzY3NpX2J1ZnMsIGFuZCByZW1vdmVzIGFsbCBkZXBlbmRlbmNpZXMgb24gbHBmY19tZW0uaC4KKwkqIFJldmVydGVkIGxwZmNfZG9fZHBjLCBwcm9iZV9vbmUsIHJlbW92ZV9vbmUgdG8gb3JpZ2luYWwKKwkgIGltcGxlbWVudGF0aW9uLiAgVG9vIG1hbnkgcHJvYmxlbXMgKGRyaXZlciBub3QgY29tcGxldGluZworCSAgaW5pdGlhbCBkaXNjb3ZlcnksIGFuZCBJTyBub3Qgc3RhcnRpbmcgdG8gZGlza3MpLiAgQmFja3Mgb3V0CisJICBrdGhyZWFkIHBhdGNoLgorCSogRml4IHJhY2UgY29uZGl0aW9uIGluIGxwZmNfZG9fZHBjLiAgSWYgd2FrZV91cCBpbnRlcnJ1cHQgb2NjdXJzCisJICB3aGlsZSBscGZjX2RvX2RwYyBpcyBydW5uaW5nIGRpc2NfZG9uZSBhbmQgdGhlIGRwYyBsaXN0IGlzCisJICBlbXB0eSwgdGhlIGxhdGVzdCBpbnNlcnRpb24gaXMgbWlzc2VkIGFuZCB0aGUgc2NoZWR1bGVfdGltZW91dAorCSAgZG9lcyBub3Qgd2FrZXVwLiAgVGhlIHNsZWVwIGludGVydmFsIGlzIE1BWF9TQ0hFRFVMRV9USU1FT1VUCisJICBkZWZpbmVkIGFzIH4wVUwgPj4gMSwgYSB2ZXJ5IGxhcmdlIG51bWJlci4gIEhhY2tlZCBpdCB0byA1KkhaCisJICBmb3Igbm93LgorCSogRml4ZWQgYnVnIGludHJvZHVjZWQgd2hlbiBkaXNjb3ZlcnkgdGhyZWFkIGltcGxlbWVudGF0aW9uIHdhcworCSAgbW92ZWQgdG8ga3RocmVhZC4ga3RocmVhZF9zdG9wKCkgaXMgbm90IGFibGUgdG8gd2FrZSB1cCB0aHJlYWQKKwkgIHdhaXRpbmcgb24gYSBzZW1hcGhvcmUgYW5kICJtb2Rwcm9iZSAtciBscGZjIiBpcyBub3QgYWx3YXlzCisJICAobW9zdCBvZiB0aGUgdGltZXMpIGFibGUgdG8gY29tcGxldGUuIEZpeCBpcyBpbiBub3QgdXNpbmcKKwkgIHNlbWFwaG9yZSBmb3IgdGhlIGludGVycnVwdGFibGUgc2xlZXAuCisJKiBTbWFsbCBNYWtlZmlsZSBjbGVhbnVwIC0gUmVtb3ZlIHJlbW5hbnRzIG9mIDIuNCB2cy4gMi42CisJICBkZXRlcm1pbmF0aW9uLgorCitDaGFuZ2VzIGZyb20gMjAwNDEyMTMgdG8gMjAwNDEyMjAKKworCSogQ2hhbmdlZCB2ZXJzaW9uIG51bWJlciB0byA4LjAuMTgKKwkqIEphbml0b3JpYWwgY2xlYW51cCBhZnRlciByZW1vdmFsIG9mIHNsaWluaXQgYW5kIHJpbmdpbml0W10gcmluZworCSAgc3RhdGlzdGljIGlzIG93bmVkIGJ5IHRoZSByaW5nIGFuZCBTTEkgc3RhdHMgYXJlIGluIHNsaQorCSAgc3RydWN0dXJlLgorCSogSW50ZWdyYXRlZCBwYXRjaCBmcm9tIENocmlzdG9waCBIZWxsd2lnIDxoY2hAbHN0LmRlPiBLaWxsCisJICBjb21waWxlIHdhcm5pbmdzIG9uIDY0IGJpdCBwbGF0Zm9ybXM6ICV2YXJpYWJsZXMgZm9yICVsbHggZm9ybWF0CisJICBzcGVjaWZpZXJzIG11c3QgYmUgY2FzdGUgdG8gbG9uZyBsb25nIGJlY2F1c2UgJSh1KWludDY0X3QgY2FuCisJICBqdXN0IGJlIGxvbmcgb24gNjRiaXQgcGxhdGZvcm1zLgorCSogSW50ZWdyYXRlZCBwYXRjaCBmcm9tIENocmlzdG9waCBIZWxsd2lnIDxoY2hAbHN0LmRlPiBSZW1vdmVzCisJICBkZWFkIGNvZGUuCisJKiBJbnRlZ3JhdGVkIHBhdGNoIGZyb20gQ2hyaXN0b3BoIEhlbGx3aWcgPGhjaEBsc3QuZGU+OiB1c2UKKwkgIGt0aHJlYWQgaW50ZXJmYWNlLgorCSogUHJpbnQgTFBGQ19NT0RVTEVfREVTQyBiYW5uZXIgaW4gbW9kdWxlIGluaXQgcm91dGluZS4KKwkqIFJlbW92ZWQgc2xpaW5pdCBzdHJ1Y3R1cmUgYW5kIHJpbmdpbml0W10gYXJyYXkuCisJKiBDaGFuZ2VkIGxvZyBtZXNzYWdlIG51bWJlciBmcm9tIDMyNCB0byAzMjYgaW4gbHBmY19zbGkuYy4KKwkqIFdhaXQgbG9uZ2VyIGZvciBjb21tYW5kcyB0byBjb21wbGV0ZSBpbiBscGZjX3Jlc2V0X2J1c19oYW5kbGVyCisJICBhbmQgbHBmY19yZXNldF9idXNfaGFuZGxlci4gIEFsc28gdXNlIHNjaGVkdWxlX3RpbWVvdXQoKSBpbnN0ZWFkCisJICBvZiBtc2xlZXAoKSBhbmQgYWRkIGVycm9yIG1lc3NhZ2UgaW4gbHBmY19hYm9ydF9oYW5kbGVyKCkKKwkqIFdoZW4gc2V0dGluZyBscGZjX25vZGV2X3RtbywgZnJvbSBkZXZfbG9zcyBzZXQgcm91dGluZSwgbWFrZSAxCisJICBzZWMgbWluaW11bSB2YWx1ZS4KKwkqIEZ1bmN0aW9ucyB3aGljaCBhc3N1bWUgbG9jayBiZWluZyBoZWxkIHdlcmUgY2FsbGVkIHdpdGhvdXQgbG9jaworCSAgYW5kIGtlcm5lbCBjb21wbGFpbmVkIGFib3V0IHVubG9ja2luZyBsb2NrIHdoaWNoIGlzIG5vdCBsb2NrZWQuCisJKiBBZGRlZCBjb2RlIGluIGxpbmtkb3duIHRvIHVucmVnIGlmIHdlIGtub3cgbG9naW4gc2Vzc2lvbiB3aWxsIGJlCisJICB0ZXJtaW5hdGVkLgorCSogUmVtb3ZlZCBhdXRvbWFwIGNvbmZpZyBwYXJhbWV0ZXIgYW5kIGZpeGVkIHVwIHVzZV9hZGlzYyBsb2dpYyB0bworCSAgaW5jbHVkZSBGQ1AyIGRldmljZXMuCisKK0NoYW5nZXMgZnJvbSAyMDA0MTIwNyB0byAyMDA0MTIxMworCisJKiBDaGFuZ2VkIHZlcnNpb24gbnVtYmVyIHRvIDguMC4xNworCSogRml4IHNwYXJzZSB3YXJuaW5ncyBieSBhZGRpbmcgX19pb21lbSBtYXJrZXJzIHRvIGxwZmNfY29tcGF0LmguCisJKiBGaXggc29tZSBzcGFyc2Ugd2FybmluZ3MgLS0gMCB1c2VkIGFzIE5VTEwgcG9pbnRlci4KKwkqIE1ha2Ugc3VyZSB0aGVyZSdzIGEgc3BhY2UgYmV0d2VlbiBldmVyeSBpZiBhbmQgaXQncyAoLgorCSogRml4IHNvbWUgb3Zlcmx5IGxvbmcgbGluZXMgYW5kIG1ha2Ugc3VyZSBoYXJkIHRhYnMgYXJlIHVzZWQgZm9yCisJICBpbmRlbnRhdGlvbi4KKwkqIFJlbW92ZSBhbGwgdHJhaWxpbmcgd2hpdGVzcGFjZS4KKwkqIEludGVncmF0ZSBDaHJpc3RvcGggSGVsbHdpZydzIHBhdGNoIGZvciA4LjAuMTQ6IGlmCisJICBwY2lfbW9kdWxlX2luaXQgZmFpbHMgd2UgbmVlZCB0byByZWxlYXNlIHRoZSB0cmFuc3BvcnQgdGVtcGxhdGUuCisgCSAgKGFsc28gZG9uJ3QgcHJpbnQgdGhlIGRyaXZlciBuYW1lIGF0IHN0YXJ0dXAsIGxpbnV4IGRyaXZlcnMgY2FuCisJICBiZSBsb2FkZWQgd2l0aG91dCBoYXJkd2FyZSBwcmVzZW50LCBhbmQgbm9pc2UgaW4gdGhlIGxvZyBmb3IKKwkgIHRoYXQgY2FzZSBpcyBjb25zaWRlcmVkIHVucG9saXRlLCBiZXR0ZXIgcHJpbnQgbWVzc2FnZXMgb25seSBmb3IKKwkgIGhhcmR3YXJlIGFjdHVhbGx5IGZvdW5kKS4KKwkqIEludGVncmF0ZSBDaHJpc3RvcGggSGVsbHdpZydzIHBhdGNoIGZvciA4LjAuMTQ6IEFkZCBtaXNzaW5nCisJICBfX2lvbWVtIGFubm90YXRpb25zLCByZW1vdmUgYnJva2VuIGNhc3RzLCBtYXJrIGZ1bmN0aW9ucyBzdGF0aWMuCisJICBPbmx5IG1ham9yIGNoYW5nZXMgaXMgY2hhbmluZyBvZiBzb21lIG9mZnNldHMgZnJvbSB3b3JkLWJhc2VkIHRvCisJICBieXRlLWJhc2VkIHNvIHdlIGNhbnMgc2ltcGx5IGRvIHZvaWQgcG9pbnRlciBhcml0aG1ldGljcyAoZ2NjCisJICBleHRlbnNpb24pIGluc3RlYWQgb2YgY2FzdGluZyB0byB1aW50MzJfdC4KKwkqIEludGVncmF0ZSBDaHJpc3RvcGggSGVsbHdpZydzIHBhdGNoIGZvciA4LjAuMTQ6IGZsYWcgaXMgYWx3YXlzCisJICBMUEZDX1NMSV9BQk9SVF9JTUVELCBha2EgMCAtIHJlbW92ZSBkZWFkIGNvZGUuCisJKiBNb2RpZmllZCBwcmVwcm9jZXNzb3IgI2lmZGVmLCAjaWYsICNpZm5kZWYgdG8gcmVmbGVjdCB1cHN0cmVhbQorCSAga2VybmVsIHN1Ym1pc3Npb24uICBDbGVhbiBidWlsZCB3aXRoIG1ha2UgY2xlYW47bWFrZSBhbmQgbWFrZQorCSAgY2xlYW47bWFrZSBBRFZBTkNFRD0xIG9uIFNNUCB4ODYsIDIuNi4xMC1yYzIgb24gUkhFTCA0IEJldGEKKwkgIDEuIElPIHdpdGggYSBmZXcgbGlwcyBhbmQgYSBsb25nIGNhYmxlIHB1bGwgYmVoYXZlZCBhY2NvcmRpbmdseS4KKwkqIEltcGxlbWVudCBmdWxsIFZQRCBzdXBwb3J0LgorCSogQWJvcnQgaGFuZGxlciB3aWxsIHRyeSB0byB3YWl0IGZvciBhYm9ydCBjb21wbGV0aW9uIGJlZm9yZQorCSAgcmV0dXJuaW5nLiAgRml4ZXMgc29tZSBwYW5pY3MgaW4gaW9jYiBjb21wbGV0aW9uIGNvZGUgcGF0aC4KKworQ2hhbmdlcyBmcm9tIDIwMDQxMTMwIHRvIDIwMDQxMjA3CisJCisJKiBDaGFuZ2VkIHZlcnNpb24gbnVtYmVyIHRvIDguMC4xNgorCSogSHVuZyBkdCBzZXNzaW9uIGZpeC4gIFdoZW4gdGhlIG1pZGxheWVyIGNhbGxzIHRvIGFib3J0IGEgc2NzaQorCSAgY29tbWFuZCwgbWFrZSBzdXJlIHRoZSBkcml2ZXIgZG9lcyBub3QgY29tcGxldGUgcG9zdC1hYm9ydAorCSAgaGFuZGxlci4gIEp1c3QgTlVMTCB0aGUgaW9jYl9jbXBsIGNhbGxiYWNrIGhhbmRsZXIgYW5kIGxldCBTTEkKKwkgIHRha2Ugb3Zlci4KKwkqIEFkZCBSZWFkIGNoZWNrIHRoYXQgdXNlcyBTTEkgb3B0aW9uIHRvIHZhbGlkYXRlIGFsbCBSRUFEIGRhdGEKKwkgIGFjdHVhbGx5IHJlY2VpdmVkLgorCisKK0NoYW5nZXMgZnJvbSAyMDA0MTEyMyB0byAyMDA0MTEzMAorCisJKiBDaGFuZ2VkIHZlcnNpb24gbnVtYmVyIHRvIDguMC4xNQorCSogSWZkZWYnZCB1bnVzZWQgImJpbmFyeSIgYXR0cmlidXRlcyBieSBERkNfREVCVUcgZm9yIGNsZWFuCisJICBjb21waWxlcworCSogU3RvcCBESURfRVJST1IgZnJvbSBzaG93aW5nIHVwIGFsb25nIHdpdGggUVVFVUVfRlVMTCBzZXQgYnkgdGhlCisJICBDbGFyaW9uIGFycmF5IChTQ1NJIGVycm9yIHJldC4gdmFsLiAgMHg3MDAyOCkgVGhlcmUgaXMgbm8gbmVlZAorCSAgZm9yIGRyaXZlciB0byBoYXJkIGZhaWwgY29tbWFuZCB3aGljaCB3YXMgZmFpbGVkIGJ5IHRoZSB0YXJnZXQKKwkgIGRldmljZS4KKwkqIEZpeCBmb3IgU2NzaSBkZXZpY2Ugc2NhbiBidWcgcmVwb3J0ZWQgb24gU291cmNlRm9yZ2UuICBEcml2ZXIKKwkgIHdhcyByZXR1cm5pbmcgYSBESURfRVJST1IgaW4gbHBmY19oYW5kbGVfZmNwX2Vycm9yIGNhdXNpbmcKKwkgIG1pZGxheWVyIHRvIG1hcmsgcmVwb3J0IGx1bnMgYXMgZmFpbGluZyBldmVuIHRob3VnaCBpdAorCSAgc3VjY2VlZGVkLgorCSogRG9uJ3QgaWdub3JlIFNDU0kgc3RhdHVzIG9uIHVuZGVycnVuIGNvbmRpdGlvbnMgZm9yIGlucXVpcmllcywKKwkgIHRlc3QgdW5pdCByZWFkeSdzLCBldGMuICBUaGlzIHdhcyBjYXVzaW5nIHVzIHRvIGxvc2UKKwkgIHJlc2VydmF0aW9uIGNvbmZsaWN0cywgZXRjCisKK0NoYW5nZXMgZnJvbSAyMDA0MTAxOCB0byAyMDA0MTEyMworCQorCSogQ2hhbmdlZCB2ZXJzaW9uIG51bWJlciB0byA4LjAuMTQKKwkqIEFkZGVkIG5ldyBmdW5jdGlvbiAiaXRlcmF0b3IiIGxwZmNfc2xpX25leHRfaW9jYl9zbG90KCkgd2hpY2gKKwkgIHJldHVybnMgcG9pbnRlciB0byBpb2NiIGVudHJ5IGF0IGNtZGlkeCBpZiBxdWV1ZSBpcyBub3QgZnVsbC4KKwkgIEl0IGFsc28gdXBkYXRlcyBuZXh0X2NtZGlkeCwgYW5kIGxvY2FsX2dldGlkeCAoYnV0IG5vdCBjbWRpZHgpCisJKiBscGZjX3NsaV9zdWJtaXRfaW9jYigpIGNvcGllcyBuZXh0X2NtZGlkeCBpbnRvIGNtZGlkeC4gTm93IGl0IGlzCisJICB0aGUgb25seSBwbGFjZSB3ZXJlIHdlIGFyZSB1cGRhdGluZyBjbWRpZHguCisJKiBscGZjX3NsaV91cGRhdGVfcmluZygpIGlzIHNwbGl0IGluIHRvIHR3byAtLQorCSAgbHBmY19zbGlfdXBkYXRlX3JpbmcoKSBhbmQgbHBmY19zbGlfdXBkYXRlX2Z1bGxfcmluZygpLgorCSogbHBmY19zbGlfdXBkYXRlX3JpbmcoKSBkb24ndCB0byByZWFkIGJhY2sgY29ycmVjdCB2YWx1ZSBvZgorCSAgY21kaWR4LgorCSogU2ltcGxpZmllZCBscGZjX3NsaV9yZXN1bWVfaW9jYigpIGFuZCBpdHMgdXNlLgorCSogTmV3IHN0YXRpYyBmdW5jdGlvbiBscGZjX3NsaV9uZXh0X2lvY2IocGhiYSwgcHJpbmcsICZwaW9jYikgdG8KKwkgIGl0ZXJhdGUgdGhyb3VnaCBjb21tYW5kcyBpbiB0aGUgVFggcXVldWUgYW5kIG5ldyBjb21tYW5kIChhdCB0aGUKKwkgIGVuZCkuCisJKiBSZWR1Y2VkIG1heF9sdW4gdG8gMjU2IChkdWUgdG8gaXNzdWVzIHJlcG9ydGVkIHRvIHNvbWUgYXJyYXlzKS4KKwkgIEZpeGVkIGNvbW1lbnQsIGFuZCBtYWNybyB2YWx1ZXMgc28gZGVmPTI1NiwgbWluPTEsIG1heD0zMjc2OC4KKwkqIEZpeCBhbiBvYnZpb3VzIHR5cG8vYnVnOiBrZnJlZSB3YXMgdXNlZCB0byBmcmVlIGxwZmNfc2NzaV9idWYKKwkgIGluc3RlYWQgb2YgbWVtcG9vbF9mcmVlIGluIGxwZmNfc2NzaXBvcnQuYy4KKwkqIFN1cHByZXNzIG5vZGV2X3RtbyBtZXNzYWdlIGZvciBGQUJSSUMgbm9kZXMuCisJKiBGaXhlZCBzb21lIHVzYWdlIG9mIHBsYWluIGludGVnZXIgYXMgTlVMTCBwb2ludGVyLgorCSogQnVnIGZpeCBmb3IgRkxPR0kgY21wbCwgbHBmY19lbHNfY2hrX2xhdHQgZXJyb3IgcGF0aCBjb2RlCisJICBjbGVhbnVwLgorCSogRml4dXAgbHBmY19lbHNfY2hrX2xhdHQoKSB0byBoYXZlIEZhYnJpYyBOUG9ydHMgZ28gdGhydQorCSAgZGlzY292ZXJ5IHN0YXRlIG1hY2hpbmUgYXMgd2VsbC4KKwkqIEZpeGVzIHRvIGxwZmNfZWxzX2Noa19sYXR0KCkuCisJKiBVc2UgRElEIG5vdCBTQ1NJIHRhcmdldCBpZCBhcyBhIHBvcnRfaWQgYW5kIGFkZCBzb21lIG1pc3NpbmcKKwkgIGxvY2tzIGluIGxwZmNfZmNwLmMuCisJKiBDaGFuZ2VkIGVoX2Fib3J0X2hhbmRsZXIgdG8gcmV0dXJuIEZBSUxFRCBpZiBjb21tYW5kIGlzIG5vdAorCSAgZm91bmQgaW4gZHJpdmVyLgorCSogRml4IGNyYXNoOiBwYWdpbmcgcmVxdWVzdCBhdCB2aXJ0dWFsIGFkZHJlc3MgMDAwMDAwMDAwMDEwMDEwOCAtCisJICBhIHJlc3VsdCBvZiByZW1vdmluZyBmcm9tIHRoZSB0eGNtcGwgbGlzdCBpdGVtIHdoaWNoIHdhcyBhbHJlYWR5CisJICByZW1vdmVkICgxMDAxMDAgaXMgYSBMSVNUX1BPSVNPTjEgdmFsdWUgZnJvbSB0aGUgbmV4dCBwb2ludGVyCisJICBhbmQgOCBpcyBhbiBvZmZzZXQgb2YgdGhlICJwcmV2IikgRHJpdmVyIHJ1bnMgb3V0IG9mIGlvdGFncyBhbmQKKwkgIGRvZXMgbm90IGhhbmRsZSB0aGF0IGNhc2Ugd2VsbC4gVGhlIHJvb3Qgb2YgdGhlIHByb2JsZSBpcyBpbiB0aGUKKwkgIGluaXRpYWxpemF0aW9uIGNvZGUgaW4gbHBmY19zbGkuYworCSogQ2hhbmdlcyB0byB3b3JrIHdpdGggcHJvcG9zZWQgbGludXgga2VybmVsIHBhdGNoIHRvIHN1cHBvcnQKKwkgIGhvdHBsdWcuCisJKiBaZXJvIG91dCBzZWdfY250IGluIHByZXBfaW8gZmFpbHVyZSBwYXRoIHRvIHByZXZlbnQgZG91YmxlIHNnCisJICB1bm1hcCBjYWxscy4KKwkqIEZpeCBzZXR0aW5nIG9mIHVwcGVyIDMyIGJpdHMgZm9yIEhvc3QgR3JvdXAgUmluZyBQb2ludGVycyBpZiBpbgorCSAgU0xJTS4gT2xkIGNvZGUgd2FzIGluYXBwcm9wcmlhdGVseSBtYXNraW5nIG9mZiBsb3cgb3JkZXIgYml0cy4KKwkqIFVzZSBzY3NpX1thY3RpdmF0ZXxkZWFjdGl2YXRlXV90Y3EgY2FsbHMgcHJvdmlkZWQgaW4gc2NzaV90Y3EuaC4KKwkqIEludGVncmF0ZWQgcGF0Y2ggZnJvbSBDaHJpc3RvcGggSGVsbHdpZyAoaGNoQGxzdC5kZSk6IGRvbid0IGNhbGwKKwkgIHBjaV9kbWFfc3luY18qIG9uIGNvaGVyZW50IG1lbW9yeS4gcGNpX2RtYV9zeW5jXyogaXMgbmVlZCBhbmQKKwkgIG11c3QgYmUgdXNlZCBvbmx5IHdpdGggc3RyZWFtaW5nIGRtYSBtYXBwaW5ncyBwY2lfbWFwXyosIG5vdAorCSAgY29oZXJlbnQgbWFwcGluZ3MuICBOb3RlOiBUaGVyZSBhcmUgbW9yZSBjb25zaXN0ZW50IG1hcHBpbmdzCisJICB0aGF0IGFyZSB1c2luZyBwY2lfZG1hX3N5bmMgY2FsbHMuIFByb2JhYmx5IHRoZXNlIHNob3VsZCBiZQorCSAgcmVtb3ZlZCBhcyB3ZWxsLgorCSogTW9kaWZpZWQgbHBmY19mcmVlX3Njc2lfYnVmIHRvIGFjY29tbW9kYXRlIGFsbCB0aHJlZSBzY3NpX2J1ZgorCSAgZnJlZSB0eXBlcyB0byBhbGxldmlhdGUgbWlzY2VsbGFuZW91cyBwYW5pY3Mgd2l0aCBjYWJsZSBwdWxsCisJICB0ZXN0aW5nLgorCSogU2V0IGhvdHBsdWcgdG8gZGVmYXVsdCAwIGFuZCBscGZjX3RhcmdldF9yZW1vdmUgdG8gbm90IHJlbW92ZQorCSAgZGV2aWNlcyB1bmxlc3MgaG90cGx1ZyBpcyBlbmFibGVkLgorCSogRml4ZWQgZGlzY292ZXJ5IGJ1ZzogcGxvZ2kgY21wbCB1c2VzIG5kbHAgYWZ0ZXIgaXRzIGZyZWVkLgorCSogRml4ZWQgZGlzY292ZXJ5IGJ1Zzogcm5pZCBhY2MgY21wbCwgY2FuIHBvdGVudGlhbGx5IHVzZSBuZGxwCisJICBhZnRlciBpdHMgZnJlZWQuCisJKiBNb2R1bGFyaXplIGNvZGUgcGF0aCBpbiBscGZjX3RhcmdldF9yZW1vdmUoKS4KKwkqIENoYW5nZXMgdG8gc3VwcG9ydCBTQ1NJIGhvdHBsdWcgKGlmZGVmJ2VkIG91dCBiZWNhdXNlIHRoZXkgbmVlZAorCSAga2VybmVsIHN1cHBvcnQgVVNFX1NDQU5fVEFSR0VUIHJlcXVpcmVzIGtlcm5lbCBzdXBwb3J0IHRvIGV4cG9ydAorCSAgdGhlIGludGVyZmFjZSB0byBzY3NpX3NjYW5fdGFyZ2V0IGFuZCB0byBtb3ZlIHRoZSBTQ0FOX1dJTERfQ0FSRAorCSAgZGVmaW5lIHRvIGEgZ2VuZXJhbCBzY3NpIGhlYWRlciBmaWxlLiAgVVNFX1JFU0NBTl9IT1NUIHJlcXVpcmVzCisJICBrZXJuZWwgc3VwcG9ydCB0byBleHBvcnQgYW4gaW50ZXJmYWNlIHRvIHNjYW5fc2NzaV9ob3N0KCkgd2l0aAorCSAgdGhlIHJlc2NhbiBmbGFnIHR1cm5lZCBvbikuCisJKiBSZW1vdmVkIHJlZHVuZGFudCB2YXJpYWJsZSBkZWNsYXJhdGlvbiBvZiBscGZjX2xpbmtkb3duX3Rtby4KKwkqIEZpeCBmb3IgbGFyZ2UgcG9ydCBjb3VudCByZW1vdmUgdGVzdC4KKwkqIEFkZGVkIGNoZWNrIHRvIHNlZSBpZiBCQVIxIHJlZ2lzdGVyIGlzIHZhbGlkIGJlZm9yZSB1c2luZyBCQVIxCisJICByZWdpc3RlciBmb3IgcHJvZ3JhbW1pbmcgY29uZmlnX3BvcnQgbWFpbCBib3ggY29tbWFuZC4KKwkqIEFkZGVkIGxwZmNfc2NzaV9ob3RwbHVnIHRvIGVuYWJsZS9kaXNhYmxlIGRyaXZlciBzdXBwb3J0IG9mIFNDU0kKKwkgIGhvdHBsdWcuCisJKiBDaGFuZ2VkIGxwZmNfZGlzY19uZXZlcmRldigpIHRvIGxwZmNfZGlzY19pbGxlZ2FsKCkgYW5kIGNoYW5nZWQKKwkgIGxwZmNfZGlzY19ub2RldigpIHRvIGxwZmNfZGlzY19ub29wKCkuICBBZGp1c3RlZCBhcHByb3ByaWF0ZQorCSAgZXZlbnRzIHRvIHVzZSB0aGVzZSByb3V0aW5lcy4KKwkqIEFkZCBzdXBwb3J0IGZvciBTQ1NJIGRldmljZSBob3RwbHVnLgorCSogVGFrZSBkdW1teSBscGZjX3RhcmdldCdzIGludG8gYWNjb3VudCBmb3IgbHBmY19zbGF2ZV9kZXN0cm95KCkuCisJKiBCdWcgZml4IHRvIHN0b3JlIFdXUE4gLyBXV05OIGluIE5hbWVTZXJ2ZXIgLyBGRE1JIGxwZmNfbm9kZWxpc3QKKwkgIGVudHJpZXMuCisJKiBBZGRlZCBzbGF2ZWNudCBpbiBscGZjX3RhcmdldCBmb3IgZGlhZ25vc3RpYyBwdXJwb3Nlcy4KKwkqIEFkZGVkIGxwZmNfaGJhIGxvYWQvdW5sb2FkIGZsYWdzIHRvIHRha2UgY2FyZSBvZiBzcGVjaWFsIGNhc2VzCisJICBmb3IgYWRkL3JlbW92ZSBkZXZpY2UuCisJKiBIYXZlIHRhcmdldCBhZGQvcmVtb3ZlIGRlbGF5IGJlZm9yZSBzY2FubmluZy4KKwkqIEhhdmUgcm1tb2QgcGF0aCBjbGVhbnVwIGJsb2NrZWQgZGV2aWNlcyBiZWZvcmUgc2NzaV9yZW1vdmVfaG9zdC4KKwkqIEFkZGVkIGEgI2RlZmluZSBmb3IgbXNsZWVwIGZvciAyLjYuNSBrZXJuZWxzLgorCSogSW4gcmVzZXQgYnVzIGhhbmRsZXIgaWYgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHMsIHJldHVybiBGQUlMRUQKKwkgIGFuZCBub3QgU1VDQ0VTUy4KKwkqIEhhdmUgbHBmYyBlaCBoYW5kbGVycywgYnVzX3Jlc2V0IGFuZCBsdW5fcmVzZXQsIHdhaXQgZm9yIGFsbAorCSAgYXNzb2NpYXRlZCBJL09zIHRvIGNvbXBsZXRlIGJlZm9yZSByZXR1cm5pbmcuCisJKiBGaXggbWVtc2V0IGJ5dGUgY291bnQgaW4gbHBmY19oYmFfaW5pdCBzbyB0aGF0CisJICBMUDEwNTAgd291bGQgaW5pdGlhbGl6ZSBjb3JyZWN0bHkuCisJKiBCYWNrcm91bmQgbm9kZXZfdGltZW91dCBwcm9jZXNzaW5nIHRvIERQQyBUaGlzIGVuYWJsZXMgdXMgdG8KKwkgIHVuYmxvY2sgKHN0b3AgZGV2X2xvc3NfdG1vKSB3aGVuIGFwcG9wcmlhdGUuCisJKiBGaXggYXJyYXkgZGlzY292ZXJ5IHdpdGggbXVsdGlwbGUgbHVucy4gIFRoZSBtYXhfbHVucyB3YXMgMCBhdAorCSAgdGhlIHRpbWUgdGhlIGhvc3Qgc3RydWN0dXJlIHdhcyBpbml0aWFsaXplZC4gIGxwZmNfY2ZnX3BhcmFtcworCSAgdGhlbiBzZXQgdGhlIG1heF9sdW5zIHRvIHRoZSBjb3JyZWN0IHZhbHVlIGFmdGVyd2FyZHMuCisJKiBSZW1vdmUgdW51c2VkIGRlZmluZSBMUEZDX01BWF9MVU4gYW5kIHNldCB0aGUgZGVmYXVsdCB2YWx1ZSBvZgorCSAgbHBmY19tYXhfbHVuIHBhcmFtZXRlciB0byA1MTIuCisJKiBSZWR1Y2VkIHN0YWNrIHVzYWdlIG9mIGxwZmNfaGJhX2luaXQuCisJKiBDbGVhbmVkIHVwIHRoZSBmb2xsb3dpbmcgd2FybmluZyBnZW5lcmF0ZWQgYnkKKwkgIHNjcmlwdHMvY2hlY2tpbmNsdWRlcy5wbCBscGZjX2ZjcC5jOiBzY3NpL3Njc2lfY21uZC5oIGlzCisJICBpbmNsdWRlZCBtb3JlIHRoYW4gb25jZS4KKwkqIFJlcGxhY2VkICJzZXRfY3VycmVudF9zdGF0ZShUQVNLX1VOSU5URVJSVVBUSUJMRSk7CisJICBzY2hlZHVsZV90aW1lb3V0KHRpbWVvdXQpIiB3aXRoICJtc2xlZXAodGltZW91dCkiLgorCSogRml4bm9kZSB3YXMgbG9zaW5nIHN0YXJnZXQgd2hlbiByZWRpc2NvdmVyZWQuIFdlIHNhdyBtZXNzYWdlcworCSAgbGlrZTogbHBmYyAwMDAwOjA0OjAyLjA6IDA6MDI2MyBDYW5ub3QgYmxvY2sgc2NzaSB0YXJnZXQgYXMgYQorCSAgcmVzdWx0LiAgTW92ZWQgc3RhcmdldCBmaWVsZCBpbnRvIHN0cnVjdCBscGZjX3RhcmdldCB3aGljaCBpcworCSAgcmVmZXJlbmNlZCBmcm9tIHRoZSBub2RlLgorCSogQWRkIGFkZGl0aW9uYWwgU0xJIGxheWVyIGxvZ2dpbmcgaW4gbHBmY19zbGkuYy4KKwkqIElnbm9yZSBtb3JlIHVuZXhwZWN0ZWQgY29tcGxldGlvbnMgaW4gbHBmY19ucG9ydGRpc2MuYy4KKwkqIENhbiBub3QgY2FsbCBscGZjX3RhcmdldF91bmJsb2NrIGZyb20gdGhlIHNvZnQgaW50ZXJydXB0CisJICBjb250ZXh0LiAgSXQgc2VlbXMgdG8gYmUgbm90IG5lc3Nhc2VyeSB0byB1bmJsb2NrIHRhcmdldCBmcm9tCisJICBub2RldiB0aW1lb3V0LgorCSogSW50cm9kdWNlIGFuZCB1c2UgbGVzcyBsZXRoYWwgZXZlbnQgaGFuZGxlciBmb3IgdW5leHBlY3RlZAorCSAgZXZlbnRzIGluIGxwZmNfbnBvcnRkaXNjLmMuCisJKiBDYW4gbm90IGNhbGwgZmNfdGFyZ2V0Xyh1bilibG9jaygpIGZ1bmN0aW9ucyB3aXRoIGludGVycnVwdHMKKwkgIGRpc2FibGVkIGluIGxwZmNfc2NzaXBvcnQuYy4KKwkqIEFkZGVkIG5ldyBjb25maWd1cmF0aW9uIHBhcmFtZXRlciwgbHBmY19tYXhfbHVucyByYW5nZSAxLTMyNzY4LAorCSAgZGVmYXVsdCAzMjc2OC4KKwkqIEFsbG93IGxwZmNfZmNwLmMgdG8gY2FsbCBscGZjX2dldF9oYmFfc3ltX25vZGVfbmFtZSgpLgorCSogSW5jcmVhc2Ugbm9kZXYgdGltZW91dCBmcm9tIDIwIHNlY29uZHMgdG8gMzAgc2Vjb25kcy4KKwkqIFJlcGxhY2Ugc29tZSBrZnJlZSgodm9pZCopcHRyKSB3aXRoIGtmcmVlKHB0cikuCisJKiBNYWtlIDMgZnVuY3Rpb25zIHN0YXRpYzogbHBmY19nZXRfaGJhX3N5bV9ub2RlX25hbWUsCisJICBscGZjX2ludHJfcHJlcCBhbmQgbHBmY19zZXR1cF9zbGltX2FjY2Vzcy4gIE1vdmUgbHBmY19pbnRyX3ByZXAKKwkgIGFuZCBscGZjX3NldHVwX3NsaW1fYWNjZXNzIHNvIHRoZXkncmUgZGVmaW5lZCBiZWZvcmUgYmVpbmcgdXNlZC4KKwkqIFJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBsaXN0X2RlbCgpIGluIGxwZmNfaGJhZGlzYy5jLgorCSogU2V0IG5scF9zdGF0ZSBiZWZvcmUgY2FsbGluZyBscGZjX25scF9saXN0KCkgc2luY2UgdGhpcyB3aWxsCisJICBwb3RlbnRpYWxseSBjYWxsIGZjX3RhcmdldF91bmJsb2NrIHdoaWNoIG1heSBjYXVzZSBhIHJhY2UgaW4KKwkgIHF1ZXVlY29tbWFuZCBieSByZWxlYXNpbmcgaG9zdF9sb2NrLgorCSogU2luY2UgbHBmY19ub2Rldl90bW8gPCBkZXZfbG9zc190bW8gcmVtb3ZlIHF1ZXVlY29tbWFuZAorCSAgRElEX0JBRF9UQVJHRVQgcmV0dXJuIGZvciBub3cuCisJKiBGaXggYSBwcm9ibGVtIHdpdGggcmN2IGxvZ28uCisJKiBSZW1vdmUgdW51c2VkIHBvcnRzdGF0aXN0aWNzX3Qgc3RydWN0dXJlLgorCSogUmVtb3ZlICNpZiAwIGFuZCB1bm5lY2Vzc2FyeSBjaGVja3MgaW4gbHBmY19mY3AuYy4KKwkqIFNpbXBsaWZ5IGxwZmNfaXNzdWVfbGlwOiBFeHRyYSBsYXllciBvZiBwcm90ZWN0aW9uIHJlbW92ZWQuCisJKiBHcmFiIGxvY2sgYmVmb3JlIGNhbGxpbmcgbHBmY19zbGlfaXNzdWVfbWJveChwaGJhLCBwbWIsCisJICBNQlhfTk9XQUlUKSBpbiBscGZjX3NsaV9pc3N1ZV9tYm94X3dhaXQoKS4KKworQ2hhbmdlcyBmcm9tIDIwMDQwOTIwIHRvIDIwMDQxMDE4CisKKwkqIENoYW5nZWQgdmVyc2lvbiBudW1iZXIgdG8gOC4wLjEzCisJKiBIaWRlIHNvbWUgYXR0cmlidXRlcyB1c2luZyAjaWZuZGVmIERGQ19ERUJVRyAuLi4gI2VuZGlmLgorCSogTW9kaWZ5IE1ha2VmaWxlIHRvICgxKSBtYWtlIEJVSUxEX05PX0RFQlVHPTEgd2lsbCBoaWRlIHNvbWUKKwkgIChiaW5hcnkpIGF0dHJpYnV0ZXMgKDIpIG1ha2UgQlVJTERfRkNfVFJBTlM9MCB3aWxsIGJ1aWxkIGRyaXZlcgorCSAgZm9yIDIuNi41IGtlcm5lbCB3aXRoIGJsb2NrL3VuYmxvY2sgcGF0Y2guCisJKiBNb2RpZmllZCAjaWZkZWYgbmFtZXMuCisJKiBBZGRlZCBzdXBwb3J0IGZvciBwcm9wb3NlZCBGQyB0cmFuc3BvcnQgaG9zdCBhdHRyaWJ1dGVzICh3aGljaAorCSAgcmVwbGFjZXMgc29tZSBvZiB0aGUgYXR0cmlidXRlcyB3ZSBoYWQgbG9jYWwgdG8gdGhlIGRyaXZlcikuCisJICBSZW1vdmVkIHRoZSBiaW5hcnkgc3RhdGlzdGljcyBzeXNmcyBhdHRyaWJ1dGUuCisJKiBBZGRlZCBleHRyYSBFTFMgdmVyYm9zZSBsb2dnaW5nIGZvciBFTFMgcmVzcG9uc2VzLgorCSogQWRkZWQgcmVjb2duaXRpb24gZm9yIEJVSUxEX0ZDX1RSQU5TPTIgdG8gTWFrZWZpbGUgdG8gZGVmaW5lCisJICBGQ19UUkFOU19WRVIyLgorCSogQWRkIGEgcG9pbnRlciBmb3IgbGluayBzdGF0cyBhbGxvY2F0aW9uLgorCSogRXhwb3J0ZWQgbHBmY19nZXRfaGJhX3N5bV9ub2RlX25hbWUgZm9yIHVzZSBieSBGQ19UUkFOU19WRVIyCisJICBzeXNmcyByb3V0aW5lcy4KKwkqIEZpeCBkaXNjb3ZlcnkgcHJvYmxlbSBpbiBsaXAgdGVzdGluZzogaWYgZGV2aWNlIHNlbmRzIGFuIEVMUyBjbWQKKwkgIChpLmUuIExPR08pIGJlZm9yZSBvdXIgRkxPR0kgY29tcGxldGVzIGl0IHNob3VsZCBiZSBMU19SSlQnZWQuCisJKiBNb3ZlZCAjZGVmaW5lcyBhcm91bmQgdG8gcHJvdmlkZSB0YXJnZXRfYWRkL3JlbW92ZSBmb3IgdXBzdHJlYW0KKwkgIGtlcm5lbCBkZWxpdmVyYWJsZXMgb25seSBub3QgU0xFUzkuICBQcm92aWRlZCBpZmRlZnMgdG8gI2luY2x1ZGUKKwkgIHRhcmdldF9ibG9jay91bmJsb2NrIG9ubHkgaWYgRkNfVFJBTlNfVkVSMS4KKwkqIEFkZCBzYW5pdHkgY2hlY2sgaW4gbHBmY19ubHBfbGlzdCBtb3ZlIHNldHRpbmcgbmxwX1RhcmdldAorCSAgb3V0c2lkZSAjaWZkZWYuCisJKiBBZGRlZCBhIGJsb2NrZWQgbWVtYmVyIHRvIHRoZSBscGZjX3RhcmdldCBzdHJ1Y3R1cmUgZm9yCisJICBibG9jay91bmJsb2NrLiAgVGhpcyBtZW1iZXIgYWxsb3dzIHRoZSBkcml2ZXIgdG8ga25vdyB3aGVuIHRvCisJICB1bmJsb2NrIGZvciBwY2lfcmVtb3ZlX29uZSBvciBwY2lfYWRkX29uZS4gICNpZmRlZidkIHNvbWUgbW9yZQorCSAgYmxvY2svdW5ibG9jayBzdHVmZiBhbmQgcmVtb3ZlZCBzb21lIGRlZmVuc2l2ZSBjaGVja3MgZnJvbQorCSAgdGFyZ2V0X2Jsb2NrL3VuYmxvY2suCisJKiBNb3ZlZCArIDUgc2Vjb25kIHdpbmRvdyB0byBkZXZfbG9zc190bW8gc2V0dGluZyBhbmQgdXBkYXRlZAorCSAgY29tbWVudHMuCisJKiBSZW1vdmVkIE5VTEwgdGFyZ2V0IGNoZWNrIGZyb20gdGFyZ2V0X2Jsb2NrL3VuYmxvY2sgYW5kIGZpeGVkIHVwCisJICBhIGZldyBjb21tZW50cy4KKwkqIEVuYWJsZSBzeXNmcyBhdHRyaWJ1dGVzIG9uIDIuNi41IGtlcm5lbHMgYW5kIHJlbW92ZSBleHRyYQorCSAgY29tcGF0aWJpbGl0eSBjb2RlLgorCSogUmVtb3ZlIGFueSBhbmQgYWxsIHRyYWlsaW5nIHdoaXRlc3BhY2UuCisJKiBBZGRlZCBtZXNzYWdlIDA3MTggYW5kIHJldHVybiBlcnJvciB3aGVuIGRtYV9tYXBfc2luZ2xlIGZhaWxzLgorCSogQ2hhbmdlZCB0aGUgZmNwQ250bDIgY29tbWFuZHMgdG8gaW5jbHVkZSBhbiBGQ1BfIHByZWZpeCB0byBnZXQKKwkgIHJpZCBvZiBidWlsZCB3YXJuaW5ncyBvbiBsYXRlciAyLjYuOS1yYyBrZXJuZWxzLiAgQnVpbGQKKwkgIGNvbmZsaWN0cyB3aXRoIHNjc2kvc2NzaS5oLiAgUmVtb3ZlIGluY2x1c2lvbnMgb2Ygc2NzaS9zY3NpLmgKKwkgIGZyb20gaGJhZGlzYy5jLCBzbGkuYywgYW5kIGZjcC5jIHNpbmNlIHRoZXNlIG1vZHVsZXMgaGFkIG5vCisJICBkZXBlbmRlbmNpZXMgb24gc2NzaS5oLgorCSogRml4ZWQgYSBidWcgd2l0aCBSU0NOIGhhbmRsaW5nLiBBIFJTQ04gcmVjZWl2ZWQgb24gb25lIGRldmljZSwKKwkgIHNob3VsZG4ndCBhZmZlY3Qgb3RoZXIgZGV2aWNlcyBub3QgcmVmZXJlbmNlZCBieSB0aGUgUlNDTi4KKwkqIE1vdmVkICNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMiw2LDYpIHRvIGluY2x1ZGUKKwkgIGxwZmNfamVkZWNfdG9fYXNjaWkgdG8gcHJldmVudCB3YXJuaW5nIGluIFNMRVMgOS4KKwkqIFVwZGF0ZSBNYWtlZmlsZSB0byBhY2NvdW50IGZvciBTTEVTIDkgYW5kIHNjc2ktdGFyZ2V0IHVwc3RyZWFtCisJICBrZXJuZWwuCisJKiBUaGlzIGNoZWNraW4gcHJvdmlkZXMgYmxvY2svdW5ibG9jayBob29rcyBmb3IgdGhlIHVwc3RyZWFtIHNjc2kKKwkgIHRhcmdldCBrZXJuZWwgYW5kIDIuNi41IG9uIFNMRVM5IFNQMSB3aXRoIHRoZSBibG9jay91bmJsb2NrCisJICBwYXRjaC4KKwkqIERpc2NvdmVyeSBjaGFuZ2VzIHJlZ2FyZGluZyBzZXR0aW5nIHRhcmdldHAtPnBub2RlIGFuZAorCSAgbmRscC0+bmxwX1RhcmdldCBFbnN1cmUgZmNfdGFyZ2V0Xyogcm91dGluZXMgYXJlIGNhbGxlZCBwcm9wZXJseQorCSAgZnJvbSBkaXNjb3ZlcnkuICBSZW1vdmUgbGlzdF9kZWwncyBmcm9tIGxwZmNfY2xlYW51cCgpLiAgRW5zdXJlCisJICBhbGwgdGhlIGxwZmNfY29uc2lzdGVudF9iaW5kXyogcm91dGluZXMgZG9uJ3Qgc2V0IGFueSBkcml2ZXIKKwkgIHN0cnVjdHVyZSBvYmplY3RzLgorCSogRml4IGZvciB0aW1lb3V0IG9mIFJFQURfTEEgb3IgUkVBRF9TUEFSQU0gbWFpbGJveCBjb21tYW5kCisJICBjYXVzaW5nIHBhbmljLgorCSogQ2xlYW51cCBsaXN0X2RlbCgpJ3MgZm9yIERpc2NvdmVyeSBuZGxwIGxpc3RzLgorCSogQnVnIGZpeGVzIGZvciBzb21lIGluc21vZC9ybW1vZCBjcmFzaGVzLCBsaW5rIGRvd24gY3Jhc2hlcyBhbmQKKwkgIGRldmljZSBsb3NzIGNyYXNoZXMuCisJKiBSZW1vdmVkIE5MUF9TRUFSQ0hfREVRVUUuCisJKiBDYWxsIGxwZmNfdGFyZ2V0X3VuYmxvY2sgb25seSBpZiB0aGUgdGFyZ2V0cCBpcyBub25OdWxsIGFuZCB3aXRoCisJICB0aGUgaG9zdF9sb2NrIGhlbGQuCisJKiBBZGRlZCBxY21kY250IGJhY2sgYWxvbmcgd2l0aCBtaXNjIGJ1ZyBmaXhlcyB0byBkaXNjb3ZlcnkuCisJKiBDaGFuZ2VkIHRndF9pbyB0byBvdXRmY3BpbyBscGZjX2ZjcC5jLgorCSogRml4ZWQgZXJyb3JzIGNhdXNlZCBieSBMSVAgYW5kIGNhYmxlIHB1bGxzIGJvdGggd2l0aCBhbmQgd2l0aG91dAorCSAgYmxvY2svdW5ibG9jayBwYXRjaC4KKwkqIEZvciBub3cgd2UgaGF2ZSB0byBjYWxsIGZjX3RhcmdldF91bmJsb2NrIGFuZCBmY190YXJnZXRfYmxvY2sKKwkgIHdpdGggaW50ZXJydXB0cyBlbmFibGVkLgorCSogU2F2ZSBzZWdfY250IGZyb20gZG1hX21hcF9zZy4gIFNhdmUgc2NhdHRlci1nYXRoZXIgc3RhcnQgYWRkcmVzcworCSAgYW5kIHBhc3MgYmFjayB0byBkbWFfdW5tYXBfc2cgaW4gZXJyb3Igd2l0aCBzZWdfY250LgorCSogSW5jb3Jwb3JhdGluZyBibG9jay91bmJsb2NrIGNhbGxzIGludG8gZHJpdmVyIHdpdGggaWZkZWZzLiAgVGhpcworCSAgY2hhbmdlIGlzIHN1cHBvcnRlZCBieSBzY3NpLXRhcmdldC0yLjYga2VybmVsIGFuZCBmb3J3YXJkIG9ubHkuCisJKiBNZXJnZWQgaW4gc29tZSBkaXNjb3ZlcnkgYnVnIGZpeGVzIGFuZCBhZGRlZCB0Z3QgaW8gY291bnRlcnMuCisJKiBBZGRlZCBzeXNmcyBhdHRyaWJ1dGVzL2ludGVyZmFjZXM6IHJlYWQgb25seSBhdHRyaWJ1dGUKKwkgICJtYW5hZ2VtZW50X3ZlcnNpb24iIGFuZCB3cml0ZSBvbmx5IGF0dHJpYnV0ZSAiaXNzdWVfbGlwIi4KKwkqIEZpeCBidWlsZCBvbiBiaWcgZW5kaWFuIG1hY2hpbmVzOiB3aGlsZSAjaWYgd2FzIE9LIHdpdGgKKwkgIF9fQklHX0VORElBTiB3aGljaCBkZWZpbmVkIGFzIDQzMjEsIF9fQklHX0VORElBTl9CSVRGSUVMRCBoYXMgdG8KKwkgIGJlIHRlc3RlZCB3aXRoICNpZmRlZiBiZWNhdXNlIGl0IGRvZXMgbm90IGhhdmUgYW55IHZhbHVlLCBpdCBpcworCSAgZWl0aGVyIGRlZmluZWQgb3Igbm90LgorCSogQWRkIGZhYnJpY19uYW1lIGFuZCBwb3J0X3R5cGUgYXR0cmlidXRlcy4KKwkqIENoYW5nZSBtZGVsYXkgdG8gbXNsZWVwLiAgbWRlbGF5IHdvcmtzLCBidXQgd2FzdGVmdWxseSB1c2VzIGNwdQorCSAgcmVzb3VyY2VzIHdpdGhvdXQgYSBsb2NrIGhlbGQuIFJldmVydCB0byBtc2xlZXAuICBUZXN0ZWQgd2l0aAorCSAgc2dfcmVzZXQgZm9yIGJ1cyBhbmQgdGhyZWUgYXR0YWNoZWQgdGFyZ2V0cy4KKwkqIEFkZGVkIHRoZSBjdXN0b21hcnkgI2lmbmRlZi4uLiNkZWZpbmUuLi4jZW5kaWYgdG8KKwkgIGxwZmNfdmVyc2lvbi5oLgorCSogSW50ZWdyYXRlIHBhdGNoZXMgZnJvbSBDaHJpc3RvcGggSGVsbHdpZzogdHdvIG5ldyBoZWxwZXJzIGNvbW1vbgorCSAgdG8gbHBmY19zbGlfcmVzdW1lX2lvY2IgYW5kIGxwZmNfc2xpX2lzc3VlX2lvY2IgLSBzaW5naWZpY2FudAorCSAgY2xlYW51cCBvZiB0aG9zZSB0d28gZnVuY3Rpb25zIC0gdGhlIHVudXNlZCBTTElfSU9DQl9VU0VfVFhRIGlzCisJICBnb25lIC0gbHBmY19zbGlfaXNzdWVfaW9jYl93YWl0IGxvc2VzIGl0cyBmbGFncyBhcmd1bWVudAorCSAgdG90YWxseS4KKwkqIEZpeCBpbiBscGZjX3NsaS5jOiB3ZSBjYW4gbm90IHN0b3JlIGEgNSBiaXQgdmFsdWUgaW4gYSA0LWJpdAorCSAgZmllbGQuCisJKiBNb3ZlZCBzb21lIHJvdXRpbmVzIG91dCBvZiBscGZjX2ZjcC5jIGludG8gbW9yZSBhcHByb3ByaWF0ZQorCSAgZmlsZXMuCisJKiBXaGl0ZXNwYWNlIGNsZWFudXA6IHJlbW92ZSBhbGwgdHJhaWxpbmcgd2hpdGVzcGFjZS4KKwkqIE1ha2UgbHBmY19kaXNjX25kbHBfc2hvdyBzdGF0aWMgdG8gbHBmY19mY3AuYy4KKwkqIFJlbW92ZSBsZWZ0b3ZlciBwcmludGsgYW5kIHJlcGxhY2Ugc29tZSB3aXRoCisJICBwcmludGsoS0VSTl9XQVJOSU5HKQorCSogVHJpdmlhbDogZml4IGEgZmV3IGxvbmcgbGluZXMgYW5kIGEgc29mdCB0YWIuCisJKiBSZW1vdmUgd2FybmluZ3MgZ2VuZXJhdGVkIGJ5IFNwYXJzZSBhZ2FpbnN0IGRyaXZlciAobWFrZQorCSAgQz0xKS4gTW9zdGx5IHRoZXNlIGFyZSAidXNpbmcgaW50ZWdlciBhcyBwb2ludGVyIHdhcm5pbmdzIgorCSAgaS5lLiB1c2UgTlVMTCBpbnN0ZWFkIG9mIDAuCisJKiBJbnRlZ3JhdGVkIHBhdGNoIGZyb20gQ2hyaXN0b3BoIEhlbGx3aWc6IFF1aXRlIGEgbG90IG9mIGNoYW5nZXMKKwkgIGhlcmUsIHRoZSBtb3N0IG5vdGFibGUgaXMgdGhhdCB0aGUgcGhiYS0+c2xpbTJwIGxwZmNfZG1hYnVmIGdvZXMKKwkgIGF3YXkgaW4gZmF2b3VyIG9mIGEgdHlwZWRlIHBvaW50ZXIgYW5kIGEgZG1hX2FkZHJfdC4gIER1ZSB0byB0aGUKKwkgIHR5cGVkIHBvaW50ZXIgbG90cyBvZiB0aGUgY2FzdCBtZXNzIGNhbiBnbyBhd2F5LCBhbmQgd2hpbGUgYXQgaXQKKwkgIEkgYWxzbyByZXBsYWNlZCB0aGUgbWVzc3kgU0xJMl9TTElNX3Qgd2l0aCBhIHNpbXBsZSBzdHJ1Y3QKKwkgIGxwZmMyX3NsaTJfc2xpbSB0aGF0IG9ubHkgY29udGFpbnMgdGhlIHBhcnQgb2YgdGhlIHVuaW9uIHdlIGNhcmUKKwkgIGFib3V0IHdoaWxlIHVzaW5nIFNMSTJfU0xJTV9TSVpFIGZvciBhbGwgc2l6ZSBjYWxjdWxhdGlvbnMKKwkgIGRpcmVjdGx5LgorCSogSW50ZWdyYXRlZCBwYXRjaCBmcm9tIENocmlzdG9waCBIZWxsd2lnOiBUaGlzIHN0cmVhbWxpbmVzIHRoZQorCSAgSS9PIGNvbXBsZXRpb24gcGF0aCBhIGxpdHRsZSBtb3JlLCBlc3BlY2lhbGx5IHRha2luZyBjYXJlIG9mCisJICBmYXN0LXBhdGhpbmcgdGhlIG5vbi1lcnJvciBjYXNlLiAgQWxzbyByZW1vdmVzIHRvbnMgb2YgZGVhZAorCSAgbWVtYmVycyBhbmQgZGVmaW5lcyBmcm9tIGxwZmNfc2NzaS5oIC0gZS5nLiBscGZjX3RhcmdldCBpcyBkb3duCisJICB0byBub3RoaW5nIG1vcmUgdGhhbiB0aGUgbHBmY19ub2RlbGlzdCBwb2ludGVyLgorCSogQWRkZWQgYmluYXJ5IHN5c2ZzIGZpbGUgdG8gaXNzdWUgbWJveCBjb21tYW5kcworCSogUmVwbGFjZWQgI2lmIF9fQklHX0VORElBTiB3aXRoICNpZiBfX0JJR19FTkRJQU5fQklURklFTEQgZm9yCisJICBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHVzZXIgc3BhY2UgYXBwbGljYXRpb25zLgorCSogRGVjcmVhc2UgdGhlIGFtb3VudCBvZiBkYXRhIGluIHByb2NfaW5mby4KKwkqIENvbmRlbnNlIG5vZGVsaXN0IGZsYWcgbWVtYmVycy4KKwkqIEV4cGFuZCBJTkZPIGZvciBkaXNjb3Zlcnkgc3lzZnMgc2hvc3QgZW50cmllcy4KKwkqIE5vdGlmeSB1c2VyIGlmIGluZm9ybWF0aW9uIGV4Y2VlZHMgNGsgc3lzZnMgbGltaXQuCisJKiBSZW1vdmVkIGEgYnVuY2ggb2YgdW51c2VkICNkZWZpbmVzLgorCSogQWRkZWQgaW5pdGlhbCBzeXNmcyBkaXNjb3Zlcnkgc2hvc3QgYXR0cmlidXRlcy4KKwkqIFJlbW92ZSB1bnVzZWQgI2RlZmluZXMgbHBmY19kaXNjLmguCisJKiBGaXhlZCBmYWlsTWFzayBub2RlbGlzdCBzZXR0aW5ncy4KKwkqIENsZWFudXAgc29tZSBvbGQgY29tbWVudHMgLyB1bnVzZWQgdmFyaWFibGVzLgorCSogQWRkIExQMTAxIHRvIGxpc3Qgb2YgcmVjb2duaXplZCBhZGFwdGVycy4KKworQ2hhbmdlcyBmcm9tIDIwMDQwOTA4IHRvIDIwMDQwOTIwCisKKwkqIENoYW5nZWQgdmVyc2lvbiBudW1iZXIgdG8gOC4wLjEyCisJKiBSZW1vdmVkIHVzZWQgI2RlZmluZXM6IERFRkFVTFRfUENJX0xBVEVOQ1lfQ0xPQ0tTIGFuZAorCSAgUENJX0xBVEVOQ1lfVkFMVUUgZnJvbSBscGZjX2h3LmguCisJKiBDaGFuZ2VzIHRvIGFjY29tbW9kYXRlIHJuaWQuCisJKiBGaXggUlNDTiBoYW5kbGluZyBzbyBSU0NOIE5TIHF1ZXJpZXMgb25seSBlZmZlY3QgTlBvcnRzIGZvdW5kIGluCisJICBSU0NOIGRhdGEuCisJKiBJZiB3ZSByY3YgYSBwbG9naSBvbiBhIE5Qb3J0IHF1ZXVlZCB1cCBmb3IgZGlzY292ZXJ5LCBjbGVhciB0aGUKKwkgIE5MUF9OUFJfMkJfRElTQyBiaXQgc2luY2UgcmN2IHBsb2dpIGxvZ2ljIHdpbGwgZm9yY2UgTlBvcnQgdGhydQorCSAgZGlzY292ZXJ5LgorCSogRW5zdXJlIGxwZmNfdGFyZ2V0IGlzIGFsc28gY2xlYW5lZCB1cCBpbiBscGZjX2NsZWFudXAoKS4KKwkqIFByZWxpbWluYXJ5IGNoYW5nZXMgZm9yIGJsb2NrL3VuYmxvY2sga2VybmVsIEFQSSBleHRlbnNpb25zIGluCisJICBwcm9ncmVzcyB3aXRoIGxpbnV4LXNjc2kgbGlzdC4gIFRoZXNlIGFyZSBuYW1lIGNoYW5nZXMgYW5kCisJICBwcm90b3R5cGUgY2hhbmdlcyBvbmx5LgorCSogQWRkZWQgc2VuZF9hYnRzIGZsYWcgdG8gbHBmY19lbHNfYWJvcnQuIEZvciByY3YgTE9HTyB3aGVuIEFESVNDCisJICBzZW50LCB0aGUgWFJJIG9mIHRoZSBMT0dPIHJjdidlZCBpcyB0aGUgc2FtZSBhcyB0aGUgQURJU0MKKwkgIHNlbnQuIFRodXMgd2UgY2Fubm90IEFCVFMgdGhlIEFESVNDIGJlZm9yZSBzZW5kaW5nIHRoZSBMT0dPIEFDQy4KKwkqIFdlZWQgb3V0IHNvbWUgdW51c2VkIGZjX2ZsYWdzLiAgQWRkIEZDX0RJU0NfVE1PLgorCSogYm9hcmRfb25saW5lIHN5c2ZzIGF0dHJpYnV0ZSBhZGRlZCB0byBzdXBwb3J0IGxpYmRmYyBmdW5jdGlvbnMKKwkgIEluaXREaWFnRW52IGFuZCBTZXRCcmRFbnYuCisJKiBTdHJlYW1saW5lIGNvZGUgaW4gbHBmY19lbHNfcmV0cnkgZml4dXAgYWJvcnQgY2FzZSBpbgorCSAgbHBmY19lbHNfdGltZW91dF9oYW5kbGVyKCkuCisJKiBGbHVzaCBkaXNjb3ZlcnkvRUxTIGV2ZW50cyB3aGVuIHdlIGJyaW5nIFNMSSBsYXllciBkb3duLgorCSogY3RscmVnIGFuZCBzbGltZW0gYmluYXJ5IGF0dHJpYnV0ZXMgYWRkZWQgdG8gc3VwcG9ydCBsaWJkZmMKKwkgIHJlYWQvd3JpdGUgbWVtL2N0bCBmdW5jdGlvbnMuCisJKiBJbnRlZ3JhdGVkIENocmlzdG9waCBIZWxsd2lnJ3MgcGF0Y2g6IENsZWFudXAKKwkgIGxwZmNfc2xpX3Jpbmdwb3N0YnVmX2dldC4KKwkqIE1vZGlmaWVkIGxwZmNfc2xhdmVfYWxsb2MgYW5kIGxwZmNfc2xhdmVfZGVzdHJveSB0byBhbGxvY2F0ZSBhbmQKKwkgIGZyZWUgYSBkdW1teSB0YXJnZXQgcG9pbnRlci4gIFRoaXMgYWxsb3dzIHF1ZXVlY29tbWFuZCB0byBza2lwCisJICB0aGUgTlVMTCB0YXJnZXQgcG9pbnRlciBjaGVjayBhbmQgYXZvaWQgdGhlIGNvbnNvbGUgc3BhbSB3aGVuCisJICBzbGF2ZV9hbGxvYyBmYWlscy4KKwkqIEZpeCBjZmdfc2Nhbl9kb3duIGxvZ2ljLCBpdCB3YXMgcmV2ZXJzZWQuCisJKiBJbml0IGxpc3QgaGVhZCBjdHJzcGJ1Zmxpc3QuCisJKiBDaGFuZ2UgbmFtZSBvZiBscGZjX2RyaXZlcl9hYm9ydCB0byBscGZjX2Vsc19hYm9ydCBzaW5jZSBpdCBpcworCSAgb25seSB2YWxpZCBmb3IgRUxTIHJpbmcuCisJKiBSZW1vdmUgdW51c2VkIHRoaXJkIGFyZ3VtZW50IGZvciBscGZjX2NvbnNpc3RlbnRfYmluZF9nZXQoKS4KKwkqIEZpeCB1cCBpb3RhZyBmaWVsZHMgaW4gbHBmY19wcmVwX2Vsc19pb2NiKCkuCisJKiBSZW1vdmUgbG9nIG1lc3NhZ2Ugb24gY29kZSBwYXRoIHRyaWdnZXJlZCBieSBscGZjX2Vsc19hYm9ydCgpLgorCSogU2V0IGhvc3QtPnVuaXF1ZV9pZCBpbiBscGZjX2ZjcC5jLgorCSogUmVtb3ZlZCBkZWFkd29vZDogbHBmY190YXJnZXQucEhiYSBub3QgbmVjZXNzYXJ5IGFueW1vcmUuCisJKiBJbnRlZ3JhdGVkIHBhdGNoIGZyb20gQ2hyaXN0b3BoIEhlbGx3aWc6IHJlbW92ZSBkZWFkCisJICBTTElfSU9DQl9QT0xMIGhhbmRsaW5nLgorCSogSW50ZWdyYXRlZCBwYXRjaCBmcm9tIENocmlzdG9waCBIZWxsd2lnOiBTdHJlYW1saW5lIEkvTworCSAgc3VibWlzc2lvbiBhbmQgY29tcGxldGlvbiBwYXRoIGEgbGl0dGxlLgorCSogUmVtb3ZlIHVubmVjZXNzYXJ5IGxwZmNfYnJkX25vLiAgRW5zdXJlIGJyZF9ubyBhc3NpZ25tZW50IGlzCisJICB1bmlxdWUuCisJKiBSZW1vdmVkIHVudXNlZCBNQVhfRkNQX0xVTi4KKwkqIFVzZSBtb2RfdGltZXIgaW5zdGVhZCBvZiBhZGRfdGltZXIgZm9yIGZkbWkgaW4gbHBmY19jdC5jLgorCSogRml4ZWQgbWlzYyBkaXNjb3ZlcnkgcHJvYmxlbXMuCisJKiBNb3ZlIHN0b3BwaW5nIHRpbWVycyB0aWxsIGp1c3QgYmVmb3JlIGxwZmNfbWVtX2ZyZWUoKSBjYWxsLgorCSogRml4IHVwIE5hbWVTZXJ2ZXIgcmVnbG9naW4gZXJyb3IgcGF0aC4KKwkqIENsZWFudXAgcG9zc2libGUgb3V0c3RhbmRpbmcgZGlzY292ZXJ5IHRpbWVycyBvbiBybW1vZC4KKwkqIEZpeCBkaXNjb3ZlcnkgTlBvcnQgdG8gTlBvcnQgcHQycHQgcHJvYmxlbS4KKwkqIEdldCByaWQgb2YgaXBfdG1vZnVuYyAvIHNjc2lfdG1vZnVuYy4KKwkqIEludGVncmF0ZWQgcGF0Y2ggZnJvbSBDaHJpc3RvcGggSGVsbHdpZzoKKwkgIGxwZmNfZGlzY19kb25lL2xwZmNfZG9fZHBjIGNsZWFudXAgLSBscGZjX2Rpc2NfZG9uZSBjYW4gcmV0dXJuCisJICB2b2lkIC0gbW92ZSBscGZjX2RvX2RwYyBhbmQgbHBmY19kaXNjX2RvbmUgdG8gbHBmY19oYmFkaXNjLmMgLQorCSAgcmVtb3ZlIGNoZWNraW5nIG9mIGxpc3QgZW1wdGluZXNzIGJlZm9yZSBjYWxsaW5nIGxwZmNfZGlzY19kb25lLAorCSAgaXQgaGFuZGxlcyB0aGUgZW1wdHkgbGlzdCBjYXNlIGp1c3QgZmluZSBhbmQgdGhlIGFkZGl0aW9uYWwKKwkgIGluc3RydWN0aW9ucyBjb3N0IGxlc3MgdGhlbiB0aGUgYnVzdGxvY2tlZCBzcGlubG9jayBvcGVyYXRpb25zLgorCSogSW50ZWdyYXRlZCBwYXRjaCBmcm9tIENocmlzdG9waCBIZWxsd2lnOiBUaGlzIGFkZHMgYSBuZXcgNjRiaXQKKwkgIGNvdW50ZXIgaW5zdGVhZCwgYnJkX25vIGlzbid0IHJldXNlZCBhbnltb3JlLiAgQWxzbyBzb21lIHRpbnkKKwkgIHdoaXRlc3BhY2UgY2xlYW51cHMgaW4gc3Vycm91bmRpbmcgY29kZS4KKwkqIFJlb3JkZXIgZnVuY3Rpb25zIGluIGxwZmNfZWxzLmMgdG8gcmVtb3ZlIG5lZWQgZm9yIHByb3RvdHlwZXMuCisJKiBSZW1vdmVkIHVudXNlZCBwcm90b3R5cGVzIGZyb20gbHBmY19jcnRuLmggLQorCSAgbHBmY19pcF90aW1lb3V0X2hhbmRsZXIsIGxwZmNfcmVhZF9wY2kgYW5kIGxwZmNfcmV2b2tlLgorCSogUmVtb3ZlZCBzb21lIHVudXNlZCBwcm90b3R5cGVzIGZyb20gbHBmY19jcnRuLmggLQorCSAgbHBmY19zY3NpX2hiYV9yZXNldCwgbHBmY19zY3NpX2lzc3VlX2lucXNuLAorCSAgbHBmY19zY3NpX2lzc3VlX2lucXAwLCBscGZjX3Njc2lfdGltZW91dF9oYW5kbGVyLgorCSogSW50ZWdyYXRlZCBwYXRjaCBmcm9tIENocmlzdG9waCBIZWxsd2lnOiByZW1vdmUgVFJVRS9GQUxTRQorCSAgdXNhZ2UuCisJKiBJbnRlZ3JhdGVkIHBhdGNoIGZyb20gQ2hyaXN0b3BoIEhlbGx3aWc6IFJlbW92ZSB1bnVzZWQgZnVuY3Rpb24KKwkgIHByb3RvdHlwZXMgbHBmY19zZXRfcGt0X2xlbiBhbmQgbHBmY19nZXRfcGt0X2RhdGEgZnJvbQorCSAgbHBmY19jcnRuLmggLSBmaXhlcyBidWlsZCB3YXJuaW5ncy4KKwkqIFJlbW92ZWQgdW51c2VkIHN0cnVjdCBscGZjX2RtYWJ1ZmlwIGRlZmluaXRpb24gZnJvbSBscGZjX21lbS5oLgorCSogUmVtb3ZlZCBwcmUtMi42LjUgTU9EVUxFX1ZFUlNJT04gbWFjcm8gZnJvbSBscGZjX2NvbXBhdC5oLgorCSogRml4aW5nIG1pc3Npbmcgc3RhdGljIGFuZCByZW1vdmluZyBkZWFkIGNvZGUuCisJKiBBZGRpbmcgbm9kZXd3biwgcG9ydHd3biBhbmQgcG9ydGZjaWQgc2hvc3QgYXR0cmlidXRlcy4KKwkqIEluaXRpYWwgc3VwcG9ydCBmb3IgQ1QgdmlhIHN5c2ZzLiByZXF1ZXN0IHBheWxvYWRzIG9mIHNpemUgbGVzcworCSAgdGhhbiBQQUdFX1NJWkUgYW5kIHJzcCBwYXlsb2FkcyBvZiBzaXplIFBBR0VfU0laRSBhcmUgc3VwcG9ydGVkLgorCSAgRHJpdmVyIG1haW50YWlucyBhIGxpc3Qgb2YgcnNwJ3MgYW5kIHBhc3NlcyBiYWNrIHJzcCdzCisJICBjb3JyZXNwb25kaW5nIHRvIHRoZSBwaWQgb2YgdGhlIGNhbGxpbmcgcHJvY2Vzcy4KKwkqIFN1cHBvcnQgZm9yIFJlZnJlc2hJbmZvcm1hdGlvbiwgR2V0QWRhcHRlckF0dHJpYnV0ZXMsCisJICBHZXRQb3J0U3RhdGlzdGljcy4KKwkqIE1ha2Ugbm9kZXYtdG1vIGRlZmF1bHQgdG8gMjAgc2Vjb25kcy4KKwkqIEZpeCB1cCBzb21lIERTTSBlcnJvciBjYXNlcywgdW5yZWdfbG9naW4gcnBpIHdoZXJlIG5lZWRlZC4KKwkqIEZpeCB1cCBjb21tZW50cyBmb3IgZmNfdGFyZ2V0X2Jsb2NrIC8gZmNfdGFyZ2V0X3VuYmxvY2suCisJKiBGaXggdXAgY29kZSBmb3Igc2NzaV9ibG9ja19yZXF1ZXN0cyAvIHNjc2lfdW5ibG9ja19yZXF1ZXN0cy4KKwkqIEFkZCBOTFBfRkNQX1RBUkdFVCBmb3Igbm9kZWluZm8gc3VwcG9ydC4KKwkqIE1vdmUgc3VzcGVuZC9yZXN1bWUgaW4gbHBmY19ubHBfbGlzdCB1bmRlciBhcHByb3ByaWF0ZSBjYXNlIC0KKwkgIFVzZWQgaG9zdF9sb2NrIGZvciBEUEMgdG8gYXZvaWQgcmFjZSAocmVtb3ZlIGRwY19sb2NrKQorCSogRml4IHNvbWUgY29ybmVyIGNhc2VzIGZvciBQTE9HSSByZWNlaXZlIC0gc2ltcGxpZnkgZXJyb3IgY2FzZQorCSAgZm9yIGNtcGxfcmVnbG9naW5fcmVnbG9naW5faXNzdWUuCisJKiBCdWcgZml4IGZvciBwcGM2NCBFRUggTU1JTyBwYW5pYyAtIGFsd2F5cyBkbyByZWFkbCBhZnRlcgorCSAgd3JpdGVsJ3Mgb2YgSEJBIHJlZ2lzdGVycyB0byBmb3JjZSBmbHVzaC4KKwkqIEdldCByaWQgb2YgaW5pdGlhbCBzdGF0aWMgcm91dGluZSBkZWNsYXJhdGlvbnMgaW4gbHBmY19oYmFkaXNjLmMKKwkgIGFuZCBscGZjX2Vscy5jLgorCSogVXBkYXRlcyB0byBkaXNjb3ZlcnkgcHJvY2Vzc2luZy4KKworQ2hhbmdlcyBmcm9tIDIwMDQwODIzIHRvIDIwMDQwOTA4CisKKwkqIENoYW5nZWQgdmVyc2lvbiBudW1iZXIgdG8gOC4wLjExCisJKiBSZW1vdmVkIHBlcnNpc3RlbnQgYmluZGluZyBjb2RlLgorCSogRGlzcGxheSBib3RoIEFTQyBhbmQgQVNDUSBpbmZvLgorCSogRml4ZWQgbGluayBkb3duLT51cCB0cmFuc2l0aW9ucyB3aGVuIGxpbmtkb3duIHRtbyBleHBpcmVzLiBGaXgKKwkgIHdhcyBpbiB0aGUgZGVmZW5zaXZlIGVycm9yIGNoZWNraW5nIGF0IHRoZSBzdGFydCBvZgorCSAgcXVldWVjb21tYW5kLgorCSogUmVtb3ZlZCBscGZjX3Njc2lfdGltZW91dF9oYW5kbGVyIGFzIHRoaXMgdGltZXIgaXMgbm8gbG9uZ2VyCisJICByZXF1aXJlZC4gIFRoZSBtaWRsYXllciB3aWxsIGV4aGF1c3QgcmV0cmllcyBhbmQgdGhlbiBjYWxsCisJICBscGZjX2Fib3J0X2hhbmRsZXIsIGxwZmNfcmVzZXRfbHVuX2hhbmRsZXIsIGFuZAorCSAgbHBmY19yZXNldF90YXJnZXRfaGFuZGxlci4KKwkqIE1pbmltYWwgc3VwcG9ydCBmb3IgU0NTSSBmbGF0IHNwYWNlIGFkZHJlc3Npbmcvdm9sdW1lIHNldAorCSAgYWRkcmVzc2luZy4gIFVzZSAxNiBiaXRzIG9mIExVTiBhZGRyZXNzIHNvIHRoYXQgZmxhdAorCSAgYWRkcmVzc2luZy9WU0Egd2lsbCB3b3JrLgorCSogQ2hhbmdlZCAyIG9jY3VycmVuY2VzIG9mIGlmKCAxICE9IGYoeCkpIHRvIGlmKGYoeCkgIT0gMSkKKwkqIERyb3AgaW5jbHVkZSBvZiBscGZjX2NmZ3Bhcm0uaC4KKwkqIFJlZHVjZSBzdGFjayB1c2FnZSBvZiBscGZjX2ZkbWlfY21kIGluIGxwZmNfY3QuYy4KKwkqIEFkZCBtaW5pbXVtIHJhbmdlIGNoZWNraW5nIHByb3BlcnR5IHRvIC9zeXMgd3JpdGUvc3RvcmUKKwkgIGZ1bmN0aW9ucy4KKwkqIEZpeCBkaXNwbGF5IG9mIG5vZGVfbmFtZSBhbmQgcG9ydF9uYW1lIHZpYSBmYyB0cmFuc3BvcnQKKwkgIGF0dHIuCisJKiBSZW1vdmVkIGJpb3NwYXJhbSBjb2RlLgorCSogUmVtb3ZlZCByYW5nZSBjaGVja2luZy4gcGhiYS0+Y29uZmlnW10gYXJyYXkgZWxlbWVudHMgYXJlIG5vdworCSAgZW1iZWRkZWQgaW50byB0aGUgaGJhIHN0cnVjdC4gbHBmY19jb25maWdfc2V0dXAoKSBoYXMgYmVlbgorCSAgcmVtb3ZlZC4KKwkqIENvbGxhcHNlZCBscGZjX3Njc2lfY21kX3N0YXJ0IGludG8gbHBmY19xdWV1ZWNvbW1hbmQgYW5kIGNsZWFuZWQKKwkgIHVwIGNvbWJpbmVkIHJvdXRpbmVzLgorCSogUmVtb3ZlZCB1bnVzZWQgcHJvdG90eXBlcyBteXByaW50IGFuZAorCSAgbHBmY19zY2hlZF9zZXJ2aWNlX2hpZ2hfcHJpb3JpdHlfcXVldWUuCisJKiBSZW1vdmVkIHVudXNlZCBmdW5jdGlvbiBscGZjX25vZGV2LgorCSogUmVtb3ZlZCBzY3NpX2NtbmQtPnRpbWVvdXRfcGVyX2NvbW1hbmQgY2FuY2VsYXRpb24uIFNDU0kgbWlkbGF5ZXIKKwkgIG5vdyB0aW1lcyBvdXQgYWxsIGNvbW1hbmRzIC0gRlcgaXMgaW5zdHJ1Y3RlZCB0byBub3QgdGltZW91dC4KKwkqIFJlbW92ZWQgcG9sbGluZyBjb2RlIGZyb20gbHBmY19zY3NpX2NtZF9zdGFydC4gUmVvcmdhbml6ZWQKKwkgIHF1ZXVlY29tbWFuZCBhbmQgY21kX3N0YXJ0IHNvbWUuCisKK0NoYW5nZXMgZnJvbSAyMDA0MDgxMCB0byAyMDA0MDgyMworCisJKiBDaGFuZ2VkIHZlcnNpb24gbnVtYmVyIHRvIDguMC4xMAorCSogQWRkaXRpb25hbCB0aW1lciBjaGFuZ2VzIGFzIHBlciBBcmphbiAvIENocmlzdG9waCdzIGNvbW1lbnRzLgorCSogVXNlZCBtb2RfdGltZXIoKSBpbnN0ZWFkIG9mIGRlbF90aW1lcl9zeW5jKCkgd2hlcmUgYXBwcm9wcmlhdGUuCisJKiBGaXhlZCBhIHVzZSBhZnRlciBmcmVlIGNhc2UgKHBhbmljIG9uIDIuNi44LjEgd2l0aAorCSAgQ09ORklHX0RFQlVHX1NMQUIgc2V0KS4KKwkqIEZpeCBjb21waWxlIHdhcm5pbmcgaW4gbHBmY19mY3AuYy4KKwkqIE1pbm9yIGZpeCBmb3IgbG9nIG1lc3NhZ2UsIHRoYXQgcHJpbnRzIHVuYXNzaWduZWQgYnJkbm8gd2hpY2ggaXMKKwkgIHplcm8uCisJKiBNb3ZlIHNjc2lfaG9zdF9hbGxvYygpIHRvIHRoZSBiZWdpbm5pbmcgb2YgcHJvYmVfb25lKCkuIFRoaXMKKwkgIGVuc3VyZXMgdGhhdCBob3N0X2xvY2sgaXMgYXZhaWxhYmxlIGF0IGxhdGVyIHN0YWdlcyBhbmQgYWxzbworCSAgYXZvaWRzIHRvbnMgb2YgdW5uZWNlc3NhcnkgaW5pdGlhbGl6aW5nIGlmIGhvc3RfYWxsb2MoKQorCSAgZmFpbHMuCisJKiBSZW1vdmVkIGVsc2UgY2xhdXNlIGZyb20gbHBmY19zbGF2ZV9jb25maWd1cmUgdGhhdCBzZXQKKwkgIHNkZXYtPnF1ZXVlX2RlcHRoLiAgVGhlIGRyaXZlciBpbmZvcm1zIHRoZSBtaWRsYXllciBvZiBpdHMKKwkgIHNldHRpbmcgaW4gdGhlIHRlbXBsYXRlIGFuZCBvbmx5IG92ZXJyaWRlcyBpZiBxdWV1ZSB0YWdnaW5nIGlzCisJICBlbmFibGVkLgorCSogQWRkZWQgUENJX0RFVklDRV9JRF9aRVBIWVIgYW5kIFBDSV9ERVZJQ0VfSURfWkZMWSAoSnVuaW9yCisJICBaZXBoeXIpIHN1cHBvcnQKKworQ2hhbmdlcyBmcm9tIDIwMDQwNzMwIHRvIDIwMDQwODEwCisJCisJKiBDaGFuZ2VkIHZlcnNpb24gbnVtYmVyIHRvIDguMC45CisJKiBSZW1vdmVkIHBlciBIQkEgZHJpdmVyIGxvY2suICBEcml2ZXIgbm93IHVzZXMgdGhlIGhvc3QtPmhvc3RfbG9jaworCSogUmVzdG9yZWQgc3VwcG9ydCBmb3IgdGhlIDIuNi41IGtlcm5lbCBmb3IgdGhvc2UgbGludXggZGlzdHJpYnV0aW9ucworCSAgc2hpcHBlZCB3aXRoIHRoZSAyLjYuNSBrZXJuZWwuCisJKiBBcHBsaWVkIHBhdGNoIGZyb20gQ2hyaXN0b3BoIEhlbGx3aWcgKGhjaEBpbmZyYWRlYWQub3JnKSBhcyBmb2xsb3dzCisJICAiW1BBVENIXSB1c2Ugc2NzaSBob3N0IHByaXZhdGUgZGF0YSBpbiAtPnByb2NfaW5mby4gIAorCSogQXBwbGllZCBwYXRjaCBmcm9tIENocmlzdG9waCBIZWxsd2lnIChoY2hAaW5mcmFkZWFkLm9yZykgYXMgZm9sbG93cworCSAgIlJlOiBbRW11bGV4XSBSZWFkeSBmb3IgbmV4dCByb3VuZC4gIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIHRoZSBtZW1vcnkgCisJICBhbGxvY2F0aW9uIHJvdXRpbmVzIGEgbGl0dGxlIGFuZCBmaXhlcyBhIG1pc3NpbmcgbWVtcG9vbF9kZXN0cm95IGFuZAorCSAgc29tZSBtaXNzaW5nIGVycm9yIGhhbmRsaW5nLiIKKwkqIENoYW5nZWQgcG9pbnRlcnMgYXNzaWdubWVudHMgZnJvbSAwIHRvIE5VTEwuCisJKiBBZGRlZCBmaXhlcyB0byB0aGUgbHBmY19yZXNldF9sdW5faGFuZGxlciBhbmQgbHBmY19yZXNldF9idXNfaGFuZGxlcgorCSAgZW50cnkgcG9pbnRzIHRoYXQgY2F1c2VkIGtlcm5lbCB0byBPb3BzIG9yIGhhbmcuCisJKiBBZGRlZCBmaXhlcyB0byB0YXJnZXRsZXNzIGhvc3RzIHRoYXQgY2F1c2VkIG1vZHByb2JlIGFuZCBpbnNtb2QgdG8gaGFuZy4KKwkqIE9uZ29pbmcgY2xlYW51cCB0byBtYW55IGZpbGVzCisJICAKK0NoYW5nZXMgZnJvbSAyMDA0MDcyMyB0byAyMDA0MDczMAorCisJKiBDaGFuZ2VkIHZlcnNpb24gbnVtYmVyIHRvIDguMC44CisJKiBSZW1vdmVkIHVudXNlZCBMUEZOX0RSSVZFUl9WRVJTSU9OICNkZWZpbmUuCisJKiBGb2xkZWQgbHBmY19maW5kbm9kZV9zY3NpaWQgaW50byBscGZjX2ZpbmRfdGFyZ2V0LCBpdHMgb25seQorCSAgY2FsbGVyLgorCSogUmVtb3ZlZCAyIHVubmVlZGVkIGFyZ3VtZW50cyB0byBscGZjX2ZpbmRfdGFyZ2V0IChsdW4gYW5kCisJICBjcmVhdGVfZmxhZykuCisJKiBNYWtlIGxwZmNfc2xpX3Jlc2V0X29uX2luaXQgPSAxCisJKiBNaW5vciBjbGVhbnVwIHRvIHF1aWV0ZW4gc3BhcnNlLgorCSogUmVtb3ZlZCBtaXNzaW5nIGZ1bmN0aW9uID0gMCBpbiB0bW8gcm91dGluZSBpbiBscGZjX2Vscy5jLgorCSogTW92ZWQgYWRkaXRpb25hbCBiaW5kaW5nIHBhcmFtZXRlcnMgaW50byBscGZjX2RlZmF1bHRzLmM6CisJICBscGZjX2F1dG9tYXAgLyBscGZjX2ZjcF9iaW5kX21ldGhvZAorCSogVXNlIG1zZWNzX3RvX2ppZmZpZXMoKSB3aGVyZSBhcHBsaWNhYmxlLgorCSogT25seSB1c2UgcXVldWUgZGVwdGggYXR0cmlidXRlIG9ubHkgYWZ0ZXIgU0xJIEhCQSBzZXR1cCB3YXMKKwkgIGNvbXBsZXRlZC4KKwkqIFB1dCBpbiBtZW1vcnkgYmFycmllcnMgZm9yIFBQQworCSogQWRkZWQgUENJX0RFVklDRV9JRF9IRUxJT1MgYW5kIFBDSV9ERVZJQ0VfSURfSkZMWSAoSnVuaW9yCisJICBIZWxpb3MpIHN1cHBvcnQKKwkqIEFkZGVkIDQmMTAgZ2lnYWJpdCBjaG9pY2VzIGluIHVzZXIgb3B0aW9uIGxpbmtfc3BlZWQKKwkqIFVwZGF0ZWQgdGltZXIgbG9naWM6IFNldCB0aW1lciBkYXRhIGFmdGVyIGluaXRfdGltZXIgdXNlCisJICB0aW1lcl9wZW5kaW5nKCkgaW5zdGVhZCBvZiBleHBpcmVzLgorCSogUmVtb3ZlZCBzb21lIHJlbW5hbnRzIG9mIElQIG92ZXIgRkMgc3VwcG9ydCBmcm9tIEtjb25maWcgYW5kCisJICBNYWtlZmlsZS4KKwkqIFJlbW92ZSByZWR1bmRhbnQgcHJvdG90eXBlcyBmb3IgbHBmY19oYW5kbGVfZXJhdHQsCisJICBscGZjX2hhbmRsZV9sYXR0IGFuZCBscGZjX3JlYWRfcGNpLgorCSogT25nb2luZyBjbGVhbnVwIG9mIGxwZmNfaW5pdC5jLgorCSogQ2hhbmdlZCBMUEZDX0NGR19ERlRfSEJBX1FfREVQVEggLT4gTFBGQ19DRkdfSEJBX1FfREVQVEguCisJKiBBbm90aGVyIGNsZWFudXAgc3RhYiBhdCBscGZjX2N0LmMuIFJlbW92ZSBjYXN0aW5ncywgc3RydWN0dXJlCisJICBjb2RlIHNhbmVseSwgcmVtb3ZlIHJlZHVuZGFudCBjb2RlLCByZW9yZ2FuaXplIGNvZGUgc28gdGhhdAorCSAgZnVuY3Rpb25zIGFyZSBpbnZva2VkIGFmdGVyIGRlZmluaXRpb24uCisKK0NoYW5nZXMgZnJvbSAyMDA0MDcxNiB0byAyMDA0MDcyMworCisJKiBDaGFuZ2VkIHZlcnNpb24gbnVtYmVyIHRvIDguMC43CisJKiBDbGVhbnVwIG9mIGxwZmNfY3QuYy4gUmVtb3ZlZCBudW1iZXIgb2YgY2FzdHMsIHJlbW92ZWQgdG9ucyBvZgorCSAgZGVhZC9yZWR1bmRhbnQgY29kZSwgY2xlYW5lZCB1cCBiYWRseSBhbmQgcG9vcmx5IHdyaXR0ZW4gY29kZSwKKwkgIGNsZWFuZWQgdXAgcmV0dXJuIHZhbHVlcy4KKwkqIEZpeGVkIFBlcnNpc3RlbnQgYmluZGluZyBpbXBsZW1lbnRhdGlvbgorCSogUmVtb3ZlZCBhbGwgcmVmZXJlbmNlcyB0byBscGZjX3Njc2lfcmVxX3RtbworCSogUmVtb3ZlZCBsYXN0IHJlZmVyZW5jZXMgdG8gbHVuX3NraXAgY29uZmlnIHBhcmFtZXRlci4KKwkqIFJlbW92ZWQgTFBGQ19ERVZfUlBUTFVOIG5vZGUgZmFpbHVyZSBiaXQgYmVjYXVzZSB3ZSBkb24ndCBpc3N1ZQorCSAgUkVQT1JUX0xVTlMgZnJvbSB0aGUgZHJpdmVyIGFueW1vcmUuCisJKiBSZW1vdmVkIExVTi10cmFja2luZyBpbiBkcml2ZXIuICBSZW1vdmVkIGxwZmNfbHVuIHN0cnVjdCBhbmQKKwkgIG1vdmVkIGFueSBmdW5jdGlvbmFsaXR5IHdlIHN0aWxsIG5lZWQgdG8gbHBmY190YXJnZXQuCisJKiBBZGRlZCBuZXcgbHBmY19qZWRlY190b19hc2NpaSgpIGNhbGwgYW5kIHJlcGxhY2UgdHdvIGluc3RhbmNlcworCSAgb2YgZHVwbGljYXRlIGNvZGUgd2l0aCBjYWxscyB0byB0aGlzIGZ1bmN0aW9uLgorCSogUmVtb3ZlZCBWb2x1bWUgU2V0IEFkZHJlc3NpbmcgaGFuZGxpbmcgb24gTFVOIElEcy4KKwkqIEFwcGxpZWQgcGF0Y2ggZnJvbSBDaHJpc3RvcGggSGVsbHdpZyAoaGNoQGluZnJhZGVhZC5vcmcpIHRoYXQKKwkgIHJlbW92ZXMgZGVhZCBjb2RlIGJlbG9uZ2luZyB0byBscGZjX2J1aWxkX3Njc2lfY21uZCgpIGFuZCBpdHMKKwkgIGNhbGwgcGF0aC4gVGhpcyBpcyByZWxhdGVkIHRvIHRoZSByZWNlbnRseSByZW1vdmVkIHJlcG9ydF9sdW4KKwkgIGNvZGUuCisKK0NoYW5nZXMgZnJvbSAyMDA0MDcwOSB0byAyMDA0MDcxNgorCisJKiBDaGFuZ2VkIHZlcnNpb24gbnVtYmVyIHRvIDguMC42CisJKiBSZW1vdmVkIGludGVybmFsIHJlcG9ydCBMVU5zIHVzYWdlLiAgUmVtb3ZlZCBmdW5jdGlvbnM6CisJICBscGZjX2Rpc2NfaXNzdWVfcnB0bHVuLCBscGZjX2Rpc2NfY21wbF9ycHRsdW4sCisJICBscGZjX2Rpc2NfcmV0cnlfcnB0bHVuIGFuZCB0aGVpciB1c2UuCisJKiBSZW1vdmVkIHVzdXNlZCBzY2hlZHVsZXIgcHJvdG90eXBlcyBpbiBscGZjX2NydG4uaAorCSogUmVwbGFjZSBscGZjX2dlcG9ydG5hbWUoKSB3aXRoIGdlbmVyaWMgbWVtY21wKCkuCisJKiBSZWFycmFuZ2UgY29kZSBpbiBscGZjX3Jjdl9wbG9naV9wbG9naV9pc3N1ZSgpIHRvIG1ha2UgaXQgYQorCSAgbGl0dGxlIG1vcmUgcmVhZGFibGUuCisJKiBSZW1vdmUgcmVkdW5kYW50IHBvcnRfY21wICE9IDIgY2hlY2sgaW4gaWYKKwkgICghcG9ydF9jbXApIHsgLi4uLiBpZiAocG9ydF9jbXAgIT0gMikuLi4uIH0KKwkqIENsb2NrIGNoYW5nZXM6IHJlbW92ZWQgc3RydWN0IGNsa19kYXRhIGFuZCB0aW1lckxpc3QuCisJKiBDbG9jayBjaGFuZ2VzOiBzZXBhcmF0ZSBub2Rldl90bW8gYW5kIGVsc19yZXRyeV9kZWxheSBpbnRvIDIKKwkgIHNlcGFyYXRlIHRpbWVycyBhbmQgY29udmVydCB0byAxIGFyZ3VtZW50IGNoYW5nZWQKKwkgIExQRkNfTk9ERV9GQVJQX1BFTkRfdCB0byBzdHJ1Y3QgbHBmY19ub2RlX2ZhcnBfcGVuZCBjb252ZXJ0CisJICBpcGZhcnBfdG1vIHRvIDEgYXJndW1lbnQgY29udmVydCB0YXJnZXQgc3RydWN0IHRtb2Z1bmMgYW5kCisJICBydHBsdW5mdW5jIHRvIDEgYXJndW1lbnQgKiBjcl9jb3VudCwgY3JfZGVsYXkgYW5kCisJICBkaXNjb3ZlcnlfdGhyZWFkcyBhcmUgb25seSBuZWVkZWQgdG8gYmUgbW9kdWxlX3BhcmFtcyBhbmQgbm90CisJICB2aXNpYmxlIHZpYSBzeXNmcy4KKworQ2hhbmdlcyBmcm9tIDIwMDQwNjE0IHRvIDIwMDQwNzA5CisKKwkqIENoYW5nZWQgdmVyc2lvbiBudW1iZXIgdG8gOC4wLjUKKwkqIE1ha2UgbHBmY19pbmZvIHN0YXRpYy4KKwkqIE1ha2UgbHBmY19nZXRfc2NzaV9idWYgc3RhdGljLgorCSogUHJpbnQgYSB3YXJuaW5nIGlmIHBjaV9zZXRfbXdpIHJldHVybnMgYW4gZXJyb3IuCisJKiBDaGFuZ2VkIFNFUlZfUEFSTSB0byBzdHJ1Y3Qgc2Vydl9wYXJtLgorCSogQ2hhbmdlZCBMU19SSlQgdG8gc3RydWN0IGxzX3JqdC4KKwkqIENoYW5nZWQgQ1NQIHRvIHN0cnVjdCBjc3AuCisJKiBDaGFuZ2VkIENMQVNTX1BBUk1TIHRvIHN0cnVjdCBjbGFzc19wYXJtcy4KKwkqIFNvbWUgY29zbWV0aWMgY29kaW5nIHN0eWxlIGNsZWFudXBzIHRvIGxwZmNfZmNwLmMuCisJKiBQcm92aWRpbmcgYSBzeXNmcyBpbnRlcmZhY2UgdGhhdCBkdW1wcyB0aGUgbGFzdCAzMgorCSAgTElOS19bVVB8RE9XTl0gYW5kIFJTQ04gZXZlbnRzLgorCSogR2V0IHJpZCBvZiBkZWxheV9pb2RvbmUgdGltZXIuCisJKiBSZW1vdmUgcWZ1bGwgdGltZXJzIGFuZCBxZnVsbCBsb2dpYy4KKwkqIENvbnZlcnQgbWJveF90bW8sIG5scF94cmlfdG1vIHRvIDEgYXJnbWVudCBjbG9jayBoYW5kbGVyCisJKiBSZW1vdmVkIGR1cGxpY2F0ZSBleHRlcm4gZGVmcyBvZiB0aGUgYmluZCB2YXJpYWJsZXMuCisJKiBTdHJlYW1saW5lIHVzYWdlIG9mIHRoZSBkZWZpbmVzIENMQVNTMiBhbmQgQ0xBU1MzLCByZW1vdmluZworCSAgdW4tbmVjZXNzYXJ5IGNoZWNrcyBvbiBjb25maWdbTFBGQ19DRkdfRkNQX0NMQVNTXS4KKwkqIE1vdmluZyB0aGUgcGVyc2lzdGVudCBiaW5kaW5nIHZhcmlhYmxlcyB0byBuZXcgZmlsZQorCSAgbHBmY19kZWZhdWx0cy5jCisJKiBDaGFuZ2VkIExQRkNfU0NTSV9CVUZfdCB0byBzdHJ1Y3QgbHBmY19zY3NpX2J1Zi4KKwkqIE1vdmVkIGNvbmZpZyBzcGVjaWZpYyBjb2RlIGZyb20gcHJvYmVfb25lKCkgaW50bworCSAgY29uZmlnX3NldHVwKCkuIFJlbW92aW5nIGEgcmVkdW5kYW50IGNoZWNrIG9uIHNjYW5kb3duIHZhbHVlCisJICBmcm9tIGJpbmRfc2V0dXAoKSBhcyB0aGlzIGlzIGFscmVhZHkgZG9uZSBpbiBjb25maWdfc2V0dXAoKS4KKwkqIENoYW5nZWQgTFBGQ19TTElfdCB0byBzdHJ1Y3QgbHBmY19zbGkuCisJKiBDaGFuZ2VkIEZDUF9DTU5EIHRvIHN0cnVjdCBmY3BfY21uZC4KKwkqIENoYW5nZWQgRkNQX1JTUCB0byBzdHJ1Y3QgZmNwX3JzcC4KKwkqIFJlbW92ZSB0aGUgbmVlZCBmb3IgYnVmX3Rtby4KKwkqIENoYW5nZWQgVUxQX0JERTY0IHRvIHN0cnVjdCB1bHBfYmRlNjQuCisJKiBDaGFuZ2VkIFVMUF9CREUgdG8gc3RydWN0IHVscF9iZGUuCisJKiBDbGVhbnVwIGxwZmNfb3NfcmV0dXJuX3Njc2lfY21kKCkgYW5kIGl0cyBjYWxsIHBhdGguCisJKiBSZW1vdmVkIGxwZmNfbm9fZGV2aWNlX2RlbGF5LgorCSogQ29uc29saWRhdGluZyBscGZjX2hiYV9wdXRfZXZlbnQoKSBpbnRvIGxwZmNfcHV0X2V2ZW50KCkuCisJKiBSZW1vdmVkIGZvbGxvd2luZyBhdHRyaWJ1dGVzIGFuZCB0aGVpciBmdW5jdGlvbmFsaXR5OgorCSAgbHBmY19leHRyYV9pb190bW8sIGxwZmNfbm9kZXZfaG9sZGlvLCBscGZjX2RlbGF5X3JzcF9lcnIsCisJICBscGZjX3RndF9xdWV1ZV9kZXB0aCBhbmQgbHBmY19jaGVja19jb25kX2Vyci4KKwkqIENsb2NrIGNoYW5nZXMgY29uc29saWRhdGluZyB0aW1lcnMsIGp1c3QgaW4gdGhlIHN0cnVjdCBscGZjX2hiYSwKKwkgIHRvIGdldCByaWQgb2YgY2xrRGF0YSBhbmQgcGFzcyBvbmx5IG9uZSBhcmd1bWVudCB0byB0aW1lb3V0CisJICByb3V0aW5lLiBBbHNvLCByZW1vdmluZyBuZWVkIGZvciBvdXRzdGFuZGluZyBjbG9jayBsaW5rZWQgbGlzdAorCSAgdG8gc3RvcCB0aGVzZSB0aW1lcnMgYXQgcm1tb2QuCisJKiBNb3ZlIGxwZmMuY29uZiBjb250ZW50cyBpbnRvIGxwZmNfZmNwLmMuIFJlbW92aW5nIHBlciBhZGFwdGVyCisJICBhdHRyaWJ1dGVzIGluIGZhdm9yIG9mIGdsb2JhbCBhdHRyaWJ1dGVzLgorCSogRml4IGEgcG90ZW50aWFsIG51bGwgcG9pbnRlciByZWZlcmVuY2Ugb2YgcG1idWYgaW4gbHBmY19jdC5jLgorCSogT24gcmVzZXRfbHVuLCBpc3N1ZSBMVU5fUkVTRVQgYXMgb3Bwb3NlZCB0byBBQk9SVF9UQVNLX1NFVC4KKwkqIFJlbW92ZWQgU0NTSV9SRVFfVE1PIHJlbGF0ZWQgY29kZS4KKwkqIEludHJvZHVjaW5nIHR3byBuZXcgZGVmaW5lcyBMUEZDX0FUVFJfUiBhbmQgTFBGQ19BVFRSX1JXIHRoYXQgZG8KKwkgIGEgbW9kdWxlX3BhcmFtLCBNT0RVTEVfUEFSTV9ERVNDLCBscGZjX3BhcmFtX3Nob3csCisJICBbbHBmY19wYXJhbV9zdG9yZV0gYW5kIENMQVNTX0RFVklDRV9BVFRSSUJVVEUuCisJKiBQcm9wZXJseSBjbGVhbiB1cCB3aGVuIGFsbG9jYXRpb24gb2YgYSBsaW5rZWQgQkRFIGZhaWxzIGluIHRoZQorCSAgU0NTSSBxdWV1ZWNvbW1hbmQgcGF0aC4KKwkqIEZhaWwgU0NTSSBjb21tYW5kIGlmIGRtYV9tYXBfc2cgY2FsbCBmYWlscy4KKwkqIFJlbW92ZSB1bnVzZWQgbWFjcm9zIFNXQVBfQUxXQVlTIGFuZCBTV0FQX0FMV0FZUzE2LgorCSogUmVzZXQgY29udGV4dDIgdG8gMCBvbiBleGl0IGluCisJICBscGZjX3NsaV9pc3N1ZV9pb2NiX3dhaXRfaGlnaF9wcmlvcml0eSgpIGFuZAorCSAgbHBmY19zbGlfaXNzdWVfaW9jYl93YWl0KCkuCisJKiBBcnJhbmdpbmcgbHBmY19zY3NpcG9ydC5jIHRvIGZvbGxvdyBzdHlsZSBvZiB1c2UgYWZ0ZXIKKwkgIGRlZmluaXRpb24uIFRoaXMgcmVtb3ZlcyB0aGUgbmVlZCBmb3IgdGhlIGNydWZ0IG9mIGZvcndhcmQKKwkgIGRlY2xhcmF0aW9ucy4gQWxzbyByZW1vdmluZyBhIHJlZHVuZGFudCAjZGVmaW5lIFNjc2lSZXN1bHQgYXMgaXQKKwkgIGFscmVhZHkgYXZhaWxhYmxlIGVsc2V3aGVyZS4KKwkqIEFwcGx5aW5nICJTdHJlYW1saW5lIGxwZmMgZXJyb3IgaGFuZGxpbmciIHBhdGNoIGZyb20gQ2hyaXN0b3BoCisJICBIZWxsd2lnIChoY2hAaW5mcmFkZWFkLm9yZykgd2l0aCBmb2xsb3dpbmcgbW9kaWZpY2F0aW9uczogZml4CisJICBtZW0gbGVha3MsIHJlbW92ZSBzb21lIG1pc3BsYWNlZCBjb2RlIHRoYXQgbmVlZCBub3QgYmUgdGhlcmUsCisJICBwcmludCBhIG1lc3NhZ2Ugb24gZXhpdCAob2xkIGNvZGUgcHJpbnRzIHR3byAoZW50cnkvZXhpdCkpLCBtYWtlCisJICByZXQgdmFsdWVzIGNvbnNpc3RlbnQgKGVpdGhlciAxLzAgb3IgU1VDQ0VTUy9GQUlMVVJFKSwga2VlcCBhbGwKKwkgIGVoIHJvdXRpbmVzIGluIGEgc2luZ2xlIGZpbGUgKGxwZmNfc2NzaXBvcnQuYykuCisJKiBNb3ZlIGNvbnRlbnRzIG9mIGxwZmNfbW9kdWxlX3BhcmFtLmggaW50byBscGZjX2ZjcC5jLgorCSogQ2hhbmdlZCBzeXNmcyBhdHRyaWJ1dGVzIHRvIENMQVNTX0RFVklDRV9BVFRSSUJVVEVTIChwcmV2aW91c2x5CisJICBERVZJQ0VfQVRUUklCVVRFUykuIFRoZXkgbm93IGFwcGVhciBpbgorCSAgL3N5cy9jbGFzcy9zY3NpX2hvc3QvaG9zdHggKHByZXZpb3VzbHkgaW4KKwkgIC9zeXMvYnVzL3BjaS9kcml2ZXJzL2xwZmMvZGV2eCkuCisJKiBSZW1vdmVkIGxwZmNfc3lmcy5oIGFuZCBscGZjX3N5c2ZzLmMuCisJKiBDbGVhbnVwIG9mIGNvbmZpZyBwYXJhbXMuICBUaHJvdHRsZSBwYXJhbXMgaGF2ZSBiZWVuIHJlbW92ZWQuCisJICBtYXhfbHVuIGhhcyBiZWVuIHJlbW92ZWQuIG1heF90YXJnZXQgaXMgcmVwbGFjZWQgd2l0aCBhICNkZWZpbmUsCisJICBsdW5fc2tpcCBpcyByZW1vdmVkLiAgUmVtb3ZlIGlwZmMgY29uZmlnIHBhcmFtcyBhbmQgcmVsYXRlZAorCSAgY29kZS4KKwkqIENoYW5nZWQgRE1BQlVGX3QgdXNhZ2UgdG8gc3RydWN0IGxwZmNfZG1hYnVmLgorCSogRG93bnNpemluZyBpQ2ZnUGFyYW0gc3RydWN0dXJlIHRvIGluY2x1ZGUgYV9zdHJpbmcsIGFfbG93LCBhX2hpCisJICBhbmQgYV9kZWZhdWx0IHZhbHVlcyBvbmx5LgorCSogRnJlZSBTQ1NJIGJ1ZiBzYWZldHkgbWVtb3J5IHBvb2wgb24gc2h1dGRvd24gdG8gZWxpbWluYXRlIG1lbW9yeQorCSAgbGVhay4KKwkqIENoYW5nZSBscGZjX3ByaW50Zl9sb2cgdG8gYSAjZGVmaW5lLiBBbHNvIGluY2x1ZGUgcGhiYS0+YnJkX25vCisJICBhbmQgbmV3bGluZSBpbiB0aGUgcHJpbnQgc3RyaW5nIHJhdGhlciB0aGFuIGluIHRoZSAjZGVmaW5lLgorCSogUmVtb3ZlIGNvZGUgdGhhdCBvcHRpb25hbGx5IGxvY2F0ZXMgSG9zdCBHcm91cCBQb2ludGVycyBpbiBob3N0CisJICBtZW1vcnkgU0xJTSBzaW5jZSB0aGlzIGlzIG5vIGxvbmdlciBuZWVkZWQgZm9yIFBQQzY0LCBvbmNlCisJICBDT05GSUdfUE9SVCB1c2VzIEhCQSdzIHZpZXcgb2YgaXRzIEJBUjAuCisJKiBSZW1vdmVkIHRoZSBmb3J3YXJkIGRlY2xhcmF0aW9ucyBvZiB0aGUgc2xpIGZ1bmN0aW9ucyBhbmQKKwkgIHJlYXJyYW5naW5nIHRoZSBjb2RlIGluIGxwZmNfc2xpLmMuCisJKiBSZW1vdmVkIHRoZSBwcmVhbWJsZSBmdW5jdGlvbmFsaXR5IGZyb20gbG9nZ2luZy4KKwkqIE1ha2UgbHBmY19zbGlfaGJhX3NldHVwKCkgcmV0dXJuIG5lZ2F0aXZlIGVycm9yIGNvZGVzIG9uIGVycm9yCisJICBhbmQgY29ycmVjdCB0aGUgY29tbWVudCBsZWZ0IG92ZXIgaW4gbHBmY19mY3AuYworCSogUmVtb3ZlZCB0aGUgbHBmY19sb2FkdGltZSB2YXJpYWJsZS4KKwkqIFB1dCBhIHNwYWNlIGJldHdlZW4gYWxsIGlmcyBhbmQgdGhlaXIgb3BlbiBwYXJlbnMgJygnLgorCSogQ2hhbmdlIFN0dWRseV9DYXBzIExQRkNfU0NTSV9CVUZfdCB0byBzdHJ1Y3QgbHBmY19zY3NpX2J1Zi4KKwkqIEZpeGVkIGluc21vZCBoYW5nIGFmdGVyIGhhcmR3YXJlIGVycm9yLgorCSogUmVsb2NhdGVkIHNjc2lfaG9zdCBhbGxvYyB0byBiZWZvcmUgd2UgZW5hYmxlIHRoZSBpbnRlcnJ1cHQKKwkgIGhhbmRsZXIKKwkqIEFkZCAudG1wX3ZlcnNpb25zIGRpcmVjdG9yeSB0byBNYWtlZmlsZSBjbGVhbiB0YXJnZXQuICBUaGlzCisJICBkaXJlY3RvcnkgaXMgY3JlYXRlZCBpbiB0aGUgMi42LjUrIGJ1aWxkIHByb2Nlc3MgKHdpdGggUmVkIEhhdAorCSAga2VybmVscyBhdCBsZWFzdCkuCisJKiBDaGFuZ2luZyBwaGJhLT5jb25maWcgdG8ga21hbGxvYyBscGZjX2ljZmdwYXJhbSBhbmQgbm90CisJICAqcGhiYS0+Y29uZmlnLiBUaGlzIGlzIG1hbmlmZXN0aW5nIGl0c2VsZiBhcyBhIHBhbmljIGluCisJICBwY2lfcmVsZWFzZV9yZWdpb24oKS4KKwkqIEZpeCBmb3IgZmlybXdhcmUgZG93bmxvYWQgLyBib2FyZCByZXNldCBwcm9ibGVtLgorCSogSW50ZWdyYXRlZCBwYXRjaCBmcm9tIENocmlzdG9waCBIZWxsd2lnIChoY2hAaW5mcmFkZWFkLm9yZykgdG8KKwkgIHJlb3JnYW5pemUgYW5kIGNsZWFudXAgbHBmY19mY3AuYworCSogRG9uJ3QgYWJvcnQgY29tbWFuZHMgaW1tZWRpYXRlbHkgd2hlbiB0aGVyZSBpcyBhbiBSU0NOIGV2ZW50IHRvCisJICBnaXZlIGRyaXZlciB0aW1lIHRvIHJlZGlzY292ZXIgdGFyZ2V0cyBiZWZvcmUgdGhlIG1pZGxheWVyCisJICByZXRyaWVzIHRoZSBTQ1NJIGNvbW1hbmRzLgorCitDaGFuZ2VzIGZyb20gMjAwNDA2MDQgdG8gMjAwNDA2MTQKKworCSogQ2hhbmdlZCB2ZXJzaW9uIG51bWJlciB0byA4LjAuNAorCSogUmVtb3ZlZCBscGZjX3ZhbGlkX2x1biBmdW5jdGlvbi4KKwkqIEFkZGVkIHNjc2lfYnVmIHNhZmV0eSBwb29sIHRvIGFkZHJlc3Mgc2NzaV9idWYgZmFpbHVyZXMgaW4KKwkgIHF1ZXVlY29tbWFuZCB1bmRlciBsb3cgbWVtb3J5IGNvbmRpdGlvbnMuICBBbGxvY2F0aW9ucyBub3cgY29tZQorCSAgZnJvbSBrbWFsbG9jIGluaXRpYWxseSwgYnV0IGlmIGttYWxsb2MgZmFpbHMsIHRoZSBhbGxvY2F0aW9uCisJICBjb21lcyBmcm9tIHRoZSBzYWZldHkgcG9vbC4KKwkqIE1vZGlmaWVkIGxwZmNfc2xhdmVfYWxsb2MgdG8gb25seSBzZXQgdGhlIHNjc2lfZGV2aWNlLT5ob3N0ZGF0YQorCSAgcG9pbnRlciBpZiB0aGUgZHJpdmVyIGhhcyBkaXNjb3ZlcmVkIHRoZSB0YXJnZXQuICBUaGlzIHJvdXRpbmUKKwkgIGFsd2F5cyByZXR1cm5zIHN1Y2Nlc3Mgbm93IGFzIHdlbGwgc2luY2Ugbm8gZXJyb3IgZXZlciBvY2N1cnMgaW4KKwkgIHRoZSBhbGxvYyByb3V0aW5lLgorCSogTWFzayBvbmx5IGluZm8gYW5kIHdhcm5pbmcgbWVzc2FnZXMuICBQcmludCBhbGwgZXJyb3IgbWVzc2FnZXMKKwkgIGlycmVzcGVjdGl2ZSBvZiBtYXNrLgorCSogUmVtb3ZpbmcgbHBmY19sb2dfY2hrX21zZ19kaXNhYmxlZCgpCisJKiBDaGFuZ2VkIGxwZmNfcHJpbnRmX2xvZyB0byB0YWtlIHN0cnVjdCBscGZjX2hiYSAqIGRpcmVjdGx5CisJICBpbnN0ZWFkIG9mIGEgImJvYXJkIG51bWJlciIuCisJKiBDb252ZXJ0IGRtYV9zeW5jX3NpbmdsZSB0byBwY2lfZG1hX3N5bmNfc2luZ2xlX2Zvcl97ZGV2aWNlL2NwdX0uCisJKiBJbXBsZW1lbnRlZCBuZXcgc3R5bGUgbG9nIG1lc3NhZ2VzLiBUaGUgbWVzc2FnZSBzdHJpbmdzIGFyZSBub3cKKwkgIGVtYmVkZGVkIGluIHRoZSBjYWxsIHRvIGxwZmNfcHJpbnRmX2xvZy4KKwkqIERlY3JlYXNlZCBGTE9HSSBkaXNjb3ZlcnkgdGltZW91dCB0byAyMCBzZWNvbmRzLgorCSogT24gZXJyb3IgaW4gbHBmY19wY2lfcHJvYmVfb25lKCkgcmV0dXJuIC0xIGFuZCBub3QgMS4KKwkqIEFsbG93IGZvciBib2FyZCBudW1iZXJzIHRoYXQgYXJlIG5vdCBzZXF1ZW50aWFsLCBwYXZpbmcgdGhlIHdheQorCSAgZm9yIGhvdHBsdWcgc3VwcG9ydC4KKwkqIHNjc2lfYWRkX2hvc3QoKSBjYW4gZmFpbCwgc28gd3JhcCBpdCBhcm91bmQgaW4gYW4gaWYoKS4gQWxzbworCSAgaW5pdGlhdGUgc2NzaV9zY2FuX2hvc3QoKSBhZnRlciBhdHRhY2hpbmcgdGhlIHN5c2ZzIGF0dHJpYnV0ZXMuCisJKiBscGZjX3JlbGVhc2VfdmVyc2lvbiBpcyB1c2VkIG9ubHkgaW4gbHBmY19jdC5jLCBzbyBtb3ZlIGl0IHRoZXJlCisJICBhbmQgbWFyayBpdCBhcyBzdGF0aWMuCisJKiBSZW1vdmVkIGxwZmNfc2xlZXBfbXMgYW5kIHJlcGxhY2VkIHdpdGggbWRlbGF5IG9yIHNjaGVkdWxlIGNhbGxzCisJICBkaXJlY3RseQorCSogUmVtb3ZlZCBhbGwgKHN0cnVjdCBsaXN0X2hlYWQgKikgY2FzdHMgZnJvbSBjbGtEYXRhLXJlbGF0ZWQgbGlzdAorCSAgaGFuZGxpbmcgaW4gbGlzdF9hZGQsIGxpc3RfZGVsIG1hY3Jvcy4KKwkqIFJlbW92ZWQgRVhQT1JUX1NZTUJPTHMuCisJKiBSZW1vdmVkIExQRkNfTUlOX1FGVUxMIGFuZCBscGZjX3F0aHJvdHRsZV91cC4KKwkqIFJlcGxhY2UgTFBGQ1NDU0lUQVJHRVRfdCB3aXRoIHN0cnVjdCBscGZjX3RhcmdldC4KKwkqIFJlcGxhY2UgTFBGQ1NDU0lMVU5fdCB3aXRoIHN0cnVjdCBscGZjX2x1bi4KKwkqIFJlbW92ZSB1bnVzZWQgc3RydWN0IGRlY2xhcmF0aW9ucyAoZmNQYXRoSWQgYW5kIGZjUm91dGVJZCkgZnJvbQorCSAgbHBmY19zY3NpLmguCisJKiBSZXdyaXRlIHVzZSBvZiBGQyB0cmFuc3BvcnQgYXR0cmlidXRlcy4KKwkqIEZpeCBjcmFzaCB3aGVuIGxpbmsgaXMgbG9zdC4gIFRoaXMgd2FzIGR1ZSB0byBscGZjX2RlbGF5X2lvZG9uZQorCSAgY2FsbGluZyBsaXN0X2RlbCBvbiBhbiBvYmplY3QgdGhhdCB3YXMgbmV2ZXIgcHV0IG9uIGEgbGlzdC4KKwkqIFJlbW92ZSB0cmFpbGluZyBzcGFjZXMgYXQgdGhlIGVuZCBvZiBhbGwgbGluZXMuCisJKiBTZXQgTUFYX0ZDUF9UQVJHRVQgdG8gMjU2IGZyb20gMHhmZi4gIFNldCBNQVhfRkNQX0xVTiBhbmQKKwkgIE1BWF9GQ1BfQ01EUyB0byB0aGVpciBkZWNpbWFsIGVxdWl2YWxlbnRzIGFuZCB1cGRhdGVkCisJICBkb2N1bWVudGF0aW9uLgorCitDaGFuZ2VzIGZyb20gMjAwNDA1MjYgdG8gMjAwNDA2MDQKKworCSogQ2hhbmdlZCB2ZXJzaW9uIG51bWJlciB0byA4LjAuMworCSogQ29tcGxldGVkIHN5c2ZzIEZDIHRyYW5zcG9ydCBzdXBwb3J0LgorCSogUmVtb3ZlZCB1bnVzZWQgZmllbGRzIGluIFNDU0kgTFVOIGFuZCBTQ1NJIFRhcmdldCBzdHJ1Y3R1cmVzOgorCSAgdm9pZCAqcFRhcmdldFByb3RvOyB2b2lkICpwVGFyZ2V0T1NFbnY7IHZvaWQgKnBMdW5PU0VudjsKKwkqIE1vZGlmaWVkIGxpc3RfZm9yX2VhY2ggdG8gbGlzdF9mb3JfZWFjaF9lbnRyeS4gTW9kaWZpZWQKKwkgIGxpc3RfZm9yX2VhY2hfc2FmZSB0byBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUuCisJKiBSZW1vdmUgbHBmY19kZmMuaCBmaWxlLgorCSogQ2hhbmdlZCBwSGJhLT5waGJhLCBwQ29tbWFuZC0+cGNtZAorCSogQ2hhbmdlZCBwbG9naV9uZGxwIC0+IHBsb2dpbmRscCwgcG9zX3RtcC0+cG9zdG1wLCBwUnNwLT5wcnNwLAorCSAgcENtZC0+cGNtZAorCSogQ2hhbmdlZCBwVGV4dCAtPiBwdGV4dAorCSogQ2hhbmdlZCBwX3RtcF9idWZmIC0+IHB0bXBidWZmCisJKiBDaGFuZ2VkIHBCdWZMaXN0IC0+IHBidWZsaXN0LCBwUnNwIC0+IHByc3AsIHBDbWQgLT4gcGNtZAorCSogQ2hhbmdlZCAqcG9zX3RtcCAtPiAqcG9zdG1wLCAqcF9tYnVmIC0+ICpwbWJ1ZgorCSogRm9sbG93aW5nIGNoYW5nZXMgYXJlIG1hZGUgdG8gdGhlIFNDU0kgZmFzdCBwYXRoOiBBZGRlZAorCSAgRE1BX0JVRl90IG1lbWJlciB0byB0aGUgbHBmY19zY3NpX2J1Zl90LiAgVGhpcyB3aWxsIHJlZHVjZSBhCisJICBtZW1vcnkgYWxsb2NhdGlvbiBpbiB0aGUgc2NzaSBmYXN0IHBhdGguICBBZGRlZCBjaGVjayBmb3IKKwkgIHRhcmdldHAgPT0gTlVMTCBpbiB0aGUgc2NzaSBmYXN0IHBhdGguICBJbmNyZWFzZWQgbnVtYmVyIG9mCisJICBzY2F0dGVyIGdhdGhlciBlbnRyaWVzIGluIGxwZmNfc2NzaV9kbWFfZXh0IHRvIDQgZnJvbSAzIGFuZAorCSAgY2hhbmdlZCB0aGUgc2l6ZSBvZiBscGZjX3Njc2lfZG1hX2V4dCB0byAyNjQKKwkqIEZpeGluZyBzb21lIG1pc3Npbmcgc3RhdGljIGxwZmNfbnBvcnRkaXNjLmMuCisJKiBSZW9yZGVyZWQgI2luY2x1ZGUgbGluZXMgc28gdGhhdCBscGZjLmggZG9lc24ndCBoYXZlIHRvICNpbmNsdWRlCisJICBvdGhlciBoZWFkZXIgZmlsZXMuCisJKiBSZW1vdmUgbHBmY19nZXRfaGJhX3N5bV9ub2RlX25hbWUoKSBhcyBhIGdsb2JhbCBFWFBPUlQgYW5kIG1ha2UKKwkgIGl0IHN0YXRpYy4KKwkqIE1vdmUgc3RydWN0IGNsa19kYXRhIGRlZmluaXRpb24gZnJvbSBscGZjX2h3LmggdG8gbHBmY19zbGkuaC4KKwkqIENoYW5nZWQgTFBGQ19JT0NCUV90IHRvIHN0cnVjdCBscGZjX2lvY2JxLgorCSogQ2hhbmdlZCBMUEZDX1NMSV9SSU5HX3QgdG8gc3RydWN0IGxwZmNfc2xpX3JpbmcuCisJKiBDaGFuZ2VkIExQRkNfTk9ERUxJU1RfdCB0byBzdHJ1Y3QgbHBmY19ub2RlbGlzdC4KKwkqIFJlYXJyYW5nZWQgbHBmY19ucG9ydGRpc2MuYyBieSBtb3Zpbmcgc3RhdGUgbWFjaGluZSBhcnJheQorCSAgKGxwZmNfZGlzY19hY3Rpb24pIGFuZCB0aGUgb25lIGZ1bmN0aW9uIHRoYXQgdXNlcyBpdCwKKwkgIGxwZmNfZGlzY19zdGF0ZV9tYWNoaW5lLCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlLCByZW1vdmluZyB0aGUKKwkgIG5lZWQgZm9yIHRoZSByYWZ0IG9mIHByb3RvdHlwZXMgYXQgdGhlIHRvcC4KKwkqIENoYW5nZWQgTFBGQ19CSU5ETElTVF90IHRvIHN0cnVjdCBscGZjX2JpbmRsaXN0LgorCSogUmVtb3ZlZCBscGZjX2lzc3VlX2N0X3JzcCgpLCBscGZjX3NsZWVwKCksIGxwZmNfYWRkX2JpbmQoKSwKKwkgIGxwZmNfZGVsX2JpbmQoKSwgbHBmY19zbGlfd2FrZV9tYm94X3dhaXQoKSBhbmQKKwkgIGxwZmNfc2xpX2lzc3VlX21ib3hfd2FpdCgpLgorCSogRml4ZWQgYSBsYXJnZSBudW1iZXIgb2Ygb3Zlcmx5LWxvbmcgbGluZXMuCisJKiBGaXhlZCBzb21lIGRpc2NvdmVyeSBwcm9ibGVtczogSW50cm9kdWNlZCBkZWZlcnJlZCBuZGxwIHJlbW92YWwKKwkgIHdoZW4gaW4gRFNNIHRvIGF2b2lkIHBhbmljIHdoZW4gaW4gbmVzdGVkIERNU3MgRml4IE5wb3J0SWQKKwkgIGZmZmMwMSBoYW5kbGluZyB0byBub3QgcmVsb2dpbiBhZnRlciBMT0dPIGZpeGVkIGhhbmRsaW5nIG9mIExPR08KKwkgIG9uIFBMT0dJIGlzc3VlLgorCSogQ2hhbmdlZCBTTElfQ1RfUkVRVUVTVCB0byBscGZjX3NsaV9jdF9yZXF1ZXN0LgorCSogQ2hhbmdlZCBOQU1FX1RZUEUgdG8gc3RydWN0IGxwZmNfbmFtZS4KKwkqIENoYW5nZWQgbHBmY0NmZ1BhcmFtX3QgdG8gc3RydWN0IGxwZmNfY2ZncGFyYW0uCisJKiBDaGFuZ2VkIExQRkNfU1RBVF90IHRvIHN0cnVjdCBscGZjX3N0YXRzLgorCSogQ2hhbmdlZCBIQkFFVlRfdCB0byBzdHJ1Y3QgbHBmY19oYmFfZXZlbnQuCisJKiBDaGFuZ2VkIFN0dWRseV9DYXBzIGxwZmNIQkFfdCB0byBzdHJ1Y3QgbHBmY19oYmEuCisJKiBSZW1vdmVkIG5vIGxvbmdlciB1c2VkIHRhc2tsZXRfcnVubmluZyBmbGFnLgorCSogUmVtb3ZpbmcgKlBTT01FX1ZBUiB0eXBlZGVmcyBhbmQgdXNpbmcgU09NRV9WQVIqIGRpcmVjdGx5LgorCSogQ2hhbmdpbmcgLnVzZV9jbHVzdGVyaW5nIHRvIEVOQUJMRV9DTFVTVEVSSU5HLgorCSogTW9kaWZ5IGxwZmNfcXVldWVjb21tYW5kIHRvIHJldHVybiBTQ1NJX01MUVVFVUVfSE9TVF9CVVNZIHdoZW4KKwkgIGl0IGNhbid0IHF1ZXVlIGEgU0NTSSBjb21tYW5kLiAgQWxzbywgcmVtb3ZlIGNtbmRzX2luX2ZsaWdodAorCSAgbWVtYmVyIG9mIHN0cnVjdCBscGZjSEJBIGZvciAyLjYga2VybmVscyBhcyBpdCB3YXMgb25seSBuZWVkZWQKKwkgIHRvIGRldGVybWluZSB3aGF0IHRvIHJldHVybiBmcm9tIHF1ZXVlY29tbWFuZC4KKwkqIENoYW5nZSByZXR1cm4gdHlwZSBvZiBscGZjX2V2dF9pb2NiX2ZyZWUgdG8gdm9pZCBhcyBpdCBkb2Vzbid0CisJICByZXR1cm4gYW55dGhpbmcuCisJKiBSZW1vdmUgdW51c2VkIGNtbmRfcmV0cnlfbGlzdCBhbmQgaW5fcmV0cnkgbWVtYmVycyBpbiBzdHJ1Y3QKKwkgIGxwZmNIQkEuCisJKiBSZW1vdmUgc29tZSBpbnN0YW5jZXMgb2YgdW5uZWVkZWQgY2FzdGluZyBvZiBrbWFsbG9jJ3MgcmV0dXJuIGluCisJICBscGZjX3Njc2lwb3J0LmMKKwkqIFJlbW92ZSBscGZjX2xpbnV4X2F0dGFjaCgpIGFuZCBscGZjX2xpbnV4X2RldGFjaCgpLiBJbnRlZ3JhdGUKKwkgIHRoZW0gaW50byBscGZjX3Byb2JlX29uZSgpIGFuZCBscGZjX3JlbGVhc2Vfb25lKCkgcmVzcGVjdGl2ZWx5LgorCSogUmVtb3ZlIGxwZmNfbnVtX2lvY2JzLCBscGZjX251bV9idWZzIG1vZHVsZSBwYXJhbWV0ZXJzCisJKiBSZW1vdmUgI2RlZmluZXMgZm9yIE5VTV9OT0RFUywgTlVNX0JVRlMgYW5kIE5VTV9JT0NCUworCitDaGFuZ2VzIGZyb20gMjAwNDA1MTUgdG8gMjAwNDA1MjYKKworCSogQ2hhbmdpbmcgdmVyc2lvbiBudW1iZXIgdG8gOC4wLjIuCisJKiBJbmNsdWRpbmcgZG1hLW1hcHBpbmcuaCBhcyBvbmUgb2YgdGhlIGluY2x1ZGUgaGVhZGVycy4gIEFsc28KKwkgIHJlYXJyYW5nZSB0aGUgI2luY2x1ZGUgb3JkZXIuCisJKiBNYWtlIGZ1bmN0aW9ucyBzdGF0aWMgYXMgYXBwcm9wcmlhdGUuCisJKiBxdWV1ZWNvbW1hbmQoKSB3aWxsIG5vdyByZXR1cm4gU0NTSV9NTFFVRVVFX0hPU1RfQlVTWSBpbnN0ZWFkIG9mCisJICAxIHRvIGJhY2twcmVzc3VyZSBtaWRsYXllci4KKwkqIFJlbW92ZWQgZnVuY3Rpb24gcHJvdG90eXBlcyBmb3IgbHBmY19zdGFydF90aW1lcigpIGFuZAorCSAgbHBmY19zdG9wX3RpbWVyKCkKKwkqIENoYW5nZWQgdGltZXIgc3VwcG9ydCB0byBiZSBpbmxpbmUuICBDbGtfZGF0YSBpcyBub3cgZGVjbGFyZWQKKwkgIHJpZ2h0IG5leHQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdGltZXJfbGlzdCBlbnRyeSBzbyB3ZSBkb24ndAorCSAgaGF2ZSB0byBhbGxvY2F0ZSB0aGVzZSBjbGtfZGF0YSBkeW5hbWljYWxseS4KKwkqIEFkZCByZWFkbHMgYWZ0ZXIgd3JpdGVscyB0byBQQ0kgc3BhY2UgdG8gZmx1c2ggdGhlIHdyaXRlcy4KKwkqIEZpeCBtaXNzcGVsbGVkIHdvcmQgInNhZmV0eSIgaW4gZnVuY3Rpb24gbmFtZXMuCisJKiBGaXggdXAgY29tbWVudHMgaW4gbHBmYy5jb25mIGZvciBwZXIgSEJBIHBhcmFtZXRlcnMgdG8gcmVmbGVjdAorCSAgbmV3IGltcGxlbWVudGF0aW9uLgorCSogQ2hhbmdlIGxwZmNfcHJvY19pbmZvIGhhbmRsZXIgdG8gZ2V0IHRoZSBOb2RlbmFtZSBmcm9tCisJICBmY19ub2RlbmFtZSBhbmQgbm90IGZjX3BvcnRuYW1lLgorCSogRml4IHVwIHNvbWUgY29tbWVudHMgYW5kIHdoaXRlc3BhY2UgaW4gbHBmY19mY3AuYy4KKwkqIEZvcm1hdHRpbmcgY2hhbmdlczogZ2V0IHJpZCBvZiBsZWFkaW5nIHNwYWNlcyBpbiBjb2RlCisJKiBNb3ZlIGRpc2NvdmVyeSBwcm9jZXNzaW5nIGZyb20gdGFza2xldCB0byBhIGtlcm5lbCB0aHJlYWQuCisJKiBNb3ZlIG5kbHAgbm9kZSBmcm9tIHVubWFwIGxpc3QgdG8gbWFwIGxpc3QgaWYgQURJU0MgY29tcGxldGVkCisJICBzdWNjZXNzZnVsbHkuCisJKiBGbHVzaCBhbGwgdGhlIEVMUyBJT0NCcyB3aGVuIHRoZXJlIGlzIGEgbGluayBldmVudC4KKwkqIExQOTgwMiBxZGVwdGggaXMgdHdpY2UgdGhlIExQOTgwMkRDIHFkZXB0aC4gIERlbGF5CisJICBlbHhfc2NoZWRfaW5pdCBhZnRlciBSRUFEX0NPTkZJRyB0byBnZXQgbWF4X3hyaSBmcm9tIHRoZQorCSAgZmlybXdhcmUuICBSZXNldCBFTFhfQ0ZHX0RGVF9IQkFfUV9ERVBUSCB0byBtYXhfeHJpIGFmdGVyCisJICBSRUFEX0NPTkZJRworCSogRml4IGZjX2dldF9jZmdfcGFybSgpIHRvIGJlIG1vcmUgcm9idXN0IGFuZCBzdXBwb3J0IGVtYmVkZGVkIGhleAorCSAgdmFsdWVzLiAgVGhlIGxwZmNfcGFyYW0ncyBhcmUgbm93IGRlZmluZWQgYXM6CisJICBscGZjX2xvZ192ZXJib3NlPSJscGZjOjAsbHBmYzA6MHgxMCxscGZjMTo0LGxwZmMxMDA6MHhmZmZmIiBUaGUKKwkgICIsIiBkZWxpbXRlciBkb2VzIG5vdCBtYXR0ZXIuIEl0IGNhbiBiZSBhbnl0aGluZyBvciBub3QgZXhpc3QgYXQKKwkgIGFsbC4gaWUgcGFyYW0gPSAibHBmYzowbHBmYzA6MHgxMC5scGZjMTo0dHh0bHBmYzEwMDoweGZmZmYiIHdpbGwKKwkgIGFsc28gd29yay4gIEFkZGl0aW9uYWxseSB0aGUgc3RyaW5nIGlzIHRyZWF0ZWQgYXMgY2FzZQorCSAgaW5zZW5zaXRpdmUuCisJKiBDaGFuZ2VkIGFsbCB1c2FnZSBvZiBscGZjX2ZpbmRfbHVuX2RldmljZSgpIHRvIGxwZmNfZmluZF9sdW4oKS4KKwkqIFJlbW92ZWQgdW5uZWNlc3Nhcnkgd3JhcHBlcnMgbHBmY19maW5kX2x1bl9kZXZpY2UoKSBhbmQKKwkgIGxwZmNfdHJhbl9maW5kX2x1bigpLgorCSogU3dpdGNoIGZyb20gdXNpbmcgaW50ZXJuYWwgYnVzL2lkL2x1biB0byBzaW1pbGFyIGRhdGEgZnJvbQorCSAgc2NzaV9kZXZpY2Ugc3RydWN0dXJlLgorCSogRWxpbWluYXRlIG9uZS1saW5lIGZ1bmN0aW9uIGxwZmNfZmluZF90YXJnZXQoKQorCSogQWRkZWQgc2xhdmVfYWxsb2MsIHNsYXZlX2Rlc3RvcnkKKwkqIGxwZmNfc2NzaV9jbWRfc3RhcnQgY2FuIG5vdyBhY3F1aXJlIGx1biBwb2ludGVyIGZyb20KKwkgIHNjc2lfZGV2aWNlLT5ob3N0ZGF0YSwgd2hpY2ggaXMgc2V0dXAgaW4gc2xhdmVfYWxsb2MuCisJKiBFbGltaW5hdGUgdW5uZWNlc3NhcnkgY2hlY2tpbmcgb24gZXZlcnkgY21kIGp1c3QgdG8gc2VlIGlmIHdlCisJICBhcmUgYWNjZXNzaW5nIHRoZSBkZXZpY2UgdGhlIGZpcnN0IHRpbWUuCisJKiBSZW1vdmUgYXNzdW1wdGlvbiBpbiBscGZjX3Jlc2V0X2x1bl9oYW5kbGVyIHRoYXQgYSB2YWxpZAorCSAgbHBmY19zY3NpX2J1ZiBpcyBodW5nIG9mZiBvZiBsaW51eCdzIHNjc2lfY21uZC0+aG9zdF9zY3JpYmJsZQorCSAgd2hlbiBvdXIgcmVzZXQgaXMgY2FsbGVkLgorCitDaGFuZ2VzIGZyb20gMjAwNDA1MDcgdG8gMjAwNDA1MTUKKworCSogQ2hhbmdlZCB2ZXJzaW9uIHRvIDguMC4xCisJKiBGaXhlZCBjcmFzaCBvbiBkcml2ZXIgcm1tb2QgYWZ0ZXIgZXJyb3IgaW5qZWN0aW9uIHRlc3RzIGFuZAorCSAgbHBmY190YXNrbGV0IGRlYWRsb2NrLgorCSogTW9kaWZpZWQgbHBmYy5jb25mIHRvIHJlbW92ZSBsaW1pdCBvbiBudW1iZXIgb2Ygc3VwcG9ydCBob3N0cworCSogUmVtb3ZlZCBIQkFBUEkgCisJKiBSZW1vdmVkIGR1cGxpY2F0aW9uIG9mIFNDU0kgb3Bjb2RlcyBmcm9tIGxwZmNfZmNwLmggdGhhdCBhcmUKKwkgIGF2YWlsYWJsZSBpbiBzY3NpL3Njc2kuaAorCSogUmV3b3JrIG1vZHVsZV9wYXJhbSB1c2FnZQorCSogQWRkZWQgTU9EVUxFX1BBUkFNX0RFU0MgZm9yIHZhcmlvdXMgbW9kdWxlX3BhcmFtcworCSogUmVtb3ZlZCAjZGVmaW5lIEVYUE9SVF9TWU1UQUIKKwkqIFJlbW92ZWQgI2luY2x1ZGVzIG9mIGlmX2FycC5oIGFuZCBydG5ldGxpbmsuaAorCSogUmVtb3ZlZCBzdHJpbmcgIk9wZW4gU291cmNlIiBmcm9tIE1PRFVMRV9ERVNDCisJKiBDbGVhbnVwIGR1cGxpY2F0ZWQgc3RyaW5nIGRlZmluaXRpb25zIHVzZWQgYnkgTU9EVUxFX0RFU0MKKwkqIFJlbmFtZWQgbHBmY19wY2lfW2RldGVjdHxyZWxlYXNlXSB0byBscGZjX3BjaV9bcHJvYmV8cmVtb3ZlXV9vbmUKKwkqIEZpeCBmb3JtYXR0aW5nIG9mIGxwZmNfZHJpdmVyCisJKiBSZW1vdmUgdW5uZWNlc3NhcnkgbWVtc2V0IHRvIDAgb2YgbHBmY0RSVlIKKwkqIEF0dGFjaCBkcml2ZXIgYXR0cmlidXRlcyBhbHdheXMgdW5sZXNzIHBjaV9tb2R1bGVfaW5pdCBmYWlsZWQKKwkqIFJlbW92ZSBhbGwgb25lLWxpbmUgd3JhcHBlcnMgZnJvbSBscGZjX21lbS4KKwkqIFJlbW92ZSBscGZjX3N5c2ZzX3NldF9bc2hvd3xzdG9yZV0gYXMgaXQgaXMgbm8gbG9uZ2VyIG5lZWRlZAorCSogUmVkbyBscGZjX3N5c2ZzX3BhcmFtc19bc2hvd3xzdG9yZV0gdG8gb25lIHZhbHVlIHBlciBhdHRyaWJ1dGUgcnVsZQorCSogQnJlYWtkb3duIGxwZmNfc3lzZnNfaW5mb19zaG93IGludG8gc21hbGxlciBvbmUgdmFsdWUgcGVyIGF0dHJpYnV0ZQorCSogVXNlIGRldmljZSBhdHRyaWJ1dGVzIGluc3RlYWQgb2YgZHJpdmVyIGF0dHJpYnV0ZXMgd2hlcmUgYXBwcm9wcmlhdGUKKwkqIFJlbW92ZSBubyBsb25nZXIgbmVlZGVkIEVYUE9SVF9TWU1CT0xzCisJKiBSZW1vdmUgc29tZSB1bnVzZWQgY29kZSAoMTYwMCBtc2cncyByZWxhdGVkKQorCitDaGFuZ2VzIGZyb20gMjAwNDA0MjkgdG8gMjAwNDA1MDcKKworCSogQ2hhbmdlIHZlcnNpb24gdG8gOC4wLjAKKwkqIEZpeCB0aGUgbnVtYmVyIG9mIGNtZCAvIHJzcCByaW5nIGVudHJpZXMgaW4gbHBmY19mY3AuYyB0byBtYXRjaAorCSAgdGhlIGRpdmlzaW9ucyBzZXR1cCBpbiBscGZjX2h3LmguCisJKiBSZW1vdmUgcGhiYS0+aWZsYWcgcmVmZXJlbmNlLgorCSogU2V2ZXJhbCBsb2NraW5nIGltcHJvdmVtZW50cy4KKwkqIFJlbW92ZSBmdW5jdGlvbnMgbHBmY19kcnZyX2luaXRfbG9jaywgbHBmY19kcnZyX2xvY2ssCisJICBscGZjX2RydnJfdW5sb2NrIGFuZCBscGZjX2hpcHJpXyouCisJKiBSZW1vdmUgTFBGQ19EUlZSX0xPQ0sgYW5kIExQRkNfRFJWUl9VTkxPQ0sgbWFjcm9zLgorCSogTWFrZSBscGZjX2luZm8oKSB1c2UgbHBmY19nZXRfaGJhX21vZGVsX2Rlc2MoKSBpbnN0ZWFkIG9mCisJICByZXdyaXRpbmcgYWxtb3N0IGlkZW50aWNhbCBjb2RlLgorCSogRml4IDEgb3Zlcmx5IGxvbmcgbGluZSBpbiBlYWNoIG9mIGxwZmNfY2ZncGFybS5oLCBscGZjX2Z0cC5jIGFuZAorCSAgbHBmY19zbGkuYy4KKwkqIEZpeCBidWlsZCBmb3IgUmVkIEhhdCAyLjYuMyBrZXJuZWwgYnkgI2RlZmluaW5nIE1PRFVMRV9WRVJTSU9OCisJICBvbmx5IGlmIGl0IGlzbid0IGFscmVhZHkgZGVmaW5lZC4KKwkqIENoYW5nZSBlbHhfc2xpX2lzc3VlX21ib3hfd2FpdCB0byByZXR1cm4gY29ycmVjdCBlcnJvciBjb2RlIHRvCisJICB0aGUgY2FsbGVyLgorCSogSW4gc29tZSBvZiB0aGUgZWxzIGNvbXBsZXRpb24gcm91dGluZXMsIGFmdGVyIGNhbGxpbmcKKwkgIGxwZmNfZWx4X2Noa19sYXR0LCBkcml2ZXIgaWdub3JlcyB0aGUgcmV0dXJuIGNvZGUgb2YgdGhlCisJICBscGZjX2VseF9jaGtfbGF0dC4gVGhpcyB3aWxsIHByZXZlbnQgdGhlIGRpc2NvdmVyeSBzdGF0ZSBtYWNoaW5lCisJICByZXN0YXJ0aW5nIGNvcnJlY3RseSB3aGVuIHRoZXJlIGFyZSBsaW5rIGV2ZW50cyBpbiB0aGUgbWlkZGxlIG9mCisJICBkaXNjb3Zlcnkgc3RhdGUgbWFjaGluZSBydW5uaW5nLiBGaXggdGhpcyBieSBleGl0aW5nIGRpc2NvdmVyeQorCSAgc3RhdGUgbWFjaGluZSBpZiBscGZjX2Vsc19jaGtfbGF0dCByZXR1cm5zIGEgbm9uIHplcm8gdmFsdWUuCisJKiBSZW1vdmVkIE1BWF9MUEZDX0JSRFMgZnJvbSBscGZjX2RpYWcuaAorCSogUmVtb3ZlZCB1bnVzZWQgZmlyc3RfY2hlY2suCisJKiBSZW1vdmUgc29tZSB1bnVzZWQgZmllbGRzIGFuZCBkZWZpbmVzLgorCSogQ2hhbmdlIGxwZmMtcGFyYW0gbmFtZXMgdG8gbHBmY19wYXJhbS4KKwkqIEFkZCB1c2Ugb2YgTU9EVUxFX1ZFUlNJT04gbWFjcm8gZm9yIDIuNiBrZXJuZWxzLgorCSogU2hvcnRlbiBsZW5ndGggb2Ygc29tZSBvZiB0aGUgY29tbWVudCBsaW5lcyB0byBtYWtlIHRoZW0gbW9yZQorCSAgcmVhZGFibGUuCisJKiBNb3ZlIEZDUF8qIGRlZmluaXRpb25zIHRvIHRoZWlyIG93biBoZWFkZXIgZmlsZSwgbHBmY19mY3AuaC4KKwkqIFJlbW92ZSB1bnVzZWQgcHJvdG90eXBlcyBmcm9tIGxwZmNfY3J0bi5oOiBmY3B0c3QsIGlwdHN0LAorCSAgbHBmY19ERUxBWU1TLgorCSogUmVtb3ZlIGR1cGxpY2F0ZWQgcHJvdG90eXBlcyBmcm9tIGxwZmNfY3J0bi5oOgorCSAgbHBmY19jb25maWdfcG9ydF9wcmVwLCBscGZjX2NvbmZpZ19wb3J0X3Bvc3QsCisJICBscGZjX2hiYV9kb3duX3ByZXAuCisJKiBSZW1vdmVkIHNvbWUgdW51c2VkIGV4cG9ydF9zeW1ib2xzLgorCSogSW5zdGFsbCBkcml2ZXIgZmlsZXMgaW50byAqL2RyaXZlcnMvc2NzaS9scGZjIGluc3RlYWQgb2YKKwkgICovZHJpdmVycy9zY3NpLgorCitDaGFuZ2VzIGZyb20gMjAwNDA0MjYgdG8gMjAwNDA0MjkKKworCSogRGVjbGFyZWQgZXhwb3J0IHN5bWJvbCBscGZjX3BhZ2VfYWxsb2MgYW5kIGxwZmNfcGFnZV9mcmVlCisJKiBDaGFuZ2VkIGxwZmMgdmVyc2lvbiBudW1iZXIgdG8gNi45OC4zCisJKiBNb3ZlIHRoZSBkZWZpbml0aW9uIG9mIE1BWF9MUEZDX0JSRFMgdG8gdGhlIG9ubHkgaGVhZGVyIGZpbGUKKwkgIHRoYXQgdXNlcyBpdCAobHBmY19kaWFnLmgpLgorCSogQ2hhbmdlIGxwZmNfc2xpX3dha2VfaW9jYl93YWl0IHRvIGRvIGEgcmVndWxhciB3YWtlX3VwIHNpbmNlCisJICBscGZjX3NsaV9pc3N1ZV9pb2NiX3dhaXQgbm93IHNsZWVwcyB1bmludGVycnVwdGlibGUuCisJKiBSZXBsYWNlIGxpc3RfZm9yX2VhY2goKSB3aXRoIGxpc3RfZm9yX2VhY2hfc2FmZSgpIHdoZW4gYSBsaXN0CisJICBlbGVtZW50IGNvdWxkIGJlIGRlbGV0ZWQuCisJKiBGaXggSU9DQiBtZW1vcnkgbGVhaworCitDaGFuZ2VzIGZyb20gMjAwNDA0MTYgdG8gMjAwNDA0MjYKKworCSogQ2hhbmdlIGxwZmNfY29uZmlnX3BvcnRfcHJlcCgpIHRvIGludGVycHJldCB3b3JkIDQgb2YgdGhlIERVTVAKKwkgIG1ib3ggcmVzcG9uc2UgYXMgYSBieXRlLWNvdW50CisJKiBBZGQgaW5mbyBhdHRyaWJ1dGUgdG8gc3lzZnMKKwkqIE1pbm9yIGZvcm1hdHRpbmcgKHNwYWNlcyB0byB0YWJzKSBjbGVhbnVwIGluIGxwZmNfc2NoZWQuaAorCSogUmVtb3ZlIHVudXNlZCBsb2cgbWVzc2FnZSBudW1iZXIgNzMyCisJKiBDb21wbGV0aW5nIE1PRFVMRV9QQVJNIC0+IG1vZHVsZV9wYXJhbSBjaGFuZ2VzCisJKiBSZW1vdmVkIHVudXNlZCB0YXJnZXRlbmFibGUgbW9kdWxlIHBhcmFtZXRlcgorCSogUmVtb3ZlZCBsb2NrcyBmcm9tIGxwZmNfc2xpX2lzc3VlX21ib3hfd2FpdCByb3V0aW5lCisJKiBSZW1vdmVkIGNvZGUgdGhhdCByZXRyeSAyOSwwMCBjaGVjayBjb25kaXRpb24KKwkqIFJlbW92ZWQgY29kZSB0aGF0IG1hbmlwdWxhdGVzIHJzcFNuc0xlbi4KKwkqIEZpeCB1c2Ugb2YgbHVuLXEtZGVwdGggY29uZmlnIHBhcmFtCisJKiBGaXggc2V2ZXJpdHkgaW5jb25zaXN0ZW5jeSB3aXRoIGxvZyBtZXNzYWdlIDI0OQorCSogUmVtb3ZlZCBscGZjX21heF90YXJnZXQgZnJvbSBscGZjX2xpbnV4X2F0dGFjaAorCSogUmVwbGFjZSByZWZlcmVuY2VzIHRvIGxwZmNEUlZSLnBIYmFbXSB3aXRoIGxwZmNfZ2V0X3BoYmFfYnlfaW5zdCgpCisJKiBDaGFuZ2UgbHBmY19wYXJhbSB0byBscGZjLXBhcmFtCisJKiBQYXJ0aWFsbHkgcmVtb3ZlZCAzMiBIQkEgcmVzdHJpY3Rpb24gd2l0aGluIGRyaXZlci4gIEluY29ycG9ydGVkCisJICBscGZjX2luc3RjbnQsIGxwZmNfaW5zdGFuY2VbXSwgYW5kIHBIYmFbXSBpbnRvIGxwZmNEUlZSCisJICBzdHJ1Y3R1cmUgQWRkZWQgcm91dGluZXMgbHBmY19nZXRfcGhiYV9ieV9pbnN0KCkKKwkgIGxwZmNfZ2V0X2luc3RfYnlfcGhiYSgpIGxwZmNfY2hlY2tfdmFsaWRfcGhiYSgpCisJKiBUdXJuIG9uIGF0dHJpYnV0ZXMgInNldCIgJiAicGFyYW1zIiBieSBkZWZhdWx0LgorCSogRnVydGhlciBmb3JtYXR0aW5nL3doaXRlc3BhY2UvbGluZSBsZW5ndGggY2xlYW51cCBvbjogbHBmY19jdC5jCisJICBscGZjX2Vscy5jIGxwZmNfZmNwLmMgbHBmY19oYmFkaXNjLmMgbHBmY19pbml0LmMgbHBmY19pcHBvcnQuYworCSAgbHBmY19tYm94LmMgbHBmY19ucG9ydGRpc2MuYyBscGZjX3NjaGVkLmMgbHBmY19zY2hlZC5oCisJICBscGZjX3Njc2kuaCBscGZjX3Njc2lwb3J0LmMgbHBmY19zbGkuYyBhbmQgbHBmY19zbGkuaAorCSogQWRkIGxvZyBtZXNzYWdlIDI0OSB0byBsb2cgYW55IHVuc3VwcG9ydGVkIGRldmljZSBhZGRyZXNzaW5nCisJICBtb2RlcyBlbmNvdW50ZXJlZC4KKwkqIEFkZCBzdXBwb3J0IGZvciAyNTYgdGFyZ2V0cyBhbmQgMjU2IExVTnMKKwkqIEZpeGVkIHBhbmljIGluIGxwZmNfbGlua2Rvd24uCisJKiBSZW1vdmVkIChzdHJ1Y3QgbGlzdF9oZWFkKikgY2FzdGluZyBpbiBzZXZlcmFsIGNhbGxzIHRvIGxpc3RfZGVsCisJKiBGcmVlIGlycSByZXNlcnZhdGlvbiBhbmQga2lsbCBydW5uaW5nIHRpbWVycyB3aGVuIGluc21vZCBvcgorCSAgbW9kcHJvYmUgYXJlIGtpbGxlZCB2aWEgY3RybC1jCisJKiBSZW1vdmUgZHJpdmVycy9zY3NpIGZyb20gaW5jbHVkZSBwYXRoCisJKiBXcmFwIHVzZSBvZiBsb2cgbWVzc2FnZSAzMTEgaW4gbWFjcm8KKwkqIERldGVjdCBmYWlsdXJlIHJldHVybiBmcm9tIHBjaV9tYXBfc2cgY2FsbCBpbiBscGZjX29zX3ByZXBfaW8KKwkqIEZpeCB1c2UtYWZ0ZXItZnJlZSBvZiBJT0NCIGluIGxwZmNfc2xpX3Byb2Nlc3Nfc29sX2lvY2Igd2hpY2gKKwkgIHdhcyBjYXVzaW5nIGFuIE9vcHMgb24gMi42LjUga2VybmVsLgorCSogQ2xlYW51cCB1c2Ugb2Ygc2V2ZXJhbCBnb3RvcyBub3QgdXNlZCBmb3IgZXJyb3IgZXhpdC4KKwkqIFJlcGxhY2UgbWVtY3B5X3RvaW8oKSBhbmQgbWVtY3B5X3RvaW8oKSB3aXRoIGVuZGlhbi1kZXBlbmRlbnQKKwkgIGxwZmNfbWVtY3B5X3RvX3NsaW0oKSBhbmQgbHBmY19tZW1jcHlfZnJvbV9zbGltKCkgc28gdGhhdCBmb3IKKwkgIGJpZyBlbmRpYW4gaG9zdHMgbGlrZSBQUEM2NCwgdGhlIFNMSU0gaXMgYWNjZXNzZWQgNCBieXRlcyBhdCBhCisJICB0aW1lIGluc3RlYWQgb2YgYXMgYSBieXRlLXN0cmVhbS4KKworQ2hhbmdlcyBmcm9tIDIwMDQwNDA5IHRvIDIwMDQwNDE2CisKKwkqIFRoZSBzY3NpX3JlZ2lzdGVyIGFuZCBzY3NpX2FsbG9jX2hvc3QgT1MgY2FsbHMgY2FuIGZhaWwgYW5kCisJICByZXR1cm4gYSB6ZXJvLXZhbHVlZCBob3N0IHBvaW50ZXIuICBBIGN0cmwtQyBvbiAyLjYga2VybmVscworCSAgZHVyaW5nIGRyaXZlciBsb2FkIHdpbGwgY2F1c2UgdGhpcyBhbmQgdGhlIGRyaXZlciB0byBwYW5pYy4KKwkgIEZpeGVkIHRoaXMgYnVnLiAgQWxzbyBmb3VuZCBhIGJ1ZyBpbiB0aGUgZXJyb3JfeCBoYW5kbGluZyB3aXRoCisJICBscGZjX3NsaV9oYmFfZG93biAtIGl0IHdhcyBpbiB0aGUgd3JvbmcgcGxhY2UgYW5kIHRoZSBkcml2ZXIKKwkgIGxvY2sgd2FzIG5vdCBoZWxkLCBidXQgbmVlZGVkIHRvIGJlIChpbiBscGZjX2xpbnV4X2F0dGFjaCkgRml4ZWQKKwkgIGJvdGguICBEaWQgc29tZSBtaW5vciBjb21tZW50IGNsZWFuIHVwLgorCSogUmVtb3ZlZCB1bndhbnRlZCAodm9pZCAqKSBjYXN0aW5ncy4KKwkqIFJlcGxhY2UgZGVmaW5lIG9mIElOVkFMSURfUEhZUywgd2l0aCBrZXJuZWwgMi42LjUncworCSAgZG1hX21hcHBpbmdfZXJyb3IoKSBhbmQgYWRkIGEgaW5saW5lIGZ1bmN0aW9uIGZvciBlYXJsaWVyCisJICBrZXJuZWxzLiAgUmVtb3ZlIGxwZmNfYmFkX3NjYXR0ZXJsaXN0KCkuCisJKiBDbGVhbiB1cCBmb3JtYXR0aW5nIGluIGhiYWFwaS5oLCBscGZjLmgsIGxwZmNfY2ZncGFybS5oLAorCSAgbHBmY19jcnRuLmgsIGxwZmNfY3QuYywgbHBmY19kaWFnLmgsIGxwZmNfZGlzYy5oLCBscGZjX2Vscy5jLAorCSAgbHBmY19mY3AuYywgbHBmY19oYmFkaXNjLmMsIGxwZmNfaHcuaCwgbHBmY19pbml0LmMsCisJICBscGZjX2lwcG9ydC5jLCBscGZjX2xvZ21zZy5jLCBscGZjX2xvZ21zZy5oIGFuZCBscGZjX3Njc2lwb3J0LmMKKwkgIC0gbW9zdGx5IHJlcGxhY2luZyBncm91cHMgb2YgOCBzcGFjZXMgd2l0aCBoYXJkIHRhYnMgYW5kIGtlZXBpbmcKKwkgIGxpbmVzIHRvIDgwIGNvbHVtbiBtYXguLgorCSogUmVtb3ZlZCBMUEZDX0RSVlJfTE9DSyBjYWxsIGZyb20gbHBmY191bmJsb2NrX3JlcXVlc3RzIGZvciAyLjQKKwkgIGtlcm5lbHMuICBUaGUgbHBmY19zY3NpX2RvbmUgcm91dGluZSBhbHJlYWR5IHVubG9ja3MgdGhlIGRyaXZlcgorCSAgbG9jayBzaW5jZSBpdCBleHBlY3RzIHRoaXMgbG9jayB0byBiZSBoZWxkLgorCSogUmVtb3ZlZCBnbG9iYWwgbG9jayBjYXBhYmlsaXRpZXMgZnJvbSBkcml2ZXIgbG9jayByb3V0aW5lcworCSogUmVtb3ZlIFNBX0lOVEVSUlVQVCBmbGFnIGZyb20gcmVxdWVzdF9pcnEKKwkqIE1vdmUgZG1hX2FkZHJfdCBjYXN0IGluc2lkZSBvZiBnZXRQYWRkciBtYWNybyBhcyBldmVyeXdoZXJlCisJICBnZXRQYWRkciBpcyB1c2VkLCB0aGUgcmV0dXJuIGlzIGNhc3QgdG8gZG1hX2FkZHJfdC4KKwkqIENsZWFuIHVwIGZvcm1hdHRpbmcgaW4gbHBmY19zbGkuYyBhbmQgbHBmY19zeXNmcy5jIC0gbW9zdGx5CisJICAgcmVwbGFjaW5nIGdyb3VwcyBvZiA4IHNwYWNlcyB3aXRoIGhhcmQgdGFicyBhbmQga2VlcGluZyBsaW5lcworCSAgIHRvIDgwIGNvbHVtbiBtYXguCisJKiBGaXggYnVpbGQgZm9yIFJIRUwgMi4xIEJPT1Qga2VybmVscyBieSBhbHdheXMgI2luY2x1ZGluZworCSAgaW50ZXJydXB0LmggaW4gbHBmYy5oLgorCSogRml4IFJIRUwgMyBidWlsZCBieSAjZGVmaW5pbmcgRVhQT1JUX1NZTVRBQi4KKwkqIFJlcGxhY2Ugc3ByaW50ZiB3aXRoIHNucHJpbnRmIGluIGxwZmNfcHJvY19pbmZvLgorCSogRml4IGJ1aWxkIHdhcm5pbmdzIG9uIDIuNiBrZXJuZWxzIC0gcmVtb3ZlIG5vIGxvbmdlciB1c2VkIGNhbGxzCisJICB0byAgY2hhcmFjdGVyIGRldmljZSBpbml0aWFsaXphdGlvbi4KKwkqIEluaXRpYWwgc3VwcG9ydCBjb2RlIGZvciBkaXNjb3ZlcnkgaW4gdGFza2xldCBjb252ZXJzaW9uLgorCSogUmVtb3ZpbmcgY2hhciBpbnRlcmZhY2UgYW5kIGlvY3RsIGNvZGUuCisJKiBDaGFuZ2UgYWxsIGVseCBwcmVmaXhlcyB0byBscGZjCisJKiBSZXBsYWNlIGxwZmNfd3JpdGVfc2xpbSgpICYgbHBmY19yZWFkX3NsaW0oKSB3aXRoIG1lbWNweV90b2lvKCksCisJICBtZW1jcHlfZnJvbWlvKCksIHdyaXRlbCgpICYgcmVhZGwoKS4KKworQ2hhbmdlcyBmcm9tIDIwMDQwNDAyIHRvIDIwMDQwNDA5CisKKwkqIFJlcGxhY2VkIGxwZmNfcmVhZF9oYmFyZWdzX3BsdXNfb2Zmc2V0IGFuZAorCSAgbHBmY193cml0ZV9oYmFyZWdzX3BsdXNfb2Zmc2V0IGZ1bmN0aW9ucyB3aXRoIHJlYWRsIGFuZCB3cml0ZWwuCisJKiBHZXQgcmlkIG9mIGxvbmcgbWRlbGF5J3MgaW4gaW5zbW9kIHBhdGgKKwkqIENoYW5nZWQgdGhlIHdheSBvdXIgcGNpX2RldmljZV9pZCBzdHJ1Y3R1cmVzIGFyZSBpbml0aWFsaXplZAorCSogUmVwbGFjZSBscGZjX3JlYWQvd3JpdGVfQ0EvSEEvSEMvSFMgd2l0aCBjYWxscyB0byByZWFkbCgpICYKKwkgIHdyaXRlbCgpIGRpcmVjdGx5LgorCSogSW5jcmVhc2UgU0xJMl9TTElNIHRvIDE2SyBJbmNyZWFzZSBjbWQgLyByc3AgSU9DQnMgYWNjb3JkaW5nbHkKKwkqIFJlbW92ZWQgbHBmY19lbHNfY2hrX2xhdHQgZnJvbSB0aGUgbHBmY19jb25maWdfcG9zdCBmdW5jdGlvbi4KKwkgIGxwZmNfZWxzX2Noa19sYXR0IHdpbGwgZW5hYmxlIHRoZSBsaW5rIGV2ZW50IGludGVycnVwdHMgd2hlbgorCSAgZmxvZ2kgaXMgcGVuZGluZyB3aGljaCBjYXVzZXMgdHdvIGRpc2NvdmVyeSBzdGF0ZSBtYWNoaW5lcworCSAgcnVubmluZyBwYXJhbGxlbGx5LgorCSogQWRkIHBjaV9kaXNhYmxlX2RldmljZSB0byB1bmxvYWQgcGF0aC4KKwkqIE1vdmUgbHBmY19zbGVlcF9ldmVudCBmcm9tIGxwZmNfZmNwLmMgdG8gbHBmY191dGlsX2lvY3RsLmMKKwkqIENhbGwgZG1hX21hcF9zaW5nbGUoKSAmIHBjaV9tYXBfc2luZ2xlKCkgZGlyZWN0bHkgaW5zdGVhZCBvZiB2aWEKKwkgIG1hY3JvIGxwZmNfcGNpX21hcCgpLiAgQWxsb3cgYWRkcmVzcyAwIGZvciBQUEM2NC4KKwkqIENoYW5nZSBzbGVlcCB0byB1bmludGVycnVwdGlibGUgaW4gbHBmY19zbGlfaXNzdWVfaWNvYl93YWl0CisJICBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBoYW5kbGUgc2lnbmFscy4KKwkqIE1vdmUgbHBmY193YWtldXBfZXZlbnQgZnJvbSBscGZjX2ZjcC5jIHRvIGxwZmNfaW9jdGwuYworCSogUmVtb3ZlIHVubmVlZGVkICNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4KKwkqIFJlbW92ZSB1bnVzZWQgY2xvY2sgdmFyaWFibGVzIGxwZmNfY2xrQ250IGFuZCBscGZjX3NlY19jbGsuCisJKiBHZXQgcmlkIG9mIGNhcGl0YWxpemF0aW9uIG9mIGZ1bmN0aW9uIG5hbWVzLgorCSogUmVtb3ZlZCBscGZjX2FkZHJfc3ByaW50Zi4KKwkqIEltcGxlbWVudGVkIGdvdG9zIGluIGxwZmNfbGludXhfYXR0YWNoIGZvciBlcnJvciBjYXNlcy4KKwkqIFJlcGxhY2UgbWxpc3QtPmRtYS5saXN0ID0gZG1wLT5kbWEubGlzdDsgdG8gbWxpc3QgPSBkbXAuCisJKiBSZW1vdmUgZnVuY3Rpb25zIGxwZmNfZ2V0X09zTmFtZVZlcnNpb24gYW5kIGVseF93YWtldXAuIENoYW5nZQorCSAgZWx4X3dha2V1cCB0byB3YWtlX3VwX2ludGVycnVwdGlibGUKKwkqIEFkZCBmdW5jdGlvbiBscGZjX2dldF9vc19uYW1ldmVyc2lvbiBhbmQgY2hhbmdlCisJICBscGZjX2dldF9Pc05hbWVWZXJzaW9uIHRvIGxwZmNfZ2V0X29zX25hbWV2ZXJzaW9uLgorCSogUmVtb3ZlIGxwZmNfZ2V0X09zTmFtZVZlcnNpb24KKwkqIENoYW5nZSBkcml2ZXIgbmFtZSB0byBhIGNvbnNpc3RlbnQgbHBmYyBpbiBldmVyeSB2aXNpYmxlIHBsYWNlLgorCSogRml4IGJ1aWxkIHdhcm5pbmc6IHJlbW92ZWQgdW51c2VkIHZhcmlhYmxlIHJldCBpbiBscGZjX2ZkbWlfdG1vLgorCSogUmVtb3ZlIGxwZmNfdXRzbmFtZV9ub2RlbmFtZV9jaGVjayBmdW5jdGlvbgorCSogUmVtb3ZlIGZ1bmN0aW9ucyBscGZjX3JlZ2lzdGVyX2ludHIgYW5kIGxwZmNfdW5yZWdpc3Rlcl9pbnRyCisJKiBGaWxsIGluIG93bmVyIGZpZWxkIGluIGxwZmNfb3BzIGZpbGVfb3BlcmF0aW9ucyBzdHJ1Y3QgYW5kCisJICByZW1vdmUgbm93IHVubmVjZXNzYXJ5IG9wZW4gYW5kIGNsb3NlIGVudHJ5IHBvaW50cy4KKwkqIENoYW5nZSBmdW5jdGlvbiBuYW1lIHByZWZpeGVzIGZyb20gZWx4XyB0byBscGZjXworCSogUmVtb3ZlIHNwZWNpYWwgY2FzZSBjaGVjayBmb3IgVFVSIGluIGVseF9vc19wcmVwX2lvKCkKKwkqIFJlbmFtZWQgZWx4X3Njc2kuaCB0byBscGZjX3Njc2kuaAorCSogUmVuYW1lZCBlbHhfc2NoZWQuaCB0byBscGZjX3NjaGVkLmgKKwkqIFJlbmFtZWQgZWx4X21lbS5oIHRvIGxwZmNfbWVtLmgKKwkqIFJlbmFtZWQgZWx4X3NsaS5oIHRvIGxwZmNfc2xpLmgKKwkqIFJlbmFtZWQgZWx4X2xvZ21zZy5oIHRvIGxwZmNfbG9nbXNnLmgKKwkqIFJlbmFtZWQgZWx4LmggdG8gbHBmYy5oCisJKiBSZW5hbWVkIGVseF9zbGkuYyB0byBscGZjX3NsaS5jCisJKiBSZW5hbWVkIGVseF9zY2hlZC5jIHRvIGxwZmNfc2NoZWQuYworCSogUmVuYW1lZCBlbHhfbWVtLmMgdG8gbHBmY19tZW0uYworCSogUmVuYW1lZCBlbHhfbG9nbXNnLmMgdG8gbHBmY19sb2dtc2cuYworCSogUmVuYW1lZCBscGZjTElOVVhmY3AuYyBscGZjX2ZjcC5jCisJKiBSZW5hbWVkIGVseF9jbG9jay5jIHRvIGxwZmNfY2xvY2suYworCSogUmVkdWNlIHN0YWNrIHVzYWdlIGluIGxwZmNfaW5mbygpLgorCSogTW92ZSBscGlwX3N0YXRzIHN0cnVjdHVyZSBmcm9tIGxwZmNfaGJhLmggdG8gbHBmY19pcC5oLgorCSogTW92ZSBscGZjX3N0YXRzIGFuZCBIQkFFVlRfdCBzdHJ1Y3R1cmVzIGZyb20gbHBmY19oYmEuaCB0bworCSAgbHBmYy5oCisJKiBSZW1vdmUgbHBmY19oYmEuaAorCSogUmVtb3ZlIGR1cGxpY2F0ZSByYyBkZWZpbml0aW9ucyBmcm9tIAorCSogUmVtb3ZlZCBjb2RlIHdoaWNoIHVzZWQgbmV4dCBwb2ludGVyIHRvIHN0b3JlIG1ib3ggc3RydWN0dXJlLgorCSogQ2xlYW5lZCB1cCBsaXN0IGl0ZXJhdGlvbnMuCisJKiBSZW1vdmVkIG5vbiBsaXN0IG1hbmlwdWxhdGlvbiBvZiB0aGUgbmV4dCBwb2ludGVycy4KKwkqIENoYW5nZSBsaXN0X2RlbCgpL0lOSVRfTElTVF9IRUFEIHNlcXVlbmNlcyB0byBsaXN0X2RlbF9pbml0KCkKKwkqIEluIEVMWF9JT0NCUV90OiBNb3ZlZCBoaXByaV90cmlnZ2VyIGZpZWxkIHRvIGlvY2JfZmxhZy4gQ29tYmluZWQKKwkgIGhpcHJpX3dhaXRfcXVldWUgYW5kIHJzcF9pb2NiIGluIHVuaW9uCisJKiBSZXBsYWNlZCBjYXN0aW5nIGZyb20gbGlzdF9oZWFkIHdpdGggbGlzdF9lbnRyeSBtYWNyby4KKwkqIEFkZGVkIGN0X25kbHBfY29udGV4dCBmaWVsZCB0byB0aGUgRUxYX0lPQ0JRX3QuCisJKiBEbyBub3QgdXNlIERNQUJVZl90IGxpc3QgdG8gc3RvcmUgbmRscCBjb250ZXh0CisJKiBSZXR1cm4gMCBmcm9tIGxwZmNfcHJvY2Vzc19pb3RjbF91dGlsKCkgd2hlbiBFTFhfSU5JVEJSRFMKKwkgIHN1Y2NlZWRzLgorCSogcmVtb3ZlIGVseF9vc19zY3NpcG9ydC5oCisJKiBEbyBub3QgdXNlIERNQUJVZl90IGxpc3QgdG8gaG9sZCBycGkgY29udGV4dAorCSogUmVwbGFjZSBlbHhfY2ZnXyogbmFtZXMgd2l0aCBscGZjX2NmZy0qCisJKiBNb3ZlZCBGQ1AgYWN0aXZpdHkgdG8gcmluZyAwLiAgTW92ZWQgRUxTL0NUIGFjdGl2aXR5IHRvIHJpbmcgMi4KKwkqIENsZWFuIHVwIGZvcm1hdHRpbmcgb2YgZWx4X3NsaS5oICh0YWJzIGZvciBpbmRlbnRzLCA4MCBjb2x1bW4KKwkgIGxpbmVzKS4KKwkqIFJlbW92ZSB1bnVzZWQgZWx4Y2xvY2sgZGVjbGFyYXRpb24gaW4gZWx4X3NsaS5oLgorCSogU2luY2UgZXZlcnl3aGVyZSBJT0NCX0VOVFJZIGlzIHVzZWQsIHRoZSByZXR1cm4gdmFsdWUgaXMgY2FzdCwKKwkgIG1vdmUgdGhlIGNhc3QgaW50byB0aGUgbWFjcm8uCisJKiBTcGxpdCBpb2N0bHMgb3V0IGludG8gc2VwYXJhdGUgZmlsZXMKKworQ2hhbmdlcyBmcm9tIDIwMDQwMzI2IHRvIDIwMDQwNDAyCisKKwkqIFVwZGF0ZWQgQ2hhbmdlTG9nIGZvciAyMDA0MDQwMiBTb3VyY2VGb3JnZSBkcm9wLgorCSogVXNlIHNhZmUgbGlzdCBpdGVyYXRvciBmb3IgbmRscCBsaXN0CisJKiBBZGRlZCBjb2RlIHRvIHJldHVybiBOTFBfU1RFX0ZSRUVEX05PREUgZnJvbSB0aGUgZGlzY292ZXJ5CisJICBzdGF0ZSBtYWNoaW5lIGZ1bmN0aW9ucyBpZiB0aGUgbm9kZSBpcyBmcmVlZCBmcm9tIHRoZQorCSAgZnVuY3Rpb24uCisJKiBGaXhlcyB0byBETUFCVUZfdCBoYW5kbGluZworCSogRml4IGZvciBsb2FkIGVycm9yIGluIGRpc2NvdmVyeQorCSogUmVtb3ZlIGxvb3BfY250IHZhcmlhYmxlIGZyb20gbHBmY19yY3ZfcGxvZ2lfdW51c2VkX25vZGUuCisJKiBSZW1vdmUgbmxlLiByZWZlcmVuY2UuCisgICAgICAgICogUmVtb3ZlIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIDIuNCBkcml2ZXJzCisJKiBSZW1vdmUgZWx4X3V0aWwuaCBhbmQgcmVwbGFjZSBlbHhfZGlzYy5oIHdpdGggbHBmY19kaXNjLmgKKwkqIEltcGxlbWVudGVkIHRoZSBMaW51eCBsaXN0IG1hY3JvcyBpbiB0aGUgZGlzY292ZXJ5IGNvZGUuCisJICBBbHNvIG1vdmVkIGVseF9kaXNjLmggY29udGVudHMgaW50byBscGZjX2Rpc2MuaAorCSogVW51c2VkIHZhcmlhYmxlIGNsZWFudXAKKwkqIFVzZSBMaW51eCBsaXN0IG1hY3JvcyBmb3IgRE1BQlVGX3QKKwkqIEJyZWFrIHVwIGlvY3RscyBpbnRvIDMgc2VjdGlvbnMsIGRmYywgdXRpbCwgaGJhYXBpCisJICByZWFycmFuZ2VkIGNvZGUgc28gdGhpcyBjb3VsZCBiZSBlYXNpbHkgc2VwYXJhdGVkIGludG8gYQorCSAgZGlmZmVybmV0IG1vZHVsZSBsYXRlciBBbGwgMyBhcmUgY3VycmVudGx5IHR1cm5lZCBvbiBieQorCSAgZGVmaW5lcyBpbiBscGZjX2lvY3RsLmMgTFBGQ19ERkNfSU9DVEwsIExQRkNfVVRJTF9JT0NUTCwKKwkgIExQRkNfSEJBQVBJX0lPQ1RMCisJKiBNaXNjIGNsZWFudXA6IHNvbWUgZ290bydzOyBhZGQgY29tbWVudHM7IGNsYXJpZnkgZnVuY3Rpb24KKwkgIGFyZ3MKKwkqIEFkZGVkIGNvZGUgdG8gdXNlIGxpc3QgbWFjcm8gZm9yIEVMWFNDU0lUQVJHRVRfdC4KKwkqIE5ldyBsaXN0IGltcGxlbWVudGF0aW9uIGZvciBFTFhfTUJPWFFfdAorCSogQ2xlYW5lZCB1cCBzb21lIGxpc3RfaGVhZCBjYXN0aW5nLgorCSogUHV0IElQRkMgaWZkZWYgYXJvdW5kIHR3byBtZW1iZXJzIG9mIHN0cnVjdCBscGZjX25vZGVsaXN0LgorCSogQ2xlYW5lZCB1cCBpb2NiIGxpc3QgdXNpbmcgbGlzdCBtYWNyb3MgYW5kIGxpc3RfaGVhZCBkYXRhCisJICBzdHJ1Y3R1cmUuCisJKiBscGZjX29ubGluZSgpIHdhcyBtaXNzaW5nIHNvbWUgdGltZXIgcm91dGluZXMgdGhhdCB3ZXJlCisJICBzdGFydGVkIGJ5IGxwZmNfbGludXhfYXR0YWNoKCkuICBUaGVzZSByb3V0aW5lcyBhcmUgbm93IGFsc28KKwkgIHN0YXJ0ZWQgYnkgbHBmY19vbmxpbmUoKS4gIGxwZmNfb2ZmbGluZSgpIG9ubHkgc3RvcHBlZAorCSAgZWxzX3RpbWVvdXQgcm91dGluZS4gIEl0IG5vdyBzdG9wcyBhbGwgdGltZW91dCByb3V0aW5lcworCSAgYXNzb2NpYXRlZCB3aXRoIHRoYXQgaGJhLgorCSogUmVwbGFjZSBzZXBhcmF0ZSBuZXh0IGFuZCBwcmV2IHBvaW50ZXJzIGluIHN0cnVjdAorCSAgbHBmY19iaW5kbGlzdCB3aXRoIGxpc3RfaGVhZCB0eXBlLiAgSW4gZWx4SEJBX3QsIHJlcGxhY2UKKwkgIGZjX25scGJpbmRfc3RhcnQgYW5kIF9lbmQgd2l0aCBmY19ubHBiaW5kX2xpc3QgYW5kIHVzZQorCSAgbGlzdF9oZWFkIG1hY3JvcyB0byBhY2Nlc3MgaXQuCisJKiBGaXggdWxwU3RhdHVzIGZvciBhYm9ydGluZyBJL09zIG92ZXJsYXBzIHdpdGggbmV3ZXIgZmlybXdhcmUKKwkgIHVscFN0YXR1cyB2YWx1ZXMKKwkqIFJld29yayBwYXJhbXNfc2hvdy9zdG9yZSB0byBiZSBjb25zaXN0ZW50IGFzIHRoZSBvdGhlcgorCSAgcm91dGluZXMuICBSZW1vdmUgZ2VuZXJpYyduZXNzIGFuZCByZWx5IG9uIHNldCBhdHRyaWJ1dGUuCisJKiBSZW1vdmUgdW51c2VkIGxvZyBtZXNzYWdlLgorCSogQ29sbGFwc2UgZWx4X2NydG4uaCBhbmQgcHJvZF9jcnRuLmggaW50byBscGZjX2NydG4uaAorCSogSWZkZWYgU2NoZWR1bGVyIHNwZWNpZmljIHJvdXRpbmVzCisJKiBSZW1vdmVkIGZvbGxvd2luZyB1bnVuc2VkIGlvY2x0J3M6IEVMWF9SRUFEX0lPQ0IKKwkgIEVMWF9SRUFEX01FTVNFRyBFTFhfUkVBRF9CSU5GTyBFTFhfUkVBRF9FSU5WQUwgRUxYX1JFQURfTEhCQQorCSAgRUxYX1JFQURfTFhIQkEgRUxYX1NFVCBFTFhfREJHIExQRkNfVFJBQ0UgCisJKiBSZW1vdmVkIHZhcmlhYmxlIGZjX2RiZ19mbGcKKwkqIEZpeGVkIGEgYnVnIHdoZXJlIEhCQV9RX0RFUFRIIHdhcyBzZXQgaW5jb3JyZWN0bHkgZm9yCisJICAzLWRpZ2l0IEhCQXMuICBBbHNvIGNoYW5nZWQgY2FuX3F1ZXVlIHNvIG1pZGxheWVyIHdpbGwgb25seQorCSAgc2VuZCAoSEJBX1FfREVQVEggLSAxMCkgY21kcy4KKwkqIENsZWFuIHVwIGNvZGUgaW4gdGhlIGVycm9yIHBhdGgsIGNoZWNrIGNvbmRpdGlvbi4gIFJlbW92ZQorCSAgdW51bnNlZCBzZW5zZS1yZWxhdGVkIGZpZWxkcyBpbiBsdW4gc3RydWN0dXJlLgorCSogQWRkZWQgY29kZSBmb3Igc2FmZXR5IHBvb2xzIGZvciBmb2xsb3dpbmcgb2JqZWN0czogbWJ1Zi9icGwsCisJICBtYm94LCBpb2NiLCBuZGxwLCBiaW5kCisJKiBXcmFwcGVkICcjaW5jbHVkZSA8ZWx4X3NjaGVkLmg+JyBpbiAnI2lmZGVmIFVTRV9TQ0hFRFVMRVInLgorCSogRml4ZWQgJ21ha2UgY2xlYW4nIHRhcmdldC4KKyAgICAgICAgKiBCdWlsZCBub3cgaWdub3JlcyBlbHhfc2NoZWQubywgYW5kIGluY2x1ZGVzIGxwZmNfc3lzZnMuby4KKwkqIFdyYXBwZWQgbHBmbmRkLm8gdGFyZ2V0IGluIEJVSUxEX0lQRkMgaWZkZWYuCisJKiBSZW1vdmVkIGVseF9vcy5oIGluY2x1c2lvbiBpbiBpbXBsZW1lbnRhdGlvbiBmaWxlcy4KKwkqIFJlbW92ZWQgRUxYX09TX0lPX3QgZGF0YSBzdHJ1Y3R1cmUgYW5kIHB1dCBkYXRhIGRpcmVjdGlvbgorCSAgYW5kIG5vbiBzY2F0dGVyL2dhdGhlciBwaHlzaWNhbCBhZGRyZXNzIGludG8gdGhlIHNjc2kgYnVmZmVyCisJICBzdHJ1Y3R1cmUgZGlyZWN0bHkuICBNb3ZlZCBEUlZSX0xPQ0ssIHB1dFBhZGRyLCBnZXRQYWRkcgorCSAgbWFjcm9zIGFuZCBzb21lIGRlZmluZXMgaW50byBlbHguaCBzaW5jZSB0aGV5IGFyZSByZXF1aXJlZAorCSAgYnkgdGhlIHdob2xlIGRyaXZlci4KKwkqIE1pZ3JhdGVkIGZvbGxvd2luZyBpb2N0bHMgKGRlYnVnKSBFTFhfRElTUExBWV9QQ0lfQUxMCisJICBFTFhfREVWUCBFTFhfUkVBRF9CUExJU1QgRUxYX1JFU0VUX1FERVBUSCBFTFhfU1RBVC4KKwkqIFN0ZXAgMSBvZiBhdHRlbXB0IHRvIG1vdmUgYWxsIERlYnVnIGlvY3RscyB0byBzeXNmcy4KKwkgIEltcGxlbWVudGVkIHRoZSBmb2xsb3dpbmcgSU9DVExzIGluIHN5c2ZzOiBFTFhfV1JJVEVfSEMKKwkgIEVMWF9XUklURV9IUyBFTFhfV1JJVEVfSEEgRUxYX1dSSVRFX0NBIEVMWF9SRUFEX0hDCisJICBFTFhfUkVBRF9IUyBFTFhfUkVBRF9IQSBFTFhfUkVBRF9DQSBFTFhfUkVBRF9NQiBFTFhfUkVTRVQKKwkgIEVMWF9SRUFEX0hCQSBFTFhfSU5TVEFOQ0UgRUxYX0xJUC4gIEFsc28gaW50cm9kdWNlZAorCSAgYXR0cmlidXRlICJzZXQiIHRvIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgYWJvdmUKKwkgIGF0dHJpYnV0ZXMuCisJKiBSZW1vdmVkIERMSU5LLCBlbnF1ZSBhbmQgZGVxdWUgZGVjbGFyYXRpb25zIG5vdyB0aGF0IGNsb2NrCisJICBkb2Vzbid0IHVzZSB0aGVtIGFueW1vcmUKKwkqIFNlcGFyYXRlZCBpbnN0YWxsIHJ1bGUgc28gdGhhdCBCVUlMRF9JUEZDIGhhcyB0byBiZSBzZXQgd2hlbgorCSAgbWFrZSBpcyBjYWxsZWQgaW4gb3JkZXIgZm9yIHRoZSBpbnN0YWxsIHJ1bGUgdG8gYXR0ZW1wdCB0bworCSAgY29weSB0aGUgbHBmbmRkLm8gZHJpdmVyLiAgVGhpcyBjaGFuZ2UgZml4ZXMgYSBidWcgdGhhdAorCSAgb2NjdXJzIGJlY2F1c2UgdGhlIGluc3RhbGwgcnVsZSBieSBkZWZhdWx0IGF0dGVtcHRlZCB0bworCSAgaW5zdGFsbCBscGZuZGQubywgd2hlcmVhcyB0aGUgZGVmYXVsdCBtYWtlIHJ1bGUgZGlkIG5vdCBieQorCSAgZGVmYXVsdCBidWlsZCBscGZuZGQuby4KKwkqIEtlZXAgdHJhY2sgaWYgaGJhYXBpIGluZGV4IG51bWJlcnMgbmVlZCB0byBiZSByZWZyZXNoZWQuCisJKiBSZW1vdmVkIHByb2Rfb3MuaCBmcm9tIGluY2x1ZGUgbGlzdC4KKwkqIFJlbW92ZWQgTFBGQ19MT0NLIGFuZCBMUEZDX1VOTE9DSyBtYWNyb3MuICBBZGRlZCBPUyBjYWxscworCSAgaW50byBlbHhfb3Nfc2NzaXBvcnQuYy4gIFRoaXMgZmlsZSBpcyBub3cgZW1wdHkuCisJKiBBZGRlZCBzcGluX2xvY2tfaXJxc2F2ZSBhbmQgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSBjYWxscworCSAgaW50byBjb2RlIGRpcmVjdGx5IGFuZCByZW1vdmVkIExQRkNfTE9DS18gYW5kIF9VTkxPQ0tfCisJICBtYWNyb3MKKwkqIFJlbW92ZSByZWZlcmVuY2VzIHRvICJlbHhfY2xvY2suaCIKKwkqIEFkZGVkIHV0c25hbWUuaCB0byBpbmNsdWRlIGxpc3QuICBUaGUgcHJldmlvdXMgY2hlY2tpbiB0bworCSAgZWx4X29zLmggcmVtb3ZlZCBpdHMgaW5jbHVzaW9uIG9mIHV0c25hbWUuaCBzaW5jZSB0aGVyZSBpcworCSAgcHJlY2lvdXMgbGl0dGxlIGluIHRoZSBmaWxlLiAgSG93ZXZlciwgbHBmY0xJTlVYZmNwLmMgbmVlZHMKKwkgIGl0IGFuZCBub3cgaGFzIGl0LgorCSogUmVtb3ZlZCBzb21lIGNvbW1lbnRlZC1vdXQgY29kZQorCSogUmVtb3ZlZCBlbHhfbGNrX3QgZGF0YSBzdHJ1Y3R1cmUsIHN0cmF5IGVseERSVlJfdCB0eXBlLCBhbmQKKwkgIGluY2x1ZGUgZnJvbSBmaWxlLiAgTm8gbG9uZ2VyIHVzZWQuCisJKiBSZW1vdmVkIHR3byBQQ0kgU3luYyBkZWZpbmVzLiAgUmVtb3ZlZCBpbmNsdWRlcyAtIG5vdAorCSAgbmVlZGVkLiAgQ2xlYW5lZCB1cCBtYWNybyBsaW5lcy4KKwkqIEFkZGVkIHR3byBmdW5jdGlvbnMgZnJvbSBlbHhMSU5VWGZjcC5jLiAgVGhlc2UgZnVuY3Rpb25zCisJICB3ZXJlIElQRkMgc3BlY2lmaWMuCisJKiBSZW1vdmVkIGhpcHJpIGxvY2sgYWJzdHJhY3Rpb25zIGFuZCBhZGRlZCBPUyBjYWxsIGludG8gY29kZS4KKwkgIFJlbW92ZWQgZWx4X2xja190IGFuZCBhZGRlZCBzcGlubG9ja190IGRpcmVjdGx5LiBNb3ZlZCB0d28KKwkgIElQRkMgZnVuY3Rpb25zIGludG8gbHBmY19pcHBvcnQuYworCSogTW92ZWQgSVAgc3BlY2lmaWMgc3RydWN0dXJlcyB0byBscGZjX2lwLmggZmlsZS4KKwkqIGxwZmNfaXBmYXJwX3RpbWVvdXQoKSB1c2VzIHN5c3RlbSB0aW1lci4gIFJlbW92ZSBhbGwgdXNhZ2VzCisJICBvZiBvbGQgaW50ZXJuYWwgY2xvY2sgc3VwcG9ydC4KKwkqIE1hZGUgY2hhbmdlcyB0byBjb21waWxlIHdpdGhvdXQgSVBGQyBzdXBwb3J0IGZvciB0aGUgZGVmYXVsdAorCSAgYnVpbGQuICBBZGRlZCBpZmRlZiBJUEZDIGZvciBhbGwgbHBmY19pcC5oIGluY2x1ZGVzLgorCSogUGF0Y2hlZCBlbHhfZnJlZV9zY3NpX2J1ZgorICAJKiBSZW1vdmVkIGVseF9zY2hlZC5vIGZyb20gMi42IGRlcGVuZGVuY2llcworCSogUmV3b3JrZWQgbHBmY19wY2ltYXAuCisJKiBVc2UgTGludXggc3dhcCBtYWNyb3MgdG8gcmVwbGFjZSBFTFggc3dhcHBpbmcgbWFjcm9zCisJICAoU1dBUF9TSE9SVCwgU1dBUF9MT05HLCBTV0FQX0RBVEEsIFNXQVBfREFUQTE2LAorCSAgUENJTUVNX1NIT1JULCBQQ0lNRU1fTE9ORywgUENJTUVNX0RBVEEpLgorCSogbW92ZSBpbl9pbnRlcnJ1cHQoKSBjaGVjayBpbnNpZGUgb2YgZWx4X3NsZWVwX21zKCkKKwkqIE1vdmVkIGxvY2F0aW9uIG9mIHBjaS5oIGluY2x1ZGUuCisJKiBSZXN0b3JlZCBlbHhfbGNrX3QgdHlwZXMgaW4gZWx4SEJBX3QuCisJKiBSZW1vdmVkIGVseF9wY2lfZG1hX3N5bmMgY2FsbC4gIEFsc28gcmVtb3ZlZCBzb21lIFBDSQorCSAgZGVmaW5lcyBmcm9tIGVseF9ody5oIGFuZCByZW1vdmVkIHRoZSBzcGlubG9ja190IGxvY2tzIHRoYXQKKwkgIGFyZSBubyBsb25nZXIgdXNlZCBpbiBlbHguaAorCSogZWx4X2lvZG9uZSgpIG5vdyB1c2VzIHN5c3RlbSB0aW1lci4KKyAgCSogZWx4X3FmdWxsX3JldHJ5KCkgbm93IHVzZXMgc3lzdGVtIHRpbWVyLgorCSogbHBmY19wdXRfYnVmKCksIGxwZmNfaXBfeHJpX3RpbWVvdXQoKSBhbmQKKwkgIGxwZmNfaXBfdGltZW91dF9oYW5kbGVyKCkgbm93IHVzZSBzeXN0ZW0gdGltZXIuCisJKiBscGZjX2ZkbWlfdG1vKCkgYW5kIGxwZmNfcXRocm90dGxlX3VwKCkgbm93IHVzZSBzeXN0ZW0KKyAgICAgICAgICB0aW1lci4KKwkqIFJlbW92ZWQgbnVtX2J1ZnMgYW5kIG51bV9pb2NicyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuCisJKiBGaXhlZCBhIG1lbW9yeSBjb3JydXB0aW9uIGJ1Zy4gVGhpcyB3YXMgY2F1c2VkIGJ5IGEgbWVtb3J5CisJICB3cml0ZSB0byBuZGxwIHN0cnVjdHVyZSBmcm9tIGxwZmNfY21wbF9lbHNfYWNjIGZ1bmN0aW9uLgorCSAgVGhpcyBuZGxwIHN0cnVjdHVyZSB3YXMgZnJlZWQgZnJvbSBscGZjX2Vsc191bnNvbF9ldmVudC4KKwkqIGxwZmNfZGlzY190aW1lb3V0KCkgYW5kIGxwZmNfZXN0YWJsaXNoX2xpbmtfdG1vKCkgbm93IHVzZQorCSAgc3lzdGVtIHRpbWVyLiAgQWxzbyB1cGRhdGUgbHBmY19lbHNfcmV0cnlfZGVsYXkoKSB0byBkbyBhCisJICBzaW5nbGUgbG9jayByZWxlYXNlIGF0IHRoZSBlbmQuCisJKiBSZW1vdmUgdXNlIG9mIFBBTiAocHNldWRvIGFkYXB0ZXIgbnVtYmVyKS4KKwkqIFJlaW50cm9kdWNlZCB1c2FnZSBvZiB0aGUgY3Jvc3MgY29tcGlsZXIgZm9yIGJ1aWxkaW5nIG9uCisJICBwcGM2NCB0byByZW1vdmUgYnVpbGQgZXJyb3JzIHRoYXQgd2VyZSBjcm9wcGluZyB1cCB3aGVuCisJICB1c2luZyB0aGUgc3RhbmRhcmQgZ2NjIGNvbXBpbGVyLgorCSogRml4IG5vLXVubG9jay1iZWZvcmUgcmV0dXJuIGluIGxwZmNfZWxzX3JldHJ5X2RlbGF5IHdoaWNoIHdhcworCSAgY2F1c2luZyAgYSBkZWFkbG9jayBvbiBpbnNtb2QgaW4gc29tZSBlbnZpcm9ubWVudHMuCisJKiBNaW5vciBmb3JtYXQgY2hhbmdlcyBmaXggdXAgY29tbWVudHMKKwkqIENyZWF0ZSB1dGlsaXR5IGNsb2NrIGZ1bmN0aW9uIGVseF9zdGFydF90aW1lcigpIGFuZAorCSAgZWx4X3N0b3BfdGltZXIoKS4gIEFsbCB0aW1lb3V0IHJvdXRpbmVzIG5vdyB1c2UgdGhlc2UgY29tbW9uCisJICByb3V0aW5lcy4KKwkqIE1pbm9yIGZvcm1hdGluZyBjaGFuZ2VzIGZpeCB1cCBjb21tZW50cworCSogTWlub3IgZm9ybWF0dGluZyBjaGFuZ2VzIGdldCByaWQgb2YgZmFpbG92ZXIgZGVmaW5lcyBmb3IKKwkgIHN5bnRheCBjaGVja2luZworCSogTWlub3IgZm9ybWF0dGluZyBjaGFuZ2VzIHJlbW92ZSBJU0NTSSBkZWZpbmVzLgorCSogRml4IHR5cG8gaW4gaW5zdGFsbCB0YXJnZXQgZm9yIDIuNCBrZXJuZWxzLgorCSogUmVtb3ZlZCB1bnVzZWQgZWx4X3Njc2lfYWRkX3RpbWVyIGV4dGVybiBmdW5jdGlvbgorCSAgZGVjbGFyYXRpb24uCisJKiBDbGVhbnVwIGNhc3RpbmcgYXJvdW5kIERNQSBtYXNrcy4KKwkqIENvbW1lbnQgb3V0IGxwZm5kZC5vIG1vZHVsZXNfaW5zdGFsbCBzZWN0aW9uIGFzIGxwZm5kZC5vIGlzCisJICBub3QgZ2VuZXJhdGVkIGlmIENPTkZJR19ORVRfTFBGQyBpcyBub3Qgc2V0LiBBbHNvIHJlZmVyIHRvCisJICBCQVNFSU5DTFVERSBvbmx5IGluIG91dCBvZiBrZXJuZWwgc291cmNlIG1vZHVsZSBidWlsZHMgYXMgaXQKKwkgIHdpbGwgbm90IGV4aXN0IG90aGVyd2lzZS4KKwkqIFJlbW92ZWQgdW51c2VkIG1hbGxvYyBjb3VudGVycyBmcm9tIGxwZmNMSU5VWGZjcC5jLgorCSogUmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgI2luY2x1ZGVzIGluIGxwZmNMSU5VWGZjcC5jCisJKiBSZW1vdmUgdW5uY2Vzc2FyeSAjaW5jbHVkZXMgaW4gZWx4TElOVVhmY3AuYworCSogTWlub3IgZm9ybWF0dGluZyBjbGVhbnVwcyBpbiBNYWtlZmlsZSB0byBhdm9pZCBzb21lCisgICAgICAgICAgbGluZXdyYXBwaW5nLgorCSogUmVtb3ZlZCB1bnVzZWQgZWx4X21lbV9wb29sIGRhdGEgc3RydWN0dXJlLgorCSogUmVtb3ZlIHNldmVyYWwgdW5uZWNlc3NhcnkgI2luY2x1ZGVzLgorCSogTW92aW5nIGZpeCBmb3IgbWVtb3J5IGxlYWsgaW4gaW9jdGwgbGlwIGFyZWEgdG8gc3lzZnMncyBsaXAuCisJKiBSZW1vdmVkIHVudXNlZCBlbHhfZG1hX2hhbmRsZV90IGVseF9hY2NfaGFuZGxlX3QKKwkgIEZDX01BWF9TRUdTWiBhbmQgRkNfTUFYX1BPT0wuCisJKiBSZXdyaXRlIG9mIE1ha2VmaWxlLiBGaXhlcyBicmVha2FnZXMgd2l0aCBtYWtlIC1qNCBkdXJpbmcKKwkgIGtlcm5lbCBjb21waWxlLiBEb2VzIG5vdCByZWNvbXBpbGUgYWxsIGZpbGVzIG9uIGV2ZXJ5CisJICBidWlsZC4gVXNlcyB0aGUga2VybmVsIGJ1aWxkJ3MgZGVmaW5pdGlvbnMgb2YgQ0ZMQUdTLAorCSAgTU9ERkxBR1MgZXRjLiBSZW1vdmVkICJtYWtlIHJwbSIgb3B0aW9uLgorCSogUmVtb3ZlZCB1bnVzZWQgI2RlZmluZXMgQ0xPU0VELCBERUFELCBPUEVORUQsIE5PUk1BTF9PUEVOCisJICBhbmQgdW5uZWVkZWQgI2luY2x1ZGUgb2YgZWx4X3NjaGVkLmggaW4gZWx4LmguCisJKiBTZXZlcmFsIGxvZyBtZXNzYWdlIHVwZGF0ZXMKKwkqIEFkZCBQQ0lfREVWSUNFX0lEX0ZJUkVGTFkgZm9yIExQNjAwMAorCSogRml4ZWQga25vd24gaXNzdWVzIGluIDIwMDQwMzI2OiBkcml2ZXIgY3Jhc2hlcyBvbiBybW1vZCBpbgorCSAgYm90aCAyLjQgYW5kIDIuNiBrZXJuZWxzCisJCisKK0NoYW5nZXMgZnJvbSAyMDA0MDMxOSB0byAyMDA0MDMyNgorCisJKiBVcGRhdGVkIENoYW5nZUxvZyBmb3IgMjAwNDAzMjYgU291cmNlRm9yZ2UgZHJvcC4KKwkqIHJlbW92ZSBscGZjX2lzciAvIGxwZmNfdG1yIGxvZ2ljIGZpeGVkIHVwIDggc3BhY2VzIGZyb20KKwkgIHByZXZpb3VzIGNoZWNraW5zIHdpdGggdGFicworCSogcmVwbGFjZSBlbHhfaW5faW50cigpIHdpdGggaW5faW50ZXJydXB0KCkKKwkqIFJlbW92ZSB1bnVzZWQgbWVzc2FnZXMgMTYwMiBhbmQgMTYwMy4KKwkqIEZpeCB0aGUgZm9sbG93aW5nIGlzc3VlcyB3aXRoIGxvZyBtZXNzYWdlczogUmVtb3ZlIHVudXNlZAorCSAgbWVzc2FnZXMgNDA2LCA0MDcsIDQwOSwgOTI3LCA5MjgsIDEyMDEsIDEyMDIsIDEyMDQsIDEyMDUsIDEyMDYKKwkgIGFuZCAxMjA3LiAgQ3JlYXRlIGEgbmV3IG1lc3NhZ2UgNzM4IHRvIGZpeCBkdXBsaWNhdGUgaW5zdGFuY2VzCisJICBvZiA3MzYuCisJKiBSZW1vdmVkIHJlbWFpbmluZyBwY2kgaW50ZXJmYWNlIGFic3RyYWN0aW9ucyBmcm9tIGVseExJTlVYZmNwLmMuCisJICBJbXBsZW1lbnRlZCBPUyBjYWxscyBkaXJlY3RseSBpbiBhbGwgcmVtYWluaW5nIGZpbGVzIGFuZCBjbGVhbmVkCisJICB1cCBtb2R1bGVzLiAgUmVtb3ZlZCBwcm90b3R5cGVzIGFzIHdlbGwuCisJKiBSZW1vdmVkIGZvbGxvd2luZyBmdW5jdGlvbnMvc3RydWN0dXJlcyBlbHhfbWVtX2RtYXBvb2wKKwkgIGVseF9pZHhfZG1hcG9vbCBlbHhfc2l6ZV9kbWFwb29sIGVseF9rbWVtX2xvY2sgZGZjX2RhdGFfYWxsb2MKKwkgIGRmY19kYXRhX2ZyZWUgZGZjX21lbSBzdHJ1Y3QgbWJ1Zl9pbmZvIGVseF9hY2NfaGFuZGxlX3QKKwkgIGRhdGFfaGFuZGxlIGVseF9kbWFfaGFuZGxlX3QgZG1hX2hhbmRsZSBzdHJ1Y3QgZWx4X21lbXNlZworCSAgTUVNU0VHX3QKKwkqIGxwZmNfZWxzX3RpbWVvdXRfaGFuZGxlcigpIG5vdyB1c2VzIHN5c3RlbSB0aW1lci4KKwkqIEZ1cnRoZXIgY2xlYW51cCBvZiAjaWZkZWYgcG93ZXJwYworCSogbHBmY19zY3NpX3RpbWVvdXRfaGFuZGxlcigpIG5vdyB1c2VzIHN5c3RlbSB0aW1lci4KKwkqIFJlcGxhY2UgY29tbW9uIGRyaXZlcidzIG93biBkZWZpbmVzIGZvciBlbmRpYW5uZXNzIHcvIExpbnV4J3MKKwkgIF9fQklHX0VORElBTiBldGMuCisJKiBBZGRlZCAjaWZkZWYgSVBGQyBmb3IgYWxsIElQRkMgc3BlY2lmaWMgY29kZS4KKwkqIGxwZmNfZGlzY19yZXRyeV9ycHRsdW4oKSBub3cgdXNlcyBzeXN0ZW0gdGltZXIuCisJKiBscGZjX25wcl90aW1lb3V0KCkgbm93IHVzZXMgc3lzdGVtIHRpbWVyLgorCSogTW9kaWZpZWQgZGV0ZWN0IGNvZGUsIG9uIGluc21vZCwgdG8gb25seSB3YWl0IGEgbWF4IG9mIDIgc2VjcyBpZgorCSAgbGluayBjb21lcyB1cCBhbmQgdGhlcmUgYXJlIG5vIGRldmljZXMuCisJKiBNb3ZlIHJlbWFpbmluZyBtZXNzYWdlIGxvZ2dpbmcgZnVuY3Rpb25zIGludG8KKwkgIGVseF9sb2dtc2cuYy9lbHhfbG9nbXNnLmguCisJKiBBZGRlZCBjb2RlIHRvIGNsZWFyIGxpbmsgYXR0ZW50aW9uIGJpdCB3aGVuIHRoZXJlIGlzIGEgcGVuZGluZworCSAgbGluayBldmVudCBhbmQgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGZvciByZWFkX2xhIG1haWwgYm94CisJICBjb21tYW5kIGZhaWxzLgorCSogUmVtb3ZlZCBmdW5jdGlvbiBjYWxscyBmb3IgbWFwcGluZyBiYXIgcmVnaXN0ZXJzIGFuZCBhbGxvY2F0aW5nCisJICBrZXJuZWwgdmlydHVhbCBtZW1vcnkgbWFwcGluZ3MgdG8gdGhlIG1hcHBlZCBiYXJzIFJlbW92ZWQKKwkgIHByb3RvdHlwZXMsIGxwZmNfZHJpdmVyX2NhY2hlX2xpbmUsIGFuZCBwY2lfYmFyMV9tYXAgcmVuYW1lIHRvCisJICBwY2lfYmFyMl9tYXAuCisJKiBBbGxvY2F0ZSBtYm94IG9ubHkgaWYgdGhlIGhiYV9zdGF0ZSBpcyBpbiByZWFkeSBzdGF0ZS4KKwkqIENvbXBsZXRlIGxpcCBzdXBwb3J0IHZpYSBzeXNmcy4gVG8gbGlwLCBlY2hvIGJyZG51bSA+CisJICAvc3lzL2J1cy9wY2kvZHJpdmVycy9scGZjL2xpcC4KKwkqIG1vdmluZyBzeXNmcyBzaG93L3N0b3JlIGltcGxlbWVudGF0aW9ucyB0byBscGZjX3N5c2ZzLmMuIEFsc28gYWRkCisJICBzdXBwb3J0IGZvciBsaXAuCisJKiBBZGQgZmlsZXM6IGxwZmNfc3lzZnMuYywgbHBmY19zeXNmcy5oCisJKiBtb3ZlIExQRkNfRFJJVkVSX05BTUUgYW5kIExQRkNfTU9EVUxFX0RFU0Mgb3V0IG9mIGxwZmNMSU5VWGZjcC5jCisJICB0byBscGZjX3ZlcnNpb24uaCwgc2luY2UgaXQgaXMgbm93IG5lZWRlZCBpbiBscGZjX3N5c2ZzLmMKKwkqIGVseF9tYm94X3RpbWVvdXQgbm93IHVzZXMgc3lzdGVtIHRpbWVyCisJKiBDaGFuZ2VkIGxwZmNfbm9kZXZfdGltZW91dCwgbHBmY19lbHNfcmV0cnlfZGVsYXkgYW5kCisJICBscGZjX2xpbmtkb3duX3RpbWVvdXQgdG8gdXNlIHRoZSBzeXN0ZW0gdGltZXIgaW5zdGVhZCBvZgorCSAgaW50ZXJuYWwgY2xvY2sgc3VwcG9ydC4KKwkqIE1vdmUgcmVtYWluaW5nIG1lc3NhZ2UgbG9nZ2luZyBmdW5jdGlvbnMgaW4gZWx4X3V0aWwuYyB0bworCSAgZWx4X2xvZ21zZy5jLgorCSogUmVtb3ZlIHNvbWUgdW5uZWNlc3NhcnkgdHlwZWNhc3RpbmcuCisJKiBSZW1vdmUgbG9nIG1lc3NhZ2UgdGhhdCBpcyBubyBsb25nZXIgdXNlZCAod2FzIHVzZWQgYnkKKwkgIGVseF9zdHJfYXRveCkuCisJKiBSZXBsYWNlZCBETElOS190IGFuZCBTTElOS190IGJ5IHN0YW5kYXJkIExpbnV4IGxpc3RfaGVhZAorCSogUmVtb3ZlZCBkZXF1ZSBtYWNybworCSogUmVwbGFjZWQgRUxYX0RMSU5LX3QgYW5zIEVMWF9TTElOS190IGJ5IExpbnV4IHN0cnVjdCBsaXN0X2hlYWQKKwkgIChleGNlcHQgZm9yIGNsb2NrKQorCSogUmVtb3ZlZCBmb2xsb3dpbmcgZnVuY3Rpb25zIGZyb20gY29kZTogbGludXhfa21hbGxvYyBsaW51eF9rZnJlZQorCSAgZWx4X2FsbG9jX2JpZ2J1ZiBlbHhfZnJlZV9iaWdidWYKKwkqIFJlbW92ZWQgZm9sbG93aW5nIGFic3RyYWN0IGZ1bmN0aW9ucyBmcm9tIHRoZSBjb2RlLiAgZWx4X21hbGxvYworCSAgZWx4X2ZyZWUgZWx4X2lwX2dldF9yY3ZfYnVmIGVseF9pcF9mcmVlX3Jjdl9idWYKKwkgIGVseF9tZW1fYWxsb2NfZG1hYnVmIGVseF9tZW1fYWxsb2NfZG1hYnVmZXh0IGVseF9tZW1fYWxsb2NfZG1hCisJICBlbHhfbWVtX2FsbG9jX2J1ZiBscGZjX2J1Zm1hcAorCSogUmVtb3ZlZCBjdXN0b20gUENJIGNvbmZpZ3VyYXRpb24gI2RlZmluZXMgYW5kIHJlcGxhY2VkIHdpdGgKKwkgIE9TLXByb3ZpZGVkICNkZWZpbmVzLiBBbHNvIGFkZGVkIGxpbnV4L3BjaS5oIHRvICouYyBmaWxlcy4KKwkqIFJlbW92ZSBlbHhfc3RyX2N0b3guCVJlcGxhY2UgZWx4X3N0cl9hdG94IHdpdGggc3NjYW5mLgorCSogTWFueSBpbmRlbnRhdGlvbi93aGl0ZXNwYWNlIGZpeGVzLgorCSogUmVwbGFjZSBlbHhfc3RyX2N0b3ggd2l0aCBpc3hkaWdpdCB3aGVyZSBpdCB3YXMgb25seSB1c2VkIHRvCisJICBjaGVjayB0aGUgdmFsdWUgb2YgYSBjaGFyYWN0ZXIuCisJKiBSZW1vdmVkIGZvbGxvd2luZyBmdW5jdGlvbnMgZnJvbSB0aGUgY29kZS4gIGVseF9rbWVtX2ZyZWUKKwkgIGVseF9rbWVtX2FsbG9jIGVseF9rbWVtX3phbGxvYworCSogQ2hhbmdlIHVzZSBvZiAyLjQgU0NTSSB0eXBlZGVmIFNjc2lfSG9zdF9UZW1wbGF0ZSB0bwlzdHJ1Y3QKKwkgIHNjc2lfaG9zdF90ZW1wbGF0ZSBmb3IgMi42IGtlcm5lbHMuCisJKiBDaGFuZ2UgdXNlIG9mIDIuNCBTQ1NJIHR5cGVkZWZzIChTY3NpX0RldmljZSwgU2NzaV9DbW5kLAorCSAgU2NzaV9SZXF1ZXN0KSB0aGUgdGhlaXIgcmVhbCBzdHJ1Y3QgbmFtZXMuCisJKiBNb3ZlIDIuNiBjb21wYXRpYmlsaXR5IGlycXJldHVybiBkZWZpbml0aW9ucyB0byBscGZjX2NvbXBhdC5oLgorCSAgUHJvdGVjdCB0aGVzZSBkZWZpbml0aW9ucyBmcm9tIGNvbmZsaWN0aW5nIHdpdGggc2ltaWxhciBvbmVzIGluCisJICBsYXRlciAyLjQga2VybmVscy4KKwkqIFJlbW92ZSB1bnVzZWQgZGVmaW5pdGlvbnM6IExJTlVYX1RHVF90LCBMSU5VWF9MVU5fdCwKKwkgIExJTlVYX0JVRl90LCBlbHhfbHVuX3QsIFNFVF9BREFQVEVSX1NUQVRVUy4KKwkqIENvbnZlcnQgcGNpXyBjYWxscyB0byBsaW51eCAyLjYgZG1hXyBlcXVpdmFsZW50cy4KKwkqIFJlbW92ZWQgdW51c2VkIHR5cGVzOiBzdHJ1Y3QgYnVmLCBzdHJ1Y3Qgc2NfYnVmLCBUX1NDU0lCVUYKKwkgIHR5cGVkZWYuCisJKiBGaXggTWFrZWZpbGUgc28gdGhhdCAyLjQgZHJpdmVycyBkb24ndCBhbHdheXMgcmVidWlsZCBhbGwgZmlsZXMuCisJKiBSZW1vdmUgdW51c2VkIF9zdGF0aWNfIGFuZCBmY19sdW5fdCBkZWZpbml0aW9ucy4KKwkqIENsZWFuZWQgdXAgc29tZSBtZW1vcnkgcG9vbCBpbXBsZW1lbnRhdGlvbiBjb2RlLgorCSogRml4IHBhbmljIHdpdGggY2hhciBkZXYgY2hhbmdlcy4gVHVybnMgb3V0IHRoYXQgMi42LjQgY29kZSBkb2VzCisJICB0aGUgc2FtZSBpbiBrZXJuZWwgc3BhY2Ugd2l0aCB0aGUgMi40IGludGVyZmFjZSBzdHlsZQorCSAgZGVmaW5pdGlvbnMuIFNvIHJlbW92ZSB0aGUgbmV3IGNoYXIgZGV2IGNvZGUgYWx0b2dldGhlci4KKwkqIFJlbW92ZSB0eXBlY2FzdGluZyBmcm9tIGZjX2dldF9jZmdfcGFyYW0gYW5kIGNvbnNvbGlkYXRlCisJICBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgdGhlIHBhcmFtZXRlciBzd2l0Y2ggaW50byBhIHNpbmdsZQorCSAgaW5zdGFuY2UuCisJKiBVc2UgbHBmY19pc19MQ19IQkEoKSBtYWNybyB0aGF0IHRlc3RzIHBjaWRldi0+ZGV2aWNlIGRpcmVjdGx5CisJICBpbnN0ZWFkIG9mIHNhdmluZyBhIHByaXZhdGUgY29weSB0aGF0IHVuZGVyZ29lcyB2YXJpZWQgc2hpZnRpbmcKKwkgICYgY2FzdGluZy4KKwkqIFJlbW92ZWQgdXNhZ2Ugb2YgYWxsIG1lbW9yeSBwb29scy4KKworQ2hhbmdlcyBmcm9tIDIwMDQwMzEyIHRvIDIwMDQwMzE5CisJCisJKiBVc2UgZGV2X3dhcm4gaW5zdGVhZCBvZiBwcmludGsgZm9yIDIuNiBrZXJuZWxzCisJKiBDb3JyZWN0IElvY2JxIGNvbXBsZXRpb24gcm91dGluZSBmb3IgMi42IGtlcm5lbCBjYXNlCisJKiBDaGFuZ2Ugdm9pZCAqcE9TQ21kIHRvIFNjc2lfU21uZCAqcENtZAorCSogQ2hhbmdlIHZvaWQgKnBPU2NtZCB0byBzdHJ1Y3Qgc2tfYnVmZiAqcENtZAorCSogUmVtb3ZlIGRhdGEgZGlyZWN0b24gY29kZS4KKwkqIFJlbW92ZWQgbWVtb3J5IHBvb2wgZm9yIGJ1Zi9icGwgYnVmZmVycyBhbmQgdXNlIGttYWxsb2Mva2ZyZWUKKwkgIHBjaV9wb29sX2FsbG9jL2ZyZWUgZGlyZWN0bHkuCisJKiBNb3ZlIFBQQyBjaGVjayBmb3IgRE1BIGFkZHJlc3MgMCBpbiBzY2F0dGVyLWdhdGhlciBsaXN0LCBpbnRvCisJICBscGZjX2NvbXBhdC5oCisJKiBBbHdheXMgdXNlIHBjaV91bm1hcF9zaW5nbGUoKSBpbnN0ZWFkIG9mIHBjaV91bm1hcF9wYWdlKCkKKwkqIENsZWFuIHVwIHRoZSAyLjYgdnMgMi40ICNpZiBibG9ja3MuCisJKiBDb25kaXRpb25hbGl6ZSBTY2hlZHVsZXIKKwkqIEFkZCBhIGNvbW1lbnQgdG8gZXhwbGFpbiBhIGxpdHRsZSB3aGF0IHRoZSBmaXJzdCBNYWtlZmlsZQorCSAgc2VjdGlvbiBkb2VzLgorCSogUmVtb3ZlZCBscGZjX2ludHJfcG9zdAorCSogU3lzZnMgbmV3IGRpc3BsYXkgZm9ybWF0LiBBbHNvIGFkZGVkIHdyaXRlIGZ1bmN0aW9uYWxpdHkuIFlvdQorCSAgY2FuIFsgZWNobyAiMCBsb2dfdmVyYm9zZSAzIiA+CisJICAvc3lzL2J1cy9wY2kvZHJpdmVycy9scGZjL3BhcmFtc10uIEhleCBzdXBwb3J0IHlldCB0byBiZSBhZGRlZC4KKwkqIFJlbW92ZWQgc2V2ZXJhbCAjaWZkZWYgcG93ZXJwYywgaW5jbHVkaW5nIGZvciBhIGRpc2NvdmVyeSBpc3N1ZQorCSAgaW4gbHBmY19WYWxpZEx1bigpCisJKiBDaGFuZ2UgZWx4X3ByaW50Zl9sb2cgdG8gdXNlIHZzcHJpbnRmLgorCSogQWRkZWQgbHBmY19jb21wYXQuaCBwcm92aWRlcyBtYWNyb3MgdG8gYWlkIGNvbXBpbGF0aW9uIGluIHRoZQorCSAgTGludXggMi40IGtlcm5lbCBvdmVyIHZhcmlvdXMgcGxhdGZvcm0gYXJjaGl0ZWN0dXJlcy4gIEluaXRpYWxseQorCSAgc3VwcG9ydCBtYXBwaW5nIHRvIGEgRE1BIGFkZHJlc3MuCisJKiBSZW1vdmVkIG1lbW9yeSBwb29sIGZvciBubHAvYmluZCBidWZmZXJzIGFuZCB1c2Uga21hbGxvYy9rZnJlZQorCSAgZGlyZWN0bHkuCisJKiBSZW1vdmVkIG1lbW9yeSBwb29sIGZvciBpb2NiIGJ1ZmZlcnMgYW5kIHVzZSBrbWFsbG9jL2tmcmVlCisJICBkaXJlY3RseS4KKwkqIFJlbW92ZWQgbWVtb3J5IHBvb2wgZm9yIG1haWxib3ggYnVmZmVycyBhbmQgdXNlIGttYWxsb2Mva2ZyZWUKKwkgIGRpcmVjdGx5LgorCSogQ2xlYW5lZCB1cCBiYWNrIGFuZCBmb3J0aCBjYXN0cworCSogSW5pdGlhbCBzdXBwb3J0IGZvciBzeXNmcyBmb3IgMi42IGtlcm5lbC4KKwkqIENoYW5nZWQgZWx4X2RtYV9hZGRyX3QgdG8gZG1hX2FkZHJfdAorCSogRml4IGEgMi42IGtlcm5lbCBjaGVjayB0byBiZSA+PSAyLjYuMCBpbnN0ZWFkIG9mID4gKHdhcyBtaXNzaW5nCisJICAyLjYuMCkuCisJKiBSZW1vdmUgZWx4X3ByaW50ZiBhbmQgZWx4X3N0cl9zcHJpbnRmLiBSZXBsYWNlIGVseF9wcmludCB3aXRoCisJICBwcmludGsuCisJKiBSZXBsYWNlIGVseF9wcmludGYgd2l0aCBwcmludGsuCisJKiBSZXBsYWNlIGVseF9zdHJfc3ByaW50ZiB3aXRoIHNwcmludGYuCisJKiBSZW1vdmVkIHRoZSBtZW1fbG9jaywgaXRzIHByb3RvdHlwZSwgZnVuY3Rpb24sIG1hY3JvLCBhbmQKKwkgIGlmbGFncy4KKwkqIFVzZSBrbWFsbG9jL2tmcmVlIGZvciBFTFhfU0NTSV9CVUZfdAorCSogVXNlIGxpbnV4IHBjaV9wb29scyBmb3IgU0NTSV9ETUFfRVhUCisJKiBVc2UgbGludXggcGNpX3Bvb2xzIGZvciBCUExzLgorCSogTWlub3IgY2xlYW51cCBvZiBERkMgYXJncyBmb3IgUFBDNjQuCisJKiBTZXZlcmFsIHNtYWxsIGluZGVudGF0aW9uIGNsZWFudXBzLgorCSogTmV3IExpbnV4IDIuNiBzdHlsZSBvZiBjaGFyIGRldmljZSByZWdpc3RyYXRpb24uCisJKiBNaWdyYXRlZCBtZW1iZXJzIG9mIExQRkNIQkFfdCBhbmQgTElOVVhfSEJBX3QgaW50byBlbHhIQkFfdAorCSogVXNlIHN0cmNweSwgc3RybmNtcCwgaXNkaWdpdCwgc3RybGVuIGluc3RlYWQgb2YgYWJzdHJhY3Rpb25zCisJKiBDbGVhbnVwIG9mIGRyaXZlcl90ZW1wbGF0ZS4KKwkqIEZhY2lsaXRhdGUgY29tcGlsZSB0aW1lIHR1cm4gb24vb2ZmIG9mIGxwZmNfbmV0d29ya19vbi4KKwkqIFNwbGl0IGxhcmdlIHNvdXJjZSBmaWxlcyBpbnRvIHNtYWxsZXIsIGJldHRlciBuYW1lZCBvbmVzLgorCitDaGFuZ2VzIGZyb20gMi4xMGEgdG8gMjAwNDAzMTIKKworCSogRml4IGJ1aWxkIGZvciAyLjQga2VybmVscworCSogTW92ZSBkcml2ZXIgdmVyc2lvbiBtYWNyb3MgaW50byBscGZjX3ZlcnNpb24uaCBmaWxlLgorCSogRml4ZWQgZGF0YSBtaXNjb21wYXJlIHdpdGggTElQLgorCSogUmVtb3ZlZCBlbHhfc2xpLCBlbHhfaW9jLCBlbHhfZGlzYywgZWx4X3NjaCByb3V0aW5lcywKKwkgIHByb3RvdHlwZXMsIGFuZCByZWZlcmVuY2UgcG9pbnRzLgorCSogQ29ycmVjdCB0aGUgc3BhY2UgaW5zZXJ0aW9ucyB3aXRoIGhhcmR0YWJzCisJKiBSZW1vdmUgcm91dGluZSBjYWxsIHBvaW50ZXJzIGluIEVMWF9TTElfSU5JVF90IHN0cnVjdC4KKwkqIFJlbW92ZWQgbW9kdWxlIGxvY2tzIGV4Y2VwdCBmb3IgZHJ2ciwgbWVtLCBhbmQgY2xvY2suCisJKiBSZW1vdmVkIHVudXNlZCBtb2R1bGUgbG9ja3MgZnJvbSBzb3VyY2ViYXNlLiBLZXB0IGRydnJfbG9jaywKKwkgIG1lbV9sb2NrLCBhbmQgY2xvY2tfbG9jay4KKwkqIENoYW5nZSBOVUxMIHRvIDAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9DaGFuZ2VMb2cubWVnYXJhaWQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLm1lZ2FyYWlkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMDUyZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLm1lZ2FyYWlkCkBAIC0wLDAgKzEsNjE0IEBACitSZWxlYXNlIERhdGUJOiBUaHUgTm92IDE2IDE1OjMyOjM1IEVTVCAyMDA2IC0KKwkJCQlTdW1hbnQgUGF0cm8gPHN1bWFudC5wYXRyb0Bsc2kuY29tPgorQ3VycmVudCBWZXJzaW9uIDogMi4yMC41LjEgKHNjc2kgbW9kdWxlKSwgMi4yMC4yLjYgKGNtbSBtb2R1bGUpCitPbGRlciBWZXJzaW9uCTogMi4yMC40LjkgKHNjc2kgbW9kdWxlKSwgMi4yMC4yLjYgKGNtbSBtb2R1bGUpCisKKzEuCUNoYW5nZXMgaW4gSW5pdGlhbGl6YXRpb24gdG8gZml4IGtkdW1wIGZhaWx1cmUuCisJU2VuZCBTWU5DIGNvbW1hbmQgb24gbG9hZGluZy4KKwlUaGlzIGNvbW1hbmQgY2xlYXJzIHRoZSBwZW5kaW5nIGNvbW1hbmRzIGluIHRoZSBhZGFwdGVyCisJYW5kIHJlLWluaXRpYWxpemUgaXRzIGludGVybmFsIFJBSUQgc3RydWN0dXJlLgorCVdpdGhvdXQgdGhpcyBjaGFuZ2UsIG1lZ2FyYWlkIGRyaXZlciBlaXRoZXIgcGFuaWNzIG9yIGZhaWxzIHRvCisJaW5pdGlhbGl6ZSB0aGUgYWRhcHRlciBkdXJpbmcga2R1bXAncyBzZWNvbmQga2VybmVsIGJvb3QKKwlpZiB0aGVyZSBhcmUgcGVuZGluZyBjb21tYW5kcyBvciBpbnRlcnJ1cHRzIGZyb20gb3RoZXIgZGV2aWNlcworCXNoYXJpbmcgdGhlIHNhbWUgSVJRLgorMi4gCUF1dGhvcnMgZW1haWwtaWQgZG9tYWluIG5hbWUgY2hhbmdlZCBmcm9tIGxzaWwuY29tIHRvIGxzaS5jb20uCisJQWxzbyBtb2RpZmllZCB0aGUgTU9EVUxFX0FVVEhPUiB0byBtZWdhcmFpZGxpbnV4QGxzaS5jb20KKworUmVsZWFzZSBEYXRlCTogRnJpIE1heSAxOSAwOTozMTo0NSBFU1QgMjAwNiAtIFNlb2ttYW5uIEp1IDxzanVAbHNpbC5jb20+CitDdXJyZW50IFZlcnNpb24gOiAyLjIwLjQuOSAoc2NzaSBtb2R1bGUpLCAyLjIwLjIuNiAoY21tIG1vZHVsZSkKK09sZGVyIFZlcnNpb24JOiAyLjIwLjQuOCAoc2NzaSBtb2R1bGUpLCAyLjIwLjIuNiAoY21tIG1vZHVsZSkKKworMS4JRml4ZWQgYSBidWcgaW4gbWVnYXJhaWRfaW5pdF9tYm94KCkuCisJQ3VzdG9tZXIgcmVwb3J0ZWQgImdhcmJhZ2UgaW4gZmlsZSBvbiB4ODZfNjQgcGxhdGZvcm0iLgorCVJvb3QgQ2F1c2U6IHRoZSBkcml2ZXIgcmVnaXN0ZXJlZCBjb250cm9sbGVycyBhcyA2NC1iaXQgRE1BIGNhcGFibGUKKwlmb3IgdGhvc2Ugd2hpY2ggYXJlIG5vdCBzdXBwb3J0IGl0LgorCUZpeDogTWFkZSBjaGFuZ2UgaW4gdGhlIGZ1bmN0aW9uIGluc2VydGluZyBpZGVudGlmaWNhdGlvbiBtYWNoYW5pc20KKwlpZGVudGlmeWluZyA2NC1iaXQgRE1BIGNhcGFibGUgY29udHJvbGxlcnMuCisKKwk+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCisJPiBGcm9tOiBWYXNpbHkgQXZlcmluIFttYWlsdG86dnZzQHN3LnJ1XQorCT4gU2VudDogVGh1cnNkYXksIE1heSAwNCwgMjAwNiAyOjQ5IFBNCisJPiBUbzogbGludXgtc2NzaUB2Z2VyLmtlcm5lbC5vcmc7IEtvbGxpLCBOZWVsYTsgTXVra2VyLCBBdHVsOworCT4gSnUsIFNlb2ttYW5uOyBCYWdhbGtvdGUsIFNyZWVuaXZhczsKKwk+IEphbWVzLkJvdHRvbWxleUBTdGVlbEV5ZS5jb207IGRldmVsQG9wZW52ei5vcmcKKwk+IFN1YmplY3Q6IG1lZ2FyYWlkX21ib3g6IGdhcmJhZ2UgaW4gZmlsZQorCT4KKwk+IEhlbGxvIGFsbCwKKwk+CisJPiBJJ3ZlIGludmVzdGlnYXRlZCBjdXN0b21lcnMgY2xhaW0gb24gdGhlIHVuc3RhYmxlIHdvcmsgb2YKKwk+IHRoZWlyIG5vZGUgYW5kIGZvdW5kIGEKKwk+IHN0cmFuZ2UgZWZmZWN0OiByZWFkaW5nIGZyb20gc29tZSBmaWxlcyBsZWFkcyB0byB0aGUKKwk+ICAiYXR0ZW1wdCB0byBhY2Nlc3MgYmV5b25kIGVuZCBvZiBkZXZpY2UiIG1lc3NhZ2VzLgorCT4KKwk+IEkndmUgY2hlY2tlZCBmaWxlc3lzdGVtLCBtZW1vcnkgb24gdGhlIG5vZGUsIG1vdGhlcmJvYXJkIEJJT1MKKwk+IHZlcnNpb24sIGJ1dCBpdAorCT4gZG9lcyBub3QgaGVscCBhbmQgaXNzdWUgc3RpbGwgaGFzIGJlZW4gcmVwcm9kdWNlZCBieSBzaW1wbGUKKwk+IGZpbGUgcmVhZGluZy4KKwk+CisJPiBSZXByb2R1Y2VyIGlzIHNpbXBsZToKKwk+CisJPiBlY2hvIDB4ZmZmZmZmZmYgPi9wcm9jL3N5cy9kZXYvc2NzaS9sb2dnaW5nX2xldmVsIDsKKwk+IGNhdCAvdnovcHJpdmF0ZS8xMDEvcm9vdC9ldGMvbGQuc28uY2FjaGUgPi90bXAvdHR0ICA7CisJPiBlY2hvIDAgPi9wcm9jL3N5cy9kZXYvc2NzaS9sb2dnaW5nCisJPgorCT4gSXQgbGVhZHMgdG8gdGhlIGZvbGxvd2luZyBtZXNzYWdlcyBpbiBkbWVzZworCT4KKwk+IHNkX2luaXRfY29tbWFuZDogZGlzaz1zZGEsIGJsb2NrPTg3MTc2OTI2MCwgY291bnQ9MjYKKwk+IHNkYSA6IGJsb2NrPTg3MTc2OTI2MAorCT4gc2RhIDogcmVhZGluZyAyNi8yNiA1MTIgYnl0ZSBibG9ja3MuCisJPiBzY3NpX2FkZF90aW1lcjogc2NtZDogZjc5ZWQ5ODAsIHRpbWU6IDc1MDAsIChjMDJiMTQyMCkKKwk+IHNkIDA6MTowOjA6IHNlbmQgMHhmNzllZDk4MCAgICAgICAgICAgICAgICAgIHNkIDA6MTowOjA6CisJPiAgICAgICAgIGNvbW1hbmQ6IFJlYWQgKDEwKTogMjggMDAgMzMgZjYgMjQgYWMgMDAgMDAgMWEgMDAKKwk+IGJ1ZmZlciA9IDB4ZjdjZmI1NDAsIGJ1ZmZsZW4gPSAxMzMxMiwgZG9uZSA9IDB4YzAzNjZiNDAsCisJPiBxdWV1ZWNvbW1hbmQgMHhjMDM0NDAxMAorCT4gbGVhdmluZyBzY3NpX2Rpc3BhdGNoX2NtbmQoKQorCT4gc2NzaV9kZWxldGVfdGltZXI6IHNjbWQ6IGY3OWVkOTgwLCBydG46IDEKKwk+IHNkIDA6MTowOjA6IGRvbmUgMHhmNzllZDk4MCBTVUNDRVNTICAgICAgICAwIHNkIDA6MTowOjA6CisJPiAgICAgICAgIGNvbW1hbmQ6IFJlYWQgKDEwKTogMjggMDAgMzMgZjYgMjQgYWMgMDAgMDAgMWEgMDAKKwk+IHNjc2kgaG9zdCBidXN5IDEgZmFpbGVkIDAKKwk+IHNkIDA6MTowOjA6IE5vdGlmeWluZyB1cHBlciBkcml2ZXIgb2YgY29tcGxldGlvbiAocmVzdWx0IDApCisJPiBzZF9yd19pbnRyOiBzZGE6IHJlcz0weDAKKwk+IDI2IHNlY3RvcnMgdG90YWwsIDEzMzEyIGJ5dGVzIGRvbmUuCisJPiB1c2Vfc2cgaXMgNAorCT4gYXR0ZW1wdCB0byBhY2Nlc3MgYmV5b25kIGVuZCBvZiBkZXZpY2UKKwk+IHNkYTY6IHJ3PTAsIHdhbnQ9MTA0NDEzNDQ1OCwgbGltaXQ9OTUxNDAxMzY3CisJPiBCdWZmZXIgSS9PIGVycm9yIG9uIGRldmljZSBzZGE2LCBsb2dpY2FsIGJsb2NrIDUyMjA2NzIyOAorCT4gYXR0ZW1wdCB0byBhY2Nlc3MgYmV5b25kIGVuZCBvZiBkZXZpY2UKKworMi4JV2hlbiBJTlFVSVJZIHdpdGggRVZQRCBiaXQgc2V0IGlzc3VlZCB0byB0aGUgTWVnYVJBSUQgY29udHJvbGxlciwKKwlzeXN0ZW0gbWVtb3J5IGdldHMgY29ycnVwdGVkLgorCVJvb3QgQ2F1c2U6IE1lZ2FSQUlEIEYvVyBoYW5kbGUgdGhlIElOUVVJUlkgd2l0aCBFVlBEIGJpdCBzZXQKKwlpbmNvcnJlY3RseS4KKwlGaXg6IE1lZ2FSQUlEIEYvVyBoYXMgZml4ZWQgdGhlIHByb2JsZW0gYW5kIGJlaW5nIHByb2Nlc3Mgb2YgcmVsZWFzZSwKKwlzb29uLiBNZWFud2hpbGUsIGRyaXZlciB3aWxsIGZpbHRlciBvdXQgdGhlIHJlcXVlc3QuCisKKzMuCU9uZSBvZiBtZW1iZXIgaW4gdGhlIGRhdGEgc3RydWN0dXJlIG9mIHRoZSBkcml2ZXIgbGVhZHMgdW5hbGlnbmUKKwlpc3N1ZSBvbiA2NC1iaXQgcGxhdGZvcm0uCisJQ3VzdG9tZXIgcmVwb3JldGVkICJrZXJuZWwgdW5hbGlnbmVkIGFjY2VzcyBhZGRyc3MiIGlzc3VlIHdoZW4KKwlhcHBsaWNhdGlvbiBjb21tdW5pY2F0ZXMgd2l0aCBNZWdhUkFJRCBIQkEgZHJpdmVyLgorCVJvb3QgQ2F1c2U6IGluIHVpb2NfdCBzdHJ1Y3R1cmUsIG9uZSBvZiBtZW1iZXIgaGFkIG1pc2FsaWduZWQgYW5kIGl0CisJbGVkIHN5c3RlbSB0byBkaXNwbGF5IHRoZSBlcnJvciBtZXNzYWdlLgorCUZpeDogQSBwYXRjaCBzdWJtaXR0ZWQgdG8gY29tbXVuaXR5IGZyb20gZm9sbG93aW5nIGZvbGsuCisKKwk+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCisJPiBGcm9tOiBsaW51eC1zY3NpLW93bmVyQHZnZXIua2VybmVsLm9yZworCT4gW21haWx0bzpsaW51eC1zY3NpLW93bmVyQHZnZXIua2VybmVsLm9yZ10gT24gQmVoYWxmIE9mIFNha3VyYWkgSGlyb29taQorCT4gU2VudDogV2VkbmVzZGF5LCBKdWx5IDEyLCAyMDA2IDQ6MjAgQU0KKwk+IFRvOiBsaW51eC1zY3NpQHZnZXIua2VybmVsLm9yZzsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworCT4gU3ViamVjdDogUmU6IEhlbHA6IHN0cmFuZ2UgbWVzc2FnZXMgZnJvbSBrZXJuZWwgb24gSUE2NCBwbGF0Zm9ybQorCT4KKwk+IEhpLAorCT4KKwk+IEkgc2F3IHNhbWUgbWVzc2FnZS4KKwk+CisJPiBXaGVuIEdBTShHbG9iYWwgQXJyYXkgTWFuYWdlcikgaXMgc3RhcnRlZCwgVGhlIGZvbGxvd2luZworCT4gbWVzc2FnZSBvdXRwdXQuCisJPiBrZXJuZWw6IGtlcm5lbCB1bmFsaWduZWQgYWNjZXNzIHRvIDB4ZTAwMDAwMDFmZTEwODBkNCwKKwk+IGlwPTB4YTAwMDAwMDIwMDA1MzM3MQorCT4KKwk+IFRoZSB1aW9jIHN0cnVjdHVyZSB1c2VkIGJ5IGlvY3RsIGlzIGRlZmluZWQgYnkgcGFja2VkLAorCT4gdGhlIGFsbGlnbm1lbnQgb2YgZWFjaCBtZW1iZXIgYXJlIGRpc3R1cmJlZC4KKwk+IEluIGEgNjQgYml0IHN0cnVjdHVyZSwgdGhlIGFsbGlnbm1lbnQgb2YgbWVtYmVyIGRvZXNuJ3QgZml0IDY0IGJpdAorCT4gYm91bmRhcnkuIHRoaXMgY2F1c2VzIHRoaXMgbWVzc2FnZXMuCisJPiBJbiBhIDMyIGJpdCBzdHJ1Y3R1cmUsIHdlIGRvbid0IHNlZSB0aGUgbWVzc2FnZSBiZWNhdXNlIHRoZSBhbGxpbm1lbnQKKwk+IG9mIG1lbWJlciBmaXQgMzIgYml0IGJvdW5kYXJ5IGV2ZW4gaWYgcGFja2VkIGlzIHNwZWNpZmllZC4KKwk+CisJPiBwYXRjaAorCT4gSSBBZGQgMzIgYml0IGR1bW15IG1lbWJlciB0byBmaXQgNjQgYml0IGJvdW5kYXJ5LiBJIHRlc3RlZC4KKwk+IFdlIGNvbmZpcm1lZCB0aGlzIHBhdGNoIGZpeCB0aGUgcHJvYmxlbSBieSBJQTY0IHNlcnZlci4KKwk+CisJPiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCT4gKioqKioqKioqKioqKioqKgorCT4gLS0tIGxpbnV4LTIuNi45L2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9pb2N0bC5oLm9yaWcKKwk+IDIwMDYtMDQtMDMgMTc6MTM6MDMuMDAwMDAwMDAwICswOTAwCisJPiArKysgbGludXgtMi42LjkvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX2lvY3RsLmgKKwk+IDIwMDYtMDQtMDMgMTc6MTQ6MDkuMDAwMDAwMDAwICswOTAwCisJPiBAQCAtMTMyLDYgKzEzMiwxMCBAQAorCT4gIC8qIERyaXZlciBEYXRhOiAqLworCT4gICAgICAgICAgdm9pZCBfX3VzZXIgKiAgICAgICAgICAgdXNlcl9kYXRhOworCT4gICAgICAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgdXNlcl9kYXRhX2xlbjsKKwk+ICsKKwk+ICsgICAgICAgIC8qIDY0Yml0IGFsaWdubWVudCAqLworCT4gKyAgICAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgcGFkXzB4QkM7CisJPiArCisJPiAgICAgICAgICBtcmFpZF9wYXNzdGhydV90ICAgICAgICBfX3VzZXIgKnVzZXJfcHRocnU7CisJPgorCT4gICAgICAgICAgbXJhaWRfcGFzc3RocnVfdCAgICAgICAgKnB0aHJ1MzI7CisJPiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCT4gKioqKioqKioqKioqKioqKgorCitSZWxlYXNlIERhdGUJOiBNb24gQXByIDExIDEyOjI3OjIyIEVTVCAyMDA2IC0gU2Vva21hbm4gSnUgPHNqdUBsc2lsLmNvbT4KK0N1cnJlbnQgVmVyc2lvbiA6IDIuMjAuNC44IChzY3NpIG1vZHVsZSksIDIuMjAuMi42IChjbW0gbW9kdWxlKQorT2xkZXIgVmVyc2lvbgk6IDIuMjAuNC43IChzY3NpIG1vZHVsZSksIDIuMjAuMi42IChjbW0gbW9kdWxlKQorCisxLglGaXhlZCBhIGJ1ZyBpbiBtZWdhcmFpZF9yZXNldF9oYW5kbGVyKCkuCisJQ3VzdG9tZXIgcmVwb3J0ZWQgIlVuYWJsZSB0byBoYW5kbGUga2VybmVsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZQorCWF0IHZpcnR1YWwgYWRkcmVzcyAwMDAwMDAwMCIgd2hlbiBzeXN0ZW0gZ29lcyB0byByZXNldCBjb25kaXRpb24KKwlmb3Igc29tZSByZWFzb24uIEl0IGhhcHBlbmVkIHJhbmRvbWx5LgorCVJvb3QgQ2F1c2U6IGluIHRoZSBtZWdhcmFpZF9yZXNldF9oYW5kbGVyKCksIHRoZXJlIGlzIHBvc3NpYmlsaXR5IG5vdAorCXJldHVybmluZyBwZW5kaW5nIHBhY2tldHMgaW4gdGhlIHBlbmRfbGlzdCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUKKwlwZW5kaW5nIHBhY2tldHMuCisJRml4OiBNYWRlIHRoZSBjaGFuZ2UgaW4gdGhlIGRyaXZlciBzbyB0aGF0IGl0IHdpbGwgcmV0dXJuIGFsbCBwYWNrZXRzCisJaW4gdGhlIHBlbmRfbGlzdC4KKworMi4JQWRkZWQgY2hhbmdlIHJlcXVlc3QuCisJQXMgZm91bmQgaW4gdGhlIGZvbGxvd2luZyBVUkwsIHJtYigpIG9ubHkgZGlkbid0IGhlbHAgdGhlCisJcHJvYmxlbS4gSSBoYWQgdG8gaW5jcmVhc2UgdGhlIGxvb3AgY291bnRlciB0byAweEZGRkZGRi4gKDYgRidzKQorCWh0dHA6Ly9tYXJjLnRoZWFpbXNncm91cC5jb20vP2w9bGludXgtc2NzaSZtPTExMDk3MTA2MDUwMjQ5NyZ3PTIKKworCUkgYXR0YWNoZWQgYSBwYXRjaCBmb3IgeW91ciByZWZlcmVuY2UsIHRvby4KKwlDb3VsZCB5b3UgY2hlY2sgYW5kIGdldCB0aGlzIGZpeCBpbiB5b3VyIGRyaXZlcj8KKworCUJlc3QgUmVnYXJkcywKKwlKdW4naWNoaSBOb211cmEKKworUmVsZWFzZSBEYXRlCTogRnJpIE5vdiAxMSAxMjoyNzoyMiBFU1QgMjAwNSAtIFNlb2ttYW5uIEp1IDxzanVAbHNpbC5jb20+CitDdXJyZW50IFZlcnNpb24gOiAyLjIwLjQuNyAoc2NzaSBtb2R1bGUpLCAyLjIwLjIuNiAoY21tIG1vZHVsZSkKK09sZGVyIFZlcnNpb24JOiAyLjIwLjQuNiAoc2NzaSBtb2R1bGUpLCAyLjIwLjIuNiAoY21tIG1vZHVsZSkKKworMS4JU29ydGVkIG91dCBQQ0kgSURzIHRvIHJlbW92ZSBtZWdhcmFpZCBzdXBwb3J0IG92ZXJsYXBzLgorCUJhc2VkIG9uIHRoZSBwYXRjaCBmcm9tIERhbmllbCwgc29ydGVkIG91dCBQQ0kgSURzIGFsb25nIHdpdGgKKwljaGFyYWN0ZXIgbm9kZSBuYW1lIGNoYW5nZSBmcm9tICdtZWdhZGV2JyB0byAnbWVnYWRldl9sZWdhY3knIHRvIGF2b2lkCisJY29uZmxpY3QuCisJLS0tCisJSG9wZWZ1bGx5IHdlJ2xsIGJlIGdldHRpbmcgdGhlIGJ1aWxkIHJlc3RyaWN0aW9uIHphcHBlZCBtdWNoIHNvb25lciwgCisJYnV0IHdlIHNob3VsZCBhbHNvIGJlIHRoaW5raW5nIGFib3V0IHRvdGFsbHkgcmVtb3ZpbmcgdGhlIGhhcmR3YXJlIAorCXN1cHBvcnQgb3ZlcmxhcCBpbiB0aGUgbWVnYXJhaWQgZHJpdmVycy4KKworCVRoaXMgcGF0Y2ggcGVuY2lscyBpbiBhIGRhdGUgb2YgRmViIDA2IGZvciB0aGlzLCBhbmQgcGVyZm9ybXMgc29tZSAKKwlwcmludGsgYWJ1c2UgaW4gaG9wZSB0aGF0IGV4aXN0aW5nIGxlZ2FjeSB1c2VycyBtaWdodCBwaWNrIHVwIG9uIHdoYXQncworCWdvaW5nIG9uLgorCisJU2lnbmVkLW9mZi1ieTogRGFuaWVsIERyYWtlIDxkc2RAZ2VudG9vLm9yZz4KKwktLS0KKworMi4JRml4ZWQgYSBpc3N1ZTogbWVnYXJhaWQgYWx3YXlzIGZhaWxzIHRvIHJlc2V0IGhhbmRsZXIuCisJLS0tCisJSSBmb3VuZCB0aGF0IHRoZSBtZWdhcmFpZCBkcml2ZXIgYWx3YXlzIGZhaWxzIHRvIHJlc2V0IHRoZQorCWFkYXB0ZXIgd2l0aCB0aGUgZm9sbG93aW5nIG1lc3NhZ2U6CisJCW1lZ2FyYWlkOiByZXNldHRpbmcgdGhlIGhvc3QuLi4KKwkJbWVnYXJhaWQgbWJveDogcmVzZXQgc2VxdWVuY2UgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorCQltZWdhcmFpZDogZmFzdCBzeW5jIGNvbW1hbmQgdGltZWQgb3V0CisJCW1lZ2FyYWlkOiByZXNlcnZhdGlvbiByZXNldCBmYWlsZWQKKwl3aGVuIHRoZSAiQ2x1c3RlciBtb2RlIiBvZiB0aGUgYWRhcHRlciBCSU9TIGlzIGVuYWJsZWQuCisJU28sIHdoZW5ldmVyIHRoZSByZXNldCBvY2N1cnMsIHRoZSBhZGFwdGVyIGdvZXMgdG8KKwlvZmZsaW5lIGFuZCBqdXN0IGJlY29tZSB1bmF2YWlsYWJsZS4KKworCUp1bidpY2hpIE5vbXVyYSBbbWFpbHRvOmpub211cmFAbXRjLmJpZ2xvYmUubmUuanBdCisJLS0tCisKK1JlbGVhc2UgRGF0ZQk6IE1vbiBNYXIgMDcgMTI6Mjc6MjIgRVNUIDIwMDUgLSBTZW9rbWFubiBKdSA8c2p1QGxzaWwuY29tPgorQ3VycmVudCBWZXJzaW9uIDogMi4yMC40LjYgKHNjc2kgbW9kdWxlKSwgMi4yMC4yLjYgKGNtbSBtb2R1bGUpCitPbGRlciBWZXJzaW9uCTogMi4yMC40LjUgKHNjc2kgbW9kdWxlKSwgMi4yMC4yLjUgKGNtbSBtb2R1bGUpCisKKzEuCUFkZGVkIElPQ1RMIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCisJQ29udmVydCBtZWdhcmFpZF9tbSBkcml2ZXIgdG8gbmV3IGNvbXBhdF9pb2N0bCBlbnRyeSBwb2ludHMuCisJSSBkb24ndCBoYXZlIGVhc3kgYWNjZXNzIHRvIGhhcmR3YXJlLCBzbyBvbmx5IGNvbXBpbGUgdGVzdGVkLgorCQktIFNpZ25lZC1vZmYtYnk6QW5kaSBLbGVlbiA8YWtAbXVjLmRlPgorCisyLgltZWdhcmFpZF9tYm94IGZpeDogd3Jvbmcgb3JkZXIgb2YgYXJndW1lbnRzIGluIG1lbXNldCgpCisJVGhhdCwgQlRXLCBzaG93cyB3aHkgY3Jvc3MtYnVpbGRzIGFyZSB1c2VmdWwtdGhlIG9ubHkgaW5kaWNhdGlvbiBvZgorCXByb2JsZW0gaGFkIGJlZW4gYSBuZXcgd2FybmluZyBzaG93aW5nIHVwIGluIHNwYXJzZSBvdXRwdXQgb24gYWxwaGEKKwlidWlsZCAobnVtYmVyIG9mIGV4Y2VlZGluZyAyNTYgZ290IHRydW5jYXRlZCkuCisJCS0gU2lnbmVkLW9mZi1ieTogQWwgVmlybworCQk8dmlyb0BwYXJjZWxmYXJjZS5saW51eC50aGVwbGFuZXQuY28udWs+CisKKzMuCUNvbnZlcnQgcGNpX21vZHVsZV9pbml0IHRvIHBjaV9yZWdpc3Rlcl9kcml2ZXIKKwlDb252ZXJ0IGZyb20gcGNpX21vZHVsZV9pbml0IHRvIHBjaV9yZWdpc3Rlcl9kcml2ZXIKKwkoZnJvbTpodHRwOi8va2VybmVsbmV3Ymllcy5vcmcvS2VybmVsSmFuaXRvcnMvVE9ETykKKwkJLSBTaWduZWQtb2ZmLWJ5OiBEb21lbiBQdW5jZXIgPGRvbWVuQGNvZGVyb2NrLm9yZz4KKworNC4JVXNlIHRoZSBwcmUgZGVmaW5lZCBETUEgbWFzayBjb25zdGFudHMgZnJvbSBkbWEtbWFwcGluZy5oCisJVXNlIHRoZSBETUFfezY0LDMyfUJJVF9NQVNLIGNvbnN0YW50cyBmcm9tIGRtYS1tYXBwaW5nLmggd2hlbiBjYWxsaW5nCisJcGNpX3NldF9kbWFfbWFzaygpIG9yIHBjaV9zZXRfY29uc2lzdGVuZF9kbWFfbWFzaygpLiBTZWUKKwlodHRwOi8vbWFyYy50aGVhaW1zZ3JvdXAuY29tLz90PTEwODAwMTk5MzAwMDAwMSZyPTEmdz0yIGZvciBtb3JlCisJZGV0YWlscy4KKwkJU2lnbmVkLW9mZi1ieTogVG9iaWFzIEtsYXVzZXIgPHRrbGF1c2VyQG51ZXJzY2h0LmNoPgorCQlTaWduZWQtb2ZmLWJ5OiBEb21lbiBQdW5jZXIgPGRvbWVuQGNvZGVyb2NrLm9yZz4KKworNS4JUmVtb3ZlIFNTSUQgY2hlY2tpbmcgZm9yIERvYnNvbiwgTGluZHNheSwgYW5kIFZlcmRlIGJhc2VkIHByb2R1Y3RzLgorCUNoZWNraW5nIHRoZSBTU1ZJRC9TU0lEIGZvciBjb250cm9sbGVycyB3aGljaCBoYXZlIERvYnNvbiwgTGluZHNheSwKKwlhbmQgVmVyZGUgaXMgdW5uZWNlc3NhcnkgYmVjYXVzZSBkZXZpY2UgSUQgaGFzIGJlZW4gYXNzaWduZWQgYnkgTFNJCisJYW5kIGl0IGlzIHVuaXF1ZSB2YWx1ZS4gU28sIGFsbCBjb250cm9sbGVycyB3aXRoIHRoZXNlIElPUHMgaGF2ZSB0byBiZQorCXN1cHBvcnRlZCBieSB0aGUgZHJpdmVyIHJlZ2FyZGxlc3MgU1NWSUQvU1NJRC4KKworNi4JRGF0ZSBUaHUsIDI3IEphbiAyMDA1IDA0OjMxOjA5ICswMTAwIAorCUZyb20gSGVyYmVydCBQb2V0emwgPD4gCisJU3ViamVjdCBSRkM6IGFzc2VydF9zcGluX2xvY2tlZCgpIGZvciAyLjYgCisKKwlHcmVldGluZ3MhCisKKwlvdmVyY2F1dGlvdXMgcHJvZ3JhbW1pbmcgd2lsbCBraWxsIHlvdXIga2VybmVsIDspCisJZXZlciB0aG91Z2h0IGFib3V0IGNoZWNraW5nIGEgc3Bpbl9sb2NrIG9yIGV2ZW4KKwlhc3NlcnRpbmcgdGhhdCBpdCBtdXN0IGJlIGhlbGQgKG1heWJlIGp1c3QgZm9yCisJc3BpbmxvY2sgZGVidWdnaW5nPykgLi4uCisKKwl0aGVyZSBhcmUgc2V2ZXJhbCBjaGVja3MgcHJlc2VudCBpbiB0aGUga2VybmVsCisJd2hlcmUgc29tZWJvZHkgZG9lcyBhIHZhcmlhdGlvbiBvbiB0aGUgZm9sbG93aW5nOgorCisJICBCVUdfT04oIXNwaW5faXNfbG9ja2VkKCZzb21lX2xvY2spKTsKKworCXNvIHdoYXQncyB3cm9uZyBhYm91dCB0aGF0PyBub3RoaW5nLCB1bmxlc3MgeW91CisJY29tcGlsZSB0aGUgY29kZSB3aXRoIENPTkZJR19ERUJVR19TUElOTE9DSyBidXQgCisJd2l0aG91dCBDT05GSUdfU01QIC4uLiBpbiB3aGljaCBjYXNlIHRoZSBCVUcoKQorCXdpbGwga2lsbCB5b3VyIGtlcm5lbCAuLi4KKworCW1heWJlIGl0J3Mgbm90IGFkdmlzZWQgdG8gbWFrZSBzdWNoIGFzc2VydGlvbnMsIAorCWJ1dCBoZXJlIGlzIGEgc29sdXRpb24gd2hpY2ggd29ya3MgZm9yIG1lIC4uLgorCShjb21waWxlIHRlc3RlZCBmb3Igc2gsIHg4Nl82NCBhbmQgeDg2LCBib290L3J1bgorCXRlc3RlZCBmb3IgeDg2IG9ubHkpCisKKwliZXN0LAorCUhlcmJlcnQKKworCQktIEhlcmJlcnQgUG9ldHpsIDxoZXJiZXJ0QDEzdGhmbG9vci5hdD4sIFRodSwgMjcgSmFuIDIwMDUKKworUmVsZWFzZSBEYXRlCTogVGh1IEZlYiAwMyAxMjoyNzoyMiBFU1QgMjAwNSAtIFNlb2ttYW5uIEp1IDxzanVAbHNpbC5jb20+CitDdXJyZW50IFZlcnNpb24JOiAyLjIwLjQuNSAoc2NzaSBtb2R1bGUpLCAyLjIwLjIuNSAoY21tIG1vZHVsZSkKK09sZGVyIFZlcnNpb24JOiAyLjIwLjQuNCAoc2NzaSBtb2R1bGUpLCAyLjIwLjIuNCAoY21tIG1vZHVsZSkKKworMS4JTW9kaWZpZWQgbmFtZSBvZiB0d28gYXR0cmlidXRlcyBpbiBzY3NpX2hvc3RfdGVtcGxhdGUuCisJT24gV2VkLCAyMDA1LTAyLTAyIGF0IDEwOjU2IC0wNTAwLCBKdSwgU2Vva21hbm4gd3JvdGU6CisJPiArCS5zZGV2X2F0dHJzCQkJPSBtZWdhcmFpZF9kZXZpY2VfYXR0cnMsCisJPiArCS5zaG9zdF9hdHRycwkJCT0gbWVnYXJhaWRfY2xhc3NfZGV2aWNlX2F0dHJzLAorCisJVGhlc2UgYXJlLCBwZXJoYXBzLCBzbGlnaHRseSBjb25mdXNpbmcgbmFtZXMuCisJVGhlIHRlcm1zIGRldmljZSBhbmQgY2xhc3NfZGV2aWNlIGhhdmUgd2VsbCBkZWZpbmVkIG1lYW5pbmdzIGluIHRoZQorCWdlbmVyaWMgZGV2aWNlIG1vZGVsLCBuZWl0aGVyIG9mIHdoaWNoIGlzIHdoYXQgeW91IG1lYW4gaGVyZS4KKwlXaHkgbm90IHNpbXBseSBtZWdhcmFpZF9zZGV2X2F0dHJzIGFuZCBtZWdhcmFpZF9zaG9zdF9hdHRycz8KKworCU90aGVyIHRoYW4gdGhpcywgaXQgbG9va3MgZmluZSB0byBtZSB0b28uCisKK1JlbGVhc2UgRGF0ZQk6IFRodSBKYW4gMjcgMDA6MDE6MDMgRVNUIDIwMDUgLSBBdHVsIE11a2tlciA8YXR1bG1AbHNpbC5jb20+CitDdXJyZW50IFZlcnNpb24JOiAyLjIwLjQuNCAoc2NzaSBtb2R1bGUpLCAyLjIwLjIuNSAoY21tIG1vZHVsZSkKK09sZGVyIFZlcnNpb24JOiAyLjIwLjQuMyAoc2NzaSBtb2R1bGUpLCAyLjIwLjIuNCAoY21tIG1vZHVsZSkKKworMS4JQnVtcCB1cCB0aGUgdmVyc2lvbiBvZiBzY3NpIG1vZHVsZSBkdWUgdG8gaXRzIGNvbmZsaWN0LgorCitSZWxlYXNlIERhdGUJOiBUaHUgSmFuIDIxIDAwOjAxOjAzIEVTVCAyMDA1IC0gQXR1bCBNdWtrZXIgPGF0dWxtQGxzaWwuY29tPgorQ3VycmVudCBWZXJzaW9uCTogMi4yMC40LjMgKHNjc2kgbW9kdWxlKSwgMi4yMC4yLjUgKGNtbSBtb2R1bGUpCitPbGRlciBWZXJzaW9uCTogMi4yMC40LjIgKHNjc2kgbW9kdWxlKSwgMi4yMC4yLjQgKGNtbSBtb2R1bGUpCisKKzEuCVJlbW92ZSBkcml2ZXIgaW9jdGwgZm9yIGxvZ2ljYWwgZHJpdmUgdG8gc2NzaSBhZGRyZXNzIHRyYW5zbGF0aW9uIGFuZAorCXJlcGxhY2Ugd2l0aCB0aGUgc3lzZnMgYXR0cmlidXRlLiBUbyByZW1vdmUgZHJpdmVzIGFuZCBjaGFuZ2UKKwljYXBhY2l0eSwgYXBwbGljYXRpb24gc2hhbGwgbm93IHVzZSB0aGUgZGV2aWNlIGF0dHJpYnV0ZSB0byBnZXQgdGhlCisJbG9naWNhbCBkcml2ZSBudW1iZXIgZm9yIGEgc2NzaSBkZXZpY2UuIEZvciBhZGRpbmcgbmV3bHkgY3JlYXRlZAorCWxvZ2ljYWwgZHJpdmVzLCBjbGFzcyBkZXZpY2UgYXR0cmlidXRlIHdvdWxkIGJlIHJlcXVpcmVkIHRvIHVuaXF1ZWx5CisJaWRlbnRpZnkgZWFjaCBjb250cm9sbGVyLgorCQktIEF0dWwgTXVra2VyIDxhdHVsbUBsc2lsLmNvbT4KKworCSJKYW1lcywgSSd2ZSBiZWVuIHRoaW5raW5nIGFib3V0IHRoaXMgYSBsaXR0bGUgbW9yZSwgYW5kIHlvdSBtYXkgYmUgb24KKwl0byBzb21ldGhpbmcgaGVyZS4gTGV0IGVhY2ggZHJpdmVyIGFkZCBmaWxlcyBhcyBzdWNoOiIKKworCQktIE1hdHQgRG9tc2NoIDxNYXR0X0RvbXNjaEBkZWxsLmNvbT4sIDEyLjE1LjIwMDQKKwkJIGxpbnV4LXNjc2kgbWFpbGluZyBsaXN0CisKKworCSJUaGVuLCBpZiB5b3Ugc2ltcGx5IHB1Ymxpc2ggeW91ciBMRCBudW1iZXIgYXMgYW4gZXh0cmEgcGFyYW1ldGVyIG9mCisJdGhlIGRldmljZSwgeW91IGNhbiBsb29rIHRocm91Z2ggL3N5cyB0byBmaW5kIGl0LiIKKworCQktIEphbWVzIEJvdHRvbWxleSA8SmFtZXMuQm90dG9tbGV5QFN0ZWVsRXllLmNvbT4sIDAxLjAzLjIwMDUKKwkJIGxpbnV4LXNjc2kgbWFpbGluZyBsaXN0CisKKworCSJJIGRvbid0IHNlZSB3aHkgbm90IC4uLiBpdCdzIHlvdXIgZHJpdmVyLCB5b3UgY2FuIHB1Ymxpc2ggd2hhdGV2ZXIKKwlleHRyYSBpbmZvcm1hdGlvbiB5b3UgbmVlZCBhcyBzY3NpX2RldmljZSBhdHRyaWJ1dGVzOyB0aGF0IHdhcyBvbmUgb2YKKwl0aGUgZGVzaWducyBvZiB0aGUgZXh0ZW5zaWJsZSBhdHRyaWJ1dGUgc3lzdGVtLiIKKworCQktIEphbWVzIEJvdHRvbWxleSA8SmFtZXMuQm90dG9tbGV5QFN0ZWVsRXllLmNvbT4sIDAxLjA2LjIwMDUKKwkJIGxpbnV4LXNjc2kgbWFpbGluZyBsaXN0CisKKzIuCUFkZCBBTUkgbWVnYXJhaWQgc3VwcG9ydCAtIEJyaWFuIEtpbmcgPGJya2luZ0BjaGFydGVyLm5ldD4KKwkJUENJX1ZFTkRPUl9JRF9BTUksIFBDSV9ERVZJQ0VfSURfQU1JX01FR0FSQUlEMywKKwkJUENJX1ZFTkRPUl9JRF9BTUksIFBDSV9TVUJTWVNfSURfUEVSQzNfREMsCisKKzMuCU1ha2Ugc29tZSBjb2RlIHN0YXRpYyAtIEFkcmlhbiBCdW5rIDxidW5rQHN0dXN0YS5kZT4KKwlEYXRlOglNb24sIDE1IE5vdiAyMDA0IDAzOjE0OjU3ICswMTAwCisKKwlUaGUgcGF0Y2ggYmVsb3cgbWFrZXMgc29tZSBuZWVkbGVzc2x5IGdsb2JhbCBjb2RlIHN0YXRpYy4KKwktd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdF9xOworCStzdGF0aWMgd2FpdF9xdWV1ZV9oZWFkX3Qgd2FpdF9xOworCisJU2lnbmVkLW9mZi1ieTogQWRyaWFuIEJ1bmsgPGJ1bmtAc3R1c3RhLmRlPgorCis0LglBZGRlZCBORUMgUk9NQiBzdXBwb3J0IC0gTkVDIE1lZ2FSQUlEIFBDSSBFeHByZXNzIFJPTUIgY29udHJvbGxlcgorCQlQQ0lfVkVORE9SX0lEX0xTSV9MT0dJQywgUENJX0RFVklDRV9JRF9NRUdBUkFJRF9ORUNfUk9NQl8yRSwKKwkJUENJX1NVQlNZU19JRF9ORUMsIFBDSV9TVUJTWVNfSURfTUVHQVJBSURfTkVDX1JPTUJfMkUsCisKKzUuCUZpeGVkIFRhcGUgZHJpdmUgaXNzdWUgOiBGb3IgYW55IERpcmVjdCBDREIgY29tbWFuZCB0byBwaHlzaWNhbCBkZXZpY2UKKwlpbmNsdWRpbmcgdGFwZSwgdGltZW91dCB2YWx1ZSBzZXQgYnkgZHJpdmVyIHdhcyAxMCBtaW51dGVzLiBXaXRoIHRoaXMgCisJdmFsdWUsIG1vc3Qgb2YgY29tbWFuZCB3aWxsIHJldHVybiB3aXRoaW4gdGltZW91dC4gSG93ZXZlciwgZm9yIHRob3NlCisJY29tbWFuZCBsaWtlIEVSQVNFIG9yIEZPUk1BVCwgaXQgdGFrZXMgbW9yZSB0aGFuIGFuIGhvdXIgZGVwZW5kcyBvbgorCWNhcGFjaXR5IG9mIHRoZSBkZXZpY2UgYW5kIHRoZSBjb21tYW5kIGNvdWxkIGJlIHRlcm1pbmF0ZWQgYmVmb3JlIGl0IAorCWNvbXBsZXRlcy4KKwlUbyBhZGRyZXNzIHRoaXMgaXNzdWUsIHRoZSAndGltZW91dCcgZmllbGQgaW4gdGhlIERDREIgY29tbWFuZCB3aWxsIAorCWhhdmUgTk8gVElNRU9VVCAoaS5lLiwgNCkgdmFsdWUgYXMgaXRzIHRpbWVvdXQgb24gRENEQiBjb21tYW5kLgorCisKKworUmVsZWFzZSBEYXRlCTogVGh1IERlYyAgOSAxOToxMDoyMyBFU1QgMjAwNAorCS0gU3JlZW5pdmFzIEJhZ2Fsa290ZSA8c3JlZW5pYkBsc2lsLmNvbT4KKworQ3VycmVudCBWZXJzaW9uCTogMi4yMC40LjIgKHNjc2kgbW9kdWxlKSwgMi4yMC4yLjQgKGNtbSBtb2R1bGUpCitPbGRlciBWZXJzaW9uCTogMi4yMC40LjEgKHNjc2kgbW9kdWxlKSwgMi4yMC4yLjMgKGNtbSBtb2R1bGUpCisKK2kuCUludHJvZHVjZWQgZHJpdmVyIGlvY3RsIHRoYXQgcmV0dXJucyBzY3NpIGFkZHJlc3MgZm9yIGEgZ2l2ZW4gbGQuCisJCisJIldoeSBjYW4ndCB0aGUgZXhpc3Rpbmcgc3lzZnMgaW50ZXJmYWNlcyBiZSB1c2VkIHRvIGRvIHRoaXM/IgorCQktIEJyaWFuIEtpbmcgKGJya2luZ0B1cy5pYm0uY29tKQorCQorCSJJJ3ZlIGxvb2tlZCBpbnRvIHNvbHZpbmcgdGhpcyBhbm90aGVyIHdheSwgYnV0IEkgY2Fubm90IHNlZSBob3cKKwl0byBnZXQgdGhpcyBkcml2ZXItcHJpdmF0ZSBtYXBwaW5nIG9mIGxvZ2ljYWwgZHJpdmUgbnVtYmVyLT4gSENUTAorCXdpdGhvdXQgcHV0dGluZyBjb2RlIHNvbWV0aGluZyBsaWtlIHRoaXMgaW50byB0aGUgZHJpdmVyLiIKKworCSIuLi5hbmQgYnkgcHJvdmlkaW5nIGEgbWFwcGluZyBhIGZ1bmN0aW9uIHRvIHVzZXJzcGFjZSwgdGhlIGRyaXZlcgorCWlzIGZyZWUgdG8gY2hhbmdlIGl0cyBtYXBwaW5nIGFsZ29yaXRobSBpbiB0aGUgZnV0dXJlIGlmIG5lY2Vzc2FyeSAuLiIKKwkJLSBNYXR0IERvbXNjaCAoTWF0dF9Eb21zY2hAZGVsbC5jb20pCisKK1JlbGVhc2UgRGF0ZQk6IFRodSBEZWMgIDkgMTk6MDI6MTQgRVNUIDIwMDQgLSBTcmVlbml2YXMgQmFnYWxrb3RlIDxzcmVlbmliQGxzaWwuY29tPgorCitDdXJyZW50IFZlcnNpb24JOiAyLjIwLjQuMSAoc2NzaSBtb2R1bGUpLCAyLjIwLjIuMyAoY21tIG1vZHVsZSkKK09sZGVyIFZlcnNpb24JOiAyLjIwLjQuMSAoc2NzaSBtb2R1bGUpLCAyLjIwLjIuMiAoY21tIG1vZHVsZSkKKworaS4JRml4IGEgYnVnIGluIGtpb2MncyBkbWEgYnVmZmVyIGRlYWxsb2NhdGlvbgorCitSZWxlYXNlIERhdGUJOiBUaHUgTm92ICA0IDE4OjI0OjU2IEVTVCAyMDA0IC0gU3JlZW5pdmFzIEJhZ2Fsa290ZSA8c3JlZW5pYkBsc2lsLmNvbT4KKworQ3VycmVudCBWZXJzaW9uCTogMi4yMC40LjEgKHNjc2kgbW9kdWxlKSwgMi4yMC4yLjIgKGNtbSBtb2R1bGUpCitPbGRlciBWZXJzaW9uCTogMi4yMC40LjAgKHNjc2kgbW9kdWxlKSwgMi4yMC4yLjEgKGNtbSBtb2R1bGUpCisKK2kuCUhhbmRsZSBJT0NUTCBjbWQgdGltZW91dHMgbW9yZSBwcm9wZXJseS4KKworaWkuCXBjaV9kbWFfc3luY197c2csc2luZ2xlfV9mb3JfY3B1IHdhcyBpbnRyb2R1Y2VkIGludG8gbWVnYXJhaWRfbWJveAorCWluY29ycmVjdGx5IChpbnN0ZWFkIG9mIF9mb3JfZGV2aWNlKS4gQ2hhbmdlZCB0byBhcHByb3ByaWF0ZSAKKwlwY2lfZG1hX3N5bmNfe3NnLHNpbmdsZX1fZm9yX2RldmljZS4KKworUmVsZWFzZSBEYXRlCTogV2VkIE9jdCAwNiAxMToxNToyOSBFRFQgMjAwNCAtIFNyZWVuaXZhcyBCYWdhbGtvdGUgPHNyZWVuaWJAbHNpbC5jb20+CitDdXJyZW50IFZlcnNpb24JOiAyLjIwLjQuMCAoc2NzaSBtb2R1bGUpLCAyLjIwLjIuMSAoY21tIG1vZHVsZSkKK09sZGVyIFZlcnNpb24JOiAyLjIwLjQuMCAoc2NzaSBtb2R1bGUpLCAyLjIwLjIuMCAoY21tIG1vZHVsZSkKKworaS4JUmVtb3ZlIENPTkZJR19DT01QQVQgYXJvdW5kIHJlZ2lzdGVyX2lvY3RsMzJfY29udmVyc2lvbgorCitSZWxlYXNlIERhdGUJOiBNb24gU2VwIDI3IDIyOjE1OjA3IEVEVCAyMDA0IC0gQXR1bCBNdWtrZXIgPGF0dWxtQGxzaWwuY29tPgorQ3VycmVudCBWZXJzaW9uCTogMi4yMC40LjAgKHNjc2kgbW9kdWxlKSwgMi4yMC4yLjAgKGNtbSBtb2R1bGUpCitPbGRlciBWZXJzaW9uCTogMi4yMC4zLjEgKHNjc2kgbW9kdWxlKSwgMi4yMC4yLjAgKGNtbSBtb2R1bGUpCisKK2kuCUZpeCBkYXRhIGNvcnJ1cHRpb24uIEJlY2F1c2Ugb2YgYSB0eXBvIGluIHRoZSBkcml2ZXIsIHRoZSBJTyBwYWNrZXRzCisJd2VyZSB3cm9uZ2x5IHNoYXJlZCBieSB0aGUgaW9jdGwgcGF0aC4gVGhpcyBjYXVzZXMgYSB3aG9sZSBJTyBjb21tYW5kCisJdG8gYmUgcmVwbGFjZWQgYnkgYW4gaW5jb21pbmcgaW9jdGwgY29tbWFuZC4KKworUmVsZWFzZSBEYXRlCTogVHVlIEF1ZyAyNCAwOTo0MzozNSBFRFQgMjAwNCAtIEF0dWwgTXVra2VyIDxhdHVsbUBsc2lsLmNvbT4KK0N1cnJlbnQgVmVyc2lvbgk6IDIuMjAuMy4xIChzY3NpIG1vZHVsZSksIDIuMjAuMi4wIChjbW0gbW9kdWxlKQorT2xkZXIgVmVyc2lvbgk6IDIuMjAuMy4wIChzY3NpIG1vZHVsZSksIDIuMjAuMi4wIChjbW0gbW9kdWxlKQorCitpLglGdW5jdGlvbiByZW9yZGVyaW5nIHNvIHRoYXQgaW5saW5lIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCBiZWZvcmUgdGhleQorCWFyZSBhY3R1YWxseSB1c2VkLiBJdCBpcyBub3cgbWFuZGF0b3J5IGZvciBHQ0MgMy40LjEgKGN1cnJlbnQgc3RhYmxlKQorCisJRGVjbGFyZSBzb21lIGhlYXZ5LXdlaWdodCBmdW5jdGlvbnMgdG8gYmUgbm9uLWlubGluZWQsCisJbWVnYXJhaWRfbWJveF9idWlsZF9jbWQsIG1lZ2FyYWlkX21ib3hfcnVucGVuZHEsCisJbWVnYXJhaWRfbWJveF9wcmVwYXJlX3B0aHJ1LCBtZWdhcmFpZF9tYm94X3ByZXBhcmVfZXB0aHJ1LAorCW1lZ2FyYWlkX2J1c3l3YWl0X21ib3gKKworCQktIEFuZHJldyBNb3J0b24sIDA4LjE5LjIwMDQKKwkJbGludXgtc2NzaSBtYWlsaW5nIGxpc3QKKworCSJTb21ldGhpbmcgZWxzZSB0byBjbGVhbiB1cCBhZnRlciBpbmNsdXNpb246IGV2ZXJ5IGluc3RhbmNlIG9mIGFuCisJaW5saW5lIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IHJlbmRlcmVkIGFzIGEgZnVsbCBmdW5jdGlvbiBjYWxsLCBiZWNhdXNlCisJdGhlIGZ1bmN0aW9uIGlzIGFsd2F5cyB1c2VkIGJlZm9yZSBpdCBpcyBkZWZpbmVkLiAgQXR1bCwgcGxlYXNlCisJcmUtYXJyYW5nZSB0aGUgY29kZSB0byBlbGltaW5hdGUgdGhlIG5lZWQgZm9yIG1vc3QgKGFsbCkgb2YgdGhlCisJZnVuY3Rpb24gcHJvdG90eXBlcyBhdCB0aGUgdG9wIG9mIGVhY2ggZmlsZSwgYW5kIGRlZmluZSAobm90IGp1c3QKKwlkZWNsYXJlIHdpdGggYSBwcm90b3R5cGUpIGVhY2ggaW5saW5lIGZ1bmN0aW9uIGJlZm9yZSBpdHMgZmlyc3QgdXNlIgorCisJCS0gTWF0dCBEb21zY2ggPE1hdHRfRG9tc2NoQGRlbGwuY29tPiwgMDcuMjcuMjAwNAorCQlsaW51eC1zY3NpIG1haWxpbmcgbGlzdAorCisKK2lpLglEaXNwbGF5IGVsYXBzZWQgdGltZSAoY291bnRkb3duKSB3aGlsZSB3YWl0aW5nIGZvciBGVyB0byBib290LgorCitpaWkuCU1vZHVsZSBjb21waWxhdGlvbiByZW9yZGVyIGluIE1ha2VmaWxlIHNvIHRoYXQgdW5yZXNvbHZlZCBzeW1ib2xzIGRvCisJbm90IG9jY3VyIHdoZW4gZHJpdmVyIGlzIGNvbXBpbGVkIG5vbi1tb2R1bGFyLgorCisJCVBhdHJpY2sgSi4gTG9QcmVzdGkgPHBhdGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PiwgOC4yMi4yMDA0CisJCWxpbnV4LXNjc2kgbWFpbGluZyBsaXN0CisKKworUmVsZWFzZSBEYXRlCTogVGh1IEF1ZyAxOSAwOTo1ODozMyBFRFQgMjAwNCAtIEF0dWwgTXVra2VyIDxhdHVsbUBsc2lsLmNvbT4KK0N1cnJlbnQgVmVyc2lvbgk6IDIuMjAuMy4wIChzY3NpIG1vZHVsZSksIDIuMjAuMi4wIChjbW0gbW9kdWxlKQorT2xkZXIgVmVyc2lvbgk6IDIuMjAuMi4wIChzY3NpIG1vZHVsZSksIDIuMjAuMS4wIChjbW0gbW9kdWxlKQorCitpLglXaGVuIGNvcHlpbmcgdGhlIG1haWxib3ggcGFja2V0cywgY29weSBvbmx5IGZpcnN0IDE0IGJ5dGVzIChmb3IgMzItYml0CisJbWFpbGJveGVzKSBhbmQgb25seSBmaXJzdCAyMiBieXRlcyAoZm9yIDY0LWJpdCBtYWlsYm94ZXMpLiBUaGlzIGlzIHRvCisJYXZvaWQgZ2V0dGluZyB0aGUgc3RhbGUgdmFsdWVzIGZvciBidXN5IGJpdC4gV2Ugd2FudCB0byBzZXQgdGhlIGJ1c3kKKwliaXQganVzdCBiZWZvcmUgaXNzdWluZyBjb21tYW5kIHRvIHRoZSBGVy4KKworaWkuCUluIHRoZSByZXNldCBoYW5kbGluZywgaWYgdGhlIHJlc2V0ZWQgY29tbWFuZCBpcyBub3Qgb3duZWQgYnkgdGhlCisJZHJpdmVyLCBkbyBub3QgKHdyb25nbHkpIHByaW50IGluZm9ybWF0aW9uIGZvciB0aGUgImF0dGFjaGVkIiBkcml2ZXIKKwlwYWNrZXQuCisKK2lpaS4JSGF2ZSBleHRlbmRlZCB3YWl0IHdoZW4gaXNzdWluZyBjb21tYW5kIGluIHN5bmNocm9ub3VzIG1vZGUuIFRoaXMgaXMKKwlyZXF1aXJlZCBmb3IgdGhlIGNhc2VzIHdoZXJlIHRoZSBvcHRpb24gUk9NIGlzIGRpc2FibGVkIGFuZCB0aGVyZSBpcworCW5vIEJJT1MgdG8gc3RhcnQgdGhlIGNvbnRyb2xsZXIuIFRoZSBGVyBzdGFydHMgdG8gYm9vdCBhZnRlciByZWNlaXZpbmcKKwl0aGUgZmlyc3QgY29tbWFuZCBmcm9tIHRoZSBkcml2ZXIuIFRoZSBjdXJyZW50IGRyaXZlciBoYXMgMSBzZWNvbmQKKwl0aW1lb3V0IGZvciB0aGUgc3luY2hyb25vdXMgY29tbWFuZHMsIHdoaWNoIGlzIGZhciBsZXNzIHRoYW4gd2hhdCBpcworCWFjdHVhbGx5IHJlcXVpcmVkLiBXZSBub3cgd2FpdCB1cCB0byBNQk9YX1JFU0VUX1RJTUUgKDE4MCBzZWNvbmRzKSBmb3IKKwlGVyBib290IHByb2Nlc3MuCisKK2l2LglJbiBtZWdhcmFpZF9tYm94X3Byb2R1Y3RfaW5mbywgY2xlYXIgdGhlIG1haWxib3ggY29udGVudHMgY29tcGxldGVseQorCWJlZm9yZSBwcmVwYXJpbmcgdGhlIGNvbW1hbmQgZm9yIGlucXVpcnkzLiBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IHRoZQorCUZXIGRvZXMgbm90IGdldCBqdW5rIHZhbHVlcyBpbiB0aGUgY29tbWFuZC4KKwordi4JRG8gYXdheSB3aXRoIHRoZSByZWR1bmRhbnQgTFNJX0NPTkZJR19DT01QQVQgcmVkZWZpbml0aW9uIGZvcgorCUNPTkZJR19DT01QQVQuIFJlcGxhY2UgPGFzbS9pb2N0bDMyLmg+IHdpdGggPGxpbnV4L2lvY3RsMzIuaD4KKworCQktIEphbWVzIEJvdHRvbWxleSA8SmFtZXMuQm90dG9tbGV5QFN0ZWVsRXllLmNvbT4sIDA4LjE3LjIwMDQKKwkJIGxpbnV4LXNjc2kgbWFpbGluZyBsaXN0CisKK3ZpLglBZGQgc3VwcG9ydCBmb3IgNjQtYml0IGFwcGxpY2F0aW9ucy4gQ3VycmVudCBkcml2ZXJzIGFzc3VtZSBvbmx5CisJMzItYml0IGFwcGxpY2F0aW9ucywgZXZlbiBvbiA2NC1iaXQgcGxhdGZvcm1zLiBVc2UgdGhlICJkYXRhIiBhbmQKKwkiYnVmZmVyIiBmaWVsZHMgb2YgdGhlIG1pbWRfdCBzdHJ1Y3R1cmUsIGluc3RlYWQgb2YgZW1iZWRkZWQgMzItYml0CisJYWRkcmVzc2VzIGluIGFwcGxpY2F0aW9uIG1haWxib3ggYW5kIHBhc3N0aHJ1IHN0cnVjdHVyZXMuCisKK3ZpaS4JTW92ZSB0aGUgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGZvciB0aGUgbWFuYWdlbWVudCBtb2R1bGUgZnJvbQorCW1lZ2FyYWlkX21tLmggdG8gbWVnYXJhaWRfbW0uYworCisJCS0gQW5kcmV3IE1vcnRvbiwgMDguMTkuMjAwNAorCQlsaW51eC1zY3NpIG1haWxpbmcgbGlzdAorCit2aWlpLglDaGFuZ2UgZGVmYXVsdCB2YWx1ZXMgZm9yIE1FR0FSQUlEX05FV0dFTiwgTUVHQVJBSURfTU0sIGFuZAorCU1FR0FSQUlEX01BSUxCT1ggdG8gJ24nIGluIEtjb25maWcubWVnYXJhaWQKKworCQktIEFuZHJldyBNb3J0b24sIDA4LjE5LjIwMDQKKwkJbGludXgtc2NzaSBtYWlsaW5nIGxpc3QKKworaXguCXJlcGxhY2UgdWRlbGF5IHdpdGggbXNsZWVwCisKK3guCVR5cG9zIGNvcnJlY3RlZCBpbiBjb21tZW50cyBhbmQgd2hpdGVzcGFjZSBhZGp1c3RtZW50cywgZXhwbGljaXQKKwlncm91cGluZyBvZiBleHByZXNzaW9ucy4KKworCitSZWxlYXNlIERhdGUJOiBGcmkgSnVsIDIzIDE1OjIyOjA3IEVEVCAyMDA0IC0gQXR1bCBNdWtrZXIgPGF0dWxtQGxzaWwuY29tPgorQ3VycmVudCBWZXJzaW9uCTogMi4yMC4yLjAgKHNjc2kgbW9kdWxlKSwgMi4yMC4xLjAgKGNtbSBtb2R1bGUpCitPbGRlciBWZXJzaW9uCTogMi4yMC4xLjAgKHNjc2kgbW9kdWxlKSwgMi4yMC4wLjAgKGNtbSBtb2R1bGUpCisKK2kuCUFkZCBQQ0kgaWRzIGZvciBBY2VyIFJPTUIgMkUgc29sdXRpb24KKworaWkuCUFkZCBQQ0kgaWRzIGZvciBJNAorCitpaWkuCVR5cG8gY29ycmVjdGVkIGZvciBzdWJzeXMgaWQgZm9yIG1lZ2FyYWlkIHNhdGEgMzAwLTR4CisKK2l2LglSZW1vdmUgeWllbGQoKSB3aGlsZSBtYWlsYm94IGhhbmRzaGFrZSBpbiBzeW5jaHJvbm91cyBjb21tYW5kcworCisKKwkiTXkgb3RoZXIgbWFpbiBncmlwZSBpcyB0aGluZ3MgbGlrZSB0aGlzOgorCisJKwkvLyB3YWl0IGZvciBtYXhpbXVtIDEgc2Vjb25kIGZvciBzdGF0dXMgdG8gcG9zdAorCSsJZm9yIChpID0gMDsgaSA8IDQwMDAwOyBpKyspIHsKKwkrCQlpZiAobWJveC0+bnVtc3RhdHVzICE9IDB4RkYpIGJyZWFrOworCSsJCXVkZWxheSgyNSk7IHlpZWxkKCk7CisJKwl9CisKKwl3aGljaCBsaXR0ZXIgdGhlIGRyaXZlci4gIFVzZSBvZiB5aWVsZCgpIGluIGRyaXZlcnMgaXMgZGVwcmVjYXRlZC4iCisKKwkJLSBKYW1lcyBCb3R0b21sZXkgPEphbWVzLkJvdHRvbWxleUBTdGVlbEV5ZS5jb20+LCAwNy4xNC4yMDA0CisJCSBsaW51eC1zY3NpIG1haWxpbmcgbGlzdAorCit2LglSZW1vdmUgcmVkdW5kYW50IF9fbWVnYXJhaWRfYnVzeXdhaXRfbWJveCByb3V0aW5lCisKK3ZpLglGaXggYnVnIGluIHRoZSBtYW5hZ2VtZW50IG1vZHVsZSwgd2hpY2ggY2F1c2VzIGEgc3lzdGVtIGxvY2t1cCB3aGVuIHRoZQorCUlPIG1vZHVsZSBpcyBsb2FkZWQgYW5kIHRoZW4gdW5sb2FkZWQsIGZvbGxvd2VkIGJ5IGV4ZWN1dGluZyBhbnkKKwltYW5hZ2VtZW50IHV0aWxpdHkuIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgbWFuYWdlbWVudCBtb2R1bGUgZG9lcyBub3QKKwloYW5kbGUgdGhlIGFkYXB0ZXIgdW5yZWdpc3RlciBwcm9wZXJseS4KKworCVNwZWNpZmljYWxseSwgaXQgc3RpbGwga2VlcHMgYSByZWZlcmVuY2UgdG8gdGhlIHVucmVnaXN0ZXJlZAorCWNvbnRyb2xsZXJzLiBUbyBhdm9pZCB0aGlzLCB0aGUgc3RhdGljIGFycmF5IGFkYXB0ZXJzIGhhcyBiZWVuCisJcmVwbGFjZWQgYnkgYSBkeW5hbWljIGxpc3QsIHdoaWNoIGdldHMgdXBkYXRlZCBldmVyeSB0aW1lIGFuIGFkYXB0ZXIKKwlpcyBhZGRlZCBvciByZW1vdmVkLgorCisJQWxzbywgZHVyaW5nIHVucmVnaXN0cmF0aW9uIG9mIHRoZSBJTyBtb2R1bGUsIHRoZSByZXNvdXJjZXMgYXJlCisJbm93IHJlbGVhc2VkIGluIHRoZSBleGFjdCByZXZlcnNlIG9yZGVyIG9mIHRoZSBhbGxvY2F0aW9uIHRpbWUKKwlzZXF1ZW5jZS4KKworCitSZWxlYXNlIERhdGUJOiBGcmkgSnVuIDI1IDE4OjU4OjQzIEVEVCAyMDA0IC0gQXR1bCBNdWtrZXIgPGF0dWxtQGxzaWwuY29tPgorQ3VycmVudCBWZXJzaW9uCTogMi4yMC4xLjAKK09sZGVyIFZlcnNpb24JOiBtZWdhcmFpZCAyLjIwLjAuMQorCitpLglTdGFsZSBsaXN0IHBvaW50ZXIgaW4gYWRhcHRlciBjYXVzZXMga2VybmVsIHBhbmljIHdoZW4gbW9kdWxlCisJbWVnYXJhaWRfbWJveCBpcyB1bmxvYWRlZAorCisKK1JlbGVhc2UgRGF0ZQk6IFRodSBKdW4gMjQgMjA6Mzc6MTEgRURUIDIwMDQgLSBBdHVsIE11a2tlciA8YXR1bG1AbHNpbC5jb20+CitDdXJyZW50IFZlcnNpb24JOiAyLjIwLjAuMQorT2xkZXIgVmVyc2lvbgk6IG1lZ2FyYWlkIDIuMjAuMC4wMAorCitpLglNb2R1bGVzIGFyZSBub3QgJ3knIGJ5IGRlZmF1bHQsIGJ1dCBkZXBlbmQgb24gY3VycmVudCBkZWZpbml0aW9uIG9mCisJU0NTSSAmIFBDSS4KKworaWkuCVJlZHVuZGFudCBzdHJ1Y3R1cmUgbXJhaWRfZHJpdmVyX3QgcmVtb3ZlZC4KKworaWlpLglNaXNjZWxsYW5lb3VzIGluZGVudGF0aW9uIGFuZCBnb3RvL2xhYmVsIGZpeGVzLgorCQktIENocmlzdG9waCBIZWxsd2lnIDxoY2hAaW5mcmFkZWFkLm9yZz4sIDA2LjI0LjIwMDQgbGludXgtc2NzaQorCitpdi4Jc2NzaV9ob3N0X3B1dCgpLCBkbyBqdXN0IGJlZm9yZSBjb21wbGV0aW5nIEhCQSBzaHV0ZG93bi4KKworCisKK1JlbGVhc2UgRGF0ZQk6IE1vbiBKdW4gMjEgMTk6NTM6NTQgRURUIDIwMDQgLSBBdHVsIE11a2tlciA8YXR1bG1AbHNpbC5jb20+CitDdXJyZW50IFZlcnNpb24JOiAyLjIwLjAuMAorT2xkZXIgVmVyc2lvbgk6IG1lZ2FyYWlkIDIuMjAuMC5yYzIgYW5kIDIuMDAuMworCitpLglJbmRlcGVuZGVudCBtb2R1bGUgdG8gaW50ZXJhY3Qgd2l0aCB1c2VybGFuZCBhcHBsaWNhdGlvbnMgYW5kCisJbXVsdGlwbGV4IGNvbW1hbmQgdG8gbG93IGxldmVsIFJBSUQgbW9kdWxlKHMpLgorCisJIlNoYXJlZCBjb2RlIGluIGEgdGhpcmQgbW9kdWxlLCBhICJsaWJyYXJ5IG1vZHVsZSIsIGlzIGFuIGFjY2VwdGFibGUKKwlzb2x1dGlvbi4gbW9kcHJvYmUgYXV0b21hdGljYWxseSBsb2FkcyBkZXBlbmRlbnQgbW9kdWxlcywgc28gdXNlcnMKKwlydW5uaW5nICJtb2Rwcm9iZSBkcml2ZXIxIiBvciAibW9kcHJvYmUgZHJpdmVyMiIgd291bGQgYXV0b21hdGljYWxseQorCWxvYWQgdGhlIHNoYXJlZCBsaWJyYXJ5IG1vZHVsZS4iCisKKwkJLSBKZWZmIEdhcnppayA8amdhcnppa0Bwb2JveC5jb20+IDAyLjI1LjIwMDQgTEtNTAorCisJIkFzIEplZmYgaGludGVkLCBpZiB5b3VyIHVzZXJzcGFjZTwtPmRyaXZlciBBUEkgaXMgY29uc2lzdGVudCBiZXR3ZWVuCisJeW91ciBuZXcgTVBULWJhc2VkIFJBSUQgY29udHJvbGxlcnMgYW5kIHlvdXIgZXhpc3RpbmcgbWVnYXJhaWQgZHJpdmVyLAorCXRoZW4gcGVyaGFwcyB5b3UgbmVlZCBhIHNpbmdsZSBzbWFsbCBoZWxwZXIgbW9kdWxlIChsc2lpb2N0bCBvciBzb21lCisJYmV0dGVyIG5hbWUpLCBsb2FkZWQgYnkgYm90aCBtcHRyYWlkIGFuZCBtZWdhcmFpZCBhdXRvbWF0aWNhbGx5LCB3aGljaAorCWhhbmRsZXMgcmVnaXN0ZXJpbmcgdGhlIC9kZXYvbWVnYXJhaWQgbm9kZSBkeW5hbWljYWxseS4gSW4gdGhpcyBjYXNlLAorCWJvdGggbXB0cmFpZCBhbmQgbWVnYXJhaWQgd291bGQgcmVnaXN0ZXIgd2l0aCBsc2lpb2N0bCBmb3IgZWFjaAorCWFkYXB0ZXIgZGlzY292ZXJlZCwgYW5kIGxzaWlvY3RsIHdvdWxkIGVzc2VudGlhbGx5IGJlIGEgc3dpdGNoLAorCXJlZGlyZWN0aW5nIHVzZXJzcGFjZSB0b29sIGlvY3RscyB0byB0aGUgYXBwcm9wcmlhdGUgZHJpdmVyLiIKKworCQktIE1hdHQgRG9tc2NoIDxNYXR0X0RvbXNjaEBkZWxsLmNvbT4gMDIuMjUuMjAwNCBMS01MCisKK2lpLglSZW1vdmUgQzk5IGluaXRpYWxpemF0aW9ucyBmcm9tIHBjaV9kZXZpY2UgaWQuCisKKwkicGNpX2lkX3RhYmxlX2cgd291bGQgYmUgbXVjaCBtb3JlIHJlYWRhYmxlIHdoZW4gbm90IHVzaW5nIEM5OQorCWluaXRpYWxpemVycy4KKwlQQ0kgdGFibGUgZG9lc24ndCBjaGFuZ2UsIHRoZXJlJ3MgbG90cyBvZiB1c2VycyB0aGF0IHByZWZlciB0aGUgbW9yZQorCXJlYWRhYmxlIHZhcmlhbnQuICBBbmQgaXQncyByZWFsbHkgZmFyIGxlc3MgYW5kIG11Y2ggZWFzaWVyIHRvIGdyb2sKKwlsaW5lcyB3aXRob3V0IEM5OSBpbml0aWFsaXplcnMuIgorCisJCS0gQ2hyaXN0b3BoIEhlbGx3aWcgPGhjaEBpbmZyYWRlYWQub3JnPiwgMDUuMjguMjAwNCBsaW51eC1zY3NpCisKK2lpaS4JTWFueSBmaXhlcyBhcyBzdWdnZXN0ZWQgYnkgQ2hyaXN0b3BoIEhlbGx3aWcgPGhjaEBpbmZyYWRlYWQub3JnPiBvbgorCWxpbnV4LXNjc2ksIDA1LjI4LjIwMDQKKworaXYuCVdlIG5vdyBzdXBwb3J0IHVwIHRvIDMyIHBhcmFsbGVsIGlvY3RsIGNvbW1hbmRzIGluc3RlYWQgb2YgY3VycmVudCAxLgorCVRoZXJlIGlzIGEgY29uc2Npb3VzIGVmZm9ydCB0byBsZXQgbWVtb3J5IGFsbG9jYXRpb24gbm90IGZhaWwgZm9yIGlvY3RsCisJY29tbWFuZHMuCisKK3YuCURvIGF3YXkgd2l0aCBpbnRlcm5hbCBtZW1vcnkgbWFuYWdlbWVudC4gVXNlIHBjaV9wb29sXyhjcmVhdGV8YWxsb2MpCisJaW5zdGVhZC4KKwordmkuCUtpbGwgdGFza2xldCB3aGVuIHVubG9hZGluZyB0aGUgZHJpdmVyLgorCit2aWkuCURvIG5vdCB1c2UgImhvc3RfbG9jaycsIGRyaXZlciBoYXMgZmluZS1ncmFpbiBsb2NrcyBub3cgdG8gcHJvdGVjdCBhbGwKKwlkYXRhIHN0cnVjdHVyZXMuCisKK3ZpaWkuCU9wdGltaXplIHRoZSBidWlsZCBzY2F0dGVyLWdhdGhlciBsaXN0IHJvdXRpbmUuIFRoZSBjYWxsZXJzIGFscmVhZHkKKwlrbm93IHRoZSBkYXRhIHRyYW5zZmVyIGFkZHJlc3MgYW5kIGxlbmd0aC4KKworaXguCUJldHRlciBpbXBsZW1lbnRhdGlvbiBvZiBlcnJvciBoYW5kbGluZyBhbmQgcmVjb3ZlcnkuIERyaXZlciBub3cKKwlwZXJmb3JtcyBleHRlbmRlZCBlcnJvcnMgcmVjb3ZlcnkgZm9yIGluc3RhbmNlcyBsaWtlIHNjc2kgY2FibGUgcHVsbC4KKworeC4JRGlzYXNzb2NpYXRlIHRoZSBtYW5hZ2VtZW50IGNvbW1hbmRzIHdpdGggYW4gb3ZlcmxhaWQgc2NzaSBjb21tYW5kLgorCURyaXZlciBub3cgdHJlYXRzIHRoZSBtYW5hZ2VtZW50IHBhY2tldHMgYXMgc3BlY2lhbCBwYWNrZXRzIGFuZCBoYXMgYQorCWRlZGljYXRlZCBjYWxsYmFjayByb3V0aW5lLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL0NoYW5nZUxvZy5tZWdhcmFpZF9zYXMgYi9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLm1lZ2FyYWlkX3NhcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGI1NzA5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL0NoYW5nZUxvZy5tZWdhcmFpZF9zYXMKQEAgLTAsMCArMSw2NDEgQEAKK1JlbGVhc2UgRGF0ZSAgICA6IFRodS4gSnVuIDE5LCAyMDE0IDE3OjAwOjAwIFBTVCAyMDE0IC0KKwkJCShlbWFpbGQtaWQ6bWVnYXJhaWRsaW51eEBsc2kuY29tKQorCQkJQWRhbSBSYWRmb3JkCisJCQlLYXNoeWFwIERlc2FpCisJCQlTdW1pdCBTYXhlbmEKKwkJCVVkYXkgTGluZ2FsYQorQ3VycmVudCBWZXJzaW9uIDogMDYuODAzLjAyLjAwLXJjMQorT2xkIFZlcnNpb24gICAgIDogMDYuODAzLjAxLjAwLXJjMQorICAgIDEuIEZpeCByZXNldF9tdXRleCBsZWFrIGluIG1lZ2FzYXNfcmVzZXRfZnVzaW9uKCkuCisgICAgMi4gUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMgaW4gbWVnYXNhc19pbnN0YW5jZS4KKyAgICAzLiBGaXggTEQvVkYgYWZmaWxpYXRpb24gcGFyc2luZy4KKyAgICA0LiBBZGQgbWlzc2luZyBpbml0aWFsIGNhbGwgdG8gbWVnYXNhc19nZXRfbGRfdmZfYWZmaWxpYXRpb24oKS4KKyAgICA1LiBWZXJzaW9uIGFuZCBDaGFuZ2Vsb2cgdXBkYXRlLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUmVsZWFzZSBEYXRlICAgIDogTW9uLiBNYXIgMTAsIDIwMTQgMTc6MDA6MDAgUFNUIDIwMTQgLQorCQkJKGVtYWlsZC1pZDptZWdhcmFpZGxpbnV4QGxzaS5jb20pCisJCQlBZGFtIFJhZGZvcmQKKwkJCUthc2h5YXAgRGVzYWkKKwkJCVN1bWl0IFNheGVuYQorQ3VycmVudCBWZXJzaW9uIDogMDYuODAzLjAxLjAwLXJjMQorT2xkIFZlcnNpb24gICAgIDogMDYuNzAwLjA2LjAwLXJjMQorICAgIDEuIExvYWQgY29ycmVjdCByYWlkIGNvbnRleHQgdGltZW91dCB2YWx1ZSBmb3IgbXVsdGlwYXRoaW5nICYgY2x1c3RlcmluZy4KKyAgICAyLiBGaXggbWVnYXNhc19pb2NfaW5pdF9mdXNpb24gdG8gdXNlIGxvY2FsIHN0YWNrIHZhcmlhYmxlLgorICAgIDMuIFJldHVybiBsZWFrZWQgTVBUIGZyYW1lcyB0byBNUFQgY29tbWFuZCBwb29sLgorICAgIDQuIEFkZCBEZWxsIFBvd2VyRWRnZSBWUlRYIFNSLUlPViBWRiBkZXZpY2Ugc3VwcG9ydC4KKyAgICA1LiBWZXJzaW9uIGFuZCBDaGFuZ2Vsb2cgdXBkYXRlLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUmVsZWFzZSBEYXRlICAgIDogU2F0LiBBdWcgMzEsIDIwMTMgMTc6MDA6MDAgUFNUIDIwMTMgLQorCQkJKGVtYWlsZC1pZDptZWdhcmFpZGxpbnV4QGxzaS5jb20pCisJCQlBZGFtIFJhZGZvcmQKKwkJCUthc2h5YXAgRGVzYWkKKwkJCVN1bWl0IFNheGVuYQorQ3VycmVudCBWZXJzaW9uIDogMDYuNzAwLjA2LjAwLXJjMQorT2xkIFZlcnNpb24gICAgIDogMDYuNjAwLjE4LjAwLXJjMQorICAgIDEuIEFkZCBIaWdoIEF2YWlsYWJpbGl0eSBjbHVzdGVyaW5nIHN1cHBvcnQgdXNpbmcgc2hhcmVkIExvZ2ljYWwgRGlza3MuCisgICAgMi4gVmVyc2lvbiBhbmQgQ2hhbmdlbG9nIHVwZGF0ZS4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1JlbGVhc2UgRGF0ZSAgICA6IFdlZC4gTWF5IDE1LCAyMDEzIDE3OjAwOjAwIFBTVCAyMDEzIC0KKwkJCShlbWFpbGQtaWQ6bWVnYXJhaWRsaW51eEBsc2kuY29tKQorCQkJQWRhbSBSYWRmb3JkCisJCQlLYXNoeWFwIERlc2FpCisJCQlTdW1pdCBTYXhlbmEKK0N1cnJlbnQgVmVyc2lvbiA6IDA2LjYwMC4xOC4wMC1yYzEKK09sZCBWZXJzaW9uICAgICA6IDA2LjUwNi4wMC4wMC1yYzEKKyAgICAxLiBSZXR1cm4gRElEX0VSUk9SIGZvciBzY3NpIGlvLCB3aGVuIGNvbnRyb2xsZXIgaXMgaW4gY3JpdGljYWwgaC93IGVycm9yLgorICAgIDIuIEZpeCB0aGUgaW50ZXJydXB0IG1hc2sgZm9yIEdlbjIgY29udHJvbGxlci4KKyAgICAzLiBVcGRhdGUgYmFsYW5jZSBjb3VudCBpbiBkcml2ZXIgdG8gYmUgaW4gc3luYyBvZiBmaXJtd2FyZS4KKyAgICA0LiBGcmVlIGV2ZW50IGRldGFpbCBtZW1vcnkgd2l0aG91dCBkZXZpY2UgSUQgY2hlY2suCisgICAgNS4gU2V0IElPIHJlcXVlc3QgdGltZW91dCB2YWx1ZSBwcm92aWRlZCBieSBPUyB0aW1lb3V0IGZvciBUYXBlIGRldmljZXMuCisgICAgNi4gQWRkIHN1cHBvcnQgZm9yIE1lZ2FSQUlEIEZ1cnkgKGRldmljZSBJRC0weDAwNWYpIDEyR2IvcyBjb250cm9sbGVycy4KKyAgICA3LiBBZGQgc3VwcG9ydCB0byBkaXNwbGF5IEN1c3RvbWVyIGJyYW5kaW5nIGRldGFpbHMgaW4gc3lzbG9nLgorICAgIDguIFNldCBJb0ZsYWdzIHRvIGVuYWJsZSBGYXN0IFBhdGggZm9yIEpCT0RzIGZvciBJbnZhZGVyL0Z1cnkoMTIgR2IvcykKKyAgICBjb250cm9sbGVycy4KKyAgICA5LiBBZGQgc3VwcG9ydCBmb3IgRXh0ZW5kZWQgTVNJLXggdmVjdG9ycyBmb3IgSW52YWRlciBhbmQgRnVyeSgxMkdiL3MKKyAgICBIQkEpLgorICAgIDEwLkFkZCBzdXBwb3J0IGZvciBVbmV2ZW4gU3BhbiBQUkwxMS4KKyAgICAxMS5BZGQgc3VwcG9ydCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gaU1SIGFuZCBNUiBGaXJtd2FyZS4KKyAgICAxMi5WZXJzaW9uIGFuZCBDaGFuZ2Vsb2cgdXBkYXRlLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUmVsZWFzZSBEYXRlICAgIDogU2F0LiBGZWIgOSwgMjAxMyAxNzowMDowMCBQU1QgMjAxMyAtCisJCQkoZW1haWxkLWlkOm1lZ2FyYWlkbGludXhAbHNpLmNvbSkKKwkJCUFkYW0gUmFkZm9yZAorQ3VycmVudCBWZXJzaW9uIDogMDYuNTA2LjAwLjAwLXJjMQorT2xkIFZlcnNpb24gICAgIDogMDYuNTA0LjAxLjAwLXJjMQorICAgIDEuIEFkZCA0ayBGYXN0UGF0aCBESUYgc3VwcG9ydC4KKyAgICAyLiBEb250IGxvYWQgRGV2SGFuZGxlIHVubGVzcyBGYXN0UGF0aCBlbmFibGVkLgorICAgIDMuIFZlcnNpb24gYW5kIENoYW5nZWxvZyB1cGRhdGUuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitSZWxlYXNlIERhdGUgICAgOiBNb24uIE9jdCAxLCAyMDEyIDE3OjAwOjAwIFBTVCAyMDEyIC0KKwkJCShlbWFpbGQtaWQ6bWVnYXJhaWRsaW51eEBsc2kuY29tKQorCQkJQWRhbSBSYWRmb3JkCitDdXJyZW50IFZlcnNpb24gOiAwNi41MDQuMDEuMDAtcmMxCitPbGQgVmVyc2lvbiAgICAgOiAwMC4wMC4wNi4xOC1yYzEKKyAgICAxLiBSZW1vdmVkIHVuLW5lZWRlZCBjb21wbGV0aW9uX2xvY2sgc3BpbmxvY2sgY2FsbHMuCisgICAgMi4gQWRkIG1vZHVsZSBwYXJhbSBmb3IgY29uZmlndXJhYmxlIE1TSS1YIHZlY3RvciBjb3VudC4KKyAgICAzLiBMb2FkIGlvX3JlcXVlc3QgRGF0YUxlbmd0aCBpbiBieXRlcy4KKyAgICA0LiBBZGQgYXJyYXkgYm91bmRhcnkgY2hlY2sgZm9yIFN5c3RlbVBELgorICAgIDUuIEFkZCBTeXN0ZW1QRCBGYXN0UGF0aCBzdXBwb3J0LgorICAgIDYuIFJlbW92ZSBkdXBsaWNhdGUgY29kZS4KKyAgICA3LiBWZXJzaW9uLCBDaGFuZ2Vsb2csIENvcHlyaWdodCB1cGRhdGUuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitSZWxlYXNlIERhdGUgICAgOiBUdWUuIEp1biAxNywgMjAxMiAxNzowMDowMCBQU1QgMjAxMiAtCisJCQkoZW1haWxkLWlkOm1lZ2FyYWlkbGludXhAbHNpLmNvbSkKKwkJCUFkYW0gUmFkZm9yZC9LYXNoeWFwIERlc2FpCitDdXJyZW50IFZlcnNpb24gOiAwMC4wMC4wNi4xOC1yYzEKK09sZCBWZXJzaW9uICAgICA6IDAwLjAwLjA2LjE1LXJjMQorICAgIDEuIEZpeCBDb3B5cmlnaHQgZGF0ZXMuCisgICAgMi4gQWRkIHRocm90dGxlcXVldWVkZXB0aCBtb2R1bGUgcGFyYW1ldGVyLgorICAgIDMuIEFkZCByZXNldHdhaXR0aW1lIG1vZHVsZSBwYXJhbWV0ZXIuCisgICAgNC4gTW92ZSBwb2xsX2Flbl9sb2NrIGluaXRpYWxpemVyLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUmVsZWFzZSBEYXRlICAgIDogTW9uLiBNYXIgMTksIDIwMTIgMTc6MDA6MDAgUFNUIDIwMTIgLQorCQkJKGVtYWlsZC1pZDptZWdhcmFpZGxpbnV4QGxzaS5jb20pCisJCQlBZGFtIFJhZGZvcmQKK0N1cnJlbnQgVmVyc2lvbiA6IDAwLjAwLjA2LjE1LXJjMQorT2xkIFZlcnNpb24gICAgIDogMDAuMDAuMDYuMTQtcmMxCisgICAgMS4gT3B0aW1pemUgSG9zdE1TSXhWZWN0b3JzIHNldHRpbmcuCisgICAgMi4gQWRkIGZwUmVhZC9Xcml0ZUNhcGFibGUsIGZwUmVhZC9Xcml0ZUFjcm9zc1N0cmlwZSBjaGVja3MuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitSZWxlYXNlIERhdGUgICAgOiBGcmkuIEphbiA2LCAyMDEyIDE3OjAwOjAwIFBTVCAyMDEwIC0KKwkJCShlbWFpbGQtaWQ6bWVnYXJhaWRsaW51eEBsc2kuY29tKQorCQkJQWRhbSBSYWRmb3JkCitDdXJyZW50IFZlcnNpb24gOiAwMC4wMC4wNi4xNC1yYzEKK09sZCBWZXJzaW9uICAgICA6IDAwLjAwLjA2LjEyLXJjMQorICAgIDEuIEZpeCByZWdsb2NrRmxhZ3MgZm9yIGRlZ3JhZGVkIHJhaWQ1LzYgZm9yIE1SIDkzNjAvOTM4MC4KKyAgICAyLiBNYXNrIG9mZiBmbGFncyBpbiBpb2N0bCBwYXRoIHRvIHByZXZlbnQgbWVtb3J5IHNjcmliYmxlIHdpdGggb2xkZXIKKyAgICAgICBNZWdhQ0xJIHZlcnNpb25zLgorICAgIDMuIFJlbW92ZSBwb2xsX21vZGVfaW8gbW9kdWxlIHBhcmFtYXRlciwgc3lzZnMgbm9kZSwgYW5kIGFzc29jaWF0ZWQgY29kZS4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1JlbGVhc2UgRGF0ZSAgICA6IFdlZC4gT2N0IDUsIDIwMTEgMTc6MDA6MDAgUFNUIDIwMTAgLQorCQkJKGVtYWlsZC1pZDptZWdhcmFpZGxpbnV4QGxzaS5jb20pCisJCQlBZGFtIFJhZGZvcmQKK0N1cnJlbnQgVmVyc2lvbiA6IDAwLjAwLjA2LjEyLXJjMQorT2xkIFZlcnNpb24gICAgIDogMDAuMDAuMDUuNDAtcmMxCisgICAgMS4gQ29udGludWUgYm9vdGluZyBpbW1lZGlhdGVseSBpZiBGVyBpbiBGQVVMVCBhdCBkcml2ZXIgbG9hZCB0aW1lLgorICAgIDIuIEluY3JlYXNlIGRlZmF1bHQgY21kcyBwZXIgbHVuIHRvIDI1Ni4KKyAgICAzLiBGaXggbWlzbWF0Y2ggaW4gbWVnYXNhc19yZXNldF9mdXNpb24oKSBtdXRleCBsb2NrLXVubG9jay4KKyAgICA0LiBSZW1vdmUgc29tZSB1bi1uZWNlc3NhcnkgY29kZS4KKyAgICA1LiBDbGVhciBzdGF0ZSBjaGFuZ2UgaW50ZXJydXB0cyBmb3IgRnVzaW9uL0ludmFkZXIuCisgICAgNi4gQ2xlYXIgRlVTSU9OX0lOX1JFU0VUIGJlZm9yZSBlbmFibGluZyBpbnRlcnJ1cHRzLgorICAgIDcuIEFkZCBzdXBwb3J0IGZvciBNZWdhUkFJRCA5MzYwLzkzODAgMTJHQi9zIGNvbnRyb2xsZXJzLgorICAgIDguIEFkZCBtdWx0aXBsZSBNU0ktWCB2ZWN0b3IvbXVsdGlwbGUgcmVwbHkgcXVldWUgc3VwcG9ydC4KKyAgICA5LiBBZGQgZHJpdmVyIHdvcmthcm91bmQgZm9yIFBFUkM1LzEwNjgga2R1bXAga2VybmVsIHBhbmljLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUmVsZWFzZSBEYXRlICAgIDogVHVlLiBKdWwgMjYsIDIwMTEgMTc6MDA6MDAgUFNUIDIwMTAgLQorCQkJKGVtYWlsZC1pZDptZWdhcmFpZGxpbnV4QGxzaS5jb20pCisJCQlBZGFtIFJhZGZvcmQKK0N1cnJlbnQgVmVyc2lvbiA6IDAwLjAwLjA1LjQwLXJjMQorT2xkIFZlcnNpb24gICAgIDogMDAuMDAuMDUuMzgtcmMxCisgICAgMS4gRml4IEZhc3RQYXRoIEkvTyB0byB3b3JrIHdpdGggZGVncmFkZWQgUkFJRCAxLgorICAgIDIuIEFkZCAuY2hhbmdlX3F1ZXVlX2RlcHRoIHN1cHBvcnQuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitSZWxlYXNlIERhdGUgICAgOiBXZWQuIE1heSAxMSwgMjAxMSAxNzowMDowMCBQU1QgMjAxMCAtCisJCQkoZW1haWxkLWlkOm1lZ2FyYWlkbGludXhAbHNpLmNvbSkKKwkJCUFkYW0gUmFkZm9yZAorQ3VycmVudCBWZXJzaW9uIDogMDAuMDAuMDUuMzgtcmMxCitPbGQgVmVyc2lvbiAgICAgOiAwMC4wMC4wNS4zNC1yYzEKKyAgICAxLiBSZW1vdmUgTVNJLVggYmxhY2sgbGlzdCwgdXNlIE1GSV9SRUdfU1RBVEUucmVhZHkubXNpRW5hYmxlLgorICAgIDIuIFJlbW92ZSB1bi11c2VkIGZ1bmN0aW9uIG1lZ2FzYXNfcmV0dXJuX2NtZF9mb3Jfc21pZCgpLgorICAgIDMuIENoZWNrIE1GSV9SRUdfU1RBVEUuZmF1bHQucmVzZXRBZGFwdGVyIGluIG1lZ2FzYXNfcmVzZXRfZnVzaW9uKCkuCisgICAgNC4gRGlzYWJsZSBpbnRlcnJ1cHRzL2ZyZWVfaXJxKCkgaW4gbWVnYXNhc19zaHV0ZG93bigpLgorICAgIDUuIEZpeCBidWcgd2hlcmUgQUVOcyBjb3VsZCBiZSBsb3N0IGluIHByb2JlKCkgYW5kIHJlc3VtZSgpLgorICAgIDYuIENvbnZlcnQgNiwxMCwxMiBieXRlIENEQidzIHRvIDE2IGJ5dGUgQ0RCIGZvciBsYXJnZSBMQkEncyBmb3IgRmFzdFBhdGgKKyAgICAgICBJTy4KKyAgICA3LiBBZGQgMTA3OCBPQ1Igc3VwcG9ydC4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1JlbGVhc2UgRGF0ZSAgICA6IFRodS4gRmViIDI0LCAyMDExIDE3OjAwOjAwIFBTVCAyMDEwIC0KKwkJCShlbWFpbGQtaWQ6bWVnYXJhaWRsaW51eEBsc2kuY29tKQorCQkJQWRhbSBSYWRmb3JkCitDdXJyZW50IFZlcnNpb24gOiAwMC4wMC4wNS4zNC1yYzEKK09sZCBWZXJzaW9uICAgICA6IDAwLjAwLjA1LjI5LXJjMQorICAgIDEuIEZpeCBzb21lIGZhaWx1cmUgZ290b3MgZnJvbSBtZWdhc2FzX3Byb2JlX29uZSgpLCBldGMuCisgICAgMi4gQWRkIG1pc3NpbmcgY2hlY2tfYW5kX3Jlc3RvcmVfcXVldWVfZGVwdGgoKSBjYWxsIGluCisgICAgICAgY29tcGxldGVfY21kX2Z1c2lvbigpLgorICAgIDMuIEVuYWJsZSBNU0ktWCBiZWZvcmUgY2FsbGluZyBtZWdhc2FzX2luaXRfZncoKS4KKyAgICA0LiBDYWxsIHRhc2tsZXRfc2NoZWR1bGUoKSBldmVuIGlmIG91dGJvdW5kX2ludHJfc3RhdHVzID09IDAgZm9yIE1GSSBiYXNlZAorICAgICAgIGJvYXJkcyBpbiBNU0ktWCBtb2RlLgorICAgIDUuIEZpeCBtZWdhc2FzX3Byb2JlX29uZSgpIHRvIGNsZWFyIFBDSV9NU0lYX0ZMQUdTX0VOQUJMRSBpbiBtc2kgY29udHJvbAorICAgICAgIHJlZ2lzdGVyIGluIGtkdW1wIGtlcm5lbC4KKyAgICA2LiBGaXggbWVnYXNhc19nZXRfY21kKCkgdG8gb25seSBwcmludCAiQ29tbWFuZCBwb29sIGVtcHR5IiBpZgorICAgICAgIG1lZ2FzYXNfZGJnX2x2bCBpcyBzZXQuCisgICAgNy4gRml4IG1lZ2FzYXNfYnVpbGRfZGNkYl9mdXNpb24oKSB0byBub3QgZmlsdGVyIGJ5IFRZUEVfRElTSy4KKyAgICA4LiBGaXggbWVnYXNhc19idWlsZF9kY2RiX2Z1c2lvbigpIHRvIHVzZSBpb19yZXF1ZXN0LT5MVU5bMV0gZmllbGQuCisgICAgOS4gQWRkIE1SX0VWVF9DRkdfQ0xFQVJFRCB0byBtZWdhc2FzX2Flbl9wb2xsaW5nKCkuCisgICAgMTAuIEZpeCB0YXNrbGV0X2luaXQoKSBpbiBtZWdhc2FzX2luaXRfZncoKSB0byB1c2UgaW5zdGFuY2V0LT50YXNrbGV0LgorICAgIDExLiBGaXggZmF1bHQgc3RhdGUgaGFuZGxpbmcgaW4gbWVnYXNhc190cmFuc2l0aW9uX3RvX3JlYWR5KCkuCisgICAgMTIuIEZpeCBtYXhfc2VjdG9ycyBzZXR0aW5nIGZvciBJRUVFIFNHTCdzLgorICAgIDEzLiBGaXggaU1SIE9DUiBzdXBwb3J0IHRvIHdvcmsgY29ycmVjdGx5LgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUmVsZWFzZSBEYXRlICAgIDogVHVlcy4gIERlYyAxNCwgMjAxMCAxNzowMDowMCBQU1QgMjAxMCAtCisJCQkoZW1haWxkLWlkOm1lZ2FyYWlkbGludXhAbHNpLmNvbSkKKwkJCUFkYW0gUmFkZm9yZAorQ3VycmVudCBWZXJzaW9uIDogMDAuMDAuMDUuMjktcmMxCitPbGQgVmVyc2lvbiAgICAgOiAwMC4wMC4wNC4zMS1yYzEKKyAgICAxLiBSZW5hbWUgbWVnYXJhaWRfc2FzLmMgdG8gbWVnYXJhaWRfc2FzX2Jhc2UuYy4KKyAgICAyLiBVcGRhdGUgR1BMIGhlYWRlcnMuCisgICAgMy4gQWRkIE1TSS1YIHN1cHBvcnQgYW5kICdtc2l4X2Rpc2FibGUnIG1vZHVsZSBwYXJhbWV0ZXIuCisgICAgNC4gVXNlIGxvd2VzdCBtZW1vcnkgYmFyIChmb3IgU1ItSU9WIFZGIHN1cHBvcnQpLgorICAgIDUuIEFkZCBzdHJ1Y3QgbWVnYXNhc19pbnN0YW5jZV90ZW1sYXRlIGNoYW5nZXMsIGFuZCBjaGFuZ2UgYWxsIGNvZGUgdG8gdXNlCisgICAgICAgbmV3IGluc3RhbmNlIGVudHJpZXM6CisKKyAgICAgICBpcnFyZXR1cm5fdCAoKnNlcnZpY2VfaXNyICkoaW50IGlycSwgdm9pZCAqZGV2cCk7CisgICAgICAgdm9pZCAoKnRhc2tsZXQpKHVuc2lnbmVkIGxvbmcpOworICAgICAgIHUzMiAoKmluaXRfYWRhcHRlcikoc3RydWN0IG1lZ2FzYXNfaW5zdGFuY2UgKik7CisgICAgICAgdTMyICgqYnVpbGRfYW5kX2lzc3VlX2NtZCkgKHN0cnVjdCBtZWdhc2FzX2luc3RhbmNlICosCisgICAgICAgc3RydWN0IHNjc2lfY21uZCAqKTsKKyAgICAgICB2b2lkICgqaXNzdWVfZGNtZCkgKHN0cnVjdCBtZWdhc2FzX2luc3RhbmNlICppbnN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtZWdhc2FzX2NtZCAqY21kKTsKKworICAgNi4gQWRkIGNvZGUgdG8gc3VwcG9ydCBNZWdhUkFJRCA5MjY1LzkyODUgY29udHJvbGxlcnMgZGV2aWNlIGlkICgweDViKS4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzEgUmVsZWFzZSBEYXRlICAgIDogVGh1ci4gIE1heSAwMywgMjAxMCAwOToxMjo0NSBQU1QgMjAwOSAtCisJCQkoZW1haWxkLWlkOm1lZ2FyYWlkbGludXhAbHNpLmNvbSkKKwkJCUJvIFlhbmcKKworMiBDdXJyZW50IFZlcnNpb24gOiAwMC4wMC4wNC4zMS1yYzEKKzMgT2xkZXIgVmVyc2lvbiAgIDogMDAuMDAuMDQuMTcuMS1yYzEKKworMS4JQWRkIHRoZSBPbmxpbmUgQ29udHJvbGxlciBSZXNldCAoT0NSKSB0byB0aGUgRHJpdmVyLgorCU9DUiBpcyB0aGUgbmV3IGZlYXR1cmUgZm9yIG1lZ2FyYWlkX3NhcyBkcml2ZXIgd2hpY2gKKwl3aWxsIGFsbG93IHRoZSBmdyB0byBkbyB0aGUgY2hpcCByZXNldCB3aGljaCB3aWxsIG5vdAorCWFmZmFjdCB0aGUgT1MgYmVoYXZpb3VzLgorCisJVG8gYWRkIHRoZSBPQ1Igc3VwcG9ydCwgZHJpdmVyIG5lZWQgdG8gZG86CisJCWEpLiByZXNldCB0aGUgY29udHJvbGxlciBjaGlwcyAtLSBYc2NhbGUgYW5kIEdlbjIgd2hpY2gKKwkJd2lsbCBjaGFuZ2UgdGhlIGZ1bmN0aW9uIGNhbGxzIGFuZCBhZGQgdGhlIHJlc2V0IGZ1bmN0aW9uCisJCXJlbGF0ZWQgdG8gdGhpcyB0d28gY2hpcHMuCisKKwkJYikuIGR1cmluZyB0aGUgcmVzZXQsIGRyaXZlciB3aWxsIHN0b3JlIHRoZSBwZW5kaW5nIGNtZHMKKwkJd2hpY2ggbm90IHJldHVybmVkIGJ5IEZXIHRvIGRyaXZlcidzIHBlbmRpbmcgcXVldWUuICBEcml2ZXIKKwkJd2lsbCByZS1pc3N1ZSB0aG9zZSBwZW5kaW5nIGNtZHMgYWdhaW4gdG8gRlcgYWZ0ZXIgdGhlIE9DUgorCQlmaW5pc2hlZC4KKworCQljKS4gSW4gZHJpdmVyJ3MgdGltZW91dCByb3V0aW5lLCBkcml2ZXIgd2lsbCByZXBvcnQgdG8KKwkJT1MgYXMgcmVzZXQuIEFsc28gZHJpdmVyJ3MgcXVldWUgcm91dGluZSB3aWxsIGJsb2NrIHRoZQorCQljbWRzIHVudGlsIHRoZSBPQ1IgZmluaXNoZWQuCisKKwkJZCkuIGluIERyaXZlcidzIElTUiByb3V0aW5lLCBpZiBkcml2ZXIgZ2V0IHRoZSBGVyBzdGF0ZSBhcworCQlzdGF0ZSBjaGFuZ2UsIEZXIGluIEZhaWx1cmUgc3RhdHVzIGFuZCBGVyBzdXBwb3J0IG9ubGluZSBjb250cm9sbGVyCisJCXJlc2V0IChPQ1IpLCBkcml2ZXIgd2lsbCBzdGFydCB0byBkbyB0aGUgY29udHJvbGxlciByZXNldC4KKworCQllKS4gSW4gZHJpdmVyJ3MgSU9DVEwgcm91dGluZSwgdGhlIGFwcGxpY2F0aW9uIGNtZHMgd2lsbCB3YWl0IGZvciB0aGUKKwkJT0NSIHRvIGZpbmlzaCwgdGhlbiBpc3N1ZSB0aGUgY21kcyB0byBGVy4KKworCQlmKS4gQmVmb3JlIGRyaXZlciBraWxsIGFkYXB0ZXIsIGRyaXZlciB3aWxsIGRvIGxhc3QgY2hhbmNlIG9mCisJCU9DUiB0byBzZWUgaWYgZHJpdmVyIGNhbiBicmluZyBiYWNrIHRoZSBGVy4KKworMi4JQWRkIHRoZSBzdXBwb3J0IHVwZGF0ZSBmbGFnIHRvIHRoZSBkcml2ZXIgdG8gdGVsbCBMU0kgbWVnYXJhaWRfc2FzCisJYXBwbGljYXRpb24gd2hpY2ggZHJpdmVyIHdpbGwgc3VwcG9ydCB0aGUgZGV2aWNlIHVwZGF0ZS4gIFNvIGFwcGxpY2F0aW9uCisJd2lsbCBub3QgbmVlZCB0byBkbyB0aGUgZGV2aWNlIHVwZGF0ZSBhZnRlciBhcHBsaWNhdGlvbiBhZGQvZGVsIHRoZSBkZXZpY2UKKwlmcm9tIHRoZSBzeXN0ZW0uCiszLglJbiBkcml2ZXIncyB0aW1lb3V0IHJvdXRpbmUsIGRyaXZlciB3aWxsIGRvIHRocmVlIHRpbWUgcmVzZXQgaWYgZncgaXMgaW4KKwlmYWlsZWQgc3RhdGUuICBEcml2ZXIgd2lsbCBraWxsIGFkYXB0ZXIgaWYgY2FuJ3QgYnJpbmcgYmFjayBGVyBhZnRlciB0aGUKKwl0aGlzIHRocmVlIHRpbWVzIHJlc2V0LgorNC4JQWRkIHRoZSBpbnB1dCBwYXJhbWV0ZXIgbWF4X3NlY3RvcnMgdG8gMU1CIHN1cHBvcnQgdG8gb3VyIEdFTjIgY29udHJvbGxlci4KKwljdXN0b21lciBjYW4gdXNlIHRoZSBpbnB1dCBwYXJhbWVudGVyIG1heF9zZWN0b3JzIHRvIGFkZCAxTUIgc3VwcG9ydCB0byBHRU4yCisJY29udHJvbGxlci4KKworMSBSZWxlYXNlIERhdGUgICAgOiBUaHVyLiAgT2N0IDI5LCAyMDA5IDA5OjEyOjQ1IFBTVCAyMDA5IC0KKwkJCShlbWFpbGQtaWQ6bWVnYXJhaWRsaW51eEBsc2kuY29tKQorCQkJQm8gWWFuZworCisyIEN1cnJlbnQgVmVyc2lvbiA6IDAwLjAwLjA0LjE3LjEtcmMxCiszIE9sZGVyIFZlcnNpb24gICA6IDAwLjAwLjA0LjEyCisKKzEuCUFkZCB0aGUgcGFkXzAgaW4gbWZpIGZyYW1lIHN0cnVjdHVyZSB0byAwIHRvIGZpeCB0aGUKKwljb250ZXh0IHZhbHVlIGxhcmdlciB0aGFuIDMyYml0IHZhbHVlIGlzc3VlLgorCisyLglBZGQgdGhlIGxvZ2ljIGRyaXZlIGxpc3QgdG8gdGhlIGRyaXZlci4gIERyaXZlciB3aWxsCisJa2VlcCB0aGUgbG9naWMgZHJpdmUgbGlzdCBpbnRlcm5hbCBhZnRlciBkcml2ZXIgbG9hZC4KKworMy4JZHJpdmVyIGZpeGVkIHRoZSBkZXZpY2UgdXBkYXRlIGlzc3VlIGFmdGVyIGdldCB0aGUgQUVOCisJUEQgZGVsZXRlL0FERCwgTEQgYWRkL2RlbGV0ZSBmcm9tIEZXLgorCisxIFJlbGVhc2UgRGF0ZSAgICA6IFR1ZXMuICBKdWx5IDI4LCAyMDA5IDEwOjEyOjQ1IFBTVCAyMDA5IC0KKwkJCShlbWFpbGQtaWQ6bWVnYXJhaWRsaW51eEBsc2kuY29tKQorCQkJQm8gWWFuZworCisyIEN1cnJlbnQgVmVyc2lvbiA6IDAwLjAwLjA0LjEyCiszIE9sZGVyIFZlcnNpb24gICA6IDAwLjAwLjA0LjEwCisKKzEuCUNoYW5nZSB0aGUgQUVOIHN5cyBQRCB1cGRhdGUgZnJvbSBzY3NpX3NjYW4gdG8KKwlzY3NpX2FkZF9kZXZpY2UgYW5kIHNjc2lfcmVtb3ZlX2RldmljZS4KKzIuCVRha2VvZmYgdGhlIGRlYnVnIHByaW50LW91dCBpbiBhZW5fcG9sbGluZyByb3V0aW5lLgorCisxIFJlbGVhc2UgRGF0ZSAgICA6IFRodXIuICBKdWx5IDAyLCAyMDA5IDEwOjEyOjQ1IFBTVCAyMDA5IC0KKwkJCShlbWFpbGQtaWQ6bWVnYXJhaWRsaW51eEBsc2kuY29tKQorCQkJQm8gWWFuZworCisyIEN1cnJlbnQgVmVyc2lvbiA6IDAwLjAwLjA0LjEwCiszIE9sZGVyIFZlcnNpb24gICA6IDAwLjAwLjA0LjA4CisKKzEuCUFkZCB0aGUgMyBtaW5zIHRpbWVvdXQgZHVyaW5nIHRoZSBjb250cm9sbGVyIGluaXRpYWxpemUuCisyLglBZGQgdGhlIGZpeCBmb3IgNjRiaXQgc2Vuc2UgZGF0ZSBlcnJvcnMuCisKKzEgUmVsZWFzZSBEYXRlICAgIDogVHVlcy4gTWF5IDA1LCAyMDA5IDEwOjEyOjQ1IFBTVCAyMDA5IC0KKwkJCShlbWFpbGQtaWQ6bWVnYXJhaWRsaW51eEBsc2kuY29tKQorCQkJQm8gWWFuZworCisyIEN1cnJlbnQgVmVyc2lvbiA6IDAwLjAwLjA0LjA4CiszIE9sZGVyIFZlcnNpb24gICA6IDAwLjAwLjA0LjA2CisKKzEuCUFkZCB0aGUgZml4IG9mIHBlbmRpbmcgaW4gRlcgYWZ0ZXIgZGVsZXRlZCB0aGUgbG9naWMgZHJpdmVzLgorMi4JQWRkIHRoZSBmaXggb2YgZGVhbGxvY2F0aW5nIG1lbW9yeSBhZnRlciBnZXQgcGRsaXN0LgorCisxIFJlbGVhc2UgRGF0ZSAgICA6IFR1ZXMuIE1hcmNoIDI2LCAyMDA5IDEwOjEyOjQ1IFBTVCAyMDA5IC0KKwkJCShlbWFpbGQtaWQ6bWVnYXJhaWRsaW51eEBsc2kuY29tKQorCQkJQm8gWWFuZworCisyIEN1cnJlbnQgVmVyc2lvbiA6IDAwLjAwLjA0LjA2CiszIE9sZGVyIFZlcnNpb24gICA6IDAwLjAwLjA0LjA0CisKKzEuCUFkZCB0aGUgZml4IG9mIHRoZSBkcml2ZXIgY21kIGVtcHR5IGZpeCBvZiB0aGUgZHJpdmVyIGNtZCBlbXB0eS4KKzIuCUFkZCB0aGUgZml4IG9mIHRoZSBkcml2ZXIgTVNNIEFFTiBDTUQgY2F1c2UgdGhlIHN5c3RlbSBzbG93LgorCisxIFJlbGVhc2UgRGF0ZSAgICA6IFR1ZXMuIE1hcmNoIDAzLCAyMDA5IDEwOjEyOjQ1IFBTVCAyMDA5IC0KKwkJCShlbWFpbGQtaWQ6bWVnYXJhaWRsaW51eEBsc2kuY29tKQorCQkJQm8gWWFuZworCisyIEN1cnJlbnQgVmVyc2lvbiA6IDAwLjAwLjA0LjA0CiszIE9sZGVyIFZlcnNpb24gICA6IDAwLjAwLjA0LjAxCisKKzEuCUFkZCB0aGUgVGFwZSBkcml2ZSBmaXggdG8gdGhlIGRyaXZlcjogSWYgdGhlIGNvbW1hbmQgaXMgZm9yCisJdGhlIHRhcGUgZGV2aWNlLCBzZXQgdGhlIHB0aHJ1IHRpbWVvdXQgdG8gdGhlIG9zIGxheWVyIHRpbWVvdXQgdmFsdWUuCisKKzIuCUFkZCBQb2xsX3dhaXQgbWVjaGFuaXNtIHRvIEdlbi0yIExpbnV4IGRyaXYuCisJCUluIHRoZSBhZW4gaGFuZGxlciwgZHJpdmVyIG5lZWRzIHRvIHdha2V1cCBwb2xsIGhhbmRsZXIgc2ltaWxhciB0bworCQl0aGUgd2F5IGl0IHJhaXNlcyBTSUdJTy4KKworMy4JQWRkIG5ldyBjb250cm9sbGVyIG5ldyBTQVMyIHN1cHBvcnQgdG8gdGhlIGRyaXZlci4KKworNC4JUmVwb3J0IHRoZSB1bmNvbmZpZ3VyZWQgUEQgKHN5c3RlbSBQRCkgdG8gT1MuCisKKzUuCUFkZCB0aGUgSUVFRSBTR0wgc3VwcG9ydCB0byB0aGUgZHJpdmVyCisKKzYuCVJlYXNpZ24gdGhlIEFwcGxpY2F0aW9uIGNtZHMgdG8gU0FTMiBjb250cm9sbGVyCisKKzEgUmVsZWFzZSBEYXRlICAgIDogVGh1ci5KdWx5LiAyNCAxMTo0MTo1MSBQU1QgMjAwOCAtCisgICAgICAgICAgICAgICAgICAgICAgIChlbWFpbGQtaWQ6bWVnYXJhaWRsaW51eEBsc2kuY29tKQorICAgICAgICAgICAgICAgICAgICAgICBTdW1hbnQgUGF0cm8KKyAgICAgICAgICAgICAgICAgICAgICAgQm8gWWFuZworCisyIEN1cnJlbnQgVmVyc2lvbiA6IDAwLjAwLjA0LjAxCiszIE9sZGVyIFZlcnNpb24gICA6IDAwLjAwLjAzLjIyCisKKzEuIEFkZCB0aGUgbmV3IGNvbnRyb2xsZXIgKDAwNzgsIDAwNzkpIHN1cHBvcnQgdG8gdGhlIGRyaXZlcgorICAgICAgIFRob3NlIGNvbnRyb2xsZXJzIGFyZSBMU0kncyBuZXh0IGdlbmVyYXRhdGlvbihnZW4yKSBTQVMgY29udHJvbGxlcnMuCisKKzEgUmVsZWFzZSBEYXRlICAgIDogTW9uLkp1bmUuIDIzIDEwOjEyOjQ1IFBTVCAyMDA4IC0KKyAgICAgICAgICAgICAgICAgICAgICAgKGVtYWlsZC1pZDptZWdhcmFpZGxpbnV4QGxzaS5jb20pCisgICAgICAgICAgICAgICAgICAgICAgIFN1bWFudCBQYXRybworICAgICAgICAgICAgICAgICAgICAgICBCbyBZYW5nCisKKzIgQ3VycmVudCBWZXJzaW9uIDogMDAuMDAuMDMuMjIKKzMgT2xkZXIgVmVyc2lvbiAgIDogMDAuMDAuMDMuMjAKKworMS4gQWRkIHNodXRkb3duIERDTUQgY21kIHRvIHRoZSBzaHV0ZG93biByb3V0aW5lIHRvIG1ha2UgRlcgc2h1dGRvd24gcHJvcGVyLgorMi4gVW5leHBlY3RlZCBpbnRlcnJ1cHQgb2NjdXJzIGluIEhXUiBMaW51eCBkcml2ZXIsIGFkZCB0aGUgZHVteSByZWFkbCBwY2kgZmx1c2ggd2lsbCBmaXggdGhpcyBpc3N1ZS4KKworMSBSZWxlYXNlIERhdGUgICAgOiBNb24uIE1hcmNoIDEwIDExOjAyOjMxIFBEVCAyMDA4IC0KKwkJCShlbWFpbGQtaWQ6bWVnYXJhaWRsaW51eEBsc2kuY29tKQorCQkJU3VtYW50IFBhdHJvCisJCQlCbyBZYW5nCisKKzIgQ3VycmVudCBWZXJzaW9uIDogMDAuMDAuMDMuMjAtUkMxCiszIE9sZGVyIFZlcnNpb24gICA6IDAwLjAwLjAzLjE2CisKKzEuIFJvbGxiYWNrIHRoZSBzZW5zZSBpbmZvIGltcGxlbWVudGF0aW9uCisJU2Vuc2UgYnVmZmVyIHB0ciBkYXRhIHR5cGUgaW4gdGhlIGlvY3RsIHBhdGggaXMgcmV2ZXJ0ZWQgYmFjaworCXRvIHUzMiAqIGFzIGluIHByZXZpb3VzIHZlcnNpb25zIG9mIGRyaXZlci4KKworMi4gRml4ZWQgdGhlIGRyaXZlciBmcmFtZSBjb3VudC4KKwlXaGVuIERyaXZlciBzZW50IHdyb25nIGZyYW1lIGNvdW50IHRvIGZpcm13YXJlLiAgQXMgdGhpcworCXBhcnRpY3VsYXIgY29tbWFuZCBpcyBzZW50IHRvIGRyaXZlLCBGVyBpcyBzZWVpbmcgY29udGludW91cworCWNoaXAgcmVzZXRzIGFuZCBzbyB0aGUgY29tbWFuZCB3aWxsIHRpbWVvdXQuCisKKzMuIEFkZCB0aGUgbmV3IGNvbnRyb2xsZXIoMTA3OERFKSBzdXBwb3J0IHRvIHRoZSBkcml2ZXIKKwlhbmQgSW5jcmVhc2UgdGhlIG1heF93YWl0IHRvIDYwIGZyb20gMTAgaW4gdGhlIGNvbnRyb2xsZXIKKwlvcGVyYXRpb25hbCBzdGF0dXMuICBXaXRoIHRoaXMgbWF4X3dhaXQgaW5jcmVhc2UsIGRyaXZlciB3aWxsCisJbWFrZSBzdXJlIHRoZSBGVyB3aWxsIAlmaW5pc2ggdGhlIHBlbmRpbmcgY21kIGZvciBLRFVNUCBjYXNlLgorCisxIFJlbGVhc2UgRGF0ZSAgICA6IFRodXIuIE5vdi4gMDcgMTY6MzA6NDMgUFNUIDIwMDcgLQorCQkJKGVtYWlsZC1pZDptZWdhcmFpZGxpbnV4QGxzaS5jb20pCisJCQlTdW1hbnQgUGF0cm8KKwkJCUJvIFlhbmcKKworMiBDdXJyZW50IFZlcnNpb24gOiAwMC4wMC4wMy4xNgorMyBPbGRlciBWZXJzaW9uICAgOiAwMC4wMC4wMy4xNQorCisxLiBJbmNyZWFzZWQgTUZJX1BPTExfVElNRU9VVF9TRUNTIHRvIDYwIHNlY29uZHMgZnJvbSAxMC4gRlcgbWF5IHRha2UKKwlhIG1heCBvZiA2MCBzZWNvbmRzIHRvIHJlc3BvbmQgdG8gdGhlIElOSVQgY21kLgorCisxIFJlbGVhc2UgRGF0ZSAgICA6IEZyaS4gU2VwLiAwNyAxNjozMDo0MyBQU1QgMjAwNyAtCisJCQkoZW1haWxkLWlkOm1lZ2FyYWlkbGludXhAbHNpLmNvbSkKKwkJCVN1bWFudCBQYXRybworCQkJQm8gWWFuZworCisyIEN1cnJlbnQgVmVyc2lvbiA6IDAwLjAwLjAzLjE1CiszIE9sZGVyIFZlcnNpb24gICA6IDAwLjAwLjAzLjE0CisKKzEuIEFkZGVkIG1vZHVsZSBwYXJhbWV0ZXIgInBvbGxfbW9kZV9pbyIgdG8gc3VwcG9ydCBmb3IgInBvbGxpbmciCisJKHJlZHVjZWQgaW50ZXJydXB0IG9wZXJhdGlvbikuICBJbiB0aGlzIG1vZGUsIElPIGNvbXBsZXRpb24KKwlpbnRlcnJ1cHRzIGFyZSBkZWxheWVkLiBBdCB0aGUgZW5kIG9mIGluaXRpYXRpbmcgSU9zLCB0aGUKKwlkcml2ZXIgc2NoZWR1bGVzIGZvciBjbWQgY29tcGxldGlvbiBpZiB0aGVyZSBhcmUgcGVuZGluZyBjbWRzCisJdG8gYmUgY29tcGxldGVkLiAgQSB0aW1lci1iYXNlZCBpbnRlcnJ1cHQgaGFzIGFsc28gYmVlbiBhZGRlZAorCXRvIHByZXZlbnQgSU8gY29tcGxldGlvbiBwcm9jZXNzaW5nIGZyb20gYmVpbmcgZGVsYXllZAorCWluZGVmaW5pdGVseSBpbiB0aGUgY2FzZSB0aGF0IG5vIG5ldyBJT3MgYXJlIGluaXRpYXRlZC4KKworMSBSZWxlYXNlIERhdGUgICAgOiBGcmkuIFNlcC4gMDcgMTY6MzA6NDMgUFNUIDIwMDcgLQorCQkJKGVtYWlsZC1pZDptZWdhcmFpZGxpbnV4QGxzaS5jb20pCisJCQlTdW1hbnQgUGF0cm8KKwkJCUJvIFlhbmcKKworMiBDdXJyZW50IFZlcnNpb24gOiAwMC4wMC4wMy4xNAorMyBPbGRlciBWZXJzaW9uICAgOiAwMC4wMC4wMy4xMworCisxLiBTZXR0aW5nIHRoZSBtYXhfc2VjdG9yc19wZXJfcmVxIGJhc2VkIG9uIG1heCBTR0wgc3VwcG9ydGVkIGJ5IHRoZQorCUZXLiBQcmlvciB2ZXJzaW9ucyBjYWxjdWxhdGVkIHRoaXMgdmFsdWUgZnJvbSBjb250cm9sbGVyIGluZm8KKwkobWF4X3NlY3RvcnNfMSwgbWF4X3NlY3RvcnNfMikuIEZvciBjZXJ0YWluIGNvbnRyb2xsZXJzL0ZXLAorCXRoaXMgd2FzIHJlc3VsdGluZyBpbiBhIHZhbHVlIGdyZWF0ZXIgdGhhbiBtYXggU0dMIHN1cHBvcnRlZAorCWJ5IHRoZSBGVy4gSXNzdWUgd2FzIGZpcnN0IHJlcG9ydGVkIGJ5IHVzZXJzIHJ1bm5pbmcgTFVLUytYRlMKKwl3aXRoIG1lZ2FyYWlkX3Nhcy4gIFRoYW5rcyB0byBSQiBmb3IgcHJvdmlkaW5nIHRoZSBsb2dzIGFuZAorCWR1cGxpY2F0aW9uIHN0ZXBzIHRoYXQgaGVscGVkIHRvIGdldCB0byB0aGUgcm9vdCBjYXVzZSBvZiB0aGUKKwlpc3N1ZS4gIDIuIEluY3JlYXNlZCBNRklfUE9MTF9USU1FT1VUX1NFQ1MgdG8gNjAgc2Vjb25kcyBmcm9tCisJMTAuIEZXIG1heSB0YWtlIGEgbWF4IG9mIDYwIHNlY29uZHMgdG8gcmVzcG9uZCB0byB0aGUgSU5JVAorCWNtZC4KKworMSBSZWxlYXNlIERhdGUgICAgOiBGcmkuIEp1bmUuIDE1IDE2OjMwOjQzIFBTVCAyMDA3IC0KKwkJCShlbWFpbGQtaWQ6bWVnYXJhaWRsaW51eEBsc2kuY29tKQorCQkJU3VtYW50IFBhdHJvCisJCQlCbyBZYW5nCisKKzIgQ3VycmVudCBWZXJzaW9uIDogMDAuMDAuMDMuMTMKKzMgT2xkZXIgVmVyc2lvbiAgIDogMDAuMDAuMDMuMTIKKworMS4gQWRkZWQgdGhlIG1lZ2FzYXNfcmVzZXRfdGltZXIgcm91dGluZSB0byBpbnRlcmNlcHQgY21kIHRpbWVvdXQgYW5kIHRocm90dGxlIGlvLgorCitPbiBGcmksIDIwMDctMDMtMTYgYXQgMTY6NDQgLTA2MDAsIEphbWVzIEJvdHRvbWxleSB3cm90ZToKK0l0IGxvb2tzIGxpa2UgbWVnYXJhaWRfc2FzIGF0IGxlYXN0IG5lZWRzIHRoaXMgdG8gdGhyb3R0bGUgaXRzIGNvbW1hbmRzCis+IGFzIHRoZXkgYmVnaW4gdG8gdGltZSBvdXQuICBUaGUgY29kZSBrZWVwcyB0aGUgZXhpc3RpbmcgdHJhbnNwb3J0Cis+IHRlbXBsYXRlIHVzZSBvZiBlaF90aW1lZF9vdXQgKGFuZCBhbGxvd3MgdGhlIHRyYW5zcG9ydCB0byBvdmVycmlkZSB0aGUKKz4gaG9zdCBpZiB0aGV5IGJvdGggaGF2ZSB0aGlzIGNhbGxiYWNrKS4KKz4KKz4gSmFtZXMKKworMSBSZWxlYXNlIERhdGUgICAgOiBTYXQgTWF5LiAxMiAxNjozMDo0MyBQU1QgMjAwNyAtCisJCQkoZW1haWxkLWlkOm1lZ2FyYWlkbGludXhAbHNpLmNvbSkKKwkJCVN1bWFudCBQYXRybworCQkJQm8gWWFuZworCisyIEN1cnJlbnQgVmVyc2lvbiA6IDAwLjAwLjAzLjEyCiszIE9sZGVyIFZlcnNpb24gICA6IDAwLjAwLjAzLjExCisKKzEuICBXaGVuIE1lZ2FTQVMgZHJpdmVyIHJlY2VpdmVzIHJlc2V0IGNhbGwgZnJvbSBPUywgZHJpdmVyIHdhaXRzIGluIHJlc2V0Cityb3V0aW5lIGZvciBtYXggMyBtaW51dGVzIGZvciBhbGwgcGVuZGluZyBjb21tYW5kIGNvbXBsZXRpb24uIE5vdyBkcml2ZXIgd2lsbAorY2FsbCBjb21wbGV0aW9uIHJvdXRpbmUgZXZlcnkgNSBzZWNvbmRzIGZyb20gdGhlIHJlc2V0IHJvdXRpbmUgaW5zdGVhZCBvZgord2FpdGluZyBmb3IgZGVwZW5kaW5nIG9uIGNtZCBjb21wbGV0aW9uIGZyb20gaXNyIHBhdGguCisKKzEgUmVsZWFzZSBEYXRlICAgIDogTW9uIEFwci4gMzAgMTA6MjU6NTIgUFNUIDIwMDcgLQorCQkJKGVtYWlsZC1pZDptZWdhcmFpZGxpbnV4QGxzaS5jb20pCisJCQlTdW1hbnQgUGF0cm8KKwkJCUJvIFlhbmcKKworMiBDdXJyZW50IFZlcnNpb24gOiAwMC4wMC4wMy4xMQorMyBPbGRlciBWZXJzaW9uICAgOiAwMC4wMC4wMy4wOQorCisJMS4gTWVtb3J5IE1hbmFnZXIgZm9yIElPQ1RMIHJlbW92ZWQgZm9yIDIuNiBrZXJuZWxzLgorCSAgIHBjaV9hbGxvY19jb25zaXN0ZW50IHJlcGxhY2VkIGJ5IGRtYV9hbGxvY19jb2hlcmVudC4gV2l0aCB0aGlzCisJICAgY2hhbmdlIHRoZXJlIGlzIG5vIG5lZWQgb2YgbWVtb3J5IG1hbmFnZXIgaW4gdGhlIGRyaXZlciBjb2RlCisKKwlPbiBXZWQsIDIwMDctMDItMDcgYXQgMTM6MzAgLTA4MDAsIEFuZHJldyBNb3J0b24gd3JvdGU6CisJPiBJIHN1c3BlY3QgYWxsIHRoaXMgaG9ycm9yIGlzIGR1ZSB0byBzdHVwaWRpdHkgaW4gdGhlIERNQSBBUEkuCisJPgorCT4gcGNpX2FsbG9jX2NvbnNpc3RlbnQoKSBqdXN0IGdvZXMgYW5kIGFzc3VtZXMgR0ZQX0FUT01JQywgd2hlcmVhcworCT4gdGhlIGNhbGxlciAobWVnYXNhc19tZ210X2Z3X2lvY3RsKSB3b3VsZCBoYXZlIGJlZW4gcGVyZmVjdGx5IGhhcHB5CisJPiB0byB1c2UgR0ZQX0tFUk5FTC4KKwk+CisJPiBJIGJldCB0aGlzIGZpeGVzIGl0CisKKwlJdCBkb2VzLCBidXQgdGhlIERNQSBBUEkgd2FzIGV4cGFuZGVkIHRvIGNvcGUgd2l0aCB0aGlzIGV4YWN0IGNhc2UsIHNvCisJdXNlIGRtYV9hbGxvY19jb2hlcmVudCgpIGRpcmVjdGx5IGluIHRoZSBtZWdhcmFpZCBjb2RlIGluc3RlYWQuICBUaGUgZGV2CisJaXMganVzdCAmcGNpX2Rldi0+ZGV2LgorCisJSmFtZXMgPEphbWVzLkJvdHRvbWxleUBTdGVlbEV5ZS5jb20+CisKKwkzLiBTWU5DSFJPTklaRV9DQUNIRSBpcyBub3Qgc3VwcG9ydGVkIGJ5IEZXIGFuZCB0aHVzIGJsb2NrZWQgYnkgZHJpdmVyLgorCTQuIEhpYmVybmF0aW9uIHN1cHBvcnQgYWRkZWQKKwk1LiBQZXJmb3JtaW5nIGRpc2tkdW1wIHdoaWxlIHJ1bm5pbmcgSU8gaW4gUkhFTCA0IHdhcyBmYWlsaW5nLiBGaXhlZC4KKworMSBSZWxlYXNlIERhdGUgICAgOiBGcmkgRmViLiAwOSAxNDozNjoyOCBQU1QgMjAwNyAtCisJCQkoZW1haWxkLWlkOm1lZ2FyYWlkbGludXhAbHNpLmNvbSkKKwkJCVN1bWFudCBQYXRybworCQkJQm8gWWFuZworCisyIEN1cnJlbnQgVmVyc2lvbiA6IDAwLjAwLjAzLjA5CiszIE9sZGVyIFZlcnNpb24gICA6IDAwLjAwLjAzLjA4CisKK2kuCVVuZGVyIGhlYXZ5IElPIG1pZC1sYXllciBwcmludHMgIkRSSVZFUl9USU1FT1VUIiBlcnJvcnMKKworCVRoZSBkcml2ZXIgbm93IHdhaXRzIGZvciAxMCBzZWNvbmRzIHRvIGVsYXBzZSBpbnN0ZWFkIG9mIDUgKGFzIGluCisJcHJldmlvdXMgcmVsZWFzZSkgdG8gcmVzdW1lIElPLgorCisxIFJlbGVhc2UgRGF0ZSAgICA6IE1vbiBGZWIuIDA1IDExOjM1OjI0IFBTVCAyMDA3IC0KKwkJCShlbWFpbGQtaWQ6bWVnYXJhaWRsaW51eEBsc2kuY29tKQorCQkJU3VtYW50IFBhdHJvCisJCQlCbyBZYW5nCisyIEN1cnJlbnQgVmVyc2lvbiA6IDAwLjAwLjAzLjA4CiszIE9sZGVyIFZlcnNpb24gICA6IDAwLjAwLjAzLjA3CisKK2kuCVVuZGVyIGhlYXZ5IElPIG1pZC1sYXllciBwcmludHMgIkRSSVZFUl9USU1FT1VUIiBlcnJvcnMKKworCUZpeDoJVGhlIGRyaXZlciBpcyBub3cgdGhyb3R0bGluZyBJTy4KKwlDaGVja3MgYWRkZWQgaW4gbWVnYXNhc19xdWV1ZV9jb21tYW5kIHRvIGtub3cgaWYgRlcgaXMgYWJsZSB0bworCXByb2Nlc3MgY29tbWFuZHMgd2l0aGluIHRpbWVvdXQgcGVyaW9kLiBJZiBudW1iZXIgb2YgcmV0cmllcworCWlzIDIgb3IgZ3JlYXRlcix0aGUgZHJpdmVyIHN0b3BzIHNlbmRpbmcgY21kIHRvIEZXIHRlbXBvcmFyaWx5LiBJTyBpcworCXJlc3VtZWQgaWYgcGVuZGluZyBjbWQgY291bnQgcmVkdWNlcyB0byAxNiBvciA1IHNlY29uZHMgaGFzIGVsYXBzZWQKKwlmcm9tIHRoZSB0aW1lIGNtZHMgd2VyZSBsYXN0IHNlbnQgdG8gRlcuCisKK2lpLglGVyBlbmFibGVzIFdDRSBiaXQgaW4gTW9kZSBTZW5zZSBjbWQgZm9yIGRyaXZlcyB0aGF0IGFyZSBjb25maWd1cmVkCisJYXMgV3JpdGVCYWNrLiBUaGUgT1MgbWF5IHNlbmQgIlNZTkNIUk9OSVpFX0NBQ0hFIiBjbWQgd2hlbiBMb2dpY2FsCisJRGlza3MgYXJlIGV4cG9zZWQgd2l0aCBXQ0U9MS4gVXNlciBpcyBhZHZpc2VkIHRvIGVuYWJsZSBXcml0ZSBCYWNrCisJbW9kZSBvbmx5IHdoZW4gdGhlIGNvbnRyb2xsZXIgaGFzIGJhdHRlcnkgYmFja3VwLiBBdCB0aGlzIHRpbWUKKwlTeW5ocm9uaXplIGNhY2hlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIEZXLiBEcml2ZXIgd2lsbCBzaG9ydC1jeWNsZQorCXRoZSBjbWQgYW5kIHJldHVybiBzdWNjZXNzIHdpdGhvdXQgc2VuZGluZyBkb3duIHRvIEZXLgorCisxIFJlbGVhc2UgRGF0ZSAgICA6IFN1biBKYW4uIDE0IDExOjIxOjMyIFBEVCAyMDA3IC0KKwkJIFN1bWFudCBQYXRybyA8U3VtYW50LlBhdHJvQGxzaWwuY29tPi9CbyBZYW5nCisyIEN1cnJlbnQgVmVyc2lvbiA6IDAwLjAwLjAzLjA3CiszIE9sZGVyIFZlcnNpb24gICA6IDAwLjAwLjAzLjA2CisKK2kuCWJpb3NfcGFyYW0gZW50cnkgYWRkZWQgaW4gc2NzaV9ob3N0X3RlbXBsYXRlIHRoYXQgcmV0dXJucyBkaXNrIGdlb21ldHJ5CisJaW5mb3JtYXRpb24uCisKKzEgUmVsZWFzZSBEYXRlICAgIDogRnJpIE9jdCAyMCAxMToyMTozMiBQRFQgMjAwNiAtIFN1bWFudCBQYXRybyA8U3VtYW50LlBhdHJvQGxzaWwuY29tPi9CbyBZYW5nCisyIEN1cnJlbnQgVmVyc2lvbiA6IDAwLjAwLjAzLjA2CiszIE9sZGVyIFZlcnNpb24gICA6IDAwLjAwLjAzLjA1CisKKzEuIEFkZGVkIG5ldyBtZW1vcnkgbWFuYWdlbWVudCBtb2R1bGUgdG8gc3VwcG9ydCB0aGUgSU9DVEwgbWVtb3J5IGFsbG9jYXRpb24uIEZvciBJT0NUTCB3ZSB0cnkgdG8gYWxsb2NhdGUgZnJvbSB0aGUgbWVtb3J5IHBvb2wgY3JlYXRlZCBkdXJpbmcgZHJpdmVyIGluaXRpYWxpemF0aW9uLiBJZiBtZW0gcG9vbCBpcyBlbXB0eSB0aGVuIHdlIGFsbG9jYXRlIGF0IHJ1biB0aW1lLgorMi4gQWRkZWQgY2hlY2sgaW4gbWVnYXNhc19xdWV1ZV9jb21tYW5kIGFuZCBkcGMvaXNyIHJvdXRpbmUgdG8gc2VlIGlmIHdlIGhhdmUgYWxyZWFkeSBkZWNsYXJlZCBhZGFwdGVyIGRlYWQKKyAgIChod19jcml0X2Vycm9yPTEpLiBJZiBod19jcml0X2Vycm9yPT0xLCBub3cgd2UgZG9ub3QgYWNjZXB0IGFueSBwcm9jZXNzaW5nIG9mIHBlbmRpbmcgY21kcy9hY2NlcHQgYW55IGNtZCBmcm9tIE9TCisKKzEgUmVsZWFzZSBEYXRlICAgIDogTW9uIE9jdCAwMiAxMToyMTozMiBQRFQgMjAwNiAtIFN1bWFudCBQYXRybyA8U3VtYW50LlBhdHJvQGxzaWwuY29tPgorMiBDdXJyZW50IFZlcnNpb24gOiAwMC4wMC4wMy4wNQorMyBPbGRlciBWZXJzaW9uICAgOiAwMC4wMC4wMy4wNAorCitpLglQQ0lfREVWSUNFIG1hY3JvIHVzZWQKKworCUNvbnZlcnQgdGhlIHBjaV9kZXZpY2VfaWQtdGFibGUgb2YgdGhlIG1lZ2FyYWlkX3Nhcy1kcml2ZXIgdG8gdGhlIFBDSV9ERVZJQ0UtbWFjcm8sIHRvIHNhZmUgc29tZSBsaW5lcy4KKworCQktIEhlbnJpayBLcmV0enNjaG1hciA8aGVubmVAbmFjaHR3aW5kaGVpbS5kZT4KK2lpLglBbGwgY29tcGlsZXIgd2FybmluZ3MgcmVtb3ZlZAoraWlpLgltZWdhc2FzX2N0cmxfaW5mbyBzdHJ1Y3QgcmV2ZXJ0ZWQgdG8gMy4wMiByZWxlYXNlCitpdi4JRGVmYXVsdCB2YWx1ZSBvZiBtZWdhc2FzX2RiZ19sdmwgc2V0IHRvIDAKK3YuCVJlbW92aW5nIGluIG1lZ2FzYXNfZXhpdCB0aGUgc3lzZnMgZW50cnkgY3JlYXRlZCBmb3IgbWVnYXNhc19kYmdfbHZsCit2aS4JSW4gbWVnYXNhc190ZWFyZG93bl9mcmFtZV9wb29sKCksIGNtZC0+ZnJhbWUgd2FzIHBhc3NlZCBpbnN0ZWFkIG9mCisJY21kLT5zZW5zZSB0byBwY2lfcG9vbF9mcmVlLiBGaXhlZC4gQnVnIHdhcyBwb2ludGVkIG91dCBieQorCUVyaWMgU2VzdGVyaGVubgorCisxIFJlbGVhc2UgRGF0ZSAgICA6IFdlZCBTZXAgMTMgMTQ6MjI6NTEgUERUIDIwMDYgLSBTdW1hbnQgUGF0cm8gPFN1bWFudC5QYXRyb0Bsc2lsLmNvbT4KKzIgQ3VycmVudCBWZXJzaW9uIDogMDAuMDAuMDMuMDQKKzMgT2xkZXIgVmVyc2lvbiAgIDogMDAuMDAuMDMuMDMKKworaS4JQWRkZWQgUmVib290IG5vdGlmeQoraWkuCVJlZHVjZWQgYnkgMSBtYXggY21kcyBzZW50IHRvIEZXIGZyb20gRHJpdmVyIHRvIG1ha2UgdGhlIHJlcGx5X3Ffc3ogc2FtZQorCWFzIE1heCBDbWRzIEZXIGNhbiBzdXBwb3J0CisKKzEgUmVsZWFzZSBEYXRlICAgIDogVHVlIEF1ZyAyMiAxNjozMzoxNCBQRFQgMjAwNiAtIFN1bWFudCBQYXRybyA8U3VtYW50LlBhdHJvQGxzaWwuY29tPgorMiBDdXJyZW50IFZlcnNpb24gOiAwMC4wMC4wMy4wMworMyBPbGRlciBWZXJzaW9uICAgOiAwMC4wMC4wMy4wMgorCitpLglTZW5kIHN0b3AgYWRhcHRlciB0byBGVyAmIER1bXAgcGVuZGluZyBGVyBjbWRzIGJlZm9yZSBkZWNsYXJpbmcgYWRhcHRlciBkZWFkLgorCU5ldyB2YXJpYmxlIGFkZGVkIHRvIHNldCBkYmcgbGV2ZWwuCitpaS4JRGlzYWJsZSBpbnRlcnJ1cHQgbWFkZSBhcyBmbiBwb2ludGVyIGFzIHRoZXkgYXJlIGRpZmZlcmVudCBmb3IgMTA2OCAvIDEwNzgKK2lpaS4JRnJhbWUgY291bnQgb3B0aW1pemF0aW9uLiBNYWluIGZyYW1lIGNhbiBjb250YWluIDIgU0dFIGZvciA2NCBiaXQgU0dMcyBhbmQKKwkzIFNHRSBmb3IgMzIgYml0IFNHTAoraXYuCVRhc2tsZXQgYWRkZWQgZm9yIGNtZCBjb21wbGV0aW9uCit2LglJZiBGVyBpbiBvcGVyYXRpb25hbCBzdGF0ZSBiZWZvcmUgZmlyaW5nIElOSVQsIG5vdyB3ZSBzZW5kIFJFU0VUIEZsYWcgdG8gRlcgaW5zdGVhZCBvZiBqdXN0IFJFQURZLiBUaGlzIGlzIHVzZWQgdG8gZG8gc29mdCByZXNldC4KK3ZpLgltZWdhc2FzX2N0cmxfcHJvcCBzdHJ1Y3R1cmUgdXBkYXRlZCAoYmFzZWQgb24gRlcgc3RydWN0KQordmlpLglBZGRlZCBwcmludCA6IEZXIG5vdyBpbiBSZWFkeSBTdGF0ZSBkdXJpbmcgaW5pdGlhbGl6YXRpb24KKworMSBSZWxlYXNlIERhdGUgICAgOiBTdW4gQXVnIDA2IDIyOjQ5OjUyIFBEVCAyMDA2IC0gU3VtYW50IFBhdHJvIDxTdW1hbnQuUGF0cm9AbHNpbC5jb20+CisyIEN1cnJlbnQgVmVyc2lvbiA6IDAwLjAwLjAzLjAyCiszIE9sZGVyIFZlcnNpb24gICA6IDAwLjAwLjAzLjAxCisKK2kuCUFkZGVkIEZXIHRyYW5pc3Rpb24gc3RhdGUgZm9yIEhvdHBsdWcgc2NlbmFyaW8KKworMSBSZWxlYXNlIERhdGUgICAgOiBTdW4gTWF5IDE0IDIyOjQ5OjUyIFBEVCAyMDA2IC0gU3VtYW50IFBhdHJvIDxTdW1hbnQuUGF0cm9AbHNpbC5jb20+CisyIEN1cnJlbnQgVmVyc2lvbiA6IDAwLjAwLjAzLjAxCiszIE9sZGVyIFZlcnNpb24gICA6IDAwLjAwLjAyLjA0CisKK2kuCUFkZGVkIHN1cHBvcnQgZm9yIFpDUiBjb250cm9sbGVyLgorCisJCU5ldyBkZXZpY2UgaWQgMHg0MTMgYWRkZWQuCisKK2lpLglCdWcgZml4IDogRGlzYWJsZSBjb250cm9sbGVyIGludGVycnVwdCBiZWZvcmUgZmlyaW5nIElOSVQgY21kIHRvIEZXLgorCisJCUludGVycnVwdCBpcyBlbmFibGVkIGFmdGVyIHJlcXVpcmVkIGluaXRpYWxpemF0aW9uIGlzIG92ZXIuCisJCVRoaXMgaXMgZG9uZSB0byBlbnN1cmUgdGhhdCBkcml2ZXIgaXMgcmVhZHkgdG8gaGFuZGxlIGludGVycnVwdHMgd2hlbgorCQlpdCBpcyBnZW5lcmF0ZWQgYnkgdGhlIGNvbnRyb2xsZXIuCisKKwkJLVN1bWFudCBQYXRybyA8U3VtYW50LlBhdHJvQGxzaWwuY29tPgorCisxIFJlbGVhc2UgRGF0ZSAgICA6IFdlZCBGZWIgMDMgMTQ6MzE6NDQgUFNUIDIwMDYgLSBTdW1hbnQgUGF0cm8gPFN1bWFudC5QYXRyb0Bsc2lsLmNvbT4KKzIgQ3VycmVudCBWZXJzaW9uIDogMDAuMDAuMDIuMDQKKzMgT2xkZXIgVmVyc2lvbiAgIDogMDAuMDAuMDIuMDQgCisKK2kuCVJlbW92ZSBzdXBlcmZsb3VzIGluc3RhbmNlX2xvY2sKKworCWdldHMgcmlkIG9mIHRoZSBvdGhlcndpc2Ugc3VwZXJmbG91cyBpbnN0YW5jZV9sb2NrIGFuZCBhdm9pZHMgYW4gdW5zYXZlIAorCXVuc3luY2hyb25pemVkIGFjY2VzcyBpbiB0aGUgZXJyb3IgaGFuZGxlci4KKworCQktIENocmlzdG9waCBIZWxsd2lnIDxoY2hAbHN0LmRlPgorCisKKzEgUmVsZWFzZSBEYXRlICAgIDogV2VkIEZlYiAwMyAxNDozMTo0NCBQU1QgMjAwNiAtIFN1bWFudCBQYXRybyA8U3VtYW50LlBhdHJvQGxzaWwuY29tPgorMiBDdXJyZW50IFZlcnNpb24gOiAwMC4wMC4wMi4wNAorMyBPbGRlciBWZXJzaW9uICAgOiAwMC4wMC4wMi4wNCAKKworaS4JU3VwcG9ydCBmb3IgMTA3OCB0eXBlIChwcGMgSU9QKSBjb250cm9sbGVyLCBkZXZpY2UgaWQgOiAweDYwIGFkZGVkLgorCUR1cmluZyBpbml0aWFsaXphdGlvbiwgZGVwZW5kaW5nIG9uIHRoZSBkZXZpY2UgaWQsIHRoZSB0ZW1wbGF0ZSBtZW1iZXJzIAorCWFyZSBpbml0aWFsaXplZCB3aXRoIGZ1bmN0aW9uIHBvaW50ZXJzIHNwZWNpZmljIHRvIHRoZSBwcGMgb3IgCisJeHNjYWxlIGNvbnRyb2xsZXJzLiAgCisKKwkJLVN1bWFudCBQYXRybyA8U3VtYW50LlBhdHJvQGxzaWwuY29tPgorCQkKKzEgUmVsZWFzZSBEYXRlICAgIDogRnJpIEZlYiAwMyAxNDoxNjoyNSBQU1QgMjAwNiAtIFN1bWFudCBQYXRybyAKKwkJCQkJCQk8U3VtYW50LlBhdHJvQGxzaWwuY29tPgorMiBDdXJyZW50IFZlcnNpb24gOiAwMC4wMC4wMi4wNAorMyBPbGRlciBWZXJzaW9uICAgOiAwMC4wMC4wMi4wMiAKK2kuCVJlZ2lzdGVyIDE2IGJ5dGUgQ0RCIGNhcGFiaWxpdHkgd2l0aCBzY3NpIG1pZGxheWVyIAorCisJIlRoaXMgcGF0Y2ggcHJvcGVybHkgcmVnaXN0ZXJzIHRoZSAxNiBieXRlIGNvbW1hbmQgbGVuZ3RoIGNhcGFiaWxpdHkgb2YgdGhlIAorCW1lZ2FyYWlkX3NhcyBjb250cm9sbGVkIGhhcmR3YXJlIHdpdGggdGhlIHNjc2kgbWlkbGF5ZXIuIEFsbCBtZWdhcmFpZF9zYXMgCisJaGFyZHdhcmUgc3VwcG9ydHMgMTYgYnl0ZSBDREIncy4iCisKKwkJLUpvc2h1YSBHaWxlcyA8am9zaHVhX2dpbGVzQGRlbGwuY29tPiAKKworMSBSZWxlYXNlIERhdGUgICAgOiBNb24gSmFuIDIzIDE0OjA5OjAxIFBTVCAyMDA2IC0gU3VtYW50IFBhdHJvIDxTdW1hbnQuUGF0cm9AbHNpbC5jb20+CisyIEN1cnJlbnQgVmVyc2lvbiA6IDAwLjAwLjAyLjAyCiszIE9sZGVyIFZlcnNpb24gICA6IDAwLjAwLjAyLjAxIAorCitpLglOZXcgdGVtcGxhdGUgZGVmaW5lZCB0byByZXByZXNlbnQgZWFjaCBmYW1pbHkgb2YgY29udHJvbGxlcnMgKGlkZW50aWZpZWQgYnkgcHJvY2Vzc29yIHVzZWQpLiAKKwlUaGUgdGVtcGxhdGUgd2lsbCBoYXZlIGRlZmludGlvbnMgdGhhdCB3aWxsIGJlIGluaXRpYWxpc2VkIHRvIGFwcHJvcHJpdGFlIHZhbHVlcyBmb3IgYSBzcGVjaWZpYyBmYW1pbHkgb2YgY29udHJvbGxlcnMuIFRoZSB0ZW1wbGF0ZSBkZWZpbml0aW9uIGhhcyBmb3VyIGZ1bmN0aW9uIHBvaW50ZXJzLiBEdXJpbmcgZHJpdmVyIGluaXRpYWxpc2F0aW9uIHRoZSBmdW5jdGlvbiBwb2ludGVycyB3aWxsIGJlIHNldCBiYXNlZCBvbiB0aGUgY29udHJvbGxlciBmYW1pbHkgdHlwZS4gVGhpcyBjaGFuZ2UgaXMgZG9uZSB0byBzdXBwb3J0IG5ldyBjb250cm9sbGVycyB0aGF0IGhhcyBkaWZmZXJlbnQgcHJvY2Vzc29ycyBhbmQgdGh1cyBkaWZmZXJlbnQgcmVnaXN0ZXIgc2V0LgorCisJCS1TdW1hbnQgUGF0cm8gPFN1bWFudC5QYXRyb0Bsc2lsLmNvbT4KKworMSBSZWxlYXNlIERhdGUgICAgOiBNb24gRGVjIDE5IDE0OjM2OjI2IFBTVCAyMDA1IC0gU3VtYW50IFBhdHJvIDxTdW1hbnQuUGF0cm9AbHNpbC5jb20+CisyIEN1cnJlbnQgVmVyc2lvbiA6IDAwLjAwLjAyLjAwLXJjNCAKKzMgT2xkZXIgVmVyc2lvbiAgIDogMDAuMDAuMDIuMDEgCisKK2kuCUNvZGUgcmVvcmdhbml6ZWQgdG8gcmVtb3ZlIGNvZGUgZHVwbGljYXRpb24gaW4gbWVnYXNhc19idWlsZF9jbWQuIAorCisJIlRoZXJlJ3MgYSBsb3Qgb2YgZHVwbGljYXRlIGNvZGUgbWVnYXNhc19idWlsZF9jbWQuICBNb3ZlIHRoYXQgb3V0IG9mIHRoZSBkaWZmZXJlbnQgY29kZXBhdGhlcyBhbmQgbWVyZ2UgdGhlIHJlbWluZGVyIG9mIG1lZ2FzYXNfYnVpbGRfY21kIGludG8gbWVnYXNhc19xdWV1ZV9jb21tYW5kIgorCisJCS0gQ2hyaXN0b3BoIEhlbGx3aWcgPGhjaEBsc3QuZGU+CisKK2lpLglEZWZpbmVkIE1FR0FTQVNfSU9DX0ZJUk1XQVJFMzIgZm9yIGNvZGUgcGF0aHMgdGhhdCBoYW5kbGVzIDMyIGJpdCBhcHBsaWNhdGlvbnMgaW4gNjQgYml0IHN5c3RlbXMuCisKKwkiTUVHQVNBU19JT0NfRklSTVdBUkUgY2FuJ3QgYmUgcmVkZWZpbmVkIGlmIENPTkZJR19DT01QQVQgaXMgc2V0LCB3ZSBuZWVkIHRvIGRlZmluZSBhIE1FR0FTQVNfSU9DX0ZJUk1XQVJFMzIgZGVmaW5lIHNvIG5hdGl2ZSBiaW5hcmllcyBjb250aW51ZSB0byB3b3JrIgorCisJCS0gQ2hyaXN0b3BoIEhlbGx3aWcgPGhjaEBsc3QuZGU+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLm5jcjUzYzh4eCBiL0RvY3VtZW50YXRpb24vc2NzaS9DaGFuZ2VMb2cubmNyNTNjOHh4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyODhlM2QKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLm5jcjUzYzh4eApAQCAtMCwwICsxLDQ5NSBAQAorU2F0IE1heSAxMiAxMjowMCAyMDAxIEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogdmVyc2lvbiBuY3I1M2M4eHgtMy40LjNiCisJLSBFbnN1cmUgTEVEQyBiaXQgaW4gR1BDTlRMIGlzIGNsZWFyZWQgd2hlbiByZWFkaW5nIHRoZSBOVlJBTS4KKwkgIEZpeCBzZW50IGJ5IFN0aWcgVGVsZmVyIDxzdGlnQGFwaS1uZXR3b3Jrcy5jb20+LgorCS0gRGVmaW5lIHNjc2lfc2V0X3BjaV9kZXZpY2UoKSBhcyBuaWwgZm9yIGtlcm5lbCA8IDIuNC40LgorCitNb24gRmViIDEyIDIyOjMwIDIwMDEgR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiB2ZXJzaW9uIG5jcjUzYzh4eC0zLjQuMworCS0gQ2FsbCBwY2lfZW5hYmxlX2RldmljZSgpIGFzIEFDIHdhbnRzIHRoaXMgdG8gYmUgZG9uZS4KKwktIEdldCBib3RoIHRoZSBCQVIgY29va2llcyBhY3R1YWwgYW5kIFBDSSBCQVIgdmFsdWVzLgorCSAgKHNlZSBDaGFuZ2Vsb2cuc3ltNTNjOHh4IHJldi4gMS43LjMgZm9yIGRldGFpbHMpCisJLSBNZXJnZSBjaGFuZ2VzIGZvciBsaW51eC0yLjQgdGhhdCBkZWNsYXJlIHRoZSBob3N0IHRlbXBsYXRlIAorCSAgaW4gdGhlIGRyaXZlciBvYmplY3QgYWxzbyB3aGVuIHRoZSBkcml2ZXIgaXMgc3RhdGljYWxseSAKKwkgIGxpbmtlZCB3aXRoIHRoZSBrZXJuZWwuCisKK1N1biBTZXAgMjQgMjE6MzAgMjAwMCBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHZlcnNpb24gbmNyNTNjOHh4LTMuNC4yCisJLSBTZWUgQ2hhbmdlbG9nLnN5bTUzYzh4eCwgZHJpdmVyIHZlcnNpb24gMS43LjIuCisKK1dlZCBKdWwgMjYgMjM6MzAgMjAwMCBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHZlcnNpb24gbmNyNTNjOHh4LTMuNC4xCisJLSBQcm92aWRlIE9wZW5GaXJtd2FyZSBwYXRoIHRocm91Z2ggdGhlIHByb2MgRlMgb24gUFBDLgorCS0gUmVtb3ZlIHRyYWlsaW5nIGFyZ3VtZW50ICMyIGZyb20gYSBjb3VwbGUgb2YgI3VuZGVmcy4KKworU3VuIEp1bCAwOSAxNjozMCAyMDAwIEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogdmVyc2lvbiBuY3I1M2M4eHgtMy40LjAKKwktIFJlbW92ZSB0aGUgUFJPRklMRSBDIGFuZCBTQ1JJUFRTIGNvZGUuCisJICBUaGlzIGZhY2lsaXR5IHdhcyBub3QgdGhpcyB1c2VmdWwgYW5kIHRodXMgd2FzIG5vdCBsb25nZXIgCisJICBkZXNpcmFibGUgZ2l2ZW4gdGhlIGluY3JlYXNpbmcgY29tcGxleGl0eSBvZiB0aGUgZHJpdmVyIGNvZGUuCisJLSBNZXJnZXMgZnJvbSBGcmVlQlNEIHN5bS0xLjYuMiBkcml2ZXI6CisJICAqIENsYXJpZnkgbWVtb3J5IGJhcnJpZXJzIG5lZWRlZCBieSB0aGUgZHJpdmVyIGZvciBhcmNoaXRlY3R1cmVzIAorCSAgICB0aGF0IGltcGxlbWVudCBhIHdlYWsgbWVtb3J5IG9yZGVyaW5nLgorCS0gR2VuZXJhbCBjbGVhbnVwOgorCSAgTW92ZSBkZWZpbml0aW9ucyBmb3IgYmFycmllcnMgYW5kIElPL01NSU8gb3BlcmF0aW9ucyB0byB0aGUgCisJICBzeW01M2M4eHhfZGVmcy5oIGhlYWRlciBmaWxlcy4gVGhleSBhcmUgbm93IHNoYXJlZCBieSB0aGUgCisJICBib3RoIGRyaXZlcnMuCisJICBVc2UgU0NTSV9OQ1JfSU9NQVBQRUQgaW5zdGVhZCBvZiBOQ1JfSU9NQVBQRUQuCisKK1RodSBNYXkgMTEgICAxMjozMCAyMDAwIFBhbSBEZWxhbmV5IChwYW0uZGVsYW5leUBsc2lsLmNvbSkKKwkqIHJldmlzaW9uIDMuM2IKKyAKK01vbiBBcHIgMjQgMTI6MDAgMjAwMCBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHJldmlzaW9uIDMuMmkKKwktIFJldHVybiB2YWx1ZSAxIChpbnN0ZWFkIG9mIDApIGZyb20gdGhlIGRyaXZlciBzZXR1cCByb3V0aW5lLgorCS0gTGV0IHRoZSBkcml2ZXIgYWxzbyBhdHRhY2ggY29udHJvbGxlcnMgdGhhdCBoYXZlIGJlZW4gc2V0IHRvIAorCSAgT0ZGIGluIHRoZSBOVlJBTSBhcyBpdCBkaWQgcHJpb3IgdG8gcmV2aXNpb24gMy4yZy4KKworU2F0IEFwciAxICAxMjowMCAyMDAwIEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogcmV2aXNpb24gMy4yaAorCS0gRml4IGEgY29tcGlsYXRpb24gcHJvYmxlbSBvbiBBbHBoYSBpbnRyb2R1Y2VkIGluIHZlcnNpb24gMy4yZy4KKyAgICAgICAgICAoYHBvcnQnIGNoYW5nZWQgdG8gYGJhc2VfaW8nKS4KKwktIE1vdmUgZnJvbSBgc3ltJyB0byB0aGlzIGRyaXZlciBhIHRpbnkgY2hhbmdlIGZvciBfX3NwYXJjX18gdGhhdCAKKwkgIGFwcGxpZXMgdG8gY2FjaGUgbGluZSBzaXplICg/IFByb2JhYmx5IGZyb20gRGF2aWQgUyBNaWxsZXIpLgorCS0gTWFrZSBzdXJlIG5vIGRhdGEgdHJhbnNmZXIgd2lsbCBoYXBwZW4gZm9yIFNjc2lfQ21uZCByZXF1ZXN0cyAKKwkgIHRoYXQgc3VwcGx5IFNDU0lfREFUQV9OT05FIGRpcmVjdGlvbiAodGhpcyBhdm9pZHMgc29tZSBCVUcoKSAKKwkgIHN0YXRlbWVudCBpbiB0aGUgUENJIGNvZGUgd2hlbiBhIGRhdGEgYnVmZmVyIGlzIGFsc28gc3VwcGxpZWQpLgorCitUaHUgTWFyIDE2ICAgOTozMCAyMDAwIFBhbSBEZWxhbmV5IChwYW0uZGVsYW5leUBsc2lsLmNvbSkKKwkqIHJldmlzaW9uIDMuM2ItMworIAktIEFkZGVkIGV4Y2x1c2lvbiBmb3IgdGhlIDUzQzEwMTAgYW5kIDUzQzEwMTBfNjYgY2hpcHMKKwkgIHRvIHRoZSBkcml2ZXIgKGNoYW5nZSB0byBzeW01M2M4eHhfY29tbS5oKS4KKworTW9uIE1hcmNoIDYgIDIzOjE1IDIwMDAgR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiByZXZpc2lvbiAzLjJnCisJLSBBZGQgdGhlIGZpbGUgc3ltNTNjOHh4X2NvbW0uaCB0aGF0IGNvbGxlY3RzIGNvZGUgdGhhdCBzaG91bGQgCisJICBiZSBzaGFyZWQgYnkgc3ltNTNjOHh4IGFuZCBuY3I1M2M4eHggZHJpdmVycy4gRm9yIG5vdywgaXQgaXMgIAorCSAgYSBoZWFkZXIgZmlsZSB0aGF0IGlzIG9ubHkgaW5jbHVkZWQgYnkgdGhlIG5jcjUzYzh4eCBkcml2ZXIsIAorCSAgYnV0IHRoaW5ncyB3aWxsIGJlIGNsZWFuZWQgdXAgbGF0ZXIuIFRoaXMgY29kZSBhZGRyZXNzZXMgCisJICBub3RhYmx5OgorCSAgKiBDaGlwIGRldGVjdGlvbiBhbmQgUENJIHJlbGF0ZWQgaW5pdGlhbGlzYXRpb25zCisJICAqIE5WUkFNIGRldGVjdGlvbiBhbmQgcmVhZGluZworCSAgKiBETUEgbWFwcGluZworCSAgKiBCb290IHNldHVwIGNvbW1hbmQKKwkgICogQW5kIHNvbWUgb3RoZXIgLi4uCisJLSBBZGQgc3VwcG9ydCBmb3IgdGhlIG5ldyBkeW5hbWljIGRtYSBtYXBwaW5nIGtlcm5lbCBpbnRlcmZhY2UuCisJICBSZXF1aXJlcyBMaW51eC0yLjMuNDcgKHRlc3RlZCB3aXRoIHByZS0yLjMuNDctNikuCisJLSBHZXQgZGF0YSB0cmFuc2ZlciBkaXJlY3Rpb24gZnJvbSB0aGUgc2NzaSBjb21tYW5kIHN0cnVjdHVyZSAKKwkgIChTY3NpX0NtbmQpIHdoZW4gdGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUuCisKK01vbiBNYXJjaCA2ICAyMzoxNSAyMDAwIEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorICAgICAgICAqIHJldmlzaW9uIDMuMmcKKyAgICAgICAgLSBBZGQgdGhlIGZpbGUgc3ltNTNjOHh4X2NvbW0uaCB0aGF0IGNvbGxlY3RzIGNvZGUgdGhhdCBzaG91bGQKKyAgICAgICAgICBiZSBzaGFyZWQgYnkgc3ltNTNjOHh4IGFuZCBuY3I1M2M4eHggZHJpdmVycy4gRm9yIG5vdywgaXQgaXMKKyAgICAgICAgICBhIGhlYWRlciBmaWxlIHRoYXQgaXMgb25seSBpbmNsdWRlZCBieSB0aGUgbmNyNTNjOHh4IGRyaXZlciwKKyAgICAgICAgICBidXQgdGhpbmdzIHdpbGwgYmUgY2xlYW5lZCB1cCBsYXRlci4gVGhpcyBjb2RlIGFkZHJlc3NlcworICAgICAgICAgIG5vdGFibHk6CisgICAgICAgICAgKiBDaGlwIGRldGVjdGlvbiBhbmQgUENJIHJlbGF0ZWQgaW5pdGlhbGlzYXRpb25zCisgICAgICAgICAgKiBOVlJBTSBkZXRlY3Rpb24gYW5kIHJlYWRpbmcKKyAgICAgICAgICAqIERNQSBtYXBwaW5nCisgICAgICAgICAgKiBCb290IHNldHVwIGNvbW1hbmQKKyAgICAgICAgICAqIEFuZCBzb21lIG90aGVyIC4uLgorICAgICAgICAtIEFkZCBzdXBwb3J0IGZvciB0aGUgbmV3IGR5bmFtaWMgZG1hIG1hcHBpbmcga2VybmVsIGludGVyZmFjZS4KKyAgICAgICAgICBSZXF1aXJlcyBMaW51eC0yLjMuNDcgKHRlc3RlZCB3aXRoIHByZS0yLjMuNDctNikuCisgICAgICAgIC0gR2V0IGRhdGEgdHJhbnNmZXIgZGlyZWN0aW9uIGZyb20gdGhlIHNjc2kgY29tbWFuZCBzdHJ1Y3R1cmUKKyAgICAgICAgICAoU2NzaV9DbW5kKSB3aGVuIHRoaXMgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlLgorCitGcmkgSmFuIDE0IDE0OjAwIDIwMDAgUGFtIERlbGFuZXkgKHBhbS5kZWxhbmV5QGxzaWwuY29tKQorCSogcmV2aXNpb24gcHJlLTMuM2ItMQorCS0gTWVyZ2UgcGFyYWxsZWwgZHJpdmVyIHNlcmllcyAzLjMxIGFuZCAzLjJlIAorCitUdWUgSmFuIDExIDE0OjAwIDIwMDAgUGFtIERlbGFuZXkgKHBhbS5kZWxhbmV5QGxzaWwuY29tKQorCSogcmV2aXNpb24gMy4zMQorCS0gQWRkZWQgc3VwcG9ydCBmb3IgbW91bnRpbmcgZGlza3Mgb24gd2lkZS1uYXJyb3ctd2lkZQorCSAgc2NzaSBjb25maWd1cmF0aW9ucy4gIAorCS0gQnVpbHQgb2ZmIG9mIHZlcnNpb24gMy4zMAorCitNb24gSmFuIDEwIDEzOjMwIDIwMDAgUGFtIERlbGFuZXkgKHBhbS5kZWxhbmV5QGxzaWwuY29tKQorCSogcmV2aXNpb24gMy4zMAorCS0gQWRkZWQgY2FwYWJpbGl0eSB0byB1c2UgdGhlIGludGVncml0eSBjaGVja2luZyBjb2RlCisJICBpbiB0aGUga2VybmVsIChvcHRpb25hbCkuCisJLSBEaXNhYmxlZCBzdXBwb3J0IGZvciB0aGUgNTNDMTAxMC4KKwktIEJ1aWx0IG9mZiBvZiB2ZXJzaW9uIDMuMmMKKworU2F0IEphbiA4ICAyMjowMCAyMDAwIEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogcmV2aXNpb24gMy4yZQorCS0gQWRkIHllYXIgMjAwMCBjb3B5cmlnaHQuCisJLSBEaXNwbGF5IGNvcnJlY3RseSBidXMgc2lnbmFscyB3aGVuIGJ1cyBpcyBkZXRlY3RlZCB3cm9uZy4KKwktIFJlbW92ZSB0aGUgZGVhZCBjb2RlIHRoYXQgYnJva2UgZHJpdmVyIDMuMmQuCisKK01vbiBEZWMgNiAgMjI6MDAgMTk5OSBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHJldmlzaW9uIDMuMmQKKwktIENoYW5nZSBtZXNzYWdlcyB3cml0dGVuIGJ5IHRoZSBkcml2ZXIgYXQgaW5pdGlhbGlzYXRpb24gYW5kIAorCSAgdGhyb3VnaCB0aGUgL3Byb2MgRlMgKHJhdGhlciBjb3NtZXRpYyBjaGFuZ2VzIHRoYXQgY29uc2lzdCBpbgorCSAgcHJpbnRpbmcgb3V0IHRoZSBQQ0kgYnVzIG51bWJlciBhbmQgZGV2aWNlL2Z1bmN0aW9uKS4KKwktIEdldCByaWQgb2YgdGhlIG9sZCBQQ0kgYmlvcyBpbnRlcmZhY2UsIGJ1dCBwcmVzZXJ2ZSBrZXJuZWwgMi4wIAorCSAgY29tcGF0aWJpbGl0eSBmcm9tIGEgc2ltcGxlIHdyYXBwZXIuCisJLSBSZW1vdmUgdGhlIGNvbXBpbGF0aW9uIGNvbmRpdGlvbiBhYm91dCBoYXZpbmcgdG8gYWNxdWlyZSB0aGUgCisJICBpb19yZXF1ZXN0X2xvY2sgc2luY2UgaXQgc2VlbXMgdG8gYmUgYSBkZWZpbml0ZSBmZWF0dXJlIG5vdy46KQorCS0gcHJvY19kaXIgc3RydWN0dXJlIG5vIGxvbmdlciBuZWVkZWQgZm9yIGtlcm5lbCA+PSAyLjMuMjcuCisJLSBDaGFuZ2UgdGhlIGRyaXZlciBkZXRlY3Rpb24gY29kZSBieSB0aGUgc3ltNTNjOHh4IG9uZSwgbW9kdWxvIAorCSAgc29tZSBtaW5vciBjaGFuZ2VzLiBUaGUgZHJpdmVyIGNhbiBub3cgYXR0YWNoIGFueSBudW1iZXIgb2YgCisJICBjb250cm9sbGVycyAoPjQwKSBhbmQgZG9lcyBubyBsb25nZXIgaG9nZXIgc3RhY2sgc3BhY2UgYXQgCisJICBpbml0aWFsaXNhdGlvbi4KKwktIERlZmluaXRlbHkgZGlzYWJsZSBvdmVybGFwcGVkIFBDSSBhcmJpdHJhdGlvbiBmb3IgYWxsIGR1YWwgCisJICBmdW5jdGlvbiBjaGlwcywgc2luY2UgSSBjYW5ub3QgbWFrZSBzdXJlIGZvciB3aGF0IGNoaXAgcmV2aXNpb25zIAorCSAgaXQgaXMgYWN0dWFsbHkgc2FmZS4KKwktIEFkZCBzdXBwb3J0IGZvciB0aGUgU1lNNTNDMTUxMEQuCisJLSBVcGRhdGUgdGhlIHBvb3IgVGVrcmFtIHN5bmMgZmFjdG9yIHRhYmxlLgorCS0gUmVtb3ZlIHRoZSBjb21waWxhdGlvbiBjb25kaXRpb24gYWJvdXQgaGF2aW5nIHRvIGFjcXVpcmUgdGhlIAorCSAgaW9fcmVxdWVzdF9sb2NrIHNpbmNlIGl0IHNlZW1zIHRvIGJlIGEgZGVmaW5pdGUgZmVhdHVyZSBub3cuOikKKwktIHByb2NfZGlyIHN0cnVjdHVyZSBubyBsb25nZXIgbmVlZGVkIGZvciBrZXJuZWwgPj0gMi4zLjI3LgorCitTYXQgU2VwIDExICAxODowMCAxOTk5IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogcmV2aXNpb24gMy4yYworCS0gSGFuZGxlIGNvcnJlY3RseSAoaG9wZWZ1bGx5KSBqaWZmaWVzIHdyYXAtYXJvdW5kLgorCS0gUmVzdG9yZSB0aGUgZW50cnkgdXNlZCB0byBkZXRlY3QgODc1IHVudGlsIHJldmlzaW9uIDB4ZmYuCisJICAoSSByZW1vdmVkIGl0IGluYWR2ZXJ0ZW50bHksIGl0IHNlZW1zIDopICkKKwktIFJlcGxhY2UgX19pbml0ZnVuYygpIHdoaWNoIGlzIGRlcHJlY2F0ZWQgc3R1ZmYgYnkgX19pbml0IHdoaWNoIAorCSAgaXMgbm90IHlldCBzby4gOy0pCisJLSBBZGQgc3VwcG9ydCBvZiBzb21lICdyZXNvdXJjZSBoYW5kbGluZycgZm9yIGxpbnV4LTIuMy4xMy4KKwkgIEJhc2ljYWxseSB0aGUgQkFScyBoYXZlIGJlZW4gY2hhbmdlZCB0byBzb21ldGhpbmcgbW9yZSBjb21wbGV4IAorCSAgaW4gdGhlIHBjaV9kZXYgc3RydWN0dXJlLgorCS0gUmVtb3ZlIHNvbWUgZGVwcmVjYXRlZCBjb2RlLgorCitTYXQgTWF5IDEwICAxMTowMCAxOTk5IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogcmV2aXNpb24gcHJlLTMuMmItMQorCS0gU3VwcG9ydCBmb3IgdGhlIDUzQzg5NUEgYnkgUGFtZWxhIERlbGFuZXkgPHBhbS5kZWxhbmV5QGxzaWwuY29tPgorCSAgVGhlIDUzQzg5NUEgY29udGFpbnMgYWxsIG9mIHRoZSBmZWF0dXJlcyBvZiB0aGUgODk2IGJ1dCBoYXMgb25seSAKKwkgIG9uZSBjaGFubmVsIGFuZCBoYXMgYSAzMiBiaXQgUENJIGJ1cy4gSXQgZG9lcyA2NCBiaXQgUENJIGFkZHJlc3NpbmcgCisJICB1c2luZyBkdWFsIGN5Y2xlIFBDSSBkYXRhIHRyYW5zZmVycy4KKwktIE1pc2NlbGxhbmVvdXMgbWlub3IgZml4ZXMuCisJLSBTb21lIGFkZGl0aW9ucyB0byB0aGUgUkVBRE1FLm5jcjUzYzh4eCBmaWxlLgorCitTdW4gQXByIDExICAxMDowMCAxOTk5IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogcmV2aXNpb24gMy4yYQorCS0gQWRkICdob3N0aWQ6I2lkJyBib290IG9wdGlvbi4gVGhpcyBvcHRpb24gYWxsb3dzIHRvIGNoYW5nZSB0aGUgCisJICBkZWZhdWx0IFNDU0kgaWQgdGhlIGRyaXZlciB1c2VzIGZvciBjb250cm9sbGVycy4KKwktIFJlbW92ZSBudnJhbSBsYXlvdXRzIGFuZCBkcml2ZXIgc2V0LXVwIHN0cnVjdHVyZXMgZnJvbSB0aGUgQyBzb3VyY2UsCisJICBhbmQgdXNlIHRoZSBvbmUgZGVmaW5lZCBpbiBzeW01M2M4eHhfZGVmcy5oIGZpbGUuCisJICAoc2hhcmVkIGJ5IGJvdGggZHJpdmVycykuCisJLSBTZXQgZm9yIG5vdyBNQVggTFVOUyB0byAxNiAoaW5zdGVhZCBvZiA4KS4KKworVGh1IE1hciAxMSAgMjM6MDAgMTk5OSBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHJldmlzaW9uIDMuMgkgICg4eHgtODk2IGRyaXZlciBidW5kbGUpCisJLSBPbmx5IGRlZmluZSB0aGUgaG9zdCB0ZW1wbGF0ZSBpbiBuY3I1M2M4eHguaCBhbmQgaW5jbHVkZSB0aGUgCisJICBzeW01M2M4eHhfZGVmcy5oIGZpbGUuCisJLSBEZWNsYXJlIHN0YXRpYyBhbGwgc3ltYm9scyB0aGF0IGRvIG5vdCBuZWVkIHRvIGJlIHZpc2libGUgZnJvbSAKKwkgIG91dHNpZGUgdGhlIGRyaXZlciBjb2RlLgorCS0gQWRkICdleGNsJyBib290IGNvbW1hbmQgb3B0aW9uIHRoYXQgYWxsb3dzIHRvIHBhc3MgdG8gdGhlIGRyaXZlciAKKwkgIGlvIGFkZHJlc3Mgb2YgZGV2aWNlcyBub3QgdG8gYXR0YWNoLgorCS0gQWRkIGluZm8oKSBmdW5jdGlvbiBjYWxsZWQgZnJvbSB0aGUgaG9zdCB0ZW1wbGF0ZSB0byBwcmludCAKKwkgIGRyaXZlci9ob3N0IGluZm9ybWF0aW9uLgorCS0gTWlub3IgZG9jdW1lbnRhdGlvbiBhZGRpdGlvbnMuCisKK1NhdCBNYXIgNiAgMTE6MDAgMTk5OSBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHJldmlzaW9uIDMuMWgKKwktIEZpeCBzb21lIG9vb29sZCBidWcgdGhhdCBoYW5ncyB0aGUgYnVzIGlmIGEgZGV2aWNlIHJlamVjdHMgYSAKKwkgIG5lZ290aWF0aW9uLiBCdHcsIHRoZSBjb3JyZXNwb25kaW5nIHN0dWZmIGFsc28gbmVlZGVkIHNvbWUgY2xlYW51cCAKKwkgIGFuZCB0aHVzIHRoZSBjaGFuZ2UgaXMgYSBiaXQgbGFyZ2VyIHRoYW4gaXQgY291bGQgaGF2ZSBiZWVuLgorCS0gU3RpbGwgc29tZSB0eXBvIHRoYXQgbWFkZSBjb21waWxhdGlvbiBmYWlsIGZvciA2NCBiaXQgKHRyaXZpYWwgZml4KS4KKworU3VuIEZlYiAgMTQ6MDAgMTk5OSBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHJldmlzaW9uIDMuMWcKKwktIERlYWwgY29ycmVjdGx5IHdpdGggNjQgYml0IFBDSSBhZGRyZXNzIHJlZ2lzdGVycyBvbiBMaW51eCAyLjIuCisJICBQb2ludGVkIG91dCBieSBMZW9uYXJkIFp1YmtvZmYuCisJLSBBbGxvdyB0byB0dW5lIHJlcXVlc3RfaXJxKCkgZmxhZ3MgZnJvbSB0aGUgYm9vdCBjb21tYW5kIGxpbmUgdXNpbmcgCisJICBuY3I1M2M4eHg9aXJxbTo/PywgYXMgZm9sbG93czoKKwkgIGEpIElmIGJpdCAweDEwIGlzIHNldCBpbiBpcnFtLCBJUlFGX1NIQVJFRCBmbGFnIGlzIG5vdCB1c2VkLgorCSAgYikgSWYgYml0IDB4MjAgaXMgc2V0IGluIGlycW0sIElSUUZfRElTQUJMRUQgZmxhZyBpcyBub3QgdXNlZC4KKwkgIEJ5IGRlZmF1bHQgdGhlIGRyaXZlciB1c2VzIGJvdGggSVJRRl9TSEFSRUQgYW5kIElSUUZfRElTQUJMRUQuCisJICBPcHRpb24gJ25jcjUzYzh4eD1pcnFtOjB4MjAnIG1heSBiZSB1c2VkIHdoZW4gYW4gSVJRIGlzIHNoYXJlZCBieSAKKwkgIGEgNTNDOFhYIGFkYXB0ZXIgYW5kIGEgbmV0d29yayBib2FyZC4KKwktIFRpbnkgbWlzc3BlbGxpbmcgZml4ZWQgKEFCT1JUIGluc3RlYWQgb2YgQUJSVCkuIFdhcyBmb3J0dW5hdGVseSAKKwkgIGhhcm1sZXNzLgorCS0gTmVnb3RpYXRlIFNZTkMgZGF0YSB0cmFuc2ZlcnMgd2l0aCBDQ1MgZGV2aWNlcy4KKworU2F0IEphbiAxNiAgMTc6MzAgMTk5OSBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHJldmlzaW9uIDMuMWYKKwktIFNvbWUgUENJIGZpeC11cHMgbm90IG5lZWRlZCBhbnkgbW9yZSBmb3IgUFBDIChmcm9tIENvcnQpLgorCS0gQ2FjaGUgbGluZSBzaXplIHNldCB0byAxNiBEV09SRFMgZm9yIFNwYXJjICAgKGZyb20gRFNNKS4KKwktIFdhaXRpbmcgbGlzdCBsb29rLXVwIGRpZG4ndCB3b3JrIGZvciB0aGUgZmlyc3QgY29tbWFuZCBvZiB0aGUgbGlzdC4KKwktIFJlbW92ZSAyIHVzZWxlc3MgbGluZXMgb2YgY29kZS4KKworU3VuIERlYyAxMyAgMTg6MDAgMTk5OCBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHJldmlzaW9uIDMuMWUKKwktIFNhbWUgd29yay1hcm91bmQgYXMgZm9yIHRoZSA1M2M4NzYgcmV2IDw9IDB4MTUgZm9yIDUzYzg5NiByZXYgMToKKwkgIERpc2FibGUgb3ZlcmxhcHBlZCBhcmJpdHJhdGlvbi4gVGhpcyB3aWxsIG5vdCBtYWtlIGRpZmZlcmVuY2UgCisJICBzaW5jZSB0aGUgY2hpcCBoYXMgb24tY2hpcCBSQU0uCisKK1RodSBOb3YgMjYgIDIyOjAwIDE5OTggR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiByZXZpc2lvbiAzLjFkCisJLSBUaGUgU0lTTCBSQUlEIGNoYW5nZSByZXF1aXJlcyBub3cgcmVtYXBfcGNpX21lbSgpIHN0dWZmIHRvIGJlIAorCSAgY29tcGlsZWQgZm9yIF9faTM4Nl9fIHdoZW4gbm9ybWFsIElPcyBhcmUgdXNlZC4KKwktIE1pbm9yIHNwZWxsaW5nIGZpeGVzIGluIGRvYyBmaWxlcy4KKworU2F0IE5vdiAyMSAgMTg6MDAgMTk5OCBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHJldmlzaW9uIDMuMWMKKwktIElnbm9yZSBjaGlwcyB0aGF0IGFyZSBkcml2ZW4gYnkgU0lTTCBSQUlEIChEQUMgOTYwKS4KKwkgIENoYW5nZSBzZW50IGJ5IExlb25hcmQgWnVia29mZiBhbmQgc2xpZ2h0bHkgcmV3b3JrZWQuCisJLSBTdGlsbCBhIGJ1Z2xldCBpbiB0aGUgdGFncyBpbml0aWFsIHNldHRpbmdzIHRoYXQgbmVlZGVkIHRvIGJlIGZpeGVkLgorCSAgSXQgd2FzIG5vdCBwb3NzaWJsZSB0byBkaXNhYmxlIFRHUSBhdCBzeXN0ZW0gc3RhcnR1cCBmb3IgZGV2aWNlcyAKKwkgIHRoYXQgY2xhaW0gVEdRIHN1cHBvcnQuIFRoZSBkcml2ZXIgdXNlZCBhdCBsZWFzdCAyIGZvciB0aGUgcXVldWUgCisJICBkZXB0aCBidXQgZGlkJ250IGtlZXAgdHJhY2sgb2YgdXNlciBzZXR0aW5ncyBmb3IgdGFncyBkZXB0aCBsb3dlciAKKwkgIHRoYW4gMi4KKworV2VkIE5vdiAxMSAgMTA6MDAgMTk5OCBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHJldmlzaW9uIDMuMWIKKwktIFRoZSBkcml2ZXIgd2FzIHVuaGFwcHkgd2hlbiBjb25maWd1cmVkIHdpdGggZGVmYXVsdF90YWdzID4gTUFYX1RBR1MKKwkgIEhvcGVmdWxseSBkb3VibHktZml4ZWQuCisJLSBVcGRhdGUgdGhlIENvbmZpZ3VyZS5oZWxwIGRyaXZlciBzZWN0aW9uIHRoYXQgc3BlYWtzIG9mIFRBR1MuCisKK1dlZCBPY3QgMjEgMjE6MDAgMTk5OCBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHJldmlzaW9uIDMuMWEKKwktIENoYW5nZXMgZnJvbSBFZGRpZSBEb3N0IGZvciBTcGFyYyBhbmQgQWxwaGE6CisJICBpb3JlbWFwL2lvdW5tYXAgc3VwcG9ydCBmb3IgU3BhcmMuCisJICBwY2l2dG9waHlzIGNoYW5nZWQgdG8gYnVzX2R2bWFfdG9fcGh5cy4KKwktIEFkZCB0aGUgNTNjODc2IGRlc2NyaXB0aW9uIHRvIHRoZSBjaGlwIHRhYmxlLiBUaGlzIGlzIG9ubHkgdXNlZnVsIAorCSAgZm9yIHByaW50aW5nIHRoZSByaWdodCBuYW1lIG9mIHRoZSBjb250cm9sbGVyLgorCS0gREVMLTQ0MSBJdGVtIDIgd29yay1hcm91bmQgZm9yIHRoZSA1M2M4NzYgcmV2IDw9IDUgKDB4MTUpLgorCS0gQWRkIGFkZGl0aW9uYWwgY2hlY2tpbmcgb2YgSU5RVUlSWSBkYXRhOgorCSAgQ2hlY2sgSU5RVUlSWSBkYXRhIHJlY2VpdmVkIGxlbmd0aCBpcyBhdCBsZWFzdCA3LiBCeXRlIDcgb2YgCisJICBpbnF1aXJ5IGRhdGEgY29udGFpbnMgZGV2aWNlIGZlYXR1cmVzIGJpdHMgYW5kIHRoZSBkcml2ZXIgbWlnaHQgCisJICBiZSBjb25mdXNlZCBieSBnYXJiYWdlLiBBbHNvIGNoZWNrIHBlcmlwaGVyYWwgcXVhbGlmaWVyLgorCS0gQ2xlYW51cCBvZiB0aGUgU0NTSSB0YXNrcyBtYW5hZ2VtZW50OgorCSAgUmVtb3ZlIHRoZSBzcGVjaWFsIGNhc2UgZm9yIDMyIHRhZ3MuIE5vdyB0aGUgZHJpdmVyIG9ubHkgdXNlcyB0aGUgCisJICBzY2hlbWUgdGhhdCBhbGxvd3MgdXAgdG8gNjQgdGFncyBwZXIgTFVOLgorCSAgTWVyZ2Ugc29tZSBjb2RlIGZyb20gdGhlIDg5NiBkcml2ZXIuCisJICBVc2UgYSAxLDMsNSwuLi5NQVhUQUdTKjIrMSB0YWcgbnVtYmVyaW5nLiBQcmV2aW91cyBkcml2ZXIgY291bGQgIAorCSAgdXNlIGFueSB0YWcgbnVtYmVyIGZyb20gMSB0byAyNTMgYW5kIHNvbWUgbm9uIGNvbmZvcm1hbnQgZGV2aWNlcyAgCisJICBtaWdodCBoYXZlIHByb2JsZW1zIHdpdGggbGFyZ2UgdGFnIG51bWJlcnMuCisJLSAnbm9fc3luYycgY2hhbmdlZCB0byAnbm9fZGlzYycgaW4gdGhlIFJFQURNRSBmaWxlLiBUaGlzIGlzIGFuIG9sZCAKKwkgIGFuZCB0cml2aWFsIG1pc3Rha2UgdGhhdCBzZWVtcyB0byBkZW1vbnN0cmF0ZSB0aGUgUkVBRE1FIGZpbGUgaXMgCisJICBub3Qgb2Z0ZW4gcmVhZC4gOikKKworU3VuIE9jdCAgNCAxNDowMCAxOTk4IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogcmV2aXNpb24gMy4waQorCS0gQ29zbWV0aWMgY2hhbmdlcyBmb3Igc3BhcmMgKGJ1dCBub3QgZm9yIHRoZSBkcml2ZXIpIHRoYXQgbmVlZHMgIAorCSAgX19pcnFfaXRvYSgpIHRvIGJlIHVzZWQgZm9yIHByaW50ZWQgSVJRIHZhbHVlIHRvIGJlIHVuZGVyc3RhbmRhYmxlLgorCS0gU29tZSBwcm9ibGVtcyB3aXRoIHRoZSBkcml2ZXIgdGhhdCBkaWRuJ3Qgb2NjdXIgdXNpbmcgZHJpdmVyIDIuNWYgCisJICB3ZXJlIGR1ZSB0byBhIFNDU0kgc2VsZWN0aW9uIHByb2JsZW0gdHJpZ2dlcmVkIGJ5IGEgY2xlYXJseSAKKwkgIGRvY3VtZW50ZWQgZmVhdHVyZSB0aGF0IGluIGZhY3Qgc2VlbXMgbm90IHRvIHdvcms6ICg1M0M4WFggY2hpcHMgIAorCSAgYXJlIGNsYWltZWQgYnkgdGhlIG1hbnVhbHMgdG8gYmUgYWJsZSB0byBleGVjdXRlIFNDU0kgc2NyaXB0cyBqdXN0IAorCSAgYWZ0ZXIgYWJpdHJhdGlvbiB3aGlsZSB0aGUgU0NTSSBjb3JlIGlzIHBlcmZvcm1pbmcgU0NTSSBzZWxlY3Rpb24pLgorCSAgVGhpcyBvcHRpbWl6YXRpb24gaXMgYnJva2VuIGFuZCBoYXMgYmVlbiByZW1vdmVkLgorCS0gU29tZSBicm9rZW4gc2NzaSBkZXZpY2VzIGFyZSBjb25mdXNlZCB3aGVuIGEgbmVnb3RpYXRpb24gaXMgc3RhcnRlZCAKKwkgIG9uIGEgTFVOIHRoYXQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIHJlYWwgZGV2aWNlLiBBY2NvcmRpbmcgdG8gCisJICBTQ1NJIHNwZWNzLCB0aGlzIGlzIGEgZGV2aWNlIGZpcm13YXJlIGJ1Zy4gVGhpcyBoYXMgYmVlbiB3b3JrZWQgCisJICBhcm91bmQgYnkgb25seSBzdGFydGluZyBuZWdvdGlhdGlvbiBpZiB0aGUgTFVOIGhhcyBwcmV2aW91c2x5IGJlIAorCSAgdXNlZCBmb3IgYXQgbGVhc3QgMSBzdWNjZXNzZnVsIFNDU0kgY29tbWFuZC4KKwktIFRoZSAnbGFzdCBtZXNzYWdlIHNlbnQnIHByaW50ZWQgb3V0IG9uIE1fUkVKRUNUIG1lc3NhZ2UgcmVjZXB0aW9uIAorCSAgd2FzIHJlYWQgZnJvbSB0aGUgU0ZCUiBpL28gcmVnaXN0ZXIgYWZ0ZXIgdGhlIHByZXZpb3VzIG1lc3NhZ2UgaGFkIAorCSAgYmVlbiBzZW50LiAKKwkgIFRoaXMgd2FzIG5vdCBjb3JyZWN0IGFuZCBhZmZlY3RzIGFsbCBwcmV2aW91cyBkcml2ZXIgdmVyc2lvbnMgYW5kIAorCSAgdGhlIG9yaWdpbmFsIEZyZWVCU0Qgb25lIGFzIHdlbGwuIFRoZSBTQ1NJIHNjcmlwdHMgaGFzIGJlZW4gZml4ZWQgCisJICBzbyB0aGF0IGl0IG5vdyBwcm92aWRlcyB0aGUgcmlnaHQgaW5mb3JtYXRpb24gdG8gdGhlIEMgY29kZS4KKworU2F0IEp1bCAxOCAxMzowMCAxOTk4IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogcmV2aXNpb24gMy4wZworCS0gUHJlbGltaW5hcnkgZml4ZXMgZm9yIEJpZyBFbmRpYW4gKHNlbnQgYnkgRWRkaWUgQy4gRG9zdCkuCisJICBCaWcgRW5kaWFuIGFyY2hpdGVjdHVyZXMgc2hvdWxkIHdvcmsgYWdhaW4gd2l0aCB0aGUgZHJpdmVyLgorCSAgRWRkaWUncyBwYXRjaCBoYXMgYmVlbiBwYXJ0aWFsbHkgYXBwbGllZCBzaW5jZSBjdXJyZW50IDIuMS4xMDkgCisJICBkb2VzIG5vdCBoYXZlIGFsbCB0aGUgU3BhcmMgY2hhbmdlcyBvZiB0aGUgdmdlciB0cmVlLgorCS0gVXNlIG9mIEJJVFNfUEVSX0xPTkcgaW5zdGVhZCBvZiAofjBVTCA9PSAweGZmZmZmZmZmVUwpIGhhcyBmaXhlZAorCSAgdGhlIHByb2JsZW0gb2JzZXJ2ZWQgd2hlbiB0aGUgZHJpdmVyIHdhcyBjb21waWxlZCB1c2luZyBFR0NTIG9yIAorCSAgUEdDQy4KKworTW9uIEp1bCAxMyAyMDowMCAxOTk4IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogcmV2aXNpb24gMy4wZgorCS0gU29tZSBzcGVsbGluZyBmaXhlcy4KKwktIGxpbnV4L2NvbmZpZy5oIG1pc3BsYWNlZCBpbiBuY3I1M2M4eHguaAorCS0gTU9EVUxFX1BBUk0gc3R1ZmYgYWRkZWQgZm9yIGxpbnV4IDIuMS4KKwktIGNoZWNrIElOUVVJUlkgcmVzcG9uc2UgZGF0YSBmb3JtYXQgaXMgZXhhY3RseSAyLiAKKwktIHVzZSBCSVRTX1BFUl9MT05HIGlmIGRlZmluZWQuIAorCitTdW4gSnVuIDI4IDEyOjAwIDE5OTggR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiByZXZpc2lvbiAzLjBlCisJLSBTb21lIGNsZWFudXAsIHNwZWxsaW5nIGZpeGVzLCB2ZXJzaW9uIGNoZWNrcywgZG9jdW1lbnRhdGlvbnMgCisJICBjaGFuZ2VzLCBldGMgLi4uCisKK1NhdCBKdW4gMjAgMjA6MDAgMTk5OCBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHJldmlzaW9uIDMuMGMKKwktIEFkZCBhIGJvb3Qgc2V0dXAgb3B0aW9uIHRoYXQgYWxsb3dzIHRvIHNldCB1cCBkZXZpY2UgcXVldWUgZGVwdGhzIAorCSAgYXQgYm9vdC11cC4gVGhpcyBvcHRpb24gaXMgdmVyeSB1c2VmdWwgc2luY2UgTGludXggZG9lcyBub3QgCisJICBhbGxvdyB0byBjaGFuZ2Ugc2NzaSBkZXZpY2UgcXVldWUgZGVwdGggb25jZSB0aGUgc3lzdGVtIGhhcyBiZWVuIAorCSAgYm9vdGVkIHVwLgorCitTdW4gSnVuIDE1IDIzOjAwIDE5OTggR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiByZXZpc2lvbiAzLjBhCisJLSBTdXBwb3J0IGZvciB1cCB0byA2NCBUQUdTIHBlciBMVU4uCisJLSBSZXdyaXRlIHRoZSBUQVJHRVQgdnMgTFVOIGNhcGFiaWxpdGllcyBtYW5hZ2VtZW50LgorCSAgQ21kUXVldWUgaXMgbm93IGhhbmRsZWQgYXMgYSBMVU4gY2FwYWJpbGl0eSBhcyBpdCBzaGFsbCBiZS4KKwkgIFRoaXMgYWxzbyBmaXhlcyBhIGJ1ZyB0cmlnZ2VyZWQgd2hlbiBkaXNhYmxpbmcgdGFnZ2VkIGNvbW1hbmQgCisJICBxdWV1aW5nIGZvciBhIGRldmljZSB0aGF0IGhhZCB0aGlzIGZlYXR1cmUgZW5hYmxlZC4KKwktIFJlbW92ZSB0aGUgbmNyX29wZW5uaW5ncygpIHN0dWZmIHRoYXQgd2FzIHVzZWxlc3MgdW5kZXIgTGludXggCisJICBhbmQgaGFyZCB0byB1bmRlcnN0YW5kIHRvIG1lLgorCS0gQWRkICJzZXR2ZXJib3NlIiBwcm9jZnMgZHJpdmVyIGNvbW1hbmQuIEl0IGFsbG93cyB0byB0dW5lIAorCSAgdmVyYm9zZSBsZXZlbCBhZnRlciBib290LXVwLiBTZXR0aW5nIHRoaXMgbGV2ZWwgdG8gemVybywgZm9yIAorCSAgZXhhbXBsZSBhdm9pZCBmbG9vZGluZyB0aGUgc3lzbG9nIGZpbGUuCisJLSBBZGQgS0VSTl9YWFggdG8gc29tZSBwcmludGsncy4KKworVHVlIEp1biAxMCAyMzowMCAxOTk4IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogcmV2aXNpb24gMy4wCisJLSBMaW51eCBjb25maWcgY2hhbmdlcyBmb3IgMi4wLjM0OgorCSAgUmVtb3ZlIE5WUkFNIGRldGVjdGlvbiBjb25maWcgb3B0aW9uLiBUaGlzIG9wdGlvbiBpcyBub3cgZW5hYmxlZCAKKwkgIGJ5IGRlZmF1bHQgYnV0IGNhbiBiZSBkaXNhYmxlZCBieSBlZGl0aW5nIHRoZSBkcml2ZXIgaGVhZGVyIGZpbGUuCisJICBBZGQgYSBQUk9GSUxFIGNvbmZpZyBvcHRpb24uCisJLSBVcGRhdGUgQ29uZmlndXJlLmhlbHAKKwktIEFkZCBjYWxscyB0byBuZXcgZnVuY3Rpb24gbWRlbGF5KCkgZm9yIG1pbGxpLXNlY29uZHMgZGVsYXkgaWYgCisJICBrZXJuZWwgdmVyc2lvbiA+PSAyLjEuMTA1LgorCS0gUmVwbGFjZSBhbGwgcHJpbnRmKHMpIGJ5IHByaW50ayhzKS4gQWZ0ZXIgYWxsLCB0aGUgbmNyNTNjOHh4IGlzIAorCSAgYSBkcml2ZXIgZm9yIExpbnV4LgorCS0gUGVyZm9ybSBhdXRvLXNlbnNlIG9uIENPTU1BTkQgVEVSTUlOQVRFRC4gTm90IHN1cmUgaXQgaXMgdXNlZnVsLgorCS0gU29tZSBvdGhlciBtaW5vciBjaGFuZ2VzLgorCitUdWUgSnVuIDQgMjM6MDAgMTk5OCBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHJldmlzaW9uIDIuNm4KKwktIENvZGUgY2xlYW51cCBhbmQgc2ltcGxpZmljYXRpb246CisJICBSZW1vdmUga2VybmVsIDEuMi5YIGFuZCAxLjMuWCBzdXBwb3J0LgorCSAgUmVtb3ZlIHRoZSBfb2xkXyB0YXJnZXQgY2FwYWJpbGl0aWVzIHRhYmxlLgorCSAgUmVtb3ZlIHRoZSBlcnJvciByZWNvdmVyeSBjb2RlIHRoYXQgaGF2ZSdudCBiZWVuIHJlYWxseSB1c2VmdWwuCisJICBVc2UgYSBzaW5nbGUgYWxpZ25tZW50IGJvdW5kYXJ5IChDQUNIRV9MSU5FX1NJWkUpIGZvciBkYXRhIAorCSAgc3RydWN0dXJlcy4KKwktIFNldmVyYWwgYWdncmVzc2l2ZSBTQ1JJUFRTIG9wdGltaXphdGlvbnMgYW5kIGNoYW5nZXM6CisJICBSZXNlbGVjdCBTQ1JJUFRTIGNvZGUgcmV3cml0dGVuLgorCSAgU3VwcG9ydCBmb3Igc2VsZWN0aW9uL3Jlc2VsZWN0aW9uIHdpdGhvdXQgQVROLgorCSAgQW5kIHNvbWUgb3RoZXJzLgorCS0gTWlzY2FsbGFuZW91cyBjaGFuZ2VzIGluIHRoZSBDIGNvZGU6CisJICBDb3VudCBhY3R1YWwgbnVtYmVyIG9mIENDQiBxdWV1ZWQgdG8gdGhlIGNvbnRyb2xsZXIgKGZ1dHVyZSB1c2UpLgorCSAgTG90cyBvZiBvdGhlciBtaW5vciBjaGFuZ2VzLgorCitXZWQgTWF5IDEzIDIwOjAwIDE5OTggR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiByZXZpc2lvbiAyLjZtCisJLSBQcm9ibGVtIG9mIG1pc3NlZCBTQ1NJIGJ1cyByZXNldCB3aXRoIHRoZSA1M0M4OTUgZml4ZWQgYnkgCisJICBSaWNoYXJkIFdhbHRoYW0uIFRoZSA1M0M4OTUgbmVlZHMgYWJvdXQgNjUwIHVzIGZvciB0aGUgYnVzIAorCSAgbW9kZSB0byBzZXR0bGUuIERlbGF5cyB1c2VkIHdoaWxlIHJlc2V0dGluZyB0aGUgY29udHJvbGxlciAKKwkgIGFuZCB0aGUgYnVzIGhhdmUgYmVlbiBhZGp1c3RlZC4gVGhhbmtzIFJpY2hhcmQhCisJLSBTb21lIHNpbXBsaWZpY2F0aW9uIGZvciA2NCBiaXQgYXJjaCBkb25lIGNjYiBhZGRyZXNzIHRlc3RpbmcuCisJLSBBZGQgYSBjaGVjayBvZiB0aGUgTVNHX09VVCBwaGFzZSBhZnRlciBTZWxlY3Rpb24gd2l0aCBBVE4uCisJLSBUaGUgbmV3IHRhZ2dlZCBxdWV1ZSBzdHVmZiBzZWVtcyBvaywgc28gc29tZSBpbmZvcm1hdGlvbm5hbCAKKwkgIG1lc3NhZ2UgaGF2ZSBiZWVuIGNvbmRpdGlvbm5lZCBieSB2ZXJib3NlID49IDMuCisJLSBEb25ub3QgcmVzZXQgaWYgYSBTQk1DIGludGVycnVwdCByZXBvcnRzIHRoZSBzYW1lIGJ1cyBtb2RlLgorCS0gUHJpbnQgb3V0IHRoZSB3aG9sZSBkcml2ZXIgc2V0LXVwLiBTb21lIG9wdGlvbnMgd2VyZSBtaXNzaW5nIGFuZCAKKwkgIHRoZSBwcmludCBzdGF0ZW1lbnQgd2FzIG1pc3BsYWNlZCBmb3IgbW9kdWxlcy4KKwktIElnbm9yZSBhIFNDU0kgcGFyaXR5IGludGVycnVwdCBpZiB0aGUgY2hpcCBpcyBub3QgY29ubmVjdGVkIHRvIAorCSAgdGhlIFNDU0kgYnVzLgorCitTYXQgTWF5IDEgMTY6MDAgMTk5OCBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHJldmlzaW9uIDIuNmwKKwktIEFkZCBDQ0IgZG9uZSBxdWV1ZSBzdXBwb3J0IGZvciBBbHBoYSBhbmQgcGVyaGFwcyBzb21lIG90aGVyIAorCSAgYXJjaGl0ZWN0dXJlcy4KKwktIEFkZCBzb21lIGJhcnJpZXJzIHRvIGVuZm9yY2UgbWVtb3J5IG9yZGVyaW5nIGZvciB4ODYgYW5kIAorCSAgQWxwaGEgYXJjaGl0ZWN0dXJlcy4KKwktIEZpeCBzb21ldGhpbmcgdGhhdCBsb29rcyBsaWtlIGFuIG9sZCBidWcgaW4gdGhlIG5lZ28gU0lSIAorCSAgaW50ZXJydXB0IGNvZGUgaW4gY2FzZSBvZiBuZWdvdGlhdGlvbiBmYWlsdXJlLgorCitTYXQgQXByIDI1IDIxOjAwIDE5OTggR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiByZXZpc2lvbiAyLjZrCisJLSBSZW1vdmUgYWxsIGFjY2Vzc2VzIHRvIHRoZSBvbi1jaGlwIFJBTSBmcm9tIHRoZSBDIGNvZGU6CisJICBVc2UgU0NSSVBUUyB0byBsb2FkIHRoZSBvbi1jaGlwIFJBTS4KKwkgIFVzZSBTQ1JJUFRTIHRvIHJlcGFpciB0aGUgc3RhcnQgcXVldWUgb24gc2VsZWN0aW9uIHRpbWVvdXQuCisJICBVc2UgdGhlIGNvcHkgb2Ygc2NyaXB0IGluIG1haW4gbWVtb3J5IHRvIGNhbGN1bGF0ZSB0aGUgY2hpcCAKKwkgIGNvbnRleHQgb24gcGhhc2UgbWlzbWF0Y2guCisJLSBUaGUgYWJvdmUgYWxsb3dzIG5vdyB0byB1c2UgdGhlIG9uLWNoaXAgUkFNIHdpdGhvdXQgcmVxdWlyaW5nIAorCSAgdG8gZ2V0IGFjY2VzcyB0byB0aGUgb24tY2hpcCBSQU0gZnJvbSB0aGUgQyBjb2RlLiBUaGlzIG1ha2VzIAorCSAgb24tY2hpcCBSQU0gdXNlYWJsZSBmb3IgbGludXgtMS4yLjEzIGFuZCBmb3IgTGludXgtQWxwaGEgZm9yIAorCSAgaW5zdGFuY2UuCisJLSBTb21lIHNpbXBsaWZpY2F0aW9ucyBhbmQgY2xlYW51cHMgaW4gdGhlIFNDUklQVFMgYW5kIEMgY29kZS4KKwktIEJ1Z2xldCBmaXhlZCBpbiBwYXJpdHkgZXJyb3IgcmVjb3ZlcnkgU0NSSVBUUyAobmV2ZXIgdGVzdGVkKS4KKwktIE1pbm9yIHVwZGF0ZXMgaW4gUkVBRE1FLm5jcjUzYzh4eC4KKworV2VkIEFwciAxNSAyMTowMCAxOTk4IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogcmV2aXNpb24gMi42agorCS0gSW5jb3Jwb3JhdGUgY2hhbmdlcyBmcm9tIGxpbnV4LTIuMS45NSBuY3I1M2M4eHggZHJpdmVyIHZlcnNpb24uCisJLSBBZGQgU01QIHN1cHBvcnQgZm9yIGxpbnV4LTIuMS45NSBhbmQgYWJvdmUuCisJLSBGaXggYSBidWcgd2hlbiBRVUVVRSBGVUxMIGlzIHJldHVybmVkIGFuZCBubyBjb21tYW5kcyBhcmUgCisJICBkaXNjb25uZWN0ZWQuIFRoaXMgaGFwcGVucyB3aXRoIEF0bGFzIEkgLyBMOTEyIGFuZCBtYXkgaGFwcGVuIAorCSAgd2l0aCBBdGxhcyBJSSAvIExYWTQuCisJLSBOYWlsIGFub3RoZXIgb25lIG9uIENIRUNLIGNvbmRpdGlvbiB3aGVuIHJlcXVldWluZyB0aGUgY29tbWFuZCAKKwkgIGZvciBhdXRvLXNlbnNlLgorCS0gQ2FsbCBzY3NpX2RvbmUoKSBmb3IgYWxsIGNvbXBsZXRlZCBjb21tYW5kcyBhZnRlciBpbnRlcnJ1cHQgCisJICBoYW5kbGluZy4KKwktIEluY3JlYXNlIHRoZSBkb25lIHF1ZXVlIHRvIDI0IGVudHJpZXMuCisKK1NhdCBBcHIgNCAyMDowMCAxOTk4IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogcmV2aXNpb24gMi42aQorCS0gQ1RFU1QwIGlzIHVzZWQgYnkgdGhlIDUzQzg4NSBmb3IgUG93ZXIgTWFuYWdlbWVudCBhbmQgCisJICBwcmlvcml0eSBzZXR0aW5nIGJldHdlZW4gdGhlIDIgZnVuY3Rpb25zLgorCSAgVXNlIFNESUQgaW5zdGVhZCBhcyBhY3R1YWwgdGFyZ2V0IG51bWJlci4gSnVzdCBoYXZlIGhhZCB0byAKKwkgIG92ZXJ3cml0ZSBpdCB3aXRoIFNTSUQgb24gcmVzZWxlY3Rpb24uCisJLSBTcGxpdCBEQVRBX0lOIGFuZCBEQVRBX09VVCBzY3JpcHRzIGludG8gMiBzdWItc2NyaXB0cy4KKwkgIDY0IHNlZ21lbnRzIGFyZSBtb3ZlZCBmcm9tIG9uLWNoaXAgUkFNIHNjcmlwdHMuCisJICBJZiBtb3JlIHNlZ21lbnRzLCBhIHNjcmlwdCBpbiBtYWluIG1lbW9yeSBpcyB1c2VkIGZvciB0aGUgCisJICBhZGRpdGlvbmFsIHNlZ21lbnRzLgorCS0gU2luY2UgdGhlIFNDUklQVFMgcHJvY2Vzc29yIGNvbnRpbnVlcyBTQ1JJUFRTIGV4ZWN1dGlvbiBhZnRlciAKKwkgIGhhdmluZyB3b24gYXJiaXRyYXRpb24sIGRvIHNvbWUgc3R1ZmYgcHJpb3IgdG8gdGVzdGluZyBhbnkgU0NTSSAKKwkgIHBoYXNlIG9uIHJlc2VsZWN0aW9uLiBUaGlzIHNob3VsZCBoYXZlIHRoZSB2ZXJ0dWUgdG8gcHJvY2VzcyAKKwkgIHNjcmlwdHMgaW4gcGFyYWxsZWwgd2l0aCB0aGUgU0NTSSBjb3JlIHBlcmZvcm1pbmcgc2VsZWN0aW9uLgorCS0gSW5jcmVhc2UgdGhlIGRvbmUgcXVldWUgdG8gMTIgZW50cmllcy4KKworU3VuIE1hciAyOSAxMjowMCAxOTk4IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogcmV2aXNpb24gMi42aAorCS0gU29tZSBmaXhlcy4KKworVHVlIE1hciAyNiAyMzowMCAxOTk4IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogcmV2aXNpb24gMi42ZworCS0gTmV3IGRvbmUgcXVldWUuIDggZW50cmllcyBieSBkZWZhdWx0ICg2IGFsd2F5cyB1c2VhYmxlKS4KKwkgIENhbiBiZSBpbmNyZWFzZWQgaWYgbmVlZGVkLgorCS0gUmVzb3VyY2VzIG1hbmFnZW1lbnQgdXNpbmcgZG91Ymx5IGxpbmtlZCBxdWV1ZXMuCisJLSBOZXcgYXV0by1zZW5zZSBhbmQgUVVFVUUgRlVMTCBoYW5kbGluZyB0aGF0IGRvZXMgbm90IG5lZWQgdG8gCisJICBzdGFsbCB0aGUgTkNSIHF1ZXVlIGFueSBtb3JlLgorCS0gTmV3IENDQiBzdGFydmF0aW9uIGF2b2lkaW5nIGFsZ29yaXRobS4KKwktIFByZXBhcmUgQ0NCcyBmb3IgU0NTSSBjb21tYW5kcyB0aGF0IGNhbm5vdCBiZSBxdWV1ZWQsIGluc3RlYWQgb2YgCisJICBpbnNlcnRpbmcgdGhlc2UgY29tbWFuZHMgaW50byB0aGUgd2FpdGluZyBsaXN0LiBUaGUgd2FpdGluZyBsaXN0IAorCSAgaXMgbm93IG9ubHkgdXNlZCB3aGlsZSByZXNldHRpbmcgYW5kIHdoZW4gbWVtb3J5IGZvciBDQ0JzIGlzIG5vdCAKKwkgIHlldCBhdmFpbGFibGU/CisKK1N1biBGZWIgOCAyMjowMCAxOTk4IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogcmV2aXNpb24gMi42ZgorCS0gU29tZSBmaXhlcyBpbiBvcmRlciB0byByZWFsbHkgc3VwcG9ydCB0aGUgNTNDODk1LCBhdCBsZWFzdCB3aXRoIAorCSAgRkFTVC0yMCBkZXZpY2VzLgorCS0gSGVhdnkgY2hhbmdlcyBpbiB0aGUgdGFyZ2V0L2x1biByZXNvdXJjZXMgbWFuYWdlbWVudCB0byBhbGxvdyAKKwkgIHRoZSBzY3JpcHRzIHRvIGp1bXAgZGlyZWN0bHkgdG8gdGhlIENDQiBvbiByZXNlbGVjdGlvbiBpbnN0ZWFkIAorCSAgb2Ygd2Fsa2luZyBvbiB0aGUgbHVuIENDQnMgbGlzdC4gVXAgdG8gMzIgdGFncyBwZXIgbHVuIGFyZSBub3cgCisJICBzdXBwb3J0ZWQgd2l0aG91dCBzY3JpcHQgcHJvY2Vzc29yIGFuZCBQQ0kgdHJhZmZpYyBvdmVyaGVhZC4KKworU3VuIEphbiAxMSAyMjowMCAxOTk4IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogcmV2aXNpb24gMi42ZAorCS0gbmV3IChkaWZmZXJlbnQgPykgaW1wbGVtZW50YXRpb24gb2YgdGhlIHN0YXJ0IHF1ZXVlOgorICAgICAgICAgIFVzZSBhIHNpbXBsZSBDQUxMIHRvIGEgbGF1bmNoIHNjcmlwdCBpbiB0aGUgQ0NCLgorCS0gaW1wbGVtZW50IGEgbWluaW1hbCBkb25lIHF1ZXVlICgxIGVudHJ5IDotKSApLgorICAgICAgICAgIHRoaXMgYXZvaWQgc2Nhbm5pbmcgYWxsIENDQnMgb24gSU5UIEZMWSAoT25seSBzY2FuIGFsbCBDQ0JzLCBvbiAKKyAgICAgICAgICBvdmVyZmxvdykuIEhpdCByYXRpbyBpcyBiZXR0ZXIgdGhhbiA5OS45ICUgb24gbXkgc3lzdGVtLCBzbyBubyAKKyAgICAgICAgICBuZWVkIHRvIGhhdmUgYSBsYXJnZXIgZG9uZSBxdWV1ZS4KKwktIGdlbmVyYWxpemF0aW9uIG9mIHRoZSByZXN0YXJ0IG9mIENDQiBvbiBzcGVjaWFsIGNvbmRpdGlvbiBhcyAKKyAgICAgICAgICBBYm9ydCwgUVVFVUUgRlVMTCwgQ0hFQ0sgQ09ORElUSU9OLgorICAgICAgICAgIFRoaXMgaGFzIGJlZW4gY2FsbGVkICdzaWxseSBzY2hlZHVsZXInLgorCS0gbWFrZSBhbGwgdGhlIHByb2ZpbGluZyBjb2RlIGNvbmRpdGlvbm5lZCBieSBhIGNvbmZpZyBvcHRpb24uCisJICBUaGlzIHNwYXJlIHNvbWUgUENJIHRyYWZmaWMgYW5kIEMgY29kZSB3aGVuIHRoaXMgZmVhdHVyZSBpcyBub3QgCisgICAgICAgICAgbmVlZGVkLgorCS0gaGFuZGxlIG1vcmUgY2xlYW5seSB0aGUgc2l0dWF0aW9uIHdoZXJlIGRpcmVjdGlvbiBpcyB1bmtub3duLgorCSAgVGhlIHBvaW50ZXJzIHBhdGNoaW5nIGlzIG5vdyBwZXJmb3JtZWQgYnkgdGhlIFNDUklQVFMgcHJvY2Vzc29yLgorCS0gcmVtb3ZlIHNvbWUgdXNlbGVzcyBzY3JpcHRzIGluc3RydWN0aW9ucy4KKworCVBvcnRlZCBmcm9tIGRyaXZlciAyLjUgc2VyaWVzOgorICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwktIFVzZSBGQVNULTUgaW5zdGVhZCBvZiBTTE9XIGZvciBzbG93IHNjc2kgZGV2aWNlcyBhY2NvcmRpbmcgdG8gCisJICBuZXcgU1BJLTIgZHJhZnQuCisJLSBNYWtlIHNvbWUgY2hhbmdlcyBpbiBvcmRlciB0byBhY2NvbW1vZGF0ZSB3aXRoIDg3NSByZXYgPD0gMyAKKwkgIGRldmljZSBlcnJhdGEgbGlzdGluZyAzOTcuIE1pbm9yIGNvbnNlcXVlbmNlcyBhcmU6CisJICAuIExlYXZlIHVzZSBvZiBQQ0kgV3JpdGUgYW5kIEludmFsaWRhdGUgdW5kZXIgdXNlciBjb250cm9sLgorCSAgICBOb3csIGJ5IGRlZmF1bHQgdGhlIGRyaXZlciBkb2VzIG5vdCBlbmFibGUgUENJIE1XSSBhbmQgb3B0aW9uCisJICAgICdzcGVjZjp5JyBpcyByZXF1aXJlZCBpbiBvcmRlciB0byBlbmFibGUgdGhpcyBmZWF0dXJlLgorCSAgLiBNZW1vcnkgUmVhZCBMaW5lIGlzIG5vdCBlbmFibGVkIGZvciA4NzUgYW5kIDg3NS1saWtlIGNoaXBzLgorCSAgLiBQcm9ncmFtbWVkIGJ1cnN0IGxlbmd0aCBzZXQgdG8gNjQgRFdPUkRTIChpbnN0ZWFkIG9mIDEyOCkuCisJICAgIChOb3RlOiBTWU1CSU9TIHVzZXMgMzIgRFdPUkRTIGZvciB0aGUgU0RNUyBCSU9TKQorCS0gQWRkICdidXNjaGsnIGJvb3Qgb3B0aW9uLgorCSAgVGhpcyBvcHRpb24gZW5hYmxlcyBjaGVja2luZyBvZiBTQ1NJIEJVUyBkYXRhIGxpbmVzIGFmdGVyIFNDU0kgCisJICBSRVNFVCAoc2V0IGJ5IGRlZmF1bHQpLiAoU3VibWl0dGVkIGJ5IFJpY2hhcmQgV2FsdGhhbSkuCisJLSBVcGRhdGUgdGhlIFJFQURNRSBmaWxlLgorCS0gRGlzcGF0Y2ggQ09ORElUSU9OIE1FVCBhbmQgUkVTRVJWQVRJT04gQ09ORkxJQ1Qgc2NzaSBzdGF0dXMgCisJICBhcyBPSyBkcml2ZXIgc3RhdHVzLgorCS0gVXBkYXRlIHRoZSBSRUFETUUgZmlsZSBhbmQgdGhlIFN5bWJpb3MgTlZSQU0gZm9ybWF0IGRlZmluaXRpb24gCisJICB3aXRoIHJlbW92YWJsZSBtZWRpYSBmbGFncyB2YWx1ZXMgKGF2YWlsYWJsZSB3aXRoIFNETVMgNC4wOSkuCisJLSBTZXZlcmFsIFBDSSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBmaXgtdXBzIGZvciBwb3dlcnBjLgorCSAgKFBhdGNoIHNlbnQgYnkgQ29ydCkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLnN5bTUzYzh4eCBiL0RvY3VtZW50YXRpb24vc2NzaS9DaGFuZ2VMb2cuc3ltNTNjOHh4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxOTMzNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLnN5bTUzYzh4eApAQCAtMCwwICsxLDU5MyBAQAorU2F0IE1heSAxMiAxMjowMCAyMDAxIEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogdmVyc2lvbiBzeW01M2M4eHgtMS43LjNjCisJLSBFbnN1cmUgTEVEQyBiaXQgaW4gR1BDTlRMIGlzIGNsZWFyZWQgd2hlbiByZWFkaW5nIHRoZSBOVlJBTS4KKwkgIEZpeCBzZW50IGJ5IFN0aWcgVGVsZmVyIDxzdGlnQGFwaS1uZXR3b3Jrcy5jb20+LgorCS0gQmFja3BvcnQgZnJvbSBTWU0tMiB0aGUgd29yay1hcm91bmQgdGhhdCBhbGxvd3MgdG8gc3VwcG9ydCAKKwkgIGhhcmR3YXJlcyB0aGF0IGZhaWwgUENJIHBhcml0eSBjaGVja2luZy4KKwktIENoZWNrIHRoYXQgd2UgcmVjZWl2ZWQgYXQgbGVhc3QgOCBieXRlcyBvZiBJTlFVSVJZIHJlc3BvbnNlIAorCSAgZm9yIGJ5dGUgNywgdGhhdCBjb250YWlucyBkZXZpY2UgY2FwYWJpbGl0aWVzLCB0byBiZSB2YWxpZC4KKwktIERlZmluZSBzY3NpX3NldF9wY2lfZGV2aWNlKCkgYXMgbmlsIGZvciBrZXJuZWwgPCAyLjQuNC4KKwktICsgQSBjb3VwbGUgb2YgbWlub3IgY2hhbmdlcy4KKwkgIAorU2F0IEFwciA3IDE5OjMwIDIwMDEgR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiB2ZXJzaW9uIHN5bTUzYzh4eC0xLjcuM2IKKwktIEZpeCBhbiB1bmFsaWduZWQgTE9BRCBmcm9tIHNjcmlwdHMgKHdhcyB1c2VkIGFzIGR1bW15IHJlYWQpLgorCS0gSW4gbmNyX3NvZnRfcmVzZXQoKSwgb25seSB0cnkgdG8gQUJPUlQgdGhlIGN1cnJlbnQgb3BlcmF0aW9uIAorCSAgZm9yIGNoaXBzIHRoYXQgc3VwcG9ydCBTUlVOIGJpdCBpbiBJU1RBVDEgYW5kIGlmIFNDUklQVFMgYXJlIAorCSAgY3VycmVudGx5IHJ1bm5pbmcsIGFzIDg5NiBhbmQgMTAxMCBtYW51YWxzIHN1Z2dlc3QuCisJLSBJbiB0aGUgQ0NCIGFib3J0IHBhdGgsIGRvIG5vdCBhc3N1bWUgdGhhdCB0aGUgQ0NCIGlzIGN1cnJlbnRseSAKKwkgIHF1ZXVlZCB0byBTQ1JJUFRTLiBUaGlzIGlzIG5vdCBhbHdheXMgdHJ1ZSwgbm90YWJseSBhZnRlciBhIAorCSAgUVVFVUUgRlVMTCBzdGF0dXMgb3Igd2hlbiB1c2luZyB1bnRhZ2dlZCBjb21tYW5kcy4KKworU3VuIE1hciA0IDE4OjMwIDIwMDEgR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiB2ZXJzaW9uIHN5bTUzYzh4eC0xLjcuM2EKKwktIEZpeCBhbiBpc3N1ZSBpbiB0aGUgbmNyX2ludF91ZGMoKSAodW5leHBlY3RlZCBkaXNjb25uZWN0KQorCSAgaGFuZGxpbmcuIElmIHRoZSBEU0EgZGlkbid0IG1hdGNoIGEgQ0NCLCBhIGJhZCB3cml0ZSB0byAKKwkgIG1lbW9yeSBjb3VsZCBoYXBwZW4uCisKK01vbiBGZWIgMTIgMjI6MzAgMjAwMSBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHZlcnNpb24gc3ltNTNjOHh4LTEuNy4zCisJLSBTdXBwb3J0IGZvciBocHBhLgorCSAgVGlueSBwYXRjaCBzZW50IHRvIG1lIGJ5IFJvYmVydCBIaXJzdC4KKwktIFRpbnkgcGF0Y2ggZm9yIGlhNjQgc2VudCB0byBtZSBieSBQYW1lbGEgRGVsYW5leS4KKworVHVlIEZlYiA2IDEzOjMwIDIwMDEgR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiB2ZXJzaW9uIHN5bTUzYzh4eC0xLjcuMy1wcmUxCisJLSBDYWxsIHBjaV9lbmFibGVfZGV2aWNlKCkgYXMgQUMgd2FudHMgdGhpcyB0byBiZSBkb25lLgorCS0gR2V0IGJvdGggdGhlIEJBUiBjb29raWVzIHVzZWQgYnkgQ1BVIGFuZCBhY3R1YWwgUENJIEJBUiAKKwkgIHZhbHVlcyB1c2VkIGZyb20gU0NSSVBUUy4gUmVjZW50IFBDSSBjaGlwcyBhcmUgYWJsZSB0byAKKwkgIGFjY2VzcyB0aGVtc2VsdmVzIHVzaW5nIGludGVybmFsIGN5Y2xlcywgYnV0IHRoZXkgY29tcGFyZSAKKwkgIEJBUiB2YWx1ZXMgdG8gZGVzdGluYXRpb24gYWRkcmVzcyB0byBtYWtlIGRlY2lzaW9uLgorCSAgRWFybGllciBjaGlwcyBzaW1wbHkgdXNlIFBDSSB0cmFuc2FjdGlvbnMgdG8gYWNjZXNzIElPIAorCSAgcmVnaXN0ZXJzIGZyb20gU0NSSVBUUy4KKwkgIFRoZSBidXNfZHZtYV90b19tZW0oKSBpbnRlcmZhY2UgdGhhdCByZXZlcnNlcyB0aGUgYWN0dWFsIAorCSAgUENJIEJBUiB2YWx1ZSBmcm9tIHRoZSBCQVIgY29va2llIGlzIG5vdyB1c2VsZXNzLgorCSAgVGhpcyBwb2ludCBoYWQgYmVlbiBkaXNjdXNzZWQgYXQgdGhlIGxpc3QgYW5kIHRoZSBzb2x1dGlvbiAKKwkgIGdvdCBhcHByb3ZlZCBieSBQQ0kgY29kZSBtYWludGFpbmVyIChNYXJ0aW4gTWFyZXMpLgorCS0gTWVyZ2UgY2hhbmdlcyBmb3IgbGludXgtMi40IHRoYXQgZGVjbGFyZSB0aGUgaG9zdCB0ZW1wbGF0ZSAKKwkgIGluIHRoZSBkcml2ZXIgb2JqZWN0IGFsc28gd2hlbiB0aGUgZHJpdmVyIGlzIHN0YXRpY2FsbHkgCisJICBsaW5rZWQgd2l0aCB0aGUga2VybmVsLgorCS0gSW5jcmVhc2UgU0NTSSBtZXNzYWdlIHNpemUgdXAgdG8gMTIgYnl0ZXMsIGdpdmVuIHRoYXQgOCAKKwkgIGJ5dGVzIHdhcyBub3QgZW5vdWdoIGZvciB0aGUgUFBSIG1lc3NhZ2UgKGZpeCkuCisJLSBBZGQgZmllbGQgJ21heG9mZnNfc3QnIChtYXggb2Zmc2V0IGZvciBTVCBkYXRhIHRyYW5zZmVycykuCisJICBUaGUgQzEwMTAgc3VwcG9ydHMgb2Zmc2V0IDYyIGluIERUIG1vZGUgYnV0IG9ubHkgMzEgaW4gCisJICBTVCBtb2RlLCB0byAyIGRpZmZlcmVudCB2YWx1ZXMgZm9yIHRoZSBtYXggU0NTSSBvZmZzZXQgCisJICBhcmUgbmVlZGVkLiBSZXBsYWNlIHRoZSBvYnZpb3VzbHkgd3JvbmcgbWFza2luZyBvZiB0aGUgCisJICBvZmZzZXQgYWdhaW5zdCAweDFmIGZvciBTVCBtb2RlIGJ5IGEgbG93ZXJpbmcgdG8gCisJICBtYXhvZmZzX3N0IG9mIHRoZSBTQ1NJIG9mZnNldCBpbiBTVCBtb2RlLgorCS0gUmVmaW5lIGEgd29yay1hcm91bmQgZm9yIHRoZSBDMTAxMC02Ni4gUmV2aXNpb24gMSBkb2VzIAorCSAgbm90IHJlcXVpcmVzIGV4dHJhIGN5Y2xlcyBpbiBEVCBEQVRBIE9VVCBwaGFzZS4KKwktIEFkZCBhIG1pc3NpbmcgZW5kaWFuLWl6YXRpb24gKGFicnRfdGJsLmFkZHIpLgorCS0gTWlub3IgY2xlYW4tdXAgaW4gdGhlIG5wIHN0cnVjdHVyZSBmb3IgZmllbGRzIGFjY2Vzc2VkIAorCSAgZnJvbSBTQ1JJUFRTIHRoYXQgcmVxdWlyZXMgc3BlY2lhbCBhbGlnbm1lbnRzLgorCitTdW4gU2VwIDI0IDIxOjMwIDIwMDAgR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiB2ZXJzaW9uIHN5bTUzYzh4eC0xLjcuMgorCS0gUmVtb3ZlIHRoZSBoYWNrIGZvciBQUEMgYWRkZWQgaW4gcHJldmlvdXMgZHJpdmVyIHZlcnNpb24uCisJLSBBZGQgRkVfREFDIGZlYXR1cmUgYml0IHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gNjQgYml0IFBDSSAKKwkgIGFkZHJlc3NpbmcgKEZFX0RBQykgYW5kIDY0IGJpdCBQQ0kgaW50ZXJmYWNlIChGRV82NEJJVCkuCisJLSBHZXQgcmlkIG9mIHRoZSBib290IGNvbW1hbmQgbGluZSAidWx0cmE6IiBhcmd1bWVudC4KKwkgIFRoaXMgcGFyYW1ldGVyIHdhc24ndCB0aGF0IGNsZXZlciBzaW5jZSB3ZSBjYW4gdXNlICJzeW5jOiIgCisJICBmb3IgVWx0cmEvVWx0cmEyIHNldHRpbmdzLCBhbmQgZm9yIFVsdHJhMyB3ZSBtYXkgd2FudCB0byAKKwkgIHBhc3MgUFBSIG9wdGlvbnMgKGZvciBub3cgb25seSBEVCBjbG9ja2luZykuCisJLSBBZGQgRkVfVkFSQ0xLIGZlYXR1cmUgYml0IHRoYXQgaW5kaWNhdGVzIHRoYXQgU0NTSSBjbG9jayAKKwkgIGZyZXF1ZW5jeSBtYXkgdmFyeSBkZXBlbmRpbmcgb24gYm9hcmQgZGVzaWduIGFuZCB0aHVzLCAKKwkgIHRoZSBkcml2ZXIgc2hvdWxkIHRyeSB0byBldmFsdWF0ZSB0aGUgU0NTSSBjbG9jay4KKwktIFNpbXBsaWZ5IHRoZSB3YXkgdGhlIGRyaXZlciBkZXRlcm1pbmUgdGhlIFNDU0kgY2xvY2s6CisJICBVTFRSQTMgLT4gMTYwIE1IeiwgVUxUUkEyIC0+IDgwIE1IeiBvdGhlcndpc2UgNDAgTUh6LgorCSAgTWVhc3VyZSB0aGUgU0NTSSBjbG9jayBmcmVxdWVuY3kgaWYgRkVfVkFSQ0xLIGlzIHNldC4KKwktIFJlbW92ZSBGRV9DTEs4MCBmZWF0dXJlIGJpdCB0aGF0IGdvdCB1c2VsZXNzLgorCS0gQWRkIHN1cHBvcnQgZm9yIHRoZSBTWU01M0M4NzVBIChQYW1lbGEgRGVsYW5leSkuCisKK1dlZCBKdWwgMjYgMjM6MzAgMjAwMCBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHZlcnNpb24gc3ltNTNjOHh4LTEuNy4xCisJLSBQcm92aWRlIE9wZW5GaXJtd2FyZSBwYXRoIHRocm91Z2ggdGhlIHByb2MgRlMgb24gUFBDLgorCS0gRG93bmxvYWQgb2Ygb24tY2hpcCBTUkFNIHVzaW5nIG1lbWNweV90b2lvKCkgZG9lc24ndCB3b3JrIAorCSAgb24gUFBDLiBSZXN0b3JlIHByZXZpb3VzIG1ldGhvZCAoTUVNT1JZIE1PVkUgZnJvbSBTQ1JJUFRTKS4KKwktIFJlbW92ZSB0cmFpbGluZyBhcmd1bWVudCAjMiBmcm9tIGEgY291cGxlIG9mICN1bmRlZnMuCisKK1N1biBKdWwgMDkgMTY6MzAgMjAwMCBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHZlcnNpb24gc3ltNTNjOHh4LTEuNy4wCisJLSBSZW1vdmUgdGhlIFBST0ZJTEUgQyBhbmQgU0NSSVBUUyBjb2RlLgorCSAgVGhpcyBmYWNpbGl0eSB3YXMgbm90IHRoaXMgdXNlZnVsIGFuZCB0aHVzIHdhcyBub3QgbG9uZ2VyIAorCSAgZGVzaXJhYmxlIGdpdmVuIHRoZSBpbmNyZWFzaW5nIGNvbXBsZXhpdHkgb2YgdGhlIGRyaXZlciBjb2RlLgorCS0gTWVyZ2VzIGZyb20gRnJlZUJTRCBzeW0tMS42LjIgZHJpdmVyOgorCSAgKiBDbGFyaWZ5IG1lbW9yeSBiYXJyaWVycyBuZWVkZWQgYnkgdGhlIGRyaXZlciBmb3IgYXJjaGl0ZWN0dXJlcyAKKwkgICAgdGhhdCBpbXBsZW1lbnQgYSB3ZWFrIG1lbW9yeSBvcmRlcmluZy4KKwkgICogU2ltcGxlciBoYW5kbGluZyBvZiBpbGxlZ2FsIHBoYXNlcyBhbmQgZGF0YSBvdmVycnVuIGZyb20gCisJICAgIFNDUklQVFMuIFRoZXNlIGVycm9ycyBhcmUgbm93IGltbWVkaWF0ZWx5IHJlcG9ydGVkIHRvIAorCSAgICB0aGUgQyBjb2RlIGJ5IGFuIGludGVycnVwdC4KKwkgICogU3luYyB0aGUgcmVzaWR1YWwgaGFuZGxpbmcgY29kZSB3aXRoIHN5bS0xLjYuMiBhbmQgbm93IAorCSAgICByZXBvcnQgYHJlc2lkJyB0byB1c2VyIGZvciBsaW51eCB2ZXJzaW9uID49IDIuMy45OSAKKwktIEdlbmVyYWwgY2xlYW51cDoKKwkgIE1vdmUgZGVmaW5pdGlvbnMgZm9yIGJhcnJpZXJzIGFuZCBJTy9NTUlPIG9wZXJhdGlvbnMgdG8gdGhlIAorCSAgc3ltNTNjOHh4X2RlZnMuaCBoZWFkZXIgZmlsZXMuIFRoZXkgYXJlIG5vdyBzaGFyZWQgYnkgdGhlIAorCSAgYm90aCBkcml2ZXJzLgorCSAgUmVtb3ZlIHVudXNlZCBvcHRpb25zIHRoYXQgY2xhaW1lZCB0byBvcHRpbWl6ZSBmb3IgdGhlIDg5Ni4KKwkgIElmIGZhY3QsIHRoZXkgd2VyZSBub3QgdGhpcyBjbGV2ZXIuIDopCisJICBVc2UgU0NTSV9OQ1JfSU9NQVBQRUQgaW5zdGVhZCBvZiBOQ1JfSU9NQVBQRUQuCisJICBSZW1vdmUgYSBjb3VwbGUgb2YgdW51c2VkIGZpZWxkcyBmcm9tIGRhdGEgc3RydWN0dXJlcy4KKworVGh1IE1heSAxMSAxMjo0MCAyMDAwIFBhbSBEZWxhbmV5IChwYW0uZGVsYW5leUBsc2lsLmNvbSkKKwkqIHZlcnNpb24gc3ltNTNjOHh4LTEuNmIKKwktIE1lcmdlZCB2ZXJzaW9uLgorCitNb24gQXByIDI0IDEyOjAwIDIwMDAgR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiB2ZXJzaW9uIHN5bTUzYzh4eC0xLjVtCisJLSBSZXR1cm4gdmFsdWUgMSAoaW5zdGVhZCBvZiAwKSBmcm9tIHRoZSBkcml2ZXIgc2V0dXAgcm91dGluZS4KKwktIERvIG5vdCBlbmFibGUgUENJIERBQyBjeWNsZXMuIFRoaXMganVzdCBicm9rZSBzdXBwb3J0IGZvciAKKwkgIFNZTTUzNEM4OTYgb24gc3BhcmM2NC4gUHJvYmxlbSBmaXhlZCBieSBEYXZpZCBTLiBNaWxsZXIuCisKK0ZyaSBBcHIgMTQgOTowMCAyMDAwIFBhbSBEZWxhbmV5IChwYW0uZGVsYW5leUBsc2lsLmNvbSkKKwkqIHZlcnNpb24gc3ltNTNjOHh4LTEuNmItOQorCS0gQWRkZWQgNTNDMTAxMF82NiBzdXBwb3J0LgorCS0gU21hbGwgZml4IHRvIGludGVncml0eSBjaGVja2luZyBjb2RlLgorCS0gUmVtb3ZlZCByZXF1aXJlbWVudCBmb3IgaW50ZWdyaXR5IGNoZWNraW5nIGlmIHdhbnQgdG8gcnVuCisJICBhdCB1bHRyYSAzLgorIAorU2F0IEFwciAxICAxMjowMCAyMDAwIEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogdmVyc2lvbiBzeW01M2M4eHgtMS41bAorCS0gVGlueSBjaGFuZ2UgZm9yIF9fc3BhcmNfXyBhcHBlYXJlZCBpbiAyLjMuOTktcHJlNC4xIHRoYXQgCisJICBhcHBsaWVzIHRvIGNhY2hlIGxpbmUgc2l6ZSAoPyBQcm9iYWJseSBmcm9tIERhdmlkIFMgTWlsbGVyKS4KKwktIE1ha2Ugc3VyZSBubyBkYXRhIHRyYW5zZmVyIHdpbGwgaGFwcGVuIGZvciBTY3NpX0NtbmQgcmVxdWVzdHMgCisJICB0aGF0IHN1cHBseSBTQ1NJX0RBVEFfTk9ORSBkaXJlY3Rpb24gKHRoaXMgYXZvaWRzIHNvbWUgQlVHKCkgCisJICBzdGF0ZW1lbnQgaW4gdGhlIFBDSSBjb2RlIHdoZW4gYSBkYXRhIGJ1ZmZlciBpcyBhbHNvIHN1cHBsaWVkKS4KKworU2F0IE1hciAxMSAxMjowMCAyMDAwIEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogdmVyc2lvbiBzeW01M2M4eHgtMS42Yi01CisJLSBUZXN0IGFnYWluc3QgZXhwZWN0ZWQgZGF0YSB0cmFuc2ZlciBkaXJlY3Rpb24gZnJvbSBTQ1JJUFRTLgorCS0gQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgZHluYW1pYyBkbWEgbWFwcGluZyBrZXJuZWwgaW50ZXJmYWNlLgorCSAgUmVxdWlyZXMgTGludXgtMi4zLjQ3ICh0ZXN0ZWQgd2l0aCBwcmUtMi4zLjQ3LTYpLgorCSAgTWFueSB0aGFua3MgdG8gRGF2aWQgUy4gTWlsbGVyIGZvciBoaXMgcHJlbGltaW5hcnkgY2hhbmdlcyAKKwkgIHRoYXQgaGF2ZSBiZWVuIHVzZWZ1bCBndWlkZWxpbmVzLgorCS0gR2V0IGRhdGEgdHJhbnNmZXIgZGlyZWN0aW9uIGZyb20gdGhlIHNjc2kgY29tbWFuZCBzdHJ1Y3R1cmUgCisJICAoU2NzaV9DbW5kKSB3aXRoIGtlcm5lbHMgdGhhdCBwcm92aWRlIHRoaXMgaW5mb3JtYXRpb24uCisKK01vbiBNYXIgIDYgMjM6MzAgMjAwMCBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHZlcnNpb24gc3ltNTNjOHh4LTEuNWsKKwktIFRlc3QgYWdhaW5zdCBleHBlY3RlZCBkYXRhIHRyYW5zZmVyIGRpcmVjdGlvbiBmcm9tIFNDUklQVFMuCisJLSBSZXZlcnQgdGhlIGNoYW5nZSBpbiAnbmNyX2ZsdXNoX2RvbmVfY21kcygpJyBidXQgdW5tYXAgdGhlIAorCSAgc2NzaSBkbWEgYnVmZmVyIHByaW9yIHRvIHF1ZXVlaW5nIHRoZSBjb21tYW5kIHRvIG91ciBkb25lIAorCSAgbGlzdC4KKwktIE1pc2NlbGxhbmVvdXMgKG1pbm9yKSBmaXhlcyBpbiB0aGUgY29kZSBhZGRlZCBpbiBkcml2ZXIgCisJICB2ZXJzaW9uIDEuNWouCisKK01vbiBGZWIgMTQgNDowMCAyMDAwIFBhbSBEZWxhbmV5IChwYW0uZGVsYW5leUBsc2lsLmNvbSkKKyAJKiB2ZXJzaW9uIHN5bTUzYzh4eC1wcmUtMS42Yi0yLgorCS0gVXBkYXRlZCB0aGUgU0NSSVBUUyBlcnJvciBoYW5kbGluZyBvZiB0aGUgU1dJREUKKwkgIGNvbmRpdGlvbiAtIHRvIHJlbW92ZSBhbnkgcmVhZHMgb2YgdGhlIHNiZGwKKwkgIHJlZ2lzdGVyLiBDaGFuZ2VzIG5lZWRlZCBiZWNhdXNlIHRoZSA4OTYgYW5kIDEwMTAKKwkgIGNoaXBzIHdpbGwgY2hlY2sgcGFyaXR5IGluIHNvbWUgc3BlY2lhbCBjaXJjdW1zdGFuY2VzLgorCSAgVGhpcyB3aWxsIGNhdXNlIGEgcGFyaXR5IGVycm9yIGludGVycnVwdCBpZiBub3QgaW4KKwkgIGRhdGEgcGhhc2UuICBDaGFuZ2VzIGJhc2VkIG9uIHRob3NlIG1hZGUgaW4gdGhlCisJICBGcmVlQlNEIGRyaXZlciB2ZXJzaW9uIDEuMy4yLgorCitTdW4gRmViIDIwIDExOjAwIDIwMDAgR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiB2ZXJzaW9uIHN5bTUzYzh4eC0xLjVqCisJLSBBZGQgc3VwcG9ydCBmb3IgdGhlIG5ldyBkeW5hbWljIGRtYSBtYXBwaW5nIGtlcm5lbCBpbnRlcmZhY2UuCisJICBSZXF1aXJlcyBMaW51eC0yLjMuNDcgKHRlc3RlZCB3aXRoIHByZS0yLjMuNDctNikuCisJICBNYW55IHRoYW5rcyB0byBEYXZpZCBTLiBNaWxsZXIgZm9yIGhpcyBwcmVsaW1pbmFyeSBjaGFuZ2VzIAorCSAgdGhhdCBoYXZlIGJlZW4gdXNlZnVsIGd1aWRlbGluZXMsIGZvciBoYXZpbmcgcmV2aWV3ZWQgdGhlIAorCSAgY29kZSBhbmQgaGF2aW5nIHRlc3RlZCB0aGlzIGRyaXZlciB2ZXJzaW9uIG9uIFVsdHJhLVNwYXJjLgorCS0gMiB0aW55IGJ1Z3MgZml4ZWQgaW4gdGhlIFBDSSB3cmFwcGVyIHRoYXQgcHJvdmlkZXMgc3VwcG9ydCAKKwkgIGZvciBlYXJseSBrZXJuZWxzIHdpdGhvdXQgcGNpIGRldmljZSBzdHJ1Y3R1cmUuCisJLSBHZXQgZGF0YSB0cmFuc2ZlciBkaXJlY3Rpb24gZnJvbSB0aGUgc2NzaSBjb21tYW5kIHN0cnVjdHVyZSAKKwkgIChTY3NpX0NtbmQpIHdpdGgga2VybmVscyB0aGF0IHByb3ZpZGUgdGhpcyBpbmZvcm1hdGlvbi4KKwktIEZpeCBhbiBvbGQgYnVnIHRoYXQgb25seSBhZmZlY3RlZCA4OTYgcmV2LiAxIHdoZW4gZHJpdmVyIAorCSAgcHJvZmlsZSBzdXBwb3J0IG9wdGlvbiB3YXMgc2V0IGluIGtlcm5lbCBjb25maWd1cmF0aW9uLgorCitGcmkgSmFuIDE0IDE0OjAwIDIwMDAgUGFtIERlbGFuZXkgKHBhbS5kZWxhbmV5QGxzaWwuY29tKQorIAkqIHZlcnNpb24gc3ltNTNjOHh4LXByZS0xLjZiLTEuCisJLSBNZXJnZSBwYXJhbGxlbCBkcml2ZXIgc2VyaWVzIDEuNjEgYW5kIDEuNWUgCisKK1R1ZSBKYW4gMTEgMTQ6MDAgMjAwMCBQYW0gRGVsYW5leSAocGFtLmRlbGFuZXlAbHNpbC5jb20pCisJKiB2ZXJzaW9uIHN5bTUzYzh4eC0xLjYxCisJLSBBZGRlZCBzdXBwb3J0IGZvciBtb3VudGluZyBkaXNrcyBvbiB3aWRlLW5hcnJvdy13aWRlCisJICBzY3NpIGNvbmZpZ3VyYXRpb25zLiAKKwktIE1vZGlmaWVkIG9mZnNldCB0byBiZSBhIG1heGltdW0gb2YgMzEgaW4gU1QgbW9kZSwgCisJICA2MiBpbiBEVCBtb2RlLgorCS0gQmFzZWQgb2ZmIG9mIDEuNjAKKworTW9uIEphbiAxMCAxMDowMCAyMDAwIFBhbSBEZWxhbmV5IChwYW0uZGVsYW5leUBsc2lsLmNvbSkKKwkqIHZlcnNpb24gc3ltNTNjOHh4LTEuNjAKKwktIEFkZGVkIGNhcGFiaWxpdHkgdG8gdXNlIHRoZSBpbnRlZ3JpdHkgY2hlY2tpbmcgY29kZQorCSAgaW4gdGhlIGtlcm5lbCAob3B0aW9uYWwpLgorCS0gIEFkZGVkIFBQUiBuZWdvdGlhdGlvbi4KKwktIEFkZGVkIHN1cHBvcnQgZm9yIDUzQzEwMTAgVWx0cmEgMyBwYXJ0LgorCS0gQmFzZWQgb2ZmIG9mIDEuNWYKKworU2F0IEphbiA4ICAyMjowMCAyMDAwIEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogdmVyc2lvbiBzeW01M2M4eHgtMS41aAorCS0gQWRkIHllYXIgMjAwMCBjb3B5cmlnaHQuCisJLSBEaXNwbGF5IGNvcnJlY3RseSBidXMgc2lnbmFscyB3aGVuIGJ1cyBpcyBkZXRlY3RlZCB3cm9uZy4KKwktIFNvbWUgZml4IGZvciBTcGFyYyBmcm9tIERTTSB0aGF0IHdlbnQgZGlyZWN0bHkgdG8ga2VybmVsIHRyZWUuCisKK01vbiBEZWMgNiAgMjI6MDAgMTk5OSBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHZlcnNpb24gc3ltNTNjOHh4LTEuNWcKKwktIENoYW5nZSBtZXNzYWdlcyB3cml0dGVuIGJ5IHRoZSBkcml2ZXIgYXQgaW5pdGlhbGlzYXRpb24gYW5kIAorCSAgdGhyb3VnaCB0aGUgL3Byb2MgRlMgKHJhdGhlciBjb3NtZXRpYyBjaGFuZ2VzIHRoYXQgY29uc2lzdCBpbgorCSAgcHJpbnRpbmcgb3V0IHRoZSBQQ0kgYnVzIG51bWJlciBhbmQgUENJIGRldmljZS9mdW5jdGlvbikuCisJLSBFbnN1cmUgdGhlIFNDUklQVFMgcHJvY2Vzc29yIGlzIHN0b3BwZWQgd2hpbGUgY2FsaWJyYXRpbmcgdGhlIAorCSAgU0NTSSBjbG9jayAodGhlIGluaXRpYWxpc2F0aW9uIGNvZGUgaGFzIGJlZW4gYSBiaXQgcmV3b3JrZWQpLgorCSAgQ2hhbmdlIG1vdmVkIHRvIHRoZSBGcmVlQlNEIHN5bV9oaXBkIGRyaXZlcikuCisJLSBTb21lIGZpeGVzIGluIHRoZSBNT0RJRllfRFAvSUdOX1JFU0lEVUUgY29kZSBhbmQgcmVzaWR1YWwgCisJICBjYWxjdWxhdGlvbiAobW92ZWQgZnJvbSBGcmVlQlNEIHN5bV9oaXBkIGRyaXZlcikuCisJLSBBZGQgTlZSQU0gc3VwcG9ydCBmb3IgVGVrcmFtIGJvYXJkcyB0aGF0IHVzZSAyNEMxNiBFRVBST00uCisJICBDb2RlIG1vdmVkIGZyb20gdGhlIEZyZWVCU0Qgc3ltX2hpcGQgZHJpdmVyLCBzaW5jZSBpdCBoYXMgCisJICBiZWVuIHRoYXQgb25lIHRoYXQgZ290IHRoaXMgZmVhdHVyZSBmaXJzdC4KKwktIERlZmluaXRlbHkgZGlzYWJsZSBvdmVybGFwcGVkIFBDSSBhcmJpdHJhdGlvbiBmb3IgYWxsIGR1YWwgCisJICBmdW5jdGlvbiBjaGlwcywgc2luY2UgSSBjYW5ub3QgbWFrZSBzdXJlIGZvciB3aGF0IGNoaXAgcmV2aXNpb25zIAorCSAgaXQgaXMgYWN0dWFsbHkgc2FmZS4KKwktIEFkZCBzdXBwb3J0IGZvciB0aGUgU1lNNTNDMTUxMEQgKGFsc28gZm9yIG5jcjUzYzh4eCkuCisJLSBGaXggdXAgcHJvcGVybHkgdGhlIFBDSSBsYXRlbmN5IHRpbWVyIHdoZW4gbmVlZGVkIG9yIGFza2VkIGZvci4KKwktIEdldCByaWQgb2YgdGhlIG9sZCBQQ0kgYmlvcyBpbnRlcmZhY2UsIGJ1dCBwcmVzZXJ2ZSBrZXJuZWwgMi4wIAorCSAgY29tcGF0aWJpbGl0eSBmcm9tIGEgc2ltcGxlIHdyYXBwZXIuCisJLSBVcGRhdGUgdGhlIHBvb3IgVGVrcmFtIHN5bmMgZmFjdG9yIHRhYmxlLgorCS0gRml4IGluIGEgdGlueSAncHJpbnRrJyBidWcgdGhhdCBtYXkgb29wcyBpbiBjYXNlIG9mIGV4dGVuZGVkIAorCSAgZXJyb3JzICh1bnJlY292ZXJlZCBwYXJpdHkgZXJyb3IsIGRhdGEgb3ZlcnJ1biwgZXRjIC4uLikKKwkgIChTZW50IGJ5IFBhbWVsYSBEZWxhbmV5IGZyb20gTFNJTE9HSUMpCisJLSBSZW1vdmUgdGhlIGNvbXBpbGF0aW9uIGNvbmRpdGlvbiBhYm91dCBoYXZpbmcgdG8gYWNxdWlyZSB0aGUgCisJICBpb19yZXF1ZXN0X2xvY2sgc2luY2UgaXQgc2VlbXMgdG8gYmUgYSBkZWZpbml0ZSBmZWF0dXJlIG5vdy46KQorCS0gQ2hhbmdlIGdldF9wYWdlcyBieSBHZXRQYWdlcyBzaW5jZSBMaW51eCA+PSAyLjMuMjcgbm93IHdhbnRzIAorCSAgZ2V0X3BhZ2VzIHRvIGV2ZXIgYmUgdXNlZCBhcyBhIGtlcm5lbCBzeW1ib2wgKGZyb20gMi4zLjI3KS4KKwktIHByb2NfZGlyIHN0cnVjdHVyZSBubyBsb25nZXIgbmVlZGVkIGZvciBrZXJuZWwgPj0gMi4zLjI3LgorCitTdW4gT2N0ICAzICAxOTowMCAxOTk5IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogdmVyc2lvbiBzeW01M2M4eHgtMS41ZgorCS0gQ2hhbmdlIHRoZSB3YXkgdGhlIGRyaXZlciBjaGVja3MgdGhlIFBDSSBjbG9jayBmcmVxdWVuY3ksIHNvIAorCSAgdGhhdCBvdmVyY2xvY2tlZCBQQ0kgQlVTIHVwIHRvIDQ4IE1IeiB3aWxsIG5vdCBiZSByZWZ1c2VkLgorCSAgVGhlIG1vcmUgdGhlIEJVUyBpcyBvdmVyY2xvY2tlZCwgdGhlIGxlc3MgdGhlIGRyaXZlciB3aWxsIAorCSAgZ3VhcmFudGVlIHRoYXQgaXRzIG1lYXN1cmUgb2YgdGhlIFNDU0kgY2xvY2sgaXMgY29ycmVjdC4KKwktIEJhY2twb3J0IHNvbWUgbWlub3IgaW1wcm92ZW1lbnRzIG9mIFNDUklQVFMgZnJvbSB0aGUgc3ltX2hpcGQgCisJICBkcml2ZXIuCisJLSBCYWNrcG9ydCB0aGUgY29kZSByZXdyaXRlIG9mIHRoZSBTVEFSVCBRVUVVRSBkZXF1ZXVpbmcgKG9uIAorCSAgYmFkIHNjc2kgc3RhdHVzIHJlY2VpdmVkKSBmcm9tIHRoZSBzeW1faGlwZCBkcml2ZXIuCisKK1NhdCBTZXAgMTEgIDExOjAwIDE5OTkgR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiB2ZXJzaW9uIHN5bTUzYzh4eC0xLjVlCisJLSBOZXcgbGludXgtMi4zLjEzIF9fc2V0dXAgc2NoZW1lIHN1cHBvcnQgYWRkZWQuCisJLSBDbGVhbnVwIG9mIHRoZSBleHRlbmRlZCBlcnJvciBzdGF0dXMgaGFuZGxpbmc6CisJICBVc2UgMSBiaXQgcGVyIGVycm9yIHR5cGUuCisJLSBBbHNvIHNhdmUgdGhlIGV4dGVuZGVkIGVycm9yIHN0YXR1cyBwcmlvciB0byBhdXRvLXNlbnNlLgorCS0gQWRkIHRoZSBGRV9ESUZGIGNoaXAgZmVhdHVyZSBiaXQgdG8gaW5kaWNhdGUgc3VwcG9ydCBvZiAKKwkgIGRpZmYgcHJvYmluZyBmcm9tIEdQSU8zICg4MjUvODI1QS84NzYvODc1KS4KKwktIFJlbW92ZSB0aGUgcXVpcmsgaGFuZGxpbmcgdGhhdCBoYXMgYmVlbiB1c2VsZXNzIHNpbmNlIGRheSBvbmUuCisJLSBXb3JrLWFyb3VuZCBQQ0kgY2hpcHMgYmVpbmcgcmVwb3J0ZWQgdHdpY2Ugb24gc29tZSBwbGF0Zm9ybXMuCisJLSBBZGQgc29tZSByZWR1bmRhbnQgUENJIHJlYWRzIGluIG9yZGVyIHRvIGRlYWwgd2l0aCBjb21tb24gCisJICBicmlkZ2UgbWlzYmVoYXZpb3VyIHJlZ2FyZGluZyBwb3N0ZWQgd3JpdGUgZmx1c2hpbmcuCisJLSBBZGQgc29tZSBvdGhlciBjb25kaXRpb25uYWwgY29kZSBmb3IgcGVvcGxlIHdobyBoYXZlIHRvIGRlYWwgCisJICB3aXRoIHJlYWxseSBicm9rZW4gYnJpZGdlcyAodGhleSB3aWxsIGhhdmUgdG8gZWRpdCBhIHNvdXJjZSAKKwkgIGZpbGUgdG8gdHJ5IHRoZXNlIG9wdGlvbnMpLgorCS0gSGFuZGxlIGNvcnJlY3RseSAoaG9wZWZ1bGx5KSBqaWZmaWVzIHdyYXAtYXJvdW5kLgorCS0gUmVzdG9yZSB0aGUgZW50cnkgdXNlZCB0byBkZXRlY3QgODc1IHVudGlsIHJldmlzaW9uIDB4ZmYuCisJICAoSSByZW1vdmVkIGl0IGluYWR2ZXJ0ZW50bHksIGl0IHNlZW1zIDopICkKKwktIFJlcGxhY2UgX19pbml0ZnVuYygpIHdoaWNoIGlzIGRlcHJlY2F0ZWQgc3R1ZmYgYnkgX19pbml0IHdoaWNoIAorCSAgaXMgbm90IHlldCBzby4gOy0pCisJLSBSZXdyaXRlIHRoZSBNRVNTQUdFIElOIHNjcmlwdHMgbW9yZSBnZW5lcmljIGJ5IHVzaW5nIGEgTU9WRSAKKwkgIHRhYmxlIGluZGlyZWN0LiBFeHRlbmRlZCBtZXNzYWdlcyBvZiBhbnkgc2l6ZSBhcmUgYWNjZXB0ZWQgbm93LgorCSAgKFNpemUgaXMgbGltaXRlZCB0byA4IGZvciBub3csIGJ1dCBhIGNvbnN0YW50IGlzIGp1c3QgdG8gYmUgCisJICBpbmNyZWFzZWQgaWYgbmVjZXNzYXJ5KQorCS0gRml4IHNvbWUgYnVnIGluIHRoZSBmdWxseSB1bnRlc3RlZCBNRFAgaGFuZGxpbmc6KSBhbmQgc2hhcmUgCisJICBzb21lIGNvZGUgYmV0d2VlbiBNRFAgaGFuZGxpbmcgYW5kIHJlc2lkdWFsIGNhbGN1bGF0aW9uLgorCS0gQ2FsY3VsYXRlIHRoZSBkYXRhIHRyYW5zZmVyIHJlc2lkdWFsIGFzIHRoZSAyJ3MgY29tcGxlbWVudCAKKwkgIGludGVnZXIgKEEgcG9zaXRpdmUgdmFsdWUgaW4gcmV0dXJuZWQgb24gZGF0YSBvdmVycnVuLCBhbmQgCisJICBhIG5lZ2F0aXZlIG9uZSBvbiB1bmRlcnJ1bikuCisJLSBBZGQgc3VwcG9ydCBvZiBzb21lICdyZXNvdXJjZSBoYW5kbGluZycgZm9yIGxpbnV4LTIuMy4xMy4KKwkgIEJhc2ljYWxseSB0aGUgQkFScyBoYXZlIGJlZW4gY2hhbmdlZCB0byBzb21ldGhpbmcgbW9yZSBjb21wbGV4IAorCSAgaW4gdGhlIHBjaV9kZXYgc3RydWN0dXJlLgorCS0gUmVtb3ZlIHNvbWUgZGVwcmVjYXRlZCBjb2RlLgorCitTYXQgSnVuICA1ICAxMTowMCAxOTk5IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogdmVyc2lvbiBzeW01M2M4eHgtMS41YworCS0gRG8gbm90IG5lZ290aWF0ZSBvbiBhdXRvLXNlbnNlIGlmIHdlIGFyZSBjdXJyZW50bHkgdXNpbmcgOCBiaXQgCisJICBhc3luYyB0cmFuc2ZlciBmb3IgdGhlIHRhcmdldC4KKwktIE9ubHkgY2hlY2sgZm9yIFNJU0wvUkFJRCBvbiBpMzg2IHBsYXRmb3Jtcy4KKwkgIChBIHByb2JsZW0gaGFzIGJlZW4gcmVwb3J0ZWQgb24gUFBDIHdpdGggdGhhdCBjb2RlKS4KKwktIE9uIE1TRyBSRUpFQ1QgZm9yIGEgbmVnb3RpYXRpb24sIHRoZSBkcml2ZXIgYXR0ZW1wdGVkIHRvIHJlc3RhcnQgCisJICB0aGUgU0NSSVBUIHByb2Nlc3NvciB3aGVuIHRoaXMgb25lIHdhcyBhbHJlYWR5IHJ1bm5pbmcuCisKK1NhdCBNYXkgMjkgIDEyOjAwIDE5OTkgR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiB2ZXJzaW9uIHN5bTUzYzh4eC0xLjViCisJLSBGb3JjZSBuZWdvdGlhdGlvbiBwcmlvciBhdXRvLXNlbnNlLgorCSAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGRyaXZlciB3aWxsIGJlIGFibGUgdG8gZ3JhYiB0aGUgc2Vuc2UgZGF0YSAKKwkgIGZyb20gYSBkZXZpY2UgdGhhdCBoYXMgcmVjZWl2ZWQgYSBCVVMgREVWSUNFIFJFU0VUIG1lc3NhZ2UgZnJvbSAKKwkgIGFub3RoZXIgaW5pdGlhdG9yLgorCS0gQ29tcGxldGUgYWxsIGRpc2Nvbm5lY3RlZCBDQ0JzIGZvciBhIGxvZ2ljYWwgVU5JVCBpZiB3ZSBhcmUgdG9sZCAKKwkgIGFib3V0IGEgVU5JVCBBVFRFTlRJT04gZm9yIGEgUkVTRVQgY29uZGl0aW9uIGJ5IHRoaXMgdGFyZ2V0LgorCS0gQWRkIHRoZSBjb250cm9sIGNvbW1hbmQgJ2NsZWFyZGV2JyB0aGF0IGFsbG93cyB0byBzZW5kIGEgQUJPUlQgIAorCSAgbWVzc2FnZSB0byBhIGxvZ2ljYWwgVU5JVCAoZm9yIHRlc3QgcHVycG9zZSkuCisKK1R1ZSBNYXkgMjUgIDIzOjAwIDE5OTkgR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiB2ZXJzaW9uIHN5bTUzYzh4eC0xLjVhCisJLSBBZGQgc3VwcG9ydCBmb3IgdGFzayBhYm9ydCBhbmQgYnVzIGRldmljZSByZXNldCBTQ1NJIG1lc3NhZ2UgCisJICBhbmQgaW1wbGVtZW50IHByb3BlciBzeW5jaG9uaXNhdGlvbiB3aXRoIFNDUklQVFMgdG8gaGFuZGxlIAorICAgICAgICAgIGNvcnJlY3RseSB0YXNrIGFib3J0aW9uIHdpdGhvdXQgcmFjZXMuCisJLSBTZW5kIGFuIEFCT1JUIG1lc3NhZ2UgKGlmIHVudGFnZ2VkKSBvciBBQk9SVCBUQUcgbWVzc2FnZSAoaWYgdGFnZ2VkKQorCSAgd2hlbiB0aGUgZHJpdmVyIGlzIHRvbGQgdG8gYWJvcnQgYSBjb21tYW5kIHRoYXQgaXMgZGlzY29ubmVjdGVkIGFuZCAKKwkgIGNvbXBsZXRlIHRoZSBjb21tYW5kIHdpdGggYXBwcm9wcmlhdGUgZXJyb3IuCisJICBJZiB0aGUgYWJvcnRlZCBjb21tYW5kIGlzIG5vdCB5ZXQgc3RhcnRlZCwgcmVtb3ZlIGl0IGZyb20gdGhlIHN0YXJ0IAorCSAgcXVldWUgYW5kIGNvbXBsZXRlIGl0IHdpdGggZXJyb3IuCisJLSBBZGQgdGhlIGNvbnRyb2wgY29tbWFuZCAncmVzZXRkZXYnIHRoYXQgYWxsb3dzIHRvIHNlbmQgYSBCVVMgCisJICBERVZJQ0UgUkVTRVQgbWVzc2FnZSB0byBhIHRhcmdldCAoZm9yIHRlc3QgcHVycG9zZSkuCisJLSBDbGVhbi11cCBzb21lIHVudXNlZCBvciB1c2VsZXNzIGNvZGUuCisKK0ZyaSBNYXkgMjEgIDIzOjAwIDE5OTkgR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiB2ZXJzaW9uIHN5bTUzYzh4eC0xLjUKKwktIEFkZCBzdXBwb3J0IGZvciBDSE1PViB3aXRoIFdpZGUgY29udHJvbGxlcnMuCisJLSBIYW5kbGluZyBvZiB0aGUgU1dJREUgKGxvdyBieXRlIHJlc2lkdWUgYXQgdGhlIGVuZCBvZiBhIENITU9WIAorCSAgaW4gREFUQSBJTiBwaGFzZSB3aXRoIFdJREUgdHJhbnNmZXIgd2hlbiB0aGUgYnl0ZSBjb3VudCBnZXRzIG9kZCkuCisJLSBIYW5kbGluZyBvZiB0aGUgSUdOT1JFIFdJREUgUkVTSURVRSBtZXNzYWdlLgorCSAgSGFuZGxlZCBmcm9tIFNDUklQVFMgYXMgcG9zc2libGUgd2l0aCBzb21lIG9wdGltaXphdGlvbnMgd2hlbiBib3RoIAorCSAgYSB3aWRlIGRldmljZSBhbmQgdGhlIGNvbnRyb2xsZXIgYXJlIG9kZCBhdCB0aGUgc2FtZSB0aW1lIChTV0lERSAKKwkgIHByZXNlbnQgYW5kIElHTk9SRSBXSURFIFJFU0lEVUUgbWVzc2FnZSBvbiB0aGUgQlVTIGF0IHRoZSBzYW1lIHRpbWUpLgorCS0gQ2hlY2sgYWdhaW5zdCBkYXRhIE9WRVJSVU4vVU5ERVJSVU4gY29uZGl0aW9uIGF0IHRoZSBlbmQgb2YgYSBkYXRhIAorCSAgdHJhbnNmZXIsIHdoYXRldmVyIGEgU1dJREUgaXMgcHJlc2VudCAoT1ZFUlJVTiBpbiBEQVRBIElOIHBoYXNlKSAKKwkgIG9yIHRoZSBTT0RMIGlzIGZ1bGwgKFVOREVSUlVOIGluIERBVEEgb3V0IHBoYXNlKS4KKwktIEhhbmRsaW5nIG9mIHRoZSBNT0RJRlkgREFUQSBQT0lOVEVSIG1lc3NhZ2UuCisJICBUaGlzIG9uZSBjYW5ub3QgYmUgaGFuZGxlZCBmcm9tIFNDUklQVFMsIGJ1dCBob3BlZnVsbHkgaXQgd2lsbCBub3QKKwkgIGhhcHBlbiB2ZXJ5IG9mdGVuLiA6KQorCS0gTGFyZ2UgcmV3cml0ZSBvZiB0aGUgU0NTSSBNRVNTQUdFIGhhbmRsaW5nLgorCitTdW4gTWF5IDkgIDExOjAwIDE5OTkgR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiB2ZXJzaW9uIHN5bTUzYzh4eC0xLjQKKwktIFN1cHBvcnQgZm9yIElNTUVESUFURSBBUkJJVFJBVElPTi4KKwkgIFNlZSB0aGUgUkVBRE1FIGZpbGUgZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgZmVhdHVyZS4KKwkgIFJlcXVpcmVzIGJvdGggYSBjb21waWxlIG9wdGlvbiBhbmQgYSBib290IG9wdGlvbi4KKwktIE1pbm9yIFNDUklQVFMgb3B0aW1pemF0aW9uIGluIHJlc2VsZWN0aW9uIHBhdHRlcm4gZm9yIExVTiAwLgorCS0gU2ltcGxlciBhbGdvcml0aG0gdG8gZGVhbCB3aXRoIFNDU0kgY29tbWFuZCBzdGFydmF0aW9uLgorCSAgSnVzdCB1c2UgMiB0YWcgY291bnRlcnMgaW4gZmxpcC9mbG9wIGFuZCBzd2l0Y2ggdG8gdGhlIG90aGVyIAorCSAgb25lIGV2ZXJ5IDMgc2Vjb25kcy4KKwktIERvIHNvbWUgd29yayBpbiBTQ1JJUFRTIGFmdGVyIHRoZSBTRUxFQ1QgaW5zdHJ1Y3Rpb24gYW5kIHByaW9yIAorCSAgdG8gdGVzdGluZyBmb3IgYSBQSEFTRS4gU1lNQklPUyBzYXkgdGhpcyBmZWF0dXJlIGlzIHdvcmtpbmcgZmluZS4gCisJICAoQnR3LCBvbmx5IHByb2JsZW1zIHdpdGggVG9zaGliYSAzNDAxQiBoYWQgYmVlbiByZXBvcnRlZCkuCisJLSBNZWFzdXJlIHRoZSBQQ0kgY2xvY2sgc3BlZWQgYW5kIGRvIG5vdCBhdHRhY2ggY29udHJvbGxlcnMgaWYgCisJICByZXN1bHQgaXMgZ3JlYXRlciB0aGFuIDM3IE1Iei4gU2luY2UgdGhlIHByZWNpc2lvbiBvZiB0aGUgCisJICBhbGdvcml0aG0gKGZyb20gU3RlZmFuIEVzc2VyKSBpcyBiZXR0ZXIgdGhhbiAyJSwgdGhpcyBzaG91bGQgCisJICBiZSBmaW5lLgorCS0gRml4IHRoZSBtaXNkZXRlY3Rpb24gb2YgU1lNNTNDODc1RSAod2FzIGRldGVjdGVkIGFzIGEgODc2KS4KKwktIEZpeCB0aGUgbWlzZGV0ZWN0aW9uIG9mIFNZTTUzQzgxMCBub3QgQSAod2FzIGRldGVjdGVkIGFzIGEgODEwQSkuCisJLSBTdXBwb3J0IGZvciB1cCB0byAyNTYgVEFHUyBwZXIgTFVOIChDTURfUEVSX0xVTikuCisJICBDdXJyZW50bHkgbGltaXRlZCB0byAyNTUgZHVlIHRvIExpbnV4IGxpbWl0YXRpb24uIDopCisJLSBTdXBwb3J0IGZvciB1cCB0byA1MDggYWN0aXZlIGNvbW1hbmRzIChDQU5fUVVFVUUpLgorCS0gU3VwcG9ydCBmb3IgdGhlIDUzQzg5NUEgYnkgUGFtZWxhIERlbGFuZXkgPHBhbS5kZWxhbmV5QGxzaWwuY29tPgorCSAgVGhlIDUzQzg5NUEgY29udGFpbnMgYWxsIG9mIHRoZSBmZWF0dXJlcyBvZiB0aGUgODk2IGJ1dCBoYXMgb25seSAKKwkgIG9uZSBjaGFubmVsIGFuZCBoYXMgYSAzMiBiaXQgUENJIGJ1cy4gSXQgZG9lcyA2NCBiaXQgUENJIGFkZHJlc3NpbmcgCisJICB1c2luZyBkdWFsIGN5Y2xlIFBDSSBkYXRhIHRyYW5zZmVycy4KKwktIE1pc2NlbGxhbmVvdXMgbWlub3IgZml4ZXMuCisJLSBTb21lIGFkZGl0aW9ucyB0byB0aGUgUkVBRE1FLm5jcjUzYzh4eCBmaWxlLgorCitUdWUgQXByIDE1ICAxMDowMCAxOTk5IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogdmVyc2lvbiBzeW01M2M4eHgtMS4zZQorCS0gU3VwcG9ydCBmb3IgYW55IG51bWJlciBvZiBMVU5zICg2NCkgKFNQSTItY29tcGxpYW50KS4KKwkgIChCdHcsIHRoaXMgbWF5IG9ubHkgYmUgZXZlciB1c2VmdWwgdW5kZXIgbGludXgtMi4yIDstKSkKKworU3VuIEFwciAxMSAgMTA6MDAgMTk5OSBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHZlcnNpb24gc3ltNTNjOHh4LTEuM2QKKwktIEFkZCAnaG9zdGlkOiNpZCcgYm9vdCBvcHRpb24uIFRoaXMgb3B0aW9uIGFsbG93cyB0byBjaGFuZ2UgdGhlIAorCSAgZGVmYXVsdCBTQ1NJIGlkIHRoZSBkcml2ZXIgdXNlcyBmb3IgY29udHJvbGxlcnMuCisJLSBNYWtlIFNDUklQVFMgbm90IHVzZSBzZWxmLW1hc3RlcmluZyBmb3IgUENJLgorCSAgVGhlcmUgd2VyZSBzdGlsbCAyIHBsYWNlcyB0aGUgZHJpdmVyIHVzZWQgdGhpcyBmZWF0dXJlIG9mIHRoZSAKKwkgIDUzQzhYWCBmYW1pbHkuCisJLSBNb3ZlIHNvbWUgZGF0YSBzdHJ1Y3R1cmVzIChudnJhbSBsYXlvdXRzIGFuZCBkcml2ZXIgc2V0LXVwKSB0byAKKwkgIHRoZSBzeW01M2M4eHhfZGVmcy5oIGZpbGUuIFNvLCB0aGUgYm90aCBkcml2ZXJzIHdpbGwgc2hhcmUgdGhlbS4KKwktIFNldCBNQVggTFVOUyB0byAxNiAoaW5zdGVhZCBvZiA4KS4KKworU2F0IE1hciAyMCAgMjE6MDAgMTk5OSBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHZlcnNpb24gc3ltNTNjOHh4LTEuM2IKKwktIEFkZCBzdXBwb3J0IGZvciBOQ1IgUFFTIFBEUy4KKwkgIEphbWVzIEJvdHRvbWxleSA8SmFtZXMuQm90dG9tbGV5QGNvbHVtYmlhc2MubmNyLmNvbT4KKwktIEFsbG93IHZhbHVlIDAgZm9yIGhvc3QgSUQuCisJLSBTdXBwb3J0IG1vcmUgdGhhbiA4IGNvbnRyb2xsZXJzICg+IDQwIGluIGZhY3QgOi0pICkKKwktIEFkZCAnZXhjbD0jaW9hZGRyJyBib290IG9wdGlvbjogZXhjbHVkZSBjb250cm9sbGVyLgorCSAgKFZlcnNpb24gMS4zYSBkcml2ZXIpCisKK1RodSBNYXIgMTEgIDIzOjAwIDE5OTkgR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiB2ZXJzaW9uIHN5bTUzYzh4eC0xLjMgICAoOHh4LTg5NiBkcml2ZXIgYnVuZGxlKQorCS0gRXF1aXZhbGVudCBjaGFuZ2VzIGFzIG5jcjUzYzh4eC0zLjIgZHVlIHRvIHRoZSBkcml2ZXIgYnVuZGxlLgorCSAgKFNlZSBDaGFuZ2Vsb2cubmNyNTNjOHh4KQorCS0gRG8gYSBub3JtYWwgc29mdCByZXNldCBhcyBmaXJzdCBjaGlwIHJlc2V0LCBzaW5jZSBhYm9ydGluZyBjdXJyZW50IAorCSAgb3BlcmF0aW9uIG1heSByYWlzZSBhbiBpbnRlcnJ1cHQgd2UgYXJlIG5vdCBhYmxlIHRvIGhhbmRsZSBzaW5jZSAKKwkgIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBpcyBub3QgeWV0IGVzdGFibGlzaGVkLgorCitTYXQgTWFyIDYgIDExOjAwIDE5OTkgR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiB2ZXJzaW9uIHN5bTUzYzh4eC0xLjJiCisJLSBGaXggc29tZSBvb29vbGQgYnVnIHRoYXQgaGFuZ3MgdGhlIGJ1cyBpZiBhIGRldmljZSByZWplY3RzIGEgCisJICBuZWdvdGlhdGlvbi4gQnR3LCB0aGUgY29ycmVzcG9uZGluZyBzdHVmZiBhbHNvIG5lZWRlZCBzb21lIGNsZWFudXAgCisJICBhbmQgdGh1cyB0aGUgY2hhbmdlIGlzIGEgYml0IGxhcmdlciB0aGFuIGl0IGNvdWxkIGhhdmUgYmVlbi4KKwktIFN0aWxsIHNvbWUgdHlwbyB0aGF0IG1hZGUgY29tcGlsYXRpb24gZmFpbCBmb3IgNjQgYml0ICh0cml2aWFsIGZpeCkuCisKK1N1biBGZWIgMjEgIDIwOjAwIDE5OTkgR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiB2ZXJzaW9uIHN5bTUzYzh4eC0xLjJhCisJLSBUaGUgcmV3cml0ZSBvZiB0aGUgaW50ZXJydXB0IGhhbmRsaW5nIGJyb2tlIHRoZSBTQk1DIGludGVycnVwdCAKKwkgIGhhbmRsaW5nIGR1ZSB0byBhIDEgYml0IG1hc2sgdGlueSBlcnJvci4gSG9wZWZ1bGx5IGZpeGVkLgorCS0gSWYgSU5RVUlSWSBjYW1lIGZyb20gYSBzY2F0dGVyIGxpc3QsIHRoZSBkcml2ZXIgbG9va2VkIGludG8gCisJICB0aGUgc2NhdHRlcmxpc3QgaW5zdGVhZCBvZiB0aGUgZGF0YS46KSBTaW5jZSB0aGlzIHNob3VsZCBuZXZlcgorCSAgaGFwcGVuLCB3ZSBqdXN0IGRpc2NhcmQgdGhlIGRhdGEgaWYgdXNlX3NnIGlzIG5vdCB6ZXJvLgorCitGcmkgRmViIDEyICAyMzowMCAxOTk5IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogdmVyc2lvbiBzeW01M2M4eHgtMS4yCisJLSBNYWpvciByZXdyaXRlIG9mIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgYW5kIHJlY292ZXJ5IHN0dWZmIGZvciAKKwkgIHRoZSBzdXBwb3J0IG9mIG5vbiBjb21wbGlhbnQgU0NTSSByZW1vdmFsLCBpbnNlcnRpb24gYW5kIGFsbCAKKwkgIGtpbmRzIG9mIHNjcmV3LXVwIHRoYXQgbWF5IGhhcHBlbiBvbiB0aGUgU0NTSSBCVVMuCisJICBIb3BlZnVsbHksIHRoZSBkcml2ZXIgaXMgbm93IHVuYnJlYWthYmxlIG9yIG1heS1iZSwgaXQgaXMganVzdCAKKwkgIHF1aXRlIGJyb2NrZW4uIDotKQorCSAgTWFueSB0aGFua3MgdG8gSm9obnNvbiBSdXNzZWwgKFN5bWJpb3MpIGZvciBoYXZpbmcgcmVzcG9uZGVkIHRvIAorCSAgbXkgcXVlc3Rpb25zIGFuZCBmb3IgaGlzIGludGVyZXN0aW5nIGFkdmljZXMgYW5kIGNvbW1lbnRzIGFib3V0IAorCSAgc3VwcG9ydCBvZiBTQ1NJIGhvdC1wbHVnLgorCS0gQWRkICdyZWNvdmVyeScgb3B0aW9uIHRvIGRyaXZlciBzZXQtdXAuCisJLSBOZWdvdGlhdGUgU1lOQyBkYXRhIHRyYW5zZmVycyB3aXRoIENDUyBkZXZpY2VzLgorCS0gRGVhbCBjb3JyZWN0bHkgd2l0aCA2NCBiaXQgUENJIGFkZHJlc3MgcmVnaXN0ZXJzIG9uIExpbnV4IDIuMi4KKwkgIFBvaW50ZWQgb3V0IGJ5IExlb25hcmQgWnVia29mZi4KKworU3VuIEphbiAzMSAgMTg6MDAgMTk5OSBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHZlcnNpb24gc3ltNTNjOHh4LTEuMWEKKwktIFNvbWUgODk2IGNoaXAgcmV2aXNpb25zIChhbGwgZm9yIG5vdyA6LSkpLCBtYXkgaGFuZy11cCBpZiB0aGUgCisJICBzb2Z0IHJlc2V0IGJpdCBpcyBzZXQgYXQgdGhlIHdyb25nIHRpbWUgd2hpbGUgU0NSSVBUUyBhcmUgcnVubmluZy4KKwkgIFdlIG5lZWQgdG8gZmlyc3QgYWJvcnQgdGhlIGN1cnJlbnQgU0NSSVBUUyBvcGVyYXRpb24gcHJpb3IgdG8gCisJICByZXNldHRpbmcgdGhlIGNoaXAuIFRoaXMgZml4IGhhcyBiZWVuIHNlbnQgdG8gbWUgYnkgU1lNQklPUy9MU0kgCisJICBhbmQgSSBqdXN0IHRyYW5zbGF0ZWQgaXQgaW50byBuY3I1M2M4eHggc3ludGF4LgorCSAgTXVzdCBiZSBjb25zaWRlcmVkIDEwMCAlIHRydXN0YWJsZSwgdW5sZXNzIEkgZGlkIHNvbWUgbWlzdGFrZSAKKwkgIHdoZW4gdHJhbnNsYXRpbmcgaXQuIDotKQorCitTdW4gSmFuIDI0ICAxODowMCAxOTk5IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogdmVyc2lvbiBzeW01M2M4eHgtMS4xCisJLSBNYWpvciByZXdyaXRlIG9mIHRoZSBTQ1NJIHBhcml0eSBlcnJvciBoYW5kbGluZy4KKwkgIFRoZSBpbmZvcm1hdGlvbnMgY29udGFpbmVkIGluIHRoZSBkYXRhIG1hbnVhbHMgYXJlIGluY29tcGxldGUgYWJvdXQgCisJICB0aGlzIGZlYXR1cmUuCisJICBJIGFza2VkIFNZTUJJT1MgYWJvdXQgYW5kIGdvdCBpbiByZXBseSB0aGUgZXhwbGFuYXRpb25zIHRoYXQgYXJlIAorCSAgX2luZGVlZF8gbWlzc2luZyBpbiB0aGUgZGF0YSBtYW51YWxzLgorCS0gQWxsb3cgdG8gdHVuZSByZXF1ZXN0X2lycSgpIGZsYWdzIGZyb20gdGhlIGJvb3QgY29tbWFuZCBsaW5lIHVzaW5nIAorCSAgbmNyNTNjOHh4PWlycW06Pz8sIGFzIGZvbGxvd3M6CisJICBhKSBJZiBiaXQgMHgxMCBpcyBzZXQgaW4gaXJxbSwgU0FfU0hJUlEgZmxhZyBpcyBub3QgdXNlZC4KKwkgIGIpIElmIGJpdCAweDIwIGlzIHNldCBpbiBpcnFtLCBTQV9JTlRFUlJVUFQgZmxhZyBpcyBub3QgdXNlZC4KKwkgIEJ5IGRlZmF1bHQgdGhlIGRyaXZlciB1c2VzIGJvdGggU0FfU0hJUlEgYW5kIFNBX0lOVEVSUlVQVC4KKwkgIE9wdGlvbiAnbmNyNTNjOHh4PWlycW06MHgyMCcgbWF5IGJlIHVzZWQgd2hlbiBhbiBJUlEgaXMgc2hhcmVkIGJ5IAorCSAgYSA1M0M4WFggYWRhcHRlciBhbmQgYSBuZXR3b3JrIGJvYXJkLgorCS0gRml4IGZvciA2NCBiaXQgUENJIGFkZHJlc3MgcmVnaXN0ZXIgY2FsY3VsYXRpb24uIChMYW5jZSBSb2JpbnNvbikKKwktIEZpeCBmb3IgYmlnLWVuZGlhbiBpbiBwaGFzZSBtaXNtYXRjaCBoYW5kbGluZy4gKE1pY2hhbCBKYWVnZXJtYW5uKQorCitGcmkgSmFuICAxICAyMDowMCAxOTk5IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogdmVyc2lvbiBzeW01M2M4eHgtMS4wYQorCS0gV2FpdGluZyBsaXN0IGxvb2stdXAgZGlkbid0IHdvcmsgZm9yIHRoZSBmaXJzdCBjb21tYW5kIG9mIHRoZSBsaXN0LgorCSAgSG9wZWZ1bGx5IGZpeGVkLCBidXQgdGVzdGVkIG9uIHBhcGVyIG9ubHkuIDspCisJLSBSZW1vdmUgdGhlIG1vc3QgcGFydCBvZiBQUEMgc3BlY2lmaWMgY29kZSBmb3IgTGludXgtMi4yLgorCSAgVGhhbmtzIHRvIENvcnQuCisJLSBTb21lIG90aGVyIG1pbm9ycyBjaGFuZ2VzLgorCitTYXQgRGVjIDE5ICAyMTowMCAxOTk4IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogdmVyc2lvbiBzeW01M2M4eHgtMS4wCisJLSBEZWZpbmUgc29tZSBuZXcgSU8gcmVnaXN0ZXJzIGZvciB0aGUgODk2IChpc3RhdDEsIG1ib3gwLCBtYm94MSkKKwktIFJldmFtcCBzbGlnaHRseSB0aGUgU3ltYmlvcyBOVlJBTSBsYXktb3V0IGJhc2VkIG9uIHRoZSBleGNlcnB0IG9mIAorCSAgdGhlIGhlYWRlciBmaWxlIEkgcmVjZWl2ZWQgZnJvbSBTeW1iaW9zLgorCS0gQ2hlY2sgdGhlIFBDSSBidXMgbnVtYmVyIGZvciB0aGUgYm9vdCBvcmRlciAoVXNpbmcgYSBmYXN0IAorCSAgUENJIGNvbnRyb2xsZXIgYmVoaW5nIGEgUENJLVBDSSBicmlkZ2Ugc2VlbXMgc3ViLW9wdGltYWwpLgorCS0gRGlzYWJsZSBvdmVybGFwcGVkIFBDSSBhcmJpdHJhdGlvbiBmb3IgdGhlIDg5NiByZXZpc2lvbiAxLgorCS0gUmVkdWNlIGEgYml0IHRoZSBudW1iZXIgb2YgSU8gcmVnaXN0ZXIgcmVhZHMgZm9yIHBoYXNlIG1pc21hdGNoIAorCSAgYnkgcmVhZGluZyBEV09SRFMgYXQgYSB0aW1lIGluc3RlYWQgb2YgQllURVMuCisKK1RodSBEZWMgIDMgIDI0OjAwIDE5OTggR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiB2ZXJzaW9uIHByZS1zeW01M2M4eHgtMC4xOAorCS0gSSByZWNlaXZlZCB0aGlzIGFmdGVybm9vbiBhIDg5NiBmcm9tIFNZTUJJT1MgYW5kIHN0YXJ0ZWQgdGVzdGluZyAgCisJICB0aGUgZHJpdmVyIHdpdGggdGhpcyBiZWFzdC4gQWZ0ZXIgaGF2aW5nIGZpeGVkIDMgYnVnbGV0cywgaXQgd29ya2VkICAKKwkgIHdpdGggYWxsIGZlYXR1cmVzIGVuYWJsZWQgaW5jbHVkaW5nIHRoZSBwaGFzZSBtaXNtYXRjaCBoYW5kbGluZyAKKwkgIGZyb20gU0NSSVBUUy4gU2luY2UgdGhpcyBmZWF0dXJlIGlzIG5vdCB5ZXQgdGVzdGVkIGVub3VnaCwgdGhlIAorCSAgYm9vdCBvcHRpb24gJ25jcjUzYzh4eD1zcGVjZjoxJyBpcyBzdGlsbCByZXF1aXJlZCB0byBlbmFibGUgdGhlIAorCSAgZHJpdmVyIHRvIGhhbmRsZSBQTSBmcm9tIFNDUklQVFMuIAorCitTdW4gTm92IDI5ICAxODowMCAxOTk4IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogdmVyc2lvbiBwcmUtc3ltNTNjOHh4LTAuMTcKKwktIFRoZSBTSVNMIFJBSUQgY2hhbmdlIHJlcXVpcmVzIG5vdyByZW1hcF9wY2lfbWVtKCkgc3R1ZmYgdG8gYmUgCisJICBjb21waWxlZCBmb3IgX19pMzg2X18gd2hlbiBub3JtYWwgSU9zIGFyZSB1c2VkLgorCS0gVGhlIFBDSSBtZW1vcnkgcmVhZCBmcm9tIFNDUklQVFMgdGhhdCBzaG91bGQgZW5zdXJlIG9yZGVyaW5nIAorCSAgd2FzIGluIGZhY3QgbWlzcGxhY2VkLiBCVFcsIHRoaXMgbWF5IGV4cGxhaW4gd2h5IGJyb2tlbiBQQ0kgCisJICBkZXZpY2UgZHJpdmVycyByZWdhcmRpbmcgb3JkZXJpbmcgYXJlIHdvcmtpbmcgc28gd2VsbC4gOy0pCisJLSBSZXdyaXRlIG5jcjUzYzh4eF9zZXR1cCAoYm9vdCBjb21tYW5kIGxpbmUgb3B0aW9ucykgc2luY2UgdGhlICAKKwkgIGJpbmFyeSBjb2RlIHdhcyBhIGJpdCB0b28gYmxvYXRlZCBpbiBteSBvcGluaW9uLgorCS0gTWFrZSB0aGUgY29kZSBzaW1wbGVyIGluIHRoZSB3YWtldXBfZG9uZSByb3V0aW5lLgorCitUdWUgTm92IDI0ICAyMzowMCAxOTk4IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogdmVyc2lvbiBwcmUtc3ltNTNjOHh4LTAuMTYKKwktIEFkZCBTQ1NJX05DUl9PUFRJTUlaRV84OTZfMSBjb21waWxlIG9wdGlvbiBhbmQgJ29wdGltJyBib290IG9wdGlvbi4KKwkgIFdoZW4gc2V0LCB0aGUgZHJpdmVyIHVuY29uZGl0aW9ubmFseSBhc3N1bWVzIHRoYXQgdGhlIGludGVycnVwdCAKKwkgIGhhbmRsZXIgaXMgY2FsbGVkIGZvciBjb21tYW5kIGNvbXBsZXRpb24sIHRoZW4gY2xlYXJzIElOVEYsIHNjYW5zIAorCSAgdGhlIGRvbmUgcXVldWUgYW5kIHJldHVybnMgaWYgc29tZSBjb21wbGV0ZWQgQ0NCIGlzIGZvdW5kLiBJZiBubyAKKwkgIGNvbXBsZXRlZCBDQ0IgYXJlIGZvdW5kLCBpbnRlcnJ1cHQgaGFuZGxpbmcgd2lsbCBwcm9jZWVkIG5vcm1hbGx5LgorCSAgV2l0aCBhIDg5NiB0aGF0IGhhbmRsZXMgTUEgZnJvbSBTQ1JJUFRTLCB0aGlzIGNhbiBiZSBhIGdyZWF0IHdpbiwgCisJICBzaW5jZSB0aGUgZHJpdmVyIHdpbGwgbmV2ZXIgcGVyZm9ybXMgUENJIHJlYWQgdHJhbnNhY3Rpb25zLCBidXQgCisJICBvbmx5IFBDSSB3cml0ZSB0cmFuc2FjdGlvbnMgdGhhdCBtYXkgYmUgcG9zdGVkLgorCSAgSWYgdGhlIGRyaXZlciBoYXZlbid0IHRvIGFsc28gcmFpc2UgdGhlIFNJR1AgdGhpcyB3b3VsZCBiZSBwZXJmZWN0LgorCSAgRXZlbiB3aXRoIHRoaXMgcGVuYWx0eSwgSSB0aGluayB0aGF0IHRoaXMgd2lsbCB3b3JrIGdyZWF0LgorCSAgT2J2aW91c2x5IHRoaXMgb3B0aW1pemF0aW9uIG1ha2VzIHNlbnNlIG9ubHkgaWYgdGhlIElSUSBpcyBub3QgCisJICBzaGFyZWQgd2l0aCBhbm90aGVyIGRldmljZS4KKwktIFN0aWxsIGEgYnVnbGV0IGluIHRoZSB0YWdzIGluaXRpYWwgc2V0dGluZ3MgdGhhdCBuZWVkZWQgdG8gYmUgZml4ZWQuCisJICBJdCB3YXMgbm90IHBvc3NpYmxlIHRvIGRpc2FibGUgVEdRIGF0IHN5c3RlbSBzdGFydHVwIGZvciBkZXZpY2VzIAorCSAgdGhhdCBjbGFpbSBUR1Egc3VwcG9ydC4gVGhlIGRyaXZlciB1c2VkIGF0IGxlYXN0IDIgZm9yIHRoZSBxdWV1ZSAKKwkgIGRlcHRoIGJ1dCBkaWQnbnQga2VlcCB0cmFjayBvZiB1c2VyIHNldHRpbmdzIGZvciB0YWdzIGRlcHRoIGxvd2VyIAorCSAgdGhhbiAyLgorCitUaHUgTm92IDE5ICAyMzowMCAxOTk4IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogdmVyc2lvbiBwcmUtc3ltNTNjOHh4LTAuMTUKKwktIEFkZCBzdXBwb3J0IGZvciBoYXJkd2FyZSBMRUQgY29udHJvbCBvZiB0aGUgODk2LgorCS0gSWdub3JlIGNoaXBzIHRoYXQgYXJlIGRyaXZlbiBieSBTSVNMIFJBSUQgKERBQyA5NjApLgorCSAgQ2hhbmdlIHNlbnQgYnkgTGVvbmFyZCBadWJrb2ZmIGFuZCBzbGlnaHRseSByZXdvcmtlZC4KKwktIFByZXZlbnQgODEwQSByZXYgMTEgYW5kIDg2MCByZXYgMSBmcm9tIHVzaW5nIGNhY2hlIGxpbmUgYmFzZWQgCisJICB0cmFuc2FjdGlvbnMgc2luY2UgdGhvc2UgZWFybHkgY2hpcCByZXZpc2lvbnMgbWF5IHVzZSBzdWNoIG9uIAorCSAgTE9BRC9TVE9SRSBpbnN0cnVjdGlvbnMgKHdvcmstYXJvdW5kKS4KKwktIFJlbW92ZSBzb21lIHVzZWxlc3MgYW5kIGJsb2F0IGNvZGUgZnJvbSB0aGUgcGNpIGluaXQgc3R1ZmYuCisJLSBEbyBub3QgdXNlIHRoZSByZWFkWCgpL3dyaXRlWCgpIGtlcm5lbCBmdW5jdGlvbnMgZm9yIF9faTM4Nl9fLCAKKwkgIHNpbmNlIHRoZXkgcGVyZm9ybSB1c2VsZXNzIG1hc2tpbmcgb3BlcmF0aW9ucyBpbiBvcmRlciB0byBkZWFsIAorCSAgd2l0aCBicm9rZW4gZHJpdmVyIGluIDIuMS5YIGtlcm5lbC4KKworV2VkIE5vdiAxMSAgMTA6MDAgMTk5OCBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHZlcnNpb24gcHJlLXN5bTUzYzh4eC0wLjE0CisJLSBUaGUgZHJpdmVyIHdhcyB1bmhhcHB5IHdoZW4gY29uZmlndXJlZCB3aXRoIGRlZmF1bHRfdGFncyA+IE1BWF9UQUdTCisJICBIb3BlZnVsbHkgZG91Ymx5LWZpeGVkLgorCS0gU2V0IFBDSV9QQVJJVFkgaW4gUENJX0NPTU1BTkQgcmVnaXN0ZXIgaW4gbm90IHNldCAoUENJIGZpeC11cCkuCisJLSBQcmludCBvdXQgc29tZSBtZXNzYWdlIGlmIHBoYXNlIG1pc21hdGNoIGlzIGhhbmRsZWQgZnJvbSBTQ1JJUFRTLgorCitTdW4gTm92IDEgIDE0SDAwIDE5OTggR2VyYXJkIFJvdWRpZXIgKGdyb3VkaWVyQGNsdWItaW50ZXJuZXQuZnIpCisJKiB2ZXJzaW9uIHByZS1zeW01M2M4eHgtMC4xMworCS0gU29tZSByZXdyaXRlIG9mIHRoZSBkZXZpY2UgZGV0ZWN0aW9uIGNvZGUuIFRoaXMgY29kZSBoYWQgYmVlbiAKKwkgIHBhdGNoZWQgdG9vIG11Y2ggYW5kIG5lZWRlZCB0byBiZSBmYWNlLWxpZnRlZCBhIGJpdC4KKwkgIFJlbW92ZSBhbGwgcGxhdGZvcm0gZGVwZW5kZW50IGZpeC11cHMgdGhhdCB3YXMgbm90IG5lZWRlZCBvcgorCSAgY29uZmxpY3RlZCB3aXRoIHNvbWUgb3RoZXIgZHJpdmVyIGNvZGUgYXMgd29yay1hcm91bmRzLgorCSAgUmVyZWFkIHRoZSBOVlJBTSBiZWZvcmUgdGhlIGNhbGxpbmcgb2YgbmNyX2F0dGFjaCgpLiBUaGlzIHNwYXJlcyAKKwkgIHN0YWNrIHNwYWNlIGFuZCBzbyBhbGxvd3MgdG8gaGFuZGxlIG1vcmUgYm9hcmRzLgorCSAgSGFuZGxlIDY0IGJpdCBiYXNlIGFkZHJlc3NlcyB1bmRlciBsaW51eC0yLjAuWC4KKwkgIFNldCBNQVNURVIgYml0IGluIFBDSSBDT01NQU5EIHJlZ2lzdGVyIGlmIG5vdCBzZXQuCisKK1dlZCBPY3QgMzAgMjJIMDAgMTk5OCBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHZlcnNpb24gcHJlLXN5bTUzYzh4eC0wLjEyCisJLSBEYW1uZWQhIEkganVzdCBicm9rZSB0aGUgZHJpdmVyIGZvciBBbHBoYSBieSBsZWF2aW5nIGEgc3RhbGUgCisJICBpbnN0cnVjdGlvbiBpbiB0aGUgc291cmNlIGNvZGUuIEhvcGVmdWxseSBmaXhlZC4KKwktIERvIG5vdCBzZXQgUEZFTiB3aGVuIGl0IGlzIHVzZWxlc3MuIERvaW5nIHNvIHdlIGFyZSBzdXJlIHRoYXQgQk9GIAorCSAgd2lsbCBiZSBhY3RpdmUsIHNpbmNlIHRoZSBtYW51YWwgYXBwZWFycyB0byBiZSB2ZXJ5IHVuY2xlYXIgb24gd2hhdCAKKwkgIGZlYXR1cmUgaXMgYWN0dWFsbHkgdXNlZCBieSB0aGUgY2hpcCB3aGVuIGJvdGggUEZFTiBhbmQgQk9GIGFyZSAKKwkgIHNldC4KKworU2F0IE9jdCAyNCAxNkgwMCAxOTk4IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogdmVyc2lvbiBwcmUtc3ltNTNjOHh4LTAuMTEKKwktIExPQUQvU1RPUkUgaW5zdHJ1Y3Rpb25zIHdlcmUgbWlzY29tcGlsZWQgZm9yIHJlZ2lzdGVyIG9mZnNldHMgCisJICBiZXlvbmQgMHg3Zi4gVGhpcyBicm9rZSBhY2Nlc3NlcyB0byA4OTYnIG5ldyByZWdpc3RlcnMuCisJLSBEaXNhYmxlIGJ5IGRlZmF1bHQgUGhhc2UgTWlzbWF0Y2ggaGFuZGxpbmcgZnJvbSBTQ1JJUFRTLCBzaW5jZSAKKwkgIGN1cnJlbnQgODk2IHJldi4xIHNlZW1zIG5vdCB0byBvcGVyYXRlIHNhZmVseSB3aXRoIHRoZSBkcml2ZXIKKwkgIHdoZW4gdGhpcyBmZWF0dXJlIGlzIGVuYWJsZWQgKGFuZCBhYm92ZSBMT0FEL1NUT1JFIGZpeCBhcHBsaWVkKS4KKwkgIEkgd2lsbCBjaGFuZ2UgdGhlIGRlZmF1bHQgdG8gJ2VuYWJsZWQnIHdoZW4gdGhpcyBwcm9ibGVtIHdpbGwgYmUgCisJICBzb2x2ZWQuCisJICBVc2luZyBib290IG9wdGlvbiAnbmNyNTNjOHh4PXNwZWNmOjEnIGVuYWJsZXMgdGhpcyBmZWF0dXJlLgorCS0gSW1wbGVtZW50IGEgd29yay1hcm91bmQgKERFTCA0NzIgLSBJVEVNIDUpIHRoYXQgc2hvdWxkIGFsbG93IHRoZSAKKwkgIGRyaXZlciB0byBzYWZlbHkgZW5hYmxlIGhhcmR3YXJlIHBoYXNlIG1pc21hdGNoIHdpdGggODk2IHJldi4gMS4KKworVHVlIE9jdCAyMCAyMkgwMCAxOTk4IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogdmVyc2lvbiBwcmUtc3ltNTNjOHh4LTAuMTAKKwktIEFkZCB0aGUgNTNjODc2IGRlc2NyaXB0aW9uIHRvIHRoZSBjaGlwIHRhYmxlLiBUaGlzIGlzIG9ubHkgdXNlZnVsIAorCSAgZm9yIHByaW50aW5nIHRoZSByaWdodCBuYW1lIG9mIHRoZSBjb250cm9sbGVyLgorCS0gQWRkIGFkZGl0aW9uYWwgY2hlY2tpbmcgb2YgSU5RVUlSWSBkYXRhOgorCSAgQ2hlY2sgSU5RVUlSWSBkYXRhIHJlY2VpdmVkIGxlbmd0aCBpcyBhdCBsZWFzdCA3LiBCeXRlIDcgb2YgCisJICBpbnF1aXJ5IGRhdGEgY29udGFpbnMgZGV2aWNlIGZlYXR1cmVzIGJpdHMgYW5kIHRoZSBkcml2ZXIgbWlnaHQgCisJICBiZSBjb25mdXNlZCBieSBnYXJiYWdlLiBBbHNvIGNoZWNrIHBlcmlwaGVyYWwgcXVhbGlmaWVyLgorCS0gVXNlIGEgMSwzLDUsLi4uTUFYVEFHUyoyKzEgdGFnIG51bWJlcmluZy4gUHJldmlvdXMgZHJpdmVyIGNvdWxkICAKKwkgIHVzZSBhbnkgdGFnIG51bWJlciBmcm9tIDEgdG8gMjUzIGFuZCBzb21lIG5vbiBjb25mb3JtYW50IGRldmljZXMgIAorCSAgbWlnaHQgaGF2ZSBwcm9ibGVtcyB3aXRoIGxhcmdlIHRhZyBudW1iZXJzLgorCS0gVXNlIE5BTUU1M0MgYW5kIE5BTUU1M0M4WFggZm9yIGNoaXAgbmFtZSBwcmVmaXggY2hpcCBmYW1pbHkgbmFtZS4KKwkgIEp1c3QgZ2l2ZSBhIHRyeSB1c2luZyAic3ltNTNjIiBhbmQgInN5bTUzYzh4eCIgaW5zdGVhZCBvZiAibmNyNTNjIiAKKwkgIGFuZCAibmNyNTNjOHh4Ii4gOi0pCisKK1N1biBPY3QgMTEgMTdIMDAgMTk5OCBHZXJhcmQgUm91ZGllciAoZ3JvdWRpZXJAY2x1Yi1pbnRlcm5ldC5mcikKKwkqIHZlcnNpb24gcHJlLXN5bTUzYzh4eC0wLjkKKwktIERFTC00NDEgSXRlbSAyIHdvcmstYXJvdW5kIGZvciB0aGUgNTNjODc2IHJldiA8PSA1ICgweDE1KS4KKwktIEJyZWFrIG5jcl9zY2F0dGVyKCkgaW50byAyIGZ1bmN0aW9ucyBpbiBvcmRlciB0byBndWFyYW50ZWUgYmVzdCAKKwkgIHBvc3NpYmxlIGNvZGUgb3B0aW1pemF0aW9uIGZvciB0aGUgY2FzZSB3ZSBnZXQgYSBzY2F0dGVyIGxpc3QuCisJLSBBZGQgdGhlIGNvZGUgaW50ZW5kZWQgdG8gc3VwcG9ydCB1cCB0byAxIHRlcmEtYnl0ZSBmb3IgNjQgYml0IHN5c3RlbXMuCisJICBJdCBpcyBwcm9iYWJseSB0b28gZWFybHksIGJ1dCBJIHdhbnRlZCB0byBjb21wbGV0ZSB0aGUgdGhpbmcuCisKK1NhdCBPY3QgMyAxNEgwMCAxOTk4IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQorCSogdmVyc2lvbiBwcmUtc3ltNTNjOHh4LTAuOAorCS0gRG8gc29tZSB0ZXN0aW5nIHdpdGggaW9fbWFwcGVkIGFuZCBmaXggd2hhdCBuZWVkZWQgdG8gYmUgc28uCisJLSBXYWl0IGZvciBTQ1NJIHNlbGVjdGlvbiB0byBjb21wbGV0ZSBvciB0aW1lLW91dCBpbW1lZGlhdGVseSBhZnRlciAKKwkgIHRoZSBjaGlwIHdvbiBhcmJpdHJhdGlvbiwgc2luY2UgZXhlY3V0aW5nIFNDUklQVFMgd2hpbGUgdGhlIFNDU0kgCisJICBjb3JlIGlzIHBlcmZvcm1pbmcgU0NTSSBzZWxlY3Rpb24gYnJlYWtzIHRoZSBzZWxlY3Rpb24gcHJvY2VkdXJlIAorCSAgYXQgbGVhc3QgZm9yIHNvbWUgY2hpcCByZXZpc2lvbnMuCisJLSBJbnRlcnJ1cHQgdGhlIFNDUklQVFMgaWYgYSBkZXZpY2UgZG9lcyBub3QgZ28gdG8gTVNHIE9VVCBwaGFzZSBhZnRlciAKKwkgIGhhdmluZyBiZWVuIHNlbGVjdGVkIHdpdGggQVROLiBTdWNoIGEgc2l0dWF0aW9uIGlzIG5vdCByZWNvdmVyYWJsZSwgCisJICBiZXR0ZXIgdG8gZmFpbCB3aGVuIHdlIGFyZSBzdHVjay4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9DaGFuZ2VMb2cuc3ltNTNjOHh4XzIgYi9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLnN5bTUzYzh4eF8yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4YTVkNzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLnN5bTUzYzh4eF8yCkBAIC0wLDAgKzEsMTQ0IEBACitTYXQgRGVjIDMwIDIxOjMwIDIwMDAgR2VyYXJkIFJvdWRpZXIgCisJKiB2ZXJzaW9uIHN5bS0yLjEuMC0yMDAwMTIzMAorCS0gSW5pdGlhbCByZWxlYXNlIG9mIFNZTS0yLgorCitNb24gSmFuIDA4IDIxOjMwIDIwMDEgR2VyYXJkIFJvdWRpZXIgCisJKiB2ZXJzaW9uIHN5bS0yLjEuMS0yMDAxMDEwOAorCS0gQ2hhbmdlIGEgY291cGxlIG9mIGRlZmluZXMgY29udGFpbmluZyBuY3Igb3IgTkNSIGJ5IHRoZWlyIAorCSAgZXF1aXZhbGVudCBjb250YWluaW5nIHN5bSBvciBTWU0gaW5zdGVhZC4KKworU3VuIEphbiAxNCAyMjozMCAyMDAxIEdlcmFyZCBSb3VkaWVyIAorCSogdmVyc2lvbiBzeW0tMi4xLjItMjAwMTAxMTQKKwktIEZpeCBhIGNvdXBsZSBvZiBwcmludGZzOgorCSAgKiBBZGQgdGhlIHRhcmdldCBudW1iZXIgdG8gdGhlIGRpc3BsYXkgb2YgdHJhbnNmZXIgcGFyYW1ldGVycy4KKwkgICogTWFrZSB0aGUgZGlzcGxheSBvZiBUQ1EgYW5kIHF1ZXVlIGRlcHRoIGNsZWFyZXIuCisKK1dlZCBKYW4gMTcgMjM6MzAgMjAwMSBHZXJhcmQgUm91ZGllciAKKwkqIHZlcnNpb24gc3ltLTIuMS4zLTIwMDEwMTE3CisJLSBXcm9uZyByZXNpZHVhbCB2YWx1ZXMgd2VyZSByZXR1cm5lZCBpbiBzb21lIHNpdHVhdGlvbnMuCisJICBUaGlzIGJyb2tlIGNkcmVjb3JkIHdpdGggbGludXgtMi40LjAsIGZvciBleGFtcGxlLgorCitTYXQgSmFuIDIwIDE4OjAwIDIwMDEgR2VyYXJkIFJvdWRpZXIgCisJKiB2ZXJzaW9uIHN5bS0yLjEuNC0yMDAxMDEyMAorCS0gQWRkIHllYXIgMjAwMSB0byBDb3B5cmlnaHQuCisJLSBBIHRpbnkgYnVnIGluIHRoZSBkbWEgbWVtb3J5IGZyZWVpbmcgcGF0aCBoYXMgYmVlbiBmaXhlZC4KKwkgIChEcml2ZXIgdW5sb2FkIGZhaWxlZCB3aXRoIGEgYmFkIGFkZHJlc3MgcmVmZXJlbmNlKS4KKworV2VkIEphbiAyNCAyMTowMCAyMDAxIEdlcmFyZCBSb3VkaWVyIAorCSogdmVyc2lvbiBzeW0tMi4xLjUtMjAwMTAxMjQKKwktIE1ha2UgdGhlIGRyaXZlciB3b3JrIHVuZGVyIExpbnV4LTIuNC54IHdoZW4gc3RhdGljYWxseSBsaW5rZWQgCisJICB3aXRoIHRoZSBrZXJuZWwuCisJLSBDaGVjayBhZ2FpbnN0IG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUgZm9yIFNDUklQVFogYW5kIGFkZCB0aGUgCisJICBtaXNzaW5nIGZyZWUgb2YgdGhpcyBtZW1vcnkgb24gaW5zdGFuY2UgZGV0YWNoLgorCS0gQ2hlY2sgYWdhaW5zdCBHUElPMyBwdWxsZWQgbG93IGZvciBIVkQgY29udHJvbGxlcnMgKGRyaXZlciBkaWQgCisJICBqdXN0IHRoZSBvcHBvc2l0ZSkuCisJICBNaXNkZXRlY3Rpb24gb2YgQlVTIG1vZGUgd2FzIHRyaWdnZXJlZCBvbiBtb2R1bGUgcmVsb2FkIG9ubHksIAorCSAgc2luY2UgQklPUyBzZXR0aW5ncyB3ZXJlIHRydXN0ZWQgaW5zdGVhZCBvbiBmaXJzdCBsb2FkLgorCitXZWQgRmViIDcgMjE6MDAgMjAwMSBHZXJhcmQgUm91ZGllciAKKwkqIHZlcnNpb24gc3ltLTIuMS42LTIwMDEwMjA3CisJLSBDYWxsIHBjaV9lbmFibGVfZGV2aWNlKCkgYXMgd2lzaGVkIGJ5IGtlcm5lbCBtYWludGFpbmVycy4KKwktIENoYW5nZSB0aGUgc3ltX3F1ZXVlX3Njc2lpbygpIGludGVyZmFjZS4KKwkgIFRoaXMgaXMgaW50ZW5kZWQgdG8gc2ltcGxpZnkgcG9ydGFiaWxpdHkuCisJLSBNb3ZlIHRoZSBjb2RlIGludGVuZGVkIHRvIGRlYWwgd2l0aCB0aGUgZG93bG9hZGluZyBvZiBTQ1JJUFRTIAorCSAgZnJvbSBTQ1JJUFRTIDopIGluIHRoZSBwYXRjaCBtZXRob2QgKHdhcyB3cm9uZ2x5IHBsYWNlZCBpbiAKKwkgIHRoZSBTQ1JJUFRTIHNldHVwIG1ldGhvZCkuCisJLSBBZGQgYSBtaXNzaW5nIGNwdV90b19zY3IoKSAgKG5wLT5hYm9ydF90YmwuYWRkcikKKwktIFJlbW92ZSBhIHdyb25nIGNwdV90b19zY3IoKSAobnAtPnRhcmd0YmxfYmEpCisJLSBDbGVhbnVwIGEgYml0IHRoZSBQUFIgZmFpbHVyZSByZWNvdmVyeSBjb2RlLgorCitTYXQgTWFyIDMgMjE6MDAgMjAwMSBHZXJhcmQgUm91ZGllciAKKwktIEFkZCBvcHRpb24gU1lNX09QVF9BTk5PVU5DRV9UUkFOU0ZFUl9SQVRFIGFuZCBtb3ZlIHRoZSAKKwkgIGNvcnJlc3BvbmRpbmcgY29kZSB0byBmaWxlIHN5bV9taXNjLmMuCisJICBBbHNvIG1vdmUgdGhlIGNvZGUgdGhhdCBzbmlmZmVzIElOUVVJUlkgdG8gc3ltX21pc2MuYy4KKwkgIFRoaXMgYWxsb3dzIHRvIHNoYXJlIHRoZSBjb3JyZXNwb25kaW5nIGNvZGUgd2l0aCBOZXRCU0QgCisJICB3aXRob3V0IHBvbGx1YXRpbmcgdGhlIGNvcmUgZHJpdmVyIHNvdXJjZSAoc3ltX2hpcGQuYykuCisJLSBBZGQgb3B0aW9ubmFsIGNvZGUgdGhhdCBoYW5kbGVzIElPIHRpbWVvdXRzIGZyb20gdGhlIGRyaXZlci4KKwkgIChub3QgdXNlZCB1bmRlciBMaW51eCwgYnV0IHJlcXVpcmVkIGZvciBOZXRCU0QpCisJLSBEb25ub3QgYXNzdW1lIGFueSBsb25nZXIgdGhhdCBQQUdFX1NISUZUIGFuZCBQQUdFX1NJWkUgYXJlIAorCSAgZGVmaW5lZCBhdCBjb21waWxlIHRpbWUsIGFzIGF0IGxlYXN0IE5ldEJTRCB1c2VzIHZhcmlhYmxlcyAKKwkgIGluIG1lbW9yeSBmb3IgdGhhdC4KKwktIFJlZmluZSBhIHdvcmstYXJvdW5kIGZvciB0aGUgQzEwMTAtMzMgdGhhdCBjb25zaXN0cyBpbiAKKwkgIGRpc2FibGluZyBpbnRlcm5hbCBMT0FEL1NUT1JFLiBXYXMgYXBwbGllZCB1cCB0byByZXZpc2lvbiAxLgorCSAgSXMgbm93IG9ubHkgYXBwbGllZCB0byByZXZpc2lvbiAwLgorCS0gU29tZSBjb2RlIHJlb3JnYW5pc2F0aW9ucyBkdWUgdG8gY29kZSBtb3ZlcyBiZXR3ZWVuIGZpbGVzLgorCitUdWVzIEFwciAxMCAyMTowMCAyMDAxIEdlcmFyZCBSb3VkaWVyIAorCSogdmVyc2lvbiBzeW0tMi4xLjktMjAwMTA0MTIKKwktIFJlc2V0IDUzQzg5NiBhbmQgNTNDMTAxMCBjaGlwIGFjY29yZGluZyB0byB0aGUgbWFudWFsLgorCSAgKGkuZS46IHNldCB0aGUgQUJSVCBiaXQgaW4gSVNUQVQgaWYgU0NSSVBUUyBhcmUgcnVubmluZykKKwktIFNldCAjTFVOIGluIHJlcXVlc3Qgc2Vuc2Ugb25seSBpZiBzY3NpIHZlcnNpb24gPD0gMiBhbmQKKwkgICNMVU4gPD0gNy4KKwktIFNldCBidXN5X2l0bCBpbiBMQ0IgdG8gMSBpZiB0aGUgTENCIGlzIGFsbG9jYXRlZCBhbmQgYSAKKwkgIFNDU0kgY29tbWFuZCBpcyBhY3RpdmUuIFRoaXMgaXMgYSBzaW1wbGlmaWNhdGlvbi4KKwktIEluIHN5bV9oY2JfZnJlZSgpLCBkbyBub3Qgc2NhbiB0aGUgZnJlZV9jY2JxIGlmIG5vIENDQnMgCisJICBoYXMgYmVlbiBhbGxvY2F0ZWQuIFRoaXMgZml4ZXMgYSBwYW5pYyBpZiBhdHRhY2ggZmFpbGVkLgorCS0gQWRkIERUL1NUIChkb3VibGUvc2ltcGxlIHRyYW5zaXRpb24pIGluIHRoZSB0cmFuc2ZlciAKKwkgIG5lZ290aWF0aW9uIGFubm91bmNlLgorCS0gRm9yY2VzIHRoZSBtYXggbnVtYmVyIG9mIHRhc2tzIHBlciBMVU4gdG8gYXQgbGVhc3QgNjQuCisJLSBVc2UgcGNpX3NldF9kbWFfbWFzaygpIGZvciBsaW51eC0yLjQuMyBhbmQgYWJvdmUuCisJLSBBIGNvdXBsZSBvZiBjb21tZW50cyBmaXhlcy4KKworV2VkIE1heSAyMjowMCAyMDAxIEdlcmFyZCBSb3VkaWVyIAorCSogdmVyc2lvbiBzeW0tMi4xLjEwLTIwMDEwNTA5CisJLSBNYXNrIEdQQ05UTCBhZ2FpbnN0IDB4MWMgKHdhcyAweGZjKSBmb3IgdGhlIHJlYWRpbmcgb2YgdGhlIE5WUkFNLgorCSAgVGhpcyBlbnN1cmUgTEVEQyBiaXQgd2lsbCBub3QgYmUgc2V0IG9uIDg5NiBhbmQgbGF0ZXIgY2hpcHMuCisJICBGaXggc2VudCBieSBDaGlwIFNhbHplbmJlcmcgPGNoaXBAcGVybHN1cHBvcnQuY29tPi4KKwktIERlZmluZSB0aGUgbnVtYmVyIG9mIFBRUyBCVVNlcyBzdXBwb3J0ZWQuCisJICBGaXggc2VudCBieSBTdGlnIFRlbGZlciA8c3RpZ0BhcGktbmV0d29ya3MuY29tPgorCS0gTWlzY2VsbGFuZW91cyBjb21tb24gY29kZSByZWFycmFuZ2VtZW50cyBkdWUgdG8gTmV0QlNEIGFjY2VsIAorCSAgaW9jdGwgc3VwcG9ydCwgd2l0aG91dCBpbXBhY3Qgb24gTGludXggKGhvcGVmdWxseSkuCisKK01vbiBKdWx5IDIgMTI6MDAgMjAwMSBHZXJhcmQgUm91ZGllciAKKwkqIHZlcnNpb24gc3ltLTIuMS4xMS0yMDAxMDcwMgorCS0gQWRkIFRla3JhbSAzOTAgVTJCL1UyVyBTQ1NJIExFRCBoYW5kbGluZy4KKwkgIFN1Ym1pdHRlZCBieSBDaGlwIFNhbHplbmJlcmcgPGNoaXBAdmFsaW51eC5jb20+CisJLSBBZGQgY2FsbCB0byBzY3NpX3NldF9wY2lfZGV2aWNlKCkgZm9yIGtlcm5lbHMgPj0gMi40LjQuCisJLSBDaGVjayBwY2kgZG1hIG1hcHBpbmcgZmFpbHVyZXMgYW5kIGNvbXBsZXRlIHRoZSBJTyB3aXRoIHNvbWUgCisJICBlcnJvciB3aGVuIHN1Y2ggbWFwcGluZyBmYWlscy4KKwktIEZpbGwgaW4gaW5zdGFuY2UtPm1heF9jbWRfbGVuIGZvciBrZXJuZWxzID4gMi40LjAuCisJLSBBIGNvdXBsZSBvZiB0aW55IGZpeGVzIC4uLgorCitTdW4gU2VwIDkgMTg6MDAgMjAwMSBHZXJhcmQgUm91ZGllciAKKwkqIHZlcnNpb24gc3ltLTIuMS4xMi0yMDAxMDkwOQorCS0gQ2hhbmdlIG15IGVtYWlsIGFkZHJlc3MuCisJLSBBZGQgaW5mcmFzdHJ1Y3R1cmUgZm9yIHRoZSBmb3J0aGNvbWluZyA2NCBiaXQgRE1BIGFkZHJlc3Npbmcgc3VwcG9ydC4KKwkgIChCYXNlZCBvbiBQQ0kgNjQgYml0IHBhdGNoIGZyb20gRGF2aWQgUy4gTWlsbGVyKQorCS0gRG9ubm90IHVzZSBhbnltb3JlIHZtX29mZnNldF90IHR5cGUuCisKK1NhdCBTZXAgMTUgMjA6MDAgMjAwMSBHZXJhcmQgUm91ZGllciAKKwkqIHZlcnNpb24gc3ltLTIuMS4xMy0yMDAxMDkxNgorCS0gQWRkIHN1cHBvcnQgZm9yIDY0IGJpdCBETUEgYWRkcmVzc2luZyB1c2luZyBzZWdtZW50IHJlZ2lzdGVycy4KKwkgIDE2IHJlZ2lzdGVycyBmb3IgdXAgdG8gNCBHQiB4IDE2IC0+IDY0IEdCLgorCitTYXQgU2VwIDIyIDEyOjAwIDIwMDEgR2VyYXJkIFJvdWRpZXIgCisJKiB2ZXJzaW9uIHN5bS0yLjEuMTQtMjAwMTA5MjIKKwktIENvbXBsZXRlIHJld3JpdGUgb2YgdGhlIGVoIGhhbmRsaW5nLiBUaGUgZHJpdmVyIGlzIG5vdyB1c2luZyBhIAorCSAgc2VtYXBob3JlIGluIG9yZGVyIHRvIGJlaGF2ZSBzeW5jaHJvbm91c2x5IGFzIHJlcXVpcmVkIGJ5IHRoZSBlaCAKKwkgIHRocmVhZHMuIEEgdGltZXIgaXMgYWxzbyB1c2VkIHRvIHByZXZlbnQgZnJvbSB3YWl0aW5nIGluZGVmaW5pdGVseS4KKworU3VuIFNlcCAzMCAxNzowMCAyMDAxIEdlcmFyZCBSb3VkaWVyIAorCSogdmVyc2lvbiBzeW0tMi4xLjE1LTIwMDEwOTMwCisJLSBJbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4gdW5jb25kaXRpb25uYWx5IGFzIGV4cGVjdGVkIGJ5IGxhdGVzdAorCSAga2VybmVscy4KKwktIFVzZSBkZWxfdGltZXJfc3luYygpIGZvciByZWNlbnQga2VybmVscyB0byBraWxsIHRoZSBkcml2ZXIgdGltZXIgCisJICBvbiBtb2R1bGUgcmVsZWFzZS4KKworU3VuIE9jdCAyOCAxNTowMCAyMDAxIEdlcmFyZCBSb3VkaWVyIAorCSogdmVyc2lvbiBzeW0tMi4xLjE2LTIwMDExMDI4CisJLSBTbGlnaHRseSBzaW1wbGlmeSBkcml2ZXIgY29uZmlndXJhdGlvbi4KKwktIFByZXBhcmUgYSBuZXcgcGF0Y2ggYWdhaW5zdCBsaW51eC0yLjQuMTMuCisKK1NhdCBOb3YgMTcgMTA6MDAgMjAwMSBHZXJhcmQgUm91ZGllciAKKwkqIHZlcnNpb24gc3ltLTIuMS4xNworCS0gRml4IGEgY291cGxlIG9mIGdjYy9nY2MzIHdhcm5pbmdzLgorCS0gQWxsb2NhdGUgc2VwYXJhdGVseSBmcm9tIHRoZSBIQ0IgdGhlIGFycmF5IGZvciBDQ0JzIGhhc2hlZCBieSBEU0EuCisJICBBbGwgZHJpdmVyIG1lbW9yeSBhbGxvY2F0aW9ucyBhcmUgbm93IG5vdCBncmVhdGVyIHRoYW4gMSBQQUdFIAorCSAgZXZlbiBvbiBQUEM2NCAvIDRLQiBQQUdFIHN1cnByaXNpbmcgc2V0dXAuCisKK1NhdCBEZWMgMDEgMTg6MDAgMjAwMSBHZXJhcmQgUm91ZGllciAKKwkqIHZlcnNpb24gc3ltLTIuMS4xN2EKKwktIFVzZSB1X2xvbmcgaW5zdGVhZCBvZiBVMzIgZm9yIHRoZSBJTyBiYXNlIGNvb2tpZS4gVGhpcyBpcyBtb3JlIAorCSAgY29uc2lzdGVudCB3aXRoIHdoYXQgYXJjaHMgYXJlIGV4cGVjdGluZy4KKwktIFVzZSBNTUlPIHBlciBkZWZhdWx0IGZvciBQb3dlciBQQyBpbnN0ZWFkIG9mIHNvbWUgZmFrZSBub3JtYWwgSU8sCisJICBhcyBQYXVsIE1hY2tlcnJhcyBzdGF0ZWQgdGhhdCBNTUlPIHdvcmtzIGZpbmUgbm93IG9uIHRoaXMgYXJjaC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9GbGFzaFBvaW50LnR4dCBiL0RvY3VtZW50YXRpb24vc2NzaS9GbGFzaFBvaW50LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjVmMjljCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL0ZsYXNoUG9pbnQudHh0CkBAIC0wLDAgKzEsMTYzIEBACitUaGUgQnVzTG9naWMgRmxhc2hQb2ludCBTQ1NJIEhvc3QgQWRhcHRlcnMgYXJlIG5vdyBmdWxseSBzdXBwb3J0ZWQgb24gTGludXguCitUaGUgdXBncmFkZSBwcm9ncmFtIGRlc2NyaWJlZCBiZWxvdyBoYXMgYmVlbiBvZmZpY2lhbGx5IHRlcm1pbmF0ZWQgZWZmZWN0aXZlCiszMSBNYXJjaCAxOTk3IHNpbmNlIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCisKKworCisJICBNWUxFWCBJTlRST0RVQ0VTIExJTlVYIE9QRVJBVElORyBTWVNURU0gU1VQUE9SVCBGT1IgSVRTCisJICAgICAgQlVTTE9HSUMgRkxBU0hQT0lOVCBMSU5FIE9GIFNDU0kgSE9TVCBBREFQVEVSUworCisKK0ZSRU1PTlQsIENBLCAtLSBPY3RvYmVyIDgsIDE5OTYgLS0gTXlsZXggQ29ycG9yYXRpb24gaGFzIGV4cGFuZGVkIExpbnV4CitvcGVyYXRpbmcgc3lzdGVtIHN1cHBvcnQgdG8gaXRzIEJ1c0xvZ2ljIGJyYW5kIG9mIEZsYXNoUG9pbnQgVWx0cmEgU0NTSQoraG9zdCBhZGFwdGVycy4gIEFsbCBvZiBCdXNMb2dpYydzIG90aGVyIFNDU0kgaG9zdCBhZGFwdGVycywgaW5jbHVkaW5nIHRoZQorTXVsdGlNYXN0ZXIgbGluZSwgY3VycmVudGx5IHN1cHBvcnQgdGhlIExpbnV4IG9wZXJhdGluZyBzeXN0ZW0uICBMaW51eAorZHJpdmVycyBhbmQgaW5mb3JtYXRpb24gd2lsbCBiZSBhdmFpbGFibGUgb24gT2N0b2JlciAxNXRoIGF0CitodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2RhbmRlbGlvbi8uCisKKyJNeWxleCBpcyBjb21taXR0ZWQgdG8gc3VwcG9ydGluZyB0aGUgTGludXggY29tbXVuaXR5LCIgc2F5cyBQZXRlciBTaGFtYm9yYSwKK3ZpY2UgcHJlc2lkZW50IG9mIG1hcmtldGluZyBmb3IgTXlsZXguICAiV2UgaGF2ZSBzdXBwb3J0ZWQgTGludXggZHJpdmVyCitkZXZlbG9wbWVudCBhbmQgcHJvdmlkZWQgdGVjaG5pY2FsIHN1cHBvcnQgZm9yIG91ciBob3N0IGFkYXB0ZXJzIGZvciBzZXZlcmFsCit5ZWFycywgYW5kIGFyZSBwbGVhc2VkIHRvIG5vdyBtYWtlIG91ciBGbGFzaFBvaW50IHByb2R1Y3RzIGF2YWlsYWJsZSB0byB0aGlzCit1c2VyIGJhc2UuIgorCitUaGUgTGludXggT3BlcmF0aW5nIFN5c3RlbQorCitMaW51eCBpcyBhIGZyZWVseS1kaXN0cmlidXRlZCBpbXBsZW1lbnRhdGlvbiBvZiBVTklYIGZvciBJbnRlbCB4ODYsIFN1bgorU1BBUkMsIFNHSSBNSVBTLCBNb3Rvcm9sYSA2OGssIERpZ2l0YWwgQWxwaGEgQVhQIGFuZCBNb3Rvcm9sYSBQb3dlclBDCittYWNoaW5lcy4gIEl0IHN1cHBvcnRzIGEgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSwgaW5jbHVkaW5nIHRoZSBYIFdpbmRvdworU3lzdGVtLCBFbWFjcywgYW5kIFRDUC9JUCBuZXR3b3JraW5nLiAgRnVydGhlciBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgYXQKK2h0dHA6Ly93d3cubGludXgub3JnIGFuZCBodHRwOi8vd3d3LnNzYy5jb20vLgorCitGbGFzaFBvaW50IEhvc3QgQWRhcHRlcnMKKworVGhlIEZsYXNoUG9pbnQgZmFtaWx5IG9mIFVsdHJhIFNDU0kgaG9zdCBhZGFwdGVycywgZGVzaWduZWQgZm9yIHdvcmtzdGF0aW9uCithbmQgZmlsZSBzZXJ2ZXIgZW52aXJvbm1lbnRzLCBhcmUgYXZhaWxhYmxlIGluIG5hcnJvdywgd2lkZSwgZHVhbCBjaGFubmVsLAorYW5kIGR1YWwgY2hhbm5lbCB3aWRlIHZlcnNpb25zLiAgVGhlc2UgYWRhcHRlcnMgZmVhdHVyZSBTZXFFbmdpbmUKK2F1dG9tYXRpb24gdGVjaG5vbG9neSwgd2hpY2ggbWluaW1pemVzIFNDU0kgY29tbWFuZCBvdmVyaGVhZCBhbmQgcmVkdWNlcwordGhlIG51bWJlciBvZiBpbnRlcnJ1cHRzIGdlbmVyYXRlZCB0byB0aGUgQ1BVLgorCitBYm91dCBNeWxleAorCitNeWxleCBDb3Jwb3JhdGlvbiAoTkFTREFRL05NIFNZTUJPTDogTVlMWCksIGZvdW5kZWQgaW4gMTk4MywgaXMgYSBsZWFkaW5nCitwcm9kdWNlciBvZiBSQUlEIHRlY2hub2xvZ3kgYW5kIG5ldHdvcmsgbWFuYWdlbWVudCBwcm9kdWN0cy4gIFRoZSBjb21wYW55Citwcm9kdWNlcyBoaWdoIHBlcmZvcm1hbmNlIGRpc2sgYXJyYXkgKFJBSUQpIGNvbnRyb2xsZXJzLCBhbmQgY29tcGxlbWVudGFyeQorY29tcHV0ZXIgcHJvZHVjdHMgZm9yIG5ldHdvcmsgc2VydmVycywgbWFzcyBzdG9yYWdlIHN5c3RlbXMsIHdvcmtzdGF0aW9ucworYW5kIHN5c3RlbSBib2FyZHMuICBUaHJvdWdoIGl0cyB3aWRlIHJhbmdlIG9mIFJBSUQgY29udHJvbGxlcnMgYW5kIGl0cworQnVzTG9naWMgbGluZSBvZiBVbHRyYSBTQ1NJIGhvc3QgYWRhcHRlciBwcm9kdWN0cywgTXlsZXggcHJvdmlkZXMgZW5hYmxpbmcKK2ludGVsbGlnZW50IEkvTyB0ZWNobm9sb2dpZXMgdGhhdCBpbmNyZWFzZSBuZXR3b3JrIG1hbmFnZW1lbnQgY29udHJvbCwKK2VuaGFuY2UgQ1BVIHV0aWxpemF0aW9uLCBvcHRpbWl6ZSBJL08gcGVyZm9ybWFuY2UsIGFuZCBlbnN1cmUgZGF0YSBzZWN1cml0eQorYW5kIGF2YWlsYWJpbGl0eS4gIFByb2R1Y3RzIGFyZSBzb2xkIGdsb2JhbGx5IHRocm91Z2ggYSBuZXR3b3JrIG9mIE9FTXMsCittYWpvciBkaXN0cmlidXRvcnMsIFZBUnMsIGFuZCBzeXN0ZW0gaW50ZWdyYXRvcnMuICBNeWxleCBDb3Jwb3JhdGlvbiBpcworaGVhZHF1YXJ0ZXJlZCBhdCAzNDU1MSBBcmRlbndvb2QgQmx2ZC4sIEZyZW1vbnQsIENBLgorCisJCQkJICAgIyMjIworCitDb250YWN0OgorCitQZXRlciBTaGFtYm9yYQorVmljZSBQcmVzaWRlbnQgb2YgTWFya2V0aW5nCitNeWxleCBDb3JwLgorNTEwLzc5Ni02MTAwCitwZXRlcnNAbXlsZXguY29tCisMCisJCQkgICAgICAgQU5OT1VOQ0VNRU5UCisJICAgICAgIEJ1c0xvZ2ljIEZsYXNoUG9pbnQgTFQvQlQtOTQ4IFVwZ3JhZGUgUHJvZ3JhbQorCQkJICAgICAgMSBGZWJydWFyeSAxOTk2CisKKwkJCSAgQURESVRJT05BTCBBTk5PVU5DRU1FTlQKKwkgICAgICAgQnVzTG9naWMgRmxhc2hQb2ludCBMVy9CVC05NTggVXBncmFkZSBQcm9ncmFtCisJCQkgICAgICAgMTQgSnVuZSAxOTk2CisKK0V2ZXIgc2luY2UgaXRzIGludHJvZHVjdGlvbiBsYXN0IE9jdG9iZXIsIHRoZSBCdXNMb2dpYyBGbGFzaFBvaW50IExUIGhhcworYmVlbiBwcm9ibGVtYXRpYyBmb3IgbWVtYmVycyBvZiB0aGUgTGludXggY29tbXVuaXR5LCBpbiB0aGF0IG5vIExpbnV4Citkcml2ZXJzIGhhdmUgYmVlbiBhdmFpbGFibGUgZm9yIHRoaXMgbmV3IFVsdHJhIFNDU0kgcHJvZHVjdC4gIERlc3BpdGUgaXRzCitvZmZpY2lhbGx5IGJlaW5nIHBvc2l0aW9uZWQgYXMgYSBkZXNrdG9wIHdvcmtzdGF0aW9uIHByb2R1Y3QsIGFuZCBub3QgYmVpbmcKK3BhcnRpY3VsYXJseSB3ZWxsIHN1aXRlZCBmb3IgYSBoaWdoIHBlcmZvcm1hbmNlIG11bHRpdGFza2luZyBvcGVyYXRpbmcKK3N5c3RlbSBsaWtlIExpbnV4LCB0aGUgRmxhc2hQb2ludCBMVCBoYXMgYmVlbiB0b3V0ZWQgYnkgY29tcHV0ZXIgc3lzdGVtCit2ZW5kb3JzIGFzIHRoZSBsYXRlc3QgdGhpbmcsIGFuZCBoYXMgYmVlbiBzb2xkIGV2ZW4gb24gbWFueSBvZiB0aGVpciBoaWdoCitlbmQgc3lzdGVtcywgdG8gdGhlIGV4Y2x1c2lvbiBvZiB0aGUgb2xkZXIgTXVsdGlNYXN0ZXIgcHJvZHVjdHMuICBUaGlzIGhhcworY2F1c2VkIGdyaWVmIGZvciBtYW55IHBlb3BsZSB3aG8gaW5hZHZlcnRlbnRseSBwdXJjaGFzZWQgYSBzeXN0ZW0gZXhwZWN0aW5nCit0aGF0IGFsbCBCdXNMb2dpYyBTQ1NJIEhvc3QgQWRhcHRlcnMgd2VyZSBzdXBwb3J0ZWQgYnkgTGludXgsIG9ubHkgdG8KK2Rpc2NvdmVyIHRoYXQgdGhlIEZsYXNoUG9pbnQgd2FzIG5vdCBzdXBwb3J0ZWQgYW5kIHdvdWxkIG5vdCBiZSBmb3IgcXVpdGUKK3NvbWUgdGltZSwgaWYgZXZlci4KKworQWZ0ZXIgdGhpcyBwcm9ibGVtIHdhcyBpZGVudGlmaWVkLCBCdXNMb2dpYyBjb250YWN0ZWQgaXRzIG1ham9yIE9FTQorY3VzdG9tZXJzIHRvIG1ha2Ugc3VyZSB0aGUgQlQtOTQ2Qy85NTZDIE11bHRpTWFzdGVyIGNhcmRzIHdvdWxkIHN0aWxsIGJlCittYWRlIGF2YWlsYWJsZSwgYW5kIHRoYXQgTGludXggdXNlcnMgd2hvIG1pc3Rha2VubHkgb3JkZXJlZCBzeXN0ZW1zIHdpdGgKK3RoZSBGbGFzaFBvaW50IHdvdWxkIGJlIGFibGUgdG8gdXBncmFkZSB0byB0aGUgQlQtOTQ2Qy4gIFdoaWxlIHRoaXMgaGVscGVkCittYW55IHB1cmNoYXNlcnMgb2YgbmV3IHN5c3RlbXMsIGl0IHdhcyBvbmx5IGEgcGFydGlhbCBzb2x1dGlvbiB0byB0aGUKK292ZXJhbGwgcHJvYmxlbSBvZiBGbGFzaFBvaW50IHN1cHBvcnQgZm9yIExpbnV4IHVzZXJzLiAgSXQgZGlkIG5vdGhpbmcgdG8KK2Fzc2lzdCB0aGUgcGVvcGxlIHdobyBpbml0aWFsbHkgcHVyY2hhc2VkIGEgRmxhc2hQb2ludCBmb3IgYSBzdXBwb3J0ZWQKK29wZXJhdGluZyBzeXN0ZW0gYW5kIHRoZW4gbGF0ZXIgZGVjaWRlZCB0byBydW4gTGludXgsIG9yIHRob3NlIHdobyBoYWQKK2VuZGVkIHVwIHdpdGggYSBGbGFzaFBvaW50IExULCBiZWxpZXZpbmcgaXQgd2FzIHN1cHBvcnRlZCwgYW5kIHdlcmUgdW5hYmxlCit0byByZXR1cm4gaXQuCisKK0luIHRoZSBtaWRkbGUgb2YgRGVjZW1iZXIsIEkgYXNrZWQgdG8gbWVldCB3aXRoIEJ1c0xvZ2ljJ3Mgc2VuaW9yCittYW5hZ2VtZW50IHRvIGRpc2N1c3MgdGhlIGlzc3VlcyByZWxhdGVkIHRvIExpbnV4IGFuZCBmcmVlIHNvZnR3YXJlIHN1cHBvcnQKK2ZvciB0aGUgRmxhc2hQb2ludC4gIFJ1bW9ycyBvZiB2YXJ5aW5nIGFjY3VyYWN5IGhhZCBiZWVuIGNpcmN1bGF0aW5nCitwdWJsaWNseSBhYm91dCBCdXNMb2dpYydzIGF0dGl0dWRlIHRvd2FyZCB0aGUgTGludXggY29tbXVuaXR5LCBhbmQgSSBmZWx0CitpdCB3YXMgYmVzdCB0aGF0IHRoZXNlIGlzc3VlcyBiZSBhZGRyZXNzZWQgZGlyZWN0bHkuICBJIHNlbnQgYW4gZW1haWwKK21lc3NhZ2UgYWZ0ZXIgMTFwbSBvbmUgZXZlbmluZywgYW5kIHRoZSBtZWV0aW5nIHRvb2sgcGxhY2UgdGhlIG5leHQKK2FmdGVybm9vbi4gIFVuZm9ydHVuYXRlbHksIGNvcnBvcmF0ZSB3aGVlbHMgc29tZXRpbWVzIGdyaW5kIHNsb3dseSwKK2VzcGVjaWFsbHkgd2hlbiBhIGNvbXBhbnkgaXMgYmVpbmcgYWNxdWlyZWQsIGFuZCBzbyBpdCdzIHRha2VuIHVudGlsIG5vdworYmVmb3JlIHRoZSBkZXRhaWxzIHdlcmUgY29tcGxldGVseSBkZXRlcm1pbmVkIGFuZCBhIHB1YmxpYyBzdGF0ZW1lbnQgY291bGQKK2JlIG1hZGUuCisKK0J1c0xvZ2ljIGlzIG5vdCBwcmVwYXJlZCBhdCB0aGlzIHRpbWUgdG8gcmVsZWFzZSB0aGUgaW5mb3JtYXRpb24gbmVjZXNzYXJ5Citmb3IgdGhpcmQgcGFydGllcyB0byB3cml0ZSBkcml2ZXJzIGZvciB0aGUgRmxhc2hQb2ludC4gIFRoZSBvbmx5IGV4aXN0aW5nCitGbGFzaFBvaW50IGRyaXZlcnMgaGF2ZSBiZWVuIHdyaXR0ZW4gZGlyZWN0bHkgYnkgQnVzTG9naWMgRW5naW5lZXJpbmcsIGFuZAordGhlcmUgaXMgbm8gRmxhc2hQb2ludCBkb2N1bWVudGF0aW9uIHN1ZmZpY2llbnRseSBkZXRhaWxlZCB0byBhbGxvdyBvdXRzaWRlCitkZXZlbG9wZXJzIHRvIHdyaXRlIGEgZHJpdmVyIHdpdGhvdXQgc3Vic3RhbnRpYWwgYXNzaXN0YW5jZS4gIFdoaWxlIHRoZXJlCithcmUgcGVvcGxlIGF0IEJ1c0xvZ2ljIHdobyB3b3VsZCByYXRoZXIgbm90IHJlbGVhc2UgdGhlIGRldGFpbHMgb2YgdGhlCitGbGFzaFBvaW50IGFyY2hpdGVjdHVyZSBhdCBhbGwsIHRoYXQgZGViYXRlIGhhcyBub3QgeWV0IGJlZW4gc2V0dGxlZCBlaXRoZXIKK3dheS4gIEluIGFueSBldmVudCwgZXZlbiBpZiBkb2N1bWVudGF0aW9uIHdlcmUgYXZhaWxhYmxlIHRvZGF5IGl0IHdvdWxkCit0YWtlIHF1aXRlIGEgd2hpbGUgZm9yIGEgdXNhYmxlIGRyaXZlciB0byBiZSB3cml0dGVuLCBlc3BlY2lhbGx5IHNpbmNlIEknbQorbm90IGNvbnZpbmNlZCB0aGF0IHRoZSBlZmZvcnQgcmVxdWlyZWQgd291bGQgYmUgd29ydGh3aGlsZS4KKworSG93ZXZlciwgQnVzTG9naWMgZG9lcyByZW1haW4gY29tbWl0dGVkIHRvIHByb3ZpZGluZyBhIGhpZ2ggcGVyZm9ybWFuY2UKK1NDU0kgc29sdXRpb24gZm9yIHRoZSBMaW51eCBjb21tdW5pdHksIGFuZCBkb2VzIG5vdCB3YW50IHRvIHNlZSBhbnlvbmUgbGVmdAordW5hYmxlIHRvIHJ1biBMaW51eCBiZWNhdXNlIHRoZXkgaGF2ZSBhIEZsYXNocG9pbnQgTFQuICBUaGVyZWZvcmUsIEJ1c0xvZ2ljCitoYXMgcHV0IGluIHBsYWNlIGEgZGlyZWN0IHVwZ3JhZGUgcHJvZ3JhbSB0byBhbGxvdyBhbnkgTGludXggdXNlciB3b3JsZHdpZGUKK3RvIHRyYWRlIGluIHRoZWlyIEZsYXNoUG9pbnQgTFQgZm9yIHRoZSBuZXcgQlQtOTQ4IE11bHRpTWFzdGVyIFBDSSBVbHRyYQorU0NTSSBIb3N0IEFkYXB0ZXIuICBUaGUgQlQtOTQ4IGlzIHRoZSBVbHRyYSBTQ1NJIHN1Y2Nlc3NvciB0byB0aGUgQlQtOTQ2QworYW5kIGhhcyBhbGwgdGhlIGJlc3QgZmVhdHVyZXMgb2YgYm90aCB0aGUgQlQtOTQ2QyBhbmQgRmxhc2hQb2ludCBMVCwKK2luY2x1ZGluZyBzbWFydCB0ZXJtaW5hdGlvbiBhbmQgYSBmbGFzaCBQUk9NIGZvciBlYXN5IGZpcm13YXJlIHVwZGF0ZXMsIGFuZAoraXMgb2YgY291cnNlIGNvbXBhdGlibGUgd2l0aCB0aGUgcHJlc2VudCBMaW51eCBkcml2ZXIuICBUaGUgcHJpY2UgZm9yIHRoaXMKK3VwZ3JhZGUgaGFzIGJlZW4gc2V0IGF0IFVTICQ0NSBwbHVzIHNoaXBwaW5nIGFuZCBoYW5kbGluZywgYW5kIHRoZSB1cGdyYWRlCitwcm9ncmFtIHdpbGwgYmUgYWRtaW5pc3RlcmVkIHRocm91Z2ggQnVzTG9naWMgVGVjaG5pY2FsIFN1cHBvcnQsIHdoaWNoIGNhbgorYmUgcmVhY2hlZCBieSBlbGVjdHJvbmljIG1haWwgYXQgdGVjaHN1cEBidXNsb2dpYy5jb20sIGJ5IFZvaWNlIGF0ICsxIDQwOAorNjU0LTA3NjAsIG9yIGJ5IEZBWCBhdCArMSA0MDggNDkyLTE1NDIuCisKK0FzIG9mIDE0IEp1bmUgMTk5NiwgdGhlIG9yaWdpbmFsIEJ1c0xvZ2ljIEZsYXNoUG9pbnQgTFQgdG8gQlQtOTQ4IHVwZ3JhZGUKK3Byb2dyYW0gaGFzIG5vdyBiZWVuIGV4dGVuZGVkIHRvIGVuY29tcGFzcyB0aGUgRmxhc2hQb2ludCBMVyBXaWRlIFVsdHJhCitTQ1NJIEhvc3QgQWRhcHRlci4gIEFueSBMaW51eCB1c2VyIHdvcmxkd2lkZSBtYXkgdHJhZGUgaW4gdGhlaXIgRmxhc2hQb2ludAorTFcgKEJULTk1MCkgZm9yIGEgQlQtOTU4IE11bHRpTWFzdGVyIFBDSSBVbHRyYSBTQ1NJIEhvc3QgQWRhcHRlci4gIFRoZQorcHJpY2UgZm9yIHRoaXMgdXBncmFkZSBoYXMgYmVlbiBzZXQgYXQgVVMgJDY1IHBsdXMgc2hpcHBpbmcgYW5kIGhhbmRsaW5nLgorCitJIHdhcyBhIGJldGEgdGVzdCBzaXRlIGZvciB0aGUgQlQtOTQ4Lzk1OCwgYW5kIHZlcnNpb25zIDEuMi4xIGFuZCAxLjMuMSBvZgorbXkgQnVzTG9naWMgZHJpdmVyIGFscmVhZHkgaW5jbHVkZWQgbGF0ZW50IHN1cHBvcnQgZm9yIHRoZSBCVC05NDgvOTU4LgorQWRkaXRpb25hbCBjb3NtZXRpYyBzdXBwb3J0IGZvciB0aGUgVWx0cmEgU0NTSSBNdWx0aU1hc3RlciBjYXJkcyB3YXMgYWRkZWQKK3N1YnNlcXVlbnQgcmVsZWFzZXMuICBBcyBhIHJlc3VsdCBvZiB0aGlzIGNvb3BlcmF0aXZlIHRlc3RpbmcgcHJvY2VzcywKK3NldmVyYWwgZmlybXdhcmUgYnVncyB3ZXJlIGZvdW5kIGFuZCBjb3JyZWN0ZWQuICBNeSBoZWF2aWx5IGxvYWRlZCBMaW51eAordGVzdCBzeXN0ZW0gcHJvdmlkZWQgYW4gaWRlYWwgZW52aXJvbm1lbnQgZm9yIHRlc3RpbmcgZXJyb3IgcmVjb3ZlcnkKK3Byb2Nlc3NlcyB0aGF0IGFyZSBtdWNoIG1vcmUgcmFyZWx5IGV4ZXJjaXNlZCBpbiBwcm9kdWN0aW9uIHN5c3RlbXMsIGJ1dAorYXJlIGNydWNpYWwgdG8gb3ZlcmFsbCBzeXN0ZW0gc3RhYmlsaXR5LiAgSXQgd2FzIGVzcGVjaWFsbHkgY29udmVuaWVudAorYmVpbmcgYWJsZSB0byB3b3JrIGRpcmVjdGx5IHdpdGggdGhlaXIgZmlybXdhcmUgZW5naW5lZXIgaW4gZGVtb25zdHJhdGluZwordGhlIHByb2JsZW1zIHVuZGVyIGNvbnRyb2wgb2YgdGhlIGZpcm13YXJlIGRlYnVnZ2luZyBlbnZpcm9ubWVudDsgdGhpbmdzCitzdXJlIGhhdmUgY29tZSBhIGxvbmcgd2F5IHNpbmNlIHRoZSBsYXN0IHRpbWUgSSB3b3JrZWQgb24gZmlybXdhcmUgZm9yIGFuCitlbWJlZGRlZCBzeXN0ZW0uICBJIGFtIHByZXNlbnRseSB3b3JraW5nIG9uIHNvbWUgcGVyZm9ybWFuY2UgdGVzdGluZyBhbmQKK2V4cGVjdCB0byBoYXZlIHNvbWUgZGF0YSB0byByZXBvcnQgaW4gdGhlIG5vdCB0b28gZGlzdGFudCBmdXR1cmUuCisKK0J1c0xvZ2ljIGFza2VkIG1lIHRvIHNlbmQgdGhpcyBhbm5vdW5jZW1lbnQgc2luY2UgYSBsYXJnZSBwZXJjZW50YWdlIG9mIHRoZQorcXVlc3Rpb25zIHJlZ2FyZGluZyBzdXBwb3J0IGZvciB0aGUgRmxhc2hQb2ludCBoYXZlIGVpdGhlciBiZWVuIHNlbnQgdG8gbWUKK2RpcmVjdGx5IHZpYSBlbWFpbCwgb3IgaGF2ZSBhcHBlYXJlZCBpbiB0aGUgTGludXggbmV3c2dyb3VwcyBpbiB3aGljaCBJCitwYXJ0aWNpcGF0ZS4gIFRvIHN1bW1hcml6ZSwgQnVzTG9naWMgaXMgb2ZmZXJpbmcgTGludXggdXNlcnMgYW4gdXBncmFkZQorZnJvbSB0aGUgdW5zdXBwb3J0ZWQgRmxhc2hQb2ludCBMVCAoQlQtOTMwKSB0byB0aGUgc3VwcG9ydGVkIEJULTk0OCBmb3IgVVMKKyQ0NSBwbHVzIHNoaXBwaW5nIGFuZCBoYW5kbGluZywgb3IgZnJvbSB0aGUgdW5zdXBwb3J0ZWQgRmxhc2hQb2ludCBMVworKEJULTk1MCkgdG8gdGhlIHN1cHBvcnRlZCBCVC05NTggZm9yICQ2NSBwbHVzIHNoaXBwaW5nIGFuZCBoYW5kbGluZy4KK0NvbnRhY3QgQnVzTG9naWMgVGVjaG5pY2FsIFN1cHBvcnQgYXQgdGVjaHN1cEBidXNsb2dpYy5jb20gb3IgKzEgNDA4Cis2NTQtMDc2MCB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGVpciBvZmZlci4KKworCQlMZW9uYXJkIE4uIFp1YmtvZmYKKwkJbG56QGRhbmRlbGlvbi5jb20KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9MSUNFTlNFLkZsYXNoUG9pbnQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvTElDRU5TRS5GbGFzaFBvaW50Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmZDBmZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvTElDRU5TRS5GbGFzaFBvaW50CkBAIC0wLDAgKzEsNjAgQEAKKyAgICAgICAgICAgICAgICAgICAgIEZsYXNoUG9pbnQgRHJpdmVyIERldmVsb3BlcidzIEtpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDEuMAorCisgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IDE5OTUtMTk5NiBieSBNeWxleCBDb3Jwb3JhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbCBSaWdodHMgUmVzZXJ2ZWQKKworVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBtYXkgcmVkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKK3RoZSB0ZXJtcyBvZiBlaXRoZXI6CisKKyAgICBhKSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisgICAgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbiwKKworICAgIG9yCisKKyAgICBiKSB0aGUgIkJTRC1zdHlsZSBMaWNlbnNlIiBpbmNsdWRlZCBiZWxvdy4KKworVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorV0lUSE9VVCBBTlkgV0FSUkFOVFksIHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkKK29yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIGVpdGhlciB0aGUgR05VIEdlbmVyYWwgUHVibGljCitMaWNlbnNlIG9yIHRoZSBCU0Qtc3R5bGUgTGljZW5zZSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLgorCitZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZword2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKzY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorCitUaGUgQlNELXN0eWxlIExpY2Vuc2UgaXMgYXMgZm9sbG93czoKKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCittZXQ6CisKKzEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGlzIExJQ0VOU0UuRmxhc2hQb2ludAorICAgZmlsZSwgd2l0aG91dCBtb2RpZmljYXRpb24sIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zLCBhbmQgdGhlIGZvbGxvd2luZworICAgZGlzY2xhaW1lci4gIFRoZSBmb2xsb3dpbmcgY29weXJpZ2h0IG5vdGljZSBtdXN0IGFwcGVhciBpbW1lZGlhdGVseSBhdAorICAgdGhlIGJlZ2lubmluZyBvZiBhbGwgc291cmNlIGZpbGVzOgorCisgICAgICAgIENvcHlyaWdodCAxOTk1LTE5OTYgYnkgTXlsZXggQ29ycG9yYXRpb24uICBBbGwgUmlnaHRzIFJlc2VydmVkCisKKyAgICAgICAgVGhpcyBmaWxlIGlzIGF2YWlsYWJsZSB1bmRlciBib3RoIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgICAgICBhbmQgYSBCU0Qtc3R5bGUgY29weXJpZ2h0OyBzZWUgTElDRU5TRS5GbGFzaFBvaW50IGZvciBkZXRhaWxzLgorCisyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworMy4gVGhlIG5hbWUgb2YgTXlsZXggQ29ycG9yYXRpb24gbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZQorICAgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuCisgICBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIE1ZTEVYIENPUlAuIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKK0lNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKK09GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOCitOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCitJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyhJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKK0NBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvTElDRU5TRS5xbGEyeHh4IGIvRG9jdW1lbnRhdGlvbi9zY3NpL0xJQ0VOU0UucWxhMnh4eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmYwYjQzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL0xJQ0VOU0UucWxhMnh4eApAQCAtMCwwICsxLDI5MCBAQAorQ29weXJpZ2h0IChjKSAyMDAzLTIwMTQgUUxvZ2ljIENvcnBvcmF0aW9uCitRTG9naWMgTGludXggRkMtRkNvRSBEcml2ZXIKKworVGhpcyBwcm9ncmFtIGluY2x1ZGVzIGEgZGV2aWNlIGRyaXZlciBmb3IgTGludXggMy54LgorWW91IG1heSBtb2RpZnkgYW5kIHJlZGlzdHJpYnV0ZSB0aGUgZGV2aWNlIGRyaXZlciBjb2RlIHVuZGVyIHRoZQorR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKGEgY29weSBvZiB3aGljaCBpcyBhdHRhY2hlZCBoZXJldG8gYXMKK0V4aGliaXQgQSkgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gKHZlcnNpb24gMikuCisKKworCitFWEhJQklUIEEKKworCQkgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKKwkJICAgICAgIFZlcnNpb24gMiwgSnVuZSAxOTkxCisKKyBDb3B5cmlnaHQgKEMpIDE5ODksIDE5OTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCisgb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCisKKwkJCSAgICBQcmVhbWJsZQorCisgIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhcmUgZGVzaWduZWQgdG8gdGFrZSBhd2F5IHlvdXIKK2ZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBpdC4gIEJ5IGNvbnRyYXN0LCB0aGUgR05VIEdlbmVyYWwgUHVibGljCitMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBmcmVlCitzb2Z0d2FyZS0tdG8gbWFrZSBzdXJlIHRoZSBzb2Z0d2FyZSBpcyBmcmVlIGZvciBhbGwgaXRzIHVzZXJzLiAgVGhpcworR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcHBsaWVzIHRvIG1vc3Qgb2YgdGhlIEZyZWUgU29mdHdhcmUKK0ZvdW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8KK3VzaW5nIGl0LiAgKFNvbWUgb3RoZXIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIHNvZnR3YXJlIGlzIGNvdmVyZWQgYnkKK3RoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW5zdGVhZC4pICBZb3UgY2FuIGFwcGx5IGl0IHRvCit5b3VyIHByb2dyYW1zLCB0b28uCisKKyAgV2hlbiB3ZSBzcGVhayBvZiBmcmVlIHNvZnR3YXJlLCB3ZSBhcmUgcmVmZXJyaW5nIHRvIGZyZWVkb20sIG5vdAorcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQoraGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmlidXRlIGNvcGllcyBvZiBmcmVlIHNvZnR3YXJlIChhbmQgY2hhcmdlIGZvcgordGhpcyBzZXJ2aWNlIGlmIHlvdSB3aXNoKSwgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0IGl0CitpZiB5b3Ugd2FudCBpdCwgdGhhdCB5b3UgY2FuIGNoYW5nZSB0aGUgc29mdHdhcmUgb3IgdXNlIHBpZWNlcyBvZiBpdAoraW4gbmV3IGZyZWUgcHJvZ3JhbXM7IGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgorCisgIFRvIHByb3RlY3QgeW91ciByaWdodHMsIHdlIG5lZWQgdG8gbWFrZSByZXN0cmljdGlvbnMgdGhhdCBmb3JiaWQKK2FueW9uZSB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4KK1RoZXNlIHJlc3RyaWN0aW9ucyB0cmFuc2xhdGUgdG8gY2VydGFpbiByZXNwb25zaWJpbGl0aWVzIGZvciB5b3UgaWYgeW91CitkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgc29mdHdhcmUsIG9yIGlmIHlvdSBtb2RpZnkgaXQuCisKKyAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiBzdWNoIGEgcHJvZ3JhbSwgd2hldGhlcgorZ3JhdGlzIG9yIGZvciBhIGZlZSwgeW91IG11c3QgZ2l2ZSB0aGUgcmVjaXBpZW50cyBhbGwgdGhlIHJpZ2h0cyB0aGF0Cit5b3UgaGF2ZS4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZSBvciBjYW4gZ2V0IHRoZQorc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkga25vdyB0aGVpcgorcmlnaHRzLgorCisgIFdlIHByb3RlY3QgeW91ciByaWdodHMgd2l0aCB0d28gc3RlcHM6ICgxKSBjb3B5cmlnaHQgdGhlIHNvZnR3YXJlLCBhbmQKKygyKSBvZmZlciB5b3UgdGhpcyBsaWNlbnNlIHdoaWNoIGdpdmVzIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksCitkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhlIHNvZnR3YXJlLgorCisgIEFsc28sIGZvciBlYWNoIGF1dGhvcidzIHByb3RlY3Rpb24gYW5kIG91cnMsIHdlIHdhbnQgdG8gbWFrZSBjZXJ0YWluCit0aGF0IGV2ZXJ5b25lIHVuZGVyc3RhbmRzIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZQorc29mdHdhcmUuICBJZiB0aGUgc29mdHdhcmUgaXMgbW9kaWZpZWQgYnkgc29tZW9uZSBlbHNlIGFuZCBwYXNzZWQgb24sIHdlCit3YW50IGl0cyByZWNpcGllbnRzIHRvIGtub3cgdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsLCBzbwordGhhdCBhbnkgcHJvYmxlbXMgaW50cm9kdWNlZCBieSBvdGhlcnMgd2lsbCBub3QgcmVmbGVjdCBvbiB0aGUgb3JpZ2luYWwKK2F1dGhvcnMnIHJlcHV0YXRpb25zLgorCisgIEZpbmFsbHksIGFueSBmcmVlIHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlCitwYXRlbnRzLiAgV2Ugd2lzaCB0byBhdm9pZCB0aGUgZGFuZ2VyIHRoYXQgcmVkaXN0cmlidXRvcnMgb2YgYSBmcmVlCitwcm9ncmFtIHdpbGwgaW5kaXZpZHVhbGx5IG9idGFpbiBwYXRlbnQgbGljZW5zZXMsIGluIGVmZmVjdCBtYWtpbmcgdGhlCitwcm9ncmFtIHByb3ByaWV0YXJ5LiAgVG8gcHJldmVudCB0aGlzLCB3ZSBoYXZlIG1hZGUgaXQgY2xlYXIgdGhhdCBhbnkKK3BhdGVudCBtdXN0IGJlIGxpY2Vuc2VkIGZvciBldmVyeW9uZSdzIGZyZWUgdXNlIG9yIG5vdCBsaWNlbnNlZCBhdCBhbGwuCisKKyAgVGhlIHByZWNpc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQKK21vZGlmaWNhdGlvbiBmb2xsb3cuCisKKwkJICAgIEdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCisgICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgQ09QWUlORywgRElTVFJJQlVUSU9OIEFORCBNT0RJRklDQVRJT04KKworICAwLiBUaGlzIExpY2Vuc2UgYXBwbGllcyB0byBhbnkgcHJvZ3JhbSBvciBvdGhlciB3b3JrIHdoaWNoIGNvbnRhaW5zCithIG5vdGljZSBwbGFjZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXIgc2F5aW5nIGl0IG1heSBiZSBkaXN0cmlidXRlZAordW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoZSAiUHJvZ3JhbSIsIGJlbG93LAorcmVmZXJzIHRvIGFueSBzdWNoIHByb2dyYW0gb3Igd29yaywgYW5kIGEgIndvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0iCittZWFucyBlaXRoZXIgdGhlIFByb2dyYW0gb3IgYW55IGRlcml2YXRpdmUgd29yayB1bmRlciBjb3B5cmlnaHQgbGF3OgordGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBQcm9ncmFtIG9yIGEgcG9ydGlvbiBvZiBpdCwKK2VpdGhlciB2ZXJiYXRpbSBvciB3aXRoIG1vZGlmaWNhdGlvbnMgYW5kL29yIHRyYW5zbGF0ZWQgaW50byBhbm90aGVyCitsYW5ndWFnZS4gIChIZXJlaW5hZnRlciwgdHJhbnNsYXRpb24gaXMgaW5jbHVkZWQgd2l0aG91dCBsaW1pdGF0aW9uIGluCit0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4KKworQWN0aXZpdGllcyBvdGhlciB0aGFuIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQgbW9kaWZpY2F0aW9uIGFyZSBub3QKK2NvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKK3J1bm5pbmcgdGhlIFByb2dyYW0gaXMgbm90IHJlc3RyaWN0ZWQsIGFuZCB0aGUgb3V0cHV0IGZyb20gdGhlIFByb2dyYW0KK2lzIGNvdmVyZWQgb25seSBpZiBpdHMgY29udGVudHMgY29uc3RpdHV0ZSBhIHdvcmsgYmFzZWQgb24gdGhlCitQcm9ncmFtIChpbmRlcGVuZGVudCBvZiBoYXZpbmcgYmVlbiBtYWRlIGJ5IHJ1bm5pbmcgdGhlIFByb2dyYW0pLgorV2hldGhlciB0aGF0IGlzIHRydWUgZGVwZW5kcyBvbiB3aGF0IHRoZSBQcm9ncmFtIGRvZXMuCisKKyAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzCitzb3VyY2UgY29kZSBhcyB5b3UgcmVjZWl2ZSBpdCwgaW4gYW55IG1lZGl1bSwgcHJvdmlkZWQgdGhhdCB5b3UKK2NvbnNwaWN1b3VzbHkgYW5kIGFwcHJvcHJpYXRlbHkgcHVibGlzaCBvbiBlYWNoIGNvcHkgYW4gYXBwcm9wcmlhdGUKK2NvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0IGFsbCB0aGUKK25vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UgYW5kIHRvIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsKK2FuZCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBQcm9ncmFtIGEgY29weSBvZiB0aGlzIExpY2Vuc2UKK2Fsb25nIHdpdGggdGhlIFByb2dyYW0uCisKK1lvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksIGFuZAoreW91IG1heSBhdCB5b3VyIG9wdGlvbiBvZmZlciB3YXJyYW50eSBwcm90ZWN0aW9uIGluIGV4Y2hhbmdlIGZvciBhIGZlZS4KKworICAyLiBZb3UgbWF5IG1vZGlmeSB5b3VyIGNvcHkgb3IgY29waWVzIG9mIHRoZSBQcm9ncmFtIG9yIGFueSBwb3J0aW9uCitvZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgYW5kIGNvcHkgYW5kCitkaXN0cmlidXRlIHN1Y2ggbW9kaWZpY2F0aW9ucyBvciB3b3JrIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9uIDEKK2Fib3ZlLCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CisKKyAgICBhKSBZb3UgbXVzdCBjYXVzZSB0aGUgbW9kaWZpZWQgZmlsZXMgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKKyAgICBzdGF0aW5nIHRoYXQgeW91IGNoYW5nZWQgdGhlIGZpbGVzIGFuZCB0aGUgZGF0ZSBvZiBhbnkgY2hhbmdlLgorCisgICAgYikgWW91IG11c3QgY2F1c2UgYW55IHdvcmsgdGhhdCB5b3UgZGlzdHJpYnV0ZSBvciBwdWJsaXNoLCB0aGF0IGluCisgICAgd2hvbGUgb3IgaW4gcGFydCBjb250YWlucyBvciBpcyBkZXJpdmVkIGZyb20gdGhlIFByb2dyYW0gb3IgYW55CisgICAgcGFydCB0aGVyZW9mLCB0byBiZSBsaWNlbnNlZCBhcyBhIHdob2xlIGF0IG5vIGNoYXJnZSB0byBhbGwgdGhpcmQKKyAgICBwYXJ0aWVzIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UuCisKKyAgICBjKSBJZiB0aGUgbW9kaWZpZWQgcHJvZ3JhbSBub3JtYWxseSByZWFkcyBjb21tYW5kcyBpbnRlcmFjdGl2ZWx5CisgICAgd2hlbiBydW4sIHlvdSBtdXN0IGNhdXNlIGl0LCB3aGVuIHN0YXJ0ZWQgcnVubmluZyBmb3Igc3VjaAorICAgIGludGVyYWN0aXZlIHVzZSBpbiB0aGUgbW9zdCBvcmRpbmFyeSB3YXksIHRvIHByaW50IG9yIGRpc3BsYXkgYW4KKyAgICBhbm5vdW5jZW1lbnQgaW5jbHVkaW5nIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGEKKyAgICBub3RpY2UgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSAob3IgZWxzZSwgc2F5aW5nIHRoYXQgeW91IHByb3ZpZGUKKyAgICBhIHdhcnJhbnR5KSBhbmQgdGhhdCB1c2VycyBtYXkgcmVkaXN0cmlidXRlIHRoZSBwcm9ncmFtIHVuZGVyCisgICAgdGhlc2UgY29uZGl0aW9ucywgYW5kIHRlbGxpbmcgdGhlIHVzZXIgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMKKyAgICBMaWNlbnNlLiAgKEV4Y2VwdGlvbjogaWYgdGhlIFByb2dyYW0gaXRzZWxmIGlzIGludGVyYWN0aXZlIGJ1dAorICAgIGRvZXMgbm90IG5vcm1hbGx5IHByaW50IHN1Y2ggYW4gYW5ub3VuY2VtZW50LCB5b3VyIHdvcmsgYmFzZWQgb24KKyAgICB0aGUgUHJvZ3JhbSBpcyBub3QgcmVxdWlyZWQgdG8gcHJpbnQgYW4gYW5ub3VuY2VtZW50LikKKworVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgoraWRlbnRpZmlhYmxlIHNlY3Rpb25zIG9mIHRoYXQgd29yayBhcmUgbm90IGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSwKK2FuZCBjYW4gYmUgcmVhc29uYWJseSBjb25zaWRlcmVkIGluZGVwZW5kZW50IGFuZCBzZXBhcmF0ZSB3b3JrcyBpbgordGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQorc2VjdGlvbnMgd2hlbiB5b3UgZGlzdHJpYnV0ZSB0aGVtIGFzIHNlcGFyYXRlIHdvcmtzLiAgQnV0IHdoZW4geW91CitkaXN0cmlidXRlIHRoZSBzYW1lIHNlY3Rpb25zIGFzIHBhcnQgb2YgYSB3aG9sZSB3aGljaCBpcyBhIHdvcmsgYmFzZWQKK29uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgordGhpcyBMaWNlbnNlLCB3aG9zZSBwZXJtaXNzaW9ucyBmb3Igb3RoZXIgbGljZW5zZWVzIGV4dGVuZCB0byB0aGUKK2VudGlyZSB3aG9sZSwgYW5kIHRodXMgdG8gZWFjaCBhbmQgZXZlcnkgcGFydCByZWdhcmRsZXNzIG9mIHdobyB3cm90ZSBpdC4KKworVGh1cywgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhpcyBzZWN0aW9uIHRvIGNsYWltIHJpZ2h0cyBvciBjb250ZXN0Cit5b3VyIHJpZ2h0cyB0byB3b3JrIHdyaXR0ZW4gZW50aXJlbHkgYnkgeW91OyByYXRoZXIsIHRoZSBpbnRlbnQgaXMgdG8KK2V4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgorY29sbGVjdGl2ZSB3b3JrcyBiYXNlZCBvbiB0aGUgUHJvZ3JhbS4KKworSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJvZ3JhbQord2l0aCB0aGUgUHJvZ3JhbSAob3Igd2l0aCBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0pIG9uIGEgdm9sdW1lIG9mCithIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSBkb2VzIG5vdCBicmluZyB0aGUgb3RoZXIgd29yayB1bmRlcgordGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KKworICAzLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGEgd29yayBiYXNlZCBvbiBpdCwKK3VuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZgorU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCisgICAgYSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZQorICAgIHNvdXJjZSBjb2RlLCB3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucworICAgIDEgYW5kIDIgYWJvdmUgb24gYSBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLAorCisgICAgYikgQWNjb21wYW55IGl0IHdpdGggYSB3cml0dGVuIG9mZmVyLCB2YWxpZCBmb3IgYXQgbGVhc3QgdGhyZWUKKyAgICB5ZWFycywgdG8gZ2l2ZSBhbnkgdGhpcmQgcGFydHksIGZvciBhIGNoYXJnZSBubyBtb3JlIHRoYW4geW91cgorICAgIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5nIHNvdXJjZSBkaXN0cmlidXRpb24sIGEgY29tcGxldGUKKyAgICBtYWNoaW5lLXJlYWRhYmxlIGNvcHkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUsIHRvIGJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgb24gYSBtZWRpdW0KKyAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCisKKyAgICBjKSBBY2NvbXBhbnkgaXQgd2l0aCB0aGUgaW5mb3JtYXRpb24geW91IHJlY2VpdmVkIGFzIHRvIHRoZSBvZmZlcgorICAgIHRvIGRpc3RyaWJ1dGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZS4gIChUaGlzIGFsdGVybmF0aXZlIGlzCisgICAgYWxsb3dlZCBvbmx5IGZvciBub25jb21tZXJjaWFsIGRpc3RyaWJ1dGlvbiBhbmQgb25seSBpZiB5b3UKKyAgICByZWNlaXZlZCB0aGUgcHJvZ3JhbSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0gd2l0aCBzdWNoCisgICAgYW4gb2ZmZXIsIGluIGFjY29yZCB3aXRoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCisKK1RoZSBzb3VyY2UgY29kZSBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29yayBmb3IKK21ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGFuIGV4ZWN1dGFibGUgd29yaywgY29tcGxldGUgc291cmNlCitjb2RlIG1lYW5zIGFsbCB0aGUgc291cmNlIGNvZGUgZm9yIGFsbCBtb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueQorYXNzb2NpYXRlZCBpbnRlcmZhY2UgZGVmaW5pdGlvbiBmaWxlcywgcGx1cyB0aGUgc2NyaXB0cyB1c2VkIHRvCitjb250cm9sIGNvbXBpbGF0aW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGV4ZWN1dGFibGUuICBIb3dldmVyLCBhcyBhCitzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHNvdXJjZSBjb2RlIGRpc3RyaWJ1dGVkIG5lZWQgbm90IGluY2x1ZGUKK2FueXRoaW5nIHRoYXQgaXMgbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5Citmb3JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChjb21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZQorb3BlcmF0aW5nIHN5c3RlbSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSBydW5zLCB1bmxlc3MgdGhhdCBjb21wb25lbnQKK2l0c2VsZiBhY2NvbXBhbmllcyB0aGUgZXhlY3V0YWJsZS4KKworSWYgZGlzdHJpYnV0aW9uIG9mIGV4ZWN1dGFibGUgb3Igb2JqZWN0IGNvZGUgaXMgbWFkZSBieSBvZmZlcmluZworYWNjZXNzIHRvIGNvcHkgZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudAorYWNjZXNzIHRvIGNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFzCitkaXN0cmlidXRpb24gb2YgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKK2NvbXBlbGxlZCB0byBjb3B5IHRoZSBzb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGNvZGUuCisKKyAgNC4gWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtCitleGNlcHQgYXMgZXhwcmVzc2x5IHByb3ZpZGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEFueSBhdHRlbXB0CitvdGhlcndpc2UgdG8gY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gaXMKK3ZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4KK0hvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLCBvciByaWdodHMsIGZyb20geW91IHVuZGVyCit0aGlzIExpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcyB0ZXJtaW5hdGVkIHNvIGxvbmcgYXMgc3VjaAorcGFydGllcyByZW1haW4gaW4gZnVsbCBjb21wbGlhbmNlLgorCisgIDUuIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UsIHNpbmNlIHlvdSBoYXZlIG5vdAorc2lnbmVkIGl0LiAgSG93ZXZlciwgbm90aGluZyBlbHNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBtb2RpZnkgb3IKK2Rpc3RyaWJ1dGUgdGhlIFByb2dyYW0gb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQorcHJvaGliaXRlZCBieSBsYXcgaWYgeW91IGRvIG5vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3JlLCBieQorbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlCitQcm9ncmFtKSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZAorYWxsIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW5nIG9yIG1vZGlmeWluZwordGhlIFByb2dyYW0gb3Igd29ya3MgYmFzZWQgb24gaXQuCisKKyAgNi4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQorUHJvZ3JhbSksIHRoZSByZWNpcGllbnQgYXV0b21hdGljYWxseSByZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUKK29yaWdpbmFsIGxpY2Vuc29yIHRvIGNvcHksIGRpc3RyaWJ1dGUgb3IgbW9kaWZ5IHRoZSBQcm9ncmFtIHN1YmplY3QgdG8KK3RoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyCityZXN0cmljdGlvbnMgb24gdGhlIHJlY2lwaWVudHMnIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJlaW4uCitZb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB0bwordGhpcyBMaWNlbnNlLgorCisgIDcuIElmLCBhcyBhIGNvbnNlcXVlbmNlIG9mIGEgY291cnQganVkZ21lbnQgb3IgYWxsZWdhdGlvbiBvZiBwYXRlbnQKK2luZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCitjb25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3VydCBvcmRlciwgYWdyZWVtZW50IG9yCitvdGhlcndpc2UpIHRoYXQgY29udHJhZGljdCB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8gbm90CitleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdAorZGlzdHJpYnV0ZSBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcworTGljZW5zZSBhbmQgYW55IG90aGVyIHBlcnRpbmVudCBvYmxpZ2F0aW9ucywgdGhlbiBhcyBhIGNvbnNlcXVlbmNlIHlvdQorbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudAorbGljZW5zZSB3b3VsZCBub3QgcGVybWl0IHJveWFsdHktZnJlZSByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBieQorYWxsIHRob3NlIHdobyByZWNlaXZlIGNvcGllcyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggeW91LCB0aGVuCit0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCityZWZyYWluIGVudGlyZWx5IGZyb20gZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtLgorCitJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIKK2FueSBwYXJ0aWN1bGFyIGNpcmN1bXN0YW5jZSwgdGhlIGJhbGFuY2Ugb2YgdGhlIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8KK2FwcGx5IGFuZCB0aGUgc2VjdGlvbiBhcyBhIHdob2xlIGlzIGludGVuZGVkIHRvIGFwcGx5IGluIG90aGVyCitjaXJjdW1zdGFuY2VzLgorCitJdCBpcyBub3QgdGhlIHB1cnBvc2Ugb2YgdGhpcyBzZWN0aW9uIHRvIGluZHVjZSB5b3UgdG8gaW5mcmluZ2UgYW55CitwYXRlbnRzIG9yIG90aGVyIHByb3BlcnR5IHJpZ2h0IGNsYWltcyBvciB0byBjb250ZXN0IHZhbGlkaXR5IG9mIGFueQorc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQoraW50ZWdyaXR5IG9mIHRoZSBmcmVlIHNvZnR3YXJlIGRpc3RyaWJ1dGlvbiBzeXN0ZW0sIHdoaWNoIGlzCitpbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKK2dlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHdpZGUgcmFuZ2Ugb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQKK3Rocm91Z2ggdGhhdCBzeXN0ZW0gaW4gcmVsaWFuY2Ugb24gY29uc2lzdGVudCBhcHBsaWNhdGlvbiBvZiB0aGF0CitzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCit0byBkaXN0cmlidXRlIHNvZnR3YXJlIHRocm91Z2ggYW55IG90aGVyIHN5c3RlbSBhbmQgYSBsaWNlbnNlZSBjYW5ub3QKK2ltcG9zZSB0aGF0IGNob2ljZS4KKworVGhpcyBzZWN0aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBjbGVhciB3aGF0IGlzIGJlbGlldmVkIHRvCitiZSBhIGNvbnNlcXVlbmNlIG9mIHRoZSByZXN0IG9mIHRoaXMgTGljZW5zZS4KKworICA4LiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIFByb2dyYW0gaXMgcmVzdHJpY3RlZCBpbgorY2VydGFpbiBjb3VudHJpZXMgZWl0aGVyIGJ5IHBhdGVudHMgb3IgYnkgY29weXJpZ2h0ZWQgaW50ZXJmYWNlcywgdGhlCitvcmlnaW5hbCBjb3B5cmlnaHQgaG9sZGVyIHdobyBwbGFjZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBMaWNlbnNlCittYXkgYWRkIGFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRpbmcKK3Rob3NlIGNvdW50cmllcywgc28gdGhhdCBkaXN0cmlidXRpb24gaXMgcGVybWl0dGVkIG9ubHkgaW4gb3IgYW1vbmcKK2NvdW50cmllcyBub3QgdGh1cyBleGNsdWRlZC4gIEluIHN1Y2ggY2FzZSwgdGhpcyBMaWNlbnNlIGluY29ycG9yYXRlcwordGhlIGxpbWl0YXRpb24gYXMgaWYgd3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCisKKyAgOS4gVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMKK29mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMgd2lsbAorYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvCithZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KKworRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUgUHJvZ3JhbQorc3BlY2lmaWVzIGEgdmVyc2lvbiBudW1iZXIgb2YgdGhpcyBMaWNlbnNlIHdoaWNoIGFwcGxpZXMgdG8gaXQgYW5kICJhbnkKK2xhdGVyIHZlcnNpb24iLCB5b3UgaGF2ZSB0aGUgb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMKK2VpdGhlciBvZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5IHRoZSBGcmVlCitTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgSWYgdGhlIFByb2dyYW0gZG9lcyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mCit0aGlzIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCitGb3VuZGF0aW9uLgorCisgIDEwLiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgUHJvZ3JhbSBpbnRvIG90aGVyIGZyZWUKK3Byb2dyYW1zIHdob3NlIGRpc3RyaWJ1dGlvbiBjb25kaXRpb25zIGFyZSBkaWZmZXJlbnQsIHdyaXRlIHRvIHRoZSBhdXRob3IKK3RvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcyBjb3B5cmlnaHRlZCBieSB0aGUgRnJlZQorU29mdHdhcmUgRm91bmRhdGlvbiwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2Ugc29tZXRpbWVzCittYWtlIGV4Y2VwdGlvbnMgZm9yIHRoaXMuICBPdXIgZGVjaXNpb24gd2lsbCBiZSBndWlkZWQgYnkgdGhlIHR3byBnb2Fscworb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMgb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZAorb2YgcHJvbW90aW5nIHRoZSBzaGFyaW5nIGFuZCByZXVzZSBvZiBzb2Z0d2FyZSBnZW5lcmFsbHkuCisKKwkJCSAgICBOTyBXQVJSQU5UWQorCisgIDExLiBCRUNBVVNFIFRIRSBQUk9HUkFNIElTIExJQ0VOU0VEIEZSRUUgT0YgQ0hBUkdFLCBUSEVSRSBJUyBOTyBXQVJSQU5UWQorRk9SIFRIRSBQUk9HUkFNLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4gIEVYQ0VQVCBXSEVOCitPVEhFUldJU0UgU1RBVEVEIElOIFdSSVRJTkcgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORC9PUiBPVEhFUiBQQVJUSUVTCitQUk9WSURFIFRIRSBQUk9HUkFNICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRAorT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKK01FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBUSEUgRU5USVJFIFJJU0sgQVMKK1RPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUgUFJPR1JBTSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUKK1BST0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FIFRIRSBDT1NUIE9GIEFMTCBORUNFU1NBUlkgU0VSVklDSU5HLAorUkVQQUlSIE9SIENPUlJFQ1RJT04uCisKKyAgMTIuIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORworV0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9USEVSIFBBUlRZIFdITyBNQVkgTU9ESUZZIEFORC9PUgorUkVESVNUUklCVVRFIFRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywKK0lOQ0xVRElORyBBTlkgR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORworT1VUIE9GIFRIRSBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgUFJPR1JBTSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRAorVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZCitZT1UgT1IgVEhJUkQgUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUgorUFJPR1JBTVMpLCBFVkVOIElGIFNVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFCitQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvTElDRU5TRS5xbGE0eHh4IGIvRG9jdW1lbnRhdGlvbi9zY3NpL0xJQ0VOU0UucWxhNHh4eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2MyN2FkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL0xJQ0VOU0UucWxhNHh4eApAQCAtMCwwICsxLDI4OSBAQAorQ29weXJpZ2h0IChjKSAyMDAzLTIwMTMgUUxvZ2ljIENvcnBvcmF0aW9uCitRTG9naWMgTGludXggaVNDU0kgRHJpdmVyCisKK1RoaXMgcHJvZ3JhbSBpbmNsdWRlcyBhIGRldmljZSBkcml2ZXIgZm9yIExpbnV4IDMueC4KK1lvdSBtYXkgbW9kaWZ5IGFuZCByZWRpc3RyaWJ1dGUgdGhlIGRldmljZSBkcml2ZXIgY29kZSB1bmRlciB0aGUKK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChhIGNvcHkgb2Ygd2hpY2ggaXMgYXR0YWNoZWQgaGVyZXRvIGFzCitFeGhpYml0IEEpIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uICh2ZXJzaW9uIDIpLgorCisKK0VYSElCSVQgQQorCisJCSAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQorCQkgICAgICAgVmVyc2lvbiAyLCBKdW5lIDE5OTEKKworIENvcHlyaWdodCAoQykgMTk4OSwgMTk5MSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMKKyBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KKworCQkJICAgIFByZWFtYmxlCisKKyAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgorZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGl0LiAgQnkgY29udHJhc3QsIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKK0xpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGZyZWUKK3NvZnR3YXJlLS10byBtYWtlIHN1cmUgdGhlIHNvZnR3YXJlIGlzIGZyZWUgZm9yIGFsbCBpdHMgdXNlcnMuICBUaGlzCitHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFwcGxpZXMgdG8gbW9zdCBvZiB0aGUgRnJlZSBTb2Z0d2FyZQorRm91bmRhdGlvbidzIHNvZnR3YXJlIGFuZCB0byBhbnkgb3RoZXIgcHJvZ3JhbSB3aG9zZSBhdXRob3JzIGNvbW1pdCB0bwordXNpbmcgaXQuICAoU29tZSBvdGhlciBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gc29mdHdhcmUgaXMgY292ZXJlZCBieQordGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpbnN0ZWFkLikgIFlvdSBjYW4gYXBwbHkgaXQgdG8KK3lvdXIgcHJvZ3JhbXMsIHRvby4KKworICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSwgbm90CitwcmljZS4gIE91ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlcyBhcmUgZGVzaWduZWQgdG8gbWFrZSBzdXJlIHRoYXQgeW91CitoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCit0aGlzIHNlcnZpY2UgaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQKK2lmIHlvdSB3YW50IGl0LCB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBvciB1c2UgcGllY2VzIG9mIGl0CitpbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCisKKyAgVG8gcHJvdGVjdCB5b3VyIHJpZ2h0cywgd2UgbmVlZCB0byBtYWtlIHJlc3RyaWN0aW9ucyB0aGF0IGZvcmJpZAorYW55b25lIHRvIGRlbnkgeW91IHRoZXNlIHJpZ2h0cyBvciB0byBhc2sgeW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLgorVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yIHlvdSBpZiB5b3UKK2Rpc3RyaWJ1dGUgY29waWVzIG9mIHRoZSBzb2Z0d2FyZSwgb3IgaWYgeW91IG1vZGlmeSBpdC4KKworICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCitncmF0aXMgb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZlIHRoZSByZWNpcGllbnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQKK3lvdSBoYXZlLiAgWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlCitzb3VyY2UgY29kZS4gIEFuZCB5b3UgbXVzdCBzaG93IHRoZW0gdGhlc2UgdGVybXMgc28gdGhleSBrbm93IHRoZWlyCityaWdodHMuCisKKyAgV2UgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczogKDEpIGNvcHlyaWdodCB0aGUgc29mdHdhcmUsIGFuZAorKDIpIG9mZmVyIHlvdSB0aGlzIGxpY2Vuc2Ugd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29weSwKK2Rpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGUgc29mdHdhcmUuCisKKyAgQWxzbywgZm9yIGVhY2ggYXV0aG9yJ3MgcHJvdGVjdGlvbiBhbmQgb3Vycywgd2Ugd2FudCB0byBtYWtlIGNlcnRhaW4KK3RoYXQgZXZlcnlvbmUgdW5kZXJzdGFuZHMgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlCitzb2Z0d2FyZS4gIElmIHRoZSBzb2Z0d2FyZSBpcyBtb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgd2UKK3dhbnQgaXRzIHJlY2lwaWVudHMgdG8ga25vdyB0aGF0IHdoYXQgdGhleSBoYXZlIGlzIG5vdCB0aGUgb3JpZ2luYWwsIHNvCit0aGF0IGFueSBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IG90aGVycyB3aWxsIG5vdCByZWZsZWN0IG9uIHRoZSBvcmlnaW5hbAorYXV0aG9ycycgcmVwdXRhdGlvbnMuCisKKyAgRmluYWxseSwgYW55IGZyZWUgcHJvZ3JhbSBpcyB0aHJlYXRlbmVkIGNvbnN0YW50bHkgYnkgc29mdHdhcmUKK3BhdGVudHMuICBXZSB3aXNoIHRvIGF2b2lkIHRoZSBkYW5nZXIgdGhhdCByZWRpc3RyaWJ1dG9ycyBvZiBhIGZyZWUKK3Byb2dyYW0gd2lsbCBpbmRpdmlkdWFsbHkgb2J0YWluIHBhdGVudCBsaWNlbnNlcywgaW4gZWZmZWN0IG1ha2luZyB0aGUKK3Byb2dyYW0gcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHdlIGhhdmUgbWFkZSBpdCBjbGVhciB0aGF0IGFueQorcGF0ZW50IG11c3QgYmUgbGljZW5zZWQgZm9yIGV2ZXJ5b25lJ3MgZnJlZSB1c2Ugb3Igbm90IGxpY2Vuc2VkIGF0IGFsbC4KKworICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAorbW9kaWZpY2F0aW9uIGZvbGxvdy4KKworCQkgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKKyAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBDT1BZSU5HLCBESVNUUklCVVRJT04gQU5EIE1PRElGSUNBVElPTgorCisgIDAuIFRoaXMgTGljZW5zZSBhcHBsaWVzIHRvIGFueSBwcm9ncmFtIG9yIG90aGVyIHdvcmsgd2hpY2ggY29udGFpbnMKK2Egbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBzYXlpbmcgaXQgbWF5IGJlIGRpc3RyaWJ1dGVkCit1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhlICJQcm9ncmFtIiwgYmVsb3csCityZWZlcnMgdG8gYW55IHN1Y2ggcHJvZ3JhbSBvciB3b3JrLCBhbmQgYSAid29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSIKK21lYW5zIGVpdGhlciB0aGUgUHJvZ3JhbSBvciBhbnkgZGVyaXZhdGl2ZSB3b3JrIHVuZGVyIGNvcHlyaWdodCBsYXc6Cit0aGF0IGlzIHRvIHNheSwgYSB3b3JrIGNvbnRhaW5pbmcgdGhlIFByb2dyYW0gb3IgYSBwb3J0aW9uIG9mIGl0LAorZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZCBpbnRvIGFub3RoZXIKK2xhbmd1YWdlLiAgKEhlcmVpbmFmdGVyLCB0cmFuc2xhdGlvbiBpcyBpbmNsdWRlZCB3aXRob3V0IGxpbWl0YXRpb24gaW4KK3RoZSB0ZXJtICJtb2RpZmljYXRpb24iLikgIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLgorCitBY3Rpdml0aWVzIG90aGVyIHRoYW4gY29weWluZywgZGlzdHJpYnV0aW9uIGFuZCBtb2RpZmljYXRpb24gYXJlIG5vdAorY292ZXJlZCBieSB0aGlzIExpY2Vuc2U7IHRoZXkgYXJlIG91dHNpZGUgaXRzIHNjb3BlLiAgVGhlIGFjdCBvZgorcnVubmluZyB0aGUgUHJvZ3JhbSBpcyBub3QgcmVzdHJpY3RlZCwgYW5kIHRoZSBvdXRwdXQgZnJvbSB0aGUgUHJvZ3JhbQoraXMgY292ZXJlZCBvbmx5IGlmIGl0cyBjb250ZW50cyBjb25zdGl0dXRlIGEgd29yayBiYXNlZCBvbiB0aGUKK1Byb2dyYW0gKGluZGVwZW5kZW50IG9mIGhhdmluZyBiZWVuIG1hZGUgYnkgcnVubmluZyB0aGUgUHJvZ3JhbSkuCitXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIFByb2dyYW0gZG9lcy4KKworICAxLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFtJ3MKK3NvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0IHlvdQorY29uc3BpY3VvdXNseSBhbmQgYXBwcm9wcmlhdGVseSBwdWJsaXNoIG9uIGVhY2ggY29weSBhbiBhcHByb3ByaWF0ZQorY29weXJpZ2h0IG5vdGljZSBhbmQgZGlzY2xhaW1lciBvZiB3YXJyYW50eTsga2VlcCBpbnRhY3QgYWxsIHRoZQorbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55IHdhcnJhbnR5OworYW5kIGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFByb2dyYW0gYSBjb3B5IG9mIHRoaXMgTGljZW5zZQorYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4KKworWW91IG1heSBjaGFyZ2UgYSBmZWUgZm9yIHRoZSBwaHlzaWNhbCBhY3Qgb2YgdHJhbnNmZXJyaW5nIGEgY29weSwgYW5kCit5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEgZmVlLgorCisgIDIuIFlvdSBtYXkgbW9kaWZ5IHlvdXIgY29weSBvciBjb3BpZXMgb2YgdGhlIFByb2dyYW0gb3IgYW55IHBvcnRpb24KK29mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBhbmQgY29weSBhbmQKK2Rpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQorYWJvdmUsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoKKworICAgIGEpIFlvdSBtdXN0IGNhdXNlIHRoZSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcworICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCisKKyAgICBiKSBZb3UgbXVzdCBjYXVzZSBhbnkgd29yayB0aGF0IHlvdSBkaXN0cmlidXRlIG9yIHB1Ymxpc2gsIHRoYXQgaW4KKyAgICB3aG9sZSBvciBpbiBwYXJ0IGNvbnRhaW5zIG9yIGlzIGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSBvciBhbnkKKyAgICBwYXJ0IHRoZXJlb2YsIHRvIGJlIGxpY2Vuc2VkIGFzIGEgd2hvbGUgYXQgbm8gY2hhcmdlIHRvIGFsbCB0aGlyZAorICAgIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KKworICAgIGMpIElmIHRoZSBtb2RpZmllZCBwcm9ncmFtIG5vcm1hbGx5IHJlYWRzIGNvbW1hbmRzIGludGVyYWN0aXZlbHkKKyAgICB3aGVuIHJ1biwgeW91IG11c3QgY2F1c2UgaXQsIHdoZW4gc3RhcnRlZCBydW5uaW5nIGZvciBzdWNoCisgICAgaW50ZXJhY3RpdmUgdXNlIGluIHRoZSBtb3N0IG9yZGluYXJ5IHdheSwgdG8gcHJpbnQgb3IgZGlzcGxheSBhbgorICAgIGFubm91bmNlbWVudCBpbmNsdWRpbmcgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBhbmQgYQorICAgIG5vdGljZSB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IChvciBlbHNlLCBzYXlpbmcgdGhhdCB5b3UgcHJvdmlkZQorICAgIGEgd2FycmFudHkpIGFuZCB0aGF0IHVzZXJzIG1heSByZWRpc3RyaWJ1dGUgdGhlIHByb2dyYW0gdW5kZXIKKyAgICB0aGVzZSBjb25kaXRpb25zLCBhbmQgdGVsbGluZyB0aGUgdXNlciBob3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcworICAgIExpY2Vuc2UuICAoRXhjZXB0aW9uOiBpZiB0aGUgUHJvZ3JhbSBpdHNlbGYgaXMgaW50ZXJhY3RpdmUgYnV0CisgICAgZG9lcyBub3Qgbm9ybWFsbHkgcHJpbnQgc3VjaCBhbiBhbm5vdW5jZW1lbnQsIHlvdXIgd29yayBiYXNlZCBvbgorICAgIHRoZSBQcm9ncmFtIGlzIG5vdCByZXF1aXJlZCB0byBwcmludCBhbiBhbm5vdW5jZW1lbnQuKQorCitUaGVzZSByZXF1aXJlbWVudHMgYXBwbHkgdG8gdGhlIG1vZGlmaWVkIHdvcmsgYXMgYSB3aG9sZS4gIElmCitpZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtLAorYW5kIGNhbiBiZSByZWFzb25hYmx5IGNvbnNpZGVyZWQgaW5kZXBlbmRlbnQgYW5kIHNlcGFyYXRlIHdvcmtzIGluCit0aGVtc2VsdmVzLCB0aGVuIHRoaXMgTGljZW5zZSwgYW5kIGl0cyB0ZXJtcywgZG8gbm90IGFwcGx5IHRvIHRob3NlCitzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKK2Rpc3RyaWJ1dGUgdGhlIHNhbWUgc2VjdGlvbnMgYXMgcGFydCBvZiBhIHdob2xlIHdoaWNoIGlzIGEgd29yayBiYXNlZAorb24gdGhlIFByb2dyYW0sIHRoZSBkaXN0cmlidXRpb24gb2YgdGhlIHdob2xlIG11c3QgYmUgb24gdGhlIHRlcm1zIG9mCit0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQorZW50aXJlIHdob2xlLCBhbmQgdGh1cyB0byBlYWNoIGFuZCBldmVyeSBwYXJ0IHJlZ2FyZGxlc3Mgb2Ygd2hvIHdyb3RlIGl0LgorCitUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKK3lvdXIgcmlnaHRzIHRvIHdvcmsgd3JpdHRlbiBlbnRpcmVseSBieSB5b3U7IHJhdGhlciwgdGhlIGludGVudCBpcyB0bworZXhlcmNpc2UgdGhlIHJpZ2h0IHRvIGNvbnRyb2wgdGhlIGRpc3RyaWJ1dGlvbiBvZiBkZXJpdmF0aXZlIG9yCitjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBQcm9ncmFtLgorCitJbiBhZGRpdGlvbiwgbWVyZSBhZ2dyZWdhdGlvbiBvZiBhbm90aGVyIHdvcmsgbm90IGJhc2VkIG9uIHRoZSBQcm9ncmFtCit3aXRoIHRoZSBQcm9ncmFtIChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSkgb24gYSB2b2x1bWUgb2YKK2Egc3RvcmFnZSBvciBkaXN0cmlidXRpb24gbWVkaXVtIGRvZXMgbm90IGJyaW5nIHRoZSBvdGhlciB3b3JrIHVuZGVyCit0aGUgc2NvcGUgb2YgdGhpcyBMaWNlbnNlLgorCisgIDMuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYSB3b3JrIGJhc2VkIG9uIGl0LAordW5kZXIgU2VjdGlvbiAyKSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0gdW5kZXIgdGhlIHRlcm1zIG9mCitTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CisKKyAgICBhKSBBY2NvbXBhbnkgaXQgd2l0aCB0aGUgY29tcGxldGUgY29ycmVzcG9uZGluZyBtYWNoaW5lLXJlYWRhYmxlCisgICAgc291cmNlIGNvZGUsIHdoaWNoIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zCisgICAgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCisKKyAgICBiKSBBY2NvbXBhbnkgaXQgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0aHJlZQorICAgIHllYXJzLCB0byBnaXZlIGFueSB0aGlyZCBwYXJ0eSwgZm9yIGEgY2hhcmdlIG5vIG1vcmUgdGhhbiB5b3VyCisgICAgY29zdCBvZiBwaHlzaWNhbGx5IHBlcmZvcm1pbmcgc291cmNlIGRpc3RyaWJ1dGlvbiwgYSBjb21wbGV0ZQorICAgIG1hY2hpbmUtcmVhZGFibGUgY29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgdG8gYmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bQorICAgIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwKKworICAgIGMpIEFjY29tcGFueSBpdCB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgcmVjZWl2ZWQgYXMgdG8gdGhlIG9mZmVyCisgICAgdG8gZGlzdHJpYnV0ZSBjb3JyZXNwb25kaW5nIHNvdXJjZSBjb2RlLiAgKFRoaXMgYWx0ZXJuYXRpdmUgaXMKKyAgICBhbGxvd2VkIG9ubHkgZm9yIG5vbmNvbW1lcmNpYWwgZGlzdHJpYnV0aW9uIGFuZCBvbmx5IGlmIHlvdQorICAgIHJlY2VpdmVkIHRoZSBwcm9ncmFtIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB3aXRoIHN1Y2gKKyAgICBhbiBvZmZlciwgaW4gYWNjb3JkIHdpdGggU3Vic2VjdGlvbiBiIGFib3ZlLikKKworVGhlIHNvdXJjZSBjb2RlIGZvciBhIHdvcmsgbWVhbnMgdGhlIHByZWZlcnJlZCBmb3JtIG9mIHRoZSB3b3JrIGZvcgorbWFraW5nIG1vZGlmaWNhdGlvbnMgdG8gaXQuICBGb3IgYW4gZXhlY3V0YWJsZSB3b3JrLCBjb21wbGV0ZSBzb3VyY2UKK2NvZGUgbWVhbnMgYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55Cithc3NvY2lhdGVkIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzLCBwbHVzIHRoZSBzY3JpcHRzIHVzZWQgdG8KK2NvbnRyb2wgY29tcGlsYXRpb24gYW5kIGluc3RhbGxhdGlvbiBvZiB0aGUgZXhlY3V0YWJsZS4gIEhvd2V2ZXIsIGFzIGEKK3NwZWNpYWwgZXhjZXB0aW9uLCB0aGUgc291cmNlIGNvZGUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZQorYW55dGhpbmcgdGhhdCBpcyBub3JtYWxseSBkaXN0cmlidXRlZCAoaW4gZWl0aGVyIHNvdXJjZSBvciBiaW5hcnkKK2Zvcm0pIHdpdGggdGhlIG1ham9yIGNvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlCitvcGVyYXRpbmcgc3lzdGVtIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0IGNvbXBvbmVudAoraXRzZWxmIGFjY29tcGFuaWVzIHRoZSBleGVjdXRhYmxlLgorCitJZiBkaXN0cmlidXRpb24gb2YgZXhlY3V0YWJsZSBvciBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nCithY2Nlc3MgdG8gY29weSBmcm9tIGEgZGVzaWduYXRlZCBwbGFjZSwgdGhlbiBvZmZlcmluZyBlcXVpdmFsZW50CithY2Nlc3MgdG8gY29weSB0aGUgc291cmNlIGNvZGUgZnJvbSB0aGUgc2FtZSBwbGFjZSBjb3VudHMgYXMKK2Rpc3RyaWJ1dGlvbiBvZiB0aGUgc291cmNlIGNvZGUsIGV2ZW4gdGhvdWdoIHRoaXJkIHBhcnRpZXMgYXJlIG5vdAorY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KKworICA0LiBZb3UgbWF5IG5vdCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0KK2V4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQKK290aGVyd2lzZSB0byBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2Ugb3IgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBpcwordm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlLgorSG93ZXZlciwgcGFydGllcyB3aG8gaGF2ZSByZWNlaXZlZCBjb3BpZXMsIG9yIHJpZ2h0cywgZnJvbSB5b3UgdW5kZXIKK3RoaXMgTGljZW5zZSB3aWxsIG5vdCBoYXZlIHRoZWlyIGxpY2Vuc2VzIHRlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoCitwYXJ0aWVzIHJlbWFpbiBpbiBmdWxsIGNvbXBsaWFuY2UuCisKKyAgNS4gWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSwgc2luY2UgeW91IGhhdmUgbm90CitzaWduZWQgaXQuICBIb3dldmVyLCBub3RoaW5nIGVsc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIG1vZGlmeSBvcgorZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBvciBpdHMgZGVyaXZhdGl2ZSB3b3Jrcy4gIFRoZXNlIGFjdGlvbnMgYXJlCitwcm9oaWJpdGVkIGJ5IGxhdyBpZiB5b3UgZG8gbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5Cittb2RpZnlpbmcgb3IgZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKK1Byb2dyYW0pLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzbywgYW5kCithbGwgaXRzIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpbmcgb3IgbW9kaWZ5aW5nCit0aGUgUHJvZ3JhbSBvciB3b3JrcyBiYXNlZCBvbiBpdC4KKworICA2LiBFYWNoIHRpbWUgeW91IHJlZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlCitQcm9ncmFtKSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQorb3JpZ2luYWwgbGljZW5zb3IgdG8gY29weSwgZGlzdHJpYnV0ZSBvciBtb2RpZnkgdGhlIFByb2dyYW0gc3ViamVjdCB0bwordGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIKK3Jlc3RyaWN0aW9ucyBvbiB0aGUgcmVjaXBpZW50cycgZXhlcmNpc2Ugb2YgdGhlIHJpZ2h0cyBncmFudGVkIGhlcmVpbi4KK1lvdSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHRvCit0aGlzIExpY2Vuc2UuCisKKyAgNy4gSWYsIGFzIGEgY29uc2VxdWVuY2Ugb2YgYSBjb3VydCBqdWRnbWVudCBvciBhbGxlZ2F0aW9uIG9mIHBhdGVudAoraW5mcmluZ2VtZW50IG9yIGZvciBhbnkgb3RoZXIgcmVhc29uIChub3QgbGltaXRlZCB0byBwYXRlbnQgaXNzdWVzKSwKK2NvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKK290aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QKK2V4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90CitkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCitMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91CittYXkgbm90IGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gYXQgYWxsLiAgRm9yIGV4YW1wbGUsIGlmIGEgcGF0ZW50CitsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGJ5CithbGwgdGhvc2Ugd2hvIHJlY2VpdmUgY29waWVzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB5b3UsIHRoZW4KK3RoZSBvbmx5IHdheSB5b3UgY291bGQgc2F0aXNmeSBib3RoIGl0IGFuZCB0aGlzIExpY2Vuc2Ugd291bGQgYmUgdG8KK3JlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0uCisKK0lmIGFueSBwb3J0aW9uIG9mIHRoaXMgc2VjdGlvbiBpcyBoZWxkIGludmFsaWQgb3IgdW5lbmZvcmNlYWJsZSB1bmRlcgorYW55IHBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0bworYXBwbHkgYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIKK2NpcmN1bXN0YW5jZXMuCisKK0l0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKK3BhdGVudHMgb3Igb3RoZXIgcHJvcGVydHkgcmlnaHQgY2xhaW1zIG9yIHRvIGNvbnRlc3QgdmFsaWRpdHkgb2YgYW55CitzdWNoIGNsYWltczsgdGhpcyBzZWN0aW9uIGhhcyB0aGUgc29sZSBwdXJwb3NlIG9mIHByb3RlY3RpbmcgdGhlCitpbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSwgd2hpY2ggaXMKK2ltcGxlbWVudGVkIGJ5IHB1YmxpYyBsaWNlbnNlIHByYWN0aWNlcy4gIE1hbnkgcGVvcGxlIGhhdmUgbWFkZQorZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAordGhyb3VnaCB0aGF0IHN5c3RlbSBpbiByZWxpYW5jZSBvbiBjb25zaXN0ZW50IGFwcGxpY2F0aW9uIG9mIHRoYXQKK3N5c3RlbTsgaXQgaXMgdXAgdG8gdGhlIGF1dGhvci9kb25vciB0byBkZWNpZGUgaWYgaGUgb3Igc2hlIGlzIHdpbGxpbmcKK3RvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAoraW1wb3NlIHRoYXQgY2hvaWNlLgorCitUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KK2JlIGEgY29uc2VxdWVuY2Ugb2YgdGhlIHJlc3Qgb2YgdGhpcyBMaWNlbnNlLgorCisgIDguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgUHJvZ3JhbSBpcyByZXN0cmljdGVkIGluCitjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKK29yaWdpbmFsIGNvcHlyaWdodCBob2xkZXIgd2hvIHBsYWNlcyB0aGUgUHJvZ3JhbSB1bmRlciB0aGlzIExpY2Vuc2UKK21heSBhZGQgYW4gZXhwbGljaXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZwordGhvc2UgY291bnRyaWVzLCBzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZworY291bnRyaWVzIG5vdCB0aHVzIGV4Y2x1ZGVkLiAgSW4gc3VjaCBjYXNlLCB0aGlzIExpY2Vuc2UgaW5jb3Jwb3JhdGVzCit0aGUgbGltaXRhdGlvbiBhcyBpZiB3cml0dGVuIGluIHRoZSBib2R5IG9mIHRoaXMgTGljZW5zZS4KKworICA5LiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucworb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCitiZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLCBidXQgbWF5IGRpZmZlciBpbiBkZXRhaWwgdG8KK2FkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgorCitFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZSBQcm9ncmFtCitzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQgImFueQorbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucworZWl0aGVyIG9mIHRoYXQgdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKK1NvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YKK3RoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKK0ZvdW5kYXRpb24uCisKKyAgMTAuIElmIHlvdSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRzIG9mIHRoZSBQcm9ncmFtIGludG8gb3RoZXIgZnJlZQorcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGRpZmZlcmVudCwgd3JpdGUgdG8gdGhlIGF1dGhvcgordG8gYXNrIGZvciBwZXJtaXNzaW9uLiAgRm9yIHNvZnR3YXJlIHdoaWNoIGlzIGNvcHlyaWdodGVkIGJ5IHRoZSBGcmVlCitTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMKK21ha2UgZXhjZXB0aW9ucyBmb3IgdGhpcy4gIE91ciBkZWNpc2lvbiB3aWxsIGJlIGd1aWRlZCBieSB0aGUgdHdvIGdvYWxzCitvZiBwcmVzZXJ2aW5nIHRoZSBmcmVlIHN0YXR1cyBvZiBhbGwgZGVyaXZhdGl2ZXMgb2Ygb3VyIGZyZWUgc29mdHdhcmUgYW5kCitvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcgYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KKworCQkJICAgIE5PIFdBUlJBTlRZCisKKyAgMTEuIEJFQ0FVU0UgVEhFIFBST0dSQU0gSVMgTElDRU5TRUQgRlJFRSBPRiBDSEFSR0UsIFRIRVJFIElTIE5PIFdBUlJBTlRZCitGT1IgVEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZIEFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4KK09USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMKK1BST1ZJREUgVEhFIFBST0dSQU0gIkFTIElTIiBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTU0VECitPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUworVE8gVEhFIFFVQUxJVFkgQU5EIFBFUkZPUk1BTkNFIE9GIFRIRSBQUk9HUkFNIElTIFdJVEggWU9VLiAgU0hPVUxEIFRIRQorUFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsCitSRVBBSVIgT1IgQ09SUkVDVElPTi4KKworICAxMi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTiBXUklUSU5HCitXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJRlkgQU5EL09SCitSRURJU1RSSUJVVEUgVEhFIFBST0dSQU0gQVMgUEVSTUlUVEVEIEFCT1ZFLCBCRSBMSUFCTEUgVE8gWU9VIEZPUiBEQU1BR0VTLAorSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HCitPVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVECitUTyBMT1NTIE9GIERBVEEgT1IgREFUQSBCRUlORyBSRU5ERVJFRCBJTkFDQ1VSQVRFIE9SIExPU1NFUyBTVVNUQUlORUQgQlkKK1lPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEgRkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSCitQUk9HUkFNUyksIEVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUKK1BPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9NeWxleC50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvTXlsZXgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3OTdmM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvTXlsZXgudHh0CkBAIC0wLDAgKzEsNSBAQAorUGxlYXNlIHNlZSB0aGUgZmlsZSBSRUFETUUuQnVzTG9naWMgZm9yIGluZm9ybWF0aW9uIGFib3V0IExpbnV4IHN1cHBvcnQgZm9yCitNeWxleCAoZm9ybWVybHkgQnVzTG9naWMpIE11bHRpTWFzdGVyIGFuZCBGbGFzaFBvaW50IFNDU0kgSG9zdCBBZGFwdGVycy4KKworVGhlIE15bGV4IERBQzk2MCBQQ0kgUkFJRCBDb250cm9sbGVycyBhcmUgbm93IHN1cHBvcnRlZC4gIFBsZWFzZSBjb25zdWx0CitodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2RhbmRlbGlvbiBmb3IgZnVydGhlciBpbmZvcm1hdGlvbiBvbiB0aGUgREFDOTYwIGRyaXZlci4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9OaW5qYVNDU0kudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL05pbmphU0NTSS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM4ZGI4YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2NzaS9OaW5qYVNDU0kudHh0CkBAIC0wLDAgKzEsMTI4IEBACisKKyAgICAgICAgIFdvcmtCaVQgTmluamFTQ1NJLTMvMzJCaSBkcml2ZXIgZm9yIExpbnV4CisKKzEuIENvbW1lbnQKKyBUaGlzIGlzIFdvcmtiaXQgY29ycC4ncyhodHRwOi8vd3d3LndvcmtiaXQuY28uanAvKSBOaW5qYVNDU0ktMworZm9yIExpbnV4LgorCisyLiBNeSBMaW51eCBlbnZpcm9ubWVudAorTGludXgga2VybmVsOiAyLjQuNyAvIDIuMi4xOQorcGNtY2lhLWNzOiAgICAzLjEuMjcKK2djYzogICAgICAgICAgZ2NjLTIuOTUuNAorUEMgY2FyZDogICAgICBJLU8gZGF0YSBQQ1NDLUYgKE5pbmphU0NTSS0zKQorICAgICAgICAgICAgICBJLU8gZGF0YSBDQlNDLUlJIGluIDE2IGJpdCBtb2RlIChOaW5qYVNDU0ktMzJCaSkKK1NDU0kgZGV2aWNlOiAgSS1PIGRhdGEgQ0RQUy1QWDI0IChDRC1ST00gZHJpdmUpCisgICAgICAgICAgICAgIE1lZGlhIEludGVsbGlnZW50IE1NTy02NDBHVCAoT3B0aWNhbCBkaXNrIGRyaXZlKQorCiszLiBJbnN0YWxsCitbMV0gQ2hlY2sgeW91ciBQQyBjYXJkIGlzIHRydWUgIk5pbmphU0NTSS0zIiBjYXJkLgorICAgIElmIHlvdSBpbnN0YWxsZWQgcGNtY2lhLWNzIGFscmVhZHksIHBjbWNpYSByZXBvcnRzIHlvdXIgY2FyZCBhcyBVTktOT1dOCisgICAgY2FyZCwgYW5kIHdyaXRlIFsiV0JUIiwgIk5pbmphU0NTSS0zIiwgIlIxLjAiXSBvciBzb21lIG90aGVyIHN0cmluZyB0bworICAgIHlvdXIgY29uc29sZSBvciBsb2cgZmlsZS4KKyAgICBZb3UgY2FuIGFsc28gdXNlICJjYXJkY3RsIiBwcm9ncmFtICh0aGlzIHByb2dyYW0gaXMgaW4gcGNtY2lhLWNzIHNvdXJjZQorICAgIGNvZGUpIHRvIGdldCBtb3JlIGluZm8uCisKKyMgY2F0IC92YXIvbG9nL21lc3NhZ2VzCisuLi4KK0phbiAgMiAwMzo0NTowNiBsaW5kYmVyZyBjYXJkbWdyWzc4XTogdW5zdXBwb3J0ZWQgY2FyZCBpbiBzb2NrZXQgMQorSmFuICAyIDAzOjQ1OjA2IGxpbmRiZXJnIGNhcmRtZ3JbNzhdOiAgIHByb2R1Y3QgaW5mbzogIldCVCIsICJOaW5qYVNDU0ktMyIsICJSMS4wIgorLi4uCisjIGNhcmRjdGwgaWRlbnQKK1NvY2tldCAwOgorICBubyBwcm9kdWN0IGluZm8gYXZhaWxhYmxlCitTb2NrZXQgMToKKyAgcHJvZHVjdCBpbmZvOiAiSU8gREFUQSIsICJDQlNDMTYgICAgICAgIiwgIjEiCisKKworWzJdIEdldCB0aGUgTGludXgga2VybmVsIHNvdXJjZSwgYW5kIGV4dHJhY3QgaXQgdG8gL3Vzci9zcmMuCisgICAgQmVjYXVzZSB0aGUgTmluamFTQ1NJIGRyaXZlciByZXF1aXJlcyBzb21lIFNDU0kgaGVhZGVyIGZpbGVzIGluIExpbnV4IAorICAgIGtlcm5lbCBzb3VyY2UsIEkgcmVjb21tZW5kIHJlYnVpbGRpbmcgeW91ciBrZXJuZWw7IHRoaXMgZWxpbWluYXRlcyAKKyAgICBzb21lIHZlcnNpb25pbmcgcHJvYmxlbXMuCiskIGNkIC91c3Ivc3JjCiskIHRhciAtenh2ZiBsaW51eC14LngueC50YXIuZ3oKKyQgY2QgbGludXgKKyQgbWFrZSBjb25maWcKKy4uLgorCitbM10gSWYgeW91IHVzZSB0aGlzIGRyaXZlciB3aXRoIEtlcm5lbCAyLjIsIHVucGFjayBwY21jaWEtY3MgaW4gc29tZSBkaXJlY3RvcnkKKyAgICBhbmQgbWFrZSAmIGluc3RhbGwuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHRoZSBwY21jaWEtY3MgaGVhZGVyIGZpbGUuCiskIGNkIC91c3Ivc3JjCiskIHRhciB6eHZmIGNzLXBjbWNpYS1jcy0zLngueC50YXIuZ3oKKy4uLgorCitbNF0gRXh0cmFjdCB0aGlzIGRyaXZlcidzIGFyY2hpdmUgc29tZXdoZXJlLCBhbmQgZWRpdCBNYWtlZmlsZSwgdGhlbiBkbyBtYWtlLgorJCB0YXIgLXp4dmYgbnNwX2NzLXgueC50YXIuZ3oKKyQgY2QgbnNwX2NzLXgueAorJCBlbWFjcyBNYWtlZmlsZQorLi4uCiskIG1ha2UKKworWzVdIENvcHkgbnNwX2NzLmtvIHRvIHN1aXRhYmxlIHBsYWNlLCBsaWtlIC9saWIvbW9kdWxlcy88S2VybmVsIHZlcnNpb24+L3BjbWNpYS8gLgorCitbNl0gQWRkIHRoZXNlIGxpbmVzIHRvIC9ldGMvcGNtY2lhL2NvbmZpZyAuCisgICAgSWYgeW91IHVzZSBwY21jaWEtY3MtMy4xLjggb3IgbGF0ZXIsIHdlIGNhbiB1c2UgIm5zcF9jcy5jb25mIiBmaWxlLgorICAgIFNvLCB5b3UgZG9uJ3QgbmVlZCB0byBlZGl0IGZpbGUuIEp1c3QgY29weSB0byAvZXRjL3BjbWNpYS8gLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkZXZpY2UgIm5zcF9jcyIKKyAgY2xhc3MgInNjc2kiIG1vZHVsZSAibnNwX2NzIgorCitjYXJkICJXb3JrQml0IE5pbmphU0NTSS0zIgorICB2ZXJzaW9uICJXQlQiLCAiTmluamFTQ1NJLTMiLCAiUjEuMCIKKyAgYmluZCAibnNwX2NzIgorCitjYXJkICJXb3JrQml0IE5pbmphU0NTSS0zMkJpICgxNmJpdCkiCisgIHZlcnNpb24gIldPUktCSVQiLCAiVWx0cmFOaW5qYS0xNiIsICIxIgorICBiaW5kICJuc3BfY3MiCisKKyMgT0VNCitjYXJkICJXb3JrQml0IE5pbmphU0NTSS0zMkJpICgxNmJpdCkgLyBJTy1EQVRBIgorICB2ZXJzaW9uICJJTyBEQVRBIiwgIkNCU0MxNiAgICAgICAiLCAiMSIKKyAgYmluZCAibnNwX2NzIgorCisjIE9FTQorY2FyZCAiV29ya0JpdCBOaW5qYVNDU0ktMzJCaSAoMTZiaXQpIC8gS01FLTEiCisgIHZlcnNpb24gIktNRSAgICAiLCAiU0NTSS1DQVJELTAwMSIsICIxIgorICBiaW5kICJuc3BfY3MiCitjYXJkICJXb3JrQml0IE5pbmphU0NTSS0zMkJpICgxNmJpdCkgLyBLTUUtMiIKKyAgdmVyc2lvbiAiS01FICAgICIsICJTQ1NJLUNBUkQtMDAyIiwgIjEiCisgIGJpbmQgIm5zcF9jcyIKK2NhcmQgIldvcmtCaXQgTmluamFTQ1NJLTMyQmkgKDE2Yml0KSAvIEtNRS0zIgorICB2ZXJzaW9uICJLTUUgICAgIiwgIlNDU0ktQ0FSRC0wMDMiLCAiMSIKKyAgYmluZCAibnNwX2NzIgorY2FyZCAiV29ya0JpdCBOaW5qYVNDU0ktMzJCaSAoMTZiaXQpIC8gS01FLTQiCisgIHZlcnNpb24gIktNRSAgICAiLCAiU0NTSS1DQVJELTAwNCIsICIxIgorICBiaW5kICJuc3BfY3MiCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1s3XSBTdGFydCAob3IgcmVzdGFydCkgcGNtY2lhLWNzLgorIyAvZXRjL3JjLmQvcmMucGNtY2lhIHN0YXJ0ICAgICAgICAoQlNEIHN0eWxlKQorb3IKKyMgL2V0Yy9pbml0LmQvcGNtY2lhIHN0YXJ0ICAgICAgICAgKFNZU1Ygc3R5bGUpCisKKworNC4gSGlzdG9yeQorU2VlIFJFQURNRS5uaW5fY3MgLgorCis1LiBDYXV0aW9uCisgSWYgeW91IGVqZWN0IGNhcmQgd2hlbiBkb2luZyBzb21lIG9wZXJhdGlvbiBmb3IgeW91ciBTQ1NJIGRldmljZSBvciBzdXNwZW5kCit5b3VyIGNvbXB1dGVyLCB5b3UgZW5jb3VudCBzb21lICpCQUQqIGVycm9yIGxpa2UgZGlzayBjcmFzaC4KKyBJdCB3b3JrcyBnb29kIHdoZW4gSSB1c2luZyB0aGlzIGRyaXZlciByaWdodCB3YXkuIEJ1dCBJJ20gbm90IGd1YXJhbnRlZQoreW91ciBkYXRhLiBQbGVhc2UgYmFja3VwIHlvdXIgZGF0YSB3aGVuIHlvdSB1c2UgdGhpcyBkcml2ZXIuCisKKzYuIEtub3duIEJ1Z3MKKyBJbiAyLjQga2VybmVsLCB5b3UgY2FuJ3QgdXNlIDY0ME1CIE9wdGljYWwgZGlzay4gVGhpcyBlcnJvciBjb21lcyBmcm9tCitoaWdoIGxldmVsIFNDU0kgZHJpdmVyLgorCis3LiBUZXN0aW5nCisgUGxlYXNlIHNlbmQgbWUgc29tZSByZXBvcnRzKGJ1ZyByZXBvcnRzIGV0Yy4uKSBvZiB0aGlzIHNvZnR3YXJlLgorV2hlbiB5b3Ugc2VuZCByZXBvcnQsIHBsZWFzZSB0ZWxsIG1lIHRoZXNlIG9yIG1vcmUuCisJY2FyZCBuYW1lCisJa2VybmVsIHZlcnNpb24KKwl5b3VyIFNDU0kgZGV2aWNlIG5hbWUoaGFyZCBkcml2ZSwgQ0QtUk9NLCBldGMuLi4pCisKKzguIENvcHlyaWdodAorIFNlZSBHUEwuCisKKworMjAwMS8wOC8wOCB5b2tvdGFAbmV0bGFiLmlzLnRzdWt1YmEuYWMuanAgPFlPS09UQSBIaXJvc2hpPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL2FhY3JhaWQudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL2FhY3JhaWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwZjY0M2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvYWFjcmFpZC50eHQKQEAgLTAsMCArMSwxNTAgQEAKK0FBQ1JBSUQgRHJpdmVyIGZvciBMaW51eCAodGFrZSB0d28pCisKK0ludHJvZHVjdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIGFhY3JhaWQgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgQWRhcHRlYyAoaHR0cDovL3d3dy5hZGFwdGVjLmNvbSkKK1JBSUQgY29udHJvbGxlcnMuIFRoaXMgaXMgYSBtYWpvciByZXdyaXRlIGZyb20gdGhlIG9yaWdpbmFsCitBZGFwdGVjIHN1cHBsaWVkIGRyaXZlci4gSXQgaGFzIHNpZ25pZmljYW50bHkgY2xlYW5lZCB1cCBib3RoIHRoZSBjb2RlCithbmQgdGhlIHJ1bm5pbmcgYmluYXJ5IHNpemUgKHRoZSBtb2R1bGUgaXMgbGVzcyB0aGFuIGhhbGYgdGhlIHNpemUgb2YKK3RoZSBvcmlnaW5hbCkuCisKK1N1cHBvcnRlZCBDYXJkcy9DaGlwc2V0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCVBDSSBJRCAocGNpLmlkcykJT0VNCVByb2R1Y3QKKwk5MDA1OjAyODU6OTAwNTowMjg1CUFkYXB0ZWMJMjIwMFMgKFZ1bGNhbikKKwk5MDA1OjAyODU6OTAwNTowMjg2CUFkYXB0ZWMJMjEyMFMgKENydXNhZGVyKQorCTkwMDU6MDI4NTo5MDA1OjAyODcJQWRhcHRlYwkyMjAwUyAoVnVsY2FuLTJtKQorCTkwMDU6MDI4NTo5MDA1OjAyODgJQWRhcHRlYwkzMjMwUyAoSGFycmllcikKKwk5MDA1OjAyODU6OTAwNTowMjg5CUFkYXB0ZWMJMzI0MFMgKFRvcm5hZG8pCisJOTAwNTowMjg1OjkwMDU6MDI4YQlBZGFwdGVjCTIwMjBaQ1IgKFNreWhhd2spCisJOTAwNTowMjg1OjkwMDU6MDI4YglBZGFwdGVjCTIwMjVaQ1IgKFRlcm1pbmF0b3IpCisJOTAwNTowMjg2OjkwMDU6MDI4YwlBZGFwdGVjCTIyMzBTIChMYW5jZXIpCisJOTAwNTowMjg2OjkwMDU6MDI4YwlBZGFwdGVjCTIyMzBTTFAgKExhbmNlcikKKwk5MDA1OjAyODY6OTAwNTowMjhkCUFkYXB0ZWMJMjEzMFMgKExhbmNlcikKKwk5MDA1OjAyODU6OTAwNTowMjhlCUFkYXB0ZWMJMjAyMFNBIChTa3loYXdrKQorCTkwMDU6MDI4NTo5MDA1OjAyOGYJQWRhcHRlYwkyMDI1U0EgKFRlcm1pbmF0b3IpCisJOTAwNTowMjg1OjkwMDU6MDI5MAlBZGFwdGVjCTI0MTBTQSAoSmFndWFyKQorCTkwMDU6MDI4NToxMDNjOjMyMjcJQWRhcHRlYwkyNjEwU0EgKEJlYXJjYXQgSFAgcmVsZWFzZSkKKwk5MDA1OjAyODU6OTAwNTowMjkzCUFkYXB0ZWMJMjE2MTBTQSAoQ29yc2Fpci0xNikKKwk5MDA1OjAyODU6OTAwNTowMjk2CUFkYXB0ZWMJMjI0MFMgKFNhYnJlRXhwcmVzcykKKwk5MDA1OjAyODU6OTAwNTowMjkyCUFkYXB0ZWMJMjgxMFNBIChDb3JzYWlyLTgpCisJOTAwNTowMjg1OjkwMDU6MDI5NwlBZGFwdGVjCTQwMDUgKEF2b25QYXJrKQorCTkwMDU6MDI4NTo5MDA1OjAyOTgJQWRhcHRlYwk0MDAwIChCbGFja0JpcmQpCisJOTAwNTowMjg1OjkwMDU6MDI5OQlBZGFwdGVjCTQ4MDBTQVMgKE1hcmF1ZGVyLVgpCisJOTAwNTowMjg1OjkwMDU6MDI5YQlBZGFwdGVjCTQ4MDVTQVMgKE1hcmF1ZGVyLUUpCisJOTAwNTowMjg2OjkwMDU6MDI5YglBZGFwdGVjCTI4MjBTQSAoSW50cnVkZXIpCisJOTAwNTowMjg2OjkwMDU6MDI5YwlBZGFwdGVjCTI2MjBTQSAoSW50cnVkZXIpCisJOTAwNTowMjg2OjkwMDU6MDI5ZAlBZGFwdGVjCTI0MjBTQSAoSW50cnVkZXIgSFAgcmVsZWFzZSkKKwk5MDA1OjAyODY6OTAwNTowMmFjCUFkYXB0ZWMJMTgwMCAoVHlwaG9vbjQ0KQorCTkwMDU6MDI4NTo5MDA1OjAyYjUJQWRhcHRlYwk1NDQ1IChWb29kb280NCkKKwk5MDA1OjAyODU6MTVkOTowMmI1CVNNQwlBT0MtVVNBUy1TNGkKKwk5MDA1OjAyODU6OTAwNTowMmI2CUFkYXB0ZWMJNTgwNSAoVm9vZG9vODApCisJOTAwNTowMjg1OjE1ZDk6MDJiNglTTUMJQU9DLVVTQVMtUzhpCisJOTAwNTowMjg1OjkwMDU6MDJiNwlBZGFwdGVjCTUwODUgKFZvb2RvbzA4KQorCTkwMDU6MDI4NTo5MDA1OjAyYmIJQWRhcHRlYwkzNDA1IChNYXJhdWRlcjQwTFApCisJOTAwNTowMjg1OjkwMDU6MDJiYwlBZGFwdGVjCTM4MDUgKE1hcmF1ZGVyODBMUCkKKwk5MDA1OjAyODU6OTAwNTowMmM3CUFkYXB0ZWMJMzA4NSAoTWFyYXVkZXIwOEVMUCkKKwk5MDA1OjAyODU6OTAwNTowMmJkCUFkYXB0ZWMJMzEyMDUgKE1hcmF1ZGVyMTIwKQorCTkwMDU6MDI4NTo5MDA1OjAyYmUJQWRhcHRlYwkzMTYwNSAoTWFyYXVkZXIxNjApCisJOTAwNTowMjg1OjkwMDU6MDJjMwlBZGFwdGVjCTUxMjA1IChWb29kb28xMjApCisJOTAwNTowMjg1OjkwMDU6MDJjNAlBZGFwdGVjCTUxNjA1IChWb29kb28xNjApCisJOTAwNTowMjg1OjE1ZDk6MDJjOQlTTUMJQU9DLVVTQVMtUzRpUgorCTkwMDU6MDI4NToxNWQ5OjAyY2EJU01DCUFPQy1VU0FTLVM4aVIKKwk5MDA1OjAyODU6OTAwNTowMmNlCUFkYXB0ZWMJNTEyNDUgKFZvb2RvbzEyNCkKKwk5MDA1OjAyODU6OTAwNTowMmNmCUFkYXB0ZWMJNTE2NDUgKFZvb2RvbzE2NCkKKwk5MDA1OjAyODU6OTAwNTowMmQwCUFkYXB0ZWMJNTI0NDUgKFZvb2RvbzI0NCkKKwk5MDA1OjAyODU6OTAwNTowMmQxCUFkYXB0ZWMJNTQwNSAoVm9vZG9vNDApCisJOTAwNTowMjg1OjE1ZDk6MDJkMglTTUMJQU9DLVVTQVMtUzhpLUxQCisJOTAwNTowMjg1OjE1ZDk6MDJkMwlTTUMJQU9DLVVTQVMtUzhpUi1MUAorCTkwMDU6MDI4NTo5MDA1OjAyZDQJQWRhcHRlYwlBU1ItMjA0NSAoVm9vZG9vMDQgTGl0ZSkKKwk5MDA1OjAyODU6OTAwNTowMmQ1CUFkYXB0ZWMJQVNSLTI0MDUgKFZvb2RvbzQwIExpdGUpCisJOTAwNTowMjg1OjkwMDU6MDJkNglBZGFwdGVjCUFTUi0yNDQ1IChWb29kb280NCBMaXRlKQorCTkwMDU6MDI4NTo5MDA1OjAyZDcJQWRhcHRlYwlBU1ItMjgwNSAoVm9vZG9vODAgTGl0ZSkKKwk5MDA1OjAyODU6OTAwNTowMmQ4CUFkYXB0ZWMJNTQwNVogKFZvb2RvbzQwIEJMQlUpCisJOTAwNTowMjg1OjkwMDU6MDJkOQlBZGFwdGVjCTU0NDVaIChWb29kb280NCBCTEJVKQorCTkwMDU6MDI4NTo5MDA1OjAyZGEJQWRhcHRlYwk1ODA1WiAoVm9vZG9vODAgQkxCVSkKKwkxMDExOjAwNDY6OTAwNTowMzY0CUFkYXB0ZWMJNTQwMFMgKE11c3RhbmcpCisJMTAxMTowMDQ2OjkwMDU6MDM2NQlBZGFwdGVjCTU0MDBTIChNdXN0YW5nKQorCTkwMDU6MDI4Nzo5MDA1OjA4MDAJQWRhcHRlYwlUaGVtaXN0byAoSnVwaXRlcikKKwk5MDA1OjAyMDA6OTAwNTowMjAwCUFkYXB0ZWMJVGhlbWlzdG8gKEp1cGl0ZXIpCisJOTAwNTowMjg2OjkwMDU6MDgwMAlBZGFwdGVjCUNhbGxpc3RvIChKdXBpdGVyKQorCTEwMTE6MDA0Njo5MDA1OjEzNjQJRGVsbAlQRVJDIDIvUUMgKFF1YWQgQ2hhbm5lbCwgTXVzdGFuZykKKwkxMDExOjAwNDY6OTAwNToxMzY1CURlbGwJUEVSQyAyL1FDIChRdWFkIENoYW5uZWwsIE11c3RhbmcpCisJMTAyODowMDAxOjEwMjg6MDAwMQlEZWxsCVBFUkMgMi9TaSAoSWd1YW5hKQorCTEwMjg6MDAwMzoxMDI4OjAwMDMJRGVsbAlQRVJDIDMvU2kgKFNsaW1GYXN0KQorCTEwMjg6MDAwMjoxMDI4OjAwMDIJRGVsbAlQRVJDIDMvRGkgKE9wYWwpCisJMTAyODowMDA0OjEwMjg6MDAwNAlEZWxsCVBFUkMgMy9TaUYgKElndWFuYSkKKwkxMDI4OjAwMDQ6MTAyODowMGQwCURlbGwJUEVSQyAzL0RpRiAoSWd1YW5hKQorCTEwMjg6MDAwMjoxMDI4OjAwZDEJRGVsbAlQRVJDIDMvRGlWIChWaXBlcikKKwkxMDI4OjAwMDI6MTAyODowMGQ5CURlbGwJUEVSQyAzL0RpTCAoTGV4dXMpCisJMTAyODowMDBhOjEwMjg6MDEwNglEZWxsCVBFUkMgMy9EaUogKEphZ3VhcikKKwkxMDI4OjAwMGE6MTAyODowMTFiCURlbGwJUEVSQyAzL0RpRCAoRGFnZ2VyKQorCTEwMjg6MDAwYToxMDI4OjAxMjEJRGVsbAlQRVJDIDMvRGlCIChCb3hzdGVyKQorCTkwMDU6MDI4NToxMDI4OjAyODcJRGVsbAlQRVJDIDMyMC9EQyAoVnVsY2FuKQorCTkwMDU6MDI4NToxMDI4OjAyOTEJRGVsbAlDRVJDIDIgKERlbGxDb3JzYWlyKQorCTEwMTE6MDA0NjoxMDNjOjEwYzIJSFAJTmV0UkFJRC00TSAoTXVzdGFuZykKKwk5MDA1OjAyODU6MTdhYTowMjg2CUxlZ2VuZAlTMjIwIChDcnVzYWRlcikKKwk5MDA1OjAyODU6MTdhYTowMjg3CUxlZ2VuZAlTMjMwIChWdWxjYW4pCisJOTAwNTowMjg1OjkwMDU6MDI5MAlJQk0JU2VydmVSQUlEIDd0IChKYWd1YXIpCisJOTAwNTowMjg1OjEwMTQ6MDJGMglJQk0JU2VydmVSQUlEIDhpIChBdm9uUGFyaykKKwk5MDA1OjAyODY6MTAxNDo5NTQwCUlCTQlTZXJ2ZVJBSUQgOGsvOGstbDQgKEF1cm9yYUxpdGUpCisJOTAwNTowMjg2OjEwMTQ6OTU4MAlJQk0JU2VydmVSQUlEIDhrLzhrLWw4IChBdXJvcmEpCisJOTAwNTowMjg1OjEwMTQ6MDM0ZAlJQk0JU2VydmVSQUlEIDhzIChNYXJhdWRlci1FKQorCTkwMDU6MDI4Njo5MDA1OjAyOWUJSUNQCUlDUDkwMjRSTyAoTGFuY2VyKQorCTkwMDU6MDI4Njo5MDA1OjAyOWYJSUNQCUlDUDkwMTRSTyAoTGFuY2VyKQorCTkwMDU6MDI4Njo5MDA1OjAyYTAJSUNQCUlDUDkwNDdNQSAoTGFuY2VyKQorCTkwMDU6MDI4Njo5MDA1OjAyYTEJSUNQCUlDUDkwODdNQSAoTGFuY2VyKQorCTkwMDU6MDI4NTo5MDA1OjAyYTQJSUNQCUlDUDkwODVMSSAoTWFyYXVkZXItWCkKKwk5MDA1OjAyODU6OTAwNTowMmE1CUlDUAlJQ1A1MDg1QlIgKE1hcmF1ZGVyLUUpCisJOTAwNTowMjg2OjkwMDU6MDJhNglJQ1AJSUNQOTA2N01BIChJbnRydWRlci02KQorCTkwMDU6MDI4NTo5MDA1OjAyYjIJSUNQCShWb29kb28gOCBpbnRlcm5hbCA4IGV4dGVybmFsKQorCTkwMDU6MDI4NTo5MDA1OjAyYjgJSUNQCUlDUDU0NDVTTCAoVm9vZG9vNDQpCisJOTAwNTowMjg1OjkwMDU6MDJiOQlJQ1AJSUNQNTA4NVNMIChWb29kb284MCkKKwk5MDA1OjAyODU6OTAwNTowMmJhCUlDUAlJQ1A1ODA1U0wgKFZvb2RvbzA4KQorCTkwMDU6MDI4NTo5MDA1OjAyYmYJSUNQCUlDUDUwNDVCTCAoTWFyYXVkZXI0MExQKQorCTkwMDU6MDI4NTo5MDA1OjAyYzAJSUNQCUlDUDUwODVCTCAoTWFyYXVkZXI4MExQKQorCTkwMDU6MDI4NTo5MDA1OjAyYzgJSUNQCUlDUDU4MDVCTCAoTWFyYXVkZXIwOEVMUCkKKwk5MDA1OjAyODU6OTAwNTowMmMxCUlDUAlJQ1A1MTI1QlIgKE1hcmF1ZGVyMTIwKQorCTkwMDU6MDI4NTo5MDA1OjAyYzIJSUNQCUlDUDUxNjVCUiAoTWFyYXVkZXIxNjApCisJOTAwNTowMjg1OjkwMDU6MDJjNQlJQ1AJSUNQNTEyNVNMIChWb29kb28xMjApCisJOTAwNTowMjg1OjkwMDU6MDJjNglJQ1AJSUNQNTE2NVNMIChWb29kb28xNjApCisJOTAwNTowMjg2OjkwMDU6MDJhYgkJKFR5cGhvb240MCkKKwk5MDA1OjAyODY6OTAwNTowMmFkCQkoQXVyb3JhIEFSSykKKwk5MDA1OjAyODY6OTAwNTowMmFlCQkoQXVyb3JhIExpdGUgQVJLKQorCTkwMDU6MDI4NTo5MDA1OjAyYjAJCShTdW5yaXNlIExha2UgQVJLKQorCTkwMDU6MDI4NTo5MDA1OjAyYjEJQWRhcHRlYwkoVm9vZG9vIDggaW50ZXJuYWwgOCBleHRlcm5hbCkKKwk5MDA1OjAyODU6MTA4ZTo3YWFjCVNVTglTVEsgUkFJRCBSRU0gKFZvb2RvbzQ0IENveW90ZSkKKwk5MDA1OjAyODU6MTA4ZTowMjg2CVNVTglTVEsgUkFJRCBJTlQgKENvdWdhcikKKwk5MDA1OjAyODU6MTA4ZTowMjg3CVNVTglTVEsgUkFJRCBFWFQgKFByb21ldGhldXMpCisJOTAwNTowMjg1OjEwOGU6N2FhZQlTVU4JU1RLIFJBSUQgRU0gKE5hcnZpKQorCitQZW9wbGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FsYW4gQ294IDxhbGFuQGx4b3JndWsudWt1dS5vcmcudWs+CitDaHJpc3RvcGggSGVsbHdpZyA8aGNoQGluZnJhZGVhZC5vcmc+CSh1cGRhdGVzIGZvciBuZXctc3R5bGUgUENJIHByb2JpbmcgYW5kIFNDU0kgaG9zdCByZWdpc3RyYXRpb24sCisJCQkJCSBzbWFsbCBjbGVhbnVwcy9maXhlcykKK01hdHQgRG9tc2NoIDxtYXR0X2RvbXNjaEBkZWxsLmNvbT4JKHJldmlzaW9uIGlvY3RsLCBhZGFwdGVyIG1lc3NhZ2VzKQorRGVhbm5hIEJvbmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub24tREFTRCBzdXBwb3J0LCBQQUUgZmlicyBhbmQgNjQgYml0LCBhZGRlZCBuZXcgYWRhcHRlYyBjb250cm9sbGVycworCQkJCQkgYWRkZWQgbmV3IGlvY3RscywgY2hhbmdlZCBzY3NpIGludGVyZmFjZSB0byB1c2UgbmV3IGVycm9yIGhhbmRsZXIsCisJCQkJCSBpbmNyZWFzZWQgdGhlIG51bWJlciBvZiBmaWJzIGFuZCBvdXRzdGFuZGluZyBjb21tYW5kcyB0byBhIGNvbnRhaW5lcikKKworCQkJCQkoZml4ZWQgNjRiaXQgYW5kIDY0RyBtZW1vcnkgbW9kZWwsIGNoYW5nZWQgY29uZnVzaW5nIG5hbWluZyBjb252ZW50aW9uCisJCQkJCSB3aGVyZSBmaWJzIHRoYXQgZ28gdG8gdGhlIGhhcmR3YXJlIGFyZSBjb25zaXN0ZW50bHkgY2FsbGVkIGh3X2ZpYnMgYW5kCisJCQkJCSBub3QganVzdCBmaWJzIGxpa2UgdGhlIG5hbWUgb2YgdGhlIGRyaXZlciB0cmFja2luZyBzdHJ1Y3R1cmUpCitNYXJrIFNhbHl6eW4gPE1hcmtfU2FseXp5bkBhZGFwdGVjLmNvbT4gRml4ZWQgcGFuaWMgaXNzdWVzIGFuZCBhZGRlZCBzb21lIG5ldyBwcm9kdWN0IGlkcyBmb3IgdXBjb21pbmcgaGJhcy4gUGVyZm9ybWFuY2UgdHVuaW5nLCBjYXJkIGZhaWxvdmVyIGFuZCBidWcgbWl0aWdhdGlvbnMuCitBY2hpbSBMZXVibmVyIDxBY2hpbV9MZXVibmVyQGFkYXB0ZWMuY29tPgorCitPcmlnaW5hbCBEcml2ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FkYXB0ZWMgVW5peCBPRU0gUHJvZHVjdCBHcm91cAorCitNYWlsaW5nIExpc3QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2xpbnV4LXNjc2lAdmdlci5rZXJuZWwub3JnIChJbnRlcmVzdGVkIHBhcnRpZXMgdHJvbGwgaGVyZSkKK0Fsc28gbm90ZSB0aGlzIGlzIHZlcnkgZGlmZmVyZW50IHRvIEJyaWFuJ3Mgb3JpZ2luYWwgZHJpdmVyCitzbyBkb24ndCBleHBlY3QgaGltIHRvIHN1cHBvcnQgaXQuCitBZGFwdGVjIGRvZXMgc3VwcG9ydCB0aGlzIGRyaXZlci4gIENvbnRhY3QgQWRhcHRlYyB0ZWNoIHN1cHBvcnQgb3IKK2FhY3JhaWRAYWRhcHRlYy5jb20KKworT3JpZ2luYWwgYnkgQnJpYW4gQm9lcm5lciBGZWJydWFyeSAyMDAxCitSZXdyaXR0ZW4gYnkgQWxhbiBDb3gsIE5vdmVtYmVyIDIwMDEKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9hZHZhbnN5cy50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvYWR2YW5zeXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhM2RiNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvYWR2YW5zeXMudHh0CkBAIC0wLDAgKzEsMjQzIEBACitBZHZhblN5cyAoQWR2YW5jZWQgU3lzdGVtIFByb2R1Y3RzLCBJbmMuKSBtYW51ZmFjdHVyZXMgdGhlIGZvbGxvd2luZworUklTQy1iYXNlZCwgQnVzLU1hc3RlcmluZywgRmFzdCAoMTAgTWh6KSBhbmQgVWx0cmEgKDIwIE1oeikgTmFycm93CisoOC1iaXQgdHJhbnNmZXIpIFNDU0kgSG9zdCBBZGFwdGVycyBmb3IgdGhlIElTQSwgRUlTQSwgVkwsIGFuZCBQQ0kKK2J1c2VzIGFuZCBSSVNDLWJhc2VkLCBCdXMtTWFzdGVyaW5nLCBVbHRyYSAoMjAgTWh6KSBXaWRlICgxNi1iaXQKK3RyYW5zZmVyKSBTQ1NJIEhvc3QgQWRhcHRlcnMgZm9yIHRoZSBQQ0kgYnVzLgorCitUaGUgQ0RCIGNvdW50cyBiZWxvdyBpbmRpY2F0ZSB0aGUgbnVtYmVyIG9mIFNDU0kgQ0RCIChDb21tYW5kCitEZXNjcmlwdG9yIEJsb2NrKSByZXF1ZXN0cyB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gdGhlIFJJU0MgY2hpcAorY2FjaGUgYW5kIGJvYXJkIExSQU0uIEEgQ0RCIGlzIGEgc2luZ2xlIFNDU0kgY29tbWFuZC4gVGhlIGRyaXZlcgorZGV0ZWN0IHJvdXRpbmUgd2lsbCBkaXNwbGF5IHRoZSBudW1iZXIgb2YgQ0RCcyBhdmFpbGFibGUgZm9yIGVhY2gKK2FkYXB0ZXIgZGV0ZWN0ZWQuIFRoZSBudW1iZXIgb2YgQ0RCcyB1c2VkIGJ5IHRoZSBkcml2ZXIgY2FuIGJlCitsb3dlcmVkIGluIHRoZSBCSU9TIGJ5IGNoYW5naW5nIHRoZSAnSG9zdCBRdWV1ZSBTaXplJyBhZGFwdGVyIHNldHRpbmcuCisKK0xhcHRvcCBQcm9kdWN0czoKKyAgIEFCUC00ODAgLSBCdXMtTWFzdGVyIENhcmRCdXMgKDE2IENEQikKKworQ29ubmVjdGl2aXR5IFByb2R1Y3RzOgorICAgQUJQNTEwLzUxNTAgLSBCdXMtTWFzdGVyIElTQSAoMjQwIENEQikKKyAgIEFCUDUxNDAgLSBCdXMtTWFzdGVyIElTQSBQblAgKDE2IENEQikKKyAgIEFCUDUxNDIgLSBCdXMtTWFzdGVyIElTQSBQblAgd2l0aCBmbG9wcHkgKDE2IENEQikKKyAgIEFCUDkwMi8zOTAyIC0gQnVzLU1hc3RlciBQQ0kgKDE2IENEQikKKyAgIEFCUDM5MDUgLSBCdXMtTWFzdGVyIFBDSSAoMTYgQ0RCKQorICAgQUJQOTE1IC0gQnVzLU1hc3RlciBQQ0kgKDE2IENEQikKKyAgIEFCUDkyMCAtIEJ1cy1NYXN0ZXIgUENJICgxNiBDREIpCisgICBBQlAzOTIyIC0gQnVzLU1hc3RlciBQQ0kgKDE2IENEQikKKyAgIEFCUDM5MjUgLSBCdXMtTWFzdGVyIFBDSSAoMTYgQ0RCKQorICAgQUJQOTMwIC0gQnVzLU1hc3RlciBQQ0kgKDE2IENEQikKKyAgIEFCUDkzMFUgLSBCdXMtTWFzdGVyIFBDSSBVbHRyYSAoMTYgQ0RCKQorICAgQUJQOTMwVUEgLSBCdXMtTWFzdGVyIFBDSSBVbHRyYSAoMTYgQ0RCKQorICAgQUJQOTYwIC0gQnVzLU1hc3RlciBQQ0kgTUFDL1BDICgxNiBDREIpCisgICBBQlA5NjBVIC0gQnVzLU1hc3RlciBQQ0kgTUFDL1BDIFVsdHJhICgxNiBDREIpCisKK1NpbmdsZSBDaGFubmVsIFByb2R1Y3RzOgorICAgQUJQNTQyIC0gQnVzLU1hc3RlciBJU0Egd2l0aCBmbG9wcHkgKDI0MCBDREIpCisgICBBQlA3NDIgLSBCdXMtTWFzdGVyIEVJU0EgKDI0MCBDREIpCisgICBBQlA4NDIgLSBCdXMtTWFzdGVyIFZMICgyNDAgQ0RCKQorICAgQUJQOTQwIC0gQnVzLU1hc3RlciBQQ0kgKDI0MCBDREIpCisgICBBQlA5NDBVIC0gQnVzLU1hc3RlciBQQ0kgVWx0cmEgKDI0MCBDREIpCisgICBBQlA5NDBVQS8zOTQwVUEgLSBCdXMtTWFzdGVyIFBDSSBVbHRyYSAoMjQwIENEQikKKyAgIEFCUDk3MCAtIEJ1cy1NYXN0ZXIgUENJIE1BQy9QQyAoMjQwIENEQikKKyAgIEFCUDk3MFUgLSBCdXMtTWFzdGVyIFBDSSBNQUMvUEMgVWx0cmEgKDI0MCBDREIpCisgICBBQlAzOTYwVUEgLSBCdXMtTWFzdGVyIFBDSSBNQUMvUEMgVWx0cmEgKDI0MCBDREIpCisgICBBQlA5NDBVVy8zOTQwVVcgLSBCdXMtTWFzdGVyIFBDSSBVbHRyYS1XaWRlICgyNTMgQ0RCKQorICAgQUJQOTcwVVcgLSBCdXMtTWFzdGVyIFBDSSBNQUMvUEMgVWx0cmEtV2lkZSAoMjUzIENEQikKKyAgIEFCUDM5NDBVMlcgLSBCdXMtTWFzdGVyIFBDSSBMVkQvVWx0cmEyLVdpZGUgKDI1MyBDREIpCisKK011bHRpLUNoYW5uZWwgUHJvZHVjdHM6CisgICBBQlA3NTIgLSBEdWFsIENoYW5uZWwgQnVzLU1hc3RlciBFSVNBICgyNDAgQ0RCIFBlciBDaGFubmVsKQorICAgQUJQODUyIC0gRHVhbCBDaGFubmVsIEJ1cy1NYXN0ZXIgVkwgKDI0MCBDREIgUGVyIENoYW5uZWwpCisgICBBQlA5NTAgLSBEdWFsIENoYW5uZWwgQnVzLU1hc3RlciBQQ0kgKDI0MCBDREIgUGVyIENoYW5uZWwpCisgICBBQlA5NTBVVyAtIER1YWwgQ2hhbm5lbCBCdXMtTWFzdGVyIFBDSSBVbHRyYS1XaWRlICgyNTMgQ0RCIFBlciBDaGFubmVsKQorICAgQUJQOTgwIC0gRm91ciBDaGFubmVsIEJ1cy1NYXN0ZXIgUENJICgyNDAgQ0RCIFBlciBDaGFubmVsKQorICAgQUJQOTgwVSAtIEZvdXIgQ2hhbm5lbCBCdXMtTWFzdGVyIFBDSSBVbHRyYSAoMjQwIENEQiBQZXIgQ2hhbm5lbCkKKyAgIEFCUDk4MFVBLzM5ODBVQSAtIEZvdXIgQ2hhbm5lbCBCdXMtTWFzdGVyIFBDSSBVbHRyYSAoMTYgQ0RCIFBlciBDaGFuLikKKyAgIEFCUDM5NTBVMlcgLSBCdXMtTWFzdGVyIFBDSSBMVkQvVWx0cmEyLVdpZGUgYW5kIFVsdHJhLVdpZGUgKDI1MyBDREIpCisgICBBQlAzOTUwVTNXIC0gQnVzLU1hc3RlciBQQ0kgRHVhbCBMVkQyL1VsdHJhMy1XaWRlICgyNTMgQ0RCKQorCitEcml2ZXIgQ29tcGlsZSBUaW1lIE9wdGlvbnMgYW5kIERlYnVnZ2luZworCitUaGUgZm9sbG93aW5nIGNvbnN0YW50cyBjYW4gYmUgZGVmaW5lZCBpbiB0aGUgc291cmNlIGZpbGUuCisKKzEuIEFEVkFOU1lTX0FTU0VSVCAtIEVuYWJsZSBkcml2ZXIgYXNzZXJ0aW9ucyAoRGVmOiBFbmFibGVkKQorCisgICBFbmFibGluZyB0aGlzIG9wdGlvbiBhZGRzIGFzc2VydGlvbiBsb2dpYyBzdGF0ZW1lbnRzIHRvIHRoZQorICAgZHJpdmVyLiBJZiBhbiBhc3NlcnRpb24gZmFpbHMgYSBtZXNzYWdlIHdpbGwgYmUgZGlzcGxheWVkIHRvCisgICB0aGUgY29uc29sZSwgYnV0IHRoZSBzeXN0ZW0gd2lsbCBjb250aW51ZSB0byBvcGVyYXRlLiBBbnkKKyAgIGFzc2VydGlvbnMgZW5jb3VudGVyZWQgc2hvdWxkIGJlIHJlcG9ydGVkIHRvIHRoZSBwZXJzb24KKyAgIHJlc3BvbnNpYmxlIGZvciB0aGUgZHJpdmVyLiBBc3NlcnRpb24gc3RhdGVtZW50cyBtYXkgcHJvYWN0aXZlbHkKKyAgIGRldGVjdCBwcm9ibGVtcyB3aXRoIHRoZSBkcml2ZXIgYW5kIGZhY2lsaXRhdGUgZml4aW5nIHRoZXNlCisgICBwcm9ibGVtcy4gRW5hYmxpbmcgYXNzZXJ0aW9ucyB3aWxsIGFkZCBhIHNtYWxsIG92ZXJoZWFkIHRvIHRoZQorICAgZXhlY3V0aW9uIG9mIHRoZSBkcml2ZXIuCisKKzIuIEFEVkFOU1lTX0RFQlVHIC0gRW5hYmxlIGRyaXZlciBkZWJ1Z2dpbmcgKERlZjogRGlzYWJsZWQpCisKKyAgIEVuYWJsaW5nIHRoaXMgb3B0aW9uIGFkZHMgdHJhY2luZyBmdW5jdGlvbnMgdG8gdGhlIGRyaXZlciBhbmQgdGhlCisgICBhYmlsaXR5IHRvIHNldCBhIGRyaXZlciB0cmFjaW5nIGxldmVsIGF0IGJvb3QgdGltZS4gIFRoaXMgb3B0aW9uIGlzCisgICB2ZXJ5IHVzZWZ1bCBmb3IgZGVidWdnaW5nIHRoZSBkcml2ZXIsIGJ1dCBpdCB3aWxsIGFkZCB0byB0aGUgc2l6ZQorICAgb2YgdGhlIGRyaXZlciBleGVjdXRpb24gaW1hZ2UgYW5kIGFkZCBvdmVyaGVhZCB0byB0aGUgZXhlY3V0aW9uIG9mCisgICB0aGUgZHJpdmVyLgorCisgICBUaGUgYW1vdW50IG9mIGRlYnVnZ2luZyBvdXRwdXQgY2FuIGJlIGNvbnRyb2xsZWQgd2l0aCB0aGUgZ2xvYmFsCisgICB2YXJpYWJsZSAnYXNjX2RiZ2x2bCcuIFRoZSBoaWdoZXIgdGhlIG51bWJlciB0aGUgbW9yZSBvdXRwdXQuIEJ5CisgICBkZWZhdWx0IHRoZSBkZWJ1ZyBsZXZlbCBpcyAwLgorCisgICBJZiB0aGUgZHJpdmVyIGlzIGxvYWRlZCBhdCBib290IHRpbWUgYW5kIHRoZSBMSUxPIERyaXZlciBPcHRpb24KKyAgIGlzIGluY2x1ZGVkIGluIHRoZSBzeXN0ZW0sIHRoZSBkZWJ1ZyBsZXZlbCBjYW4gYmUgY2hhbmdlZCBieQorICAgc3BlY2lmeWluZyBhIDV0aCAoQVNDX05VTV9JT1BPUlRfUFJPQkUgKyAxKSBJL08gUG9ydC4gVGhlCisgICBmaXJzdCB0aHJlZSBoZXggZGlnaXRzIG9mIHRoZSBwc2V1ZG8gSS9PIFBvcnQgbXVzdCBiZSBzZXQgdG8KKyAgICdkZWInIGFuZCB0aGUgZm91cnRoIGhleCBkaWdpdCBzcGVjaWZpZXMgdGhlIGRlYnVnIGxldmVsOiAwIC0gRi4KKyAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBsaW5lIHdpbGwgbG9vayBmb3IgYW4gYWRhcHRlciBhdCAweDMzMAorICAgYW5kIHNldCB0aGUgZGVidWcgbGV2ZWwgdG8gMi4KKworICAgICAgbGludXggYWR2YW5zeXM9MHgzMzAsMCwwLDAsMHhkZWIyCisKKyAgIElmIHRoZSBkcml2ZXIgaXMgYnVpbHQgYXMgYSBsb2FkYWJsZSBtb2R1bGUgdGhpcyB2YXJpYWJsZSBjYW4gYmUKKyAgIGRlZmluZWQgd2hlbiB0aGUgZHJpdmVyIGlzIGxvYWRlZC4gVGhlIGZvbGxvd2luZyBpbnNtb2QgY29tbWFuZAorICAgd2lsbCBzZXQgdGhlIGRlYnVnIGxldmVsIHRvIG9uZS4KKworICAgICAgaW5zbW9kIGFkdmFuc3lzLm8gYXNjX2RiZ2x2bD0xCisKKyAgIERlYnVnZ2luZyBNZXNzYWdlIExldmVsczoKKyAgICAgIDA6IEVycm9ycyBPbmx5CisgICAgICAxOiBIaWdoLUxldmVsIFRyYWNpbmcKKyAgICAgIDItTjogVmVyYm9zZSBUcmFjaW5nCisKKyAgIFRvIGVuYWJsZSBkZWJ1ZyBvdXRwdXQgdG8gY29uc29sZSwgcGxlYXNlIG1ha2Ugc3VyZSB0aGF0OgorCisgICBhLiBTeXN0ZW0gYW5kIGtlcm5lbCBsb2dnaW5nIGlzIGVuYWJsZWQgKHN5c2xvZ2QsIGtsb2dkIHJ1bm5pbmcpLgorICAgYi4gS2VybmVsIG1lc3NhZ2VzIGFyZSByb3V0ZWQgdG8gY29uc29sZSBvdXRwdXQuIENoZWNrCisgICAgICAvZXRjL3N5c2xvZy5jb25mIGZvciBhbiBlbnRyeSBzaW1pbGFyIHRvIHRoaXM6CisKKyAgICAgICAgICAga2Vybi4qICAgICAgICAgICAgICAgICAgL2Rldi9jb25zb2xlCisKKyAgIGMuIGtsb2dkIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgYXBwcm9wcmlhdGUgLWMgcGFyYW1ldGVyCisgICAgICAoZS5nLiBrbG9nZCAtYyA4KQorCisgICBUaGlzIHdpbGwgY2F1c2UgcHJpbnRrKCkgbWVzc2FnZXMgdG8gYmUgYmUgZGlzcGxheWVkIG9uIHRoZQorICAgY3VycmVudCBjb25zb2xlLiBSZWZlciB0byB0aGUga2xvZ2QoOCkgYW5kIHN5c2xvZ2QoOCkgbWFuIHBhZ2VzCisgICBmb3IgZGV0YWlscy4KKworICAgQWx0ZXJuYXRpdmVseSB5b3UgY2FuIGVuYWJsZSBwcmludGsoKSB0byBjb25zb2xlIHdpdGggdGhpcworICAgcHJvZ3JhbS4gSG93ZXZlciwgdGhpcyBpcyBub3QgdGhlICdvZmZpY2lhbCcgd2F5IHRvIGRvIHRoaXMuCisgICBEZWJ1ZyBvdXRwdXQgaXMgbG9nZ2VkIGluIC92YXIvbG9nL21lc3NhZ2VzLgorCisgICAgIG1haW4oKQorICAgICB7CisgICAgICAgICAgICAgc3lzY2FsbCgxMDMsIDcsIDAsIDApOworICAgICB9CisKKyAgIEluY3JlYXNpbmcgTE9HX0JVRl9MRU4gaW4ga2VybmVsL3ByaW50ay5jIHRvIHNvbWV0aGluZyBsaWtlCisgICA0MDk2MCBhbGxvd3MgbW9yZSBkZWJ1ZyBtZXNzYWdlcyB0byBiZSBidWZmZXJlZCBpbiB0aGUga2VybmVsCisgICBhbmQgd3JpdHRlbiB0byB0aGUgY29uc29sZSBvciBsb2cgZmlsZS4KKworMy4gQURWQU5TWVNfU1RBVFMgLSBFbmFibGUgc3RhdGlzdGljcyAoRGVmOiBFbmFibGVkKQorCisgICBFbmFibGluZyB0aGlzIG9wdGlvbiBhZGRzIHN0YXRpc3RpY3MgY29sbGVjdGlvbiBhbmQgZGlzcGxheQorICAgdGhyb3VnaCAvcHJvYyB0byB0aGUgZHJpdmVyLiBUaGUgaW5mb3JtYXRpb24gaXMgdXNlZnVsIGZvcgorICAgbW9uaXRvcmluZyBkcml2ZXIgYW5kIGRldmljZSBwZXJmb3JtYW5jZS4gSXQgd2lsbCBhZGQgdG8gdGhlCisgICBzaXplIG9mIHRoZSBkcml2ZXIgZXhlY3V0aW9uIGltYWdlIGFuZCBhZGQgbWlub3Igb3ZlcmhlYWQgdG8KKyAgIHRoZSBleGVjdXRpb24gb2YgdGhlIGRyaXZlci4KKworICAgU3RhdGlzdGljcyBhcmUgbWFpbnRhaW5lZCBvbiBhIHBlciBhZGFwdGVyIGJhc2lzLiBEcml2ZXIgZW50cnkKKyAgIHBvaW50IGNhbGwgY291bnRzIGFuZCB0cmFuc2ZlciBzaXplIGNvdW50cyBhcmUgbWFpbnRhaW5lZC4KKyAgIFN0YXRpc3RpY3MgYXJlIG9ubHkgYXZhaWxhYmxlIGZvciBrZXJuZWxzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbAorICAgdG8gdjEuMy4wIHdpdGggdGhlIENPTkZJR19QUk9DX0ZTICgvcHJvYykgZmlsZSBzeXN0ZW0gY29uZmlndXJlZC4KKworICAgQWR2YW5TeXMgU0NTSSBhZGFwdGVyIGZpbGVzIGhhdmUgdGhlIGZvbGxvd2luZyBwYXRoIG5hbWUgZm9ybWF0OgorCisgICAgICAvcHJvYy9zY3NpL2FkdmFuc3lzL3swLDEsMiwzLC4uLn0KKworICAgVGhpcyBpbmZvcm1hdGlvbiBjYW4gYmUgZGlzcGxheWVkIHdpdGggY2F0LiBGb3IgZXhhbXBsZToKKworICAgICAgY2F0IC9wcm9jL3Njc2kvYWR2YW5zeXMvMAorCisgICBXaGVuIEFEVkFOU1lTX1NUQVRTIGlzIG5vdCBkZWZpbmVkIHRoZSBBZHZhblN5cyAvcHJvYyBmaWxlcyBvbmx5CisgICBjb250YWluIGFkYXB0ZXIgYW5kIGRldmljZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLgorCitEcml2ZXIgTElMTyBPcHRpb24KKworSWYgaW5pdC9tYWluLmMgaXMgbW9kaWZpZWQgYXMgZGVzY3JpYmVkIGluIHRoZSAnRGlyZWN0aW9ucyBmb3IgQWRkaW5nCit0aGUgQWR2YW5TeXMgRHJpdmVyIHRvIExpbnV4JyBzZWN0aW9uIChCLjQuKSBhYm92ZSwgdGhlIGRyaXZlciB3aWxsCityZWNvZ25pemUgdGhlICdhZHZhbnN5cycgTElMTyBjb21tYW5kIGxpbmUgYW5kIC9ldGMvbGlsby5jb25mIG9wdGlvbi4KK1RoaXMgb3B0aW9uIGNhbiBiZSB1c2VkIHRvIGVpdGhlciBkaXNhYmxlIEkvTyBwb3J0IHNjYW5uaW5nIG9yIHRvIGxpbWl0CitzY2FubmluZyB0byAxIC0gNCBJL08gcG9ydHMuIFJlZ2FyZGxlc3Mgb2YgdGhlIG9wdGlvbiBzZXR0aW5nIEVJU0EgYW5kCitQQ0kgYm9hcmRzIHdpbGwgc3RpbGwgYmUgc2VhcmNoZWQgZm9yIGFuZCBkZXRlY3RlZC4gVGhpcyBvcHRpb24gb25seQorYWZmZWN0cyBzZWFyY2hpbmcgZm9yIElTQSBhbmQgVkwgYm9hcmRzLgorCitFeGFtcGxlczoKKyAgMS4gRWxpbWluYXRlIEkvTyBwb3J0IHNjYW5uaW5nOgorICAgICAgIGJvb3Q6IGxpbnV4IGFkdmFuc3lzPQorICAgICAgICAgb3IKKyAgICAgICBib290OiBsaW51eCBhZHZhbnN5cz0weDAKKyAgMi4gTGltaXQgSS9PIHBvcnQgc2Nhbm5pbmcgdG8gb25lIEkvTyBwb3J0OgorICAgICAgIGJvb3Q6IGxpbnV4IGFkdmFuc3lzPTB4MTEwCisgIDMuIExpbWl0IEkvTyBwb3J0IHNjYW5uaW5nIHRvIGZvdXIgSS9PIHBvcnRzOgorICAgICAgIGJvb3Q6IGxpbnV4IGFkdmFuc3lzPTB4MTEwLDB4MjEwLDB4MjMwLDB4MzMwCisKK0ZvciBhIGxvYWRhYmxlIG1vZHVsZSB0aGUgc2FtZSBlZmZlY3QgY2FuIGJlIGFjaGlldmVkIGJ5IHNldHRpbmcKK3RoZSAnYXNjX2lvcGZsYWcnIHZhcmlhYmxlIGFuZCAnYXNjX2lvcG9ydCcgYXJyYXkgd2hlbiBsb2FkaW5nCit0aGUgZHJpdmVyLCBlLmcuCisKKyAgICAgIGluc21vZCBhZHZhbnN5cy5vIGFzY19pb3BmbGFnPTEgYXNjX2lvcG9ydD0weDExMCwweDMzMAorCitJZiBBRFZBTlNZU19ERUJVRyBpcyBkZWZpbmVkIGEgNXRoIChBU0NfTlVNX0lPUE9SVF9QUk9CRSArIDEpCitJL08gUG9ydCBtYXkgYmUgYWRkZWQgdG8gc3BlY2lmeSB0aGUgZHJpdmVyIGRlYnVnIGxldmVsLiBSZWZlciB0bwordGhlICdEcml2ZXIgQ29tcGlsZSBUaW1lIE9wdGlvbnMgYW5kIERlYnVnZ2luZycgc2VjdGlvbiBhYm92ZSBmb3IKK21vcmUgaW5mb3JtYXRpb24uCisKK0NyZWRpdHMgKENocm9ub2xvZ2ljYWwgT3JkZXIpCisKK0JvYiBGcmV5IDxiZnJleUB0dXJib2xpbnV4LmNvbS5jbj4gd3JvdGUgdGhlIEFkdmFuU3lzIFNDU0kgZHJpdmVyCithbmQgbWFpbnRhaW5lZCBpdCB1cCB0byAzLjNGLiBIZSBjb250aW51ZXMgdG8gYW5zd2VyIHF1ZXN0aW9ucworYW5kIGhlbHAgbWFpbnRhaW4gdGhlIGRyaXZlci4KKworTmF0aGFuIEhhcnR3ZWxsIDxtYWdlQGNkYzMuY2RjLm5ldD4gcHJvdmlkZWQgdGhlIGRpcmVjdGlvbnMgYW5kCitiYXNpcyBmb3IgdGhlIExpbnV4IHYxLjMuWCBjaGFuZ2VzIHdoaWNoIHdlcmUgaW5jbHVkZWQgaW4gdGhlCisxLjIgcmVsZWFzZS4KKworVGhvbWFzIEUgWmVydWNoYSA8emVydWNoYUBzaGVsbC5wb3J0YWwuY29tPiBwb2ludGVkIG91dCBhIGJ1ZworaW4gYWR2YW5zeXNfYmlvc3BhcmFtKCkgd2hpY2ggd2FzIGZpeGVkIGluIHRoZSAxLjMgcmVsZWFzZS4KKworRXJpayBSYXRjbGlmZmUgPGVyaWtAY2FsZGVyYS5jb20+IGhhcyBkb25lIHRlc3Rpbmcgb2YgdGhlCitBZHZhblN5cyBkcml2ZXIgaW4gdGhlIENhbGRlcmEgcmVsZWFzZXMuCisKK1JpayB2YW4gUmllbCA8SC5ILnZhblJpZWxAZnlzLnJ1dS5ubD4gcHJvdmlkZWQgYSBwYXRjaCB0bworQXNjV2FpdFRpeElTUkRvbmUoKSB3aGljaCBoZSBmb3VuZCBuZWNlc3NhcnkgdG8gbWFrZSB0aGUKK2RyaXZlciB3b3JrIHdpdGggYSBTQ1NJLTEgZGlzay4KKworTWFyayBNb3JhbiA8bW1vcmFuQG1tb3Jhbi5jb20+IGhhcyBoZWxwZWQgdGVzdCBVbHRyYS1XaWRlCitzdXBwb3J0IGluIHRoZSAzLjFBIGRyaXZlci4KKworRG91ZyBHaWxiZXJ0IDxkZ2lsYmVydEBpbnRlcmxvZy5jb20+IGhhcyBtYWRlIGNoYW5nZXMgYW5kCitzdWdnZXN0aW9ucyB0byBpbXByb3ZlIHRoZSBkcml2ZXIgYW5kIGRvbmUgYSBsb3Qgb2YgdGVzdGluZy4KKworS2VuIE1vcnQgPGtlbkBtb3J0Lm5ldD4gcmVwb3J0ZWQgYSBERUJVRyBjb21waWxlIGJ1ZyBmaXhlZAoraW4gMy4ySy4KKworVG9tIFJpbmkgPHRyaW5pQGtlcm5lbC5jcmFzaGluZy5vcmc+IHByb3ZpZGVkIHRoZSBDT05GSUdfSVNBCitwYXRjaCBhbmQgaGVscGVkIHdpdGggUG93ZXJQQyB3aWRlIGFuZCBuYXJyb3cgYm9hcmQgc3VwcG9ydC4KKworUGhpbGlwIEJsdW5kZWxsIDxwaGlsYkBnbnUub3JnPiBwcm92aWRlZCBhbgorYWR2YW5zeXNfaW50ZXJydXB0c19lbmFibGVkIHBhdGNoLgorCitEYXZlIEpvbmVzIDxkYXZlQGRlbmlhbC5mb3JjZTkuY28udWs+IHJlcG9ydGVkIHRoZSBjb21waWxlcgord2FybmluZ3MgZ2VuZXJhdGVkIHdoZW4gQ09ORklHX1BST0NfRlMgd2FzIG5vdCBkZWZpbmVkIGluCit0aGUgMy4yTSBkcml2ZXIuCisKK0plcnJ5IFF1aW5uIDxqbHF1aW5uQHVzLmlibS5jb20+IGZpeGVkIFBvd2VyUEMgc3VwcG9ydCAoZW5kaWFuCitwcm9ibGVtcykgZm9yIHdpZGUgY2FyZHMuCisKK0JyeWFuIEhlbmRlcnNvbiA8YnJ5YW5oQGdpcmFmZmUtZGF0YS5jb20+IGhlbHBlZCBkZWJ1ZyBuYXJyb3cKK2NhcmQgZXJyb3IgaGFuZGxpbmcuCisKK01hbnVlbCBWZWxvc28gPHZlbG9zb0Bwb2JveC5jb20+IHdvcmtlZCBoYXJkIG9uIFBvd2VyUEMgbmFycm93Citib2FyZCBzdXBwb3J0IGFuZCBmaXhlZCBhIGJ1ZyBpbiBBc2NHZXRFRVBDb25maWcoKS4KKworQXJuYWxkbyBDYXJ2YWxobyBkZSBNZWxvIDxhY21lQGNvbmVjdGl2YS5jb20uYnI+IG1hZGUKK3NhdmVfZmxhZ3MvcmVzdG9yZV9mbGFncyBjaGFuZ2VzLgorCitBbmR5IEtlbGxuZXIgPEFLZWxsbmVyQGNvbm5lY3Rjb20ubmV0PiBjb250aW51ZWQgdGhlIEFkdmFuc3lzIFNDU0kKK2RyaXZlciBkZXZlbG9wbWVudCBmb3IgQ29ubmVjdENvbSAoVmVyc2lvbiA+IDMuM0YpLgorCitLZW4gV2l0aGVyb3cgZm9yIGV4dGVuc2l2ZSB0ZXN0aW5nIGR1cmluZyB0aGUgZGV2ZWxvcG1lbnQgb2YgdmVyc2lvbiAzLjQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvYWhhMTUyeC50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvYWhhMTUyeC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ4NDg3MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2NzaS9haGExNTJ4LnR4dApAQCAtMCwwICsxLDE4MyBAQAorJElkOiBSRUFETUUuYWhhMTUyeCx2IDEuMiAxOTk5LzEyLzI1IDE1OjMyOjMwIGZpc2NoZXIgRXhwIGZpc2NoZXIgJAorQWRhcHRlYyBBSEEtMTUyMC8xNTIyIFNDU0kgZHJpdmVyIGZvciBMaW51eCAoYWhhMTUyeCkKKworQ29weXJpZ2h0IDE5OTMtMTk5OSBKw7xyZ2VuIEZpc2NoZXIgPGZpc2NoZXJAbm9yYml0LmRlPgorVEMxNTUwIHBhdGNoZXMgYnkgTHV1ayB2YW4gRGlqayAobGR6QHhzNGFsbC5ubCkKKworCitJbiBSZXZpc2lvbiAyIHRoZSBkcml2ZXIgd2FzIG1vZGlmaWVkIGEgbG90IChlc3BlY2lhbGx5IHRoZQorYm90dG9tLWhhbGYgaGFuZGxlciBjb21wbGV0ZSgpKS4KKworVGhlIGRyaXZlciBpcyBtdWNoIGNsZWFuZXIgbm93LCBoYXMgc3VwcG9ydCBmb3IgdGhlIG5ldworZXJyb3IgaGFuZGxpbmcgY29kZSBpbiAyLjMsIHByb2R1Y2VkIGxlc3MgY3B1IGxvYWQgKG11Y2gKK2xlc3MgcG9sbGluZyBsb29wcyksIGhhcyBzbGlnaHRseSBoaWdoZXIgdGhyb3VnaHB1dCAoYXQKK2xlYXN0IG9uIG15IGFuY2llbnQgdGVzdCBib3g7IGEgaTQ4Ni8zM01oei8yME1CKS4KKworCitDT05GSUdVUkFUSU9OIEFSR1VNRU5UUzoKKworSU9QT1JUICAgICAgICBiYXNlIGlvIGFkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgzNDAvMHgxNDApCitJUlEgICAgICAgICAgIGludGVycnVwdCBsZXZlbCAgICAgICAgICAgICAgICAgICAgICAgICAgICg5LTEyOyBkZWZhdWx0IDExKQorU0NTSV9JRCAgICAgICBzY3NpIGlkIG9mIGNvbnRyb2xsZXIgICAgICAgICAgICAgICAgICAgICAoMC03OyBkZWZhdWx0IDcpCitSRUNPTk5FQ1QgICAgIGFsbG93IHRhcmdldHMgdG8gZGlzY29ubmVjdCBmcm9tIHRoZSBidXMgICgwLzE7IGRlZmF1bHQgMSBbb25dKQorUEFSSVRZICAgICAgICBlbmFibGUgcGFyaXR5IGNoZWNraW5nICAgICAgICAgICAgICAgICAgICAoMC8xOyBkZWZhdWx0IDEgW29uXSkKK1NZTkNIUk9OT1VTICAgZW5hYmxlIHN5bmNocm9ub3VzIHRyYW5zZmVycyAgICAgICAgICAgICAgKDAvMTsgZGVmYXVsdCAxIFtvbl0pCitERUxBWTogICAgICAgIGJ1cyByZXNldCBkZWxheSAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IDEwMCkKK0VYVF9UUkFOUzogICAgZW5hYmxlIGV4dGVuZGVkIHRyYW5zbGF0aW9uICAgICAgICAgICAgICAgKDAvMTogZGVmYXVsdCAwIFtvZmZdKQorICAgICAgICAgICAgICAoc2VlIE5PVEVTKQorCitDT01QSUxFIFRJTUUgQ09ORklHVVJBVElPTiAoZ28gaW50byBBSEExNTJYIGluIGRyaXZlcnMvc2NzaS9NYWtlZmlsZSk6CisKKy1EQVVUT0NPTkYKKyB1c2UgY29uZmlndXJhdGlvbiB0aGUgY29udHJvbGxlciByZXBvcnRzIChBSEEtMTUyeCBvbmx5KQorCistRFNLSVBfQklPU1RFU1QKKyBEb24ndCB0ZXN0IGZvciBCSU9TIHNpZ25hdHVyZSAoQUhBLTE1MTAgb3IgZGlzYWJsZWQgQklPUykKKworLURTRVRVUDA9InsgSU9QT1JULCBJUlEsIFNDU0lfSUQsIFJFQ09OTkVDVCwgUEFSSVRZLCBTWU5DSFJPTk9VUywgREVMQVksIEVYVF9UUkFOUyB9IgorIG92ZXJyaWRlIGZvciB0aGUgZmlyc3QgY29udHJvbGxlciAKKworLURTRVRVUDE9InsgSU9QT1JULCBJUlEsIFNDU0lfSUQsIFJFQ09OTkVDVCwgUEFSSVRZLCBTWU5DSFJPTk9VUywgREVMQVksIEVYVF9UUkFOUyB9IgorIG92ZXJyaWRlIGZvciB0aGUgc2Vjb25kIGNvbnRyb2xsZXIKKworLURBSEExNTJYX0RFQlVHCisgZW5hYmxlIGRlYnVnZ2luZyBvdXRwdXQKKworLURBSEExNTJYX1NUQVQKKyBlbmFibGUgc29tZSBzdGF0aXN0aWNzCisKKworTElMTyBDT01NQU5EIExJTkUgT1BUSU9OUzoKKworYWhhMTUyeD08SU9QT1JUPlssPElSUT5bLDxTQ1NJLUlEPlssPFJFQ09OTkVDVD5bLDxQQVJJVFk+Wyw8U1lOQ0hST05PVVM+Wyw8REVMQVk+IFssPEVYVF9UUkFOU11dXV1dXV0KKworIFRoZSBub3JtYWwgY29uZmlndXJhdGlvbiBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzcGVjaWZ5aW5nIGEgY29tbWFuZCBsaW5lLgorIFdoZW4geW91IGRvIHRoaXMsIHRoZSBCSU9TIHRlc3QgaXMgc2tpcHBlZC4gRW50ZXJlZCB2YWx1ZXMgaGF2ZSB0byBiZQorIHZhbGlkIChrbm93bikuICBEb24ndCB1c2UgdmFsdWVzIHRoYXQgYXJlbid0IHN1cHBvcnRlZCB1bmRlciBub3JtYWwKKyBvcGVyYXRpb24uICBJZiB5b3UgdGhpbmsgdGhhdCB5b3UgbmVlZCBvdGhlciB2YWx1ZXM6IGNvbnRhY3QgbWUuCisgRm9yIHR3byBjb250cm9sbGVycyB1c2UgdGhlIGFoYTE1Mnggc3RhdGVtZW50IHR3aWNlLgorCisKK1NZTUJPTFMgRk9SIE1PRFVMRSBDT05GSUdVUkFUSU9OOgorCitDaG9vc2UgZnJvbSAyIGFsdGVybmF0aXZlczoKKworMS4gc3BlY2lmeSBldmVyeXRoaW5nIChvbGQpCisKK2FoYTE1Mng9SU9QT1JULElSUSxTQ1NJX0lELFJFQ09OTkVDVCxQQVJJVFksU1lOQ0hST05PVVMsREVMQVksRVhUX1RSQU5TCisgIGNvbmZpZ3VyYXRpb24gb3ZlcnJpZGUgZm9yIGZpcnN0IGNvbnRyb2xsZXIKKworCithaGExNTJ4MT1JT1BPUlQsSVJRLFNDU0lfSUQsUkVDT05ORUNULFBBUklUWSxTWU5DSFJPTk9VUyxERUxBWSxFWFRfVFJBTlMKKyAgY29uZmlndXJhdGlvbiBvdmVycmlkZSBmb3Igc2Vjb25kIGNvbnRyb2xsZXIKKworMi4gc3BlY2lmeSBvbmx5IHdoYXQgeW91IG5lZWQgdG8gKGlycSBvciBpbyBpcyByZXF1aXJlZDsgbmV3KQorCitpbz1JT1BPUlQwWyxJT1BPUlQxXQorICBJT1BPUlQgZm9yIGZpcnN0IGFuZCBzZWNvbmQgY29udHJvbGxlcgorCitpcnE9SVJRMFssSVJRMV0KKyAgSVJRIGZvciBmaXJzdCBhbmQgc2Vjb25kIGNvbnRyb2xsZXIKKworc2NzaWlkPVNDU0lJRDBbLFNDU0lJRDFdCisgIFNDU0lJRCBmb3IgZmlyc3QgYW5kIHNlY29uZCBjb250cm9sbGVyCisKK3JlY29ubmVjdD1SRUNPTk5FQ1QwWyxSRUNPTk5FQ1QxXQorICBhbGxvdyB0YXJnZXRzIHRvIGRpc2Nvbm5lY3QgZm9yIGZpcnN0IGFuZCBzZWNvbmQgY29udHJvbGxlcgorCitwYXJpdHk9UEFSMFtQQVIxXQorICB1c2UgcGFyaXR5IGZvciBmaXJzdCBhbmQgc2Vjb25kIGNvbnRyb2xsZXIKKworc3luYz1TWU5DSFJPTk9VUzBbLFNZTkNIUk9OT1VTMV0KKyAgZW5hYmxlIHN5bmNocm9ub3VzIHRyYW5zZmVycyBmb3IgZmlyc3QgYW5kIHNlY29uZCBjb250cm9sbGVyCisKK2RlbGF5PURFTEFZMFssREVMQVkxXQorICByZXNldCBERUxBWSBmb3IgZmlyc3QgYW5kIHNlY29uZCBjb250cm9sbGVyCisKK2V4dHRyYW5zPUVYVFRSQU5TMFssRVhUVFJBTlMxXQorICBlbmFibGUgZXh0ZW5kZWQgdHJhbnNsYXRpb24gZm9yIGZpcnN0IGFuZCBzZWNvbmQgY29udHJvbGxlcgorCisKK0lmIHlvdSB1c2UgYm90aCBhbHRlcm5hdGl2ZXMgdGhlIGZpcnN0IHdpbGwgYmUgdGFrZW4uCisKKworTk9URVMgT04gRVhUX1RSQU5TOiAKKworU0NTSSB1c2VzIGJsb2NrIG51bWJlcnMgdG8gYWRkcmVzcyBibG9ja3Mvc2VjdG9ycyBvbiBhIGRldmljZS4KK1RoZSBCSU9TIHVzZXMgYSBjeWxpbmRlci9oZWFkL3NlY3RvciBhZGRyZXNzaW5nIHNjaGVtZSAoQy9IL1MpCitzY2hlbWUgaW5zdGVhZC4gIERPUyBleHBlY3RzIGEgQklPUyBvciBkcml2ZXIgdGhhdCB1bmRlcnN0YW5kcyB0aGlzCitDL0gvUyBhZGRyZXNzaW5nLgorCitUaGUgbnVtYmVyIG9mIGN5bGluZGVycy9oZWFkcy9zZWN0b3JzIGlzIGNhbGxlZCBnZW9tZXRyeSBhbmQgaXMgcmVxdWlyZWQKK2FzIGJhc2UgZm9yIHJlcXVlc3RzIGluIEMvSC9TIGFkZHJlc3NpbmcuICBTQ1NJIG9ubHkga25vd3MgYWJvdXQgdGhlCit0b3RhbCBjYXBhY2l0eSBvZiBkaXNrcyBpbiBibG9ja3MgKHNlY3RvcnMpLgorCitUaGVyZWZvcmUgdGhlIFNDU0kgQklPUy9ET1MgZHJpdmVyIGhhcyB0byBjYWxjdWxhdGUgYSBsb2dpY2FsL3ZpcnR1YWwKK2dlb21ldHJ5IGp1c3QgdG8gYmUgYWJsZSB0byBzdXBwb3J0IHRoYXQgYWRkcmVzc2luZyBzY2hlbWUuICBUaGUgZ2VvbWV0cnkKK3JldHVybmVkIGJ5IHRoZSBTQ1NJIEJJT1MgaXMgYSBwdXJlIGNhbGN1bGF0aW9uIGFuZCBoYXMgbm90aGluZyB0bworZG8gd2l0aCB0aGUgcmVhbC9waHlzaWNhbCBnZW9tZXRyeSBvZiB0aGUgZGlzayAod2hpY2ggaXMgdXN1YWxseQoraXJyZWxldmFudCBhbnl3YXkpLgorCitCYXNpY2FsbHkgdGhpcyBoYXMgbm8gaW1wYWN0IGF0IGFsbCBvbiBMaW51eCwgYmVjYXVzZSBpdCBhbHNvIHVzZXMgYmxvY2sKK2luc3RlYWQgb2YgQy9IL1MgYWRkcmVzc2luZy4gIFVuZm9ydHVuYXRlbHkgQy9IL1MgYWRkcmVzc2luZyBpcyBhbHNvIHVzZWQKK2luIHRoZSBwYXJ0aXRpb24gdGFibGUgYW5kIHRoZXJlZm9yZSBldmVyeSBvcGVyYXRpbmcgc3lzdGVtIGhhcyB0byBrbm93Cit0aGUgcmlnaHQgZ2VvbWV0cnkgdG8gYmUgYWJsZSB0byBpbnRlcnByZXQgaXQuCisKK01vcmVvdmVyIHRoZXJlIGFyZSBjZXJ0YWluIGxpbWl0YXRpb25zIHRvIHRoZSBDL0gvUyBhZGRyZXNzaW5nIHNjaGVtZSwKK25hbWVseSB0aGUgYWRkcmVzcyBzcGFjZSBpcyBsaW1pdGVkIHRvIHVwIHRvIDI1NSBoZWFkcywgdXAgdG8gNjMgc2VjdG9ycworYW5kIGEgbWF4aW11bSBvZiAxMDIzIGN5bGluZGVycy4KKworVGhlIEFIQS0xNTIyIEJJT1MgY2FsY3VsYXRlcyB0aGUgZ2VvbWV0cnkgYnkgZml4aW5nIHRoZSBudW1iZXIgb2YgaGVhZHMKK3RvIDY0LCB0aGUgbnVtYmVyIG9mIHNlY3RvcnMgdG8gMzIgYW5kIGJ5IGNhbGN1bGF0aW5nIHRoZSBudW1iZXIgb2YKK2N5bGluZGVycyBieSBkaXZpZGluZyB0aGUgY2FwYWNpdHkgcmVwb3J0ZWQgYnkgdGhlIGRpc2sgYnkgNjQqMzIgKDEgTUIpLgorVGhpcyBpcyBjb25zaWRlcmVkIHRvIGJlIHRoZSBkZWZhdWx0IHRyYW5zbGF0aW9uLgorCitXaXRoIHJlc3BlY3QgdG8gdGhlIGxpbWl0IG9mIDEwMjMgY3lsaW5kZXJzIHVzaW5nIEMvSC9TIHlvdSBjYW4gb25seQorYWRkcmVzcyB0aGUgZmlyc3QgR0Igb2YgeW91ciBkaXNrIGluIHRoZSBwYXJ0aXRpb24gdGFibGUuICBUaGVyZWZvcmUKK0JJT1NlcyBvZiBzb21lIG5ld2VyIGNvbnRyb2xsZXJzIGJhc2VkIG9uIHRoZSBBSUMtNjI2MC82MzYwIHN1cHBvcnQKK2V4dGVuZGVkIHRyYW5zbGF0aW9uLiAgVGhpcyBtZWFucyB0aGF0IHRoZSBCSU9TIHVzZXMgMjU1IGZvciBoZWFkcywKKzYzIGZvciBzZWN0b3JzIGFuZCB0aGVuIGRpdmlkZXMgdGhlIGNhcGFjaXR5IG9mIHRoZSBkaXNrIGJ5IDI1NSo2MworKGFib3V0IDggTUIpLCBhcyBzb29uIGl0IHNlZXMgYSBkaXNrIGdyZWF0ZXIgdGhhbiAxIEdCLiAgVGhhdCByZXN1bHRzCitpbiBhIG1heGltdW0gb2YgYWJvdXQgOCBHQiBhZGRyZXNzYWJsZSBkaXNrc3BhY2UgaW4gdGhlIHBhcnRpdGlvbiB0YWJsZQorKGJ1dCB0aGVyZSBhcmUgYWxyZWFkeSBiaWdnZXIgZGlza3Mgb3V0IHRoZXJlIHRvZGF5KS4KKworVG8gbWFrZSBpdCBldmVuIG1vcmUgY29tcGxpY2F0ZWQgdGhlIHRyYW5zbGF0aW9uIG1vZGUgbWlnaHQvbWlnaHQKK25vdCBiZSBjb25maWd1cmFibGUgaW4gY2VydGFpbiBCSU9TIHNldHVwcy4KKworVGhpcyBkcml2ZXIgZG9lcyBzb21lIG1vcmUgb3IgbGVzcyBmYWlsc2FmZSBndWVzc2luZyB0byBnZXQgdGhlCitnZW9tZXRyeSByaWdodCBpbiBtb3N0IGNhc2VzOgorCistIGZvciBkaXNrczwxR0I6IHVzZSBkZWZhdWx0IHRyYW5zbGF0aW9uIChDLzMyLzY0KQorCistIGZvciBkaXNrcz4xR0I6CisgIC0gdGFrZSBjdXJyZW50IGdlb21ldHJ5IGZyb20gdGhlIHBhcnRpdGlvbiB0YWJsZQorICAgICh1c2luZyBzY3NpY2FtX2Jpb3NfcGFyYW0gYW5kIGFjY2VwdCBvbmx5IGB2YWxpZCcgZ2VvbWV0cmllcywKKyAgICBpZS4gZWl0aGVyIChDLzMyLzY0KSBvciAoQy82My8yNTUpKS4gIFRoaXMgY2FuIGJlIGV4dGVuZGVkIHRyYW5zbGF0aW9uCisgICAgZXZlbiBpZiBpdCdzIG5vdCBlbmFibGVkIGluIHRoZSBkcml2ZXIuCisKKyAgLSBpZiB0aGF0IGZhaWxzLCB0YWtlIGV4dGVuZGVkIHRyYW5zbGF0aW9uIGlmIGVuYWJsZWQgYnkgb3ZlcnJpZGUsCisgICAga2VybmVsIG9yIG1vZHVsZSBwYXJhbWV0ZXIsIG90aGVyd2lzZSB0YWtlIGRlZmF1bHQgdHJhbnNsYXRpb24gYW5kCisgICAgYXNrIHRoZSB1c2VyIGZvciB2ZXJpZmljYXRpb24uICBUaGlzIG1pZ2h0IG9uIG5vdCB5ZXQgcGFydGl0aW9uZWQKKyAgICBkaXNrcy4KKworCitSRUZFUkVOQ0VTIFVTRUQ6CisKKyAiQUlDLTYyNjAgU0NTSSBDaGlwIFNwZWNpZmljYXRpb24iLCBBZGFwdGVjIENvcnBvcmF0aW9uLgorCisgIlNDU0kgQ09NUFVURVIgU1lTVEVNIElOVEVSRkFDRSAtIDIgKFNDU0ktMikiLCBYM1Q5LjIvODYtMTA5IHJldi4gMTBoCisKKyAiV3JpdGluZyBhIFNDU0kgZGV2aWNlIGRyaXZlciBmb3IgTGludXgiLCBSaWsgRmFpdGggKGZhaXRoQGNzLnVuYy5lZHUpCisKKyAiS2VybmVsIEhhY2tlcidzIEd1aWRlIiwgTWljaGFlbCBLLiBKb2huc29uIChqb2huc29ubUBzdW5zaXRlLnVuYy5lZHUpCisKKyAiQWRhcHRlYyAxNTIwLzE1MjIgVXNlcidzIEd1aWRlIiwgQWRhcHRlYyBDb3Jwb3JhdGlvbi4KKworIE1pY2hhZWwgSy4gSm9obnNvbiAoam9obnNvbm1Ac3Vuc2l0ZS51bmMuZWR1KQorCisgRHJldyBFY2toYXJkdCAoZHJld0Bjcy5jb2xvcmFkby5lZHUpCisKKyBFcmljIFlvdW5nZGFsZSAoZXJpY0BhbmRhbnRlLm9yZykgCisKKyBzcGVjaWFsIHRoYW5rcyB0byBFcmljIFlvdW5nZGFsZSBmb3IgdGhlIGZyZWUoISkgc3VwcGx5aW5nIHRoZQorIGRvY3VtZW50YXRpb24gb24gdGhlIGNoaXAuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvYWljNzl4eC50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvYWljNzl4eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJkMzI3MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2NzaS9haWM3OXh4LnR4dApAQCAtMCwwICsxLDQ5NyBAQAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKz0gICAgICAgICAgICAgQWRhcHRlYyBVbHRyYTMyMCBGYW1pbHkgTWFuYWdlciBTZXQgICAgICAgICAgICAgICAgICA9Cis9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPQorPSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUFETUUgZm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgID0KKz0gICAgICAgICAgICAgICAgICAgIFRoZSBMaW51eCBPcGVyYXRpbmcgU3lzdGVtICAgICAgICAgICAgICAgICAgICA9Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBpbiB0aGlzIGZpbGU6CisKKyAgMS4gU3VwcG9ydGVkIEhhcmR3YXJlCisgIDIuIFZlcnNpb24gSGlzdG9yeQorICAzLiBDb21tYW5kIExpbmUgT3B0aW9ucworICA0LiBBZGRpdGlvbmFsIE5vdGVzCisgIDUuIENvbnRhY3RpbmcgQWRhcHRlYworCisKKzEuIFN1cHBvcnRlZCBIYXJkd2FyZQorCisgICBUaGUgZm9sbG93aW5nIEFkYXB0ZWMgU0NTSSBIb3N0IEFkYXB0ZXJzIGFyZSBzdXBwb3J0ZWQgYnkgdGhpcyAKKyAgIGRyaXZlciBzZXQuIAorCisgICBVbHRyYTMyMCBBU0lDICAgICAgICAgICAgICBEZXNjcmlwdGlvbgorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgQUlDLTc5MDFBICAgICAgICAgICAgICAgICAgU2luZ2xlIENoYW5uZWwgNjQtYml0IFBDSS1YIDEzM01IeiB0byAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVsdHJhMzIwIFNDU0kgQVNJQworICAgQUlDLTc5MDFCICAgICAgICAgICAgICAgICAgU2luZ2xlIENoYW5uZWwgNjQtYml0IFBDSS1YIDEzM01IeiB0byAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVsdHJhMzIwIFNDU0kgQVNJQyB3aXRoIFJldGFpbmVkIFRyYWluaW5nCisgICBBSUMtNzkwMkE0ICAgICAgICAgICAgICAgICBEdWFsIENoYW5uZWwgNjQtYml0IFBDSS1YIDEzM01IeiB0byAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVsdHJhMzIwIFNDU0kgQVNJQworICAgQUlDLTc5MDJCICAgICAgICAgICAgICAgICAgRHVhbCBDaGFubmVsIDY0LWJpdCBQQ0ktWCAxMzNNSHogdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVsdHJhMzIwIFNDU0kgQVNJQyB3aXRoIFJldGFpbmVkIFRyYWluaW5nCisKKyAgIFVsdHJhMzIwIEFkYXB0ZXJzICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNJQworICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIEFkYXB0ZWMgU0NTSSBDYXJkIDM5MzIwICAgIER1YWwgQ2hhbm5lbCA2NC1iaXQgUENJLVggMTMzTUh6IHRvICAgNzkwMkE0Lzc5MDJCCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbHRyYTMyMCBTQ1NJIENhcmQgKG9uZSBleHRlcm5hbCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY4LXBpbiwgdHdvIGludGVybmFsIDY4LXBpbikKKyAgIEFkYXB0ZWMgU0NTSSBDYXJkIDM5MzIwQSAgIER1YWwgQ2hhbm5lbCA2NC1iaXQgUENJLVggMTMzTUh6IHRvICAgICAgNzkwMkIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVsdHJhMzIwIFNDU0kgQ2FyZCAob25lIGV4dGVybmFsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjgtcGluLCB0d28gaW50ZXJuYWwgNjgtcGluKQorICAgQWRhcHRlYyBTQ1NJIENhcmQgMzkzMjBEICAgRHVhbCBDaGFubmVsIDY0LWJpdCBQQ0ktWCAxMzNNSHogdG8gICAgICA3OTAyQTQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVsdHJhMzIwIFNDU0kgQ2FyZCAodHdvIGV4dGVybmFsIFZIREMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBvbmUgaW50ZXJuYWwgNjgtcGluKQorICAgQWRhcHRlYyBTQ1NJIENhcmQgMzkzMjBEICAgRHVhbCBDaGFubmVsIDY0LWJpdCBQQ0ktWCAxMzNNSHogdG8gICAgICA3OTAyQTQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVsdHJhMzIwIFNDU0kgQ2FyZCAodHdvIGV4dGVybmFsIFZIREMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBvbmUgaW50ZXJuYWwgNjgtcGluKSBiYXNlZCBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFJQy03OTAyQiBBU0lDCisgICBBZGFwdGVjIFNDU0kgQ2FyZCAyOTMyMCAgICBTaW5nbGUgQ2hhbm5lbCA2NC1iaXQgUENJLVggMTMzTUh6IHRvICAgIDc5MDFBCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbHRyYTMyMCBTQ1NJIENhcmQgKG9uZSBleHRlcm5hbCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY4LXBpbiwgdHdvIGludGVybmFsIDY4LXBpbiwgb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbCA1MC1waW4pCisgICBBZGFwdGVjIFNDU0kgQ2FyZCAyOTMyMEEgICBTaW5nbGUgQ2hhbm5lbCA2NC1iaXQgUENJLVggMTMzTUh6IHRvICAgIDc5MDFCCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbHRyYTMyMCBTQ1NJIENhcmQgKG9uZSBleHRlcm5hbCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY4LXBpbiwgdHdvIGludGVybmFsIDY4LXBpbiwgb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbCA1MC1waW4pCisgICBBZGFwdGVjIFNDU0kgQ2FyZCAyOTMyMExQICBTaW5nbGUgQ2hhbm5lbCA2NC1iaXQgTG93IFByb2ZpbGUgICAgICAgIDc5MDFBCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0ktWCAxMzNNSHogdG8gVWx0cmEzMjAgU0NTSSBDYXJkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoT25lIGV4dGVybmFsIFZIREMsIG9uZSBpbnRlcm5hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjgtcGluKQorICAgQWRhcHRlYyBTQ1NJIENhcmQgMjkzMjBBTFAgU2luZ2xlIENoYW5uZWwgNjQtYml0IExvdyBQcm9maWxlICAgICAgICA3OTAxQgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJLVggMTMzTUh6IHRvIFVsdHJhMzIwIFNDU0kgQ2FyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE9uZSBleHRlcm5hbCBWSERDLCBvbmUgaW50ZXJuYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY4LXBpbikKKzIuIFZlcnNpb24gSGlzdG9yeQorCisgICAzLjAJICAoRGVjZW1iZXIgMXN0LCAyMDA1KQorCS0gVXBkYXRlZCBkcml2ZXIgdG8gdXNlIFNDU0kgdHJhbnNwb3J0IGNsYXNzIGluZnJhc3RydWN0dXJlCisJLSBVcHBvcnRlZCBzZXF1ZW5jZXIgYW5kIGNvcmUgZml4ZXMgZnJvbSBhZGFwdGVjIHJlbGVhc2VkCisJICB2ZXJzaW9uIDIuMC4xNSBvZiB0aGUgZHJpdmVyLgorCisgICAxLjMuMTEgKEp1bHkgMTEsIDIwMDMpCisgICAgICAgIC0gRml4IHNldmVyYWwgZGVhZGxvY2sgaXNzdWVzLgorICAgICAgICAtIEFkZCAyOTMyMEFMUCBhbmQgMzkzMjBCIElkJ3MuCisKKyAgIDEuMy4xMCAoSnVuZSAzcmQsIDIwMDMpCisgICAgICAgIC0gQWxpZ24gdGhlIFNDQl9UQUcgZmllbGQgb24gYSAxNmJ5dGUgYm91bmRhcnkuICBUaGlzIGF2b2lkcworICAgICAgICAgIFNDQiBjb3JydXB0aW9uIG9uIHNvbWUgUENJLTMzIGJ1c3Nlcy4KKyAgICAgICAgLSBDb3JyZWN0IG5vbi16ZXJvIGx1bnMgb24gUmV2IEIuIGhhcmR3YXJlLgorICAgICAgICAtIFVwZGF0ZSBmb3IgY2hhbmdlIGluIDIuNS5YIFNDU0kgcHJvYyBGUyBpbnRlcmZhY2UuCisgICAgICAgIC0gV2hlbiBuZWdvdGlhdGlvbiBhc3luYyB2aWEgYW4gOGJpdCBXRFRSIG1lc3NhZ2UsIHNlbmQKKyAgICAgICAgICBhbiBTRFRSIHdpdGggYW4gb2Zmc2V0IG9mIDAgdG8gYmUgc3VyZSB0aGUgdGFyZ2V0CisgICAgICAgICAga25vd3Mgd2UgYXJlIGFzeW5jLiAgVGhpcyB3b3JrcyBhcm91bmQgYSBmaXJtd2FyZSBkZWZlY3QKKyAgICAgICAgICBpbiB0aGUgUXVhbnR1bSBBdGxhcyAxMEsuCisgICAgICAgIC0gSW1wbGVtZW50IGNvbnRyb2xsZXIgc3VzcGVuZCBhbmQgcmVzdW1lLgorICAgICAgICAtIENsZWFyIFBDSSBlcnJvciBzdGF0ZSBkdXJpbmcgZHJpdmVyIGF0dGFjaCBzbyB0aGF0IHdlCisgICAgICAgICAgZG9uJ3QgZGlzYWJsZSBtZW1vcnkgbWFwcGVkIEkvTyBkdWUgdG8gYSBzdHJheSB3cml0ZQorICAgICAgICAgIGJ5IHNvbWUgb3RoZXIgZHJpdmVyIHByb2JlIHRoYXQgb2NjdXJyZWQgYmVmb3JlIHdlCisgICAgICAgICAgY2xhaW1lZCB0aGUgY29udHJvbGxlci4KKworICAgMS4zLjkgKE1heSAyMm5kLCAyMDAzKQorICAgICAgICAtIEZpeCBjb21waWxlciBlcnJvcnMuCisgICAgICAgIC0gUmVtb3ZlIFMvRyBzcGxpdHRpbmcgZm9yIHNlZ21lbnRzIHRoYXQgY3Jvc3MgYSA0R0IgYm91bmRhcnkuCisgICAgICAgICAgVGhpcyBpcyBndWFyYW50ZWVkIG5vdCB0byBoYXBwZW4gaW4gTGludXguCisgICAgICAgIC0gQWRkIHN1cHBvcnQgZm9yIHNjc2lfcmVwb3J0X2RldmljZV9yZXNldCgpIGZvdW5kIGluCisgICAgICAgICAgMi41Llgga2VybmVscy4KKyAgICAgICAgLSBBZGQgNzkwMUIgc3VwcG9ydC4KKyAgICAgICAgLSBTaW1wbGlmeSBoYW5kbGluZyBvZiB0aGUgcGFja2V0aXplZCBsdW4gUmV2IEEgd29ya2Fyb3VuZC4KKyAgICAgICAgLSBDb3JyZWN0IGFuZCBzaW1wbGlmeSBoYW5kbGluZyBvZiB0aGUgaWdub3JlIHdpZGUgcmVzaWR1ZQorICAgICAgICAgIG1lc3NhZ2UuICBUaGUgcHJldmlvdXMgY29kZSB3b3VsZCBmYWlsIHRvIHJlcG9ydCBhIHJlc2lkdWFsCisgICAgICAgICAgaWYgdGhlIHRyYW5zYWN0aW9uIGRhdGEgbGVuZ3RoIHdhcyBldmVuIGFuZCB3ZSByZWNlaXZlZAorICAgICAgICAgIGFuIElXUiBtZXNzYWdlLgorCisgICAxLjMuOCAoQXByaWwgMjl0aCwgMjAwMykKKyAgICAgICAgLSBGaXggdHlwZXMgYWNjZXNzZWQgdmlhIHRoZSBjb21tYW5kIGxpbmUgaW50ZXJmYWNlIGNvZGUuCisgICAgICAgIC0gUGVyZm9ybSBhIGZldyBmaXJtd2FyZSBvcHRpbWl6YXRpb25zLgorICAgICAgICAtIEZpeCAiVW5leHBlY3RlZCBQS1QgYnVzZnJlZSIgZXJyb3JzLgorICAgICAgICAtIFVzZSBhIHNlcXVlbmNlciBpbnRlcnJ1cHQgdG8gbm90aWZ5IHRoZSBob3N0IG9mCisgICAgICAgICAgY29tbWFuZHMgd2l0aCBiYWQgc3RhdHVzLiAgV2UgZGVmZXIgdGhlIG5vdGlmaWNhdGlvbgorICAgICAgICAgIHVudGlsIHRoZXJlIGFyZSBubyBvdXRzdGFuZGluZyBzZWxlY3Rpb25zIHRvIGVuc3VyZQorICAgICAgICAgIHRoYXQgdGhlIGhvc3QgaXMgaW50ZXJydXB0ZWQgZm9yIGFzIHNob3J0IGEgdGltZSBhcworICAgICAgICAgIHBvc3NpYmxlLgorICAgICAgICAtIFJlbW92ZSBwcmUtMi4yLlggc3VwcG9ydC4KKyAgICAgICAgLSBBZGQgc3VwcG9ydCBmb3IgbmV3IDIuNS5YIGludGVycnVwdCBBUEkuCisgICAgICAgIC0gQ29ycmVjdCBiaWctZW5kaWFuIGFyY2hpdGVjdHVyZSBzdXBwb3J0LgorCisgICAxLjMuNyAoQXByaWwgMTZ0aCwgMjAwMykKKyAgICAgICAgLSBVc2UgZGVsX3RpbWVyX3N5bmMoKSB0byBlbnN1cmUgdGhhdCBubyB0aW1lb3V0cworICAgICAgICAgIGFyZSBwZW5kaW5nIGR1cmluZyBjb250cm9sbGVyIHNodXRkb3duLgorICAgICAgICAtIEZvciBwcmUtMi41Llgga2VybmVscywgY2FyZWZ1bGx5IGFkanVzdCBvdXIgc2VnbWVudAorICAgICAgICAgIGxpc3Qgc2l6ZSB0byBhdm9pZCBTQ1NJIG1hbGxvYyBwb29sIGZyYWdtZW50YXRpb24uCisgICAgICAgIC0gQ2xlYW51cCBjaGFubmVsIGRpc3BsYXkgaW4gb3VyIC9wcm9jIG91dHB1dC4KKyAgICAgICAgLSBXb3JrYXJvdW5kIGR1cGxpY2F0ZSBkZXZpY2UgZW50cmllcyBpbiB0aGUgbWlkLWxheWVyCisgICAgICAgICAgZGV2aWNlIGxpc3QgZHVyaW5nIGFkZC1zaW5nbGUtZGV2aWNlLgorCisgICAxLjMuNiAoTWFyY2ggMjh0aCwgMjAwMykKKyAgICAgICAgLSBDb3JyZWN0IGEgZG91YmxlIGZyZWUgaW4gdGhlIERvbWFpbiBWYWxpZGF0aW9uIGNvZGUuCisgICAgICAgIC0gQ29ycmVjdCBhIHJlZmVyZW5jZSB0byBmcmVlJ2VkIG1lbW9yeSBkdXJpbmcgY29udHJvbGxlcgorICAgICAgICAgIHNodXRkb3duLgorICAgICAgICAtIFJlc2V0IHRoZSBidXMgb24gYW4gU0UtPkxWRCBjaGFuZ2UuICBUaGlzIGlzIHJlcXVpcmVkCisgICAgICAgICAgdG8gcmVzZXQgb3VyIHRyYW5zY2VpdmVycy4KKworICAgMS4zLjUgKE1hcmNoIDI0dGgsIDIwMDMpCisgICAgICAgIC0gRml4IGEgZmV3IHJlZ2lzdGVyIHdpbmRvdyBtb2RlIGJ1Z3MuCisgICAgICAgIC0gSW5jbHVkZSByZWFkIHN0cmVhbWluZyBpbiB0aGUgUFBSIGZsYWdzIHdlIGRpc3BsYXkgaW4KKyAgICAgICAgICBkaWFnbm9zdGljcyBhcyB3ZWxsIGFzIC9wcm9jLgorICAgICAgICAtIEFkZCBQQ0kgaG90IHBsdWcgc3VwcG9ydCBmb3IgMi41Llgga2VybmVscy4KKyAgICAgICAgLSBDb3JyZWN0IGRlZmF1bHQgcHJlY29tcGVuc2F0aW9uIHZhbHVlIGZvciBSZXZBIGhhcmR3YXJlLgorICAgICAgICAtIEZpeCBEb21haW4gVmFsaWRhdGlvbiB0aHJlYWQgc2h1dGRvd24uCisgICAgICAgIC0gQWRkIGEgZmlybXdhcmUgd29ya2Fyb3VuZCB0byBtYWtlIHRoZSBMRUQgYmxpbmsKKyAgICAgICAgICBicmlnaHRlciBkdXJpbmcgcGFja2V0aXplZCBvcGVyYXRpb25zIG9uIHRoZSBIMkE0LgorICAgICAgICAtIENvcnJlY3QgL3Byb2MgZGlzcGxheSBvZiB1c2VyIHJlYWQgc3RyZWFtaW5nIHNldHRpbmdzLgorICAgICAgICAtIFNpbXBsaWZ5IGRyaXZlciBsb2NraW5nIGJ5IHJlbGVhc2luZyB0aGUgaW9fcmVxdWVzdF9sb2NrCisgICAgICAgICAgdXBvbiBkcml2ZXIgZW50cnkgZnJvbSB0aGUgbWlkLWxheWVyLgorICAgICAgICAtIENsZWFudXAgY29tbWFuZCBsaW5lIHBhcnNpbmcgYW5kIG1vdmUgbXVjaCBvZiB0aGlzIGNvZGUKKyAgICAgICAgICB0byBhaWNsaWIuCisKKyAgIDEuMy40IChGZWJydWFyeSAyOHRoLCAyMDAzKQorICAgICAgICAtIENvcnJlY3QgYSByYWNlIGNvbmRpdGlvbiBpbiBvdXIgZXJyb3IgcmVjb3ZlcnkgaGFuZGxlci4KKyAgICAgICAgLSBBbGxvdyBUZXN0IFVuaXQgUmVhZHkgY29tbWFuZHMgdG8gdGFrZSBhIGZ1bGwgNSBzZWNvbmRzCisgICAgICAgICAgZHVyaW5nIERvbWFpbiBWYWxpZGF0aW9uLgorCisgICAxLjMuMiAoRmVicnVhcnkgMTl0aCwgMjAwMykKKyAgICAgICAgLSBDb3JyZWN0IGEgUmV2IEIuIHJlZ3Jlc3Npb24gZHVlIHRvIHRoZSBHRU0zMTgKKyAgICAgICAgICBjb21wYXRpYmlsaXR5IGZpeCBpbmNsdWRlZCBpbiAxLjMuMS4KKyAgICAgICAgICAKKyAgIDEuMy4xIChGZWJydWFyeSAxMXRoLCAyMDAzKQorICAgICAgICAtIEFkZCBzdXBwb3J0IGZvciB0aGUgMzkzMjBBLgorICAgICAgICAtIEltcHJvdmUgcmVjb3ZlcnkgZm9yIGNlcnRhaW4gUENJLVggZXJyb3JzLgorICAgICAgICAtIEZpeCBoYW5kbGluZyBvZiBMUS9EQVRBL0xRL0RBVEEgZm9yIHRoZQorICAgICAgICAgIHNhbWUgd3JpdGUgdHJhbnNhY3Rpb24gdGhhdCBjYW4gb2NjdXIgd2l0aG91dAorICAgICAgICAgIGludGVydmVpbmluZyB0cmFpbmluZy4KKyAgICAgICAgLSBDb3JyZWN0IGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggdGhlIEdFTTMxOAorICAgICAgICAgIGVuY2xvc3VyZSBzZXJ2aWNlcyBkZXZpY2UuCisgICAgICAgIC0gQ29ycmVjdCBkYXRhIGNvcnJ1cHRpb24gaXNzdWUgdGhhdCBvY2N1cnJlZCB1bmRlcgorICAgICAgICAgIGhpZ2ggdGFnIGRlcHRoIHdyaXRlIGxvYWRzLgorICAgICAgICAtIEFkYXB0IHRvIGEgY2hhbmdlIGluIHRoZSAyLjUuWCBkYWVtb25pemUoKSBBUEkuCisgICAgICAgIC0gQ29ycmVjdCBhICJNaXNzaW5nIGNhc2UgaW4gYWhkX2hhbmRsZV9zY3NpaW50IiBwYW5pYy4KKworICAgMS4zLjAgKEphbnVhcnkgMjFzdCwgMjAwMykKKyAgICAgICAgLSBGdWxsIHJlZ3Jlc3Npb24gdGVzdGluZyBmb3IgYWxsIFUzMjAgcHJvZHVjdHMgY29tcGxldGVkLgorICAgICAgICAtIEFkZGVkIGFib3J0IGFuZCB0YXJnZXQvbHVuIHJlc2V0IGVycm9yIHJlY292ZXJ5IGhhbmRsZXIgYW5kCisgICAgICAgICAgaW50ZXJydXB0IGNvYWxlc2NpbmcuCisKKyAgIDEuMi4wIChOb3ZlbWJlciAxNHRoLCAyMDAyKQorICAgICAgICAtIEFkZGVkIHN1cHBvcnQgZm9yIERvbWFpbiBWYWxpZGF0aW9uCisgICAgICAgIC0gQWRkIHN1cHBvcnQgZm9yIHRoZSBIZXdsZXR0LVBhY2thcmQgdmVyc2lvbiBvZiB0aGUgMzkzMjBECisgICAgICAgICAgYW5kIEFJQy03OTAyIGFkYXB0ZXJzLgorICAgICAgICBTdXBwb3J0IGZvciBwcmV2aW91cyBhZGFwdGVycyBoYXMgbm90IGJlZW4gZnVsbHkgdGVzdGVkIGFuZCBzaG91bGQKKyAgICAgICAgb25seSBiZSB1c2VkIGF0IHRoZSBjdXN0b21lcidzIG93biByaXNrLgorCisgICAxLjEuMSAoU2VwdGVtYmVyIDI0dGgsIDIwMDIpCisgICAgICAgIC0gQWRkZWQgc3VwcG9ydCBmb3IgdGhlIExpbnV4IDIuNS5YIGtlcm5lbCBzZXJpZXMKKworICAgMS4xLjAgKFNlcHRlbWJlciAxN3RoLCAyMDAyKQorICAgICAgICAtIEFkZGVkIHN1cHBvcnQgZm9yIGZvdXIgYWRkaXRpb25hbCBTQ1NJIHByb2R1Y3RzOgorICAgICAgICAgIEFTQy0zOTMyMCwgQVNDLTI5MzIwLCBBU0MtMjkzMjBMUCwgQUlDLTc5MDEuCisKKyAgIDEuMC4wIChNYXkgMzB0aCwgMjAwMikKKyAgICAgICAgLSBJbml0aWFsIGRyaXZlciByZWxlYXNlLgorCisgICAyLjEuIFNvZnR3YXJlL0hhcmR3YXJlIEZlYXR1cmVzCisgICAgICAgIC0gU3VwcG9ydCBmb3IgdGhlIFNQSS00ICJVbHRyYTMyMCIgc3RhbmRhcmQ6CisgICAgICAgICAgLSAzMjBNQi9zIHRyYW5zZmVyIHJhdGVzCisgICAgICAgICAgLSBQYWNrZXRpemVkIFNDU0kgUHJvdG9jb2wgYXQgMTYwTUIvcyBhbmQgMzIwTUIvcworICAgICAgICAgIC0gUXVpY2sgQXJiaXRyYXRpb24gU2VsZWN0aW9uIChRQVMpCisgICAgICAgICAgLSBSZXRhaW5lZCBUcmFpbmluZyBJbmZvcm1hdGlvbiAoUmV2IEIuIEFTSUMgb25seSkKKyAgICAgICAgLSBJbnRlcnJ1cHQgQ29hbGVzY2luZworICAgICAgICAtIEluaXRpYXRvciBNb2RlICh0YXJnZXQgbW9kZSBub3QgY3VycmVudGx5IAorICAgICAgICAgIHN1cHBvcnRlZCkKKyAgICAgICAgLSBTdXBwb3J0IGZvciB0aGUgUENJLVggc3RhbmRhcmQgdXAgdG8gMTMzTUh6CisgICAgICAgIC0gU3VwcG9ydCBmb3IgdGhlIFBDSSB2Mi4yIHN0YW5kYXJkCisgICAgICAgIC0gRG9tYWluIFZhbGlkYXRpb24KKworICAgMi4yLiBPcGVyYXRpbmcgU3lzdGVtIFN1cHBvcnQ6CisgICAgICAgIC0gUmVkaGF0IExpbnV4IDcuMiwgNy4zLCA4LjAsIEFkdmFuY2VkIFNlcnZlciAyLjEKKyAgICAgICAgLSBTdVNFIExpbnV4IDcuMywgOC4wLCA4LjEsIEVudGVycHJpc2UgU2VydmVyIDcKKyAgICAgICAgLSBvbmx5IEludGVsIGFuZCBBTUQgeDg2IHN1cHBvcnRlZCBhdCB0aGlzIHRpbWUKKyAgICAgICAgLSA+NEdCIG1lbW9yeSBjb25maWd1cmF0aW9ucyBzdXBwb3J0ZWQuCisKKyAgICAgUmVmZXIgdG8gdGhlIFVzZXIncyBHdWlkZSBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoaXMuCisKKzMuIENvbW1hbmQgTGluZSBPcHRpb25zCisKKyAgICAgICAgV0FSTklORzogQUxURVJJTkcgT1IgQURESU5HIFRIRVNFIERSSVZFUiBQQVJBTUVURVJTCisgICAgICAgICAgICAgICAgIElOQ09SUkVDVExZIENBTiBSRU5ERVIgWU9VUiBTWVNURU0gSU5PUEVSQUJMRS4KKyAgICAgICAgICAgICAgICAgVVNFIFRIRU0gV0lUSCBDQVVUSU9OLiAKKworICAgUHV0IGEgLmNvbmYgZmlsZSBpbiB0aGUgL2V0Yy9tb2Rwcm9iZS5kLyBkaXJlY3RvcnkgYW5kIGFkZC9lZGl0IGEKKyAgIGxpbmUgY29udGFpbmluZyAnb3B0aW9ucyBhaWM3OXh4IGFpYzc5eHg9W2NvbW1hbmRbLGNvbW1hbmQuLi5dXScgd2hlcmUKKyAgICdjb21tYW5kJyBpcyBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nOgorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgT3B0aW9uOiB2ZXJib3NlCisgICAgICAgICAgRGVmaW5pdGlvbjogZW5hYmxlIGFkZGl0aW9uYWwgaW5mb3JtYXRpdmUgbWVzc2FnZXMgZHVyaW5nCisgICAgICAgICAgICAgICAgICAgICAgZHJpdmVyIG9wZXJhdGlvbi4KKyAgICAgUG9zc2libGUgVmFsdWVzOiBUaGlzIG9wdGlvbiBpcyBhIGZsYWcKKyAgICAgICBEZWZhdWx0IFZhbHVlOiBkaXNhYmxlZAorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgT3B0aW9uOiBkZWJ1ZzpbdmFsdWVdCisgICAgICAgICAgRGVmaW5pdGlvbjogRW5hYmxlcyB2YXJpb3VzIGxldmVscyBvZiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICBUaGUgYml0IGRlZmluaXRpb25zIGZvciB0aGUgZGVidWdnaW5nIG1hc2sgY2FuCisgICAgICAgICAgICAgICAgICAgICAgYmUgZm91bmQgaW4gZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eC5oIHVuZGVyCisgICAgICAgICAgICAgICAgICAgICAgdGhlICJEZWJ1ZyIgaGVhZGluZy4KKyAgICAgUG9zc2libGUgVmFsdWVzOiAweDAwMDAgPSBubyBkZWJ1Z2dpbmcsIDB4ZmZmZiA9IGZ1bGwgZGVidWdnaW5nCisgICAgICAgRGVmYXVsdCBWYWx1ZTogMHgwMDAwCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICBPcHRpb246IG5vX3Jlc2V0CisgICAgICAgICAgRGVmaW5pdGlvbjogRG8gbm90IHJlc2V0IHRoZSBidXMgZHVyaW5nIHRoZSBpbml0aWFsIHByb2JlCisgICAgICAgICAgICAgICAgICAgICAgcGhhc2UKKyAgICAgUG9zc2libGUgVmFsdWVzOiBUaGlzIG9wdGlvbiBpcyBhIGZsYWcKKyAgICAgICBEZWZhdWx0IFZhbHVlOiBkaXNhYmxlZAorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgT3B0aW9uOiBleHRlbmRlZAorICAgICAgICAgIERlZmluaXRpb246IEZvcmNlIGV4dGVuZGVkIHRyYW5zbGF0aW9uIG9uIHRoZSBjb250cm9sbGVyCisgICAgIFBvc3NpYmxlIFZhbHVlczogVGhpcyBvcHRpb24gaXMgYSBmbGFnCisgICAgICAgRGVmYXVsdCBWYWx1ZTogZGlzYWJsZWQKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIE9wdGlvbjogcGVyaW9kaWNfb3RhZworICAgICAgICAgIERlZmluaXRpb246IFNlbmQgYW4gb3JkZXJlZCB0YWcgcGVyaW9kaWNhbGx5IHRvIHByZXZlbnQKKyAgICAgICAgICAgICAgICAgICAgICB0YWcgc3RhcnZhdGlvbi4gIE5lZWRlZCBmb3Igc29tZSBvbGRlciBkZXZpY2VzCisgICAgIFBvc3NpYmxlIFZhbHVlczogVGhpcyBvcHRpb24gaXMgYSBmbGFnCisgICAgICAgRGVmYXVsdCBWYWx1ZTogZGlzYWJsZWQKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIE9wdGlvbjogcmV2ZXJzZV9zY2FuCisgICAgICAgICAgRGVmaW5pdGlvbjogUHJvYmUgdGhlIHNjc2kgYnVzIGluIHJldmVyc2Ugb3JkZXIsIHN0YXJ0aW5nCisgICAgICAgICAgICAgICAgICAgICAgd2l0aCB0YXJnZXQgMTUKKyAgICAgUG9zc2libGUgVmFsdWVzOiBUaGlzIG9wdGlvbiBpcyBhIGZsYWcKKyAgICAgICBEZWZhdWx0IFZhbHVlOiBkaXNhYmxlZAorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgT3B0aW9uOiBnbG9iYWxfdGFnX2RlcHRoCisgICAgICAgICAgRGVmaW5pdGlvbjogR2xvYmFsIHRhZyBkZXB0aCBmb3IgYWxsIHRhcmdldHMgb24gYWxsIGJ1c3Nlcy4KKyAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBzZXRzIHRoZSBkZWZhdWx0IHRhZyBkZXB0aCB3aGljaAorICAgICAgICAgICAgICAgICAgICAgIG1heSBiZSBzZWxlY3RpdmVseSBvdmVycmlkZGVuIHZpIHRoZSB0YWdfaW5mbworICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi4KKyAgICAgUG9zc2libGUgVmFsdWVzOiAxIC0gMjUzCisgICAgICAgRGVmYXVsdCBWYWx1ZTogMzIKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIE9wdGlvbjogdGFnX2luZm86e3t2YWx1ZVssdmFsdWUuLi5dfVsse3ZhbHVlWyx2YWx1ZS4uLl19Li4uXX0KKyAgICAgICAgICBEZWZpbml0aW9uOiBTZXQgdGhlIHBlci10YXJnZXQgdGFnZ2VkIHF1ZXVlIGRlcHRoIG9uIGEKKyAgICAgICAgICAgICAgICAgICAgICBwZXIgY29udHJvbGxlciBiYXNpcy4gIEJvdGggY29udHJvbGxlcnMgYW5kIHRhcmdldHMKKyAgICAgICAgICAgICAgICAgICAgICBtYXkgYmUgb21pdHRlZCBpbmRpY2F0aW5nIHRoYXQgdGhleSBzaG91bGQgcmV0YWluCisgICAgICAgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHQgdGFnIGRlcHRoLgorICAgICAgICAgICAgRXhhbXBsZXM6IHRhZ19pbmZvOnt7MTYsMzIsMzIsNjQsOCw4LCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMn0KKyAgICAgICAgICAgICAgICAgICAgICAgIE9uIENvbnRyb2xsZXIgMAorICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgYSB0YWcgZGVwdGggb2YgMTYgZm9yIHRhcmdldCAwCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllcyBhIHRhZyBkZXB0aCBvZiA2NCBmb3IgdGFyZ2V0IDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIGEgdGFnIGRlcHRoIG9mIDggZm9yIHRhcmdldHMgNCBhbmQgNQorICAgICAgICAgICAgICAgICAgICAgICAgICBsZWF2ZXMgdGFyZ2V0IDYgYXQgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIGEgdGFnIGRlcHRoIG9mIDMyIGZvciB0YXJnZXRzIDEsMiw3LTE1CisgICAgICAgICAgICAgICAgICAgICAgICBBbGwgb3RoZXIgdGFyZ2V0cyByZXRhaW4gdGhlIGRlZmF1bHQgZGVwdGguCisKKyAgICAgICAgICAgICAgICAgICAgICB0YWdfaW5mbzp7e30sezMyLCwzMn19CisgICAgICAgICAgICAgICAgICAgICAgICBPbiBDb250cm9sbGVyIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIGEgdGFnIGRlcHRoIG9mIDMyIGZvciB0YXJnZXRzIDAgYW5kIDIKKyAgICAgICAgICAgICAgICAgICAgICAgIEFsbCBvdGhlciB0YXJnZXRzIHJldGFpbiB0aGUgZGVmYXVsdCBkZXB0aC4KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICBQb3NzaWJsZSBWYWx1ZXM6IDEgLSAyNTMKKyAgICAgICBEZWZhdWx0IFZhbHVlOiAzMgorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgT3B0aW9uOiByZF9zdHJtOiB7cmRfc3RybV9iaXRtYXNrWyxyZF9zdHJtX2JpdG1hc2suLi5dfQorICAgICAgICAgIERlZmluaXRpb246IEVuYWJsZSByZWFkIHN0cmVhbWluZyBvbiBhIHBlciB0YXJnZXQgYmFzaXMuCisgICAgICAgICAgICAgICAgICAgICAgVGhlIHJkX3N0cm1fYml0bWFzayBpcyBhIDE2IGJpdCBoZXggdmFsdWUgaW4gd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICBlYWNoIGJpdCByZXByZXNlbnRzIGEgdGFyZ2V0LiAgU2V0dGluZyB0aGUgdGFyZ2V0J3MKKyAgICAgICAgICAgICAgICAgICAgICBiaXQgdG8gJzEnIGVuYWJsZXMgcmVhZCBzdHJlYW1pbmcgZm9yIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuICBDb250cm9sbGVycyBtYXkgYmUgb21pdHRlZCBpbmRpY2F0aW5nIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICB0aGV5IHNob3VsZCByZXRhaW4gdGhlIGRlZmF1bHQgcmVhZCBzdHJlYW1pbmcgc2V0dGluZy4KKyAgICAgICAgICAgICBFeGFtcGxlOiByZF9zdHJtOnsweDAwNDF9CisgICAgICAgICAgICAgICAgICAgICAgICBPbiBDb250cm9sbGVyIDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlcyByZWFkIHN0cmVhbWluZyBmb3IgdGFyZ2V0cyAwIGFuZCA2LgorICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlcyByZWFkIHN0cmVhbWluZyBmb3IgdGFyZ2V0cyAxLTUsNy0xNS4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFsbCBvdGhlciB0YXJnZXRzIHJldGFpbiB0aGUgZGVmYXVsdCByZWFkCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1pbmcgc2V0dGluZy4KKyAgICAgICAgICAgICBFeGFtcGxlOiByZF9zdHJtOnsweDAwMjMsLDB4RkZGRn0KKyAgICAgICAgICAgICAgICAgICAgICAgIE9uIENvbnRyb2xsZXIgMAorICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVzIHJlYWQgc3RyZWFtaW5nIGZvciB0YXJnZXRzIDEsMiwgYW5kIDUuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVzIHJlYWQgc3RyZWFtaW5nIGZvciB0YXJnZXRzIDMsNCw2LTE1LgorICAgICAgICAgICAgICAgICAgICAgICAgT24gQ29udHJvbGxlciAyCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZXMgcmVhZCBzdHJlYW1pbmcgZm9yIGFsbCB0YXJnZXRzLgorICAgICAgICAgICAgICAgICAgICAgICAgQWxsIG90aGVyIHRhcmdldHMgcmV0YWluIHRoZSBkZWZhdWx0IHJlYWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbWluZyBzZXR0aW5nLgorICAgICAgICAgICAgICAgICAgICAgIAorICAgICBQb3NzaWJsZSBWYWx1ZXM6IDB4MDAwMCAtIDB4ZmZmZgorICAgICAgIERlZmF1bHQgVmFsdWU6IDB4MDAwMAorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgT3B0aW9uOiBkdjoge3ZhbHVlWyx2YWx1ZS4uLl19CisgICAgICAgICAgRGVmaW5pdGlvbjogU2V0IERvbWFpbiBWYWxpZGF0aW9uIFBvbGljeSBvbiBhIHBlci1jb250cm9sbGVyIGJhc2lzLgorICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXJzIG1heSBiZSBvbWl0dGVkIGluZGljYXRpbmcgdGhhdAorICAgICAgICAgICAgICAgICAgICAgIHRoZXkgc2hvdWxkIHJldGFpbiB0aGUgZGVmYXVsdCByZWFkIHN0cmVhbWluZyBzZXR0aW5nLgorICAgICAgICAgICAgIEV4YW1wbGU6IGR2OnstMSwwLCwxLDEsMH0KKyAgICAgICAgICAgICAgICAgICAgICAgIE9uIENvbnRyb2xsZXIgMCBsZWF2ZSBEViBhdCBpdHMgZGVmYXVsdCBzZXR0aW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgT24gQ29udHJvbGxlciAxIGRpc2FibGUgRFYuCisgICAgICAgICAgICAgICAgICAgICAgICBTa2lwIGNvbmZpZ3VyYXRpb24gb24gQ29udHJvbGxlciAyLgorICAgICAgICAgICAgICAgICAgICAgICAgT24gQ29udHJvbGxlcnMgMyBhbmQgNCBlbmFibGUgRFYuCisgICAgICAgICAgICAgICAgICAgICAgICBPbiBDb250cm9sbGVyIDUgZGlzYWJsZSBEVi4KKworICAgICBQb3NzaWJsZSBWYWx1ZXM6IDwgMCBVc2Ugc2V0dGluZyBmcm9tIHNlcmlhbCBFRVBST00uCisgICAgICAgICAgICAgICAgICAgICAgMCBEaXNhYmxlIERWCisgICAgICAgICAgICAgICAgICAgICAgPiAwIEVuYWJsZSBEVgorICAgICAgIERlZmF1bHQgVmFsdWU6IERWIFNlcmlhbCBFRVBST00gY29uZmlndXJhdGlvbiBzZXR0aW5nLgorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgT3B0aW9uOiBzZWx0aW1lOlt2YWx1ZV0KKyAgICAgICAgICBEZWZpbml0aW9uOiBTcGVjaWZpZXMgdGhlIHNlbGVjdGlvbiB0aW1lb3V0IHZhbHVlCisgICAgIFBvc3NpYmxlIFZhbHVlczogMCA9IDI1Nm1zLCAxID0gMTI4bXMsIDIgPSA2NG1zLCAzID0gMzJtcworICAgICAgIERlZmF1bHQgVmFsdWU6IDAKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICoqKiBUaGUgZm9sbG93aW5nIHRocmVlIG9wdGlvbnMgc2hvdWxkIG9ubHkgYmUgY2hhbmdlZCBhdCAqKioKKyAgICoqKiB0aGUgZGlyZWN0aW9uIG9mIGEgdGVjaG5pY2FsIHN1cHBvcnQgcmVwcmVzZW50YXRpdmUuICAqKioKKworICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgT3B0aW9uOiBwcmVjb21wOiB7dmFsdWVbLHZhbHVlLi4uXX0KKyAgICAgICAgICBEZWZpbml0aW9uOiBTZXQgSU8gQ2VsbCBwcmVjb21wZW5zYXRpb24gdmFsdWUgb24gYSBwZXItY29udHJvbGxlcgorICAgICAgICAgICAgICAgICAgICAgIGJhc2lzLgorICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXJzIG1heSBiZSBvbWl0dGVkIGluZGljYXRpbmcgdGhhdAorICAgICAgICAgICAgICAgICAgICAgIHRoZXkgc2hvdWxkIHJldGFpbiB0aGUgZGVmYXVsdCBwcmVjb21wZW5zYXRpb24gc2V0dGluZy4KKyAgICAgICAgICAgICBFeGFtcGxlOiBwcmVjb21wOnsweDF9CisgICAgICAgICAgICAgICAgICAgICAgICBPbiBDb250cm9sbGVyIDAgc2V0IHByZWNvbXBlbnNhdGlvbiB0byAxLgorICAgICAgICAgICAgIEV4YW1wbGU6IHByZWNvbXA6ezEsLDd9CisgICAgICAgICAgICAgICAgICAgICAgICBPbiBDb250cm9sbGVyIDAgc2V0IHByZWNvbXBlbnNhdGlvbiB0byAxLgorICAgICAgICAgICAgICAgICAgICAgICAgT24gQ29udHJvbGxlciAyIHNldCBwcmVjb21wZW5zYXRpb24gdG8gOC4KKyAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgUG9zc2libGUgVmFsdWVzOiAwIC0gNworICAgICAgIERlZmF1bHQgVmFsdWU6IFZhcmllcyBiYXNlZCBvbiBjaGlwIHJldmlzaW9uCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICBPcHRpb246IHNsZXdyYXRlOiB7dmFsdWVbLHZhbHVlLi4uXX0KKyAgICAgICAgICBEZWZpbml0aW9uOiBTZXQgSU8gQ2VsbCBzbGV3IHJhdGUgb24gYSBwZXItY29udHJvbGxlciBiYXNpcy4KKyAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVycyBtYXkgYmUgb21pdHRlZCBpbmRpY2F0aW5nIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICB0aGV5IHNob3VsZCByZXRhaW4gdGhlIGRlZmF1bHQgc2xldyByYXRlIHNldHRpbmcuCisgICAgICAgICAgICAgRXhhbXBsZTogc2xld3JhdGU6ezB4MX0KKyAgICAgICAgICAgICAgICAgICAgICAgIE9uIENvbnRyb2xsZXIgMCBzZXQgc2xldyByYXRlIHRvIDEuCisgICAgICAgICAgICAgRXhhbXBsZTogc2xld3JhdGUgOnsxLCw4fQorICAgICAgICAgICAgICAgICAgICAgICAgT24gQ29udHJvbGxlciAwIHNldCBzbGV3IHJhdGUgdG8gMS4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9uIENvbnRyb2xsZXIgMiBzZXQgc2xldyByYXRlIHRvIDguCisgICAgICAgICAgICAgICAgICAgICAgCisgICAgIFBvc3NpYmxlIFZhbHVlczogMCAtIDE1CisgICAgICAgRGVmYXVsdCBWYWx1ZTogVmFyaWVzIGJhc2VkIG9uIGNoaXAgcmV2aXNpb24KKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIE9wdGlvbjogYW1wbGl0dWRlOiB7dmFsdWVbLHZhbHVlLi4uXX0KKyAgICAgICAgICBEZWZpbml0aW9uOiBTZXQgSU8gQ2VsbCBzaWduYWwgYW1wbGl0dWRlIG9uIGEgcGVyLWNvbnRyb2xsZXIgYmFzaXMuCisgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlcnMgbWF5IGJlIG9taXR0ZWQgaW5kaWNhdGluZyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgdGhleSBzaG91bGQgcmV0YWluIHRoZSBkZWZhdWx0IHJlYWQgc3RyZWFtaW5nIHNldHRpbmcuCisgICAgICAgICAgICAgRXhhbXBsZTogYW1wbGl0dWRlOnsweDF9CisgICAgICAgICAgICAgICAgICAgICAgICBPbiBDb250cm9sbGVyIDAgc2V0IGFtcGxpdHVkZSB0byAxLgorICAgICAgICAgICAgIEV4YW1wbGU6IGFtcGxpdHVkZSA6ezEsLDd9CisgICAgICAgICAgICAgICAgICAgICAgICBPbiBDb250cm9sbGVyIDAgc2V0IGFtcGxpdHVkZSB0byAxLgorICAgICAgICAgICAgICAgICAgICAgICAgT24gQ29udHJvbGxlciAyIHNldCBhbXBsaXR1ZGUgdG8gNy4KKyAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgUG9zc2libGUgVmFsdWVzOiAxIC0gNworICAgICAgIERlZmF1bHQgVmFsdWU6IFZhcmllcyBiYXNlZCBvbiBjaGlwIHJldmlzaW9uCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICBFeGFtcGxlOiAnb3B0aW9ucyBhaWM3OXh4IGFpYzc5eHg9dmVyYm9zZSxyZF9zdHJtOnt7MHgwMDQxfX0nCisgICAgICAgIGVuYWJsZXMgdmVyYm9zZSBvdXRwdXQgaW4gdGhlIGRyaXZlciBhbmQgdHVybnMgcmVhZCBzdHJlYW1pbmcgb24KKyAgICAgICAgZm9yIHRhcmdldHMgMCBhbmQgNiBvZiBDb250cm9sbGVyIDAuCisKKzQuIEFkZGl0aW9uYWwgTm90ZXMKKworICAgNC4xLiBLbm93bi9VbnJlc29sdmVkIG9yIEZZSSBJc3N1ZXMKKworICAgICAgICAqIFVuZGVyIFN1U0UgTGludXggRW50ZXJwcmlzZSA3LCB0aGUgZHJpdmVyIG1heSBmYWlsIHRvIG9wZXJhdGUKKyAgICAgICAgICBjb3JyZWN0bHkgZHVlIHRvIGEgcHJvYmxlbSB3aXRoIFBDSSBpbnRlcnJ1cHQgcm91dGluZyBpbiB0aGUKKyAgICAgICAgICBMaW51eCBrZXJuZWwuICBQbGVhc2UgY29udGFjdCBTdVNFIGZvciBhbiB1cGRhdGVkIExpbnV4CisgICAgICAgICAga2VybmVsLgorCisgICA0LjIuIFRoaXJkLVBhcnR5IENvbXBhdGliaWxpdHkgSXNzdWVzCisKKyAgICAgICAgKiBBZGFwdGVjIG9ubHkgc3VwcG9ydHMgVWx0cmEzMjAgaGFyZCBkcml2ZXMgcnVubmluZworICAgICAgICAgIHRoZSBsYXRlc3QgZmlybXdhcmUgYXZhaWxhYmxlLiBQbGVhc2UgY2hlY2sgd2l0aAorICAgICAgICAgIHlvdXIgaGFyZCBkcml2ZSBtYW51ZmFjdHVyZXIgdG8gZW5zdXJlIHlvdSBoYXZlIHRoZQorICAgICAgICAgIGxhdGVzdCB2ZXJzaW9uLgorCisgICA0LjMuIE9wZXJhdGluZyBTeXN0ZW0gb3IgVGVjaG5vbG9neSBMaW1pdGF0aW9ucworICAgICAgICAKKyAgICAgICAgKiBQQ0kgSG90IFBsdWcgaXMgdW50ZXN0ZWQgYW5kIG1heSBjYXVzZSB0aGUgb3BlcmF0aW5nIHN5c3RlbSAKKyAgICAgICAgICB0byBzdG9wIHJlc3BvbmRpbmcuCisgICAgICAgICogTHVucyB0aGF0IGFyZSBub3QgbnVtYmVyZWQgY29udGlndW91c2x5IHN0YXJ0aW5nIHdpdGggMCBtaWdodCBub3QKKyAgICAgICAgICBiZSBhdXRvbWF0aWNhbGx5IHByb2JlZCBkdXJpbmcgc3lzdGVtIHN0YXJ0dXAuICBUaGlzIGlzIGEgbGltaXRhdGlvbgorICAgICAgICAgIG9mIHRoZSBPUy4gIFBsZWFzZSBjb250YWN0IHlvdXIgTGludXggdmVuZG9yIGZvciBpbnN0cnVjdGlvbnMgb24KKyAgICAgICAgICBtYW51YWxseSBwcm9iaW5nIG5vbi1jb250aWd1b3VzIGx1bnMuCisgICAgICAgICogVXNpbmcgdGhlIERyaXZlciBVcGRhdGUgRGlzayB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZSBkdXJpbmcgT1MKKyAgICAgICAgICBpbnN0YWxsYXRpb24gdW5kZXIgUmVkSGF0IG1pZ2h0IHJlc3VsdCBpbiB0d28gdmVyc2lvbnMgb2YgdGhpcworICAgICAgICAgIGRyaXZlciBiZWluZyBpbnN0YWxsZWQgaW50byB0aGUgc3lzdGVtIG1vZHVsZSBkaXJlY3RvcnkuICBUaGlzCisgICAgICAgICAgbWlnaHQgY2F1c2UgcHJvYmxlbXMgd2l0aCB0aGUgL3NiaW4vbWtpbml0cmQgcHJvZ3JhbSBhbmQvb3IKKyAgICAgICAgICBvdGhlciBSUE0gcGFja2FnZXMgdGhhdCB0cnkgdG8gaW5zdGFsbCBzeXN0ZW0gbW9kdWxlcy4gIFRoZSBiZXN0CisgICAgICAgICAgd2F5IHRvIGNvcnJlY3QgdGhpcyBvbmNlIHRoZSBzeXN0ZW0gaXMgcnVubmluZyBpcyB0byBpbnN0YWxsCisgICAgICAgICAgdGhlIGxhdGVzdCBSUE0gcGFja2FnZSB2ZXJzaW9uIG9mIHRoaXMgZHJpdmVyLCBhdmFpbGFibGUgZnJvbQorICAgICAgICAgIGh0dHA6Ly93d3cuYWRhcHRlYy5jb20uCisKKworNS4gQWRhcHRlYyBDdXN0b21lciBTdXBwb3J0CisKKyAgIEEgVGVjaG5pY2FsIFN1cHBvcnQgSWRlbnRpZmljYXRpb24gKFRTSUQpIE51bWJlciBpcyByZXF1aXJlZCBmb3IgCisgICBBZGFwdGVjIHRlY2huaWNhbCBzdXBwb3J0LgorICAgIC0gVGhlIDEyLWRpZ2l0IFRTSUQgY2FuIGJlIGZvdW5kIG9uIHRoZSB3aGl0ZSBiYXJjb2RlLXR5cGUgbGFiZWwKKyAgICAgIGluY2x1ZGVkIGluc2lkZSB0aGUgYm94IHdpdGggeW91ciBwcm9kdWN0LiAgVGhlIFRTSUQgaGVscHMgdXMgCisgICAgICBwcm92aWRlIG1vcmUgZWZmaWNpZW50IHNlcnZpY2UgYnkgYWNjdXJhdGVseSBpZGVudGlmeWluZyB5b3VyIAorICAgICAgcHJvZHVjdCBhbmQgc3VwcG9ydCBzdGF0dXMuCisKKyAgIFN1cHBvcnQgT3B0aW9ucworICAgIC0gU2VhcmNoIHRoZSBBZGFwdGVjIFN1cHBvcnQgS25vd2xlZGdlYmFzZSAoQVNLKSBhdAorICAgICAgaHR0cDovL2Fzay5hZGFwdGVjLmNvbSBmb3IgYXJ0aWNsZXMsIHRyb3VibGVzaG9vdGluZyB0aXBzLCBhbmQKKyAgICAgIGZyZXF1ZW50bHkgYXNrZWQgcXVlc3Rpb25zIGFib3V0IHlvdXIgcHJvZHVjdC4KKyAgICAtIEZvciBzdXBwb3J0IHZpYSBFbWFpbCwgc3VibWl0IHlvdXIgcXVlc3Rpb24gdG8gQWRhcHRlYydzIAorICAgICAgVGVjaG5pY2FsIFN1cHBvcnQgU3BlY2lhbGlzdHMgYXQgaHR0cDovL2Fzay5hZGFwdGVjLmNvbS8uCisgICAgIAorICAgTm9ydGggQW1lcmljYQorICAgIC0gVmlzaXQgb3VyIFdlYiBzaXRlIGF0IGh0dHA6Ly93d3cuYWRhcHRlYy5jb20vLgorICAgIC0gRm9yIGluZm9ybWF0aW9uIGFib3V0IEFkYXB0ZWMncyBzdXBwb3J0IG9wdGlvbnMsIGNhbGwKKyAgICAgIDQwOC05NTctMjU1MCwgMjQgaG91cnMgYSBkYXksIDcgZGF5cyBhIHdlZWsuCisgICAgLSBUbyBzcGVhayB3aXRoIGEgVGVjaG5pY2FsIFN1cHBvcnQgU3BlY2lhbGlzdCwKKyAgICAgICogRm9yIGhhcmR3YXJlIHByb2R1Y3RzLCBjYWxsIDQwOC05MzQtNzI3NCwKKyAgICAgICAgTW9uZGF5IHRvIEZyaWRheSwgMzowMCBhbSB0byA1OjAwIHBtLCBQRFQuCisgICAgICAqIEZvciBSQUlEIGFuZCBGaWJyZSBDaGFubmVsIHByb2R1Y3RzLCBjYWxsIDMyMS0yMDctMjAwMCwKKyAgICAgICAgTW9uZGF5IHRvIEZyaWRheSwgMzowMCBhbSB0byA1OjAwIHBtLCBQRFQuCisgICAgICBUbyBleHBlZGl0ZSB5b3VyIHNlcnZpY2UsIGhhdmUgeW91ciBjb21wdXRlciB3aXRoIHlvdS4KKyAgICAtIFRvIG9yZGVyIEFkYXB0ZWMgcHJvZHVjdHMsIGluY2x1ZGluZyBhY2Nlc3NvcmllcyBhbmQgY2FibGVzLAorICAgICAgY2FsbCA0MDgtOTU3LTcyNzQuICBUbyBvcmRlciBjYWJsZXMgb25saW5lIGdvIHRvCisgICAgICBodHRwOi8vd3d3LmFkYXB0ZWMuY29tL2J1eS1jYWJsZXMvLgorCisgICBFdXJvcGUKKyAgICAtIFZpc2l0IG91ciBXZWIgc2l0ZSBhdCBodHRwOi8vd3d3LmFkYXB0ZWMuY29tL2VuLVVTL19jb21tb24vd29ybGRfaW5kZXguCisgICAgLSBUbyBzcGVhayB3aXRoIGEgVGVjaG5pY2FsIFN1cHBvcnQgU3BlY2lhbGlzdCwgY2FsbCwgb3IgZW1haWwsCisgICAgICAqIEdlcm1hbjogICs0OSA4OSA0MzY2IDU1MjIsIE1vbmRheS1GcmlkYXksIDk6MDAtMTc6MDAgQ0VULAorICAgICAgICBodHRwOi8vYXNrLWRlLmFkYXB0ZWMuY29tLy4KKyAgICAgICogRnJlbmNoOiAgKzQ5IDg5IDQzNjYgNTUzMywgTW9uZGF5LUZyaWRheSwgOTowMC0xNzowMCBDRVQsCisJaHR0cDovL2Fzay1mci5hZGFwdGVjLmNvbS8uCisgICAgICAqIEVuZ2xpc2g6ICs0OSA4OSA0MzY2IDU1NDQsIE1vbmRheS1GcmlkYXksIDk6MDAtMTc6MDAgR01ULAorCWh0dHA6Ly9hc2suYWRhcHRlYy5jb20vLgorICAgIC0gWW91IGNhbiBvcmRlciBBZGFwdGVjIGNhYmxlcyBvbmxpbmUgYXQKKyAgICAgIGh0dHA6Ly93d3cuYWRhcHRlYy5jb20vYnV5LWNhYmxlcy8uCisKKyAgIEphcGFuCisgICAgLSBWaXNpdCBvdXIgd2ViIHNpdGUgYXQgaHR0cDovL3d3dy5hZGFwdGVjLmNvLmpwLy4KKyAgICAtIFRvIHNwZWFrIHdpdGggYSBUZWNobmljYWwgU3VwcG9ydCBTcGVjaWFsaXN0LCBjYWxsIAorICAgICAgKzgxIDMgNTMwOCA2MTIwLCBNb25kYXktRnJpZGF5LCA5OjAwIGEubS4gdG8gMTI6MDAgcC5tLiwKKyAgICAgIDE6MDAgcC5tLiB0byA2OjAwIHAubS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwMyBBZGFwdGVjIEluYy4gNjkxIFMuIE1pbHBpdGFzIEJsdmQuLCBNaWxwaXRhcyBDQSA5NTAzNSBVU0EuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFlvdSBhcmUgcGVybWl0dGVkIHRvIHJlZGlzdHJpYnV0ZSwgdXNlIGFuZCBtb2RpZnkgdGhpcyBSRUFETUUgZmlsZSBpbiB3aG9sZQorICogb3IgaW4gcGFydCBpbiBjb25qdW5jdGlvbiB3aXRoIHJlZGlzdHJpYnV0aW9uIG9mIHNvZnR3YXJlIGdvdmVybmVkIGJ5IHRoZQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBSRUFETUUgZmlsZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zLCBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLAorICogICAgd2l0aG91dCBtb2RpZmljYXRpb24uCisgKiAyLiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKyAqICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogMy4gTW9kaWZpY2F0aW9ucyBvciBuZXcgY29udHJpYnV0aW9ucyBtdXN0IGJlIGF0dHJpYnV0ZWQgaW4gYSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSBpZGVudGlmeWluZyB0aGUgYXV0aG9yICgiQ29udHJpYnV0b3IiKSBhbmQgYWRkZWQgYmVsb3cgdGhlCisgKiAgICBvcmlnaW5hbCBjb3B5cmlnaHQgbm90aWNlLiBUaGUgY29weXJpZ2h0IG5vdGljZSBpcyBmb3IgcHVycG9zZXMgb2YKKyAqICAgIGlkZW50aWZ5aW5nIGNvbnRyaWJ1dG9ycyBhbmQgc2hvdWxkIG5vdCBiZSBkZWVtZWQgYXMgcGVybWlzc2lvbiB0byBhbHRlcgorICogICAgdGhlIHBlcm1pc3Npb25zIGdpdmVuIGJ5IEFkYXB0ZWMuCisgKgorICogVEhJUyBSRUFETUUgRklMRSBJUyBQUk9WSURFRCBCWSBBREFQVEVDIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgQU5ZCisgKiBXQVJSQU5USUVTIE9GIE5PTi1JTkZSSU5HRU1FTlQgT1IgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkKKyAqIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwKKyAqIEFEQVBURUMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgUkVBRE1FCisgKiBGSUxFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvYWljN3h4eC50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvYWljN3h4eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M1ZDAyMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2NzaS9haWM3eHh4LnR4dApAQCAtMCwwICsxLDM5NCBAQAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKz0gICAgQWRhcHRlYyBBaWM3eHh4IEZhc3QgLT4gVWx0cmExNjAgRmFtaWx5IE1hbmFnZXIgU2V0IHY3LjAgICAgICA9Cis9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFQURNRSBmb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgPQorPSAgICAgICAgICAgICAgICAgICAgIFRoZSBMaW51eCBPcGVyYXRpbmcgU3lzdGVtICAgICAgICAgICAgICAgICAgID0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIGluIHRoaXMgZmlsZToKKworICAxLiBTdXBwb3J0ZWQgSGFyZHdhcmUKKyAgMi4gVmVyc2lvbiBIaXN0b3J5CisgIDMuIENvbW1hbmQgTGluZSBPcHRpb25zCisgIDQuIENvbnRhY3RpbmcgQWRhcHRlYworCisxLiBTdXBwb3J0ZWQgSGFyZHdhcmUKKworICAgVGhlIGZvbGxvd2luZyBBZGFwdGVjIFNDU0kgQ2hpcHMgYW5kIEhvc3QgQWRhcHRlcnMgYXJlIHN1cHBvcnRlZCBieQorICAgdGhlIGFpYzd4eHggZHJpdmVyLiAKKworICAgQ2hpcCAgICBNSVBTICBIb3N0IEJ1cyAgTWF4U3luYyAgTWF4V2lkdGggIFNDQnMgIE5vdGVzCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIGFpYzc3NzAgIDEwICAgIEVJU0EvVkwgICAxME1IeiAgICAxNkJpdCAgICAgIDQgICAxCisgICBhaWM3ODUwICAxMCAgICBQQ0kvMzIgICAgMTBNSHogICAgOEJpdCAgICAgICAzCisgICBhaWM3ODU1ICAxMCAgICBQQ0kvMzIgICAgMTBNSHogICAgOEJpdCAgICAgICAzCisgICBhaWM3ODU2ICAxMCAgICBQQ0kvMzIgICAgMTBNSHogICAgOEJpdCAgICAgICAzCisgICBhaWM3ODU5ICAxMCAgICBQQ0kvMzIgICAgMjBNSHogICAgOEJpdCAgICAgICAzCisgICBhaWM3ODYwICAxMCAgICBQQ0kvMzIgICAgMjBNSHogICAgOEJpdCAgICAgICAzCisgICBhaWM3ODcwICAxMCAgICBQQ0kvMzIgICAgMTBNSHogICAgMTZCaXQgICAgICAxNgorICAgYWljNzg4MCAgMTAgICAgUENJLzMyICAgIDIwTUh6ICAgIDE2Qml0ICAgICAgMTYKKyAgIGFpYzc4OTAgIDIwICAgIFBDSS8zMiAgICA0ME1IeiAgICAxNkJpdCAgICAgIDE2ICAgICAgMyA0IDUgNiA3IDgKKyAgIGFpYzc4OTEgIDIwICAgIFBDSS82NCAgICA0ME1IeiAgICAxNkJpdCAgICAgIDE2ICAgICAgMyA0IDUgNiA3IDgKKyAgIGFpYzc4OTIgIDIwICAgUENJLzY0LTY2ICA4ME1IeiAgICAxNkJpdCAgICAgIDE2ICAgICAgMyA0IDUgNiA3IDgKKyAgIGFpYzc4OTUgIDE1ICAgIFBDSS8zMiAgICAyME1IeiAgICAxNkJpdCAgICAgIDE2ICAgIDIgMyA0IDUKKyAgIGFpYzc4OTVDIDE1ICAgIFBDSS8zMiAgICAyME1IeiAgICAxNkJpdCAgICAgIDE2ICAgIDIgMyA0IDUgICAgIDgKKyAgIGFpYzc4OTYgIDIwICAgIFBDSS8zMiAgICA0ME1IeiAgICAxNkJpdCAgICAgIDE2ICAgIDIgMyA0IDUgNiA3IDgKKyAgIGFpYzc4OTcgIDIwICAgIFBDSS82NCAgICA0ME1IeiAgICAxNkJpdCAgICAgIDE2ICAgIDIgMyA0IDUgNiA3IDgKKyAgIGFpYzc4OTkgIDIwICAgUENJLzY0LTY2ICA4ME1IeiAgICAxNkJpdCAgICAgIDE2ICAgIDIgMyA0IDUgNiA3IDgKKworICAgMS4gICBNdWx0aXBsZXhlZCBUd2luIENoYW5uZWwgRGV2aWNlIC0gT25lIGNvbnRyb2xsZXIgc2VydmljaW5nIHR3bworICAgICAgICBidXNzZXMuCisgICAyLiAgIE11bHRpLWZ1bmN0aW9uIFR3aW4gQ2hhbm5lbCBEZXZpY2UgLSBUd28gY29udHJvbGxlcnMgb24gb25lIGNoaXAuCisgICAzLiAgIENvbW1hbmQgQ2hhbm5lbCBTZWNvbmRhcnkgRE1BIEVuZ2luZSAtIEFsbG93cyBzY2F0dGVyIGdhdGhlciBsaXN0CisgICAgICAgIGFuZCBTQ0IgcHJlZmV0Y2guCisgICA0LiAgIDY0IEJ5dGUgU0NCIFN1cHBvcnQgLSBBbGxvd3MgZGlzY29ubmVjdGVkLCB1bnRhZ2dlZCByZXF1ZXN0IHRhYmxlCisgICAgICAgIGZvciBhbGwgcG9zc2libGUgdGFyZ2V0L2x1biBjb21iaW5hdGlvbnMuCisgICA1LiAgIEJsb2NrIE1vdmUgSW5zdHJ1Y3Rpb24gU3VwcG9ydCAtIERvdWJsZXMgdGhlIHNwZWVkIG9mIGNlcnRhaW4KKyAgICAgICAgc2VxdWVuY2VyIG9wZXJhdGlvbnMuCisgICA2LiAgIGBCYXlvbmV0JyBzdHlsZSBTY2F0dGVyIEdhdGhlciBFbmdpbmUgLSBJbXByb3ZlcyBTL0cgcHJlZmV0Y2gKKyAgICAgICAgcGVyZm9ybWFuY2UuCisgICA3LiAgIFF1ZXVpbmcgUmVnaXN0ZXJzIC0gQWxsb3dzIHF1ZXVpbmcgb2YgbmV3IHRyYW5zYWN0aW9ucyB3aXRob3V0CisgICAgICAgIHBhdXNpbmcgdGhlIHNlcXVlbmNlci4KKyAgIDguICAgTXVsdGlwbGUgVGFyZ2V0IElEcyAtIEFsbG93cyB0aGUgY29udHJvbGxlciB0byByZXNwb25kIHRvIHNlbGVjdGlvbgorICAgICAgICBhcyBhIHRhcmdldCBvbiBtdWx0aXBsZSBTQ1NJIElEcy4KKworICAgQ29udHJvbGxlciAgICAgIENoaXAgICBIb3N0LUJ1cyAgICBJbnQtQ29ubmVjdG9ycyAgRXh0LUNvbm5lY3RvcnMgIE5vdGVzCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgQUhBLTI3NFhbQV0gICAgYWljNzc3MCAgIEVJU0EgICAgICAgICBTRS01ME0gICAgICAgICBTRS1IRDUwRgorICAgQUhBLTI3NFhbQV1XICAgYWljNzc3MCAgIEVJU0EgICAgICAgICBTRS1IRDY4RiAgICAgICBTRS1IRDY4RgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRS01ME0KKyAgIEFIQS0yNzRYW0FdVCAgIGFpYzc3NzAgICBFSVNBICAgICAgIDIgWCBTRS01ME0gICAgICAgU0UtSEQ1MEYKKyAgIEFIQS0yODQyICAgICAgIGFpYzc3NzAgICAgVkwgICAgICAgICAgU0UtNTBNICAgICAgICAgU0UtSEQ1MEYKKyAgIEFIQS0yOTQwQVUgICAgIGFpYzc4NjAgICBQQ0kvMzIgICAgICAgU0UtNTBNICAgICAgICAgU0UtSEQ1MEYKKyAgIEFWQS0yOTAySSAgICAgIGFpYzc4NjAgICBQQ0kvMzIgICAgICAgU0UtNTBNCisgICBBVkEtMjkwMkUgICAgICBhaWM3ODYwICAgUENJLzMyICAgICAgIFNFLTUwTQorICAgQVZBLTI5MDYgICAgICAgYWljNzg1NiAgIFBDSS8zMiAgICAgICBTRS01ME0gICAgICAgICBTRS1EQjI1RgorICAgQVBDLTc4NTAgICAgICAgYWljNzg1MCAgIFBDSS8zMiAgICAgICBTRS01ME0gICAgICAgICAgICAgICAgICAgICAgIDEKKyAgIEFWQS0yOTQwICAgICAgIGFpYzc4NjAgICBQQ0kvMzIgICAgICAgU0UtNTBNCisgICBBSEEtMjkyMEIgICAgICBhaWM3ODYwICAgUENJLzMyICAgICAgIFNFLTUwTQorICAgQUhBLTI5MzBCICAgICAgYWljNzg2MCAgIFBDSS8zMiAgICAgICBTRS01ME0KKyAgIEFIQS0yOTIwQyAgICAgIGFpYzc4NTYgICBQQ0kvMzIgICAgICAgU0UtNTBNICAgICAgICAgU0UtSEQ1MEYKKyAgIEFIQS0yOTMwQyAgICAgIGFpYzc4NjAgICBQQ0kvMzIgICAgICAgU0UtNTBNCisgICBBSEEtMjkzMEMgICAgICBhaWM3ODYwICAgUENJLzMyICAgICAgIFNFLTUwTQorICAgQUhBLTI5MTBDICAgICAgYWljNzg2MCAgIFBDSS8zMiAgICAgICBTRS01ME0KKyAgIEFIQS0yOTE1QyAgICAgIGFpYzc4NjAgICBQQ0kvMzIgICAgICAgU0UtNTBNCisgICBBSEEtMjk0MEFVL0NOICBhaWM3ODYwICAgUENJLzMyICAgICAgIFNFLTUwTSAgICAgICAgIFNFLUhENTBGCisgICBBSEEtMjk0NFcgICAgICBhaWM3ODcwICAgUENJLzMyICAgICBIVkQtSEQ2OEYgICAgICAgIEhWRC1IRDY4RgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhWRC01ME0KKyAgIEFIQS0zOTQwVyAgICAgIGFpYzc4NzAgICBQQ0kvMzIgICAgIDIgWCBTRS1IRDY4RiAgICAgU0UtSEQ2OEYgICAgICAgIDIKKyAgIEFIQS0yOTQwVVcgICAgIGFpYzc4ODAgICBQQ0kvMzIgICAgICAgU0UtSEQ2OEYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0UtNTBNICAgICAgICAgU0UtSEQ2OEYKKyAgIEFIQS0yOTQwVSAgICAgIGFpYzc4ODAgICBQQ0kvMzIgICAgICAgU0UtNTBNICAgICAgICAgU0UtSEQ1MEYKKyAgIEFIQS0yOTQwRCAgICAgIGFpYzc4ODAgICBQQ0kvMzIKKyAgIGFIQS0yOTQwIEEvVCAgIGFpYzc4ODAgICBQQ0kvMzIKKyAgIEFIQS0yOTQwRCBBL1QgIGFpYzc4ODAgICBQQ0kvMzIKKyAgIEFIQS0zOTQwVVcgICAgIGFpYzc4ODAgICBQQ0kvMzIgICAgIDIgWCBTRS1IRDY4RiAgICAgU0UtSEQ2OEYgICAgICAgICAgMworICAgQUhBLTM5NDBVV0QgICAgYWljNzg4MCAgIFBDSS8zMiAgICAgMiBYIFNFLUhENjhGICAgMiBYIFNFLVZIRDY4RiAgICAgICAzCisgICBBSEEtMzk0MFUgICAgICBhaWM3ODgwICAgUENJLzMyICAgICAyIFggU0UtNTBNICAgICAgIFNFLUhENTBGICAgICAgICAgIDMKKyAgIEFIQS0yOTQ0VVcgICAgIGFpYzc4ODAgICBQQ0kvMzIgICAgICBIVkQtSEQ2OEYgICAgICAgSFZELUhENjhGCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhWRC01ME0KKyAgIEFIQS0zOTQ0VVdEICAgIGFpYzc4ODAgICBQQ0kvMzIgICAgIDIgWCBIVkQtSEQ2OEYgIDIgWCBIVkQtVkhENjhGICAgICAgMworICAgQUhBLTQ5NDRVVyAgICAgYWljNzg4MCAgIFBDSS8zMgorICAgQUhBLTI5MzBVVyAgICAgYWljNzg4MCAgIFBDSS8zMgorICAgQUhBLTI5NDBVVyBQcm8gYWljNzg4MCAgIFBDSS8zMiAgICAgIFNFLUhENjhGICAgICAgICBTRS1IRDY4RiAgICAgICAgICAgIDQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0UtNTBNCisgICBBSEEtMjk0MFVXL0NOICBhaWM3ODgwICAgUENJLzMyCisgICBBSEEtMjk0MFVEdWFsICBhaWM3ODk1ICAgUENJLzMyCisgICBBSEEtMjk0MFVXRHVhbCBhaWM3ODk1ICAgUENJLzMyCisgICBBSEEtMzk0MFVXRCAgICBhaWM3ODk1ICAgUENJLzMyCisgICBBSEEtMzk0MEFVVyAgICBhaWM3ODk1ICAgUENJLzMyCisgICBBSEEtMzk0MEFVV0QgICBhaWM3ODk1ICAgUENJLzMyCisgICBBSEEtMzk0MEFVICAgICBhaWM3ODk1ICAgUENJLzMyCisgICBBSEEtMzk0NEFVV0QgICBhaWM3ODk1ICAgUENJLzMyICAgICAyIFggSFZELUhENjhGICAyIFggSFZELVZIRDY4RgorICAgQUhBLTI5NDBVMkIgICAgYWljNzg5MCAgIFBDSS8zMiAgICAgIExWRC1IRDY4RiAgICAgICBMVkQtSEQ2OEYKKyAgIEFIQS0yOTQwVTIgT0VNIGFpYzc4OTEgICBQQ0kvNjQKKyAgIEFIQS0yOTQwVTJXICAgIGFpYzc4OTAgICBQQ0kvMzIgICAgICBMVkQtSEQ2OEYgICAgICAgTFZELUhENjhGCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0UtSEQ2OEYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFLTUwTQorICAgQUhBLTI5NTBVMkIgICAgYWljNzg5MSAgIFBDSS82NCAgICAgIExWRC1IRDY4RiAgICAgICBMVkQtSEQ2OEYKKyAgIEFIQS0yOTMwVTIgICAgIGFpYzc4OTAgICBQQ0kvMzIgICAgICBMVkQtSEQ2OEYgICAgICAgU0UtSEQ1MEYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0UtNTBNIAorICAgQUhBLTM5NTBVMkIgICAgYWljNzg5NyAgIFBDSS82NAorICAgQUhBLTM5NTBVMkQgICAgYWljNzg5NyAgIFBDSS82NAorICAgQUhBLTI5MTYwICAgICAgYWljNzg5MiAgIFBDSS82NC02NgorICAgQUhBLTI5MTYwIENQUSAgYWljNzg5MiAgIFBDSS82NC02NgorICAgQUhBLTI5MTYwTiAgICAgYWljNzg5MiAgIFBDSS8zMiAgICAgIExWRC1IRDY4RiAgICAgICBTRS1IRDUwRgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRS01ME0KKyAgIEFIQS0yOTE2MExQICAgIGFpYzc4OTIgICBQQ0kvNjQtNjYKKyAgIEFIQS0xOTE2MCAgICAgIGFpYzc4OTIgICBQQ0kvNjQtNjYKKyAgIEFIQS0yOTE1MExQICAgIGFpYzc4OTIgICBQQ0kvNjQtNjYKKyAgIEFIQS0yOTEzMExQICAgIGFpYzc4OTIgICBQQ0kvNjQtNjYKKyAgIEFIQS0zOTYwRCAgICAgIGFpYzc4OTkgICBQQ0kvNjQtNjYgIDIgWCBMVkQtSEQ2OEYgIDIgWCBMVkQtVkhENjhGCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExWRC01ME0KKyAgIEFIQS0zOTYwRCBDUFEgIGFpYzc4OTkgICBQQ0kvNjQtNjYgIDIgWCBMVkQtSEQ2OEYgIDIgWCBMVkQtVkhENjhGCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExWRC01ME0KKyAgIEFIQS0zOTE2MCAgICAgIGFpYzc4OTkgICBQQ0kvNjQtNjYgIDIgWCBMVkQtSEQ2OEYgIDIgWCBMVkQtVkhENjhGCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExWRC01ME0KKworICAgMS4gTm8gQklPUyBzdXBwb3J0CisgICAyLiBERUMyMTA1MCBQQ0ktUENJIGJyaWRnZSB3aXRoIG11bHRpcGxlIGNvbnRyb2xsZXIgY2hpcHMgb24gc2Vjb25kYXJ5IGJ1cworICAgMy4gREVDMjExNVggUENJLVBDSSBicmlkZ2Ugd2l0aCBtdWx0aXBsZSBjb250cm9sbGVyIGNoaXBzIG9uIHNlY29uZGFyeSBidXMKKyAgIDQuIEFsbCB0aHJlZSBTQ1NJIGNvbm5lY3RvcnMgbWF5IGJlIHVzZWQgc2ltdWx0YW5lb3VzbHkgd2l0aG91dAorICAgICAgU0NTSSAic3R1YiIgZWZmZWN0cy4KKworMi4gVmVyc2lvbiBIaXN0b3J5CisgICA3LjAJICAoNHRoIEF1Z3VzdCwgMjAwNSkKKwktIFVwZGF0ZWQgZHJpdmVyIHRvIHVzZSBTQ1NJIHRyYW5zcG9ydCBjbGFzcyBpbmZyYXN0cnVjdHVyZQorCS0gVXBwb3J0ZWQgc2VxdWVuY2VyIGFuZCBjb3JlIGZpeGVzIGZyb20gbGFzdCBhZGFwdGVjIHJlbGVhc2VkCisJICB2ZXJzaW9uIG9mIHRoZSBkcml2ZXIuCisgICA2LjIuMzYgKEp1bmUgM3JkLCAyMDAzKQorICAgICAgICAtIENvcnJlY3QgY29kZSB0aGF0IGRpc2FibGVzIFBDSSBwYXJpdHkgZXJyb3IgY2hlY2tpbmcuCisgICAgICAgIC0gQ29ycmVjdCBhbmQgc2ltcGxpZnkgaGFuZGxpbmcgb2YgdGhlIGlnbm9yZSB3aWRlIHJlc2lkdWUKKyAgICAgICAgICBtZXNzYWdlLiAgVGhlIHByZXZpb3VzIGNvZGUgd291bGQgZmFpbCB0byByZXBvcnQgYSByZXNpZHVhbAorICAgICAgICAgIGlmIHRoZSB0cmFuc2FjdGlvbiBkYXRhIGxlbmd0aCB3YXMgZXZlbiBhbmQgd2UgcmVjZWl2ZWQKKyAgICAgICAgICBhbiBJV1IgbWVzc2FnZS4KKyAgICAgICAgLSBBZGQgc3VwcG9ydCBmb3IgdGhlIDIuNS5YIEVJU0EgZnJhbWV3b3JrLgorICAgICAgICAtIFVwZGF0ZSBmb3IgY2hhbmdlIGluIDIuNS5YIFNDU0kgcHJvYyBGUyBpbnRlcmZhY2UuCisgICAgICAgIC0gQ29ycmVjdCBEb21haW4gVmFsaWRhdGlvbiBjb21tYW5kLWxpbmUgb3B0aW9uIHBhcnNpbmcuCisgICAgICAgIC0gV2hlbiBuZWdvdGlhdGlvbiBhc3luYyB2aWEgYW4gOGJpdCBXRFRSIG1lc3NhZ2UsIHNlbmQKKyAgICAgICAgICBhbiBTRFRSIHdpdGggYW4gb2Zmc2V0IG9mIDAgdG8gYmUgc3VyZSB0aGUgdGFyZ2V0CisgICAgICAgICAga25vd3Mgd2UgYXJlIGFzeW5jLiAgVGhpcyB3b3JrcyBhcm91bmQgYSBmaXJtd2FyZSBkZWZlY3QKKyAgICAgICAgICBpbiB0aGUgUXVhbnR1bSBBdGxhcyAxMEsuCisgICAgICAgIC0gQ2xlYXIgUENJIGVycm9yIHN0YXRlIGR1cmluZyBkcml2ZXIgYXR0YWNoIHNvIHRoYXQgd2UKKyAgICAgICAgICBkb24ndCBkaXNhYmxlIG1lbW9yeSBtYXBwZWQgSS9PIGR1ZSB0byBhIHN0cmF5IHdyaXRlCisgICAgICAgICAgYnkgc29tZSBvdGhlciBkcml2ZXIgcHJvYmUgdGhhdCBvY2N1cnJlZCBiZWZvcmUgd2UKKyAgICAgICAgICBjbGFpbWVkIHRoZSBjb250cm9sbGVyLgorCisgICA2LjIuMzUgKE1heSAxNHRoLCAyMDAzKQorICAgICAgICAtIEZpeCBhIGZldyBHQ0MgMy4zIGNvbXBpbGVyIHdhcm5pbmdzLgorICAgICAgICAtIENvcnJlY3Qgb3BlcmF0aW9uIG9uIEVJU0EgVHdpbiBDaGFubmVsIGNvbnRyb2xsZXIuCisgICAgICAgIC0gQWRkIHN1cHBvcnQgZm9yIDIuNS5YJ3Mgc2NzaV9yZXBvcnRfZGV2aWNlX3Jlc2V0KCkuCisKKyAgIDYuMi4zNCAoTWF5IDV0aCwgMjAwMykKKyAgICAgICAgLSBGaXggbG9ja2luZyByZWdyZXNzaW9uIGludHJvZHVjZWQgaW4gNi4yLjI5IHRoYXQKKyAgICAgICAgICBjb3VsZCBjYXVzZSBhIGxvY2sgb3JkZXIgcmV2ZXJzYWwgYmV0d2VlbiB0aGUgaW9fcmVxdWVzdF9sb2NrCisgICAgICAgICAgYW5kIG91ciBwZXItc29mdGMgbG9jay4gIFRoaXMgd2FzIG9ubHkgcG9zc2libGUgb24gUkg5LAorICAgICAgICAgIFN1U0UsIGFuZCBrZXJuZWwub3JnIDIuNC5YIGtlcm5lbHMuCisKKyAgIDYuMi4zMyAoQXByaWwgMzB0aCwgMjAwMykKKyAgICAgICAgLSBEeW5hbWljYWxseSBkaXNhYmxlIFBDSSBwYXJpdHkgZXJyb3IgcmVwb3J0aW5nIGFmdGVyCisgICAgICAgICAgMTAgZXJyb3JzIGFyZSByZXBvcnRlZCB0byB0aGUgdXNlci4gIFRoZXNlIGVycm9ycyBhcmUKKyAgICAgICAgICB0aGUgcmVzdWx0IG9mIHNvbWUgb3RoZXIgZGV2aWNlIGlzc3VpbmcgUENJIHRyYW5zYWN0aW9ucworICAgICAgICAgIHdpdGggYmFkIHBhcml0eS4gIE9uY2UgdGhlIHVzZXIgaGFzIGJlZW4gaW5mb3JtZWQgb2YgdGhlCisgICAgICAgICAgcHJvYmxlbSwgY29udGludWluZyB0byByZXBvcnQgdGhlIGVycm9ycyBqdXN0IGRlZ3JhZGVzCisgICAgICAgICAgb3VyIHBlcmZvcm1hbmNlLgorCisgICA2LjIuMzIgKE1hcmNoIDI4dGgsIDIwMDMpCisgICAgICAgIC0gRHluYW1pY2FsbHkgc2l6ZWQgUy9HIGxpc3RzIHRvIGF2b2lkIFNDU0kgbWFsbG9jCisgICAgICAgICAgcG9vbCBmcmFnbWVudGF0aW9uIGFuZCBTQ1NJIG1pZC1sYXllciBkZWFkbG9jay4KKworICAgNi4yLjI4IChKYW51YXJ5IDIwdGgsIDIwMDMpCisgICAgICAgIC0gRG9tYWluIFZhbGlkYXRpb24gRml4ZXMKKyAgICAgICAgLSBBZGQgYWJpbGl0eSB0byBkaXNhYmxlIFBDSSBwYXJpdHkgZXJyb3IgY2hlY2tpbmcuCisgICAgICAgIC0gRW5oYW5jZWQgTWVtb3J5IE1hcHBlZCBJL08gcHJvYmUKKworICAgNi4yLjIwIChOb3ZlbWJlciA3dGgsIDIwMDIpCisgICAgICAgIC0gQWRkZWQgRG9tYWluIFZhbGlkYXRpb24uCisKKzMuIENvbW1hbmQgTGluZSBPcHRpb25zCisKKyAgICAgICAgV0FSTklORzogQUxURVJJTkcgT1IgQURESU5HIFRIRVNFIERSSVZFUiBQQVJBTUVURVJTCisgICAgICAgICAgICAgICAgIElOQ09SUkVDVExZIENBTiBSRU5ERVIgWU9VUiBTWVNURU0gSU5PUEVSQUJMRS4KKyAgICAgICAgICAgICAgICAgVVNFIFRIRU0gV0lUSCBDQVVUSU9OLiAKKworICAgUHV0IGEgLmNvbmYgZmlsZSBpbiB0aGUgL2V0Yy9tb2Rwcm9iZS5kIGRpcmVjdG9yeSBhbmQgYWRkL2VkaXQgYQorICAgbGluZSBjb250YWluaW5nICdvcHRpb25zIGFpYzd4eHggYWljN3h4eD1bY29tbWFuZFssY29tbWFuZC4uLl1dJyB3aGVyZQorICAgJ2NvbW1hbmQnIGlzIG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmc6CisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICBPcHRpb246IHZlcmJvc2UKKyAgICAgICAgICBEZWZpbml0aW9uOiBlbmFibGUgYWRkaXRpb25hbCBpbmZvcm1hdGl2ZSBtZXNzYWdlcyBkdXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIgb3BlcmF0aW9uLgorICAgICBQb3NzaWJsZSBWYWx1ZXM6IFRoaXMgb3B0aW9uIGlzIGEgZmxhZworICAgICAgIERlZmF1bHQgVmFsdWU6IGRpc2FibGVkCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICBPcHRpb246IGRlYnVnOlt2YWx1ZV0KKyAgICAgICAgICBEZWZpbml0aW9uOiBFbmFibGVzIHZhcmlvdXMgbGV2ZWxzIG9mIGRlYnVnZ2luZyBpbmZvcm1hdGlvbgorICAgICBQb3NzaWJsZSBWYWx1ZXM6IDB4MDAwMCA9IG5vIGRlYnVnZ2luZywgMHhmZmZmID0gZnVsbCBkZWJ1Z2dpbmcKKyAgICAgICBEZWZhdWx0IFZhbHVlOiAweDAwMDAKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIE9wdGlvbjogbm9fcHJvYmUKKyAgICAgICAgICAgICAgT3B0aW9uOiBwcm9iZV9laXNhX3ZsCisgICAgICAgICAgRGVmaW5pdGlvbjogRG8gbm90IHByb2JlIGZvciBFSVNBL1ZMQiBjb250cm9sbGVycy4KKyAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIGEgdG9nZ2xlLiAgSWYgdGhlIGRyaXZlciBpcyBjb21waWxlZAorICAgICAgICAgICAgICAgICAgICAgIHRvIG5vdCBwcm9iZSBFSVNBL1ZMQiBjb250cm9sbGVycyBieSBkZWZhdWx0LAorICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnlpbmcgIm5vX3Byb2JlIiB3aWxsIGVuYWJsZSB0aGlzIHByb2JpbmcuCisgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIGRyaXZlciBpcyBjb21waWxlZCB0byBwcm9iZSBFSVNBL1ZMQgorICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXJzIGJ5IGRlZmF1bHQsIHNwZWNpZnlpbmcgIm5vX3Byb2JlIgorICAgICAgICAgICAgICAgICAgICAgIHdpbGwgZGlzYWJsZSB0aGlzIHByb2JpbmcuCisgICAgIFBvc3NpYmxlIFZhbHVlczogVGhpcyBvcHRpb24gaXMgYSB0b2dnbGUKKyAgICAgICBEZWZhdWx0IFZhbHVlOiBFSVNBL1ZMQiBwcm9iaW5nIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICBPcHRpb246IHBjaV9wYXJpdHkKKyAgICAgICAgICBEZWZpbml0aW9uOiBUb2dnbGVzIHRoZSBkZXRlY3Rpb24gb2YgUENJIHBhcml0eSBlcnJvcnMuCisgICAgICAgICAgICAgICAgICAgICAgT24gbWFueSBtb3RoZXJib2FyZHMgd2l0aCBWSUEgY2hpcHNldHMsCisgICAgICAgICAgICAgICAgICAgICAgUENJIHBhcml0eSBpcyBub3QgZ2VuZXJhdGVkIGNvcnJlY3RseSBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICBQQ0kgYnVzLiAgSXQgaXMgaW1wb3NzaWJsZSBmb3IgdGhlIGhhcmR3YXJlIHRvCisgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRoZXNlICJzcHVyaW91cyIgcGFyaXR5CisgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzIGFuZCByZWFsIHBhcml0eSBlcnJvcnMuICBUaGUgc3ltcHRvbSBvZgorICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcHJvYmxlbSBpcyBhIHN0cmVhbSBvZiB0aGUgbWVzc2FnZToKKyAgICAic2NzaTA6IERhdGEgUGFyaXR5IEVycm9yIERldGVjdGVkIGR1cmluZyBhZGRyZXNzIG9yIHdyaXRlIGRhdGEgcGhhc2UiCisgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IGJ5IHRoZSBkcml2ZXIuCisgICAgIFBvc3NpYmxlIFZhbHVlczogVGhpcyBvcHRpb24gaXMgYSB0b2dnbGUKKyAgICAgICBEZWZhdWx0IFZhbHVlOiBQQ0kgUGFyaXR5IEVycm9yIHJlcG9ydGluZyBpcyBkaXNhYmxlZAorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgT3B0aW9uOiBub19yZXNldAorICAgICAgICAgIERlZmluaXRpb246IERvIG5vdCByZXNldCB0aGUgYnVzIGR1cmluZyB0aGUgaW5pdGlhbCBwcm9iZQorICAgICAgICAgICAgICAgICAgICAgIHBoYXNlCisgICAgIFBvc3NpYmxlIFZhbHVlczogVGhpcyBvcHRpb24gaXMgYSBmbGFnCisgICAgICAgRGVmYXVsdCBWYWx1ZTogZGlzYWJsZWQKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIE9wdGlvbjogZXh0ZW5kZWQKKyAgICAgICAgICBEZWZpbml0aW9uOiBGb3JjZSBleHRlbmRlZCB0cmFuc2xhdGlvbiBvbiB0aGUgY29udHJvbGxlcgorICAgICBQb3NzaWJsZSBWYWx1ZXM6IFRoaXMgb3B0aW9uIGlzIGEgZmxhZworICAgICAgIERlZmF1bHQgVmFsdWU6IGRpc2FibGVkCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICBPcHRpb246IHBlcmlvZGljX290YWcKKyAgICAgICAgICBEZWZpbml0aW9uOiBTZW5kIGFuIG9yZGVyZWQgdGFnIHBlcmlvZGljYWxseSB0byBwcmV2ZW50CisgICAgICAgICAgICAgICAgICAgICAgdGFnIHN0YXJ2YXRpb24uICBOZWVkZWQgZm9yIHNvbWUgb2xkZXIgZGV2aWNlcworICAgICBQb3NzaWJsZSBWYWx1ZXM6IFRoaXMgb3B0aW9uIGlzIGEgZmxhZworICAgICAgIERlZmF1bHQgVmFsdWU6IGRpc2FibGVkCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICBPcHRpb246IHJldmVyc2Vfc2NhbgorICAgICAgICAgIERlZmluaXRpb246IFByb2JlIHRoZSBzY3NpIGJ1cyBpbiByZXZlcnNlIG9yZGVyLCBzdGFydGluZworICAgICAgICAgICAgICAgICAgICAgIHdpdGggdGFyZ2V0IDE1CisgICAgIFBvc3NpYmxlIFZhbHVlczogVGhpcyBvcHRpb24gaXMgYSBmbGFnCisgICAgICAgRGVmYXVsdCBWYWx1ZTogZGlzYWJsZWQKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIE9wdGlvbjogZ2xvYmFsX3RhZ19kZXB0aDpbdmFsdWVdCisgICAgICAgICAgRGVmaW5pdGlvbjogR2xvYmFsIHRhZyBkZXB0aCBmb3IgYWxsIHRhcmdldHMgb24gYWxsIGJ1c3Nlcy4KKyAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBzZXRzIHRoZSBkZWZhdWx0IHRhZyBkZXB0aCB3aGljaAorICAgICAgICAgICAgICAgICAgICAgIG1heSBiZSBzZWxlY3RpdmVseSBvdmVycmlkZGVuIHZpIHRoZSB0YWdfaW5mbworICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi4KKyAgICAgUG9zc2libGUgVmFsdWVzOiAxIC0gMjUzCisgICAgICAgRGVmYXVsdCBWYWx1ZTogMzIKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIE9wdGlvbjogdGFnX2luZm86e3t2YWx1ZVssdmFsdWUuLi5dfVsse3ZhbHVlWyx2YWx1ZS4uLl19Li4uXX0KKyAgICAgICAgICBEZWZpbml0aW9uOiBTZXQgdGhlIHBlci10YXJnZXQgdGFnZ2VkIHF1ZXVlIGRlcHRoIG9uIGEKKyAgICAgICAgICAgICAgICAgICAgICBwZXIgY29udHJvbGxlciBiYXNpcy4gIEJvdGggY29udHJvbGxlcnMgYW5kIHRhcmdldHMKKyAgICAgICAgICAgICAgICAgICAgICBtYXkgYmUgb21pdHRlZCBpbmRpY2F0aW5nIHRoYXQgdGhleSBzaG91bGQgcmV0YWluCisgICAgICAgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHQgdGFnIGRlcHRoLgorICAgICAgICAgICAgRXhhbXBsZXM6IHRhZ19pbmZvOnt7MTYsMzIsMzIsNjQsOCw4LCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMn0KKyAgICAgICAgICAgICAgICAgICAgICAgIE9uIENvbnRyb2xsZXIgMAorICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZXMgYSB0YWcgZGVwdGggb2YgMTYgZm9yIHRhcmdldCAwCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllcyBhIHRhZyBkZXB0aCBvZiA2NCBmb3IgdGFyZ2V0IDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIGEgdGFnIGRlcHRoIG9mIDggZm9yIHRhcmdldHMgNCBhbmQgNQorICAgICAgICAgICAgICAgICAgICAgICAgICBsZWF2ZXMgdGFyZ2V0IDYgYXQgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIGEgdGFnIGRlcHRoIG9mIDMyIGZvciB0YXJnZXRzIDEsMiw3LTE1CisgICAgICAgICAgICAgICAgICAgICAgICBBbGwgb3RoZXIgdGFyZ2V0cyByZXRhaW4gdGhlIGRlZmF1bHQgZGVwdGguCisKKyAgICAgICAgICAgICAgICAgICAgICB0YWdfaW5mbzp7e30sezMyLCwzMn19CisgICAgICAgICAgICAgICAgICAgICAgICBPbiBDb250cm9sbGVyIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIGEgdGFnIGRlcHRoIG9mIDMyIGZvciB0YXJnZXRzIDAgYW5kIDIKKyAgICAgICAgICAgICAgICAgICAgICAgIEFsbCBvdGhlciB0YXJnZXRzIHJldGFpbiB0aGUgZGVmYXVsdCBkZXB0aC4KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICBQb3NzaWJsZSBWYWx1ZXM6IDEgLSAyNTMKKyAgICAgICBEZWZhdWx0IFZhbHVlOiAzMgorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgT3B0aW9uOiBzZWx0aW1lOlt2YWx1ZV0KKyAgICAgICAgICBEZWZpbml0aW9uOiBTcGVjaWZpZXMgdGhlIHNlbGVjdGlvbiB0aW1lb3V0IHZhbHVlCisgICAgIFBvc3NpYmxlIFZhbHVlczogMCA9IDI1Nm1zLCAxID0gMTI4bXMsIDIgPSA2NG1zLCAzID0gMzJtcworICAgICAgIERlZmF1bHQgVmFsdWU6IDAKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgIE9wdGlvbjogZHY6IHt2YWx1ZVssdmFsdWUuLi5dfSAKKyAgICAgICAgICBEZWZpbml0aW9uOiBTZXQgRG9tYWluIFZhbGlkYXRpb24gUG9saWN5IG9uIGEgcGVyLWNvbnRyb2xsZXIgYmFzaXMuCisgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlcnMgbWF5IGJlIG9taXR0ZWQgaW5kaWNhdGluZyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgdGhleSBzaG91bGQgcmV0YWluIHRoZSBkZWZhdWx0IHJlYWQgc3RyZWFtaW5nIHNldHRpbmcuCisgICAgICAgICAgICAgRXhhbXBsZTogZHY6ey0xLDAsLDEsMSwwfQorICAgICAgICAgICAgICAgICAgICAgICAgT24gQ29udHJvbGxlciAwIGxlYXZlIERWIGF0IGl0cyBkZWZhdWx0IHNldHRpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICBPbiBDb250cm9sbGVyIDEgZGlzYWJsZSBEVi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNraXAgY29uZmlndXJhdGlvbiBvbiBDb250cm9sbGVyIDIuCisgICAgICAgICAgICAgICAgICAgICAgICBPbiBDb250cm9sbGVycyAzIGFuZCA0IGVuYWJsZSBEVi4KKyAgICAgICAgICAgICAgICAgICAgICAgIE9uIENvbnRyb2xsZXIgNSBkaXNhYmxlIERWLgorCisgICAgIFBvc3NpYmxlIFZhbHVlczogPCAwIFVzZSBzZXR0aW5nIGZyb20gc2VyaWFsIEVFUFJPTS4KKyAgICAgICAgICAgICAgICAgICAgICAwIERpc2FibGUgRFYKKyAgICAgICAgICAgICAgICAgICAgICA+IDAgRW5hYmxlIERWCisKKyAgICAgICBEZWZhdWx0IFZhbHVlOiBTQ1NJLVNlbGVjdCBzZXR0aW5nIG9uIGNvbnRyb2xsZXJzIHdpdGggYSBTQ1NJIFNlbGVjdAorICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiBmb3IgRFYuICBPdGhlcndpc2UsIG9uIGZvciBjb250cm9sbGVycyBzdXBwb3J0aW5nCisgICAgICAgICAgICAgICAgICAgICAgVTE2MCBzcGVlZHMgYW5kIG9mZiBmb3IgYWxsIG90aGVyIGNvbnRyb2xsZXIgdHlwZXMuCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICBFeGFtcGxlOgorICAgJ29wdGlvbnMgYWljN3h4eCBhaWM3eHh4PXZlcmJvc2Usbm9fcHJvYmUsdGFnX2luZm86e3t9LHssLDEwfX0sc2VsdGltZToxJworICAgICAgICBlbmFibGVzIHZlcmJvc2UgbG9nZ2luZywgRGlzYWJsZSBFSVNBL1ZMQiBwcm9iaW5nLAorICAgICAgICBhbmQgc2V0IHRhZyBkZXB0aCBvbiBDb250cm9sbGVyIDEvVGFyZ2V0IDIgdG8gMTAgdGFncy4KKworNC4gQWRhcHRlYyBDdXN0b21lciBTdXBwb3J0CisKKyAgIEEgVGVjaG5pY2FsIFN1cHBvcnQgSWRlbnRpZmljYXRpb24gKFRTSUQpIE51bWJlciBpcyByZXF1aXJlZCBmb3IgCisgICBBZGFwdGVjIHRlY2huaWNhbCBzdXBwb3J0LgorICAgIC0gVGhlIDEyLWRpZ2l0IFRTSUQgY2FuIGJlIGZvdW5kIG9uIHRoZSB3aGl0ZSBiYXJjb2RlLXR5cGUgbGFiZWwKKyAgICAgIGluY2x1ZGVkIGluc2lkZSB0aGUgYm94IHdpdGggeW91ciBwcm9kdWN0LiAgVGhlIFRTSUQgaGVscHMgdXMgCisgICAgICBwcm92aWRlIG1vcmUgZWZmaWNpZW50IHNlcnZpY2UgYnkgYWNjdXJhdGVseSBpZGVudGlmeWluZyB5b3VyIAorICAgICAgcHJvZHVjdCBhbmQgc3VwcG9ydCBzdGF0dXMuCisKKyAgIFN1cHBvcnQgT3B0aW9ucworICAgIC0gU2VhcmNoIHRoZSBBZGFwdGVjIFN1cHBvcnQgS25vd2xlZGdlYmFzZSAoQVNLKSBhdAorICAgICAgaHR0cDovL2Fzay5hZGFwdGVjLmNvbSBmb3IgYXJ0aWNsZXMsIHRyb3VibGVzaG9vdGluZyB0aXBzLCBhbmQKKyAgICAgIGZyZXF1ZW50bHkgYXNrZWQgcXVlc3Rpb25zIGFib3V0IHlvdXIgcHJvZHVjdC4KKyAgICAtIEZvciBzdXBwb3J0IHZpYSBFbWFpbCwgc3VibWl0IHlvdXIgcXVlc3Rpb24gdG8gQWRhcHRlYydzIAorICAgICAgVGVjaG5pY2FsIFN1cHBvcnQgU3BlY2lhbGlzdHMgYXQgaHR0cDovL2Fzay5hZGFwdGVjLmNvbS8uCisgICAgIAorICAgTm9ydGggQW1lcmljYQorICAgIC0gVmlzaXQgb3VyIFdlYiBzaXRlIGF0IGh0dHA6Ly93d3cuYWRhcHRlYy5jb20vLgorICAgIC0gRm9yIGluZm9ybWF0aW9uIGFib3V0IEFkYXB0ZWMncyBzdXBwb3J0IG9wdGlvbnMsIGNhbGwKKyAgICAgIDQwOC05NTctMjU1MCwgMjQgaG91cnMgYSBkYXksIDcgZGF5cyBhIHdlZWsuCisgICAgLSBUbyBzcGVhayB3aXRoIGEgVGVjaG5pY2FsIFN1cHBvcnQgU3BlY2lhbGlzdCwKKyAgICAgICogRm9yIGhhcmR3YXJlIHByb2R1Y3RzLCBjYWxsIDQwOC05MzQtNzI3NCwKKyAgICAgICAgTW9uZGF5IHRvIEZyaWRheSwgMzowMCBhbSB0byA1OjAwIHBtLCBQRFQuCisgICAgICAqIEZvciBSQUlEIGFuZCBGaWJyZSBDaGFubmVsIHByb2R1Y3RzLCBjYWxsIDMyMS0yMDctMjAwMCwKKyAgICAgICAgTW9uZGF5IHRvIEZyaWRheSwgMzowMCBhbSB0byA1OjAwIHBtLCBQRFQuCisgICAgICBUbyBleHBlZGl0ZSB5b3VyIHNlcnZpY2UsIGhhdmUgeW91ciBjb21wdXRlciB3aXRoIHlvdS4KKyAgICAtIFRvIG9yZGVyIEFkYXB0ZWMgcHJvZHVjdHMsIGluY2x1ZGluZyBhY2Nlc3NvcmllcyBhbmQgY2FibGVzLAorICAgICAgY2FsbCA0MDgtOTU3LTcyNzQuICBUbyBvcmRlciBjYWJsZXMgb25saW5lIGdvIHRvCisgICAgICBodHRwOi8vd3d3LmFkYXB0ZWMuY29tL2J1eS1jYWJsZXMvLgorCisgICBFdXJvcGUKKyAgICAtIFZpc2l0IG91ciBXZWIgc2l0ZSBhdCBodHRwOi8vd3d3LmFkYXB0ZWMuY29tL2VuLVVTL19jb21tb24vd29ybGRfaW5kZXguCisgICAgLSBUbyBzcGVhayB3aXRoIGEgVGVjaG5pY2FsIFN1cHBvcnQgU3BlY2lhbGlzdCwgY2FsbCwgb3IgZW1haWwsCisgICAgICAqIEdlcm1hbjogICs0OSA4OSA0MzY2IDU1MjIsIE1vbmRheS1GcmlkYXksIDk6MDAtMTc6MDAgQ0VULAorICAgICAgICBodHRwOi8vYXNrLWRlLmFkYXB0ZWMuY29tLy4KKyAgICAgICogRnJlbmNoOiAgKzQ5IDg5IDQzNjYgNTUzMywgTW9uZGF5LUZyaWRheSwgOTowMC0xNzowMCBDRVQsCisJaHR0cDovL2Fzay1mci5hZGFwdGVjLmNvbS8uCisgICAgICAqIEVuZ2xpc2g6ICs0OSA4OSA0MzY2IDU1NDQsIE1vbmRheS1GcmlkYXksIDk6MDAtMTc6MDAgR01ULAorCWh0dHA6Ly9hc2suYWRhcHRlYy5jb20vLgorICAgIC0gWW91IGNhbiBvcmRlciBBZGFwdGVjIGNhYmxlcyBvbmxpbmUgYXQKKyAgICAgIGh0dHA6Ly93d3cuYWRhcHRlYy5jb20vYnV5LWNhYmxlcy8uCisKKyAgIEphcGFuCisgICAgLSBWaXNpdCBvdXIgd2ViIHNpdGUgYXQgaHR0cDovL3d3dy5hZGFwdGVjLmNvLmpwLy4KKyAgICAtIFRvIHNwZWFrIHdpdGggYSBUZWNobmljYWwgU3VwcG9ydCBTcGVjaWFsaXN0LCBjYWxsIAorICAgICAgKzgxIDMgNTMwOCA2MTIwLCBNb25kYXktRnJpZGF5LCA5OjAwIGEubS4gdG8gMTI6MDAgcC5tLiwKKyAgICAgIDE6MDAgcC5tLiB0byA2OjAwIHAubS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwMyBBZGFwdGVjIEluYy4gNjkxIFMuIE1pbHBpdGFzIEJsdmQuLCBNaWxwaXRhcyBDQSA5NTAzNSBVU0EuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFlvdSBhcmUgcGVybWl0dGVkIHRvIHJlZGlzdHJpYnV0ZSwgdXNlIGFuZCBtb2RpZnkgdGhpcyBSRUFETUUgZmlsZSBpbiB3aG9sZQorICogb3IgaW4gcGFydCBpbiBjb25qdW5jdGlvbiB3aXRoIHJlZGlzdHJpYnV0aW9uIG9mIHNvZnR3YXJlIGdvdmVybmVkIGJ5IHRoZQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBSRUFETUUgZmlsZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zLCBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLAorICogICAgd2l0aG91dCBtb2RpZmljYXRpb24uCisgKiAyLiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKyAqICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogMy4gTW9kaWZpY2F0aW9ucyBvciBuZXcgY29udHJpYnV0aW9ucyBtdXN0IGJlIGF0dHJpYnV0ZWQgaW4gYSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSBpZGVudGlmeWluZyB0aGUgYXV0aG9yICgiQ29udHJpYnV0b3IiKSBhbmQgYWRkZWQgYmVsb3cgdGhlCisgKiAgICBvcmlnaW5hbCBjb3B5cmlnaHQgbm90aWNlLiBUaGUgY29weXJpZ2h0IG5vdGljZSBpcyBmb3IgcHVycG9zZXMgb2YKKyAqICAgIGlkZW50aWZ5aW5nIGNvbnRyaWJ1dG9ycyBhbmQgc2hvdWxkIG5vdCBiZSBkZWVtZWQgYXMgcGVybWlzc2lvbiB0byBhbHRlcgorICogICAgdGhlIHBlcm1pc3Npb25zIGdpdmVuIGJ5IEFkYXB0ZWMuCisgKgorICogVEhJUyBSRUFETUUgRklMRSBJUyBQUk9WSURFRCBCWSBBREFQVEVDIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgQU5ZCisgKiBXQVJSQU5USUVTIE9GIE5PTi1JTkZSSU5HRU1FTlQgT1IgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkKKyAqIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwKKyAqIEFEQVBURUMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCisgKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgUkVBRE1FCisgKiBGSUxFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvYXJjbXNyX3NwZWMudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL2FyY21zcl9zcGVjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWQ5NDgyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL2FyY21zcl9zcGVjLnR4dApAQCAtMCwwICsxLDU3NCBAQAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgQVJFQ0EgRklSTVdBUkUgU1BFQworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKioJVXNhZ2Ugb2YgSU9QMzMxIGFkYXB0ZXIKKyoqCShBbGwgSW4vT3V0IGlzIGluIElPUDMzMSdzIHZpZXcpCisqKgkxLiBNZXNzYWdlIDAgLS0+IEluaXRUaHJlYWQgbWVzc2FnZSBhbmQgcmV0dXJuIGNvZGUKKyoqCTIuIERvb3JiZWxsIGlzIHVzZWQgZm9yIFJTLTIzMiBlbXVsYXRpb24KKyoqCQlpbkRvb3JCZWxsIDogICAgYml0MCAtLSBkYXRhIGluIHJlYWR5CisqKgkJCShEUklWRVIgREFUQSBXUklURSBPSykKKyoqCQkJCWJpdDEgLS0gZGF0YSBvdXQgaGFzIGJlZW4gcmVhZAorKioJCQkoRFJJVkVSIERBVEEgUkVBRCBPSykKKyoqCQlvdXREb29lQmVsbDogICAgYml0MCAtLSBkYXRhIG91dCByZWFkeQorKioJCQkoSU9QMzMxIERBVEEgV1JJVEUgT0spCisqKgkJCQliaXQxIC0tIGRhdGEgaW4gaGFzIGJlZW4gcmVhZAorKioJCQkoSU9QMzMxIERBVEEgUkVBRCBPSykKKyoqCTMuIEluZGV4IE1lbW9yeSBVc2FnZQorKioJb2Zmc2V0IDB4ZjAwIDogZm9yIFJTMjMyIG91dCAocmVxdWVzdCBidWZmZXIpCisqKglvZmZzZXQgMHhlMDAgOiBmb3IgUlMyMzIgaW4gIChzY3JhdGNoIGJ1ZmZlcikKKyoqCW9mZnNldCAweGEwMCA6IGZvciBpbmJvdW5kIG1lc3NhZ2UgY29kZSBtZXNzYWdlX3J3YnVmZmVyCisqKgkJCShkcml2ZXIgc2VuZCB0byBJT1AzMzEpCisqKglvZmZzZXQgMHhhMDAgOiBmb3Igb3V0Ym91bmQgbWVzc2FnZSBjb2RlIG1lc3NhZ2VfcndidWZmZXIKKyoqCQkJKElPUDMzMSBzZW5kIHRvIGRyaXZlcikKKyoqCTQuIFJTLTIzMiBlbXVsYXRpb24KKyoqCQlDdXJyZW50bHkgMTI4IGJ5dGUgYnVmZmVyIGlzIHVzZWQKKyoqCQkJMXN0IHVpbnQzMl90IDogRGF0YSBsZW5ndGggKDEtLTEyNCkKKyoqCQkJQnl0ZSA0LS0xMjcgIDogTWF4IDEyNCBieXRlcyBvZiBkYXRhCisqKgk1LiBQb3N0UQorKioJQWxsIFNDU0kgQ29tbWFuZCBtdXN0IGJlIHNlbnQgdGhyb3VnaCBwb3N0UToKKyoqCShpbmJvdW5kIHF1ZXVlIHBvcnQpCVJlcXVlc3QgZnJhbWUgbXVzdCBiZSAzMiBieXRlcyBhbGlnbmVkCisqKgkjYml0MjctLWJpdDMxID0+IGZsYWcgZm9yIHBvc3QgY2NiCisqKgkjYml0MC0tYml0MjYgID0+IHJlYWwgYWRkcmVzcyAoYml0MjctLWJpdDMxKSBvZiBwb3N0IGFyY21zcl9jZGIKKyoqCQliaXQzMSA6CisqKgkJCTAgOiAyNTYgYnl0ZXMgZnJhbWUKKyoqCQkJMSA6IDUxMiBieXRlcyBmcmFtZQorKioJCWJpdDMwIDoKKyoqCQkJMCA6IG5vcm1hbCByZXF1ZXN0CisqKgkJCTEgOiBCSU9TIHJlcXVlc3QKKyoqCQliaXQyOSA6IHJlc2VydmVkCisqKgkJYml0MjggOiByZXNlcnZlZAorKioJCWJpdDI3IDogcmVzZXJ2ZWQKKyoqICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoqCShvdXRib3VudCBxdWV1ZSBwb3J0KQlSZXF1ZXN0IHJlcGx5CisqKgkjYml0MjctLWJpdDMxCisqKgkJPT4gZmxhZyBmb3IgcmVwbHkKKyoqCSNiaXQwLS1iaXQyNgorKioJCT0+IHJlYWwgYWRkcmVzcyAoYml0MjctLWJpdDMxKSBvZiByZXBseSBhcmNtc3JfY2RiCisqKgkJCWJpdDMxIDogbXVzdCBiZSAwIChmb3IgdGhpcyB0eXBlIG9mIHJlcGx5KQorKioJCQliaXQzMCA6IHJlc2VydmVkIGZvciBCSU9TIGhhbmRzaGFrZQorKioJCQliaXQyOSA6IHJlc2VydmVkCisqKgkJCWJpdDI4IDoKKyoqCQkJMCA6IG5vIGVycm9yLCBpZ25vcmUgQWRhcFN0YXR1cy9EZXZTdGF0dXMvU2Vuc2VEYXRhCisqKgkJCTEgOiBFcnJvciwgZXJyb3IgY29kZSBpbiBBZGFwU3RhdHVzL0RldlN0YXR1cy9TZW5zZURhdGEKKyoqCQkJYml0MjcgOiByZXNlcnZlZAorKioJNi4gQklPUyByZXF1ZXN0CisqKgkJQWxsIEJJT1MgcmVxdWVzdCBpcyB0aGUgc2FtZSB3aXRoIHJlcXVlc3QgZnJvbSBQb3N0UQorKioJCUV4Y2VwdCA6CisqKgkJCVJlcXVlc3QgZnJhbWUgaXMgc2VudCBmcm9tIGNvbmZpZ3VyYXRpb24gc3BhY2UKKyoqCQlvZmZzZXQ6IDB4NzggOiBSZXF1ZXN0IEZyYW1lIChiaXQzMCA9PSAxKQorKioJCW9mZnNldDogMHgxOCA6IHdyaXRlb25seSB0byBnZW5lcmF0ZQorKioJCQkJCUlSUSB0byBJT1AzMzEKKyoqCQlDb21wbGV0aW9uIG9mIHJlcXVlc3Q6CisqKgkJCShiaXQzMCA9PSAwLCBiaXQyOD09ZXJyIGZsYWcpCisqKgk3LiBEZWZpbml0aW9uIG9mIFNHTCBlbnRyeSAoc3RydWN0dXJlKQorKioJOC4gTWVzc2FnZTEgT3V0IC0gRGlhZyBTdGF0dXMgQ29kZSAoPz8/PykKKyoqCTkuIE1lc3NhZ2UwIG1lc3NhZ2UgY29kZSA6CisqKgkJMHgwMCA6IE5PUAorKioJCTB4MDEgOiBHZXQgQ29uZmlnCisqKgkJLT5vZmZzZXQgMHhhMDAgOmZvciBvdXRib3VuZCBtZXNzYWdlIGNvZGUgbWVzc2FnZV9yd2J1ZmZlcgorKioJCShJT1AzMzEgc2VuZCB0byBkcml2ZXIpCisqKgkJU2lnbmF0dXJlICAgICAgICAgICAgIDB4ODc5NzQwNjAoNCkKKyoqCQlSZXF1ZXN0IGxlbiAgICAgICAgICAgMHgwMDAwMDIwMCg0KQorKioJCW51bWJlcnMgb2YgcXVldWUgICAgICAweDAwMDAwMTAwKDQpCisqKgkJU0RSQU0gU2l6ZSAgICAgICAgICAgIDB4MDAwMDAxMDAoNCktLT4yNTYgTUIKKyoqCQlJREUgQ2hhbm5lbHMgICAgICAgICAgMHgwMDAwMDAwOCg0KQorKioJCXZlbmRvciAgICAgICAgICAgICAgICA0MCBieXRlcyBjaGFyCisqKgkJbW9kZWwgICAgICAgICAgICAgICAgICA4IGJ5dGVzIGNoYXIKKyoqCQlGaXJtVmVyICAgICAgICAgICAgICAgMTYgYnl0ZXMgY2hhcgorKioJCURldmljZSBNYXAgICAgICAgICAgICAxNiBieXRlcyBjaGFyCisqKgkJRmlybXdhcmVWZXJzaW9uIERXT1JEIDw9PSBBZGRlZCBmb3IgY2hlY2tpbmcgb2YKKyoqCQkJCQkJbmV3IGZpcm13YXJlIGNhcGFiaWxpdHkKKyoqCQkweDAyIDogU2V0IENvbmZpZworKioJCS0+b2Zmc2V0IDB4YTAwIDpmb3IgaW5ib3VuZCBtZXNzYWdlIGNvZGUgbWVzc2FnZV9yd2J1ZmZlcgorKioJCShkcml2ZXIgc2VuZCB0byBJT1AzMzEpCisqKgkJU2lnbmF0dXJlICAgICAgICAgICAgIDB4ODc5NzQwNjMoNCkKKyoqCQlVUFBFUjMyIG9mIFJlcXVlc3QgRnJhbWUgICg0KS0tPkRyaXZlciBPbmx5CisqKgkJMHgwMyA6IFJlc2V0IChBYm9ydCBhbGwgcXVldWVkIENvbW1hbmQpCisqKgkJMHgwNCA6IFN0b3AgQmFja2dyb3VuZCBBY3Rpdml0eQorKioJCTB4MDUgOiBGbHVzaCBDYWNoZQorKioJCTB4MDYgOiBTdGFydCBCYWNrZ3JvdW5kIEFjdGl2aXR5CisqKgkJCShyZS1zdGFydCBpZiBiYWNrZ3JvdW5kIGlzIGhhbHRlZCkKKyoqCQkweDA3IDogQ2hlY2sgSWYgSG9zdCBDb21tYW5kIFBlbmRpbmcKKyoqCQkJKE5vdmVsbCBNYXkgTmVlZCBUaGlzIEZ1bmN0aW9uKQorKioJCTB4MDggOiBTZXQgY29udHJvbGxlciB0aW1lCisqKgkJLT5vZmZzZXQgMHhhMDAgOiBmb3IgaW5ib3VuZCBtZXNzYWdlIGNvZGUgbWVzc2FnZV9yd2J1ZmZlcgorKioJCShkcml2ZXIgdG8gSU9QMzMxKQorKioJCWJ5dGUgMCA6IDB4YWEgPC0tIHNpZ25hdHVyZQorKioJCWJ5dGUgMSA6IDB4NTUgPC0tIHNpZ25hdHVyZQorKioJCWJ5dGUgMiA6IHllYXIgKDA0KQorKioJCWJ5dGUgMyA6IG1vbnRoICgxLi4xMikKKyoqCQlieXRlIDQgOiBkYXRlICgxLi4zMSkKKyoqCQlieXRlIDUgOiBob3VyICgwLi4yMykKKyoqCQlieXRlIDYgOiBtaW51dGUgKDAuLjU5KQorKioJCWJ5dGUgNyA6IHNlY29uZCAoMC4uNTkpCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqKiAgICAgIAlSUy0yMzIgSW50ZXJmYWNlIGZvciBBcmVjYSBSYWlkIENvbnRyb2xsZXIKKyoqICAgICAgVGhlIGxvdyBsZXZlbCBjb21tYW5kIGludGVyZmFjZSBpcyBleGNsdXNpdmUgd2l0aCBWVDEwMCB0ZXJtaW5hbAorKiogIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqKiAgICAgIDEuIFNlcXVlbmNlIG9mIGNvbW1hbmQgZXhlY3V0aW9uCisqKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoqICAgIAkoQSkgSGVhZGVyIDogMyBieXRlcyBzZXF1ZW5jZSAoMHg1RSwgMHgwMSwgMHg2MSkKKyoqICAgIAkoQikgQ29tbWFuZCBibG9jayA6IHZhcmlhYmxlIGxlbmd0aCBvZiBkYXRhIGluY2x1ZGluZyBsZW5ndGgsCisqKiAgICAJCWNvbW1hbmQgY29kZSwgZGF0YSBhbmQgY2hlY2tzdW0gYnl0ZQorKiogICAgCShDKSBSZXR1cm4gZGF0YSA6IHZhcmlhYmxlIGxlbmd0aCBvZiBkYXRhCisqKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoqICAgIDIuIENvbW1hbmQgYmxvY2sKKyoqICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiogICAgCShBKSAxc3QgYnl0ZSA6IGNvbW1hbmQgYmxvY2sgbGVuZ3RoIChsb3cgYnl0ZSkKKyoqICAgIAkoQikgMm5kIGJ5dGUgOiBjb21tYW5kIGJsb2NrIGxlbmd0aCAoaGlnaCBieXRlKQorKiogICAgICAgICAgICAgICAgbm90ZSAuLmNvbW1hbmQgYmxvY2sgbGVuZ3RoIHNob3VsZG4ndCA+IDIwNDAgYnl0ZXMsCisqKiAgICAJCWxlbmd0aCBleGNsdWRlcyB0aGVzZSB0d28gYnl0ZXMKKyoqICAgIAkoQykgM3JkIGJ5dGUgOiBjb21tYW5kIGNvZGUKKyoqICAgIAkoRCkgNHRoIGFuZCBmb2xsb3dpbmcgYnl0ZXMgOiB2YXJpYWJsZSBsZW5ndGggZGF0YSBieXRlcworKiogICAgCQlkZXBlbmRzIG9uIGNvbW1hbmQgY29kZQorKiogICAgCShFKSBsYXN0IGJ5dGUgOiBjaGVja3N1bSBieXRlIChzdW0gb2YgMXN0IGJ5dGUgdW50aWwgbGFzdCBkYXRhIGJ5dGUpCisqKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoqICAgIDMuIENvbW1hbmQgY29kZSBhbmQgYXNzb2NpYXRlZCBkYXRhCisqKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoqICAgIAlUaGUgZm9sbG93aW5nIGFyZSBjb21tYW5kIGNvZGUgZGVmaW5lZCBpbiByYWlkIGNvbnRyb2xsZXIgQ29tbWFuZAorKiogICAgCWNvZGUgMHgxMC0tMHgxPyBhcmUgdXNlZCBmb3Igc3lzdGVtIGxldmVsIG1hbmFnZW1lbnQsCisqKiAgICAJbm8gcGFzc3dvcmQgY2hlY2tpbmcgaXMgbmVlZGVkIGFuZCBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gc2VwYXJhdGUKKyoqICAgIAl3ZWxsIGNvbnRyb2xsZWQgdXRpbGl0eSBhbmQgbm90IGZvciBlbmQgdXNlciBhY2Nlc3MuCisqKiAgICAJQ29tbWFuZCBjb2RlIDB4MjAtLTB4Pz8gYWx3YXlzIGNoZWNrIHRoZSBwYXNzd29yZCwKKyoqICAgIAlwYXNzd29yZCBtdXN0IGJlIGVudGVyZWQgdG8gZW5hYmxlIHRoZXNlIGNvbW1hbmQuCisqKiAgICAJZW51bQorKiogICAgCXsKKyoqICAgIAkJR1VJX1NFVF9TRVJJQUw9MHgxMCwKKyoqICAgIAkJR1VJX1NFVF9WRU5ET1IsCisqKiAgICAJCUdVSV9TRVRfTU9ERUwsCisqKiAgICAJCUdVSV9JREVOVElGWSwKKyoqICAgIAkJR1VJX0NIRUNLX1BBU1NXT1JELAorKiogICAgCQlHVUlfTE9HT1VULAorKiogICAgCQlHVUlfSFRUUCwKKyoqICAgIAkJR1VJX1NFVF9FVEhFUk5FVF9BRERSLAorKiogICAgCQlHVUlfU0VUX0xPR08sCisqKiAgICAJCUdVSV9QT0xMX0VWRU5ULAorKiogICAgCQlHVUlfR0VUX0VWRU5ULAorKiogICAgCQlHVUlfR0VUX0hXX01PTklUT1IsCisqKiAgICAJCS8vICAgIEdVSV9RVUlDS19DUkVBVEU9MHgyMCwgKGZ1bmN0aW9uIHJlbW92ZWQpCisqKiAgICAJCUdVSV9HRVRfSU5GT19SPTB4MjAsCisqKiAgICAJCUdVSV9HRVRfSU5GT19WLAorKiogICAgCQlHVUlfR0VUX0lORk9fUCwKKyoqICAgIAkJR1VJX0dFVF9JTkZPX1MsCisqKiAgICAJCUdVSV9DTEVBUl9FVkVOVCwKKyoqICAgIAkJR1VJX01VVEVfQkVFUEVSPTB4MzAsCisqKiAgICAJCUdVSV9CRUVQRVJfU0VUVElORywKKyoqICAgIAkJR1VJX1NFVF9QQVNTV09SRCwKKyoqICAgIAkJR1VJX0hPU1RfSU5URVJGQUNFX01PREUsCisqKiAgICAJCUdVSV9SRUJVSUxEX1BSSU9SSVRZLAorKiogICAgCQlHVUlfTUFYX0FUQV9NT0RFLAorKiogICAgCQlHVUlfUkVTRVRfQ09OVFJPTExFUiwKKyoqICAgIAkJR1VJX0NPTV9QT1JUX1NFVFRJTkcsCisqKiAgICAJCUdVSV9OT19PUEVSQVRJT04sCisqKiAgICAJCUdVSV9ESENQX0lQLAorKiogICAgCQlHVUlfQ1JFQVRFX1BBU1NfVEhST1VHSD0weDQwLAorKiogICAgCQlHVUlfTU9ESUZZX1BBU1NfVEhST1VHSCwKKyoqICAgIAkJR1VJX0RFTEVURV9QQVNTX1RIUk9VR0gsCisqKiAgICAJCUdVSV9JREVOVElGWV9ERVZJQ0UsCisqKiAgICAJCUdVSV9DUkVBVEVfUkFJRFNFVD0weDUwLAorKiogICAgCQlHVUlfREVMRVRFX1JBSURTRVQsCisqKiAgICAJCUdVSV9FWFBBTkRfUkFJRFNFVCwKKyoqICAgIAkJR1VJX0FDVElWQVRFX1JBSURTRVQsCisqKiAgICAJCUdVSV9DUkVBVEVfSE9UX1NQQVJFLAorKiogICAgCQlHVUlfREVMRVRFX0hPVF9TUEFSRSwKKyoqICAgIAkJR1VJX0NSRUFURV9WT0xVTUU9MHg2MCwKKyoqICAgIAkJR1VJX01PRElGWV9WT0xVTUUsCisqKiAgICAJCUdVSV9ERUxFVEVfVk9MVU1FLAorKiogICAgCQlHVUlfU1RBUlRfQ0hFQ0tfVk9MVU1FLAorKiogICAgCQlHVUlfU1RPUF9DSEVDS19WT0xVTUUKKyoqICAgIAl9OworKiogICAgQ29tbWFuZCBkZXNjcmlwdGlvbiA6CisqKiAgICAJR1VJX1NFVF9TRVJJQUwgOiBTZXQgdGhlIGNvbnRyb2xsZXIgc2VyaWFsIworKiogICAgCQlieXRlIDAsMSAgICAgICAgOiBsZW5ndGgKKyoqICAgIAkJYnl0ZSAyICAgICAgICAgIDogY29tbWFuZCBjb2RlIDB4MTAKKyoqICAgIAkJYnl0ZSAzICAgICAgICAgIDogcGFzc3dvcmQgbGVuZ3RoIChzaG91bGQgYmUgMHgwZikKKyoqICAgIAkJYnl0ZSA0LTB4MTMgICAgIDogc2hvdWxkIGJlICJBckVjQVRlY0hub0xvZ1kiCisqKiAgICAJCWJ5dGUgMHgxNC0tMHgyMyA6IFNlcmlhbCBudW1iZXIgc3RyaW5nIChtdXN0IGJlIDE2IGJ5dGVzKQorKiogICAgICBHVUlfU0VUX1ZFTkRPUiA6IFNldCB2ZW5kb3Igc3RyaW5nIGZvciB0aGUgY29udHJvbGxlcgorKiogICAgCQlieXRlIDAsMSAgICAgICAgOiBsZW5ndGgKKyoqICAgIAkJYnl0ZSAyICAgICAgICAgIDogY29tbWFuZCBjb2RlIDB4MTEKKyoqICAgIAkJYnl0ZSAzICAgICAgICAgIDogcGFzc3dvcmQgbGVuZ3RoIChzaG91bGQgYmUgMHgwOCkKKyoqICAgIAkJYnl0ZSA0LTB4MTMgICAgIDogc2hvdWxkIGJlICJBckVjQXZBciIKKyoqICAgIAkJYnl0ZSAweDE0LS0weDNCIDogdmVuZG9yIHN0cmluZyAobXVzdCBiZSA0MCBieXRlcykKKyoqICAgICAgR1VJX1NFVF9NT0RFTCA6IFNldCB0aGUgbW9kZWwgbmFtZSBvZiB0aGUgY29udHJvbGxlcgorKiogICAgCQlieXRlIDAsMSAgICAgICAgOiBsZW5ndGgKKyoqICAgIAkJYnl0ZSAyICAgICAgICAgIDogY29tbWFuZCBjb2RlIDB4MTIKKyoqICAgIAkJYnl0ZSAzICAgICAgICAgIDogcGFzc3dvcmQgbGVuZ3RoIChzaG91bGQgYmUgMHgwOCkKKyoqICAgIAkJYnl0ZSA0LTB4MTMgICAgIDogc2hvdWxkIGJlICJBckVjQXZBciIKKyoqICAgIAkJYnl0ZSAweDE0LS0weDFCIDogbW9kZWwgc3RyaW5nIChtdXN0IGJlIDggYnl0ZXMpCisqKiAgICAgIEdVSV9JREVOVElGWSA6IElkZW50aWZ5IGRldmljZQorKiogICAgCQlieXRlIDAsMSAgICAgICAgOiBsZW5ndGgKKyoqICAgIAkJYnl0ZSAyICAgICAgICAgIDogY29tbWFuZCBjb2RlIDB4MTMKKyoqICAgIAkJICAgICAgICAgICAgICAgICAgcmV0dXJuICJBcmVjYSBSQUlEIFN1YnN5c3RlbSAiCisqKiAgICAgIEdVSV9DSEVDS19QQVNTV09SRCA6IFZlcmlmeSBwYXNzd29yZAorKiogICAgCQlieXRlIDAsMSAgICAgICAgOiBsZW5ndGgKKyoqICAgIAkJYnl0ZSAyICAgICAgICAgIDogY29tbWFuZCBjb2RlIDB4MTQKKyoqICAgIAkJYnl0ZSAzICAgICAgICAgIDogcGFzc3dvcmQgbGVuZ3RoCisqKiAgICAJCWJ5dGUgNC0weD8/ICAgICA6IHVzZXIgcGFzc3dvcmQgdG8gYmUgY2hlY2tlZAorKiogICAgICBHVUlfTE9HT1VUIDogTG9nb3V0IEdVSSAoZm9yY2UgcGFzc3dvcmQgY2hlY2tpbmcgb24gbmV4dCBjb21tYW5kKQorKiogICAgCQlieXRlIDAsMSAgICAgICAgOiBsZW5ndGgKKyoqICAgIAkJYnl0ZSAyICAgICAgICAgIDogY29tbWFuZCBjb2RlIDB4MTUKKyoqICAgICAgR1VJX0hUVFAgOiBIVFRQIGludGVyZmFjZSAocmVzZXJ2ZWQgZm9yIEh0dHAgcHJveHkgc2VydmljZSkoMHgxNikKKyoqCisqKiAgICAgIEdVSV9TRVRfRVRIRVJORVRfQUREUiA6IFNldCB0aGUgZXRoZXJuZXQgTUFDIGFkZHJlc3MKKyoqICAgIAkJYnl0ZSAwLDEgICAgICAgIDogbGVuZ3RoCisqKiAgICAJCWJ5dGUgMiAgICAgICAgICA6IGNvbW1hbmQgY29kZSAweDE3CisqKiAgICAJCWJ5dGUgMyAgICAgICAgICA6IHBhc3N3b3JkIGxlbmd0aCAoc2hvdWxkIGJlIDB4MDgpCisqKiAgICAJCWJ5dGUgNC0weDEzICAgICA6IHNob3VsZCBiZSAiQXJFY0F2QXIiCisqKiAgICAJCWJ5dGUgMHgxNC0tMHgxOSA6IEV0aGVybmV0IE1BQyBhZGRyZXNzIChtdXN0IGJlIDYgYnl0ZXMpCisqKiAgICAgIEdVSV9TRVRfTE9HTyA6IFNldCBsb2dvIGluIEhUVFAKKyoqICAgIAkJYnl0ZSAwLDEgICAgICAgIDogbGVuZ3RoCisqKiAgICAJCWJ5dGUgMiAgICAgICAgICA6IGNvbW1hbmQgY29kZSAweDE4CisqKiAgICAJCWJ5dGUgMyAgICAgICAgICA6IFBhZ2UjICgwLzEvMi8zKSAoMHhmZiAtLT4gY2xlYXIgT0VNIGxvZ28pCisqKiAgICAJCWJ5dGUgNC81LzYvNyAgICA6IDB4NTUvMHhhYS8weGE1LzB4NWEKKyoqICAgIAkJYnl0ZSA4ICAgICAgICAgIDogVElUTEUuSlBHIGRhdGEgKGVhY2ggcGFnZSBtdXN0IGJlIDIwMDAgYnl0ZXMpCisqKiAgICAJCSAgICAgICAgICAgICAgICAgIG5vdGUgcGFnZTAgMXN0IDIgYnl0ZSBtdXN0IGJlCisqKiAgICAJCQkJCWFjdHVhbCBsZW5ndGggb2YgdGhlIEpQRyBmaWxlCisqKiAgICAgIEdVSV9QT0xMX0VWRU5UIDogUG9sbCBJZiBFdmVudCBMb2cgQ2hhbmdlZAorKiogICAgCQlieXRlIDAsMSAgICAgICAgOiBsZW5ndGgKKyoqICAgIAkJYnl0ZSAyICAgICAgICAgIDogY29tbWFuZCBjb2RlIDB4MTkKKyoqICAgICAgR1VJX0dFVF9FVkVOVCA6IFJlYWQgRXZlbnQKKyoqICAgIAkJYnl0ZSAwLDEgICAgICAgIDogbGVuZ3RoCisqKiAgICAJCWJ5dGUgMiAgICAgICAgICA6IGNvbW1hbmQgY29kZSAweDFhCisqKiAgICAJCWJ5dGUgMyAgICAgICAgICA6IEV2ZW50IFBhZ2UgKDA6MXN0IHBhZ2UvMS8yLzM6bGFzdCBwYWdlKQorKiogICAgICBHVUlfR0VUX0hXX01PTklUT1IgOiBHZXQgSFcgbW9uaXRvciBkYXRhCisqKiAgICAJCWJ5dGUgMCwxICAgICAgICA6IGxlbmd0aAorKiogICAgCQlieXRlIDIgCQkJOiBjb21tYW5kIGNvZGUgMHgxYgorKiogICAgCQlieXRlIDMgCQkJOiAjIG9mIEZBTnMoZXhhbXBsZSAyKQorKiogICAgCQlieXRlIDQgCQkJOiAjIG9mIFZvbHRhZ2Ugc2Vuc29yKGV4YW1wbGUgMykKKyoqICAgIAkJYnl0ZSA1IAkJCTogIyBvZiB0ZW1wZXJhdHVyZSBzZW5zb3IoZXhhbXBsZSAyKQorKiogICAgCQlieXRlIDYgCQkJOiAjIG9mIHBvd2VyCisqKiAgICAJCWJ5dGUgNy84ICAgICAgICA6IEZhbiMwIChSUE0pCisqKiAgICAJCWJ5dGUgOS8xMCAgICAgICA6IEZhbiMxCisqKiAgICAJCWJ5dGUgMTEvMTIgCQk6IFZvbHRhZ2UjMCBvcmlnaW5hbCB2YWx1ZSBpbiAqMTAwMAorKiogICAgCQlieXRlIDEzLzE0IAkJOiBWb2x0YWdlIzAgdmFsdWUKKyoqICAgIAkJYnl0ZSAxNS8xNiAJCTogVm9sdGFnZSMxIG9yZworKiogICAgCQlieXRlIDE3LzE4IAkJOiBWb2x0YWdlIzEKKyoqICAgIAkJYnl0ZSAxOS8yMCAJCTogVm9sdGFnZSMyIG9yZworKiogICAgCQlieXRlIDIxLzIyIAkJOiBWb2x0YWdlIzIKKyoqICAgIAkJYnl0ZSAyMyAJCTogVGVtcCMwCisqKiAgICAJCWJ5dGUgMjQgCQk6IFRlbXAjMQorKiogICAgCQlieXRlIDI1IAkJOiBQb3dlciBpbmRpY2F0b3IgKGJpdDAgOiBwb3dlciMwLAorKiogICAgCQkJCQkJIGJpdDEgOiBwb3dlciMxKQorKiogICAgCQlieXRlIDI2IAkJOiBVUFMgaW5kaWNhdG9yCisqKiAgICAgIEdVSV9RVUlDS19DUkVBVEUgOiBRdWljayBjcmVhdGUgcmFpZC92b2x1bWUgc2V0CisqKiAgICAJICAgIGJ5dGUgMCwxICAgICAgICA6IGxlbmd0aAorKiogICAgCSAgICBieXRlIDIgICAgICAgICAgOiBjb21tYW5kIGNvZGUgMHgyMAorKiogICAgCSAgICBieXRlIDMvNC81LzYgICAgOiByYXcgY2FwYWNpdHkKKyoqICAgIAkgICAgYnl0ZSA3IAkJCTogcmFpZCBsZXZlbAorKiogICAgCSAgICBieXRlIDggCQkJOiBzdHJpcGUgc2l6ZQorKiogICAgCSAgICBieXRlIDkgCQkJOiBzcGFyZQorKiogICAgCSAgICBieXRlIDEwLzExLzEyLzEzOiBkZXZpY2UgbWFzayAodGhlIGRldmljZXMgdG8gY3JlYXRlIHJhaWQvdm9sdW1lKQorKiogICAgCQlUaGlzIGZ1bmN0aW9uIGlzIHJlbW92ZWQsIGFwcGxpY2F0aW9uIGxpa2UKKyoqICAgIAkJdG8gaW1wbGVtZW50IHF1aWNrIGNyZWF0ZSBmdW5jdGlvbgorKiogICAgCW5lZWQgdG8gdXNlIEdVSV9DUkVBVEVfUkFJRFNFVCBhbmQgR1VJX0NSRUFURV9WT0xVTUVTRVQgZnVuY3Rpb24uCisqKiAgICAgIEdVSV9HRVRfSU5GT19SIDogR2V0IFJhaWQgU2V0IEluZm9ybWF0aW9uCisqKiAgICAJCWJ5dGUgMCwxICAgICAgICA6IGxlbmd0aAorKiogICAgCQlieXRlIDIgICAgICAgICAgOiBjb21tYW5kIGNvZGUgMHgyMAorKiogICAgCQlieXRlIDMgICAgICAgICAgOiByYWlkc2V0IworKiogICAgCXR5cGVkZWYgc3RydWN0IHNHVUlfUkFJRFNFVAorKiogICAgCXsKKyoqICAgIAkJQllURSBncnNSYWlkU2V0TmFtZVsxNl07CisqKiAgICAJCURXT1JEIGdyc0NhcGFjaXR5OworKiogICAgCQlEV09SRCBncnNDYXBhY2l0eVg7CisqKiAgICAJCURXT1JEIGdyc0ZhaWxNYXNrOworKiogICAgCQlCWVRFIGdyc0RldkFycmF5WzMyXTsKKyoqICAgIAkJQllURSBncnNNZW1iZXJEZXZpY2VzOworKiogICAgCQlCWVRFIGdyc05ld01lbWJlckRldmljZXM7CisqKiAgICAJCUJZVEUgZ3JzUmFpZFN0YXRlOworKiogICAgCQlCWVRFIGdyc1ZvbHVtZXM7CisqKiAgICAJCUJZVEUgZ3JzVm9sdW1lTGlzdFsxNl07CisqKiAgICAJCUJZVEUgZ3JzUmVzMTsKKyoqICAgIAkJQllURSBncnNSZXMyOworKiogICAgCQlCWVRFIGdyc1JlczM7CisqKiAgICAJCUJZVEUgZ3JzRnJlZVNlZ21lbnRzOworKiogICAgCQlEV09SRCBncnNSYXdTdHJpcGVzWzhdOworKiogICAgCQlEV09SRCBncnNSZXM0OworKiogICAgCQlEV09SRCBncnNSZXM1OyAvLyAgICAgVG90YWwgdG8gMTI4IGJ5dGVzCisqKiAgICAJCURXT1JEIGdyc1JlczY7IC8vICAgICBUb3RhbCB0byAxMjggYnl0ZXMKKyoqICAgIAl9IHNHVUlfUkFJRFNFVCwgKnBHVUlfUkFJRFNFVDsKKyoqICAgICAgR1VJX0dFVF9JTkZPX1YgOiBHZXQgVm9sdW1lIFNldCBJbmZvcm1hdGlvbgorKiogICAgCQlieXRlIDAsMSAgICAgICAgOiBsZW5ndGgKKyoqICAgIAkJYnl0ZSAyICAgICAgICAgIDogY29tbWFuZCBjb2RlIDB4MjEKKyoqICAgIAkJYnl0ZSAzICAgICAgICAgIDogdm9sdW1lc2V0IworKiogICAgCXR5cGVkZWYgc3RydWN0IHNHVUlfVk9MVU1FU0VUCisqKiAgICAJeworKiogICAgCQlCWVRFIGd2c1ZvbHVtZU5hbWVbMTZdOyAvLyAgICAgMTYKKyoqICAgIAkJRFdPUkQgZ3ZzQ2FwYWNpdHk7CisqKiAgICAJCURXT1JEIGd2c0NhcGFjaXR5WDsKKyoqICAgIAkJRFdPUkQgZ3ZzRmFpbE1hc2s7CisqKiAgICAJCURXT1JEIGd2c1N0cmlwZVNpemU7CisqKiAgICAJCURXT1JEIGd2c05ld0ZhaWxNYXNrOworKiogICAgCQlEV09SRCBndnNOZXdTdHJpcGVTaXplOworKiogICAgCQlEV09SRCBndnNWb2x1bWVTdGF0dXM7CisqKiAgICAJCURXT1JEIGd2c1Byb2dyZXNzOyAvLyAgICAgMzIKKyoqICAgIAkJc1NDU0lfQVRUUiBndnNTY3NpOworKiogICAgCQlCWVRFIGd2c01lbWJlckRpc2tzOworKiogICAgCQlCWVRFIGd2c1JhaWRMZXZlbDsgLy8gICAgIDgKKyoqICAgIAkJQllURSBndnNOZXdNZW1iZXJEaXNrczsKKyoqICAgIAkJQllURSBndnNOZXdSYWlkTGV2ZWw7CisqKiAgICAJCUJZVEUgZ3ZzUmFpZFNldE51bWJlcjsKKyoqICAgIAkJQllURSBndnNSZXMwOyAvLyAgICAgNAorKiogICAgCQlCWVRFIGd2c1JlczFbNF07IC8vICAgICA2NCBieXRlcworKiogICAgCX0gc0dVSV9WT0xVTUVTRVQsICpwR1VJX1ZPTFVNRVNFVDsKKyoqICAgICAgR1VJX0dFVF9JTkZPX1AgOiBHZXQgUGh5c2ljYWwgRHJpdmUgSW5mb3JtYXRpb24KKyoqICAgIAkJYnl0ZSAwLDEgICAgICAgIDogbGVuZ3RoCisqKiAgICAJCWJ5dGUgMiAgICAgICAgICA6IGNvbW1hbmQgY29kZSAweDIyCisqKiAgICAJCWJ5dGUgMyAgICAgICAgICA6IGRyaXZlICMgKGZyb20gMCB0byBtYXgtY2hhbm5lbHMgLSAxKQorKiogICAgCXR5cGVkZWYgc3RydWN0IHNHVUlfUEhZX0RSVgorKiogICAgCXsKKyoqICAgIAkJQllURSBncGRNb2RlbE5hbWVbNDBdOworKiogICAgCQlCWVRFIGdwZFNlcmlhbE51bWJlclsyMF07CisqKiAgICAJCUJZVEUgZ3BkRmlybVJldls4XTsKKyoqICAgIAkJRFdPUkQgZ3BkQ2FwYWNpdHk7CisqKiAgICAJCURXT1JEIGdwZENhcGFjaXR5WDsgLy8gICAgIFJlc2VydmVkIGZvciBleHBhbnNpb24KKyoqICAgIAkJQllURSBncGREZXZpY2VTdGF0ZTsKKyoqICAgIAkJQllURSBncGRQaW9Nb2RlOworKiogICAgCQlCWVRFIGdwZEN1cnJlbnRVZG1hTW9kZTsKKyoqICAgIAkJQllURSBncGRVZG1hTW9kZTsKKyoqICAgIAkJQllURSBncGREcml2ZVNlbGVjdDsKKyoqICAgIAkJQllURSBncGRSYWlkTnVtYmVyOyAvLyAgICAgMHhmZiBpZiBub3QgYmVsb25ncyB0byBhIHJhaWQgc2V0CisqKiAgICAJCXNTQ1NJX0FUVFIgZ3BkU2NzaTsKKyoqICAgIAkJQllURSBncGRSZXNlcnZlZFs0MF07IC8vICAgICBUb3RhbCB0byAxMjggYnl0ZXMKKyoqICAgIAl9IHNHVUlfUEhZX0RSViwgKnBHVUlfUEhZX0RSVjsKKyoqICAgIAlHVUlfR0VUX0lORk9fUyA6IEdldCBTeXN0ZW0gSW5mb3JtYXRpb24KKyoqICAgICAgCWJ5dGUgMCwxICAgICAgICA6IGxlbmd0aAorKiogICAgICAJYnl0ZSAyICAgICAgICAgIDogY29tbWFuZCBjb2RlIDB4MjMKKyoqICAgIAl0eXBlZGVmIHN0cnVjdCBzQ09NX0FUVFIKKyoqICAgIAl7CisqKiAgICAJCUJZVEUgY29tQmF1ZFJhdGU7CisqKiAgICAJCUJZVEUgY29tRGF0YUJpdHM7CisqKiAgICAJCUJZVEUgY29tU3RvcEJpdHM7CisqKiAgICAJCUJZVEUgY29tUGFyaXR5OworKiogICAgCQlCWVRFIGNvbUZsb3dDb250cm9sOworKiogICAgCX0gc0NPTV9BVFRSLCAqcENPTV9BVFRSOworKiogICAgCXR5cGVkZWYgc3RydWN0IHNTWVNURU1fSU5GTworKiogICAgCXsKKyoqICAgIAkJQllURSBnc2lWZW5kb3JOYW1lWzQwXTsKKyoqICAgIAkJQllURSBnc2lTZXJpYWxOdW1iZXJbMTZdOworKiogICAgCQlCWVRFIGdzaUZpcm1WZXJzaW9uWzE2XTsKKyoqICAgIAkJQllURSBnc2lCb290VmVyc2lvblsxNl07CisqKiAgICAJCUJZVEUgZ3NpTWJWZXJzaW9uWzE2XTsKKyoqICAgIAkJQllURSBnc2lNb2RlbE5hbWVbOF07CisqKiAgICAJCUJZVEUgZ3NpTG9jYWxJcFs0XTsKKyoqICAgIAkJQllURSBnc2lDdXJyZW50SXBbNF07CisqKiAgICAJCURXT1JEIGdzaVRpbWVUaWNrOworKiogICAgCQlEV09SRCBnc2lDcHVTcGVlZDsKKyoqICAgIAkJRFdPUkQgZ3NpSUNhY2hlOworKiogICAgCQlEV09SRCBnc2lEQ2FjaGU7CisqKiAgICAJCURXT1JEIGdzaVNjYWNoZTsKKyoqICAgIAkJRFdPUkQgZ3NpTWVtb3J5U2l6ZTsKKyoqICAgIAkJRFdPUkQgZ3NpTWVtb3J5U3BlZWQ7CisqKiAgICAJCURXT1JEIGdzaUV2ZW50czsKKyoqICAgIAkJQllURSBnc2lNYWNBZGRyZXNzWzZdOworKiogICAgCQlCWVRFIGdzaURoY3A7CisqKiAgICAJCUJZVEUgZ3NpQmVlcGVyOworKiogICAgCQlCWVRFIGdzaUNoYW5uZWxVc2FnZTsKKyoqICAgIAkJQllURSBnc2lNYXhBdGFNb2RlOworKiogICAgCQlCWVRFIGdzaVNkcmFtRWNjOyAvLyAgICAgMTppZiBFQ0MgZW5hYmxlZAorKiogICAgCQlCWVRFIGdzaVJlYnVpbGRQcmlvcml0eTsKKyoqICAgIAkJc0NPTV9BVFRSIGdzaUNvbUE7IC8vICAgICA1IGJ5dGVzCisqKiAgICAJCXNDT01fQVRUUiBnc2lDb21COyAvLyAgICAgNSBieXRlcworKiogICAgCQlCWVRFIGdzaUlkZUNoYW5uZWxzOworKiogICAgCQlCWVRFIGdzaVNjc2lIb3N0Q2hhbm5lbHM7CisqKiAgICAJCUJZVEUgZ3NpSWRlSG9zdENoYW5uZWxzOworKiogICAgCQlCWVRFIGdzaU1heFZvbHVtZVNldDsKKyoqICAgIAkJQllURSBnc2lNYXhSYWlkU2V0OworKiogICAgCQlCWVRFIGdzaUV0aGVyUG9ydDsgLy8gICAgIDE6aWYgZXRoZXIgbmV0IHBvcnQgc3VwcG9ydGVkCisqKiAgICAJCUJZVEUgZ3NpUmFpZDZFbmdpbmU7IC8vICAgICAxOlJhaWQ2IGVuZ2luZSBzdXBwb3J0ZWQKKyoqICAgIAkJQllURSBnc2lSZXNbNzVdOworKiogICAgCX0gc1NZU1RFTV9JTkZPLCAqcFNZU1RFTV9JTkZPOworKiogICAgCUdVSV9DTEVBUl9FVkVOVCA6IENsZWFyIFN5c3RlbSBFdmVudAorKiogICAgCQlieXRlIDAsMSAgICAgICAgOiBsZW5ndGgKKyoqICAgIAkJYnl0ZSAyICAgICAgICAgIDogY29tbWFuZCBjb2RlIDB4MjQKKyoqICAgICAgR1VJX01VVEVfQkVFUEVSIDogTXV0ZSBjdXJyZW50IGJlZXBlcgorKiogICAgCQlieXRlIDAsMSAgICAgICAgOiBsZW5ndGgKKyoqICAgIAkJYnl0ZSAyICAgICAgICAgIDogY29tbWFuZCBjb2RlIDB4MzAKKyoqICAgICAgR1VJX0JFRVBFUl9TRVRUSU5HIDogRGlzYWJsZSBiZWVwZXIKKyoqICAgIAkJYnl0ZSAwLDEgICAgICAgIDogbGVuZ3RoCisqKiAgICAJCWJ5dGUgMiAgICAgICAgICA6IGNvbW1hbmQgY29kZSAweDMxCisqKiAgICAJCWJ5dGUgMyAgICAgICAgICA6IDAtPmRpc2FibGUsIDEtPmVuYWJsZQorKiogICAgICBHVUlfU0VUX1BBU1NXT1JEIDogQ2hhbmdlIHBhc3N3b3JkCisqKiAgICAJCWJ5dGUgMCwxICAgICAgICA6IGxlbmd0aAorKiogICAgCQlieXRlIDIgCQkJOiBjb21tYW5kIGNvZGUgMHgzMgorKiogICAgCQlieXRlIDMgCQkJOiBwYXNzIHdvcmQgbGVuZ3RoICggbXVzdCA8PSAxNSApCisqKiAgICAJCWJ5dGUgNCAJCQk6IHBhc3N3b3JkIChtdXN0IGJlIGFscGhhLW51bWVyaWNhbCkKKyoqICAgIAlHVUlfSE9TVF9JTlRFUkZBQ0VfTU9ERSA6IFNldCBob3N0IGludGVyZmFjZSBtb2RlCisqKiAgICAJCWJ5dGUgMCwxICAgICAgICA6IGxlbmd0aAorKiogICAgCQlieXRlIDIgCQkJOiBjb21tYW5kIGNvZGUgMHgzMworKiogICAgCQlieXRlIDMgCQkJOiAwLT5JbmRlcGVuZGVudCwgMS0+Y2x1c3RlcgorKiogICAgICBHVUlfUkVCVUlMRF9QUklPUklUWSA6IFNldCByZWJ1aWxkIHByaW9yaXR5CisqKiAgICAJCWJ5dGUgMCwxICAgICAgICA6IGxlbmd0aAorKiogICAgCQlieXRlIDIgCQkJOiBjb21tYW5kIGNvZGUgMHgzNAorKiogICAgCQlieXRlIDMgCQkJOiAwLzEvMi8zIChsb3ctPmhpZ2gpCisqKiAgICAgIEdVSV9NQVhfQVRBX01PREUgOiBTZXQgbWF4aW11bSBBVEEgbW9kZSB0byBiZSB1c2VkCisqKiAgICAJCWJ5dGUgMCwxICAgICAgICA6IGxlbmd0aAorKiogICAgCQlieXRlIDIgCQkJOiBjb21tYW5kIGNvZGUgMHgzNQorKiogICAgCQlieXRlIDMgCQkJOiAwLzEvMi8zICgxMzMvMTAwLzY2LzMzKQorKiogICAgICBHVUlfUkVTRVRfQ09OVFJPTExFUiA6IFJlc2V0IENvbnRyb2xsZXIKKyoqICAgIAkJYnl0ZSAwLDEgICAgICAgIDogbGVuZ3RoCisqKiAgICAJCWJ5dGUgMiAgICAgICAgICA6IGNvbW1hbmQgY29kZSAweDM2CisqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqUmVzcG9uc2Ugd2l0aCBWVDEwMCBzY3JlZW4gKGRpc2NhcmQgaXQpCisqKiAgICAgIEdVSV9DT01fUE9SVF9TRVRUSU5HIDogQ09NIHBvcnQgc2V0dGluZworKiogICAgCQlieXRlIDAsMSAgICAgICAgOiBsZW5ndGgKKyoqICAgIAkJYnl0ZSAyIAkJCTogY29tbWFuZCBjb2RlIDB4MzcKKyoqICAgIAkJYnl0ZSAzIAkJCTogMC0+Q09NQSAodGVybSBwb3J0KSwKKyoqICAgIAkJCQkJICAxLT5DT01CIChkZWJ1ZyBwb3J0KQorKiogICAgCQlieXRlIDQgCQkJOiAwLzEvMi8zLzQvNS82LzcKKyoqICAgIAkJCSgxMjAwLzI0MDAvNDgwMC85NjAwLzE5MjAwLzM4NDAwLzU3NjAwLzExNTIwMCkKKyoqICAgIAkJYnl0ZSA1IAkJCTogZGF0YSBiaXQKKyoqICAgIAkJCQkJKDA6NyBiaXQsIDE6OCBiaXQgOiBtdXN0IGJlIDggYml0KQorKiogICAgCQlieXRlIDYgCQkJOiBzdG9wIGJpdCAoMDoxLCAxOjIgc3RvcCBiaXRzKQorKiogICAgCQlieXRlIDcgCQkJOiBwYXJpdHkgKDA6bm9uZSwgMTpvZmYsIDI6ZXZlbikKKyoqICAgIAkJYnl0ZSA4IAkJCTogZmxvdyBjb250cm9sCisqKiAgICAJCQkoMDpub25lLCAxOnhvbi94b2ZmLCAyOmhhcmR3YXJlID0+IG11c3QgdXNlIG5vbmUpCisqKiAgICAgIEdVSV9OT19PUEVSQVRJT04gOiBObyBvcGVyYXRpb24KKyoqICAgIAkJYnl0ZSAwLDEgICAgICAgIDogbGVuZ3RoCisqKiAgICAJCWJ5dGUgMiAgICAgICAgICA6IGNvbW1hbmQgY29kZSAweDM4CisqKiAgICAgIEdVSV9ESENQX0lQIDogU2V0IERIQ1Agb3B0aW9uIGFuZCBsb2NhbCBJUCBhZGRyZXNzCisqKiAgICAJCWJ5dGUgMCwxICAgICAgICA6IGxlbmd0aAorKiogICAgCQlieXRlIDIgICAgICAgICAgOiBjb21tYW5kIGNvZGUgMHgzOQorKiogICAgCQlieXRlIDMgICAgICAgICAgOiAwOmRoY3AgZGlzYWJsZWQsIDE6ZGhjcCBlbmFibGVkCisqKiAgICAJCWJ5dGUgNC81LzYvNyAgICA6IElQIGFkZHJlc3MKKyoqICAgICAgR1VJX0NSRUFURV9QQVNTX1RIUk9VR0ggOiBDcmVhdGUgcGFzcyB0aHJvdWdoIGRpc2sKKyoqICAgIAkJYnl0ZSAwLDEgICAgICAgIDogbGVuZ3RoCisqKiAgICAJCWJ5dGUgMiAJCQk6IGNvbW1hbmQgY29kZSAweDQwCisqKiAgICAJCWJ5dGUgMyAJCQk6IGRldmljZSAjCisqKiAgICAJCWJ5dGUgNCAJCQk6IHNjc2kgY2hhbm5lbCAoMC8xKQorKiogICAgCQlieXRlIDUgCQkJOiBzY3NpIGlkICgwLS0+MTUpCisqKiAgICAJCWJ5dGUgNiAJCQk6IHNjc2kgbHVuICgwLS0+NykKKyoqICAgIAkJYnl0ZSA3IAkJCTogdGFnZ2VkIHF1ZXVlICgxIDogZW5hYmxlZCkKKyoqICAgIAkJYnl0ZSA4IAkJCTogY2FjaGUgbW9kZSAoMSA6IGVuYWJsZWQpCisqKiAgICAJCWJ5dGUgOSAJCQk6IG1heCBzcGVlZCAoMC8xLzIvMy80LAorKiogICAgCQkJYXN5bmMvMjAvNDAvODAvMTYwIGZvciBzY3NpKQorKiogICAgCQkJKDAvMS8yLzMvNCwgMzMvNjYvMTAwLzEzMy8xNTAgZm9yIGlkZSAgKQorKiogICAgICBHVUlfTU9ESUZZX1BBU1NfVEhST1VHSCA6IE1vZGlmeSBwYXNzIHRocm91Z2ggZGlzaworKiogICAgCQlieXRlIDAsMSAgICAgICAgOiBsZW5ndGgKKyoqICAgIAkJYnl0ZSAyIAkJCTogY29tbWFuZCBjb2RlIDB4NDEKKyoqICAgIAkJYnl0ZSAzIAkJCTogZGV2aWNlICMKKyoqICAgIAkJYnl0ZSA0IAkJCTogc2NzaSBjaGFubmVsICgwLzEpCisqKiAgICAJCWJ5dGUgNSAJCQk6IHNjc2kgaWQgKDAtLT4xNSkKKyoqICAgIAkJYnl0ZSA2IAkJCTogc2NzaSBsdW4gKDAtLT43KQorKiogICAgCQlieXRlIDcgCQkJOiB0YWdnZWQgcXVldWUgKDEgOiBlbmFibGVkKQorKiogICAgCQlieXRlIDggCQkJOiBjYWNoZSBtb2RlICgxIDogZW5hYmxlZCkKKyoqICAgIAkJYnl0ZSA5IAkJCTogbWF4IHNwZWVkICgwLzEvMi8zLzQsCisqKiAgICAJCQkJCWFzeW5jLzIwLzQwLzgwLzE2MCBmb3Igc2NzaSkKKyoqICAgIAkJCSgwLzEvMi8zLzQsIDMzLzY2LzEwMC8xMzMvMTUwIGZvciBpZGUgICkKKyoqICAgICAgR1VJX0RFTEVURV9QQVNTX1RIUk9VR0ggOiBEZWxldGUgcGFzcyB0aHJvdWdoIGRpc2sKKyoqICAgIAkJYnl0ZSAwLDEgICAgICAgIDogbGVuZ3RoCisqKiAgICAJCWJ5dGUgMiAgICAgICAgICA6IGNvbW1hbmQgY29kZSAweDQyCisqKiAgICAJCWJ5dGUgMyAgICAgICAgICA6IGRldmljZSMgdG8gYmUgZGVsZXRlZAorKiogICAgICBHVUlfSURFTlRJRllfREVWSUNFIDogSWRlbnRpZnkgRGV2aWNlCisqKiAgICAJCWJ5dGUgMCwxICAgICAgICA6IGxlbmd0aAorKiogICAgCQlieXRlIDIgICAgICAgICAgOiBjb21tYW5kIGNvZGUgMHg0MworKiogICAgCQlieXRlIDMgICAgICAgICAgOiBGbGFzaCBNZXRob2QKKyoqICAgIAkJCQkoMDpmbGFzaCBzZWxlY3RlZCwgMTpmbGFzaCBub3Qgc2VsZWN0ZWQpCisqKiAgICAJCWJ5dGUgNC81LzYvNyAgICA6IElERSBkZXZpY2UgbWFzayB0byBiZSBmbGFzaGVkCisqKiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGUgLi4uLiBubyByZXNwb25zZSBkYXRhIGF2YWlsYWJsZQorKiogICAgCUdVSV9DUkVBVEVfUkFJRFNFVCA6IENyZWF0ZSBSYWlkIFNldAorKiogICAgCQlieXRlIDAsMSAgICAgICAgOiBsZW5ndGgKKyoqICAgIAkJYnl0ZSAyICAgICAgICAgIDogY29tbWFuZCBjb2RlIDB4NTAKKyoqICAgIAkJYnl0ZSAzLzQvNS82ICAgIDogZGV2aWNlIG1hc2sKKyoqICAgIAkJYnl0ZSA3LTIyICAgICAgIDogcmFpZHNldCBuYW1lIChpZiBieXRlIDcgPT0gMDp1c2UgZGVmYXVsdCkKKyoqICAgICAgR1VJX0RFTEVURV9SQUlEU0VUIDogRGVsZXRlIFJhaWQgU2V0CisqKiAgICAJCWJ5dGUgMCwxICAgICAgICA6IGxlbmd0aAorKiogICAgCQlieXRlIDIgICAgICAgICAgOiBjb21tYW5kIGNvZGUgMHg1MQorKiogICAgCQlieXRlIDMgICAgICAgICAgOiByYWlkc2V0IworKiogICAgCUdVSV9FWFBBTkRfUkFJRFNFVCA6IEV4cGFuZCBSYWlkIFNldAorKiogICAgCQlieXRlIDAsMSAgICAgICAgOiBsZW5ndGgKKyoqICAgIAkJYnl0ZSAyICAgICAgICAgIDogY29tbWFuZCBjb2RlIDB4NTIKKyoqICAgIAkJYnl0ZSAzICAgICAgICAgIDogcmFpZHNldCMKKyoqICAgIAkJYnl0ZSA0LzUvNi83ICAgIDogZGV2aWNlIG1hc2sgZm9yIGV4cGFuc2lvbgorKiogICAgCQlieXRlIDgvOS8xMCAgICAgOiAoODowIG5vIGNoYW5nZSwgMSBjaGFuZ2UsIDB4ZmY6dGVybWluYXRlLAorKiogICAgCQkJCTk6bmV3IHJhaWQgbGV2ZWwsCisqKiAgICAJCQkJMTA6bmV3IHN0cmlwZSBzaXplCisqKiAgICAJCQkJMC8xLzIvMy80LzUtPjQvOC8xNi8zMi82NC8xMjhLICkKKyoqICAgIAkJYnl0ZSAxMS8xMi8xMyAgIDogcmVwZWF0IGZvciBlYWNoIHZvbHVtZSBpbiB0aGUgcmFpZHNldAorKiogICAgICBHVUlfQUNUSVZBVEVfUkFJRFNFVCA6IEFjdGl2YXRlIGluY29tcGxldGUgcmFpZCBzZXQKKyoqICAgIAkJYnl0ZSAwLDEgICAgICAgIDogbGVuZ3RoCisqKiAgICAJCWJ5dGUgMiAgICAgICAgICA6IGNvbW1hbmQgY29kZSAweDUzCisqKiAgICAJCWJ5dGUgMyAgICAgICAgICA6IHJhaWRzZXQjCisqKiAgICAgIEdVSV9DUkVBVEVfSE9UX1NQQVJFIDogQ3JlYXRlIGhvdCBzcGFyZSBkaXNrCisqKiAgICAJCWJ5dGUgMCwxICAgICAgICA6IGxlbmd0aAorKiogICAgCQlieXRlIDIgICAgICAgICAgOiBjb21tYW5kIGNvZGUgMHg1NAorKiogICAgCQlieXRlIDMvNC81LzYgICAgOiBkZXZpY2UgbWFzayBmb3IgaG90IHNwYXJlIGNyZWF0aW9uCisqKiAgICAJR1VJX0RFTEVURV9IT1RfU1BBUkUgOiBEZWxldGUgaG90IHNwYXJlIGRpc2sKKyoqICAgIAkJYnl0ZSAwLDEgICAgICAgIDogbGVuZ3RoCisqKiAgICAJCWJ5dGUgMiAgICAgICAgICA6IGNvbW1hbmQgY29kZSAweDU1CisqKiAgICAJCWJ5dGUgMy80LzUvNiAgICA6IGRldmljZSBtYXNrIGZvciBob3Qgc3BhcmUgZGVsZXRpb24KKyoqICAgIAlHVUlfQ1JFQVRFX1ZPTFVNRSA6IENyZWF0ZSB2b2x1bWUgc2V0CisqKiAgICAJCWJ5dGUgMCwxICAgICAgICA6IGxlbmd0aAorKiogICAgCQlieXRlIDIgICAgICAgICAgOiBjb21tYW5kIGNvZGUgMHg2MAorKiogICAgCQlieXRlIDMgICAgICAgICAgOiByYWlkc2V0IworKiogICAgCQlieXRlIDQtMTkgICAgICAgOiB2b2x1bWUgc2V0IG5hbWUKKyoqICAgIAkJCQkoaWYgYnl0ZTQgPT0gMCwgdXNlIGRlZmF1bHQpCisqKiAgICAJCWJ5dGUgMjAtMjcgICAgICA6IHZvbHVtZSBjYXBhY2l0eSAoYmxvY2tzKQorKiogICAgCQlieXRlIDI4IAkJOiByYWlkIGxldmVsCisqKiAgICAJCWJ5dGUgMjkgCQk6IHN0cmlwZSBzaXplCisqKiAgICAJCQkJKDAvMS8yLzMvNC81LT40LzgvMTYvMzIvNjQvMTI4SykKKyoqICAgIAkJYnl0ZSAzMCAJCTogY2hhbm5lbAorKiogICAgCQlieXRlIDMxIAkJOiBJRAorKiogICAgCQlieXRlIDMyIAkJOiBMVU4KKyoqICAgIAkJYnl0ZSAzMyAJCTogMSBlbmFibGUgdGFnCisqKiAgICAJCWJ5dGUgMzQgCQk6IDEgZW5hYmxlIGNhY2hlCisqKiAgICAJCWJ5dGUgMzUgCQk6IHNwZWVkCisqKiAgICAJCSgwLzEvMi8zLzQtPmFzeW5jLzIwLzQwLzgwLzE2MCBmb3Igc2NzaSkKKyoqICAgIAkJKDAvMS8yLzMvNC0+MzMvNjYvMTAwLzEzMy8xNTAgZm9yIElERSAgKQorKiogICAgCQlieXRlIDM2IAkJOiAxIHRvIHNlbGVjdCBxdWljayBpbml0CisqKgorKiogICAgCUdVSV9NT0RJRllfVk9MVU1FIDogTW9kaWZ5IHZvbHVtZSBTZXQKKyoqICAgIAkJYnl0ZSAwLDEgICAgICAgIDogbGVuZ3RoCisqKiAgICAJCWJ5dGUgMiAgICAgICAgICA6IGNvbW1hbmQgY29kZSAweDYxCisqKiAgICAJCWJ5dGUgMyAgICAgICAgICA6IHZvbHVtZXNldCMKKyoqICAgIAkJYnl0ZSA0LTE5ICAgICAgIDogbmV3IHZvbHVtZSBzZXQgbmFtZQorKiogICAgCQkoaWYgYnl0ZTQgPT0gMCwgbm90IGNoYW5nZSkKKyoqICAgIAkJYnl0ZSAyMC0yNyAgICAgIDogbmV3IHZvbHVtZSBjYXBhY2l0eSAocmVzZXJ2ZWQpCisqKiAgICAJCWJ5dGUgMjggCQk6IG5ldyByYWlkIGxldmVsCisqKiAgICAJCWJ5dGUgMjkgCQk6IG5ldyBzdHJpcGUgc2l6ZQorKiogICAgCQkoMC8xLzIvMy80LzUtPjQvOC8xNi8zMi82NC8xMjhLKQorKiogICAgCQlieXRlIDMwIAkJOiBuZXcgY2hhbm5lbAorKiogICAgCQlieXRlIDMxIAkJOiBuZXcgSUQKKyoqICAgIAkJYnl0ZSAzMiAJCTogbmV3IExVTgorKiogICAgCQlieXRlIDMzIAkJOiAxIGVuYWJsZSB0YWcKKyoqICAgIAkJYnl0ZSAzNCAJCTogMSBlbmFibGUgY2FjaGUKKyoqICAgIAkJYnl0ZSAzNSAJCTogc3BlZWQKKyoqICAgIAkJKDAvMS8yLzMvNC0+YXN5bmMvMjAvNDAvODAvMTYwIGZvciBzY3NpKQorKiogICAgCQkoMC8xLzIvMy80LT4zMy82Ni8xMDAvMTMzLzE1MCBmb3IgSURFICApCisqKiAgICAJR1VJX0RFTEVURV9WT0xVTUUgOiBEZWxldGUgdm9sdW1lIHNldAorKiogICAgCQlieXRlIDAsMSAgICAgICAgOiBsZW5ndGgKKyoqICAgIAkJYnl0ZSAyICAgICAgICAgIDogY29tbWFuZCBjb2RlIDB4NjIKKyoqICAgIAkJYnl0ZSAzICAgICAgICAgIDogdm9sdW1lc2V0IworKiogICAgCUdVSV9TVEFSVF9DSEVDS19WT0xVTUUgOiBTdGFydCB2b2x1bWUgY29uc2lzdGVuY3kgY2hlY2sKKyoqICAgIAkJYnl0ZSAwLDEgICAgICAgIDogbGVuZ3RoCisqKiAgICAJCWJ5dGUgMiAgICAgICAgICA6IGNvbW1hbmQgY29kZSAweDYzCisqKiAgICAJCWJ5dGUgMyAgICAgICAgICA6IHZvbHVtZXNldCMKKyoqICAgIAlHVUlfU1RPUF9DSEVDS19WT0xVTUUgOiBTdG9wIHZvbHVtZSBjb25zaXN0ZW5jeSBjaGVjaworKiogICAgCQlieXRlIDAsMSAgICAgICAgOiBsZW5ndGgKKyoqICAgIAkJYnl0ZSAyICAgICAgICAgIDogY29tbWFuZCBjb2RlIDB4NjQKKyoqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiogICAgNC4gUmV0dXJuZWQgZGF0YQorKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqKiAgICAJKEEpIEhlYWRlciAgICAgICAgICA6IDMgYnl0ZXMgc2VxdWVuY2UgKDB4NUUsIDB4MDEsIDB4NjEpCisqKiAgICAJKEIpIExlbmd0aCAgICAgICAgICA6IDIgYnl0ZXMKKyoqICAgIAkJCShsb3cgYnl0ZSAxc3QsIGV4Y2x1ZGVzIGxlbmd0aCBhbmQgY2hlY2tzdW0gYnl0ZSkKKyoqICAgIAkoQykgc3RhdHVzIG9yIGRhdGEgIDoKKyoqICAgICAgICAgICA8MT4gSWYgbGVuZ3RoID09IDEgPT0+IDEgYnl0ZSBzdGF0dXMgY29kZQorKiogICAgCQkjZGVmaW5lIEdVSV9PSyAgICAgICAgICAgICAgICAgICAgMHg0MQorKiogICAgCQkjZGVmaW5lIEdVSV9SQUlEU0VUX05PVF9OT1JNQUwgICAgMHg0MgorKiogICAgCQkjZGVmaW5lIEdVSV9WT0xVTUVTRVRfTk9UX05PUk1BTCAgMHg0MworKiogICAgCQkjZGVmaW5lIEdVSV9OT19SQUlEU0VUICAgICAgICAgICAgMHg0NAorKiogICAgCQkjZGVmaW5lIEdVSV9OT19WT0xVTUVTRVQgICAgICAgICAgMHg0NQorKiogICAgCQkjZGVmaW5lIEdVSV9OT19QSFlTSUNBTF9EUklWRSAgICAgMHg0NgorKiogICAgCQkjZGVmaW5lIEdVSV9QQVJBTUVURVJfRVJST1IgICAgICAgMHg0NworKiogICAgCQkjZGVmaW5lIEdVSV9VTlNVUFBPUlRFRF9DT01NQU5EICAgMHg0OAorKiogICAgCQkjZGVmaW5lIEdVSV9ESVNLX0NPTkZJR19DSEFOR0VEICAgMHg0OQorKiogICAgCQkjZGVmaW5lIEdVSV9JTlZBTElEX1BBU1NXT1JEICAgICAgMHg0YQorKiogICAgCQkjZGVmaW5lIEdVSV9OT19ESVNLX1NQQUNFICAgICAgICAgMHg0YgorKiogICAgCQkjZGVmaW5lIEdVSV9DSEVDS1NVTV9FUlJPUiAgICAgICAgMHg0YworKiogICAgCQkjZGVmaW5lIEdVSV9QQVNTV09SRF9SRVFVSVJFRCAgICAgMHg0ZAorKiogICAgICAgICAgIDwyPiBJZiBsZW5ndGggPiAxID09PgorKiogICAgCQlkYXRhIGJsb2NrIHJldHVybmVkIGZyb20gY29udHJvbGxlcgorKiogICAgCQlhbmQgdGhlIGNvbnRlbnRzIGRlcGVuZHMgb24gdGhlIGNvbW1hbmQgY29kZQorKiogICAgCShFKSBDaGVja3N1bSAgICAgICAgOiBjaGVja3N1bSBvZiBsZW5ndGggYW5kIHN0YXR1cyBvciBkYXRhIGJ5dGUKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvYmZhLnR4dCBiL0RvY3VtZW50YXRpb24vc2NzaS9iZmEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyZDZlOWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvYmZhLnR4dApAQCAtMCwwICsxLDgyIEBACitMaW51eCBkcml2ZXIgZm9yIEJyb2NhZGUgRkMvRkNPRSBhZGFwdGVycworCisKK1N1cHBvcnRlZCBIYXJkd2FyZQorLS0tLS0tLS0tLS0tLS0tLS0tCisKK2JmYSAzLjAuMi4yIGRyaXZlciBzdXBwb3J0cyBhbGwgQnJvY2FkZSBGQy9GQ09FIGFkYXB0ZXJzLiBCZWxvdyBpcyBhIGxpc3Qgb2YKK2FkYXB0ZXIgbW9kZWxzIHdpdGggY29ycmVzcG9uZGluZyBQQ0lJRHMuCisKKwlQQ0lJRAkJICAJTW9kZWwKKworCTE2NTc6MDAxMzoxNjU3OjAwMTQJNDI1IDRHYnBzIGR1YWwgcG9ydCBGQyBIQkEKKwkxNjU3OjAwMTM6MTY1NzowMDE0CTgyNSA4R2JwcyBQQ0llIGR1YWwgcG9ydCBGQyBIQkEKKwkxNjU3OjAwMTM6MTAzYzoxNzQyCUhQIDgyQiA4R2JwcyBQQ0llZHVhbCBwb3J0IEZDIEhCQQorCTE2NTc6MDAxMzoxMDNjOjE3NDQJSFAgNDJCIDRHYnBzIGR1YWwgcG9ydCBGQyBIQkEKKwkxNjU3OjAwMTc6MTY1NzowMDE0CTQxNSA0R2JwcyBzaW5nbGUgcG9ydCBGQyBIQkEKKwkxNjU3OjAwMTc6MTY1NzowMDE0CTgxNSA4R2JwcyBzaW5nbGUgcG9ydCBGQyBIQkEKKwkxNjU3OjAwMTc6MTAzYzoxNzQxCUhQIDQxQiA0R2JwcyBzaW5nbGUgcG9ydCBGQyBIQkEKKwkxNjU3OjAwMTc6MTAzYyAxNzQzCUhQIDgxQiA4R2JwcyBzaW5nbGUgcG9ydCBGQyBIQkEKKwkxNjU3OjAwMjE6MTAzYzoxNzc5CTgwNCA4R2JwcyBGQyBIQkEgZm9yIEhQIEJsYWRlc3lzdGVtIGMtY2xhc3MKKworCTE2NTc6MDAxNDoxNjU3OjAwMTQJMTAxMCAxMEdicHMgc2luZ2xlIHBvcnQgQ05BIC0gRkNPRQorCTE2NTc6MDAxNDoxNjU3OjAwMTQJMTAyMCAxMEdicHMgZHVhbCBwb3J0IENOQSAtIEZDT0UKKwkxNjU3OjAwMTQ6MTY1NzowMDE0CTEwMDcgMTBHYnBzIGR1YWwgcG9ydCBDTkEgLSBGQ09FCisJMTY1NzowMDE0OjE2NTc6MDAxNAkxNzQxIDEwR2JwcyBkdWFsIHBvcnQgQ05BIC0gRkNPRQorCisJMTY1NzowMDIyOjE2NTc6MDAyNAkxODYwIDE2R2JwcyBGQyBIQkEKKwkxNjU3OjAwMjI6MTY1NzowMDIyCTE4NjAgMTBHYnBzIENOQSAtIEZDT0UKKworCitGaXJtd2FyZSBkb3dubG9hZAorLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGxhdGVzdCBGaXJtd2FyZSBwYWNrYWdlIGZvciAzLjAuMi4yIGJmYSBkcml2ZXIgY2FuIGJlIGZvdW5kIGF0OgorCitodHRwOi8vd3d3LmJyb2NhZGUuY29tL3NlcnZpY2VzLXN1cHBvcnQvZHJpdmVycy1kb3dubG9hZHMvYWRhcHRlcnMvTGludXgucGFnZQorCithbmQgdGhlbiBjbGljayBmb2xsb3dpbmcgcmVzcGVjdGl2ZSB1dGlsIHBhY2thZ2UgbGluazoKKworCVZlcnNpb24JCQlMaW5rCisKKwl2My4wLjAuMAlMaW51eCBBZGFwdGVyIEZpcm13YXJlIHBhY2thZ2UgZm9yIFJIRUwgNi4yLCBTTEVTIDExU1AyCisKKworQ29uZmlndXJhdGlvbiAmIE1hbmFnZW1lbnQgdXRpbGl0eSBkb3dubG9hZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbGF0ZXN0IGRyaXZlciBjb25maWd1cmF0aW9uICYgbWFuYWdlbWVudCB1dGlsaXR5IGZvciAzLjAuMi4yIGJmYSBkcml2ZXIgY2FuCitiZSBmb3VuZCBhdDoKKworaHR0cDovL3d3dy5icm9jYWRlLmNvbS9zZXJ2aWNlcy1zdXBwb3J0L2RyaXZlcnMtZG93bmxvYWRzL2FkYXB0ZXJzL0xpbnV4LnBhZ2UKKworYW5kIHRoZW4gY2xpY2sgZm9sbG93aW5nIHJlc3BlY3RpdmUgdXRpbCBwYWNha2dlIGxpbmsKKworCVZlcnNpb24JCQlMaW5rCisKKwl2My4wLjIuMAlMaW51eCBBZGFwdGVyIEZpcm13YXJlIHBhY2thZ2UgZm9yIFJIRUwgNi4yLCBTTEVTIDExU1AyCisKKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCitUaGUgbGF0ZXN0IEFkbWluaXN0cmF0aW9uJ3MgR3VpZGUsIEluc3RhbGxhdGlvbiBhbmQgUmVmZXJlbmNlIE1hbnVhbCwKK1Ryb3VibGVzaG9vdGluZyBHdWlkZSwgYW5kIFJlbGVhc2UgTm90ZXMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIG91dC1vZi1ib3gKK2RyaXZlciBjYW4gYmUgZm91bmQgYXQ6CisKK2h0dHA6Ly93d3cuYnJvY2FkZS5jb20vc2VydmljZXMtc3VwcG9ydC9kcml2ZXJzLWRvd25sb2Fkcy9hZGFwdGVycy9MaW51eC5wYWdlCisKK2FuZCB1c2UgdGhlIGZvbGxvd2luZyBpbmJveCBhbmQgb3V0LW9mLWJveCBkcml2ZXIgdmVyc2lvbiBtYXBwaW5nIHRvIGZpbmQKK3RoZSBjb3JyZXNwb25kaW5nIGRvY3VtZW50YXRpb246CisKKwlJbmJveCBWZXJzaW9uCQlPdXQtb2YtYm94IFZlcnNpb24KKworCXYzLjAuMi4yCQl2My4wLjAuMAorCisKK1N1cHBvcnQKKy0tLS0tLS0KKworRm9yIGdlbmVyYWwgcHJvZHVjdCBhbmQgc3VwcG9ydCBpbmZvLCBnbyB0byB0aGUgQnJvY2FkZSB3ZWJzaXRlIGF0OgorCitodHRwOi8vd3d3LmJyb2NhZGUuY29tL3NlcnZpY2VzLXN1cHBvcnQvaW5kZXgucGFnZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL2JueDJmYy50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvYm54MmZjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDgyMzU1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL2JueDJmYy50eHQKQEAgLTAsMCArMSw3NSBAQAorT3BlcmF0aW5nIEZDb0UgdXNpbmcgYm54MmZjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0Jyb2FkY29tIEZDb0Ugb2ZmbG9hZCB0aHJvdWdoIGJueDJmYyBpcyBmdWxsIHN0YXRlZnVsIGhhcmR3YXJlIG9mZmxvYWQgdGhhdAorY29vcGVyYXRlcyB3aXRoIGFsbCBpbnRlcmZhY2VzIHByb3ZpZGVkIGJ5IHRoZSBMaW51eCBlY29zeXN0ZW0gZm9yIEZDL0ZDb0UgYW5kCitTQ1NJIGNvbnRyb2xsZXJzLiAgQXMgc3VjaCwgRkNvRSBmdW5jdGlvbmFsaXR5LCBvbmNlIGVuYWJsZWQgaXMgbGFyZ2VseQordHJhbnNwYXJlbnQuIERldmljZXMgZGlzY292ZXJlZCBvbiB0aGUgU0FOIHdpbGwgYmUgcmVnaXN0ZXJlZCBhbmQgdW5yZWdpc3RlcmVkCithdXRvbWF0aWNhbGx5IHdpdGggdGhlIHVwcGVyIHN0b3JhZ2UgbGF5ZXJzLgorCitEZXNwaXRlIHRoZSBmYWN0IHRoYXQgdGhlIEJyb2FkY29tJ3MgRkNvRSBvZmZsb2FkIGlzIGZ1bGx5IG9mZmxvYWRlZCwgaXQgZG9lcworZGVwZW5kIG9uIHRoZSBzdGF0ZSBvZiB0aGUgbmV0d29yayBpbnRlcmZhY2VzIHRvIG9wZXJhdGUuIEFzIHN1Y2gsIHRoZSBuZXR3b3JrCitpbnRlcmZhY2UgKGUuZy4gZXRoMCkgYXNzb2NpYXRlZCB3aXRoIHRoZSBGQ29FIG9mZmxvYWQgaW5pdGlhdG9yIG11c3QgYmUgJ3VwJy4KK0l0IGlzIHJlY29tbWVuZGVkIHRoYXQgdGhlIG5ldHdvcmsgaW50ZXJmYWNlcyBiZSBjb25maWd1cmVkIHRvIGJlIGJyb3VnaHQgdXAKK2F1dG9tYXRpY2FsbHkgYXQgYm9vdCB0aW1lLgorCitGdXJ0aGVybW9yZSwgdGhlIEJyb2FkY29tIEZDb0Ugb2ZmbG9hZCBzb2x1dGlvbiBjcmVhdGVzIFZMQU4gaW50ZXJmYWNlcyB0bworc3VwcG9ydCB0aGUgVkxBTnMgdGhhdCBoYXZlIGJlZW4gZGlzY292ZXJlZCBmb3IgRkNvRSBvcGVyYXRpb24gKGUuZy4KK2V0aDAuMTAwMS1mY29lKS4gIERvIG5vdCBkZWxldGUgb3IgZGlzYWJsZSB0aGVzZSBpbnRlcmZhY2VzIG9yIEZDb0Ugb3BlcmF0aW9uCit3aWxsIGJlIGRpc3J1cHRlZC4KKworRHJpdmVyIFVzYWdlIE1vZGVsOgorPT09PT09PT09PT09PT09PT09PQorCisxLiBFbnN1cmUgdGhhdCBmY29lLXV0aWxzIHBhY2thZ2UgaXMgaW5zdGFsbGVkLgorCisyLiBDb25maWd1cmUgdGhlIGludGVyZmFjZXMgb24gd2hpY2ggYm54MmZjIGRyaXZlciBoYXMgdG8gb3BlcmF0ZSBvbi4KK0hlcmUgYXJlIHRoZSBzdGVwcyB0byBjb25maWd1cmU6CisJYS4gY2QgL2V0Yy9mY29lCisJYi4gY29weSBjZmctZXRoeCB0byBjZmctZXRoNSBpZiBGQ29FIGhhcyB0byBiZSBlbmFibGVkIG9uIGV0aDUuCisJYy4gUmVwZWF0IHRoaXMgZm9yIGFsbCB0aGUgaW50ZXJmYWNlcyB3aGVyZSBGQ29FIGhhcyB0byBiZSBlbmFibGVkLgorCWQuIEVkaXQgYWxsIHRoZSBjZmctZXRoIGZpbGVzIHRvIHNldCAibm8iIGZvciBEQ0JfUkVRVUlSRUQqKiBmaWVsZCwgYW5kCisJICAgInllcyIgZm9yIEFVVE9fVkxBTi4KKwllLiBPdGhlciBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgc2hvdWxkIGJlIGxlZnQgYXMgZGVmYXVsdAorCiszLiBFbnN1cmUgdGhhdCAiYm54MmZjIiBpcyBpbiBTVVBQT1JURURfRFJJVkVSUyBsaXN0IGluIC9ldGMvZmNvZS9jb25maWcuCisKKzQuIFN0YXJ0IGZjb2Ugc2VydmljZS4gKHNlcnZpY2UgZmNvZSBzdGFydCkuIElmIEJyb2FkY29tIGRldmljZXMgYXJlIHByZXNlbnQgaW4KK3RoZSBzeXN0ZW0sIGJueDJmYyBkcml2ZXIgd291bGQgYXV0b21hdGljYWxseSBjbGFpbSB0aGUgaW50ZXJmYWNlcywgc3RhcnRzIHZsYW4KK2Rpc2NvdmVyeSBhbmQgbG9nIGludG8gdGhlIHRhcmdldHMuCisKKzUuICJTeW1ib2xpYyBOYW1lIiBpbiAnZmNvZWFkbSAtaScgb3V0cHV0IHdvdWxkIGRpc3BsYXkgaWYgYm54MmZjIGhhcyBjbGFpbWVkCit0aGUgaW50ZXJmYWNlLgorRWc6Citbcm9vdEBiaDIgfl0jIGZjb2VhZG0gLWkKKyAgICBEZXNjcmlwdGlvbjogICAgICBOZXRYdHJlbWUgSUkgQkNNNTc3MTIgMTAgR2lnYWJpdCBFdGhlcm5ldAorICAgIFJldmlzaW9uOiAgICAgICAgIDAxCisgICAgTWFudWZhY3R1cmVyOiAgICAgQnJvYWRjb20gQ29ycG9yYXRpb24KKyAgICBTZXJpYWwgTnVtYmVyOiAgICAwMDEwMTg2RkQ1NTgKKyAgICBEcml2ZXI6ICAgICAgICAgICBibngyeCAxLjcwLjAwLTAKKyAgICBOdW1iZXIgb2YgUG9ydHM6ICAyCisKKyAgICAgICAgU3ltYm9saWMgTmFtZTogICAgIGJueDJmYyB2MS4wLjUgb3ZlciBldGg1LjQKKyAgICAgICAgT1MgRGV2aWNlIE5hbWU6ICAgIGhvc3QxMQorICAgICAgICBOb2RlIE5hbWU6ICAgICAgICAgMHgxMDAwMDAxMDE4NkZENTU5CisgICAgICAgIFBvcnQgTmFtZTogICAgICAgICAweDIwMDAwMDEwMTg2RkQ1NTkKKyAgICAgICAgRmFicmljTmFtZTogICAgICAgIDB4MjAwMTAwMERFQ0IzQjY4MQorICAgICAgICBTcGVlZDogICAgICAgICAgICAgMTAgR2JpdAorICAgICAgICBTdXBwb3J0ZWQgU3BlZWQ6ICAgMTAgR2JpdAorICAgICAgICBNYXhGcmFtZVNpemU6ICAgICAgMjA0OAorICAgICAgICBGQy1JRCAoUG9ydCBJRCk6ICAgMHgwRjAzNzcKKyAgICAgICAgU3RhdGU6ICAgICAgICAgICAgIE9ubGluZQorCis2LiBWZXJpZnkgdGhlIHZsYW4gZGlzY292ZXJ5IGlzIHBlcmZvcm1lZCBieSBydW5uaW5nIGlmY29uZmlnIGFuZCBub3RpY2UKKzxJTlRFUkZBQ0U+LjxWTEFOPi1mY29lIGludGVyZmFjZXMgYXJlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZC4KKworUmVmZXIgdG8gZmNvZWFkbSBtYW5wYWdlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGZjb2VhZG0gb3BlcmF0aW9ucyB0bworY3JlYXRlL2Rlc3Ryb3kgaW50ZXJmYWNlcyBvciB0byBkaXNwbGF5IGx1bi90YXJnZXQgaW5mb3JtYXRpb24uCisKK05PVEU6Cis9PT09CisqKiBCcm9hZGNvbSBGQ29FIGNhcGFibGUgZGV2aWNlcyBpbXBsZW1lbnQgYSBEQ0JYL0xMRFAgY2xpZW50IG9uLWNoaXAuIE9ubHkgb25lCitMTERQIGNsaWVudCBpcyBhbGxvd2VkIHBlciBpbnRlcmZhY2UuIEZvciBwcm9wZXIgb3BlcmF0aW9uIGFsbCBob3N0IHNvZnR3YXJlCitiYXNlZCBEQ0JYL0xMRFAgY2xpZW50cyAoZS5nLiBsbGRwYWQpIG11c3QgYmUgZGlzYWJsZWQuIFRvIGRpc2FibGUgbGxkcGFkIG9uIGEKK2dpdmVuIGludGVyZmFjZSwgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKworbGxkcHRvb2wgc2V0LWxsZHAgLWkgPGludGVyZmFjZV9uYW1lPiBhZG1pblN0YXR1cz1kaXNhYmxlZApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL2N4Z2IzaS50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvY3hnYjNpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWM4MDMyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL2N4Z2IzaS50eHQKQEAgLTAsMCArMSw4NCBAQAorQ2hlbHNpbyBTMyBpU0NTSSBEcml2ZXIgZm9yIExpbnV4CisKK0ludHJvZHVjdGlvbgorPT09PT09PT09PT09CisKK1RoZSBDaGVsc2lvIFQzIEFTSUMgYmFzZWQgQWRhcHRlcnMgKFMzMTAsIFMzMjAsIFMzMDIsIFMzMDQsIE1lenogY2FyZHMsIGV0Yy4KK3NlcmllcyBvZiBwcm9kdWN0cykgc3VwcG9ydCBpU0NTSSBhY2NlbGVyYXRpb24gYW5kIGlTQ1NJIERpcmVjdCBEYXRhIFBsYWNlbWVudAorKEREUCkgd2hlcmUgdGhlIGhhcmR3YXJlIGhhbmRsZXMgdGhlIGV4cGVuc2l2ZSBieXRlIHRvdWNoaW5nIG9wZXJhdGlvbnMsIHN1Y2gKK2FzIENSQyBjb21wdXRhdGlvbiBhbmQgdmVyaWZpY2F0aW9uLCBhbmQgZGlyZWN0IERNQSB0byB0aGUgZmluYWwgaG9zdCBtZW1vcnkKK2Rlc3RpbmF0aW9uOgorCisJLSBpU0NTSSBQRFUgZGlnZXN0IGdlbmVyYXRpb24gYW5kIHZlcmlmaWNhdGlvbgorCisJICBPbiB0cmFuc21pdHRpbmcsIENoZWxzaW8gUzMgaC93IGNvbXB1dGVzIGFuZCBpbnNlcnRzIHRoZSBIZWFkZXIgYW5kCisJICBEYXRhIGRpZ2VzdCBpbnRvIHRoZSBQRFVzLgorCSAgT24gcmVjZWl2aW5nLCBDaGVsc2lvIFMzIGgvdyBjb21wdXRlcyBhbmQgdmVyaWZpZXMgdGhlIEhlYWRlciBhbmQKKwkgIERhdGEgZGlnZXN0IG9mIHRoZSBQRFVzLgorCisJLSBEaXJlY3QgRGF0YSBQbGFjZW1lbnQgKEREUCkKKworCSAgUzMgaC93IGNhbiBkaXJlY3RseSBwbGFjZSB0aGUgaVNDU0kgRGF0YS1JbiBvciBEYXRhLU91dCBQRFUncworCSAgcGF5bG9hZCBpbnRvIHByZS1wb3N0ZWQgZmluYWwgZGVzdGluYXRpb24gaG9zdC1tZW1vcnkgYnVmZmVycyBiYXNlZAorCSAgb24gdGhlIEluaXRpYXRvciBUYXNrIFRhZyAoSVRUKSBpbiBEYXRhLUluIG9yIFRhcmdldCBUYXNrIFRhZyAoVFRUKQorCSAgaW4gRGF0YS1PdXQgUERVcy4KKworCS0gUERVIFRyYW5zbWl0IGFuZCBSZWNvdmVyeQorCisJICBPbiB0cmFuc21pdHRpbmcsIFMzIGgvdyBhY2NlcHRzIHRoZSBjb21wbGV0ZSBQRFUgKGhlYWRlciArIGRhdGEpCisJICBmcm9tIHRoZSBob3N0IGRyaXZlciwgY29tcHV0ZXMgYW5kIGluc2VydHMgdGhlIGRpZ2VzdHMsIGRlY29tcG9zZXMKKwkgIHRoZSBQRFUgaW50byBtdWx0aXBsZSBUQ1Agc2VnbWVudHMgaWYgbmVjZXNzYXJ5LCBhbmQgdHJhbnNtaXQgYWxsCisJICB0aGUgVENQIHNlZ21lbnRzIG9udG8gdGhlIHdpcmUuIEl0IGhhbmRsZXMgVENQIHJldHJhbnNtaXNzaW9uIGlmCisJICBuZWVkZWQuCisKKwkgIE9uIHJlY2VpdmluZywgUzMgaC93IHJlY292ZXJzIHRoZSBpU0NTSSBQRFUgYnkgcmVhc3NlbWJsaW5nIFRDUAorCSAgc2VnbWVudHMsIHNlcGFyYXRpbmcgdGhlIGhlYWRlciBhbmQgZGF0YSwgY2FsY3VsYXRpbmcgYW5kIHZlcmlmeWluZworCSAgdGhlIGRpZ2VzdHMsIHRoZW4gZm9yd2FyZGluZyB0aGUgaGVhZGVyIHRvIHRoZSBob3N0LiBUaGUgcGF5bG9hZCBkYXRhLAorCSAgaWYgcG9zc2libGUsIHdpbGwgYmUgZGlyZWN0bHkgcGxhY2VkIGludG8gdGhlIHByZS1wb3N0ZWQgaG9zdCBERFAKKwkgIGJ1ZmZlci4gT3RoZXJ3aXNlLCB0aGUgcGF5bG9hZCBkYXRhIHdpbGwgYmUgc2VudCB0byB0aGUgaG9zdCB0b28uCisKK1RoZSBjeGdiM2kgZHJpdmVyIGludGVyZmFjZXMgd2l0aCBvcGVuLWlzY3NpIGluaXRpYXRvciBhbmQgcHJvdmlkZXMgdGhlIGlTQ1NJCithY2NlbGVyYXRpb24gdGhyb3VnaCBDaGVsc2lvIGhhcmR3YXJlIHdoZXJldmVyIGFwcGxpY2FibGUuCisKK1VzaW5nIHRoZSBjeGdiM2kgRHJpdmVyCis9PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZm9sbG93aW5nIHN0ZXBzIG5lZWQgdG8gYmUgdGFrZW4gdG8gYWNjZWxlcmF0ZXMgdGhlIG9wZW4taXNjc2kgaW5pdGlhdG9yOgorCisxLiBMb2FkIHRoZSBjeGdiM2kgZHJpdmVyOiAibW9kcHJvYmUgY3hnYjNpIgorCisgICBUaGUgY3hnYjNpIG1vZHVsZSByZWdpc3RlcnMgYSBuZXcgdHJhbnNwb3J0IGNsYXNzICJjeGdiM2kiIHdpdGggb3Blbi1pc2NzaS4KKworICAgKiBpbiB0aGUgY2FzZSBvZiByZWNvbXBpbGluZyB0aGUga2VybmVsLCB0aGUgY3hnYjNpIHNlbGVjdGlvbiBpcyBsb2NhdGVkIGF0CisJRGV2aWNlIERyaXZlcnMKKwkJU0NTSSBkZXZpY2Ugc3VwcG9ydCAtLS0+CisJCQlbKl0gU0NTSSBsb3ctbGV2ZWwgZHJpdmVycyAgLS0tPgorCQkJCTxNPiAgIENoZWxzaW8gUzN4eCBpU0NTSSBzdXBwb3J0CisKKzIuIENyZWF0ZSBhbiBpbnRlcmZhY2UgZmlsZSBsb2NhdGVkIHVuZGVyIC9ldGMvaXNjc2kvaWZhY2VzLyBmb3IgdGhlIG5ldworICAgdHJhbnNwb3J0IGNsYXNzICJjeGdiM2kiLgorCisgICBUaGUgY29udGVudCBvZiB0aGUgZmlsZSBzaG91bGQgYmUgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6CisJaWZhY2UudHJhbnNwb3J0X25hbWUgPSBjeGdiM2kKKwlpZmFjZS5uZXRfaWZhY2VuYW1lID0gPGV0aFg+CisJaWZhY2UuaXBhZGRyZXNzID0gPGlzY3NpIGlwIGFkZHJlc3M+CisKKyAgICogaWYgaWZhY2UuaXBhZGRyZXNzIGlzIHNwZWNpZmllZCwgPGlzY3NpIGlwIGFkZHJlc3M+IG5lZWRzIHRvIGJlIGVpdGhlciB0aGUKKwlzYW1lIGFzIHRoZSBldGhYJ3MgaXAgYWRkcmVzcyBvciBhbiBhZGRyZXNzIG9uIHRoZSBzYW1lIHN1Ym5ldC4gTWFrZQorCXN1cmUgdGhlIGlwIGFkZHJlc3MgaXMgdW5pcXVlIGluIHRoZSBuZXR3b3JrLgorCiszLiBlZGl0IC9ldGMvaXNjc2kvaXNjc2lkLmNvbmYKKyAgIFRoZSBkZWZhdWx0IHNldHRpbmcgZm9yIE1heFJlY3ZEYXRhU2VnbWVudExlbmd0aCAoMTMxMDcyKSBpcyB0b28gYmlnOworICAgcmVwbGFjZSB3aXRoIGEgdmFsdWUgbm8gYmlnZ2VyIHRoYW4gMTUzNjAgKGZvciBleGFtcGxlIDgxOTIpOgorCisJbm9kZS5jb25uWzBdLmlzY3NpLk1heFJlY3ZEYXRhU2VnbWVudExlbmd0aCA9IDgxOTIKKworICAgKiBUaGUgbG9naW4gd291bGQgZmFpbCBmb3IgYSBub3JtYWwgc2Vzc2lvbiBpZiBNYXhSZWN2RGF0YVNlZ21lbnRMZW5ndGggaXMKKwl0b28gYmlnLiAgQSBlcnJvciBtZXNzYWdlIGluIHRoZSBmb3JtYXQgb2YKKwkiY3hnYjNpOiBFUlIhIE1heFJlY3ZTZWdtZW50TGVuZ3RoIDxYPiB0b28gYmlnLiBOZWVkIHRvIGJlIDw9IDxZPi4iCisJd291bGQgYmUgbG9nZ2VkIHRvIGRtZXNnLgorCis0LiBUbyBkaXJlY3Qgb3Blbi1pc2NzaSB0cmFmZmljIHRvIGdvIHRocm91Z2ggY3hnYjNpJ3MgYWNjZWxlcmF0ZWQgcGF0aCwKKyAgICItSSA8aWZhY2UgZmlsZSBuYW1lPiIgb3B0aW9uIG5lZWRzIHRvIGJlIHNwZWNpZmllZCB3aXRoIG1vc3Qgb2YgdGhlCisgICBpc2NzaWFkbSBjb21tYW5kLiA8aWZhY2UgZmlsZSBuYW1lPiBpcyB0aGUgdHJhbnNwb3J0IGludGVyZmFjZSBmaWxlIGNyZWF0ZWQKKyAgIGluIHN0ZXAgMi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9kYzM5NXgudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL2RjMzk1eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgyMTlmOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2NzaS9kYzM5NXgudHh0CkBAIC0wLDAgKzEsMTAyIEBACitSRUFETUUgZmlsZSBmb3IgdGhlIGRjMzk1eCBTQ1NJIGRyaXZlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1N0YXR1cworLS0tLS0tCitUaGUgZHJpdmVyIGhhcyBiZWVuIHRlc3RlZCB3aXRoIENELVIgYW5kIENELVIvVyBkcml2ZXMuIFRoZXNlIHNob3VsZAorYmUgc2FmZSB0byB1c2UuIFRlc3Rpbmcgd2l0aCBoYXJkIGRpc2tzIGhhcyBub3QgYmVlbiBkb25lIHRvIGFueQorZ3JlYXQgZGVncmVlIGFuZCBjYXV0aW9uIHNob3VsZCBiZSBleGVyY2lzZWQgaWYgeW91IHdhbnQgdG8gYXR0ZW1wdAordG8gdXNlIHRoaXMgZHJpdmVyIHdpdGggaGFyZCBkaXNrcy4KKworVGhpcyBpcyBhIDIuNSBvbmx5IGRyaXZlci4gRm9yIGEgMi40IGRyaXZlciBwbGVhc2Ugc2VlIHRoZSBvcmlnaW5hbAorZHJpdmVyICh3aGljaCB0aGlzIGRyaXZlciBzdGFydGVkIGZyb20pIGF0CitodHRwOi8vd3d3LmdhcmxvZmYuZGUva3VydC9saW51eC9kYzM5NS8KKworUHJvYmxlbXMsIHF1ZXN0aW9ucyBhbmQgcGF0Y2hlcyBzaG91bGQgYmUgc3VibWl0dGVkIHRvIHRoZSBtYWlsaW5nCitsaXN0LiBEZXRhaWxzIG9uIHRoZSBsaXN0LCBpbmNsdWRpbmcgYXJjaGl2ZXMsIGFyZSBhdmFpbGFibGUgYXQKK2h0dHA6Ly9saXN0cy50d2liYmxlLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RjMzk1eC8KKworUGFyYW1ldGVycworLS0tLS0tLS0tLQorVGhlIGRyaXZlciB1c2VzIHRoZSBzZXR0aW5ncyBmcm9tIHRoZSBFRVBST00gc2V0IGluIHRoZSBTQ1NJIEJJT1MgCitzZXR1cC4gSWYgdGhlcmUgaXMgbm8gRUVQUk9NLCB0aGUgZHJpdmVyIHVzZXMgZGVmYXVsdCB2YWx1ZXMuCitCb3RoIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzIChtb2R1bGUgb3Iga2VybmVsCitwYXJhbWV0ZXJzKS4KKworVGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIGFyZSBhdmFpbGFibGU6CisKKyAtIHNhZmUKKyAgIERlZmF1bHQ6IDAsIEFjY2VwdGFibGUgdmFsdWVzOiAwIG9yIDEKKworICAgSWYgc2FmZSBpcyBzZXQgdG8gMSB0aGVuIHRoZSBhZGFwdGVyIHdpbGwgdXNlIGNvbnNlcnZhdGl2ZQorICAgKCJzYWZlIikgZGVmYXVsdCBzZXR0aW5ncy4gVGhpcyBzZXRzOgorCisJCXNob3J0Y3V0IGZvciBkYzM5NXg9Nyw0LDksMTUsMiwxMAorCisgLSBhZGFwdGVyX2lkCisgICBEZWZhdWx0OiA3LCBBY2NlcHRhYmxlIHZhbHVlczogMCB0byAxNQorCisgICBTZXRzIHRoZSBob3N0IGFkYXB0ZXIgU0NTSSBJRC4KKworIC0gbWF4X3NwZWVkCisgICBEZWZhdWx0OiAxLCBBY2NlcHRhYmxlIHZhbHVlOiAwIHRvIDcKKyAgIDAgPSAyMCAgIE1oegorICAgMSA9IDEyLjIgTWh6CisgICAyID0gMTAgICBNaHoKKyAgIDMgPSA4ICAgIE1oegorICAgNCA9IDYuNyAgTWh6CisgICA1ID0gNS44ICBIaHoKKyAgIDYgPSA1ICAgIE1oegorICAgNyA9IDQgICAgTWh6CisKKyAtIGRldl9tb2RlCisgICBCaXRtYXAgZm9yIGRldmljZSBjb25maWd1cmF0aW9uCisKKyAgIERldk1vZGUgYml0IGRlZmluaXRpb246CisgICAgICBCaXQgVmFsKGhleCkgVmFsKGRlYykgIE1lYW5pbmcKKyAgICAgICowICAgIDB4MDEgICAgICAgMSAgICAgUGFyaXR5IGNoZWNrCisgICAgICAqMSAgICAweDAyICAgICAgIDIgICAgIFN5bmNocm9ub3VzIE5lZ290aWF0aW9uCisgICAgICAqMiAgICAweDA0ICAgICAgIDQgICAgIERpc2Nvbm5lY3Rpb24KKyAgICAgICozICAgIDB4MDggICAgICAgOCAgICAgU2VuZCBTdGFydCBjb21tYW5kIG9uIHN0YXJ0dXAuIChOb3QgdXNlZCkKKyAgICAgICo0ICAgIDB4MTAgICAgICAxNiAgICAgVGFnZ2VkIENvbW1hbmQgUXVldWVpbmcKKyAgICAgICo1ICAgIDB4MjAgICAgICAzMiAgICAgV2lkZSBOZWdvdGlhdGlvbgorCisgLSBhZGFwdGVyX21vZGUKKyAgIEJpdG1hcCBmb3IgYWRhcHRlciBjb25maWd1cmF0aW9uCisKKyAgIEFkYXB0TW9kZSBiaXQgZGVmaW5pdGlvbgorICAgICAgQml0IFZhbChoZXgpIFZhbChkZWMpICBNZWFuaW5nCisgICAgICAqMCAgICAweDAxICAgICAgIDEgICAgIFN1cHBvcnQgbW9yZSB0aGFuIHR3byBkcml2ZXMuIChOb3QgdXNlZCkKKyAgICAgICoxICAgIDB4MDIgICAgICAgMiAgICAgVXNlIERPUyBjb21wYXRpYmxlIG1hcHBpbmcgZm9yIEhEcyBncmVhdGVyIHRoYW4gMUdCLgorICAgICAgKjIgICAgMHgwNCAgICAgICA0ICAgICBSZXNldCBTQ1NJIEJ1cyBvbiBzdGFydHVwLgorICAgICAgKjMgICAgMHgwOCAgICAgICA4ICAgICBBY3RpdmUgTmVnYXRpb246IEltcHJvdmVzIFNDU0kgQnVzIG5vaXNlIGltbXVuaXR5LgorICAgICAgIDQgICAgMHgxMCAgICAgIDE2ICAgICBJbW1lZGlhdGUgcmV0dXJuIG9uIEJJT1Mgc2VlayBjb21tYW5kLiAoTm90IHVzZWQpCisgICAgKCopNSAgICAweDIwICAgICAgMzIgICAgIENoZWNrIGZvciBMVU5zID49IDEuCisKKyAtIHRhZ3MKKyAgIERlZmF1bHQ6IDMsIEFjY2VwdGFibGUgdmFsdWVzOiAwLTUKKyAgIAorICAgVGhlIG51bWJlciBvZiB0YWdzIGlzIDE8PHgsIGlmIHggaGFzIGJlZW4gc3BlY2lmaWVkCisKKyAtIHJlc2V0X2RlbGF5CisgICBEZWZhdWx0OiAxLCBBY2NlcHRhYmxlIHZhbHVlczogMC0xODAKKworICAgVGhlIHNlY29uZHMgdG8gbm90IGFjY2VwdCBjb21tYW5kcyBhZnRlciBhIFNDU0kgUmVzZXQKKworCitGb3IgdGhlIGJ1aWx0ICBpbiBkcml2ZXIgdGhlIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHByZWZpeGVkIHdpdGgKK2RjMzk1eC4gKGVnICJkYzM5NXguc2FmZT0xIikKKworCitDb3B5cmlnaHQKKy0tLS0tLS0tLQorVGhlIGRyaXZlciBpcyBmcmVlIHNvZnR3YXJlLiBJdCBpcyBwcm90ZWN0ZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworTGljZW5zZSAoR1BMKS4gUGxlYXNlIHJlYWQgaXQsIGJlZm9yZSB1c2luZyB0aGlzIGRyaXZlci4gSXQgc2hvdWxkIGJlCitpbmNsdWRlZCBpbiB5b3VyIGtlcm5lbCBzb3VyY2VzIGFuZCB3aXRoIHlvdXIgZGlzdHJpYnV0aW9uLiBJdCBjYXJyaWVzIHRoZQorZmlsZW5hbWUgQ09QWUlORy4gSWYgeW91IGRvbid0IGhhdmUgaXQsIHBsZWFzZSBhc2sgbWUgdG8gc2VuZCB5b3Ugb25lIGJ5CitlbWFpbC4KK05vdGU6IFRoZSBHTlUgR1BMIHNheXMgYWxzbyBzb21ldGhpbmcgYWJvdXQgd2FycmFudHkgYW5kIGxpYWJpbGl0eS4gCitQbGVhc2UgYmUgYXdhcmUgdGhlIGZvbGxvd2luZzogV2hpbGUgd2UgZG8gbXkgYmVzdCB0byBwcm92aWRlIGEgd29ya2luZyBhbmQKK3JlbGlhYmxlIGRyaXZlciwgdGhlcmUgaXMgYSBjaGFuY2UsIHRoYXQgaXQgd2lsbCBraWxsIHlvdXIgdmFsdWFibGUgZGF0YS4gCitXZSByZWZ1c2UgdG8gdGFrZSBhbnkgcmVzcG9uc2liaWxpdHkgZm9yIHRoYXQuIFRoZSBkcml2ZXIgaXMgcHJvdmlkZWQgYXMtaXMKK2FuZCBZT1UgVVNFIElUIEFUIFlPVVIgT1dOIFJFU1BPTlNJQklMSVRZLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL2RwdGkudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL2RwdGkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNmRjMGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvZHB0aS50eHQKQEAgLTAsMCArMSw4MyBAQAorIC8qIFRFUk1TIEFORCBDT05ESVRJT05TIE9GIFVTRQorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBmb3JtLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUKKyAqIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUKKyAqIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAKKyAqIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYGFzIGlzJyBieSBBZGFwdGVjIGFuZAorICogYW55IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50aWVzLCBpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bywgdGhlCisgKiBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRhYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZSwKKyAqIGFyZSBkaXNjbGFpbWVkLiBJbiBubyBldmVudCBzaGFsbCBBZGFwdGVjIGJlCisgKiBsaWFibGUgZm9yIGFueSBkaXJlY3QsIGluZGlyZWN0LCBpbmNpZGVudGFsLCBzcGVjaWFsLCBleGVtcGxhcnkgb3IKKyAqIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8sIHByb2N1cmVtZW50IG9mCisgKiBzdWJzdGl0dXRlIGdvb2RzIG9yIHNlcnZpY2VzOyBsb3NzIG9mIHVzZSwgZGF0YSwgb3IgcHJvZml0czsgb3IgYnVzaW5lc3MKKyAqIGludGVycnVwdGlvbnMpIGhvd2V2ZXIgY2F1c2VkIGFuZCBvbiBhbnkgdGhlb3J5IG9mIGxpYWJpbGl0eSwgd2hldGhlciBpbgorICogY29udHJhY3QsIHN0cmljdCBsaWFiaWxpdHksIG9yIHRvcnQgKGluY2x1ZGluZyBuZWdsaWdlbmNlIG9yIG90aGVyd2lzZSkKKyAqIGFyaXNpbmcgaW4gYW55IHdheSBvdXQgb2YgdGhlIHVzZSBvZiB0aGlzIGRyaXZlciBzb2Z0d2FyZSwgZXZlbiBpZiBhZHZpc2VkCisgKiBvZiB0aGUgcG9zc2liaWxpdHkgb2Ygc3VjaCBkYW1hZ2UuCisgKiAKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgQWRhcHRlYyBJMk8gUkFJRCBhbmQgRFBUIFNtYXJ0UkFJRCBWIEkyTyBib2FyZHMuCisgKgorICogQ1JFRElUUzoKKyAqIFRoZSBvcmlnaW5hbCBsaW51eCBkcml2ZXIgd2FzIHBvcnRlZCB0byBMaW51eCBieSBLYXJlbiBXaGl0ZSB3aGlsZSBhdCAKKyAqIERlbGwgQ29tcHV0ZXIuICBJdCB3YXMgcG9ydGVkIGZyb20gQm9iIFBhc3RldXIncyAob2YgRFBUKSBvcmlnaW5hbCAKKyAqIG5vbi1MaW51eCBkcml2ZXIuICBNYXJrIFNhbHl6eW4gYW5kIEJvYiBQYXN0ZXVyIGNvbnN1bHRlZCBvbiB0aGUgb3JpZ2luYWwKKyAqIGRyaXZlci4gCisgKiAKKyAqIDIuMCB2ZXJzaW9uIG9mIHRoZSBkcml2ZXIgYnkgRGVhbm5hIEJvbmRzIGFuZCBNYXJrIFNhbHl6eW4uCisgKgorICogSElTVE9SWToKKyAqIFRoZSBkcml2ZXIgd2FzIG9yaWdpbmFsbHkgcG9ydGVkIHRvIGxpbnV4IHZlcnNpb24gMi4wLjM0IAorICoKKyAqIFYyLjAgUmV3cml0ZSBvZiBkcml2ZXIuICBSZS1hcmNoaXRlY3R1cmVkIGJhc2VkIG9uIGkybyBzdWJzeXN0ZW0uCisgKiAgIFRoaXMgd2FzIHRoZSBmaXJzdCBmdWxsIEdQTCB2ZXJzaW9uIHNpbmNlIHRoZSBsYXN0IHZlcnNpb24gdXNlZAorICogICBpMm9zaWcgaGVhZGVycyB3aGljaCB3ZXJlIG5vdCBHUEwuICBEZXZlbG9wZXIgVGVzdGluZyB2ZXJzaW9uLgorICogVjIuMSBJbnRlcm5hbCB0ZXN0aW5nCisgKiBWMi4yIEZpcnN0IHJlbGVhc2VkIHZlcnNpb24KKyAqCisgKiBWMi4zIAorICogICBDaGFuZ2VzOgorICogICAgICBBZGRlZCBSYXB0b3IgU3VwcG9ydAorICogICAgICBGaXhlZCBidWcgY2F1c2luZyBzeXN0ZW0gdG8gaGFuZyB1bmRlciBleHRyZW1lIGxvYWQgd2l0aCAKKyAqICAgICAgICAgbWFuYWdlbWVudCB1dGlsaXRpZXMgcnVubmluZyAocmVtb3ZlZCBHRlBfRE1BIGZyb20ga21hbGxvYyBmbGFncykKKyAqCisgKgorICogVjIuNCBGaXJzdCB2ZXJzaW9uIHJlYWR5IHRvIGJlIHN1Ym1pdHRlZCB0byBiZSBlbWJlZGRlZCBpbiB0aGUga2VybmVsCisgKiAgIENoYW5nZXM6IAorICogICAgICBJbXBsZW1lbnRlZCBzdWdnZXN0aW9ucyBmcm9tIEFsYW4gQ294CisgKiAgICAgIEFkZGVkIGNhbGN1bGF0aW9uIG9mIHJlc2lkIGZvciBzZyBsYXllcgorICogICAgICBCZXR0ZXIgZXJyb3IgaGFuZGxpbmcKKyAqICAgICAgICAgQWRkZWQgY2hlY2tpbmcgdW5kZXJmbG93IGNvbmRpdGlvbnMgCisgKiAgICAgICAgIEFkZGVkIERBVEFQUk9URUNUIGNoZWNraW5nCisgKiAgICAgICAgIENoYW5nZWQgZXJyb3IgcmV0dXJuIGNvZGVzCisgKiAgICAgICAgIEZpeGVkIHBvaW50ZXIgYnVnIGluIGJ1cyByZXNldCByb3V0aW5lCisgKiAgICAgIEVuYWJsZWQgaGJhIHJlc2V0IGZyb20gaW9jdGxzIChhbGxvd3MgYSBGVyBmbGFzaCB0byByZWJvb3QgYW5kIHVzZSB0aGUgbmV3CisgKiAgICAgICAgIEZXIHdpdGhvdXQgaGF2aW5nIHRvIHJlYm9vdCkKKyAqICAgICAgQ2hhbmdlZCBwcm9jIG91dHB1dAorICoKKyAqIFRPRE86CisgKiAgICAgIEFkZCA2NCBiaXQgU2NhdHRlciBHYXRoZXIgd2hlbiBjb21waWxlZCBvbiA2NCBiaXQgYXJjaGl0ZWN0dXJlcworICogICAgICBBZGQgc3BhcnNlIGx1biBzY2FubmluZyAKKyAqICAgICAgQWRkIGNvZGUgdGhhdCBjaGVja3MgaWYgYSBkZXZpY2UgdGhhdCBoYWQgYmVlbiB0YWtlbiBvZmZsaW5lIGlzCisgKiAgICAgICAgIG5vdyBvbmxpbmUgKGF0IHRoZSBGVyBsZXZlbCkgd2hlbiB0ZXN0IHVuaXQgcmVhZHkgb3IgaW5xdWlyeSAKKyAqICAgICAgICAgY29tbWFuZCBmcm9tIHNjc2ktY29yZQorICogICAgICBBZGQgcHJvYyByZWFkIGludGVyZmFjZQorICogICAgICAgICBidXNyZXNjYW4gY29tbWFuZAorICogICAgICAgICByZXNjYW4gY29tbWFuZAorICogICAgICBBZGQgY29kZSB0byByZXNjYW4gcm91dGluZSB0aGF0IG5vdGlmaWVzIHNjc2ktY29yZSBhYm91dCBuZXcgZGV2aWNlcworICogICAgICBBZGQgc3VwcG9ydCBmb3IgQy1QQ0kgKGhvdHBsdWcgc3R1ZmYpCisgKiAgICAgIEFkZCBpb2N0bCBwYXNzdGhydSBlcnJvciByZWNvdmVyeQorICoKKyAqIE5PVEVTOgorICogVGhlIERQVCBjYXJkIG9wdGltaXplcyB0aGUgb3JkZXIgb2YgcHJvY2Vzc2luZyBjb21tYW5kcy4gIENvbnNlcXVlbnRseSwKKyAqIGEgY29tbWFuZCBtYXkgdGFrZSB1cCB0byA2IG1pbnV0ZXMgdG8gY29tcGxldGUgYWZ0ZXIgaXQgaGFzIGJlZW4gc2VudAorICogdG8gdGhlIGJvYXJkLiAgCisgKgorICogVGhlIGZpbGVzIGRwdGlfaW9jdGwuaCBkcHRzaWcuaCBvc2RfZGVmcy5oIG9zZF91dGlsLmggc3lzX2luZm8uaCBhcmUgcGFydCBvZiB0aGUKKyAqIGludGVyZmFjZSBmaWxlcyBmb3IgQWRhcHRlYydzIG1hbmFnZW1lbnQgcm91dGluZXMuICBUaGVzZSBkZWZpbmUgdGhlIHN0cnVjdHVyZXMgdXNlZAorICogaW4gdGhlIGlvY3Rscy4gIFRoZXkgYXJlIHdyaXR0ZW4gdG8gYmUgcG9ydGFibGUuICBUaGV5IGFyZSBoYXJkIHRvIHJlYWQsIGJ1dCBJIG5lZWQKKyAqIHRvIHVzZSB0aGVtICdhcyBpcycgb3IgSSBjYW4gbWlzcyBjaGFuZ2VzIGluIHRoZSBpbnRlcmZhY2UuCisgKgorICovCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9kdGMzeDgwLnR4dCBiL0RvY3VtZW50YXRpb24vc2NzaS9kdGMzeDgwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDdhZjlmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL2R0YzN4ODAudHh0CkBAIC0wLDAgKzEsNDMgQEAKK1JFQURNRSBmaWxlIGZvciB0aGUgTGludXggRFRDMzE4MC8zMjgwIHNjc2kgZHJpdmVyLgorYnkgUmF5IFZhbiBUYXNzbGUgKHJheXZ0QGNvbW0ubW90LmNvbSkgIE1hcmNoIDE5OTYKK0Jhc2VkIG9uIHRoZSBnZW5lcmljICYgY29yZSBOQ1I1MzgwIGNvZGUgYnkgRHJldyBFY2toYXJkCisKK1NDU0kgZGV2aWNlIGRyaXZlciBmb3IgdGhlIERUQyAzMTgwLzMyODAuCitEYXRhIFRlY2hub2xvZ3kgQ29ycC0tLWEgZGl2aXNpb24gb2YgUXVtZS4KKworVGhlIDMyODAgaGFzIGEgc3RhbmRhcmQgZmxvcHB5IGludGVyZmFjZS4KKworVGhlIDMxODAgZG9lcyBub3QuICBPdGhlcndpc2UsIHRoZXkgYXJlIGlkZW50aWNhbC4KKworVGhlIERUQzN4ODAgZG9lcyBub3Qgc3VwcG9ydCBETUEgYnV0IGl0IGRvZXMgaGF2ZSBQc2V1ZG8tRE1BIHdoaWNoIGlzCitzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlci4KKworSXRzIERUQzQwNiBzY3NpIGNoaXAgaXMgc3VwcG9zZWRseSBjb21wYXRpYmxlIHdpdGggdGhlIE5DUiA1M0M0MDAuCitJdCBpcyBtZW1vcnkgbWFwcGVkLCB1c2VzIGFuIElSUSwgYnV0IG5vIGRtYSBvciBpby1wb3J0LiAgVGhlcmUgaXMKK2ludGVybmFsIERNQSwgYmV0d2VlbiBTQ1NJIGJ1cyBhbmQgYW4gb24tY2hpcCAxMjgtYnl0ZSBidWZmZXIuICBEb3VibGUKK2J1ZmZlcmluZyBpcyBkb25lIGF1dG9tYWdpY2FsbHkgYnkgdGhlIGNoaXAuICBEYXRhIGlzIHRyYW5zZmVycmVkCitiZXR3ZWVuIHRoZSBvbi1jaGlwIGJ1ZmZlciBhbmQgQ1BVL1JBTSB2aWEgbWVtb3J5IG1vdmVzLgorCitUaGUgZHJpdmVyIGRldGVjdHMgdGhlIHBvc3NpYmxlIG1lbW9yeSBhZGRyZXNzZXMgKGp1bXBlciBzZWxlY3RhYmxlKToKKwlDQzAwLCBEQzAwLCBDODAwLCBhbmQgRDgwMAorVGhlIHBvc3NpYmxlIElSUSdzIChqdW1wZXIgc2VsZWN0YWJsZSkgYXJlOgorCUlSUSAxMCwgMTEsIDEyLCAxNQorUGFyaXR5IGlzIHN1cHBvcnRlZCBieSB0aGUgY2hpcCwgYnV0IG5vdCBieSB0aGlzIGRyaXZlci4KK0luZm9ybWF0aW9uIGNhbiBiZSBvYnRhaW5lZCBmcm9tIC9wcm9jL3Njc2kvZHRjM2M4MC9OLgorCitOb3RlIG9uIGludGVycnVwdHM6CisKK1RoZSBkb2N1bWVudGF0aW9uIHNheXMgdGhhdCBpdCBjYW4gYmUgc2V0IHRvIGludGVycnVwdCB3aGVuZXZlciB0aGUKK29uLWNoaXAgYnVmZmVyIG5lZWRzIENQVSBhdHRlbnRpb24uICBJIGNvdWxkbid0IGdldCB0aGlzIHRvIHdvcmsuICBTbwordGhlIGRyaXZlciBwb2xscyBmb3IgZGF0YS1yZWFkeSBpbiB0aGUgcHNldWRvLURNQSB0cmFuc2ZlciByb3V0aW5lLgorVGhlIGludGVycnVwdCBzdXBwb3J0IHJvdXRpbmVzIGluIHRoZSBOQ1IzMjgwLmMgY29yZSBtb2R1bGVzIGhhbmRsZQorc2NzaSBkaXNjb25uZWN0L3JlY29ubmVjdCwgYW5kIHRoaXMgKG1vc3RseSkgd29ya3MuICBIb3dldmVyLi4uLi4gIEkKK2hhdmUgdGVzdGVkIGl0IHdpdGggNCB0b3RhbGx5IGRpZmZlcmVudCBoYXJkIGRyaXZlcyAoYm90aCBTQ1NJLTEgYW5kCitTQ1NJLTIpLCBhbmQgb25lIENEUk9NIGRyaXZlLiAgSW50ZXJydXB0cyB3b3JrcyBncmVhdCBmb3IgYWxsIGJ1dCBvbmUKK3NwZWNpZmljIGhhcmQgZHJpdmUuICBGb3IgdGhpcyBvbmUsIHRoZSBkcml2ZXIgd2lsbCBldmVudHVhbGx5IGhhbmcgaW4KK3RoZSB0cmFuc2ZlciBzdGF0ZS4gIEkgaGF2ZSB0ZXN0ZWQgd2l0aDogImRkIGJzPTRrIGNvdW50PTJrCitvZj0vZGV2L251bGwgaWY9L2Rldi9zZGIiLiAgSXQgcmVhZHMgb2sgZm9yIGEgd2hpbGUsIHRoZW4gaGFuZ3MuCitBZnRlciBiZWF0aW5nIG15IGhlYWQgYWdhaW5zdCB0aGlzIGZvciBhIGNvdXBsZSBvZiB3ZWVrcywgZ2V0dGluZworbm93aGVyZSwgSSBnaXZlIHVwLiAgU28uLi4uLlRoaXMgZHJpdmVyIGRvZXMgTk9UIHVzZSBpbnRlcnJ1cHRzLCBldmVuCitpZiB5b3UgaGF2ZSB0aGUgY2FyZCBqdW1wZXJlZCB0byBhbiBJUlEuICBQcm9iYWJseSBub2JvZHkgd2lsbCBldmVyCitjYXJlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL2dfTkNSNTM4MC50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvZ19OQ1I1MzgwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjgwZjU2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL2dfTkNSNTM4MC50eHQKQEAgLTAsMCArMSw2MyBAQAorUkVBRE1FIGZpbGUgZm9yIHRoZSBMaW51eCBnX05DUjUzODAgZHJpdmVyLgorCisoYykgMTk5MyBEcmV3IEVja2hhcmQKK05DUjUzYzQwMCBleHRlbnNpb25zIChjKSAxOTk0LDE5OTUsMTk5NiBLZXZpbiBMZW50aW4KKworVGhpcyBmaWxlIGRvY3VtZW50cyB0aGUgTkNSNTNjNDAwIGV4dGVuc2lvbnMgYnkgS2V2aW4gTGVudGluIGFuZCBzb21lCitlbmhhbmNlbWVudHMgdG8gdGhlIE5DUjUzODAgY29yZS4KKworVGhpcyBkcml2ZXIgc3VwcG9ydHMgYm90aCBOQ1I1MzgwIGFuZCBOQ1I1M2M0MDAgY2FyZHMgaW4gcG9ydCBvciBtZW1vcnkKK21hcHBlZCBtb2Rlcy4gQ3VycmVudGx5IHRoaXMgZHJpdmVyIGNhbiBvbmx5IHN1cHBvcnQgb25lIG9mIHRob3NlIG1hcHBpbmcKK21vZGVzIGF0IGEgdGltZSBidXQgaXQgZG9lcyBzdXBwb3J0IGJvdGggb2YgdGhlc2UgY2hpcHMgYXQgdGhlIHNhbWUgdGltZS4KK1RoZSBuZXh0IHJlbGVhc2Ugb2YgdGhpcyBkcml2ZXIgd2lsbCBzdXBwb3J0IHBvcnQgJiBtZW1vcnkgbWFwcGVkIGNhcmRzIGF0Cit0aGUgc2FtZSB0aW1lLiBJdCBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgbXVsdGlwbGUgZGlmZmVyZW50IGNhcmRzIGluIHRoZQorc2FtZSBtYWNoaW5lLgorCitUaGUgZHJpdmVycy9zY3NpL01ha2VmaWxlIGhhcyBhbiBvdmVycmlkZSBpbiBpdCBmb3IgdGhlIG1vc3QgY29tbW9uCitOQ1I1M2M0MDAgY2FyZCwgdGhlIFRyYW50b3IgVDEzMEIgaW4gaXRzIGRlZmF1bHQgY29uZmlndXJhdGlvbjoKKwlQb3J0OiAweDM1MAorCUlSUSA6IDUKKworVGhlIE5DUjUzYzQwMCBkb2VzIG5vdCBzdXBwb3J0IERNQSBidXQgaXQgZG9lcyBoYXZlIFBzZXVkby1ETUEgd2hpY2ggaXMKK3N1cHBvcnRlZCBieSB0aGUgZHJpdmVyLgorCitJZiB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIGRvZXMgbm90IHdvcmsgZm9yIHlvdSwgeW91IGNhbiB1c2UgdGhlIGtlcm5lbAorY29tbWFuZCBsaW5lcyAoZWcgdXNpbmcgdGhlIGxpbG8gYXBwZW5kIGNvbW1hbmQpOgorCW5jcjUzODA9cG9ydCxpcnEsZG1hCisJbmNyNTNjNDAwPXBvcnQsaXJxCitvcgorCW5jcjUzODA9YmFzZSxpcnEsZG1hCisJbmNyNTNjNDAwPWJhc2UsaXJxCisKK1RoZSBkcml2ZXIgZG9lcyBub3QgcHJvYmUgZm9yIGFueSBhZGRyZXNzZXMgb3IgcG9ydHMgb3RoZXIgdGhhbiB0aG9zZSBpbgordGhlIE9WRVJSSURFIG9yIGdpdmVuIHRvIHRoZSBrZXJuZWwgYXMgYWJvdmUuCisKK1RoaXMgZHJpdmVyIHByb3ZpZGVzIHNvbWUgaW5mb3JtYXRpb24gb24gd2hhdCBpdCBoYXMgZGV0ZWN0ZWQgaW4KKy9wcm9jL3Njc2kvZ19OQ1I1MzgwL3ggd2hlcmUgeCBpcyB0aGUgc2NzaSBjYXJkIG51bWJlciBhcyBkZXRlY3RlZCBhdCBib290Cit0aW1lLiBNb3JlIGluZm8gdG8gY29tZSBpbiB0aGUgZnV0dXJlLgorCitXaGVuIE5DUjUzYzQwMCBzdXBwb3J0IGlzIGNvbXBpbGVkIGluLCBCSU9TIHBhcmFtZXRlcnMgd2lsbCBiZSByZXR1cm5lZCBieQordGhlIGRyaXZlciAodGhlIHJhdyA1MzgwIGRyaXZlciBkb2VzIG5vdCBhbmQgSSBkb24ndCBwbGFuIHRvIGZpZGRsZSB3aXRoCitpdCEpLgorCitUaGlzIGRyaXZlciB3b3JrcyBhcyBhIG1vZHVsZS4KK1doZW4gaW5jbHVkZWQgYXMgYSBtb2R1bGUsIHBhcmFtZXRlcnMgY2FuIGJlIHBhc3NlZCBvbiB0aGUgaW5zbW9kL21vZHByb2JlCitjb21tYW5kIGxpbmU6CisgIG5jcl9pcnE9eHggICB0aGUgaW50ZXJydXB0CisgIG5jcl9hZGRyPXh4ICB0aGUgcG9ydCBvciBiYXNlIGFkZHJlc3MgKGZvciBwb3J0IG9yIG1lbW9yeQorICAgICAgICAgICAgICAgbWFwcGVkLCByZXNwLikKKyAgbmNyX2RtYT14eCAgIHRoZSBETUEKKyAgbmNyXzUzODA9MSAgIHRvIHNldCB1cCBmb3IgYSBOQ1I1MzgwIGJvYXJkCisgIG5jcl81M2M0MDA9MSB0byBzZXQgdXAgZm9yIGEgTkNSNTNDNDAwIGJvYXJkCitlLmcuCittb2Rwcm9iZSBnX05DUjUzODAgbmNyX2lycT01IG5jcl9hZGRyPTB4MzUwIG5jcl81MzgwPTEKKyAgZm9yIGEgcG9ydCBtYXBwZWQgTkNSNTM4MCBib2FyZCBvcgorbW9kcHJvYmUgZ19OQ1I1MzgwIG5jcl9pcnE9MjU1IG5jcl9hZGRyPTB4YzgwMDAgbmNyXzUzYzQwMD0xCisgIGZvciBhIG1lbW9yeSBtYXBwZWQgTkNSNTNDNDAwIGJvYXJkIHdpdGggaW50ZXJydXB0cyBkaXNhYmxlZC4KKworKDI1NSBzaG91bGQgYmUgc3BlY2lmaWVkIGZvciBubyBvciBETUEgaW50ZXJydXB0LCAyNTQgdG8gYXV0b3Byb2JlIGZvciBhbiAKKyAgICAgSVJRIGxpbmUgaWYgb3ZlcnJpZGRlbiBvbiB0aGUgY29tbWFuZCBsaW5lLikKKworCitLZXZpbiBMZW50aW4KK0suTGVudGluQGNzLm1vbmFzaC5lZHUuYXUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9ocHNhLnR4dCBiL0RvY3VtZW50YXRpb24vc2NzaS9ocHNhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTE0MzVhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL2hwc2EudHh0CkBAIC0wLDAgKzEsMTMwIEBACisKK0hQU0EgLSBIZXdsZXR0IFBhY2thcmQgU21hcnQgQXJyYXkgZHJpdmVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGZpbGUgZGVzY3JpYmVzIHRoZSBocHNhIFNDU0kgZHJpdmVyIGZvciBIUCBTbWFydCBBcnJheSBjb250cm9sbGVycy4KK1RoZSBocHNhIGRyaXZlciBpcyBpbnRlbmRlZCB0byBzdXBwbGFudCB0aGUgY2Npc3MgZHJpdmVyIGZvciBuZXdlcgorU21hcnQgQXJyYXkgY29udHJvbGxlcnMuICBUaGUgaHBzYSBkcml2ZXIgaXMgYSBTQ1NJIGRyaXZlciwgd2hpbGUgdGhlCitjY2lzcyBkcml2ZXIgaXMgYSAiYmxvY2siIGRyaXZlci4gIEFjdHVhbGx5IGNjaXNzIGlzIGJvdGggYSBibG9jaworZHJpdmVyIChmb3IgbG9naWNhbCBkcml2ZXMpIEFORCBhIFNDU0kgZHJpdmVyIChmb3IgdGFwZSBkcml2ZXMpLiBUaGlzCisic3BsaXQtYnJhaW5lZCIgZGVzaWduIG9mIHRoZSBjY2lzcyBkcml2ZXIgaXMgYSBzb3VyY2Ugb2YgZXhjZXNzCitjb21wbGV4aXR5IGFuZCBlbGltaW5hdGluZyB0aGF0IGNvbXBsZXhpdHkgaXMgb25lIG9mIHRoZSByZWFzb25zCitmb3IgaHBzYSB0byBleGlzdC4KKworU3VwcG9ydGVkIGRldmljZXM6CistLS0tLS0tLS0tLS0tLS0tLS0KKworU21hcnQgQXJyYXkgUDIxMgorU21hcnQgQXJyYXkgUDQxMAorU21hcnQgQXJyYXkgUDQxMGkKK1NtYXJ0IEFycmF5IFA0MTEKK1NtYXJ0IEFycmF5IFA4MTIKK1NtYXJ0IEFycmF5IFA3MTJtCitTbWFydCBBcnJheSBQNzExbQorU3RvcmFnZVdvcmtzIFAxMjEwbQorCitBZGRpdGlvbmFsbHksIG9sZGVyIFNtYXJ0IEFycmF5cyBtYXkgd29yayB3aXRoIHRoZSBocHNhIGRyaXZlciBpZiB0aGUga2VybmVsCitib290IHBhcmFtZXRlciAiaHBzYV9hbGxvd19hbnk9MSIgaXMgc3BlY2lmaWVkLCBob3dldmVyIHRoZXNlIGFyZSBub3QgdGVzdGVkCitub3Igc3VwcG9ydGVkIGJ5IEhQIHdpdGggdGhpcyBkcml2ZXIuICBGb3Igb2xkZXIgU21hcnQgQXJyYXlzLCB0aGUgY2Npc3MKK2RyaXZlciBzaG91bGQgc3RpbGwgYmUgdXNlZC4KKworVGhlICJocHNhX3NpbXBsZV9tb2RlPTEiIGJvb3QgcGFyYW1ldGVyIG1heSBiZSB1c2VkIHRvIHByZXZlbnQgdGhlIGRyaXZlciBmcm9tCitwdXR0aW5nIHRoZSBjb250cm9sbGVyIGludG8gInBlcmZvcm1hbnQiIG1vZGUuICBUaGUgZGlmZmVyZW5jZSBpcyB0aGF0IHdpdGggc2ltcGxlCittb2RlLCBlYWNoIGNvbW1hbmQgY29tcGxldGlvbiByZXF1aXJlcyBhbiBpbnRlcnJ1cHQsIHdoaWxlIHdpdGggInBlcmZvcm1hbnQgbW9kZSIKKyh0aGUgZGVmYXVsdCwgYW5kIG9yZGluYXJpbHkgYmV0dGVyIHBlcmZvcm1pbmcpIGl0IGlzIHBvc3NpYmxlIHRvIGhhdmUgbXVsdGlwbGUKK2NvbW1hbmQgY29tcGxldGlvbnMgaW5kaWNhdGVkIGJ5IGEgc2luZ2xlIGludGVycnVwdC4KKworSFBTQSBzcGVjaWZpYyBlbnRyaWVzIGluIC9zeXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgSW4gYWRkaXRpb24gdG8gdGhlIGdlbmVyaWMgU0NTSSBhdHRyaWJ1dGVzIGF2YWlsYWJsZSBpbiAvc3lzLCBocHNhIHN1cHBvcnRzCisgIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKworICBIUFNBIHNwZWNpZmljIGhvc3QgYXR0cmlidXRlczoKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgL3N5cy9jbGFzcy9zY3NpX2hvc3QvaG9zdCovcmVzY2FuCisgIC9zeXMvY2xhc3Mvc2NzaV9ob3N0L2hvc3QqL2Zpcm13YXJlX3JldmlzaW9uCisgIC9zeXMvY2xhc3Mvc2NzaV9ob3N0L2hvc3QqL3Jlc2V0dGFibGUKKyAgL3N5cy9jbGFzcy9zY3NpX2hvc3QvaG9zdCovdHJhbnNwb3J0X21vZGUKKworICB0aGUgaG9zdCAicmVzY2FuIiBhdHRyaWJ1dGUgaXMgYSB3cml0ZSBvbmx5IGF0dHJpYnV0ZS4gIFdyaXRpbmcgdG8gdGhpcworICBhdHRyaWJ1dGUgd2lsbCBjYXVzZSB0aGUgZHJpdmVyIHRvIHNjYW4gZm9yIG5ldywgY2hhbmdlZCwgb3IgcmVtb3ZlZCBkZXZpY2VzCisgIChlLmcuIGhvdC1wbHVnZ2VkIHRhcGUgZHJpdmVzLCBvciBuZXdseSBjb25maWd1cmVkIG9yIGRlbGV0ZWQgbG9naWNhbCBkcml2ZXMsCisgIGV0Yy4pIGFuZCBub3RpZnkgdGhlIFNDU0kgbWlkbGF5ZXIgb2YgYW55IGNoYW5nZXMgZGV0ZWN0ZWQuICBOb3JtYWxseSB0aGlzIGlzCisgIHRyaWdnZXJlZCBhdXRvbWF0aWNhbGx5IGJ5IEhQJ3MgQXJyYXkgQ29uZmlndXJhdGlvbiBVdGlsaXR5IChlaXRoZXIgdGhlIEdVSSBvcgorICBjb21tYW5kIGxpbmUgdmFyaWV0eSkgc28gZm9yIGxvZ2ljYWwgZHJpdmUgY2hhbmdlcywgdGhlIHVzZXIgc2hvdWxkIG5vdAorICBub3JtYWxseSBoYXZlIHRvIHVzZSB0aGlzLiAgSXQgbWF5IGJlIHVzZWZ1bCB3aGVuIGhvdCBwbHVnZ2luZyBkZXZpY2VzIGxpa2UKKyAgdGFwZSBkcml2ZXMsIG9yIGVudGlyZSBzdG9yYWdlIGJveGVzIGNvbnRhaW5pbmcgcHJlLWNvbmZpZ3VyZWQgbG9naWNhbCBkcml2ZXMuCisKKyAgVGhlICJmaXJtd2FyZV9yZXZpc2lvbiIgYXR0cmlidXRlIGNvbnRhaW5zIHRoZSBmaXJtd2FyZSB2ZXJzaW9uIG9mIHRoZSBTbWFydCBBcnJheS4KKyAgRm9yIGV4YW1wbGU6CisKKwlyb290QGhvc3Q6L3N5cy9jbGFzcy9zY3NpX2hvc3QvaG9zdDQjIGNhdCBmaXJtd2FyZV9yZXZpc2lvbgorCTcuMTQKKworICBUaGUgdHJhbnNwb3J0X21vZGUgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvbnRyb2xsZXIgaXMgaW4gInBlcmZvcm1hbnQiCisgIG9yICJzaW1wbGUiIG1vZGUuICBUaGlzIGlzIGNvbnRyb2xsZWQgYnkgdGhlICJocHNhX3NpbXBsZV9tb2RlIiBtb2R1bGUKKyAgcGFyYW1ldGVyLgorCisgIFRoZSAicmVzZXR0YWJsZSIgcmVhZC1vbmx5IGF0dHJpYnV0ZSBpbmRpY2F0ZXMgd2hldGhlciBhIHBhcnRpY3VsYXIKKyAgY29udHJvbGxlciBpcyBhYmxlIHRvIGhvbm9yIHRoZSAicmVzZXRfZGV2aWNlcyIga2VybmVsIHBhcmFtZXRlci4gIElmIHRoZQorICBkZXZpY2UgaXMgcmVzZXR0YWJsZSwgdGhpcyBmaWxlIHdpbGwgY29udGFpbiBhICIxIiwgb3RoZXJ3aXNlLCBhICIwIi4gIFRoaXMKKyAgcGFyYW1ldGVyIGlzIHVzZWQgYnkga2R1bXAsIGZvciBleGFtcGxlLCB0byByZXNldCB0aGUgY29udHJvbGxlciBhdCBkcml2ZXIKKyAgbG9hZCB0aW1lIHRvIGVsaW1pbmF0ZSBhbnkgb3V0c3RhbmRpbmcgY29tbWFuZHMgb24gdGhlIGNvbnRyb2xsZXIgYW5kIGdldCB0aGUKKyAgY29udHJvbGxlciBpbnRvIGEga25vd24gc3RhdGUgc28gdGhhdCB0aGUga2R1bXAgaW5pdGlhdGVkIGkvbyB3aWxsIHdvcmsgcmlnaHQKKyAgYW5kIG5vdCBiZSBkaXNydXB0ZWQgaW4gYW55IHdheSBieSBzdGFsZSBjb21tYW5kcyBvciBvdGhlciBzdGFsZSBzdGF0ZQorICByZW1haW5pbmcgb24gdGhlIGNvbnRyb2xsZXIgZnJvbSB0aGUgcHJldmlvdXMga2VybmVsLiAgVGhpcyBhdHRyaWJ1dGUgZW5hYmxlcworICBrZXhlYyB0b29scyB0byB3YXJuIHRoZSB1c2VyIGlmIHRoZXkgYXR0ZW1wdCB0byBkZXNpZ25hdGUgYSBkZXZpY2Ugd2hpY2ggaXMKKyAgdW5hYmxlIHRvIGhvbm9yIHRoZSByZXNldF9kZXZpY2VzIGtlcm5lbCBwYXJhbWV0ZXIgYXMgYSBkdW1wIGRldmljZS4KKworICBIUFNBIHNwZWNpZmljIGRpc2sgYXR0cmlidXRlczoKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgL3N5cy9jbGFzcy9zY3NpX2Rpc2svYzpiOnQ6bC9kZXZpY2UvdW5pcXVlX2lkCisgIC9zeXMvY2xhc3Mvc2NzaV9kaXNrL2M6Yjp0OmwvZGV2aWNlL3JhaWRfbGV2ZWwKKyAgL3N5cy9jbGFzcy9zY3NpX2Rpc2svYzpiOnQ6bC9kZXZpY2UvbHVuaWQKKworICAod2hlcmUgYzpiOnQ6bCBhcmUgdGhlIGNvbnRyb2xsZXIsIGJ1cywgdGFyZ2V0IGFuZCBsdW4gb2YgdGhlIGRldmljZSkKKworICBGb3IgZXhhbXBsZToKKworCXJvb3RAaG9zdDovc3lzL2NsYXNzL3Njc2lfZGlzay80OjA6MDowL2RldmljZSMgY2F0IHVuaXF1ZV9pZAorCTYwMDUwOEIxMDAxMDQ0Mzk1MzU1MzIzMDM3NTcwRjc3CisJcm9vdEBob3N0Oi9zeXMvY2xhc3Mvc2NzaV9kaXNrLzQ6MDowOjAvZGV2aWNlIyBjYXQgbHVuaWQKKwkweDAwMDAwMDQwMDAwMDAwMDAKKwlyb290QGhvc3Q6L3N5cy9jbGFzcy9zY3NpX2Rpc2svNDowOjA6MC9kZXZpY2UjIGNhdCByYWlkX2xldmVsCisJUkFJRCAwCisKK0hQU0Egc3BlY2lmaWMgaW9jdGxzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBhcHBsaWNhdGlvbnMgd3JpdHRlbiBmb3IgdGhlIGNjaXNzIGRyaXZlciwgbWFueSwgYnV0CisgIG5vdCBhbGwgb2YgdGhlIGlvY3RscyBzdXBwb3J0ZWQgYnkgdGhlIGNjaXNzIGRyaXZlciBhcmUgYWxzbyBzdXBwb3J0ZWQgYnkgdGhlCisgIGhwc2EgZHJpdmVyLiAgVGhlIGRhdGEgc3RydWN0dXJlcyB1c2VkIGJ5IHRoZXNlIGFyZSBkZXNjcmliZWQgaW4KKyAgaW5jbHVkZS9saW51eC9jY2lzc19pb2N0bC5oCisKKyAgQ0NJU1NfREVSRUdESVNLCisgIENDSVNTX1JFR05FV0RJU0sKKyAgQ0NJU1NfUkVHTkVXRAorCisgIFRoZSBhYm92ZSB0aHJlZSBpb2N0bHMgYWxsIGRvIGV4YWN0bHkgdGhlIHNhbWUgdGhpbmcsIHdoaWNoIGlzIHRvIGNhdXNlIHRoZSBkcml2ZXIKKyAgdG8gcmVzY2FuIGZvciBuZXcgZGV2aWNlcy4gIFRoaXMgZG9lcyBleGFjdGx5IHRoZSBzYW1lIHRoaW5nIGFzIHdyaXRpbmcgdG8gdGhlCisgIGhwc2Egc3BlY2lmaWMgaG9zdCAicmVzY2FuIiBhdHRyaWJ1dGUuCisKKyAgQ0NJU1NfR0VUUENJSU5GTworCisJUmV0dXJucyBQQ0kgZG9tYWluLCBidXMsIGRldmljZSBhbmQgZnVuY3Rpb24gYW5kICJib2FyZCBJRCIgKFBDSSBzdWJzeXN0ZW0gSUQpLgorCisgIENDSVNTX0dFVERSSVZWRVIKKworCVJldHVybnMgZHJpdmVyIHZlcnNpb24gaW4gdGhyZWUgYnl0ZXMgZW5jb2RlZCBhczoKKwkJKG1ham9yX3ZlcnNpb24gPDwgMTYpIHwgKG1pbm9yX3ZlcnNpb24gPDwgOCkgfCAoc3VibWlub3JfdmVyc2lvbikKKworICBDQ0lTU19QQVNTVEhSVQorICBDQ0lTU19CSUdfUEFTU1RIUlUKKworCUFsbG93cyAiQk1JQyIgYW5kICJDSVNTIiBjb21tYW5kcyB0byBiZSBwYXNzZWQgdGhyb3VnaCB0byB0aGUgU21hcnQgQXJyYXkuCisJVGhlc2UgYXJlIHVzZWQgZXh0ZW5zaXZlbHkgYnkgdGhlIEhQIEFycmF5IENvbmZpZ3VyYXRpb24gVXRpbGl0eSwgU05NUCBzdG9yYWdlCisJYWdlbnRzLCBldGMuICBTZWUgY2Npc3Nfdm9sX3N0YXR1cyBhdCBodHRwOi8vY2Npc3Muc2YubmV0IGZvciBzb21lIGV4YW1wbGVzLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvaHB0aW9wLnR4dCBiL0RvY3VtZW50YXRpb24vc2NzaS9ocHRpb3AudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyZWNmZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvaHB0aW9wLnR4dApAQCAtMCwwICsxLDE4NCBAQAorSElHSFBPSU5UIFJPQ0tFVFJBSUQgM3h4eC80eHh4IEFEQVBURVIgRFJJVkVSIChocHRpb3ApCisKK0NvbnRyb2xsZXIgUmVnaXN0ZXIgTWFwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZvciBSUjQ0eHggSW50ZWwgSU9QIGJhc2VkIGFkYXB0ZXJzLCB0aGUgY29udHJvbGxlciBJT1AgaXMgYWNjZXNzZWQgdmlhIFBDSSBCQVIwIGFuZCBCQVIyOgorCisgICAgIEJBUjAgb2Zmc2V0ICAgIFJlZ2lzdGVyCisgICAgICAgICAgICAweDExQzVDIExpbmsgSW50ZXJmYWNlIElSUSBTZXQKKyAgICAgICAgICAgIDB4MTFDNjAgTGluayBJbnRlcmZhY2UgSVJRIENsZWFyCisKKyAgICAgQkFSMiBvZmZzZXQgICAgUmVnaXN0ZXIKKyAgICAgICAgICAgIDB4MTAgICAgSW5ib3VuZCBNZXNzYWdlIFJlZ2lzdGVyIDAKKyAgICAgICAgICAgIDB4MTQgICAgSW5ib3VuZCBNZXNzYWdlIFJlZ2lzdGVyIDEKKyAgICAgICAgICAgIDB4MTggICAgT3V0Ym91bmQgTWVzc2FnZSBSZWdpc3RlciAwCisgICAgICAgICAgICAweDFDICAgIE91dGJvdW5kIE1lc3NhZ2UgUmVnaXN0ZXIgMQorICAgICAgICAgICAgMHgyMCAgICBJbmJvdW5kIERvb3JiZWxsIFJlZ2lzdGVyCisgICAgICAgICAgICAweDI0ICAgIEluYm91bmQgSW50ZXJydXB0IFN0YXR1cyBSZWdpc3RlcgorICAgICAgICAgICAgMHgyOCAgICBJbmJvdW5kIEludGVycnVwdCBNYXNrIFJlZ2lzdGVyCisgICAgICAgICAgICAweDMwICAgIE91dGJvdW5kIEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIKKyAgICAgICAgICAgIDB4MzQgICAgT3V0Ym91bmQgSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXIKKyAgICAgICAgICAgIDB4NDAgICAgSW5ib3VuZCBRdWV1ZSBQb3J0CisgICAgICAgICAgICAweDQ0ICAgIE91dGJvdW5kIFF1ZXVlIFBvcnQKKworRm9yIEludGVsIElPUCBiYXNlZCBhZGFwdGVycywgdGhlIGNvbnRyb2xsZXIgSU9QIGlzIGFjY2Vzc2VkIHZpYSBQQ0kgQkFSMDoKKworICAgICBCQVIwIG9mZnNldCAgICBSZWdpc3RlcgorICAgICAgICAgICAgMHgxMCAgICBJbmJvdW5kIE1lc3NhZ2UgUmVnaXN0ZXIgMAorICAgICAgICAgICAgMHgxNCAgICBJbmJvdW5kIE1lc3NhZ2UgUmVnaXN0ZXIgMQorICAgICAgICAgICAgMHgxOCAgICBPdXRib3VuZCBNZXNzYWdlIFJlZ2lzdGVyIDAKKyAgICAgICAgICAgIDB4MUMgICAgT3V0Ym91bmQgTWVzc2FnZSBSZWdpc3RlciAxCisgICAgICAgICAgICAweDIwICAgIEluYm91bmQgRG9vcmJlbGwgUmVnaXN0ZXIKKyAgICAgICAgICAgIDB4MjQgICAgSW5ib3VuZCBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyCisgICAgICAgICAgICAweDI4ICAgIEluYm91bmQgSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXIKKyAgICAgICAgICAgIDB4MzAgICAgT3V0Ym91bmQgSW50ZXJydXB0IFN0YXR1cyBSZWdpc3RlcgorICAgICAgICAgICAgMHgzNCAgICBPdXRib3VuZCBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlcgorICAgICAgICAgICAgMHg0MCAgICBJbmJvdW5kIFF1ZXVlIFBvcnQKKyAgICAgICAgICAgIDB4NDQgICAgT3V0Ym91bmQgUXVldWUgUG9ydAorCitGb3IgTWFydmVsbCBub3QgRnJleSBJT1AgYmFzZWQgYWRhcHRlcnMsIHRoZSBJT1AgaXMgYWNjZXNzZWQgdmlhIFBDSSBCQVIwIGFuZCBCQVIxOgorCisgICAgIEJBUjAgb2Zmc2V0ICAgIFJlZ2lzdGVyCisgICAgICAgICAweDIwNDAwICAgIEluYm91bmQgRG9vcmJlbGwgUmVnaXN0ZXIKKyAgICAgICAgIDB4MjA0MDQgICAgSW5ib3VuZCBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlcgorICAgICAgICAgMHgyMDQwOCAgICBPdXRib3VuZCBEb29yYmVsbCBSZWdpc3RlcgorICAgICAgICAgMHgyMDQwQyAgICBPdXRib3VuZCBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlcgorCisgICAgIEJBUjEgb2Zmc2V0ICAgIFJlZ2lzdGVyCisgICAgICAgICAgICAgMHgwICAgIEluYm91bmQgUXVldWUgSGVhZCBQb2ludGVyCisgICAgICAgICAgICAgMHg0ICAgIEluYm91bmQgUXVldWUgVGFpbCBQb2ludGVyCisgICAgICAgICAgICAgMHg4ICAgIE91dGJvdW5kIFF1ZXVlIEhlYWQgUG9pbnRlcgorICAgICAgICAgICAgIDB4QyAgICBPdXRib3VuZCBRdWV1ZSBUYWlsIFBvaW50ZXIKKyAgICAgICAgICAgIDB4MTAgICAgSW5ib3VuZCBNZXNzYWdlIFJlZ2lzdGVyCisgICAgICAgICAgICAweDE0ICAgIE91dGJvdW5kIE1lc3NhZ2UgUmVnaXN0ZXIKKyAgICAgMHg0MC0weDEwNDAgICAgSW5ib3VuZCBRdWV1ZQorICAgMHgxMDQwLTB4MjA0MCAgICBPdXRib3VuZCBRdWV1ZQorCitGb3IgTWFydmVsbCBGcmV5IElPUCBiYXNlZCBhZGFwdGVycywgdGhlIElPUCBpcyBhY2Nlc3NlZCB2aWEgUENJIEJBUjAgYW5kIEJBUjE6CisKKyAgICAgQkFSMCBvZmZzZXQgICAgUmVnaXN0ZXIKKyAgICAgICAgICAgICAweDAgICAgSU9QIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uCisKKyAgICAgQkFSMSBvZmZzZXQgICAgUmVnaXN0ZXIKKyAgICAgICAgICAweDQwMDAgICAgSW5ib3VuZCBMaXN0IEJhc2UgQWRkcmVzcyBMb3cKKyAgICAgICAgICAweDQwMDQgICAgSW5ib3VuZCBMaXN0IEJhc2UgQWRkcmVzcyBIaWdoCisgICAgICAgICAgMHg0MDE4ICAgIEluYm91bmQgTGlzdCBXcml0ZSBQb2ludGVyCisgICAgICAgICAgMHg0MDJDICAgIEluYm91bmQgTGlzdCBDb25maWd1cmF0aW9uIGFuZCBDb250cm9sCisgICAgICAgICAgMHg0MDUwICAgIE91dGJvdW5kIExpc3QgQmFzZSBBZGRyZXNzIExvdworICAgICAgICAgIDB4NDA1NCAgICBPdXRib3VuZCBMaXN0IEJhc2UgQWRkcmVzcyBIaWdoCisgICAgICAgICAgMHg0MDU4ICAgIE91dGJvdW5kIExpc3QgQ29weSBQb2ludGVyIFNoYWRvdyBCYXNlIEFkZHJlc3MgTG93CisgICAgICAgICAgMHg0MDVDICAgIE91dGJvdW5kIExpc3QgQ29weSBQb2ludGVyIFNoYWRvdyBCYXNlIEFkZHJlc3MgSGlnaAorICAgICAgICAgIDB4NDA4OCAgICBPdXRib3VuZCBMaXN0IEludGVycnVwdCBDYXVzZQorICAgICAgICAgIDB4NDA4QyAgICBPdXRib3VuZCBMaXN0IEludGVycnVwdCBFbmFibGUKKyAgICAgICAgIDB4MTAyMEMgICAgUENJZSBGdW5jdGlvbiAwIEludGVycnVwdCBFbmFibGUKKyAgICAgICAgIDB4MTA0MDAgICAgUENJZSBGdW5jdGlvbiAwIHRvIENQVSBNZXNzYWdlIEEKKyAgICAgICAgIDB4MTA0MjAgICAgQ1BVIHRvIFBDSWUgRnVuY3Rpb24gMCBNZXNzYWdlIEEKKyAgICAgICAgIDB4MTA0ODAgICAgQ1BVIHRvIFBDSWUgRnVuY3Rpb24gMCBEb29yYmVsbAorICAgICAgICAgMHgxMDQ4NCAgICBDUFUgdG8gUENJZSBGdW5jdGlvbiAwIERvb3JiZWxsIEVuYWJsZQorCisKK0kvTyBSZXF1ZXN0IFdvcmtmbG93IG9mIE5vdCBNYXJ2ZWxsIEZyZXkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbGwgcXVldWVkIHJlcXVlc3RzIGFyZSBoYW5kbGVkIHZpYSBpbmJvdW5kL291dGJvdW5kIHF1ZXVlIHBvcnQuCitBIHJlcXVlc3QgcGFja2V0IGNhbiBiZSBhbGxvY2F0ZWQgaW4gZWl0aGVyIElPUCBvciBob3N0IG1lbW9yeS4KKworVG8gc2VuZCBhIHJlcXVlc3QgdG8gdGhlIGNvbnRyb2xsZXI6CisKKyAgICAtIEdldCBhIGZyZWUgcmVxdWVzdCBwYWNrZXQgYnkgcmVhZGluZyB0aGUgaW5ib3VuZCBxdWV1ZSBwb3J0IG9yCisgICAgICBhbGxvY2F0ZSBhIGZyZWUgcmVxdWVzdCBpbiBob3N0IERNQSBjb2hlcmVudCBtZW1vcnkuCisKKyAgICAgIFRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIHRoZSBpbmJvdW5kIHF1ZXVlIHBvcnQgaXMgYW4gb2Zmc2V0CisgICAgICByZWxhdGl2ZSB0byB0aGUgSU9QIEJBUjAuCisKKyAgICAgIFJlcXVlc3RzIGFsbG9jYXRlZCBpbiBob3N0IG1lbW9yeSBtdXN0IGJlIGFsaWduZWQgb24gMzItYnl0ZXMgYm91bmRhcnkuCisKKyAgICAtIEZpbGwgdGhlIHBhY2tldC4KKworICAgIC0gUG9zdCB0aGUgcGFja2V0IHRvIElPUCBieSB3cml0aW5nIGl0IHRvIGluYm91bmQgcXVldWUuIEZvciByZXF1ZXN0cworICAgICAgYWxsb2NhdGVkIGluIElPUCBtZW1vcnksIHdyaXRlIHRoZSBvZmZzZXQgdG8gaW5ib3VuZCBxdWV1ZSBwb3J0LiBGb3IKKyAgICAgIHJlcXVlc3RzIGFsbG9jYXRlZCBpbiBob3N0IG1lbW9yeSwgd3JpdGUgKDB4ODAwMDAwMDB8KGJ1c19hZGRyPj41KSkKKyAgICAgIHRvIHRoZSBpbmJvdW5kIHF1ZXVlIHBvcnQuCisKKyAgICAtIFRoZSBJT1AgcHJvY2VzcyB0aGUgcmVxdWVzdC4gV2hlbiB0aGUgcmVxdWVzdCBpcyBjb21wbGV0ZWQsIGl0CisgICAgICB3aWxsIGJlIHB1dCBpbnRvIG91dGJvdW5kIHF1ZXVlLiBBbiBvdXRib3VuZCBpbnRlcnJ1cHQgd2lsbCBiZQorICAgICAgZ2VuZXJhdGVkLgorCisgICAgICBGb3IgcmVxdWVzdHMgYWxsb2NhdGVkIGluIElPUCBtZW1vcnksIHRoZSByZXF1ZXN0IG9mZnNldCBpcyBwb3N0ZWQgdG8KKyAgICAgIG91dGJvdW5kIHF1ZXVlLgorCisgICAgICBGb3IgcmVxdWVzdHMgYWxsb2NhdGVkIGluIGhvc3QgbWVtb3J5LCAoMHg4MDAwMDAwMHwoYnVzX2FkZHI+PjUpKQorICAgICAgaXMgcG9zdGVkIHRvIHRoZSBvdXRib3VuZCBxdWV1ZS4gSWYgSU9QX1JFUVVFU1RfRkxBR19PVVRQVVRfQ09OVEVYVAorICAgICAgZmxhZyBpcyBzZXQgaW4gdGhlIHJlcXVlc3QsIHRoZSBsb3cgMzItYml0IGNvbnRleHQgdmFsdWUgd2lsbCBiZQorICAgICAgcG9zdGVkIGluc3RlYWQuCisKKyAgICAtIFRoZSBob3N0IHJlYWQgdGhlIG91dGJvdW5kIHF1ZXVlIGFuZCBjb21wbGV0ZSB0aGUgcmVxdWVzdC4KKworICAgICAgRm9yIHJlcXVlc3RzIGFsbG9jYXRlZCBpbiBJT1AgbWVtb3J5LCB0aGUgaG9zdCBkcml2ZXIgZnJlZSB0aGUgcmVxdWVzdAorICAgICAgYnkgd3JpdGluZyBpdCB0byB0aGUgb3V0Ym91bmQgcXVldWUuCisKK05vbi1xdWV1ZWQgcmVxdWVzdHMgKHJlc2V0L2ZsdXNoIGV0YykgY2FuIGJlIHNlbnQgdmlhIGluYm91bmQgbWVzc2FnZQorcmVnaXN0ZXIgMC4gQW4gb3V0Ym91bmQgbWVzc2FnZSB3aXRoIHRoZSBzYW1lIHZhbHVlIGluZGljYXRlcyB0aGUgY29tcGxldGlvbgorb2YgYW4gaW5ib3VuZCBtZXNzYWdlLgorCisKK0kvTyBSZXF1ZXN0IFdvcmtmbG93IG9mIE1hcnZlbGwgRnJleQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWxsIHF1ZXVlZCByZXF1ZXN0cyBhcmUgaGFuZGxlZCB2aWEgaW5ib3VuZC9vdXRib3VuZCBsaXN0LgorCitUbyBzZW5kIGEgcmVxdWVzdCB0byB0aGUgY29udHJvbGxlcjoKKworICAgIC0gQWxsb2NhdGUgYSBmcmVlIHJlcXVlc3QgaW4gaG9zdCBETUEgY29oZXJlbnQgbWVtb3J5LgorCisgICAgICBSZXF1ZXN0cyBhbGxvY2F0ZWQgaW4gaG9zdCBtZW1vcnkgbXVzdCBiZSBhbGlnbmVkIG9uIDMyLWJ5dGVzIGJvdW5kYXJ5LgorCisgICAgLSBGaWxsIHRoZSByZXF1ZXN0IHdpdGggaW5kZXggb2YgdGhlIHJlcXVlc3QgaW4gdGhlIGZsYWcuCisKKyAgICAgIEZpbGwgYSBmcmVlIGluYm91bmQgbGlzdCB1bml0IHdpdGggdGhlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHRoZSBzaXplIG9mCisgICAgICB0aGUgcmVxdWVzdC4KKworICAgICAgU2V0IHVwIHRoZSBpbmJvdW5kIGxpc3Qgd3JpdGUgcG9pbnRlciB3aXRoIHRoZSBpbmRleCBvZiBwcmV2aW91cyB1bml0LAorICAgICAgcm91bmQgdG8gMCBpZiB0aGUgaW5kZXggcmVhY2hlcyB0aGUgc3VwcG9ydGVkIGNvdW50IG9mIHJlcXVlc3RzLgorCisgICAgLSBQb3N0IHRoZSBpbmJvdW5kIGxpc3Qgd3JpdGVyIHBvaW50ZXIgdG8gSU9QLgorCisgICAgLSBUaGUgSU9QIHByb2Nlc3MgdGhlIHJlcXVlc3QuIFdoZW4gdGhlIHJlcXVlc3QgaXMgY29tcGxldGVkLCB0aGUgZmxhZyBvZgorICAgICAgdGhlIHJlcXVlc3Qgd2l0aCBvci1lZCBJT1BNVV9RVUVVRV9NQVNLX0hPU1RfQklUUyB3aWxsIGJlIHB1dCBpbnRvIGEKKyAgICAgIGZyZWUgb3V0Ym91bmQgbGlzdCB1bml0IGFuZCB0aGUgaW5kZXggb2YgdGhlIG91dGJvdW5kIGxpc3QgdW5pdCB3aWxsIGJlCisgICAgICBwdXQgaW50byB0aGUgY29weSBwb2ludGVyIHNoYWRvdyByZWdpc3Rlci4gQW4gb3V0Ym91bmQgaW50ZXJydXB0IHdpbGwgYmUKKyAgICAgIGdlbmVyYXRlZC4KKworICAgIC0gVGhlIGhvc3QgcmVhZCB0aGUgb3V0Ym91bmQgbGlzdCBjb3B5IHBvaW50ZXIgc2hhZG93IHJlZ2lzdGVyIGFuZCBjb21wYXJlCisgICAgICB3aXRoIHByZXZpb3VzIHNhdmVkIHJlYWQgcG9pbnRlciBOLiBJZiB0aGV5IGFyZSBkaWZmZXJlbnQsIHRoZSBob3N0IHdpbGwKKyAgICAgIHJlYWQgdGhlIChOKzEpdGggb3V0Ym91bmQgbGlzdCB1bml0LgorCisgICAgICBUaGUgaG9zdCBnZXQgdGhlIGluZGV4IG9mIHRoZSByZXF1ZXN0IGZyb20gdGhlIChOKzEpdGggb3V0Ym91bmQgbGlzdAorICAgICAgdW5pdCBhbmQgY29tcGxldGUgdGhlIHJlcXVlc3QuCisKK05vbi1xdWV1ZWQgcmVxdWVzdHMgKHJlc2V0IGNvbW11bmljYXRpb24vcmVzZXQvZmx1c2ggZXRjKSBjYW4gYmUgc2VudCB2aWEgUENJZQorRnVuY3Rpb24gMCB0byBDUFUgTWVzc2FnZSBBIHJlZ2lzdGVyLiBUaGUgQ1BVIHRvIFBDSWUgRnVuY3Rpb24gMCBNZXNzYWdlIHJlZ2lzdGVyCit3aXRoIHRoZSBzYW1lIHZhbHVlIGluZGljYXRlcyB0aGUgY29tcGxldGlvbiBvZiBtZXNzYWdlLgorCisKK1VzZXItbGV2ZWwgSW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGRyaXZlciBleHBvc2VzIGZvbGxvd2luZyBzeXNmcyBhdHRyaWJ1dGVzOgorCisgICAgIE5BTUUgICAgICAgICAgICAgICAgIFIvVyAgICBEZXNjcmlwdGlvbgorICAgICBkcml2ZXItdmVyc2lvbiAgICAgICAgUiAgICAgZHJpdmVyIHZlcnNpb24gc3RyaW5nCisgICAgIGZpcm13YXJlLXZlcnNpb24gICAgICBSICAgICBmaXJtd2FyZSB2ZXJzaW9uIHN0cmluZworCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDb3B5cmlnaHQgKEMpIDIwMDYtMjAxMiBIaWdoUG9pbnQgVGVjaG5vbG9naWVzLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICBsaW51eEBoaWdocG9pbnQtdGVjaC5jb20KKyAgaHR0cDovL3d3dy5oaWdocG9pbnQtdGVjaC5jb20KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9pbjIwMDAudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL2luMjAwMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNlMmE5MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2NzaS9pbjIwMDAudHh0CkBAIC0wLDAgKzEsMjAyIEBACisKK1VQREFURSBORVdTOiB2ZXJzaW9uIDEuMzMgLSAyNiBBdWcgOTgKKworICAgSW50ZXJydXB0IG1hbmFnZW1lbnQgaW4gdGhpcyBkcml2ZXIgaGFzIGJlY29tZSwgb3ZlcgorICAgdGltZSwgaW5jcmVhc2luZ2x5IG9kZCBhbmQgZGlmZmljdWx0IHRvIGV4cGxhaW4gLSB0aGlzCisgICBoYXMgYmVlbiBtb3N0bHkgZHVlIHRvIG15IG93biBtZW50YWwgaW5hZGVxdWFjaWVzLiBJbgorICAgcmVjZW50IGtlcm5lbHMsIGl0IGhhcyBmYWlsZWQgdG8gZnVuY3Rpb24gYXQgYWxsIHdoZW4KKyAgIGNvbXBpbGVkIGZvciBTTVAuIEkndmUgZml4ZWQgdGhhdCBwcm9ibGVtLCBhbmQgYWZ0ZXIKKyAgIHRha2luZyBhIGZyZXNoIGxvb2sgYXQgaW50ZXJydXB0cyBpbiBnZW5lcmFsLCBncmVhdGx5CisgICByZWR1Y2VkIHRoZSBudW1iZXIgb2YgcGxhY2VzIHdoZXJlIHRoZXkncmUgZmlkZGxlZAorICAgd2l0aC4gRG9uZSBzb21lIGhlYXZ5IHRlc3RpbmcgYW5kIGl0IGxvb2tzIHZlcnkgZ29vZC4KKyAgIFRoZSBkcml2ZXIgbm93IG1ha2VzIHVzZSBvZiB0aGUgX19pbml0ZnVuYygpIGFuZAorICAgX19pbml0ZGF0YSBtYWNyb3MgdG8gc2F2ZSBhYm91dCA0ayBvZiBrZXJuZWwgbWVtb3J5LgorICAgT25jZSBhZ2FpbiwgdGhlIHNhbWUgY29kZSB3b3JrcyBmb3IgYm90aCAyLjAueHggYW5kCisgICAyLjEueHgga2VybmVscy4KKworVVBEQVRFIE5FV1M6IHZlcnNpb24gMS4zMiAtIDI4IE1hciA5OAorCisgICBSZW1vdmVkIHRoZSBjaGVjayBmb3IgbGVnYWwgSU4yMDAwIGhhcmR3YXJlIHZlcnNpb25zOgorICAgSXQgYXBwZWFycyB0aGF0IHRoZSBkcml2ZXIgd29ya3MgZmluZSB3aXRoIHNlcmlhbAorICAgRVBST01zICh0aGUgOC1waW4gY2hpcCB0aGF0IGRlZmluZXMgaGFyZHdhcmUgcmV2KSBhcworICAgb2xkIGFzIDIuMSwgc28gd2UnbGwgYXNzdW1lIHRoYXQgYWxsIGNhcmRzIGFyZSBPSy4KKworVVBEQVRFIE5FV1M6IHZlcnNpb24gMS4zMSAtIDYgSnVsIDk3CisKKyAgIEZpeGVkIGEgYnVnIHRoYXQgY2F1c2VkIGluY29ycmVjdCBTQ1NJIHN0YXR1cyBieXRlcyB0byBiZQorICAgcmV0dXJuZWQgZnJvbSBjb21tYW5kcyBzZW50IHRvIExVTnMgZ3JlYXRlciB0aGFuIDAuIFRoaXMKKyAgIG1lYW5zIHRoYXQgQ0RST00gY2hhbmdlcnMgd29yayBub3chIEZpeGVkIGEgYnVnIGluIHRoZQorICAgaGFuZGxpbmcgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyB3aGVuIGxvYWRlZCBhcyBhIG1vZHVsZS4KKyAgIEFsc28gcHV0IGFsbCB0aGUgaGVhZGVyIGRhdGEgaW4gaW4yMDAwLmggd2hlcmUgaXQgYmVsb25ncy4KKyAgIFRoZXJlIGFyZSBubyBsb25nZXIgYW55IGRpZmZlcmVuY2VzIGJldHdlZW4gdGhpcyBkcml2ZXIgaW4KKyAgIHRoZSAyLjEueHggc291cmNlIHRyZWUgYW5kIHRoZSAyLjAueHggdHJlZSwgYXMgb2YgMi4wLjMxCisgICBhbmQgMi4xLjQ1IChvciBpcyBpdCAuNDY/KSAtIHRoaXMgbWFrZXMgdGhpbmdzIG11Y2ggZWFzaWVyCisgICBmb3IgbWUuLi4KKworVVBEQVRFIE5FV1M6IHZlcnNpb24gMS4zMCAtIDE0IE9jdCA5NgorCisgICBGaXhlZCBhIGJ1ZyBpbiB0aGUgY29kZSB0aGF0IHNldHMgdGhlIHRyYW5zZmVyIGRpcmVjdGlvbgorICAgYml0IChERVNUSURfRFBEIGluIHRoZSBXRF9ERVNUSU5BVElPTl9JRCByZWdpc3RlcikuIFRoZXJlCisgICBhcmUgcXVpdGUgYSBmZXcgU0NTSSBjb21tYW5kcyB0aGF0IGRvIGEgd3JpdGUtdG8tZGV2aWNlOworICAgbm93IHdlIGRlYWwgd2l0aCBhbGwgb2YgdGhlbSBjb3JyZWN0bHkuIFRoYW5rcyB0byBKb2VyZworICAgRG9yY2hhaW4gZm9yIGNhdGNoaW5nIHRoaXMgb25lLgorCitVUERBVEUgTkVXUzogdmVyc2lvbiAxLjI5IC0gMjQgU2VwIDk2CisKKyAgIFRoZSBtZW1vcnktbWFwcGVkIGhhcmR3YXJlIG9uIHRoZSBjYXJkIGlzIG5vdyBhY2Nlc3NlZCB2aWEKKyAgIHRoZSAncmVhZGIoKScgYW5kICdyZWFkbCgpJyBtYWNyb3MgLSByZXF1aXJlZCBieSB0aGUgbmV3CisgICBtZW1vcnkgbWFuYWdlbWVudCBzY2hlbWUgaW4gdGhlIDIuMS54IGtlcm5lbCBzZXJpZXMuCisgICBBcyBzdWdnZXN0ZWQgYnkgQW5kcmllcyBCcm91d2VyLCAnYmlvc19wYXJhbSgpJyBubyBsb25nZXIKKyAgIGZvcmNlcyBhbiBhcnRpZmljaWFsIDEwMjMgdHJhY2sgbGltaXQgb24gZHJpdmVzLiBBbHNvCisgICByZW1vdmVkIHNvbWUga2x1ZGdlLWNvZGUgbGVmdCBvdmVyIGZyb20gc3RydWdnbGVzIHdpdGgKKyAgIG9sZGVyIChidWdneSkgY29tcGlsZXJzLgorCitVUERBVEUgTkVXUzogdmVyc2lvbiAxLjI4IC0gMDcgTWF5IDk2CisKKyAgIFRpZ2h0ZW5lZCB1cCB0aGUgImludGVycnVwdHMgZW5hYmxlZC9kaXNhYmxlZCIgZGlzY2lwbGluZQorICAgaW4gJ2luMjAwMF9xdWV1ZWNvbW1hbmQoKScgYW5kIG1heWJlIDEgb3IgMiBvdGhlciBwbGFjZXMuCisgICBJIF90aGlua18gaXQgbWF5IGhhdmUgYmVlbiBhIGxpdHRsZSB0b28gbGF4LCBjYXVzaW5nIGFuCisgICBvY2Nhc2lvbmFsIGNyYXNoIGR1cmluZyBmdWxsIG1vb24uIEEgZnVsbHkgZnVuY3Rpb25hbAorICAgL3Byb2MgaW50ZXJmYWNlIGlzIG5vdyBpbiBwbGFjZSAtIGlmIHlvdSB3YW50IHRvIHBsYXkKKyAgIHdpdGggaXQsIHN0YXJ0IGJ5IGRvaW5nICdjYXQgL3Byb2Mvc2NzaS9pbjIwMDAvMCcuIFlvdQorICAgY2FuIGFsc28gdXNlIGl0IHRvIGNoYW5nZSBhIGZldyBydW4tdGltZSBwYXJhbWV0ZXJzIG9uCisgICB0aGUgZmx5LCBidXQgaXQncyBtb3N0bHkgZm9yIGRlYnVnZ2luZy4gVGhlIGN1cmlvdXMKKyAgIHNob3VsZCB0YWtlIGEgZ29vZCBsb29rIGF0ICdpbjIwMDBfcHJvY19pbmZvKCknIGluIHRoZQorICAgaW4yMDAwLmMgZmlsZSB0byBnZXQgYW4gdW5kZXJzdGFuZGluZyBvZiB3aGF0IGl0J3MgYWxsCisgICBhYm91dDsgSSBmaWd1cmUgdGhhdCBwZW9wbGUgd2hvIGFyZSByZWFsbHkgaW50byBpdCB3aWxsCisgICB3YW50IHRvIGFkZCBmZWF0dXJlcyBzdWl0ZWQgdG8gdGhlaXIgb3duIG5lZWRzLi4uCisgICBBbHNvLCBzeW5jIGlzIG5vdyBESVNBQkxFRCBieSBkZWZhdWx0LgorCitVUERBVEUgTkVXUzogdmVyc2lvbiAxLjI3IC0gMTAgQXByIDk2CisKKyAgIEZpeGVkIGEgd2VsbC1oaWRkZW4gYnVnIGluIHRoZSBhZGFwdGl2ZS1kaXNjb25uZWN0IGNvZGUKKyAgIHRoYXQgd291bGQgc2hvdyB1cCBldmVyeSBub3cgYW5kIHRoZW4gZHVyaW5nIGV4dHJlbWUKKyAgIGhlYXZ5IGxvYWRzIGludm9sdmluZyAyIG9yIG1vcmUgc2ltdWx0YW5lb3VzbHkgYWN0aXZlCisgICBkZXZpY2VzLiBUaGFua3MgdG8gSm9lIE1hY2sgZm9yIGtlZXBpbmcgbXkgbm9zZSB0byB0aGUKKyAgIGdyaW5kc3RvbmUgb24gdGhpcyBvbmUuCisKK1VQREFURSBORVdTOiB2ZXJzaW9uIDEuMjYgLSAwNyBNYXIgOTYKKworICAgMS4yNSBoYWQgYSBuYXN0eSBidWcgdGhhdCBiaXQgcGVvcGxlIHdpdGggc3dhcCBwYXJ0aXRpb25zCisgICBhbmQgdGFwZSBkcml2ZXMuIEFsc28sIGluIG15IGF0dGVtcHQgdG8gZ3Vlc3MgbXkgd2F5CisgICB0aHJvdWdoIEludGVsIGFzc2VtYmx5IGxhbmd1YWdlLCBJIG1hZGUgYW4gZXJyb3IgaW4gdGhlCisgICBpbmxpbmUgY29kZSBmb3IgSU8gd3JpdGVzLiBNYWRlIGEgZmV3IG90aGVyIGNoYW5nZXMgYW5kCisgICByZXBhaXJzIC0gdGhpcyB2ZXJzaW9uIChmaW5nZXJzIGNyb3NzZWQpIHNob3VsZCB3b3JrIHdlbGwuCisKK1VQREFURSBORVdTOiB2ZXJzaW9uIDEuMjUgLSAwNSBNYXIgOTYKKworICAgS2VybmVsIDEuMy43MCBpbnRlcnJ1cHQgbW9kcyBhZGRlZDsgb2xkIGtlcm5lbHMgc3RpbGwgT0suCisgICBCaWcgaGVscCBmcm9tIEJpbGwgRWFybmVzdCBhbmQgRGF2aWQgV2lsbG1vcmUgb24gc3BlZWQKKyAgIHRlc3RpbmcgYW5kIG9wdGltaXppbmc6IEkgdGhpbmsgdGhlcmUncyBhIHJlYWwgaW1wcm92ZW1lbnQKKyAgIGluIHRoaXMgYXJlYS4KKyAgIE5ldyEgVXNlci1mcmllbmRseSBjb21tYW5kLWxpbmUgaW50ZXJmYWNlIGZvciBMSUxPIGFuZAorICAgbW9kdWxlIGxvYWRpbmcgLSB0aGUgb2xkIG1ldGhvZCBpcyBnb25lLCBzbyB5b3UnbGwgbmVlZAorICAgdG8gcmVhZCB0aGUgY29tbWVudHMgZm9yICdzZXR1cF9zdHJpbmdzJyBuZWFyIHRoZSB0b3AKKyAgIG9mIGluMjAwMC5jLiBGb3IgcGVvcGxlIHdpdGggQ0RST00ncyBvciBvdGhlciBkZXZpY2VzCisgICB0aGF0IGhhdmUgYSB0b3VnaCB0aW1lIHdpdGggc3luYyBuZWdvdGlhdGlvbiwgeW91IGNhbgorICAgbm93IHNlbGVjdGl2ZWx5IGRpc2FibGUgc3luYyBvbiBpbmRpdmlkdWFsIGRldmljZXMgLQorICAgc2VhcmNoIGZvciB0aGUgJ25vc3luYycga2V5d29yZCBpbiB0aGUgY29tbWFuZC1saW5lCisgICBjb21tZW50cy4gU29tZSBvZiB5b3UgZGlzYWJsZSB0aGUgQklPUyBvbiB0aGUgY2FyZCwgd2hpY2gKKyAgIGNhdXNlZCB0aGUgYXV0by1kZXRlY3QgZnVuY3Rpb24gdG8gZmFpbDsgdGhlcmUgaXMgbm93IGEKKyAgIGNvbW1hbmQtbGluZSBvcHRpb24gdG8gZm9yY2UgZGV0ZWN0aW9uIG9mIGEgUk9NLWxlc3MgY2FyZC4KKworVVBEQVRFIE5FV1M6IHZlcnNpb24gMS4yNGEgLSAyNCBGZWIgOTYKKworICAgVGhlcmUgd2FzIGEgYnVnIGluIHRoZSBzeW5jaHJvbm91cyB0cmFuc2ZlciBjb2RlLiBPbmx5CisgICBhIGZldyBwZW9wbGUgZG93bmxvYWRlZCBiZWZvcmUgSSBjYXVnaHQgaXQgLSBjb3VsZCBoYXZlCisgICBiZWVuIHdvcnNlLgorCitVUERBVEUgTkVXUzogdmVyc2lvbiAxLjI0IC0gMjMgRmViIDk2CisKKyAgIExvdHMgb2YgZ29vZCBjaGFuZ2VzLiBBZHZpY2UgZnJvbSBCaWxsIEVhcm5lc3QgcmVzdWx0ZWQKKyAgIGluIG11Y2ggYmV0dGVyIGRldGVjdGlvbiBvZiBjYXJkcywgbW9yZSBlZmZpY2llbnQgdXNhZ2UKKyAgIG9mIHRoZSBmaWZvLCBhbmQgKGhvcGVmdWxseSkgZmFzdGVyIGRhdGEgdHJhbnNmZXJzLiBUaGUKKyAgIGp1cnkgaXMgc3RpbGwgb3V0IG9uIHNwZWVkIC0gSSBob3BlIGl0J3MgaW1wcm92ZWQgc29tZS4KKyAgIE9uZSBuaWZ0eSBuZXcgZmVhdHVyZSBpcyBhIGNvb2wgd2F5IG9mIGRvaW5nIGRpc2Nvbm5lY3QvCisgICByZXNlbGVjdC4gVGhlIGRyaXZlciBkZWZhdWx0cyB0byB3aGF0IEknbSBjYWxsaW5nCisgICAnYWRhcHRpdmUgZGlzY29ubmVjdCcgLSBtZWFuaW5nIHRoYXQgZWFjaCBjb21tYW5kIGlzCisgICBldmFsdWF0ZWQgaW5kaXZpZHVhbGx5IGFzIHRvIHdoZXRoZXIgb3Igbm90IGl0IHNob3VsZCBiZQorICAgcnVuIHdpdGggdGhlIG9wdGlvbiB0byBkaXNjb25uZWN0L3Jlc2VsZWN0IChpZiB0aGUgZGV2aWNlCisgICBjaG9vc2VzKSwgb3IgYXMgYSAiU0NTSS1idXMtaG9nIi4gV2hlbiBzZXZlcmFsIGRldmljZXMKKyAgIGFyZSBvcGVyYXRpbmcgc2ltdWx0YW5lb3VzbHksIGRpc2Nvbm5lY3RzIGFyZSB1c3VhbGx5IGFuCisgICBhZHZhbnRhZ2UuIEluIGEgc2luZ2xlIGRldmljZSBzeXN0ZW0sIG9yIGlmIG9ubHkgMSBkZXZpY2UKKyAgIGlzIGJlaW5nIGFjY2Vzc2VkLCB0cmFuc2ZlcnMgdXN1YWxseSBnbyBmYXN0ZXIgaWYgZGlzY29ubmVjdHMKKyAgIGFyZSBub3QgYWxsb3dlZC4KKworCisKK1RoZSBkZWZhdWx0IGFyZ3VtZW50cyAoeW91IGdldCB0aGVzZSB3aGVuIHlvdSBkb24ndCBnaXZlIGFuICdpbjIwMDAnCitjb21tYW5kLWxpbmUgYXJndW1lbnQsIG9yIHlvdSBnaXZlIGEgYmxhbmsgYXJndW1lbnQpIHdpbGwgY2F1c2UKK3RoZSBkcml2ZXIgdG8gZG8gYWRhcHRpdmUgZGlzY29ubmVjdCwgc3luY2hyb25vdXMgdHJhbnNmZXJzLCBhbmQgYQorbWluaW11bSBvZiBkZWJ1ZyBtZXNzYWdlcy4gSWYgeW91IHdhbnQgdG8gZm9vbCB3aXRoIHRoZSBvcHRpb25zLAorc2VhcmNoIGZvciAnc2V0dXBfc3RyaW5ncycgbmVhciB0aGUgdG9wIG9mIHRoZSBpbjIwMDAuYyBmaWxlIGFuZAorY2hlY2sgdGhlICdob3N0ZGF0YS0+YXJncycgc2VjdGlvbiBpbiBpbjIwMDAuaCAtIGJ1dCBiZSB3YXJuZWQhIE5vdAorZXZlcnl0aGluZyBpcyB3b3JraW5nIHlldCAoc29tZSB0aGluZ3Mgd2lsbCBuZXZlciB3b3JrLCBwcm9iYWJseSkuCitJIGJlbGlldmUgdGhhdCBkaXNhYmxpbmcgZGlzY29ubmVjdHMgKERJU19ORVZFUikgd2lsbCBhbGxvdyB5b3UKK3RvIGNob29zZSBhIExFVkVMMiB2YWx1ZSBoaWdoZXIgdGhhbiAnTDJfQkFTSUMnLCBidXQgSSBoYXZlbid0CitzcGVudCBhIGxvdCBvZiB0aW1lIHRlc3RpbmcgdGhpcy4gWW91IG1pZ2h0IHRyeSAnRU5BQkxFX0NMVVNURVJJTkcnCit0byBzZWUgd2hhdCBoYXBwZW5zOiBteSB0ZXN0cyBzaG93ZWQgbGl0dGxlIGRpZmZlcmVuY2UgZWl0aGVyIHdheS4KK1RoZXJlJ3MgYWxzbyBhIGRlZmluZSBjYWxsZWQgJ0RFRkFVTFRfU1hfUEVSJzsgdGhpcyBzZXRzIHRoZSBkYXRhCit0cmFuc2ZlciBzcGVlZCBmb3IgdGhlIGFzeW5jaHJvbm91cyBtb2RlLiBJJ3ZlIHB1dCBpdCBhdCA1MDAgbnMKK2Rlc3BpdGUgdGhlIGZhY3QgdGhhdCB0aGUgY2FyZCBjb3VsZCBoYW5kbGUgc2V0dGluZ3Mgb2YgMzc2IG9yCisyNTIsIGJlY2F1c2UgaGlnaGVyIHNwZWVkcyBtYXkgYmUgYSBwcm9ibGVtIHdpdGggcG9vciBxdWFsaXR5CitjYWJsZXMgb3IgaW1wcm9wZXIgdGVybWluYXRpb247IDUwMCBucyBpcyBhIGNvbXByb21pc2UuIFlvdSBjYW4KK2Nob29zZSB5b3VyIG93biBkZWZhdWx0IHRocm91Z2ggdGhlIGNvbW1hbmQtbGluZSB3aXRoIHRoZQorJ3BlcmlvZCcga2V5d29yZC4KKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyoqKioqKioqKioqICBESVAgc3dpdGNoIHNldHRpbmdzICAqKioqKioqKioqKioqKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgIHN3MS0xIHN3MS0yICAgIEJJT1MgYWRkcmVzcyAoaGV4KQorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBvZmYgICBvZmYgICAgIEM4MDAwIC0gQ0JGRjAKKyAgICBvbiAgICBvZmYgICAgIEQ4MDAwIC0gREJGRjAKKyAgICBvZmYgICBvbiAgICAgIEQwMDAwIC0gRDNGRjAKKyAgICBvbiAgICBvbiAgICAgIEJJT1MgZGlzYWJsZWQKKworICAgc3cxLTMgc3cxLTQgICAgSU8gcG9ydCBhZGRyZXNzIChoZXgpCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBvZmYgICBvZmYgICAgIDIyMCAtIDIyRgorICAgIG9uICAgIG9mZiAgICAgMjAwIC0gMjBGCisgICAgb2ZmICAgb24gICAgICAxMTAgLSAxMUYKKyAgICBvbiAgICBvbiAgICAgIDEwMCAtIDEwRgorCisgICBzdzEtNSBzdzEtNiBzdzEtNyAgICBJbnRlcnJ1cHQKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIG9mZiAgIG9mZiAgIG9mZiAgICAgMTUKKyAgICBvZmYgICBvbiAgICBvZmYgICAgIDE0CisgICAgb2ZmICAgb2ZmICAgb24gICAgICAxMQorICAgIG9mZiAgIG9uICAgIG9uICAgICAgMTAKKyAgICBvbiAgICAtICAgICAtICAgICAgIGRpc2FibGVkCisKKyAgIHN3MS04IGZ1bmN0aW9uIGRlcGVuZHMgb24gQklPUyB2ZXJzaW9uLiBJbiBlYXJsaWVyIHZlcnNpb25zIHRoaXMKKyAgIGNvbnRyb2xsZWQgc3luY2hyb25vdXMgZGF0YSB0cmFuc2ZlciBzdXBwb3J0IGZvciBNU0RPUzoKKyAgICAgIG9mZiA9IGRpc2FibGVkCisgICAgICBvbiAgPSBlbmFibGVkCisgICBJbiBsYXRlciBST01zIChzdGFydGluZyB3aXRoIDAxLjMgaW4gQXByaWwgMTk5NCkgc3cxLTggY29udHJvbHMKKyAgIHRoZSAiZ3JlYXRlciB0aGFuIDIgZGlzayBkcml2ZSIgZmVhdHVyZSB0aGF0IGZpcnN0IGFwcGVhcmVkIGluCisgICBNU0RPUyA1LjAgKGlnbm9yZWQgYnkgTGludXgpOgorICAgICAgb2ZmID0gMiBkcml2ZXMgbWF4aW11bQorICAgICAgb24gID0gNyBkcml2ZXMgbWF4aW11bQorCisgICBzdzEtOSAgICBGbG9wcHkgY29udHJvbGxlcgorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBvZmYgICAgIGRpc2FibGVkCisgICAgb24gICAgICBlbmFibGVkCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICBJIHNob3VsZCBtZW50aW9uIHRoYXQgRHJldyBFY2toYXJkdCdzICdHZW5lcmljIE5DUjUzODAnIHNvdXJjZXMKKyAgIHdlcmUgbXkgbWFpbiBpbnNwaXJhdGlvbiwgd2l0aCBsb3RzIG9mIHJlZmVyZW5jZSB0byB0aGUgSU4yMDAwCisgICBkcml2ZXIgY3VycmVudGx5IGRpc3RyaWJ1dGVkIGluIHRoZSBrZXJuZWwgc291cmNlLiBJIGFsc28gb3dlCisgICBtdWNoIHRvIGEgZHJpdmVyIHdyaXR0ZW4gYnkgSGFtaXNoIE1hY2RvbmFsZCBmb3IgTGludXgtbTY4ayghKS4KKyAgIEFuZCB0byBFcmljIFdyaWdodCBmb3IgYmVpbmcgYW4gQUxQSEEgZ3VpbmVhIHBpZy4gQW5kIHRvIEJpbGwKKyAgIEVhcm5lc3QgZm9yIDIgdG9ucyBvZiBncmVhdCBpbnB1dCBhbmQgaW5mb3JtYXRpb24uIEFuZCB0byBEYXZpZAorICAgV2lsbG1vcmUgZm9yIGV4dGVuc2l2ZSAnYm9ubmllJyB0ZXN0aW5nLiBBbmQgdG8gSm9lIE1hY2sgZm9yCisgICBjb250aW51YWwgdGVzdGluZyBhbmQgZmVlZGJhY2suCisKKworICAgICAgICAgICAgSm9obiBTaGlmZmxldHQgICAganNoaWZmbGVAbmV0Y29tLmNvbQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvbGlic2FzLnR4dCBiL0RvY3VtZW50YXRpb24vc2NzaS9saWJzYXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjYWM2NDkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvbGlic2FzLnR4dApAQCAtMCwwICsxLDM5NSBAQAorU0FTIExheWVyCistLS0tLS0tLS0KKworVGhlIFNBUyBMYXllciBpcyBhIG1hbmFnZW1lbnQgaW5mcmFzdHJ1Y3R1cmUgd2hpY2ggbWFuYWdlcworU0FTIExMRERzLiAgSXQgc2l0cyBiZXR3ZWVuIFNDU0kgQ29yZSBhbmQgU0FTIExMRERzLiAgVGhlCitsYXlvdXQgaXMgYXMgZm9sbG93czogd2hpbGUgU0NTSSBDb3JlIGlzIGNvbmNlcm5lZCB3aXRoCitTQU0vU1BDIGlzc3VlcywgYW5kIGEgU0FTIExMREQrc2VxdWVuY2VyIGlzIGNvbmNlcm5lZCB3aXRoCitwaHkvT09CL2xpbmsgbWFuYWdlbWVudCwgdGhlIFNBUyBsYXllciBpcyBjb25jZXJuZWQgd2l0aDoKKworICAgICAgKiBTQVMgUGh5L1BvcnQvSEEgZXZlbnQgbWFuYWdlbWVudCAoTExERCBnZW5lcmF0ZXMsCisgICAgICAgIFNBUyBMYXllciBwcm9jZXNzZXMpLAorICAgICAgKiBTQVMgUG9ydCBtYW5hZ2VtZW50IChjcmVhdGlvbi9kZXN0cnVjdGlvbiksCisgICAgICAqIFNBUyBEb21haW4gZGlzY292ZXJ5IGFuZCByZXZhbGlkYXRpb24sCisgICAgICAqIFNBUyBEb21haW4gZGV2aWNlIG1hbmFnZW1lbnQsCisgICAgICAqIFNDU0kgSG9zdCByZWdpc3RyYXRpb24vdW5yZWdpc3RyYXRpb24sCisgICAgICAqIERldmljZSByZWdpc3RyYXRpb24gd2l0aCBTQ1NJIENvcmUgKFNBUykgb3IgbGliYXRhCisgICAgICAgIChTQVRBKSwgYW5kCisgICAgICAqIEV4cGFuZGVyIG1hbmFnZW1lbnQgYW5kIGV4cG9ydGluZyBleHBhbmRlciBjb250cm9sCisgICAgICAgIHRvIHVzZXIgc3BhY2UuCisKK0EgU0FTIExMREQgaXMgYSBQQ0kgZGV2aWNlIGRyaXZlci4gIEl0IGlzIGNvbmNlcm5lZCB3aXRoCitwaHkvT09CIG1hbmFnZW1lbnQsIGFuZCB2ZW5kb3Igc3BlY2lmaWMgdGFza3MgYW5kIGdlbmVyYXRlcworZXZlbnRzIHRvIHRoZSBTQVMgbGF5ZXIuCisKK1RoZSBTQVMgTGF5ZXIgZG9lcyBtb3N0IFNBUyB0YXNrcyBhcyBvdXRsaW5lZCBpbiB0aGUgU0FTIDEuMQorc3BlYy4KKworVGhlIHNhc19oYV9zdHJ1Y3QgZGVzY3JpYmVzIHRoZSBTQVMgTExERCB0byB0aGUgU0FTIGxheWVyLgorTW9zdCBvZiBpdCBpcyB1c2VkIGJ5IHRoZSBTQVMgTGF5ZXIgYnV0IGEgZmV3IGZpZWxkcyBuZWVkIHRvCitiZSBpbml0aWFsaXplZCBieSB0aGUgTExERHMuCisKK0FmdGVyIGluaXRpYWxpemluZyB5b3VyIGhhcmR3YXJlLCBmcm9tIHRoZSBwcm9iZSgpIGZ1bmN0aW9uCit5b3UgY2FsbCBzYXNfcmVnaXN0ZXJfaGEoKS4gSXQgd2lsbCByZWdpc3RlciB5b3VyIExMREQgd2l0aAordGhlIFNDU0kgc3Vic3lzdGVtLCBjcmVhdGluZyBhIFNDU0kgaG9zdCBhbmQgaXQgd2lsbAorcmVnaXN0ZXIgeW91ciBTQVMgZHJpdmVyIHdpdGggdGhlIHN5c2ZzIFNBUyB0cmVlIGl0IGNyZWF0ZXMuCitJdCB3aWxsIHRoZW4gcmV0dXJuLiAgVGhlbiB5b3UgZW5hYmxlIHlvdXIgcGh5cyB0byBhY3R1YWxseQorc3RhcnQgT09CIChhdCB3aGljaCBwb2ludCB5b3VyIGRyaXZlciB3aWxsIHN0YXJ0IGNhbGxpbmcgdGhlCitub3RpZnlfKiBldmVudCBjYWxsYmFja3MpLgorCitTdHJ1Y3R1cmUgZGVzY3JpcHRpb25zOgorCitzdHJ1Y3Qgc2FzX3BoeSAtLS0tLS0tLS0tLS0tLS0tLS0tLQorTm9ybWFsbHkgdGhpcyBpcyBzdGF0aWNhbGx5IGVtYmVkZGVkIHRvIHlvdXIgZHJpdmVyJ3MKK3BoeSBzdHJ1Y3R1cmU6CisJc3RydWN0IG15X3BoeSB7CisJICAgICAgIGJsYWg7CisJICAgICAgIHN0cnVjdCBzYXNfcGh5IHNhc19waHk7CisJICAgICAgIGJsZWg7CisJfTsKK0FuZCB0aGVuIGFsbCB0aGUgcGh5cyBhcmUgYW4gYXJyYXkgb2YgbXlfcGh5IGluIHlvdXIgSEEKK3N0cnVjdCAoc2hvd24gYmVsb3cpLgorCitUaGVuIGFzIHlvdSBnbyBhbG9uZyBhbmQgaW5pdGlhbGl6ZSB5b3VyIHBoeXMgeW91IGFsc28KK2luaXRpYWxpemUgdGhlIHNhc19waHkgc3RydWN0LCBhbG9uZyB3aXRoIHlvdXIgb3duCitwaHkgc3RydWN0dXJlLgorCitJbiBnZW5lcmFsLCB0aGUgcGh5cyBhcmUgbWFuYWdlZCBieSB0aGUgTExERCBhbmQgdGhlIHBvcnRzCithcmUgbWFuYWdlZCBieSB0aGUgU0FTIGxheWVyLiAgU28gdGhlIHBoeXMgYXJlIGluaXRpYWxpemVkCithbmQgdXBkYXRlZCBieSB0aGUgTExERCBhbmQgdGhlIHBvcnRzIGFyZSBpbml0aWFsaXplZCBhbmQKK3VwZGF0ZWQgYnkgdGhlIFNBUyBsYXllci4KKworVGhlcmUgaXMgYSBzY2hlbWUgd2hlcmUgdGhlIExMREQgY2FuIFJXIGNlcnRhaW4gZmllbGRzLAorYW5kIHRoZSBTQVMgbGF5ZXIgY2FuIG9ubHkgcmVhZCBzdWNoIG9uZXMsIGFuZCB2aWNlIHZlcnNhLgorVGhlIGlkZWEgaXMgdG8gYXZvaWQgdW5uZWNlc3NhcnkgbG9ja2luZy4KKworZW5hYmxlZCAtLSBtdXN0IGJlIHNldCAoMC8xKQoraWQgLS0gbXVzdCBiZSBzZXQgWzAsTUFYX1BIWVMpCitjbGFzcywgcHJvdG8sIHR5cGUsIHJvbGUsIG9vYl9tb2RlLCBsaW5rcmF0ZSAtLSBtdXN0IGJlIHNldAorb29iX21vZGUgLS0gIHlvdSBzZXQgdGhpcyB3aGVuIE9PQiBoYXMgZmluaXNoZWQgYW5kIHRoZW4gbm90aWZ5Cit0aGUgU0FTIExheWVyLgorCitzYXNfYWRkciAtLSB0aGlzIG5vcm1hbGx5IHBvaW50cyB0byBhbiBhcnJheSBob2xkaW5nIHRoZSBzYXMKK2FkZHJlc3Mgb2YgdGhlIHBoeSwgcG9zc2libHkgc29tZXdoZXJlIGluIHlvdXIgbXlfcGh5CitzdHJ1Y3QuCisKK2F0dGFjaGVkX3Nhc19hZGRyIC0tIHNldCB0aGlzIHdoZW4geW91IChMTEREKSByZWNlaXZlIGFuCitJREVOVElGWSBmcmFtZSBvciBhIEZJUyBmcmFtZSwgX2JlZm9yZV8gbm90aWZ5aW5nIHRoZSBTQVMKK2xheWVyLiAgVGhlIGlkZWEgaXMgdGhhdCBzb21ldGltZXMgdGhlIExMREQgbWF5IHdhbnQgdG8gZmFrZQorb3IgcHJvdmlkZSBhIGRpZmZlcmVudCBTQVMgYWRkcmVzcyBvbiB0aGF0IHBoeS9wb3J0IGFuZCB0aGlzCithbGxvd3MgaXQgdG8gZG8gdGhpcy4gIEF0IGJlc3QgeW91IHNob3VsZCBjb3B5IHRoZSBzYXMKK2FkZHJlc3MgZnJvbSB0aGUgSURFTlRJRlkgZnJhbWUgb3IgbWF5YmUgZ2VuZXJhdGUgYSBTQVMKK2FkZHJlc3MgZm9yIFNBVEEgZGlyZWN0bHkgYXR0YWNoZWQgZGV2aWNlcy4gIFRoZSBEaXNjb3ZlcgorcHJvY2VzcyBtYXkgbGF0ZXIgY2hhbmdlIHRoaXMuCisKK2ZyYW1lX3JjdmQgLS0gdGhpcyBpcyB3aGVyZSB5b3UgY29weSB0aGUgSURFTlRJRlkvRklTIGZyYW1lCit3aGVuIHlvdSBnZXQgaXQ7IHlvdSBsb2NrLCBjb3B5LCBzZXQgZnJhbWVfcmN2ZF9zaXplIGFuZAordW5sb2NrIHRoZSBsb2NrLCBhbmQgdGhlbiBjYWxsIHRoZSBldmVudC4gIEl0IGlzIGEgcG9pbnRlcgorc2luY2UgdGhlcmUncyBubyB3YXkgdG8ga25vdyB5b3VyIGh3IGZyYW1lIHNpemUgX2V4YWN0bHlfLAorc28geW91IGRlZmluZSB0aGUgYWN0dWFsIGFycmF5IGluIHlvdXIgcGh5IHN0cnVjdCBhbmQgbGV0Cit0aGlzIHBvaW50ZXIgcG9pbnQgdG8gaXQuICBZb3UgY29weSB0aGUgZnJhbWUgZnJvbSB5b3VyCitETUFhYmxlIG1lbW9yeSB0byB0aGF0IGFyZWEgaG9sZGluZyB0aGUgbG9jay4KKworc2FzX3ByaW0gLS0gdGhpcyBpcyB3aGVyZSBwcmltaXRpdmVzIGdvIHdoZW4gdGhleSdyZQorcmVjZWl2ZWQuICBTZWUgc2FzLmguIEdyYWIgdGhlIGxvY2ssIHNldCB0aGUgcHJpbWl0aXZlLAorcmVsZWFzZSB0aGUgbG9jaywgbm90aWZ5LgorCitwb3J0IC0tIHRoaXMgcG9pbnRzIHRvIHRoZSBzYXNfcG9ydCBpZiB0aGUgcGh5IGJlbG9uZ3MKK3RvIGEgcG9ydCAtLSB0aGUgTExERCBvbmx5IHJlYWRzIHRoaXMuIEl0IHBvaW50cyB0byB0aGUKK3Nhc19wb3J0IHRoaXMgcGh5IGlzIHBhcnQgb2YuICBTZXQgYnkgdGhlIFNBUyBMYXllci4KKworaGEgLS0gbWF5IGJlIHNldDsgdGhlIFNBUyBsYXllciBzZXRzIGl0IGFueXdheS4KKworbGxkZF9waHkgLS0geW91IHNob3VsZCBzZXQgdGhpcyB0byBwb2ludCB0byB5b3VyIHBoeSBzbyB5b3UKK2NhbiBmaW5kIHlvdXIgd2F5IGFyb3VuZCBmYXN0ZXIgd2hlbiB0aGUgU0FTIGxheWVyIGNhbGxzIG9uZQorb2YgeW91ciBjYWxsYmFja3MgYW5kIHBhc3NlcyB5b3UgYSBwaHkuICBJZiB0aGUgc2FzX3BoeSBpcworZW1iZWRkZWQgeW91IGNhbiBhbHNvIHVzZSBjb250YWluZXJfb2YgLS0gd2hhdGV2ZXIgeW91CitwcmVmZXIuCisKKworc3RydWN0IHNhc19wb3J0IC0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgTExERCBkb2Vzbid0IHNldCBhbnkgZmllbGRzIG9mIHRoaXMgc3RydWN0IC0tIGl0IG9ubHkKK3JlYWRzIHRoZW0uICBUaGV5IHNob3VsZCBiZSBzZWxmIGV4cGxhbmF0b3J5LgorCitwaHlfbWFzayBpcyAzMiBiaXQsIHRoaXMgc2hvdWxkIGJlIGVub3VnaCBmb3Igbm93LCBhcyBJCitoYXZlbid0IGhlYXJkIG9mIGEgSEEgaGF2aW5nIG1vcmUgdGhhbiA4IHBoeXMuCisKK2xsZGRfcG9ydCAtLSBJIGhhdmVuJ3QgZm91bmQgdXNlIGZvciB0aGF0IC0tIG1heWJlIG90aGVyCitMTEREIHdobyB3aXNoIHRvIGhhdmUgaW50ZXJuYWwgcG9ydCByZXByZXNlbnRhdGlvbiBjYW4gbWFrZQordXNlIG9mIHRoaXMuCisKKworc3RydWN0IHNhc19oYV9zdHJ1Y3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0l0IG5vcm1hbGx5IGlzIHN0YXRpY2FsbHkgZGVjbGFyZWQgaW4geW91ciBvd24gTExERAorc3RydWN0dXJlIGRlc2NyaWJpbmcgeW91ciBhZGFwdGVyOgorc3RydWN0IG15X3Nhc19oYSB7CisgICAgICAgYmxhaDsKKyAgICAgICBzdHJ1Y3Qgc2FzX2hhX3N0cnVjdCBzYXNfaGE7CisgICAgICAgc3RydWN0IG15X3BoeSBwaHlzW01BWF9QSFlTXTsKKyAgICAgICBzdHJ1Y3Qgc2FzX3BvcnQgc2FzX3BvcnRzW01BWF9QSFlTXTsgLyogKDEpICovCisgICAgICAgYmxlaDsKK307CisKKygxKSBJZiB5b3VyIExMREQgZG9lc24ndCBoYXZlIGl0cyBvd24gcG9ydCByZXByZXNlbnRhdGlvbi4KKworV2hhdCBuZWVkcyB0byBiZSBpbml0aWFsaXplZCAoc2FtcGxlIGZ1bmN0aW9uIGdpdmVuIGJlbG93KS4KKworcGNpZGV2CitzYXNfYWRkciAtLSBzaW5jZSB0aGUgU0FTIGxheWVyIGRvZXNuJ3Qgd2FudCB0byBtZXNzIHdpdGgKKwkgbWVtb3J5IGFsbG9jYXRpb24sIGV0YywgdGhpcyBwb2ludHMgdG8gc3RhdGljYWxseQorCSBhbGxvY2F0ZWQgYXJyYXkgc29tZXdoZXJlIChzYXkgaW4geW91ciBob3N0IGFkYXB0ZXIKKwkgc3RydWN0dXJlKSBhbmQgaG9sZHMgdGhlIFNBUyBhZGRyZXNzIG9mIHRoZSBob3N0CisJIGFkYXB0ZXIgYXMgZ2l2ZW4gYnkgeW91IG9yIHRoZSBtYW51ZmFjdHVyZXIsIGV0Yy4KK3Nhc19wb3J0CitzYXNfcGh5IC0tIGFuIGFycmF5IG9mIHBvaW50ZXJzIHRvIHN0cnVjdHVyZXMuIChzZWUKKwlub3RlIGFib3ZlIG9uIHNhc19hZGRyKS4KKwlUaGVzZSBtdXN0IGJlIHNldC4gIFNlZSBtb3JlIG5vdGVzIGJlbG93LgorbnVtX3BoeXMgLS0gdGhlIG51bWJlciBvZiBwaHlzIHByZXNlbnQgaW4gdGhlIHNhc19waHkgYXJyYXksCisJIGFuZCB0aGUgbnVtYmVyIG9mIHBvcnRzIHByZXNlbnQgaW4gdGhlIHNhc19wb3J0CisJIGFycmF5LiAgVGhlcmUgY2FuIGJlIGEgbWF4aW11bSBudW1fcGh5cyBwb3J0cyAob25lIHBlcgorCSBwb3J0KSBzbyB3ZSBkcm9wIHRoZSBudW1fcG9ydHMsIGFuZCBvbmx5IHVzZQorCSBudW1fcGh5cy4KKworVGhlIGV2ZW50IGludGVyZmFjZToKKworCS8qIExMREQgY2FsbHMgdGhlc2UgdG8gbm90aWZ5IHRoZSBjbGFzcyBvZiBhbiBldmVudC4gKi8KKwl2b2lkICgqbm90aWZ5X2hhX2V2ZW50KShzdHJ1Y3Qgc2FzX2hhX3N0cnVjdCAqLCBlbnVtIGhhX2V2ZW50KTsKKwl2b2lkICgqbm90aWZ5X3BvcnRfZXZlbnQpKHN0cnVjdCBzYXNfcGh5ICosIGVudW0gcG9ydF9ldmVudCk7CisJdm9pZCAoKm5vdGlmeV9waHlfZXZlbnQpKHN0cnVjdCBzYXNfcGh5ICosIGVudW0gcGh5X2V2ZW50KTsKKworV2hlbiBzYXNfcmVnaXN0ZXJfaGEoKSByZXR1cm5zLCB0aG9zZSBhcmUgc2V0IGFuZCBjYW4gYmUKK2NhbGxlZCBieSB0aGUgTExERCB0byBub3RpZnkgdGhlIFNBUyBsYXllciBvZiBzdWNoIGV2ZW50cwordGhlIFNBUyBsYXllci4KKworVGhlIHBvcnQgbm90aWZpY2F0aW9uOgorCisJLyogVGhlIGNsYXNzIGNhbGxzIHRoZXNlIHRvIG5vdGlmeSB0aGUgTExERCBvZiBhbiBldmVudC4gKi8KKwl2b2lkICgqbGxkZF9wb3J0X2Zvcm1lZCkoc3RydWN0IHNhc19waHkgKik7CisJdm9pZCAoKmxsZGRfcG9ydF9kZWZvcm1lZCkoc3RydWN0IHNhc19waHkgKik7CisKK0lmIHRoZSBMTEREIHdhbnRzIG5vdGlmaWNhdGlvbiB3aGVuIGEgcG9ydCBoYXMgYmVlbiBmb3JtZWQKK29yIGRlZm9ybWVkIGl0IHNldHMgdGhvc2UgdG8gYSBmdW5jdGlvbiBzYXRpc2Z5aW5nIHRoZSB0eXBlLgorCitBIFNBUyBMTEREIHNob3VsZCBhbHNvIGltcGxlbWVudCBhdCBsZWFzdCBvbmUgb2YgdGhlIFRhc2sKK01hbmFnZW1lbnQgRnVuY3Rpb25zIChUTUZzKSBkZXNjcmliZWQgaW4gU0FNOgorCisJLyogVGFzayBNYW5hZ2VtZW50IEZ1bmN0aW9ucy4gTXVzdCBiZSBjYWxsZWQgZnJvbSBwcm9jZXNzIGNvbnRleHQuICovCisJaW50ICgqbGxkZF9hYm9ydF90YXNrKShzdHJ1Y3Qgc2FzX3Rhc2sgKik7CisJaW50ICgqbGxkZF9hYm9ydF90YXNrX3NldCkoc3RydWN0IGRvbWFpbl9kZXZpY2UgKiwgdTggKmx1bik7CisJaW50ICgqbGxkZF9jbGVhcl9hY2EpKHN0cnVjdCBkb21haW5fZGV2aWNlICosIHU4ICpsdW4pOworCWludCAoKmxsZGRfY2xlYXJfdGFza19zZXQpKHN0cnVjdCBkb21haW5fZGV2aWNlICosIHU4ICpsdW4pOworCWludCAoKmxsZGRfSV9UX25leHVzX3Jlc2V0KShzdHJ1Y3QgZG9tYWluX2RldmljZSAqKTsKKwlpbnQgKCpsbGRkX2x1X3Jlc2V0KShzdHJ1Y3QgZG9tYWluX2RldmljZSAqLCB1OCAqbHVuKTsKKwlpbnQgKCpsbGRkX3F1ZXJ5X3Rhc2spKHN0cnVjdCBzYXNfdGFzayAqKTsKKworRm9yIG1vcmUgaW5mb3JtYXRpb24gcGxlYXNlIHJlYWQgU0FNIGZyb20gVDEwLm9yZy4KKworUG9ydCBhbmQgQWRhcHRlciBtYW5hZ2VtZW50OgorCisJLyogUG9ydCBhbmQgQWRhcHRlciBtYW5hZ2VtZW50ICovCisJaW50ICgqbGxkZF9jbGVhcl9uZXh1c19wb3J0KShzdHJ1Y3Qgc2FzX3BvcnQgKik7CisJaW50ICgqbGxkZF9jbGVhcl9uZXh1c19oYSkoc3RydWN0IHNhc19oYV9zdHJ1Y3QgKik7CisKK0EgU0FTIExMREQgc2hvdWxkIGltcGxlbWVudCBhdCBsZWFzdCBvbmUgb2YgdGhvc2UuCisKK1BoeSBtYW5hZ2VtZW50OgorCisJLyogUGh5IG1hbmFnZW1lbnQgKi8KKwlpbnQgKCpsbGRkX2NvbnRyb2xfcGh5KShzdHJ1Y3Qgc2FzX3BoeSAqLCBlbnVtIHBoeV9mdW5jKTsKKworbGxkZF9oYSAtLSBzZXQgdGhpcyB0byBwb2ludCB0byB5b3VyIEhBIHN0cnVjdC4gWW91IGNhbiBhbHNvCit1c2UgY29udGFpbmVyX29mIGlmIHlvdSBlbWJlZGRlZCBpdCBhcyBzaG93biBhYm92ZS4KKworQSBzYW1wbGUgaW5pdGlhbGl6YXRpb24gYW5kIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbgorY2FuIGxvb2sgbGlrZSB0aGlzIChjYWxsZWQgbGFzdCB0aGluZyBmcm9tIHByb2JlKCkpCisqYnV0KiBiZWZvcmUgeW91IGVuYWJsZSB0aGUgcGh5cyB0byBkbyBPT0I6CisKK3N0YXRpYyBpbnQgcmVnaXN0ZXJfc2FzX2hhKHN0cnVjdCBteV9zYXNfaGEgKm15X2hhKQoreworCWludCBpOworCXN0YXRpYyBzdHJ1Y3Qgc2FzX3BoeSAgICpzYXNfcGh5c1tNQVhfUEhZU107CisJc3RhdGljIHN0cnVjdCBzYXNfcG9ydCAgKnNhc19wb3J0c1tNQVhfUEhZU107CisKKwlteV9oYS0+c2FzX2hhLnNhc19hZGRyID0gJm15X2hhLT5zYXNfYWRkclswXTsKKworCWZvciAoaSA9IDA7IGkgPCBNQVhfUEhZUzsgaSsrKSB7CisJCXNhc19waHlzW2ldID0gJm15X2hhLT5waHlzW2ldLnNhc19waHk7CisJCXNhc19wb3J0c1tpXSA9ICZteV9oYS0+c2FzX3BvcnRzW2ldOworCX0KKworCW15X2hhLT5zYXNfaGEuc2FzX3BoeSAgPSBzYXNfcGh5czsKKwlteV9oYS0+c2FzX2hhLnNhc19wb3J0ID0gc2FzX3BvcnRzOworCW15X2hhLT5zYXNfaGEubnVtX3BoeXMgPSBNQVhfUEhZUzsKKworCW15X2hhLT5zYXNfaGEubGxkZF9wb3J0X2Zvcm1lZCA9IG15X3BvcnRfZm9ybWVkOworCisJbXlfaGEtPnNhc19oYS5sbGRkX2Rldl9mb3VuZCA9IG15X2Rldl9mb3VuZDsKKwlteV9oYS0+c2FzX2hhLmxsZGRfZGV2X2dvbmUgPSBteV9kZXZfZ29uZTsKKworCW15X2hhLT5zYXNfaGEubGxkZF9leGVjdXRlX3Rhc2sgPSBteV9leGVjdXRlX3Rhc2s7CisKKwlteV9oYS0+c2FzX2hhLmxsZGRfYWJvcnRfdGFzayAgICAgPSBteV9hYm9ydF90YXNrOworCW15X2hhLT5zYXNfaGEubGxkZF9hYm9ydF90YXNrX3NldCA9IG15X2Fib3J0X3Rhc2tfc2V0OworCW15X2hhLT5zYXNfaGEubGxkZF9jbGVhcl9hY2EgICAgICA9IG15X2NsZWFyX2FjYTsKKwlteV9oYS0+c2FzX2hhLmxsZGRfY2xlYXJfdGFza19zZXQgPSBteV9jbGVhcl90YXNrX3NldDsKKwlteV9oYS0+c2FzX2hhLmxsZGRfSV9UX25leHVzX3Jlc2V0PSBOVUxMOyAoMikKKwlteV9oYS0+c2FzX2hhLmxsZGRfbHVfcmVzZXQgICAgICAgPSBteV9sdV9yZXNldDsKKwlteV9oYS0+c2FzX2hhLmxsZGRfcXVlcnlfdGFzayAgICAgPSBteV9xdWVyeV90YXNrOworCisJbXlfaGEtPnNhc19oYS5sbGRkX2NsZWFyX25leHVzX3BvcnQgPSBteV9jbGVhcl9uZXh1c19wb3J0OworCW15X2hhLT5zYXNfaGEubGxkZF9jbGVhcl9uZXh1c19oYSA9IG15X2NsZWFyX25leHVzX2hhOworCisJbXlfaGEtPnNhc19oYS5sbGRkX2NvbnRyb2xfcGh5ID0gbXlfY29udHJvbF9waHk7CisKKwlyZXR1cm4gc2FzX3JlZ2lzdGVyX2hhKCZteV9oYS0+c2FzX2hhKTsKK30KKworKDIpIFNBUyAxLjEgZG9lcyBub3QgZGVmaW5lIElfVCBOZXh1cyBSZXNldCBUTUYuCisKK0V2ZW50cworLS0tLS0tCisKK0V2ZW50cyBhcmUgX3RoZSBvbmx5IHdheV8gYSBTQVMgTExERCBub3RpZmllcyB0aGUgU0FTIGxheWVyCitvZiBhbnl0aGluZy4gIFRoZXJlIGlzIG5vIG90aGVyIG1ldGhvZCBvciB3YXkgYSBMTEREIHRvIHRlbGwKK3RoZSBTQVMgbGF5ZXIgb2YgYW55dGhpbmcgaGFwcGVuaW5nIGludGVybmFsbHkgb3IgaW4gdGhlIFNBUworZG9tYWluLgorCitQaHkgZXZlbnRzOgorCVBIWUVfTE9TU19PRl9TSUdOQUwsIChDKQorCVBIWUVfT09CX0RPTkUsCisJUEhZRV9PT0JfRVJST1IsICAgICAgKEMpCisJUEhZRV9TUElOVVBfSE9MRC4KKworUG9ydCBldmVudHMsIHBhc3NlZCBvbiBhIF9waHlfOgorCVBPUlRFX0JZVEVTX0RNQUVELCAgICAgIChNKQorCVBPUlRFX0JST0FEQ0FTVF9SQ1ZELCAgIChFKQorCVBPUlRFX0xJTktfUkVTRVRfRVJSLCAgIChDKQorCVBPUlRFX1RJTUVSX0VWRU5ULCAgICAgIChDKQorCVBPUlRFX0hBUkRfUkVTRVQuCisKK0hvc3QgQWRhcHRlciBldmVudDoKKwlIQUVfUkVTRVQKKworQSBTQVMgTExERCBzaG91bGQgYmUgYWJsZSB0byBnZW5lcmF0ZQorCS0gYXQgbGVhc3Qgb25lIGV2ZW50IGZyb20gZ3JvdXAgQyAoY2hvaWNlKSwKKwktIGV2ZW50cyBtYXJrZWQgTSAobWFuZGF0b3J5KSBhcmUgbWFuZGF0b3J5IChvbmx5IG9uZSksCisJLSBldmVudHMgbWFya2VkIEUgKGV4cGFuZGVyKSBpZiBpdCB3YW50cyB0aGUgU0FTIGxheWVyCisJICB0byBoYW5kbGUgZG9tYWluIHJldmFsaWRhdGlvbiAob25seSBvbmUgc3VjaCkuCisJLSBVbm1hcmtlZCBldmVudHMgYXJlIG9wdGlvbmFsLgorCitNZWFuaW5nOgorCitIQUVfUkVTRVQgLS0gd2hlbiB5b3VyIEhBIGdvdCBpbnRlcm5hbCBlcnJvciBhbmQgd2FzIHJlc2V0LgorCitQT1JURV9CWVRFU19ETUFFRCAtLSBvbiByZWNlaXZpbmcgYW4gSURFTlRJRlkvRklTIGZyYW1lCitQT1JURV9CUk9BRENBU1RfUkNWRCAtLSBvbiByZWNlaXZpbmcgYSBwcmltaXRpdmUKK1BPUlRFX0xJTktfUkVTRVRfRVJSIC0tIHRpbWVyIGV4cGlyZWQsIGxvc3Mgb2Ygc2lnbmFsLCBsb3NzCitvZiBEV1MsIGV0Yy4gKCopCitQT1JURV9USU1FUl9FVkVOVCAtLSBEV1MgcmVzZXQgdGltZW91dCB0aW1lciBleHBpcmVkICgqKQorUE9SVEVfSEFSRF9SRVNFVCAtLSBIYXJkIFJlc2V0IHByaW1pdGl2ZSByZWNlaXZlZC4KKworUEhZRV9MT1NTX09GX1NJR05BTCAtLSB0aGUgZGV2aWNlIGlzIGdvbmUgKCopCitQSFlFX09PQl9ET05FIC0tIE9PQiB3ZW50IGZpbmUgYW5kIG9vYl9tb2RlIGlzIHZhbGlkCitQSFlFX09PQl9FUlJPUiAtLSBFcnJvciB3aGlsZSBkb2luZyBPT0IsIHRoZSBkZXZpY2UgcHJvYmFibHkKK2dvdCBkaXNjb25uZWN0ZWQuICgqKQorUEhZRV9TUElOVVBfSE9MRCAtLSBTQVRBIGlzIHByZXNlbnQsIENPTVdBS0Ugbm90IHNlbnQuCisKKygqKSBzaG91bGQgc2V0L2NsZWFyIHRoZSBhcHByb3ByaWF0ZSBmaWVsZHMgaW4gdGhlIHBoeSwKKyAgICBvciBhbHRlcm5hdGl2ZWx5IGNhbGwgdGhlIGlubGluZWQgc2FzX3BoeV9kaXNjb25uZWN0ZWQoKQorICAgIHdoaWNoIGlzIGp1c3QgYSBoZWxwZXIsIGZyb20gdGhlaXIgdGFza2xldC4KKworVGhlIEV4ZWN1dGUgQ29tbWFuZCBTQ1NJIFJQQzoKKworCWludCAoKmxsZGRfZXhlY3V0ZV90YXNrKShzdHJ1Y3Qgc2FzX3Rhc2sgKiwgZ2ZwX3QgZ2ZwX2ZsYWdzKTsKKworVXNlZCB0byBxdWV1ZSBhIHRhc2sgdG8gdGhlIFNBUyBMTERELiAgQHRhc2sgaXMgdGhlIHRhc2sgdG8gYmUgZXhlY3V0ZWQuCitAZ2ZwX21hc2sgaXMgdGhlIGdmcF9tYXNrIGRlZmluaW5nIHRoZSBjb250ZXh0IG9mIHRoZSBjYWxsZXIuCisKK1RoaXMgZnVuY3Rpb24gc2hvdWxkIGltcGxlbWVudCB0aGUgRXhlY3V0ZSBDb21tYW5kIFNDU0kgUlBDLAorCitUaGF0IGlzLCB3aGVuIGxsZGRfZXhlY3V0ZV90YXNrKCkgaXMgY2FsbGVkLCB0aGUgY29tbWFuZAorZ28gb3V0IG9uIHRoZSB0cmFuc3BvcnQgKmltbWVkaWF0ZWx5Ki4gIFRoZXJlIGlzICpubyoKK3F1ZXVpbmcgb2YgYW55IHNvcnQgYW5kIGF0IGFueSBsZXZlbCBpbiBhIFNBUyBMTERELgorCitSZXR1cm5zOiAtU0FTX1FVRVVFX0ZVTEwsIC1FTk9NRU0sIG5vdGhpbmcgd2FzIHF1ZXVlZDsKKwkgMCwgdGhlIHRhc2socykgd2VyZSBxdWV1ZWQuCisKK3N0cnVjdCBzYXNfdGFzayB7CisJZGV2IC0tIHRoZSBkZXZpY2UgdGhpcyB0YXNrIGlzIGRlc3RpbmVkIHRvCisJdGFza19wcm90byAtLSBfb25lXyBvZiBlbnVtIHNhc19wcm90bworCXNjYXR0ZXIgLS0gcG9pbnRlciB0byBzY2F0dGVyIGdhdGhlciBsaXN0IGFycmF5CisJbnVtX3NjYXR0ZXIgLS0gbnVtYmVyIG9mIGVsZW1lbnRzIGluIHNjYXR0ZXIKKwl0b3RhbF94ZmVyX2xlbiAtLSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgZXhwZWN0ZWQgdG8gYmUgdHJhbnNmZXJyZWQKKwlkYXRhX2RpciAtLSBQQ0lfRE1BXy4uLgorCXRhc2tfZG9uZSAtLSBjYWxsYmFjayB3aGVuIHRoZSB0YXNrIGhhcyBmaW5pc2hlZCBleGVjdXRpb24KK307CisKK0RJU0NPVkVSWQorLS0tLS0tLS0tCisKK1RoZSBzeXNmcyB0cmVlIGhhcyB0aGUgZm9sbG93aW5nIHB1cnBvc2VzOgorICAgIGEpIEl0IHNob3dzIHlvdSB0aGUgcGh5c2ljYWwgbGF5b3V0IG9mIHRoZSBTQVMgZG9tYWluIGF0CisgICAgICAgdGhlIGN1cnJlbnQgdGltZSwgaS5lLiBob3cgdGhlIGRvbWFpbiBsb29rcyBpbiB0aGUKKyAgICAgICBwaHlzaWNhbCB3b3JsZCByaWdodCBub3cuCisgICAgYikgU2hvd3Mgc29tZSBkZXZpY2UgcGFyYW1ldGVycyBfYXRfZGlzY292ZXJ5X3RpbWVfLgorCitUaGlzIGlzIGEgbGluayB0byB0aGUgdHJlZSgxKSBwcm9ncmFtLCB2ZXJ5IHVzZWZ1bCBpbgordmlld2luZyB0aGUgU0FTIGRvbWFpbjoKK2Z0cDovL21hbWEuaW5kc3RhdGUuZWR1L2xpbnV4L3RyZWUvCitJIGV4cGVjdCB1c2VyIHNwYWNlIGFwcGxpY2F0aW9ucyB0byBhY3R1YWxseSBjcmVhdGUgYQorZ3JhcGhpY2FsIGludGVyZmFjZSBvZiB0aGlzLgorCitUaGF0IGlzLCB0aGUgc3lzZnMgZG9tYWluIHRyZWUgZG9lc24ndCBzaG93IG9yIGtlZXAgc3RhdGUgaWYKK3lvdSBlLmcuLCBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgdGhlIFJFQURZIExFRCBNRUFOSU5HCitzZXR0aW5nLCBidXQgaXQgZG9lcyBzaG93IHlvdSB0aGUgY3VycmVudCBjb25uZWN0aW9uIHN0YXR1cworb2YgdGhlIGRvbWFpbiBkZXZpY2UuCisKK0tlZXBpbmcgaW50ZXJuYWwgZGV2aWNlIHN0YXRlIGNoYW5nZXMgaXMgcmVzcG9uc2liaWxpdHkgb2YKK3VwcGVyIGxheWVycyAoQ29tbWFuZCBzZXQgZHJpdmVycykgYW5kIHVzZXIgc3BhY2UuCisKK1doZW4gYSBkZXZpY2Ugb3IgZGV2aWNlcyBhcmUgdW5wbHVnZ2VkIGZyb20gdGhlIGRvbWFpbiwgdGhpcworaXMgcmVmbGVjdGVkIGluIHRoZSBzeXNmcyB0cmVlIGltbWVkaWF0ZWx5LCBhbmQgdGhlIGRldmljZShzKQorcmVtb3ZlZCBmcm9tIHRoZSBzeXN0ZW0uCisKK1RoZSBzdHJ1Y3R1cmUgZG9tYWluX2RldmljZSBkZXNjcmliZXMgYW55IGRldmljZSBpbiB0aGUgU0FTCitkb21haW4uICBJdCBpcyBjb21wbGV0ZWx5IG1hbmFnZWQgYnkgdGhlIFNBUyBsYXllci4gIEEgdGFzaworcG9pbnRzIHRvIGEgZG9tYWluIGRldmljZSwgdGhpcyBpcyBob3cgdGhlIFNBUyBMTEREIGtub3dzCit3aGVyZSB0byBzZW5kIHRoZSB0YXNrKHMpIHRvLiAgQSBTQVMgTExERCBvbmx5IHJlYWRzIHRoZQorY29udGVudHMgb2YgdGhlIGRvbWFpbl9kZXZpY2Ugc3RydWN0dXJlLCBidXQgaXQgbmV2ZXIgY3JlYXRlcworb3IgZGVzdHJveXMgb25lLgorCitFeHBhbmRlciBtYW5hZ2VtZW50IGZyb20gVXNlciBTcGFjZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW4gZWFjaCBleHBhbmRlciBkaXJlY3RvcnkgaW4gc3lzZnMsIHRoZXJlIGlzIGEgZmlsZSBjYWxsZWQKKyJzbXBfcG9ydGFsIi4gIEl0IGlzIGEgYmluYXJ5IHN5c2ZzIGF0dHJpYnV0ZSBmaWxlLCB3aGljaAoraW1wbGVtZW50cyBhbiBTTVAgcG9ydGFsIChOb3RlOiB0aGlzIGlzICpOT1QqIGFuIFNNUCBwb3J0KSwKK3RvIHdoaWNoIHVzZXIgc3BhY2UgYXBwbGljYXRpb25zIGNhbiBzZW5kIFNNUCByZXF1ZXN0cyBhbmQKK3JlY2VpdmUgU01QIHJlc3BvbnNlcy4KKworRnVuY3Rpb25hbGl0eSBpcyBkZWNlcHRpdmVseSBzaW1wbGU6CisKKzEuIEJ1aWxkIHRoZSBTTVAgZnJhbWUgeW91IHdhbnQgdG8gc2VuZC4gVGhlIGZvcm1hdCBhbmQgbGF5b3V0CisgICBpcyBkZXNjcmliZWQgaW4gdGhlIFNBUyBzcGVjLiAgTGVhdmUgdGhlIENSQyBmaWVsZCBlcXVhbCAwLgorb3BlbigyKQorMi4gT3BlbiB0aGUgZXhwYW5kZXIncyBTTVAgcG9ydGFsIHN5c2ZzIGZpbGUgaW4gUlcgbW9kZS4KK3dyaXRlKDIpCiszLiBXcml0ZSB0aGUgZnJhbWUgeW91IGJ1aWx0IGluIDEuCityZWFkKDIpCis0LiBSZWFkIHRoZSBhbW91bnQgb2YgZGF0YSB5b3UgZXhwZWN0IHRvIHJlY2VpdmUgZm9yIHRoZSBmcmFtZSB5b3UgYnVpbHQuCisgICBJZiB5b3UgcmVjZWl2ZSBkaWZmZXJlbnQgYW1vdW50IG9mIGRhdGEgeW91IGV4cGVjdGVkIHRvIHJlY2VpdmUsCisgICB0aGVuIHRoZXJlIHdhcyBzb21lIGtpbmQgb2YgZXJyb3IuCitjbG9zZSgyKQorQWxsIHRoaXMgcHJvY2VzcyBpcyBzaG93biBpbiBkZXRhaWwgaW4gdGhlIGZ1bmN0aW9uIGRvX3NtcF9mdW5jKCkKK2FuZCBpdHMgY2FsbGVycywgaW4gdGhlIGZpbGUgImV4cGFuZGVyX2NvbmYuYyIuCisKK1RoZSBrZXJuZWwgZnVuY3Rpb25hbGl0eSBpcyBpbXBsZW1lbnRlZCBpbiB0aGUgZmlsZQorInNhc19leHBhbmRlci5jIi4KKworVGhlIHByb2dyYW0gImV4cGFuZGVyX2NvbmYuYyIgaW1wbGVtZW50cyB0aGlzLiBJdCB0YWtlcyBvbmUKK2FyZ3VtZW50LCB0aGUgc3lzZnMgZmlsZSBuYW1lIG9mIHRoZSBTTVAgcG9ydGFsIHRvIHRoZQorZXhwYW5kZXIsIGFuZCBnaXZlcyBleHBhbmRlciBpbmZvcm1hdGlvbiwgaW5jbHVkaW5nIHJvdXRpbmcKK3RhYmxlcy4KKworVGhlIFNNUCBwb3J0YWwgZ2l2ZXMgeW91IGNvbXBsZXRlIGNvbnRyb2wgb2YgdGhlIGV4cGFuZGVyLAorc28gcGxlYXNlIGJlIGNhcmVmdWwuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvbGlua19wb3dlcl9tYW5hZ2VtZW50X3BvbGljeS50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvbGlua19wb3dlcl9tYW5hZ2VtZW50X3BvbGljeS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE4OTkzZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2NzaS9saW5rX3Bvd2VyX21hbmFnZW1lbnRfcG9saWN5LnR4dApAQCAtMCwwICsxLDE5IEBACitUaGlzIHBhcmFtZXRlciBhbGxvd3MgdGhlIHVzZXIgdG8gc2V0IHRoZSBsaW5rIChpbnRlcmZhY2UpIHBvd2VyIG1hbmFnZW1lbnQuCitUaGVyZSBhcmUgMyBwb3NzaWJsZSBvcHRpb25zOgorCitWYWx1ZQkJCUVmZmVjdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbWluX3Bvd2VyCQlUZWxsIHRoZSBjb250cm9sbGVyIHRvIHRyeSB0byBtYWtlIHRoZSBsaW5rIHVzZSB0aGUKKwkJCWxlYXN0IHBvc3NpYmxlIHBvd2VyIHdoZW4gcG9zc2libGUuICBUaGlzIG1heQorCQkJc2FjcmlmaWNlIHNvbWUgcGVyZm9ybWFuY2UgZHVlIHRvIGluY3JlYXNlZCBsYXRlbmN5CisJCQl3aGVuIGNvbWluZyBvdXQgb2YgbG93ZXIgcG93ZXIgc3RhdGVzLgorCittYXhfcGVyZm9ybWFuY2UJCUdlbmVyYWxseSwgdGhpcyBtZWFucyBubyBwb3dlciBtYW5hZ2VtZW50LiAgVGVsbAorCQkJdGhlIGNvbnRyb2xsZXIgdG8gaGF2ZSBwZXJmb3JtYW5jZSBiZSBhIHByaW9yaXR5CisJCQlvdmVyIHBvd2VyIG1hbmFnZW1lbnQuCisKK21lZGl1bV9wb3dlcgkJVGVsbCB0aGUgY29udHJvbGxlciB0byBlbnRlciBhIGxvd2VyIHBvd2VyIHN0YXRlCisJCQl3aGVuIHBvc3NpYmxlLCBidXQgZG8gbm90IGVudGVyIHRoZSBsb3dlc3QgcG93ZXIKKwkJCXN0YXRlLCB0aHVzIGltcHJvdmluZyBsYXRlbmN5IG92ZXIgbWluX3Bvd2VyIHNldHRpbmcuCisKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL2xwZmMudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL2xwZmMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NDFlYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvbHBmYy50eHQKQEAgLTAsMCArMSw4MyBAQAorCitMUEZDIERyaXZlciBSZWxlYXNlIE5vdGVzOgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTVBPUlRBTlQ6CisKKyAgU3RhcnRpbmcgaW4gdGhlIDguMC4xNyByZWxlYXNlLCB0aGUgZHJpdmVyIGJlZ2FuIHRvIGJlIHRhcmdldGVkIHN0cmljdGx5CisgIHRvd2FyZCB0aGUgdXBzdHJlYW0ga2VybmVsLiBBcyBzdWNoLCB3ZSByZW1vdmVkICNpZmRlZnMgZm9yIG9sZGVyIGtlcm5lbHMKKyAgKHByZSAyLjYuMTApLiBUaGUgOC4wLjE2IHJlbGVhc2Ugc2hvdWxkIGJlIHVzZWQgaWYgdGhlIGRyaXZlciBpcyB0byBiZQorICBydW4gb24gb25lIG9mIHRoZSBvbGRlciBrZXJuZWxzLgorCisgIFRoZSBwcm9wb3NlZCBtb2RpZmljYXRpb25zIHRvIHRoZSB0cmFuc3BvcnQgbGF5ZXIgZm9yIEZDIHJlbW90ZSBwb3J0cworICBhbmQgZXh0ZW5kZWQgYXR0cmlidXRlIHN1cHBvcnQgaXMgbm93IHBhcnQgb2YgdGhlIHVwc3RyZWFtIGtlcm5lbAorICBhcyBvZiAyLjYuMTIuIFdlIG5vIGxvbmdlciBuZWVkIHRvIHByb3ZpZGUgcGF0Y2hlcyBmb3IgdGhpcyBzdXBwb3J0LAorICBub3IgYSAqZnVsbCogdmVyc2lvbiB3aGljaCBoYXMgb2xkIGFuIG5ldyBrZXJuZWwgc3VwcG9ydC4KKyAgCisgIFRoZSBkcml2ZXIgbm93IHJlcXVpcmVzIGEgMi42LjEyIChpZiBwcmUtcmVsZWFzZSwgMi42LjEyLXJjMSkgb3IgbGF0ZXIKKyAga2VybmVsLgorICAKKyAgUGxlYXNlIGhlZWQgdGhlc2UgZGVwZW5kZW5jaWVzLi4uLgorCisKKyAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKworVGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBwcm92aWRlZCBmb3IgYWRkaXRpb25hbCBiYWNrZ3JvdW5kIG9uIHRoZQoraGlzdG9yeSBvZiB0aGUgZHJpdmVyIGFzIHdlIHB1c2ggZm9yIHVwc3RyZWFtIGFjY2VwdGFuY2UuCisKK0NhYmxlIHB1bGwgYW5kIHRlbXBvcmFyeSBkZXZpY2UgTG9zczoKKworICBJbiBvbGRlciByZXZpc2lvbnMgb2YgdGhlIGxwZmMgZHJpdmVyLCB0aGUgZHJpdmVyIGludGVybmFsbHkgcXVldWVkIGkvbyAKKyAgcmVjZWl2ZWQgZnJvbSB0aGUgbWlkbGF5ZXIuIEluIHRoZSBjYXNlcyB3aGVyZSBhIGNhYmxlIHdhcyBwdWxsZWQsIGxpbmsKKyAgaml0dGVyLCBvciBhIGRldmljZSB0ZW1wb3JhcmlseSBsb3NlcyBjb25uZWN0aXZpdHkgKGR1ZSB0byBpdHMgY2FibGUKKyAgYmVpbmcgcmVtb3ZlZCwgYSBzd2l0Y2ggcmVib290aW5nLCBvciBhIGRldmljZSByZWJvb3QpLCB0aGUgZHJpdmVyIGNvdWxkCisgIGhpZGUgdGhlIGRpc2FwcGVhcmFuY2Ugb2YgdGhlIGRldmljZSBmcm9tIHRoZSBtaWRsYXllci4gSS9PJ3MgaXNzdWVkIHRvCisgIHRoZSBMTEREIHdvdWxkIHNpbXBseSBiZSBxdWV1ZWQgZm9yIGEgc2hvcnQgZHVyYXRpb24sIGFsbG93aW5nIHRoZSBkZXZpY2UKKyAgdG8gcmVhcHBlYXIgb3IgbGluayBjb21lIGJhY2sgYWxpdmUsIHdpdGggbm8gaW5hZHZlcnRlbnQgc2lkZSBlZmZlY3RzCisgIHRvIHRoZSBzeXN0ZW0uIElmIHRoZSBkcml2ZXIgZGlkIG5vdCBoaWRlIHRoZXNlIGNvbmRpdGlvbnMsIGkvbyB3b3VsZCBiZQorICBlcnJvcmVkIGJ5IHRoZSBkcml2ZXIsIHRoZSBtaWQtbGF5ZXIgd291bGQgZXhoYXVzdCBpdHMgcmV0cmllcywgYW5kIHRoZQorICBkZXZpY2Ugd291bGQgYmUgdGFrZW4gb2ZmbGluZS4gTWFudWFsIGludGVydmVudGlvbiB3b3VsZCBiZSByZXF1aXJlZCB0bworICByZS1lbmFibGUgdGhlIGRldmljZS4KKworICBUaGUgY29tbXVuaXR5IHN1cHBvcnRpbmcga2VybmVsLm9yZyBoYXMgZHJpdmVuIGFuIGVmZm9ydCB0byByZW1vdmUKKyAgaW50ZXJuYWwgcXVldWluZyBmcm9tIGFsbCBMTEREcy4gVGhlIHBoaWxvc29waHkgaXMgdGhhdCBpbnRlcm5hbAorICBxdWV1aW5nIGlzIHVubmVjZXNzYXJ5IGFzIHRoZSBibG9jayBsYXllciBhbHJlYWR5IHBlcmZvcm1zIHRoZSAKKyAgcXVldWluZy4gUmVtb3ZpbmcgdGhlIHF1ZXVlcyBmcm9tIHRoZSBMTEREIG1ha2VzIGEgbW9yZSBwcmVkaWN0YWJsZQorICBhbmQgbW9yZSBzaW1wbGUgTExERC4KKworICBBcyBhIHBvdGVudGlhbCBuZXcgYWRkaXRpb24gdG8ga2VybmVsLm9yZywgdGhlIDgueCBkcml2ZXIgd2FzIGFza2VkIHRvCisgIGhhdmUgYWxsIGludGVybmFsIHF1ZXVpbmcgcmVtb3ZlZC4gRW11bGV4IGNvbXBsaWVkIHdpdGggdGhpcyByZXF1ZXN0LgorICBJbiBleHBsYWluaW5nIHRoZSBpbXBhY3RzIG9mIHRoaXMgY2hhbmdlLCBFbXVsZXggaGFzIHdvcmtlZCB3aXRoIHRoZQorICBjb21tdW5pdHkgaW4gbW9kaWZ5aW5nIHRoZSBiZWhhdmlvciBvZiB0aGUgU0NTSSBtaWRsYXllciBzbyB0aGF0IFNDU0kKKyAgZGV2aWNlcyBjYW4gYmUgdGVtcG9yYXJpbHkgc3VzcGVuZGVkIHdoaWxlIHRyYW5zcG9ydCBldmVudHMgKHN1Y2ggYXMKKyAgdGhvc2UgZGVzY3JpYmVkKSBjYW4gb2NjdXIuICAKKworICBUaGUgcHJvcG9zZWQgcGF0Y2ggd2FzIHBvc3RlZCB0byB0aGUgbGludXgtc2NzaSBtYWlsaW5nIGxpc3QuIFRoZSBwYXRjaAorICBpcyBjb250YWluZWQgaW4gdGhlIDIuNi4xMC1yYzIgKGFuZCBsYXRlcikgcGF0Y2gga2l0cy4gQXMgc3VjaCwgdGhpcworICBwYXRjaCBpcyBwYXJ0IG9mIHRoZSBzdGFuZGFyZCAyLjYuMTAga2VybmVsLgorCisgIEJ5IGRlZmF1bHQsIHRoZSBkcml2ZXIgZXhwZWN0cyB0aGUgcGF0Y2hlcyBmb3IgYmxvY2svdW5ibG9jayBpbnRlcmZhY2VzCisgIHRvIGJlIHByZXNlbnQgaW4gdGhlIGtlcm5lbC4gTm8gI2RlZmluZSBuZWVkcyB0byBiZSBzZXQgdG8gZW5hYmxlIHN1cHBvcnQuCisKKworS2VybmVsIFN1cHBvcnQKKworICBUaGlzIHNvdXJjZSBwYWNrYWdlIGlzIHRhcmdldGVkIGZvciB0aGUgdXBzdHJlYW0ga2VybmVsIG9ubHkuIChTZWUgbm90ZXMKKyAgYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUpLiBJdCByZWxpZXMgb24gaW50ZXJmYWNlcyB0aGF0IGFyZSBzbG93aW5nCisgIG1pZ3JhdGluZyBpbnRvIHRoZSBrZXJuZWwub3JnIGtlcm5lbC4KKworICBBdCB0aGlzIHRpbWUsIHRoZSBkcml2ZXIgcmVxdWlyZXMgdGhlIDIuNi4xMiAoaWYgcHJlLXJlbGVhc2UsIDIuNi4xMi1yYzEpCisgIGtlcm5lbC4KKworICBJZiBhIGRyaXZlciBpcyBuZWVkZWQgZm9yIG9sZGVyIGtlcm5lbHMgcGxlYXNlIHV0aWxpemUgdGhlIDguMC4xNgorICBkcml2ZXIgc291cmNlcy4KKworCitQYXRjaGVzCisKKyAgVGhhbmtmdWxseSwgYXQgdGhpcyB0aW1lLCBwYXRjaGVzIGFyZSBub3QgbmVlZGVkLgorCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9tZWdhcmFpZC50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvbWVnYXJhaWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjN2NlYTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvbWVnYXJhaWQudHh0CkBAIC0wLDAgKzEsNzAgQEAKKwkJCU5vdGVzIG9uIE1hbmFnZW1lbnQgTW9kdWxlCisJCQl+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitPdmVydmlldzoKKy0tLS0tLS0tCisKK0RpZmZlcmVudCBjbGFzc2VzIG9mIGNvbnRyb2xsZXJzIGZyb20gTFNJIExvZ2ljIGFjY2VwdCBhbmQgcmVzcG9uZCB0byB0aGUKK3VzZXIgYXBwbGljYXRpb25zIGluIGEgc2ltaWxhciB3YXkuIFRoZXkgdW5kZXJzdGFuZCB0aGUgc2FtZSBmaXJtd2FyZSBjb250cm9sCitjb21tYW5kcy4gRnVydGhlcm1vcmUsIHRoZSBhcHBsaWNhdGlvbnMgYWxzbyBjYW4gdHJlYXQgZGlmZmVyZW50IGNsYXNzZXMgb2YKK3RoZSBjb250cm9sbGVycyB1bmlmb3JtbHkuIEhlbmNlIGl0IGlzIGxvZ2ljYWwgdG8gaGF2ZSBhIHNpbmdsZSBtb2R1bGUgdGhhdAoraW50ZXJmYWNlcyB3aXRoIHRoZSBhcHBsaWNhdGlvbnMgb24gb25lIHNpZGUgYW5kIGFsbCB0aGUgbG93IGxldmVsIGRyaXZlcnMKK29uIHRoZSBvdGhlci4KKworVGhlIGFkdmFudGFnZXMsIHRob3VnaCBvYnZpb3VzLCBhcmUgbGlzdGVkIGZvciBjb21wbGV0ZW5lc3M6CisKKwlpLglBdm9pZCBkdXBsaWNhdGUgY29kZSBmcm9tIHRoZSBsb3cgbGV2ZWwgZHJpdmVycy4KKwlpaS4JVW5idXJkZW4gdGhlIGxvdyBsZXZlbCBkcml2ZXJzIGZyb20gaGF2aW5nIHRvIGV4cG9ydCB0aGUKKwkJY2hhcmFjdGVyIG5vZGUgZGV2aWNlIGFuZCByZWxhdGVkIGhhbmRsaW5nLgorCWlpaS4JSW1wbGVtZW50IGFueSBwb2xpY3kgbWVjaGFuaXNtcyBpbiBvbmUgcGxhY2UuCisJaXYuCUFwcGxpY2F0aW9ucyBoYXZlIHRvIGludGVyZmFjZSB3aXRoIG9ubHkgbW9kdWxlIGluc3RlYWQgb2YKKwkJbXVsdGlwbGUgbG93IGxldmVsIGRyaXZlcnMuCisKK0N1cnJlbnRseSB0aGlzIG1vZHVsZSAoY2FsbGVkIENvbW1vbiBNYW5hZ2VtZW50IE1vZHVsZSkgaXMgdXNlZCBvbmx5IHRvIGlzc3VlCitpb2N0bCBjb21tYW5kcy4gQnV0IHRoaXMgbW9kdWxlIGlzIGVudmlzaW9uZWQgdG8gaGFuZGxlIGFsbCB1c2VyIHNwYWNlIGxldmVsCitpbnRlcmFjdGlvbnMuIFNvIGFueSAncHJvYycsICdzeXNmcycgaW1wbGVtZW50YXRpb25zIHdpbGwgYmUgbG9jYWxpemVkIGluIHRoaXMKK2NvbW1vbiBtb2R1bGUuCisKK0NyZWRpdHM6CistLS0tLS0tCisKKyJTaGFyZWQgY29kZSBpbiBhIHRoaXJkIG1vZHVsZSwgYSAibGlicmFyeSBtb2R1bGUiLCBpcyBhbiBhY2NlcHRhYmxlCitzb2x1dGlvbi4gbW9kcHJvYmUgYXV0b21hdGljYWxseSBsb2FkcyBkZXBlbmRlbnQgbW9kdWxlcywgc28gdXNlcnMKK3J1bm5pbmcgIm1vZHByb2JlIGRyaXZlcjEiIG9yICJtb2Rwcm9iZSBkcml2ZXIyIiB3b3VsZCBhdXRvbWF0aWNhbGx5Citsb2FkIHRoZSBzaGFyZWQgbGlicmFyeSBtb2R1bGUuIgorCisJCS0gSmVmZiBHYXJ6aWsgKGpnYXJ6aWtAcG9ib3guY29tKSwgMDIuMjUuMjAwNCBMS01MCisKKyJBcyBKZWZmIGhpbnRlZCwgaWYgeW91ciB1c2Vyc3BhY2U8LT5kcml2ZXIgQVBJIGlzIGNvbnNpc3RlbnQgYmV0d2VlbgoreW91ciBuZXcgTVBULWJhc2VkIFJBSUQgY29udHJvbGxlcnMgYW5kIHlvdXIgZXhpc3RpbmcgbWVnYXJhaWQgZHJpdmVyLAordGhlbiBwZXJoYXBzIHlvdSBuZWVkIGEgc2luZ2xlIHNtYWxsIGhlbHBlciBtb2R1bGUgKGxzaWlvY3RsIG9yIHNvbWUKK2JldHRlciBuYW1lKSwgbG9hZGVkIGJ5IGJvdGggbXB0cmFpZCBhbmQgbWVnYXJhaWQgYXV0b21hdGljYWxseSwgd2hpY2gKK2hhbmRsZXMgcmVnaXN0ZXJpbmcgdGhlIC9kZXYvbWVnYXJhaWQgbm9kZSBkeW5hbWljYWxseS4gSW4gdGhpcyBjYXNlLAorYm90aCBtcHRyYWlkIGFuZCBtZWdhcmFpZCB3b3VsZCByZWdpc3RlciB3aXRoIGxzaWlvY3RsIGZvciBlYWNoCithZGFwdGVyIGRpc2NvdmVyZWQsIGFuZCBsc2lpb2N0bCB3b3VsZCBlc3NlbnRpYWxseSBiZSBhIHN3aXRjaCwKK3JlZGlyZWN0aW5nIHVzZXJzcGFjZSB0b29sIGlvY3RscyB0byB0aGUgYXBwcm9wcmlhdGUgZHJpdmVyLiIKKworCQktIE1hdHQgRG9tc2NoLCAoTWF0dF9Eb21zY2hAZGVsbC5jb20pLCAwMi4yNS4yMDA0IExLTUwKKworRGVzaWduOgorLS0tLS0tCisKK1RoZSBDb21tb24gTWFuYWdlbWVudCBNb2R1bGUgaXMgaW1wbGVtZW50ZWQgaW4gbWVnYXJhaWRfbW0uW2NoXSBmaWxlcy4gVGhpcworbW9kdWxlIGFjdHMgYXMgYSByZWdpc3RyeSBmb3IgbG93IGxldmVsIGhiYSBkcml2ZXJzLiBUaGUgbG93IGxldmVsIGRyaXZlcnMKKyhjdXJyZW50bHkgb25seSBtZWdhcmFpZCkgcmVnaXN0ZXIgZWFjaCBjb250cm9sbGVyIHdpdGggdGhlIGNvbW1vbiBtb2R1bGUuCisKK1RoZSBhcHBsaWNhdGlvbnMgaW50ZXJmYWNlIHdpdGggdGhlIGNvbW1vbiBtb2R1bGUgdmlhIHRoZSBjaGFyYWN0ZXIgZGV2aWNlCitub2RlIGV4cG9ydGVkIGJ5IHRoZSBtb2R1bGUuCisKK1RoZSBsb3dlciBsZXZlbCBkcml2ZXJzIG5vdyB1bmRlcnN0YW5kIG9ubHkgYSBuZXcgaW1wcm92ZWQgaW9jdGwgcGFja2V0IGNhbGxlZAordWlvY190LiBUaGUgbWFuYWdlbWVudCBtb2R1bGUgY29udmVydHMgdGhlIG9sZGVyIGlvY3RsIHBhY2tldHMgZnJvbSB0aGUgb2xkZXIKK2FwcGxpY2F0aW9ucyBpbnRvIHVpb2NfdC4gQWZ0ZXIgZHJpdmVyIGhhbmRsZXMgdGhlIHVpb2NfdCwgdGhlIGNvbW1vbiBtb2R1bGUKK3dpbGwgY29udmVydCB0aGF0IGJhY2sgaW50byB0aGUgb2xkIGZvcm1hdCBiZWZvcmUgcmV0dXJuaW5nIHRvIGFwcGxpY2F0aW9ucy4KKworQXMgbmV3IGFwcGxpY2F0aW9ucyBldm9sdmUgYW5kIHJlcGxhY2UgdGhlIG9sZCBvbmVzLCB0aGUgb2xkIHBhY2tldCBmb3JtYXQgCit3aWxsIGJlIHJldGlyZWQuCisKK0NvbW1vbiBtb2R1bGUgZGVkaWNhdGVzIG9uZSB1aW9jX3QgcGFja2V0IHRvIGVhY2ggY29udHJvbGxlciByZWdpc3RlcmVkLiBUaGlzCitjYW4gZWFzaWx5IGJlIG1vcmUgdGhhbiBvbmUuIEJ1dCBzaW5jZSBtZWdhcmFpZCBpcyB0aGUgb25seSBsb3cgbGV2ZWwgZHJpdmVyCit0b2RheSwgYW5kIGl0IGNhbiBoYW5kbGUgb25seSBvbmUgaW9jdGwsIHRoZXJlIGlzIG5vIHJlYXNvbiB0byBoYXZlIG1vcmUuIEJ1dAorYXMgbmV3IGNvbnRyb2xsZXIgY2xhc3NlcyBnZXQgYWRkZWQsIHRoaXMgd2lsbCBiZSB0dW5lZCBhcHByb3ByaWF0ZWx5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL25jcjUzYzh4eC50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvbmNyNTNjOHh4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTg2ZWZmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL25jcjUzYzh4eC50eHQKQEAgLTAsMCArMSwxODI0IEBACitUaGUgTGludXggTkNSNTNDOFhYL1NZTTUzQzhYWCBkcml2ZXJzIFJFQURNRSBmaWxlCisKK1dyaXR0ZW4gYnkgR2VyYXJkIFJvdWRpZXIgPGdyb3VkaWVyQGZyZWUuZnI+CisyMSBSdWUgQ2Fybm90Cis5NTE3MCBERVVJTCBMQSBCQVJSRSAtIEZSQU5DRQorCisyOSBNYXkgMTk5OQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisxLiAgSW50cm9kdWN0aW9uCisyLiAgU3VwcG9ydGVkIGNoaXBzIGFuZCBTQ1NJIGZlYXR1cmVzCiszLiAgQWR2YW50YWdlcyBvZiB0aGUgZW5oYW5jZWQgODk2IGRyaXZlcgorICAgICAgMy4xIE9wdGltaXplZCBTQ1NJIFNDUklQVFMKKyAgICAgIDMuMiBOZXcgZmVhdHVyZXMgb2YgdGhlIFNZTTUzQzg5NiAoNjQgYml0IFBDSSBkdWFsIExWRCBTQ1NJIGNvbnRyb2xsZXIpCis0LiAgTWVtb3J5IG1hcHBlZCBJL08gdmVyc3VzIG5vcm1hbCBJL08KKzUuICBUYWdnZWQgY29tbWFuZCBxdWV1ZWluZworNi4gIFBhcml0eSBjaGVja2luZworNy4gIFByb2ZpbGluZyBpbmZvcm1hdGlvbgorOC4gIENvbnRyb2wgY29tbWFuZHMKKyAgICAgIDguMSAgU2V0IG1pbmltdW0gc3luY2hyb25vdXMgcGVyaW9kCisgICAgICA4LjIgIFNldCB3aWRlIHNpemUKKyAgICAgIDguMyAgU2V0IG1heGltdW0gbnVtYmVyIG9mIGNvbmN1cnJlbnQgdGFnZ2VkIGNvbW1hbmRzCisgICAgICA4LjQgIFNldCBvcmRlciB0eXBlIGZvciB0YWdnZWQgY29tbWFuZAorICAgICAgOC41ICBTZXQgZGVidWcgbW9kZQorICAgICAgOC42ICBDbGVhciBwcm9maWxlIGNvdW50ZXJzCisgICAgICA4LjcgIFNldCBmbGFnIChub19kaXNjKQorICAgICAgOC44ICBTZXQgdmVyYm9zZSBsZXZlbAorICAgICAgOC45ICBSZXNldCBhbGwgbG9naWNhbCB1bml0cyBvZiBhIHRhcmdldAorICAgICAgOC4xMCBBYm9ydCBhbGwgdGFza3Mgb2YgYWxsIGxvZ2ljYWwgdW5pdHMgb2YgYSB0YXJnZXQKKzkuICBDb25maWd1cmF0aW9uIHBhcmFtZXRlcnMKKzEwLiBCb290IHNldHVwIGNvbW1hbmRzCisgICAgICAxMC4xIFN5bnRheAorICAgICAgMTAuMiBBdmFpbGFibGUgYXJndW1lbnRzCisgICAgICAgICAgICAgMTAuMi4xICBNYXN0ZXIgcGFyaXR5IGNoZWNraW5nCisgICAgICAgICAgICAgMTAuMi4yICBTY3NpIHBhcml0eSBjaGVja2luZworICAgICAgICAgICAgIDEwLjIuMyAgU2NzaSBkaXNjb25uZWN0aW9ucworICAgICAgICAgICAgIDEwLjIuNCAgU3BlY2lhbCBmZWF0dXJlcworICAgICAgICAgICAgIDEwLjIuNSAgVWx0cmEgU0NTSSBzdXBwb3J0CisgICAgICAgICAgICAgMTAuMi42ICBEZWZhdWx0IG51bWJlciBvZiB0YWdnZWQgY29tbWFuZHMKKyAgICAgICAgICAgICAxMC4yLjcgIERlZmF1bHQgc3luY2hyb25vdXMgcGVyaW9kIGZhY3RvcgorICAgICAgICAgICAgIDEwLjIuOCAgTmVnb3RpYXRlIHN5bmNocm9ub3VzIHdpdGggYWxsIGRldmljZXMKKyAgICAgICAgICAgICAxMC4yLjkgIFZlcmJvc2l0eSBsZXZlbAorICAgICAgICAgICAgIDEwLjIuMTAgRGVidWcgbW9kZQorICAgICAgICAgICAgIDEwLjIuMTEgQnVyc3QgbWF4CisgICAgICAgICAgICAgMTAuMi4xMiBMRUQgc3VwcG9ydAorICAgICAgICAgICAgIDEwLjIuMTMgTWF4IHdpZGUKKyAgICAgICAgICAgICAxMC4yLjE0IERpZmZlcmVudGlhbCBtb2RlCisgICAgICAgICAgICAgMTAuMi4xNSBJUlEgbW9kZQorICAgICAgICAgICAgIDEwLjIuMTYgUmV2ZXJzZSBwcm9iZQorICAgICAgICAgICAgIDEwLjIuMTcgRml4IHVwIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlCisgICAgICAgICAgICAgMTAuMi4xOCBTZXJpYWwgTlZSQU0KKyAgICAgICAgICAgICAxMC4yLjE5IENoZWNrIFNDU0kgQlVTIAorICAgICAgICAgICAgIDEwLjIuMjAgRXhjbHVkZSBhIGhvc3QgZnJvbSBiZWluZyBhdHRhY2hlZAorICAgICAgICAgICAgIDEwLjIuMjEgU3VnZ2VzdCBhIGRlZmF1bHQgU0NTSSBpZCBmb3IgaG9zdHMKKyAgICAgICAgICAgICAxMC4yLjIyIEVuYWJsZSB1c2Ugb2YgSU1NRURJQVRFIEFSQklUUkFUSU9OCisgICAgICAxMC4zIEFkdmlzZWQgYm9vdCBzZXR1cCBjb21tYW5kcworICAgICAgMTAuNCBQQ0kgY29uZmlndXJhdGlvbiBmaXgtdXAgYm9vdCBvcHRpb24KKyAgICAgIDEwLjUgU2VyaWFsIE5WUkFNIHN1cHBvcnQgYm9vdCBvcHRpb24KKyAgICAgIDEwLjYgU0NTSSBCVVMgY2hlY2tpbmcgYm9vdCBvcHRpb24KKyAgICAgIDEwLjcgSU1NRURJQVRFIEFSQklUUkFUSU9OIGJvb3Qgb3B0aW9uCisxMS4gU29tZSBjb25zdGFudHMgYW5kIGZsYWdzIG9mIHRoZSBuY3I1M2M4eHguaCBoZWFkZXIgZmlsZQorMTIuIEluc3RhbGxhdGlvbgorMTMuIEFyY2hpdGVjdHVyZSBkZXBlbmRlbnQgZmVhdHVyZXMKKzE0LiBLbm93biBwcm9ibGVtcworICAgICAgMTQuMSBUYWdnZWQgY29tbWFuZHMgd2l0aCBJb21lZ2EgSmF6IGRldmljZQorICAgICAgMTQuMiBEZXZpY2UgbmFtZXMgY2hhbmdlIHdoZW4gYW5vdGhlciBjb250cm9sbGVyIGlzIGFkZGVkCisgICAgICAxNC4zIFVzaW5nIG9ubHkgOCBiaXQgZGV2aWNlcyB3aXRoIGEgV0lERSBTQ1NJIGNvbnRyb2xsZXIuCisgICAgICAxNC40IFBvc3NpYmxlIGRhdGEgY29ycnVwdGlvbiBkdXJpbmcgYSBNZW1vcnkgV3JpdGUgYW5kIEludmFsaWRhdGUKKyAgICAgIDE0LjUgSVJRIHNoYXJpbmcgcHJvYmxlbXMKKzE1LiBTQ1NJIHByb2JsZW0gdHJvdWJsZXNob290aW5nCisgICAgICAxNS4xIFByb2JsZW0gdHJhY2tpbmcKKyAgICAgIDE1LjIgVW5kZXJzdGFuZGluZyBoYXJkd2FyZSBlcnJvciByZXBvcnRzCisxNi4gU3luY2hyb25vdXMgdHJhbnNmZXIgbmVnb3RpYXRpb24gdGFibGVzCisgICAgICAxNi4xIFN5bmNocm9ub3VzIHRpbWluZ3MgZm9yIDUzQzg3NSBhbmQgNTNDODYwIFVsdHJhLVNDU0kgY29udHJvbGxlcnMKKyAgICAgIDE2LjIgU3luY2hyb25vdXMgdGltaW5ncyBmb3IgZmFzdCBTQ1NJLTIgNTNDOFhYIGNvbnRyb2xsZXJzCisxNy4gU2VyaWFsIE5WUkFNIHN1cHBvcnQgKGJ5IFJpY2hhcmQgV2FsdGhhbSkKKyAgICAgIDE3LjEgRmVhdHVyZXMKKyAgICAgIDE3LjIgU3ltYmlvcyBOVlJBTSBsYXlvdXQKKyAgICAgIDE3LjMgVGVrcmFtICBOVlJBTSBsYXlvdXQKKzE4LiBTdXBwb3J0IGZvciBCaWcgRW5kaWFuCisgICAgICAxOC4xIEJpZyBFbmRpYW4gQ1BVCisgICAgICAxOC4yIE5DUiBjaGlwIGluIEJpZyBFbmRpYW4gbW9kZSBvZiBvcGVyYXRpb25zCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworMS4gSW50cm9kdWN0aW9uCisKK1RoZSBpbml0aWFsIExpbnV4IG5jcjUzYzh4eCBkcml2ZXIgaGFzIGJlZW4gYSBwb3J0IG9mIHRoZSBuY3IgZHJpdmVyIGZyb20gCitGcmVlQlNEIHRoYXQgaGFzIGJlZW4gYWNoaWV2ZWQgaW4gTm92ZW1iZXIgMTk5NSBieToKKyAgICAgICAgICBHZXJhcmQgUm91ZGllciAgICAgICAgICAgICAgPGdyb3VkaWVyQGZyZWUuZnI+CisKK1RoZSBvcmlnaW5hbCBkcml2ZXIgaGFzIGJlZW4gd3JpdHRlbiBmb3IgMzg2YnNkIGFuZCBGcmVlQlNEIGJ5OgorICAgICAgICAgIFdvbGZnYW5nIFN0YW5nbG1laWVyICAgICAgICA8d29sZkBjb2xvZ25lLmRlPgorICAgICAgICAgIFN0ZWZhbiBFc3NlciAgICAgICAgICAgICAgICA8c2VAbWkuVW5pLUtvZWxuLmRlPgorCitJdCBpcyBub3cgYXZhaWxhYmxlIGFzIGEgYnVuZGxlIG9mIDIgZHJpdmVyczoKKworLSBuY3I1M2M4eHggZ2VuZXJpYyBkcml2ZXIgdGhhdCBzdXBwb3J0cyBhbGwgdGhlIFNZTTUzQzhYWCBmYW1pbHkgaW5jbHVkaW5nIAorICB0aGUgZWFybGllc3QgODEwIHJldi4gMSwgdGhlIGxhdGVzdCA4OTYgKDIgY2hhbm5lbCBMVkQgU0NTSSBjb250cm9sbGVyKSBhbmQKKyAgdGhlIG5ldyA4OTVBICgxIGNoYW5uZWwgTFZEIFNDU0kgY29udHJvbGxlcikuCistIHN5bTUzYzh4eCBlbmhhbmNlZCBkcml2ZXIgKGEuay5hLiA4OTYgZHJpdmVycykgdGhhdCBkcm9wcyBzdXBwb3J0IG9mIG9sZGVzdCAKKyAgY2hpcHMgaW4gb3JkZXIgdG8gZ2FpbiBhZHZhbnRhZ2Ugb2YgbmV3IGZlYXR1cmVzLCBhcyBMT0FEL1NUT1JFIGluc3RydWN0aW9ucyAKKyAgYXZhaWxhYmxlIHNpbmNlIHRoZSA4MTBBIGFuZCBoYXJkd2FyZSBwaGFzZSBtaXNtYXRjaCBhdmFpbGFibGUgd2l0aCB0aGUgCisgIDg5NiBhbmQgdGhlIDg5NUEuCisKK1lvdSBjYW4gZmluZCB0ZWNobmljYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIE5DUiA4eHggZmFtaWx5IGluIHRoZQorUENJLUhPV1RPIHdyaXR0ZW4gYnkgTWljaGFlbCBXaWxsIGFuZCBpbiB0aGUgU0NTSS1IT1dUTyB3cml0dGVuIGJ5CitEcmV3IEVja2hhcmR0LgorCitJbmZvcm1hdGlvbiBhYm91dCBuZXcgY2hpcHMgaXMgYXZhaWxhYmxlIGF0IExTSUxPR0lDIHdlYiBzZXJ2ZXI6CisKKyAgICAgICAgICBodHRwOi8vd3d3LmxzaWxvZ2ljLmNvbS8KKworU0NTSSBzdGFuZGFyZCBkb2N1bWVudGF0aW9ucyBhcmUgYXZhaWxhYmxlIGF0IFNZTUJJT1MgZnRwIHNlcnZlcjoKKworICAgICAgICAgIGZ0cDovL2Z0cC5zeW1iaW9zLmNvbS8KKworVXNlZnVsIFNDU0kgdG9vbHMgd3JpdHRlbiBieSBFcmljIFlvdW5nZGFsZSBhcmUgYXZhaWxhYmxlIGF0IHRzeC0xMToKKworICAgICAgICAgIGZ0cDovL3RzeC0xMS5taXQuZWR1L3B1Yi9saW51eC9BTFBIQS9zY3NpL3Njc2lpbmZvLVguWS50YXIuZ3oKKyAgICAgICAgICBmdHA6Ly90c3gtMTEubWl0LmVkdS9wdWIvbGludXgvQUxQSEEvc2NzaS9zY3NpZGV2LVguWS50YXIuZ3oKKworVGhlc2UgdG9vbHMgYXJlIG5vdCBBTFBIQSBidXQgcXVpdGUgY2xlYW4gYW5kIHdvcmsgcXVpdGUgd2VsbC4KK0l0IGlzIGVzc2VudGlhbCB5b3UgaGF2ZSB0aGUgJ3Njc2lpbmZvJyBwYWNrYWdlLgorCitUaGlzIHNob3J0IGRvY3VtZW50YXRpb24gZGVzY3JpYmVzIHRoZSBmZWF0dXJlcyBvZiB0aGUgZ2VuZXJpYyBhbmQgZW5oYW5jZWQKK2RyaXZlcnMsIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBhbmQgY29udHJvbCBjb21tYW5kcyBhdmFpbGFibGUgdGhyb3VnaCAKK3RoZSBwcm9jIFNDU0kgZmlsZSBzeXN0ZW0gcmVhZCAvIHdyaXRlIG9wZXJhdGlvbnMuCisKK1RoaXMgZHJpdmVyIGhhcyBiZWVuIHRlc3RlZCBPSyB3aXRoIGxpbnV4L2kzODYsIExpbnV4L0FscGhhIGFuZCBMaW51eC9QUEMuCisKK0xhdGVzdCBkcml2ZXIgdmVyc2lvbiBhbmQgcGF0Y2hlcyBhcmUgYXZhaWxhYmxlIGF0OgorCisgICAgICAgICAgZnRwOi8vZnRwLnR1eC5vcmcvcHViL3Blb3BsZS9nZXJhcmQtcm91ZGllcgorb3IKKyAgICAgICAgICBmdHA6Ly9mdHAuc3ltYmlvcy5jb20vbWlycm9yL2Z0cC50dXgub3JnL3B1Yi90dXgvcm91ZGllci9kcml2ZXJzCisKK0kgYW0gbm90IGEgbmF0aXZlIHNwZWFrZXIgb2YgRW5nbGlzaCBhbmQgdGhlcmUgYXJlIHByb2JhYmx5IGxvdHMgb2YKK21pc3Rha2VzIGluIHRoaXMgUkVBRE1FIGZpbGUuIEFueSBoZWxwIHdpbGwgYmUgd2VsY29tZS4KKworCisyLiBTdXBwb3J0ZWQgY2hpcHMgYW5kIFNDU0kgZmVhdHVyZXMKKworVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkIGZvciBhbGwgY2hpcHM6CisKKwlTeW5jaHJvbm91cyBuZWdvdGlhdGlvbgorCURpc2Nvbm5lY3Rpb24KKwlUYWdnZWQgY29tbWFuZCBxdWV1aW5nCisJU0NTSSBwYXJpdHkgY2hlY2tpbmcKKwlNYXN0ZXIgcGFyaXR5IGNoZWNraW5nCisKKyJXaWRlIG5lZ290aWF0aW9uIiBpcyBzdXBwb3J0ZWQgZm9yIGNoaXBzIHRoYXQgYWxsb3cgaXQuICBUaGUKK2ZvbGxvd2luZyB0YWJsZSBzaG93cyBzb21lIGNoYXJhY3RlcmlzdGljcyBvZiBOQ1IgOHh4IGZhbWlseSBjaGlwcyAKK2FuZCB3aGF0IGRyaXZlcnMgc3VwcG9ydCB0aGVtLgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1cHBvcnRlZCBieSAgIFN1cHBvcnRlZCBieQorICAgICAgIE9uIGJvYXJkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZ2VuZXJpYyAgICB0aGUgZW5oYW5jZWQgCitDaGlwICAgU0RNUyBCSU9TICAgV2lkZSAgIFNDU0kgc3RkLiAgIE1heC4gc3luYyAgIGRyaXZlciAgICAgICAgIGRyaXZlcgorLS0tLSAgIC0tLS0tLS0tLSAgIC0tLS0gICAtLS0tLS0tLS0gICAtLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0gICAtLS0tLS0tLS0tLS0tCis4MTAgICAgICAgIE4gICAgICAgICBOICAgICAgRkFTVDEwICAgIDEwIE1CL3MgICAgICAgIFkgICAgICAgICAgICAgTgorODEwQSAgICAgICBOICAgICAgICAgTiAgICAgIEZBU1QxMCAgICAxMCBNQi9zICAgICAgICBZICAgICAgICAgICAgIFkKKzgxNSAgICAgICAgWSAgICAgICAgIE4gICAgICBGQVNUMTAgICAgMTAgTUIvcyAgICAgICAgWSAgICAgICAgICAgICBOCis4MjUgICAgICAgIFkgICAgICAgICBZICAgICAgRkFTVDEwICAgIDIwIE1CL3MgICAgICAgIFkgICAgICAgICAgICAgTgorODI1QSAgICAgICBZICAgICAgICAgWSAgICAgIEZBU1QxMCAgICAyMCBNQi9zICAgICAgICBZICAgICAgICAgICAgIFkKKzg2MCAgICAgICAgTiAgICAgICAgIE4gICAgICBGQVNUMjAgICAgMjAgTUIvcyAgICAgICAgWSAgICAgICAgICAgICBZCis4NzUgICAgICAgIFkgICAgICAgICBZICAgICAgRkFTVDIwICAgIDQwIE1CL3MgICAgICAgIFkgICAgICAgICAgICAgWQorODc2ICAgICAgICBZICAgICAgICAgWSAgICAgIEZBU1QyMCAgICA0MCBNQi9zICAgICAgICBZICAgICAgICAgICAgIFkKKzg5NSAgICAgICAgWSAgICAgICAgIFkgICAgICBGQVNUNDAgICAgODAgTUIvcyAgICAgICAgWSAgICAgICAgICAgICBZCis4OTVBICAgICAgIFkgICAgICAgICBZICAgICAgRkFTVDQwICAgIDgwIE1CL3MgICAgICAgIFkgICAgICAgICAgICAgWQorODk2ICAgICAgICBZICAgICAgICAgWSAgICAgIEZBU1Q0MCAgICA4MCBNQi9zICAgICAgICBZICAgICAgICAgICAgIFkKKzg5NyAgICAgICAgWSAgICAgICAgIFkgICAgICBGQVNUNDAgICAgODAgTUIvcyAgICAgICAgWSAgICAgICAgICAgICBZCisxNTEwRCAgICAgIFkgICAgICAgICBZICAgICAgRkFTVDQwICAgIDgwIE1CL3MgICAgICAgIFkgICAgICAgICAgICAgWQorMTAxMCAgICAgICBZICAgICAgICAgWSAgICAgIEZBU1Q4MCAgIDE2MCBNQi9zICAgICAgICBOICAgICAgICAgICAgIFkKKzEwMTBfNjYqICAgWSAgICAgICAgIFkgICAgICBGQVNUODAgICAxNjAgTUIvcyAgICAgICAgTiAgICAgICAgICAgICBZCisKKyogQ2hpcCBzdXBwb3J0cyAzM01IeiBhbmQgNjZNSHogUENJIGJ1c2VzLgorCisKK1N1bW1hcnkgb2Ygb3RoZXIgc3VwcG9ydGVkIGZlYXR1cmVzOgorCitNb2R1bGU6ICAgICAgICAgICAgICAgIGFsbG93IHRvIGxvYWQgdGhlIGRyaXZlcgorTWVtb3J5IG1hcHBlZCBJL086ICAgICBpbmNyZWFzZXMgcGVyZm9ybWFuY2UKK1Byb2ZpbGluZyBpbmZvcm1hdGlvbjogcmVhZCBvcGVyYXRpb25zIGZyb20gdGhlIHByb2MgU0NTSSBmaWxlIHN5c3RlbQorQ29udHJvbCBjb21tYW5kczogICAgICB3cml0ZSBvcGVyYXRpb25zIHRvIHRoZSBwcm9jIFNDU0kgZmlsZSBzeXN0ZW0KK0RlYnVnZ2luZyBpbmZvcm1hdGlvbjogd3JpdHRlbiB0byBzeXNsb2cgKGV4cGVydCBvbmx5KQorU2NhdHRlciAvIGdhdGhlcgorU2hhcmVkIGludGVycnVwdAorQm9vdCBzZXR1cCBjb21tYW5kcworU2VyaWFsIE5WUkFNOiAgICAgICAgICBTeW1iaW9zIGFuZCBUZWtyYW0gZm9ybWF0cworCisKKzMuIEFkdmFudGFnZXMgb2YgdGhlIGVuaGFuY2VkIDg5NiBkcml2ZXIKKworMy4xIE9wdGltaXplZCBTQ1NJIFNDUklQVFMuCisKK1RoZSA4MTBBLCA4MjVBLCA4NzUsIDg5NSwgODk2IGFuZCA4OTVBIHN1cHBvcnQgbmV3IFNDU0kgU0NSSVBUUyBpbnN0cnVjdGlvbnMgCituYW1lZCBMT0FEIGFuZCBTVE9SRSB0aGF0IGFsbG93IHRvIG1vdmUgdXAgdG8gMSBEV09SRCBmcm9tL3RvIGFuIElPIHJlZ2lzdGVyIAordG8vZnJvbSBtZW1vcnkgbXVjaCBmYXN0ZXIgdGhhdCB0aGUgTU9WRSBNRU1PUlkgaW5zdHJ1Y3Rpb24gdGhhdCBpcyBzdXBwb3J0ZWQgCitieSB0aGUgNTNjN3h4IGFuZCA1M2M4eHggZmFtaWx5LgorVGhlIExPQUQvU1RPUkUgaW5zdHJ1Y3Rpb25zIHN1cHBvcnQgYWJzb2x1dGUgYW5kIERTQSByZWxhdGl2ZSBhZGRyZXNzaW5nIAorbW9kZXMuICBUaGUgU0NTSSBTQ1JJUFRTIGhhZCBiZWVuIGVudGlyZWx5IHJld3JpdHRlbiB1c2luZyBMT0FEL1NUT1JFIGluc3RlYWQgCitvZiBNT1ZFIE1FTU9SWSBpbnN0cnVjdGlvbnMuCisKKzMuMiBOZXcgZmVhdHVyZXMgb2YgdGhlIFNZTTUzQzg5NiAoNjQgYml0IFBDSSBkdWFsIExWRCBTQ1NJIGNvbnRyb2xsZXIpCisKK1RoZSA4OTYgYW5kIHRoZSA4OTVBIGFsbG93cyBoYW5kbGluZyBvZiB0aGUgcGhhc2UgbWlzbWF0Y2ggY29udGV4dCBmcm9tIAorU0NSSVBUUyAoYXZvaWRzIHRoZSBwaGFzZSBtaXNtYXRjaCBpbnRlcnJ1cHQgdGhhdCBzdG9wcyB0aGUgU0NTSSBwcm9jZXNzb3IgCit1bnRpbCB0aGUgQyBjb2RlIGhhcyBzYXZlZCB0aGUgY29udGV4dCBvZiB0aGUgdHJhbnNmZXIpLgorSW1wbGVtZW50aW5nIHRoaXMgd2l0aG91dCB1c2luZyBMT0FEL1NUT1JFIGluc3RydWN0aW9ucyB3b3VsZCBiZSBwYWluZnVsIAorYW5kIEkgZGlkbid0IGV2ZW4gd2FudCB0byB0cnkgaXQuCisKK1RoZSA4OTYgY2hpcCBzdXBwb3J0cyA2NCBiaXQgUENJIHRyYW5zYWN0aW9ucyBhbmQgYWRkcmVzc2luZywgd2hpbGUgdGhlIAorODk1QSBzdXBwb3J0cyAzMiBiaXQgUENJIHRyYW5zYWN0aW9ucyBhbmQgNjQgYml0IGFkZHJlc3NpbmcuCitUaGUgU0NSSVBUUyBwcm9jZXNzb3Igb2YgdGhlc2UgY2hpcHMgaXMgbm90IHRydWUgNjQgYml0LCBidXQgdXNlcyBzZWdtZW50IAorcmVnaXN0ZXJzIGZvciBiaXQgMzItNjMuIEFub3RoZXIgaW50ZXJlc3RpbmcgZmVhdHVyZSBpcyB0aGF0IExPQUQvU1RPUkUgCitpbnN0cnVjdGlvbnMgdGhhdCBhZGRyZXNzIHRoZSBvbi1jaGlwIFJBTSAoOGspIHJlbWFpbiBpbnRlcm5hbCB0byB0aGUgY2hpcC4KKworRHVlIHRvIHRoZSB1c2Ugb2YgTE9BRC9TVE9SRSBTQ1JJUFRTIGluc3RydWN0aW9ucywgdGhpcyBkcml2ZXIgZG9lcyBub3QgCitzdXBwb3J0IHRoZSBmb2xsb3dpbmcgY2hpcHM6CistIFNZTTUzQzgxMCByZXZpc2lvbiA8IDB4MTAgKDE2KQorLSBTWU01M0M4MTUgYWxsIHJldmlzaW9ucworLSBTWU01M0M4MjUgcmV2aXNpb24gPCAweDEwICgxNikKKworNC4gTWVtb3J5IG1hcHBlZCBJL08gdmVyc3VzIG5vcm1hbCBJL08KKworTWVtb3J5IG1hcHBlZCBJL08gaGFzIGxlc3MgbGF0ZW5jeSB0aGFuIG5vcm1hbCBJL08uICBTaW5jZQorbGludXgtMS4zLngsIG1lbW9yeSBtYXBwZWQgSS9PIGlzIHVzZWQgcmF0aGVyIHRoYW4gbm9ybWFsIEkvTy4gIE1lbW9yeQorbWFwcGVkIEkvTyBzZWVtcyB0byB3b3JrIGZpbmUgb24gbW9zdCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucywgYnV0Citzb21lIHBvb3JseSBkZXNpZ25lZCBtb3RoZXJib2FyZHMgbWF5IGJyZWFrIHRoaXMgZmVhdHVyZS4KKworVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIENPTkZJR19TQ1NJX05DUjUzQzhYWF9JT01BUFBFRCBmb3JjZXMgdGhlCitkcml2ZXIgdG8gdXNlIG5vcm1hbCBJL08gaW4gYWxsIGNhc2VzLgorCisKKzUuIFRhZ2dlZCBjb21tYW5kIHF1ZXVlaW5nCisKK1F1ZXVpbmcgbW9yZSB0aGFuIDEgY29tbWFuZCBhdCBhIHRpbWUgdG8gYSBkZXZpY2UgYWxsb3dzIGl0IHRvIHBlcmZvcm0gCitvcHRpbWl6YXRpb25zIGJhc2VkIG9uIGFjdHVhbCBoZWFkIHBvc2l0aW9ucyBhbmQgaXRzIG1lY2hhbmljYWwgCitjaGFyYWN0ZXJpc3RpY3MuIFRoaXMgZmVhdHVyZSBtYXkgYWxzbyByZWR1Y2UgYXZlcmFnZSBjb21tYW5kIGxhdGVuY3kuCitJbiBvcmRlciB0byByZWFsbHkgZ2FpbiBhZHZhbnRhZ2Ugb2YgdGhpcyBmZWF0dXJlLCBkZXZpY2VzIG11c3QgaGF2ZSAKK2EgcmVhc29uYWJsZSBjYWNoZSBzaXplIChObyBtaXJhY2xlIGlzIHRvIGJlIGV4cGVjdGVkIGZvciBhIGxvdy1lbmQgCitoYXJkIGRpc2sgd2l0aCAxMjggS0Igb3IgbGVzcykuCitTb21lIGtub3duIFNDU0kgZGV2aWNlcyBkbyBub3QgcHJvcGVybHkgc3VwcG9ydCB0YWdnZWQgY29tbWFuZCBxdWV1aW5nLgorR2VuZXJhbGx5LCBmaXJtd2FyZSByZXZpc2lvbnMgdGhhdCBmaXggdGhpcyBraW5kIG9mIHByb2JsZW1zIGFyZSBhdmFpbGFibGUgCithdCByZXNwZWN0aXZlIHZlbmRvciB3ZWIvZnRwIHNpdGVzLgorQWxsIEkgY2FuIHNheSBpcyB0aGF0IHRoZSBoYXJkIGRpc2tzIEkgdXNlIG9uIG15IG1hY2hpbmVzIGJlaGF2ZSB3ZWxsIHdpdGggCit0aGlzIGRyaXZlciB3aXRoIHRhZ2dlZCBjb21tYW5kIHF1ZXVpbmcgZW5hYmxlZDoKKworLSBJQk0gUzEyIDA2NjIKKy0gQ29ubmVyIDEwODBTCistIFF1YW50dW0gQXRsYXMgSQorLSBRdWFudHVtIEF0bGFzIElJCisKK0lmIHlvdXIgY29udHJvbGxlciBoYXMgTlZSQU0sIHlvdSBjYW4gY29uZmlndXJlIHRoaXMgZmVhdHVyZSBwZXIgdGFyZ2V0IAorZnJvbSB0aGUgdXNlciBzZXR1cCB0b29sLiBUaGUgVGVrcmFtIFNldHVwIHByb2dyYW0gYWxsb3dzIHRvIHR1bmUgdGhlIAorbWF4aW11bSBudW1iZXIgb2YgcXVldWVkIGNvbW1hbmRzIHVwIHRvIDMyLiBUaGUgU3ltYmlvcyBTZXR1cCBvbmx5IGFsbG93cyAKK3RvIGVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZmVhdHVyZS4KKworVGhlIG1heGltdW0gbnVtYmVyIG9mIHNpbXVsdGFuZW91cyB0YWdnZWQgY29tbWFuZHMgcXVldWVkIHRvIGEgZGV2aWNlCitpcyBjdXJyZW50bHkgc2V0IHRvIDggYnkgZGVmYXVsdC4gIFRoaXMgdmFsdWUgaXMgc3VpdGFibGUgZm9yIG1vc3QgU0NTSQorZGlza3MuICBXaXRoIGxhcmdlIFNDU0kgZGlza3MgKD49IDJHQiwgY2FjaGUgPj0gNTEyS0IsIGF2ZXJhZ2Ugc2VlayB0aW1lCis8PSAxMCBtcyksIHVzaW5nIGEgbGFyZ2VyIHZhbHVlIG1heSBnaXZlIGJldHRlciBwZXJmb3JtYW5jZXMuCisKK1RoZSBzeW01M2M4eHggZHJpdmVyIHN1cHBvcnRzIHVwIHRvIDI1NSBjb21tYW5kcyBwZXIgZGV2aWNlLCBhbmQgdGhlIAorZ2VuZXJpYyBuY3I1M2M4eHggZHJpdmVyIHN1cHBvcnRzIHVwIHRvIDY0LCBidXQgdXNpbmcgbW9yZSB0aGFuIDMyIGlzIAorZ2VuZXJhbGx5IG5vdCB3b3J0aC13aGlsZSwgdW5sZXNzIHlvdSBhcmUgdXNpbmcgYSB2ZXJ5IGxhcmdlIGRpc2sgb3IgZGlzayAKK2FycmF5LiBJdCBpcyBub3RpY2VhYmxlIHRoYXQgbW9zdCBvZiByZWNlbnQgaGFyZCBkaXNrcyBzZWVtIG5vdCB0byBhY2NlcHQgCittb3JlIHRoYW4gNjQgc2ltdWx0YW5lb3VzIGNvbW1hbmRzLiBTbywgdXNpbmcgbW9yZSB0aGFuIDY0IHF1ZXVlZCBjb21tYW5kcyAKK2lzIHByb2JhYmx5IGp1c3QgcmVzb3VyY2Ugd2FzdGluZy4KKworSWYgeW91ciBjb250cm9sbGVyIGRvZXMgbm90IGhhdmUgTlZSQU0gb3IgaWYgaXQgaXMgbWFuYWdlZCBieSB0aGUgU0RNUyAKK0JJT1MvU0VUVVAsIHlvdSBjYW4gY29uZmlndXJlIHRhZ2dlZCBxdWV1ZWluZyBmZWF0dXJlIGFuZCBkZXZpY2UgcXVldWUgCitkZXB0aHMgZnJvbSB0aGUgYm9vdCBjb21tYW5kLWxpbmUuIEZvciBleGFtcGxlOgorCisgIG5jcjUzYzh4eD10YWdzOjQvdDJ0M3ExNS10NHE3L3QxdTBxMzIKKword2lsbCBzZXQgdGFnZ2VkIGNvbW1hbmRzIHF1ZXVlIGRlcHRocyBhcyBmb2xsb3c6CisKKy0gdGFyZ2V0IDIgIGFsbCBsdW5zICBvbiBjb250cm9sbGVyIDAgLS0+IDE1CistIHRhcmdldCAzICBhbGwgbHVucyAgb24gY29udHJvbGxlciAwIC0tPiAxNQorLSB0YXJnZXQgNCAgYWxsIGx1bnMgIG9uIGNvbnRyb2xsZXIgMCAtLT4gIDcKKy0gdGFyZ2V0IDEgIGx1biAwICAgICBvbiBjb250cm9sbGVyIDEgLS0+IDMyCistIGFsbCBvdGhlciB0YXJnZXQvbHVuICAgICAgICAgICAgICAgIC0tPiAgNAorCitJbiBzb21lIHNwZWNpYWwgY29uZGl0aW9ucywgc29tZSBTQ1NJIGRpc2sgZmlybXdhcmVzIG1heSByZXR1cm4gYQorUVVFVUUgRlVMTCBzdGF0dXMgZm9yIGEgU0NTSSBjb21tYW5kLiBUaGlzIGJlaGF2aW91ciBpcyBtYW5hZ2VkIGJ5IHRoZQorZHJpdmVyIHVzaW5nIHRoZSBmb2xsb3dpbmcgaGV1cmlzdGljOgorCistIEVhY2ggdGltZSBhIFFVRVVFIEZVTEwgc3RhdHVzIGlzIHJldHVybmVkLCB0YWdnZWQgcXVldWUgZGVwdGggaXMgcmVkdWNlZCAKKyAgdG8gdGhlIGFjdHVhbCBudW1iZXIgb2YgZGlzY29ubmVjdGVkIGNvbW1hbmRzLiAKKworLSBFdmVyeSAxMDAwIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQgU0NTSSBjb21tYW5kcywgaWYgYWxsb3dlZCBieSB0aGUKKyAgY3VycmVudCBsaW1pdCwgdGhlIG1heGltdW0gbnVtYmVyIG9mIHF1ZXVlYWJsZSBjb21tYW5kcyBpcyBpbmNyZW1lbnRlZC4KKworU2luY2UgUVVFVUUgRlVMTCBzdGF0dXMgcmVjZXB0aW9uIGFuZCBoYW5kbGluZyBpcyByZXNvdXJjZSB3YXN0aW5nLCB0aGUgCitkcml2ZXIgbm90aWZpZXMgYnkgZGVmYXVsdCB0aGlzIHByb2JsZW0gdG8gdXNlciBieSBpbmRpY2F0aW5nIHRoZSBhY3R1YWwgCitudW1iZXIgb2YgY29tbWFuZHMgdXNlZCBhbmQgdGhlaXIgc3RhdHVzLCBhcyB3ZWxsIGFzIGl0cyBkZWNpc2lvbiBvbiB0aGUgCitkZXZpY2UgcXVldWUgZGVwdGggY2hhbmdlLgorVGhlIGhldXJpc3RpYyB1c2VkIGJ5IHRoZSBkcml2ZXIgaW4gaGFuZGxpbmcgUVVFVUUgRlVMTCBlbnN1cmVzIHRoYXQgdGhlIAoraW1wYWN0IG9uIHBlcmZvcm1hbmNlcyBpcyBub3QgdG9vIGJhZC4gWW91IGNhbiBnZXQgcmlkIG9mIHRoZSBtZXNzYWdlcyBieSAKK3NldHRpbmcgdmVyYm9zZSBsZXZlbCB0byB6ZXJvLCBhcyBmb2xsb3c6CisKKzFzdCBtZXRob2Q6IGJvb3QgeW91ciBzeXN0ZW0gdXNpbmcgJ25jcjUzYzh4eD12ZXJiOjAnIG9wdGlvbi4KKzJuZCBtZXRob2Q6IGFwcGx5ICJzZXR2ZXJib3NlIDAiIGNvbnRyb2wgY29tbWFuZCB0byB0aGUgcHJvYyBmcyBlbnRyeSAKKyAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgdG8geW91ciBjb250cm9sbGVyIGFmdGVyIGJvb3QtdXAuCisKKzYuIFBhcml0eSBjaGVja2luZworCitUaGUgZHJpdmVyIHN1cHBvcnRzIFNDU0kgcGFyaXR5IGNoZWNraW5nIGFuZCBQQ0kgYnVzIG1hc3RlciBwYXJpdHkKK2NoZWNraW5nLiAgVGhlc2UgZmVhdHVyZXMgbXVzdCBiZSBlbmFibGVkIGluIG9yZGVyIHRvIGVuc3VyZSBzYWZlIGRhdGEKK3RyYW5zZmVycy4gIEhvd2V2ZXIsIHNvbWUgZmxhd2VkIGRldmljZXMgb3IgbW90aGVyIGJvYXJkcyB3aWxsIGhhdmUKK3Byb2JsZW1zIHdpdGggcGFyaXR5LiBZb3UgY2FuIGRpc2FibGUgZWl0aGVyIFBDSSBwYXJpdHkgb3IgU0NTSSBwYXJpdHkgCitjaGVja2luZyBieSBlbnRlcmluZyBhcHByb3ByaWF0ZSBvcHRpb25zIGZyb20gdGhlIGJvb3QgY29tbWFuZCBsaW5lLgorKFNlZSAxMDogQm9vdCBzZXR1cCBjb21tYW5kcykuCisKKzcuIFByb2ZpbGluZyBpbmZvcm1hdGlvbgorCitQcm9maWxpbmcgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIHByb2MgU0NTSSBmaWxlIHN5c3RlbS4KK1NpbmNlIGdhdGhlcmluZyBwcm9maWxpbmcgaW5mb3JtYXRpb24gbWF5IGltcGFjdCBwZXJmb3JtYW5jZXMsIHRoaXMgCitmZWF0dXJlIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgYW5kIHJlcXVpcmVzIGEgY29tcGlsYXRpb24gY29uZmlndXJhdGlvbiAKK29wdGlvbiB0byBiZSBzZXQgdG8gWS4KKworVGhlIGRldmljZSBhc3NvY2lhdGVkIHdpdGggYSBob3N0IGhhcyB0aGUgZm9sbG93aW5nIHBhdGhuYW1lOgorCisgICAgICAgICAgL3Byb2Mvc2NzaS9uY3I1M2M4eHgvTiAgICAgKE49MCwxLDIgLi4uLikKKworR2VuZXJhbGx5LCBvbmx5IDEgYm9hcmQgaXMgdXNlZCBvbiBoYXJkd2FyZSBjb25maWd1cmF0aW9uLCBhbmQgdGhhdCBkZXZpY2UgaXM6CisgICAgICAgICAgL3Byb2Mvc2NzaS9uY3I1M2M4eHgvMAorCitIb3dldmVyLCBpZiB0aGUgZHJpdmVyIGhhcyBiZWVuIG1hZGUgYXMgbW9kdWxlLCB0aGUgbnVtYmVyIG9mIHRoZQoraG9zdHMgaXMgaW5jcmVtZW50ZWQgZWFjaCB0aW1lIHRoZSBkcml2ZXIgaXMgbG9hZGVkLgorCitJbiBvcmRlciB0byBkaXNwbGF5IHByb2ZpbGluZyBpbmZvcm1hdGlvbiwganVzdCBlbnRlcjoKKworICAgICAgICAgY2F0IC9wcm9jL3Njc2kvbmNyNTNjOHh4LzAKKworYW5kIHlvdSB3aWxsIGdldCBzb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nIHRleHQ6CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0dlbmVyYWwgaW5mb3JtYXRpb246CisgIENoaXAgTkNSNTNDODEwLCBkZXZpY2UgaWQgMHgxLCByZXZpc2lvbiBpZCAweDIKKyAgSU8gcG9ydCBhZGRyZXNzIDB4NjAwMCwgSVJRIG51bWJlciAxMAorICBVc2luZyBtZW1vcnkgbWFwcGVkIElPIGF0IHZpcnR1YWwgYWRkcmVzcyAweDI4MmMwMDAKKyAgU3luY2hyb25vdXMgdHJhbnNmZXIgcGVyaW9kIDI1LCBtYXggY29tbWFuZHMgcGVyIGx1biA0CitQcm9maWxpbmcgaW5mb3JtYXRpb246CisgIG51bV90cmFucyAgICA9IDE4MDE0CisgIG51bV9rYnl0ZXMgICA9IDY3MTMxNAorICBudW1fZGlzYyAgICAgPSAyNTc2MworICBudW1fYnJlYWsgICAgPSAxNjczCisgIG51bV9pbnQgICAgICA9IDE2ODUKKyAgbnVtX2ZseSAgICAgID0gMTgwMzgKKyAgbXNfc2V0dXAgICAgID0gNDk0MAorICBtc19kYXRhICAgICAgPSAzNjk5NDAKKyAgbXNfZGlzYyAgICAgID0gMTgzMDkwCisgIG1zX3Bvc3QgICAgICA9IDEzMjAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworR2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBlYXN5IHRvIHVuZGVyc3RhbmQuIFRoZSBkZXZpY2UgSUQgYW5kIHRoZQorcmV2aXNpb24gSUQgaWRlbnRpZnkgdGhlIFNDU0kgY2hpcCBhcyBmb2xsb3dzOgorCitDaGlwICAgIERldmljZSBpZCAgICAgUmV2aXNpb24gSWQKKy0tLS0gICAgLS0tLS0tLS0tICAgICAtLS0tLS0tLS0tLQorODEwICAgICAgIDB4MSAgICAgICAgICAgIDwgIDB4MTAKKzgxMEEgICAgICAweDEgICAgICAgICAgICA+PSAweDEwCis4MTUgICAgICAgMHg0Cis4MjUgICAgICAgMHgzICAgICAgICAgICAgPCAgMHgxMAorODYwICAgICAgIDB4NgorODI1QSAgICAgIDB4MyAgICAgICAgICAgID49IDB4MTAKKzg3NSAgICAgICAweGYKKzg5NSAgICAgICAweGMKKworVGhlIHByb2ZpbGluZyBpbmZvcm1hdGlvbiBpcyB1cGRhdGVkIHVwb24gY29tcGxldGlvbiBvZiBTQ1NJIGNvbW1hbmRzLgorQSBkYXRhIHN0cnVjdHVyZSBpcyBhbGxvY2F0ZWQgYW5kIHplcm9lZCB3aGVuIHRoZSBob3N0IGFkYXB0ZXIgaXMKK2F0dGFjaGVkLiBTbywgaWYgdGhlIGRyaXZlciBpcyBhIG1vZHVsZSwgdGhlIHByb2ZpbGUgY291bnRlcnMgYXJlCitjbGVhcmVkIGVhY2ggdGltZSB0aGUgZHJpdmVyIGlzIGxvYWRlZC4gIFRoZSAiY2xlYXJwcm9mIiBjb21tYW5kCithbGxvd3MgeW91IHRvIGNsZWFyIHRoZXNlIGNvdW50ZXJzIGF0IGFueSB0aW1lLgorCitUaGUgZm9sbG93aW5nIGNvdW50ZXJzIGFyZSBhdmFpbGFibGU6CisKKygibnVtIiBwcmVmaXggbWVhbnMgIm51bWJlciBvZiIsCisibXMiIG1lYW5zIG1pbGxpLXNlY29uZHMpCisKK251bV90cmFucworCU51bWJlciBvZiBjb21wbGV0ZWQgY29tbWFuZHMKKwlFeGFtcGxlIGFib3ZlOiAxODAxNCBjb21wbGV0ZWQgY29tbWFuZHMKKworbnVtX2tieXRlcworCU51bWJlciBvZiBrYnl0ZXMgdHJhbnNmZXJyZWQKKwlFeGFtcGxlIGFib3ZlOiA2NzEgTUIgdHJhbnNmZXJyZWQKKworbnVtX2Rpc2MKKwlOdW1iZXIgb2YgU0NTSSBkaXNjb25uZWN0aW9ucworCUV4YW1wbGUgYWJvdmU6IDI1NzYzIFNDU0kgZGlzY29ubmVjdGlvbnMKKworbnVtX2JyZWFrCisJbnVtYmVyIG9mIHNjcmlwdCBpbnRlcnJ1cHRpb25zIChwaGFzZSBtaXNtYXRjaCkKKwlFeGFtcGxlIGFib3ZlOiAxNjczIHNjcmlwdCBpbnRlcnJ1cHRpb25zCisKK251bV9pbnQKKwlOdW1iZXIgb2YgaW50ZXJydXB0cyBvdGhlciB0aGFuICJvbiB0aGUgZmx5IgorCUV4YW1wbGUgYWJvdmU6IDE2ODUgaW50ZXJydXB0aW9ucyBub3QgIm9uIHRoZSBmbHkiCisKK251bV9mbHkKKwlOdW1iZXIgb2YgaW50ZXJydXB0cyAib24gdGhlIGZseSIKKwlFeGFtcGxlIGFib3ZlOiAxODAzOCBpbnRlcnJ1cHRpb25zICJvbiB0aGUgZmx5IgorCittc19zZXR1cAorCUVsYXBzZWQgdGltZSBmb3IgU0NTSSBjb21tYW5kcyBzZXR1cHMKKwlFeGFtcGxlIGFib3ZlOiA0Ljk0IHNlY29uZHMKKworbXNfZGF0YQorCUVsYXBzZWQgdGltZSBmb3IgZGF0YSB0cmFuc2ZlcnMKKwlFeGFtcGxlIGFib3ZlOiAzNjkuOTQgc2Vjb25kcyBzcGVudCBmb3IgZGF0YSB0cmFuc2ZlcgorCittc19kaXNjCisJRWxhcHNlZCB0aW1lIGZvciBTQ1NJIGRpc2Nvbm5lY3Rpb25zCisJRXhhbXBsZSBhYm92ZTogMTgzLjA5IHNlY29uZHMgc3BlbnQgZGlzY29ubmVjdGVkCisKK21zX3Bvc3QKKwlFbGFwc2VkIHRpbWUgZm9yIGNvbW1hbmQgcG9zdCBwcm9jZXNzaW5nCisJKHRpbWUgZnJvbSBTQ1NJIHN0YXR1cyBnZXQgdG8gY29tbWFuZCBjb21wbGV0aW9uIGNhbGwpCisJRXhhbXBsZSBhYm92ZTogMS4zMiBzZWNvbmRzIHNwZW50IGZvciBwb3N0IHByb2Nlc3NpbmcKKworRHVlIHRvIHRoZSAxLzEwMCBzZWNvbmQgdGljayBvZiB0aGUgc3lzdGVtIGNsb2NrLCAibXNfcG9zdCIgdGltZSBtYXkKK2JlIHdyb25nLgorCitJbiB0aGUgZXhhbXBsZSBhYm92ZSwgd2UgZ290IDE4MDM4IGludGVycnVwdHMgIm9uIHRoZSBmbHkiIGFuZCBvbmx5CisxNjczIHNjcmlwdCBicmVha3MgZ2VuZXJhbGx5IGR1ZSB0byBkaXNjb25uZWN0aW9ucyBpbnNpZGUgYSBzZWdtZW50IAorb2YgdGhlIHNjYXR0ZXIgbGlzdC4KKworCis4LiBDb250cm9sIGNvbW1hbmRzCisKK0NvbnRyb2wgY29tbWFuZHMgY2FuIGJlIHNlbnQgdG8gdGhlIGRyaXZlciB3aXRoIHdyaXRlIG9wZXJhdGlvbnMgdG8KK3RoZSBwcm9jIFNDU0kgZmlsZSBzeXN0ZW0uIFRoZSBnZW5lcmljIGNvbW1hbmQgc3ludGF4IGlzIHRoZQorZm9sbG93aW5nOgorCisgICAgICBlY2hvICI8dmVyYj4gPHBhcmFtZXRlcnM+IiA+L3Byb2Mvc2NzaS9uY3I1M2M4eHgvMAorICAgICAgKGFzc3VtZXMgY29udHJvbGxlciBudW1iZXIgaXMgMCkKKworVXNpbmcgImFsbCIgZm9yICI8dGFyZ2V0PiIgcGFyYW1ldGVyIHdpdGggdGhlIGNvbW1hbmRzIGJlbG93IHdpbGwKK2FwcGx5IHRvIGFsbCB0YXJnZXRzIG9mIHRoZSBTQ1NJIGNoYWluIChleGNlcHQgdGhlIGNvbnRyb2xsZXIpLgorCitBdmFpbGFibGUgY29tbWFuZHM6CisKKzguMSBTZXQgbWluaW11bSBzeW5jaHJvbm91cyBwZXJpb2QgZmFjdG9yCisKKyAgICBzZXRzeW5jIDx0YXJnZXQ+IDxwZXJpb2QgZmFjdG9yPgorCisgICAgdGFyZ2V0OiAgICB0YXJnZXQgbnVtYmVyCisgICAgcGVyaW9kOiAgICBtaW5pbXVtIHN5bmNocm9ub3VzIHBlcmlvZC4KKyAgICAgICAgICAgICAgIE1heGltdW0gc3BlZWQgPSAxMDAwLyg0KnBlcmlvZCBmYWN0b3IpIGV4Y2VwdCBmb3Igc3BlY2lhbAorICAgICAgICAgICAgICAgY2FzZXMgYmVsb3cuCisKKyAgICBTcGVjaWZ5IGEgcGVyaW9kIG9mIDI1NSwgdG8gZm9yY2UgYXN5bmNocm9ub3VzIHRyYW5zZmVyIG1vZGUuCisKKyAgICAgIDEwIG1lYW5zIDI1IG5hbm8tc2Vjb25kcyBzeW5jaHJvbm91cyBwZXJpb2QKKyAgICAgIDExIG1lYW5zIDMwIG5hbm8tc2Vjb25kcyBzeW5jaHJvbm91cyBwZXJpb2QKKyAgICAgIDEyIG1lYW5zIDUwIG5hbm8tc2Vjb25kcyBzeW5jaHJvbm91cyBwZXJpb2QKKworOC4yIFNldCB3aWRlIHNpemUKKworICAgIHNldHdpZGUgPHRhcmdldD4gPHNpemU+CisKKyAgICB0YXJnZXQ6ICAgIHRhcmdldCBudW1iZXIKKyAgICBzaXplOiAgICAgIDA9OCBiaXRzLCAxPTE2Yml0cworCis4LjMgU2V0IG1heGltdW0gbnVtYmVyIG9mIGNvbmN1cnJlbnQgdGFnZ2VkIGNvbW1hbmRzCisgCisgICAgc2V0dGFncyA8dGFyZ2V0PiA8dGFncz4KKworICAgIHRhcmdldDogICAgdGFyZ2V0IG51bWJlcgorICAgIHRhZ3M6ICAgICAgbnVtYmVyIG9mIGNvbmN1cnJlbnQgdGFnZ2VkIGNvbW1hbmRzCisgICAgICAgICAgICAgICBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gU0NTSV9OQ1JfTUFYX1RBR1MgKGRlZmF1bHQ6IDgpCisKKzguNCBTZXQgb3JkZXIgdHlwZSBmb3IgdGFnZ2VkIGNvbW1hbmQKKworICAgIHNldG9yZGVyIDxvcmRlcj4KKworICAgIG9yZGVyOiAgICAgMyBwb3NzaWJsZSB2YWx1ZXM6CisgICAgICAgICAgICAgICBzaW1wbGU6IHVzZSBTSU1QTEUgVEFHIGZvciBhbGwgb3BlcmF0aW9ucyAocmVhZCBhbmQgd3JpdGUpCisgICAgICAgICAgICAgICBvcmRlcmVkOiB1c2UgT1JERVJFRCBUQUcgZm9yIGFsbCBvcGVyYXRpb25zCisgICAgICAgICAgICAgICBkZWZhdWx0OiB1c2UgZGVmYXVsdCB0YWcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNJTVBMRSAgVEFHIGZvciByZWFkICBvcGVyYXRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICBPUkRFUkVEIFRBRyBmb3Igd3JpdGUgb3BlcmF0aW9ucworCisKKzguNSBTZXQgZGVidWcgbW9kZQorCisgICAgc2V0ZGVidWcgPGxpc3Qgb2YgZGVidWcgZmxhZ3M+CisKKyAgICBBdmFpbGFibGUgZGVidWcgZmxhZ3M6CisgICAgICAgIGFsbG9jOiAgIHByaW50IGluZm8gYWJvdXQgbWVtb3J5IGFsbG9jYXRpb25zIChjY2IsIGxjYikKKyAgICAgICAgcXVldWU6ICAgcHJpbnQgaW5mbyBhYm91dCBpbnNlcnRpb25zIGludG8gdGhlIGNvbW1hbmQgc3RhcnQgcXVldWUKKyAgICAgICAgcmVzdWx0OiAgcHJpbnQgc2Vuc2UgZGF0YSBvbiBDSEVDSyBDT05ESVRJT04gc3RhdHVzCisgICAgICAgIHNjYXR0ZXI6IHByaW50IGluZm8gYWJvdXQgdGhlIHNjYXR0ZXIgcHJvY2VzcworICAgICAgICBzY3JpcHRzOiBwcmludCBpbmZvIGFib3V0IHRoZSBzY3JpcHQgYmluZGluZyBwcm9jZXNzCisJdGlueTogICAgcHJpbnQgbWluaW1hbCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24KKwl0aW1pbmc6ICBwcmludCB0aW1pbmcgaW5mb3JtYXRpb24gb2YgdGhlIE5DUiBjaGlwCisJbmVnbzogICAgcHJpbnQgaW5mb3JtYXRpb24gYWJvdXQgU0NTSSBuZWdvdGlhdGlvbnMKKwlwaGFzZTogICBwcmludCBpbmZvcm1hdGlvbiBvbiBzY3JpcHQgaW50ZXJydXB0aW9ucworCisgICAgVXNlICJzZXRkZWJ1ZyIgd2l0aCBubyBhcmd1bWVudCB0byByZXNldCBkZWJ1ZyBmbGFncy4KKworCis4LjYgQ2xlYXIgcHJvZmlsZSBjb3VudGVycworCisgICAgY2xlYXJwcm9mCisKKyAgICBUaGUgcHJvZmlsZSBjb3VudGVycyBhcmUgYXV0b21hdGljYWxseSBjbGVhcmVkIHdoZW4gdGhlIGFtb3VudCBvZgorICAgIGRhdGEgdHJhbnNmZXJyZWQgcmVhY2hlcyAxMDAwIEdCIGluIG9yZGVyIHRvIGF2b2lkIG92ZXJmbG93LgorICAgIFRoZSAiY2xlYXJwcm9mIiBjb21tYW5kIGFsbG93cyB5b3UgdG8gY2xlYXIgdGhlc2UgY291bnRlcnMgYXQgYW55IHRpbWUuCisKKworOC43IFNldCBmbGFnIChub19kaXNjKQorIAorICAgIHNldGZsYWcgPHRhcmdldD4gPGZsYWc+CisKKyAgICB0YXJnZXQ6ICAgIHRhcmdldCBudW1iZXIKKworICAgIEZvciB0aGUgbW9tZW50LCBvbmx5IG9uZSBmbGFnIGlzIGF2YWlsYWJsZToKKworICAgICAgICBub19kaXNjOiAgIG5vdCBhbGxvdyB0YXJnZXQgdG8gZGlzY29ubmVjdC4KKworICAgIERvIG5vdCBzcGVjaWZ5IGFueSBmbGFnIGluIG9yZGVyIHRvIHJlc2V0IHRoZSBmbGFnLiBGb3IgZXhhbXBsZToKKyAgICAtIHNldGZsYWcgNAorICAgICAgd2lsbCByZXNldCBub19kaXNjIGZsYWcgZm9yIHRhcmdldCA0LCBzbyB3aWxsIGFsbG93IGl0IGRpc2Nvbm5lY3Rpb25zLgorICAgIC0gc2V0ZmxhZyBhbGwKKyAgICAgIHdpbGwgYWxsb3cgZGlzY29ubmVjdGlvbiBmb3IgYWxsIGRldmljZXMgb24gdGhlIFNDU0kgYnVzLgorCisKKzguOCBTZXQgdmVyYm9zZSBsZXZlbAorCisgICAgc2V0dmVyYm9zZSAjbGV2ZWwKKworICAgIFRoZSBkcml2ZXIgZGVmYXVsdCB2ZXJib3NlIGxldmVsIGlzIDEuIFRoaXMgY29tbWFuZCBhbGxvd3MgdG8gY2hhbmdlIAorICAgIHRoIGRyaXZlciB2ZXJib3NlIGxldmVsIGFmdGVyIGJvb3QtdXAuCisKKzguOSBSZXNldCBhbGwgbG9naWNhbCB1bml0cyBvZiBhIHRhcmdldAorCisgICAgcmVzZXRkZXYgPHRhcmdldD4KKworICAgIHRhcmdldDogICAgdGFyZ2V0IG51bWJlcgorICAgIFRoZSBkcml2ZXIgd2lsbCB0cnkgdG8gc2VuZCBhIEJVUyBERVZJQ0UgUkVTRVQgbWVzc2FnZSB0byB0aGUgdGFyZ2V0LgorICAgIChPbmx5IHN1cHBvcnRlZCBieSB0aGUgU1lNNTNDOFhYIGRyaXZlciBhbmQgcHJvdmlkZWQgZm9yIHRlc3QgcHVycG9zZSkKKworOC4xMCBBYm9ydCBhbGwgdGFza3Mgb2YgYWxsIGxvZ2ljYWwgdW5pdHMgb2YgYSB0YXJnZXQKKworICAgIGNsZWFyZGV2IDx0YXJnZXQ+CisKKyAgICB0YXJnZXQ6ICAgIHRhcmdldCBudW1iZXIKKyAgICBUaGUgZHJpdmVyIHdpbGwgdHJ5IHRvIHNlbmQgYSBBQk9SVCBtZXNzYWdlIHRvIGFsbCB0aGUgbG9naWNhbCB1bml0cyAKKyAgICBvZiB0aGUgdGFyZ2V0LgorICAgIChPbmx5IHN1cHBvcnRlZCBieSB0aGUgU1lNNTNDOFhYIGRyaXZlciBhbmQgcHJvdmlkZWQgZm9yIHRlc3QgcHVycG9zZSkKKworCis5LiBDb25maWd1cmF0aW9uIHBhcmFtZXRlcnMKKworSWYgdGhlIGZpcm13YXJlIG9mIGFsbCB5b3VyIGRldmljZXMgaXMgcGVyZmVjdCBlbm91Z2gsIGFsbCB0aGUKK2ZlYXR1cmVzIHN1cHBvcnRlZCBieSB0aGUgZHJpdmVyIGNhbiBiZSBlbmFibGVkIGF0IHN0YXJ0LXVwLiAgSG93ZXZlciwKK2lmIG9ubHkgb25lIGhhcyBhIGZsYXcgZm9yIHNvbWUgU0NTSSBmZWF0dXJlLCB5b3UgY2FuIGRpc2FibGUgdGhlCitzdXBwb3J0IGJ5IHRoZSBkcml2ZXIgb2YgdGhpcyBmZWF0dXJlIGF0IGxpbnV4IHN0YXJ0LXVwIGFuZCBlbmFibGUKK3RoaXMgZmVhdHVyZSBhZnRlciBib290LXVwIG9ubHkgZm9yIGRldmljZXMgdGhhdCBzdXBwb3J0IGl0IHNhZmVseS4KKworQ09ORklHX1NDU0lfTkNSNTNDOFhYX0lPTUFQUEVEICAgICAgIChkZWZhdWx0IGFuc3dlcjogbikKKyAgICBBbnN3ZXIgInkiIGlmIHlvdSBzdXNwZWN0IHlvdXIgbW90aGVyIGJvYXJkIHRvIG5vdCBhbGxvdyBtZW1vcnkgbWFwcGVkIEkvTy4KKyAgICBNYXkgc2xvdyBkb3duIHBlcmZvcm1hbmNlIGEgbGl0dGxlLiAgVGhpcyBvcHRpb24gaXMgcmVxdWlyZWQgYnkKKyAgICBMaW51eC9QUEMgYW5kIGlzIHVzZWQgbm8gbWF0dGVyIHdoYXQgeW91IHNlbGVjdCBoZXJlLiAgTGludXgvUFBDCisgICAgc3VmZmVycyBubyBwZXJmb3JtYW5jZSBsb3NzIHdpdGggdGhpcyBvcHRpb24gc2luY2UgYWxsIElPIGlzIG1lbW9yeQorICAgIG1hcHBlZCBhbnl3YXkuCisKK0NPTkZJR19TQ1NJX05DUjUzQzhYWF9ERUZBVUxUX1RBR1MgICAgKGRlZmF1bHQgYW5zd2VyOiA4KQorICAgIERlZmF1bHQgdGFnZ2VkIGNvbW1hbmQgcXVldWUgZGVwdGguCisKK0NPTkZJR19TQ1NJX05DUjUzQzhYWF9NQVhfVEFHUyAgICAgICAgIChkZWZhdWx0IGFuc3dlcjogOCkKKyAgICBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG1heGltdW0gbnVtYmVyIG9mIHRhZ2dlZCBjb21tYW5kcyAKKyAgICB0aGF0IGNhbiBiZSBxdWV1ZWQgdG8gYSBkZXZpY2UuIFRoZSBtYXhpbXVtIHN1cHBvcnRlZCB2YWx1ZSBpcyAzMi4KKworQ09ORklHX1NDU0lfTkNSNTNDOFhYX1NZTkMgICAgICAgICAgICAoZGVmYXVsdCBhbnN3ZXI6IDUpCisgICAgVGhpcyBvcHRpb24gYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBmcmVxdWVuY3kgaW4gTUh6IHRoZSBkcml2ZXIgCisgICAgd2lsbCB1c2UgYXQgYm9vdCB0aW1lIGZvciBzeW5jaHJvbm91cyBkYXRhIHRyYW5zZmVyIG5lZ290aWF0aW9ucy4KKyAgICBUaGlzIGZyZXF1ZW5jeSBjYW4gYmUgY2hhbmdlZCBsYXRlciB3aXRoIHRoZSAic2V0c3luYyIgY29udHJvbCBjb21tYW5kLgorICAgIDAgbWVhbnMgImFzeW5jaHJvbm91cyBkYXRhIHRyYW5zZmVycyIuCisKK0NPTkZJR19TQ1NJX05DUjUzQzhYWF9GT1JDRV9TWU5DX05FR08gKGRlZmF1bHQgYW5zd2VyOiBuKQorICAgIEZvcmNlIHN5bmNocm9ub3VzIG5lZ290aWF0aW9uIGZvciBhbGwgU0NTSS0yIGRldmljZXMuCisgICAgU29tZSBTQ1NJLTIgZGV2aWNlcyBkbyBub3QgcmVwb3J0IHRoaXMgZmVhdHVyZSBpbiBieXRlIDcgb2YgaW5xdWlyeSAKKyAgICByZXNwb25zZSBidXQgZG8gc3VwcG9ydCBpdCBwcm9wZXJseSAoVEFNQVJBQ0sgc2Nhbm5lcnMgZm9yIGV4YW1wbGUpLgorCitDT05GSUdfU0NTSV9OQ1I1M0M4WFhfTk9fRElTQ09OTkVDVCAgIChkZWZhdWx0IGFuZCBvbmx5IHJlYXNvbmFibGUgYW5zd2VyOiBuKQorICAgIElmIHlvdSBzdXNwZWN0IGEgZGV2aWNlIG9mIHlvdXJzIGRvZXMgbm90IHByb3Blcmx5IHN1cHBvcnQgZGlzY29ubmVjdGlvbnMsCisgICAgeW91IGNhbiBhbnN3ZXIgInkiLiBUaGVuLCBhbGwgU0NTSSBkZXZpY2VzIHdpbGwgbmV2ZXIgZGlzY29ubmVjdCB0aGUgYnVzIAorICAgIGV2ZW4gd2hpbGUgcGVyZm9ybWluZyBsb25nIFNDU0kgb3BlcmF0aW9ucy4KKworQ09ORklHX1NDU0lfTkNSNTNDOFhYX1NZTUJJT1NfQ09NUEFUCisgICAgR2VudWluZSBTWU1CSU9TIGJvYXJkcyB1c2UgR1BJTzAgaW4gb3V0cHV0IGZvciBjb250cm9sbGVyIExFRCBhbmQgR1BJTzMgCisgICAgYml0IGFzIGEgZmxhZyBpbmRpY2F0aW5nIHNpbmdsZWQtZW5kZWQvZGlmZmVyZW50aWFsIGludGVyZmFjZS4KKyAgICBJZiBhbGwgdGhlIGJvYXJkcyBvZiB5b3VyIHN5c3RlbSBhcmUgZ2VudWluZSBTWU1CSU9TIGJvYXJkcyBvciB1c2UKKyAgICBCSU9TIGFuZCBkcml2ZXJzIGZyb20gU1lNQklPUywgeW91IHdvdWxkIHdhbnQgdG8gZW5hYmxlIHRoaXMgb3B0aW9uLgorICAgIFRoaXMgb3B0aW9uIG11c3QgTk9UIGJlIGVuYWJsZWQgaWYgeW91ciBzeXN0ZW0gaGFzIGF0IGxlYXN0IG9uZSA1M0M4WFggCisgICAgYmFzZWQgc2NzaSBib2FyZCB3aXRoIGEgdmVuZG9yLXNwZWNpZmljIEJJT1MuCisgICAgRm9yIGV4YW1wbGUsIFRla3JhbSBEQy0zOTAvVSwgREMtMzkwL1cgYW5kIERDLTM5MC9GIHNjc2kgY29udHJvbGxlcnMgCisgICAgdXNlIGEgdmVuZG9yLXNwZWNpZmljIEJJT1MgYW5kIGFyZSBrbm93biB0byBub3QgdXNlIFNZTUJJT1MgY29tcGF0aWJsZSAKKyAgICBHUElPIHdpcmluZy4gU28sIHRoaXMgb3B0aW9uIG11c3Qgbm90IGJlIGVuYWJsZWQgaWYgeW91ciBzeXN0ZW0gaGFzIAorICAgIHN1Y2ggYSBib2FyZCBpbnN0YWxsZWQuCisKK0NPTkZJR19TQ1NJX05DUjUzQzhYWF9OVlJBTV9ERVRFQ1QKKyAgICBFbmFibGUgc3VwcG9ydCBmb3IgcmVhZGluZyB0aGUgc2VyaWFsIE5WUkFNIGRhdGEgb24gU3ltYmlvcyBhbmQKKyAgICBzb21lIFN5bWJpb3MgY29tcGF0aWJsZSBjYXJkcywgYW5kIFRla3JhbSBEQzM5MFcvVS9GIGNhcmRzLiBVc2VmdWwgZm9yCisgICAgc3lzdGVtcyB3aXRoIG1vcmUgdGhhbiBvbmUgU3ltYmlvcyBjb21wYXRpYmxlIGNvbnRyb2xsZXIgd2hlcmUgYXQgbGVhc3QKKyAgICBvbmUgaGFzIGEgc2VyaWFsIE5WUkFNLCBvciBmb3IgYSBzeXN0ZW0gd2l0aCBhIG1peHR1cmUgb2YgU3ltYmlvcyBhbmQKKyAgICBUZWtyYW0gY2FyZHMuIEVuYWJsZXMgc2V0dGluZyB0aGUgYm9vdCBvcmRlciBvZiBob3N0IGFkYXB0b3JzCisgICAgdG8gc29tZXRoaW5nIG90aGVyIHRoYW4gdGhlIGRlZmF1bHQgb3JkZXIgb3IgInJldmVyc2UgcHJvYmUiIG9yZGVyLiAKKyAgICBBbHNvIGVuYWJsZXMgU3ltYmlvcyBhbmQgVGVrcmFtIGNhcmRzIHRvIGJlIGRpc3Rpbmd1aXNoZWQgc28KKyAgICBDT05GSUdfU0NTSV9OQ1I1M0M4WFhfU1lNQklPU19DT01QQVQgbWF5IGJlIHNldCBpbiBhIHN5c3RlbSB3aXRoIGEKKyAgICBtaXh0dXJlIG9mIFN5bWJpb3MgYW5kIFRla3JhbSBjYXJkcyBzbyB0aGUgU3ltYmlvcyBjYXJkcyBjYW4gbWFrZSB1c2Ugb2YKKyAgICB0aGUgZnVsbCByYW5nZSBvZiBTeW1iaW9zIGZlYXR1cmVzLCBkaWZmZXJlbnRpYWwsIGxlZCBwaW4sIHdpdGhvdXQKKyAgICBjYXVzaW5nIHByb2JsZW1zIGZvciB0aGUgVGVrcmFtIGNhcmQocykuCisKKzEwLiBCb290IHNldHVwIGNvbW1hbmRzCisKKzEwLjEgU3ludGF4CisKK1NldHVwIGNvbW1hbmRzIGNhbiBiZSBwYXNzZWQgdG8gdGhlIGRyaXZlciBlaXRoZXIgYXQgYm9vdCB0aW1lIG9yIGFzIGEgCitzdHJpbmcgdmFyaWFibGUgdXNpbmcgJ2luc21vZCcuCisKK0EgYm9vdCBzZXR1cCBjb21tYW5kIGZvciB0aGUgbmNyNTNjOHh4IChzeW01M2M4eHgpIGRyaXZlciBiZWdpbnMgd2l0aCB0aGUgCitkcml2ZXIgbmFtZSAibmNyNTNjOHh4PSIoc3ltNTNjOHh4KS4gVGhlIGtlcm5lbCBzeW50YXggcGFyc2VyIHRoZW4gZXhwZWN0cyAKK2FuIG9wdGlvbmFsIGxpc3Qgb2YgaW50ZWdlcnMgc2VwYXJhdGVkIHdpdGggY29tbWEgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgCitsaXN0IG9mIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdzLiBFeGFtcGxlIG9mIGJvb3Qgc2V0dXAgY29tbWFuZCB1bmRlciBsaWxvIAorcHJvbXB0OgorCitsaWxvOiBsaW51eCByb290PS9kZXYvaGRhMiBuY3I1M2M4eHg9dGFnczo0LHN5bmM6MTAsZGVidWc6MHgyMDAKKworLSBlbmFibGUgdGFnZ2VkIGNvbW1hbmRzLCB1cCB0byA0IHRhZ2dlZCBjb21tYW5kcyBxdWV1ZWQuCistIHNldCBzeW5jaHJvbm91cyBuZWdvdGlhdGlvbiBzcGVlZCB0byAxMCBNZWdhLXRyYW5zZmVycyAvIHNlY29uZC4KKy0gc2V0IERFQlVHX05FR08gZmxhZy4KKworU2luY2UgY29tbWEgc2VlbXMgbm90IHRvIGJlIGFsbG93ZWQgd2hlbiBkZWZpbmluZyBhIHN0cmluZyB2YXJpYWJsZSB1c2luZyAgCisnaW5zbW9kJywgdGhlIGRyaXZlciBhbHNvIGFjY2VwdHMgPHNwYWNlPiBhcyBvcHRpb24gc2VwYXJhdG9yLiAKK1RoZSBmb2xsb3dpbmcgY29tbWFuZCB3aWxsIGluc3RhbGwgZHJpdmVyIG1vZHVsZSB3aXRoIHRoZSBzYW1lIG9wdGlvbnMgYXMgCithYm92ZS4KKworICAgIGluc21vZCBuY3I1M2M4eHgubyBuY3I1M2M4eHg9InRhZ3M6NCBzeW5jOjEwIGRlYnVnOjB4MjAwIgorCitGb3IgdGhlIG1vbWVudCwgdGhlIGludGVnZXIgbGlzdCBvZiBhcmd1bWVudHMgaXMgZGlzY2FyZGVkIGJ5IHRoZSBkcml2ZXIuIAorSXQgd2lsbCBiZSB1c2VkIGluIHRoZSBmdXR1cmUgaW4gb3JkZXIgdG8gYWxsb3cgYSBwZXIgY29udHJvbGxlciBzZXR1cC4KKworRWFjaCBzdHJpbmcgYXJndW1lbnQgbXVzdCBiZSBzcGVjaWZpZWQgYXMgImtleXdvcmQ6dmFsdWUiLiBPbmx5IGxvd2VyLWNhc2UgCitjaGFyYWN0ZXJzIGFuZCBkaWdpdHMgYXJlIGFsbG93ZWQuCisKK0luIGEgc3lzdGVtIHRoYXQgY29udGFpbnMgbXVsdGlwbGUgNTNDOHh4IGFkYXB0ZXJzIGluc21vZCB3aWxsIGluc3RhbGwgdGhlIAorc3BlY2lmaWVkIGRyaXZlciBvbiBlYWNoIGFkYXB0ZXIuIFRvIGV4Y2x1ZGUgYSBjaGlwIHVzZSB0aGUgJ2V4Y2wnIGtleXdvcmQuCisKK1RoZSBzZXF1ZW5jZSBvZiBjb21tYW5kcywgCisKKyAgICBpbnNtb2Qgc3ltNTNjOHh4IHN5bTUzYzh4eD1leGNsOjB4MTQwMAorICAgIGluc21vZCBuY3I1M2M4eHgKKworaW5zdGFsbHMgdGhlIHN5bTUzYzh4eCBkcml2ZXIgb24gYWxsIGFkYXB0ZXJzIGV4Y2VwdCB0aGUgb25lIGF0IElPIHBvcnQgCithZGRyZXNzIDB4MTQwMCBhbmQgdGhlbiBpbnN0YWxscyB0aGUgbmNyNTNjOHh4IGRyaXZlciB0byB0aGUgYWRhcHRlciBhdCBJTyAKK3BvcnQgYWRkcmVzcyAweDE0MDAuCisKKworMTAuMiBBdmFpbGFibGUgYXJndW1lbnRzCisKKzEwLjIuMSAgTWFzdGVyIHBhcml0eSBjaGVja2luZworICAgICAgICBtcGFyOnkgICAgIGVuYWJsZWQKKyAgICAgICAgbXBhcjpuICAgICBkaXNhYmxlZAorCisxMC4yLjIgIFNjc2kgcGFyaXR5IGNoZWNraW5nCisgICAgICAgIHNwYXI6eSAgICAgZW5hYmxlZAorICAgICAgICBzcGFyOm4gICAgIGRpc2FibGVkCisKKzEwLjIuMyAgU2NzaSBkaXNjb25uZWN0aW9ucworICAgICAgICBkaXNjOnkgICAgIGVuYWJsZWQKKyAgICAgICAgZGlzYzpuICAgICBkaXNhYmxlZAorIAorMTAuMi40ICBTcGVjaWFsIGZlYXR1cmVzCisgICBPbmx5IGFwcGx5IHRvIDgxMEEsIDgyNUEsIDg2MCwgODc1IGFuZCA4OTUgY29udHJvbGxlcnMuCisgICBIYXZlIG5vIGVmZmVjdCB3aXRoIG90aGVyIG9uZXMuCisgICAgICAgIHNwZWNmOnkgICAgKG9yIDEpIGVuYWJsZWQKKyAgICAgICAgc3BlY2Y6biAgICAob3IgMCkgZGlzYWJsZWQKKyAgICAgICAgc3BlY2Y6MyAgICAgICAgICAgZW5hYmxlZCBleGNlcHQgTWVtb3J5IFdyaXRlIEFuZCBJbnZhbGlkYXRlCisgICBUaGUgZGVmYXVsdCBkcml2ZXIgc2V0dXAgaXMgJ3NwZWNmOjMnLiBBcyBhIGNvbnNlcXVlbmNlLCBvcHRpb24gJ3NwZWNmOnknIAorICAgbXVzdCBiZSBzcGVjaWZpZWQgaW4gdGhlIGJvb3Qgc2V0dXAgY29tbWFuZCB0byBlbmFibGUgTWVtb3J5IFdyaXRlIEFuZCAKKyAgIEludmFsaWRhdGUuCisKKzEwLjIuNSAgVWx0cmEgU0NTSSBzdXBwb3J0CisgICBPbmx5IGFwcGx5IHRvIDg2MCwgODc1LCA4OTUsIDg5NWEsIDg5NiwgMTAxMCBhbmQgMTAxMF82NiBjb250cm9sbGVycy4KKyAgIEhhdmUgbm8gZWZmZWN0IHdpdGggb3RoZXIgb25lcy4KKyAgICAgICAgdWx0cmE6biAgICBBbGwgdWx0cmEgc3BlZWRzIGVuYWJsZWQKKyAgICAgICAgdWx0cmE6MiAgICBVbHRyYTIgZW5hYmxlZAorICAgICAgICB1bHRyYToxICAgIFVsdHJhIGVuYWJsZWQKKyAgICAgICAgdWx0cmE6MCAgICBVbHRyYSBzcGVlZHMgZGlzYWJsZWQKKworMTAuMi42ICBEZWZhdWx0IG51bWJlciBvZiB0YWdnZWQgY29tbWFuZHMKKyAgICAgICAgdGFnczowICAgICAob3IgdGFnczoxICkgdGFnZ2VkIGNvbW1hbmQgcXVldWluZyBkaXNhYmxlZAorICAgICAgICB0YWdzOiN0YWdzICgjdGFncyAgPiAxKSB0YWdnZWQgY29tbWFuZCBxdWV1aW5nIGVuYWJsZWQKKyAgI3RhZ3Mgd2lsbCBiZSB0cnVuY2F0ZWQgdG8gdGhlIG1heCBxdWV1ZWQgY29tbWFuZHMgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIuCisgIFRoaXMgb3B0aW9uIGFsc28gYWxsb3dzIHRvIHNwZWNpZnkgYSBjb21tYW5kIHF1ZXVlIGRlcHRoIGZvciBlYWNoIGRldmljZSAKKyAgdGhhdCBzdXBwb3J0IHRhZ2dlZCBjb21tYW5kIHF1ZXVlaW5nLgorICBFeGFtcGxlOgorICAgICAgbmNyNTNjOHh4PXRhZ3M6MTAvdDJ0M3ExNi10NXEyNC90MXUycTMyCisgICAgICAgICAgICAgICB3aWxsIHNldCBkZXZpY2VzIHF1ZXVlIGRlcHRoIGFzIGZvbGxvdzoKKyAgICAgIC0gY29udHJvbGxlciAjMCB0YXJnZXQgIzIgYW5kIHRhcmdldCAjMyAgICAgICAgICAgICAgICAgIC0+IDE2IGNvbW1hbmRzLAorICAgICAgLSBjb250cm9sbGVyICMwIHRhcmdldCAjNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gMjQgY29tbWFuZHMsCisgICAgICAtIGNvbnRyb2xsZXIgIzEgdGFyZ2V0ICMxIGxvZ2ljYWwgdW5pdCAjMiAgICAgICAgICAgICAgICAtPiAzMiBjb21tYW5kcywKKyAgICAgIC0gYWxsIG90aGVyIGxvZ2ljYWwgdW5pdHMgKGFsbCB0YXJnZXRzLCBhbGwgY29udHJvbGxlcnMpIC0+IDEwIGNvbW1hbmRzLgorCisxMC4yLjcgIERlZmF1bHQgc3luY2hyb25vdXMgcGVyaW9kIGZhY3RvcgorICAgICAgICBzeW5jOjI1NSAgICAgZGlzYWJsZWQgKGFzeW5jaHJvbm91cyB0cmFuc2ZlciBtb2RlKQorICAgICAgICBzeW5jOiNmYWN0b3IKKyAgI2ZhY3RvciA9IDEwICAgICBVbHRyYS0yIFNDU0kgNDAgTWVnYS10cmFuc2ZlcnMgLyBzZWNvbmQKKyAgI2ZhY3RvciA9IDExICAgICBVbHRyYS0yIFNDU0kgMzMgTWVnYS10cmFuc2ZlcnMgLyBzZWNvbmQKKyAgI2ZhY3RvciA8IDI1ICAgICBVbHRyYSAgIFNDU0kgMjAgTWVnYS10cmFuc2ZlcnMgLyBzZWNvbmQKKyAgI2ZhY3RvciA8IDUwICAgICBGYXN0ICAgIFNDU0ktMgorCisgIEluIGFsbCBjYXNlcywgdGhlIGRyaXZlciB3aWxsIHVzZSB0aGUgbWluaW11bSB0cmFuc2ZlciBwZXJpb2Qgc3VwcG9ydGVkIGJ5IAorICBjb250cm9sbGVycyBhY2NvcmRpbmcgdG8gTkNSNTNDOFhYIGNoaXAgdHlwZS4KKworMTAuMi44ICBOZWdvdGlhdGUgc3luY2hyb25vdXMgd2l0aCBhbGwgZGV2aWNlcworICAgICAgICAoZm9yY2Ugc3luYyBuZWdvKQorICAgICAgICBmc246eSAgICAgIGVuYWJsZWQKKyAgICAgICAgZnNuOm4gICAgICBkaXNhYmxlZAorCisxMC4yLjkgIFZlcmJvc2l0eSBsZXZlbAorICAgICAgICB2ZXJiOjAgICAgIG1pbmltYWwKKyAgICAgICAgdmVyYjoxICAgICBub3JtYWwKKyAgICAgICAgdmVyYjoyICAgICB0b28gbXVjaAorCisxMC4yLjEwIERlYnVnIG1vZGUKKyAgICAgICAgZGVidWc6MAkgY2xlYXIgZGVidWcgZmxhZ3MKKyAgICAgICAgZGVidWc6I3ggICBzZXQgZGVidWcgZmxhZ3MKKyAgI3ggaXMgYW4gaW50ZWdlciB2YWx1ZSBjb21iaW5pbmcgdGhlIGZvbGxvd2luZyBwb3dlci1vZi0yIHZhbHVlczoKKyAgREVCVUdfQUxMT0MgICAgICAgMHgxCisgIERFQlVHX1BIQVNFICAgICAgIDB4MgorICBERUJVR19QT0xMICAgICAgICAweDQKKyAgREVCVUdfUVVFVUUgICAgICAgMHg4CisgIERFQlVHX1JFU1VMVCAgICAgMHgxMAorICBERUJVR19TQ0FUVEVSICAgIDB4MjAKKyAgREVCVUdfU0NSSVBUICAgICAweDQwCisgIERFQlVHX1RJTlkgICAgICAgMHg4MAorICBERUJVR19USU1JTkcgICAgMHgxMDAKKyAgREVCVUdfTkVHTyAgICAgIDB4MjAwCisgIERFQlVHX1RBR1MgICAgICAweDQwMAorICBERUJVR19GUkVFWkUgICAgMHg4MDAKKyAgREVCVUdfUkVTVEFSVCAgMHgxMDAwCisKKyAgWW91IGNhbiBwbGF5IHNhZmVseSB3aXRoIERFQlVHX05FR08uIEhvd2V2ZXIsIHNvbWUgb2YgdGhlc2UgZmxhZ3MgbWF5IAorICBnZW5lcmF0ZSBidW5jaGVzIG9mIHN5c2xvZyBtZXNzYWdlcy4gCisKKzEwLjIuMTEgQnVyc3QgbWF4CisgICAgICAgIGJ1cnN0OjAgICAgYnVyc3QgZGlzYWJsZWQKKyAgICAgICAgYnVyc3Q6MjU1ICBnZXQgYnVyc3QgbGVuZ3RoIGZyb20gaW5pdGlhbCBJTyByZWdpc3RlciBzZXR0aW5ncy4KKyAgICAgICAgYnVyc3Q6I3ggICBidXJzdCBlbmFibGVkICgxPDwjeCBidXJzdCB0cmFuc2ZlcnMgbWF4KQorICAjeCBpcyBhbiBpbnRlZ2VyIHZhbHVlIHdoaWNoIGlzIGxvZyBiYXNlIDIgb2YgdGhlIGJ1cnN0IHRyYW5zZmVycyBtYXguCisgIFRoZSBOQ1I1M0M4NzUgYW5kIE5DUjUzQzgyNUEgc3VwcG9ydCB1cCB0byAxMjggYnVyc3QgdHJhbnNmZXJzICgjeCA9IDcpLgorICBPdGhlciBjaGlwcyBvbmx5IHN1cHBvcnQgdXAgdG8gMTYgKCN4ID0gNCkuCisgIFRoaXMgaXMgYSBtYXhpbXVtIHZhbHVlLiBUaGUgZHJpdmVyIHNldCB0aGUgYnVyc3QgbGVuZ3RoIGFjY29yZGluZyB0byBjaGlwIAorICBhbmQgcmV2aXNpb24gaWRzLiBCeSBkZWZhdWx0IHRoZSBkcml2ZXIgdXNlcyB0aGUgbWF4aW11bSB2YWx1ZSBzdXBwb3J0ZWQgCisgIGJ5IHRoZSBjaGlwLgorCisxMC4yLjEyIExFRCBzdXBwb3J0CisgICAgICAgIGxlZDoxICAgICAgZW5hYmxlICBMRUQgc3VwcG9ydAorICAgICAgICBsZWQ6MCAgICAgIGRpc2FibGUgTEVEIHN1cHBvcnQKKyAgRG9ubm90IGVuYWJsZSBMRUQgc3VwcG9ydCBpZiB5b3VyIHNjc2kgYm9hcmQgZG9lcyBub3QgdXNlIFNETVMgQklPUy4KKyAgKFNlZSAnQ29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzJykKKworMTAuMi4xMyBNYXggd2lkZQorICAgICAgICB3aWRlOjEgICAgICB3aWRlIHNjc2kgZW5hYmxlZAorICAgICAgICB3aWRlOjAgICAgICB3aWRlIHNjc2kgZGlzYWJsZWQKKyAgU29tZSBzY3NpIGJvYXJkcyB1c2UgYSA4NzUgKHVsdHJhIHdpZGUpIGFuZCBvbmx5IHN1cHBseSBuYXJyb3cgY29ubmVjdG9ycy4KKyAgSWYgeW91IGhhdmUgY29ubmVjdGVkIGEgd2lkZSBkZXZpY2Ugd2l0aCBhIDUwIHBpbnMgdG8gNjggcGlucyBjYWJsZSAKKyAgY29udmVydGVyLCBhbnkgYWNjZXB0ZWQgd2lkZSBuZWdvdGlhdGlvbiB3aWxsIGJyZWFrIGZ1cnRoZXIgZGF0YSB0cmFuc2ZlcnMuCisgIEluIHN1Y2ggYSBjYXNlLCB1c2luZyAid2lkZTowIiBpbiB0aGUgYm9vdHVwIGNvbW1hbmQgd2lsbCBiZSBoZWxwZnVsLiAKKworMTAuMi4xNCBEaWZmZXJlbnRpYWwgbW9kZQorICAgICAgICBkaWZmOjAJbmV2ZXIgc2V0IHVwIGRpZmYgbW9kZQorICAgICAgICBkaWZmOjEJc2V0IHVwIGRpZmYgbW9kZSBpZiBCSU9TIHNldCBpdAorICAgICAgICBkaWZmOjIJYWx3YXlzIHNldCB1cCBkaWZmIG1vZGUKKyAgICAgICAgZGlmZjozCXNldCBkaWZmIG1vZGUgaWYgR1BJTzMgaXMgbm90IHNldAorCisxMC4yLjE1IElSUSBtb2RlCisgICAgICAgIGlycW06MCAgICAgYWx3YXlzIG9wZW4gZHJhaW4KKyAgICAgICAgaXJxbToxICAgICBzYW1lIGFzIGluaXRpYWwgc2V0dGluZ3MgKGFzc3VtZWQgQklPUyBzZXR0aW5ncykKKyAgICAgICAgaXJxbToyICAgICBhbHdheXMgdG90ZW0gcG9sZQorICAgICAgICBpcnFtOjB4MTAgIGRyaXZlciB3aWxsIG5vdCB1c2UgSVJRRl9TSEFSRUQgZmxhZyB3aGVuIHJlcXVlc3RpbmcgaXJxCisKKyAgICAoQml0cyAweDEwIGFuZCAweDIwIGNhbiBiZSBjb21iaW5lZCB3aXRoIGhhcmR3YXJlIGlycSBtb2RlIG9wdGlvbikKKworMTAuMi4xNiBSZXZlcnNlIHByb2JlCisgICAgICAgIHJldnByb2I6biAgIHByb2JlIGNoaXAgaWRzIGZyb20gdGhlIFBDSSBjb25maWd1cmF0aW9uIGluIHRoaXMgb3JkZXI6CisgICAgICAgICAgICAgICAgICAgIDgxMCwgODE1LCA4MjAsIDg2MCwgODc1LCA4ODUsIDg5NSwgODk2CisgICAgICAgIHJldnByb2I6eSAgIHByb2JlIGNoaXAgaWRzIGluIHRoZSByZXZlcnNlIG9yZGVyLgorCisxMC4yLjE3IEZpeCB1cCBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZQorICAgICAgICBwY2lmaXg6PG9wdGlvbiBiaXRzPgorCisgICAgQXZhaWxhYmxlIG9wdGlvbiBiaXRzOgorICAgICAgICAweDA6ICAgTm8gYXR0ZW1wdCB0byBmaXggUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgcmVnaXN0ZXJzIHZhbHVlcy4KKyAgICAgICAgMHgxOiAgIFNldCBQQ0kgY2FjaGUtbGluZSBzaXplIHJlZ2lzdGVyIGlmIG5vdCBzZXQuCisgICAgICAgIDB4MjogICBTZXQgd3JpdGUgYW5kIGludmFsaWRhdGUgYml0IGluIFBDSSBjb21tYW5kIHJlZ2lzdGVyLgorICAgICAgICAweDQ6ICAgSW5jcmVhc2UgaWYgbmVjZXNzYXJ5IFBDSSBsYXRlbmN5IHRpbWVyIGFjY29yZGluZyB0byBidXJzdCBtYXguCisKKyAgICBVc2UgJ3BjaWZpeDo3JyBpbiBvcmRlciB0byBhbGxvdyB0aGUgZHJpdmVyIHRvIGZpeCB1cCBhbGwgUENJIGZlYXR1cmVzLgorCisxMC4yLjE4IFNlcmlhbCBOVlJBTQorICAgICAgICBudnJhbTpuICAgICBkbyBub3QgbG9vayBmb3Igc2VyaWFsIE5WUkFNCisgICAgICAgIG52cmFtOnkgICAgIHRlc3QgY29udHJvbGxlcnMgZm9yIG9uYm9hcmQgc2VyaWFsIE5WUkFNCisgICAgICAgIChhbHRlcm5hdGUgYmluYXJ5IGZvcm0pCisgICAgICAgIG12cmFtPTxiaXRzIG9wdGlvbnM+CisgICAgICAgIDB4MDEgICBsb29rIGZvciBOVlJBTSAgKGVxdWl2YWxlbnQgdG8gbnZyYW09eSkKKyAgICAgICAgMHgwMiAgIGlnbm9yZSBOVlJBTSAiU3luY2hyb25vdXMgbmVnb3RpYXRpb24iIHBhcmFtZXRlcnMgZm9yIGFsbCBkZXZpY2VzCisgICAgICAgIDB4MDQgICBpZ25vcmUgTlZSQU0gIldpZGUgbmVnb3RpYXRpb24iICBwYXJhbWV0ZXIgZm9yIGFsbCBkZXZpY2VzCisgICAgICAgIDB4MDggICBpZ25vcmUgTlZSQU0gIlNjYW4gYXQgYm9vdCB0aW1lIiBwYXJhbWV0ZXIgZm9yIGFsbCBkZXZpY2VzCisgICAgICAgIDB4ODAgICBhbHNvIGF0dGFjaCBjb250cm9sbGVycyBzZXQgdG8gT0ZGIGluIHRoZSBOVlJBTSAoc3ltNTNjOHh4IG9ubHkpCisKKzEwLjIuMTkgQ2hlY2sgU0NTSSBCVVMgCisgICAgICAgIGJ1c2Noazo8b3B0aW9uIGJpdHM+CisKKyAgICBBdmFpbGFibGUgb3B0aW9uIGJpdHM6CisgICAgICAgIDB4MDogICBObyBjaGVjay4KKyAgICAgICAgMHgxOiAgIENoZWNrIGFuZCBkbyBub3QgYXR0YWNoIHRoZSBjb250cm9sbGVyIG9uIGVycm9yLiAgCisgICAgICAgIDB4MjogICBDaGVjayBhbmQganVzdCB3YXJuIG9uIGVycm9yLgorICAgICAgICAweDQ6ICAgRGlzYWJsZSBTQ1NJIGJ1cyBpbnRlZ3JpdHkgY2hlY2tpbmcuCisKKzEwLjIuMjAgRXhjbHVkZSBhIGhvc3QgZnJvbSBiZWluZyBhdHRhY2hlZAorICAgICAgICBleGNsPTxpb19hZGRyZXNzPgorCisgICAgUHJldmVudCBob3N0IGF0IGEgZ2l2ZW4gaW8gYWRkcmVzcyBmcm9tIGJlaW5nIGF0dGFjaGVkLgorICAgIEZvciBleGFtcGxlICduY3I1M2M4eHg9ZXhjbDoweGI0MDAsZXhjbDoweGMwMDAnIGluZGljYXRlIHRvIHRoZSAKKyAgICBuY3I1M2M4eHggZHJpdmVyIG5vdCB0byBhdHRhY2ggaG9zdHMgYXQgYWRkcmVzcyAweGI0MDAgYW5kIDB4YzAwMC4KKworMTAuMi4yMSBTdWdnZXN0IGEgZGVmYXVsdCBTQ1NJIGlkIGZvciBob3N0cworICAgICAgICBob3N0aWQ6MjU1CW5vIGlkIHN1Z2dlc3RlZC4KKyAgICAgICAgaG9zdGlkOiN4ICAgKDAgPCB4IDwgNykgeCBzdWdnZXN0ZWQgZm9yIGhvc3RzIFNDU0kgaWQuCisKKyAgICBJZiBhIGhvc3QgU0NTSSBpZCBpcyBhdmFpbGFibGUgZnJvbSB0aGUgTlZSQU0sIHRoZSBkcml2ZXIgd2lsbCBpZ25vcmUgCisgICAgYW55IHZhbHVlIHN1Z2dlc3RlZCBhcyBib290IG9wdGlvbi4gT3RoZXJ3aXNlLCBpZiBhIHN1Z2dlc3RlZCB2YWx1ZSAKKyAgICBkaWZmZXJlbnQgZnJvbSAyNTUgaGFzIGJlZW4gc3VwcGxpZWQsIGl0IHdpbGwgdXNlIGl0LiBPdGhlcndpc2UsIGl0IHdpbGwgCisgICAgdHJ5IHRvIGRlZHVjZSB0aGUgdmFsdWUgcHJldmlvdXNseSBzZXQgaW4gdGhlIGhhcmR3YXJlIGFuZCB1c2UgdmFsdWUgCisgICAgNyBpZiB0aGUgaGFyZHdhcmUgdmFsdWUgaXMgemVyby4KKworMTAuMi4yMiBFbmFibGUgdXNlIG9mIElNTUVESUFURSBBUkJJVFJBVElPTgorICAgICAgICAob25seSBzdXBwb3J0ZWQgYnkgdGhlIHN5bTUzYzh4eCBkcml2ZXIuIFNlZSAxMC43IGZvciBtb3JlIGRldGFpbHMpCisgICAgICAgIGlhcmI6MCAgICBkbyBub3QgdXNlIHRoaXMgZmVhdHVyZS4KKyAgICAgICAgaWFyYjojeCAgIHVzZSB0aGlzIGZlYXR1cmUgYWNjb3JkaW5nIHRvIGJpdCBmaWVsZHMgYXMgZm9sbG93OgorCisgICAgYml0IDAgKDEpIDogZW5hYmxlIElBUkIgZWFjaCB0aW1lIHRoZSBpbml0aWF0b3IgaGFzIGJlZW4gcmVzZWxlY3RlZCAKKyAgICAgICAgICAgICAgICB3aGVuIGl0IGFyYml0cmF0ZWQgZm9yIHRoZSBTQ1NJIEJVUy4KKyAgICAoI3ggPj4gNCkgOiBtYXhpbXVtIG51bWJlciBvZiBzdWNjZXNzaXZlIHNldHRpbmdzIG9mIElBUkIgaWYgdGhlIGluaXRpYXRvciAKKyAgICAgICAgICAgICAgICB3aW4gYXJiaXRyYXRpb24gYW5kIGl0IGhhcyBvdGhlciBjb21tYW5kcyB0byBzZW5kIHRvIGEgZGV2aWNlLgorCitCb290IGZhaWwgc2FmZQorICAgIHNhZmU6eQlsb2FkIHRoZSBmb2xsb3dpbmcgYXNzdW1lZCBmYWlsIHNhZmUgaW5pdGlhbCBzZXR1cAorCisgIG1hc3RlciBwYXJpdHkJCQlkaXNhYmxlZAkJbXBhcjpuCisgIHNjc2kgcGFyaXR5CQkJZW5hYmxlZAkJCXNwYXI6eQorICBkaXNjb25uZWN0aW9ucwkJbm90IGFsbG93ZWQJCWRpc2M6bgorICBzcGVjaWFsIGZlYXR1cmVzCQlkaXNhYmxlZAkJc3BlY2Y6bgorICB1bHRyYSBzY3NpCQkJZGlzYWJsZWQJCXVsdHJhOm4KKyAgZm9yY2Ugc3luYyBuZWdvdGlhdGlvbglkaXNhYmxlZAkJZnNuOm4KKyAgcmV2ZXJzZSBwcm9iZQkJCWRpc2FibGVkCQlyZXZwcm9iOm4KKyAgUENJIGZpeCB1cCAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQgICAgICAgICAgICAgICAgcGNpZml4OjAKKyAgc2VyaWFsIE5WUkFNICAgICAgICAgICAgICAgICAgZW5hYmxlZCAgICAgICAgICAgICAgICAgbnZyYW06eQorICB2ZXJib3NpdHkgbGV2ZWwJCTIJCQl2ZXJiOjIKKyAgdGFnZ2VkIGNvbW1hbmQgcXVldWluZwlkaXNhYmxlZAkJdGFnczowCisgIHN5bmNocm9ub3VzIG5lZ290aWF0aW9uCWRpc2FibGVkCQlzeW5jOjI1NQorICBkZWJ1ZyBmbGFncwkJCW5vbmUJCQlkZWJ1ZzowCisgIGJ1cnN0IGxlbmd0aAkJCWZyb20gQklPUyBzZXR0aW5ncwlidXJzdDoyNTUKKyAgTEVEIHN1cHBvcnQJCQlkaXNhYmxlZAkJbGVkOjAKKyAgd2lkZSBzdXBwb3J0CQkJZGlzYWJsZWQJCXdpZGU6MAorICBzZXR0bGUgdGltZQkJCTEwIHNlY29uZHMJCXNldHRsZToxMAorICBkaWZmZXJlbnRpYWwgc3VwcG9ydAkJZnJvbSBCSU9TIHNldHRpbmdzCWRpZmY6MQorICBpcnEgbW9kZQkJCWZyb20gQklPUyBzZXR0aW5ncwlpcnFtOjEKKyAgU0NTSSBCVVMgY2hlY2sJCWRvIG5vdCBhdHRhY2ggb24gZXJyb3IJYnVzY2hrOjEKKyAgaW1tZWRpYXRlIGFyYml0cmF0aW9uCQlkaXNhYmxlZAkJaWFyYjowCisKKzEwLjMgQWR2aXNlZCBib290IHNldHVwIGNvbW1hbmRzCisKK0lmIHRoZSBkcml2ZXIgaGFzIGJlZW4gY29uZmlndXJlZCB3aXRoIGRlZmF1bHQgb3B0aW9ucywgdGhlIGVxdWl2YWxlbnQgCitib290IHNldHVwIGlzOgorCisgICBuY3I1M2M4eHg9bXBhcjp5LHNwYXI6eSxkaXNjOnksc3BlY2Y6Myxmc246bix1bHRyYToyLGZzbjpuLHJldnByb2I6bix2ZXJiOjFcCisgICAgICAgICAgICAgdGFnczowLHN5bmM6NTAsZGVidWc6MCxidXJzdDo3LGxlZDowLHdpZGU6MSxzZXR0bGU6MixkaWZmOjAsaXJxbTowCisKK0ZvciBhbiBpbnN0YWxsYXRpb24gZGlza2V0dGUgb3IgYSBzYWZlIGJ1dCBub3QgZmFzdCBzeXN0ZW0sCitib290IHNldHVwIGNhbiBiZToKKworICAgIG5jcjUzYzh4eD1zYWZlOnksbXBhcjp5LGRpc2M6eQorICAgIG5jcjUzYzh4eD1zYWZlOnksZGlzYzp5CisgICAgbmNyNTNjOHh4PXNhZmU6eSxtcGFyOnkKKyAgICBuY3I1M2M4eHg9c2FmZTp5CisKK015IHBlcnNvbmFsIHN5c3RlbSB3b3JrcyBmbGF3bGVzc2x5IHdpdGggdGhlIGZvbGxvd2luZyBlcXVpdmFsZW50IHNldHVwOgorCisgICBuY3I1M2M4eHg9bXBhcjp5LHNwYXI6eSxkaXNjOnksc3BlY2Y6MSxmc246bix1bHRyYToyLGZzbjpuLHJldnByb2I6bix2ZXJiOjFcCisgICAgICAgICAgICAgdGFnczozMixzeW5jOjEyLGRlYnVnOjAsYnVyc3Q6NyxsZWQ6MSx3aWRlOjEsc2V0dGxlOjIsZGlmZjowLGlycW06MAorCitUaGUgZHJpdmVyIHByaW50cyBpdHMgYWN0dWFsIHNldHVwIHdoZW4gdmVyYm9zaXR5IGxldmVsIGlzIDIuIFlvdSBjYW4gdHJ5IAorIm5jcjUzYzh4eD12ZXJiOjIiIHRvIGdldCB0aGUgInN0YXRpYyIgc2V0dXAgb2YgdGhlIGRyaXZlciwgb3IgYWRkICJ2ZXJiOjIiIAordG8geW91ciBib290IHNldHVwIGNvbW1hbmQgaW4gb3JkZXIgdG8gY2hlY2sgdGhlIGFjdHVhbCBzZXR1cCB0aGUgZHJpdmVyIGlzIAordXNpbmcuCisKKzEwLjQgUENJIGNvbmZpZ3VyYXRpb24gZml4LXVwIGJvb3Qgb3B0aW9uCisKK3BjaWZpeDo8b3B0aW9uIGJpdHM+CisKK0F2YWlsYWJsZSBvcHRpb24gYml0czoKKyAgICAweDE6ICAgICBTZXQgUENJIGNhY2hlLWxpbmUgc2l6ZSByZWdpc3RlciBpZiBub3Qgc2V0LgorICAgIDB4MjogICAgIFNldCB3cml0ZSBhbmQgaW52YWxpZGF0ZSBiaXQgaW4gUENJIGNvbW1hbmQgcmVnaXN0ZXIuCisKK1VzZSAncGNpZml4OjMnIGluIG9yZGVyIHRvIGFsbG93IHRoZSBkcml2ZXIgdG8gZml4IGJvdGggUENJIGZlYXR1cmVzLgorCitUaGVzZSBvcHRpb25zIG9ubHkgYXBwbHkgdG8gbmV3IFNZTUJJT1MgY2hpcHMgODEwQSwgODI1QSwgODYwLCA4NzUgCithbmQgODk1IGFuZCBhcmUgb25seSBzdXBwb3J0ZWQgZm9yIFBlbnRpdW0gYW5kIDQ4NiBjbGFzcyBwcm9jZXNzb3JzLgorUmVjZW50IFNZTUJJT1MgNTNDOFhYIHNjc2kgcHJvY2Vzc29ycyBhcmUgYWJsZSB0byB1c2UgUENJIHJlYWQgbXVsdGlwbGUgCithbmQgUENJIHdyaXRlIGFuZCBpbnZhbGlkYXRlIGNvbW1hbmRzLiBUaGVzZSBmZWF0dXJlcyByZXF1aXJlIHRoZSAKK2NhY2hlIGxpbmUgc2l6ZSByZWdpc3RlciB0byBiZSBwcm9wZXJseSBzZXQgaW4gdGhlIFBDSSBjb25maWd1cmF0aW9uIAorc3BhY2Ugb2YgdGhlIGNoaXBzLiBPbiB0aGUgb3RoZXIgaGFuZCwgY2hpcHMgd2lsbCB1c2UgUENJIHdyaXRlIGFuZCAKK2ludmFsaWRhdGUgY29tbWFuZHMgb25seSBpZiB0aGUgY29ycmVzcG9uZGluZyBiaXQgaXMgc2V0IHRvIDEgaW4gdGhlIAorUENJIGNvbW1hbmQgcmVnaXN0ZXIuCisKK05vdCBhbGwgUENJIGJpb3NlcyBzZXQgdGhlIFBDSSBjYWNoZSBsaW5lIHJlZ2lzdGVyIGFuZCB0aGUgUENJIHdyaXRlIGFuZCAKK2ludmFsaWRhdGUgYml0IGluIHRoZSBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSBvZiA1M0M4WFggY2hpcHMuCitPcHRpbWl6ZWQgUENJIGFjY2Vzc2VzIG1heSBiZSBicm9rZW4gZm9yIHNvbWUgUENJL21lbW9yeSBjb250cm9sbGVycyBvciAKK21ha2UgcHJvYmxlbXMgd2l0aCBzb21lIFBDSSBib2FyZHMuCisKK1RoaXMgZml4LXVwIHdvcmtlZCBmbGF3bGVzc2x5IG9uIG15IHByZXZpb3VzIHN5c3RlbS4KKyhNQiBUcml0b24gSFggLyA1M0M4NzUgLyA1M0M4MTBBKQorSSB1c2UgdGhlc2Ugb3B0aW9ucyBhdCBteSBvd24gcmlza3MgYXMgeW91IHdpbGwgZG8gaWYgeW91IGRlY2lkZSB0byAKK3VzZSB0aGVtIHRvby4KKworCisxMC41IFNlcmlhbCBOVlJBTSBzdXBwb3J0IGJvb3Qgb3B0aW9uCisKK252cmFtOm4gICAgIGRvIG5vdCBsb29rIGZvciBzZXJpYWwgTlZSQU0KK252cmFtOnkgICAgIHRlc3QgY29udHJvbGxlcnMgZm9yIG9uYm9hcmQgc2VyaWFsIE5WUkFNCisKK1RoaXMgb3B0aW9uIGNhbiBhbHNvIGJlZW4gZW50ZXJlZCBhcyBhbiBoZXhhZGVjaW1hbCB2YWx1ZSB0aGF0IGFsbG93cyAKK3RvIGNvbnRyb2wgd2hhdCBpbmZvcm1hdGlvbiB0aGUgZHJpdmVyIHdpbGwgZ2V0IGZyb20gdGhlIE5WUkFNIGFuZCB3aGF0IAoraW5mb3JtYXRpb24gaXQgd2lsbCBpZ25vcmUuCitGb3IgZGV0YWlscyBzZWUgJzE3LiBTZXJpYWwgTlZSQU0gc3VwcG9ydCcuCisKK1doZW4gdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIGRyaXZlciB0cmllcyB0byBkZXRlY3QgYWxsIGJvYXJkcyB1c2luZyAKK2EgU2VyaWFsIE5WUkFNLiBUaGlzIG1lbW9yeSBpcyB1c2VkIHRvIGhvbGQgdXNlciBzZXQgdXAgcGFyYW1ldGVycy4KKworVGhlIHBhcmFtZXRlcnMgdGhlIGRyaXZlciBpcyBhYmxlIHRvIGdldCBmcm9tIHRoZSBOVlJBTSBkZXBlbmQgb24gdGhlIAorZGF0YSBmb3JtYXQgdXNlZCwgYXMgZm9sbG93OgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZWtyYW0gZm9ybWF0ICAgICAgU3ltYmlvcyBmb3JtYXQKK0dlbmVyYWwgYW5kIGhvc3QgcGFyYW1ldGVycworICAgIEJvb3Qgb3JkZXIgICAgICAgICAgICAgICAgICAgICAgICAgTiAgICAgICAgICAgICAgICAgICBZCisgICAgSG9zdCBTQ1NJIElEICAgICAgICAgICAgICAgICAgICAgICBZICAgICAgICAgICAgICAgICAgIFkKKyAgICBTQ1NJIHBhcml0eSBjaGVja2luZyAgICAgICAgICAgICAgIFkgICAgICAgICAgICAgICAgICAgWQorICAgIFZlcmJvc2UgYm9vdCBtZXNzYWdlcyAgICAgICAgICAgICAgTiAgICAgICAgICAgICAgICAgICBZCitTQ1NJIGRldmljZXMgcGFyYW1ldGVycworICAgIFN5bmNocm9ub3VzIHRyYW5zZmVyIHNwZWVkICAgICAgICAgWSAgICAgICAgICAgICAgICAgICBZCisgICAgV2lkZSAxNiAvIE5hcnJvdyAgICAgICAgICAgICAgICAgICBZICAgICAgICAgICAgICAgICAgIFkKKyAgICBUYWdnZWQgQ29tbWFuZCBRdWV1aW5nIGVuYWJsZWQgICAgIFkgICAgICAgICAgICAgICAgICAgWQorICAgIERpc2Nvbm5lY3Rpb25zIGVuYWJsZWQgICAgICAgICAgICAgWSAgICAgICAgICAgICAgICAgICBZCisgICAgU2NhbiBhdCBib290IHRpbWUgICAgICAgICAgICAgICAgICBOICAgICAgICAgICAgICAgICAgIFkKKworSW4gb3JkZXIgdG8gc3BlZWQgdXAgdGhlIHN5c3RlbSBib290LCBmb3IgZWFjaCBkZXZpY2UgY29uZmlndXJlZCB3aXRob3V0IAordGhlICJzY2FuIGF0IGJvb3QgdGltZSIgb3B0aW9uLCB0aGUgZHJpdmVyIGZvcmNlcyBhbiBlcnJvciBvbiB0aGUgCitmaXJzdCBURVNUIFVOSVQgUkVBRFkgY29tbWFuZCByZWNlaXZlZCBmb3IgdGhpcyBkZXZpY2UuCisKK1NvbWUgU0RNUyBCSU9TIHJldmlzaW9ucyBzZWVtIHRvIGJlIHVuYWJsZSB0byBib290IGNsZWFubHkgd2l0aCB2ZXJ5IGZhc3QgCitoYXJkIGRpc2tzLiBJbiBzdWNoIGEgc2l0dWF0aW9uIHlvdSBjYW5ub3QgY29uZmlndXJlIHRoZSBOVlJBTSB3aXRoIAorb3B0aW1pemVkIHBhcmFtZXRlcnMgdmFsdWUuCisKK1RoZSAnbnZyYW0nIGJvb3Qgb3B0aW9uIGNhbiBiZSBlbnRlcmVkIGluIGhleGFkZWNpbWFsIGZvcm0gaW4gb3JkZXIgCit0byBpZ25vcmUgc29tZSBvcHRpb25zIGNvbmZpZ3VyZWQgaW4gdGhlIE5WUkFNLCBhcyBmb2xsb3c6CisKK212cmFtPTxiaXRzIG9wdGlvbnM+CisgICAgICAweDAxICAgbG9vayBmb3IgTlZSQU0gIChlcXVpdmFsZW50IHRvIG52cmFtPXkpCisgICAgICAweDAyICAgaWdub3JlIE5WUkFNICJTeW5jaHJvbm91cyBuZWdvdGlhdGlvbiIgcGFyYW1ldGVycyBmb3IgYWxsIGRldmljZXMKKyAgICAgIDB4MDQgICBpZ25vcmUgTlZSQU0gIldpZGUgbmVnb3RpYXRpb24iICBwYXJhbWV0ZXIgZm9yIGFsbCBkZXZpY2VzCisgICAgICAweDA4ICAgaWdub3JlIE5WUkFNICJTY2FuIGF0IGJvb3QgdGltZSIgcGFyYW1ldGVyIGZvciBhbGwgZGV2aWNlcworICAgICAgMHg4MCAgIGFsc28gYXR0YWNoIGNvbnRyb2xsZXJzIHNldCB0byBPRkYgaW4gdGhlIE5WUkFNIChzeW01M2M4eHggb25seSkKKworT3B0aW9uIDB4ODAgaXMgb25seSBzdXBwb3J0ZWQgYnkgdGhlIHN5bTUzYzh4eCBkcml2ZXIgYW5kIGlzIGRpc2FibGVkIGJ5IAorZGVmYXVsdC4gUmVzdWx0IGlzIHRoYXQsIGJ5IGRlZmF1bHQgKG9wdGlvbiBub3Qgc2V0KSwgdGhlIHN5bTUzYzh4eCBkcml2ZXIgCit3aWxsIG5vdCBhdHRhY2ggY29udHJvbGxlcnMgc2V0IHRvIE9GRiBpbiB0aGUgTlZSQU0uCisKK1RoZSBuY3I1M2M4eHggYWx3YXlzIHRyaWVzIHRvIGF0dGFjaCBhbGwgdGhlIGNvbnRyb2xsZXJzLiBPcHRpb24gMHg4MCBoYXMgCitub3QgYmVlbiBhZGRlZCB0byB0aGUgbmNyNTNjOHh4IGRyaXZlciwgc2luY2UgaXQgaGFzIGJlZW4gcmVwb3J0ZWQgdG8gCitjb25mdXNlIHVzZXJzIHdobyB1c2UgdGhpcyBkcml2ZXIgc2luY2UgYSBsb25nIHRpbWUuIElmIHlvdSBkZXNpcmUgYSAKK2NvbnRyb2xsZXIgbm90IHRvIGJlIGF0dGFjaGVkIGJ5IHRoZSBuY3I1M2M4eHggZHJpdmVyIGF0IExpbnV4IGJvb3QsIHlvdSAKK211c3QgdXNlIHRoZSAnZXhjbCcgZHJpdmVyIGJvb3Qgb3B0aW9uLgorCisxMC42IFNDU0kgQlVTIGNoZWNraW5nIGJvb3Qgb3B0aW9uLgorCitXaGVuIHRoaXMgb3B0aW9uIGlzIHNldCB0byBhIG5vbi16ZXJvIHZhbHVlLCB0aGUgZHJpdmVyIGNoZWNrcyBTQ1NJIGxpbmVzIAorbG9naWMgc3RhdGUsIDEwMCBtaWNyby1zZWNvbmRzIGFmdGVyIGhhdmluZyBhc3NlcnRlZCB0aGUgU0NTSSBSRVNFVCBsaW5lLgorVGhlIGRyaXZlciBqdXN0IHJlYWRzIFNDU0kgbGluZXMgYW5kIGNoZWNrcyBhbGwgbGluZXMgcmVhZCBGQUxTRSBleGNlcHQgUkVTRVQuCitTaW5jZSBTQ1NJIGRldmljZXMgc2hhbGwgcmVsZWFzZSB0aGUgQlVTIGF0IG1vc3QgODAwIG5hbm8tc2Vjb25kcyBhZnRlciBTQ1NJIAorUkVTRVQgaGFzIGJlZW4gYXNzZXJ0ZWQsIGFueSBzaWduYWwgdG8gVFJVRSBtYXkgaW5kaWNhdGUgYSBTQ1NJIEJVUyBwcm9ibGVtLgorVW5mb3J0dW5hdGVseSwgdGhlIGZvbGxvd2luZyBjb21tb24gU0NTSSBCVVMgcHJvYmxlbXMgYXJlIG5vdCBkZXRlY3RlZDoKKy0gT25seSAxIHRlcm1pbmF0b3IgaW5zdGFsbGVkLgorLSBNaXNwbGFjZWQgdGVybWluYXRvcnMuCistIEJhZCBxdWFsaXR5IHRlcm1pbmF0b3JzLgorT24gdGhlIG90aGVyIGhhbmQsIGVpdGhlciBiYWQgY2FibGluZywgYnJva2VuIGRldmljZXMsIG5vdCBjb25mb3JtYW50IAorZGV2aWNlcywgLi4uIG1heSBjYXVzZSBhIFNDU0kgc2lnbmFsIHRvIGJlIHdyb25nIHdoZW4gdGUgZHJpdmVyIHJlYWRzIGl0LgorCisxMC43IElNTUVESUFURSBBUkJJVFJBVElPTiBib290IG9wdGlvbgorCitUaGlzIG9wdGlvbiBpcyBvbmx5IHN1cHBvcnRlZCBieSB0aGUgU1lNNTNDOFhYIGRyaXZlciAobm90IGJ5IHRoZSBOQ1I1M0M4WFgpLgorCitTWU1CSU9TIDUzQzhYWCBjaGlwcyBhcmUgYWJsZSB0byBhcmJpdHJhdGUgZm9yIHRoZSBTQ1NJIEJVUyBhcyBzb29uIGFzIHRoZXkgCitoYXZlIGRldGVjdGVkIGFuIGV4cGVjdGVkIGRpc2Nvbm5lY3Rpb24gKEJVUyBGUkVFIFBIQVNFKS4gRm9yIHRoaXMgcHJvY2VzcyAKK3RvIGJlIHN0YXJ0ZWQsIGJpdCAxIG9mIFNDTlRMMSBJTyByZWdpc3RlciBtdXN0IGJlIHNldCB3aGVuIHRoZSBjaGlwIGlzIAorY29ubmVjdGVkIHRvIHRoZSBTQ1NJIEJVUy4KKworV2hlbiB0aGlzIGZlYXR1cmUgaGFzIGJlZW4gZW5hYmxlZCBmb3IgdGhlIGN1cnJlbnQgY29ubmVjdGlvbiwgdGhlIGNoaXAgaGFzIAorZXZlcnkgY2hhbmNlIHRvIHdpbiBhcmJpdHJhdGlvbiBpZiBvbmx5IGRldmljZXMgd2l0aCBsb3dlciBwcmlvcml0eSBhcmUgCitjb21wZXRpbmcgZm9yIHRoZSBTQ1NJIEJVUy4gQnkgdGhlIHdheSwgd2hlbiB0aGUgY2hpcCBpcyB1c2luZyBTQ1NJIGlkIDcsIAordGhlbiBpdCB3aWxsIGZvciBzdXJlIHdpbiB0aGUgbmV4dCBTQ1NJIEJVUyBhcmJpdHJhdGlvbi4KKworU2luY2UsIHRoZXJlIGlzIG5vIHdheSB0byBrbm93IHdoYXQgZGV2aWNlcyBhcmUgdHJ5aW5nIHRvIGFyYml0cmF0ZSBmb3IgdGhlIAorQlVTLCB1c2luZyB0aGlzIGZlYXR1cmUgY2FuIGJlIGV4dHJlbWVseSB1bmZhaXIuIFNvLCB5b3UgYXJlIG5vdCBhZHZpc2VkCit0byBlbmFibGUgaXQsIG9yIGF0IG1vc3QgZW5hYmxlIHRoaXMgZmVhdHVyZSBmb3IgdGhlIGNhc2UgdGhlIGNoaXAgbG9zdCAKK3RoZSBwcmV2aW91cyBhcmJpdHJhdGlvbiAoYm9vdCBvcHRpb24gJ2lhcmI6MScpLgorCitUaGlzIGZlYXR1cmUgaGFzIHRoZSBmb2xsb3dpbmcgYWR2YW50YWdlczoKKworYSkgQWxsb3cgdGhlIGluaXRpYXRvciB3aXRoIElEIDcgdG8gd2luIGFyYml0cmF0aW9uIHdoZW4gaXQgd2FudHMgc28uCitiKSBPdmVybGFwIGF0IGxlYXN0IDQgbWljcm8tc2Vjb25kcyBvZiBhcmJpdHJhdGlvbiB0aW1lIHdpdGggdGhlIGV4ZWN1dGlvbiAKKyAgIG9mIFNDUklQVFMgdGhhdCBkZWFsIHdpdGggdGhlIGVuZCBvZiB0aGUgY3VycmVudCBjb25uZWN0aW9uIGFuZCB0aGF0IAorICAgc3RhcnRzIHRoZSBuZXh0IGpvYi4KKworSG1tbS4uLiBCdXQgKGEpIG1heSBqdXN0IHByZXZlbnQgb3RoZXIgZGV2aWNlcyBmcm9tIHJlc2VsZWN0aW5nIHRoZSBpbml0aWF0b3IsIAorYW5kIGRlbGF5IGRhdGEgdHJhbnNmZXJzIG9yIHN0YXR1cy9jb21wbGV0aW9ucywgYW5kIChiKSBtYXkganVzdCB3YXN0ZSAKK1NDU0kgQlVTIGJhbmR3aWR0aCBpZiB0aGUgU0NSSVBUUyBleGVjdXRpb24gbGFzdHMgbW9yZSB0aGFuIDQgbWljcm8tc2Vjb25kcy4KKworVGhlIHVzZSBvZiBJQVJCIG5lZWRzIHRoZSBTQ1NJX05DUl9JQVJCX1NVUFBPUlQgb3B0aW9uIHRvIGhhdmUgYmVlbiBkZWZpbmVkIAorYXQgY29tcGlsZSB0aW1lIGFuZCB0aGUgJ2lhcmInIGJvb3Qgb3B0aW9uIHRvIGhhdmUgYmVlbiBzZXQgdG8gYSBub24gemVybyAKK3ZhbHVlIGF0IGJvb3QgdGltZS4gSXQgaXMgbm90IHRoYXQgdXNlZnVsIGZvciByZWFsIHdvcmssIGJ1dCBjYW4gYmUgdXNlZCAKK3RvIHN0cmVzcyBTQ1NJIGRldmljZXMgb3IgZm9yIHNvbWUgYXBwbGljYXRpb25zIHRoYXQgY2FuIGdhaW4gYWR2YW50YWdlIG9mIAoraXQuIEJ5IHRoZSB3YXksIGlmIHlvdSBleHBlcmllbmNlIGJhZG5lc3NlcyBsaWtlICd1bmV4cGVjdGVkIGRpc2Nvbm5lY3Rpb25zJywgCisnYmFkIHJlc2VsZWN0aW9ucycsIGV0Yy4uLiB3aGVuIHVzaW5nIElBUkIgb24gaGVhdnkgSU8gbG9hZCwgeW91IHNob3VsZCBub3QgCitiZSBzdXJwcmlzZWQsIGJlY2F1c2UgZm9yY2UtZmVlZGluZyBhbnl0aGluZyBhbmQgYmxvY2tpbmcgaXRzIGFyc2UgYXQgdGhlIAorc2FtZSB0aW1lIGNhbm5vdCB3b3JrIGZvciBhIGxvbmcgdGltZS4gOi0pKQorCisKKzExLiBTb21lIGNvbnN0YW50cyBhbmQgZmxhZ3Mgb2YgdGhlIG5jcjUzYzh4eC5oIGhlYWRlciBmaWxlCisKK1NvbWUgb2YgdGhlc2UgYXJlIGRlZmluZWQgZnJvbSB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLiAgVG8KK2NoYW5nZSBvdGhlciAiZGVmaW5lcyIsIHlvdSBtdXN0IGVkaXQgdGhlIGhlYWRlciBmaWxlLiAgRG8gdGhhdCBvbmx5CitpZiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcuCisKK1NDU0lfTkNSX1NFVFVQX1NQRUNJQUxfRkVBVFVSRVMJKGRlZmF1bHQ6IGRlZmluZWQpCisJSWYgZGVmaW5lZCwgdGhlIGRyaXZlciB3aWxsIGVuYWJsZSBzb21lIHNwZWNpYWwgZmVhdHVyZXMgYWNjb3JkaW5nICAKKwl0byBjaGlwIGFuZCByZXZpc2lvbiBpZC4KKyAgICAgICAgRm9yIDgxMEEsIDg2MCwgODI1QSwgODc1IGFuZCA4OTUgc2NzaSBjaGlwcywgdGhpcyBvcHRpb24gZW5hYmxlcyAKKwlzdXBwb3J0IG9mIGZlYXR1cmVzIHRoYXQgcmVkdWNlIGxvYWQgb2YgUENJIGJ1cyBhbmQgbWVtb3J5IGFjY2Vzc2VzIAorCWR1cmluZyAgc2NzaSB0cmFuc2ZlciBwcm9jZXNzaW5nOiBidXJzdCBvcC1jb2RlIGZldGNoLCByZWFkIG11bHRpcGxlLCAKKyAgICAgICAgcmVhZCBsaW5lLCBwcmVmZXRjaCwgY2FjaGUgbGluZSwgd3JpdGUgYW5kIGludmFsaWRhdGUsIAorICAgICAgICBidXJzdCAxMjggKDg3NSBvbmx5KSwgbGFyZ2UgZG1hIGZpZm8gKDg3NSBvbmx5KSwgb2Zmc2V0IDE2ICg4NzUgb25seSkuCisJQ2FuIGJlIGNoYW5nZWQgYnkgdGhlIGZvbGxvd2luZyBib290IHNldHVwIGNvbW1hbmQ6CisJCW5jcjUzYzh4eD1zcGVjZjpuCisKK1NDU0lfTkNSX0lPTUFQUEVECQkoZGVmYXVsdDogbm90IGRlZmluZWQpCisJSWYgZGVmaW5lZCwgbm9ybWFsIEkvTyBpcyBmb3JjZWQuCisKK1NDU0lfTkNSX1NIQVJFX0lSUQkJKGRlZmF1bHQ6IGRlZmluZWQpCisJSWYgZGVmaW5lZCwgcmVxdWVzdCBzaGFyZWQgSVJRLgorCQorU0NTSV9OQ1JfTUFYX1RBR1MJCShkZWZhdWx0OiA4KQorCU1heGltdW0gbnVtYmVyIG9mIHNpbXVsdGFuZW91cyB0YWdnZWQgY29tbWFuZHMgdG8gYSBkZXZpY2UuCisJQ2FuIGJlIGNoYW5nZWQgYnkgInNldHRhZ3MgPHRhcmdldD4gPG1heHRhZ3M+IgorCitTQ1NJX05DUl9TRVRVUF9ERUZBVUxUX1NZTkMgICAgIChkZWZhdWx0OiA1MCkKKwlUcmFuc2ZlciBwZXJpb2QgZmFjdG9yIHRoZSBkcml2ZXIgd2lsbCB1c2UgYXQgYm9vdCB0aW1lIGZvciBzeW5jaHJvbm91cyAKKwluZWdvdGlhdGlvbi4gMCBtZWFucyBhc3luY2hyb25vdXMuCisJQ2FuIGJlIGNoYW5nZWQgYnkgInNldHN5bmMgPHRhcmdldD4gPHBlcmlvZCBmYWN0b3I+IgorCitTQ1NJX05DUl9TRVRVUF9ERUZBVUxUX1RBR1MgICAgIChkZWZhdWx0OiA4KQorCURlZmF1bHQgbnVtYmVyIG9mIHNpbXVsdGFuZW91cyB0YWdnZWQgY29tbWFuZHMgdG8gYSBkZXZpY2UuCisJPCAxIG1lYW5zIHRhZ2dlZCBjb21tYW5kIHF1ZXVpbmcgZGlzYWJsZWQgYXQgc3RhcnQtdXAuCisKK1NDU0lfTkNSX0FMV0FZU19TSU1QTEVfVEFHCShkZWZhdWx0OiBkZWZpbmVkKQorCVVzZSBTSU1QTEUgVEFHIGZvciByZWFkIGFuZCB3cml0ZSBjb21tYW5kcy4KKwlDYW4gYmUgY2hhbmdlZCBieSAic2V0b3JkZXIgPG9yZGVyZWR8c2ltcGxlfGRlZmF1bHQ+IgorCitTQ1NJX05DUl9TRVRVUF9ESVNDT05ORUNUSU9OCShkZWZhdWx0OiBkZWZpbmVkKQorCUlmIGRlZmluZWQsIHRhcmdldHMgYXJlIGFsbG93ZWQgdG8gZGlzY29ubmVjdC4KKworU0NTSV9OQ1JfU0VUVVBfRk9SQ0VfU1lOQ19ORUdPCShkZWZhdWx0OiBub3QgZGVmaW5lZCkKKwlJZiBkZWZpbmVkLCBzeW5jaHJvbm91cyBuZWdvdGlhdGlvbiBpcyB0cmllZCBmb3IgYWxsIFNDU0ktMiBkZXZpY2VzLgorCUNhbiBiZSBjaGFuZ2VkIGJ5ICJzZXRzeW5jIDx0YXJnZXQ+IDxwZXJpb2Q+IgorCitTQ1NJX05DUl9TRVRVUF9NQVNURVJfUEFSSVRZCShkZWZhdWx0OiBkZWZpbmVkKQorCUlmIGRlZmluZWQsIG1hc3RlciBwYXJpdHkgY2hlY2tpbmcgaXMgZW5hYmxlZC4KKworU0NTSV9OQ1JfU0VUVVBfU0NTSV9QQVJJVFkJKGRlZmF1bHQ6IGRlZmluZWQpCisJSWYgZGVmaW5lZCwgU0NTSSBwYXJpdHkgY2hlY2tpbmcgaXMgZW5hYmxlZC4KKworU0NTSV9OQ1JfUFJPRklMRV9TVVBQT1JUCShkZWZhdWx0OiBub3QgZGVmaW5lZCkKKwlJZiBkZWZpbmVkLCBwcm9maWxpbmcgaW5mb3JtYXRpb24gaXMgZ2F0aGVyZWQuCisKK1NDU0lfTkNSX01BWF9TQ0FUVEVSCQkoZGVmYXVsdDogMTI4KQorCVNjYXR0ZXIgbGlzdCBzaXplIG9mIHRoZSBkcml2ZXIgY2NiLgorCitTQ1NJX05DUl9NQVhfVEFSR0VUCQkoZGVmYXVsdDogMTYpCisJTWF4IG51bWJlciBvZiB0YXJnZXRzIHBlciBob3N0LgorCitTQ1NJX05DUl9NQVhfSE9TVAkJKGRlZmF1bHQ6IDIpCisJTWF4IG51bWJlciBvZiBob3N0IGNvbnRyb2xsZXJzLgorCitTQ1NJX05DUl9TRVRUTEVfVElNRQkJKGRlZmF1bHQ6IDIpCisJTnVtYmVyIG9mIHNlY29uZHMgdGhlIGRyaXZlciB3aWxsIHdhaXQgYWZ0ZXIgcmVzZXQuCisKK1NDU0lfTkNSX1RJTUVPVVRfQUxFUlQJCShkZWZhdWx0OiAzKQorCUlmIGEgcGVuZGluZyBjb21tYW5kIHdpbGwgdGltZSBvdXQgYWZ0ZXIgdGhpcyBhbW91bnQgb2Ygc2Vjb25kcywKKwlhbiBvcmRlcmVkIHRhZyBpcyB1c2VkIGZvciB0aGUgbmV4dCBjb21tYW5kLgorCUF2b2lkcyB0aW1lb3V0cyBmb3IgdW5vcmRlcmVkIHRhZ2dlZCBjb21tYW5kcy4KKworU0NTSV9OQ1JfQ0FOX1FVRVVFCQkoZGVmYXVsdDogNypTQ1NJX05DUl9NQVhfVEFHUykKKwlNYXggbnVtYmVyIG9mIGNvbW1hbmRzIHRoYXQgY2FuIGJlIHF1ZXVlZCB0byBhIGhvc3QuCisKK1NDU0lfTkNSX0NNRF9QRVJfTFVOCQkoZGVmYXVsdDogU0NTSV9OQ1JfTUFYX1RBR1MpCisJTWF4IG51bWJlciBvZiBjb21tYW5kcyBxdWV1ZWQgdG8gYSBob3N0IGZvciBhIGRldmljZS4KKworU0NTSV9OQ1JfU0dfVEFCTEVTSVpFCQkoZGVmYXVsdDogU0NTSV9OQ1JfTUFYX1NDQVRURVItMSkKKwlNYXggc2l6ZSBvZiB0aGUgTGludXggc2NhdHRlci9nYXRoZXIgbGlzdC4KKworU0NTSV9OQ1JfTUFYX0xVTgkoZGVmYXVsdDogOCkKKwlNYXggbnVtYmVyIG9mIExVTnMgcGVyIHRhcmdldC4KKworCisxMi4gSW5zdGFsbGF0aW9uCisKK1RoaXMgZHJpdmVyIGlzIHBhcnQgb2YgdGhlIGxpbnV4IGtlcm5lbCBkaXN0cmlidXRpb24uCitEcml2ZXIgZmlsZXMgYXJlIGxvY2F0ZWQgaW4gdGhlIHN1Yi1kaXJlY3RvcnkgImRyaXZlcnMvc2NzaSIgb2YgdGhlIAora2VybmVsIHNvdXJjZSB0cmVlLgorCitEcml2ZXIgZmlsZXM6CisKKwlSRUFETUUubmNyNTNjOHh4CTogdGhpcyBmaWxlCisJQ2hhbmdlTG9nLm5jcjUzYzh4eAk6IGNoYW5nZSBsb2cKKwluY3I1M2M4eHguaAkJOiBkZWZpbml0aW9ucworCW5jcjUzYzh4eC5jCQk6IHRoZSBkcml2ZXIgY29kZQorCitOZXcgZHJpdmVyIHZlcnNpb25zIGFyZSBtYWRlIGF2YWlsYWJsZSBzZXBhcmF0ZWx5IGluIG9yZGVyIHRvIGFsbG93IHRlc3RpbmcgCitjaGFuZ2VzIGFuZCBuZXcgZmVhdHVyZXMgcHJpb3IgdG8gaW5jbHVkaW5nIHRoZW0gaW50byB0aGUgbGludXgga2VybmVsIAorZGlzdHJpYnV0aW9uLiBUaGUgZm9sbG93aW5nIFVSTCBwcm92aWRlcyBpbmZvcm1hdGlvbiBvbiBsYXRlc3QgYXZhaWxhYmxlIAorcGF0Y2hlczogCisKKyAgICAgIGZ0cDovL2Z0cC50dXgub3JnL3B1Yi9wZW9wbGUvZ2VyYXJkLXJvdWRpZXIvUkVBRE1FCisKKworMTMuIEFyY2hpdGVjdHVyZSBkZXBlbmRlbnQgZmVhdHVyZXMuCisKKzxOb3QgeWV0IHdyaXR0ZW4+CisKKworMTQuIEtub3duIHByb2JsZW1zCisKKzE0LjEgVGFnZ2VkIGNvbW1hbmRzIHdpdGggSW9tZWdhIEpheiBkZXZpY2UKKworSSBoYXZlIG5vdCB0cmllZCB0aGlzIGRldmljZSwgaG93ZXZlciBpdCBoYXMgYmVlbiByZXBvcnRlZCB0byBtZSB0aGUKK2ZvbGxvd2luZzogVGhpcyBkZXZpY2UgaXMgY2FwYWJsZSBvZiBUYWdnZWQgY29tbWFuZCBxdWV1aW5nLiBIb3dldmVyCit3aGlsZSBzcGlubmluZyB1cCwgaXQgcmVqZWN0cyBUYWdnZWQgY29tbWFuZHMuIFRoaXMgYmVoYXZpb3VyIGlzCitjb25mb3JtcyB0byA2LjguMiBvZiBTQ1NJLTIgc3BlY2lmaWNhdGlvbnMuIFRoZSBjdXJyZW50IGJlaGF2aW91ciBvZgordGhlIGRyaXZlciBpbiB0aGF0IHNpdHVhdGlvbiBpcyBub3Qgc2F0aXNmeWluZy4gU28gZG8gbm90IGVuYWJsZQorVGFnZ2VkIGNvbW1hbmQgcXVldWluZyBmb3IgZGV2aWNlcyB0aGF0IGFyZSBhYmxlIHRvIHNwaW4gZG93bi4gIFRoZQorb3RoZXIgcHJvYmxlbSB0aGF0IG1heSBhcHBlYXIgaXMgdGltZW91dHMuIFRoZSBvbmx5IHdheSB0byBhdm9pZAordGltZW91dHMgc2VlbXMgdG8gZWRpdCBsaW51eC9kcml2ZXJzL3Njc2kvc2QuYyBhbmQgdG8gaW5jcmVhc2UgdGhlCitjdXJyZW50IHRpbWVvdXQgdmFsdWVzLgorCisxNC4yIERldmljZSBuYW1lcyBjaGFuZ2Ugd2hlbiBhbm90aGVyIGNvbnRyb2xsZXIgaXMgYWRkZWQuCisKK1doZW4geW91IGFkZCBhIG5ldyBOQ1I1M0M4WFggY2hpcCBiYXNlZCBjb250cm9sbGVyIHRvIGEgc3lzdGVtIHRoYXQgYWxyZWFkeSAKK2hhcyBvbmUgb3IgbW9yZSBjb250cm9sbGVycyBvZiB0aGlzIGZhbWlseSwgaXQgbWF5IGhhcHBlbiB0aGF0IHRoZSBvcmRlciAKK3RoZSBkcml2ZXIgcmVnaXN0ZXJzIHRoZW0gdG8gdGhlIGtlcm5lbCBjYXVzZXMgcHJvYmxlbXMgZHVlIHRvIGRldmljZSAKK25hbWUgY2hhbmdlcy4KK1doZW4gYXQgbGVhc3Qgb25lIGNvbnRyb2xsZXIgdXNlcyBOdlJBTSwgU0RNUyBCSU9TIHZlcnNpb24gNCBhbGxvd3MgeW91IHRvIAorZGVmaW5lIHRoZSBvcmRlciB0aGUgQklPUyB3aWxsIHNjYW4gdGhlIHNjc2kgYm9hcmRzLiBUaGUgZHJpdmVyIGF0dGFjaGVzIAorY29udHJvbGxlcnMgYWNjb3JkaW5nIHRvIEJJT1MgaW5mb3JtYXRpb24gaWYgTnZSQU0gZGV0ZWN0IG9wdGlvbiBpcyBzZXQuCisKK0lmIHlvdXIgY29udHJvbGxlcnMgZG8gbm90IGhhdmUgTnZSQU0sIHlvdSBjYW46CisKKy0gQXNrIHRoZSBkcml2ZXIgdG8gcHJvYmUgY2hpcCBpZHMgaW4gcmV2ZXJzZSBvcmRlciBmcm9tIHRoZSBib290IGNvbW1hbmQKKyAgbGluZTogbmNyNTNjOHh4PXJldnByb2I6eQorLSBNYWtlIGFwcHJvcHJpYXRlIGNoYW5nZXMgaW4gdGhlIGZzdGFiLgorLSBVc2UgdGhlICdzY3NpZGV2JyB0b29sIGZyb20gRXJpYyBZb3VuZ2RhbGUuCisKKzE0LjMgVXNpbmcgb25seSA4IGJpdCBkZXZpY2VzIHdpdGggYSBXSURFIFNDU0kgY29udHJvbGxlci4KKworV2hlbiBvbmx5IDggYml0IE5BUlJPVyBkZXZpY2VzIGFyZSBjb25uZWN0ZWQgdG8gYSAxNiBiaXQgV0lERSBTQ1NJIGNvbnRyb2xsZXIsIAoreW91IG11c3QgZW5zdXJlIHRoYXQgbGluZXMgb2YgdGhlIHdpZGUgcGFydCBvZiB0aGUgU0NTSSBCVVMgYXJlIHB1bGxlZC11cC4KK1RoaXMgY2FuIGJlIGFjaGlldmVkIGJ5IEVOQUJMSU5HIHRoZSBXSURFIFRFUk1JTkFUT1IgcG9ydGlvbiBvZiB0aGUgU0NTSSAKK2NvbnRyb2xsZXIgY2FyZC4KK1RoZSBUWUFOIDEzNjUgZG9jdW1lbnRhdGlvbiByZXZpc2lvbiAxLjIgaXMgbm90IGNvcnJlY3QgYWJvdXQgc3VjaCBzZXR0aW5ncy4KKyhwYWdlIDEwLCBmaWd1cmUgMy4zKS4KKworMTQuNCBQb3NzaWJsZSBkYXRhIGNvcnJ1cHRpb24gZHVyaW5nIGEgTWVtb3J5IFdyaXRlIGFuZCBJbnZhbGlkYXRlCisKK1RoaXMgcHJvYmxlbSBpcyBkZXNjcmliZWQgaW4gU1lNQklPUyBERUwgMzk3LCBQYXJ0IE51bWJlciA2OS0wMzkyNDEsIElURU0gNC4KKworSW4gc29tZSBjb21wbGV4IHNpdHVhdGlvbnMsIDUzQzg3NSBjaGlwcyByZXZpc2lvbiA8PSAzIG1heSBzdGFydCBhIFBDSSAKK1dyaXRlIGFuZCBJbnZhbGlkYXRlIENvbW1hbmQgYXQgYSBub3QgY2FjaGUtbGluZS1hbGlnbmVkIDQgRFdPUkRTIGJvdW5kYXJ5LgorVGhpcyBpcyBvbmx5IHBvc3NpYmxlIHdoZW4gQ2FjaGUgTGluZSBTaXplIGlzIDggRFdPUkRTIG9yIGdyZWF0ZXIuCitQZW50aXVtIHN5c3RlbXMgdXNlIGEgOCBEV09SRFMgY2FjaGUgbGluZSBzaXplIGFuZCBzbyBhcmUgY29uY2VybmVkIGJ5IAordGhpcyBjaGlwIGJ1ZywgdW5saWtlIGk0ODYgc3lzdGVtcyB0aGF0IHVzZSBhIDQgRFdPUkRTIGNhY2hlIGxpbmUgc2l6ZS4KKworV2hlbiB0aGlzIHNpdHVhdGlvbiBvY2N1cnMsIHRoZSBjaGlwIG1heSBjb21wbGV0ZSB0aGUgV3JpdGUgYW5kIEludmFsaWRhdGUgCitjb21tYW5kIGFmdGVyIGhhdmluZyBvbmx5IGZpbGxlZCBwYXJ0IG9mIHRoZSBsYXN0IGNhY2hlIGxpbmUgaW52b2x2ZWQgaW4gCit0aGUgdHJhbnNmZXIsIGxlYXZpbmcgdG8gZGF0YSBjb3JydXB0aW9uIHRoZSByZW1haW5kZXIgb2YgdGhpcyBjYWNoZSBsaW5lLgorCitOb3QgdXNpbmcgV3JpdGUgQW5kIEludmFsaWRhdGUgb2J2aW91c2x5IGdldHMgcmlkIG9mIHRoaXMgY2hpcCBidWcsIGFuZCBzbyAKK2l0IGlzIG5vdyB0aGUgZGVmYXVsdCBzZXR0aW5nIG9mIHRoZSBkcml2ZXIuCitIb3dldmVyLCBmb3IgcGVvcGxlIGxpa2UgbWUgd2hvIHdhbnQgdG8gZW5hYmxlIHRoaXMgZmVhdHVyZSwgSSBoYXZlIGFkZGVkIAorcGFydCBvZiBhIHdvcmstYXJvdW5kIHN1Z2dlc3RlZCBieSBTWU1CSU9TLiBUaGlzIHdvcmstYXJvdW5kIHJlc2V0cyB0aGUgCithZGRyZXNzaW5nIGxvZ2ljIHdoZW4gdGhlIERBVEEgSU4gcGhhc2UgaXMgZW50ZXJlZCBhbmQgc28gcHJldmVudHMgdGhlIGJ1ZyAKK2Zyb20gYmVpbmcgdHJpZ2dlcmVkIGZvciB0aGUgZmlyc3QgU0NTSSBNT1ZFIG9mIHRoZSBwaGFzZS4gVGhpcyB3b3JrLWFyb3VuZCAKK3Nob3VsZCBiZSBlbm91Z2ggYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmc6CisKK1RoZSBvbmx5IGRyaXZlciBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZSB0aGF0IGlzIGdyZWF0ZXIgdGhhbiA4IERXT1JEUyAgYW5kIAordGhhdCBpcyBtb3ZlZCBieSB0aGUgU0NSSVBUUyBwcm9jZXNzb3IgaXMgdGhlICdDQ0IgaGVhZGVyJyB0aGF0IGNvbnRhaW5zIAordGhlIGNvbnRleHQgb2YgdGhlIFNDU0kgdHJhbnNmZXIuIFRoaXMgZGF0YSBzdHJ1Y3R1cmUgaXMgYWxpZ25lZCBvbiA4IERXT1JEUyAKK2JvdW5kYXJ5IChQZW50aXVtIENhY2hlIExpbmUgU2l6ZSksIGFuZCBzbyBpcyBpbW11bmUgdG8gdGhpcyBjaGlwIGJ1ZywgYXQgCitsZWFzdCBvbiBQZW50aXVtIHN5c3RlbXMuCitCdXQgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBidWcgY2FuIGJlIG1ldCB3aGVuIGEgU0NTSSByZWFkIGNvbW1hbmQgaXMgCitwZXJmb3JtZWQgdXNpbmcgYSBidWZmZXIgdGhhdCBpcyA0IERXT1JEUyBidXQgbm90IGNhY2hlLWxpbmUgYWxpZ25lZC4KK1RoaXMgY2Fubm90IGhhcHBlbiB1bmRlciBMaW51eCB3aGVuIHNjYXR0ZXIvZ2F0aGVyIGxpc3RzIGFyZSB1c2VkIHNpbmNlIAordGhleSBvbmx5IHJlZmVyIHRvIHN5c3RlbSBidWZmZXJzIHRoYXQgYXJlIHdlbGwgYWxpZ25lZC4gU28sIGEgd29yayBhcm91bmQgCittYXkgb25seSBiZSBuZWVkZWQgdW5kZXIgTGludXggd2hlbiBhIHNjYXR0ZXIvZ2F0aGVyIGxpc3QgaXMgbm90IHVzZWQgYW5kIAord2hlbiB0aGUgU0NTSSBEQVRBIElOIHBoYXNlIGlzIHJlZW50ZXJlZCBhZnRlciBhIHBoYXNlIG1pc21hdGNoLgorCisxNS4gU0NTSSBwcm9ibGVtIHRyb3VibGVzaG9vdGluZworCisxNS4xIFByb2JsZW0gdHJhY2tpbmcKKworTW9zdCBTQ1NJIHByb2JsZW1zIGFyZSBkdWUgdG8gYSBub24gY29uZm9ybWFudCBTQ1NJIGJ1cyBvciB0byBidWdneQorZGV2aWNlcy4gIElmIHVuZm9ydHVuYXRlbHkgeW91IGhhdmUgU0NTSSBwcm9ibGVtcywgeW91IGNhbiBjaGVjayB0aGUKK2ZvbGxvd2luZyB0aGluZ3M6CisKKy0gU0NTSSBidXMgY2FibGVzCistIHRlcm1pbmF0aW9ucyBhdCBib3RoIGVuZCBvZiB0aGUgU0NTSSBjaGFpbgorLSBsaW51eCBzeXNsb2cgbWVzc2FnZXMgKHNvbWUgb2YgdGhlbSBtYXkgaGVscCB5b3UpCisKK0lmIHlvdSBkbyBub3QgZmluZCB0aGUgc291cmNlIG9mIHByb2JsZW1zLCB5b3UgY2FuIGNvbmZpZ3VyZSB0aGUKK2RyaXZlciB3aXRoIG5vIGZlYXR1cmVzIGVuYWJsZWQuCisKKy0gb25seSBhc3luY2hyb25vdXMgZGF0YSB0cmFuc2ZlcnMKKy0gdGFnZ2VkIGNvbW1hbmRzIGRpc2FibGVkCistIGRpc2Nvbm5lY3Rpb25zIG5vdCBhbGxvd2VkCisKK05vdywgaWYgeW91ciBTQ1NJIGJ1cyBpcyBvaywgeW91ciBzeXN0ZW0gaGF2ZSBldmVyeSBjaGFuY2UgdG8gd29yaword2l0aCB0aGlzIHNhZmUgY29uZmlndXJhdGlvbiBidXQgcGVyZm9ybWFuY2VzIHdpbGwgbm90IGJlIG9wdGltYWwuCisKK0lmIGl0IHN0aWxsIGZhaWxzLCB0aGVuIHlvdSBjYW4gc2VuZCB5b3VyIHByb2JsZW0gZGVzY3JpcHRpb24gdG8KK2FwcHJvcHJpYXRlIG1haWxpbmcgbGlzdHMgb3IgbmV3cy1ncm91cHMuICBTZW5kIG1lIGEgY29weSBpbiBvcmRlciB0bworYmUgc3VyZSBJIHdpbGwgcmVjZWl2ZSBpdC4gIE9idmlvdXNseSwgYSBidWcgaW4gdGhlIGRyaXZlciBjb2RlIGlzCitwb3NzaWJsZS4KKworICAgICBNeSBlbWFpbCBhZGRyZXNzOiBHZXJhcmQgUm91ZGllciA8Z3JvdWRpZXJAZnJlZS5mcj4KKworQWxsb3dpbmcgZGlzY29ubmVjdGlvbnMgaXMgaW1wb3J0YW50IGlmIHlvdSB1c2Ugc2V2ZXJhbCBkZXZpY2VzIG9uCit5b3VyIFNDU0kgYnVzIGJ1dCBvZnRlbiBjYXVzZXMgcHJvYmxlbXMgd2l0aCBidWdneSBkZXZpY2VzLgorU3luY2hyb25vdXMgZGF0YSB0cmFuc2ZlcnMgaW5jcmVhc2VzIHRocm91Z2hwdXQgb2YgZmFzdCBkZXZpY2VzIGxpa2UKK2hhcmQgZGlza3MuICBHb29kIFNDU0kgaGFyZCBkaXNrcyB3aXRoIGEgbGFyZ2UgY2FjaGUgZ2FpbiBhZHZhbnRhZ2Ugb2YKK3RhZ2dlZCBjb21tYW5kcyBxdWV1aW5nLgorCitUcnkgdG8gZW5hYmxlIG9uZSBmZWF0dXJlIGF0IGEgdGltZSB3aXRoIGNvbnRyb2wgY29tbWFuZHMuICBGb3IgZXhhbXBsZToKKworLSBlY2hvICJzZXRzeW5jIGFsbCAyNSIgPi9wcm9jL3Njc2kvbmNyNTNjOHh4LzAKKyAgV2lsbCBlbmFibGUgZmFzdCBzeW5jaHJvbm91cyBkYXRhIHRyYW5zZmVyIG5lZ290aWF0aW9uIGZvciBhbGwgdGFyZ2V0cy4KKworLSBlY2hvICJzZXRmbGFnIDMiID4vcHJvYy9zY3NpL25jcjUzYzh4eC8wCisgIFdpbGwgcmVzZXQgZmxhZ3MgKG5vX2Rpc2MpIGZvciB0YXJnZXQgMywgYW5kIHNvIHdpbGwgYWxsb3cgaXQgdG8gZGlzY29ubmVjdCAKKyAgdGhlIFNDU0kgQnVzLgorCistIGVjaG8gInNldHRhZ3MgMyA4IiA+L3Byb2Mvc2NzaS9uY3I1M2M4eHgvMAorICBXaWxsIGVuYWJsZSB0YWdnZWQgY29tbWFuZCBxdWV1aW5nIGZvciB0YXJnZXQgMyBpZiB0aGF0IGRldmljZSBzdXBwb3J0cyBpdC4KKworT25jZSB5b3UgaGF2ZSBmb3VuZCB0aGUgZGV2aWNlIGFuZCB0aGUgZmVhdHVyZSB0aGF0IGNhdXNlIHByb2JsZW1zLCBqdXN0IAorZGlzYWJsZSB0aGF0IGZlYXR1cmUgZm9yIHRoYXQgZGV2aWNlLgorCisxNS4yIFVuZGVyc3RhbmRpbmcgaGFyZHdhcmUgZXJyb3IgcmVwb3J0cworCitXaGVuIHRoZSBkcml2ZXIgZGV0ZWN0cyBhbiB1bmV4cGVjdGVkIGVycm9yIGNvbmRpdGlvbiwgaXQgbWF5IGRpc3BsYXkgYSAKK21lc3NhZ2Ugb2YgdGhlIGZvbGxvd2luZyBwYXR0ZXJuLgorCitzeW01M2M4NzYtMDoxOiBFUlJPUiAoMDo0OCkgKDEtMjEtNjUpIChmLzk1KSBAIChzY3JpcHQgN2MwOjE5MDAwMDAwKS4KK3N5bTUzYzg3Ni0wOiBzY3JpcHQgY21kID0gMTkwMDAwMDAKK3N5bTUzYzg3Ni0wOiByZWdkdW1wOiBkYSAxMCA4MCA5NSA0NyAwZiAwMSAwNyA3NSAwMSA4MSAyMSA4MCAwMSAwOSAwMC4KKworU29tZSBmaWVsZHMgaW4gc3VjaCBhIG1lc3NhZ2UgbWF5IGhlbHAgeW91IHVuZGVyc3RhbmQgdGhlIGNhdXNlIG9mIHRoZSAKK3Byb2JsZW0sIGFzIGZvbGxvd3M6CisKK3N5bTUzYzg3Ni0wOjE6IEVSUk9SICgwOjQ4KSAoMS0yMS02NSkgKGYvOTUpIEAgKHNjcmlwdCA3YzA6MTkwMDAwMDApLgorLi4uLi4uLi4uLi4uQS4uLi4uLi4uLkIuQy4uLi5ELkUuLkYuLi4uRy5ILi4uLi4uLkkuLi4uLkouLi5LLi4uLi4uLgorCitGaWVsZCBBIDogdGFyZ2V0IG51bWJlci4KKyAgU0NTSSBJRCBvZiB0aGUgZGV2aWNlIHRoZSBjb250cm9sbGVyIHdhcyB0YWxraW5nIHdpdGggYXQgdGhlIG1vbWVudCB0aGUgCisgIGVycm9yIG9jY3Vycy4KKworRmllbGQgQiA6IERTVEFUIGlvIHJlZ2lzdGVyIChETUEgU1RBVFVTKQorICBCaXQgMHg0MCA6IE1EUEUgTWFzdGVyIERhdGEgUGFyaXR5IEVycm9yCisgICAgICAgICAgICAgRGF0YSBwYXJpdHkgZXJyb3IgZGV0ZWN0ZWQgb24gdGhlIFBDSSBCVVMuCisgIEJpdCAweDIwIDogQkYgICBCdXMgRmF1bHQKKyAgICAgICAgICAgICBQQ0kgYnVzIGZhdWx0IGNvbmRpdGlvbiBkZXRlY3RlZAorICBCaXQgMHgwMSA6IElJRCAgSWxsZWdhbCBJbnN0cnVjdGlvbiBEZXRlY3RlZAorICAgICAgICAgICAgIFNldCBieSB0aGUgY2hpcCB3aGVuIGl0IGRldGVjdHMgYW4gSWxsZWdhbCBJbnN0cnVjdGlvbiBmb3JtYXQgCisgICAgICAgICAgICAgb24gc29tZSBjb25kaXRpb24gdGhhdCBtYWtlcyBhbiBpbnN0cnVjdGlvbiBpbGxlZ2FsLgorICBCaXQgMHg4MCA6IERGRSBEbWEgRmlmbyBFbXB0eQorICAgICAgICAgICAgIFB1cmUgc3RhdHVzIGJpdCB0aGF0IGRvZXMgbm90IGluZGljYXRlIGFuIGVycm9yLgorICBJZiB0aGUgcmVwb3J0ZWQgRFNUQVQgdmFsdWUgY29udGFpbnMgYSBjb21iaW5hdGlvbiBvZiBNRFBFICgweDQwKSwgCisgIEJGICgweDIwKSwgdGhlbiB0aGUgY2F1c2UgbWF5IGJlIGxpa2VseSBkdWUgdG8gYSBQQ0kgQlVTIHByb2JsZW0uCisKK0ZpZWxkIEMgOiBTSVNUIGlvIHJlZ2lzdGVyIChTQ1NJIEludGVycnVwdCBTdGF0dXMpCisgIEJpdCAweDA4IDogU0dFICBTQ1NJIEdST1NTIEVSUk9SCisgICAgICAgICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIGNoaXAgZGV0ZWN0ZWQgYSBzZXZlcmUgZXJyb3IgY29uZGl0aW9uIAorICAgICAgICAgICAgIG9uIHRoZSBTQ1NJIEJVUyB0aGF0IHByZXZlbnRzIHRoZSBTQ1NJIHByb3RvY29sIGZyb20gZnVuY3Rpb25pbmcKKyAgICAgICAgICAgICBwcm9wZXJseS4KKyAgQml0IDB4MDQgOiBVREMgIFVuZXhwZWN0ZWQgRGlzY29ubmVjdGlvbgorICAgICAgICAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBkZXZpY2UgcmVsZWFzZWQgdGhlIFNDU0kgQlVTIHdoZW4gdGhlIGNoaXAgCisgICAgICAgICAgICAgd2FzIG5vdCBleHBlY3RpbmcgdGhpcyB0byBoYXBwZW4uIEEgZGV2aWNlIG1heSBiZWhhdmUgc28gdG8gCisgICAgICAgICAgICAgaW5kaWNhdGUgdGhlIFNDU0kgaW5pdGlhdG9yIHRoYXQgYW4gZXJyb3IgY29uZGl0aW9uIG5vdCByZXBvcnRhYmxlICAgICAgICAgICAgICB1c2luZyB0aGUgU0NTSSBwcm90b2NvbCBoYXMgb2NjdXJyZWQuCisgIEJpdCAweDAyIDogUlNUICBTQ1NJIEJVUyBSZXNldAorICAgICAgICAgICAgIEdlbmVyYWxseSBTQ1NJIHRhcmdldHMgZG8gbm90IHJlc2V0IHRoZSBTQ1NJIEJVUywgYWx0aG91Z2ggYW55IAorICAgICAgICAgICAgIGRldmljZSBvbiB0aGUgQlVTIGNhbiByZXNldCBpdCBhdCBhbnkgdGltZS4KKyAgQml0IDB4MDEgOiBQQVIgIFBhcml0eQorICAgICAgICAgICAgIFNDU0kgcGFyaXR5IGVycm9yIGRldGVjdGVkLgorICBPbiBhIGZhdWx0eSBTQ1NJIEJVUywgYW55IGVycm9yIGNvbmRpdGlvbiBhbW9uZyBTR0UgKDB4MDgpLCBVREMgKDB4MDQpIGFuZCAKKyAgUEFSICgweDAxKSBtYXkgYmUgZGV0ZWN0ZWQgYnkgdGhlIGNoaXAuIElmIHlvdXIgU0NTSSBzeXN0ZW0gc29tZXRpbWVzIAorICBlbmNvdW50ZXJzIHN1Y2ggZXJyb3IgY29uZGl0aW9ucywgZXNwZWNpYWxseSBTQ1NJIEdST1NTIEVSUk9SLCB0aGVuIGEgU0NTSSAKKyAgQlVTIHByb2JsZW0gaXMgbGlrZWx5IHRoZSBjYXVzZSBvZiB0aGVzZSBlcnJvcnMuCisKK0ZvciBmaWVsZHMgRCxFLEYsRyBhbmQgSCwgeW91IG1heSBsb29rIGludG8gdGhlIHN5bTUzYzh4eF9kZWZzLmggZmlsZSAKK3RoYXQgY29udGFpbnMgc29tZSBtaW5pbWFsIGNvbW1lbnRzIG9uIElPIHJlZ2lzdGVyIGJpdHMuCitGaWVsZCBEIDogU09DTCAgU2NzaSBPdXRwdXQgQ29udHJvbCBMYXRjaAorICAgICAgICAgIFRoaXMgcmVnaXN0ZXIgcmVmbGVjdHMgdGhlIHN0YXRlIG9mIHRoZSBTQ1NJIGNvbnRyb2wgbGluZXMgdGhlIAorICAgICAgICAgIGNoaXAgd2FudCB0byBkcml2ZSBvciBjb21wYXJlIGFnYWluc3QuCitGaWVsZCBFIDogU0JDTCAgU2NzaSBCdXMgQ29udHJvbCBMaW5lcworICAgICAgICAgIEFjdHVhbCB2YWx1ZSBvZiBjb250cm9sIGxpbmVzIG9uIHRoZSBTQ1NJIEJVUy4KK0ZpZWxkIEYgOiBTQkRMICBTY3NpIEJ1cyBEYXRhIExpbmVzCisgICAgICAgICAgQWN0dWFsIHZhbHVlIG9mIGRhdGEgbGluZXMgb24gdGhlIFNDU0kgQlVTLgorRmllbGQgRyA6IFNYRkVSICBTQ1NJIFRyYW5zZmVyCisgICAgICAgICAgQ29udGFpbnMgdGhlIHNldHRpbmcgb2YgdGhlIFN5bmNocm9ub3VzIFBlcmlvZCBmb3Igb3V0cHV0IGFuZCAKKyAgICAgICAgICB0aGUgY3VycmVudCBTeW5jaHJvbm91cyBvZmZzZXQgKG9mZnNldCAwIG1lYW5zIGFzeW5jaHJvbm91cykuCitGaWVsZCBIIDogU0NOVEwzIFNjc2kgQ29udHJvbCBSZWdpc3RlciAzCisgICAgICAgICAgQ29udGFpbnMgdGhlIHNldHRpbmcgb2YgdGltaW5nIHZhbHVlcyBmb3IgYm90aCBhc3luY2hyb25vdXMgYW5kIAorICAgICAgICAgIHN5bmNocm9ub3VzIGRhdGEgdHJhbnNmZXJzLiAKKworVW5kZXJzdGFuZGluZyBGaWVsZHMgSSwgSiwgSyBhbmQgZHVtcHMgcmVxdWlyZXMgdG8gaGF2ZSBnb29kIGtub3dsZWRnZSBvZiAKK1NDU0kgc3RhbmRhcmRzLCBjaGlwIGNvcmVzIGZ1bmN0aW9ubmFscyBhbmQgaW50ZXJuYWwgZHJpdmVyIGRhdGEgc3RydWN0dXJlcy4KK1lvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGRlY29kZSBhbmQgdW5kZXJzdGFuZCB0aGVtLCB1bmxlc3MgeW91IHdhbnQgdG8gaGVscCAKK21haW50YWluIHRoZSBkcml2ZXIgY29kZS4KKworMTYuIFN5bmNocm9ub3VzIHRyYW5zZmVyIG5lZ290aWF0aW9uIHRhYmxlcworCitUYWJsZXMgYmVsb3cgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgY2FsbGluZyB0aGUgcm91dGluZSB0aGUgZHJpdmVyIHVzZXMKK2ZvciBzeW5jaHJvbmlzYXRpb24gbmVnb3RpYXRpb24gdGltaW5nIGNhbGN1bGF0aW9uIGFuZCBjaGlwIHNldHRpbmcuCitUaGUgZmlyc3QgdGFibGUgY29ycmVzcG9uZHMgdG8gVWx0cmEgY2hpcHMgNTM4NzUgYW5kIDUzQzg2MCB3aXRoIDgwIE1IeiAKK2Nsb2NrIGFuZCA1IGNsb2NrIGRpdmlzb3JzLgorVGhlIHNlY29uZCBvbmUgaGFzIGJlZW4gY2FsY3VsYXRlZCBieSBzZXR0aW5nIHRoZSBzY3NpIGNsb2NrIHRvIDQwIE1oeiAKK2FuZCB1c2luZyA0IGNsb2NrIGRpdmlzb3JzIGFuZCBzbyBhcHBsaWVzIHRvIGFsbCBOQ1I1M0M4WFggY2hpcHMgaW4gZmFzdCAKK1NDU0ktMiBtb2RlLgorCitQZXJpb2RzIGFyZSBpbiBuYW5vLXNlY29uZHMgYW5kIHNwZWVkcyBhcmUgaW4gTWVnYS10cmFuc2ZlcnMgcGVyIHNlY29uZC4KKzEgTWVnYS10cmFuc2ZlcnMvc2Vjb25kIG1lYW5zIDEgTUIvcyB3aXRoIDggYml0cyBTQ1NJIGFuZCAyIE1CL3Mgd2l0aCAKK1dpZGUxNiBTQ1NJLgorCisxNi4xIFN5bmNocm9ub3VzIHRpbWluZ3MgZm9yIDUzQzg5NSwgNTNDODc1IGFuZCA1M0M4NjAgU0NTSSBjb250cm9sbGVycworCisgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE5lZ290aWF0ZWQgICAgICAgICAgICAgICAgICAgICBOQ1Igc2V0dGluZ3MKKyBGYWN0b3IgICBQZXJpb2QgICBTcGVlZCAgICAgICAgUGVyaW9kICAgU3BlZWQKKyAtLS0tLS0gICAtLS0tLS0gICAtLS0tLS0gICAgICAgLS0tLS0tICAgLS0tLS0tCisgMTAgICAgICAgMjUgICAgICAgNDAuMDAwICAgICAgIDI1ICAgICAgIDQwLjAwMCAgICg1M0M4OTUgb25seSkKKyAxMSAgICAgICAzMC4yICAgICAzMy4xMTIgICAgICAgMzEuMjUgICAgMzIuMDAwICAgKDUzQzg5NSBvbmx5KQorIDEyICAgICAgIDUwICAgICAgIDIwLjAwMCAgICAgICA1MCAgICAgICAyMC4wMDAKKyAxMyAgICAgICA1MiAgICAgICAxOS4yMzAgICAgICAgNjIgICAgICAgMTYuMDAwCisgMTQgICAgICAgNTYgICAgICAgMTcuODU3ICAgICAgIDYyICAgICAgIDE2LjAwMAorIDE1ICAgICAgIDYwICAgICAgIDE2LjY2NiAgICAgICA2MiAgICAgICAxNi4wMDAKKyAxNiAgICAgICA2NCAgICAgICAxNS42MjUgICAgICAgNzUgICAgICAgMTMuMzMzCisgMTcgICAgICAgNjggICAgICAgMTQuNzA1ICAgICAgIDc1ICAgICAgIDEzLjMzMworIDE4ICAgICAgIDcyICAgICAgIDEzLjg4OCAgICAgICA3NSAgICAgICAxMy4zMzMKKyAxOSAgICAgICA3NiAgICAgICAxMy4xNTcgICAgICAgODcgICAgICAgMTEuNDI4CisgMjAgICAgICAgODAgICAgICAgMTIuNTAwICAgICAgIDg3ICAgICAgIDExLjQyOAorIDIxICAgICAgIDg0ICAgICAgIDExLjkwNCAgICAgICA4NyAgICAgICAxMS40MjgKKyAyMiAgICAgICA4OCAgICAgICAxMS4zNjMgICAgICAgOTMgICAgICAgMTAuNjY2CisgMjMgICAgICAgOTIgICAgICAgMTAuODY5ICAgICAgIDkzICAgICAgIDEwLjY2NgorIDI0ICAgICAgIDk2ICAgICAgIDEwLjQxNiAgICAgIDEwMCAgICAgICAxMC4wMDAKKyAyNSAgICAgIDEwMCAgICAgICAxMC4wMDAgICAgICAxMDAgICAgICAgMTAuMDAwCisgMjYgICAgICAxMDQgICAgICAgIDkuNjE1ICAgICAgMTEyICAgICAgICA4Ljg4OAorIDI3ICAgICAgMTA4ICAgICAgICA5LjI1OSAgICAgIDExMiAgICAgICAgOC44ODgKKyAyOCAgICAgIDExMiAgICAgICAgOC45MjggICAgICAxMTIgICAgICAgIDguODg4CisgMjkgICAgICAxMTYgICAgICAgIDguNjIwICAgICAgMTI1ICAgICAgICA4LjAwMAorIDMwICAgICAgMTIwICAgICAgICA4LjMzMyAgICAgIDEyNSAgICAgICAgOC4wMDAKKyAzMSAgICAgIDEyNCAgICAgICAgOC4wNjQgICAgICAxMjUgICAgICAgIDguMDAwCisgMzIgICAgICAxMjggICAgICAgIDcuODEyICAgICAgMTMxICAgICAgICA3LjYxOQorIDMzICAgICAgMTMyICAgICAgICA3LjU3NSAgICAgIDE1MCAgICAgICAgNi42NjYKKyAzNCAgICAgIDEzNiAgICAgICAgNy4zNTIgICAgICAxNTAgICAgICAgIDYuNjY2CisgMzUgICAgICAxNDAgICAgICAgIDcuMTQyICAgICAgMTUwICAgICAgICA2LjY2NgorIDM2ICAgICAgMTQ0ICAgICAgICA2Ljk0NCAgICAgIDE1MCAgICAgICAgNi42NjYKKyAzNyAgICAgIDE0OCAgICAgICAgNi43NTYgICAgICAxNTAgICAgICAgIDYuNjY2CisgMzggICAgICAxNTIgICAgICAgIDYuNTc4ICAgICAgMTc1ICAgICAgICA1LjcxNAorIDM5ICAgICAgMTU2ICAgICAgICA2LjQxMCAgICAgIDE3NSAgICAgICAgNS43MTQKKyA0MCAgICAgIDE2MCAgICAgICAgNi4yNTAgICAgICAxNzUgICAgICAgIDUuNzE0CisgNDEgICAgICAxNjQgICAgICAgIDYuMDk3ICAgICAgMTc1ICAgICAgICA1LjcxNAorIDQyICAgICAgMTY4ICAgICAgICA1Ljk1MiAgICAgIDE3NSAgICAgICAgNS43MTQKKyA0MyAgICAgIDE3MiAgICAgICAgNS44MTMgICAgICAxNzUgICAgICAgIDUuNzE0CisgNDQgICAgICAxNzYgICAgICAgIDUuNjgxICAgICAgMTg3ICAgICAgICA1LjMzMworIDQ1ICAgICAgMTgwICAgICAgICA1LjU1NSAgICAgIDE4NyAgICAgICAgNS4zMzMKKyA0NiAgICAgIDE4NCAgICAgICAgNS40MzQgICAgICAxODcgICAgICAgIDUuMzMzCisgNDcgICAgICAxODggICAgICAgIDUuMzE5ICAgICAgMjAwICAgICAgICA1LjAwMAorIDQ4ICAgICAgMTkyICAgICAgICA1LjIwOCAgICAgIDIwMCAgICAgICAgNS4wMDAKKyA0OSAgICAgIDE5NiAgICAgICAgNS4xMDIgICAgICAyMDAgICAgICAgIDUuMDAwCisKKworMTYuMiBTeW5jaHJvbm91cyB0aW1pbmdzIGZvciBmYXN0IFNDU0ktMiA1M0M4WFggY29udHJvbGxlcnMKKworIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBOZWdvdGlhdGVkICAgICAgICAgICAgICAgICAgICAgTkNSIHNldHRpbmdzCisgRmFjdG9yICAgUGVyaW9kICAgU3BlZWQgICAgICAgIFBlcmlvZCAgIFNwZWVkCisgLS0tLS0tICAgLS0tLS0tICAgLS0tLS0tICAgICAgIC0tLS0tLSAgIC0tLS0tLQorIDI1ICAgICAgMTAwICAgICAgIDEwLjAwMCAgICAgIDEwMCAgICAgICAxMC4wMDAKKyAyNiAgICAgIDEwNCAgICAgICAgOS42MTUgICAgICAxMjUgICAgICAgIDguMDAwCisgMjcgICAgICAxMDggICAgICAgIDkuMjU5ICAgICAgMTI1ICAgICAgICA4LjAwMAorIDI4ICAgICAgMTEyICAgICAgICA4LjkyOCAgICAgIDEyNSAgICAgICAgOC4wMDAKKyAyOSAgICAgIDExNiAgICAgICAgOC42MjAgICAgICAxMjUgICAgICAgIDguMDAwCisgMzAgICAgICAxMjAgICAgICAgIDguMzMzICAgICAgMTI1ICAgICAgICA4LjAwMAorIDMxICAgICAgMTI0ICAgICAgICA4LjA2NCAgICAgIDEyNSAgICAgICAgOC4wMDAKKyAzMiAgICAgIDEyOCAgICAgICAgNy44MTIgICAgICAxMzEgICAgICAgIDcuNjE5CisgMzMgICAgICAxMzIgICAgICAgIDcuNTc1ICAgICAgMTUwICAgICAgICA2LjY2NgorIDM0ICAgICAgMTM2ICAgICAgICA3LjM1MiAgICAgIDE1MCAgICAgICAgNi42NjYKKyAzNSAgICAgIDE0MCAgICAgICAgNy4xNDIgICAgICAxNTAgICAgICAgIDYuNjY2CisgMzYgICAgICAxNDQgICAgICAgIDYuOTQ0ICAgICAgMTUwICAgICAgICA2LjY2NgorIDM3ICAgICAgMTQ4ICAgICAgICA2Ljc1NiAgICAgIDE1MCAgICAgICAgNi42NjYKKyAzOCAgICAgIDE1MiAgICAgICAgNi41NzggICAgICAxNzUgICAgICAgIDUuNzE0CisgMzkgICAgICAxNTYgICAgICAgIDYuNDEwICAgICAgMTc1ICAgICAgICA1LjcxNAorIDQwICAgICAgMTYwICAgICAgICA2LjI1MCAgICAgIDE3NSAgICAgICAgNS43MTQKKyA0MSAgICAgIDE2NCAgICAgICAgNi4wOTcgICAgICAxNzUgICAgICAgIDUuNzE0CisgNDIgICAgICAxNjggICAgICAgIDUuOTUyICAgICAgMTc1ICAgICAgICA1LjcxNAorIDQzICAgICAgMTcyICAgICAgICA1LjgxMyAgICAgIDE3NSAgICAgICAgNS43MTQKKyA0NCAgICAgIDE3NiAgICAgICAgNS42ODEgICAgICAxODcgICAgICAgIDUuMzMzCisgNDUgICAgICAxODAgICAgICAgIDUuNTU1ICAgICAgMTg3ICAgICAgICA1LjMzMworIDQ2ICAgICAgMTg0ICAgICAgICA1LjQzNCAgICAgIDE4NyAgICAgICAgNS4zMzMKKyA0NyAgICAgIDE4OCAgICAgICAgNS4zMTkgICAgICAyMDAgICAgICAgIDUuMDAwCisgNDggICAgICAxOTIgICAgICAgIDUuMjA4ICAgICAgMjAwICAgICAgICA1LjAwMAorIDQ5ICAgICAgMTk2ICAgICAgICA1LjEwMiAgICAgIDIwMCAgICAgICAgNS4wMDAKKworCisxNy4gU2VyaWFsIE5WUkFNIChhZGRlZCBieSBSaWNoYXJkIFdhbHRoYW06IGRvcm1vdXNlQGZhcnNyb2J0LmRlbW9uLmNvLnVrKQorCisxNy4xIEZlYXR1cmVzCisKK0VuYWJsaW5nIHNlcmlhbCBOVlJBTSBzdXBwb3J0IGVuYWJsZXMgZGV0ZWN0aW9uIG9mIHRoZSBzZXJpYWwgTlZSQU0gaW5jbHVkZWQKK29uIFN5bWJpb3MgYW5kIHNvbWUgU3ltYmlvcyBjb21wYXRpYmxlIGhvc3QgYWRhcHRvcnMsIGFuZCBUZWtyYW0gYm9hcmRzLiBUaGUgCitzZXJpYWwgTlZSQU0gaXMgdXNlZCBieSBTeW1iaW9zIGFuZCBUZWtyYW0gdG8gaG9sZCBzZXQgdXAgcGFyYW1ldGVycyBmb3IgdGhlIAoraG9zdCBhZGFwdG9yIGFuZCBpdHMgYXR0YWNoZWQgZHJpdmVzLgorCitUaGUgU3ltYmlvcyBOVlJBTSBhbHNvIGhvbGRzIGRhdGEgb24gdGhlIGJvb3Qgb3JkZXIgb2YgaG9zdCBhZGFwdG9ycyBpbiBhCitzeXN0ZW0gd2l0aCBtb3JlIHRoYW4gb25lIGhvc3QgYWRhcHRvci4gVGhpcyBlbmFibGVzIHRoZSBvcmRlciBvZiBzY2FubmluZwordGhlIGNhcmRzIGZvciBkcml2ZXMgdG8gYmUgY2hhbmdlZCBmcm9tIHRoZSBkZWZhdWx0IHVzZWQgZHVyaW5nIGhvc3QgYWRhcHRvcgorZGV0ZWN0aW9uLgorCitUaGlzIGNhbiBiZSBkb25lIHRvIGEgbGltaXRlZCBleHRlbnQgYXQgdGhlIG1vbWVudCB1c2luZyAicmV2ZXJzZSBwcm9iZSIgYnV0Cit0aGlzIG9ubHkgY2hhbmdlcyB0aGUgb3JkZXIgb2YgZGV0ZWN0aW9uIG9mIGRpZmZlcmVudCB0eXBlcyBvZiBjYXJkcy4gVGhlCitOVlJBTSBib290IG9yZGVyIHNldHRpbmdzIGNhbiBkbyB0aGlzIGFzIHdlbGwgYXMgY2hhbmdlIHRoZSBvcmRlciB0aGUgc2FtZQordHlwZXMgb2YgY2FyZHMgYXJlIHNjYW5uZWQgaW4sIHNvbWV0aGluZyAicmV2ZXJzZSBwcm9iZSIgY2Fubm90IGRvLgorCitUZWtyYW0gYm9hcmRzIHVzaW5nIFN5bWJpb3MgY2hpcHMsIERDMzkwVy9GL1UsIHdoaWNoIGhhdmUgTlZSQU0gYXJlIGRldGVjdGVkCithbmQgdGhpcyBpcyB1c2VkIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gU3ltYmlvcyBjb21wYXRpYmxlIGFuZCBUZWtyYW0gaG9zdCAKK2FkYXB0b3JzLiBUaGlzIGlzIHVzZWQgdG8gZGlzYWJsZSB0aGUgU3ltYmlvcyBjb21wYXRpYmxlICJkaWZmIiBzZXR0aW5nCitpbmNvcnJlY3RseSBzZXQgb24gVGVrcmFtIGJvYXJkcyBpZiB0aGUgQ09ORklHX1NDU0lfNTNDOFhYX1NZTUJJT1NfQ09NUEFUIAorY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgaXMgc2V0IGVuYWJsaW5nIGJvdGggU3ltYmlvcyBhbmQgVGVrcmFtIGJvYXJkcyB0byBiZSAKK3VzZWQgdG9nZXRoZXIgd2l0aCB0aGUgU3ltYmlvcyBjYXJkcyB1c2luZyBhbGwgdGhlaXIgZmVhdHVyZXMsIGluY2x1ZGluZworImRpZmYiIHN1cHBvcnQuICgibGVkIHBpbiIgc3VwcG9ydCBmb3IgU3ltYmlvcyBjb21wYXRpYmxlIGNhcmRzIGNhbiByZW1haW4KK2VuYWJsZWQgd2hlbiB1c2luZyBUZWtyYW0gY2FyZHMuIEl0IGRvZXMgbm90aGluZyB1c2VmdWwgZm9yIFRla3JhbSBob3N0CithZGFwdG9ycyBidXQgZG9lcyBub3QgY2F1c2UgcHJvYmxlbXMgZWl0aGVyLikKKworCisxNy4yIFN5bWJpb3MgTlZSQU0gbGF5b3V0CisKK3R5cGljYWwgZGF0YSBhdCBOVlJBTSBhZGRyZXNzIDB4MTAwICg1M2M4MTBhIE5WUkFNKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzAwIDAwCis2NCAwMQorOGUgMGIKKworMDAgMzAgMDAgMDAgMDAgMDAgMDcgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDcgMDQgMTAgMDQgMDAgMDAgCisKKzA0IDAwIDBmIDAwIDAwIDEwIDAwIDUwIDAwIDAwIDAxIDAwIDAwIDYyIAorMDQgMDAgMDMgMDAgMDAgMTAgMDAgNTggMDAgMDAgMDEgMDAgMDAgNjMgCiswNCAwMCAwMSAwMCAwMCAxMCAwMCA0OCAwMCAwMCAwMSAwMCAwMCA2MSAKKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIAorCiswZiAwMCAwOCAwOCA2NCAwMCAwYSAwMAorMGYgMDAgMDggMDggNjQgMDAgMGEgMDAgCiswZiAwMCAwOCAwOCA2NCAwMCAwYSAwMCAKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwIAorMGYgMDAgMDggMDggNjQgMDAgMGEgMDAgCiswZiAwMCAwOCAwOCA2NCAwMCAwYSAwMCAKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwIAorMGYgMDAgMDggMDggNjQgMDAgMGEgMDAgCisKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwIAorMGYgMDAgMDggMDggNjQgMDAgMGEgMDAgCiswZiAwMCAwOCAwOCA2NCAwMCAwYSAwMCAKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwIAorMGYgMDAgMDggMDggNjQgMDAgMGEgMDAgCiswZiAwMCAwOCAwOCA2NCAwMCAwYSAwMCAKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwIAorMGYgMDAgMDggMDggNjQgMDAgMGEgMDAgCisKKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIAorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAKKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIAorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAKKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIAorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgCisKKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIAorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAKKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIAorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAKKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIAorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgCisKKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIAorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAKKworZmUgZmUKKzAwIDAwCiswMCAwMAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05WUkFNIGxheW91dCBkZXRhaWxzCisKK05WUkFNIEFkZHJlc3MgMHgwMDAtMHgwZmYgbm90IHVzZWQKKyAgICAgICAgICAgICAgMHgxMDAtMHgyNmYgaW5pdGlhbGlzZWQgZGF0YQorICAgICAgICAgICAgICAweDI3MC0weDdmZiBub3QgdXNlZAorCitnZW5lcmFsIGxheW91dAorCisgICAgICAgIGhlYWRlciAgLSAgIDYgYnl0ZXMsCisgICAgICAgIGRhdGEgICAgLSAzNTYgYnl0ZXMgKGNoZWNrc3VtIGlzIGJ5dGUgc3VtIG9mIHRoaXMgZGF0YSkKKyAgICAgICAgdHJhaWxlciAtICAgNiBieXRlcworICAgICAgICAgICAgICAgICAgLS0tCisgICAgICAgIHRvdGFsICAgICAzNjggYnl0ZXMKKworZGF0YSBhcmVhIGxheW91dAorCisgICAgICAgIGNvbnRyb2xsZXIgc2V0IHVwICAtICAyMCBieXRlcworICAgICAgICBib290IGNvbmZpZ3VyYXRpb24gLSAgNTYgYnl0ZXMgKDR4MTQgYnl0ZXMpCisgICAgICAgIGRldmljZSBzZXQgdXAgICAgICAtIDEyOCBieXRlcyAoMTZ4OCBieXRlcykKKyAgICAgICAgdW51c2VkIChzcGFyZT8pICAgIC0gMTUyIGJ5dGVzICgxOXg4IGJ5dGVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0KKyAgICAgICAgdG90YWwgICAgICAgICAgICAgICAgMzU2IGJ5dGVzCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitoZWFkZXIKKworMDAgMDAgICAtID8/IHN0YXJ0IG1hcmtlcgorNjQgMDEgICAtIGJ5dGUgY291bnQgKGxzYi9tc2IgZXhjbHVkZXMgaGVhZGVyL3RyYWlsZXIpCis4ZSAwYiAgIC0gY2hlY2tzdW0gKGxzYi9tc2IgZXhjbHVkZXMgaGVhZGVyL3RyYWlsZXIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorY29udHJvbGxlciBzZXQgdXAKKworMDAgMzAgMDAgMDAgMDAgMDAgMDcgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDcgMDQgMTAgMDQgMDAgMDAKKyAgICAgICAgICAgICAgICAgICB8ICAgICB8ICAgICAgICAgICB8ICAgICB8CisgICAgICAgICAgICAgICAgICAgfCAgICAgfCAgICAgICAgICAgfCAgICAgIC0tIGhvc3QgSUQKKyAgICAgICAgICAgICAgICAgICB8ICAgICB8ICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgfCAgICAgfCAgICAgICAgICAgIC0tUmVtb3ZhYmxlIE1lZGlhIFN1cHBvcnQKKyAgICAgICAgICAgICAgICAgICB8ICAgICB8ICAgICAgICAgICAgICAgMHgwMCA9IG5vbmUKKyAgICAgICAgICAgICAgICAgICB8ICAgICB8ICAgICAgICAgICAgICAgMHgwMSA9IEJvb3RhYmxlIERldmljZQorICAgICAgICAgICAgICAgICAgIHwgICAgIHwgICAgICAgICAgICAgICAweDAyID0gQWxsIHdpdGggTWVkaWEKKyAgICAgICAgICAgICAgICAgICB8ICAgICB8CisgICAgICAgICAgICAgICAgICAgfCAgICAgIC0tZmxhZyBiaXRzIDIKKyAgICAgICAgICAgICAgICAgICB8ICAgICAgICAweDAwMDAwMDAxPSBzY2FuIG9yZGVyIGhpLT5sb3cKKyAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgKGRlZmF1bHQgMHgwMCAtIHNjYW4gbG93LT5oaSkKKyAgICAgICAgICAgICAgICAgICAgLS1mbGFnIGJpdHMgMQorICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAxIHNjYW0gZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAgcGFyaXR5IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwIHZlcmJvc2UgYm9vdCBtc2dzCisKK3JlbWFpbmluZyBieXRlcyB1bmtub3duIC0gdGhleSBkbyBub3QgYXBwZWFyIHRvIGNoYW5nZSBpbiBteQorY3VycmVudCBzZXQgdXAgZm9yIGFueSBvZiB0aGUgY29udHJvbGxlcnMuCisKK2RlZmF1bHQgc2V0IHVwIGlzIGlkZW50aWNhbCBmb3IgNTNjODEwYSBhbmQgNTNjODc1IE5WUkFNCisoUmVtb3ZhYmxlIE1lZGlhIGFkZGVkIFN5bWJpb3MgQklPUyB2ZXJzaW9uIDQuMDkpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorYm9vdCBjb25maWd1cmF0aW9uCisKK2Jvb3Qgb3JkZXIgc2V0IGJ5IG9yZGVyIG9mIHRoZSBkZXZpY2VzIGluIHRoaXMgdGFibGUKKworMDQgMDAgMGYgMDAgMDAgMTAgMDAgNTAgMDAgMDAgMDEgMDAgMDAgNjIgLS0gMXN0IGNvbnRyb2xsZXIKKzA0IDAwIDAzIDAwIDAwIDEwIDAwIDU4IDAwIDAwIDAxIDAwIDAwIDYzICAgIDJuZCBjb250cm9sbGVyCiswNCAwMCAwMSAwMCAwMCAxMCAwMCA0OCAwMCAwMCAwMSAwMCAwMCA2MSAgICAzcmQgY29udHJvbGxlcgorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgICAgNHRoIGNvbnRyb2xsZXIKKyAgICAgICB8ICB8ICB8ICB8ICAgICB8ICAgICAgICB8ICAgICB8ICB8CisgICAgICAgfCAgfCAgfCAgfCAgICAgfCAgICAgICAgfCAgICAgIC0tLS0gUENJIGlvIHBvcnQgYWRyCisgICAgICAgfCAgfCAgfCAgfCAgICAgfCAgICAgICAgIC0tMHgwMSBpbml0L3NjYW4gYXQgYm9vdCB0aW1lCisgICAgICAgfCAgfCAgfCAgfCAgICAgIC0tUENJIGRldmljZS9mdW5jdGlvbiBudW1iZXIgKDB4ZGRkZGRmZmYpCisgICAgICAgfCAgfCAgIC0tLS0tID8/IFBDSSB2ZW5kb3IgSUQgKGxzYi9tc2IpCisgICAgICAgIC0tLS1QQ0kgZGV2aWNlIElEIChsc2IvbXNiKQorCis/PyB1c2Ugb2YgdGhpcyBkYXRhIGlzIGEgZ3Vlc3MgYnV0IHNlZW1zIHJlYXNvbmFibGUKKworcmVtYWluaW5nIGJ5dGVzIHVua25vd24gLSB0aGV5IGRvIG5vdCBhcHBlYXIgdG8gY2hhbmdlIGluIG15CitjdXJyZW50IHNldCB1cAorCitkZWZhdWx0IHNldCB1cCBpcyBpZGVudGljYWwgZm9yIDUzYzgxMGEgYW5kIDUzYzg3NSBOVlJBTQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RldmljZSBzZXQgdXAgKHVwIHRvIDE2IGRldmljZXMgLSBpbmNsdWRlcyBjb250cm9sbGVyKQorCiswZiAwMCAwOCAwOCA2NCAwMCAwYSAwMCAtIGlkIDAKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwIAorMGYgMDAgMDggMDggNjQgMDAgMGEgMDAgCiswZiAwMCAwOCAwOCA2NCAwMCAwYSAwMCAKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwIAorMGYgMDAgMDggMDggNjQgMDAgMGEgMDAgCiswZiAwMCAwOCAwOCA2NCAwMCAwYSAwMCAKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwIAorCiswZiAwMCAwOCAwOCA2NCAwMCAwYSAwMCAKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwIAorMGYgMDAgMDggMDggNjQgMDAgMGEgMDAgCiswZiAwMCAwOCAwOCA2NCAwMCAwYSAwMCAKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwIAorMGYgMDAgMDggMDggNjQgMDAgMGEgMDAgCiswZiAwMCAwOCAwOCA2NCAwMCAwYSAwMCAKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwIC0gaWQgMTUKKyB8ICAgICB8ICB8ICB8ICAgICB8ICB8CisgfCAgICAgfCAgfCAgfCAgICAgIC0tLS10aW1lb3V0IChsc2IvbXNiKQorIHwgICAgIHwgIHwgICAtLXN5bmNoIHBlcmlvZCAoMHg/PyA0MCBNdHJhbnMvc2VjLSBmYXN0IDQwKSAocHJvYmFibHkgMHgyOCkKKyB8ICAgICB8ICB8ICAgICAgICAgICAgICAgICAgKDB4MzAgMjAgTXRyYW5zL3NlYy0gZmFzdCAyMCkKKyB8ICAgICB8ICB8ICAgICAgICAgICAgICAgICAgKDB4NjQgMTAgTXRyYW5zL3NlYy0gZmFzdCApCisgfCAgICAgfCAgfCAgICAgICAgICAgICAgICAgICgweGM4ICA1IE10cmFucy9zZWMpCisgfCAgICAgfCAgfCAgICAgICAgICAgICAgICAgICgweDAwICBhc3luY2hyb25vdXMpCisgfCAgICAgfCAgIC0tID8/IG1heCBzeW5jIG9mZnNldCAoMHgwOCBpbiBOVlJBTSBvbiA1M2M4MTBhKSAKKyB8ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICgweDEwIGluIE5WUkFNIG9uIDUzYzg3NSkKKyB8ICAgICAgLS1kZXZpY2UgYnVzIHdpZHRoICgweDA4IG5hcnJvdykKKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICgweDEwIDE2IGJpdCB3aWRlKQorICAtLWZsYWcgYml0cworICAgIDB4MDAwMDAwMDEgLSBkaXNjb25uZWN0IGVuYWJsZWQKKyAgICAweDAwMDAwMDEwIC0gc2NhbiBhdCBib290IHRpbWUKKyAgICAweDAwMDAwMTAwIC0gc2NhbiBsdW5zCisgICAgMHgwMDAwMTAwMCAtIHF1ZXVlIHRhZ3MgZW5hYmxlZAorCityZW1haW5pbmcgYnl0ZXMgdW5rbm93biAtIHRoZXkgZG8gbm90IGFwcGVhciB0byBjaGFuZ2UgaW4gbXkKK2N1cnJlbnQgc2V0IHVwCisKKz8/IHVzZSBvZiB0aGlzIGRhdGEgaXMgYSBndWVzcyBidXQgc2VlbXMgcmVhc29uYWJsZSAKKyhidXQgaXQgY291bGQgYmUgbWF4IGJ1cyB3aWR0aCkKKworZGVmYXVsdCBzZXQgdXAgZm9yIDUzYzgxMGEgTlZSQU0KK2RlZmF1bHQgc2V0IHVwIGZvciA1M2M4NzUgTlZSQU0gLSBidXMgd2lkdGggICAgIC0gMHgxMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHN5bmMgb2Zmc2V0ID8gLSAweDEwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gc3luYyBwZXJpb2QgICAtIDB4MzAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis/PyBzcGFyZSBkZXZpY2Ugc3BhY2UgKDMyIGJpdCBidXMgPz8pCisKKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAoMTl4OGJ5dGVzKQorLgorLgorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAKKworZGVmYXVsdCBzZXQgdXAgaXMgaWRlbnRpY2FsIGZvciA1M2M4MTBhIGFuZCA1M2M4NzUgTlZSQU0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit0cmFpbGVyCisKK2ZlIGZlICAgLSA/IGVuZCBtYXJrZXIgPworMDAgMDAKKzAwIDAwCisKK2RlZmF1bHQgc2V0IHVwIGlzIGlkZW50aWNhbCBmb3IgNTNjODEwYSBhbmQgNTNjODc1IE5WUkFNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKKworMTcuMyBUZWtyYW0gTlZSQU0gbGF5b3V0CisKK252cmFtIDY0eDE2ICgxMDI0IGJpdCkKKworRHJpdmUgc2V0dGluZ3MKKworRHJpdmUgSUQgMC0xNSAoYWRkciAweDB5eXl5MCA9IGRldmljZSBzZXR1cCwgeXl5eSA9IElEKQorICAgICAgICAgICAgICAoYWRkciAweDB5eXl5MSA9IDB4MDAwMCkKKworICAgIHggeCB4IHggIHggeCB4IHggIHggeCB4IHggIHggeCB4IHgKKyAgICAgICAgICAgICAgIHwgfCB8ICAgICAgfCB8ICB8IHwgfCB8CisgICAgICAgICAgICAgICB8IHwgfCAgICAgIHwgfCAgfCB8IHwgIC0tLS0tIHBhcml0eSBjaGVjayAgIDAgLSBvZmYKKyAgICAgICAgICAgICAgIHwgfCB8ICAgICAgfCB8ICB8IHwgfCAgICAgICAgICAgICAgICAgICAgICAgMSAtIG9uCisgICAgICAgICAgICAgICB8IHwgfCAgICAgIHwgfCAgfCB8IHwKKyAgICAgICAgICAgICAgIHwgfCB8ICAgICAgfCB8ICB8IHwgIC0tLS0tLS0gc3luYyBuZWcgICAgICAgMCAtIG9mZgorICAgICAgICAgICAgICAgfCB8IHwgICAgICB8IHwgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAxIC0gb24KKyAgICAgICAgICAgICAgIHwgfCB8ICAgICAgfCB8ICB8IHwKKyAgICAgICAgICAgICAgIHwgfCB8ICAgICAgfCB8ICB8ICAtLS0tLS0tLS0gZGlzY29ubmVjdCAgICAgMCAtIG9mZgorICAgICAgICAgICAgICAgfCB8IHwgICAgICB8IHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC0gb24KKyAgICAgICAgICAgICAgIHwgfCB8ICAgICAgfCB8ICB8CisgICAgICAgICAgICAgICB8IHwgfCAgICAgIHwgfCAgIC0tLS0tLS0tLS0tIHN0YXJ0IGNtZCAgICAgIDAgLSBvZmYKKyAgICAgICAgICAgICAgIHwgfCB8ICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAtIG9uCisgICAgICAgICAgICAgICB8IHwgfCAgICAgIHwgfAorICAgICAgICAgICAgICAgfCB8IHwgICAgICB8ICAtLS0tLS0tLS0tLS0tLSB0YWdnZWQgY21kcyAgICAwIC0gb2ZmCisgICAgICAgICAgICAgICB8IHwgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgLSBvbgorICAgICAgICAgICAgICAgfCB8IHwgICAgICB8IAorICAgICAgICAgICAgICAgfCB8IHwgICAgICAgLS0tLS0tLS0tLS0tLS0tLSB3aWRlIG5lZyAgICAgICAwIC0gb2ZmCisgICAgICAgICAgICAgICB8IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgLSBvbgorICAgICAgICAgICAgICAgfCB8IHwKKyAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc3luYyByYXRlICAgICAgMCAtIDEwLjAgTXRyYW5zL3NlYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC0gIDguMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyIC0gIDYuNgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzIC0gIDUuNworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0IC0gIDUuMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1IC0gIDQuMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2IC0gIDMuMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3IC0gIDIuMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3IC0gIDIuMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4IC0gMjAuMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5IC0gMTYuNworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIC0gMTMuOQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIC0gMTEuOQorCitHbG9iYWwgc2V0dGluZ3MKKworSG9zdCBmbGFncyAwIChhZGRyIDB4MTAwMDAwLCAzMikgCisKKyAgICB4IHggeCB4ICB4IHggeCB4ICB4IHggeCB4ICB4IHggeCB4CisgICAgfCB8IHwgfCAgfCB8IHwgfCAgICAgICAgICAgfCB8IHwgfAorICAgIHwgfCB8IHwgIHwgfCB8IHwgICAgICAgICAgICAtLS0tLS0tLS0tLSBob3N0IElEICAgIDB4MDAgLSAweDBmCisgICAgfCB8IHwgfCAgfCB8IHwgfAorICAgIHwgfCB8IHwgIHwgfCB8ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzdXBwb3J0IGZvciAgICAwIC0gb2ZmCisgICAgfCB8IHwgfCAgfCB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgID4gMiBkcml2ZXMgICAgIDEgLSBvbgorICAgIHwgfCB8IHwgIHwgfCB8IAorICAgIHwgfCB8IHwgIHwgfCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzdXBwb3J0IGRyaXZlcyAwIC0gb2ZmCisgICAgfCB8IHwgfCAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gMUdieXRlcyAgICAgIDEgLSBvbgorICAgIHwgfCB8IHwgIHwgfAorICAgIHwgfCB8IHwgIHwgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBidXMgcmVzZXQgb24gICAwIC0gb2ZmCisgICAgfCB8IHwgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG93ZXIgb24gICAgIDEgLSBvbgorICAgIHwgfCB8IHwgIHwKKyAgICB8IHwgfCB8ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gYWN0aXZlIG5lZyAgICAgMCAtIG9mZgorICAgIHwgfCB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC0gb24KKyAgICB8IHwgfCB8CisgICAgfCB8IHwgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGltbSBzZWVrICAgICAgIDAgLSBvZmYKKyAgICB8IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAtIG9uCisgICAgfCB8IHwKKyAgICB8IHwgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc2NhbiBsdW5zICAgICAgMCAtIG9mZgorICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC0gb24KKyAgICB8IHwKKyAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gcmVtb3ZhYmxlICAgICAgMCAtIGRpc2FibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgQklPUyBkZXYgICAgMSAtIGJvb3QgZGV2aWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgLSBhbGwKKworSG9zdCBmbGFncyAxIChhZGRyIDB4MTAwMDAxLCAzMykKKworICAgIHggeCB4IHggIHggeCB4IHggIHggeCB4IHggIHggeCB4IHgKKyAgICAgICAgICAgICAgIHwgfCB8ICAgICAgICAgICAgIHwgfCB8IAorICAgICAgICAgICAgICAgfCB8IHwgICAgICAgICAgICAgIC0tLS0tLS0tLSBib290IGRlbGF5ICAgICAwIC0gICAzIHNlYworICAgICAgICAgICAgICAgfCB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC0gICA1CisgICAgICAgICAgICAgICB8IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgLSAgMTAKKyAgICAgICAgICAgICAgIHwgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMyAtICAyMAorICAgICAgICAgICAgICAgfCB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0IC0gIDMwCisgICAgICAgICAgICAgICB8IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUgLSAgNjAKKyAgICAgICAgICAgICAgIHwgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNiAtIDEyMAorICAgICAgICAgICAgICAgfCB8IHwKKyAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gbWF4IHRhZyBjbWRzICAgMCAtICAyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgLSAgNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyIC0gIDgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMyAtIDE2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgLSAzMgorCitIb3N0IGZsYWdzIDIgKGFkZHIgMHgxMDAwMTAsIDM0KQorCisgICAgeCB4IHggeCAgeCB4IHggeCAgeCB4IHggeCAgeCB4IHggeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0gRjIvRjYgZW5hYmxlICAgMCAtIG9mZiA/Pz8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAtIG9uICA/Pz8KKworY2hlY2tzdW0gKGFkZHIgMHgxMTExMTEpCisKK2NoZWNrc3VtID0gMHgxMjM0IC0gKHN1bSBhZGRyIDAtNjMpCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZGVmYXVsdCBudnJhbSBkYXRhOgorCisweDAwMzcgMHgwMDAwIDB4MDAzNyAweDAwMDAgMHgwMDM3IDB4MDAwMCAweDAwMzcgMHgwMDAwCisweDAwMzcgMHgwMDAwIDB4MDAzNyAweDAwMDAgMHgwMDM3IDB4MDAwMCAweDAwMzcgMHgwMDAwCisweDAwMzcgMHgwMDAwIDB4MDAzNyAweDAwMDAgMHgwMDM3IDB4MDAwMCAweDAwMzcgMHgwMDAwCisweDAwMzcgMHgwMDAwIDB4MDAzNyAweDAwMDAgMHgwMDM3IDB4MDAwMCAweDAwMzcgMHgwMDAwIAorCisweDBmMDcgMHgwNDAwIDB4MDAwMSAweDAwMDAgMHgwMDAwIDB4MDAwMCAweDAwMDAgMHgwMDAwCisweDAwMDAgMHgwMDAwIDB4MDAwMCAweDAwMDAgMHgwMDAwIDB4MDAwMCAweDAwMDAgMHgwMDAwCisweDAwMDAgMHgwMDAwIDB4MDAwMCAweDAwMDAgMHgwMDAwIDB4MDAwMCAweDAwMDAgMHgwMDAwCisweDAwMDAgMHgwMDAwIDB4MDAwMCAweDAwMDAgMHgwMDAwIDB4MDAwMCAweDAwMDAgMHhmYmJjCisKKworMTguIFN1cHBvcnQgZm9yIEJpZyBFbmRpYW4KKworVGhlIFBDSSBsb2NhbCBidXMgaGFzIGJlZW4gcHJpbWFyaWx5IGRlc2lnbmVkIGZvciB4ODYgYXJjaGl0ZWN0dXJlLgorQXMgYSBjb25zZXF1ZW5jZSwgUENJIGRldmljZXMgZ2VuZXJhbGx5IGV4cGVjdCBEV09SRFMgdXNpbmcgbGl0dGxlIGVuZGlhbiAKK2J5dGUgb3JkZXJpbmcuCisKKzE4LjEgQmlnIEVuZGlhbiBDUFUKKworSW4gb3JkZXIgdG8gc3VwcG9ydCBOQ1IgY2hpcHMgb24gYSBCaWcgRW5kaWFuIGFyY2hpdGVjdHVyZSB0aGUgZHJpdmVyIGhhcyB0byAKK3BlcmZvcm0gYnl0ZSByZW9yZGVyaW5nIGVhY2ggdGltZSBpdCBpcyBuZWVkZWQuIFRoaXMgZmVhdHVyZSBoYXMgYmVlbiAKK2FkZGVkIHRvIHRoZSBkcml2ZXIgYnkgQ29ydCA8Y29ydEBjcy5ubXQuZWR1PiBhbmQgaXMgYXZhaWxhYmxlIGluIGRyaXZlciAKK3ZlcnNpb24gMi41IGFuZCBsYXRlciBvbmVzLiBGb3IgdGhlIG1vbWVudCBCaWcgRW5kaWFuIHN1cHBvcnQgaGFzIG9ubHkgCitiZWVuIHRlc3RlZCBvbiBMaW51eC9QUEMgKFBvd2VyUEMpLgorCisxOC4yIE5DUiBjaGlwIGluIEJpZyBFbmRpYW4gbW9kZSBvZiBvcGVyYXRpb25zCisKK0l0IGNhbiBiZSByZWFkIGluIFNZTUJJT1MgZG9jdW1lbnRhdGlvbiB0aGF0IHNvbWUgY2hpcHMgc3VwcG9ydCBhIHNwZWNpYWwgCitCaWcgRW5kaWFuIG1vZGUsIG9uIHBhcGVyOiA1M0M4MTUsIDUzQzgyNUEsIDUzQzg3NSwgNTNDODc1TiwgNTNDODk1LgorVGhpcyBtb2RlIG9mIG9wZXJhdGlvbnMgaXMgbm90IHNvZnR3YXJlLXNlbGVjdGFibGUsIGJ1dCBuZWVkcyBwaW4gbmFtZWQgCitCaWdMaXQgdG8gYmUgcHVsbGVkLXVwLiBVc2luZyB0aGlzIG1vZGUsIG1vc3Qgb2YgYnl0ZSByZW9yZGVyaW5ncyBzaG91bGQgCitiZSBhdm9pZGVkIHdoZW4gdGhlIGRyaXZlciBpcyBydW5uaW5nIG9uIGEgQmlnIEVuZGlhbiBDUFUuCitEcml2ZXIgdmVyc2lvbiAyLjUgaXMgYWxzbywgaW4gdGhlb3J5LCByZWFkeSBmb3IgdGhpcyBmZWF0dXJlLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitFbmQgb2YgTkNSNTNDOFhYIGRyaXZlciBSRUFETUUgZmlsZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL29zZC50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvb3NkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTk4NzliCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL29zZC50eHQKQEAgLTAsMCArMSwxOTcgQEAKK1RoZSBPU0QgU3RhbmRhcmQKKz09PT09PT09PT09PT09PT0KK09TRCAoT2JqZWN0LUJhc2VkIFN0b3JhZ2UgRGV2aWNlKSBpcyBhIFQxMCBTQ1NJIGNvbW1hbmQgc2V0IHRoYXQgaXMgZGVzaWduZWQKK3RvIHByb3ZpZGUgZWZmaWNpZW50IG9wZXJhdGlvbiBvZiBpbnB1dC9vdXRwdXQgbG9naWNhbCB1bml0cyB0aGF0IG1hbmFnZSB0aGUKK2FsbG9jYXRpb24sIHBsYWNlbWVudCwgYW5kIGFjY2Vzc2luZyBvZiB2YXJpYWJsZS1zaXplIGRhdGEtc3RvcmFnZSBjb250YWluZXJzLAorY2FsbGVkIG9iamVjdHMuIE9iamVjdHMgYXJlIGludGVuZGVkIHRvIGNvbnRhaW4gb3BlcmF0aW5nIHN5c3RlbSBhbmQgYXBwbGljYXRpb24KK2NvbnN0cnVjdHMuIEVhY2ggb2JqZWN0IGhhcyBhc3NvY2lhdGVkIGF0dHJpYnV0ZXMgYXR0YWNoZWQgdG8gaXQsIHdoaWNoIGFyZQoraW50ZWdyYWwgcGFydCBvZiB0aGUgb2JqZWN0IGFuZCBwcm92aWRlIG1ldGFkYXRhIGFib3V0IHRoZSBvYmplY3QuIFRoZSBzdGFuZGFyZAorZGVmaW5lcyBzb21lIGNvbW1vbiBvYmxpZ2F0b3J5IGF0dHJpYnV0ZXMsIGJ1dCB1c2VyIGF0dHJpYnV0ZXMgY2FuIGJlIGFkZGVkIGFzCituZWVkZWQuCisKK1NlZTogaHR0cDovL3d3dy50MTAub3JnL2Z0cC90MTAvZHJhZnRzL29zZDIvIGZvciB0aGUgbGF0ZXN0IGRyYWZ0IGZvciBPU0QgMgorb3Igc2VhcmNoIHRoZSB3ZWIgZm9yICJPU0QgU0NTSSIKKworT1NEIGluIHRoZSBMaW51eCBLZXJuZWwKKz09PT09PT09PT09PT09PT09PT09PT09Citvc2QtaW5pdGlhdG9yOgorICBUaGUgbWFpbiBjb21wb25lbnQgb2YgT1NEIGluIEtlcm5lbCBpcyB0aGUgb3NkLWluaXRpYXRvciBsaWJyYXJ5LiBJdHMgbWFpbgordXNlciBpcyBpbnRlbmRlZCB0byBiZSB0aGUgcE5GUy1vdmVyLW9iamVjdHMgbGF5b3V0IGRyaXZlciwgd2hpY2ggdXNlcyBvYmplY3RzCithcyBpdHMgYmFjay1lbmQgZGF0YSBzdG9yYWdlLiBPdGhlciBjbGllbnRzIGFyZSB0aGUgb3RoZXIgb3NkIHBhcnRzIGxpc3RlZCBiZWxvdy4KKworb3NkLXVsZDoKKyAgVGhpcyBpcyBhIFNDU0kgVUxEIHRoYXQgcmVnaXN0ZXJzIGZvciBPU0QgdHlwZSBkZXZpY2VzIGFuZCBwcm92aWRlcyBhIHRlc3RpbmcKK3BsYXRmb3JtLCBib3RoIGZvciB0aGUgaW4ta2VybmVsIGluaXRpYXRvciBhcyB3ZWxsIGFzIGNvbm5lY3RlZCB0YXJnZXRzLiBJdAorY3VycmVudGx5IGhhcyBubyB1c2VmdWwgdXNlci1tb2RlIEFQSSwgdGhvdWdoIGl0IGNvdWxkIGhhdmUgaWYgbmVlZCBiZS4KKworZXhvZnM6CisgIElzIGFuIE9TRCBiYXNlZCBMaW51eCBmaWxlIHN5c3RlbS4gSXQgdXNlcyB0aGUgb3NkLWluaXRpYXRvciBhbmQgb3NkLXVsZCwKK3RvIGV4cG9ydCBhIHVzYWJsZSBmaWxlIHN5c3RlbSBmb3IgdXNlcnMuCitTZWUgRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9leG9mcy50eHQgZm9yIG1vcmUgZGV0YWlscworCitvc2QgdGFyZ2V0OgorICBUaGVyZSBhcmUgbm8gY3VycmVudCBwbGFucyBmb3IgYW4gT1NEIHRhcmdldCBpbXBsZW1lbnRhdGlvbiBpbiBrZXJuZWwuIEZvciBhbGwKK25lZWRzLCBhIHVzZXItbW9kZSB0YXJnZXQgdGhhdCBpcyBiYXNlZCBvbiB0aGUgc2NzaSB0Z3QgdGFyZ2V0IGZyYW1ld29yayBpcworYXZhaWxhYmxlIGZyb20gT2hpbyBTdXBlcmNvbXB1dGVyIENlbnRlciAoT1NDKSBhdDoKK2h0dHA6Ly93d3cub3Blbi1vc2Qub3JnL2Jpbi92aWV3L01haW4vT3NjT3NkUHJvamVjdAorVGhlcmUgYXJlIHNldmVyYWwgb3RoZXIgdGFyZ2V0IGltcGxlbWVudGF0aW9ucy4gU2VlIGh0dHA6Ly9vcGVuLW9zZC5vcmcgZm9yIG1vcmUKK2xpbmtzLgorCitGaWxlcyBhbmQgRm9sZGVycworPT09PT09PT09PT09PT09PT0KK1RoaXMgaXMgdGhlIGNvbXBsZXRlIGxpc3Qgb2YgZmlsZXMgaW5jbHVkZWQgaW4gdGhpcyB3b3JrOgoraW5jbHVkZS9zY3NpLworCW9zZF9pbml0aWF0b3IuaCAgIE1haW4gQVBJIGZvciB0aGUgaW5pdGlhdG9yIGxpYnJhcnkKKwlvc2RfdHlwZXMuaAkgIENvbW1vbiBPU0QgdHlwZXMKKwlvc2Rfc2VjLmgJICBTZWN1cml0eSBNYW5hZ2VyIEFQSQorCW9zZF9wcm90b2NvbC5oCSAgV2lyZSBkZWZpbml0aW9ucyBvZiB0aGUgT1NEIHN0YW5kYXJkIHByb3RvY29sCisJb3NkX2F0dHJpYnV0ZXMuaCAgV2lyZSBkZWZpbml0aW9ucyBvZiBPU0QgYXR0cmlidXRlcworCitkcml2ZXJzL3Njc2kvb3NkLworCW9zZF9pbml0aWF0b3IuYyAgIE9TRC1Jbml0aWF0b3IgbGlicmFyeSBpbXBsZW1lbnRhdGlvbgorCW9zZF91bGQuYwkgIFRoZSBPU0Qgc2NzaSBVTEQKKwlvc2Rfa3Rlc3Que2gsY30JICBJbi1rZXJuZWwgdGVzdCBzdWl0ZSAoY2FsbGVkIGJ5IG9zZF91bGQpCisJb3NkX2RlYnVnLmgJICBTb21lIHByaW50ayBtYWNyb3MKKwlNYWtlZmlsZQkgIEZvciBib3RoIGluLXRyZWUgYW5kIG91dC1vZi10cmVlIGNvbXBpbGF0aW9uCisJS2NvbmZpZwkJICBFbmFibGVzIGluY2x1c2lvbiBvZiB0aGUgZGlmZmVyZW50IHBpZWNlcworCW9zZF90ZXN0LmMJICBVc2VyLW1vZGUgYXBwbGljYXRpb24gdG8gY2FsbCB0aGUga2VybmVsIHRlc3RzCisKK1RoZSBPU0QtSW5pdGlhdG9yIExpYnJhcnkKKz09PT09PT09PT09PT09PT09PT09PT09PT0KK29zZF9pbml0aWF0b3IgaXMgYSBsb3cgbGV2ZWwgaW1wbGVtZW50YXRpb24gb2YgYW4gb3NkIGluaXRpYXRvciBlbmNvZGVyLgorQnV0IGV2ZW4gdGhvdWdoLCBpdCBzaG91bGQgYmUgaW50dWl0aXZlIGFuZCBlYXN5IHRvIHVzZS4gUGVyaGFwcyBvdmVyIHRpbWUgYW4KK2hpZ2hlciBsZXZlciB3aWxsIGZvcm0gdGhhdCBhdXRvbWF0ZXMgc29tZSBvZiB0aGUgbW9yZSBjb21tb24gcmVjaXBlcy4KKworaW5pdC9maW5pOgorLSBvc2RfZGV2X2luaXQoKSBhc3NvY2lhdGVzIGEgc2NzaV9kZXZpY2Ugd2l0aCBhbiBvc2RfZGV2IHN0cnVjdHVyZQorICBhbmQgaW5pdGlhbGl6ZXMgc29tZSBnbG9iYWwgcG9vbHMuIFRoaXMgc2hvdWxkIGJlIGRvbmUgb25jZSBwZXIgc2NzaV9kZXZpY2UKKyAgKE9TRCBMVU4pLiBUaGUgb3NkX2RldiBzdHJ1Y3R1cmUgaXMgbmVlZGVkIGZvciBjYWxsaW5nIG9zZF9zdGFydF9yZXF1ZXN0KCkuCisKKy0gb3NkX2Rldl9maW5pKCkgY2xlYW5zIHVwIGJlZm9yZSBhIG9zZF9kZXYvc2NzaV9kZXZpY2UgZGVzdHJ1Y3Rpb24uCisKK09TRCBjb21tYW5kcyBlbmNvZGluZywgZXhlY3V0aW9uLCBhbmQgZGVjb2Rpbmcgb2YgcmVzdWx0czoKKworc3RydWN0IG9zZF9yZXF1ZXN0J3MgaXMgdXNlZCB0byBpdGVyYXRpdmVseSBlbmNvZGUgYW4gT1NEIGNvbW1hbmQgYW5kIGNhcnJ5CitpdHMgc3RhdGUgdGhyb3VnaG91dCBleGVjdXRpb24uIEVhY2ggcmVxdWVzdCBnb2VzIHRocm91Z2ggdGhlc2Ugc3RhZ2VzOgorCithLiBvc2Rfc3RhcnRfcmVxdWVzdCgpIGFsbG9jYXRlcyB0aGUgcmVxdWVzdC4KKworYi4gQW55IG9mIHRoZSBvc2RfcmVxXyogbWV0aG9kcyBpcyB1c2VkIHRvIGVuY29kZSBhIHJlcXVlc3Qgb2YgdGhlIHNwZWNpZmllZAorICAgdHlwZS4KKworYy4gb3NkX3JlcV9hZGRfe2dldCxzZXR9X2F0dHJfKiBtYXkgYmUgY2FsbGVkIHRvIGFkZCBnZXQvc2V0IGF0dHJpYnV0ZXMgdG8gdGhlCisgICBDREIuICJMaXN0IiBvciAiUGFnZSIgbW9kZSBjYW4gYmUgdXNlZCBleGNsdXNpdmVseS4gVGhlIGF0dHJpYnV0ZS1saXN0IEFQSQorICAgY2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSByZXF1ZXN0LiBIb3dldmVyLCBvbmx5IG9uZQorICAgYXR0cmlidXRlLXBhZ2UgY2FuIGJlIHJlYWQsIGFzIG1hbmRhdGVkIGJ5IHRoZSBPU0Qgc3RhbmRhcmQuCisKK2QuIG9zZF9maW5hbGl6ZV9yZXF1ZXN0KCkgY29tcHV0ZXMgb2Zmc2V0cyBpbnRvIHRoZSBkYXRhLWluIGFuZCBkYXRhLW91dCBidWZmZXJzCisgICBhbmQgc2lnbnMgdGhlIHJlcXVlc3QgdXNpbmcgdGhlIHByb3ZpZGVkIGNhcGFiaWxpdHkga2V5IGFuZCBpbnRlZ3JpdHktCisgICBjaGVjayBwYXJhbWV0ZXJzLgorCitlLiBvc2RfZXhlY3V0ZV9yZXF1ZXN0KCkgbWF5IGJlIGNhbGxlZCB0byBleGVjdXRlIHRoZSByZXF1ZXN0IHZpYSB0aGUgYmxvY2sKKyAgIGxheWVyIGFuZCB3YWl0IGZvciBpdHMgY29tcGxldGlvbi4gIFRoZSByZXF1ZXN0IGNhbiBiZSBleGVjdXRlZAorICAgYXN5bmNocm9ub3VzbHkgYnkgY2FsbGluZyB0aGUgYmxvY2sgbGF5ZXIgQVBJIGRpcmVjdGx5LgorCitmLiBBZnRlciBleGVjdXRpb24sIG9zZF9yZXFfZGVjb2RlX3NlbnNlKCkgY2FuIGJlIGNhbGxlZCB0byBkZWNvZGUgdGhlIHJlcXVlc3QncworICAgc2Vuc2UgaW5mb3JtYXRpb24uCisKK2cuIG9zZF9yZXFfZGVjb2RlX2dldF9hdHRyKCkgbWF5IGJlIGNhbGxlZCB0byByZXRyaWV2ZSBvc2RfYWRkX2dldF9hdHRyX2xpc3QoKQorICAgdmFsdWVzLgorCitoLiBvc2RfZW5kX3JlcXVlc3QoKSBtdXN0IGJlIGNhbGxlZCB0byBkZWFsbG9jYXRlIHRoZSByZXF1ZXN0IGFuZCBhbnkgcmVzb3VyY2UKKyAgIGFzc29jaWF0ZWQgd2l0aCBpdC4gTm90ZSB0aGF0IG9zZF9lbmRfcmVxdWVzdCBjbGVhbnMgdXAgdGhlIHJlcXVlc3QgYXQgYW55CisgICBzdGFnZSBhbmQgaXQgbXVzdCBhbHdheXMgYmUgY2FsbGVkIGFmdGVyIGEgc3VjY2Vzc2Z1bCBvc2Rfc3RhcnRfcmVxdWVzdCgpLgorCitvc2RfcmVxdWVzdCdzIHN0cnVjdHVyZToKKworVGhlIE9TRCBzdGFuZGFyZCBkZWZpbmVzIGEgY29tcGxleCBzdHJ1Y3R1cmUgb2YgSU8gc2VnbWVudHMgcG9pbnRlZCB0byBieQorbWVtYmVycyBpbiB0aGUgQ0RCLiBVcCB0byAzIHNlZ21lbnRzIGNhbiBiZSBkZXBsb3llZCBpbiB0aGUgSU4tQnVmZmVyIGFuZCB1cCB0bworNCBpbiB0aGUgT1VULUJ1ZmZlci4gVGhlIEFTQ0lJIGlsbHVzdHJhdGlvbiBiZWxvdyBkZXBpY3RzIGEgc2VjdXJlLXJlYWQgd2l0aAorYXNzb2NpYXRlZCBnZXQrc2V0IG9mIGF0dHJpYnV0ZXMtbGlzdHMuIE90aGVyIGNvbWJpbmF0aW9ucyB2ZXJ5IG9uIHRoZSBzYW1lCitiYXNpYyB0aGVtZS4gRnJvbSBuby1zZWdtZW50cy11c2VkIHVwIHRvIGFsbC1zZWdtZW50cy11c2VkLgorCit8X19fX19fX19PU0QtQ0RCX19fX19fX19fX3wKK3wgICAgICAgICAgICAgICAgICAgICAgICAgfAorfHJlYWRfbGVuIChvZmZzZXQ9MCkgICAgIC18LS0tLS0tLS0tXAorfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfAorfGdldF9hdHRyc19saXN0X2xlbmd0aCAgICB8ICAgICAgICAgfAorfGdldF9hdHRyc19saXN0X29mZnNldCAgIC18LS0tLVwgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIHwgICAgfAorfHJldHJpZXZlZF9hdHRyc19hbGxvY19sZW58ICAgIHwgICAgfAorfHJldHJpZXZlZF9hdHRyc19vZmZzZXQgIC18LS0tLXwtLS0tfC1cCit8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgfCAgICB8IHwKK3xzZXRfYXR0cnNfbGlzdF9sZW5ndGggICAgfCAgICB8ICAgIHwgfAorfHNldF9hdHRyc19saXN0X29mZnNldCAgIC18LVwgIHwgICAgfCB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCAgfCAgICB8IHwKK3xpbl9kYXRhX2ludGVnX29mZnNldCAgICAtfC18LS18LS0tLXwtfC1cCit8b3V0X2RhdGFfaW50ZWdfb2Zmc2V0ICAgLXwtfC0tfC0tXCB8IHwgfAorXF9fX19fX19fX19fX19fX19fX19fX19fX18vIHwgIHwgIHwgfCB8IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8ICB8IHwgfCB8Cit8X19fX19fX09VVC1CVUZGRVJfX19fX19fX3wgfCAgfCAgfCB8IHwgfAorfCAgICAgIFNldCBhdHRyIGxpc3QgICAgICB8PC8gIHwgIHwgfCB8IHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICB8ICB8IHwgfCB8Cit8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgICAgfCAgfCB8IHwgfAorfCAgIEdldCBhdHRyIGRlc2NyaXB0b3JzICB8PC0tLS8gIHwgfCB8IHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8IHwgfCB8Cit8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgICAgICAgfCB8IHwgfAorfCAgICBPdXQtZGF0YSBpbnRlZ3JpdHkgICB8PC0tLS0tLS8gfCB8IHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgfCB8CitcX19fX19fX19fX19fX19fX19fX19fX19fXy8gICAgICAgICB8IHwgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8IHwKK3xfX19fX19fX0lOLUJVRkZFUl9fX19fX19ffCAgICAgICAgIHwgfCB8Cit8ICAgICAgSW4tRGF0YSByZWFkICAgICAgIHw8LS0tLS0tLS0vIHwgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IHwKK3wtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAgICAgICAgICAgfCB8Cit8ICAgICAgR2V0IGF0dHIgbGlzdCAgICAgIHw8LS0tLS0tLS0tLS8gfAorfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwKK3wtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAgICAgICAgICAgICB8Cit8ICAgIEluLWRhdGEgaW50ZWdyaXR5ICAgIHw8LS0tLS0tLS0tLS0tLworfCAgICAgICAgICAgICAgICAgICAgICAgICB8CitcX19fX19fX19fX19fX19fX19fX19fX19fXy8KKworQSBibG9jayBkZXZpY2UgcmVxdWVzdCBjYW4gY2FycnkgYmlkaXJlY3Rpb25hbCBwYXlsb2FkIGJ5IG1lYW5zIG9mIGFzc29jaWF0aW5nCithIGJpZGlfcmVhZCByZXF1ZXN0IHdpdGggYSBtYWluIHdyaXRlLXJlcXVlc3QuIEVhY2ggaW4vb3V0IHJlcXVlc3QgaXMgZGVzY3JpYmVkCitieSBhIGNoYWluIG9mIEJJT3MgYXNzb2NpYXRlZCB3aXRoIGVhY2ggcmVxdWVzdC4KK1RoZSBDREIgaXMgb2YgYSBTQ1NJIFZBUkxFTiBDREIgZm9ybWF0LCBhcyBkZXNjcmliZWQgYnkgT1NEIHN0YW5kYXJkLgorVGhlIE9TRCBzdGFuZGFyZCBhbHNvIG1hbmRhdGVzIGFsaWdubWVudCByZXN0cmljdGlvbnMgYXQgc3RhcnQgb2YgZWFjaCBzZWdtZW50LgorCitJbiB0aGUgY29kZSwgaW4gc3RydWN0IG9zZF9yZXF1ZXN0LCB0aGVyZSBhcmUgdHdvIF9vc2RfaW9faW5mbyBzdHJ1Y3R1cmVzIHRvCitkZXNjcmliZSB0aGUgSU4vT1VUIGJ1ZmZlcnMgYWJvdmUsIHR3byBCSU9zIGZvciB0aGUgZGF0YSBwYXlsb2FkIGFuZCB1cCB0byBmaXZlCitfb3NkX3JlcV9kYXRhX3NlZ21lbnQgc3RydWN0dXJlcyB0byBob2xkIHRoZSBkaWZmZXJlbnQgc2VnbWVudHMgYWxsb2NhdGlvbiBhbmQKK2luZm9ybWF0aW9uLgorCitJbXBvcnRhbnQ6IFdlIGhhdmUgY2hvc2VuIHRvIGRpc3JlZ2FyZCB0aGUgYXNzdW1wdGlvbiB0aGF0IGEgQklPLWNoYWluIChhbmQKK3RoZSByZXN1bHRpbmcgc2ctbGlzdCkgZGVzY3JpYmVzIGEgbGluZWFyIG1lbW9yeSBidWZmZXIuIE1lYW5pbmcgb25seSBmaXJzdCBhbmQKK2xhc3Qgc2NhdHRlciBjaGFpbiBjYW4gYmUgaW5jb21wbGV0ZSBhbmQgYWxsIHRoZSBtaWRkbGUgY2hhaW5zIGFyZSBvZiBQQUdFX1NJWkUuCitGb3IgdXMsIGEgc2NhdHRlci1nYXRoZXItbGlzdCwgYXMgaXRzIG5hbWUgaW1wbGllcyBhbmQgYXMgdXNlZCBieSB0aGUgTmV0d29ya2luZworbGF5ZXIsIGlzIHRvIGRlc2NyaWJlIGEgdmVjdG9yIG9mIGJ1ZmZlcnMgdGhhdCB3aWxsIGJlIHRyYW5zZmVycmVkIHRvL2Zyb20gdGhlCit3aXJlLiBJdCB3b3JrcyB2ZXJ5IHdlbGwgd2l0aCBjdXJyZW50IGlTQ1NJIHRyYW5zcG9ydC4gaVNDU0kgaXMgY3VycmVudGx5IHRoZQorb25seSBkZXBsb3llZCBPU0QgdHJhbnNwb3J0LiBJbiB0aGUgZnV0dXJlIHdlIGFudGljaXBhdGUgU0FTIGFuZCBGQyBhdHRhY2hlZCBPU0QKK2RldmljZXMgYXMgd2VsbC4KKworVGhlIE9TRCBUZXN0aW5nIFVMRAorPT09PT09PT09PT09PT09PT09PQorVE9ETzogTW9yZSB1c2VyLW1vZGUgY29udHJvbCBvbiB0ZXN0cy4KKworQXV0aG9ycywgTWFpbGluZyBsaXN0Cis9PT09PT09PT09PT09PT09PT09PT0KK1BsZWFzZSBjb21tdW5pY2F0ZSB3aXRoIHVzIG9uIGFueSBkZXBsb3ltZW50IG9mIG9zZCwgd2hldGhlciB1c2luZyB0aGlzIGNvZGUKK29yIG5vdC4KKworQW55IHByb2JsZW1zLCBxdWVzdGlvbnMsIGJ1ZyByZXBvcnRzLCBsb25lbHkgT1NEIG5pZ2h0cywgcGxlYXNlIGVtYWlsOgorICAgT1NEIERldiBMaXN0IDxvc2QtZGV2QG9wZW4tb3NkLm9yZz4KKworTW9yZSB1cC10by1kYXRlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBvbjoKK2h0dHA6Ly9vcGVuLW9zZC5vcmcKKworQm9heiBIYXJyb3NoIDxvb29AZWxlY3Ryb3phdXIuY29tPgorCitSZWZlcmVuY2VzCis9PT09PT09PT09CitXZWJlciwgUi4sICJTQ1NJIE9iamVjdC1CYXNlZCBTdG9yYWdlIERldmljZSBDb21tYW5kcyIsCitUMTAvMTM1NS1EIEFOU0kvSU5DSVRTIDQwMC0yMDA0LAoraHR0cDovL3d3dy50MTAub3JnL2Z0cC90MTAvZHJhZnRzL29zZC9vc2QtcjEwLnBkZgorCitXZWJlciwgUi4sICJTQ1NJIE9iamVjdC1CYXNlZCBTdG9yYWdlIERldmljZSBDb21tYW5kcyAtMiAoT1NELTIpIgorVDEwLzE3MjktRCwgV29ya2luZyBEcmFmdCwgcmV2LiAzCitodHRwOi8vd3d3LnQxMC5vcmcvZnRwL3QxMC9kcmFmdHMvb3NkMi9vc2QycjAzLnBkZgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL29zc3QudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL29zc3QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwYzhlYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvb3NzdC50eHQKQEAgLTAsMCArMSwyMTggQEAKK1JFQURNRSBmaWxlIGZvciB0aGUgb3NzdCBkcml2ZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyh3KSBLdXJ0IEdhcmxvZmYgPGdhcmxvZmZAc3VzZS5kZT4gMTIvMjAwMAorCitUaGlzIGZpbGUgZGVzY3JpYmVzIHRoZSBvc3N0IGRyaXZlciBhcyBvZiB2ZXJzaW9uIDAuOC54LzAuOS54LCB0aGUgcmVsZWFzZWQKK3ZlcnNpb24gb2YgdGhlIG9zc3QgZHJpdmVyLgorSXQgaXMgaW50ZW5kZWQgdG8gaGVscCBhZHZhbmNlZCB1c2VycyB0byB1bmRlcnN0YW5kIHRoZSByb2xlIG9mIG9zc3QgYW5kIHRvCitnZXQgdGhlbSBzdGFydGVkIHVzaW5nIChhbmQgbWF5YmUgZGVidWdnaW5nKSBpdC4KK0l0IHdvbid0IGFkZHJlc3MgaXNzdWVzIGxpa2UgIkhvdyBkbyBJIGNvbXBpbGUgYSBrZXJuZWw/IiBvciAiSG93IGRvIEkgbG9hZAorYSBtb2R1bGU/IiwgYXMgdGhlc2UgYXJlIHRvbyBiYXNpYy4KK09uY2UgdGhlIE9uU3RyZWFtIGdvdCBtZXJnZWQgaW50byB0aGUgb2ZmaWNpYWwga2VybmVsLCB0aGUgZGlzdHJvIG1ha2Vycword2lsbCBwcm92aWRlIHRoZSBPblN0cmVhbSBzdXBwb3J0IGZvciB0aG9zZSB3aG8gYXJlIG5vdCBmYW1pbGlhciB3aXRoCitoYWNraW5nIHRoZWlyIGtlcm5lbHMuCisKKworUHVycG9zZQorLS0tLS0tLQorVGhlIG9zc3QgZHJpdmVyIHdhcyBkZXZlbG9wZWQsIGJlY2F1c2UgdGhlIHN0YW5kYXJkIFNDU0kgdGFwZSBkcml2ZXIgaW4KK0xpbnV4LCBzdCwgZG9lcyBub3Qgc3VwcG9ydCB0aGUgT25TdHJlYW0gU0MteDAgU0NTSSB0YXBlLiBUaGUgc3QgaXMgbm90IHRvCitibGFtZSBmb3IgdGhhdCwgYXMgdGhlIE9uU3RyZWFtIHRhcGUgZHJpdmVzIGRvIG5vdCBzdXBwb3J0IHRoZSBzdGFuZGFyZCBTQ1NJCitjb21tYW5kIHNldCBmb3IgU2VyaWFsIEFjY2VzcyBTdG9yYWdlIERldmljZXMgKFNBU0RzKSwgd2hpY2ggYmFzaWNhbGx5Citjb3JyZXNwb25kcyB0byB0aGUgUUlDLTE1NyBzcGVjLgorTmV2ZXJ0aGVsZXNzLCB0aGUgT25TdHJlYW0gdGFwZXMgYXJlIG5pY2UgcGllY2VzIG9mIGhhcmR3YXJlIGFuZCB0aGVyZWZvcmUKK3RoZSBvc3N0IGRyaXZlciBoYXMgYmVlbiB3cml0dGVuIHRvIG1ha2UgdGhlc2UgdGFwZSBkZXZzIHN1cHBvcnRlZCBieSBMaW51eC4KK1RoZSBkcml2ZXIgaXMgZnJlZSBzb2Z0d2FyZS4gSXQncyByZWxlYXNlZCB1bmRlciB0aGUgR05VIEdQTCBhbmQgcGxhbm5lZCB0bworYmUgaW50ZWdyYXRlZCBpbnRvIHRoZSBtYWluc3RyZWFtIGtlcm5lbC4KKworCitJbXBsZW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0KK1RoZSBvc3N0IGlzIGEgbmV3IGhpZ2gtbGV2ZWwgU0NTSSBkcml2ZXIsIGp1c3QgbGlrZSBzdCwgc3IsIHNkIGFuZCBzZy4gSXQKK2NhbiBiZSBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgb3IgbG9hZGVkIGFzIGEgbW9kdWxlLgorQXMgaXQgcmVwcmVzZW50cyBhIG5ldyBkZXZpY2UsIGl0IGdvdCBhc3NpZ25lZCBhIG5ldyBkZXZpY2Ugbm9kZTogL2Rldi9vc3N0WAorYXJlIGNoYXJhY3RlciBkZXZpY2VzIHdpdGggbWFqb3Igbm8gMjA2IGFuZCBtaW5vciBudW1iZXJzIGxpa2UgdGhlIC9kZXYvc3RYCitkZXZpY2VzLiBJZiB0aG9zZSBhcmUgbm90IHByZXNlbnQsIHlvdSBtYXkgY3JlYXRlIHRoZW0gYnkgY2FsbGluZworTWFrZWRldnMuc2ggYXMgcm9vdCAoc2VlIGJlbG93KS4KK1RoZSBkcml2ZXIgc3RhcnRlZCBiZWluZyBhIGNvcHkgb2Ygc3QgYW5kIGFzIHN1Y2gsIHRoZSBvc3N0IGRldmljZXMnCitiZWhhdmlvciBsb29rcyB2ZXJ5IG11Y2ggdGhlIHNhbWUgYXMgc3QgdG8gdGhlIHVzZXJzcGFjZSBhcHBsaWNhdGlvbnMuCisKKworSGlzdG9yeQorLS0tLS0tLQorSW4gdGhlIGZpcnN0IHBsYWNlLCBvc3N0IHNoYXJlZCBpdHMgaWRlbnRpdHkgdmVyeSBtdWNoIHdpdGggc3QuIFRoYXQgbWVhbnQKK3RoYXQgaXQgdXNlZCB0aGUgc2FtZSBrZXJuZWwgc3RydWN0dXJlcyBhbmQgdGhlIHNhbWUgZGV2aWNlIG5vZGUgYXMgc3QuCitTbyB5b3UgY291bGQgb25seSBoYXZlIGVpdGhlciBvZiB0aGVtIGJlaW5nIHByZXNlbnQgaW4gdGhlIGtlcm5lbC4gVGhpcyBoYXMKK2JlZW4gZml4ZWQgYnkgcmVnaXN0ZXJpbmcgYW4gb3duIGRldmljZSwgbm93Lgorc3QgYW5kIG9zc3QgY2FuIGNvZXhpc3QsIGVhY2ggb25seSBhY2Nlc3NpbmcgdGhlIGRldmljZXMgaXQgY2FuIHN1cHBvcnQgYnkKK3RoZW1zZWx2ZXMuCisKKworSW5zdGFsbGF0aW9uCistLS0tLS0tLS0tLS0KK29zc3QgZ290IGludGVncmF0ZWQgaW50byB0aGUgbGludXgga2VybmVsLiBTZWxlY3QgaXQgZHVyaW5nIGtlcm5lbAorY29uZmlndXJhdGlvbiBhcyBtb2R1bGUgb3IgY29tcGlsZSBzdGF0aWNhbGx5IGludG8gdGhlIGtlcm5lbC4KK0NvbXBpbGUgeW91ciBrZXJuZWwgYW5kIGluc3RhbGwgdGhlIG1vZHVsZXMuCisKK05vdywgeW91ciBvc3N0IGRyaXZlciBpcyBpbnNpZGUgdGhlIGtlcm5lbCBvciBhdmFpbGFibGUgYXMgYSBtb2R1bGUsCitkZXBlbmRpbmcgb24geW91ciBjaG9pY2UgZHVyaW5nIGtlcm5lbCBjb25maWcuIFlvdSBtYXkgc3RpbGwgbmVlZCB0byBjcmVhdGUKK3RoZSBkZXZpY2Ugbm9kZXMgYnkgY2FsbGluZyB0aGUgTWFrZWRldnMuc2ggc2NyaXB0IChzZWUgYmVsb3cpIG1hbnVhbGx5LgorCitUbyBsb2FkIHlvdXIgbW9kdWxlLCB5b3UgbWF5IHVzZSB0aGUgY29tbWFuZCAKK21vZHByb2JlIG9zc3QKK2FzIHJvb3QuIGRtZXNnIHNob3VsZCBzaG93IHlvdSwgd2hldGhlciB5b3VyIE9uU3RyZWFtIHRhcGVzIGhhdmUgYmVlbgorcmVjb2duaXplZC4KKworSWYgeW91IHdhbnQgdG8gaGF2ZSB0aGUgbW9kdWxlIGF1dG9sb2FkZWQgb24gYWNjZXNzIHRvIC9kZXYvb3NzdCwgeW91IG1heQorYWRkIHNvbWV0aGluZyBsaWtlCithbGlhcyBjaGFyLW1ham9yLTIwNiBvc3N0Cit0byBhIGZpbGUgdW5kZXIgL2V0Yy9tb2Rwcm9iZS5kLyBkaXJlY3RvcnkuCisKK1lvdSBtYXkgZmluZCBpdCBjb252ZW5pZW50IHRvIGNyZWF0ZSBhIHN5bWJvbGljIGxpbmsgCitsbiAtcyBub3NzdDAgL2Rldi90YXBlCit0byBtYWtlIHByb2dyYW1zIGFzc3VtaW5nIGEgZGVmYXVsdCBuYW1lIG9mIC9kZXYvdGFwZSBtb3JlIGNvbnZlbmllbnQgdG8KK3VzZS4KKworVGhlIGRldmljZSBub2RlcyBmb3Igb3NzdCBoYXZlIHRvIGJlIGNyZWF0ZWQuIFVzZSB0aGUgTWFrZWRldnMuc2ggc2NyaXB0CithdHRhY2hlZCB0byB0aGlzIGZpbGUuCisKKworVXNpbmcgaXQKKy0tLS0tLS0tCitZb3UgbWF5IHVzZSB0aGUgT25TdHJlYW0gdGFwZSBkcml2ZXIgd2l0aCB5b3VyIHN0YW5kYXJkIGJhY2t1cCBzb2Z0d2FyZSwKK3doaWNoIG1heSBiZSB0YXIsIGNwaW8sIGFtYW5kYSwgYXJrZWlhLCBCUlUsIExvbmUgVGFyLCAuLi4KK2J5IHNwZWNpZnlpbmcgL2Rldi8obilvc3N0MCBhcyB0aGUgdGFwZSBkZXZpY2UgdG8gdXNlIG9yIHVzaW5nIHRoZSBhYm92ZQorc3ltbGluayB0cmljay4gVGhlIElPQ1RMcyB0byBjb250cm9sIHRhcGUgb3BlcmF0aW9uIGFyZSBhbHNvIG1vc3RseQorc3VwcG9ydGVkIGFuZCB5b3UgbWF5IHRyeSB0aGUgbXQgKG9yIG10X3N0KSBwcm9ncmFtIHRvIGp1bXAgYmV0d2VlbgorZmlsZW1hcmtzLCBlamVjdCB0aGUgdGFwZSwgLi4uCisKK1RoZXJlJ3Mgb25lIGxpbWl0YXRpb246IFlvdSBuZWVkIHRvIHVzZSBhIGJsb2NrIHNpemUgb2YgMzJrQi4KKworKFRoaXMgbGltaXRhdGlvbiBpcyB3b3JrZWQgb24gYW5kIHdpbGwgYmUgZml4ZWQgaW4gdmVyc2lvbiAwLjguOCBvZgorIHRoaXMgZHJpdmVyLikKKworSWYgeW91IGp1c3Qgd2FudCB0byBnZXQgc3RhcnRlZCB3aXRoIHN0YW5kYXJkIHNvZnR3YXJlLCBoZXJlIGlzIGFuIGV4YW1wbGUKK2ZvciBjcmVhdGluZyBhbmQgcmVzdG9yaW5nIGEgZnVsbCBiYWNrdXA6CisjIEJhY2t1cAordGFyIGN2ZiAtIC8gLS1leGNsdWRlIC9wcm9jIHwgYnVmZmVyIC1zIDMyayAtbSAyNE0gLUIgLXQgLW8gL2Rldi9ub3NzdDAKKyMgUmVzdG9yZQorYnVmZmVyIC1zIDMyayAtbSA4TSAtQiAtdCAtaSAvZGV2L29zc3QwIHwgdGFyIHh2ZiAtIC1DIC8KKworVGhlIGJ1ZmZlciBjb21tYW5kIGhhcyBiZWVuIHVzZWQgdG8gYnVmZmVyIHRoZSBkYXRhIGJlZm9yZSBpdCBnb2VzIHRvIHRoZQordGFwZSAob3IgdGhlIGZpbGUgc3lzdGVtKSBpbiBvcmRlciB0byBzbW9vdGggb3V0IHRoZSBkYXRhIHN0cmVhbSBhbmQgcHJldmVudAordGhlIHRhcGUgZnJvbSBuZWVkaW5nIHRvIHN0b3AgYW5kIHJld2luZC4gVGhlIE9uU3RyZWFtIGRvZXMgaGF2ZSBhbiBpbnRlcm5hbAorYnVmZmVyIGFuZCBhIHZhcmlhYmxlIHNwZWVkIHdoaWNoIGhlbHAgdGhpcywgYnV0IGVzcGVjaWFsbHkgb24gd3JpdGluZywgdGhlCitidWZmZXJpbmcgc3RpbGwgcHJvdmVzIHVzZWZ1bCBpbiBtb3N0IGNhc2VzLiBJdCBhbHNvIHBhZHMgdGhlIGRhdGEgdG8KK2d1YXJhbnRlZXMgdGhlIGJsb2NrIHNpemUgb2YgMzJrLiAoT3RoZXJ3aXNlIHlvdSBtYXkgcGFzcyB0aGUgLWI2NCBvcHRpb24gdG8KK3Rhci4pCitFeHBlY3Qgc29tZXRoaW5nIGxpa2UgMS44TUIvcyBmb3IgdGhlIFNDLXgwIGRyaXZlcyBhbmQgMC45TUIvcyBmb3IgdGhlIERJLTMwLgorVGhlIFVTQiBkcml2ZSB3aWxsIGdpdmUgeW91IGFib3V0IDAuN01CL3MuCitPbiBhIGZhc3QgbWFjaGluZSwgeW91IG1heSBwcm9maXQgZnJvbSBzb2Z0d2FyZSBkYXRhIGNvbXByZXNzaW9uICh6IGZsYWcgZm9yCit0YXIpLgorCisKK1VTQiBhbmQgSURFCistLS0tLS0tLS0tLQorVmlhIHRoZSBTQ1NJIGVtdWxhdGlvbiBsYXllcnMgdXNiLXN0b3JhZ2UgYW5kIGlkZS1zY3NpLCB5b3UgY2FuIGFsc28gdXNlIHRoZQorb3NzdCBkcml2ZXIgdG8gZHJpdmUgdGhlIFVTQi0zMCBhbmQgdGhlIERJLTMwIGRyaXZlcy4gKFVuZm9ydHVuYXRlbHksIHRoZXJlCitpcyBubyBzdWNoIGxheWVyIGZvciB0aGUgcGFyYWxsZWwgcG9ydCwgb3RoZXJ3aXNlIHRoZSBEUC0zMCB3b3VsZCB3b3JrIGFzCit3ZWxsLikgRm9yIHRoZSBVU0Igc3VwcG9ydCwgeW91IG5lZWQgdGhlIGxhdGVzdCAyLjQuMC10ZXN0IGtlcm5lbHMgYW5kIHRoZSAKK2xhdGVzdCB1c2Itc3RvcmFnZSBkcml2ZXIgZnJvbSAKK2h0dHA6Ly93d3cubGludXgtdXNiLm9yZy8KK2h0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvY3ZzLz9ncm91cF9pZD0zNTgxCisKK05vdGUgdGhhdCB0aGUgaWRlLXRhcGUgZHJpdmVyIGFzIG9mIDEuMTZmIHVzZXMgYSBzbGlnaHRseSBvdXRkYXRlZCBvbi10YXBlCitmb3JtYXQgYW5kIHRoZXJlZm9yZSBpcyBub3QgY29tcGxldGVseSBpbnRlcm9wZXJhYmxlIHdpdGggb3NzdCB0YXBlcy4KKworVGhlIEFEUi14MCBsaW5lIGlzIGZ1bGx5IFNDU0ktMiBjb21wbGlhbnQgYW5kIGlzIHN1cHBvcnRlZCBieSBzdCwgbm90IG9zc3QuCitUaGUgb24tdGFwZSBmb3JtYXQgaXMgc3VwcG9zZWQgdG8gYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBvbmUgdXNlZCBieSBvc3N0LgorCisKK0ZlZWRiYWNrIGFuZCB1cGRhdGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIGRyaXZlciBkZXZlbG9wbWVudCBpcyBjb29yZGluYXRlZCB0aHJvdWdoIGEgbWFpbGluZyBsaXN0Cis8b3NzdEBsaW51eDEub25zdHJlYW0ubmw+CithIENWUyByZXBvc2l0b3J5IGFuZCBzb21lIHdlYiBwYWdlcy4gCitUaGUgdGVzdGVyJ3MgcGFnZXMgd2hpY2ggY29udGFpbiByZWNlbnQgbmV3cyBhbmQgdXBkYXRlZCBkcml2ZXJzIHRvIGRvd25sb2FkCitjYW4gYmUgZm91bmQgb24KK2h0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvb3NzdC8KKworSWYgeW91IGZpbmQgYW55IHByb2JsZW1zLCBwbGVhc2UgaGF2ZSBhIGxvb2sgYXQgdGhlIHRlc3RlcidzIHBhZ2UgaW4gb3JkZXIKK3RvIHNlZSB3aGV0aGVyIHRoZSBwcm9ibGVtIGlzIGFscmVhZHkga25vd24gYW5kIHNvbHZlZC4gT3RoZXJ3aXNlLCBwbGVhc2UKK3JlcG9ydCBpdCB0byB0aGUgbWFpbGluZyBsaXN0LiBZb3VyIGZlZWRiYWNrIGlzIHdlbGNvbWUuIChUaGlzIGhvbGRzIGFsc28KK2ZvciByZXBvcnRzIG9mIHN1Y2Nlc3NmdWwgdXNhZ2UsIG9mIGNvdXJzZS4pIAorSW4gY2FzZSBvZiB0cm91YmxlLCBwbGVhc2UgZG8gYWx3YXlzIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBpbmZvOgorKiBkcml2ZXIgYW5kIGtlcm5lbCB2ZXJzaW9uIHVzZWQgKHNlZSBzeXNsb2cpCisqIGRyaXZlciBtZXNzYWdlcyAoc3lzbG9nKQorKiBTQ1NJIGNvbmZpZyBhbmQgT25TdHJlYW0gRmlybXdhcmUgKC9wcm9jL3Njc2kvc2NzaSkKKyogZGVzY3JpcHRpb24gb2YgZXJyb3IuIElzIGl0IHJlcHJvZHVjaWJsZT8KKyogc29mdHdhcmUgYW5kIGNvbW1hbmRzIHVzZWQKKworWW91IG1heSBzdWJzY3JpYmUgdG8gdGhlIG1haWxpbmcgbGlzdCwgQlRXLCBpdCdzIGEgbWFqb3Jkb21vIGxpc3QuCisKKworU3RhdHVzCistLS0tLS0KKzAuOC4wIHdhcyB0aGUgZmlyc3Qgd2lkZXNwcmVhZCBCRVRBIHJlbGVhc2UuIFNpbmNlIHRoZW4gYSBsb3Qgb2YgcmVwb3J0cworaGF2ZSBiZWVuIHNlbnQsIGJ1dCBtb3N0bHkgcmVwb3J0ZWQgc3VjY2VzcyBvciBvbmx5IG1pbm9yIHRyb3VibGUuCitBbGwgdGhlIGlzc3VlcyBoYXZlIGJlZW4gYWRkcmVzc2VkLgorQ2hlY2sgdGhlIHdlYiBwYWdlcyBmb3IgbW9yZSBpbmZvIGFib3V0IHRoZSBjdXJyZW50IGRldmVsb3BtZW50cy4KKzAuOS54IGlzIHRoZSB0cmVlIGZvciB0aGUgMi4zLzIuNCBrZXJuZWwuCisKKworQWNrbm93bGVkZ21lbnRzCistLS0tLS0tLS0tLS0tLS0tCitUaGUgZHJpdmVyIGhhcyBiZWVuIHN0YXJ0ZWQgYnkgbWFraW5nIGEgY29weSBvZiBLYWkgTWFraXNhcmEncyBzdCBkcml2ZXIuCitNb3N0IG9mIHRoZSBkZXZlbG9wbWVudCBoYXMgYmVlbiBkb25lIGJ5IFdpbGxlbSBSaWVkZS4gVGhlIHByZXNlbmNlIG9mIHRoZQordXNlcnNwYWNlIHByb2dyYW0gb3NnIChvbnN0cmVhbXNnKSBmcm9tIFRlcnJ5IEhhcmRpZSBoYXMgYmVlbiByYXRoZXIKK2hlbHBmdWwuIFRoZSBzYW1lIGhvbGRzIGZvciBHYWRpIE94bWFuJ3MgaWRlLXRhcGUgc3VwcG9ydCBmb3IgdGhlIERJLTMwLgorSSBkaWQgYWRkIHNvbWUgcGF0Y2hlcyB0byB0aG9zZSBkcml2ZXJzIGFzIHdlbGwgYW5kIGNvb3JkaW5hdGVkIHRoaW5ncyBhCitsaXR0bGUgYml0LiAKK05vdGUgdGhhdCBtb3N0IG9mIHRoZW0gZGlkIG1vc3RseSBzcGVuZCB0aGVpciBzcGFyZSB0aW1lIGZvciB0aGUgY3JlYXRpb24gb2YKK3RoaXMgZHJpdmVyLgorVGhlIHBlb3BsZSBmcm9tIE9uU3RyZWFtLCBlc3BlY2lhbGx5IEphY2sgQm9tYmVlY2sgZGlkIHN1cHBvcnQgdGhpcyBwcm9qZWN0CithbmQgYWx3YXlzIHRyaWVkIHRvIGFuc3dlciBIVyBvciBGVyByZWxhdGVkIHF1ZXN0aW9ucy4gRnVydGhlcm1vcmUsIGhlCitwdXNoZWQgdGhlIEZXIGRldmVsb3BlcnMgdG8gZG8gdGhlIHJpZ2h0IHRoaW5ncy4KK1N1U0UgZGlkIHN1cHBvcnQgdGhpcyBwcm9qZWN0IGJ5IGFsbG93aW5nIG1lIHRvIHdvcmsgb24gaXQgZHVyaW5nIG15IHdvcmtpbmcKK3RpbWUgZm9yIHRoZW0gYW5kIGJ5IGludGVncmF0aW5nIHRoZSBkcml2ZXIgaW50byB0aGVpciBkaXN0cm8uCisKK01vcmUgcGVvcGxlIGRpZCBoZWxwIGJ5IHNlbmRpbmcgdXNlZnVsIGNvbW1lbnRzLiBTb3JyeSB0byB0aG9zZSB3aG8gaGF2ZQorYmVlbiBmb3Jnb3R0ZW4uIFRoYW5rcyB0byBhbGwgdGhlIEdOVS9GU0YgYW5kIExpbnV4IGRldmVsb3BlcnMgd2hvIG1hZGUgdGhpcworcGxhdGZvcm0gc3VjaCBhbiBpbnRlcmVzdGluZywgbmljZSBhbmQgc3RhYmxlIHBsYXRmb3JtLgorVGhhbmtzIGdvIHRvIHRob3NlIHdobyB0ZXN0ZWQgdGhlIGRyaXZlcnMgYW5kIGRpZCBzZW5kIHVzZWZ1bCByZXBvcnRzLiBZb3VyCitoZWxwIGlzIG5lZWRlZCEKKworCitNYWtlZGV2cy5zaAorLS0tLS0tLS0tLS0KKyMhL2Jpbi9zaAorIyBTY3JpcHQgdG8gY3JlYXRlIE9uU3RyZWFtIFNDLXgwIGRldmljZSBub2RlcyAobWFqb3IgMjA2KQorIyBVc2FnZTogTWFrZWRldnMuc2ggW25vcyBbcGF0aCB0byBkZXZdXQorIyAkSWQ6IFJFQURNRS5vc3N0Lmtlcm5lbCx2IDEuNCAyMDAwLzEyLzIwIDE0OjEzOjE1IGdhcmxvZmYgRXhwICQKK21ham9yPTIwNgorbnJzPTQKK2Rpcj0vZGV2Cit0ZXN0IC16ICIkMSIgfHwgbnJzPSQxCit0ZXN0IC16ICIkMiIgfHwgZGlyPSQyCitkZWNsYXJlIC1pIG5yCitucj0wCit0ZXN0IC1kICRkaXIgfHwgbWtkaXIgLXAgJGRpcgord2hpbGUgdGVzdCAkbnIgLWx0ICRucnM7IGRvCisgIG1rbm9kICRkaXIvb3NzdCRuciBjICRtYWpvciAkbnIKKyAgY2hvd24gMC5kaXNrICRkaXIvb3NzdCRucjsgY2htb2QgNjYwICRkaXIvb3NzdCRucjsKKyAgbWtub2QgJGRpci9ub3NzdCRuciBjICRtYWpvciAkW25yKzEyOF0KKyAgY2hvd24gMC5kaXNrICRkaXIvbm9zc3QkbnI7IGNobW9kIDY2MCAkZGlyL25vc3N0JG5yOworICBta25vZCAkZGlyL29zc3Qke25yfWwgYyAkbWFqb3IgJFtuciszMl0KKyAgY2hvd24gMC5kaXNrICRkaXIvb3NzdCR7bnJ9bDsgY2htb2QgNjYwICRkaXIvb3NzdCR7bnJ9bDsKKyAgbWtub2QgJGRpci9ub3NzdCR7bnJ9bCBjICRtYWpvciAkW25yKzE2MF0KKyAgY2hvd24gMC5kaXNrICRkaXIvbm9zc3Qke25yfWw7IGNobW9kIDY2MCAkZGlyL25vc3N0JHtucn1sOworICBta25vZCAkZGlyL29zc3Qke25yfW0gYyAkbWFqb3IgJFtucis2NF0KKyAgY2hvd24gMC5kaXNrICRkaXIvb3NzdCR7bnJ9bTsgY2htb2QgNjYwICRkaXIvb3NzdCR7bnJ9bTsKKyAgbWtub2QgJGRpci9ub3NzdCR7bnJ9bSBjICRtYWpvciAkW25yKzE5Ml0KKyAgY2hvd24gMC5kaXNrICRkaXIvbm9zc3Qke25yfW07IGNobW9kIDY2MCAkZGlyL25vc3N0JHtucn1tOworICBta25vZCAkZGlyL29zc3Qke25yfWEgYyAkbWFqb3IgJFtucis5Nl0KKyAgY2hvd24gMC5kaXNrICRkaXIvb3NzdCR7bnJ9YTsgY2htb2QgNjYwICRkaXIvb3NzdCR7bnJ9YTsKKyAgbWtub2QgJGRpci9ub3NzdCR7bnJ9YSBjICRtYWpvciAkW25yKzIyNF0KKyAgY2hvd24gMC5kaXNrICRkaXIvbm9zc3Qke25yfWE7IGNobW9kIDY2MCAkZGlyL25vc3N0JHtucn1hOworICBsZXQgbnIrPTEKK2RvbmUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9wcGEudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL3BwYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVmZjQ3ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2NzaS9wcGEudHh0CkBAIC0wLDAgKzEsMTQgQEAKKy0tLS0tLS0tIFRlcnNlIHdoZXJlIHRvIGdldCBaSVAgRHJpdmUgaGVscCBpbmZvIC0tLS0tLS0tCisKK0dlbmVyYWwgSW9tZWdhIFpJUCBkcml2ZSBwYWdlIGZvciBMaW51eDoKK2h0dHA6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLyovaHR0cDovL3d3dy50b3JxdWUubmV0L35jYW1wYmVsbC8KKworRHJpdmVyIGFyY2hpdmUgZm9yIG9sZCBkcml2ZXJzOgoraHR0cDovL3dlYi5hcmNoaXZlLm9yZy93ZWIvKi9odHRwOi8vd3d3LnRvcnF1ZS5uZXQvfmNhbXBiZWxsL3BwYQorCitMaW51eCBQYXJwb3J0IHBhZ2UgKHBhcmFsbGVsIHBvcnQpCitodHRwOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8qL2h0dHA6Ly93d3cudG9ycXVlLm5ldC9wYXJwb3J0LworCitFbWFpbCBsaXN0IGZvciBMaW51eCBQYXJwb3J0CitsaW51eC1wYXJwb3J0QHRvcnF1ZS5uZXQKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL3Fsb2dpY2Zhcy50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvcWxvZ2ljZmFzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjExZDgyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL3Fsb2dpY2Zhcy50eHQKQEAgLTAsMCArMSw3OCBAQAorCitUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgUWxvZ2ljIEZBU1hYWCBmYW1pbHkgb2YgY2hpcHMuICBUaGlzIGRyaXZlcgorb25seSB3b3JrcyB3aXRoIHRoZSBJU0EsIFZMQiwgYW5kIFBDTUNJQSB2ZXJzaW9ucyBvZiB0aGUgUWxvZ2ljCitGYXN0U0NTSSEgIGNhcmRzIGFzIHdlbGwgYXMgYW55IG90aGVyIGNhcmQgYmFzZWQgb24gdGhlIEZBU1hYIGNoaXAKKyhpbmNsdWRpbmcgdGhlIENvbnRyb2wgQ29uY2VwdHMgU0NTSS9JREUvU0lPL1BJTy9GREMgY2FyZHMpLgorCitUaGlzIGRyaXZlciBkb2VzIE5PVCBzdXBwb3J0IHRoZSBQQ0kgdmVyc2lvbi4gIFN1cHBvcnQgZm9yIHRoZXNlIFBDSQorUWxvZ2ljIGJvYXJkczoKKworCSogSVEtUENJCisJKiBJUS1QQ0ktMTAKKwkqIElRLVBDSS1ECisKK2lzIHByb3ZpZGVkIGJ5IHRoZSBxbGExMjgwIGRyaXZlci4KKworTm9yIGRvZXMgaXQgc3VwcG9ydCB0aGUgUENJLUJhc2ljLCB3aGljaCBpcyBzdXBwb3J0ZWQgYnkgdGhlCisnYW01M2M5NzQnIGRyaXZlci4KKworUENNQ0lBIFNVUFBPUlQKKworVGhpcyBjdXJyZW50bHkgb25seSB3b3JrcyBpZiB0aGUgY2FyZCBpcyBlbmFibGVkIGZpcnN0IGZyb20gRE9TLiAgVGhpcworbWVhbnMgeW91IHdpbGwgaGF2ZSB0byBsb2FkIHlvdXIgc29ja2V0IGFuZCBjYXJkIHNlcnZpY2VzLCBhbmQKK1FMNDFET1MuU1lTIGFuZCBRTDQwRU5CTC5TWVMuICBUaGVzZSBhcmUgYSBtaW5pbXVtLCBidXQgbG9hZGluZyB0aGUKK3Jlc3Qgb2YgdGhlIG1vZHVsZXMgd29uJ3QgaW50ZXJmZXJlIHdpdGggdGhlIG9wZXJhdGlvbi4gIFRoZSBuZXh0Cit0aGluZyB0byBkbyBpcyBsb2FkIHRoZSBrZXJuZWwgd2l0aG91dCByZXNldHRpbmcgdGhlIGhhcmR3YXJlLCB3aGljaAorY2FuIGJlIGEgc2ltcGxlIGN0cmwtYWx0LWRlbGV0ZSB3aXRoIGEgYm9vdCBmbG9wcHksIG9yIGJ5IHVzaW5nCitsb2FkbGluIHdpdGggdGhlIGtlcm5lbCBpbWFnZSBhY2Nlc3NpYmxlIGZyb20gRE9TLiAgSWYgeW91IGFyZSB1c2luZwordGhlIExpbnV4IFBDTUNJQSBkcml2ZXIsIHlvdSB3aWxsIGhhdmUgdG8gYWRqdXN0IGl0IG9yIG90aGVyd2lzZSBzdG9wCitpdCBmcm9tIGNvbmZpZ3VyaW5nIHRoZSBjYXJkLgorCitJIGFtIHdvcmtpbmcgd2l0aCB0aGUgUENNQ0lBIGdyb3VwIHRvIG1ha2UgaXQgbW9yZSBmbGV4aWJsZSwgYnV0IHRoYXQKK21heSB0YWtlIGEgd2hpbGUuCisKK0FMTCBDQVJEUworCitUaGUgdG9wIG9mIHRoZSBxbG9naWMuYyBmaWxlIGhhcyBhIG51bWJlciBvZiBkZWZpbmVzIHRoYXQgY29udHJvbHMKK2NvbmZpZ3VyYXRpb24uICBBcyBzaGlwcGVkLCBpdCBwcm92aWRlcyBhIGJhbGFuY2UgYmV0d2VlbiBzcGVlZCBhbmQKK2Z1bmN0aW9uLiAgSWYgdGhlcmUgYXJlIGFueSBwcm9ibGVtcywgdHJ5IHNldHRpbmcgU0xPV19DQUJMRSB0byAxLCBhbmQKK3RoZW4gdHJ5IGNoYW5naW5nIFVTRV9JUlEgYW5kIFRVUkJPX1BETUEgdG8gemVyby4gIElmIHlvdSBhcmUgZmFtaWxpYXIKK3dpdGggU0NTSSwgdGhlcmUgYXJlIG90aGVyIHNldHRpbmdzIHdoaWNoIGNhbiB0dW5lIHRoZSBidXMuCisKK0l0IG1heSBiZSBhIGdvb2QgaWRlYSB0byBlbmFibGUgUkVTRVRfQVRfU1RBUlQsIGVzcGVjaWFsbHkgaWYgdGhlCitkZXZpY2VzIG1heSBub3QgaGF2ZSBiZWVuIGp1c3QgcG93ZXJlZCB1cCwgb3IgaWYgeW91IGFyZSByZXN0YXJ0aW5nCithZnRlciBhIGNyYXNoLCBzaW5jZSB0aGV5IG1heSBiZSBidXN5IHRyeWluZyB0byBjb21wbGV0ZSB0aGUgbGFzdAorY29tbWFuZCBvciBzb21ldGhpbmcuICBJdCBjb21lcyB1cCBmYXN0ZXIgaWYgdGhpcyBpcyBzZXQgdG8gemVybywgYW5kCitpZiB5b3UgaGF2ZSByZWxpYWJsZSBoYXJkd2FyZSBhbmQgY29ubmVjdGlvbnMgaXQgbWF5IGJlIG1vcmUgdXNlZnVsIHRvCitub3QgcmVzZXQgdGhpbmdzLgorCitTT01FIFRST1VCTEVTSE9PVElORyBUSVBTCisKK01ha2Ugc3VyZSBpdCB3b3JrcyBwcm9wZXJseSB1bmRlciBET1MuICBZb3Ugc2hvdWxkIGFsc28gZG8gYW4gaW5pdGlhbCBGRElTSworb24gYSBuZXcgZHJpdmUgaWYgeW91IHdhbnQgcGFydGl0aW9ucy4KKworRG9uJ3QgZW5hYmxlIGFsbCB0aGUgc3BlZWR1cHMgZmlyc3QuICBJZiBhbnl0aGluZyBpcyB3cm9uZywgdGhleSB3aWxsIG1ha2UKK2FueSBwcm9ibGVtIHdvcnNlLgorCitJTVBPUlRBTlQKKworVGhlIGJlc3Qgd2F5IHRvIHRlc3QgaWYgeW91ciBjYWJsZXMsIHRlcm1pbmF0aW9uLCBldGMuIGFyZSBnb29kIGlzIHRvCitjb3B5IGEgdmVyeSBiaWcgZmlsZSAoZS5nLiBhIGRvdWJsZXNwYWNlIGNvbnRhaW5lciBmaWxlLCBvciBhIHZlcnkKK2xhcmdlIGV4ZWN1dGFibGUgb3IgYXJjaGl2ZSkuICBJdCBzaG91bGQgYmUgYXQgbGVhc3QgNSBtZWdhYnl0ZXMsIGJ1dAoreW91IGNhbiBkbyBtdWx0aXBsZSB0ZXN0cyBvbiBzbWFsbGVyIGZpbGVzLiAgVGhlbiBkbyBhIENPTVAgdG8gdmVyaWZ5Cit0aGF0IHRoZSBmaWxlIGNvcGllZCBwcm9wZXJseS4gIChUdXJuIG9mZiBhbGwgY2FjaGluZyB3aGVuIGRvaW5nIHRoZXNlCit0ZXN0cywgb3RoZXJ3aXNlIHlvdSB3aWxsIHRlc3QgeW91ciBSQU0gYW5kIG5vdCB0aGUgZmlsZXMpLiAgVGhlbiBkbworMTAgQ09NUHMsIGNvbXBhcmluZyB0aGUgc2FtZSBmaWxlIG9uIHRoZSBTQ1NJIGhhcmQgZHJpdmUsIGkuZS4gIkNPTVAKK3JlYWxiaWcuZG9jIHJlYWxiaWcuZG9jIi4gIFRoZW4gZG8gaXQgYWZ0ZXIgdGhlIGNvbXB1dGVyIGdldHMgd2FybS4KKworSSBub3RpY2VkIG15IHN5c3RlbSB3aGljaCBzZWVtcyB0byB3b3JrIDEwMCUgd291bGQgZmFpbCB0aGlzIHRlc3QgaWYKK3RoZSBjb21wdXRlciB3YXMgbGVmdCBvbiBmb3IgYSBmZXcgaG91cnMuICBJdCB3YXMgd29yc2Ugd2l0aCBsb25nZXIKK2NhYmxlcywgYW5kIG1vcmUgZGV2aWNlcyBvbiB0aGUgU0NTSSBidXMuICBXaGF0IHNlZW1zIHRvIGhhcHBlbiBpcwordGhhdCBpdCBnZXRzIGEgZmFsc2UgQUNLIGNhdXNpbmcgYW4gZXh0cmEgYnl0ZSB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZQorc3RyZWFtIChhbmQgdGhpcyBpcyBub3QgZGV0ZWN0ZWQpLiAgVGhpcyBjYW4gYmUgY2F1c2VkIGJ5IGJhZAordGVybWluYXRpb24gKHRoZSBBQ0sgY2FuIGJlIHJlZmxlY3RlZCksIG9yIGJ5IG5vaXNlIHdoZW4gdGhlIGNoaXBzCit3b3JrIGxlc3Mgd2VsbCBiZWNhdXNlIG9mIHRoZSBoZWF0LCBvciB3aGVuIGNhYmxlcyBnZXQgdG9vIGxvbmcgZm9yCit0aGUgc3BlZWQuCisKK1JlbWVtYmVyLCBpZiBpdCBkb2Vzbid0IHdvcmsgdW5kZXIgRE9TLCBpdCBwcm9iYWJseSB3b24ndCB3b3JrIHVuZGVyCitMaW51eC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9zY3NpLWNoYW5nZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2ktY2hhbmdlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRlMDQ2ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2NzaS9zY3NpLWNoYW5nZXIudHh0CkBAIC0wLDAgKzEsMTgwIEBACisKK1JFQURNRSBmb3IgdGhlIFNDU0kgbWVkaWEgY2hhbmdlciBkcml2ZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBpcyBhIGRyaXZlciBmb3IgU0NTSSBNZWRpdW0gQ2hhbmdlciBkZXZpY2VzLCB3aGljaCBhcmUgbGlzdGVkCit3aXRoICJUeXBlOiBNZWRpdW0gQ2hhbmdlciIgaW4gL3Byb2Mvc2NzaS9zY3NpLgorCitUaGlzIGlzIGZvciAqcmVhbCogSnVrZWJveGVzLiAgSXQgaXMgKm5vdCogc3VwcG9ydGVkIHRvIHdvcmsgd2l0aAorY29tbW9uIHNtYWxsIENELVJPTSBjaGFuZ2VycywgbmVpdGhlciBvbmUtbHVuLXBlci1zbG90IFNDU0kgY2hhbmdlcnMKK25vciBJREUgZHJpdmVzLgorCitVc2VybGFuZCB0b29scyBhdmFpbGFibGUgZnJvbSBoZXJlOgorCWh0dHA6Ly9saW51eC5ieXRlc2V4Lm9yZy9taXNjL2NoYW5nZXIuaHRtbAorCisKK0dlbmVyYWwgSW5mb3JtYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworRmlyc3Qgc29tZSB3b3JkcyBhYm91dCBob3cgY2hhbmdlcnMgd29yazogQSBjaGFuZ2VyIGhhcyAyIChwb3NzaWJseQorbW9yZSkgU0NTSSBJRCdzLiBPbmUgZm9yIHRoZSBjaGFuZ2VyIGRldmljZSB3aGljaCBjb250cm9scyB0aGUgcm9ib3QsCithbmQgb25lIGZvciB0aGUgZGV2aWNlIHdoaWNoIGFjdHVhbGx5IHJlYWRzIGFuZCB3cml0ZXMgdGhlIGRhdGEuIFRoZQorbGF0ZXIgbWF5IGJlIGFueXRoaW5nLCBhIE1PRCwgYSBDRC1ST00sIGEgdGFwZSBvciB3aGF0ZXZlci4gRm9yIHRoZQorY2hhbmdlciBkZXZpY2UgdGhpcyBpcyBhICJkb24ndCBjYXJlIiwgaGUgKm9ubHkqIHNodWZmbGVzIGFyb3VuZCB0aGUKK21lZGlhLCBub3RoaW5nIGVsc2UuCisKKworVGhlIFNDU0kgY2hhbmdlciBtb2RlbCBpcyBjb21wbGV4LCBjb21wYXJlZCB0byAtIGZvciBleGFtcGxlIC0gSURFLUNECitjaGFuZ2Vycy4gQnV0IGl0IGFsbG93cyB0byBoYW5kbGUgbmVhcmx5IGFsbCBwb3NzaWJsZSBjYXNlcy4gSXQga25vd3MKKzQgZGlmZmVyZW50IHR5cGVzIG9mIGNoYW5nZXIgZWxlbWVudHM6CisKKyAgbWVkaWEgdHJhbnNwb3J0IC0gdGhpcyBvbmUgc2h1ZmZsZXMgYXJvdW5kIHRoZSBtZWRpYSwgaS5lLiB0aGUKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0IGFybS4gIEFsc28ga25vd24gYXMgInBpY2tlciIuCisgIHN0b3JhZ2UgICAgICAgICAtIGEgc2xvdCB3aGljaCBjYW4gaG9sZCBhIG1lZGlhLgorICBpbXBvcnQvZXhwb3J0ICAgLSB0aGUgc2FtZSBhcyBhYm92ZSwgYnV0IGlzIGFjY2Vzc2libGUgZnJvbSBvdXRzaWRlLAorICAgICAgICAgICAgICAgICAgICBpLmUuIHRoZXJlIHRoZSBvcGVyYXRvciAoeW91ICEpIGNhbiB1c2UgdGhpcyB0bworICAgICAgICAgICAgICAgICAgICBmaWxsIGluIGFuZCByZW1vdmUgbWVkaWEgZnJvbSB0aGUgY2hhbmdlci4KKwkJICAgIFNvbWV0aW1lcyBuYW1lZCAibWFpbHNsb3QiLgorICBkYXRhIHRyYW5zZmVyICAgLSB0aGlzIGlzIHRoZSBkZXZpY2Ugd2hpY2ggcmVhZHMvd3JpdGVzLCBpLmUuIHRoZQorCQkgICAgQ0QtUk9NIC8gVGFwZSAvIHdoYXRldmVyIGRyaXZlLgorCitOb25lIG9mIHRoZXNlIGlzIGxpbWl0ZWQgdG8gb25lOiBBIGh1Z2UgSnVrZWJveCBjb3VsZCBoYXZlIHNsb3RzIGZvcgorMTIzIENELVJPTSdzLCA1IENELVJPTSByZWFkZXJzIChhbmQgdGhlcmVmb3JlIDYgU0NTSSBJRCdzOiB0aGUgY2hhbmdlcgorYW5kIGVhY2ggQ0QtUk9NKSBhbmQgMiB0cmFuc3BvcnQgYXJtcy4gTm8gcHJvYmxlbSB0byBoYW5kbGUuCisKKworSG93IGl0IGlzIGltcGxlbWVudGVkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSSBpbXBsZW1lbnRlZCB0aGUgZHJpdmVyIGFzIGNoYXJhY3RlciBkZXZpY2UgZHJpdmVyIHdpdGggYSBOZXRCU0QtbGlrZQoraW9jdGwgaW50ZXJmYWNlLiBKdXN0IGdyYWJiZWQgTmV0QlNEJ3MgaGVhZGVyIGZpbGUgYW5kIG9uZSBvZiB0aGUKK290aGVyIGxpbnV4IFNDU0kgZGV2aWNlIGRyaXZlcnMgYXMgc3RhcnRpbmcgcG9pbnQuIFRoZSBpbnRlcmZhY2UKK3Nob3VsZCBiZSBzb3VyY2UgY29kZSBjb21wYXRpYmxlIHdpdGggTmV0QlNELiBTbyBpZiB0aGVyZSBpcyBhbnkKK3NvZnR3YXJlIChhbnlib2R5IGtub3dzID8/Pykgd2hpY2ggc3VwcG9ydHMgYSBCU0Rpc2ggY2hhbmdlciBkcml2ZXIsCitpdCBzaG91bGQgd29yayB3aXRoIHRoaXMgZHJpdmVyIHRvby4KKworT3ZlciB0aW1lIGEgZmV3IG1vcmUgaW9jdGxzIHdoZXJlIGFkZGVkLCB2b2x1bWUgdGFnIHN1cHBvcnQgZm9yIGV4YW1wbGUKK3dhc24ndCBjb3ZlcmVkIGJ5IHRoZSBOZXRCU0QgaW9jdGwgQVBJLgorCisKK0N1cnJlbnQgU3RhdGUKKy0tLS0tLS0tLS0tLS0KKworU3VwcG9ydCBmb3IgbW9yZSB0aGFuIG9uZSB0cmFuc3BvcnQgYXJtIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQgKGFuZAorbm9ib2R5IGFza2VkIGZvciBpdCBzbyBmYXIuLi4pLgorCitJIHRlc3QgYW5kIHVzZSB0aGUgZHJpdmVyIG15c2VsZiB3aXRoIGEgMzUgc2xvdCBjZHJvbSBqdWtlYm94IGZyb20KK0dydW5kaWcuICBJIGdvdCBzb21lIHJlcG9ydHMgdGVsbGluZyBpdCB3b3JrcyBvayB3aXRoIHRhcGUgYXV0b2xvYWRlcnMKKyhFeGFieXRlLCBIUCBhbmQgREVDKS4gIFNvbWUgUGVvcGxlIHVzZSB0aGlzIGRyaXZlciB3aXRoIGFtYW5kYS4gIEl0Cit3b3JrcyBmaW5lIHdpdGggc21hbGwgKDExIHNsb3RzKSBhbmQgYSBodWdlICg0IE1PcywgODggc2xvdHMpCittYWduZXRvLW9wdGljYWwgSnVrZWJveC4gIFByb2JhYmx5IHdpdGggbG90cyBvZiBvdGhlciBjaGFuZ2VycyB0b28sIG1vc3QKKyhidXQgbm90IGFsbCA6LSkgcGVvcGxlIG1haWwgbWUgb25seSBpZiBpdCBkb2VzICpub3QqIHdvcmsuLi4KKworSSBkb24ndCBoYXZlIGFueSBkZXZpY2UgbGlzdHMsIG5laXRoZXIgYmxhY2stbGlzdCBub3Igd2hpdGUtbGlzdC4gIFRodXMKK2l0IGlzIHF1aXRlIHVzZWxlc3MgdG8gYXNrIG1lIHdoZW5ldmVyIGEgc3BlY2lmaWMgZGV2aWNlIGlzIHN1cHBvcnRlZCBvcgorbm90LiAgSW4gdGhlb3J5IGV2ZXJ5IGNoYW5nZXIgZGV2aWNlIHdoaWNoIHN1cHBvcnRzIHRoZSBTQ1NJLTIgbWVkaWEKK2NoYW5nZXIgY29tbWFuZCBzZXQgc2hvdWxkIHdvcmsgb3V0LW9mLXRoZS1ib3ggd2l0aCB0aGlzIGRyaXZlci4gIElmIGl0Citkb2Vzbid0LCBpdCBpcyBhIGJ1Zy4gIEVpdGhlciB3aXRoaW4gdGhlIGRyaXZlciBvciB3aXRoaW4gdGhlIGZpcm13YXJlCitvZiB0aGUgY2hhbmdlciBkZXZpY2UuCisKKworVXNpbmcgaXQKKy0tLS0tLS0tCisKK1RoaXMgaXMgYSBjaGFyYWN0ZXIgZGV2aWNlIHdpdGggbWFqb3IgbnVtYmVyIGlzIDg2LCBzbyB1c2UKKyJta25vZCAvZGV2L3NjaDAgYyA4NiAwIiB0byBjcmVhdGUgdGhlIHNwZWNpYWwgZmlsZSBmb3IgdGhlIGRyaXZlci4KKworSWYgdGhlIG1vZHVsZSBmaW5kcyB0aGUgY2hhbmdlciwgaXQgcHJpbnRzIHNvbWUgbWVzc2FnZXMgYWJvdXQgdGhlCitkZXZpY2UgWyB0cnkgImRtZXNnIiBpZiB5b3UgZG9uJ3Qgc2VlIGFueXRoaW5nIF0gYW5kIHNob3VsZCBzaG93IHVwIGluCisvcHJvYy9kZXZpY2VzLiBJZiBub3QuLi4uICBzb21lIGNoYW5nZXJzIHVzZSBJRCA/IC8gTFVOIDAgZm9yIHRoZQorZGV2aWNlIGFuZCBJRCA/IC8gTFVOIDEgZm9yIHRoZSByb2JvdCBtZWNoYW5pc20uIEJ1dCBMaW51eCBkb2VzICpub3QqCitsb29rIGZvciBMVU5zIG90aGVyIHRoYW4gMCBhcyBkZWZhdWx0LCBiZWNhdXNlIHRoZXJlIGFyZSB0b28gbWFueQorYnJva2VuIGRldmljZXMuIFNvIHlvdSBjYW4gdHJ5OgorCisgIDEpIGVjaG8gInNjc2kgYWRkLXNpbmdsZS1kZXZpY2UgMCAwIElEIDEiID4gL3Byb2Mvc2NzaS9zY3NpCisgICAgIChyZXBsYWNlIElEIHdpdGggdGhlIFNDU0ktSUQgb2YgdGhlIGRldmljZSkKKyAgMikgYm9vdCB0aGUga2VybmVsIHdpdGggIm1heF9zY3NpX2x1bnM9MSIgb24gdGhlIGNvbW1hbmQgbGluZQorICAgICAoYXBwZW5kPSJtYXhfc2NzaV9sdW5zPTEiIGluIGxpbG8uY29uZiBzaG91bGQgZG8gdGhlIHRyaWNrKQorCisKK1Ryb3VibGU/CistLS0tLS0tLQorCitJZiB5b3UgaW5zbW9kIHRoZSBkcml2ZXIgd2l0aCAiaW5zbW9kIGRlYnVnPTEiLCBpdCB3aWxsIGJlIHZlcmJvc2UgYW5kCitwcmludHMgYSBsb3Qgb2Ygc3R1ZmYgdG8gdGhlIHN5c2xvZy4gIENvbXBpbGluZyB0aGUga2VybmVsIHdpdGgKK0NPTkZJR19TQ1NJX0NPTlNUQU5UUz15IGltcHJvdmVzIHRoZSBxdWFsaXR5IG9mIHRoZSBlcnJvciBtZXNzYWdlcyBhIGxvdAorYmVjYXVzZSB0aGUga2VybmVsIHdpbGwgdHJhbnNsYXRlIHRoZSBlcnJvciBjb2RlcyBpbnRvIGh1bWFuLXJlYWRhYmxlCitzdHJpbmdzIHRoZW4uCisKK1lvdSBjYW4gZGlzcGxheSB0aGVzZSBtZXNzYWdlcyB3aXRoIHRoZSBkbWVzZyBjb21tYW5kIChvciBjaGVjayB0aGUKK2xvZ2ZpbGVzKS4gIElmIHlvdSBlbWFpbCBtZSBzb21lIHF1ZXN0aW9uIGJlY2F1c2Ugb2YgYSBwcm9ibGVtIHdpdGggdGhlCitkcml2ZXIsIHBsZWFzZSBpbmNsdWRlIHRoZXNlIG1lc3NhZ2VzLgorCisKK0luc21vZCBvcHRpb25zCistLS0tLS0tLS0tLS0tLQorCitkZWJ1Zz0wLzEKKwlFbmFibGUgZGVidWcgbWVzc2FnZXMgKHNlZSBhYm92ZSwgZGVmYXVsdDogMCkuCisKK3ZlcmJvc2U9MC8xCisJQmUgdmVyYm9zZSAoZGVmYXVsdDogMSkuCisKK2luaXQ9MC8xCisJU2VuZCBJTklUSUFMSVpFIEVMRU1FTlQgU1RBVFVTIGNvbW1hbmQgdG8gdGhlIGNoYW5nZXIKKwlhdCBpbnNtb2QgdGltZSAoZGVmYXVsdDogMSkuCisKK3RpbWVvdXRfaW5pdD08c2Vjb25kcz4KKwl0aW1lb3V0IGZvciB0aGUgSU5JVElBTElaRSBFTEVNRU5UIFNUQVRVUyBjb21tYW5kCisJKGRlZmF1bHQ6IDM2MDApLgorCit0aW1lb3V0X21vdmU9PHNlY29uZHM+CisJdGltZW91dCBmb3IgYWxsIG90aGVyIGNvbW1hbmRzIChkZWZhdWx0OiAxMjApLgorCitkdF9pZD08aWQxPiw8aWQyPiwuLi4KK2R0X2x1bj08bHVuMT4sPGx1bjI+LC4uLgorCVRoZXNlIHR3byBhbGxvdyB0byBzcGVjaWZ5IHRoZSBTQ1NJIElEIGFuZCBMVU4gZm9yIHRoZSBkYXRhCisJdHJhbnNmZXIgZWxlbWVudHMuICBZb3UgbGlrZWx5IGRvbid0IG5lZWQgdGhpcyBhcyB0aGUganVrZWJveAorCXNob3VsZCBwcm92aWRlIHRoaXMgaW5mb3JtYXRpb24uICBCdXQgc29tZSBkZXZpY2VzIGRvbid0IC4uLgorCit2ZW5kb3JfZmlyc3RzPQordmVuZG9yX2NvdW50cz0KK3ZlbmRvcl9sYWJlbHM9CisJVGhlc2UgaW5zbW9kIG9wdGlvbnMgY2FuIGJlIHVzZWQgdG8gdGVsbCB0aGUgZHJpdmVyIHRoYXQgdGhlcmUKKwlhcmUgc29tZSB2ZW5kb3Itc3BlY2lmaWMgZWxlbWVudCB0eXBlcy4gIEdydW5kaWcgZm9yIGV4YW1wbGUKKwlkb2VzIHRoaXMuICBTb21lIGp1a2Vib3hlcyBoYXZlIGEgcHJpbnRlciB0byBsYWJlbCBmcmVzaCBidXJuZWQKKwlDRHMsIHdoaWNoIGlzIGFkZHJlc3NlZCBhcyBlbGVtZW50IDB4YzAwMCAodHlwZSA1KS4gIFRvIHRlbGwgdGhlCisJZHJpdmVyIGFib3V0IHRoaXMgdmVuZG9yLXNwZWNpZmljIGVsZW1lbnQsIHVzZSB0aGlzOgorCQkkIGluc21vZCBjaAkJCVwKKwkJCXZlbmRvcl9maXJzdHM9MHhjMDAwCVwKKwkJCXZlbmRvcl9jb3VudHM9MQkJXAorCQkJdmVuZG9yX2xhYmVscz1wcmludGVyCisJQWxsIHRocmVlIGluc21vZCBvcHRpb25zIGFjY2VwdCB1cCB0byBmb3VyIGNvbW1hLXNlcGFyYXRlZAorCXZhbHVlcywgdGhpcyB3YXkgeW91IGNhbiBjb25maWd1cmUgdGhlIGVsZW1lbnQgdHlwZXMgNS04LgorCVlvdSBsaWtlbHkgbmVlZCB0aGUgU0NTSSBzcGVjcyBmb3IgdGhlIGRldmljZSBpbiBxdWVzdGlvbiB0bworCWZpbmQgdGhlIGNvcnJlY3QgdmFsdWVzIGFzIHRoZXkgYXJlIG5vdCBjb3ZlcmVkIGJ5IHRoZSBTQ1NJLTIKKwlzdGFuZGFyZC4KKworCitDcmVkaXRzCistLS0tLS0tCisKK0kgd3JvdGUgdGhpcyBkcml2ZXIgdXNpbmcgdGhlIGZhbW91cyBtYWlsaW5nLXBhdGNoZXMtYXJvdW5kLXRoZS13b3JsZAorbWV0aG9kLiAgV2l0aCAobW9yZSBvciBsZXNzKSBoZWxwIGZyb206CisKKwlEYW5pZWwgTW9laHdhbGQgPG1vZWh3YWxkQGhkZy5kZT4KKwlEYW5lIEphc3BlciA8ZGFuZUBzb25pYy5uZXQ+CisJUi4gU2NvdHQgQmFpbGV5IDxzYmFpbGV5QGRzZGRpLmVkcy5jb20+CisJSm9uYXRoYW4gQ29yYmV0IDxjb3JiZXRAbHduLm5ldD4KKworU3BlY2lhbCB0aGFua3MgZ28gdG8KKwlNYXJ0aW4gS3VlaG5lIDxtYXJ0aW4ua3VlaG5lQGJuYnQuZGU+Citmb3IgYSBvbGQsIHNlY29uZC1oYW5kIChidXQgZnVsbCBmdW5jdGlvbmFsKSBjZHJvbSBqdWtlYm94IHdoaWNoIEkgdXNlCit0byBkZXZlbG9wL3Rlc3QgZHJpdmVyIGFuZCB0b29scyBub3cuCisKK0hhdmUgZnVuLAorCisgICBHZXJkCisKKy0tIAorR2VyZCBLbm9yciA8a3JheGVsQGJ5dGVzZXgub3JnPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2ktZ2VuZXJpYy50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvc2NzaS1nZW5lcmljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWJlMjBhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2ktZ2VuZXJpYy50eHQKQEAgLTAsMCArMSwxMDEgQEAKKyAgICAgICAgICAgIE5vdGVzIG9uIExpbnV4IFNDU0kgR2VuZXJpYyAoc2cpIGRyaXZlcgorICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDIwMTI2CitJbnRyb2R1Y3Rpb24KKz09PT09PT09PT09PQorVGhlIFNDU0kgR2VuZXJpYyBkcml2ZXIgKHNnKSBpcyBvbmUgb2YgdGhlIGZvdXIgImhpZ2ggbGV2ZWwiIFNDU0kgZGV2aWNlCitkcml2ZXJzIGFsb25nIHdpdGggc2QsIHN0IGFuZCBzciAoZGlzaywgdGFwZSBhbmQgQ0RST00gcmVzcGVjdGl2ZWx5KS4gU2cKK2lzIG1vcmUgZ2VuZXJhbGl6ZWQgKGJ1dCBsb3dlciBsZXZlbCkgdGhhbiBpdHMgc2libGluZ3MgYW5kIHRlbmRzIHRvIGJlCit1c2VkIG9uIFNDU0kgZGV2aWNlcyB0aGF0IGRvbid0IGZpdCBpbnRvIHRoZSBhbHJlYWR5IHNlcnZpY2VkIGNhdGVnb3JpZXMuCitUaHVzIHNnIGlzIHVzZWQgZm9yIHNjYW5uZXJzLCBDRCB3cml0ZXJzIGFuZCByZWFkaW5nIGF1ZGlvIENEcyBkaWdpdGFsbHkKK2Ftb25nc3Qgb3RoZXIgdGhpbmdzLgorCitSYXRoZXIgdGhhbiBkb2N1bWVudCB0aGUgZHJpdmVyJ3MgaW50ZXJmYWNlIGhlcmUsIHZlcnNpb24gaW5mb3JtYXRpb24KK2lzIHByb3ZpZGVkIHBsdXMgcG9pbnRlcnMgKGkuZS4gVVJMcykgd2hlcmUgdG8gZmluZCBkb2N1bWVudGF0aW9uCithbmQgZXhhbXBsZXMuCisKKworTWFqb3IgdmVyc2lvbnMgb2YgdGhlIHNnIGRyaXZlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorVGhlcmUgYXJlIHRocmVlIG1ham9yIHZlcnNpb25zIG9mIHNnIGZvdW5kIGluIHRoZSBsaW51eCBrZXJuZWwgKGxrKToKKyAgICAgIC0gc2cgdmVyc2lvbiAxIChvcmlnaW5hbCkgZnJvbSAxOTkyIHRvIGVhcmx5IDE5OTkgKGxrIDIuMi41KSAuIAorCUl0IGlzIGJhc2VkIGluIHRoZSBzZ19oZWFkZXIgaW50ZXJmYWNlIHN0cnVjdHVyZS4KKyAgICAgIC0gc2cgdmVyc2lvbiAyIGZyb20gbGsgMi4yLjYgaW4gdGhlIDIuMiBzZXJpZXMuIEl0IGlzIGJhc2VkIG9uCisJYW4gZXh0ZW5kZWQgdmVyc2lvbiBvZiB0aGUgc2dfaGVhZGVyIGludGVyZmFjZSBzdHJ1Y3R1cmUuCisgICAgICAtIHNnIHZlcnNpb24gMyBmb3VuZCBpbiB0aGUgbGsgMi40IHNlcmllcyAoYW5kIHRoZSBsayAyLjUgc2VyaWVzKS4KKwlJdCBhZGRzIHRoZSBzZ19pb19oZHIgaW50ZXJmYWNlIHN0cnVjdHVyZS4KKworCitTZyBkcml2ZXIgZG9jdW1lbnRhdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT0KK1RoZSBtb3N0IHJlY2VudCBkb2N1bWVudGF0aW9uIG9mIHRoZSBzZyBkcml2ZXIgaXMga2VwdCBhdCB0aGUgTGludXgKK0RvY3VtZW50YXRpb24gUHJvamVjdCdzIChMRFApIHNpdGU6IAoraHR0cDovL3d3dy50bGRwLm9yZy9IT1dUTy9TQ1NJLUdlbmVyaWMtSE9XVE8KK1RoaXMgZGVzY3JpYmVzIHRoZSBzZyB2ZXJzaW9uIDMgZHJpdmVyIGZvdW5kIGluIHRoZSBsayAyLjQgc2VyaWVzLgorVGhlIExEUCByZW5kZXJzIGRvY3VtZW50cyBpbiBzaW5nbGUgYW5kIG11bHRpcGxlIHBhZ2UgSFRNTCwgcG9zdHNjcmlwdAorYW5kIHBkZi4gVGhpcyBkb2N1bWVudCBjYW4gYWxzbyBiZSBmb3VuZCBhdDoKK2h0dHA6Ly9zZy5kYW5ueS5jei9zZy9wL3NnX3YzX2hvLmh0bWwKKworRG9jdW1lbnRhdGlvbiBmb3IgdGhlIHZlcnNpb24gMiBzZyBkcml2ZXIgZm91bmQgaW4gdGhlIGxrIDIuMiBzZXJpZXMgY2FuCitiZSBmb3VuZCBhdCBodHRwOi8vc2cuZGFubnkuY3ovc2cvLiBBIGxhcmdlciB2ZXJzaW9uCitpcyBhdDogaHR0cDovL3NnLmRhbm55LmN6L3NnL3Avc2NzaS1nZW5lcmljX2xvbmcudHh0LgorCitUaGUgb3JpZ2luYWwgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHNnIGRyaXZlciAocHJpb3IgdG8gbGsgMi4yLjYpIGNhbiBiZQorZm91bmQgYXQgaHR0cDovL3d3dy50b3JxdWUubmV0L3NnL3Avb3JpZ2luYWwvU0NTSS1Qcm9ncmFtbWluZy1IT1dUTy50eHQKK2FuZCBpbiB0aGUgTERQIGFyY2hpdmVzLgorCitBIGNoYW5nZWxvZyB3aXRoIGJyaWVmIG5vdGVzIGNhbiBiZSBmb3VuZCBpbiB0aGUKKy91c3Ivc3JjL2xpbnV4L2luY2x1ZGUvc2NzaS9zZy5oIGZpbGUuIE5vdGUgdGhhdCB0aGUgZ2xpYmMgbWFpbnRhaW5lcnMgY29weSAKK2FuZCBlZGl0IHRoaXMgZmlsZSAocmVtb3ZpbmcgaXRzIGNoYW5nZWxvZyBmb3IgZXhhbXBsZSkgYmVmb3JlIHBsYWNpbmcgaXQgCitpbiAvdXNyL2luY2x1ZGUvc2NzaS9zZy5oIC4gRHJpdmVyIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBhbmQgb3RoZXIgbm90ZXMgCitjYW4gYmUgZm91bmQgYXQgdGhlIHRvcCBvZiB0aGUgL3Vzci9zcmMvbGludXgvZHJpdmVycy9zY3NpL3NnLmMgZmlsZS4KKworQSBtb3JlIGdlbmVyYWwgZGVzY3JpcHRpb24gb2YgdGhlIExpbnV4IFNDU0kgc3Vic3lzdGVtIG9mIHdoaWNoIHNnIGlzIGEgCitwYXJ0IGNhbiBiZSBmb3VuZCBhdCBodHRwOi8vd3d3LnRsZHAub3JnL0hPV1RPL1NDU0ktMi40LUhPV1RPIC4KKworCitFeGFtcGxlIGNvZGUgYW5kIHV0aWxpdGllcworPT09PT09PT09PT09PT09PT09PT09PT09PT0KK1RoZXJlIGFyZSB0d28gcGFja2FnZXMgb2Ygc2cgdXRpbGl0aWVzOgorICAtIHNnM191dGlscyAgIGZvciB0aGUgc2cgdmVyc2lvbiAzIGRyaXZlciBmb3VuZCBpbiBsayAyLjQKKyAgLSBzZ191dGlscyAgICBmb3IgdGhlIHNnIHZlcnNpb24gMiAoYW5kIG9yaWdpbmFsKSBkcml2ZXIgZm91bmQgaW4gbGsgMi4yCisgICAgICAgICAgICAgICAgYW5kIGVhcmxpZXIKK0JvdGggcGFja2FnZXMgd2lsbCB3b3JrIGluIHRoZSBsayAyLjQgc2VyaWVzIGhvd2V2ZXIgc2czX3V0aWxzIG9mZmVycyBtb3JlCitjYXBhYmlsaXRpZXMuIFRoZXkgY2FuIGJlIGZvdW5kIGF0OiBodHRwOi8vc2cuZGFubnkuY3ovc2cvc2czX3V0aWxzLmh0bWwgYW5kIAorZnJlZWNvZGUuY29tCisKK0Fub3RoZXIgYXBwcm9hY2ggaXMgdG8gbG9vayBhdCB0aGUgYXBwbGljYXRpb25zIHRoYXQgdXNlIHRoZSBzZyBkcml2ZXIuCitUaGVzZSBpbmNsdWRlIGNkcmVjb3JkLCBjZHBhcmFub2lhLCBTQU5FIGFuZCBjZHJkYW8uCisKKworTWFwcGluZyBvZiBMaW51eCBrZXJuZWwgdmVyc2lvbnMgdG8gc2cgZHJpdmVyIHZlcnNpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0hlcmUgaXMgYSBsaXN0IG9mIGxpbnV4IGtlcm5lbHMgaW4gdGhlIDIuNCBzZXJpZXMgdGhhdCBoYWQgbmV3IHZlcnNpb24KK29mIHRoZSBzZyBkcml2ZXI6CisgICAgICBsayAyLjQuMCA6IHNnIHZlcnNpb24gMy4xLjE3CisgICAgICBsayAyLjQuNyA6IHNnIHZlcnNpb24gMy4xLjE5IAorICAgICAgbGsgMi40LjEwIDogc2cgdmVyc2lvbiAzLjEuMjAgICoqCisgICAgICBsayAyLjQuMTcgOiBzZyB2ZXJzaW9uIDMuMS4yMiAKKworKiogVGhlcmUgd2VyZSAzIGNoYW5nZXMgdG8gc2cgdmVyc2lvbiAzLjEuMjAgYnkgdGhpcmQgcGFydGllcyBpbiB0aGUKKyAgIG5leHQgc2l4IGxpbnV4IGtlcm5lbCB2ZXJzaW9ucy4KKworRm9yIHJlZmVyZW5jZSBoZXJlIGlzIGEgbGlzdCBvZiBsaW51eCBrZXJuZWxzIGluIHRoZSAyLjIgc2VyaWVzIHRoYXQgaGFkIAorbmV3IHZlcnNpb24gb2YgdGhlIHNnIGRyaXZlcjoKKyAgICAgIGxrIDIuMi4wIDogb3JpZ2luYWwgc2cgdmVyc2lvbiBbd2l0aCBubyB2ZXJzaW9uIG51bWJlcl0KKyAgICAgIGxrIDIuMi42IDogc2cgdmVyc2lvbiAyLjEuMzEKKyAgICAgIGxrIDIuMi44IDogc2cgdmVyc2lvbiAyLjEuMzIKKyAgICAgIGxrIDIuMi4xMCA6IHNnIHZlcnNpb24gMi4xLjM0IFtTR19HRVRfVkVSU0lPTl9OVU0gaW9jdGwgZmlyc3QgYXBwZWFyZWRdCisgICAgICBsayAyLjIuMTQgOiBzZyB2ZXJzaW9uIDIuMS4zNgorICAgICAgbGsgMi4yLjE2IDogc2cgdmVyc2lvbiAyLjEuMzgKKyAgICAgIGxrIDIuMi4xNyA6IHNnIHZlcnNpb24gMi4xLjM5CisgICAgICBsayAyLjIuMjAgOiBzZyB2ZXJzaW9uIDIuMS40MAorCitUaGUgbGsgMi41IGRldmVsb3BtZW50IHNlcmllcyBoYXMgcmVjZW50bHkgY29tbWVuY2VkIGFuZCBpdCBjdXJyZW50bHkKK2NvbnRhaW5zIHNnIHZlcnNpb24gMy41LjIzIHdoaWNoIGlzIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIHNnCit2ZXJzaW9uIDMuMS4yMiBmb3VuZCBpbiBsayAyLjQuMTcgLgorCisKK0RvdWdsYXMgR2lsYmVydAorMjZ0aCBKYW51YXJ5IDIwMDIKK2RnaWxiZXJ0QGludGVybG9nLmNvbQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2ktcGFyYW1ldGVycy50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvc2NzaS1wYXJhbWV0ZXJzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmZkNmY2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2ktcGFyYW1ldGVycy50eHQKQEAgLTAsMCArMSwxMzMgQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgU0NTSSBLZXJuZWwgUGFyYW1ldGVycworICAgICAgICAgICAgICAgICAgICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1NlZSBEb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCBmb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbgorc3BlY2lmeWluZyBtb2R1bGUgcGFyYW1ldGVycy4KKworVGhpcyBkb2N1bWVudCBtYXkgbm90IGJlIGVudGlyZWx5IHVwIHRvIGRhdGUgYW5kIGNvbXByZWhlbnNpdmUuIFRoZSBjb21tYW5kCisibW9kaW5mbyAtcCAke21vZHVsZW5hbWV9IiBzaG93cyBhIGN1cnJlbnQgbGlzdCBvZiBhbGwgcGFyYW1ldGVycyBvZiBhIGxvYWRhYmxlCittb2R1bGUuIExvYWRhYmxlIG1vZHVsZXMsIGFmdGVyIGJlaW5nIGxvYWRlZCBpbnRvIHRoZSBydW5uaW5nIGtlcm5lbCwgYWxzbworcmV2ZWFsIHRoZWlyIHBhcmFtZXRlcnMgaW4gL3N5cy9tb2R1bGUvJHttb2R1bGVuYW1lfS9wYXJhbWV0ZXJzLy4gU29tZSBvZiB0aGVzZQorcGFyYW1ldGVycyBtYXkgYmUgY2hhbmdlZCBhdCBydW50aW1lIGJ5IHRoZSBjb21tYW5kCisiZWNobyAtbiAke3ZhbHVlfSA+IC9zeXMvbW9kdWxlLyR7bW9kdWxlbmFtZX0vcGFyYW1ldGVycy8ke3Bhcm19Ii4KKworCisJYWR2YW5zeXM9CVtIVyxTQ1NJXQorCQkJU2VlIGhlYWRlciBvZiBkcml2ZXJzL3Njc2kvYWR2YW5zeXMuYy4KKworCWFoYTE1Mng9CVtIVyxTQ1NJXQorCQkJU2VlIERvY3VtZW50YXRpb24vc2NzaS9haGExNTJ4LnR4dC4KKworCWFoYTE1NDI9CVtIVyxTQ1NJXQorCQkJRm9ybWF0OiA8cG9ydGJhc2U+Wyw8YnVzb24+LDxidXNvZmY+Wyw8ZG1hc3BlZWQ+XV0KKworCWFpYzd4eHg9CVtIVyxTQ1NJXQorCQkJU2VlIERvY3VtZW50YXRpb24vc2NzaS9haWM3eHh4LnR4dC4KKworCWFpYzc5eHg9CVtIVyxTQ1NJXQorCQkJU2VlIERvY3VtZW50YXRpb24vc2NzaS9haWM3OXh4LnR4dC4KKworCWF0YXNjc2k9CVtIVyxTQ1NJXSBBdGFyaSBTQ1NJCisKKwlCdXNMb2dpYz0JW0hXLFNDU0ldCisJCQlTZWUgZHJpdmVycy9zY3NpL0J1c0xvZ2ljLmMsIGNvbW1lbnQgYmVmb3JlIGZ1bmN0aW9uCisJCQlCdXNMb2dpY19QYXJzZURyaXZlck9wdGlvbnMoKS4KKworCWR0YzMxODFlPQlbSFcsU0NTSV0KKworCWVhdGE9CQlbSFcsU0NTSV0KKworCWZkb21haW49CVtIVyxTQ1NJXQorCQkJU2VlIGhlYWRlciBvZiBkcml2ZXJzL3Njc2kvZmRvbWFpbi5jLgorCisJZ2R0aD0JCVtIVyxTQ1NJXQorCQkJU2VlIGhlYWRlciBvZiBkcml2ZXJzL3Njc2kvZ2R0aC5jLgorCisJZ3ZwMTE9CQlbSFcsU0NTSV0KKworCWluMjAwMD0JCVtIVyxTQ1NJXQorCQkJU2VlIGhlYWRlciBvZiBkcml2ZXJzL3Njc2kvaW4yMDAwLmMuCisKKwlpcHM9CQlbSFcsU0NTSV0gQWRhcHRlYyAvIElCTSBTZXJ2ZVJBSUQgY29udHJvbGxlcgorCQkJU2VlIGhlYWRlciBvZiBkcml2ZXJzL3Njc2kvaXBzLmMuCisKKwltYWM1MzgwPQlbSFcsU0NTSV0gRm9ybWF0OgorCQkJPGNhbl9xdWV1ZT4sPGNtZF9wZXJfbHVuPiw8c2dfdGFibGVzaXplPiw8aG9zdGlkPiw8dXNlX3RhZ3M+CisKKwltYXhfbHVucz0JW1NDU0ldIE1heGltdW0gbnVtYmVyIG9mIExVTnMgdG8gcHJvYmUuCisJCQlTaG91bGQgYmUgYmV0d2VlbiAxIGFuZCAyXjMyLTEuCisKKwltYXhfcmVwb3J0X2x1bnM9CisJCQlbU0NTSV0gTWF4aW11bSBudW1iZXIgb2YgTFVOcyByZWNlaXZlZC4KKwkJCVNob3VsZCBiZSBiZXR3ZWVuIDEgYW5kIDE2Mzg0LgorCisJTkNSX0Q3MDA9CVtIVyxTQ1NJXQorCQkJU2VlIGhlYWRlciBvZiBkcml2ZXJzL3Njc2kvTkNSX0Q3MDAuYy4KKworCW5jcjUzODA9CVtIVyxTQ1NJXQorCisJbmNyNTNjNDAwPQlbSFcsU0NTSV0KKworCW5jcjUzYzQwMGE9CVtIVyxTQ1NJXQorCisJbmNyNTNjNDA2YT0JW0hXLFNDU0ldCisKKwluY3I1M2M4eHg9CVtIVyxTQ1NJXQorCisJbm9kaXNjb25uZWN0CVtIVyxTQ1NJLE02OEtdIERpc2FibGVzIFNDU0kgZGlzY29ubmVjdHMuCisKKwlvc3N0PQkJW0hXLFNDU0ldIFNDU0kgVGFwZSBEcml2ZXIKKwkJCUZvcm1hdDogPGJ1ZmZlcl9zaXplPiw8d3JpdGVfdGhyZXNob2xkPgorCQkJU2VlIGFsc28gRG9jdW1lbnRhdGlvbi9zY3NpL3N0LnR4dC4KKworCXBhczE2PQkJW0hXLFNDU0ldCisJCQlTZWUgaGVhZGVyIG9mIGRyaXZlcnMvc2NzaS9wYXMxNi5jLgorCisJc2NzaV9kZWJ1Z18qPQlbU0NTSV0KKwkJCVNlZSBkcml2ZXJzL3Njc2kvc2NzaV9kZWJ1Zy5jLgorCisJc2NzaV9kZWZhdWx0X2Rldl9mbGFncz0KKwkJCVtTQ1NJXSBTQ1NJIGRlZmF1bHQgZGV2aWNlIGZsYWdzCisJCQlGb3JtYXQ6IDxpbnRlZ2VyPgorCisJc2NzaV9kZXZfZmxhZ3M9CVtTQ1NJXSBCbGFjay93aGl0ZSBsaXN0IGVudHJ5IGZvciB2ZW5kb3IgYW5kIG1vZGVsCisJCQlGb3JtYXQ6IDx2ZW5kb3I+Ojxtb2RlbD46PGZsYWdzPgorCQkJKGZsYWdzIGFyZSBpbnRlZ2VyIHZhbHVlKQorCisJc2NzaV9sb2dnaW5nX2xldmVsPQlbU0NTSV0gYSBiaXQgbWFzayBvZiBsb2dnaW5nIGxldmVscworCQkJU2VlIGRyaXZlcnMvc2NzaS9zY3NpX2xvZ2dpbmcuaCBmb3IgYml0cy4gIEFsc28KKwkJCXNldHRhYmxlIHZpYSBzeXNjdGwgYXQgZGV2LnNjc2kubG9nZ2luZ19sZXZlbAorCQkJKC9wcm9jL3N5cy9kZXYvc2NzaS9sb2dnaW5nX2xldmVsKS4KKwkJCVRoZXJlIGlzIGFsc28gYSBuaWNlICdzY3NpX2xvZ2dpbmdfbGV2ZWwnIHNjcmlwdCBpbiB0aGUKKwkJCVMzOTAtdG9vbHMgcGFja2FnZSwgYXZhaWxhYmxlIGZvciBkb3dubG9hZCBhdAorCQkJaHR0cDovL3d3dy0xMjguaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy9saW51eC9saW51eDM5MC9zMzkwLXRvb2xzLTEuNS40Lmh0bWwKKworCXNjc2lfbW9kLnNjYW49CVtTQ1NJXSBzeW5jIChkZWZhdWx0KSBzY2FucyBTQ1NJIGJ1c3NlcyBhcyB0aGV5IGFyZQorCQkJZGlzY292ZXJlZC4gIGFzeW5jIHNjYW5zIHRoZW0gaW4ga2VybmVsIHRocmVhZHMsCisJCQlhbGxvd2luZyBib290IHRvIHByb2NlZWQuICBub25lIGlnbm9yZXMgdGhlbSwgZXhwZWN0aW5nCisJCQl1c2VyIHNwYWNlIHRvIGRvIHRoZSBzY2FuLgorCisJc2ltNzEwPQkJW1NDU0ksSFddCisJCQlTZWUgaGVhZGVyIG9mIGRyaXZlcnMvc2NzaS9zaW03MTAuYy4KKworCXN0PQkJW0hXLFNDU0ldIFNDU0kgdGFwZSBwYXJhbWV0ZXJzIChidWZmZXJzLCBldGMuKQorCQkJU2VlIERvY3VtZW50YXRpb24vc2NzaS9zdC50eHQuCisKKwlzeW01M2M0MTY9CVtIVyxTQ1NJXQorCQkJU2VlIGhlYWRlciBvZiBkcml2ZXJzL3Njc2kvc3ltNTNjNDE2LmMuCisKKwl0MTI4PQkJW0hXLFNDU0ldCisJCQlTZWUgaGVhZGVyIG9mIGRyaXZlcnMvc2NzaS90MTI4LmMuCisKKwl0bXNjc2ltPQlbSFcsU0NTSV0KKwkJCVNlZSBjb21tZW50IGJlZm9yZSBmdW5jdGlvbiBkYzM5MF9zZXR1cCgpIGluCisJCQlkcml2ZXJzL3Njc2kvdG1zY3NpbS5jLgorCisJdTE0LTM0Zj0JW0hXLFNDU0ldIFVsdHJhU3RvciAxNEYvMzRGIFNDU0kgaG9zdCBhZGFwdGVyCisJCQlTZWUgaGVhZGVyIG9mIGRyaXZlcnMvc2NzaS91MTQtMzRmLmMuCisKKwl3ZDMzYzkzPQlbSFcsU0NTSV0KKwkJCVNlZSBoZWFkZXIgb2YgZHJpdmVycy9zY3NpL3dkMzNjOTMuYy4KKworCXdkNzAwMD0JCVtIVyxTQ1NJXQorCQkJU2VlIGhlYWRlciBvZiBkcml2ZXJzL3Njc2kvd2Q3MDAwLmMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvc2NzaS50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvc2NzaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q5OWQzOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2NzaS9zY3NpLnR4dApAQCAtMCwwICsxLDQ0IEBACitTQ1NJIHN1YnN5c3RlbSBkb2N1bWVudGF0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CitUaGUgTGludXggRG9jdW1lbnRhdGlvbiBQcm9qZWN0IChMRFApIG1haW50YWlucyBhIGRvY3VtZW50IGRlc2NyaWJpbmcKK3RoZSBTQ1NJIHN1YnN5c3RlbSBpbiB0aGUgTGludXgga2VybmVsIChsaykgMi40IHNlcmllcy4gU2VlOgoraHR0cDovL3d3dy50bGRwLm9yZy9IT1dUTy9TQ1NJLTIuNC1IT1dUTyAuIFRoZSBMRFAgaGFzIHNpbmdsZQorYW5kIG11bHRpcGxlIHBhZ2UgSFRNTCByZW5kZXJpbmdzIGFzIHdlbGwgYXMgcG9zdHNjcmlwdCBhbmQgcGRmLgorSXQgY2FuIGFsc28gYmUgZm91bmQgYXQ6CitodHRwOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8qL2h0dHA6Ly93d3cudG9ycXVlLm5ldC9zY3NpL1NDU0ktMi40LUhPV1RPCisKK05vdGVzIG9uIHVzaW5nIG1vZHVsZXMgaW4gdGhlIFNDU0kgc3Vic3lzdGVtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorVGhlIHNjc2kgc3VwcG9ydCBpbiB0aGUgbGludXgga2VybmVsIGNhbiBiZSBtb2R1bGFyaXplZCBpbiBhIG51bWJlciBvZiAKK2RpZmZlcmVudCB3YXlzIGRlcGVuZGluZyB1cG9uIHRoZSBuZWVkcyBvZiB0aGUgZW5kIHVzZXIuICBUbyB1bmRlcnN0YW5kCit5b3VyIG9wdGlvbnMsIHdlIHNob3VsZCBmaXJzdCBkZWZpbmUgYSBmZXcgdGVybXMuCisKK1RoZSBzY3NpLWNvcmUgKGFsc28ga25vd24gYXMgdGhlICJtaWQgbGV2ZWwiKSBjb250YWlucyB0aGUgY29yZSBvZiBzY3NpIAorc3VwcG9ydC4gIFdpdGhvdXQgaXQgeW91IGNhbiBkbyBub3RoaW5nIHdpdGggYW55IG9mIHRoZSBvdGhlciBzY3NpIGRyaXZlcnMuCitUaGUgc2NzaSBjb3JlIHN1cHBvcnQgY2FuIGJlIGEgbW9kdWxlIChzY3NpX21vZC5vKSwgb3IgaXQgY2FuIGJlIGJ1aWx0IGludG8KK3RoZSBrZXJuZWwuIElmIHRoZSBjb3JlIGlzIGEgbW9kdWxlLCBpdCBtdXN0IGJlIHRoZSBmaXJzdCBzY3NpIG1vZHVsZSAKK2xvYWRlZCwgYW5kIGlmIHlvdSB1bmxvYWQgdGhlIG1vZHVsZXMsIGl0IHdpbGwgaGF2ZSB0byBiZSB0aGUgbGFzdCBvbmUgCit1bmxvYWRlZC4gIEluIHByYWN0aWNlIHRoZSBtb2Rwcm9iZSBhbmQgcm1tb2QgY29tbWFuZHMgKGFuZCAiYXV0b2NsZWFuIikKK3dpbGwgZW5mb3JjZSB0aGUgY29ycmVjdCBvcmRlcmluZyBvZiBsb2FkaW5nIGFuZCB1bmxvYWRpbmcgbW9kdWxlcyBpbgordGhlIFNDU0kgc3Vic3lzdGVtLgorCitUaGUgaW5kaXZpZHVhbCB1cHBlciBhbmQgbG93ZXIgbGV2ZWwgZHJpdmVycyBjYW4gYmUgbG9hZGVkIGluIGFueSBvcmRlciAKK29uY2UgdGhlIHNjc2kgY29yZSBpcyBwcmVzZW50IGluIHRoZSBrZXJuZWwgKGVpdGhlciBjb21waWxlZCBpbiBvciBsb2FkZWQKK2FzIGEgbW9kdWxlKS4gIFRoZSBkaXNrIGRyaXZlciAoc2RfbW9kLm8pLCBjZHJvbSBkcml2ZXIgKHNyX21vZC5vKSwKK3RhcGUgZHJpdmVyICoqIChzdC5vKSBhbmQgc2NzaSBnZW5lcmljcyBkcml2ZXIgKHNnLm8pIHJlcHJlc2VudCB0aGUgdXBwZXIgCitsZXZlbCBkcml2ZXJzIHRvIHN1cHBvcnQgdGhlIHZhcmlvdXMgYXNzb3J0ZWQgZGV2aWNlcyB3aGljaCBjYW4gYmUgCitjb250cm9sbGVkLiAgWW91IGNhbiBmb3IgZXhhbXBsZSBsb2FkIHRoZSB0YXBlIGRyaXZlciB0byB1c2UgdGhlIHRhcGUgZHJpdmUsIAorYW5kIHRoZW4gdW5sb2FkIGl0IG9uY2UgeW91IGhhdmUgbm8gZnVydGhlciBuZWVkIGZvciB0aGUgZHJpdmVyIChhbmQgcmVsZWFzZQordGhlIGFzc29jaWF0ZWQgbWVtb3J5KS4KKworVGhlIGxvd2VyIGxldmVsIGRyaXZlcnMgYXJlIHRoZSBvbmVzIHRoYXQgc3VwcG9ydCB0aGUgaW5kaXZpZHVhbCBjYXJkcyB0aGF0CithcmUgc3VwcG9ydGVkIGZvciB0aGUgaGFyZHdhcmUgcGxhdGZvcm0gdGhhdCB5b3UgYXJlIHJ1bm5pbmcgdW5kZXIuIFRob3NlCitpbmRpdmlkdWFsIGNhcmRzIGFyZSBvZnRlbiBjYWxsZWQgSG9zdCBCdXMgQWRhcHRlcnMgKEhCQXMpLiBGb3IgZXhhbXBsZSB0aGUKK2FpYzd4eHgubyBkcml2ZXIgaXMgdXNlZCB0byBjb250cm9sIGFsbCByZWNlbnQgU0NTSSBjb250cm9sbGVyIGNhcmRzIGZyb20gCitBZGFwdGVjLiBBbG1vc3QgYWxsIGxvd2VyIGxldmVsIGRyaXZlcnMgY2FuIGJlIGJ1aWx0IGVpdGhlciBhcyBtb2R1bGVzIG9yIAorYnVpbHQgaW50byB0aGUga2VybmVsLgorCisKKyoqIFRoZXJlIGlzIGEgdmFyaWFudCBvZiB0aGUgc3QgZHJpdmVyIGZvciBjb250cm9sbGluZyBPblN0cmVhbSB0YXBlCisgICBkZXZpY2VzLiBJdHMgbW9kdWxlIG5hbWUgaXMgb3NzdC5vIC4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2lfZWgudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2lfZWgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3ZWNhMDAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvc2NzaV9laC50eHQKQEAgLTAsMCArMSw0OTIgQEAKKworU0NTSSBFSAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIFRoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIFNDU0kgbWlkbGF5ZXIgZXJyb3IgaGFuZGxpbmcgaW5mcmFzdHJ1Y3R1cmUuCitQbGVhc2UgcmVmZXIgdG8gRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2lfbWlkX2xvd19hcGkudHh0IGZvciBtb3JlCitpbmZvcm1hdGlvbiByZWdhcmRpbmcgU0NTSSBtaWRsYXllci4KKworVEFCTEUgT0YgQ09OVEVOVFMKKworWzFdIEhvdyBTQ1NJIGNvbW1hbmRzIHRyYXZlbCB0aHJvdWdoIHRoZSBtaWRsYXllciBhbmQgdG8gRUgKKyAgICBbMS0xXSBzdHJ1Y3Qgc2NzaV9jbW5kCisgICAgWzEtMl0gSG93IGRvIHNjbWQncyBnZXQgY29tcGxldGVkPworCVsxLTItMV0gQ29tcGxldGluZyBhIHNjbWQgdy8gc2NzaV9kb25lCisJWzEtMi0yXSBDb21wbGV0aW5nIGEgc2NtZCB3LyB0aW1lb3V0CisgICAgWzEtM10gSG93IEVIIHRha2VzIG92ZXIKK1syXSBIb3cgU0NTSSBFSCB3b3JrcworICAgIFsyLTFdIEVIIHRocm91Z2ggZmluZS1ncmFpbmVkIGNhbGxiYWNrcworCVsyLTEtMV0gT3ZlcnZpZXcKKwlbMi0xLTJdIEZsb3cgb2Ygc2NtZHMgdGhyb3VnaCBFSAorCVsyLTEtM10gRmxvdyBvZiBjb250cm9sCisgICAgWzItMl0gRUggdGhyb3VnaCB0cmFuc3BvcnR0LT5laF9zdHJhdGVneV9oYW5kbGVyKCkKKwlbMi0yLTFdIFByZSB0cmFuc3BvcnR0LT5laF9zdHJhdGVneV9oYW5kbGVyKCkgU0NTSSBtaWRsYXllciBjb25kaXRpb25zCisJWzItMi0yXSBQb3N0IHRyYW5zcG9ydHQtPmVoX3N0cmF0ZWd5X2hhbmRsZXIoKSBTQ1NJIG1pZGxheWVyIGNvbmRpdGlvbnMKKwlbMi0yLTNdIFRoaW5ncyB0byBjb25zaWRlcgorCisKK1sxXSBIb3cgU0NTSSBjb21tYW5kcyB0cmF2ZWwgdGhyb3VnaCB0aGUgbWlkbGF5ZXIgYW5kIHRvIEVICisKK1sxLTFdIHN0cnVjdCBzY3NpX2NtbmQKKworIEVhY2ggU0NTSSBjb21tYW5kIGlzIHJlcHJlc2VudGVkIHdpdGggc3RydWN0IHNjc2lfY21uZCAoPT0gc2NtZCkuICBBCitzY21kIGhhcyB0d28gbGlzdF9oZWFkJ3MgdG8gbGluayBpdHNlbGYgaW50byBsaXN0cy4gIFRoZSB0d28gYXJlCitzY21kLT5saXN0IGFuZCBzY21kLT5laF9lbnRyeS4gIFRoZSBmb3JtZXIgaXMgdXNlZCBmb3IgZnJlZSBsaXN0IG9yCitwZXItZGV2aWNlIGFsbG9jYXRlZCBzY21kIGxpc3QgYW5kIG5vdCBvZiBtdWNoIGludGVyZXN0IHRvIHRoaXMgRUgKK2Rpc2N1c3Npb24uICBUaGUgbGF0dGVyIGlzIHVzZWQgZm9yIGNvbXBsZXRpb24gYW5kIEVIIGxpc3RzIGFuZCB1bmxlc3MKK290aGVyd2lzZSBzdGF0ZWQgc2NtZHMgYXJlIGFsd2F5cyBsaW5rZWQgdXNpbmcgc2NtZC0+ZWhfZW50cnkgaW4gdGhpcworZGlzY3Vzc2lvbi4KKworCitbMS0yXSBIb3cgZG8gc2NtZCdzIGdldCBjb21wbGV0ZWQ/CisKKyBPbmNlIExMREQgZ2V0cyBob2xkIG9mIGEgc2NtZCwgZWl0aGVyIHRoZSBMTEREIHdpbGwgY29tcGxldGUgdGhlCitjb21tYW5kIGJ5IGNhbGxpbmcgc2NzaV9kb25lIGNhbGxiYWNrIHBhc3NlZCBmcm9tIG1pZGxheWVyIHdoZW4KK2ludm9raW5nIGhvc3R0LT5xdWV1ZWNvbW1hbmQoKSBvciB0aGUgYmxvY2sgbGF5ZXIgd2lsbCB0aW1lIGl0IG91dC4KKworCitbMS0yLTFdIENvbXBsZXRpbmcgYSBzY21kIHcvIHNjc2lfZG9uZQorCisgRm9yIGFsbCBub24tRUggY29tbWFuZHMsIHNjc2lfZG9uZSgpIGlzIHRoZSBjb21wbGV0aW9uIGNhbGxiYWNrLiAgSXQKK2p1c3QgY2FsbHMgYmxrX2NvbXBsZXRlX3JlcXVlc3QoKSB0byBkZWxldGUgdGhlIGJsb2NrIGxheWVyIHRpbWVyIGFuZAorcmFpc2UgU0NTSV9TT0ZUSVJRCisKKyBTQ1NJX1NPRlRJUlEgaGFuZGxlciBzY3NpX3NvZnRpcnEgY2FsbHMgc2NzaV9kZWNpZGVfZGlzcG9zaXRpb24oKSB0bworZGV0ZXJtaW5lIHdoYXQgdG8gZG8gd2l0aCB0aGUgY29tbWFuZC4gIHNjc2lfZGVjaWRlX2Rpc3Bvc2l0aW9uKCkKK2xvb2tzIGF0IHRoZSBzY21kLT5yZXN1bHQgdmFsdWUgYW5kIHNlbnNlIGRhdGEgdG8gZGV0ZXJtaW5lIHdoYXQgdG8gZG8KK3dpdGggdGhlIGNvbW1hbmQuCisKKyAtIFNVQ0NFU1MKKwlzY3NpX2ZpbmlzaF9jb21tYW5kKCkgaXMgaW52b2tlZCBmb3IgdGhlIGNvbW1hbmQuICBUaGUKKwlmdW5jdGlvbiBkb2VzIHNvbWUgbWFpbnRlbmFuY2UgY2hvcmVzIGFuZCB0aGVuIGNhbGxzCisJc2NzaV9pb19jb21wbGV0aW9uKCkgdG8gZmluaXNoIHRoZSBJL08uCisJc2NzaV9pb19jb21wbGV0aW9uKCkgdGhlbiBub3RpZmllcyB0aGUgYmxvY2sgbGF5ZXIgb24KKwl0aGUgY29tcGxldGVkIHJlcXVlc3QgYnkgY2FsbGluZyBibGtfZW5kX3JlcXVlc3QgYW5kCisJZnJpZW5kcyBvciBmaWd1cmVzIG91dCB3aGF0IHRvIGRvIHdpdGggdGhlIHJlbWFpbmRlcgorCW9mIHRoZSBkYXRhIGluIGNhc2Ugb2YgYW4gZXJyb3IuCisKKyAtIE5FRURTX1JFVFJZCisgLSBBRERfVE9fTUxRVUVVRQorCXNjbWQgaXMgcmVxdWV1ZWQgdG8gYmxrIHF1ZXVlLgorCisgLSBvdGhlcndpc2UKKwlzY3NpX2VoX3NjbWRfYWRkKHNjbWQsIDApIGlzIGludm9rZWQgZm9yIHRoZSBjb21tYW5kLiAgU2VlCisJWzEtM10gZm9yIGRldGFpbHMgb2YgdGhpcyBmdW5jdGlvbi4KKworCitbMS0yLTJdIENvbXBsZXRpbmcgYSBzY21kIHcvIHRpbWVvdXQKKworIFRoZSB0aW1lb3V0IGhhbmRsZXIgaXMgc2NzaV90aW1lc19vdXQoKS4gIFdoZW4gYSB0aW1lb3V0IG9jY3VycywgdGhpcworZnVuY3Rpb24KKworIDEuIGludm9rZXMgb3B0aW9uYWwgaG9zdHQtPmVoX3RpbWVkX291dCgpIGNhbGxiYWNrLiAgUmV0dXJuIHZhbHVlIGNhbgorICAgIGJlIG9uZSBvZgorCisgICAgLSBCTEtfRUhfSEFORExFRAorCVRoaXMgaW5kaWNhdGVzIHRoYXQgZWhfdGltZWRfb3V0KCkgZGVhbHQgd2l0aCB0aGUgdGltZW91dC4KKwlUaGUgY29tbWFuZCBpcyBwYXNzZWQgYmFjayB0byB0aGUgYmxvY2sgbGF5ZXIgYW5kIGNvbXBsZXRlZAorCXZpYSBfX2Jsa19jb21wbGV0ZV9yZXF1ZXN0cygpLgorCisJKk5PVEUqIEFmdGVyIHJldHVybmluZyBCTEtfRUhfSEFORExFRCB0aGUgU0NTSSBsYXllciBpcworCWFzc3VtZWQgdG8gYmUgZmluaXNoZWQgd2l0aCB0aGUgY29tbWFuZCwgYW5kIG5vIG90aGVyCisJZnVuY3Rpb25zIGZyb20gdGhlIFNDU0kgbGF5ZXIgd2lsbCBiZSBjYWxsZWQuIFNvIHRoaXMKKwlzaG91bGQgdHlwaWNhbGx5IG9ubHkgYmUgcmV0dXJuZWQgaWYgdGhlIGVoX3RpbWVkX291dCgpCisJaGFuZGxlciByYWNlZCB3aXRoIG5vcm1hbCBjb21wbGV0aW9uLgorCisgICAgLSBCTEtfRUhfUkVTRVRfVElNRVIKKwlUaGlzIGluZGljYXRlcyB0aGF0IG1vcmUgdGltZSBpcyByZXF1aXJlZCB0byBmaW5pc2ggdGhlCisJY29tbWFuZC4gIFRpbWVyIGlzIHJlc3RhcnRlZC4gIFRoaXMgYWN0aW9uIGlzIGNvdW50ZWQgYXMgYQorCXJldHJ5IGFuZCBvbmx5IGFsbG93ZWQgc2NtZC0+YWxsb3dlZCArIDEoISkgdGltZXMuICBPbmNlIHRoZQorCWxpbWl0IGlzIHJlYWNoZWQsIGFjdGlvbiBmb3IgQkxLX0VIX05PVF9IQU5ETEVEIGlzIHRha2VuIGluc3RlYWQuCisKKyAgICAtIEJMS19FSF9OT1RfSEFORExFRAorICAgICAgICBlaF90aW1lZF9vdXQoKSBjYWxsYmFjayBkaWQgbm90IGhhbmRsZSB0aGUgY29tbWFuZC4KKwlTdGVwICMyIGlzIHRha2VuLgorCisgMi4gSWYgdGhlIGhvc3Qgc3VwcG9ydHMgYXN5bmNocm9ub3VzIGNvbXBsZXRpb24gKGFzIGluZGljYXRlZCBieSB0aGUKKyAgICBub19hc3luY19hYm9ydCBzZXR0aW5nIGluIHRoZSBob3N0IHRlbXBsYXRlKSBzY3NpX2Fib3J0X2NvbW1hbmQoKQorICAgIGlzIGludm9rZWQgdG8gc2NoZWR1bGUgYW4gYXN5bmNocm91cyBhYm9ydC4gSWYgdGhhdCBmYWlscworICAgIFN0ZXAgIzMgaXMgdGFrZW4uCisKKyAyLiBzY3NpX2VoX3NjbWRfYWRkKHNjbWQsIFNDU0lfRUhfQ0FOQ0VMX0NNRCkgaXMgaW52b2tlZCBmb3IgdGhlCisgICAgY29tbWFuZC4gIFNlZSBbMS0zXSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworWzEtM10gQXN5bmNocm9ub3VzIGNvbW1hbmQgYWJvcnRzCisKKyBBZnRlciBhIHRpbWVvdXQgb2NjdXJzIGEgY29tbWFuZCBhYm9ydCBpcyBzY2hlZHVsZWQgZnJvbQorIHNjc2lfYWJvcnRfY29tbWFuZCgpLiBJZiB0aGUgYWJvcnQgaXMgc3VjY2Vzc2Z1bCB0aGUgY29tbWFuZAorIHdpbGwgZWl0aGVyIGJlIHJldHJpZWQgKGlmIHRoZSBudW1iZXIgb2YgcmV0cmllcyBpcyBub3QgZXhoYXVzdGVkKQorIG9yIHRlcm1pbmF0ZWQgd2l0aCBESURfVElNRV9PVVQuCisgT3RoZXJ3aXNlIHNjc2lfZWhfc2NtZF9hZGQoKSBpcyBpbnZva2VkIGZvciB0aGUgY29tbWFuZC4KKyBTZWUgWzEtNF0gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKK1sxLTRdIEhvdyBFSCB0YWtlcyBvdmVyCisKKyBzY21kcyBlbnRlciBFSCB2aWEgc2NzaV9laF9zY21kX2FkZCgpLCB3aGljaCBkb2VzIHRoZSBmb2xsb3dpbmcuCisKKyAxLiBUdXJucyBvbiBzY21kLT5laF9lZmxhZ3MgYXMgcmVxdWVzdGVkLiAgSXQncyAwIGZvciBlcnJvcgorICAgIGNvbXBsZXRpb25zIGFuZCBTQ1NJX0VIX0NBTkNFTF9DTUQgZm9yIHRpbWVvdXRzLgorCisgMi4gTGlua3Mgc2NtZC0+ZWhfZW50cnkgdG8gc2hvc3QtPmVoX2NtZF9xCisKKyAzLiBTZXRzIFNIT1NUX1JFQ09WRVJZIGJpdCBpbiBzaG9zdC0+c2hvc3Rfc3RhdGUKKworIDQuIEluY3JlbWVudHMgc2hvc3QtPmhvc3RfZmFpbGVkCisKKyA1LiBXYWtlcyB1cCBTQ1NJIEVIIHRocmVhZCBpZiBzaG9zdC0+aG9zdF9idXN5ID09IHNob3N0LT5ob3N0X2ZhaWxlZAorCisgQXMgY2FuIGJlIHNlZW4gYWJvdmUsIG9uY2UgYW55IHNjbWQgaXMgYWRkZWQgdG8gc2hvc3QtPmVoX2NtZF9xLAorU0hPU1RfUkVDT1ZFUlkgc2hvc3Rfc3RhdGUgYml0IGlzIHR1cm5lZCBvbi4gIFRoaXMgcHJldmVudHMgYW55IG5ldworc2NtZCB0byBiZSBpc3N1ZWQgZnJvbSBibGsgcXVldWUgdG8gdGhlIGhvc3Q7IGV2ZW50dWFsbHksIGFsbCBzY21kcyBvbgordGhlIGhvc3QgZWl0aGVyIGNvbXBsZXRlIG5vcm1hbGx5LCBmYWlsIGFuZCBnZXQgYWRkZWQgdG8gZWhfY21kX3EsIG9yCit0aW1lIG91dCBhbmQgZ2V0IGFkZGVkIHRvIHNob3N0LT5laF9jbWRfcS4KKworIElmIGFsbCBzY21kcyBlaXRoZXIgY29tcGxldGUgb3IgZmFpbCwgdGhlIG51bWJlciBvZiBpbi1mbGlnaHQgc2NtZHMKK2JlY29tZXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBmYWlsZWQgc2NtZHMgLSBpLmUuIHNob3N0LT5ob3N0X2J1c3kgPT0KK3Nob3N0LT5ob3N0X2ZhaWxlZC4gIFRoaXMgd2FrZXMgdXAgU0NTSSBFSCB0aHJlYWQuICBTbywgb25jZSB3b2tlbiB1cCwKK1NDU0kgRUggdGhyZWFkIGNhbiBleHBlY3QgdGhhdCBhbGwgaW4tZmxpZ2h0IGNvbW1hbmRzIGhhdmUgZmFpbGVkIGFuZAorYXJlIGxpbmtlZCBvbiBzaG9zdC0+ZWhfY21kX3EuCisKKyBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBtZWFuIGxvd2VyIGxheWVycyBhcmUgcXVpZXNjZW50LiAgSWYgYSBMTERECitjb21wbGV0ZWQgYSBzY21kIHdpdGggZXJyb3Igc3RhdHVzLCB0aGUgTExERCBhbmQgbG93ZXIgbGF5ZXJzIGFyZQorYXNzdW1lZCB0byBmb3JnZXQgYWJvdXQgdGhlIHNjbWQgYXQgdGhhdCBwb2ludC4gIEhvd2V2ZXIsIGlmIGEgc2NtZAoraGFzIHRpbWVkIG91dCwgdW5sZXNzIGhvc3R0LT5laF90aW1lZF9vdXQoKSBtYWRlIGxvd2VyIGxheWVycyBmb3JnZXQKK2Fib3V0IHRoZSBzY21kLCB3aGljaCBjdXJyZW50bHkgbm8gTExERCBkb2VzLCB0aGUgY29tbWFuZCBpcyBzdGlsbAorYWN0aXZlIGFzIGxvbmcgYXMgbG93ZXIgbGF5ZXJzIGFyZSBjb25jZXJuZWQgYW5kIGNvbXBsZXRpb24gY291bGQKK29jY3VyIGF0IGFueSB0aW1lLiAgT2YgY291cnNlLCBhbGwgc3VjaCBjb21wbGV0aW9ucyBhcmUgaWdub3JlZCBhcyB0aGUKK3RpbWVyIGhhcyBhbHJlYWR5IGV4cGlyZWQuCisKKyBXZSdsbCB0YWxrIGFib3V0IGhvdyBTQ1NJIEVIIHRha2VzIGFjdGlvbnMgdG8gYWJvcnQgLSBtYWtlIExMREQKK2ZvcmdldCBhYm91dCAtIHRpbWVkIG91dCBzY21kcyBsYXRlci4KKworCitbMl0gSG93IFNDU0kgRUggd29ya3MKKworIExMREQncyBjYW4gaW1wbGVtZW50IFNDU0kgRUggYWN0aW9ucyBpbiBvbmUgb2YgdGhlIGZvbGxvd2luZyB0d28KK3dheXMuCisKKyAtIEZpbmUtZ3JhaW5lZCBFSCBjYWxsYmFja3MKKwlMTEREIGNhbiBpbXBsZW1lbnQgZmluZS1ncmFpbmVkIEVIIGNhbGxiYWNrcyBhbmQgbGV0IFNDU0kKKwltaWRsYXllciBkcml2ZSBlcnJvciBoYW5kbGluZyBhbmQgY2FsbCBhcHByb3ByaWF0ZSBjYWxsYmFja3MuCisJVGhpcyB3aWxsIGJlIGRpc2N1c3NlZCBmdXJ0aGVyIGluIFsyLTFdLgorCisgLSBlaF9zdHJhdGVneV9oYW5kbGVyKCkgY2FsbGJhY2sKKwlUaGlzIGlzIG9uZSBiaWcgY2FsbGJhY2sgd2hpY2ggc2hvdWxkIHBlcmZvcm0gd2hvbGUgZXJyb3IKKwloYW5kbGluZy4gIEFzIHN1Y2gsIGl0IHNob3VsZCBkbyBhbGwgY2hvcmVzIHRoZSBTQ1NJIG1pZGxheWVyCisJcGVyZm9ybXMgZHVyaW5nIHJlY292ZXJ5LiAgVGhpcyB3aWxsIGJlIGRpc2N1c3NlZCBpbiBbMi0yXS4KKworIE9uY2UgcmVjb3ZlcnkgaXMgY29tcGxldGUsIFNDU0kgRUggcmVzdW1lcyBub3JtYWwgb3BlcmF0aW9uIGJ5CitjYWxsaW5nIHNjc2lfcmVzdGFydF9vcGVyYXRpb25zKCksIHdoaWNoCisKKyAxLiBDaGVja3MgaWYgZG9vciBsb2NraW5nIGlzIG5lZWRlZCBhbmQgbG9ja3MgZG9vci4KKworIDIuIENsZWFycyBTSE9TVF9SRUNPVkVSWSBzaG9zdF9zdGF0ZSBiaXQKKworIDMuIFdha2VzIHVwIHdhaXRlcnMgb24gc2hvc3QtPmhvc3Rfd2FpdC4gIFRoaXMgb2NjdXJzIGlmIHNvbWVvbmUKKyAgICBjYWxscyBzY3NpX2Jsb2NrX3doZW5fcHJvY2Vzc2luZ19lcnJvcnMoKSBvbiB0aGUgaG9zdC4KKyAgICAoKlFVRVNUSU9OKiB3aHkgaXMgaXQgbmVlZGVkPyAgQWxsIG9wZXJhdGlvbnMgd2lsbCBiZSBibG9ja2VkCisgICAgYW55d2F5IGFmdGVyIGl0IHJlYWNoZXMgYmxrIHF1ZXVlLikKKworIDQuIEtpY2tzIHF1ZXVlcyBpbiBhbGwgZGV2aWNlcyBvbiB0aGUgaG9zdCBpbiB0aGUgYXNzZXMKKworCitbMi0xXSBFSCB0aHJvdWdoIGZpbmUtZ3JhaW5lZCBjYWxsYmFja3MKKworWzItMS0xXSBPdmVydmlldworCisgSWYgZWhfc3RyYXRlZ3lfaGFuZGxlcigpIGlzIG5vdCBwcmVzZW50LCBTQ1NJIG1pZGxheWVyIHRha2VzIGNoYXJnZQorb2YgZHJpdmluZyBlcnJvciBoYW5kbGluZy4gIEVIJ3MgZ29hbHMgYXJlIHR3byAtIG1ha2UgTExERCwgaG9zdCBhbmQKK2RldmljZSBmb3JnZXQgYWJvdXQgdGltZWQgb3V0IHNjbWRzIGFuZCBtYWtlIHRoZW0gcmVhZHkgZm9yIG5ldworY29tbWFuZHMuICBBIHNjbWQgaXMgc2FpZCB0byBiZSByZWNvdmVyZWQgaWYgdGhlIHNjbWQgaXMgZm9yZ290dGVuIGJ5Citsb3dlciBsYXllcnMgYW5kIGxvd2VyIGxheWVycyBhcmUgcmVhZHkgdG8gcHJvY2VzcyBvciBmYWlsIHRoZSBzY21kCithZ2Fpbi4KKworIFRvIGFjaGlldmUgdGhlc2UgZ29hbHMsIEVIIHBlcmZvcm1zIHJlY292ZXJ5IGFjdGlvbnMgd2l0aCBpbmNyZWFzaW5nCitzZXZlcml0eS4gIFNvbWUgYWN0aW9ucyBhcmUgcGVyZm9ybWVkIGJ5IGlzc3VpbmcgU0NTSSBjb21tYW5kcyBhbmQKK290aGVycyBhcmUgcGVyZm9ybWVkIGJ5IGludm9raW5nIG9uZSBvZiB0aGUgZm9sbG93aW5nIGZpbmUtZ3JhaW5lZAoraG9zdHQgRUggY2FsbGJhY2tzLiAgQ2FsbGJhY2tzIG1heSBiZSBvbWl0dGVkIGFuZCBvbWl0dGVkIG9uZXMgYXJlCitjb25zaWRlcmVkIHRvIGZhaWwgYWx3YXlzLgorCitpbnQgKCogZWhfYWJvcnRfaGFuZGxlcikoc3RydWN0IHNjc2lfY21uZCAqKTsKK2ludCAoKiBlaF9kZXZpY2VfcmVzZXRfaGFuZGxlcikoc3RydWN0IHNjc2lfY21uZCAqKTsKK2ludCAoKiBlaF9idXNfcmVzZXRfaGFuZGxlcikoc3RydWN0IHNjc2lfY21uZCAqKTsKK2ludCAoKiBlaF9ob3N0X3Jlc2V0X2hhbmRsZXIpKHN0cnVjdCBzY3NpX2NtbmQgKik7CisKKyBIaWdoZXItc2V2ZXJpdHkgYWN0aW9ucyBhcmUgdGFrZW4gb25seSB3aGVuIGxvd2VyLXNldmVyaXR5IGFjdGlvbnMKK2Nhbm5vdCByZWNvdmVyIHNvbWUgb2YgZmFpbGVkIHNjbWRzLiAgQWxzbywgbm90ZSB0aGF0IGZhaWx1cmUgb2YgdGhlCitoaWdoZXN0LXNldmVyaXR5IGFjdGlvbiBtZWFucyBFSCBmYWlsdXJlIGFuZCByZXN1bHRzIGluIG9mZmxpbmluZyBvZgorYWxsIHVucmVjb3ZlcmVkIGRldmljZXMuCisKKyBEdXJpbmcgcmVjb3ZlcnksIHRoZSBmb2xsb3dpbmcgcnVsZXMgYXJlIGZvbGxvd2VkCisKKyAtIFJlY292ZXJ5IGFjdGlvbnMgYXJlIHBlcmZvcm1lZCBvbiBmYWlsZWQgc2NtZHMgb24gdGhlIHRvIGRvIGxpc3QsCisgICBlaF93b3JrX3EuICBJZiBhIHJlY292ZXJ5IGFjdGlvbiBzdWNjZWVkcyBmb3IgYSBzY21kLCByZWNvdmVyZWQKKyAgIHNjbWRzIGFyZSByZW1vdmVkIGZyb20gZWhfd29ya19xLgorCisgICBOb3RlIHRoYXQgc2luZ2xlIHJlY292ZXJ5IGFjdGlvbiBvbiBhIHNjbWQgY2FuIHJlY292ZXIgbXVsdGlwbGUKKyAgIHNjbWRzLiAgZS5nLiByZXNldHRpbmcgYSBkZXZpY2UgcmVjb3ZlcnMgYWxsIGZhaWxlZCBzY21kcyBvbiB0aGUKKyAgIGRldmljZS4KKworIC0gSGlnaGVyIHNldmVyaXR5IGFjdGlvbnMgYXJlIHRha2VuIGlmZiBlaF93b3JrX3EgaXMgbm90IGVtcHR5IGFmdGVyCisgICBsb3dlciBzZXZlcml0eSBhY3Rpb25zIGFyZSBjb21wbGV0ZS4KKworIC0gRUggcmV1c2VzIGZhaWxlZCBzY21kcyB0byBpc3N1ZSBjb21tYW5kcyBmb3IgcmVjb3ZlcnkuICBGb3IKKyAgIHRpbWVkLW91dCBzY21kcywgU0NTSSBFSCBlbnN1cmVzIHRoYXQgTExERCBmb3JnZXRzIGFib3V0IGEgc2NtZAorICAgYmVmb3JlIHJldXNpbmcgaXQgZm9yIEVIIGNvbW1hbmRzLgorCisgV2hlbiBhIHNjbWQgaXMgcmVjb3ZlcmVkLCB0aGUgc2NtZCBpcyBtb3ZlZCBmcm9tIGVoX3dvcmtfcSB0byBFSAorbG9jYWwgZWhfZG9uZV9xIHVzaW5nIHNjc2lfZWhfZmluaXNoX2NtZCgpLiAgQWZ0ZXIgYWxsIHNjbWRzIGFyZQorcmVjb3ZlcmVkIChlaF93b3JrX3EgaXMgZW1wdHkpLCBzY3NpX2VoX2ZsdXNoX2RvbmVfcSgpIGlzIGludm9rZWQgdG8KK2VpdGhlciByZXRyeSBvciBlcnJvci1maW5pc2ggKG5vdGlmeSB1cHBlciBsYXllciBvZiBmYWlsdXJlKSByZWNvdmVyZWQKK3NjbWRzLgorCisgc2NtZHMgYXJlIHJldHJpZWQgaWZmIGl0cyBzZGV2IGlzIHN0aWxsIG9ubGluZSAobm90IG9mZmxpbmVkIGR1cmluZworRUgpLCBSRVFfRkFJTEZBU1QgaXMgbm90IHNldCBhbmQgKytzY21kLT5yZXRyaWVzIGlzIGxlc3MgdGhhbgorc2NtZC0+YWxsb3dlZC4KKworCitbMi0xLTJdIEZsb3cgb2Ygc2NtZHMgdGhyb3VnaCBFSAorCisgMS4gRXJyb3IgY29tcGxldGlvbiAvIHRpbWUgb3V0CisgICAgQUNUSU9OOiBzY3NpX2VoX3NjbWRfYWRkKCkgaXMgaW52b2tlZCBmb3Igc2NtZAorCS0gc2V0IHNjbWQtPmVoX2VmbGFncworCS0gYWRkIHNjbWQgdG8gc2hvc3QtPmVoX2NtZF9xCisJLSBzZXQgU0hPU1RfUkVDT1ZFUlkKKwktIHNob3N0LT5ob3N0X2ZhaWxlZCsrCisgICAgTE9DS0lORzogc2hvc3QtPmhvc3RfbG9jaworCisgMi4gRUggc3RhcnRzCisgICAgQUNUSU9OOiBtb3ZlIGFsbCBzY21kcyB0byBFSCdzIGxvY2FsIGVoX3dvcmtfcS4gIHNob3N0LT5laF9jbWRfcQorCSAgICBpcyBjbGVhcmVkLgorICAgIExPQ0tJTkc6IHNob3N0LT5ob3N0X2xvY2sgKG5vdCBzdHJpY3RseSBuZWNlc3NhcnksIGp1c3QgZm9yCisgICAgICAgICAgICAgY29uc2lzdGVuY3kpCisKKyAzLiBzY21kIHJlY292ZXJlZAorICAgIEFDVElPTjogc2NzaV9laF9maW5pc2hfY21kKCkgaXMgaW52b2tlZCB0byBFSC1maW5pc2ggc2NtZAorCS0gY2xlYXIgc2NtZC0+ZWhfZWZsYWdzCisJLSBzY3NpX3NldHVwX2NtZF9yZXRyeSgpCisJLSBtb3ZlIGZyb20gbG9jYWwgZWhfd29ya19xIHRvIGxvY2FsIGVoX2RvbmVfcQorICAgIExPQ0tJTkc6IG5vbmUKKyAgICBDT05DVVJSRU5DWTogYXQgbW9zdCBvbmUgdGhyZWFkIHBlciBzZXBhcmF0ZSBlaF93b3JrX3EgdG8KKwkJIGtlZXAgcXVldWUgbWFuaXB1bGF0aW9uIGxvY2tsZXNzCisKKyA0LiBFSCBjb21wbGV0ZXMKKyAgICBBQ1RJT046IHNjc2lfZWhfZmx1c2hfZG9uZV9xKCkgcmV0cmllcyBzY21kcyBvciBub3RpZmllcyB1cHBlcgorCSAgICBsYXllciBvZiBmYWlsdXJlLiBNYXkgYmUgY2FsbGVkIGNvbmN1cnJlbnRseSBidXQgbXVzdCBoYXZlCisJICAgIGEgbm8gbW9yZSB0aGFuIG9uZSB0aHJlYWQgcGVyIHNlcGFyYXRlIGVoX3dvcmtfcSB0bworCSAgICBtYW5pcHVsYXRlIHRoZSBxdWV1ZSBsb2NrbGVzc2x5CisJLSBzY21kIGlzIHJlbW92ZWQgZnJvbSBlaF9kb25lX3EgYW5kIHNjbWQtPmVoX2VudHJ5IGlzIGNsZWFyZWQKKwktIGlmIHJldHJ5IGlzIG5lY2Vzc2FyeSwgc2NtZCBpcyByZXF1ZXVlZCB1c2luZworICAgICAgICAgIHNjc2lfcXVldWVfaW5zZXJ0KCkKKwktIG90aGVyd2lzZSwgc2NzaV9maW5pc2hfY29tbWFuZCgpIGlzIGludm9rZWQgZm9yIHNjbWQKKwktIHplcm8gc2hvc3QtPmhvc3RfZmFpbGVkCisgICAgTE9DS0lORzogcXVldWUgb3IgZmluaXNoIGZ1bmN0aW9uIHBlcmZvcm1zIGFwcHJvcHJpYXRlIGxvY2tpbmcKKworCitbMi0xLTNdIEZsb3cgb2YgY29udHJvbAorCisgRUggdGhyb3VnaCBmaW5lLWdyYWluZWQgY2FsbGJhY2tzIHN0YXJ0IGZyb20gc2NzaV91bmphbV9ob3N0KCkuCisKKzw8c2NzaV91bmphbV9ob3N0Pj4KKworICAgIDEuIExvY2sgc2hvc3QtPmhvc3RfbG9jaywgc3BsaWNlX2luaXQgc2hvc3QtPmVoX2NtZF9xIGludG8gbG9jYWwKKyAgICAgICBlaF93b3JrX3EgYW5kIHVubG9jayBob3N0X2xvY2suICBOb3RlIHRoYXQgc2hvc3QtPmVoX2NtZF9xIGlzCisgICAgICAgY2xlYXJlZCBieSB0aGlzIGFjdGlvbi4KKworICAgIDIuIEludm9rZSBzY3NpX2VoX2dldF9zZW5zZS4KKworICAgIDw8c2NzaV9laF9nZXRfc2Vuc2U+PgorCisJVGhpcyBhY3Rpb24gaXMgdGFrZW4gZm9yIGVhY2ggZXJyb3ItY29tcGxldGVkCisJKCFTQ1NJX0VIX0NBTkNFTF9DTUQpIGNvbW1hbmRzIHdpdGhvdXQgdmFsaWQgc2Vuc2UgZGF0YS4gIE1vc3QKKwlTQ1NJIHRyYW5zcG9ydHMvTExERHMgYXV0b21hdGljYWxseSBhY3F1aXJlIHNlbnNlIGRhdGEgb24KKwljb21tYW5kIGZhaWx1cmVzIChhdXRvc2Vuc2UpLiAgQXV0b3NlbnNlIGlzIHJlY29tbWVuZGVkIGZvcgorCXBlcmZvcm1hbmNlIHJlYXNvbnMgYW5kIGFzIHNlbnNlIGluZm9ybWF0aW9uIGNvdWxkIGdldCBvdXQgb2YKKwlzeW5jIGJldHdlZW4gb2NjdXJyZW5jZSBvZiBDSEVDSyBDT05ESVRJT04gYW5kIHRoaXMgYWN0aW9uLgorCisJTm90ZSB0aGF0IGlmIGF1dG9zZW5zZSBpcyBub3Qgc3VwcG9ydGVkLCBzY21kLT5zZW5zZV9idWZmZXIKKwljb250YWlucyBpbnZhbGlkIHNlbnNlIGRhdGEgd2hlbiBlcnJvci1jb21wbGV0aW5nIHRoZSBzY21kCisJd2l0aCBzY3NpX2RvbmUoKS4gIHNjc2lfZGVjaWRlX2Rpc3Bvc2l0aW9uKCkgYWx3YXlzIHJldHVybnMKKwlGQUlMRUQgaW4gc3VjaCBjYXNlcyB0aHVzIGludm9raW5nIFNDU0kgRUguICBXaGVuIHRoZSBzY21kCisJcmVhY2hlcyBoZXJlLCBzZW5zZSBkYXRhIGlzIGFjcXVpcmVkIGFuZAorCXNjc2lfZGVjaWRlX2Rpc3Bvc2l0aW9uKCkgaXMgY2FsbGVkIGFnYWluLgorCisJMS4gSW52b2tlIHNjc2lfcmVxdWVzdF9zZW5zZSgpIHdoaWNoIGlzc3VlcyBSRVFVRVNUX1NFTlNFCisgICAgICAgICAgIGNvbW1hbmQuICBJZiBmYWlscywgbm8gYWN0aW9uLiAgTm90ZSB0aGF0IHRha2luZyBubyBhY3Rpb24KKyAgICAgICAgICAgY2F1c2VzIGhpZ2hlci1zZXZlcml0eSByZWNvdmVyeSB0byBiZSB0YWtlbiBmb3IgdGhlIHNjbWQuCisKKwkyLiBJbnZva2Ugc2NzaV9kZWNpZGVfZGlzcG9zaXRpb24oKSBvbiB0aGUgc2NtZAorCisJICAgLSBTVUNDRVNTCisJCXNjbWQtPnJldHJpZXMgaXMgc2V0IHRvIHNjbWQtPmFsbG93ZWQgcHJldmVudGluZworCQlzY3NpX2VoX2ZsdXNoX2RvbmVfcSgpIGZyb20gcmV0cnlpbmcgdGhlIHNjbWQgYW5kCisJCXNjc2lfZWhfZmluaXNoX2NtZCgpIGlzIGludm9rZWQuCisKKwkgICAtIE5FRURTX1JFVFJZCisJCXNjc2lfZWhfZmluaXNoX2NtZCgpIGludm9rZWQKKworCSAgIC0gb3RoZXJ3aXNlCisJCU5vIGFjdGlvbi4KKworICAgIDMuIElmICFsaXN0X2VtcHR5KCZlaF93b3JrX3EpLCBpbnZva2Ugc2NzaV9laF9hYm9ydF9jbWRzKCkuCisKKyAgICA8PHNjc2lfZWhfYWJvcnRfY21kcz4+CisKKwlUaGlzIGFjdGlvbiBpcyB0YWtlbiBmb3IgZWFjaCB0aW1lZCBvdXQgY29tbWFuZCB3aGVuCisJbm9fYXN5bmNfYWJvcnQgaXMgZW5hYmxlZCBpbiB0aGUgaG9zdCB0ZW1wbGF0ZS4KKwlob3N0dC0+ZWhfYWJvcnRfaGFuZGxlcigpIGlzIGludm9rZWQgZm9yIGVhY2ggc2NtZC4gIFRoZQorCWhhbmRsZXIgcmV0dXJucyBTVUNDRVNTIGlmIGl0IGhhcyBzdWNjZWVkZWQgdG8gbWFrZSBMTEREIGFuZAorCWFsbCByZWxhdGVkIGhhcmR3YXJlIGZvcmdldCBhYm91dCB0aGUgc2NtZC4KKworCUlmIGEgdGltZWRvdXQgc2NtZCBpcyBzdWNjZXNzZnVsbHkgYWJvcnRlZCBhbmQgdGhlIHNkZXYgaXMKKwllaXRoZXIgb2ZmbGluZSBvciByZWFkeSwgc2NzaV9laF9maW5pc2hfY21kKCkgaXMgaW52b2tlZCBmb3IKKwl0aGUgc2NtZC4gIE90aGVyd2lzZSwgdGhlIHNjbWQgaXMgbGVmdCBpbiBlaF93b3JrX3EgZm9yCisJaGlnaGVyLXNldmVyaXR5IGFjdGlvbnMuCisKKwlOb3RlIHRoYXQgYm90aCBvZmZsaW5lIGFuZCByZWFkeSBzdGF0dXMgbWVhbiB0aGF0IHRoZSBzZGV2IGlzCisJcmVhZHkgdG8gcHJvY2VzcyBuZXcgc2NtZHMsIHdoZXJlIHByb2Nlc3NpbmcgYWxzbyBpbXBsaWVzCisJaW1tZWRpYXRlIGZhaWxpbmc7IHRodXMsIGlmIGEgc2RldiBpcyBpbiBvbmUgb2YgdGhlIHR3bworCXN0YXRlcywgbm8gZnVydGhlciByZWNvdmVyeSBhY3Rpb24gaXMgbmVlZGVkLgorCisJRGV2aWNlIHJlYWRpbmVzcyBpcyB0ZXN0ZWQgdXNpbmcgc2NzaV9laF90dXIoKSB3aGljaCBpc3N1ZXMKKwlURVNUX1VOSVRfUkVBRFkgY29tbWFuZC4gIE5vdGUgdGhhdCB0aGUgc2NtZCBtdXN0IGhhdmUgYmVlbgorCWFib3J0ZWQgc3VjY2Vzc2Z1bGx5IGJlZm9yZSByZXVzaW5nIGl0IGZvciBURVNUX1VOSVRfUkVBRFkuCisKKyAgICA0LiBJZiAhbGlzdF9lbXB0eSgmZWhfd29ya19xKSwgaW52b2tlIHNjc2lfZWhfcmVhZHlfZGV2cygpCisKKyAgICA8PHNjc2lfZWhfcmVhZHlfZGV2cz4+CisKKwlUaGlzIGZ1bmN0aW9uIHRha2VzIGZvdXIgaW5jcmVhc2luZ2x5IG1vcmUgc2V2ZXJlIG1lYXN1cmVzIHRvCisJbWFrZSBmYWlsZWQgc2RldnMgcmVhZHkgZm9yIG5ldyBjb21tYW5kcy4KKworCTEuIEludm9rZSBzY3NpX2VoX3N0dSgpCisKKwk8PHNjc2lfZWhfc3R1Pj4KKworCSAgICBGb3IgZWFjaCBzZGV2IHdoaWNoIGhhcyBmYWlsZWQgc2NtZHMgd2l0aCB2YWxpZCBzZW5zZSBkYXRhCisJICAgIG9mIHdoaWNoIHNjc2lfY2hlY2tfc2Vuc2UoKSdzIHZlcmRpY3QgaXMgRkFJTEVELAorCSAgICBTVEFSVF9TVE9QX1VOSVQgY29tbWFuZCBpcyBpc3N1ZWQgdy8gc3RhcnQ9MS4gIE5vdGUgdGhhdAorCSAgICBhcyB3ZSBleHBsaWNpdGx5IGNob29zZSBlcnJvci1jb21wbGV0ZWQgc2NtZHMsIGl0IGlzIGtub3duCisJICAgIHRoYXQgbG93ZXIgbGF5ZXJzIGhhdmUgZm9yZ290dGVuIGFib3V0IHRoZSBzY21kIGFuZCB3ZSBjYW4KKwkgICAgcmV1c2UgaXQgZm9yIFNUVS4KKworCSAgICBJZiBTVFUgc3VjY2VlZHMgYW5kIHRoZSBzZGV2IGlzIGVpdGhlciBvZmZsaW5lIG9yIHJlYWR5LAorCSAgICBhbGwgZmFpbGVkIHNjbWRzIG9uIHRoZSBzZGV2IGFyZSBFSC1maW5pc2hlZCB3aXRoCisJICAgIHNjc2lfZWhfZmluaXNoX2NtZCgpLgorCisJICAgICpOT1RFKiBJZiBob3N0dC0+ZWhfYWJvcnRfaGFuZGxlcigpIGlzbid0IGltcGxlbWVudGVkIG9yCisJICAgIGZhaWxlZCwgd2UgbWF5IHN0aWxsIGhhdmUgdGltZWQgb3V0IHNjbWRzIGF0IHRoaXMgcG9pbnQKKwkgICAgYW5kIFNUVSBkb2Vzbid0IG1ha2UgbG93ZXIgbGF5ZXJzIGZvcmdldCBhYm91dCB0aG9zZQorCSAgICBzY21kcy4gIFlldCwgdGhpcyBmdW5jdGlvbiBFSC1maW5pc2ggYWxsIHNjbWRzIG9uIHRoZSBzZGV2CisJICAgIGlmIFNUVSBzdWNjZWVkcyBsZWF2aW5nIGxvd2VyIGxheWVycyBpbiBhbiBpbmNvbnNpc3RlbnQKKwkgICAgc3RhdGUuICBJdCBzZWVtcyB0aGF0IFNUVSBhY3Rpb24gc2hvdWxkIGJlIHRha2VuIG9ubHkgd2hlbgorCSAgICBhIHNkZXYgaGFzIG5vIHRpbWVkIG91dCBzY21kLgorCisJMi4gSWYgIWxpc3RfZW1wdHkoJmVoX3dvcmtfcSksIGludm9rZSBzY3NpX2VoX2J1c19kZXZpY2VfcmVzZXQoKS4KKworCTw8c2NzaV9laF9idXNfZGV2aWNlX3Jlc2V0Pj4KKworCSAgICBUaGlzIGFjdGlvbiBpcyB2ZXJ5IHNpbWlsYXIgdG8gc2NzaV9laF9zdHUoKSBleGNlcHQgdGhhdCwKKwkgICAgaW5zdGVhZCBvZiBpc3N1aW5nIFNUVSwgaG9zdHQtPmVoX2RldmljZV9yZXNldF9oYW5kbGVyKCkKKwkgICAgaXMgdXNlZC4gIEFsc28sIGFzIHdlJ3JlIG5vdCBpc3N1aW5nIFNDU0kgY29tbWFuZHMgYW5kCisJICAgIHJlc2V0dGluZyBjbGVhcnMgYWxsIHNjbWRzIG9uIHRoZSBzZGV2LCB0aGVyZSBpcyBubyBuZWVkCisJICAgIHRvIGNob29zZSBlcnJvci1jb21wbGV0ZWQgc2NtZHMuCisKKwkzLiBJZiAhbGlzdF9lbXB0eSgmZWhfd29ya19xKSwgaW52b2tlIHNjc2lfZWhfYnVzX3Jlc2V0KCkKKworCTw8c2NzaV9laF9idXNfcmVzZXQ+PgorCisJICAgIGhvc3R0LT5laF9idXNfcmVzZXRfaGFuZGxlcigpIGlzIGludm9rZWQgZm9yIGVhY2ggY2hhbm5lbAorCSAgICB3aXRoIGZhaWxlZCBzY21kcy4gIElmIGJ1cyByZXNldCBzdWNjZWVkcywgYWxsIGZhaWxlZAorCSAgICBzY21kcyBvbiBhbGwgcmVhZHkgb3Igb2ZmbGluZSBzZGV2cyBvbiB0aGUgY2hhbm5lbCBhcmUKKwkgICAgRUgtZmluaXNoZWQuCisKKwk0LiBJZiAhbGlzdF9lbXB0eSgmZWhfd29ya19xKSwgaW52b2tlIHNjc2lfZWhfaG9zdF9yZXNldCgpCisKKwk8PHNjc2lfZWhfaG9zdF9yZXNldD4+CisKKwkgICAgVGhpcyBpcyB0aGUgbGFzdCByZXNvcnQuICBob3N0dC0+ZWhfaG9zdF9yZXNldF9oYW5kbGVyKCkKKwkgICAgaXMgaW52b2tlZC4gIElmIGhvc3QgcmVzZXQgc3VjY2VlZHMsIGFsbCBmYWlsZWQgc2NtZHMgb24KKwkgICAgYWxsIHJlYWR5IG9yIG9mZmxpbmUgc2RldnMgb24gdGhlIGhvc3QgYXJlIEVILWZpbmlzaGVkLgorCisJNS4gSWYgIWxpc3RfZW1wdHkoJmVoX3dvcmtfcSksIGludm9rZSBzY3NpX2VoX29mZmxpbmVfc2RldnMoKQorCisJPDxzY3NpX2VoX29mZmxpbmVfc2RldnM+PgorCisJICAgIFRha2UgYWxsIHNkZXZzIHdoaWNoIHN0aWxsIGhhdmUgdW5yZWNvdmVyZWQgc2NtZHMgb2ZmbGluZQorCSAgICBhbmQgRUgtZmluaXNoIHRoZSBzY21kcy4KKworICAgIDUuIEludm9rZSBzY3NpX2VoX2ZsdXNoX2RvbmVfcSgpLgorCisJPDxzY3NpX2VoX2ZsdXNoX2RvbmVfcT4+CisKKwkgICAgQXQgdGhpcyBwb2ludCBhbGwgc2NtZHMgYXJlIHJlY292ZXJlZCAob3IgZ2l2ZW4gdXApIGFuZAorCSAgICBwdXQgb24gZWhfZG9uZV9xIGJ5IHNjc2lfZWhfZmluaXNoX2NtZCgpLiAgVGhpcyBmdW5jdGlvbgorCSAgICBmbHVzaGVzIGVoX2RvbmVfcSBieSBlaXRoZXIgcmV0cnlpbmcgb3Igbm90aWZ5aW5nIHVwcGVyCisJICAgIGxheWVyIG9mIGZhaWx1cmUgb2YgdGhlIHNjbWRzLgorCisKK1syLTJdIEVIIHRocm91Z2ggdHJhbnNwb3J0dC0+ZWhfc3RyYXRlZ3lfaGFuZGxlcigpCisKKyB0cmFuc3BvcnR0LT5laF9zdHJhdGVneV9oYW5kbGVyKCkgaXMgaW52b2tlZCBpbiB0aGUgcGxhY2Ugb2YKK3Njc2lfdW5qYW1faG9zdCgpIGFuZCBpdCBpcyByZXNwb25zaWJsZSBmb3Igd2hvbGUgcmVjb3ZlcnkgcHJvY2Vzcy4KK09uIGNvbXBsZXRpb24sIHRoZSBoYW5kbGVyIHNob3VsZCBoYXZlIG1hZGUgbG93ZXIgbGF5ZXJzIGZvcmdldCBhYm91dAorYWxsIGZhaWxlZCBzY21kcyBhbmQgZWl0aGVyIHJlYWR5IGZvciBuZXcgY29tbWFuZHMgb3Igb2ZmbGluZS4gIEFsc28sCitpdCBzaG91bGQgcGVyZm9ybSBTQ1NJIEVIIG1haW50ZW5hbmNlIGNob3JlcyB0byBtYWludGFpbiBpbnRlZ3JpdHkgb2YKK1NDU0kgbWlkbGF5ZXIuICBJT1csIG9mIHRoZSBzdGVwcyBkZXNjcmliZWQgaW4gWzItMS0yXSwgYWxsIHN0ZXBzCitleGNlcHQgZm9yICMxIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgZWhfc3RyYXRlZ3lfaGFuZGxlcigpLgorCisKK1syLTItMV0gUHJlIHRyYW5zcG9ydHQtPmVoX3N0cmF0ZWd5X2hhbmRsZXIoKSBTQ1NJIG1pZGxheWVyIGNvbmRpdGlvbnMKKworIFRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdHJ1ZSBvbiBlbnRyeSB0byB0aGUgaGFuZGxlci4KKworIC0gRWFjaCBmYWlsZWQgc2NtZCdzIGVoX2ZsYWdzIGZpZWxkIGlzIHNldCBhcHByb3ByaWF0ZWx5LgorCisgLSBFYWNoIGZhaWxlZCBzY21kIGlzIGxpbmtlZCBvbiBzY21kLT5laF9jbWRfcSBieSBzY21kLT5laF9lbnRyeS4KKworIC0gU0hPU1RfUkVDT1ZFUlkgaXMgc2V0LgorCisgLSBzaG9zdC0+aG9zdF9mYWlsZWQgPT0gc2hvc3QtPmhvc3RfYnVzeQorCisKK1syLTItMl0gUG9zdCB0cmFuc3BvcnR0LT5laF9zdHJhdGVneV9oYW5kbGVyKCkgU0NTSSBtaWRsYXllciBjb25kaXRpb25zCisKKyBUaGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgbXVzdCBiZSB0cnVlIG9uIGV4aXQgZnJvbSB0aGUgaGFuZGxlci4KKworIC0gc2hvc3QtPmhvc3RfZmFpbGVkIGlzIHplcm8uCisKKyAtIEVhY2ggc2NtZCdzIGVoX2VmbGFncyBmaWVsZCBpcyBjbGVhcmVkLgorCisgLSBFYWNoIHNjbWQgaXMgaW4gc3VjaCBhIHN0YXRlIHRoYXQgc2NzaV9zZXR1cF9jbWRfcmV0cnkoKSBvbiB0aGUKKyAgIHNjbWQgZG9lc24ndCBtYWtlIGFueSBkaWZmZXJlbmNlLgorCisgLSBzaG9zdC0+ZWhfY21kX3EgaXMgY2xlYXJlZC4KKworIC0gRWFjaCBzY21kLT5laF9lbnRyeSBpcyBjbGVhcmVkLgorCisgLSBFaXRoZXIgc2NzaV9xdWV1ZV9pbnNlcnQoKSBvciBzY3NpX2ZpbmlzaF9jb21tYW5kKCkgaXMgY2FsbGVkIG9uCisgICBlYWNoIHNjbWQuICBOb3RlIHRoYXQgdGhlIGhhbmRsZXIgaXMgZnJlZSB0byB1c2Ugc2NtZC0+cmV0cmllcyBhbmQKKyAgIC0+YWxsb3dlZCB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIHJldHJpZXMuCisKKworWzItMi0zXSBUaGluZ3MgdG8gY29uc2lkZXIKKworIC0gS25vdyB0aGF0IHRpbWVkIG91dCBzY21kcyBhcmUgc3RpbGwgYWN0aXZlIG9uIGxvd2VyIGxheWVycy4gIE1ha2UKKyAgIGxvd2VyIGxheWVycyBmb3JnZXQgYWJvdXQgdGhlbSBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZSB3aXRoCisgICB0aG9zZSBzY21kcy4KKworIC0gRm9yIGNvbnNpc3RlbmN5LCB3aGVuIGFjY2Vzc2luZy9tb2RpZnlpbmcgc2hvc3QgZGF0YSBzdHJ1Y3R1cmUsCisgICBncmFiIHNob3N0LT5ob3N0X2xvY2suCisKKyAtIE9uIGNvbXBsZXRpb24sIGVhY2ggZmFpbGVkIHNkZXYgbXVzdCBoYXZlIGZvcmdvdHRlbiBhYm91dCBhbGwKKyAgIGFjdGl2ZSBzY21kcy4KKworIC0gT24gY29tcGxldGlvbiwgZWFjaCBmYWlsZWQgc2RldiBtdXN0IGJlIHJlYWR5IGZvciBuZXcgY29tbWFuZHMgb3IKKyAgIG9mZmxpbmUuCisKKworLS0KK1RlanVuIEhlbworaHRlanVuQGdtYWlsLmNvbQorMTF0aCBTZXB0ZW1iZXIgMjAwNQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2lfZmNfdHJhbnNwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24vc2NzaS9zY3NpX2ZjX3RyYW5zcG9ydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc5MjgyZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2NzaS9zY3NpX2ZjX3RyYW5zcG9ydC50eHQKQEAgLTAsMCArMSw0OTYgQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NTSSBGQyBUYW5zcG9ydAorICAgICAgICAgICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRGF0ZTogIDExLzE4LzIwMDgKK0tlcm5lbCBSZXZpc2lvbnMgZm9yIGZlYXR1cmVzOgorICBycG9ydHMgOiA8PFRCUz4+CisgIHZwb3J0cyA6IDIuNi4yMgorICBic2cgc3VwcG9ydCA6IDIuNi4zMCAoP1RCRD8pCisKKworSW50cm9kdWN0aW9uCis9PT09PT09PT09PT0KK1RoaXMgZmlsZSBkb2N1bWVudHMgdGhlIGZlYXR1cmVzIGFuZCBjb21wb25lbnRzIG9mIHRoZSBTQ1NJIEZDIFRyYW5zcG9ydC4KK0l0IGFsc28gcHJvdmlkZXMgZG9jdW1lbnRzIHRoZSBBUEkgYmV0d2VlbiB0aGUgdHJhbnNwb3J0IGFuZCBGQyBMTEREcy4KK1RoZSBGQyB0cmFuc3BvcnQgY2FuIGJlIGZvdW5kIGF0OgorICBkcml2ZXJzL3Njc2kvc2NzaV90cmFuc3BvcnRfZmMuYworICBpbmNsdWRlL3Njc2kvc2NzaV90cmFuc3BvcnRfZmMuaAorICBpbmNsdWRlL3Njc2kvc2NzaV9uZXRsaW5rX2ZjLmgKKyAgaW5jbHVkZS9zY3NpL3Njc2lfYnNnX2ZjLmgKKworVGhpcyBmaWxlIGlzIGZvdW5kIGF0IERvY3VtZW50YXRpb24vc2NzaS9zY3NpX2ZjX3RyYW5zcG9ydC50eHQKKworCitGQyBSZW1vdGUgUG9ydHMgKHJwb3J0cykKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorPDwgVG8gQmUgU3VwcGxpZWQgPj4KKworCitGQyBWaXJ0dWFsIFBvcnRzICh2cG9ydHMpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworT3ZlcnZpZXc6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgTmV3IEZDIHN0YW5kYXJkcyBoYXZlIGRlZmluZWQgbWVjaGFuaXNtcyB3aGljaCBhbGxvd3MgZm9yIGEgc2luZ2xlIHBoeXNpY2FsCisgIHBvcnQgdG8gYXBwZWFyIG9uIGFzIG11bHRpcGxlIGNvbW11bmljYXRpb24gcG9ydHMuIFVzaW5nIHRoZSBOX1BvcnQgSWQKKyAgVmlydHVhbGl6YXRpb24gKE5QSVYpIG1lY2hhbmlzbSwgYSBwb2ludC10by1wb2ludCBjb25uZWN0aW9uIHRvIGEgRmFicmljCisgIGNhbiBiZSBhc3NpZ25lZCBtb3JlIHRoYW4gMSBOX1BvcnRfSUQuICBFYWNoIE5fUG9ydF9JRCBhcHBlYXJzIGFzIGEKKyAgc2VwYXJhdGUgcG9ydCB0byBvdGhlciBlbmRwb2ludHMgb24gdGhlIGZhYnJpYywgZXZlbiB0aG91Z2ggaXQgc2hhcmVzIG9uZQorICBwaHlzaWNhbCBsaW5rIHRvIHRoZSBzd2l0Y2ggZm9yIGNvbW11bmljYXRpb24uIEVhY2ggTl9Qb3J0X0lEIGNhbiBoYXZlIGEKKyAgdW5pcXVlIHZpZXcgb2YgdGhlIGZhYnJpYyBiYXNlZCBvbiBmYWJyaWMgem9uaW5nIGFuZCBhcnJheSBsdW4tbWFza2luZworICAoanVzdCBsaWtlIGEgbm9ybWFsIG5vbi1OUElWIGFkYXB0ZXIpLiAgVXNpbmcgdGhlIFZpcnR1YWwgRmFicmljIChWRikKKyAgbWVjaGFuaXNtLCBhZGRpbmcgYSBmYWJyaWMgaGVhZGVyIHRvIGVhY2ggZnJhbWUgYWxsb3dzIHRoZSBwb3J0IHRvCisgIGludGVyYWN0IHdpdGggdGhlIEZhYnJpYyBQb3J0IHRvIGpvaW4gbXVsdGlwbGUgZmFicmljcy4gVGhlIHBvcnQgd2lsbAorICBvYnRhaW4gYW4gTl9Qb3J0X0lEIG9uIGVhY2ggZmFicmljIGl0IGpvaW5zLiBFYWNoIGZhYnJpYyB3aWxsIGhhdmUgaXRzCisgIG93biB1bmlxdWUgdmlldyBvZiBlbmRwb2ludHMgYW5kIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycy4gIE5QSVYgbWF5IGJlCisgIHVzZWQgdG9nZXRoZXIgd2l0aCBWRiBzbyB0aGF0IHRoZSBwb3J0IGNhbiBvYnRhaW4gbXVsdGlwbGUgTl9Qb3J0X0lEcworICBvbiBlYWNoIHZpcnR1YWwgZmFicmljLgorCisgIFRoZSBGQyB0cmFuc3BvcnQgaXMgbm93IHJlY29nbml6aW5nIGEgbmV3IG9iamVjdCAtIGEgdnBvcnQuICBBIHZwb3J0IGlzCisgIGFuIGVudGl0eSB0aGF0IGhhcyBhIHdvcmxkLXdpZGUgdW5pcXVlIFdvcmxkIFdpZGUgUG9ydCBOYW1lICh3d3BuKSBhbmQKKyAgV29ybGQgV2lkZSBOb2RlIE5hbWUgKHd3bm4pLiBUaGUgdHJhbnNwb3J0IGFsc28gYWxsb3dzIGZvciB0aGUgRkM0J3MgdG8KKyAgYmUgc3BlY2lmaWVkIGZvciB0aGUgdnBvcnQsIHdpdGggRkNQX0luaXRpYXRvciBiZWluZyB0aGUgcHJpbWFyeSByb2xlCisgIGV4cGVjdGVkLiBPbmNlIGluc3RhbnRpYXRlZCBieSBvbmUgb2YgdGhlIGFib3ZlIG1ldGhvZHMsIGl0IHdpbGwgaGF2ZSBhCisgIGRpc3RpbmN0IE5fUG9ydF9JRCBhbmQgdmlldyBvZiBmYWJyaWMgZW5kcG9pbnRzIGFuZCBzdG9yYWdlIGVudGl0aWVzLgorICBUaGUgZmNfaG9zdCBhc3NvY2lhdGVkIHdpdGggdGhlIHBoeXNpY2FsIGFkYXB0ZXIgd2lsbCBleHBvcnQgdGhlIGFiaWxpdHkKKyAgdG8gY3JlYXRlIHZwb3J0cy4gVGhlIHRyYW5zcG9ydCB3aWxsIGNyZWF0ZSB0aGUgdnBvcnQgb2JqZWN0IHdpdGhpbiB0aGUKKyAgTGludXggZGV2aWNlIHRyZWUsIGFuZCBpbnN0cnVjdCB0aGUgZmNfaG9zdCdzIGRyaXZlciB0byBpbnN0YW50aWF0ZSB0aGUKKyAgdmlydHVhbCBwb3J0LiBUeXBpY2FsbHksIHRoZSBkcml2ZXIgd2lsbCBjcmVhdGUgYSBuZXcgc2NzaV9ob3N0IGluc3RhbmNlCisgIG9uIHRoZSB2cG9ydCwgcmVzdWx0aW5nIGluIGEgdW5pcXVlIDxILEMsVCxMPiBuYW1lc3BhY2UgZm9yIHRoZSB2cG9ydC4KKyAgVGh1cywgd2hldGhlciBhIEZDIHBvcnQgaXMgYmFzZWQgb24gYSBwaHlzaWNhbCBwb3J0IG9yIG9uIGEgdmlydHVhbCBwb3J0LAorICBlYWNoIHdpbGwgYXBwZWFyIGFzIGEgdW5pcXVlIHNjc2lfaG9zdCB3aXRoIGl0cyBvd24gdGFyZ2V0IGFuZCBsdW4gc3BhY2UuCisKKyAgTm90ZTogQXQgdGhpcyB0aW1lLCB0aGUgdHJhbnNwb3J0IGlzIHdyaXR0ZW4gdG8gY3JlYXRlIG9ubHkgTlBJVi1iYXNlZAorICAgIHZwb3J0cy4gSG93ZXZlciwgY29uc2lkZXJhdGlvbiB3YXMgZ2l2ZW4gdG8gVkYtYmFzZWQgdnBvcnRzIGFuZCBpdAorICAgIHNob3VsZCBiZSBhIG1pbm9yIGNoYW5nZSB0byBhZGQgc3VwcG9ydCBpZiBuZWVkZWQuICBUaGUgcmVtYWluaW5nCisgICAgZGlzY3Vzc2lvbiB3aWxsIGNvbmNlbnRyYXRlIG9uIE5QSVYuCisKKyAgTm90ZTogV29ybGQgV2lkZSBOYW1lIGFzc2lnbm1lbnQgKGFuZCB1bmlxdWVuZXNzIGd1YXJhbnRlZXMpIGFyZSBsZWZ0CisgICAgdXAgdG8gYW4gYWRtaW5pc3RyYXRpdmUgZW50aXR5IGNvbnRyb2xsaW5nIHRoZSB2cG9ydC4gRm9yIGV4YW1wbGUsCisgICAgaWYgdnBvcnRzIGFyZSB0byBiZSBhc3NvY2lhdGVkIHdpdGggdmlydHVhbCBtYWNoaW5lcywgYSBYRU4gbWdtdAorICAgIHV0aWxpdHkgd291bGQgYmUgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHd3cG4vd3dubidzIGZvciB0aGUgdnBvcnQsCisgICAgdXNpbmcgaXRzIG93biBuYW1pbmcgYXV0aG9yaXR5IGFuZCBPVUkuIChOb3RlOiBpdCBhbHJlYWR5IGRvZXMgdGhpcworICAgIGZvciB2aXJ0dWFsIE1BQyBhZGRyZXNzZXMpLgorCisKK0RldmljZSBUcmVlcyBhbmQgVnBvcnQgT2JqZWN0czoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUb2RheSwgdGhlIGRldmljZSB0cmVlIHR5cGljYWxseSBjb250YWlucyB0aGUgc2NzaV9ob3N0IG9iamVjdCwKKyAgd2l0aCBycG9ydHMgYW5kIHNjc2kgdGFyZ2V0IG9iamVjdHMgdW5kZXJuZWF0aCBpdC4gQ3VycmVudGx5IHRoZSBGQworICB0cmFuc3BvcnQgY3JlYXRlcyB0aGUgdnBvcnQgb2JqZWN0IGFuZCBwbGFjZXMgaXQgdW5kZXIgdGhlIHNjc2lfaG9zdAorICBvYmplY3QgY29ycmVzcG9uZGluZyB0byB0aGUgcGh5c2ljYWwgYWRhcHRlci4gIFRoZSBMTEREIHdpbGwgYWxsb2NhdGUKKyAgYSBuZXcgc2NzaV9ob3N0IGZvciB0aGUgdnBvcnQgYW5kIGxpbmsgaXRzIG9iamVjdCB1bmRlciB0aGUgdnBvcnQuCisgIFRoZSByZW1haW5kZXIgb2YgdGhlIHRyZWUgdW5kZXIgdGhlIHZwb3J0cyBzY3NpX2hvc3QgaXMgdGhlIHNhbWUKKyAgYXMgdGhlIG5vbi1OUElWIGNhc2UuIFRoZSB0cmFuc3BvcnQgaXMgd3JpdHRlbiBjdXJyZW50bHkgdG8gZWFzaWx5CisgIGFsbG93IHRoZSBwYXJlbnQgb2YgdGhlIHZwb3J0IHRvIGJlIHNvbWV0aGluZyBvdGhlciB0aGFuIHRoZSBzY3NpX2hvc3QuCisgIFRoaXMgY291bGQgYmUgdXNlZCBpbiB0aGUgZnV0dXJlIHRvIGxpbmsgdGhlIG9iamVjdCBvbnRvIGEgdm0tc3BlY2lmaWMKKyAgZGV2aWNlIHRyZWUuIElmIHRoZSB2cG9ydCdzIHBhcmVudCBpcyBub3QgdGhlIHBoeXNpY2FsIHBvcnQncyBzY3NpX2hvc3QsCisgIGEgc3ltYm9saWMgbGluayB0byB0aGUgdnBvcnQgb2JqZWN0IHdpbGwgYmUgcGxhY2VkIGluIHRoZSBwaHlzaWNhbAorICBwb3J0J3Mgc2NzaV9ob3N0LgorCisgIEhlcmUncyB3aGF0IHRvIGV4cGVjdCBpbiB0aGUgZGV2aWNlIHRyZWUgOgorICAgVGhlIHR5cGljYWwgUGh5c2ljYWwgUG9ydCdzIFNjc2lfSG9zdDoKKyAgICAgL3N5cy9kZXZpY2VzLy4uLi9ob3N0MTcvCisgICBhbmQgaXQgaGFzIHRoZSB0eXBpY2FsIGRlc2NlbmRhbnQgdHJlZToKKyAgICAgL3N5cy9kZXZpY2VzLy4uLi9ob3N0MTcvcnBvcnQtMTc6MC0wL3RhcmdldDE3OjA6MC8xNzowOjA6MDoKKyAgIGFuZCB0aGVuIHRoZSB2cG9ydCBpcyBjcmVhdGVkIG9uIHRoZSBQaHlzaWNhbCBQb3J0OgorICAgICAvc3lzL2RldmljZXMvLi4uL2hvc3QxNy92cG9ydC0xNzowLTAKKyAgIGFuZCB0aGUgdnBvcnQncyBTY3NpX0hvc3QgaXMgdGhlbiBjcmVhdGVkOgorICAgICAvc3lzL2RldmljZXMvLi4uL2hvc3QxNy92cG9ydC0xNzowLTAvaG9zdDE4CisgICBhbmQgdGhlbiB0aGUgcmVzdCBvZiB0aGUgdHJlZSBwcm9ncmVzc2VzLCBzdWNoIGFzOgorICAgICAvc3lzL2RldmljZXMvLi4uL2hvc3QxNy92cG9ydC0xNzowLTAvaG9zdDE4L3Jwb3J0LTE4OjAtMC90YXJnZXQxODowOjAvMTg6MDowOjA6CisKKyAgSGVyZSdzIHdoYXQgdG8gZXhwZWN0IGluIHRoZSBzeXNmcyB0cmVlIDoKKyAgIHNjc2lfaG9zdHM6CisgICAgIC9zeXMvY2xhc3Mvc2NzaV9ob3N0L2hvc3QxNyAgICAgICAgICAgICAgICBwaHlzaWNhbCBwb3J0J3Mgc2NzaV9ob3N0CisgICAgIC9zeXMvY2xhc3Mvc2NzaV9ob3N0L2hvc3QxOCAgICAgICAgICAgICAgICB2cG9ydCdzIHNjc2lfaG9zdAorICAgZmNfaG9zdHM6CisgICAgIC9zeXMvY2xhc3MvZmNfaG9zdC9ob3N0MTcgICAgICAgICAgICAgICAgICBwaHlzaWNhbCBwb3J0J3MgZmNfaG9zdAorICAgICAvc3lzL2NsYXNzL2ZjX2hvc3QvaG9zdDE4ICAgICAgICAgICAgICAgICAgdnBvcnQncyBmY19ob3N0CisgICBmY192cG9ydHM6CisgICAgIC9zeXMvY2xhc3MvZmNfdnBvcnRzL3Zwb3J0LTE3OjAtMCAgICAgICAgICB0aGUgdnBvcnQncyBmY192cG9ydAorICAgZmNfcnBvcnRzOgorICAgICAvc3lzL2NsYXNzL2ZjX3JlbW90ZV9wb3J0cy9ycG9ydC0xNzowLTAgICAgcnBvcnQgb24gdGhlIHBoeXNpY2FsIHBvcnQKKyAgICAgL3N5cy9jbGFzcy9mY19yZW1vdGVfcG9ydHMvcnBvcnQtMTg6MC0wICAgIHJwb3J0IG9uIHRoZSB2cG9ydAorCisKK1Zwb3J0IEF0dHJpYnV0ZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlIG5ldyBmY192cG9ydCBjbGFzcyBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcworCisgICAgIG5vZGVfbmFtZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZF9Pbmx5CisgICAgICAgVGhlIFdXTk4gb2YgdGhlIHZwb3J0CisKKyAgICAgcG9ydF9uYW1lOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkX09ubHkKKyAgICAgICBUaGUgV1dQTiBvZiB0aGUgdnBvcnQKKworICAgICByb2xlczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRfT25seQorICAgICAgIEluZGljYXRlcyB0aGUgRkM0IHJvbGVzIGVuYWJsZWQgb24gdGhlIHZwb3J0LgorCisgICAgIHN5bWJvbGljX25hbWU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZF9Xcml0ZQorICAgICAgIEEgc3RyaW5nLCBhcHBlbmRlZCB0byB0aGUgZHJpdmVyJ3Mgc3ltYm9saWMgcG9ydCBuYW1lIHN0cmluZywgd2hpY2gKKyAgICAgICBpcyByZWdpc3RlcmVkIHdpdGggdGhlIHN3aXRjaCB0byBpZGVudGlmeSB0aGUgdnBvcnQuIEZvciBleGFtcGxlLAorICAgICAgIGEgaHlwZXJ2aXNvciBjb3VsZCBzZXQgdGhpcyBzdHJpbmcgdG8gIlhlbiBEb21haW4gMiBWTSA1IFZwb3J0IDIiLAorICAgICAgIGFuZCB0aGlzIHNldCBvZiBpZGVudGlmaWVycyBjYW4gYmUgc2VlbiBvbiBzd2l0Y2ggbWFuYWdlbWVudCBzY3JlZW5zCisgICAgICAgdG8gaWRlbnRpZnkgdGhlIHBvcnQuCisKKyAgICAgdnBvcnRfZGVsZXRlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZV9Pbmx5CisgICAgICAgV2hlbiB3cml0dGVuIHdpdGggYSAiMSIsIHdpbGwgdGVhciBkb3duIHRoZSB2cG9ydC4KKworICAgICB2cG9ydF9kaXNhYmxlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlX09ubHkKKyAgICAgICBXaGVuIHdyaXR0ZW4gd2l0aCBhICIxIiwgd2lsbCB0cmFuc2l0aW9uIHRoZSB2cG9ydCB0byBhIGRpc2FibGVkLgorICAgICAgIHN0YXRlLiAgVGhlIHZwb3J0IHdpbGwgc3RpbGwgYmUgaW5zdGFudGlhdGVkIHdpdGggdGhlIExpbnV4IGtlcm5lbCwKKyAgICAgICBidXQgaXQgd2lsbCBub3QgYmUgYWN0aXZlIG9uIHRoZSBGQyBsaW5rLgorICAgICAgIFdoZW4gd3JpdHRlbiB3aXRoIGEgIjAiLCB3aWxsIGVuYWJsZSB0aGUgdnBvcnQuCisKKyAgICAgdnBvcnRfbGFzdF9zdGF0ZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkX09ubHkKKyAgICAgICBJbmRpY2F0ZXMgdGhlIHByZXZpb3VzIHN0YXRlIG9mIHRoZSB2cG9ydC4gIFNlZSB0aGUgc2VjdGlvbiBiZWxvdyBvbgorICAgICAgICJWcG9ydCBTdGF0ZXMiLgorCisgICAgIHZwb3J0X3N0YXRlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZF9Pbmx5CisgICAgICAgSW5kaWNhdGVzIHRoZSBzdGF0ZSBvZiB0aGUgdnBvcnQuICBTZWUgdGhlIHNlY3Rpb24gYmVsb3cgb24KKyAgICAgICAiVnBvcnQgU3RhdGVzIi4KKworICAgICB2cG9ydF90eXBlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRfT25seQorICAgICAgIFJlZmxlY3RzIHRoZSBGQyBtZWNoYW5pc20gdXNlZCB0byBjcmVhdGUgdGhlIHZpcnR1YWwgcG9ydC4KKyAgICAgICBPbmx5IE5QSVYgaXMgc3VwcG9ydGVkIGN1cnJlbnRseS4KKworCisgIEZvciB0aGUgZmNfaG9zdCBjbGFzcyBvYmplY3QsIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBhcmUgYWRkZWQgZm9yIHZwb3J0czoKKworICAgICBtYXhfbnBpdl92cG9ydHM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRfT25seQorICAgICAgIEluZGljYXRlcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgTlBJVi1iYXNlZCB2cG9ydHMgdGhhdCB0aGUKKyAgICAgICBkcml2ZXIvYWRhcHRlciBjYW4gc3VwcG9ydCBvbiB0aGUgZmNfaG9zdC4KKworICAgICBucGl2X3Zwb3J0c19pbnVzZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRfT25seQorICAgICAgIEluZGljYXRlcyBob3cgbWFueSBOUElWLWJhc2VkIHZwb3J0cyBoYXZlIGJlZW4gaW5zdGFudGlhdGVkIG9uIHRoZQorICAgICAgIGZjX2hvc3QuCisKKyAgICAgdnBvcnRfY3JlYXRlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZV9Pbmx5CisgICAgICAgQSAic2ltcGxlIiBjcmVhdGUgaW50ZXJmYWNlIHRvIGluc3RhbnRpYXRlIGEgdnBvcnQgb24gYW4gZmNfaG9zdC4KKyAgICAgICBBICI8V1dQTj46PFdXTk4+IiBzdHJpbmcgaXMgd3JpdHRlbiB0byB0aGUgYXR0cmlidXRlLiBUaGUgdHJhbnNwb3J0CisgICAgICAgdGhlbiBpbnN0YW50aWF0ZXMgdGhlIHZwb3J0IG9iamVjdCBhbmQgY2FsbHMgdGhlIExMREQgdG8gY3JlYXRlIHRoZQorICAgICAgIHZwb3J0IHdpdGggdGhlIHJvbGUgb2YgRkNQX0luaXRpYXRvci4gIEVhY2ggV1dOIGlzIHNwZWNpZmllZCBhcyAxNgorICAgICAgIGhleCBjaGFyYWN0ZXJzIGFuZCBtYXkgKm5vdCogY29udGFpbiBhbnkgcHJlZml4ZXMgKGUuZy4gMHgsIHgsIGV0YykuCisKKyAgICAgdnBvcnRfZGVsZXRlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZV9Pbmx5CisgICAgICAgIEEgInNpbXBsZSIgZGVsZXRlIGludGVyZmFjZSB0byB0ZWFyZG93biBhIHZwb3J0LiBBICI8V1dQTj46PFdXTk4+IgorICAgICAgICBzdHJpbmcgaXMgd3JpdHRlbiB0byB0aGUgYXR0cmlidXRlLiBUaGUgdHJhbnNwb3J0IHdpbGwgbG9jYXRlIHRoZQorICAgICAgICB2cG9ydCBvbiB0aGUgZmNfaG9zdCB3aXRoIHRoZSBzYW1lIFdXTnMgYW5kIHRlYXIgaXQgZG93bi4gIEVhY2ggV1dOCisgICAgICAgIGlzIHNwZWNpZmllZCBhcyAxNiBoZXggY2hhcmFjdGVycyBhbmQgbWF5ICpub3QqIGNvbnRhaW4gYW55IHByZWZpeGVzCisgICAgICAgIChlLmcuIDB4LCB4LCBldGMpLgorCisKK1Zwb3J0IFN0YXRlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBWcG9ydCBpbnN0YW50aWF0aW9uIGNvbnNpc3RzIG9mIHR3byBwYXJ0czoKKyAgICAtIENyZWF0aW9uIHdpdGggdGhlIGtlcm5lbCBhbmQgTExERC4gVGhpcyBtZWFucyBhbGwgdHJhbnNwb3J0IGFuZAorICAgICAgZHJpdmVyIGRhdGEgc3RydWN0dXJlcyBhcmUgYnVpbHQgdXAsIGFuZCBkZXZpY2Ugb2JqZWN0cyBjcmVhdGVkLgorICAgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGEgZHJpdmVyICJhdHRhY2giIG9uIGFuIGFkYXB0ZXIsIHdoaWNoIGlzCisgICAgICBpbmRlcGVuZGVudCBvZiB0aGUgYWRhcHRlcidzIGxpbmsgc3RhdGUuCisgICAgLSBJbnN0YW50aWF0aW9uIG9mIHRoZSB2cG9ydCBvbiB0aGUgRkMgbGluayB2aWEgRUxTIHRyYWZmaWMsIGV0Yy4KKyAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBhICJsaW5rIHVwIiBhbmQgc3VjY2Vzc2Z1bCBsaW5rIGluaXRpYWxpemF0aW9uLgorICBGdXJ0aGVyIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUgaW50ZXJmYWNlcyBzZWN0aW9uIGJlbG93IGZvcgorICBWcG9ydCBDcmVhdGlvbi4KKworICBPbmNlIGEgdnBvcnQgaGFzIGJlZW4gaW5zdGFudGlhdGVkIHdpdGggdGhlIGtlcm5lbC9MTERELCBhIHZwb3J0IHN0YXRlCisgIGNhbiBiZSByZXBvcnRlZCB2aWEgdGhlIHN5c2ZzIGF0dHJpYnV0ZS4gVGhlIGZvbGxvd2luZyBzdGF0ZXMgZXhpc3Q6CisKKyAgICBGQ19WUE9SVF9VTktOT1dOICAgICAgICAgICAgLSBVbmtub3duCisgICAgICBBbiB0ZW1wb3Jhcnkgc3RhdGUsIHR5cGljYWxseSBzZXQgb25seSB3aGlsZSB0aGUgdnBvcnQgaXMgYmVpbmcKKyAgICAgIGluc3RhbnRpYXRlZCB3aXRoIHRoZSBrZXJuZWwgYW5kIExMREQuCisKKyAgICBGQ19WUE9SVF9BQ1RJVkUgICAgICAgICAgICAgLSBBY3RpdmUKKyAgICAgIFRoZSB2cG9ydCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgYmVlbiBjcmVhdGVkIG9uIHRoZSBGQyBsaW5rLgorICAgICAgSXQgaXMgZnVsbHkgZnVuY3Rpb25hbC4KKworICAgIEZDX1ZQT1JUX0RJU0FCTEVEICAgICAgICAgICAtIERpc2FibGVkCisgICAgICBUaGUgdnBvcnQgaW5zdGFudGlhdGVkLCBidXQgImRpc2FibGVkIi4gVGhlIHZwb3J0IGlzIG5vdCBpbnN0YW50aWF0ZWQKKyAgICAgIG9uIHRoZSBGQyBsaW5rLiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYSBwaHlzaWNhbCBwb3J0IHdpdGggdGhlCisgICAgICBsaW5rICJkb3duIi4KKworICAgIEZDX1ZQT1JUX0xJTktET1dOICAgICAgICAgICAtIExpbmtkb3duCisgICAgICBUaGUgdnBvcnQgaXMgbm90IG9wZXJhdGlvbmFsIGFzIHRoZSBwaHlzaWNhbCBsaW5rIGlzIG5vdCBvcGVyYXRpb25hbC4KKworICAgIEZDX1ZQT1JUX0lOSVRJQUxJWklORyAgICAgICAtIEluaXRpYWxpemluZworICAgICAgVGhlIHZwb3J0IGlzIGluIHRoZSBwcm9jZXNzIG9mIGluc3RhbnRpYXRpbmcgb24gdGhlIEZDIGxpbmsuCisgICAgICBUaGUgTExERCB3aWxsIHNldCB0aGlzIHN0YXRlIGp1c3QgcHJpb3IgdG8gc3RhcnRpbmcgdGhlIEVMUyB0cmFmZmljCisgICAgICB0byBjcmVhdGUgdGhlIHZwb3J0LiBUaGlzIHN0YXRlIHdpbGwgcGVyc2lzdCB1bnRpbCB0aGUgdnBvcnQgaXMKKyAgICAgIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIChzdGF0ZSBiZWNvbWVzIEZDX1ZQT1JUX0FDVElWRSkgb3IgaXQgZmFpbHMKKyAgICAgIChzdGF0ZSBpcyBvbmUgb2YgdGhlIHZhbHVlcyBiZWxvdykuICBBcyB0aGlzIHN0YXRlIGlzIHRyYW5zaXRvcnksCisgICAgICBpdCB3aWxsIG5vdCBiZSBwcmVzZXJ2ZWQgaW4gdGhlICJ2cG9ydF9sYXN0X3N0YXRlIi4KKworICAgIEZDX1ZQT1JUX05PX0ZBQlJJQ19TVVBQICAgICAtIE5vIEZhYnJpYyBTdXBwb3J0CisgICAgICBUaGUgdnBvcnQgaXMgbm90IG9wZXJhdGlvbmFsLiBPbmUgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIHdlcmUKKyAgICAgIGVuY291bnRlcmVkOgorICAgICAgIC0gVGhlIEZDIHRvcG9sb2d5IGlzIG5vdCBQb2ludC10by1Qb2ludAorICAgICAgIC0gVGhlIEZDIHBvcnQgaXMgbm90IGNvbm5lY3RlZCB0byBhbiBGX1BvcnQKKyAgICAgICAtIFRoZSBGX1BvcnQgaGFzIGluZGljYXRlZCB0aGF0IE5QSVYgaXMgbm90IHN1cHBvcnRlZC4KKworICAgIEZDX1ZQT1JUX05PX0ZBQlJJQ19SU0NTICAgICAtIE5vIEZhYnJpYyBSZXNvdXJjZXMKKyAgICAgIFRoZSB2cG9ydCBpcyBub3Qgb3BlcmF0aW9uYWwuIFRoZSBGYWJyaWMgZmFpbGVkIEZESVNDIHdpdGggYSBzdGF0dXMKKyAgICAgIGluZGljYXRpbmcgdGhhdCBpdCBkb2VzIG5vdCBoYXZlIHN1ZmZpY2llbnQgcmVzb3VyY2VzIHRvIGNvbXBsZXRlCisgICAgICB0aGUgb3BlcmF0aW9uLgorCisgICAgRkNfVlBPUlRfRkFCUklDX0xPR09VVCAgICAgIC0gRmFicmljIExvZ291dAorICAgICAgVGhlIHZwb3J0IGlzIG5vdCBvcGVyYXRpb25hbC4gVGhlIEZhYnJpYyBoYXMgTE9HTydkIHRoZSBOX1BvcnRfSUQKKyAgICAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgdnBvcnQuCisKKyAgICBGQ19WUE9SVF9GQUJSSUNfUkVKX1dXTiAgICAgLSBGYWJyaWMgUmVqZWN0ZWQgV1dOCisgICAgICBUaGUgdnBvcnQgaXMgbm90IG9wZXJhdGlvbmFsLiBUaGUgRmFicmljIGZhaWxlZCBGRElTQyB3aXRoIGEgc3RhdHVzCisgICAgICBpbmRpY2F0aW5nIHRoYXQgdGhlIFdXTidzIGFyZSBub3QgdmFsaWQuCisKKyAgICBGQ19WUE9SVF9GQUlMRUQgICAgICAgICAgICAgLSBWUG9ydCBGYWlsZWQKKyAgICAgIFRoZSB2cG9ydCBpcyBub3Qgb3BlcmF0aW9uYWwuIFRoaXMgaXMgYSBjYXRjaGFsbCBmb3IgYWxsIG90aGVyCisgICAgICBlcnJvciBjb25kaXRpb25zLgorCisKKyAgVGhlIGZvbGxvd2luZyBzdGF0ZSB0YWJsZSBpbmRpY2F0ZXMgdGhlIGRpZmZlcmVudCBzdGF0ZSB0cmFuc2l0aW9uczoKKworICAgIFN0YXRlICAgICAgICAgICAgICBFdmVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXcgU3RhdGUKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICBuL2EgICAgICAgICAgICAgICAgSW5pdGlhbGl6YXRpb24gICAgICAgICAgICAgICAgICBVbmtub3duCisgICAgVW5rbm93bjogICAgICAgICAgICBMaW5rIERvd24gICAgICAgICAgICAgICAgICAgICAgIExpbmtkb3duCisgICAgICAgICAgICAgICAgICAgICAgICBMaW5rIFVwICYgTG9vcCAgICAgICAgICAgICAgICAgIE5vIEZhYnJpYyBTdXBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICBMaW5rIFVwICYgbm8gRmFicmljICAgICAgICAgICAgIE5vIEZhYnJpYyBTdXBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICBMaW5rIFVwICYgRkxPR0kgcmVzcG9uc2UgICAgICAgIE5vIEZhYnJpYyBTdXBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRlcyBubyBOUElWIHN1cHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgVXAgJiBGRElTQyBiZWluZyBzZW50ICAgICAgSW5pdGlhbGl6aW5nCisgICAgICAgICAgICAgICAgICAgICAgICBEaXNhYmxlIHJlcXVlc3QgICAgICAgICAgICAgICAgIERpc2FibGUKKyAgICBMaW5rZG93bjogICAgICAgICAgIExpbmsgVXAgICAgICAgICAgICAgICAgICAgICAgICAgVW5rbm93bgorICAgIEluaXRpYWxpemluZzogICAgICAgRkRJU0MgQUNDICAgICAgICAgICAgICAgICAgICAgICBBY3RpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgIEZESVNDIExTX1JKVCB3LyBubyByZXNvdXJjZXMgICAgTm8gRmFicmljIFJlc291cmNlcworICAgICAgICAgICAgICAgICAgICAgICAgRkRJU0MgTFNfUkpUIHcvIGludmFsaWQgICAgICAgICBGYWJyaWMgUmVqZWN0ZWQgV1dOCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBuYW1lIG9yIGludmFsaWQgbnBvcnRfaWQKKyAgICAgICAgICAgICAgICAgICAgICAgIEZESVNDIExTX1JKVCBmYWlsZWQgZm9yICAgICAgICAgVnBvcnQgRmFpbGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyIHJlYXNvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgRG93biAgICAgICAgICAgICAgICAgICAgICAgTGlua2Rvd24KKyAgICAgICAgICAgICAgICAgICAgICAgIERpc2FibGUgcmVxdWVzdCAgICAgICAgICAgICAgICAgRGlzYWJsZQorICAgIERpc2FibGU6ICAgICAgICAgICAgRW5hYmxlIHJlcXVlc3QgICAgICAgICAgICAgICAgICBVbmtub3duCisgICAgQWN0aXZlOiAgICAgICAgICAgICBMT0dPIHJlY2VpdmVkIGZyb20gZmFicmljICAgICAgIEZhYnJpYyBMb2dvdXQKKyAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgRG93biAgICAgICAgICAgICAgICAgICAgICAgTGlua2Rvd24KKyAgICAgICAgICAgICAgICAgICAgICAgIERpc2FibGUgcmVxdWVzdCAgICAgICAgICAgICAgICAgRGlzYWJsZQorICAgIEZhYnJpYyBMb2dvdXQ6ICAgICAgTGluayBzdGlsbCB1cCAgICAgICAgICAgICAgICAgICBVbmtub3duCisKKyAgICAgICAgIFRoZSBmb2xsb3dpbmcgNCBlcnJvciBzdGF0ZXMgYWxsIGhhdmUgdGhlIHNhbWUgdHJhbnNpdGlvbnM6CisgICAgTm8gRmFicmljIFN1cHBvcnQ6CisgICAgTm8gRmFicmljIFJlc291cmNlczoKKyAgICBGYWJyaWMgUmVqZWN0ZWQgV1dOOgorICAgIFZwb3J0IEZhaWxlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIERpc2FibGUgcmVxdWVzdCAgICAgICAgICAgICAgICAgRGlzYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgTGluayBnb2VzIGRvd24gICAgICAgICAgICAgICAgICBMaW5rZG93bgorCisKK1RyYW5zcG9ydCA8LT4gTExERCBJbnRlcmZhY2VzIDoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVnBvcnQgc3VwcG9ydCBieSBMTEREOgorCisgIFRoZSBMTEREIGluZGljYXRlcyBzdXBwb3J0IGZvciB2cG9ydHMgYnkgc3VwcGx5aW5nIGEgdnBvcnRfY3JlYXRlKCkKKyAgZnVuY3Rpb24gaW4gdGhlIHRyYW5zcG9ydCB0ZW1wbGF0ZS4gIFRoZSBwcmVzZW5jZSBvZiB0aGlzIGZ1bmN0aW9uIHdpbGwKKyAgY2F1c2UgdGhlIGNyZWF0aW9uIG9mIHRoZSBuZXcgYXR0cmlidXRlcyBvbiB0aGUgZmNfaG9zdC4gIEFzIHBhcnQgb2YKKyAgdGhlIHBoeXNpY2FsIHBvcnQgY29tcGxldGluZyBpdHMgaW5pdGlhbGl6YXRpb24gcmVsYXRpdmUgdG8gdGhlCisgIHRyYW5zcG9ydCwgaXQgc2hvdWxkIHNldCB0aGUgbWF4X25waXZfdnBvcnRzIGF0dHJpYnV0ZSB0byBpbmRpY2F0ZSB0aGUKKyAgbWF4aW11bSBudW1iZXIgb2YgdnBvcnRzIHRoZSBkcml2ZXIgYW5kL29yIGFkYXB0ZXIgc3VwcG9ydHMuCisKKworVnBvcnQgQ3JlYXRpb246CisKKyAgVGhlIExMREQgdnBvcnRfY3JlYXRlKCkgc3ludGF4IGlzOgorCisgICAgICBpbnQgdnBvcnRfY3JlYXRlKHN0cnVjdCBmY192cG9ydCAqdnBvcnQsIGJvb2wgZGlzYWJsZSkKKworICAgIHdoZXJlOgorICAgICAgdnBvcnQ6ICAgIElzIHRoZSBuZXdseSBhbGxvY2F0ZWQgdnBvcnQgb2JqZWN0CisgICAgICBkaXNhYmxlOiAgSWYgInRydWUiLCB0aGUgdnBvcnQgaXMgdG8gYmUgY3JlYXRlZCBpbiBhIGRpc2FibGVkIHN0YXRlZC4KKyAgICAgICAgICAgICAgICBJZiAiZmFsc2UiLCB0aGUgdnBvcnQgaXMgdG8gYmUgZW5hYmxlZCB1cG9uIGNyZWF0aW9uLgorCisgIFdoZW4gYSByZXF1ZXN0IGlzIG1hZGUgdG8gY3JlYXRlIGEgbmV3IHZwb3J0ICh2aWEgc2dpby9uZXRsaW5rLCBvciB0aGUKKyAgdnBvcnRfY3JlYXRlIGZjX2hvc3QgYXR0cmlidXRlKSwgdGhlIHRyYW5zcG9ydCB3aWxsIHZhbGlkYXRlIHRoYXQgdGhlIExMREQKKyAgY2FuIHN1cHBvcnQgYW5vdGhlciB2cG9ydCAoZS5nLiBtYXhfbnBpdl92cG9ydHMgPiBucGl2X3Zwb3J0c19pbnVzZSkuCisgIElmIG5vdCwgdGhlIGNyZWF0ZSByZXF1ZXN0IHdpbGwgYmUgZmFpbGVkLiAgSWYgc3BhY2UgcmVtYWlucywgdGhlIHRyYW5zcG9ydAorICB3aWxsIGluY3JlbWVudCB0aGUgdnBvcnQgY291bnQsIGNyZWF0ZSB0aGUgdnBvcnQgb2JqZWN0LCBhbmQgdGhlbiBjYWxsIHRoZQorICBMTEREJ3MgdnBvcnRfY3JlYXRlKCkgZnVuY3Rpb24gd2l0aCB0aGUgbmV3bHkgYWxsb2NhdGVkIHZwb3J0IG9iamVjdC4KKworICBBcyBtZW50aW9uZWQgYWJvdmUsIHZwb3J0IGNyZWF0aW9uIGlzIGRpdmlkZWQgaW50byB0d28gcGFydHM6CisgICAgLSBDcmVhdGlvbiB3aXRoIHRoZSBrZXJuZWwgYW5kIExMREQuIFRoaXMgbWVhbnMgYWxsIHRyYW5zcG9ydCBhbmQKKyAgICAgIGRyaXZlciBkYXRhIHN0cnVjdHVyZXMgYXJlIGJ1aWx0IHVwLCBhbmQgZGV2aWNlIG9iamVjdHMgY3JlYXRlZC4KKyAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBhIGRyaXZlciAiYXR0YWNoIiBvbiBhbiBhZGFwdGVyLCB3aGljaCBpcworICAgICAgaW5kZXBlbmRlbnQgb2YgdGhlIGFkYXB0ZXIncyBsaW5rIHN0YXRlLgorICAgIC0gSW5zdGFudGlhdGlvbiBvZiB0aGUgdnBvcnQgb24gdGhlIEZDIGxpbmsgdmlhIEVMUyB0cmFmZmljLCBldGMuCisgICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYSAibGluayB1cCIgYW5kIHN1Y2Nlc3NmdWwgbGluayBpbml0aWFsaXphdGlvbi4KKworICBUaGUgTExERCdzIHZwb3J0X2NyZWF0ZSgpIGZ1bmN0aW9uIHdpbGwgbm90IHN5bmNocm9ub3VzbHkgd2FpdCBmb3IgYm90aAorICBwYXJ0cyB0byBiZSBmdWxseSBjb21wbGV0ZWQgYmVmb3JlIHJldHVybmluZy4gSXQgbXVzdCB2YWxpZGF0ZSB0aGF0IHRoZQorICBpbmZyYXN0cnVjdHVyZSBleGlzdHMgdG8gc3VwcG9ydCBOUElWLCBhbmQgY29tcGxldGUgdGhlIGZpcnN0IHBhcnQgb2YKKyAgdnBvcnQgY3JlYXRpb24gKGRhdGEgc3RydWN0dXJlIGJ1aWxkIHVwKSBiZWZvcmUgcmV0dXJuaW5nLiAgV2UgZG8gbm90CisgIGhpbmdlIHZwb3J0X2NyZWF0ZSgpIG9uIHRoZSBsaW5rLXNpZGUgb3BlcmF0aW9uIG1haW5seSBiZWNhdXNlOgorICAgIC0gVGhlIGxpbmsgbWF5IGJlIGRvd24uIEl0IGlzIG5vdCBhIGZhaWx1cmUgaWYgaXQgaXMuIEl0IHNpbXBseQorICAgICAgbWVhbnMgdGhlIHZwb3J0IGlzIGluIGFuIGlub3BlcmFibGUgc3RhdGUgdW50aWwgdGhlIGxpbmsgY29tZXMgdXAuCisgICAgICBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgbGluayBib3VuY2luZyBwb3N0IHZwb3J0IGNyZWF0aW9uLgorICAgIC0gVGhlIHZwb3J0IG1heSBiZSBjcmVhdGVkIGluIGEgZGlzYWJsZWQgc3RhdGUuCisgICAgLSBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCBhIG1vZGVsIHdoZXJlOiAgdGhlIHZwb3J0IGVxdWF0ZXMgdG8gYQorICAgICAgRkMgYWRhcHRlci4gVGhlIHZwb3J0X2NyZWF0ZSBpcyBzeW5vbnltb3VzIHdpdGggZHJpdmVyIGF0dGFjaG1lbnQKKyAgICAgIHRvIHRoZSBhZGFwdGVyLCB3aGljaCBpcyBpbmRlcGVuZGVudCBvZiBsaW5rIHN0YXRlLgorCisgICAgTm90ZTogc3BlY2lhbCBlcnJvciBjb2RlcyBoYXZlIGJlZW4gZGVmaW5lZCB0byBkZWxpbmVhdGUgaW5mcmFzdHJ1Y3R1cmUKKyAgICAgIGZhaWx1cmUgY2FzZXMgZm9yIHF1aWNrZXIgcmVzb2x1dGlvbi4KKworICBUaGUgZXhwZWN0ZWQgYmVoYXZpb3IgZm9yIHRoZSBMTEREJ3MgdnBvcnRfY3JlYXRlKCkgZnVuY3Rpb24gaXM6CisgICAgLSBWYWxpZGF0ZSBJbmZyYXN0cnVjdHVyZToKKyAgICAgICAgLSBJZiB0aGUgZHJpdmVyIG9yIGFkYXB0ZXIgY2Fubm90IHN1cHBvcnQgYW5vdGhlciB2cG9ydCwgd2hldGhlcgorICAgICAgICAgICAgZHVlIHRvIGltcHJvcGVyIGZpcm13YXJlLCAoYSBsaWUgYWJvdXQpIG1heF9ucGl2LCBvciBhIGxhY2sgb2YKKyAgICAgICAgICAgIHNvbWUgb3RoZXIgcmVzb3VyY2UgLSByZXR1cm4gVlBDRVJSX1VOU1VQUE9SVEVELgorICAgICAgICAtIElmIHRoZSBkcml2ZXIgdmFsaWRhdGVzIHRoZSBXV04ncyBhZ2FpbnN0IHRob3NlIGFscmVhZHkgYWN0aXZlIG9uCisgICAgICAgICAgICB0aGUgYWRhcHRlciBhbmQgZGV0ZWN0cyBhbiBvdmVybGFwIC0gcmV0dXJuIFZQQ0VSUl9CQURfV1dOLgorICAgICAgICAtIElmIHRoZSBkcml2ZXIgZGV0ZWN0cyB0aGUgdG9wb2xvZ3kgaXMgbG9vcCwgbm9uLWZhYnJpYywgb3IgdGhlCisgICAgICAgICAgICBGTE9HSSBkaWQgbm90IHN1cHBvcnQgTlBJViAtIHJldHVybiBWUENFUlJfTk9fRkFCUklDX1NVUFAuCisgICAgLSBBbGxvY2F0ZSBkYXRhIHN0cnVjdHVyZXMuIElmIGVycm9ycyBhcmUgZW5jb3VudGVyZWQsIHN1Y2ggYXMgb3V0CisgICAgICAgIG9mIG1lbW9yeSBjb25kaXRpb25zLCByZXR1cm4gdGhlIHJlc3BlY3RpdmUgbmVnYXRpdmUgRXh4eCBlcnJvciBjb2RlLgorICAgIC0gSWYgdGhlIHJvbGUgaXMgRkNQIEluaXRpYXRvciwgdGhlIExMREQgaXMgdG8gOgorICAgICAgICAtIENhbGwgc2NzaV9ob3N0X2FsbG9jKCkgdG8gYWxsb2NhdGUgYSBzY3NpX2hvc3QgZm9yIHRoZSB2cG9ydC4KKyAgICAgICAgLSBDYWxsIHNjc2lfYWRkX2hvc3QobmV3X3Nob3N0LCAmdnBvcnQtPmRldikgdG8gc3RhcnQgdGhlIHNjc2lfaG9zdAorICAgICAgICAgIGFuZCBiaW5kIGl0IGFzIGEgY2hpbGQgb2YgdGhlIHZwb3J0IGRldmljZS4KKyAgICAgICAgLSBJbml0aWFsaXplcyB0aGUgZmNfaG9zdCBhdHRyaWJ1dGUgdmFsdWVzLgorICAgIC0gS2ljayBvZiBmdXJ0aGVyIHZwb3J0IHN0YXRlIHRyYW5zaXRpb25zIGJhc2VkIG9uIHRoZSBkaXNhYmxlIGZsYWcgYW5kCisgICAgICAgIGxpbmsgc3RhdGUgLSBhbmQgcmV0dXJuIHN1Y2Nlc3MgKHplcm8pLgorCisgIExMREQgSW1wbGVtZW50ZXJzIE5vdGVzOgorICAtIEl0IGlzIHN1Z2dlc3RlZCB0aGF0IHRoZXJlIGJlIGEgZGlmZmVyZW50IGZjX2Z1bmN0aW9uX3RlbXBsYXRlcyBmb3IKKyAgICB0aGUgcGh5c2ljYWwgcG9ydCBhbmQgdGhlIHZpcnR1YWwgcG9ydC4gIFRoZSBwaHlzaWNhbCBwb3J0J3MgdGVtcGxhdGUKKyAgICB3b3VsZCBoYXZlIHRoZSB2cG9ydF9jcmVhdGUsIHZwb3J0X2RlbGV0ZSwgYW5kIHZwb3J0X2Rpc2FibGUgZnVuY3Rpb25zLAorICAgIHdoaWxlIHRoZSB2cG9ydHMgd291bGQgbm90LgorICAtIEl0IGlzIHN1Z2dlc3RlZCB0aGF0IHRoZXJlIGJlIGRpZmZlcmVudCBzY3NpX2hvc3RfdGVtcGxhdGVzCisgICAgZm9yIHRoZSBwaHlzaWNhbCBwb3J0IGFuZCB2aXJ0dWFsIHBvcnQuIExpa2VseSwgdGhlcmUgYXJlIGRyaXZlcgorICAgIGF0dHJpYnV0ZXMsIGVtYmVkZGVkIGludG8gdGhlIHNjc2lfaG9zdF90ZW1wbGF0ZSwgdGhhdCBhcmUgYXBwbGljYWJsZQorICAgIGZvciB0aGUgcGh5c2ljYWwgcG9ydCBvbmx5IChsaW5rIHNwZWVkLCB0b3BvbG9neSBzZXR0aW5nLCBldGMpLiBUaGlzCisgICAgZW5zdXJlcyB0aGF0IHRoZSBhdHRyaWJ1dGVzIGFyZSBhcHBsaWNhYmxlIHRvIHRoZSByZXNwZWN0aXZlIHNjc2lfaG9zdC4KKworCitWcG9ydCBEaXNhYmxlL0VuYWJsZToKKworICBUaGUgTExERCB2cG9ydF9kaXNhYmxlKCkgc3ludGF4IGlzOgorCisgICAgICBpbnQgdnBvcnRfZGlzYWJsZShzdHJ1Y3QgZmNfdnBvcnQgKnZwb3J0LCBib29sIGRpc2FibGUpCisKKyAgICB3aGVyZToKKyAgICAgIHZwb3J0OiAgICBJcyB2cG9ydCB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkCisgICAgICBkaXNhYmxlOiAgSWYgInRydWUiLCB0aGUgdnBvcnQgaXMgdG8gYmUgZGlzYWJsZWQuCisgICAgICAgICAgICAgICAgSWYgImZhbHNlIiwgdGhlIHZwb3J0IGlzIHRvIGJlIGVuYWJsZWQuCisKKyAgV2hlbiBhIHJlcXVlc3QgaXMgbWFkZSB0byBjaGFuZ2UgdGhlIGRpc2FibGVkIHN0YXRlIG9uIGEgdnBvcnQsIHRoZQorICB0cmFuc3BvcnQgd2lsbCB2YWxpZGF0ZSB0aGUgcmVxdWVzdCBhZ2FpbnN0IHRoZSBleGlzdGluZyB2cG9ydCBzdGF0ZS4KKyAgSWYgdGhlIHJlcXVlc3QgaXMgdG8gZGlzYWJsZSBhbmQgdGhlIHZwb3J0IGlzIGFscmVhZHkgZGlzYWJsZWQsIHRoZQorICByZXF1ZXN0IHdpbGwgZmFpbC4gU2ltaWxhcmx5LCBpZiB0aGUgcmVxdWVzdCBpcyB0byBlbmFibGUsIGFuZCB0aGUKKyAgdnBvcnQgaXMgbm90IGluIGEgZGlzYWJsZWQgc3RhdGUsIHRoZSByZXF1ZXN0IHdpbGwgZmFpbC4gIElmIHRoZSByZXF1ZXN0CisgIGlzIHZhbGlkIGZvciB0aGUgdnBvcnQgc3RhdGUsIHRoZSB0cmFuc3BvcnQgd2lsbCBjYWxsIHRoZSBMTEREIHRvCisgIGNoYW5nZSB0aGUgdnBvcnQncyBzdGF0ZS4KKworICBXaXRoaW4gdGhlIExMREQsIGlmIGEgdnBvcnQgaXMgZGlzYWJsZWQsIGl0IHJlbWFpbnMgaW5zdGFudGlhdGVkIHdpdGgKKyAgdGhlIGtlcm5lbCBhbmQgTExERCwgYnV0IGl0IGlzIG5vdCBhY3RpdmUgb3IgdmlzaWJsZSBvbiB0aGUgRkMgbGluayBpbgorICBhbnkgd2F5LiAoc2VlIFZwb3J0IENyZWF0aW9uIGFuZCB0aGUgMiBwYXJ0IGluc3RhbnRpYXRpb24gZGlzY3Vzc2lvbikuCisgIFRoZSB2cG9ydCB3aWxsIHJlbWFpbiBpbiB0aGlzIHN0YXRlIHVudGlsIGl0IGlzIGRlbGV0ZWQgb3IgcmUtZW5hYmxlZC4KKyAgV2hlbiBlbmFibGluZyBhIHZwb3J0LCB0aGUgTExERCByZWluc3RhbnRpYXRlcyB0aGUgdnBvcnQgb24gdGhlIEZDCisgIGxpbmsgLSBlc3NlbnRpYWxseSByZXN0YXJ0aW5nIHRoZSBMTEREIHN0YXRlbWFjaGluZSAoc2VlIFZwb3J0IFN0YXRlcworICBhYm92ZSkuCisKKworVnBvcnQgRGVsZXRpb246CisKKyAgVGhlIExMREQgdnBvcnRfZGVsZXRlKCkgc3ludGF4IGlzOgorCisgICAgICBpbnQgdnBvcnRfZGVsZXRlKHN0cnVjdCBmY192cG9ydCAqdnBvcnQpCisKKyAgICB3aGVyZToKKyAgICAgIHZwb3J0OiAgICBJcyB2cG9ydCB0byBkZWxldGUKKworICBXaGVuIGEgcmVxdWVzdCBpcyBtYWRlIHRvIGRlbGV0ZSBhIHZwb3J0ICh2aWEgc2dpby9uZXRsaW5rLCBvciB2aWEgdGhlCisgIGZjX2hvc3Qgb3IgZmNfdnBvcnQgdnBvcnRfZGVsZXRlIGF0dHJpYnV0ZXMpLCB0aGUgdHJhbnNwb3J0IHdpbGwgY2FsbAorICB0aGUgTExERCB0byB0ZXJtaW5hdGUgdGhlIHZwb3J0IG9uIHRoZSBGQyBsaW5rLCBhbmQgdGVhcmRvd24gYWxsIG90aGVyCisgIGRhdGFzdHJ1Y3R1cmVzIGFuZCByZWZlcmVuY2VzLiAgSWYgdGhlIExMREQgY29tcGxldGVzIHN1Y2Nlc3NmdWxseSwKKyAgdGhlIHRyYW5zcG9ydCB3aWxsIHRlYXJkb3duIHRoZSB2cG9ydCBvYmplY3RzIGFuZCBjb21wbGV0ZSB0aGUgdnBvcnQKKyAgcmVtb3ZhbC4gIElmIHRoZSBMTEREIGRlbGV0ZSByZXF1ZXN0IGZhaWxzLCB0aGUgdnBvcnQgb2JqZWN0IHdpbGwgcmVtYWluLAorICBidXQgd2lsbCBiZSBpbiBhbiBpbmRldGVybWluYXRlIHN0YXRlLgorCisgIFdpdGhpbiB0aGUgTExERCwgdGhlIG5vcm1hbCBjb2RlIHBhdGhzIGZvciBhIHNjc2lfaG9zdCB0ZWFyZG93biBzaG91bGQKKyAgYmUgZm9sbG93ZWQuIEUuZy4gSWYgdGhlIHZwb3J0IGhhcyBhIEZDUCBJbml0aWF0b3Igcm9sZSwgdGhlIExMREQKKyAgd2lsbCBjYWxsIGZjX3JlbW92ZV9ob3N0KCkgZm9yIHRoZSB2cG9ydHMgc2NzaV9ob3N0LCBmb2xsb3dlZCBieQorICBzY3NpX3JlbW92ZV9ob3N0KCkgYW5kIHNjc2lfaG9zdF9wdXQoKSBmb3IgdGhlIHZwb3J0cyBzY3NpX2hvc3QuCisKKworT3RoZXI6CisgIGZjX2hvc3QgcG9ydF90eXBlIGF0dHJpYnV0ZToKKyAgICBUaGVyZSBpcyBhIG5ldyBmY19ob3N0IHBvcnRfdHlwZSB2YWx1ZSAtIEZDX1BPUlRUWVBFX05QSVYuIFRoaXMgdmFsdWUKKyAgICBtdXN0IGJlIHNldCBvbiBhbGwgdnBvcnQtYmFzZWQgZmNfaG9zdHMuICBOb3JtYWxseSwgb24gYSBwaHlzaWNhbCBwb3J0LAorICAgIHRoZSBwb3J0X3R5cGUgYXR0cmlidXRlIHdvdWxkIGJlIHNldCB0byBOUE9SVCwgTkxQT1JULCBldGMgYmFzZWQgb24gdGhlCisgICAgdG9wb2xvZ3kgdHlwZSBhbmQgZXhpc3RlbmNlIG9mIHRoZSBmYWJyaWMuIEFzIHRoaXMgaXMgbm90IGFwcGxpY2FibGUgdG8KKyAgICBhIHZwb3J0LCBpdCBtYWtlcyBtb3JlIHNlbnNlIHRvIHJlcG9ydCB0aGUgRkMgbWVjaGFuaXNtIHVzZWQgdG8gY3JlYXRlCisgICAgdGhlIHZwb3J0LgorCisgIERyaXZlciB1bmxvYWQ6CisgICAgRkMgZHJpdmVycyBhcmUgcmVxdWlyZWQgdG8gY2FsbCBmY19yZW1vdmVfaG9zdCgpIHByaW9yIHRvIGNhbGxpbmcKKyAgICBzY3NpX3JlbW92ZV9ob3N0KCkuICBUaGlzIGFsbG93cyB0aGUgZmNfaG9zdCB0byB0ZWFyIGRvd24gYWxsIHJlbW90ZQorICAgIHBvcnRzIHByaW9yIHRoZSBzY3NpX2hvc3QgYmVpbmcgdG9ybiBkb3duLiAgVGhlIGZjX3JlbW92ZV9ob3N0KCkgY2FsbAorICAgIHdhcyB1cGRhdGVkIHRvIHJlbW92ZSBhbGwgdnBvcnRzIGZvciB0aGUgZmNfaG9zdCBhcyB3ZWxsLgorCisKK1RyYW5zcG9ydCBzdXBwbGllZCBmdW5jdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHN1cHBsaWVkIGJ5IHRoZSBGQy10cmFuc3BvcnQgZm9yIHVzZSBieSBMTERzLgorCisgICBmY192cG9ydF9jcmVhdGUgLSBjcmVhdGUgYSB2cG9ydAorICAgZmNfdnBvcnRfdGVybWluYXRlIC0gZGV0YWNoIGFuZCByZW1vdmUgYSB2cG9ydAorCitEZXRhaWxzOgorCisvKioKKyAqIGZjX3Zwb3J0X2NyZWF0ZSAtIEFkbWluIEFwcCBvciBMTEREIHJlcXVlc3RzIGNyZWF0aW9uIG9mIGEgdnBvcnQKKyAqIEBzaG9zdDogICAgIHNjc2kgaG9zdCB0aGUgdmlydHVhbCBwb3J0IGlzIGNvbm5lY3RlZCB0by4KKyAqIEBpZHM6ICAgICAgIFRoZSB3b3JsZCB3aWRlIG5hbWVzLCBGQzQgcG9ydCByb2xlcywgZXRjIGZvcgorICogICAgICAgICAgICAgIHRoZSB2aXJ0dWFsIHBvcnQuCisgKgorICogTm90ZXM6CisgKiAgICAgVGhpcyByb3V0aW5lIGFzc3VtZXMgbm8gbG9ja3MgYXJlIGhlbGQgb24gZW50cnkuCisgKi8KK3N0cnVjdCBmY192cG9ydCAqCitmY192cG9ydF9jcmVhdGUoc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QsIHN0cnVjdCBmY192cG9ydF9pZGVudGlmaWVycyAqaWRzKQorCisvKioKKyAqIGZjX3Zwb3J0X3Rlcm1pbmF0ZSAtIEFkbWluIEFwcCBvciBMTEREIHJlcXVlc3RzIHRlcm1pbmF0aW9uIG9mIGEgdnBvcnQKKyAqIEB2cG9ydDogICAgICBmY192cG9ydCB0byBiZSB0ZXJtaW5hdGVkCisgKgorICogQ2FsbHMgdGhlIExMREQgdnBvcnRfZGVsZXRlKCkgZnVuY3Rpb24sIHRoZW4gZGVhbGxvY2F0ZXMgYW5kIHJlbW92ZXMKKyAqIHRoZSB2cG9ydCBmcm9tIHRoZSBzaG9zdCBhbmQgb2JqZWN0IHRyZWUuCisgKgorICogTm90ZXM6CisgKiAgICAgIFRoaXMgcm91dGluZSBhc3N1bWVzIG5vIGxvY2tzIGFyZSBoZWxkIG9uIGVudHJ5LgorICovCitpbnQKK2ZjX3Zwb3J0X3Rlcm1pbmF0ZShzdHJ1Y3QgZmNfdnBvcnQgKnZwb3J0KQorCisKK0ZDIEJTRyBzdXBwb3J0IChDVCAmIEVMUyBwYXNzdGhydSwgYW5kIG1vcmUpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzw8IFRvIEJlIFN1cHBsaWVkID4+CisKKworCisKKworQ3JlZGl0cworPT09PT09PQorVGhlIGZvbGxvd2luZyBwZW9wbGUgaGF2ZSBjb250cmlidXRlZCB0byB0aGlzIGRvY3VtZW50OgorCisKKworCisKKworSmFtZXMgU21hcnQKK2phbWVzLnNtYXJ0QGVtdWxleC5jb20KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2lfbWlkX2xvd19hcGkudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2lfbWlkX2xvd19hcGkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NTA3NTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvc2NzaV9taWRfbG93X2FwaS50eHQKQEAgLTAsMCArMSwxNDAxIEBACisgICAgICAgICAgICAgICAgICAgICAgICAgIExpbnV4IEtlcm5lbCAyLjYgc2VyaWVzCisgICAgICAgICAgICAgICAgIFNDU0kgbWlkX2xldmVsIC0gbG93ZXJfbGV2ZWwgZHJpdmVyIGludGVyZmFjZQorICAgICAgICAgICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW50cm9kdWN0aW9uCis9PT09PT09PT09PT0KK1RoaXMgZG9jdW1lbnQgb3V0bGluZXMgdGhlIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBMaW51eCBTQ1NJIG1pZCBsZXZlbCBhbmQKK1NDU0kgbG93ZXIgbGV2ZWwgZHJpdmVycy4gTG93ZXIgbGV2ZWwgZHJpdmVycyAoTExEcykgYXJlIHZhcmlvdXNseSBjYWxsZWQgCitob3N0IGJ1cyBhZGFwdGVyIChIQkEpIGRyaXZlcnMgYW5kIGhvc3QgZHJpdmVycyAoSEQpLiBBICJob3N0IiBpbiB0aGlzCitjb250ZXh0IGlzIGEgYnJpZGdlIGJldHdlZW4gYSBjb21wdXRlciBJTyBidXMgKGUuZy4gUENJIG9yIElTQSkgYW5kIGEKK3NpbmdsZSBTQ1NJIGluaXRpYXRvciBwb3J0IG9uIGEgU0NTSSB0cmFuc3BvcnQuIEFuICJpbml0aWF0b3IiIHBvcnQKKyhTQ1NJIHRlcm1pbm9sb2d5LCBzZWUgU0FNLTMgYXQgaHR0cDovL3d3dy50MTAub3JnKSBzZW5kcyBTQ1NJIGNvbW1hbmRzCit0byAidGFyZ2V0IiBTQ1NJIHBvcnRzIChlLmcuIGRpc2tzKS4gVGhlcmUgY2FuIGJlIG1hbnkgTExEcyBpbiBhIHJ1bm5pbmcKK3N5c3RlbSwgYnV0IG9ubHkgb25lIHBlciBoYXJkd2FyZSB0eXBlLiBNb3N0IExMRHMgY2FuIGNvbnRyb2wgb25lIG9yIG1vcmUKK1NDU0kgSEJBcy4gU29tZSBIQkFzIGNvbnRhaW4gbXVsdGlwbGUgaG9zdHMuCisKK0luIHNvbWUgY2FzZXMgdGhlIFNDU0kgdHJhbnNwb3J0IGlzIGFuIGV4dGVybmFsIGJ1cyB0aGF0IGFscmVhZHkgaGFzCitpdHMgb3duIHN1YnN5c3RlbSBpbiBMaW51eCAoZS5nLiBVU0IgYW5kIGllZWUxMzk0KS4gSW4gc3VjaCBjYXNlcyB0aGUKK1NDU0kgc3Vic3lzdGVtIExMRCBpcyBhIHNvZnR3YXJlIGJyaWRnZSB0byB0aGUgb3RoZXIgZHJpdmVyIHN1YnN5c3RlbS4KK0V4YW1wbGVzIGFyZSB0aGUgdXNiLXN0b3JhZ2UgZHJpdmVyIChmb3VuZCBpbiB0aGUgZHJpdmVycy91c2Ivc3RvcmFnZQorZGlyZWN0b3J5KSBhbmQgdGhlIGllZWUxMzk0L3NicDIgZHJpdmVyIChmb3VuZCBpbiB0aGUgZHJpdmVycy9pZWVlMTM5NAorZGlyZWN0b3J5KS4KKworRm9yIGV4YW1wbGUsIHRoZSBhaWM3eHh4IExMRCBjb250cm9scyBBZGFwdGVjIFNDU0kgcGFyYWxsZWwgaW50ZXJmYWNlCisoU1BJKSBjb250cm9sbGVycyBiYXNlZCBvbiB0aGF0IGNvbXBhbnkncyA3eHh4IGNoaXAgc2VyaWVzLiBUaGUgYWljN3h4eAorTExEIGNhbiBiZSBidWlsdCBpbnRvIHRoZSBrZXJuZWwgb3IgbG9hZGVkIGFzIGEgbW9kdWxlLiBUaGVyZSBjYW4gb25seSBiZQorb25lIGFpYzd4eHggTExEIHJ1bm5pbmcgaW4gYSBMaW51eCBzeXN0ZW0gYnV0IGl0IG1heSBiZSBjb250cm9sbGluZyBtYW55IAorSEJBcy4gVGhlc2UgSEJBcyBtaWdodCBiZSBlaXRoZXIgb24gUENJIGRhdWdodGVyLWJvYXJkcyBvciBidWlsdCBpbnRvIAordGhlIG1vdGhlcmJvYXJkIChvciBib3RoKS4gU29tZSBhaWM3eHh4IGJhc2VkIEhCQXMgYXJlIGR1YWwgY29udHJvbGxlcnMKK2FuZCB0aHVzIHJlcHJlc2VudCB0d28gaG9zdHMuIExpa2UgbW9zdCBtb2Rlcm4gSEJBcywgZWFjaCBhaWM3eHh4IGhvc3QKK2hhcyBpdHMgb3duIFBDSSBkZXZpY2UgYWRkcmVzcy4gW1RoZSBvbmUtdG8tb25lIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4KK2EgU0NTSSBob3N0IGFuZCBhIFBDSSBkZXZpY2UgaXMgY29tbW9uIGJ1dCBub3QgcmVxdWlyZWQgKGUuZy4gd2l0aAorSVNBIGFkYXB0ZXJzKS5dCisKK1RoZSBTQ1NJIG1pZCBsZXZlbCBpc29sYXRlcyBhbiBMTEQgZnJvbSBvdGhlciBsYXllcnMgc3VjaCBhcyB0aGUgU0NTSQordXBwZXIgbGF5ZXIgZHJpdmVycyBhbmQgdGhlIGJsb2NrIGxheWVyLgorCitUaGlzIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50IHJvdWdobHkgbWF0Y2hlcyBsaW51eCBrZXJuZWwgdmVyc2lvbiAyLjYuOCAuCisKK0RvY3VtZW50YXRpb24KKz09PT09PT09PT09PT0KK1RoZXJlIGlzIGEgU0NTSSBkb2N1bWVudGF0aW9uIGRpcmVjdG9yeSB3aXRoaW4gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSwgCit0eXBpY2FsbHkgRG9jdW1lbnRhdGlvbi9zY3NpIC4gTW9zdCBkb2N1bWVudHMgYXJlIGluIHBsYWluCisoaS5lLiBBU0NJSSkgdGV4dC4gVGhpcyBmaWxlIGlzIG5hbWVkIHNjc2lfbWlkX2xvd19hcGkudHh0IGFuZCBjYW4gYmUgCitmb3VuZCBpbiB0aGF0IGRpcmVjdG9yeS4gQSBtb3JlIHJlY2VudCBjb3B5IG9mIHRoaXMgZG9jdW1lbnQgbWF5IGJlIGZvdW5kCithdCBodHRwOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDA3MDEwNzE4MzM1N3JuXzEvc2cudG9ycXVlLm5ldC9zY3NpLy4gCitNYW55IExMRHMgYXJlIGRvY3VtZW50ZWQgdGhlcmUgKGUuZy4gYWljN3h4eC50eHQpLiBUaGUgU0NTSSBtaWQtbGV2ZWwgaXMKK2JyaWVmbHkgZGVzY3JpYmVkIGluIHNjc2kudHh0IHdoaWNoIGNvbnRhaW5zIGEgdXJsIHRvIGEgZG9jdW1lbnQgCitkZXNjcmliaW5nIHRoZSBTQ1NJIHN1YnN5c3RlbSBpbiB0aGUgbGsgMi40IHNlcmllcy4gVHdvIHVwcGVyIGxldmVsIAorZHJpdmVycyBoYXZlIGRvY3VtZW50cyBpbiB0aGF0IGRpcmVjdG9yeTogc3QudHh0IChTQ1NJIHRhcGUgZHJpdmVyKSBhbmQgCitzY3NpLWdlbmVyaWMudHh0IChmb3IgdGhlIHNnIGRyaXZlcikuCisKK1NvbWUgZG9jdW1lbnRhdGlvbiAob3IgdXJscykgZm9yIExMRHMgbWF5IGJlIGZvdW5kIGluIHRoZSBDIHNvdXJjZSBjb2RlCitvciBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIEMgc291cmNlIGNvZGUuIEZvciBleGFtcGxlIHRvIGZpbmQgYSB1cmwKK2Fib3V0IHRoZSBVU0IgbWFzcyBzdG9yYWdlIGRyaXZlciBzZWUgdGhlIAorL3Vzci9zcmMvbGludXgvZHJpdmVycy91c2Ivc3RvcmFnZSBkaXJlY3RvcnkuCisKK0RyaXZlciBzdHJ1Y3R1cmUKKz09PT09PT09PT09PT09PT0KK1RyYWRpdGlvbmFsbHkgYW4gTExEIGZvciB0aGUgU0NTSSBzdWJzeXN0ZW0gaGFzIGJlZW4gYXQgbGVhc3QgdHdvIGZpbGVzIGluCit0aGUgZHJpdmVycy9zY3NpIGRpcmVjdG9yeS4gRm9yIGV4YW1wbGUsIGEgZHJpdmVyIGNhbGxlZCAieHl6IiBoYXMgYSBoZWFkZXIKK2ZpbGUgInh5ei5oIiBhbmQgYSBzb3VyY2UgZmlsZSAieHl6LmMiLiBbQWN0dWFsbHkgdGhlcmUgaXMgbm8gZ29vZCByZWFzb24KK3doeSB0aGlzIGNvdWxkbid0IGFsbCBiZSBpbiBvbmUgZmlsZTsgdGhlIGhlYWRlciBmaWxlIGlzIHN1cGVyZmx1b3VzLl0gU29tZQorZHJpdmVycyB0aGF0IGhhdmUgYmVlbiBwb3J0ZWQgdG8gc2V2ZXJhbCBvcGVyYXRpbmcgc3lzdGVtcyBoYXZlIG1vcmUgdGhhbgordHdvIGZpbGVzLiBGb3IgZXhhbXBsZSB0aGUgYWljN3h4eCBkcml2ZXIgaGFzIHNlcGFyYXRlIGZpbGVzIGZvciBnZW5lcmljIAorYW5kIE9TLXNwZWNpZmljIGNvZGUgKGUuZy4gRnJlZUJTRCBhbmQgTGludXgpLiBTdWNoIGRyaXZlcnMgdGVuZCB0byBoYXZlCit0aGVpciBvd24gZGlyZWN0b3J5IHVuZGVyIHRoZSBkcml2ZXJzL3Njc2kgZGlyZWN0b3J5LgorCitXaGVuIGEgbmV3IExMRCBpcyBiZWluZyBhZGRlZCB0byBMaW51eCwgdGhlIGZvbGxvd2luZyBmaWxlcyAoZm91bmQgaW4gdGhlCitkcml2ZXJzL3Njc2kgZGlyZWN0b3J5KSB3aWxsIG5lZWQgc29tZSBhdHRlbnRpb246IE1ha2VmaWxlIGFuZCBLY29uZmlnIC4KK0l0IGlzIHByb2JhYmx5IGJlc3QgdG8gc3R1ZHkgaG93IGV4aXN0aW5nIExMRHMgYXJlIG9yZ2FuaXplZC4KKworQXMgdGhlIDIuNSBzZXJpZXMgZGV2ZWxvcG1lbnQga2VybmVscyBldm9sdmUgaW50byB0aGUgMi42IHNlcmllcworcHJvZHVjdGlvbiBzZXJpZXMsIGNoYW5nZXMgYXJlIGJlaW5nIGludHJvZHVjZWQgaW50byB0aGlzIGludGVyZmFjZS4gQW4KK2V4YW1wbGUgb2YgdGhpcyBpcyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gY29kZSB3aGVyZSB0aGVyZSBhcmUgbm93IDIgbW9kZWxzCithdmFpbGFibGUuIFRoZSBvbGRlciBvbmUsIHNpbWlsYXIgdG8gd2hhdCB3YXMgZm91bmQgaW4gdGhlIGxrIDIuNCBzZXJpZXMsCitpcyBiYXNlZCBvbiBob3N0cyB0aGF0IGFyZSBkZXRlY3RlZCBhdCBIQkEgZHJpdmVyIGxvYWQgdGltZS4gVGhpcyB3aWxsIGJlCityZWZlcnJlZCB0byB0aGUgInBhc3NpdmUiIGluaXRpYWxpemF0aW9uIG1vZGVsLiBUaGUgbmV3ZXIgbW9kZWwgYWxsb3dzIEhCQXMKK3RvIGJlIGhvdCBwbHVnZ2VkIChhbmQgdW5wbHVnZ2VkKSBkdXJpbmcgdGhlIGxpZmV0aW1lIG9mIHRoZSBMTEQgYW5kIHdpbGwKK2JlIHJlZmVycmVkIHRvIGFzIHRoZSAiaG90cGx1ZyIgaW5pdGlhbGl6YXRpb24gbW9kZWwuIFRoZSBuZXdlciBtb2RlbCBpcworcHJlZmVycmVkIGFzIGl0IGNhbiBoYW5kbGUgYm90aCB0cmFkaXRpb25hbCBTQ1NJIGVxdWlwbWVudCB0aGF0IGlzCitwZXJtYW5lbnRseSBjb25uZWN0ZWQgYXMgd2VsbCBhcyBtb2Rlcm4gIlNDU0kiIGRldmljZXMgKGUuZy4gVVNCIG9yCitJRUVFIDEzOTQgY29ubmVjdGVkIGRpZ2l0YWwgY2FtZXJhcykgdGhhdCBhcmUgaG90cGx1Z2dlZC4gQm90aCAKK2luaXRpYWxpemF0aW9uIG1vZGVscyBhcmUgZGlzY3Vzc2VkIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMuCisKK0FuIExMRCBpbnRlcmZhY2VzIHRvIHRoZSBTQ1NJIHN1YnN5c3RlbSBzZXZlcmFsIHdheXM6CisgIGEpIGRpcmVjdGx5IGludm9raW5nIGZ1bmN0aW9ucyBzdXBwbGllZCBieSB0aGUgbWlkIGxldmVsCisgIGIpIHBhc3NpbmcgYSBzZXQgb2YgZnVuY3Rpb24gcG9pbnRlcnMgdG8gYSByZWdpc3RyYXRpb24gZnVuY3Rpb24KKyAgICAgc3VwcGxpZWQgYnkgdGhlIG1pZCBsZXZlbC4gVGhlIG1pZCBsZXZlbCB3aWxsIHRoZW4gaW52b2tlIHRoZXNlCisgICAgIGZ1bmN0aW9ucyBhdCBzb21lIHBvaW50IGluIHRoZSBmdXR1cmUuIFRoZSBMTEQgd2lsbCBzdXBwbHkKKyAgICAgaW1wbGVtZW50YXRpb25zIG9mIHRoZXNlIGZ1bmN0aW9ucy4KKyAgYykgZGlyZWN0IGFjY2VzcyB0byBpbnN0YW5jZXMgb2Ygd2VsbCBrbm93biBkYXRhIHN0cnVjdHVyZXMgbWFpbnRhaW5lZAorICAgICBieSB0aGUgbWlkIGxldmVsCisKK1Rob3NlIGZ1bmN0aW9ucyBpbiBncm91cCBhKSBhcmUgbGlzdGVkIGluIGEgc2VjdGlvbiBlbnRpdGxlZCAiTWlkIGxldmVsCitzdXBwbGllZCBmdW5jdGlvbnMiIGJlbG93LgorCitUaG9zZSBmdW5jdGlvbnMgaW4gZ3JvdXAgYikgYXJlIGxpc3RlZCBpbiBhIHNlY3Rpb24gZW50aXRsZWQgIkludGVyZmFjZQorZnVuY3Rpb25zIiBiZWxvdy4gVGhlaXIgZnVuY3Rpb24gcG9pbnRlcnMgYXJlIHBsYWNlZCBpbiB0aGUgbWVtYmVycyBvZgorInN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUiLCBhbiBpbnN0YW5jZSBvZiB3aGljaCBpcyBwYXNzZWQgdG8KK3Njc2lfaG9zdF9hbGxvYygpICoqIC4gIFRob3NlIGludGVyZmFjZSBmdW5jdGlvbnMgdGhhdCB0aGUgTExEIGRvZXMgbm90IAord2lzaCB0byBzdXBwbHkgc2hvdWxkIGhhdmUgTlVMTCBwbGFjZWQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgbWVtYmVyIG9mIAorc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZS4gIERlZmluaW5nIGFuIGluc3RhbmNlIG9mIHN0cnVjdCAKK3Njc2lfaG9zdF90ZW1wbGF0ZSBhdCBmaWxlIHNjb3BlIHdpbGwgY2F1c2UgTlVMTCB0byBiZSAgcGxhY2VkIGluIGZ1bmN0aW9uCisgcG9pbnRlciBtZW1iZXJzIG5vdCBleHBsaWNpdGx5IGluaXRpYWxpemVkLgorCitUaG9zZSB1c2FnZXMgaW4gZ3JvdXAgYykgc2hvdWxkIGJlIGhhbmRsZWQgd2l0aCBjYXJlLCBlc3BlY2lhbGx5IGluIGEKKyJob3RwbHVnIiBlbnZpcm9ubWVudC4gTExEcyBzaG91bGQgYmUgYXdhcmUgb2YgdGhlIGxpZmV0aW1lIG9mIGluc3RhbmNlcwordGhhdCBhcmUgc2hhcmVkIHdpdGggdGhlIG1pZCBsZXZlbCBhbmQgb3RoZXIgbGF5ZXJzLgorCitBbGwgZnVuY3Rpb25zIGRlZmluZWQgd2l0aGluIGFuIExMRCBhbmQgYWxsIGRhdGEgZGVmaW5lZCBhdCBmaWxlIHNjb3BlCitzaG91bGQgYmUgc3RhdGljLiBGb3IgZXhhbXBsZSB0aGUgc2xhdmVfYWxsb2MoKSBmdW5jdGlvbiBpbiBhbiBMTEQKK2NhbGxlZCAieHh4IiBjb3VsZCBiZSBkZWZpbmVkIGFzIAorInN0YXRpYyBpbnQgeHh4X3NsYXZlX2FsbG9jKHN0cnVjdCBzY3NpX2RldmljZSAqIHNkZXYpIHsgLyogY29kZSAqLyB9IgorCisqKiB0aGUgc2NzaV9ob3N0X2FsbG9jKCkgZnVuY3Rpb24gaXMgYSByZXBsYWNlbWVudCBmb3IgdGhlIHJhdGhlciB2YWd1ZWx5CituYW1lZCBzY3NpX3JlZ2lzdGVyKCkgZnVuY3Rpb24gaW4gbW9zdCBzaXR1YXRpb25zLiBUaGUgc2NzaV9yZWdpc3RlcigpCithbmQgc2NzaV91bnJlZ2lzdGVyKCkgZnVuY3Rpb25zIHJlbWFpbiB0byBzdXBwb3J0IGxlZ2FjeSBMTERzIHRoYXQgdXNlCit0aGUgcGFzc2l2ZSBpbml0aWFsaXphdGlvbiBtb2RlbC4KKworCitIb3RwbHVnIGluaXRpYWxpemF0aW9uIG1vZGVsCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CitJbiB0aGlzIG1vZGVsIGFuIExMRCBjb250cm9scyB3aGVuIFNDU0kgaG9zdHMgYXJlIGludHJvZHVjZWQgYW5kIHJlbW92ZWQKK2Zyb20gdGhlIFNDU0kgc3Vic3lzdGVtLiBIb3N0cyBjYW4gYmUgaW50cm9kdWNlZCBhcyBlYXJseSBhcyBkcml2ZXIKK2luaXRpYWxpemF0aW9uIGFuZCByZW1vdmVkIGFzIGxhdGUgYXMgZHJpdmVyIHNodXRkb3duLiBUeXBpY2FsbHkgYSBkcml2ZXIKK3dpbGwgcmVzcG9uZCB0byBhIHN5c2ZzIHByb2JlKCkgY2FsbGJhY2sgdGhhdCBpbmRpY2F0ZXMgYW4gSEJBIGhhcyBiZWVuCitkZXRlY3RlZC4gQWZ0ZXIgY29uZmlybWluZyB0aGF0IHRoZSBuZXcgZGV2aWNlIGlzIG9uZSB0aGF0IHRoZSBMTEQgd2FudHMKK3RvIGNvbnRyb2wsIHRoZSBMTEQgd2lsbCBpbml0aWFsaXplIHRoZSBIQkEgYW5kIHRoZW4gcmVnaXN0ZXIgYSBuZXcgaG9zdAord2l0aCB0aGUgU0NTSSBtaWQgbGV2ZWwuCisKK0R1cmluZyBMTEQgaW5pdGlhbGl6YXRpb24gdGhlIGRyaXZlciBzaG91bGQgcmVnaXN0ZXIgaXRzZWxmIHdpdGggdGhlCithcHByb3ByaWF0ZSBJTyBidXMgb24gd2hpY2ggaXQgZXhwZWN0cyB0byBmaW5kIEhCQShzKSAoZS5nLiB0aGUgUENJIGJ1cykuCitUaGlzIGNhbiBwcm9iYWJseSBiZSBkb25lIHZpYSBzeXNmcy4gQW55IGRyaXZlciBwYXJhbWV0ZXJzIChlc3BlY2lhbGx5Cit0aG9zZSB0aGF0IGFyZSB3cml0YWJsZSBhZnRlciB0aGUgZHJpdmVyIGlzIGxvYWRlZCkgY291bGQgYWxzbyBiZQorcmVnaXN0ZXJlZCB3aXRoIHN5c2ZzIGF0IHRoaXMgcG9pbnQuIFRoZSBTQ1NJIG1pZCBsZXZlbCBmaXJzdCBiZWNvbWVzCithd2FyZSBvZiBhbiBMTEQgd2hlbiB0aGF0IExMRCByZWdpc3RlcnMgaXRzIGZpcnN0IEhCQS4KKworQXQgc29tZSBsYXRlciB0aW1lLCB0aGUgTExEIGJlY29tZXMgYXdhcmUgb2YgYW4gSEJBIGFuZCB3aGF0IGZvbGxvd3MKK2lzIGEgdHlwaWNhbCBzZXF1ZW5jZSBvZiBjYWxscyBiZXR3ZWVuIHRoZSBMTEQgYW5kIHRoZSBtaWQgbGV2ZWwuCitUaGlzIGV4YW1wbGUgc2hvd3MgdGhlIG1pZCBsZXZlbCBzY2FubmluZyB0aGUgbmV3bHkgaW50cm9kdWNlZCBIQkEgZm9yIDMgCitzY3NpIGRldmljZXMgb2Ygd2hpY2ggb25seSB0aGUgZmlyc3QgMiByZXNwb25kOgorCisgICAgIEhCQSBQUk9CRTogYXNzdW1lIDIgU0NTSSBkZXZpY2VzIGZvdW5kIGluIHNjYW4KK0xMRCAgICAgICAgICAgICAgICAgICBtaWQgbGV2ZWwgICAgICAgICAgICAgICAgICAgIExMRAorPT09LS0tLS0tLS0tLS0tLS0tLS0tLT09PT09PT09PS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09LS0tLS0tCitzY3NpX2hvc3RfYWxsb2MoKSAgLS0+CitzY3NpX2FkZF9ob3N0KCkgIC0tLS0+CitzY3NpX3NjYW5faG9zdCgpICAtLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgc2xhdmVfYWxsb2MoKQorICAgICAgICAgICAgICAgICAgICBzbGF2ZV9jb25maWd1cmUoKSAtLT4gIHNjc2lfY2hhbmdlX3F1ZXVlX2RlcHRoKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgIHNsYXZlX2FsbG9jKCkKKyAgICAgICAgICAgICAgICAgICAgc2xhdmVfY29uZmlndXJlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgIHNsYXZlX2FsbG9jKCkgICAqKioKKyAgICAgICAgICAgICAgICAgICAgc2xhdmVfZGVzdHJveSgpICoqKgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHRoZSBMTEQgd2FudHMgdG8gYWRqdXN0IHRoZSBkZWZhdWx0IHF1ZXVlIHNldHRpbmdzLCBpdCBjYW4gaW52b2tlCitzY3NpX2NoYW5nZV9xdWV1ZV9kZXB0aCgpIGluIGl0cyBzbGF2ZV9jb25maWd1cmUoKSByb3V0aW5lLgorCisqKiogRm9yIHNjc2kgZGV2aWNlcyB0aGF0IHRoZSBtaWQgbGV2ZWwgdHJpZXMgdG8gc2NhbiBidXQgZG8gbm90CisgICAgcmVzcG9uZCwgYSBzbGF2ZV9hbGxvYygpLCBzbGF2ZV9kZXN0cm95KCkgcGFpciBpcyBjYWxsZWQuCisKK1doZW4gYW4gSEJBIGlzIGJlaW5nIHJlbW92ZWQgaXQgY291bGQgYmUgYXMgcGFydCBvZiBhbiBvcmRlcmx5IHNodXRkb3duCithc3NvY2lhdGVkIHdpdGggdGhlIExMRCBtb2R1bGUgYmVpbmcgdW5sb2FkZWQgKGUuZy4gd2l0aCB0aGUgInJtbW9kIgorY29tbWFuZCkgb3IgaW4gcmVzcG9uc2UgdG8gYSAiaG90IHVucGx1ZyIgaW5kaWNhdGVkIGJ5IHN5c2ZzKCkncworcmVtb3ZlKCkgY2FsbGJhY2sgYmVpbmcgaW52b2tlZC4gSW4gZWl0aGVyIGNhc2UsIHRoZSBzZXF1ZW5jZSBpcyB0aGUKK3NhbWU6CisKKyAgICAgICAgSEJBIFJFTU9WRTogYXNzdW1lIDIgU0NTSSBkZXZpY2VzIGF0dGFjaGVkCitMTEQgICAgICAgICAgICAgICAgICAgICAgbWlkIGxldmVsICAgICAgICAgICAgICAgICBMTEQKKz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT09PT09PT0tLS0tLS0tLS0tLS0tLS0tLT09PS0tLS0tLQorc2NzaV9yZW1vdmVfaG9zdCgpIC0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICBzbGF2ZV9kZXN0cm95KCkKKyAgICAgICAgICAgICAgICAgICAgIHNsYXZlX2Rlc3Ryb3koKQorc2NzaV9ob3N0X3B1dCgpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgIAorSXQgbWF5IGJlIHVzZWZ1bCBmb3IgYSBMTEQgdG8ga2VlcCB0cmFjayBvZiBzdHJ1Y3QgU2NzaV9Ib3N0IGluc3RhbmNlcworKGEgcG9pbnRlciBpcyByZXR1cm5lZCBieSBzY3NpX2hvc3RfYWxsb2MoKSkuIFN1Y2ggaW5zdGFuY2VzIGFyZSAib3duZWQiCitieSB0aGUgbWlkLWxldmVsLiAgc3RydWN0IFNjc2lfSG9zdCBpbnN0YW5jZXMgYXJlIGZyZWVkIGZyb20KK3Njc2lfaG9zdF9wdXQoKSB3aGVuIHRoZSByZWZlcmVuY2UgY291bnQgaGl0cyB6ZXJvLgorCitIb3QgdW5wbHVnZ2luZyBhbiBIQkEgdGhhdCBjb250cm9scyBhIGRpc2sgd2hpY2ggaXMgcHJvY2Vzc2luZyBTQ1NJCitjb21tYW5kcyBvbiBhIG1vdW50ZWQgZmlsZSBzeXN0ZW0gaXMgYW4gaW50ZXJlc3Rpbmcgc2l0dWF0aW9uLiBSZWZlcmVuY2UKK2NvdW50aW5nIGxvZ2ljIGlzIGJlaW5nIGludHJvZHVjZWQgaW50byB0aGUgbWlkIGxldmVsIHRvIGNvcGUgd2l0aCBtYW55CitvZiB0aGUgaXNzdWVzIGludm9sdmVkLiBTZWUgdGhlIHNlY3Rpb24gb24gcmVmZXJlbmNlIGNvdW50aW5nIGJlbG93LgorCisKK1RoZSBob3RwbHVnIGNvbmNlcHQgbWF5IGJlIGV4dGVuZGVkIHRvIFNDU0kgZGV2aWNlcy4gQ3VycmVudGx5LCB3aGVuIGFuCitIQkEgaXMgYWRkZWQsIHRoZSBzY3NpX3NjYW5faG9zdCgpIGZ1bmN0aW9uIGNhdXNlcyBhIHNjYW4gZm9yIFNDU0kgZGV2aWNlcworYXR0YWNoZWQgdG8gdGhlIEhCQSdzIFNDU0kgdHJhbnNwb3J0LiBPbiBuZXdlciBTQ1NJIHRyYW5zcG9ydHMgdGhlIEhCQQorbWF5IGJlY29tZSBhd2FyZSBvZiBhIG5ldyBTQ1NJIGRldmljZSBfYWZ0ZXJfIHRoZSBzY2FuIGhhcyBjb21wbGV0ZWQuCitBbiBMTEQgY2FuIHVzZSB0aGlzIHNlcXVlbmNlIHRvIG1ha2UgdGhlIG1pZCBsZXZlbCBhd2FyZSBvZiBhIFNDU0kgZGV2aWNlOgorCisgICAgICAgICAgICAgICAgIFNDU0kgREVWSUNFIGhvdHBsdWcKK0xMRCAgICAgICAgICAgICAgICAgICBtaWQgbGV2ZWwgICAgICAgICAgICAgICAgICAgIExMRAorPT09LS0tLS0tLS0tLS0tLS0tLS0tLT09PT09PT09PS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09LS0tLS0tCitzY3NpX2FkZF9kZXZpY2UoKSAgLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgc2xhdmVfYWxsb2MoKQorICAgICAgICAgICAgICAgICAgICBzbGF2ZV9jb25maWd1cmUoKSAgIFstLT4gc2NzaV9jaGFuZ2VfcXVldWVfZGVwdGgoKV0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbiBhIHNpbWlsYXIgZmFzaGlvbiwgYW4gTExEIG1heSBiZWNvbWUgYXdhcmUgdGhhdCBhIFNDU0kgZGV2aWNlIGhhcyBiZWVuCityZW1vdmVkICh1bnBsdWdnZWQpIG9yIHRoZSBjb25uZWN0aW9uIHRvIGl0IGhhcyBiZWVuIGludGVycnVwdGVkLiBTb21lCitleGlzdGluZyBTQ1NJIHRyYW5zcG9ydHMgKGUuZy4gU1BJKSBtYXkgbm90IGJlY29tZSBhd2FyZSB0aGF0IGEgU0NTSQorZGV2aWNlIGhhcyBiZWVuIHJlbW92ZWQgdW50aWwgYSBzdWJzZXF1ZW50IFNDU0kgY29tbWFuZCBmYWlscyB3aGljaCB3aWxsCitwcm9iYWJseSBjYXVzZSB0aGF0IGRldmljZSB0byBiZSBzZXQgb2ZmbGluZSBieSB0aGUgbWlkIGxldmVsLiBBbiBMTEQgdGhhdAorZGV0ZWN0cyB0aGUgcmVtb3ZhbCBvZiBhIFNDU0kgZGV2aWNlIGNhbiBpbnN0aWdhdGUgaXRzIHJlbW92YWwgZnJvbQordXBwZXIgbGF5ZXJzIHdpdGggdGhpcyBzZXF1ZW5jZToKKworICAgICAgICAgICAgICAgICAgU0NTSSBERVZJQ0UgaG90IHVucGx1ZworTExEICAgICAgICAgICAgICAgICAgICAgIG1pZCBsZXZlbCAgICAgICAgICAgICAgICAgTExECis9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09PT09PT09LS0tLS0tLS0tLS0tLS0tLS09PT0tLS0tLS0KK3Njc2lfcmVtb3ZlX2RldmljZSgpIC0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgc2xhdmVfZGVzdHJveSgpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSXQgbWF5IGJlIHVzZWZ1bCBmb3IgYW4gTExEIHRvIGtlZXAgdHJhY2sgb2Ygc3RydWN0IHNjc2lfZGV2aWNlIGluc3RhbmNlcworKGEgcG9pbnRlciBpcyBwYXNzZWQgYXMgdGhlIHBhcmFtZXRlciB0byBzbGF2ZV9hbGxvYygpIGFuZAorc2xhdmVfY29uZmlndXJlKCkgY2FsbGJhY2tzKS4gU3VjaCBpbnN0YW5jZXMgYXJlICJvd25lZCIgYnkgdGhlIG1pZC1sZXZlbC4KK3N0cnVjdCBzY3NpX2RldmljZSBpbnN0YW5jZXMgYXJlIGZyZWVkIGFmdGVyIHNsYXZlX2Rlc3Ryb3koKS4KKworCitQYXNzaXZlIGluaXRpYWxpemF0aW9uIG1vZGVsCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CitUaGVzZSBvbGRlciBMTERzIGluY2x1ZGUgYSBmaWxlIGNhbGxlZCAic2NzaV9tb2R1bGUuYyIgW3llcyB0aGUgIi5jIiBpcyBhCitsaXR0bGUgc3VycHJpc2luZ10gaW4gdGhlaXIgc291cmNlIGNvZGUuIEZvciB0aGF0IGZpbGUgdG8gd29yayBhbgoraW5zdGFuY2Ugb2Ygc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSB3aXRoIHRoZSBuYW1lICJkcml2ZXJfdGVtcGxhdGUiCituZWVkcyB0byBiZSBkZWZpbmVkLiBIZXJlIGlzIGEgdHlwaWNhbCBjb2RlIHNlcXVlbmNlIHVzZWQgaW4gdGhpcyBtb2RlbDoKKyAgICBzdGF0aWMgc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSBkcml2ZXJfdGVtcGxhdGUgPSB7CisgICAgICAgIC4uLgorICAgIH07CisgICAgI2luY2x1ZGUgInNjc2lfbW9kdWxlLmMiCisKK1RoZSBzY3NpX21vZHVsZS5jIGZpbGUgY29udGFpbnMgdHdvIGZ1bmN0aW9uczoKKyAgLSBpbml0X3RoaXNfc2NzaV9kcml2ZXIoKSB3aGljaCBpcyBleGVjdXRlZCB3aGVuIHRoZSBMTEQgaXMKKyAgICBpbml0aWFsaXplZCAoaS5lLiBib290IHRpbWUgb3IgbW9kdWxlIGxvYWQgdGltZSkKKyAgLSBleGl0X3RoaXNfc2NzaV9kcml2ZXIoKSB3aGljaCBpcyBleGVjdXRlZCB3aGVuIHRoZSBMTEQgaXMgc2h1dAorICAgIGRvd24gKGkuZS4gbW9kdWxlIHVubG9hZCB0aW1lKQorTm90ZTogc2luY2UgdGhlc2UgZnVuY3Rpb25zIGFyZSB0YWdnZWQgd2l0aCBfX2luaXQgYW5kIF9fZXhpdCBxdWFsaWZpZXJzCithbiBMTEQgc2hvdWxkIG5vdCBjYWxsIHRoZW0gZXhwbGljaXRseSAoc2luY2UgdGhlIGtlcm5lbCBkb2VzIHRoYXQpLgorCitIZXJlIGlzIGFuIGV4YW1wbGUgb2YgYW4gaW5pdGlhbGl6YXRpb24gc2VxdWVuY2Ugd2hlbiB0d28gaG9zdHMgYXJlCitkZXRlY3RlZCAoc28gZGV0ZWN0KCkgcmV0dXJucyAyKSBhbmQgdGhlIFNDU0kgYnVzIHNjYW4gb24gZWFjaCBob3N0CitmaW5kcyAxIFNDU0kgZGV2aWNlIChhbmQgYSBzZWNvbmQgZGV2aWNlIGRvZXMgbm90IHJlc3BvbmQpLgorCitMTEQgICAgICAgICAgICAgICAgICAgICAgbWlkIGxldmVsICAgICAgICAgICAgICAgICBMTEQKKz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT09PT09PT0tLS0tLS0tLS0tLS0tLS0tLT09PS0tLS0tLQoraW5pdF90aGlzX3Njc2lfZHJpdmVyKCkgLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZWN0KCkgIC0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHNjc2lfcmVnaXN0ZXIoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgc2NzaV9yZWdpc3RlcigpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgIHNsYXZlX2FsbG9jKCkKKyAgICAgICAgICAgICAgICAgICAgICBzbGF2ZV9jb25maWd1cmUoKSAgLS0+ICBzY3NpX2NoYW5nZV9xdWV1ZV9kZXB0aCgpCisgICAgICAgICAgICAgICAgICAgICAgc2xhdmVfYWxsb2MoKSAgICoqKgorICAgICAgICAgICAgICAgICAgICAgIHNsYXZlX2Rlc3Ryb3koKSAqKioKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgc2xhdmVfYWxsb2MoKQorICAgICAgICAgICAgICAgICAgICAgIHNsYXZlX2NvbmZpZ3VyZSgpCisgICAgICAgICAgICAgICAgICAgICAgc2xhdmVfYWxsb2MoKSAgICoqKgorICAgICAgICAgICAgICAgICAgICAgIHNsYXZlX2Rlc3Ryb3koKSAqKioKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbWlkIGxldmVsIGludm9rZXMgc2NzaV9jaGFuZ2VfcXVldWVfZGVwdGgoKSB3aXRoICJjbWRfcGVyX2x1biIgZm9yIHRoYXQKK2hvc3QgYXMgdGhlIHF1ZXVlIGxlbmd0aC4gVGhlc2Ugc2V0dGluZ3MgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYQorc2xhdmVfY29uZmlndXJlKCkgc3VwcGxpZWQgYnkgdGhlIExMRC4KKworKioqIEZvciBzY3NpIGRldmljZXMgdGhhdCB0aGUgbWlkIGxldmVsIHRyaWVzIHRvIHNjYW4gYnV0IGRvIG5vdAorICAgIHJlc3BvbmQsIGEgc2xhdmVfYWxsb2MoKSwgc2xhdmVfZGVzdHJveSgpIHBhaXIgaXMgY2FsbGVkLgorCitIZXJlIGlzIGFuIExMRCBzaHV0ZG93biBzZXF1ZW5jZToKKworTExEICAgICAgICAgICAgICAgICAgICAgIG1pZCBsZXZlbCAgICAgICAgICAgICAgICAgTExECis9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09PT09PT09LS0tLS0tLS0tLS0tLS0tLS09PT0tLS0tLS0KK2V4aXRfdGhpc19zY3NpX2RyaXZlcigpIC0tLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgc2xhdmVfZGVzdHJveSgpCisgICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlKCkgICAtLT4gICBzY3NpX3VucmVnaXN0ZXIoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgIHNsYXZlX2Rlc3Ryb3koKQorICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZSgpICAgLS0+ICAgc2NzaV91bnJlZ2lzdGVyKCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbiBMTEQgbmVlZCBub3QgZGVmaW5lIHNsYXZlX2Rlc3Ryb3koKSAoaS5lLiBpdCBpcyBvcHRpb25hbCkuIAorCitUaGUgc2hvcnRjb21pbmcgb2YgdGhlICJwYXNzaXZlIGluaXRpYWxpemF0aW9uIG1vZGVsIiBpcyB0aGF0IGhvc3QKK3JlZ2lzdHJhdGlvbiBhbmQgZGUtcmVnaXN0cmF0aW9uIGFyZSAodHlwaWNhbGx5KSB0aWVkIHRvIExMRCBpbml0aWFsaXphdGlvbgorYW5kIHNodXRkb3duLiBPbmNlIHRoZSBMTEQgaXMgaW5pdGlhbGl6ZWQgdGhlbiBhIG5ldyBob3N0IHRoYXQgYXBwZWFycworKGUuZy4gdmlhIGhvdHBsdWdnaW5nKSBjYW5ub3QgZWFzaWx5IGJlIGFkZGVkIHdpdGhvdXQgYSByZWR1bmRhbnQKK2RyaXZlciBzaHV0ZG93biBhbmQgcmUtaW5pdGlhbGl6YXRpb24uIEl0IG1heSBiZSBwb3NzaWJsZSB0byB3cml0ZSBhbiBMTEQKK3RoYXQgdXNlcyBib3RoIGluaXRpYWxpemF0aW9uIG1vZGVscy4KKworCitSZWZlcmVuY2UgQ291bnRpbmcKKz09PT09PT09PT09PT09PT09PQorVGhlIFNjc2lfSG9zdCBzdHJ1Y3R1cmUgaGFzIGhhZCByZWZlcmVuY2UgY291bnRpbmcgaW5mcmFzdHJ1Y3R1cmUgYWRkZWQuCitUaGlzIGVmZmVjdGl2ZWx5IHNwcmVhZHMgdGhlIG93bmVyc2hpcCBvZiBzdHJ1Y3QgU2NzaV9Ib3N0IGluc3RhbmNlcworYWNyb3NzIHRoZSB2YXJpb3VzIFNDU0kgbGF5ZXJzIHdoaWNoIHVzZSB0aGVtLiBQcmV2aW91c2x5IHN1Y2ggaW5zdGFuY2VzCit3ZXJlIGV4Y2x1c2l2ZWx5IG93bmVkIGJ5IHRoZSBtaWQgbGV2ZWwuIExMRHMgd291bGQgbm90IHVzdWFsbHkgbmVlZCB0bworZGlyZWN0bHkgbWFuaXB1bGF0ZSB0aGVzZSByZWZlcmVuY2UgY291bnRzIGJ1dCB0aGVyZSBtYXkgYmUgc29tZSBjYXNlcword2hlcmUgdGhleSBkby4KKworVGhlcmUgYXJlIDMgcmVmZXJlbmNlIGNvdW50aW5nIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdCBhc3NvY2lhdGVkIHdpdGgKK3N0cnVjdCBTY3NpX0hvc3Q6CisgIC0gc2NzaV9ob3N0X2FsbG9jKCk6IHJldHVybnMgYSBwb2ludGVyIHRvIG5ldyBpbnN0YW5jZSBvZiBzdHJ1Y3QgCisgICAgICAgIFNjc2lfSG9zdCB3aGljaCBoYXMgaXRzIHJlZmVyZW5jZSBjb3VudCBeXiBzZXQgdG8gMQorICAtIHNjc2lfaG9zdF9nZXQoKTogYWRkcyAxIHRvIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIGdpdmVuIGluc3RhbmNlCisgIC0gc2NzaV9ob3N0X3B1dCgpOiBkZWNyZW1lbnRzIDEgZnJvbSB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBnaXZlbgorICAgICAgICBpbnN0YW5jZS4gSWYgdGhlIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIDAgdGhlbiB0aGUgZ2l2ZW4gaW5zdGFuY2UKKyAgICAgICAgaXMgZnJlZWQKKworVGhlIFNjc2lfZGV2aWNlIHN0cnVjdHVyZSBoYXMgaGFkIHJlZmVyZW5jZSBjb3VudGluZyBpbmZyYXN0cnVjdHVyZSBhZGRlZC4KK1RoaXMgZWZmZWN0aXZlbHkgc3ByZWFkcyB0aGUgb3duZXJzaGlwIG9mIHN0cnVjdCBTY3NpX2RldmljZSBpbnN0YW5jZXMKK2Fjcm9zcyB0aGUgdmFyaW91cyBTQ1NJIGxheWVycyB3aGljaCB1c2UgdGhlbS4gUHJldmlvdXNseSBzdWNoIGluc3RhbmNlcword2VyZSBleGNsdXNpdmVseSBvd25lZCBieSB0aGUgbWlkIGxldmVsLiBTZWUgdGhlIGFjY2VzcyBmdW5jdGlvbnMgZGVjbGFyZWQKK3Rvd2FyZHMgdGhlIGVuZCBvZiBpbmNsdWRlL3Njc2kvc2NzaV9kZXZpY2UuaCAuIElmIGFuIExMRCB3YW50cyB0byBrZWVwCithIGNvcHkgb2YgYSBwb2ludGVyIHRvIGEgU2NzaV9kZXZpY2UgaW5zdGFuY2UgaXQgc2hvdWxkIHVzZSBzY3NpX2RldmljZV9nZXQoKQordG8gYnVtcCBpdHMgcmVmZXJlbmNlIGNvdW50LiBXaGVuIGl0IGlzIGZpbmlzaGVkIHdpdGggdGhlIHBvaW50ZXIgaXQgY2FuCit1c2Ugc2NzaV9kZXZpY2VfcHV0KCkgdG8gZGVjcmVtZW50IGl0cyByZWZlcmVuY2UgY291bnQgKGFuZCBwb3RlbnRpYWxseQorZGVsZXRlIGl0KS4KKworXl4gc3RydWN0IFNjc2lfSG9zdCBhY3R1YWxseSBoYXMgMiByZWZlcmVuY2UgY291bnRzIHdoaWNoIGFyZSBtYW5pcHVsYXRlZAoraW4gcGFyYWxsZWwgYnkgdGhlc2UgZnVuY3Rpb25zLgorCisKK0NvbnZlbnRpb25zCis9PT09PT09PT09PQorRmlyc3QsIExpbnVzIFRvcnZhbGRzJ3MgdGhvdWdodHMgb24gQyBjb2Rpbmcgc3R5bGUgY2FuIGJlIGZvdW5kIGluIHRoZQorRG9jdW1lbnRhdGlvbi9Db2RpbmdTdHlsZSBmaWxlLiAKKworTmV4dCwgdGhlcmUgaXMgYSBtb3ZlbWVudCB0byAib3V0bGF3IiB0eXBlZGVmcyBpbnRyb2R1Y2luZyBzeW5vbnltcyBmb3IgCitzdHJ1Y3QgdGFncy4gQm90aCBjYW4gYmUgc3RpbGwgZm91bmQgaW4gdGhlIFNDU0kgc3Vic3lzdGVtLCBidXQKK3RoZSB0eXBlZGVmcyBoYXZlIGJlZW4gbW92ZWQgdG8gYSBzaW5nbGUgZmlsZSwgc2NzaV90eXBlZGVmcy5oIHRvCittYWtlIHRoZWlyIGZ1dHVyZSByZW1vdmFsIGVhc2llciwgZm9yIGV4YW1wbGU6IAorInR5cGVkZWYgc3RydWN0IHNjc2lfY21uZCBTY3NpX0NtbmQ7IgorCitBbHNvLCBtb3N0IEM5OSBlbmhhbmNlbWVudHMgYXJlIGVuY291cmFnZWQgdG8gdGhlIGV4dGVudCB0aGV5IGFyZSBzdXBwb3J0ZWQKK2J5IHRoZSByZWxldmFudCBnY2MgY29tcGlsZXJzLiBTbyBDOTkgc3R5bGUgc3RydWN0dXJlIGFuZCBhcnJheQoraW5pdGlhbGl6ZXJzIGFyZSBlbmNvdXJhZ2VkIHdoZXJlIGFwcHJvcHJpYXRlLiBEb24ndCBnbyB0b28gZmFyLAorVkxBcyBhcmUgbm90IHByb3Blcmx5IHN1cHBvcnRlZCB5ZXQuICBBbiBleGNlcHRpb24gdG8gdGhpcyBpcyB0aGUgdXNlIG9mCisiLy8iIHN0eWxlIGNvbW1lbnRzOyAvKi4uLiovIGNvbW1lbnRzIGFyZSBzdGlsbCBwcmVmZXJyZWQgaW4gTGludXguCisKK1dlbGwgd3JpdHRlbiwgdGVzdGVkIGFuZCBkb2N1bWVudGVkIGNvZGUsIG5lZWQgbm90IGJlIHJlLWZvcm1hdHRlZCB0bworY29tcGx5IHdpdGggdGhlIGFib3ZlIGNvbnZlbnRpb25zLiBGb3IgZXhhbXBsZSwgdGhlIGFpYzd4eHggZHJpdmVyCitjb21lcyB0byBMaW51eCBmcm9tIEZyZWVCU0QgYW5kIEFkYXB0ZWMncyBvd24gbGFicy4gTm8gZG91YnQgRnJlZUJTRAorYW5kIEFkYXB0ZWMgaGF2ZSB0aGVpciBvd24gY29kaW5nIGNvbnZlbnRpb25zLgorCisKK01pZCBsZXZlbCBzdXBwbGllZCBmdW5jdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1RoZXNlIGZ1bmN0aW9ucyBhcmUgc3VwcGxpZWQgYnkgdGhlIFNDU0kgbWlkIGxldmVsIGZvciB1c2UgYnkgTExEcy4KK1RoZSBuYW1lcyAoaS5lLiBlbnRyeSBwb2ludHMpIG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgCitzbyBhbiBMTEQgdGhhdCBpcyBhIG1vZHVsZSBjYW4gYWNjZXNzIHRoZW0uIFRoZSBrZXJuZWwgd2lsbAorYXJyYW5nZSBmb3IgdGhlIFNDU0kgbWlkIGxldmVsIHRvIGJlIGxvYWRlZCBhbmQgaW5pdGlhbGl6ZWQgYmVmb3JlIGFueSBMTEQKK2lzIGluaXRpYWxpemVkLiBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBsaXN0ZWQgYWxwaGFiZXRpY2FsbHkgYW5kIHRoZWlyCituYW1lcyBhbGwgc3RhcnQgd2l0aCAic2NzaV8iLgorCitTdW1tYXJ5OgorICAgc2NzaV9hZGRfZGV2aWNlIC0gY3JlYXRlcyBuZXcgc2NzaSBkZXZpY2UgKGx1KSBpbnN0YW5jZQorICAgc2NzaV9hZGRfaG9zdCAtIHBlcmZvcm0gc3lzZnMgcmVnaXN0cmF0aW9uIGFuZCBzZXQgdXAgdHJhbnNwb3J0IGNsYXNzCisgICBzY3NpX2NoYW5nZV9xdWV1ZV9kZXB0aCAtIGNoYW5nZSB0aGUgcXVldWUgZGVwdGggb24gYSBTQ1NJIGRldmljZQorICAgc2NzaV9iaW9zX3B0YWJsZSAtIHJldHVybiBjb3B5IG9mIGJsb2NrIGRldmljZSdzIHBhcnRpdGlvbiB0YWJsZQorICAgc2NzaV9ibG9ja19yZXF1ZXN0cyAtIHByZXZlbnQgZnVydGhlciBjb21tYW5kcyBiZWluZyBxdWV1ZWQgdG8gZ2l2ZW4gaG9zdAorICAgc2NzaV9ob3N0X2FsbG9jIC0gcmV0dXJuIGEgbmV3IHNjc2lfaG9zdCBpbnN0YW5jZSB3aG9zZSByZWZjb3VudD09MQorICAgc2NzaV9ob3N0X2dldCAtIGluY3JlbWVudHMgU2NzaV9Ib3N0IGluc3RhbmNlJ3MgcmVmY291bnQKKyAgIHNjc2lfaG9zdF9wdXQgLSBkZWNyZW1lbnRzIFNjc2lfSG9zdCBpbnN0YW5jZSdzIHJlZmNvdW50IChmcmVlIGlmIDApCisgICBzY3NpX3BhcnRzaXplIC0gcGFyc2UgcGFydGl0aW9uIHRhYmxlIGludG8gY3lsaW5kZXJzLCBoZWFkcyArIHNlY3RvcnMKKyAgIHNjc2lfcmVnaXN0ZXIgLSBjcmVhdGUgYW5kIHJlZ2lzdGVyIGEgc2NzaSBob3N0IGFkYXB0ZXIgaW5zdGFuY2UuCisgICBzY3NpX3JlbW92ZV9kZXZpY2UgLSBkZXRhY2ggYW5kIHJlbW92ZSBhIFNDU0kgZGV2aWNlCisgICBzY3NpX3JlbW92ZV9ob3N0IC0gZGV0YWNoIGFuZCByZW1vdmUgYWxsIFNDU0kgZGV2aWNlcyBvd25lZCBieSBob3N0CisgICBzY3NpX3JlcG9ydF9idXNfcmVzZXQgLSByZXBvcnQgc2NzaSBfYnVzXyByZXNldCBvYnNlcnZlZAorICAgc2NzaV9zY2FuX2hvc3QgLSBzY2FuIFNDU0kgYnVzCisgICBzY3NpX3RyYWNrX3F1ZXVlX2Z1bGwgLSB0cmFjayBzdWNjZXNzaXZlIFFVRVVFX0ZVTEwgZXZlbnRzIAorICAgc2NzaV91bmJsb2NrX3JlcXVlc3RzIC0gYWxsb3cgZnVydGhlciBjb21tYW5kcyB0byBiZSBxdWV1ZWQgdG8gZ2l2ZW4gaG9zdAorICAgc2NzaV91bnJlZ2lzdGVyIC0gW2NhbGxzIHNjc2lfaG9zdF9wdXQoKV0KKworCitEZXRhaWxzOgorCisvKioKKyAqIHNjc2lfYWRkX2RldmljZSAtIGNyZWF0ZXMgbmV3IHNjc2kgZGV2aWNlIChsdSkgaW5zdGFuY2UKKyAqIEBzaG9zdDogICBwb2ludGVyIHRvIHNjc2kgaG9zdCBpbnN0YW5jZQorICogQGNoYW5uZWw6IGNoYW5uZWwgbnVtYmVyIChyYXJlbHkgb3RoZXIgdGhhbiAwKQorICogQGlkOiAgICAgIHRhcmdldCBpZCBudW1iZXIKKyAqIEBsdW46ICAgICBsb2dpY2FsIHVuaXQgbnVtYmVyCisgKgorICogICAgICBSZXR1cm5zIHBvaW50ZXIgdG8gbmV3IHN0cnVjdCBzY3NpX2RldmljZSBpbnN0YW5jZSBvciAKKyAqICAgICAgRVJSX1BUUigtRU5PREVWKSAob3Igc29tZSBvdGhlciBiZW50IHBvaW50ZXIpIGlmIHNvbWV0aGluZyBpcworICogICAgICB3cm9uZyAoZS5nLiBubyBsdSByZXNwb25kcyBhdCBnaXZlbiBhZGRyZXNzKQorICoKKyAqICAgICAgTWlnaHQgYmxvY2s6IHllcworICoKKyAqICAgICAgTm90ZXM6IFRoaXMgY2FsbCBpcyB1c3VhbGx5IHBlcmZvcm1lZCBpbnRlcm5hbGx5IGR1cmluZyBhIHNjc2kKKyAqICAgICAgYnVzIHNjYW4gd2hlbiBhbiBIQkEgaXMgYWRkZWQgKGkuZS4gc2NzaV9zY2FuX2hvc3QoKSkuIFNvIGl0CisgKiAgICAgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiB0aGUgSEJBIGJlY29tZXMgYXdhcmUgb2YgYSBuZXcgc2NzaQorICogICAgICBkZXZpY2UgKGx1KSBhZnRlciBzY3NpX3NjYW5faG9zdCgpIGhhcyBjb21wbGV0ZWQuIElmIHN1Y2Nlc3NmdWwKKyAqICAgICAgdGhpcyBjYWxsIGNhbiBsZWFkIHRvIHNsYXZlX2FsbG9jKCkgYW5kIHNsYXZlX2NvbmZpZ3VyZSgpIGNhbGxiYWNrcworICogICAgICBpbnRvIHRoZSBMTEQuCisgKgorICogICAgICBEZWZpbmVkIGluOiBkcml2ZXJzL3Njc2kvc2NzaV9zY2FuLmMKKyAqKi8KK3N0cnVjdCBzY3NpX2RldmljZSAqIHNjc2lfYWRkX2RldmljZShzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNoYW5uZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGlkLCB1bnNpZ25lZCBpbnQgbHVuKQorCisKKy8qKgorICogc2NzaV9hZGRfaG9zdCAtIHBlcmZvcm0gc3lzZnMgcmVnaXN0cmF0aW9uIGFuZCBzZXQgdXAgdHJhbnNwb3J0IGNsYXNzCisgKiBAc2hvc3Q6ICAgcG9pbnRlciB0byBzY3NpIGhvc3QgaW5zdGFuY2UKKyAqIEBkZXY6ICAgICBwb2ludGVyIHRvIHN0cnVjdCBkZXZpY2Ugb2YgdHlwZSBzY3NpIGNsYXNzCisgKgorICogICAgICBSZXR1cm5zIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgZXJybm8gb2YgZmFpbHVyZSAoZS5nLiAtRU5PTUVNKQorICoKKyAqICAgICAgTWlnaHQgYmxvY2s6IG5vCisgKgorICogICAgICBOb3RlczogT25seSByZXF1aXJlZCBpbiAiaG90cGx1ZyBpbml0aWFsaXphdGlvbiBtb2RlbCIgYWZ0ZXIgYQorICogICAgICBzdWNjZXNzZnVsIGNhbGwgdG8gc2NzaV9ob3N0X2FsbG9jKCkuICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90CisgKglzY2FuIHRoZSBidXM7IHRoaXMgY2FuIGJlIGRvbmUgYnkgY2FsbGluZyBzY3NpX3NjYW5faG9zdCgpIG9yCisgKglpbiBzb21lIG90aGVyIHRyYW5zcG9ydC1zcGVjaWZpYyB3YXkuICBUaGUgTExEIG11c3Qgc2V0IHVwCisgKgl0aGUgdHJhbnNwb3J0IHRlbXBsYXRlIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gYW5kIG1heSBvbmx5CisgKglhY2Nlc3MgdGhlIHRyYW5zcG9ydCBjbGFzcyBkYXRhIGFmdGVyIHRoaXMgZnVuY3Rpb24gaGFzIGJlZW4gY2FsbGVkLgorICoKKyAqICAgICAgRGVmaW5lZCBpbjogZHJpdmVycy9zY3NpL2hvc3RzLmMKKyAqKi8KK2ludCBzY3NpX2FkZF9ob3N0KHN0cnVjdCBTY3NpX0hvc3QgKnNob3N0LCBzdHJ1Y3QgZGV2aWNlICogZGV2KQorCisKKy8qKgorICogc2NzaV9jaGFuZ2VfcXVldWVfZGVwdGggLSBhbGxvdyBMTEQgdG8gY2hhbmdlIHF1ZXVlIGRlcHRoIG9uIGEgU0NTSSBkZXZpY2UKKyAqIEBzZGV2OiAgICAgICBwb2ludGVyIHRvIFNDU0kgZGV2aWNlIHRvIGNoYW5nZSBxdWV1ZSBkZXB0aCBvbgorICogQHRhZ3MgICAgICAgIE51bWJlciBvZiB0YWdzIGFsbG93ZWQgaWYgdGFnZ2VkIHF1ZXVpbmcgZW5hYmxlZCwKKyAqICAgICAgICAgICAgICBvciBudW1iZXIgb2YgY29tbWFuZHMgdGhlIExMRCBjYW4gcXVldWUgdXAKKyAqICAgICAgICAgICAgICBpbiBub24tdGFnZ2VkIG1vZGUgKGFzIHBlciBjbWRfcGVyX2x1bikuCisgKgorICogICAgICBSZXR1cm5zIG5vdGhpbmcKKyAqCisgKiAgICAgIE1pZ2h0IGJsb2NrOiBubworICoKKyAqICAgICAgTm90ZXM6IENhbiBiZSBpbnZva2VkIGFueSB0aW1lIG9uIGEgU0NTSSBkZXZpY2UgY29udHJvbGxlZCBieSB0aGlzCisgKiAgICAgIExMRC4gW1NwZWNpZmljYWxseSBkdXJpbmcgYW5kIGFmdGVyIHNsYXZlX2NvbmZpZ3VyZSgpIGFuZCBwcmlvciB0bworICogICAgICBzbGF2ZV9kZXN0cm95KCkuXSBDYW4gc2FmZWx5IGJlIGludm9rZWQgZnJvbSBpbnRlcnJ1cHQgY29kZS4KKyAqCisgKiAgICAgIERlZmluZWQgaW46IGRyaXZlcnMvc2NzaS9zY3NpLmMgW3NlZSBzb3VyY2UgY29kZSBmb3IgbW9yZSBub3Rlc10KKyAqCisgKiovCitpbnQgc2NzaV9jaGFuZ2VfcXVldWVfZGVwdGgoc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2LCBpbnQgdGFncykKKworCisvKioKKyAqIHNjc2lfYmlvc19wdGFibGUgLSByZXR1cm4gY29weSBvZiBibG9jayBkZXZpY2UncyBwYXJ0aXRpb24gdGFibGUKKyAqIEBkZXY6ICAgICAgICBwb2ludGVyIHRvIGJsb2NrIGRldmljZQorICoKKyAqICAgICAgUmV0dXJucyBwb2ludGVyIHRvIHBhcnRpdGlvbiB0YWJsZSwgb3IgTlVMTCBmb3IgZmFpbHVyZQorICoKKyAqICAgICAgTWlnaHQgYmxvY2s6IHllcworICoKKyAqICAgICAgTm90ZXM6IENhbGxlciBvd25zIG1lbW9yeSByZXR1cm5lZCAoZnJlZSB3aXRoIGtmcmVlKCkgKQorICoKKyAqICAgICAgRGVmaW5lZCBpbjogZHJpdmVycy9zY3NpL3Njc2ljYW0uYworICoqLwordW5zaWduZWQgY2hhciAqc2NzaV9iaW9zX3B0YWJsZShzdHJ1Y3QgYmxvY2tfZGV2aWNlICpkZXYpCisKKworLyoqCisgKiBzY3NpX2Jsb2NrX3JlcXVlc3RzIC0gcHJldmVudCBmdXJ0aGVyIGNvbW1hbmRzIGJlaW5nIHF1ZXVlZCB0byBnaXZlbiBob3N0CisgKgorICogQHNob3N0OiBwb2ludGVyIHRvIGhvc3QgdG8gYmxvY2sgY29tbWFuZHMgb24KKyAqCisgKiAgICAgIFJldHVybnMgbm90aGluZworICoKKyAqICAgICAgTWlnaHQgYmxvY2s6IG5vCisgKgorICogICAgICBOb3RlczogVGhlcmUgaXMgbm8gdGltZXIgbm9yIGFueSBvdGhlciBtZWFucyBieSB3aGljaCB0aGUgcmVxdWVzdHMKKyAqICAgICAgZ2V0IHVuYmxvY2tlZCBvdGhlciB0aGFuIHRoZSBMTEQgY2FsbGluZyBzY3NpX3VuYmxvY2tfcmVxdWVzdHMoKS4KKyAqCisgKiAgICAgIERlZmluZWQgaW46IGRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jCisqKi8KK3ZvaWQgc2NzaV9ibG9ja19yZXF1ZXN0cyhzdHJ1Y3QgU2NzaV9Ib3N0ICogc2hvc3QpCisKKworLyoqCisgKiBzY3NpX2hvc3RfYWxsb2MgLSBjcmVhdGUgYSBzY3NpIGhvc3QgYWRhcHRlciBpbnN0YW5jZSBhbmQgcGVyZm9ybSBiYXNpYworICogICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24uCisgKiBAc2h0OiAgICAgICAgcG9pbnRlciB0byBzY3NpIGhvc3QgdGVtcGxhdGUKKyAqIEBwcml2c2l6ZTogICBleHRyYSBieXRlcyB0byBhbGxvY2F0ZSBpbiBob3N0ZGF0YSBhcnJheSAod2hpY2ggaXMgdGhlCisgKiAgICAgICAgICAgICAgbGFzdCBtZW1iZXIgb2YgdGhlIHJldHVybmVkIFNjc2lfSG9zdCBpbnN0YW5jZSkKKyAqCisgKiAgICAgIFJldHVybnMgcG9pbnRlciB0byBuZXcgU2NzaV9Ib3N0IGluc3RhbmNlIG9yIE5VTEwgb24gZmFpbHVyZQorICoKKyAqICAgICAgTWlnaHQgYmxvY2s6IHllcworICoKKyAqICAgICAgTm90ZXM6IFdoZW4gdGhpcyBjYWxsIHJldHVybnMgdG8gdGhlIExMRCwgdGhlIFNDU0kgYnVzIHNjYW4gb24KKyAqICAgICAgdGhpcyBob3N0IGhhcyBfbm90XyB5ZXQgYmVlbiBkb25lLgorICogICAgICBUaGUgaG9zdGRhdGEgYXJyYXkgKGJ5IGRlZmF1bHQgemVybyBsZW5ndGgpIGlzIGEgcGVyIGhvc3Qgc2NyYXRjaCAKKyAqICAgICAgYXJlYSBmb3IgdGhlIExMRCdzIGV4Y2x1c2l2ZSB1c2UuCisgKiAgICAgIEJvdGggYXNzb2NpYXRlZCByZWZjb3VudGluZyBvYmplY3RzIGhhdmUgdGhlaXIgcmVmY291bnQgc2V0IHRvIDEuCisgKiAgICAgIEZ1bGwgcmVnaXN0cmF0aW9uIChpbiBzeXNmcykgYW5kIGEgYnVzIHNjYW4gYXJlIHBlcmZvcm1lZCBsYXRlciB3aGVuCisgKiAgICAgIHNjc2lfYWRkX2hvc3QoKSBhbmQgc2NzaV9zY2FuX2hvc3QoKSBhcmUgY2FsbGVkLgorICoKKyAqICAgICAgRGVmaW5lZCBpbjogZHJpdmVycy9zY3NpL2hvc3RzLmMgLgorICoqLworc3RydWN0IFNjc2lfSG9zdCAqIHNjc2lfaG9zdF9hbGxvYyhzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlICogc2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcHJpdnNpemUpCisKKworLyoqCisgKiBzY3NpX2hvc3RfZ2V0IC0gaW5jcmVtZW50IFNjc2lfSG9zdCBpbnN0YW5jZSByZWZjb3VudAorICogQHNob3N0OiAgIHBvaW50ZXIgdG8gc3RydWN0IFNjc2lfSG9zdCBpbnN0YW5jZQorICoKKyAqICAgICAgUmV0dXJucyBub3RoaW5nCisgKgorICogICAgICBNaWdodCBibG9jazogY3VycmVudGx5IG1heSBibG9jayBidXQgbWF5IGJlIGNoYW5nZWQgdG8gbm90IGJsb2NrCisgKgorICogICAgICBOb3RlczogQWN0dWFsbHkgaW5jcmVtZW50cyB0aGUgY291bnRzIGluIHR3byBzdWItb2JqZWN0cworICoKKyAqICAgICAgRGVmaW5lZCBpbjogZHJpdmVycy9zY3NpL2hvc3RzLmMKKyAqKi8KK3ZvaWQgc2NzaV9ob3N0X2dldChzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCkKKworCisvKioKKyAqIHNjc2lfaG9zdF9wdXQgLSBkZWNyZW1lbnQgU2NzaV9Ib3N0IGluc3RhbmNlIHJlZmNvdW50LCBmcmVlIGlmIDAKKyAqIEBzaG9zdDogICBwb2ludGVyIHRvIHN0cnVjdCBTY3NpX0hvc3QgaW5zdGFuY2UKKyAqCisgKiAgICAgIFJldHVybnMgbm90aGluZworICoKKyAqICAgICAgTWlnaHQgYmxvY2s6IGN1cnJlbnRseSBtYXkgYmxvY2sgYnV0IG1heSBiZSBjaGFuZ2VkIHRvIG5vdCBibG9jaworICoKKyAqICAgICAgTm90ZXM6IEFjdHVhbGx5IGRlY3JlbWVudHMgdGhlIGNvdW50cyBpbiB0d28gc3ViLW9iamVjdHMuIElmIHRoZQorICogICAgICBsYXR0ZXIgcmVmY291bnQgcmVhY2hlcyAwLCB0aGUgU2NzaV9Ib3N0IGluc3RhbmNlIGlzIGZyZWVkLgorICogICAgICBUaGUgTExEIG5lZWQgbm90IHdvcnJ5IGV4YWN0bHkgd2hlbiB0aGUgU2NzaV9Ib3N0IGluc3RhbmNlIGlzCisgKiAgICAgIGZyZWVkLCBpdCBqdXN0IHNob3VsZG4ndCBhY2Nlc3MgdGhlIGluc3RhbmNlIGFmdGVyIGl0IGhhcyBiYWxhbmNlZAorICogICAgICBvdXQgaXRzIHJlZmNvdW50IHVzYWdlLgorICoKKyAqICAgICAgRGVmaW5lZCBpbjogZHJpdmVycy9zY3NpL2hvc3RzLmMKKyAqKi8KK3ZvaWQgc2NzaV9ob3N0X3B1dChzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCkKKworCisvKioKKyAqIHNjc2lfcGFydHNpemUgLSBwYXJzZSBwYXJ0aXRpb24gdGFibGUgaW50byBjeWxpbmRlcnMsIGhlYWRzICsgc2VjdG9ycworICogQGJ1ZjogcG9pbnRlciB0byBwYXJ0aXRpb24gdGFibGUKKyAqIEBjYXBhY2l0eTogc2l6ZSBvZiAodG90YWwpIGRpc2sgaW4gNTEyIGJ5dGUgc2VjdG9ycworICogQGN5bHM6IG91dHB1dHMgbnVtYmVyIG9mIGN5bGluZGVycyBjYWxjdWxhdGVkIHZpYSB0aGlzIHBvaW50ZXIKKyAqIEBoZHM6IG91dHB1dHMgbnVtYmVyIG9mIGhlYWRzIGNhbGN1bGF0ZWQgdmlhIHRoaXMgcG9pbnRlcgorICogQHNlY3M6IG91dHB1dHMgbnVtYmVyIG9mIHNlY3RvcnMgY2FsY3VsYXRlZCB2aWEgdGhpcyBwb2ludGVyCisgKgorICogICAgICBSZXR1cm5zIDAgb24gc3VjY2VzcywgLTEgb24gZmFpbHVyZQorICoKKyAqICAgICAgTWlnaHQgYmxvY2s6IG5vCisgKgorICogICAgICBOb3RlczogQ2FsbGVyIG93bnMgbWVtb3J5IHJldHVybmVkIChmcmVlIHdpdGgga2ZyZWUoKSApCisgKgorICogICAgICBEZWZpbmVkIGluOiBkcml2ZXJzL3Njc2kvc2NzaWNhbS5jCisgKiovCitpbnQgc2NzaV9wYXJ0c2l6ZSh1bnNpZ25lZCBjaGFyICpidWYsIHVuc2lnbmVkIGxvbmcgY2FwYWNpdHksCisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKmN5bHMsIHVuc2lnbmVkIGludCAqaGRzLCB1bnNpZ25lZCBpbnQgKnNlY3MpCisKKworLyoqCisgKiBzY3NpX3JlZ2lzdGVyIC0gY3JlYXRlIGFuZCByZWdpc3RlciBhIHNjc2kgaG9zdCBhZGFwdGVyIGluc3RhbmNlLgorICogQHNodDogICAgICAgIHBvaW50ZXIgdG8gc2NzaSBob3N0IHRlbXBsYXRlCisgKiBAcHJpdnNpemU6ICAgZXh0cmEgYnl0ZXMgdG8gYWxsb2NhdGUgaW4gaG9zdGRhdGEgYXJyYXkgKHdoaWNoIGlzIHRoZQorICogICAgICAgICAgICAgIGxhc3QgbWVtYmVyIG9mIHRoZSByZXR1cm5lZCBTY3NpX0hvc3QgaW5zdGFuY2UpCisgKgorICogICAgICBSZXR1cm5zIHBvaW50ZXIgdG8gbmV3IFNjc2lfSG9zdCBpbnN0YW5jZSBvciBOVUxMIG9uIGZhaWx1cmUKKyAqCisgKiAgICAgIE1pZ2h0IGJsb2NrOiB5ZXMKKyAqCisgKiAgICAgIE5vdGVzOiBXaGVuIHRoaXMgY2FsbCByZXR1cm5zIHRvIHRoZSBMTEQsIHRoZSBTQ1NJIGJ1cyBzY2FuIG9uCisgKiAgICAgIHRoaXMgaG9zdCBoYXMgX25vdF8geWV0IGJlZW4gZG9uZS4KKyAqICAgICAgVGhlIGhvc3RkYXRhIGFycmF5IChieSBkZWZhdWx0IHplcm8gbGVuZ3RoKSBpcyBhIHBlciBob3N0IHNjcmF0Y2ggCisgKiAgICAgIGFyZWEgZm9yIHRoZSBMTEQuCisgKgorICogICAgICBEZWZpbmVkIGluOiBkcml2ZXJzL3Njc2kvaG9zdHMuYyAuCisgKiovCitzdHJ1Y3QgU2NzaV9Ib3N0ICogc2NzaV9yZWdpc3RlcihzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlICogc2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHByaXZzaXplKQorCisKKy8qKgorICogc2NzaV9yZW1vdmVfZGV2aWNlIC0gZGV0YWNoIGFuZCByZW1vdmUgYSBTQ1NJIGRldmljZQorICogQHNkZXY6ICAgICAgYSBwb2ludGVyIHRvIGEgc2NzaSBkZXZpY2UgaW5zdGFuY2UKKyAqCisgKiAgICAgIFJldHVybnMgdmFsdWU6IDAgb24gc3VjY2VzcywgLUVJTlZBTCBpZiBkZXZpY2Ugbm90IGF0dGFjaGVkCisgKgorICogICAgICBNaWdodCBibG9jazogeWVzCisgKgorICogICAgICBOb3RlczogSWYgYW4gTExEIGJlY29tZXMgYXdhcmUgdGhhdCBhIHNjc2kgZGV2aWNlIChsdSkgaGFzCisgKiAgICAgIGJlZW4gcmVtb3ZlZCBidXQgaXRzIGhvc3QgaXMgc3RpbGwgcHJlc2VudCB0aGVuIGl0IGNhbiByZXF1ZXN0CisgKiAgICAgIHRoZSByZW1vdmFsIG9mIHRoYXQgc2NzaSBkZXZpY2UuIElmIHN1Y2Nlc3NmdWwgdGhpcyBjYWxsIHdpbGwKKyAqICAgICAgbGVhZCB0byB0aGUgc2xhdmVfZGVzdHJveSgpIGNhbGxiYWNrIGJlaW5nIGludm9rZWQuIHNkZXYgaXMgYW4gCisgKiAgICAgIGludmFsaWQgcG9pbnRlciBhZnRlciB0aGlzIGNhbGwuCisgKgorICogICAgICBEZWZpbmVkIGluOiBkcml2ZXJzL3Njc2kvc2NzaV9zeXNmcy5jIC4KKyAqKi8KK2ludCBzY3NpX3JlbW92ZV9kZXZpY2Uoc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2KQorCisKKy8qKgorICogc2NzaV9yZW1vdmVfaG9zdCAtIGRldGFjaCBhbmQgcmVtb3ZlIGFsbCBTQ1NJIGRldmljZXMgb3duZWQgYnkgaG9zdAorICogQHNob3N0OiAgICAgIGEgcG9pbnRlciB0byBhIHNjc2kgaG9zdCBpbnN0YW5jZQorICoKKyAqICAgICAgUmV0dXJucyB2YWx1ZTogMCBvbiBzdWNjZXNzLCAxIG9uIGZhaWx1cmUgKGUuZy4gTExEIGJ1c3kgPz8pCisgKgorICogICAgICBNaWdodCBibG9jazogeWVzCisgKgorICogICAgICBOb3RlczogU2hvdWxkIG9ubHkgYmUgaW52b2tlZCBpZiB0aGUgImhvdHBsdWcgaW5pdGlhbGl6YXRpb24KKyAqICAgICAgbW9kZWwiIGlzIGJlaW5nIHVzZWQuIEl0IHNob3VsZCBiZSBjYWxsZWQgX3ByaW9yXyB0byAgCisgKiAgICAgIHNjc2lfdW5yZWdpc3RlcigpLgorICoKKyAqICAgICAgRGVmaW5lZCBpbjogZHJpdmVycy9zY3NpL2hvc3RzLmMgLgorICoqLworaW50IHNjc2lfcmVtb3ZlX2hvc3Qoc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QpCisKKworLyoqCisgKiBzY3NpX3JlcG9ydF9idXNfcmVzZXQgLSByZXBvcnQgc2NzaSBfYnVzXyByZXNldCBvYnNlcnZlZAorICogQHNob3N0OiBhIHBvaW50ZXIgdG8gYSBzY3NpIGhvc3QgaW52b2x2ZWQKKyAqIEBjaGFubmVsOiBjaGFubmVsICh3aXRoaW4pIGhvc3Qgb24gd2hpY2ggc2NzaSBidXMgcmVzZXQgb2NjdXJyZWQKKyAqCisgKiAgICAgIFJldHVybnMgbm90aGluZworICoKKyAqICAgICAgTWlnaHQgYmxvY2s6IG5vCisgKgorICogICAgICBOb3RlczogVGhpcyBvbmx5IG5lZWRzIHRvIGJlIGNhbGxlZCBpZiB0aGUgcmVzZXQgaXMgb25lIHdoaWNoCisgKiAgICAgIG9yaWdpbmF0ZXMgZnJvbSBhbiB1bmtub3duIGxvY2F0aW9uLiAgUmVzZXRzIG9yaWdpbmF0ZWQgYnkgdGhlIAorICogICAgICBtaWQgbGV2ZWwgaXRzZWxmIGRvbid0IG5lZWQgdG8gY2FsbCB0aGlzLCBidXQgdGhlcmUgc2hvdWxkIGJlIAorICogICAgICBubyBoYXJtLiAgVGhlIG1haW4gcHVycG9zZSBvZiB0aGlzIGlzIHRvIG1ha2Ugc3VyZSB0aGF0IGEKKyAqICAgICAgQ0hFQ0tfQ09ORElUSU9OIGlzIHByb3Blcmx5IHRyZWF0ZWQuCisgKgorICogICAgICBEZWZpbmVkIGluOiBkcml2ZXJzL3Njc2kvc2NzaV9lcnJvci5jIC4KKyAqKi8KK3ZvaWQgc2NzaV9yZXBvcnRfYnVzX3Jlc2V0KHN0cnVjdCBTY3NpX0hvc3QgKiBzaG9zdCwgaW50IGNoYW5uZWwpCisKKworLyoqCisgKiBzY3NpX3NjYW5faG9zdCAtIHNjYW4gU0NTSSBidXMKKyAqIEBzaG9zdDogYSBwb2ludGVyIHRvIGEgc2NzaSBob3N0IGluc3RhbmNlCisgKgorICoJTWlnaHQgYmxvY2s6IHllcworICoKKyAqCU5vdGVzOiBTaG91bGQgYmUgY2FsbGVkIGFmdGVyIHNjc2lfYWRkX2hvc3QoKQorICoKKyAqCURlZmluZWQgaW46IGRyaXZlcnMvc2NzaS9zY3NpX3NjYW4uYworICoqLwordm9pZCBzY3NpX3NjYW5faG9zdChzdHJ1Y3QgU2NzaV9Ib3N0ICpzaG9zdCkKKworCisvKioKKyAqIHNjc2lfdHJhY2tfcXVldWVfZnVsbCAtIHRyYWNrIHN1Y2Nlc3NpdmUgUVVFVUVfRlVMTCBldmVudHMgb24gZ2l2ZW4KKyAqICAgICAgICAgICAgICAgICAgICAgIGRldmljZSB0byBkZXRlcm1pbmUgaWYgYW5kIHdoZW4gdGhlcmUgaXMgYSBuZWVkCisgKiAgICAgICAgICAgICAgICAgICAgICB0byBhZGp1c3QgdGhlIHF1ZXVlIGRlcHRoIG9uIHRoZSBkZXZpY2UuCisgKiBAc2RldjogIHBvaW50ZXIgdG8gU0NTSSBkZXZpY2UgaW5zdGFuY2UKKyAqIEBkZXB0aDogQ3VycmVudCBudW1iZXIgb2Ygb3V0c3RhbmRpbmcgU0NTSSBjb21tYW5kcyBvbiB0aGlzIGRldmljZSwKKyAqICAgICAgICAgbm90IGNvdW50aW5nIHRoZSBvbmUgcmV0dXJuZWQgYXMgUVVFVUVfRlVMTC4KKyAqCisgKiAgICAgIFJldHVybnMgMCAgLSBubyBjaGFuZ2UgbmVlZGVkCisgKiAgICAgICAgICAgICAgPjAgLSBhZGp1c3QgcXVldWUgZGVwdGggdG8gdGhpcyBuZXcgZGVwdGgKKyAqICAgICAgICAgICAgICAtMSAtIGRyb3AgYmFjayB0byB1bnRhZ2dlZCBvcGVyYXRpb24gdXNpbmcgaG9zdC0+Y21kX3Blcl9sdW4KKyAqICAgICAgICAgICAgICAgICAgIGFzIHRoZSB1bnRhZ2dlZCBjb21tYW5kIGRlcHRoCisgKgorICogICAgICBNaWdodCBibG9jazogbm8KKyAqCisgKiAgICAgIE5vdGVzOiBMTERzIG1heSBjYWxsIHRoaXMgYXQgYW55IHRpbWUgYW5kIHdlIHdpbGwgZG8gIlRoZSBSaWdodAorICogICAgICAgICAgICAgIFRoaW5nIjsgaW50ZXJydXB0IGNvbnRleHQgc2FmZS4gCisgKgorICogICAgICBEZWZpbmVkIGluOiBkcml2ZXJzL3Njc2kvc2NzaS5jIC4KKyAqKi8KK2ludCBzY3NpX3RyYWNrX3F1ZXVlX2Z1bGwoc3RydWN0IHNjc2lfZGV2aWNlICpzZGV2LCBpbnQgZGVwdGgpCisKKworLyoqCisgKiBzY3NpX3VuYmxvY2tfcmVxdWVzdHMgLSBhbGxvdyBmdXJ0aGVyIGNvbW1hbmRzIHRvIGJlIHF1ZXVlZCB0byBnaXZlbiBob3N0CisgKgorICogQHNob3N0OiBwb2ludGVyIHRvIGhvc3QgdG8gdW5ibG9jayBjb21tYW5kcyBvbgorICoKKyAqICAgICAgUmV0dXJucyBub3RoaW5nCisgKgorICogICAgICBNaWdodCBibG9jazogbm8KKyAqCisgKiAgICAgIERlZmluZWQgaW46IGRyaXZlcnMvc2NzaS9zY3NpX2xpYi5jIC4KKyoqLwordm9pZCBzY3NpX3VuYmxvY2tfcmVxdWVzdHMoc3RydWN0IFNjc2lfSG9zdCAqIHNob3N0KQorCisKKy8qKgorICogc2NzaV91bnJlZ2lzdGVyIC0gdW5yZWdpc3RlciBhbmQgZnJlZSBtZW1vcnkgdXNlZCBieSBob3N0IGluc3RhbmNlCisgKiBAc2hwOiAgICAgICAgcG9pbnRlciB0byBzY3NpIGhvc3QgaW5zdGFuY2UgdG8gdW5yZWdpc3Rlci4KKyAqCisgKiAgICAgIFJldHVybnMgbm90aGluZworICoKKyAqICAgICAgTWlnaHQgYmxvY2s6IG5vCisgKgorICogICAgICBOb3RlczogU2hvdWxkIG5vdCBiZSBpbnZva2VkIGlmIHRoZSAiaG90cGx1ZyBpbml0aWFsaXphdGlvbgorICogICAgICBtb2RlbCIgaXMgYmVpbmcgdXNlZC4gQ2FsbGVkIGludGVybmFsbHkgYnkgZXhpdF90aGlzX3Njc2lfZHJpdmVyKCkKKyAqICAgICAgaW4gdGhlICJwYXNzaXZlIGluaXRpYWxpemF0aW9uIG1vZGVsIi4gSGVuY2UgYSBMTEQgaGFzIG5vIG5lZWQgdG8KKyAqICAgICAgY2FsbCB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5LgorICoKKyAqICAgICAgRGVmaW5lZCBpbjogZHJpdmVycy9zY3NpL2hvc3RzLmMgLgorICoqLwordm9pZCBzY3NpX3VucmVnaXN0ZXIoc3RydWN0IFNjc2lfSG9zdCAqIHNocCkKKworCisKKworSW50ZXJmYWNlIEZ1bmN0aW9ucworPT09PT09PT09PT09PT09PT09PQorSW50ZXJmYWNlIGZ1bmN0aW9ucyBhcmUgc3VwcGxpZWQgKGRlZmluZWQpIGJ5IExMRHMgYW5kIHRoZWlyIGZ1bmN0aW9uCitwb2ludGVycyBhcmUgcGxhY2VkIGluIGFuIGluc3RhbmNlIG9mIHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgd2hpY2gKK2lzIHBhc3NlZCB0byBzY3NpX2hvc3RfYWxsb2MoKSBbb3Igc2NzaV9yZWdpc3RlcigpIC8gaW5pdF90aGlzX3Njc2lfZHJpdmVyKCldLgorU29tZSBhcmUgbWFuZGF0b3J5LiBJbnRlcmZhY2UgZnVuY3Rpb25zIHNob3VsZCBiZSBkZWNsYXJlZCBzdGF0aWMuIFRoZQorYWNjZXB0ZWQgY29udmVudGlvbiBpcyB0aGF0IGRyaXZlciAieHl6IiB3aWxsIGRlY2xhcmUgaXRzIHNsYXZlX2NvbmZpZ3VyZSgpIAorZnVuY3Rpb24gYXM6CisgICAgc3RhdGljIGludCB4eXpfc2xhdmVfY29uZmlndXJlKHN0cnVjdCBzY3NpX2RldmljZSAqIHNkZXYpOworYW5kIHNvIGZvcnRoIGZvciBhbGwgaW50ZXJmYWNlIGZ1bmN0aW9ucyBsaXN0ZWQgYmVsb3cuCisKK0EgcG9pbnRlciB0byB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBwbGFjZWQgaW4gdGhlICdzbGF2ZV9jb25maWd1cmUnIG1lbWJlcgorb2YgYSAic3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSIgaW5zdGFuY2UuIEEgcG9pbnRlciB0byBzdWNoIGFuIGluc3RhbmNlCitzaG91bGQgYmUgcGFzc2VkIHRvIHRoZSBtaWQgbGV2ZWwncyBzY3NpX2hvc3RfYWxsb2MoKSBbb3Igc2NzaV9yZWdpc3RlcigpIC8KK2luaXRfdGhpc19zY3NpX2RyaXZlcigpXS4KKworVGhlIGludGVyZmFjZSBmdW5jdGlvbnMgYXJlIGFsc28gZGVzY3JpYmVkIGluIHRoZSBpbmNsdWRlL3Njc2kvc2NzaV9ob3N0LmgKK2ZpbGUgaW1tZWRpYXRlbHkgYWJvdmUgdGhlaXIgZGVmaW5pdGlvbiBwb2ludCBpbiAic3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSIuCitJbiBzb21lIGNhc2VzIG1vcmUgZGV0YWlsIGlzIGdpdmVuIGluIHNjc2lfaG9zdC5oIHRoYW4gYmVsb3cuCisKK1RoZSBpbnRlcmZhY2UgZnVuY3Rpb25zIGFyZSBsaXN0ZWQgYmVsb3cgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLgorCitTdW1tYXJ5OgorICAgYmlvc19wYXJhbSAtIGZldGNoIGhlYWQsIHNlY3RvciwgY3lsaW5kZXIgaW5mbyBmb3IgYSBkaXNrCisgICBkZXRlY3QgLSBkZXRlY3RzIEhCQXMgdGhpcyBkcml2ZXIgd2FudHMgdG8gY29udHJvbAorICAgZWhfdGltZWRfb3V0IC0gbm90aWZ5IHRoZSBob3N0IHRoYXQgYSBjb21tYW5kIHRpbWVyIGV4cGlyZWQKKyAgIGVoX2Fib3J0X2hhbmRsZXIgLSBhYm9ydCBnaXZlbiBjb21tYW5kCisgICBlaF9idXNfcmVzZXRfaGFuZGxlciAtIGlzc3VlIFNDU0kgYnVzIHJlc2V0CisgICBlaF9kZXZpY2VfcmVzZXRfaGFuZGxlciAtIGlzc3VlIFNDU0kgZGV2aWNlIHJlc2V0CisgICBlaF9ob3N0X3Jlc2V0X2hhbmRsZXIgLSByZXNldCBob3N0IChob3N0IGJ1cyBhZGFwdGVyKQorICAgaW5mbyAtIHN1cHBseSBpbmZvcm1hdGlvbiBhYm91dCBnaXZlbiBob3N0CisgICBpb2N0bCAtIGRyaXZlciBjYW4gcmVzcG9uZCB0byBpb2N0bHMKKyAgIHByb2NfaW5mbyAtIHN1cHBvcnRzIC9wcm9jL3Njc2kve2RyaXZlcl9uYW1lfS97aG9zdF9ub30KKyAgIHF1ZXVlY29tbWFuZCAtIHF1ZXVlIHNjc2kgY29tbWFuZCwgaW52b2tlICdkb25lJyBvbiBjb21wbGV0aW9uCisgICByZWxlYXNlIC0gcmVsZWFzZSBhbGwgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCBnaXZlbiBob3N0CisgICBzbGF2ZV9hbGxvYyAtIHByaW9yIHRvIGFueSBjb21tYW5kcyBiZWluZyBzZW50IHRvIGEgbmV3IGRldmljZSAKKyAgIHNsYXZlX2NvbmZpZ3VyZSAtIGRyaXZlciBmaW5lIHR1bmluZyBmb3IgZ2l2ZW4gZGV2aWNlIGFmdGVyIGF0dGFjaAorICAgc2xhdmVfZGVzdHJveSAtIGdpdmVuIGRldmljZSBpcyBhYm91dCB0byBiZSBzaHV0IGRvd24KKworCitEZXRhaWxzOgorCisvKioKKyAqICAgICAgYmlvc19wYXJhbSAtIGZldGNoIGhlYWQsIHNlY3RvciwgY3lsaW5kZXIgaW5mbyBmb3IgYSBkaXNrCisgKiAgICAgIEBzZGV2OiBwb2ludGVyIHRvIHNjc2kgZGV2aWNlIGNvbnRleHQgKGRlZmluZWQgaW4gCisgKiAgICAgICAgICAgICBpbmNsdWRlL3Njc2kvc2NzaV9kZXZpY2UuaCkKKyAqICAgICAgQGJkZXY6IHBvaW50ZXIgdG8gYmxvY2sgZGV2aWNlIGNvbnRleHQgKGRlZmluZWQgaW4gZnMuaCkKKyAqICAgICAgQGNhcGFjaXR5OiAgZGV2aWNlIHNpemUgKGluIDUxMiBieXRlIHNlY3RvcnMpCisgKiAgICAgIEBwYXJhbXM6IHRocmVlIGVsZW1lbnQgYXJyYXkgdG8gcGxhY2Ugb3V0cHV0OgorICogICAgICAgICAgICAgIHBhcmFtc1swXSBudW1iZXIgb2YgaGVhZHMgKG1heCAyNTUpCisgKiAgICAgICAgICAgICAgcGFyYW1zWzFdIG51bWJlciBvZiBzZWN0b3JzIChtYXggNjMpCisgKiAgICAgICAgICAgICAgcGFyYW1zWzJdIG51bWJlciBvZiBjeWxpbmRlcnMgCisgKgorICogICAgICBSZXR1cm4gdmFsdWUgaXMgaWdub3JlZAorICoKKyAqICAgICAgTG9ja3M6IG5vbmUKKyAqCisgKiAgICAgIENhbGxpbmcgY29udGV4dDogcHJvY2VzcyAoc2QpCisgKgorICogICAgICBOb3RlczogYW4gYXJiaXRyYXJ5IGdlb21ldHJ5IChiYXNlZCBvbiBSRUFEIENBUEFDSVRZKSBpcyB1c2VkCisgKiAgICAgIGlmIHRoaXMgZnVuY3Rpb24gaXMgbm90IHByb3ZpZGVkLiBUaGUgcGFyYW1zIGFycmF5IGlzCisgKiAgICAgIHByZS1pbml0aWFsaXplZCB3aXRoIG1hZGUgdXAgdmFsdWVzIGp1c3QgaW4gY2FzZSB0aGlzIGZ1bmN0aW9uIAorICogICAgICBkb2Vzbid0IG91dHB1dCBhbnl0aGluZy4KKyAqCisgKiAgICAgIE9wdGlvbmFsbHkgZGVmaW5lZCBpbjogTExECisgKiovCisgICAgaW50IGJpb3NfcGFyYW0oc3RydWN0IHNjc2lfZGV2aWNlICogc2Rldiwgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwKKyAgICAgICAgICAgICAgICAgICBzZWN0b3JfdCBjYXBhY2l0eSwgaW50IHBhcmFtc1szXSkKKworCisvKioKKyAqICAgICAgZGV0ZWN0IC0gZGV0ZWN0cyBIQkFzIHRoaXMgZHJpdmVyIHdhbnRzIHRvIGNvbnRyb2wKKyAqICAgICAgQHNodHA6IGhvc3QgdGVtcGxhdGUgZm9yIHRoaXMgZHJpdmVyLgorICoKKyAqICAgICAgUmV0dXJucyBudW1iZXIgb2YgaG9zdHMgdGhpcyBkcml2ZXIgd2FudHMgdG8gY29udHJvbC4gMCBtZWFucyBubworICogICAgICBzdWl0YWJsZSBob3N0cyBmb3VuZC4KKyAqCisgKiAgICAgIExvY2tzOiBub25lIGhlbGQKKyAqCisgKiAgICAgIENhbGxpbmcgY29udGV4dDogcHJvY2VzcyBbaW52b2tlZCBmcm9tIGluaXRfdGhpc19zY3NpX2RyaXZlcigpXQorICoKKyAqICAgICAgTm90ZXM6IEZpcnN0IGZ1bmN0aW9uIGNhbGxlZCBmcm9tIHRoZSBTQ1NJIG1pZCBsZXZlbCBvbiB0aGlzCisgKiAgICAgIGRyaXZlci4gVXBwZXIgbGV2ZWwgZHJpdmVycyAoZS5nLiBzZCkgbWF5IG5vdCAoeWV0KSBiZSBwcmVzZW50LgorICogICAgICBGb3IgZWFjaCBob3N0IGZvdW5kLCB0aGlzIG1ldGhvZCBzaG91bGQgY2FsbCBzY3NpX3JlZ2lzdGVyKCkgCisgKiAgICAgIFtzZWUgaG9zdHMuY10uCisgKgorICogICAgICBEZWZpbmVkIGluOiBMTEQgKHJlcXVpcmVkIGlmICJwYXNzaXZlIGluaXRpYWxpemF0aW9uIG1vZGUiIGlzIHVzZWQsCisgKiAgICAgICAgICAgICAgICAgICAgICAgbm90IGludm9rZWQgaW4gImhvdHBsdWcgaW5pdGlhbGl6YXRpb24gbW9kZSIpCisgKiovCisgICAgaW50IGRldGVjdChzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlICogc2h0cCkKKworCisvKioKKyAqICAgICAgZWhfdGltZWRfb3V0IC0gVGhlIHRpbWVyIGZvciB0aGUgY29tbWFuZCBoYXMganVzdCBmaXJlZAorICogICAgICBAc2NwOiBpZGVudGlmaWVzIGNvbW1hbmQgdGltaW5nIG91dAorICoKKyAqICAgICAgUmV0dXJuczoKKyAqCisgKiAgICAgIEVIX0hBTkRMRUQ6ICAgICAgICAgICAgIEkgZml4ZWQgdGhlIGVycm9yLCBwbGVhc2UgY29tcGxldGUgdGhlIGNvbW1hbmQKKyAqICAgICAgRUhfUkVTRVRfVElNRVI6ICAgICAgICAgSSBuZWVkIG1vcmUgdGltZSwgcmVzZXQgdGhlIHRpbWVyIGFuZAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbiBjb3VudGluZyBhZ2FpbgorICogICAgICBFSF9OT1RfSEFORExFRCAgICAgICAgICBCZWdpbiBub3JtYWwgZXJyb3IgcmVjb3ZlcnkKKyAqCisgKgorICogICAgICBMb2NrczogTm9uZSBoZWxkCisgKgorICogICAgICBDYWxsaW5nIGNvbnRleHQ6IGludGVycnVwdAorICoKKyAqICAgICAgTm90ZXM6IFRoaXMgaXMgdG8gZ2l2ZSB0aGUgTExEIGFuIG9wcG9ydHVuaXR5IHRvIGRvIGxvY2FsIHJlY292ZXJ5LgorICogICAgICBUaGlzIHJlY292ZXJ5IGlzIGxpbWl0ZWQgdG8gZGV0ZXJtaW5pbmcgaWYgdGhlIG91dHN0YW5kaW5nIGNvbW1hbmQKKyAqICAgICAgd2lsbCBldmVyIGNvbXBsZXRlLiAgWW91IG1heSBub3QgYWJvcnQgYW5kIHJlc3RhcnQgdGhlIGNvbW1hbmQgZnJvbQorICogICAgICB0aGlzIGNhbGxiYWNrLgorICoKKyAqICAgICAgT3B0aW9uYWxseSBkZWZpbmVkIGluOiBMTEQKKyAqKi8KKyAgICAgaW50IGVoX3RpbWVkX291dChzdHJ1Y3Qgc2NzaV9jbW5kICogc2NwKQorCisKKy8qKgorICogICAgICBlaF9hYm9ydF9oYW5kbGVyIC0gYWJvcnQgY29tbWFuZCBhc3NvY2lhdGVkIHdpdGggc2NwCisgKiAgICAgIEBzY3A6IGlkZW50aWZpZXMgY29tbWFuZCB0byBiZSBhYm9ydGVkCisgKgorICogICAgICBSZXR1cm5zIFNVQ0NFU1MgaWYgY29tbWFuZCBhYm9ydGVkIGVsc2UgRkFJTEVECisgKgorICogICAgICBMb2NrczogTm9uZSBoZWxkCisgKgorICogICAgICBDYWxsaW5nIGNvbnRleHQ6IGtlcm5lbCB0aHJlYWQKKyAqCisgKiAgICAgIE5vdGVzOiBJZiAnbm9fYXN5bmNfYWJvcnQnIGlzIGRlZmluZWQgdGhpcyBjYWxsYmFjaworICogIAl3aWxsIGJlIGludm9rZWQgZnJvbSBzY3NpX2VoIHRocmVhZC4gTm8gb3RoZXIgY29tbWFuZHMKKyAqCXdpbGwgdGhlbiBiZSBxdWV1ZWQgb24gY3VycmVudCBob3N0IGR1cmluZyBlaC4KKyAqCU90aGVyd2lzZSBpdCB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBzY3NpX3RpbWVzX291dCgpCisgKiAgICAgIGlzIGNhbGxlZCBkdWUgdG8gYSBjb21tYW5kIHRpbWVvdXQuCisgKgorICogICAgICBPcHRpb25hbGx5IGRlZmluZWQgaW46IExMRAorICoqLworICAgICBpbnQgZWhfYWJvcnRfaGFuZGxlcihzdHJ1Y3Qgc2NzaV9jbW5kICogc2NwKQorCisKKy8qKgorICogICAgICBlaF9idXNfcmVzZXRfaGFuZGxlciAtIGlzc3VlIFNDU0kgYnVzIHJlc2V0CisgKiAgICAgIEBzY3A6IFNDU0kgYnVzIHRoYXQgY29udGFpbnMgdGhpcyBkZXZpY2Ugc2hvdWxkIGJlIHJlc2V0CisgKgorICogICAgICBSZXR1cm5zIFNVQ0NFU1MgaWYgY29tbWFuZCBhYm9ydGVkIGVsc2UgRkFJTEVECisgKgorICogICAgICBMb2NrczogTm9uZSBoZWxkCisgKgorICogICAgICBDYWxsaW5nIGNvbnRleHQ6IGtlcm5lbCB0aHJlYWQKKyAqCisgKiAgICAgIE5vdGVzOiBJbnZva2VkIGZyb20gc2NzaV9laCB0aHJlYWQuIE5vIG90aGVyIGNvbW1hbmRzIHdpbGwgYmUKKyAqICAgICAgcXVldWVkIG9uIGN1cnJlbnQgaG9zdCBkdXJpbmcgZWguCisgKgorICogICAgICBPcHRpb25hbGx5IGRlZmluZWQgaW46IExMRAorICoqLworICAgICBpbnQgZWhfYnVzX3Jlc2V0X2hhbmRsZXIoc3RydWN0IHNjc2lfY21uZCAqIHNjcCkKKworCisvKioKKyAqICAgICAgZWhfZGV2aWNlX3Jlc2V0X2hhbmRsZXIgLSBpc3N1ZSBTQ1NJIGRldmljZSByZXNldAorICogICAgICBAc2NwOiBpZGVudGlmaWVzIFNDU0kgZGV2aWNlIHRvIGJlIHJlc2V0CisgKgorICogICAgICBSZXR1cm5zIFNVQ0NFU1MgaWYgY29tbWFuZCBhYm9ydGVkIGVsc2UgRkFJTEVECisgKgorICogICAgICBMb2NrczogTm9uZSBoZWxkCisgKgorICogICAgICBDYWxsaW5nIGNvbnRleHQ6IGtlcm5lbCB0aHJlYWQKKyAqCisgKiAgICAgIE5vdGVzOiBJbnZva2VkIGZyb20gc2NzaV9laCB0aHJlYWQuIE5vIG90aGVyIGNvbW1hbmRzIHdpbGwgYmUKKyAqICAgICAgcXVldWVkIG9uIGN1cnJlbnQgaG9zdCBkdXJpbmcgZWguCisgKgorICogICAgICBPcHRpb25hbGx5IGRlZmluZWQgaW46IExMRAorICoqLworICAgICBpbnQgZWhfZGV2aWNlX3Jlc2V0X2hhbmRsZXIoc3RydWN0IHNjc2lfY21uZCAqIHNjcCkKKworCisvKioKKyAqICAgICAgZWhfaG9zdF9yZXNldF9oYW5kbGVyIC0gcmVzZXQgaG9zdCAoaG9zdCBidXMgYWRhcHRlcikKKyAqICAgICAgQHNjcDogU0NTSSBob3N0IHRoYXQgY29udGFpbnMgdGhpcyBkZXZpY2Ugc2hvdWxkIGJlIHJlc2V0CisgKgorICogICAgICBSZXR1cm5zIFNVQ0NFU1MgaWYgY29tbWFuZCBhYm9ydGVkIGVsc2UgRkFJTEVECisgKgorICogICAgICBMb2NrczogTm9uZSBoZWxkCisgKgorICogICAgICBDYWxsaW5nIGNvbnRleHQ6IGtlcm5lbCB0aHJlYWQKKyAqCisgKiAgICAgIE5vdGVzOiBJbnZva2VkIGZyb20gc2NzaV9laCB0aHJlYWQuIE5vIG90aGVyIGNvbW1hbmRzIHdpbGwgYmUKKyAqICAgICAgcXVldWVkIG9uIGN1cnJlbnQgaG9zdCBkdXJpbmcgZWguIAorICogICAgICBXaXRoIHRoZSBkZWZhdWx0IGVoX3N0cmF0ZWd5IGluIHBsYWNlLCBpZiBub25lIG9mIHRoZSBfYWJvcnRfLCAKKyAqICAgICAgX2RldmljZV9yZXNldF8sIF9idXNfcmVzZXRfIG9yIHRoaXMgZWggaGFuZGxlciBmdW5jdGlvbiBhcmUgCisgKiAgICAgIGRlZmluZWQgKG9yIHRoZXkgYWxsIHJldHVybiBGQUlMRUQpIHRoZW4gdGhlIGRldmljZSBpbiBxdWVzdGlvbiAKKyAqICAgICAgd2lsbCBiZSBzZXQgb2ZmbGluZSB3aGVuZXZlciBlaCBpcyBpbnZva2VkLgorICoKKyAqICAgICAgT3B0aW9uYWxseSBkZWZpbmVkIGluOiBMTEQKKyAqKi8KKyAgICAgaW50IGVoX2hvc3RfcmVzZXRfaGFuZGxlcihzdHJ1Y3Qgc2NzaV9jbW5kICogc2NwKQorCisKKy8qKgorICogICAgICBpbmZvIC0gc3VwcGx5IGluZm9ybWF0aW9uIGFib3V0IGdpdmVuIGhvc3Q6IGRyaXZlciBuYW1lIHBsdXMgZGF0YQorICogICAgICAgICAgICAgdG8gZGlzdGluZ3Vpc2ggZ2l2ZW4gaG9zdAorICogICAgICBAc2hwOiBob3N0IHRvIHN1cHBseSBpbmZvcm1hdGlvbiBhYm91dAorICoKKyAqICAgICAgUmV0dXJuIEFTQ0lJIG51bGwgdGVybWluYXRlZCBzdHJpbmcuIFtUaGlzIGRyaXZlciBpcyBhc3N1bWVkIHRvCisgKiAgICAgIG1hbmFnZSB0aGUgbWVtb3J5IHBvaW50ZWQgdG8gYW5kIG1haW50YWluIGl0LCB0eXBpY2FsbHkgZm9yIHRoZQorICogICAgICBsaWZldGltZSBvZiB0aGlzIGhvc3QuXQorICoKKyAqICAgICAgTG9ja3M6IG5vbmUKKyAqCisgKiAgICAgIENhbGxpbmcgY29udGV4dDogcHJvY2VzcworICoKKyAqICAgICAgTm90ZXM6IE9mdGVuIHN1cHBsaWVzIFBDSSBvciBJU0EgaW5mb3JtYXRpb24gc3VjaCBhcyBJTyBhZGRyZXNzZXMKKyAqICAgICAgYW5kIGludGVycnVwdCBudW1iZXJzLiBJZiBub3Qgc3VwcGxpZWQgc3RydWN0IFNjc2lfSG9zdDo6bmFtZSB1c2VkCisgKiAgICAgIGluc3RlYWQuIEl0IGlzIGFzc3VtZWQgdGhlIHJldHVybmVkIGluZm9ybWF0aW9uIGZpdHMgb24gb25lIGxpbmUgCisgKiAgICAgIChpLmUuIGRvZXMgbm90IGluY2x1ZGVkIGVtYmVkZGVkIG5ld2xpbmVzKS4KKyAqICAgICAgVGhlIFNDU0lfSU9DVExfUFJPQkVfSE9TVCBpb2N0bCB5aWVsZHMgdGhlIHN0cmluZyByZXR1cm5lZCBieSB0aGlzCisgKiAgICAgIGZ1bmN0aW9uIChvciBzdHJ1Y3QgU2NzaV9Ib3N0OjpuYW1lIGlmIHRoaXMgZnVuY3Rpb24gaXMgbm90CisgKiAgICAgIGF2YWlsYWJsZSkuCisgKiAgICAgIEluIGEgc2ltaWxhciBtYW5uZXIsIGluaXRfdGhpc19zY3NpX2RyaXZlcigpIG91dHB1dHMgdG8gdGhlIGNvbnNvbGUKKyAqICAgICAgZWFjaCBob3N0J3MgImluZm8iIChvciBuYW1lKSBmb3IgdGhlIGRyaXZlciBpdCBpcyByZWdpc3RlcmluZy4KKyAqICAgICAgQWxzbyBpZiBwcm9jX2luZm8oKSBpcyBub3Qgc3VwcGxpZWQsIHRoZSBvdXRwdXQgb2YgdGhpcyBmdW5jdGlvbgorICogICAgICBpcyB1c2VkIGluc3RlYWQuCisgKgorICogICAgICBPcHRpb25hbGx5IGRlZmluZWQgaW46IExMRAorICoqLworICAgIGNvbnN0IGNoYXIgKiBpbmZvKHN0cnVjdCBTY3NpX0hvc3QgKiBzaHApCisKKworLyoqCisgKiAgICAgIGlvY3RsIC0gZHJpdmVyIGNhbiByZXNwb25kIHRvIGlvY3RscworICogICAgICBAc2RwOiBkZXZpY2UgdGhhdCBpb2N0bCB3YXMgaXNzdWVkIGZvcgorICogICAgICBAY21kOiBpb2N0bCBudW1iZXIKKyAqICAgICAgQGFyZzogcG9pbnRlciB0byByZWFkIG9yIHdyaXRlIGRhdGEgZnJvbS4gU2luY2UgaXQgcG9pbnRzIHRvCisgKiAgICAgICAgICAgIHVzZXIgc3BhY2UsIHNob3VsZCB1c2UgYXBwcm9wcmlhdGUga2VybmVsIGZ1bmN0aW9ucworICogICAgICAgICAgICAoZS5nLiBjb3B5X2Zyb21fdXNlcigpICkuIEluIHRoZSBVbml4IHN0eWxlIHRoaXMgYXJndW1lbnQKKyAqICAgICAgICAgICAgY2FuIGFsc28gYmUgdmlld2VkIGFzIGFuIHVuc2lnbmVkIGxvbmcuCisgKgorICogICAgICBSZXR1cm5zIG5lZ2F0aXZlICJlcnJubyIgdmFsdWUgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0uIDAgb3IgYQorICogICAgICBwb3NpdGl2ZSB2YWx1ZSBpbmRpY2F0ZXMgc3VjY2VzcyBhbmQgaXMgcmV0dXJuZWQgdG8gdGhlIHVzZXIgc3BhY2UuCisgKgorICogICAgICBMb2Nrczogbm9uZQorICoKKyAqICAgICAgQ2FsbGluZyBjb250ZXh0OiBwcm9jZXNzCisgKgorICogICAgICBOb3RlczogVGhlIFNDU0kgc3Vic3lzdGVtIHVzZXMgYSAidHJpY2tsZSBkb3duIiBpb2N0bCBtb2RlbC4KKyAqICAgICAgVGhlIHVzZXIgaXNzdWVzIGFuIGlvY3RsKCkgYWdhaW5zdCBhbiB1cHBlciBsZXZlbCBkcml2ZXIKKyAqICAgICAgKGUuZy4gL2Rldi9zZGMpIGFuZCBpZiB0aGUgdXBwZXIgbGV2ZWwgZHJpdmVyIGRvZXNuJ3QgcmVjb2duaXplCisgKiAgICAgIHRoZSAnY21kJyB0aGVuIGl0IGlzIHBhc3NlZCB0byB0aGUgU0NTSSBtaWQgbGV2ZWwuIElmIHRoZSBTQ1NJCisgKiAgICAgIG1pZCBsZXZlbCBkb2VzIG5vdCByZWNvZ25pemUgaXQsIHRoZW4gdGhlIExMRCB0aGF0IGNvbnRyb2xzCisgKiAgICAgIHRoZSBkZXZpY2UgcmVjZWl2ZXMgdGhlIGlvY3RsLiBBY2NvcmRpbmcgdG8gcmVjZW50IFVuaXggc3RhbmRhcmRzCisgKiAgICAgIHVuc3VwcG9ydGVkIGlvY3RsKCkgJ2NtZCcgbnVtYmVycyBzaG91bGQgcmV0dXJuIC1FTk9UVFkuCisgKgorICogICAgICBPcHRpb25hbGx5IGRlZmluZWQgaW46IExMRAorICoqLworICAgIGludCBpb2N0bChzdHJ1Y3Qgc2NzaV9kZXZpY2UgKnNkcCwgaW50IGNtZCwgdm9pZCAqYXJnKQorCisKKy8qKgorICogICAgICBwcm9jX2luZm8gLSBzdXBwb3J0cyAvcHJvYy9zY3NpL3tkcml2ZXJfbmFtZX0ve2hvc3Rfbm99CisgKiAgICAgIEBidWZmZXI6IGFuY2hvciBwb2ludCB0byBvdXRwdXQgdG8gKDA9PXdyaXRldG8xX3JlYWQwKSBvciBmZXRjaCBmcm9tCisgKiAgICAgICAgICAgICAgICgxPT13cml0ZXRvMV9yZWFkMCkuCisgKiAgICAgIEBzdGFydDogd2hlcmUgImludGVyZXN0aW5nIiBkYXRhIGlzIHdyaXR0ZW4gdG8uIElnbm9yZWQgd2hlbgorICogICAgICAgICAgICAgIDE9PXdyaXRldG8xX3JlYWQwLgorICogICAgICBAb2Zmc2V0OiBvZmZzZXQgd2l0aGluIGJ1ZmZlciAwPT13cml0ZXRvMV9yZWFkMCBpcyBhY3R1YWxseQorICogICAgICAgICAgICAgICBpbnRlcmVzdGVkIGluLiBJZ25vcmVkIHdoZW4gMT09d3JpdGV0bzFfcmVhZDAgLgorICogICAgICBAbGVuZ3RoOiBtYXhpbXVtIChvciBhY3R1YWwpIGV4dGVudCBvZiBidWZmZXIKKyAqICAgICAgQGhvc3Rfbm86IGhvc3QgbnVtYmVyIG9mIGludGVyZXN0IChzdHJ1Y3QgU2NzaV9Ib3N0Ojpob3N0X25vKQorICogICAgICBAd3JpdGV0bzFfcmVhZDA6IDEgLT4gZGF0YSBjb21pbmcgZnJvbSB1c2VyIHNwYWNlIHRvd2FyZHMgZHJpdmVyCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiAiZWNobyBzb21lX3N0cmluZyA+IC9wcm9jL3Njc2kveHl6LzIiKQorICogICAgICAgICAgICAgICAgICAgICAgIDAgLT4gdXNlciB3aGF0IGRhdGEgZnJvbSB0aGlzIGRyaXZlcgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4gImNhdCAvcHJvYy9zY3NpL3h5ei8yIikKKyAqCisgKiAgICAgIFJldHVybnMgbGVuZ3RoIHdoZW4gMT09d3JpdGV0bzFfcmVhZDAuIE90aGVyd2lzZSBudW1iZXIgb2YgY2hhcnMKKyAqICAgICAgb3V0cHV0IHRvIGJ1ZmZlciBwYXN0IG9mZnNldC4KKyAqCisgKiAgICAgIExvY2tzOiBub25lIGhlbGQKKyAqCisgKiAgICAgIENhbGxpbmcgY29udGV4dDogcHJvY2VzcworICoKKyAqICAgICAgTm90ZXM6IERyaXZlbiBmcm9tIHNjc2lfcHJvYy5jIHdoaWNoIGludGVyZmFjZXMgdG8gcHJvY19mcy4gcHJvY19mcworICogICAgICBzdXBwb3J0IGNhbiBub3cgYmUgY29uZmlndXJlZCBvdXQgb2YgdGhlIHNjc2kgc3Vic3lzdGVtLgorICoKKyAqICAgICAgT3B0aW9uYWxseSBkZWZpbmVkIGluOiBMTEQKKyAqKi8KKyAgICBpbnQgcHJvY19pbmZvKGNoYXIgKiBidWZmZXIsIGNoYXIgKiogc3RhcnQsIG9mZl90IG9mZnNldCwgCisgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoLCBpbnQgaG9zdF9ubywgaW50IHdyaXRldG8xX3JlYWQwKQorCisKKy8qKgorICogICAgICBxdWV1ZWNvbW1hbmQgLSBxdWV1ZSBzY3NpIGNvbW1hbmQsIGludm9rZSBzY3AtPnNjc2lfZG9uZSBvbiBjb21wbGV0aW9uCisgKiAgICAgIEBzaG9zdDogcG9pbnRlciB0byB0aGUgc2NzaSBob3N0IG9iamVjdAorICogICAgICBAc2NwOiBwb2ludGVyIHRvIHNjc2kgY29tbWFuZCBvYmplY3QKKyAqCisgKiAgICAgIFJldHVybnMgMCBvbiBzdWNjZXNzLgorICoKKyAqICAgICAgSWYgdGhlcmUncyBhIGZhaWx1cmUsIHJldHVybiBlaXRoZXI6CisgKgorICogICAgICBTQ1NJX01MUVVFVUVfREVWSUNFX0JVU1kgaWYgdGhlIGRldmljZSBxdWV1ZSBpcyBmdWxsLCBvcgorICogICAgICBTQ1NJX01MUVVFVUVfSE9TVF9CVVNZIGlmIHRoZSBlbnRpcmUgaG9zdCBxdWV1ZSBpcyBmdWxsCisgKgorICogICAgICBPbiBib3RoIG9mIHRoZXNlIHJldHVybnMsIHRoZSBtaWQtbGF5ZXIgd2lsbCByZXF1ZXVlIHRoZSBJL08KKyAqCisgKiAgICAgIC0gaWYgdGhlIHJldHVybiBpcyBTQ1NJX01MUVVFVUVfREVWSUNFX0JVU1ksIG9ubHkgdGhhdCBwYXJ0aWN1bGFyCisgKiAgICAgIGRldmljZSB3aWxsIGJlIHBhdXNlZCwgYW5kIGl0IHdpbGwgYmUgdW5wYXVzZWQgd2hlbiBhIGNvbW1hbmQgdG8KKyAqICAgICAgdGhlIGRldmljZSByZXR1cm5zIChvciBhZnRlciBhIGJyaWVmIGRlbGF5IGlmIHRoZXJlIGFyZSBubyBtb3JlCisgKiAgICAgIG91dHN0YW5kaW5nIGNvbW1hbmRzIHRvIGl0KS4gIENvbW1hbmRzIHRvIG90aGVyIGRldmljZXMgY29udGludWUKKyAqICAgICAgdG8gYmUgcHJvY2Vzc2VkIG5vcm1hbGx5LgorICoKKyAqICAgICAgLSBpZiB0aGUgcmV0dXJuIGlzIFNDU0lfTUxRVUVVRV9IT1NUX0JVU1ksIGFsbCBJL08gdG8gdGhlIGhvc3QKKyAqICAgICAgaXMgcGF1c2VkIGFuZCB3aWxsIGJlIHVucGF1c2VkIHdoZW4gYW55IGNvbW1hbmQgcmV0dXJucyBmcm9tCisgKiAgICAgIHRoZSBob3N0IChvciBhZnRlciBhIGJyaWVmIGRlbGF5IGlmIHRoZXJlIGFyZSBubyBvdXRzdGFuZGluZworICogICAgICBjb21tYW5kcyB0byB0aGUgaG9zdCkuCisgKgorICogICAgICBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIGVhcmxpZXIgdmVyc2lvbnMgb2YgcXVldWVjb21tYW5kLCBhbnkKKyAqICAgICAgb3RoZXIgcmV0dXJuIHZhbHVlIGlzIHRyZWF0ZWQgdGhlIHNhbWUgYXMKKyAqICAgICAgU0NTSV9NTFFVRVVFX0hPU1RfQlVTWS4KKyAqCisgKiAgICAgIE90aGVyIHR5cGVzIG9mIGVycm9ycyB0aGF0IGFyZSBkZXRlY3RlZCBpbW1lZGlhdGVseSBtYXkgYmUKKyAqICAgICAgZmxhZ2dlZCBieSBzZXR0aW5nIHNjcC0+cmVzdWx0IHRvIGFuIGFwcHJvcHJpYXRlIHZhbHVlLAorICogICAgICBpbnZva2luZyB0aGUgc2NwLT5zY3NpX2RvbmUgY2FsbGJhY2ssIGFuZCB0aGVuIHJldHVybmluZyAwCisgKiAgICAgIGZyb20gdGhpcyBmdW5jdGlvbi4gSWYgdGhlIGNvbW1hbmQgaXMgbm90IHBlcmZvcm1lZAorICogICAgICBpbW1lZGlhdGVseSAoYW5kIHRoZSBMTEQgaXMgc3RhcnRpbmcgKG9yIHdpbGwgc3RhcnQpIHRoZSBnaXZlbgorICogICAgICBjb21tYW5kKSB0aGVuIHRoaXMgZnVuY3Rpb24gc2hvdWxkIHBsYWNlIDAgaW4gc2NwLT5yZXN1bHQgYW5kCisgKiAgICAgIHJldHVybiAwLgorICoKKyAqICAgICAgQ29tbWFuZCBvd25lcnNoaXAuICBJZiB0aGUgZHJpdmVyIHJldHVybnMgemVybywgaXQgb3ducyB0aGUKKyAqICAgICAgY29tbWFuZCBhbmQgbXVzdCB0YWtlIHJlc3BvbnNpYmlsaXR5IGZvciBlbnN1cmluZyB0aGUKKyAqICAgICAgc2NwLT5zY3NpX2RvbmUgY2FsbGJhY2sgaXMgZXhlY3V0ZWQuICBOb3RlOiB0aGUgZHJpdmVyIG1heQorICogICAgICBjYWxsIHNjcC0+c2NzaV9kb25lIGJlZm9yZSByZXR1cm5pbmcgemVybywgYnV0IGFmdGVyIGl0IGhhcworICogICAgICBjYWxsZWQgc2NwLT5zY3NpX2RvbmUsIGl0IG1heSBub3QgcmV0dXJuIGFueSB2YWx1ZSBvdGhlciB0aGFuCisgKiAgICAgIHplcm8uICBJZiB0aGUgZHJpdmVyIG1ha2VzIGEgbm9uLXplcm8gcmV0dXJuLCBpdCBtdXN0IG5vdAorICogICAgICBleGVjdXRlIHRoZSBjb21tYW5kJ3Mgc2NzaV9kb25lIGNhbGxiYWNrIGF0IGFueSB0aW1lLgorICoKKyAqICAgICAgTG9ja3M6IHVwIHRvIGFuZCBpbmNsdWRpbmcgMi42LjM2LCBzdHJ1Y3QgU2NzaV9Ib3N0Ojpob3N0X2xvY2sKKyAqICAgICAgICAgICAgIGhlbGQgb24gZW50cnkgKHdpdGggImlycXNhdmUiKSBhbmQgaXMgZXhwZWN0ZWQgdG8gYmUKKyAqICAgICAgICAgICAgIGhlbGQgb24gcmV0dXJuLiBGcm9tIDIuNi4zNyBvbndhcmRzLCBxdWV1ZWNvbW1hbmQgaXMKKyAqICAgICAgICAgICAgIGNhbGxlZCB3aXRob3V0IGFueSBsb2NrcyBoZWxkLgorICoKKyAqICAgICAgQ2FsbGluZyBjb250ZXh0OiBpbiBpbnRlcnJ1cHQgKHNvZnQgaXJxKSBvciBwcm9jZXNzIGNvbnRleHQKKyAqCisgKiAgICAgIE5vdGVzOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSByZWxhdGl2ZWx5IGZhc3QuIE5vcm1hbGx5IGl0CisgKiAgICAgIHdpbGwgbm90IHdhaXQgZm9yIElPIHRvIGNvbXBsZXRlLiBIZW5jZSB0aGUgc2NwLT5zY3NpX2RvbmUKKyAqICAgICAgY2FsbGJhY2sgaXMgaW52b2tlZCAob2Z0ZW4gZGlyZWN0bHkgZnJvbSBhbiBpbnRlcnJ1cHQgc2VydmljZQorICogICAgICByb3V0aW5lKSBzb21lIHRpbWUgYWZ0ZXIgdGhpcyBmdW5jdGlvbiBoYXMgcmV0dXJuZWQuIEluIHNvbWUKKyAqICAgICAgY2FzZXMgKGUuZy4gcHNldWRvIGFkYXB0ZXIgZHJpdmVycyB0aGF0IG1hbnVmYWN0dXJlIHRoZQorICogICAgICByZXNwb25zZSB0byBhIFNDU0kgSU5RVUlSWSkgdGhlIHNjcC0+c2NzaV9kb25lIGNhbGxiYWNrIG1heSBiZQorICogICAgICBpbnZva2VkIGJlZm9yZSB0aGlzIGZ1bmN0aW9uIHJldHVybnMuICBJZiB0aGUgc2NwLT5zY3NpX2RvbmUKKyAqICAgICAgY2FsbGJhY2sgaXMgbm90IGludm9rZWQgd2l0aGluIGEgY2VydGFpbiBwZXJpb2QgdGhlIFNDU0kgbWlkCisgKiAgICAgIGxldmVsIHdpbGwgY29tbWVuY2UgZXJyb3IgcHJvY2Vzc2luZy4gIElmIGEgc3RhdHVzIG9mIENIRUNLCisgKiAgICAgIENPTkRJVElPTiBpcyBwbGFjZWQgaW4gInJlc3VsdCIgd2hlbiB0aGUgc2NwLT5zY3NpX2RvbmUKKyAqICAgICAgY2FsbGJhY2sgaXMgaW52b2tlZCwgdGhlbiB0aGUgTExEIGRyaXZlciBzaG91bGQgcGVyZm9ybQorICogICAgICBhdXRvc2Vuc2UgYW5kIGZpbGwgaW4gdGhlIHN0cnVjdCBzY3NpX2NtbmQ6OnNlbnNlX2J1ZmZlcgorICogICAgICBhcnJheS4gVGhlIHNjc2lfY21uZDo6c2Vuc2VfYnVmZmVyIGFycmF5IGlzIHplcm9lZCBwcmlvciB0bworICogICAgICB0aGUgbWlkIGxldmVsIHF1ZXVpbmcgYSBjb21tYW5kIHRvIGFuIExMRC4KKyAqCisgKiAgICAgIERlZmluZWQgaW46IExMRAorICoqLworICAgIGludCBxdWV1ZWNvbW1hbmQoc3RydWN0IFNjc2lfSG9zdCAqc2hvc3QsIHN0cnVjdCBzY3NpX2NtbmQgKiBzY3ApCisKKworLyoqCisgKiAgICAgIHJlbGVhc2UgLSByZWxlYXNlIGFsbCByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIGdpdmVuIGhvc3QKKyAqICAgICAgQHNocDogaG9zdCB0byBiZSByZWxlYXNlZC4KKyAqCisgKiAgICAgIFJldHVybiB2YWx1ZSBpZ25vcmVkIChjb3VsZCBzb29uIGJlIGEgZnVuY3Rpb24gcmV0dXJuaW5nIHZvaWQpLgorICoKKyAqICAgICAgTG9ja3M6IG5vbmUgaGVsZAorICoKKyAqICAgICAgQ2FsbGluZyBjb250ZXh0OiBwcm9jZXNzCisgKgorICogICAgICBOb3RlczogSW52b2tlZCBmcm9tIHNjc2lfbW9kdWxlLmMncyBleGl0X3RoaXNfc2NzaV9kcml2ZXIoKS4KKyAqICAgICAgTExEJ3MgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiBzaG91bGQgY2FsbCAKKyAqICAgICAgc2NzaV91bnJlZ2lzdGVyKHNocCkgcHJpb3IgdG8gcmV0dXJuaW5nLgorICogICAgICBPbmx5IG5lZWRlZCBmb3Igb2xkLXN0eWxlIGhvc3QgdGVtcGxhdGVzLgorICoKKyAqICAgICAgRGVmaW5lZCBpbjogTExEIChyZXF1aXJlZCBpbiAicGFzc2l2ZSBpbml0aWFsaXphdGlvbiBtb2RlbCIsCisgKiAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIG5vdCBiZSBkZWZpbmVkIGluIGhvdHBsdWcgbW9kZWwpCisgKiovCisgICAgaW50IHJlbGVhc2Uoc3RydWN0IFNjc2lfSG9zdCAqIHNocCkKKworCisvKioKKyAqICAgICAgc2xhdmVfYWxsb2MgLSAgIHByaW9yIHRvIGFueSBjb21tYW5kcyBiZWluZyBzZW50IHRvIGEgbmV3IGRldmljZSAKKyAqICAgICAgICAgICAgICAgICAgICAgIChpLmUuIGp1c3QgcHJpb3IgdG8gc2NhbikgdGhpcyBjYWxsIGlzIG1hZGUKKyAqICAgICAgQHNkcDogcG9pbnRlciB0byBuZXcgZGV2aWNlIChhYm91dCB0byBiZSBzY2FubmVkKQorICoKKyAqICAgICAgUmV0dXJucyAwIGlmIG9rLiBBbnkgb3RoZXIgcmV0dXJuIGlzIGFzc3VtZWQgdG8gYmUgYW4gZXJyb3IgYW5kCisgKiAgICAgIHRoZSBkZXZpY2UgaXMgaWdub3JlZC4KKyAqCisgKiAgICAgIExvY2tzOiBub25lCisgKgorICogICAgICBDYWxsaW5nIGNvbnRleHQ6IHByb2Nlc3MKKyAqCisgKiAgICAgIE5vdGVzOiBBbGxvd3MgdGhlIGRyaXZlciB0byBhbGxvY2F0ZSBhbnkgcmVzb3VyY2VzIGZvciBhIGRldmljZQorICogICAgICBwcmlvciB0byBpdHMgaW5pdGlhbCBzY2FuLiBUaGUgY29ycmVzcG9uZGluZyBzY3NpIGRldmljZSBtYXkgbm90CisgKiAgICAgIGV4aXN0IGJ1dCB0aGUgbWlkIGxldmVsIGlzIGp1c3QgYWJvdXQgdG8gc2NhbiBmb3IgaXQgKGkuZS4gc2VuZAorICogICAgICBhbmQgSU5RVUlSWSBjb21tYW5kIHBsdXMgLi4uKS4gSWYgYSBkZXZpY2UgaXMgZm91bmQgdGhlbgorICogICAgICBzbGF2ZV9jb25maWd1cmUoKSB3aWxsIGJlIGNhbGxlZCB3aGlsZSBpZiBhIGRldmljZSBpcyBub3QgZm91bmQKKyAqICAgICAgc2xhdmVfZGVzdHJveSgpIGlzIGNhbGxlZC4KKyAqICAgICAgRm9yIG1vcmUgZGV0YWlscyBzZWUgdGhlIGluY2x1ZGUvc2NzaS9zY3NpX2hvc3QuaCBmaWxlLgorICoKKyAqICAgICAgT3B0aW9uYWxseSBkZWZpbmVkIGluOiBMTEQKKyAqKi8KKyAgICBpbnQgc2xhdmVfYWxsb2Moc3RydWN0IHNjc2lfZGV2aWNlICpzZHApCisKKworLyoqCisgKiAgICAgIHNsYXZlX2NvbmZpZ3VyZSAtIGRyaXZlciBmaW5lIHR1bmluZyBmb3IgZ2l2ZW4gZGV2aWNlIGp1c3QgYWZ0ZXIgaXQKKyAqICAgICAgICAgICAgICAgICAgICAgaGFzIGJlZW4gZmlyc3Qgc2Nhbm5lZCAoaS5lLiBpdCByZXNwb25kZWQgdG8gYW4KKyAqICAgICAgICAgICAgICAgICAgICAgSU5RVUlSWSkKKyAqICAgICAgQHNkcDogZGV2aWNlIHRoYXQgaGFzIGp1c3QgYmVlbiBhdHRhY2hlZAorICoKKyAqICAgICAgUmV0dXJucyAwIGlmIG9rLiBBbnkgb3RoZXIgcmV0dXJuIGlzIGFzc3VtZWQgdG8gYmUgYW4gZXJyb3IgYW5kCisgKiAgICAgIHRoZSBkZXZpY2UgaXMgdGFrZW4gb2ZmbGluZS4gW29mZmxpbmUgZGV2aWNlcyB3aWxsIF9ub3RfIGhhdmUKKyAqICAgICAgc2xhdmVfZGVzdHJveSgpIGNhbGxlZCBvbiB0aGVtIHNvIGNsZWFuIHVwIHJlc291cmNlcy5dCisgKgorICogICAgICBMb2Nrczogbm9uZQorICoKKyAqICAgICAgQ2FsbGluZyBjb250ZXh0OiBwcm9jZXNzCisgKgorICogICAgICBOb3RlczogQWxsb3dzIHRoZSBkcml2ZXIgdG8gaW5zcGVjdCB0aGUgcmVzcG9uc2UgdG8gdGhlIGluaXRpYWwKKyAqICAgICAgSU5RVUlSWSBkb25lIGJ5IHRoZSBzY2FubmluZyBjb2RlIGFuZCB0YWtlIGFwcHJvcHJpYXRlIGFjdGlvbi4KKyAqICAgICAgRm9yIG1vcmUgZGV0YWlscyBzZWUgdGhlIGluY2x1ZGUvc2NzaS9zY3NpX2hvc3QuaCBmaWxlLgorICoKKyAqICAgICAgT3B0aW9uYWxseSBkZWZpbmVkIGluOiBMTEQKKyAqKi8KKyAgICBpbnQgc2xhdmVfY29uZmlndXJlKHN0cnVjdCBzY3NpX2RldmljZSAqc2RwKQorCisKKy8qKgorICogICAgICBzbGF2ZV9kZXN0cm95IC0gZ2l2ZW4gZGV2aWNlIGlzIGFib3V0IHRvIGJlIHNodXQgZG93bi4gQWxsCisgKiAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eSBoYXMgY2Vhc2VkIG9uIHRoaXMgZGV2aWNlLgorICogICAgICBAc2RwOiBkZXZpY2UgdGhhdCBpcyBhYm91dCB0byBiZSBzaHV0IGRvd24KKyAqCisgKiAgICAgIFJldHVybnMgbm90aGluZworICoKKyAqICAgICAgTG9ja3M6IG5vbmUKKyAqCisgKiAgICAgIENhbGxpbmcgY29udGV4dDogcHJvY2VzcworICoKKyAqICAgICAgTm90ZXM6IE1pZCBsZXZlbCBzdHJ1Y3R1cmVzIGZvciBnaXZlbiBkZXZpY2UgYXJlIHN0aWxsIGluIHBsYWNlCisgKiAgICAgIGJ1dCBhcmUgYWJvdXQgdG8gYmUgdG9ybiBkb3duLiBBbnkgcGVyIGRldmljZSByZXNvdXJjZXMgYWxsb2NhdGVkCisgKiAgICAgIGJ5IHRoaXMgZHJpdmVyIGZvciBnaXZlbiBkZXZpY2Ugc2hvdWxkIGJlIGZyZWVkIG5vdy4gTm8gZnVydGhlcgorICogICAgICBjb21tYW5kcyB3aWxsIGJlIHNlbnQgZm9yIHRoaXMgc2RwIGluc3RhbmNlLiBbSG93ZXZlciB0aGUgZGV2aWNlCisgKiAgICAgIGNvdWxkIGJlIHJlLWF0dGFjaGVkIGluIHRoZSBmdXR1cmUgaW4gd2hpY2ggY2FzZSBhIG5ldyBpbnN0YW5jZQorICogICAgICBvZiBzdHJ1Y3Qgc2NzaV9kZXZpY2Ugd291bGQgYmUgc3VwcGxpZWQgYnkgZnV0dXJlIHNsYXZlX2FsbG9jKCkKKyAqICAgICAgYW5kIHNsYXZlX2NvbmZpZ3VyZSgpIGNhbGxzLl0KKyAqCisgKiAgICAgIE9wdGlvbmFsbHkgZGVmaW5lZCBpbjogTExECisgKiovCisgICAgdm9pZCBzbGF2ZV9kZXN0cm95KHN0cnVjdCBzY3NpX2RldmljZSAqc2RwKQorCisKKworRGF0YSBTdHJ1Y3R1cmVzCis9PT09PT09PT09PT09PT0KK3N0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZXJlIGlzIG9uZSAic3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSIgaW5zdGFuY2UgcGVyIExMRCAqKiouIEl0IGlzCit0eXBpY2FsbHkgaW5pdGlhbGl6ZWQgYXMgYSBmaWxlIHNjb3BlIHN0YXRpYyBpbiBhIGRyaXZlcidzIGhlYWRlciBmaWxlLiBUaGF0Cit3YXkgbWVtYmVycyB0aGF0IGFyZSBub3QgZXhwbGljaXRseSBpbml0aWFsaXplZCB3aWxsIGJlIHNldCB0byAwIG9yIE5VTEwuCitNZW1iZXIgb2YgaW50ZXJlc3Q6CisgICAgbmFtZSAgICAgICAgIC0gbmFtZSBvZiBkcml2ZXIgKG1heSBjb250YWluIHNwYWNlcywgcGxlYXNlIGxpbWl0IHRvCisgICAgICAgICAgICAgICAgICAgbGVzcyB0aGFuIDgwIGNoYXJhY3RlcnMpCisgICAgcHJvY19uYW1lICAgIC0gbmFtZSB1c2VkIGluICIvcHJvYy9zY3NpLzxwcm9jX25hbWU+Lzxob3N0X25vPiIgYW5kCisgICAgICAgICAgICAgICAgICAgYnkgc3lzZnMgaW4gb25lIG9mIGl0cyAiZHJpdmVycyIgZGlyZWN0b3JpZXMuIEhlbmNlCisgICAgICAgICAgICAgICAgICAgInByb2NfbmFtZSIgc2hvdWxkIG9ubHkgY29udGFpbiBjaGFyYWN0ZXJzIGFjY2VwdGFibGUKKyAgICAgICAgICAgICAgICAgICB0byBhIFVuaXggZmlsZSBuYW1lLgorICAgKCpxdWV1ZWNvbW1hbmQpKCkgLSBwcmltYXJ5IGNhbGxiYWNrIHRoYXQgdGhlIG1pZCBsZXZlbCB1c2VzIHRvIGluamVjdAorICAgICAgICAgICAgICAgICAgIFNDU0kgY29tbWFuZHMgaW50byBhbiBMTEQuCitUaGUgc3RydWN0dXJlIGlzIGRlZmluZWQgYW5kIGNvbW1lbnRlZCBpbiBpbmNsdWRlL3Njc2kvc2NzaV9ob3N0LmgKKworKioqIEluIGV4dHJlbWUgc2l0dWF0aW9ucyBhIHNpbmdsZSBkcml2ZXIgbWF5IGhhdmUgc2V2ZXJhbCBpbnN0YW5jZXMKKyAgICBpZiBpdCBjb250cm9scyBzZXZlcmFsIGRpZmZlcmVudCBjbGFzc2VzIG9mIGhhcmR3YXJlIChlLmcuIGFuIExMRAorICAgIHRoYXQgaGFuZGxlcyBib3RoIElTQSBhbmQgUENJIGNhcmRzIGFuZCBoYXMgYSBzZXBhcmF0ZSBpbnN0YW5jZSBvZgorICAgIHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgZm9yIGVhY2ggY2xhc3MpLgorCitzdHJ1Y3QgU2NzaV9Ib3N0CistLS0tLS0tLS0tLS0tLS0tCitUaGVyZSBpcyBvbmUgc3RydWN0IFNjc2lfSG9zdCBpbnN0YW5jZSBwZXIgaG9zdCAoSEJBKSB0aGF0IGFuIExMRAorY29udHJvbHMuIFRoZSBzdHJ1Y3QgU2NzaV9Ib3N0IHN0cnVjdHVyZSBoYXMgbWFueSBtZW1iZXJzIGluIGNvbW1vbgord2l0aCAic3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZSIuIFdoZW4gYSBuZXcgc3RydWN0IFNjc2lfSG9zdCBpbnN0YW5jZQoraXMgY3JlYXRlZCAoaW4gc2NzaV9ob3N0X2FsbG9jKCkgaW4gaG9zdHMuYykgdGhvc2UgY29tbW9uIG1lbWJlcnMgYXJlCitpbml0aWFsaXplZCBmcm9tIHRoZSBkcml2ZXIncyBzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIGluc3RhbmNlLiBNZW1iZXJzCitvZiBpbnRlcmVzdDoKKyAgICBob3N0X25vICAgICAgLSBzeXN0ZW0gd2lkZSB1bmlxdWUgbnVtYmVyIHRoYXQgaXMgdXNlZCBmb3IgaWRlbnRpZnlpbmcKKyAgICAgICAgICAgICAgICAgICB0aGlzIGhvc3QuIElzc3VlZCBpbiBhc2NlbmRpbmcgb3JkZXIgZnJvbSAwLgorICAgIGNhbl9xdWV1ZSAgICAtIG11c3QgYmUgZ3JlYXRlciB0aGFuIDA7IGRvIG5vdCBzZW5kIG1vcmUgdGhhbiBjYW5fcXVldWUKKyAgICAgICAgICAgICAgICAgICBjb21tYW5kcyB0byB0aGUgYWRhcHRlci4KKyAgICB0aGlzX2lkICAgICAgLSBzY3NpIGlkIG9mIGhvc3QgKHNjc2kgaW5pdGlhdG9yKSBvciAtMSBpZiBub3Qga25vd24KKyAgICBzZ190YWJsZXNpemUgLSBtYXhpbXVtIHNjYXR0ZXIgZ2F0aGVyIGVsZW1lbnRzIGFsbG93ZWQgYnkgaG9zdC4KKyAgICAgICAgICAgICAgICAgICAwIGltcGxpZXMgc2NhdHRlciBnYXRoZXIgbm90IHN1cHBvcnRlZCBieSBob3N0CisgICAgbWF4X3NlY3RvcnMgIC0gbWF4aW11bSBudW1iZXIgb2Ygc2VjdG9ycyAodXN1YWxseSA1MTIgYnl0ZXMpIGFsbG93ZWQKKyAgICAgICAgICAgICAgICAgICBpbiBhIHNpbmdsZSBTQ1NJIGNvbW1hbmQuIFRoZSBkZWZhdWx0IHZhbHVlIG9mIDAgbGVhZHMKKyAgICAgICAgICAgICAgICAgICB0byBhIHNldHRpbmcgb2YgU0NTSV9ERUZBVUxUX01BWF9TRUNUT1JTIChkZWZpbmVkIGluCisgICAgICAgICAgICAgICAgICAgc2NzaV9ob3N0LmgpIHdoaWNoIGlzIGN1cnJlbnRseSBzZXQgdG8gMTAyNC4gU28gZm9yIGEKKyAgICAgICAgICAgICAgICAgICBkaXNrIHRoZSBtYXhpbXVtIHRyYW5zZmVyIHNpemUgaXMgNTEyIEtCIHdoZW4gbWF4X3NlY3RvcnMKKyAgICAgICAgICAgICAgICAgICBpcyBub3QgZGVmaW5lZC4gTm90ZSB0aGF0IHRoaXMgc2l6ZSBtYXkgbm90IGJlIHN1ZmZpY2llbnQKKyAgICAgICAgICAgICAgICAgICBmb3IgZGlzayBmaXJtd2FyZSB1cGxvYWRzLgorICAgIGNtZF9wZXJfbHVuICAtIG1heGltdW0gbnVtYmVyIG9mIGNvbW1hbmRzIHRoYXQgY2FuIGJlIHF1ZXVlZCBvbiBkZXZpY2VzCisgICAgICAgICAgICAgICAgICAgY29udHJvbGxlZCBieSB0aGUgaG9zdC4gT3ZlcnJpZGRlbiBieSBMTEQgY2FsbHMgdG8KKyAgICAgICAgICAgICAgICAgICBzY3NpX2NoYW5nZV9xdWV1ZV9kZXB0aCgpLgorICAgIHVuY2hlY2tlZF9pc2FfZG1hIC0gMT0+b25seSB1c2UgYm90dG9tIDE2IE1CIG9mIHJhbSAoSVNBIERNQSBhZGRyZXNzaW5nCisgICAgICAgICAgICAgICAgICAgcmVzdHJpY3Rpb24pLCAwPT5jYW4gdXNlIGZ1bGwgMzIgYml0IChvciBiZXR0ZXIpIERNQQorICAgICAgICAgICAgICAgICAgIGFkZHJlc3Mgc3BhY2UKKyAgICB1c2VfY2x1c3RlcmluZyAtIDE9PlNDU0kgY29tbWFuZHMgaW4gbWlkIGxldmVsJ3MgcXVldWUgY2FuIGJlIG1lcmdlZCwKKyAgICAgICAgICAgICAgICAgICAgIDA9PmRpc2FsbG93IFNDU0kgY29tbWFuZCBtZXJnaW5nCisgICAgbm9fYXN5bmNfYWJvcnQgLSAxPT5Bc3luY2hyb25vdXMgYWJvcnRzIGFyZSBub3Qgc3VwcG9ydGVkCisgICAgICAgICAgICAgICAgICAgICAwPT5UaW1lZC1vdXQgY29tbWFuZHMgd2lsbCBiZSBhYm9ydGVkIGFzeW5jaHJvbm91c2x5CisgICAgaG9zdHQgICAgICAgIC0gcG9pbnRlciB0byBkcml2ZXIncyBzdHJ1Y3Qgc2NzaV9ob3N0X3RlbXBsYXRlIGZyb20gd2hpY2gKKyAgICAgICAgICAgICAgICAgICB0aGlzIHN0cnVjdCBTY3NpX0hvc3QgaW5zdGFuY2Ugd2FzIHNwYXduZWQKKyAgICBob3N0dC0+cHJvY19uYW1lICAtIG5hbWUgb2YgTExELiBUaGlzIGlzIHRoZSBkcml2ZXIgbmFtZSB0aGF0IHN5c2ZzIHVzZXMKKyAgICB0cmFuc3BvcnR0ICAgLSBwb2ludGVyIHRvIGRyaXZlcidzIHN0cnVjdCBzY3NpX3RyYW5zcG9ydF90ZW1wbGF0ZSBpbnN0YW5jZQorICAgICAgICAgICAgICAgICAgIChpZiBhbnkpLiBGQyBhbmQgU1BJIHRyYW5zcG9ydHMgY3VycmVudGx5IHN1cHBvcnRlZC4KKyAgICBzaF9saXN0ICAgICAgLSBhIGRvdWJsZSBsaW5rZWQgbGlzdCBvZiBwb2ludGVycyB0byBhbGwgc3RydWN0IFNjc2lfSG9zdAorICAgICAgICAgICAgICAgICAgIGluc3RhbmNlcyAoY3VycmVudGx5IG9yZGVyZWQgYnkgYXNjZW5kaW5nIGhvc3Rfbm8pCisgICAgbXlfZGV2aWNlcyAgIC0gYSBkb3VibGUgbGlua2VkIGxpc3Qgb2YgcG9pbnRlcnMgdG8gc3RydWN0IHNjc2lfZGV2aWNlIAorICAgICAgICAgICAgICAgICAgIGluc3RhbmNlcyB0aGF0IGJlbG9uZyB0byB0aGlzIGhvc3QuCisgICAgaG9zdGRhdGFbMF0gIC0gYXJlYSByZXNlcnZlZCBmb3IgTExEIGF0IGVuZCBvZiBzdHJ1Y3QgU2NzaV9Ib3N0LiBTaXplCisgICAgICAgICAgICAgICAgICAgaXMgc2V0IGJ5IHRoZSBzZWNvbmQgYXJndW1lbnQgKG5hbWVkICd4dHJfYnl0ZXMnKSB0bworICAgICAgICAgICAgICAgICAgIHNjc2lfaG9zdF9hbGxvYygpIG9yIHNjc2lfcmVnaXN0ZXIoKS4KKyAgICB2ZW5kb3JfaWQgICAgLSBhIHVuaXF1ZSB2YWx1ZSB0aGF0IGlkZW50aWZpZXMgdGhlIHZlbmRvciBzdXBwbHlpbmcKKyAgICAgICAgICAgICAgICAgICB0aGUgTExEIGZvciB0aGUgU2NzaV9Ib3N0LiAgVXNlZCBtb3N0IG9mdGVuIGluIHZhbGlkYXRpbmcKKyAgICAgICAgICAgICAgICAgICB2ZW5kb3Itc3BlY2lmaWMgbWVzc2FnZSByZXF1ZXN0cy4gIFZhbHVlIGNvbnNpc3RzIG9mIGFuCisgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllciB0eXBlIGFuZCBhIHZlbmRvci1zcGVjaWZpYyB2YWx1ZS4KKyAgICAgICAgICAgICAgICAgICBTZWUgc2NzaV9uZXRsaW5rLmggZm9yIGEgZGVzY3JpcHRpb24gb2YgdmFsaWQgZm9ybWF0cy4KKworVGhlIHNjc2lfaG9zdCBzdHJ1Y3R1cmUgaXMgZGVmaW5lZCBpbiBpbmNsdWRlL3Njc2kvc2NzaV9ob3N0LmgKKworc3RydWN0IHNjc2lfZGV2aWNlCistLS0tLS0tLS0tLS0tLS0tLS0KK0dlbmVyYWxseSwgdGhlcmUgaXMgb25lIGluc3RhbmNlIG9mIHRoaXMgc3RydWN0dXJlIGZvciBlYWNoIFNDU0kgbG9naWNhbCB1bml0CitvbiBhIGhvc3QuIFNjc2kgZGV2aWNlcyBjb25uZWN0ZWQgdG8gYSBob3N0IGFyZSB1bmlxdWVseSBpZGVudGlmaWVkIGJ5IGEKK2NoYW5uZWwgbnVtYmVyLCB0YXJnZXQgaWQgYW5kIGxvZ2ljYWwgdW5pdCBudW1iZXIgKGx1bikuCitUaGUgc3RydWN0dXJlIGlzIGRlZmluZWQgaW4gaW5jbHVkZS9zY3NpL3Njc2lfZGV2aWNlLmgKKworc3RydWN0IHNjc2lfY21uZAorLS0tLS0tLS0tLS0tLS0tLQorSW5zdGFuY2VzIG9mIHRoaXMgc3RydWN0dXJlIGNvbnZleSBTQ1NJIGNvbW1hbmRzIHRvIHRoZSBMTEQgYW5kIHJlc3BvbnNlcworYmFjayB0byB0aGUgbWlkIGxldmVsLiBUaGUgU0NTSSBtaWQgbGV2ZWwgd2lsbCBlbnN1cmUgdGhhdCBubyBtb3JlIFNDU0kKK2NvbW1hbmRzIGJlY29tZSBxdWV1ZWQgYWdhaW5zdCB0aGUgTExEIHRoYW4gYXJlIGluZGljYXRlZCBieQorc2NzaV9jaGFuZ2VfcXVldWVfZGVwdGgoKSAob3Igc3RydWN0IFNjc2lfSG9zdDo6Y21kX3Blcl9sdW4pLiBUaGVyZSB3aWxsCitiZSBhdCBsZWFzdCBvbmUgaW5zdGFuY2Ugb2Ygc3RydWN0IHNjc2lfY21uZCBhdmFpbGFibGUgZm9yIGVhY2ggU0NTSSBkZXZpY2UuCitNZW1iZXJzIG9mIGludGVyZXN0OgorICAgIGNtbmQgICAgICAgICAtIGFycmF5IGNvbnRhaW5pbmcgU0NTSSBjb21tYW5kCisgICAgY21uZF9sZW4gICAgIC0gbGVuZ3RoIChpbiBieXRlcykgb2YgU0NTSSBjb21tYW5kCisgICAgc2NfZGF0YV9kaXJlY3Rpb24gLSBkaXJlY3Rpb24gb2YgZGF0YSB0cmFuc2ZlciBpbiBkYXRhIHBoYXNlLiBTZWUKKyAgICAgICAgICAgICAgICAiZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24iIGluIGluY2x1ZGUvbGludXgvZG1hLW1hcHBpbmcuaAorICAgIHJlcXVlc3RfYnVmZmxlbiAtIG51bWJlciBvZiBkYXRhIGJ5dGVzIHRvIHRyYW5zZmVyICgwIGlmIG5vIGRhdGEgcGhhc2UpCisgICAgdXNlX3NnICAgICAgIC0gPT0wIC0+IG5vIHNjYXR0ZXIgZ2F0aGVyIGxpc3QsIGhlbmNlIHRyYW5zZmVyIGRhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdG8vZnJvbSByZXF1ZXN0X2J1ZmZlcgorICAgICAgICAgICAgICAgICAtID4wIC0+ICBzY2F0dGVyIGdhdGhlciBsaXN0IChhY3R1YWxseSBhbiBhcnJheSkgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9idWZmZXIgd2l0aCB1c2Vfc2cgZWxlbWVudHMKKyAgICByZXF1ZXN0X2J1ZmZlciAtIGVpdGhlciBjb250YWlucyBkYXRhIGJ1ZmZlciBvciBzY2F0dGVyIGdhdGhlciBsaXN0CisgICAgICAgICAgICAgICAgICAgICBkZXBlbmRpbmcgb24gdGhlIHNldHRpbmcgb2YgdXNlX3NnLiBTY2F0dGVyIGdhdGhlcgorICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgYXJlIGRlZmluZWQgYnkgJ3N0cnVjdCBzY2F0dGVybGlzdCcgZm91bmQKKyAgICAgICAgICAgICAgICAgICAgIGluIGluY2x1ZGUvbGludXgvc2NhdHRlcmxpc3QuaCAuCisgICAgZG9uZSAgICAgICAgIC0gZnVuY3Rpb24gcG9pbnRlciB0aGF0IHNob3VsZCBiZSBpbnZva2VkIGJ5IExMRCB3aGVuIHRoZQorICAgICAgICAgICAgICAgICAgIFNDU0kgY29tbWFuZCBpcyBjb21wbGV0ZWQgKHN1Y2Nlc3NmdWxseSBvciBvdGhlcndpc2UpLgorICAgICAgICAgICAgICAgICAgIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBieSBhbiBMTEQgaWYgdGhlIExMRCBoYXMgYWNjZXB0ZWQKKyAgICAgICAgICAgICAgICAgICB0aGUgY29tbWFuZCAoaS5lLiBxdWV1ZWNvbW1hbmQoKSByZXR1cm5lZCBvciB3aWxsIHJldHVybgorICAgICAgICAgICAgICAgICAgIDApLiBUaGUgTExEIG1heSBpbnZva2UgJ2RvbmUnICBwcmlvciB0byBxdWV1ZWNvbW1hbmQoKQorICAgICAgICAgICAgICAgICAgIGZpbmlzaGluZy4KKyAgICByZXN1bHQgICAgICAgLSBzaG91bGQgYmUgc2V0IGJ5IExMRCBwcmlvciB0byBjYWxsaW5nICdkb25lJy4gQSB2YWx1ZQorICAgICAgICAgICAgICAgICAgIG9mIDAgaW1wbGllcyBhIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQgY29tbWFuZCAoYW5kIGFsbAorICAgICAgICAgICAgICAgICAgIGRhdGEgKGlmIGFueSkgaGFzIGJlZW4gdHJhbnNmZXJyZWQgdG8gb3IgZnJvbSB0aGUgU0NTSQorICAgICAgICAgICAgICAgICAgIHRhcmdldCBkZXZpY2UpLiAncmVzdWx0JyBpcyBhIDMyIGJpdCB1bnNpZ25lZCBpbnRlZ2VyIHRoYXQKKyAgICAgICAgICAgICAgICAgICBjYW4gYmUgdmlld2VkIGFzIDQgcmVsYXRlZCBieXRlcy4gVGhlIFNDU0kgc3RhdHVzIHZhbHVlIGlzCisgICAgICAgICAgICAgICAgICAgaW4gdGhlIExTQi4gU2VlIGluY2x1ZGUvc2NzaS9zY3NpLmggc3RhdHVzX2J5dGUoKSwKKyAgICAgICAgICAgICAgICAgICBtc2dfYnl0ZSgpLCBob3N0X2J5dGUoKSBhbmQgZHJpdmVyX2J5dGUoKSBtYWNyb3MgYW5kCisgICAgICAgICAgICAgICAgICAgcmVsYXRlZCBjb25zdGFudHMuCisgICAgc2Vuc2VfYnVmZmVyIC0gYW4gYXJyYXkgKG1heGltdW0gc2l6ZTogU0NTSV9TRU5TRV9CVUZGRVJTSVpFIGJ5dGVzKSB0aGF0CisgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIHdyaXR0ZW4gd2hlbiB0aGUgU0NTSSBzdGF0dXMgKExTQiBvZiAncmVzdWx0JykKKyAgICAgICAgICAgICAgICAgICBpcyBzZXQgdG8gQ0hFQ0tfQ09ORElUSU9OICgyKS4gV2hlbiBDSEVDS19DT05ESVRJT04gaXMKKyAgICAgICAgICAgICAgICAgICBzZXQsIGlmIHRoZSB0b3AgbmliYmxlIG9mIHNlbnNlX2J1ZmZlclswXSBoYXMgdGhlIHZhbHVlIDcKKyAgICAgICAgICAgICAgICAgICB0aGVuIHRoZSBtaWQgbGV2ZWwgd2lsbCBhc3N1bWUgdGhlIHNlbnNlX2J1ZmZlciBhcnJheQorICAgICAgICAgICAgICAgICAgIGNvbnRhaW5zIGEgdmFsaWQgU0NTSSBzZW5zZSBidWZmZXI7IG90aGVyd2lzZSB0aGUgbWlkCisgICAgICAgICAgICAgICAgICAgbGV2ZWwgd2lsbCBpc3N1ZSBhIFJFUVVFU1RfU0VOU0UgU0NTSSBjb21tYW5kIHRvCisgICAgICAgICAgICAgICAgICAgcmV0cmlldmUgdGhlIHNlbnNlIGJ1ZmZlci4gVGhlIGxhdHRlciBzdHJhdGVneSBpcyBlcnJvcgorICAgICAgICAgICAgICAgICAgIHByb25lIGluIHRoZSBwcmVzZW5jZSBvZiBjb21tYW5kIHF1ZXVpbmcgc28gdGhlIExMRCBzaG91bGQKKyAgICAgICAgICAgICAgICAgICBhbHdheXMgImF1dG8tc2Vuc2UiLgorICAgIGRldmljZSAgICAgICAtIHBvaW50ZXIgdG8gc2NzaV9kZXZpY2Ugb2JqZWN0IHRoYXQgdGhpcyBjb21tYW5kIGlzCisgICAgICAgICAgICAgICAgICAgYXNzb2NpYXRlZCB3aXRoLgorICAgIHJlc2lkICAgICAgICAtIGFuIExMRCBzaG91bGQgc2V0IHRoaXMgc2lnbmVkIGludGVnZXIgdG8gdGhlIHJlcXVlc3RlZAorICAgICAgICAgICAgICAgICAgIHRyYW5zZmVyIGxlbmd0aCAoaS5lLiAncmVxdWVzdF9idWZmbGVuJykgbGVzcyB0aGUgbnVtYmVyCisgICAgICAgICAgICAgICAgICAgb2YgYnl0ZXMgdGhhdCBhcmUgYWN0dWFsbHkgdHJhbnNmZXJyZWQuICdyZXNpZCcgaXMKKyAgICAgICAgICAgICAgICAgICBwcmVzZXQgdG8gMCBzbyBhbiBMTEQgY2FuIGlnbm9yZSBpdCBpZiBpdCBjYW5ub3QgZGV0ZWN0CisgICAgICAgICAgICAgICAgICAgdW5kZXJydW5zIChvdmVycnVucyBzaG91bGQgYmUgcmFyZSkuIElmIHBvc3NpYmxlIGFuIExMRAorICAgICAgICAgICAgICAgICAgIHNob3VsZCBzZXQgJ3Jlc2lkJyBwcmlvciB0byBpbnZva2luZyAnZG9uZScuIFRoZSBtb3N0CisgICAgICAgICAgICAgICAgICAgaW50ZXJlc3RpbmcgY2FzZSBpcyBkYXRhIHRyYW5zZmVycyBmcm9tIGEgU0NTSSB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICBkZXZpY2UgKGUuZy4gUkVBRHMpIHRoYXQgdW5kZXJydW4uCisgICAgdW5kZXJmbG93ICAgIC0gTExEIHNob3VsZCBwbGFjZSAoRElEX0VSUk9SIDw8IDE2KSBpbiAncmVzdWx0JyBpZgorICAgICAgICAgICAgICAgICAgIGFjdHVhbCBudW1iZXIgb2YgYnl0ZXMgdHJhbnNmZXJyZWQgaXMgbGVzcyB0aGFuIHRoaXMKKyAgICAgICAgICAgICAgICAgICBmaWd1cmUuIE5vdCBtYW55IExMRHMgaW1wbGVtZW50IHRoaXMgY2hlY2sgYW5kIHNvbWUgdGhhdAorICAgICAgICAgICAgICAgICAgIGRvIGp1c3Qgb3V0cHV0IGFuIGVycm9yIG1lc3NhZ2UgdG8gdGhlIGxvZyByYXRoZXIgdGhhbgorICAgICAgICAgICAgICAgICAgIHJlcG9ydCBhIERJRF9FUlJPUi4gQmV0dGVyIGZvciBhbiBMTEQgdG8gaW1wbGVtZW50CisgICAgICAgICAgICAgICAgICAgJ3Jlc2lkJy4KKworSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBhIExMRCBzZXQgJ3Jlc2lkJyBvbiBkYXRhIHRyYW5zZmVycyBmcm9tIGEgU0NTSQordGFyZ2V0IGRldmljZSAoZS5nLiBSRUFEcykuIEl0IGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IHRoYXQgJ3Jlc2lkJyBpcyBzZXQKK3doZW4gc3VjaCBkYXRhIHRyYW5zZmVycyBoYXZlIHNlbnNlIGtleXMgb2YgTUVESVVNIEVSUk9SIGFuZCBIQVJEV0FSRSBFUlJPUgorKGFuZCBwb3NzaWJseSBSRUNPVkVSRUQgRVJST1IpLiBJbiB0aGVzZSBjYXNlcyBpZiBhIExMRCBpcyBpbiBkb3VidCBob3cgbXVjaAorZGF0YSBoYXMgYmVlbiByZWNlaXZlZCB0aGVuIHRoZSBzYWZlc3QgYXBwcm9hY2ggaXMgdG8gaW5kaWNhdGUgbm8gYnl0ZXMgaGF2ZQorYmVlbiByZWNlaXZlZC4gRm9yIGV4YW1wbGU6IHRvIGluZGljYXRlIHRoYXQgbm8gdmFsaWQgZGF0YSBoYXMgYmVlbiByZWNlaXZlZAorYSBMTEQgbWlnaHQgdXNlIHRoZXNlIGhlbHBlcnM6CisgICAgc2NzaV9zZXRfcmVzaWQoU0NwbnQsIHNjc2lfYnVmZmxlbihTQ3BudCkpOword2hlcmUgJ1NDcG50JyBpcyBhIHBvaW50ZXIgdG8gYSBzY3NpX2NtbmQgb2JqZWN0LiBUbyBpbmRpY2F0ZSBvbmx5IHRocmVlIDUxMgorYnl0ZXMgYmxvY2tzIGhhcyBiZWVuIHJlY2VpdmVkICdyZXNpZCcgY291bGQgYmUgc2V0IGxpa2UgdGhpczoKKyAgICBzY3NpX3NldF9yZXNpZChTQ3BudCwgc2NzaV9idWZmbGVuKFNDcG50KSAtICgzICogNTEyKSk7CisKK1RoZSBzY3NpX2NtbmQgc3RydWN0dXJlIGlzIGRlZmluZWQgaW4gaW5jbHVkZS9zY3NpL3Njc2lfY21uZC5oCisKKworTG9ja3MKKz09PT09CitFYWNoIHN0cnVjdCBTY3NpX0hvc3QgaW5zdGFuY2UgaGFzIGEgc3Bpbl9sb2NrIGNhbGxlZCBzdHJ1Y3QgCitTY3NpX0hvc3Q6OmRlZmF1bHRfbG9jayB3aGljaCBpcyBpbml0aWFsaXplZCBpbiBzY3NpX2hvc3RfYWxsb2MoKSBbZm91bmQgaW4gCitob3N0cy5jXS4gV2l0aGluIHRoZSBzYW1lIGZ1bmN0aW9uIHRoZSBzdHJ1Y3QgU2NzaV9Ib3N0Ojpob3N0X2xvY2sgcG9pbnRlcgoraXMgaW5pdGlhbGl6ZWQgdG8gcG9pbnQgYXQgZGVmYXVsdF9sb2NrLiAgVGhlcmVhZnRlciBsb2NrIGFuZCB1bmxvY2sKK29wZXJhdGlvbnMgcGVyZm9ybWVkIGJ5IHRoZSBtaWQgbGV2ZWwgdXNlIHRoZSBzdHJ1Y3QgU2NzaV9Ib3N0Ojpob3N0X2xvY2sKK3BvaW50ZXIuICBQcmV2aW91c2x5IGRyaXZlcnMgY291bGQgb3ZlcnJpZGUgdGhlIGhvc3RfbG9jayBwb2ludGVyIGJ1dAordGhpcyBpcyBub3QgYWxsb3dlZCBhbnltb3JlLgorCisKK0F1dG9zZW5zZQorPT09PT09PT09CitBdXRvc2Vuc2UgKG9yIGF1dG8tc2Vuc2UpIGlzIGRlZmluZWQgaW4gdGhlIFNBTS0yIGRvY3VtZW50IGFzICJ0aGUKK2F1dG9tYXRpYyByZXR1cm4gb2Ygc2Vuc2UgZGF0YSB0byB0aGUgYXBwbGljYXRpb24gY2xpZW50IGNvaW5jaWRlbnQKK3dpdGggdGhlIGNvbXBsZXRpb24gb2YgYSBTQ1NJIGNvbW1hbmQiIHdoZW4gYSBzdGF0dXMgb2YgQ0hFQ0sgQ09ORElUSU9OCitvY2N1cnMuIExMRHMgc2hvdWxkIHBlcmZvcm0gYXV0b3NlbnNlLiBUaGlzIHNob3VsZCBiZSBkb25lIHdoZW4gdGhlIExMRAorZGV0ZWN0cyBhIENIRUNLIENPTkRJVElPTiBzdGF0dXMgYnkgZWl0aGVyOiAKKyAgICBhKSBpbnN0cnVjdGluZyB0aGUgU0NTSSBwcm90b2NvbCAoZS5nLiBTQ1NJIFBhcmFsbGVsIEludGVyZmFjZSAoU1BJKSkKKyAgICAgICB0byBwZXJmb3JtIGFuIGV4dHJhIGRhdGEgaW4gcGhhc2Ugb24gc3VjaCByZXNwb25zZXMKKyAgICBiKSBvciwgdGhlIExMRCBpc3N1aW5nIGEgUkVRVUVTVCBTRU5TRSBjb21tYW5kIGl0c2VsZgorCitFaXRoZXIgd2F5LCB3aGVuIGEgc3RhdHVzIG9mIENIRUNLIENPTkRJVElPTiBpcyBkZXRlY3RlZCwgdGhlIG1pZCBsZXZlbAorZGVjaWRlcyB3aGV0aGVyIHRoZSBMTEQgaGFzIHBlcmZvcm1lZCBhdXRvc2Vuc2UgYnkgY2hlY2tpbmcgc3RydWN0IAorc2NzaV9jbW5kOjpzZW5zZV9idWZmZXJbMF0gLiBJZiB0aGlzIGJ5dGUgaGFzIGFuIHVwcGVyIG5pYmJsZSBvZiA3IChvciAweGYpCit0aGVuIGF1dG9zZW5zZSBpcyBhc3N1bWVkIHRvIGhhdmUgdGFrZW4gcGxhY2UuIElmIGl0IGhhcyBhbm90aGVyIHZhbHVlIChhbmQKK3RoaXMgYnl0ZSBpcyBpbml0aWFsaXplZCB0byAwIGJlZm9yZSBlYWNoIGNvbW1hbmQpIHRoZW4gdGhlIG1pZCBsZXZlbCB3aWxsCitpc3N1ZSBhIFJFUVVFU1QgU0VOU0UgY29tbWFuZC4KKworSW4gdGhlIHByZXNlbmNlIG9mIHF1ZXVlZCBjb21tYW5kcyB0aGUgIm5leHVzIiB0aGF0IG1haW50YWlucyBzZW5zZQorYnVmZmVyIGRhdGEgZnJvbSB0aGUgY29tbWFuZCB0aGF0IGZhaWxlZCB1bnRpbCBhIGZvbGxvd2luZyBSRVFVRVNUIFNFTlNFCittYXkgZ2V0IG91dCBvZiBzeW5jaHJvbml6YXRpb24uIFRoaXMgaXMgd2h5IGl0IGlzIGJlc3QgZm9yIHRoZSBMTEQKK3RvIHBlcmZvcm0gYXV0b3NlbnNlLgorCisKK0NoYW5nZXMgc2luY2UgbGsgMi40IHNlcmllcworPT09PT09PT09PT09PT09PT09PT09PT09PT09Citpb19yZXF1ZXN0X2xvY2sgaGFzIGJlZW4gcmVwbGFjZWQgYnkgc2V2ZXJhbCBmaW5lciBncmFpbmVkIGxvY2tzLiBUaGUgbG9jayAKK3JlbGV2YW50IHRvIExMRHMgaXMgc3RydWN0IFNjc2lfSG9zdDo6aG9zdF9sb2NrIGFuZCB0aGVyZSBpcworb25lIHBlciBTQ1NJIGhvc3QuCisKK1RoZSBvbGRlciBlcnJvciBoYW5kbGluZyBtZWNoYW5pc20gaGFzIGJlZW4gcmVtb3ZlZC4gVGhpcyBtZWFucyB0aGUKK0xMRCBpbnRlcmZhY2UgZnVuY3Rpb25zIGFib3J0KCkgYW5kIHJlc2V0KCkgaGF2ZSBiZWVuIHJlbW92ZWQuCitUaGUgc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZTo6dXNlX25ld19laF9jb2RlIGZsYWcgaGFzIGJlZW4gcmVtb3ZlZC4KKworSW4gdGhlIDIuNCBzZXJpZXMgdGhlIFNDU0kgc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb24gZGVzY3JpcHRpb25zIHdlcmUgCithZ2dyZWdhdGVkIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gZGVzY3JpcHRpb25zIGZyb20gYWxsIG90aGVyIExpbnV4IAorc3Vic3lzdGVtcyBpbiB0aGUgRG9jdW1lbnRhdGlvbi9Db25maWd1cmUuaGVscCBmaWxlLiBJbiB0aGUgMi42IHNlcmllcywgCit0aGUgU0NTSSBzdWJzeXN0ZW0gbm93IGhhcyBpdHMgb3duIChtdWNoIHNtYWxsZXIpIGRyaXZlcnMvc2NzaS9LY29uZmlnCitmaWxlIHRoYXQgY29udGFpbnMgYm90aCBjb25maWd1cmF0aW9uIGFuZCBoZWxwIGluZm9ybWF0aW9uLgorCitzdHJ1Y3QgU0hUIGhhcyBiZWVuIHJlbmFtZWQgdG8gc3RydWN0IHNjc2lfaG9zdF90ZW1wbGF0ZS4KKworQWRkaXRpb24gb2YgdGhlICJob3RwbHVnIGluaXRpYWxpemF0aW9uIG1vZGVsIiBhbmQgbWFueSBleHRyYSBmdW5jdGlvbnMKK3RvIHN1cHBvcnQgaXQuCisKKworQ3JlZGl0cworPT09PT09PQorVGhlIGZvbGxvd2luZyBwZW9wbGUgaGF2ZSBjb250cmlidXRlZCB0byB0aGlzIGRvY3VtZW50OgorICAgICAgICBNaWtlIEFuZGVyc29uIDxhbmRtaWtlIGF0IHVzIGRvdCBpYm0gZG90IGNvbT4KKyAgICAgICAgSmFtZXMgQm90dG9tbGV5IDxKYW1lcyBkb3QgQm90dG9tbGV5IGF0IGhhbnNlbnBhcnRuZXJzaGlwIGRvdCBjb20+CisgICAgICAgIFBhdHJpY2sgTWFuc2ZpZWxkIDxwYXRtYW5zIGF0IHVzIGRvdCBpYm0gZG90IGNvbT4gCisgICAgICAgIENocmlzdG9waCBIZWxsd2lnIDxoY2ggYXQgaW5mcmFkZWFkIGRvdCBvcmc+CisgICAgICAgIERvdWcgTGVkZm9yZCA8ZGxlZGZvcmQgYXQgcmVkaGF0IGRvdCBjb20+CisgICAgICAgIEFuZHJpZXMgQnJvdXdlciA8QW5kcmllcyBkb3QgQnJvdXdlciBhdCBjd2kgZG90IG5sPgorICAgICAgICBSYW5keSBEdW5sYXAgPHJkdW5sYXAgYXQgeGVub3RpbWUgZG90IG5ldD4KKyAgICAgICAgQWxhbiBTdGVybiA8c3Rlcm4gYXQgcm93bGFuZCBkb3QgaGFydmFyZCBkb3QgZWR1PgorCisKK0RvdWdsYXMgR2lsYmVydAorZGdpbGJlcnQgYXQgaW50ZXJsb2cgZG90IGNvbQorMjFzdCBTZXB0ZW1iZXIgMjAwNApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2lfdHJhbnNwb3J0X3NycC9NYWtlZmlsZSBiL0RvY3VtZW50YXRpb24vc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY2YjU2NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAvTWFrZWZpbGUKQEAgLTAsMCArMSw3IEBACithbGw6IHJwb3J0X3N0YXRlX2RpYWdyYW0uc3ZnIHJwb3J0X3N0YXRlX2RpYWdyYW0ucG5nCisKK3Jwb3J0X3N0YXRlX2RpYWdyYW0uc3ZnOiBycG9ydF9zdGF0ZV9kaWFncmFtLmRvdAorCWRvdCAtVHN2ZyAtbyAkQCAkPAorCitycG9ydF9zdGF0ZV9kaWFncmFtLnBuZzogcnBvcnRfc3RhdGVfZGlhZ3JhbS5kb3QKKwlkb3QgLVRwbmcgLW8gJEAgJDwKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9zY3NpX3RyYW5zcG9ydF9zcnAvcnBvcnRfc3RhdGVfZGlhZ3JhbS5kb3QgYi9Eb2N1bWVudGF0aW9uL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwL3Jwb3J0X3N0YXRlX2RpYWdyYW0uZG90Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZDYxMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvc2NzaV90cmFuc3BvcnRfc3JwL3Jwb3J0X3N0YXRlX2RpYWdyYW0uZG90CkBAIC0wLDAgKzEsMjYgQEAKK2RpZ3JhcGggc3JwX2luaXRpYXRvciB7CisJbm9kZSBbc2hhcGUgPSBkb3VibGVjaXJjbGVdOyBydW5uaW5nIGxvc3Q7CisJbm9kZSBbc2hhcGUgPSBjaXJjbGVdOworCisJeworCSAgcmFuayA9IG1pbjsKKwkgIHJ1bm5pbmdfcnRhCVsgbGFiZWwgPSAicnVubmluZztcbnJlY29ubmVjdFxudGltZXJcbmFjdGl2ZSIgXTsKKwl9OworCXJ1bm5pbmcJCVsgbGFiZWwgPSAicnVubmluZztcbnJlY29ubmVjdFxudGltZXJcbnN0b3BwZWQiIF07CisJYmxvY2tlZDsKKwlmYWlsZmFzdAlbIGxhYmVsID0gImZhaWwgSS9PXG5mYXN0IiBdOworCWxvc3Q7CisKKwlydW5uaW5nIC0+IHJ1bm5pbmdfcnRhCQlbIGxhYmVsID0gImZhc3RfaW9fZmFpbF90bW8gPSBvZmYgYW5kXG5kZXZfbG9zc190bW8gPSBvZmY7XG5zcnBfc3RhcnRfdGxfZmFpbF90aW1lcnMoKSIgXTsKKwlydW5uaW5nX3J0YSAtPiBydW5uaW5nCQlbIGxhYmVsID0gImZhc3RfaW9fZmFpbF90bW8gPSBvZmYgYW5kXG5kZXZfbG9zc190bW8gPSBvZmY7XG5yZWNvbm5lY3Rpbmcgc3VjY2VlZGVkIiBdOworCXJ1bm5pbmcgLT4gYmxvY2tlZAkJWyBsYWJlbCA9ICJmYXN0X2lvX2ZhaWxfdG1vID49IDAgb3JcbmRldl9sb3NzX3RtbyA+PSAwO1xuc3JwX3N0YXJ0X3RsX2ZhaWxfdGltZXJzKCkiIF07CisJcnVubmluZyAtPiBmYWlsZmFzdAkJWyBsYWJlbCA9ICJmYXN0X2lvX2ZhaWxfdG1vID0gb2ZmIGFuZFxuZGV2X2xvc3NfdG1vID0gb2ZmO1xucmVjb25uZWN0aW5nIGZhaWxlZFxuIiBdOworCWJsb2NrZWQgLT4gZmFpbGZhc3QJCVsgbGFiZWwgPSAiZmFzdF9pb19mYWlsX3Rtb1xuZXhwaXJlZCBvclxucmVjb25uZWN0aW5nXG5mYWlsZWQiIF07CisJYmxvY2tlZCAtPiBsb3N0CQkJWyBsYWJlbCA9ICJkZXZfbG9zc190bW9cbmV4cGlyZWQgb3JcbnNycF9zdG9wX3Jwb3J0X3RpbWVycygpIiBdOworCWZhaWxmYXN0IC0+IGxvc3QJCVsgbGFiZWwgPSAiZGV2X2xvc3NfdG1vXG5leHBpcmVkIG9yXG5zcnBfc3RvcF9ycG9ydF90aW1lcnMoKSIgXTsKKwlibG9ja2VkIC0+IHJ1bm5pbmcJCVsgbGFiZWwgPSAicmVjb25uZWN0aW5nXG5zdWNjZWVkZWQiIF07CisJZmFpbGZhc3QgLT4gZmFpbGZhc3QJCVsgbGFiZWwgPSAicmVjb25uZWN0aW5nXG5mYWlsZWQiIF07CisJZmFpbGZhc3QgLT4gcnVubmluZwkJWyBsYWJlbCA9ICJyZWNvbm5lY3RpbmdcbnN1Y2NlZWRlZCIgXTsKKwlydW5uaW5nIC0+IGxvc3QJCQlbIGxhYmVsID0gInNycF9zdG9wX3Jwb3J0X3RpbWVycygpIiBdOworCXJ1bm5pbmdfcnRhIC0+IGxvc3QJCVsgbGFiZWwgPSAic3JwX3N0b3BfcnBvcnRfdGltZXJzKCkiIF07Cit9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvc3QudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL3N0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzIxMWFmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL3N0LnR4dApAQCAtMCwwICsxLDU4NyBAQAorVGhpcyBmaWxlIGNvbnRhaW5zIGJyaWVmIGluZm9ybWF0aW9uIGFib3V0IHRoZSBTQ1NJIHRhcGUgZHJpdmVyLgorVGhlIGRyaXZlciBpcyBjdXJyZW50bHkgbWFpbnRhaW5lZCBieSBLYWkgTcOka2lzYXJhIChlbWFpbAorS2FpLk1ha2lzYXJhQGtvbHVtYnVzLmZpKQorCitMYXN0IG1vZGlmaWVkOiBTdW4gQXVnIDI5IDE4OjI1OjQ3IDIwMTAgYnkga2FpLm1ha2lzYXJhCisKKworQkFTSUNTCisKK1RoZSBkcml2ZXIgaXMgZ2VuZXJpYywgaS5lLiwgaXQgZG9lcyBub3QgY29udGFpbiBhbnkgY29kZSB0YWlsb3JlZAordG8gYW55IHNwZWNpZmljIHRhcGUgZHJpdmUuIFRoZSB0YXBlIHBhcmFtZXRlcnMgY2FuIGJlIHNwZWNpZmllZCB3aXRoCitvbmUgb2YgdGhlIGZvbGxvd2luZyB0aHJlZSBtZXRob2RzOgorCisxLiBFYWNoIHVzZXIgY2FuIHNwZWNpZnkgdGhlIHRhcGUgcGFyYW1ldGVycyBoZS9zaGUgd2FudHMgdG8gdXNlCitkaXJlY3RseSB3aXRoIGlvY3Rscy4gVGhpcyBpcyBhZG1pbmlzdHJhdGl2ZWx5IGEgdmVyeSBzaW1wbGUgYW5kCitmbGV4aWJsZSBtZXRob2QgYW5kIGFwcGxpY2FibGUgdG8gc2luZ2xlLXVzZXIgd29ya3N0YXRpb25zLiBIb3dldmVyLAoraW4gYSBtdWx0aXVzZXIgZW52aXJvbm1lbnQgdGhlIG5leHQgdXNlciBmaW5kcyB0aGUgdGFwZSBwYXJhbWV0ZXJzIGluCitzdGF0ZSB0aGUgcHJldmlvdXMgdXNlciBsZWZ0IHRoZW0uCisKKzIuIFRoZSBzeXN0ZW0gbWFuYWdlciAocm9vdCkgY2FuIGRlZmluZSBkZWZhdWx0IHZhbHVlcyBmb3Igc29tZSB0YXBlCitwYXJhbWV0ZXJzLCBsaWtlIGJsb2NrIHNpemUgYW5kIGRlbnNpdHkgdXNpbmcgdGhlIE1UU0VURFJWQlVGRkVSIGlvY3RsLgorVGhlc2UgcGFyYW1ldGVycyBjYW4gYmUgcHJvZ3JhbW1lZCB0byBjb21lIGludG8gZWZmZWN0IGVpdGhlciB3aGVuIGEKK25ldyB0YXBlIGlzIGxvYWRlZCBpbnRvIHRoZSBkcml2ZSBvciBpZiB3cml0aW5nIGJlZ2lucyBhdCB0aGUKK2JlZ2lubmluZyBvZiB0aGUgdGFwZS4gVGhlIHNlY29uZCBtZXRob2QgaXMgYXBwbGljYWJsZSBpZiB0aGUgdGFwZQorZHJpdmUgcGVyZm9ybXMgYXV0by1kZXRlY3Rpb24gb2YgdGhlIHRhcGUgZm9ybWF0IHdlbGwgKGxpa2Ugc29tZQorUUlDLWRyaXZlcykuIFRoZSByZXN1bHQgaXMgdGhhdCBhbnkgdGFwZSBjYW4gYmUgcmVhZCwgd3JpdGluZyBjYW4gYmUKK2NvbnRpbnVlZCB1c2luZyBleGlzdGluZyBmb3JtYXQsIGFuZCB0aGUgZGVmYXVsdCBmb3JtYXQgaXMgdXNlZCBpZgordGhlIHRhcGUgaXMgcmV3cml0dGVuIGZyb20gdGhlIGJlZ2lubmluZyAob3IgYSBuZXcgdGFwZSBpcyB3cml0dGVuCitmb3IgdGhlIGZpcnN0IHRpbWUpLiBUaGUgZmlyc3QgbWV0aG9kIGlzIGFwcGxpY2FibGUgaWYgdGhlIGRyaXZlCitkb2VzIG5vdCBwZXJmb3JtIGF1dG8tZGV0ZWN0aW9uIHdlbGwgZW5vdWdoIGFuZCB0aGVyZSBpcyBhIHNpbmdsZQorInNlbnNpYmxlIiBtb2RlIGZvciB0aGUgZGV2aWNlLiBBbiBleGFtcGxlIGlzIGEgREFUIGRyaXZlIHRoYXQgaXMKK3VzZWQgb25seSBpbiB2YXJpYWJsZSBibG9jayBtb2RlIChJIGRvbid0IGtub3cgaWYgdGhpcyBpcyBzZW5zaWJsZQorb3Igbm90IDotKS4KKworVGhlIHVzZXIgY2FuIG92ZXJyaWRlIHRoZSBwYXJhbWV0ZXJzIGRlZmluZWQgYnkgdGhlIHN5c3RlbQorbWFuYWdlci4gVGhlIGNoYW5nZXMgcGVyc2lzdCB1bnRpbCB0aGUgZGVmYXVsdHMgYWdhaW4gY29tZSBpbnRvCitlZmZlY3QuCisKKzMuIEJ5IGRlZmF1bHQsIHVwIHRvIGZvdXIgbW9kZXMgY2FuIGJlIGRlZmluZWQgYW5kIHNlbGVjdGVkIHVzaW5nIHRoZSBtaW5vcgorbnVtYmVyIChiaXRzIDUgYW5kIDYpLiBUaGUgbnVtYmVyIG9mIG1vZGVzIGNhbiBiZSBjaGFuZ2VkIGJ5IGNoYW5naW5nCitTVF9OQlJfTU9ERV9CSVRTIGluIHN0LmguIE1vZGUgMCBjb3JyZXNwb25kcyB0byB0aGUgZGVmYXVsdHMgZGlzY3Vzc2VkCithYm92ZS4gQWRkaXRpb25hbCBtb2RlcyBhcmUgZG9ybWFudCB1bnRpbCB0aGV5IGFyZSBkZWZpbmVkIGJ5IHRoZQorc3lzdGVtIG1hbmFnZXIgKHJvb3QpLiBXaGVuIHNwZWNpZmljYXRpb24gb2YgYSBuZXcgbW9kZSBpcyBzdGFydGVkLAordGhlIGNvbmZpZ3VyYXRpb24gb2YgbW9kZSAwIGlzIHVzZWQgdG8gcHJvdmlkZSBhIHN0YXJ0aW5nIHBvaW50IGZvcgorZGVmaW5pdGlvbiBvZiB0aGUgbmV3IG1vZGUuCisKK1VzaW5nIHRoZSBtb2RlcyBhbGxvd3MgdGhlIHN5c3RlbSBtYW5hZ2VyIHRvIGdpdmUgdGhlIHVzZXJzIGNob2ljZXMKK292ZXIgc29tZSBvZiB0aGUgYnVmZmVyaW5nIHBhcmFtZXRlcnMgbm90IGRpcmVjdGx5IGFjY2Vzc2libGUgdG8gdGhlCit1c2VycyAoYnVmZmVyZWQgYW5kIGFzeW5jaHJvbm91cyB3cml0ZXMpLiBUaGUgbW9kZXMgYWxzbyBhbGxvdyBjaG9pY2VzCitiZXR3ZWVuIGZvcm1hdHMgaW4gbXVsdGktdGFwZSBvcGVyYXRpb25zICh0aGUgZXhwbGljaXRseSBvdmVycmlkZGVuCitwYXJhbWV0ZXJzIGFyZSByZXNldCB3aGVuIGEgbmV3IHRhcGUgaXMgbG9hZGVkKS4KKworSWYgbW9yZSB0aGFuIG9uZSBtb2RlIGlzIHVzZWQsIGFsbCBtb2RlcyBzaG91bGQgY29udGFpbiBkZWZpbml0aW9ucworZm9yIHRoZSBzYW1lIHNldCBvZiBwYXJhbWV0ZXJzLgorCitNYW55IFVuaWNlcyBjb250YWluIGludGVybmFsIHRhYmxlcyB0aGF0IGFzc29jaWF0ZSBkaWZmZXJlbnQgbW9kZXMgdG8KK3N1cHBvcnRlZCBkZXZpY2VzLiBUaGUgTGludXggU0NTSSB0YXBlIGRyaXZlciBkb2VzIG5vdCBjb250YWluIHN1Y2gKK3RhYmxlcyAoYW5kIHdpbGwgbm90IGRvIHRoYXQgaW4gZnV0dXJlKS4gSW5zdGVhZCBvZiB0aGF0LCBhIHV0aWxpdHkKK3Byb2dyYW0gY2FuIGJlIG1hZGUgdGhhdCBmZXRjaGVzIHRoZSBpbnF1aXJ5IGRhdGEgc2VudCBieSB0aGUgZGV2aWNlLAorc2NhbnMgaXRzIGRhdGFiYXNlLCBhbmQgc2V0cyB1cCB0aGUgbW9kZXMgdXNpbmcgdGhlIGlvY3Rscy4gQW5vdGhlcgorYWx0ZXJuYXRpdmUgaXMgdG8gbWFrZSBhIHNtYWxsIHNjcmlwdCB0aGF0IHVzZXMgbXQgdG8gc2V0IHRoZSBkZWZhdWx0cwordGFpbG9yZWQgdG8gdGhlIHN5c3RlbS4KKworVGhlIGRyaXZlciBzdXBwb3J0cyBmaXhlZCBhbmQgdmFyaWFibGUgYmxvY2sgc2l6ZSAod2l0aGluIGJ1ZmZlcgorbGltaXRzKS4gQm90aCB0aGUgYXV0by1yZXdpbmQgKG1pbm9yIGVxdWFscyBkZXZpY2UgbnVtYmVyKSBhbmQKK25vbi1yZXdpbmQgZGV2aWNlcyAobWlub3IgaXMgMTI4ICsgZGV2aWNlIG51bWJlcikgYXJlIGltcGxlbWVudGVkLgorCitJbiB2YXJpYWJsZSBibG9jayBtb2RlLCB0aGUgYnl0ZSBjb3VudCBpbiB3cml0ZSgpIGRldGVybWluZXMgdGhlIHNpemUKK29mIHRoZSBwaHlzaWNhbCBibG9jayBvbiB0YXBlLiBXaGVuIHJlYWRpbmcsIHRoZSBkcml2ZSByZWFkcyB0aGUgbmV4dAordGFwZSBibG9jayBhbmQgcmV0dXJucyB0byB0aGUgdXNlciB0aGUgZGF0YSBpZiB0aGUgcmVhZCgpIGJ5dGUgY291bnQKK2lzIGF0IGxlYXN0IHRoZSBibG9jayBzaXplLiBPdGhlcndpc2UsIGVycm9yIEVOT01FTSBpcyByZXR1cm5lZC4KKworSW4gZml4ZWQgYmxvY2sgbW9kZSwgdGhlIGRhdGEgdHJhbnNmZXIgYmV0d2VlbiB0aGUgZHJpdmUgYW5kIHRoZQorZHJpdmVyIGlzIGluIG11bHRpcGxlcyBvZiB0aGUgYmxvY2sgc2l6ZS4gVGhlIHdyaXRlKCkgYnl0ZSBjb3VudCBtdXN0CitiZSBhIG11bHRpcGxlIG9mIHRoZSBibG9jayBzaXplLiBUaGlzIGlzIG5vdCByZXF1aXJlZCB3aGVuIHJlYWRpbmcgYnV0CittYXkgYmUgYWR2aXNhYmxlIGZvciBwb3J0YWJpbGl0eS4KKworU3VwcG9ydCBpcyBwcm92aWRlZCBmb3IgY2hhbmdpbmcgdGhlIHRhcGUgcGFydGl0aW9uIGFuZCBwYXJ0aXRpb25pbmcKK29mIHRoZSB0YXBlIHdpdGggb25lIG9yIHR3byBwYXJ0aXRpb25zLiBCeSBkZWZhdWx0IHN1cHBvcnQgZm9yCitwYXJ0aXRpb25lZCB0YXBlIGlzIGRpc2FibGVkIGZvciBlYWNoIGRyaXZlciBhbmQgaXQgY2FuIGJlIGVuYWJsZWQKK3dpdGggdGhlIGlvY3RsIE1UU0VURFJWQlVGRkVSLgorCitCeSBkZWZhdWx0IHRoZSBkcml2ZXIgd3JpdGVzIG9uZSBmaWxlbWFyayB3aGVuIHRoZSBkZXZpY2UgaXMgY2xvc2VkIGFmdGVyCit3cml0aW5nIGFuZCB0aGUgbGFzdCBvcGVyYXRpb24gaGFzIGJlZW4gYSB3cml0ZS4gVHdvIGZpbGVtYXJrcyBjYW4gYmUKK29wdGlvbmFsbHkgd3JpdHRlbi4gSW4gYm90aCBjYXNlcyBlbmQgb2YgZGF0YSBpcyBzaWduaWZpZWQgYnkKK3JldHVybmluZyB6ZXJvIGJ5dGVzIGZvciB0d28gY29uc2VjdXRpdmUgcmVhZHMuCisKK1dyaXRpbmcgZmlsZW1hcmtzIHdpdGhvdXQgdGhlIGltbWVkaWF0ZSBiaXQgc2V0IGluIHRoZSBTQ1NJIGNvbW1hbmQgYmxvY2sgYWN0cworYXMgYSBzeW5jaHJvbml6YXRpb24gcG9pbnQsIGkuZS4sIGFsbCByZW1haW5pbmcgZGF0YSBmb3JtIHRoZSBkcml2ZSBidWZmZXJzIGlzCit3cml0dGVuIHRvIHRhcGUgYmVmb3JlIHRoZSBjb21tYW5kIHJldHVybnMuIFRoaXMgbWFrZXMgc3VyZSB0aGF0IHdyaXRlIGVycm9ycworYXJlIGNhdWdodCBhdCB0aGF0IHBvaW50LCBidXQgdGhpcyB0YWtlcyB0aW1lLiBJbiBzb21lIGFwcGxpY2F0aW9ucywgc2V2ZXJhbAorY29uc2VjdXRpdmUgZmlsZXMgbXVzdCBiZSB3cml0dGVuIGZhc3QuIFRoZSBNVFdFT0ZJIG9wZXJhdGlvbiBjYW4gYmUgdXNlZCB0bword3JpdGUgdGhlIGZpbGVtYXJrcyB3aXRob3V0IGZsdXNoaW5nIHRoZSBkcml2ZSBidWZmZXIuIFdyaXRpbmcgZmlsZW1hcmsgYXQKK2Nsb3NlKCkgaXMgYWx3YXlzIGZsdXNoaW5nIHRoZSBkcml2ZSBidWZmZXJzLiBIb3dldmVyLCBpZiB0aGUgcHJldmlvdXMKK29wZXJhdGlvbiBpcyBNVFdFT0ZJLCBjbG9zZSgpIGRvZXMgbm90IHdyaXRlIGEgZmlsZW1hcmsuIFRoaXMgY2FuIGJlIHVzZWQgaWYKK3RoZSBwcm9ncmFtIHdhbnRzIHRvIGNsb3NlL29wZW4gdGhlIHRhcGUgZGV2aWNlIGJldHdlZW4gZmlsZXMgYW5kIHdhbnRzIHRvCitza2lwIHdhaXRpbmcuCisKK0lmIHJld2luZCwgb2ZmbGluZSwgYnNmLCBvciBzZWVrIGlzIGRvbmUgYW5kIHByZXZpb3VzIHRhcGUgb3BlcmF0aW9uIHdhcword3JpdGUsIGEgZmlsZW1hcmsgaXMgd3JpdHRlbiBiZWZvcmUgbW92aW5nIHRhcGUuCisKK1RoZSBjb21waWxlIG9wdGlvbnMgYXJlIGRlZmluZWQgaW4gdGhlIGZpbGUgbGludXgvZHJpdmVycy9zY3NpL3N0X29wdGlvbnMuaC4KKworNC4gSWYgdGhlIG9wZW4gb3B0aW9uIE9fTk9OQkxPQ0sgaXMgdXNlZCwgb3BlbiBzdWNjZWVkcyBldmVuIGlmIHRoZQorZHJpdmUgaXMgbm90IHJlYWR5LiBJZiBPX05PTkJMT0NLIGlzIG5vdCB1c2VkLCB0aGUgZHJpdmVyIHdhaXRzIGZvcgordGhlIGRyaXZlIHRvIGJlY29tZSByZWFkeS4gSWYgdGhpcyBkb2VzIG5vdCBoYXBwZW4gaW4gU1RfQkxPQ0tfU0VDT05EUworc2Vjb25kcywgb3BlbiBmYWlscyB3aXRoIHRoZSBlcnJubyB2YWx1ZSBFSU8uIFdpdGggT19OT05CTE9DSyB0aGUKK2RldmljZSBjYW4gYmUgb3BlbmVkIGZvciB3cml0aW5nIGV2ZW4gaWYgdGhlcmUgaXMgYSB3cml0ZSBwcm90ZWN0ZWQKK3RhcGUgaW4gdGhlIGRyaXZlIChjb21tYW5kcyB0cnlpbmcgdG8gd3JpdGUgc29tZXRoaW5nIHJldHVybiBlcnJvciBpZgorYXR0ZW1wdGVkKS4KKworCitNSU5PUiBOVU1CRVJTCisKK1RoZSB0YXBlIGRyaXZlciBjdXJyZW50bHkgc3VwcG9ydHMgdXAgdG8gMl4xNyBkcml2ZXMgaWYgNCBtb2RlcyBmb3IKK2VhY2ggZHJpdmUgYXJlIHVzZWQuCisKK1RoZSBtaW5vciBudW1iZXJzIGNvbnNpc3Qgb2YgdGhlIGZvbGxvd2luZyBiaXQgZmllbGRzOgorCitkZXZfdXBwZXIgbm9uLXJldyBtb2RlIGRldi1sb3dlcgorICAyMCAtICA4ICAgICA3ICAgIDYgNSAgNCAgICAgIDAKK1RoZSBub24tcmV3aW5kIGJpdCBpcyBhbHdheXMgYml0IDcgKHRoZSB1cHBlcm1vc3QgYml0IGluIHRoZSBsb3dlcm1vc3QKK2J5dGUpLiBUaGUgYml0cyBkZWZpbmluZyB0aGUgbW9kZSBhcmUgYmVsb3cgdGhlIG5vbi1yZXdpbmQgYml0LiBUaGUKK3JlbWFpbmluZyBiaXRzIGRlZmluZSB0aGUgdGFwZSBkZXZpY2UgbnVtYmVyLiBUaGlzIG51bWJlcmluZyBpcworYmFja3dhcmQgY29tcGF0aWJsZSB3aXRoIHRoZSBudW1iZXJpbmcgdXNlZCB3aGVuIHRoZSBtaW5vciBudW1iZXIgd2FzCitvbmx5IDggYml0cyB3aWRlLgorCisKK1NZU0ZTIFNVUFBPUlQKKworVGhlIGRyaXZlciBjcmVhdGVzIHRoZSBkaXJlY3RvcnkgL3N5cy9jbGFzcy9zY3NpX3RhcGUgYW5kIHBvcHVsYXRlcyBpdCB3aXRoCitkaXJlY3RvcmllcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBleGlzdGluZyB0YXBlIGRldmljZXMuIFRoZXJlIGFyZSBhdXRvcmV3aW5kCithbmQgbm9uLXJld2luZCBlbnRyaWVzIGZvciBlYWNoIG1vZGUuIFRoZSBuYW1lcyBhcmUgc3R4eSBhbmQgbnN0eHksIHdoZXJlIHgKK2lzIHRoZSB0YXBlIG51bWJlciBhbmQgeSBhIGNoYXJhY3RlciBjb3JyZXNwb25kaW5nIHRvIHRoZSBtb2RlIChub25lLCBsLCBtLAorYSkuIEZvciBleGFtcGxlLCB0aGUgZGlyZWN0b3JpZXMgZm9yIHRoZSBmaXJzdCB0YXBlIGRldmljZSBhcmUgKGFzc3VtaW5nIGZvdXIKK21vZGVzKTogc3QwICBuc3QwICBzdDBsICBuc3QwbCAgc3QwbSAgbnN0MG0gIHN0MGEgIG5zdDBhLgorCitFYWNoIGRpcmVjdG9yeSBjb250YWlucyB0aGUgZW50cmllczogZGVmYXVsdF9ibGtzaXplICBkZWZhdWx0X2NvbXByZXNzaW9uCitkZWZhdWx0X2RlbnNpdHkgIGRlZmluZWQgIGRldiAgZGV2aWNlICBkcml2ZXIuIFRoZSBmaWxlICdkZWZpbmVkJyBjb250YWlucyAxCitpZiB0aGUgbW9kZSBpcyBkZWZpbmVkIGFuZCB6ZXJvIGlmIG5vdCBkZWZpbmVkLiBUaGUgZmlsZXMgJ2RlZmF1bHRfKicgY29udGFpbgordGhlIGRlZmF1bHRzIHNldCBieSB0aGUgdXNlci4gVGhlIHZhbHVlIC0xIG1lYW5zIHRoZSBkZWZhdWx0IGlzIG5vdCBzZXQuIFRoZQorZmlsZSAnZGV2JyBjb250YWlucyB0aGUgZGV2aWNlIG51bWJlcnMgY29ycmVzcG9uZGluZyB0byB0aGlzIGRldmljZS4gVGhlIGxpbmtzCisnZGV2aWNlJyBhbmQgJ2RyaXZlcicgcG9pbnQgdG8gdGhlIFNDU0kgZGV2aWNlIGFuZCBkcml2ZXIgZW50cmllcy4KKworRWFjaCBkaXJlY3RvcnkgYWxzbyBjb250YWlucyB0aGUgZW50cnkgJ29wdGlvbnMnIHdoaWNoIHNob3dzIHRoZSBjdXJyZW50bHkKK2VuYWJsZWQgZHJpdmVyIGFuZCBtb2RlIG9wdGlvbnMuIFRoZSB2YWx1ZSBpbiB0aGUgZmlsZSBpcyBhIGJpdCBtYXNrIHdoZXJlIHRoZQorYml0IGRlZmluaXRpb25zIGFyZSB0aGUgc2FtZSBhcyB0aG9zZSB1c2VkIHdpdGggTVRTRVREUlZCVUZGRVIgaW4gc2V0dGluZyB0aGUKK29wdGlvbnMuCisKK0EgbGluayBuYW1lZCAndGFwZScgaXMgbWFkZSBmcm9tIHRoZSBTQ1NJIGRldmljZSBkaXJlY3RvcnkgdG8gdGhlIGNsYXNzCitkaXJlY3RvcnkgY29ycmVzcG9uZGluZyB0byB0aGUgbW9kZSAwIGF1dG8tcmV3aW5kIGRldmljZSAoZS5nLiwgc3QwKS4gCisKKworU1lTRlMgQU5EIFNUQVRJU1RJQ1MgRk9SIFRBUEUgREVWSUNFUworCitUaGUgc3QgZHJpdmVyIG1haW50YWlucyBzdGF0aXN0aWNzIGZvciB0YXBlIGRyaXZlcyBpbnNpZGUgdGhlIHN5c2ZzIGZpbGVzeXN0ZW0uCitUaGUgZm9sbG93aW5nIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBsb2NhdGUgdGhlIHN0YXRpc3RpY3MgdGhhdCBhcmUKK2F2YWlsYWJsZSAoYXNzdW1pbmcgdGhhdCBzeXNmcyBpcyBtb3VudGVkIGF0IC9zeXMpOgorCisxLiBVc2Ugb3BlbmRpcigzKSBvbiB0aGUgZGlyZWN0b3J5IC9zeXMvY2xhc3Mvc2NzaV90YXBlCisyLiBVc2UgcmVhZGRpcigzKSB0byByZWFkIHRoZSBkaXJlY3RvcnkgY29udGVudHMKKzMuIFVzZSByZWdjb21wKDMpL3JlZ2V4ZWMoMykgdG8gbWF0Y2ggZGlyZWN0b3J5IGVudHJpZXMgdG8gdGhlIGV4dGVuZGVkCisgICAgICAgIHJlZ3VsYXIgZXhwcmVzc2lvbiAiXnN0WzAtOV0rJCIKKzQuIEFjY2VzcyB0aGUgc3RhdGlzdGljcyBmcm9tIHRoZSAvc3lzL2NsYXNzL3Njc2lfdGFwZS88bWF0Y2g+L3N0YXRzCisgICAgICAgIGRpcmVjdG9yeSAod2hlcmUgPG1hdGNoPiBpcyBhIGRpcmVjdG9yeSBlbnRyeSBmcm9tIC9zeXMvY2xhc3Mvc2NzaV90YXBlCisgICAgICAgIHRoYXQgbWF0Y2hlZCB0aGUgZXh0ZW5kZWQgcmVndWxhciBleHByZXNzaW9uKQorCitUaGUgcmVhc29uIGZvciB1c2luZyB0aGlzIGFwcHJvYWNoIGlzIHRoYXQgYWxsIHRoZSBjaGFyYWN0ZXIgZGV2aWNlcworcG9pbnRpbmcgdG8gdGhlIHNhbWUgdGFwZSBkcml2ZSB1c2UgdGhlIHNhbWUgc3RhdGlzdGljcy4gVGhhdCBtZWFucwordGhhdCBzdDAgd291bGQgaGF2ZSB0aGUgc2FtZSBzdGF0aXN0aWNzIGFzIG5zdDAuCisKK1RoZSBkaXJlY3RvcnkgY29udGFpbnMgdGhlIGZvbGxvd2luZyBzdGF0aXN0aWNzIGZpbGVzOgorCisxLiAgaW5fZmxpZ2h0IC0gVGhlIG51bWJlciBvZiBJL09zIGN1cnJlbnRseSBvdXRzdGFuZGluZyB0byB0aGlzIGRldmljZS4KKzIuICBpb19ucyAtIFRoZSBhbW91bnQgb2YgdGltZSBzcGVudCB3YWl0aW5nIChpbiBuYW5vc2Vjb25kcykgZm9yIGFsbCBJL08KKyAgICAgICAgdG8gY29tcGxldGUgKGluY2x1ZGluZyByZWFkIGFuZCB3cml0ZSkuIFRoaXMgaW5jbHVkZXMgdGFwZSBtb3ZlbWVudAorICAgICAgICBjb21tYW5kcyBzdWNoIGFzIHNlZWtpbmcgYmV0d2VlbiBmaWxlIG9yIHNldCBtYXJrcyBhbmQgaW1wbGljaXQgdGFwZQorICAgICAgICBtb3ZlbWVudCBzdWNoIGFzIHdoZW4gcmV3aW5kIG9uIGNsb3NlIHRhcGUgZGV2aWNlcyBhcmUgdXNlZC4KKzMuICBvdGhlcl9jbnQgLSBUaGUgbnVtYmVyIG9mIEkvT3MgaXNzdWVkIHRvIHRoZSB0YXBlIGRyaXZlIG90aGVyIHRoYW4gcmVhZCBvcgorICAgICAgICB3cml0ZSBjb21tYW5kcy4gVGhlIHRpbWUgdGFrZW4gdG8gY29tcGxldGUgdGhlc2UgY29tbWFuZHMgdXNlcyB0aGUKKyAgICAgICAgZm9sbG93aW5nIGNhbGN1bGF0aW9uIGlvX21zLXJlYWRfbXMtd3JpdGVfbXMuCis0LiAgcmVhZF9ieXRlX2NudCAtIFRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZCBmcm9tIHRoZSB0YXBlIGRyaXZlLgorNS4gIHJlYWRfY250IC0gVGhlIG51bWJlciBvZiByZWFkIHJlcXVlc3RzIGlzc3VlZCB0byB0aGUgdGFwZSBkcml2ZS4KKzYuICByZWFkX25zIC0gVGhlIGFtb3VudCBvZiB0aW1lIChpbiBuYW5vc2Vjb25kcykgc3BlbnQgd2FpdGluZyBmb3IgcmVhZAorICAgICAgICByZXF1ZXN0cyB0byBjb21wbGV0ZS4KKzcuICB3cml0ZV9ieXRlX2NudCAtIFRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiB0byB0aGUgdGFwZSBkcml2ZS4KKzguICB3cml0ZV9jbnQgLSBUaGUgbnVtYmVyIG9mIHdyaXRlIHJlcXVlc3RzIGlzc3VlZCB0byB0aGUgdGFwZSBkcml2ZS4KKzkuICB3cml0ZV9ucyAtIFRoZSBhbW91bnQgb2YgdGltZSAoaW4gbmFub3NlY29uZHMpIHNwZW50IHdhaXRpbmcgZm9yIHdyaXRlCisgICAgICAgIHJlcXVlc3RzIHRvIGNvbXBsZXRlLgorMTAuIHJlc2lkX2NudCAtIFRoZSBudW1iZXIgb2YgdGltZXMgZHVyaW5nIGEgcmVhZCBvciB3cml0ZSB3ZSBmb3VuZAorCXRoZSByZXNpZHVhbCBhbW91bnQgdG8gYmUgbm9uLXplcm8uIFRoaXMgc2hvdWxkIG1lYW4gdGhhdCBhIHByb2dyYW0KKwlpcyBpc3N1aW5nIGEgcmVhZCBsYXJnZXIgdGhlYW4gdGhlIGJsb2NrIHNpemUgb24gdGFwZS4gRm9yIHdyaXRlCisJbm90IGFsbCBkYXRhIG1hZGUgaXQgdG8gdGFwZS4KKworTm90ZTogVGhlIGluX2ZsaWdodCB2YWx1ZSBpcyBpbmNyZW1lbnRlZCB3aGVuIGFuIEkvTyBzdGFydHMgdGhlIEkvTworaXRzZWxmIGlzIG5vdCBhZGRlZCB0byB0aGUgc3RhdGlzdGljcyB1bnRpbCBpdCBjb21wbGV0ZXMuCisKK1RoZSB0b3RhbCBvZiByZWFkX2NudCwgd3JpdGVfY250LCBhbmQgb3RoZXJfY250IG1heSBub3QgdG90YWwgdG8gdGhlIHNhbWUKK3ZhbHVlIGFzIGlvZG9uZV9jbnQgYXQgdGhlIGRldmljZSBsZXZlbC4gVGhlIHRhcGUgc3RhdGlzdGljcyBvbmx5IGNvdW50CitJL08gaXNzdWVkIHZpYSB0aGUgc3QgbW9kdWxlLgorCitXaGVuIHJlYWQgdGhlIHN0YXRpc3RpY3MgbWF5IG5vdCBiZSB0ZW1wb3JhbGx5IGNvbnNpc3RlbnQgd2hpbGUgSS9PIGlzIGluCitwcm9ncmVzcy4gVGhlIGluZGl2aWR1YWwgdmFsdWVzIGFyZSByZWFkIGFuZCB3cml0dGVuIHRvIGF0b21pY2FsbHkgaG93ZXZlcgord2hlbiByZWFkaW5nIHRoZW0gYmFjayB2aWEgc3lzZnMgdGhleSBtYXkgYmUgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcKK3VwZGF0ZWQgd2hlbiBzdGFydGluZyBhbiBJL08gb3Igd2hlbiBpdCBpcyBjb21wbGV0ZWQuCisKK1RoZSB2YWx1ZSBzaG93biBpbiBpbl9mbGlnaHQgaXMgaW5jcmVtZW50ZWQgYmVmb3JlIGFueSBzdGF0c3RpY3MgYXJlCit1cGRhdGVkIGFuZCBkZWNyZW1lbnRlZCB3aGVuIGFuIEkvTyBjb21wbGV0ZXMgYWZ0ZXIgdXBkYXRpbmcgc3RhdGlzdGljcy4KK1RoZSB2YWx1ZSBvZiBpbl9mbGlnaHQgaXMgMCB3aGVuIHRoZXJlIGFyZSBubyBJL09zIG91dHN0YW5kaW5nIHRoYXQgYXJlCitpc3N1ZWQgYnkgdGhlIHN0IGRyaXZlci4gVGFwZSBzdGF0aXN0aWNzIGRvIG5vdCB0YWtlIGludG8gYWNjb3VudCBhbnkKK0kvTyBwZXJmb3JtZWQgdmlhIHRoZSBzZyBkZXZpY2UuCisKK0JTRCBBTkQgU1lTIFYgU0VNQU5USUNTCisKK1RoZSB1c2VyIGNhbiBjaG9vc2UgYmV0d2VlbiB0aGVzZSB0d28gYmVoYXZpb3VycyBvZiB0aGUgdGFwZSBkcml2ZXIgYnkKK2RlZmluaW5nIHRoZSB2YWx1ZSBvZiB0aGUgc3ltYm9sIFNUX1NZU1YuIFRoZSBzZW1hbnRpY3MgZGlmZmVyIHdoZW4gYQorZmlsZSBiZWluZyByZWFkIGlzIGNsb3NlZC4gVGhlIEJTRCBzZW1hbnRpY3MgbGVhdmVzIHRoZSB0YXBlIHdoZXJlIGl0CitjdXJyZW50bHkgaXMgd2hlcmVhcyB0aGUgU1lTIFYgc2VtYW50aWNzIG1vdmVzIHRoZSB0YXBlIHBhc3QgdGhlIG5leHQKK2ZpbGVtYXJrIHVubGVzcyB0aGUgZmlsZW1hcmsgaGFzIGp1c3QgYmVlbiBjcm9zc2VkLgorCitUaGUgZGVmYXVsdCBpcyBCU0Qgc2VtYW50aWNzLgorCisKK0JVRkZFUklORworCitUaGUgZHJpdmVyIHRyaWVzIHRvIGRvIHRyYW5zZmVycyBkaXJlY3RseSB0by9mcm9tIHVzZXIgc3BhY2UuIElmIHRoaXMKK2lzIG5vdCBwb3NzaWJsZSwgYSBkcml2ZXIgYnVmZmVyIGFsbG9jYXRlZCBhdCBydW4tdGltZSBpcyB1c2VkLiBJZgorZGlyZWN0IGkvbyBpcyBub3QgcG9zc2libGUgZm9yIHRoZSB3aG9sZSB0cmFuc2ZlciwgdGhlIGRyaXZlciBidWZmZXIKK2lzIHVzZWQgKGkuZS4sIGJvdW5jZSBidWZmZXJzIGZvciBpbmRpdmlkdWFsIHBhZ2VzIGFyZSBub3QKK3VzZWQpLiBEaXJlY3QgaS9vIGNhbiBiZSBpbXBvc3NpYmxlIGJlY2F1c2Ugb2Ygc2V2ZXJhbCByZWFzb25zLCBlLmcuOgorLSBvbmUgb3IgbW9yZSBwYWdlcyBhcmUgYXQgYWRkcmVzc2VzIG5vdCByZWFjaGFibGUgYnkgdGhlIEhCQQorLSB0aGUgbnVtYmVyIG9mIHBhZ2VzIGluIHRoZSB0cmFuc2ZlciBleGNlZWRzIHRoZSBudW1iZXIgb2YKKyAgc2NhdHRlci9nYXRoZXIgc2VnbWVudHMgcGVybWl0dGVkIGJ5IHRoZSBIQkEKKy0gb25lIG9yIG1vcmUgcGFnZXMgY2FuJ3QgYmUgbG9ja2VkIGludG8gbWVtb3J5IChzaG91bGQgbm90IGhhcHBlbiBpbgorICBhbnkgcmVhc29uYWJsZSBzaXR1YXRpb24pCisKK1RoZSBzaXplIG9mIHRoZSBkcml2ZXIgYnVmZmVycyBpcyBhbHdheXMgYXQgbGVhc3Qgb25lIHRhcGUgYmxvY2suIEluIGZpeGVkCitibG9jayBtb2RlLCB0aGUgbWluaW11bSBidWZmZXIgc2l6ZSBpcyBkZWZpbmVkIChpbiAxMDI0IGJ5dGUgdW5pdHMpIGJ5CitTVF9GSVhFRF9CVUZGRVJfQkxPQ0tTLiBXaXRoIHNtYWxsIGJsb2NrIHNpemUgdGhpcyBhbGxvd3MgYnVmZmVyaW5nIG9mCitzZXZlcmFsIGJsb2NrcyBhbmQgdXNpbmcgb25lIFNDU0kgcmVhZCBvciB3cml0ZSB0byB0cmFuc2ZlciBhbGwgb2YgdGhlCitibG9ja3MuIEJ1ZmZlcmluZyBvZiBkYXRhIGFjcm9zcyB3cml0ZSBjYWxscyBpbiBmaXhlZCBibG9jayBtb2RlIGlzCithbGxvd2VkIGlmIFNUX0JVRkZFUl9XUklURVMgaXMgbm9uLXplcm8gYW5kIGRpcmVjdCBpL28gaXMgbm90IHVzZWQuCitCdWZmZXIgYWxsb2NhdGlvbiB1c2VzIGNodW5rcyBvZiBtZW1vcnkgaGF2aW5nIHNpemVzIDJebiAqIChwYWdlCitzaXplKS4gQmVjYXVzZSBvZiB0aGlzIHRoZSBhY3R1YWwgYnVmZmVyIHNpemUgbWF5IGJlIGxhcmdlciB0aGFuIHRoZQorbWluaW11bSBhbGxvd2FibGUgYnVmZmVyIHNpemUuCisKK05PVEUgdGhhdCBpZiBkaXJlY3QgaS9vIGlzIHVzZWQsIHRoZSBzbWFsbCB3cml0ZXMgYXJlIG5vdCBidWZmZXJlZC4gVGhpcyBtYXkKK2NhdXNlIGEgc3VycHJpc2Ugd2hlbiBtb3ZpbmcgZnJvbSAyLjQuIFRoZXJlIHNtYWxsIHdyaXRlcyAoZS5nLiwgdGFyIHdpdGhvdXQKKy1iIG9wdGlvbikgbWF5IGhhdmUgaGFkIGdvb2QgdGhyb3VnaHB1dCBidXQgdGhpcyBpcyBub3QgdHJ1ZSBhbnkgbW9yZSB3aXRoCisyLjYuIERpcmVjdCBpL28gY2FuIGJlIHR1cm5lZCBvZmYgdG8gc29sdmUgdGhpcyBwcm9ibGVtIGJ1dCBhIGJldHRlciBzb2x1dGlvbgoraXMgdG8gdXNlIGJpZ2dlciB3cml0ZSgpIGJ5dGUgY291bnRzIChlLmcuLCB0YXIgLWIgNjQpLgorCitBc3luY2hyb25vdXMgd3JpdGluZy4gV3JpdGluZyB0aGUgYnVmZmVyIGNvbnRlbnRzIHRvIHRoZSB0YXBlIGlzCitzdGFydGVkIGFuZCB0aGUgd3JpdGUgY2FsbCByZXR1cm5zIGltbWVkaWF0ZWx5LiBUaGUgc3RhdHVzIGlzIGNoZWNrZWQKK2F0IHRoZSBuZXh0IHRhcGUgb3BlcmF0aW9uLiBBc3luY2hyb25vdXMgd3JpdGVzIGFyZSBub3QgZG9uZSB3aXRoCitkaXJlY3QgaS9vIGFuZCBub3QgaW4gZml4ZWQgYmxvY2sgbW9kZS4KKworQnVmZmVyZWQgd3JpdGVzIGFuZCBhc3luY2hyb25vdXMgd3JpdGVzIG1heSBpbiBzb21lIHJhcmUgY2FzZXMgY2F1c2UKK3Byb2JsZW1zIGluIG11bHRpdm9sdW1lIG9wZXJhdGlvbnMgaWYgdGhlcmUgaXMgbm90IGVub3VnaCBzcGFjZSBvbiB0aGUKK3RhcGUgYWZ0ZXIgdGhlIGVhcmx5LXdhcm5pbmcgbWFyayB0byBmbHVzaCB0aGUgZHJpdmVyIGJ1ZmZlci4KKworUmVhZCBhaGVhZCBmb3IgZml4ZWQgYmxvY2sgbW9kZSAoU1RfUkVBRF9BSEVBRCkuIEZpbGxpbmcgdGhlIGJ1ZmZlciBpcworYXR0ZW1wdGVkIGV2ZW4gaWYgdGhlIHVzZXIgZG9lcyBub3Qgd2FudCB0byBnZXQgYWxsIG9mIHRoZSBkYXRhIGF0Cit0aGlzIHJlYWQgY29tbWFuZC4gU2hvdWxkIGJlIGRpc2FibGVkIGZvciB0aG9zZSBkcml2ZXMgdGhhdCBkb24ndCBsaWtlCithIGZpbGVtYXJrIHRvIHRydW5jYXRlIGEgcmVhZCByZXF1ZXN0IG9yIHRoYXQgZG9uJ3QgbGlrZSBiYWNrc3BhY2luZy4KKworU2NhdHRlci9nYXRoZXIgYnVmZmVycyAoYnVmZmVycyB0aGF0IGNvbnNpc3Qgb2YgY2h1bmtzIG5vbi1jb250aWd1b3VzCitpbiB0aGUgcGh5c2ljYWwgbWVtb3J5KSBhcmUgdXNlZCBpZiBjb250aWd1b3VzIGJ1ZmZlcnMgY2FuJ3QgYmUKK2FsbG9jYXRlZC4gVG8gc3VwcG9ydCBhbGwgU0NTSSBhZGFwdGVycyAoaW5jbHVkaW5nIHRob3NlIG5vdAorc3VwcG9ydGluZyBzY2F0dGVyL2dhdGhlciksIGJ1ZmZlciBhbGxvY2F0aW9uIGlzIHVzaW5nIHRoZSBmb2xsb3dpbmcKK3RocmVlIGtpbmRzIG9mIGNodW5rczoKKzEuIFRoZSBpbml0aWFsIHNlZ21lbnQgdGhhdCBpcyB1c2VkIGZvciBhbGwgU0NTSSBhZGFwdGVycyBpbmNsdWRpbmcKK3Rob3NlIG5vdCBzdXBwb3J0aW5nIHNjYXR0ZXIvZ2F0aGVyLiBUaGUgc2l6ZSBvZiB0aGlzIGJ1ZmZlciB3aWxsIGJlCisoUEFHRV9TSVpFIDw8IFNUX0ZJUlNUX09SREVSKSBieXRlcyBpZiB0aGUgc3lzdGVtIGNhbiBnaXZlIGEgY2h1bmsgb2YKK3RoaXMgc2l6ZSAoYW5kIGl0IGlzIG5vdCBsYXJnZXIgdGhhbiB0aGUgYnVmZmVyIHNpemUgc3BlY2lmaWVkIGJ5CitTVF9CVUZGRVJfQkxPQ0tTKS4gSWYgdGhpcyBzaXplIGlzIG5vdCBhdmFpbGFibGUsIHRoZSBkcml2ZXIgaGFsdmVzCit0aGUgc2l6ZSBhbmQgdHJpZXMgYWdhaW4gdW50aWwgdGhlIHNpemUgb2Ygb25lIHBhZ2UuIFRoZSBkZWZhdWx0CitzZXR0aW5ncyBpbiBzdF9vcHRpb25zLmggbWFrZSB0aGUgZHJpdmVyIHRvIHRyeSB0byBhbGxvY2F0ZSBhbGwgb2YgdGhlCitidWZmZXIgYXMgb25lIGNodW5rLgorMi4gVGhlIHNjYXR0ZXIvZ2F0aGVyIHNlZ21lbnRzIHRvIGZpbGwgdGhlIHNwZWNpZmllZCBidWZmZXIgc2l6ZSBhcmUKK2FsbG9jYXRlZCBzbyB0aGF0IGFzIG1hbnkgc2VnbWVudHMgYXMgcG9zc2libGUgYXJlIHVzZWQgYnV0IHRoZSBudW1iZXIKK29mIHNlZ21lbnRzIGRvZXMgbm90IGV4Y2VlZCBTVF9GSVJTVF9TRy4KKzMuIFRoZSByZW1haW5pbmcgc2VnbWVudHMgYmV0d2VlbiBTVF9NQVhfU0cgKG9yIHRoZSBtb2R1bGUgcGFyYW1ldGVyCittYXhfc2dfc2VncykgYW5kIHRoZSBudW1iZXIgb2Ygc2VnbWVudHMgdXNlZCBpbiBwaGFzZXMgMSBhbmQgMgorYXJlIHVzZWQgdG8gZXh0ZW5kIHRoZSBidWZmZXIgYXQgcnVuLXRpbWUgaWYgdGhpcyBpcyBuZWNlc3NhcnkuIFRoZQorbnVtYmVyIG9mIHNjYXR0ZXIvZ2F0aGVyIHNlZ21lbnRzIGFsbG93ZWQgZm9yIHRoZSBTQ1NJIGFkYXB0ZXIgaXMgbm90CitleGNlZWRlZCBpZiBpdCBpcyBzbWFsbGVyIHRoYW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIHNjYXR0ZXIvZ2F0aGVyCitzZWdtZW50cyBzcGVjaWZpZWQuIElmIHRoZSBtYXhpbXVtIG51bWJlciBhbGxvd2VkIGZvciB0aGUgU0NTSSBhZGFwdGVyCitpcyBzbWFsbGVyIHRoYW4gdGhlIG51bWJlciBvZiBzZWdtZW50cyB1c2VkIGluIHBoYXNlcyAxIGFuZCAyLAorZXh0ZW5kaW5nIHRoZSBidWZmZXIgd2lsbCBhbHdheXMgZmFpbC4KKworCitFT00gQkVIQVZJT1VSIFdIRU4gV1JJVElORworCitXaGVuIHRoZSBlbmQgb2YgbWVkaXVtIGVhcmx5IHdhcm5pbmcgaXMgZW5jb3VudGVyZWQsIHRoZSBjdXJyZW50IHdyaXRlCitpcyBmaW5pc2hlZCBhbmQgdGhlIG51bWJlciBvZiBieXRlcyBpcyByZXR1cm5lZC4gVGhlIG5leHQgd3JpdGUKK3JldHVybnMgLTEgYW5kIGVycm5vIGlzIHNldCB0byBFTk9TUEMuIFRvIGVuYWJsZSB3cml0aW5nIGEgdHJhaWxlciwKK3RoZSBuZXh0IHdyaXRlIGlzIGFsbG93ZWQgdG8gcHJvY2VlZCBhbmQsIGlmIHN1Y2Nlc3NmdWwsIHRoZSBudW1iZXIgb2YKK2J5dGVzIGlzIHJldHVybmVkLiBBZnRlciB0aGlzLCAtMSBhbmQgdGhlIG51bWJlciBvZiBieXRlcyBhcmUKK2FsdGVybmF0ZWx5IHJldHVybmVkIHVudGlsIHRoZSBwaHlzaWNhbCBlbmQgb2YgbWVkaXVtIChvciBzb21lIG90aGVyCitlcnJvcikgaXMgZW5jb3VudGVyZWQuCisKKworTU9EVUxFIFBBUkFNRVRFUlMKKworVGhlIGJ1ZmZlciBzaXplLCB3cml0ZSB0aHJlc2hvbGQsIGFuZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgYWxsb2NhdGVkIGJ1ZmZlcnMKK2FyZSBjb25maWd1cmFibGUgd2hlbiB0aGUgZHJpdmVyIGlzIGxvYWRlZCBhcyBhIG1vZHVsZS4gVGhlIGtleXdvcmRzIGFyZToKKworYnVmZmVyX2ticz14eHggICAgICAgICAgICAgdGhlIGJ1ZmZlciBzaXplIGZvciBmaXhlZCBibG9jayBtb2RlIGlzIHNldAorCQkJICAgdG8geHh4IGtpbG9ieXRlcword3JpdGVfdGhyZXNob2xkX2ticz14eHggICAgdGhlIHdyaXRlIHRocmVzaG9sZCBpbiBraWxvYnl0ZXMgc2V0IHRvIHh4eAorbWF4X3NnX3NlZ3M9eHh4CQkgICB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc2NhdHRlci9nYXRoZXIKKwkJCSAgIHNlZ21lbnRzCit0cnlfZGlyZWN0X2lvPXgJCSAgIHRyeSBkaXJlY3QgdHJhbnNmZXIgYmV0d2VlbiB1c2VyIGJ1ZmZlciBhbmQKKwkJCSAgIHRhcGUgZHJpdmUgaWYgdGhpcyBpcyBub24temVybworCitOb3RlIHRoYXQgaWYgdGhlIGJ1ZmZlciBzaXplIGlzIGNoYW5nZWQgYnV0IHRoZSB3cml0ZSB0aHJlc2hvbGQgaXMgbm90CitzZXQsIHRoZSB3cml0ZSB0aHJlc2hvbGQgaXMgc2V0IHRvIHRoZSBuZXcgYnVmZmVyIHNpemUgLSAyIGtCLgorCisKK0JPT1QgVElNRSBDT05GSUdVUkFUSU9OCisKK0lmIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgaW50byB0aGUga2VybmVsLCB0aGUgc2FtZSBwYXJhbWV0ZXJzIGNhbiBiZQorYWxzbyBzZXQgdXNpbmcsIGUuZy4sIHRoZSBMSUxPIGNvbW1hbmQgbGluZS4gVGhlIHByZWZlcnJlZCBzeW50YXggaXMKK3RvIHVzZSB0aGUgc2FtZSBrZXl3b3JkIHVzZWQgd2hlbiBsb2FkaW5nIGFzIG1vZHVsZSBidXQgcHJlcGVuZGVkCit3aXRoICdzdC4nLiBGb3IgaW5zdGFuY2UsIHRvIHNldCB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc2NhdHRlci9nYXRoZXIKK3NlZ21lbnRzLCB0aGUgcGFyYW1ldGVyICdzdC5tYXhfc2dfc2Vncz14eCcgc2hvdWxkIGJlIHVzZWQgKHh4IGlzIHRoZQorbnVtYmVyIG9mIHNjYXR0ZXIvZ2F0aGVyIHNlZ21lbnRzKS4KKworRm9yIGNvbXBhdGliaWxpdHksIHRoZSBvbGQgc3ludGF4IGZyb20gZWFybHkgMi41IGFuZCAyLjQga2VybmVsCit2ZXJzaW9ucyBpcyBzdXBwb3J0ZWQuIFRoZSBzYW1lIGtleXdvcmRzIGNhbiBiZSB1c2VkIGFzIHdoZW4gbG9hZGluZwordGhlIGRyaXZlciBhcyBtb2R1bGUuIElmIHNldmVyYWwgcGFyYW1ldGVycyBhcmUgc2V0LCB0aGUga2V5d29yZC12YWx1ZQorcGFpcnMgYXJlIHNlcGFyYXRlZCB3aXRoIGEgY29tbWEgKG5vIHNwYWNlcyBhbGxvd2VkKS4gQSBjb2xvbiBjYW4gYmUKK3VzZWQgaW5zdGVhZCBvZiB0aGUgZXF1YWwgbWFyay4gVGhlIGRlZmluaXRpb24gaXMgcHJlcGVuZGVkIGJ5IHRoZQorc3RyaW5nIHN0PS4gSGVyZSBpcyBhbiBleGFtcGxlOgorCisJc3Q9YnVmZmVyX2ticzo2NCx3cml0ZV90aHJlc2hvbGRfa2JzOjYwCisKK1RoZSBmb2xsb3dpbmcgc3ludGF4IHVzZWQgYnkgdGhlIG9sZCBrZXJuZWwgdmVyc2lvbnMgaXMgYWxzbyBzdXBwb3J0ZWQ6CisKKyAgICAgICAgICAgc3Q9YWFbLGJiWyxkZF1dCisKK3doZXJlCisgIGFhIGlzIHRoZSBidWZmZXIgc2l6ZSBmb3IgZml4ZWQgYmxvY2sgbW9kZSBpbiAxMDI0IGJ5dGUgdW5pdHMKKyAgYmIgaXMgdGhlIHdyaXRlIHRocmVzaG9sZCBpbiAxMDI0IGJ5dGUgdW5pdHMKKyAgZGQgaXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHNjYXR0ZXIvZ2F0aGVyIHNlZ21lbnRzCisKKworSU9DVExTCisKK1RoZSB0YXBlIGlzIHBvc2l0aW9uZWQgYW5kIHRoZSBkcml2ZSBwYXJhbWV0ZXJzIGFyZSBzZXQgd2l0aCBpb2N0bHMKK2RlZmluZWQgaW4gbXRpby5oIFRoZSB0YXBlIGNvbnRyb2wgcHJvZ3JhbSAnbXQnIHVzZXMgdGhlc2UgaW9jdGxzLiBUcnkKK3RvIGZpbmQgYW4gbXQgdGhhdCBzdXBwb3J0cyBhbGwgb2YgdGhlIExpbnV4IFNDU0kgdGFwZSBpb2N0bHMgYW5kCitvcGVucyB0aGUgZGV2aWNlIGZvciB3cml0aW5nIGlmIHRoZSB0YXBlIGNvbnRlbnRzIHdpbGwgYmUgbW9kaWZpZWQKKyhsb29rIGZvciBhIHBhY2thZ2UgbXQtc3QqIGZyb20gdGhlIExpbnV4IGZ0cCBzaXRlczsgdGhlIEdOVSBtdCBkb2VzCitub3Qgb3BlbiBmb3Igd3JpdGluZyBmb3IsIGUuZy4sIGVyYXNlKS4KKworVGhlIHN1cHBvcnRlZCBpb2N0bHMgYXJlOgorCitUaGUgZm9sbG93aW5nIHVzZSB0aGUgc3RydWN0dXJlIG10b3A6CisKK01URlNGICAgU3BhY2UgZm9yd2FyZCBvdmVyIGNvdW50IGZpbGVtYXJrcy4gVGFwZSBwb3NpdGlvbmVkIGFmdGVyIGZpbGVtYXJrLgorTVRGU0ZNICBBcyBhYm92ZSBidXQgdGFwZSBwb3NpdGlvbmVkIGJlZm9yZSBmaWxlbWFyay4KK01UQlNGCVNwYWNlIGJhY2t3YXJkIG92ZXIgY291bnQgZmlsZW1hcmtzLiBUYXBlIHBvc2l0aW9uZWQgYmVmb3JlCisgICAgICAgIGZpbGVtYXJrLgorTVRCU0ZNICBBcyBhYm92ZSBidXQgYXBlIHBvc2l0aW9uZWQgYWZ0ZXIgZmlsZW1hcmsuCitNVEZTUiAgIFNwYWNlIGZvcndhcmQgb3ZlciBjb3VudCByZWNvcmRzLgorTVRCU1IgICBTcGFjZSBiYWNrd2FyZCBvdmVyIGNvdW50IHJlY29yZHMuCitNVEZTUyAgIFNwYWNlIGZvcndhcmQgb3ZlciBjb3VudCBzZXRtYXJrcy4KK01UQlNTICAgU3BhY2UgYmFja3dhcmQgb3ZlciBjb3VudCBzZXRtYXJrcy4KK01UV0VPRiAgV3JpdGUgY291bnQgZmlsZW1hcmtzLgorTVRXRU9GSQlXcml0ZSBjb3VudCBmaWxlbWFya3Mgd2l0aCBpbW1lZGlhdGUgYml0IHNldCAoaS5lLiwgZG9lcyBub3QKKwl3YWl0IHVudGlsIGRhdGEgaXMgb24gdGFwZSkKK01UV1NNICAgV3JpdGUgY291bnQgc2V0bWFya3MuCitNVFJFVyAgIFJld2luZCB0YXBlLgorTVRPRkZMICBTZXQgZGV2aWNlIG9mZiBsaW5lIChvZnRlbiByZXdpbmQgcGx1cyBlamVjdCkuCitNVE5PUCAgIERvIG5vdGhpbmcgZXhjZXB0IGZsdXNoIHRoZSBidWZmZXJzLgorTVRSRVRFTiBSZS10ZW5zaW9uIHRhcGUuCitNVEVPTSAgIFNwYWNlIHRvIGVuZCBvZiByZWNvcmRlZCBkYXRhLgorTVRFUkFTRSBFcmFzZSB0YXBlLiBJZiB0aGUgYXJndW1lbnQgaXMgemVybywgdGhlIHNob3J0IGVyYXNlIGNvbW1hbmQKKwlpcyB1c2VkLiBUaGUgbG9uZyBlcmFzZSBjb21tYW5kIGlzIHVzZWQgd2l0aCBhbGwgb3RoZXIgdmFsdWVzCisJb2YgdGhlIGFyZ3VtZW50LgorTVRTRUVLCVNlZWsgdG8gdGFwZSBibG9jayBjb3VudC4gVXNlcyBUYW5kYmVyZy1jb21wYXRpYmxlIHNlZWsgKFFGQSkKKyAgICAgICAgZm9yIFNDU0ktMSBkcml2ZXMgYW5kIFNDU0ktMiBzZWVrIGZvciBTQ1NJLTIgZHJpdmVzLiBUaGUgZmlsZSBhbmQKKwlibG9jayBudW1iZXJzIGluIHRoZSBzdGF0dXMgYXJlIG5vdCB2YWxpZCBhZnRlciBhIHNlZWsuCitNVFNFVEJMSyBTZXQgdGhlIGRyaXZlIGJsb2NrIHNpemUuIFNldHRpbmcgdG8gemVybyBzZXRzIHRoZSBkcml2ZSBpbnRvCisgICAgICAgIHZhcmlhYmxlIGJsb2NrIG1vZGUgKGlmIGFwcGxpY2FibGUpLgorTVRTRVRERU5TSVRZIFNldHMgdGhlIGRyaXZlIGRlbnNpdHkgY29kZSB0byBhcmcuIFNlZSBkcml2ZQorICAgICAgICBkb2N1bWVudGF0aW9uIGZvciBhdmFpbGFibGUgY29kZXMuCitNVExPQ0sgYW5kIE1UVU5MT0NLIEV4cGxpY2l0bHkgbG9jay91bmxvY2sgdGhlIHRhcGUgZHJpdmUgZG9vci4KK01UTE9BRCBhbmQgTVRVTkxPQUQgRXhwbGljaXRseSBsb2FkIGFuZCB1bmxvYWQgdGhlIHRhcGUuIElmIHRoZQorCWNvbW1hbmQgYXJndW1lbnQgeCBpcyBiZXR3ZWVuIE1UX1NUX0hQTE9BREVSX09GRlNFVCArIDEgYW5kCisJTVRfU1RfSFBMT0FERVJfT0ZGU0VUICsgNiwgdGhlIG51bWJlciB4IGlzIHVzZWQgc2VudCB0byB0aGUKKwlkcml2ZSB3aXRoIHRoZSBjb21tYW5kIGFuZCBpdCBzZWxlY3RzIHRoZSB0YXBlIHNsb3QgdG8gdXNlIG9mCisJSFAgQzE1NTNBIGNoYW5nZXIuCitNVENPTVBSRVNTSU9OIFNldHMgY29tcHJlc3Npbmcgb3IgdW5jb21wcmVzc2luZyBkcml2ZSBtb2RlIHVzaW5nIHRoZQorCVNDU0kgbW9kZSBwYWdlIDE1LiBOb3RlIHRoYXQgc29tZSBkcml2ZXMgb3RoZXIgbWV0aG9kcyBmb3IKKwljb250cm9sIG9mIGNvbXByZXNzaW9uLiBTb21lIGRyaXZlcyAobGlrZSB0aGUgRXhhYnl0ZXMpIHVzZQorCWRlbnNpdHkgY29kZXMgZm9yIGNvbXByZXNzaW9uIGNvbnRyb2wuIFNvbWUgZHJpdmVzIHVzZSBhbm90aGVyCisJbW9kZSBwYWdlIGJ1dCB0aGlzIHBhZ2UgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkIGluIHRoZQorCWRyaXZlci4gU29tZSBkcml2ZXMgd2l0aG91dCBjb21wcmVzc2lvbiBjYXBhYmlsaXR5IHdpbGwgYWNjZXB0CisJYW55IGNvbXByZXNzaW9uIG1vZGUgd2l0aG91dCBlcnJvci4KK01UU0VUUEFSVCBNb3ZlcyB0aGUgdGFwZSB0byB0aGUgcGFydGl0aW9uIGdpdmVuIGJ5IHRoZSBhcmd1bWVudCBhdCB0aGUKKwluZXh0IHRhcGUgb3BlcmF0aW9uLiBUaGUgYmxvY2sgYXQgd2hpY2ggdGhlIHRhcGUgaXMgcG9zaXRpb25lZAorCWlzIHRoZSBibG9jayB3aGVyZSB0aGUgdGFwZSB3YXMgcHJldmlvdXNseSBwb3NpdGlvbmVkIGluIHRoZQorCW5ldyBhY3RpdmUgcGFydGl0aW9uIHVubGVzcyB0aGUgbmV4dCB0YXBlIG9wZXJhdGlvbiBpcworCU1UU0VFSy4gSW4gdGhpcyBjYXNlIHRoZSB0YXBlIGlzIG1vdmVkIGRpcmVjdGx5IHRvIHRoZSBibG9jaworCXNwZWNpZmllZCBieSBNVFNFRUsuIE1UU0VUUEFSVCBpcyBpbmFjdGl2ZSB1bmxlc3MKKwlNVF9TVF9DQU5fUEFSVElUSU9OUyBzZXQuCitNVE1LUEFSVCBGb3JtYXRzIHRoZSB0YXBlIHdpdGggb25lIHBhcnRpdGlvbiAoYXJndW1lbnQgemVybykgb3IgdHdvCisJcGFydGl0aW9ucyAodGhlIGFyZ3VtZW50IGdpdmVzIGluIG1lZ2FieXRlcyB0aGUgc2l6ZSBvZgorCXBhcnRpdGlvbiAxIHRoYXQgaXMgcGh5c2ljYWxseSB0aGUgZmlyc3QgcGFydGl0aW9uIG9mIHRoZQorCXRhcGUpLiBUaGUgZHJpdmUgaGFzIHRvIHN1cHBvcnQgcGFydGl0aW9ucyB3aXRoIHNpemUgc3BlY2lmaWVkCisJYnkgdGhlIGluaXRpYXRvci4gSW5hY3RpdmUgdW5sZXNzIE1UX1NUX0NBTl9QQVJUSVRJT05TIHNldC4KK01UU0VURFJWQlVGRkVSCisJSXMgdXNlZCBmb3Igc2V2ZXJhbCBwdXJwb3Nlcy4gVGhlIGNvbW1hbmQgaXMgb2J0YWluZWQgZnJvbSBjb3VudAorICAgICAgICB3aXRoIG1hc2sgTVRfU0VUX09QVElPTlMsIHRoZSBsb3cgb3JkZXIgYml0cyBhcmUgdXNlZCBhcyBhcmd1bWVudC4KKwlUaGlzIGNvbW1hbmQgaXMgb25seSBhbGxvd2VkIGZvciB0aGUgc3VwZXJ1c2VyIChyb290KS4gVGhlCisJc3ViY29tbWFuZHMgYXJlOgorCTAKKyAgICAgICAgICAgVGhlIGRyaXZlIGJ1ZmZlciBvcHRpb24gaXMgc2V0IHRvIHRoZSBhcmd1bWVudC4gWmVybyBtZWFucworICAgICAgICAgICBubyBidWZmZXJpbmcuCisgICAgICAgIE1UX1NUX0JPT0xFQU5TCisgICAgICAgICAgIFNldHMgdGhlIGJ1ZmZlcmluZyBvcHRpb25zLiBUaGUgYml0cyBhcmUgdGhlIG5ldyBzdGF0ZXMKKyAgICAgICAgICAgKGVuYWJsZWQvZGlzYWJsZWQpIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyAoaW4gdGhlCisJICAgcGFyZW50aGVzaXMgaXMgc3BlY2lmaWVkIHdoZXRoZXIgdGhlIG9wdGlvbiBpcyBnbG9iYWwgb3IKKwkgICBjYW4gYmUgc3BlY2lmaWVkIGRpZmZlcmVudGx5IGZvciBlYWNoIG1vZGUpOgorCSAgICAgTVRfU1RfQlVGRkVSX1dSSVRFUyB3cml0ZSBidWZmZXJpbmcgKG1vZGUpCisJICAgICBNVF9TVF9BU1lOQ19XUklURVMgYXN5bmNocm9ub3VzIHdyaXRlcyAobW9kZSkKKyAgICAgICAgICAgICBNVF9TVF9SRUFEX0FIRUFEICByZWFkIGFoZWFkIChtb2RlKQorICAgICAgICAgICAgIE1UX1NUX1RXT19GTSB3cml0aW5nIG9mIHR3byBmaWxlbWFya3MgKGdsb2JhbCkKKwkgICAgIE1UX1NUX0ZBU1RfRU9NIHVzaW5nIHRoZSBTQ1NJIHNwYWNpbmcgdG8gRU9EIChnbG9iYWwpCisJICAgICBNVF9TVF9BVVRPX0xPQ0sgYXV0b21hdGljIGxvY2tpbmcgb2YgdGhlIGRyaXZlIGRvb3IgKGdsb2JhbCkKKyAgICAgICAgICAgICBNVF9TVF9ERUZfV1JJVEVTIHRoZSBkZWZhdWx0cyBhcmUgbWVhbnQgb25seSBmb3Igd3JpdGVzIChtb2RlKQorCSAgICAgTVRfU1RfQ0FOX0JTUiBiYWNrc3BhY2luZyBvdmVyIG1vcmUgdGhhbiBvbmUgcmVjb3JkcyBjYW4KKwkJYmUgdXNlZCBmb3IgcmVwb3NpdGlvbmluZyB0aGUgdGFwZSAoZ2xvYmFsKQorCSAgICAgTVRfU1RfTk9fQkxLTElNUyB0aGUgZHJpdmVyIGRvZXMgbm90IGFzayB0aGUgYmxvY2sgbGltaXRzCisJCWZyb20gdGhlIGRyaXZlIChibG9jayBzaXplIGNhbiBiZSBjaGFuZ2VkIG9ubHkgdG8KKwkJdmFyaWFibGUpIChnbG9iYWwpCisJICAgICBNVF9TVF9DQU5fUEFSVElUSU9OUyBlbmFibGVzIHN1cHBvcnQgZm9yIHBhcnRpdGlvbmVkCisJCXRhcGVzIChnbG9iYWwpCisJICAgICBNVF9TVF9TQ1NJMkxPR0lDQUwgdGhlIGxvZ2ljYWwgYmxvY2sgbnVtYmVyIGlzIHVzZWQgaW4KKwkJdGhlIE1UU0VFSyBhbmQgTVRJT0NQT1MgZm9yIFNDU0ktMiBkcml2ZXMgaW5zdGVhZCBvZgorCQl0aGUgZGV2aWNlIGRlcGVuZGVudCBhZGRyZXNzLiBJdCBpcyByZWNvbW1lbmRlZCB0byBzZXQKKwkJdGhpcyBmbGFnIHVubGVzcyB0aGVyZSBhcmUgdGFwZXMgdXNpbmcgdGhlIGRldmljZQorCQlkZXBlbmRlbnQgKGZyb20gdGhlIG9sZCB0aW1lcykgKGdsb2JhbCkKKwkgICAgIE1UX1NUX1NZU1Ygc2V0cyB0aGUgU1lTViBzZW1hbnRpY3MgKG1vZGUpCisJICAgICBNVF9TVF9OT1dBSVQgZW5hYmxlcyBpbW1lZGlhdGUgbW9kZSAoaS5lLiwgZG9uJ3Qgd2FpdCBmb3IKKwkgICAgICAgIHRoZSBjb21tYW5kIHRvIGZpbmlzaCkgZm9yIHNvbWUgY29tbWFuZHMgKGUuZy4sIHJld2luZCkKKwkgICAgIE1UX1NUX05PV0FJVF9FT0YgZW5hYmxlcyBpbW1lZGlhdGUgZmlsZW1hcmsgbW9kZSAoaS5lLiB3aGVuCisJICAgICAgICB3cml0aW5nIGEgZmlsZW1hcmssIGRvbid0IHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlKS4gUGxlYXNlCisJCXNlZSB0aGUgQkFTSUNTIG5vdGUgYWJvdXQgTVRXRU9GSSB3aXRoIHJlc3BlY3QgdG8gdGhlCisJCXBvc3NpYmxlIGRhbmdlcnMgb2Ygd3JpdGluZyBpbW1lZGlhdGUgZmlsZW1hcmtzLgorCSAgICAgTVRfU1RfU0lMSSBlbmFibGVzIHNldHRpbmcgdGhlIFNJTEkgYml0IGluIFNDU0kgY29tbWFuZHMgd2hlbgorCQlyZWFkaW5nIGluIHZhcmlhYmxlIGJsb2NrIG1vZGUgdG8gZW5oYW5jZSBwZXJmb3JtYW5jZSB3aGVuCisJCXJlYWRpbmcgYmxvY2tzIHNob3J0ZXIgdGhhbiB0aGUgYnl0ZSBjb3VudDsgc2V0IHRoaXMgb25seQorCQlpZiB5b3UgYXJlIHN1cmUgdGhhdCB0aGUgZHJpdmUgc3VwcG9ydHMgU0lMSSBhbmQgdGhlIEhCQQorCQljb3JyZWN0bHkgcmV0dXJucyB0cmFuc2ZlciByZXNpZHVhbHMKKwkgICAgIE1UX1NUX0RFQlVHR0lORyBkZWJ1Z2dpbmcgKGdsb2JhbDsgZGVidWdnaW5nIG11c3QgYmUKKwkJY29tcGlsZWQgaW50byB0aGUgZHJpdmVyKQorCU1UX1NUX1NFVEJPT0xFQU5TCisJTVRfU1RfQ0xFQVJCT09MRUFOUworCSAgIFNldHMgb3IgY2xlYXJzIHRoZSBvcHRpb24gYml0cy4KKyAgICAgICAgTVRfU1RfV1JJVEVfVEhSRVNIT0xECisgICAgICAgICAgIFNldHMgdGhlIHdyaXRlIHRocmVzaG9sZCBmb3IgdGhpcyBkZXZpY2UgdG8ga2lsb2J5dGVzCisgICAgICAgICAgIHNwZWNpZmllZCBieSB0aGUgbG93ZXN0IGJpdHMuCisJTVRfU1RfREVGX0JMS1NJWkUKKwkgICBEZWZpbmVzIHRoZSBkZWZhdWx0IGJsb2NrIHNpemUgc2V0IGF1dG9tYXRpY2FsbHkuIFZhbHVlCisJICAgMHhmZmZmZmYgbWVhbnMgdGhhdCB0aGUgZGVmYXVsdCBpcyBub3QgdXNlZCBhbnkgbW9yZS4KKwlNVF9TVF9ERUZfREVOU0lUWQorCU1UX1NUX0RFRl9EUlZCVUZGRVIKKwkgICBVc2VkIHRvIHNldCBvciBjbGVhciB0aGUgZGVuc2l0eSAoOCBiaXRzKSwgYW5kIGRyaXZlIGJ1ZmZlcgorCSAgIHN0YXRlICgzIGJpdHMpLiBJZiB0aGUgdmFsdWUgaXMgTVRfU1RfQ0xFQVJfREVGQVVMVAorCSAgICgweGZmZmZmKSB0aGUgZGVmYXVsdCB3aWxsIG5vdCBiZSB1c2VkIGFueSBtb3JlLiBPdGhlcndpc2UKKwkgICB0aGUgbG93ZXJtb3N0IGJpdHMgb2YgdGhlIHZhbHVlIGNvbnRhaW4gdGhlIG5ldyB2YWx1ZSBvZgorCSAgIHRoZSBwYXJhbWV0ZXIuCisJTVRfU1RfREVGX0NPTVBSRVNTSU9OCisJICAgVGhlIGNvbXByZXNzaW9uIGRlZmF1bHQgd2lsbCBub3QgYmUgdXNlZCBpZiB0aGUgdmFsdWUgb2YKKwkgICB0aGUgbG93ZXJtb3N0IGJ5dGUgaXMgMHhmZi4gT3RoZXJ3aXNlIHRoZSBsb3dlcm1vc3QgYml0CisJICAgY29udGFpbnMgdGhlIG5ldyBkZWZhdWx0LiBJZiB0aGUgYml0cyA4LTE1IGFyZSBzZXQgdG8gYQorCSAgIG5vbi16ZXJvIG51bWJlciwgYW5kIHRoaXMgbnVtYmVyIGlzIG5vdCAweGZmLCB0aGUgbnVtYmVyIGlzCisJICAgdXNlZCBhcyB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtLiBUaGUgdmFsdWUKKwkgICBNVF9TVF9DTEVBUl9ERUZBVUxUIGNhbiBiZSB1c2VkIHRvIGNsZWFyIHRoZSBjb21wcmVzc2lvbgorCSAgIGRlZmF1bHQuCisJTVRfU1RfU0VUX1RJTUVPVVQKKwkgICBTZXQgdGhlIG5vcm1hbCB0aW1lb3V0IGluIHNlY29uZHMgZm9yIHRoaXMgZGV2aWNlLiBUaGUKKwkgICBkZWZhdWx0IGlzIDkwMCBzZWNvbmRzICgxNSBtaW51dGVzKS4gVGhlIHRpbWVvdXQgc2hvdWxkIGJlCisJICAgbG9uZyBlbm91Z2ggZm9yIHRoZSByZXRyaWVzIGRvbmUgYnkgdGhlIGRldmljZSB3aGlsZQorCSAgIHJlYWRpbmcvd3JpdGluZy4KKwlNVF9TVF9TRVRfTE9OR19USU1FT1VUCisJICAgU2V0IHRoZSBsb25nIHRpbWVvdXQgdGhhdCBpcyB1c2VkIGZvciBvcGVyYXRpb25zIHRoYXQgYXJlCisJICAga25vd24gdG8gdGFrZSBhIGxvbmcgdGltZS4gVGhlIGRlZmF1bHQgaXMgMTQwMDAgc2Vjb25kcworCSAgICgzLjkgaG91cnMpLiBGb3IgZXJhc2UgdGhpcyB2YWx1ZSBpcyBmdXJ0aGVyIG11bHRpcGxpZWQgYnkKKwkgICBlaWdodC4KKwlNVF9TVF9TRVRfQ0xOCisJICAgU2V0IHRoZSBjbGVhbmluZyByZXF1ZXN0IGludGVycHJldGF0aW9uIHBhcmFtZXRlcnMgdXNpbmcKKwkgICB0aGUgbG93ZXN0IDI0IGJpdHMgb2YgdGhlIGFyZ3VtZW50LiBUaGUgZHJpdmVyIGNhbiBzZXQgdGhlCisJICAgZ2VuZXJpYyBzdGF0dXMgYml0IEdNVF9DTE4gaWYgYSBjbGVhbmluZyByZXF1ZXN0IGJpdCBwYXR0ZXJuCisJICAgaXMgZm91bmQgZnJvbSB0aGUgZXh0ZW5kZWQgc2Vuc2UgZGF0YS4gTWFueSBkcml2ZXMgc2V0IG9uZSBvcgorCSAgIG1vcmUgYml0cyBpbiB0aGUgZXh0ZW5kZWQgc2Vuc2UgZGF0YSB3aGVuIHRoZSBkcml2ZSBuZWVkcworCSAgIGNsZWFuaW5nLiBUaGUgYml0cyBhcmUgZGV2aWNlLWRlcGVuZGVudC4gVGhlIGRyaXZlciBpcworCSAgIGdpdmVuIHRoZSBudW1iZXIgb2YgdGhlIHNlbnNlIGRhdGEgYnl0ZSAodGhlIGxvd2VzdCBlaWdodAorCSAgIGJpdHMgb2YgdGhlIGFyZ3VtZW50OyBtdXN0IGJlID49IDE4ICh2YWx1ZXMgMSAtIDE3CisJICAgcmVzZXJ2ZWQpIGFuZCA8PSB0aGUgbWF4aW11bSByZXF1ZXN0ZWQgc2Vuc2UgZGF0YSBzaXhlKSwgCisJICAgYSBtYXNrIHRvIHNlbGVjdCB0aGUgcmVsZXZhbnQgYml0cyAodGhlIGJpdHMgOS0xNiksIGFuZCB0aGUKKwkgICBiaXQgcGF0dGVybiAoYml0cyAxNy0yMykuIElmIHRoZSBiaXQgcGF0dGVybiBpcyB6ZXJvLCBvbmUKKwkgICBvciBtb3JlIGJpdHMgdW5kZXIgdGhlIG1hc2sgaW5kaWNhdGUgY2xlYW5pbmcgcmVxdWVzdC4gSWYKKwkgICB0aGUgcGF0dGVybiBpcyBub24temVybywgdGhlIHBhdHRlcm4gbXVzdCBtYXRjaCB0aGUgbWFza2VkCisJICAgc2Vuc2UgZGF0YSBieXRlLgorCisJICAgKFRoZSBjbGVhbmluZyBiaXQgaXMgc2V0IGlmIHRoZSBhZGRpdGlvbmFsIHNlbnNlIGNvZGUgYW5kCisJICAgcXVhbGlmaWVyIDAwaCAxN2ggYXJlIHNlZW4gcmVnYXJkbGVzcyBvZiB0aGUgc2V0dGluZyBvZgorCSAgIE1UX1NUX1NFVF9DTE4uKQorCitUaGUgZm9sbG93aW5nIGlvY3RsIHVzZXMgdGhlIHN0cnVjdHVyZSBtdHBvczoKK01USU9DUE9TIFJlYWRzIHRoZSBjdXJyZW50IHBvc2l0aW9uIGZyb20gdGhlIGRyaXZlLiBVc2VzCisgICAgICAgIFRhbmRiZXJnLWNvbXBhdGlibGUgUUZBIGZvciBTQ1NJLTEgZHJpdmVzIGFuZCB0aGUgU0NTSS0yCisgICAgICAgIGNvbW1hbmQgZm9yIHRoZSBTQ1NJLTIgZHJpdmVzLgorCitUaGUgZm9sbG93aW5nIGlvY3RsIHVzZXMgdGhlIHN0cnVjdHVyZSBtdGdldCB0byByZXR1cm4gdGhlIHN0YXR1czoKK01USU9DR0VUIFJldHVybnMgc29tZSBzdGF0dXMgaW5mb3JtYXRpb24uCisgICAgICAgIFRoZSBmaWxlIG51bWJlciBhbmQgYmxvY2sgbnVtYmVyIHdpdGhpbiBmaWxlIGFyZSByZXR1cm5lZC4gVGhlCisgICAgICAgIGJsb2NrIGlzIC0xIHdoZW4gaXQgY2FuJ3QgYmUgZGV0ZXJtaW5lZCAoZS5nLiwgYWZ0ZXIgTVRCU0YpLgorICAgICAgICBUaGUgZHJpdmUgdHlwZSBpcyBlaXRoZXIgTVRJU1NDU0kxIG9yIE1USVNTQ1NJMi4KKyAgICAgICAgVGhlIG51bWJlciBvZiByZWNvdmVyZWQgZXJyb3JzIHNpbmNlIHRoZSBwcmV2aW91cyBzdGF0dXMgY2FsbAorICAgICAgICBpcyBzdG9yZWQgaW4gdGhlIGxvd2VyIHdvcmQgb2YgdGhlIGZpZWxkIG10X2VycmVnLgorICAgICAgICBUaGUgY3VycmVudCBibG9jayBzaXplIGFuZCB0aGUgZGVuc2l0eSBjb2RlIGFyZSBzdG9yZWQgaW4gdGhlIGZpZWxkCisgICAgICAgIG10X2RzcmVnIChzaGlmdHMgZm9yIHRoZSBzdWJmaWVsZHMgYXJlIE1UX1NUX0JMS1NJWkVfU0hJRlQgYW5kCisgICAgICAgIE1UX1NUX0RFTlNJVFlfU0hJRlQpLgorCVRoZSBHTVRfeHh4IHN0YXR1cyBiaXRzIHJlZmxlY3QgdGhlIGRyaXZlIHN0YXR1cy4gR01UX0RSX09QRU4KKwlpcyBzZXQgaWYgdGhlcmUgaXMgbm8gdGFwZSBpbiB0aGUgZHJpdmUuIEdNVF9FT0QgbWVhbnMgZWl0aGVyCisJZW5kIG9mIHJlY29yZGVkIGRhdGEgb3IgZW5kIG9mIHRhcGUuIEdNVF9FT1QgbWVhbnMgZW5kIG9mIHRhcGUuCisKKworTUlTQ0VMTEFORU9VUyBDT01QSUxFIE9QVElPTlMKKworVGhlIHJlY292ZXJlZCB3cml0ZSBlcnJvcnMgYXJlIGNvbnNpZGVyZWQgZmF0YWwgaWYgU1RfUkVDT1ZFUkVEX1dSSVRFX0ZBVEFMCitpcyBkZWZpbmVkLgorCitUaGUgbWF4aW11bSBudW1iZXIgb2YgdGFwZSBkZXZpY2VzIGlzIGRldGVybWluZWQgYnkgdGhlIGRlZmluZQorU1RfTUFYX1RBUEVTLiBJZiBtb3JlIHRhcGVzIGFyZSBkZXRlY3RlZCBhdCBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIHRoZQorbWF4aW11bSBpcyBhZGp1c3RlZCBhY2NvcmRpbmdseS4KKworSW1tZWRpYXRlIHJldHVybiBmcm9tIHRhcGUgcG9zaXRpb25pbmcgU0NTSSBjb21tYW5kcyBjYW4gYmUgZW5hYmxlZCBieQorZGVmaW5pbmcgU1RfTk9XQUlULiBJZiB0aGlzIGlzIGRlZmluZWQsIHRoZSB1c2VyIHNob3VsZCB0YWtlIGNhcmUgdGhhdAordGhlIG5leHQgdGFwZSBvcGVyYXRpb24gaXMgbm90IHN0YXJ0ZWQgYmVmb3JlIHRoZSBwcmV2aW91cyBvbmUgaGFzCitmaW5pc2hlZC4gVGhlIGRyaXZlcyBhbmQgU0NTSSBhZGFwdGVycyBzaG91bGQgaGFuZGxlIHRoaXMgY29uZGl0aW9uCitncmFjZWZ1bGx5LCBidXQgc29tZSBkcml2ZS9hZGFwdGVyIGNvbWJpbmF0aW9ucyBhcmUga25vd24gdG8gaGFuZyB0aGUKK1NDU0kgYnVzIGluIHRoaXMgY2FzZS4KKworVGhlIE1URU9NIGNvbW1hbmQgaXMgYnkgZGVmYXVsdCBpbXBsZW1lbnRlZCBhcyBzcGFjaW5nIG92ZXIgMzI3NjcKK2ZpbGVtYXJrcy4gV2l0aCB0aGlzIG1ldGhvZCB0aGUgZmlsZSBudW1iZXIgaW4gdGhlIHN0YXR1cyBpcworY29ycmVjdC4gVGhlIHVzZXIgY2FuIHJlcXVlc3QgdXNpbmcgZGlyZWN0IHNwYWNpbmcgdG8gRU9EIGJ5IHNldHRpbmcKK1NUX0ZBU1RfRU9NIDEgKG9yIHVzaW5nIHRoZSBNVF9TVF9PUFRJT05TIGlvY3RsKS4gSW4gdGhpcyBjYXNlIHRoZSBmaWxlCitudW1iZXIgd2lsbCBiZSBpbnZhbGlkLgorCitXaGVuIHVzaW5nIHJlYWQgYWhlYWQgb3IgYnVmZmVyZWQgd3JpdGVzIHRoZSBwb3NpdGlvbiB3aXRoaW4gdGhlIGZpbGUKK21heSBub3QgYmUgY29ycmVjdCBhZnRlciB0aGUgZmlsZSBpcyBjbG9zZWQgKGNvcnJlY3QgcG9zaXRpb24gbWF5CityZXF1aXJlIGJhY2tzcGFjaW5nIG92ZXIgbW9yZSB0aGFuIG9uZSByZWNvcmQpLiBUaGUgY29ycmVjdCBwb3NpdGlvbgord2l0aGluIGZpbGUgY2FuIGJlIG9idGFpbmVkIGlmIFNUX0lOX0ZJTEVfUE9TIGlzIGRlZmluZWQgYXQgY29tcGlsZQordGltZSBvciB0aGUgTVRfU1RfQ0FOX0JTUiBiaXQgaXMgc2V0IGZvciB0aGUgZHJpdmUgd2l0aCBhbiBpb2N0bC4KKyhUaGUgZHJpdmVyIGFsd2F5cyBiYWNrcyBvdmVyIGEgZmlsZW1hcmsgY3Jvc3NlZCBieSByZWFkIGFoZWFkIGlmIHRoZQordXNlciBkb2VzIG5vdCByZXF1ZXN0IGRhdGEgdGhhdCBmYXIuKQorCisKK0RFQlVHR0lORyBISU5UUworCitEZWJ1Z2dpbmcgY29kZSBpcyBub3cgY29tcGlsZWQgaW4gYnkgZGVmYXVsdCBidXQgZGVidWdnaW5nIGlzIHR1cm5lZCBvZmYKK3dpdGggdGhlIGtlcm5lbCBtb2R1bGUgcGFyYW1ldGVyIGRlYnVnX2ZsYWcgZGVmYXVsdGluZyB0byAwLiAgRGVidWdnaW5nCitjYW4gc3RpbGwgYmUgc3dpdGNoZWQgb24gYW5kIG9mZiB3aXRoIGFuIGlvY3RsLiAgVG8gZW5hYmxlIGRlYnVnIGF0Cittb2R1bGUgbG9hZCB0aW1lIGFkZCBkZWJ1Z19mbGFnPTEgdG8gdGhlIG1vZHVsZSBsb2FkIG9wdGlvbnMsIHRoZQorZGVidWdnaW5nIG91dHB1dCBpcyBub3Qgdm9sdW1pbm91cy4gRGVidWdnaW5nIGNhbiBhbHNvIGJlIGVuYWJsZWQKK2FuZCBkaXNhYmxlZCBieSB3cml0aW5nIGEgJzAnIChkaXNhYmxlKSBvciAnMScgKGVuYWJsZSkgdG8gdGhlIHN5c2ZzCitmaWxlIC9zeXMvYnVzL3Njc2kvZHJpdmVycy9zdC9kZWJ1Z19mbGFnLgorCitJZiB0aGUgdGFwZSBzZWVtcyB0byBoYW5nLCBJIHdvdWxkIGJlIHZlcnkgaW50ZXJlc3RlZCB0byBoZWFyIHdoZXJlCit0aGUgZHJpdmVyIGlzIHdhaXRpbmcuIFdpdGggdGhlIGNvbW1hbmQgJ3BzIC1sJyB5b3UgY2FuIHNlZSB0aGUgc3RhdGUKK29mIHRoZSBwcm9jZXNzIHVzaW5nIHRoZSB0YXBlLiBJZiB0aGUgc3RhdGUgaXMgRCwgdGhlIHByb2Nlc3MgaXMKK3dhaXRpbmcgZm9yIHNvbWV0aGluZy4gVGhlIGZpZWxkIFdDSEFOIHRlbGxzIHdoZXJlIHRoZSBkcml2ZXIgaXMKK3dhaXRpbmcuIElmIHlvdSBoYXZlIHRoZSBjdXJyZW50IFN5c3RlbS5tYXAgaW4gdGhlIGNvcnJlY3QgcGxhY2UgKGluCisvYm9vdCBmb3IgdGhlIHByb2NwcyBJIHVzZSkgb3IgaGF2ZSB1cGRhdGVkIC9ldGMvcHNkYXRhYmFzZSAoZm9yIGttZW0KK3BzKSwgcHMgd3JpdGVzIHRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBXQ0hBTiBmaWVsZC4gSWYgbm90LCB5b3UgaGF2ZQordG8gbG9vayB1cCB0aGUgZnVuY3Rpb24gZnJvbSBTeXN0ZW0ubWFwLgorCitOb3RlIGFsc28gdGhhdCB0aGUgdGltZW91dHMgYXJlIHZlcnkgbG9uZyBjb21wYXJlZCB0byBtb3N0IG90aGVyCitkcml2ZXJzLiBUaGlzIG1lYW5zIHRoYXQgdGhlIExpbnV4IGRyaXZlciBtYXkgYXBwZWFyIGh1bmcgYWx0aG91Z2ggdGhlCityZWFsIHJlYXNvbiBpcyB0aGF0IHRoZSB0YXBlIGZpcm13YXJlIGhhcyBnb3QgY29uZnVzZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvc3ltNTNjNTAwX2NzLnR4dCBiL0RvY3VtZW50YXRpb24vc2NzaS9zeW01M2M1MDBfY3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZmViY2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvc3ltNTNjNTAwX2NzLnR4dApAQCAtMCwwICsxLDIzIEBACitUaGUgc3ltNTNjNTAwX2NzIGRyaXZlciBvcmlnaW5hdGVkIGFzIGFuIGFkZC1vbiB0byBEYXZpZCBIaW5kcycgcGNtY2lhLWNzCitwYWNrYWdlLCBhbmQgd2FzIHdyaXR0ZW4gYnkgVG9tIENvcm5lciAodGNvcm5lckB2aWEuYXQpLiAgQSByZXdyaXRlIHdhcworbG9uZyBvdmVyZHVlLCBhbmQgdGhlIGN1cnJlbnQgdmVyc2lvbiBhZGRyZXNzZXMgdGhlIGZvbGxvd2luZyBjb25jZXJuczoKKworCSgxKSBleHRlbnNpdmUga2VybmVsIGNoYW5nZXMgYmV0d2VlbiAyLjQgYW5kIDIuNi4KKwkoMikgZGVwcmVjYXRlZCBQQ01DSUEgc3VwcG9ydCBvdXRzaWRlIHRoZSBrZXJuZWwuCisKK0FsbCB0aGUgVVNFX0JJT1MgY29kZSBoYXMgYmVlbiByaXBwZWQgb3V0LiAgSXQgd2FzIG5ldmVyIHVzZWQsIGFuZCBjb3VsZAorbm90IGhhdmUgd29ya2VkIGFueXdheS4gIFRoZSBVU0VfRE1BIGNvZGUgaXMgbGlrZXdpc2UgZ29uZS4gIE1hbnkgdGhhbmtzCit0byBZT0tPVEEgSGlyb3NoaSAobnNwX2NzIGRyaXZlcikgYW5kIERhdmlkIEhpbmRzIChxbG9naWNfY3MgZHJpdmVyKSBmb3IKK3RoZSBjb2RlIGZyYWdtZW50cyBJIHNoYW1lbGVzc2x5IGFkYXB0ZWQgZm9yIHRoaXMgd29yay4gIFRoYW5rcyBhbHNvIHRvCitDaHJpc3RvcGggSGVsbHdpZyBmb3IgaGlzIHBhdGllbnQgdHV0ZWxhZ2Ugd2hpbGUgSSBzdHVtYmxlZCBhYm91dC4KKworVGhlIFN5bWJpb3MgTG9naWMgNTNjNTAwIGNoaXAgd2FzIHVzZWQgaW4gdGhlICJuZXdlciIgKGNpcmNhIDE5OTcpIHZlcnNpb24KK29mIHRoZSBOZXcgTWVkaWEgQnVzIFRvYXN0ZXIgUENNQ0lBIFNDU0kgY29udHJvbGxlci4gIFByZXN1bWFibHkgdGhlcmUgYXJlCitvdGhlciBwcm9kdWN0cyB1c2luZyB0aGlzIGNoaXAsIGJ1dCBJJ3ZlIG5ldmVyIGxhaWQgZXllcyAobXVjaCBsZXNzIGhhbmRzKQorb24gb25lLgorCitUaHJvdWdoIHRoZSB5ZWFycywgdGhlcmUgaGF2ZSBiZWVuIGEgbnVtYmVyIG9mIGRvd25sb2FkcyBvZiB0aGUgcGNtY2lhLWNzCit2ZXJzaW9uIG9mIHRoaXMgZHJpdmVyLCBhbmQgSSBndWVzcyBpdCB3b3JrZWQgZm9yIHRob3NlIHVzZXJzLiAgSXQgd29ya2VkCitmb3IgVG9tIENvcm5lciwgYW5kIGl0IHdvcmtzIGZvciBtZS4gIFlvdXIgbWlsZWFnZSB3aWxsIHByb2JhYmx5IHZhcnkuCisKKy0tQm9iIFRyYWN5IChyY3RAZnJ1cy5jb20pCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvc3ltNTNjOHh4XzIudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL3N5bTUzYzh4eF8yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWY4ZjdhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL3N5bTUzYzh4eF8yLnR4dApAQCAtMCwwICsxLDEwNDggQEAKK1RoZSBMaW51eCBTWU0tMiBkcml2ZXIgZG9jdW1lbnRhdGlvbiBmaWxlCisKK1dyaXR0ZW4gYnkgR2VyYXJkIFJvdWRpZXIgPGdyb3VkaWVyQGZyZWUuZnI+CisyMSBSdWUgQ2Fybm90Cis5NTE3MCBERVVJTCBMQSBCQVJSRSAtIEZSQU5DRQorCitVcGRhdGVkIGJ5IE1hdHRoZXcgV2lsY294IDxtYXR0aGV3QHdpbC5jeD4KKworMjAwNC0xMC0wOQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisxLiAgSW50cm9kdWN0aW9uCisyLiAgU3VwcG9ydGVkIGNoaXBzIGFuZCBTQ1NJIGZlYXR1cmVzCiszLiAgQWR2YW50YWdlcyBvZiB0aGlzIGRyaXZlciBmb3IgbmV3ZXIgY2hpcHMuCisgICAgICAzLjEgT3B0aW1pemVkIFNDU0kgU0NSSVBUUworICAgICAgMy4yIE5ldyBmZWF0dXJlcyBhcHBlYXJlZCB3aXRoIHRoZSBTWU01M0M4OTYKKzQuICBNZW1vcnkgbWFwcGVkIEkvTyB2ZXJzdXMgbm9ybWFsIEkvTworNS4gIFRhZ2dlZCBjb21tYW5kIHF1ZXVlaW5nCis2LiAgUGFyaXR5IGNoZWNraW5nCis3LiAgUHJvZmlsaW5nIGluZm9ybWF0aW9uCis4LiAgQ29udHJvbCBjb21tYW5kcworICAgICAgOC4xICBTZXQgbWluaW11bSBzeW5jaHJvbm91cyBwZXJpb2QKKyAgICAgIDguMiAgU2V0IHdpZGUgc2l6ZQorICAgICAgOC4zICBTZXQgbWF4aW11bSBudW1iZXIgb2YgY29uY3VycmVudCB0YWdnZWQgY29tbWFuZHMKKyAgICAgIDguNCAgU2V0IGRlYnVnIG1vZGUKKyAgICAgIDguNSAgU2V0IGZsYWcgKG5vX2Rpc2MpCisgICAgICA4LjYgIFNldCB2ZXJib3NlIGxldmVsCisgICAgICA4LjcgIFJlc2V0IGFsbCBsb2dpY2FsIHVuaXRzIG9mIGEgdGFyZ2V0CisgICAgICA4LjggIEFib3J0IGFsbCB0YXNrcyBvZiBhbGwgbG9naWNhbCB1bml0cyBvZiBhIHRhcmdldAorOS4gIENvbmZpZ3VyYXRpb24gcGFyYW1ldGVycworMTAuIEJvb3Qgc2V0dXAgY29tbWFuZHMKKyAgICAgIDEwLjEgU3ludGF4CisgICAgICAxMC4yIEF2YWlsYWJsZSBhcmd1bWVudHMKKyAgICAgICAgICAgICAxMC4yLjEgIERlZmF1bHQgbnVtYmVyIG9mIHRhZ2dlZCBjb21tYW5kcworICAgICAgICAgICAgIDEwLjIuMiAgQnVyc3QgbWF4CisgICAgICAgICAgICAgMTAuMi4zICBMRUQgc3VwcG9ydAorICAgICAgICAgICAgIDEwLjIuNCAgRGlmZmVyZW50aWFsIG1vZGUKKyAgICAgICAgICAgICAxMC4yLjUgIElSUSBtb2RlCisgICAgICAgICAgICAgMTAuMi42ICBDaGVjayBTQ1NJIEJVUyAKKyAgICAgICAgICAgICAxMC4yLjcgIFN1Z2dlc3QgYSBkZWZhdWx0IFNDU0kgaWQgZm9yIGhvc3RzCisgICAgICAgICAgICAgMTAuMi44ICBWZXJib3NpdHkgbGV2ZWwKKyAgICAgICAgICAgICAxMC4yLjkgIERlYnVnIG1vZGUKKyAgICAgICAgICAgICAxMC4yLjEwIFNldHRsZSBkZWxheQorICAgICAgICAgICAgIDEwLjIuMTEgU2VyaWFsIE5WUkFNCisgICAgICAgICAgICAgMTAuMi4xMiBFeGNsdWRlIGEgaG9zdCBmcm9tIGJlaW5nIGF0dGFjaGVkCisgICAgICAxMC4zIENvbnZlcnRpbmcgZnJvbSBvbGQgb3B0aW9ucworICAgICAgMTAuNCBTQ1NJIEJVUyBjaGVja2luZyBib290IG9wdGlvbgorMTEuIFNDU0kgcHJvYmxlbSB0cm91Ymxlc2hvb3RpbmcKKyAgICAgIDE1LjEgUHJvYmxlbSB0cmFja2luZworICAgICAgMTUuMiBVbmRlcnN0YW5kaW5nIGhhcmR3YXJlIGVycm9yIHJlcG9ydHMKKzEyLiBTZXJpYWwgTlZSQU0gc3VwcG9ydCAoYnkgUmljaGFyZCBXYWx0aGFtKQorICAgICAgMTcuMSBGZWF0dXJlcworICAgICAgMTcuMiBTeW1iaW9zIE5WUkFNIGxheW91dAorICAgICAgMTcuMyBUZWtyYW0gIE5WUkFNIGxheW91dAorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzEuIEludHJvZHVjdGlvbgorCitUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgd2hvbGUgU1lNNTNDOFhYIGZhbWlseSBvZiBQQ0ktU0NTSSBjb250cm9sbGVycy4KK0l0IGFsc28gc3VwcG9ydCB0aGUgc3Vic2V0IG9mIExTSTUzQzEwWFggUENJLVNDU0kgY29udHJvbGxlcnMgdGhhdCBhcmUgYmFzZWQgCitvbiB0aGUgU1lNNTNDOFhYIFNDUklQVFMgbGFuZ3VhZ2UuCisKK0l0IHJlcGxhY2VzIHRoZSBzeW01M2M4eHgrbmNyNTNjOHh4IGRyaXZlciBidW5kbGUgYW5kIHNoYXJlcyBpdHMgY29yZSBjb2RlIAord2l0aCB0aGUgRnJlZUJTRCBTWU0tMiBkcml2ZXIuIFRoZSBgZ2x1ZScgdGhhdCBhbGxvd3MgdGhpcyBkcml2ZXIgdG8gd29yayAKK3VuZGVyIExpbnV4IGlzIGNvbnRhaW5lZCBpbiAyIGZpbGVzIG5hbWVkIHN5bV9nbHVlLmggYW5kIHN5bV9nbHVlLmMuCitPdGhlciBkcml2ZXJzIGZpbGVzIGFyZSBpbnRlbmRlZCBub3QgdG8gZGVwZW5kIG9uIHRoZSBPcGVyYXRpbmcgU3lzdGVtIAorb24gd2hpY2ggdGhlIGRyaXZlciBpcyB1c2VkLgorCitUaGUgaGlzdG9yeSBvZiB0aGlzIGRyaXZlciBjYW4gYmUgc3VtbWFyaXplZCBhcyBmb2xsb3dzOgorCisxOTkzOiBuY3IgZHJpdmVyIHdyaXR0ZW4gZm9yIDM4NmJzZCBhbmQgRnJlZUJTRCBieToKKyAgICAgICAgICBXb2xmZ2FuZyBTdGFuZ2xtZWllciAgICAgICAgPHdvbGZAY29sb2duZS5kZT4KKyAgICAgICAgICBTdGVmYW4gRXNzZXIgICAgICAgICAgICAgICAgPHNlQG1pLlVuaS1Lb2Vsbi5kZT4KKworMTk5NjogcG9ydCBvZiB0aGUgbmNyIGRyaXZlciB0byBMaW51eC0xLjIuMTMgYW5kIHJlbmFtZSBpdCBuY3I1M2M4eHguCisgICAgICAgICAgR2VyYXJkIFJvdWRpZXIKKworMTk5ODogbmV3IHN5bTUzYzh4eCBkcml2ZXIgZm9yIExpbnV4IGJhc2VkIG9uIExPQUQvU1RPUkUgaW5zdHJ1Y3Rpb24gYW5kIHRoYXQgCisgICAgICBhZGRzIGZ1bGwgc3VwcG9ydCBmb3IgdGhlIDg5NiBidXQgZHJvcHMgc3VwcG9ydCBmb3IgZWFybHkgTkNSIGRldmljZXMuCisgICAgICAgICAgR2VyYXJkIFJvdWRpZXIKKworMTk5OTogcG9ydCBvZiB0aGUgc3ltNTNjOHh4IGRyaXZlciB0byBGcmVlQlNEIGFuZCBzdXBwb3J0IGZvciB0aGUgTFNJNTNDMTAxMCAKKyAgICAgIDMzIE1IeiBhbmQgNjZNSHogVWx0cmEtMyBjb250cm9sbGVycy4gVGhlIG5ldyBkcml2ZXIgaXMgbmFtZWQgYHN5bScuCisgICAgICAgICAgR2VyYXJkIFJvdWRpZXIKKworMjAwMDogQWRkIHN1cHBvcnQgZm9yIGVhcmx5IE5DUiBkZXZpY2VzIHRvIEZyZWVCU0QgYHN5bScgZHJpdmVyLgorICAgICAgQnJlYWsgdGhlIGRyaXZlciBpbnRvIHNldmVyYWwgc291cmNlcyBhbmQgc2VwYXJhdGUgdGhlIE9TIGdsdWUgCisgICAgICBjb2RlIGZyb20gdGhlIGNvcmUgY29kZSB0aGF0IGNhbiBiZSBzaGFyZWQgYW1vbmcgZGlmZmVyZW50IE8vU2VzLgorICAgICAgV3JpdGUgYSBnbHVlIGNvZGUgZm9yIExpbnV4LgorICAgICAgICAgIEdlcmFyZCBSb3VkaWVyCisKKzIwMDQ6IFJlbW92ZSBGcmVlQlNEIGNvbXBhdGliaWxpdHkgY29kZS4gIFJlbW92ZSBzdXBwb3J0IGZvciB2ZXJzaW9ucyBvZgorICAgICAgTGludXggYmVmb3JlIDIuNi4gIFN0YXJ0IHVzaW5nIExpbnV4IGZhY2lsaXRpZXMuCisKK1RoaXMgUkVBRE1FIGZpbGUgYWRkcmVzc2VzIHRoZSBMaW51eCB2ZXJzaW9uIG9mIHRoZSBkcml2ZXIuIFVuZGVyIEZyZWVCU0QsIAordGhlIGRyaXZlciBkb2N1bWVudGF0aW9uIGlzIHRoZSBzeW0uOCBtYW4gcGFnZS4KKworSW5mb3JtYXRpb24gYWJvdXQgbmV3IGNoaXBzIGlzIGF2YWlsYWJsZSBhdCBMU0lMT0dJQyB3ZWIgc2VydmVyOgorCisgICAgICAgICAgaHR0cDovL3d3dy5sc2lsb2dpYy5jb20vCisKK1NDU0kgc3RhbmRhcmQgZG9jdW1lbnRhdGlvbnMgYXJlIGF2YWlsYWJsZSBhdCBUMTAgc2l0ZToKKworICAgICAgICAgIGh0dHA6Ly93d3cudDEwLm9yZy8KKworVXNlZnVsIFNDU0kgdG9vbHMgd3JpdHRlbiBieSBFcmljIFlvdW5nZGFsZSBhcmUgcGFydCBvZiBtb3N0IExpbnV4IAorZGlzdHJpYnV0aW9uczoKKyAgIHNjc2lpbmZvOiAgICBjb21tYW5kIGxpbmUgdG9vbAorICAgc2NzaS1jb25maWc6IFRDTC9UayB0b29sIHVzaW5nIHNjc2lpbmZvCisKKzIuIFN1cHBvcnRlZCBjaGlwcyBhbmQgU0NTSSBmZWF0dXJlcworCitUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQgZm9yIGFsbCBjaGlwczoKKworCVN5bmNocm9ub3VzIG5lZ290aWF0aW9uCisJRGlzY29ubmVjdGlvbgorCVRhZ2dlZCBjb21tYW5kIHF1ZXVpbmcKKwlTQ1NJIHBhcml0eSBjaGVja2luZworCVBDSSBNYXN0ZXIgcGFyaXR5IGNoZWNraW5nCisKK090aGVyIGZlYXR1cmVzIGRlcGVuZHMgb24gY2hpcCBjYXBhYmlsaXRpZXMuCitUaGUgZHJpdmVyIG5vdGFibHkgdXNlcyBvcHRpbWl6ZWQgU0NSSVBUUyBmb3IgZGV2aWNlcyB0aGF0IHN1cHBvcnQgCitMT0FEL1NUT1JFIGFuZCBoYW5kbGVzIFBIQVNFIE1JU01BVENIIGZyb20gU0NSSVBUUyBmb3IgZGV2aWNlcyB0aGF0IAorc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBmZWF0dXJlLgorCitUaGUgZm9sbG93aW5nIHRhYmxlIHNob3dzIHNvbWUgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBjaGlwIGZhbWlseS4KKworICAgICAgIE9uIGJvYXJkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMT0FEL1NUT1JFICAgSEFSRFdBUkUKK0NoaXAgICBTRE1TIEJJT1MgICBXaWRlICAgU0NTSSBzdGQuICAgTWF4LiBzeW5jICAgU0NSSVBUUyAgICAgIFBIQVNFIE1JU01BVENICistLS0tICAgLS0tLS0tLS0tICAgLS0tLSAgIC0tLS0tLS0tLSAgIC0tLS0tLS0tLS0gIC0tLS0tLS0tLS0gICAtLS0tLS0tLS0tLS0tLQorODEwICAgICAgICBOICAgICAgICAgTiAgICAgIEZBU1QxMCAgICAxMCBNQi9zICAgICAgICBOICAgICAgICAgICAgIE4KKzgxMEEgICAgICAgTiAgICAgICAgIE4gICAgICBGQVNUMTAgICAgMTAgTUIvcyAgICAgICAgWSAgICAgICAgICAgICBOCis4MTUgICAgICAgIFkgICAgICAgICBOICAgICAgRkFTVDEwICAgIDEwIE1CL3MgICAgICAgIE4gICAgICAgICAgICAgTgorODI1ICAgICAgICBZICAgICAgICAgWSAgICAgIEZBU1QxMCAgICAyMCBNQi9zICAgICAgICBOICAgICAgICAgICAgIE4KKzgyNUEgICAgICAgWSAgICAgICAgIFkgICAgICBGQVNUMTAgICAgMjAgTUIvcyAgICAgICAgWSAgICAgICAgICAgICBOCis4NjAgICAgICAgIE4gICAgICAgICBOICAgICAgRkFTVDIwICAgIDIwIE1CL3MgICAgICAgIFkgICAgICAgICAgICAgTgorODc1ICAgICAgICBZICAgICAgICAgWSAgICAgIEZBU1QyMCAgICA0MCBNQi9zICAgICAgICBZICAgICAgICAgICAgIE4KKzg3NUEgICAgICAgWSAgICAgICAgIFkgICAgICBGQVNUMjAgICAgNDAgTUIvcyAgICAgICAgWSAgICAgICAgICAgICBZCis4NzYgICAgICAgIFkgICAgICAgICBZICAgICAgRkFTVDIwICAgIDQwIE1CL3MgICAgICAgIFkgICAgICAgICAgICAgTgorODk1ICAgICAgICBZICAgICAgICAgWSAgICAgIEZBU1Q0MCAgICA4MCBNQi9zICAgICAgICBZICAgICAgICAgICAgIE4KKzg5NUEgICAgICAgWSAgICAgICAgIFkgICAgICBGQVNUNDAgICAgODAgTUIvcyAgICAgICAgWSAgICAgICAgICAgICBZCis4OTYgICAgICAgIFkgICAgICAgICBZICAgICAgRkFTVDQwICAgIDgwIE1CL3MgICAgICAgIFkgICAgICAgICAgICAgWQorODk3ICAgICAgICBZICAgICAgICAgWSAgICAgIEZBU1Q0MCAgICA4MCBNQi9zICAgICAgICBZICAgICAgICAgICAgIFkKKzE1MTBEICAgICAgWSAgICAgICAgIFkgICAgICBGQVNUNDAgICAgODAgTUIvcyAgICAgICAgWSAgICAgICAgICAgICBZCisxMDEwICAgICAgIFkgICAgICAgICBZICAgICAgRkFTVDgwICAgMTYwIE1CL3MgICAgICAgIFkgICAgICAgICAgICAgWQorMTAxMF82NiogICBZICAgICAgICAgWSAgICAgIEZBU1Q4MCAgIDE2MCBNQi9zICAgICAgICBZICAgICAgICAgICAgIFkKKworKiBDaGlwIHN1cHBvcnRzIDMzTUh6IGFuZCA2Nk1IeiBQQ0kgYnVzIGNsb2NrLgorCisKK1N1bW1hcnkgb2Ygb3RoZXIgc3VwcG9ydGVkIGZlYXR1cmVzOgorCitNb2R1bGU6ICAgICAgICAgICAgICAgIGFsbG93IHRvIGxvYWQgdGhlIGRyaXZlcgorTWVtb3J5IG1hcHBlZCBJL086ICAgICBpbmNyZWFzZXMgcGVyZm9ybWFuY2UKK0NvbnRyb2wgY29tbWFuZHM6ICAgICAgd3JpdGUgb3BlcmF0aW9ucyB0byB0aGUgcHJvYyBTQ1NJIGZpbGUgc3lzdGVtCitEZWJ1Z2dpbmcgaW5mb3JtYXRpb246IHdyaXR0ZW4gdG8gc3lzbG9nIChleHBlcnQgb25seSkKK1NjYXR0ZXIgLyBnYXRoZXIKK1NoYXJlZCBpbnRlcnJ1cHQKK0Jvb3Qgc2V0dXAgY29tbWFuZHMKK1NlcmlhbCBOVlJBTTogICAgICAgICAgU3ltYmlvcyBhbmQgVGVrcmFtIGZvcm1hdHMKKworCiszLiBBZHZhbnRhZ2VzIG9mIHRoaXMgZHJpdmVyIGZvciBuZXdlciBjaGlwcy4KKworMy4xIE9wdGltaXplZCBTQ1NJIFNDUklQVFMuCisKK0FsbCBjaGlwcyBleGNlcHQgdGhlIDgxMCwgODE1IGFuZCA4MjUsIHN1cHBvcnQgbmV3IFNDU0kgU0NSSVBUUyBpbnN0cnVjdGlvbnMgCituYW1lZCBMT0FEIGFuZCBTVE9SRSB0aGF0IGFsbG93IHRvIG1vdmUgdXAgdG8gMSBEV09SRCBmcm9tL3RvIGFuIElPIHJlZ2lzdGVyIAordG8vZnJvbSBtZW1vcnkgbXVjaCBmYXN0ZXIgdGhhdCB0aGUgTU9WRSBNRU1PUlkgaW5zdHJ1Y3Rpb24gdGhhdCBpcyBzdXBwb3J0ZWQgCitieSB0aGUgNTNjN3h4IGFuZCA1M2M4eHggZmFtaWx5LgorCitUaGUgTE9BRC9TVE9SRSBpbnN0cnVjdGlvbnMgc3VwcG9ydCBhYnNvbHV0ZSBhbmQgRFNBIHJlbGF0aXZlIGFkZHJlc3NpbmcgCittb2Rlcy4gVGhlIFNDU0kgU0NSSVBUUyBoYWQgYmVlbiBlbnRpcmVseSByZXdyaXR0ZW4gdXNpbmcgTE9BRC9TVE9SRSBpbnN0ZWFkIAorb2YgTU9WRSBNRU1PUlkgaW5zdHJ1Y3Rpb25zLgorCitEdWUgdG8gdGhlIGxhY2sgb2YgTE9BRC9TVE9SRSBTQ1JJUFRTIGluc3RydWN0aW9ucyBieSBlYXJsaWVyIGNoaXBzLCB0aGlzIAorZHJpdmVyIGFsc28gaW5jb3Jwb3JhdGVzIGEgZGlmZmVyZW50IFNDUklQVFMgc2V0IGJhc2VkIG9uIE1FTU9SWSBNT1ZFLCBpbiAKK29yZGVyIHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIGVudGlyZSBTWU01M0M4WFggY2hpcHMgZmFtaWx5LgorCiszLjIgTmV3IGZlYXR1cmVzIGFwcGVhcmVkIHdpdGggdGhlIFNZTTUzQzg5NgorCitOZXdlciBjaGlwcyAoc2VlIGFib3ZlKSBhbGxvd3MgaGFuZGxpbmcgb2YgdGhlIHBoYXNlIG1pc21hdGNoIGNvbnRleHQgZnJvbSAKK1NDUklQVFMgKGF2b2lkcyB0aGUgcGhhc2UgbWlzbWF0Y2ggaW50ZXJydXB0IHRoYXQgc3RvcHMgdGhlIFNDU0kgcHJvY2Vzc29yIAordW50aWwgdGhlIEMgY29kZSBoYXMgc2F2ZWQgdGhlIGNvbnRleHQgb2YgdGhlIHRyYW5zZmVyKS4KKworVGhlIDg5NiBhbmQgMTAxMCBjaGlwcyBzdXBwb3J0IDY0IGJpdCBQQ0kgdHJhbnNhY3Rpb25zIGFuZCBhZGRyZXNzaW5nLCAKK3doaWxlIHRoZSA4OTVBIHN1cHBvcnRzIDMyIGJpdCBQQ0kgdHJhbnNhY3Rpb25zIGFuZCA2NCBiaXQgYWRkcmVzc2luZy4KK1RoZSBTQ1JJUFRTIHByb2Nlc3NvciBvZiB0aGVzZSBjaGlwcyBpcyBub3QgdHJ1ZSA2NCBiaXQsIGJ1dCB1c2VzIHNlZ21lbnQgCityZWdpc3RlcnMgZm9yIGJpdCAzMi02My4gQW5vdGhlciBpbnRlcmVzdGluZyBmZWF0dXJlIGlzIHRoYXQgTE9BRC9TVE9SRSAKK2luc3RydWN0aW9ucyB0aGF0IGFkZHJlc3MgdGhlIG9uLWNoaXAgUkFNICg4aykgcmVtYWluIGludGVybmFsIHRvIHRoZSBjaGlwLgorCis0LiBNZW1vcnkgbWFwcGVkIEkvTyB2ZXJzdXMgbm9ybWFsIEkvTworCitNZW1vcnkgbWFwcGVkIEkvTyBoYXMgbGVzcyBsYXRlbmN5IHRoYW4gbm9ybWFsIEkvTyBhbmQgaXMgdGhlIHJlY29tbWVuZGVkIAord2F5IGZvciBkb2luZyBJTyB3aXRoIFBDSSBkZXZpY2VzLiBNZW1vcnkgbWFwcGVkIEkvTyBzZWVtcyB0byB3b3JrIGZpbmUgb24gCittb3N0IGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zLCBidXQgc29tZSBwb29ybHkgZGVzaWduZWQgY2hpcHNldHMgbWF5IGJyZWFrIAordGhpcyBmZWF0dXJlLiBBIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIHByb3ZpZGVkIGZvciBub3JtYWwgSS9PIHRvIGJlIAordXNlZCBidXQgdGhlIGRyaXZlciBkZWZhdWx0cyB0byBNTUlPLgorCis1LiBUYWdnZWQgY29tbWFuZCBxdWV1ZWluZworCitRdWV1aW5nIG1vcmUgdGhhbiAxIGNvbW1hbmQgYXQgYSB0aW1lIHRvIGEgZGV2aWNlIGFsbG93cyBpdCB0byBwZXJmb3JtIAorb3B0aW1pemF0aW9ucyBiYXNlZCBvbiBhY3R1YWwgaGVhZCBwb3NpdGlvbnMgYW5kIGl0cyBtZWNoYW5pY2FsIAorY2hhcmFjdGVyaXN0aWNzLiBUaGlzIGZlYXR1cmUgbWF5IGFsc28gcmVkdWNlIGF2ZXJhZ2UgY29tbWFuZCBsYXRlbmN5LgorSW4gb3JkZXIgdG8gcmVhbGx5IGdhaW4gYWR2YW50YWdlIG9mIHRoaXMgZmVhdHVyZSwgZGV2aWNlcyBtdXN0IGhhdmUgCithIHJlYXNvbmFibGUgY2FjaGUgc2l6ZSAoTm8gbWlyYWNsZSBpcyB0byBiZSBleHBlY3RlZCBmb3IgYSBsb3ctZW5kIAoraGFyZCBkaXNrIHdpdGggMTI4IEtCIG9yIGxlc3MpLgorU29tZSBrbm93biBvbGQgU0NTSSBkZXZpY2VzIGRvIG5vdCBwcm9wZXJseSBzdXBwb3J0IHRhZ2dlZCBjb21tYW5kIHF1ZXVpbmcuCitHZW5lcmFsbHksIGZpcm13YXJlIHJldmlzaW9ucyB0aGF0IGZpeCB0aGlzIGtpbmQgb2YgcHJvYmxlbXMgYXJlIGF2YWlsYWJsZSAKK2F0IHJlc3BlY3RpdmUgdmVuZG9yIHdlYi9mdHAgc2l0ZXMuCitBbGwgSSBjYW4gc2F5IGlzIHRoYXQgSSBuZXZlciBoYXZlIGhhZCBwcm9ibGVtIHdpdGggdGFnZ2VkIHF1ZXVpbmcgdXNpbmcgCit0aGlzIGRyaXZlciBhbmQgaXRzIHByZWRlY2Vzc29ycy4gSGFyZCBkaXNrcyB0aGF0IGJlaGF2ZWQgY29ycmVjdGx5IGZvciAKK21lIHVzaW5nIHRhZ2dlZCBjb21tYW5kcyBhcmUgdGhlIGZvbGxvd2luZzoKKworLSBJQk0gUzEyIDA2NjIKKy0gQ29ubmVyIDEwODBTCistIFF1YW50dW0gQXRsYXMgSQorLSBRdWFudHVtIEF0bGFzIElJCistIFNlYWdhdGUgQ2hlZXRhaCBJCistIFF1YW50dW0gVmlraW5nIElJCistIElCTSBEUlZTCistIFF1YW50dW0gQXRsYXMgSVYKKy0gU2VhZ2F0ZSBDaGVldGFoIElJCisKK0lmIHlvdXIgY29udHJvbGxlciBoYXMgTlZSQU0sIHlvdSBjYW4gY29uZmlndXJlIHRoaXMgZmVhdHVyZSBwZXIgdGFyZ2V0IAorZnJvbSB0aGUgdXNlciBzZXR1cCB0b29sLiBUaGUgVGVrcmFtIFNldHVwIHByb2dyYW0gYWxsb3dzIHRvIHR1bmUgdGhlIAorbWF4aW11bSBudW1iZXIgb2YgcXVldWVkIGNvbW1hbmRzIHVwIHRvIDMyLiBUaGUgU3ltYmlvcyBTZXR1cCBvbmx5IGFsbG93cyAKK3RvIGVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZmVhdHVyZS4KKworVGhlIG1heGltdW0gbnVtYmVyIG9mIHNpbXVsdGFuZW91cyB0YWdnZWQgY29tbWFuZHMgcXVldWVkIHRvIGEgZGV2aWNlCitpcyBjdXJyZW50bHkgc2V0IHRvIDE2IGJ5IGRlZmF1bHQuICBUaGlzIHZhbHVlIGlzIHN1aXRhYmxlIGZvciBtb3N0IFNDU0kKK2Rpc2tzLiAgV2l0aCBsYXJnZSBTQ1NJIGRpc2tzICg+PSAyR0IsIGNhY2hlID49IDUxMktCLCBhdmVyYWdlIHNlZWsgdGltZQorPD0gMTAgbXMpLCB1c2luZyBhIGxhcmdlciB2YWx1ZSBtYXkgZ2l2ZSBiZXR0ZXIgcGVyZm9ybWFuY2VzLgorCitUaGlzIGRyaXZlciBzdXBwb3J0cyB1cCB0byAyNTUgY29tbWFuZHMgcGVyIGRldmljZSwgYW5kIGJ1dCB1c2luZyBtb3JlIHRoYW4gCis2NCBpcyBnZW5lcmFsbHkgbm90IHdvcnRoLXdoaWxlLCB1bmxlc3MgeW91IGFyZSB1c2luZyBhIHZlcnkgbGFyZ2UgZGlzayBvciAKK2Rpc2sgYXJyYXlzLiBJdCBpcyBub3RpY2VhYmxlIHRoYXQgbW9zdCBvZiByZWNlbnQgaGFyZCBkaXNrcyBzZWVtIG5vdCB0byAKK2FjY2VwdCBtb3JlIHRoYW4gNjQgc2ltdWx0YW5lb3VzIGNvbW1hbmRzLiBTbywgdXNpbmcgbW9yZSB0aGFuIDY0IHF1ZXVlZCAKK2NvbW1hbmRzIGlzIHByb2JhYmx5IGp1c3QgcmVzb3VyY2Ugd2FzdGluZy4KKworSWYgeW91ciBjb250cm9sbGVyIGRvZXMgbm90IGhhdmUgTlZSQU0gb3IgaWYgaXQgaXMgbWFuYWdlZCBieSB0aGUgU0RNUyAKK0JJT1MvU0VUVVAsIHlvdSBjYW4gY29uZmlndXJlIHRhZ2dlZCBxdWV1ZWluZyBmZWF0dXJlIGFuZCBkZXZpY2UgcXVldWUgCitkZXB0aHMgZnJvbSB0aGUgYm9vdCBjb21tYW5kLWxpbmUuIEZvciBleGFtcGxlOgorCisgIHN5bTUzYzh4eD10YWdzOjQvdDJ0M3ExNS10NHE3L3QxdTBxMzIKKword2lsbCBzZXQgdGFnZ2VkIGNvbW1hbmRzIHF1ZXVlIGRlcHRocyBhcyBmb2xsb3c6CisKKy0gdGFyZ2V0IDIgIGFsbCBsdW5zICBvbiBjb250cm9sbGVyIDAgLS0+IDE1CistIHRhcmdldCAzICBhbGwgbHVucyAgb24gY29udHJvbGxlciAwIC0tPiAxNQorLSB0YXJnZXQgNCAgYWxsIGx1bnMgIG9uIGNvbnRyb2xsZXIgMCAtLT4gIDcKKy0gdGFyZ2V0IDEgIGx1biAwICAgICBvbiBjb250cm9sbGVyIDEgLS0+IDMyCistIGFsbCBvdGhlciB0YXJnZXQvbHVuICAgICAgICAgICAgICAgIC0tPiAgNAorCitJbiBzb21lIHNwZWNpYWwgY29uZGl0aW9ucywgc29tZSBTQ1NJIGRpc2sgZmlybXdhcmVzIG1heSByZXR1cm4gYQorUVVFVUUgRlVMTCBzdGF0dXMgZm9yIGEgU0NTSSBjb21tYW5kLiBUaGlzIGJlaGF2aW91ciBpcyBtYW5hZ2VkIGJ5IHRoZQorZHJpdmVyIHVzaW5nIHRoZSBmb2xsb3dpbmcgaGV1cmlzdGljOgorCistIEVhY2ggdGltZSBhIFFVRVVFIEZVTEwgc3RhdHVzIGlzIHJldHVybmVkLCB0YWdnZWQgcXVldWUgZGVwdGggaXMgcmVkdWNlZCAKKyAgdG8gdGhlIGFjdHVhbCBudW1iZXIgb2YgZGlzY29ubmVjdGVkIGNvbW1hbmRzLiAKKworLSBFdmVyeSAyMDAgc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZCBTQ1NJIGNvbW1hbmRzLCBpZiBhbGxvd2VkIGJ5IHRoZQorICBjdXJyZW50IGxpbWl0LCB0aGUgbWF4aW11bSBudW1iZXIgb2YgcXVldWVhYmxlIGNvbW1hbmRzIGlzIGluY3JlbWVudGVkLgorCitTaW5jZSBRVUVVRSBGVUxMIHN0YXR1cyByZWNlcHRpb24gYW5kIGhhbmRsaW5nIGlzIHJlc291cmNlIHdhc3RpbmcsIHRoZSAKK2RyaXZlciBub3RpZmllcyBieSBkZWZhdWx0IHRoaXMgcHJvYmxlbSB0byB1c2VyIGJ5IGluZGljYXRpbmcgdGhlIGFjdHVhbCAKK251bWJlciBvZiBjb21tYW5kcyB1c2VkIGFuZCB0aGVpciBzdGF0dXMsIGFzIHdlbGwgYXMgaXRzIGRlY2lzaW9uIG9uIHRoZSAKK2RldmljZSBxdWV1ZSBkZXB0aCBjaGFuZ2UuCitUaGUgaGV1cmlzdGljIHVzZWQgYnkgdGhlIGRyaXZlciBpbiBoYW5kbGluZyBRVUVVRSBGVUxMIGVuc3VyZXMgdGhhdCB0aGUgCitpbXBhY3Qgb24gcGVyZm9ybWFuY2VzIGlzIG5vdCB0b28gYmFkLiBZb3UgY2FuIGdldCByaWQgb2YgdGhlIG1lc3NhZ2VzIGJ5IAorc2V0dGluZyB2ZXJib3NlIGxldmVsIHRvIHplcm8sIGFzIGZvbGxvdzoKKworMXN0IG1ldGhvZDogYm9vdCB5b3VyIHN5c3RlbSB1c2luZyAnc3ltNTNjOHh4PXZlcmI6MCcgb3B0aW9uLgorMm5kIG1ldGhvZDogYXBwbHkgInNldHZlcmJvc2UgMCIgY29udHJvbCBjb21tYW5kIHRvIHRoZSBwcm9jIGZzIGVudHJ5IAorICAgICAgICAgICAgY29ycmVzcG9uZGluZyB0byB5b3VyIGNvbnRyb2xsZXIgYWZ0ZXIgYm9vdC11cC4KKworNi4gUGFyaXR5IGNoZWNraW5nCisKK1RoZSBkcml2ZXIgc3VwcG9ydHMgU0NTSSBwYXJpdHkgY2hlY2tpbmcgYW5kIFBDSSBidXMgbWFzdGVyIHBhcml0eQorY2hlY2tpbmcuICBUaGVzZSBmZWF0dXJlcyBtdXN0IGJlIGVuYWJsZWQgaW4gb3JkZXIgdG8gZW5zdXJlIHNhZmUKK2RhdGEgdHJhbnNmZXJzLiAgU29tZSBmbGF3ZWQgZGV2aWNlcyBvciBtb3RoZXIgYm9hcmRzIG1heSBoYXZlIHByb2JsZW1zCit3aXRoIHBhcml0eS4gIFRoZSBvcHRpb25zIHRvIGRlZmVhdCBwYXJpdHkgY2hlY2tpbmcgaGF2ZSBiZWVuIHJlbW92ZWQKK2Zyb20gdGhlIGRyaXZlci4KKworNy4gUHJvZmlsaW5nIGluZm9ybWF0aW9uCisKK1RoaXMgZHJpdmVyIGRvZXMgbm90IHByb3ZpZGUgcHJvZmlsaW5nIGluZm9ybWF0aW9uIGFzIGRpZCBpdHMgcHJlZGVjZXNzb3JzLgorVGhpcyBmZWF0dXJlIHdhcyBub3QgdGhpcyB1c2VmdWwgYW5kIGFkZGVkIGNvbXBsZXhpdHkgdG8gdGhlIGNvZGUuIAorQXMgdGhlIGRyaXZlciBjb2RlIGdvdCBtb3JlIGNvbXBsZXgsIEkgaGF2ZSBkZWNpZGVkIHRvIHJlbW92ZSBldmVyeXRoaW5nIAordGhhdCBkaWRuJ3Qgc2VlbSBhY3R1YWxseSB1c2VmdWwuCisKKzguIENvbnRyb2wgY29tbWFuZHMKKworQ29udHJvbCBjb21tYW5kcyBjYW4gYmUgc2VudCB0byB0aGUgZHJpdmVyIHdpdGggd3JpdGUgb3BlcmF0aW9ucyB0bwordGhlIHByb2MgU0NTSSBmaWxlIHN5c3RlbS4gVGhlIGdlbmVyaWMgY29tbWFuZCBzeW50YXggaXMgdGhlCitmb2xsb3dpbmc6CisKKyAgICAgIGVjaG8gIjx2ZXJiPiA8cGFyYW1ldGVycz4iID4vcHJvYy9zY3NpL3N5bTUzYzh4eC8wCisgICAgICAoYXNzdW1lcyBjb250cm9sbGVyIG51bWJlciBpcyAwKQorCitVc2luZyAiYWxsIiBmb3IgIjx0YXJnZXQ+IiBwYXJhbWV0ZXIgd2l0aCB0aGUgY29tbWFuZHMgYmVsb3cgd2lsbAorYXBwbHkgdG8gYWxsIHRhcmdldHMgb2YgdGhlIFNDU0kgY2hhaW4gKGV4Y2VwdCB0aGUgY29udHJvbGxlcikuCisKK0F2YWlsYWJsZSBjb21tYW5kczoKKworOC4xIFNldCBtaW5pbXVtIHN5bmNocm9ub3VzIHBlcmlvZCBmYWN0b3IKKworICAgIHNldHN5bmMgPHRhcmdldD4gPHBlcmlvZCBmYWN0b3I+CisKKyAgICB0YXJnZXQ6ICAgIHRhcmdldCBudW1iZXIKKyAgICBwZXJpb2Q6ICAgIG1pbmltdW0gc3luY2hyb25vdXMgcGVyaW9kLgorICAgICAgICAgICAgICAgTWF4aW11bSBzcGVlZCA9IDEwMDAvKDQqcGVyaW9kIGZhY3RvcikgZXhjZXB0IGZvciBzcGVjaWFsCisgICAgICAgICAgICAgICBjYXNlcyBiZWxvdy4KKworICAgIFNwZWNpZnkgYSBwZXJpb2Qgb2YgMCwgdG8gZm9yY2UgYXN5bmNocm9ub3VzIHRyYW5zZmVyIG1vZGUuCisKKyAgICAgICA5IG1lYW5zIDEyLjUgbmFuby1zZWNvbmRzIHN5bmNocm9ub3VzIHBlcmlvZAorICAgICAgMTAgbWVhbnMgMjUgbmFuby1zZWNvbmRzIHN5bmNocm9ub3VzIHBlcmlvZAorICAgICAgMTEgbWVhbnMgMzAgbmFuby1zZWNvbmRzIHN5bmNocm9ub3VzIHBlcmlvZAorICAgICAgMTIgbWVhbnMgNTAgbmFuby1zZWNvbmRzIHN5bmNocm9ub3VzIHBlcmlvZAorCis4LjIgU2V0IHdpZGUgc2l6ZQorCisgICAgc2V0d2lkZSA8dGFyZ2V0PiA8c2l6ZT4KKworICAgIHRhcmdldDogICAgdGFyZ2V0IG51bWJlcgorICAgIHNpemU6ICAgICAgMD04IGJpdHMsIDE9MTZiaXRzCisKKzguMyBTZXQgbWF4aW11bSBudW1iZXIgb2YgY29uY3VycmVudCB0YWdnZWQgY29tbWFuZHMKKyAKKyAgICBzZXR0YWdzIDx0YXJnZXQ+IDx0YWdzPgorCisgICAgdGFyZ2V0OiAgICB0YXJnZXQgbnVtYmVyCisgICAgdGFnczogICAgICBudW1iZXIgb2YgY29uY3VycmVudCB0YWdnZWQgY29tbWFuZHMKKyAgICAgICAgICAgICAgIG11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiBjb25maWd1cmVkIChkZWZhdWx0OiAxNikKKworOC40IFNldCBkZWJ1ZyBtb2RlCisKKyAgICBzZXRkZWJ1ZyA8bGlzdCBvZiBkZWJ1ZyBmbGFncz4KKworICAgIEF2YWlsYWJsZSBkZWJ1ZyBmbGFnczoKKyAgICAgICAgYWxsb2M6ICAgcHJpbnQgaW5mbyBhYm91dCBtZW1vcnkgYWxsb2NhdGlvbnMgKGNjYiwgbGNiKQorICAgICAgICBxdWV1ZTogICBwcmludCBpbmZvIGFib3V0IGluc2VydGlvbnMgaW50byB0aGUgY29tbWFuZCBzdGFydCBxdWV1ZQorICAgICAgICByZXN1bHQ6ICBwcmludCBzZW5zZSBkYXRhIG9uIENIRUNLIENPTkRJVElPTiBzdGF0dXMKKyAgICAgICAgc2NhdHRlcjogcHJpbnQgaW5mbyBhYm91dCB0aGUgc2NhdHRlciBwcm9jZXNzCisgICAgICAgIHNjcmlwdHM6IHByaW50IGluZm8gYWJvdXQgdGhlIHNjcmlwdCBiaW5kaW5nIHByb2Nlc3MKKwl0aW55OiAgICBwcmludCBtaW5pbWFsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbgorCXRpbWluZzogIHByaW50IHRpbWluZyBpbmZvcm1hdGlvbiBvZiB0aGUgTkNSIGNoaXAKKwluZWdvOiAgICBwcmludCBpbmZvcm1hdGlvbiBhYm91dCBTQ1NJIG5lZ290aWF0aW9ucworCXBoYXNlOiAgIHByaW50IGluZm9ybWF0aW9uIG9uIHNjcmlwdCBpbnRlcnJ1cHRpb25zCisKKyAgICBVc2UgInNldGRlYnVnIiB3aXRoIG5vIGFyZ3VtZW50IHRvIHJlc2V0IGRlYnVnIGZsYWdzLgorCisKKzguNSBTZXQgZmxhZyAobm9fZGlzYykKKyAKKyAgICBzZXRmbGFnIDx0YXJnZXQ+IDxmbGFnPgorCisgICAgdGFyZ2V0OiAgICB0YXJnZXQgbnVtYmVyCisKKyAgICBGb3IgdGhlIG1vbWVudCwgb25seSBvbmUgZmxhZyBpcyBhdmFpbGFibGU6CisKKyAgICAgICAgbm9fZGlzYzogICBub3QgYWxsb3cgdGFyZ2V0IHRvIGRpc2Nvbm5lY3QuCisKKyAgICBEbyBub3Qgc3BlY2lmeSBhbnkgZmxhZyBpbiBvcmRlciB0byByZXNldCB0aGUgZmxhZy4gRm9yIGV4YW1wbGU6CisgICAgLSBzZXRmbGFnIDQKKyAgICAgIHdpbGwgcmVzZXQgbm9fZGlzYyBmbGFnIGZvciB0YXJnZXQgNCwgc28gd2lsbCBhbGxvdyBpdCBkaXNjb25uZWN0aW9ucy4KKyAgICAtIHNldGZsYWcgYWxsCisgICAgICB3aWxsIGFsbG93IGRpc2Nvbm5lY3Rpb24gZm9yIGFsbCBkZXZpY2VzIG9uIHRoZSBTQ1NJIGJ1cy4KKworCis4LjYgU2V0IHZlcmJvc2UgbGV2ZWwKKworICAgIHNldHZlcmJvc2UgI2xldmVsCisKKyAgICBUaGUgZHJpdmVyIGRlZmF1bHQgdmVyYm9zZSBsZXZlbCBpcyAxLiBUaGlzIGNvbW1hbmQgYWxsb3dzIHRvIGNoYW5nZSAKKyAgICB0aCBkcml2ZXIgdmVyYm9zZSBsZXZlbCBhZnRlciBib290LXVwLgorCis4LjcgUmVzZXQgYWxsIGxvZ2ljYWwgdW5pdHMgb2YgYSB0YXJnZXQKKworICAgIHJlc2V0ZGV2IDx0YXJnZXQ+CisKKyAgICB0YXJnZXQ6ICAgIHRhcmdldCBudW1iZXIKKyAgICBUaGUgZHJpdmVyIHdpbGwgdHJ5IHRvIHNlbmQgYSBCVVMgREVWSUNFIFJFU0VUIG1lc3NhZ2UgdG8gdGhlIHRhcmdldC4KKworOC44IEFib3J0IGFsbCB0YXNrcyBvZiBhbGwgbG9naWNhbCB1bml0cyBvZiBhIHRhcmdldAorCisgICAgY2xlYXJkZXYgPHRhcmdldD4KKworICAgIHRhcmdldDogICAgdGFyZ2V0IG51bWJlcgorICAgIFRoZSBkcml2ZXIgd2lsbCB0cnkgdG8gc2VuZCBhIEFCT1JUIG1lc3NhZ2UgdG8gYWxsIHRoZSBsb2dpY2FsIHVuaXRzIAorICAgIG9mIHRoZSB0YXJnZXQuCisKKworOS4gQ29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzCisKK1VuZGVyIGtlcm5lbCBjb25maWd1cmF0aW9uIHRvb2xzIChtYWtlIG1lbnVjb25maWcsIGZvciBleGFtcGxlKSwgaXQgaXMgCitwb3NzaWJsZSB0byBjaGFuZ2Ugc29tZSBkZWZhdWx0IGRyaXZlciBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuCitJZiB0aGUgZmlybXdhcmUgb2YgYWxsIHlvdXIgZGV2aWNlcyBpcyBwZXJmZWN0IGVub3VnaCwgYWxsIHRoZQorZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IHRoZSBkcml2ZXIgY2FuIGJlIGVuYWJsZWQgYXQgc3RhcnQtdXAuIEhvd2V2ZXIsCitpZiBvbmx5IG9uZSBoYXMgYSBmbGF3IGZvciBzb21lIFNDU0kgZmVhdHVyZSwgeW91IGNhbiBkaXNhYmxlIHRoZQorc3VwcG9ydCBieSB0aGUgZHJpdmVyIG9mIHRoaXMgZmVhdHVyZSBhdCBsaW51eCBzdGFydC11cCBhbmQgZW5hYmxlCit0aGlzIGZlYXR1cmUgYWZ0ZXIgYm9vdC11cCBvbmx5IGZvciBkZXZpY2VzIHRoYXQgc3VwcG9ydCBpdCBzYWZlbHkuCisKK0NvbmZpZ3VyYXRpb24gcGFyYW1ldGVyczoKKworVXNlIG5vcm1hbCBJTyAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCBhbnN3ZXI6IG4pCisgICAgQW5zd2VyICJ5IiBpZiB5b3Ugc3VzcGVjdCB5b3VyIG1vdGhlciBib2FyZCB0byBub3QgYWxsb3cgbWVtb3J5IG1hcHBlZCBJL08uCisgICAgTWF5IHNsb3cgZG93biBwZXJmb3JtYW5jZSBhIGxpdHRsZS4KKworRGVmYXVsdCB0YWdnZWQgY29tbWFuZCBxdWV1ZSBkZXB0aCAgICAoZGVmYXVsdCBhbnN3ZXI6IDE2KQorICAgIEVudGVyaW5nIDAgZGVmYXVsdHMgdG8gdGFnZ2VkIGNvbW1hbmRzIG5vdCBiZWluZyB1c2VkLgorICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBzcGVjaWZpZWQgZnJvbSB0aGUgYm9vdCBjb21tYW5kIGxpbmUuCisKK01heGltdW0gbnVtYmVyIG9mIHF1ZXVlZCBjb21tYW5kcyAgICAgKGRlZmF1bHQgYW5zd2VyOiAzMikKKyAgICBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG1heGltdW0gbnVtYmVyIG9mIHRhZ2dlZCBjb21tYW5kcyAKKyAgICB0aGF0IGNhbiBiZSBxdWV1ZWQgdG8gYSBkZXZpY2UuIFRoZSBtYXhpbXVtIHN1cHBvcnRlZCB2YWx1ZSBpcyAyNTUuCisKK1N5bmNocm9ub3VzIHRyYW5zZmVycyBmcmVxdWVuY3kgICAgICAgKGRlZmF1bHQgYW5zd2VyOiA4MCkKKyAgICBUaGlzIG9wdGlvbiBhbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIGZyZXF1ZW5jeSBpbiBNSHogdGhlIGRyaXZlciAKKyAgICB3aWxsIHVzZSBhdCBib290IHRpbWUgZm9yIHN5bmNocm9ub3VzIGRhdGEgdHJhbnNmZXIgbmVnb3RpYXRpb25zLgorICAgIDAgbWVhbnMgImFzeW5jaHJvbm91cyBkYXRhIHRyYW5zZmVycyIuCisKKzEwLiBCb290IHNldHVwIGNvbW1hbmRzCisKKzEwLjEgU3ludGF4CisKK1NldHVwIGNvbW1hbmRzIGNhbiBiZSBwYXNzZWQgdG8gdGhlIGRyaXZlciBlaXRoZXIgYXQgYm9vdCB0aW1lIG9yIGFzCitwYXJhbWV0ZXJzIHRvIG1vZHByb2JlLCBhcyBkZXNjcmliZWQgaW4gRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQKKworRXhhbXBsZSBvZiBib290IHNldHVwIGNvbW1hbmQgdW5kZXIgbGlsbyBwcm9tcHQ6CisKK2xpbG86IGxpbnV4IHJvb3Q9L2Rldi9zZGEyIHN5bTUzYzh4eC5jbWRfcGVyX2x1bj00IHN5bTUzYzh4eC5zeW5jPTEwIHN5bTUzYzh4eC5kZWJ1Zz0weDIwMAorCistIGVuYWJsZSB0YWdnZWQgY29tbWFuZHMsIHVwIHRvIDQgdGFnZ2VkIGNvbW1hbmRzIHF1ZXVlZC4KKy0gc2V0IHN5bmNocm9ub3VzIG5lZ290aWF0aW9uIHNwZWVkIHRvIDEwIE1lZ2EtdHJhbnNmZXJzIC8gc2Vjb25kLgorLSBzZXQgREVCVUdfTkVHTyBmbGFnLgorCitUaGUgZm9sbG93aW5nIGNvbW1hbmQgd2lsbCBpbnN0YWxsIHRoZSBkcml2ZXIgbW9kdWxlIHdpdGggdGhlIHNhbWUKK29wdGlvbnMgYXMgYWJvdmUuCisKKyAgICBtb2Rwcm9iZSBzeW01M2M4eHggY21kX3Blcl9sdW49NCBzeW5jPTEwIGRlYnVnPTB4MjAwCisKKzEwLjIgQXZhaWxhYmxlIGFyZ3VtZW50cworCisxMC4yLjEgIERlZmF1bHQgbnVtYmVyIG9mIHRhZ2dlZCBjb21tYW5kcworICAgICAgICBjbWRfcGVyX2x1bj0wIChvciBjbWRfcGVyX2x1bj0xKSB0YWdnZWQgY29tbWFuZCBxdWV1aW5nIGRpc2FibGVkCisgICAgICAgIGNtZF9wZXJfbHVuPSN0YWdzICgjdGFncyA+IDEpIHRhZ2dlZCBjb21tYW5kIHF1ZXVpbmcgZW5hYmxlZAorICAjdGFncyB3aWxsIGJlIHRydW5jYXRlZCB0byB0aGUgbWF4IHF1ZXVlZCBjb21tYW5kcyBjb25maWd1cmF0aW9uIHBhcmFtZXRlci4KKworMTAuMi4yIEJ1cnN0IG1heAorICAgICAgICBidXJzdD0wICAgIGJ1cnN0IGRpc2FibGVkCisgICAgICAgIGJ1cnN0PTI1NSAgZ2V0IGJ1cnN0IGxlbmd0aCBmcm9tIGluaXRpYWwgSU8gcmVnaXN0ZXIgc2V0dGluZ3MuCisgICAgICAgIGJ1cnN0PSN4ICAgYnVyc3QgZW5hYmxlZCAoMTw8I3ggYnVyc3QgdHJhbnNmZXJzIG1heCkKKyAgI3ggaXMgYW4gaW50ZWdlciB2YWx1ZSB3aGljaCBpcyBsb2cgYmFzZSAyIG9mIHRoZSBidXJzdCB0cmFuc2ZlcnMgbWF4LgorICBCeSBkZWZhdWx0IHRoZSBkcml2ZXIgdXNlcyB0aGUgbWF4aW11bSB2YWx1ZSBzdXBwb3J0ZWQgYnkgdGhlIGNoaXAuCisKKzEwLjIuMyBMRUQgc3VwcG9ydAorICAgICAgICBsZWQ9MSAgICAgIGVuYWJsZSAgTEVEIHN1cHBvcnQKKyAgICAgICAgbGVkPTAgICAgICBkaXNhYmxlIExFRCBzdXBwb3J0CisgIERvIG5vdCBlbmFibGUgTEVEIHN1cHBvcnQgaWYgeW91ciBzY3NpIGJvYXJkIGRvZXMgbm90IHVzZSBTRE1TIEJJT1MuCisgIChTZWUgJ0NvbmZpZ3VyYXRpb24gcGFyYW1ldGVycycpCisKKzEwLjIuNCBEaWZmZXJlbnRpYWwgbW9kZQorICAgICAgICBkaWZmPTAJbmV2ZXIgc2V0IHVwIGRpZmYgbW9kZQorICAgICAgICBkaWZmPTEJc2V0IHVwIGRpZmYgbW9kZSBpZiBCSU9TIHNldCBpdAorICAgICAgICBkaWZmPTIJYWx3YXlzIHNldCB1cCBkaWZmIG1vZGUKKyAgICAgICAgZGlmZj0zCXNldCBkaWZmIG1vZGUgaWYgR1BJTzMgaXMgbm90IHNldAorCisxMC4yLjUgSVJRIG1vZGUKKyAgICAgICAgaXJxbT0wICAgICBhbHdheXMgb3BlbiBkcmFpbgorICAgICAgICBpcnFtPTEgICAgIHNhbWUgYXMgaW5pdGlhbCBzZXR0aW5ncyAoYXNzdW1lZCBCSU9TIHNldHRpbmdzKQorICAgICAgICBpcnFtPTIgICAgIGFsd2F5cyB0b3RlbSBwb2xlCisKKzEwLjIuNiBDaGVjayBTQ1NJIEJVUyAKKyAgICAgICAgYnVzY2hrPTxvcHRpb24gYml0cz4KKworICAgIEF2YWlsYWJsZSBvcHRpb24gYml0czoKKyAgICAgICAgMHgwOiAgIE5vIGNoZWNrLgorICAgICAgICAweDE6ICAgQ2hlY2sgYW5kIGRvIG5vdCBhdHRhY2ggdGhlIGNvbnRyb2xsZXIgb24gZXJyb3IuICAKKyAgICAgICAgMHgyOiAgIENoZWNrIGFuZCBqdXN0IHdhcm4gb24gZXJyb3IuCisKKzEwLjIuNyBTdWdnZXN0IGEgZGVmYXVsdCBTQ1NJIGlkIGZvciBob3N0cworICAgICAgICBob3N0aWQ9MjU1CW5vIGlkIHN1Z2dlc3RlZC4KKyAgICAgICAgaG9zdGlkPSN4ICAgKDAgPCB4IDwgNykgeCBzdWdnZXN0ZWQgZm9yIGhvc3RzIFNDU0kgaWQuCisKKyAgICBJZiBhIGhvc3QgU0NTSSBpZCBpcyBhdmFpbGFibGUgZnJvbSB0aGUgTlZSQU0sIHRoZSBkcml2ZXIgd2lsbCBpZ25vcmUgCisgICAgYW55IHZhbHVlIHN1Z2dlc3RlZCBhcyBib290IG9wdGlvbi4gT3RoZXJ3aXNlLCBpZiBhIHN1Z2dlc3RlZCB2YWx1ZSAKKyAgICBkaWZmZXJlbnQgZnJvbSAyNTUgaGFzIGJlZW4gc3VwcGxpZWQsIGl0IHdpbGwgdXNlIGl0LiBPdGhlcndpc2UsIGl0IHdpbGwgCisgICAgdHJ5IHRvIGRlZHVjZSB0aGUgdmFsdWUgcHJldmlvdXNseSBzZXQgaW4gdGhlIGhhcmR3YXJlIGFuZCB1c2UgdmFsdWUgCisgICAgNyBpZiB0aGUgaGFyZHdhcmUgdmFsdWUgaXMgemVyby4KKworMTAuMi44ICBWZXJib3NpdHkgbGV2ZWwKKyAgICAgICAgdmVyYj0wICAgICBtaW5pbWFsCisgICAgICAgIHZlcmI9MSAgICAgbm9ybWFsCisgICAgICAgIHZlcmI9MiAgICAgdG9vIG11Y2gKKworMTAuMi45IERlYnVnIG1vZGUKKyAgICAgICAgZGVidWc9MAkgY2xlYXIgZGVidWcgZmxhZ3MKKyAgICAgICAgZGVidWc9I3ggICBzZXQgZGVidWcgZmxhZ3MKKyAgI3ggaXMgYW4gaW50ZWdlciB2YWx1ZSBjb21iaW5pbmcgdGhlIGZvbGxvd2luZyBwb3dlci1vZi0yIHZhbHVlczoKKyAgREVCVUdfQUxMT0MgICAgICAgMHgxCisgIERFQlVHX1BIQVNFICAgICAgIDB4MgorICBERUJVR19QT0xMICAgICAgICAweDQKKyAgREVCVUdfUVVFVUUgICAgICAgMHg4CisgIERFQlVHX1JFU1VMVCAgICAgMHgxMAorICBERUJVR19TQ0FUVEVSICAgIDB4MjAKKyAgREVCVUdfU0NSSVBUICAgICAweDQwCisgIERFQlVHX1RJTlkgICAgICAgMHg4MAorICBERUJVR19USU1JTkcgICAgMHgxMDAKKyAgREVCVUdfTkVHTyAgICAgIDB4MjAwCisgIERFQlVHX1RBR1MgICAgICAweDQwMAorICBERUJVR19GUkVFWkUgICAgMHg4MDAKKyAgREVCVUdfUkVTVEFSVCAgMHgxMDAwCisKKyAgWW91IGNhbiBwbGF5IHNhZmVseSB3aXRoIERFQlVHX05FR08uIEhvd2V2ZXIsIHNvbWUgb2YgdGhlc2UgZmxhZ3MgbWF5IAorICBnZW5lcmF0ZSBidW5jaGVzIG9mIHN5c2xvZyBtZXNzYWdlcy4gCisKKzEwLjIuMTAgU2V0dGxlIGRlbGF5CisgICAgICAgIHNldHRsZT1uCWRlbGF5IGZvciBuIHNlY29uZHMKKworICBBZnRlciBhIGJ1cyByZXNldCwgdGhlIGRyaXZlciB3aWxsIGRlbGF5IGZvciBuIHNlY29uZHMgYmVmb3JlIHRhbGtpbmcKKyAgdG8gYW55IGRldmljZSBvbiB0aGUgYnVzLiAgVGhlIGRlZmF1bHQgaXMgMyBzZWNvbmRzIGFuZCBzYWZlIG1vZGUgd2lsbAorICBkZWZhdWx0IGl0IHRvIDEwLgorCisxMC4yLjExIFNlcmlhbCBOVlJBTQorCU5COiBvcHRpb24gbm90IGN1cnJlbnRseSBpbXBsZW1lbnRlZC4KKyAgICAgICAgbnZyYW09biAgICAgZG8gbm90IGxvb2sgZm9yIHNlcmlhbCBOVlJBTQorICAgICAgICBudnJhbT15ICAgICB0ZXN0IGNvbnRyb2xsZXJzIGZvciBvbmJvYXJkIHNlcmlhbCBOVlJBTQorICAgICAgICAoYWx0ZXJuYXRlIGJpbmFyeSBmb3JtKQorICAgICAgICBudnJhbT08Yml0cyBvcHRpb25zPgorICAgICAgICAweDAxICAgbG9vayBmb3IgTlZSQU0gIChlcXVpdmFsZW50IHRvIG52cmFtPXkpCisgICAgICAgIDB4MDIgICBpZ25vcmUgTlZSQU0gIlN5bmNocm9ub3VzIG5lZ290aWF0aW9uIiBwYXJhbWV0ZXJzIGZvciBhbGwgZGV2aWNlcworICAgICAgICAweDA0ICAgaWdub3JlIE5WUkFNICJXaWRlIG5lZ290aWF0aW9uIiAgcGFyYW1ldGVyIGZvciBhbGwgZGV2aWNlcworICAgICAgICAweDA4ICAgaWdub3JlIE5WUkFNICJTY2FuIGF0IGJvb3QgdGltZSIgcGFyYW1ldGVyIGZvciBhbGwgZGV2aWNlcworICAgICAgICAweDgwICAgYWxzbyBhdHRhY2ggY29udHJvbGxlcnMgc2V0IHRvIE9GRiBpbiB0aGUgTlZSQU0gKHN5bTUzYzh4eCBvbmx5KQorCisxMC4yLjEyIEV4Y2x1ZGUgYSBob3N0IGZyb20gYmVpbmcgYXR0YWNoZWQKKyAgICAgICAgZXhjbD08aW9fYWRkcmVzcz4sLi4uCisKKyAgICBQcmV2ZW50IGhvc3QgYXQgYSBnaXZlbiBpbyBhZGRyZXNzIGZyb20gYmVpbmcgYXR0YWNoZWQuCisgICAgRm9yIGV4YW1wbGUgJ2V4Y2w9MHhiNDAwLDB4YzAwMCcgaW5kaWNhdGUgdG8gdGhlIAorICAgIGRyaXZlciBub3QgdG8gYXR0YWNoIGhvc3RzIGF0IGFkZHJlc3MgMHhiNDAwIGFuZCAweGMwMDAuCisKKzEwLjMgQ29udmVydGluZyBmcm9tIG9sZCBzdHlsZSBvcHRpb25zCisKK1ByZXZpb3VzbHksIHRoZSBzeW0yIGRyaXZlciBhY2NlcHRlZCBhcmd1bWVudHMgb2YgdGhlIGZvcm0KKwlzeW01M2M4eHg9dGFnczo0LHN5bmM6MTAsZGVidWc6MHgyMDAKKworQXMgYSByZXN1bHQgb2YgdGhlIG5ldyBtb2R1bGUgcGFyYW1ldGVycywgdGhpcyBpcyBubyBsb25nZXIgYXZhaWxhYmxlLgorTW9zdCBvZiB0aGUgb3B0aW9ucyBoYXZlIHJlbWFpbmVkIHRoZSBzYW1lLCBidXQgdGFncyBoYXMgYmVjb21lCitjbWRfcGVyX2x1biB0byByZWZsZWN0IGl0cyBkaWZmZXJlbnQgcHVycG9zZXMuICBUaGUgc2FtcGxlIGFib3ZlIHdvdWxkCitiZSBzcGVjaWZpZWQgYXM6CisJbW9kcHJvYmUgc3ltNTNjOHh4IGNtZF9wZXJfbHVuPTQgc3luYz0xMCBkZWJ1Zz0weDIwMAorCitvciBvbiB0aGUga2VybmVsIGJvb3QgbGluZSBhczoKKwlzeW01M2M4eHguY21kX3Blcl9sdW49NCBzeW01M2M4eHguc3luYz0xMCBzeW01M2M4eHguZGVidWc9MHgyMDAKKworMTAuNCBTQ1NJIEJVUyBjaGVja2luZyBib290IG9wdGlvbi4KKworV2hlbiB0aGlzIG9wdGlvbiBpcyBzZXQgdG8gYSBub24temVybyB2YWx1ZSwgdGhlIGRyaXZlciBjaGVja3MgU0NTSSBsaW5lcyAKK2xvZ2ljIHN0YXRlLCAxMDAgbWljcm8tc2Vjb25kcyBhZnRlciBoYXZpbmcgYXNzZXJ0ZWQgdGhlIFNDU0kgUkVTRVQgbGluZS4KK1RoZSBkcml2ZXIganVzdCByZWFkcyBTQ1NJIGxpbmVzIGFuZCBjaGVja3MgYWxsIGxpbmVzIHJlYWQgRkFMU0UgZXhjZXB0IFJFU0VULgorU2luY2UgU0NTSSBkZXZpY2VzIHNoYWxsIHJlbGVhc2UgdGhlIEJVUyBhdCBtb3N0IDgwMCBuYW5vLXNlY29uZHMgYWZ0ZXIgU0NTSSAKK1JFU0VUIGhhcyBiZWVuIGFzc2VydGVkLCBhbnkgc2lnbmFsIHRvIFRSVUUgbWF5IGluZGljYXRlIGEgU0NTSSBCVVMgcHJvYmxlbS4KK1VuZm9ydHVuYXRlbHksIHRoZSBmb2xsb3dpbmcgY29tbW9uIFNDU0kgQlVTIHByb2JsZW1zIGFyZSBub3QgZGV0ZWN0ZWQ6CistIE9ubHkgMSB0ZXJtaW5hdG9yIGluc3RhbGxlZC4KKy0gTWlzcGxhY2VkIHRlcm1pbmF0b3JzLgorLSBCYWQgcXVhbGl0eSB0ZXJtaW5hdG9ycy4KK09uIHRoZSBvdGhlciBoYW5kLCBlaXRoZXIgYmFkIGNhYmxpbmcsIGJyb2tlbiBkZXZpY2VzLCBub3QgY29uZm9ybWFudCAKK2RldmljZXMsIC4uLiBtYXkgY2F1c2UgYSBTQ1NJIHNpZ25hbCB0byBiZSB3cm9uZyB3aGVuIHRlIGRyaXZlciByZWFkcyBpdC4KKworMTUuIFNDU0kgcHJvYmxlbSB0cm91Ymxlc2hvb3RpbmcKKworMTUuMSBQcm9ibGVtIHRyYWNraW5nCisKK01vc3QgU0NTSSBwcm9ibGVtcyBhcmUgZHVlIHRvIGEgbm9uIGNvbmZvcm1hbnQgU0NTSSBidXMgb3IgdG9vIGJ1Z2d5CitkZXZpY2VzLiAgSWYgdW5mb3J0dW5hdGVseSB5b3UgaGF2ZSBTQ1NJIHByb2JsZW1zLCB5b3UgY2FuIGNoZWNrIHRoZQorZm9sbG93aW5nIHRoaW5nczoKKworLSBTQ1NJIGJ1cyBjYWJsZXMKKy0gdGVybWluYXRpb25zIGF0IGJvdGggZW5kIG9mIHRoZSBTQ1NJIGNoYWluCistIGxpbnV4IHN5c2xvZyBtZXNzYWdlcyAoc29tZSBvZiB0aGVtIG1heSBoZWxwIHlvdSkKKworSWYgeW91IGRvIG5vdCBmaW5kIHRoZSBzb3VyY2Ugb2YgcHJvYmxlbXMsIHlvdSBjYW4gY29uZmlndXJlIHRoZQorZHJpdmVyIG9yIGRldmljZXMgaW4gdGhlIE5WUkFNIHdpdGggbWluaW1hbCBmZWF0dXJlcy4KKworLSBvbmx5IGFzeW5jaHJvbm91cyBkYXRhIHRyYW5zZmVycworLSB0YWdnZWQgY29tbWFuZHMgZGlzYWJsZWQKKy0gZGlzY29ubmVjdGlvbnMgbm90IGFsbG93ZWQKKworTm93LCBpZiB5b3VyIFNDU0kgYnVzIGlzIG9rLCB5b3VyIHN5c3RlbSBoYXMgZXZlcnkgY2hhbmNlIHRvIHdvcmsKK3dpdGggdGhpcyBzYWZlIGNvbmZpZ3VyYXRpb24gYnV0IHBlcmZvcm1hbmNlcyB3aWxsIG5vdCBiZSBvcHRpbWFsLgorCitJZiBpdCBzdGlsbCBmYWlscywgdGhlbiB5b3UgY2FuIHNlbmQgeW91ciBwcm9ibGVtIGRlc2NyaXB0aW9uIHRvCithcHByb3ByaWF0ZSBtYWlsaW5nIGxpc3RzIG9yIG5ld3MtZ3JvdXBzLiAgU2VuZCBtZSBhIGNvcHkgaW4gb3JkZXIgdG8KK2JlIHN1cmUgSSB3aWxsIHJlY2VpdmUgaXQuICBPYnZpb3VzbHksIGEgYnVnIGluIHRoZSBkcml2ZXIgY29kZSBpcworcG9zc2libGUuCisKKyAgTXkgY3VycmVudCBlbWFpbCBhZGRyZXNzOiBHZXJhcmQgUm91ZGllciA8Z3JvdWRpZXJAZnJlZS5mcj4KKworQWxsb3dpbmcgZGlzY29ubmVjdGlvbnMgaXMgaW1wb3J0YW50IGlmIHlvdSB1c2Ugc2V2ZXJhbCBkZXZpY2VzIG9uCit5b3VyIFNDU0kgYnVzIGJ1dCBvZnRlbiBjYXVzZXMgcHJvYmxlbXMgd2l0aCBidWdneSBkZXZpY2VzLgorU3luY2hyb25vdXMgZGF0YSB0cmFuc2ZlcnMgaW5jcmVhc2VzIHRocm91Z2hwdXQgb2YgZmFzdCBkZXZpY2VzIGxpa2UKK2hhcmQgZGlza3MuICBHb29kIFNDU0kgaGFyZCBkaXNrcyB3aXRoIGEgbGFyZ2UgY2FjaGUgZ2FpbiBhZHZhbnRhZ2Ugb2YKK3RhZ2dlZCBjb21tYW5kcyBxdWV1aW5nLgorCisxNS4yIFVuZGVyc3RhbmRpbmcgaGFyZHdhcmUgZXJyb3IgcmVwb3J0cworCitXaGVuIHRoZSBkcml2ZXIgZGV0ZWN0cyBhbiB1bmV4cGVjdGVkIGVycm9yIGNvbmRpdGlvbiwgaXQgbWF5IGRpc3BsYXkgYSAKK21lc3NhZ2Ugb2YgdGhlIGZvbGxvd2luZyBwYXR0ZXJuLgorCitzeW0wOjE6IEVSUk9SICgwOjQ4KSAoMS0yMS02NSkgKGYvOTUvMCkgQCAoc2NyaXB0IDdjMDoxOTAwMDAwMCkuCitzeW0wOiBzY3JpcHQgY21kID0gMTkwMDAwMDAKK3N5bTA6IHJlZ2R1bXA6IGRhIDEwIDgwIDk1IDQ3IDBmIDAxIDA3IDc1IDAxIDgxIDIxIDgwIDAxIDA5IDAwLgorCitTb21lIGZpZWxkcyBpbiBzdWNoIGEgbWVzc2FnZSBtYXkgaGVscCB5b3UgdW5kZXJzdGFuZCB0aGUgY2F1c2Ugb2YgdGhlIAorcHJvYmxlbSwgYXMgZm9sbG93czoKKworc3ltMDoxOiBFUlJPUiAoMDo0OCkgKDEtMjEtNjUpIChmLzk1LzApIEAgKHNjcmlwdCA3YzA6MTkwMDAwMDApLgorLi4uLi5BLi4uLi4uLi4uQi5DLi4uLkQuRS4uRi4uLi5HLkguLkkuLi4uLi4uSi4uLi4uSy4uLkwuLi4uLi4uCisKK0ZpZWxkIEEgOiB0YXJnZXQgbnVtYmVyLgorICBTQ1NJIElEIG9mIHRoZSBkZXZpY2UgdGhlIGNvbnRyb2xsZXIgd2FzIHRhbGtpbmcgd2l0aCBhdCB0aGUgbW9tZW50IHRoZSAKKyAgZXJyb3Igb2NjdXJzLgorCitGaWVsZCBCIDogRFNUQVQgaW8gcmVnaXN0ZXIgKERNQSBTVEFUVVMpCisgIEJpdCAweDQwIDogTURQRSBNYXN0ZXIgRGF0YSBQYXJpdHkgRXJyb3IKKyAgICAgICAgICAgICBEYXRhIHBhcml0eSBlcnJvciBkZXRlY3RlZCBvbiB0aGUgUENJIEJVUy4KKyAgQml0IDB4MjAgOiBCRiAgIEJ1cyBGYXVsdAorICAgICAgICAgICAgIFBDSSBidXMgZmF1bHQgY29uZGl0aW9uIGRldGVjdGVkCisgIEJpdCAweDAxIDogSUlEICBJbGxlZ2FsIEluc3RydWN0aW9uIERldGVjdGVkCisgICAgICAgICAgICAgU2V0IGJ5IHRoZSBjaGlwIHdoZW4gaXQgZGV0ZWN0cyBhbiBJbGxlZ2FsIEluc3RydWN0aW9uIGZvcm1hdCAKKyAgICAgICAgICAgICBvbiBzb21lIGNvbmRpdGlvbiB0aGF0IG1ha2VzIGFuIGluc3RydWN0aW9uIGlsbGVnYWwuCisgIEJpdCAweDgwIDogREZFIERtYSBGaWZvIEVtcHR5CisgICAgICAgICAgICAgUHVyZSBzdGF0dXMgYml0IHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgYW4gZXJyb3IuCisgIElmIHRoZSByZXBvcnRlZCBEU1RBVCB2YWx1ZSBjb250YWlucyBhIGNvbWJpbmF0aW9uIG9mIE1EUEUgKDB4NDApLCAKKyAgQkYgKDB4MjApLCB0aGVuIHRoZSBjYXVzZSBtYXkgYmUgbGlrZWx5IGR1ZSB0byBhIFBDSSBCVVMgcHJvYmxlbS4KKworRmllbGQgQyA6IFNJU1QgaW8gcmVnaXN0ZXIgKFNDU0kgSW50ZXJydXB0IFN0YXR1cykKKyAgQml0IDB4MDggOiBTR0UgIFNDU0kgR1JPU1MgRVJST1IKKyAgICAgICAgICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgY2hpcCBkZXRlY3RlZCBhIHNldmVyZSBlcnJvciBjb25kaXRpb24gCisgICAgICAgICAgICAgb24gdGhlIFNDU0kgQlVTIHRoYXQgcHJldmVudHMgdGhlIFNDU0kgcHJvdG9jb2wgZnJvbSBmdW5jdGlvbmluZworICAgICAgICAgICAgIHByb3Blcmx5LgorICBCaXQgMHgwNCA6IFVEQyAgVW5leHBlY3RlZCBEaXNjb25uZWN0aW9uCisgICAgICAgICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIGRldmljZSByZWxlYXNlZCB0aGUgU0NTSSBCVVMgd2hlbiB0aGUgY2hpcCAKKyAgICAgICAgICAgICB3YXMgbm90IGV4cGVjdGluZyB0aGlzIHRvIGhhcHBlbi4gQSBkZXZpY2UgbWF5IGJlaGF2ZSBzbyB0byAKKyAgICAgICAgICAgICBpbmRpY2F0ZSB0aGUgU0NTSSBpbml0aWF0b3IgdGhhdCBhbiBlcnJvciBjb25kaXRpb24gbm90IHJlcG9ydGFibGUgICAgICAgICAgICAgIHVzaW5nIHRoZSBTQ1NJIHByb3RvY29sIGhhcyBvY2N1cnJlZC4KKyAgQml0IDB4MDIgOiBSU1QgIFNDU0kgQlVTIFJlc2V0CisgICAgICAgICAgICAgR2VuZXJhbGx5IFNDU0kgdGFyZ2V0cyBkbyBub3QgcmVzZXQgdGhlIFNDU0kgQlVTLCBhbHRob3VnaCBhbnkgCisgICAgICAgICAgICAgZGV2aWNlIG9uIHRoZSBCVVMgY2FuIHJlc2V0IGl0IGF0IGFueSB0aW1lLgorICBCaXQgMHgwMSA6IFBBUiAgUGFyaXR5CisgICAgICAgICAgICAgU0NTSSBwYXJpdHkgZXJyb3IgZGV0ZWN0ZWQuCisgIE9uIGEgZmF1bHR5IFNDU0kgQlVTLCBhbnkgZXJyb3IgY29uZGl0aW9uIGFtb25nIFNHRSAoMHgwOCksIFVEQyAoMHgwNCkgYW5kIAorICBQQVIgKDB4MDEpIG1heSBiZSBkZXRlY3RlZCBieSB0aGUgY2hpcC4gSWYgeW91ciBTQ1NJIHN5c3RlbSBzb21ldGltZXMgCisgIGVuY291bnRlcnMgc3VjaCBlcnJvciBjb25kaXRpb25zLCBlc3BlY2lhbGx5IFNDU0kgR1JPU1MgRVJST1IsIHRoZW4gYSBTQ1NJIAorICBCVVMgcHJvYmxlbSBpcyBsaWtlbHkgdGhlIGNhdXNlIG9mIHRoZXNlIGVycm9ycy4KKworRm9yIGZpZWxkcyBELEUsRixHIGFuZCBILCB5b3UgbWF5IGxvb2sgaW50byB0aGUgc3ltNTNjOHh4X2RlZnMuaCBmaWxlIAordGhhdCBjb250YWlucyBzb21lIG1pbmltYWwgY29tbWVudHMgb24gSU8gcmVnaXN0ZXIgYml0cy4KK0ZpZWxkIEQgOiBTT0NMICBTY3NpIE91dHB1dCBDb250cm9sIExhdGNoCisgICAgICAgICAgVGhpcyByZWdpc3RlciByZWZsZWN0cyB0aGUgc3RhdGUgb2YgdGhlIFNDU0kgY29udHJvbCBsaW5lcyB0aGUgCisgICAgICAgICAgY2hpcCB3YW50IHRvIGRyaXZlIG9yIGNvbXBhcmUgYWdhaW5zdC4KK0ZpZWxkIEUgOiBTQkNMICBTY3NpIEJ1cyBDb250cm9sIExpbmVzCisgICAgICAgICAgQWN0dWFsIHZhbHVlIG9mIGNvbnRyb2wgbGluZXMgb24gdGhlIFNDU0kgQlVTLgorRmllbGQgRiA6IFNCREwgIFNjc2kgQnVzIERhdGEgTGluZXMKKyAgICAgICAgICBBY3R1YWwgdmFsdWUgb2YgZGF0YSBsaW5lcyBvbiB0aGUgU0NTSSBCVVMuCitGaWVsZCBHIDogU1hGRVIgIFNDU0kgVHJhbnNmZXIKKyAgICAgICAgICBDb250YWlucyB0aGUgc2V0dGluZyBvZiB0aGUgU3luY2hyb25vdXMgUGVyaW9kIGZvciBvdXRwdXQgYW5kIAorICAgICAgICAgIHRoZSBjdXJyZW50IFN5bmNocm9ub3VzIG9mZnNldCAob2Zmc2V0IDAgbWVhbnMgYXN5bmNocm9ub3VzKS4KK0ZpZWxkIEggOiBTQ05UTDMgU2NzaSBDb250cm9sIFJlZ2lzdGVyIDMKKyAgICAgICAgICBDb250YWlucyB0aGUgc2V0dGluZyBvZiB0aW1pbmcgdmFsdWVzIGZvciBib3RoIGFzeW5jaHJvbm91cyBhbmQgCisgICAgICAgICAgc3luY2hyb25vdXMgZGF0YSB0cmFuc2ZlcnMuIAorRmllbGQgSSA6IFNDTlRMNCBTY3NpIENvbnRyb2wgUmVnaXN0ZXIgNAorICAgICAgICAgIE9ubHkgbWVhbmluZ2Z1bCBmb3IgNTNDMTAxMCBVbHRyYTMgY29udHJvbGxlcnMuCisKK1VuZGVyc3RhbmRpbmcgRmllbGRzIEosIEssIEwgYW5kIGR1bXBzIHJlcXVpcmVzIHRvIGhhdmUgZ29vZCBrbm93bGVkZ2Ugb2YgCitTQ1NJIHN0YW5kYXJkcywgY2hpcCBjb3JlcyBmdW5jdGlvbm5hbHMgYW5kIGludGVybmFsIGRyaXZlciBkYXRhIHN0cnVjdHVyZXMuCitZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBkZWNvZGUgYW5kIHVuZGVyc3RhbmQgdGhlbSwgdW5sZXNzIHlvdSB3YW50IHRvIGhlbHAgCittYWludGFpbiB0aGUgZHJpdmVyIGNvZGUuCisKKzE3LiBTZXJpYWwgTlZSQU0gKGFkZGVkIGJ5IFJpY2hhcmQgV2FsdGhhbTogZG9ybW91c2VAZmFyc3JvYnQuZGVtb24uY28udWspCisKKzE3LjEgRmVhdHVyZXMKKworRW5hYmxpbmcgc2VyaWFsIE5WUkFNIHN1cHBvcnQgZW5hYmxlcyBkZXRlY3Rpb24gb2YgdGhlIHNlcmlhbCBOVlJBTSBpbmNsdWRlZAorb24gU3ltYmlvcyBhbmQgc29tZSBTeW1iaW9zIGNvbXBhdGlibGUgaG9zdCBhZGFwdG9ycywgYW5kIFRla3JhbSBib2FyZHMuIFRoZSAKK3NlcmlhbCBOVlJBTSBpcyB1c2VkIGJ5IFN5bWJpb3MgYW5kIFRla3JhbSB0byBob2xkIHNldCB1cCBwYXJhbWV0ZXJzIGZvciB0aGUgCitob3N0IGFkYXB0b3IgYW5kIGl0cyBhdHRhY2hlZCBkcml2ZXMuCisKK1RoZSBTeW1iaW9zIE5WUkFNIGFsc28gaG9sZHMgZGF0YSBvbiB0aGUgYm9vdCBvcmRlciBvZiBob3N0IGFkYXB0b3JzIGluIGEKK3N5c3RlbSB3aXRoIG1vcmUgdGhhbiBvbmUgaG9zdCBhZGFwdG9yLiAgVGhpcyBpbmZvcm1hdGlvbiBpcyBubyBsb25nZXIgdXNlZAorYXMgaXQncyBmdW5kYW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBob3RwbHVnIFBDSSBtb2RlbC4KKworVGVrcmFtIGJvYXJkcyB1c2luZyBTeW1iaW9zIGNoaXBzLCBEQzM5MFcvRi9VLCB3aGljaCBoYXZlIE5WUkFNIGFyZSBkZXRlY3RlZAorYW5kIHRoaXMgaXMgdXNlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIFN5bWJpb3MgY29tcGF0aWJsZSBhbmQgVGVrcmFtIGhvc3QgCithZGFwdG9ycy4gVGhpcyBpcyB1c2VkIHRvIGRpc2FibGUgdGhlIFN5bWJpb3MgY29tcGF0aWJsZSAiZGlmZiIgc2V0dGluZworaW5jb3JyZWN0bHkgc2V0IG9uIFRla3JhbSBib2FyZHMgaWYgdGhlIENPTkZJR19TQ1NJXzUzQzhYWF9TWU1CSU9TX0NPTVBBVCAKK2NvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGlzIHNldCBlbmFibGluZyBib3RoIFN5bWJpb3MgYW5kIFRla3JhbSBib2FyZHMgdG8gYmUgCit1c2VkIHRvZ2V0aGVyIHdpdGggdGhlIFN5bWJpb3MgY2FyZHMgdXNpbmcgYWxsIHRoZWlyIGZlYXR1cmVzLCBpbmNsdWRpbmcKKyJkaWZmIiBzdXBwb3J0LiAoImxlZCBwaW4iIHN1cHBvcnQgZm9yIFN5bWJpb3MgY29tcGF0aWJsZSBjYXJkcyBjYW4gcmVtYWluCitlbmFibGVkIHdoZW4gdXNpbmcgVGVrcmFtIGNhcmRzLiBJdCBkb2VzIG5vdGhpbmcgdXNlZnVsIGZvciBUZWtyYW0gaG9zdAorYWRhcHRvcnMgYnV0IGRvZXMgbm90IGNhdXNlIHByb2JsZW1zIGVpdGhlci4pCisKK1RoZSBwYXJhbWV0ZXJzIHRoZSBkcml2ZXIgaXMgYWJsZSB0byBnZXQgZnJvbSB0aGUgTlZSQU0gZGVwZW5kIG9uIHRoZSAKK2RhdGEgZm9ybWF0IHVzZWQsIGFzIGZvbGxvdzoKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVrcmFtIGZvcm1hdCAgICAgIFN5bWJpb3MgZm9ybWF0CitHZW5lcmFsIGFuZCBob3N0IHBhcmFtZXRlcnMKKyAgICBCb290IG9yZGVyICAgICAgICAgICAgICAgICAgICAgICAgIE4gICAgICAgICAgICAgICAgICAgWQorICAgIEhvc3QgU0NTSSBJRCAgICAgICAgICAgICAgICAgICAgICAgWSAgICAgICAgICAgICAgICAgICBZCisgICAgU0NTSSBwYXJpdHkgY2hlY2tpbmcgICAgICAgICAgICAgICBZICAgICAgICAgICAgICAgICAgIFkKKyAgICBWZXJib3NlIGJvb3QgbWVzc2FnZXMgICAgICAgICAgICAgIE4gICAgICAgICAgICAgICAgICAgWQorU0NTSSBkZXZpY2VzIHBhcmFtZXRlcnMKKyAgICBTeW5jaHJvbm91cyB0cmFuc2ZlciBzcGVlZCAgICAgICAgIFkgICAgICAgICAgICAgICAgICAgWQorICAgIFdpZGUgMTYgLyBOYXJyb3cgICAgICAgICAgICAgICAgICAgWSAgICAgICAgICAgICAgICAgICBZCisgICAgVGFnZ2VkIENvbW1hbmQgUXVldWluZyBlbmFibGVkICAgICBZICAgICAgICAgICAgICAgICAgIFkKKyAgICBEaXNjb25uZWN0aW9ucyBlbmFibGVkICAgICAgICAgICAgIFkgICAgICAgICAgICAgICAgICAgWQorICAgIFNjYW4gYXQgYm9vdCB0aW1lICAgICAgICAgICAgICAgICAgTiAgICAgICAgICAgICAgICAgICBZCisKK0luIG9yZGVyIHRvIHNwZWVkIHVwIHRoZSBzeXN0ZW0gYm9vdCwgZm9yIGVhY2ggZGV2aWNlIGNvbmZpZ3VyZWQgd2l0aG91dCAKK3RoZSAic2NhbiBhdCBib290IHRpbWUiIG9wdGlvbiwgdGhlIGRyaXZlciBmb3JjZXMgYW4gZXJyb3Igb24gdGhlIAorZmlyc3QgVEVTVCBVTklUIFJFQURZIGNvbW1hbmQgcmVjZWl2ZWQgZm9yIHRoaXMgZGV2aWNlLgorCisKKzE3LjIgU3ltYmlvcyBOVlJBTSBsYXlvdXQKKwordHlwaWNhbCBkYXRhIGF0IE5WUkFNIGFkZHJlc3MgMHgxMDAgKDUzYzgxMGEgTlZSQU0pCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMDAgMDAKKzY0IDAxCis4ZSAwYgorCiswMCAzMCAwMCAwMCAwMCAwMCAwNyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwNyAwNCAxMCAwNCAwMCAwMCAKKworMDQgMDAgMGYgMDAgMDAgMTAgMDAgNTAgMDAgMDAgMDEgMDAgMDAgNjIgCiswNCAwMCAwMyAwMCAwMCAxMCAwMCA1OCAwMCAwMCAwMSAwMCAwMCA2MyAKKzA0IDAwIDAxIDAwIDAwIDEwIDAwIDQ4IDAwIDAwIDAxIDAwIDAwIDYxIAorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgCisKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwCiswZiAwMCAwOCAwOCA2NCAwMCAwYSAwMCAKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwIAorMGYgMDAgMDggMDggNjQgMDAgMGEgMDAgCiswZiAwMCAwOCAwOCA2NCAwMCAwYSAwMCAKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwIAorMGYgMDAgMDggMDggNjQgMDAgMGEgMDAgCiswZiAwMCAwOCAwOCA2NCAwMCAwYSAwMCAKKworMGYgMDAgMDggMDggNjQgMDAgMGEgMDAgCiswZiAwMCAwOCAwOCA2NCAwMCAwYSAwMCAKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwIAorMGYgMDAgMDggMDggNjQgMDAgMGEgMDAgCiswZiAwMCAwOCAwOCA2NCAwMCAwYSAwMCAKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwIAorMGYgMDAgMDggMDggNjQgMDAgMGEgMDAgCiswZiAwMCAwOCAwOCA2NCAwMCAwYSAwMCAKKworMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAKKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIAorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAKKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIAorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAKKworMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAKKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIAorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAKKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIAorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAKKworMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAKKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIAorCitmZSBmZQorMDAgMDAKKzAwIDAwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTlZSQU0gbGF5b3V0IGRldGFpbHMKKworTlZSQU0gQWRkcmVzcyAweDAwMC0weDBmZiBub3QgdXNlZAorICAgICAgICAgICAgICAweDEwMC0weDI2ZiBpbml0aWFsaXNlZCBkYXRhCisgICAgICAgICAgICAgIDB4MjcwLTB4N2ZmIG5vdCB1c2VkCisKK2dlbmVyYWwgbGF5b3V0CisKKyAgICAgICAgaGVhZGVyICAtICAgNiBieXRlcywKKyAgICAgICAgZGF0YSAgICAtIDM1NiBieXRlcyAoY2hlY2tzdW0gaXMgYnl0ZSBzdW0gb2YgdGhpcyBkYXRhKQorICAgICAgICB0cmFpbGVyIC0gICA2IGJ5dGVzCisgICAgICAgICAgICAgICAgICAtLS0KKyAgICAgICAgdG90YWwgICAgIDM2OCBieXRlcworCitkYXRhIGFyZWEgbGF5b3V0CisKKyAgICAgICAgY29udHJvbGxlciBzZXQgdXAgIC0gIDIwIGJ5dGVzCisgICAgICAgIGJvb3QgY29uZmlndXJhdGlvbiAtICA1NiBieXRlcyAoNHgxNCBieXRlcykKKyAgICAgICAgZGV2aWNlIHNldCB1cCAgICAgIC0gMTI4IGJ5dGVzICgxNng4IGJ5dGVzKQorICAgICAgICB1bnVzZWQgKHNwYXJlPykgICAgLSAxNTIgYnl0ZXMgKDE5eDggYnl0ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLQorICAgICAgICB0b3RhbCAgICAgICAgICAgICAgICAzNTYgYnl0ZXMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2hlYWRlcgorCiswMCAwMCAgIC0gPz8gc3RhcnQgbWFya2VyCis2NCAwMSAgIC0gYnl0ZSBjb3VudCAobHNiL21zYiBleGNsdWRlcyBoZWFkZXIvdHJhaWxlcikKKzhlIDBiICAgLSBjaGVja3N1bSAobHNiL21zYiBleGNsdWRlcyBoZWFkZXIvdHJhaWxlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitjb250cm9sbGVyIHNldCB1cAorCiswMCAzMCAwMCAwMCAwMCAwMCAwNyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwNyAwNCAxMCAwNCAwMCAwMAorICAgICAgICAgICAgICAgICAgIHwgICAgIHwgICAgICAgICAgIHwgICAgIHwKKyAgICAgICAgICAgICAgICAgICB8ICAgICB8ICAgICAgICAgICB8ICAgICAgLS0gaG9zdCBJRAorICAgICAgICAgICAgICAgICAgIHwgICAgIHwgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICB8ICAgICB8ICAgICAgICAgICAgLS1SZW1vdmFibGUgTWVkaWEgU3VwcG9ydAorICAgICAgICAgICAgICAgICAgIHwgICAgIHwgICAgICAgICAgICAgICAweDAwID0gbm9uZQorICAgICAgICAgICAgICAgICAgIHwgICAgIHwgICAgICAgICAgICAgICAweDAxID0gQm9vdGFibGUgRGV2aWNlCisgICAgICAgICAgICAgICAgICAgfCAgICAgfCAgICAgICAgICAgICAgIDB4MDIgPSBBbGwgd2l0aCBNZWRpYQorICAgICAgICAgICAgICAgICAgIHwgICAgIHwKKyAgICAgICAgICAgICAgICAgICB8ICAgICAgLS1mbGFnIGJpdHMgMgorICAgICAgICAgICAgICAgICAgIHwgICAgICAgIDB4MDAwMDAwMDE9IHNjYW4gb3JkZXIgaGktPmxvdworICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAoZGVmYXVsdCAweDAwIC0gc2NhbiBsb3ctPmhpKQorICAgICAgICAgICAgICAgICAgICAtLWZsYWcgYml0cyAxCisgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEgc2NhbSBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMCBwYXJpdHkgZW5hYmxlCisgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAxMDAgdmVyYm9zZSBib290IG1zZ3MKKworcmVtYWluaW5nIGJ5dGVzIHVua25vd24gLSB0aGV5IGRvIG5vdCBhcHBlYXIgdG8gY2hhbmdlIGluIG15CitjdXJyZW50IHNldCB1cCBmb3IgYW55IG9mIHRoZSBjb250cm9sbGVycy4KKworZGVmYXVsdCBzZXQgdXAgaXMgaWRlbnRpY2FsIGZvciA1M2M4MTBhIGFuZCA1M2M4NzUgTlZSQU0KKyhSZW1vdmFibGUgTWVkaWEgYWRkZWQgU3ltYmlvcyBCSU9TIHZlcnNpb24gNC4wOSkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitib290IGNvbmZpZ3VyYXRpb24KKworYm9vdCBvcmRlciBzZXQgYnkgb3JkZXIgb2YgdGhlIGRldmljZXMgaW4gdGhpcyB0YWJsZQorCiswNCAwMCAwZiAwMCAwMCAxMCAwMCA1MCAwMCAwMCAwMSAwMCAwMCA2MiAtLSAxc3QgY29udHJvbGxlcgorMDQgMDAgMDMgMDAgMDAgMTAgMDAgNTggMDAgMDAgMDEgMDAgMDAgNjMgICAgMm5kIGNvbnRyb2xsZXIKKzA0IDAwIDAxIDAwIDAwIDEwIDAwIDQ4IDAwIDAwIDAxIDAwIDAwIDYxICAgIDNyZCBjb250cm9sbGVyCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgICA0dGggY29udHJvbGxlcgorICAgICAgIHwgIHwgIHwgIHwgICAgIHwgICAgICAgIHwgICAgIHwgIHwKKyAgICAgICB8ICB8ICB8ICB8ICAgICB8ICAgICAgICB8ICAgICAgLS0tLSBQQ0kgaW8gcG9ydCBhZHIKKyAgICAgICB8ICB8ICB8ICB8ICAgICB8ICAgICAgICAgLS0weDAxIGluaXQvc2NhbiBhdCBib290IHRpbWUKKyAgICAgICB8ICB8ICB8ICB8ICAgICAgLS1QQ0kgZGV2aWNlL2Z1bmN0aW9uIG51bWJlciAoMHhkZGRkZGZmZikKKyAgICAgICB8ICB8ICAgLS0tLS0gPz8gUENJIHZlbmRvciBJRCAobHNiL21zYikKKyAgICAgICAgLS0tLVBDSSBkZXZpY2UgSUQgKGxzYi9tc2IpCisKKz8/IHVzZSBvZiB0aGlzIGRhdGEgaXMgYSBndWVzcyBidXQgc2VlbXMgcmVhc29uYWJsZQorCityZW1haW5pbmcgYnl0ZXMgdW5rbm93biAtIHRoZXkgZG8gbm90IGFwcGVhciB0byBjaGFuZ2UgaW4gbXkKK2N1cnJlbnQgc2V0IHVwCisKK2RlZmF1bHQgc2V0IHVwIGlzIGlkZW50aWNhbCBmb3IgNTNjODEwYSBhbmQgNTNjODc1IE5WUkFNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZGV2aWNlIHNldCB1cCAodXAgdG8gMTYgZGV2aWNlcyAtIGluY2x1ZGVzIGNvbnRyb2xsZXIpCisKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwIC0gaWQgMAorMGYgMDAgMDggMDggNjQgMDAgMGEgMDAgCiswZiAwMCAwOCAwOCA2NCAwMCAwYSAwMCAKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwIAorMGYgMDAgMDggMDggNjQgMDAgMGEgMDAgCiswZiAwMCAwOCAwOCA2NCAwMCAwYSAwMCAKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwIAorMGYgMDAgMDggMDggNjQgMDAgMGEgMDAgCisKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwIAorMGYgMDAgMDggMDggNjQgMDAgMGEgMDAgCiswZiAwMCAwOCAwOCA2NCAwMCAwYSAwMCAKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwIAorMGYgMDAgMDggMDggNjQgMDAgMGEgMDAgCiswZiAwMCAwOCAwOCA2NCAwMCAwYSAwMCAKKzBmIDAwIDA4IDA4IDY0IDAwIDBhIDAwIAorMGYgMDAgMDggMDggNjQgMDAgMGEgMDAgLSBpZCAxNQorIHwgICAgIHwgIHwgIHwgICAgIHwgIHwKKyB8ICAgICB8ICB8ICB8ICAgICAgLS0tLXRpbWVvdXQgKGxzYi9tc2IpCisgfCAgICAgfCAgfCAgIC0tc3luY2ggcGVyaW9kICgweD8/IDQwIE10cmFucy9zZWMtIGZhc3QgNDApIChwcm9iYWJseSAweDI4KQorIHwgICAgIHwgIHwgICAgICAgICAgICAgICAgICAoMHgzMCAyMCBNdHJhbnMvc2VjLSBmYXN0IDIwKQorIHwgICAgIHwgIHwgICAgICAgICAgICAgICAgICAoMHg2NCAxMCBNdHJhbnMvc2VjLSBmYXN0ICkKKyB8ICAgICB8ICB8ICAgICAgICAgICAgICAgICAgKDB4YzggIDUgTXRyYW5zL3NlYykKKyB8ICAgICB8ICB8ICAgICAgICAgICAgICAgICAgKDB4MDAgIGFzeW5jaHJvbm91cykKKyB8ICAgICB8ICAgLS0gPz8gbWF4IHN5bmMgb2Zmc2V0ICgweDA4IGluIE5WUkFNIG9uIDUzYzgxMGEpIAorIHwgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MTAgaW4gTlZSQU0gb24gNTNjODc1KQorIHwgICAgICAtLWRldmljZSBidXMgd2lkdGggKDB4MDggbmFycm93KQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgKDB4MTAgMTYgYml0IHdpZGUpCisgIC0tZmxhZyBiaXRzCisgICAgMHgwMDAwMDAwMSAtIGRpc2Nvbm5lY3QgZW5hYmxlZAorICAgIDB4MDAwMDAwMTAgLSBzY2FuIGF0IGJvb3QgdGltZQorICAgIDB4MDAwMDAxMDAgLSBzY2FuIGx1bnMKKyAgICAweDAwMDAxMDAwIC0gcXVldWUgdGFncyBlbmFibGVkCisKK3JlbWFpbmluZyBieXRlcyB1bmtub3duIC0gdGhleSBkbyBub3QgYXBwZWFyIHRvIGNoYW5nZSBpbiBteQorY3VycmVudCBzZXQgdXAKKworPz8gdXNlIG9mIHRoaXMgZGF0YSBpcyBhIGd1ZXNzIGJ1dCBzZWVtcyByZWFzb25hYmxlIAorKGJ1dCBpdCBjb3VsZCBiZSBtYXggYnVzIHdpZHRoKQorCitkZWZhdWx0IHNldCB1cCBmb3IgNTNjODEwYSBOVlJBTQorZGVmYXVsdCBzZXQgdXAgZm9yIDUzYzg3NSBOVlJBTSAtIGJ1cyB3aWR0aCAgICAgLSAweDEwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gc3luYyBvZmZzZXQgPyAtIDB4MTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBzeW5jIHBlcmlvZCAgIC0gMHgzMAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKz8/IHNwYXJlIGRldmljZSBzcGFjZSAoMzIgYml0IGJ1cyA/PykKKworMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgICgxOXg4Ynl0ZXMpCisuCisuCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMAorCitkZWZhdWx0IHNldCB1cCBpcyBpZGVudGljYWwgZm9yIDUzYzgxMGEgYW5kIDUzYzg3NSBOVlJBTQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3RyYWlsZXIKKworZmUgZmUgICAtID8gZW5kIG1hcmtlciA/CiswMCAwMAorMDAgMDAKKworZGVmYXVsdCBzZXQgdXAgaXMgaWRlbnRpY2FsIGZvciA1M2M4MTBhIGFuZCA1M2M4NzUgTlZSQU0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworCisxNy4zIFRla3JhbSBOVlJBTSBsYXlvdXQKKworbnZyYW0gNjR4MTYgKDEwMjQgYml0KQorCitEcml2ZSBzZXR0aW5ncworCitEcml2ZSBJRCAwLTE1IChhZGRyIDB4MHl5eXkwID0gZGV2aWNlIHNldHVwLCB5eXl5ID0gSUQpCisgICAgICAgICAgICAgIChhZGRyIDB4MHl5eXkxID0gMHgwMDAwKQorCisgICAgeCB4IHggeCAgeCB4IHggeCAgeCB4IHggeCAgeCB4IHggeAorICAgICAgICAgICAgICAgfCB8IHwgICAgICB8IHwgIHwgfCB8IHwKKyAgICAgICAgICAgICAgIHwgfCB8ICAgICAgfCB8ICB8IHwgfCAgLS0tLS0gcGFyaXR5IGNoZWNrICAgMCAtIG9mZgorICAgICAgICAgICAgICAgfCB8IHwgICAgICB8IHwgIHwgfCB8ICAgICAgICAgICAgICAgICAgICAgICAxIC0gb24KKyAgICAgICAgICAgICAgIHwgfCB8ICAgICAgfCB8ICB8IHwgfAorICAgICAgICAgICAgICAgfCB8IHwgICAgICB8IHwgIHwgfCAgLS0tLS0tLSBzeW5jIG5lZyAgICAgICAwIC0gb2ZmCisgICAgICAgICAgICAgICB8IHwgfCAgICAgIHwgfCAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgIDEgLSBvbgorICAgICAgICAgICAgICAgfCB8IHwgICAgICB8IHwgIHwgfAorICAgICAgICAgICAgICAgfCB8IHwgICAgICB8IHwgIHwgIC0tLS0tLS0tLSBkaXNjb25uZWN0ICAgICAwIC0gb2ZmCisgICAgICAgICAgICAgICB8IHwgfCAgICAgIHwgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgLSBvbgorICAgICAgICAgICAgICAgfCB8IHwgICAgICB8IHwgIHwKKyAgICAgICAgICAgICAgIHwgfCB8ICAgICAgfCB8ICAgLS0tLS0tLS0tLS0gc3RhcnQgY21kICAgICAgMCAtIG9mZgorICAgICAgICAgICAgICAgfCB8IHwgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC0gb24KKyAgICAgICAgICAgICAgIHwgfCB8ICAgICAgfCB8CisgICAgICAgICAgICAgICB8IHwgfCAgICAgIHwgIC0tLS0tLS0tLS0tLS0tIHRhZ2dlZCBjbWRzICAgIDAgLSBvZmYKKyAgICAgICAgICAgICAgIHwgfCB8ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAtIG9uCisgICAgICAgICAgICAgICB8IHwgfCAgICAgIHwgCisgICAgICAgICAgICAgICB8IHwgfCAgICAgICAtLS0tLS0tLS0tLS0tLS0tIHdpZGUgbmVnICAgICAgIDAgLSBvZmYKKyAgICAgICAgICAgICAgIHwgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAtIG9uCisgICAgICAgICAgICAgICB8IHwgfAorICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzeW5jIHJhdGUgICAgICAwIC0gMTAuMCBNdHJhbnMvc2VjCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgLSAgOC4wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgLSAgNi42CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMgLSAgNS43CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgLSAgNS4wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUgLSAgNC4wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYgLSAgMy4wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcgLSAgMi4wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcgLSAgMi4wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDggLSAyMC4wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkgLSAxNi43CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgLSAxMy45CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgLSAxMS45CisKK0dsb2JhbCBzZXR0aW5ncworCitIb3N0IGZsYWdzIDAgKGFkZHIgMHgxMDAwMDAsIDMyKSAKKworICAgIHggeCB4IHggIHggeCB4IHggIHggeCB4IHggIHggeCB4IHgKKyAgICB8IHwgfCB8ICB8IHwgfCB8ICAgICAgICAgICB8IHwgfCB8CisgICAgfCB8IHwgfCAgfCB8IHwgfCAgICAgICAgICAgIC0tLS0tLS0tLS0tIGhvc3QgSUQgICAgMHgwMCAtIDB4MGYKKyAgICB8IHwgfCB8ICB8IHwgfCB8CisgICAgfCB8IHwgfCAgfCB8IHwgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHN1cHBvcnQgZm9yICAgIDAgLSBvZmYKKyAgICB8IHwgfCB8ICB8IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgPiAyIGRyaXZlcyAgICAgMSAtIG9uCisgICAgfCB8IHwgfCAgfCB8IHwgCisgICAgfCB8IHwgfCAgfCB8ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHN1cHBvcnQgZHJpdmVzIDAgLSBvZmYKKyAgICB8IHwgfCB8ICB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAxR2J5dGVzICAgICAgMSAtIG9uCisgICAgfCB8IHwgfCAgfCB8CisgICAgfCB8IHwgfCAgfCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGJ1cyByZXNldCBvbiAgIDAgLSBvZmYKKyAgICB8IHwgfCB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3dlciBvbiAgICAgMSAtIG9uCisgICAgfCB8IHwgfCAgfAorICAgIHwgfCB8IHwgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBhY3RpdmUgbmVnICAgICAwIC0gb2ZmCisgICAgfCB8IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgLSBvbgorICAgIHwgfCB8IHwKKyAgICB8IHwgfCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gaW1tIHNlZWsgICAgICAgMCAtIG9mZgorICAgIHwgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC0gb24KKyAgICB8IHwgfAorICAgIHwgfCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzY2FuIGx1bnMgICAgICAwIC0gb2ZmCisgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgLSBvbgorICAgIHwgfAorICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSByZW1vdmFibGUgICAgICAwIC0gZGlzYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBCSU9TIGRldiAgICAxIC0gYm9vdCBkZXZpY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAtIGFsbAorCitIb3N0IGZsYWdzIDEgKGFkZHIgMHgxMDAwMDEsIDMzKQorCisgICAgeCB4IHggeCAgeCB4IHggeCAgeCB4IHggeCAgeCB4IHggeAorICAgICAgICAgICAgICAgfCB8IHwgICAgICAgICAgICAgfCB8IHwgCisgICAgICAgICAgICAgICB8IHwgfCAgICAgICAgICAgICAgLS0tLS0tLS0tIGJvb3QgZGVsYXkgICAgIDAgLSAgIDMgc2VjCisgICAgICAgICAgICAgICB8IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgLSAgIDUKKyAgICAgICAgICAgICAgIHwgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAtICAxMAorICAgICAgICAgICAgICAgfCB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzIC0gIDIwCisgICAgICAgICAgICAgICB8IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgLSAgMzAKKyAgICAgICAgICAgICAgIHwgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNSAtICA2MAorICAgICAgICAgICAgICAgfCB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2IC0gMTIwCisgICAgICAgICAgICAgICB8IHwgfAorICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBtYXggdGFnIGNtZHMgICAwIC0gIDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAtICA0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgLSAgOAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzIC0gMTYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCAtIDMyCisKK0hvc3QgZmxhZ3MgMiAoYWRkciAweDEwMDAxMCwgMzQpCisKKyAgICB4IHggeCB4ICB4IHggeCB4ICB4IHggeCB4ICB4IHggeCB4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLSBGMi9GNiBlbmFibGUgICAwIC0gb2ZmID8/PworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC0gb24gID8/PworCitjaGVja3N1bSAoYWRkciAweDExMTExMSkKKworY2hlY2tzdW0gPSAweDEyMzQgLSAoc3VtIGFkZHIgMC02MykKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitkZWZhdWx0IG52cmFtIGRhdGE6CisKKzB4MDAzNyAweDAwMDAgMHgwMDM3IDB4MDAwMCAweDAwMzcgMHgwMDAwIDB4MDAzNyAweDAwMDAKKzB4MDAzNyAweDAwMDAgMHgwMDM3IDB4MDAwMCAweDAwMzcgMHgwMDAwIDB4MDAzNyAweDAwMDAKKzB4MDAzNyAweDAwMDAgMHgwMDM3IDB4MDAwMCAweDAwMzcgMHgwMDAwIDB4MDAzNyAweDAwMDAKKzB4MDAzNyAweDAwMDAgMHgwMDM3IDB4MDAwMCAweDAwMzcgMHgwMDAwIDB4MDAzNyAweDAwMDAgCisKKzB4MGYwNyAweDA0MDAgMHgwMDAxIDB4MDAwMCAweDAwMDAgMHgwMDAwIDB4MDAwMCAweDAwMDAKKzB4MDAwMCAweDAwMDAgMHgwMDAwIDB4MDAwMCAweDAwMDAgMHgwMDAwIDB4MDAwMCAweDAwMDAKKzB4MDAwMCAweDAwMDAgMHgwMDAwIDB4MDAwMCAweDAwMDAgMHgwMDAwIDB4MDAwMCAweDAwMDAKKzB4MDAwMCAweDAwMDAgMHgwMDAwIDB4MDAwMCAweDAwMDAgMHgwMDAwIDB4MDAwMCAweGZiYmMKKworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitFbmQgb2YgTGludXggU1lNLTIgZHJpdmVyIGRvY3VtZW50YXRpb24gZmlsZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL3Rtc2NzaW0udHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL3Rtc2NzaW0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlMDMyMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvdG1zY3NpbS50eHQKQEAgLTAsMCArMSw0NDMgQEAKK1RoZSB0bXNjc2ltIGRyaXZlcgorPT09PT09PT09PT09PT09PT09CisKKzEuIFB1cnBvc2UgYW5kIGhpc3RvcnkKKzIuIEluc3RhbGxhdGlvbgorMy4gRmVhdHVyZXMKKzQuIENvbmZpZ3VyYXRpb24gdmlhIC9wcm9jL3Njc2kvdG1zY3NpbS8/Cis1LiBDb25maWd1cmF0aW9uIHZpYSBib290L21vZHVsZSBwYXJhbXMKKzYuIFBvdGVudGlhbCBpbXByb3ZlbWVudHMKKzcuIEJ1ZyByZXBvcnRzLCBkZWJ1Z2dpbmcgYW5kIHVwZGF0ZXMKKzguIEFja25vd2xlZGdlbWVudHMKKzkuIENvcHlyaWdodAorCisKKzEuIFB1cnBvc2UgYW5kIGhpc3RvcnkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSB0bXNjc2ltIGRyaXZlciBzdXBwb3J0cyBQQ0kgU0NTSSBIb3N0IEFkYXB0ZXJzIGJhc2VkIG9uIHRoZSBBTTUzQzk3NAorY2hpcC4gQU01M0M5NzQgYmFzZWQgU0NTSSBhZGFwdGVycyBpbmNsdWRlOiAKKyBUZWtyYW0gREMzOTAsIERDMzkwVAorIERhd2ljb250cm9sIDI5NzQKKyBRTG9naWMgRmFzdCEgUENJIEJhc2ljCisgc29tZSBvbi1ib2FyZCBhZGFwdGVycworKFRoaXMgaXMgbW9zdCBwcm9iYWJseSBub3QgYSBjb21wbGV0ZSBsaXN0KQorCitJdCBoYXMgb3JpZ2luYWxseSB3cml0dGVuIGJ5IEMuTC4gSHVhbmcgZnJvbSB0aGUgVGVrcmFtIGNvcnAuIHRvIHN1cHBvcnQgdGhlCitUZWtyYW0gREMzOTAoVCkgYWRhcHRlci4gVGhpcyBpcyB3aGVyZSB0aGUgbmFtZSBjb21lcyBmcm9tOiB0bSA9IFRla3JhbQorc2NzaSA9IFNDU0kgZHJpdmVyLCBtID0gQU1EICg/KSBhcyBvcHBvc2VkIHRvIHcgZm9yIHRoZSBEQzM5MFcvVS9GCisoTkNSNTNjOFg1LCBYPTIvNykgZHJpdmVyLiBZZXMsIHRoZXJlIHdhcyBhbHNvIGEgZHJpdmVyIGZvciB0aGUgbGF0dGVyLAordG1zY3Npdywgd2hpY2ggc3VwcG9ydGVkIERDMzkwVy9VL0YgYWRhcHRlcnMuIEl0J3Mgbm90IG1haW50YWluZWQgYW55IG1vcmUsCithcyB0aGUgbmNyNTNjOHh4IGlzIHBlcmZlY3RseSBzdXBwb3J0aW5nIHRoZXNlIGFkYXB0ZXJzIHNpbmNlIHNvbWUgdGltZS4KKworVGhlIGRyaXZlciBmaXJzdCBhcHBlYXJlZCBpbiBBcHJpbCAxOTk2LCBleGNsdXNpdmVseSBzdXBwb3J0ZWQgdGhlIERDMzkwIAorYW5kIGhhcyBiZWVuIGVuaGFuY2VkIHNpbmNlIHRoZW4gaW4gdmFyaW91cyBzdGVwcy4gSW4gTWF5IDE5OTggc3VwcG9ydCBmb3IgCitnZW5lcmFsIEFNNTNDOTc0IGJhc2VkIGFkYXB0ZXJzIGFuZCBzb21lIHBvc3NpYmlsaXRpZXMgdG8gY29uZmlndXJlIGl0IHdlcmUKK2FkZGVkLiBUaGUgbm9uLURDMzkwIHN1cHBvcnQgd29ya3MgYnkgYXNzdW1pbmcgc29tZSB2YWx1ZXMgZm9yIHRoZSBkYXRhCitub3JtYWxseSB0YWtlbiBmcm9tIHRoZSBEQzM5MCBFRVBST00uIFNlZSBiZWxvdyAoY2hhcHRlciA1KSBmb3IgZGV0YWlscy4KKworV2hlbiB1c2luZyB0aGUgREMzOTAsIHRoZSBjb25maWd1cmF0aW9uIGlzIHN0aWxsIGJlIGRvbmUgdXNpbmcgdGhlIERDMzkwCitCSU9TIHNldHVwLiBUaGUgREMzOTAgRUVQUk9NIGlzIHJlYWQgYW5kIHVzZWQgYnkgdGhlIGRyaXZlciwgYW55IGJvb3Qgb3IKK21vZHVsZSBwYXJhbWV0ZXJzIChjaGFwdGVyIDUpIGFyZSBpZ25vcmVkISBIb3dldmVyLCB5b3UgY2FuIGNoYW5nZSBzZXR0aW5ncworZHluYW1pY2FsbHksIGFzIGRlc2NyaWJlZCBpbiBjaGFwdGVyIDQuIAorCitGb3IgYSBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIHRoZSBkcml2ZXIncyBoaXN0b3J5LCBzZWUgdGhlIGZpcnN0IGxpbmVzCitvZiB0bXNjc2ltLmMuCitUaGUgbnVtYmVyaW5nIHNjaGVtZSBpc24ndCBjb25zaXN0ZW50LiBUaGUgZmlyc3QgdmVyc2lvbnMgd2VudCBmcm9tIDEuMDAgdG8KKzEuMTIsIHRoZW4gMS4yMGEgdG8gMS4yMHQuIEZpbmFsbHkgSSBkZWNpZGVkIHRvIHVzZSB0aGUgbmNyNTNjOHh4IHNjaGVtZS4gU28KK3RoZSBuZXh0IHJldmlzaW9ucyB3aWxsIGJlIDIuMGEgdG8gMi4wWCAoc3RhYmxlKSwgMi4xYSB0byAyLjFYIChleHBlcmltZW50YWwpLAorMi4yYSB0byAyLjJYIChzdGFibGUsIGFnYWluKSBldGMuIChYID0gYW55dGhpbmcgYmV0d2VlbiBhIGFuZCB6LikgSWYgSSBzZW5kCitmaXhlcyB0byBwZW9wbGUgZm9yIHRlc3RpbmcsIEkgY3JlYXRlIGludGVybWVkaWF0ZSB2ZXJzaW9ucyB3aXRoIGEgZGlnaXQgCithcHBlbmRlZCwgZS5nLiAyLjBjMy4KKworCisyLiBJbnN0YWxsYXRpb24KKy0tLS0tLS0tLS0tLS0tLQorSWYgeW91IGdvdCBhbnkgcmVjZW50IGtlcm5lbCB3aXRoIHRoaXMgZHJpdmVyIGFuZCBkb2N1bWVudCBpbmNsdWRlZCBpbgorbGludXgvZHJpdmVycy9zY3NpLCB5b3UgYmFzaWNhbGx5IGhhdmUgdG8gZG8gbm90aGluZyBzcGVjaWFsIHRvIHVzZSB0aGlzCitkcml2ZXIuIE9mIGNvdXJzZSB5b3UgaGF2ZSB0byBjaG9vc2UgdG8gY29tcGlsZSBTQ1NJIHN1cHBvcnQgYW5kIERDMzkwKFQpCitzdXBwb3J0IGludG8geW91ciBrZXJuZWwgb3IgYXMgbW9kdWxlIHdoZW4gY29uZmlndXJpbmcgeW91ciBrZXJuZWwgZm9yCitjb21waWxpbmcuCitORVc6IFlvdSBtYXkgYXMgd2VsbCBjb21waWxlIHRoaXMgbW9kdWxlIG91dHNpZGUgeW91ciBrZXJuZWwsIHVzaW5nIHRoZQorc3VwcGxpZWQgTWFrZWZpbGUuCisKKyBJZiB5b3UgZ290IGFuIG9sZCBrZXJuZWwgKHByZSAyLjEuMTI3LCBwcmUgMi4wLjM3cDEpIHdpdGggYW4gb2xkIHZlcnNpb24gb2YKKyB0aGlzIGRyaXZlcjogR2V0IGRjMzkwLTIxMTI1LTIwYi5kaWZmLmd6IG9yIGRjMzkwLTIwMzZwMjEtMjBiMS5kaWZmLmd6IGZyb20KKyBteSB3ZWIgcGFnZSBhbmQgYXBwbHkgdGhlIHBhdGNoLiBBcHBseSBmdXJ0aGVyIHBhdGNoZXMgdG8gdXBncmFkZSB0byB0aGUgCisgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIGRyaXZlci4KKworIElmIHlvdSB3YW50IHRvIGRvIGl0IG1hbnVhbGx5LCB5b3Ugc2hvdWxkIGNvcHkgdGhlIGZpbGVzIChkYzM5MC5oLAorIHRtc2NzaW0uaCwgdG1zY3NpbS5jLCBzY3NpaW9tLmMgYW5kIFJFQURNRS50bXNjc2ltKSBmcm9tIHRoaXMgZGlyZWN0b3J5IHRvCisgbGludXgvZHJpdmVycy9zY3NpLiBZb3UgaGF2ZSB0byByZWNvbXBpbGUgeW91ciBrZXJuZWwvbW9kdWxlIG9mIGNvdXJzZS4KKworIFlvdSBzaG91bGQgYXBwbHkgdGhlIHRocmVlIHBhdGNoZXMgaW5jbHVkZWQgaW4gZGMzOTAtMTIwLWtlcm5lbC5kaWZmCisgKEFwcGx5aW5nIHRoZW06IGNkIC91c3Ivc3JjOyBwYXRjaCAtcDAgPH4vZGMzOTAtMTIwLWtlcm5lbC5kaWZmKQorIFRoZSBwYXRjaGVzIGFyZSBhZ2FpbnN0IDIuMS4xMjUsIHNvIHlvdSBtaWdodCBoYXZlIHRvIG1hbnVhbGx5IHJlc29sdmUKKyByZWplY3Rpb25zIHdoZW4gYXBwbHlpbmcgdG8gYW5vdGhlciBrZXJuZWwgdmVyc2lvbi4KKworIFRoZSBwYXRjaGVzIHdpbGwgdXBkYXRlIHRoZSBrZXJuZWwgc3RhcnR1cCBjb2RlIHRvIGFsbG93IGJvb3QgcGFyYW1ldGVycyB0bworIGJlIHBhc3NlZCB0byB0aGUgZHJpdmVyLCB1cGRhdGUgdGhlIERvY3VtZW50YXRpb24gYW5kIGZpbmFsbHkgb2ZmZXIgeW91IHRoZQorIHBvc3NpYmlsaXR5IHRvIG9taXQgdGhlIG5vbi1EQzM5MCBwYXJ0cyBvZiB0aGUgZHJpdmVyLgorIChCeSBzZWxlY3RpbmcgIk9taXQgc3VwcG9ydCBmb3Igbm9uIERDMzkwIiB5b3UgYmFzaWNhbGx5IGRpc2FibGUgdGhlCisgZW11bGF0aW9uIG9mIGEgREMzOTAgRUVQUk9NIGZvciBub24gREMzOTAgYWRhcHRlcnMuIFRoaXMgc2F2ZXMgYSBmZXcgYnl0ZXMKKyBvZiBtZW1vcnkuKQorCitJZiB5b3UgZ290IGEgdmVyeSBvbGQga2VybmVsIHdpdGhvdXQgdGhlIHRtc2NzaW0gZHJpdmVyIChwcmUgMi4wLjMxKQorSSByZWNvbW1lbmQgdXBncmFkaW5nIHlvdXIga2VybmVsLiBIb3dldmVyLCBpZiB5b3UgZG9uJ3Qgd2FudCB0bywgcGxlYXNlCitjb250YWN0IG1lIHRvIGdldCB0aGUgYXBwcm9wcmlhdGUgcGF0Y2hlcy4KKworCitVcGdyYWRpbmcgYSBTQ1NJIGRyaXZlciBpcyBhbHdheXMgYSBkZWxpY2F0ZSB0aGluZyB0byBkby4gVGhlIDIuMCBkcml2ZXIgaGFzCitwcm92ZW4gc3RhYmxlIG9uIG1hbnkgc3lzdGVtcywgYnV0IGl0J3Mgc3RpbGwgYSBnb29kIGlkZWEgdG8gdGFrZSBzb21lCitwcmVjYXV0aW9ucy4gSW4gYW4gaWRlYWwgd29ybGQgeW91IHdvdWxkIGhhdmUgYSBmdWxsIGJhY2t1cCBvZiB5b3VyIGRpc2tzLgorVGhlIHdvcmxkIGlzbid0IGlkZWFsIGFuZCBtb3N0IHBlb3BsZSBkb24ndCBoYXZlIGZ1bGwgYmFja3VwcyAobWUgbmVpdGhlcikuCitTbyB0YWtlIGF0IGxlYXN0IHRoZSBmb2xsb3dpbmcgbWVhc3VyZXM6CisqIG1ha2UgeW91ciBrZXJuZWwgcmVtb3VudCB0aGUgRlMgcmVhZC1vbmx5IG9uIGRldGVjdGluZyBhbiBlcnJvcjoKKyAgdHVuZTJmcyAtZSByZW1vdW50LXJvIC9kZXYvc2Q/PworKiBoYXZlIGNvcGllcyBvZiB5b3VyIFNDU0kgZGlzaydzIHBhcnRpdGlvbiB0YWJsZXMgb24gc29tZSBzYWZlIGxvY2F0aW9uOgorICBkZCBpZj0vZGV2L3NkYSBvZj0vbW50L2Zsb3BweS9zZGEgYnM9NTEyIGNvdW50PTEKKyAgb3IganVzdCBwcmludCBpdCB3aXRoOgorICBmZGlzayAtbCB8IGxwcgorKiBtYWtlIHN1cmUgeW91IGFyZSBhYmxlIHRvIGJvb3QgTGludXggKGUuZy4gZnJvbSBmbG9wcHkgZGlzayB1c2luZyBJbml0UkQpCisgIGlmIHlvdXIgU0NTSSBkaXNrIGdldHMgY29ycnVwdGVkLiBZb3UgY2FuIHVzZSAKKyAgZnRwOi8vc3R1ZGVudC5waHlzaWsudW5pLWRvcnRtdW5kLmRlL3B1Yi9saW51eC9rZXJuZWwvYm9vdGRpc2suZ3oKKworT25lIG1vcmUgd2FybmluZzogSSB1c2VkIHRvIG92ZXJjbG9jayBteSBQQ0kgYnVzIHRvIDQxLjY3IE1Iei4gTXkgVGVrcmFtCitEQzM5MEYgKFN5bTUzYzg3NSkgYWNjZXB0ZWQgdGhpcyBhcyB3ZWxsIGFzIG15IE1pbGxlbm5pdW0uIEJ1dCB0aGUgQW01M0M5NzQKK3Byb2R1Y2VkIGVycm9ycyBhbmQgc3RhcnRlZCB0byBjb3JydXB0IG15IGRpc2tzLiBTbyBkb24ndCBkbyB0aGF0ISBBIDM3LjUwCitNSHogUENJIGJ1cyB3b3JrcyBmb3IgbWUsIHRob3VnaCwgYnV0IEkgZG9uJ3QgcmVjb21tZW5kIHVzaW5nIGhpZ2hlciBjbG9ja3MKK3RoYW4gdGhlIDMzLjMzIE1IeiBiZWluZyBpbiB0aGUgUENJIHNwZWMuCisKKworMy5GZWF0dXJlcworLS0tLS0tLS0tLQorLSBTQ1NJCisgKiBUYWdnZWQgY29tbWFuZCBxdWV1ZWluZworICogU3luYyBzcGVlZCB1cCB0byAxMCBNSHoKKyAqIERpc2Nvbm5lY3Rpb24KKyAqIE11bHRpcGxlIExVTnMKKworLSBHZW5lcmFsIC8gTGludXggaW50ZXJmYWNlCisgKiBTdXBwb3J0IGZvciB1cCB0byA0IEFNNTNDOTc0IGFkYXB0ZXJzLgorICogREMzOTAgRUVQUk9NIHVzYWdlIG9yIGJvb3QvbW9kdWxlIHBhcmFtcworICogSW5mb3JtYXRpb24gdmlhIGNhdCAvcHJvYy9zY3NpL3Rtc2NzaW0vPworICogRHluYW1pY2FsbHkgY29uZmlndXJhYmxlIGJ5IHdyaXRpbmcgdG8gL3Byb2Mvc2NzaS90bXNjc2ltLz8KKyAqIER5bmFtaWMgYWxsb2NhdGlvbiBvZiByZXNvdXJjZXMKKyAqIFNNUCBzdXBwb3J0OiBMb2NraW5nIG9uIGlvX3JlcXVlc3QgbG9jayAoTGludXggMi4xLzIuMikgb3IgYWRhcHRlciAKKyAgICBzcGVjaWZpYyBsb2NrcyAoTGludXggMi41PykKKyAqIFVuaWZvcm0gc291cmNlIGNvZGUgZm9yIExpbnV4LTIueC55CisgKiBTdXBwb3J0IGZvciBkeW4uIGFkZGl0aW9uL3JlbW92YWwgb2YgZGV2aWNlcyB2aWEgYWRkL3JlbW92ZS1zaW5nbGUtZGV2aWNlCisgICAoVHJ5OiBlY2hvICJzY3NpIGFkZC1zaW5nbGUtZGV2aWNlIEMgQiBUIFUiID4vcHJvYy9zY3NpL3Njc2kgCisgICAgQyA9IENvbnRyb2xsZXIsIEIgPSBCdXMsIFQgPSBUYXJnZXQgU0NTSSBJRCwgVSA9IFVuaXQgU0NTSSBMVU4uKSAKKyAgICBVc2Ugd2l0aCBjYXJlIQorICogVHJ5IHRvIHVzZSB0aGUgcGFydGl0aW9uIHRhYmxlIGZvciB0aGUgZGV0ZXJtaW5hdGlvbiBvZiB0aGUgbWFwcGluZworCisKKzQuIENvbmZpZ3VyYXRpb24gdmlhIC9wcm9jL3Njc2kvdG1zY3NpbS8/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRmlyc3Qgb2YgYWxsIGxvb2sgYXQgdGhlIG91dHB1dCBvZiAvcHJvYy9zY3NpL3Rtc2NzaW0vPyBieSB0eXBpbmcKKyBjYXQgL3Byb2Mvc2NzaS90bXNjc2ltLz8KK1RoZSAiPyIgc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IHRoZSBTQ1NJIGhvc3QgbnVtYmVyLiAoVGhlIHNoZWxsIG1pZ2h0IGRvIHRoaXMKK2ZvciB5b3UuKQorWW91IHdpbGwgc2VlIHNvbWUgaW5mbyByZWdhcmRpbmcgdGhlIGFkYXB0ZXIgYW5kLCBhdCB0aGUgZW5kLCBhIGxpc3Rpbmcgb2YKK3RoZSBhdHRhY2hlZCBkZXZpY2VzIGFuZCB0aGVpciBzZXR0aW5ncy4KKworSGVyZSdzIGFuIGV4YW1wbGU6CitnYXJsb2ZmQGt1cnQ6L2hvbWUvZ2FybG9mZiA+IGNhdCAvcHJvYy9zY3NpL3Rtc2NzaW0vMAorVGVrcmFtIERDMzkwL0FNNTNDOTc0IFBDSSBTQ1NJIEhvc3QgQWRhcHRlciwgRHJpdmVyIFZlcnNpb24gMi4wZTcgMjAwMC0xMS0yOAorU0NTSSBIb3N0IE5yIDEsIEFNNTNDOTc0IEFkYXB0ZXIgTnIgMAorSU9Qb3J0QmFzZSAweGIwMDAsIElSUSAxMAorTWF4SUQgOCwgTWF4TFVOIDgsIEFkYXB0ZXJJRCA2LCBTZWxUaW1lb3V0IDI1MCBtcywgRGVsYXlSZXNldCAxIHMKK1RhZ01heE51bSAxNiwgU3RhdHVzIDB4MDAsIEFDQkZsYWcgMHgwMCwgR2xpdGNoRWF0ZXIgMjQgbnMKK1N0YXRpc3RpY3M6IENtbmRzIDE0NzAxNjUsIENtbmRzIG5vdCBzZW50IGRpcmVjdGx5IDAsIE91dCBvZiBTUkIgY29uZHMgMAorICAgICAgICAgICAgTG9zdCBhcmJpdHJhdGlvbnMgNTg3LCAgU2VsLiBjb25uZWN0ZWQgMCwgQ29ubmVjdGVkOiBObworTnIgb2YgYXR0YWNoZWQgZGV2aWNlczogNCwgTnIgb2YgRENCczogNAorTWFwIG9mIGF0dGFjaGVkIExVTnM6IDAxIDAwIDAwIDAzIDAxIDAwIDAwIDAwCitJZHggSUQgTFVOIFBydHkgU3luYyBEc0NuIFNuZFMgVGFnUSBOZWdvUGVyaW9kIFN5bmNTcGVlZCBTeW5jT2ZmcyBNYXhDbWQKKzAwICAwMCAgMDAgIFllcyAgWWVzICBZZXMgIFllcyAgWWVzICAgMTAwIG5zICAgIDEwLjAgTSAgICAgIDE1ICAgICAgMTYKKzAxICAwMyAgMDAgIFllcyAgWWVzICBZZXMgIFllcyAgTm8gICAgMTAwIG5zICAgIDEwLjAgTSAgICAgIDE1ICAgICAgMDEKKzAyICAwMyAgMDEgIFllcyAgWWVzICBZZXMgIFllcyAgTm8gICAgMTAwIG5zICAgIDEwLjAgTSAgICAgIDE1ICAgICAgMDEKKzAzICAwNCAgMDAgIFllcyAgWWVzICBZZXMgIFllcyAgTm8gICAgMTAwIG5zICAgIDEwLjAgTSAgICAgIDE1ICAgICAgMDEKKworTm90ZSB0aGF0IHRoZSBzZXR0aW5ncyBNYXhJRCBhbmQgTWF4TFVOIGFyZSBub3QgemVyby0gYnV0IG9uZS1iYXNlZCwgd2hpY2gKK21lYW5zIHRoYXQgYSBzZXR0aW5nIE1heExVTj00LCB3aWxsIHJlc3VsdCBpbiB0aGUgc3VwcG9ydCBvZiBMVU5zIDAuLjMuIFRoaXMKK2lzIHNvbWVob3cgaW5jb252ZW5pZW50LCBidXQgdGhlIHdheSB0aGUgbWlkLWxldmVsIFNDU0kgY29kZSBleHBlY3RzIGl0IHRvIGJlLgorCitBQ0IgYW5kIERDQiBhcmUgYWNyb255bXMgZm9yIEFkYXB0ZXIgQ29udHJvbCBCbG9jayBhbmQgRGV2aWNlIENvbnRyb2wgQmxvY2suCitUaGVzZSBhcmUgZGF0YSBzdHJ1Y3R1cmVzIG9mIHRoZSBkcml2ZXIgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUKK2FkYXB0ZXIgYW5kIHRoZSBjb25uZWN0ZWQgU0NTSSBkZXZpY2VzIHJlc3BlY3RpdmVseS4KKworSWR4IGlzIHRoZSBkZXZpY2UgaW5kZXggKGp1c3QgYSBjb25zZWN1dGl2ZSBudW1iZXIgZm9yIHRoZSBkcml2ZXIpLCBJRCBhbmQKK0xVTiBhcmUgdGhlIFNDU0kgSUQgYW5kIExVTiwgUHJ0eSBtZWFucyBQYXJpdHkgY2hlY2tpbmcsIFN5bmMgc3luY2hyb25vdXMKK25lZ290aWF0aW9uLCBEc0NuIERpc2Nvbm5lY3Rpb24sIFNuZFMgU2VuZCBTdGFydCBjb21tYW5kIG9uIHN0YXJ0dXAgKG5vdAordXNlZCBieSB0aGUgZHJpdmVyKSBhbmQgVGFnUSBUYWdnZWQgQ29tbWFuZCBRdWV1ZWluZy4gTmVnb1BlcmlvZCBhbmQKK1N5bmNTcGVlZCBhcmUgc29tZWhvdyByZWR1bmRhbnQsIGJlY2F1c2UgdGhleSBhcmUgcmVjaXByb2NhbCB2YWx1ZXMgCisoMSAvIDExMiBucyA9IDguOSBNSHopLiBBdCBsZWFzdCBpbiB0aGVvcnkuIFRoZSBkcml2ZXIgaXMgYWJsZSB0byBhZGp1c3QgdGhlCitOZWdvUGVyaW9kIG1vcmUgYWNjdXJhdGUgKDRucykgdGhhbiB0aGUgU3luY1NwZWVkICgxIC8gMjVucykuIEkgZG9uJ3Qga25vdworaWYgY2VydGFpbiBkZXZpY2VzIHdpbGwgaGF2ZSBwcm9ibGVtcyB3aXRoIHRoaXMgZGlzY3JlcGFuY3kuIE1heC4gc3BlZWQgaXMKKzEwIE1IeiBjb3JyZXNwLiB0byBhIG1pbi4gTmVnb1BlcmlvZCBvZiAxMDAgbnMuIAorKFRoZSBkcml2ZXIgYWxsb3dzIHNsaWdodGx5IGhpZ2hlciBzcGVlZHMgaWYgdGhlIGRldmljZXMgKFVsdHJhIFNDU0kpIGFjY2VwdAoraXQsIGJ1dCB0aGF0J3Mgb3V0IG9mIGFkYXB0ZXIgc3BlYywgb24geW91ciBvd24gcmlzayBhbmQgdW5saWtlbHkgdG8gaW1wcm92ZQorcGVyZm9ybWFuY2UuIFlvdSdyZSBsaWtlbHkgdG8gY3Jhc2ggeW91ciBkaXNrcy4pIAorU3luY09mZnMgaXMgdGhlIG9mZnNldCB1c2VkIGZvciBzeW5jaHJvbm91cyBuZWdvdGlhdGlvbnM7IG1heC4gaXMgMTUuIAorVGhlIGxhc3QgdmFsdWVzIGFyZSBvbmx5IHNob3duLCBpZiBTeW5jIGlzIGVuYWJsZWQuIChOZWdvUGVyaW9kIGlzIHN0aWxsCitkaXNwbGF5ZWQgaW4gYnJhY2tldHMgdG8gc2hvdyB0aGUgdmFsdWVzIHdoaWNoIHdpbGwgYmUgdXNlZCBhZnRlciBlbmFibGluZworU3luYy4pCitNYXhDbWQgaXN0IHRoZSBudW1iZXIgb2YgY29tbWFuZHMgKD10YWdzKSB3aGljaCBjYW4gYmUgcHJvY2Vzc2VkIGF0IHRoZSBzYW1lCit0aW1lIGJ5IHRoZSBkZXZpY2UuCisKK0lmIHlvdSB3YW50IHRvIGNoYW5nZSBhIHNldHRpbmcsIHlvdSBjYW4gZG8gdGhhdCBieSB3cml0aW5nIHRvCisvcHJvYy9zY3NpL3Rtc2NzaW0vPy4gQmFzaWNhbGx5IHlvdSBoYXZlIHRvIGltaXRhdGUgdGhlIG91dHB1dCBvZiBkcml2ZXIuCisoRG9uJ3QgdXNlIHRoZSBicmFja2V0cyBmb3IgTmVnb1BlcmlvZCBvbiBTeW5jIGRpc2FibGVkIGRldmljZXMuKQorWW91IGRvbid0IGhhdmUgdG8gY2FyZSBhYm91dCBjYXBpdGFsaXNhdGlvbi4gVGhlIGRyaXZlciB3aWxsIGFjY2VwdCBzcGFjZSwKK3RhYiwgY29tbWEsID0gYW5kIDogYXMgc2VwYXJhdG9ycy4KKworVGhlcmUgYXJlIHRocmVlIGtpbmRzIG9mIGNoYW5nZXM6IAorCisoMSkgQ2hhbmdlIGRyaXZlciBzZXR0aW5nczogCisgICAgWW91IHR5cGUgdGhlIG5hbWVzIG9mIHRoZSBwYXJhbWV0ZXJzIGFuZCB0aGUgcGFyYW1zIGZvbGxvd2luZyBpdC4KKyAgICBFeGFtcGxlOgorICAgICBlY2hvICJNYXhMVU49OCBzZWx0aW1lb3V0IDIwMCIgPi9wcm9jL3Njc2kvdG1zY3NpbS8wCisKKyAgICBOb3RlIHRoYXQgeW91IGNhbiBvbmx5IGNoYW5nZSBNYXhJRCwgTWF4TFVOLCBBZGFwdGVySUQsIFNlbFRpbWVPdXQsCisgICAgVGFnTWF4TnVtLCBBQ0JGbGFnLCBHbGl0Y2hFYXRlciBhbmQgRGVsYXlSZXNldC4gRG9uJ3QgY2hhbmdlIEFDQkZsYWcKKyAgICB1bmxlc3MgeW91IHdhbnQgdG8gc2VlIHdoYXQgaGFwcGVucywgaWYgdGhlIGRyaXZlciBoYW5ncy4KKworKDIpIENoYW5nZSBkZXZpY2Ugc2V0dGluZ3M6IFlvdSB3cml0ZSBhIGNvbmZpZyBsaW5lIHRvIHRoZSBkcml2ZXIuIFRoZSBOcgorICAgIG11c3QgbWF0Y2ggdGhlIElEIGFuZCBMVU4gZ2l2ZW4uIElmIHlvdSBnaXZlICItIiBhcyBwYXJhbWV0ZXIsIGl0IGlzCisgICAgaWdub3JlZCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgc2V0dGluZyB3b24ndCBiZSBjaGFuZ2VkLiAKKyAgICBZb3UgY2FuIHVzZSAieSIgb3IgIm4iIGluc3RlYWQgb2YgIlllcyIgYW5kICJObyIgaWYgeW91IHdhbnQgdG8uCisgICAgWW91IGRvbid0IG5lZWQgdG8gc3BlY2lmeSBhIGZ1bGwgbGluZS4gVGhlIGRyaXZlciBhdXRvbWF0aWNhbGx5IHBlcmZvcm1zCisgICAgYW4gSU5RVUlSWSBvbiB0aGUgZGV2aWNlIGlmIG5lY2Vzc2FyeSB0byBjaGVjayBpZiBpdCBpcyBjYXBhYmxlIHRvIG9wZXJhdGUKKyAgICB3aXRoIHRoZSBnaXZlbiBzZXR0aW5ncyAoU3luYywgVGFnUSkuCisgICAgRXhhbXBsZXM6CisgICAgIGVjaG8gIjAgMCAwIHkgeSB5IC0geSAtIDEwICIgPi9wcm9jL3Njc2kvdG1zY3NpbS8wCisgICAgIGVjaG8gIjMgNSAwIHkgbiB5ICIgPi9wcm9jL3Njc2kvdG1zY3NpbS8wCisKKyAgICBUbyBnaXZlIGEgc2hvcnQgZXhwbGFuYXRpb24gb2YgdGhlIGZpcnN0IGV4YW1wbGU6IAorICAgIFRoZSBmaXJzdCB0aHJlZSBudW1iZXJzLCAiMCAwIDAiIChEZXZpY2UgaW5kZXggMCwgU0NTSSBJRCAwLCBTQ1NJIExVTiAwKSwKKyAgICBzZWxlY3QgdGhlIGRldmljZSB0byB3aGljaCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnMgYXBwbHkuIE5vdGUgdGhhdCBpdAorICAgIHdvdWxkIGJlIHN1ZmZpY2llbnQgdG8gdXNlIHRoZSBpbmRleCBvciBib3RoIFNDU0kgSUQgYW5kIExVTiwgYnV0IEkgY2hvc2UKKyAgICB0byByZXF1aXJlIGFsbCB0aHJlZSB0byBoYXZlIGEgc3ludGF4IHNpbWlsYXIgdG8gdGhlIG91dHB1dC4KKyAgICBUaGUgZm9sbG93aW5nICJ5IHkgeSAtIHkiIGVuYWJsZXMgUGFyaXR5IGNoZWNraW5nLCBlbmFibGVzIFN5bmNocm9ub3VzCisgICAgdHJhbnNmZXJzLCBEaXNjb25uZWN0aW9uLCBsZWF2ZXMgU2VuZCBTdGFydCAobm90IHVzZWQpIHVudG91Y2hlZCBhbmQKKyAgICBlbmFibGVzIFRhZ2dlZCBDb21tYW5kIFF1ZXVlaW5nIGZvciB0aGUgc2VsZWN0ZWQgZGV2aWNlLiBUaGUgIi0iIHNraXBzCisgICAgdGhlIE5lZ290aWF0aW9uIFBlcmlvZCBzZXR0aW5nIGJ1dCB0aGUgIjEwIiBzZXRzIHRoZSBtYXggc3luYy4gc3BlZWQgdG8KKyAgICAxMCBNSHouIEl0J3MgdXNlbGVzcyB0byBzcGVjaWZ5IGJvdGggTmVnb1BlcmlvZCBhbmQgU3luY1NwZWVkIGFzCisgICAgZGlzY3Vzc2VkIGFib3ZlLiBUaGUgdmFsdWVzIHVzZWQgaW4gdGhpcyBleGFtcGxlIHdpbGwgcmVzdWx0IGluIG1heGltdW0KKyAgICBwZXJmb3JtYW5jZS4KKworKDMpIFNwZWNpYWwgY29tbWFuZHM6IFlvdSBjYW4gZm9yY2UgYSBTQ1NJIGJ1cyByZXNldCwgYW4gSU5RVUlSWSBjb21tYW5kLCB0aGUKKyAgICByZW1vdmFsIG9yIHRoZSBhZGRpdGlvbiBvZiBhIGRldmljZSdzIERDQiBhbmQgYSBTQ1NJIHJlZ2lzdGVyIGR1bXAuCisgICAgVGhpcyBpcyBvbmx5IHVzZWQgZm9yIGRlYnVnZ2luZyB3aGVuIHlvdSBtZWV0IHByb2JsZW1zLiBUaGUgcGFyYW1ldGVyIG9mCisgICAgdGhlIElOUVVJUlkgYW5kIFJFTU9WRSBjb21tYW5kcyBpcyB0aGUgZGV2aWNlIGluZGV4IGFzIHNob3duIGJ5IHRoZQorICAgIG91dHB1dCBvZiAvcHJvYy9zY3NpL3Rtc2NzaW0vPyBpbiB0aGUgZGV2aWNlIGxpc3RpbmcgaW4gdGhlIGZpcnN0IGNvbHVtbgorICAgIChJZHgpLiBBREQgdGFrZXMgdGhlIFNDU0kgSUQgYW5kIExVTi4KKyAgICBFeGFtcGxlczoKKyAgICAgZWNobyAicmVzZXQiID4vcHJvYy9zY3NpL3Rtc2NzaW0vMAorICAgICBlY2hvICJpbnF1aXJ5IDEiID4vcHJvYy9zY3NpL3Rtc2NzaW0vMAorICAgICBlY2hvICJyZW1vdmUgMiIgPi9wcm9jL3Njc2kvdG1zY3NpbS8xCisgICAgIGVjaG8gImFkZCAyIDMiID4vcHJvYy9zY3NpL3Rtc2NzaW0vPworICAgICBlY2hvICJkdW1wIiA+L3Byb2Mvc2NzaS90bXNjc2ltLzAKKworICAgIE5vdGUgdGhhdCB5b3Ugd2lsbCBtZWV0IHByb2JsZW1zIHdoZW4geW91IFJFTU9WRSBhIGRldmljZSdzIERDQiB3aXRoIHRoZQorICAgIHJlbW92ZSBjb21tYW5kIGlmIGl0IGNvbnRhaW5zIHBhcnRpdGlvbnMgd2hpY2ggYXJlIG1vdW50ZWQuIE9ubHkgdXNlIGl0CisgICAgYWZ0ZXIgdW5tb3VudGluZyBpdHMgcGFydGl0aW9ucywgdGVsbGluZyB0aGUgU0NTSSBtaWQtbGV2ZWwgY29kZSB0bworICAgIHJlbW92ZSBpdCAoc2NzaSByZW1vdmUtc2luZ2xlLWRldmljZSkgYW5kIHlvdSByZWFsbHkgbmVlZCBhIGZldyBieXRlcyBvZgorICAgIG1lbW9yeS4KKyAgICBUaGUgQUREIGNvbW1hbmQgYWxsb3dzIHlvdSB0byBjb25maWd1cmUgYSBkZXZpY2UgYmVmb3JlIHlvdSB0ZWxsIHRoZQorICAgIG1pZC1sZXZlbCBjb2RlIHRvIHRyeSBkZXRlY3Rpb24uCisKKworSSdkIHN1Z2dlc3QgcmV2aWV3aW5nIHRoZSBvdXRwdXQgb2YgL3Byb2Mvc2NzaS90bXNjc2ltLz8gYWZ0ZXIgY2hhbmdpbmcKK3NldHRpbmdzIHRvIHNlZSBpZiBldmVyeXRoaW5nIGNoYW5nZWQgYXMgcmVxdWVzdGVkLgorCisKKzUuIENvbmZpZ3VyYXRpb24gdmlhIGJvb3QvbW9kdWxlIHBhcmFtZXRlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1dpdGggdGhlIERDMzkwLCB0aGUgZHJpdmVyIHJlYWRzIGl0cyBFRVBST00gc2V0dGluZ3MgYW5kIHRyaWVzIHRvIHVzZSB0aGVtLgorQnV0IHlvdSBtYXkgd2FudCB0byBvdmVycmlkZSB0aGUgc2V0dGluZ3MgcHJpb3IgdG8gYmVpbmcgYWJsZSB0byBjaGFuZ2UgdGhlCitkcml2ZXIgY29uZmlndXJhdGlvbiB2aWEgL3Byb2Mvc2NzaS90bXNjc2ltLz8uCitJZiB5b3UgZG8gaGF2ZSBhbm90aGVyIEFNNTNDOTc0IGJhc2VkIGFkYXB0ZXIsIHRoYXQncyBldmVuIHRoZSBvbmx5Citwb3NzaWJpbGl0eSB0byBhZGp1c3Qgc2V0dGluZ3MgYmVmb3JlIHlvdSBhcmUgYWJsZSB0byB3cml0ZSB0byB0aGUKKy9wcm9jL3Njc2kvdG1zY3NpbS8/IHBzZXVkby1maWxlLCBlLmcuIGlmIHlvdSB3YW50IHRvIHVzZSBhbm90aGVyIAorYWRhcHRlciBJRCB0aGFuIDcuICAKKyhCVFcsIHRoZSBsb2cgbWVzc2FnZSAiREMzOTA6IE5vIEVFUFJPTSBmb3VuZCEiIGlzIG5vcm1hbCB3aXRob3V0IGEgREMzOTAuKQorRm9yIHRoaXMgcHVycG9zZSwgeW91IGNhbiBwYXNzIG9wdGlvbnMgdG8gdGhlIGRyaXZlciBiZWZvcmUgaXQgaXMgaW5pdGlhbGlzZWQKK2J5IHVzaW5nIGtlcm5lbCBvciBtb2R1bGUgcGFyYW1ldGVycy4gU2VlIGxpbG8oOCkgb3IgbW9kcHJvYmUoMSkgbWFudWFsCitwYWdlcyBvbiBob3cgdG8gcGFzcyBwYXJhbXMgdG8gdGhlIGtlcm5lbCBvciBhIG1vZHVsZS4KK1tOT1RFOiBGb3JtZXJseSwgaXQgd2FzIG5vdCBwb3NzaWJsZSB0byBvdmVycmlkZSB0aGUgRUVQUk9NIHN1cHBsaWVkCisgc2V0dGluZ3Mgb2YgdGhlIERDMzkwIHdpdGggY21kIGxpbmUgcGFyYW1ldGVycy4gVGhpcyBoYXMgY2hhbmdlZCBzaW5jZQorIDIuMGU3XQorCitUaGUgc3ludGF4IG9mIHRoZSBwYXJhbXMgaXMgbXVjaCBzaG9ydGVyIHRoYW4gdGhlIHN5bnRheCBvZiB0aGUgL3Byb2MvLi4uCitpbnRlcmZhY2UuIFRoaXMgbWFrZXMgaXQgYSBsaXR0bGUgYml0IG1vcmUgZGlmZmljdWx0IHRvIHVzZS4gSG93ZXZlciwgbG9uZworcGFyYW1ldGVyIGxpbmVzIGhhdmUgdGhlIHJpc2sgdG8gYmUgbWlzaW50ZXJwcmV0ZWQgYW5kIHRoZSBsZW5ndGggb2Yga2VybmVsCitwYXJhbWV0ZXJzIGlzIGxpbWl0ZWQuCisKK0FzIHRoZSBzdXBwb3J0IGZvciBub24tREMzOTAgYWRhcHRlcnMgd29ya3MgYnkgc2ltdWxhdGluZyB0aGUgdmFsdWVzIG9mIHRoZQorREMzOTAgRUVQUk9NLCB0aGUgc2V0dGluZ3MgYXJlIGdpdmVuIGluIGEgREMzOTAgQklPUycgd2F5LgorCitIZXJlJ3MgdGhlIHN5bnRheDoKK3Rtc2NzaW09QWRhcHRJRCxTcGRJZHgsRGV2TW9kZSxBZGFwdE1vZGUsVGFnZ2VkQ21uZHMsRGVsYXlSZXNldAorCitFYWNoIG9mIHRoZSBwYXJhbWV0ZXJzIGlzIGEgbnVtYmVyLCBjb250YWluaW5nIHRoZSBkZXNjcmliZWQgaW5mb3JtYXRpb246CisKKyogQWRhcHRJRDogVGhlIFNDU0kgSUQgb2YgdGhlIGhvc3QgYWRhcHRlci4gTXVzdCBiZSBpbiB0aGUgcmFuZ2UgMC4uNworICBEZWZhdWx0IGlzIDcuCisKKyogU3BkSWR4OiBUaGUgaW5kZXggb2YgdGhlIG1heGltdW0gc3BlZWQgYXMgaW4gdGhlIERDMzkwIEJJT1MuIFRoZSB2YWx1ZXMKKyAgMC4uNyBtZWFuIDEwLCA4LjAsIDYuNywgNS43LCA1LjAsIDQuMCwgMy4xIGFuZCAyIE1IeiByZXNwLiBEZWZhdWx0IGlzCisgIDAgKDEwLjAgTUh6KS4KKworKiBEZXZNb2RlIGlzIGEgYml0IG1hcHBlZCB2YWx1ZSBkZXNjcmliaW5nIHRoZSBwZXItZGV2aWNlIGZlYXR1cmVzLiBJdAorICBhcHBsaWVzIHRvIGFsbCBkZXZpY2VzLiAoU3luYywgRGlzYyBhbmQgVGFnUSB3aWxsIG9ubHkgYXBwbHksIGlmIHRoZQorICBkZXZpY2Ugc3VwcG9ydHMgaXQuKSBUaGUgbWVhbmluZyBvZiB0aGUgYml0cyAoKiA9IGRlZmF1bHQpOgorCisgICBCaXQgVmFsKGhleCkgVmFsKGRlYykgIE1lYW5pbmcKKyAgICowCSAweDAxCSAgICAxCSAgUGFyaXR5IGNoZWNrCisgICAqMQkgMHgwMgkgICAgMgkgIFN5bmNocm9ub3VzIE5lZ290aWF0aW9uCisgICAqMgkgMHgwNAkgICAgNAkgIERpc2Nvbm5lY3Rpb24KKyAgICozCSAweDA4CSAgICA4CSAgU2VuZCBTdGFydCBjb21tYW5kIG9uIHN0YXJ0dXAuIChOb3QgdXNlZCkKKyAgICo0CSAweDEwCSAgIDE2CSAgVGFnZ2VkIENvbW1hbmQgUXVldWVpbmcKKworICBBcyB1c3VhbCwgdGhlIGRlc2lyZWQgdmFsdWUgaXMgb2J0YWluZWQgYnkgYWRkaW5nIHRoZSB3YW50ZWQgdmFsdWVzLiBJZgorICB5b3Ugd2FudCB0byBlbmFibGUgYWxsIHZhbHVlcywgZS5nLiwgeW91IHdvdWxkIHVzZSAzMSgweDFmKS4gRGVmYXVsdCBpcyAzMS4KKworKiBBZGFwdE1vZGUgaXMgYSBiaXQgbWFwcGVkIHZhbHVlIGRlc2NyaWJpbmcgdGhlIGVuYWJsZWQgYWRhcHRlciBmZWF0dXJlcy4KKworICAgQml0IFZhbChoZXgpIFZhbChkZWMpICBNZWFuaW5nCisgICAqMAkgMHgwMQkgICAgMQkgIFN1cHBvcnQgbW9yZSB0aGFuIHR3byBkcml2ZXMuIChOb3QgdXNlZCkKKyAgICoxCSAweDAyCSAgICAyCSAgVXNlIERPUyBjb21wYXRpYmxlIG1hcHBpbmcgZm9yIEhEcyBncmVhdGVyIHRoYW4gMUdCLgorICAgKjIJIDB4MDQJICAgIDQJICBSZXNldCBTQ1NJIEJ1cyBvbiBzdGFydHVwLgorICAgKjMJIDB4MDgJICAgIDgJICBBY3RpdmUgTmVnYXRpb246IEltcHJvdmVzIFNDU0kgQnVzIG5vaXNlIGltbXVuaXR5LgorICAgIDQJIDB4MTAJICAgMTYJICBJbW1lZGlhdGUgcmV0dXJuIG9uIEJJT1Mgc2VlayBjb21tYW5kLiAoTm90IHVzZWQpCisgKCopNQkgMHgyMAkgICAzMgkgIENoZWNrIGZvciBMVU5zID49IDEuCisgIAorKiBUYWdnZWRDbW5kcyBpcyBhIG51bWJlciBpbmRpY2F0aW5nIHRoZSBtYXhpbXVtIG51bWJlciBvZiBUYWdnZWQgQ29tbWFuZHMuCisgIEl0IGlzIHRoZSBiaW5hcnkgbG9nYXJpdGhtIC0gMSBvZiB0aGUgYWN0dWFsIG51bWJlci4gTWF4IGlzIDQgKDMyKS4KKyAgIFZhbHVlICBOdW1iZXIgb2YgVGFnZ2VkIENvbW1hbmRzCisgICAgIDAJCSAyCisgICAgIDEJCSA0CisgICAgIDIJCSA4CisgICAgKjMJCTE2CisgICAgIDQJCTMyCisKKyogRGVsYXlSZXNldCBpcyB0aGUgdGltZSBpbiBzZWNvbmRzIChtaW51cyAwLjVzKSwgdGhlIGFkYXB0ZXIgd2FpdHMsIGFmdGVyIGEKKyAgYnVzIHJlc2V0LiBEZWZhdWx0IGlzIDEgKGNvcnJlc3AuIHRvIDEuNXMpLgorCitFeGFtcGxlOgorIG1vZHByb2JlIHRtc2NzaW0gdG1zY3NpbT02LDIsMzEKK3dvdWxkIHNldCB0aGUgYWRhcHRlciBJRCB0byA2LCBtYXguIHNwZWVkIHRvIDYuNyBNSHosIGVuYWJsZSBhbGwgZGV2aWNlCitmZWF0dXJlcyBhbmQgbGVhdmUgdGhlIGFkYXB0ZXIgZmVhdHVyZXMsIHRoZSBudW1iZXIgb2YgVGFnZ2VkIENvbW1hbmRzCithbmQgdGhlIERlbGF5IGFmdGVyIGEgcmVzZXQgdG8gdGhlIGRlZmF1bHRzLgorCitBcyB5b3UgY2FuIHNlZSwgeW91IGRvbid0IG5lZWQgdG8gc3BlY2lmeSBhbGwgb2YgdGhlIHNpeCBwYXJhbXMuCitJZiB5b3Ugd2FudCB2YWx1ZXMgdG8gYmUgaWdub3JlZCAoaS5lLiB0aGUgRUVwcm9tIHNldHRpbmdzIG9yIHRoZSBkZWZhdWx0cword2lsbCBiZSB1c2VkKSwgeW91IG1heSBwYXNzIC0yIChub3QgMCEpIGF0IHRoZSBjb3JyZXNwb25kaW5nIHBvc2l0aW9uLgorCitUaGUgZGVmYXVsdHMgKDcsMCwzMSwxNSwzLDEpIGFyZSBhZ2dyZXNzaXZlIHRvIGFsbG93IGdvb2QgcGVyZm9ybWFuY2UuIFlvdQorY2FuIHVzZSB0bXNjc2ltPTcsMCwzMSw2Myw0LDAgZm9yIG1heGltdW0gcGVyZm9ybWFuY2UsIGlmIHlvdXIgU0NTSSBjaGFpbgorYWxsb3dzIGl0LiBJZiB5b3UgbWVldCBwcm9ibGVtcywgeW91IGNhbiB1c2UgdG1zY3NpbT0tMSB3aGljaCBpcyBhIHNob3J0Y3V0Citmb3IgdG1zY3NpbT03LDQsOSwxNSwyLDEwLgorCisKKzYuIFBvdGVudGlhbCBpbXByb3ZlbWVudHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK01vc3Qgb2YgdGhlIGludGVuZGVkIHdvcmsgb24gdGhlIGRyaXZlciBoYXMgYmVlbiBkb25lLiBIZXJlIGFyZSBhIGZldyBpZGVhcwordG8gZnVydGhlciBpbXByb3ZlIGl0cyB1c2FiaWxpdHk6CisKKyogQ2xlYW5seSBzZXBhcmF0ZSBwZXItVGFyZ2V0IGFuZCBwZXItTFVOIHByb3BlcnRpZXMgKERDQikKKyogTW9yZSBpbnRlbGxpZ2VudCBhYm9ydCgpIHJvdXRpbmUKKyogVXNlIG5ld19laCBjb2RlIChMaW51eC0yLjErKQorKiBIYXZlIHRoZSBtaWQtbGV2ZWwgKE1MKSBjb2RlIChhbmQgbm90IHRoZSBkcml2ZXIpIGhhbmRsZSBtb3JlIG9mIHRoZQorICB2YXJpb3VzIGNvbmRpdGlvbnMuCisqIENvbW1hbmQgcXVldWVpbmcgaW4gdGhlIGRyaXZlcjogRWxpbWluYXRlIFF1ZXJ5IGxpc3QgYW5kIHVzZSBNTCBpbnN0ZWFkLgorKiBNb3JlIHVzZXIgZnJpZW5kbHkgYm9vdC9tb2R1bGUgcGFyYW0gc3ludGF4CisKK0Z1cnRoZXIgaW52ZXN0aWdhdGlvbiBvbiB0aGVzZSBwcm9ibGVtczoKKworKiBEcml2ZXIgaGFuZ3Mgd2l0aCBzeW5jIHJlYWRjZGRhICh4Y2Ryb2FzdCkgKG1vc3QgcHJvYmFibHkgVklBIFBDSSBlcnJvcikKKworS25vd24gcHJvYmxlbXM6IAorUGxlYXNlIHNlZSBodHRwOi8vd3d3LmdhcmxvZmYuZGUva3VydC9saW51eC9kYzM5MC9wcm9ibGVtcy5odG1sCisKKyogQ2hhbmdpbmcgdGhlIHBhcmFtZXRlcnMgb2YgbXVsdGktbHVuIGJ5IHRoZSB0bXNjc2ltLz8gaW50ZXJmYWNlIHdpbGwKKyAgY2F1c2UgcHJvYmxlbXMsIGNhdXNlIHRoZXNlIHNldHRpbmdzIGFyZSBtb3N0bHkgcGVyIFRhcmdldCBhbmQgbm90IHBlciBMVU4KKyAgYW5kIHNob3VsZCBiZSB1cGRhdGVkIGFjY29yZGluZ2x5LiBUbyBiZSBmaXhlZCBmb3IgMi4wZDI0LgorKiBDRFJzIChlZyBZYW0gQ1JXNDQxNikgbm90IHJlY29nbml6ZWQsIGJlY2F1c2Ugc29tZSBidWdneSBkZXZpY2VzIGRvbid0IAorICByZWNvdmVyIGZyb20gYSBTQ1NJIHJlc2V0IGluIHRpbWUuIFVzZSBhIGhpZ2hlciBkZWxheSBvciBkb24ndCBpc3N1ZQorICBhIFNDU0kgYnVzIHJlc2V0IG9uIGRyaXZlciBpbml0aWFsaXphdGlvbi4gU2VlIHByb2JsZW1zIHBhZ2UuCisgIEZvciB0aGUgQ1JXNDQxNlMsIHRoaXMgc2VlbXMgdG8gYmUgc29sdmVkIHdpdGggZmlybXdhcmUgMS4wZyAocmVwb3J0ZWQgYnkgCisgIEplYW4tWXZlcyBCYXJiaWVyKS4KKyogVEVBQyBDRC01MzJTIG5vdCBiZWluZyByZWNvZ25pemVkLiAoV29ya3Mgd2l0aCAxLjExKS4KKyogU2Nhbm5lcnMgKGVnLiBBc3RyYSBVTUFYIDEyMjBTKSBkb24ndCB3b3JrOiBEaXNhYmxlIFN5bmMgTmVnb3RpYXRpb24uCisgIElmIHRoaXMgZG9lcyBub3QgaGVscCwgdHJ5IGVjaG8gIklOUVVJUlkgdCIgPi9wcm9jL3Njc2kvdG1zY3NpbS8/ICh0CisgIHJlcGxhY2VkIGJ5IHRoZSBkZXYgaW5kZXggb2YgeW91ciBzY2FubmVyKS4gWW91IG1heSB0cnkgdG8gcmVzZXQgeW91ciBTQ1NJCisgIGJ1cyBhZnRlcndhcmRzIChlY2hvICJSRVNFVCIgPi9wcm9jL3Njc2kvdG1zY3NpbS8/KS4KKyAgVGhlIHByb2JsZW0gc2VlbXMgdG8gYmUgc29sdmVkIGFzIG9mIDIuMGQxOCwgdGhhbmtzIHRvIEFuZHJlYXMgUmljay4KKyogSWYgdGhlcmUgaXMgYSB2YWxpZCBwYXJ0aXRpb24gdGFibGUsIHRoZSBkcml2ZXIgd2lsbCB1c2UgaXQgZm9yIGRldGVybWluaW5nCisgIHRoZSBtYXBwaW5nLiBJZiB0aGVyZSdzIG5vbmUsIGEgcmVhc29uYWJsZSBtYXBwaW5nIChTeW1iaW9zLWxpa2UpIHdpbGwgYmUKKyAgYXNzdW1lZC4gT3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMgbWF5IG5vdCBsaWtlIHRoaXMgbWFwcGluZywgdGhvdWdoCisgIGl0J3MgY29uc2lzdGVudCB3aXRoIHRoZSBCSU9TJyBiZWhhdmlvdXIuIE9sZCBEQzM5MCBkcml2ZXJzIGlnbm9yZWQgdGhlCisgIHBhcnRpdGlvbiB0YWJsZSBhbmQgdXNlZCBhIEgvUyA9IDY0LzMyIG9yIDI1NS82MyB0cmFuc2xhdGlvbi4gU28gaWYgeW91CisgIHdhbnQgdG8gYmUgY29tcGF0aWJsZSB0byB0aG9zZSwgdXNlIHRoaXMgb2xkIG1hcHBpbmcgd2hlbiBjcmVhdGluZworICBwYXJ0aXRpb24gdGFibGVzLiBFdmVuIHdvcnNlLCBvbiBib290dXAgdGhlIERDMzkwIG1pZ2h0IGNvbXBsYWluIGlmIG90aGVyCisgIG1hcHBpbmdzIGFyZSBmb3VuZCwgc28gYXV0byByZWJvb3RpbmcgbWF5IGZhaWwuCisqIEluIHNvbWUgc2l0dWF0aW9ucywgdGhlIGRyaXZlciB3aWxsIGdldCBzdHVjayBpbiBhbiBhYm9ydCBsb29wLiBUaGlzIGlzIGEKKyAgYmFkIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIE1pZC1MYXllciBvZiBMaW51eCcgU0NTSSBjb2RlIGFuZCB0aGUgZHJpdmVyLgorICBUcnkgdG8gZGlzYWJsZSBEc0NuLCBpZiB5b3UgbWVldCB0aGlzIHByb2JsZW0uIFBsZWFzZSBjb250YWN0IG1lIGZvcgorICBmdXJ0aGVyIGRlYnVnZ2luZy4KKworCis3LiBCdWcgcmVwb3J0cywgZGVidWdnaW5nIGFuZCB1cGRhdGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitXaGVuZXZlciB5b3UgaGF2ZSBwcm9ibGVtcyB3aXRoIHRoZSBkcml2ZXIsIHlvdSBhcmUgaW52aXRlZCB0byBhc2sgdGhlCithdXRob3IgZm9yIGhlbHAuIEhvd2V2ZXIsIEknZCBzdWdnZXN0IHJlYWRpbmcgdGhlIGRvY3MgYW5kIHRyeWluZyB0byBzb2x2ZQordGhlIHByb2JsZW0geW91cnNlbGYsIGZpcnN0LiAKK0lmIHlvdSBmaW5kIHNvbWV0aGluZywgd2hpY2ggeW91IGJlbGlldmUgdG8gYmUgYSBidWcsIHBsZWFzZSByZXBvcnQgaXQgdG8gbWUuIAorUGxlYXNlIGFwcGVuZCB0aGUgb3V0cHV0IG9mIC9wcm9jL3Njc2kvc2NzaSwgL3Byb2Mvc2NzaS90bXNjc2ltLz8gYW5kCittYXliZSB0aGUgREMzOTAgbG9nIG1lc3NhZ2VzIHRvIHRoZSByZXBvcnQuIAorCitCdWcgcmVwb3J0cyBzaG91bGQgYmUgc2VuZCB0byBtZSAoS3VydCBHYXJsb2ZmIDxkYzM5MEBnYXJsb2ZmLmRlPikgYXMgd2VsbAorYXMgdG8gdGhlIGxpbnV4LXNjc2kgbGlzdCAoPGxpbnV4LXNjc2lAdmdlci5rZXJuZWwub3JnPiksIGFzIHNvbWV0aW1lcyBidWdzCithcmUgY2F1c2VkIGJ5IHRoZSBTQ1NJIG1pZC1sZXZlbCBjb2RlLgorCitJIHdpbGwgYXNrIHlvdSBmb3Igc29tZSBtb3JlIGRldGFpbHMgYW5kIHByb2JhYmx5IEkgd2lsbCBhbHNvIGFzayB5b3UgdG8KK2VuYWJsZSBzb21lIG9mIHRoZSBERUJVRyBvcHRpb25zIGluIHRoZSBkcml2ZXIgKHRtc2NzaW0uYzpEQzM5MF9ERUJVR1hYWAorZGVmaW5lcykuIFRoZSBkcml2ZXIgd2lsbCBwcm9kdWNlIHNvbWUgZGF0YSBmb3IgdGhlIHN5c2xvZyBmYWNpbGl0eSB0aGVuLgorQmV3YXJlOiBJZiB5b3VyIHN5c2xvZyBnZXRzIHdyaXR0ZW4gdG8gYSBTQ1NJIGRpc2sgY29ubmVjdGVkIHRvIHlvdXIKK0FNNTNDOTc0LCB0aGUgbG9nZ2luZyBtaWdodCBwcm9kdWNlIGxvZyBvdXRwdXQgYWdhaW4sIGFuZCB5b3UgbWlnaHQgZW5kCitoYXZpbmcgeW91ciBib3ggc3BlbmRpbmcgbW9zdCBvZiBpdHMgdGltZSBkb2luZyB0aGUgbG9nZ2luZy4KKworVGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBkcml2ZXIgY2FuIGJlIGZvdW5kIGF0OgorIGh0dHA6Ly93d3cuZ2FybG9mZi5kZS9rdXJ0L2xpbnV4L2RjMzkwLworIGZ0cDovL2Z0cC5zdXNlLmNvbS9wdWIvcGVvcGxlL2dhcmxvZmYvbGludXgvZGMzOTAvCisKKworOC4gQWNrbm93bGVkZ2VtZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhhbmtzIHRvIExpbnVzIFRvcnZhbGRzLCBBbGFuIENveCwgdGhlIEZTRiBwZW9wbGUsIHRoZSBYRnJlZTg2IHRlYW0gYW5kIAorYWxsIHRoZSBvdGhlcnMgZm9yIHRoZSB3b25kZXJmdWwgT1MgYW5kIHNvZnR3YXJlLgorVGhhbmtzIHRvIEMuTC4gSHVhbmcgYW5kIFBoaWxpcCBHaWFuZyAoVGVrcmFtKSBmb3IgdGhlIGluaXRpYWwgZHJpdmVyCityZWxlYXNlIGFuZCBzdXBwb3J0LgorVGhhbmtzIHRvIERvdWcgTGVkZm9yZCwgR8OpcmFyZCBSb3VkaWVyIGZvciBzdXBwb3J0IHdpdGggU0NTSSBjb2RpbmcuCitUaGFua3MgdG8gYSBsb3Qgb2YgcGVvcGxlIChlc3BlYy4gQ2hpYWtpIElzaGlrYXdhLCBBbmRyZWFzIEhhdW1lciwgSHViZXJ0IAorVG9ubmVhdSkgZm9yIGludGVuc2l2ZWx5IHRlc3RpbmcgdGhlIGRyaXZlciAoYW5kIGV2ZW4gcmlza2luZyBkYXRhIGxvc3MKK2RvaW5nIHRoaXMgZHVyaW5nIGVhcmx5IHJldmlzaW9ucykuCitSZWNlbnRseSwgU3VTRSBHbWJILCBOdWVybmJlcmcsIEZSRywgaGFzIGJlZW4gcGF5aW5nIG1lIGZvciB0aGUgZHJpdmVyCitkZXZlbG9wbWVudCBhbmQgbWFpbnRlbmFuY2UuIFNwZWNpYWwgdGhhbmtzIQorCisKKzkuIENvcHlyaWdodAorLS0tLS0tLS0tLS0tCisgVGhpcyBkcml2ZXIgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5ICAgCisgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgorIElmIHlvdSB3YW50IHRvIHVzZSBhbnkgbGF0ZXIgdmVyc2lvbiBvZiB0aGUgR05VIEdQTCwgeW91IHdpbGwgcHJvYmFibHkKKyBiZSBhbGxvd2VkIHRvLCBidXQgeW91IGhhdmUgdG8gYXNrIG1lIGFuZCBUZWtyYW0gPGVyaWNoQHRla3JhbS5jb20udHc+CisgYmVmb3JlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitXcml0dGVuIGJ5IEt1cnQgR2FybG9mZiA8a3VydEBnYXJsb2ZmLmRlPiAxOTk4LzA2LzExCitMYXN0IHVwZGF0ZWQgMjAwMC8xMS8yOCwgZHJpdmVyIHJldmlzaW9uIDIuMGU3CiskSWQ6IFJFQURNRS50bXNjc2ltLHYgMi4yNS4yLjcgMjAwMC8xMi8yMCAwMTowNzoxMiBnYXJsb2ZmIEV4cCAkCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvdWZzLnR4dCBiL0RvY3VtZW50YXRpb24vc2NzaS91ZnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxYTYxNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvdWZzLnR4dApAQCAtMCwwICsxLDEzMyBAQAorICAgICAgICAgICAgICAgICAgICAgICBVbml2ZXJzYWwgRmxhc2ggU3RvcmFnZQorICAgICAgICAgICAgICAgICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PQorCisKK0NvbnRlbnRzCistLS0tLS0tLQorCisxLiBPdmVydmlldworMi4gVUZTIEFyY2hpdGVjdHVyZSBPdmVydmlldworICAyLjEgQXBwbGljYXRpb24gTGF5ZXIKKyAgMi4yIFVGUyBUcmFuc3BvcnQgUHJvdG9jb2woVVRQKSBsYXllcgorICAyLjMgVUZTIEludGVyY29ubmVjdChVSUMpIExheWVyCiszLiBVRlNIQ0QgT3ZlcnZpZXcKKyAgMy4xIFVGUyBjb250cm9sbGVyIGluaXRpYWxpemF0aW9uCisgIDMuMiBVVFAgVHJhbnNmZXIgcmVxdWVzdHMKKyAgMy4zIFVGUyBlcnJvciBoYW5kbGluZworICAzLjQgU0NTSSBFcnJvciBoYW5kbGluZworCisKKzEuIE92ZXJ2aWV3CistLS0tLS0tLS0tLQorCitVbml2ZXJzYWwgRmxhc2ggU3RvcmFnZShVRlMpIGlzIGEgc3RvcmFnZSBzcGVjaWZpY2F0aW9uIGZvciBmbGFzaCBkZXZpY2VzLgorSXQgaXMgYWltZWQgdG8gcHJvdmlkZSBhIHVuaXZlcnNhbCBzdG9yYWdlIGludGVyZmFjZSBmb3IgYm90aAorZW1iZWRkZWQgYW5kIHJlbW92YWJsZSBmbGFzaCBtZW1vcnkgYmFzZWQgc3RvcmFnZSBpbiBtb2JpbGUKK2RldmljZXMgc3VjaCBhcyBzbWFydCBwaG9uZXMgYW5kIHRhYmxldCBjb21wdXRlcnMuIFRoZSBzcGVjaWZpY2F0aW9uCitpcyBkZWZpbmVkIGJ5IEpFREVDIFNvbGlkIFN0YXRlIFRlY2hub2xvZ3kgQXNzb2NpYXRpb24uIFVGUyBpcyBiYXNlZAorb24gTUlQSSBNLVBIWSBwaHlzaWNhbCBsYXllciBzdGFuZGFyZC4gVUZTIHVzZXMgTUlQSSBNLVBIWSBhcyB0aGUKK3BoeXNpY2FsIGxheWVyIGFuZCBNSVBJIFVuaXBybyBhcyB0aGUgbGluayBsYXllci4KKworVGhlIG1haW4gZ29hbHMgb2YgVUZTIGlzIHRvIHByb3ZpZGUsCisgKiBPcHRpbWl6ZWQgcGVyZm9ybWFuY2U6CisgICBGb3IgVUZTIHZlcnNpb24gMS4wIGFuZCAxLjEgdGhlIHRhcmdldCBwZXJmb3JtYW5jZSBpcyBhcyBmb2xsb3dzLAorICAgU3VwcG9ydCBmb3IgR2VhcjEgaXMgbWFuZGF0b3J5IChyYXRlIEE6IDEyNDhNYnBzLCByYXRlIEI6IDE0NTcuNk1icHMpCisgICBTdXBwb3J0IGZvciBHZWFyMiBpcyBvcHRpb25hbCAocmF0ZSBBOiAyNDk2TWJwcywgcmF0ZSBCOiAyOTE1LjJNYnBzKQorICAgRnV0dXJlIHZlcnNpb24gb2YgdGhlIHN0YW5kYXJkLAorICAgR2VhcjMgKHJhdGUgQTogNDk5Mk1icHMsIHJhdGUgQjogNTgzMC40TWJwcykKKyAqIExvdyBwb3dlciBjb25zdW1wdGlvbgorICogSGlnaCByYW5kb20gSU9QcyBhbmQgbG93IGxhdGVuY3kKKworCisyLiBVRlMgQXJjaGl0ZWN0dXJlIE92ZXJ2aWV3CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1VGUyBoYXMgYSBsYXllcmVkIGNvbW11bmljYXRpb24gYXJjaGl0ZWN0dXJlIHdoaWNoIGlzIGJhc2VkIG9uIFNDU0kKK1NBTS01IGFyY2hpdGVjdHVyYWwgbW9kZWwuCisKK1VGUyBjb21tdW5pY2F0aW9uIGFyY2hpdGVjdHVyZSBjb25zaXN0cyBvZiBmb2xsb3dpbmcgbGF5ZXJzLAorCisyLjEgQXBwbGljYXRpb24gTGF5ZXIKKworICBUaGUgQXBwbGljYXRpb24gbGF5ZXIgaXMgY29tcG9zZWQgb2YgVUZTIGNvbW1hbmQgc2V0IGxheWVyKFVDUyksCisgIFRhc2sgTWFuYWdlciBhbmQgRGV2aWNlIG1hbmFnZXIuIFRoZSBVRlMgaW50ZXJmYWNlIGlzIGRlc2lnbmVkIHRvIGJlCisgIHByb3RvY29sIGFnbm9zdGljLCBob3dldmVyIFNDU0kgaGFzIGJlZW4gc2VsZWN0ZWQgYXMgYSBiYXNlbGluZQorICBwcm90b2NvbCBmb3IgdmVyc2lvbnMgMS4wIGFuZCAxLjEgb2YgVUZTIHByb3RvY29sICBsYXllci4KKyAgVUZTIHN1cHBvcnRzIHN1YnNldCBvZiBTQ1NJIGNvbW1hbmRzIGRlZmluZWQgYnkgU1BDLTQgYW5kIFNCQy0zLgorICAqIFVDUzogSXQgaGFuZGxlcyBTQ1NJIGNvbW1hbmRzIHN1cHBvcnRlZCBieSBVRlMgc3BlY2lmaWNhdGlvbi4KKyAgKiBUYXNrIG1hbmFnZXI6IEl0IGhhbmRsZXMgdGFzayBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBkZWZpbmVkIGJ5IHRoZQorICAgICBVRlMgd2hpY2ggYXJlIG1lYW50IGZvciBjb21tYW5kIHF1ZXVlIGNvbnRyb2wuCisgICogRGV2aWNlIG1hbmFnZXI6IEl0IGhhbmRsZXMgZGV2aWNlIGxldmVsIG9wZXJhdGlvbnMgYW5kIGRldmljZQorICAgICBjb25maWd1cmF0aW9uIG9wZXJhdGlvbnMuIERldmljZSBsZXZlbCBvcGVyYXRpb25zIG1haW5seSBpbnZvbHZlCisgICAgIGRldmljZSBwb3dlciBtYW5hZ2VtZW50IG9wZXJhdGlvbnMgYW5kIGNvbW1hbmRzIHRvIEludGVyY29ubmVjdAorICAgICBsYXllcnMuIERldmljZSBsZXZlbCBjb25maWd1cmF0aW9ucyBpbnZvbHZlIGhhbmRsaW5nIG9mIHF1ZXJ5CisgICAgIHJlcXVlc3RzIHdoaWNoIGFyZSB1c2VkIHRvIG1vZGlmeSBhbmQgcmV0cmlldmUgY29uZmlndXJhdGlvbgorICAgICBpbmZvcm1hdGlvbiBvZiB0aGUgZGV2aWNlLgorCisyLjIgVUZTIFRyYW5zcG9ydCBQcm90b2NvbChVVFApIGxheWVyCisKKyAgVVRQIGxheWVyIHByb3ZpZGVzIHNlcnZpY2VzIGZvcgorICB0aGUgaGlnaGVyIGxheWVycyB0aHJvdWdoIFNlcnZpY2UgQWNjZXNzIFBvaW50cy4gVVRQIGRlZmluZXMgMworICBzZXJ2aWNlIGFjY2VzcyBwb2ludHMgZm9yIGhpZ2hlciBsYXllcnMuCisgICogVURNX1NBUDogRGV2aWNlIG1hbmFnZXIgc2VydmljZSBhY2Nlc3MgcG9pbnQgaXMgZXhwb3NlZCB0byBkZXZpY2UKKyAgICBtYW5hZ2VyIGZvciBkZXZpY2UgbGV2ZWwgb3BlcmF0aW9ucy4gVGhlc2UgZGV2aWNlIGxldmVsIG9wZXJhdGlvbnMKKyAgICBhcmUgZG9uZSB0aHJvdWdoIHF1ZXJ5IHJlcXVlc3RzLgorICAqIFVUUF9DTURfU0FQOiBDb21tYW5kIHNlcnZpY2UgYWNjZXNzIHBvaW50IGlzIGV4cG9zZWQgdG8gVUZTIGNvbW1hbmQKKyAgICBzZXQgbGF5ZXIoVUNTKSB0byB0cmFuc3BvcnQgY29tbWFuZHMuCisgICogVVRQX1RNX1NBUDogVGFzayBtYW5hZ2VtZW50IHNlcnZpY2UgYWNjZXNzIHBvaW50IGlzIGV4cG9zZWQgdG8gdGFzaworICAgIG1hbmFnZXIgdG8gdHJhbnNwb3J0IHRhc2sgbWFuYWdlbWVudCBmdW5jdGlvbnMuCisgIFVUUCB0cmFuc3BvcnRzIG1lc3NhZ2VzIHRocm91Z2ggVUZTIHByb3RvY29sIGluZm9ybWF0aW9uIHVuaXQoVVBJVSkuCisKKzIuMyBVRlMgSW50ZXJjb25uZWN0KFVJQykgTGF5ZXIKKworICBVSUMgaXMgdGhlIGxvd2VzdCBsYXllciBvZiBVRlMgbGF5ZXJlZCBhcmNoaXRlY3R1cmUuIEl0IGhhbmRsZXMKKyAgY29ubmVjdGlvbiBiZXR3ZWVuIFVGUyBob3N0IGFuZCBVRlMgZGV2aWNlLiBVSUMgY29uc2lzdHMgb2YKKyAgTUlQSSBVbmlQcm8gYW5kIE1JUEkgTS1QSFkuIFVJQyBwcm92aWRlcyAyIHNlcnZpY2UgYWNjZXNzIHBvaW50cworICB0byB1cHBlciBsYXllciwKKyAgKiBVSUNfU0FQOiBUbyB0cmFuc3BvcnQgVVBJVSBiZXR3ZWVuIFVGUyBob3N0IGFuZCBVRlMgZGV2aWNlLgorICAqIFVJT19TQVA6IFRvIGlzc3VlIGNvbW1hbmRzIHRvIFVuaXBybyBsYXllcnMuCisKKworMy4gVUZTSENEIE92ZXJ2aWV3CistLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIFVGUyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIGlzIGJhc2VkIG9uIExpbnV4IFNDU0kgRnJhbWV3b3JrLgorVUZTSENEIGlzIGEgbG93IGxldmVsIGRldmljZSBkcml2ZXIgd2hpY2ggYWN0cyBhcyBhbiBpbnRlcmZhY2UgYmV0d2VlbgorU0NTSSBNaWRsYXllciBhbmQgUENJZSBiYXNlZCBVRlMgaG9zdCBjb250cm9sbGVycy4KKworVGhlIGN1cnJlbnQgVUZTSENEIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIGZvbGxvd2luZyBmdW5jdGlvbmFsaXR5LAorCiszLjEgVUZTIGNvbnRyb2xsZXIgaW5pdGlhbGl6YXRpb24KKworICBUaGUgaW5pdGlhbGl6YXRpb24gbW9kdWxlIGJyaW5ncyBVRlMgaG9zdCBjb250cm9sbGVyIHRvIGFjdGl2ZSBzdGF0ZQorICBhbmQgcHJlcGFyZXMgdGhlIGNvbnRyb2xsZXIgdG8gdHJhbnNmZXIgY29tbWFuZHMvcmVzcG9uc2UgYmV0d2VlbgorICBVRlNIQ0QgYW5kIFVGUyBkZXZpY2UuCisKKzMuMiBVVFAgVHJhbnNmZXIgcmVxdWVzdHMKKworICBUcmFuc2ZlciByZXF1ZXN0IGhhbmRsaW5nIG1vZHVsZSBvZiBVRlNIQ0QgcmVjZWl2ZXMgU0NTSSBjb21tYW5kcworICBmcm9tIFNDU0kgTWlkbGF5ZXIsIGZvcm1zIFVQSVVzIGFuZCBpc3N1ZXMgdGhlIFVQSVVzIHRvIFVGUyBIb3N0CisgIGNvbnRyb2xsZXIuIEFsc28sIHRoZSBtb2R1bGUgZGVjb2RlcywgcmVzcG9uc2VzIHJlY2VpdmVkIGZyb20gVUZTCisgIGhvc3QgY29udHJvbGxlciBpbiB0aGUgZm9ybSBvZiBVUElVcyBhbmQgaW50aW1hdGVzIHRoZSBTQ1NJIE1pZGxheWVyCisgIG9mIHRoZSBzdGF0dXMgb2YgdGhlIGNvbW1hbmQuCisKKzMuMyBVRlMgZXJyb3IgaGFuZGxpbmcKKworICBFcnJvciBoYW5kbGluZyBtb2R1bGUgaGFuZGxlcyBIb3N0IGNvbnRyb2xsZXIgZmF0YWwgZXJyb3JzLAorICBEZXZpY2UgZmF0YWwgZXJyb3JzIGFuZCBVSUMgaW50ZXJjb25uZWN0IGxheWVyIHJlbGF0ZWQgZXJyb3JzLgorCiszLjQgU0NTSSBFcnJvciBoYW5kbGluZworCisgIFRoaXMgaXMgZG9uZSB0aHJvdWdoIFVGU0hDRCBTQ1NJIGVycm9yIGhhbmRsaW5nIHJvdXRpbmVzIHJlZ2lzdGVyZWQKKyAgd2l0aCBTQ1NJIE1pZGxheWVyLiBFeGFtcGxlcyBvZiBzb21lIG9mIHRoZSBlcnJvciBoYW5kbGluZyBjb21tYW5kcworICBpc3N1ZXMgYnkgU0NTSSBNaWRsYXllciBhcmUgQWJvcnQgdGFzaywgTHVuIHJlc2V0IGFuZCBob3N0IHJlc2V0LgorICBVRlNIQ0QgUm91dGluZXMgdG8gcGVyZm9ybSB0aGVzZSB0YXNrcyBhcmUgcmVnaXN0ZXJlZCB3aXRoCisgIFNDU0kgTWlkbGF5ZXIgdGhyb3VnaCAuZWhfYWJvcnRfaGFuZGxlciwgLmVoX2RldmljZV9yZXNldF9oYW5kbGVyIGFuZAorICAuZWhfaG9zdF9yZXNldF9oYW5kbGVyLgorCitJbiB0aGlzIHZlcnNpb24gb2YgVUZTSENEIFF1ZXJ5IHJlcXVlc3RzIGFuZCBwb3dlciBtYW5hZ2VtZW50CitmdW5jdGlvbmFsaXR5IGFyZSBub3QgaW1wbGVtZW50ZWQuCisKK1VGUyBTcGVjaWZpY2F0aW9ucyBjYW4gYmUgZm91bmQgYXQsCitVRlMgLSBodHRwOi8vd3d3LmplZGVjLm9yZy9zaXRlcy9kZWZhdWx0L2ZpbGVzL2RvY3MvSkVTRDIyMC5wZGYKK1VGU0hDSSAtIGh0dHA6Ly93d3cuamVkZWMub3JnL3NpdGVzL2RlZmF1bHQvZmlsZXMvZG9jcy9KRVNEMjIzLnBkZgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL3dkNzE5eC50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvd2Q3MTl4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODE2YjAyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL3dkNzE5eC50eHQKQEAgLTAsMCArMSwyMSBAQAorRHJpdmVyIGZvciBXZXN0ZXJuIERpZ2l0YWwgV0Q3MTkzLCBXRDcxOTcgYW5kIFdENzI5NiBTQ1NJIGNhcmRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGNhcmQgcmVxdWlyZXMgZmlybXdhcmUgdGhhdCBjYW4gYmUgY3V0IG91dCBvZiB0aGUgV2luZG93cyBOVCBkcml2ZXIgdGhhdAorY2FuIGJlIGRvd25sb2FkZWQgZnJvbSBXRCBhdDoKK2h0dHA6Ly9zdXBwb3J0LndkYy5jb20vcHJvZHVjdC9kb3dubG9hZC5hc3A/Z3JvdXBpZD04MDEmc2lkPTI3Jmxhbmc9ZW4KKworVGhlcmUgaXMgbm8gbGljZW5zZSBhbnl3aGVyZSBpbiB0aGUgZmlsZSBvciBvbiB0aGUgcGFnZSAtIHNvIHRoZSBmaXJtd2FyZQorcHJvYmFibHkgY2Fubm90IGJlIGFkZGVkIHRvIGxpbnV4LWZpcm13YXJlLgorCitUaGlzIHNjcmlwdCBkb3dubG9hZHMgYW5kIGV4dHJhY3RzIHRoZSBmaXJtd2FyZSwgY3JlYXRpbmcgd2Q3MTl4LXJpc2MuYmluIGFuZAorZDcxOXgtd2NzLmJpbiBmaWxlcy4gUHV0IHRoZW0gaW4gL2xpYi9maXJtd2FyZS8uCisKKyMhL2Jpbi9zaAord2dldCBodHRwOi8vc3VwcG9ydC53ZGMuY29tL2Rvd25sb2FkL2FyY2hpdmUvcGNpc2NzaS5leGUKK2xoYSB4aSBwY2lzY3NpLmV4ZSBwY2ktc2NzaS5leGUKK2xoYSB4aSBwY2ktc2NzaS5leGUgbnQvd2Q3Mjk2YS5zeXMKK3JtIHBjaS1zY3NpLmV4ZQorZGQgaWY9d2Q3Mjk2YS5zeXMgb2Y9d2Q3MTl4LXJpc2MuYmluIGJzPTEgc2tpcD01NzYwIGNvdW50PTE0MzM2CitkZCBpZj13ZDcyOTZhLnN5cyBvZj13ZDcxOXgtd2NzLmJpbiBicz0xIHNraXA9MjAwOTYgY291bnQ9NTE0CitybSB3ZDcyOTZhLnN5cwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zZWN1cml0eS8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vc2VjdXJpdHkvMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVjODJmZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2VjdXJpdHkvMDAtSU5ERVgKQEAgLTAsMCArMSwyNiBAQAorMDAtSU5ERVgKKwktIHRoaXMgZmlsZS4KK0xTTS50eHQKKwktIGRlc2NyaXB0aW9uIG9mIHRoZSBMaW51eCBTZWN1cml0eSBNb2R1bGUgZnJhbWV3b3JrLgorU0VMaW51eC50eHQKKwktIGhvdyB0byBnZXQgc3RhcnRlZCB3aXRoIHRoZSBTRUxpbnV4IHNlY3VyaXR5IGVuaGFuY2VtZW50LgorU21hY2sudHh0CisJLSBkb2N1bWVudGF0aW9uIG9uIHRoZSBTbWFjayBMaW51eCBTZWN1cml0eSBNb2R1bGUuCitZYW1hLnR4dAorCS0gZG9jdW1lbnRhdGlvbiBvbiB0aGUgWWFtYSBMaW51eCBTZWN1cml0eSBNb2R1bGUuCithcHBhcm1vci50eHQKKwktIGRvY3VtZW50YXRpb24gb24gdGhlIEFwcEFybW9yIHNlY3VyaXR5IGV4dGVuc2lvbi4KK2NyZWRlbnRpYWxzLnR4dAorCS0gZG9jdW1lbnRhdGlvbiBhYm91dCBjcmVkZW50aWFscyBpbiBMaW51eC4KK2tleXMtZWNyeXB0ZnMudHh0CisJLSBkZXNjcmlwdGlvbiBvZiB0aGUgZW5jcnlwdGlvbiBrZXlzIGZvciB0aGUgZWNyeXB0ZnMgZmlsZXN5c3RlbS4KK2tleXMtcmVxdWVzdC1rZXkudHh0CisJLSBkZXNjcmlwdGlvbiBvZiB0aGUga2VybmVsIGtleSByZXF1ZXN0IHNlcnZpY2UuCitrZXlzLXRydXN0ZWQtZW5jcnlwdGVkLnR4dAorCS0gaW5mbyBvbiB0aGUgVHJ1c3RlZCBhbmQgRW5jcnlwdGVkIGtleXMgaW4gdGhlIGtlcm5lbCBrZXkgcmluZyBzZXJ2aWNlLgora2V5cy50eHQKKwktIGRlc2NyaXB0aW9uIG9mIHRoZSBrZXJuZWwga2V5IHJldGVudGlvbiBzZXJ2aWNlLgordG9tb3lvLnR4dAorCS0gZG9jdW1lbnRhdGlvbiBvbiB0aGUgVE9NT1lPIExpbnV4IFNlY3VyaXR5IE1vZHVsZS4KK0lNQS10ZW1wbGF0ZXMudHh0CisJLSBkb2N1bWVudGF0aW9uIG9uIHRoZSB0ZW1wbGF0ZSBtYW5hZ2VtZW50IG1lY2hhbmlzbSBmb3IgSU1BLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9JTUEtdGVtcGxhdGVzLnR4dCBiL0RvY3VtZW50YXRpb24vc2VjdXJpdHkvSU1BLXRlbXBsYXRlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM5YjVkYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2VjdXJpdHkvSU1BLXRlbXBsYXRlcy50eHQKQEAgLTAsMCArMSw4OCBAQAorICAgICAgICAgICAgICAgICAgICAgICBJTUEgVGVtcGxhdGUgTWFuYWdlbWVudCBNZWNoYW5pc20KKworCis9PT09IElOVFJPRFVDVElPTiA9PT09CisKK1RoZSBvcmlnaW5hbCAnaW1hJyB0ZW1wbGF0ZSBpcyBmaXhlZCBsZW5ndGgsIGNvbnRhaW5pbmcgdGhlIGZpbGVkYXRhIGhhc2gKK2FuZCBwYXRobmFtZS4gVGhlIGZpbGVkYXRhIGhhc2ggaXMgbGltaXRlZCB0byAyMCBieXRlcyAobWQ1L3NoYTEpLgorVGhlIHBhdGhuYW1lIGlzIGEgbnVsbCB0ZXJtaW5hdGVkIHN0cmluZywgbGltaXRlZCB0byAyNTUgY2hhcmFjdGVycy4KK1RvIG92ZXJjb21lIHRoZXNlIGxpbWl0YXRpb25zIGFuZCB0byBhZGQgYWRkaXRpb25hbCBmaWxlIG1ldGFkYXRhLCBpdCBpcworbmVjZXNzYXJ5IHRvIGV4dGVuZCB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIElNQSBieSBkZWZpbmluZyBhZGRpdGlvbmFsCit0ZW1wbGF0ZXMuIEZvciBleGFtcGxlLCBpbmZvcm1hdGlvbiB0aGF0IGNvdWxkIGJlIHBvc3NpYmx5IHJlcG9ydGVkIGFyZQordGhlIGlub2RlIFVJRC9HSUQgb3IgdGhlIExTTSBsYWJlbHMgZWl0aGVyIG9mIHRoZSBpbm9kZSBhbmQgb2YgdGhlIHByb2Nlc3MKK3RoYXQgaXMgYWNjZXNzaW5nIGl0LgorCitIb3dldmVyLCB0aGUgbWFpbiBwcm9ibGVtIHRvIGludHJvZHVjZSB0aGlzIGZlYXR1cmUgaXMgdGhhdCwgZWFjaCB0aW1lCithIG5ldyB0ZW1wbGF0ZSBpcyBkZWZpbmVkLCB0aGUgZnVuY3Rpb25zIHRoYXQgZ2VuZXJhdGUgYW5kIGRpc3BsYXkKK3RoZSBtZWFzdXJlbWVudHMgbGlzdCB3b3VsZCBpbmNsdWRlIHRoZSBjb2RlIGZvciBoYW5kbGluZyBhIG5ldyBmb3JtYXQKK2FuZCwgdGh1cywgd291bGQgc2lnbmlmaWNhbnRseSBncm93IG92ZXIgdGhlIHRpbWUuCisKK1RoZSBwcm9wb3NlZCBzb2x1dGlvbiBzb2x2ZXMgdGhpcyBwcm9ibGVtIGJ5IHNlcGFyYXRpbmcgdGhlIHRlbXBsYXRlCittYW5hZ2VtZW50IGZyb20gdGhlIHJlbWFpbmluZyBJTUEgY29kZS4gVGhlIGNvcmUgb2YgdGhpcyBzb2x1dGlvbiBpcyB0aGUKK2RlZmluaXRpb24gb2YgdHdvIG5ldyBkYXRhIHN0cnVjdHVyZXM6IGEgdGVtcGxhdGUgZGVzY3JpcHRvciwgdG8gZGV0ZXJtaW5lCit3aGljaCBpbmZvcm1hdGlvbiBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIG1lYXN1cmVtZW50IGxpc3Q7IGEgdGVtcGxhdGUKK2ZpZWxkLCB0byBnZW5lcmF0ZSBhbmQgZGlzcGxheSBkYXRhIG9mIGEgZ2l2ZW4gdHlwZS4KKworTWFuYWdpbmcgdGVtcGxhdGVzIHdpdGggdGhlc2Ugc3RydWN0dXJlcyBpcyB2ZXJ5IHNpbXBsZS4gVG8gc3VwcG9ydAorYSBuZXcgZGF0YSB0eXBlLCBkZXZlbG9wZXJzIGRlZmluZSB0aGUgZmllbGQgaWRlbnRpZmllciBhbmQgaW1wbGVtZW50Cit0d28gZnVuY3Rpb25zLCBpbml0KCkgYW5kIHNob3coKSwgcmVzcGVjdGl2ZWx5IHRvIGdlbmVyYXRlIGFuZCBkaXNwbGF5CittZWFzdXJlbWVudCBlbnRyaWVzLiBEZWZpbmluZyBhIG5ldyB0ZW1wbGF0ZSBkZXNjcmlwdG9yIHJlcXVpcmVzCitzcGVjaWZ5aW5nIHRoZSB0ZW1wbGF0ZSBmb3JtYXQgKGEgc3RyaW5nIG9mIGZpZWxkIGlkZW50aWZpZXJzIHNlcGFyYXRlZAorYnkgdGhlICd8JyBjaGFyYWN0ZXIpIHRocm91Z2ggdGhlICdpbWFfdGVtcGxhdGVfZm10JyBrZXJuZWwgY29tbWFuZCBsaW5lCitwYXJhbWV0ZXIuIEF0IGJvb3QgdGltZSwgSU1BIGluaXRpYWxpemVzIHRoZSBjaG9zZW4gdGVtcGxhdGUgZGVzY3JpcHRvcgorYnkgdHJhbnNsYXRpbmcgdGhlIGZvcm1hdCBpbnRvIGFuIGFycmF5IG9mIHRlbXBsYXRlIGZpZWxkcyBzdHJ1Y3R1cmVzIHRha2VuCitmcm9tIHRoZSBzZXQgb2YgdGhlIHN1cHBvcnRlZCBvbmVzLgorCitBZnRlciB0aGUgaW5pdGlhbGl6YXRpb24gc3RlcCwgSU1BIHdpbGwgY2FsbCBpbWFfYWxsb2NfaW5pdF90ZW1wbGF0ZSgpCisobmV3IGZ1bmN0aW9uIGRlZmluZWQgd2l0aGluIHRoZSBwYXRjaGVzIGZvciB0aGUgbmV3IHRlbXBsYXRlIG1hbmFnZW1lbnQKK21lY2hhbmlzbSkgdG8gZ2VuZXJhdGUgYSBuZXcgbWVhc3VyZW1lbnQgZW50cnkgYnkgdXNpbmcgdGhlIHRlbXBsYXRlCitkZXNjcmlwdG9yIGNob3NlbiB0aHJvdWdoIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvciB0aHJvdWdoIHRoZSBuZXdseQoraW50cm9kdWNlZCAnaW1hX3RlbXBsYXRlJyBhbmQgJ2ltYV90ZW1wbGF0ZV9mbXQnIGtlcm5lbCBjb21tYW5kIGxpbmUgcGFyYW1ldGVycy4KK0l0IGlzIGR1cmluZyB0aGlzIHBoYXNlIHRoYXQgdGhlIGFkdmFudGFnZXMgb2YgdGhlIG5ldyBhcmNoaXRlY3R1cmUgYXJlCitjbGVhcmx5IHNob3duOiB0aGUgbGF0dGVyIGZ1bmN0aW9uIHdpbGwgbm90IGNvbnRhaW4gc3BlY2lmaWMgY29kZSB0byBoYW5kbGUKK2EgZ2l2ZW4gdGVtcGxhdGUgYnV0LCBpbnN0ZWFkLCBpdCBzaW1wbHkgY2FsbHMgdGhlIGluaXQoKSBtZXRob2Qgb2YgdGhlIHRlbXBsYXRlCitmaWVsZHMgYXNzb2NpYXRlZCB0byB0aGUgY2hvc2VuIHRlbXBsYXRlIGRlc2NyaXB0b3IgYW5kIHN0b3JlIHRoZSByZXN1bHQKKyhwb2ludGVyIHRvIGFsbG9jYXRlZCBkYXRhIGFuZCBkYXRhIGxlbmd0aCkgaW4gdGhlIG1lYXN1cmVtZW50IGVudHJ5IHN0cnVjdHVyZS4KKworVGhlIHNhbWUgbWVjaGFuaXNtIGlzIGVtcGxveWVkIHRvIGRpc3BsYXkgbWVhc3VyZW1lbnRzIGVudHJpZXMuCitUaGUgZnVuY3Rpb25zIGltYVtfYXNjaWldX21lYXN1cmVtZW50c19zaG93KCkgcmV0cmlldmUsIGZvciBlYWNoIGVudHJ5LAordGhlIHRlbXBsYXRlIGRlc2NyaXB0b3IgdXNlZCB0byBwcm9kdWNlIHRoYXQgZW50cnkgYW5kIGNhbGwgdGhlIHNob3coKQorbWV0aG9kIGZvciBlYWNoIGl0ZW0gb2YgdGhlIGFycmF5IG9mIHRlbXBsYXRlIGZpZWxkcyBzdHJ1Y3R1cmVzLgorCisKKworPT09PSBTVVBQT1JURUQgVEVNUExBVEUgRklFTERTIEFORCBERVNDUklQVE9SUyA9PT09CisKK0luIHRoZSBmb2xsb3dpbmcsIHRoZXJlIGlzIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCB0ZW1wbGF0ZSBmaWVsZHMKKygnPGlkZW50aWZpZXI+JzogZGVzY3JpcHRpb24pLCB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSBuZXcgdGVtcGxhdGUKK2Rlc2NyaXB0b3JzIGJ5IGFkZGluZyB0aGVpciBpZGVudGlmaWVyIHRvIHRoZSBmb3JtYXQgc3RyaW5nCisoc3VwcG9ydCBmb3IgbW9yZSBkYXRhIHR5cGVzIHdpbGwgYmUgYWRkZWQgbGF0ZXIpOgorCisgLSAnZCc6IHRoZSBkaWdlc3Qgb2YgdGhlIGV2ZW50IChpLmUuIHRoZSBkaWdlc3Qgb2YgYSBtZWFzdXJlZCBmaWxlKSwKKyAgICAgICAgY2FsY3VsYXRlZCB3aXRoIHRoZSBTSEExIG9yIE1ENSBoYXNoIGFsZ29yaXRobTsKKyAtICduJzogdGhlIG5hbWUgb2YgdGhlIGV2ZW50IChpLmUuIHRoZSBmaWxlIG5hbWUpLCB3aXRoIHNpemUgdXAgdG8gMjU1IGJ5dGVzOworIC0gJ2QtbmcnOiB0aGUgZGlnZXN0IG9mIHRoZSBldmVudCwgY2FsY3VsYXRlZCB3aXRoIGFuIGFyYml0cmFyeSBoYXNoCisgICAgICAgICAgIGFsZ29yaXRobSAoZmllbGQgZm9ybWF0OiBbPGhhc2ggYWxnbz46XWRpZ2VzdCwgd2hlcmUgdGhlIGRpZ2VzdAorICAgICAgICAgICBwcmVmaXggaXMgc2hvd24gb25seSBpZiB0aGUgaGFzaCBhbGdvcml0aG0gaXMgbm90IFNIQTEgb3IgTUQ1KTsKKyAtICduLW5nJzogdGhlIG5hbWUgb2YgdGhlIGV2ZW50LCB3aXRob3V0IHNpemUgbGltaXRhdGlvbnM7CisgLSAnc2lnJzogdGhlIGZpbGUgc2lnbmF0dXJlLgorCisKK0JlbG93LCB0aGVyZSBpcyB0aGUgbGlzdCBvZiBkZWZpbmVkIHRlbXBsYXRlIGRlc2NyaXB0b3JzOgorIC0gImltYSI6IGl0cyBmb3JtYXQgaXMgJ2R8bic7CisgLSAiaW1hLW5nIiAoZGVmYXVsdCk6IGl0cyBmb3JtYXQgaXMgJ2Qtbmd8bi1uZyc7CisgLSAiaW1hLXNpZyI6IGl0cyBmb3JtYXQgaXMgJ2Qtbmd8bi1uZ3xzaWcnLgorCisKKworPT09PSBVU0UgPT09PQorCitUbyBzcGVjaWZ5IHRoZSB0ZW1wbGF0ZSBkZXNjcmlwdG9yIHRvIGJlIHVzZWQgdG8gZ2VuZXJhdGUgbWVhc3VyZW1lbnQgZW50cmllcywKK2N1cnJlbnRseSB0aGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHN1cHBvcnRlZDoKKworIC0gc2VsZWN0IGEgdGVtcGxhdGUgZGVzY3JpcHRvciBhbW9uZyB0aG9zZSBzdXBwb3J0ZWQgaW4gdGhlIGtlcm5lbAorICAgY29uZmlndXJhdGlvbiAoJ2ltYS1uZycgaXMgdGhlIGRlZmF1bHQgY2hvaWNlKTsKKyAtIHNwZWNpZnkgYSB0ZW1wbGF0ZSBkZXNjcmlwdG9yIG5hbWUgZnJvbSB0aGUga2VybmVsIGNvbW1hbmQgbGluZSB0aHJvdWdoCisgICB0aGUgJ2ltYV90ZW1wbGF0ZT0nIHBhcmFtZXRlcjsKKyAtIHJlZ2lzdGVyIGEgbmV3IHRlbXBsYXRlIGRlc2NyaXB0b3Igd2l0aCBjdXN0b20gZm9ybWF0IHRocm91Z2ggdGhlIGtlcm5lbAorICAgY29tbWFuZCBsaW5lIHBhcmFtZXRlciAnaW1hX3RlbXBsYXRlX2ZtdD0nLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9MU00udHh0IGIvRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9MU00udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkYjdlNjcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NlY3VyaXR5L0xTTS50eHQKQEAgLTAsMCArMSwzNCBAQAorTGludXggU2VjdXJpdHkgTW9kdWxlIGZyYW1ld29yaworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgTGludXggU2VjdXJpdHkgTW9kdWxlIChMU00pIGZyYW1ld29yayBwcm92aWRlcyBhIG1lY2hhbmlzbSBmb3IKK3ZhcmlvdXMgc2VjdXJpdHkgY2hlY2tzIHRvIGJlIGhvb2tlZCBieSBuZXcga2VybmVsIGV4dGVuc2lvbnMuIFRoZSBuYW1lCisibW9kdWxlIiBpcyBhIGJpdCBvZiBhIG1pc25vbWVyIHNpbmNlIHRoZXNlIGV4dGVuc2lvbnMgYXJlIG5vdCBhY3R1YWxseQorbG9hZGFibGUga2VybmVsIG1vZHVsZXMuIEluc3RlYWQsIHRoZXkgYXJlIHNlbGVjdGFibGUgYXQgYnVpbGQtdGltZSB2aWEKK0NPTkZJR19ERUZBVUxUX1NFQ1VSSVRZIGFuZCBjYW4gYmUgb3ZlcnJpZGRlbiBhdCBib290LXRpbWUgdmlhIHRoZQorInNlY3VyaXR5PS4uLiIga2VybmVsIGNvbW1hbmQgbGluZSBhcmd1bWVudCwgaW4gdGhlIGNhc2Ugd2hlcmUgbXVsdGlwbGUKK0xTTXMgd2VyZSBidWlsdCBpbnRvIGEgZ2l2ZW4ga2VybmVsLgorCitUaGUgcHJpbWFyeSB1c2VycyBvZiB0aGUgTFNNIGludGVyZmFjZSBhcmUgTWFuZGF0b3J5IEFjY2VzcyBDb250cm9sCisoTUFDKSBleHRlbnNpb25zIHdoaWNoIHByb3ZpZGUgYSBjb21wcmVoZW5zaXZlIHNlY3VyaXR5IHBvbGljeS4gRXhhbXBsZXMKK2luY2x1ZGUgU0VMaW51eCwgU21hY2ssIFRvbW95bywgYW5kIEFwcEFybW9yLiBJbiBhZGRpdGlvbiB0byB0aGUgbGFyZ2VyCitNQUMgZXh0ZW5zaW9ucywgb3RoZXIgZXh0ZW5zaW9ucyBjYW4gYmUgYnVpbHQgdXNpbmcgdGhlIExTTSB0byBwcm92aWRlCitzcGVjaWZpYyBjaGFuZ2VzIHRvIHN5c3RlbSBvcGVyYXRpb24gd2hlbiB0aGVzZSB0d2Vha3MgYXJlIG5vdCBhdmFpbGFibGUKK2luIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb2YgTGludXggaXRzZWxmLgorCitXaXRob3V0IGEgc3BlY2lmaWMgTFNNIGJ1aWx0IGludG8gdGhlIGtlcm5lbCwgdGhlIGRlZmF1bHQgTFNNIHdpbGwgYmUgdGhlCitMaW51eCBjYXBhYmlsaXRpZXMgc3lzdGVtLiBNb3N0IExTTXMgY2hvb3NlIHRvIGV4dGVuZCB0aGUgY2FwYWJpbGl0aWVzCitzeXN0ZW0sIGJ1aWxkaW5nIHRoZWlyIGNoZWNrcyBvbiB0b3Agb2YgdGhlIGRlZmluZWQgY2FwYWJpbGl0eSBob29rcy4KK0ZvciBtb3JlIGRldGFpbHMgb24gY2FwYWJpbGl0aWVzLCBzZWUgY2FwYWJpbGl0aWVzKDcpIGluIHRoZSBMaW51eAorbWFuLXBhZ2VzIHByb2plY3QuCisKK0Jhc2VkIG9uIGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDA3LzEwLzI2LzIxNSwKK2EgbmV3IExTTSBpcyBhY2NlcHRlZCBpbnRvIHRoZSBrZXJuZWwgd2hlbiBpdHMgaW50ZW50IChhIGRlc2NyaXB0aW9uIG9mCit3aGF0IGl0IHRyaWVzIHRvIHByb3RlY3QgYWdhaW5zdCBhbmQgaW4gd2hhdCBjYXNlcyBvbmUgd291bGQgZXhwZWN0IHRvCit1c2UgaXQpIGhhcyBiZWVuIGFwcHJvcHJpYXRlbHkgZG9jdW1lbnRlZCBpbiBEb2N1bWVudGF0aW9uL3NlY3VyaXR5Ly4KK1RoaXMgYWxsb3dzIGFuIExTTSdzIGNvZGUgdG8gYmUgZWFzaWx5IGNvbXBhcmVkIHRvIGl0cyBnb2FscywgYW5kIHNvCit0aGF0IGVuZCB1c2VycyBhbmQgZGlzdHJvcyBjYW4gbWFrZSBhIG1vcmUgaW5mb3JtZWQgZGVjaXNpb24gYWJvdXQgd2hpY2gKK0xTTXMgc3VpdCB0aGVpciByZXF1aXJlbWVudHMuCisKK0ZvciBleHRlbnNpdmUgZG9jdW1lbnRhdGlvbiBvbiB0aGUgYXZhaWxhYmxlIExTTSBob29rIGludGVyZmFjZXMsIHBsZWFzZQorc2VlIGluY2x1ZGUvbGludXgvc2VjdXJpdHkuaC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2VjdXJpdHkvU0VMaW51eC50eHQgYi9Eb2N1bWVudGF0aW9uL3NlY3VyaXR5L1NFTGludXgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ZWFlMDAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NlY3VyaXR5L1NFTGludXgudHh0CkBAIC0wLDAgKzEsMjcgQEAKK0lmIHlvdSB3YW50IHRvIHVzZSBTRUxpbnV4LCBjaGFuY2VzIGFyZSB5b3Ugd2lsbCB3YW50Cit0byB1c2UgdGhlIGRpc3Ryby1wcm92aWRlZCBwb2xpY2llcywgb3IgaW5zdGFsbCB0aGUKK2xhdGVzdCByZWZlcmVuY2UgcG9saWN5IHJlbGVhc2UgZnJvbQorCWh0dHA6Ly9vc3MudHJlc3lzLmNvbS9wcm9qZWN0cy9yZWZwb2xpY3kKKworSG93ZXZlciwgaWYgeW91IHdhbnQgdG8gaW5zdGFsbCBhIGR1bW15IHBvbGljeSBmb3IKK3Rlc3RpbmcsIHlvdSBjYW4gZG8gdXNpbmcgJ21kcCcgcHJvdmlkZWQgdW5kZXIKK3NjcmlwdHMvc2VsaW51eC4gIE5vdGUgdGhhdCB0aGlzIHJlcXVpcmVzIHRoZSBzZWxpbnV4Cit1c2Vyc3BhY2UgdG8gYmUgaW5zdGFsbGVkIC0gaW4gcGFydGljdWxhciB5b3Ugd2lsbAorbmVlZCBjaGVja3BvbGljeSB0byBjb21waWxlIGEga2VybmVsLCBhbmQgc2V0ZmlsZXMgYW5kCitmaXhmaWxlcyB0byBsYWJlbCB0aGUgZmlsZXN5c3RlbS4KKworCTEuIENvbXBpbGUgdGhlIGtlcm5lbCB3aXRoIHNlbGludXggZW5hYmxlZC4KKwkyLiBUeXBlICdtYWtlJyB0byBjb21waWxlIG1kcC4KKwkzLiBNYWtlIHN1cmUgdGhhdCB5b3UgYXJlIG5vdCBydW5uaW5nIHdpdGgKKwkgICBTRUxpbnV4IGVuYWJsZWQgYW5kIGEgcmVhbCBwb2xpY3kuICBJZgorCSAgIHlvdSBhcmUsIHJlYm9vdCB3aXRoIHNlbGludXggZGlzYWJsZWQKKwkgICBiZWZvcmUgY29udGludWluZy4KKwk0LiBSdW4gaW5zdGFsbF9wb2xpY3kuc2g6CisJCWNkIHNjcmlwdHMvc2VsaW51eAorCQlzaCBpbnN0YWxsX3BvbGljeS5zaAorCitTdGVwIDQgd2lsbCBjcmVhdGUgYSBuZXcgZHVtbXkgcG9saWN5IHZhbGlkIGZvciB5b3VyCitrZXJuZWwsIHdpdGggYSBzaW5nbGUgc2VsaW51eCB1c2VyLCByb2xlLCBhbmQgdHlwZS4KK0l0IHdpbGwgY29tcGlsZSB0aGUgcG9saWN5LCB3aWxsIHNldCB5b3VyIFNFTElOVVhUWVBFIHRvCitkdW1teSBpbiAvZXRjL3NlbGludXgvY29uZmlnLCBpbnN0YWxsIHRoZSBjb21waWxlZCBwb2xpY3kKK2FzICdkdW1teScsIGFuZCByZWxhYmVsIHlvdXIgZmlsZXN5c3RlbS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2VjdXJpdHkvU21hY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9TbWFjay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ1Y2M2MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2VjdXJpdHkvU21hY2sudHh0CkBAIC0wLDAgKzEsNzUyIEBACisKKworICAgICJHb29kIGZvciB5b3UsIHlvdSd2ZSBkZWNpZGVkIHRvIGNsZWFuIHRoZSBlbGV2YXRvciEiCisgICAgLSBUaGUgRWxldmF0b3IsIGZyb20gRGFyayBTdGFyCisKK1NtYWNrIGlzIHRoZSBTaW1wbGlmaWVkIE1hbmRhdG9yeSBBY2Nlc3MgQ29udHJvbCBLZXJuZWwuCitTbWFjayBpcyBhIGtlcm5lbCBiYXNlZCBpbXBsZW1lbnRhdGlvbiBvZiBtYW5kYXRvcnkgYWNjZXNzCitjb250cm9sIHRoYXQgaW5jbHVkZXMgc2ltcGxpY2l0eSBpbiBpdHMgcHJpbWFyeSBkZXNpZ24gZ29hbHMuCisKK1NtYWNrIGlzIG5vdCB0aGUgb25seSBNYW5kYXRvcnkgQWNjZXNzIENvbnRyb2wgc2NoZW1lCithdmFpbGFibGUgZm9yIExpbnV4LiBUaG9zZSBuZXcgdG8gTWFuZGF0b3J5IEFjY2VzcyBDb250cm9sCithcmUgZW5jb3VyYWdlZCB0byBjb21wYXJlIFNtYWNrIHdpdGggdGhlIG90aGVyIG1lY2hhbmlzbXMKK2F2YWlsYWJsZSB0byBkZXRlcm1pbmUgd2hpY2ggaXMgYmVzdCBzdWl0ZWQgdG8gdGhlIHByb2JsZW0KK2F0IGhhbmQuCisKK1NtYWNrIGNvbnNpc3RzIG9mIHRocmVlIG1ham9yIGNvbXBvbmVudHM6CisgICAgLSBUaGUga2VybmVsCisgICAgLSBCYXNpYyB1dGlsaXRpZXMsIHdoaWNoIGFyZSBoZWxwZnVsIGJ1dCBub3QgcmVxdWlyZWQKKyAgICAtIENvbmZpZ3VyYXRpb24gZGF0YQorCitUaGUga2VybmVsIGNvbXBvbmVudCBvZiBTbWFjayBpcyBpbXBsZW1lbnRlZCBhcyBhIExpbnV4CitTZWN1cml0eSBNb2R1bGVzIChMU00pIG1vZHVsZS4gSXQgcmVxdWlyZXMgbmV0bGFiZWwgYW5kCit3b3JrcyBiZXN0IHdpdGggZmlsZSBzeXN0ZW1zIHRoYXQgc3VwcG9ydCBleHRlbmRlZCBhdHRyaWJ1dGVzLAorYWx0aG91Z2ggeGF0dHIgc3VwcG9ydCBpcyBub3Qgc3RyaWN0bHkgcmVxdWlyZWQuCitJdCBpcyBzYWZlIHRvIHJ1biBhIFNtYWNrIGtlcm5lbCB1bmRlciBhICJ2YW5pbGxhIiBkaXN0cmlidXRpb24uCisKK1NtYWNrIGtlcm5lbHMgdXNlIHRoZSBDSVBTTyBJUCBvcHRpb24uIFNvbWUgbmV0d29yaworY29uZmlndXJhdGlvbnMgYXJlIGludG9sZXJhbnQgb2YgSVAgb3B0aW9ucyBhbmQgY2FuIGltcGVkZQorYWNjZXNzIHRvIHN5c3RlbXMgdGhhdCB1c2UgdGhlbSBhcyBTbWFjayBkb2VzLgorCitTbWFjayBpcyB1c2VkIGluIHRoZSBUaXplbiBvcGVyYXRpbmcgc3lzdGVtLiBQbGVhc2UKK2dvIHRvIGh0dHA6Ly93aWtpLnRpemVuLm9yZyBmb3IgaW5mb3JtYXRpb24gYWJvdXQgaG93CitTbWFjayBpcyB1c2VkIGluIFRpemVuLgorCitUaGUgY3VycmVudCBnaXQgcmVwb3NpdG9yeSBmb3IgU21hY2sgdXNlciBzcGFjZSBpczoKKworCWdpdDovL2dpdGh1Yi5jb20vc21hY2stdGVhbS9zbWFjay5naXQKKworVGhpcyBzaG91bGQgbWFrZSBhbmQgaW5zdGFsbCBvbiBtb3N0IG1vZGVybiBkaXN0cmlidXRpb25zLgorVGhlcmUgYXJlIGZpdmUgY29tbWFuZHMgaW5jbHVkZWQgaW4gc21hY2t1dGlsOgorCitjaHNtYWNrICAgIC0gZGlzcGxheSBvciBzZXQgU21hY2sgZXh0ZW5kZWQgYXR0cmlidXRlIHZhbHVlcworc21hY2tjdGwgICAtIGxvYWQgdGhlIFNtYWNrIGFjY2VzcyBydWxlcworc21hY2thY2Nlc3MgLSByZXBvcnQgaWYgYSBwcm9jZXNzIHdpdGggb25lIGxhYmVsIGhhcyBhY2Nlc3MKKyAgICAgICAgICAgICAgdG8gYW4gb2JqZWN0IHdpdGggYW5vdGhlcgorCitUaGVzZSB0d28gY29tbWFuZHMgYXJlIG9ic29sZXRlIHdpdGggdGhlIGludHJvZHVjdGlvbiBvZgordGhlIHNtYWNrZnMvbG9hZDIgYW5kIHNtYWNrZnMvY2lwc28yIGludGVyZmFjZXMuCisKK3NtYWNrbG9hZCAgLSBwcm9wZXJseSBmb3JtYXRzIGRhdGEgZm9yIHdyaXRpbmcgdG8gc21hY2tmcy9sb2FkCitzbWFja2NpcHNvIC0gcHJvcGVybHkgZm9ybWF0cyBkYXRhIGZvciB3cml0aW5nIHRvIHNtYWNrZnMvY2lwc28KKworSW4ga2VlcGluZyB3aXRoIHRoZSBpbnRlbnQgb2YgU21hY2ssIGNvbmZpZ3VyYXRpb24gZGF0YSBpcworbWluaW1hbCBhbmQgbm90IHN0cmljdGx5IHJlcXVpcmVkLiBUaGUgbW9zdCBpbXBvcnRhbnQKK2NvbmZpZ3VyYXRpb24gc3RlcCBpcyBtb3VudGluZyB0aGUgc21hY2tmcyBwc2V1ZG8gZmlsZXN5c3RlbS4KK0lmIHNtYWNrdXRpbCBpcyBpbnN0YWxsZWQgdGhlIHN0YXJ0dXAgc2NyaXB0IHdpbGwgdGFrZSBjYXJlCitvZiB0aGlzLCBidXQgaXQgY2FuIGJlIG1hbnVhbGx5IGFzIHdlbGwuCisKK0FkZCB0aGlzIGxpbmUgdG8gL2V0Yy9mc3RhYjoKKworICAgIHNtYWNrZnMgL3N5cy9mcy9zbWFja2ZzIHNtYWNrZnMgZGVmYXVsdHMgMCAwCisKK1RoZSAvc3lzL2ZzL3NtYWNrZnMgZGlyZWN0b3J5IGlzIGNyZWF0ZWQgYnkgdGhlIGtlcm5lbC4KKworU21hY2sgdXNlcyBleHRlbmRlZCBhdHRyaWJ1dGVzICh4YXR0cnMpIHRvIHN0b3JlIGxhYmVscyBvbiBmaWxlc3lzdGVtCitvYmplY3RzLiBUaGUgYXR0cmlidXRlcyBhcmUgc3RvcmVkIGluIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgc2VjdXJpdHkKK25hbWUgc3BhY2UuIEEgcHJvY2VzcyBtdXN0IGhhdmUgQ0FQX01BQ19BRE1JTiB0byBjaGFuZ2UgYW55IG9mIHRoZXNlCithdHRyaWJ1dGVzLgorCitUaGUgZXh0ZW5kZWQgYXR0cmlidXRlcyB0aGF0IFNtYWNrIHVzZXMgYXJlOgorCitTTUFDSzY0CisJVXNlZCB0byBtYWtlIGFjY2VzcyBjb250cm9sIGRlY2lzaW9ucy4gSW4gYWxtb3N0IGFsbCBjYXNlcworCXRoZSBsYWJlbCBnaXZlbiB0byBhIG5ldyBmaWxlc3lzdGVtIG9iamVjdCB3aWxsIGJlIHRoZSBsYWJlbAorCW9mIHRoZSBwcm9jZXNzIHRoYXQgY3JlYXRlZCBpdC4KK1NNQUNLNjRFWEVDCisJVGhlIFNtYWNrIGxhYmVsIG9mIGEgcHJvY2VzcyB0aGF0IGV4ZWNzIGEgcHJvZ3JhbSBmaWxlIHdpdGgKKwl0aGlzIGF0dHJpYnV0ZSBzZXQgd2lsbCBydW4gd2l0aCB0aGlzIGF0dHJpYnV0ZSdzIHZhbHVlLgorU01BQ0s2NE1NQVAKKwlEb24ndCBhbGxvdyB0aGUgZmlsZSB0byBiZSBtbWFwcGVkIGJ5IGEgcHJvY2VzcyB3aG9zZSBTbWFjaworCWxhYmVsIGRvZXMgbm90IGFsbG93IGFsbCBvZiB0aGUgYWNjZXNzIHBlcm1pdHRlZCB0byBhIHByb2Nlc3MKKwl3aXRoIHRoZSBsYWJlbCBjb250YWluZWQgaW4gdGhpcyBhdHRyaWJ1dGUuIFRoaXMgaXMgYSB2ZXJ5CisJc3BlY2lmaWMgdXNlIGNhc2UgZm9yIHNoYXJlZCBsaWJyYXJpZXMuCitTTUFDSzY0VFJBTlNNVVRFCisJQ2FuIG9ubHkgaGF2ZSB0aGUgdmFsdWUgIlRSVUUiLiBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBwcmVzZW50CisJb24gYSBkaXJlY3Rvcnkgd2hlbiBhbiBvYmplY3QgaXMgY3JlYXRlZCBpbiB0aGUgZGlyZWN0b3J5IGFuZAorCXRoZSBTbWFjayBydWxlIChtb3JlIGJlbG93KSB0aGF0IHBlcm1pdHRlZCB0aGUgd3JpdGUgYWNjZXNzCisJdG8gdGhlIGRpcmVjdG9yeSBpbmNsdWRlcyB0aGUgdHJhbnNtdXRlICgidCIpIG1vZGUgdGhlIG9iamVjdAorCWdldHMgdGhlIGxhYmVsIG9mIHRoZSBkaXJlY3RvcnkgaW5zdGVhZCBvZiB0aGUgbGFiZWwgb2YgdGhlCisJY3JlYXRpbmcgcHJvY2Vzcy4gSWYgdGhlIG9iamVjdCBiZWluZyBjcmVhdGVkIGlzIGEgZGlyZWN0b3J5CisJdGhlIFNNQUNLNjRUUkFOU01VVEUgYXR0cmlidXRlIGlzIHNldCBhcyB3ZWxsLgorU01BQ0s2NElQSU4KKwlUaGlzIGF0dHJpYnV0ZSBpcyBvbmx5IGF2YWlsYWJsZSBvbiBmaWxlIGRlc2NyaXB0b3JzIGZvciBzb2NrZXRzLgorCVVzZSB0aGUgU21hY2sgbGFiZWwgaW4gdGhpcyBhdHRyaWJ1dGUgZm9yIGFjY2VzcyBjb250cm9sCisJZGVjaXNpb25zIG9uIHBhY2tldHMgYmVpbmcgZGVsaXZlcmVkIHRvIHRoaXMgc29ja2V0LgorU01BQ0s2NElQT1VUCisJVGhpcyBhdHRyaWJ1dGUgaXMgb25seSBhdmFpbGFibGUgb24gZmlsZSBkZXNjcmlwdG9ycyBmb3Igc29ja2V0cy4KKwlVc2UgdGhlIFNtYWNrIGxhYmVsIGluIHRoaXMgYXR0cmlidXRlIGZvciBhY2Nlc3MgY29udHJvbAorCWRlY2lzaW9ucyBvbiBwYWNrZXRzIGNvbWluZyBmcm9tIHRoaXMgc29ja2V0LgorCitUaGVyZSBhcmUgbXVsdGlwbGUgd2F5cyB0byBzZXQgYSBTbWFjayBsYWJlbCBvbiBhIGZpbGU6CisKKyAgICAjIGF0dHIgLVMgLXMgU01BQ0s2NCAtViAidmFsdWUiIHBhdGgKKyAgICAjIGNoc21hY2sgLWEgdmFsdWUgcGF0aAorCitBIHByb2Nlc3MgY2FuIHNlZSB0aGUgU21hY2sgbGFiZWwgaXQgaXMgcnVubmluZyB3aXRoIGJ5CityZWFkaW5nIC9wcm9jL3NlbGYvYXR0ci9jdXJyZW50LiBBIHByb2Nlc3Mgd2l0aCBDQVBfTUFDX0FETUlOCitjYW4gc2V0IHRoZSBwcm9jZXNzIFNtYWNrIGJ5IHdyaXRpbmcgdGhlcmUuCisKK01vc3QgU21hY2sgY29uZmlndXJhdGlvbiBpcyBhY2NvbXBsaXNoZWQgYnkgd3JpdGluZyB0byBmaWxlcworaW4gdGhlIHNtYWNrZnMgZmlsZXN5c3RlbS4gVGhpcyBwc2V1ZG8tZmlsZXN5c3RlbSBpcyBtb3VudGVkCitvbiAvc3lzL2ZzL3NtYWNrZnMuCisKK2FjY2VzcworCVByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBUaGUgYWNjZXNzMiBpbnRlcmZhY2UKKwlpcyBwcmVmZXJyZWQgYW5kIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCisJVGhpcyBpbnRlcmZhY2UgcmVwb3J0cyB3aGV0aGVyIGEgc3ViamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQKKwlTbWFjayBsYWJlbCBoYXMgYSBwYXJ0aWN1bGFyIGFjY2VzcyB0byBhbiBvYmplY3Qgd2l0aCBhCisJc3BlY2lmaWVkIFNtYWNrIGxhYmVsLiBXcml0ZSBhIGZpeGVkIGZvcm1hdCBhY2Nlc3MgcnVsZSB0bworCXRoaXMgZmlsZS4gVGhlIG5leHQgcmVhZCB3aWxsIGluZGljYXRlIHdoZXRoZXIgdGhlIGFjY2VzcworCXdvdWxkIGJlIHBlcm1pdHRlZC4gVGhlIHRleHQgd2lsbCBiZSBlaXRoZXIgIjEiIGluZGljYXRpbmcKKwlhY2Nlc3MsIG9yICIwIiBpbmRpY2F0aW5nIGRlbmlhbC4KK2FjY2VzczIKKwlUaGlzIGludGVyZmFjZSByZXBvcnRzIHdoZXRoZXIgYSBzdWJqZWN0IHdpdGggdGhlIHNwZWNpZmllZAorCVNtYWNrIGxhYmVsIGhhcyBhIHBhcnRpY3VsYXIgYWNjZXNzIHRvIGFuIG9iamVjdCB3aXRoIGEKKwlzcGVjaWZpZWQgU21hY2sgbGFiZWwuIFdyaXRlIGEgbG9uZyBmb3JtYXQgYWNjZXNzIHJ1bGUgdG8KKwl0aGlzIGZpbGUuIFRoZSBuZXh0IHJlYWQgd2lsbCBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBhY2Nlc3MKKwl3b3VsZCBiZSBwZXJtaXR0ZWQuIFRoZSB0ZXh0IHdpbGwgYmUgZWl0aGVyICIxIiBpbmRpY2F0aW5nCisJYWNjZXNzLCBvciAiMCIgaW5kaWNhdGluZyBkZW5pYWwuCithbWJpZW50CisJVGhpcyBjb250YWlucyB0aGUgU21hY2sgbGFiZWwgYXBwbGllZCB0byB1bmxhYmVsZWQgbmV0d29yaworCXBhY2tldHMuCitjaGFuZ2UtcnVsZQorCVRoaXMgaW50ZXJmYWNlIGFsbG93cyBtb2RpZmljYXRpb24gb2YgZXhpc3RpbmcgYWNjZXNzIGNvbnRyb2wgcnVsZXMuCisJVGhlIGZvcm1hdCBhY2NlcHRlZCBvbiB3cml0ZSBpczoKKwkJIiVzICVzICVzICVzIgorCXdoZXJlIHRoZSBmaXJzdCBzdHJpbmcgaXMgdGhlIHN1YmplY3QgbGFiZWwsIHRoZSBzZWNvbmQgdGhlCisJb2JqZWN0IGxhYmVsLCB0aGUgdGhpcmQgdGhlIGFjY2VzcyB0byBhbGxvdyBhbmQgdGhlIGZvdXJ0aCB0aGUKKwlhY2Nlc3MgdG8gZGVueS4gVGhlIGFjY2VzcyBzdHJpbmdzIG1heSBjb250YWluIG9ubHkgdGhlIGNoYXJhY3RlcnMKKwkicnd4YXQtIi4gSWYgYSBydWxlIGZvciBhIGdpdmVuIHN1YmplY3QgYW5kIG9iamVjdCBleGlzdHMgaXQgd2lsbCBiZQorCW1vZGlmaWVkIGJ5IGVuYWJsaW5nIHRoZSBwZXJtaXNzaW9ucyBpbiB0aGUgdGhpcmQgc3RyaW5nIGFuZCBkaXNhYmxpbmcKKwl0aG9zZSBpbiB0aGUgZm91cnRoIHN0cmluZy4gSWYgdGhlcmUgaXMgbm8gc3VjaCBydWxlIGl0IHdpbGwgYmUKKwljcmVhdGVkIHVzaW5nIHRoZSBhY2Nlc3Mgc3BlY2lmaWVkIGluIHRoZSB0aGlyZCBhbmQgdGhlIGZvdXJ0aCBzdHJpbmdzLgorY2lwc28KKwlQcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gVGhlIGNpcHNvMiBpbnRlcmZhY2UKKwlpcyBwcmVmZXJyZWQgYW5kIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCisJVGhpcyBpbnRlcmZhY2UgYWxsb3dzIGEgc3BlY2lmaWMgQ0lQU08gaGVhZGVyIHRvIGJlIGFzc2lnbmVkCisJdG8gYSBTbWFjayBsYWJlbC4gVGhlIGZvcm1hdCBhY2NlcHRlZCBvbiB3cml0ZSBpczoKKwkJIiUyNHMlNGQlNGQiWyIlNGQiXS4uLgorCVRoZSBmaXJzdCBzdHJpbmcgaXMgYSBmaXhlZCBTbWFjayBsYWJlbC4gVGhlIGZpcnN0IG51bWJlciBpcworCXRoZSBsZXZlbCB0byB1c2UuIFRoZSBzZWNvbmQgbnVtYmVyIGlzIHRoZSBudW1iZXIgb2YgY2F0ZWdvcmllcy4KKwlUaGUgZm9sbG93aW5nIG51bWJlcnMgYXJlIHRoZSBjYXRlZ29yaWVzLgorCSJsZXZlbC0zLWNhdHMtNS0xOSAgICAgICAgICAzICAgMiAgIDUgIDE5IgorY2lwc28yCisJVGhpcyBpbnRlcmZhY2UgYWxsb3dzIGEgc3BlY2lmaWMgQ0lQU08gaGVhZGVyIHRvIGJlIGFzc2lnbmVkCisJdG8gYSBTbWFjayBsYWJlbC4gVGhlIGZvcm1hdCBhY2NlcHRlZCBvbiB3cml0ZSBpczoKKwkiJXMlNGQlNGQiWyIlNGQiXS4uLgorCVRoZSBmaXJzdCBzdHJpbmcgaXMgYSBsb25nIFNtYWNrIGxhYmVsLiBUaGUgZmlyc3QgbnVtYmVyIGlzCisJdGhlIGxldmVsIHRvIHVzZS4gVGhlIHNlY29uZCBudW1iZXIgaXMgdGhlIG51bWJlciBvZiBjYXRlZ29yaWVzLgorCVRoZSBmb2xsb3dpbmcgbnVtYmVycyBhcmUgdGhlIGNhdGVnb3JpZXMuCisJImxldmVsLTMtY2F0cy01LTE5ICAgMyAgIDIgICA1ICAxOSIKK2RpcmVjdAorCVRoaXMgY29udGFpbnMgdGhlIENJUFNPIGxldmVsIHVzZWQgZm9yIFNtYWNrIGRpcmVjdCBsYWJlbAorCXJlcHJlc2VudGF0aW9uIGluIG5ldHdvcmsgcGFja2V0cy4KK2RvaQorCVRoaXMgY29udGFpbnMgdGhlIENJUFNPIGRvbWFpbiBvZiBpbnRlcnByZXRhdGlvbiB1c2VkIGluCisJbmV0d29yayBwYWNrZXRzLgoraXB2Nmhvc3QKKwlUaGlzIGludGVyZmFjZSBhbGxvd3Mgc3BlY2lmaWMgSVB2NiBpbnRlcm5ldCBhZGRyZXNzZXMgdG8gYmUKKwl0cmVhdGVkIGFzIHNpbmdsZSBsYWJlbCBob3N0cy4gUGFja2V0cyBhcmUgc2VudCB0byBzaW5nbGUKKwlsYWJlbCBob3N0cyBvbmx5IGZyb20gcHJvY2Vzc2VzIHRoYXQgaGF2ZSBTbWFjayB3cml0ZSBhY2Nlc3MKKwl0byB0aGUgaG9zdCBsYWJlbC4gQWxsIHBhY2tldHMgcmVjZWl2ZWQgZnJvbSBzaW5nbGUgbGFiZWwgaG9zdHMKKwlhcmUgZ2l2ZW4gdGhlIHNwZWNpZmllZCBsYWJlbC4gVGhlIGZvcm1hdCBhY2NlcHRlZCBvbiB3cml0ZSBpczoKKwkJIiVoOiVoOiVoOiVoOiVoOiVoOiVoOiVoIGxhYmVsIiBvcgorCQkiJWg6JWg6JWg6JWg6JWg6JWg6JWg6JWgvJWQgbGFiZWwiLgorCVRoZSAiOjoiIGFkZHJlc3Mgc2hvcnRjdXQgaXMgbm90IHN1cHBvcnRlZC4KKwlJZiBsYWJlbCBpcyAiLURFTEVURSIgYSBtYXRjaGVkIGVudHJ5IHdpbGwgYmUgZGVsZXRlZC4KK2xvYWQKKwlQcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gVGhlIGxvYWQyIGludGVyZmFjZQorCWlzIHByZWZlcnJlZCBhbmQgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KKwlUaGlzIGludGVyZmFjZSBhbGxvd3MgYWNjZXNzIGNvbnRyb2wgcnVsZXMgaW4gYWRkaXRpb24gdG8KKwl0aGUgc3lzdGVtIGRlZmluZWQgcnVsZXMgdG8gYmUgc3BlY2lmaWVkLiBUaGUgZm9ybWF0IGFjY2VwdGVkCisJb24gd3JpdGUgaXM6CisJCSIlMjRzJTI0cyU1cyIKKwl3aGVyZSB0aGUgZmlyc3Qgc3RyaW5nIGlzIHRoZSBzdWJqZWN0IGxhYmVsLCB0aGUgc2Vjb25kIHRoZQorCW9iamVjdCBsYWJlbCwgYW5kIHRoZSB0aGlyZCB0aGUgcmVxdWVzdGVkIGFjY2Vzcy4gVGhlIGFjY2VzcworCXN0cmluZyBtYXkgY29udGFpbiBvbmx5IHRoZSBjaGFyYWN0ZXJzICJyd3hhdC0iLCBhbmQgc3BlY2lmaWVzCisJd2hpY2ggc29ydCBvZiBhY2Nlc3MgaXMgYWxsb3dlZC4gVGhlICItIiBpcyBhIHBsYWNlaG9sZGVyIGZvcgorCXBlcm1pc3Npb25zIHRoYXQgYXJlIG5vdCBhbGxvd2VkLiBUaGUgc3RyaW5nICJyLXgtLSIgd291bGQKKwlzcGVjaWZ5IHJlYWQgYW5kIGV4ZWN1dGUgYWNjZXNzLiBMYWJlbHMgYXJlIGxpbWl0ZWQgdG8gMjMKKwljaGFyYWN0ZXJzIGluIGxlbmd0aC4KK2xvYWQyCisJVGhpcyBpbnRlcmZhY2UgYWxsb3dzIGFjY2VzcyBjb250cm9sIHJ1bGVzIGluIGFkZGl0aW9uIHRvCisJdGhlIHN5c3RlbSBkZWZpbmVkIHJ1bGVzIHRvIGJlIHNwZWNpZmllZC4gVGhlIGZvcm1hdCBhY2NlcHRlZAorCW9uIHdyaXRlIGlzOgorCQkiJXMgJXMgJXMiCisJd2hlcmUgdGhlIGZpcnN0IHN0cmluZyBpcyB0aGUgc3ViamVjdCBsYWJlbCwgdGhlIHNlY29uZCB0aGUKKwlvYmplY3QgbGFiZWwsIGFuZCB0aGUgdGhpcmQgdGhlIHJlcXVlc3RlZCBhY2Nlc3MuIFRoZSBhY2Nlc3MKKwlzdHJpbmcgbWF5IGNvbnRhaW4gb25seSB0aGUgY2hhcmFjdGVycyAicnd4YXQtIiwgYW5kIHNwZWNpZmllcworCXdoaWNoIHNvcnQgb2YgYWNjZXNzIGlzIGFsbG93ZWQuIFRoZSAiLSIgaXMgYSBwbGFjZWhvbGRlciBmb3IKKwlwZXJtaXNzaW9ucyB0aGF0IGFyZSBub3QgYWxsb3dlZC4gVGhlIHN0cmluZyAici14LS0iIHdvdWxkCisJc3BlY2lmeSByZWFkIGFuZCBleGVjdXRlIGFjY2Vzcy4KK2xvYWQtc2VsZgorCVByb3ZpZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBUaGUgbG9hZC1zZWxmMiBpbnRlcmZhY2UKKwlpcyBwcmVmZXJyZWQgYW5kIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCisJVGhpcyBpbnRlcmZhY2UgYWxsb3dzIHByb2Nlc3Mgc3BlY2lmaWMgYWNjZXNzIHJ1bGVzIHRvIGJlCisJZGVmaW5lZC4gVGhlc2UgcnVsZXMgYXJlIG9ubHkgY29uc3VsdGVkIGlmIGFjY2VzcyB3b3VsZAorCW90aGVyd2lzZSBiZSBwZXJtaXR0ZWQsIGFuZCBhcmUgaW50ZW5kZWQgdG8gcHJvdmlkZSBhZGRpdGlvbmFsCisJcmVzdHJpY3Rpb25zIG9uIHRoZSBwcm9jZXNzLiBUaGUgZm9ybWF0IGlzIHRoZSBzYW1lIGFzIGZvcgorCXRoZSBsb2FkIGludGVyZmFjZS4KK2xvYWQtc2VsZjIKKwlUaGlzIGludGVyZmFjZSBhbGxvd3MgcHJvY2VzcyBzcGVjaWZpYyBhY2Nlc3MgcnVsZXMgdG8gYmUKKwlkZWZpbmVkLiBUaGVzZSBydWxlcyBhcmUgb25seSBjb25zdWx0ZWQgaWYgYWNjZXNzIHdvdWxkCisJb3RoZXJ3aXNlIGJlIHBlcm1pdHRlZCwgYW5kIGFyZSBpbnRlbmRlZCB0byBwcm92aWRlIGFkZGl0aW9uYWwKKwlyZXN0cmljdGlvbnMgb24gdGhlIHByb2Nlc3MuIFRoZSBmb3JtYXQgaXMgdGhlIHNhbWUgYXMgZm9yCisJdGhlIGxvYWQyIGludGVyZmFjZS4KK2xvZ2dpbmcKKwlUaGlzIGNvbnRhaW5zIHRoZSBTbWFjayBsb2dnaW5nIHN0YXRlLgorbWFwcGVkCisJVGhpcyBjb250YWlucyB0aGUgQ0lQU08gbGV2ZWwgdXNlZCBmb3IgU21hY2sgbWFwcGVkIGxhYmVsCisJcmVwcmVzZW50YXRpb24gaW4gbmV0d29yayBwYWNrZXRzLgorbmV0bGFiZWwKKwlUaGlzIGludGVyZmFjZSBhbGxvd3Mgc3BlY2lmaWMgaW50ZXJuZXQgYWRkcmVzc2VzIHRvIGJlCisJdHJlYXRlZCBhcyBzaW5nbGUgbGFiZWwgaG9zdHMuIFBhY2tldHMgYXJlIHNlbnQgdG8gc2luZ2xlCisJbGFiZWwgaG9zdHMgd2l0aG91dCBDSVBTTyBoZWFkZXJzLCBidXQgb25seSBmcm9tIHByb2Nlc3NlcworCXRoYXQgaGF2ZSBTbWFjayB3cml0ZSBhY2Nlc3MgdG8gdGhlIGhvc3QgbGFiZWwuIEFsbCBwYWNrZXRzCisJcmVjZWl2ZWQgZnJvbSBzaW5nbGUgbGFiZWwgaG9zdHMgYXJlIGdpdmVuIHRoZSBzcGVjaWZpZWQKKwlsYWJlbC4gVGhlIGZvcm1hdCBhY2NlcHRlZCBvbiB3cml0ZSBpczoKKwkJIiVkLiVkLiVkLiVkIGxhYmVsIiBvciAiJWQuJWQuJWQuJWQvJWQgbGFiZWwiLgorCUlmIHRoZSBsYWJlbCBzcGVjaWZpZWQgaXMgIi1DSVBTTyIgdGhlIGFkZHJlc3MgaXMgdHJlYXRlZAorCWFzIGEgaG9zdCB0aGF0IHN1cHBvcnRzIENJUFNPIGhlYWRlcnMuCitvbmx5Y2FwCisJVGhpcyBjb250YWlucyBsYWJlbHMgcHJvY2Vzc2VzIG11c3QgaGF2ZSBmb3IgQ0FQX01BQ19BRE1JTgorCWFuZCBDQVBfTUFDX09WRVJSSURFIHRvIGJlIGVmZmVjdGl2ZS4gSWYgdGhpcyBmaWxlIGlzIGVtcHR5CisJdGhlc2UgY2FwYWJpbGl0aWVzIGFyZSBlZmZlY3RpdmUgYXQgZm9yIHByb2Nlc3NlcyB3aXRoIGFueQorCWxhYmVsLiBUaGUgdmFsdWVzIGFyZSBzZXQgYnkgd3JpdGluZyB0aGUgZGVzaXJlZCBsYWJlbHMsIHNlcGFyYXRlZAorCWJ5IHNwYWNlcywgdG8gdGhlIGZpbGUgb3IgY2xlYXJlZCBieSB3cml0aW5nICItIiB0byB0aGUgZmlsZS4KK3B0cmFjZQorCVRoaXMgaXMgdXNlZCB0byBkZWZpbmUgdGhlIGN1cnJlbnQgcHRyYWNlIHBvbGljeQorCTAgLSBkZWZhdWx0OiB0aGlzIGlzIHRoZSBwb2xpY3kgdGhhdCByZWxpZXMgb24gU21hY2sgYWNjZXNzIHJ1bGVzLgorCSAgICBGb3IgdGhlIFBUUkFDRV9SRUFEIGEgc3ViamVjdCBuZWVkcyB0byBoYXZlIGEgcmVhZCBhY2Nlc3Mgb24KKwkgICAgb2JqZWN0LiBGb3IgdGhlIFBUUkFDRV9BVFRBQ0ggYSByZWFkLXdyaXRlIGFjY2VzcyBpcyByZXF1aXJlZC4KKwkxIC0gZXhhY3Q6IHRoaXMgaXMgdGhlIHBvbGljeSB0aGF0IGxpbWl0cyBQVFJBQ0VfQVRUQUNILiBBdHRhY2ggaXMKKwkgICAgb25seSBhbGxvd2VkIHdoZW4gc3ViamVjdCdzIGFuZCBvYmplY3QncyBsYWJlbHMgYXJlIGVxdWFsLgorCSAgICBQVFJBQ0VfUkVBRCBpcyBub3QgYWZmZWN0ZWQuIENhbiBiZSBvdmVycmlkZGVuIHdpdGggQ0FQX1NZU19QVFJBQ0UuCisJMiAtIGRyYWNvbmlhbjogdGhpcyBwb2xpY3kgYmVoYXZlcyBsaWtlIHRoZSAnZXhhY3QnIGFib3ZlIHdpdGggYW4KKwkgICAgZXhjZXB0aW9uIHRoYXQgaXQgY2FuJ3QgYmUgb3ZlcnJpZGRlbiB3aXRoIENBUF9TWVNfUFRSQUNFLgorcmV2b2tlLXN1YmplY3QKKwlXcml0aW5nIGEgU21hY2sgbGFiZWwgaGVyZSBzZXRzIHRoZSBhY2Nlc3MgdG8gJy0nIGZvciBhbGwgYWNjZXNzCisJcnVsZXMgd2l0aCB0aGF0IHN1YmplY3QgbGFiZWwuCit1bmNvbmZpbmVkCisJSWYgdGhlIGtlcm5lbCBpcyBjb25maWd1cmVkIHdpdGggQ09ORklHX1NFQ1VSSVRZX1NNQUNLX0JSSU5HVVAKKwlhIHByb2Nlc3Mgd2l0aCBDQVBfTUFDX0FETUlOIGNhbiB3cml0ZSBhIGxhYmVsIGludG8gdGhpcyBpbnRlcmZhY2UuCisJVGhlcmVhZnRlciwgYWNjZXNzZXMgdGhhdCBpbnZvbHZlIHRoYXQgbGFiZWwgd2lsbCBiZSBsb2dnZWQgYW5kCisJdGhlIGFjY2VzcyBwZXJtaXR0ZWQgaWYgaXQgd291bGRuJ3QgYmUgb3RoZXJ3aXNlLiBOb3RlIHRoYXQgdGhpcworCWlzIGRhbmdlcm91cyBhbmQgY2FuIHJ1aW4gdGhlIHByb3BlciBsYWJlbGluZyBvZiB5b3VyIHN5c3RlbS4KKwlJdCBzaG91bGQgbmV2ZXIgYmUgdXNlZCBpbiBwcm9kdWN0aW9uLgorcmVsYWJlbC1zZWxmCisJVGhpcyBpbnRlcmZhY2UgY29udGFpbnMgYSBsaXN0IG9mIGxhYmVscyB0byB3aGljaCB0aGUgcHJvY2VzcyBjYW4KKwl0cmFuc2l0aW9uIHRvLCBieSB3cml0aW5nIHRvIC9wcm9jL3NlbGYvYXR0ci9jdXJyZW50LgorCU5vcm1hbGx5IGEgcHJvY2VzcyBjYW4gY2hhbmdlIGl0cyBvd24gbGFiZWwgdG8gYW55IGxlZ2FsIHZhbHVlLCBidXQgb25seQorCWlmIGl0IGhhcyBDQVBfTUFDX0FETUlOLiBUaGlzIGludGVyZmFjZSBhbGxvd3MgYSBwcm9jZXNzIHdpdGhvdXQKKwlDQVBfTUFDX0FETUlOIHRvIHJlbGFiZWwgaXRzZWxmIHRvIG9uZSBvZiBsYWJlbHMgZnJvbSBwcmVkZWZpbmVkIGxpc3QuCisJQSBwcm9jZXNzIHdpdGhvdXQgQ0FQX01BQ19BRE1JTiBjYW4gY2hhbmdlIGl0cyBsYWJlbCBvbmx5IG9uY2UuIFdoZW4gaXQKKwlkb2VzLCB0aGlzIGxpc3Qgd2lsbCBiZSBjbGVhcmVkLgorCVRoZSB2YWx1ZXMgYXJlIHNldCBieSB3cml0aW5nIHRoZSBkZXNpcmVkIGxhYmVscywgc2VwYXJhdGVkCisJYnkgc3BhY2VzLCB0byB0aGUgZmlsZSBvciBjbGVhcmVkIGJ5IHdyaXRpbmcgIi0iIHRvIHRoZSBmaWxlLgorCitJZiB5b3UgYXJlIHVzaW5nIHRoZSBzbWFja2xvYWQgdXRpbGl0eQoreW91IGNhbiBhZGQgYWNjZXNzIHJ1bGVzIGluIC9ldGMvc21hY2svYWNjZXNzZXMuIFRoZXkgdGFrZSB0aGUgZm9ybToKKworICAgIHN1YmplY3RsYWJlbCBvYmplY3RsYWJlbCBhY2Nlc3MKKworYWNjZXNzIGlzIGEgY29tYmluYXRpb24gb2YgdGhlIGxldHRlcnMgcnd4YXRiIHdoaWNoIHNwZWNpZnkgdGhlCitraW5kIG9mIGFjY2VzcyBwZXJtaXR0ZWQgYSBzdWJqZWN0IHdpdGggc3ViamVjdGxhYmVsIG9uIGFuCitvYmplY3Qgd2l0aCBvYmplY3RsYWJlbC4gSWYgdGhlcmUgaXMgbm8gcnVsZSBubyBhY2Nlc3MgaXMgYWxsb3dlZC4KKworTG9vayBmb3IgYWRkaXRpb25hbCBwcm9ncmFtcyBvbiBodHRwOi8vc2NoYXVmbGVyLWNhLmNvbQorCitGcm9tIHRoZSBTbWFjayBXaGl0ZXBhcGVyOgorCitUaGUgU2ltcGxpZmllZCBNYW5kYXRvcnkgQWNjZXNzIENvbnRyb2wgS2VybmVsCisKK0Nhc2V5IFNjaGF1ZmxlcgorY2FzZXlAc2NoYXVmbGVyLWNhLmNvbQorCitNYW5kYXRvcnkgQWNjZXNzIENvbnRyb2wKKworQ29tcHV0ZXIgc3lzdGVtcyBlbXBsb3kgYSB2YXJpZXR5IG9mIHNjaGVtZXMgdG8gY29uc3RyYWluIGhvdyBpbmZvcm1hdGlvbiBpcworc2hhcmVkIGFtb25nIHRoZSBwZW9wbGUgYW5kIHNlcnZpY2VzIHVzaW5nIHRoZSBtYWNoaW5lLiBTb21lIG9mIHRoZXNlIHNjaGVtZXMKK2FsbG93IHRoZSBwcm9ncmFtIG9yIHVzZXIgdG8gZGVjaWRlIHdoYXQgb3RoZXIgcHJvZ3JhbXMgb3IgdXNlcnMgYXJlIGFsbG93ZWQKK2FjY2VzcyB0byBwaWVjZXMgb2YgZGF0YS4gVGhlc2Ugc2NoZW1lcyBhcmUgY2FsbGVkIGRpc2NyZXRpb25hcnkgYWNjZXNzCitjb250cm9sIG1lY2hhbmlzbXMgYmVjYXVzZSB0aGUgYWNjZXNzIGNvbnRyb2wgaXMgc3BlY2lmaWVkIGF0IHRoZSBkaXNjcmV0aW9uCitvZiB0aGUgdXNlci4gT3RoZXIgc2NoZW1lcyBkbyBub3QgbGVhdmUgdGhlIGRlY2lzaW9uIHJlZ2FyZGluZyB3aGF0IGEgdXNlciBvcgorcHJvZ3JhbSBjYW4gYWNjZXNzIHVwIHRvIHVzZXJzIG9yIHByb2dyYW1zLiBUaGVzZSBzY2hlbWVzIGFyZSBjYWxsZWQgbWFuZGF0b3J5CithY2Nlc3MgY29udHJvbCBtZWNoYW5pc21zIGJlY2F1c2UgeW91IGRvbid0IGhhdmUgYSBjaG9pY2UgcmVnYXJkaW5nIHRoZSB1c2Vycworb3IgcHJvZ3JhbXMgdGhhdCBoYXZlIGFjY2VzcyB0byBwaWVjZXMgb2YgZGF0YS4KKworQmVsbCAmIExhUGFkdWxhCisKK0Zyb20gdGhlIG1pZGRsZSBvZiB0aGUgMTk4MCdzIHVudGlsIHRoZSB0dXJuIG9mIHRoZSBjZW50dXJ5IE1hbmRhdG9yeSBBY2Nlc3MKK0NvbnRyb2wgKE1BQykgd2FzIHZlcnkgY2xvc2VseSBhc3NvY2lhdGVkIHdpdGggdGhlIEJlbGwgJiBMYVBhZHVsYSBzZWN1cml0eQorbW9kZWwsIGEgbWF0aGVtYXRpY2FsIGRlc2NyaXB0aW9uIG9mIHRoZSBVbml0ZWQgU3RhdGVzIERlcGFydG1lbnQgb2YgRGVmZW5zZQorcG9saWN5IGZvciBtYXJraW5nIHBhcGVyIGRvY3VtZW50cy4gTUFDIGluIHRoaXMgZm9ybSBlbmpveWVkIGEgZm9sbG93aW5nCit3aXRoaW4gdGhlIENhcGl0YWwgQmVsdHdheSBhbmQgU2NhbmRpbmF2aWFuIHN1cGVyY29tcHV0ZXIgY2VudGVycyBidXQgd2FzCitvZnRlbiBzaXRlZCBhcyBmYWlsaW5nIHRvIGFkZHJlc3MgZ2VuZXJhbCBuZWVkcy4KKworRG9tYWluIFR5cGUgRW5mb3JjZW1lbnQKKworQXJvdW5kIHRoZSB0dXJuIG9mIHRoZSBjZW50dXJ5IERvbWFpbiBUeXBlIEVuZm9yY2VtZW50IChEVEUpIGJlY2FtZSBwb3B1bGFyLgorVGhpcyBzY2hlbWUgb3JnYW5pemVzIHVzZXJzLCBwcm9ncmFtcywgYW5kIGRhdGEgaW50byBkb21haW5zIHRoYXQgYXJlCitwcm90ZWN0ZWQgZnJvbSBlYWNoIG90aGVyLiBUaGlzIHNjaGVtZSBoYXMgYmVlbiB3aWRlbHkgZGVwbG95ZWQgYXMgYSBjb21wb25lbnQKK29mIHBvcHVsYXIgTGludXggZGlzdHJpYnV0aW9ucy4gVGhlIGFkbWluaXN0cmF0aXZlIG92ZXJoZWFkIHJlcXVpcmVkIHRvCittYWludGFpbiB0aGlzIHNjaGVtZSBhbmQgdGhlIGRldGFpbGVkIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHdob2xlIHN5c3RlbQorbmVjZXNzYXJ5IHRvIHByb3ZpZGUgYSBzZWN1cmUgZG9tYWluIG1hcHBpbmcgbGVhZHMgdG8gdGhlIHNjaGVtZSBiZWluZworZGlzYWJsZWQgb3IgdXNlZCBpbiBsaW1pdGVkIHdheXMgaW4gdGhlIG1ham9yaXR5IG9mIGNhc2VzLgorCitTbWFjaworCitTbWFjayBpcyBhIE1hbmRhdG9yeSBBY2Nlc3MgQ29udHJvbCBtZWNoYW5pc20gZGVzaWduZWQgdG8gcHJvdmlkZSB1c2VmdWwgTUFDCit3aGlsZSBhdm9pZGluZyB0aGUgcGl0ZmFsbHMgb2YgaXRzIHByZWRlY2Vzc29ycy4gVGhlIGxpbWl0YXRpb25zIG9mIEJlbGwgJgorTGFQYWR1bGEgYXJlIGFkZHJlc3NlZCBieSBwcm92aWRpbmcgYSBzY2hlbWUgd2hlcmVieSBhY2Nlc3MgY2FuIGJlIGNvbnRyb2xsZWQKK2FjY29yZGluZyB0byB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoZSBzeXN0ZW0gYW5kIGl0cyBwdXJwb3NlIHJhdGhlciB0aGFuIHRob3NlCitpbXBvc2VkIGJ5IGFuIGFyY2FuZSBnb3Zlcm5tZW50IHBvbGljeS4gVGhlIGNvbXBsZXhpdHkgb2YgRG9tYWluIFR5cGUKK0VuZm9yY2VtZW50IGFuZCBhdm9pZGVkIGJ5IGRlZmluaW5nIGFjY2VzcyBjb250cm9scyBpbiB0ZXJtcyBvZiB0aGUgYWNjZXNzCittb2RlcyBhbHJlYWR5IGluIHVzZS4KKworU21hY2sgVGVybWlub2xvZ3kKKworVGhlIGphcmdvbiB1c2VkIHRvIHRhbGsgYWJvdXQgU21hY2sgd2lsbCBiZSBmYW1pbGlhciB0byB0aG9zZSB3aG8gaGF2ZSBkZWFsdAord2l0aCBvdGhlciBNQUMgc3lzdGVtcyBhbmQgc2hvdWxkbid0IGJlIHRvbyBkaWZmaWN1bHQgZm9yIHRoZSB1bmluaXRpYXRlZCB0bworcGljayB1cC4gVGhlcmUgYXJlIGZvdXIgdGVybXMgdGhhdCBhcmUgdXNlZCBpbiBhIHNwZWNpZmljIHdheSBhbmQgdGhhdCBhcmUKK2VzcGVjaWFsbHkgaW1wb3J0YW50OgorCisJU3ViamVjdDogQSBzdWJqZWN0IGlzIGFuIGFjdGl2ZSBlbnRpdHkgb24gdGhlIGNvbXB1dGVyIHN5c3RlbS4KKwlPbiBTbWFjayBhIHN1YmplY3QgaXMgYSB0YXNrLCB3aGljaCBpcyBpbiB0dXJuIHRoZSBiYXNpYyB1bml0CisJb2YgZXhlY3V0aW9uLgorCisJT2JqZWN0OiBBbiBvYmplY3QgaXMgYSBwYXNzaXZlIGVudGl0eSBvbiB0aGUgY29tcHV0ZXIgc3lzdGVtLgorCU9uIFNtYWNrIGZpbGVzIG9mIGFsbCB0eXBlcywgSVBDLCBhbmQgdGFza3MgY2FuIGJlIG9iamVjdHMuCisKKwlBY2Nlc3M6IEFueSBhdHRlbXB0IGJ5IGEgc3ViamVjdCB0byBwdXQgaW5mb3JtYXRpb24gaW50byBvciBnZXQKKwlpbmZvcm1hdGlvbiBmcm9tIGFuIG9iamVjdCBpcyBhbiBhY2Nlc3MuCisKKwlMYWJlbDogRGF0YSB0aGF0IGlkZW50aWZpZXMgdGhlIE1hbmRhdG9yeSBBY2Nlc3MgQ29udHJvbAorCWNoYXJhY3RlcmlzdGljcyBvZiBhIHN1YmplY3Qgb3IgYW4gb2JqZWN0LgorCitUaGVzZSBkZWZpbml0aW9ucyBhcmUgY29uc2lzdGVudCB3aXRoIHRoZSB0cmFkaXRpb25hbCB1c2UgaW4gdGhlIHNlY3VyaXR5Citjb21tdW5pdHkuIFRoZXJlIGFyZSBhbHNvIHNvbWUgdGVybXMgZnJvbSBMaW51eCB0aGF0IGFyZSBsaWtlbHkgdG8gY3JvcCB1cDoKKworCUNhcGFiaWxpdHk6IEEgdGFzayB0aGF0IHBvc3Nlc3NlcyBhIGNhcGFiaWxpdHkgaGFzIHBlcm1pc3Npb24gdG8KKwl2aW9sYXRlIGFuIGFzcGVjdCBvZiB0aGUgc3lzdGVtIHNlY3VyaXR5IHBvbGljeSwgYXMgaWRlbnRpZmllZCBieQorCXRoZSBzcGVjaWZpYyBjYXBhYmlsaXR5LiBBIHRhc2sgdGhhdCBwb3NzZXNzZXMgb25lIG9yIG1vcmUKKwljYXBhYmlsaXRpZXMgaXMgYSBwcml2aWxlZ2VkIHRhc2ssIHdoZXJlYXMgYSB0YXNrIHdpdGggbm8KKwljYXBhYmlsaXRpZXMgaXMgYW4gdW5wcml2aWxlZ2VkIHRhc2suCisKKwlQcml2aWxlZ2U6IEEgdGFzayB0aGF0IGlzIGFsbG93ZWQgdG8gdmlvbGF0ZSB0aGUgc3lzdGVtIHNlY3VyaXR5CisJcG9saWN5IGlzIHNhaWQgdG8gaGF2ZSBwcml2aWxlZ2UuIEFzIG9mIHRoaXMgd3JpdGluZyBhIHRhc2sgY2FuCisJaGF2ZSBwcml2aWxlZ2UgZWl0aGVyIGJ5IHBvc3Nlc3NpbmcgY2FwYWJpbGl0aWVzIG9yIGJ5IGhhdmluZyBhbgorCWVmZmVjdGl2ZSB1c2VyIG9mIHJvb3QuCisKK1NtYWNrIEJhc2ljcworCitTbWFjayBpcyBhbiBleHRlbnNpb24gdG8gYSBMaW51eCBzeXN0ZW0uIEl0IGVuZm9yY2VzIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zCitvbiB3aGF0IHN1YmplY3RzIGNhbiBhY2Nlc3Mgd2hpY2ggb2JqZWN0cywgYmFzZWQgb24gdGhlIGxhYmVscyBhdHRhY2hlZCB0bworZWFjaCBvZiB0aGUgc3ViamVjdCBhbmQgdGhlIG9iamVjdC4KKworTGFiZWxzCisKK1NtYWNrIGxhYmVscyBhcmUgQVNDSUkgY2hhcmFjdGVyIHN0cmluZ3MuIFRoZXkgY2FuIGJlIHVwIHRvIDI1NSBjaGFyYWN0ZXJzCitsb25nLCBidXQga2VlcGluZyB0aGVtIHRvIHR3ZW50eS10aHJlZSBjaGFyYWN0ZXJzIGlzIHJlY29tbWVuZGVkLgorU2luZ2xlIGNoYXJhY3RlciBsYWJlbHMgdXNpbmcgc3BlY2lhbCBjaGFyYWN0ZXJzLCB0aGF0IGJlaW5nIGFueXRoaW5nCitvdGhlciB0aGFuIGEgbGV0dGVyIG9yIGRpZ2l0LCBhcmUgcmVzZXJ2ZWQgZm9yIHVzZSBieSB0aGUgU21hY2sgZGV2ZWxvcG1lbnQKK3RlYW0uIFNtYWNrIGxhYmVscyBhcmUgdW5zdHJ1Y3R1cmVkLCBjYXNlIHNlbnNpdGl2ZSwgYW5kIHRoZSBvbmx5IG9wZXJhdGlvbgorZXZlciBwZXJmb3JtZWQgb24gdGhlbSBpcyBjb21wYXJpc29uIGZvciBlcXVhbGl0eS4gU21hY2sgbGFiZWxzIGNhbm5vdAorY29udGFpbiB1bnByaW50YWJsZSBjaGFyYWN0ZXJzLCB0aGUgIi8iIChzbGFzaCksIHRoZSAiXCIgKGJhY2tzbGFzaCksIHRoZSAiJyIKKyhxdW90ZSkgYW5kICciJyAoZG91YmxlLXF1b3RlKSBjaGFyYWN0ZXJzLgorU21hY2sgbGFiZWxzIGNhbm5vdCBiZWdpbiB3aXRoIGEgJy0nLiBUaGlzIGlzIHJlc2VydmVkIGZvciBzcGVjaWFsIG9wdGlvbnMuCisKK1RoZXJlIGFyZSBzb21lIHByZWRlZmluZWQgbGFiZWxzOgorCisJXyAJUHJvbm91bmNlZCAiZmxvb3IiLCBhIHNpbmdsZSB1bmRlcnNjb3JlIGNoYXJhY3Rlci4KKwleIAlQcm9ub3VuY2VkICJoYXQiLCBhIHNpbmdsZSBjaXJjdW1mbGV4IGNoYXJhY3Rlci4KKwkqIAlQcm9ub3VuY2VkICJzdGFyIiwgYSBzaW5nbGUgYXN0ZXJpc2sgY2hhcmFjdGVyLgorCT8gCVByb25vdW5jZWQgImh1aCIsIGEgc2luZ2xlIHF1ZXN0aW9uIG1hcmsgY2hhcmFjdGVyLgorCUAgCVByb25vdW5jZWQgIndlYiIsIGEgc2luZ2xlIGF0IHNpZ24gY2hhcmFjdGVyLgorCitFdmVyeSB0YXNrIG9uIGEgU21hY2sgc3lzdGVtIGlzIGFzc2lnbmVkIGEgbGFiZWwuIFRoZSBTbWFjayBsYWJlbAorb2YgYSBwcm9jZXNzIHdpbGwgdXN1YWxseSBiZSBhc3NpZ25lZCBieSB0aGUgc3lzdGVtIGluaXRpYWxpemF0aW9uCittZWNoYW5pc20uCisKK0FjY2VzcyBSdWxlcworCitTbWFjayB1c2VzIHRoZSB0cmFkaXRpb25hbCBhY2Nlc3MgbW9kZXMgb2YgTGludXguIFRoZXNlIG1vZGVzIGFyZSByZWFkLAorZXhlY3V0ZSwgd3JpdGUsIGFuZCBvY2Nhc2lvbmFsbHkgYXBwZW5kLiBUaGVyZSBhcmUgYSBmZXcgY2FzZXMgd2hlcmUgdGhlCithY2Nlc3MgbW9kZSBtYXkgbm90IGJlIG9idmlvdXMuIFRoZXNlIGluY2x1ZGU6CisKKwlTaWduYWxzOiBBIHNpZ25hbCBpcyBhIHdyaXRlIG9wZXJhdGlvbiBmcm9tIHRoZSBzdWJqZWN0IHRhc2sgdG8KKwl0aGUgb2JqZWN0IHRhc2suCisJSW50ZXJuZXQgRG9tYWluIElQQzogVHJhbnNtaXNzaW9uIG9mIGEgcGFja2V0IGlzIGNvbnNpZGVyZWQgYQorCXdyaXRlIG9wZXJhdGlvbiBmcm9tIHRoZSBzb3VyY2UgdGFzayB0byB0aGUgZGVzdGluYXRpb24gdGFzay4KKworU21hY2sgcmVzdHJpY3RzIGFjY2VzcyBiYXNlZCBvbiB0aGUgbGFiZWwgYXR0YWNoZWQgdG8gYSBzdWJqZWN0IGFuZCB0aGUgbGFiZWwKK2F0dGFjaGVkIHRvIHRoZSBvYmplY3QgaXQgaXMgdHJ5aW5nIHRvIGFjY2Vzcy4gVGhlIHJ1bGVzIGVuZm9yY2VkIGFyZSwgaW4KK29yZGVyOgorCisJMS4gQW55IGFjY2VzcyByZXF1ZXN0ZWQgYnkgYSB0YXNrIGxhYmVsZWQgIioiIGlzIGRlbmllZC4KKwkyLiBBIHJlYWQgb3IgZXhlY3V0ZSBhY2Nlc3MgcmVxdWVzdGVkIGJ5IGEgdGFzayBsYWJlbGVkICJeIgorCSAgIGlzIHBlcm1pdHRlZC4KKwkzLiBBIHJlYWQgb3IgZXhlY3V0ZSBhY2Nlc3MgcmVxdWVzdGVkIG9uIGFuIG9iamVjdCBsYWJlbGVkICJfIgorCSAgIGlzIHBlcm1pdHRlZC4KKwk0LiBBbnkgYWNjZXNzIHJlcXVlc3RlZCBvbiBhbiBvYmplY3QgbGFiZWxlZCAiKiIgaXMgcGVybWl0dGVkLgorCTUuIEFueSBhY2Nlc3MgcmVxdWVzdGVkIGJ5IGEgdGFzayBvbiBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZQorCSAgIGxhYmVsIGlzIHBlcm1pdHRlZC4KKwk2LiBBbnkgYWNjZXNzIHJlcXVlc3RlZCB0aGF0IGlzIGV4cGxpY2l0bHkgZGVmaW5lZCBpbiB0aGUgbG9hZGVkCisJICAgcnVsZSBzZXQgaXMgcGVybWl0dGVkLgorCTcuIEFueSBvdGhlciBhY2Nlc3MgaXMgZGVuaWVkLgorCitTbWFjayBBY2Nlc3MgUnVsZXMKKworV2l0aCB0aGUgaXNvbGF0aW9uIHByb3ZpZGVkIGJ5IFNtYWNrIGFjY2VzcyBzZXBhcmF0aW9uIGlzIHNpbXBsZS4gVGhlcmUgYXJlCittYW55IGludGVyZXN0aW5nIGNhc2VzIHdoZXJlIGxpbWl0ZWQgYWNjZXNzIGJ5IHN1YmplY3RzIHRvIG9iamVjdHMgd2l0aAorZGlmZmVyZW50IGxhYmVscyBpcyBkZXNpcmVkLiBPbmUgZXhhbXBsZSBpcyB0aGUgZmFtaWxpYXIgc3B5IG1vZGVsIG9mCitzZW5zaXRpdml0eSwgd2hlcmUgYSBzY2llbnRpc3Qgd29ya2luZyBvbiBhIGhpZ2hseSBjbGFzc2lmaWVkIHByb2plY3Qgd291bGQgYmUKK2FibGUgdG8gcmVhZCBkb2N1bWVudHMgb2YgbG93ZXIgY2xhc3NpZmljYXRpb25zIGFuZCBhbnl0aGluZyBzaGUgd3JpdGVzIHdpbGwKK2JlICJib3JuIiBoaWdobHkgY2xhc3NpZmllZC4gVG8gYWNjb21tb2RhdGUgc3VjaCBzY2hlbWVzIFNtYWNrIGluY2x1ZGVzIGEKK21lY2hhbmlzbSBmb3Igc3BlY2lmeWluZyBydWxlcyBhbGxvd2luZyBhY2Nlc3MgYmV0d2VlbiBsYWJlbHMuCisKK0FjY2VzcyBSdWxlIEZvcm1hdAorCitUaGUgZm9ybWF0IG9mIGFuIGFjY2VzcyBydWxlIGlzOgorCisJc3ViamVjdC1sYWJlbCBvYmplY3QtbGFiZWwgYWNjZXNzCisKK1doZXJlIHN1YmplY3QtbGFiZWwgaXMgdGhlIFNtYWNrIGxhYmVsIG9mIHRoZSB0YXNrLCBvYmplY3QtbGFiZWwgaXMgdGhlIFNtYWNrCitsYWJlbCBvZiB0aGUgdGhpbmcgYmVpbmcgYWNjZXNzZWQsIGFuZCBhY2Nlc3MgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc29ydAorb2YgYWNjZXNzIGFsbG93ZWQuIFRoZSBhY2Nlc3Mgc3BlY2lmaWNhdGlvbiBpcyBzZWFyY2hlZCBmb3IgbGV0dGVycyB0aGF0CitkZXNjcmliZSBhY2Nlc3MgbW9kZXM6CisKKwlhOiBpbmRpY2F0ZXMgdGhhdCBhcHBlbmQgYWNjZXNzIHNob3VsZCBiZSBncmFudGVkLgorCXI6IGluZGljYXRlcyB0aGF0IHJlYWQgYWNjZXNzIHNob3VsZCBiZSBncmFudGVkLgorCXc6IGluZGljYXRlcyB0aGF0IHdyaXRlIGFjY2VzcyBzaG91bGQgYmUgZ3JhbnRlZC4KKwl4OiBpbmRpY2F0ZXMgdGhhdCBleGVjdXRlIGFjY2VzcyBzaG91bGQgYmUgZ3JhbnRlZC4KKwl0OiBpbmRpY2F0ZXMgdGhhdCB0aGUgcnVsZSByZXF1ZXN0cyB0cmFuc211dGF0aW9uLgorCWI6IGluZGljYXRlcyB0aGF0IHRoZSBydWxlIHNob3VsZCBiZSByZXBvcnRlZCBmb3IgYnJpbmctdXAuCisKK1VwcGVyY2FzZSB2YWx1ZXMgZm9yIHRoZSBzcGVjaWZpY2F0aW9uIGxldHRlcnMgYXJlIGFsbG93ZWQgYXMgd2VsbC4KK0FjY2VzcyBtb2RlIHNwZWNpZmljYXRpb25zIGNhbiBiZSBpbiBhbnkgb3JkZXIuIEV4YW1wbGVzIG9mIGFjY2VwdGFibGUgcnVsZXMKK2FyZToKKworCVRvcFNlY3JldCBTZWNyZXQgIHJ4CisJU2VjcmV0ICAgIFVuY2xhc3MgUgorCU1hbmFnZXIgICBHYW1lICAgIHgKKwlVc2VyICAgICAgSFIgICAgICB3CisJU25hcCAgICAgIENyYWNrbGUgcnd4YXRiCisJTmV3ICAgICAgIE9sZCAgICAgclJyUnIKKwlDbG9zZWQgICAgT2ZmICAgICAtCisKK0V4YW1wbGVzIG9mIHVuYWNjZXB0YWJsZSBydWxlcyBhcmU6CisKKwlUb3AgU2VjcmV0IFNlY3JldCAgICAgcngKKwlBY2UgICAgICAgIEFjZSAgICAgICAgcgorCU9kZCAgICAgICAgc3BlbGxzICAgICB3YXhiZWFucworCitTcGFjZXMgYXJlIG5vdCBhbGxvd2VkIGluIGxhYmVscy4gU2luY2UgYSBzdWJqZWN0IGFsd2F5cyBoYXMgYWNjZXNzIHRvIGZpbGVzCit3aXRoIHRoZSBzYW1lIGxhYmVsIHNwZWNpZnlpbmcgYSBydWxlIGZvciB0aGF0IGNhc2UgaXMgcG9pbnRsZXNzLiBPbmx5Cit2YWxpZCBsZXR0ZXJzIChyd3hhdGJSV1hBVEIpIGFuZCB0aGUgZGFzaCAoJy0nKSBjaGFyYWN0ZXIgYXJlIGFsbG93ZWQgaW4KK2FjY2VzcyBzcGVjaWZpY2F0aW9ucy4gVGhlIGRhc2ggaXMgYSBwbGFjZWhvbGRlciwgc28gImEtciIgaXMgdGhlIHNhbWUKK2FzICJhciIuIEEgbG9uZSBkYXNoIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGF0IG5vIGFjY2VzcyBzaG91bGQgYmUgYWxsb3dlZC4KKworQXBwbHlpbmcgQWNjZXNzIFJ1bGVzCisKK1RoZSBkZXZlbG9wZXJzIG9mIExpbnV4IHJhcmVseSBkZWZpbmUgbmV3IHNvcnRzIG9mIHRoaW5ncywgdXN1YWxseSBpbXBvcnRpbmcKK3NjaGVtZXMgYW5kIGNvbmNlcHRzIGZyb20gb3RoZXIgc3lzdGVtcy4gTW9zdCBvZnRlbiwgdGhlIG90aGVyIHN5c3RlbXMgYXJlCit2YXJpYW50cyBvZiBVbml4LiBVbml4IGhhcyBtYW55IGVuZGVhcmluZyBwcm9wZXJ0aWVzLCBidXQgY29uc2lzdGVuY3kgb2YKK2FjY2VzcyBjb250cm9sIG1vZGVscyBpcyBub3Qgb25lIG9mIHRoZW0uIFNtYWNrIHN0cml2ZXMgdG8gdHJlYXQgYWNjZXNzZXMgYXMKK3VuaWZvcm1seSBhcyBpcyBzZW5zaWJsZSB3aGlsZSBrZWVwaW5nIHdpdGggdGhlIHNwaXJpdCBvZiB0aGUgdW5kZXJseWluZworbWVjaGFuaXNtLgorCitGaWxlIHN5c3RlbSBvYmplY3RzIGluY2x1ZGluZyBmaWxlcywgZGlyZWN0b3JpZXMsIG5hbWVkIHBpcGVzLCBzeW1ib2xpYyBsaW5rcywKK2FuZCBkZXZpY2VzIHJlcXVpcmUgYWNjZXNzIHBlcm1pc3Npb25zIHRoYXQgY2xvc2VseSBtYXRjaCB0aG9zZSB1c2VkIGJ5IG1vZGUKK2JpdCBhY2Nlc3MuIFRvIG9wZW4gYSBmaWxlIGZvciByZWFkaW5nIHJlYWQgYWNjZXNzIGlzIHJlcXVpcmVkIG9uIHRoZSBmaWxlLiBUbworc2VhcmNoIGEgZGlyZWN0b3J5IHJlcXVpcmVzIGV4ZWN1dGUgYWNjZXNzLiBDcmVhdGluZyBhIGZpbGUgd2l0aCB3cml0ZSBhY2Nlc3MKK3JlcXVpcmVzIGJvdGggcmVhZCBhbmQgd3JpdGUgYWNjZXNzIG9uIHRoZSBjb250YWluaW5nIGRpcmVjdG9yeS4gRGVsZXRpbmcgYQorZmlsZSByZXF1aXJlcyByZWFkIGFuZCB3cml0ZSBhY2Nlc3MgdG8gdGhlIGZpbGUgYW5kIHRvIHRoZSBjb250YWluaW5nCitkaXJlY3RvcnkuIEl0IGlzIHBvc3NpYmxlIHRoYXQgYSB1c2VyIG1heSBiZSBhYmxlIHRvIHNlZSB0aGF0IGEgZmlsZSBleGlzdHMKK2J1dCBub3QgYW55IG9mIGl0cyBhdHRyaWJ1dGVzIGJ5IHRoZSBjaXJjdW1zdGFuY2Ugb2YgaGF2aW5nIHJlYWQgYWNjZXNzIHRvIHRoZQorY29udGFpbmluZyBkaXJlY3RvcnkgYnV0IG5vdCB0byB0aGUgZGlmZmVyZW50bHkgbGFiZWxlZCBmaWxlLiBUaGlzIGlzIGFuCithcnRpZmFjdCBvZiB0aGUgZmlsZSBuYW1lIGJlaW5nIGRhdGEgaW4gdGhlIGRpcmVjdG9yeSwgbm90IGEgcGFydCBvZiB0aGUgZmlsZS4KKworSWYgYSBkaXJlY3RvcnkgaXMgbWFya2VkIGFzIHRyYW5zbXV0aW5nIChTTUFDSzY0VFJBTlNNVVRFPVRSVUUpIGFuZCB0aGUKK2FjY2VzcyBydWxlIHRoYXQgYWxsb3dzIGEgcHJvY2VzcyB0byBjcmVhdGUgYW4gb2JqZWN0IGluIHRoYXQgZGlyZWN0b3J5CitpbmNsdWRlcyAndCcgYWNjZXNzIHRoZSBsYWJlbCBhc3NpZ25lZCB0byB0aGUgbmV3IG9iamVjdCB3aWxsIGJlIHRoYXQKK29mIHRoZSBkaXJlY3RvcnksIG5vdCB0aGUgY3JlYXRpbmcgcHJvY2Vzcy4gVGhpcyBtYWtlcyBpdCBtdWNoIGVhc2llcgorZm9yIHR3byBwcm9jZXNzZXMgd2l0aCBkaWZmZXJlbnQgbGFiZWxzIHRvIHNoYXJlIGRhdGEgd2l0aG91dCBncmFudGluZworYWNjZXNzIHRvIGFsbCBvZiB0aGVpciBmaWxlcy4KKworSVBDIG9iamVjdHMsIG1lc3NhZ2UgcXVldWVzLCBzZW1hcGhvcmUgc2V0cywgYW5kIG1lbW9yeSBzZWdtZW50cyBleGlzdCBpbiBmbGF0CituYW1lc3BhY2VzIGFuZCBhY2Nlc3MgcmVxdWVzdHMgYXJlIG9ubHkgcmVxdWlyZWQgdG8gbWF0Y2ggdGhlIG9iamVjdCBpbgorcXVlc3Rpb24uCisKK1Byb2Nlc3Mgb2JqZWN0cyByZWZsZWN0IHRhc2tzIG9uIHRoZSBzeXN0ZW0gYW5kIHRoZSBTbWFjayBsYWJlbCB1c2VkIHRvIGFjY2VzcwordGhlbSBpcyB0aGUgc2FtZSBTbWFjayBsYWJlbCB0aGF0IHRoZSB0YXNrIHdvdWxkIHVzZSBmb3IgaXRzIG93biBhY2Nlc3MKK2F0dGVtcHRzLiBTZW5kaW5nIGEgc2lnbmFsIHZpYSB0aGUga2lsbCgpIHN5c3RlbSBjYWxsIGlzIGEgd3JpdGUgb3BlcmF0aW9uCitmcm9tIHRoZSBzaWduYWxlciB0byB0aGUgcmVjaXBpZW50LiBEZWJ1Z2dpbmcgYSBwcm9jZXNzIHJlcXVpcmVzIGJvdGggcmVhZGluZworYW5kIHdyaXRpbmcuIENyZWF0aW5nIGEgbmV3IHRhc2sgaXMgYW4gaW50ZXJuYWwgb3BlcmF0aW9uIHRoYXQgcmVzdWx0cyBpbiB0d28KK3Rhc2tzIHdpdGggaWRlbnRpY2FsIFNtYWNrIGxhYmVscyBhbmQgcmVxdWlyZXMgbm8gYWNjZXNzIGNoZWNrcy4KKworU29ja2V0cyBhcmUgZGF0YSBzdHJ1Y3R1cmVzIGF0dGFjaGVkIHRvIHByb2Nlc3NlcyBhbmQgc2VuZGluZyBhIHBhY2tldCBmcm9tCitvbmUgcHJvY2VzcyB0byBhbm90aGVyIHJlcXVpcmVzIHRoYXQgdGhlIHNlbmRlciBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGUKK3JlY2VpdmVyLiBUaGUgcmVjZWl2ZXIgaXMgbm90IHJlcXVpcmVkIHRvIGhhdmUgcmVhZCBhY2Nlc3MgdG8gdGhlIHNlbmRlci4KKworU2V0dGluZyBBY2Nlc3MgUnVsZXMKKworVGhlIGNvbmZpZ3VyYXRpb24gZmlsZSAvZXRjL3NtYWNrL2FjY2Vzc2VzIGNvbnRhaW5zIHRoZSBydWxlcyB0byBiZSBzZXQgYXQKK3N5c3RlbSBzdGFydHVwLiBUaGUgY29udGVudHMgYXJlIHdyaXR0ZW4gdG8gdGhlIHNwZWNpYWwgZmlsZQorL3N5cy9mcy9zbWFja2ZzL2xvYWQyLiBSdWxlcyBjYW4gYmUgYWRkZWQgYXQgYW55IHRpbWUgYW5kIHRha2UgZWZmZWN0CitpbW1lZGlhdGVseS4gRm9yIGFueSBwYWlyIG9mIHN1YmplY3QgYW5kIG9iamVjdCBsYWJlbHMgdGhlcmUgY2FuIGJlIG9ubHkKK29uZSBydWxlLCB3aXRoIHRoZSBtb3N0IHJlY2VudGx5IHNwZWNpZmllZCBvdmVycmlkaW5nIGFueSBlYXJsaWVyCitzcGVjaWZpY2F0aW9uLgorCitUYXNrIEF0dHJpYnV0ZQorCitUaGUgU21hY2sgbGFiZWwgb2YgYSBwcm9jZXNzIGNhbiBiZSByZWFkIGZyb20gL3Byb2MvPHBpZD4vYXR0ci9jdXJyZW50LiBBCitwcm9jZXNzIGNhbiByZWFkIGl0cyBvd24gU21hY2sgbGFiZWwgZnJvbSAvcHJvYy9zZWxmL2F0dHIvY3VycmVudC4gQQorcHJpdmlsZWdlZCBwcm9jZXNzIGNhbiBjaGFuZ2UgaXRzIG93biBTbWFjayBsYWJlbCBieSB3cml0aW5nIHRvCisvcHJvYy9zZWxmL2F0dHIvY3VycmVudCBidXQgbm90IHRoZSBsYWJlbCBvZiBhbm90aGVyIHByb2Nlc3MuCisKK0ZpbGUgQXR0cmlidXRlCisKK1RoZSBTbWFjayBsYWJlbCBvZiBhIGZpbGVzeXN0ZW0gb2JqZWN0IGlzIHN0b3JlZCBhcyBhbiBleHRlbmRlZCBhdHRyaWJ1dGUKK25hbWVkIFNNQUNLNjQgb24gdGhlIGZpbGUuIFRoaXMgYXR0cmlidXRlIGlzIGluIHRoZSBzZWN1cml0eSBuYW1lc3BhY2UuIEl0IGNhbgorb25seSBiZSBjaGFuZ2VkIGJ5IGEgcHJvY2VzcyB3aXRoIHByaXZpbGVnZS4KKworUHJpdmlsZWdlCisKK0EgcHJvY2VzcyB3aXRoIENBUF9NQUNfT1ZFUlJJREUgb3IgQ0FQX01BQ19BRE1JTiBpcyBwcml2aWxlZ2VkLgorQ0FQX01BQ19PVkVSUklERSBhbGxvd3MgdGhlIHByb2Nlc3MgYWNjZXNzIHRvIG9iamVjdHMgaXQgd291bGQKK2JlIGRlbmllZCBvdGhlcndpc2UuIENBUF9NQUNfQURNSU4gYWxsb3dzIGEgcHJvY2VzcyB0byBjaGFuZ2UKK1NtYWNrIGRhdGEsIGluY2x1ZGluZyBydWxlcyBhbmQgYXR0cmlidXRlcy4KKworU21hY2sgTmV0d29ya2luZworCitBcyBtZW50aW9uZWQgYmVmb3JlLCBTbWFjayBlbmZvcmNlcyBhY2Nlc3MgY29udHJvbCBvbiBuZXR3b3JrIHByb3RvY29sCit0cmFuc21pc3Npb25zLiBFdmVyeSBwYWNrZXQgc2VudCBieSBhIFNtYWNrIHByb2Nlc3MgaXMgdGFnZ2VkIHdpdGggaXRzIFNtYWNrCitsYWJlbC4gVGhpcyBpcyBkb25lIGJ5IGFkZGluZyBhIENJUFNPIHRhZyB0byB0aGUgaGVhZGVyIG9mIHRoZSBJUCBwYWNrZXQuIEVhY2gKK3BhY2tldCByZWNlaXZlZCBpcyBleHBlY3RlZCB0byBoYXZlIGEgQ0lQU08gdGFnIHRoYXQgaWRlbnRpZmllcyB0aGUgbGFiZWwgYW5kCitpZiBpdCBsYWNrcyBzdWNoIGEgdGFnIHRoZSBuZXR3b3JrIGFtYmllbnQgbGFiZWwgaXMgYXNzdW1lZC4gQmVmb3JlIHRoZSBwYWNrZXQKK2lzIGRlbGl2ZXJlZCBhIGNoZWNrIGlzIG1hZGUgdG8gZGV0ZXJtaW5lIHRoYXQgYSBzdWJqZWN0IHdpdGggdGhlIGxhYmVsIG9uIHRoZQorcGFja2V0IGhhcyB3cml0ZSBhY2Nlc3MgdG8gdGhlIHJlY2VpdmluZyBwcm9jZXNzIGFuZCBpZiB0aGF0IGlzIG5vdCB0aGUgY2FzZQordGhlIHBhY2tldCBpcyBkcm9wcGVkLgorCitDSVBTTyBDb25maWd1cmF0aW9uCisKK0l0IGlzIG5vcm1hbGx5IHVubmVjZXNzYXJ5IHRvIHNwZWNpZnkgdGhlIENJUFNPIGNvbmZpZ3VyYXRpb24uIFRoZSBkZWZhdWx0Cit2YWx1ZXMgdXNlZCBieSB0aGUgc3lzdGVtIGhhbmRsZSBhbGwgaW50ZXJuYWwgY2FzZXMuIFNtYWNrIHdpbGwgY29tcG9zZSBDSVBTTworbGFiZWwgdmFsdWVzIHRvIG1hdGNoIHRoZSBTbWFjayBsYWJlbHMgYmVpbmcgdXNlZCB3aXRob3V0IGFkbWluaXN0cmF0aXZlCitpbnRlcnZlbnRpb24uIFVubGFiZWxlZCBwYWNrZXRzIHRoYXQgY29tZSBpbnRvIHRoZSBzeXN0ZW0gd2lsbCBiZSBnaXZlbiB0aGUKK2FtYmllbnQgbGFiZWwuCisKK1NtYWNrIHJlcXVpcmVzIGNvbmZpZ3VyYXRpb24gaW4gdGhlIGNhc2Ugd2hlcmUgcGFja2V0cyBmcm9tIGEgc3lzdGVtIHRoYXQgaXMKK25vdCBTbWFjayB0aGF0IHNwZWFrcyBDSVBTTyBtYXkgYmUgZW5jb3VudGVyZWQuIFVzdWFsbHkgdGhpcyB3aWxsIGJlIGEgVHJ1c3RlZAorU29sYXJpcyBzeXN0ZW0sIGJ1dCB0aGVyZSBhcmUgb3RoZXIsIGxlc3Mgd2lkZWx5IGRlcGxveWVkIHN5c3RlbXMgb3V0IHRoZXJlLgorQ0lQU08gcHJvdmlkZXMgMyBpbXBvcnRhbnQgdmFsdWVzLCBhIERvbWFpbiBPZiBJbnRlcnByZXRhdGlvbiAoRE9JKSwgYSBsZXZlbCwKK2FuZCBhIGNhdGVnb3J5IHNldCB3aXRoIGVhY2ggcGFja2V0LiBUaGUgRE9JIGlzIGludGVuZGVkIHRvIGlkZW50aWZ5IGEgZ3JvdXAKK29mIHN5c3RlbXMgdGhhdCB1c2UgY29tcGF0aWJsZSBsYWJlbGluZyBzY2hlbWVzLCBhbmQgdGhlIERPSSBzcGVjaWZpZWQgb24gdGhlCitTbWFjayBzeXN0ZW0gbXVzdCBtYXRjaCB0aGF0IG9mIHRoZSByZW1vdGUgc3lzdGVtIG9yIHBhY2tldHMgd2lsbCBiZQorZGlzY2FyZGVkLiBUaGUgRE9JIGlzIDMgYnkgZGVmYXVsdC4gVGhlIHZhbHVlIGNhbiBiZSByZWFkIGZyb20KKy9zeXMvZnMvc21hY2tmcy9kb2kgYW5kIGNhbiBiZSBjaGFuZ2VkIGJ5IHdyaXRpbmcgdG8gL3N5cy9mcy9zbWFja2ZzL2RvaS4KKworVGhlIGxhYmVsIGFuZCBjYXRlZ29yeSBzZXQgYXJlIG1hcHBlZCB0byBhIFNtYWNrIGxhYmVsIGFzIGRlZmluZWQgaW4KKy9ldGMvc21hY2svY2lwc28uCisKK0EgU21hY2svQ0lQU08gbWFwcGluZyBoYXMgdGhlIGZvcm06CisKKwlzbWFjayBsZXZlbCBbY2F0ZWdvcnkgW2NhdGVnb3J5XSpdCisKK1NtYWNrIGRvZXMgbm90IGV4cGVjdCB0aGUgbGV2ZWwgb3IgY2F0ZWdvcnkgc2V0cyB0byBiZSByZWxhdGVkIGluIGFueQorcGFydGljdWxhciB3YXkgYW5kIGRvZXMgbm90IGFzc3VtZSBvciBhc3NpZ24gYWNjZXNzZXMgYmFzZWQgb24gdGhlbS4gU29tZQorZXhhbXBsZXMgb2YgbWFwcGluZ3M6CisKKwlUb3BTZWNyZXQgNworCVRTOkEsQiAgICA3IDEgMgorCVNlY0JERSAgICA1IDIgNCA2CisJUkFGVEVSUyAgIDcgMTIgMjYKKworVGhlICI6IiBhbmQgIiwiIGNoYXJhY3RlcnMgYXJlIHBlcm1pdHRlZCBpbiBhIFNtYWNrIGxhYmVsIGJ1dCBoYXZlIG5vIHNwZWNpYWwKK21lYW5pbmcuCisKK1RoZSBtYXBwaW5nIG9mIFNtYWNrIGxhYmVscyB0byBDSVBTTyB2YWx1ZXMgaXMgZGVmaW5lZCBieSB3cml0aW5nIHRvCisvc3lzL2ZzL3NtYWNrZnMvY2lwc28yLgorCitJbiBhZGRpdGlvbiB0byBleHBsaWNpdCBtYXBwaW5ncyBTbWFjayBzdXBwb3J0cyBkaXJlY3QgQ0lQU08gbWFwcGluZ3MuIE9uZQorQ0lQU08gbGV2ZWwgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBjYXRlZ29yeSBzZXQgcGFzc2VkIGluIHRoZSBwYWNrZXQgaXMKK2luIGZhY3QgYW4gZW5jb2Rpbmcgb2YgdGhlIFNtYWNrIGxhYmVsLiBUaGUgbGV2ZWwgdXNlZCBpcyAyNTAgYnkgZGVmYXVsdC4gVGhlCit2YWx1ZSBjYW4gYmUgcmVhZCBmcm9tIC9zeXMvZnMvc21hY2tmcy9kaXJlY3QgYW5kIGNoYW5nZWQgYnkgd3JpdGluZyB0bworL3N5cy9mcy9zbWFja2ZzL2RpcmVjdC4KKworU29ja2V0IEF0dHJpYnV0ZXMKKworVGhlcmUgYXJlIHR3byBhdHRyaWJ1dGVzIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCBzb2NrZXRzLiBUaGVzZSBhdHRyaWJ1dGVzCitjYW4gb25seSBiZSBzZXQgYnkgcHJpdmlsZWdlZCB0YXNrcywgYnV0IGFueSB0YXNrIGNhbiByZWFkIHRoZW0gZm9yIHRoZWlyIG93bgorc29ja2V0cy4KKworCVNNQUNLNjRJUElOOiBUaGUgU21hY2sgbGFiZWwgb2YgdGhlIHRhc2sgb2JqZWN0LiBBIHByaXZpbGVnZWQKKwlwcm9ncmFtIHRoYXQgd2lsbCBlbmZvcmNlIHBvbGljeSBtYXkgc2V0IHRoaXMgdG8gdGhlIHN0YXIgbGFiZWwuCisKKwlTTUFDSzY0SVBPVVQ6IFRoZSBTbWFjayBsYWJlbCB0cmFuc21pdHRlZCB3aXRoIG91dGdvaW5nIHBhY2tldHMuCisJQSBwcml2aWxlZ2VkIHByb2dyYW0gbWF5IHNldCB0aGlzIHRvIG1hdGNoIHRoZSBsYWJlbCBvZiBhbm90aGVyCisJdGFzayB3aXRoIHdoaWNoIGl0IGhvcGVzIHRvIGNvbW11bmljYXRlLgorCitTbWFjayBOZXRsYWJlbCBFeGNlcHRpb25zCisKK1lvdSB3aWxsIG9mdGVuIGZpbmQgdGhhdCB5b3VyIGxhYmVsZWQgYXBwbGljYXRpb24gaGFzIHRvIHRhbGsgdG8gdGhlIG91dHNpZGUsCit1bmxhYmVsZWQgd29ybGQuIFRvIGRvIHRoaXMgdGhlcmUncyBhIHNwZWNpYWwgZmlsZSAvc3lzL2ZzL3NtYWNrZnMvbmV0bGFiZWwKK3doZXJlIHlvdSBjYW4gYWRkIHNvbWUgZXhjZXB0aW9ucyBpbiB0aGUgZm9ybSBvZiA6CitASVAxCSAgIExBQkVMMSBvcgorQElQMi9NQVNLICBMQUJFTDIKKworSXQgbWVhbnMgdGhhdCB5b3VyIGFwcGxpY2F0aW9uIHdpbGwgaGF2ZSB1bmxhYmVsZWQgYWNjZXNzIHRvIEBJUDEgaWYgaXQgaGFzCit3cml0ZSBhY2Nlc3Mgb24gTEFCRUwxLCBhbmQgYWNjZXNzIHRvIHRoZSBzdWJuZXQgQElQMi9NQVNLIGlmIGl0IGhhcyB3cml0ZQorYWNjZXNzIG9uIExBQkVMMi4KKworRW50cmllcyBpbiB0aGUgL3N5cy9mcy9zbWFja2ZzL25ldGxhYmVsIGZpbGUgYXJlIG1hdGNoZWQgYnkgbG9uZ2VzdCBtYXNrCitmaXJzdCwgbGlrZSBpbiBjbGFzc2xlc3MgSVB2NCByb3V0aW5nLgorCitBIHNwZWNpYWwgbGFiZWwgJ0AnIGFuZCBhbiBvcHRpb24gJy1DSVBTTycgY2FuIGJlIHVzZWQgdGhlcmUgOgorQCAgICAgIG1lYW5zIEludGVybmV0LCBhbnkgYXBwbGljYXRpb24gd2l0aCBhbnkgbGFiZWwgaGFzIGFjY2VzcyB0byBpdAorLUNJUFNPIG1lYW5zIHN0YW5kYXJkIENJUFNPIG5ldHdvcmtpbmcKKworSWYgeW91IGRvbid0IGtub3cgd2hhdCBDSVBTTyBpcyBhbmQgZG9uJ3QgcGxhbiB0byB1c2UgaXQsIHlvdSBjYW4ganVzdCBkbyA6CitlY2hvIDEyNy4wLjAuMSAtQ0lQU08gPiAvc3lzL2ZzL3NtYWNrZnMvbmV0bGFiZWwKK2VjaG8gMC4wLjAuMC8wIEAgICAgICA+IC9zeXMvZnMvc21hY2tmcy9uZXRsYWJlbAorCitJZiB5b3UgdXNlIENJUFNPIG9uIHlvdXIgMTkyLjE2OC4wLjAvMTYgbG9jYWwgbmV0d29yayBhbmQgbmVlZCBhbHNvIHVubGFiZWxlZAorSW50ZXJuZXQgYWNjZXNzLCB5b3UgY2FuIGhhdmUgOgorZWNobyAxMjcuMC4wLjEgICAgICAtQ0lQU08gPiAvc3lzL2ZzL3NtYWNrZnMvbmV0bGFiZWwKK2VjaG8gMTkyLjE2OC4wLjAvMTYgLUNJUFNPID4gL3N5cy9mcy9zbWFja2ZzL25ldGxhYmVsCitlY2hvIDAuMC4wLjAvMCAgICAgIEAgICAgICA+IC9zeXMvZnMvc21hY2tmcy9uZXRsYWJlbAorCisKK1dyaXRpbmcgQXBwbGljYXRpb25zIGZvciBTbWFjaworCitUaGVyZSBhcmUgdGhyZWUgc29ydHMgb2YgYXBwbGljYXRpb25zIHRoYXQgd2lsbCBydW4gb24gYSBTbWFjayBzeXN0ZW0uIEhvdyBhbgorYXBwbGljYXRpb24gaW50ZXJhY3RzIHdpdGggU21hY2sgd2lsbCBkZXRlcm1pbmUgd2hhdCBpdCB3aWxsIGhhdmUgdG8gZG8gdG8KK3dvcmsgcHJvcGVybHkgdW5kZXIgU21hY2suCisKK1NtYWNrIElnbm9yYW50IEFwcGxpY2F0aW9ucworCitCeSBmYXIgdGhlIG1ham9yaXR5IG9mIGFwcGxpY2F0aW9ucyBoYXZlIG5vIHJlYXNvbiB3aGF0ZXZlciB0byBjYXJlIGFib3V0IHRoZQordW5pcXVlIHByb3BlcnRpZXMgb2YgU21hY2suIFNpbmNlIGludm9raW5nIGEgcHJvZ3JhbSBoYXMgbm8gaW1wYWN0IG9uIHRoZQorU21hY2sgbGFiZWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm9jZXNzIHRoZSBvbmx5IGNvbmNlcm4gbGlrZWx5IHRvIGFyaXNlIGlzCit3aGV0aGVyIHRoZSBwcm9jZXNzIGhhcyBleGVjdXRlIGFjY2VzcyB0byB0aGUgcHJvZ3JhbS4KKworU21hY2sgUmVsZXZhbnQgQXBwbGljYXRpb25zCisKK1NvbWUgcHJvZ3JhbXMgY2FuIGJlIGltcHJvdmVkIGJ5IHRlYWNoaW5nIHRoZW0gYWJvdXQgU21hY2ssIGJ1dCBkbyBub3QgbWFrZQorYW55IHNlY3VyaXR5IGRlY2lzaW9ucyB0aGVtc2VsdmVzLiBUaGUgdXRpbGl0eSBscygxKSBpcyBvbmUgZXhhbXBsZSBvZiBzdWNoIGEKK3Byb2dyYW0uCisKK1NtYWNrIEVuZm9yY2luZyBBcHBsaWNhdGlvbnMKKworVGhlc2UgYXJlIHNwZWNpYWwgcHJvZ3JhbXMgdGhhdCBub3Qgb25seSBrbm93IGFib3V0IFNtYWNrLCBidXQgcGFydGljaXBhdGUgaW4KK3RoZSBlbmZvcmNlbWVudCBvZiBzeXN0ZW0gcG9saWN5LiBJbiBtb3N0IGNhc2VzIHRoZXNlIGFyZSB0aGUgcHJvZ3JhbXMgdGhhdAorc2V0IHVwIHVzZXIgc2Vzc2lvbnMuIFRoZXJlIGFyZSBhbHNvIG5ldHdvcmsgc2VydmljZXMgdGhhdCBwcm92aWRlIGluZm9ybWF0aW9uCit0byBwcm9jZXNzZXMgcnVubmluZyB3aXRoIHZhcmlvdXMgbGFiZWxzLgorCitGaWxlIFN5c3RlbSBJbnRlcmZhY2VzCisKK1NtYWNrIG1haW50YWlucyBsYWJlbHMgb24gZmlsZSBzeXN0ZW0gb2JqZWN0cyB1c2luZyBleHRlbmRlZCBhdHRyaWJ1dGVzLiBUaGUKK1NtYWNrIGxhYmVsIG9mIGEgZmlsZSwgZGlyZWN0b3J5LCBvciBvdGhlciBmaWxlIHN5c3RlbSBvYmplY3QgY2FuIGJlIG9idGFpbmVkCit1c2luZyBnZXR4YXR0cigyKS4KKworCWxlbiA9IGdldHhhdHRyKCIvIiwgInNlY3VyaXR5LlNNQUNLNjQiLCB2YWx1ZSwgc2l6ZW9mICh2YWx1ZSkpOworCit3aWxsIHB1dCB0aGUgU21hY2sgbGFiZWwgb2YgdGhlIHJvb3QgZGlyZWN0b3J5IGludG8gdmFsdWUuIEEgcHJpdmlsZWdlZAorcHJvY2VzcyBjYW4gc2V0IHRoZSBTbWFjayBsYWJlbCBvZiBhIGZpbGUgc3lzdGVtIG9iamVjdCB3aXRoIHNldHhhdHRyKDIpLgorCisJbGVuID0gc3RybGVuKCJSdWJibGUiKTsKKwlyYyA9IHNldHhhdHRyKCIvZm9vIiwgInNlY3VyaXR5LlNNQUNLNjQiLCAiUnViYmxlIiwgbGVuLCAwKTsKKword2lsbCBzZXQgdGhlIFNtYWNrIGxhYmVsIG9mIC9mb28gdG8gIlJ1YmJsZSIgaWYgdGhlIHByb2dyYW0gaGFzIGFwcHJvcHJpYXRlCitwcml2aWxlZ2UuCisKK1NvY2tldCBJbnRlcmZhY2VzCisKK1RoZSBzb2NrZXQgYXR0cmlidXRlcyBjYW4gYmUgcmVhZCB1c2luZyBmZ2V0eGF0dHIoMikuCisKK0EgcHJpdmlsZWdlZCBwcm9jZXNzIGNhbiBzZXQgdGhlIFNtYWNrIGxhYmVsIG9mIG91dGdvaW5nIHBhY2tldHMgd2l0aAorZnNldHhhdHRyKDIpLgorCisJbGVuID0gc3RybGVuKCJSdWJibGUiKTsKKwlyYyA9IGZzZXR4YXR0cihmZCwgInNlY3VyaXR5LlNNQUNLNjRJUE9VVCIsICJSdWJibGUiLCBsZW4sIDApOworCit3aWxsIHNldCB0aGUgU21hY2sgbGFiZWwgIlJ1YmJsZSIgb24gcGFja2V0cyBnb2luZyBvdXQgZnJvbSB0aGUgc29ja2V0IGlmIHRoZQorcHJvZ3JhbSBoYXMgYXBwcm9wcmlhdGUgcHJpdmlsZWdlLgorCisJcmMgPSBmc2V0eGF0dHIoZmQsICJzZWN1cml0eS5TTUFDSzY0SVBJTiwgIioiLCBzdHJsZW4oIioiKSwgMCk7CisKK3dpbGwgc2V0IHRoZSBTbWFjayBsYWJlbCAiKiIgYXMgdGhlIG9iamVjdCBsYWJlbCBhZ2FpbnN0IHdoaWNoIGluY29taW5nCitwYWNrZXRzIHdpbGwgYmUgY2hlY2tlZCBpZiB0aGUgcHJvZ3JhbSBoYXMgYXBwcm9wcmlhdGUgcHJpdmlsZWdlLgorCitBZG1pbmlzdHJhdGlvbgorCitTbWFjayBzdXBwb3J0cyBzb21lIG1vdW50IG9wdGlvbnM6CisKKwlzbWFja2ZzZGVmPWxhYmVsOiBzcGVjaWZpZXMgdGhlIGxhYmVsIHRvIGdpdmUgZmlsZXMgdGhhdCBsYWNrCisJdGhlIFNtYWNrIGxhYmVsIGV4dGVuZGVkIGF0dHJpYnV0ZS4KKworCXNtYWNrZnNyb290PWxhYmVsOiBzcGVjaWZpZXMgdGhlIGxhYmVsIHRvIGFzc2lnbiB0aGUgcm9vdCBvZiB0aGUKKwlmaWxlIHN5c3RlbSBpZiBpdCBsYWNrcyB0aGUgU21hY2sgZXh0ZW5kZWQgYXR0cmlidXRlLgorCisJc21hY2tmc2hhdD1sYWJlbDogc3BlY2lmaWVzIGEgbGFiZWwgdGhhdCBtdXN0IGhhdmUgcmVhZCBhY2Nlc3MgdG8KKwlhbGwgbGFiZWxzIHNldCBvbiB0aGUgZmlsZXN5c3RlbS4gTm90IHlldCBlbmZvcmNlZC4KKworCXNtYWNrZnNmbG9vcj1sYWJlbDogc3BlY2lmaWVzIGEgbGFiZWwgdG8gd2hpY2ggYWxsIGxhYmVscyBzZXQgb24gdGhlCisJZmlsZXN5c3RlbSBtdXN0IGhhdmUgcmVhZCBhY2Nlc3MuIE5vdCB5ZXQgZW5mb3JjZWQuCisKK1RoZXNlIG1vdW50IG9wdGlvbnMgYXBwbHkgdG8gYWxsIGZpbGUgc3lzdGVtIHR5cGVzLgorCitTbWFjayBhdWRpdGluZworCitJZiB5b3Ugd2FudCBTbWFjayBhdWRpdGluZyBvZiBzZWN1cml0eSBldmVudHMsIHlvdSBuZWVkIHRvIHNldCBDT05GSUdfQVVESVQKK2luIHlvdXIga2VybmVsIGNvbmZpZ3VyYXRpb24uCitCeSBkZWZhdWx0LCBhbGwgZGVuaWVkIGV2ZW50cyB3aWxsIGJlIGF1ZGl0ZWQuIFlvdSBjYW4gY2hhbmdlIHRoaXMgYmVoYXZpb3IgYnkKK3dyaXRpbmcgYSBzaW5nbGUgY2hhcmFjdGVyIHRvIHRoZSAvc3lzL2ZzL3NtYWNrZnMvbG9nZ2luZyBmaWxlIDoKKzAgOiBubyBsb2dnaW5nCisxIDogbG9nIGRlbmllZCAoZGVmYXVsdCkKKzIgOiBsb2cgYWNjZXB0ZWQKKzMgOiBsb2cgZGVuaWVkICYgYWNjZXB0ZWQKKworRXZlbnRzIGFyZSBsb2dnZWQgYXMgJ2tleT12YWx1ZScgcGFpcnMsIGZvciBlYWNoIGV2ZW50IHlvdSBhdCBsZWFzdCB3aWxsIGdldAordGhlIHN1YmplY3QsIHRoZSBvYmplY3QsIHRoZSByaWdodHMgcmVxdWVzdGVkLCB0aGUgYWN0aW9uLCB0aGUga2VybmVsIGZ1bmN0aW9uCit0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQsIHBsdXMgb3RoZXIgcGFpcnMgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIGV2ZW50CithdWRpdGVkLgorCitCcmluZ3VwIE1vZGUKKworQnJpbmd1cCBtb2RlIHByb3ZpZGVzIGxvZ2dpbmcgZmVhdHVyZXMgdGhhdCBjYW4gbWFrZSBhcHBsaWNhdGlvbgorY29uZmlndXJhdGlvbiBhbmQgc3lzdGVtIGJyaW5ndXAgZWFzaWVyLiBDb25maWd1cmUgdGhlIGtlcm5lbCB3aXRoCitDT05GSUdfU0VDVVJJVFlfU01BQ0tfQlJJTkdVUCB0byBlbmFibGUgdGhlc2UgZmVhdHVyZXMuIFdoZW4gYnJpbmd1cAorbW9kZSBpcyBlbmFibGVkIGFjY2Vzc2VzIHRoYXQgc3VjY2VlZCBkdWUgdG8gcnVsZXMgbWFya2VkIHdpdGggdGhlICJiIgorYWNjZXNzIG1vZGUgd2lsbCBsb2dnZWQuIFdoZW4gYSBuZXcgbGFiZWwgaXMgaW50cm9kdWNlZCBmb3IgcHJvY2Vzc2VzCitydWxlcyBjYW4gYmUgYWRkZWQgYWdncmVzc2l2ZWx5LCBtYXJrZWQgd2l0aCB0aGUgImIiLiBUaGUgbG9nZ2luZyBhbGxvd3MKK3RyYWNraW5nIG9mIHdoaWNoIHJ1bGVzIGFjdHVhbCBnZXQgdXNlZCBmb3IgdGhhdCBsYWJlbC4KKworQW5vdGhlciBmZWF0dXJlIG9mIGJyaW5ndXAgbW9kZSBpcyB0aGUgInVuY29uZmluZWQiIG9wdGlvbi4gV3JpdGluZworYSBsYWJlbCB0byAvc3lzL2ZzL3NtYWNrZnMvdW5jb25maW5lZCBtYWtlcyBzdWJqZWN0cyB3aXRoIHRoYXQgbGFiZWwKK2FibGUgdG8gYWNjZXNzIGFueSBvYmplY3QsIGFuZCBvYmplY3RzIHdpdGggdGhhdCBsYWJlbCBhY2Nlc3NpYmxlIHRvCithbGwgc3ViamVjdHMuIEFueSBhY2Nlc3MgdGhhdCBpcyBncmFudGVkIGJlY2F1c2UgYSBsYWJlbCBpcyB1bmNvbmZpbmVkCitpcyBsb2dnZWQuIFRoaXMgZmVhdHVyZSBpcyBkYW5nZXJvdXMsIGFzIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBtYXkKK2JlIGNyZWF0ZWQgaW4gcGxhY2VzIHRoZXkgY291bGRuJ3QgaWYgdGhlIHBvbGljeSB3ZXJlIGJlaW5nIGVuZm9yY2VkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9ZYW1hLnR4dCBiL0RvY3VtZW50YXRpb24vc2VjdXJpdHkvWWFtYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDllZTdkNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2VjdXJpdHkvWWFtYS50eHQKQEAgLTAsMCArMSw3MSBAQAorWWFtYSBpcyBhIExpbnV4IFNlY3VyaXR5IE1vZHVsZSB0aGF0IGNvbGxlY3RzIHN5c3RlbS13aWRlIERBQyBzZWN1cml0eQorcHJvdGVjdGlvbnMgdGhhdCBhcmUgbm90IGhhbmRsZWQgYnkgdGhlIGNvcmUga2VybmVsIGl0c2VsZi4gVGhpcyBpcworc2VsZWN0YWJsZSBhdCBidWlsZC10aW1lIHdpdGggQ09ORklHX1NFQ1VSSVRZX1lBTUEsIGFuZCBjYW4gYmUgY29udHJvbGxlZAorYXQgcnVuLXRpbWUgdGhyb3VnaCBzeXNjdGxzIGluIC9wcm9jL3N5cy9rZXJuZWwveWFtYToKKworLSBwdHJhY2Vfc2NvcGUKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcHRyYWNlX3Njb3BlOgorCitBcyBMaW51eCBncm93cyBpbiBwb3B1bGFyaXR5LCBpdCB3aWxsIGJlY29tZSBhIGxhcmdlciB0YXJnZXQgZm9yCittYWx3YXJlLiBPbmUgcGFydGljdWxhcmx5IHRyb3VibGluZyB3ZWFrbmVzcyBvZiB0aGUgTGludXggcHJvY2VzcworaW50ZXJmYWNlcyBpcyB0aGF0IGEgc2luZ2xlIHVzZXIgaXMgYWJsZSB0byBleGFtaW5lIHRoZSBtZW1vcnkgYW5kCitydW5uaW5nIHN0YXRlIG9mIGFueSBvZiB0aGVpciBwcm9jZXNzZXMuIEZvciBleGFtcGxlLCBpZiBvbmUgYXBwbGljYXRpb24KKyhlLmcuIFBpZGdpbikgd2FzIGNvbXByb21pc2VkLCBpdCB3b3VsZCBiZSBwb3NzaWJsZSBmb3IgYW4gYXR0YWNrZXIgdG8KK2F0dGFjaCB0byBvdGhlciBydW5uaW5nIHByb2Nlc3NlcyAoZS5nLiBGaXJlZm94LCBTU0ggc2Vzc2lvbnMsIEdQRyBhZ2VudCwKK2V0YykgdG8gZXh0cmFjdCBhZGRpdGlvbmFsIGNyZWRlbnRpYWxzIGFuZCBjb250aW51ZSB0byBleHBhbmQgdGhlIHNjb3BlCitvZiB0aGVpciBhdHRhY2sgd2l0aG91dCByZXNvcnRpbmcgdG8gdXNlci1hc3Npc3RlZCBwaGlzaGluZy4KKworVGhpcyBpcyBub3QgYSB0aGVvcmV0aWNhbCBwcm9ibGVtLiBTU0ggc2Vzc2lvbiBoaWphY2tpbmcKKyhodHRwOi8vd3d3LnN0b3JtLm5ldC5uei9wcm9qZWN0cy83KSBhbmQgYXJiaXRyYXJ5IGNvZGUgaW5qZWN0aW9uCisoaHR0cDovL2Mtc2tpbGxzLmJsb2dzcG90LmNvbS8yMDA3LzA1L2luamVjdHNvLmh0bWwpIGF0dGFja3MgYWxyZWFkeQorZXhpc3QgYW5kIHJlbWFpbiBwb3NzaWJsZSBpZiBwdHJhY2UgaXMgYWxsb3dlZCB0byBvcGVyYXRlIGFzIGJlZm9yZS4KK1NpbmNlIHB0cmFjZSBpcyBub3QgY29tbW9ubHkgdXNlZCBieSBub24tZGV2ZWxvcGVycyBhbmQgbm9uLWFkbWlucywgc3lzdGVtCitidWlsZGVycyBzaG91bGQgYmUgYWxsb3dlZCB0aGUgb3B0aW9uIHRvIGRpc2FibGUgdGhpcyBkZWJ1Z2dpbmcgc3lzdGVtLgorCitGb3IgYSBzb2x1dGlvbiwgc29tZSBhcHBsaWNhdGlvbnMgdXNlIHByY3RsKFBSX1NFVF9EVU1QQUJMRSwgLi4uKSB0bworc3BlY2lmaWNhbGx5IGRpc2FsbG93IHN1Y2ggcHRyYWNlIGF0dGFjaG1lbnQgKGUuZy4gc3NoLWFnZW50KSwgYnV0IG1hbnkKK2RvIG5vdC4gQSBtb3JlIGdlbmVyYWwgc29sdXRpb24gaXMgdG8gb25seSBhbGxvdyBwdHJhY2UgZGlyZWN0bHkgZnJvbSBhCitwYXJlbnQgdG8gYSBjaGlsZCBwcm9jZXNzIChpLmUuIGRpcmVjdCAiZ2RiIEVYRSIgYW5kICJzdHJhY2UgRVhFIiBzdGlsbAord29yayksIG9yIHdpdGggQ0FQX1NZU19QVFJBQ0UgKGkuZS4gImdkYiAtLXBpZD1QSUQiLCBhbmQgInN0cmFjZSAtcCBQSUQiCitzdGlsbCB3b3JrIGFzIHJvb3QpLgorCitJbiBtb2RlIDEsIHNvZnR3YXJlIHRoYXQgaGFzIGRlZmluZWQgYXBwbGljYXRpb24tc3BlY2lmaWMgcmVsYXRpb25zaGlwcworYmV0d2VlbiBhIGRlYnVnZ2luZyBwcm9jZXNzIGFuZCBpdHMgaW5mZXJpb3IgKGNyYXNoIGhhbmRsZXJzLCBldGMpLAorcHJjdGwoUFJfU0VUX1BUUkFDRVIsIHBpZCwgLi4uKSBjYW4gYmUgdXNlZC4gQW4gaW5mZXJpb3IgY2FuIGRlY2xhcmUgd2hpY2gKK290aGVyIHByb2Nlc3MgKGFuZCBpdHMgZGVzY2VuZGFudHMpIGFyZSBhbGxvd2VkIHRvIGNhbGwgUFRSQUNFX0FUVEFDSAorYWdhaW5zdCBpdC4gT25seSBvbmUgc3VjaCBkZWNsYXJlZCBkZWJ1Z2dpbmcgcHJvY2VzcyBjYW4gZXhpc3RzIGZvcgorZWFjaCBpbmZlcmlvciBhdCBhIHRpbWUuIEZvciBleGFtcGxlLCB0aGlzIGlzIHVzZWQgYnkgS0RFLCBDaHJvbWl1bSwgYW5kCitGaXJlZm94J3MgY3Jhc2ggaGFuZGxlcnMsIGFuZCBieSBXaW5lIGZvciBhbGxvd2luZyBvbmx5IFdpbmUgcHJvY2Vzc2VzCit0byBwdHJhY2UgZWFjaCBvdGhlci4gSWYgYSBwcm9jZXNzIHdpc2hlcyB0byBlbnRpcmVseSBkaXNhYmxlIHRoZXNlIHB0cmFjZQorcmVzdHJpY3Rpb25zLCBpdCBjYW4gY2FsbCBwcmN0bChQUl9TRVRfUFRSQUNFUiwgUFJfU0VUX1BUUkFDRVJfQU5ZLCAuLi4pCitzbyB0aGF0IGFueSBvdGhlcndpc2UgYWxsb3dlZCBwcm9jZXNzIChldmVuIHRob3NlIGluIGV4dGVybmFsIHBpZCBuYW1lc3BhY2VzKQorbWF5IGF0dGFjaC4KKworVGhlIHN5c2N0bCBzZXR0aW5ncyAod3JpdGFibGUgb25seSB3aXRoIENBUF9TWVNfUFRSQUNFKSBhcmU6CisKKzAgLSBjbGFzc2ljIHB0cmFjZSBwZXJtaXNzaW9uczogYSBwcm9jZXNzIGNhbiBQVFJBQ0VfQVRUQUNIIHRvIGFueSBvdGhlcgorICAgIHByb2Nlc3MgcnVubmluZyB1bmRlciB0aGUgc2FtZSB1aWQsIGFzIGxvbmcgYXMgaXQgaXMgZHVtcGFibGUgKGkuZS4KKyAgICBkaWQgbm90IHRyYW5zaXRpb24gdWlkcywgc3RhcnQgcHJpdmlsZWdlZCwgb3IgaGF2ZSBjYWxsZWQKKyAgICBwcmN0bChQUl9TRVRfRFVNUEFCTEUuLi4pIGFscmVhZHkpLiBTaW1pbGFybHksIFBUUkFDRV9UUkFDRU1FIGlzCisgICAgdW5jaGFuZ2VkLgorCisxIC0gcmVzdHJpY3RlZCBwdHJhY2U6IGEgcHJvY2VzcyBtdXN0IGhhdmUgYSBwcmVkZWZpbmVkIHJlbGF0aW9uc2hpcAorICAgIHdpdGggdGhlIGluZmVyaW9yIGl0IHdhbnRzIHRvIGNhbGwgUFRSQUNFX0FUVEFDSCBvbi4gQnkgZGVmYXVsdCwKKyAgICB0aGlzIHJlbGF0aW9uc2hpcCBpcyB0aGF0IG9mIG9ubHkgaXRzIGRlc2NlbmRhbnRzIHdoZW4gdGhlIGFib3ZlCisgICAgY2xhc3NpYyBjcml0ZXJpYSBpcyBhbHNvIG1ldC4gVG8gY2hhbmdlIHRoZSByZWxhdGlvbnNoaXAsIGFuCisgICAgaW5mZXJpb3IgY2FuIGNhbGwgcHJjdGwoUFJfU0VUX1BUUkFDRVIsIGRlYnVnZ2VyLCAuLi4pIHRvIGRlY2xhcmUKKyAgICBhbiBhbGxvd2VkIGRlYnVnZ2VyIFBJRCB0byBjYWxsIFBUUkFDRV9BVFRBQ0ggb24gdGhlIGluZmVyaW9yLgorICAgIFVzaW5nIFBUUkFDRV9UUkFDRU1FIGlzIHVuY2hhbmdlZC4KKworMiAtIGFkbWluLW9ubHkgYXR0YWNoOiBvbmx5IHByb2Nlc3NlcyB3aXRoIENBUF9TWVNfUFRSQUNFIG1heSB1c2UgcHRyYWNlCisgICAgd2l0aCBQVFJBQ0VfQVRUQUNILCBvciB0aHJvdWdoIGNoaWxkcmVuIGNhbGxpbmcgUFRSQUNFX1RSQUNFTUUuCisKKzMgLSBubyBhdHRhY2g6IG5vIHByb2Nlc3NlcyBtYXkgdXNlIHB0cmFjZSB3aXRoIFBUUkFDRV9BVFRBQ0ggbm9yIHZpYQorICAgIFBUUkFDRV9UUkFDRU1FLiBPbmNlIHNldCwgdGhpcyBzeXNjdGwgdmFsdWUgY2Fubm90IGJlIGNoYW5nZWQuCisKK1RoZSBvcmlnaW5hbCBjaGlsZHJlbi1vbmx5IGxvZ2ljIHdhcyBiYXNlZCBvbiB0aGUgcmVzdHJpY3Rpb25zIGluIGdyc2VjdXJpdHkuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NlY3VyaXR5L2FwcGFybW9yLnR4dCBiL0RvY3VtZW50YXRpb24vc2VjdXJpdHkvYXBwYXJtb3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzYzFmZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NlY3VyaXR5L2FwcGFybW9yLnR4dApAQCAtMCwwICsxLDM5IEBACistLS0gV2hhdCBpcyBBcHBBcm1vcj8gLS0tCisKK0FwcEFybW9yIGlzIE1BQyBzdHlsZSBzZWN1cml0eSBleHRlbnNpb24gZm9yIHRoZSBMaW51eCBrZXJuZWwuICBJdCBpbXBsZW1lbnRzCithIHRhc2sgY2VudGVyZWQgcG9saWN5LCB3aXRoIHRhc2sgInByb2ZpbGVzIiBiZWluZyBjcmVhdGVkIGFuZCBsb2FkZWQKK2Zyb20gdXNlciBzcGFjZS4gIFRhc2tzIG9uIHRoZSBzeXN0ZW0gdGhhdCBkbyBub3QgaGF2ZSBhIHByb2ZpbGUgZGVmaW5lZCBmb3IKK3RoZW0gcnVuIGluIGFuIHVuY29uZmluZWQgc3RhdGUgd2hpY2ggaXMgZXF1aXZhbGVudCB0byBzdGFuZGFyZCBMaW51eCBEQUMKK3Blcm1pc3Npb25zLgorCistLS0gSG93IHRvIGVuYWJsZS9kaXNhYmxlIC0tLQorCitzZXQgQ09ORklHX1NFQ1VSSVRZX0FQUEFSTU9SPXkKKworSWYgQXBwQXJtb3Igc2hvdWxkIGJlIHNlbGVjdGVkIGFzIHRoZSBkZWZhdWx0IHNlY3VyaXR5IG1vZHVsZSB0aGVuCisgICBzZXQgQ09ORklHX0RFRkFVTFRfU0VDVVJJVFk9ImFwcGFybW9yIgorICAgYW5kIENPTkZJR19TRUNVUklUWV9BUFBBUk1PUl9CT09UUEFSQU1fVkFMVUU9MQorCitCdWlsZCB0aGUga2VybmVsCisKK0lmIEFwcEFybW9yIGlzIG5vdCB0aGUgZGVmYXVsdCBzZWN1cml0eSBtb2R1bGUgaXQgY2FuIGJlIGVuYWJsZWQgYnkgcGFzc2luZworc2VjdXJpdHk9YXBwYXJtb3Igb24gdGhlIGtlcm5lbCdzIGNvbW1hbmQgbGluZS4KKworSWYgQXBwQXJtb3IgaXMgdGhlIGRlZmF1bHQgc2VjdXJpdHkgbW9kdWxlIGl0IGNhbiBiZSBkaXNhYmxlZCBieSBwYXNzaW5nCithcHBhcm1vcj0wLCBzZWN1cml0eT1YWFhYICh3aGVyZSBYWFggaXMgdmFsaWQgc2VjdXJpdHkgbW9kdWxlKSwgb24gdGhlCitrZXJuZWwncyBjb21tYW5kIGxpbmUKKworRm9yIEFwcEFybW9yIHRvIGVuZm9yY2UgYW55IHJlc3RyaWN0aW9ucyBiZXlvbmQgc3RhbmRhcmQgTGludXggREFDIHBlcm1pc3Npb25zCitwb2xpY3kgbXVzdCBiZSBsb2FkZWQgaW50byB0aGUga2VybmVsIGZyb20gdXNlciBzcGFjZSAoc2VlIHRoZSBEb2N1bWVudGF0aW9uCithbmQgdG9vbHMgbGlua3MpLgorCistLS0gRG9jdW1lbnRhdGlvbiAtLS0KKworRG9jdW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgb24gdGhlIHdpa2kuCisKKy0tLSBMaW5rcyAtLS0KKworTWFpbGluZyBMaXN0IC0gYXBwYXJtb3JAbGlzdHMudWJ1bnR1LmNvbQorV2lraSAtIGh0dHA6Ly9hcHBhcm1vci53aWtpLmtlcm5lbC5vcmcvCitVc2VyIHNwYWNlIHRvb2xzIC0gaHR0cHM6Ly9sYXVuY2hwYWQubmV0L2FwcGFybW9yCitLZXJuZWwgbW9kdWxlIC0gZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2pqL2FwcGFybW9yLWRldi5naXQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2VjdXJpdHkvY3JlZGVudGlhbHMudHh0IGIvRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9jcmVkZW50aWFscy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYyNTcwNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2VjdXJpdHkvY3JlZGVudGlhbHMudHh0CkBAIC0wLDAgKzEsNTgxIEBACisJCQkgICAgID09PT09PT09PT09PT09PT09PT09CisJCQkgICAgIENSRURFTlRJQUxTIElOIExJTlVYCisJCQkgICAgID09PT09PT09PT09PT09PT09PT09CisKK0J5OiBEYXZpZCBIb3dlbGxzIDxkaG93ZWxsc0ByZWRoYXQuY29tPgorCitDb250ZW50czoKKworICgqKSBPdmVydmlldy4KKworICgqKSBUeXBlcyBvZiBjcmVkZW50aWFscy4KKworICgqKSBGaWxlIG1hcmtpbmdzLgorCisgKCopIFRhc2sgY3JlZGVudGlhbHMuCisKKyAgICAgLSBJbW11dGFibGUgY3JlZGVudGlhbHMuCisgICAgIC0gQWNjZXNzaW5nIHRhc2sgY3JlZGVudGlhbHMuCisgICAgIC0gQWNjZXNzaW5nIGFub3RoZXIgdGFzaydzIGNyZWRlbnRpYWxzLgorICAgICAtIEFsdGVyaW5nIGNyZWRlbnRpYWxzLgorICAgICAtIE1hbmFnaW5nIGNyZWRlbnRpYWxzLgorCisgKCopIE9wZW4gZmlsZSBjcmVkZW50aWFscy4KKworICgqKSBPdmVycmlkaW5nIHRoZSBWRlMncyB1c2Ugb2YgY3JlZGVudGlhbHMuCisKKworPT09PT09PT0KK09WRVJWSUVXCis9PT09PT09PQorCitUaGVyZSBhcmUgc2V2ZXJhbCBwYXJ0cyB0byB0aGUgc2VjdXJpdHkgY2hlY2sgcGVyZm9ybWVkIGJ5IExpbnV4IHdoZW4gb25lCitvYmplY3QgYWN0cyB1cG9uIGFub3RoZXI6CisKKyAoMSkgT2JqZWN0cy4KKworICAgICBPYmplY3RzIGFyZSB0aGluZ3MgaW4gdGhlIHN5c3RlbSB0aGF0IG1heSBiZSBhY3RlZCB1cG9uIGRpcmVjdGx5IGJ5CisgICAgIHVzZXJzcGFjZSBwcm9ncmFtcy4gIExpbnV4IGhhcyBhIHZhcmlldHkgb2YgYWN0aW9uYWJsZSBvYmplY3RzLCBpbmNsdWRpbmc6CisKKwktIFRhc2tzCisJLSBGaWxlcy9pbm9kZXMKKwktIFNvY2tldHMKKwktIE1lc3NhZ2UgcXVldWVzCisJLSBTaGFyZWQgbWVtb3J5IHNlZ21lbnRzCisJLSBTZW1hcGhvcmVzCisJLSBLZXlzCisKKyAgICAgQXMgYSBwYXJ0IG9mIHRoZSBkZXNjcmlwdGlvbiBvZiBhbGwgdGhlc2Ugb2JqZWN0cyB0aGVyZSBpcyBhIHNldCBvZgorICAgICBjcmVkZW50aWFscy4gIFdoYXQncyBpbiB0aGUgc2V0IGRlcGVuZHMgb24gdGhlIHR5cGUgb2Ygb2JqZWN0LgorCisgKDIpIE9iamVjdCBvd25lcnNoaXAuCisKKyAgICAgQW1vbmdzdCB0aGUgY3JlZGVudGlhbHMgb2YgbW9zdCBvYmplY3RzLCB0aGVyZSB3aWxsIGJlIGEgc3Vic2V0IHRoYXQKKyAgICAgaW5kaWNhdGVzIHRoZSBvd25lcnNoaXAgb2YgdGhhdCBvYmplY3QuICBUaGlzIGlzIHVzZWQgZm9yIHJlc291cmNlCisgICAgIGFjY291bnRpbmcgYW5kIGxpbWl0YXRpb24gKGRpc2sgcXVvdGFzIGFuZCB0YXNrIHJsaW1pdHMgZm9yIGV4YW1wbGUpLgorCisgICAgIEluIGEgc3RhbmRhcmQgVU5JWCBmaWxlc3lzdGVtLCBmb3IgaW5zdGFuY2UsIHRoaXMgd2lsbCBiZSBkZWZpbmVkIGJ5IHRoZQorICAgICBVSUQgbWFya2VkIG9uIHRoZSBpbm9kZS4KKworICgzKSBUaGUgb2JqZWN0aXZlIGNvbnRleHQuCisKKyAgICAgQWxzbyBhbW9uZ3N0IHRoZSBjcmVkZW50aWFscyBvZiB0aG9zZSBvYmplY3RzLCB0aGVyZSB3aWxsIGJlIGEgc3Vic2V0IHRoYXQKKyAgICAgaW5kaWNhdGVzIHRoZSAnb2JqZWN0aXZlIGNvbnRleHQnIG9mIHRoYXQgb2JqZWN0LiAgVGhpcyBtYXkgb3IgbWF5IG5vdCBiZQorICAgICB0aGUgc2FtZSBzZXQgYXMgaW4gKDIpIC0gaW4gc3RhbmRhcmQgVU5JWCBmaWxlcywgZm9yIGluc3RhbmNlLCB0aGlzIGlzIHRoZQorICAgICBkZWZpbmVkIGJ5IHRoZSBVSUQgYW5kIHRoZSBHSUQgbWFya2VkIG9uIHRoZSBpbm9kZS4KKworICAgICBUaGUgb2JqZWN0aXZlIGNvbnRleHQgaXMgdXNlZCBhcyBwYXJ0IG9mIHRoZSBzZWN1cml0eSBjYWxjdWxhdGlvbiB0aGF0IGlzCisgICAgIGNhcnJpZWQgb3V0IHdoZW4gYW4gb2JqZWN0IGlzIGFjdGVkIHVwb24uCisKKyAoNCkgU3ViamVjdHMuCisKKyAgICAgQSBzdWJqZWN0IGlzIGFuIG9iamVjdCB0aGF0IGlzIGFjdGluZyB1cG9uIGFub3RoZXIgb2JqZWN0LgorCisgICAgIE1vc3Qgb2YgdGhlIG9iamVjdHMgaW4gdGhlIHN5c3RlbSBhcmUgaW5hY3RpdmU6IHRoZXkgZG9uJ3QgYWN0IG9uIG90aGVyCisgICAgIG9iamVjdHMgd2l0aGluIHRoZSBzeXN0ZW0uICBQcm9jZXNzZXMvdGFza3MgYXJlIHRoZSBvYnZpb3VzIGV4Y2VwdGlvbjoKKyAgICAgdGhleSBkbyBzdHVmZjsgdGhleSBhY2Nlc3MgYW5kIG1hbmlwdWxhdGUgdGhpbmdzLgorCisgICAgIE9iamVjdHMgb3RoZXIgdGhhbiB0YXNrcyBtYXkgdW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzIGFsc28gYmUgc3ViamVjdHMuCisgICAgIEZvciBpbnN0YW5jZSBhbiBvcGVuIGZpbGUgbWF5IHNlbmQgU0lHSU8gdG8gYSB0YXNrIHVzaW5nIHRoZSBVSUQgYW5kIEVVSUQKKyAgICAgZ2l2ZW4gdG8gaXQgYnkgYSB0YXNrIHRoYXQgY2FsbGVkIGZjbnRsKEZfU0VUT1dOKSB1cG9uIGl0LiAgSW4gdGhpcyBjYXNlLAorICAgICB0aGUgZmlsZSBzdHJ1Y3Qgd2lsbCBoYXZlIGEgc3ViamVjdGl2ZSBjb250ZXh0IHRvby4KKworICg1KSBUaGUgc3ViamVjdGl2ZSBjb250ZXh0LgorCisgICAgIEEgc3ViamVjdCBoYXMgYW4gYWRkaXRpb25hbCBpbnRlcnByZXRhdGlvbiBvZiBpdHMgY3JlZGVudGlhbHMuICBBIHN1YnNldAorICAgICBvZiBpdHMgY3JlZGVudGlhbHMgZm9ybXMgdGhlICdzdWJqZWN0aXZlIGNvbnRleHQnLiAgVGhlIHN1YmplY3RpdmUgY29udGV4dAorICAgICBpcyB1c2VkIGFzIHBhcnQgb2YgdGhlIHNlY3VyaXR5IGNhbGN1bGF0aW9uIHRoYXQgaXMgY2FycmllZCBvdXQgd2hlbiBhCisgICAgIHN1YmplY3QgYWN0cy4KKworICAgICBBIExpbnV4IHRhc2ssIGZvciBleGFtcGxlLCBoYXMgdGhlIEZTVUlELCBGU0dJRCBhbmQgdGhlIHN1cHBsZW1lbnRhcnkKKyAgICAgZ3JvdXAgbGlzdCBmb3Igd2hlbiBpdCBpcyBhY3RpbmcgdXBvbiBhIGZpbGUgLSB3aGljaCBhcmUgcXVpdGUgc2VwYXJhdGUKKyAgICAgZnJvbSB0aGUgcmVhbCBVSUQgYW5kIEdJRCB0aGF0IG5vcm1hbGx5IGZvcm0gdGhlIG9iamVjdGl2ZSBjb250ZXh0IG9mIHRoZQorICAgICB0YXNrLgorCisgKDYpIEFjdGlvbnMuCisKKyAgICAgTGludXggaGFzIGEgbnVtYmVyIG9mIGFjdGlvbnMgYXZhaWxhYmxlIHRoYXQgYSBzdWJqZWN0IG1heSBwZXJmb3JtIHVwb24gYW4KKyAgICAgb2JqZWN0LiAgVGhlIHNldCBvZiBhY3Rpb25zIGF2YWlsYWJsZSBkZXBlbmRzIG9uIHRoZSBuYXR1cmUgb2YgdGhlIHN1YmplY3QKKyAgICAgYW5kIHRoZSBvYmplY3QuCisKKyAgICAgQWN0aW9ucyBpbmNsdWRlIHJlYWRpbmcsIHdyaXRpbmcsIGNyZWF0aW5nIGFuZCBkZWxldGluZyBmaWxlczsgZm9ya2luZyBvcgorICAgICBzaWduYWxsaW5nIGFuZCB0cmFjaW5nIHRhc2tzLgorCisgKDcpIFJ1bGVzLCBhY2Nlc3MgY29udHJvbCBsaXN0cyBhbmQgc2VjdXJpdHkgY2FsY3VsYXRpb25zLgorCisgICAgIFdoZW4gYSBzdWJqZWN0IGFjdHMgdXBvbiBhbiBvYmplY3QsIGEgc2VjdXJpdHkgY2FsY3VsYXRpb24gaXMgbWFkZS4gIFRoaXMKKyAgICAgaW52b2x2ZXMgdGFraW5nIHRoZSBzdWJqZWN0aXZlIGNvbnRleHQsIHRoZSBvYmplY3RpdmUgY29udGV4dCBhbmQgdGhlCisgICAgIGFjdGlvbiwgYW5kIHNlYXJjaGluZyBvbmUgb3IgbW9yZSBzZXRzIG9mIHJ1bGVzIHRvIHNlZSB3aGV0aGVyIHRoZSBzdWJqZWN0CisgICAgIGlzIGdyYW50ZWQgb3IgZGVuaWVkIHBlcm1pc3Npb24gdG8gYWN0IGluIHRoZSBkZXNpcmVkIG1hbm5lciBvbiB0aGUKKyAgICAgb2JqZWN0LCBnaXZlbiB0aG9zZSBjb250ZXh0cy4KKworICAgICBUaGVyZSBhcmUgdHdvIG1haW4gc291cmNlcyBvZiBydWxlczoKKworICAgICAoYSkgRGlzY3JldGlvbmFyeSBhY2Nlc3MgY29udHJvbCAoREFDKToKKworCSBTb21ldGltZXMgdGhlIG9iamVjdCB3aWxsIGluY2x1ZGUgc2V0cyBvZiBydWxlcyBhcyBwYXJ0IG9mIGl0cworCSBkZXNjcmlwdGlvbi4gIFRoaXMgaXMgYW4gJ0FjY2VzcyBDb250cm9sIExpc3QnIG9yICdBQ0wnLiAgQSBMaW51eAorCSBmaWxlIG1heSBzdXBwbHkgbW9yZSB0aGFuIG9uZSBBQ0wuCisKKwkgQSB0cmFkaXRpb25hbCBVTklYIGZpbGUsIGZvciBleGFtcGxlLCBpbmNsdWRlcyBhIHBlcm1pc3Npb25zIG1hc2sgdGhhdAorCSBpcyBhbiBhYmJyZXZpYXRlZCBBQ0wgd2l0aCB0aHJlZSBmaXhlZCBjbGFzc2VzIG9mIHN1YmplY3QgKCd1c2VyJywKKwkgJ2dyb3VwJyBhbmQgJ290aGVyJyksIGVhY2ggb2Ygd2hpY2ggbWF5IGJlIGdyYW50ZWQgY2VydGFpbiBwcml2aWxlZ2VzCisJICgncmVhZCcsICd3cml0ZScgYW5kICdleGVjdXRlJyAtIHdoYXRldmVyIHRob3NlIG1hcCB0byBmb3IgdGhlIG9iamVjdAorCSBpbiBxdWVzdGlvbikuICBVTklYIGZpbGUgcGVybWlzc2lvbnMgZG8gbm90IGFsbG93IHRoZSBhcmJpdHJhcnkKKwkgc3BlY2lmaWNhdGlvbiBvZiBzdWJqZWN0cywgaG93ZXZlciwgYW5kIHNvIGFyZSBvZiBsaW1pdGVkIHVzZS4KKworCSBBIExpbnV4IGZpbGUgbWlnaHQgYWxzbyBzcG9ydCBhIFBPU0lYIEFDTC4gIFRoaXMgaXMgYSBsaXN0IG9mIHJ1bGVzCisJIHRoYXQgZ3JhbnRzIHZhcmlvdXMgcGVybWlzc2lvbnMgdG8gYXJiaXRyYXJ5IHN1YmplY3RzLgorCisgICAgIChiKSBNYW5kYXRvcnkgYWNjZXNzIGNvbnRyb2wgKE1BQyk6CisKKwkgVGhlIHN5c3RlbSBhcyBhIHdob2xlIG1heSBoYXZlIG9uZSBvciBtb3JlIHNldHMgb2YgcnVsZXMgdGhhdCBnZXQKKwkgYXBwbGllZCB0byBhbGwgc3ViamVjdHMgYW5kIG9iamVjdHMsIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgc291cmNlLgorCSBTRUxpbnV4IGFuZCBTbWFjayBhcmUgZXhhbXBsZXMgb2YgdGhpcy4KKworCSBJbiB0aGUgY2FzZSBvZiBTRUxpbnV4IGFuZCBTbWFjaywgZWFjaCBvYmplY3QgaXMgZ2l2ZW4gYSBsYWJlbCBhcyBwYXJ0CisJIG9mIGl0cyBjcmVkZW50aWFscy4gIFdoZW4gYW4gYWN0aW9uIGlzIHJlcXVlc3RlZCwgdGhleSB0YWtlIHRoZQorCSBzdWJqZWN0IGxhYmVsLCB0aGUgb2JqZWN0IGxhYmVsIGFuZCB0aGUgYWN0aW9uIGFuZCBsb29rIGZvciBhIHJ1bGUKKwkgdGhhdCBzYXlzIHRoYXQgdGhpcyBhY3Rpb24gaXMgZWl0aGVyIGdyYW50ZWQgb3IgZGVuaWVkLgorCisKKz09PT09PT09PT09PT09PT09PT09CitUWVBFUyBPRiBDUkVERU5USUFMUworPT09PT09PT09PT09PT09PT09PT0KKworVGhlIExpbnV4IGtlcm5lbCBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIHR5cGVzIG9mIGNyZWRlbnRpYWxzOgorCisgKDEpIFRyYWRpdGlvbmFsIFVOSVggY3JlZGVudGlhbHMuCisKKwlSZWFsIFVzZXIgSUQKKwlSZWFsIEdyb3VwIElECisKKyAgICAgVGhlIFVJRCBhbmQgR0lEIGFyZSBjYXJyaWVkIGJ5IG1vc3QsIGlmIG5vdCBhbGwsIExpbnV4IG9iamVjdHMsIGV2ZW4gaWYgaW4KKyAgICAgc29tZSBjYXNlcyBpdCBoYXMgdG8gYmUgaW52ZW50ZWQgKEZBVCBvciBDSUZTIGZpbGVzIGZvciBleGFtcGxlLCB3aGljaCBhcmUKKyAgICAgZGVyaXZlZCBmcm9tIFdpbmRvd3MpLiAgVGhlc2UgKG1vc3RseSkgZGVmaW5lIHRoZSBvYmplY3RpdmUgY29udGV4dCBvZgorICAgICB0aGF0IG9iamVjdCwgd2l0aCB0YXNrcyBiZWluZyBzbGlnaHRseSBkaWZmZXJlbnQgaW4gc29tZSBjYXNlcy4KKworCUVmZmVjdGl2ZSwgU2F2ZWQgYW5kIEZTIFVzZXIgSUQKKwlFZmZlY3RpdmUsIFNhdmVkIGFuZCBGUyBHcm91cCBJRAorCVN1cHBsZW1lbnRhcnkgZ3JvdXBzCisKKyAgICAgVGhlc2UgYXJlIGFkZGl0aW9uYWwgY3JlZGVudGlhbHMgdXNlZCBieSB0YXNrcyBvbmx5LiAgVXN1YWxseSwgYW4KKyAgICAgRVVJRC9FR0lEL0dST1VQUyB3aWxsIGJlIHVzZWQgYXMgdGhlIHN1YmplY3RpdmUgY29udGV4dCwgYW5kIHJlYWwgVUlEL0dJRAorICAgICB3aWxsIGJlIHVzZWQgYXMgdGhlIG9iamVjdGl2ZS4gIEZvciB0YXNrcywgaXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgdGhpcyBpcworICAgICBub3QgYWx3YXlzIHRydWUuCisKKyAoMikgQ2FwYWJpbGl0aWVzLgorCisJU2V0IG9mIHBlcm1pdHRlZCBjYXBhYmlsaXRpZXMKKwlTZXQgb2YgaW5oZXJpdGFibGUgY2FwYWJpbGl0aWVzCisJU2V0IG9mIGVmZmVjdGl2ZSBjYXBhYmlsaXRpZXMKKwlDYXBhYmlsaXR5IGJvdW5kaW5nIHNldAorCisgICAgIFRoZXNlIGFyZSBvbmx5IGNhcnJpZWQgYnkgdGFza3MuICBUaGV5IGluZGljYXRlIHN1cGVyaW9yIGNhcGFiaWxpdGllcworICAgICBncmFudGVkIHBpZWNlbWVhbCB0byBhIHRhc2sgdGhhdCBhbiBvcmRpbmFyeSB0YXNrIHdvdWxkbid0IG90aGVyd2lzZSBoYXZlLgorICAgICBUaGVzZSBhcmUgbWFuaXB1bGF0ZWQgaW1wbGljaXRseSBieSBjaGFuZ2VzIHRvIHRoZSB0cmFkaXRpb25hbCBVTklYCisgICAgIGNyZWRlbnRpYWxzLCBidXQgY2FuIGFsc28gYmUgbWFuaXB1bGF0ZWQgZGlyZWN0bHkgYnkgdGhlIGNhcHNldCgpIHN5c3RlbQorICAgICBjYWxsLgorCisgICAgIFRoZSBwZXJtaXR0ZWQgY2FwYWJpbGl0aWVzIGFyZSB0aG9zZSBjYXBzIHRoYXQgdGhlIHByb2Nlc3MgbWlnaHQgZ3JhbnQKKyAgICAgaXRzZWxmIHRvIGl0cyBlZmZlY3RpdmUgb3IgcGVybWl0dGVkIHNldHMgdGhyb3VnaCBjYXBzZXQoKS4gIFRoaXMKKyAgICAgaW5oZXJpdGFibGUgc2V0IG1pZ2h0IGFsc28gYmUgc28gY29uc3RyYWluZWQuCisKKyAgICAgVGhlIGVmZmVjdGl2ZSBjYXBhYmlsaXRpZXMgYXJlIHRoZSBvbmVzIHRoYXQgYSB0YXNrIGlzIGFjdHVhbGx5IGFsbG93ZWQgdG8KKyAgICAgbWFrZSB1c2Ugb2YgaXRzZWxmLgorCisgICAgIFRoZSBpbmhlcml0YWJsZSBjYXBhYmlsaXRpZXMgYXJlIHRoZSBvbmVzIHRoYXQgbWF5IGdldCBwYXNzZWQgYWNyb3NzCisgICAgIGV4ZWN2ZSgpLgorCisgICAgIFRoZSBib3VuZGluZyBzZXQgbGltaXRzIHRoZSBjYXBhYmlsaXRpZXMgdGhhdCBtYXkgYmUgaW5oZXJpdGVkIGFjcm9zcworICAgICBleGVjdmUoKSwgZXNwZWNpYWxseSB3aGVuIGEgYmluYXJ5IGlzIGV4ZWN1dGVkIHRoYXQgd2lsbCBleGVjdXRlIGFzIFVJRCAwLgorCisgKDMpIFNlY3VyZSBtYW5hZ2VtZW50IGZsYWdzIChzZWN1cmViaXRzKS4KKworICAgICBUaGVzZSBhcmUgb25seSBjYXJyaWVkIGJ5IHRhc2tzLiAgVGhlc2UgZ292ZXJuIHRoZSB3YXkgdGhlIGFib3ZlCisgICAgIGNyZWRlbnRpYWxzIGFyZSBtYW5pcHVsYXRlZCBhbmQgaW5oZXJpdGVkIG92ZXIgY2VydGFpbiBvcGVyYXRpb25zIHN1Y2ggYXMKKyAgICAgZXhlY3ZlKCkuICBUaGV5IGFyZW4ndCB1c2VkIGRpcmVjdGx5IGFzIG9iamVjdGl2ZSBvciBzdWJqZWN0aXZlCisgICAgIGNyZWRlbnRpYWxzLgorCisgKDQpIEtleXMgYW5kIGtleXJpbmdzLgorCisgICAgIFRoZXNlIGFyZSBvbmx5IGNhcnJpZWQgYnkgdGFza3MuICBUaGV5IGNhcnJ5IGFuZCBjYWNoZSBzZWN1cml0eSB0b2tlbnMKKyAgICAgdGhhdCBkb24ndCBmaXQgaW50byB0aGUgb3RoZXIgc3RhbmRhcmQgVU5JWCBjcmVkZW50aWFscy4gIFRoZXkgYXJlIGZvcgorICAgICBtYWtpbmcgc3VjaCB0aGluZ3MgYXMgbmV0d29yayBmaWxlc3lzdGVtIGtleXMgYXZhaWxhYmxlIHRvIHRoZSBmaWxlCisgICAgIGFjY2Vzc2VzIHBlcmZvcm1lZCBieSBwcm9jZXNzZXMsIHdpdGhvdXQgdGhlIG5lY2Vzc2l0eSBvZiBvcmRpbmFyeQorICAgICBwcm9ncmFtcyBoYXZpbmcgdG8ga25vdyBhYm91dCBzZWN1cml0eSBkZXRhaWxzIGludm9sdmVkLgorCisgICAgIEtleXJpbmdzIGFyZSBhIHNwZWNpYWwgdHlwZSBvZiBrZXkuICBUaGV5IGNhcnJ5IHNldHMgb2Ygb3RoZXIga2V5cyBhbmQgY2FuCisgICAgIGJlIHNlYXJjaGVkIGZvciB0aGUgZGVzaXJlZCBrZXkuICBFYWNoIHByb2Nlc3MgbWF5IHN1YnNjcmliZSB0byBhIG51bWJlcgorICAgICBvZiBrZXlyaW5nczoKKworCVBlci10aHJlYWQga2V5aW5nCisJUGVyLXByb2Nlc3Mga2V5cmluZworCVBlci1zZXNzaW9uIGtleXJpbmcKKworICAgICBXaGVuIGEgcHJvY2VzcyBhY2Nlc3NlcyBhIGtleSwgaWYgbm90IGFscmVhZHkgcHJlc2VudCwgaXQgd2lsbCBub3JtYWxseSBiZQorICAgICBjYWNoZWQgb24gb25lIG9mIHRoZXNlIGtleXJpbmdzIGZvciBmdXR1cmUgYWNjZXNzZXMgdG8gZmluZC4KKworICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB1c2luZyBrZXlzLCBzZWUgRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9rZXlzLnR4dC4KKworICg1KSBMU00KKworICAgICBUaGUgTGludXggU2VjdXJpdHkgTW9kdWxlIGFsbG93cyBleHRyYSBjb250cm9scyB0byBiZSBwbGFjZWQgb3ZlciB0aGUKKyAgICAgb3BlcmF0aW9ucyB0aGF0IGEgdGFzayBtYXkgZG8uICBDdXJyZW50bHkgTGludXggc3VwcG9ydHMgc2V2ZXJhbCBMU00KKyAgICAgb3B0aW9ucy4KKworICAgICBTb21lIHdvcmsgYnkgbGFiZWxsaW5nIHRoZSBvYmplY3RzIGluIGEgc3lzdGVtIGFuZCB0aGVuIGFwcGx5aW5nIHNldHMgb2YKKyAgICAgcnVsZXMgKHBvbGljaWVzKSB0aGF0IHNheSB3aGF0IG9wZXJhdGlvbnMgYSB0YXNrIHdpdGggb25lIGxhYmVsIG1heSBkbyB0bworICAgICBhbiBvYmplY3Qgd2l0aCBhbm90aGVyIGxhYmVsLgorCisgKDYpIEFGX0tFWQorCisgICAgIFRoaXMgaXMgYSBzb2NrZXQtYmFzZWQgYXBwcm9hY2ggdG8gY3JlZGVudGlhbCBtYW5hZ2VtZW50IGZvciBuZXR3b3JraW5nCisgICAgIHN0YWNrcyBbUkZDIDIzNjddLiAgSXQgaXNuJ3QgZGlzY3Vzc2VkIGJ5IHRoaXMgZG9jdW1lbnQgYXMgaXQgZG9lc24ndAorICAgICBpbnRlcmFjdCBkaXJlY3RseSB3aXRoIHRhc2sgYW5kIGZpbGUgY3JlZGVudGlhbHM7IHJhdGhlciBpdCBrZWVwcyBzeXN0ZW0KKyAgICAgbGV2ZWwgY3JlZGVudGlhbHMuCisKKworV2hlbiBhIGZpbGUgaXMgb3BlbmVkLCBwYXJ0IG9mIHRoZSBvcGVuaW5nIHRhc2sncyBzdWJqZWN0aXZlIGNvbnRleHQgaXMKK3JlY29yZGVkIGluIHRoZSBmaWxlIHN0cnVjdCBjcmVhdGVkLiAgVGhpcyBhbGxvd3Mgb3BlcmF0aW9ucyB1c2luZyB0aGF0IGZpbGUKK3N0cnVjdCB0byB1c2UgdGhvc2UgY3JlZGVudGlhbHMgaW5zdGVhZCBvZiB0aGUgc3ViamVjdGl2ZSBjb250ZXh0IG9mIHRoZSB0YXNrCit0aGF0IGlzc3VlZCB0aGUgb3BlcmF0aW9uLiAgQW4gZXhhbXBsZSBvZiB0aGlzIHdvdWxkIGJlIGEgZmlsZSBvcGVuZWQgb24gYQorbmV0d29yayBmaWxlc3lzdGVtIHdoZXJlIHRoZSBjcmVkZW50aWFscyBvZiB0aGUgb3BlbmVkIGZpbGUgc2hvdWxkIGJlIHByZXNlbnRlZAordG8gdGhlIHNlcnZlciwgcmVnYXJkbGVzcyBvZiB3aG8gaXMgYWN0dWFsbHkgZG9pbmcgYSByZWFkIG9yIGEgd3JpdGUgdXBvbiBpdC4KKworCis9PT09PT09PT09PT09CitGSUxFIE1BUktJTkdTCis9PT09PT09PT09PT09CisKK0ZpbGVzIG9uIGRpc2sgb3Igb2J0YWluZWQgb3ZlciB0aGUgbmV0d29yayBtYXkgaGF2ZSBhbm5vdGF0aW9ucyB0aGF0IGZvcm0gdGhlCitvYmplY3RpdmUgc2VjdXJpdHkgY29udGV4dCBvZiB0aGF0IGZpbGUuICBEZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgZmlsZXN5c3RlbSwKK3RoaXMgbWF5IGluY2x1ZGUgb25lIG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZzoKKworICgqKSBVTklYIFVJRCwgR0lELCBtb2RlOworCisgKCopIFdpbmRvd3MgdXNlciBJRDsKKworICgqKSBBY2Nlc3MgY29udHJvbCBsaXN0OworCisgKCopIExTTSBzZWN1cml0eSBsYWJlbDsKKworICgqKSBVTklYIGV4ZWMgcHJpdmlsZWdlIGVzY2FsYXRpb24gYml0cyAoU1VJRC9TR0lEKTsKKworICgqKSBGaWxlIGNhcGFiaWxpdGllcyBleGVjIHByaXZpbGVnZSBlc2NhbGF0aW9uIGJpdHMuCisKK1RoZXNlIGFyZSBjb21wYXJlZCB0byB0aGUgdGFzaydzIHN1YmplY3RpdmUgc2VjdXJpdHkgY29udGV4dCwgYW5kIGNlcnRhaW4KK29wZXJhdGlvbnMgYWxsb3dlZCBvciBkaXNhbGxvd2VkIGFzIGEgcmVzdWx0LiAgSW4gdGhlIGNhc2Ugb2YgZXhlY3ZlKCksIHRoZQorcHJpdmlsZWdlIGVzY2FsYXRpb24gYml0cyBjb21lIGludG8gcGxheSwgYW5kIG1heSBhbGxvdyB0aGUgcmVzdWx0aW5nIHByb2Nlc3MKK2V4dHJhIHByaXZpbGVnZXMsIGJhc2VkIG9uIHRoZSBhbm5vdGF0aW9ucyBvbiB0aGUgZXhlY3V0YWJsZSBmaWxlLgorCisKKz09PT09PT09PT09PT09PT0KK1RBU0sgQ1JFREVOVElBTFMKKz09PT09PT09PT09PT09PT0KKworSW4gTGludXgsIGFsbCBvZiBhIHRhc2sncyBjcmVkZW50aWFscyBhcmUgaGVsZCBpbiAodWlkLCBnaWQpIG9yIHRocm91Z2gKKyhncm91cHMsIGtleXMsIExTTSBzZWN1cml0eSkgYSByZWZjb3VudGVkIHN0cnVjdHVyZSBvZiB0eXBlICdzdHJ1Y3QgY3JlZCcuCitFYWNoIHRhc2sgcG9pbnRzIHRvIGl0cyBjcmVkZW50aWFscyBieSBhIHBvaW50ZXIgY2FsbGVkICdjcmVkJyBpbiBpdHMKK3Rhc2tfc3RydWN0LgorCitPbmNlIGEgc2V0IG9mIGNyZWRlbnRpYWxzIGhhcyBiZWVuIHByZXBhcmVkIGFuZCBjb21taXR0ZWQsIGl0IG1heSBub3QgYmUKK2NoYW5nZWQsIGJhcnJpbmcgdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgorCisgKDEpIGl0cyByZWZlcmVuY2UgY291bnQgbWF5IGJlIGNoYW5nZWQ7CisKKyAoMikgdGhlIHJlZmVyZW5jZSBjb3VudCBvbiB0aGUgZ3JvdXBfaW5mbyBzdHJ1Y3QgaXQgcG9pbnRzIHRvIG1heSBiZSBjaGFuZ2VkOworCisgKDMpIHRoZSByZWZlcmVuY2UgY291bnQgb24gdGhlIHNlY3VyaXR5IGRhdGEgaXQgcG9pbnRzIHRvIG1heSBiZSBjaGFuZ2VkOworCisgKDQpIHRoZSByZWZlcmVuY2UgY291bnQgb24gYW55IGtleXJpbmdzIGl0IHBvaW50cyB0byBtYXkgYmUgY2hhbmdlZDsKKworICg1KSBhbnkga2V5cmluZ3MgaXQgcG9pbnRzIHRvIG1heSBiZSByZXZva2VkLCBleHBpcmVkIG9yIGhhdmUgdGhlaXIgc2VjdXJpdHkKKyAgICAgYXR0cmlidXRlcyBjaGFuZ2VkOyBhbmQKKworICg2KSB0aGUgY29udGVudHMgb2YgYW55IGtleXJpbmdzIHRvIHdoaWNoIGl0IHBvaW50cyBtYXkgYmUgY2hhbmdlZCAodGhlIHdob2xlCisgICAgIHBvaW50IG9mIGtleXJpbmdzIGJlaW5nIGEgc2hhcmVkIHNldCBvZiBjcmVkZW50aWFscywgbW9kaWZpYWJsZSBieSBhbnlvbmUKKyAgICAgd2l0aCBhcHByb3ByaWF0ZSBhY2Nlc3MpLgorCitUbyBhbHRlciBhbnl0aGluZyBpbiB0aGUgY3JlZCBzdHJ1Y3QsIHRoZSBjb3B5LWFuZC1yZXBsYWNlIHByaW5jaXBsZSBtdXN0IGJlCithZGhlcmVkIHRvLiAgRmlyc3QgdGFrZSBhIGNvcHksIHRoZW4gYWx0ZXIgdGhlIGNvcHkgYW5kIHRoZW4gdXNlIFJDVSB0byBjaGFuZ2UKK3RoZSB0YXNrIHBvaW50ZXIgdG8gbWFrZSBpdCBwb2ludCB0byB0aGUgbmV3IGNvcHkuICBUaGVyZSBhcmUgd3JhcHBlcnMgdG8gYWlkCit3aXRoIHRoaXMgKHNlZSBiZWxvdykuCisKK0EgdGFzayBtYXkgb25seSBhbHRlciBpdHMgX293bl8gY3JlZGVudGlhbHM7IGl0IGlzIG5vIGxvbmdlciBwZXJtaXR0ZWQgZm9yIGEKK3Rhc2sgdG8gYWx0ZXIgYW5vdGhlcidzIGNyZWRlbnRpYWxzLiAgVGhpcyBtZWFucyB0aGUgY2Fwc2V0KCkgc3lzdGVtIGNhbGwgaXMgbm8KK2xvbmdlciBwZXJtaXR0ZWQgdG8gdGFrZSBhbnkgUElEIG90aGVyIHRoYW4gdGhlIG9uZSBvZiB0aGUgY3VycmVudCBwcm9jZXNzLgorQWxzbyBrZXljdGxfaW5zdGFudGlhdGUoKSBhbmQga2V5Y3RsX25lZ2F0ZSgpIGZ1bmN0aW9ucyBubyBsb25nZXIgcGVybWl0CithdHRhY2htZW50IHRvIHByb2Nlc3Mtc3BlY2lmaWMga2V5cmluZ3MgaW4gdGhlIHJlcXVlc3RpbmcgcHJvY2VzcyBhcyB0aGUKK2luc3RhbnRpYXRpbmcgcHJvY2VzcyBtYXkgbmVlZCB0byBjcmVhdGUgdGhlbS4KKworCitJTU1VVEFCTEUgQ1JFREVOVElBTFMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPbmNlIGEgc2V0IG9mIGNyZWRlbnRpYWxzIGhhcyBiZWVuIG1hZGUgcHVibGljIChieSBjYWxsaW5nIGNvbW1pdF9jcmVkcygpIGZvcgorZXhhbXBsZSksIGl0IG11c3QgYmUgY29uc2lkZXJlZCBpbW11dGFibGUsIGJhcnJpbmcgdHdvIGV4Y2VwdGlvbnM6CisKKyAoMSkgVGhlIHJlZmVyZW5jZSBjb3VudCBtYXkgYmUgYWx0ZXJlZC4KKworICgyKSBXaGlsc3QgdGhlIGtleXJpbmcgc3Vic2NyaXB0aW9ucyBvZiBhIHNldCBvZiBjcmVkZW50aWFscyBtYXkgbm90IGJlCisgICAgIGNoYW5nZWQsIHRoZSBrZXlyaW5ncyBzdWJzY3JpYmVkIHRvIG1heSBoYXZlIHRoZWlyIGNvbnRlbnRzIGFsdGVyZWQuCisKK1RvIGNhdGNoIGFjY2lkZW50YWwgY3JlZGVudGlhbCBhbHRlcmF0aW9uIGF0IGNvbXBpbGUgdGltZSwgc3RydWN0IHRhc2tfc3RydWN0CitoYXMgX2NvbnN0XyBwb2ludGVycyB0byBpdHMgY3JlZGVudGlhbCBzZXRzLCBhcyBkb2VzIHN0cnVjdCBmaWxlLiAgRnVydGhlcm1vcmUsCitjZXJ0YWluIGZ1bmN0aW9ucyBzdWNoIGFzIGdldF9jcmVkKCkgYW5kIHB1dF9jcmVkKCkgb3BlcmF0ZSBvbiBjb25zdCBwb2ludGVycywKK3RodXMgcmVuZGVyaW5nIGNhc3RzIHVubmVjZXNzYXJ5LCBidXQgcmVxdWlyZSB0byB0ZW1wb3JhcmlseSBkaXRjaCB0aGUgY29uc3QKK3F1YWxpZmljYXRpb24gdG8gYmUgYWJsZSB0byBhbHRlciB0aGUgcmVmZXJlbmNlIGNvdW50LgorCisKK0FDQ0VTU0lORyBUQVNLIENSRURFTlRJQUxTCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBIHRhc2sgYmVpbmcgYWJsZSB0byBhbHRlciBvbmx5IGl0cyBvd24gY3JlZGVudGlhbHMgcGVybWl0cyB0aGUgY3VycmVudCBwcm9jZXNzCit0byByZWFkIG9yIHJlcGxhY2UgaXRzIG93biBjcmVkZW50aWFscyB3aXRob3V0IHRoZSBuZWVkIGZvciBhbnkgZm9ybSBvZiBsb2NraW5nCistIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzIGdyZWF0bHkuICBJdCBjYW4ganVzdCBjYWxsOgorCisJY29uc3Qgc3RydWN0IGNyZWQgKmN1cnJlbnRfY3JlZCgpCisKK3RvIGdldCBhIHBvaW50ZXIgdG8gaXRzIGNyZWRlbnRpYWxzIHN0cnVjdHVyZSwgYW5kIGl0IGRvZXNuJ3QgaGF2ZSB0byByZWxlYXNlCitpdCBhZnRlcndhcmRzLgorCitUaGVyZSBhcmUgY29udmVuaWVuY2Ugd3JhcHBlcnMgZm9yIHJldHJpZXZpbmcgc3BlY2lmaWMgYXNwZWN0cyBvZiBhIHRhc2sncworY3JlZGVudGlhbHMgKHRoZSB2YWx1ZSBpcyBzaW1wbHkgcmV0dXJuZWQgaW4gZWFjaCBjYXNlKToKKworCXVpZF90IGN1cnJlbnRfdWlkKHZvaWQpCQlDdXJyZW50J3MgcmVhbCBVSUQKKwlnaWRfdCBjdXJyZW50X2dpZCh2b2lkKQkJQ3VycmVudCdzIHJlYWwgR0lECisJdWlkX3QgY3VycmVudF9ldWlkKHZvaWQpCUN1cnJlbnQncyBlZmZlY3RpdmUgVUlECisJZ2lkX3QgY3VycmVudF9lZ2lkKHZvaWQpCUN1cnJlbnQncyBlZmZlY3RpdmUgR0lECisJdWlkX3QgY3VycmVudF9mc3VpZCh2b2lkKQlDdXJyZW50J3MgZmlsZSBhY2Nlc3MgVUlECisJZ2lkX3QgY3VycmVudF9mc2dpZCh2b2lkKQlDdXJyZW50J3MgZmlsZSBhY2Nlc3MgR0lECisJa2VybmVsX2NhcF90IGN1cnJlbnRfY2FwKHZvaWQpCUN1cnJlbnQncyBlZmZlY3RpdmUgY2FwYWJpbGl0aWVzCisJdm9pZCAqY3VycmVudF9zZWN1cml0eSh2b2lkKQlDdXJyZW50J3MgTFNNIHNlY3VyaXR5IHBvaW50ZXIKKwlzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKmN1cnJlbnRfdXNlcih2b2lkKSAgQ3VycmVudCdzIHVzZXIgYWNjb3VudAorCitUaGVyZSBhcmUgYWxzbyBjb252ZW5pZW5jZSB3cmFwcGVycyBmb3IgcmV0cmlldmluZyBzcGVjaWZpYyBhc3NvY2lhdGVkIHBhaXJzIG9mCithIHRhc2sncyBjcmVkZW50aWFsczoKKworCXZvaWQgY3VycmVudF91aWRfZ2lkKHVpZF90ICosIGdpZF90ICopOworCXZvaWQgY3VycmVudF9ldWlkX2VnaWQodWlkX3QgKiwgZ2lkX3QgKik7CisJdm9pZCBjdXJyZW50X2ZzdWlkX2ZzZ2lkKHVpZF90ICosIGdpZF90ICopOworCit3aGljaCByZXR1cm4gdGhlc2UgcGFpcnMgb2YgdmFsdWVzIHRocm91Z2ggdGhlaXIgYXJndW1lbnRzIGFmdGVyIHJldHJpZXZpbmcKK3RoZW0gZnJvbSB0aGUgY3VycmVudCB0YXNrJ3MgY3JlZGVudGlhbHMuCisKKworSW4gYWRkaXRpb24sIHRoZXJlIGlzIGEgZnVuY3Rpb24gZm9yIG9idGFpbmluZyBhIHJlZmVyZW5jZSBvbiB0aGUgY3VycmVudAorcHJvY2VzcydzIGN1cnJlbnQgc2V0IG9mIGNyZWRlbnRpYWxzOgorCisJY29uc3Qgc3RydWN0IGNyZWQgKmdldF9jdXJyZW50X2NyZWQodm9pZCk7CisKK2FuZCBmdW5jdGlvbnMgZm9yIGdldHRpbmcgcmVmZXJlbmNlcyB0byBvbmUgb2YgdGhlIGNyZWRlbnRpYWxzIHRoYXQgZG9uJ3QKK2FjdHVhbGx5IGxpdmUgaW4gc3RydWN0IGNyZWQ6CisKKwlzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKmdldF9jdXJyZW50X3VzZXIodm9pZCk7CisJc3RydWN0IGdyb3VwX2luZm8gKmdldF9jdXJyZW50X2dyb3Vwcyh2b2lkKTsKKword2hpY2ggZ2V0IHJlZmVyZW5jZXMgdG8gdGhlIGN1cnJlbnQgcHJvY2VzcydzIHVzZXIgYWNjb3VudGluZyBzdHJ1Y3R1cmUgYW5kCitzdXBwbGVtZW50YXJ5IGdyb3VwcyBsaXN0IHJlc3BlY3RpdmVseS4KKworT25jZSBhIHJlZmVyZW5jZSBoYXMgYmVlbiBvYnRhaW5lZCwgaXQgbXVzdCBiZSByZWxlYXNlZCB3aXRoIHB1dF9jcmVkKCksCitmcmVlX3VpZCgpIG9yIHB1dF9ncm91cF9pbmZvKCkgYXMgYXBwcm9wcmlhdGUuCisKKworQUNDRVNTSU5HIEFOT1RIRVIgVEFTSydTIENSRURFTlRJQUxTCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hpbHN0IGEgdGFzayBtYXkgYWNjZXNzIGl0cyBvd24gY3JlZGVudGlhbHMgd2l0aG91dCB0aGUgbmVlZCBmb3IgbG9ja2luZywgdGhlCitzYW1lIGlzIG5vdCB0cnVlIG9mIGEgdGFzayB3YW50aW5nIHRvIGFjY2VzcyBhbm90aGVyIHRhc2sncyBjcmVkZW50aWFscy4gIEl0CittdXN0IHVzZSB0aGUgUkNVIHJlYWQgbG9jayBhbmQgcmN1X2RlcmVmZXJlbmNlKCkuCisKK1RoZSByY3VfZGVyZWZlcmVuY2UoKSBpcyB3cmFwcGVkIGJ5OgorCisJY29uc3Qgc3RydWN0IGNyZWQgKl9fdGFza19jcmVkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7CisKK1RoaXMgc2hvdWxkIGJlIHVzZWQgaW5zaWRlIHRoZSBSQ1UgcmVhZCBsb2NrLCBhcyBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGU6CisKKwl2b2lkIGZvbyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQsIHN0cnVjdCBmb29fZGF0YSAqZikKKwl7CisJCWNvbnN0IHN0cnVjdCBjcmVkICp0Y3JlZDsKKwkJLi4uCisJCXJjdV9yZWFkX2xvY2soKTsKKwkJdGNyZWQgPSBfX3Rhc2tfY3JlZCh0KTsKKwkJZi0+dWlkID0gdGNyZWQtPnVpZDsKKwkJZi0+Z2lkID0gdGNyZWQtPmdpZDsKKwkJZi0+Z3JvdXBzID0gZ2V0X2dyb3VwX2luZm8odGNyZWQtPmdyb3Vwcyk7CisJCXJjdV9yZWFkX3VubG9jaygpOworCQkuLi4KKwl9CisKK1Nob3VsZCBpdCBiZSBuZWNlc3NhcnkgdG8gaG9sZCBhbm90aGVyIHRhc2sncyBjcmVkZW50aWFscyBmb3IgYSBsb25nIHBlcmlvZCBvZgordGltZSwgYW5kIHBvc3NpYmx5IHRvIHNsZWVwIHdoaWxzdCBkb2luZyBzbywgdGhlbiB0aGUgY2FsbGVyIHNob3VsZCBnZXQgYQorcmVmZXJlbmNlIG9uIHRoZW0gdXNpbmc6CisKKwljb25zdCBzdHJ1Y3QgY3JlZCAqZ2V0X3Rhc2tfY3JlZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spOworCitUaGlzIGRvZXMgYWxsIHRoZSBSQ1UgbWFnaWMgaW5zaWRlIG9mIGl0LiAgVGhlIGNhbGxlciBtdXN0IGNhbGwgcHV0X2NyZWQoKSBvbgordGhlIGNyZWRlbnRpYWxzIHNvIG9idGFpbmVkIHdoZW4gdGhleSdyZSBmaW5pc2hlZCB3aXRoLgorCisgWypdIE5vdGU6IFRoZSByZXN1bHQgb2YgX190YXNrX2NyZWQoKSBzaG91bGQgbm90IGJlIHBhc3NlZCBkaXJlY3RseSB0bworICAgICBnZXRfY3JlZCgpIGFzIHRoaXMgbWF5IHJhY2Ugd2l0aCBjb21taXRfY3JlZCgpLgorCitUaGVyZSBhcmUgYSBjb3VwbGUgb2YgY29udmVuaWVuY2UgZnVuY3Rpb25zIHRvIGFjY2VzcyBiaXRzIG9mIGFub3RoZXIgdGFzaydzCitjcmVkZW50aWFscywgaGlkaW5nIHRoZSBSQ1UgbWFnaWMgZnJvbSB0aGUgY2FsbGVyOgorCisJdWlkX3QgdGFza191aWQodGFzaykJCVRhc2sncyByZWFsIFVJRAorCXVpZF90IHRhc2tfZXVpZCh0YXNrKQkJVGFzaydzIGVmZmVjdGl2ZSBVSUQKKworSWYgdGhlIGNhbGxlciBpcyBob2xkaW5nIHRoZSBSQ1UgcmVhZCBsb2NrIGF0IHRoZSB0aW1lIGFueXdheSwgdGhlbjoKKworCV9fdGFza19jcmVkKHRhc2spLT51aWQKKwlfX3Rhc2tfY3JlZCh0YXNrKS0+ZXVpZAorCitzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLiAgU2ltaWxhcmx5LCBpZiBtdWx0aXBsZSBhc3BlY3RzIG9mIGEgdGFzaydzIGNyZWRlbnRpYWxzCituZWVkIHRvIGJlIGFjY2Vzc2VkLCBSQ1UgcmVhZCBsb2NrIHNob3VsZCBiZSB1c2VkLCBfX3Rhc2tfY3JlZCgpIGNhbGxlZCwgdGhlCityZXN1bHQgc3RvcmVkIGluIGEgdGVtcG9yYXJ5IHBvaW50ZXIgYW5kIHRoZW4gdGhlIGNyZWRlbnRpYWwgYXNwZWN0cyBjYWxsZWQKK2Zyb20gdGhhdCBiZWZvcmUgZHJvcHBpbmcgdGhlIGxvY2suICBUaGlzIHByZXZlbnRzIHRoZSBwb3RlbnRpYWxseSBleHBlbnNpdmUKK1JDVSBtYWdpYyBmcm9tIGJlaW5nIGludm9rZWQgbXVsdGlwbGUgdGltZXMuCisKK1Nob3VsZCBzb21lIG90aGVyIHNpbmdsZSBhc3BlY3Qgb2YgYW5vdGhlciB0YXNrJ3MgY3JlZGVudGlhbHMgbmVlZCB0byBiZQorYWNjZXNzZWQsIHRoZW4gdGhpcyBjYW4gYmUgdXNlZDoKKworCXRhc2tfY3JlZF94eHgodGFzaywgbWVtYmVyKQorCit3aGVyZSAnbWVtYmVyJyBpcyBhIG5vbi1wb2ludGVyIG1lbWJlciBvZiB0aGUgY3JlZCBzdHJ1Y3QuICBGb3IgaW5zdGFuY2U6CisKKwl1aWRfdCB0YXNrX2NyZWRfeHh4KHRhc2ssIHN1aWQpOworCit3aWxsIHJldHJpZXZlICdzdHJ1Y3QgY3JlZDo6c3VpZCcgZnJvbSB0aGUgdGFzaywgZG9pbmcgdGhlIGFwcHJvcHJpYXRlIFJDVQorbWFnaWMuICBUaGlzIG1heSBub3QgYmUgdXNlZCBmb3IgcG9pbnRlciBtZW1iZXJzIGFzIHdoYXQgdGhleSBwb2ludCB0byBtYXkKK2Rpc2FwcGVhciB0aGUgbW9tZW50IHRoZSBSQ1UgcmVhZCBsb2NrIGlzIGRyb3BwZWQuCisKKworQUxURVJJTkcgQ1JFREVOVElBTFMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FzIHByZXZpb3VzbHkgbWVudGlvbmVkLCBhIHRhc2sgbWF5IG9ubHkgYWx0ZXIgaXRzIG93biBjcmVkZW50aWFscywgYW5kIG1heSBub3QKK2FsdGVyIHRob3NlIG9mIGFub3RoZXIgdGFzay4gIFRoaXMgbWVhbnMgdGhhdCBpdCBkb2Vzbid0IG5lZWQgdG8gdXNlIGFueQorbG9ja2luZyB0byBhbHRlciBpdHMgb3duIGNyZWRlbnRpYWxzLgorCitUbyBhbHRlciB0aGUgY3VycmVudCBwcm9jZXNzJ3MgY3JlZGVudGlhbHMsIGEgZnVuY3Rpb24gc2hvdWxkIGZpcnN0IHByZXBhcmUgYQorbmV3IHNldCBvZiBjcmVkZW50aWFscyBieSBjYWxsaW5nOgorCisJc3RydWN0IGNyZWQgKnByZXBhcmVfY3JlZHModm9pZCk7CisKK3RoaXMgbG9ja3MgY3VycmVudC0+Y3JlZF9yZXBsYWNlX211dGV4IGFuZCB0aGVuIGFsbG9jYXRlcyBhbmQgY29uc3RydWN0cyBhCitkdXBsaWNhdGUgb2YgdGhlIGN1cnJlbnQgcHJvY2VzcydzIGNyZWRlbnRpYWxzLCByZXR1cm5pbmcgd2l0aCB0aGUgbXV0ZXggc3RpbGwKK2hlbGQgaWYgc3VjY2Vzc2Z1bC4gIEl0IHJldHVybnMgTlVMTCBpZiBub3Qgc3VjY2Vzc2Z1bCAob3V0IG9mIG1lbW9yeSkuCisKK1RoZSBtdXRleCBwcmV2ZW50cyBwdHJhY2UoKSBmcm9tIGFsdGVyaW5nIHRoZSBwdHJhY2Ugc3RhdGUgb2YgYSBwcm9jZXNzIHdoaWxzdAorc2VjdXJpdHkgY2hlY2tzIG9uIGNyZWRlbnRpYWxzIGNvbnN0cnVjdGlvbiBhbmQgY2hhbmdpbmcgaXMgdGFraW5nIHBsYWNlIGFzCit0aGUgcHRyYWNlIHN0YXRlIG1heSBhbHRlciB0aGUgb3V0Y29tZSwgcGFydGljdWxhcmx5IGluIHRoZSBjYXNlIG9mIGV4ZWN2ZSgpLgorCitUaGUgbmV3IGNyZWRlbnRpYWxzIHNldCBzaG91bGQgYmUgYWx0ZXJlZCBhcHByb3ByaWF0ZWx5LCBhbmQgYW55IHNlY3VyaXR5CitjaGVja3MgYW5kIGhvb2tzIGRvbmUuICBCb3RoIHRoZSBjdXJyZW50IGFuZCB0aGUgcHJvcG9zZWQgc2V0cyBvZiBjcmVkZW50aWFscworYXJlIGF2YWlsYWJsZSBmb3IgdGhpcyBwdXJwb3NlIGFzIGN1cnJlbnRfY3JlZCgpIHdpbGwgcmV0dXJuIHRoZSBjdXJyZW50IHNldAorc3RpbGwgYXQgdGhpcyBwb2ludC4KKworCitXaGVuIHRoZSBjcmVkZW50aWFsIHNldCBpcyByZWFkeSwgaXQgc2hvdWxkIGJlIGNvbW1pdHRlZCB0byB0aGUgY3VycmVudCBwcm9jZXNzCitieSBjYWxsaW5nOgorCisJaW50IGNvbW1pdF9jcmVkcyhzdHJ1Y3QgY3JlZCAqbmV3KTsKKworVGhpcyB3aWxsIGFsdGVyIHZhcmlvdXMgYXNwZWN0cyBvZiB0aGUgY3JlZGVudGlhbHMgYW5kIHRoZSBwcm9jZXNzLCBnaXZpbmcgdGhlCitMU00gYSBjaGFuY2UgdG8gZG8gbGlrZXdpc2UsIHRoZW4gaXQgd2lsbCB1c2UgcmN1X2Fzc2lnbl9wb2ludGVyKCkgdG8gYWN0dWFsbHkKK2NvbW1pdCB0aGUgbmV3IGNyZWRlbnRpYWxzIHRvIGN1cnJlbnQtPmNyZWQsIGl0IHdpbGwgcmVsZWFzZQorY3VycmVudC0+Y3JlZF9yZXBsYWNlX211dGV4IHRvIGFsbG93IHB0cmFjZSgpIHRvIHRha2UgcGxhY2UsIGFuZCBpdCB3aWxsIG5vdGlmeQordGhlIHNjaGVkdWxlciBhbmQgb3RoZXJzIG9mIHRoZSBjaGFuZ2VzLgorCitUaGlzIGZ1bmN0aW9uIGlzIGd1YXJhbnRlZWQgdG8gcmV0dXJuIDAsIHNvIHRoYXQgaXQgY2FuIGJlIHRhaWwtY2FsbGVkIGF0IHRoZQorZW5kIG9mIHN1Y2ggZnVuY3Rpb25zIGFzIHN5c19zZXRyZXN1aWQoKS4KKworTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gY29uc3VtZXMgdGhlIGNhbGxlcidzIHJlZmVyZW5jZSB0byB0aGUgbmV3IGNyZWRlbnRpYWxzLgorVGhlIGNhbGxlciBzaG91bGQgX25vdF8gY2FsbCBwdXRfY3JlZCgpIG9uIHRoZSBuZXcgY3JlZGVudGlhbHMgYWZ0ZXJ3YXJkcy4KKworRnVydGhlcm1vcmUsIG9uY2UgdGhpcyBmdW5jdGlvbiBoYXMgYmVlbiBjYWxsZWQgb24gYSBuZXcgc2V0IG9mIGNyZWRlbnRpYWxzLAordGhvc2UgY3JlZGVudGlhbHMgbWF5IF9ub3RfIGJlIGNoYW5nZWQgZnVydGhlci4KKworCitTaG91bGQgdGhlIHNlY3VyaXR5IGNoZWNrcyBmYWlsIG9yIHNvbWUgb3RoZXIgZXJyb3Igb2NjdXIgYWZ0ZXIgcHJlcGFyZV9jcmVkcygpCitoYXMgYmVlbiBjYWxsZWQsIHRoZW4gdGhlIGZvbGxvd2luZyBmdW5jdGlvbiBzaG91bGQgYmUgaW52b2tlZDoKKworCXZvaWQgYWJvcnRfY3JlZHMoc3RydWN0IGNyZWQgKm5ldyk7CisKK1RoaXMgcmVsZWFzZXMgdGhlIGxvY2sgb24gY3VycmVudC0+Y3JlZF9yZXBsYWNlX211dGV4IHRoYXQgcHJlcGFyZV9jcmVkcygpIGdvdAorYW5kIHRoZW4gcmVsZWFzZXMgdGhlIG5ldyBjcmVkZW50aWFscy4KKworCitBIHR5cGljYWwgY3JlZGVudGlhbHMgYWx0ZXJhdGlvbiBmdW5jdGlvbiB3b3VsZCBsb29rIHNvbWV0aGluZyBsaWtlIHRoaXM6CisKKwlpbnQgYWx0ZXJfc3VpZCh1aWRfdCBzdWlkKQorCXsKKwkJc3RydWN0IGNyZWQgKm5ldzsKKwkJaW50IHJldDsKKworCQluZXcgPSBwcmVwYXJlX2NyZWRzKCk7CisJCWlmICghbmV3KQorCQkJcmV0dXJuIC1FTk9NRU07CisKKwkJbmV3LT5zdWlkID0gc3VpZDsKKwkJcmV0ID0gc2VjdXJpdHlfYWx0ZXJfc3VpZChuZXcpOworCQlpZiAocmV0IDwgMCkgeworCQkJYWJvcnRfY3JlZHMobmV3KTsKKwkJCXJldHVybiByZXQ7CisJCX0KKworCQlyZXR1cm4gY29tbWl0X2NyZWRzKG5ldyk7CisJfQorCisKK01BTkFHSU5HIENSRURFTlRJQUxTCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGVyZSBhcmUgc29tZSBmdW5jdGlvbnMgdG8gaGVscCBtYW5hZ2UgY3JlZGVudGlhbHM6CisKKyAoKikgdm9pZCBwdXRfY3JlZChjb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZCk7CisKKyAgICAgVGhpcyByZWxlYXNlcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2l2ZW4gc2V0IG9mIGNyZWRlbnRpYWxzLiAgSWYgdGhlCisgICAgIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8sIHRoZSBjcmVkZW50aWFscyB3aWxsIGJlIHNjaGVkdWxlZCBmb3IKKyAgICAgZGVzdHJ1Y3Rpb24gYnkgdGhlIFJDVSBzeXN0ZW0uCisKKyAoKikgY29uc3Qgc3RydWN0IGNyZWQgKmdldF9jcmVkKGNvbnN0IHN0cnVjdCBjcmVkICpjcmVkKTsKKworICAgICBUaGlzIGdldHMgYSByZWZlcmVuY2Ugb24gYSBsaXZlIHNldCBvZiBjcmVkZW50aWFscywgcmV0dXJuaW5nIGEgcG9pbnRlciB0bworICAgICB0aGF0IHNldCBvZiBjcmVkZW50aWFscy4KKworICgqKSBzdHJ1Y3QgY3JlZCAqZ2V0X25ld19jcmVkKHN0cnVjdCBjcmVkICpjcmVkKTsKKworICAgICBUaGlzIGdldHMgYSByZWZlcmVuY2Ugb24gYSBzZXQgb2YgY3JlZGVudGlhbHMgdGhhdCBpcyB1bmRlciBjb25zdHJ1Y3Rpb24KKyAgICAgYW5kIGlzIHRodXMgc3RpbGwgbXV0YWJsZSwgcmV0dXJuaW5nIGEgcG9pbnRlciB0byB0aGF0IHNldCBvZiBjcmVkZW50aWFscy4KKworCis9PT09PT09PT09PT09PT09PT09PT0KK09QRU4gRklMRSBDUkVERU5USUFMUworPT09PT09PT09PT09PT09PT09PT09CisKK1doZW4gYSBuZXcgZmlsZSBpcyBvcGVuZWQsIGEgcmVmZXJlbmNlIGlzIG9idGFpbmVkIG9uIHRoZSBvcGVuaW5nIHRhc2sncworY3JlZGVudGlhbHMgYW5kIHRoaXMgaXMgYXR0YWNoZWQgdG8gdGhlIGZpbGUgc3RydWN0IGFzICdmX2NyZWQnIGluIHBsYWNlIG9mCisnZl91aWQnIGFuZCAnZl9naWQnLiAgQ29kZSB0aGF0IHVzZWQgdG8gYWNjZXNzIGZpbGUtPmZfdWlkIGFuZCBmaWxlLT5mX2dpZAorc2hvdWxkIG5vdyBhY2Nlc3MgZmlsZS0+Zl9jcmVkLT5mc3VpZCBhbmQgZmlsZS0+Zl9jcmVkLT5mc2dpZC4KKworSXQgaXMgc2FmZSB0byBhY2Nlc3MgZl9jcmVkIHdpdGhvdXQgdGhlIHVzZSBvZiBSQ1Ugb3IgbG9ja2luZyBiZWNhdXNlIHRoZQorcG9pbnRlciB3aWxsIG5vdCBjaGFuZ2Ugb3ZlciB0aGUgbGlmZXRpbWUgb2YgdGhlIGZpbGUgc3RydWN0LCBhbmQgbm9yIHdpbGwgdGhlCitjb250ZW50cyBvZiB0aGUgY3JlZCBzdHJ1Y3QgcG9pbnRlZCB0bywgYmFycmluZyB0aGUgZXhjZXB0aW9ucyBsaXN0ZWQgYWJvdmUKKyhzZWUgdGhlIFRhc2sgQ3JlZGVudGlhbHMgc2VjdGlvbikuCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitPVkVSUklESU5HIFRIRSBWRlMnUyBVU0UgT0YgQ1JFREVOVElBTFMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitVbmRlciBzb21lIGNpcmN1bXN0YW5jZXMgaXQgaXMgZGVzaXJhYmxlIHRvIG92ZXJyaWRlIHRoZSBjcmVkZW50aWFscyB1c2VkIGJ5Cit0aGUgVkZTLCBhbmQgdGhhdCBjYW4gYmUgZG9uZSBieSBjYWxsaW5nIGludG8gc3VjaCBhcyB2ZnNfbWtkaXIoKSB3aXRoIGEKK2RpZmZlcmVudCBzZXQgb2YgY3JlZGVudGlhbHMuICBUaGlzIGlzIGRvbmUgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CisKKyAoKikgc3lzX2ZhY2Nlc3NhdCgpLgorCisgKCopIGRvX2NvcmVkdW1wKCkuCisKKyAoKikgbmZzNHJlY292ZXIuYy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2VjdXJpdHkva2V5cy1lY3J5cHRmcy50eHQgYi9Eb2N1bWVudGF0aW9uL3NlY3VyaXR5L2tleXMtZWNyeXB0ZnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzYmJlYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NlY3VyaXR5L2tleXMtZWNyeXB0ZnMudHh0CkBAIC0wLDAgKzEsNjggQEAKKwkJRW5jcnlwdGVkIGtleXMgZm9yIHRoZSBlQ3J5cHRmcyBmaWxlc3lzdGVtCisKK0VDcnlwdGZzIGlzIGEgc3RhY2tlZCBmaWxlc3lzdGVtIHdoaWNoIHRyYW5zcGFyZW50bHkgZW5jcnlwdHMgYW5kIGRlY3J5cHRzIGVhY2gKK2ZpbGUgdXNpbmcgYSByYW5kb21seSBnZW5lcmF0ZWQgRmlsZSBFbmNyeXB0aW9uIEtleSAoRkVLKS4KKworRWFjaCBGRUsgaXMgaW4gdHVybiBlbmNyeXB0ZWQgd2l0aCBhIEZpbGUgRW5jcnlwdGlvbiBLZXkgRW5jcnlwdGlvbiBLZXkgKEZFRkVLKQorZWl0aGVyIGluIGtlcm5lbCBzcGFjZSBvciBpbiB1c2VyIHNwYWNlIHdpdGggYSBkYWVtb24gY2FsbGVkICdlY3J5cHRmc2QnLiAgSW4KK3RoZSBmb3JtZXIgY2FzZSB0aGUgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBkaXJlY3RseSBieSB0aGUga2VybmVsIENyeXB0b0FQSQordXNpbmcgYSBrZXksIHRoZSBGRUZFSywgZGVyaXZlZCBmcm9tIGEgdXNlciBwcm9tcHRlZCBwYXNzcGhyYXNlOyAgaW4gdGhlIGxhdHRlcgordGhlIEZFSyBpcyBlbmNyeXB0ZWQgYnkgJ2VjcnlwdGZzZCcgd2l0aCB0aGUgaGVscCBvZiBleHRlcm5hbCBsaWJyYXJpZXMgaW4gb3JkZXIKK3RvIHN1cHBvcnQgb3RoZXIgbWVjaGFuaXNtcyBsaWtlIHB1YmxpYyBrZXkgY3J5cHRvZ3JhcGh5LCBQS0NTIzExIGFuZCBUUE0gYmFzZWQKK29wZXJhdGlvbnMuCisKK1RoZSBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIGJ5IGVDcnlwdGZzIHRvIGNvbnRhaW4gaW5mb3JtYXRpb24gcmVxdWlyZWQgZm9yIHRoZQorRkVLIGRlY3J5cHRpb24gaXMgY2FsbGVkIGF1dGhlbnRpY2F0aW9uIHRva2VuIGFuZCwgY3VycmVudGx5LCBjYW4gYmUgc3RvcmVkIGluIGEKK2tlcm5lbCBrZXkgb2YgdGhlICd1c2VyJyB0eXBlLCBpbnNlcnRlZCBpbiB0aGUgdXNlcidzIHNlc3Npb24gc3BlY2lmaWMga2V5cmluZworYnkgdGhlIHVzZXJzcGFjZSB1dGlsaXR5ICdtb3VudC5lY3J5cHRmcycgc2hpcHBlZCB3aXRoIHRoZSBwYWNrYWdlCisnZWNyeXB0ZnMtdXRpbHMnLgorCitUaGUgJ2VuY3J5cHRlZCcga2V5IHR5cGUgaGFzIGJlZW4gZXh0ZW5kZWQgd2l0aCB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSBuZXcKK2Zvcm1hdCAnZWNyeXB0ZnMnIGluIG9yZGVyIHRvIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgZUNyeXB0ZnMKK2ZpbGVzeXN0ZW0uICBFbmNyeXB0ZWQga2V5cyBvZiB0aGUgbmV3bHkgaW50cm9kdWNlZCBmb3JtYXQgc3RvcmUgYW4KK2F1dGhlbnRpY2F0aW9uIHRva2VuIGluIGl0cyBwYXlsb2FkIHdpdGggYSBGRUZFSyByYW5kb21seSBnZW5lcmF0ZWQgYnkgdGhlCitrZXJuZWwgYW5kIHByb3RlY3RlZCBieSB0aGUgcGFyZW50IG1hc3RlciBrZXkuCisKK0luIG9yZGVyIHRvIGF2b2lkIGtub3duLXBsYWludGV4dCBhdHRhY2tzLCB0aGUgZGF0YWJsb2Igb2J0YWluZWQgdGhyb3VnaAorY29tbWFuZHMgJ2tleWN0bCBwcmludCcgb3IgJ2tleWN0bCBwaXBlJyBkb2VzIG5vdCBjb250YWluIHRoZSBvdmVyYWxsCithdXRoZW50aWNhdGlvbiB0b2tlbiwgd2hpY2ggY29udGVudCBpcyB3ZWxsIGtub3duLCBidXQgb25seSB0aGUgRkVGRUsgaW4KK2VuY3J5cHRlZCBmb3JtLgorCitUaGUgZUNyeXB0ZnMgZmlsZXN5c3RlbSBtYXkgcmVhbGx5IGJlbmVmaXQgZnJvbSB1c2luZyBlbmNyeXB0ZWQga2V5cyBpbiB0aGF0IHRoZQorcmVxdWlyZWQga2V5IGNhbiBiZSBzZWN1cmVseSBnZW5lcmF0ZWQgYnkgYW4gQWRtaW5pc3RyYXRvciBhbmQgcHJvdmlkZWQgYXQgYm9vdAordGltZSBhZnRlciB0aGUgdW5zZWFsaW5nIG9mIGEgJ3RydXN0ZWQnIGtleSBpbiBvcmRlciB0byBwZXJmb3JtIHRoZSBtb3VudCBpbiBhCitjb250cm9sbGVkIGVudmlyb25tZW50LiAgQW5vdGhlciBhZHZhbnRhZ2UgaXMgdGhhdCB0aGUga2V5IGlzIG5vdCBleHBvc2VkIHRvCit0aHJlYXRzIG9mIG1hbGljaW91cyBzb2Z0d2FyZSwgYmVjYXVzZSBpdCBpcyBhdmFpbGFibGUgaW4gY2xlYXIgZm9ybSBvbmx5IGF0CitrZXJuZWwgbGV2ZWwuCisKK1VzYWdlOgorICAga2V5Y3RsIGFkZCBlbmNyeXB0ZWQgbmFtZSAibmV3IGVjcnlwdGZzIGtleS10eXBlOm1hc3Rlci1rZXktbmFtZSBrZXlsZW4iIHJpbmcKKyAgIGtleWN0bCBhZGQgZW5jcnlwdGVkIG5hbWUgImxvYWQgaGV4X2Jsb2IiIHJpbmcKKyAgIGtleWN0bCB1cGRhdGUga2V5aWQgInVwZGF0ZSBrZXktdHlwZTptYXN0ZXIta2V5LW5hbWUiCisKK25hbWU6PSAnPDE2IGhleGFkZWNpbWFsIGNoYXJhY3RlcnM+Jwora2V5LXR5cGU6PSAndHJ1c3RlZCcgfCAndXNlcicKK2tleWxlbjo9IDY0CisKKworRXhhbXBsZSBvZiBlbmNyeXB0ZWQga2V5IHVzYWdlIHdpdGggdGhlIGVDcnlwdGZzIGZpbGVzeXN0ZW06CisKK0NyZWF0ZSBhbiBlbmNyeXB0ZWQga2V5ICIxMDAwMTAwMDEwMDAxMDAwIiBvZiBsZW5ndGggNjQgYnl0ZXMgd2l0aCBmb3JtYXQKKydlY3J5cHRmcycgYW5kIHNhdmUgaXQgdXNpbmcgYSBwcmV2aW91c2x5IGxvYWRlZCB1c2VyIGtleSAidGVzdCI6CisKKyAgICAkIGtleWN0bCBhZGQgZW5jcnlwdGVkIDEwMDAxMDAwMTAwMDEwMDAgIm5ldyBlY3J5cHRmcyB1c2VyOnRlc3QgNjQiIEB1CisgICAgMTkxODQ1MzAKKworICAgICQga2V5Y3RsIHByaW50IDE5MTg0NTMwCisgICAgZWNyeXB0ZnMgdXNlcjp0ZXN0IDY0IDQ5MDA0NWQ0YmZlNDhjOTlmMGQ0NjVmYmJiYjc5ZTc1MDBkYTk1NDE3OGUyZGUwNjk3CisgICAgZGQ4NTA5MWY1NDUwYTA1MTEyMTllOWY3Y2Q3MGRjZDQ5ODAzODE4MTQ2NmY3OGFjOGQ0YzE5NTA0ZmNjNzI0MDJiZmM0MWMyCisgICAgZjI1M2E0MWI3NTA3Y2NhYTRiMmIwM2ZmZjE5YTY5ZDFjYzBiMTZlNzE3NDY0NzNmMDIzYTk1NDg4YjZlZGZkODZmN2ZkZDQwCisgICAgOWQyOTJlNGJhY2RlZDEyNTg4ODAxMjJkZDU1M2E2NjEKKworICAgICQga2V5Y3RsIHBpcGUgMTkxODQ1MzAgPiBlY3J5cHRmcy5ibG9iCisKK01vdW50IGFuIGVDcnlwdGZzIGZpbGVzeXN0ZW0gdXNpbmcgdGhlIGNyZWF0ZWQgZW5jcnlwdGVkIGtleSAiMTAwMDEwMDAxMDAwMTAwMCIKK2ludG8gdGhlICcvc2VjcmV0JyBkaXJlY3Rvcnk6CisKKyAgICAkIG1vdW50IC1pIC10IGVjcnlwdGZzIC1vZWNyeXB0ZnNfc2lnPTEwMDAxMDAwMTAwMDEwMDAsXAorICAgICAgZWNyeXB0ZnNfY2lwaGVyPWFlcyxlY3J5cHRmc19rZXlfYnl0ZXM9MzIgL3NlY3JldCAvc2VjcmV0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NlY3VyaXR5L2tleXMtcmVxdWVzdC1rZXkudHh0IGIvRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9rZXlzLXJlcXVlc3Qta2V5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTk4N2JmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9rZXlzLXJlcXVlc3Qta2V5LnR4dApAQCAtMCwwICsxLDIwMiBAQAorCQkJICAgICAgPT09PT09PT09PT09PT09PT09PQorCQkJICAgICAgS0VZIFJFUVVFU1QgU0VSVklDRQorCQkJICAgICAgPT09PT09PT09PT09PT09PT09PQorCitUaGUga2V5IHJlcXVlc3Qgc2VydmljZSBpcyBwYXJ0IG9mIHRoZSBrZXkgcmV0ZW50aW9uIHNlcnZpY2UgKHJlZmVyIHRvCitEb2N1bWVudGF0aW9uL3NlY3VyaXR5L2tleXMudHh0KS4gIFRoaXMgZG9jdW1lbnQgZXhwbGFpbnMgbW9yZSBmdWxseSBob3cKK3RoZSByZXF1ZXN0aW5nIGFsZ29yaXRobSB3b3Jrcy4KKworVGhlIHByb2Nlc3Mgc3RhcnRzIGJ5IGVpdGhlciB0aGUga2VybmVsIHJlcXVlc3RpbmcgYSBzZXJ2aWNlIGJ5IGNhbGxpbmcKK3JlcXVlc3Rfa2V5KigpOgorCisJc3RydWN0IGtleSAqcmVxdWVzdF9rZXkoY29uc3Qgc3RydWN0IGtleV90eXBlICp0eXBlLAorCQkJCWNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLAorCQkJCWNvbnN0IGNoYXIgKmNhbGxvdXRfaW5mbyk7CisKK29yOgorCisJc3RydWN0IGtleSAqcmVxdWVzdF9rZXlfd2l0aF9hdXhkYXRhKGNvbnN0IHN0cnVjdCBrZXlfdHlwZSAqdHlwZSwKKwkJCQkJICAgICBjb25zdCBjaGFyICpkZXNjcmlwdGlvbiwKKwkJCQkJICAgICBjb25zdCBjaGFyICpjYWxsb3V0X2luZm8sCisJCQkJCSAgICAgc2l6ZV90IGNhbGxvdXRfbGVuLAorCQkJCQkgICAgIHZvaWQgKmF1eCk7CisKK29yOgorCisJc3RydWN0IGtleSAqcmVxdWVzdF9rZXlfYXN5bmMoY29uc3Qgc3RydWN0IGtleV90eXBlICp0eXBlLAorCQkJCSAgICAgIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLAorCQkJCSAgICAgIGNvbnN0IGNoYXIgKmNhbGxvdXRfaW5mbywKKwkJCQkgICAgICBzaXplX3QgY2FsbG91dF9sZW4pOworCitvcjoKKworCXN0cnVjdCBrZXkgKnJlcXVlc3Rfa2V5X2FzeW5jX3dpdGhfYXV4ZGF0YShjb25zdCBzdHJ1Y3Qga2V5X3R5cGUgKnR5cGUsCisJCQkJCQkgICBjb25zdCBjaGFyICpkZXNjcmlwdGlvbiwKKwkJCQkJCSAgIGNvbnN0IGNoYXIgKmNhbGxvdXRfaW5mbywKKwkJCQkJICAgICAJICAgc2l6ZV90IGNhbGxvdXRfbGVuLAorCQkJCQkJICAgdm9pZCAqYXV4KTsKKworT3IgYnkgdXNlcnNwYWNlIGludm9raW5nIHRoZSByZXF1ZXN0X2tleSBzeXN0ZW0gY2FsbDoKKworCWtleV9zZXJpYWxfdCByZXF1ZXN0X2tleShjb25zdCBjaGFyICp0eXBlLAorCQkJCSBjb25zdCBjaGFyICpkZXNjcmlwdGlvbiwKKwkJCQkgY29uc3QgY2hhciAqY2FsbG91dF9pbmZvLAorCQkJCSBrZXlfc2VyaWFsX3QgZGVzdF9rZXlyaW5nKTsKKworVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBhY2Nlc3MgcG9pbnRzIGlzIHRoYXQgdGhlIGluLWtlcm5lbCBpbnRlcmZhY2UKK2RvZXMgbm90IG5lZWQgdG8gbGluayB0aGUga2V5IHRvIGEga2V5cmluZyB0byBwcmV2ZW50IGl0IGZyb20gYmVpbmcgaW1tZWRpYXRlbHkKK2Rlc3Ryb3llZC4gIFRoZSBrZXJuZWwgaW50ZXJmYWNlIHJldHVybnMgYSBwb2ludGVyIGRpcmVjdGx5IHRvIHRoZSBrZXksIGFuZAoraXQncyB1cCB0byB0aGUgY2FsbGVyIHRvIGRlc3Ryb3kgdGhlIGtleS4KKworVGhlIHJlcXVlc3Rfa2V5Kl93aXRoX2F1eGRhdGEoKSBjYWxscyBhcmUgbGlrZSB0aGUgaW4ta2VybmVsIHJlcXVlc3Rfa2V5KigpCitjYWxscywgZXhjZXB0IHRoYXQgdGhleSBwZXJtaXQgYXV4aWxpYXJ5IGRhdGEgdG8gYmUgcGFzc2VkIHRvIHRoZSB1cGNhbGxlciAodGhlCitkZWZhdWx0IGlzIE5VTEwpLiAgVGhpcyBpcyBvbmx5IHVzZWZ1bCBmb3IgdGhvc2Uga2V5IHR5cGVzIHRoYXQgZGVmaW5lIHRoZWlyCitvd24gdXBjYWxsIG1lY2hhbmlzbSByYXRoZXIgdGhhbiB1c2luZyAvc2Jpbi9yZXF1ZXN0LWtleS4KKworVGhlIHR3byBhc3luYyBpbi1rZXJuZWwgY2FsbHMgbWF5IHJldHVybiBrZXlzIHRoYXQgYXJlIHN0aWxsIGluIHRoZSBwcm9jZXNzIG9mCitiZWluZyBjb25zdHJ1Y3RlZC4gIFRoZSB0d28gbm9uLWFzeW5jIG9uZXMgd2lsbCB3YWl0IGZvciBjb25zdHJ1Y3Rpb24gdG8KK2NvbXBsZXRlIGZpcnN0LgorCitUaGUgdXNlcnNwYWNlIGludGVyZmFjZSBsaW5rcyB0aGUga2V5IHRvIGEga2V5cmluZyBhc3NvY2lhdGVkIHdpdGggdGhlIHByb2Nlc3MKK3RvIHByZXZlbnQgdGhlIGtleSBmcm9tIGdvaW5nIGF3YXksIGFuZCByZXR1cm5zIHRoZSBzZXJpYWwgbnVtYmVyIG9mIHRoZSBrZXkgdG8KK3RoZSBjYWxsZXIuCisKKworVGhlIGZvbGxvd2luZyBleGFtcGxlIGFzc3VtZXMgdGhhdCB0aGUga2V5IHR5cGVzIGludm9sdmVkIGRvbid0IGRlZmluZSB0aGVpcgorb3duIHVwY2FsbCBtZWNoYW5pc21zLiAgSWYgdGhleSBkbywgdGhlbiB0aG9zZSBzaG91bGQgYmUgc3Vic3RpdHV0ZWQgZm9yIHRoZQorZm9ya2luZyBhbmQgZXhlY3V0aW9uIG9mIC9zYmluL3JlcXVlc3Qta2V5LgorCisKKz09PT09PT09PT09CitUSEUgUFJPQ0VTUworPT09PT09PT09PT0KKworQSByZXF1ZXN0IHByb2NlZWRzIGluIHRoZSBmb2xsb3dpbmcgbWFubmVyOgorCisgKDEpIFByb2Nlc3MgQSBjYWxscyByZXF1ZXN0X2tleSgpIFt0aGUgdXNlcnNwYWNlIHN5c2NhbGwgY2FsbHMgdGhlIGtlcm5lbAorICAgICBpbnRlcmZhY2VdLgorCisgKDIpIHJlcXVlc3Rfa2V5KCkgc2VhcmNoZXMgdGhlIHByb2Nlc3MncyBzdWJzY3JpYmVkIGtleXJpbmdzIHRvIHNlZSBpZiB0aGVyZSdzCisgICAgIGEgc3VpdGFibGUga2V5IHRoZXJlLiAgSWYgdGhlcmUgaXMsIGl0IHJldHVybnMgdGhlIGtleS4gIElmIHRoZXJlIGlzbid0LAorICAgICBhbmQgY2FsbG91dF9pbmZvIGlzIG5vdCBzZXQsIGFuIGVycm9yIGlzIHJldHVybmVkLiAgT3RoZXJ3aXNlIHRoZSBwcm9jZXNzCisgICAgIHByb2NlZWRzIHRvIHRoZSBuZXh0IHN0ZXAuCisKKyAoMykgcmVxdWVzdF9rZXkoKSBzZWVzIHRoYXQgQSBkb2Vzbid0IGhhdmUgdGhlIGRlc2lyZWQga2V5IHlldCwgc28gaXQgY3JlYXRlcworICAgICB0d28gdGhpbmdzOgorCisgICAgIChhKSBBbiB1bmluc3RhbnRpYXRlZCBrZXkgVSBvZiByZXF1ZXN0ZWQgdHlwZSBhbmQgZGVzY3JpcHRpb24uCisKKyAgICAgKGIpIEFuIGF1dGhvcmlzYXRpb24ga2V5IFYgdGhhdCByZWZlcnMgdG8ga2V5IFUgYW5kIG5vdGVzIHRoYXQgcHJvY2VzcyBBCisgICAgIAkgaXMgdGhlIGNvbnRleHQgaW4gd2hpY2gga2V5IFUgc2hvdWxkIGJlIGluc3RhbnRpYXRlZCBhbmQgc2VjdXJlZCwgYW5kCisgICAgIAkgZnJvbSB3aGljaCBhc3NvY2lhdGVkIGtleSByZXF1ZXN0cyBtYXkgYmUgc2F0aXNmaWVkLgorCisgKDQpIHJlcXVlc3Rfa2V5KCkgdGhlbiBmb3JrcyBhbmQgZXhlY3V0ZXMgL3NiaW4vcmVxdWVzdC1rZXkgd2l0aCBhIG5ldyBzZXNzaW9uCisgICAgIGtleXJpbmcgdGhhdCBjb250YWlucyBhIGxpbmsgdG8gYXV0aCBrZXkgVi4KKworICg1KSAvc2Jpbi9yZXF1ZXN0LWtleSBhc3N1bWVzIHRoZSBhdXRob3JpdHkgYXNzb2NpYXRlZCB3aXRoIGtleSBVLgorCisgKDYpIC9zYmluL3JlcXVlc3Qta2V5IGV4ZWNzIGFuIGFwcHJvcHJpYXRlIHByb2dyYW0gdG8gcGVyZm9ybSB0aGUgYWN0dWFsCisgICAgIGluc3RhbnRpYXRpb24uCisKKyAoNykgVGhlIHByb2dyYW0gbWF5IHdhbnQgdG8gYWNjZXNzIGFub3RoZXIga2V5IGZyb20gQSdzIGNvbnRleHQgKHNheSBhCisgICAgIEtlcmJlcm9zIFRHVCBrZXkpLiAgSXQganVzdCByZXF1ZXN0cyB0aGUgYXBwcm9wcmlhdGUga2V5LCBhbmQgdGhlIGtleXJpbmcKKyAgICAgc2VhcmNoIG5vdGVzIHRoYXQgdGhlIHNlc3Npb24ga2V5cmluZyBoYXMgYXV0aCBrZXkgViBpbiBpdHMgYm90dG9tIGxldmVsLgorCisgICAgIFRoaXMgd2lsbCBwZXJtaXQgaXQgdG8gdGhlbiBzZWFyY2ggdGhlIGtleXJpbmdzIG9mIHByb2Nlc3MgQSB3aXRoIHRoZQorICAgICBVSUQsIEdJRCwgZ3JvdXBzIGFuZCBzZWN1cml0eSBpbmZvIG9mIHByb2Nlc3MgQSBhcyBpZiBpdCB3YXMgcHJvY2VzcyBBLAorICAgICBhbmQgY29tZSB1cCB3aXRoIGtleSBXLgorCisgKDgpIFRoZSBwcm9ncmFtIHRoZW4gZG9lcyB3aGF0IGl0IG11c3QgdG8gZ2V0IHRoZSBkYXRhIHdpdGggd2hpY2ggdG8KKyAgICAgaW5zdGFudGlhdGUga2V5IFUsIHVzaW5nIGtleSBXIGFzIGEgcmVmZXJlbmNlIChwZXJoYXBzIGl0IGNvbnRhY3RzIGEKKyAgICAgS2VyYmVyb3Mgc2VydmVyIHVzaW5nIHRoZSBUR1QpIGFuZCB0aGVuIGluc3RhbnRpYXRlcyBrZXkgVS4KKworICg5KSBVcG9uIGluc3RhbnRpYXRpbmcga2V5IFUsIGF1dGgga2V5IFYgaXMgYXV0b21hdGljYWxseSByZXZva2VkIHNvIHRoYXQgaXQKKyAgICAgbWF5IG5vdCBiZSB1c2VkIGFnYWluLgorCisoMTApIFRoZSBwcm9ncmFtIHRoZW4gZXhpdHMgMCBhbmQgcmVxdWVzdF9rZXkoKSBkZWxldGVzIGtleSBWIGFuZCByZXR1cm5zIGtleQorICAgICBVIHRvIHRoZSBjYWxsZXIuCisKK1RoaXMgYWxzbyBleHRlbmRzIGZ1cnRoZXIuICBJZiBrZXkgVyAoc3RlcCA3IGFib3ZlKSBkaWRuJ3QgZXhpc3QsIGtleSBXIHdvdWxkCitiZSBjcmVhdGVkIHVuaW5zdGFudGlhdGVkLCBhbm90aGVyIGF1dGgga2V5IChYKSB3b3VsZCBiZSBjcmVhdGVkIChhcyBwZXIgc3RlcAorMykgYW5kIGFub3RoZXIgY29weSBvZiAvc2Jpbi9yZXF1ZXN0LWtleSBzcGF3bmVkIChhcyBwZXIgc3RlcCA0KTsgYnV0IHRoZQorY29udGV4dCBzcGVjaWZpZWQgYnkgYXV0aCBrZXkgWCB3aWxsIHN0aWxsIGJlIHByb2Nlc3MgQSwgYXMgaXQgd2FzIGluIGF1dGgga2V5CitWLgorCitUaGlzIGlzIGJlY2F1c2UgcHJvY2VzcyBBJ3Mga2V5cmluZ3MgY2FuJ3Qgc2ltcGx5IGJlIGF0dGFjaGVkIHRvCisvc2Jpbi9yZXF1ZXN0LWtleSBhdCB0aGUgYXBwcm9wcmlhdGUgcGxhY2VzIGJlY2F1c2UgKGEpIGV4ZWN2ZSB3aWxsIGRpc2NhcmQgdHdvCitvZiB0aGVtLCBhbmQgKGIpIGl0IHJlcXVpcmVzIHRoZSBzYW1lIFVJRC9HSUQvR3JvdXBzIGFsbCB0aGUgd2F5IHRocm91Z2guCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitORUdBVElWRSBJTlNUQU5USUFUSU9OIEFORCBSRUpFQ1RJT04KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSYXRoZXIgdGhhbiBpbnN0YW50aWF0aW5nIGEga2V5LCBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIHBvc3Nlc3NvciBvZiBhbgorYXV0aG9yaXNhdGlvbiBrZXkgdG8gbmVnYXRpdmVseSBpbnN0YW50aWF0ZSBhIGtleSB0aGF0J3MgdW5kZXIgY29uc3RydWN0aW9uLgorVGhpcyBpcyBhIHNob3J0IGR1cmF0aW9uIHBsYWNlaG9sZGVyIHRoYXQgY2F1c2VzIGFueSBhdHRlbXB0IGF0IHJlLXJlcXVlc3RpbmcKK3RoZSBrZXkgd2hpbHN0IGl0IGV4aXN0cyB0byBmYWlsIHdpdGggZXJyb3IgRU5PS0VZIGlmIG5lZ2F0ZWQgb3IgdGhlIHNwZWNpZmllZAorZXJyb3IgaWYgcmVqZWN0ZWQuCisKK1RoaXMgaXMgcHJvdmlkZWQgdG8gcHJldmVudCBleGNlc3NpdmUgcmVwZWF0ZWQgc3Bhd25pbmcgb2YgL3NiaW4vcmVxdWVzdC1rZXkKK3Byb2Nlc3NlcyBmb3IgYSBrZXkgdGhhdCB3aWxsIG5ldmVyIGJlIG9idGFpbmFibGUuCisKK1Nob3VsZCB0aGUgL3NiaW4vcmVxdWVzdC1rZXkgcHJvY2VzcyBleGl0IGFueXRoaW5nIG90aGVyIHRoYW4gMCBvciBkaWUgb24gYQorc2lnbmFsLCB0aGUga2V5IHVuZGVyIGNvbnN0cnVjdGlvbiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgbmVnYXRpdmVseQoraW5zdGFudGlhdGVkIGZvciBhIHNob3J0IGFtb3VudCBvZiB0aW1lLgorCisKKz09PT09PT09PT09PT09PT09PT09CitUSEUgU0VBUkNIIEFMR09SSVRITQorPT09PT09PT09PT09PT09PT09PT0KKworQSBzZWFyY2ggb2YgYW55IHBhcnRpY3VsYXIga2V5cmluZyBwcm9jZWVkcyBpbiB0aGUgZm9sbG93aW5nIGZhc2hpb246CisKKyAoMSkgV2hlbiB0aGUga2V5IG1hbmFnZW1lbnQgY29kZSBzZWFyY2hlcyBmb3IgYSBrZXkgKGtleXJpbmdfc2VhcmNoX2F1eCkgaXQKKyAgICAgZmlyc3RseSBjYWxscyBrZXlfcGVybWlzc2lvbihTRUFSQ0gpIG9uIHRoZSBrZXlyaW5nIGl0J3Mgc3RhcnRpbmcgd2l0aCwKKyAgICAgaWYgdGhpcyBkZW5pZXMgcGVybWlzc2lvbiwgaXQgZG9lc24ndCBzZWFyY2ggZnVydGhlci4KKworICgyKSBJdCBjb25zaWRlcnMgYWxsIHRoZSBub24ta2V5cmluZyBrZXlzIHdpdGhpbiB0aGF0IGtleXJpbmcgYW5kLCBpZiBhbnkga2V5CisgICAgIG1hdGNoZXMgdGhlIGNyaXRlcmlhIHNwZWNpZmllZCwgY2FsbHMga2V5X3Blcm1pc3Npb24oU0VBUkNIKSBvbiBpdCB0byBzZWUKKyAgICAgaWYgdGhlIGtleSBpcyBhbGxvd2VkIHRvIGJlIGZvdW5kLiAgSWYgaXQgaXMsIHRoYXQga2V5IGlzIHJldHVybmVkOyBpZgorICAgICBub3QsIHRoZSBzZWFyY2ggY29udGludWVzLCBhbmQgdGhlIGVycm9yIGNvZGUgaXMgcmV0YWluZWQgaWYgb2YgaGlnaGVyCisgICAgIHByaW9yaXR5IHRoYW4gdGhlIG9uZSBjdXJyZW50bHkgc2V0LgorCisgKDMpIEl0IHRoZW4gY29uc2lkZXJzIGFsbCB0aGUga2V5cmluZy10eXBlIGtleXMgaW4gdGhlIGtleXJpbmcgaXQncyBjdXJyZW50bHkKKyAgICAgc2VhcmNoaW5nLiAgSXQgY2FsbHMga2V5X3Blcm1pc3Npb24oU0VBUkNIKSBvbiBlYWNoIGtleXJpbmcsIGFuZCBpZiB0aGlzCisgICAgIGdyYW50cyBwZXJtaXNzaW9uLCBpdCByZWN1cnNlcywgZXhlY3V0aW5nIHN0ZXBzICgyKSBhbmQgKDMpIG9uIHRoYXQKKyAgICAga2V5cmluZy4KKworVGhlIHByb2Nlc3Mgc3RvcHMgaW1tZWRpYXRlbHkgYSB2YWxpZCBrZXkgaXMgZm91bmQgd2l0aCBwZXJtaXNzaW9uIGdyYW50ZWQgdG8KK3VzZSBpdC4gIEFueSBlcnJvciBmcm9tIGEgcHJldmlvdXMgbWF0Y2ggYXR0ZW1wdCBpcyBkaXNjYXJkZWQgYW5kIHRoZSBrZXkgaXMKK3JldHVybmVkLgorCitXaGVuIHNlYXJjaF9wcm9jZXNzX2tleXJpbmdzKCkgaXMgaW52b2tlZCwgaXQgcGVyZm9ybXMgdGhlIGZvbGxvd2luZyBzZWFyY2hlcwordW50aWwgb25lIHN1Y2NlZWRzOgorCisgKDEpIElmIGV4dGFudCwgdGhlIHByb2Nlc3MncyB0aHJlYWQga2V5cmluZyBpcyBzZWFyY2hlZC4KKworICgyKSBJZiBleHRhbnQsIHRoZSBwcm9jZXNzJ3MgcHJvY2VzcyBrZXlyaW5nIGlzIHNlYXJjaGVkLgorCisgKDMpIFRoZSBwcm9jZXNzJ3Mgc2Vzc2lvbiBrZXlyaW5nIGlzIHNlYXJjaGVkLgorCisgKDQpIElmIHRoZSBwcm9jZXNzIGhhcyBhc3N1bWVkIHRoZSBhdXRob3JpdHkgYXNzb2NpYXRlZCB3aXRoIGEgcmVxdWVzdF9rZXkoKQorICAgICBhdXRob3Jpc2F0aW9uIGtleSB0aGVuOgorCisgICAgIChhKSBJZiBleHRhbnQsIHRoZSBjYWxsaW5nIHByb2Nlc3MncyB0aHJlYWQga2V5cmluZyBpcyBzZWFyY2hlZC4KKworICAgICAoYikgSWYgZXh0YW50LCB0aGUgY2FsbGluZyBwcm9jZXNzJ3MgcHJvY2VzcyBrZXlyaW5nIGlzIHNlYXJjaGVkLgorCisgICAgIChjKSBUaGUgY2FsbGluZyBwcm9jZXNzJ3Mgc2Vzc2lvbiBrZXlyaW5nIGlzIHNlYXJjaGVkLgorCitUaGUgbW9tZW50IG9uZSBzdWNjZWVkcywgYWxsIHBlbmRpbmcgZXJyb3JzIGFyZSBkaXNjYXJkZWQgYW5kIHRoZSBmb3VuZCBrZXkgaXMKK3JldHVybmVkLgorCitPbmx5IGlmIGFsbCB0aGVzZSBmYWlsIGRvZXMgdGhlIHdob2xlIHRoaW5nIGZhaWwgd2l0aCB0aGUgaGlnaGVzdCBwcmlvcml0eQorZXJyb3IuICBOb3RlIHRoYXQgc2V2ZXJhbCBlcnJvcnMgbWF5IGhhdmUgY29tZSBmcm9tIExTTS4KKworVGhlIGVycm9yIHByaW9yaXR5IGlzOgorCisJRUtFWVJFVk9LRUQgPiBFS0VZRVhQSVJFRCA+IEVOT0tFWQorCitFQUNDRVMvRVBFUk0gYXJlIG9ubHkgcmV0dXJuZWQgb24gYSBkaXJlY3Qgc2VhcmNoIG9mIGEgc3BlY2lmaWMga2V5cmluZyB3aGVyZQordGhlIGJhc2FsIGtleXJpbmcgZG9lcyBub3QgZ3JhbnQgU2VhcmNoIHBlcm1pc3Npb24uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NlY3VyaXR5L2tleXMtdHJ1c3RlZC1lbmNyeXB0ZWQudHh0IGIvRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9rZXlzLXRydXN0ZWQtZW5jcnlwdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTA1YWU5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9rZXlzLXRydXN0ZWQtZW5jcnlwdGVkLnR4dApAQCAtMCwwICsxLDE2MCBAQAorCQkJVHJ1c3RlZCBhbmQgRW5jcnlwdGVkIEtleXMKKworVHJ1c3RlZCBhbmQgRW5jcnlwdGVkIEtleXMgYXJlIHR3byBuZXcga2V5IHR5cGVzIGFkZGVkIHRvIHRoZSBleGlzdGluZyBrZXJuZWwKK2tleSByaW5nIHNlcnZpY2UuICBCb3RoIG9mIHRoZXNlIG5ldyB0eXBlcyBhcmUgdmFyaWFibGUgbGVuZ3RoIHN5bW1ldHJpYyBrZXlzLAorYW5kIGluIGJvdGggY2FzZXMgYWxsIGtleXMgYXJlIGNyZWF0ZWQgaW4gdGhlIGtlcm5lbCwgYW5kIHVzZXIgc3BhY2Ugc2VlcywKK3N0b3JlcywgYW5kIGxvYWRzIG9ubHkgZW5jcnlwdGVkIGJsb2JzLiAgVHJ1c3RlZCBLZXlzIHJlcXVpcmUgdGhlIGF2YWlsYWJpbGl0eQorb2YgYSBUcnVzdGVkIFBsYXRmb3JtIE1vZHVsZSAoVFBNKSBjaGlwIGZvciBncmVhdGVyIHNlY3VyaXR5LCB3aGlsZSBFbmNyeXB0ZWQKK0tleXMgY2FuIGJlIHVzZWQgb24gYW55IHN5c3RlbS4gIEFsbCB1c2VyIGxldmVsIGJsb2JzLCBhcmUgZGlzcGxheWVkIGFuZCBsb2FkZWQKK2luIGhleCBhc2NpaSBmb3IgY29udmVuaWVuY2UsIGFuZCBhcmUgaW50ZWdyaXR5IHZlcmlmaWVkLgorCitUcnVzdGVkIEtleXMgdXNlIGEgVFBNIGJvdGggdG8gZ2VuZXJhdGUgYW5kIHRvIHNlYWwgdGhlIGtleXMuICBLZXlzIGFyZSBzZWFsZWQKK3VuZGVyIGEgMjA0OCBiaXQgUlNBIGtleSBpbiB0aGUgVFBNLCBhbmQgb3B0aW9uYWxseSBzZWFsZWQgdG8gc3BlY2lmaWVkIFBDUgorKGludGVncml0eSBtZWFzdXJlbWVudCkgdmFsdWVzLCBhbmQgb25seSB1bnNlYWxlZCBieSB0aGUgVFBNLCBpZiBQQ1JzIGFuZCBibG9iCitpbnRlZ3JpdHkgdmVyaWZpY2F0aW9ucyBtYXRjaC4gIEEgbG9hZGVkIFRydXN0ZWQgS2V5IGNhbiBiZSB1cGRhdGVkIHdpdGggbmV3CisoZnV0dXJlKSBQQ1IgdmFsdWVzLCBzbyBrZXlzIGFyZSBlYXNpbHkgbWlncmF0ZWQgdG8gbmV3IHBjciB2YWx1ZXMsIHN1Y2ggYXMKK3doZW4gdGhlIGtlcm5lbCBhbmQgaW5pdHJhbWZzIGFyZSB1cGRhdGVkLiAgVGhlIHNhbWUga2V5IGNhbiBoYXZlIG1hbnkgc2F2ZWQKK2Jsb2JzIHVuZGVyIGRpZmZlcmVudCBQQ1IgdmFsdWVzLCBzbyBtdWx0aXBsZSBib290cyBhcmUgZWFzaWx5IHN1cHBvcnRlZC4KKworQnkgZGVmYXVsdCwgdHJ1c3RlZCBrZXlzIGFyZSBzZWFsZWQgdW5kZXIgdGhlIFNSSywgd2hpY2ggaGFzIHRoZSBkZWZhdWx0CithdXRob3JpemF0aW9uIHZhbHVlICgyMCB6ZXJvcykuICBUaGlzIGNhbiBiZSBzZXQgYXQgdGFrZW93bmVyc2hpcCB0aW1lIHdpdGggdGhlCit0cm91c2VyJ3MgdXRpbGl0eTogInRwbV90YWtlb3duZXJzaGlwIC11IC16Ii4KKworVXNhZ2U6CisgICAga2V5Y3RsIGFkZCB0cnVzdGVkIG5hbWUgIm5ldyBrZXlsZW4gW29wdGlvbnNdIiByaW5nCisgICAga2V5Y3RsIGFkZCB0cnVzdGVkIG5hbWUgImxvYWQgaGV4X2Jsb2IgW3BjcmxvY2s9cGNybnVtXSIgcmluZworICAgIGtleWN0bCB1cGRhdGUga2V5ICJ1cGRhdGUgW29wdGlvbnNdIgorICAgIGtleWN0bCBwcmludCBrZXlpZAorCisgICAgb3B0aW9uczoKKyAgICAgICBrZXloYW5kbGU9IGFzY2lpIGhleCB2YWx1ZSBvZiBzZWFsaW5nIGtleSBkZWZhdWx0IDB4NDAwMDAwMDAgKFNSSykKKyAgICAgICBrZXlhdXRoPQkgIGFzY2lpIGhleCBhdXRoIGZvciBzZWFsaW5nIGtleSBkZWZhdWx0IDB4MDAuLi5pCisJCSAgKDQwIGFzY2lpIHplcm9zKQorICAgICAgIGJsb2JhdXRoPSAgYXNjaWkgaGV4IGF1dGggZm9yIHNlYWxlZCBkYXRhIGRlZmF1bHQgMHgwMC4uLgorCQkgICg0MCBhc2NpaSB6ZXJvcykKKyAgICAgICBibG9iYXV0aD0gIGFzY2lpIGhleCBhdXRoIGZvciBzZWFsZWQgZGF0YSBkZWZhdWx0IDB4MDAuLi4KKwkJICAoNDAgYXNjaWkgemVyb3MpCisgICAgICAgcGNyaW5mbz0JICBhc2NpaSBoZXggb2YgUENSX0lORk8gb3IgUENSX0lORk9fTE9ORyAobm8gZGVmYXVsdCkKKyAgICAgICBwY3Jsb2NrPQkgIHBjciBudW1iZXIgdG8gYmUgZXh0ZW5kZWQgdG8gImxvY2siIGJsb2IKKyAgICAgICBtaWdyYXRhYmxlPSAwfDEgaW5kaWNhdGluZyBwZXJtaXNzaW9uIHRvIHJlc2VhbCB0byBuZXcgUENSIHZhbHVlcywKKyAgICAgICAgICAgICAgICAgICBkZWZhdWx0IDEgKHJlc2VhbGluZyBhbGxvd2VkKQorCisia2V5Y3RsIHByaW50IiByZXR1cm5zIGFuIGFzY2lpIGhleCBjb3B5IG9mIHRoZSBzZWFsZWQga2V5LCB3aGljaCBpcyBpbiBzdGFuZGFyZAorVFBNX1NUT1JFRF9EQVRBIGZvcm1hdC4gIFRoZSBrZXkgbGVuZ3RoIGZvciBuZXcga2V5cyBhcmUgYWx3YXlzIGluIGJ5dGVzLgorVHJ1c3RlZCBLZXlzIGNhbiBiZSAzMiAtIDEyOCBieXRlcyAoMjU2IC0gMTAyNCBiaXRzKSwgdGhlIHVwcGVyIGxpbWl0IGlzIHRvIGZpdAord2l0aGluIHRoZSAyMDQ4IGJpdCBTUksgKFJTQSkga2V5bGVuZ3RoLCB3aXRoIGFsbCBuZWNlc3Nhcnkgc3RydWN0dXJlL3BhZGRpbmcuCisKK0VuY3J5cHRlZCBrZXlzIGRvIG5vdCBkZXBlbmQgb24gYSBUUE0sIGFuZCBhcmUgZmFzdGVyLCBhcyB0aGV5IHVzZSBBRVMgZm9yCitlbmNyeXB0aW9uL2RlY3J5cHRpb24uICBOZXcga2V5cyBhcmUgY3JlYXRlZCBmcm9tIGtlcm5lbCBnZW5lcmF0ZWQgcmFuZG9tCitudW1iZXJzLCBhbmQgYXJlIGVuY3J5cHRlZC9kZWNyeXB0ZWQgdXNpbmcgYSBzcGVjaWZpZWQgJ21hc3Rlcicga2V5LiAgVGhlCisnbWFzdGVyJyBrZXkgY2FuIGVpdGhlciBiZSBhIHRydXN0ZWQta2V5IG9yIHVzZXIta2V5IHR5cGUuICBUaGUgbWFpbgorZGlzYWR2YW50YWdlIG9mIGVuY3J5cHRlZCBrZXlzIGlzIHRoYXQgaWYgdGhleSBhcmUgbm90IHJvb3RlZCBpbiBhIHRydXN0ZWQga2V5LAordGhleSBhcmUgb25seSBhcyBzZWN1cmUgYXMgdGhlIHVzZXIga2V5IGVuY3J5cHRpbmcgdGhlbS4gIFRoZSBtYXN0ZXIgdXNlciBrZXkKK3Nob3VsZCB0aGVyZWZvcmUgYmUgbG9hZGVkIGluIGFzIHNlY3VyZSBhIHdheSBhcyBwb3NzaWJsZSwgcHJlZmVyYWJseSBlYXJseSBpbgorYm9vdC4KKworVGhlIGRlY3J5cHRlZCBwb3J0aW9uIG9mIGVuY3J5cHRlZCBrZXlzIGNhbiBjb250YWluIGVpdGhlciBhIHNpbXBsZSBzeW1tZXRyaWMKK2tleSBvciBhIG1vcmUgY29tcGxleCBzdHJ1Y3R1cmUuIFRoZSBmb3JtYXQgb2YgdGhlIG1vcmUgY29tcGxleCBzdHJ1Y3R1cmUgaXMKK2FwcGxpY2F0aW9uIHNwZWNpZmljLCB3aGljaCBpcyBpZGVudGlmaWVkIGJ5ICdmb3JtYXQnLgorCitVc2FnZToKKyAgICBrZXljdGwgYWRkIGVuY3J5cHRlZCBuYW1lICJuZXcgW2Zvcm1hdF0ga2V5LXR5cGU6bWFzdGVyLWtleS1uYW1lIGtleWxlbiIKKyAgICAgICAgcmluZworICAgIGtleWN0bCBhZGQgZW5jcnlwdGVkIG5hbWUgImxvYWQgaGV4X2Jsb2IiIHJpbmcKKyAgICBrZXljdGwgdXBkYXRlIGtleWlkICJ1cGRhdGUga2V5LXR5cGU6bWFzdGVyLWtleS1uYW1lIgorCitmb3JtYXQ6PSAnZGVmYXVsdCB8IGVjcnlwdGZzJwora2V5LXR5cGU6PSAndHJ1c3RlZCcgfCAndXNlcicKKworCitFeGFtcGxlcyBvZiB0cnVzdGVkIGFuZCBlbmNyeXB0ZWQga2V5IHVzYWdlOgorCitDcmVhdGUgYW5kIHNhdmUgYSB0cnVzdGVkIGtleSBuYW1lZCAia21rIiBvZiBsZW5ndGggMzIgYnl0ZXM6CisKKyAgICAkIGtleWN0bCBhZGQgdHJ1c3RlZCBrbWsgIm5ldyAzMiIgQHUKKyAgICA0NDA1MDI4NDgKKworICAgICQga2V5Y3RsIHNob3cKKyAgICBTZXNzaW9uIEtleXJpbmcKKyAgICAgICAgICAgLTMgLS1hbHN3cnYgICAgNTAwICAgNTAwICBrZXlyaW5nOiBfc2VzCisgICAgIDk3ODMzNzE0IC0tYWxzd3J2ICAgIDUwMCAgICAtMSAgIFxfIGtleXJpbmc6IF91aWQuNTAwCisgICAgNDQwNTAyODQ4IC0tYWxzd3J2ICAgIDUwMCAgIDUwMCAgICAgICBcXyB0cnVzdGVkOiBrbWsKKworICAgICQga2V5Y3RsIHByaW50IDQ0MDUwMjg0OAorICAgIDAxMDEwMDAwMDAwMDAwMDAwMDAwMDEwMDVkMDFiN2UzZjRhNmJlNTcwOTkzMGYzYjcwYTc0M2NiYjQyZTBjYzk1ZTE4ZTkxNQorICAgIDNmNjBkYTQ1NWJiZjExNDRhZDEyZTRmOTJiNDUyZjk2NjkyOWY2MTA1ZmQyOWNhMjhlNGQ0ZDVhMDMxZDA2ODQ3OGJhY2IwYgorICAgIDI3MzUxMTE5ZjgyMjkxMWIwYTExYmEzZDM0OThiYTZhMzJlNTBkYWM3ZjMyODk0ZGQ4OTBlYjlhZDU3OGU0ZTI5MmM4MzcyMgorICAgIGE1MmU1NmEwOTdlNmE2OGIzZjU2ZjdhNTJlY2UwY2RjY2JhMWViNjJjYWQ3ZDgxN2Y2ZGM1ODg5OGIzYWMxNWYzNjAyNmZlYworICAgIGQ1NjhiZDRhNzA2Y2I2MGJiMzdiZTZkOGYxMjQwNjYxMTk5ZDY0MGI2NmZiMGZlM2IwNzlmOTdmNDUwYjllZjljMjJjNmQ1ZAorICAgIGRkMzc5ZjBmYWNkMWNkMDIwMjgxZGZhM2M3MGJhMjFhM2ZhNmZjMjQ3MWRjNmQxM2VjZjgyOThiOTQ2ZjY1MzQ1ZmFhNWVmMAorICAgIGYxZjhmZmYwM2FkMGFjYjA4MzcyNTUzNTYzNmFkZGIwOGQ3M2RlZGI5ODMyZGExOTgwODFlNWRlYWU4NGJmYWYwNDA5YzIyYgorICAgIGU0YThhZWEyYjYwN2VjOTY5MzFlNmY0ZDRmZTU2M2JhCisKKyAgICAkIGtleWN0bCBwaXBlIDQ0MDUwMjg0OCA+IGttay5ibG9iCisKK0xvYWQgYSB0cnVzdGVkIGtleSBmcm9tIHRoZSBzYXZlZCBibG9iOgorCisgICAgJCBrZXljdGwgYWRkIHRydXN0ZWQga21rICJsb2FkIGBjYXQga21rLmJsb2JgIiBAdQorICAgIDI2ODcyODgyNAorCisgICAgJCBrZXljdGwgcHJpbnQgMjY4NzI4ODI0CisgICAgMDEwMTAwMDAwMDAwMDAwMDAwMDAwMTAwNWQwMWI3ZTNmNGE2YmU1NzA5OTMwZjNiNzBhNzQzY2JiNDJlMGNjOTVlMThlOTE1CisgICAgM2Y2MGRhNDU1YmJmMTE0NGFkMTJlNGY5MmI0NTJmOTY2OTI5ZjYxMDVmZDI5Y2EyOGU0ZDRkNWEwMzFkMDY4NDc4YmFjYjBiCisgICAgMjczNTExMTlmODIyOTExYjBhMTFiYTNkMzQ5OGJhNmEzMmU1MGRhYzdmMzI4OTRkZDg5MGViOWFkNTc4ZTRlMjkyYzgzNzIyCisgICAgYTUyZTU2YTA5N2U2YTY4YjNmNTZmN2E1MmVjZTBjZGNjYmExZWI2MmNhZDdkODE3ZjZkYzU4ODk4YjNhYzE1ZjM2MDI2ZmVjCisgICAgZDU2OGJkNGE3MDZjYjYwYmIzN2JlNmQ4ZjEyNDA2NjExOTlkNjQwYjY2ZmIwZmUzYjA3OWY5N2Y0NTBiOWVmOWMyMmM2ZDVkCisgICAgZGQzNzlmMGZhY2QxY2QwMjAyODFkZmEzYzcwYmEyMWEzZmE2ZmMyNDcxZGM2ZDEzZWNmODI5OGI5NDZmNjUzNDVmYWE1ZWYwCisgICAgZjFmOGZmZjAzYWQwYWNiMDgzNzI1NTM1NjM2YWRkYjA4ZDczZGVkYjk4MzJkYTE5ODA4MWU1ZGVhZTg0YmZhZjA0MDljMjJiCisgICAgZTRhOGFlYTJiNjA3ZWM5NjkzMWU2ZjRkNGZlNTYzYmEKKworUmVzZWFsIGEgdHJ1c3RlZCBrZXkgdW5kZXIgbmV3IHBjciB2YWx1ZXM6CisKKyAgICAkIGtleWN0bCB1cGRhdGUgMjY4NzI4ODI0ICJ1cGRhdGUgcGNyaW5mbz1gY2F0IHBjci5ibG9iYCIKKyAgICAkIGtleWN0bCBwcmludCAyNjg3Mjg4MjQKKyAgICAwMTAxMDAwMDAwMDAwMDJjMDAwMjgwMDA5M2MzNWEwOWI3MGZmZjI2ZTdhOThhZTc4NmM2NDFlNjc4ZWM2ZmZiNmI0NmQ4MDUKKyAgICA3N2M4YTYzNzdhZWQ5ZDMyMTljNmRmZWM0YjIzZmZlMzAwMDAwMTAwNWQzN2Q0NzJhYzhhNDQwMjNmYmIzZDE4NTgzYTRmNzMKKyAgICBkM2EwNzZjMDg1OGY2ZjFkY2FhMzllYTBmMTE5OTExZmYwM2Y1NDA2ZGY0ZjdmMjdmNDFkYThkNzE5NGY0NWM5ZjRlMDBmMmUKKyAgICBkZjQ0OWYyNjYyNTNhYTNmNTJlNTVjNTNkZTE0Nzc3M2UwMGYwZjlhY2E4NmM2NGQ5NGM5NTM4MjI2NTk2OGMzNTRjNWVhYjQKKyAgICA5NjM4YzVhZTk5Yzg5ZGUxZTA5OTcyNDJlZGZiMGI1MDE3NDRlMTFmZjk3NjJkZmQ5NTFjZmZkOTMyMjdjYzUxMzM4NGU3ZTYKKyAgICBlNzgyYzI5NDM1YzdlYzJlZGFmYWEyZjRjMWZlNmU3YTc4MWI1OTU0OWZmNTI5NjM3MWI0MjEzMzc3N2RjYzViOGI5NzE2MTAKKyAgICA5NGJjNjdlZGUxOWU0M2RkYjlkYzJiYWFjYWQzNzRhMzZmZWFmMDMxNGQ3MDBhZjBhNjVjMTY0YjcwODI0MDE3NDBlNDg5YzkKKyAgICA3ZWY2YTI0ZGVmZTQ4NDYxMDQyMDliZjBjM2VjZWQ3ZmExYTY3MmVkNWIxMjVmYzlkOGNkODhiNDc2YTY1OGE0NDM0NjQ0ZWYKKyAgICBkZjhhZTlhMTc4ZTlmODNiYTlmMDhkMTBmYTQ3ZTQyMjZiOThiMDcwMmYwNmIzYjgKKworVGhlIGluaXRpYWwgY29uc3VtZXIgb2YgdHJ1c3RlZCBrZXlzIGlzIEVWTSwgd2hpY2ggYXQgYm9vdCB0aW1lIG5lZWRzIGEgaGlnaAorcXVhbGl0eSBzeW1tZXRyaWMga2V5IGZvciBITUFDIHByb3RlY3Rpb24gb2YgZmlsZSBtZXRhZGF0YS4gIFRoZSB1c2Ugb2YgYQordHJ1c3RlZCBrZXkgcHJvdmlkZXMgc3Ryb25nIGd1YXJhbnRlZXMgdGhhdCB0aGUgRVZNIGtleSBoYXMgbm90IGJlZW4KK2NvbXByb21pc2VkIGJ5IGEgdXNlciBsZXZlbCBwcm9ibGVtLCBhbmQgd2hlbiBzZWFsZWQgdG8gc3BlY2lmaWMgYm9vdCBQQ1IKK3ZhbHVlcywgcHJvdGVjdHMgYWdhaW5zdCBib290IGFuZCBvZmZsaW5lIGF0dGFja3MuICBDcmVhdGUgYW5kIHNhdmUgYW4KK2VuY3J5cHRlZCBrZXkgImV2bSIgdXNpbmcgdGhlIGFib3ZlIHRydXN0ZWQga2V5ICJrbWsiOgorCitvcHRpb24gMTogb21pdHRpbmcgJ2Zvcm1hdCcKKyAgICAkIGtleWN0bCBhZGQgZW5jcnlwdGVkIGV2bSAibmV3IHRydXN0ZWQ6a21rIDMyIiBAdQorICAgIDE1OTc3MTE3NQorCitvcHRpb24gMjogZXhwbGljaXRseSBkZWZpbmluZyAnZm9ybWF0JyBhcyAnZGVmYXVsdCcKKyAgICAkIGtleWN0bCBhZGQgZW5jcnlwdGVkIGV2bSAibmV3IGRlZmF1bHQgdHJ1c3RlZDprbWsgMzIiIEB1CisgICAgMTU5NzcxMTc1CisKKyAgICAkIGtleWN0bCBwcmludCAxNTk3NzExNzUKKyAgICBkZWZhdWx0IHRydXN0ZWQ6a21rIDMyIDIzNzU3MjVhZDU3Nzk4ODQ2YTliYmQyNDBkZTg5MDZmMDA2ZTY2YzAzYWY1M2IxYjMKKyAgICA4MmRiYmM1NWJlMmE0NDYxNmU0OTU5NDMwNDM2ZGM0ZjJhN2E5NjU5YWE2MGJiNDY1MmFlYjIxMjBmMTQ5ZWQxOTdjNTY0ZTAKKyAgICAyNDcxN2M2NCA1OTcyZGNiODJhYjJkZGU4MzM3NmQ4MmIyZTNjMDlmZmMKKworICAgICQga2V5Y3RsIHBpcGUgMTU5NzcxMTc1ID4gZXZtLmJsb2IKKworTG9hZCBhbiBlbmNyeXB0ZWQga2V5ICJldm0iIGZyb20gc2F2ZWQgYmxvYjoKKworICAgICQga2V5Y3RsIGFkZCBlbmNyeXB0ZWQgZXZtICJsb2FkIGBjYXQgZXZtLmJsb2JgIiBAdQorICAgIDgzMTY4NDI2MgorCisgICAgJCBrZXljdGwgcHJpbnQgODMxNjg0MjYyCisgICAgZGVmYXVsdCB0cnVzdGVkOmttayAzMiAyMzc1NzI1YWQ1Nzc5ODg0NmE5YmJkMjQwZGU4OTA2ZjAwNmU2NmMwM2FmNTNiMWIzCisgICAgODJkYmJjNTViZTJhNDQ2MTZlNDk1OTQzMDQzNmRjNGYyYTdhOTY1OWFhNjBiYjQ2NTJhZWIyMTIwZjE0OWVkMTk3YzU2NGUwCisgICAgMjQ3MTdjNjQgNTk3MmRjYjgyYWIyZGRlODMzNzZkODJiMmUzYzA5ZmZjCisKK090aGVyIHVzZXMgZm9yIHRydXN0ZWQgYW5kIGVuY3J5cHRlZCBrZXlzLCBzdWNoIGFzIGZvciBkaXNrIGFuZCBmaWxlIGVuY3J5cHRpb24KK2FyZSBhbnRpY2lwYXRlZC4gIEluIHBhcnRpY3VsYXIgdGhlIG5ldyBmb3JtYXQgJ2VjcnlwdGZzJyBoYXMgYmVlbiBkZWZpbmVkIGluCitpbiBvcmRlciB0byB1c2UgZW5jcnlwdGVkIGtleXMgdG8gbW91bnQgYW4gZUNyeXB0ZnMgZmlsZXN5c3RlbS4gIE1vcmUgZGV0YWlscworYWJvdXQgdGhlIHVzYWdlIGNhbiBiZSBmb3VuZCBpbiB0aGUgZmlsZQorJ0RvY3VtZW50YXRpb24vc2VjdXJpdHkva2V5cy1lY3J5cHRmcy50eHQnLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9rZXlzLnR4dCBiL0RvY3VtZW50YXRpb24vc2VjdXJpdHkva2V5cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMxODM4NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2VjdXJpdHkva2V5cy50eHQKQEAgLTAsMCArMSwxNDQyIEBACisJCQkgPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCQkJIEtFUk5FTCBLRVkgUkVURU5USU9OIFNFUlZJQ0UKKwkJCSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgc2VydmljZSBhbGxvd3MgY3J5cHRvZ3JhcGhpYyBrZXlzLCBhdXRoZW50aWNhdGlvbiB0b2tlbnMsIGNyb3NzLWRvbWFpbgordXNlciBtYXBwaW5ncywgYW5kIHNpbWlsYXIgdG8gYmUgY2FjaGVkIGluIHRoZSBrZXJuZWwgZm9yIHRoZSB1c2Ugb2YKK2ZpbGVzeXN0ZW1zIGFuZCBvdGhlciBrZXJuZWwgc2VydmljZXMuCisKK0tleXJpbmdzIGFyZSBwZXJtaXR0ZWQ7IHRoZXNlIGFyZSBhIHNwZWNpYWwgdHlwZSBvZiBrZXkgdGhhdCBjYW4gaG9sZCBsaW5rcyB0bworb3RoZXIga2V5cy4gUHJvY2Vzc2VzIGVhY2ggaGF2ZSB0aHJlZSBzdGFuZGFyZCBrZXlyaW5nIHN1YnNjcmlwdGlvbnMgdGhhdCBhCitrZXJuZWwgc2VydmljZSBjYW4gc2VhcmNoIGZvciByZWxldmFudCBrZXlzLgorCitUaGUga2V5IHNlcnZpY2UgY2FuIGJlIGNvbmZpZ3VyZWQgb24gYnkgZW5hYmxpbmc6CisKKwkiU2VjdXJpdHkgb3B0aW9ucyIvIkVuYWJsZSBhY2Nlc3Mga2V5IHJldGVudGlvbiBzdXBwb3J0IiAoQ09ORklHX0tFWVMpCisKK1RoaXMgZG9jdW1lbnQgaGFzIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnM6CisKKwktIEtleSBvdmVydmlldworCS0gS2V5IHNlcnZpY2Ugb3ZlcnZpZXcKKwktIEtleSBhY2Nlc3MgcGVybWlzc2lvbnMKKwktIFNFTGludXggc3VwcG9ydAorCS0gTmV3IHByb2NmcyBmaWxlcworCS0gVXNlcnNwYWNlIHN5c3RlbSBjYWxsIGludGVyZmFjZQorCS0gS2VybmVsIHNlcnZpY2VzCisJLSBOb3RlcyBvbiBhY2Nlc3NpbmcgcGF5bG9hZCBjb250ZW50cworCS0gRGVmaW5pbmcgYSBrZXkgdHlwZQorCS0gUmVxdWVzdC1rZXkgY2FsbGJhY2sgc2VydmljZQorCS0gR2FyYmFnZSBjb2xsZWN0aW9uCisKKworPT09PT09PT09PT09CitLRVkgT1ZFUlZJRVcKKz09PT09PT09PT09PQorCitJbiB0aGlzIGNvbnRleHQsIGtleXMgcmVwcmVzZW50IHVuaXRzIG9mIGNyeXB0b2dyYXBoaWMgZGF0YSwgYXV0aGVudGljYXRpb24KK3Rva2Vucywga2V5cmluZ3MsIGV0Yy4uIFRoZXNlIGFyZSByZXByZXNlbnRlZCBpbiB0aGUga2VybmVsIGJ5IHN0cnVjdCBrZXkuCisKK0VhY2gga2V5IGhhcyBhIG51bWJlciBvZiBhdHRyaWJ1dGVzOgorCisJLSBBIHNlcmlhbCBudW1iZXIuCisJLSBBIHR5cGUuCisJLSBBIGRlc2NyaXB0aW9uIChmb3IgbWF0Y2hpbmcgYSBrZXkgaW4gYSBzZWFyY2gpLgorCS0gQWNjZXNzIGNvbnRyb2wgaW5mb3JtYXRpb24uCisJLSBBbiBleHBpcnkgdGltZS4KKwktIEEgcGF5bG9hZC4KKwktIFN0YXRlLgorCisKKyAoKikgRWFjaCBrZXkgaXMgaXNzdWVkIGEgc2VyaWFsIG51bWJlciBvZiB0eXBlIGtleV9zZXJpYWxfdCB0aGF0IGlzIHVuaXF1ZSBmb3IKKyAgICAgdGhlIGxpZmV0aW1lIG9mIHRoYXQga2V5LiBBbGwgc2VyaWFsIG51bWJlcnMgYXJlIHBvc2l0aXZlIG5vbi16ZXJvIDMyLWJpdAorICAgICBpbnRlZ2Vycy4KKworICAgICBVc2Vyc3BhY2UgcHJvZ3JhbXMgY2FuIHVzZSBhIGtleSdzIHNlcmlhbCBudW1iZXJzIGFzIGEgd2F5IHRvIGdhaW4gYWNjZXNzCisgICAgIHRvIGl0LCBzdWJqZWN0IHRvIHBlcm1pc3Npb24gY2hlY2tpbmcuCisKKyAoKikgRWFjaCBrZXkgaXMgb2YgYSBkZWZpbmVkICJ0eXBlIi4gVHlwZXMgbXVzdCBiZSByZWdpc3RlcmVkIGluc2lkZSB0aGUKKyAgICAga2VybmVsIGJ5IGEga2VybmVsIHNlcnZpY2UgKHN1Y2ggYXMgYSBmaWxlc3lzdGVtKSBiZWZvcmUga2V5cyBvZiB0aGF0IHR5cGUKKyAgICAgY2FuIGJlIGFkZGVkIG9yIHVzZWQuIFVzZXJzcGFjZSBwcm9ncmFtcyBjYW5ub3QgZGVmaW5lIG5ldyB0eXBlcyBkaXJlY3RseS4KKworICAgICBLZXkgdHlwZXMgYXJlIHJlcHJlc2VudGVkIGluIHRoZSBrZXJuZWwgYnkgc3RydWN0IGtleV90eXBlLiBUaGlzIGRlZmluZXMgYQorICAgICBudW1iZXIgb2Ygb3BlcmF0aW9ucyB0aGF0IGNhbiBiZSBwZXJmb3JtZWQgb24gYSBrZXkgb2YgdGhhdCB0eXBlLgorCisgICAgIFNob3VsZCBhIHR5cGUgYmUgcmVtb3ZlZCBmcm9tIHRoZSBzeXN0ZW0sIGFsbCB0aGUga2V5cyBvZiB0aGF0IHR5cGUgd2lsbAorICAgICBiZSBpbnZhbGlkYXRlZC4KKworICgqKSBFYWNoIGtleSBoYXMgYSBkZXNjcmlwdGlvbi4gVGhpcyBzaG91bGQgYmUgYSBwcmludGFibGUgc3RyaW5nLiBUaGUga2V5CisgICAgIHR5cGUgcHJvdmlkZXMgYW4gb3BlcmF0aW9uIHRvIHBlcmZvcm0gYSBtYXRjaCBiZXR3ZWVuIHRoZSBkZXNjcmlwdGlvbiBvbiBhCisgICAgIGtleSBhbmQgYSBjcml0ZXJpb24gc3RyaW5nLgorCisgKCopIEVhY2gga2V5IGhhcyBhbiBvd25lciB1c2VyIElELCBhIGdyb3VwIElEIGFuZCBhIHBlcm1pc3Npb25zIG1hc2suIFRoZXNlCisgICAgIGFyZSB1c2VkIHRvIGNvbnRyb2wgd2hhdCBhIHByb2Nlc3MgbWF5IGRvIHRvIGEga2V5IGZyb20gdXNlcnNwYWNlLCBhbmQKKyAgICAgd2hldGhlciBhIGtlcm5lbCBzZXJ2aWNlIHdpbGwgYmUgYWJsZSB0byBmaW5kIHRoZSBrZXkuCisKKyAoKikgRWFjaCBrZXkgY2FuIGJlIHNldCB0byBleHBpcmUgYXQgYSBzcGVjaWZpYyB0aW1lIGJ5IHRoZSBrZXkgdHlwZSdzCisgICAgIGluc3RhbnRpYXRpb24gZnVuY3Rpb24uIEtleXMgY2FuIGFsc28gYmUgaW1tb3J0YWwuCisKKyAoKikgRWFjaCBrZXkgY2FuIGhhdmUgYSBwYXlsb2FkLiBUaGlzIGlzIGEgcXVhbnRpdHkgb2YgZGF0YSB0aGF0IHJlcHJlc2VudCB0aGUKKyAgICAgYWN0dWFsICJrZXkiLiBJbiB0aGUgY2FzZSBvZiBhIGtleXJpbmcsIHRoaXMgaXMgYSBsaXN0IG9mIGtleXMgdG8gd2hpY2gKKyAgICAgdGhlIGtleXJpbmcgbGlua3M7IGluIHRoZSBjYXNlIG9mIGEgdXNlci1kZWZpbmVkIGtleSwgaXQncyBhbiBhcmJpdHJhcnkKKyAgICAgYmxvYiBvZiBkYXRhLgorCisgICAgIEhhdmluZyBhIHBheWxvYWQgaXMgbm90IHJlcXVpcmVkOyBhbmQgdGhlIHBheWxvYWQgY2FuLCBpbiBmYWN0LCBqdXN0IGJlIGEKKyAgICAgdmFsdWUgc3RvcmVkIGluIHRoZSBzdHJ1Y3Qga2V5IGl0c2VsZi4KKworICAgICBXaGVuIGEga2V5IGlzIGluc3RhbnRpYXRlZCwgdGhlIGtleSB0eXBlJ3MgaW5zdGFudGlhdGlvbiBmdW5jdGlvbiBpcworICAgICBjYWxsZWQgd2l0aCBhIGJsb2Igb2YgZGF0YSwgYW5kIHRoYXQgdGhlbiBjcmVhdGVzIHRoZSBrZXkncyBwYXlsb2FkIGluCisgICAgIHNvbWUgd2F5LgorCisgICAgIFNpbWlsYXJseSwgd2hlbiB1c2Vyc3BhY2Ugd2FudHMgdG8gcmVhZCBiYWNrIHRoZSBjb250ZW50cyBvZiB0aGUga2V5LCBpZgorICAgICBwZXJtaXR0ZWQsIGFub3RoZXIga2V5IHR5cGUgb3BlcmF0aW9uIHdpbGwgYmUgY2FsbGVkIHRvIGNvbnZlcnQgdGhlIGtleSdzCisgICAgIGF0dGFjaGVkIHBheWxvYWQgYmFjayBpbnRvIGEgYmxvYiBvZiBkYXRhLgorCisgKCopIEVhY2gga2V5IGNhbiBiZSBpbiBvbmUgb2YgYSBudW1iZXIgb2YgYmFzaWMgc3RhdGVzOgorCisgICAgICgqKSBVbmluc3RhbnRpYXRlZC4gVGhlIGtleSBleGlzdHMsIGJ1dCBkb2VzIG5vdCBoYXZlIGFueSBkYXRhIGF0dGFjaGVkLgorICAgICAJIEtleXMgYmVpbmcgcmVxdWVzdGVkIGZyb20gdXNlcnNwYWNlIHdpbGwgYmUgaW4gdGhpcyBzdGF0ZS4KKworICAgICAoKikgSW5zdGFudGlhdGVkLiBUaGlzIGlzIHRoZSBub3JtYWwgc3RhdGUuIFRoZSBrZXkgaXMgZnVsbHkgZm9ybWVkLCBhbmQKKwkgaGFzIGRhdGEgYXR0YWNoZWQuCisKKyAgICAgKCopIE5lZ2F0aXZlLiBUaGlzIGlzIGEgcmVsYXRpdmVseSBzaG9ydC1saXZlZCBzdGF0ZS4gVGhlIGtleSBhY3RzIGFzIGEKKwkgbm90ZSBzYXlpbmcgdGhhdCBhIHByZXZpb3VzIGNhbGwgb3V0IHRvIHVzZXJzcGFjZSBmYWlsZWQsIGFuZCBhY3RzIGFzCisJIGEgdGhyb3R0bGUgb24ga2V5IGxvb2t1cHMuIEEgbmVnYXRpdmUga2V5IGNhbiBiZSB1cGRhdGVkIHRvIGEgbm9ybWFsCisJIHN0YXRlLgorCisgICAgICgqKSBFeHBpcmVkLiBLZXlzIGNhbiBoYXZlIGxpZmV0aW1lcyBzZXQuIElmIHRoZWlyIGxpZmV0aW1lIGlzIGV4Y2VlZGVkLAorCSB0aGV5IHRyYXZlcnNlIHRvIHRoaXMgc3RhdGUuIEFuIGV4cGlyZWQga2V5IGNhbiBiZSB1cGRhdGVkIGJhY2sgdG8gYQorCSBub3JtYWwgc3RhdGUuCisKKyAgICAgKCopIFJldm9rZWQuIEEga2V5IGlzIHB1dCBpbiB0aGlzIHN0YXRlIGJ5IHVzZXJzcGFjZSBhY3Rpb24uIEl0IGNhbid0IGJlCisJIGZvdW5kIG9yIG9wZXJhdGVkIHVwb24gKGFwYXJ0IGZyb20gYnkgdW5saW5raW5nIGl0KS4KKworICAgICAoKikgRGVhZC4gVGhlIGtleSdzIHR5cGUgd2FzIHVucmVnaXN0ZXJlZCwgYW5kIHNvIHRoZSBrZXkgaXMgbm93IHVzZWxlc3MuCisKK0tleXMgaW4gdGhlIGxhc3QgdGhyZWUgc3RhdGVzIGFyZSBzdWJqZWN0IHRvIGdhcmJhZ2UgY29sbGVjdGlvbi4gIFNlZSB0aGUKK3NlY3Rpb24gb24gIkdhcmJhZ2UgY29sbGVjdGlvbiIuCisKKworPT09PT09PT09PT09PT09PT09PT0KK0tFWSBTRVJWSUNFIE9WRVJWSUVXCis9PT09PT09PT09PT09PT09PT09PQorCitUaGUga2V5IHNlcnZpY2UgcHJvdmlkZXMgYSBudW1iZXIgb2YgZmVhdHVyZXMgYmVzaWRlcyBrZXlzOgorCisgKCopIFRoZSBrZXkgc2VydmljZSBkZWZpbmVzIHRocmVlIHNwZWNpYWwga2V5IHR5cGVzOgorCisgICAgICgrKSAia2V5cmluZyIKKworCSBLZXlyaW5ncyBhcmUgc3BlY2lhbCBrZXlzIHRoYXQgY29udGFpbiBhIGxpc3Qgb2Ygb3RoZXIga2V5cy4gS2V5cmluZworCSBsaXN0cyBjYW4gYmUgbW9kaWZpZWQgdXNpbmcgdmFyaW91cyBzeXN0ZW0gY2FsbHMuIEtleXJpbmdzIHNob3VsZCBub3QKKwkgYmUgZ2l2ZW4gYSBwYXlsb2FkIHdoZW4gY3JlYXRlZC4KKworICAgICAoKykgInVzZXIiCisKKwkgQSBrZXkgb2YgdGhpcyB0eXBlIGhhcyBhIGRlc2NyaXB0aW9uIGFuZCBhIHBheWxvYWQgdGhhdCBhcmUgYXJiaXRyYXJ5CisJIGJsb2JzIG9mIGRhdGEuIFRoZXNlIGNhbiBiZSBjcmVhdGVkLCB1cGRhdGVkIGFuZCByZWFkIGJ5IHVzZXJzcGFjZSwKKwkgYW5kIGFyZW4ndCBpbnRlbmRlZCBmb3IgdXNlIGJ5IGtlcm5lbCBzZXJ2aWNlcy4KKworICAgICAoKykgImxvZ29uIgorCisJIExpa2UgYSAidXNlciIga2V5LCBhICJsb2dvbiIga2V5IGhhcyBhIHBheWxvYWQgdGhhdCBpcyBhbiBhcmJpdHJhcnkKKwkgYmxvYiBvZiBkYXRhLiBJdCBpcyBpbnRlbmRlZCBhcyBhIHBsYWNlIHRvIHN0b3JlIHNlY3JldHMgd2hpY2ggYXJlCisJIGFjY2Vzc2libGUgdG8gdGhlIGtlcm5lbCBidXQgbm90IHRvIHVzZXJzcGFjZSBwcm9ncmFtcy4KKworCSBUaGUgZGVzY3JpcHRpb24gY2FuIGJlIGFyYml0cmFyeSwgYnV0IG11c3QgYmUgcHJlZml4ZWQgd2l0aCBhIG5vbi16ZXJvCisJIGxlbmd0aCBzdHJpbmcgdGhhdCBkZXNjcmliZXMgdGhlIGtleSAic3ViY2xhc3MiLiBUaGUgc3ViY2xhc3MgaXMKKwkgc2VwYXJhdGVkIGZyb20gdGhlIHJlc3Qgb2YgdGhlIGRlc2NyaXB0aW9uIGJ5IGEgJzonLiAibG9nb24iIGtleXMgY2FuCisJIGJlIGNyZWF0ZWQgYW5kIHVwZGF0ZWQgZnJvbSB1c2Vyc3BhY2UsIGJ1dCB0aGUgcGF5bG9hZCBpcyBvbmx5CisJIHJlYWRhYmxlIGZyb20ga2VybmVsIHNwYWNlLgorCisgKCopIEVhY2ggcHJvY2VzcyBzdWJzY3JpYmVzIHRvIHRocmVlIGtleXJpbmdzOiBhIHRocmVhZC1zcGVjaWZpYyBrZXlyaW5nLCBhCisgICAgIHByb2Nlc3Mtc3BlY2lmaWMga2V5cmluZywgYW5kIGEgc2Vzc2lvbi1zcGVjaWZpYyBrZXlyaW5nLgorCisgICAgIFRoZSB0aHJlYWQtc3BlY2lmaWMga2V5cmluZyBpcyBkaXNjYXJkZWQgZnJvbSB0aGUgY2hpbGQgd2hlbiBhbnkgc29ydCBvZgorICAgICBjbG9uZSwgZm9yaywgdmZvcmsgb3IgZXhlY3ZlIG9jY3Vycy4gQSBuZXcga2V5cmluZyBpcyBjcmVhdGVkIG9ubHkgd2hlbgorICAgICByZXF1aXJlZC4KKworICAgICBUaGUgcHJvY2Vzcy1zcGVjaWZpYyBrZXlyaW5nIGlzIHJlcGxhY2VkIHdpdGggYW4gZW1wdHkgb25lIGluIHRoZSBjaGlsZCBvbgorICAgICBjbG9uZSwgZm9yaywgdmZvcmsgdW5sZXNzIENMT05FX1RIUkVBRCBpcyBzdXBwbGllZCwgaW4gd2hpY2ggY2FzZSBpdCBpcworICAgICBzaGFyZWQuIGV4ZWN2ZSBhbHNvIGRpc2NhcmRzIHRoZSBwcm9jZXNzJ3MgcHJvY2VzcyBrZXlyaW5nIGFuZCBjcmVhdGVzIGEKKyAgICAgbmV3IG9uZS4KKworICAgICBUaGUgc2Vzc2lvbi1zcGVjaWZpYyBrZXlyaW5nIGlzIHBlcnNpc3RlbnQgYWNyb3NzIGNsb25lLCBmb3JrLCB2Zm9yayBhbmQKKyAgICAgZXhlY3ZlLCBldmVuIHdoZW4gdGhlIGxhdHRlciBleGVjdXRlcyBhIHNldC1VSUQgb3Igc2V0LUdJRCBiaW5hcnkuIEEKKyAgICAgcHJvY2VzcyBjYW4sIGhvd2V2ZXIsIHJlcGxhY2UgaXRzIGN1cnJlbnQgc2Vzc2lvbiBrZXlyaW5nIHdpdGggYSBuZXcgb25lCisgICAgIGJ5IHVzaW5nIFBSX0pPSU5fU0VTU0lPTl9LRVlSSU5HLiBJdCBpcyBwZXJtaXR0ZWQgdG8gcmVxdWVzdCBhbiBhbm9ueW1vdXMKKyAgICAgbmV3IG9uZSwgb3IgdG8gYXR0ZW1wdCB0byBjcmVhdGUgb3Igam9pbiBvbmUgb2YgYSBzcGVjaWZpYyBuYW1lLgorCisgICAgIFRoZSBvd25lcnNoaXAgb2YgdGhlIHRocmVhZCBrZXlyaW5nIGNoYW5nZXMgd2hlbiB0aGUgcmVhbCBVSUQgYW5kIEdJRCBvZgorICAgICB0aGUgdGhyZWFkIGNoYW5nZXMuCisKKyAoKikgRWFjaCB1c2VyIElEIHJlc2lkZW50IGluIHRoZSBzeXN0ZW0gaG9sZHMgdHdvIHNwZWNpYWwga2V5cmluZ3M6IGEgdXNlcgorICAgICBzcGVjaWZpYyBrZXlyaW5nIGFuZCBhIGRlZmF1bHQgdXNlciBzZXNzaW9uIGtleXJpbmcuIFRoZSBkZWZhdWx0IHNlc3Npb24KKyAgICAga2V5cmluZyBpcyBpbml0aWFsaXNlZCB3aXRoIGEgbGluayB0byB0aGUgdXNlci1zcGVjaWZpYyBrZXlyaW5nLgorCisgICAgIFdoZW4gYSBwcm9jZXNzIGNoYW5nZXMgaXRzIHJlYWwgVUlELCBpZiBpdCB1c2VkIHRvIGhhdmUgbm8gc2Vzc2lvbiBrZXksIGl0CisgICAgIHdpbGwgYmUgc3Vic2NyaWJlZCB0byB0aGUgZGVmYXVsdCBzZXNzaW9uIGtleSBmb3IgdGhlIG5ldyBVSUQuCisKKyAgICAgSWYgYSBwcm9jZXNzIGF0dGVtcHRzIHRvIGFjY2VzcyBpdHMgc2Vzc2lvbiBrZXkgd2hlbiBpdCBkb2Vzbid0IGhhdmUgb25lLAorICAgICBpdCB3aWxsIGJlIHN1YnNjcmliZWQgdG8gdGhlIGRlZmF1bHQgZm9yIGl0cyBjdXJyZW50IFVJRC4KKworICgqKSBFYWNoIHVzZXIgaGFzIHR3byBxdW90YXMgYWdhaW5zdCB3aGljaCB0aGUga2V5cyB0aGV5IG93biBhcmUgdHJhY2tlZC4gT25lCisgICAgIGxpbWl0cyB0aGUgdG90YWwgbnVtYmVyIG9mIGtleXMgYW5kIGtleXJpbmdzLCB0aGUgb3RoZXIgbGltaXRzIHRoZSB0b3RhbAorICAgICBhbW91bnQgb2YgZGVzY3JpcHRpb24gYW5kIHBheWxvYWQgc3BhY2UgdGhhdCBjYW4gYmUgY29uc3VtZWQuCisKKyAgICAgVGhlIHVzZXIgY2FuIHZpZXcgaW5mb3JtYXRpb24gb24gdGhpcyBhbmQgb3RoZXIgc3RhdGlzdGljcyB0aHJvdWdoIHByb2NmcworICAgICBmaWxlcy4gIFRoZSByb290IHVzZXIgbWF5IGFsc28gYWx0ZXIgdGhlIHF1b3RhIGxpbWl0cyB0aHJvdWdoIHN5c2N0bCBmaWxlcworICAgICAoc2VlIHRoZSBzZWN0aW9uICJOZXcgcHJvY2ZzIGZpbGVzIikuCisKKyAgICAgUHJvY2Vzcy1zcGVjaWZpYyBhbmQgdGhyZWFkLXNwZWNpZmljIGtleXJpbmdzIGFyZSBub3QgY291bnRlZCB0b3dhcmRzIGEKKyAgICAgdXNlcidzIHF1b3RhLgorCisgICAgIElmIGEgc3lzdGVtIGNhbGwgdGhhdCBtb2RpZmllcyBhIGtleSBvciBrZXlyaW5nIGluIHNvbWUgd2F5IHdvdWxkIHB1dCB0aGUKKyAgICAgdXNlciBvdmVyIHF1b3RhLCB0aGUgb3BlcmF0aW9uIGlzIHJlZnVzZWQgYW5kIGVycm9yIEVEUVVPVCBpcyByZXR1cm5lZC4KKworICgqKSBUaGVyZSdzIGEgc3lzdGVtIGNhbGwgaW50ZXJmYWNlIGJ5IHdoaWNoIHVzZXJzcGFjZSBwcm9ncmFtcyBjYW4gY3JlYXRlIGFuZAorICAgICBtYW5pcHVsYXRlIGtleXMgYW5kIGtleXJpbmdzLgorCisgKCopIFRoZXJlJ3MgYSBrZXJuZWwgaW50ZXJmYWNlIGJ5IHdoaWNoIHNlcnZpY2VzIGNhbiByZWdpc3RlciB0eXBlcyBhbmQgc2VhcmNoCisgICAgIGZvciBrZXlzLgorCisgKCopIFRoZXJlJ3MgYSB3YXkgZm9yIHRoZSBhIHNlYXJjaCBkb25lIGZyb20gdGhlIGtlcm5lbCB0byBjYWxsIGJhY2sgdG8KKyAgICAgdXNlcnNwYWNlIHRvIHJlcXVlc3QgYSBrZXkgdGhhdCBjYW4ndCBiZSBmb3VuZCBpbiBhIHByb2Nlc3MncyBrZXlyaW5ncy4KKworICgqKSBBbiBvcHRpb25hbCBmaWxlc3lzdGVtIGlzIGF2YWlsYWJsZSB0aHJvdWdoIHdoaWNoIHRoZSBrZXkgZGF0YWJhc2UgY2FuIGJlCisgICAgIHZpZXdlZCBhbmQgbWFuaXB1bGF0ZWQuCisKKworPT09PT09PT09PT09PT09PT09PT09PQorS0VZIEFDQ0VTUyBQRVJNSVNTSU9OUworPT09PT09PT09PT09PT09PT09PT09PQorCitLZXlzIGhhdmUgYW4gb3duZXIgdXNlciBJRCwgYSBncm91cCBhY2Nlc3MgSUQsIGFuZCBhIHBlcm1pc3Npb25zIG1hc2suIFRoZSBtYXNrCitoYXMgdXAgdG8gZWlnaHQgYml0cyBlYWNoIGZvciBwb3NzZXNzb3IsIHVzZXIsIGdyb3VwIGFuZCBvdGhlciBhY2Nlc3MuIE9ubHkKK3NpeCBvZiBlYWNoIHNldCBvZiBlaWdodCBiaXRzIGFyZSBkZWZpbmVkLiBUaGVzZSBwZXJtaXNzaW9ucyBncmFudGVkIGFyZToKKworICgqKSBWaWV3CisKKyAgICAgVGhpcyBwZXJtaXRzIGEga2V5IG9yIGtleXJpbmcncyBhdHRyaWJ1dGVzIHRvIGJlIHZpZXdlZCAtIGluY2x1ZGluZyBrZXkKKyAgICAgdHlwZSBhbmQgZGVzY3JpcHRpb24uCisKKyAoKikgUmVhZAorCisgICAgIFRoaXMgcGVybWl0cyBhIGtleSdzIHBheWxvYWQgdG8gYmUgdmlld2VkIG9yIGEga2V5cmluZydzIGxpc3Qgb2YgbGlua2VkCisgICAgIGtleXMuCisKKyAoKikgV3JpdGUKKworICAgICBUaGlzIHBlcm1pdHMgYSBrZXkncyBwYXlsb2FkIHRvIGJlIGluc3RhbnRpYXRlZCBvciB1cGRhdGVkLCBvciBpdCBhbGxvd3MgYQorICAgICBsaW5rIHRvIGJlIGFkZGVkIHRvIG9yIHJlbW92ZWQgZnJvbSBhIGtleXJpbmcuCisKKyAoKikgU2VhcmNoCisKKyAgICAgVGhpcyBwZXJtaXRzIGtleXJpbmdzIHRvIGJlIHNlYXJjaGVkIGFuZCBrZXlzIHRvIGJlIGZvdW5kLiBTZWFyY2hlcyBjYW4KKyAgICAgb25seSByZWN1cnNlIGludG8gbmVzdGVkIGtleXJpbmdzIHRoYXQgaGF2ZSBzZWFyY2ggcGVybWlzc2lvbiBzZXQuCisKKyAoKikgTGluaworCisgICAgIFRoaXMgcGVybWl0cyBhIGtleSBvciBrZXlyaW5nIHRvIGJlIGxpbmtlZCB0by4gVG8gY3JlYXRlIGEgbGluayBmcm9tIGEKKyAgICAga2V5cmluZyB0byBhIGtleSwgYSBwcm9jZXNzIG11c3QgaGF2ZSBXcml0ZSBwZXJtaXNzaW9uIG9uIHRoZSBrZXlyaW5nIGFuZAorICAgICBMaW5rIHBlcm1pc3Npb24gb24gdGhlIGtleS4KKworICgqKSBTZXQgQXR0cmlidXRlCisKKyAgICAgVGhpcyBwZXJtaXRzIGEga2V5J3MgVUlELCBHSUQgYW5kIHBlcm1pc3Npb25zIG1hc2sgdG8gYmUgY2hhbmdlZC4KKworRm9yIGNoYW5naW5nIHRoZSBvd25lcnNoaXAsIGdyb3VwIElEIG9yIHBlcm1pc3Npb25zIG1hc2ssIGJlaW5nIHRoZSBvd25lciBvZgordGhlIGtleSBvciBoYXZpbmcgdGhlIHN5c2FkbWluIGNhcGFiaWxpdHkgaXMgc3VmZmljaWVudC4KKworCis9PT09PT09PT09PT09PT0KK1NFTElOVVggU1VQUE9SVAorPT09PT09PT09PT09PT09CisKK1RoZSBzZWN1cml0eSBjbGFzcyAia2V5IiBoYXMgYmVlbiBhZGRlZCB0byBTRUxpbnV4IHNvIHRoYXQgbWFuZGF0b3J5IGFjY2VzcworY29udHJvbHMgY2FuIGJlIGFwcGxpZWQgdG8ga2V5cyBjcmVhdGVkIHdpdGhpbiB2YXJpb3VzIGNvbnRleHRzLiAgVGhpcyBzdXBwb3J0CitpcyBwcmVsaW1pbmFyeSwgYW5kIGlzIGxpa2VseSB0byBjaGFuZ2UgcXVpdGUgc2lnbmlmaWNhbnRseSBpbiB0aGUgbmVhciBmdXR1cmUuCitDdXJyZW50bHksIGFsbCBvZiB0aGUgYmFzaWMgcGVybWlzc2lvbnMgZXhwbGFpbmVkIGFib3ZlIGFyZSBwcm92aWRlZCBpbiBTRUxpbnV4CithcyB3ZWxsOyBTRUxpbnV4IGlzIHNpbXBseSBpbnZva2VkIGFmdGVyIGFsbCBiYXNpYyBwZXJtaXNzaW9uIGNoZWNrcyBoYXZlIGJlZW4KK3BlcmZvcm1lZC4KKworVGhlIHZhbHVlIG9mIHRoZSBmaWxlIC9wcm9jL3NlbGYvYXR0ci9rZXljcmVhdGUgaW5mbHVlbmNlcyB0aGUgbGFiZWxpbmcgb2YKK25ld2x5LWNyZWF0ZWQga2V5cy4gIElmIHRoZSBjb250ZW50cyBvZiB0aGF0IGZpbGUgY29ycmVzcG9uZCB0byBhbiBTRUxpbnV4CitzZWN1cml0eSBjb250ZXh0LCB0aGVuIHRoZSBrZXkgd2lsbCBiZSBhc3NpZ25lZCB0aGF0IGNvbnRleHQuICBPdGhlcndpc2UsIHRoZQora2V5IHdpbGwgYmUgYXNzaWduZWQgdGhlIGN1cnJlbnQgY29udGV4dCBvZiB0aGUgdGFzayB0aGF0IGludm9rZWQgdGhlIGtleQorY3JlYXRpb24gcmVxdWVzdC4gIFRhc2tzIG11c3QgYmUgZ3JhbnRlZCBleHBsaWNpdCBwZXJtaXNzaW9uIHRvIGFzc2lnbiBhCitwYXJ0aWN1bGFyIGNvbnRleHQgdG8gbmV3bHktY3JlYXRlZCBrZXlzLCB1c2luZyB0aGUgImNyZWF0ZSIgcGVybWlzc2lvbiBpbiB0aGUKK2tleSBzZWN1cml0eSBjbGFzcy4KKworVGhlIGRlZmF1bHQga2V5cmluZ3MgYXNzb2NpYXRlZCB3aXRoIHVzZXJzIHdpbGwgYmUgbGFiZWxlZCB3aXRoIHRoZSBkZWZhdWx0Citjb250ZXh0IG9mIHRoZSB1c2VyIGlmIGFuZCBvbmx5IGlmIHRoZSBsb2dpbiBwcm9ncmFtcyBoYXZlIGJlZW4gaW5zdHJ1bWVudGVkIHRvCitwcm9wZXJseSBpbml0aWFsaXplIGtleWNyZWF0ZSBkdXJpbmcgdGhlIGxvZ2luIHByb2Nlc3MuICBPdGhlcndpc2UsIHRoZXkgd2lsbAorYmUgbGFiZWxlZCB3aXRoIHRoZSBjb250ZXh0IG9mIHRoZSBsb2dpbiBwcm9ncmFtIGl0c2VsZi4KKworTm90ZSwgaG93ZXZlciwgdGhhdCB0aGUgZGVmYXVsdCBrZXlyaW5ncyBhc3NvY2lhdGVkIHdpdGggdGhlIHJvb3QgdXNlciBhcmUKK2xhYmVsZWQgd2l0aCB0aGUgZGVmYXVsdCBrZXJuZWwgY29udGV4dCwgc2luY2UgdGhleSBhcmUgY3JlYXRlZCBlYXJseSBpbiB0aGUKK2Jvb3QgcHJvY2VzcywgYmVmb3JlIHJvb3QgaGFzIGEgY2hhbmNlIHRvIGxvZyBpbi4KKworVGhlIGtleXJpbmdzIGFzc29jaWF0ZWQgd2l0aCBuZXcgdGhyZWFkcyBhcmUgZWFjaCBsYWJlbGVkIHdpdGggdGhlIGNvbnRleHQgb2YKK3RoZWlyIGFzc29jaWF0ZWQgdGhyZWFkLCBhbmQgYm90aCBzZXNzaW9uIGFuZCBwcm9jZXNzIGtleXJpbmdzIGFyZSBoYW5kbGVkCitzaW1pbGFybHkuCisKKworPT09PT09PT09PT09PT09PQorTkVXIFBST0NGUyBGSUxFUworPT09PT09PT09PT09PT09PQorCitUd28gZmlsZXMgaGF2ZSBiZWVuIGFkZGVkIHRvIHByb2NmcyBieSB3aGljaCBhbiBhZG1pbmlzdHJhdG9yIGNhbiBmaW5kIG91dAorYWJvdXQgdGhlIHN0YXR1cyBvZiB0aGUga2V5IHNlcnZpY2U6CisKKyAoKikgL3Byb2Mva2V5cworCisgICAgIFRoaXMgbGlzdHMgdGhlIGtleXMgdGhhdCBhcmUgY3VycmVudGx5IHZpZXdhYmxlIGJ5IHRoZSB0YXNrIHJlYWRpbmcgdGhlCisgICAgIGZpbGUsIGdpdmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGVpciB0eXBlLCBkZXNjcmlwdGlvbiBhbmQgcGVybWlzc2lvbnMuCisgICAgIEl0IGlzIG5vdCBwb3NzaWJsZSB0byB2aWV3IHRoZSBwYXlsb2FkIG9mIHRoZSBrZXkgdGhpcyB3YXksIHRob3VnaCBzb21lCisgICAgIGluZm9ybWF0aW9uIGFib3V0IGl0IG1heSBiZSBnaXZlbi4KKworICAgICBUaGUgb25seSBrZXlzIGluY2x1ZGVkIGluIHRoZSBsaXN0IGFyZSB0aG9zZSB0aGF0IGdyYW50IFZpZXcgcGVybWlzc2lvbiB0bworICAgICB0aGUgcmVhZGluZyBwcm9jZXNzIHdoZXRoZXIgb3Igbm90IGl0IHBvc3Nlc3NlcyB0aGVtLiAgTm90ZSB0aGF0IExTTQorICAgICBzZWN1cml0eSBjaGVja3MgYXJlIHN0aWxsIHBlcmZvcm1lZCwgYW5kIG1heSBmdXJ0aGVyIGZpbHRlciBvdXQga2V5cyB0aGF0CisgICAgIHRoZSBjdXJyZW50IHByb2Nlc3MgaXMgbm90IGF1dGhvcmlzZWQgdG8gdmlldy4KKworICAgICBUaGUgY29udGVudHMgb2YgdGhlIGZpbGUgbG9vayBsaWtlIHRoaXM6CisKKwlTRVJJQUwgICBGTEFHUyAgVVNBR0UgRVhQWSBQRVJNICAgICBVSUQgICBHSUQgICBUWVBFICAgICAgREVTQ1JJUFRJT046IFNVTU1BUlkKKwkwMDAwMDAwMSBJLS0tLS0gICAgMzkgcGVybSAxZjNmMDAwMCAgICAgMCAgICAgMCBrZXlyaW5nICAgX3VpZF9zZXMuMDogMS80CisJMDAwMDAwMDIgSS0tLS0tICAgICAyIHBlcm0gMWYzZjAwMDAgICAgIDAgICAgIDAga2V5cmluZyAgIF91aWQuMDogZW1wdHkKKwkwMDAwMDAwNyBJLS0tLS0gICAgIDEgcGVybSAxZjNmMDAwMCAgICAgMCAgICAgMCBrZXlyaW5nICAgX3BpZC4xOiBlbXB0eQorCTAwMDAwMThkIEktLS0tLSAgICAgMSBwZXJtIDFmM2YwMDAwICAgICAwICAgICAwIGtleXJpbmcgICBfcGlkLjQxMjogZW1wdHkKKwkwMDAwMDRkMiBJLS1RLS0gICAgIDEgcGVybSAxZjNmMDAwMCAgICAzMiAgICAtMSBrZXlyaW5nICAgX3VpZC4zMjogMS80CisJMDAwMDA0ZDMgSS0tUS0tICAgICAzIHBlcm0gMWYzZjAwMDAgICAgMzIgICAgLTEga2V5cmluZyAgIF91aWRfc2VzLjMyOiBlbXB0eQorCTAwMDAwODkyIEktLVFVLSAgICAgMSBwZXJtIDFmMDAwMDAwICAgICAwICAgICAwIHVzZXIgICAgICBtZXRhbDpjb3BwZXI6IDAKKwkwMDAwMDg5MyBJLS1RLU4gICAgIDEgIDM1cyAxZjNmMDAwMCAgICAgMCAgICAgMCB1c2VyICAgICAgbWV0YWw6c2lsdmVyOiAwCisJMDAwMDA4OTQgSS0tUS0tICAgICAxICAxMGggMDAzZjAwMDAgICAgIDAgICAgIDAgdXNlciAgICAgIG1ldGFsOmdvbGQ6IDAKKworICAgICBUaGUgZmxhZ3MgYXJlOgorCisJSQlJbnN0YW50aWF0ZWQKKwlSCVJldm9rZWQKKwlECURlYWQKKwlRCUNvbnRyaWJ1dGVzIHRvIHVzZXIncyBxdW90YQorCVUJVW5kZXIgY29uc3RydWN0aW9uIGJ5IGNhbGxiYWNrIHRvIHVzZXJzcGFjZQorCU4JTmVnYXRpdmUga2V5CisKKworICgqKSAvcHJvYy9rZXktdXNlcnMKKworICAgICBUaGlzIGZpbGUgbGlzdHMgdGhlIHRyYWNraW5nIGRhdGEgZm9yIGVhY2ggdXNlciB0aGF0IGhhcyBhdCBsZWFzdCBvbmUga2V5CisgICAgIG9uIHRoZSBzeXN0ZW0uICBTdWNoIGRhdGEgaW5jbHVkZXMgcXVvdGEgaW5mb3JtYXRpb24gYW5kIHN0YXRpc3RpY3M6CisKKwlbcm9vdEBhbmRyb21lZGEgcm9vdF0jIGNhdCAvcHJvYy9rZXktdXNlcnMKKwkwOiAgICAgNDYgNDUvNDUgMS8xMDAgMTMvMTAwMDAKKwkyOTogICAgIDIgMi8yIDIvMTAwIDQwLzEwMDAwCisJMzI6ICAgICAyIDIvMiAyLzEwMCA0MC8xMDAwMAorCTM4OiAgICAgMiAyLzIgMi8xMDAgNDAvMTAwMDAKKworICAgICBUaGUgZm9ybWF0IG9mIGVhY2ggbGluZSBpcworCTxVSUQ+OgkJCVVzZXIgSUQgdG8gd2hpY2ggdGhpcyBhcHBsaWVzCisJPHVzYWdlPgkJCVN0cnVjdHVyZSByZWZjb3VudAorCTxpbnN0Pi88a2V5cz4JCVRvdGFsIG51bWJlciBvZiBrZXlzIGFuZCBudW1iZXIgaW5zdGFudGlhdGVkCisJPGtleXM+LzxtYXg+CQlLZXkgY291bnQgcXVvdGEKKwk8Ynl0ZXM+LzxtYXg+CQlLZXkgc2l6ZSBxdW90YQorCisKK0ZvdXIgbmV3IHN5c2N0bCBmaWxlcyBoYXZlIGJlZW4gYWRkZWQgYWxzbyBmb3IgdGhlIHB1cnBvc2Ugb2YgY29udHJvbGxpbmcgdGhlCitxdW90YSBsaW1pdHMgb24ga2V5czoKKworICgqKSAvcHJvYy9zeXMva2VybmVsL2tleXMvcm9vdF9tYXhrZXlzCisgICAgIC9wcm9jL3N5cy9rZXJuZWwva2V5cy9yb290X21heGJ5dGVzCisKKyAgICAgVGhlc2UgZmlsZXMgaG9sZCB0aGUgbWF4aW11bSBudW1iZXIgb2Yga2V5cyB0aGF0IHJvb3QgbWF5IGhhdmUgYW5kIHRoZQorICAgICBtYXhpbXVtIHRvdGFsIG51bWJlciBvZiBieXRlcyBvZiBkYXRhIHRoYXQgcm9vdCBtYXkgaGF2ZSBzdG9yZWQgaW4gdGhvc2UKKyAgICAga2V5cy4KKworICgqKSAvcHJvYy9zeXMva2VybmVsL2tleXMvbWF4a2V5cworICAgICAvcHJvYy9zeXMva2VybmVsL2tleXMvbWF4Ynl0ZXMKKworICAgICBUaGVzZSBmaWxlcyBob2xkIHRoZSBtYXhpbXVtIG51bWJlciBvZiBrZXlzIHRoYXQgZWFjaCBub24tcm9vdCB1c2VyIG1heQorICAgICBoYXZlIGFuZCB0aGUgbWF4aW11bSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgb2YgZGF0YSB0aGF0IGVhY2ggb2YgdGhvc2UKKyAgICAgdXNlcnMgbWF5IGhhdmUgc3RvcmVkIGluIHRoZWlyIGtleXMuCisKK1Jvb3QgbWF5IGFsdGVyIHRoZXNlIGJ5IHdyaXRpbmcgZWFjaCBuZXcgbGltaXQgYXMgYSBkZWNpbWFsIG51bWJlciBzdHJpbmcgdG8KK3RoZSBhcHByb3ByaWF0ZSBmaWxlLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1VTRVJTUEFDRSBTWVNURU0gQ0FMTCBJTlRFUkZBQ0UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVXNlcnNwYWNlIGNhbiBtYW5pcHVsYXRlIGtleXMgZGlyZWN0bHkgdGhyb3VnaCB0aHJlZSBuZXcgc3lzY2FsbHM6IGFkZF9rZXksCityZXF1ZXN0X2tleSBhbmQga2V5Y3RsLiBUaGUgbGF0dGVyIHByb3ZpZGVzIGEgbnVtYmVyIG9mIGZ1bmN0aW9ucyBmb3IKK21hbmlwdWxhdGluZyBrZXlzLgorCitXaGVuIHJlZmVycmluZyB0byBhIGtleSBkaXJlY3RseSwgdXNlcnNwYWNlIHByb2dyYW1zIHNob3VsZCB1c2UgdGhlIGtleSdzCitzZXJpYWwgbnVtYmVyIChhIHBvc2l0aXZlIDMyLWJpdCBpbnRlZ2VyKS4gSG93ZXZlciwgdGhlcmUgYXJlIHNvbWUgc3BlY2lhbAordmFsdWVzIGF2YWlsYWJsZSBmb3IgcmVmZXJyaW5nIHRvIHNwZWNpYWwga2V5cyBhbmQga2V5cmluZ3MgdGhhdCByZWxhdGUgdG8gdGhlCitwcm9jZXNzIG1ha2luZyB0aGUgY2FsbDoKKworCUNPTlNUQU5UCQkJVkFMVUUJS0VZIFJFRkVSRU5DRUQKKwk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0JPT09PT09CT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCUtFWV9TUEVDX1RIUkVBRF9LRVlSSU5HCQktMQl0aHJlYWQtc3BlY2lmaWMga2V5cmluZworCUtFWV9TUEVDX1BST0NFU1NfS0VZUklORwktMglwcm9jZXNzLXNwZWNpZmljIGtleXJpbmcKKwlLRVlfU1BFQ19TRVNTSU9OX0tFWVJJTkcJLTMJc2Vzc2lvbi1zcGVjaWZpYyBrZXlyaW5nCisJS0VZX1NQRUNfVVNFUl9LRVlSSU5HCQktNAlVSUQtc3BlY2lmaWMga2V5cmluZworCUtFWV9TUEVDX1VTRVJfU0VTU0lPTl9LRVlSSU5HCS01CVVJRC1zZXNzaW9uIGtleXJpbmcKKwlLRVlfU1BFQ19HUk9VUF9LRVlSSU5HCQktNglHSUQtc3BlY2lmaWMga2V5cmluZworCUtFWV9TUEVDX1JFUUtFWV9BVVRIX0tFWQktNwlhc3N1bWVkIHJlcXVlc3Rfa2V5KCkKKwkJCQkJCSAgYXV0aG9yaXNhdGlvbiBrZXkKKworCitUaGUgbWFpbiBzeXNjYWxscyBhcmU6CisKKyAoKikgQ3JlYXRlIGEgbmV3IGtleSBvZiBnaXZlbiB0eXBlLCBkZXNjcmlwdGlvbiBhbmQgcGF5bG9hZCBhbmQgYWRkIGl0IHRvIHRoZQorICAgICBub21pbmF0ZWQga2V5cmluZzoKKworCWtleV9zZXJpYWxfdCBhZGRfa2V5KGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKmRlc2MsCisJCQkgICAgIGNvbnN0IHZvaWQgKnBheWxvYWQsIHNpemVfdCBwbGVuLAorCQkJICAgICBrZXlfc2VyaWFsX3Qga2V5cmluZyk7CisKKyAgICAgSWYgYSBrZXkgb2YgdGhlIHNhbWUgdHlwZSBhbmQgZGVzY3JpcHRpb24gYXMgdGhhdCBwcm9wb3NlZCBhbHJlYWR5IGV4aXN0cworICAgICBpbiB0aGUga2V5cmluZywgdGhpcyB3aWxsIHRyeSB0byB1cGRhdGUgaXQgd2l0aCB0aGUgZ2l2ZW4gcGF5bG9hZCwgb3IgaXQKKyAgICAgd2lsbCByZXR1cm4gZXJyb3IgRUVYSVNUIGlmIHRoYXQgZnVuY3Rpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGUga2V5CisgICAgIHR5cGUuIFRoZSBwcm9jZXNzIG11c3QgYWxzbyBoYXZlIHBlcm1pc3Npb24gdG8gd3JpdGUgdG8gdGhlIGtleSB0byBiZSBhYmxlCisgICAgIHRvIHVwZGF0ZSBpdC4gVGhlIG5ldyBrZXkgd2lsbCBoYXZlIGFsbCB1c2VyIHBlcm1pc3Npb25zIGdyYW50ZWQgYW5kIG5vCisgICAgIGdyb3VwIG9yIHRoaXJkIHBhcnR5IHBlcm1pc3Npb25zLgorCisgICAgIE90aGVyd2lzZSwgdGhpcyB3aWxsIGF0dGVtcHQgdG8gY3JlYXRlIGEgbmV3IGtleSBvZiB0aGUgc3BlY2lmaWVkIHR5cGUgYW5kCisgICAgIGRlc2NyaXB0aW9uLCBhbmQgdG8gaW5zdGFudGlhdGUgaXQgd2l0aCB0aGUgc3VwcGxpZWQgcGF5bG9hZCBhbmQgYXR0YWNoIGl0CisgICAgIHRvIHRoZSBrZXlyaW5nLiBJbiB0aGlzIGNhc2UsIGFuIGVycm9yIHdpbGwgYmUgZ2VuZXJhdGVkIGlmIHRoZSBwcm9jZXNzCisgICAgIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byB3cml0ZSB0byB0aGUga2V5cmluZy4KKworICAgICBJZiB0aGUga2V5IHR5cGUgc3VwcG9ydHMgaXQsIGlmIHRoZSBkZXNjcmlwdGlvbiBpcyBOVUxMIG9yIGFuIGVtcHR5CisgICAgIHN0cmluZywgdGhlIGtleSB0eXBlIHdpbGwgdHJ5IGFuZCBnZW5lcmF0ZSBhIGRlc2NyaXB0aW9uIGZyb20gdGhlIGNvbnRlbnQKKyAgICAgb2YgdGhlIHBheWxvYWQuCisKKyAgICAgVGhlIHBheWxvYWQgaXMgb3B0aW9uYWwsIGFuZCB0aGUgcG9pbnRlciBjYW4gYmUgTlVMTCBpZiBub3QgcmVxdWlyZWQgYnkKKyAgICAgdGhlIHR5cGUuIFRoZSBwYXlsb2FkIGlzIHBsZW4gaW4gc2l6ZSwgYW5kIHBsZW4gY2FuIGJlIHplcm8gZm9yIGFuIGVtcHR5CisgICAgIHBheWxvYWQuCisKKyAgICAgQSBuZXcga2V5cmluZyBjYW4gYmUgZ2VuZXJhdGVkIGJ5IHNldHRpbmcgdHlwZSAia2V5cmluZyIsIHRoZSBrZXlyaW5nIG5hbWUKKyAgICAgYXMgdGhlIGRlc2NyaXB0aW9uIChvciBOVUxMKSBhbmQgc2V0dGluZyB0aGUgcGF5bG9hZCB0byBOVUxMLgorCisgICAgIFVzZXIgZGVmaW5lZCBrZXlzIGNhbiBiZSBjcmVhdGVkIGJ5IHNwZWNpZnlpbmcgdHlwZSAidXNlciIuIEl0IGlzCisgICAgIHJlY29tbWVuZGVkIHRoYXQgYSB1c2VyIGRlZmluZWQga2V5J3MgZGVzY3JpcHRpb24gYnkgcHJlZml4ZWQgd2l0aCBhIHR5cGUKKyAgICAgSUQgYW5kIGEgY29sb24sIHN1Y2ggYXMgImtyYjV0Z3Q6IiBmb3IgYSBLZXJiZXJvcyA1IHRpY2tldCBncmFudGluZworICAgICB0aWNrZXQuCisKKyAgICAgQW55IG90aGVyIHR5cGUgbXVzdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZCB3aXRoIHRoZSBrZXJuZWwgaW4gYWR2YW5jZSBieSBhCisgICAgIGtlcm5lbCBzZXJ2aWNlIHN1Y2ggYXMgYSBmaWxlc3lzdGVtLgorCisgICAgIFRoZSBJRCBvZiB0aGUgbmV3IG9yIHVwZGF0ZWQga2V5IGlzIHJldHVybmVkIGlmIHN1Y2Nlc3NmdWwuCisKKworICgqKSBTZWFyY2ggdGhlIHByb2Nlc3MncyBrZXlyaW5ncyBmb3IgYSBrZXksIHBvdGVudGlhbGx5IGNhbGxpbmcgb3V0IHRvCisgICAgIHVzZXJzcGFjZSB0byBjcmVhdGUgaXQuCisKKwlrZXlfc2VyaWFsX3QgcmVxdWVzdF9rZXkoY29uc3QgY2hhciAqdHlwZSwgY29uc3QgY2hhciAqZGVzY3JpcHRpb24sCisJCQkJIGNvbnN0IGNoYXIgKmNhbGxvdXRfaW5mbywKKwkJCQkga2V5X3NlcmlhbF90IGRlc3Rfa2V5cmluZyk7CisKKyAgICAgVGhpcyBmdW5jdGlvbiBzZWFyY2hlcyBhbGwgdGhlIHByb2Nlc3MncyBrZXlyaW5ncyBpbiB0aGUgb3JkZXIgdGhyZWFkLAorICAgICBwcm9jZXNzLCBzZXNzaW9uIGZvciBhIG1hdGNoaW5nIGtleS4gVGhpcyB3b3JrcyB2ZXJ5IG11Y2ggbGlrZQorICAgICBLRVlDVExfU0VBUkNILCBpbmNsdWRpbmcgdGhlIG9wdGlvbmFsIGF0dGFjaG1lbnQgb2YgdGhlIGRpc2NvdmVyZWQga2V5IHRvCisgICAgIGEga2V5cmluZy4KKworICAgICBJZiBhIGtleSBjYW5ub3QgYmUgZm91bmQsIGFuZCBpZiBjYWxsb3V0X2luZm8gaXMgbm90IE5VTEwsIHRoZW4KKyAgICAgL3NiaW4vcmVxdWVzdC1rZXkgd2lsbCBiZSBpbnZva2VkIGluIGFuIGF0dGVtcHQgdG8gb2J0YWluIGEga2V5LiBUaGUKKyAgICAgY2FsbG91dF9pbmZvIHN0cmluZyB3aWxsIGJlIHBhc3NlZCBhcyBhbiBhcmd1bWVudCB0byB0aGUgcHJvZ3JhbS4KKworICAgICBTZWUgYWxzbyBEb2N1bWVudGF0aW9uL3NlY3VyaXR5L2tleXMtcmVxdWVzdC1rZXkudHh0LgorCisKK1RoZSBrZXljdGwgc3lzY2FsbCBmdW5jdGlvbnMgYXJlOgorCisgKCopIE1hcCBhIHNwZWNpYWwga2V5IElEIHRvIGEgcmVhbCBrZXkgSUQgZm9yIHRoaXMgcHJvY2VzczoKKworCWtleV9zZXJpYWxfdCBrZXljdGwoS0VZQ1RMX0dFVF9LRVlSSU5HX0lELCBrZXlfc2VyaWFsX3QgaWQsCisJCQkgICAgaW50IGNyZWF0ZSk7CisKKyAgICAgVGhlIHNwZWNpYWwga2V5IHNwZWNpZmllZCBieSAiaWQiIGlzIGxvb2tlZCB1cCAod2l0aCB0aGUga2V5IGJlaW5nIGNyZWF0ZWQKKyAgICAgaWYgbmVjZXNzYXJ5KSBhbmQgdGhlIElEIG9mIHRoZSBrZXkgb3Iga2V5cmluZyB0aHVzIGZvdW5kIGlzIHJldHVybmVkIGlmCisgICAgIGl0IGV4aXN0cy4KKworICAgICBJZiB0aGUga2V5IGRvZXMgbm90IHlldCBleGlzdCwgdGhlIGtleSB3aWxsIGJlIGNyZWF0ZWQgaWYgImNyZWF0ZSIgaXMKKyAgICAgbm9uLXplcm87IGFuZCB0aGUgZXJyb3IgRU5PS0VZIHdpbGwgYmUgcmV0dXJuZWQgaWYgImNyZWF0ZSIgaXMgemVyby4KKworCisgKCopIFJlcGxhY2UgdGhlIHNlc3Npb24ga2V5cmluZyB0aGlzIHByb2Nlc3Mgc3Vic2NyaWJlcyB0byB3aXRoIGEgbmV3IG9uZToKKworCWtleV9zZXJpYWxfdCBrZXljdGwoS0VZQ1RMX0pPSU5fU0VTU0lPTl9LRVlSSU5HLCBjb25zdCBjaGFyICpuYW1lKTsKKworICAgICBJZiBuYW1lIGlzIE5VTEwsIGFuIGFub255bW91cyBrZXlyaW5nIGlzIGNyZWF0ZWQgYXR0YWNoZWQgdG8gdGhlIHByb2Nlc3MKKyAgICAgYXMgaXRzIHNlc3Npb24ga2V5cmluZywgZGlzcGxhY2luZyB0aGUgb2xkIHNlc3Npb24ga2V5cmluZy4KKworICAgICBJZiBuYW1lIGlzIG5vdCBOVUxMLCBpZiBhIGtleXJpbmcgb2YgdGhhdCBuYW1lIGV4aXN0cywgdGhlIHByb2Nlc3MKKyAgICAgYXR0ZW1wdHMgdG8gYXR0YWNoIGl0IGFzIHRoZSBzZXNzaW9uIGtleXJpbmcsIHJldHVybmluZyBhbiBlcnJvciBpZiB0aGF0CisgICAgIGlzIG5vdCBwZXJtaXR0ZWQ7IG90aGVyd2lzZSBhIG5ldyBrZXlyaW5nIG9mIHRoYXQgbmFtZSBpcyBjcmVhdGVkIGFuZAorICAgICBhdHRhY2hlZCBhcyB0aGUgc2Vzc2lvbiBrZXlyaW5nLgorCisgICAgIFRvIGF0dGFjaCB0byBhIG5hbWVkIGtleXJpbmcsIHRoZSBrZXlyaW5nIG11c3QgaGF2ZSBzZWFyY2ggcGVybWlzc2lvbiBmb3IKKyAgICAgdGhlIHByb2Nlc3MncyBvd25lcnNoaXAuCisKKyAgICAgVGhlIElEIG9mIHRoZSBuZXcgc2Vzc2lvbiBrZXlyaW5nIGlzIHJldHVybmVkIGlmIHN1Y2Nlc3NmdWwuCisKKworICgqKSBVcGRhdGUgdGhlIHNwZWNpZmllZCBrZXk6CisKKwlsb25nIGtleWN0bChLRVlDVExfVVBEQVRFLCBrZXlfc2VyaWFsX3Qga2V5LCBjb25zdCB2b2lkICpwYXlsb2FkLAorCQkgICAgc2l6ZV90IHBsZW4pOworCisgICAgIFRoaXMgd2lsbCB0cnkgdG8gdXBkYXRlIHRoZSBzcGVjaWZpZWQga2V5IHdpdGggdGhlIGdpdmVuIHBheWxvYWQsIG9yIGl0CisgICAgIHdpbGwgcmV0dXJuIGVycm9yIEVPUE5PVFNVUFAgaWYgdGhhdCBmdW5jdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBrZXkKKyAgICAgdHlwZS4gVGhlIHByb2Nlc3MgbXVzdCBhbHNvIGhhdmUgcGVybWlzc2lvbiB0byB3cml0ZSB0byB0aGUga2V5IHRvIGJlIGFibGUKKyAgICAgdG8gdXBkYXRlIGl0LgorCisgICAgIFRoZSBwYXlsb2FkIGlzIG9mIGxlbmd0aCBwbGVuLCBhbmQgbWF5IGJlIGFic2VudCBvciBlbXB0eSBhcyBmb3IKKyAgICAgYWRkX2tleSgpLgorCisKKyAoKikgUmV2b2tlIGEga2V5OgorCisJbG9uZyBrZXljdGwoS0VZQ1RMX1JFVk9LRSwga2V5X3NlcmlhbF90IGtleSk7CisKKyAgICAgVGhpcyBtYWtlcyBhIGtleSB1bmF2YWlsYWJsZSBmb3IgZnVydGhlciBvcGVyYXRpb25zLiBGdXJ0aGVyIGF0dGVtcHRzIHRvCisgICAgIHVzZSB0aGUga2V5IHdpbGwgYmUgbWV0IHdpdGggZXJyb3IgRUtFWVJFVk9LRUQsIGFuZCB0aGUga2V5IHdpbGwgbm8gbG9uZ2VyCisgICAgIGJlIGZpbmRhYmxlLgorCisKKyAoKikgQ2hhbmdlIHRoZSBvd25lcnNoaXAgb2YgYSBrZXk6CisKKwlsb25nIGtleWN0bChLRVlDVExfQ0hPV04sIGtleV9zZXJpYWxfdCBrZXksIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKTsKKworICAgICBUaGlzIGZ1bmN0aW9uIHBlcm1pdHMgYSBrZXkncyBvd25lciBhbmQgZ3JvdXAgSUQgdG8gYmUgY2hhbmdlZC4gRWl0aGVyIG9uZQorICAgICBvZiB1aWQgb3IgZ2lkIGNhbiBiZSBzZXQgdG8gLTEgdG8gc3VwcHJlc3MgdGhhdCBjaGFuZ2UuCisKKyAgICAgT25seSB0aGUgc3VwZXJ1c2VyIGNhbiBjaGFuZ2UgYSBrZXkncyBvd25lciB0byBzb21ldGhpbmcgb3RoZXIgdGhhbiB0aGUKKyAgICAga2V5J3MgY3VycmVudCBvd25lci4gU2ltaWxhcmx5LCBvbmx5IHRoZSBzdXBlcnVzZXIgY2FuIGNoYW5nZSBhIGtleSdzCisgICAgIGdyb3VwIElEIHRvIHNvbWV0aGluZyBvdGhlciB0aGFuIHRoZSBjYWxsaW5nIHByb2Nlc3MncyBncm91cCBJRCBvciBvbmUgb2YKKyAgICAgaXRzIGdyb3VwIGxpc3QgbWVtYmVycy4KKworCisgKCopIENoYW5nZSB0aGUgcGVybWlzc2lvbnMgbWFzayBvbiBhIGtleToKKworCWxvbmcga2V5Y3RsKEtFWUNUTF9TRVRQRVJNLCBrZXlfc2VyaWFsX3Qga2V5LCBrZXlfcGVybV90IHBlcm0pOworCisgICAgIFRoaXMgZnVuY3Rpb24gcGVybWl0cyB0aGUgb3duZXIgb2YgYSBrZXkgb3IgdGhlIHN1cGVydXNlciB0byBjaGFuZ2UgdGhlCisgICAgIHBlcm1pc3Npb25zIG1hc2sgb24gYSBrZXkuCisKKyAgICAgT25seSBiaXRzIHRoZSBhdmFpbGFibGUgYml0cyBhcmUgcGVybWl0dGVkOyBpZiBhbnkgb3RoZXIgYml0cyBhcmUgc2V0LAorICAgICBlcnJvciBFSU5WQUwgd2lsbCBiZSByZXR1cm5lZC4KKworCisgKCopIERlc2NyaWJlIGEga2V5OgorCisJbG9uZyBrZXljdGwoS0VZQ1RMX0RFU0NSSUJFLCBrZXlfc2VyaWFsX3Qga2V5LCBjaGFyICpidWZmZXIsCisJCSAgICBzaXplX3QgYnVmbGVuKTsKKworICAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSBzdW1tYXJ5IG9mIHRoZSBrZXkncyBhdHRyaWJ1dGVzIChidXQgbm90IGl0cworICAgICBwYXlsb2FkIGRhdGEpIGFzIGEgc3RyaW5nIGluIHRoZSBidWZmZXIgcHJvdmlkZWQuCisKKyAgICAgVW5sZXNzIHRoZXJlJ3MgYW4gZXJyb3IsIGl0IGFsd2F5cyByZXR1cm5zIHRoZSBhbW91bnQgb2YgZGF0YSBpdCBjb3VsZAorICAgICBwcm9kdWNlLCBldmVuIGlmIHRoYXQncyB0b28gYmlnIGZvciB0aGUgYnVmZmVyLCBidXQgaXQgd29uJ3QgY29weSBtb3JlCisgICAgIHRoYW4gcmVxdWVzdGVkIHRvIHVzZXJzcGFjZS4gSWYgdGhlIGJ1ZmZlciBwb2ludGVyIGlzIE5VTEwgdGhlbiBubyBjb3B5CisgICAgIHdpbGwgdGFrZSBwbGFjZS4KKworICAgICBBIHByb2Nlc3MgbXVzdCBoYXZlIHZpZXcgcGVybWlzc2lvbiBvbiB0aGUga2V5IGZvciB0aGlzIGZ1bmN0aW9uIHRvIGJlCisgICAgIHN1Y2Nlc3NmdWwuCisKKyAgICAgSWYgc3VjY2Vzc2Z1bCwgYSBzdHJpbmcgaXMgcGxhY2VkIGluIHRoZSBidWZmZXIgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6CisKKwk8dHlwZT47PHVpZD47PGdpZD47PHBlcm0+OzxkZXNjcmlwdGlvbj4KKworICAgICBXaGVyZSB0eXBlIGFuZCBkZXNjcmlwdGlvbiBhcmUgc3RyaW5ncywgdWlkIGFuZCBnaWQgYXJlIGRlY2ltYWwsIGFuZCBwZXJtCisgICAgIGlzIGhleGFkZWNpbWFsLiBBIE5VTCBjaGFyYWN0ZXIgaXMgaW5jbHVkZWQgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIGlmCisgICAgIHRoZSBidWZmZXIgaXMgc3VmZmljaWVudGx5IGJpZy4KKworICAgICBUaGlzIGNhbiBiZSBwYXJzZWQgd2l0aAorCisJc3NjYW5mKGJ1ZmZlciwgIiVbXjtdOyVkOyVkOyVvOyVzIiwgdHlwZSwgJnVpZCwgJmdpZCwgJm1vZGUsIGRlc2MpOworCisKKyAoKikgQ2xlYXIgb3V0IGEga2V5cmluZzoKKworCWxvbmcga2V5Y3RsKEtFWUNUTF9DTEVBUiwga2V5X3NlcmlhbF90IGtleXJpbmcpOworCisgICAgIFRoaXMgZnVuY3Rpb24gY2xlYXJzIHRoZSBsaXN0IG9mIGtleXMgYXR0YWNoZWQgdG8gYSBrZXlyaW5nLiBUaGUgY2FsbGluZworICAgICBwcm9jZXNzIG11c3QgaGF2ZSB3cml0ZSBwZXJtaXNzaW9uIG9uIHRoZSBrZXlyaW5nLCBhbmQgaXQgbXVzdCBiZSBhCisgICAgIGtleXJpbmcgKG9yIGVsc2UgZXJyb3IgRU5PVERJUiB3aWxsIHJlc3VsdCkuCisKKyAgICAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBiZSB1c2VkIHRvIGNsZWFyIHNwZWNpYWwga2VybmVsIGtleXJpbmdzIGlmIHRoZXkKKyAgICAgYXJlIGFwcHJvcHJpYXRlbHkgbWFya2VkIGlmIHRoZSB1c2VyIGhhcyBDQVBfU1lTX0FETUlOIGNhcGFiaWxpdHkuICBUaGUKKyAgICAgRE5TIHJlc29sdmVyIGNhY2hlIGtleXJpbmcgaXMgYW4gZXhhbXBsZSBvZiB0aGlzLgorCisKKyAoKikgTGluayBhIGtleSBpbnRvIGEga2V5cmluZzoKKworCWxvbmcga2V5Y3RsKEtFWUNUTF9MSU5LLCBrZXlfc2VyaWFsX3Qga2V5cmluZywga2V5X3NlcmlhbF90IGtleSk7CisKKyAgICAgVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgbGluayBmcm9tIHRoZSBrZXlyaW5nIHRvIHRoZSBrZXkuIFRoZSBwcm9jZXNzIG11c3QKKyAgICAgaGF2ZSB3cml0ZSBwZXJtaXNzaW9uIG9uIHRoZSBrZXlyaW5nIGFuZCBtdXN0IGhhdmUgbGluayBwZXJtaXNzaW9uIG9uIHRoZQorICAgICBrZXkuCisKKyAgICAgU2hvdWxkIHRoZSBrZXlyaW5nIG5vdCBiZSBhIGtleXJpbmcsIGVycm9yIEVOT1RESVIgd2lsbCByZXN1bHQ7IGFuZCBpZiB0aGUKKyAgICAga2V5cmluZyBpcyBmdWxsLCBlcnJvciBFTkZJTEUgd2lsbCByZXN1bHQuCisKKyAgICAgVGhlIGxpbmsgcHJvY2VkdXJlIGNoZWNrcyB0aGUgbmVzdGluZyBvZiB0aGUga2V5cmluZ3MsIHJldHVybmluZyBFTE9PUCBpZgorICAgICBpdCBhcHBlYXJzIHRvbyBkZWVwIG9yIEVERUFETEsgaWYgdGhlIGxpbmsgd291bGQgaW50cm9kdWNlIGEgY3ljbGUuCisKKyAgICAgQW55IGxpbmtzIHdpdGhpbiB0aGUga2V5cmluZyB0byBrZXlzIHRoYXQgbWF0Y2ggdGhlIG5ldyBrZXkgaW4gdGVybXMgb2YKKyAgICAgdHlwZSBhbmQgZGVzY3JpcHRpb24gd2lsbCBiZSBkaXNjYXJkZWQgZnJvbSB0aGUga2V5cmluZyBhcyB0aGUgbmV3IG9uZSBpcworICAgICBhZGRlZC4KKworCisgKCopIFVubGluayBhIGtleSBvciBrZXlyaW5nIGZyb20gYW5vdGhlciBrZXlyaW5nOgorCisJbG9uZyBrZXljdGwoS0VZQ1RMX1VOTElOSywga2V5X3NlcmlhbF90IGtleXJpbmcsIGtleV9zZXJpYWxfdCBrZXkpOworCisgICAgIFRoaXMgZnVuY3Rpb24gbG9va3MgdGhyb3VnaCB0aGUga2V5cmluZyBmb3IgdGhlIGZpcnN0IGxpbmsgdG8gdGhlCisgICAgIHNwZWNpZmllZCBrZXksIGFuZCByZW1vdmVzIGl0IGlmIGZvdW5kLiBTdWJzZXF1ZW50IGxpbmtzIHRvIHRoYXQga2V5IGFyZQorICAgICBpZ25vcmVkLiBUaGUgcHJvY2VzcyBtdXN0IGhhdmUgd3JpdGUgcGVybWlzc2lvbiBvbiB0aGUga2V5cmluZy4KKworICAgICBJZiB0aGUga2V5cmluZyBpcyBub3QgYSBrZXlyaW5nLCBlcnJvciBFTk9URElSIHdpbGwgcmVzdWx0OyBhbmQgaWYgdGhlIGtleQorICAgICBpcyBub3QgcHJlc2VudCwgZXJyb3IgRU5PRU5UIHdpbGwgYmUgdGhlIHJlc3VsdC4KKworCisgKCopIFNlYXJjaCBhIGtleXJpbmcgdHJlZSBmb3IgYSBrZXk6CisKKwlrZXlfc2VyaWFsX3Qga2V5Y3RsKEtFWUNUTF9TRUFSQ0gsIGtleV9zZXJpYWxfdCBrZXlyaW5nLAorCQkJICAgIGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLAorCQkJICAgIGtleV9zZXJpYWxfdCBkZXN0X2tleXJpbmcpOworCisgICAgIFRoaXMgc2VhcmNoZXMgdGhlIGtleXJpbmcgdHJlZSBoZWFkZWQgYnkgdGhlIHNwZWNpZmllZCBrZXlyaW5nIHVudGlsIGEga2V5CisgICAgIGlzIGZvdW5kIHRoYXQgbWF0Y2hlcyB0aGUgdHlwZSBhbmQgZGVzY3JpcHRpb24gY3JpdGVyaWEuIEVhY2gga2V5cmluZyBpcworICAgICBjaGVja2VkIGZvciBrZXlzIGJlZm9yZSByZWN1cnNpb24gaW50byBpdHMgY2hpbGRyZW4gb2NjdXJzLgorCisgICAgIFRoZSBwcm9jZXNzIG11c3QgaGF2ZSBzZWFyY2ggcGVybWlzc2lvbiBvbiB0aGUgdG9wIGxldmVsIGtleXJpbmcsIG9yIGVsc2UKKyAgICAgZXJyb3IgRUFDQ0VTIHdpbGwgcmVzdWx0LiBPbmx5IGtleXJpbmdzIHRoYXQgdGhlIHByb2Nlc3MgaGFzIHNlYXJjaAorICAgICBwZXJtaXNzaW9uIG9uIHdpbGwgYmUgcmVjdXJzZWQgaW50bywgYW5kIG9ubHkga2V5cyBhbmQga2V5cmluZ3MgZm9yIHdoaWNoCisgICAgIGEgcHJvY2VzcyBoYXMgc2VhcmNoIHBlcm1pc3Npb24gY2FuIGJlIG1hdGNoZWQuIElmIHRoZSBzcGVjaWZpZWQga2V5cmluZworICAgICBpcyBub3QgYSBrZXlyaW5nLCBFTk9URElSIHdpbGwgcmVzdWx0LgorCisgICAgIElmIHRoZSBzZWFyY2ggc3VjY2VlZHMsIHRoZSBmdW5jdGlvbiB3aWxsIGF0dGVtcHQgdG8gbGluayB0aGUgZm91bmQga2V5CisgICAgIGludG8gdGhlIGRlc3RpbmF0aW9uIGtleXJpbmcgaWYgb25lIGlzIHN1cHBsaWVkIChub24temVybyBJRCkuIEFsbCB0aGUKKyAgICAgY29uc3RyYWludHMgYXBwbGljYWJsZSB0byBLRVlDVExfTElOSyBhcHBseSBpbiB0aGlzIGNhc2UgdG9vLgorCisgICAgIEVycm9yIEVOT0tFWSwgRUtFWVJFVk9LRUQgb3IgRUtFWUVYUElSRUQgd2lsbCBiZSByZXR1cm5lZCBpZiB0aGUgc2VhcmNoCisgICAgIGZhaWxzLiBPbiBzdWNjZXNzLCB0aGUgcmVzdWx0aW5nIGtleSBJRCB3aWxsIGJlIHJldHVybmVkLgorCisKKyAoKikgUmVhZCB0aGUgcGF5bG9hZCBkYXRhIGZyb20gYSBrZXk6CisKKwlsb25nIGtleWN0bChLRVlDVExfUkVBRCwga2V5X3NlcmlhbF90IGtleXJpbmcsIGNoYXIgKmJ1ZmZlciwKKwkJICAgIHNpemVfdCBidWZsZW4pOworCisgICAgIFRoaXMgZnVuY3Rpb24gYXR0ZW1wdHMgdG8gcmVhZCB0aGUgcGF5bG9hZCBkYXRhIGZyb20gdGhlIHNwZWNpZmllZCBrZXkKKyAgICAgaW50byB0aGUgYnVmZmVyLiBUaGUgcHJvY2VzcyBtdXN0IGhhdmUgcmVhZCBwZXJtaXNzaW9uIG9uIHRoZSBrZXkgdG8KKyAgICAgc3VjY2VlZC4KKworICAgICBUaGUgcmV0dXJuZWQgZGF0YSB3aWxsIGJlIHByb2Nlc3NlZCBmb3IgcHJlc2VudGF0aW9uIGJ5IHRoZSBrZXkgdHlwZS4gRm9yCisgICAgIGluc3RhbmNlLCBhIGtleXJpbmcgd2lsbCByZXR1cm4gYW4gYXJyYXkgb2Yga2V5X3NlcmlhbF90IGVudHJpZXMKKyAgICAgcmVwcmVzZW50aW5nIHRoZSBJRHMgb2YgYWxsIHRoZSBrZXlzIHRvIHdoaWNoIGl0IGlzIHN1YnNjcmliZWQuIFRoZSB1c2VyCisgICAgIGRlZmluZWQga2V5IHR5cGUgd2lsbCByZXR1cm4gaXRzIGRhdGEgYXMgaXMuIElmIGEga2V5IHR5cGUgZG9lcyBub3QKKyAgICAgaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24sIGVycm9yIEVPUE5PVFNVUFAgd2lsbCByZXN1bHQuCisKKyAgICAgQXMgbXVjaCBvZiB0aGUgZGF0YSBhcyBjYW4gYmUgZml0dGVkIGludG8gdGhlIGJ1ZmZlciB3aWxsIGJlIGNvcGllZCB0bworICAgICB1c2Vyc3BhY2UgaWYgdGhlIGJ1ZmZlciBwb2ludGVyIGlzIG5vdCBOVUxMLgorCisgICAgIE9uIGEgc3VjY2Vzc2Z1bCByZXR1cm4sIHRoZSBmdW5jdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gdGhlIGFtb3VudCBvZiBkYXRhCisgICAgIGF2YWlsYWJsZSByYXRoZXIgdGhhbiB0aGUgYW1vdW50IGNvcGllZC4KKworCisgKCopIEluc3RhbnRpYXRlIGEgcGFydGlhbGx5IGNvbnN0cnVjdGVkIGtleS4KKworCWxvbmcga2V5Y3RsKEtFWUNUTF9JTlNUQU5USUFURSwga2V5X3NlcmlhbF90IGtleSwKKwkJICAgIGNvbnN0IHZvaWQgKnBheWxvYWQsIHNpemVfdCBwbGVuLAorCQkgICAga2V5X3NlcmlhbF90IGtleXJpbmcpOworCWxvbmcga2V5Y3RsKEtFWUNUTF9JTlNUQU5USUFURV9JT1YsIGtleV9zZXJpYWxfdCBrZXksCisJCSAgICBjb25zdCBzdHJ1Y3QgaW92ZWMgKnBheWxvYWRfaW92LCB1bnNpZ25lZCBpb2MsCisJCSAgICBrZXlfc2VyaWFsX3Qga2V5cmluZyk7CisKKyAgICAgSWYgdGhlIGtlcm5lbCBjYWxscyBiYWNrIHRvIHVzZXJzcGFjZSB0byBjb21wbGV0ZSB0aGUgaW5zdGFudGlhdGlvbiBvZiBhCisgICAgIGtleSwgdXNlcnNwYWNlIHNob3VsZCB1c2UgdGhpcyBjYWxsIHRvIHN1cHBseSBkYXRhIGZvciB0aGUga2V5IGJlZm9yZSB0aGUKKyAgICAgaW52b2tlZCBwcm9jZXNzIHJldHVybnMsIG9yIGVsc2UgdGhlIGtleSB3aWxsIGJlIG1hcmtlZCBuZWdhdGl2ZQorICAgICBhdXRvbWF0aWNhbGx5LgorCisgICAgIFRoZSBwcm9jZXNzIG11c3QgaGF2ZSB3cml0ZSBhY2Nlc3Mgb24gdGhlIGtleSB0byBiZSBhYmxlIHRvIGluc3RhbnRpYXRlCisgICAgIGl0LCBhbmQgdGhlIGtleSBtdXN0IGJlIHVuaW5zdGFudGlhdGVkLgorCisgICAgIElmIGEga2V5cmluZyBpcyBzcGVjaWZpZWQgKG5vbi16ZXJvKSwgdGhlIGtleSB3aWxsIGFsc28gYmUgbGlua2VkIGludG8KKyAgICAgdGhhdCBrZXlyaW5nLCBob3dldmVyIGFsbCB0aGUgY29uc3RyYWludHMgYXBwbHlpbmcgaW4gS0VZQ1RMX0xJTksgYXBwbHkgaW4KKyAgICAgdGhpcyBjYXNlIHRvby4KKworICAgICBUaGUgcGF5bG9hZCBhbmQgcGxlbiBhcmd1bWVudHMgZGVzY3JpYmUgdGhlIHBheWxvYWQgZGF0YSBhcyBmb3IgYWRkX2tleSgpLgorCisgICAgIFRoZSBwYXlsb2FkX2lvdiBhbmQgaW9jIGFyZ3VtZW50cyBkZXNjcmliZSB0aGUgcGF5bG9hZCBkYXRhIGluIGFuIGlvdmVjCisgICAgIGFycmF5IGluc3RlYWQgb2YgYSBzaW5nbGUgYnVmZmVyLgorCisKKyAoKikgTmVnYXRpdmVseSBpbnN0YW50aWF0ZSBhIHBhcnRpYWxseSBjb25zdHJ1Y3RlZCBrZXkuCisKKwlsb25nIGtleWN0bChLRVlDVExfTkVHQVRFLCBrZXlfc2VyaWFsX3Qga2V5LAorCQkgICAgdW5zaWduZWQgdGltZW91dCwga2V5X3NlcmlhbF90IGtleXJpbmcpOworCWxvbmcga2V5Y3RsKEtFWUNUTF9SRUpFQ1QsIGtleV9zZXJpYWxfdCBrZXksCisJCSAgICB1bnNpZ25lZCB0aW1lb3V0LCB1bnNpZ25lZCBlcnJvciwga2V5X3NlcmlhbF90IGtleXJpbmcpOworCisgICAgIElmIHRoZSBrZXJuZWwgY2FsbHMgYmFjayB0byB1c2Vyc3BhY2UgdG8gY29tcGxldGUgdGhlIGluc3RhbnRpYXRpb24gb2YgYQorICAgICBrZXksIHVzZXJzcGFjZSBzaG91bGQgdXNlIHRoaXMgY2FsbCBtYXJrIHRoZSBrZXkgYXMgbmVnYXRpdmUgYmVmb3JlIHRoZQorICAgICBpbnZva2VkIHByb2Nlc3MgcmV0dXJucyBpZiBpdCBpcyB1bmFibGUgdG8gZnVsZmlsbCB0aGUgcmVxdWVzdC4KKworICAgICBUaGUgcHJvY2VzcyBtdXN0IGhhdmUgd3JpdGUgYWNjZXNzIG9uIHRoZSBrZXkgdG8gYmUgYWJsZSB0byBpbnN0YW50aWF0ZQorICAgICBpdCwgYW5kIHRoZSBrZXkgbXVzdCBiZSB1bmluc3RhbnRpYXRlZC4KKworICAgICBJZiBhIGtleXJpbmcgaXMgc3BlY2lmaWVkIChub24temVybyksIHRoZSBrZXkgd2lsbCBhbHNvIGJlIGxpbmtlZCBpbnRvCisgICAgIHRoYXQga2V5cmluZywgaG93ZXZlciBhbGwgdGhlIGNvbnN0cmFpbnRzIGFwcGx5aW5nIGluIEtFWUNUTF9MSU5LIGFwcGx5IGluCisgICAgIHRoaXMgY2FzZSB0b28uCisKKyAgICAgSWYgdGhlIGtleSBpcyByZWplY3RlZCwgZnV0dXJlIHNlYXJjaGVzIGZvciBpdCB3aWxsIHJldHVybiB0aGUgc3BlY2lmaWVkCisgICAgIGVycm9yIGNvZGUgdW50aWwgdGhlIHJlamVjdGVkIGtleSBleHBpcmVzLiAgTmVnYXRpbmcgdGhlIGtleSBpcyB0aGUgc2FtZQorICAgICBhcyByZWplY3RpbmcgdGhlIGtleSB3aXRoIEVOT0tFWSBhcyB0aGUgZXJyb3IgY29kZS4KKworCisgKCopIFNldCB0aGUgZGVmYXVsdCByZXF1ZXN0LWtleSBkZXN0aW5hdGlvbiBrZXlyaW5nLgorCisJbG9uZyBrZXljdGwoS0VZQ1RMX1NFVF9SRVFLRVlfS0VZUklORywgaW50IHJlcWtleV9kZWZsKTsKKworICAgICBUaGlzIHNldHMgdGhlIGRlZmF1bHQga2V5cmluZyB0byB3aGljaCBpbXBsaWNpdGx5IHJlcXVlc3RlZCBrZXlzIHdpbGwgYmUKKyAgICAgYXR0YWNoZWQgZm9yIHRoaXMgdGhyZWFkLiByZXFrZXlfZGVmbCBzaG91bGQgYmUgb25lIG9mIHRoZXNlIGNvbnN0YW50czoKKworCUNPTlNUQU5UCQkJCVZBTFVFCU5FVyBERUZBVUxUIEtFWVJJTkcKKwk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQk9PT09PT0JPT09PT09PT09PT09PT09PT09PT09PT0KKwlLRVlfUkVRS0VZX0RFRkxfTk9fQ0hBTkdFCQktMQlObyBjaGFuZ2UKKwlLRVlfUkVRS0VZX0RFRkxfREVGQVVMVAkJCTAJRGVmYXVsdFsxXQorCUtFWV9SRVFLRVlfREVGTF9USFJFQURfS0VZUklORwkJMQlUaHJlYWQga2V5cmluZworCUtFWV9SRVFLRVlfREVGTF9QUk9DRVNTX0tFWVJJTkcJCTIJUHJvY2VzcyBrZXlyaW5nCisJS0VZX1JFUUtFWV9ERUZMX1NFU1NJT05fS0VZUklORwkJMwlTZXNzaW9uIGtleXJpbmcKKwlLRVlfUkVRS0VZX0RFRkxfVVNFUl9LRVlSSU5HCQk0CVVzZXIga2V5cmluZworCUtFWV9SRVFLRVlfREVGTF9VU0VSX1NFU1NJT05fS0VZUklORwk1CVVzZXIgc2Vzc2lvbiBrZXlyaW5nCisJS0VZX1JFUUtFWV9ERUZMX0dST1VQX0tFWVJJTkcJCTYJR3JvdXAga2V5cmluZworCisgICAgIFRoZSBvbGQgZGVmYXVsdCB3aWxsIGJlIHJldHVybmVkIGlmIHN1Y2Nlc3NmdWwgYW5kIGVycm9yIEVJTlZBTCB3aWxsIGJlCisgICAgIHJldHVybmVkIGlmIHJlcWtleV9kZWZsIGlzIG5vdCBvbmUgb2YgdGhlIGFib3ZlIHZhbHVlcy4KKworICAgICBUaGUgZGVmYXVsdCBrZXlyaW5nIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBrZXlyaW5nIGluZGljYXRlZCB0byB0aGUKKyAgICAgcmVxdWVzdF9rZXkoKSBzeXN0ZW0gY2FsbC4KKworICAgICBOb3RlIHRoYXQgdGhpcyBzZXR0aW5nIGlzIGluaGVyaXRlZCBhY3Jvc3MgZm9yay9leGVjLgorCisgICAgIFsxXSBUaGUgZGVmYXVsdCBpczogdGhlIHRocmVhZCBrZXlyaW5nIGlmIHRoZXJlIGlzIG9uZSwgb3RoZXJ3aXNlCisgICAgIHRoZSBwcm9jZXNzIGtleXJpbmcgaWYgdGhlcmUgaXMgb25lLCBvdGhlcndpc2UgdGhlIHNlc3Npb24ga2V5cmluZyBpZgorICAgICB0aGVyZSBpcyBvbmUsIG90aGVyd2lzZSB0aGUgdXNlciBkZWZhdWx0IHNlc3Npb24ga2V5cmluZy4KKworCisgKCopIFNldCB0aGUgdGltZW91dCBvbiBhIGtleS4KKworCWxvbmcga2V5Y3RsKEtFWUNUTF9TRVRfVElNRU9VVCwga2V5X3NlcmlhbF90IGtleSwgdW5zaWduZWQgdGltZW91dCk7CisKKyAgICAgVGhpcyBzZXRzIG9yIGNsZWFycyB0aGUgdGltZW91dCBvbiBhIGtleS4gVGhlIHRpbWVvdXQgY2FuIGJlIDAgdG8gY2xlYXIKKyAgICAgdGhlIHRpbWVvdXQgb3IgYSBudW1iZXIgb2Ygc2Vjb25kcyB0byBzZXQgdGhlIGV4cGlyeSB0aW1lIHRoYXQgZmFyIGludG8KKyAgICAgdGhlIGZ1dHVyZS4KKworICAgICBUaGUgcHJvY2VzcyBtdXN0IGhhdmUgYXR0cmlidXRlIG1vZGlmaWNhdGlvbiBhY2Nlc3Mgb24gYSBrZXkgdG8gc2V0IGl0cworICAgICB0aW1lb3V0LiBUaW1lb3V0cyBtYXkgbm90IGJlIHNldCB3aXRoIHRoaXMgZnVuY3Rpb24gb24gbmVnYXRpdmUsIHJldm9rZWQKKyAgICAgb3IgZXhwaXJlZCBrZXlzLgorCisKKyAoKikgQXNzdW1lIHRoZSBhdXRob3JpdHkgZ3JhbnRlZCB0byBpbnN0YW50aWF0ZSBhIGtleQorCisJbG9uZyBrZXljdGwoS0VZQ1RMX0FTU1VNRV9BVVRIT1JJVFksIGtleV9zZXJpYWxfdCBrZXkpOworCisgICAgIFRoaXMgYXNzdW1lcyBvciBkaXZlc3RzIHRoZSBhdXRob3JpdHkgcmVxdWlyZWQgdG8gaW5zdGFudGlhdGUgdGhlCisgICAgIHNwZWNpZmllZCBrZXkuIEF1dGhvcml0eSBjYW4gb25seSBiZSBhc3N1bWVkIGlmIHRoZSB0aHJlYWQgaGFzIHRoZQorICAgICBhdXRob3Jpc2F0aW9uIGtleSBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBrZXkgaW4gaXRzIGtleXJpbmdzCisgICAgIHNvbWV3aGVyZS4KKworICAgICBPbmNlIGF1dGhvcml0eSBpcyBhc3N1bWVkLCBzZWFyY2hlcyBmb3Iga2V5cyB3aWxsIGFsc28gc2VhcmNoIHRoZQorICAgICByZXF1ZXN0ZXIncyBrZXlyaW5ncyB1c2luZyB0aGUgcmVxdWVzdGVyJ3Mgc2VjdXJpdHkgbGFiZWwsIFVJRCwgR0lEIGFuZAorICAgICBncm91cHMuCisKKyAgICAgSWYgdGhlIHJlcXVlc3RlZCBhdXRob3JpdHkgaXMgdW5hdmFpbGFibGUsIGVycm9yIEVQRVJNIHdpbGwgYmUgcmV0dXJuZWQsCisgICAgIGxpa2V3aXNlIGlmIHRoZSBhdXRob3JpdHkgaGFzIGJlZW4gcmV2b2tlZCBiZWNhdXNlIHRoZSB0YXJnZXQga2V5IGlzCisgICAgIGFscmVhZHkgaW5zdGFudGlhdGVkLgorCisgICAgIElmIHRoZSBzcGVjaWZpZWQga2V5IGlzIDAsIHRoZW4gYW55IGFzc3VtZWQgYXV0aG9yaXR5IHdpbGwgYmUgZGl2ZXN0ZWQuCisKKyAgICAgVGhlIGFzc3VtZWQgYXV0aG9yaXRhdGl2ZSBrZXkgaXMgaW5oZXJpdGVkIGFjcm9zcyBmb3JrIGFuZCBleGVjLgorCisKKyAoKikgR2V0IHRoZSBMU00gc2VjdXJpdHkgY29udGV4dCBhdHRhY2hlZCB0byBhIGtleS4KKworCWxvbmcga2V5Y3RsKEtFWUNUTF9HRVRfU0VDVVJJVFksIGtleV9zZXJpYWxfdCBrZXksIGNoYXIgKmJ1ZmZlciwKKwkJICAgIHNpemVfdCBidWZsZW4pCisKKyAgICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgc3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGUgTFNNIHNlY3VyaXR5IGNvbnRleHQKKyAgICAgYXR0YWNoZWQgdG8gYSBrZXkgaW4gdGhlIGJ1ZmZlciBwcm92aWRlZC4KKworICAgICBVbmxlc3MgdGhlcmUncyBhbiBlcnJvciwgaXQgYWx3YXlzIHJldHVybnMgdGhlIGFtb3VudCBvZiBkYXRhIGl0IGNvdWxkCisgICAgIHByb2R1Y2UsIGV2ZW4gaWYgdGhhdCdzIHRvbyBiaWcgZm9yIHRoZSBidWZmZXIsIGJ1dCBpdCB3b24ndCBjb3B5IG1vcmUKKyAgICAgdGhhbiByZXF1ZXN0ZWQgdG8gdXNlcnNwYWNlLiBJZiB0aGUgYnVmZmVyIHBvaW50ZXIgaXMgTlVMTCB0aGVuIG5vIGNvcHkKKyAgICAgd2lsbCB0YWtlIHBsYWNlLgorCisgICAgIEEgTlVMIGNoYXJhY3RlciBpcyBpbmNsdWRlZCBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgaWYgdGhlIGJ1ZmZlciBpcworICAgICBzdWZmaWNpZW50bHkgYmlnLiAgVGhpcyBpcyBpbmNsdWRlZCBpbiB0aGUgcmV0dXJuZWQgY291bnQuICBJZiBubyBMU00gaXMKKyAgICAgaW4gZm9yY2UgdGhlbiBhbiBlbXB0eSBzdHJpbmcgd2lsbCBiZSByZXR1cm5lZC4KKworICAgICBBIHByb2Nlc3MgbXVzdCBoYXZlIHZpZXcgcGVybWlzc2lvbiBvbiB0aGUga2V5IGZvciB0aGlzIGZ1bmN0aW9uIHRvIGJlCisgICAgIHN1Y2Nlc3NmdWwuCisKKworICgqKSBJbnN0YWxsIHRoZSBjYWxsaW5nIHByb2Nlc3MncyBzZXNzaW9uIGtleXJpbmcgb24gaXRzIHBhcmVudC4KKworCWxvbmcga2V5Y3RsKEtFWUNUTF9TRVNTSU9OX1RPX1BBUkVOVCk7CisKKyAgICAgVGhpcyBmdW5jdGlvbnMgYXR0ZW1wdHMgdG8gaW5zdGFsbCB0aGUgY2FsbGluZyBwcm9jZXNzJ3Mgc2Vzc2lvbiBrZXlyaW5nCisgICAgIG9uIHRvIHRoZSBjYWxsaW5nIHByb2Nlc3MncyBwYXJlbnQsIHJlcGxhY2luZyB0aGUgcGFyZW50J3MgY3VycmVudCBzZXNzaW9uCisgICAgIGtleXJpbmcuCisKKyAgICAgVGhlIGNhbGxpbmcgcHJvY2VzcyBtdXN0IGhhdmUgdGhlIHNhbWUgb3duZXJzaGlwIGFzIGl0cyBwYXJlbnQsIHRoZQorICAgICBrZXlyaW5nIG11c3QgaGF2ZSB0aGUgc2FtZSBvd25lcnNoaXAgYXMgdGhlIGNhbGxpbmcgcHJvY2VzcywgdGhlIGNhbGxpbmcKKyAgICAgcHJvY2VzcyBtdXN0IGhhdmUgTElOSyBwZXJtaXNzaW9uIG9uIHRoZSBrZXlyaW5nIGFuZCB0aGUgYWN0aXZlIExTTSBtb2R1bGUKKyAgICAgbXVzdG4ndCBkZW55IHBlcm1pc3Npb24sIG90aGVyd2lzZSBlcnJvciBFUEVSTSB3aWxsIGJlIHJldHVybmVkLgorCisgICAgIEVycm9yIEVOT01FTSB3aWxsIGJlIHJldHVybmVkIGlmIHRoZXJlIHdhcyBpbnN1ZmZpY2llbnQgbWVtb3J5IHRvIGNvbXBsZXRlCisgICAgIHRoZSBvcGVyYXRpb24sIG90aGVyd2lzZSAwIHdpbGwgYmUgcmV0dXJuZWQgdG8gaW5kaWNhdGUgc3VjY2Vzcy4KKworICAgICBUaGUga2V5cmluZyB3aWxsIGJlIHJlcGxhY2VkIG5leHQgdGltZSB0aGUgcGFyZW50IHByb2Nlc3MgbGVhdmVzIHRoZQorICAgICBrZXJuZWwgYW5kIHJlc3VtZXMgZXhlY3V0aW5nIHVzZXJzcGFjZS4KKworCisgKCopIEludmFsaWRhdGUgYSBrZXkuCisKKwlsb25nIGtleWN0bChLRVlDVExfSU5WQUxJREFURSwga2V5X3NlcmlhbF90IGtleSk7CisKKyAgICAgVGhpcyBmdW5jdGlvbiBtYXJrcyBhIGtleSBhcyBiZWluZyBpbnZhbGlkYXRlZCBhbmQgdGhlbiB3YWtlcyB1cCB0aGUKKyAgICAgZ2FyYmFnZSBjb2xsZWN0b3IuICBUaGUgZ2FyYmFnZSBjb2xsZWN0b3IgaW1tZWRpYXRlbHkgcmVtb3ZlcyBpbnZhbGlkYXRlZAorICAgICBrZXlzIGZyb20gYWxsIGtleXJpbmdzIGFuZCBkZWxldGVzIHRoZSBrZXkgd2hlbiBpdHMgcmVmZXJlbmNlIGNvdW50CisgICAgIHJlYWNoZXMgemVyby4KKworICAgICBLZXlzIHRoYXQgYXJlIG1hcmtlZCBpbnZhbGlkYXRlZCBiZWNvbWUgaW52aXNpYmxlIHRvIG5vcm1hbCBrZXkgb3BlcmF0aW9ucworICAgICBpbW1lZGlhdGVseSwgdGhvdWdoIHRoZXkgYXJlIHN0aWxsIHZpc2libGUgaW4gL3Byb2Mva2V5cyB1bnRpbCBkZWxldGVkCisgICAgICh0aGV5J3JlIG1hcmtlZCB3aXRoIGFuICdpJyBmbGFnKS4KKworICAgICBBIHByb2Nlc3MgbXVzdCBoYXZlIHNlYXJjaCBwZXJtaXNzaW9uIG9uIHRoZSBrZXkgZm9yIHRoaXMgZnVuY3Rpb24gdG8gYmUKKyAgICAgc3VjY2Vzc2Z1bC4KKworCis9PT09PT09PT09PT09PT0KK0tFUk5FTCBTRVJWSUNFUworPT09PT09PT09PT09PT09CisKK1RoZSBrZXJuZWwgc2VydmljZXMgZm9yIGtleSBtYW5hZ2VtZW50IGFyZSBmYWlybHkgc2ltcGxlIHRvIGRlYWwgd2l0aC4gVGhleSBjYW4KK2JlIGJyb2tlbiBkb3duIGludG8gdHdvIGFyZWFzOiBrZXlzIGFuZCBrZXkgdHlwZXMuCisKK0RlYWxpbmcgd2l0aCBrZXlzIGlzIGZhaXJseSBzdHJhaWdodGZvcndhcmQuIEZpcnN0bHksIHRoZSBrZXJuZWwgc2VydmljZQorcmVnaXN0ZXJzIGl0cyB0eXBlLCB0aGVuIGl0IHNlYXJjaGVzIGZvciBhIGtleSBvZiB0aGF0IHR5cGUuIEl0IHNob3VsZCByZXRhaW4KK3RoZSBrZXkgYXMgbG9uZyBhcyBpdCBoYXMgbmVlZCBvZiBpdCwgYW5kIHRoZW4gaXQgc2hvdWxkIHJlbGVhc2UgaXQuIEZvciBhCitmaWxlc3lzdGVtIG9yIGRldmljZSBmaWxlLCBhIHNlYXJjaCB3b3VsZCBwcm9iYWJseSBiZSBwZXJmb3JtZWQgZHVyaW5nIHRoZSBvcGVuCitjYWxsLCBhbmQgdGhlIGtleSByZWxlYXNlZCB1cG9uIGNsb3NlLiBIb3cgdG8gZGVhbCB3aXRoIGNvbmZsaWN0aW5nIGtleXMgZHVlIHRvCit0d28gZGlmZmVyZW50IHVzZXJzIG9wZW5pbmcgdGhlIHNhbWUgZmlsZSBpcyBsZWZ0IHRvIHRoZSBmaWxlc3lzdGVtIGF1dGhvciB0bworc29sdmUuCisKK1RvIGFjY2VzcyB0aGUga2V5IG1hbmFnZXIsIHRoZSBmb2xsb3dpbmcgaGVhZGVyIG11c3QgYmUgI2luY2x1ZGVkOgorCisJPGxpbnV4L2tleS5oPgorCitTcGVjaWZpYyBrZXkgdHlwZXMgc2hvdWxkIGhhdmUgYSBoZWFkZXIgZmlsZSB1bmRlciBpbmNsdWRlL2tleXMvIHRoYXQgc2hvdWxkIGJlCit1c2VkIHRvIGFjY2VzcyB0aGF0IHR5cGUuICBGb3Iga2V5cyBvZiB0eXBlICJ1c2VyIiwgZm9yIGV4YW1wbGUsIHRoYXQgd291bGQgYmU6CisKKwk8a2V5cy91c2VyLXR5cGUuaD4KKworTm90ZSB0aGF0IHRoZXJlIGFyZSB0d28gZGlmZmVyZW50IHR5cGVzIG9mIHBvaW50ZXJzIHRvIGtleXMgdGhhdCBtYXkgYmUKK2VuY291bnRlcmVkOgorCisgKCopIHN0cnVjdCBrZXkgKgorCisgICAgIFRoaXMgc2ltcGx5IHBvaW50cyB0byB0aGUga2V5IHN0cnVjdHVyZSBpdHNlbGYuIEtleSBzdHJ1Y3R1cmVzIHdpbGwgYmUgYXQKKyAgICAgbGVhc3QgZm91ci1ieXRlIGFsaWduZWQuCisKKyAoKikga2V5X3JlZl90CisKKyAgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGEgc3RydWN0IGtleSAqLCBidXQgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBpcyBzZXQKKyAgICAgaWYgdGhlIGNhbGxlciAicG9zc2Vzc2VzIiB0aGUga2V5LiBCeSAicG9zc2Vzc2lvbiIgaXQgaXMgbWVhbnQgdGhhdCB0aGUKKyAgICAgY2FsbGluZyBwcm9jZXNzZXMgaGFzIGEgc2VhcmNoYWJsZSBsaW5rIHRvIHRoZSBrZXkgZnJvbSBvbmUgb2YgaXRzCisgICAgIGtleXJpbmdzLiBUaGVyZSBhcmUgdGhyZWUgZnVuY3Rpb25zIGZvciBkZWFsaW5nIHdpdGggdGhlc2U6CisKKwlrZXlfcmVmX3QgbWFrZV9rZXlfcmVmKGNvbnN0IHN0cnVjdCBrZXkgKmtleSwgYm9vbCBwb3NzZXNzaW9uKTsKKworCXN0cnVjdCBrZXkgKmtleV9yZWZfdG9fcHRyKGNvbnN0IGtleV9yZWZfdCBrZXlfcmVmKTsKKworCWJvb2wgaXNfa2V5X3Bvc3Nlc3NlZChjb25zdCBrZXlfcmVmX3Qga2V5X3JlZik7CisKKyAgICAgVGhlIGZpcnN0IGZ1bmN0aW9uIGNvbnN0cnVjdHMgYSBrZXkgcmVmZXJlbmNlIGZyb20gYSBrZXkgcG9pbnRlciBhbmQKKyAgICAgcG9zc2Vzc2lvbiBpbmZvcm1hdGlvbiAod2hpY2ggbXVzdCBiZSB0cnVlIG9yIGZhbHNlKS4KKworICAgICBUaGUgc2Vjb25kIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUga2V5IHBvaW50ZXIgZnJvbSBhIHJlZmVyZW5jZSBhbmQgdGhlCisgICAgIHRoaXJkIHJldHJpZXZlcyB0aGUgcG9zc2Vzc2lvbiBmbGFnLgorCitXaGVuIGFjY2Vzc2luZyBhIGtleSdzIHBheWxvYWQgY29udGVudHMsIGNlcnRhaW4gcHJlY2F1dGlvbnMgbXVzdCBiZSB0YWtlbiB0bworcHJldmVudCBhY2Nlc3MgdnMgbW9kaWZpY2F0aW9uIHJhY2VzLiBTZWUgdGhlIHNlY3Rpb24gIk5vdGVzIG9uIGFjY2Vzc2luZworcGF5bG9hZCBjb250ZW50cyIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKygqKSBUbyBzZWFyY2ggZm9yIGEga2V5LCBjYWxsOgorCisJc3RydWN0IGtleSAqcmVxdWVzdF9rZXkoY29uc3Qgc3RydWN0IGtleV90eXBlICp0eXBlLAorCQkJCWNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLAorCQkJCWNvbnN0IGNoYXIgKmNhbGxvdXRfaW5mbyk7CisKKyAgICBUaGlzIGlzIHVzZWQgdG8gcmVxdWVzdCBhIGtleSBvciBrZXlyaW5nIHdpdGggYSBkZXNjcmlwdGlvbiB0aGF0IG1hdGNoZXMKKyAgICB0aGUgZGVzY3JpcHRpb24gc3BlY2lmaWVkIGFjY29yZGluZyB0byB0aGUga2V5IHR5cGUncyBtYXRjaF9wcmVwYXJzZSgpCisgICAgbWV0aG9kLiBUaGlzIHBlcm1pdHMgYXBwcm94aW1hdGUgbWF0Y2hpbmcgdG8gb2NjdXIuIElmIGNhbGxvdXRfc3RyaW5nIGlzCisgICAgbm90IE5VTEwsIHRoZW4gL3NiaW4vcmVxdWVzdC1rZXkgd2lsbCBiZSBpbnZva2VkIGluIGFuIGF0dGVtcHQgdG8gb2J0YWluCisgICAgdGhlIGtleSBmcm9tIHVzZXJzcGFjZS4gSW4gdGhhdCBjYXNlLCBjYWxsb3V0X3N0cmluZyB3aWxsIGJlIHBhc3NlZCBhcyBhbgorICAgIGFyZ3VtZW50IHRvIHRoZSBwcm9ncmFtLgorCisgICAgU2hvdWxkIHRoZSBmdW5jdGlvbiBmYWlsIGVycm9yIEVOT0tFWSwgRUtFWUVYUElSRUQgb3IgRUtFWVJFVk9LRUQgd2lsbCBiZQorICAgIHJldHVybmVkLgorCisgICAgSWYgc3VjY2Vzc2Z1bCwgdGhlIGtleSB3aWxsIGhhdmUgYmVlbiBhdHRhY2hlZCB0byB0aGUgZGVmYXVsdCBrZXlyaW5nIGZvcgorICAgIGltcGxpY2l0bHkgb2J0YWluZWQgcmVxdWVzdC1rZXkga2V5cywgYXMgc2V0IGJ5IEtFWUNUTF9TRVRfUkVRS0VZX0tFWVJJTkcuCisKKyAgICBTZWUgYWxzbyBEb2N1bWVudGF0aW9uL3NlY3VyaXR5L2tleXMtcmVxdWVzdC1rZXkudHh0LgorCisKKygqKSBUbyBzZWFyY2ggZm9yIGEga2V5LCBwYXNzaW5nIGF1eGlsaWFyeSBkYXRhIHRvIHRoZSB1cGNhbGxlciwgY2FsbDoKKworCXN0cnVjdCBrZXkgKnJlcXVlc3Rfa2V5X3dpdGhfYXV4ZGF0YShjb25zdCBzdHJ1Y3Qga2V5X3R5cGUgKnR5cGUsCisJCQkJCSAgICAgY29uc3QgY2hhciAqZGVzY3JpcHRpb24sCisJCQkJCSAgICAgY29uc3Qgdm9pZCAqY2FsbG91dF9pbmZvLAorCQkJCQkgICAgIHNpemVfdCBjYWxsb3V0X2xlbiwKKwkJCQkJICAgICB2b2lkICphdXgpOworCisgICAgVGhpcyBpcyBpZGVudGljYWwgdG8gcmVxdWVzdF9rZXkoKSwgZXhjZXB0IHRoYXQgdGhlIGF1eGlsaWFyeSBkYXRhIGlzCisgICAgcGFzc2VkIHRvIHRoZSBrZXlfdHlwZS0+cmVxdWVzdF9rZXkoKSBvcCBpZiBpdCBleGlzdHMsIGFuZCB0aGUgY2FsbG91dF9pbmZvCisgICAgaXMgYSBibG9iIG9mIGxlbmd0aCBjYWxsb3V0X2xlbiwgaWYgZ2l2ZW4gKHRoZSBsZW5ndGggbWF5IGJlIDApLgorCisKKygqKSBBIGtleSBjYW4gYmUgcmVxdWVzdGVkIGFzeW5jaHJvbm91c2x5IGJ5IGNhbGxpbmcgb25lIG9mOgorCisJc3RydWN0IGtleSAqcmVxdWVzdF9rZXlfYXN5bmMoY29uc3Qgc3RydWN0IGtleV90eXBlICp0eXBlLAorCQkJCSAgICAgIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLAorCQkJCSAgICAgIGNvbnN0IHZvaWQgKmNhbGxvdXRfaW5mbywKKwkJCQkgICAgICBzaXplX3QgY2FsbG91dF9sZW4pOworCisgICAgb3I6CisKKwlzdHJ1Y3Qga2V5ICpyZXF1ZXN0X2tleV9hc3luY193aXRoX2F1eGRhdGEoY29uc3Qgc3RydWN0IGtleV90eXBlICp0eXBlLAorCQkJCQkJICAgY29uc3QgY2hhciAqZGVzY3JpcHRpb24sCisJCQkJCQkgICBjb25zdCBjaGFyICpjYWxsb3V0X2luZm8sCisJCQkJCSAgICAgCSAgIHNpemVfdCBjYWxsb3V0X2xlbiwKKwkJCQkJICAgICAJICAgdm9pZCAqYXV4KTsKKworICAgIHdoaWNoIGFyZSBhc3luY2hyb25vdXMgZXF1aXZhbGVudHMgb2YgcmVxdWVzdF9rZXkoKSBhbmQKKyAgICByZXF1ZXN0X2tleV93aXRoX2F1eGRhdGEoKSByZXNwZWN0aXZlbHkuCisKKyAgICBUaGVzZSB0d28gZnVuY3Rpb25zIHJldHVybiB3aXRoIHRoZSBrZXkgcG90ZW50aWFsbHkgc3RpbGwgdW5kZXIKKyAgICBjb25zdHJ1Y3Rpb24uICBUbyB3YWl0IGZvciBjb25zdHJ1Y3Rpb24gY29tcGxldGlvbiwgdGhlIGZvbGxvd2luZyBzaG91bGQgYmUKKyAgICBjYWxsZWQ6CisKKwlpbnQgd2FpdF9mb3Jfa2V5X2NvbnN0cnVjdGlvbihzdHJ1Y3Qga2V5ICprZXksIGJvb2wgaW50cik7CisKKyAgICBUaGUgZnVuY3Rpb24gd2lsbCB3YWl0IGZvciB0aGUga2V5IHRvIGZpbmlzaCBiZWluZyBjb25zdHJ1Y3RlZCBhbmQgdGhlbgorICAgIGludm9rZXMga2V5X3ZhbGlkYXRlKCkgdG8gcmV0dXJuIGFuIGFwcHJvcHJpYXRlIHZhbHVlIHRvIGluZGljYXRlIHRoZSBzdGF0ZQorICAgIG9mIHRoZSBrZXkgKDAgaW5kaWNhdGVzIHRoZSBrZXkgaXMgdXNhYmxlKS4KKworICAgIElmIGludHIgaXMgdHJ1ZSwgdGhlbiB0aGUgd2FpdCBjYW4gYmUgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwsIGluIHdoaWNoCisgICAgY2FzZSBlcnJvciBFUkVTVEFSVFNZUyB3aWxsIGJlIHJldHVybmVkLgorCisKKygqKSBXaGVuIGl0IGlzIG5vIGxvbmdlciByZXF1aXJlZCwgdGhlIGtleSBzaG91bGQgYmUgcmVsZWFzZWQgdXNpbmc6CisKKwl2b2lkIGtleV9wdXQoc3RydWN0IGtleSAqa2V5KTsKKworICAgIE9yOgorCisJdm9pZCBrZXlfcmVmX3B1dChrZXlfcmVmX3Qga2V5X3JlZik7CisKKyAgICBUaGVzZSBjYW4gYmUgY2FsbGVkIGZyb20gaW50ZXJydXB0IGNvbnRleHQuIElmIENPTkZJR19LRVlTIGlzIG5vdCBzZXQgdGhlbgorICAgIHRoZSBhcmd1bWVudCB3aWxsIG5vdCBiZSBwYXJzZWQuCisKKworKCopIEV4dHJhIHJlZmVyZW5jZXMgY2FuIGJlIG1hZGUgdG8gYSBrZXkgYnkgY2FsbGluZyBvbmUgb2YgdGhlIGZvbGxvd2luZworICAgIGZ1bmN0aW9uczoKKworCXN0cnVjdCBrZXkgKl9fa2V5X2dldChzdHJ1Y3Qga2V5ICprZXkpOworCXN0cnVjdCBrZXkgKmtleV9nZXQoc3RydWN0IGtleSAqa2V5KTsKKworICAgIEtleXMgc28gcmVmZXJlbmNlcyB3aWxsIG5lZWQgdG8gYmUgZGlzcG9zZWQgb2YgYnkgY2FsbGluZyBrZXlfcHV0KCkgd2hlbgorICAgIHRoZXkndmUgYmVlbiBmaW5pc2hlZCB3aXRoLiAgVGhlIGtleSBwb2ludGVyIHBhc3NlZCBpbiB3aWxsIGJlIHJldHVybmVkLgorCisgICAgSW4gdGhlIGNhc2Ugb2Yga2V5X2dldCgpLCBpZiB0aGUgcG9pbnRlciBpcyBOVUxMIG9yIENPTkZJR19LRVlTIGlzIG5vdCBzZXQKKyAgICB0aGVuIHRoZSBrZXkgd2lsbCBub3QgYmUgZGVyZWZlcmVuY2VkIGFuZCBubyBpbmNyZW1lbnQgd2lsbCB0YWtlIHBsYWNlLgorCisKKygqKSBBIGtleSdzIHNlcmlhbCBudW1iZXIgY2FuIGJlIG9idGFpbmVkIGJ5IGNhbGxpbmc6CisKKwlrZXlfc2VyaWFsX3Qga2V5X3NlcmlhbChzdHJ1Y3Qga2V5ICprZXkpOworCisgICAgSWYga2V5IGlzIE5VTEwgb3IgaWYgQ09ORklHX0tFWVMgaXMgbm90IHNldCB0aGVuIDAgd2lsbCBiZSByZXR1cm5lZCAoaW4gdGhlCisgICAgbGF0dGVyIGNhc2Ugd2l0aG91dCBwYXJzaW5nIHRoZSBhcmd1bWVudCkuCisKKworKCopIElmIGEga2V5cmluZyB3YXMgZm91bmQgaW4gdGhlIHNlYXJjaCwgdGhpcyBjYW4gYmUgZnVydGhlciBzZWFyY2hlZCBieToKKworCWtleV9yZWZfdCBrZXlyaW5nX3NlYXJjaChrZXlfcmVmX3Qga2V5cmluZ19yZWYsCisJCQkJIGNvbnN0IHN0cnVjdCBrZXlfdHlwZSAqdHlwZSwKKwkJCQkgY29uc3QgY2hhciAqZGVzY3JpcHRpb24pCisKKyAgICBUaGlzIHNlYXJjaGVzIHRoZSBrZXlyaW5nIHRyZWUgc3BlY2lmaWVkIGZvciBhIG1hdGNoaW5nIGtleS4gRXJyb3IgRU5PS0VZCisgICAgaXMgcmV0dXJuZWQgdXBvbiBmYWlsdXJlICh1c2UgSVNfRVJSL1BUUl9FUlIgdG8gZGV0ZXJtaW5lKS4gSWYgc3VjY2Vzc2Z1bCwKKyAgICB0aGUgcmV0dXJuZWQga2V5IHdpbGwgbmVlZCB0byBiZSByZWxlYXNlZC4KKworICAgIFRoZSBwb3NzZXNzaW9uIGF0dHJpYnV0ZSBmcm9tIHRoZSBrZXlyaW5nIHJlZmVyZW5jZSBpcyB1c2VkIHRvIGNvbnRyb2wKKyAgICBhY2Nlc3MgdGhyb3VnaCB0aGUgcGVybWlzc2lvbnMgbWFzayBhbmQgaXMgcHJvcGFnYXRlZCB0byB0aGUgcmV0dXJuZWQga2V5CisgICAgcmVmZXJlbmNlIHBvaW50ZXIgaWYgc3VjY2Vzc2Z1bC4KKworCisoKikgQSBrZXlyaW5nIGNhbiBiZSBjcmVhdGVkIGJ5OgorCisJc3RydWN0IGtleSAqa2V5cmluZ19hbGxvYyhjb25zdCBjaGFyICpkZXNjcmlwdGlvbiwgdWlkX3QgdWlkLCBnaWRfdCBnaWQsCisJCQkJICBjb25zdCBzdHJ1Y3QgY3JlZCAqY3JlZCwKKwkJCQkgIGtleV9wZXJtX3QgcGVybSwKKwkJCQkgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsCisJCQkJICBzdHJ1Y3Qga2V5ICpkZXN0KTsKKworICAgIFRoaXMgY3JlYXRlcyBhIGtleXJpbmcgd2l0aCB0aGUgZ2l2ZW4gYXR0cmlidXRlcyBhbmQgcmV0dXJucyBpdC4gIElmIGRlc3QKKyAgICBpcyBub3QgTlVMTCwgdGhlIG5ldyBrZXlyaW5nIHdpbGwgYmUgbGlua2VkIGludG8gdGhlIGtleXJpbmcgdG8gd2hpY2ggaXQKKyAgICBwb2ludHMuICBObyBwZXJtaXNzaW9uIGNoZWNrcyBhcmUgbWFkZSB1cG9uIHRoZSBkZXN0aW5hdGlvbiBrZXlyaW5nLgorCisgICAgRXJyb3IgRURRVU9UIGNhbiBiZSByZXR1cm5lZCBpZiB0aGUga2V5cmluZyB3b3VsZCBvdmVybG9hZCB0aGUgcXVvdGEgKHBhc3MKKyAgICBLRVlfQUxMT0NfTk9UX0lOX1FVT1RBIGluIGZsYWdzIGlmIHRoZSBrZXlyaW5nIHNob3VsZG4ndCBiZSBhY2NvdW50ZWQKKyAgICB0b3dhcmRzIHRoZSB1c2VyJ3MgcXVvdGEpLiAgRXJyb3IgRU5PTUVNIGNhbiBhbHNvIGJlIHJldHVybmVkLgorCisKKygqKSBUbyBjaGVjayB0aGUgdmFsaWRpdHkgb2YgYSBrZXksIHRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZDoKKworCWludCB2YWxpZGF0ZV9rZXkoc3RydWN0IGtleSAqa2V5KTsKKworICAgIFRoaXMgY2hlY2tzIHRoYXQgdGhlIGtleSBpbiBxdWVzdGlvbiBoYXNuJ3QgZXhwaXJlZCBvciBhbmQgaGFzbid0IGJlZW4KKyAgICByZXZva2VkLiBTaG91bGQgdGhlIGtleSBiZSBpbnZhbGlkLCBlcnJvciBFS0VZRVhQSVJFRCBvciBFS0VZUkVWT0tFRCB3aWxsCisgICAgYmUgcmV0dXJuZWQuIElmIHRoZSBrZXkgaXMgTlVMTCBvciBpZiBDT05GSUdfS0VZUyBpcyBub3Qgc2V0IHRoZW4gMCB3aWxsIGJlCisgICAgcmV0dXJuZWQgKGluIHRoZSBsYXR0ZXIgY2FzZSB3aXRob3V0IHBhcnNpbmcgdGhlIGFyZ3VtZW50KS4KKworCisoKikgVG8gcmVnaXN0ZXIgYSBrZXkgdHlwZSwgdGhlIGZvbGxvd2luZyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkOgorCisJaW50IHJlZ2lzdGVyX2tleV90eXBlKHN0cnVjdCBrZXlfdHlwZSAqdHlwZSk7CisKKyAgICBUaGlzIHdpbGwgcmV0dXJuIGVycm9yIEVFWElTVCBpZiBhIHR5cGUgb2YgdGhlIHNhbWUgbmFtZSBpcyBhbHJlYWR5CisgICAgcHJlc2VudC4KKworCisoKikgVG8gdW5yZWdpc3RlciBhIGtleSB0eXBlLCBjYWxsOgorCisJdm9pZCB1bnJlZ2lzdGVyX2tleV90eXBlKHN0cnVjdCBrZXlfdHlwZSAqdHlwZSk7CisKKworVW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzLCBpdCBtYXkgYmUgZGVzaXJhYmxlIHRvIGRlYWwgd2l0aCBhIGJ1bmRsZSBvZiBrZXlzLgorVGhlIGZhY2lsaXR5IHByb3ZpZGVzIGFjY2VzcyB0byB0aGUga2V5cmluZyB0eXBlIGZvciBtYW5hZ2luZyBzdWNoIGEgYnVuZGxlOgorCisJc3RydWN0IGtleV90eXBlIGtleV90eXBlX2tleXJpbmc7CisKK1RoaXMgY2FuIGJlIHVzZWQgd2l0aCBhIGZ1bmN0aW9uIHN1Y2ggYXMgcmVxdWVzdF9rZXkoKSB0byBmaW5kIGEgc3BlY2lmaWMKK2tleXJpbmcgaW4gYSBwcm9jZXNzJ3Mga2V5cmluZ3MuICBBIGtleXJpbmcgdGh1cyBmb3VuZCBjYW4gdGhlbiBiZSBzZWFyY2hlZAord2l0aCBrZXlyaW5nX3NlYXJjaCgpLiAgTm90ZSB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgcmVxdWVzdF9rZXkoKSB0bworc2VhcmNoIGEgc3BlY2lmaWMga2V5cmluZywgc28gdXNpbmcga2V5cmluZ3MgaW4gdGhpcyB3YXkgaXMgb2YgbGltaXRlZCB1dGlsaXR5LgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitOT1RFUyBPTiBBQ0NFU1NJTkcgUEFZTE9BRCBDT05URU5UUworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHNpbXBsZXN0IHBheWxvYWQgaXMganVzdCBkYXRhIHN0b3JlZCBpbiBrZXktPnBheWxvYWQgZGlyZWN0bHkuICBJbiB0aGlzCitjYXNlLCB0aGVyZSdzIG5vIG5lZWQgdG8gaW5kdWxnZSBpbiBSQ1Ugb3IgbG9ja2luZyB3aGVuIGFjY2Vzc2luZyB0aGUgcGF5bG9hZC4KKworTW9yZSBjb21wbGV4IHBheWxvYWQgY29udGVudHMgbXVzdCBiZSBhbGxvY2F0ZWQgYW5kIHBvaW50ZXJzIHRvIHRoZW0gc2V0IGluIHRoZQora2V5LT5wYXlsb2FkLmRhdGFbXSBhcnJheS4gIE9uZSBvZiB0aGUgZm9sbG93aW5nIHdheXMgbXVzdCBiZSBzZWxlY3RlZCB0bworYWNjZXNzIHRoZSBkYXRhOgorCisgKDEpIFVubW9kaWZpYWJsZSBrZXkgdHlwZS4KKworICAgICBJZiB0aGUga2V5IHR5cGUgZG9lcyBub3QgaGF2ZSBhIG1vZGlmeSBtZXRob2QsIHRoZW4gdGhlIGtleSdzIHBheWxvYWQgY2FuCisgICAgIGJlIGFjY2Vzc2VkIHdpdGhvdXQgYW55IGZvcm0gb2YgbG9ja2luZywgcHJvdmlkZWQgdGhhdCBpdCdzIGtub3duIHRvIGJlCisgICAgIGluc3RhbnRpYXRlZCAodW5pbnN0YW50aWF0ZWQga2V5cyBjYW5ub3QgYmUgImZvdW5kIikuCisKKyAoMikgVGhlIGtleSdzIHNlbWFwaG9yZS4KKworICAgICBUaGUgc2VtYXBob3JlIGNvdWxkIGJlIHVzZWQgdG8gZ292ZXJuIGFjY2VzcyB0byB0aGUgcGF5bG9hZCBhbmQgdG8gY29udHJvbAorICAgICB0aGUgcGF5bG9hZCBwb2ludGVyLiBJdCBtdXN0IGJlIHdyaXRlLWxvY2tlZCBmb3IgbW9kaWZpY2F0aW9ucyBhbmQgd291bGQKKyAgICAgaGF2ZSB0byBiZSByZWFkLWxvY2tlZCBmb3IgZ2VuZXJhbCBhY2Nlc3MuIFRoZSBkaXNhZHZhbnRhZ2Ugb2YgZG9pbmcgdGhpcworICAgICBpcyB0aGF0IHRoZSBhY2Nlc3NvciBtYXkgYmUgcmVxdWlyZWQgdG8gc2xlZXAuCisKKyAoMykgUkNVLgorCisgICAgIFJDVSBtdXN0IGJlIHVzZWQgd2hlbiB0aGUgc2VtYXBob3JlIGlzbid0IGFscmVhZHkgaGVsZDsgaWYgdGhlIHNlbWFwaG9yZQorICAgICBpcyBoZWxkIHRoZW4gdGhlIGNvbnRlbnRzIGNhbid0IGNoYW5nZSB1bmRlciB5b3UgdW5leHBlY3RlZGx5IGFzIHRoZQorICAgICBzZW1hcGhvcmUgbXVzdCBzdGlsbCBiZSB1c2VkIHRvIHNlcmlhbGlzZSBtb2RpZmljYXRpb25zIHRvIHRoZSBrZXkuIFRoZQorICAgICBrZXkgbWFuYWdlbWVudCBjb2RlIHRha2VzIGNhcmUgb2YgdGhpcyBmb3IgdGhlIGtleSB0eXBlLgorCisgICAgIEhvd2V2ZXIsIHRoaXMgbWVhbnMgdXNpbmc6CisKKwlyY3VfcmVhZF9sb2NrKCkgLi4uIHJjdV9kZXJlZmVyZW5jZSgpIC4uLiByY3VfcmVhZF91bmxvY2soKQorCisgICAgIHRvIHJlYWQgdGhlIHBvaW50ZXIsIGFuZDoKKworCXJjdV9kZXJlZmVyZW5jZSgpIC4uLiByY3VfYXNzaWduX3BvaW50ZXIoKSAuLi4gY2FsbF9yY3UoKQorCisgICAgIHRvIHNldCB0aGUgcG9pbnRlciBhbmQgZGlzcG9zZSBvZiB0aGUgb2xkIGNvbnRlbnRzIGFmdGVyIGEgZ3JhY2UgcGVyaW9kLgorICAgICBOb3RlIHRoYXQgb25seSB0aGUga2V5IHR5cGUgc2hvdWxkIGV2ZXIgbW9kaWZ5IGEga2V5J3MgcGF5bG9hZC4KKworICAgICBGdXJ0aGVybW9yZSwgYW4gUkNVIGNvbnRyb2xsZWQgcGF5bG9hZCBtdXN0IGhvbGQgYSBzdHJ1Y3QgcmN1X2hlYWQgZm9yIHRoZQorICAgICB1c2Ugb2YgY2FsbF9yY3UoKSBhbmQsIGlmIHRoZSBwYXlsb2FkIGlzIG9mIHZhcmlhYmxlIHNpemUsIHRoZSBsZW5ndGggb2YKKyAgICAgdGhlIHBheWxvYWQuIGtleS0+ZGF0YWxlbiBjYW5ub3QgYmUgcmVsaWVkIHVwb24gdG8gYmUgY29uc2lzdGVudCB3aXRoIHRoZQorICAgICBwYXlsb2FkIGp1c3QgZGVyZWZlcmVuY2VkIGlmIHRoZSBrZXkncyBzZW1hcGhvcmUgaXMgbm90IGhlbGQuCisKKyAgICAgTm90ZSB0aGF0IGtleS0+cGF5bG9hZC5kYXRhWzBdIGhhcyBhIHNoYWRvdyB0aGF0IGlzIG1hcmtlZCBmb3IgX19yY3UKKyAgICAgdXNhZ2UuICBUaGlzIGlzIGNhbGxlZCBrZXktPnBheWxvYWQucmN1X2RhdGEwLiAgVGhlIGZvbGxvd2luZyBhY2Nlc3NvcnMKKyAgICAgd3JhcCB0aGUgUkNVIGNhbGxzIHRvIHRoaXMgZWxlbWVudDoKKworCXJjdV9hc3NpZ25fa2V5cG9pbnRlcihzdHJ1Y3Qga2V5ICprZXksIHZvaWQgKmRhdGEpOworCXZvaWQgKnJjdV9kZXJlZmVyZW5jZV9rZXkoc3RydWN0IGtleSAqa2V5KTsKKworCis9PT09PT09PT09PT09PT09PT09CitERUZJTklORyBBIEtFWSBUWVBFCis9PT09PT09PT09PT09PT09PT09CisKK0Ega2VybmVsIHNlcnZpY2UgbWF5IHdhbnQgdG8gZGVmaW5lIGl0cyBvd24ga2V5IHR5cGUuIEZvciBpbnN0YW5jZSwgYW4gQUZTCitmaWxlc3lzdGVtIG1pZ2h0IHdhbnQgdG8gZGVmaW5lIGEgS2VyYmVyb3MgNSB0aWNrZXQga2V5IHR5cGUuIFRvIGRvIHRoaXMsIGl0CithdXRob3IgZmlsbHMgaW4gYSBrZXlfdHlwZSBzdHJ1Y3QgYW5kIHJlZ2lzdGVycyBpdCB3aXRoIHRoZSBzeXN0ZW0uCisKK1NvdXJjZSBmaWxlcyB0aGF0IGltcGxlbWVudCBrZXkgdHlwZXMgc2hvdWxkIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBoZWFkZXIgZmlsZToKKworCTxsaW51eC9rZXktdHlwZS5oPgorCitUaGUgc3RydWN0dXJlIGhhcyBhIG51bWJlciBvZiBmaWVsZHMsIHNvbWUgb2Ygd2hpY2ggYXJlIG1hbmRhdG9yeToKKworICgqKSBjb25zdCBjaGFyICpuYW1lCisKKyAgICAgVGhlIG5hbWUgb2YgdGhlIGtleSB0eXBlLiBUaGlzIGlzIHVzZWQgdG8gdHJhbnNsYXRlIGEga2V5IHR5cGUgbmFtZQorICAgICBzdXBwbGllZCBieSB1c2Vyc3BhY2UgaW50byBhIHBvaW50ZXIgdG8gdGhlIHN0cnVjdHVyZS4KKworCisgKCopIHNpemVfdCBkZWZfZGF0YWxlbgorCisgICAgIFRoaXMgaXMgb3B0aW9uYWwgLSBpdCBzdXBwbGllcyB0aGUgZGVmYXVsdCBwYXlsb2FkIGRhdGEgbGVuZ3RoIGFzCisgICAgIGNvbnRyaWJ1dGVkIHRvIHRoZSBxdW90YS4gSWYgdGhlIGtleSB0eXBlJ3MgcGF5bG9hZCBpcyBhbHdheXMgb3IgYWxtb3N0CisgICAgIGFsd2F5cyB0aGUgc2FtZSBzaXplLCB0aGVuIHRoaXMgaXMgYSBtb3JlIGVmZmljaWVudCB3YXkgdG8gZG8gdGhpbmdzLgorCisgICAgIFRoZSBkYXRhIGxlbmd0aCAoYW5kIHF1b3RhKSBvbiBhIHBhcnRpY3VsYXIga2V5IGNhbiBhbHdheXMgYmUgY2hhbmdlZAorICAgICBkdXJpbmcgaW5zdGFudGlhdGlvbiBvciB1cGRhdGUgYnkgY2FsbGluZzoKKworCWludCBrZXlfcGF5bG9hZF9yZXNlcnZlKHN0cnVjdCBrZXkgKmtleSwgc2l6ZV90IGRhdGFsZW4pOworCisgICAgIFdpdGggdGhlIHJldmlzZWQgZGF0YSBsZW5ndGguIEVycm9yIEVEUVVPVCB3aWxsIGJlIHJldHVybmVkIGlmIHRoaXMgaXMgbm90CisgICAgIHZpYWJsZS4KKworCisgKCopIGludCAoKnZldF9kZXNjcmlwdGlvbikoY29uc3QgY2hhciAqZGVzY3JpcHRpb24pOworCisgICAgIFRoaXMgb3B0aW9uYWwgbWV0aG9kIGlzIGNhbGxlZCB0byB2ZXQgYSBrZXkgZGVzY3JpcHRpb24uICBJZiB0aGUga2V5IHR5cGUKKyAgICAgZG9lc24ndCBhcHByb3ZlIG9mIHRoZSBrZXkgZGVzY3JpcHRpb24sIGl0IG1heSByZXR1cm4gYW4gZXJyb3IsIG90aGVyd2lzZQorICAgICBpdCBzaG91bGQgcmV0dXJuIDAuCisKKworICgqKSBpbnQgKCpwcmVwYXJzZSkoc3RydWN0IGtleV9wcmVwYXJzZWRfcGF5bG9hZCAqcHJlcCk7CisKKyAgICAgVGhpcyBvcHRpb25hbCBtZXRob2QgcGVybWl0cyB0aGUga2V5IHR5cGUgdG8gYXR0ZW1wdCB0byBwYXJzZSBwYXlsb2FkCisgICAgIGJlZm9yZSBhIGtleSBpcyBjcmVhdGVkIChhZGQga2V5KSBvciB0aGUga2V5IHNlbWFwaG9yZSBpcyB0YWtlbiAodXBkYXRlIG9yCisgICAgIGluc3RhbnRpYXRlIGtleSkuICBUaGUgc3RydWN0dXJlIHBvaW50ZWQgdG8gYnkgcHJlcCBsb29rcyBsaWtlOgorCisJc3RydWN0IGtleV9wcmVwYXJzZWRfcGF5bG9hZCB7CisJCWNoYXIJCSpkZXNjcmlwdGlvbjsKKwkJdW5pb24ga2V5X3BheWxvYWQgcGF5bG9hZDsKKwkJY29uc3Qgdm9pZAkqZGF0YTsKKwkJc2l6ZV90CQlkYXRhbGVuOworCQlzaXplX3QJCXF1b3RhbGVuOworCQl0aW1lX3QJCWV4cGlyeTsKKwl9OworCisgICAgIEJlZm9yZSBjYWxsaW5nIHRoZSBtZXRob2QsIHRoZSBjYWxsZXIgd2lsbCBmaWxsIGluIGRhdGEgYW5kIGRhdGFsZW4gd2l0aAorICAgICB0aGUgcGF5bG9hZCBibG9iIHBhcmFtZXRlcnM7IHF1b3RhbGVuIHdpbGwgYmUgZmlsbGVkIGluIHdpdGggdGhlIGRlZmF1bHQKKyAgICAgcXVvdGEgc2l6ZSBmcm9tIHRoZSBrZXkgdHlwZTsgZXhwaXJ5IHdpbGwgYmUgc2V0IHRvIFRJTUVfVF9NQVggYW5kIHRoZQorICAgICByZXN0IHdpbGwgYmUgY2xlYXJlZC4KKworICAgICBJZiBhIGRlc2NyaXB0aW9uIGNhbiBiZSBwcm9wb3NlZCBmcm9tIHRoZSBwYXlsb2FkIGNvbnRlbnRzLCB0aGF0IHNob3VsZCBiZQorICAgICBhdHRhY2hlZCBhcyBhIHN0cmluZyB0byB0aGUgZGVzY3JpcHRpb24gZmllbGQuICBUaGlzIHdpbGwgYmUgdXNlZCBmb3IgdGhlCisgICAgIGtleSBkZXNjcmlwdGlvbiBpZiB0aGUgY2FsbGVyIG9mIGFkZF9rZXkoKSBwYXNzZXMgTlVMTCBvciAiIi4KKworICAgICBUaGUgbWV0aG9kIGNhbiBhdHRhY2ggYW55dGhpbmcgaXQgbGlrZXMgdG8gcGF5bG9hZC4gIFRoaXMgaXMgbWVyZWx5IHBhc3NlZAorICAgICBhbG9uZyB0byB0aGUgaW5zdGFudGlhdGUoKSBvciB1cGRhdGUoKSBvcGVyYXRpb25zLiAgSWYgc2V0LCB0aGUgZXhwaXJ5CisgICAgIHRpbWUgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBrZXkgaWYgaXQgaXMgaW5zdGFudGlhdGVkIGZyb20gdGhpcyBkYXRhLgorCisgICAgIFRoZSBtZXRob2Qgc2hvdWxkIHJldHVybiAwIGlmIHN1Y2Nlc3NmdWwgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlCisgICAgIG90aGVyd2lzZS4KKworCisgKCopIHZvaWQgKCpmcmVlX3ByZXBhcnNlKShzdHJ1Y3Qga2V5X3ByZXBhcnNlZF9wYXlsb2FkICpwcmVwKTsKKworICAgICBUaGlzIG1ldGhvZCBpcyBvbmx5IHJlcXVpcmVkIGlmIHRoZSBwcmVwYXJzZSgpIG1ldGhvZCBpcyBwcm92aWRlZCwKKyAgICAgb3RoZXJ3aXNlIGl0IGlzIHVudXNlZC4gIEl0IGNsZWFucyB1cCBhbnl0aGluZyBhdHRhY2hlZCB0byB0aGUgZGVzY3JpcHRpb24KKyAgICAgYW5kIHBheWxvYWQgZmllbGRzIG9mIHRoZSBrZXlfcHJlcGFyc2VkX3BheWxvYWQgc3RydWN0IGFzIGZpbGxlZCBpbiBieSB0aGUKKyAgICAgcHJlcGFyc2UoKSBtZXRob2QuICBJdCB3aWxsIGFsd2F5cyBiZSBjYWxsZWQgYWZ0ZXIgcHJlcGFyc2UoKSByZXR1cm5zCisgICAgIHN1Y2Nlc3NmdWxseSwgZXZlbiBpZiBpbnN0YW50aWF0ZSgpIG9yIHVwZGF0ZSgpIHN1Y2NlZWQuCisKKworICgqKSBpbnQgKCppbnN0YW50aWF0ZSkoc3RydWN0IGtleSAqa2V5LCBzdHJ1Y3Qga2V5X3ByZXBhcnNlZF9wYXlsb2FkICpwcmVwKTsKKworICAgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgdG8gYXR0YWNoIGEgcGF5bG9hZCB0byBhIGtleSBkdXJpbmcgY29uc3RydWN0aW9uLgorICAgICBUaGUgcGF5bG9hZCBhdHRhY2hlZCBuZWVkIG5vdCBiZWFyIGFueSByZWxhdGlvbiB0byB0aGUgZGF0YSBwYXNzZWQgdG8gdGhpcworICAgICBmdW5jdGlvbi4KKworICAgICBUaGUgcHJlcC0+ZGF0YSBhbmQgcHJlcC0+ZGF0YWxlbiBmaWVsZHMgd2lsbCBkZWZpbmUgdGhlIG9yaWdpbmFsIHBheWxvYWQKKyAgICAgYmxvYi4gIElmIHByZXBhcnNlKCkgd2FzIHN1cHBsaWVkIHRoZW4gb3RoZXIgZmllbGRzIG1heSBiZSBmaWxsZWQgaW4gYWxzby4KKworICAgICBJZiB0aGUgYW1vdW50IG9mIGRhdGEgYXR0YWNoZWQgdG8gdGhlIGtleSBkaWZmZXJzIGZyb20gdGhlIHNpemUgaW4KKyAgICAga2V5dHlwZS0+ZGVmX2RhdGFsZW4sIHRoZW4ga2V5X3BheWxvYWRfcmVzZXJ2ZSgpIHNob3VsZCBiZSBjYWxsZWQuCisKKyAgICAgVGhpcyBtZXRob2QgZG9lcyBub3QgaGF2ZSB0byBsb2NrIHRoZSBrZXkgaW4gb3JkZXIgdG8gYXR0YWNoIGEgcGF5bG9hZC4KKyAgICAgVGhlIGZhY3QgdGhhdCBLRVlfRkxBR19JTlNUQU5USUFURUQgaXMgbm90IHNldCBpbiBrZXktPmZsYWdzIHByZXZlbnRzCisgICAgIGFueXRoaW5nIGVsc2UgZnJvbSBnYWluaW5nIGFjY2VzcyB0byB0aGUga2V5LgorCisgICAgIEl0IGlzIHNhZmUgdG8gc2xlZXAgaW4gdGhpcyBtZXRob2QuCisKKyAgICAgZ2VuZXJpY19rZXlfaW5zdGFudGlhdGUoKSBpcyBwcm92aWRlZCB0byBzaW1wbHkgY29weSB0aGUgZGF0YSBmcm9tCisgICAgIHByZXAtPnBheWxvYWQuZGF0YVtdIHRvIGtleS0+cGF5bG9hZC5kYXRhW10sIHdpdGggUkNVLXNhZmUgYXNzaWdubWVudCBvbgorICAgICB0aGUgZmlyc3QgZWxlbWVudC4gIEl0IHdpbGwgdGhlbiBjbGVhciBwcmVwLT5wYXlsb2FkLmRhdGFbXSBzbyB0aGF0IHRoZQorICAgICBmcmVlX3ByZXBhcnNlIG1ldGhvZCBkb2Vzbid0IHJlbGVhc2UgdGhlIGRhdGEuCisKKworICgqKSBpbnQgKCp1cGRhdGUpKHN0cnVjdCBrZXkgKmtleSwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGRhdGFsZW4pOworCisgICAgIElmIHRoaXMgdHlwZSBvZiBrZXkgY2FuIGJlIHVwZGF0ZWQsIHRoZW4gdGhpcyBtZXRob2Qgc2hvdWxkIGJlIHByb3ZpZGVkLgorICAgICBJdCBpcyBjYWxsZWQgdG8gdXBkYXRlIGEga2V5J3MgcGF5bG9hZCBmcm9tIHRoZSBibG9iIG9mIGRhdGEgcHJvdmlkZWQuCisKKyAgICAgVGhlIHByZXAtPmRhdGEgYW5kIHByZXAtPmRhdGFsZW4gZmllbGRzIHdpbGwgZGVmaW5lIHRoZSBvcmlnaW5hbCBwYXlsb2FkCisgICAgIGJsb2IuICBJZiBwcmVwYXJzZSgpIHdhcyBzdXBwbGllZCB0aGVuIG90aGVyIGZpZWxkcyBtYXkgYmUgZmlsbGVkIGluIGFsc28uCisKKyAgICAga2V5X3BheWxvYWRfcmVzZXJ2ZSgpIHNob3VsZCBiZSBjYWxsZWQgaWYgdGhlIGRhdGEgbGVuZ3RoIG1pZ2h0IGNoYW5nZQorICAgICBiZWZvcmUgYW55IGNoYW5nZXMgYXJlIGFjdHVhbGx5IG1hZGUuIE5vdGUgdGhhdCBpZiB0aGlzIHN1Y2NlZWRzLCB0aGUgdHlwZQorICAgICBpcyBjb21taXR0ZWQgdG8gY2hhbmdpbmcgdGhlIGtleSBiZWNhdXNlIGl0J3MgYWxyZWFkeSBiZWVuIGFsdGVyZWQsIHNvIGFsbAorICAgICBtZW1vcnkgYWxsb2NhdGlvbiBtdXN0IGJlIGRvbmUgZmlyc3QuCisKKyAgICAgVGhlIGtleSB3aWxsIGhhdmUgaXRzIHNlbWFwaG9yZSB3cml0ZS1sb2NrZWQgYmVmb3JlIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCwKKyAgICAgYnV0IHRoaXMgb25seSBkZXRlcnMgb3RoZXIgd3JpdGVyczsgYW55IGNoYW5nZXMgdG8gdGhlIGtleSdzIHBheWxvYWQgbXVzdAorICAgICBiZSBtYWRlIHVuZGVyIFJDVSBjb25kaXRpb25zLCBhbmQgY2FsbF9yY3UoKSBtdXN0IGJlIHVzZWQgdG8gZGlzcG9zZSBvZgorICAgICB0aGUgb2xkIHBheWxvYWQuCisKKyAgICAga2V5X3BheWxvYWRfcmVzZXJ2ZSgpIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBjaGFuZ2VzIGFyZSBtYWRlLCBidXQKKyAgICAgYWZ0ZXIgYWxsIGFsbG9jYXRpb25zIGFuZCBvdGhlciBwb3RlbnRpYWxseSBmYWlsaW5nIGZ1bmN0aW9uIGNhbGxzIGFyZQorICAgICBtYWRlLgorCisgICAgIEl0IGlzIHNhZmUgdG8gc2xlZXAgaW4gdGhpcyBtZXRob2QuCisKKworICgqKSBpbnQgKCptYXRjaF9wcmVwYXJzZSkoc3RydWN0IGtleV9tYXRjaF9kYXRhICptYXRjaF9kYXRhKTsKKworICAgICBUaGlzIG1ldGhvZCBpcyBvcHRpb25hbC4gIEl0IGlzIGNhbGxlZCB3aGVuIGEga2V5IHNlYXJjaCBpcyBhYm91dCB0byBiZQorICAgICBwZXJmb3JtZWQuICBJdCBpcyBnaXZlbiB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKKworCXN0cnVjdCBrZXlfbWF0Y2hfZGF0YSB7CisJCWJvb2wgKCpjbXApKGNvbnN0IHN0cnVjdCBrZXkgKmtleSwKKwkJCSAgICBjb25zdCBzdHJ1Y3Qga2V5X21hdGNoX2RhdGEgKm1hdGNoX2RhdGEpOworCQljb25zdCB2b2lkCSpyYXdfZGF0YTsKKwkJdm9pZAkJKnByZXBhcnNlZDsKKwkJdW5zaWduZWQJbG9va3VwX3R5cGU7CisJfTsKKworICAgICBPbiBlbnRyeSwgcmF3X2RhdGEgd2lsbCBiZSBwb2ludGluZyB0byB0aGUgY3JpdGVyaWEgdG8gYmUgdXNlZCBpbiBtYXRjaGluZworICAgICBhIGtleSBieSB0aGUgY2FsbGVyIGFuZCBzaG91bGQgbm90IGJlIG1vZGlmaWVkLiAgKCpjbXApKCkgd2lsbCBiZSBwb2ludGluZworICAgICB0byB0aGUgZGVmYXVsdCBtYXRjaGVyIGZ1bmN0aW9uICh3aGljaCBkb2VzIGFuIGV4YWN0IGRlc2NyaXB0aW9uIG1hdGNoCisgICAgIGFnYWluc3QgcmF3X2RhdGEpIGFuZCBsb29rdXBfdHlwZSB3aWxsIGJlIHNldCB0byBpbmRpY2F0ZSBhIGRpcmVjdCBsb29rdXAuCisKKyAgICAgVGhlIGZvbGxvd2luZyBsb29rdXBfdHlwZSB2YWx1ZXMgYXJlIGF2YWlsYWJsZToKKworICAgICAgWypdIEtFWVJJTkdfU0VBUkNIX0xPT0tVUF9ESVJFQ1QgLSBBIGRpcmVjdCBsb29rdXAgaGFzaGVzIHRoZSB0eXBlIGFuZAorICAgICAgCSAgZGVzY3JpcHRpb24gdG8gbmFycm93IGRvd24gdGhlIHNlYXJjaCB0byBhIHNtYWxsIG51bWJlciBvZiBrZXlzLgorCisgICAgICBbKl0gS0VZUklOR19TRUFSQ0hfTE9PS1VQX0lURVJBVEUgLSBBbiBpdGVyYXRpdmUgbG9va3VwIHdhbGtzIGFsbCB0aGUKKyAgICAgIAkgIGtleXMgaW4gdGhlIGtleXJpbmcgdW50aWwgb25lIGlzIG1hdGNoZWQuICBUaGlzIG11c3QgYmUgdXNlZCBmb3IgYW55CisgICAgICAJICBzZWFyY2ggdGhhdCdzIG5vdCBkb2luZyBhIHNpbXBsZSBkaXJlY3QgbWF0Y2ggb24gdGhlIGtleSBkZXNjcmlwdGlvbi4KKworICAgICBUaGUgbWV0aG9kIG1heSBzZXQgY21wIHRvIHBvaW50IHRvIGEgZnVuY3Rpb24gb2YgaXRzIGNob2ljZSB0aGF0IGRvZXMgc29tZQorICAgICBvdGhlciBmb3JtIG9mIG1hdGNoLCBtYXkgc2V0IGxvb2t1cF90eXBlIHRvIEtFWVJJTkdfU0VBUkNIX0xPT0tVUF9JVEVSQVRFCisgICAgIGFuZCBtYXkgYXR0YWNoIHNvbWV0aGluZyB0byB0aGUgcHJlcGFyc2VkIHBvaW50ZXIgZm9yIHVzZSBieSAoKmNtcCkoKS4KKyAgICAgKCpjbXApKCkgc2hvdWxkIHJldHVybiB0cnVlIGlmIGEga2V5IG1hdGNoZXMgYW5kIGZhbHNlIG90aGVyd2lzZS4KKworICAgICBJZiBwcmVwYXJzZWQgaXMgc2V0LCBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvIHVzZSB0aGUgbWF0Y2hfZnJlZSgpIG1ldGhvZCB0bworICAgICBjbGVhbiBpdCB1cC4KKworICAgICBUaGUgbWV0aG9kIHNob3VsZCByZXR1cm4gMCBpZiBzdWNjZXNzZnVsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZQorICAgICBvdGhlcndpc2UuCisKKyAgICAgSXQgaXMgcGVybWl0dGVkIHRvIHNsZWVwIGluIHRoaXMgbWV0aG9kLCBidXQgKCpjbXApKCkgbWF5IG5vdCBzbGVlcCBhcworICAgICBsb2NrcyB3aWxsIGJlIGhlbGQgb3ZlciBpdC4KKworICAgICBJZiBtYXRjaF9wcmVwYXJzZSgpIGlzIG5vdCBwcm92aWRlZCwga2V5cyBvZiB0aGlzIHR5cGUgd2lsbCBiZSBtYXRjaGVkCisgICAgIGV4YWN0bHkgYnkgdGhlaXIgZGVzY3JpcHRpb24uCisKKworICgqKSB2b2lkICgqbWF0Y2hfZnJlZSkoc3RydWN0IGtleV9tYXRjaF9kYXRhICptYXRjaF9kYXRhKTsKKworICAgICBUaGlzIG1ldGhvZCBpcyBvcHRpb25hbC4gIElmIGdpdmVuLCBpdCBjYWxsZWQgdG8gY2xlYW4gdXAKKyAgICAgbWF0Y2hfZGF0YS0+cHJlcGFyc2VkIGFmdGVyIGEgc3VjY2Vzc2Z1bCBjYWxsIHRvIG1hdGNoX3ByZXBhcnNlKCkuCisKKworICgqKSB2b2lkICgqcmV2b2tlKShzdHJ1Y3Qga2V5ICprZXkpOworCisgICAgIFRoaXMgbWV0aG9kIGlzIG9wdGlvbmFsLiAgSXQgaXMgY2FsbGVkIHRvIGRpc2NhcmQgcGFydCBvZiB0aGUgcGF5bG9hZAorICAgICBkYXRhIHVwb24gYSBrZXkgYmVpbmcgcmV2b2tlZC4gIFRoZSBjYWxsZXIgd2lsbCBoYXZlIHRoZSBrZXkgc2VtYXBob3JlCisgICAgIHdyaXRlLWxvY2tlZC4KKworICAgICBJdCBpcyBzYWZlIHRvIHNsZWVwIGluIHRoaXMgbWV0aG9kLCB0aG91Z2ggY2FyZSBzaG91bGQgYmUgdGFrZW4gdG8gYXZvaWQKKyAgICAgYSBkZWFkbG9jayBhZ2FpbnN0IHRoZSBrZXkgc2VtYXBob3JlLgorCisKKyAoKikgdm9pZCAoKmRlc3Ryb3kpKHN0cnVjdCBrZXkgKmtleSk7CisKKyAgICAgVGhpcyBtZXRob2QgaXMgb3B0aW9uYWwuIEl0IGlzIGNhbGxlZCB0byBkaXNjYXJkIHRoZSBwYXlsb2FkIGRhdGEgb24gYSBrZXkKKyAgICAgd2hlbiBpdCBpcyBiZWluZyBkZXN0cm95ZWQuCisKKyAgICAgVGhpcyBtZXRob2QgZG9lcyBub3QgbmVlZCB0byBsb2NrIHRoZSBrZXkgdG8gYWNjZXNzIHRoZSBwYXlsb2FkOyBpdCBjYW4KKyAgICAgY29uc2lkZXIgdGhlIGtleSBhcyBiZWluZyBpbmFjY2Vzc2libGUgYXQgdGhpcyB0aW1lLiBOb3RlIHRoYXQgdGhlIGtleSdzCisgICAgIHR5cGUgbWF5IGhhdmUgYmVlbiBjaGFuZ2VkIGJlZm9yZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4KKworICAgICBJdCBpcyBub3Qgc2FmZSB0byBzbGVlcCBpbiB0aGlzIG1ldGhvZDsgdGhlIGNhbGxlciBtYXkgaG9sZCBzcGlubG9ja3MuCisKKworICgqKSB2b2lkICgqZGVzY3JpYmUpKGNvbnN0IHN0cnVjdCBrZXkgKmtleSwgc3RydWN0IHNlcV9maWxlICpwKTsKKworICAgICBUaGlzIG1ldGhvZCBpcyBvcHRpb25hbC4gSXQgaXMgY2FsbGVkIGR1cmluZyAvcHJvYy9rZXlzIHJlYWRpbmcgdG8KKyAgICAgc3VtbWFyaXNlIGEga2V5J3MgZGVzY3JpcHRpb24gYW5kIHBheWxvYWQgaW4gdGV4dCBmb3JtLgorCisgICAgIFRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIFJDVSByZWFkIGxvY2sgaGVsZC4gcmN1X2RlcmVmZXJlbmNlKCkKKyAgICAgc2hvdWxkIGJlIHVzZWQgdG8gcmVhZCB0aGUgcGF5bG9hZCBwb2ludGVyIGlmIHRoZSBwYXlsb2FkIGlzIHRvIGJlCisgICAgIGFjY2Vzc2VkLiBrZXktPmRhdGFsZW4gY2Fubm90IGJlIHRydXN0ZWQgdG8gc3RheSBjb25zaXN0ZW50IHdpdGggdGhlCisgICAgIGNvbnRlbnRzIG9mIHRoZSBwYXlsb2FkLgorCisgICAgIFRoZSBkZXNjcmlwdGlvbiB3aWxsIG5vdCBjaGFuZ2UsIHRob3VnaCB0aGUga2V5J3Mgc3RhdGUgbWF5LgorCisgICAgIEl0IGlzIG5vdCBzYWZlIHRvIHNsZWVwIGluIHRoaXMgbWV0aG9kOyB0aGUgUkNVIHJlYWQgbG9jayBpcyBoZWxkIGJ5IHRoZQorICAgICBjYWxsZXIuCisKKworICgqKSBsb25nICgqcmVhZCkoY29uc3Qgc3RydWN0IGtleSAqa2V5LCBjaGFyIF9fdXNlciAqYnVmZmVyLCBzaXplX3QgYnVmbGVuKTsKKworICAgICBUaGlzIG1ldGhvZCBpcyBvcHRpb25hbC4gSXQgaXMgY2FsbGVkIGJ5IEtFWUNUTF9SRUFEIHRvIHRyYW5zbGF0ZSB0aGUKKyAgICAga2V5J3MgcGF5bG9hZCBpbnRvIHNvbWV0aGluZyBhIGJsb2Igb2YgZGF0YSBmb3IgdXNlcnNwYWNlIHRvIGRlYWwgd2l0aC4KKyAgICAgSWRlYWxseSwgdGhlIGJsb2Igc2hvdWxkIGJlIGluIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGF0IHBhc3NlZCBpbiB0byB0aGUKKyAgICAgaW5zdGFudGlhdGUgYW5kIHVwZGF0ZSBtZXRob2RzLgorCisgICAgIElmIHN1Y2Nlc3NmdWwsIHRoZSBibG9iIHNpemUgdGhhdCBjb3VsZCBiZSBwcm9kdWNlZCBzaG91bGQgYmUgcmV0dXJuZWQKKyAgICAgcmF0aGVyIHRoYW4gdGhlIHNpemUgY29waWVkLgorCisgICAgIFRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIGtleSdzIHNlbWFwaG9yZSByZWFkLWxvY2tlZC4gVGhpcyB3aWxsCisgICAgIHByZXZlbnQgdGhlIGtleSdzIHBheWxvYWQgY2hhbmdpbmcuIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gdXNlIFJDVSBsb2NraW5nCisgICAgIHdoZW4gYWNjZXNzaW5nIHRoZSBrZXkncyBwYXlsb2FkLiBJdCBpcyBzYWZlIHRvIHNsZWVwIGluIHRoaXMgbWV0aG9kLCBzdWNoCisgICAgIGFzIG1pZ2h0IGhhcHBlbiB3aGVuIHRoZSB1c2Vyc3BhY2UgYnVmZmVyIGlzIGFjY2Vzc2VkLgorCisKKyAoKikgaW50ICgqcmVxdWVzdF9rZXkpKHN0cnVjdCBrZXlfY29uc3RydWN0aW9uICpjb25zLCBjb25zdCBjaGFyICpvcCwKKwkJCXZvaWQgKmF1eCk7CisKKyAgICAgVGhpcyBtZXRob2QgaXMgb3B0aW9uYWwuICBJZiBwcm92aWRlZCwgcmVxdWVzdF9rZXkoKSBhbmQgZnJpZW5kcyB3aWxsCisgICAgIGludm9rZSB0aGlzIGZ1bmN0aW9uIHJhdGhlciB0aGFuIHVwY2FsbGluZyB0byAvc2Jpbi9yZXF1ZXN0LWtleSB0byBvcGVyYXRlCisgICAgIHVwb24gYSBrZXkgb2YgdGhpcyB0eXBlLgorCisgICAgIFRoZSBhdXggcGFyYW1ldGVyIGlzIGFzIHBhc3NlZCB0byByZXF1ZXN0X2tleV9hc3luY193aXRoX2F1eGRhdGEoKSBhbmQKKyAgICAgc2ltaWxhciBvciBpcyBOVUxMIG90aGVyd2lzZS4gIEFsc28gcGFzc2VkIGFyZSB0aGUgY29uc3RydWN0aW9uIHJlY29yZCBmb3IKKyAgICAgdGhlIGtleSB0byBiZSBvcGVyYXRlZCB1cG9uIGFuZCB0aGUgb3BlcmF0aW9uIHR5cGUgKGN1cnJlbnRseSBvbmx5CisgICAgICJjcmVhdGUiKS4KKworICAgICBUaGlzIG1ldGhvZCBpcyBwZXJtaXR0ZWQgdG8gcmV0dXJuIGJlZm9yZSB0aGUgdXBjYWxsIGlzIGNvbXBsZXRlLCBidXQgdGhlCisgICAgIGZvbGxvd2luZyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCB1bmRlciBhbGwgY2lyY3Vtc3RhbmNlcyB0byBjb21wbGV0ZSB0aGUKKyAgICAgaW5zdGFudGlhdGlvbiBwcm9jZXNzLCB3aGV0aGVyIG9yIG5vdCBpdCBzdWNjZWVkcywgd2hldGhlciBvciBub3QgdGhlcmUncworICAgICBhbiBlcnJvcjoKKworCXZvaWQgY29tcGxldGVfcmVxdWVzdF9rZXkoc3RydWN0IGtleV9jb25zdHJ1Y3Rpb24gKmNvbnMsIGludCBlcnJvcik7CisKKyAgICAgVGhlIGVycm9yIHBhcmFtZXRlciBzaG91bGQgYmUgMCBvbiBzdWNjZXNzLCAtdmUgb24gZXJyb3IuICBUaGUKKyAgICAgY29uc3RydWN0aW9uIHJlY29yZCBpcyBkZXN0cm95ZWQgYnkgdGhpcyBhY3Rpb24gYW5kIHRoZSBhdXRob3Jpc2F0aW9uIGtleQorICAgICB3aWxsIGJlIHJldm9rZWQuICBJZiBhbiBlcnJvciBpcyBpbmRpY2F0ZWQsIHRoZSBrZXkgdW5kZXIgY29uc3RydWN0aW9uCisgICAgIHdpbGwgYmUgbmVnYXRpdmVseSBpbnN0YW50aWF0ZWQgaWYgaXQgd2Fzbid0IGFscmVhZHkgaW5zdGFudGlhdGVkLgorCisgICAgIElmIHRoaXMgbWV0aG9kIHJldHVybnMgYW4gZXJyb3IsIHRoYXQgZXJyb3Igd2lsbCBiZSByZXR1cm5lZCB0byB0aGUKKyAgICAgY2FsbGVyIG9mIHJlcXVlc3Rfa2V5KigpLiAgY29tcGxldGVfcmVxdWVzdF9rZXkoKSBtdXN0IGJlIGNhbGxlZCBwcmlvciB0bworICAgICByZXR1cm5pbmcuCisKKyAgICAgVGhlIGtleSB1bmRlciBjb25zdHJ1Y3Rpb24gYW5kIHRoZSBhdXRob3Jpc2F0aW9uIGtleSBjYW4gYmUgZm91bmQgaW4gdGhlCisgICAgIGtleV9jb25zdHJ1Y3Rpb24gc3RydWN0IHBvaW50ZWQgdG8gYnkgY29uczoKKworICAgICAoKikgc3RydWN0IGtleSAqa2V5OworCisgICAgIAkgVGhlIGtleSB1bmRlciBjb25zdHJ1Y3Rpb24uCisKKyAgICAgKCopIHN0cnVjdCBrZXkgKmF1dGhrZXk7CisKKyAgICAgCSBUaGUgYXV0aG9yaXNhdGlvbiBrZXkuCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUkVRVUVTVC1LRVkgQ0FMTEJBQ0sgU0VSVklDRQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUbyBjcmVhdGUgYSBuZXcga2V5LCB0aGUga2VybmVsIHdpbGwgYXR0ZW1wdCB0byBleGVjdXRlIHRoZSBmb2xsb3dpbmcgY29tbWFuZAorbGluZToKKworCS9zYmluL3JlcXVlc3Qta2V5IGNyZWF0ZSA8a2V5PiA8dWlkPiA8Z2lkPiBcCisJCTx0aHJlYWRyaW5nPiA8cHJvY2Vzc3Jpbmc+IDxzZXNzaW9ucmluZz4gPGNhbGxvdXRfaW5mbz4KKworPGtleT4gaXMgdGhlIGtleSBiZWluZyBjb25zdHJ1Y3RlZCwgYW5kIHRoZSB0aHJlZSBrZXlyaW5ncyBhcmUgdGhlIHByb2Nlc3MKK2tleXJpbmdzIGZyb20gdGhlIHByb2Nlc3MgdGhhdCBjYXVzZWQgdGhlIHNlYXJjaCB0byBiZSBpc3N1ZWQuIFRoZXNlIGFyZQoraW5jbHVkZWQgZm9yIHR3byByZWFzb25zOgorCisgICgxKSBUaGVyZSBtYXkgYmUgYW4gYXV0aGVudGljYXRpb24gdG9rZW4gaW4gb25lIG9mIHRoZSBrZXlyaW5ncyB0aGF0IGlzCisgICAgICByZXF1aXJlZCB0byBvYnRhaW4gdGhlIGtleSwgZWc6IGEgS2VyYmVyb3MgVGlja2V0LUdyYW50aW5nIFRpY2tldC4KKworICAoMikgVGhlIG5ldyBrZXkgc2hvdWxkIHByb2JhYmx5IGJlIGNhY2hlZCBpbiBvbmUgb2YgdGhlc2UgcmluZ3MuCisKK1RoaXMgcHJvZ3JhbSBzaG91bGQgc2V0IGl0IFVJRCBhbmQgR0lEIHRvIHRob3NlIHNwZWNpZmllZCBiZWZvcmUgYXR0ZW1wdGluZyB0bworYWNjZXNzIGFueSBtb3JlIGtleXMuIEl0IG1heSB0aGVuIGxvb2sgYXJvdW5kIGZvciBhIHVzZXIgc3BlY2lmaWMgcHJvY2VzcyB0bworaGFuZCB0aGUgcmVxdWVzdCBvZmYgdG8gKHBlcmhhcHMgYSBwYXRoIGhlbGQgaW4gcGxhY2VkIGluIGFub3RoZXIga2V5IGJ5LCBmb3IKK2V4YW1wbGUsIHRoZSBLREUgZGVza3RvcCBtYW5hZ2VyKS4KKworVGhlIHByb2dyYW0gKG9yIHdoYXRldmVyIGl0IGNhbGxzKSBzaG91bGQgZmluaXNoIGNvbnN0cnVjdGlvbiBvZiB0aGUga2V5IGJ5CitjYWxsaW5nIEtFWUNUTF9JTlNUQU5USUFURSBvciBLRVlDVExfSU5TVEFOVElBVEVfSU9WLCB3aGljaCBhbHNvIHBlcm1pdHMgaXQgdG8KK2NhY2hlIHRoZSBrZXkgaW4gb25lIG9mIHRoZSBrZXlyaW5ncyAocHJvYmFibHkgdGhlIHNlc3Npb24gcmluZykgYmVmb3JlCityZXR1cm5pbmcuICBBbHRlcm5hdGl2ZWx5LCB0aGUga2V5IGNhbiBiZSBtYXJrZWQgYXMgbmVnYXRpdmUgd2l0aCBLRVlDVExfTkVHQVRFCitvciBLRVlDVExfUkVKRUNUOyB0aGlzIGFsc28gcGVybWl0cyB0aGUga2V5IHRvIGJlIGNhY2hlZCBpbiBvbmUgb2YgdGhlCitrZXlyaW5ncy4KKworSWYgaXQgcmV0dXJucyB3aXRoIHRoZSBrZXkgcmVtYWluaW5nIGluIHRoZSB1bmNvbnN0cnVjdGVkIHN0YXRlLCB0aGUga2V5IHdpbGwKK2JlIG1hcmtlZCBhcyBiZWluZyBuZWdhdGl2ZSwgaXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgc2Vzc2lvbiBrZXlyaW5nLCBhbmQgYW4KK2Vycm9yIHdpbGwgYmUgcmV0dXJuZWQgdG8gdGhlIGtleSByZXF1ZXN0b3IuCisKK1N1cHBsZW1lbnRhcnkgaW5mb3JtYXRpb24gbWF5IGJlIHByb3ZpZGVkIGZyb20gd2hvZXZlciBvciB3aGF0ZXZlciBpbnZva2VkIHRoaXMKK3NlcnZpY2UuIFRoaXMgd2lsbCBiZSBwYXNzZWQgYXMgdGhlIDxjYWxsb3V0X2luZm8+IHBhcmFtZXRlci4gSWYgbm8gc3VjaAoraW5mb3JtYXRpb24gd2FzIG1hZGUgYXZhaWxhYmxlLCB0aGVuICItIiB3aWxsIGJlIHBhc3NlZCBhcyB0aGlzIHBhcmFtZXRlcgoraW5zdGVhZC4KKworCitTaW1pbGFybHksIHRoZSBrZXJuZWwgbWF5IGF0dGVtcHQgdG8gdXBkYXRlIGFuIGV4cGlyZWQgb3IgYSBzb29uIHRvIGV4cGlyZSBrZXkKK2J5IGV4ZWN1dGluZzoKKworCS9zYmluL3JlcXVlc3Qta2V5IHVwZGF0ZSA8a2V5PiA8dWlkPiA8Z2lkPiBcCisJCTx0aHJlYWRyaW5nPiA8cHJvY2Vzc3Jpbmc+IDxzZXNzaW9ucmluZz4KKworSW4gdGhpcyBjYXNlLCB0aGUgcHJvZ3JhbSBpc24ndCByZXF1aXJlZCB0byBhY3R1YWxseSBhdHRhY2ggdGhlIGtleSB0byBhIHJpbmc7Cit0aGUgcmluZ3MgYXJlIHByb3ZpZGVkIGZvciByZWZlcmVuY2UuCisKKworPT09PT09PT09PT09PT09PT09CitHQVJCQUdFIENPTExFQ1RJT04KKz09PT09PT09PT09PT09PT09PQorCitEZWFkIGtleXMgKGZvciB3aGljaCB0aGUgdHlwZSBoYXMgYmVlbiByZW1vdmVkKSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgdW5saW5rZWQKK2Zyb20gdGhvc2Uga2V5cmluZ3MgdGhhdCBwb2ludCB0byB0aGVtIGFuZCBkZWxldGVkIGFzIHNvb24gYXMgcG9zc2libGUgYnkgYQorYmFja2dyb3VuZCBnYXJiYWdlIGNvbGxlY3Rvci4KKworU2ltaWxhcmx5LCByZXZva2VkIGFuZCBleHBpcmVkIGtleXMgd2lsbCBiZSBnYXJiYWdlIGNvbGxlY3RlZCwgYnV0IG9ubHkgYWZ0ZXIgYQorY2VydGFpbiBhbW91bnQgb2YgdGltZSBoYXMgcGFzc2VkLiAgVGhpcyB0aW1lIGlzIHNldCBhcyBhIG51bWJlciBvZiBzZWNvbmRzIGluOgorCisJL3Byb2Mvc3lzL2tlcm5lbC9rZXlzL2djX2RlbGF5CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NlY3VyaXR5L3RvbW95by50eHQgYi9Eb2N1bWVudGF0aW9uL3NlY3VyaXR5L3RvbW95by50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjAwYTJkMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2VjdXJpdHkvdG9tb3lvLnR4dApAQCAtMCwwICsxLDU1IEBACistLS0gV2hhdCBpcyBUT01PWU8/IC0tLQorCitUT01PWU8gaXMgYSBuYW1lLWJhc2VkIE1BQyBleHRlbnNpb24gKExTTSBtb2R1bGUpIGZvciB0aGUgTGludXgga2VybmVsLgorCitMaXZlQ0QtYmFzZWQgdHV0b3JpYWxzIGFyZSBhdmFpbGFibGUgYXQKK2h0dHA6Ly90b21veW8uc291cmNlZm9yZ2UuanAvMS43LzFzdC1zdGVwL3VidW50dTEwLjA0LWxpdmUvCitodHRwOi8vdG9tb3lvLnNvdXJjZWZvcmdlLmpwLzEuNy8xc3Qtc3RlcC9jZW50b3M1LWxpdmUvIC4KK1Rob3VnaCB0aGVzZSB0dXRvcmlhbHMgdXNlIG5vbi1MU00gdmVyc2lvbiBvZiBUT01PWU8sIHRoZXkgYXJlIHVzZWZ1bCBmb3IgeW91Cit0byBrbm93IHdoYXQgVE9NT1lPIGlzLgorCistLS0gSG93IHRvIGVuYWJsZSBUT01PWU8/IC0tLQorCitCdWlsZCB0aGUga2VybmVsIHdpdGggQ09ORklHX1NFQ1VSSVRZX1RPTU9ZTz15IGFuZCBwYXNzICJzZWN1cml0eT10b21veW8iIG9uCitrZXJuZWwncyBjb21tYW5kIGxpbmUuCisKK1BsZWFzZSBzZWUgaHR0cDovL3RvbW95by5zb3VyY2Vmb3JnZS5qcC8yLjMvIGZvciBkZXRhaWxzLgorCistLS0gV2hlcmUgaXMgZG9jdW1lbnRhdGlvbj8gLS0tCisKK1VzZXIgPC0+IEtlcm5lbCBpbnRlcmZhY2UgZG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgYXQKK2h0dHA6Ly90b21veW8uc291cmNlZm9yZ2UuanAvMi4zL3BvbGljeS1yZWZlcmVuY2UuaHRtbCAuCisKK01hdGVyaWFscyB3ZSBwcmVwYXJlZCBmb3Igc2VtaW5hcnMgYW5kIHN5bXBvc2l1bXMgYXJlIGF2YWlsYWJsZSBhdAoraHR0cDovL3NvdXJjZWZvcmdlLmpwL3Byb2plY3RzL3RvbW95by9kb2NzLz9jYXRlZ29yeV9pZD01MzImbGFuZ3VhZ2VfaWQ9MSAuCitCZWxvdyBsaXN0cyBhcmUgY2hvc2VuIGZyb20gdGhyZWUgYXNwZWN0cy4KKworV2hhdCBpcyBUT01PWU8/CisgIFRPTU9ZTyBMaW51eCBPdmVydmlldworICAgIGh0dHA6Ly9zb3VyY2Vmb3JnZS5qcC9wcm9qZWN0cy90b21veW8vZG9jcy9sY2EyMDA5LXRha2VkYS5wZGYKKyAgVE9NT1lPIExpbnV4OiBwcmFnbWF0aWMgYW5kIG1hbmFnZWFibGUgc2VjdXJpdHkgZm9yIExpbnV4CisgICAgaHR0cDovL3NvdXJjZWZvcmdlLmpwL3Byb2plY3RzL3RvbW95by9kb2NzL2ZyZWVkb21oZWN0YWlwZWktdG9tb3lvLnBkZgorICBUT01PWU8gTGludXg6IEEgUHJhY3RpY2FsIE1ldGhvZCB0byBVbmRlcnN0YW5kIGFuZCBQcm90ZWN0IFlvdXIgT3duIExpbnV4IEJveAorICAgIGh0dHA6Ly9zb3VyY2Vmb3JnZS5qcC9wcm9qZWN0cy90b21veW8vZG9jcy9QYWNTZWMyMDA3LWVuLW5vLWRlbW8ucGRmCisKK1doYXQgY2FuIFRPTU9ZTyBkbz8KKyAgRGVlcCBpbnNpZGUgVE9NT1lPIExpbnV4CisgICAgaHR0cDovL3NvdXJjZWZvcmdlLmpwL3Byb2plY3RzL3RvbW95by9kb2NzL2xjYTIwMDkta3VtYW5la28ucGRmCisgIFRoZSByb2xlIG9mICJwYXRobmFtZSBiYXNlZCBhY2Nlc3MgY29udHJvbCIgaW4gc2VjdXJpdHkuCisgICAgaHR0cDovL3NvdXJjZWZvcmdlLmpwL3Byb2plY3RzL3RvbW95by9kb2NzL2xmajIwMDgtYm9mLnBkZgorCitIaXN0b3J5IG9mIFRPTU9ZTz8KKyAgUmVhbGl0aWVzIG9mIE1haW5saW5pbmcKKyAgICBodHRwOi8vc291cmNlZm9yZ2UuanAvcHJvamVjdHMvdG9tb3lvL2RvY3MvbGZqMjAwOC5wZGYKKworLS0tIFdoYXQgaXMgZnV0dXJlIHBsYW4/IC0tLQorCitXZSBiZWxpZXZlIHRoYXQgaW5vZGUgYmFzZWQgc2VjdXJpdHkgYW5kIG5hbWUgYmFzZWQgc2VjdXJpdHkgYXJlIGNvbXBsZW1lbnRhcnkKK2FuZCBib3RoIHNob3VsZCBiZSB1c2VkIHRvZ2V0aGVyLiBCdXQgdW5mb3J0dW5hdGVseSwgc28gZmFyLCB3ZSBjYW5ub3QgZW5hYmxlCittdWx0aXBsZSBMU00gbW9kdWxlcyBhdCB0aGUgc2FtZSB0aW1lLiBXZSBmZWVsIHNvcnJ5IHRoYXQgeW91IGhhdmUgdG8gZ2l2ZSB1cAorU0VMaW51eC9TTUFDSy9BcHBBcm1vciBldGMuIHdoZW4geW91IHdhbnQgdG8gdXNlIFRPTU9ZTy4KKworV2UgaG9wZSB0aGF0IExTTSBiZWNvbWVzIHN0YWNrYWJsZSBpbiBmdXR1cmUuIE1lYW53aGlsZSwgeW91IGNhbiB1c2Ugbm9uLUxTTQordmVyc2lvbiBvZiBUT01PWU8sIGF2YWlsYWJsZSBhdCBodHRwOi8vdG9tb3lvLnNvdXJjZWZvcmdlLmpwLzEuNy8gLgorTFNNIHZlcnNpb24gb2YgVE9NT1lPIGlzIGEgc3Vic2V0IG9mIG5vbi1MU00gdmVyc2lvbiBvZiBUT01PWU8uIFdlIGFyZSBwbGFubmluZwordG8gcG9ydCBub24tTFNNIHZlcnNpb24ncyBmdW5jdGlvbmFsaXRpZXMgdG8gTFNNIHZlcnNpb25zLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zZXJpYWwtY29uc29sZS50eHQgYi9Eb2N1bWVudGF0aW9uL3NlcmlhbC1jb25zb2xlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTdiYzhiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zZXJpYWwtY29uc29sZS50eHQKQEAgLTAsMCArMSwxMDkgQEAKKyAgICAgICAgICAgICAgICAgICAgICAgTGludXggU2VyaWFsIENvbnNvbGUKKworVG8gdXNlIGEgc2VyaWFsIHBvcnQgYXMgY29uc29sZSB5b3UgbmVlZCB0byBjb21waWxlIHRoZSBzdXBwb3J0IGludG8geW91cgora2VybmVsIC0gYnkgZGVmYXVsdCBpdCBpcyBub3QgY29tcGlsZWQgaW4uIEZvciBQQyBzdHlsZSBzZXJpYWwgcG9ydHMKK2l0J3MgdGhlIGNvbmZpZyBvcHRpb24gbmV4dCB0byAiU3RhbmRhcmQvZ2VuZXJpYyAoZHVtYikgc2VyaWFsIHN1cHBvcnQiLgorWW91IG11c3QgY29tcGlsZSBzZXJpYWwgc3VwcG9ydCBpbnRvIHRoZSBrZXJuZWwgYW5kIG5vdCBhcyBhIG1vZHVsZS4KKworSXQgaXMgcG9zc2libGUgdG8gc3BlY2lmeSBtdWx0aXBsZSBkZXZpY2VzIGZvciBjb25zb2xlIG91dHB1dC4gWW91IGNhbgorZGVmaW5lIGEgbmV3IGtlcm5lbCBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIHNlbGVjdCB3aGljaCBkZXZpY2UocykgdG8KK3VzZSBmb3IgY29uc29sZSBvdXRwdXQuCisKK1RoZSBmb3JtYXQgb2YgdGhpcyBvcHRpb24gaXM6CisKKwljb25zb2xlPWRldmljZSxvcHRpb25zCisKKwlkZXZpY2U6CQl0dHkwIGZvciB0aGUgZm9yZWdyb3VuZCB2aXJ0dWFsIGNvbnNvbGUKKwkJCXR0eVggZm9yIGFueSBvdGhlciB2aXJ0dWFsIGNvbnNvbGUKKwkJCXR0eVN4IGZvciBhIHNlcmlhbCBwb3J0CisJCQlscDAgZm9yIHRoZSBmaXJzdCBwYXJhbGxlbCBwb3J0CisJCQl0dHlVU0IwIGZvciB0aGUgZmlyc3QgVVNCIHNlcmlhbCBkZXZpY2UKKworCW9wdGlvbnM6CWRlcGVuZCBvbiB0aGUgZHJpdmVyLiBGb3IgdGhlIHNlcmlhbCBwb3J0IHRoaXMKKwkJCWRlZmluZXMgdGhlIGJhdWRyYXRlL3Bhcml0eS9iaXRzL2Zsb3cgY29udHJvbCBvZgorCQkJdGhlIHBvcnQsIGluIHRoZSBmb3JtYXQgQkJCQlBORiwgd2hlcmUgQkJCQiBpcyB0aGUKKwkJCXNwZWVkLCBQIGlzIHBhcml0eSAobi9vL2UpLCBOIGlzIG51bWJlciBvZiBiaXRzLAorCQkJYW5kIEYgaXMgZmxvdyBjb250cm9sICgncicgZm9yIFJUUykuIERlZmF1bHQgaXMKKwkJCTk2MDBuOC4gVGhlIG1heGltdW0gYmF1ZHJhdGUgaXMgMTE1MjAwLgorCitZb3UgY2FuIHNwZWNpZnkgbXVsdGlwbGUgY29uc29sZT0gb3B0aW9ucyBvbiB0aGUga2VybmVsIGNvbW1hbmQgbGluZS4KK091dHB1dCB3aWxsIGFwcGVhciBvbiBhbGwgb2YgdGhlbS4gVGhlIGxhc3QgZGV2aWNlIHdpbGwgYmUgdXNlZCB3aGVuCit5b3Ugb3BlbiAvZGV2L2NvbnNvbGUuIFNvLCBmb3IgZXhhbXBsZToKKworCWNvbnNvbGU9dHR5UzEsOTYwMCBjb25zb2xlPXR0eTAKKworZGVmaW5lcyB0aGF0IG9wZW5pbmcgL2Rldi9jb25zb2xlIHdpbGwgZ2V0IHlvdSB0aGUgY3VycmVudCBmb3JlZ3JvdW5kCit2aXJ0dWFsIGNvbnNvbGUsIGFuZCBrZXJuZWwgbWVzc2FnZXMgd2lsbCBhcHBlYXIgb24gYm90aCB0aGUgVkdBCitjb25zb2xlIGFuZCB0aGUgMm5kIHNlcmlhbCBwb3J0ICh0dHlTMSBvciBDT00yKSBhdCA5NjAwIGJhdWQuCisKK05vdGUgdGhhdCB5b3UgY2FuIG9ubHkgZGVmaW5lIG9uZSBjb25zb2xlIHBlciBkZXZpY2UgdHlwZSAoc2VyaWFsLCB2aWRlbykuCisKK0lmIG5vIGNvbnNvbGUgZGV2aWNlIGlzIHNwZWNpZmllZCwgdGhlIGZpcnN0IGRldmljZSBmb3VuZCBjYXBhYmxlIG9mCithY3RpbmcgYXMgYSBzeXN0ZW0gY29uc29sZSB3aWxsIGJlIHVzZWQuIEF0IHRoaXMgdGltZSwgdGhlIHN5c3RlbQorZmlyc3QgbG9va3MgZm9yIGEgVkdBIGNhcmQgYW5kIHRoZW4gZm9yIGEgc2VyaWFsIHBvcnQuIFNvIGlmIHlvdSBkb24ndAoraGF2ZSBhIFZHQSBjYXJkIGluIHlvdXIgc3lzdGVtIHRoZSBmaXJzdCBzZXJpYWwgcG9ydCB3aWxsIGF1dG9tYXRpY2FsbHkKK2JlY29tZSB0aGUgY29uc29sZS4KKworWW91IHdpbGwgbmVlZCB0byBjcmVhdGUgYSBuZXcgZGV2aWNlIHRvIHVzZSAvZGV2L2NvbnNvbGUuIFRoZSBvZmZpY2lhbAorL2Rldi9jb25zb2xlIGlzIG5vdyBjaGFyYWN0ZXIgZGV2aWNlIDUsMS4KKworKFlvdSBjYW4gYWxzbyB1c2UgYSBuZXR3b3JrIGRldmljZSBhcyBhIGNvbnNvbGUuICBTZWUKK0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRjb25zb2xlLnR4dCBmb3IgaW5mb3JtYXRpb24gb24gdGhhdC4pCisKK0hlcmUncyBhbiBleGFtcGxlIHRoYXQgd2lsbCB1c2UgL2Rldi90dHlTMSAoQ09NMikgYXMgdGhlIGNvbnNvbGUuCitSZXBsYWNlIHRoZSBzYW1wbGUgdmFsdWVzIGFzIG5lZWRlZC4KKworMS4gQ3JlYXRlIC9kZXYvY29uc29sZSAocmVhbCBjb25zb2xlKSBhbmQgL2Rldi90dHkwIChtYXN0ZXIgdmlydHVhbAorICAgY29uc29sZSk6CisKKyAgIGNkIC9kZXYKKyAgIHJtIC1mIGNvbnNvbGUgdHR5MAorICAgbWtub2QgLW0gNjIyIGNvbnNvbGUgYyA1IDEKKyAgIG1rbm9kIC1tIDYyMiB0dHkwIGMgNCAwCisKKzIuIExJTE8gY2FuIGFsc28gdGFrZSBpbnB1dCBmcm9tIGEgc2VyaWFsIGRldmljZS4gVGhpcyBpcyBhIHZlcnkKKyAgIHVzZWZ1bCBvcHRpb24uIFRvIHRlbGwgTElMTyB0byB1c2UgdGhlIHNlcmlhbCBwb3J0OgorICAgSW4gbGlsby5jb25mIChnbG9iYWwgc2VjdGlvbik6IAorCisgICBzZXJpYWwgID0gMSw5NjAwbjggKHR0eVMxLCA5NjAwIGJkLCBubyBwYXJpdHksIDggYml0cykKKworMy4gQWRqdXN0IHRvIGtlcm5lbCBmbGFncyBmb3IgdGhlIG5ldyBrZXJuZWwsCisgICBhZ2FpbiBpbiBsaWxvLmNvbmYgKGtlcm5lbCBzZWN0aW9uKQorCisgICBhcHBlbmQgPSAiY29uc29sZT10dHlTMSw5NjAwIiAKKworNC4gTWFrZSBzdXJlIGEgZ2V0dHkgcnVucyBvbiB0aGUgc2VyaWFsIHBvcnQgc28gdGhhdCB5b3UgY2FuIGxvZ2luIHRvCisgICBpdCBvbmNlIHRoZSBzeXN0ZW0gaXMgZG9uZSBib290aW5nLiBUaGlzIGlzIGRvbmUgYnkgYWRkaW5nIGEgbGluZQorICAgbGlrZSB0aGlzIHRvIC9ldGMvaW5pdHRhYiAoZXhhY3Qgc3ludGF4IGRlcGVuZHMgb24geW91ciBnZXR0eSk6CisKKyAgIFMxOjIzOnJlc3Bhd246L3NiaW4vZ2V0dHkgLUwgdHR5UzEgOTYwMCB2dDEwMAorCis1LiBJbml0IGFuZCAvZXRjL2lvY3RsLnNhdmUKKworICAgU3lzdmluaXQgcmVtZW1iZXJzIGl0cyBzdHR5IHNldHRpbmdzIGluIGEgZmlsZSBpbiAvZXRjLCBjYWxsZWQKKyAgIGAvZXRjL2lvY3RsLnNhdmUnLiBSRU1PVkUgVEhJUyBGSUxFIGJlZm9yZSB1c2luZyB0aGUgc2VyaWFsCisgICBjb25zb2xlIGZvciB0aGUgZmlyc3QgdGltZSwgYmVjYXVzZSBvdGhlcndpc2UgaW5pdCB3aWxsIHByb2JhYmx5CisgICBzZXQgdGhlIGJhdWRyYXRlIHRvIDM4NDAwIChiYXVkcmF0ZSBvZiB0aGUgdmlydHVhbCBjb25zb2xlKS4KKworNi4gL2Rldi9jb25zb2xlIGFuZCBYCisgICBQcm9ncmFtcyB0aGF0IHdhbnQgdG8gZG8gc29tZXRoaW5nIHdpdGggdGhlIHZpcnR1YWwgY29uc29sZSB1c3VhbGx5CisgICBvcGVuIC9kZXYvY29uc29sZS4gSWYgeW91IGhhdmUgY3JlYXRlZCB0aGUgbmV3IC9kZXYvY29uc29sZSBkZXZpY2UsCisgICBhbmQgeW91ciBjb25zb2xlIGlzIE5PVCB0aGUgdmlydHVhbCBjb25zb2xlIHNvbWUgcHJvZ3JhbXMgd2lsbCBmYWlsLgorICAgVGhvc2UgYXJlIHByb2dyYW1zIHRoYXQgd2FudCB0byBhY2Nlc3MgdGhlIFZUIGludGVyZmFjZSwgYW5kIHVzZQorICAgL2Rldi9jb25zb2xlIGluc3RlYWQgb2YgL2Rldi90dHkwLiBTb21lIG9mIHRob3NlIHByb2dyYW1zIGFyZToKKworICAgWGZyZWU4Niwgc3ZnYWxpYiwgZ3BtLCBTVkdBVGV4dE1vZGUKKworICAgSXQgc2hvdWxkIGJlIGZpeGVkIGluIG1vZGVybiB2ZXJzaW9ucyBvZiB0aGVzZSBwcm9ncmFtcyB0aG91Z2guCisKKyAgIE5vdGUgdGhhdCBpZiB5b3UgYm9vdCB3aXRob3V0IGEgY29uc29sZT0gb3B0aW9uIChvciB3aXRoCisgICBjb25zb2xlPS9kZXYvdHR5MCksIC9kZXYvY29uc29sZSBpcyB0aGUgc2FtZSBhcyAvZGV2L3R0eTAuIEluIHRoYXQKKyAgIGNhc2UgZXZlcnl0aGluZyB3aWxsIHN0aWxsIHdvcmsuCisKKzcuIFRoYW5rcworCisgICBUaGFua3MgdG8gR2VlcnQgVXl0dGVyaG9ldmVuIDxnZWVydEBsaW51eC1tNjhrLm9yZz4KKyAgIGZvciBwb3J0aW5nIHRoZSBwYXRjaGVzIGZyb20gMi4xLjR4IHRvIDIuMS42eCBmb3IgdGFraW5nIGNhcmUgb2YKKyAgIHRoZSBpbnRlZ3JhdGlvbiBvZiB0aGVzZSBwYXRjaGVzIGludG8gbTY4aywgcHBjIGFuZCBhbHBoYS4KKworTWlxdWVsIHZhbiBTbW9vcmVuYnVyZyA8bWlxdWVsc0BjaXN0cm9uLm5sPiwgMTEtSnVuLTIwMDAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2VyaWFsLzAwLUlOREVYIGIvRG9jdW1lbnRhdGlvbi9zZXJpYWwvMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODAyMWE5ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2VyaWFsLzAwLUlOREVYCkBAIC0wLDAgKzEsMTYgQEAKKzAwLUlOREVYCisJLSB0aGlzIGZpbGUuCitSRUFETUUuY3ljbGFkZXNaCisJLSBpbmZvIG9uIEN5Y2xhZGVzLVogZmlybXdhcmUgbG9hZGluZy4KK2RyaXZlcgorCS0gaW50cm8gdG8gdGhlIGxvdyBsZXZlbCBzZXJpYWwgZHJpdmVyLgorbW94YS1zbWFydGlvCisJLSBmaWxlIHdpdGggaW5mbyBvbiBpbnN0YWxsaW5nL3VzaW5nIE1veGEgbXVsdGlwb3J0IHNlcmlhbCBkcml2ZXIuCituX2dzbS50eHQKKwktIEdTTSAwNzEwIHR0eSBtdWx0aXBsZXhlciBob3d0by4KK3JvY2tldC50eHQKKwktIGluZm8gb24gdGhlIENvbXRyb2wgUm9ja2V0UG9ydCBtdWx0aXBvcnQgc2VyaWFsIGRyaXZlci4KK3NlcmlhbC1yczQ4NS50eHQKKwktIGluZm8gYWJvdXQgUlM0ODUgc3RydWN0dXJlcyBhbmQgc3VwcG9ydCBpbiB0aGUga2VybmVsLgordHR5LnR4dAorCS0gZ3VpZGUgdG8gdGhlIGxvY2tpbmcgcG9saWNpZXMgb2YgdGhlIHR0eSBsYXllci4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2VyaWFsL1JFQURNRS5jeWNsYWRlc1ogYi9Eb2N1bWVudGF0aW9uL3NlcmlhbC9SRUFETUUuY3ljbGFkZXNaCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNGE2OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NlcmlhbC9SRUFETUUuY3ljbGFkZXNaCkBAIC0wLDAgKzEsOCBAQAorCitUaGUgQ3ljbGFkZXMtWiBtdXN0IGhhdmUgZmlybXdhcmUgbG9hZGVkIG9udG8gdGhlIGNhcmQgYmVmb3JlIGl0IHdpbGwKK29wZXJhdGUuICBUaGlzIG9wZXJhdGlvbiBzaG91bGQgYmUgcGVyZm9ybWVkIGR1cmluZyBzeXN0ZW0gc3RhcnR1cCwKKworVGhlIGZpcm13YXJlLCBsb2FkZXIgcHJvZ3JhbSBhbmQgdGhlIGxhdGVzdCBkZXZpY2UgZHJpdmVyIGNvZGUgYXJlCithdmFpbGFibGUgZnJvbSBDeWNsYWRlcyBhdAorICAgIGZ0cDovL2Z0cC5jeWNsYWRlcy5jb20vcHViL2N5Y2xhZGVzL2N5Y2xhZGVzLXovbGludXgvCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2VyaWFsL2RyaXZlciBiL0RvY3VtZW50YXRpb24vc2VyaWFsL2RyaXZlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzk0NjhlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zZXJpYWwvZHJpdmVyCkBAIC0wLDAgKzEsNDY4IEBACisKKwkJCUxvdyBMZXZlbCBTZXJpYWwgQVBJCisJCQktLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKK1RoaXMgZG9jdW1lbnQgaXMgbWVhbnQgYXMgYSBicmllZiBvdmVydmlldyBvZiBzb21lIGFzcGVjdHMgb2YgdGhlIG5ldyBzZXJpYWwKK2RyaXZlci4gIEl0IGlzIG5vdCBjb21wbGV0ZSwgYW55IHF1ZXN0aW9ucyB5b3UgaGF2ZSBzaG91bGQgYmUgZGlyZWN0ZWQgdG8KKzxybWtAYXJtLmxpbnV4Lm9yZy51az4KKworVGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpcyBjb250YWluZWQgd2l0aGluIGFtYmFfcGwwMTEuYy4KKworCisKK0xvdyBMZXZlbCBTZXJpYWwgSGFyZHdhcmUgRHJpdmVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbG93IGxldmVsIHNlcmlhbCBoYXJkd2FyZSBkcml2ZXIgaXMgcmVzcG9uc2libGUgZm9yIHN1cHBseWluZyBwb3J0CitpbmZvcm1hdGlvbiAoZGVmaW5lZCBieSB1YXJ0X3BvcnQpIGFuZCBhIHNldCBvZiBjb250cm9sIG1ldGhvZHMgKGRlZmluZWQKK2J5IHVhcnRfb3BzKSB0byB0aGUgY29yZSBzZXJpYWwgZHJpdmVyLiAgVGhlIGxvdyBsZXZlbCBkcml2ZXIgaXMgYWxzbworcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIGludGVycnVwdHMgZm9yIHRoZSBwb3J0LCBhbmQgcHJvdmlkaW5nIGFueQorY29uc29sZSBzdXBwb3J0LgorCisKK0NvbnNvbGUgU3VwcG9ydAorLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBzZXJpYWwgY29yZSBwcm92aWRlcyBhIGZldyBoZWxwZXIgZnVuY3Rpb25zLiAgVGhpcyBpbmNsdWRlcyBpZGVudGlmaW5nCit0aGUgY29ycmVjdCBwb3J0IHN0cnVjdHVyZSAodmlhIHVhcnRfZ2V0X2NvbnNvbGUpIGFuZCBkZWNvZGluZyBjb21tYW5kIGxpbmUKK2FyZ3VtZW50cyAodWFydF9wYXJzZV9vcHRpb25zKS4KKworVGhlcmUgaXMgYWxzbyBhIGhlbHBlciBmdW5jdGlvbiAodWFydF93cml0ZV9jb25zb2xlKSB3aGljaCBwZXJmb3JtcyBhCitjaGFyYWN0ZXIgYnkgY2hhcmFjdGVyIHdyaXRlLCB0cmFuc2xhdGluZyBuZXdsaW5lcyB0byBDUkxGIHNlcXVlbmNlcy4KK0RyaXZlciB3cml0ZXJzIGFyZSByZWNvbW1lbmRlZCB0byB1c2UgdGhpcyBmdW5jdGlvbiByYXRoZXIgdGhhbiBpbXBsZW1lbnRpbmcKK3RoZWlyIG93biB2ZXJzaW9uLgorCisKK0xvY2tpbmcKKy0tLS0tLS0KKworSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBsb3cgbGV2ZWwgaGFyZHdhcmUgZHJpdmVyIHRvIHBlcmZvcm0gdGhlCituZWNlc3NhcnkgbG9ja2luZyB1c2luZyBwb3J0LT5sb2NrLiAgVGhlcmUgYXJlIHNvbWUgZXhjZXB0aW9ucyAod2hpY2gKK2FyZSBkZXNjcmliZWQgaW4gdGhlIHVhcnRfb3BzIGxpc3RpbmcgYmVsb3cuKQorCitUaGVyZSBhcmUgdGhyZWUgbG9ja3MuICBBIHBlci1wb3J0IHNwaW5sb2NrLCBhIHBlci1wb3J0IHRtcGJ1ZiBzZW1hcGhvcmUsCithbmQgYW4gb3ZlcmFsbCBzZW1hcGhvcmUuCisKK0Zyb20gdGhlIGNvcmUgZHJpdmVyIHBlcnNwZWN0aXZlLCB0aGUgcG9ydC0+bG9jayBsb2NrcyB0aGUgZm9sbG93aW5nCitkYXRhOgorCisJcG9ydC0+bWN0cmwKKwlwb3J0LT5pY291bnQKKwlpbmZvLT54bWl0LmhlYWQgKGNpcmMtPmhlYWQpCisJaW5mby0+eG1pdC50YWlsIChjaXJjLT50YWlsKQorCitUaGUgbG93IGxldmVsIGRyaXZlciBpcyBmcmVlIHRvIHVzZSB0aGlzIGxvY2sgdG8gcHJvdmlkZSBhbnkgYWRkaXRpb25hbAorbG9ja2luZy4KKworVGhlIGNvcmUgZHJpdmVyIHVzZXMgdGhlIGluZm8tPnRtcGJ1Zl9zZW0gbG9jayB0byBwcmV2ZW50IG11bHRpLXRocmVhZGVkCithY2Nlc3MgdG8gdGhlIGluZm8tPnRtcGJ1ZiBib3VuY2VidWZmZXIgdXNlZCBmb3IgcG9ydCB3cml0ZXMuCisKK1RoZSBwb3J0X3NlbSBzZW1hcGhvcmUgaXMgdXNlZCB0byBwcm90ZWN0IGFnYWluc3QgcG9ydHMgYmVpbmcgYWRkZWQvCityZW1vdmVkIG9yIHJlY29uZmlndXJlZCBhdCBpbmFwcHJvcHJpYXRlIHRpbWVzLiBTaW5jZSB2Mi42LjI3LCB0aGlzCitzZW1hcGhvcmUgaGFzIGJlZW4gdGhlICdtdXRleCcgbWVtYmVyIG9mIHRoZSB0dHlfcG9ydCBzdHJ1Y3QsIGFuZAorY29tbW9ubHkgcmVmZXJyZWQgdG8gYXMgdGhlIHBvcnQgbXV0ZXggKG9yIHBvcnQtPm11dGV4KS4KKworCit1YXJ0X29wcworLS0tLS0tLS0KKworVGhlIHVhcnRfb3BzIHN0cnVjdHVyZSBpcyB0aGUgbWFpbiBpbnRlcmZhY2UgYmV0d2VlbiBzZXJpYWxfY29yZSBhbmQgdGhlCitoYXJkd2FyZSBzcGVjaWZpYyBkcml2ZXIuICBJdCBjb250YWlucyBhbGwgdGhlIG1ldGhvZHMgdG8gY29udHJvbCB0aGUKK2hhcmR3YXJlLgorCisgIHR4X2VtcHR5KHBvcnQpCisJVGhpcyBmdW5jdGlvbiB0ZXN0cyB3aGV0aGVyIHRoZSB0cmFuc21pdHRlciBmaWZvIGFuZCBzaGlmdGVyCisJZm9yIHRoZSBwb3J0IGRlc2NyaWJlZCBieSAncG9ydCcgaXMgZW1wdHkuICBJZiBpdCBpcyBlbXB0eSwKKwl0aGlzIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gVElPQ1NFUl9URU1ULCBvdGhlcndpc2UgcmV0dXJuIDAuCisJSWYgdGhlIHBvcnQgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbiwgdGhlbiBpdCBzaG91bGQKKwlyZXR1cm4gVElPQ1NFUl9URU1ULgorCisJTG9ja2luZzogbm9uZS4KKwlJbnRlcnJ1cHRzOiBjYWxsZXIgZGVwZW5kZW50LgorCVRoaXMgY2FsbCBtdXN0IG5vdCBzbGVlcAorCisgIHNldF9tY3RybChwb3J0LCBtY3RybCkKKwlUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIG1vZGVtIGNvbnRyb2wgbGluZXMgZm9yIHBvcnQgZGVzY3JpYmVkCisJYnkgJ3BvcnQnIHRvIHRoZSBzdGF0ZSBkZXNjcmliZWQgYnkgbWN0cmwuICBUaGUgcmVsZXZhbnQgYml0cworCW9mIG1jdHJsIGFyZToKKwkJLSBUSU9DTV9SVFMJUlRTIHNpZ25hbC4KKwkJLSBUSU9DTV9EVFIJRFRSIHNpZ25hbC4KKwkJLSBUSU9DTV9PVVQxCU9VVDEgc2lnbmFsLgorCQktIFRJT0NNX09VVDIJT1VUMiBzaWduYWwuCisJCS0gVElPQ01fTE9PUAlTZXQgdGhlIHBvcnQgaW50byBsb29wYmFjayBtb2RlLgorCUlmIHRoZSBhcHByb3ByaWF0ZSBiaXQgaXMgc2V0LCB0aGUgc2lnbmFsIHNob3VsZCBiZSBkcml2ZW4KKwlhY3RpdmUuICBJZiB0aGUgYml0IGlzIGNsZWFyLCB0aGUgc2lnbmFsIHNob3VsZCBiZSBkcml2ZW4KKwlpbmFjdGl2ZS4KKworCUxvY2tpbmc6IHBvcnQtPmxvY2sgdGFrZW4uCisJSW50ZXJydXB0czogbG9jYWxseSBkaXNhYmxlZC4KKwlUaGlzIGNhbGwgbXVzdCBub3Qgc2xlZXAKKworICBnZXRfbWN0cmwocG9ydCkKKwlSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlIG9mIG1vZGVtIGNvbnRyb2wgaW5wdXRzLiAgVGhlIHN0YXRlCisJb2YgdGhlIG91dHB1dHMgc2hvdWxkIG5vdCBiZSByZXR1cm5lZCwgc2luY2UgdGhlIGNvcmUga2VlcHMKKwl0cmFjayBvZiB0aGVpciBzdGF0ZS4gIFRoZSBzdGF0ZSBpbmZvcm1hdGlvbiBzaG91bGQgaW5jbHVkZToKKwkJLSBUSU9DTV9DQVIJc3RhdGUgb2YgRENEIHNpZ25hbAorCQktIFRJT0NNX0NUUwlzdGF0ZSBvZiBDVFMgc2lnbmFsCisJCS0gVElPQ01fRFNSCXN0YXRlIG9mIERTUiBzaWduYWwKKwkJLSBUSU9DTV9SSQlzdGF0ZSBvZiBSSSBzaWduYWwKKwlUaGUgYml0IGlzIHNldCBpZiB0aGUgc2lnbmFsIGlzIGN1cnJlbnRseSBkcml2ZW4gYWN0aXZlLiAgSWYKKwl0aGUgcG9ydCBkb2VzIG5vdCBzdXBwb3J0IENUUywgRENEIG9yIERTUiwgdGhlIGRyaXZlciBzaG91bGQKKwlpbmRpY2F0ZSB0aGF0IHRoZSBzaWduYWwgaXMgcGVybWFuZW50bHkgYWN0aXZlLiAgSWYgUkkgaXMKKwlub3QgYXZhaWxhYmxlLCB0aGUgc2lnbmFsIHNob3VsZCBub3QgYmUgaW5kaWNhdGVkIGFzIGFjdGl2ZS4KKworCUxvY2tpbmc6IHBvcnQtPmxvY2sgdGFrZW4uCisJSW50ZXJydXB0czogbG9jYWxseSBkaXNhYmxlZC4KKwlUaGlzIGNhbGwgbXVzdCBub3Qgc2xlZXAKKworICBzdG9wX3R4KHBvcnQpCisJU3RvcCB0cmFuc21pdHRpbmcgY2hhcmFjdGVycy4gIFRoaXMgbWlnaHQgYmUgZHVlIHRvIHRoZSBDVFMKKwlsaW5lIGJlY29taW5nIGluYWN0aXZlIG9yIHRoZSB0dHkgbGF5ZXIgaW5kaWNhdGluZyB3ZSB3YW50CisJdG8gc3RvcCB0cmFuc21pc3Npb24gZHVlIHRvIGFuIFhPRkYgY2hhcmFjdGVyLgorCisJVGhlIGRyaXZlciBzaG91bGQgc3RvcCB0cmFuc21pdHRpbmcgY2hhcmFjdGVycyBhcyBzb29uIGFzCisJcG9zc2libGUuCisKKwlMb2NraW5nOiBwb3J0LT5sb2NrIHRha2VuLgorCUludGVycnVwdHM6IGxvY2FsbHkgZGlzYWJsZWQuCisJVGhpcyBjYWxsIG11c3Qgbm90IHNsZWVwCisKKyAgc3RhcnRfdHgocG9ydCkKKwlTdGFydCB0cmFuc21pdHRpbmcgY2hhcmFjdGVycy4KKworCUxvY2tpbmc6IHBvcnQtPmxvY2sgdGFrZW4uCisJSW50ZXJydXB0czogbG9jYWxseSBkaXNhYmxlZC4KKwlUaGlzIGNhbGwgbXVzdCBub3Qgc2xlZXAKKworICBzZW5kX3hjaGFyKHBvcnQsY2gpCisJVHJhbnNtaXQgYSBoaWdoIHByaW9yaXR5IGNoYXJhY3RlciwgZXZlbiBpZiB0aGUgcG9ydCBpcyBzdG9wcGVkLgorCVRoaXMgaXMgdXNlZCB0byBpbXBsZW1lbnQgWE9OL1hPRkYgZmxvdyBjb250cm9sIGFuZCB0Y2Zsb3coKS4gIElmCisJdGhlIHNlcmlhbCBkcml2ZXIgZG9lcyBub3QgaW1wbGVtZW50IHRoaXMgZnVuY3Rpb24sIHRoZSB0dHkgY29yZQorCXdpbGwgYXBwZW5kIHRoZSBjaGFyYWN0ZXIgdG8gdGhlIGNpcmN1bGFyIGJ1ZmZlciBhbmQgdGhlbiBjYWxsCisJc3RhcnRfdHgoKSAvIHN0b3BfdHgoKSB0byBmbHVzaCB0aGUgZGF0YSBvdXQuCisKKwlEbyBub3QgdHJhbnNtaXQgaWYgY2ggPT0gJ1wwJyAoX19ESVNBQkxFRF9DSEFSKS4KKworCUxvY2tpbmc6IG5vbmUuCisJSW50ZXJydXB0czogY2FsbGVyIGRlcGVuZGVudC4KKworICBzdG9wX3J4KHBvcnQpCisJU3RvcCByZWNlaXZpbmcgY2hhcmFjdGVyczsgdGhlIHBvcnQgaXMgaW4gdGhlIHByb2Nlc3Mgb2YKKwliZWluZyBjbG9zZWQuCisKKwlMb2NraW5nOiBwb3J0LT5sb2NrIHRha2VuLgorCUludGVycnVwdHM6IGxvY2FsbHkgZGlzYWJsZWQuCisJVGhpcyBjYWxsIG11c3Qgbm90IHNsZWVwCisKKyAgZW5hYmxlX21zKHBvcnQpCisJRW5hYmxlIHRoZSBtb2RlbSBzdGF0dXMgaW50ZXJydXB0cy4KKworCVRoaXMgbWV0aG9kIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMuICBNb2RlbSBzdGF0dXMKKwlpbnRlcnJ1cHRzIHNob3VsZCBiZSBkaXNhYmxlZCB3aGVuIHRoZSBzaHV0ZG93biBtZXRob2QgaXMKKwljYWxsZWQuCisKKwlMb2NraW5nOiBwb3J0LT5sb2NrIHRha2VuLgorCUludGVycnVwdHM6IGxvY2FsbHkgZGlzYWJsZWQuCisJVGhpcyBjYWxsIG11c3Qgbm90IHNsZWVwCisKKyAgYnJlYWtfY3RsKHBvcnQsY3RsKQorCUNvbnRyb2wgdGhlIHRyYW5zbWlzc2lvbiBvZiBhIGJyZWFrIHNpZ25hbC4gIElmIGN0bCBpcworCW5vbnplcm8sIHRoZSBicmVhayBzaWduYWwgc2hvdWxkIGJlIHRyYW5zbWl0dGVkLiAgVGhlIHNpZ25hbAorCXNob3VsZCBiZSB0ZXJtaW5hdGVkIHdoZW4gYW5vdGhlciBjYWxsIGlzIG1hZGUgd2l0aCBhIHplcm8KKwljdGwuCisKKwlMb2NraW5nOiBub25lLgorCUludGVycnVwdHM6IGNhbGxlciBkZXBlbmRlbnQuCisJVGhpcyBjYWxsIG11c3Qgbm90IHNsZWVwCisKKyAgc3RhcnR1cChwb3J0KQorCUdyYWIgYW55IGludGVycnVwdCByZXNvdXJjZXMgYW5kIGluaXRpYWxpc2UgYW55IGxvdyBsZXZlbCBkcml2ZXIKKwlzdGF0ZS4gIEVuYWJsZSB0aGUgcG9ydCBmb3IgcmVjZXB0aW9uLiAgSXQgc2hvdWxkIG5vdCBhY3RpdmF0ZQorCVJUUyBub3IgRFRSOyB0aGlzIHdpbGwgYmUgZG9uZSB2aWEgYSBzZXBhcmF0ZSBjYWxsIHRvIHNldF9tY3RybC4KKworCVRoaXMgbWV0aG9kIHdpbGwgb25seSBiZSBjYWxsZWQgd2hlbiB0aGUgcG9ydCBpcyBpbml0aWFsbHkgb3BlbmVkLgorCisJTG9ja2luZzogcG9ydF9zZW0gdGFrZW4uCisJSW50ZXJydXB0czogZ2xvYmFsbHkgZGlzYWJsZWQuCisKKyAgc2h1dGRvd24ocG9ydCkKKwlEaXNhYmxlIHRoZSBwb3J0LCBkaXNhYmxlIGFueSBicmVhayBjb25kaXRpb24gdGhhdCBtYXkgYmUgaW4KKwllZmZlY3QsIGFuZCBmcmVlIGFueSBpbnRlcnJ1cHQgcmVzb3VyY2VzLiAgSXQgc2hvdWxkIG5vdCBkaXNhYmxlCisJUlRTIG5vciBEVFI7IHRoaXMgd2lsbCBoYXZlIGFscmVhZHkgYmVlbiBkb25lIHZpYSBhIHNlcGFyYXRlCisJY2FsbCB0byBzZXRfbWN0cmwuCisKKwlEcml2ZXJzIG11c3Qgbm90IGFjY2VzcyBwb3J0LT5pbmZvIG9uY2UgdGhpcyBjYWxsIGhhcyBjb21wbGV0ZWQuCisKKwlUaGlzIG1ldGhvZCB3aWxsIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIG1vcmUgdXNlcnMgb2YKKwl0aGlzIHBvcnQuCisKKwlMb2NraW5nOiBwb3J0X3NlbSB0YWtlbi4KKwlJbnRlcnJ1cHRzOiBjYWxsZXIgZGVwZW5kZW50LgorCisgIGZsdXNoX2J1ZmZlcihwb3J0KQorCUZsdXNoIGFueSB3cml0ZSBidWZmZXJzLCByZXNldCBhbnkgRE1BIHN0YXRlIGFuZCBzdG9wIGFueQorCW9uZ29pbmcgRE1BIHRyYW5zZmVycy4KKworCVRoaXMgd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIHBvcnQtPmluZm8tPnhtaXQgY2lyY3VsYXIKKwlidWZmZXIgaXMgY2xlYXJlZC4KKworCUxvY2tpbmc6IHBvcnQtPmxvY2sgdGFrZW4uCisJSW50ZXJydXB0czogbG9jYWxseSBkaXNhYmxlZC4KKwlUaGlzIGNhbGwgbXVzdCBub3Qgc2xlZXAKKworICBzZXRfdGVybWlvcyhwb3J0LHRlcm1pb3Msb2xkdGVybWlvcykKKwlDaGFuZ2UgdGhlIHBvcnQgcGFyYW1ldGVycywgaW5jbHVkaW5nIHdvcmQgbGVuZ3RoLCBwYXJpdHksIHN0b3AKKwliaXRzLiAgVXBkYXRlIHJlYWRfc3RhdHVzX21hc2sgYW5kIGlnbm9yZV9zdGF0dXNfbWFzayB0byBpbmRpY2F0ZQorCXRoZSB0eXBlcyBvZiBldmVudHMgd2UgYXJlIGludGVyZXN0ZWQgaW4gcmVjZWl2aW5nLiAgUmVsZXZhbnQKKwl0ZXJtaW9zLT5jX2NmbGFnIGJpdHMgYXJlOgorCQlDU0laRQktIHdvcmQgc2l6ZQorCQlDU1RPUEIJLSAyIHN0b3AgYml0cworCQlQQVJFTkIJLSBwYXJpdHkgZW5hYmxlCisJCVBBUk9ERAktIG9kZCBwYXJpdHkgKHdoZW4gUEFSRU5CIGlzIGluIGZvcmNlKQorCQlDUkVBRAktIGVuYWJsZSByZWNlcHRpb24gb2YgY2hhcmFjdGVycyAoaWYgbm90IHNldCwKKwkJCSAgc3RpbGwgcmVjZWl2ZSBjaGFyYWN0ZXJzIGZyb20gdGhlIHBvcnQsIGJ1dAorCQkJICB0aHJvdyB0aGVtIGF3YXkuCisJCUNSVFNDVFMJLSBpZiBzZXQsIGVuYWJsZSBDVFMgc3RhdHVzIGNoYW5nZSByZXBvcnRpbmcKKwkJQ0xPQ0FMCS0gaWYgbm90IHNldCwgZW5hYmxlIG1vZGVtIHN0YXR1cyBjaGFuZ2UKKwkJCSAgcmVwb3J0aW5nLgorCVJlbGV2YW50IHRlcm1pb3MtPmNfaWZsYWcgYml0cyBhcmU6CisJCUlOUENLCS0gZW5hYmxlIGZyYW1lIGFuZCBwYXJpdHkgZXJyb3IgZXZlbnRzIHRvIGJlCisJCQkgIHBhc3NlZCB0byB0aGUgVFRZIGxheWVyLgorCQlCUktJTlQKKwkJUEFSTVJLCS0gYm90aCBvZiB0aGVzZSBlbmFibGUgYnJlYWsgZXZlbnRzIHRvIGJlCisJCQkgIHBhc3NlZCB0byB0aGUgVFRZIGxheWVyLgorCisJCUlHTlBBUgktIGlnbm9yZSBwYXJpdHkgYW5kIGZyYW1pbmcgZXJyb3JzCisJCUlHTkJSSwktIGlnbm9yZSBicmVhayBlcnJvcnMsICBJZiBJR05QQVIgaXMgYWxzbworCQkJICBzZXQsIGlnbm9yZSBvdmVycnVuIGVycm9ycyBhcyB3ZWxsLgorCVRoZSBpbnRlcmFjdGlvbiBvZiB0aGUgaWZsYWcgYml0cyBpcyBhcyBmb2xsb3dzIChwYXJpdHkgZXJyb3IKKwlnaXZlbiBhcyBhbiBleGFtcGxlKToKKwlQYXJpdHkgZXJyb3IJSU5QQ0sJSUdOUEFSCisJbi9hCQkwCW4vYQljaGFyYWN0ZXIgcmVjZWl2ZWQsIG1hcmtlZCBhcworCQkJCQlUVFlfTk9STUFMCisJTm9uZQkJMQluL2EJY2hhcmFjdGVyIHJlY2VpdmVkLCBtYXJrZWQgYXMKKwkJCQkJVFRZX05PUk1BTAorCVllcwkJMQkwCWNoYXJhY3RlciByZWNlaXZlZCwgbWFya2VkIGFzCisJCQkJCVRUWV9QQVJJVFkKKwlZZXMJCTEJMQljaGFyYWN0ZXIgZGlzY2FyZGVkCisKKwlPdGhlciBmbGFncyBtYXkgYmUgdXNlZCAoZWcsIHhvbi94b2ZmIGNoYXJhY3RlcnMpIGlmIHlvdXIKKwloYXJkd2FyZSBzdXBwb3J0cyBoYXJkd2FyZSAic29mdCIgZmxvdyBjb250cm9sLgorCisJTG9ja2luZzogY2FsbGVyIGhvbGRzIHBvcnQtPm11dGV4CisJSW50ZXJydXB0czogY2FsbGVyIGRlcGVuZGVudC4KKwlUaGlzIGNhbGwgbXVzdCBub3Qgc2xlZXAKKworICBwbShwb3J0LHN0YXRlLG9sZHN0YXRlKQorCVBlcmZvcm0gYW55IHBvd2VyIG1hbmFnZW1lbnQgcmVsYXRlZCBhY3Rpdml0aWVzIG9uIHRoZSBzcGVjaWZpZWQKKwlwb3J0LiAgU3RhdGUgaW5kaWNhdGVzIHRoZSBuZXcgc3RhdGUgKGRlZmluZWQgYnkKKwllbnVtIHVhcnRfcG1fc3RhdGUpLCBvbGRzdGF0ZSBpbmRpY2F0ZXMgdGhlIHByZXZpb3VzIHN0YXRlLgorCisJVGhpcyBmdW5jdGlvbiBzaG91bGQgbm90IGJlIHVzZWQgdG8gZ3JhYiBhbnkgcmVzb3VyY2VzLgorCisJVGhpcyB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBwb3J0IGlzIGluaXRpYWxseSBvcGVuZWQgYW5kIGZpbmFsbHkKKwljbG9zZWQsIGV4Y2VwdCB3aGVuIHRoZSBwb3J0IGlzIGFsc28gdGhlIHN5c3RlbSBjb25zb2xlLiAgVGhpcworCXdpbGwgb2NjdXIgZXZlbiBpZiBDT05GSUdfUE0gaXMgbm90IHNldC4KKworCUxvY2tpbmc6IG5vbmUuCisJSW50ZXJydXB0czogY2FsbGVyIGRlcGVuZGVudC4KKworICB0eXBlKHBvcnQpCisJUmV0dXJuIGEgcG9pbnRlciB0byBhIHN0cmluZyBjb25zdGFudCBkZXNjcmliaW5nIHRoZSBzcGVjaWZpZWQKKwlwb3J0LCBvciByZXR1cm4gTlVMTCwgaW4gd2hpY2ggY2FzZSB0aGUgc3RyaW5nICd1bmtub3duJyBpcworCXN1YnN0aXR1dGVkLgorCisJTG9ja2luZzogbm9uZS4KKwlJbnRlcnJ1cHRzOiBjYWxsZXIgZGVwZW5kZW50LgorCisgIHJlbGVhc2VfcG9ydChwb3J0KQorCVJlbGVhc2UgYW55IG1lbW9yeSBhbmQgSU8gcmVnaW9uIHJlc291cmNlcyBjdXJyZW50bHkgaW4gdXNlIGJ5CisJdGhlIHBvcnQuCisKKwlMb2NraW5nOiBub25lLgorCUludGVycnVwdHM6IGNhbGxlciBkZXBlbmRlbnQuCisKKyAgcmVxdWVzdF9wb3J0KHBvcnQpCisJUmVxdWVzdCBhbnkgbWVtb3J5IGFuZCBJTyByZWdpb24gcmVzb3VyY2VzIHJlcXVpcmVkIGJ5IHRoZSBwb3J0LgorCUlmIGFueSBmYWlsLCBubyByZXNvdXJjZXMgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgd2hlbiB0aGlzIGZ1bmN0aW9uCisJcmV0dXJucywgYW5kIGl0IHNob3VsZCByZXR1cm4gLUVCVVNZIG9uIGZhaWx1cmUuCisKKwlMb2NraW5nOiBub25lLgorCUludGVycnVwdHM6IGNhbGxlciBkZXBlbmRlbnQuCisKKyAgY29uZmlnX3BvcnQocG9ydCx0eXBlKQorCVBlcmZvcm0gYW55IGF1dG9jb25maWd1cmF0aW9uIHN0ZXBzIHJlcXVpcmVkIGZvciB0aGUgcG9ydC4gIGB0eXBlYAorCWNvbnRhaW5zIGEgYml0IG1hc2sgb2YgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24uICBVQVJUX0NPTkZJR19UWVBFCisJaW5kaWNhdGVzIHRoYXQgdGhlIHBvcnQgcmVxdWlyZXMgZGV0ZWN0aW9uIGFuZCBpZGVudGlmaWNhdGlvbi4KKwlwb3J0LT50eXBlIHNob3VsZCBiZSBzZXQgdG8gdGhlIHR5cGUgZm91bmQsIG9yIFBPUlRfVU5LTk9XTiBpZgorCW5vIHBvcnQgd2FzIGRldGVjdGVkLgorCisJVUFSVF9DT05GSUdfSVJRIGluZGljYXRlcyBhdXRvY29uZmlndXJhdGlvbiBvZiB0aGUgaW50ZXJydXB0IHNpZ25hbCwKKwl3aGljaCBzaG91bGQgYmUgcHJvYmVkIHVzaW5nIHN0YW5kYXJkIGtlcm5lbCBhdXRvcHJvYmluZyB0ZWNobmlxdWVzLgorCVRoaXMgaXMgbm90IG5lY2Vzc2FyeSBvbiBwbGF0Zm9ybXMgd2hlcmUgcG9ydHMgaGF2ZSBpbnRlcnJ1cHRzCisJaW50ZXJuYWxseSBoYXJkIHdpcmVkIChlZywgc3lzdGVtIG9uIGEgY2hpcCBpbXBsZW1lbnRhdGlvbnMpLgorCisJTG9ja2luZzogbm9uZS4KKwlJbnRlcnJ1cHRzOiBjYWxsZXIgZGVwZW5kZW50LgorCisgIHZlcmlmeV9wb3J0KHBvcnQsc2VyaW5mbykKKwlWZXJpZnkgdGhlIG5ldyBzZXJpYWwgcG9ydCBpbmZvcm1hdGlvbiBjb250YWluZWQgd2l0aGluIHNlcmluZm8gaXMKKwlzdWl0YWJsZSBmb3IgdGhpcyBwb3J0IHR5cGUuCisKKwlMb2NraW5nOiBub25lLgorCUludGVycnVwdHM6IGNhbGxlciBkZXBlbmRlbnQuCisKKyAgaW9jdGwocG9ydCxjbWQsYXJnKQorCVBlcmZvcm0gYW55IHBvcnQgc3BlY2lmaWMgSU9DVExzLiAgSU9DVEwgY29tbWFuZHMgbXVzdCBiZSBkZWZpbmVkCisJdXNpbmcgdGhlIHN0YW5kYXJkIG51bWJlcmluZyBzeXN0ZW0gZm91bmQgaW4gPGFzbS9pb2N0bC5oPgorCisJTG9ja2luZzogbm9uZS4KKwlJbnRlcnJ1cHRzOiBjYWxsZXIgZGVwZW5kZW50LgorCisgIHBvbGxfaW5pdChwb3J0KQorCUNhbGxlZCBieSBrZ2RiIHRvIHBlcmZvcm0gdGhlIG1pbmltYWwgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gbmVlZGVkCisJdG8gc3VwcG9ydCBwb2xsX3B1dF9jaGFyKCkgYW5kIHBvbGxfZ2V0X2NoYXIoKS4gIFVubGlrZSAtPnN0YXJ0dXAoKQorCXRoaXMgc2hvdWxkIG5vdCByZXF1ZXN0IGludGVycnVwdHMuCisKKwlMb2NraW5nOiB0dHlfbXV0ZXggYW5kIHR0eV9wb3J0LT5tdXRleCB0YWtlbi4KKwlJbnRlcnJ1cHRzOiBuL2EuCisKKyAgcG9sbF9wdXRfY2hhcihwb3J0LGNoKQorCUNhbGxlZCBieSBrZ2RiIHRvIHdyaXRlIGEgc2luZ2xlIGNoYXJhY3RlciBkaXJlY3RseSB0byB0aGUgc2VyaWFsCisJcG9ydC4gIEl0IGNhbiBhbmQgc2hvdWxkIGJsb2NrIHVudGlsIHRoZXJlIGlzIHNwYWNlIGluIHRoZSBUWCBGSUZPLgorCisJTG9ja2luZzogbm9uZS4KKwlJbnRlcnJ1cHRzOiBjYWxsZXIgZGVwZW5kZW50LgorCVRoaXMgY2FsbCBtdXN0IG5vdCBzbGVlcAorCisgIHBvbGxfZ2V0X2NoYXIocG9ydCkKKwlDYWxsZWQgYnkga2dkYiB0byByZWFkIGEgc2luZ2xlIGNoYXJhY3RlciBkaXJlY3RseSBmcm9tIHRoZSBzZXJpYWwKKwlwb3J0LiAgSWYgZGF0YSBpcyBhdmFpbGFibGUsIGl0IHNob3VsZCBiZSByZXR1cm5lZDsgb3RoZXJ3aXNlCisJdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gTk9fUE9MTF9DSEFSIGltbWVkaWF0ZWx5LgorCisJTG9ja2luZzogbm9uZS4KKwlJbnRlcnJ1cHRzOiBjYWxsZXIgZGVwZW5kZW50LgorCVRoaXMgY2FsbCBtdXN0IG5vdCBzbGVlcAorCitPdGhlciBmdW5jdGlvbnMKKy0tLS0tLS0tLS0tLS0tLQorCit1YXJ0X3VwZGF0ZV90aW1lb3V0KHBvcnQsY2ZsYWcsYmF1ZCkKKwlVcGRhdGUgdGhlIEZJRk8gZHJhaW4gdGltZW91dCwgcG9ydC0+dGltZW91dCwgYWNjb3JkaW5nIHRvIHRoZQorCW51bWJlciBvZiBiaXRzLCBwYXJpdHksIHN0b3AgYml0cyBhbmQgYmF1ZCByYXRlLgorCisJTG9ja2luZzogY2FsbGVyIGlzIGV4cGVjdGVkIHRvIHRha2UgcG9ydC0+bG9jaworCUludGVycnVwdHM6IG4vYQorCit1YXJ0X2dldF9iYXVkX3JhdGUocG9ydCx0ZXJtaW9zLG9sZCxtaW4sbWF4KQorCVJldHVybiB0aGUgbnVtZXJpYyBiYXVkIHJhdGUgZm9yIHRoZSBzcGVjaWZpZWQgdGVybWlvcywgdGFraW5nCisJYWNjb3VudCBvZiB0aGUgc3BlY2lhbCAzODQwMCBiYXVkICJrbHVkZ2UiLiAgVGhlIEIwIGJhdWQgcmF0ZQorCWlzIG1hcHBlZCB0byA5NjAwIGJhdWQuCisKKwlJZiB0aGUgYmF1ZCByYXRlIGlzIG5vdCB3aXRoaW4gbWluLi5tYXgsIHRoZW4gaWYgb2xkIGlzIG5vbi1OVUxMLAorCXRoZSBvcmlnaW5hbCBiYXVkIHJhdGUgd2lsbCBiZSB0cmllZC4gIElmIHRoYXQgZXhjZWVkcyB0aGUKKwltaW4uLm1heCBjb25zdHJhaW50LCA5NjAwIGJhdWQgd2lsbCBiZSByZXR1cm5lZC4gIHRlcm1pb3Mgd2lsbAorCWJlIHVwZGF0ZWQgdG8gdGhlIGJhdWQgcmF0ZSBpbiB1c2UuCisKKwlOb3RlOiBtaW4uLm1heCBtdXN0IGFsd2F5cyBhbGxvdyA5NjAwIGJhdWQgdG8gYmUgc2VsZWN0ZWQuCisKKwlMb2NraW5nOiBjYWxsZXIgZGVwZW5kZW50LgorCUludGVycnVwdHM6IG4vYQorCit1YXJ0X2dldF9kaXZpc29yKHBvcnQsYmF1ZCkKKwlSZXR1cm4gdGhlIGRpdnNvciAoYmF1ZF9iYXNlIC8gYmF1ZCkgZm9yIHRoZSBzcGVjaWZpZWQgYmF1ZAorCXJhdGUsIGFwcHJvcHJpYXRlbHkgcm91bmRlZC4KKworCUlmIDM4NDAwIGJhdWQgYW5kIGN1c3RvbSBkaXZpc29yIGlzIHNlbGVjdGVkLCByZXR1cm4gdGhlCisJY3VzdG9tIGRpdmlzb3IgaW5zdGVhZC4KKworCUxvY2tpbmc6IGNhbGxlciBkZXBlbmRlbnQuCisJSW50ZXJydXB0czogbi9hCisKK3VhcnRfbWF0Y2hfcG9ydChwb3J0MSxwb3J0MikKKwlUaGlzIHV0aWxpdHkgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdHdvCisJdWFydF9wb3J0IHN0cnVjdHVyZXMgZGVzY3JpYmUgdGhlIHNhbWUgcG9ydC4KKworCUxvY2tpbmc6IG4vYQorCUludGVycnVwdHM6IG4vYQorCit1YXJ0X3dyaXRlX3dha2V1cChwb3J0KQorCUEgZHJpdmVyIGlzIGV4cGVjdGVkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiB3aGVuIHRoZSBudW1iZXIgb2YKKwljaGFyYWN0ZXJzIGluIHRoZSB0cmFuc21pdCBidWZmZXIgaGF2ZSBkcm9wcGVkIGJlbG93IGEgdGhyZXNob2xkLgorCisJTG9ja2luZzogcG9ydC0+bG9jayBzaG91bGQgYmUgaGVsZC4KKwlJbnRlcnJ1cHRzOiBuL2EKKwordWFydF9yZWdpc3Rlcl9kcml2ZXIoZHJ2KQorCVJlZ2lzdGVyIGEgdWFydCBkcml2ZXIgd2l0aCB0aGUgY29yZSBkcml2ZXIuICBXZSBpbiB0dXJuIHJlZ2lzdGVyCisJd2l0aCB0aGUgdHR5IGxheWVyLCBhbmQgaW5pdGlhbGlzZSB0aGUgY29yZSBkcml2ZXIgcGVyLXBvcnQgc3RhdGUuCisKKwlkcnYtPnBvcnQgc2hvdWxkIGJlIE5VTEwsIGFuZCB0aGUgcGVyLXBvcnQgc3RydWN0dXJlcyBzaG91bGQgYmUKKwlyZWdpc3RlcmVkIHVzaW5nIHVhcnRfYWRkX29uZV9wb3J0IGFmdGVyIHRoaXMgY2FsbCBoYXMgc3VjY2VlZGVkLgorCisJTG9ja2luZzogbm9uZQorCUludGVycnVwdHM6IGVuYWJsZWQKKwordWFydF91bnJlZ2lzdGVyX2RyaXZlcigpCisJUmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIGEgZHJpdmVyIGZyb20gdGhlIGNvcmUgZHJpdmVyLiAgVGhlIGxvdworCWxldmVsIGRyaXZlciBtdXN0IGhhdmUgcmVtb3ZlZCBhbGwgaXRzIHBvcnRzIHZpYSB0aGUKKwl1YXJ0X3JlbW92ZV9vbmVfcG9ydCgpIGlmIGl0IHJlZ2lzdGVyZWQgdGhlbSB3aXRoIHVhcnRfYWRkX29uZV9wb3J0KCkuCisKKwlMb2NraW5nOiBub25lCisJSW50ZXJydXB0czogZW5hYmxlZAorCit1YXJ0X3N1c3BlbmRfcG9ydCgpCisKK3VhcnRfcmVzdW1lX3BvcnQoKQorCit1YXJ0X2FkZF9vbmVfcG9ydCgpCisKK3VhcnRfcmVtb3ZlX29uZV9wb3J0KCkKKworT3RoZXIgbm90ZXMKKy0tLS0tLS0tLS0tCisKK0l0IGlzIGludGVuZGVkIHNvbWUgZGF5IHRvIGRyb3AgdGhlICd1bnVzZWQnIGVudHJpZXMgZnJvbSB1YXJ0X3BvcnQsIGFuZAorYWxsb3cgbG93IGxldmVsIGRyaXZlcnMgdG8gcmVnaXN0ZXIgdGhlaXIgb3duIGluZGl2aWR1YWwgdWFydF9wb3J0J3Mgd2l0aAordGhlIGNvcmUuICBUaGlzIHdpbGwgYWxsb3cgZHJpdmVycyB0byB1c2UgdWFydF9wb3J0IGFzIGEgcG9pbnRlciB0byBhCitzdHJ1Y3R1cmUgY29udGFpbmluZyBib3RoIHRoZSB1YXJ0X3BvcnQgZW50cnkgd2l0aCB0aGVpciBvd24gZXh0ZW5zaW9ucywKK3RodXM6CisKKwlzdHJ1Y3QgbXlfcG9ydCB7CisJCXN0cnVjdCB1YXJ0X3BvcnQJcG9ydDsKKwkJaW50CQkJbXlfc3R1ZmY7CisJfTsKKworTW9kZW0gY29udHJvbCBsaW5lcyB2aWEgR1BJTworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTb21lIGhlbHBlcnMgYXJlIHByb3ZpZGVkIGluIG9yZGVyIHRvIHNldC9nZXQgbW9kZW0gY29udHJvbCBsaW5lcyB2aWEgR1BJTy4KKworbWN0cmxfZ3Bpb19pbml0KHBvcnQsIGlkeCk6CisJVGhpcyB3aWxsIGdldCB0aGUge2N0cyxydHMsLi4ufS1ncGlvcyBmcm9tIGRldmljZSB0cmVlIGlmIHRoZXkgYXJlCisJcHJlc2VudCBhbmQgcmVxdWVzdCB0aGVtLCBzZXQgZGlyZWN0aW9uIGV0YywgYW5kIHJldHVybiBhbgorCWFsbG9jYXRlZCBzdHJ1Y3R1cmUuIGRldm1fKiBmdW5jdGlvbnMgYXJlIHVzZWQsIHNvIHRoZXJlJ3Mgbm8gbmVlZAorCXRvIGNhbGwgbWN0cmxfZ3Bpb19mcmVlKCkuCisJQXMgdGhpcyBzZXRzIHVwIHRoZSBpcnEgaGFuZGxpbmcgbWFrZSBzdXJlIHRvIG5vdCBoYW5kbGUgY2hhbmdlcyB0byB0aGUKKwlncGlvIGlucHV0IGxpbmVzIGluIHlvdXIgZHJpdmVyLCB0b28uCisKK21jdHJsX2dwaW9fZnJlZShkZXYsIGdwaW9zKToKKwlUaGlzIHdpbGwgZnJlZSB0aGUgcmVxdWVzdGVkIGdwaW9zIGluIG1jdHJsX2dwaW9faW5pdCgpLgorCUFzIGRldm1fKiBmdW5jdGlvbiBhcmUgdXNlZCwgdGhlcmUncyBnZW5lcmFsbHkgbm8gbmVlZCB0byBjYWxsCisJdGhpcyBmdW5jdGlvbi4KKworbWN0cmxfZ3Bpb190b19ncGlvZChncGlvcywgZ2lkeCkKKwlUaGlzIHJldHVybnMgdGhlIGdwaW8gc3RydWN0dXJlIGFzc29jaWF0ZWQgdG8gdGhlIG1vZGVtIGxpbmUgaW5kZXguCisKK21jdHJsX2dwaW9fc2V0KGdwaW9zLCBtY3RybCk6CisJVGhpcyB3aWxsIHNldHMgdGhlIGdwaW9zIGFjY29yZGluZyB0byB0aGUgbWN0cmwgc3RhdGUuCisKK21jdHJsX2dwaW9fZ2V0KGdwaW9zLCBtY3RybCk6CisJVGhpcyB3aWxsIHVwZGF0ZSBtY3RybCB3aXRoIHRoZSBncGlvcyB2YWx1ZXMuCisKK21jdHJsX2dwaW9fZW5hYmxlX21zKGdwaW9zKToKKwlFbmFibGVzIGlycXMgYW5kIGhhbmRsaW5nIG9mIGNoYW5nZXMgdG8gdGhlIG1zIGxpbmVzLgorCittY3RybF9ncGlvX2Rpc2FibGVfbXMoZ3Bpb3MpOgorCURpc2FibGVzIGlycXMgYW5kIGhhbmRsaW5nIG9mIGNoYW5nZXMgdG8gdGhlIG1zIGxpbmVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zZXJpYWwvbW94YS1zbWFydGlvIGIvRG9jdW1lbnRhdGlvbi9zZXJpYWwvbW94YS1zbWFydGlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkMmEzM2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NlcmlhbC9tb3hhLXNtYXJ0aW8KQEAgLTAsMCArMSw1MjMgQEAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICAgICAgTU9YQSBTbWFydGlvL0luZHVzdGlvIEZhbWlseSBEZXZpY2UgRHJpdmVyIEluc3RhbGxhdGlvbiBHdWlkZQorCQkgICAgZm9yIExpbnV4IEtlcm5lbCAyLjQueCwgMi42LngKKwkgICAgICAgQ29weXJpZ2h0IChDKSAyMDA4LCBNb3hhIEluYy4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitEYXRlOiAwMS8yMS8yMDA4CisKK0NvbnRlbnQKKworMS4gSW50cm9kdWN0aW9uCisyLiBTeXN0ZW0gUmVxdWlyZW1lbnQKKzMuIEluc3RhbGxhdGlvbgorICAgMy4xIEhhcmR3YXJlIGluc3RhbGxhdGlvbgorICAgMy4yIERyaXZlciBmaWxlcworICAgMy4zIERldmljZSBuYW1pbmcgY29udmVudGlvbgorICAgMy40IE1vZHVsZSBkcml2ZXIgY29uZmlndXJhdGlvbgorICAgMy41IFN0YXRpYyBkcml2ZXIgY29uZmlndXJhdGlvbiBmb3IgTGludXgga2VybmVsIDIuNC54IGFuZCAyLjYueC4KKyAgIDMuNiBDdXN0b20gY29uZmlndXJhdGlvbgorICAgMy43IFZlcmlmeSBkcml2ZXIgaW5zdGFsbGF0aW9uCis0LiBVdGlsaXRpZXMKKzUuIFNldHNlcmlhbAorNi4gVHJvdWJsZXNob290aW5nCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisxLiBJbnRyb2R1Y3Rpb24KKworICAgVGhlIFNtYXJ0aW8vSW5kdXN0aW8vVVBDSSBmYW1pbHkgTGludXggZHJpdmVyIHN1cHBvcnRzIGZvbGxvd2luZyBtdWx0aXBvcnQKKyAgIGJvYXJkcy4KKworICAgIC0gMiBwb3J0cyBtdWx0aXBvcnQgYm9hcmQKKwlDUC0xMDJVLCBDUC0xMDJVTCwgQ1AtMTAyVUYKKwlDUC0xMzJVLUksIENQLTEzMlVMLAorCUNQLTEzMiwgQ1AtMTMySSwgQ1AxMzJTLCBDUC0xMzJJUywKKwlDSS0xMzIsIENJLTEzMkksIENJLTEzMklTLAorCShDMTAySCwgQzEwMkhJLCBDMTAySElTLCBDMTAyUCwgQ1AtMTAyLCBDUC0xMDJTKQorCisgICAgLSA0IHBvcnRzIG11bHRpcG9ydCBib2FyZAorCUNQLTEwNEVMLAorCUNQLTEwNFVMLCBDUC0xMDRKVSwKKwlDUC0xMzRVLCBDUC0xMzRVLUksCisJQzEwNEgvUENJLCBDMTA0SFMvUENJLAorCUNQLTExNCwgQ1AtMTE0SSwgQ1AtMTE0UywgQ1AtMTE0SVMsIENQLTExNFVMLAorCUMxMDRILCBDMTA0SFMsCisJQ0ktMTA0SiwgQ0ktMTA0SlMsCisJQ0ktMTM0LCBDSS0xMzRJLCBDSS0xMzRJUywKKwkoQzExNEhJLCBDVC0xMTRJLCBDMTA0UCkKKwlQT1MtMTA0VUwsCisJQ0ItMTE0LAorCUNCLTEzNEkKKworICAgIC0gOCBwb3J0cyBtdWx0aXBvcnQgYm9hcmQKKwlDUC0xMThFTCwgQ1AtMTY4RUwsCisJQ1AtMTE4VSwgQ1AtMTY4VSwKKwlDMTY4SC9QQ0ksCisJQzE2OEgsIEMxNjhIUywKKwkoQzE2OFApLAorCUNCLTEwOAorCisgICBUaGlzIGRyaXZlciBhbmQgaW5zdGFsbGF0aW9uIHByb2NlZHVyZSBoYXZlIGJlZW4gZGV2ZWxvcGVkIHVwb24gTGludXggS2VybmVsCisgICAyLjQueCBhbmQgMi42LnguIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEludGVsIHg4NiBoYXJkd2FyZSBwbGF0Zm9ybS4gSW4gb3JkZXIKKyAgIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHksIHRoaXMgdmVyc2lvbiBoYXMgYWxzbyBiZWVuIHByb3Blcmx5IHRlc3RlZCB3aXRoCisgICBSZWRIYXQsIE1hbmRyYWtlLCBGZWRvcmEgYW5kIFMudS5TLkUgTGludXguIEhvd2V2ZXIsIGlmIGNvbXBhdGliaWxpdHkgcHJvYmxlbQorICAgb2NjdXJzLCBwbGVhc2UgY29udGFjdCBNb3hhIGF0IHN1cHBvcnRAbW94YS5jb20udHcuCisKKyAgIEluIGFkZGl0aW9uIHRvIGRldmljZSBkcml2ZXIsIHVzZWZ1bCB1dGlsaXRpZXMgYXJlIGFsc28gcHJvdmlkZWQgaW4gdGhpcworICAgdmVyc2lvbi4gVGhleSBhcmUKKyAgICAtIG1zZGlhZyAgICAgRGlhZ25vc3RpYyBwcm9ncmFtIGZvciBkaXNwbGF5aW5nIGluc3RhbGxlZCBNb3hhCisgICAgICAgICAgICAgICAgIFNtYXJ0aW8vSW5kdXN0aW8gYm9hcmRzLgorICAgIC0gbXNtb24gICAgICBNb25pdG9yIHByb2dyYW0gdG8gb2JzZXJ2ZSBkYXRhIGNvdW50IGFuZCBsaW5lIHN0YXR1cyBzaWduYWxzLgorICAgIC0gbXN0ZXJtICAgICBBIHNpbXBsZSB0ZXJtaW5hbCBwcm9ncmFtIHdoaWNoIGlzIHVzZWZ1bCBpbiB0ZXN0aW5nIHNlcmlhbAorCSAgICAgICAgIHBvcnRzLgorICAgIC0gaW8taXJxLmV4ZSBDb25maWd1cmF0aW9uIHByb2dyYW0gdG8gc2V0dXAgSVNBIGJvYXJkcy4gUGxlYXNlIG5vdGUgdGhhdAorICAgICAgICAgICAgICAgICB0aGlzIHByb2dyYW0gY2FuIG9ubHkgYmUgZXhlY3V0ZWQgdW5kZXIgRE9TLgorCisgICBBbGwgdGhlIGRyaXZlcnMgYW5kIHV0aWxpdGllcyBhcmUgcHVibGlzaGVkIGluIGZvcm0gb2Ygc291cmNlIGNvZGUgdW5kZXIKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluIHRoaXMgdmVyc2lvbi4gUGxlYXNlIHJlZmVyIHRvIEdOVSBHZW5lcmFsCisgICBQdWJsaWMgTGljZW5zZSBhbm5vdW5jZW1lbnQgaW4gZWFjaCBzb3VyY2UgY29kZSBmaWxlIGZvciBtb3JlIGRldGFpbC4KKworICAgSW4gTW94YSdzIFdlYiBzaXRlcywgeW91IG1heSBhbHdheXMgZmluZCBsYXRlc3QgZHJpdmVyIGF0IGh0dHA6Ly93d3cubW94YS5jb20vLgorCisgICBUaGlzIHZlcnNpb24gb2YgZHJpdmVyIGNhbiBiZSBpbnN0YWxsZWQgYXMgTG9hZGFibGUgTW9kdWxlIChNb2R1bGUgZHJpdmVyKQorICAgb3IgYnVpbHQtaW4gaW50byBrZXJuZWwgKFN0YXRpYyBkcml2ZXIpLiBZb3UgbWF5IHJlZmVyIHRvIGZvbGxvd2luZworICAgaW5zdGFsbGF0aW9uIHByb2NlZHVyZSBmb3Igc3VpdGFibGUgb25lLiBCZWZvcmUgeW91IGluc3RhbGwgdGhlIGRyaXZlciwKKyAgIHBsZWFzZSByZWZlciB0byBoYXJkd2FyZSBpbnN0YWxsYXRpb24gcHJvY2VkdXJlIGluIHRoZSBVc2VyJ3MgTWFudWFsLgorCisgICBXZSBhc3N1bWUgdGhlIHVzZXIgc2hvdWxkIGJlIGZhbWlsaWFyIHdpdGggZm9sbG93aW5nIGRvY3VtZW50cy4KKyAgIC0gU2VyaWFsLUhPV1RPCisgICAtIEtlcm5lbC1IT1dUTworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMi4gU3lzdGVtIFJlcXVpcmVtZW50CisgICAtIEhhcmR3YXJlIHBsYXRmb3JtOiBJbnRlbCB4ODYgbWFjaGluZQorICAgLSBLZXJuZWwgdmVyc2lvbjogMi40Lnggb3IgMi42LngKKyAgIC0gZ2NjIHZlcnNpb24gMi43MiBvciBsYXRlcgorICAgLSBNYXhpbXVtIDQgYm9hcmRzIGNhbiBiZSBpbnN0YWxsZWQgaW4gY29tYmluYXRpb24KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzMuIEluc3RhbGxhdGlvbgorCisgICAzLjEgSGFyZHdhcmUgaW5zdGFsbGF0aW9uCisgICAzLjIgRHJpdmVyIGZpbGVzCisgICAzLjMgRGV2aWNlIG5hbWluZyBjb252ZW50aW9uCisgICAzLjQgTW9kdWxlIGRyaXZlciBjb25maWd1cmF0aW9uCisgICAzLjUgU3RhdGljIGRyaXZlciBjb25maWd1cmF0aW9uIGZvciBMaW51eCBrZXJuZWwgMi40LngsIDIuNi54LgorICAgMy42IEN1c3RvbSBjb25maWd1cmF0aW9uCisgICAzLjcgVmVyaWZ5IGRyaXZlciBpbnN0YWxsYXRpb24KKworCisgICAzLjEgSGFyZHdhcmUgaW5zdGFsbGF0aW9uCisKKyAgICAgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGJ1c2VzLCBJU0EgYW5kIFBDSSwgZm9yIFNtYXJ0aW8vSW5kdXN0aW8KKyAgICAgICBmYW1pbHkgbXVsdGlwb3J0IGJvYXJkLgorCisgICAgICAgSVNBIGJvYXJkCisgICAgICAgLS0tLS0tLS0tCisgICAgICAgWW91J2xsIGhhdmUgdG8gY29uZmlndXJlIENBUCBhZGRyZXNzLCBJL08gYWRkcmVzcywgSW50ZXJydXB0IFZlY3RvcgorICAgICAgIGFzIHdlbGwgYXMgSVJRIGJlZm9yZSBpbnN0YWxsaW5nIHRoaXMgZHJpdmVyLiBQbGVhc2UgcmVmZXIgdG8gaGFyZHdhcmUKKyAgICAgICBpbnN0YWxsYXRpb24gcHJvY2VkdXJlIGluIFVzZXIncyBNYW51YWwgYmVmb3JlIHByb2NlZWQgYW55IGZ1cnRoZXIuCisgICAgICAgUGxlYXNlIG1ha2Ugc3VyZSB0aGUgSlAxIGlzIG9wZW4gYWZ0ZXIgdGhlIElTQSBib2FyZCBpcyBzZXQgcHJvcGVybHkuCisKKyAgICAgICBQQ0kvVVBDSSBib2FyZAorICAgICAgIC0tLS0tLS0tLS0tLS0tCisgICAgICAgWW91IG1heSBuZWVkIHRvIGFkanVzdCBJUlEgdXNhZ2UgaW4gQklPUyB0byBhdm9pZCBmcm9tIElSUSBjb25mbGljdAorICAgICAgIHdpdGggb3RoZXIgSVNBIGRldmljZXMuIFBsZWFzZSByZWZlciB0byBoYXJkd2FyZSBpbnN0YWxsYXRpb24KKyAgICAgICBwcm9jZWR1cmUgaW4gVXNlcidzIE1hbnVhbCBpbiBhZHZhbmNlLgorCisgICAgICAgUENJIElSUSBTaGFyaW5nCisgICAgICAgLS0tLS0tLS0tLS0KKyAgICAgICBFYWNoIHBvcnQgd2l0aGluIHRoZSBzYW1lIG11bHRpcG9ydCBib2FyZCBzaGFyZXMgdGhlIHNhbWUgSVJRLiBVcCB0bworICAgICAgIDQgTW94YSBTbWFydGlvL0luZHVzdGlvIFBDSSBGYW1pbHkgbXVsdGlwb3J0IGJvYXJkcyBjYW4gYmUgaW5zdGFsbGVkCisgICAgICAgdG9nZXRoZXIgb24gb25lIHN5c3RlbSBhbmQgdGhleSBjYW4gc2hhcmUgdGhlIHNhbWUgSVJRLgorCisKKyAgIDMuMiBEcml2ZXIgZmlsZXMKKworICAgICAgIFRoZSBkcml2ZXIgZmlsZSBtYXkgYmUgb2J0YWluZWQgZnJvbSBmdHAsIENELVJPTSBvciBmbG9wcHkgZGlzay4gVGhlCisgICAgICAgZmlyc3Qgc3RlcCwgYW55d2F5LCBpcyB0byBjb3B5IGRyaXZlciBmaWxlICJteHNlci50Z3oiIGludG8gc3BlY2lmaWVkCisgICAgICAgZGlyZWN0b3J5LiBlLmcuIC9tb3hhLiBUaGUgZXhlY3V0ZSBjb21tYW5kcyBhcyBiZWxvdy4KKworICAgICAgICMgY2QgLworICAgICAgICMgbWtkaXIgbW94YQorICAgICAgICMgY2QgL21veGEKKyAgICAgICAjIHRhciB4dmYgL2Rldi9mZDAKKworICAgICAgIG9yCisKKyAgICAgICAjIGNkIC8KKyAgICAgICAjIG1rZGlyIG1veGEKKyAgICAgICAjIGNkIC9tb3hhCisgICAgICAgIyBjcCAvbW50L2Nkcm9tLzxkcml2ZXIgZGlyZWN0b3J5Pi9teHNlci50Z3ogLgorICAgICAgICMgdGFyIHh2ZnogbXhzZXIudGd6CisKKworICAgMy4zIERldmljZSBuYW1pbmcgY29udmVudGlvbgorCisgICAgICAgWW91IG1heSBmaW5kIGFsbCB0aGUgZHJpdmVyIGFuZCB1dGlsaXRpZXMgZmlsZXMgaW4gL21veGEvbXhzZXIuCisgICAgICAgRm9sbG93aW5nIGluc3RhbGxhdGlvbiBwcm9jZWR1cmUgZGVwZW5kcyBvbiB0aGUgbW9kZWwgeW91J2QgbGlrZSB0bworICAgICAgIHJ1biB0aGUgZHJpdmVyLiBJZiB5b3UgcHJlZmVyIG1vZHVsZSBkcml2ZXIsIHBsZWFzZSByZWZlciB0byAzLjQuCisgICAgICAgSWYgc3RhdGljIGRyaXZlciBpcyByZXF1aXJlZCwgcGxlYXNlIHJlZmVyIHRvIDMuNS4KKworICAgICAgIERpYWxpbiBhbmQgY2FsbG91dCBwb3J0CisgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICBUaGlzIGRyaXZlciByZW1haW5zIHRyYWRpdGlvbmFsIHNlcmlhbCBkZXZpY2UgcHJvcGVydGllcy4gVGhlcmUgYXJlCisgICAgICAgdHdvIHNwZWNpYWwgZmlsZSBuYW1lIGZvciBlYWNoIHNlcmlhbCBwb3J0LiBPbmUgaXMgZGlhbC1pbiBwb3J0CisgICAgICAgd2hpY2ggaXMgbmFtZWQgInR0eU14eCIuIEZvciBjYWxsb3V0IHBvcnQsIHRoZSBuYW1pbmcgY29udmVudGlvbgorICAgICAgIGlzICJjdW14eCIuCisKKyAgICAgICBEZXZpY2UgbmFtaW5nIHdoZW4gbW9yZSB0aGFuIDIgYm9hcmRzIGluc3RhbGxlZAorICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgTmFtaW5nIGNvbnZlbnRpb24gZm9yIGVhY2ggU21hcnRpby9JbmR1c3RpbyBtdWx0aXBvcnQgYm9hcmQgaXMKKyAgICAgICBwcmUtZGVmaW5lZCBhcyBiZWxvdy4KKworICAgICAgIEJvYXJkIE51bS4JIERpYWwtaW4gUG9ydAkgICAgICBDYWxsb3V0IHBvcnQKKyAgICAgICAxc3QgYm9hcmQJdHR5TTAgIC0gdHR5TTcJICAgICAgY3VtMCAgLSBjdW03CisgICAgICAgMm5kIGJvYXJkCXR0eU04ICAtIHR0eU0xNSAgICAgICBjdW04ICAtIGN1bTE1CisgICAgICAgM3JkIGJvYXJkCXR0eU0xNiAtIHR0eU0yMyAgICAgICBjdW0xNiAtIGN1bTIzCisgICAgICAgNHRoIGJvYXJkCXR0eU0yNCAtIHR0eW0zMSAgICAgICBjdW0yNCAtIGN1bTMxCisKKworICAgICAgICEhISEhISEhISEhISEhISEhISEhIE5PVEUgISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhIQorICAgICAgIFVuZGVyIEtlcm5lbCAyLjYgdGhlIGN1bSBEZXZpY2UgaXMgT2Jzb2xldGUuIFNvIHVzZSB0dHlNKgorICAgICAgIGRldmljZSBpbnN0ZWFkLgorICAgICAgICEhISEhISEhISEhISEhISEhISEhIE5PVEUgISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhIQorCisgICAgICAgQm9hcmQgc2VxdWVuY2UKKyAgICAgICAtLS0tLS0tLS0tLS0tLQorICAgICAgIFRoaXMgZHJpdmVyIHdpbGwgYWN0aXZhdGUgSVNBIGJvYXJkcyBhY2NvcmRpbmcgdG8gdGhlIHBhcmFtZXRlciBzZXQKKyAgICAgICBpbiB0aGUgZHJpdmVyLiBBZnRlciBhbGwgc3BlY2lmaWVkIElTQSBib2FyZCBhY3RpdmF0ZWQsIFBDSSBib2FyZAorICAgICAgIHdpbGwgYmUgaW5zdGFsbGVkIGluIHRoZSBzeXN0ZW0gYXV0b21hdGljYWxseSBkcml2ZW4uCisgICAgICAgVGhlcmVmb3JlIHRoZSBib2FyZCBudW1iZXIgaXMgc29ydGVkIGJ5IHRoZSBDQVAgYWRkcmVzcyBvZiBJU0EgYm9hcmRzLgorICAgICAgIEZvciBQQ0kgYm9hcmRzLCB0aGVpciBzZXF1ZW5jZSB3aWxsIGJlIGFmdGVyIElTQSBib2FyZHMgYW5kIEMxNjhIL1BDSQorICAgICAgIGhhcyBoaWdoZXIgcHJpb3JpdHkgdGhhbiBDMTA0SC9QQ0kgYm9hcmRzLgorCisgICAzLjQgTW9kdWxlIGRyaXZlciBjb25maWd1cmF0aW9uCisgICAgICAgTW9kdWxlIGRyaXZlciBpcyBlYXNpZXN0IHdheSB0byBpbnN0YWxsLiBJZiB5b3UgcHJlZmVyIHN0YXRpYyBkcml2ZXIKKyAgICAgICBpbnN0YWxsYXRpb24sIHBsZWFzZSBza2lwIHRoaXMgcGFyYWdyYXBoLgorCisKKyAgICAgICAtLS0tLS0tLS0tLS0tIFByZXBhcmUgdG8gdXNlIHRoZSBNT1hBIGRyaXZlci0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgMy40LjEgQ3JlYXRlIHR0eSBkZXZpY2Ugd2l0aCBjb3JyZWN0IG1ham9yIG51bWJlcgorICAgICAgICAgIEJlZm9yZSB1c2luZyBNT1hBIGRyaXZlciwgeW91ciBzeXN0ZW0gbXVzdCBoYXZlIHRoZSB0dHkgZGV2aWNlcworICAgICAgICAgIHdoaWNoIGFyZSBjcmVhdGVkIHdpdGggZHJpdmVyJ3MgbWFqb3IgbnVtYmVyLiBXZSBvZmZlciBvbmUgc2hlbGwKKyAgICAgICAgICBzY3JpcHQgIm1zbWtub2QiIHRvIHNpbXBsaWZ5IHRoZSBwcm9jZWR1cmUuCisgICAgICAgICAgVGhpcyBzdGVwIGlzIG9ubHkgbmVlZGVkIHRvIGJlIGV4ZWN1dGVkIG9uY2UuIEJ1dCB5b3Ugc3RpbGwKKyAgICAgICAgICBuZWVkIHRvIGRvIHRoaXMgcHJvY2VkdXJlIHdoZW46CisgICAgICAgICAgYS4gWW91IGNoYW5nZSB0aGUgZHJpdmVyJ3MgbWFqb3IgbnVtYmVyLiBQbGVhc2UgcmVmZXIgdGhlICIzLjciCisgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICBiLiBZb3VyIHRvdGFsIGluc3RhbGxlZCBNT1hBIGJvYXJkcyBudW1iZXIgaXMgY2hhbmdlZC4gTWF5YmUgeW91CisgICAgICAgICAgICAgYWRkL2RlbGV0ZSBvbmUgTU9YQSBib2FyZC4KKyAgICAgICAgICBjLiBZb3Ugd2FudCB0byBjaGFuZ2UgdGhlIHR0eSBuYW1lLiBUaGlzIG5lZWRzIHRvIG1vZGlmeSB0aGUKKyAgICAgICAgICAgICBzaGVsbCBzY3JpcHQgIm1zbWtub2QiCisKKyAgICAgICAgICBUaGUgcHJvY2VkdXJlIGlzOgorCSAgIyBjZCAvbW94YS9teHNlci9kcml2ZXIKKwkgICMgLi9tc21rbm9kCisKKyAgICAgICAgICBUaGlzIHNoZWxsIHNjcmlwdCB3aWxsIHJlcXVpcmUgdGhlIG1ham9yIG51bWJlciBmb3IgZGlhbC1pbgorICAgICAgICAgIGRldmljZSBhbmQgY2FsbG91dCBkZXZpY2UgdG8gY3JlYXRlIHR0eSBkZXZpY2UuIFlvdSBhbHNvIG5lZWQKKyAgICAgICAgICB0byBzcGVjaWZ5IHRoZSB0b3RhbCBpbnN0YWxsZWQgTU9YQSBib2FyZCBudW1iZXIuIERlZmF1bHQgbWFqb3IKKyAgICAgICAgICBudW1iZXJzIGZvciBkaWFsLWluIGRldmljZSBhbmQgY2FsbG91dCBkZXZpY2UgYXJlIDMwLCAzNS4gSWYKKyAgICAgICAgICB5b3UgbmVlZCB0byBjaGFuZ2UgdG8gb3RoZXIgbnVtYmVyLCBwbGVhc2UgcmVmZXIgc2VjdGlvbiAiMy43IgorICAgICAgICAgIGZvciBtb3JlIGRldGFpbGVkIHByb2NlZHVyZS4KKyAgICAgICAgICBNc21rbm9kIHdpbGwgZGVsZXRlIGFueSBzcGVjaWFsIGZpbGVzIG9jY3VweWluZyB0aGUgc2FtZSBkZXZpY2UKKyAgICAgICAgICBuYW1pbmcuCisKKyAgICAgICAzLjQuMiBCdWlsZCB0aGUgTU9YQSBkcml2ZXIgYW5kIHV0aWxpdGllcworICAgICAgICAgIEJlZm9yZSB1c2luZyB0aGUgTU9YQSBkcml2ZXIgYW5kIHV0aWxpdGllcywgeW91IG5lZWQgY29tcGlsZSB0aGUKKyAgICAgICAgICBhbGwgdGhlIHNvdXJjZSBjb2RlLiBUaGlzIHN0ZXAgaXMgb25seSBuZWVkIHRvIGJlIGV4ZWN1dGVkIG9uY2UuCisgICAgICAgICAgQnV0IHlvdSBzdGlsbCByZS1jb21waWxlIHRoZSBzb3VyY2UgY29kZSBpZiB5b3UgbW9kaWZ5IHRoZSBzb3VyY2UKKyAgICAgICAgICBjb2RlLiBGb3IgZXhhbXBsZSwgaWYgeW91IGNoYW5nZSB0aGUgZHJpdmVyJ3MgbWFqb3IgbnVtYmVyIChzZWUKKyAgICAgICAgICAiMy43IiBzZWN0aW9uKSwgdGhlbiB5b3UgbmVlZCB0byBkbyB0aGlzIHN0ZXAgYWdhaW4uCisKKyAgICAgICAgICBGaW5kICJNYWtlZmlsZSIgaW4gL21veGEvbXhzZXIsIHRoZW4gcnVuCisKKwkgICMgbWFrZSBjbGVhbjsgbWFrZSBpbnN0YWxsCisKKyAgICAgICAgICAhISEhISEhISEhIE5PVEUgISEhISEhISEhISEhISEhISEKKwkgIEZvciBSZWQgSGF0IDksIFJlZCBIYXQgRW50ZXJwcmlzZSBMaW51eCBBUzMvRVMzL1dTMyAmIEZlZG9yYSBDb3JlMToKKwkgICMgbWFrZSBjbGVhbjsgbWFrZSBpbnN0YWxsc3AxCisKKwkgIEZvciBSZWQgSGF0IEVudGVycHJpc2UgTGludXggQVM0L0VTNC9XUzQ6CisJICAjIG1ha2UgY2xlYW47IG1ha2UgaW5zdGFsbHNwMgorICAgICAgICAgICEhISEhISEhISEgTk9URSAhISEhISEhISEhISEhISEhIQorCisJICBUaGUgZHJpdmVyIGZpbGVzICJteHNlci5vIiBhbmQgdXRpbGl0aWVzIHdpbGwgYmUgcHJvcGVybHkgY29tcGlsZWQKKwkgIGFuZCBjb3BpZWQgdG8gc3lzdGVtIGRpcmVjdG9yaWVzIHJlc3BlY3RpdmVseS4KKworICAgICAgIC0tLS0tLS0tLS0tLS0gTG9hZCBNT1hBIGRyaXZlci0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgMy40LjMgTG9hZCB0aGUgTU9YQSBkcml2ZXIKKworCSAgIyBtb2Rwcm9iZSBteHNlciA8YXJndW1lbnQ+CisKKwkgIHdpbGwgYWN0aXZhdGUgdGhlIG1vZHVsZSBkcml2ZXIuIFlvdSBtYXkgcnVuICJsc21vZCIgdG8gY2hlY2sKKwkgIGlmICJteHNlciIgaXMgYWN0aXZhdGVkLiBJZiB0aGUgTU9YQSBib2FyZCBpcyBJU0EgYm9hcmQsIHRoZQorICAgICAgICAgIDxhcmd1bWVudD4gaXMgbmVlZGVkLiBQbGVhc2UgcmVmZXIgdG8gc2VjdGlvbiAiMy40LjUiIGZvciBtb3JlCisgICAgICAgICAgaW5mb3JtYXRpb24uCisKKworICAgICAgIC0tLS0tLS0tLS0tLS0gTG9hZCBNT1hBIGRyaXZlciBvbiBib290IC0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgMy40LjQgRm9yIHRoZSBhYm92ZSBkZXNjcmlwdGlvbiwgeW91IG1heSBtYW51YWxseSBleGVjdXRlCisgICAgICAgICAgIm1vZHByb2JlIG14c2VyIiB0byBhY3RpdmF0ZSB0aGlzIGRyaXZlciBhbmQgcnVuCisJICAicm1tb2QgbXhzZXIiIHRvIHJlbW92ZSBpdC4KKyAgICAgICAgICBIb3dldmVyLCBpdCdzIGJldHRlciB0byBoYXZlIGEgYm9vdCB0aW1lIGNvbmZpZ3VyYXRpb24gdG8KKyAgICAgICAgICBlbGltaW5hdGUgbWFudWFsIG9wZXJhdGlvbi4gQm9vdCB0aW1lIGNvbmZpZ3VyYXRpb24gY2FuIGJlCisgICAgICAgICAgYWNoaWV2ZWQgYnkgcmMgZmlsZS4gV2Ugb2ZmZXIgb25lICJyYy5teHNlciIgZmlsZSB0byBzaW1wbGlmeQorICAgICAgICAgIHRoZSBwcm9jZWR1cmUgdW5kZXIgIm1veGEvbXhzZXIvZHJpdmVyIi4KKworICAgICAgICAgIEJ1dCBpZiB5b3UgdXNlIElTQSBib2FyZCwgcGxlYXNlIG1vZGlmeSB0aGUgIm1vZHByb2JlIC4uLiIgY29tbWFuZAorICAgICAgICAgIHRvIGFkZCB0aGUgYXJndW1lbnQgKHNlZSAiMy40LjUiIHNlY3Rpb24pLiBBZnRlciBtb2RpZnlpbmcgdGhlCisgICAgICAgICAgcmMubXhzZXIsIHBsZWFzZSB0cnkgdG8gZXhlY3V0ZSAiL21veGEvbXhzZXIvZHJpdmVyL3JjLm14c2VyIgorICAgICAgICAgIG1hbnVhbGx5IHRvIG1ha2Ugc3VyZSB0aGUgbW9kaWZpY2F0aW9uIGlzIG9rLiBJZiBhbnkgZXJyb3IKKyAgICAgICAgICBlbmNvdW50ZXJlZCwgcGxlYXNlIHRyeSB0byBtb2RpZnkgYWdhaW4uIElmIHRoZSBtb2RpZmljYXRpb24gaXMKKyAgICAgICAgICBjb21wbGV0ZWQsIGZvbGxvdyB0aGUgYmVsb3cgc3RlcC4KKworCSAgUnVuIGZvbGxvd2luZyBjb21tYW5kIGZvciBzZXR0aW5nIHJjIGZpbGVzLgorCisJICAjIGNkIC9tb3hhL214c2VyL2RyaXZlcgorCSAgIyBjcCAuL3JjLm14c2VyIC9ldGMvcmMuZAorCSAgIyBjZCAvZXRjL3JjLmQKKworCSAgQ2hlY2sgInJjLnNlcmlhbCIgaXMgZXhpc3RlZCBvciBub3QuIElmICJyYy5zZXJpYWwiIGRvZXNuJ3QgZXhpc3QsCisJICBjcmVhdGUgaXQgYnkgdmksIHJ1biAiY2htb2QgNzU1IHJjLnNlcmlhbCIgdG8gY2hhbmdlIHRoZSBwZXJtaXNzaW9uLgorCSAgQWRkICIvZXRjL3JjLmQvcmMubXhzZXIiIGluIGxhc3QgbGluZSwKKworICAgICAgICAgIFJlYm9vdCBhbmQgY2hlY2sgaWYgbW94YS5vIGFjdGl2YXRlZCBieSAibHNtb2QiIGNvbW1hbmQuCisKKyAgICAgICAzLjQuNS4gSWYgeW91J2QgbGlrZSB0byBkcml2ZSBTbWFydGlvL0luZHVzdGlvIElTQSBib2FyZHMgaW4gdGhlIHN5c3RlbSwKKyAgICAgICAgICB5b3UnbGwgaGF2ZSB0byBhZGQgcGFyYW1ldGVyIHRvIHNwZWNpZnkgQ0FQIGFkZHJlc3Mgb2YgZ2l2ZW4KKwkgIGJvYXJkIHdoaWxlIGFjdGl2YXRpbmcgIm14c2VyLm8iLiBUaGUgZm9ybWF0IGZvciBwYXJhbWV0ZXJzIGFyZQorCSAgYXMgZm9sbG93cy4KKworCSAgbW9kcHJvYmUgbXhzZXIgaW9hZGRyPTB4Pz8/LDB4Pz8/LDB4Pz8/LDB4Pz8/CisJCQkJfCAgICAgIHwgICAgIHwJICB8CisJCQkJfCAgICAgIHwgICAgIHwJICArLSA0dGggSVNBIGJvYXJkCisJCQkJfCAgICAgIHwgICAgICstLS0tLS0gM3JkIElTQSBib2FyZAorCQkJCXwgICAgICArLS0tLS0tLS0tLS0tIDJuZCBJU0EgYm9hcmQKKwkJCQkrLS0tLS0tLS0tLS0tLS0tLS0tLSAxc3QgSVNBIGJvYXJkCisKKyAgIDMuNSBTdGF0aWMgZHJpdmVyIGNvbmZpZ3VyYXRpb24gZm9yIExpbnV4IGtlcm5lbCAyLjQueCBhbmQgMi42LngKKworICAgICAgIE5vdGU6IFRvIHVzZSBzdGF0aWMgZHJpdmVyLCB5b3UgbXVzdCBpbnN0YWxsIHRoZSBsaW51eCBrZXJuZWwKKyAgICAgICAgICAgICBzb3VyY2UgcGFja2FnZS4KKworICAgICAgIDMuNS4xIEJhY2t1cCB0aGUgYnVpbHQtaW4gZHJpdmVyIGluIHRoZSBrZXJuZWwuCisgICAgICAgICAgIyBjZCAvdXNyL3NyYy9saW51eC9kcml2ZXJzL2NoYXIKKyAgICAgICAgICAjIG12IG14c2VyLmMgbXhzZXIuYy5vbGQKKworICAgICAgICAgIEZvciBSZWQgSGF0IDcueCB1c2VyLCB5b3UgbmVlZCB0byBjcmVhdGUgbGluazoKKyAgICAgICAgICAjIGNkIC91c3Ivc3JjCisgICAgICAgICAgIyBsbiAtcyBsaW51eC0yLjQgbGludXgKKworICAgICAgIDMuNS4yIENyZWF0ZSBsaW5rCisJICAjIGNkIC91c3Ivc3JjL2xpbnV4L2RyaXZlcnMvY2hhcgorCSAgIyBsbiAtcyAvbW94YS9teHNlci9kcml2ZXIvbXhzZXIuYyBteHNlci5jCisKKyAgICAgICAzLjUuMyBBZGQgQ0FQIGFkZHJlc3MgbGlzdCBmb3IgSVNBIGJvYXJkcy4gRm9yIFBDSSBib2FyZHMgdXNlciwKKyAgICAgICAgICBwbGVhc2Ugc2tpcCB0aGlzIHN0ZXAuCisKKwkgIEluIG1vZHVsZSBtb2RlLCB0aGUgQ0FQIGFkZHJlc3MgZm9yIElTQSBib2FyZCBpcyBnaXZlbiBieQorCSAgcGFyYW1ldGVyLiBJbiBzdGF0aWMgZHJpdmVyIGNvbmZpZ3VyYXRpb24sIHlvdSdsbCBoYXZlIHRvCisJICBhc3NpZ24gaXQgd2l0aGluIGRyaXZlcidzIHNvdXJjZSBjb2RlLiBJZiB5b3Ugd2lsbCBub3QKKwkgIGluc3RhbGwgYW55IElTQSBib2FyZHMsIHlvdSBtYXkgc2tpcCB0byBuZXh0IHBvcnRpb24uCisJICBUaGUgaW5zdHJ1Y3Rpb25zIHRvIG1vZGlmeSBkcml2ZXIgc291cmNlIGNvZGUgYXJlIGFzCisJICBiZWxvdy4KKwkgIGEuICMgY2QgL21veGEvbXhzZXIvZHJpdmVyCisJICAgICAjIHZpIG14c2VyLmMKKwkgIGIuIEZpbmQgdGhlIGFycmF5IG14c2VyQm9hcmRDQVBbXSBhcyBiZWxvdy4KKworCSAgICAgc3RhdGljIGludCBteHNlckJvYXJkQ0FQW10KKwkgICAgID0gezB4MDAsIDB4MDAsIDB4MDAsIDB4MDB9OworCisJICBjLiBDaGFuZ2UgdGhlIGFkZHJlc3Mgd2l0aGluIHRoaXMgYXJyYXkgdXNpbmcgdmkuIEZvcgorCSAgICAgZXhhbXBsZSwgdG8gZHJpdmVyIDIgSVNBIGJvYXJkcyB3aXRoIENBUCBhZGRyZXNzCisJICAgICAweDI4MCBhbmQgMHgxODAgYXMgMXN0IGFuZCAybmQgYm9hcmQuIEp1c3QgdG8gY2hhbmdlCisJICAgICB0aGUgc291cmNlIGNvZGUgYXMgZm9sbG93cy4KKworCSAgICAgc3RhdGljIGludCBteHNlckJvYXJkQ0FQW10KKwkgICAgID0gezB4MjgwLCAweDE4MCwgMHgwMCwgMHgwMH07CisKKyAgICAgICAzLjUuNCBTZXR1cCBrZXJuZWwgY29uZmlndXJhdGlvbgorCisgICAgICAgICAgQ29uZmlndXJlIHRoZSBrZXJuZWw6CisKKyAgICAgICAgICAgICMgY2QgL3Vzci9zcmMvbGludXgKKyAgICAgICAgICAgICMgbWFrZSBtZW51Y29uZmlnCisKKyAgICAgICAgICBZb3Ugd2lsbCBnbyBpbnRvIGEgbWVudS1kcml2ZW4gc3lzdGVtLiBQbGVhc2Ugc2VsZWN0IFtDaGFyYWN0ZXIKKyAgICAgICAgICBkZXZpY2VzXVtOb24tc3RhbmRhcmQgc2VyaWFsIHBvcnQgc3VwcG9ydF0sIGVuYWJsZSB0aGUgW01veGEKKyAgICAgICAgICBTbWFydElPIHN1cHBvcnRdIGRyaXZlciB3aXRoICJbKl0iIGZvciBidWlsdC1pbiAobm90ICJbTV0iKSwgdGhlbgorICAgICAgICAgIHNlbGVjdCBbRXhpdF0gdG8gZXhpdCB0aGlzIHByb2dyYW0uCisKKyAgICAgICAzLjUuNSBSZWJ1aWxkIGtlcm5lbAorCSAgVGhlIGZvbGxvd2luZyBhcmUgZm9yIExpbnV4IGtlcm5lbCByZWJ1aWxkaW5nLCBmb3IgeW91cgorICAgICAgICAgIHJlZmVyZW5jZSBvbmx5LgorCSAgRm9yIGFwcHJvcHJpYXRlIGRldGFpbHMsIHBsZWFzZSByZWZlciB0byB0aGUgTGludXggZG9jdW1lbnQuCisKKwkgICBhLiBjZCAvdXNyL3NyYy9saW51eAorCSAgIGIuIG1ha2UgY2xlYW4JICAgICAvKiB0YWtlIGEgZmV3IG1pbnV0ZXMgKi8KKwkgICBjLiBtYWtlIGRlcAkJICAgICAvKiB0YWtlIGEgZmV3IG1pbnV0ZXMgKi8KKwkgICBkLiBtYWtlIGJ6SW1hZ2UJICAgICAvKiB0YWtlIHByb2JhYmx5IDEwLTIwIG1pbnV0ZXMgKi8KKwkgICBlLiBtYWtlIGluc3RhbGwJICAgICAvKiBjb3B5IGJvb3QgaW1hZ2UgdG8gY29ycmVjdCBwb3NpdGlvbiAqLworCSAgIGYuIFBsZWFzZSBtYWtlIHN1cmUgdGhlIGJvb3Qga2VybmVsICh2bWxpbnV6KSBpcyBpbiB0aGUKKwkgICAgICBjb3JyZWN0IHBvc2l0aW9uLgorCSAgIGcuIElmIHlvdSB1c2UgJ2xpbG8nIHV0aWxpdHksIHlvdSBzaG91bGQgY2hlY2sgL2V0Yy9saWxvLmNvbmYKKwkgICAgICAnaW1hZ2UnIGl0ZW0gc3BlY2lmaWVkIHRoZSBwYXRoIHdoaWNoIGlzIHRoZSAndm1saW51eicgcGF0aCwKKwkgICAgICBvciB5b3Ugd2lsbCBsb2FkIHdyb25nIChvciBvbGQpIGJvb3Qga2VybmVsIGltYWdlICh2bWxpbnV6KS4KKwkgICAgICBBZnRlciBjaGVja2luZyAvZXRjL2xpbG8uY29uZiwgcGxlYXNlIHJ1biAibGlsbyIuCisKKwkgIE5vdGUgdGhhdCBpZiB0aGUgcmVzdWx0IG9mICJtYWtlIGJ6SW1hZ2UiIGlzIEVSUk9SLCB0aGVuIHlvdSBoYXZlIHRvCisJICBnbyBiYWNrIHRvIExpbnV4IGNvbmZpZ3VyYXRpb24gU2V0dXAuIFR5cGUgIm1ha2UgbWVudWNvbmZpZyIgaW4KKyAgICAgICAgICBkaXJlY3RvcnkgL3Vzci9zcmMvbGludXguCisKKworICAgICAgIDMuNS42IE1ha2UgdHR5IGRldmljZSBhbmQgc3BlY2lhbCBmaWxlCisgICAgICAgICAgIyBjZCAvbW94YS9teHNlci9kcml2ZXIKKyAgICAgICAgICAjIC4vbXNta25vZAorCisgICAgICAgMy41LjcgTWFrZSB1dGlsaXR5CisJICAjIGNkIC9tb3hhL214c2VyL3V0aWxpdHkKKwkgICMgbWFrZSBjbGVhbjsgbWFrZSBpbnN0YWxsCisKKyAgICAgICAzLjUuOCBSZWJvb3QKKworCisKKyAgIDMuNiBDdXN0b20gY29uZmlndXJhdGlvbgorICAgICAgIEFsdGhvdWdoIHRoaXMgZHJpdmVyIGFscmVhZHkgcHJvdmlkZXMgeW91IGRlZmF1bHQgY29uZmlndXJhdGlvbiwgeW91CisgICAgICAgc3RpbGwgY2FuIGNoYW5nZSB0aGUgZGV2aWNlIG5hbWUgYW5kIG1ham9yIG51bWJlci4gVGhlIGluc3RydWN0aW9uIHRvCisgICAgICAgY2hhbmdlIHRoZXNlIHBhcmFtZXRlcnMgYXJlIHNob3duIGFzIGJlbG93LgorCisgICAgICAgQ2hhbmdlIERldmljZSBuYW1lCisgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgSWYgeW91J2QgbGlrZSB0byB1c2Ugb3RoZXIgZGV2aWNlIG5hbWVzIGluc3RlYWQgb2YgZGVmYXVsdCBuYW1pbmcKKyAgICAgICBjb252ZW50aW9uLCBhbGwgeW91IGhhdmUgdG8gZG8gaXMgdG8gbW9kaWZ5IHRoZSBpbnRlcm5hbCBjb2RlCisgICAgICAgd2l0aGluIHRoZSBzaGVsbCBzY3JpcHQgIm1zbWtub2QiLiBGaXJzdCwgeW91IGhhdmUgdG8gb3BlbiAibXNta25vZCIKKyAgICAgICBieSB2aS4gTG9jYXRlIGVhY2ggbGluZSBjb250YWlucyAidHR5TSIgYW5kICJjdW0iIGFuZCBjaGFuZ2UgdGhlbQorICAgICAgIHRvIHRoZSBkZXZpY2UgbmFtZSB5b3UgZGVzaXJlZC4gIm1zbWtub2QiIGNyZWF0ZXMgdGhlIGRldmljZSBuYW1lcworICAgICAgIHlvdSBuZWVkIG5leHQgdGltZSBleGVjdXRlZC4KKworICAgICAgIENoYW5nZSBNYWpvciBudW1iZXIKKyAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgSWYgbWFqb3IgbnVtYmVyIDMwIGFuZCAzNSBoYWQgYmVlbiBvY2N1cGllZCwgeW91IG1heSBoYXZlIHRvIHNlbGVjdAorICAgICAgIDIgZnJlZSBtYWpvciBudW1iZXJzIGZvciB0aGlzIGRyaXZlci4gVGhlcmUgYXJlIDMgc3RlcHMgdG8gY2hhbmdlCisgICAgICAgbWFqb3IgbnVtYmVycy4KKworICAgICAgIDMuNi4xIEZpbmQgZnJlZSBtYWpvciBudW1iZXJzCisJICBJbiAvcHJvYy9kZXZpY2VzLCB5b3UgbWF5IGZpbmQgYWxsIHRoZSBtYWpvciBudW1iZXJzIG9jY3VwaWVkCisJICBpbiB0aGUgc3lzdGVtLiBQbGVhc2Ugc2VsZWN0IDIgbWFqb3IgbnVtYmVycyB0aGF0IGFyZSBhdmFpbGFibGUuCisJICBlLmcuIDQwLCA0NS4KKyAgICAgICAzLjYuMiBDcmVhdGUgc3BlY2lhbCBmaWxlcworCSAgUnVuIC9tb3hhL214c2VyL2RyaXZlci9tc21rbm9kIHRvIGNyZWF0ZSBzcGVjaWFsIGZpbGVzIHdpdGgKKwkgIHNwZWNpZmllZCBtYWpvciBudW1iZXJzLgorICAgICAgIDMuNi4zIE1vZGlmeSBkcml2ZXIgd2l0aCBuZXcgbWFqb3IgbnVtYmVyCisJICBSdW4gdmkgdG8gb3BlbiAvbW94YS9teHNlci9kcml2ZXIvbXhzZXIuYy4gTG9jYXRlIHRoZSBsaW5lCisJICBjb250YWlucyAiTVhTRVJNQUpPUiIuIENoYW5nZSB0aGUgY29udGVudCBhcyBiZWxvdy4KKwkgICNkZWZpbmUJICBNWFNFUk1BSk9SCQkgIDQwCisJICAjZGVmaW5lCSAgTVhTRVJDVU1BSk9SCQkgIDQ1CisgICAgICAgMy42LjQgUnVuICJtYWtlIGNsZWFuOyBtYWtlIGluc3RhbGwiIGluIC9tb3hhL214c2VyL2RyaXZlci4KKworICAgMy43IFZlcmlmeSBkcml2ZXIgaW5zdGFsbGF0aW9uCisgICAgICAgWW91IG1heSByZWZlciB0byAvdmFyL2xvZy9tZXNzYWdlcyB0byBjaGVjayB0aGUgbGF0ZXN0IHN0YXR1cworICAgICAgIGxvZyByZXBvcnRlZCBieSB0aGlzIGRyaXZlciB3aGVuZXZlciBpdCdzIGFjdGl2YXRlZC4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzQuIFV0aWxpdGllcworICAgVGhlcmUgYXJlIDMgdXRpbGl0aWVzIGNvbnRhaW5lZCBpbiB0aGlzIGRyaXZlci4gVGhleSBhcmUgbXNkaWFnLCBtc21vbiBhbmQKKyAgIG1zdGVybS4gVGhlc2UgMyB1dGlsaXRpZXMgYXJlIHJlbGVhc2VkIGluIGZvcm0gb2Ygc291cmNlIGNvZGUuIFRoZXkgc2hvdWxkCisgICBiZSBjb21waWxlZCBpbnRvIGV4ZWN1dGFibGUgZmlsZSBhbmQgY29waWVkIGludG8gL3Vzci9iaW4uCisKKyAgIEJlZm9yZSB1c2luZyB0aGVzZSB1dGlsaXRpZXMsIHBsZWFzZSBsb2FkIGRyaXZlciAocmVmZXIgMy40ICYgMy41KSBhbmQKKyAgIG1ha2Ugc3VyZSB5b3UgaGFkIHJ1biB0aGUgIm1zbWtub2QiIHV0aWxpdHkuCisKKyAgIG1zZGlhZyAtIERpYWdub3N0aWMKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBUaGlzIHV0aWxpdHkgcHJvdmlkZXMgdGhlIGZ1bmN0aW9uIHRvIGRpc3BsYXkgd2hhdCBNb3hhIFNtYXJ0aW8vSW5kdXN0aW8KKyAgIGJvYXJkIGZvdW5kIGJ5IGRyaXZlciBpbiB0aGUgc3lzdGVtLgorCisgICBtc21vbiAtIFBvcnQgTW9uaXRvcmluZworICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFRoaXMgdXRpbGl0eSBnaXZlcyB0aGUgdXNlciBhIHF1aWNrIHZpZXcgYWJvdXQgYWxsIHRoZSBNT1hBIHBvcnRzJworICAgYWN0aXZpdGllcy4gT25lIGNhbiBlYXNpbHkgbGVhcm4gZWFjaCBwb3J0J3MgdG90YWwgcmVjZWl2ZWQvdHJhbnNtaXR0ZWQKKyAgIChSeC9UeCkgY2hhcmFjdGVyIGNvdW50IHNpbmNlIHRoZSB0aW1lIHdoZW4gdGhlIG1vbml0b3JpbmcgaXMgc3RhcnRlZC4KKyAgIFJ4L1R4IHRocm91Z2hwdXRzIHBlciBzZWNvbmQgYXJlIGFsc28gcmVwb3J0ZWQgaW4gaW50ZXJ2YWwgYmFzaXMgKGUuZy4KKyAgIHRoZSBsYXN0IDUgc2Vjb25kcykgYW5kIGluIGF2ZXJhZ2UgYmFzaXMgKHNpbmNlIHRoZSB0aW1lIHRoZSBtb25pdG9yaW5nCisgICBpcyBzdGFydGVkKS4gWW91IGNhbiByZXNldCBhbGwgcG9ydHMnIGNvdW50IGJ5IDxIT01FPiBrZXkuIDwrPiA8LT4KKyAgIChwbHVzL21pbnVzKSBrZXlzIHRvIGNoYW5nZSB0aGUgZGlzcGxheWluZyB0aW1lIGludGVydmFsLiBQcmVzcyA8RU5URVI+CisgICBvbiB0aGUgcG9ydCwgdGhhdCBjdXJzb3Igc3RheSwgdG8gdmlldyB0aGUgcG9ydCdzIGNvbW11bmljYXRpb24KKyAgIHBhcmFtZXRlcnMsIHNpZ25hbCBzdGF0dXMsIGFuZCBpbnB1dC9vdXRwdXQgcXVldWUuCisKKyAgIG1zdGVybSAtIFRlcm1pbmFsIEVtdWxhdGlvbgorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBUaGlzIHV0aWxpdHkgcHJvdmlkZXMgZGF0YSBzZW5kaW5nIGFuZCByZWNlaXZpbmcgYWJpbGl0eSBvZiBhbGwgdHR5IHBvcnRzLAorICAgZXNwZWNpYWxseSBmb3IgTU9YQSBwb3J0cy4gSXQgaXMgcXVpdGUgdXNlZnVsIGZvciB0ZXN0aW5nIHNpbXBsZQorICAgYXBwbGljYXRpb24sIGZvciBleGFtcGxlLCBzZW5kaW5nIEFUIGNvbW1hbmQgdG8gYSBtb2RlbSBjb25uZWN0ZWQgdG8gdGhlCisgICBwb3J0IG9yIHVzZWQgYXMgYSB0ZXJtaW5hbCBmb3IgbG9naW4gcHVycG9zZS4gTm90ZSB0aGF0IHRoaXMgaXMgb25seSBhCisgICBkdW1iIHRlcm1pbmFsIGVtdWxhdGlvbiB3aXRob3V0IGhhbmRsaW5nIGZ1bGwgc2NyZWVuIG9wZXJhdGlvbi4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzUuIFNldHNlcmlhbAorCisgICBTdXBwb3J0ZWQgU2V0c2VyaWFsIHBhcmFtZXRlcnMgYXJlIGxpc3RlZCBhcyBiZWxvdy4KKworICAgdWFydAkJICBzZXQgVUFSVCB0eXBlKDE2NDUwLS0+ZGlzYWJsZSBGSUZPLCAxNjU1MEEtLT5lbmFibGUgRklGTykKKyAgIGNsb3NlX2RlbGF5CSAgc2V0IHRoZSBhbW91bnQgb2YgdGltZShpbiAxLzEwMCBvZiBhIHNlY29uZCkgdGhhdCBEVFIKKwkJICBzaG91bGQgYmUga2VwdCBsb3cgd2hpbGUgYmVpbmcgY2xvc2VkLgorICAgY2xvc2luZ193YWl0ICAgc2V0IHRoZSBhbW91bnQgb2YgdGltZShpbiAxLzEwMCBvZiBhIHNlY29uZCkgdGhhdCB0aGUKKwkJICBzZXJpYWwgcG9ydCBzaG91bGQgd2FpdCBmb3IgZGF0YSB0byBiZSBkcmFpbmVkIHdoaWxlCisJCSAgYmVpbmcgY2xvc2VkLCBiZWZvcmUgdGhlIHJlY2VpdmVyIGlzIGRpc2FibGUuCisgICBzcGRfaGkJICBVc2UgIDU3LjZrYiAgd2hlbiAgdGhlIGFwcGxpY2F0aW9uIHJlcXVlc3RzIDM4LjRrYi4KKyAgIHNwZF92aGkJICBVc2UgIDExNS4ya2IJd2hlbiAgdGhlIGFwcGxpY2F0aW9uIHJlcXVlc3RzIDM4LjRrYi4KKyAgIHNwZF9zaGkJICBVc2UgIDIzMC40a2IJd2hlbiAgdGhlIGFwcGxpY2F0aW9uIHJlcXVlc3RzIDM4LjRrYi4KKyAgIHNwZF93YXJwCSAgVXNlICA0NjAuOGtiCXdoZW4gIHRoZSBhcHBsaWNhdGlvbiByZXF1ZXN0cyAzOC40a2IuCisgICBzcGRfbm9ybWFsCSAgVXNlICAzOC40a2IgIHdoZW4gIHRoZSBhcHBsaWNhdGlvbiByZXF1ZXN0cyAzOC40a2IuCisgICBzcGRfY3VzdAkgIFVzZSAgdGhlIGN1c3RvbSBkaXZpc29yIHRvIHNldCB0aGUgc3BlZWQgd2hlbiAgdGhlCisJCSAgYXBwbGljYXRpb24gcmVxdWVzdHMgMzguNGtiLgorICAgZGl2aXNvcgkgIFRoaXMgb3B0aW9uIHNldCB0aGUgY3VzdG9tIGRpdmlzaW9uLgorICAgYmF1ZF9iYXNlCSAgVGhpcyBvcHRpb24gc2V0IHRoZSBiYXNlIGJhdWQgcmF0ZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzYuIFRyb3VibGVzaG9vdGluZworCisgICBUaGUgYm9vdCB0aW1lIGVycm9yIG1lc3NhZ2VzIGFuZCBzb2x1dGlvbnMgYXJlIHN0YXRlZCBhcyBjbGVhcmx5IGFzCisgICBwb3NzaWJsZS4gSWYgYWxsIHRoZSBwb3NzaWJsZSBzb2x1dGlvbnMgZmFpbCwgcGxlYXNlIGNvbnRhY3Qgb3VyIHRlY2huaWNhbAorICAgc3VwcG9ydCB0ZWFtIHRvIGdldCBtb3JlIGhlbHAuCisKKworICAgRXJyb3IgbXNnOiBNb3JlIHRoYW4gNCBNb3hhIFNtYXJ0aW8vSW5kdXN0aW8gZmFtaWx5IGJvYXJkcyBmb3VuZC4gRmlmdGggYm9hcmQKKyAgICAgICAgICAgICAgYW5kIGFmdGVyIGFyZSBpZ25vcmVkLgorICAgU29sdXRpb246CisgICBUbyBhdm9pZCB0aGlzIHByb2JsZW0sIHBsZWFzZSB1bnBsdWcgZmlmdGggYW5kIGFmdGVyIGJvYXJkLCBiZWNhdXNlIE1veGEKKyAgIGRyaXZlciBzdXBwb3J0cyB1cCB0byA0IGJvYXJkcy4KKworICAgRXJyb3IgbXNnOiBSZXF1ZXN0X2lycSBmYWlsLCBJUlEoPykgbWF5IGJlIGNvbmZsaWN0IHdpdGggYW5vdGhlciBkZXZpY2UuCisgICBTb2x1dGlvbjoKKyAgIE90aGVyIFBDSSBvciBJU0EgZGV2aWNlcyBvY2N1cHkgdGhlIGFzc2lnbmVkIElSUS4gSWYgeW91IGFyZSBub3Qgc3VyZQorICAgd2hpY2ggZGV2aWNlIGNhdXNlcyB0aGUgc2l0dWF0aW9uLCBwbGVhc2UgY2hlY2sgL3Byb2MvaW50ZXJydXB0cyB0byBmaW5kCisgICBmcmVlIElSUSBhbmQgc2ltcGx5IGNoYW5nZSBhbm90aGVyIGZyZWUgSVJRIGZvciBNb3hhIGJvYXJkLgorCisgICBFcnJvciBtc2c6IEJvYXJkICM6IEMxeHggU2VyaWVzKENBUD14eHgpIGludGVycnVwdCBudW1iZXIgaW52YWxpZC4KKyAgIFNvbHV0aW9uOgorICAgRWFjaCBwb3J0IHdpdGhpbiB0aGUgc2FtZSBtdWx0aXBvcnQgYm9hcmQgc2hhcmVzIHRoZSBzYW1lIElSUS4gUGxlYXNlIHNldAorICAgb25lIElSUSAoSVJRIGRvZXNuJ3QgZXF1YWwgdG8gemVybykgZm9yIG9uZSBNb3hhIGJvYXJkLgorCisgICBFcnJvciBtc2c6IE5vIGludGVycnVwdCB2ZWN0b3IgYmUgc2V0IGZvciBNb3hhIElTQSBib2FyZChDQVA9eHh4KS4KKyAgIFNvbHV0aW9uOgorICAgTW94YSBJU0EgYm9hcmQgbmVlZHMgYW4gaW50ZXJydXB0IHZlY3Rvci5QbGVhc2UgcmVmZXIgdG8gdXNlcidzIG1hbnVhbAorICAgIkhhcmR3YXJlIEluc3RhbGxhdGlvbiIgY2hhcHRlciB0byBzZXQgaW50ZXJydXB0IHZlY3Rvci4KKworICAgRXJyb3IgbXNnOiBDb3VsZG4ndCBpbnN0YWxsIE1PWEEgU21hcnRpby9JbmR1c3RpbyBmYW1pbHkgZHJpdmVyIQorICAgU29sdXRpb246CisgICBMb2FkIE1veGEgZHJpdmVyIGZhaWwsIHRoZSBtYWpvciBudW1iZXIgbWF5IGNvbmZsaWN0IHdpdGggb3RoZXIgZGV2aWNlcy4KKyAgIFBsZWFzZSByZWZlciB0byBwcmV2aW91cyBzZWN0aW9uIDMuNyB0byBjaGFuZ2UgYSBmcmVlIG1ham9yIG51bWJlciBmb3IKKyAgIE1veGEgZHJpdmVyLgorCisgICBFcnJvciBtc2c6IENvdWxkbid0IGluc3RhbGwgTU9YQSBTbWFydGlvL0luZHVzdGlvIGZhbWlseSBjYWxsb3V0IGRyaXZlciEKKyAgIFNvbHV0aW9uOgorICAgTG9hZCBNb3hhIGNhbGxvdXQgZHJpdmVyIGZhaWwsIHRoZSBjYWxsb3V0IGRldmljZSBtYWpvciBudW1iZXIgbWF5CisgICBjb25mbGljdCB3aXRoIG90aGVyIGRldmljZXMuIFBsZWFzZSByZWZlciB0byBwcmV2aW91cyBzZWN0aW9uIDMuNyB0bworICAgY2hhbmdlIGEgZnJlZSBjYWxsb3V0IGRldmljZSBtYWpvciBudW1iZXIgZm9yIE1veGEgZHJpdmVyLgorCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2VyaWFsL25fZ3NtLnR4dCBiL0RvY3VtZW50YXRpb24vc2VyaWFsL25fZ3NtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWQ5MTEyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zZXJpYWwvbl9nc20udHh0CkBAIC0wLDAgKzEsODkgQEAKK25fZ3NtLmMgR1NNIDA3MTAgdHR5IG11bHRpcGxleG9yIEhPV1RPCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBsaW5lIGRpc2NpcGxpbmUgaW1wbGVtZW50cyB0aGUgR1NNIDA3LjEwIG11bHRpcGxleGluZyBwcm90b2NvbAorZGV0YWlsZWQgaW4gdGhlIGZvbGxvd2luZyAzR1BQIGRvY3VtZW50IDoKK2h0dHA6Ly93d3cuM2dwcC5vcmcvZnRwL1NwZWNzL2FyY2hpdmUvMDdfc2VyaWVzLzA3LjEwLzA3MTAtNzIwLnppcAorCitUaGlzIGRvY3VtZW50IGdpdmUgc29tZSBoaW50cyBvbiBob3cgdG8gdXNlIHRoaXMgZHJpdmVyIHdpdGggR1BSUyBhbmQgM0cKK21vZGVtcyBjb25uZWN0ZWQgdG8gYSBwaHlzaWNhbCBzZXJpYWwgcG9ydC4KKworSG93IHRvIHVzZSBpdAorLS0tLS0tLS0tLS0tLQorMS0gaW5pdGlhbGl6ZSB0aGUgbW9kZW0gaW4gMDcxMCBtdXggbW9kZSAodXN1YWxseSBBVCtDTVVYPSBjb21tYW5kKSB0aHJvdWdoCitpdHMgc2VyaWFsIHBvcnQuIERlcGVuZGluZyBvbiB0aGUgbW9kZW0gdXNlZCwgeW91IGNhbiBwYXNzIG1vcmUgb3IgbGVzcworcGFyYW1ldGVycyB0byB0aGlzIGNvbW1hbmQsCisyLSBzd2l0Y2ggdGhlIHNlcmlhbCBsaW5lIHRvIHVzaW5nIHRoZSBuX2dzbSBsaW5lIGRpc2NpcGxpbmUgYnkgdXNpbmcKK1RJT0NTRVREIGlvY3RsLAorMy0gY29uZmlndXJlIHRoZSBtdXggdXNpbmcgR1NNSU9DX0dFVENPTkYgLyBHU01JT0NfU0VUQ09ORiBpb2N0bCwKKworTWFqb3IgcGFydHMgb2YgdGhlIGluaXRpYWxpemF0aW9uIHByb2dyYW0gOgorKGEgZ29vZCBzdGFydGluZyBwb2ludCBpcyB1dGlsLWxpbnV4LW5nL3N5cy11dGlscy9sZGF0dGFjaC5jKQorI2luY2x1ZGUgPGxpbnV4L2dzbW11eC5oPgorI2RlZmluZSBOX0dTTTA3MTAJMjEJLyogR1NNIDA3MTAgTXV4ICovCisjZGVmaW5lIERFRkFVTFRfU1BFRUQJQjExNTIwMAorI2RlZmluZSBTRVJJQUxfUE9SVAkvZGV2L3R0eVMwCisKKwlpbnQgbGRpc2MgPSBOX0dTTTA3MTA7CisJc3RydWN0IGdzbV9jb25maWcgYzsKKwlzdHJ1Y3QgdGVybWlvcyBjb25maWd1cmF0aW9uOworCisJLyogb3BlbiB0aGUgc2VyaWFsIHBvcnQgY29ubmVjdGVkIHRvIHRoZSBtb2RlbSAqLworCWZkID0gb3BlbihTRVJJQUxfUE9SVCwgT19SRFdSIHwgT19OT0NUVFkgfCBPX05ERUxBWSk7CisKKwkvKiBjb25maWd1cmUgdGhlIHNlcmlhbCBwb3J0IDogc3BlZWQsIGZsb3cgY29udHJvbCAuLi4gKi8KKworCS8qIHNlbmQgdGhlIEFUIGNvbW1hbmRzIHRvIHN3aXRjaCB0aGUgbW9kZW0gdG8gQ01VWCBtb2RlCisJICAgYW5kIGNoZWNrIHRoYXQgaXQncyBzdWNjZXNzZnVsIChzaG91bGQgcmV0dXJuIE9LKSAqLworCXdyaXRlKGZkLCAiQVQrQ01VWD0wXHIiLCAxMCk7CisKKwkvKiBleHBlcmllbmNlIHNob3dlZCB0aGF0IHNvbWUgbW9kZW1zIG5lZWQgc29tZSB0aW1lIGJlZm9yZQorCSAgIGJlaW5nIGFibGUgdG8gYW5zd2VyIHRvIHRoZSBmaXJzdCBNVVggcGFja2V0IHNvIGEgZGVsYXkKKwkgICBtYXkgYmUgbmVlZGVkIGhlcmUgaW4gc29tZSBjYXNlICovCisJc2xlZXAoMyk7CisKKwkvKiB1c2Ugbl9nc20gbGluZSBkaXNjaXBsaW5lICovCisJaW9jdGwoZmQsIFRJT0NTRVRELCAmbGRpc2MpOworCisJLyogZ2V0IG5fZ3NtIGNvbmZpZ3VyYXRpb24gKi8KKwlpb2N0bChmZCwgR1NNSU9DX0dFVENPTkYsICZjKTsKKwkvKiB3ZSBhcmUgaW5pdGlhdG9yIGFuZCBuZWVkIGVuY29kaW5nIDAgKGJhc2ljKSAqLworCWMuaW5pdGlhdG9yID0gMTsKKwljLmVuY2Fwc3VsYXRpb24gPSAwOworCS8qIG91ciBtb2RlbSBkZWZhdWx0cyB0byBhIG1heGltdW0gc2l6ZSBvZiAxMjcgYnl0ZXMgKi8KKwljLm1ydSA9IDEyNzsKKwljLm10dSA9IDEyNzsKKwkvKiBzZXQgdGhlIG5ldyBjb25maWd1cmF0aW9uICovCisJaW9jdGwoZmQsIEdTTUlPQ19TRVRDT05GLCAmYyk7CisKKwkvKiBhbmQgd2FpdCBmb3IgZXZlciB0byBrZWVwIHRoZSBsaW5lIGRpc2NpcGxpbmUgZW5hYmxlZCAqLworCWRhZW1vbigwLDApOworCXBhdXNlKCk7CisKKzQtIGNyZWF0ZSB0aGUgZGV2aWNlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSAidmlydHVhbCIgc2VyaWFsIHBvcnRzICh0YWtlIGNhcmUsCitlYWNoIG1vZGVtIGhhcyBpdHMgY29uZmlndXJhdGlvbiBhbmQgc29tZSBETEMgaGF2ZSBkZWRpY2F0ZWQgZnVuY3Rpb25zLAorZm9yIGV4YW1wbGUgR1BTKSwgc3RhcnRpbmcgd2l0aCBtaW5vciAxIChETEMwIGlzIHJlc2VydmVkIGZvciB0aGUgbWFuYWdlbWVudAorb2YgdGhlIG11eCkKKworTUFKT1I9YGNhdCAvcHJvYy9kZXZpY2VzIHxncmVwIGdzbXR0eSB8IGF3ayAne3ByaW50ICQxfWAKK2ZvciBpIGluIGBzZXEgMSA0YDsgZG8KKwlta25vZCAvZGV2L3R0eWdzbSRpIGMgJE1BSk9SICRpCitkb25lCisKKzUtIHVzZSB0aGVzZSBkZXZpY2VzIGFzIHBsYWluIHNlcmlhbCBwb3J0cy4KK2ZvciBleGFtcGxlLCBpdCdzIHBvc3NpYmxlIDoKKy0gYW5kIHRvIHVzZSBnbm9raWkgdG8gc2VuZCAvIHJlY2VpdmUgU01TIG9uIHR0eWdzbTEKKy0gdG8gdXNlIHBwcCB0byBlc3RhYmxpc2ggYSBkYXRhbGluayBvbiB0dHlnc20yCisKKzYtIGZpcnN0IGNsb3NlIGFsbCB2aXJ0dWFsIHBvcnRzIGJlZm9yZSBjbG9zaW5nIHRoZSBwaHlzaWNhbCBwb3J0LgorCitBZGRpdGlvbmFsIERvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTW9yZSBwcmFjdGljYWwgZGV0YWlscyBvbiB0aGUgcHJvdG9jb2wgYW5kIGhvdyBpdCdzIHN1cHBvcnRlZCBieSBpbmR1c3RyaWFsCittb2RlbXMgY2FuIGJlIGZvdW5kIGluIHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRzIDoKK2h0dHA6Ly93d3cudGVsaXQuY29tL21vZHVsZS9pbmZvcG9vbC9kb3dubG9hZC5waHA/aWQ9NjE2CitodHRwOi8vd3d3LnUtYmxveC5jb20vaW1hZ2VzL2Rvd25sb2Fkcy9Qcm9kdWN0X0RvY3MvTEVPTi1HMTAwLUcyMDAtTXV4SW1wbGVtZW50YXRpb25fQXBwbGljYXRpb25Ob3RlXyUyOEdTTSUyMEcxLUNTLTEwMDAyJTI5LnBkZgoraHR0cDovL3d3dy5zaWVycmF3aXJlbGVzcy5jb20vU3VwcG9ydC9Eb3dubG9hZHMvQWlyUHJpbWUvV01QX1Nlcmllcy9+L21lZGlhL1N1cHBvcnRfRG93bmxvYWRzL0FpclByaW1lL0FwcGxpY2F0aW9uX25vdGVzL0NNVVhfRmVhdHVyZV9BcHBsaWNhdGlvbl9Ob3RlLVJldjAwNC5hc2h4CitodHRwOi8vd20uc2ltLmNvbS9zaW0vTmV3cy9waG90by8yMDEwNzIxMTYxNDQyLnBkZgorCisxMS0wMy0wOCAtIEVyaWMgQsOpbmFyZCAtIDxlcmljQGV1a3JlYS5jb20+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NlcmlhbC9yb2NrZXQudHh0IGIvRG9jdW1lbnRhdGlvbi9zZXJpYWwvcm9ja2V0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGIwMzk4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zZXJpYWwvcm9ja2V0LnR4dApAQCAtMCwwICsxLDE4OSBAQAorQ29tdHJvbCh0bSkgUm9ja2V0UG9ydChSKS9Sb2NrZXRNb2RlbShUTSkgU2VyaWVzIAorRGV2aWNlIERyaXZlciBmb3IgdGhlIExpbnV4IE9wZXJhdGluZyBTeXN0ZW0KKworPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tCisKK1BST0RVQ1QgT1ZFUlZJRVcKKy0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgcHJvdmlkZXMgYSBsb2FkYWJsZSBrZXJuZWwgZHJpdmVyIGZvciB0aGUgQ29tdHJvbCBSb2NrZXRQb3J0CithbmQgUm9ja2V0TW9kZW0gUENJIGJvYXJkcy4gVGhlc2UgYm9hcmRzIHByb3ZpZGUsIDIsIDQsIDgsIDE2LCBvciAzMiAKK2hpZ2gtc3BlZWQgc2VyaWFsIHBvcnRzIG9yIG1vZGVtcy4gIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHVwIHRvIGEgY29tYmluYXRpb24KK29mIGZvdXIgUm9ja2V0UG9ydCBvciBSb2NrZXRNb2RlbXMgYm9hcmRzIGluIG9uZSBtYWNoaW5lIHNpbXVsdGFuZW91c2x5LgorVGhpcyBmaWxlIGFzc3VtZXMgdGhhdCB5b3UgYXJlIHVzaW5nIHRoZSBSb2NrZXRQb3J0IGRyaXZlciB3aGljaCBpcworaW50ZWdyYXRlZCBpbnRvIHRoZSBrZXJuZWwgc291cmNlcy4gIAorCitUaGUgZHJpdmVyIGNhbiBhbHNvIGJlIGluc3RhbGxlZCBhcyBhbiBleHRlcm5hbCBtb2R1bGUgdXNpbmcgdGhlIHVzdWFsIAorIm1ha2U7bWFrZSBpbnN0YWxsIiByb3V0aW5lLiAgVGhpcyBleHRlcm5hbCBtb2R1bGUgZHJpdmVyLCBvYnRhaW5hYmxlIAorZnJvbSB0aGUgQ29tdHJvbCB3ZWJzaXRlIGxpc3RlZCBiZWxvdywgaXMgdXNlZnVsIGZvciB1cGRhdGluZyB0aGUgZHJpdmVyCitvciBpbnN0YWxsaW5nIGl0IGludG8ga2VybmVscyB3aGljaCBkbyBub3QgaGF2ZSB0aGUgZHJpdmVyIGNvbmZpZ3VyZWQKK2ludG8gdGhlbS4gIEluc3RhbGxhdGlvbnMgaW5zdHJ1Y3Rpb25zIGZvciB0aGUgZXh0ZXJuYWwgbW9kdWxlCithcmUgaW4gdGhlIGluY2x1ZGVkIFJFQURNRSBhbmQgSFdfSU5TVEFMTCBmaWxlcy4KKworUm9ja2V0UG9ydCBJU0EgYW5kIFJvY2tldE1vZGVtIElJIFBDSSBib2FyZHMgY3VycmVudGx5IGFyZSBvbmx5IHN1cHBvcnRlZCBieQordGhpcyBkcml2ZXIgaW4gbW9kdWxlIGZvcm0uCisKK1RoZSBSb2NrZXRQb3J0IElTQSBib2FyZCByZXF1aXJlcyBJL08gcG9ydHMgdG8gYmUgY29uZmlndXJlZCBieSB0aGUgRElQCitzd2l0Y2hlcyBvbiB0aGUgYm9hcmQuICBTZWUgdGhlIHNlY3Rpb24gIklTQSBSb2NrZXRwb3J0IEJvYXJkcyIgYmVsb3cgZm9yCitpbmZvcm1hdGlvbiBvbiBob3cgdG8gc2V0IHRoZSBESVAgc3dpdGNoZXMuCisKK1lvdSBwYXNzIHRoZSBJL08gcG9ydCB0byB0aGUgZHJpdmVyIHVzaW5nIHRoZSBmb2xsb3dpbmcgbW9kdWxlIHBhcmFtZXRlcnM6CisKK2JvYXJkMSA6CUkvTyBwb3J0IGZvciB0aGUgZmlyc3QgSVNBIGJvYXJkCitib2FyZDIgOglJL08gcG9ydCBmb3IgdGhlIHNlY29uZCBJU0EgYm9hcmQKK2JvYXJkMyA6CUkvTyBwb3J0IGZvciB0aGUgdGhpcmQgSVNBIGJvYXJkCitib2FyZDQgOglJL08gcG9ydCBmb3IgdGhlIGZvdXJ0aCBJU0EgYm9hcmQKKworVGhlcmUgaXMgYSBzZXQgb2YgdXRpbGl0aWVzIGFuZCBzY3JpcHRzIHByb3ZpZGVkIHdpdGggdGhlIGV4dGVybmFsIGRyaXZlcgorKCBkb3dubG9hZGFibGUgZnJvbSBodHRwOi8vd3d3LmNvbXRyb2wuY29tICkgdGhhdCBlYXNlIHRoZSBjb25maWd1cmF0aW9uIGFuZAorc2V0dXAgb2YgdGhlIElTQSBjYXJkcy4KKworVGhlIFJvY2tldE1vZGVtIElJIFBDSSBib2FyZHMgcmVxdWlyZSBmaXJtd2FyZSB0byBiZSBsb2FkZWQgaW50byB0aGUgY2FyZAorYmVmb3JlIGl0IHdpbGwgZnVuY3Rpb24uICBUaGUgZHJpdmVyIGhhcyBvbmx5IGJlZW4gdGVzdGVkIGFzIGEgbW9kdWxlIGZvciB0aGlzCitib2FyZC4KKworPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tCisKK0lOU1RBTExBVElPTiBQUk9DRURVUkVTCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSb2NrZXRQb3J0L1JvY2tldE1vZGVtIFBDSSBjYXJkcyByZXF1aXJlIG5vIGRyaXZlciBjb25maWd1cmF0aW9uLCB0aGV5IGFyZSAKK2F1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQgYW5kIGNvbmZpZ3VyZWQuCisKK1RoZSBSb2NrZXRQb3J0IGRyaXZlciBjYW4gYmUgaW5zdGFsbGVkIGFzIGEgbW9kdWxlIChyZWNvbW1lbmRlZCkgb3IgYnVpbHQgCitpbnRvIHRoZSBrZXJuZWwuIFRoaXMgaXMgc2VsZWN0ZWQsIGFzIGZvciBvdGhlciBkcml2ZXJzLCB0aHJvdWdoIHRoZSBgbWFrZSBjb25maWdgCitjb21tYW5kIGZyb20gdGhlIHJvb3Qgb2YgdGhlIExpbnV4IHNvdXJjZSB0cmVlIGR1cmluZyB0aGUga2VybmVsIGJ1aWxkIHByb2Nlc3MuIAorCitUaGUgUm9ja2V0UG9ydC9Sb2NrZXRNb2RlbSBzZXJpYWwgcG9ydHMgaW5zdGFsbGVkIGJ5IHRoaXMgZHJpdmVyIGFyZSBhc3NpZ25lZAorZGV2aWNlIG1ham9yIG51bWJlciA0NiwgYW5kIHdpbGwgYmUgbmFtZWQgL2Rldi90dHlSeCwgd2hlcmUgeCBpcyB0aGUgcG9ydCBudW1iZXIgCitzdGFydGluZyBhdCB6ZXJvIChleC4gL2Rldi90dHlSMCwgL2RldnR0eVIxLCAuLi4pLiAgSWYgeW91IGhhdmUgbXVsdGlwbGUgY2FyZHMKK2luc3RhbGxlZCBpbiB0aGUgc3lzdGVtLCB0aGUgbWFwcGluZyBvZiBwb3J0IG5hbWVzIHRvIHNlcmlhbCBwb3J0cyBpcyBkaXNwbGF5ZWQKK2luIHRoZSBzeXN0ZW0gbG9nIGF0IC92YXIvbG9nL21lc3NhZ2VzLgorCitJZiBpbnN0YWxsZWQgYXMgYSBtb2R1bGUsIHRoZSBtb2R1bGUgbXVzdCBiZSBsb2FkZWQuICBUaGlzIGNhbiBiZSBkb25lCittYW51YWxseSBieSBlbnRlcmluZyAibW9kcHJvYmUgcm9ja2V0Ii4gIFRvIGhhdmUgdGhlIG1vZHVsZSBsb2FkZWQgYXV0b21hdGljYWxseQordXBvbiBzeXN0ZW0gYm9vdCwgZWRpdCBhIC9ldGMvbW9kcHJvYmUuZC8qLmNvbmYgZmlsZSBhbmQgYWRkIHRoZSBsaW5lCisiYWxpYXMgY2hhci1tYWpvci00NiByb2NrZXQiLgorCitJbiBvcmRlciB0byB1c2UgdGhlIHBvcnRzLCB0aGVpciBkZXZpY2UgbmFtZXMgKG5vZGVzKSBtdXN0IGJlIGNyZWF0ZWQgd2l0aCBta25vZC4KK1RoaXMgaXMgb25seSByZXF1aXJlZCBvbmNlLCB0aGUgc3lzdGVtIHdpbGwgcmV0YWluIHRoZSBuYW1lcyBvbmNlIGNyZWF0ZWQuICBUbyAKK2NyZWF0ZSB0aGUgUm9ja2V0UG9ydC9Sb2NrZXRNb2RlbSBkZXZpY2UgbmFtZXMsIHVzZSB0aGUgY29tbWFuZCAKKyJta25vZCAvZGV2L3R0eVJ4IGMgNDYgeCIgd2hlcmUgeCBpcyB0aGUgcG9ydCBudW1iZXIgc3RhcnRpbmcgYXQgemVyby4gIEZvciBleGFtcGxlOgorCis+bWtub2QgL2Rldi90dHlSMCBjIDQ2IDAKKz5ta25vZCAvZGV2L3R0eVIxIGMgNDYgMQorPm1rbm9kIC9kZXYvdHR5UjIgYyA0NiAyICAKKworVGhlIExpbnV4IHNjcmlwdCBNQUtFREVWIHdpbGwgY3JlYXRlIHRoZSBmaXJzdCAxNiB0dHlSeCBkZXZpY2UgbmFtZXMgKG5vZGVzKQorZm9yIHlvdToKKworPi9kZXYvTUFLRURFViB0dHlSCisKKz0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQorCitJU0EgUm9ja2V0cG9ydCBCb2FyZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitZb3UgbXVzdCBhc3NpZ24gYW5kIGNvbmZpZ3VyZSB0aGUgSS9PIGFkZHJlc3NlcyB1c2VkIGJ5IHRoZSBJU0EgUm9ja2V0cG9ydAorY2FyZCBiZWZvcmUgaW5zdGFsbGluZyBhbmQgdXNpbmcgaXQuICBUaGlzIGlzIGRvbmUgYnkgc2V0dGluZyBhIHNldCBvZiBESVAKK3N3aXRjaGVzIG9uIHRoZSBSb2NrZXRwb3J0IGJvYXJkLgorCisKK1NFVFRJTkcgVEhFIEkvTyBBRERSRVNTCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCZWZvcmUgaW5zdGFsbGluZyBSb2NrZXRQb3J0KFIpIG9yIFJvY2tldFBvcnQgUkEgYm9hcmRzLCB5b3UgbXVzdCBmaW5kCithIHJhbmdlIG9mIEkvTyBhZGRyZXNzZXMgZm9yIGl0IHRvIHVzZS4gVGhlIGZpcnN0IFJvY2tldFBvcnQgY2FyZAorcmVxdWlyZXMgYSA2OC1ieXRlIGNvbnRpZ3VvdXMgYmxvY2sgb2YgSS9PIGFkZHJlc3Nlcywgc3RhcnRpbmcgYXQgb25lCitvZiB0aGUgZm9sbG93aW5nOiAweDEwMGgsIDB4MTQwaCwgMHgxODBoLCAweDIwMGgsIDB4MjQwaCwgMHgyODBoLAorMHgzMDBoLCAweDM0MGgsIDB4MzgwaC4gIFRoaXMgSS9PIGFkZHJlc3MgbXVzdCBiZSByZWZsZWN0ZWQgaW4gdGhlIERJUAorc3dpdGNoZXMgb2YgKmFsbCogb2YgdGhlIFJvY2tldHBvcnQgY2FyZHMuCisKK1RoZSBzZWNvbmQsIHRoaXJkLCBhbmQgZm91cnRoIFJvY2tldFBvcnQgY2FyZHMgcmVxdWlyZSBhIDY0LWJ5dGUKK2NvbnRpZ3VvdXMgYmxvY2sgb2YgSS9PIGFkZHJlc3Nlcywgc3RhcnRpbmcgYXQgb25lIG9mIHRoZSBmb2xsb3dpbmcKK0kvTyBhZGRyZXNzZXM6IDB4MTAwaCwgMHgxNDBoLCAweDE4MGgsIDB4MUMwaCwgMHgyMDBoLCAweDI0MGgsIDB4MjgwaCwKKzB4MkMwaCwgMHgzMDBoLCAweDM0MGgsIDB4MzgwaCwgMHgzQzBoLiAgVGhlIEkvTyBhZGRyZXNzIHVzZWQgYnkgdGhlCitzZWNvbmQsIHRoaXJkLCBhbmQgZm91cnRoIFJvY2tldHBvcnQgY2FyZHMgKGlmIHByZXNlbnQpIGFyZSBzZXQgdmlhCitzb2Z0d2FyZSBjb250cm9sLiAgVGhlIERJUCBzd2l0Y2ggc2V0dGluZ3MgZm9yIHRoZSBJL08gYWRkcmVzcyBtdXN0IGJlCitzZXQgdG8gdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBSb2NrZXRwb3J0IGNhcmRzLgorCitJbiBvcmRlciB0byBkaXN0aW5ndWlzaCBlYWNoIG9mIHRoZSBjYXJkIGZyb20gdGhlIG90aGVycywgZWFjaCBjYXJkCittdXN0IGhhdmUgYSB1bmlxdWUgYm9hcmQgSUQgc2V0IG9uIHRoZSBkaXAgc3dpdGNoZXMuICBUaGUgZmlyc3QKK1JvY2tldHBvcnQgYm9hcmQgbXVzdCBiZSBzZXQgd2l0aCB0aGUgRElQIHN3aXRjaGVzIGNvcnJlc3BvbmRpbmcgdG8KK3RoZSBmaXJzdCBib2FyZCwgdGhlIHNlY29uZCBib2FyZCBtdXN0IGJlIHNldCB3aXRoIHRoZSBESVAgc3dpdGNoZXMKK2NvcnJlc3BvbmRpbmcgdG8gdGhlIHNlY29uZCBib2FyZCwgZXRjLiAgSU1QT1JUQU5UOiBUaGUgYm9hcmQgSUQgaXMKK3RoZSBvbmx5IHBsYWNlIHdoZXJlIHRoZSBESVAgc3dpdGNoIHNldHRpbmdzIHNob3VsZCBkaWZmZXIgYmV0d2VlbiB0aGUKK3ZhcmlvdXMgUm9ja2V0cG9ydCBib2FyZHMgaW4gYSBzeXN0ZW0uCisKK1RoZSBJL08gYWRkcmVzcyByYW5nZSB1c2VkIGJ5IGFueSBvZiB0aGUgUm9ja2V0UG9ydCBjYXJkcyBtdXN0IG5vdAorY29uZmxpY3Qgd2l0aCBhbnkgb3RoZXIgY2FyZHMgaW4gdGhlIHN5c3RlbSwgaW5jbHVkaW5nIG90aGVyCitSb2NrZXRQb3J0IGNhcmRzLiAgQmVsb3csIHlvdSB3aWxsIGZpbmQgYSBsaXN0IG9mIGNvbW1vbmx5IHVzZWQgSS9PCithZGRyZXNzIHJhbmdlcyB3aGljaCBtYXkgYmUgaW4gdXNlIGJ5IG90aGVyIGRldmljZXMgaW4geW91ciBzeXN0ZW0uCitPbiBhIExpbnV4IHN5c3RlbSwgImNhdCAvcHJvYy9pb3BvcnRzIiB3aWxsIGFsc28gYmUgaGVscGZ1bCBpbgoraWRlbnRpZnlpbmcgd2hhdCBJL08gYWRkcmVzc2VzIGFyZSBiZWluZyB1c2VkIGJ5IGRldmljZXMgb24geW91cgorc3lzdGVtLgorCitSZW1lbWJlciwgdGhlIEZJUlNUIFJvY2tldFBvcnQgdXNlcyA2OCBJL08gYWRkcmVzc2VzLiAgU28sIGlmIHlvdSBzZXQgaXQKK2ZvciAweDEwMCwgaXQgd2lsbCBvY2N1cHkgMHgxMDAgdG8gMHgxNDMuICBUaGlzIHdvdWxkIG1lYW4gdGhhdCB5b3UKK0NBTiBOT1Qgc2V0IHRoZSBzZWNvbmQsIHRoaXJkIG9yIGZvdXJ0aCBib2FyZCBmb3IgYWRkcmVzcyAweDE0MCBzaW5jZQordGhlIGZpcnN0IDQgYnl0ZXMgb2YgdGhhdCByYW5nZSBhcmUgdXNlZCBieSB0aGUgZmlyc3QgYm9hcmQuICBZb3Ugd291bGQKK25lZWQgdG8gc2V0IHRoZSBzZWNvbmQsIHRoaXJkLCBvciBmb3VydGggYm9hcmQgdG8gb25lIG9mIHRoZSBuZXh0IGF2YWlsYWJsZQorYmxvY2tzIHN1Y2ggYXMgMHgxODAuCisKKz0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQorCitSb2NrZXRQb3J0IGFuZCBSb2NrZXRQb3J0IFJBIFNXMSBTZXR0aW5nczoKKworICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgIHwgOCB8IDcgfCA2IHwgNSB8IDQgfCAzIHwgMiB8IDEgfAorICAgICAgICAgICstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgIHwgVW51c2VkfCBDYXJkICB8IEkvTyBQb3J0IEJsb2NrfAorICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCitESVAgU3dpdGNoZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERJUCBTd2l0Y2hlcworNyAgICA4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2ICAgIDUKKz09PT09PT09PT09PT09PT09PT0gICAgICAgICAgICAgICAgICAgICAgPT09PT09PT09PT09PT09PT09PQorT24gICBPbiAgIFVOVVNFRCwgTVVTVCBCRSBPTi4gICAgICAgICAgICBPbiAgIE9uICAgRmlyc3QgQ2FyZCAgICA8PT09PSBEZWZhdWx0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uICAgT2ZmICBTZWNvbmQgQ2FyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPZmYgIE9uICAgVGhpcmQgQ2FyZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPZmYgIE9mZiAgRm91cnRoIENhcmQKKworRElQIFN3aXRjaGVzICAgICAgICAgSS9PIEFkZHJlc3MgUmFuZ2UKKzQgICAgMyAgICAyICAgIDEgICAgIFVzZWQgYnkgdGhlIEZpcnN0IENhcmQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK09uICAgT2ZmICBPbiAgIE9mZiAgIDEwMC0xNDMKK09uICAgT2ZmICBPZmYgIE9uICAgIDE0MC0xODMKK09uICAgT2ZmICBPZmYgIE9mZiAgIDE4MC0xQzMgICAgICAgPD09PT0gRGVmYXVsdAorT2ZmICBPbiAgIE9uICAgT2ZmICAgMjAwLTI0MworT2ZmICBPbiAgIE9mZiAgT24gICAgMjQwLTI4MworT2ZmICBPbiAgIE9mZiAgT2ZmICAgMjgwLTJDMworT2ZmICBPZmYgIE9uICAgT2ZmICAgMzAwLTM0MworT2ZmICBPZmYgIE9mZiAgT24gICAgMzQwLTM4MworT2ZmICBPZmYgIE9mZiAgT2ZmICAgMzgwLTNDMworCis9LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KKworUkVQT1JUSU5HIEJVR1MKKy0tLS0tLS0tLS0tLS0tCisKK0ZvciB0ZWNobmljYWwgc3VwcG9ydCwgcGxlYXNlIHByb3ZpZGUgdGhlIGZvbGxvd2luZworaW5mb3JtYXRpb246IERyaXZlciB2ZXJzaW9uLCBrZXJuZWwgcmVsZWFzZSwgZGlzdHJpYnV0aW9uIG9mCitrZXJuZWwsIGFuZCB0eXBlIG9mIGJvYXJkIHlvdSBhcmUgdXNpbmcuIEVycm9yIG1lc3NhZ2VzIGFuZCBsb2cKK3ByaW50b3V0cyBwb3J0IGNvbmZpZ3VyYXRpb24gZGV0YWlscyBhcmUgZXNwZWNpYWxseSBoZWxwZnVsLgorCitVU0EKKyAgICBQaG9uZTogKDYxMikgNDk0LTQxMDAKKyAgICAgIEZBWDogKDYxMikgNDk0LTQxOTkKKyAgICBlbWFpbDogc3VwcG9ydEBjb210cm9sLmNvbQorCitDb210cm9sIEV1cm9wZQorICAgIFBob25lOiArNDQgKDApIDEgODY5IDMyMy0yMjAKKyAgICAgIEZBWDogKzQ0ICgwKSAxIDg2OSAzMjMtMjExCisgICAgZW1haWw6IHN1cHBvcnRAY29tdHJvbC5jby51aworCitXZWI6CWh0dHA6Ly93d3cuY29tdHJvbC5jb20KK0ZUUDoJZnRwLmNvbXRyb2wuY29tCisKKz0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQorCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2VyaWFsL3NlcmlhbC1yczQ4NS50eHQgYi9Eb2N1bWVudGF0aW9uL3NlcmlhbC9zZXJpYWwtcnM0ODUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyNTNiOGIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NlcmlhbC9zZXJpYWwtcnM0ODUudHh0CkBAIC0wLDAgKzEsOTYgQEAKKyAgICAgICAgICAgICAgICAgICAgICAgIFJTNDg1IFNFUklBTCBDT01NVU5JQ0FUSU9OUworCisxLiBJTlRST0RVQ1RJT04KKworICAgRUlBLTQ4NSwgYWxzbyBrbm93biBhcyBUSUEvRUlBLTQ4NSBvciBSUy00ODUsIGlzIGEgc3RhbmRhcmQgZGVmaW5pbmcgdGhlCisgICBlbGVjdHJpY2FsIGNoYXJhY3RlcmlzdGljcyBvZiBkcml2ZXJzIGFuZCByZWNlaXZlcnMgZm9yIHVzZSBpbiBiYWxhbmNlZAorICAgZGlnaXRhbCBtdWx0aXBvaW50IHN5c3RlbXMuCisgICBUaGlzIHN0YW5kYXJkIGlzIHdpZGVseSB1c2VkIGZvciBjb21tdW5pY2F0aW9ucyBpbiBpbmR1c3RyaWFsIGF1dG9tYXRpb24KKyAgIGJlY2F1c2UgaXQgY2FuIGJlIHVzZWQgZWZmZWN0aXZlbHkgb3ZlciBsb25nIGRpc3RhbmNlcyBhbmQgaW4gZWxlY3RyaWNhbGx5CisgICBub2lzeSBlbnZpcm9ubWVudHMuCisKKzIuIEhBUkRXQVJFLVJFTEFURUQgQ09OU0lERVJBVElPTlMKKworICAgU29tZSBDUFVzL1VBUlRzIChlLmcuLCBBdG1lbCBBVDkxIG9yIDE2Qzk1MCBVQVJUKSBjb250YWluIGEgYnVpbHQtaW4KKyAgIGhhbGYtZHVwbGV4IG1vZGUgY2FwYWJsZSBvZiBhdXRvbWF0aWNhbGx5IGNvbnRyb2xsaW5nIGxpbmUgZGlyZWN0aW9uIGJ5CisgICB0b2dnbGluZyBSVFMgb3IgRFRSIHNpZ25hbHMuIFRoYXQgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBleHRlcm5hbAorICAgaGFsZi1kdXBsZXggaGFyZHdhcmUgbGlrZSBhbiBSUzQ4NSB0cmFuc2NlaXZlciBvciBhbnkgUlMyMzItY29ubmVjdGVkCisgICBoYWxmLWR1cGxleCBkZXZpY2VzIGxpa2Ugc29tZSBtb2RlbXMuCisKKyAgIEZvciB0aGVzZSBtaWNyb2NvbnRyb2xsZXJzLCB0aGUgTGludXggZHJpdmVyIHNob3VsZCBiZSBtYWRlIGNhcGFibGUgb2YKKyAgIHdvcmtpbmcgaW4gYm90aCBtb2RlcywgYW5kIHByb3BlciBpb2N0bHMgKHNlZSBsYXRlcikgc2hvdWxkIGJlIG1hZGUKKyAgIGF2YWlsYWJsZSBhdCB1c2VyLWxldmVsIHRvIGFsbG93IHN3aXRjaGluZyBmcm9tIG9uZSBtb2RlIHRvIHRoZSBvdGhlciwgYW5kCisgICB2aWNlIHZlcnNhLgorCiszLiBEQVRBIFNUUlVDVFVSRVMgQUxSRUFEWSBBVkFJTEFCTEUgSU4gVEhFIEtFUk5FTAorCisgICBUaGUgTGludXgga2VybmVsIHByb3ZpZGVzIHRoZSBzZXJpYWxfcnM0ODUgc3RydWN0dXJlIChzZWUgWzFdKSB0byBoYW5kbGUKKyAgIFJTNDg1IGNvbW11bmljYXRpb25zLiBUaGlzIGRhdGEgc3RydWN0dXJlIGlzIHVzZWQgdG8gc2V0IGFuZCBjb25maWd1cmUgUlM0ODUKKyAgIHBhcmFtZXRlcnMgaW4gdGhlIHBsYXRmb3JtIGRhdGEgYW5kIGluIGlvY3Rscy4KKworICAgVGhlIGRldmljZSB0cmVlIGNhbiBhbHNvIHByb3ZpZGUgUlM0ODUgYm9vdCB0aW1lIHBhcmFtZXRlcnMgKHNlZSBbMl0KKyAgIGZvciBiaW5kaW5ncykuIFRoZSBkcml2ZXIgaXMgaW4gY2hhcmdlIG9mIGZpbGxpbmcgdGhpcyBkYXRhIHN0cnVjdHVyZSBmcm9tCisgICB0aGUgdmFsdWVzIGdpdmVuIGJ5IHRoZSBkZXZpY2UgdHJlZS4KKworICAgQW55IGRyaXZlciBmb3IgZGV2aWNlcyBjYXBhYmxlIG9mIHdvcmtpbmcgYm90aCBhcyBSUzIzMiBhbmQgUlM0ODUgc2hvdWxkCisgICBpbXBsZW1lbnQgdGhlIHJzNDg1X2NvbmZpZyBjYWxsYmFjayBpbiB0aGUgdWFydF9wb3J0IHN0cnVjdHVyZS4gVGhlCisgICBzZXJpYWxfY29yZSBjYWxscyByczQ4NV9jb25maWcgdG8gZG8gdGhlIGRldmljZSBzcGVjaWZpYyBwYXJ0IGluIHJlc3BvbnNlCisgICB0byBUSU9DU1JTNDg1IGFuZCBUSU9DR1JTNDg1IGlvY3RscyAoc2VlIGJlbG93KS4gVGhlIHJzNDg1X2NvbmZpZyBjYWxsYmFjaworICAgcmVjZWl2ZXMgYSBwb2ludGVyIHRvIHN0cnVjdCBzZXJpYWxfcnM0ODUuCisKKzQuIFVTQUdFIEZST00gVVNFUi1MRVZFTAorCisgICBGcm9tIHVzZXItbGV2ZWwsIFJTNDg1IGNvbmZpZ3VyYXRpb24gY2FuIGJlIGdldC9zZXQgdXNpbmcgdGhlIHByZXZpb3VzCisgICBpb2N0bHMuIEZvciBpbnN0YW5jZSwgdG8gc2V0IFJTNDg1IHlvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgY29kZToKKworCSNpbmNsdWRlIDxsaW51eC9zZXJpYWwuaD4KKworCS8qIFJTNDg1IGlvY3RsczogKi8KKwkjZGVmaW5lIFRJT0NHUlM0ODUgICAgICAweDU0MkUKKwkjZGVmaW5lIFRJT0NTUlM0ODUgICAgICAweDU0MkYKKworCS8qIE9wZW4geW91ciBzcGVjaWZpYyBkZXZpY2UgKGUuZy4sIC9kZXYvbXlkZXZpY2UpOiAqLworCWludCBmZCA9IG9wZW4gKCIvZGV2L215ZGV2aWNlIiwgT19SRFdSKTsKKwlpZiAoZmQgPCAwKSB7CisJCS8qIEVycm9yIGhhbmRsaW5nLiBTZWUgZXJybm8uICovCisJfQorCisJc3RydWN0IHNlcmlhbF9yczQ4NSByczQ4NWNvbmY7CisKKwkvKiBFbmFibGUgUlM0ODUgbW9kZTogKi8KKwlyczQ4NWNvbmYuZmxhZ3MgfD0gU0VSX1JTNDg1X0VOQUJMRUQ7CisKKwkvKiBTZXQgbG9naWNhbCBsZXZlbCBmb3IgUlRTIHBpbiBlcXVhbCB0byAxIHdoZW4gc2VuZGluZzogKi8KKwlyczQ4NWNvbmYuZmxhZ3MgfD0gU0VSX1JTNDg1X1JUU19PTl9TRU5EOworCS8qIG9yLCBzZXQgbG9naWNhbCBsZXZlbCBmb3IgUlRTIHBpbiBlcXVhbCB0byAwIHdoZW4gc2VuZGluZzogKi8KKwlyczQ4NWNvbmYuZmxhZ3MgJj0gfihTRVJfUlM0ODVfUlRTX09OX1NFTkQpOworCisJLyogU2V0IGxvZ2ljYWwgbGV2ZWwgZm9yIFJUUyBwaW4gZXF1YWwgdG8gMSBhZnRlciBzZW5kaW5nOiAqLworCXJzNDg1Y29uZi5mbGFncyB8PSBTRVJfUlM0ODVfUlRTX0FGVEVSX1NFTkQ7CisJLyogb3IsIHNldCBsb2dpY2FsIGxldmVsIGZvciBSVFMgcGluIGVxdWFsIHRvIDAgYWZ0ZXIgc2VuZGluZzogKi8KKwlyczQ4NWNvbmYuZmxhZ3MgJj0gfihTRVJfUlM0ODVfUlRTX0FGVEVSX1NFTkQpOworCisJLyogU2V0IHJ0cyBkZWxheSBiZWZvcmUgc2VuZCwgaWYgbmVlZGVkOiAqLworCXJzNDg1Y29uZi5kZWxheV9ydHNfYmVmb3JlX3NlbmQgPSAuLi47CisKKwkvKiBTZXQgcnRzIGRlbGF5IGFmdGVyIHNlbmQsIGlmIG5lZWRlZDogKi8KKwlyczQ4NWNvbmYuZGVsYXlfcnRzX2FmdGVyX3NlbmQgPSAuLi47CisKKwkvKiBTZXQgdGhpcyBmbGFnIGlmIHlvdSB3YW50IHRvIHJlY2VpdmUgZGF0YSBldmVuIHdoaWxzdCBzZW5kaW5nIGRhdGEgKi8KKwlyczQ4NWNvbmYuZmxhZ3MgfD0gU0VSX1JTNDg1X1JYX0RVUklOR19UWDsKKworCWlmIChpb2N0bCAoZmQsIFRJT0NTUlM0ODUsICZyczQ4NWNvbmYpIDwgMCkgeworCQkvKiBFcnJvciBoYW5kbGluZy4gU2VlIGVycm5vLiAqLworCX0KKworCS8qIFVzZSByZWFkKCkgYW5kIHdyaXRlKCkgc3lzY2FsbHMgaGVyZS4uLiAqLworCisJLyogQ2xvc2UgdGhlIGRldmljZSB3aGVuIGZpbmlzaGVkOiAqLworCWlmIChjbG9zZSAoZmQpIDwgMCkgeworCQkvKiBFcnJvciBoYW5kbGluZy4gU2VlIGVycm5vLiAqLworCX0KKworNS4gUkVGRVJFTkNFUworCisgWzFdCWluY2x1ZGUvdWFwaS9saW51eC9zZXJpYWwuaAorIFsyXQlEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsL3JzNDg1LnR4dApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zZXJpYWwvdHR5LnR4dCBiL0RvY3VtZW50YXRpb24vc2VyaWFsL3R0eS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJkZWEzZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2VyaWFsL3R0eS50eHQKQEAgLTAsMCArMSwzMTYgQEAKKworCQkJVGhlIExvY2tyb25vbWljb24KKworWW91ciBndWlkZSB0byB0aGUgYW5jaWVudCBhbmQgdHdpc3RlZCBsb2NraW5nIHBvbGljaWVzIG9mIHRoZSB0dHkgbGF5ZXIgYW5kCit0aGUgd2FycGVkIGxvZ2ljIGJlaGluZCB0aGVtLiBCZXdhcmUgYWxsIHllIHdobyByZWFkIG9uLgorCisKK0xpbmUgRGlzY2lwbGluZQorLS0tLS0tLS0tLS0tLS0tCisKK0xpbmUgZGlzY2lwbGluZXMgYXJlIHJlZ2lzdGVyZWQgd2l0aCB0dHlfcmVnaXN0ZXJfbGRpc2MoKSBwYXNzaW5nIHRoZQorZGlzY2lwbGluZSBudW1iZXIgYW5kIHRoZSBsZGlzYyBzdHJ1Y3R1cmUuIEF0IHRoZSBwb2ludCBvZiByZWdpc3RyYXRpb24gdGhlIAorZGlzY2lwbGluZSBtdXN0IGJlIHJlYWR5IHRvIHVzZSBhbmQgaXQgaXMgcG9zc2libGUgaXQgd2lsbCBnZXQgdXNlZCBiZWZvcmUKK3RoZSBjYWxsIHJldHVybnMgc3VjY2Vzcy4gSWYgdGhlIGNhbGwgcmV0dXJucyBhbiBlcnJvciB0aGVuIGl0IHdvbid0IGdldAorY2FsbGVkLiBEbyBub3QgcmUtdXNlIGxkaXNjIG51bWJlcnMgYXMgdGhleSBhcmUgcGFydCBvZiB0aGUgdXNlcnNwYWNlIEFCSQorYW5kIHdyaXRpbmcgb3ZlciBhbiBleGlzdGluZyBsZGlzYyB3aWxsIGNhdXNlIGRlbW9ucyB0byBlYXQgeW91ciBjb21wdXRlci4KK0FmdGVyIHRoZSByZXR1cm4gdGhlIGxkaXNjIGRhdGEgaGFzIGJlZW4gY29waWVkIHNvIHlvdSBtYXkgZnJlZSB5b3VyIG93biAKK2NvcHkgb2YgdGhlIHN0cnVjdHVyZS4gWW91IG11c3Qgbm90IHJlLXJlZ2lzdGVyIG92ZXIgdGhlIHRvcCBvZiB0aGUgbGluZQorZGlzY2lwbGluZSBldmVuIHdpdGggdGhlIHNhbWUgZGF0YSBvciB5b3VyIGNvbXB1dGVyIGFnYWluIHdpbGwgYmUgZWF0ZW4gYnkKK2RlbW9ucy4KKworSW4gb3JkZXIgdG8gcmVtb3ZlIGEgbGluZSBkaXNjaXBsaW5lIGNhbGwgdHR5X3VucmVnaXN0ZXJfbGRpc2MoKS4KK0luIGFuY2llbnQgdGltZXMgdGhpcyBhbHdheXMgd29ya2VkLiBJbiBtb2Rlcm4gdGltZXMgdGhlIGZ1bmN0aW9uIHdpbGwKK3JldHVybiAtRUJVU1kgaWYgdGhlIGxkaXNjIGlzIGN1cnJlbnRseSBpbiB1c2UuIFNpbmNlIHRoZSBsZGlzYyByZWZlcmVuY2luZworY29kZSBtYW5hZ2VzIHRoZSBtb2R1bGUgY291bnRzIHRoaXMgc2hvdWxkIG5vdCB1c3VhbGx5IGJlIGEgY29uY2Vybi4KKworSGVlZCB0aGlzIHdhcm5pbmc6IHRoZSByZWZlcmVuY2UgY291bnQgZmllbGQgb2YgdGhlIHJlZ2lzdGVyZWQgY29waWVzIG9mIHRoZQordHR5X2xkaXNjIHN0cnVjdHVyZSBpbiB0aGUgbGRpc2MgdGFibGUgY291bnRzIHRoZSBudW1iZXIgb2YgbGluZXMgdXNpbmcgdGhpcworZGlzY2lwbGluZS4gVGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgdHR5X2xkaXNjIHN0cnVjdHVyZSB3aXRoaW4gYSB0dHkgCitjb3VudHMgdGhlIG51bWJlciBvZiBhY3RpdmUgdXNlcnMgb2YgdGhlIGxkaXNjIGF0IHRoaXMgaW5zdGFudC4gSW4gZWZmZWN0IGl0Citjb3VudHMgdGhlIG51bWJlciBvZiB0aHJlYWRzIG9mIGV4ZWN1dGlvbiB3aXRoaW4gYW4gbGRpc2MgbWV0aG9kIChwbHVzIHRob3NlCithYm91dCB0byBlbnRlciBhbmQgZXhpdCBhbHRob3VnaCB0aGlzIGRldGFpbCBtYXR0ZXJzIG5vdCkuCisKK0xpbmUgRGlzY2lwbGluZSBNZXRob2RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUVFkgc2lkZSBpbnRlcmZhY2VzOgorCitvcGVuKCkJCS0JQ2FsbGVkIHdoZW4gdGhlIGxpbmUgZGlzY2lwbGluZSBpcyBhdHRhY2hlZCB0bworCQkJdGhlIHRlcm1pbmFsLiBObyBvdGhlciBjYWxsIGludG8gdGhlIGxpbmUKKwkJCWRpc2NpcGxpbmUgZm9yIHRoaXMgdHR5IHdpbGwgb2NjdXIgdW50aWwgaXQKKwkJCWNvbXBsZXRlcyBzdWNjZXNzZnVsbHkuIFNob3VsZCBpbml0aWFsaXplIGFueQorCQkJc3RhdGUgbmVlZGVkIGJ5IHRoZSBsZGlzYywgYW5kIHNldCByZWNlaXZlX3Jvb20KKwkJCWluIHRoZSB0dHlfc3RydWN0IHRvIHRoZSBtYXhpbXVtIGFtb3VudCBvZiBkYXRhCisJCQl0aGUgbGluZSBkaXNjaXBsaW5lIGlzIHdpbGxpbmcgdG8gYWNjZXB0IGZyb20gdGhlCisJCQlkcml2ZXIgd2l0aCBhIHNpbmdsZSBjYWxsIHRvIHJlY2VpdmVfYnVmKCkuCisJCQlSZXR1cm5pbmcgYW4gZXJyb3Igd2lsbCBwcmV2ZW50IHRoZSBsZGlzYyBmcm9tCisJCQliZWluZyBhdHRhY2hlZC4gQ2FuIHNsZWVwLgorCitjbG9zZSgpCQktCVRoaXMgaXMgY2FsbGVkIG9uIGEgdGVybWluYWwgd2hlbiB0aGUgbGluZQorCQkJZGlzY2lwbGluZSBpcyBiZWluZyB1bnBsdWdnZWQuIEF0IHRoZSBwb2ludCBvZgorCQkJZXhlY3V0aW9uIG5vIGZ1cnRoZXIgdXNlcnMgd2lsbCBlbnRlciB0aGUKKwkJCWxkaXNjIGNvZGUgZm9yIHRoaXMgdHR5LiBDYW4gc2xlZXAuCisKK2hhbmd1cCgpCS0JQ2FsbGVkIHdoZW4gdGhlIHR0eSBsaW5lIGlzIGh1bmcgdXAuCisJCQlUaGUgbGluZSBkaXNjaXBsaW5lIHNob3VsZCBjZWFzZSBJL08gdG8gdGhlIHR0eS4KKwkJCU5vIGZ1cnRoZXIgY2FsbHMgaW50byB0aGUgbGRpc2MgY29kZSB3aWxsIG9jY3VyLgorCQkJVGhlIHJldHVybiB2YWx1ZSBpcyBpZ25vcmVkLiBDYW4gc2xlZXAuCisKK3JlYWQoKQkJLQkob3B0aW9uYWwpIEEgcHJvY2VzcyByZXF1ZXN0cyByZWFkaW5nIGRhdGEgZnJvbQorCQkJdGhlIGxpbmUuIE11bHRpcGxlIHJlYWQgY2FsbHMgbWF5IG9jY3VyIGluIHBhcmFsbGVsCisJCQlhbmQgdGhlIGxkaXNjIG11c3QgZGVhbCB3aXRoIHNlcmlhbGl6YXRpb24gaXNzdWVzLgorCQkJSWYgbm90IGRlZmluZWQsIHRoZSBwcm9jZXNzIHdpbGwgcmVjZWl2ZSBhbiBFSU8KKwkJCWVycm9yLiBNYXkgc2xlZXAuCisKK3dyaXRlKCkJCS0JKG9wdGlvbmFsKSBBIHByb2Nlc3MgcmVxdWVzdHMgd3JpdGluZyBkYXRhIHRvIHRoZQorCQkJbGluZS4gTXVsdGlwbGUgd3JpdGUgY2FsbHMgYXJlIHNlcmlhbGl6ZWQgYnkgdGhlCisJCQl0dHkgbGF5ZXIgZm9yIHRoZSBsZGlzYy4gSWYgbm90IGRlZmluZWQsIHRoZQorCQkJcHJvY2VzcyB3aWxsIHJlY2VpdmUgYW4gRUlPIGVycm9yLiBNYXkgc2xlZXAuCisKK2ZsdXNoX2J1ZmZlcigpCS0JKG9wdGlvbmFsKSBNYXkgYmUgY2FsbGVkIGF0IGFueSBwb2ludCBiZXR3ZWVuCisJCQlvcGVuIGFuZCBjbG9zZSwgYW5kIGluc3RydWN0cyB0aGUgbGluZSBkaXNjaXBsaW5lCisJCQl0byBlbXB0eSBpdHMgaW5wdXQgYnVmZmVyLgorCitjaGFyc19pbl9idWZmZXIoKSAtCShvcHRpb25hbCkgUmVwb3J0IHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGlucHV0CisJCQlidWZmZXIuCisKK3NldF90ZXJtaW9zKCkJLQkob3B0aW9uYWwpIENhbGxlZCBvbiB0ZXJtaW9zIHN0cnVjdHVyZSBjaGFuZ2VzLgorCQkJVGhlIGNhbGxlciBwYXNzZXMgdGhlIG9sZCB0ZXJtaW9zIGRhdGEgYW5kIHRoZQorCQkJY3VycmVudCBkYXRhIGlzIGluIHRoZSB0dHkuIENhbGxlZCB1bmRlciB0aGUKKwkJCXRlcm1pb3Mgc2VtYXBob3JlIHNvIGFsbG93ZWQgdG8gc2xlZXAuIFNlcmlhbGl6ZWQKKwkJCWFnYWluc3QgaXRzZWxmIG9ubHkuCisKK3BvbGwoKQkJLQkob3B0aW9uYWwpIENoZWNrIHRoZSBzdGF0dXMgZm9yIHRoZSBwb2xsL3NlbGVjdAorCQkJY2FsbHMuIE11bHRpcGxlIHBvbGwgY2FsbHMgbWF5IG9jY3VyIGluIHBhcmFsbGVsLgorCQkJTWF5IHNsZWVwLgorCitpb2N0bCgpCQktCShvcHRpb25hbCkgQ2FsbGVkIHdoZW4gYW4gaW9jdGwgaXMgaGFuZGVkIHRvIHRoZQorCQkJdHR5IGxheWVyIHRoYXQgbWlnaHQgYmUgZm9yIHRoZSBsZGlzYy4gTXVsdGlwbGUKKwkJCWlvY3RsIGNhbGxzIG1heSBvY2N1ciBpbiBwYXJhbGxlbC4gTWF5IHNsZWVwLgorCitjb21wYXRfaW9jdGwoKQktCShvcHRpb25hbCkgQ2FsbGVkIHdoZW4gYSAzMiBiaXQgaW9jdGwgaXMgaGFuZGVkCisJCQl0byB0aGUgdHR5IGxheWVyIHRoYXQgbWlnaHQgYmUgZm9yIHRoZSBsZGlzYy4KKwkJCU11bHRpcGxlIGlvY3RsIGNhbGxzIG1heSBvY2N1ciBpbiBwYXJhbGxlbC4KKwkJCU1heSBzbGVlcC4KKworRHJpdmVyIFNpZGUgSW50ZXJmYWNlczoKKworcmVjZWl2ZV9idWYoKQktCShvcHRpb25hbCkgQ2FsbGVkIGJ5IHRoZSBsb3ctbGV2ZWwgZHJpdmVyIHRvIGhhbmQKKwkJCWEgYnVmZmVyIG9mIHJlY2VpdmVkIGJ5dGVzIHRvIHRoZSBsZGlzYyBmb3IKKwkJCXByb2Nlc3NpbmcuIFRoZSBudW1iZXIgb2YgYnl0ZXMgaXMgZ3VhcmFudGVlZCBub3QKKwkJCXRvIGV4Y2VlZCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0dHktPnJlY2VpdmVfcm9vbS4KKwkJCUFsbCBieXRlcyBtdXN0IGJlIHByb2Nlc3NlZC4KKworcmVjZWl2ZV9idWYyKCkJLQkob3B0aW9uYWwpIENhbGxlZCBieSB0aGUgbG93LWxldmVsIGRyaXZlciB0byBoYW5kCisJCQlhIGJ1ZmZlciBvZiByZWNlaXZlZCBieXRlcyB0byB0aGUgbGRpc2MgZm9yCisJCQlwcm9jZXNzaW5nLiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcHJvY2Vzc2VkLgorCisJCQlJZiBib3RoIHJlY2VpdmVfYnVmKCkgYW5kIHJlY2VpdmVfYnVmMigpIGFyZQorCQkJZGVmaW5lZCwgcmVjZWl2ZV9idWYyKCkgc2hvdWxkIGJlIHByZWZlcnJlZC4KKword3JpdGVfd2FrZXVwKCkJLQlNYXkgYmUgY2FsbGVkIGF0IGFueSBwb2ludCBiZXR3ZWVuIG9wZW4gYW5kIGNsb3NlLgorCQkJVGhlIFRUWV9ET19XUklURV9XQUtFVVAgZmxhZyBpbmRpY2F0ZXMgaWYgYSBjYWxsCisJCQlpcyBuZWVkZWQgYnV0IGFsd2F5cyByYWNlcyB2ZXJzdXMgY2FsbHMuIFRodXMgdGhlCisJCQlsZGlzYyBtdXN0IGJlIGNhcmVmdWwgYWJvdXQgc2V0dGluZyBvcmRlciBhbmQgdG8KKwkJCWhhbmRsZSB1bmV4cGVjdGVkIGNhbGxzLiBNdXN0IG5vdCBzbGVlcC4KKworCQkJVGhlIGRyaXZlciBpcyBmb3JiaWRkZW4gZnJvbSBjYWxsaW5nIHRoaXMgZGlyZWN0bHkKKwkJCWZyb20gdGhlIC0+d3JpdGUgY2FsbCBmcm9tIHRoZSBsZGlzYyBhcyB0aGUgbGRpc2MKKwkJCWlzIHBlcm1pdHRlZCB0byBjYWxsIHRoZSBkcml2ZXIgd3JpdGUgbWV0aG9kIGZyb20KKwkJCXRoaXMgZnVuY3Rpb24uIEluIHN1Y2ggYSBzaXR1YXRpb24gZGVmZXIgaXQuCisKK2RjZF9jaGFuZ2UoKQktCVJlcG9ydCB0byB0aGUgdHR5IGxpbmUgdGhlIGN1cnJlbnQgRENEIHBpbiBzdGF0dXMKKwkJCWNoYW5nZXMgYW5kIHRoZSByZWxhdGl2ZSB0aW1lc3RhbXAuIFRoZSB0aW1lc3RhbXAKKwkJCWNhbm5vdCBiZSBOVUxMLgorCisKK0RyaXZlciBBY2Nlc3MKKworTGluZSBkaXNjaXBsaW5lIG1ldGhvZHMgY2FuIGNhbGwgdGhlIGZvbGxvd2luZyBtZXRob2RzIG9mIHRoZSB1bmRlcmx5aW5nCitoYXJkd2FyZSBkcml2ZXIgdGhyb3VnaCB0aGUgZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIHRoZSB0dHktPmRyaXZlcgorc3RydWN0dXJlOgorCit3cml0ZSgpCQkJV3JpdGUgYSBibG9jayBvZiBjaGFyYWN0ZXJzIHRvIHRoZSB0dHkgZGV2aWNlLgorCQkJUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgYWNjZXB0ZWQuIFRoZQorCQkJY2hhcmFjdGVyIGJ1ZmZlciBwYXNzZWQgdG8gdGhpcyBtZXRob2QgaXMgYWxyZWFkeQorCQkJaW4ga2VybmVsIHNwYWNlLgorCitwdXRfY2hhcigpCQlRdWV1ZXMgYSBjaGFyYWN0ZXIgZm9yIHdyaXRpbmcgdG8gdGhlIHR0eSBkZXZpY2UuCisJCQlJZiB0aGVyZSBpcyBubyByb29tIGluIHRoZSBxdWV1ZSwgdGhlIGNoYXJhY3RlciBpcworCQkJaWdub3JlZC4KKworZmx1c2hfY2hhcnMoKQkJKE9wdGlvbmFsKSBJZiBkZWZpbmVkLCBtdXN0IGJlIGNhbGxlZCBhZnRlcgorCQkJcXVldWVpbmcgY2hhcmFjdGVycyB3aXRoIHB1dF9jaGFyKCkgaW4gb3JkZXIgdG8KKwkJCXN0YXJ0IHRyYW5zbWlzc2lvbi4KKword3JpdGVfcm9vbSgpCQlSZXR1cm5zIHRoZSBudW1iZXJzIG9mIGNoYXJhY3RlcnMgdGhlIHR0eSBkcml2ZXIKKwkJCXdpbGwgYWNjZXB0IGZvciBxdWV1ZWluZyB0byBiZSB3cml0dGVuLgorCitpb2N0bCgpCQkJSW52b2tlIGRldmljZSBzcGVjaWZpYyBpb2N0bC4KKwkJCUV4cGVjdHMgZGF0YSBwb2ludGVycyB0byByZWZlciB0byB1c2Vyc3BhY2UuCisJCQlSZXR1cm5zIEVOT0lPQ1RMQ01EIGZvciB1bnJlY29nbml6ZWQgaW9jdGwgbnVtYmVycy4KKworc2V0X3Rlcm1pb3MoKQkJTm90aWZ5IHRoZSB0dHkgZHJpdmVyIHRoYXQgdGhlIGRldmljZSdzIHRlcm1pb3MKKwkJCXNldHRpbmdzIGhhdmUgY2hhbmdlZC4gTmV3IHNldHRpbmdzIGFyZSBpbgorCQkJdHR5LT50ZXJtaW9zLiBQcmV2aW91cyBzZXR0aW5ncyBzaG91bGQgYmUgcGFzc2VkIGluCisJCQl0aGUgIm9sZCIgYXJndW1lbnQuCisKKwkJCVRoZSBBUEkgaXMgZGVmaW5lZCBzdWNoIHRoYXQgdGhlIGRyaXZlciBzaG91bGQgcmV0dXJuCisJCQl0aGUgYWN0dWFsIG1vZGVzIHNlbGVjdGVkLiBUaGlzIG1lYW5zIHRoYXQgdGhlCisJCQlkcml2ZXIgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIG1vZGlmeWluZyBhbnkKKwkJCWJpdHMgaW4gdGhlIHJlcXVlc3QgaXQgY2Fubm90IGZ1bGZpbGwgdG8gaW5kaWNhdGUKKwkJCXRoZSBhY3R1YWwgbW9kZXMgYmVpbmcgdXNlZC4gQSBkZXZpY2Ugd2l0aCBubworCQkJaGFyZHdhcmUgY2FwYWJpbGl0eSBmb3IgY2hhbmdlIChlLmcuIGEgVVNCIGRvbmdsZSBvcgorCQkJdmlydHVhbCBwb3J0KSBjYW4gcHJvdmlkZSBOVUxMIGZvciB0aGlzIG1ldGhvZC4KKwordGhyb3R0bGUoKQkJTm90aWZ5IHRoZSB0dHkgZHJpdmVyIHRoYXQgaW5wdXQgYnVmZmVycyBmb3IgdGhlCisJCQlsaW5lIGRpc2NpcGxpbmUgYXJlIGNsb3NlIHRvIGZ1bGwsIGFuZCBpdCBzaG91bGQKKwkJCXNvbWVob3cgc2lnbmFsIHRoYXQgbm8gbW9yZSBjaGFyYWN0ZXJzIHNob3VsZCBiZQorCQkJc2VudCB0byB0aGUgdHR5LgorCit1bnRocm90dGxlKCkJCU5vdGlmeSB0aGUgdHR5IGRyaXZlciB0aGF0IGNoYXJhY3RlcnMgY2FuIG5vdyBiZQorCQkJc2VudCB0byB0aGUgdHR5IHdpdGhvdXQgZmVhciBvZiBvdmVycnVubmluZyB0aGUKKwkJCWlucHV0IGJ1ZmZlcnMgb2YgdGhlIGxpbmUgZGlzY2lwbGluZXMuCisKK3N0b3AoKQkJCUFzayB0aGUgdHR5IGRyaXZlciB0byBzdG9wIG91dHB1dHRpbmcgY2hhcmFjdGVycworCQkJdG8gdGhlIHR0eSBkZXZpY2UuCisKK3N0YXJ0KCkJCQlBc2sgdGhlIHR0eSBkcml2ZXIgdG8gcmVzdW1lIHNlbmRpbmcgY2hhcmFjdGVycworCQkJdG8gdGhlIHR0eSBkZXZpY2UuCisKK2hhbmd1cCgpCQlBc2sgdGhlIHR0eSBkcml2ZXIgdG8gaGFuZyB1cCB0aGUgdHR5IGRldmljZS4KKworYnJlYWtfY3RsKCkJCShPcHRpb25hbCkgQXNrIHRoZSB0dHkgZHJpdmVyIHRvIHR1cm4gb24gb3Igb2ZmCisJCQlCUkVBSyBzdGF0dXMgb24gdGhlIFJTLTIzMiBwb3J0LiAgSWYgc3RhdGUgaXMgLTEsCisJCQl0aGVuIHRoZSBCUkVBSyBzdGF0dXMgc2hvdWxkIGJlIHR1cm5lZCBvbjsgaWYKKwkJCXN0YXRlIGlzIDAsIHRoZW4gQlJFQUsgc2hvdWxkIGJlIHR1cm5lZCBvZmYuCisJCQlJZiB0aGlzIHJvdXRpbmUgaXMgbm90IGltcGxlbWVudGVkLCB1c2UgaW9jdGxzCisJCQlUSU9DU0JSSyAvIFRJT0NDQlJLIGluc3RlYWQuCisKK3dhaXRfdW50aWxfc2VudCgpCVdhaXRzIHVudGlsIHRoZSBkZXZpY2UgaGFzIHdyaXR0ZW4gb3V0IGFsbCBvZiB0aGUKKwkJCWNoYXJhY3RlcnMgaW4gaXRzIHRyYW5zbWl0dGVyIEZJRk8uCisKK3NlbmRfeGNoYXIoKQkJU2VuZCBhIGhpZ2gtcHJpb3JpdHkgWE9OL1hPRkYgY2hhcmFjdGVyIHRvIHRoZSBkZXZpY2UuCisKKworRmxhZ3MKKworTGluZSBkaXNjaXBsaW5lIG1ldGhvZHMgaGF2ZSBhY2Nlc3MgdG8gdHR5LT5mbGFncyBmaWVsZCBjb250YWluaW5nIHRoZQorZm9sbG93aW5nIGludGVyZXN0aW5nIGZsYWdzOgorCitUVFlfVEhST1RUTEVECQlEcml2ZXIgaW5wdXQgaXMgdGhyb3R0bGVkLiBUaGUgbGRpc2Mgc2hvdWxkIGNhbGwKKwkJCXR0eS0+ZHJpdmVyLT51bnRocm90dGxlKCkgaW4gb3JkZXIgdG8gcmVzdW1lCisJCQlyZWNlcHRpb24gd2hlbiBpdCBpcyByZWFkeSB0byBwcm9jZXNzIG1vcmUgZGF0YS4KKworVFRZX0RPX1dSSVRFX1dBS0VVUAlJZiBzZXQsIGNhdXNlcyB0aGUgZHJpdmVyIHRvIGNhbGwgdGhlIGxkaXNjJ3MKKwkJCXdyaXRlX3dha2V1cCgpIG1ldGhvZCBpbiBvcmRlciB0byByZXN1bWUKKwkJCXRyYW5zbWlzc2lvbiB3aGVuIGl0IGNhbiBhY2NlcHQgbW9yZSBkYXRhCisJCQl0byB0cmFuc21pdC4KKworVFRZX0lPX0VSUk9SCQlJZiBzZXQsIGNhdXNlcyBhbGwgc3Vic2VxdWVudCB1c2Vyc3BhY2UgcmVhZC93cml0ZQorCQkJY2FsbHMgb24gdGhlIHR0eSB0byBmYWlsLCByZXR1cm5pbmcgLUVJTy4KKworVFRZX09USEVSX0NMT1NFRAlEZXZpY2UgaXMgYSBwdHkgYW5kIHRoZSBvdGhlciBzaWRlIGhhcyBjbG9zZWQuCisKK1RUWV9OT19XUklURV9TUExJVAlQcmV2ZW50IGRyaXZlciBmcm9tIHNwbGl0dGluZyB1cCB3cml0ZXMgaW50bworCQkJc21hbGxlciBjaHVua3MuCisKKworTG9ja2luZworCitDYWxsZXJzIHRvIHRoZSBsaW5lIGRpc2NpcGxpbmUgZnVuY3Rpb25zIGZyb20gdGhlIHR0eSBsYXllciBhcmUgcmVxdWlyZWQgdG8KK3Rha2UgbGluZSBkaXNjaXBsaW5lIGxvY2tzLiBUaGUgc2FtZSBpcyB0cnVlIG9mIGNhbGxzIGZyb20gdGhlIGRyaXZlciBzaWRlCitidXQgbm90IHlldCBlbmZvcmNlZC4KKworVGhyZWUgY2FsbHMgYXJlIG5vdyBwcm92aWRlZAorCisJbGRpc2MgPSB0dHlfbGRpc2NfcmVmKHR0eSk7CisKK3Rha2VzIGEgaGFuZGxlIHRvIHRoZSBsaW5lIGRpc2NpcGxpbmUgaW4gdGhlIHR0eSBhbmQgcmV0dXJucyBpdC4gSWYgbm8gbGRpc2MKK2lzIGN1cnJlbnRseSBhdHRhY2hlZCBvciB0aGUgbGRpc2MgaXMgYmVpbmcgY2xvc2VkIGFuZCByZS1vcGVuZWQgYXQgdGhpcworcG9pbnQgdGhlbiBOVUxMIGlzIHJldHVybmVkLiBXaGlsZSB0aGlzIGhhbmRsZSBpcyBoZWxkIHRoZSBsZGlzYyB3aWxsIG5vdAorY2hhbmdlIG9yIGdvIGF3YXkuCisKKwl0dHlfbGRpc2NfZGVyZWYobGRpc2MpCisKK1JldHVybnMgdGhlIGxkaXNjIHJlZmVyZW5jZSBhbmQgYWxsb3dzIHRoZSBsZGlzYyB0byBiZSBjbG9zZWQuIFJldHVybmluZyB0aGUKK3JlZmVyZW5jZSB0YWtlcyBhd2F5IHlvdXIgcmlnaHQgdG8gY2FsbCB0aGUgbGRpc2MgZnVuY3Rpb25zIHVudGlsIHlvdSB0YWtlCithIG5ldyByZWZlcmVuY2UuCisKKwlsZGlzYyA9IHR0eV9sZGlzY19yZWZfd2FpdCh0dHkpOworCitQZXJmb3JtcyB0aGUgc2FtZSBmdW5jdGlvbiBhcyB0dHlfbGRpc2NfcmVmIGV4Y2VwdCB0aGF0IGl0IHdpbGwgd2FpdCBmb3IgYW4KK2xkaXNjIGNoYW5nZSB0byBjb21wbGV0ZSBhbmQgdGhlbiByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIG5ldyBsZGlzYy4gCisKK1doaWxlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgc2xpZ2h0bHkgc2xvd2VyIHRoYW4gdGhlIG9sZCBjb2RlIHRoZXkgc2hvdWxkIGhhdmUKK21pbmltYWwgaW1wYWN0IGFzIG1vc3QgcmVjZWl2ZSBsb2dpYyB1c2VzIHRoZSBmbGlwIGJ1ZmZlcnMgYW5kIHRoZXkgb25seQorbmVlZCB0byB0YWtlIGEgcmVmZXJlbmNlIHdoZW4gdGhleSBwdXNoIGJpdHMgdXAgdGhyb3VnaCB0aGUgZHJpdmVyLgorCitBIGNhdXRpb246IFRoZSBsZGlzYy0+b3BlbigpLCBsZGlzYy0+Y2xvc2UoKSBhbmQgZHJpdmVyLT5zZXRfbGRpc2MgCitmdW5jdGlvbnMgYXJlIGNhbGxlZCB3aXRoIHRoZSBsZGlzYyB1bmF2YWlsYWJsZS4gVGh1cyB0dHlfbGRpc2NfcmVmIHdpbGwKK2ZhaWwgaW4gdGhpcyBzaXR1YXRpb24gaWYgdXNlZCB3aXRoaW4gdGhlc2UgZnVuY3Rpb25zLiBMZGlzYyBhbmQgZHJpdmVyCitjb2RlIGNhbGxpbmcgaXRzIG93biBmdW5jdGlvbnMgbXVzdCBiZSBjYXJlZnVsIGluIHRoaXMgY2FzZS4gCisKKworRHJpdmVyIEludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tLQorCitvcGVuKCkJCS0JQ2FsbGVkIHdoZW4gYSBkZXZpY2UgaXMgb3BlbmVkLiBNYXkgc2xlZXAKKworY2xvc2UoKQkJLQlDYWxsZWQgd2hlbiBhIGRldmljZSBpcyBjbG9zZWQuIEF0IHRoZSBwb2ludCBvZgorCQkJcmV0dXJuIGZyb20gdGhpcyBjYWxsIHRoZSBkcml2ZXIgbXVzdCBtYWtlIG5vIAorCQkJZnVydGhlciBsZGlzYyBjYWxscyBvZiBhbnkga2luZC4gTWF5IHNsZWVwCisKK3dyaXRlKCkJCS0JQ2FsbGVkIHRvIHdyaXRlIGJ5dGVzIHRvIHRoZSBkZXZpY2UuIE1heSBub3QKKwkJCXNsZWVwLiBNYXkgb2NjdXIgaW4gcGFyYWxsZWwgaW4gc3BlY2lhbCBjYXNlcy4gCisJCQlCZWNhdXNlIHRoaXMgaW5jbHVkZXMgcGFuaWMgcGF0aHMgZHJpdmVycyBnZW5lcmFsbHkKKwkJCXNob3VsZG4ndCB0cnkgYW5kIGRvIGNsZXZlciBsb2NraW5nIGhlcmUuCisKK3B1dF9jaGFyKCkJLQlTdHVmZiBhIHNpbmdsZSBjaGFyYWN0ZXIgb250byB0aGUgcXVldWUuIFRoZQorCQkJZHJpdmVyIGlzIGd1YXJhbnRlZWQgZm9sbG93aW5nIHVwIGNhbGxzIHRvCisJCQlmbHVzaF9jaGFycy4KKworZmx1c2hfY2hhcnMoKQktCUFzayB0aGUga2VybmVsIHRvIHdyaXRlIHB1dF9jaGFyIHF1ZXVlCisKK3dyaXRlX3Jvb20oKQktCVJldHVybiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgc3R1ZmZlZAorCQkJaW50byB0aGUgcG9ydCBidWZmZXJzIHdpdGhvdXQgb3ZlcmZsb3cgKG9yIGxlc3MpLgorCQkJVGhlIGxkaXNjIGlzIHJlc3BvbnNpYmxlIGZvciBiZWluZyBpbnRlbGxpZ2VudAorIAkJCWFib3V0IG11bHRpLXRocmVhZGluZyBvZiB3cml0ZV9yb29tL3dyaXRlIGNhbGxzCisKK2lvY3RsKCkJCS0JQ2FsbGVkIHdoZW4gYW4gaW9jdGwgbWF5IGJlIGZvciB0aGUgZHJpdmVyCisKK3NldF90ZXJtaW9zKCkJLQlDYWxsZWQgb24gdGVybWlvcyBjaGFuZ2UsIHNlcmlhbGl6ZWQgYWdhaW5zdAorCQkJaXRzZWxmIGJ5IGEgc2VtYXBob3JlLiBNYXkgc2xlZXAuCisKK3NldF9sZGlzYygpCS0JTm90aWZpZXIgZm9yIGRpc2NpcGxpbmUgY2hhbmdlLiBBdCB0aGUgcG9pbnQgdGhpcyAKKwkJCWlzIGRvbmUgdGhlIGRpc2NpcGxpbmUgaXMgbm90IHlldCB1c2FibGUuIENhbiBub3cKKwkJCXNsZWVwIChJIHRoaW5rKQorCit0aHJvdHRsZSgpCS0JQ2FsbGVkIGJ5IHRoZSBsZGlzYyB0byBhc2sgdGhlIGRyaXZlciB0byBkbyBmbG93CisJCQljb250cm9sLiAgU2VyaWFsaXphdGlvbiBpbmNsdWRpbmcgd2l0aCB1bnRocm90dGxlCisJCQlpcyB0aGUgam9iIG9mIHRoZSBsZGlzYyBsYXllci4KKwordW50aHJvdHRsZSgpCS0JQ2FsbGVkIGJ5IHRoZSBsZGlzYyB0byBhc2sgdGhlIGRyaXZlciB0byBzdG9wIGZsb3cKKwkJCWNvbnRyb2wuCisKK3N0b3AoKQkJLQlMZGlzYyBub3RpZmllciB0byB0aGUgZHJpdmVyIHRvIHN0b3Agb3V0cHV0LiBBcyB3aXRoCisJCQl0aHJvdHRsZSB0aGUgc2VyaWFsaXphdGlvbnMgd2l0aCBzdGFydCgpIGFyZSBkb3duCisJCQl0byB0aGUgbGRpc2MgbGF5ZXIuCisKK3N0YXJ0KCkJCS0JTGRpc2Mgbm90aWZpZXIgdG8gdGhlIGRyaXZlciB0byBzdGFydCBvdXRwdXQuCisKK2hhbmd1cCgpCS0JQXNrIHRoZSB0dHkgZHJpdmVyIHRvIGNhdXNlIGEgaGFuZ3VwIGluaXRpYXRlZAorCQkJZnJvbSB0aGUgaG9zdCBzaWRlLiBbQ2FuIHNsZWVwID8/XQorCiticmVha19jdGwoKQktCVNlbmQgUlMyMzIgYnJlYWsuIENhbiBzbGVlcC4gQ2FuIGdldCBjYWxsZWQgaW4KKwkJCXBhcmFsbGVsLCBkcml2ZXIgbXVzdCBzZXJpYWxpemUgKGZvciBub3cpLCBhbmQKKwkJCXdpdGggd3JpdGUgY2FsbHMuCisKK3dhaXRfdW50aWxfc2VudCgpIC0JV2FpdCBmb3IgY2hhcmFjdGVycyB0byBleGl0IHRoZSBoYXJkd2FyZSBxdWV1ZQorCQkJb2YgdGhlIGRyaXZlci4gQ2FuIHNsZWVwCisKK3NlbmRfeGNoYXIoKQkgIC0JU2VuZCBYT04vWE9GRiBhbmQgaWYgcG9zc2libGUganVtcCB0aGUgcXVldWUgd2l0aAorCQkJaXQgaW4gb3JkZXIgdG8gZ2V0IGZhc3QgZmxvdyBjb250cm9sIHJlc3BvbnNlcy4KKwkJCUNhbm5vdCBzbGVlcCA/PworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NnaS1pb2M0LnR4dCBiL0RvY3VtZW50YXRpb24vc2dpLWlvYzQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3NmM5NmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NnaS1pb2M0LnR4dApAQCAtMCwwICsxLDQ1IEBACitUaGUgU0dJIElPQzQgUENJIGRldmljZSBpcyBhIGJpdCBvZiBhIHN0cmFuZ2UgYmVhc3QsIHNvIHNvbWUgbm90ZXMgb24KK2l0IGFyZSBpbiBvcmRlci4KKworRmlyc3QsIGV2ZW4gdGhvdWdoIHRoZSBJT0M0IHBlcmZvcm1zIG11bHRpcGxlIGZ1bmN0aW9ucywgc3VjaCBhcyBhbgorSURFIGNvbnRyb2xsZXIsIGEgc2VyaWFsIGNvbnRyb2xsZXIsIGEgUFMvMiBrZXlib2FyZC9tb3VzZSBjb250cm9sbGVyLAorYW5kIGFuIGV4dGVybmFsIGludGVycnVwdCBtZWNoYW5pc20sIGl0J3Mgbm90IGltcGxlbWVudGVkIGFzIGEKK211bHRpZnVuY3Rpb24gZGV2aWNlLiAgVGhlIGNvbnNlcXVlbmNlIG9mIHRoaXMgZnJvbSBhIHNvZnR3YXJlCitzdGFuZHBvaW50IGlzIHRoYXQgYWxsIHRoZXNlIGZ1bmN0aW9ucyBzaGFyZSBhIHNpbmdsZSBJUlEsIGFuZAordGhleSBjYW4ndCBhbGwgcmVnaXN0ZXIgdG8gb3duIHRoZSBzYW1lIFBDSSBkZXZpY2UgSUQuICBUbyBtYWtlCittYXR0ZXJzIGEgYml0IHdvcnNlLCBzb21lIG9mIHRoZSByZWdpc3RlciBibG9ja3MgKGFuZCBldmVuIHJlZ2lzdGVycwordGhlbXNlbHZlcykgcHJlc2VudCBpbiBJT0M0IGFyZSBtaXhlZC1wdXJwb3NlIGJldHdlZW4gdGhlc2Ugc2V2ZXJhbAorZnVuY3Rpb25zLCBtZWFuaW5nIHRoYXQgdGhlcmUncyBubyBjbGVhciAib3duaW5nIiBkZXZpY2UgZHJpdmVyLgorCitUaGUgc29sdXRpb24gaXMgdG8gb3JnYW5pemUgdGhlIElPQzQgZHJpdmVyIGludG8gc2V2ZXJhbCBpbmRlcGVuZGVudAorZHJpdmVycywgImlvYzQiLCAic2dpaW9jNCIsIGFuZCAiaW9jNF9zZXJpYWwiLiAgTm90ZSB0aGF0IHRoZXJlIGlzIG5vCitQUy8yIGNvbnRyb2xsZXIgZHJpdmVyIGFzIHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgbmV2ZXIgYmVlbiB3aXJlZCB1cAorb24gYSBzaGlwcGluZyBJTyBjYXJkLgorCitpb2M0Cis9PT09CitUaGlzIGlzIHRoZSBjb3JlIChvciBzaGltKSBkcml2ZXIgZm9yIElPQzQuICBJdCBpcyByZXNwb25zaWJsZSBmb3IKK2luaXRpYWxpemluZyB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eSBvZiB0aGUgY2hpcCwgYW5kIGFsbG9jYXRpbmcKK3RoZSBQQ0kgcmVzb3VyY2VzIHRoYXQgYXJlIHNoYXJlZCBiZXR3ZWVuIHRoZSBJT0M0IGZ1bmN0aW9ucy4KKworVGhpcyBkcml2ZXIgYWxzbyBwcm92aWRlcyByZWdpc3RyYXRpb24gZnVuY3Rpb25zIHRoYXQgdGhlIG90aGVyCitJT0M0IGRyaXZlcnMgY2FuIGNhbGwgdG8gbWFrZSB0aGVpciBwcmVzZW5jZSBrbm93bi4gIEVhY2ggZHJpdmVyCituZWVkcyB0byBwcm92aWRlIGEgcHJvYmUgYW5kIHJlbW92ZSBmdW5jdGlvbiwgd2hpY2ggYXJlIGludm9rZWQKK2J5IHRoZSBjb3JlIGRyaXZlciBhdCBhcHByb3ByaWF0ZSB0aW1lcy4gIFRoZSBpbnRlcmZhY2Ugb2YgdGhlc2UKK0lPQzQgZnVuY3Rpb24gcHJvYmUgYW5kIHJlbW92ZSBvcGVyYXRpb25zIGlzbid0IHByZWNpc2VseSB0aGUgc2FtZQorYXMgUENJIGRldmljZSBwcm9iZSBhbmQgcmVtb3ZlIG9wZXJhdGlvbnMsIGJ1dCBpcyBsb2dpY2FsbHkgdGhlCitzYW1lIG9wZXJhdGlvbi4KKworc2dpaW9jNAorPT09PT09PQorVGhpcyBpcyB0aGUgSURFIGRyaXZlciBmb3IgSU9DNC4gIEl0cyBuYW1lIGlzbid0IHZlcnkgZGVzY3JpcHRpdmUKK3NpbXBseSBmb3IgaGlzdG9yaWNhbCByZWFzb25zIChpdCB1c2VkIHRvIGJlIHRoZSBvbmx5IElPQzQgZHJpdmVyCitjb21wb25lbnQpLiAgVGhlcmUncyBub3QgbXVjaCB0byBzYXkgYWJvdXQgaXQgb3RoZXIgdGhhbiBpdCBob29rcwordXAgdG8gdGhlIGlvYzQgZHJpdmVyIHZpYSB0aGUgYXBwcm9wcmlhdGUgcmVnaXN0cmF0aW9uLCBwcm9iZSwgYW5kCityZW1vdmUgZnVuY3Rpb25zLgorCitpb2M0X3NlcmlhbAorPT09PT09PT09PT0KK1RoaXMgaXMgdGhlIHNlcmlhbCBkcml2ZXIgZm9yIElPQzQuICBUaGVyZSdzIG5vdCBtdWNoIHRvIHNheSBhYm91dCBpdAorb3RoZXIgdGhhbiBpdCBob29rcyB1cCB0byB0aGUgaW9jNCBkcml2ZXIgdmlhIHRoZSBhcHByb3ByaWF0ZSByZWdpc3RyYXRpb24sCitwcm9iZSwgYW5kIHJlbW92ZSBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NoL25ldy1tYWNoaW5lLnR4dCBiL0RvY3VtZW50YXRpb24vc2gvbmV3LW1hY2hpbmUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMzU0MTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NoL25ldy1tYWNoaW5lLnR4dApAQCAtMCwwICsxLDI3OCBAQAorCisgICAgICAgICAgICAgICAgQWRkaW5nIGEgbmV3IGJvYXJkIHRvIExpbnV4U0gKKyAgICAgICAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgICAgICAgICAgIFBhdWwgTXVuZHQgPGxldGhhbEBsaW51eC1zaC5vcmc+CisKK1RoaXMgZG9jdW1lbnQgYXR0ZW1wdHMgdG8gb3V0bGluZSB3aGF0IHN0ZXBzIGFyZSBuZWNlc3NhcnkgdG8gYWRkIHN1cHBvcnQKK2ZvciBuZXcgYm9hcmRzIHRvIHRoZSBMaW51eFNIIHBvcnQgdW5kZXIgdGhlIG5ldyAyLjUgYW5kIDIuNiBrZXJuZWxzLiBUaGlzCithbHNvIGF0dGVtcHRzIHRvIG91dGxpbmUgc29tZSBvZiB0aGUgbm90aWNlYWJsZSBjaGFuZ2VzIGJldHdlZW4gdGhlIDIuNAorYW5kIHRoZSAyLjUvMi42IFNIIGJhY2tlbmQuCisKKzEuIE5ldyBEaXJlY3RvcnkgU3RydWN0dXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZmlyc3QgdGhpbmcgdG8gbm90ZSBpcyB0aGUgbmV3IGRpcmVjdG9yeSBzdHJ1Y3R1cmUuIFVuZGVyIDIuNCwgbW9zdAorb2YgdGhlIGJvYXJkLXNwZWNpZmljIGNvZGUgKHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBzdGJvYXJkcykgZW5kZWQgdXAKK2luIGFyY2gvc2gva2VybmVsLyBkaXJlY3RseSwgd2l0aCBib2FyZC1zcGVjaWZpYyBoZWFkZXJzIGVuZGluZyB1cCBpbgoraW5jbHVkZS9hc20tc2gvLiBGb3IgdGhlIG5ldyBrZXJuZWwsIHRoaW5ncyBhcmUgYnJva2VuIG91dCBieSBib2FyZCB0eXBlLAorY29tcGFuaW9uIGNoaXAgdHlwZSwgYW5kIENQVSB0eXBlLiBMb29raW5nIGF0IGEgdHJlZSB2aWV3IG9mIHRoaXMgZGlyZWN0b3J5CitoaWVyYXJjaHkgbG9va3MgbGlrZSB0aGUgZm9sbG93aW5nOgorCitCb2FyZC1zcGVjaWZpYyBjb2RlOgorCisuCit8LS0gYXJjaAorfCAgIGAtLSBzaAorfCAgICAgICBgLS0gYm9hcmRzCit8ICAgICAgICAgICB8LS0gYWR4Cit8ICAgICAgICAgICB8ICAgYC0tIGJvYXJkLXNwZWNpZmljIGZpbGVzCit8ICAgICAgICAgICB8LS0gYmlnc3VyCit8ICAgICAgICAgICB8ICAgYC0tIGJvYXJkLXNwZWNpZmljIGZpbGVzCit8ICAgICAgICAgICB8Cit8ICAgICAgICAgICAuLi4gbW9yZSBib2FyZHMgaGVyZSAuLi4KK3wKK2AtLSBpbmNsdWRlCisgICAgYC0tIGFzbS1zaAorICAgICAgICB8LS0gYWR4CisgICAgICAgIHwgICBgLS0gYm9hcmQtc3BlY2lmaWMgaGVhZGVycworICAgICAgICB8LS0gYmlnc3VyCisgICAgICAgIHwgICBgLS0gYm9hcmQtc3BlY2lmaWMgaGVhZGVycworICAgICAgICB8CisJLi4gbW9yZSBib2FyZHMgaGVyZSAuLi4KKworTmV4dCwgZm9yIGNvbXBhbmlvbiBjaGlwczoKKy4KK2AtLSBhcmNoCisgICAgYC0tIHNoCisgICAgICAgIGAtLSBjY2hpcHMKKyAgICAgICAgICAgIGAtLSBoZDY0NDZ4CisgICAgICAgICAgICAgICAgYC0tIGhkNjQ0NjEKKyAgICAgICAgICAgICAgICAgICAgYC0tIGNjaGlwLXNwZWNpZmljIGZpbGVzCisKKy4uLiBhbmQgc28gb24uIEhlYWRlcnMgZm9yIHRoZSBjb21wYW5pb24gY2hpcHMgYXJlIHRyZWF0ZWQgdGhlIHNhbWUgd2F5IGFzCitib2FyZC1zcGVjaWZpYyBoZWFkZXJzLiBUaHVzLCBpbmNsdWRlL2FzbS1zaC9oZDY0NDYxIGlzIGhvbWUgdG8gYWxsIG9mIHRoZQoraGQ2NDQ2MS1zcGVjaWZpYyBoZWFkZXJzLgorCitGaW5hbGx5LCBDUFUgZmFtaWx5IHN1cHBvcnQgaXMgYWxzbyBhYnN0cmFjdGVkOgorLgorfC0tIGFyY2gKK3wgICBgLS0gc2gKK3wgICAgICAgfC0tIGtlcm5lbAorfCAgICAgICB8ICAgYC0tIGNwdQorfCAgICAgICB8ICAgICAgIHwtLSBzaDIKK3wgICAgICAgfCAgICAgICB8ICAgYC0tIFNILTIgZ2VuZXJpYyBmaWxlcworfCAgICAgICB8ICAgICAgIHwtLSBzaDMKK3wgICAgICAgfCAgICAgICB8ICAgYC0tIFNILTMgZ2VuZXJpYyBmaWxlcworfCAgICAgICB8ICAgICAgIGAtLSBzaDQKK3wgICAgICAgfCAgICAgICAgICAgYC0tIFNILTQgZ2VuZXJpYyBmaWxlcworfCAgICAgICBgLS0gbW0KK3wgICAgICAgICAgIGAtLSBUaGlzIGlzIGFsc28gYnJva2VuIG91dCBwZXIgQ1BVIGZhbWlseSwgc28gZWFjaCBmYW1pbHkgY2FuCit8ICAgICAgICAgICAgICAgaGF2ZSB0aGVpciBvd24gc2V0IG9mIGNhY2hlL3RsYiBmdW5jdGlvbnMuCit8CitgLS0gaW5jbHVkZQorICAgIGAtLSBhc20tc2gKKyAgICAgICAgfC0tIGNwdS1zaDIKKyAgICAgICAgfCAgIGAtLSBTSC0yIHNwZWNpZmljIGhlYWRlcnMKKyAgICAgICAgfC0tIGNwdS1zaDMKKyAgICAgICAgfCAgIGAtLSBTSC0zIHNwZWNpZmljIGhlYWRlcnMKKyAgICAgICAgYC0tIGNwdS1zaDQKKyAgICAgICAgICAgIGAtLSBTSC00IHNwZWNpZmljIGhlYWRlcnMKKworSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgQ1BVIHN1YnR5cGVzIGFyZSBfbm90XyBhYnN0cmFjdGVkLiBUaHVzLCB0aGVzZSBzdGlsbAorbmVlZCB0byBiZSBkZWFsdCB3aXRoIGJ5IHRoZSBDUFUgZmFtaWx5IHNwZWNpZmljIGNvZGUuCisKKzIuIEFkZGluZyBhIE5ldyBCb2FyZAorPT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBmaXJzdCB0aGluZyB0byBkZXRlcm1pbmUgaXMgd2hldGhlciB0aGUgYm9hcmQgeW91IGFyZSBhZGRpbmcgd2lsbCBiZQoraXNvbGF0ZWQsIG9yIHdoZXRoZXIgaXQgd2lsbCBiZSBwYXJ0IG9mIGEgZmFtaWx5IG9mIGJvYXJkcyB0aGF0IGNhbiBtb3N0bHkKK3NoYXJlIHRoZSBzYW1lIGJvYXJkLXNwZWNpZmljIGNvZGUgd2l0aCBtaW5vciBkaWZmZXJlbmNlcy4KKworSW4gdGhlIGZpcnN0IGNhc2UsIHRoaXMgaXMganVzdCBhIG1hdHRlciBvZiBtYWtpbmcgYSBkaXJlY3RvcnkgZm9yIHlvdXIKK2JvYXJkIGluIGFyY2gvc2gvYm9hcmRzLyBhbmQgYWRkaW5nIHJ1bGVzIHRvIGhvb2sgeW91ciBib2FyZCBpbiB3aXRoIHRoZQorYnVpbGQgc3lzdGVtIChtb3JlIG9uIHRoaXMgaW4gdGhlIG5leHQgc2VjdGlvbikuIEhvd2V2ZXIsIGZvciBib2FyZCBmYW1pbGllcworaXQgbWFrZXMgbW9yZSBzZW5zZSB0byBoYXZlIGEgY29tbW9uIHRvcC1sZXZlbCBhcmNoL3NoL2JvYXJkcy8gZGlyZWN0b3J5CithbmQgdGhlbiBwb3B1bGF0ZSB0aGF0IHdpdGggc3ViLWRpcmVjdG9yaWVzIGZvciBlYWNoIG1lbWJlciBvZiB0aGUgZmFtaWx5LgorQm90aCB0aGUgU29sdXRpb24gRW5naW5lIGFuZCB0aGUgaHA2eHggYm9hcmRzIGFyZSBhbiBleGFtcGxlIG9mIHRoaXMuCisKK0FmdGVyIHlvdSBoYXZlIHNldHVwIHlvdXIgbmV3IGFyY2gvc2gvYm9hcmRzLyBkaXJlY3RvcnksIHJlbWVtYmVyIHRoYXQgeW91CitzaG91bGQgYWxzbyBhZGQgYSBkaXJlY3RvcnkgaW4gaW5jbHVkZS9hc20tc2ggZm9yIGhlYWRlcnMgbG9jYWxpemVkIHRvIHRoaXMKK2JvYXJkIChpZiB0aGVyZSBhcmUgZ29pbmcgdG8gYmUgbW9yZSB0aGFuIG9uZSkuIEluIG9yZGVyIHRvIGludGVyb3BlcmF0ZQorc2VhbWxlc3NseSB3aXRoIHRoZSBidWlsZCBzeXN0ZW0sIGl0J3MgYmVzdCB0byBoYXZlIHRoaXMgZGlyZWN0b3J5IHRoZSBzYW1lCithcyB0aGUgYXJjaC9zaC9ib2FyZHMvIGRpcmVjdG9yeSBuYW1lLCB0aG91Z2ggaWYgeW91ciBib2FyZCBpcyBhZ2FpbiBwYXJ0IG9mCithIGZhbWlseSwgdGhlIGJ1aWxkIHN5c3RlbSBoYXMgd2F5cyBvZiBkZWFsaW5nIHdpdGggdGhpcyAodmlhIGluY2Rpci15CitvdmVybG9hZGluZyksIGFuZCB5b3UgY2FuIGZlZWwgZnJlZSB0byBuYW1lIHRoZSBkaXJlY3RvcnkgYWZ0ZXIgdGhlIGZhbWlseQorbWVtYmVyIGl0c2VsZi4KKworVGhlcmUgYXJlIGEgZmV3IHRoaW5ncyB0aGF0IGVhY2ggYm9hcmQgaXMgcmVxdWlyZWQgdG8gaGF2ZSwgYm90aCBpbiB0aGUKK2FyY2gvc2gvYm9hcmRzIGFuZCB0aGUgaW5jbHVkZS9hc20tc2gvIGhpZXJhcmNoeS4gSW4gb3JkZXIgdG8gYmV0dGVyCitleHBsYWluIHRoaXMsIHdlIHVzZSBzb21lIGV4YW1wbGVzIGZvciBhZGRpbmcgYW4gaW1hZ2luYXJ5IGJvYXJkLiBGb3IKK3NldHVwIGNvZGUsIHdlJ3JlIHJlcXVpcmVkIGF0IHRoZSB2ZXJ5IGxlYXN0IHRvIHByb3ZpZGUgZGVmaW5pdGlvbnMgZm9yCitnZXRfc3lzdGVtX3R5cGUoKSBhbmQgcGxhdGZvcm1fc2V0dXAoKS4gRm9yIG91ciBpbWFnaW5hcnkgYm9hcmQsIHRoaXMKK21pZ2h0IGxvb2sgc29tZXRoaW5nIGxpa2U6CisKKy8qCisgKiBhcmNoL3NoL2JvYXJkcy92YXBvci9zZXR1cC5jIC0gU2V0dXAgY29kZSBmb3IgaW1hZ2luYXJ5IGJvYXJkCisgKi8KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8YXNtL3J0Yy5oPiAvKiBmb3IgYm9hcmRfdGltZV9pbml0KCkgKi8KKworY29uc3QgY2hhciAqZ2V0X3N5c3RlbV90eXBlKHZvaWQpCit7CisJcmV0dXJuICJGb29UZWNoIFZhcG9yYm9hcmQiOworfQorCitpbnQgX19pbml0IHBsYXRmb3JtX3NldHVwKHZvaWQpCit7CisgIAkvKgorCSAqIElmIG91ciBoYXJkd2FyZSBhY3R1YWxseSBleGlzdGVkLCB3ZSB3b3VsZCBkbyByZWFsCisJICogc2V0dXAgaGVyZS4gVGhvdWdoIGl0J3MgYWxzbyBzYW5lIHRvIGxlYXZlIHRoaXMgZW1wdHkKKwkgKiBpZiB0aGVyZSdzIG5vIHJlYWwgaW5pdCB3b3JrIHRoYXQgaGFzIHRvIGJlIGRvbmUgZm9yCisJICogdGhpcyBib2FyZC4KKwkgKi8KKworICAJLyogCisJICogUHJlc3VtZSBhbGwgRm9vVGVjaCBib2FyZHMgaGF2ZSB0aGUgc2FtZSBicm9rZW4gdGltZXIsCisJICogYW5kIGFsc28gcHJlc3VtZSB0aGF0IHdlJ3ZlIGRlZmluZWQgZm9vX3RpbWVyX2luaXQgdG8KKwkgKiBkbyBzb21ldGhpbmcgdXNlZnVsLgorCSAqLworICAJYm9hcmRfdGltZV9pbml0ID0gZm9vX3RpbWVyX2luaXQ7CisKKwkvKiBTdGFydC11cCBpbWFnaW5hcnkgUENJIC4uLiAqLworCisJLyogQW5kIHdoYXRldmVyIGVsc2UgLi4uICovCisKKwlyZXR1cm4gMDsKK30KKworT3VyIG5ldyBpbWFnaW5hcnkgYm9hcmQgd2lsbCBhbHNvIGhhdmUgdG8gdGllIGludG8gdGhlIG1hY2h2ZWMgaW4gb3JkZXIgZm9yIGl0Cit0byBiZSBvZiBhbnkgdXNlLgorCittYWNodmVjIGZ1bmN0aW9ucyBmYWxsIGludG8gYSBudW1iZXIgb2YgY2F0ZWdvcmllczoKKworIC0gSS9PIGZ1bmN0aW9ucyB0byBJTyBtZW1vcnkgKGluYiBldGMpIGFuZCBQQ0kvbWFpbiBtZW1vcnkgKHJlYWRiIGV0YykuCisgLSBJL08gbWFwcGluZyBmdW5jdGlvbnMgKGlvcG9ydF9tYXAsIGlvcG9ydF91bm1hcCwgZXRjKS4KKyAtIGEgJ2hlYXJ0YmVhdCcgZnVuY3Rpb24uCisgLSBQQ0kgYW5kIElSUSBpbml0aWFsaXphdGlvbiByb3V0aW5lcy4KKyAtIENvbnNpc3RlbnQgYWxsb2NhdG9ycyAoZm9yIGJvYXJkcyB0aGF0IG5lZWQgc3BlY2lhbCBhbGxvY2F0b3JzLAorICAgcGFydGljdWxhcmx5IGZvciBhbGxvY2F0aW5nIG91dCBvZiBzb21lIGJvYXJkLXNwZWNpZmljIFNSQU0gZm9yIERNQQorICAgaGFuZGxlcykuCisKK1RoZXJlIGFyZSBtYWNodmVjIGZ1bmN0aW9ucyBhZGRlZCBhbmQgcmVtb3ZlZCBvdmVyIHRpbWUsIHNvIGFsd2F5cyBiZSBzdXJlIHRvCitjb25zdWx0IGluY2x1ZGUvYXNtLXNoL21hY2h2ZWMuaCBmb3IgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIG1hY2h2ZWMuCisKK1RoZSBrZXJuZWwgd2lsbCBhdXRvbWF0aWNhbGx5IHdyYXAgaW4gZ2VuZXJpYyByb3V0aW5lcyBmb3IgdW5kZWZpbmVkIGZ1bmN0aW9uCitwb2ludGVycyBpbiB0aGUgbWFjaHZlYyBhdCBib290IHRpbWUsIGFzIG1hY2h2ZWMgZnVuY3Rpb25zIGFyZSByZWZlcmVuY2VkCit1bmNvbmRpdGlvbmFsbHkgdGhyb3VnaG91dCBtb3N0IG9mIHRoZSB0cmVlLiBTb21lIGJvYXJkcyBoYXZlIGluY3JlZGlibHkKK3NwYXJzZSBtYWNodmVjcyAoc3VjaCBhcyB0aGUgZHJlYW1jYXN0IGFuZCBzaDAzKSwgd2hlcmVhcyBvdGhlcnMgbXVzdCBkZWZpbmUKK3ZpcnR1YWxseSBldmVyeXRoaW5nIChydHM3NzUxcjJkKS4KKworQWRkaW5nIGEgbmV3IG1hY2hpbmUgaXMgcmVsYXRpdmVseSB0cml2aWFsICh1c2luZyB2YXBvciBhcyBhbiBleGFtcGxlKToKKworSWYgdGhlIGJvYXJkLXNwZWNpZmljIGRlZmluaXRpb25zIGFyZSBxdWl0ZSBtaW5pbWFsaXN0aWMsIGFzIGlzIHRoZSBjYXNlIGZvcgordGhlIHZhc3QgbWFqb3JpdHkgb2YgYm9hcmRzLCBzaW1wbHkgaGF2aW5nIGEgc2luZ2xlIGJvYXJkLXNwZWNpZmljIGhlYWRlciBpcworc3VmZmljaWVudC4KKworIC0gYWRkIGEgbmV3IGZpbGUgaW5jbHVkZS9hc20tc2gvdmFwb3IuaCB3aGljaCBjb250YWlucyBwcm90b3R5cGVzIGZvcgorICAgYW55IG1hY2hpbmUgc3BlY2lmaWMgSU8gZnVuY3Rpb25zIHByZWZpeGVkIHdpdGggdGhlIG1hY2hpbmUgbmFtZSwgZm9yCisgICBleGFtcGxlIHZhcG9yX2luYi4gVGhlc2Ugd2lsbCBiZSBuZWVkZWQgd2hlbiBmaWxsaW5nIG91dCB0aGUgbWFjaGluZQorICAgdmVjdG9yLgorCisgICBOb3RlIHRoYXQgdGhlc2UgcHJvdG90eXBlcyBhcmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgc2V0dGluZworICAgX19JT19QUkVGSVggdG8gc29tZXRoaW5nIHNlbnNpYmxlLiBBIHR5cGljYWwgZXhhbXBsZSB3b3VsZCBiZToKKworCSNkZWZpbmUgX19JT19QUkVGSVggdmFwb3IKKyAgIAkjaW5jbHVkZSA8YXNtL2lvX2dlbmVyaWMuaD4KKworICAgc29tZXdoZXJlIGluIHRoZSBib2FyZC1zcGVjaWZpYyBoZWFkZXIuIEFueSBib2FyZHMgYmVpbmcgcG9ydGVkIHRoYXQgc3RpbGwKKyAgIGhhdmUgYSBsZWdhY3kgaW8uaCBzaG91bGQgcmVtb3ZlIGl0IGVudGlyZWx5IGFuZCBzd2l0Y2ggdG8gdGhlIG5ldyBtb2RlbC4KKworIC0gQWRkIG1hY2hpbmUgdmVjdG9yIGRlZmluaXRpb25zIHRvIHRoZSBib2FyZCdzIHNldHVwLmMuIEF0IGEgYmFyZSBtaW5pbXVtLAorICAgdGhpcyBtdXN0IGJlIGRlZmluZWQgYXMgc29tZXRoaW5nIGxpa2U6CisKKwlzdHJ1Y3Qgc2hfbWFjaGluZV92ZWN0b3IgbXZfdmFwb3IgX19pbml0bXYgPSB7CisJCS5tdl9uYW1lID0gInZhcG9yIiwKKwl9OworCUFMSUFTX01WKHZhcG9yKQorCisgLSBmaW5hbGx5IGFkZCBhIGZpbGUgYXJjaC9zaC9ib2FyZHMvdmFwb3IvaW8uYywgd2hpY2ggY29udGFpbnMgZGVmaW5pdGlvbnMgb2YKKyAgIHRoZSBtYWNoaW5lIHNwZWNpZmljIGlvIGZ1bmN0aW9ucyAoaWYgdGhlcmUgYXJlIGVub3VnaCB0byB3YXJyYW50IGl0KS4KKworMy4gSG9va2luZyBpbnRvIHRoZSBCdWlsZCBTeXN0ZW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK05vdyB0aGF0IHdlIGhhdmUgdGhlIGNvcnJlc3BvbmRpbmcgZGlyZWN0b3JpZXMgc2V0dXAsIGFuZCBhbGwgb2YgdGhlCitib2FyZC1zcGVjaWZpYyBjb2RlIGlzIGluIHBsYWNlLCBpdCdzIHRpbWUgdG8gbG9vayBhdCBob3cgdG8gZ2V0IHRoZQord2hvbGUgbWVzcyB0byBmaXQgaW50byB0aGUgYnVpbGQgc3lzdGVtLgorCitMYXJnZSBwb3J0aW9ucyBvZiB0aGUgYnVpbGQgc3lzdGVtIGFyZSBub3cgZW50aXJlbHkgZHluYW1pYywgYW5kIG1lcmVseQorcmVxdWlyZSB0aGUgcHJvcGVyIGVudHJ5IGhlcmUgYW5kIHRoZXJlIGluIG9yZGVyIHRvIGdldCB0aGluZ3MgZG9uZS4KKworVGhlIGZpcnN0IHRoaW5nIHRvIGRvIGlzIHRvIGFkZCBhbiBlbnRyeSB0byBhcmNoL3NoL0tjb25maWcsIHVuZGVyIHRoZQorIlN5c3RlbSB0eXBlIiBtZW51OgorCitjb25maWcgU0hfVkFQT1IKKwlib29sICJWYXBvciIKKwloZWxwCisJICBzZWxlY3QgVmFwb3IgaWYgY29uZmlndXJpbmcgZm9yIGEgRm9vVGVjaCBWYXBvcmJvYXJkLgorCituZXh0LCB0aGlzIGhhcyB0byBiZSBhZGRlZCBpbnRvIGFyY2gvc2gvTWFrZWZpbGUuIEFsbCBib2FyZHMgcmVxdWlyZSBhCittYWNoZGlyLXkgZW50cnkgaW4gb3JkZXIgdG8gYmUgYnVpbHQuIFRoaXMgZW50cnkgbmVlZHMgdG8gYmUgdGhlIG5hbWUgb2YKK3RoZSBib2FyZCBkaXJlY3RvcnkgYXMgaXQgYXBwZWFycyBpbiBhcmNoL3NoL2JvYXJkcywgZXZlbiBpZiBpdCBpcyBpbiBhCitzdWItZGlyZWN0b3J5IChpbiB3aGljaCBjYXNlLCBhbGwgcGFyZW50IGRpcmVjdG9yaWVzIGJlbG93IGFyY2gvc2gvYm9hcmRzLworbmVlZCB0byBiZSBsaXN0ZWQpLiBGb3Igb3VyIG5ldyBib2FyZCwgdGhpcyBlbnRyeSBjYW4gbG9vayBsaWtlOgorCittYWNoZGlyLSQoQ09ORklHX1NIX1ZBUE9SKQkrPSB2YXBvcgorCitwcm92aWRlZCB0aGF0IHdlJ3ZlIHBsYWNlZCBldmVyeXRoaW5nIGluIHRoZSBhcmNoL3NoL2JvYXJkcy92YXBvci8gZGlyZWN0b3J5LgorCitOZXh0LCB0aGUgYnVpbGQgc3lzdGVtIGFzc3VtZXMgdGhhdCB5b3VyIGluY2x1ZGUvYXNtLXNoIGRpcmVjdG9yeSB3aWxsIGFsc28KK2JlIG5hbWVkIHRoZSBzYW1lLiBJZiB0aGlzIGlzIG5vdCB0aGUgY2FzZSAoYXMgaXMgdGhlIGNhc2Ugd2l0aCBtdWx0aXBsZQorYm9hcmRzIGJlbG9uZ2luZyB0byBhIGNvbW1vbiBmYW1pbHkpLCB0aGVuIHRoZSBkaXJlY3RvcnkgbmFtZSBuZWVkcyB0byBiZQoraW1wbGljaXRseSBhcHBlbmRlZCB0byBpbmNkaXIteS4gVGhlIGV4aXN0aW5nIGNvZGUgbWFuYWdlcyB0aGlzIGZvciB0aGUKK1NvbHV0aW9uIEVuZ2luZSBhbmQgaHA2eHggYm9hcmRzLCBzbyBzZWUgdGhlc2UgZm9yIGFuIGV4YW1wbGUuCisKK09uY2UgdGhhdCBpcyB0YWtlbiBjYXJlIG9mLCBpdCdzIHRpbWUgdG8gYWRkIGFuIGVudHJ5IGZvciB0aGUgbWFjaCB0eXBlLgorVGhpcyBpcyBkb25lIGJ5IGFkZGluZyBhbiBlbnRyeSB0byB0aGUgZW5kIG9mIHRoZSBhcmNoL3NoL3Rvb2xzL21hY2gtdHlwZXMKK2xpc3QuIFRoZSBtZXRob2QgZm9yIGRvaW5nIHRoaXMgaXMgc2VsZiBleHBsYW5hdG9yeSwgYW5kIHNvIHdlIHdvbid0IHdhc3RlCitzcGFjZSByZXN0YXRpbmcgaXQgaGVyZS4gQWZ0ZXIgdGhpcyBpcyBkb25lLCB5b3Ugd2lsbCBiZSBhYmxlIHRvIHVzZQoraW1wbGljaXQgY2hlY2tzIGZvciB5b3VyIGJvYXJkIGlmIHlvdSBuZWVkIHRoaXMgc29tZXdoZXJlIHRocm91Z2hvdXQgdGhlCitjb21tb24gY29kZSwgc3VjaCBhczoKKworCS8qIE1ha2Ugc3VyZSB3ZSdyZSBvbiB0aGUgRm9vVGVjaCBWYXBvcmJvYXJkICovCisJaWYgKCFtYWNoX2lzX3ZhcG9yKCkpCisJCXJldHVybiAtRU5PREVWOworCithbHNvIG5vdGUgdGhhdCB0aGUgbWFjaF9pc19ib2FyZG5hbWUoKSBjaGVjayB3aWxsIGJlIGltcGxpY2l0bHkgZm9yY2VkIHRvCitsb3dlcmNhc2UsIHJlZ2FyZGxlc3Mgb2YgdGhlIGZhY3QgdGhhdCB0aGUgbWFjaC10eXBlcyBlbnRyaWVzIGFyZSBhbGwKK3VwcGVyY2FzZS4gWW91IGNhbiByZWFkIHRoZSBzY3JpcHQgaWYgeW91IHJlYWxseSBjYXJlLCBidXQgaXQncyBwcmV0dHkgdWdseSwKK3NvIHlvdSBwcm9iYWJseSBkb24ndCB3YW50IHRvIGRvIHRoYXQuCisKK05vdyBhbGwgdGhhdCdzIGxlZnQgdG8gZG8gaXMgcHJvdmlkaW5nIGEgZGVmY29uZmlnIGZvciB5b3VyIG5ldyBib2FyZC4gVGhpcword2F5LCBvdGhlciBwZW9wbGUgd2hvIGVuZCB1cCB3aXRoIHRoaXMgYm9hcmQgY2FuIHNpbXBseSB1c2UgdGhpcyBjb25maWcKK2ZvciByZWZlcmVuY2UgaW5zdGVhZCBvZiB0cnlpbmcgdG8gZ3Vlc3Mgd2hhdCBzZXR0aW5ncyBhcmUgc3VwcG9zZWQgdG8gYmUKK3VzZWQgb24gaXQuCisKK0Fsc28sIGFzIHNvb24gYXMgeW91IGhhdmUgY29waWVkIG92ZXIgYSBzYW1wbGUgLmNvbmZpZyBmb3IgeW91ciBuZXcgYm9hcmQKKyhhc3N1bWUgYXJjaC9zaC9jb25maWdzL3ZhcG9yX2RlZmNvbmZpZyksIHlvdSBjYW4gYWxzbyB1c2UgdGhpcyBkaXJlY3RseSBhcyBhCitidWlsZCB0YXJnZXQsIGFuZCBpdCB3aWxsIGJlIGltcGxpY2l0bHkgbGlzdGVkIGFzIHN1Y2ggaW4gdGhlIGhlbHAgdGV4dC4KKworTG9va2luZyBhdCB0aGUgJ21ha2UgaGVscCcgb3V0cHV0LCB5b3Ugc2hvdWxkIG5vdyBzZWUgc29tZXRoaW5nIGxpa2U6CisKK0FyY2hpdGVjdHVyZSBzcGVjaWZpYyB0YXJnZXRzIChzaCk6CisgIHpJbWFnZSAgICAgICAgICAgICAgICAgIC0gQ29tcHJlc3NlZCBrZXJuZWwgaW1hZ2UgKGFyY2gvc2gvYm9vdC96SW1hZ2UpCisgIGFkeF9kZWZjb25maWcgICAgICAgICAgIC0gQnVpbGQgZm9yIGFkeAorICBjcXJlZWtfZGVmY29uZmlnICAgICAgICAtIEJ1aWxkIGZvciBjcXJlZWsKKyAgZHJlYW1jYXN0X2RlZmNvbmZpZyAgICAgLSBCdWlsZCBmb3IgZHJlYW1jYXN0CisuLi4KKyAgdmFwb3JfZGVmY29uZmlnICAgICAgICAgLSBCdWlsZCBmb3IgdmFwb3IKKword2hpY2ggdGhlbiBhbGxvd3MgeW91IHRvIGRvOgorCiskIG1ha2UgQVJDSD1zaCBDUk9TU19DT01QSUxFPXNoNC1saW51eC0gdmFwb3JfZGVmY29uZmlnIHZtbGludXgKKword2hpY2ggd2lsbCBpbiB0dXJuIGNvcHkgdGhlIGRlZmNvbmZpZyBmb3IgdGhpcyBib2FyZCwgcnVuIGl0IHRocm91Z2gKK29sZGNvbmZpZyAocHJvbXB0aW5nIHlvdSBmb3IgYW55IG5ldyBvcHRpb25zIHNpbmNlIHRoZSB0aW1lIG9mIGNyZWF0aW9uKSwKK2FuZCBzdGFydCB5b3Ugb24geW91ciB3YXkgdG8gaGF2aW5nIGEgZnVuY3Rpb25hbCBrZXJuZWwgZm9yIHlvdXIgbmV3Citib2FyZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2gvcmVnaXN0ZXItYmFua3MudHh0IGIvRG9jdW1lbnRhdGlvbi9zaC9yZWdpc3Rlci1iYW5rcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY3MTlmMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc2gvcmVnaXN0ZXItYmFua3MudHh0CkBAIC0wLDAgKzEsMzMgQEAKKwlOb3RlcyBvbiByZWdpc3RlciBiYW5rIHVzYWdlIGluIHRoZSBrZXJuZWwKKwk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0KKworVGhlIFNILTMgYW5kIFNILTQgQ1BVIGZhbWlsaWVzIHRyYWRpdGlvbmFsbHkgaW5jbHVkZSBhIHNpbmdsZSBwYXJ0aWFsIHJlZ2lzdGVyCitiYW5rIChzZWxlY3RlZCBieSBTUi5SQiwgb25seSByMCAuLi4gcjcgYXJlIGJhbmtlZCksIHdoZXJlYXMgb3RoZXIgZmFtaWxpZXMKK21heSBoYXZlIG1vcmUgZnVsbC1mZWF0dXJlZCBiYW5raW5nIG9yIHNpbXBseSBubyBzdWNoIGNhcGFiaWxpdGllcyBhdCBhbGwuCisKK1NSLlJCIGJhbmtpbmcKKy0tLS0tLS0tLS0tLS0KKworSW4gdGhlIGNhc2Ugb2YgdGhpcyB0eXBlIG9mIGJhbmtpbmcsIGJhbmtlZCByZWdpc3RlcnMgYXJlIG1hcHBlZCBkaXJlY3RseSB0bworcjAgLi4uIHI3IGlmIFNSLlJCIGlzIHNldCB0byB0aGUgYmFuayB3ZSBhcmUgaW50ZXJlc3RlZCBpbiwgb3RoZXJ3aXNlIGxkYy9zdGMKK2NhbiBzdGlsbCBiZSB1c2VkIHRvIHJlZmVyZW5jZSB0aGUgYmFua2VkIHJlZ2lzdGVycyAoYXMgcjBfYmFuayAuLi4gcjdfYmFuaykKK3doZW4gaW4gdGhlIGNvbnRleHQgb2YgYW5vdGhlciBiYW5rLiBUaGUgZGV2ZWxvcGVyIG11c3Qga2VlcCB0aGUgU1IuUkIgdmFsdWUKK2luIG1pbmQgd2hlbiB3cml0aW5nIGNvZGUgdGhhdCB1dGlsaXplcyB0aGVzZSBiYW5rZWQgcmVnaXN0ZXJzLCBmb3Igb2J2aW91cworcmVhc29ucy4gVXNlcnNwYWNlIGlzIGFsc28gbm90IGFibGUgdG8gcG9rZSBhdCB0aGUgYmFuazEgdmFsdWVzLCBzbyB0aGVzZSBjYW4KK2JlIHVzZWQgcmF0aGVyIGVmZmVjdGl2ZWx5IGFzIHNjcmF0Y2ggcmVnaXN0ZXJzIGJ5IHRoZSBrZXJuZWwuCisKK1ByZXNlbnRseSB0aGUga2VybmVsIHVzZXMgc2V2ZXJhbCBvZiB0aGVzZSByZWdpc3RlcnMuCisKKwktIHIwX2JhbmssIHIxX2JhbmsgKHJlZmVyZW5jZWQgYXMgazAgYW5kIGsxLCB1c2VkIGZvciBzY3JhdGNoCisJICByZWdpc3RlcnMgd2hlbiBkb2luZyBleGNlcHRpb24gaGFuZGxpbmcpLgorCS0gcjJfYmFuayAodXNlZCB0byB0cmFjayB0aGUgRVhQRVZUL0lOVEVWVCBjb2RlKQorCQktIFVzZWQgYnkgZG9fSVJRKCkgYW5kIGZyaWVuZHMgZm9yIGRvaW5nIGlycSBtYXBwaW5nIGJhc2VkIG9mZgorCQkgIG9mIHRoZSBpbnRlcnJ1cHQgZXhjZXB0aW9uIHZlY3RvciBqdW1wIHRhYmxlIG9mZnNldAorCS0gcjZfYmFuayAoZ2xvYmFsIGludGVycnVwdCBtYXNrKQorCQktIFRoZSBTUi5JTUFTSyBpbnRlcnJ1cHQgaGFuZGxlciBtYWtlcyB1c2Ugb2YgdGhpcyB0byBzZXQgdGhlCisJCSAgaW50ZXJydXB0IHByaW9yaXR5IGxldmVsICh1c2VkIGJ5IGxvY2FsX2lycV9lbmFibGUoKSkKKwktIHI3X2JhbmsgKGN1cnJlbnQpCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc21zY19lY2UxMDk5LnR4dCBiL0RvY3VtZW50YXRpb24vc21zY19lY2UxMDk5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjQ5MmU4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zbXNjX2VjZTEwOTkudHh0CkBAIC0wLDAgKzEsNTYgQEAKK1doYXQgaXMgc21zYy1lY2UxMDk5PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgRUNFMTA5OSBpcyBhIDQwLVBpbiAzLjNWIEtleWJvYXJkIFNjYW4gRXhwYW5zaW9uCitvciBHUElPIEV4cGFuc2lvbiBkZXZpY2UuIFRoZSBkZXZpY2Ugc3VwcG9ydHMgYSBrZXlib2FyZAorc2NhbiBtYXRyaXggb2YgMjN4OC4gVGhlIGRldmljZSBpcyBjb25uZWN0ZWQgdG8gYSBNYXN0ZXIKK3ZpYSB0aGUgU01TQyBCQy1MaW5rIGludGVyZmFjZSBvciB2aWEgdGhlIFNNQnVzLgorS2V5cGFkIHNjYW4gSW5wdXQoS1NJKSBhbmQgS2V5cGFkIFNjYW4gT3V0cHV0KEtTTykgc2lnbmFscworYXJlIG11bHRpcGxleGVkIHdpdGggR1BJT3MuCisKK0ludGVycnVwdCBnZW5lcmF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbnRlcnJ1cHRzIGNhbiBiZSBnZW5lcmF0ZWQgYnkgYW4gZWRnZSBkZXRlY3Rpb24gb24gYSBHUElPCitwaW4gb3IgYW4gZWRnZSBkZXRlY3Rpb24gb24gb25lIG9mIHRoZSBidXMgaW50ZXJmYWNlIHBpbnMuCitJbnRlcnJ1cHRzIGNhbiBhbHNvIGJlIGRldGVjdGVkIG9uIHRoZSBrZXlib2FyZCBzY2FuIGludGVyZmFjZS4KK1RoZSBidXMgaW50ZXJydXB0IHBpbiAoQkNfSU5UIyBvciBTTUJVU19JTlQjKSBpcyBhc3NlcnRlZCBpZgorYW55IGJpdCBpbiBvbmUgb2YgdGhlIEludGVycnVwdCBTdGF0dXMgcmVnaXN0ZXJzIGlzIDEgYW5kCit0aGUgY29ycmVzcG9uZGluZyBJbnRlcnJ1cHQgTWFzayBiaXQgaXMgYWxzbyAxLgorCitJbiBvcmRlciBmb3Igc29mdHdhcmUgdG8gZGV0ZXJtaW5lIHdoaWNoIGRldmljZSBpcyB0aGUgc291cmNlCitvZiBhbiBpbnRlcnJ1cHQsIGl0IHNob3VsZCBmaXJzdCByZWFkIHRoZSBHcm91cCBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyCit0byBkZXRlcm1pbmUgd2hpY2ggU3RhdHVzIHJlZ2lzdGVyIGdyb3VwIGlzIGEgc291cmNlIGZvciB0aGUgaW50ZXJydXB0LgorU29mdHdhcmUgc2hvdWxkIHJlYWQgYm90aCB0aGUgU3RhdHVzIHJlZ2lzdGVyIGFuZCB0aGUgYXNzb2NpYXRlZCBNYXNrIHJlZ2lzdGVyLAordGhlbiBBTkQgdGhlIHR3byB2YWx1ZXMgdG9nZXRoZXIuIEJpdHMgdGhhdCBhcmUgMSBpbiB0aGUgcmVzdWx0IG9mIHRoZSBBTkQKK2FyZSBhY3RpdmUgaW50ZXJydXB0cy4gU29mdHdhcmUgY2xlYXJzIGFuIGludGVycnVwdCBieSB3cml0aW5nIGEgMSB0byB0aGUKK2NvcnJlc3BvbmRpbmcgYml0IGluIHRoZSBTdGF0dXMgcmVnaXN0ZXIuCisKK0NvbW11bmljYXRpb24gUHJvdG9jb2wKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBTTWJ1cyBzbGF2ZSBJbnRlcmZhY2UKKwlUaGUgaG9zdCBwcm9jZXNzb3IgY29tbXVuaWNhdGVzIHdpdGggdGhlIEVDRTEwOTkgZGV2aWNlCisJdGhyb3VnaCBhIHNlcmllcyBvZiByZWFkL3dyaXRlIHJlZ2lzdGVycyB2aWEgdGhlIFNNQnVzCisJaW50ZXJmYWNlLiBTTUJ1cyBpcyBhIHNlcmlhbCBjb21tdW5pY2F0aW9uIHByb3RvY29sIGJldHdlZW4KKwlhIGNvbXB1dGVyIGhvc3QgYW5kIGl0cyBwZXJpcGhlcmFsIGRldmljZXMuIFRoZSBTTUJ1cyBkYXRhCisJcmF0ZSBpcyAxMEtIeiBtaW5pbXVtIHRvIDQwMCBLSHogbWF4aW11bQorCistIFNsYXZlIEJ1cyBJbnRlcmZhY2UKKwlUaGUgRUNFMTA5OSBkZXZpY2UgU01CdXMgaW1wbGVtZW50YXRpb24gaXMgYSBzdWJzZXQgb2YgdGhlCisJU01CdXMgaW50ZXJmYWNlIHRvIHRoZSBob3N0LiBUaGUgZGV2aWNlIGlzIGEgc2xhdmUtb25seSBTTUJ1cyBkZXZpY2UuCisJVGhlIGltcGxlbWVudGF0aW9uIGluIHRoZSBkZXZpY2UgaXMgYSBzdWJzZXQgb2YgU01CdXMgc2luY2UgaXQKKwlvbmx5IHN1cHBvcnRzIGZvdXIgcHJvdG9jb2xzLgorCisJVGhlIFdyaXRlIEJ5dGUsIFJlYWQgQnl0ZSwgU2VuZCBCeXRlLCBhbmQgUmVjZWl2ZSBCeXRlIHByb3RvY29scyBhcmUgdGhlCisJb25seSB2YWxpZCBTTUJ1cyBwcm90b2NvbHMgZm9yIHRoZSBkZXZpY2UuCisKKy0gQkMtTGlua1RNIEludGVyZmFjZQorCVRoZSBCQy1MaW5rIGlzIGEgcHJvcHJpZXRhcnkgYnVzIHRoYXQgYWxsb3dzIGNvbW11bmljYXRpb24KKwliZXR3ZWVuIGEgTWFzdGVyIGRldmljZSBhbmQgYSBDb21wYW5pb24gZGV2aWNlLiBUaGUgTWFzdGVyCisJZGV2aWNlIHVzZXMgdGhpcyBzZXJpYWwgYnVzIHRvIHJlYWQgYW5kIHdyaXRlIHJlZ2lzdGVycworCWxvY2F0ZWQgb24gdGhlIENvbXBhbmlvbiBkZXZpY2UuIFRoZSBidXMgY29tcHJpc2VzIHRocmVlIHNpZ25hbHMsCisJQkNfQ0xLLCBCQ19EQVQgYW5kIEJDX0lOVCMuIFRoZSBNYXN0ZXIgZGV2aWNlIGFsd2F5cyBwcm92aWRlcyB0aGUKKwljbG9jaywgQkNfQ0xLLCBhbmQgdGhlIENvbXBhbmlvbiBkZXZpY2UgaXMgdGhlIHNvdXJjZSBmb3IgYW4KKwlpbmRlcGVuZGVudCBhc3luY2hyb25vdXMgaW50ZXJydXB0IHNpZ25hbCwgQkNfSU5UIy4gVGhlIEVDRTEwOTkKKwlzdXBwb3J0cyBCQy1MaW5rIHNwZWVkcyB1cCB0byAyNE1Iei4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9BTFNBLUNvbmZpZ3VyYXRpb24udHh0IGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL0FMU0EtQ29uZmlndXJhdGlvbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDgxNDhkNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9BTFNBLUNvbmZpZ3VyYXRpb24udHh0CkBAIC0wLDAgKzEsMjMyMSBAQAorCisJCUFkdmFuY2VkIExpbnV4IFNvdW5kIEFyY2hpdGVjdHVyZSAtIERyaXZlcgorCQk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwkJCSAgICBDb25maWd1cmF0aW9uIGd1aWRlCisKKworS2VybmVsIENvbmZpZ3VyYXRpb24KKz09PT09PT09PT09PT09PT09PT09CisKK1RvIGVuYWJsZSBBTFNBIHN1cHBvcnQgeW91IG5lZWQgYXQgbGVhc3QgdG8gYnVpbGQgdGhlIGtlcm5lbCB3aXRoCitwcmltYXJ5IHNvdW5kIGNhcmQgc3VwcG9ydCAoQ09ORklHX1NPVU5EKS4gIFNpbmNlIEFMU0EgY2FuIGVtdWxhdGUgT1NTLAoreW91IGRvbid0IGhhdmUgdG8gY2hvb3NlIGFueSBvZiB0aGUgT1NTIG1vZHVsZXMuCisKK0VuYWJsZSAiT1NTIEFQSSBlbXVsYXRpb24iIChDT05GSUdfU05EX09TU0VNVUwpIGFuZCBib3RoIE9TUyBtaXhlciBhbmQKK1BDTSBzdXBwb3J0cyBpZiB5b3Ugd2FudCB0byBydW4gT1NTIGFwcGxpY2F0aW9ucyB3aXRoIEFMU0EuCisKK0lmIHlvdSB3YW50IHRvIHN1cHBvcnQgdGhlIFdhdmVUYWJsZSBmdW5jdGlvbmFsaXR5IG9uIGNhcmRzIHN1Y2ggYXMKK1NCIExpdmUhIHRoZW4geW91IG5lZWQgdG8gZW5hYmxlICJTZXF1ZW5jZXIgc3VwcG9ydCIKKyhDT05GSUdfU05EX1NFUVVFTkNFUikuCisKK1RvIG1ha2UgQUxTQSBkZWJ1ZyBtZXNzYWdlcyBtb3JlIHZlcmJvc2UsIGVuYWJsZSB0aGUgIlZlcmJvc2UgcHJpbnRrIgorYW5kICJEZWJ1ZyIgb3B0aW9ucy4gIFRvIGNoZWNrIGZvciBtZW1vcnkgbGVha3MsIHR1cm4gb24gIkRlYnVnIG1lbW9yeSIKK3Rvby4gICJEZWJ1ZyBkZXRlY3Rpb24iIHdpbGwgYWRkIGNoZWNrcyBmb3IgdGhlIGRldGVjdGlvbiBvZiBjYXJkcy4KKworUGxlYXNlIG5vdGUgdGhhdCBhbGwgdGhlIEFMU0EgSVNBIGRyaXZlcnMgc3VwcG9ydCB0aGUgTGludXggaXNhcG5wIEFQSQorKGlmIHRoZSBjYXJkIHN1cHBvcnRzIElTQSBQblApLiAgWW91IGRvbid0IG5lZWQgdG8gY29uZmlndXJlIHRoZSBjYXJkcwordXNpbmcgaXNhcG5wdG9vbHMuCisKKworQ3JlYXRpbmcgQUxTQSBkZXZpY2VzCis9PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBkZXBlbmRzIG9uIHlvdXIgZGlzdHJpYnV0aW9uLCBidXQgbm9ybWFsbHkgeW91IHVzZSB0aGUgL2Rldi9NQUtFREVWCitzY3JpcHQgdG8gY3JlYXRlIHRoZSBuZWNlc3NhcnkgZGV2aWNlIG5vZGVzLiAgT24gc29tZSBzeXN0ZW1zIHlvdSB1c2UgYQorc2NyaXB0IG5hbWVkICdzbmRkZXZpY2VzJy4KKworCitNb2R1bGUgcGFyYW1ldGVycworPT09PT09PT09PT09PT09PT0KKworVGhlIHVzZXIgY2FuIGxvYWQgbW9kdWxlcyB3aXRoIG9wdGlvbnMuIElmIHRoZSBtb2R1bGUgc3VwcG9ydHMgbW9yZSB0aGFuCitvbmUgY2FyZCBhbmQgeW91IGhhdmUgbW9yZSB0aGFuIG9uZSBjYXJkIG9mIHRoZSBzYW1lIHR5cGUgdGhlbiB5b3UgY2FuCitzcGVjaWZ5IG11bHRpcGxlIHZhbHVlcyBmb3IgdGhlIG9wdGlvbiBzZXBhcmF0ZWQgYnkgY29tbWFzLgorCitQcmlvciB0byB2ZXJzaW9uIDAuOS4wcmM0IG9wdGlvbnMgaGFkIGEgJ3NuZF8nIHByZWZpeC4gVGhpcyB3YXMgcmVtb3ZlZC4KKworICBNb2R1bGUgc25kCisgIC0tLS0tLS0tLS0KKworICAgIFRoZSBjb3JlIEFMU0EgbW9kdWxlLiAgSXQgaXMgdXNlZCBieSBhbGwgQUxTQSBjYXJkIGRyaXZlcnMuCisgICAgSXQgdGFrZXMgdGhlIGZvbGxvd2luZyBvcHRpb25zIHdoaWNoIGhhdmUgZ2xvYmFsIGVmZmVjdHMuCisKKyAgICBtYWpvcgktIG1ham9yIG51bWJlciBmb3Igc291bmQgZHJpdmVyCisJCS0gRGVmYXVsdDogMTE2CisgICAgY2FyZHNfbGltaXQKKwkJLSBsaW1pdGluZyBjYXJkIGluZGV4IGZvciBhdXRvLWxvYWRpbmcgKDEtOCkKKwkJLSBEZWZhdWx0OiAxCisJCS0gRm9yIGF1dG8tbG9hZGluZyBtb3JlIHRoYW4gb25lIGNhcmQsIHNwZWNpZnkgdGhpcworCQkgIG9wdGlvbiB0b2dldGhlciB3aXRoIHNuZC1jYXJkLVggYWxpYXNlcy4KKyAgICBzbG90cwktIFJlc2VydmUgdGhlIHNsb3QgaW5kZXggZm9yIHRoZSBnaXZlbiBkcml2ZXIuCisJCSAgVGhpcyBvcHRpb24gdGFrZXMgbXVsdGlwbGUgc3RyaW5ncy4JCQorCQkgIFNlZSAiTW9kdWxlIEF1dG9sb2FkaW5nIFN1cHBvcnQiIHNlY3Rpb24gZm9yIGRldGFpbHMuCisgICAgZGVidWcJLSBTcGVjaWZpZXMgdGhlIGRlYnVnIG1lc3NhZ2UgbGV2ZWwKKwkJICAoMCA9IGRpc2FibGUgZGVidWcgcHJpbnRzLCAxID0gbm9ybWFsIGRlYnVnIG1lc3NhZ2VzLAorCQkgICAyID0gdmVyYm9zZSBkZWJ1ZyBtZXNzYWdlcykKKwkJICBUaGlzIG9wdGlvbiBhcHBlYXJzIG9ubHkgd2hlbiBDT05GSUdfU05EX0RFQlVHPXkuCisJCSAgVGhpcyBvcHRpb24gY2FuIGJlIGR5bmFtaWNhbGx5IGNoYW5nZWQgdmlhIHN5c2ZzCisJCSAgL3N5cy9tb2R1bGVzL3NuZC9wYXJhbWV0ZXJzL2RlYnVnIGZpbGUuCisgIAorICBNb2R1bGUgc25kLXBjbS1vc3MKKyAgLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGUgUENNIE9TUyBlbXVsYXRpb24gbW9kdWxlLgorICAgIFRoaXMgbW9kdWxlIHRha2VzIG9wdGlvbnMgd2hpY2ggY2hhbmdlIHRoZSBtYXBwaW5nIG9mIGRldmljZXMuCisKKyAgICBkc3BfbWFwCS0gUENNIGRldmljZSBudW1iZXIgbWFwcyBhc3NpZ25lZCB0byB0aGUgMXN0IE9TUyBkZXZpY2UuCisJCS0gRGVmYXVsdDogMAorICAgIGFkc3BfbWFwCS0gUENNIGRldmljZSBudW1iZXIgbWFwcyBhc3NpZ25lZCB0byB0aGUgMnN0IE9TUyBkZXZpY2UuCisJCS0gRGVmYXVsdDogMQorICAgIG5vbmJsb2NrX29wZW4KKwkJLSBEb24ndCBibG9jayBvcGVuaW5nIGJ1c3kgUENNIGRldmljZXMuICBEZWZhdWx0OiAxCisKKyAgICBGb3IgZXhhbXBsZSwgd2hlbiBkc3BfbWFwPTIsIC9kZXYvZHNwIHdpbGwgYmUgbWFwcGVkIHRvIFBDTSAjMiBvZgorICAgIHRoZSBjYXJkICMwLiAgU2ltaWxhcmx5LCB3aGVuIGFkc3BfbWFwPTAsIC9kZXYvYWRzcCB3aWxsIGJlIG1hcHBlZAorICAgIHRvIFBDTSAjMCBvZiB0aGUgY2FyZCAjMC4KKyAgICBGb3IgY2hhbmdpbmcgdGhlIHNlY29uZCBvciBsYXRlciBjYXJkLCBzcGVjaWZ5IHRoZSBvcHRpb24gd2l0aAorICAgIGNvbW1hcywgc3VjaCBsaWtlICJkc3BfbWFwPTAsMSIuCisKKyAgICBub25ibG9ja19vcGVuIG9wdGlvbiBpcyB1c2VkIHRvIGNoYW5nZSB0aGUgYmVoYXZpb3Igb2YgdGhlIFBDTQorICAgIHJlZ2FyZGluZyBvcGVuaW5nIHRoZSBkZXZpY2UuICBXaGVuIHRoaXMgb3B0aW9uIGlzIG5vbi16ZXJvLAorICAgIG9wZW5pbmcgYSBidXN5IE9TUyBQQ00gZGV2aWNlIHdvbid0IGJlIGJsb2NrZWQgYnV0IHJldHVybgorICAgIGltbWVkaWF0ZWx5IHdpdGggRUFHQUlOIChqdXN0IGxpa2UgT19OT05CTE9DSyBmbGFnKS4KKyAgICAKKyAgTW9kdWxlIHNuZC1yYXdtaWRpCisgIC0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhpcyBtb2R1bGUgdGFrZXMgb3B0aW9ucyB3aGljaCBjaGFuZ2UgdGhlIG1hcHBpbmcgb2YgZGV2aWNlcy4KKyAgICBzaW1pbGFyIHRvIHRob3NlIG9mIHRoZSBzbmQtcGNtLW9zcyBtb2R1bGUuCisKKyAgICBtaWRpX21hcAktIE1JREkgZGV2aWNlIG51bWJlciBtYXBzIGFzc2lnbmVkIHRvIHRoZSAxc3QgT1NTIGRldmljZS4KKwkJLSBEZWZhdWx0OiAwCisgICAgYW1pZGlfbWFwCS0gTUlESSBkZXZpY2UgbnVtYmVyIG1hcHMgYXNzaWduZWQgdG8gdGhlIDJzdCBPU1MgZGV2aWNlLgorCQktIERlZmF1bHQ6IDEKKworICBDb21tb24gcGFyYW1ldGVycyBmb3IgdG9wIHNvdW5kIGNhcmQgbW9kdWxlcworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgRWFjaCBvZiB0b3AgbGV2ZWwgc291bmQgY2FyZCBtb2R1bGUgdGFrZXMgdGhlIGZvbGxvd2luZyBvcHRpb25zLgorCisgICAgaW5kZXgJLSBpbmRleCAoc2xvdCAjKSBvZiBzb3VuZCBjYXJkCisJCS0gVmFsdWVzOiAwIHRocm91Z2ggMzEgb3IgbmVnYXRpdmUKKwkJLSBJZiBub25uZWdhdGl2ZSwgYXNzaWduIHRoYXQgaW5kZXggbnVtYmVyCisgICAgICAgICAgICAgICAgLSBpZiBuZWdhdGl2ZSwgaW50ZXJwcmV0IGFzIGEgYml0bWFzayBvZiBwZXJtaXNzaWJsZQorCQkgIGluZGljZXM7IHRoZSBmaXJzdCBmcmVlIHBlcm1pdHRlZCBpbmRleCBpcyBhc3NpZ25lZAorCQktIERlZmF1bHQ6IC0xCisgICAgaWQJCS0gY2FyZCBJRCAoaWRlbnRpZmllciBvciBuYW1lKQorCQktIENhbiBiZSB1cCB0byAxNSBjaGFyYWN0ZXJzIGxvbmcKKwkJLSBEZWZhdWx0OiB0aGUgY2FyZCB0eXBlCisJCS0gQSBkaXJlY3RvcnkgYnkgdGhpcyBuYW1lIGlzIGNyZWF0ZWQgdW5kZXIgL3Byb2MvYXNvdW5kLworCQkgIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNhcmQKKwkJLSBUaGlzIElEIGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGluZGV4IG51bWJlciBpbgorCQkgIGlkZW50aWZ5aW5nIHRoZSBjYXJkCisgICAgZW5hYmxlICAJLSBlbmFibGUgY2FyZAorCQktIERlZmF1bHQ6IGVuYWJsZWQsIGZvciBQQ0kgYW5kIElTQSBQblAgY2FyZHMKKworICBNb2R1bGUgc25kLWFkbGliCisgIC0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgQWRMaWIgRk0gY2FyZHMuCisKKyAgICBwb3J0CS0gcG9ydCAjIGZvciBPUEwgY2hpcAorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMuIEl0IGRvZXMgbm90IHN1cHBvcnQgYXV0b3Byb2JlLCBzbworICAgIHRoZSBwb3J0IG11c3QgYmUgc3BlY2lmaWVkLiBGb3IgYWN0dWFsIEFkTGliIEZNIGNhcmRzIGl0IHdpbGwgYmUgMHgzODguCisgICAgTm90ZSB0aGF0IHRoaXMgY2FyZCBkb2VzIG5vdCBoYXZlIFBDTSBzdXBwb3J0IGFuZCBubyBtaXhlcjsgb25seSBGTQorICAgIHN5bnRoZXNpcy4KKworICAgIE1ha2Ugc3VyZSB5b3UgaGF2ZSAic2JpbG9hZCIgZnJvbSB0aGUgYWxzYS10b29scyBwYWNrYWdlIGF2YWlsYWJsZSBhbmQsCisgICAgYWZ0ZXIgbG9hZGluZyB0aGUgbW9kdWxlLCBmaW5kIG91dCB0aGUgYXNzaWduZWQgQUxTQSBzZXF1ZW5jZXIgcG9ydAorICAgIG51bWJlciB0aHJvdWdoICJzYmlsb2FkIC1sIi4gRXhhbXBsZSBvdXRwdXQ6CisKKyAgICAgIFBvcnQgICAgIENsaWVudCBuYW1lICAgICAgICAgICAgICAgICAgICAgICBQb3J0IG5hbWUKKyAgICAgIDY0OjAgICAgIE9QTDIgRk0gc3ludGggICAgICAgICAgICAgICAgICAgICBPUEwyIEZNIFBvcnQKKworICAgIExvYWQgdGhlIHN0ZC5zYiBhbmQgZHJ1bXMuc2IgcGF0Y2hlcyBhbHNvIHN1cHBsaWVkIGJ5IHNiaWxvYWQ6CisKKyAgICAgIHNiaWxvYWQgLXAgNjQ6MCBzdGQuc2IgZHJ1bXMuc2IKKworICAgIElmIHlvdSB1c2UgdGhpcyBkcml2ZXIgdG8gZHJpdmUgYW4gT1BMMywgeW91IGNhbiB1c2Ugc3RkLm8zIGFuZCBkcnVtcy5vMworICAgIGluc3RlYWQuIFRvIGhhdmUgdGhlIGNhcmQgcHJvZHVjZSBzb3VuZCwgdXNlIGFwbGF5bWlkaSBmcm9tIGFsc2EtdXRpbHM6CisKKyAgICAgIGFwbGF5bWlkaSAtcCA2NDowIGZvby5taWQKKworICBNb2R1bGUgc25kLWFkMTgxNmEKKyAgLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIHNvdW5kIGNhcmRzIGJhc2VkIG9uIEFuYWxvZyBEZXZpY2VzIEFEMTgxNkEvQUQxODE1IElTQSBjaGlwcy4KKworICAgIGNsb2NrZnJlcSAgIC0gQ2xvY2sgZnJlcXVlbmN5IGZvciBBRDE4MTZBIGNoaXAgKGRlZmF1bHQgPSAwLCAzMzAwMEh6KQorICAgIAorICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzLCBhdXRvcHJvYmUgYW5kIFBuUC4KKyAgICAKKyAgTW9kdWxlIHNuZC1hZDE4NDgKKyAgLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3Igc291bmQgY2FyZHMgYmFzZWQgb24gQUQxODQ4L0FEMTg0Ny9DUzQyNDggSVNBIGNoaXBzLgorCisgICAgcG9ydAktIHBvcnQgIyBmb3IgQUQxODQ4IGNoaXAKKyAgICBpcnEJCS0gSVJRICMgZm9yIEFEMTg0OCAgY2hpcAorICAgIGRtYTEJLSBETUEgIyBmb3IgQUQxODQ4IGNoaXAgKDAsMSwzKQorICAgIAorICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzLiAgSXQgZG9lcyBub3Qgc3VwcG9ydCBhdXRvcHJvYmUKKyAgICB0aHVzIG1haW4gcG9ydCBtdXN0IGJlIHNwZWNpZmllZCEhISBPdGhlciBwb3J0cyBhcmUgb3B0aW9uYWwuCisgICAgCisgICAgVGhlIHBvd2VyLW1hbmFnZW1lbnQgaXMgc3VwcG9ydGVkLgorCisgIE1vZHVsZSBzbmQtYWQxODg5CisgIC0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIEFuYWxvZyBEZXZpY2VzIEFEMTg4OSBjaGlwcy4KKworICAgIGFjOTdfcXVpcmsgIC0gQUMnOTcgd29ya2Fyb3VuZCBmb3Igc3RyYW5nZSBoYXJkd2FyZQorICAgICAgICAgICAgICAgICAgU2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBpbnRlbDh4MCBtb2R1bGUgZm9yIGRldGFpbHMuCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcy4KKworICBNb2R1bGUgc25kLWFsaTU0NTEKKyAgLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIEFMaSBNNTQ1MSBQQ0kgY2hpcC4KKworICAgIHBjbV9jaGFubmVscyAgICAtIE51bWJlciBvZiBoYXJkd2FyZSBjaGFubmVscyBhc3NpZ25lZCBmb3IgUENNCisgICAgc3BkaWYgICAgICAgICAgIC0gU3VwcG9ydCBTUERJRiBJL08KKyAgICAJCSAgICAtIERlZmF1bHQ6IGRpc2FibGVkCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBvbmUgY2hpcCBhbmQgYXV0b3Byb2JlLgorCisgICAgVGhlIHBvd2VyLW1hbmFnZW1lbnQgaXMgc3VwcG9ydGVkLgorCisgIE1vZHVsZSBzbmQtYWxzMTAwCisgIC0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIHNvdW5kIGNhcmRzIGJhc2VkIG9uIEF2YW5jZSBMb2dpYyBBTFMxMDAvQUxTMTIwIElTQSBjaGlwcy4KKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzLCBhdXRvcHJvYmUgYW5kIFBuUC4KKworICAgIFRoZSBwb3dlci1tYW5hZ2VtZW50IGlzIHN1cHBvcnRlZC4KKworICBNb2R1bGUgc25kLWFsczMwMAorICAtLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciAgQXZhbmNlIExvZ2ljIEFMUzMwMCBhbmQgQUxTMzAwKworCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMuCisKKyAgICBUaGUgcG93ZXItbWFuYWdlbWVudCBpcyBzdXBwb3J0ZWQuCisKKyAgTW9kdWxlIHNuZC1hbHM0MDAwCisgIC0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBzb3VuZCBjYXJkcyBiYXNlZCBvbiBBdmFuY2UgTG9naWMgQUxTNDAwMCBQQ0kgY2hpcC4KKworICAgIGpveXN0aWNrX3BvcnQgLSBwb3J0ICMgZm9yIGxlZ2FjeSBqb3lzdGljayBzdXBwb3J0LgorICAgICAgICAgICAgICAgICAgICAwID0gZGlzYWJsZWQgKGRlZmF1bHQpLCAxID0gYXV0by1kZXRlY3QKKyAgICAKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcywgYXV0b3Byb2JlIGFuZCBQblAuCisKKyAgICBUaGUgcG93ZXItbWFuYWdlbWVudCBpcyBzdXBwb3J0ZWQuCisKKyAgTW9kdWxlIHNuZC1hc2locGkKKyAgLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgQXVkaW9TY2llbmNlIEFTSSBzb3VuZGNhcmRzCisKKyAgICBlbmFibGVfaHBpX2h3ZGVwCS0gZW5hYmxlIEhQSSBod2RlcCBmb3IgQXVkaW9TY2llbmNlIHNvdW5kY2FyZAorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMuCisgICAgVGhlIGRyaXZlciByZXF1aXJlcyB0aGUgZmlybXdhcmUgbG9hZGVyIHN1cHBvcnQgb24ga2VybmVsLgorCisgIE1vZHVsZSBzbmQtYXRpaXhwCisgIC0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIEFUSSBJWFAgMTUwLzIwMC8yNTAvNDAwIEFDOTcgY29udHJvbGxlcnMuCisKKyAgICBhYzk3X2Nsb2NrCQktIEFDJzk3IGNsb2NrIChkZWZhdWx0ID0gNDgwMDApCisgICAgYWM5N19xdWlyawkJLSBBQyc5NyB3b3JrYXJvdW5kIGZvciBzdHJhbmdlIGhhcmR3YXJlCisJCQkgIFNlZSAiQUM5NyBRdWlyayBPcHRpb24iIHNlY3Rpb24gYmVsb3cuCisgICAgYWM5N19jb2RlYwkJLSBXb3JrYXJvdW5kIHRvIHNwZWNpZnkgd2hpY2ggQUMnOTcgY29kZWMgCisJCQkgIGluc3RlYWQgb2YgcHJvYmluZy4gIElmIHRoaXMgd29ya3MgZm9yIHlvdQorCQkJICBmaWxlIGEgYnVnIHdpdGggeW91ciBgbHNwY2kgLXZuYCBvdXRwdXQuCisJCQkgIC0yICAtLSBGb3JjZSBwcm9iaW5nLgorCQkJICAtMSAgLS0gRGVmYXVsdCBiZWhhdmlvci4KKwkJCSAgMC0yIC0tIFVzZSB0aGUgc3BlY2lmaWVkIGNvZGVjLgorICAgIHNwZGlmX2FjbGluawktIFMvUERJRiB0cmFuc2ZlciBvdmVyIEFDLWxpbmsgKGRlZmF1bHQgPSAxKQorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgb25lIGNhcmQgYW5kIGF1dG9wcm9iZS4KKworICAgIEFUSSBJWFAgaGFzIHR3byBkaWZmZXJlbnQgbWV0aG9kcyB0byBjb250cm9sIFNQRElGIG91dHB1dC4gIE9uZSBpcworICAgIG92ZXIgQUMtbGluayBhbmQgYW5vdGhlciBpcyBvdmVyIHRoZSAiZGlyZWN0IiBTUERJRiBvdXRwdXQuICBUaGUKKyAgICBpbXBsZW1lbnRhdGlvbiBkZXBlbmRzIG9uIHRoZSBtb3RoZXJib2FyZCwgYW5kIHlvdSdsbCBuZWVkIHRvCisgICAgY2hvb3NlIHRoZSBjb3JyZWN0IG9uZSB2aWEgc3BkaWZfYWNsaW5rIG1vZHVsZSBvcHRpb24uCisKKyAgICBUaGUgcG93ZXItbWFuYWdlbWVudCBpcyBzdXBwb3J0ZWQuCisKKyAgTW9kdWxlIHNuZC1hdGlpeHAtbW9kZW0KKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgQVRJIElYUCAxNTAvMjAwLzI1MCBBQzk3IG1vZGVtIGNvbnRyb2xsZXJzLgorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgb25lIGNhcmQgYW5kIGF1dG9wcm9iZS4KKworICAgIE5vdGU6IFRoZSBkZWZhdWx0IGluZGV4IHZhbHVlIG9mIHRoaXMgbW9kdWxlIGlzIC0yLCBpLmUuIHRoZSBmaXJzdAorICAgICAgICAgIHNsb3QgaXMgZXhjbHVkZWQuCisKKyAgICBUaGUgcG93ZXItbWFuYWdlbWVudCBpcyBzdXBwb3J0ZWQuCisKKyAgTW9kdWxlIHNuZC1hdTg4MTAsIHNuZC1hdTg4MjAsIHNuZC1hdTg4MzAKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgQXVyZWFsIFZvcnRleCwgVm9ydGV4MiBhbmQgQWR2YW50YWdlIGRldmljZS4KKworICAgIHBjaWZpeAktIENvbnRyb2wgUENJIHdvcmthcm91bmRzCisJCSAgMCA9IERpc2FibGUgYWxsIHdvcmthcm91bmRzCisJCSAgMSA9IEZvcmNlIHRoZSBQQ0kgbGF0ZW5jeSBvZiB0aGUgQXVyZWFsIGNhcmQgdG8gMHhmZgorCQkgIDIgPSBGb3JjZSB0aGUgRXh0ZW5kIFBDSSMyIEludGVybmFsIE1hc3RlciBmb3IgRWZmaWNpZW50CisJCSAgICAgIEhhbmRsaW5nIG9mIER1bW15IFJlcXVlc3RzIG9uIHRoZSBWSUEgS1QxMzMgQUdQIEJyaWRnZQorCQkgIDMgPSBGb3JjZSBib3RoIHNldHRpbmdzCisJCSAgMjU1ID0gQXV0b2RldGVjdCB3aGF0IGlzIHJlcXVpcmVkIChkZWZhdWx0KQorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgYWxsIEFEQiBQQ00gY2hhbm5lbHMsIGFjOTcgbWl4ZXIsIFNQRElGLCBoYXJkd2FyZQorICAgIEVRLCBtcHU0MDEsIGdhbWVwb3J0LiBBM0QgYW5kIHdhdmV0YWJsZSBzdXBwb3J0IGFyZSBzdGlsbCBpbiBkZXZlbG9wbWVudC4KKyAgICBEZXZlbG9wbWVudCBhbmQgcmV2ZXJzZSBlbmdpbmVlcmluZyB3b3JrIGlzIGJlaW5nIGNvb3JkaW5hdGVkIGF0CisgICAgaHR0cDovL3NhdmFubmFoLm5vbmdudS5vcmcvcHJvamVjdHMvb3BlbnZvcnRleC8KKyAgICBTUERJRiBvdXRwdXQgaGFzIGEgY29weSBvZiB0aGUgQUM5NyBjb2RlYyBvdXRwdXQsIHVubGVzcyB5b3UgdXNlIHRoZQorICAgICJzcGRpZiIgcGNtIGRldmljZSwgd2hpY2ggYWxsb3dzIHJhdyBkYXRhIHBhc3N0aHJ1LgorICAgIFRoZSBoYXJkd2FyZSBFUSBoYXJkd2FyZSBhbmQgU1BESUYgaXMgb25seSBwcmVzZW50IGluIHRoZSBWb3J0ZXgyIGFuZCAKKyAgICBBZHZhbnRhZ2UuCisKKyAgICBOb3RlOiBTb21lIEFMU0EgbWl4ZXIgYXBwbGljYXRpb25zIGRvbid0IGhhbmRsZSB0aGUgU1BESUYgc2FtcGxlIHJhdGUgCisgICAgICAgICAgIGNvbnRyb2wgY29ycmVjdGx5LiBJZiB5b3UgaGF2ZSBwcm9ibGVtcyByZWdhcmRpbmcgdGhpcywgdHJ5CisgICAgICAgICAgIGFub3RoZXIgQUxTQSBjb21wbGlhbnQgbWl4ZXIgKGFsc2FtaXhlciB3b3JrcykuCisKKyAgTW9kdWxlIHNuZC1henQxNjA1CisgIC0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBBenRlY2ggU291bmQgR2FsYXh5IHNvdW5kY2FyZHMgYmFzZWQgb24gdGhlIEF6dGVjaCBBWlQxNjA1CisgICAgY2hpcHNldC4KKworICAgIHBvcnQJLSBwb3J0ICMgZm9yIEJBU0UgKDB4MjIwLDB4MjQwLDB4MjYwLDB4MjgwKQorICAgIHdzc19wb3J0CS0gcG9ydCAjIGZvciBXU1MgKDB4NTMwLDB4NjA0LDB4ZTgwLDB4ZjQwKQorICAgIGlycQkJLSBJUlEgIyBmb3IgV1NTICg3LDksMTAsMTEpCisgICAgZG1hMQktIERNQSAjIGZvciBXU1MgcGxheWJhY2sgKDAsMSwzKQorICAgIGRtYTIJLSBETUEgIyBmb3IgV1NTIGNhcHR1cmUgKDAsMSksIC0xID0gZGlzYWJsZWQgKGRlZmF1bHQpCisgICAgbXB1X3BvcnQJLSBwb3J0ICMgZm9yIE1QVS00MDEgVUFSVCAoMHgzMDAsMHgzMzApLCAtMSA9IGRpc2FibGVkIChkZWZhdWx0KQorICAgIG1wdV9pcnEJLSBJUlEgIyBmb3IgTVBVLTQwMSBVQVJUICgzLDUsNyw5KSwgLTEgPSBkaXNhYmxlZCAoZGVmYXVsdCkKKyAgICBmbV9wb3J0CS0gcG9ydCAjIGZvciBPUEwzICgweDM4OCksIC0xID0gZGlzYWJsZWQgKGRlZmF1bHQpCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcy4gSXQgZG9lcyBub3Qgc3VwcG9ydCBhdXRvcHJvYmU6IHBvcnQsCisgICAgd3NzX3BvcnQsIGlycSBhbmQgZG1hMSBoYXZlIHRvIGJlIHNwZWNpZmllZC4gVGhlIG90aGVyIHZhbHVlcyBhcmUKKyAgICBvcHRpb25hbC4KKworICAgICJwb3J0IiBuZWVkcyB0byBtYXRjaCB0aGUgQkFTRSBBRERSRVNTIGp1bXBlciBvbiB0aGUgY2FyZCAoMHgyMjAgb3IgMHgyNDApCisgICAgb3IgdGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgY2FyZCdzIEVFUFJPTSBmb3IgY2FyZHMgdGhhdCBoYXZlIGFuIEVFUFJPTSBhbmQKKyAgICB0aGVpciAiQ09ORklHIE1PREUiIGp1bXBlciBzZXQgdG8gIkVFUFJPTSBTRVRUSU5HIi4gVGhlIG90aGVyIHZhbHVlcyBjYW4KKyAgICBiZSBjaG9zZW4gZnJlZWx5IGZyb20gdGhlIG9wdGlvbnMgZW51bWVyYXRlZCBhYm92ZS4KKworICAgIElmIGRtYTIgaXMgc3BlY2lmaWVkIGFuZCBkaWZmZXJlbnQgZnJvbSBkbWExLCB0aGUgY2FyZCB3aWxsIG9wZXJhdGUgaW4KKyAgICBmdWxsLWR1cGxleCBtb2RlLiBXaGVuIGRtYTE9Mywgb25seSBkbWEyPTAgaXMgdmFsaWQgYW5kIHRoZSBvbmx5IHdheSB0bworICAgIGVuYWJsZSBjYXB0dXJlIHNpbmNlIG9ubHkgY2hhbm5lbHMgMCBhbmQgMSBhcmUgYXZhaWxhYmxlIGZvciBjYXB0dXJlLgorCisgICAgR2VuZXJpYyBzZXR0aW5ncyBhcmUgInBvcnQ9MHgyMjAgd3NzX3BvcnQ9MHg1MzAgaXJxPTEwIGRtYTE9MSBkbWEyPTAKKyAgICBtcHVfcG9ydD0weDMzMCBtcHVfaXJxPTkgZm1fcG9ydD0weDM4OCIuCisKKyAgICBXaGF0ZXZlciBJUlEgYW5kIERNQSBjaGFubmVscyB5b3UgcGljaywgYmUgc3VyZSB0byByZXNlcnZlIHRoZW0gZm9yCisgICAgbGVnYWN5IElTQSBpbiB5b3VyIEJJT1MuCisKKyAgTW9kdWxlIHNuZC1henQyMzE2CisgIC0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBBenRlY2ggU291bmQgR2FsYXh5IHNvdW5kY2FyZHMgYmFzZWQgb24gdGhlIEF6dGVjaCBBWlQyMzE2CisgICAgY2hpcHNldC4KKworICAgIHBvcnQJLSBwb3J0ICMgZm9yIEJBU0UgKDB4MjIwLDB4MjQwLDB4MjYwLDB4MjgwKQorICAgIHdzc19wb3J0CS0gcG9ydCAjIGZvciBXU1MgKDB4NTMwLDB4NjA0LDB4ZTgwLDB4ZjQwKQorICAgIGlycQkJLSBJUlEgIyBmb3IgV1NTICg3LDksMTAsMTEpCisgICAgZG1hMQktIERNQSAjIGZvciBXU1MgcGxheWJhY2sgKDAsMSwzKQorICAgIGRtYTIJLSBETUEgIyBmb3IgV1NTIGNhcHR1cmUgKDAsMSksIC0xID0gZGlzYWJsZWQgKGRlZmF1bHQpCisgICAgbXB1X3BvcnQJLSBwb3J0ICMgZm9yIE1QVS00MDEgVUFSVCAoMHgzMDAsMHgzMzApLCAtMSA9IGRpc2FibGVkIChkZWZhdWx0KQorICAgIG1wdV9pcnEJLSBJUlEgIyBmb3IgTVBVLTQwMSBVQVJUICg1LDcsOSwxMCksIC0xID0gZGlzYWJsZWQgKGRlZmF1bHQpCisgICAgZm1fcG9ydAktIHBvcnQgIyBmb3IgT1BMMyAoMHgzODgpLCAtMSA9IGRpc2FibGVkIChkZWZhdWx0KQorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMuIEl0IGRvZXMgbm90IHN1cHBvcnQgYXV0b3Byb2JlOiBwb3J0LAorICAgIHdzc19wb3J0LCBpcnEgYW5kIGRtYTEgaGF2ZSB0byBiZSBzcGVjaWZpZWQuIFRoZSBvdGhlciB2YWx1ZXMgYXJlCisgICAgb3B0aW9uYWwuCisKKyAgICAicG9ydCIgbmVlZHMgdG8gbWF0Y2ggdGhlIEJBU0UgQUREUkVTUyBqdW1wZXIgb24gdGhlIGNhcmQgKDB4MjIwIG9yIDB4MjQwKQorICAgIG9yIHRoZSB2YWx1ZSBzdG9yZWQgaW4gdGhlIGNhcmQncyBFRVBST00gZm9yIGNhcmRzIHRoYXQgaGF2ZSBhbiBFRVBST00gYW5kCisgICAgdGhlaXIgIkNPTkZJRyBNT0RFIiBqdW1wZXIgc2V0IHRvICJFRVBST00gU0VUVElORyIuIFRoZSBvdGhlciB2YWx1ZXMgY2FuCisgICAgYmUgY2hvc2VuIGZyZWVseSBmcm9tIHRoZSBvcHRpb25zIGVudW1lcmF0ZWQgYWJvdmUuCisKKyAgICBJZiBkbWEyIGlzIHNwZWNpZmllZCBhbmQgZGlmZmVyZW50IGZyb20gZG1hMSwgdGhlIGNhcmQgd2lsbCBvcGVyYXRlIGluCisgICAgZnVsbC1kdXBsZXggbW9kZS4gV2hlbiBkbWExPTMsIG9ubHkgZG1hMj0wIGlzIHZhbGlkIGFuZCB0aGUgb25seSB3YXkgdG8KKyAgICBlbmFibGUgY2FwdHVyZSBzaW5jZSBvbmx5IGNoYW5uZWxzIDAgYW5kIDEgYXJlIGF2YWlsYWJsZSBmb3IgY2FwdHVyZS4KKworICAgIEdlbmVyaWMgc2V0dGluZ3MgYXJlICJwb3J0PTB4MjIwIHdzc19wb3J0PTB4NTMwIGlycT0xMCBkbWExPTEgZG1hMj0wCisgICAgbXB1X3BvcnQ9MHgzMzAgbXB1X2lycT05IGZtX3BvcnQ9MHgzODgiLgorCisgICAgV2hhdGV2ZXIgSVJRIGFuZCBETUEgY2hhbm5lbHMgeW91IHBpY2ssIGJlIHN1cmUgdG8gcmVzZXJ2ZSB0aGVtIGZvcgorICAgIGxlZ2FjeSBJU0EgaW4geW91ciBCSU9TLgorCisgIE1vZHVsZSBzbmQtYXcyCisgIC0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIEF1ZGlvd2VyazIgc291bmQgY2FyZAorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMuCisKKyAgTW9kdWxlIHNuZC1henQyMzIwCisgIC0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBzb3VuZCBjYXJkcyBiYXNlZCBvbiBBenRlY2ggU3lzdGVtIEFaVDIzMjAgSVNBIGNoaXAgKFBuUCBvbmx5KS4KKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzLCBQblAgYW5kIGF1dG9wcm9iZS4KKyAgICAKKyAgICBUaGUgcG93ZXItbWFuYWdlbWVudCBpcyBzdXBwb3J0ZWQuCisKKyAgTW9kdWxlIHNuZC1henQzMzI4CisgIC0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBzb3VuZCBjYXJkcyBiYXNlZCBvbiBBenRlY2ggQVpGMzMyOCBQQ0kgY2hpcC4KKworICAgIGpveXN0aWNrCS0gRW5hYmxlIGpveXN0aWNrIChkZWZhdWx0IG9mZikKKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzLgorCisgIE1vZHVsZSBzbmQtYnQ4N3gKKyAgLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciB2aWRlbyBjYXJkcyBiYXNlZCBvbiBCdDg3eCBjaGlwcy4KKworICAgIGRpZ2l0YWxfcmF0ZSAtIE92ZXJyaWRlIHRoZSBkZWZhdWx0IGRpZ2l0YWwgcmF0ZSAoSHopCisgICAgbG9hZF9hbGwJLSBMb2FkIHRoZSBkcml2ZXIgZXZlbiBpZiB0aGUgY2FyZCBtb2RlbCBpc24ndCBrbm93bgorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMuCisKKyAgICBOb3RlOiBUaGUgZGVmYXVsdCBpbmRleCB2YWx1ZSBvZiB0aGlzIG1vZHVsZSBpcyAtMiwgaS5lLiB0aGUgZmlyc3QKKyAgICAgICAgICBzbG90IGlzIGV4Y2x1ZGVkLgorCisgIE1vZHVsZSBzbmQtY2EwMTA2CisgIC0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIENyZWF0aXZlIEF1ZGlneSBMUyBhbmQgU0IgTGl2ZSAyNGJpdAorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMuCisKKworICBNb2R1bGUgc25kLWNtaTgzMzAKKyAgLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIHNvdW5kIGNhcmRzIGJhc2VkIG9uIEMtTWVkaWEgQ01JODMzMCBJU0EgY2hpcHMuCisKKyAgICBpc2FwbnAJLSBJU0EgUG5QIGRldGVjdGlvbiAtIDAgPSBkaXNhYmxlLCAxID0gZW5hYmxlIChkZWZhdWx0KQorCisgICAgd2l0aCBpc2FwbnA9MCwgdGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBhdmFpbGFibGU6CisKKyAgICB3c3Nwb3J0CS0gcG9ydCAjIGZvciBDTUk4MzMwIGNoaXAgKFdTUykKKyAgICB3c3NpcnEJLSBJUlEgIyBmb3IgQ01JODMzMCBjaGlwIChXU1MpCisgICAgd3NzZG1hCS0gZmlyc3QgRE1BICMgZm9yIENNSTgzMzAgY2hpcCAoV1NTKQorICAgIHNicG9ydAktIHBvcnQgIyBmb3IgQ01JODMzMCBjaGlwIChTQjE2KQorICAgIHNiaXJxCS0gSVJRICMgZm9yIENNSTgzMzAgY2hpcCAoU0IxNikKKyAgICBzYmRtYTgJLSA4Yml0IERNQSAjIGZvciBDTUk4MzMwIGNoaXAgKFNCMTYpCisgICAgc2JkbWExNgktIDE2Yml0IERNQSAjIGZvciBDTUk4MzMwIGNoaXAgKFNCMTYpCisgICAgZm1wb3J0CS0gKG9wdGlvbmFsKSBPUEwzIEkvTyBwb3J0CisgICAgbXB1cG9ydAktIChvcHRpb25hbCkgTVBVNDAxIEkvTyBwb3J0CisgICAgbXB1aXJxCS0gKG9wdGlvbmFsKSBNUFU0MDEgaXJxICMKKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzIGFuZCBhdXRvcHJvYmUuCisKKyAgICBUaGUgcG93ZXItbWFuYWdlbWVudCBpcyBzdXBwb3J0ZWQuCisKKyAgTW9kdWxlIHNuZC1jbWlwY2kKKyAgLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgQy1NZWRpYSBDTUk4MzM4Lzg3MzgvODc2OC84NzcwIFBDSSBzb3VuZCBjYXJkcy4KKworICAgIG1wdV9wb3J0ICAgIC0gcG9ydCBhZGRyZXNzIG9mIE1JREkgaW50ZXJmYWNlICg4MzM4IG9ubHkpOgorCQkgIDB4MzAwLDB4MzEwLDB4MzIwLDB4MzMwID0gbGVnYWN5IHBvcnQsCisJCSAgMCA9IGRpc2FibGUgKGRlZmF1bHQpCisgICAgZm1fcG9ydCAgICAgLSBwb3J0IGFkZHJlc3Mgb2YgT1BMLTMgRk0gc3ludGhlc2l6ZXIgKDh4Mzggb25seSk6CisJCSAgMHgzODggPSBsZWdhY3kgcG9ydCwKKwkJICAxID0gaW50ZWdyYXRlZCBQQ0kgcG9ydCAoZGVmYXVsdCBvbiA4NzM4KSwKKwkJICAwID0gZGlzYWJsZQorICAgIHNvZnRfYWMzICAgIC0gU29mdHdhcmUtY29udmVyc2lvbiBvZiByYXcgU1BESUYgcGFja2V0cyAobW9kZWwgMDMzIG9ubHkpCisgICAgICAgICAgICAgICAgICAoZGVmYXVsdCA9IDEpCisgICAgam95c3RpY2tfcG9ydCAtIEpveXN0aWNrIHBvcnQgYWRkcmVzcyAoMCA9IGRpc2FibGUsIDEgPSBhdXRvLWRldGVjdCkKKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIGF1dG9wcm9iZSBhbmQgbXVsdGlwbGUgY2FyZHMuCisgICAgCisgICAgVGhlIHBvd2VyLW1hbmFnZW1lbnQgaXMgc3VwcG9ydGVkLgorCisgIE1vZHVsZSBzbmQtY3M0MjMxCisgIC0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIHNvdW5kIGNhcmRzIGJhc2VkIG9uIENTNDIzMSBJU0EgY2hpcHMuCisKKyAgICBwb3J0CS0gcG9ydCAjIGZvciBDUzQyMzEgY2hpcAorICAgIG1wdV9wb3J0CS0gcG9ydCAjIGZvciBNUFUtNDAxIFVBUlQgKG9wdGlvbmFsKSwgLTEgPSBkaXNhYmxlCisgICAgaXJxCQktIElSUSAjIGZvciBDUzQyMzEgY2hpcAorICAgIG1wdV9pcnEJLSBJUlEgIyBmb3IgTVBVLTQwMSBVQVJUCisgICAgZG1hMQktIGZpcnN0IERNQSAjIGZvciBDUzQyMzEgY2hpcAorICAgIGRtYTIJLSBzZWNvbmQgRE1BICMgZm9yIENTNDIzMSBjaGlwCisgICAgCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMuIFRoaXMgbW9kdWxlIGRvZXMgbm90IHN1cHBvcnQgYXV0b3Byb2JlCisgICAgdGh1cyBtYWluIHBvcnQgbXVzdCBiZSBzcGVjaWZpZWQhISEgT3RoZXIgcG9ydHMgYXJlIG9wdGlvbmFsLgorCisgICAgVGhlIHBvd2VyLW1hbmFnZW1lbnQgaXMgc3VwcG9ydGVkLgorICAgIAorICBNb2R1bGUgc25kLWNzNDIzNgorICAtLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBzb3VuZCBjYXJkcyBiYXNlZCBvbiBDUzQyMzIvQ1M0MjMyQSwKKyAgICAJICAgICAgIAkgICAgIAkgICAJICAgQ1M0MjM1L0NTNDIzNi9DUzQyMzZCL0NTNDIzN0IvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTNDIzOEIvQ1M0MjM5IElTQSBjaGlwcy4KKworICAgIGlzYXBucAktIElTQSBQblAgZGV0ZWN0aW9uIC0gMCA9IGRpc2FibGUsIDEgPSBlbmFibGUgKGRlZmF1bHQpCisKKyAgICB3aXRoIGlzYXBucD0wLCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgYXJlIGF2YWlsYWJsZToKKworICAgIHBvcnQJLSBwb3J0ICMgZm9yIENTNDIzNiBjaGlwIChQblAgc2V0dXAgLSAweDUzNCkKKyAgICBjcG9ydAktIGNvbnRyb2wgcG9ydCAjIGZvciBDUzQyMzYgY2hpcCAoUG5QIHNldHVwIC0gMHgxMjAsMHgyMTAsMHhmMDApCisgICAgbXB1X3BvcnQJLSBwb3J0ICMgZm9yIE1QVS00MDEgVUFSVCAoUG5QIHNldHVwIC0gMHgzMDApLCAtMSA9IGRpc2FibGUKKyAgICBmbV9wb3J0CS0gRk0gcG9ydCAjIGZvciBDUzQyMzYgY2hpcCAoUG5QIHNldHVwIC0gMHgzODgpLCAtMSA9IGRpc2FibGUKKyAgICBpcnEJCS0gSVJRICMgZm9yIENTNDIzNiBjaGlwICg1LDcsOSwxMSwxMiwxNSkKKyAgICBtcHVfaXJxCS0gSVJRICMgZm9yIE1QVS00MDEgVUFSVCAoOSwxMSwxMiwxNSkKKyAgICBkbWExCS0gZmlyc3QgRE1BICMgZm9yIENTNDIzNiBjaGlwICgwLDEsMykKKyAgICBkbWEyCS0gc2Vjb25kIERNQSAjIGZvciBDUzQyMzYgY2hpcCAoMCwxLDMpLCAtMSA9IGRpc2FibGUKKyAgICAKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcy4gVGhpcyBtb2R1bGUgZG9lcyBub3Qgc3VwcG9ydCBhdXRvcHJvYmUKKyAgICAoaWYgSVNBIFBuUCBpcyBub3QgdXNlZCkgdGh1cyBtYWluIHBvcnQgYW5kIGNvbnRyb2wgcG9ydCBtdXN0IGJlCisgICAgc3BlY2lmaWVkISEhIE90aGVyIHBvcnRzIGFyZSBvcHRpb25hbC4KKworICAgIFRoZSBwb3dlci1tYW5hZ2VtZW50IGlzIHN1cHBvcnRlZC4KKworICAgIFRoaXMgbW9kdWxlIGlzIGFsaWFzZWQgYXMgc25kLWNzNDIzMiBzaW5jZSBpdCBwcm92aWRlcyB0aGUgb2xkCisgICAgc25kLWNzNDIzMiBmdW5jdGlvbmFsaXR5LCB0b28uCisKKyAgTW9kdWxlIHNuZC1jczQyODEKKyAgLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgQ2lycnVzIExvZ2ljIENTNDI4MSBzb3VuZGNoaXAuCisKKyAgICBkdWFsX2NvZGVjCS0gU2Vjb25kYXJ5IGNvZGVjIElEICgwID0gZGlzYWJsZSwgZGVmYXVsdCkKKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzLgorCisgICAgVGhlIHBvd2VyLW1hbmFnZW1lbnQgaXMgc3VwcG9ydGVkLgorCisgIE1vZHVsZSBzbmQtY3M0Nnh4CisgIC0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIFBDSSBzb3VuZCBjYXJkcyBiYXNlZCBvbiBDUzQ2MTAvQ1M0NjEyL0NTNDYxNC9DUzQ2MTUvQ1M0NjIyLworCQkJCSAgICAgICBDUzQ2MjQvQ1M0NjMwL0NTNDI4MCBQQ0kgY2hpcHMuCisKKyAgICBleHRlcm5hbF9hbXAgICAgIC0gRm9yY2UgdG8gZW5hYmxlIGV4dGVybmFsIGFtcGxpZmllci4KKyAgICB0aGlua3BhZCAgICAgICAgIC0gRm9yY2UgdG8gZW5hYmxlIFRoaW5rcGFkJ3MgQ0xLUlVOIGNvbnRyb2wuCisgICAgbW1hcF92YWxpZCAgICAgICAtIFN1cHBvcnQgT1NTIG1tYXAgbW9kZSAoZGVmYXVsdCA9IDApLgorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMgYW5kIGF1dG9wcm9iZS4KKyAgICBVc3VhbGx5IGV4dGVybmFsIGFtcCBhbmQgQ0xLUlVOIGNvbnRyb2xzIGFyZSBkZXRlY3RlZCBhdXRvbWF0aWNhbGx5CisgICAgZnJvbSBQQ0kgc3ViIHZlbmRvci9kZXZpY2UgaWRzLiAgSWYgdGhleSBkb24ndCB3b3JrLCBnaXZlIHRoZSBvcHRpb25zCisgICAgYWJvdmUgZXhwbGljaXRseS4KKworICAgIFRoZSBwb3dlci1tYW5hZ2VtZW50IGlzIHN1cHBvcnRlZC4KKworICBNb2R1bGUgc25kLWNzNTUzMAorICBfX19fX19fX19fX19fX19fXworCisgICAgTW9kdWxlIGZvciBDeXJpeC9OYXRTZW1pIEdlb2RlIDU1MzAgY2hpcC4gCisgIAorICBNb2R1bGUgc25kLWNzNTUzNWF1ZGlvCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgbXVsdGlmdW5jdGlvbiBDUzU1MzUgY29tcGFuaW9uIFBDSSBkZXZpY2UKKworICAgIFRoZSBwb3dlci1tYW5hZ2VtZW50IGlzIHN1cHBvcnRlZC4KKworICBNb2R1bGUgc25kLWN0eGZpCisgIC0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgQ3JlYXRpdmUgU291bmQgQmxhc3RlciBYLUZpIGJvYXJkcyAoMjBrMSAvIDIwazIgY2hpcHMpCisJKiBDcmVhdGl2ZSBTb3VuZCBCbGFzdGVyIFgtRmkgVGl0YW5pdW0gRmF0YWwxdHkgQ2hhbXBpb24gU2VyaWVzCisJKiBDcmVhdGl2ZSBTb3VuZCBCbGFzdGVyIFgtRmkgVGl0YW5pdW0gRmF0YWwxdHkgUHJvZmVzc2lvbmFsIFNlcmllcworCSogQ3JlYXRpdmUgU291bmQgQmxhc3RlciBYLUZpIFRpdGFuaXVtIFByb2Zlc3Npb25hbCBBdWRpbworCSogQ3JlYXRpdmUgU291bmQgQmxhc3RlciBYLUZpIFRpdGFuaXVtCisJKiBDcmVhdGl2ZSBTb3VuZCBCbGFzdGVyIFgtRmkgRWxpdGUgUHJvCisJKiBDcmVhdGl2ZSBTb3VuZCBCbGFzdGVyIFgtRmkgUGxhdGludW0KKwkqIENyZWF0aXZlIFNvdW5kIEJsYXN0ZXIgWC1GaSBGYXRhbDF0eQorCSogQ3JlYXRpdmUgU291bmQgQmxhc3RlciBYLUZpIFh0cmVtZUdhbWVyCisJKiBDcmVhdGl2ZSBTb3VuZCBCbGFzdGVyIFgtRmkgWHRyZW1lTXVzaWMKKworICAgIHJlZmVyZW5jZV9yYXRlCS0gcmVmZXJlbmNlIHNhbXBsZSByYXRlLCA0NDEwMCBvciA0ODAwMCAoZGVmYXVsdCkKKyAgICBtdWx0aXBsZQkJLSBtdWx0aXBsZSB0byByZWYuIHNhbXBsZSByYXRlLCAxIG9yIDIgKGRlZmF1bHQpCisgICAgc3Vic3lzdGVtCQktIG92ZXJyaWRlIHRoZSBQQ0kgU1NJRCBmb3IgcHJvYmluZzsgdGhlIHZhbHVlCisJCQkgIGNvbnNpc3RzIG9mIFNTVklEIDw8IDE2IHwgU1NESUQuICBUaGUgZGVmYXVsdCBpcworCQkJICB6ZXJvLCB3aGljaCBtZWFucyBubyBvdmVycmlkZS4KKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzLgorCisgIE1vZHVsZSBzbmQtZGFybGEyMAorICAtLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgRWNob2F1ZGlvIERhcmxhMjAKKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzLgorICAgIFRoZSBkcml2ZXIgcmVxdWlyZXMgdGhlIGZpcm13YXJlIGxvYWRlciBzdXBwb3J0IG9uIGtlcm5lbC4KKworICBNb2R1bGUgc25kLWRhcmxhMjQKKyAgLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIEVjaG9hdWRpbyBEYXJsYTI0CisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcy4KKyAgICBUaGUgZHJpdmVyIHJlcXVpcmVzIHRoZSBmaXJtd2FyZSBsb2FkZXIgc3VwcG9ydCBvbiBrZXJuZWwuCisKKyAgTW9kdWxlIHNuZC1kdDAxOXgKKyAgLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgRGlhbW9uZCBUZWNobm9sb2dpZXMgRFQtMDE5WCAvIEF2YW5jZSBMb2dpYyBBTFMtMDA3IChQblAKKyAgICBvbmx5KQorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMuICBUaGlzIG1vZHVsZSBpcyBlbmFibGVkIG9ubHkgd2l0aAorICAgIElTQSBQblAgc3VwcG9ydC4KKworICAgIFRoZSBwb3dlci1tYW5hZ2VtZW50IGlzIHN1cHBvcnRlZC4KKworICBNb2R1bGUgc25kLWR1bW15CisgIC0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgdGhlIGR1bW15IHNvdW5kIGNhcmQuIFRoaXMgImNhcmQiIGRvZXNuJ3QgZG8gYW55IG91dHB1dAorICAgIG9yIGlucHV0LCBidXQgeW91IG1heSB1c2UgdGhpcyBtb2R1bGUgZm9yIGFueSBhcHBsaWNhdGlvbiB3aGljaAorICAgIHJlcXVpcmVzIGEgc291bmQgY2FyZCAobGlrZSBSZWFsUGxheWVyKS4KKworICAgIHBjbV9kZXZzICAgICAgIC0gTnVtYmVyIG9mIFBDTSBkZXZpY2VzIGFzc2lnbmVkIHRvIGVhY2ggY2FyZAorICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgPSAxLCB1cCB0byA0KQorICAgIHBjbV9zdWJzdHJlYW1zIC0gTnVtYmVyIG9mIFBDTSBzdWJzdHJlYW1zIGFzc2lnbmVkIHRvIGVhY2ggUENNCisgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCA9IDgsIHVwIHRvIDEyOCkKKyAgICBocnRpbWVyICAgICAgICAtIFVzZSBocnRpbWVyICg9MSwgZGVmYXVsdCkgb3Igc3lzdGVtIHRpbWVyICg9MCkKKyAgICBmYWtlX2J1ZmZlciAgICAtIEZha2UgYnVmZmVyIGFsbG9jYXRpb25zIChkZWZhdWx0ID0gMSkKKworICAgIFdoZW4gbXVsdGlwbGUgUENNIGRldmljZXMgYXJlIGNyZWF0ZWQsIHNuZC1kdW1teSBnaXZlcyBkaWZmZXJlbnQKKyAgICBiZWhhdmlvciB0byBlYWNoIFBDTSBkZXZpY2U6CisgICAgICAwID0gaW50ZXJsZWF2ZWQgd2l0aCBtbWFwIHN1cHBvcnQKKyAgICAgIDEgPSBub24taW50ZXJsZWF2ZWQgd2l0aCBtbWFwIHN1cHBvcnQKKyAgICAgIDIgPSBpbnRlcmxlYXZlZCB3aXRob3V0IG1tYXAgCisgICAgICAzID0gbm9uLWludGVybGVhdmVkIHdpdGhvdXQgbW1hcAorCisgICAgQXMgZGVmYXVsdCwgc25kLWR1bW15IGRyaXZlcnMgZG9lc24ndCBhbGxvY2F0ZSB0aGUgcmVhbCBidWZmZXJzCisgICAgYnV0IGVpdGhlciBpZ25vcmVzIHJlYWQvd3JpdGUgb3IgbW1hcCBhIHNpbmdsZSBkdW1teSBwYWdlIHRvIGFsbAorICAgIGJ1ZmZlciBwYWdlcywgaW4gb3JkZXIgdG8gc2F2ZSB0aGUgcmVzb3VyY2VzLiAgSWYgeW91ciBhcHBzIG5lZWQKKyAgICB0aGUgcmVhZC8gd3JpdHRlbiBidWZmZXIgZGF0YSB0byBiZSBjb25zaXN0ZW50LCBwYXNzIGZha2VfYnVmZmVyPTAKKyAgICBvcHRpb24uCisKKyAgICBUaGUgcG93ZXItbWFuYWdlbWVudCBpcyBzdXBwb3J0ZWQuCisKKyAgTW9kdWxlIHNuZC1lY2hvM2cKKyAgLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgRWNob2F1ZGlvIDNHIGNhcmRzIChHaW5hM0cvTGF5bGEzRykKKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzLgorICAgIFRoZSBkcml2ZXIgcmVxdWlyZXMgdGhlIGZpcm13YXJlIGxvYWRlciBzdXBwb3J0IG9uIGtlcm5lbC4KKworICBNb2R1bGUgc25kLWVtdTEwazEKKyAgLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIEVNVTEwSzEvRU1VMTBrMiBiYXNlZCBQQ0kgc291bmQgY2FyZHMuCisJCQkqIFNvdW5kIEJsYXN0ZXIgTGl2ZSEKKwkJCSogU291bmQgQmxhc3RlciBQQ0kgNTEyCisJCQkqIEVtdSBBUFMgKHBhcnRpYWxseSBzdXBwb3J0ZWQpCisJCQkqIFNvdW5kIEJsYXN0ZXIgQXVkaWd5CisKKyAgICBleHRpbiAgIC0gYml0bWFwIG9mIGF2YWlsYWJsZSBleHRlcm5hbCBpbnB1dHMgZm9yIEZYODAxMCAoc2VlIGJlbGxvdykKKyAgICBleHRvdXQgIC0gYml0bWFwIG9mIGF2YWlsYWJsZSBleHRlcm5hbCBvdXRwdXRzIGZvciBGWDgwMTAgKHNlZSBiZWxsb3cpCisgICAgc2VxX3BvcnRzIC0gYWxsb2NhdGVkIHNlcXVlbmNlciBwb3J0cyAoNCBieSBkZWZhdWx0KQorICAgIG1heF9zeW50aF92b2ljZXMgLSBsaW1pdCBvZiB2b2ljZXMgdXNlZCBmb3Igd2F2ZXRhYmxlICg2NCBieSBkZWZhdWx0KQorICAgIG1heF9idWZmZXJfc2l6ZSAgLSBzcGVjaWZpZXMgdGhlIG1heGltdW0gc2l6ZSBvZiB3YXZldGFibGUvcGNtIGJ1ZmZlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgZ2l2ZW4gaW4gTUIgdW5pdC4gIERlZmF1bHQgdmFsdWUgaXMgMTI4LgorICAgIGVuYWJsZV9pciAtIGVuYWJsZSBJUgorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMgYW5kIGF1dG9wcm9iZS4KKworICAgIElucHV0ICYgT3V0cHV0IGNvbmZpZ3VyYXRpb25zIAkJCVtleHRpbi9leHRvdXRdCisJKiBDcmVhdGl2ZSBDYXJkIHdvL0RpZ2l0YWwgb3V0CQkJWzB4MDAwMy8weDFmMDNdCisJKiBDcmVhdGl2ZSBDYXJkIHcvRGlnaXRhbCBvdXQJCQlbMHgwMDAzLzB4MWYwZl0KKwkqIENyZWF0aXZlIENhcmQgdy9EaWdpdGFsIENEIGluCQkJWzB4MDAwZi8weDFmMGZdCisJKiBDcmVhdGl2ZSBDYXJkIHdvL0RpZ2l0YWwgb3V0ICsgTGl2ZURyaXZlCVsweDNmYzMvMHgxZmMzXQorCSogQ3JlYXRpdmUgQ2FyZCB3L0RpZ2l0YWwgb3V0ICsgTGl2ZURyaXZlCVsweDNmYzMvMHgxZmNmXQorCSogQ3JlYXRpdmUgQ2FyZCB3L0RpZ2l0YWwgQ0QgaW4gKyBMaXZlRHJpdmUJWzB4M2ZjZi8weDFmY2ZdCisJKiBDcmVhdGl2ZSBDYXJkIHdvL0RpZ2l0YWwgb3V0ICsgRGlnaXRhbCBJL08gMiAgWzB4MGZjMy8weDFmMGZdCisJKiBDcmVhdGl2ZSBDYXJkIHcvRGlnaXRhbCBvdXQgKyBEaWdpdGFsIEkvTyAyCVsweDBmYzMvMHgxZjBmXQorCSogQ3JlYXRpdmUgQ2FyZCB3L0RpZ2l0YWwgQ0QgaW4gKyBEaWdpdGFsIEkvTyAyCVsweDBmY2YvMHgxZjBmXQorICAgICAgICAqIENyZWF0aXZlIENhcmQgNS4xL3cgRGlnaXRhbCBvdXQgKyBMaXZlRHJpdmUJWzB4M2ZjMy8weDFmZmZdCisJKiBDcmVhdGl2ZSBDYXJkIDUuMSAoYykgMjAwMwkJCVsweDNmYzMvMHg3Y2ZmXQorICAgICAgICAqIENyZWF0aXZlIENhcmQgYWxsIGlucyBhbmQgb3V0cwkJWzB4M2ZmZi8weDdmZmZdCisgICAgCisgICAgVGhlIHBvd2VyLW1hbmFnZW1lbnQgaXMgc3VwcG9ydGVkLgorCisgIE1vZHVsZSBzbmQtZW11MTBrMXgKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBDcmVhdGl2ZSBFbXUxMGsxWCAoU0IgTGl2ZSBEZWxsIE9FTSB2ZXJzaW9uKQorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMuCisKKyAgTW9kdWxlIHNuZC1lbnMxMzcwCisgIC0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBFbnNvbmlxIEF1ZGlvUENJIEVTMTM3MCBQQ0kgc291bmQgY2FyZHMuCisJCQkqIFNvdW5kQmxhc3RlciBQQ0kgNjQKKwkJCSogU291bmRCbGFzdGVyIFBDSSAxMjgKKworICAgIGpveXN0aWNrCQktIEVuYWJsZSBqb3lzdGljayAoZGVmYXVsdCBvZmYpCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcyBhbmQgYXV0b3Byb2JlLgorICAgIAorICAgIFRoZSBwb3dlci1tYW5hZ2VtZW50IGlzIHN1cHBvcnRlZC4KKworICBNb2R1bGUgc25kLWVuczEzNzEKKyAgLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIEVuc29uaXEgQXVkaW9QQ0kgRVMxMzcxIFBDSSBzb3VuZCBjYXJkcy4KKwkJCSogU291bmRCbGFzdGVyIFBDSSA2NAorCQkJKiBTb3VuZEJsYXN0ZXIgUENJIDEyOAorCQkJKiBTb3VuZEJsYXN0ZXIgVmlicmEgUENJCisKKyAgICBqb3lzdGlja19wb3J0CS0gcG9ydCAjIGZvciBqb3lzdGljayAoMHgyMDAsMHgyMDgsMHgyMTAsMHgyMTgpLAorCQkJICAwID0gZGlzYWJsZSAoZGVmYXVsdCksIDEgPSBhdXRvLWRldGVjdAorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMgYW5kIGF1dG9wcm9iZS4KKyAgICAKKyAgICBUaGUgcG93ZXItbWFuYWdlbWVudCBpcyBzdXBwb3J0ZWQuCisKKyAgTW9kdWxlIHNuZC1lczE2ODgKKyAgLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgRVNTIEF1ZGlvRHJpdmUgRVMtMTY4OCBhbmQgRVMtNjg4IHNvdW5kIGNhcmRzLgorCisgICAgaXNhcG5wCS0gSVNBIFBuUCBkZXRlY3Rpb24gLSAwID0gZGlzYWJsZSwgMSA9IGVuYWJsZSAoZGVmYXVsdCkKKyAgICBtcHVfcG9ydAktIHBvcnQgIyBmb3IgTVBVLTQwMSBwb3J0ICgweDMwMCwweDMxMCwweDMyMCwweDMzMCksIC0xID0gZGlzYWJsZSAoZGVmYXVsdCkKKyAgICBtcHVfaXJxCS0gSVJRICMgZm9yIE1QVS00MDEgcG9ydCAoNSw3LDksMTApCisgICAgZm1fcG9ydAktIHBvcnQgIyBmb3IgT1BMMyAob3B0aW9uOyBzaGFyZSB0aGUgc2FtZSBwb3J0IGFzIGRlZmF1bHQpCisKKyAgICB3aXRoIGlzYXBucD0wLCB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgb3B0aW9ucyBhcmUgYXZhaWxhYmxlOgorICAgIHBvcnQJLSBwb3J0ICMgZm9yIEVTLTE2ODggY2hpcCAoMHgyMjAsMHgyNDAsMHgyNjApCisgICAgaXJxCQktIElSUSAjIGZvciBFUy0xNjg4IGNoaXAgKDUsNyw5LDEwKQorICAgIGRtYTgJLSBETUEgIyBmb3IgRVMtMTY4OCBjaGlwICgwLDEsMykKKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzIGFuZCBhdXRvcHJvYmUgKHdpdGhvdXQgTVBVLTQwMSBwb3J0KQorICAgIGFuZCBQblAgd2l0aCB0aGUgRVM5NjggY2hpcC4KKworICBNb2R1bGUgc25kLWVzMTh4eAorICAtLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBFU1MgQXVkaW9Ecml2ZSBFUy0xOHh4IHNvdW5kIGNhcmRzLgorCisgICAgaXNhcG5wCS0gSVNBIFBuUCBkZXRlY3Rpb24gLSAwID0gZGlzYWJsZSwgMSA9IGVuYWJsZSAoZGVmYXVsdCkKKworICAgIHdpdGggaXNhcG5wPTAsIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgYXZhaWxhYmxlOgorCisgICAgcG9ydAktIHBvcnQgIyBmb3IgRVMtMTh4eCBjaGlwICgweDIyMCwweDI0MCwweDI2MCkKKyAgICBtcHVfcG9ydAktIHBvcnQgIyBmb3IgTVBVLTQwMSBwb3J0ICgweDMwMCwweDMxMCwweDMyMCwweDMzMCksIC0xID0gZGlzYWJsZSAoZGVmYXVsdCkKKyAgICBmbV9wb3J0CS0gcG9ydCAjIGZvciBGTSAob3B0aW9uYWwsIG5vdCB1c2VkKQorICAgIGlycQkJLSBJUlEgIyBmb3IgRVMtMTh4eCBjaGlwICg1LDcsOSwxMCkKKyAgICBkbWExCS0gZmlyc3QgRE1BICMgZm9yIEVTLTE4eHggY2hpcCAoMCwxLDMpCisgICAgZG1hMgktIGZpcnN0IERNQSAjIGZvciBFUy0xOHh4IGNoaXAgKDAsMSwzKQorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMsIElTQSBQblAgYW5kIGF1dG9wcm9iZSAod2l0aG91dCBNUFUtNDAxCisgICAgcG9ydCBpZiBuYXRpdmUgSVNBIFBuUCByb3V0aW5lcyBhcmUgbm90IHVzZWQpLgorICAgIFdoZW4gZG1hMiBpcyBlcXVhbCB3aXRoIGRtYTEsIHRoZSBkcml2ZXIgd29ya3MgYXMgaGFsZi1kdXBsZXguCisKKyAgICBUaGUgcG93ZXItbWFuYWdlbWVudCBpcyBzdXBwb3J0ZWQuCisKKyAgTW9kdWxlIHNuZC1lczE5MzgKKyAgLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3Igc291bmQgY2FyZHMgYmFzZWQgb24gRVNTIFNvbG8tMSAoRVMxOTM4LEVTMTk0NikgY2hpcHMuCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcyBhbmQgYXV0b3Byb2JlLgorCisgICAgVGhlIHBvd2VyLW1hbmFnZW1lbnQgaXMgc3VwcG9ydGVkLgorCisgIE1vZHVsZSBzbmQtZXMxOTY4CisgIC0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIHNvdW5kIGNhcmRzIGJhc2VkIG9uIEVTUyBNYWVzdHJvLTEvMi8yRSAoRVMxOTY4L0VTMTk3OCkgY2hpcHMuCisKKyAgICB0b3RhbF9idWZzaXplCS0gdG90YWwgYnVmZmVyIHNpemUgaW4ga0IgKDEtNDA5NmtCKQorICAgIHBjbV9zdWJzdHJlYW1zX3AJLSBwbGF5YmFjayBjaGFubmVscyAoMS04LCBkZWZhdWx0PTIpCisgICAgcGNtX3N1YnN0cmVhbXNfYwktIGNhcHR1cmUgY2hhbm5lbHMgKDEtOCwgZGVmYXVsdD0wKQorICAgIGNsb2NrCQktIGNsb2NrICgwID0gYXV0by1kZXRlY3Rpb24pCisgICAgdXNlX3BtCQktIHN1cHBvcnQgdGhlIHBvd2VyLW1hbmFnZW1lbnQgKDAgPSBvZmYsIDEgPSBvbiwKKwkJCSAgMiA9IGF1dG8gKGRlZmF1bHQpKQorICAgIGVuYWJsZV9tcHUJCS0gZW5hYmxlIE1QVTQwMSAoMCA9IG9mZiwgMSA9IG9uLCAyID0gYXV0byAoZGVmYXVsdCkpCisgICAgam95c3RpY2sJCS0gZW5hYmxlIGpveXN0aWNrIChkZWZhdWx0IG9mZikgICAgICAgCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcyBhbmQgYXV0b3Byb2JlLgorCisgICAgVGhlIHBvd2VyLW1hbmFnZW1lbnQgaXMgc3VwcG9ydGVkLgorCisgIE1vZHVsZSBzbmQtZm04MDEKKyAgLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBGb3J0ZU1lZGlhIEZNODAxIGJhc2VkIFBDSSBzb3VuZCBjYXJkcy4KKworICAgIHRlYTU3NXhfdHVuZXIgICAgICAgLSBFbmFibGUgVEVBNTc1eCB0dW5lcgorICAgICAgICAgICAgICAgICAgICAgICAgICAtIDEgPSBNZWRpYUZvcnRlIDI1Ni1QQ1MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLSAyID0gTWVkaWFGb3J0ZSAyNTYtUENQUgorICAgICAgICAgICAgICAgICAgICAgICAgICAtIDMgPSBNZWRpYUZvcnRlIDY0LVBDUiAgCisgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSGlnaCAxNi1iaXRzIGFyZSB2aWRlbyAocmFkaW8pIGRldmljZSBudW1iZXIgKyAxCisgICAgICAgICAgICAgICAgICAgICAgICAgIC0gZXhhbXBsZTogMHgxMDAwMiAoTWVkaWFGb3J0ZSAyNTYtUENQUiwgZGV2aWNlIDEpCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcyBhbmQgYXV0b3Byb2JlLgorICAgIAorICAgIFRoZSBwb3dlci1tYW5hZ2VtZW50IGlzIHN1cHBvcnRlZC4KKworICBNb2R1bGUgc25kLWdpbmEyMAorICAtLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBFY2hvYXVkaW8gR2luYTIwCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcy4KKyAgICBUaGUgZHJpdmVyIHJlcXVpcmVzIHRoZSBmaXJtd2FyZSBsb2FkZXIgc3VwcG9ydCBvbiBrZXJuZWwuCisKKyAgTW9kdWxlIHNuZC1naW5hMjQKKyAgLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgRWNob2F1ZGlvIEdpbmEyNAorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMuCisgICAgVGhlIGRyaXZlciByZXF1aXJlcyB0aGUgZmlybXdhcmUgbG9hZGVyIHN1cHBvcnQgb24ga2VybmVsLgorCisgIE1vZHVsZSBzbmQtZ3VzY2xhc3NpYworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgR3JhdmlzIFVsdHJhU291bmQgQ2xhc3NpYyBzb3VuZCBjYXJkLgorCisgICAgcG9ydAktIHBvcnQgIyBmb3IgR0YxIGNoaXAgKDB4MjIwLDB4MjMwLDB4MjQwLDB4MjUwLDB4MjYwKQorICAgIGlycQkJLSBJUlEgIyBmb3IgR0YxIGNoaXAgKDMsNSw5LDExLDEyLDE1KQorICAgIGRtYTEJLSBETUEgIyBmb3IgR0YxIGNoaXAgKDEsMyw1LDYsNykKKyAgICBkbWEyCS0gRE1BICMgZm9yIEdGMSBjaGlwICgxLDMsNSw2LDcsLTE9ZGlzYWJsZSkKKyAgICBqb3lzdGlja19kYWMgLSAwIHRvIDMxLCAoMC41OVYtNC41MlYgb3IgMC4zODlWLTIuOThWKQorICAgIHZvaWNlcwktIEdGMSB2b2ljZXMgbGltaXQgKDE0LTMyKQorICAgIHBjbV92b2ljZXMJLSByZXNlcnZlZCBQQ00gdm9pY2VzCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcyBhbmQgYXV0b3Byb2JlLgorCisgIE1vZHVsZSBzbmQtZ3VzZXh0cmVtZQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgR3JhdmlzIFVsdHJhU291bmQgRXh0cmVtZSAoU3luZXJneSBWaXBlck1heCkgc291bmQgY2FyZC4KKworICAgIHBvcnQJLSBwb3J0ICMgZm9yIEVTLTE2ODggY2hpcCAoMHgyMjAsMHgyMzAsMHgyNDAsMHgyNTAsMHgyNjApCisgICAgZ2YxX3BvcnQJLSBwb3J0ICMgZm9yIEdGMSBjaGlwICgweDIxMCwweDIyMCwweDIzMCwweDI0MCwweDI1MCwweDI2MCwweDI3MCkKKyAgICBtcHVfcG9ydAktIHBvcnQgIyBmb3IgTVBVLTQwMSBwb3J0ICgweDMwMCwweDMxMCwweDMyMCwweDMzMCksIC0xID0gZGlzYWJsZQorICAgIGlycQkJLSBJUlEgIyBmb3IgRVMtMTY4OCBjaGlwICg1LDcsOSwxMCkKKyAgICBnZjFfaXJxCS0gSVJRICMgZm9yIEdGMSBjaGlwICgzLDUsOSwxMSwxMiwxNSkKKyAgICBtcHVfaXJxCS0gSVJRICMgZm9yIE1QVS00MDEgcG9ydCAoNSw3LDksMTApCisgICAgZG1hOAktIERNQSAjIGZvciBFUy0xNjg4IGNoaXAgKDAsMSwzKQorICAgIGRtYTEJLSBETUEgIyBmb3IgR0YxIGNoaXAgKDEsMyw1LDYsNykKKyAgICBqb3lzdGlja19kYWMgLSAwIHRvIDMxLCAoMC41OVYtNC41MlYgb3IgMC4zODlWLTIuOThWKQorICAgIHZvaWNlcwktIEdGMSB2b2ljZXMgbGltaXQgKDE0LTMyKQorICAgIHBjbV92b2ljZXMJLSByZXNlcnZlZCBQQ00gdm9pY2VzCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcyBhbmQgYXV0b3Byb2JlICh3aXRob3V0IE1QVS00MDEgcG9ydCkuCisKKyAgTW9kdWxlIHNuZC1ndXNtYXgKKyAgLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgR3JhdmlzIFVsdHJhU291bmQgTUFYIHNvdW5kIGNhcmQuCisKKyAgICBwb3J0CS0gcG9ydCAjIGZvciBHRjEgY2hpcCAoMHgyMjAsMHgyMzAsMHgyNDAsMHgyNTAsMHgyNjApCisgICAgaXJxCQktIElSUSAjIGZvciBHRjEgY2hpcCAoMyw1LDksMTEsMTIsMTUpCisgICAgZG1hMQktIERNQSAjIGZvciBHRjEgY2hpcCAoMSwzLDUsNiw3KQorICAgIGRtYTIJLSBETUEgIyBmb3IgR0YxIGNoaXAgKDEsMyw1LDYsNywtMT1kaXNhYmxlKQorICAgIGpveXN0aWNrX2RhYyAtIDAgdG8gMzEsICgwLjU5Vi00LjUyViBvciAwLjM4OVYtMi45OFYpCisgICAgdm9pY2VzCS0gR0YxIHZvaWNlcyBsaW1pdCAoMTQtMzIpCisgICAgcGNtX3ZvaWNlcwktIHJlc2VydmVkIFBDTSB2b2ljZXMKKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzIGFuZCBhdXRvcHJvYmUuCisgICAgCisgIE1vZHVsZSBzbmQtaGRhLWludGVsCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIEludGVsIEhEIEF1ZGlvIChJQ0g2LCBJQ0g2TSwgRVNCMiwgSUNINywgSUNIOCwgSUNIOSwgSUNIMTAsCisJCQlQQ0gsIFNDSCksCisJCUFUSSBTQjQ1MCwgU0I2MDAsIFI2MDAsIFJTNjAwLCBSUzY5MCwgUlM3ODAsIFJWNjEwLCBSVjYyMCwKKwkJCVJWNjMwLCBSVjYzNSwgUlY2NzAsIFJWNzcwLAorCQlWSUEgVlQ4MjUxL1ZUODIzN0EsCisJCVNJUzk2NiwgVUxJIE01NDYxCisKKyAgICBbTXVsdGlwbGUgb3B0aW9ucyBmb3IgZWFjaCBjYXJkIGluc3RhbmNlXQorICAgIG1vZGVsCS0gZm9yY2UgdGhlIG1vZGVsIG5hbWUKKyAgICBwb3NpdGlvbl9maXggLSBGaXggRE1BIHBvaW50ZXIKKwkJICAtMSA9IHN5c3RlbSBkZWZhdWx0OiBjaG9vc2UgYXBwcm9wcmlhdGUgb25lIHBlciBjb250cm9sbGVyCisJCQloYXJkd2FyZQorCQkgIDAgPSBhdXRvOiBmYWxscyBiYWNrIHRvIExQSUIgd2hlbiBQT1NCVUYgZG9lc24ndCB3b3JrCisJCSAgMSA9IHVzZSBMUElCCisJCSAgMiA9IFBPU0JVRjogdXNlIHBvc2l0aW9uIGJ1ZmZlcgorCQkgIDMgPSBWSUFDT01CTzogVklBLXNwZWNpZmljIHdvcmthcm91bmQgZm9yIGNhcHR1cmUKKwkJICA0ID0gQ09NQk86IHVzZSBMUElCIGZvciBwbGF5YmFjaywgYXV0byBmb3IgY2FwdHVyZSBzdHJlYW0KKyAgICBwcm9iZV9tYXNrICAtIEJpdG1hc2sgdG8gcHJvYmUgY29kZWNzIChkZWZhdWx0ID0gLTEsIG1lYW5pbmcgYWxsIHNsb3RzKQorICAgIAkJICBXaGVuIHRoZSBiaXQgOCAoMHgxMDApIGlzIHNldCwgdGhlIGxvd2VyIDggYml0cyBhcmUgdXNlZAorCQkgIGFzIHRoZSAiZml4ZWQiIGNvZGVjIHNsb3RzOyBpLmUuIHRoZSBkcml2ZXIgcHJvYmVzIHRoZQorCQkgIHNsb3RzIHJlZ2FyZGxlc3Mgd2hhdCBoYXJkd2FyZSByZXBvcnRzIGJhY2sKKyAgICBwcm9iZV9vbmx5CS0gT25seSBwcm9iaW5nIGFuZCBubyBjb2RlYyBpbml0aWFsaXphdGlvbiAoZGVmYXVsdD1vZmYpOworCQkgIFVzZWZ1bCB0byBjaGVjayB0aGUgaW5pdGlhbCBjb2RlYyBzdGF0dXMgZm9yIGRlYnVnZ2luZworICAgIGJkbF9wb3NfYWRqCS0gU3BlY2lmaWVzIHRoZSBETUEgSVJRIHRpbWluZyBkZWxheSBpbiBzYW1wbGVzLgorCQlQYXNzaW5nIC0xIHdpbGwgbWFrZSB0aGUgZHJpdmVyIHRvIGNob29zZSB0aGUgYXBwcm9wcmlhdGUKKwkJdmFsdWUgYmFzZWQgb24gdGhlIGNvbnRyb2xsZXIgY2hpcC4KKyAgICBwYXRjaAktIFNwZWNpZmllcyB0aGUgZWFybHkgInBhdGNoIiBmaWxlcyB0byBtb2RpZnkgdGhlIEhELWF1ZGlvCisgICAgCQlzZXR1cCBiZWZvcmUgaW5pdGlhbGl6aW5nIHRoZSBjb2RlY3MuICBUaGlzIG9wdGlvbiBpcworCQlhdmFpbGFibGUgb25seSB3aGVuIENPTkZJR19TTkRfSERBX1BBVENIX0xPQURFUj15IGlzIHNldC4KKwkJU2VlIEhELUF1ZGlvLnR4dCBmb3IgZGV0YWlscy4KKyAgICBiZWVwX21vZGUJLSBTZWxlY3RzIHRoZSBiZWVwIHJlZ2lzdHJhdGlvbiBtb2RlICgwPW9mZiwgMT1vbik7IGRlZmF1bHQKKwkJdmFsdWUgaXMgc2V0IHZpYSBDT05GSUdfU05EX0hEQV9JTlBVVF9CRUVQX01PREUga2NvbmZpZy4KKyAgICAKKyAgICBbU2luZ2xlIChnbG9iYWwpIG9wdGlvbnNdCisgICAgc2luZ2xlX2NtZCAgLSBVc2Ugc2luZ2xlIGltbWVkaWF0ZSBjb21tYW5kcyB0byBjb21tdW5pY2F0ZSB3aXRoCisJCWNvZGVjcyAoZm9yIGRlYnVnZ2luZyBvbmx5KQorICAgIGVuYWJsZV9tc2kJLSBFbmFibGUgTWVzc2FnZSBTaWduYWxlZCBJbnRlcnJ1cHQgKE1TSSkgKGRlZmF1bHQgPSBvZmYpCisgICAgcG93ZXJfc2F2ZQktIEF1dG9tYXRpYyBwb3dlci1zYXZpbmcgdGltZW91dCAoaW4gc2Vjb25kLCAwID0KKwkJZGlzYWJsZSkKKyAgICBwb3dlcl9zYXZlX2NvbnRyb2xsZXIgLSBSZXNldCBIRC1hdWRpbyBjb250cm9sbGVyIGluIHBvd2VyLXNhdmluZyBtb2RlCisJCShkZWZhdWx0ID0gb24pCisgICAgYWxpZ25fYnVmZmVyX3NpemUgLSBGb3JjZSByb3VuZGluZyBvZiBidWZmZXIvcGVyaW9kIHNpemVzIHRvIG11bHRpcGxlcworICAgIAkJICAgICAgb2YgMTI4IGJ5dGVzLiBUaGlzIGlzIG1vcmUgZWZmaWNpZW50IGluIHRlcm1zIG9mIG1lbW9yeQorCQkgICAgICBhY2Nlc3MgYnV0IGlzbid0IHJlcXVpcmVkIGJ5IHRoZSBIREEgc3BlYyBhbmQgcHJldmVudHMKKwkJICAgICAgdXNlcnMgZnJvbSBzcGVjaWZ5aW5nIGV4YWN0IHBlcmlvZC9idWZmZXIgc2l6ZXMuCisJCSAgICAgIChkZWZhdWx0ID0gb24pCisgICAgc25vb3AJLSBFbmFibGUvZGlzYWJsZSBzbm9vcGluZyAoZGVmYXVsdCA9IG9uKQorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMgYW5kIGF1dG9wcm9iZS4KKyAgICAKKyAgICBTZWUgRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL0hELUF1ZGlvLnR4dCBmb3IgbW9yZSBkZXRhaWxzIGFib3V0CisgICAgSEQtYXVkaW8gZHJpdmVyLgorCisgICAgRWFjaCBjb2RlYyBtYXkgaGF2ZSBhIG1vZGVsIHRhYmxlIGZvciBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMuCisgICAgSWYgeW91ciBtYWNoaW5lIGlzbid0IGxpc3RlZCB0aGVyZSwgdGhlIGRlZmF1bHQgKHVzdWFsbHkgbWluaW1hbCkKKyAgICBjb25maWd1cmF0aW9uIGlzIHNldCB1cC4gIFlvdSBjYW4gcGFzcyAibW9kZWw9PG5hbWU+IiBvcHRpb24gdG8KKyAgICBzcGVjaWZ5IGEgY2VydGFpbiBtb2RlbCBpbiBzdWNoIGEgY2FzZS4gIFRoZXJlIGFyZSBkaWZmZXJlbnQKKyAgICBtb2RlbHMgZGVwZW5kaW5nIG9uIHRoZSBjb2RlYyBjaGlwLiAgVGhlIGxpc3Qgb2YgYXZhaWxhYmxlIG1vZGVscworICAgIGlzIGZvdW5kIGluIEhELUF1ZGlvLU1vZGVscy50eHQKKworICAgIFRoZSBtb2RlbCBuYW1lICJnZW5lcmljIiBpcyB0cmVhdGVkIGFzIGEgc3BlY2lhbCBjYXNlLiAgV2hlbiB0aGlzCisgICAgbW9kZWwgaXMgZ2l2ZW4sIHRoZSBkcml2ZXIgdXNlcyB0aGUgZ2VuZXJpYyBjb2RlYyBwYXJzZXIgd2l0aG91dAorICAgICJjb2RlYy1wYXRjaCIuICBJdCdzIHNvbWV0aW1lcyBnb29kIGZvciB0ZXN0aW5nIGFuZCBkZWJ1Z2dpbmcuCisKKyAgICBJZiB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIGRvZXNuJ3Qgd29yayBhbmQgb25lIG9mIHRoZSBhYm92ZQorICAgIG1hdGNoZXMgd2l0aCB5b3VyIGRldmljZSwgcmVwb3J0IGl0IHRvZ2V0aGVyIHdpdGggYWxzYS1pbmZvLnNoCisgICAgb3V0cHV0ICh3aXRoIC0tbm8tdXBsb2FkIG9wdGlvbikgdG8ga2VybmVsIGJ1Z3ppbGxhIG9yIGFsc2EtZGV2ZWwKKyAgICBNTCAoc2VlIHRoZSBzZWN0aW9uICJMaW5rcyBhbmQgQWRkcmVzc2VzIikuCisKKyAgICBwb3dlcl9zYXZlIGFuZCBwb3dlcl9zYXZlX2NvbnRyb2xsZXIgb3B0aW9ucyBhcmUgZm9yIHBvd2VyLXNhdmluZworICAgIG1vZGUuICBTZWUgcG93ZXJzYXZlLnR4dCBmb3IgZGV0YWlscy4KKworICAgIE5vdGUgMjogSWYgeW91IGdldCBjbGljayBub2lzZXMgb24gb3V0cHV0LCB0cnkgdGhlIG1vZHVsZSBvcHRpb24KKwkgICAgcG9zaXRpb25fZml4PTEgb3IgMi4gIHBvc2l0aW9uX2ZpeD0xIHdpbGwgdXNlIHRoZSBTRF9MUElCCisJICAgIHJlZ2lzdGVyIHZhbHVlIHdpdGhvdXQgRklGTyBzaXplIGNvcnJlY3Rpb24gYXMgdGhlIGN1cnJlbnQKKwkgICAgRE1BIHBvaW50ZXIuICBwb3NpdGlvbl9maXg9MiB3aWxsIG1ha2UgdGhlIGRyaXZlciB0byB1c2UKKwkgICAgdGhlIHBvc2l0aW9uIGJ1ZmZlciBpbnN0ZWFkIG9mIHJlYWRpbmcgU0RfTFBJQiByZWdpc3Rlci4KKwkgICAgKFVzdWFsbHkgU0RfTFBJQiByZWdpc3RlciBpcyBtb3JlIGFjY3VyYXRlIHRoYW4gdGhlCisJICAgIHBvc2l0aW9uIGJ1ZmZlci4pCisKKwkgICAgcG9zaXRpb25fZml4PTMgaXMgc3BlY2lmaWMgdG8gVklBIGRldmljZXMuICBUaGUgcG9zaXRpb24KKwkgICAgb2YgdGhlIGNhcHR1cmUgc3RyZWFtIGlzIGNoZWNrZWQgZnJvbSBib3RoIExQSUIgYW5kIFBPU0JVRgorCSAgICB2YWx1ZXMuICBwb3NpdGlvbl9maXg9NCBpcyBhIGNvbWJpbmF0aW9uIG1vZGUsIHVzaW5nIExQSUIKKwkgICAgZm9yIHBsYXliYWNrIGFuZCBQT1NCVUYgZm9yIGNhcHR1cmUuCisKKyAgICBOQjogSWYgeW91IGdldCBtYW55ICJhenhfZ2V0X3Jlc3BvbnNlIHRpbWVvdXQiIG1lc3NhZ2VzIGF0CisgICAgbG9hZGluZywgaXQncyBsaWtlbHkgYSBwcm9ibGVtIG9mIGludGVycnVwdHMgKGUuZy4gQUNQSSBpcnEKKyAgICByb3V0aW5nKS4gIFRyeSB0byBib290IHdpdGggb3B0aW9ucyBsaWtlICJwY2k9bm9hY3BpIi4gIEFsc28sIHlvdQorICAgIGNhbiB0cnkgInNpbmdsZV9jbWQ9MSIgbW9kdWxlIG9wdGlvbi4gIFRoaXMgd2lsbCBzd2l0Y2ggdGhlCisgICAgY29tbXVuaWNhdGlvbiBtZXRob2QgYmV0d2VlbiBIREEgY29udHJvbGxlciBhbmQgY29kZWNzIHRvIHRoZQorICAgIHNpbmdsZSBpbW1lZGlhdGUgY29tbWFuZHMgaW5zdGVhZCBvZiBDT1JCL1JJUkIuICBCYXNpY2FsbHksIHRoZQorICAgIHNpbmdsZSBjb21tYW5kIG1vZGUgaXMgcHJvdmlkZWQgb25seSBmb3IgQklPUywgYW5kIHlvdSB3b24ndCBnZXQKKyAgICB1bnNvbGljaXRlZCBldmVudHMsIHRvby4gIEJ1dCwgYXQgbGVhc3QsIHRoaXMgd29ya3MgaW5kZXBlbmRlbnRseQorICAgIGZyb20gdGhlIGlycS4gIFJlbWVtYmVyIHRoaXMgaXMgYSBsYXN0IHJlc29ydCwgYW5kIHNob3VsZCBiZQorICAgIGF2b2lkZWQgYXMgbXVjaCBhcyBwb3NzaWJsZS4uLgorICAgIAorICAgIE1PUkUgTk9URVMgT04gImF6eF9nZXRfcmVzcG9uc2UgdGltZW91dCIgUFJPQkxFTVM6CisgICAgT24gc29tZSBoYXJkd2FyZSwgeW91IG1heSBuZWVkIHRvIGFkZCBhIHByb3BlciBwcm9iZV9tYXNrIG9wdGlvbgorICAgIHRvIGF2b2lkIHRoZSAiYXp4X2dldF9yZXNwb25zZSB0aW1lb3V0IiBwcm9ibGVtIGFib3ZlLCBpbnN0ZWFkLgorICAgIFRoaXMgb2NjdXJzIHdoZW4gdGhlIGFjY2VzcyB0byBub24tZXhpc3Rpbmcgb3Igbm9uLXdvcmtpbmcgY29kZWMgc2xvdAorICAgIChsaWtlbHkgYSBtb2RlbSBvbmUpIGNhdXNlcyBhIHN0YWxsIG9mIHRoZSBjb21tdW5pY2F0aW9uIHZpYSBIRC1hdWRpbworICAgIGJ1cy4gIFlvdSBjYW4gc2VlIHdoaWNoIGNvZGVjIHNsb3RzIGFyZSBwcm9iZWQgYnkgZW5hYmxpbmcKKyAgICBDT05GSUdfU05EX0RFQlVHX1ZFUkJPU0UsIG9yIHNpbXBseSBmcm9tIHRoZSBmaWxlIG5hbWUgb2YgdGhlIGNvZGVjCisgICAgcHJvYyBmaWxlcy4gIFRoZW4gbGltaXQgdGhlIHNsb3RzIHRvIHByb2JlIGJ5IHByb2JlX21hc2sgb3B0aW9uLgorICAgIEZvciBleGFtcGxlLCBwcm9iZV9tYXNrPTEgbWVhbnMgdG8gcHJvYmUgb25seSB0aGUgZmlyc3Qgc2xvdCwgYW5kCisgICAgcHJvYmVfbWFzaz00IG1lYW5zIG9ubHkgdGhlIHRoaXJkIHNsb3QuCisKKyAgICBUaGUgcG93ZXItbWFuYWdlbWVudCBpcyBzdXBwb3J0ZWQuCisKKyAgTW9kdWxlIHNuZC1oZHNwCisgIC0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBSTUUgSGFtbWVyZmFsbCBEU1AgYXVkaW8gaW50ZXJmYWNlKHMpCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcy4KKworICAgIE5vdGU6IFRoZSBmaXJtd2FyZSBkYXRhIGNhbiBiZSBhdXRvbWF0aWNhbGx5IGxvYWRlZCB2aWEgaG90cGx1ZworICAgICAgICAgIHdoZW4gQ09ORklHX0ZXX0xPQURFUiBpcyBzZXQuICBPdGhlcndpc2UsIHlvdSBuZWVkIHRvIGxvYWQKKyAgICAgICAgICB0aGUgZmlybXdhcmUgdmlhIGhkc3Bsb2FkZXIgdXRpbGl0eSBpbmNsdWRlZCBpbiBhbHNhLXRvb2xzCisgICAgICAgICAgcGFja2FnZS4KKyAgICAgICAgICBUaGUgZmlybXdhcmUgZGF0YSBpcyBmb3VuZCBpbiBhbHNhLWZpcm13YXJlIHBhY2thZ2UuCisKKyAgICBOb3RlOiBzbmQtcGFnZS1hbGxvYyBtb2R1bGUgZG9lcyB0aGUgam9iIHdoaWNoIHNuZC1oYW1tZXJmYWxsLW1lbQorICAgICAgICAgIG1vZHVsZSBkaWQgZm9ybWVybHkuICBJdCB3aWxsIGFsbG9jYXRlIHRoZSBidWZmZXJzIGluIGFkdmFuY2UKKyAgICAgICAgICB3aGVuIGFueSBIRFNQIGNhcmRzIGFyZSBmb3VuZC4gIFRvIG1ha2UgdGhlIGJ1ZmZlcgorICAgICAgICAgIGFsbG9jYXRpb24gc3VyZSwgbG9hZCBzbmQtcGFnZS1hbGxvYyBtb2R1bGUgaW4gdGhlIGVhcmx5CisgICAgICAgICAgc3RhZ2Ugb2YgYm9vdCBzZXF1ZW5jZS4gIFNlZSAiRWFybHkgQnVmZmVyIEFsbG9jYXRpb24iCisJICBzZWN0aW9uLgorCisgIE1vZHVsZSBzbmQtaGRzcG0KKyAgLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBSTUUgSERTUCBNQURJIGJvYXJkLgorCisgICAgcHJlY2lzZV9wdHIJCS0gRW5hYmxlIHByZWNpc2UgcG9pbnRlciwgb3IgZGlzYWJsZS4KKyAgICBsaW5lX291dHNfbW9uaXRvcgktIFNlbmQgcGxheWJhY2sgc3RyZWFtcyB0byBhbmFsb2cgb3V0cyBieSBkZWZhdWx0LgorICAgIGVuYWJsZV9tb25pdG9yCS0gRW5hYmxlIEFuYWxvZyBPdXQgb24gQ2hhbm5lbCA2My82NCBieSBkZWZhdWx0LgorCisgICAgU2VlIGhkc3BtLnR4dCBmb3IgZGV0YWlscy4KKworICBNb2R1bGUgc25kLWljZTE3MTIKKyAgLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIEVudnkyNCAoSUNFMTcxMikgYmFzZWQgUENJIHNvdW5kIGNhcmRzLgorCQkJKiBNaWRpTWFuIE0gQXVkaW8gRGVsdGEgMTAxMAorCQkJKiBNaWRpTWFuIE0gQXVkaW8gRGVsdGEgMTAxMExUCisJCQkqIE1pZGlNYW4gTSBBdWRpbyBEZWx0YSBEaU8gMjQ5NgorCQkJKiBNaWRpTWFuIE0gQXVkaW8gRGVsdGEgNjYKKwkJCSogTWlkaU1hbiBNIEF1ZGlvIERlbHRhIDQ0CisJCQkqIE1pZGlNYW4gTSBBdWRpbyBEZWx0YSA0MTAKKwkJCSogTWlkaU1hbiBNIEF1ZGlvIEF1ZGlvcGhpbGUgMjQ5NgorICAgICAgICAgICAgICAgICAgICAgICAgKiBUZXJyYVRlYyBFV1MgODhNVAorICAgICAgICAgICAgICAgICAgICAgICAgKiBUZXJyYVRlYyBFV1MgODhECisgICAgICAgICAgICAgICAgICAgICAgICAqIFRlcnJhVGVjIEVXWCAyNC85NgorICAgICAgICAgICAgICAgICAgICAgICAgKiBUZXJyYVRlYyBETVggNkZpcmUKKwkJCSogVGVycmFUZWMgUGhhc2UgODgKKyAgICAgICAgICAgICAgICAgICAgICAgICogSG9vbnRlY2ggU291bmRUcmFjayBEU1AgMjQKKyAgICAgICAgICAgICAgICAgICAgICAgICogSG9vbnRlY2ggU291bmRUcmFjayBEU1AgMjQgVmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICogSG9vbnRlY2ggU291bmRUcmFjayBEU1AgMjQgTWVkaWEgNy4xCisJCQkqIEV2ZW50IEVsZWN0cm9uaWNzLCBFWjgKKyAgICAgICAgICAgICAgICAgICAgICAgICogRGlnaWdyYW0gVlg0NDIKKwkJCSogTGlvbnN0cmFjcywgTWVkaWFzdGF0b24KKwkJCSogVGVycmFzb25pcSBUUyA4OAorCisgICAgbW9kZWwgICAgICAgLSBVc2UgdGhlIGdpdmVuIGJvYXJkIG1vZGVsLCBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKwkJICBkZWx0YTEwMTAsIGRpbzI0OTYsIGRlbHRhNjYsIGRlbHRhNDQsIGF1ZGlvcGhpbGUsIGRlbHRhNDEwLAorCQkgIGRlbHRhMTAxMGx0LCB2eDQ0MiwgZXd4MjQ5NiwgZXdzODhtdCwgZXdzODhtdF9uZXcsIGV3czg4ZCwKKwkJICBkbXg2ZmlyZSwgZHNwMjQsIGRzcDI0X3ZhbHVlLCBkc3AyNF83MSwgZXo4LAorCQkgIHBoYXNlODgsIG1lZGlhc3RhdGlvbgorICAgIG9tbmkJLSBPbW5pIEkvTyBzdXBwb3J0IGZvciBNaWRpTWFuIE0tQXVkaW8gRGVsdGE0NC82NgorICAgIGNzODQyN190aW1lb3V0IC0gcmVzZXQgdGltZW91dCBmb3IgdGhlIENTODQyNyBjaGlwIChTL1BESUYgdHJhbnNjZWl2ZXIpCisgICAgICAgICAgICAgICAgICAgICBpbiBtc2VjIHJlc29sdXRpb24sIGRlZmF1bHQgdmFsdWUgaXMgNTAwICgwLjUgc2VjKQorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMgYW5kIGF1dG9wcm9iZS4gTm90ZTogVGhlIGNvbnN1bWVyIHBhcnQKKyAgICBpcyBub3QgdXNlZCB3aXRoIGFsbCBFbnZ5MjQgYmFzZWQgY2FyZHMgKGZvciBleGFtcGxlIGluIHRoZSBNaWRpTWFuIERlbHRhCisgICAgc2VyaWUpLgorCisgICAgTm90ZTogVGhlIHN1cHBvcnRlZCBib2FyZCBpcyBkZXRlY3RlZCBieSByZWFkaW5nIEVFUFJPTSBvciBQQ0kKKwkgIFNTSUQgKGlmIEVFUFJPTSBpc24ndCBhdmFpbGFibGUpLiAgWW91IGNhbiBvdmVycmlkZSB0aGUKKwkgIG1vZGVsIGJ5IHBhc3NpbmcgIm1vZGVsIiBtb2R1bGUgb3B0aW9uIGluIGNhc2UgdGhhdCB0aGUKKwkgIGRyaXZlciBpc24ndCBjb25maWd1cmVkIHByb3Blcmx5IG9yIHlvdSB3YW50IHRvIHRyeSBhbm90aGVyCisJICB0eXBlIGZvciB0ZXN0aW5nLgorCisgIE1vZHVsZSBzbmQtaWNlMTcyNAorICAtLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgRW52eTI0SFQgKFZUL0lDRTE3MjQpLCBFbnZ5MjRQVCAoVlQxNzIwKSBiYXNlZCBQQ0kgc291bmQgY2FyZHMuCisJCQkqIE1pZGlNYW4gTSBBdWRpbyBSZXZvbHV0aW9uIDUuMQorCQkJKiBNaWRpTWFuIE0gQXVkaW8gUmV2b2x1dGlvbiA3LjEKKwkJCSogTWlkaU1hbiBNIEF1ZGlvIEF1ZGlvcGhpbGUgMTkyCisJCQkqIEFNUCBMdGQgQVVESU8yMDAwCisJCQkqIFRlcnJhVGVjIEF1cmVvbiA1LjEgU2t5CisJCQkqIFRlcnJhVGVjIEF1cmVvbiA3LjEgU3BhY2UKKwkJCSogVGVycmFUZWMgQXVyZW9uIDcuMSBVbml2ZXJzZQorCQkJKiBUZXJyYVRlYyBQaGFzZSAyMgorCQkJKiBUZXJyYVRlYyBQaGFzZSAyOAorCQkJKiBBdWRpb1RyYWsgUHJvZGlneSA3LjEKKwkJCSogQXVkaW9UcmFrIFByb2RpZ3kgNy4xIExUCisJCQkqIEF1ZGlvVHJhayBQcm9kaWd5IDcuMSBYVAorCQkJKiBBdWRpb1RyYWsgUHJvZGlneSA3LjEgSElGSQorCQkJKiBBdWRpb1RyYWsgUHJvZGlneSA3LjEgSEQyCisJCQkqIEF1ZGlvVHJhayBQcm9kaWd5IDE5MgorCQkJKiBQb250aXMgTVMzMDAKKwkJCSogQWxiYXRyb24gSzhYODAwIFBybyBJSSAKKwkJCSogQ2hhaW50ZWNoIFpORjMtMTUwCisJCQkqIENoYWludGVjaCBaTkYzLTI1MAorCQkJKiBDaGFpbnRlY2ggOUNKUworCQkJKiBDaGFpbnRlY2ggQVYtNzEwCisJCQkqIFNodXR0bGUgU04yNVAKKwkJCSogT25reW8gU0UtOTBQQ0kKKwkJCSogT25reW8gU0UtMjAwUENJCisJCQkqIEVTSSBKdWxpQAorCQkJKiBFU0kgTWF5YTQ0CisJCQkqIEhlcmN1bGVzIEZvcnRpc3NpbW8gSVYKKwkJCSogRUdPLVNZUyBXYXZlVGVybWluYWwgMTkyTQorCisgICAgbW9kZWwgICAgICAgLSBVc2UgdGhlIGdpdmVuIGJvYXJkIG1vZGVsLCBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKwkJICByZXZvNTEsIHJldm83MSwgYW1wMjAwMCwgcHJvZGlneTcxLCBwcm9kaWd5NzFsdCwKKwkJICBwcm9kaWd5NzF4dCwgcHJvZGlneTcxaGlmaSwgcHJvZGlneWhkMiwgcHJvZGlneTE5MiwKKwkJICBqdWxpLCBhdXJlb241MSwgYXVyZW9uNzEsIHVuaXZlcnNlLCBhcDE5Miwgazh4ODAwLAorCQkgIHBoYXNlMjIsIHBoYXNlMjgsIG1zMzAwLCBhdjcxMCwgc2UyMDBwY2ksIHNlOTBwY2ksCisJCSAgZm9ydGlzc2ltbzQsIHNuMjVwLCBXVDE5Mk0sIG1heWE0NAorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMgYW5kIGF1dG9wcm9iZS4KKworICAgIE5vdGU6IFRoZSBzdXBwb3J0ZWQgYm9hcmQgaXMgZGV0ZWN0ZWQgYnkgcmVhZGluZyBFRVBST00gb3IgUENJCisJICBTU0lEIChpZiBFRVBST00gaXNuJ3QgYXZhaWxhYmxlKS4gIFlvdSBjYW4gb3ZlcnJpZGUgdGhlCisJICBtb2RlbCBieSBwYXNzaW5nICJtb2RlbCIgbW9kdWxlIG9wdGlvbiBpbiBjYXNlIHRoYXQgdGhlCisJICBkcml2ZXIgaXNuJ3QgY29uZmlndXJlZCBwcm9wZXJseSBvciB5b3Ugd2FudCB0byB0cnkgYW5vdGhlcgorCSAgdHlwZSBmb3IgdGVzdGluZy4KKworICBNb2R1bGUgc25kLWluZGlnbworICAtLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBFY2hvYXVkaW8gSW5kaWdvCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcy4KKyAgICBUaGUgZHJpdmVyIHJlcXVpcmVzIHRoZSBmaXJtd2FyZSBsb2FkZXIgc3VwcG9ydCBvbiBrZXJuZWwuCisKKyAgTW9kdWxlIHNuZC1pbmRpZ29kagorICAtLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIEVjaG9hdWRpbyBJbmRpZ28gREoKKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzLgorICAgIFRoZSBkcml2ZXIgcmVxdWlyZXMgdGhlIGZpcm13YXJlIGxvYWRlciBzdXBwb3J0IG9uIGtlcm5lbC4KKworICBNb2R1bGUgc25kLWluZGlnb2lvCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgRWNob2F1ZGlvIEluZGlnbyBJTworCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMuCisgICAgVGhlIGRyaXZlciByZXF1aXJlcyB0aGUgZmlybXdhcmUgbG9hZGVyIHN1cHBvcnQgb24ga2VybmVsLgorCisgIE1vZHVsZSBzbmQtaW50ZWw4eDAKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBBQyc5NyBtb3RoZXJib2FyZHMgZnJvbSBJbnRlbCBhbmQgY29tcGF0aWJsZXMuCisJCQkqIEludGVsIGk4MTAvODEwRSwgaTgxNSwgaTgyMCwgaTgzMCwgaTg0eCwgTVg0NDAKKwkJCQlJQ0g1LCBJQ0g2LCBJQ0g3LCA2MzAwRVNCLCBFU0IyCisJCQkqIFNpUyA3MDEyIChTaVMgNzM1KQorCQkJKiBOVmlkaWEgTkZvcmNlLCBORm9yY2UyLCBORm9yY2UzLCBNQ1AwNCwgQ0s4MDQKKwkJCQkgQ0s4LCBDSzhTLCBNQ1A1MDEKKwkJCSogQU1EIEFNRDc2OCwgQU1EODExMQorCQkJKiBBTGkgbTU0NTUKKworICAgIGFjOTdfY2xvY2sJICAtIEFDJzk3IGNvZGVjIGNsb2NrIGJhc2UgKDAgPSBhdXRvLWRldGVjdCkKKyAgICBhYzk3X3F1aXJrICAgIC0gQUMnOTcgd29ya2Fyb3VuZCBmb3Igc3RyYW5nZSBoYXJkd2FyZQorCQkgICAgU2VlICJBQzk3IFF1aXJrIE9wdGlvbiIgc2VjdGlvbiBiZWxvdy4KKyAgICBidWdneV9pcnEgICAgIC0gRW5hYmxlIHdvcmthcm91bmQgZm9yIGJ1Z2d5IGludGVycnVwdHMgb24gc29tZQorICAgICAgICAgICAgICAgICAgICBtb3RoZXJib2FyZHMgKGRlZmF1bHQgeWVzIG9uIG5Gb3JjZSBjaGlwcywKKwkJICAgIG90aGVyd2lzZSBvZmYpCisgICAgYnVnZ3lfc2VtYXBob3JlIC0gRW5hYmxlIHdvcmthcm91bmQgZm9yIGhhcmR3YXJlIHdpdGggYnVnZ3kKKwkJICAgIHNlbWFwaG9yZXMgKGUuZy4gb24gc29tZSBBU1VTIGxhcHRvcHMpCisJCSAgICAoZGVmYXVsdCBvZmYpCisgICAgc3BkaWZfYWNsaW5rICAtIFVzZSBTL1BESUYgb3ZlciBBQy1saW5rIGluc3RlYWQgb2YgZGlyZWN0IGNvbm5lY3Rpb24KKwkJICAgIGZyb20gdGhlIGNvbnRyb2xsZXIgY2hpcAorCQkgICAgKDAgPSBvZmYsIDEgPSBvbiwgLTEgPSBkZWZhdWx0KQorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgb25lIGNoaXAgYW5kIGF1dG9wcm9iZS4KKworICAgIE5vdGU6IHRoZSBsYXRlc3QgZHJpdmVyIHN1cHBvcnRzIGF1dG8tZGV0ZWN0aW9uIG9mIGNoaXAgY2xvY2suCisgICAgaWYgeW91IHN0aWxsIGVuY291bnRlciB0b28gZmFzdCBwbGF5YmFjaywgc3BlY2lmeSB0aGUgY2xvY2sKKyAgICBleHBsaWNpdGx5IHZpYSB0aGUgbW9kdWxlIG9wdGlvbiAiYWM5N19jbG9jaz00MTE5NCIuCisKKyAgICBKb3lzdGljay9NSURJIHBvcnRzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgZHJpdmVyLiAgSWYgeW91cgorICAgIG1vdGhlcmJvYXJkIGhhcyB0aGVzZSBkZXZpY2VzLCB1c2UgdGhlIG5zNTU4IG9yIHNuZC1tcHU0MDEKKyAgICBtb2R1bGVzLCByZXNwZWN0aXZlbHkuCisKKyAgICBUaGUgcG93ZXItbWFuYWdlbWVudCBpcyBzdXBwb3J0ZWQuCisgICAgCisgIE1vZHVsZSBzbmQtaW50ZWw4eDBtCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIEludGVsIElDSCAoaTh4MCkgY2hpcHNldCBNQzk3IG1vZGVtcy4KKwkJCSogSW50ZWwgaTgxMC84MTBFLCBpODE1LCBpODIwLCBpODMwLCBpODR4LCBNWDQ0MAorCQkJCUlDSDUsIElDSDYsIElDSDcKKwkJCSogU2lTIDcwMTMgKFNpUyA3MzUpCisJCQkqIE5WaWRpYSBORm9yY2UsIE5Gb3JjZTIsIE5Gb3JjZTJzLCBORm9yY2UzCisJCQkqIEFNRCBBTUQ4MTExCisJCQkqIEFMaSBtNTQ1NQorCisgICAgYWM5N19jbG9jawkgIC0gQUMnOTcgY29kZWMgY2xvY2sgYmFzZSAoMCA9IGF1dG8tZGV0ZWN0KQorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgb25lIGNhcmQgYW5kIGF1dG9wcm9iZS4KKworICAgIE5vdGU6IFRoZSBkZWZhdWx0IGluZGV4IHZhbHVlIG9mIHRoaXMgbW9kdWxlIGlzIC0yLCBpLmUuIHRoZSBmaXJzdAorICAgICAgICAgIHNsb3QgaXMgZXhjbHVkZWQuCisKKyAgICBUaGUgcG93ZXItbWFuYWdlbWVudCBpcyBzdXBwb3J0ZWQuCisKKyAgTW9kdWxlIHNuZC1pbnRlcndhdmUKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgR3JhdmlzIFVsdHJhU291bmQgUG5QLCBEeW5hc29uaWMgMy1EL1BybywgU1RCIFNvdW5kIFJhZ2UgMzIKKyAgICBhbmQgb3RoZXIgc291bmQgY2FyZHMgYmFzZWQgb24gQU1EIEludGVyV2F2ZSAodG0pIGNoaXAuCisgIAorICAgIGpveXN0aWNrX2RhYyAtIDAgdG8gMzEsICgwLjU5Vi00LjUyViBvciAwLjM4OVYtMi45OFYpCisgICAgbWlkaQktIDEgPSBNSURJIFVBUlQgZW5hYmxlLCAwID0gTUlESSBVQVJUIGRpc2FibGUgKGRlZmF1bHQpCisgICAgcGNtX3ZvaWNlcwktIHJlc2VydmVkIFBDTSB2b2ljZXMgZm9yIHRoZSBzeW50aGVzaXplciAoZGVmYXVsdCAyKQorICAgIGVmZmVjdAktIDEgPSBJbnRlcldhdmUgZWZmZWN0cyBlbmFibGUgKGRlZmF1bHQgMCk7CisgICAgICAgICAgICAgICAgICByZXF1aXJlcyA4IHZvaWNlcworICAgIGlzYXBucAktIElTQSBQblAgZGV0ZWN0aW9uIC0gMCA9IGRpc2FibGUsIDEgPSBlbmFibGUgKGRlZmF1bHQpCisKKyAgICB3aXRoIGlzYXBucD0wLCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgYXJlIGF2YWlsYWJsZToKKworICAgIHBvcnQJLSBwb3J0ICMgZm9yIEludGVyV2F2ZSBjaGlwICgweDIxMCwweDIyMCwweDIzMCwweDI0MCwweDI1MCwweDI2MCkKKyAgICBpcnEJCS0gSVJRICMgZm9yIEludGVyV2F2ZSBjaGlwICgzLDUsOSwxMSwxMiwxNSkKKyAgICBkbWExCS0gRE1BICMgZm9yIEludGVyV2F2ZSBjaGlwICgwLDEsMyw1LDYsNykKKyAgICBkbWEyCS0gRE1BICMgZm9yIEludGVyV2F2ZSBjaGlwICgwLDEsMyw1LDYsNywtMT1kaXNhYmxlKQorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMsIGF1dG9wcm9iZSBhbmQgSVNBIFBuUC4KKworICBNb2R1bGUgc25kLWludGVyd2F2ZS1zdGIKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIFVsdHJhU291bmQgMzItUHJvIChzb3VuZCBjYXJkIGZyb20gU1RCIHVzZWQgYnkgQ29tcGFxKQorICAgIGFuZCBvdGhlciBzb3VuZCBjYXJkcyBiYXNlZCBvbiBBTUQgSW50ZXJXYXZlICh0bSkgY2hpcCB3aXRoIFRFQTYzMzBUCisgICAgY2lyY3VpdCBmb3IgZXh0ZW5kZWQgY29udHJvbCBvZiBiYXNzLCB0cmVibGUgYW5kIG1hc3RlciB2b2x1bWUuCisgIAorICAgIGpveXN0aWNrX2RhYyAtIDAgdG8gMzEsICgwLjU5Vi00LjUyViBvciAwLjM4OVYtMi45OFYpCisgICAgbWlkaQktIDEgPSBNSURJIFVBUlQgZW5hYmxlLCAwID0gTUlESSBVQVJUIGRpc2FibGUgKGRlZmF1bHQpCisgICAgcGNtX3ZvaWNlcwktIHJlc2VydmVkIFBDTSB2b2ljZXMgZm9yIHRoZSBzeW50aGVzaXplciAoZGVmYXVsdCAyKQorICAgIGVmZmVjdAktIDEgPSBJbnRlcldhdmUgZWZmZWN0cyBlbmFibGUgKGRlZmF1bHQgMCk7CisgICAgICAgICAgICAgICAgICByZXF1aXJlcyA4IHZvaWNlcworICAgIGlzYXBucAktIElTQSBQblAgZGV0ZWN0aW9uIC0gMCA9IGRpc2FibGUsIDEgPSBlbmFibGUgKGRlZmF1bHQpCisKKyAgICB3aXRoIGlzYXBucD0wLCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgYXJlIGF2YWlsYWJsZToKKworICAgIHBvcnQJLSBwb3J0ICMgZm9yIEludGVyV2F2ZSBjaGlwICgweDIxMCwweDIyMCwweDIzMCwweDI0MCwweDI1MCwweDI2MCkKKyAgICBwb3J0X3RjCS0gdG9uZSBjb250cm9sIChpMmMgYnVzKSBwb3J0ICMgZm9yIFRFQTYzMzBUIGNoaXAgKDB4MzUwLDB4MzYwLDB4MzcwLDB4MzgwKQorICAgIGlycQkJLSBJUlEgIyBmb3IgSW50ZXJXYXZlIGNoaXAgKDMsNSw5LDExLDEyLDE1KQorICAgIGRtYTEJLSBETUEgIyBmb3IgSW50ZXJXYXZlIGNoaXAgKDAsMSwzLDUsNiw3KQorICAgIGRtYTIJLSBETUEgIyBmb3IgSW50ZXJXYXZlIGNoaXAgKDAsMSwzLDUsNiw3LC0xPWRpc2FibGUpCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcywgYXV0b3Byb2JlIGFuZCBJU0EgUG5QLgorCisgIE1vZHVsZSBzbmQtamF6ejE2CisgIC0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgTWVkaWEgVmlzaW9uIEphenoxNiBjaGlwc2V0LiBUaGUgY2hpcHNldCBjb25zaXN0cyBvZiAzIGNoaXBzOgorICAgIE1WRDEyMTYgKyBNVkE0MTYgKyBNVkE1MTQuCisKKyAgICBwb3J0CS0gcG9ydCAjIGZvciBTQiBEU1AgY2hpcCAoMHgyMTAsMHgyMjAsMHgyMzAsMHgyNDAsMHgyNTAsMHgyNjApCisgICAgaXJxCQktIElSUSAjIGZvciBTQiBEU1AgY2hpcCAoMyw1LDcsOSwxMCwxNSkKKyAgICBkbWE4CS0gRE1BICMgZm9yIFNCIERTUCBjaGlwICgxLDMpCisgICAgZG1hMTYJLSBETUEgIyBmb3IgU0IgRFNQIGNoaXAgKDUsNykKKyAgICBtcHVfcG9ydAktIE1QVS00MDEgcG9ydCAjICgweDMwMCwweDMxMCwweDMyMCwweDMzMCkKKyAgICBtcHVfaXJxCS0gTVBVLTQwMSBpcnEgIyAoMiwzLDUsNykKKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzLgorCisgIE1vZHVsZSBzbmQta29yZzEyMTIKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBLb3JnIDEyMTIgSU8gUENJIGNhcmQKKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzLgorCisgIE1vZHVsZSBzbmQtbGF5bGEyMAorICAtLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgRWNob2F1ZGlvIExheWxhMjAKKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzLgorICAgIFRoZSBkcml2ZXIgcmVxdWlyZXMgdGhlIGZpcm13YXJlIGxvYWRlciBzdXBwb3J0IG9uIGtlcm5lbC4KKworICBNb2R1bGUgc25kLWxheWxhMjQKKyAgLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIEVjaG9hdWRpbyBMYXlsYTI0CisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcy4KKyAgICBUaGUgZHJpdmVyIHJlcXVpcmVzIHRoZSBmaXJtd2FyZSBsb2FkZXIgc3VwcG9ydCBvbiBrZXJuZWwuCisKKyAgTW9kdWxlIHNuZC1sb2xhCisgIC0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBEaWdpZ3JhbSBMb2xhIFBDSS1lIGJvYXJkcworCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMuCisKKyAgTW9kdWxlIHNuZC1seDY0NjRlcworICAtLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIERpZ2lncmFtIExYNjQ2NEVTIGJvYXJkcworCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMuCisKKyAgTW9kdWxlIHNuZC1tYWVzdHJvMworICAtLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIEFsbGVncm8vTWFlc3RybzMgY2hpcHMKKworICAgIGV4dGVybmFsX2FtcCAgICAgLSBlbmFibGUgZXh0ZXJuYWwgYW1wIChlbmFibGVkIGJ5IGRlZmF1bHQpCisgICAgYW1wX2dwaW8gICAgICAgICAtIEdQSU8gcGluIG51bWJlciBmb3IgZXh0ZXJuYWwgYW1wICgwLTE1KSBvcgorICAgICAgICAgICAgICAgICAgICAgICAtMSBmb3IgZGVmYXVsdCBwaW4gKDggZm9yIGFsbGVncm8sIDEgZm9yCisgICAgICAgICAgICAgICAgICAgICAgIG90aGVycykgCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBhdXRvcHJvYmUgYW5kIG11bHRpcGxlIGNoaXBzLgorCisgICAgTm90ZTogdGhlIGJpbmRpbmcgb2YgYW1wbGlmaWVyIGlzIGRlcGVuZGVudCBvbiBoYXJkd2FyZS4KKyAgICBJZiB0aGVyZSBpcyBubyBzb3VuZCBldmVuIHRob3VnaCBhbGwgY2hhbm5lbHMgYXJlIHVubXV0ZWQsIHRyeSB0bworICAgIHNwZWNpZnkgb3RoZXIgZ3BpbyBjb25uZWN0aW9uIHZpYSBhbXBfZ3BpbyBvcHRpb24uIAorICAgIEZvciBleGFtcGxlLCBhIFBhbmFzb25pYyBub3RlYm9vayBtaWdodCBuZWVkICJhbXBfZ3Bpbz0weDBkIgorICAgIG9wdGlvbi4KKworICAgIFRoZSBwb3dlci1tYW5hZ2VtZW50IGlzIHN1cHBvcnRlZC4KKworICBNb2R1bGUgc25kLW1pYQorICAtLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgRWNob2F1ZGlvIE1pYQorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMuCisgICAgVGhlIGRyaXZlciByZXF1aXJlcyB0aGUgZmlybXdhcmUgbG9hZGVyIHN1cHBvcnQgb24ga2VybmVsLgorCisgIE1vZHVsZSBzbmQtbWlybworICAtLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgTWlybyBzb3VuZGNhcmRzOiBtaXJvU09VTkQgUENNIDEgcHJvLCAKKwkJCQltaXJvU09VTkQgUENNIDEyLAorCQkJCW1pcm9TT1VORCBQQ00gMjAgUmFkaW8uCisKKyAgICBwb3J0CS0gUG9ydCAjICgweDUzMCwweDYwNCwweGU4MCwweGY0MCkKKyAgICBpcnEJCS0gSVJRICMgKDUsNyw5LDEwLDExKQorICAgIGRtYTEJLSAxc3QgZG1hICMgKDAsMSwzKQorICAgIGRtYTIJLSAybmQgZG1hICMgKDAsMSkKKyAgICBtcHVfcG9ydAktIE1QVS00MDEgcG9ydCAjICgweDMwMCwweDMxMCwweDMyMCwweDMzMCkKKyAgICBtcHVfaXJxCS0gTVBVLTQwMSBpcnEgIyAoNSw3LDksMTApCisgICAgZm1fcG9ydAktIEZNIFBvcnQgIyAoMHgzODgpCisgICAgd3NzCQktIGVuYWJsZSBXU1MgbW9kZQorICAgIGlkZQkJLSBlbmFibGUgb25ib2FyZCBpZGUgc3VwcG9ydAorCisgIE1vZHVsZSBzbmQtbWl4YXJ0CisgIC0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIERpZ2lncmFtIG1pWGFydDggc291bmQgY2FyZHMuCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcy4KKyAgICBOb3RlOiBPbmUgbWlYYXJ0OCBib2FyZCB3aWxsIGJlIHJlcHJlc2VudGVkIGFzIDQgYWxzYSBjYXJkcy4KKyAgICAgICAgICBTZWUgTUlYQVJULnR4dCBmb3IgZGV0YWlscy4KKworICAgIFdoZW4gdGhlIGRyaXZlciBpcyBjb21waWxlZCBhcyBhIG1vZHVsZSBhbmQgdGhlIGhvdHBsdWcgZmlybXdhcmUKKyAgICBpcyBzdXBwb3J0ZWQsIHRoZSBmaXJtd2FyZSBkYXRhIGlzIGxvYWRlZCB2aWEgaG90cGx1ZyBhdXRvbWF0aWNhbGx5LgorICAgIEluc3RhbGwgdGhlIG5lY2Vzc2FyeSBmaXJtd2FyZSBmaWxlcyBpbiBhbHNhLWZpcm13YXJlIHBhY2thZ2UuCisgICAgV2hlbiBubyBob3RwbHVnIGZ3IGxvYWRlciBpcyBhdmFpbGFibGUsIHlvdSBuZWVkIHRvIGxvYWQgdGhlCisgICAgZmlybXdhcmUgdmlhIG1peGFydGxvYWRlciB1dGlsaXR5IGluIGFsc2EtdG9vbHMgcGFja2FnZS4KKworICBNb2R1bGUgc25kLW1vbmEKKyAgLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIEVjaG9hdWRpbyBNb25hCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcy4KKyAgICBUaGUgZHJpdmVyIHJlcXVpcmVzIHRoZSBmaXJtd2FyZSBsb2FkZXIgc3VwcG9ydCBvbiBrZXJuZWwuCisKKyAgTW9kdWxlIHNuZC1tcHU0MDEKKyAgLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgTVBVLTQwMSBVQVJUIGRldmljZXMuCisKKyAgICBwb3J0CS0gcG9ydCBudW1iZXIgb3IgLTEgKGRpc2FibGUpCisgICAgaXJxCQktIElSUSBudW1iZXIgb3IgLTEgKGRpc2FibGUpCisgICAgcG5wCQktIFBuUCBkZXRlY3Rpb24gLSAwID0gZGlzYWJsZSwgMSA9IGVuYWJsZSAoZGVmYXVsdCkKKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGRldmljZXMgYW5kIFBuUC4KKyAgICAKKyAgTW9kdWxlIHNuZC1tc25kLWNsYXNzaWMKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgVHVydGxlIEJlYWNoIE11bHRpU291bmQgQ2xhc3NpYywgVGFoaXRpIG9yIE1vbnRlcmV5CisgICAgc291bmRjYXJkcy4KKworICAgIGlvCQktIFBvcnQgIyBmb3IgbXNuZC1jbGFzc2ljIGNhcmQKKyAgICBpcnEJCS0gSVJRICMgZm9yIG1zbmQtY2xhc3NpYyBjYXJkCisgICAgbWVtCQktIE1lbW9yeSBhZGRyZXNzICgweGIwMDAwLCAweGM4MDAwLCAweGQwMDAwLCAweGQ4MDAwLAorCQkgIDB4ZTAwMDAgb3IgMHhlODAwMCkKKyAgICB3cml0ZV9uZGVsYXkgLSBlbmFibGUgd3JpdGUgbmRlbGF5IChkZWZhdWx0ID0gMSkKKyAgICBjYWxpYnJhdGVfc2lnbmFsIC0gY2FsaWJyYXRlIHNpZ25hbCAoZGVmYXVsdCA9IDApCisgICAgaXNhcG5wCS0gSVNBIFBuUCBkZXRlY3Rpb24gLSAwID0gZGlzYWJsZSwgMSA9IGVuYWJsZSAoZGVmYXVsdCkKKyAgICBkaWdpdGFsCS0gRGlnaXRhbCBkYXVnaHRlcmJvYXJkIHByZXNlbnQgKGRlZmF1bHQgPSAwKQorICAgIGNmZwkJLSBDb25maWcgcG9ydCAoMHgyNTAsIDB4MjYwIG9yIDB4MjcwKSBkZWZhdWx0ID0gUG5QCisgICAgcmVzZXQJLSBSZXNldCBhbGwgZGV2aWNlcworICAgIG1wdV9pbwktIE1QVTQwMSBJL08gcG9ydAorICAgIG1wdV9pcnEJLSBNUFU0MDEgaXJxIworICAgIGlkZV9pbzAJLSBJREUgcG9ydCAjMAorICAgIGlkZV9pbzEJLSBJREUgcG9ydCAjMQorICAgIGlkZV9pcnEJLSBJREUgaXJxIworICAgIGpveXN0aWNrX2lvCS0gSm95c3RpY2sgSS9PIHBvcnQKKworICAgIFRoZSBkcml2ZXIgcmVxdWlyZXMgZmlybXdhcmUgZmlsZXMgInR1cnRsZWJlYWNoL21zbmRpbml0LmJpbiIgYW5kCisgICAgInR1cnRsZWJlYWNoL21zbmRwZXJtLmJpbiIgaW4gdGhlIHByb3BlciBmaXJtd2FyZSBkaXJlY3RvcnkuCisKKyAgICBTZWUgRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvTXVsdGlTb3VuZCBmb3IgaW1wb3J0YW50IGluZm9ybWF0aW9uCisgICAgYWJvdXQgdGhpcyBkcml2ZXIuICBOb3RlIHRoYXQgaXQgaGFzIGJlZW4gZGlzY29udGludWVkLCBidXQgdGhlIAorICAgIFZveWV0cmEgVHVydGxlIEJlYWNoIGtub3dsZWRnZSBiYXNlIGVudHJ5IGZvciBpdCBpcyBzdGlsbCBhdmFpbGFibGUKKyAgICBhdAorCWh0dHA6Ly93d3cudHVydGxlYmVhY2guY29tCisKKyAgTW9kdWxlIHNuZC1tc25kLXBpbm5hY2xlCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBUdXJ0bGUgQmVhY2ggTXVsdGlTb3VuZCBQaW5uYWNsZS9GaWppIHNvdW5kY2FyZHMuCisKKyAgICBpbwkJLSBQb3J0ICMgZm9yIHBpbm5hY2xlL2ZpamkgY2FyZAorICAgIGlycQkJLSBJUlEgIyBmb3IgcGlubmFsY2UvZmlqaSBjYXJkCisgICAgbWVtCQktIE1lbW9yeSBhZGRyZXNzICgweGIwMDAwLCAweGM4MDAwLCAweGQwMDAwLCAweGQ4MDAwLAorCQkgIDB4ZTAwMDAgb3IgMHhlODAwMCkKKyAgICB3cml0ZV9uZGVsYXkgLSBlbmFibGUgd3JpdGUgbmRlbGF5IChkZWZhdWx0ID0gMSkKKyAgICBjYWxpYnJhdGVfc2lnbmFsIC0gY2FsaWJyYXRlIHNpZ25hbCAoZGVmYXVsdCA9IDApCisgICAgaXNhcG5wCS0gSVNBIFBuUCBkZXRlY3Rpb24gLSAwID0gZGlzYWJsZSwgMSA9IGVuYWJsZSAoZGVmYXVsdCkKKworICAgIFRoZSBkcml2ZXIgcmVxdWlyZXMgZmlybXdhcmUgZmlsZXMgInR1cnRsZWJlYWNoL3BuZHNwaW5pLmJpbiIgYW5kCisgICAgInR1cnRsZWJlYWNoL3BuZHNwZXJtLmJpbiIgaW4gdGhlIHByb3BlciBmaXJtd2FyZSBkaXJlY3RvcnkuCisKKyAgTW9kdWxlIHNuZC1tdHBhdgorICAtLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIE1PVFUgTWlkaVRpbWVQaWVjZSBBViBtdWx0aXBvcnQgTUlESSAob24gdGhlIHBhcmFsbGVsCisgICAgcG9ydCkuCisKKyAgICBwb3J0CS0gSS9PIHBvcnQgIyBmb3IgTVRQQVYgKDB4Mzc4LDB4Mjc4LCBkZWZhdWx0PTB4Mzc4KQorICAgIGlycQkJLSBJUlEgIyBmb3IgTVRQQVYgKDcsNSwgZGVmYXVsdD03KQorICAgIGh3cG9ydHMJLSBudW1iZXIgb2Ygc3VwcG9ydGVkIGhhcmR3YXJlIHBvcnRzLCBkZWZhdWx0PTguCisgICAgCisgICAgTW9kdWxlIHN1cHBvcnRzIG9ubHkgMSBjYXJkLiAgVGhpcyBtb2R1bGUgaGFzIG5vIGVuYWJsZSBvcHRpb24uCisKKyAgTW9kdWxlIHNuZC1tdHM2NAorICAtLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIEVnbyBTeXN0ZW1zIChFU0kpIE1pZGl0ZXJtaW5hbCA0MTQwCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBkZXZpY2VzLgorICAgIFJlcXVpcmVzIHBhcnBvcnQgKENPTkZJR19QQVJQT1JUKS4KKworICBNb2R1bGUgc25kLW5tMjU2CisgIC0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgTmVvTWFnaWMgTk0yNTZBVi9aWCBjaGlwcworCisgICAgcGxheWJhY2tfYnVmc2l6ZSAtIG1heCBwbGF5YmFjayBmcmFtZSBzaXplIGluIGtCICg0LTEyOGtCKQorICAgIGNhcHR1cmVfYnVmc2l6ZSAgLSBtYXggY2FwdHVyZSBmcmFtZSBzaXplIGluIGtCICg0LTEyOGtCKQorICAgIGZvcmNlX2FjOTcgICAgICAgLSAwIG9yIDEgKGRpc2FibGVkIGJ5IGRlZmF1bHQpCisgICAgYnVmZmVyX3RvcCAgICAgICAtIHNwZWNpZnkgYnVmZmVyIHRvcCBhZGRyZXNzCisgICAgdXNlX2NhY2hlICAgICAgICAtIDAgb3IgMSAoZGlzYWJsZWQgYnkgZGVmYXVsdCkKKyAgICB2YWlvX2hhY2sgICAgICAgIC0gYWxpYXMgYnVmZmVyX3RvcD0weDI1YTgwMAorICAgIHJlc2V0X3dvcmthcm91bmQgLSBlbmFibGUgQUM5NyBSRVNFVCB3b3JrYXJvdW5kIGZvciBzb21lIGxhcHRvcHMKKyAgICByZXNldF93b3JrYXJvdW5kMiAtIGVuYWJsZSBleHRlbmRlZCBBQzk3IFJFU0VUIHdvcmthcm91bmQgZm9yIHNvbWUKKwkJICAgICAgb3RoZXIgbGFwdG9wcworCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgb25lIGNoaXAgYW5kIGF1dG9wcm9iZS4KKworICAgIFRoZSBwb3dlci1tYW5hZ2VtZW50IGlzIHN1cHBvcnRlZC4KKworICAgIE5vdGU6IG9uIHNvbWUgbm90ZWJvb2tzIHRoZSBidWZmZXIgYWRkcmVzcyBjYW5ub3QgYmUgZGV0ZWN0ZWQKKyAgICBhdXRvbWF0aWNhbGx5LCBvciBjYXVzZXMgaGFuZy11cCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCisgICAgSW4gc3VjaCBhIGNhc2UsIHNwZWNpZnkgdGhlIGJ1ZmZlciB0b3AgYWRkcmVzcyBleHBsaWNpdGx5IHZpYQorICAgIHRoZSBidWZmZXJfdG9wIG9wdGlvbi4KKyAgICBGb3IgZXhhbXBsZSwKKyAgICAgIFNvbnkgRjI1MDogYnVmZmVyX3RvcD0weDI1YTgwMAorICAgICAgU29ueSBGMjcwOiBidWZmZXJfdG9wPTB4MjcyODAwCisgICAgVGhlIGRyaXZlciBzdXBwb3J0cyBvbmx5IGFjOTcgY29kZWMuICBJdCdzIHBvc3NpYmxlIHRvIGZvcmNlCisgICAgdG8gaW5pdGlhbGl6ZS91c2UgYWM5NyBhbHRob3VnaCBpdCdzIG5vdCBkZXRlY3RlZC4gIEluIHN1Y2ggYQorICAgIGNhc2UsIHVzZSBmb3JjZV9hYzk3PTEgb3B0aW9uIC0gYnV0ICpOTyogZ3VhcmFudGVlIHdoZXRoZXIgaXQKKyAgICB3b3JrcyEKKworICAgIE5vdGU6IFRoZSBOTTI1NiBjaGlwIGNhbiBiZSBsaW5rZWQgaW50ZXJuYWxseSB3aXRoIG5vbi1BQzk3CisgICAgY29kZWNzLiAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgb25seSB0aGUgQUM5NyBjb2RlYywgYW5kIHdvbid0IHdvcmsKKyAgICB3aXRoIG1hY2hpbmVzIHdpdGggb3RoZXIgKG1vc3QgbGlrZWx5IENTNDIzeCBvciBPUEwzU0F4KSBjaGlwcywKKyAgICBldmVuIHRob3VnaCB0aGUgZGV2aWNlIGlzIGRldGVjdGVkIGluIGxzcGNpLiAgSW4gc3VjaCBhIGNhc2UsIHRyeQorICAgIG90aGVyIGRyaXZlcnMsIGUuZy4gc25kLWNzNDIzMiBvciBzbmQtb3BsM3NhMi4gIFNvbWUgaGFzIElTQS1QblAKKyAgICBidXQgc29tZSBkb2Vzbid0IGhhdmUgSVNBIFBuUC4gIFlvdSdsbCBuZWVkIHRvIHNwZWNpZnkgaXNhcG5wPTAKKyAgICBhbmQgcHJvcGVyIGhhcmR3YXJlIHBhcmFtZXRlcnMgaW4gdGhlIGNhc2Ugd2l0aG91dCBJU0EgUG5QLgorCisgICAgTm90ZTogc29tZSBsYXB0b3BzIG5lZWQgYSB3b3JrYXJvdW5kIGZvciBBQzk3IFJFU0VULiAgRm9yIHRoZQorICAgIGtub3duIGhhcmR3YXJlIGxpa2UgRGVsbCBMYXRpdHVkZSBMUyBhbmQgU29ueSBQQ0ctRjMwNSwgdGhpcworICAgIHdvcmthcm91bmQgaXMgZW5hYmxlZCBhdXRvbWF0aWNhbGx5LiAgRm9yIG90aGVyIGxhcHRvcHMgd2l0aCBhCisgICAgaGFyZCBmcmVlemUsIHlvdSBjYW4gdHJ5IHJlc2V0X3dvcmthcm91bmQ9MSBvcHRpb24uCisKKyAgICBOb3RlOiBEZWxsIExhdGl0dWRlIENTeCBsYXB0b3BzIGhhdmUgYW5vdGhlciBwcm9ibGVtIHJlZ2FyZGluZworICAgIEFDOTcgUkVTRVQuICBPbiB0aGVzZSBsYXB0b3BzLCByZXNldF93b3JrYXJvdW5kMiBvcHRpb24gaXMKKyAgICB0dXJuZWQgb24gYXMgZGVmYXVsdC4gIFRoaXMgb3B0aW9uIGlzIHdvcnRoIHRvIHRyeSBpZiB0aGUKKyAgICBwcmV2aW91cyByZXNldF93b3JrYXJvdW5kIG9wdGlvbiBkb2Vzbid0IGhlbHAuCisKKyAgICBOb3RlOiBUaGlzIGRyaXZlciBpcyByZWFsbHkgY3JhcHB5LiAgSXQncyBhIHBvcnRpbmcgZnJvbSB0aGUKKyAgICBPU1MgZHJpdmVyLCB3aGljaCBpcyBhIHJlc3VsdCBvZiBibGFjay1tYWdpYyByZXZlcnNlIGVuZ2luZWVyaW5nLgorICAgIFRoZSBkZXRlY3Rpb24gb2YgY29kZWMgd2lsbCBmYWlsIGlmIHRoZSBkcml2ZXIgaXMgbG9hZGVkICphZnRlcioKKyAgICBYLXNlcnZlciBhcyBkZXNjcmliZWQgYWJvdmUuICBZb3UgbWlnaHQgYmUgYWJsZSB0byBmb3JjZSB0byBsb2FkCisgICAgdGhlIG1vZHVsZSwgYnV0IGl0IG1heSByZXN1bHQgaW4gaGFuZy11cC4gICBIZW5jZSwgbWFrZSBzdXJlIHRoYXQKKyAgICB5b3UgbG9hZCB0aGlzIG1vZHVsZSAqYmVmb3JlKiBYIGlmIHlvdSBlbmNvdW50ZXIgdGhpcyBraW5kIG9mCisgICAgcHJvYmxlbS4KKworICBNb2R1bGUgc25kLW9wbDNzYTIKKyAgLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIFlhbWFoYSBPUEwzLVNBMi9TQTMgc291bmQgY2FyZHMuCisKKyAgICBpc2FwbnAJLSBJU0EgUG5QIGRldGVjdGlvbiAtIDAgPSBkaXNhYmxlLCAxID0gZW5hYmxlIChkZWZhdWx0KQorCisgICAgd2l0aCBpc2FwbnA9MCwgdGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBhdmFpbGFibGU6CisKKyAgICBwb3J0CS0gY29udHJvbCBwb3J0ICMgZm9yIE9QTDMtU0EgY2hpcCAoMHgzNzApCisgICAgc2JfcG9ydAktIFNCIHBvcnQgIyBmb3IgT1BMMy1TQSBjaGlwICgweDIyMCwweDI0MCkKKyAgICB3c3NfcG9ydAktIFdTUyBwb3J0ICMgZm9yIE9QTDMtU0EgY2hpcCAoMHg1MzAsMHhlODAsMHhmNDAsMHg2MDQpCisgICAgbWlkaV9wb3J0CS0gcG9ydCAjIGZvciBNUFUtNDAxIFVBUlQgKDB4MzAwLDB4MzMwKSwgLTEgPSBkaXNhYmxlCisgICAgZm1fcG9ydAktIEZNIHBvcnQgIyBmb3IgT1BMMy1TQSBjaGlwICgweDM4OCksIC0xID0gZGlzYWJsZQorICAgIGlycQkJLSBJUlEgIyBmb3IgT1BMMy1TQSBjaGlwICg1LDcsOSwxMCkKKyAgICBkbWExCS0gZmlyc3QgRE1BICMgZm9yIFlhbWFoYSBPUEwzLVNBIGNoaXAgKDAsMSwzKQorICAgIGRtYTIJLSBzZWNvbmQgRE1BICMgZm9yIFlhbWFoYSBPUEwzLVNBIGNoaXAgKDAsMSwzKSwgLTEgPSBkaXNhYmxlCisgICAgCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMgYW5kIElTQSBQblAuICBJdCBkb2VzIG5vdCBzdXBwb3J0CisgICAgYXV0b3Byb2JlIChpZiBJU0EgUG5QIGlzIG5vdCB1c2VkKSB0aHVzIGFsbCBwb3J0cyBtdXN0IGJlIHNwZWNpZmllZCEhIQorICAgIAorICAgIFRoZSBwb3dlci1tYW5hZ2VtZW50IGlzIHN1cHBvcnRlZC4KKworICBNb2R1bGUgc25kLW9wdGk5MngtYWQxODQ4CisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3Igc291bmQgY2FyZHMgYmFzZWQgb24gT1BUaSA4MmM5MnggYW5kIEFuYWxvZyBEZXZpY2VzIEFEMTg0OCBjaGlwcy4KKyAgICBNb2R1bGUgd29ya3Mgd2l0aCBPQUsgTW96YXJ0IGNhcmRzIGFzIHdlbGwuCisgICAgCisgICAgaXNhcG5wICAgIC0gSVNBIFBuUCBkZXRlY3Rpb24gLSAwID0gZGlzYWJsZSwgMSA9IGVuYWJsZSAoZGVmYXVsdCkKKworICAgIHdpdGggaXNhcG5wPTAsIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgYXZhaWxhYmxlOgorCisgICAgcG9ydCAgICAgIC0gcG9ydCAjIGZvciBXU1MgY2hpcCAoMHg1MzAsMHhlODAsMHhmNDAsMHg2MDQpCisgICAgbXB1X3BvcnQgIC0gcG9ydCAjIGZvciBNUFUtNDAxIFVBUlQgKDB4MzAwLDB4MzEwLDB4MzIwLDB4MzMwKQorICAgIGZtX3BvcnQgICAtIHBvcnQgIyBmb3IgT1BMMyBkZXZpY2UgKDB4Mzg4KQorICAgIGlycSAgICAgICAtIElSUSAjIGZvciBXU1MgY2hpcCAoNSw3LDksMTAsMTEpCisgICAgbXB1X2lycSAgIC0gSVJRICMgZm9yIE1QVS00MDEgVUFSVCAoNSw3LDksMTApCisgICAgZG1hMSAgICAgIC0gZmlyc3QgRE1BICMgZm9yIFdTUyBjaGlwICgwLDEsMykKKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG9ubHkgb25lIGNhcmQsIGF1dG9wcm9iZSBhbmQgUG5QLgorCisgIE1vZHVsZSBzbmQtb3B0aTkyeC1jczQyMzEKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBzb3VuZCBjYXJkcyBiYXNlZCBvbiBPUFRpIDgyYzkyeCBhbmQgQ3J5c3RhbCBDUzQyMzEgY2hpcHMuCisgICAgCisgICAgaXNhcG5wICAgIC0gSVNBIFBuUCBkZXRlY3Rpb24gLSAwID0gZGlzYWJsZSwgMSA9IGVuYWJsZSAoZGVmYXVsdCkKKworICAgIHdpdGggaXNhcG5wPTAsIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgYXZhaWxhYmxlOgorCisgICAgcG9ydCAgICAgIC0gcG9ydCAjIGZvciBXU1MgY2hpcCAoMHg1MzAsMHhlODAsMHhmNDAsMHg2MDQpCisgICAgbXB1X3BvcnQgIC0gcG9ydCAjIGZvciBNUFUtNDAxIFVBUlQgKDB4MzAwLDB4MzEwLDB4MzIwLDB4MzMwKQorICAgIGZtX3BvcnQgICAtIHBvcnQgIyBmb3IgT1BMMyBkZXZpY2UgKDB4Mzg4KQorICAgIGlycSAgICAgICAtIElSUSAjIGZvciBXU1MgY2hpcCAoNSw3LDksMTAsMTEpCisgICAgbXB1X2lycSAgIC0gSVJRICMgZm9yIE1QVS00MDEgVUFSVCAoNSw3LDksMTApCisgICAgZG1hMSAgICAgIC0gZmlyc3QgRE1BICMgZm9yIFdTUyBjaGlwICgwLDEsMykKKyAgICBkbWEyICAgICAgLSBzZWNvbmQgRE1BICMgZm9yIFdTUyBjaGlwICgwLDEsMykKKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG9ubHkgb25lIGNhcmQsIGF1dG9wcm9iZSBhbmQgUG5QLgorCisgIE1vZHVsZSBzbmQtb3B0aTkzeAorICAtLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3Igc291bmQgY2FyZHMgYmFzZWQgb24gT1BUaSA4MmM5M3ggY2hpcHMuCisgICAgCisgICAgaXNhcG5wICAgIC0gSVNBIFBuUCBkZXRlY3Rpb24gLSAwID0gZGlzYWJsZSwgMSA9IGVuYWJsZSAoZGVmYXVsdCkKKworICAgIHdpdGggaXNhcG5wPTAsIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgYXZhaWxhYmxlOgorCisgICAgcG9ydCAgICAgIC0gcG9ydCAjIGZvciBXU1MgY2hpcCAoMHg1MzAsMHhlODAsMHhmNDAsMHg2MDQpCisgICAgbXB1X3BvcnQgIC0gcG9ydCAjIGZvciBNUFUtNDAxIFVBUlQgKDB4MzAwLDB4MzEwLDB4MzIwLDB4MzMwKQorICAgIGZtX3BvcnQgICAtIHBvcnQgIyBmb3IgT1BMMyBkZXZpY2UgKDB4Mzg4KQorICAgIGlycSAgICAgICAtIElSUSAjIGZvciBXU1MgY2hpcCAoNSw3LDksMTAsMTEpCisgICAgbXB1X2lycSAgIC0gSVJRICMgZm9yIE1QVS00MDEgVUFSVCAoNSw3LDksMTApCisgICAgZG1hMSAgICAgIC0gZmlyc3QgRE1BICMgZm9yIFdTUyBjaGlwICgwLDEsMykKKyAgICBkbWEyICAgICAgLSBzZWNvbmQgRE1BICMgZm9yIFdTUyBjaGlwICgwLDEsMykKKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG9ubHkgb25lIGNhcmQsIGF1dG9wcm9iZSBhbmQgUG5QLgorCisgIE1vZHVsZSBzbmQtb3h5Z2VuCisgIC0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIHNvdW5kIGNhcmRzIGJhc2VkIG9uIHRoZSBDLU1lZGlhIENNSTg3ODYvODc4Ny84Nzg4IGNoaXA6CisgICAgKiBBc291bmQgQS04Nzg4CisgICAgKiBBc3VzIFhvbmFyIERHL0RHWAorICAgICogQXV6ZW5UZWNoIFgtTWVyaWRpYW4KKyAgICAqIEF1emVuVGVjaCBYLU1lcmlkaWFuIDJHCisgICAgKiBCZ2VhcnMgYi1FbnNwaXJlcgorICAgICogQ2x1YjNEIFRoZWF0cm9uIERUUworICAgICogSFQtT21lZ2EgQ2xhcm8gKHBsdXMpCisgICAgKiBIVC1PbWVnYSBDbGFybyBoYWxvIChYVCkKKyAgICAqIEt1cm91dG9zaGlrb3UgQ01JODc4Ny1IRzJQQ0kKKyAgICAqIFJhemVyIEJhcnJhY3VkYSBBQy0xCisgICAgKiBTb25kaWdvIEluZmVybm8KKyAgICAqIFRlbXBvVGVjIEhpRmllciBGYW50YXNpYQorICAgICogVGVtcG9UZWMgSGlGaWVyIFNlcmVuYWRlCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBhdXRvcHJvYmUgYW5kIG11bHRpcGxlIGNhcmRzLgorCisgIE1vZHVsZSBzbmQtcGNzcAorICAtLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBpbnRlcm5hbCBQQy1TcGVha2VyLgorCisgICAgbm9wY20JLSBEaXNhYmxlIFBDLVNwZWFrZXIgUENNIHNvdW5kLiBPbmx5IGJlZXBzIHJlbWFpbi4KKyAgICBuZm9yY2Vfd2EJLSBlbmFibGUgTkZvcmNlIGNoaXBzZXQgd29ya2Fyb3VuZC4gRXhwZWN0IGJhZCBzb3VuZC4KKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIHN5c3RlbSBiZWVwcywgc29tZSBraW5kIG9mIFBDTSBwbGF5YmFjayBhbmQKKyAgICBldmVuIGEgZmV3IG1peGVyIGNvbnRyb2xzLgorCisgIE1vZHVsZSBzbmQtcGN4aHIKKyAgLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBEaWdpZ3JhbSBQQ1hIUiBib2FyZHMKKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzLgorCisgIE1vZHVsZSBzbmQtcG9ydG1hbjJ4NAorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgTWlkaW1hbiBQb3J0bWFuIDJ4NCBwYXJhbGxlbCBwb3J0IE1JREkgaW50ZXJmYWNlCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcy4KKworICBNb2R1bGUgc25kLXBvd2VybWFjIChvbiBwcGMgb25seSkKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIFBvd2VyTWFjLCBpTWFjIGFuZCBpQm9vayBvbi1ib2FyZCBzb3VuZGNoaXBzCisKKyAgICBlbmFibGVfYmVlcCAgICAgLSBlbmFibGUgYmVlcCB1c2luZyBQQ00gKGVuYWJsZWQgYXMgZGVmYXVsdCkKKworICAgIE1vZHVsZSBzdXBwb3J0cyBhdXRvcHJvYmUgYSBjaGlwLgorCisgICAgTm90ZTogdGhlIGRyaXZlciBtYXkgaGF2ZSBwcm9ibGVtcyByZWdhcmRpbmcgZW5kaWFubmVzcy4KKworICAgIFRoZSBwb3dlci1tYW5hZ2VtZW50IGlzIHN1cHBvcnRlZC4KKworICBNb2R1bGUgc25kLXB4YTJ4eC1hYzk3IChvbiBhcm0gb25seSkKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIEFDOTcgZHJpdmVyIGZvciB0aGUgSW50ZWwgUFhBMnh4IGNoaXAKKworICAgIEZvciBBUk0gYXJjaGl0ZWN0dXJlIG9ubHkuCisKKyAgICBUaGUgcG93ZXItbWFuYWdlbWVudCBpcyBzdXBwb3J0ZWQuCisKKyAgTW9kdWxlIHNuZC1yaXB0aWRlCisgIC0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBDb25leGFudCBSaXB0aWRlIGNoaXAKKworICAgICAgam95c3RpY2tfcG9ydAktIEpveXN0aWNrIHBvcnQgIyAoZGVmYXVsdDogMHgyMDApCisgICAgICBtcHVfcG9ydAkJLSBNUFU0MDEgcG9ydCAjIChkZWZhdWx0OiAweDMzMCkKKyAgICAgIG9wbDNfcG9ydAkJLSBPUEwzIHBvcnQgIyAoZGVmYXVsdDogMHgzODgpCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcy4KKyAgICBUaGUgZHJpdmVyIHJlcXVpcmVzIHRoZSBmaXJtd2FyZSBsb2FkZXIgc3VwcG9ydCBvbiBrZXJuZWwuCisgICAgWW91IG5lZWQgdG8gaW5zdGFsbCB0aGUgZmlybXdhcmUgZmlsZSAicmlwdGlkZS5oZXgiIHRvIHRoZSBzdGFuZGFyZAorICAgIGZpcm13YXJlIHBhdGggKGUuZy4gL2xpYi9maXJtd2FyZSkuCisKKyAgTW9kdWxlIHNuZC1ybWUzMgorICAtLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIFJNRSBEaWdpMzIsIERpZ2kzMiBQcm8gYW5kIERpZ2kzMi84IChTZWsnZCBQcm9kaWYzMiwgCisgICAgUHJvZGlmOTYgYW5kIFByb2RpZiBHb2xkKSBzb3VuZCBjYXJkcy4KKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzLgorCisgIE1vZHVsZSBzbmQtcm1lOTYKKyAgLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBSTUUgRGlnaTk2LCBEaWdpOTYvOCBhbmQgRGlnaTk2LzggUFJPL1BBRC9QU1Qgc291bmQgY2FyZHMuCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcy4KKworICBNb2R1bGUgc25kLXJtZTk2NTIKKyAgLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIFJNRSBEaWdpOTY1MiAoSGFtbWVyZmFsbCwgSGFtbWVyZmFsbC1MaWdodCkgc291bmQgY2FyZHMuCisKKyAgICBwcmVjaXNlX3B0cgktIEVuYWJsZSBwcmVjaXNlIHBvaW50ZXIgKGRvZXNuJ3Qgd29yayByZWxpYWJseSkuCisJCSAgKGRlZmF1bHQgPSAwKQorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMuCisKKyAgICBOb3RlOiBzbmQtcGFnZS1hbGxvYyBtb2R1bGUgZG9lcyB0aGUgam9iIHdoaWNoIHNuZC1oYW1tZXJmYWxsLW1lbQorICAgICAgICAgIG1vZHVsZSBkaWQgZm9ybWVybHkuICBJdCB3aWxsIGFsbG9jYXRlIHRoZSBidWZmZXJzIGluIGFkdmFuY2UKKyAgICAgICAgICB3aGVuIGFueSBSTUU5NjUyIGNhcmRzIGFyZSBmb3VuZC4gIFRvIG1ha2UgdGhlIGJ1ZmZlcgorICAgICAgICAgIGFsbG9jYXRpb24gc3VyZSwgbG9hZCBzbmQtcGFnZS1hbGxvYyBtb2R1bGUgaW4gdGhlIGVhcmx5CisgICAgICAgICAgc3RhZ2Ugb2YgYm9vdCBzZXF1ZW5jZS4gIFNlZSAiRWFybHkgQnVmZmVyIEFsbG9jYXRpb24iCisJICBzZWN0aW9uLgorCisgIE1vZHVsZSBzbmQtc2ExMXh4LXVkYTEzNDEgKG9uIGFybSBvbmx5KQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgUGhpbGlwcyBVREExMzQxVFMgb24gQ29tcGFxIGlQQVEgSDM2MDAgc291bmQgY2FyZC4KKworICAgIE1vZHVsZSBzdXBwb3J0cyBvbmx5IG9uZSBjYXJkLgorICAgIE1vZHVsZSBoYXMgbm8gZW5hYmxlIGFuZCBpbmRleCBvcHRpb25zLgorCisgICAgVGhlIHBvd2VyLW1hbmFnZW1lbnQgaXMgc3VwcG9ydGVkLgorCisgIE1vZHVsZSBzbmQtc2I4CisgIC0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIDgtYml0IFNvdW5kQmxhc3RlciBjYXJkczogU291bmRCbGFzdGVyIDEuMCwKKwkJCQkJIFNvdW5kQmxhc3RlciAyLjAsCisJCQkJCSBTb3VuZEJsYXN0ZXIgUHJvCisKKyAgICBwb3J0CS0gcG9ydCAjIGZvciBTQiBEU1AgY2hpcCAoMHgyMjAsMHgyNDAsMHgyNjApCisgICAgaXJxCQktIElSUSAjIGZvciBTQiBEU1AgY2hpcCAoNSw3LDksMTApCisgICAgZG1hOAktIERNQSAjIGZvciBTQiBEU1AgY2hpcCAoMSwzKQorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMgYW5kIGF1dG9wcm9iZS4KKyAgICAKKyAgICBUaGUgcG93ZXItbWFuYWdlbWVudCBpcyBzdXBwb3J0ZWQuCisKKyAgTW9kdWxlIHNuZC1zYjE2IGFuZCBzbmQtc2Jhd2UKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgMTYtYml0IFNvdW5kQmxhc3RlciBjYXJkczogU291bmRCbGFzdGVyIDE2IChQblApLAorCQkJCQkgIFNvdW5kQmxhc3RlciBBV0UgMzIgKFBuUCksCisJCQkJCSAgU291bmRCbGFzdGVyIEFXRSA2NCBQblAKKworICAgIG1pY19hZ2MJLSBNaWMgQXV0by1HYWluLUNvbnRyb2wgLSAwID0gZGlzYWJsZSwgMSA9IGVuYWJsZSAoZGVmYXVsdCkKKyAgICBjc3AJCS0gQVNQL0NTUCBjaGlwIHN1cHBvcnQgLSAwID0gZGlzYWJsZSAoZGVmYXVsdCksIDEgPSBlbmFibGUKKyAgICBpc2FwbnAJLSBJU0EgUG5QIGRldGVjdGlvbiAtIDAgPSBkaXNhYmxlLCAxID0gZW5hYmxlIChkZWZhdWx0KQorCisgICAgd2l0aCBpc2FwbnA9MCwgdGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBhdmFpbGFibGU6CisKKyAgICBwb3J0CS0gcG9ydCAjIGZvciBTQiBEU1AgNC54IGNoaXAgKDB4MjIwLDB4MjQwLDB4MjYwKQorICAgIG1wdV9wb3J0CS0gcG9ydCAjIGZvciBNUFUtNDAxIFVBUlQgKDB4MzAwLDB4MzMwKSwgLTEgPSBkaXNhYmxlCisgICAgYXdlX3BvcnQJLSBiYXNlIHBvcnQgIyBmb3IgRU1VODAwMCBzeW50aGVzaXplciAoMHg2MjAsMHg2NDAsMHg2NjApCisgICAgICAgICAgICAgICAgICAgKHNuZC1zYmF3ZSBtb2R1bGUgb25seSkKKyAgICBpcnEJCS0gSVJRICMgZm9yIFNCIERTUCA0LnggY2hpcCAoNSw3LDksMTApCisgICAgZG1hOAktIDgtYml0IERNQSAjIGZvciBTQiBEU1AgNC54IGNoaXAgKDAsMSwzKQorICAgIGRtYTE2CS0gMTYtYml0IERNQSAjIGZvciBTQiBEU1AgNC54IGNoaXAgKDUsNiw3KQorICAgIAorICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzLCBhdXRvcHJvYmUgYW5kIElTQSBQblAuCisKKyAgICBOb3RlOiBUbyB1c2UgVmlicmExNlggY2FyZHMgaW4gMTYtYml0IGhhbGYgZHVwbGV4IG1vZGUsIHlvdSBtdXN0CisgICAgICAgICAgZGlzYWJsZSAxNmJpdCBETUEgd2l0aCBkbWExNiA9IC0xIG1vZHVsZSBwYXJhbWV0ZXIuCisgICAgICAgICAgQWxzbywgYWxsIFNvdW5kIEJsYXN0ZXIgMTYgdHlwZSBjYXJkcyBjYW4gb3BlcmF0ZSBpbiAxNi1iaXQKKyAgICAgICAgICBoYWxmIGR1cGxleCBtb2RlIHRocm91Z2ggOC1iaXQgRE1BIGNoYW5uZWwgYnkgZGlzYWJsaW5nIHRoZWlyCisgICAgICAgICAgMTYtYml0IERNQSBjaGFubmVsLgorICAgIAorICAgIFRoZSBwb3dlci1tYW5hZ2VtZW50IGlzIHN1cHBvcnRlZC4KKworICBNb2R1bGUgc25kLXNjNjAwMAorICAtLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBHYWxsYW50IFNDLTYwMDAgc291bmRjYXJkIGFuZCBsYXRlciBtb2RlbHM6IFNDLTY2MDAKKyAgICBhbmQgU0MtNzAwMC4KKworICAgIHBvcnQJLSBQb3J0ICMgKDB4MjIwIG9yIDB4MjQwKQorICAgIG1zc19wb3J0CS0gTVNTIFBvcnQgIyAoMHg1MzAgb3IgMHhlODApCisgICAgaXJxCQktIElSUSAjICg1LDcsOSwxMCwxMSkKKyAgICBtcHVfaXJxCS0gTVBVLTQwMSBJUlEgIyAoNSw3LDksMTApICwwIC0gbm8gTVBVLTQwMSBpcnEKKyAgICBkbWEJCS0gRE1BICMgKDEsMywwKQorICAgIGpveXN0aWNrCS0gRW5hYmxlIGdhbWVwb3J0IC0gMCA9IGRpc2FibGUgKGRlZmF1bHQpLCAxID0gZW5hYmxlCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcy4KKworICAgIFRoaXMgY2FyZCBpcyBhbHNvIGtub3duIGFzIEF1ZGlvIEV4Y2VsIERTUCAxNiBvciBab2x0cml4IEFWMzAyLgorCisgIE1vZHVsZSBzbmQtc3NjYXBlCisgIC0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIEVOU09OSVEgU291bmRTY2FwZSBjYXJkcy4KKworICAgIHBvcnQJLSBQb3J0ICMgKFBuUCBzZXR1cCkKKyAgICB3c3NfcG9ydAktIFdTUyBQb3J0ICMgKFBuUCBzZXR1cCkKKyAgICBpcnEJCS0gSVJRICMgKFBuUCBzZXR1cCkKKyAgICBtcHVfaXJxCS0gTVBVLTQwMSBJUlEgIyAoUG5QIHNldHVwKQorICAgIGRtYQkJLSBETUEgIyAoUG5QIHNldHVwKQorICAgIGRtYTIJLSAybmQgRE1BICMgKFBuUCBzZXR1cCwgLTEgdG8gZGlzYWJsZSkKKyAgICBqb3lzdGljawktIEVuYWJsZSBnYW1lcG9ydCAtIDAgPSBkaXNhYmxlIChkZWZhdWx0KSwgMSA9IGVuYWJsZQorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMuCisKKyAgICBUaGUgZHJpdmVyIHJlcXVpcmVzIHRoZSBmaXJtd2FyZSBsb2FkZXIgc3VwcG9ydCBvbiBrZXJuZWwuCisKKyAgTW9kdWxlIHNuZC1zdW4tYW1kNzkzMCAob24gc3BhcmMgb25seSkKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgQU1ENzkzMCBzb3VuZCBjaGlwcyBmb3VuZCBvbiBTcGFyY3MuCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcy4KKworICBNb2R1bGUgc25kLXN1bi1jczQyMzEgKG9uIHNwYXJjIG9ubHkpCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgQ1M0MjMxIHNvdW5kIGNoaXBzIGZvdW5kIG9uIFNwYXJjcy4KKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzLgorCisgIE1vZHVsZSBzbmQtc3VuLWRicmkgKG9uIHNwYXJjIG9ubHkpCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIERCUkkgc291bmQgY2hpcHMgZm91bmQgb24gU3BhcmNzLgorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMuCisKKyAgTW9kdWxlIHNuZC13YXZlZnJvbnQKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgVHVydGxlIEJlYWNoIE1hdWksIFRyb3BleiBhbmQgVHJvcGV6KyBzb3VuZCBjYXJkcy4KKworICAgIHVzZV9jczQyMzJfbWlkaSAtIFVzZSBDUzQyMzIgTVBVLTQwMSBpbnRlcmZhY2UKKyAgICAgICAgICAgICAgICAgICAgICAoaW5hY2Nlc3NpYmx5IGxvY2F0ZWQgaW5zaWRlIHlvdXIgY29tcHV0ZXIpCisgICAgaXNhcG5wICAgICAgICAgIC0gSVNBIFBuUCBkZXRlY3Rpb24gLSAwID0gZGlzYWJsZSwgMSA9IGVuYWJsZSAoZGVmYXVsdCkKKworICAgIHdpdGggaXNhcG5wPTAsIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgYXZhaWxhYmxlOgorCisgICAgY3M0MjMyX3BjbV9wb3J0IC0gUG9ydCAjIGZvciBDUzQyMzIgUENNIGludGVyZmFjZS4KKyAgICBjczQyMzJfcGNtX2lycSAgLSBJUlEgIyBmb3IgQ1M0MjMyIFBDTSBpbnRlcmZhY2UgKDUsNyw5LDExLDEyLDE1KS4KKyAgICBjczQyMzJfbXB1X3BvcnQgLSBQb3J0ICMgZm9yIENTNDIzMiBNUFUtNDAxIGludGVyZmFjZS4KKyAgICBjczQyMzJfbXB1X2lycSAgLSBJUlEgIyBmb3IgQ1M0MjMyIE1QVS00MDEgaW50ZXJmYWNlICg5LDExLDEyLDE1KS4KKyAgICBpY3MyMTE1X3BvcnQgICAgLSBQb3J0ICMgZm9yIElDUzIxMTUKKyAgICBpY3MyMTE1X2lycSAgICAgLSBJUlEgIyBmb3IgSUNTMjExNQorICAgIGZtX3BvcnQgICAgICAgICAtIEZNIE9QTC0zIFBvcnQgIworICAgIGRtYTEgICAgICAgICAgICAtIERNQTEgIyBmb3IgQ1M0MjMyIFBDTSBpbnRlcmZhY2UuCisgICAgZG1hMiAgICAgICAgICAgIC0gRE1BMiAjIGZvciBDUzQyMzIgUENNIGludGVyZmFjZS4KKworICAgIFRoZSBiZWxvdyBhcmUgb3B0aW9ucyBmb3Igd2F2ZWZyb250X3N5bnRoIGZlYXR1cmVzOgorICAgIHdmX3JhdwkgICAgLSBBc3N1bWUgdGhhdCB3ZSBuZWVkIHRvIGJvb3QgdGhlIE9TIChkZWZhdWx0Om5vKQorCUlmIHllcywgdGhlbiBkdXJpbmcgZHJpdmVyIGxvYWRpbmcsIHRoZSBzdGF0ZSBvZiB0aGUgYm9hcmQgaXMKKwlpZ25vcmVkLCBhbmQgd2UgcmVzZXQgdGhlIGJvYXJkIGFuZCBsb2FkIHRoZSBmaXJtd2FyZSBhbnl3YXkuCisgICAgZnhfcmF3CSAgICAtIEFzc3VtZSB0aGF0IHRoZSBGWCBwcm9jZXNzIG5lZWRzIGhlbHAgKGRlZmF1bHQ6eWVzKQorCUlmIGZhbHNlLCB3ZSdsbCBsZWF2ZSB0aGUgRlggcHJvY2Vzc29yIGluIHdoYXRldmVyIHN0YXRlIGl0IGlzCisJd2hlbiB0aGUgZHJpdmVyIGlzIGxvYWRlZC4gIFRoZSBkZWZhdWx0IGlzIHRvIGRvd25sb2FkIHRoZQorCW1pY3JvcHJvZ3JhbSBhbmQgYXNzb2NpYXRlZCBjb2VmZmljaWVudHMgdG8gc2V0IGl0IHVwIGZvcgorCSJkZWZhdWx0IiBvcGVyYXRpb24sIHdoYXRldmVyIHRoYXQgbWVhbnMuCisgICAgZGVidWdfZGVmYXVsdCAgIC0gRGVidWcgcGFyYW1ldGVycyBmb3IgY2FyZCBpbml0aWFsaXphdGlvbgorICAgIHdhaXRfdXNlY3MJICAgIC0gSG93IGxvbmcgdG8gd2FpdCB3aXRob3V0IHNsZWVwaW5nLCB1c2VjcworCQkgICAgICAoZGVmYXVsdDoxNTApCisJVGhpcyBtYWdpYyBudW1iZXIgc2VlbXMgdG8gZ2l2ZSBwcmV0dHkgb3B0aW1hbCB0aHJvdWdocHV0CisJYmFzZWQgb24gbXkgbGltaXRlZCBleHBlcmltZW50YXRpb24uIAorCUlmIHlvdSB3YW50IHRvIHBsYXkgYXJvdW5kIHdpdGggaXQgYW5kIGZpbmQgYSBiZXR0ZXIgdmFsdWUsIGJlCisJbXkgZ3Vlc3QuIFJlbWVtYmVyLCB0aGUgaWRlYSBpcyB0byBnZXQgYSBudW1iZXIgdGhhdCBjYXVzZXMgdXMKKwl0byBqdXN0IGJ1c3kgd2FpdCBmb3IgYXMgbWFueSBXYXZlRnJvbnQgY29tbWFuZHMgYXMgcG9zc2libGUsCisJd2l0aG91dCBjb21pbmcgdXAgd2l0aCBhIG51bWJlciBzbyBsYXJnZSB0aGF0IHdlIGhvZyB0aGUgd2hvbGUKKwlDUFUuIAorCVNwZWNpZmljYWxseSwgd2l0aCB0aGlzIG51bWJlciwgb3V0IG9mIGFib3V0IDEzNCwwMDAgc3RhdHVzCisJd2FpdHMsIG9ubHkgYWJvdXQgMjUwIHJlc3VsdCBpbiBhIHNsZWVwLiAKKyAgICBzbGVlcF9pbnRlcnZhbCAgLSBIb3cgbG9uZyB0byBzbGVlcCB3aGVuIHdhaXRpbmcgZm9yIHJlcGx5CisJCSAgICAgIChkZWZhdWx0OiAxMDApCisgICAgc2xlZXBfdHJpZXMJICAgIC0gSG93IG1hbnkgdGltZXMgdG8gdHJ5IHNsZWVwaW5nIGR1cmluZyBhIHdhaXQKKwkJICAgICAgKGRlZmF1bHQ6IDUwKQorICAgIG9zcGF0aAkgICAgLSBQYXRobmFtZSB0byBwcm9jZXNzZWQgSUNTMjExNSBPUyBmaXJtd2FyZQorCQkgICAgICAoZGVmYXVsdDp3YXZlZnJvbnQub3MpCisJVGhlIHBhdGggbmFtZSBvZiB0aGUgSVNDMjExNSBPUyBmaXJtd2FyZS4gIEluIHRoZSByZWNlbnQKKwl2ZXJzaW9uLCBpdCdzIGhhbmRsZWQgdmlhIGZpcm13YXJlIGxvYWRlciBmcmFtZXdvcmssIHNvIGl0CisJbXVzdCBiZSBpbnN0YWxsZWQgaW4gdGhlIHByb3BlciBwYXRoLCB0eXBpY2FsbHksCisJL2xpYi9maXJtd2FyZS4KKyAgICByZXNldF90aW1lCSAgICAtIEhvdyBsb25nIHRvIHdhaXQgZm9yIGEgcmVzZXQgdG8gdGFrZSBlZmZlY3QKKwkJICAgICAgKGRlZmF1bHQ6MikKKyAgICByYW1jaGVja190aW1lICAgLSBIb3cgbWFueSBzZWNvbmRzIHRvIHdhaXQgZm9yIHRoZSBSQU0gdGVzdAorCQkgICAgICAoZGVmYXVsdDoyMCkKKyAgICBvc3J1bl90aW1lCSAgICAtIEhvdyBtYW55IHNlY29uZHMgdG8gd2FpdCBmb3IgdGhlIElDUzIxMTUgT1MKKwkJICAgICAgKGRlZmF1bHQ6MTApCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcyBhbmQgSVNBIFBuUC4KKworICAgIE5vdGU6IHRoZSBmaXJtd2FyZSBmaWxlICJ3YXZlZnJvbnQub3MiIHdhcyBsb2NhdGVkIGluIHRoZSBlYXJsaWVyCisgICAgICAgICAgdmVyc2lvbiBpbiAvZXRjLiAgTm93IGl0J3MgbG9hZGVkIHZpYSBmaXJtd2FyZSBsb2FkZXIsIGFuZAorCSAgbXVzdCBiZSBpbiB0aGUgcHJvcGVyIGZpcm13YXJlIHBhdGgsIHN1Y2ggYXMgL2xpYi9maXJtd2FyZS4KKwkgIENvcHkgKG9yIHN5bWxpbmspIHRoZSBmaWxlIGFwcHJvcHJpYXRlbHkgaWYgeW91IGdldCBhbiBlcnJvcgorCSAgcmVnYXJkaW5nIGZpcm13YXJlIGRvd25sb2FkaW5nIGFmdGVyIHVwZ3JhZGluZyB0aGUga2VybmVsLgorCisgIE1vZHVsZSBzbmQtc29uaWN2aWJlcworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgUzMgU29uaWNWaWJlcyBQQ0kgc291bmQgY2FyZHMuCisJCQkqIFBJTkUgU2NodWJlcnQgMzIgUENJCisKKyAgICByZXZlcmIgICAgLSBSZXZlcmIgRW5hYmxlIC0gMSA9IGVuYWJsZSwgMCA9IGRpc2FibGUgKGRlZmF1bHQpCisgICAgICAgICAgICAgICAgICAtIFNvdW5kQ2FyZCBtdXN0IGhhdmUgb25ib2FyZCBTUkFNIGZvciB0aGlzLgorICAgIG1nZSAgICAgICAtIE1pYyBHYWluIEVuYWJsZSAtIDEgPSBlbmFibGUsIDAgPSBkaXNhYmxlIChkZWZhdWx0KQorICAgIAorICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGNhcmRzIGFuZCBhdXRvcHJvYmUuCisKKyAgTW9kdWxlIHNuZC1zZXJpYWwtdTE2NTUwCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBVQVJUMTY1NTBBIHNlcmlhbCBNSURJIHBvcnRzLgorCisgICAgcG9ydAktIHBvcnQgIyBmb3IgVUFSVDE2NTUwQSBjaGlwCisgICAgaXJxCQktIElSUSAjIGZvciBVQVJUMTY1NTBBIGNoaXAsIC0xID0gcG9sbCBtb2RlCisgICAgc3BlZWQJLSBzcGVlZCBpbiBiYXVkcyAoOTYwMCwxOTIwMCwzODQwMCw1NzYwMCwxMTUyMDApCisJCSAgMzg0MDAgPSBkZWZhdWx0CisgICAgYmFzZQktIGJhc2UgZm9yIGRpdmlzb3IgaW4gYmF1ZHMgKDU3NjAwLDExNTIwMCwyMzA0MDAsNDYwODAwKQorCQkgIDExNTIwMCA9IGRlZmF1bHQKKyAgICBvdXRzCS0gbnVtYmVyIG9mIE1JREkgcG9ydHMgaW4gYSBzZXJpYWwgcG9ydCAoMS00KQorCQkgIDEgPSBkZWZhdWx0CisgICAgYWRhcHRvcgktIFR5cGUgb2YgYWRhcHRvci4KKyAgICAgICAgICAgICAgICAgIDAgPSBTb3VuZGNhbnZhcywgMSA9IE1TLTEyNFQsIDIgPSBNUy0xMjRXIFMvQSwKKwkJICAzID0gTVMtMTI0VyBNL0IsIDQgPSBHZW5lcmljCisgICAgCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMuIFRoaXMgbW9kdWxlIGRvZXMgbm90IHN1cHBvcnQgYXV0b3Byb2JlCisgICAgdGh1cyB0aGUgbWFpbiBwb3J0IG11c3QgYmUgc3BlY2lmaWVkISEhIE90aGVyIG9wdGlvbnMgYXJlIG9wdGlvbmFsLgorCisgIE1vZHVsZSBzbmQtdHJpZGVudAorICAtLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgVHJpZGVudCA0RFdhdmUgRFgvTlggc291bmQgY2FyZHMuCisJCQkqIEJlc3QgVW5pb24gIE1pc3MgTWVsb2R5IDREV2F2ZSBQQ0kKKwkJCSogSElTICA0RFdhdmUgUENJCisJCQkqIFdhcnBzcGVlZCAgT05TcGVlZCA0RFdhdmUgUENJCisJCQkqIEF6VGVjaCAgUENJIDY0LVEzRAorCQkJKiBBZGRvbmljcyAgU1YgNzUwCisJCQkqIENISUMgIFRydWUgU291bmQgNER3YXZlCisJCQkqIFNoYXJrICBQcmVkYXRvcjRELVBDSQorCQkJKiBKYXRvbiAgU29uaWNXYXZlIDRECisJCQkqIFNpUyBTSTcwMTggUENJIEF1ZGlvCisJCQkqIEhvb250ZWNoIFNvdW5kVHJhY2sgRGlnaXRhbCA0RFdhdmUgTlgKKworICAgIHBjbV9jaGFubmVscyAgIC0gbWF4IGNoYW5uZWxzICh2b2ljZXMpIHJlc2VydmVkIGZvciBQQ00KKyAgICB3YXZldGFibGVfc2l6ZSAtIG1heCB3YXZldGFibGUgc2l6ZSBpbiBrQiAoNC0/a2IpCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcyBhbmQgYXV0b3Byb2JlLgorCisgICAgVGhlIHBvd2VyLW1hbmFnZW1lbnQgaXMgc3VwcG9ydGVkLgorCisgIE1vZHVsZSBzbmQtdWExMDEKKyAgLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciB0aGUgRWRpcm9sIFVBLTEwMS9VQS0xMDAwIGF1ZGlvL01JREkgaW50ZXJmYWNlcy4KKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG11bHRpcGxlIGRldmljZXMsIGF1dG9wcm9iZSBhbmQgaG90cGx1Z2dpbmcuCisKKyAgTW9kdWxlIHNuZC11c2ItYXVkaW8KKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgVVNCIGF1ZGlvIGFuZCBVU0IgTUlESSBkZXZpY2VzLgorCisgICAgdmlkICAgICAgICAgICAgIC0gVmVuZG9yIElEIGZvciB0aGUgZGV2aWNlIChvcHRpb25hbCkKKyAgICBwaWQgICAgICAgICAgICAgLSBQcm9kdWN0IElEIGZvciB0aGUgZGV2aWNlIChvcHRpb25hbCkKKyAgICBucnBhY2tzCSAgICAtIE1heC4gbnVtYmVyIG9mIHBhY2tldHMgcGVyIFVSQiAoZGVmYXVsdDogOCkKKyAgICBkZXZpY2Vfc2V0dXAgICAgLSBEZXZpY2Ugc3BlY2lmaWMgbWFnaWMgbnVtYmVyIChvcHRpb25hbCkKKyAgICAgICAgICAgICAgICAgICAgLSBJbmZsdWVuY2UgZGVwZW5kcyBvbiB0aGUgZGV2aWNlCisgICAgICAgICAgICAgICAgICAgIC0gRGVmYXVsdDogMHgwMDAwIAorICAgIGlnbm9yZV9jdGxfZXJyb3IgLSBJZ25vcmUgYW55IFVTQi1jb250cm9sbGVyIHJlZ2FyZGluZyBtaXhlcgorICAgIAkJICAgICAgIGludGVyZmFjZSAoZGVmYXVsdDogbm8pCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBkZXZpY2VzLCBhdXRvcHJvYmUgYW5kIGhvdHBsdWdnaW5nLgorCisgICAgTkI6IG5ycGFja3MgcGFyYW1ldGVyIGNhbiBiZSBtb2RpZmllZCBkeW5hbWljYWxseSB2aWEgc3lzZnMuCisgICAgICAgIERvbid0IHB1dCB0aGUgdmFsdWUgb3ZlciAyMC4gIENoYW5naW5nIHZpYSBzeXNmcyBoYXMgbm8gc2FuaXR5CisJY2hlY2suCisgICAgTkI6IGlnbm9yZV9jdGxfZXJyb3I9MSBtYXkgaGVscCB3aGVuIHlvdSBnZXQgYW4gZXJyb3IgYXQgYWNjZXNzaW5nCisgICAgICAgIHRoZSBtaXhlciBlbGVtZW50IHN1Y2ggYXMgVVJCIGVycm9yIC0yMi4gIFRoaXMgaGFwcGVucyBvbiBzb21lCisgICAgICAgIGJ1Z2d5IFVTQiBkZXZpY2Ugb3IgdGhlIGNvbnRyb2xsZXIuCisKKyAgTW9kdWxlIHNuZC11c2ItY2FpYXEKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3IgY2FpYXEgVUIgYXVkaW8gaW50ZXJmYWNlcywKKwkgICAgKiBOYXRpdmUgSW5zdHJ1bWVudHMgUmlnS29udHJvbDIKKwkgICAgKiBOYXRpdmUgSW5zdHJ1bWVudHMgS29yZSBDb250cm9sbGVyCisJICAgICogTmF0aXZlIEluc3RydW1lbnRzIEF1ZGlvIEtvbnRyb2wgMQorCSAgICAqIE5hdGl2ZSBJbnN0cnVtZW50cyBBdWRpbyA4IERKCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBkZXZpY2VzLCBhdXRvcHJvYmUgYW5kIGhvdHBsdWdnaW5nLgorCisgIE1vZHVsZSBzbmQtdXNiLXVzeDJ5CisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIFRhc2NhbSBVU0IgVVMtMTIyLCBVUy0yMjQgYW5kIFVTLTQyOCBkZXZpY2VzLgorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgZGV2aWNlcywgYXV0b3Byb2JlIGFuZCBob3RwbHVnZ2luZy4KKworICAgIE5vdGU6IHlvdSBuZWVkIHRvIGxvYWQgdGhlIGZpcm13YXJlIHZpYSB1c3gyeWxvYWRlciB1dGlsaXR5IGluY2x1ZGVkCisgICAgICAgICAgaW4gYWxzYS10b29scyBhbmQgYWxzYS1maXJtd2FyZSBwYWNrYWdlcy4KKworICBNb2R1bGUgc25kLXZpYTgyeHgKKyAgLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIEFDJzk3IG1vdGhlcmJvYXJkcyBiYXNlZCBvbiBWSUEgODJDNjg2QS82ODZCLCA4MjMzLAorICAgIDgyMzNBLCA4MjMzQywgODIzNSwgODIzNyAoc291dGgpIGJyaWRnZS4KKworICAgIG1wdV9wb3J0CS0gMHgzMDAsMHgzMTAsMHgzMjAsMHgzMzAsIG90aGVyd2lzZSBvYnRhaW4gQklPUyBzZXR1cAorCQkgIFtWSUE2ODZBLzY4NkIgb25seV0KKyAgICBqb3lzdGljawktIEVuYWJsZSBqb3lzdGljayAoZGVmYXVsdCBvZmYpIFtWSUE2ODZBLzY4NkIgb25seV0KKyAgICBhYzk3X2Nsb2NrCS0gQUMnOTcgY29kZWMgY2xvY2sgYmFzZSAoZGVmYXVsdCA0ODAwMEh6KQorICAgIGR4c19zdXBwb3J0CS0gc3VwcG9ydCBEWFMgY2hhbm5lbHMsCisJCSAgMCA9IGF1dG8gKGRlZmF1bHQpLCAxID0gZW5hYmxlLCAyID0gZGlzYWJsZSwKKwkJICAzID0gNDhrIG9ubHksIDQgPSBubyBWUkEsIDUgPSBlbmFibGUgYW55IHNhbXBsZQorCQkgIHJhdGUgYW5kIGRpZmZlcmVudCBzYW1wbGUgcmF0ZXMgb24gZGlmZmVyZW50CisJCSAgY2hhbm5lbHMKKwkJICBbVklBODIzMy9DLCA4MjM1LCA4MjM3IG9ubHldCisgICAgYWM5N19xdWlyayAgLSBBQyc5NyB3b3JrYXJvdW5kIGZvciBzdHJhbmdlIGhhcmR3YXJlCisJCSAgU2VlICJBQzk3IFF1aXJrIE9wdGlvbiIgc2VjdGlvbiBiZWxvdy4KKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIG9uZSBjaGlwIGFuZCBhdXRvcHJvYmUuCisKKyAgICBOb3RlOiBvbiBzb21lIFNNUCBtb3RoZXJib2FyZHMgbGlrZSBNU0kgNjk0RCB0aGUgaW50ZXJydXB0cyBtaWdodAorICAgICAgICAgIG5vdCBiZSBnZW5lcmF0ZWQgcHJvcGVybHkuICBJbiBzdWNoIGEgY2FzZSwgcGxlYXNlIHRyeSB0bworICAgICAgICAgIHNldCB0aGUgU01QIChvciBNUFMpIHZlcnNpb24gb24gQklPUyB0byAxLjEgaW5zdGVhZCBvZgorICAgICAgICAgIGRlZmF1bHQgdmFsdWUgMS40LiAgVGhlbiB0aGUgaW50ZXJydXB0IG51bWJlciB3aWxsIGJlCisgICAgICAgICAgYXNzaWduZWQgdW5kZXIgMTUuIFlvdSBtaWdodCBhbHNvIHVwZ3JhZGUgeW91ciBCSU9TLgorICAgIAorICAgIE5vdGU6IFZJQTgyMzMvNS83IChub3QgVklBODIzM0EpIGNhbiBzdXBwb3J0IERYUyAoZGlyZWN0IHNvdW5kKQorCSAgY2hhbm5lbHMgYXMgdGhlIGZpcnN0IFBDTS4gIE9uIHRoZXNlIGNoYW5uZWxzLCB1cCB0byA0CisJICBzdHJlYW1zIGNhbiBiZSBwbGF5ZWQgYXQgdGhlIHNhbWUgdGltZSwgYW5kIHRoZSBjb250cm9sbGVyCisJICBjYW4gcGVyZm9ybSBzYW1wbGUgcmF0ZSBjb252ZXJzaW9uIHdpdGggc2VwYXJhdGUgcmF0ZXMgZm9yCisJICBlYWNoIGNoYW5uZWwuCisJICBBcyBkZWZhdWx0IChkeHNfc3VwcG9ydCA9IDApLCA0OGsgZml4ZWQgcmF0ZSBpcyBjaG9zZW4KKwkgIGV4Y2VwdCBmb3IgdGhlIGtub3duIGRldmljZXMgc2luY2UgdGhlIG91dHB1dCBpcyBvZnRlbgorCSAgbm9pc3kgZXhjZXB0IGZvciA0OGsgb24gc29tZSBtb3RoZXIgYm9hcmRzIGR1ZSB0byB0aGUKKwkgIGJ1ZyBvZiBCSU9TLgorCSAgUGxlYXNlIHRyeSBvbmNlIGR4c19zdXBwb3J0PTUgYW5kIGlmIGl0IHdvcmtzIG9uIG90aGVyCisJICBzYW1wbGUgcmF0ZXMgKGUuZy4gNDQuMWtIeiBvZiBtcDMgcGxheWJhY2spLCBwbGVhc2UgbGV0IHVzCisJICBrbm93IHRoZSBQQ0kgc3Vic3lzdGVtIHZlbmRvci9kZXZpY2UgaWQncyAob3V0cHV0IG9mCisJICAibHNwY2kgLW52IikuCisJICBJZiBkeHNfc3VwcG9ydD01IGRvZXMgbm90IHdvcmssIHRyeSBkeHNfc3VwcG9ydD00OyBpZiBpdAorCSAgZG9lc24ndCB3b3JrIHRvbywgdHJ5IGR4c19zdXBwb3J0PTEuICAoZHhzX3N1cHBvcnQ9MSBpcworCSAgdXN1YWxseSBmb3Igb2xkIG1vdGhlcmJvYXJkcy4gIFRoZSBjb3JyZWN0IGltcGxlbWVudGVkCisJICBib2FyZCBzaG91bGQgd29yayB3aXRoIDQgb3IgNS4pICBJZiBpdCBzdGlsbCBkb2Vzbid0CisJICB3b3JrIGFuZCB0aGUgZGVmYXVsdCBzZXR0aW5nIGlzIG9rLCBkeHNfc3VwcG9ydD0zIGlzIHRoZQorCSAgcmlnaHQgY2hvaWNlLiAgSWYgdGhlIGRlZmF1bHQgc2V0dGluZyBkb2Vzbid0IHdvcmsgYXQgYWxsLAorCSAgdHJ5IGR4c19zdXBwb3J0PTIgdG8gZGlzYWJsZSB0aGUgRFhTIGNoYW5uZWxzLgorCSAgSW4gYW55IGNhc2VzLCBwbGVhc2UgbGV0IHVzIGtub3cgdGhlIHJlc3VsdCBhbmQgdGhlCisJICBzdWJzeXN0ZW0gdmVuZG9yL2RldmljZSBpZHMuICBTZWUgIkxpbmtzIGFuZCBBZGRyZXNzZXMiCisJICBiZWxvdy4KKworICAgIE5vdGU6IGZvciB0aGUgTVBVNDAxIG9uIFZJQTgyM3gsIHVzZSBzbmQtbXB1NDAxIGRyaXZlcgorCSAgYWRkaXRpb25hbGx5LiAgVGhlIG1wdV9wb3J0IG9wdGlvbiBpcyBmb3IgVklBNjg2IGNoaXBzIG9ubHkuCisKKyAgICBUaGUgcG93ZXItbWFuYWdlbWVudCBpcyBzdXBwb3J0ZWQuCisKKyAgTW9kdWxlIHNuZC12aWE4Mnh4LW1vZGVtCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBWSUE4Mnh4IEFDOTcgbW9kZW0KKworICAgIGFjOTdfY2xvY2sJLSBBQyc5NyBjb2RlYyBjbG9jayBiYXNlIChkZWZhdWx0IDQ4MDAwSHopCisKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBvbmUgY2FyZCBhbmQgYXV0b3Byb2JlLgorCisgICAgTm90ZTogVGhlIGRlZmF1bHQgaW5kZXggdmFsdWUgb2YgdGhpcyBtb2R1bGUgaXMgLTIsIGkuZS4gdGhlIGZpcnN0CisgICAgICAgICAgc2xvdCBpcyBleGNsdWRlZC4KKworICAgIFRoZSBwb3dlci1tYW5hZ2VtZW50IGlzIHN1cHBvcnRlZC4KKworICBNb2R1bGUgc25kLXZpcm1pZGkKKyAgLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIHZpcnR1YWwgcmF3bWlkaSBkZXZpY2VzLgorICAgIFRoaXMgbW9kdWxlIGNyZWF0ZXMgdmlydHVhbCByYXdtaWRpIGRldmljZXMgd2hpY2ggY29tbXVuaWNhdGUKKyAgICB0byB0aGUgY29ycmVzcG9uZGluZyBBTFNBIHNlcXVlbmNlciBwb3J0cy4KKworICAgIG1pZGlfZGV2cwktIE1JREkgZGV2aWNlcyAjICgxLTQsIGRlZmF1bHQ9NCkKKyAgICAKKyAgICBUaGlzIG1vZHVsZSBzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcy4KKworICBNb2R1bGUgc25kLXZpcnR1b3NvCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vZHVsZSBmb3Igc291bmQgY2FyZHMgYmFzZWQgb24gdGhlIEFzdXMgQVY2Ni9BVjEwMC9BVjIwMCBjaGlwcywKKyAgICBpLmUuLCBYb25hciBEMSwgRFgsIEQyLCBEMlgsIERTLCBEU1gsIEVzc2VuY2UgU1QgKERlbHV4ZSksCisgICAgRXNzZW5jZSBTVFggKElJKSwgSERBVjEuMyAoRGVsdXhlKSwgYW5kIEhEQVYxLjMgU2xpbS4KKworICAgIFRoaXMgbW9kdWxlIHN1cHBvcnRzIGF1dG9wcm9iZSBhbmQgbXVsdGlwbGUgY2FyZHMuCisKKyAgTW9kdWxlIHNuZC12eDIyMgorICAtLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIERpZ2lncmFtIFZYLVBvY2tldCBWWDIyMiwgVjIyMiB2MiBhbmQgTWljIGNhcmRzLgorCisgICAgbWljCQktIEVuYWJsZSBNaWNyb3Bob25lIG9uIFYyMjIgTWljIChOWUkpCisgICAgaWJsCQktIENhcHR1cmUgSUJMIHNpemUuIChkZWZhdWx0ID0gMCwgbWluaW11bSBzaXplKQorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMuCisKKyAgICBXaGVuIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgYXMgYSBtb2R1bGUgYW5kIHRoZSBob3RwbHVnIGZpcm13YXJlCisgICAgaXMgc3VwcG9ydGVkLCB0aGUgZmlybXdhcmUgZGF0YSBpcyBsb2FkZWQgdmlhIGhvdHBsdWcgYXV0b21hdGljYWxseS4KKyAgICBJbnN0YWxsIHRoZSBuZWNlc3NhcnkgZmlybXdhcmUgZmlsZXMgaW4gYWxzYS1maXJtd2FyZSBwYWNrYWdlLgorICAgIFdoZW4gbm8gaG90cGx1ZyBmdyBsb2FkZXIgaXMgYXZhaWxhYmxlLCB5b3UgbmVlZCB0byBsb2FkIHRoZQorICAgIGZpcm13YXJlIHZpYSB2eGxvYWRlciB1dGlsaXR5IGluIGFsc2EtdG9vbHMgcGFja2FnZS4gIFRvIGludm9rZQorICAgIHZ4bG9hZGVyIGF1dG9tYXRpY2FsbHksIGFkZCB0aGUgZm9sbG93aW5nIHRvIC9ldGMvbW9kcHJvYmUuZC9hbHNhLmNvbmYKKworCWluc3RhbGwgc25kLXZ4MjIyIC9zYmluL21vZHByb2JlIC0tZmlyc3QtdGltZSAtaSBzbmQtdngyMjIgJiYgL3Vzci9iaW4vdnhsb2FkZXIKKworICAgIChmb3IgMi4yLzIuNCBrZXJuZWxzLCBhZGQgInBvc3QtaW5zdGFsbCAvdXNyL2Jpbi92eGxvYWRlciIgdG8KKyAgICAgL2V0Yy9tb2R1bGVzLmNvbmYsIGluc3RlYWQuKQorICAgIElCTCBzaXplIGRlZmluZXMgdGhlIGludGVycnVwdHMgcGVyaW9kIGZvciBQQ00uICBUaGUgc21hbGxlciBzaXplCisgICAgZ2l2ZXMgc21hbGxlciBsYXRlbmN5IGJ1dCBsZWFkcyB0byBtb3JlIENQVSBjb25zdW1wdGlvbiwgdG9vLgorICAgIFRoZSBzaXplIGlzIHVzdWFsbHkgYWxpZ25lZCB0byAxMjYuICBBcyBkZWZhdWx0ICg9MCksIHRoZSBzbWFsbGVzdAorICAgIHNpemUgaXMgY2hvc2VuLiAgVGhlIHBvc3NpYmxlIElCTCB2YWx1ZXMgY2FuIGJlIGZvdW5kIGluCisgICAgL3Byb2MvYXNvdW5kL2NhcmRYL3Z4LXN0YXR1cyBwcm9jIGZpbGUuCisKKyAgICBUaGUgcG93ZXItbWFuYWdlbWVudCBpcyBzdXBwb3J0ZWQuCisKKyAgTW9kdWxlIHNuZC12eHBvY2tldAorICAtLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBNb2R1bGUgZm9yIERpZ2lncmFtIFZYLVBvY2tldCBWWDIgYW5kIDQ0MCBQQ01DSUEgY2FyZHMuCisKKyAgICBpYmwgICAgICAtIENhcHR1cmUgSUJMIHNpemUuIChkZWZhdWx0ID0gMCwgbWluaW11bSBzaXplKQorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgbXVsdGlwbGUgY2FyZHMuICBUaGUgbW9kdWxlIGlzIGNvbXBpbGVkIG9ubHkgd2hlbgorICAgIFBDTUNJQSBpcyBzdXBwb3J0ZWQgb24ga2VybmVsLgorCisgICAgV2l0aCB0aGUgb2xkZXIgMi42Lngga2VybmVsLCB0byBhY3RpdmF0ZSB0aGUgZHJpdmVyIHZpYSB0aGUgY2FyZAorICAgIG1hbmFnZXIsIHlvdSdsbCBuZWVkIHRvIHNldCB1cCAvZXRjL3BjbWNpYS92eHBvY2tldC5jb25mLiAgU2VlIHRoZQorICAgIHNvdW5kL3BjbWNpYS92eC92eHBvY2tldC5jLiAgMi42LjEzIG9yIGxhdGVyIGtlcm5lbCByZXF1aXJlcyBubworICAgIGxvbmdlciByZXF1aXJlIGEgY29uZmlnIGZpbGUuCisKKyAgICBXaGVuIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgYXMgYSBtb2R1bGUgYW5kIHRoZSBob3RwbHVnIGZpcm13YXJlCisgICAgaXMgc3VwcG9ydGVkLCB0aGUgZmlybXdhcmUgZGF0YSBpcyBsb2FkZWQgdmlhIGhvdHBsdWcgYXV0b21hdGljYWxseS4KKyAgICBJbnN0YWxsIHRoZSBuZWNlc3NhcnkgZmlybXdhcmUgZmlsZXMgaW4gYWxzYS1maXJtd2FyZSBwYWNrYWdlLgorICAgIFdoZW4gbm8gaG90cGx1ZyBmdyBsb2FkZXIgaXMgYXZhaWxhYmxlLCB5b3UgbmVlZCB0byBsb2FkIHRoZQorICAgIGZpcm13YXJlIHZpYSB2eGxvYWRlciB1dGlsaXR5IGluIGFsc2EtdG9vbHMgcGFja2FnZS4KKworICAgIEFib3V0IGNhcHR1cmUgSUJMLCBzZWUgdGhlIGRlc2NyaXB0aW9uIG9mIHNuZC12eDIyMiBtb2R1bGUuCisKKyAgICBOb3RlOiBzbmQtdnhwNDQwIGRyaXZlciBpcyBtZXJnZWQgdG8gc25kLXZ4cG9ja2V0IGRyaXZlciBzaW5jZQorICAgICAgICAgICBBTFNBIDEuMC4xMC4KKworICAgIFRoZSBwb3dlci1tYW5hZ2VtZW50IGlzIHN1cHBvcnRlZC4KKworICBNb2R1bGUgc25kLXltZnBjaQorICAtLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBZYW1haGEgUENJIGNoaXBzIChZTUY3MngsIFlNRjc0eCAmIFlNRjc1eCkuCisKKyAgICBtcHVfcG9ydCAgICAgIC0gMHgzMDAsMHgzMzAsMHgzMzIsMHgzMzQsIDAgKGRpc2FibGUpIGJ5IGRlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgIDEgKGF1dG8tZGV0ZWN0IGZvciBZTUY3NDQvNzU0IG9ubHkpCisgICAgZm1fcG9ydCAgICAgICAtIDB4Mzg4LDB4Mzk4LDB4M2EwLDB4M2E4LCAwIChkaXNhYmxlKSBieSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgIDEgKGF1dG8tZGV0ZWN0IGZvciBZTUY3NDQvNzU0IG9ubHkpCisgICAgam95c3RpY2tfcG9ydCAtIDB4MjAxLDB4MjAyLDB4MjA0LDB4MjA1LCAwIChkaXNhYmxlKSBieSBkZWZhdWx0LAorICAgICAgICAgICAgICAgICAgICAxIChhdXRvLWRldGVjdCkKKyAgICByZWFyX3N3aXRjaCAgIC0gZW5hYmxlIHNoYXJlZCByZWFyL2xpbmUtaW4gc3dpdGNoIChib29sKQorCisgICAgVGhpcyBtb2R1bGUgc3VwcG9ydHMgYXV0b3Byb2JlIGFuZCBtdWx0aXBsZSBjaGlwcy4KKworICAgIFRoZSBwb3dlci1tYW5hZ2VtZW50IGlzIHN1cHBvcnRlZC4KKworICBNb2R1bGUgc25kLXBkYXVkaW9jZgorICAtLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9kdWxlIGZvciBTb3VuZCBDb3JlIFBEQXVkaW9DRiBzb3VuZCBjYXJkLgorCisgICAgVGhlIHBvd2VyLW1hbmFnZW1lbnQgaXMgc3VwcG9ydGVkLgorCisKK0FDOTcgUXVpcmsgT3B0aW9uCis9PT09PT09PT09PT09PT09PQorCitUaGUgYWM5N19xdWlyayBvcHRpb24gaXMgdXNlZCB0byBlbmFibGUvb3ZlcnJpZGUgdGhlIHdvcmthcm91bmQgZm9yCitzcGVjaWZpYyBkZXZpY2VzIG9uIGRyaXZlcnMgZm9yIG9uLWJvYXJkIEFDJzk3IGNvbnRyb2xsZXJzIGxpa2UKK3NuZC1pbnRlbDh4MC4gIFNvbWUgaGFyZHdhcmUgaGF2ZSBzd2FwcGVkIG91dHB1dCBwaW5zIGJldHdlZW4gTWFzdGVyCithbmQgSGVhZHBob25lLCBvciBTdXJyb3VuZCAodGhhbmtzIHRvIGNvbmZ1c2lvbiBvZiBBQyc5Nworc3BlY2lmaWNhdGlvbnMgZnJvbSB2ZXJzaW9uIHRvIHZlcnNpb24gOi0pCisKK1RoZSBkcml2ZXIgcHJvdmlkZXMgdGhlIGF1dG8tZGV0ZWN0aW9uIG9mIGtub3duIHByb2JsZW1hdGljIGRldmljZXMsCitidXQgc29tZSBtaWdodCBiZSB1bmtub3duIG9yIHdyb25nbHkgZGV0ZWN0ZWQuICBJbiBzdWNoIGEgY2FzZSwgcGFzcwordGhlIHByb3BlciB2YWx1ZSB3aXRoIHRoaXMgb3B0aW9uLgorCitUaGUgZm9sbG93aW5nIHN0cmluZ3MgYXJlIGFjY2VwdGVkOgorICAgIC0gZGVmYXVsdAlEb24ndCBvdmVycmlkZSB0aGUgZGVmYXVsdCBzZXR0aW5nCisgICAgLSBub25lCURpc2FibGUgdGhlIHF1aXJrCisgICAgLSBocF9vbmx5CUJpbmQgTWFzdGVyIGFuZCBIZWFkcGhvbmUgY29udHJvbHMgYXMgYSBzaW5nbGUgY29udHJvbAorICAgIC0gc3dhcF9ocAlTd2FwIGhlYWRwaG9uZSBhbmQgbWFzdGVyIGNvbnRyb2xzCisgICAgLSBzd2FwX3N1cnJvdW5kICBTd2FwIG1hc3RlciBhbmQgc3Vycm91bmQgY29udHJvbHMKKyAgICAtIGFkX3NoYXJpbmcgIEZvciBBRDE5ODUsIHR1cm4gb24gT01TIGJpdCBhbmQgdXNlIGhlYWRwaG9uZQorICAgIC0gYWxjX2phY2sJRm9yIEFMQzY1eCwgdHVybiBvbiB0aGUgamFjayBzZW5zZSBtb2RlCisgICAgLSBpbnZfZWFwZAlJbnZlcnRlZCBFQVBEIGltcGxlbWVudGF0aW9uCisgICAgLSBtdXRlX2xlZAlCaW5kIEVBUEQgYml0IGZvciB0dXJuaW5nIG9uL29mZiBtdXRlIExFRAorCitGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIGNvcnJlc3BvbmRpbmcgaW50ZWdlciB2YWx1ZSAtMSwgMCwKKy4uLiBhcmUgIGFjY2VwdGVkLCB0b28uCisKK0ZvciBleGFtcGxlLCBpZiAiTWFzdGVyIiB2b2x1bWUgY29udHJvbCBoYXMgbm8gZWZmZWN0IG9uIHlvdXIgZGV2aWNlCitidXQgb25seSAiSGVhZHBob25lIiBkb2VzLCBwYXNzIGFjOTdfcXVpcms9aHBfb25seSBtb2R1bGUgb3B0aW9uLgorCisKK0NvbmZpZ3VyaW5nIE5vbi1JU0FQTlAgQ2FyZHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworV2hlbiB0aGUga2VybmVsIGlzIGNvbmZpZ3VyZWQgd2l0aCBJU0EtUG5QIHN1cHBvcnQsIHRoZSBtb2R1bGVzCitzdXBwb3J0aW5nIHRoZSBpc2FwbnAgY2FyZHMgd2lsbCBoYXZlIG1vZHVsZSBvcHRpb25zICJpc2FwbnAiLgorSWYgdGhpcyBvcHRpb24gaXMgc2V0LCAqb25seSogdGhlIElTQS1QblAgZGV2aWNlcyB3aWxsIGJlIHByb2JlZC4KK0ZvciBwcm9iaW5nIHRoZSBub24gSVNBLVBuUCBjYXJkcywgeW91IGhhdmUgdG8gcGFzcyAiaXNhcG5wPTAiIG9wdGlvbgordG9nZXRoZXIgd2l0aCB0aGUgcHJvcGVyIGkvbyBhbmQgaXJxIGNvbmZpZ3VyYXRpb24uCisKK1doZW4gdGhlIGtlcm5lbCBpcyBjb25maWd1cmVkIHdpdGhvdXQgSVNBLVBuUCBzdXBwb3J0LCBpc2FwbnAgb3B0aW9uCit3aWxsIGJlIG5vdCBidWlsdCBpbi4KKworCitNb2R1bGUgQXV0b2xvYWRpbmcgU3VwcG9ydAorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIEFMU0EgZHJpdmVycyBjYW4gYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkgb24gZGVtYW5kIGJ5IGRlZmluaW5nCittb2R1bGUgYWxpYXNlcy4gIFRoZSBzdHJpbmcgJ3NuZC1jYXJkLSUxJyBpcyByZXF1ZXN0ZWQgZm9yIEFMU0EgbmF0aXZlCitkZXZpY2VzIHdoZXJlICVpIGlzIHNvdW5kIGNhcmQgbnVtYmVyIGZyb20gemVybyB0byBzZXZlbi4KKworVG8gYXV0by1sb2FkIGFuIEFMU0EgZHJpdmVyIGZvciBPU1Mgc2VydmljZXMsIGRlZmluZSB0aGUgc3RyaW5nCisnc291bmQtc2xvdC0laScgd2hlcmUgJWkgbWVhbnMgdGhlIHNsb3QgbnVtYmVyIGZvciBPU1MsIHdoaWNoCitjb3JyZXNwb25kcyB0byB0aGUgY2FyZCBpbmRleCBvZiBBTFNBLiAgVXN1YWxseSwgZGVmaW5lIHRoaXMKK2FzIHRoZSBzYW1lIGNhcmQgbW9kdWxlLgorCitBbiBleGFtcGxlIGNvbmZpZ3VyYXRpb24gZm9yIGEgc2luZ2xlIGVtdTEwazEgY2FyZCBpcyBsaWtlIGJlbG93OgorLS0tLS0gL2V0Yy9tb2Rwcm9iZS5kL2Fsc2EuY29uZgorYWxpYXMgc25kLWNhcmQtMCBzbmQtZW11MTBrMQorYWxpYXMgc291bmQtc2xvdC0wIHNuZC1lbXUxMGsxCistLS0tLSAvZXRjL21vZHByb2JlLmQvYWxzYS5jb25mCisKK1RoZSBhdmFpbGFibGUgbnVtYmVyIG9mIGF1dG8tbG9hZGVkIHNvdW5kIGNhcmRzIGRlcGVuZHMgb24gdGhlIG1vZHVsZQorb3B0aW9uICJjYXJkc19saW1pdCIgb2Ygc25kIG1vZHVsZS4gIEFzIGRlZmF1bHQgaXQncyBzZXQgdG8gMS4KK1RvIGVuYWJsZSB0aGUgYXV0by1sb2FkaW5nIG9mIG11bHRpcGxlIGNhcmRzLCBzcGVjaWZ5IHRoZSBudW1iZXIgb2YKK3NvdW5kIGNhcmRzIGluIHRoYXQgb3B0aW9uLgorCitXaGVuIG11bHRpcGxlIGNhcmRzIGFyZSBhdmFpbGFibGUsIGl0J2QgYmV0dGVyIHRvIHNwZWNpZnkgdGhlIGluZGV4CitudW1iZXIgZm9yIGVhY2ggY2FyZCB2aWEgbW9kdWxlIG9wdGlvbiwgdG9vLCBzbyB0aGF0IHRoZSBvcmRlciBvZgorY2FyZHMgaXMga2VwdCBjb25zaXN0ZW50LgorCitBbiBleGFtcGxlIGNvbmZpZ3VyYXRpb24gZm9yIHR3byBzb3VuZCBjYXJkcyBpcyBsaWtlIGJlbG93OgorCistLS0tLSAvZXRjL21vZHByb2JlLmQvYWxzYS5jb25mCisjIEFMU0EgcG9ydGlvbgorb3B0aW9ucyBzbmQgY2FyZHNfbGltaXQ9MgorYWxpYXMgc25kLWNhcmQtMCBzbmQtaW50ZXJ3YXZlCithbGlhcyBzbmQtY2FyZC0xIHNuZC1lbnMxMzcxCitvcHRpb25zIHNuZC1pbnRlcndhdmUgaW5kZXg9MAorb3B0aW9ucyBzbmQtZW5zMTM3MSBpbmRleD0xCisjIE9TUy9GcmVlIHBvcnRpb24KK2FsaWFzIHNvdW5kLXNsb3QtMCBzbmQtaW50ZXJ3YXZlCithbGlhcyBzb3VuZC1zbG90LTEgc25kLWVuczEzNzEKKy0tLS0tIC9ldGMvbW9kcHJvYmUuZC9hbHNhLmNvbmYKKworSW4gdGhpcyBleGFtcGxlLCB0aGUgaW50ZXJ3YXZlIGNhcmQgaXMgYWx3YXlzIGxvYWRlZCBhcyB0aGUgZmlyc3QgY2FyZAorKGluZGV4IDApIGFuZCBlbnMxMzcxIGFzIHRoZSBzZWNvbmQgKGluZGV4IDEpLgorCitBbHRlcm5hdGl2ZSAoYW5kIG5ldykgd2F5IHRvIGZpeGF0ZSB0aGUgc2xvdCBhc3NpZ25tZW50IGlzIHRvIHVzZQorInNsb3RzIiBvcHRpb24gb2Ygc25kIG1vZHVsZS4gIEluIHRoZSBjYXNlIGFib3ZlLCBzcGVjaWZ5IGxpa2UgdGhlCitmb2xsb3dpbmc6IAorCitvcHRpb25zIHNuZCBzbG90cz1zbmQtaW50ZXJ3YXZlLHNuZC1lbnMxMzcxCisKK1RoZW4sIHRoZSBmaXJzdCBzbG90ICgjMCkgaXMgcmVzZXJ2ZWQgZm9yIHNuZC1pbnRlcndhdmUgZHJpdmVyLCBhbmQKK3RoZSBzZWNvbmQgKCMxKSBmb3Igc25kLWVuczEzNzEuICBZb3UgY2FuIG9taXQgaW5kZXggb3B0aW9uIGluIGVhY2gKK2RyaXZlciBpZiBzbG90cyBvcHRpb24gaXMgdXNlZCAoYWx0aG91Z2ggeW91IGNhbiBzdGlsbCBoYXZlIHRoZW0gYXQKK3RoZSBzYW1lIHRpbWUgYXMgbG9uZyBhcyB0aGV5IGRvbid0IGNvbmZsaWN0KS4KKworVGhlIHNsb3RzIG9wdGlvbiBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IgYXZvaWRpbmcgdGhlIHBvc3NpYmxlCitob3QtcGx1Z2dpbmcgYW5kIHRoZSByZXN1bHRhbnQgc2xvdCBjb25mbGljdC4gIEZvciBleGFtcGxlLCBpbiB0aGUKK2Nhc2UgYWJvdmUgYWdhaW4sIHRoZSBmaXJzdCB0d28gc2xvdHMgYXJlIGFscmVhZHkgcmVzZXJ2ZWQuICBJZiBhbnkKK290aGVyIGRyaXZlciAoZS5nLiBzbmQtdXNiLWF1ZGlvKSBpcyBsb2FkZWQgYmVmb3JlIHNuZC1pbnRlcndhdmUgb3IKK3NuZC1lbnMxMzcxLCBpdCB3aWxsIGJlIGFzc2lnbmVkIHRvIHRoZSB0aGlyZCBvciBsYXRlciBzbG90LgorCitXaGVuIGEgbW9kdWxlIG5hbWUgaXMgZ2l2ZW4gd2l0aCAnIScsIHRoZSBzbG90IHdpbGwgYmUgZ2l2ZW4gZm9yIGFueQorbW9kdWxlcyBidXQgdGhhdCBuYW1lLiAgRm9yIGV4YW1wbGUsICJzbG90cz0hc25kLXBjc3AiIHdpbGwgcmVzZXJ2ZQordGhlIGZpcnN0IHNsb3QgZm9yIGFueSBtb2R1bGVzIGJ1dCBzbmQtcGNzcC4gCisKKworQUxTQSBQQ00gZGV2aWNlcyB0byBPU1MgZGV2aWNlcyBtYXBwaW5nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworL2Rldi9zbmQvcGNtQzBEMFtjfHBdICAtPiAvZGV2L2F1ZGlvMCAoL2Rldi9hdWRpbykgLT4gbWlub3IgNAorL2Rldi9zbmQvcGNtQzBEMFtjfHBdICAtPiAvZGV2L2RzcDAgKC9kZXYvZHNwKSAgICAgLT4gbWlub3IgMworL2Rldi9zbmQvcGNtQzBEMVtjfHBdICAtPiAvZGV2L2Fkc3AwICgvZGV2L2Fkc3ApICAgLT4gbWlub3IgMTIKKy9kZXYvc25kL3BjbUMxRDBbY3xwXSAgLT4gL2Rldi9hdWRpbzEgICAgICAgICAgICAgIC0+IG1pbm9yIDQrMTYgPSAyMAorL2Rldi9zbmQvcGNtQzFEMFtjfHBdICAtPiAvZGV2L2RzcDEgICAgICAgICAgICAgICAgLT4gbWlub3IgMysxNiA9IDE5CisvZGV2L3NuZC9wY21DMUQxW2N8cF0gIC0+IC9kZXYvYWRzcDEgICAgICAgICAgICAgICAtPiBtaW5vciAxMisxNiA9IDI4CisvZGV2L3NuZC9wY21DMkQwW2N8cF0gIC0+IC9kZXYvYXVkaW8yICAgICAgICAgICAgICAtPiBtaW5vciA0KzMyID0gMzYKKy9kZXYvc25kL3BjbUMyRDBbY3xwXSAgLT4gL2Rldi9kc3AyICAgICAgICAgICAgICAgIC0+IG1pbm9yIDMrMzIgPSAzOQorL2Rldi9zbmQvcGNtQzJEMVtjfHBdICAtPiAvZGV2L2Fkc3AyICAgICAgICAgICAgICAgLT4gbWlub3IgMTIrMzIgPSA0NAorCitUaGUgZmlyc3QgbnVtYmVyIGZyb20gL2Rldi9zbmQvcGNtQ3tYfUR7WX1bY3xwXSBleHByZXNzaW9uIG1lYW5zCitzb3VuZCBjYXJkIG51bWJlciBhbmQgc2Vjb25kIG1lYW5zIGRldmljZSBudW1iZXIuICBUaGUgQUxTQSBkZXZpY2VzCitoYXZlIGVpdGhlciAnYycgb3IgJ3AnIHN1ZmZpeCBpbmRpY2F0aW5nIHRoZSBkaXJlY3Rpb24sIGNhcHR1cmUgYW5kCitwbGF5YmFjaywgcmVzcGVjdGl2ZWx5LgorCitQbGVhc2Ugbm90ZSB0aGF0IHRoZSBkZXZpY2UgbWFwcGluZyBhYm92ZSBtYXkgYmUgdmFyaWVkIHZpYSB0aGUgbW9kdWxlCitvcHRpb25zIG9mIHNuZC1wY20tb3NzIG1vZHVsZS4KKworCitQcm9jIGludGVyZmFjZXMgKC9wcm9jL2Fzb3VuZCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisvcHJvYy9hc291bmQvY2FyZCMvcGNtI1tjcF0vb3NzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFN0cmluZyAiZXJhc2UiIC0gZXJhc2UgYWxsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgT1NTIGFwcGxpY2F0aW9ucworICBTdHJpbmcgIjxhcHBfbmFtZT4gPGZyYWdtZW50cz4gPGZyYWdtZW50X3NpemU+IFs8b3B0aW9ucz5dIgorCisgICA8YXBwX25hbWU+IC0gbmFtZSBvZiBhcHBsaWNhdGlvbiB3aXRoIChoaWdoZXIgcHJpb3JpdHkpIG9yIHdpdGhvdXQgcGF0aAorICAgPGZyYWdtZW50cz4gLSBudW1iZXIgb2YgZnJhZ21lbnRzIG9yIHplcm8gaWYgYXV0bworICAgPGZyYWdtZW50X3NpemU+IC0gc2l6ZSBvZiBmcmFnbWVudCBpbiBieXRlcyBvciB6ZXJvIGlmIGF1dG8KKyAgIDxvcHRpb25zPiAtIG9wdGlvbmFsIHBhcmFtZXRlcnMKKwkgIC0gZGlzYWJsZSAgIHRoZSBhcHBsaWNhdGlvbiB0cmllcyB0byBvcGVuIGEgcGNtIGRldmljZSBmb3IKKwkJICAgICAgdGhpcyBjaGFubmVsIGJ1dCBkb2VzIG5vdCB3YW50IHRvIHVzZSBpdC4KKwkJICAgICAgKENhdXNlIGEgYnVnIG9yIG1tYXAgbmVlZHMpCisJCSAgICAgIEl0J3MgZ29vZCBmb3IgUXVha2UgZXRjLi4uCisJICAtIGRpcmVjdCAgICBkb24ndCB1c2UgcGx1Z2lucworCSAgLSBibG9jayAgICAgZm9yY2UgYmxvY2sgbW9kZSAocnZwbGF5ZXIpCisJICAtIG5vbi1ibG9jayBmb3JjZSBub24tYmxvY2sgbW9kZQorCSAgLSB3aG9sZS1mcmFnICB3cml0ZSBvbmx5IHdob2xlIGZyYWdtZW50cyAob3B0aW1pemF0aW9uIGFmZmVjdGluZworCQkJcGxheWJhY2sgb25seSkKKwkgIC0gbm8tc2lsZW5jZSAgZG8gbm90IGZpbGwgc2lsZW5jZSBhaGVhZCB0byBhdm9pZCBjbGlja3MKKwkgIC0gYnVnZ3ktcHRyCVJldHVybnMgdGhlIHdoaXRlc3BhY2UgYmxvY2tzIGluIEdFVE9QVFIgaW9jdGwKKwkJCWluc3RlYWQgb2YgZmlsbGVkIGJsb2NrcworCisgIEV4YW1wbGU6IGVjaG8gIngxMWFtcCAxMjggMTYzODQiID4gL3Byb2MvYXNvdW5kL2NhcmQwL3BjbTBwL29zcworICAgICAgICAgICBlY2hvICJzcXVha2UgMCAwIGRpc2FibGUiID4gL3Byb2MvYXNvdW5kL2NhcmQwL3BjbTBjL29zcworCSAgIGVjaG8gInJ2cGxheWVyIDAgMCBibG9jayIgPiAvcHJvYy9hc291bmQvY2FyZDAvcGNtMHAvb3NzCisKKworRWFybHkgQnVmZmVyIEFsbG9jYXRpb24KKz09PT09PT09PT09PT09PT09PT09PT09CisKK1NvbWUgZHJpdmVycyAoZS5nLiBoZHNwKSByZXF1aXJlIHRoZSBsYXJnZSBjb250aWd1b3VzIGJ1ZmZlcnMsIGFuZAorc29tZXRpbWVzIGl0J3MgdG9vIGxhdGUgdG8gZmluZCBzdWNoIHNwYWNlcyB3aGVuIHRoZSBkcml2ZXIgbW9kdWxlIGlzCithY3R1YWxseSBsb2FkZWQgZHVlIHRvIG1lbW9yeSBmcmFnbWVudGF0aW9uLiAgWW91IGNhbiBwcmUtYWxsb2NhdGUgdGhlCitQQ00gYnVmZmVycyBieSBsb2FkaW5nIHNuZC1wYWdlLWFsbG9jIG1vZHVsZSBhbmQgd3JpdGUgY29tbWFuZHMgdG8gaXRzCitwcm9jIGZpbGUgaW4gcHJpb3IsIGZvciBleGFtcGxlLCBpbiB0aGUgZWFybHkgYm9vdCBzdGFnZSBsaWtlCisvZXRjL2luaXQuZC8qLmxvY2FsIHNjcmlwdHMuCisKK1JlYWRpbmcgdGhlIHByb2MgZmlsZSAvcHJvYy9kcml2ZXJzL3NuZC1wYWdlLWFsbG9jIHNob3dzIHRoZSBjdXJyZW50Cit1c2FnZSBvZiBwYWdlIGFsbG9jYXRpb24uICBJbiB3cml0aW5nLCB5b3UgY2FuIHNlbmQgdGhlIGZvbGxvd2luZworY29tbWFuZHMgdG8gdGhlIHNuZC1wYWdlLWFsbG9jIGRyaXZlcjoKKworICAtIGFkZCBWRU5ET1IgREVWSUNFIE1BU0sgU0laRSBCVUZGRVJTCisKKyAgICBWRU5ET1IgYW5kIERFVklDRSBhcmUgUENJIHZlbmRvciBhbmQgZGV2aWNlIElEcy4gIFRoZXkgdGFrZQorICAgIGludGVnZXIgbnVtYmVycyAoMHggcHJlZml4IGlzIG5lZWRlZCBmb3IgdGhlIGhleCkuCisgICAgTUFTSyBpcyB0aGUgUENJIERNQSBtYXNrLiAgUGFzcyAwIGlmIG5vdCByZXN0cmljdGVkLgorICAgIFNJWkUgaXMgdGhlIHNpemUgb2YgZWFjaCBidWZmZXIgdG8gYWxsb2NhdGUuICBZb3UgY2FuIHBhc3MKKyAgICBrIGFuZCBtIHN1ZmZpeCBmb3IgS0IgYW5kIE1CLiAgVGhlIG1heCBudW1iZXIgaXMgMTZNQi4KKyAgICBCVUZGRVJTIGlzIHRoZSBudW1iZXIgb2YgYnVmZmVycyB0byBhbGxvY2F0ZS4gIEl0IG11c3QgYmUgZ3JlYXRlcgorICAgIHRoYW4gMC4gIFRoZSBtYXggbnVtYmVyIGlzIDQuCisKKyAgLSBlcmFzZQorCisgICAgVGhpcyB3aWxsIGVyYXNlIHRoZSBhbGwgcHJlLWFsbG9jYXRlZCBidWZmZXJzIHdoaWNoIGFyZSBub3QgaW4KKyAgICB1c2UuCisKKworTGlua3MgYW5kIEFkZHJlc3NlcworPT09PT09PT09PT09PT09PT09PQorCisgIEFMU0EgcHJvamVjdCBob21lcGFnZQorICAgICAgIGh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZworCisgIEtlcm5lbCBCdWd6aWxsYQorICAgICAgIGh0dHA6Ly9idWd6aWxsYS5rZXJuZWwub3JnLworCisgIEFMU0EgRGV2ZWxvcGVycyBNTAorICAgICAgIG1haWx0bzphbHNhLWRldmVsQGFsc2EtcHJvamVjdC5vcmcKKworICBhbHNhLWluZm8uc2ggc2NyaXB0CisgICAgICAgaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnL2Fsc2EtaW5mby5zaApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL0F1ZGlneS1taXhlci50eHQgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvQXVkaWd5LW1peGVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjEwZGM2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL0F1ZGlneS1taXhlci50eHQKQEAgLTAsMCArMSwzNDUgQEAKKworCQlTb3VuZCBCbGFzdGVyIEF1ZGlneSBtaXhlciAvIGRlZmF1bHQgRFNQIGNvZGUKKwkJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGlzIGJhc2VkIG9uIFNCLUxpdmUtbWl4ZXIudHh0LgorCitUaGUgRU1VMTBLMiBjaGlwcyBoYXZlIGEgRFNQIHBhcnQgd2hpY2ggY2FuIGJlIHByb2dyYW1tZWQgdG8gc3VwcG9ydCAKK3ZhcmlvdXMgd2F5cyBvZiBzYW1wbGUgcHJvY2Vzc2luZywgd2hpY2ggaXMgZGVzY3JpYmVkIGhlcmUuCisoVGhpcyBhcnRpY2xlIGRvZXMgbm90IGRlYWwgd2l0aCB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5IG9mIHRoZSAKK0VNVTEwSzIgY2hpcHMuIFNlZSB0aGUgbWFudWFscyBzZWN0aW9uIGZvciBmdXJ0aGVyIGRldGFpbHMuKQorCitUaGUgQUxTQSBkcml2ZXIgcHJvZ3JhbXMgdGhpcyBwb3J0aW9uIG9mIGNoaXAgYnkgZGVmYXVsdCBjb2RlCisoY2FuIGJlIGFsdGVyZWQgbGF0ZXIpIHdoaWNoIG9mZmVycyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uYWxpdHk6CisKKworMSkgRGlnaXRhbCBtaXhlciBjb250cm9scworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGVzZSBjb250cm9scyBhcmUgYnVpbHQgdXNpbmcgdGhlIERTUCBpbnN0cnVjdGlvbnMuIFRoZXkgb2ZmZXIgZXh0ZW5kZWQKK2Z1bmN0aW9uYWxpdHkuIE9ubHkgdGhlIGRlZmF1bHQgYnVpbGQtaW4gY29kZSBpbiB0aGUgQUxTQSBkcml2ZXIgaXMgZGVzY3JpYmVkCitoZXJlLiBOb3RlIHRoYXQgdGhlIGNvbnRyb2xzIHdvcmsgYXMgYXR0ZW51YXRvcnM6IHRoZSBtYXhpbXVtIHZhbHVlIGlzIHRoZSAKK25ldXRyYWwgcG9zaXRpb24gbGVhdmluZyB0aGUgc2lnbmFsIHVuY2hhbmdlZC4gTm90ZSB0aGF0IGlmIHRoZSAgc2FtZSBkZXN0aW5hdGlvbiAKK2lzIG1lbnRpb25lZCBpbiBtdWx0aXBsZSBjb250cm9scywgdGhlIHNpZ25hbCBpcyBhY2N1bXVsYXRlZCBhbmQgY2FuIGJlIHdyYXBwZWQgCisoc2V0IHRvIG1heGltYWwgb3IgbWluaW1hbCB2YWx1ZSB3aXRob3V0IGNoZWNraW5nIG9mIG92ZXJmbG93KS4KKworCitFeHBsYW5hdGlvbiBvZiB1c2VkIGFiYnJldmlhdGlvbnM6CisKK0RBQyAgICAtIGRpZ2l0YWwgdG8gYW5hbG9nIGNvbnZlcnRlcgorQURDICAgIC0gYW5hbG9nIHRvIGRpZ2l0YWwgY29udmVydGVyCitJMlMgICAgLSBvbmUtd2F5IHRocmVlIHdpcmUgc2VyaWFsIGJ1cyBmb3IgZGlnaXRhbCBzb3VuZCBieSBQaGlsaXBzIFNlbWljb25kdWN0b3JzCisgICAgICAgICAodGhpcyBzdGFuZGFyZCBpcyB1c2VkIGZvciBjb25uZWN0aW5nIHN0YW5kYWxvbmUgREFDIGFuZCBBREMgY29udmVydGVycykKK0xGRSAgICAtIGxvdyBmcmVxdWVuY3kgZWZmZWN0cyAoc3Vid29vZmVyIHNpZ25hbCkKK0FDOTcgICAtIGEgY2hpcCBjb250YWluaW5nIGFuIGFuYWxvZyBtaXhlciwgREFDIGFuZCBBREMgY29udmVydGVycworSUVDOTU4IC0gUy9QRElGCitGWC1idXMgLSB0aGUgRU1VMTBLMiBjaGlwIGhhcyBhbiBlZmZlY3QgYnVzIGNvbnRhaW5pbmcgNjQgYWNjdW11bGF0b3JzLgorICAgICAgICAgRWFjaCBvZiB0aGUgc3ludGhlc2l6ZXIgdm9pY2VzIGNhbiBmZWVkIGl0cyBvdXRwdXQgdG8gdGhlc2UgYWNjdW11bGF0b3JzCisgICAgICAgICBhbmQgdGhlIERTUCBtaWNyb2NvbnRyb2xsZXIgY2FuIG9wZXJhdGUgd2l0aCB0aGUgcmVzdWx0aW5nIHN1bS4KKworbmFtZT0nUENNIEZyb250IFBsYXliYWNrIFZvbHVtZScsaW5kZXg9MAorCitUaGlzIGNvbnRyb2wgaXMgdXNlZCB0byBhdHRlbnVhdGUgc2FtcGxlcyBmb3IgbGVmdCBhbmQgcmlnaHQgZnJvbnQgUENNIEZYLWJ1cworYWNjdW11bGF0b3JzLiBBTFNBIHVzZXMgYWNjdW11bGF0b3JzIDggYW5kIDkgZm9yIGxlZnQgYW5kIHJpZ2h0IGZyb250IFBDTSAKK3NhbXBsZXMgZm9yIDUuMSBwbGF5YmFjay4gVGhlIHJlc3VsdCBzYW1wbGVzIGFyZSBmb3J3YXJkZWQgdG8gdGhlIGZyb250IERBQyBQQ00gCitzbG90cyBvZiB0aGUgUGhpbGlwcyBEQUMuCisKK25hbWU9J1BDTSBTdXJyb3VuZCBQbGF5YmFjayBWb2x1bWUnLGluZGV4PTAKKworVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gYXR0ZW51YXRlIHNhbXBsZXMgZm9yIGxlZnQgYW5kIHJpZ2h0IHN1cnJvdW5kIFBDTSBGWC1idXMKK2FjY3VtdWxhdG9ycy4gQUxTQSB1c2VzIGFjY3VtdWxhdG9ycyAyIGFuZCAzIGZvciBsZWZ0IGFuZCByaWdodCBzdXJyb3VuZCBQQ00gCitzYW1wbGVzIGZvciA1LjEgcGxheWJhY2suIFRoZSByZXN1bHQgc2FtcGxlcyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBzdXJyb3VuZCBEQUMgUENNIAorc2xvdHMgb2YgdGhlIFBoaWxpcHMgREFDLgorCituYW1lPSdQQ00gQ2VudGVyIFBsYXliYWNrIFZvbHVtZScsaW5kZXg9MAorCitUaGlzIGNvbnRyb2wgaXMgdXNlZCB0byBhdHRlbnVhdGUgc2FtcGxlcyBmb3IgY2VudGVyIFBDTSBGWC1idXMgYWNjdW11bGF0b3IuCitBTFNBIHVzZXMgYWNjdW11bGF0b3IgNiBmb3IgY2VudGVyIFBDTSBzYW1wbGUgZm9yIDUuMSBwbGF5YmFjay4gVGhlIHJlc3VsdCBzYW1wbGUKK2lzIGZvcndhcmRlZCB0byB0aGUgY2VudGVyIERBQyBQQ00gc2xvdCBvZiB0aGUgUGhpbGlwcyBEQUMuCisKK25hbWU9J1BDTSBMRkUgUGxheWJhY2sgVm9sdW1lJyxpbmRleD0wCisKK1RoaXMgY29udHJvbCBpcyB1c2VkIHRvIGF0dGVudWF0ZSBzYW1wbGUgZm9yIExGRSBQQ00gRlgtYnVzIGFjY3VtdWxhdG9yLiAKK0FMU0EgdXNlcyBhY2N1bXVsYXRvciA3IGZvciBMRkUgUENNIHNhbXBsZSBmb3IgNS4xIHBsYXliYWNrLiBUaGUgcmVzdWx0IHNhbXBsZSAKK2lzIGZvcndhcmRlZCB0byB0aGUgTEZFIERBQyBQQ00gc2xvdCBvZiB0aGUgUGhpbGlwcyBEQUMuCisKK25hbWU9J1BDTSBQbGF5YmFjayBWb2x1bWUnLGluZGV4PTAKKworVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gYXR0ZW51YXRlIHNhbXBsZXMgZm9yIGxlZnQgYW5kIHJpZ2h0IFBDTSBGWC1idXMKK2FjY3VtdWxhdG9ycy4gQUxTQSB1c2VzIGFjY3VtdWxhdG9ycyAwIGFuZCAxIGZvciBsZWZ0IGFuZCByaWdodCBQQ00gc2FtcGxlcyBmb3IKK3N0ZXJlbyBwbGF5YmFjay4gVGhlIHJlc3VsdCBzYW1wbGVzIGFyZSBmb3J3YXJkZWQgdG8gdGhlIGZyb250IERBQyBQQ00gc2xvdHMgCitvZiB0aGUgUGhpbGlwcyBEQUMuCisKK25hbWU9J1BDTSBDYXB0dXJlIFZvbHVtZScsaW5kZXg9MAorCitUaGlzIGNvbnRyb2wgaXMgdXNlZCB0byBhdHRlbnVhdGUgc2FtcGxlcyBmb3IgbGVmdCBhbmQgcmlnaHQgUENNIEZYLWJ1cworYWNjdW11bGF0b3IuIEFMU0EgdXNlcyBhY2N1bXVsYXRvcnMgMCBhbmQgMSBmb3IgbGVmdCBhbmQgcmlnaHQgUENNLgorVGhlIHJlc3VsdCBpcyBmb3J3YXJkZWQgdG8gdGhlIEFEQyBjYXB0dXJlIEZJRk8gKHRodXMgdG8gdGhlIHN0YW5kYXJkIGNhcHR1cmUKK1BDTSBkZXZpY2UpLgorCituYW1lPSdNdXNpYyBQbGF5YmFjayBWb2x1bWUnLGluZGV4PTAKKworVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gYXR0ZW51YXRlIHNhbXBsZXMgZm9yIGxlZnQgYW5kIHJpZ2h0IE1JREkgRlgtYnVzCithY2N1bXVsYXRvcnMuIEFMU0EgdXNlcyBhY2N1bXVsYXRvcnMgNCBhbmQgNSBmb3IgbGVmdCBhbmQgcmlnaHQgTUlESSBzYW1wbGVzLgorVGhlIHJlc3VsdCBzYW1wbGVzIGFyZSBmb3J3YXJkZWQgdG8gdGhlIGZyb250IERBQyBQQ00gc2xvdHMgb2YgdGhlIEFDOTcgY29kZWMuCisKK25hbWU9J011c2ljIENhcHR1cmUgVm9sdW1lJyxpbmRleD0wCisKK1RoZXNlIGNvbnRyb2xzIGFyZSB1c2VkIHRvIGF0dGVudWF0ZSBzYW1wbGVzIGZvciBsZWZ0IGFuZCByaWdodCBNSURJIEZYLWJ1cworYWNjdW11bGF0b3IuIEFMU0EgdXNlcyBhY2N1bXVsYXRvcnMgNCBhbmQgNSBmb3IgbGVmdCBhbmQgcmlnaHQgUENNLgorVGhlIHJlc3VsdCBpcyBmb3J3YXJkZWQgdG8gdGhlIEFEQyBjYXB0dXJlIEZJRk8gKHRodXMgdG8gdGhlIHN0YW5kYXJkIGNhcHR1cmUKK1BDTSBkZXZpY2UpLgorCituYW1lPSdNaWMgUGxheWJhY2sgVm9sdW1lJyxpbmRleD0wCisKK1RoaXMgY29udHJvbCBpcyB1c2VkIHRvIGF0dGVudWF0ZSBzYW1wbGVzIGZvciBsZWZ0IGFuZCByaWdodCBNaWMgaW5wdXQuCitGb3IgTWljIGlucHV0IGlzIHVzZWQgQUM5NyBjb2RlYy4gVGhlIHJlc3VsdCBzYW1wbGVzIGFyZSBmb3J3YXJkZWQgdG8gCit0aGUgZnJvbnQgREFDIFBDTSBzbG90cyBvZiB0aGUgUGhpbGlwcyBEQUMuIFNhbXBsZXMgYXJlIGZvcndhcmRlZCB0byBNaWMKK2NhcHR1cmUgRklGTyAoZGV2aWNlIDEgLSAxNmJpdC84S0h6IG1vbm8pIHRvbyB3aXRob3V0IHZvbHVtZSBjb250cm9sLgorCituYW1lPSdNaWMgQ2FwdHVyZSBWb2x1bWUnLGluZGV4PTAKKworVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gYXR0ZW51YXRlIHNhbXBsZXMgZm9yIGxlZnQgYW5kIHJpZ2h0IE1pYyBpbnB1dC4KK1RoZSByZXN1bHQgaXMgZm9yd2FyZGVkIHRvIHRoZSBBREMgY2FwdHVyZSBGSUZPICh0aHVzIHRvIHRoZSBzdGFuZGFyZCBjYXB0dXJlCitQQ00gZGV2aWNlKS4KKworbmFtZT0nQXVkaWd5IENEIFBsYXliYWNrIFZvbHVtZScsaW5kZXg9MAorCitUaGlzIGNvbnRyb2wgaXMgdXNlZCB0byBhdHRlbnVhdGUgc2FtcGxlcyBmcm9tIGxlZnQgYW5kIHJpZ2h0IElFQzk1OCBUVEwKK2RpZ2l0YWwgaW5wdXRzICh1c3VhbGx5IHVzZWQgYnkgYSBDRFJPTSBkcml2ZSkuIFRoZSByZXN1bHQgc2FtcGxlcyBhcmUKK2ZvcndhcmRlZCB0byB0aGUgZnJvbnQgREFDIFBDTSBzbG90cyBvZiB0aGUgUGhpbGlwcyBEQUMuCisKK25hbWU9J0F1ZGlneSBDRCBDYXB0dXJlIFZvbHVtZScsaW5kZXg9MAorCitUaGlzIGNvbnRyb2wgaXMgdXNlZCB0byBhdHRlbnVhdGUgc2FtcGxlcyBmcm9tIGxlZnQgYW5kIHJpZ2h0IElFQzk1OCBUVEwKK2RpZ2l0YWwgaW5wdXRzICh1c3VhbGx5IHVzZWQgYnkgYSBDRFJPTSBkcml2ZSkuIFRoZSByZXN1bHQgc2FtcGxlcyBhcmUKK2ZvcndhcmRlZCB0byB0aGUgQURDIGNhcHR1cmUgRklGTyAodGh1cyB0byB0aGUgc3RhbmRhcmQgY2FwdHVyZSBQQ00gZGV2aWNlKS4KKworbmFtZT0nSUVDOTU4IE9wdGljYWwgUGxheWJhY2sgVm9sdW1lJyxpbmRleD0wCisKK1RoaXMgY29udHJvbCBpcyB1c2VkIHRvIGF0dGVudWF0ZSBzYW1wbGVzIGZyb20gbGVmdCBhbmQgcmlnaHQgSUVDOTU4IG9wdGljYWwKK2RpZ2l0YWwgaW5wdXQuIFRoZSByZXN1bHQgc2FtcGxlcyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBmcm9udCBEQUMgUENNIHNsb3RzCitvZiB0aGUgUGhpbGlwcyBEQUMuCisKK25hbWU9J0lFQzk1OCBPcHRpY2FsIENhcHR1cmUgVm9sdW1lJyxpbmRleD0wCisKK1RoaXMgY29udHJvbCBpcyB1c2VkIHRvIGF0dGVudWF0ZSBzYW1wbGVzIGZyb20gbGVmdCBhbmQgcmlnaHQgSUVDOTU4IG9wdGljYWwKK2RpZ2l0YWwgaW5wdXRzLiBUaGUgcmVzdWx0IHNhbXBsZXMgYXJlIGZvcndhcmRlZCB0byB0aGUgQURDIGNhcHR1cmUgRklGTworKHRodXMgdG8gdGhlIHN0YW5kYXJkIGNhcHR1cmUgUENNIGRldmljZSkuCisKK25hbWU9J0xpbmUyIFBsYXliYWNrIFZvbHVtZScsaW5kZXg9MAorCitUaGlzIGNvbnRyb2wgaXMgdXNlZCB0byBhdHRlbnVhdGUgc2FtcGxlcyBmcm9tIGxlZnQgYW5kIHJpZ2h0IEkyUyBBREMKK2lucHV0cyAob24gdGhlIEF1ZGlneURyaXZlKS4gVGhlIHJlc3VsdCBzYW1wbGVzIGFyZSBmb3J3YXJkZWQgdG8gdGhlIGZyb250CitEQUMgUENNIHNsb3RzIG9mIHRoZSBQaGlsaXBzIERBQy4KKworbmFtZT0nTGluZTIgQ2FwdHVyZSBWb2x1bWUnLGluZGV4PTEKKworVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gYXR0ZW51YXRlIHNhbXBsZXMgZnJvbSBsZWZ0IGFuZCByaWdodCBJMlMgQURDCitpbnB1dHMgKG9uIHRoZSBBdWRpZ3lEcml2ZSkuIFRoZSByZXN1bHQgc2FtcGxlcyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBBREMKK2NhcHR1cmUgRklGTyAodGh1cyB0byB0aGUgc3RhbmRhcmQgY2FwdHVyZSBQQ00gZGV2aWNlKS4KKworbmFtZT0nQW5hbG9nIE1peCBQbGF5YmFjayBWb2x1bWUnLGluZGV4PTAKKworVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gYXR0ZW51YXRlIHNhbXBsZXMgZnJvbSBsZWZ0IGFuZCByaWdodCBJMlMgQURDCitpbnB1dHMgZnJvbSBQaGlsaXBzIEFEQy4gVGhlIHJlc3VsdCBzYW1wbGVzIGFyZSBmb3J3YXJkZWQgdG8gdGhlIGZyb250CitEQUMgUENNIHNsb3RzIG9mIHRoZSBQaGlsaXBzIERBQy4gVGhpcyBjb250YWlucyBtaXggZnJvbSBhbmFsb2cgc291cmNlcworbGlrZSBDRCwgTGluZSBJbiwgQXV4LCAuLi4uCisKK25hbWU9J0FuYWxvZyBNaXggQ2FwdHVyZSBWb2x1bWUnLGluZGV4PTEKKworVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gYXR0ZW51YXRlIHNhbXBsZXMgZnJvbSBsZWZ0IGFuZCByaWdodCBJMlMgQURDCitpbnB1dHMgUGhpbGlwcyBBREMuIFRoZSByZXN1bHQgc2FtcGxlcyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBBREMKK2NhcHR1cmUgRklGTyAodGh1cyB0byB0aGUgc3RhbmRhcmQgY2FwdHVyZSBQQ00gZGV2aWNlKS4KKworbmFtZT0nQXV4MiBQbGF5YmFjayBWb2x1bWUnLGluZGV4PTAKKworVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gYXR0ZW51YXRlIHNhbXBsZXMgZnJvbSBsZWZ0IGFuZCByaWdodCBJMlMgQURDCitpbnB1dHMgKG9uIHRoZSBBdWRpZ3lEcml2ZSkuIFRoZSByZXN1bHQgc2FtcGxlcyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBmcm9udAorREFDIFBDTSBzbG90cyBvZiB0aGUgUGhpbGlwcyBEQUMuCisKK25hbWU9J0F1eDIgQ2FwdHVyZSBWb2x1bWUnLGluZGV4PTEKKworVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gYXR0ZW51YXRlIHNhbXBsZXMgZnJvbSBsZWZ0IGFuZCByaWdodCBJMlMgQURDCitpbnB1dHMgKG9uIHRoZSBBdWRpZ3lEcml2ZSkuIFRoZSByZXN1bHQgc2FtcGxlcyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBBREMKK2NhcHR1cmUgRklGTyAodGh1cyB0byB0aGUgc3RhbmRhcmQgY2FwdHVyZSBQQ00gZGV2aWNlKS4KKworbmFtZT0nRnJvbnQgUGxheWJhY2sgVm9sdW1lJyxpbmRleD0wCisKK0FsbCBzdGVyZW8gc2lnbmFscyBhcmUgbWl4ZWQgdG9nZXRoZXIgYW5kIG1pcnJvcmVkIHRvIHN1cnJvdW5kLCBjZW50ZXIgYW5kIExGRS4KK1RoaXMgY29udHJvbCBpcyB1c2VkIHRvIGF0dGVudWF0ZSBzYW1wbGVzIGZvciBsZWZ0IGFuZCByaWdodCBmcm9udCBzcGVha2VycyBvZgordGhpcyBtaXguCisKK25hbWU9J1N1cnJvdW5kIFBsYXliYWNrIFZvbHVtZScsaW5kZXg9MAorCitBbGwgc3RlcmVvIHNpZ25hbHMgYXJlIG1peGVkIHRvZ2V0aGVyIGFuZCBtaXJyb3JlZCB0byBzdXJyb3VuZCwgY2VudGVyIGFuZCBMRkUuCitUaGlzIGNvbnRyb2wgaXMgdXNlZCB0byBhdHRlbnVhdGUgc2FtcGxlcyBmb3IgbGVmdCBhbmQgcmlnaHQgc3Vycm91bmQgc3BlYWtlcnMgb2YKK3RoaXMgbWl4LgorCituYW1lPSdDZW50ZXIgUGxheWJhY2sgVm9sdW1lJyxpbmRleD0wCisKK0FsbCBzdGVyZW8gc2lnbmFscyBhcmUgbWl4ZWQgdG9nZXRoZXIgYW5kIG1pcnJvcmVkIHRvIHN1cnJvdW5kLCBjZW50ZXIgYW5kIExGRS4KK1RoaXMgY29udHJvbCBpcyB1c2VkIHRvIGF0dGVudWF0ZSBzYW1wbGUgZm9yIGNlbnRlciBzcGVha2VyIG9mIHRoaXMgbWl4LgorCituYW1lPSdMRkUgUGxheWJhY2sgVm9sdW1lJyxpbmRleD0wCisKK0FsbCBzdGVyZW8gc2lnbmFscyBhcmUgbWl4ZWQgdG9nZXRoZXIgYW5kIG1pcnJvcmVkIHRvIHN1cnJvdW5kLCBjZW50ZXIgYW5kIExGRS4KK1RoaXMgY29udHJvbCBpcyB1c2VkIHRvIGF0dGVudWF0ZSBzYW1wbGUgZm9yIExGRSBzcGVha2VyIG9mIHRoaXMgbWl4LgorCituYW1lPSdUb25lIENvbnRyb2wgLSBTd2l0Y2gnLGluZGV4PTAKKworVGhpcyBjb250cm9sIHR1cm5zIHRoZSB0b25lIGNvbnRyb2wgb24gb3Igb2ZmLiBUaGUgc2FtcGxlcyBmb3IgZnJvbnQsIHJlYXIKK2FuZCBjZW50ZXIgLyBMRkUgb3V0cHV0cyBhcmUgYWZmZWN0ZWQuCisKK25hbWU9J1RvbmUgQ29udHJvbCAtIEJhc3MnLGluZGV4PTAKKworVGhpcyBjb250cm9sIHNldHMgdGhlIGJhc3MgaW50ZW5zaXR5LiBUaGVyZSBpcyBubyBuZXV0cmFsIHZhbHVlISEKK1doZW4gdGhlIHRvbmUgY29udHJvbCBjb2RlIGlzIGFjdGl2YXRlZCwgdGhlIHNhbXBsZXMgYXJlIGFsd2F5cyBtb2RpZmllZC4KK1RoZSBjbG9zZXN0IHZhbHVlIHRvIHB1cmUgc2lnbmFsIGlzIDIwLgorCituYW1lPSdUb25lIENvbnRyb2wgLSBUcmVibGUnLGluZGV4PTAKKworVGhpcyBjb250cm9sIHNldHMgdGhlIHRyZWJsZSBpbnRlbnNpdHkuIFRoZXJlIGlzIG5vIG5ldXRyYWwgdmFsdWUhIQorV2hlbiB0aGUgdG9uZSBjb250cm9sIGNvZGUgaXMgYWN0aXZhdGVkLCB0aGUgc2FtcGxlcyBhcmUgYWx3YXlzIG1vZGlmaWVkLgorVGhlIGNsb3Nlc3QgdmFsdWUgdG8gcHVyZSBzaWduYWwgaXMgMjAuCisKK25hbWU9J01hc3RlciBQbGF5YmFjayBWb2x1bWUnLGluZGV4PTAKKworVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gYXR0ZW51YXRlIHNhbXBsZXMgZm9yIGZyb250LCBzdXJyb3VuZCwgY2VudGVyIGFuZCAKK0xGRSBvdXRwdXRzLgorCituYW1lPSdJRUM5NTggT3B0aWNhbCBSYXcgUGxheWJhY2sgU3dpdGNoJyxpbmRleD0wCisKK0lmIHRoaXMgc3dpdGNoIGlzIG9uLCB0aGVuIHRoZSBzYW1wbGVzIGZvciB0aGUgSUVDOTU4IChTL1BESUYpIGRpZ2l0YWwKK291dHB1dCBhcmUgdGFrZW4gb25seSBmcm9tIHRoZSByYXcgRlg4MDEwIFBDTSwgb3RoZXJ3aXNlIHN0YW5kYXJkIGZyb250CitQQ00gc2FtcGxlcyBhcmUgdGFrZW4uCisKKworMikgUENNIHN0cmVhbSByZWxhdGVkIGNvbnRyb2xzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZT0nRU1VMTBLMSBQQ00gVm9sdW1lJyxpbmRleCAwLTMxCisKK0NoYW5uZWwgdm9sdW1lIGF0dGVudWF0aW9uIGluIHJhbmdlIDAtMHhmZmZmLiBUaGUgbWF4aW11bSB2YWx1ZSAobm8KK2F0dGVudWF0aW9uKSBpcyBkZWZhdWx0LiBUaGUgY2hhbm5lbCBtYXBwaW5nIGZvciB0aHJlZSB2YWx1ZXMgaXMKK2FzIGZvbGxvd3M6CisKKwkwIC0gbW9ubywgZGVmYXVsdCAweGZmZmYgKG5vIGF0dGVudWF0aW9uKQorCTEgLSBsZWZ0LCBkZWZhdWx0IDB4ZmZmZiAobm8gYXR0ZW51YXRpb24pCisJMiAtIHJpZ2h0LCBkZWZhdWx0IDB4ZmZmZiAobm8gYXR0ZW51YXRpb24pCisKK25hbWU9J0VNVTEwSzEgUENNIFNlbmQgUm91dGluZycsaW5kZXggMC0zMQorCitUaGlzIGNvbnRyb2wgc3BlY2lmaWVzIHRoZSBkZXN0aW5hdGlvbiAtIEZYLWJ1cyBhY2N1bXVsYXRvcnMuIFRoZXJlIDI0Cit2YWx1ZXMgd2l0aCB0aGlzIG1hcHBpbmc6CisKKwkgMCAtICBtb25vLCBBIGRlc3RpbmF0aW9uIChGWC1idXMgMC02MyksIGRlZmF1bHQgMAorCSAxIC0gIG1vbm8sIEIgZGVzdGluYXRpb24gKEZYLWJ1cyAwLTYzKSwgZGVmYXVsdCAxCisJIDIgLSAgbW9ubywgQyBkZXN0aW5hdGlvbiAoRlgtYnVzIDAtNjMpLCBkZWZhdWx0IDIKKwkgMyAtICBtb25vLCBEIGRlc3RpbmF0aW9uIChGWC1idXMgMC02MyksIGRlZmF1bHQgMworCSA0IC0gIG1vbm8sIEUgZGVzdGluYXRpb24gKEZYLWJ1cyAwLTYzKSwgZGVmYXVsdCAwCisJIDUgLSAgbW9ubywgRiBkZXN0aW5hdGlvbiAoRlgtYnVzIDAtNjMpLCBkZWZhdWx0IDAKKwkgNiAtICBtb25vLCBHIGRlc3RpbmF0aW9uIChGWC1idXMgMC02MyksIGRlZmF1bHQgMAorCSA3IC0gIG1vbm8sIEggZGVzdGluYXRpb24gKEZYLWJ1cyAwLTYzKSwgZGVmYXVsdCAwCisJIDggLSAgbGVmdCwgQSBkZXN0aW5hdGlvbiAoRlgtYnVzIDAtNjMpLCBkZWZhdWx0IDAKKwkgOSAtICBsZWZ0LCBCIGRlc3RpbmF0aW9uIChGWC1idXMgMC02MyksIGRlZmF1bHQgMQorCTEwIC0gIGxlZnQsIEMgZGVzdGluYXRpb24gKEZYLWJ1cyAwLTYzKSwgZGVmYXVsdCAyCisJMTEgLSAgbGVmdCwgRCBkZXN0aW5hdGlvbiAoRlgtYnVzIDAtNjMpLCBkZWZhdWx0IDMKKwkxMiAtICBsZWZ0LCBFIGRlc3RpbmF0aW9uIChGWC1idXMgMC02MyksIGRlZmF1bHQgMAorCTEzIC0gIGxlZnQsIEYgZGVzdGluYXRpb24gKEZYLWJ1cyAwLTYzKSwgZGVmYXVsdCAwCisJMTQgLSAgbGVmdCwgRyBkZXN0aW5hdGlvbiAoRlgtYnVzIDAtNjMpLCBkZWZhdWx0IDAKKwkxNSAtICBsZWZ0LCBIIGRlc3RpbmF0aW9uIChGWC1idXMgMC02MyksIGRlZmF1bHQgMAorCTE2IC0gcmlnaHQsIEEgZGVzdGluYXRpb24gKEZYLWJ1cyAwLTYzKSwgZGVmYXVsdCAwCisJMTcgLSByaWdodCwgQiBkZXN0aW5hdGlvbiAoRlgtYnVzIDAtNjMpLCBkZWZhdWx0IDEKKwkxOCAtIHJpZ2h0LCBDIGRlc3RpbmF0aW9uIChGWC1idXMgMC02MyksIGRlZmF1bHQgMgorCTE5IC0gcmlnaHQsIEQgZGVzdGluYXRpb24gKEZYLWJ1cyAwLTYzKSwgZGVmYXVsdCAzCisJMjAgLSByaWdodCwgRSBkZXN0aW5hdGlvbiAoRlgtYnVzIDAtNjMpLCBkZWZhdWx0IDAKKwkyMSAtIHJpZ2h0LCBGIGRlc3RpbmF0aW9uIChGWC1idXMgMC02MyksIGRlZmF1bHQgMAorCTIyIC0gcmlnaHQsIEcgZGVzdGluYXRpb24gKEZYLWJ1cyAwLTYzKSwgZGVmYXVsdCAwCisJMjMgLSByaWdodCwgSCBkZXN0aW5hdGlvbiAoRlgtYnVzIDAtNjMpLCBkZWZhdWx0IDAKKworRG9uJ3QgZm9yZ2V0IHRoYXQgaXQncyBpbGxlZ2FsIHRvIGFzc2lnbiBhIGNoYW5uZWwgdG8gdGhlIHNhbWUgRlgtYnVzIGFjY3VtdWxhdG9yIAorbW9yZSB0aGFuIG9uY2UgKGl0IG1lYW5zIDA9MCAmJiAxPTAgaXMgYW4gaW52YWxpZCBjb21iaW5hdGlvbikuCisgCituYW1lPSdFTVUxMEsxIFBDTSBTZW5kIFZvbHVtZScsaW5kZXggMC0zMQorCitJdCBzcGVjaWZpZXMgdGhlIGF0dGVudWF0aW9uIChhbW91bnQpIGZvciBnaXZlbiBkZXN0aW5hdGlvbiBpbiByYW5nZSAwLTI1NS4KK1RoZSBjaGFubmVsIG1hcHBpbmcgaXMgZm9sbG93aW5nOgorCisJIDAgLSAgbW9ubywgQSBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDI1NSAobm8gYXR0ZW51YXRpb24pCisJIDEgLSAgbW9ubywgQiBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDI1NSAobm8gYXR0ZW51YXRpb24pCisJIDIgLSAgbW9ubywgQyBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDAgKG11dGUpCisJIDMgLSAgbW9ubywgRCBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDAgKG11dGUpCisJIDQgLSAgbW9ubywgRSBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDAgKG11dGUpCisJIDUgLSAgbW9ubywgRiBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDAgKG11dGUpCisJIDYgLSAgbW9ubywgRyBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDAgKG11dGUpCisJIDcgLSAgbW9ubywgSCBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDAgKG11dGUpCisJIDggLSAgbGVmdCwgQSBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDI1NSAobm8gYXR0ZW51YXRpb24pCisJIDkgLSAgbGVmdCwgQiBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDAgKG11dGUpCisJMTAgLSAgbGVmdCwgQyBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDAgKG11dGUpCisJMTEgLSAgbGVmdCwgRCBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDAgKG11dGUpCisJMTIgLSAgbGVmdCwgRSBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDAgKG11dGUpCisJMTMgLSAgbGVmdCwgRiBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDAgKG11dGUpCisJMTQgLSAgbGVmdCwgRyBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDAgKG11dGUpCisJMTUgLSAgbGVmdCwgSCBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDAgKG11dGUpCisJMTYgLSByaWdodCwgQSBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDAgKG11dGUpCisJMTcgLSByaWdodCwgQiBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDI1NSAobm8gYXR0ZW51YXRpb24pCisJMTggLSByaWdodCwgQyBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDAgKG11dGUpCisJMTkgLSByaWdodCwgRCBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDAgKG11dGUpCisJMjAgLSByaWdodCwgRSBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDAgKG11dGUpCisJMjEgLSByaWdodCwgRiBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDAgKG11dGUpCisJMjIgLSByaWdodCwgRyBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDAgKG11dGUpCisJMjMgLSByaWdodCwgSCBkZXN0aW5hdGlvbiBhdHRuLCBkZWZhdWx0IDAgKG11dGUpCisKKworCis0KSBNQU5VQUxTL1BBVEVOVFM6CistLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Z0cDovL29wZW5zb3VyY2UuY3JlYXRpdmUuY29tL3B1Yi9kb2MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICAgICBGaWxlczoKKyAgICAgICAgTE00NTQ1LnBkZiAgICAgIEFDOTcgQ29kZWMKKworICAgICAgICBtMjA0OS5wZGYgICAgICAgVGhlIEVNVTEwSzEgRGlnaXRhbCBBdWRpbyBQcm9jZXNzb3IKKworICAgICAgICBob2c2My5wcyAgICAgICAgRlg4MDEwIC0gQSBEU1AgQ2hpcCBBcmNoaXRlY3R1cmUgZm9yIEF1ZGlvIEVmZmVjdHMKKworCitXSVBPIFBhdGVudHMKKy0tLS0tLS0tLS0tLQorICAgICAgICBQYXRlbnQgbnVtYmVyczoKKyAgICAgICAgV08gOTkwMTgxMyAoQTEpIEF1ZGlvIEVmZmVjdHMgUHJvY2Vzc29yIHdpdGggbXVsdGlwbGUgYXN5bmNocm9ub3VzIChKYW4uIDE0LCAxOTk5KQorICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtcworCisgICAgICAgIFdPIDk5MDE4MTQgKEExKSBQcm9jZXNzb3Igd2l0aCBJbnN0cnVjdGlvbiBTZXQgZm9yIEF1ZGlvIEVmZmVjdHMgKEphbi4gMTQsIDE5OTkpCisKKyAgICAgICAgV08gOTkwMTk1MyAoQTEpIEF1ZGlvIEVmZmVjdHMgUHJvY2Vzc29yIGhhdmluZyBEZWNvdXBsZWQgSW5zdHJ1Y3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGlvbiBhbmQgQXVkaW8gRGF0YSBTZXF1ZW5jaW5nIChKYW4uIDE0LCAxOTk5KQorCisKK1VTIFBhdGVudHMgKGh0dHA6Ly93d3cudXNwdG8uZ292LykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICAgICBVUyA1OTI1ODQxICAgICAgRGlnaXRhbCBTYW1wbGluZyBJbnN0cnVtZW50IGVtcGxveWluZyBjYWNoZSBtZW1vcnkgKEp1bC4gMjAsIDE5OTkpCisKKyAgICAgICAgVVMgNTkyODM0MiAgICAgIEF1ZGlvIEVmZmVjdHMgUHJvY2Vzc29yIGludGVncmF0ZWQgb24gYSBzaW5nbGUgY2hpcCAoSnVsLiAyNywgMTk5OSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggYSBtdWx0aXBvcnQgbWVtb3J5IG9udG8gd2hpY2ggbXVsdGlwbGUgYXN5bmNocm9ub3VzCisgICAgICAgICAgICAgICAgICAgICAgICBkaWdpdGFsIHNvdW5kIHNhbXBsZXMgY2FuIGJlIGNvbmN1cnJlbnRseSBsb2FkZWQKKworICAgICAgICBVUyA1OTMwMTU4ICAgICAgUHJvY2Vzc29yIHdpdGggSW5zdHJ1Y3Rpb24gU2V0IGZvciBBdWRpbyBFZmZlY3RzIChKdWwuIDI3LCAxOTk5KQorCisgICAgICAgIFVTIDYwMzIyMzUgICAgICBNZW1vcnkgaW5pdGlhbGl6YXRpb24gY2lyY3VpdCAoVHJhbSkgKEZlYi4gMjksIDIwMDApCisKKyAgICAgICAgVVMgNjEzODIwNyAgICAgIEludGVycG9sYXRpb24gbG9vcGluZyBvZiBhdWRpbyBzYW1wbGVzIGluIGNhY2hlIGNvbm5lY3RlZCB0byAgICAoT2N0LiAyNCwgMjAwMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBidXMgd2l0aCBwcmlvcml0aXphdGlvbiBhbmQgbW9kaWZpY2F0aW9uIG9mIGJ1cyB0cmFuc2ZlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIGluIGFjY29yZGFuY2Ugd2l0aCBsb29wIGVuZHMgYW5kIG1pbmltdW0gYmxvY2sgc2l6ZXMKKworICAgICAgICBVUyA2MTUxNjcwICAgICAgTWV0aG9kIGZvciBjb25zZXJ2aW5nIG1lbW9yeSBzdG9yYWdlIHVzaW5nIGEgKE5vdi4gMjEsIDIwMDApCisgICAgICAgICAgICAgICAgICAgICAgICBwb29sIG9mICBzaG9ydCB0ZXJtIG1lbW9yeSByZWdpc3RlcnMKKworICAgICAgICBVUyA2MTk1NzE1ICAgICAgSW50ZXJydXB0IGNvbnRyb2wgZm9yIG11bHRpcGxlIHByb2dyYW1zIGNvbW11bmljYXRpbmcgd2l0aCAgICAgIChGZWIuIDI3LCAyMDAxKQorICAgICAgICAgICAgICAgICAgICAgICAgYSBjb21tb24gaW50ZXJydXB0IGJ5IGFzc29jaWF0aW5nIHByb2dyYW1zIHRvIEdQIHJlZ2lzdGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaW5nIGludGVycnVwdCByZWdpc3RlciwgcG9sbGluZyBHUCByZWdpc3RlcnMsIGFuZCBpbnZva2luZworICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sgcm91dGluZSBhc3NvY2lhdGVkIHdpdGggZGVmaW5lZCBpbnRlcnJ1cHQgcmVnaXN0ZXIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9BdWRpb3BoaWxlLVVzYi50eHQgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvQXVkaW9waGlsZS1Vc2IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3YTVlZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvQXVkaW9waGlsZS1Vc2IudHh0CkBAIC0wLDAgKzEsNDQyIEBACisJR3VpZGUgdG8gdXNpbmcgTS1BdWRpbyBBdWRpb3BoaWxlIFVTQiB3aXRoIEFMU0EgYW5kIEphY2sJdjEuNQorCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKwkgICAgVGhpYmF1bHQgTGUgTWV1ciA8VGhpYmF1bHQuTGVNZXVyQHN1cGVsZWMuZnI+CisKK1RoaXMgZG9jdW1lbnQgaXMgYSBndWlkZSB0byB1c2luZyB0aGUgTS1BdWRpbyBBdWRpb3BoaWxlIFVTQiAodG0pIGRldmljZSB3aXRoIAorQUxTQSBhbmQgSkFDSy4KKworSGlzdG9yeQorPT09PT09PQorKiB2MS40IC0gVGhpYmF1bHQgTGUgTWV1ciAoMjAwNy0wNy0xMSkKKyAtIEFkZGVkIExvdyBFbmRpYW5uZXNzIG5hdHVyZSBvZiAxNmJpdHMtbW9kZXMKKyAgIGZvdW5kIGJ5IEhha2FuIExlbm5lc3RhbCA8SGFrYW4uTGVubmVzdGFsQGJyZnNvZHJhaGFtbi5zZT4KKyAtIE1vZGlmeWluZyBkb2N1bWVudCBzdHJ1Y3R1cmUKKyogdjEuNSAtIFRoaWJhdWx0IExlIE1ldXIgKDIwMDctMDctMTIpCisgLSBBZGRlZCBBQzMvRFRTIHBhc3N0aHJ1IGluZm8KKworCisxIC0gQXVkaW9waGlsZSBVU0IgU3BlY3MgYW5kIGNvcnJlY3QgdXNhZ2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIHBhcnQgaXMgYSByZW1pbmRlciBvZiBpbXBvcnRhbnQgZmFjdHMgYWJvdXQgdGhlIGZ1bmN0aW9ucyBhbmQgbGltaXRhdGlvbnMgCitvZiB0aGUgZGV2aWNlLgorCitUaGUgZGV2aWNlIGhhcyA0IGF1ZGlvIGludGVyZmFjZXMsIGFuZCAyIE1JREkgcG9ydHM6CisgKiBBbmFsb2cgU3RlcmVvIElucHV0IChBaSkKKyAgIC0gVGhpcyBwb3J0IHN1cHBvcnRzIDIgcGFpcnMgb2YgbGluZS1sZXZlbCBhdWRpbyBpbnB1dHMgKDEvNCIgVFMgYW5kIFJDQSkgCisgICAtIFdoZW4gdGhlIDEvNCIgVFMgKGphY2spIGNvbm5lY3RvcnMgYXJlIGNvbm5lY3RlZCwgdGhlIFJDQSBjb25uZWN0b3JzCisgICAgIGFyZSBkaXNhYmxlZAorICogQW5hbG9nIFN0ZXJlbyBPdXRwdXQgKEFvKQorICogRGlnaXRhbCBTdGVyZW8gSW5wdXQgKERpKQorICogRGlnaXRhbCBTdGVyZW8gT3V0cHV0IChEbykKKyAqIE1pZGkgSW4gKE1pKQorICogTWlkaSBPdXQgKE1vKQorCitUaGUgaW50ZXJuYWwgREFDL0FEQyBoYXMgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJpc3RpY3M6CisqIHNhbXBsZSBkZXB0aCBvZiAxNiBvciAyNCBiaXRzCisqIHNhbXBsZSByYXRlIGZyb20gOGtIeiB0byA5NmtIegorKiBUd28gaW50ZXJmYWNlcyBjYW4ndCB1c2UgZGlmZmVyZW50IHNhbXBsZSBkZXB0aHMgYXQgdGhlIHNhbWUgdGltZS4KK01vcmVvdmVyLCB0aGUgQXVkaW9waGlsZSBVU0IgZG9jdW1lbnRhdGlvbiBnaXZlcyB0aGUgZm9sbG93aW5nIFdhcm5pbmc6CisiUGxlYXNlIGV4aXQgYW55IGF1ZGlvIGFwcGxpY2F0aW9uIHJ1bm5pbmcgYmVmb3JlIHN3aXRjaGluZyBiZXR3ZWVuIGJpdCBkZXB0aHMiCisKK0R1ZSB0byB0aGUgVVNCIDEuMSBiYW5kd2lkdGggbGltaXRhdGlvbiwgYSBsaW1pdGVkIG51bWJlciBvZiBpbnRlcmZhY2VzIGNhbiBiZSAKK2FjdGl2YXRlZCBhdCB0aGUgc2FtZSB0aW1lIGRlcGVuZGluZyBvbiB0aGUgYXVkaW8gbW9kZSBzZWxlY3RlZDoKKyAqIDE2LWJpdC80OGtIeiA9PT4gNCBjaGFubmVscyBpbiArIDQgY2hhbm5lbHMgb3V0CisgICAtIEFpK0FvK0RpK0RvCisgKiAyNC1iaXQvNDhrSHogPT0+IDQgY2hhbm5lbHMgaW4gKyAyIGNoYW5uZWxzIG91dCwgCisgICAgICAgICAgICAgICAgICAgIG9yIDIgY2hhbm5lbHMgaW4gKyA0IGNoYW5uZWxzIG91dAorICAgLSBBaStBbytEbyBvciBBaStEaStBbyBvciBBaStEaStEbyBvciBEaStBbytEbworICogMjQtYml0Lzk2a0h6ID09PiAyIGNoYW5uZWxzIGluIF9vcl8gMiBjaGFubmVscyBvdXQgKGhhbGYgZHVwbGV4IG9ubHkpCisgICAtIEFpIG9yIEFvIG9yIERpIG9yIERvCisKK0ltcG9ydGFudCBmYWN0cyBhYm91dCB0aGUgRGlnaXRhbCBpbnRlcmZhY2U6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogVGhlIERvIHBvcnQgYWRkaXRpb25hbGx5IHN1cHBvcnRzIHN1cnJvdW5kLWVuY29kZWQgQUMtMyBhbmQgRFRTIHBhc3N0aHJvdWdoLCAKK3Rob3VnaCBJIGhhdmVuJ3QgdGVzdGVkIGl0IHVuZGVyIExpbnV4CisgICAtIE5vdGUgdGhhdCBpbiB0aGlzIHNldHVwIG9ubHkgdGhlIERvIGludGVyZmFjZSBjYW4gYmUgZW5hYmxlZAorICogQXBhcnQgZnJvbSByZWNvcmRpbmcgYW4gYXVkaW8gZGlnaXRhbCBzdHJlYW0sIGVuYWJsaW5nIHRoZSBEaSBwb3J0IGlzIGEgd2F5IAordG8gc3luY2hyb25pemUgdGhlIGRldmljZSB0byBhbiBleHRlcm5hbCBzYW1wbGUgY2xvY2sKKyAgIC0gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIERpIHBvcnQgbXVzdCBiZSBlbmFibGUgb25seSBpZiBhbiBhY3RpdmUgRGlnaXRhbCAKK3NvdXJjZSBpcyBjb25uZWN0ZWQKKyAgIC0gRW5hYmxpbmcgRGkgd2hlbiBubyBkaWdpdGFsIHNvdXJjZSBpcyBjb25uZWN0ZWQgY2FuIHJlc3VsdCBpbiBhIAorc3luY2hyb25pemF0aW9uIGVycm9yIChmb3IgaW5zdGFuY2Ugc291bmQgcGxheWVkIGF0IGFuIG9kZCBzYW1wbGUgcmF0ZSkKKworCisyIC0gQXVkaW9waGlsZSBVU0IgTUlESSBzdXBwb3J0IGluIEFMU0EKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgQXVkaW9waGlsZSBVU0IgTUlESSBwb3J0cyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc3VwcG9ydGVkIG9uY2UgdGhlCitmb2xsb3dpbmcgbW9kdWxlcyBoYXZlIGJlZW4gbG9hZGVkOgorICogc25kLXVzYi1hdWRpbworICogc25kLXNlcS1taWRpCisKK05vIGFkZGl0aW9uYWwgc2V0dGluZyBpcyByZXF1aXJlZC4KKworCiszIC0gQXVkaW9waGlsZSBVU0IgQXVkaW8gc3VwcG9ydCBpbiBBTFNBCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0F1ZGlvIGZ1bmN0aW9ucyBvZiB0aGUgQXVkaW9waGlsZSBVU0IgZGV2aWNlIGFyZSBoYW5kbGVkIGJ5IHRoZSBzbmQtdXNiLWF1ZGlvIAorbW9kdWxlLiBUaGlzIG1vZHVsZSBjYW4gd29yayBpbiBhIGRlZmF1bHQgbW9kZSAod2l0aG91dCBhbnkgZGV2aWNlLXNwZWNpZmljIAorcGFyYW1ldGVyKSwgb3IgaW4gYW4gImFkdmFuY2VkIiBtb2RlIHdpdGggdGhlIGRldmljZS1zcGVjaWZpYyBwYXJhbWV0ZXIgY2FsbGVkIAorImRldmljZV9zZXR1cCIuCisKKzMuMSAtIERlZmF1bHQgQWxzYSBkcml2ZXIgbW9kZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSBzbmQtdXNiLWF1ZGlvIGRyaXZlciBpcyB0byBsaXN0IHRoZSBkZXZpY2UgCitjYXBhYmlsaXRpZXMgYXQgc3RhcnR1cCBhbmQgYWN0aXZhdGUgdGhlIHJlcXVpcmVkIG1vZGUgd2hlbiByZXF1aXJlZCAKK2J5IHRoZSBhcHBsaWNhdGlvbnM6IGZvciBpbnN0YW5jZSBpZiB0aGUgdXNlciBpcyByZWNvcmRpbmcgaW4gYSAKKzI0Yml0LWRlcHRoLW1vZGUgYW5kIGltbWVkaWF0ZWx5IGFmdGVyIHdhbnRzIHRvIHN3aXRjaCB0byBhIDE2Yml0LWRlcHRoIG1vZGUsCit0aGUgc25kLXVzYi1hdWRpbyBtb2R1bGUgd2lsbCByZWNvbmZpZ3VyZSB0aGUgZGV2aWNlIG9uIHRoZSBmbHkuCisKK1RoaXMgYXBwcm9hY2ggaGFzIHRoZSBhZHZhbnRhZ2UgdG8gbGV0IHRoZSBkcml2ZXIgYXV0b21hdGljYWxseSBzd2l0Y2ggZnJvbSBzYW1wbGUgCityYXRlcy9kZXB0aHMgYXV0b21hdGljYWxseSBhY2NvcmRpbmcgdG8gdGhlIHVzZXIncyBuZWVkcy4gSG93ZXZlciwgdGhvc2Ugd2hvIAorYXJlIHVzaW5nIHRoZSBkZXZpY2UgdW5kZXIgd2luZG93cyBrbm93IHRoYXQgdGhpcyBpcyBub3QgaG93IHRoZSBkZXZpY2UgaXMgbWVhbnQgdG8KK3dvcms6IHVuZGVyIHdpbmRvd3MgYXBwbGljYXRpb25zIG11c3QgYmUgY2xvc2VkIGJlZm9yZSB1c2luZyB0aGUgbS1hdWRpbyBjb250cm9sCitwYW5lbCB0byBzd2l0Y2ggdGhlIGRldmljZSB3b3JraW5nIG1vZGUuIFRodXMgYXMgd2UnbGwgc2VlIGluIG5leHQgc2VjdGlvbiwgdGhpcyAKK0RlZmF1bHQgQWxzYSBkcml2ZXIgbW9kZSBjYW4gbGVhZCB0byBkZXZpY2UgbWlzY29uZmlndXJhdGlvbnMuCisKK0xldCdzIGdldCBiYWNrIHRvIHRoZSBEZWZhdWx0IEFsc2EgZHJpdmVyIG1vZGUgZm9yIG5vdy4gIEluIHRoaXMgY2FzZSB0aGUgCitBdWRpb3BoaWxlIGludGVyZmFjZXMgYXJlIG1hcHBlZCB0byBhbHNhIHBjbSBkZXZpY2VzIGluIHRoZSBmb2xsb3dpbmcgCit3YXkgKEkgc3VwcG9zZSB0aGUgZGV2aWNlJ3MgaW5kZXggaXMgMSk6CisgKiBodzoxLDAgaXMgQW8gaW4gcGxheWJhY2sgYW5kIERpIGluIGNhcHR1cmUKKyAqIGh3OjEsMSBpcyBEbyBpbiBwbGF5YmFjayBhbmQgQWkgaW4gY2FwdHVyZQorICogaHc6MSwyIGlzIERvIGluIEFDMy9EVFMgcGFzc3Rocm91Z2ggbW9kZQorCitJbiB0aGlzIG1vZGUsIHRoZSBkZXZpY2UgdXNlcyBCaWcgRW5kaWFuIGJ5dGUtZW5jb2Rpbmcgc28gdGhhdCAKK3N1cHBvcnRlZCBhdWRpbyBmb3JtYXQgYXJlIFMxNl9CRSBmb3IgMTYtYml0IGRlcHRoIG1vZGVzIGFuZCBTMjRfM0JFIGZvciAKKzI0LWJpdHMgZGVwdGggbW9kZS4KKworT25lIGV4Y2VwdGlvbiBpcyB0aGUgaHc6MSwyIHBvcnQgd2hpY2ggd2FzIHJlcG9ydGVkIHRvIGJlIExpdHRsZSBFbmRpYW4gCitjb21wbGlhbnQgKHN1cHBvc2VkbHkgc3VwcG9ydGluZyBTMTZfTEUpIGJ1dCBwcm9jZXNzZXMgaW4gZmFjdCBvbmx5IFMxNl9CRSBzdHJlYW1zLgorVGhpcyBoYXMgYmVlbiBmaXhlZCBpbiBrZXJuZWwgMi42LjIzIGFuZCBhYm92ZSBhbmQgbm93IHRoZSBodzoxLDIgaW50ZXJmYWNlIAoraXMgcmVwb3J0ZWQgdG8gYmUgYmlnIGVuZGlhbiBpbiB0aGlzIGRlZmF1bHQgZHJpdmVyIG1vZGUuCisKK0V4YW1wbGVzOgorICogcGxheWluZyBhIFMyNF8zQkUgZW5jb2RlZCByYXcgZmlsZSB0byB0aGUgQW8gcG9ydAorICAgJSBhcGxheSAtRCBodzoxLDAgLWMyIC10IHJhdyAtcjQ4MDAwIC1mUzI0XzNCRSB0ZXN0LnJhdworICogcmVjb3JkaW5nIGEgIFMyNF8zQkUgZW5jb2RlZCByYXcgZmlsZSBmcm9tIHRoZSBBaSBwb3J0CisgICAlIGFyZWNvcmQgLUQgaHc6MSwxIC1jMiAgLXQgcmF3IC1yNDgwMDAgLWZTMjRfM0JFIHRlc3QucmF3CisgKiBwbGF5aW5nIGEgUzE2X0JFIGVuY29kZWQgcmF3IGZpbGUgdG8gdGhlIERvIHBvcnQKKyAgICUgYXBsYXkgLUQgaHc6MSwxIC1jMiAtdCByYXcgLXI0ODAwMCAtZlMxNl9CRSB0ZXN0LnJhdworICogcGxheWluZyBhbiBhYzMgc2FtcGxlIGZpbGUgdG8gdGhlIERvIHBvcnQKKyAgICUgYXBsYXkgLUQgaHc6MSwyIC0tY2hhbm5lbHM9NiBhYzNfUzE2X0JFX2VuY29kZWRfZmlsZS5yYXcKKworSWYgeW91J3JlIGhhcHB5IHdpdGggdGhlIGRlZmF1bHQgQWxzYSBkcml2ZXIgbW9kZSBhbmQgZG9uJ3QgZXhwZXJpZW5jZSBhbnkgCitpc3N1ZSB3aXRoIHRoaXMgbW9kZSwgdGhlbiB5b3UgY2FuIHNraXAgdGhlIGZvbGxvd2luZyBjaGFwdGVyLgorCiszLjIgLSBBZHZhbmNlZCBtb2R1bGUgc2V0dXAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEdWUgdG8gdGhlIGhhcmR3YXJlIGNvbnN0cmFpbnRzIGRlc2NyaWJlZCBhYm92ZSwgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiBtYWRlIAorYnkgdGhlIEFsc2EgZHJpdmVyIGluIGRlZmF1bHQgbW9kZSBtYXkgcmVzdWx0IGluIGEgY29ycnVwdGVkIHN0YXRlIG9mIHRoZSAKK2RldmljZS4gRm9yIGluc3RhbmNlLCBhIHBhcnRpY3VsYXJseSBhbm5veWluZyBpc3N1ZSBpcyB0aGF0IHRoZSBzb3VuZCBjYXB0dXJlZCAKK2Zyb20gdGhlIEFpIGludGVyZmFjZSBzb3VuZHMgZGlzdG9ydGVkIChhcyBpZiBib29zdGVkIHdpdGggYW4gZXhjZXNzaXZlIGhpZ2gKK3ZvbHVtZSBnYWluKS4KKworRm9yIHBlb3BsZSBoYXZpbmcgdGhpcyBwcm9ibGVtLCB0aGUgc25kLXVzYi1hdWRpbyBtb2R1bGUgaGFzIGEgbmV3IG1vZHVsZSAKK3BhcmFtZXRlciBjYWxsZWQgImRldmljZV9zZXR1cCIgKHRoaXMgcGFyYW1ldGVyIHdhcyBpbnRyb2R1Y2VkIGluIGtlcm5lbAorcmVsZWFzZSAyLjYuMTcpCisKKzMuMi4xIC0gSW5pdGlhbGl6aW5nIHRoZSB3b3JraW5nIG1vZGUgb2YgdGhlIEF1ZGlvcGhpbGUgVVNCCisKK0FzIGZhciBhcyB0aGUgQXVkaW9waGlsZSBVU0IgZGV2aWNlIGlzIGNvbmNlcm5lZCwgdGhpcyB2YWx1ZSBsZXQgdGhlIHVzZXIgCitzcGVjaWZ5OgorICogdGhlIHNhbXBsZSBkZXB0aAorICogdGhlIHNhbXBsZSByYXRlCisgKiB3aGV0aGVyIHRoZSBEaSBwb3J0IGlzIHVzZWQgb3Igbm90IAorCitXaGVuIGluaXRpYWxpemVkIHdpdGggImRldmljZV9zZXR1cD0weDAwIiwgdGhlIHNuZC11c2ItYXVkaW8gbW9kdWxlIGhhcwordGhlIHNhbWUgYmVoYXZpb3VyIGFzIHdoZW4gdGhlIHBhcmFtZXRlciBpcyBvbWl0dGVkIChzZWUgcGFyYWdyYXBoICJEZWZhdWx0IAorQWxzYSBkcml2ZXIgbW9kZSIgYWJvdmUpCisKK090aGVycyBtb2RlcyBhcmUgZGVzY3JpYmVkIGluIHRoZSBmb2xsb3dpbmcgc3Vic2VjdGlvbnMuCisKKzMuMi4xLjEgLSAxNi1iaXQgbW9kZXMKKworVGhlIHR3byBzdXBwb3J0ZWQgbW9kZXMgYXJlOgorCisgKiBkZXZpY2Vfc2V0dXA9MHgwMQorICAgLSAxNmJpdHMgNDhrSHogbW9kZSB3aXRoIERpIGRpc2FibGVkCisgICAtIEFpLEFvLERvIGNhbiBiZSB1c2VkIGF0IHRoZSBzYW1lIHRpbWUKKyAgIC0gaHc6MSwwIGlzIG5vdCBhdmFpbGFibGUgaW4gY2FwdHVyZSBtb2RlCisgICAtIGh3OjEsMiBpcyBub3QgYXZhaWxhYmxlCisKKyAqIGRldmljZV9zZXR1cD0weDExCisgICAtIDE2Yml0cyA0OGtIeiBtb2RlIHdpdGggRGkgZW5hYmxlZAorICAgLSBBaSxBbyxEaSxEbyBjYW4gYmUgdXNlZCBhdCB0aGUgc2FtZSB0aW1lCisgICAtIGh3OjEsMCBpcyBhdmFpbGFibGUgaW4gY2FwdHVyZSBtb2RlCisgICAtIGh3OjEsMiBpcyBub3QgYXZhaWxhYmxlCisKK0luIHRoaXMgbW9kZXMgdGhlIGRldmljZSBvcGVyYXRlcyBvbmx5IGF0IDE2Yml0cy1tb2Rlcy4gQmVmb3JlIGtlcm5lbCAyLjYuMjMsCit0aGUgZGV2aWNlcyB3aGVyZSByZXBvcnRlZCB0byBiZSBCaWctRW5kaWFuIHdoZW4gaW4gZmFjdCB0aGV5IHdlcmUgTGl0dGxlLUVuZGlhbgorc28gdGhhdCBwbGF5aW5nIGEgZmlsZSB3YXMgYSBtYXR0ZXIgb2YgdXNpbmc6CisgICAlIGFwbGF5IC1EIGh3OjEsMSAtYzIgLXQgcmF3IC1yNDgwMDAgLWZTMTZfQkUgdGVzdF9TMTZfTEUucmF3Cit3aGVyZSAidGVzdF9TMTZfTEUucmF3IiB3YXMgaW4gZmFjdCBhIGxpdHRsZS1lbmRpYW4gc2FtcGxlIGZpbGUuCisKK1RoYW5rcyB0byBIYWthbiBMZW5uZXN0YWwgKHdobyBkaXNjb3ZlcmVkIHRoZSBMaXR0bGUtRW5kaWFubmVzIG9mIHRoZSBkZXZpY2UgaW4KK3RoZXNlIG1vZGVzKSBhIGZpeCBoYXMgYmVlbiBjb21taXR0ZWQgKGV4cGVjdGVkIGluIGtlcm5lbCAyLjYuMjMpIGFuZAorQWxzYSBub3cgcmVwb3J0cyBMaXR0bGUtRW5kaWFuIGludGVyZmFjZXMuIFRodXMgcGxheWluZyBhIGZpbGUgbm93IGlzIGFzIHNpbXBsZSBhcwordXNpbmc6CisgICAlIGFwbGF5IC1EIGh3OjEsMSAtYzIgLXQgcmF3IC1yNDgwMDAgLWZTMTZfTEUgdGVzdF9TMTZfTEUucmF3CisKKzMuMi4xLjIgLSAyNC1iaXQgbW9kZXMKKworVGhlIHRocmVlIHN1cHBvcnRlZCBtb2RlcyBhcmU6CisKKyAqIGRldmljZV9zZXR1cD0weDA5CisgICAtIDI0Yml0cyA0OGtIeiBtb2RlIHdpdGggRGkgZGlzYWJsZWQKKyAgIC0gQWksQW8sRG8gY2FuIGJlIHVzZWQgYXQgdGhlIHNhbWUgdGltZQorICAgLSBodzoxLDAgaXMgbm90IGF2YWlsYWJsZSBpbiBjYXB0dXJlIG1vZGUKKyAgIC0gaHc6MSwyIGlzIG5vdCBhdmFpbGFibGUKKworICogZGV2aWNlX3NldHVwPTB4MTkKKyAgIC0gMjRiaXRzIDQ4a0h6IG1vZGUgd2l0aCBEaSBlbmFibGVkCisgICAtIDMgcG9ydHMgZnJvbSB7QWksQW8sRGksRG99IGNhbiBiZSB1c2VkIGF0IHRoZSBzYW1lIHRpbWUKKyAgIC0gaHc6MSwwIGlzIGF2YWlsYWJsZSBpbiBjYXB0dXJlIG1vZGUgYW5kIGFuIGFjdGl2ZSBkaWdpdGFsIHNvdXJjZSBtdXN0IGJlIAorICAgICBjb25uZWN0ZWQgdG8gRGkKKyAgIC0gaHc6MSwyIGlzIG5vdCBhdmFpbGFibGUKKworICogZGV2aWNlX3NldHVwPTB4MEQgb3IgMHgxMAorICAgLSAyNGJpdHMgOTZrSHogbW9kZQorICAgLSBEaSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgZm9yIHRoaXMgbW9kZSBidXQgZG9lcyBub3QgbmVlZCB0byBiZSBjb25uZWN0ZWQgCisgICAgIHRvIGFuIGFjdGl2ZSBzb3VyY2UKKyAgIC0gT25seSAxIHBvcnQgZnJvbSB7QWksQW8sRGksRG99IGNhbiBiZSB1c2VkIGF0IHRoZSBzYW1lIHRpbWUKKyAgIC0gaHc6MSwwIGlzIGF2YWlsYWJsZSBpbiBjYXB0dXJlZCBtb2RlCisgICAtIGh3OjEsMiBpcyBub3QgYXZhaWxhYmxlCisKK0luIHRoZXNlIG1vZGVzIHRoZSBkZXZpY2UgaXMgb25seSBCaWctRW5kaWFuIGNvbXBsaWFudCAoc2VlICJEZWZhdWx0IEFsc2EgZHJpdmVyIAorbW9kZSIgYWJvdmUgZm9yIGFuIGFwbGF5IGNvbW1hbmQgZXhhbXBsZSkKKworMy4yLjEuMyAtIEFDMyB3LyBEVFMgcGFzc3RocnUgbW9kZQorCitUaGFua3MgdG8gSGFrYW4gTGVubmVzdGFsLCBJIG5vdyBoYXZlIGEgcmVwb3J0IHNheWluZyB0aGF0IHRoaXMgbW9kZSB3b3Jrcy4KKworICogZGV2aWNlX3NldHVwPTB4MDMKKyAgIC0gMTZiaXRzIDQ4a0h6IG1vZGUgd2l0aCBvbmx5IHRoZSBEbyBwb3J0IGVuYWJsZWQgCisgICAtIEFDMyB3aXRoIERUUyBwYXNzdGhydQorICAgLSBDYXV0aW9uIHdpdGggdGhpcyBzZXR1cCB0aGUgRG8gcG9ydCBpcyBtYXBwZWQgdG8gdGhlIHBjbSBkZXZpY2UgaHc6MSwwCisKK1RoZSBjb21tYW5kIGxpbmUgdXNlZCB0byBwbGF5YmFjayB0aGUgQUMzL0RUUyBlbmNvZGVkIC53YXYtZmlsZXMgaW4gdGhpcyBtb2RlOgorICAgJSBhcGxheSAtRCBodzoxLDAgLS1jaGFubmVscz02IGFjM19TMTZfTEVfZW5jb2RlZF9maWxlLnJhdworCiszLjIuMiAtIEhvdyB0byB1c2UgdGhlIGRldmljZV9zZXR1cCBwYXJhbWV0ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHBhcmFtZXRlciBjYW4gYmUgZ2l2ZW46CisKKyAqIEJ5IG1hbnVhbGx5IHByb2JpbmcgdGhlIGRldmljZSAoYXMgcm9vdCk6CisgICAjIG1vZHByb2JlIC1yIHNuZC11c2ItYXVkaW8KKyAgICMgbW9kcHJvYmUgc25kLXVzYi1hdWRpbyBpbmRleD0xIGRldmljZV9zZXR1cD0weDA5CisKKyAqIE9yIHdoaWxlIGNvbmZpZ3VyaW5nIHRoZSBtb2R1bGVzIG9wdGlvbnMgaW4geW91ciBtb2R1bGVzIGNvbmZpZ3VyYXRpb24gZmlsZQorICAgKHR5cGljYWxseSBhIC5jb25mIGZpbGUgaW4gL2V0Yy9tb2Rwcm9iZS5kLyBkaXJlY3Rvcnk6CisgICAgICAgYWxpYXMgc25kLWNhcmQtMSBzbmQtdXNiLWF1ZGlvCisgICAgICAgb3B0aW9ucyBzbmQtdXNiLWF1ZGlvIGluZGV4PTEgZGV2aWNlX3NldHVwPTB4MDkKKworQ0FVVElPTiB3aGVuIGluaXRpYWxpemluZyB0aGUgZGV2aWNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAqIENvcnJlY3QgaW5pdGlhbGl6YXRpb24gb24gdGhlIGRldmljZSByZXF1aXJlcyB0aGF0IGRldmljZV9zZXR1cCBpcyBnaXZlbiB0bworICAgdGhlIG1vZHVsZSBCRUZPUkUgdGhlIGRldmljZSBpcyB0dXJuZWQgb24uIFNvLCBpZiB5b3UgdXNlIHRoZSAibWFudWFsIHByb2JpbmciCisgICBtZXRob2QgZGVzY3JpYmVkIGFib3ZlLCB0YWtlIGNhcmUgdG8gcG93ZXItb24gdGhlIGRldmljZSBBRlRFUiB0aGlzIGluaXRpYWxpemF0aW9uLgorCisgKiBGYWlsaW5nIHRvIHJlc3BlY3QgdGhpcyB3aWxsIGxlYWQgdG8gYSBtaXNjb25maWd1cmF0aW9uIG9mIHRoZSBkZXZpY2UuIEluIHRoaXMgY2FzZQorICAgdHVybiBvZmYgdGhlIGRldmljZSwgdW5wcm9iZSB0aGUgc25kLXVzYi1hdWRpbyBtb2R1bGUsIHRoZW4gcHJvYmUgaXQgYWdhaW4gd2l0aAorICAgY29ycmVjdCBkZXZpY2Vfc2V0dXAgcGFyYW1ldGVyIGFuZCB0aGVuIChhbmQgb25seSB0aGVuKSB0dXJuIG9uIHRoZSBkZXZpY2UgYWdhaW4uCisKKyAqIElmIHlvdSd2ZSBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQgdGhlIGRldmljZSBpbiBhIHZhbGlkIG1vZGUgYW5kIHRoZW4gd2FudCB0byBzd2l0Y2gKKyAgIHRvICBhbm90aGVyIG1vZGUgKHBvc3NpYmx5IHdpdGggYW5vdGhlciBzYW1wbGUtZGVwdGgpLCBwbGVhc2UgdXNlIGFsc28gdGhlIGZvbGxvd2luZyAKKyAgIHByb2NlZHVyZToKKyAgIC0gZmlyc3QgdHVybiBvZmYgdGhlIGRldmljZQorICAgLSBkZS1yZWdpc3RlciB0aGUgc25kLXVzYi1hdWRpbyBtb2R1bGUgKG1vZHByb2JlIC1yKQorICAgLSBjaGFuZ2UgdGhlIGRldmljZV9zZXR1cCBwYXJhbWV0ZXIgYnkgY2hhbmdpbmcgdGhlIGRldmljZV9zZXR1cAorICAgICBvcHRpb24gaW4gL2V0Yy9tb2Rwcm9iZS5kLyouY29uZgorICAgLSB0dXJuIG9uIHRoZSBkZXZpY2UKKyAqIEEgd29ya2Fyb3VuZCBmb3IgdGhpcyBsYXN0IGlzc3VlIGhhcyBiZWVuIGFwcGxpZWQgdG8ga2VybmVsIDIuNi4yMywgYnV0IGl0IG1heSBub3QKKyAgIGJlIGVub3VnaCB0byBlbnN1cmUgdGhlICdzdGFiaWxpdHknIG9mIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24uCisKKzMuMi4zIC0gVGVjaG5pY2FsIGRldGFpbHMgZm9yIGhhY2tlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoaXMgc2VjdGlvbiBpcyBmb3IgaGFja2Vycywgd2FudGluZyB0byB1bmRlcnN0YW5kIGRldGFpbHMgYWJvdXQgdGhlIGRldmljZQoraW50ZXJuYWxzIGFuZCBob3cgQWxzYSBzdXBwb3J0cyBpdC4KKworMy4yLjMuMSAtIEF1ZGlvcGhpbGUgVVNCJ3MgZGV2aWNlX3NldHVwIHN0cnVjdHVyZQorCitJZiB5b3Ugd2FudCB0byB1bmRlcnN0YW5kIHRoZSBkZXZpY2Vfc2V0dXAgbWFnaWMgbnVtYmVycyBmb3IgdGhlIEF1ZGlvcGhpbGUgCitVU0IsIHlvdSBuZWVkIHNvbWUgdmVyeSBiYXNpYyB1bmRlcnN0YW5kaW5nIG9mIGJpbmFyeSBjb21wdXRhdGlvbi4gSG93ZXZlciwgCit0aGlzIGlzIG5vdCByZXF1aXJlZCB0byB1c2UgdGhlIHBhcmFtZXRlciBhbmQgeW91IG1heSBza2lwIHRoaXMgc2VjdGlvbi4KKworVGhlIGRldmljZV9zZXR1cCBpcyBvbmUgYnl0ZSBsb25nIGFuZCBpdHMgc3RydWN0dXJlIGlzIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICArLS0tKy0tLSstLS0rLS0tKy0tLSstLS0rLS0tKy0tLSsKKyAgICAgICB8IGI3fCBiNnwgYjV8IGI0fCBiM3wgYjJ8IGIxfCBiMHwKKyAgICAgICArLS0tKy0tLSstLS0rLS0tKy0tLSstLS0rLS0tKy0tLSsKKyAgICAgICB8IDAgfCAwIHwgMCB8IERpfDI0Qnw5Nkt8RFRTfFNFVHwKKyAgICAgICArLS0tKy0tLSstLS0rLS0tKy0tLSstLS0rLS0tKy0tLSsKKworV2hlcmU6CisgKiBiMCBpcyB0aGUgIlNFVCIgYml0CisgICAtIGl0IE1VU1QgYmUgc2V0IGlmIGRldmljZV9zZXR1cCBpcyBpbml0aWFsaXplZCAKKyAqIGIxIGlzIHRoZSAiRFRTIiBiaXQKKyAgIC0gaXQgaXMgc2V0IG9ubHkgZm9yIERpZ2l0YWwgb3V0cHV0IHdpdGggRFRTL0FDMworICAgLSB0aGlzIHNldHVwIGlzIG5vdCB0ZXN0ZWQKKyAqIGIyIGlzIHRoZSBSYXRlIHNlbGVjdGlvbiBmbGFnCisgICAtIFdoZW4gc2V0IHRvICIxIiB0aGUgcmF0ZSByYW5nZSBpcyA0OC4xLTk2a0h6CisgICAtIE90aGVyd2lzZSB0aGUgc2FtcGxlIHJhdGUgcmFuZ2UgaXMgOC00OGtIegorICogYjMgaXMgdGhlIGJpdCBkZXB0aCBzZWxlY3Rpb24gZmxhZworICAgLSBXaGVuIHNldCB0byAiMSIgc2FtcGxlcyBhcmUgMjRiaXRzIGxvbmcKKyAgIC0gT3RoZXJ3aXNlIHRoZXkgYXJlIDE2Yml0cyBsb25nCisgICAtIE5vdGUgdGhhdCBiMiBpbXBsaWVzIGIzIGFzIHRoZSA5NmtIeiBtb2RlIGlzIG9ubHkgc3VwcG9ydGVkIGZvciAyNCBiaXRzIAorICAgICBzYW1wbGVzCisgKiBiNCBpcyB0aGUgRGlnaXRhbCBpbnB1dCBmbGFnCisgICAtIFdoZW4gc2V0IHRvICIxIiB0aGUgZGV2aWNlIGFzc3VtZXMgdGhhdCBhbiBhY3RpdmUgZGlnaXRhbCBzb3VyY2UgaXMgCisgICAgIGNvbm5lY3RlZCAKKyAgIC0gWW91IHNob3VsZG4ndCBlbmFibGUgRGkgaWYgbm8gc291cmNlIGlzIHNlZW4gb24gdGhlIHBvcnQgKHRoaXMgbGVhZHMgdG8gCisgICAgIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMpCisgICAtIGI0IGlzIGltcGxpZWQgYnkgYjIgKHNpbmNlIG9ubHkgb25lIHBvcnQgaXMgZW5hYmxlZCBhdCBhIHRpbWUgbm8gc3luY2ggCisgICAgIGVycm9yIGNhbiBvY2N1cikgCisgKiBiNSB0byBiNyBhcmUgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2VzLCBhbmQgbXVzdCBiZSBzZXQgdG8gIjAiCisgICAtIG1pZ2h0IGJlY29tZSBBbywgRG8sIEFpLCBmb3IgYjcsIGI2LCBiNCByZXNwZWN0aXZlbHkKKworQ2F1dGlvbjoKKyAqIHRoZXJlIGlzIG5vIGNoZWNrIG9uIHRoZSB2YWx1ZSB5b3Ugd2lsbCBnaXZlIHRvIGRldmljZV9zZXR1cAorICAgLSBmb3IgaW5zdGFuY2UgY2hvb3NpbmcgMHgwNSAoMTZiaXRzIDk2a0h6KSB3aWxsIGZhaWwgYmFjayB0byAweDA5IHNpbmNlIAorICAgICBiMiBpbXBsaWVzIGIzLiBCdXQgX3RoZXJlX3dpbGxfYmVfbm9fd2FybmluZ18gaW4gL3Zhci9sb2cvbWVzc2FnZXMKKyAqIEhhcmR3YXJlIGNvbnN0cmFpbnRzIGR1ZSB0byB0aGUgVVNCIGJ1cyBsaW1pdGF0aW9uIGFyZW4ndCBjaGVja2VkCisgICAtIGNob29zaW5nIGIyIHdpbGwgcHJlcGFyZSBhbGwgaW50ZXJmYWNlcyBmb3IgMjRiaXRzLzk2a0h6IGJ1dCB5b3UnbGwKKyAgICAgb25seSBiZSBhYmxlIHRvIHVzZSBvbmUgYXQgdGhlIHNhbWUgdGltZQorCiszLjIuMy4yIC0gIFVTQiBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGZvciB0aGlzIGRldmljZQorCitZb3UgbWF5IHNhZmVseSBza2lwIHRoaXMgc2VjdGlvbiBpZiB5b3UncmUgbm90IGludGVyZXN0ZWQgaW4gZHJpdmVyIAoraGFja2luZy4KKworVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBzb21lIGludGVybmFsIGFzcGVjdHMgb2YgdGhlIGRldmljZSBhbmQgc3VtbWFyaXplcyB0aGUgCitkYXRhIEkgZ290IGJ5IHVzYi1zbm9vcGluZyB0aGUgd2luZG93cyBhbmQgTGludXggZHJpdmVycy4KKworVGhlIE0tQXVkaW8gQXVkaW9waGlsZSBVU0IgaGFzIDcgVVNCIEludGVyZmFjZXM6CithICJVU0IgaW50ZXJmYWNlIjoKKyAqIFVTQiBJbnRlcmZhY2UgbmIuMAorICogVVNCIEludGVyZmFjZSBuYi4xCisgICAtIEF1ZGlvIENvbnRyb2wgZnVuY3Rpb24KKyAqIFVTQiBJbnRlcmZhY2UgbmIuMgorICAgLSBBbmFsb2cgT3V0cHV0CisgKiBVU0IgSW50ZXJmYWNlIG5iLjMKKyAgIC0gRGlnaXRhbCBPdXRwdXQKKyAqIFVTQiBJbnRlcmZhY2UgbmIuNAorICAgLSBBbmFsb2cgSW5wdXQKKyAqIFVTQiBJbnRlcmZhY2UgbmIuNQorICAgLSBEaWdpdGFsIElucHV0CisgKiBVU0IgSW50ZXJmYWNlIG5iLjYKKyAgIC0gTUlESSBpbnRlcmZhY2UgY29tcGxpYW50IHdpdGggdGhlIE1JRElNQU4gcXVpcmsgCisKK0VhY2ggaW50ZXJmYWNlIGhhcyA1IGFsdHNldHRpbmdzIChBbHRTZXQgMSwyLDMsNCw1KSBleGNlcHQ6CisgKiBJbnRlcmZhY2UgMyAoRGlnaXRhbCBPdXQpIGhhcyBhbiBleHRyYSBBbHNldCBuYi42IAorICogSW50ZXJmYWNlIDUgKERpZ2l0YWwgSW4pIGRvZXMgbm90IGhhdmUgQWxzZXQgbmIuMyBhbmQgNSAKKworSGVyZSBpcyBhIHNob3J0IGRlc2NyaXB0aW9uIG9mIHRoZSBBbHRTZXR0aW5ncyBjYXBhYmlsaXRpZXM6CisgKiBBbHRTZXR0aW5ncyAxIGNvcnJlc3BvbmRzIHRvCisgIC0gMjQtYml0IGRlcHRoLCA0OC4xLTk2a0h6IHNhbXBsZSBtb2RlCisgIC0gQWRhcHRpdmUgcGxheWJhY2sgKEFvIGFuZCBEbyksIFN5bmNoIGNhcHR1cmUgKEFpKSwgb3IgQXN5bmNoIGNhcHR1cmUgKERpKQorICogQWx0U2V0dGluZ3MgMiBjb3JyZXNwb25kcyB0bworICAtIDI0LWJpdCBkZXB0aCwgOC00OGtIeiBzYW1wbGUgbW9kZQorICAtIEFzeW5jaCBjYXB0dXJlIGFuZCBwbGF5YmFjayAgKEFvLEFpLERvLERpKQorICogQWx0U2V0dGluZ3MgMyBjb3JyZXNwb25kcyB0bworICAtIDI0LWJpdCBkZXB0aCwgOC00OGtIeiBzYW1wbGUgbW9kZQorICAtIFN5bmNoIGNhcHR1cmUgKEFpKSBhbmQgQWRhcHRpdmUgcGxheWJhY2sgKEFvLERvKQorICogQWx0U2V0dGluZ3MgNCBjb3JyZXNwb25kcyB0bworICAtIDE2LWJpdCBkZXB0aCwgOC00OGtIeiBzYW1wbGUgbW9kZQorICAtIEFzeW5jaCBjYXB0dXJlIGFuZCBwbGF5YmFjayAgKEFvLEFpLERvLERpKQorICogQWx0U2V0dGluZ3MgNSBjb3JyZXNwb25kcyB0bworICAtIDE2LWJpdCBkZXB0aCwgOC00OGtIeiBzYW1wbGUgbW9kZQorICAtIFN5bmNoIGNhcHR1cmUgKEFpKSBhbmQgQWRhcHRpdmUgcGxheWJhY2sgKEFvLERvKQorICogQWx0U2V0dGluZ3MgNiBjb3JyZXNwb25kcyB0bworICAtIDE2LWJpdCBkZXB0aCwgOC00OGtIeiBzYW1wbGUgbW9kZQorICAtIFN5bmNoIHBsYXliYWNrIChEbyksIGF1ZGlvIGZvcm1hdCB0eXBlIElJSSBJRUMxOTM3X0FDLTMKKworSW4gb3JkZXIgdG8gZW5zdXJlIGEgY29ycmVjdCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZGV2aWNlLCB0aGUgZHJpdmVyIAorX211c3Rfa25vd18gaG93IHRoZSBkZXZpY2Ugd2lsbCBiZSB1c2VkOgorICogaWYgRFRTIGlzIGNob3Nlbiwgb25seSBJbnRlcmZhY2UgMiB3aXRoIEFsdFNldCBuYi42IG11c3QgYmUKKyAgIHJlZ2lzdGVyZWQKKyAqIGlmIDk2S0h6IG9ubHkgQWx0U2V0cyBuYi4xIG9mIGVhY2ggaW50ZXJmYWNlIG11c3QgYmUgc2VsZWN0ZWQKKyAqIGlmIHNhbXBsZXMgYXJlIHVzaW5nIDI0Yml0cy80OEtIeiB0aGVuIEFsdFNldCAyIG11c3QgbWUgdXNlZCBpZgorICAgRGlnaXRhbCBpbnB1dCBpcyBjb25uZWN0ZWQsIGFuZCBvbmx5IEFsdFNldCBuYi4zIGlmIERpZ2l0YWwgaW5wdXQKKyAgIGlzIG5vdCBjb25uZWN0ZWQKKyAqIGlmIHNhbXBsZXMgYXJlIHVzaW5nIDE2Yml0cy80OEtIeiB0aGVuIEFsdFNldCA0IG11c3QgbWUgdXNlZCBpZgorICAgRGlnaXRhbCBpbnB1dCBpcyBjb25uZWN0ZWQsIGFuZCBvbmx5IEFsdFNldCBuYi41IGlmIERpZ2l0YWwgaW5wdXQKKyAgIGlzIG5vdCBjb25uZWN0ZWQKKworV2hlbiBkZXZpY2Vfc2V0dXAgaXMgZ2l2ZW4gYXMgYSBwYXJhbWV0ZXIgdG8gdGhlIHNuZC11c2ItYXVkaW8gbW9kdWxlLCB0aGUgCitwYXJzZV9hdWRpb19lbmRwb2ludHMgZnVuY3Rpb24gdXNlcyBhIHF1aXJrIGNhbGxlZCAKKyJhdWRpb3BoaWxlX3NraXBfc2V0dGluZ19xdWlyayIgaW4gb3JkZXIgdG8gcHJldmVudCBBbHRTZXR0aW5ncyBub3QgCitjb3JyZXNwb25kaW5nIHRvIGRldmljZV9zZXR1cCBmcm9tIGJlaW5nIHJlZ2lzdGVyZWQgaW4gdGhlIGRyaXZlci4KKworNCAtIEF1ZGlvcGhpbGUgVVNCIGFuZCBKYWNrIHN1cHBvcnQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgc2VjdGlvbiBkZWFscyB3aXRoIHN1cHBvcnQgb2YgdGhlIEF1ZGlvcGhpbGUgVVNCIGRldmljZSBpbiBKYWNrLgorCitUaGVyZSBhcmUgMiBtYWluIHBvdGVudGlhbCBpc3N1ZXMgd2hlbiB1c2luZyBKYWNrZCB3aXRoIHRoZSBkZXZpY2U6CisqIHN1cHBvcnQgZm9yIEJpZy1FbmRpYW4gZGV2aWNlcyBpbiAyNC1iaXQgbW9kZXMKKyogc3VwcG9ydCBmb3IgNC1pbiAvIDQtb3V0IGNoYW5uZWxzCisKKzQuMSAtIERpcmVjdCBzdXBwb3J0IGluIEphY2tkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitKYWNrIHN1cHBvcnRzIGJpZyBlbmRpYW4gZGV2aWNlcyBvbmx5IGluIHJlY2VudCB2ZXJzaW9ucyAodGhhbmtzIHRvCitBbmRyZWFzIFN0ZWlubWV0eiBmb3IgaGlzIGZpcnN0IGJpZy1lbmRpYW4gcGF0Y2gpLiBJIGNhbid0IHJlbWVtYmVyIAorZXhhY3RseSB3aGVuIHRoaXMgc3VwcG9ydCB3YXMgcmVsZWFzZWQgaW50byBqYWNrZCwgbGV0J3MganVzdCBzYXkgdGhhdAord2l0aCBqYWNrZCB2ZXJzaW9uIDAuMTAzLjAgaXQncyBhbG1vc3Qgb2sgKGp1c3QgYSBzbWFsbCBidWcgaXMgYWZmZWN0aW5nIAorMTZiaXRzIEJpZy1FbmRpYW4gZGV2aWNlcywgYnV0IHNpbmNlIHlvdSd2ZSByZWFkIGNhcmVmdWxseSB0aGUgYWJvdmUKK3BhcmFncmFwaHMsIHlvdSdyZSBub3cgdXNpbmcga2VybmVsID49IDIuNi4yMyBhbmQgeW91ciAxNmJpdHMgZGV2aWNlcyAKK2FyZSBub3cgTGl0dGxlIEVuZGlhbnMgOy0pICkuCisKK1lvdSBjYW4gcnVuIGphY2tkIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kIGZvciBwbGF5YmFjayB3aXRoIEFvIGFuZAorcmVjb3JkIHdpdGggQWk6CisgICUgamFja2QgLVIgLWRhbHNhIC1QaHc6MSwwIC1yNDgwMDAgLXAxMjggLW4yIC1EIC1DaHc6MSwxCisKKzQuMiAtIFVzaW5nIEFsc2EgcGx1Z2h3CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSWYgeW91IGRvbid0IGhhdmUgYSByZWNlbnQgSmFja2QgaW5zdGFsbGVkLCB5b3UgY2FuIGRvd25ncmFkZSB0byB1c2luZwordGhlIEFsc2EgInBsdWciIGNvbnZlcnRlci4KKworRm9yIGluc3RhbmNlIGhlcmUgaXMgb25lIHdheSB0byBydW4gSmFjayB3aXRoIDIgcGxheWJhY2sgY2hhbm5lbHMgb24gQW8gYW5kIDIgCitjYXB0dXJlIGNoYW5uZWxzIGZyb20gQWk6CisgICUgamFja2QgLVIgLWRhbHNhIC1kcGx1Z2h3OjEgLXI0ODAwMCAtcDI1NiAtbjIgLUQgLUNwbHVnaHc6MSwxCisKK0hvd2V2ZXIgeW91IG1heSBzZWUgdGhlIGZvbGxvd2luZyB3YXJuaW5nIG1lc3NhZ2U6CisiWW91IGFwcGVhciB0byBiZSB1c2luZyB0aGUgQUxTQSBzb2Z0d2FyZSAicGx1ZyIgbGF5ZXIsIHByb2JhYmx5IGEgcmVzdWx0IG9mIAordXNpbmcgdGhlICJkZWZhdWx0IiBBTFNBIGRldmljZS4gVGhpcyBpcyBsZXNzIGVmZmljaWVudCB0aGFuIGl0IGNvdWxkIGJlLiAKK0NvbnNpZGVyIHVzaW5nIGEgaGFyZHdhcmUgZGV2aWNlIGluc3RlYWQgcmF0aGVyIHRoYW4gdXNpbmcgdGhlIHBsdWcgbGF5ZXIuIgorCis0LjMgLSBHZXR0aW5nIDIgaW5wdXQgYW5kL29yIG91dHB1dCBpbnRlcmZhY2VzIGluIEphY2sKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBcyB5b3UgY2FuIHNlZSwgc3RhcnRpbmcgdGhlIEphY2sgc2VydmVyIHRoaXMgd2F5IHdpbGwgb25seSBlbmFibGUgMSBzdGVyZW8KK2lucHV0IChEaSBvciBBaSkgYW5kIDEgc3RlcmVvIG91dHB1dCAoQW8gb3IgRG8pLgorCitUaGlzIGlzIGR1ZSB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKKyogSmFjayBjYW4gb25seSBvcGVuIG9uZSBjYXB0dXJlIGRldmljZSBhbmQgb25lIHBsYXliYWNrIGRldmljZSBhdCBhIHRpbWUKKyogVGhlIEF1ZGlvcGhpbGUgVVNCIGlzIHNlZW4gYXMgMiAob3IgdGhyZWUpIEFsc2EgZGV2aWNlczogaHc6MSwwLCBodzoxLDEKKyAgKGFuZCBvcHRpb25hbGx5IGh3OjEsMikKKworSWYgeW91IHdhbnQgdG8gZ2V0IEFpK0RpIGFuZC9vciBBbytEbyBzdXBwb3J0IHdpdGggSmFjaywgeW91IHdvdWxkIG5lZWQgdG8KK2NvbWJpbmUgdGhlIEFsc2EgZGV2aWNlcyBpbnRvIG9uZSBsb2dpY2FsICJjb21wbGV4IiBkZXZpY2UuCisKK0lmIHlvdSB3YW50IHRvIGdpdmUgaXQgYSB0cnksIEkgcmVjb21tZW5kIHJlYWRpbmcgdGhlIGluZm9ybWF0aW9uIGZyb20KK3RoaXMgcGFnZTogaHR0cDovL3d3dy5zb3VuZC1tYW4uY28udWsvbGludXhhdWRpby9pY2UxNzEybXVsdGkuaHRtbAorSXQgaXMgcmVsYXRlZCB0byBhbm90aGVyIGRldmljZSAoaWNlMTcxMikgYnV0IGNhbiBiZSBhZGFwdGVkIHRvIHN1aXQKK3RoZSBBdWRpb3BoaWxlIFVTQi4KKworRW5hYmxpbmcgbXVsdGlwbGUgQXVkaW9waGlsZSBVU0IgaW50ZXJmYWNlcyBmb3IgSmFja2Qgd2lsbCBjZXJ0YWlubHkgcmVxdWlyZToKKyogTWFraW5nIHN1cmUgeW91ciBKYWNrZCB2ZXJzaW9uIGhhcyB0aGUgTU1BUF9DT01QTEVYIHBhdGNoIChzZWUgdGhlIGljZTE3MTIgcGFnZSkKKyogKG1heWJlKSBwYXRjaGluZyB0aGUgYWxzYS1saWIvc3JjL3BjbS9wY21fbXVsdGkuYyBmaWxlIChzZWUgdGhlIGljZTE3MTIgcGFnZSkKKyogZGVmaW5lIGEgbXVsdGkgZGV2aWNlIChjb21iaW5hdGlvbiBvZiBodzoxLDAgYW5kIGh3OjEsMSkgaW4geW91ciAuYXNvdW5kcmMKKyAgZmlsZSAKKyogc3RhcnQgamFja2Qgd2l0aCB0aGlzIGRldmljZQorCitJIGhhZCBubyBzdWNjZXNzIGluIHRlc3RpbmcgdGhpcyBmb3Igbm93LCBpZiB5b3UgaGF2ZSBhbnkgc3VjY2VzcyB3aXRoIHRoaXMga2luZCAKK29mIHNldHVwLCBwbGVhc2UgZHJvcCBtZSBhbiBlbWFpbC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9CdDg3eC50eHQgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvQnQ4N3gudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxNThjZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvQnQ4N3gudHh0CkBAIC0wLDAgKzEsNzggQEAKK0ludHJvCis9PT09PQorCitZb3UgbWlnaHQgaGF2ZSBub3RpY2VkIHRoYXQgdGhlIGJ0ODc4IGdyYWJiZXIgY2FyZHMgaGF2ZSBhY3R1YWxseQorX3R3b18gUENJIGZ1bmN0aW9uczoKKworJCBsc3BjaQorWyAuLi4gXQorMDA6MGEuMCBNdWx0aW1lZGlhIHZpZGVvIGNvbnRyb2xsZXI6IEJyb29rdHJlZSBDb3Jwb3JhdGlvbiBCdDg3OCAocmV2IDAyKQorMDA6MGEuMSBNdWx0aW1lZGlhIGNvbnRyb2xsZXI6IEJyb29rdHJlZSBDb3Jwb3JhdGlvbiBCdDg3OCAocmV2IDAyKQorWyAuLi4gXQorCitUaGUgZmlyc3QgZG9lcyB2aWRlbywgaXQgaXMgYmFja3dhcmQgY29tcGF0aWJsZSB0byB0aGUgYnQ4NDguICBUaGUgc2Vjb25kCitkb2VzIGF1ZGlvLiAgc25kLWJ0ODd4IGlzIGEgZHJpdmVyIGZvciB0aGUgc2Vjb25kIGZ1bmN0aW9uLiAgSXQncyBhIHNvdW5kCitkcml2ZXIgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIHJlY29yZGluZyBzb3VuZCAoYW5kIF9vbmx5XyByZWNvcmRpbmcsIG5vCitwbGF5YmFjaykuICBBcyBtb3N0IFRWIGNhcmRzIGNvbWUgd2l0aCBhIHNob3J0IGNhYmxlIHdoaWNoIGNhbiBiZSBwbHVnZ2VkCitpbnRvIHlvdXIgc291bmQgY2FyZCdzIGxpbmUtaW4geW91IHByb2JhYmx5IGRvbid0IG5lZWQgdGhpcyBkcml2ZXIgaWYgYWxsCit5b3Ugd2FudCB0byBkbyBpcyBqdXN0IHdhdGNoaW5nIFRWLi4uCisKK1NvbWUgY2FyZHMgZG8gbm90IGJvdGhlciB0byBjb25uZWN0IGFueXRoaW5nIHRvIHRoZSBhdWRpbyBpbnB1dCBwaW5zIG9mCit0aGUgY2hpcCwgYW5kIHNvbWUgb3RoZXIgY2FyZHMgdXNlIHRoZSBhdWRpbyBmdW5jdGlvbiB0byB0cmFuc3BvcnQgTVBFRwordmlkZW8gZGF0YSwgc28gaXQncyBxdWl0ZSBwb3NzaWJsZSB0aGF0IGF1ZGlvIHJlY29yZGluZyBtYXkgbm90IHdvcmsKK3dpdGggeW91ciBjYXJkLgorCisKK0RyaXZlciBTdGF0dXMKKz09PT09PT09PT09PT0KKworVGhlIGRyaXZlciBpcyBub3cgc3RhYmxlLiAgSG93ZXZlciwgaXQgZG9lc24ndCBrbm93IGFib3V0IG1hbnkgVFYgY2FyZHMsCithbmQgaXQgcmVmdXNlcyB0byBsb2FkIGZvciBjYXJkcyBpdCBkb2Vzbid0IGtub3cuCisKK0lmIHRoZSBkcml2ZXIgY29tcGxhaW5zICgiVW5rbm93biBUViBjYXJkIGZvdW5kLCB0aGUgYXVkaW8gZHJpdmVyIHdpbGwKK25vdCBsb2FkIiksIHlvdSBjYW4gc3BlY2lmeSB0aGUgbG9hZF9hbGw9MSBvcHRpb24gdG8gZm9yY2UgdGhlIGRyaXZlciB0bwordHJ5IHRvIHVzZSB0aGUgYXVkaW8gY2FwdHVyZSBmdW5jdGlvbiBvZiB5b3VyIGNhcmQuICBJZiB0aGUgZnJlcXVlbmN5IG9mCityZWNvcmRlZCBkYXRhIGlzIG5vdCByaWdodCwgdHJ5IHRvIHNwZWNpZnkgdGhlIGRpZ2l0YWxfcmF0ZSBvcHRpb24gd2l0aAorb3RoZXIgdmFsdWVzIHRoYW4gdGhlIGRlZmF1bHQgMzIwMDAgKG9mdGVuIGl0J3MgNDQxMDAgb3IgNjQwMDApLgorCitJZiB5b3UgaGF2ZSBhbiB1bmtub3duIGNhcmQsIHBsZWFzZSBtYWlsIHRoZSBJRCBhbmQgYm9hcmQgbmFtZSB0bworPGFsc2EtZGV2ZWxAYWxzYS1wcm9qZWN0Lm9yZz4sIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBhdWRpbyBjYXB0dXJlIHdvcmtzCitvciBub3QsIHNvIHRoYXQgZnV0dXJlIHZlcnNpb25zIG9mIHRoaXMgZHJpdmVyIGtub3cgYWJvdXQgeW91ciBjYXJkLgorCisKK0F1ZGlvIG1vZGVzCis9PT09PT09PT09PQorCitUaGUgY2hpcCBrbm93cyB0d28gZGlmZmVyZW50IG1vZGVzIChkaWdpdGFsL2FuYWxvZykuICBzbmQtYnQ4N3gKK3JlZ2lzdGVycyB0d28gUENNIGRldmljZXMsIG9uZSBmb3IgZWFjaCBtb2RlLiAgVGhleSBjYW5ub3QgYmUgdXNlZCBhdAordGhlIHNhbWUgdGltZS4KKworCitEaWdpdGFsIGF1ZGlvIG1vZGUKKz09PT09PT09PT09PT09PT09PQorCitUaGUgZmlyc3QgZGV2aWNlIChodzpYLDApIGdpdmVzIHlvdSAxNiBiaXQgc3RlcmVvIHNvdW5kLiAgVGhlIHNhbXBsZQorcmF0ZSBkZXBlbmRzIG9uIHRoZSBleHRlcm5hbCBzb3VyY2Ugd2hpY2ggZmVlZHMgdGhlIEJ0ODd4IHdpdGggZGlnaXRhbAorc291bmQgdmlhIEkyUyBpbnRlcmZhY2UuCisKKworQW5hbG9nIGF1ZGlvIG1vZGUgKEEvRCkKKz09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBzZWNvbmQgZGV2aWNlIChodzpYLDEpIGdpdmVzIHlvdSA4IG9yIDE2IGJpdCBtb25vIHNvdW5kLiAgU3VwcG9ydGVkCitzYW1wbGUgcmF0ZXMgYXJlIGJldHdlZW4gMTE5NDY2IGFuZCA0NDgwMDAgSHogKHllcywgdGhlc2UgbnVtYmVycyBhcmUKK3RoYXQgaGlnaCkuICBJZiB5b3UndmUgc2V0IHRoZSBDT05GSUdfU05EX0JUODdYX09WRVJDTE9DSyBvcHRpb24sIHRoZQorbWF4aW11bSBzYW1wbGUgcmF0ZSBpcyAxNzkyMDAwIEh6LCBidXQgYXVkaW8gZGF0YSBiZWNvbWVzIHVudXNhYmxlCitiZXlvbmQgODk2MDAwIEh6IG9uIG15IGNhcmQuCisKK1RoZSBjaGlwIGhhcyB0aHJlZSBhbmFsb2cgaW5wdXRzLiAgQ29uc2VxdWVudGx5IHlvdSdsbCBnZXQgYSBtaXhlcgorZGV2aWNlIHRvIGNvbnRyb2wgdGhlc2UuCisKKworSGF2ZSBmdW4sCisKKyAgQ2xlbWVucworCisKK1dyaXR0ZW4gYnkgQ2xlbWVucyBMYWRpc2NoIDxjbGVtZW5zQGxhZGlzY2guZGU+CitiaWcgcGFydHMgY29waWVkIGZyb20gYnRhdWRpby50eHQgYnkgR2VyZCBLbm9yciA8a3JheGVsQGJ5dGVzZXgub3JnPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL0NNSVBDSS50eHQgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvQ01JUENJLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTM2ZTZlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL0NNSVBDSS50eHQKQEAgLTAsMCArMSwyNTQgQEAKKyAgICAgICAgIEJyaWVmIE5vdGVzIG9uIEMtTWVkaWEgODMzOC84NzM4Lzg3NjgvODc3MCBEcml2ZXIKKyAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgICAgICAgICAgICAgICAgIFRha2FzaGkgSXdhaSA8dGl3YWlAc3VzZS5kZT4KKworCitGcm9udC9SZWFyIE11bHRpLWNoYW5uZWwgUGxheWJhY2sKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDTTh4MzggY2hpcCBjYW4gdXNlIEFEQyBhcyB0aGUgc2Vjb25kIERBQyBzbyB0aGF0IHR3byBkaWZmZXJlbnQgc3RlcmVvCitjaGFubmVscyBjYW4gYmUgdXNlZCBmb3IgZnJvbnQvcmVhciBwbGF5YmFja3MuICBTaW5jZSB0aGVyZSBhcmUgdHdvCitEQUNzLCBib3RoIHN0cmVhbXMgYXJlIGhhbmRsZWQgaW5kZXBlbmRlbnRseSB1bmxpa2UgdGhlIDQvNmNoIG11bHRpLQorY2hhbm5lbCBwbGF5YmFja3MgaW4gdGhlIHNlY3Rpb24gYmVsb3cuCisKK0FzIGRlZmF1bHQsIEFMU0EgZHJpdmVyIGFzc2lnbnMgdGhlIGZpcnN0IFBDTSBkZXZpY2UgKGkuZS4gaHc6MCwwIGZvcgorY2FyZCMwKSBmb3IgZnJvbnQgYW5kIDQvNmNoIHBsYXliYWNrcywgd2hpbGUgdGhlIHNlY29uZCBQQ00gZGV2aWNlCisoaHc6MCwxKSBpcyBhc3NpZ25lZCB0byB0aGUgc2Vjb25kIERBQyBmb3IgcmVhciBwbGF5YmFjay4KKworVGhlcmUgYXJlIHNsaWdodCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB0d28gREFDczoKKworLSBUaGUgZmlyc3QgREFDIHN1cHBvcnRzIFU4IGFuZCBTMTZMRSBmb3JtYXRzLCB3aGlsZSB0aGUgc2Vjb25kIERBQworICBzdXBwb3J0cyBvbmx5IFMxNkxFLgorLSBUaGUgc2Vjb25kIERBQyBzdXBwb3J0cyBvbmx5IHR3byBjaGFubmVsIHN0ZXJlby4KKworUGxlYXNlIG5vdGUgdGhhdCB0aGUgQ004eDM4IERBQyBkb2Vzbid0IHN1cHBvcnQgY29udGludW91cyBwbGF5YmFjaworcmF0ZSBidXQgb25seSBmaXhlZCByYXRlczogNTUxMiwgODAwMCwgMTEwMjUsIDE2MDAwLCAyMjA1MCwgMzIwMDAsCis0NDEwMCBhbmQgNDgwMDAgSHouCisKK1RoZSByZWFyIG91dHB1dCBjYW4gYmUgaGVhcmQgb25seSB3aGVuICJGb3VyIENoYW5uZWwgTW9kZSIgc3dpdGNoIGlzCitkaXNhYmxlZC4gIE90aGVyd2lzZSBubyBzaWduYWwgd2lsbCBiZSByb3V0ZWQgdG8gdGhlIHJlYXIgc3BlYWtlcnMuCitBcyBkZWZhdWx0IGl0J3MgdHVybmVkIG9uLgorCisqKiogV0FSTklORyAqKioKK1doZW4gIkZvdXIgQ2hhbm5lbCBNb2RlIiBzd2l0Y2ggaXMgb2ZmLCB0aGUgb3V0cHV0IGZyb20gcmVhciBzcGVha2Vycword2lsbCBiZSBGVUxMIFZPTFVNRSByZWdhcmRsZXNzIG9mIE1hc3RlciBhbmQgUENNIHZvbHVtZXMuCitUaGlzIG1pZ2h0IGRhbWFnZSB5b3VyIGF1ZGlvIGVxdWlwbWVudC4gIFBsZWFzZSBkaXNjb25uZWN0IHNwZWFrZXJzCitiZWZvcmUgeW91ciB0dXJuIG9mZiB0aGlzIHN3aXRjaC4KKyoqKiBXQVJOSU5HICoqKgorCitbIFdlbGwuLiBJIG9uY2UgZ290IHRoZSBvdXRwdXQgd2l0aCBjb3JyZWN0IHZvbHVtZSAoaS5lLiBzYW1lIHdpdGggdGhlCisgIGZyb250IG9uZSkgYW5kIHdhcyBzbyBleGNpdGVkLiAgSXQgd2FzIGV2ZW4gd2l0aCAiRm91ciBDaGFubmVsIiBiaXQKKyAgb24gYW5kICJkb3VibGUgREFDIiBtb2RlLiAgQWN0dWFsbHkgSSBjb3VsZCBoZWFyIHNlcGFyYXRlIDQgY2hhbm5lbHMKKyAgZnJvbSBmcm9udCBhbmQgcmVhciBzcGVha2VycyEgIEJ1dC4uIGFmdGVyIHJlYm9vdCwgYWxsIHdhcyBnb25lLgorICBJdCdzIGEgdmVyeSBwaXR5IHRoYXQgSSBkaWRuJ3Qgc2F2ZSB0aGUgcmVnaXN0ZXIgZHVtcCBhdCB0aGF0CisgIHRpbWUuLiAgTWF5YmUgdGhlcmUgaXMgYW4gdW5rbm93biByZWdpc3RlciB0byBhY2hpZXZlIHRoaXMuLi4gXQorCitJZiB5b3VyIGNhcmQgaGFzIGFuIGV4dHJhIG91dHB1dCBqYWNrIGZvciB0aGUgcmVhciBvdXRwdXQsIHRoZSByZWFyCitwbGF5YmFjayBzaG91bGQgYmUgcm91dGVkIHRoZXJlIGFzIGRlZmF1bHQuICBJZiBub3QsIHRoZXJlIGlzIGEKK2NvbnRyb2wgc3dpdGNoIGluIHRoZSBkcml2ZXIgIkxpbmUtSW4gQXMgUmVhciIsIHdoaWNoIHlvdSBjYW4gY2hhbmdlCit2aWEgYWxzYW1peGVyIG9yIHNvbWV3aGF0IGVsc2UuICBXaGVuIHRoaXMgc3dpdGNoIGlzIG9uLCBsaW5lLWluIGphY2sKK2lzIHVzZWQgYXMgcmVhciBvdXRwdXQuCisKK1RoZXJlIGFyZSB0d28gbW9yZSBjb250cm9scyByZWdhcmRpbmcgdG8gdGhlIHJlYXIgb3V0cHV0LgorVGhlICJFeGNoYW5nZSBEQUMiIHN3aXRjaCBpcyB1c2VkIHRvIGV4Y2hhbmdlIGZyb250IGFuZCByZWFyIHBsYXliYWNrCityb3V0ZXMsIGkuZS4gdGhlIDJuZCBEQUMgaXMgb3V0cHV0IGZyb20gZnJvbnQgb3V0cHV0LgorCisKKzQvNiBNdWx0aS1DaGFubmVsIFBsYXliYWNrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgcmVjZW50IENNODczOCBjaGlwcyBzdXBwb3J0IGZvciB0aGUgNC82IG11bHRpLWNoYW5uZWwgcGxheWJhY2sKK2Z1bmN0aW9uLiAgVGhpcyBpcyB1c2VmdWwgZXNwZWNpYWxseSBmb3IgQUMzIGRlY29kaW5nLgorCitXaGVuIHRoZSBtdWx0aS1jaGFubmVsIGlzIHN1cHBvcnRlZCwgdGhlIGRyaXZlciBuYW1lIGhhcyBhIHN1ZmZpeAorIi1NQyIgc3VjaCBsaWtlICJDTUk4NzM4LU1DNiIuICBZb3UgY2FuIGNoZWNrIHRoaXMgbmFtZSBmcm9tCisvcHJvYy9hc291bmQvY2FyZHMuCisKK1doZW4gdGhlIDQvNi1jaCBvdXRwdXQgaXMgZW5hYmxlZCwgdGhlIHNlY29uZCBEQUMgYWNjZXB0cyB1cCB0byA2IChvcgorNCkgY2hhbm5lbHMuICBXaGlsZSB0aGUgZHVhbCBEQUMgc3VwcG9ydHMgdHdvIGRpZmZlcmVudCByYXRlcyBvcgorZm9ybWF0cywgdGhlIDQvNi1jaCBwbGF5YmFjayBzdXBwb3J0cyBvbmx5IHRoZSBzYW1lIGNvbmRpdGlvbiBmb3IgYWxsCitjaGFubmVscy4gIFNpbmNlIHRoZSBtdWx0aS1jaGFubmVsIHBsYXliYWNrIG1vZGUgdXNlcyBib3RoIERBQ3MsIHlvdQorY2Fubm90IG9wZXJhdGUgd2l0aCBmdWxsLWR1cGxleC4KKworVGhlIDQuMCBhbmQgNS4xIG1vZGVzIGFyZSBkZWZpbmVkIGFzIHRoZSBwY20gInN1cnJvdW5kNDAiIGFuZCAic3Vycm91bmQ1MSIKK2luIGFsc2EtbGliLiAgRm9yIGV4YW1wbGUsIHlvdSBjYW4gcGxheSBhIFdBViBmaWxlIHdpdGggNiBjaGFubmVscyBsaWtlCisKKwklIGFwbGF5IC1Ec3Vycm91bmQ1MSBzaXhjaGFubmVscy53YXYKKworRm9yIHByb2dyYW1taW5nIHRoZSA0LzYgY2hhbm5lbCBwbGF5YmFjaywgeW91IG5lZWQgdG8gc3BlY2lmeSB0aGUgUENNCitjaGFubmVscyBhcyB5b3UgbGlrZSBhbmQgc2V0IHRoZSBmb3JtYXQgUzE2TEUuICBGb3IgZXhhbXBsZSwgZm9yIHBsYXliYWNrCit3aXRoIDQgY2hhbm5lbHMsCisKKwlzbmRfcGNtX2h3X3BhcmFtc19zZXRfYWNjZXNzKHBjbSwgaHcsIFNORF9QQ01fQUNDRVNTX1JXX0lOVEVSTEVBVkVEKTsKKwkgICAgLy8gb3IgbW1hcCBpZiB5b3UgbGlrZQorCXNuZF9wY21faHdfcGFyYW1zX3NldF9mb3JtYXQocGNtLCBodywgU05EX1BDTV9GT1JNQVRfUzE2X0xFKTsKKwlzbmRfcGNtX2h3X3BhcmFtc19zZXRfY2hhbm5lbHMocGNtLCBodywgNCk7CisKK2FuZCB1c2UgdGhlIGludGVybGVhdmVkIDQgY2hhbm5lbCBkYXRhLgorCitUaGVyZSBhcmUgc29tZSBjb250cm9sIHN3aXRjaGVzIGFmZmVjdGluZyB0byB0aGUgc3BlYWtlciBjb25uZWN0aW9uczoKKworIkxpbmUtSW4gTW9kZSIJLSBhbiBlbnVtIGNvbnRyb2wgdG8gY2hhbmdlIHRoZSBiZWhhdmlvciBvZiBsaW5lLWluCisJamFjay4gIEVpdGhlciAiTGluZS1JbiIsICJSZWFyIE91dHB1dCIgb3IgIkJhc3MgT3V0cHV0IiBjYW4KKwliZSBzZWxlY3RlZC4gIFRoZSBsYXN0IGl0ZW0gaXMgYXZhaWxhYmxlIG9ubHkgd2l0aCBtb2RlbCAwMzkKKwlvciBuZXdlci4gCisJV2hlbiAiUmVhciBPdXRwdXQiIGlzIGNob3NlbiwgdGhlIHN1cnJvdW5kIGNoYW5uZWxzIDMgYW5kIDQKKwlhcmUgb3V0cHV0IHRvIGxpbmUtaW4gamFjay4KKyJNaWMtSW4gTW9kZSIJLSBhbiBlbnVtIGNvbnRyb2wgdG8gY2hhbmdlIHRoZSBiZWhhdmlvciBvZiBtaWMtaW4KKwlqYWNrLiAgRWl0aGVyICJNaWMtSW4iIG9yICJDZW50ZXIvTEZFIE91dHB1dCIgY2FuIGJlCisJc2VsZWN0ZWQuIAorCVdoZW4gIkNlbnRlci9MRkUgT3V0cHV0IiBpcyBjaG9zZW4sIHRoZSBjZW50ZXIgYW5kIGJhc3MKKwljaGFubmVscyAoY2hhbm5lbHMgNSBhbmQgNikgYXJlIG91dHB1dCB0byBtaWMtaW4gamFjay4gCisKK0RpZ2l0YWwgSS9PCistLS0tLS0tLS0tLQorCitUaGUgQ004eDM4IHByb3ZpZGVzIHRoZSBleGNlbGxlbnQgU1BESUYgY2FwYWJpbGl0eSB3aXRoIHZlcnkgY2hlYXAKK3ByaWNlICh5ZXMsIHRoYXQncyB0aGUgcmVhc29uIEkgYm91Z2h0IHRoZSBjYXJkIDopCisKK1RoZSBTUERJRiBwbGF5YmFjayBhbmQgY2FwdHVyZSBhcmUgZG9uZSB2aWEgdGhlIHRoaXJkIFBDTSBkZXZpY2UKKyhodzowLDIpLiAgVXN1YWxseSB0aGlzIGlzIGFzc2lnbmVkIHRvIHRoZSBQQ00gZGV2aWNlICJzcGRpZiIuCitUaGUgYXZhaWxhYmxlIHJhdGVzIGFyZSA0NDEwMCBhbmQgNDgwMDAgSHouCitGb3IgcGxheWJhY2sgd2l0aCBhcGxheSwgeW91IGNhbiBydW4gbGlrZSBiZWxvdzoKKworCSUgYXBsYXkgLURodzowLDIgZm9vLndhdgorCitvcgorCisJJSBhcGxheSAtRHNwZGlmIGZvby53YXYKKworMjRiaXQgZm9ybWF0IGlzIGFsc28gc3VwcG9ydGVkIGV4cGVyaW1lbnRhbGx5LgorCitUaGUgcGxheWJhY2sgYW5kIGNhcHR1cmUgb3ZlciBTUERJRiB1c2Ugbm9ybWFsIERBQyBhbmQgQURDLAorcmVzcGVjdGl2ZWx5LCBzbyB5b3UgY2Fubm90IHBsYXliYWNrIGJvdGggYW5hbG9nIGFuZCBkaWdpdGFsIHN0cmVhbXMKK3NpbXVsdGFuZW91c2x5LgorCitUbyBlbmFibGUgU1BESUYgb3V0cHV0LCB5b3UgbmVlZCB0byB0dXJuIG9uICJJRUM5NTggT3V0cHV0IFN3aXRjaCIKK2NvbnRyb2wgdmlhIG1peGVyIG9yIGFsc2FjdGwgKCJJRUM5NTgiIGlzIHRoZSBvZmZpY2lhbCBuYW1lIG9mCitzby1jYWxsZWQgUy9QRElGKS4gIFRoZW4geW91J2xsIHNlZSB0aGUgcmVkIGxpZ2h0IG9uIGZyb20gdGhlIGNhcmQgc28KK3lvdSBrbm93IHRoYXQncyB3b3JraW5nIG9idmlvdXNseSA6KQorVGhlIFNQRElGIGlucHV0IGlzIGFsd2F5cyBlbmFibGVkLCBzbyB5b3UgY2FuIGhlYXIgU1BESUYgaW5wdXQgZGF0YQorZnJvbSBsaW5lLW91dCB3aXRoICJJRUM5NTggSW4gTW9uaXRvciIgc3dpdGNoIGF0IGFueSB0aW1lIChzZWUKK2JlbG93KS4KKworWW91IGNhbiBwbGF5IHZpYSBTUERJRiBldmVuIHdpdGggdGhlIGZpcnN0IGRldmljZSAoaHc6MCwwKSwKK2J1dCBTUERJRiBpcyBlbmFibGVkIG9ubHkgd2hlbiB0aGUgcHJvcGVyIGZvcm1hdCAoUzE2TEUpLCBzYW1wbGUgcmF0ZQorKDQ0MTEwMCBvciA0ODAwMCkgYW5kIGNoYW5uZWxzICgyKSBhcmUgdXNlZC4gIE90aGVyd2lzZSBpdCdzIHR1cm5lZAorb2ZmLiAgKEFsc28gZG9uJ3QgZm9yZ2V0IHRvIHR1cm4gb24gIklFQzk1OCBPdXRwdXQgU3dpdGNoIiwgdG9vLikKKworCitBZGRpdGlvbmFsbHkgdGhlcmUgYXJlIHJlbGV2YW50IGNvbnRyb2wgc3dpdGNoZXM6CisKKyJJRUM5NTggTWl4IEFuYWxvZyIgLSBNaXggYW5hbG9nIFBDTSBwbGF5YmFjayBhbmQgRk0tT1BMLzMgc3RyZWFtcyBhbmQKKwlvdXRwdXQgdGhyb3VnaCBTUERJRi4gIFRoaXMgc3dpdGNoIGFwcGVhcnMgb25seSBvbiBvbGQgY2hpcAorCW1vZGVscyAoQ004NzM4IDAzMyBhbmQgMDM3KS4KKwlOb3RlOiB3aXRob3V0IHRoaXMgY29udHJvbCB5b3UgY2FuIG91dHB1dCBQQ00gdG8gU1BESUYuCisJVGhpcyBpcyAibWl4aW5nIiBvZiBzdHJlYW1zLCBzbyBlLmcuIGl0J3Mgbm90IGZvciBBQzMgb3V0cHV0CisJKHNlZSB0aGUgbmV4dCBzZWN0aW9uKS4KKworIklFQzk1OCBJbiBTZWxlY3QiICAtIFNlbGVjdCBTUERJRiBpbnB1dCwgdGhlIGludGVybmFsIENELWluIChmYWxzZSkKKwlhbmQgdGhlIGV4dGVybmFsIGlucHV0ICh0cnVlKS4KKworIklFQzk1OCBMb29wIiAgICAgICAtIFNQRElGIGlucHV0IGRhdGEgaXMgbG9vcCBiYWNrIGludG8gU1BESUYKKwlvdXRwdXQgKGFrYSBieXBhc3MpCisKKyJJRUM5NTggQ29weXJpZ2h0IiAgLSBTZXQgdGhlIGNvcHlyaWdodCBiaXQuCisKKyJJRUM5NTggNVYiICAgICAgICAgLSBTZWxlY3QgMC41ViAoY29heCkgb3IgNVYgKG9wdGljYWwpIGludGVyZmFjZS4KKwlPbiBzb21lIGNhcmRzIHRoaXMgZG9lc24ndCB3b3JrIGFuZCB5b3UgbmVlZCB0byBjaGFuZ2UgdGhlCisJY29uZmlndXJhdGlvbiB3aXRoIGhhcmR3YXJlIGRpcC1zd2l0Y2guCisKKyJJRUM5NTggSW4gTW9uaXRvciIgLSBTUERJRiBpbnB1dCBpcyByb3V0ZWQgdG8gREFDLgorCisiSUVDOTU4IEluIFBoYXNlIEludmVyc2UiIC0gU2V0IFNQRElGIGlucHV0IGZvcm1hdCBhcyBpbnZlcnNlLgorCVtGSVhNRTogdGhpcyBkb2Vzbid0IHdvcmsgb24gYWxsIGNoaXBzLi5dCisKKyJJRUM5NTggSW4gVmFsaWQiICAgLSBTZXQgaW5wdXQgdmFsaWRpdHkgZmxhZyBkZXRlY3Rpb24uCisKK05vdGU6IFdoZW4gIlBDTSBQbGF5YmFjayBTd2l0Y2giIGlzIG9uLCB5b3UnbGwgaGVhciB0aGUgZGlnaXRhbCBvdXRwdXQKK3N0cmVhbSB0aHJvdWdoIGFuYWxvZyBsaW5lLW91dC4KKworCitUaGUgQUMzIChSQVcgRElHSVRBTCkgT1VUUFVUCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBkcml2ZXIgc3VwcG9ydHMgcmF3IGRpZ2l0YWwgKHR5cGljYWxseSBBQzMpIGkvbyBvdmVyIFNQRElGLiAgVGhpcworY2FuIGJlIHRvZ2dsZWQgdmlhIElFQzk1OCBwbGF5YmFjayBjb250cm9sLCBidXQgdXN1YWxseSB5b3UgbmVlZCB0bworYWNjZXNzIGl0IHZpYSBhbHNhLWxpYi4gIFNlZSBhbHNhLWxpYiBkb2N1bWVudHMgZm9yIG1vcmUgZGV0YWlscy4KKworT24gdGhlIHJhdyBkaWdpdGFsIG1vZGUsIHRoZSAiUENNIFBsYXliYWNrIFN3aXRjaCIgaXMgYXV0b21hdGljYWxseQordHVybmVkIG9mZiBzbyB0aGF0IG5vbi1hdWRpbyBkYXRhIGlzIGhlYXJkIGZyb20gdGhlIGFuYWxvZyBsaW5lLW91dC4KK1NpbWlsYXJseSB0aGUgZm9sbG93aW5nIHN3aXRjaGVzIGFyZSBvZmY6ICJJRUM5NTggTWl4IEFuYWxvZyIgYW5kCisiSUVDOTU4IExvb3AiLiAgVGhlIHN3aXRjaGVzIGFyZSByZXN1bWVkIGFmdGVyIGNsb3NpbmcgdGhlIFNQRElGIFBDTQorZGV2aWNlIGF1dG9tYXRpY2FsbHkgdG8gdGhlIHByZXZpb3VzIHN0YXRlLgorCitPbiB0aGUgbW9kZWwgMDMzLCBBQzMgaXMgaW1wbGVtZW50ZWQgYnkgdGhlIHNvZnR3YXJlIGNvbnZlcnNpb24gaW4KK3RoZSBhbHNhLWxpYi4gIElmIHlvdSBuZWVkIHRvIGJ5cGFzcyB0aGUgc29mdHdhcmUgY29udmVyc2lvbiBvZiBJRUM5NTgKK3N1YmZyYW1lcywgcGFzcyB0aGUgInNvZnRfYWMzPTAiIG1vZHVsZSBvcHRpb24uICBUaGlzIGRvZXNuJ3QgbWF0dGVyCitvbiB0aGUgbmV3ZXIgbW9kZWxzLgorCisKK0FOQUxPRyBNSVhFUiBJTlRFUkZBQ0UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG1peGVyIGludGVyZmFjZSBvbiBDTTh4MzggaXMgc2ltaWxhciB0byBTQjE2LgorVGhlcmUgYXJlIE1hc3RlciwgUENNLCBTeW50aCwgQ0QsIExpbmUsIE1pYyBhbmQgUEMgU3BlYWtlciBwbGF5YmFjawordm9sdW1lcy4gIFN5bnRoLCBDRCwgTGluZSBhbmQgTWljIGhhdmUgcGxheWJhY2sgYW5kIGNhcHR1cmUgc3dpdGNoZXMsCit0b28sIGFzIHdlbGwgYXMgU0IxNi4KKworSW4gYWRkaXRpb24gdG8gdGhlIHN0YW5kYXJkIFNCIG1peGVyLCBDTTh4MzggcHJvdmlkZXMgbW9yZSBmdW5jdGlvbnMuCistIFBDTSBwbGF5YmFjayBzd2l0Y2gKKy0gUENNIGNhcHR1cmUgc3dpdGNoICh0byBjYXB0dXJlIHRoZSBkYXRhIHNlbnQgdG8gREFDKQorLSBNaWMgQm9vc3Qgc3dpdGNoCistIE1pYyBjYXB0dXJlIHZvbHVtZQorLSBBdXggcGxheWJhY2sgdm9sdW1lL3N3aXRjaCBhbmQgY2FwdHVyZSBzd2l0Y2gKKy0gM0QgY29udHJvbCBzd2l0Y2gKKworCitNSURJIENPTlRST0xMRVIKKy0tLS0tLS0tLS0tLS0tLQorCitXaXRoIENNSTgzMzggY2hpcHMsIHRoZSBNUFU0MDEtVUFSVCBpbnRlcmZhY2UgaXMgZGlzYWJsZWQgYXMgZGVmYXVsdC4KK1lvdSBuZWVkIHRvIHNldCB0aGUgbW9kdWxlIG9wdGlvbiAibXB1X3BvcnQiIHRvIGEgdmFsaWQgSS9PIHBvcnQgYWRkcmVzcwordG8gZW5hYmxlIE1JREkgc3VwcG9ydC4gIFZhbGlkIEkvTyBwb3J0cyBhcmUgMHgzMDAsIDB4MzEwLCAweDMyMCBhbmQKKzB4MzMwLiAgQ2hvb3NlIGEgdmFsdWUgdGhhdCBkb2Vzbid0IGNvbmZsaWN0IHdpdGggb3RoZXIgY2FyZHMuCisKK1dpdGggQ01JODczOCBhbmQgbmV3ZXIgY2hpcHMsIHRoZSBNSURJIGludGVyZmFjZSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQKK2FuZCB0aGUgZHJpdmVyIGF1dG9tYXRpY2FsbHkgY2hvb3NlcyBhIHBvcnQgYWRkcmVzcy4KKworVGhlcmUgaXMgX25vXyBoYXJkd2FyZSB3YXZldGFibGUgZnVuY3Rpb24gb24gdGhpcyBjaGlwIChleGNlcHQgZm9yCitPUEwzIHN5bnRoIGJlbG93KS4KK1doYXQncyBzYWlkIGFzIE1JREkgc3ludGggb24gV2luZG93cyBpcyBhIHNvZnR3YXJlIHN5bnRoZXNpemVyCitlbXVsYXRpb24uICBPbiBMaW51eCB1c2UgVGlNaWRpdHkgb3Igb3RoZXIgc29mdHN5bnRoIHByb2dyYW0gZm9yCitwbGF5aW5nIE1JREkgbXVzaWMuCisKKworRk0gT1BMLzMgU3ludGgKKy0tLS0tLS0tLS0tLS0tCisKK1RoZSBGTSBPUEwvMyBpcyBhbHNvIGVuYWJsZWQgYXMgZGVmYXVsdCBvbmx5IGZvciB0aGUgZmlyc3QgY2FyZC4KK1NldCAiZm1fcG9ydCIgbW9kdWxlIG9wdGlvbiBmb3IgbW9yZSBjYXJkcy4KKworVGhlIG91dHB1dCBxdWFsaXR5IG9mIEZNIE9QTC8zIGlzLCBob3dldmVyLCB2ZXJ5IHdlaXJkLgorSSBkb24ndCBrbm93IHdoeS4uCisKK0NNSTg3NjggYW5kIG5ld2VyIGNoaXBzIGRvIG5vdCBoYXZlIHRoZSBGTSBzeW50aC4KKworCitKb3lzdGljayBhbmQgTW9kZW0KKy0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbGVnYWN5IGpveXN0aWNrIGlzIHN1cHBvcnRlZC4gIFRvIGVuYWJsZSB0aGUgam95c3RpY2sgc3VwcG9ydCwgcGFzcworam95c3RpY2tfcG9ydD0xIG1vZHVsZSBvcHRpb24uICBUaGUgdmFsdWUgMSBtZWFucyB0aGUgYXV0by1kZXRlY3Rpb24uCitJZiB0aGUgYXV0by1kZXRlY3Rpb24gZmFpbHMsIHRyeSB0byBwYXNzIHRoZSBleGFjdCBJL08gYWRkcmVzcy4KKworVGhlIG1vZGVtIGlzIGVuYWJsZWQgZHluYW1pY2FsbHkgdmlhIGEgY2FyZCBjb250cm9sIHN3aXRjaCAiTW9kZW0iLgorCisKK0RlYnVnZ2luZyBJbmZvcm1hdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSByZWdpc3RlcnMgYXJlIHNob3duIGluIC9wcm9jL2Fzb3VuZC9jYXJkWC9jbWlwY2kuICBJZiB5b3UgaGF2ZSBhbnkKK3Byb2JsZW0gKGVzcGVjaWFsbHkgdW5leHBlY3RlZCBiZWhhdmlvciBvZiBtaXhlciksIHBsZWFzZSBhdHRhY2ggdGhlCitvdXRwdXQgb2YgdGhpcyBwcm9jIGZpbGUgdG9nZXRoZXIgd2l0aCB0aGUgYnVnIHJlcG9ydC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9DaGFubmVsLU1hcHBpbmctQVBJLnR4dCBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9DaGFubmVsLU1hcHBpbmctQVBJLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzQzZDFhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL0NoYW5uZWwtTWFwcGluZy1BUEkudHh0CkBAIC0wLDAgKzEsMTUzIEBACitBTFNBIFBDTSBjaGFubmVsLW1hcHBpbmcgQVBJCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJCQkJCVRha2FzaGkgSXdhaSA8dGl3YWlAc3VzZS5kZT4KKworR0VORVJBTAorLS0tLS0tLQorCitUaGUgY2hhbm5lbCBtYXBwaW5nIEFQSSBhbGxvd3MgdXNlciB0byBxdWVyeSB0aGUgcG9zc2libGUgY2hhbm5lbCBtYXBzCithbmQgdGhlIGN1cnJlbnQgY2hhbm5lbCBtYXAsIGFsc28gb3B0aW9uYWxseSB0byBtb2RpZnkgdGhlIGNoYW5uZWwgbWFwCitvZiB0aGUgY3VycmVudCBzdHJlYW0uCisKK0EgY2hhbm5lbCBtYXAgaXMgYW4gYXJyYXkgb2YgcG9zaXRpb24gZm9yIGVhY2ggUENNIGNoYW5uZWwuCitUeXBpY2FsbHksIGEgc3RlcmVvIFBDTSBzdHJlYW0gaGFzIGEgY2hhbm5lbCBtYXAgb2YKKyAgeyBmcm9udF9sZWZ0LCBmcm9udF9yaWdodCB9Cit3aGlsZSBhIDQuMCBzdXJyb3VuZCBQQ00gc3RyZWFtIGhhcyBhIGNoYW5uZWwgbWFwIG9mCisgIHsgZnJvbnQgbGVmdCwgZnJvbnQgcmlnaHQsIHJlYXIgbGVmdCwgcmVhciByaWdodCB9LgorCitUaGUgcHJvYmxlbSwgc28gZmFyLCB3YXMgdGhhdCB3ZSBoYWQgbm8gc3RhbmRhcmQgY2hhbm5lbCBtYXAKK2V4cGxpY2l0bHksIGFuZCBhcHBsaWNhdGlvbnMgaGFkIG5vIHdheSB0byBrbm93IHdoaWNoIGNoYW5uZWwKK2NvcnJlc3BvbmRzIHRvIHdoaWNoIChzcGVha2VyKSBwb3NpdGlvbi4gIFRodXMsIGFwcGxpY2F0aW9ucyBhcHBsaWVkCit3cm9uZyBjaGFubmVscyBmb3IgNS4xIG91dHB1dHMsIGFuZCB5b3UgaGVhciBzdWRkZW5seSBzdHJhbmdlIHNvdW5kCitmcm9tIHJlYXIuICBPciwgc29tZSBkZXZpY2VzIHNlY3JldGx5IGFzc3VtZSB0aGF0IGNlbnRlci9MRkUgaXMgdGhlCit0aGlyZC9mb3VydGggY2hhbm5lbHMgd2hpbGUgb3RoZXJzIHRoYXQgQy9MRkUgYXMgNXRoLzZ0aCBjaGFubmVscy4KKworQWxzbywgc29tZSBkZXZpY2VzIHN1Y2ggYXMgSERNSSBhcmUgY29uZmlndXJhYmxlIGZvciBkaWZmZXJlbnQgc3BlYWtlcgorcG9zaXRpb25zIGV2ZW4gd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgdG90YWwgY2hhbm5lbHMuICBIb3dldmVyLCB0aGVyZQord2FzIG5vIHdheSB0byBzcGVjaWZ5IHRoaXMgYmVjYXVzZSBvZiBsYWNrIG9mIGNoYW5uZWwgbWFwCitzcGVjaWZpY2F0aW9uLiAgVGhlc2UgYXJlIHRoZSBtYWluIG1vdGl2YXRpb25zIGZvciB0aGUgbmV3IGNoYW5uZWwKK21hcHBpbmcgQVBJLgorCisKK0RFU0lHTgorLS0tLS0tCisKK0FjdHVhbGx5LCAidGhlIGNoYW5uZWwgbWFwcGluZyBBUEkiIGRvZXNuJ3QgaW50cm9kdWNlIGFueXRoaW5nIG5ldyBpbgordGhlIGtlcm5lbC91c2VyLXNwYWNlIEFCSSBwZXJzcGVjdGl2ZS4gIEl0IHVzZXMgb25seSB0aGUgZXhpc3RpbmcKK2NvbnRyb2wgZWxlbWVudCBmZWF0dXJlcy4KKworQXMgYSBncm91bmQgZGVzaWduLCBlYWNoIFBDTSBzdWJzdHJlYW0gbWF5IGNvbnRhaW4gYSBjb250cm9sIGVsZW1lbnQKK3Byb3ZpZGluZyB0aGUgY2hhbm5lbCBtYXBwaW5nIGluZm9ybWF0aW9uIGFuZCBjb25maWd1cmF0aW9uLiAgVGhpcworZWxlbWVudCBpcyBzcGVjaWZpZWQgYnk6CisJaWZhY2UgPSBTTkRSVl9DVExfRUxFTV9JRkFDRV9QQ00KKwluYW1lID0gIlBsYXliYWNrIENoYW5uZWwgTWFwIiBvciAiQ2FwdHVyZSBDaGFubmVsIE1hcCIKKwlkZXZpY2UgPSB0aGUgc2FtZSBkZXZpY2UgbnVtYmVyIGZvciB0aGUgYXNzaWduZWQgUENNIHN1YnN0cmVhbQorCWluZGV4ID0gdGhlIHNhbWUgaW5kZXggbnVtYmVyIGZvciB0aGUgYXNzaWduZWQgUENNIHN1YnN0cmVhbQorCitOb3RlIHRoZSBuYW1lIGlzIGRpZmZlcmVudCBkZXBlbmRpbmcgb24gdGhlIFBDTSBzdWJzdHJlYW0gZGlyZWN0aW9uLgorCitFYWNoIGNvbnRyb2wgZWxlbWVudCBwcm92aWRlcyBhdCBsZWFzdCB0aGUgVExWIHJlYWQgb3BlcmF0aW9uIGFuZCB0aGUKK3JlYWQgb3BlcmF0aW9uLiAgT3B0aW9uYWxseSwgdGhlIHdyaXRlIG9wZXJhdGlvbiBjYW4gYmUgcHJvdmlkZWQgdG8KK2FsbG93IHVzZXIgdG8gY2hhbmdlIHRoZSBjaGFubmVsIG1hcCBkeW5hbWljYWxseS4KKworKiBUTFYKKworVGhlIFRMViBvcGVyYXRpb24gZ2l2ZXMgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGNoYW5uZWwKK21hcHMuICBBIGxpc3QgaXRlbSBvZiBhIGNoYW5uZWwgbWFwIGlzIHVzdWFsbHkgYSBUTFYgb2YKKwl0eXBlIGRhdGEtYnl0ZXMgY2gwIGNoMSBjaDIuLi4KK3doZXJlIHR5cGUgaXMgdGhlIFRMViB0eXBlIHZhbHVlLCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSB0b3RhbAorYnl0ZXMgKG5vdCB0aGUgbnVtYmVycykgb2YgY2hhbm5lbCB2YWx1ZXMsIGFuZCB0aGUgcmVzdCBhcmUgdGhlCitwb3NpdGlvbiB2YWx1ZSBmb3IgZWFjaCBjaGFubmVsLgorCitBcyBhIFRMViB0eXBlLCBlaXRoZXIgU05EUlZfQ1RMX1RMVlRfQ0hNQVBfRklYRUQsCitTTkRSVl9DVExfVExWX0NITUFQX1ZBUiBvciBTTkRSVl9DVExfVExWVF9DSE1BUF9QQUlSRUQgY2FuIGJlIHVzZWQuCitUaGUgX0ZJWEVEIHR5cGUgaXMgZm9yIGEgY2hhbm5lbCBtYXAgd2l0aCB0aGUgZml4ZWQgY2hhbm5lbCBwb3NpdGlvbgord2hpbGUgdGhlIGxhdHRlciB0d28gYXJlIGZvciBmbGV4aWJsZSBjaGFubmVsIHBvc2l0aW9ucy4gIF9WQVIgdHlwZSBpcworZm9yIGEgY2hhbm5lbCBtYXAgd2hlcmUgYWxsIGNoYW5uZWxzIGFyZSBmcmVlbHkgc3dhcHBhYmxlIGFuZCBfUEFJUkVECit0eXBlIGlzIHdoZXJlIHBhaXItd2lzZSBjaGFubmVscyBhcmUgc3dhcHBhYmxlLiAgRm9yIGV4YW1wbGUsIHdoZW4geW91CitoYXZlIHtGTC9GUi9STC9SUn0gY2hhbm5lbCBtYXAsIF9QQUlSRUQgdHlwZSB3b3VsZCBhbGxvdyB5b3UgdG8gc3dhcAorb25seSB7UkwvUlIvRkwvRlJ9IHdoaWxlIF9WQVIgdHlwZSB3b3VsZCBhbGxvdyBldmVuIHN3YXBwaW5nIEZMIGFuZAorUlIuCisKK1RoZXNlIG5ldyBUTFYgdHlwZXMgYXJlIGRlZmluZWQgaW4gc291bmQvdGx2LmguCisKK1RoZSBhdmFpbGFibGUgY2hhbm5lbCBwb3NpdGlvbiB2YWx1ZXMgYXJlIGRlZmluZWQgaW4gc291bmQvYXNvdW5kLmgsCitoZXJlIGlzIGEgY3V0OgorCisvKiBjaGFubmVsIHBvc2l0aW9ucyAqLworZW51bSB7CisJU05EUlZfQ0hNQVBfVU5LTk9XTiA9IDAsCisJU05EUlZfQ0hNQVBfTkEsCQkvKiBOL0EsIHNpbGVudCAqLworCVNORFJWX0NITUFQX01PTk8sCS8qIG1vbm8gc3RyZWFtICovCisJLyogdGhpcyBmb2xsb3dzIHRoZSBhbHNhLWxpYiBtaXhlciBjaGFubmVsIHZhbHVlICsgMyAqLworCVNORFJWX0NITUFQX0ZMLAkJLyogZnJvbnQgbGVmdCAqLworCVNORFJWX0NITUFQX0ZSLAkJLyogZnJvbnQgcmlnaHQgKi8KKwlTTkRSVl9DSE1BUF9STCwJCS8qIHJlYXIgbGVmdCAqLworCVNORFJWX0NITUFQX1JSLAkJLyogcmVhciByaWdodCAqLworCVNORFJWX0NITUFQX0ZDLAkJLyogZnJvbnQgY2VudGVyICovCisJU05EUlZfQ0hNQVBfTEZFLAkvKiBMRkUgKi8KKwlTTkRSVl9DSE1BUF9TTCwJCS8qIHNpZGUgbGVmdCAqLworCVNORFJWX0NITUFQX1NSLAkJLyogc2lkZSByaWdodCAqLworCVNORFJWX0NITUFQX1JDLAkJLyogcmVhciBjZW50ZXIgKi8KKwkvKiBuZXcgZGVmaW5pdGlvbnMgKi8KKwlTTkRSVl9DSE1BUF9GTEMsCS8qIGZyb250IGxlZnQgY2VudGVyICovCisJU05EUlZfQ0hNQVBfRlJDLAkvKiBmcm9udCByaWdodCBjZW50ZXIgKi8KKwlTTkRSVl9DSE1BUF9STEMsCS8qIHJlYXIgbGVmdCBjZW50ZXIgKi8KKwlTTkRSVl9DSE1BUF9SUkMsCS8qIHJlYXIgcmlnaHQgY2VudGVyICovCisJU05EUlZfQ0hNQVBfRkxXLAkvKiBmcm9udCBsZWZ0IHdpZGUgKi8KKwlTTkRSVl9DSE1BUF9GUlcsCS8qIGZyb250IHJpZ2h0IHdpZGUgKi8KKwlTTkRSVl9DSE1BUF9GTEgsCS8qIGZyb250IGxlZnQgaGlnaCAqLworCVNORFJWX0NITUFQX0ZDSCwJLyogZnJvbnQgY2VudGVyIGhpZ2ggKi8KKwlTTkRSVl9DSE1BUF9GUkgsCS8qIGZyb250IHJpZ2h0IGhpZ2ggKi8KKwlTTkRSVl9DSE1BUF9UQywJCS8qIHRvcCBjZW50ZXIgKi8KKwlTTkRSVl9DSE1BUF9URkwsCS8qIHRvcCBmcm9udCBsZWZ0ICovCisJU05EUlZfQ0hNQVBfVEZSLAkvKiB0b3AgZnJvbnQgcmlnaHQgKi8KKwlTTkRSVl9DSE1BUF9URkMsCS8qIHRvcCBmcm9udCBjZW50ZXIgKi8KKwlTTkRSVl9DSE1BUF9UUkwsCS8qIHRvcCByZWFyIGxlZnQgKi8KKwlTTkRSVl9DSE1BUF9UUlIsCS8qIHRvcCByZWFyIHJpZ2h0ICovCisJU05EUlZfQ0hNQVBfVFJDLAkvKiB0b3AgcmVhciBjZW50ZXIgKi8KKwlTTkRSVl9DSE1BUF9MQVNUID0gU05EUlZfQ0hNQVBfVFJDLAorfTsKKworV2hlbiBhIFBDTSBzdHJlYW0gY2FuIHByb3ZpZGUgbW9yZSB0aGFuIG9uZSBjaGFubmVsIG1hcCwgeW91IGNhbgorcHJvdmlkZSBtdWx0aXBsZSBjaGFubmVsIG1hcHMgaW4gYSBUTFYgY29udGFpbmVyIHR5cGUuICBUaGUgVExWIGRhdGEKK3RvIGJlIHJldHVybmVkIHdpbGwgY29udGFpbiBzdWNoIGFzOgorCVNORFJWX0NUTF9UTFZUX0NPTlRBSU5FUiA5NgorCSAgICBTTkRSVl9DVExfVExWVF9DSE1BUF9GSVhFRCA0IFNORFJWX0NITUFQX0ZDCisJICAgIFNORFJWX0NUTF9UTFZUX0NITUFQX0ZJWEVEIDggU05EUlZfQ0hNQVBfRkwgU05EUlZfQ0hNQVBfRlIKKwkgICAgU05EUlZfQ1RMX1RMVlRfQ0hNQVBfRklYRUQgMTYgTkRSVl9DSE1BUF9GTCBTTkRSVl9DSE1BUF9GUiBcCisJCVNORFJWX0NITUFQX1JMIFNORFJWX0NITUFQX1JSCisKK1RoZSBjaGFubmVsIHBvc2l0aW9uIGlzIHByb3ZpZGVkIGluIExTQiAxNmJpdHMuICBUaGUgdXBwZXIgYml0cyBhcmUKK3VzZWQgZm9yIGJpdCBmbGFncy4KKworI2RlZmluZSBTTkRSVl9DSE1BUF9QT1NJVElPTl9NQVNLCTB4ZmZmZgorI2RlZmluZSBTTkRSVl9DSE1BUF9QSEFTRV9JTlZFUlNFCSgweDAxIDw8IDE2KQorI2RlZmluZSBTTkRSVl9DSE1BUF9EUklWRVJfU1BFQwkJKDB4MDIgPDwgMTYpCisKK1NORFJWX0NITUFQX1BIQVNFX0lOVkVSU0UgaW5kaWNhdGVzIHRoZSBjaGFubmVsIGlzIHBoYXNlIGludmVydGVkLAorKHRodXMgc3VtbWluZyBsZWZ0IGFuZCByaWdodCBjaGFubmVscyB3b3VsZCByZXN1bHQgaW4gYWxtb3N0IHNpbGVuY2UpLgorU29tZSBkaWdpdGFsIG1pYyBkZXZpY2VzIGhhdmUgdGhpcy4KKworV2hlbiBTTkRSVl9DSE1BUF9EUklWRVJfU1BFQyBpcyBzZXQsIGFsbCB0aGUgY2hhbm5lbCBwb3NpdGlvbiB2YWx1ZXMKK2Rvbid0IGZvbGxvdyB0aGUgc3RhbmRhcmQgZGVmaW5pdGlvbiBhYm92ZSBidXQgZHJpdmVyLXNwZWNpZmljLgorCisqIFJFQUQgT1BFUkFUSU9OCisKK1RoZSBjb250cm9sIHJlYWQgb3BlcmF0aW9uIGlzIGZvciBwcm92aWRpbmcgdGhlIGN1cnJlbnQgY2hhbm5lbCBtYXAgb2YKK3RoZSBnaXZlbiBzdHJlYW0uICBUaGUgY29udHJvbCBlbGVtZW50IHJldHVybnMgYW4gaW50ZWdlciBhcnJheQorY29udGFpbmluZyB0aGUgcG9zaXRpb24gb2YgZWFjaCBjaGFubmVsLgorCitXaGVuIHRoaXMgaXMgcGVyZm9ybWVkIGJlZm9yZSB0aGUgbnVtYmVyIG9mIHRoZSBjaGFubmVsIGlzIHNwZWNpZmllZAorKGkuZS4gaHdfcGFyYW1zIGlzIHNldCksIGl0IHNob3VsZCByZXR1cm4gYWxsIGNoYW5uZWxzIHNldCB0bworVU5LTk9XTi4KKworKiBXUklURSBPUEVSQVRJT04KKworVGhlIGNvbnRyb2wgd3JpdGUgb3BlcmF0aW9uIGlzIG9wdGlvbmFsLCBhbmQgb25seSBmb3IgZGV2aWNlcyB0aGF0IGNhbgorY2hhbmdlIHRoZSBjaGFubmVsIGNvbmZpZ3VyYXRpb24gb24gdGhlIGZseSwgc3VjaCBhcyBIRE1JLiAgVXNlciBuZWVkcwordG8gcGFzcyBhbiBpbnRlZ2VyIHZhbHVlIGNvbnRhaW5pbmcgdGhlIHZhbGlkIGNoYW5uZWwgcG9zaXRpb25zIGZvcgorYWxsIGNoYW5uZWxzIG9mIHRoZSBhc3NpZ25lZCBQQ00gc3Vic3RyZWFtLgorCitUaGlzIG9wZXJhdGlvbiBpcyBhbGxvd2VkIG9ubHkgYXQgUENNIFBSRVBBUkVEIHN0YXRlLiAgV2hlbiBjYWxsZWQgaW4KK290aGVyIHN0YXRlcywgaXQgc2hhbGwgcmV0dXJuIGFuIGVycm9yLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL0NvbnRyb2xOYW1lcy50eHQgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvQ29udHJvbE5hbWVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmMxY2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL0NvbnRyb2xOYW1lcy50eHQKQEAgLTAsMCArMSwxMDcgQEAKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHN0YW5kYXJkIG5hbWVzIG9mIG1peGVyIGNvbnRyb2xzLgorCitTeW50YXg6IFtMT0NBVElPTl0gU09VUkNFIFtDSEFOTkVMXSBbRElSRUNUSU9OXSBGVU5DVElPTgorCitESVJFQ1RJT046CisgIDxub3RoaW5nPgkoYm90aCBkaXJlY3Rpb25zKQorICBQbGF5YmFjaworICBDYXB0dXJlCisgIEJ5cGFzcyBQbGF5YmFjaworICBCeXBhc3MgQ2FwdHVyZQorCitGVU5DVElPTjoKKyAgU3dpdGNoCShvbi9vZmYgc3dpdGNoKQorICBWb2x1bWUKKyAgUm91dGUJCShyb3V0ZSBjb250cm9sLCBoYXJkd2FyZSBzcGVjaWZpYykKKworQ0hBTk5FTDoKKyAgPG5vdGhpbmc+ICAgICAoY2hhbm5lbCBpbmRlcGVuZGVudCwgb3IgYXBwbGllcyB0byBhbGwgY2hhbm5lbHMpCisgIEZyb250CisgIFN1cnJvdW5kICAgICAgKHJlYXIgbGVmdC9yaWdodCBpbiA0LjAvNS4xIHN1cnJvdW5kKQorICBDTEZFCisgIENlbnRlcgorICBMRkUKKyAgU2lkZSAgICAgICAgICAoc2lkZSBsZWZ0L3JpZ2h0IGZvciA3LjEgc3Vycm91bmQpCisKK0xPQ0FUSU9OOiAgICAgICAocGh5c2ljYWwgbG9jYXRpb24gb2Ygc291cmNlKQorICBGcm9udAorICBSZWFyCisgIERvY2sgICAgICAgICAgKGRvY2tpbmcgc3RhdGlvbikKKyAgSW50ZXJuYWwKKworU09VUkNFOgorICBNYXN0ZXIKKyAgTWFzdGVyIE1vbm8KKyAgSGFyZHdhcmUgTWFzdGVyCisgIFNwZWFrZXIJKGludGVybmFsIHNwZWFrZXIpCisgIEJhc3MgU3BlYWtlcgkoaW50ZXJuYWwgTEZFIHNwZWFrZXIpCisgIEhlYWRwaG9uZQorICBMaW5lIE91dAorICBCZWVwCQkoYmVlcCBnZW5lcmF0b3IpCisgIFBob25lCisgIFBob25lIElucHV0CisgIFBob25lIE91dHB1dAorICBTeW50aAorICBGTQorICBNaWMKKyAgSGVhZHNldCBNaWMJKG1pYyBwYXJ0IG9mIGNvbWJpbmVkIGhlYWRzZXQgamFjayAtIDQtcGluIGhlYWRwaG9uZSArIG1pYykKKyAgSGVhZHBob25lIE1pYwkobWljIHBhcnQgb2YgZWl0aGVyL29yIC0gMy1waW4gaGVhZHBob25lIG9yIG1pYykKKyAgTGluZQkJKGlucHV0IG9ubHksIHVzZSAiTGluZSBPdXQiIGZvciBvdXRwdXQpCisgIENECisgIFZpZGVvCisgIFpvb20gVmlkZW8KKyAgQXV4CisgIFBDTQorICBQQ00gUGFuCisgIExvb3BiYWNrCisgIEFuYWxvZyBMb29wYmFjawkoRC9BIC0+IEEvRCBsb29wYmFjaykKKyAgRGlnaXRhbCBMb29wYmFjawkocGxheWJhY2sgLT4gY2FwdHVyZSBsb29wYmFjayAtIHdpdGhvdXQgYW5hbG9nIHBhdGgpCisgIE1vbm8KKyAgTW9ubyBPdXRwdXQKKyAgTXVsdGkKKyAgQURDCisgIFdhdmUKKyAgTXVzaWMKKyAgSTJTCisgIElFQzk1OAorICBIRE1JCisgIFNQRElGCQkob3V0cHV0IG9ubHkpCisgIFNQRElGIEluCisgIERpZ2l0YWwgSW4KKyAgSERNSS9EUAkoZWl0aGVyIEhETUkgb3IgRGlzcGxheVBvcnQpCisKK0V4Y2VwdGlvbnMgKGRlcHJlY2F0ZWQpOgorICBbQW5hbG9ndWV8RGlnaXRhbF0gQ2FwdHVyZSBTb3VyY2UKKyAgW0FuYWxvZ3VlfERpZ2l0YWxdIENhcHR1cmUgU3dpdGNoCShha2EgaW5wdXQgZ2FpbiBzd2l0Y2gpCisgIFtBbmFsb2d1ZXxEaWdpdGFsXSBDYXB0dXJlIFZvbHVtZQkoYWthIGlucHV0IGdhaW4gdm9sdW1lKQorICBbQW5hbG9ndWV8RGlnaXRhbF0gUGxheWJhY2sgU3dpdGNoCShha2Egb3V0cHV0IGdhaW4gc3dpdGNoKQorICBbQW5hbG9ndWV8RGlnaXRhbF0gUGxheWJhY2sgVm9sdW1lCShha2Egb3V0cHV0IGdhaW4gdm9sdW1lKQorICBUb25lIENvbnRyb2wgLSBTd2l0Y2gKKyAgVG9uZSBDb250cm9sIC0gQmFzcworICBUb25lIENvbnRyb2wgLSBUcmVibGUKKyAgM0QgQ29udHJvbCAtIFN3aXRjaAorICAzRCBDb250cm9sIC0gQ2VudGVyCisgIDNEIENvbnRyb2wgLSBEZXB0aAorICAzRCBDb250cm9sIC0gV2lkZQorICAzRCBDb250cm9sIC0gU3BhY2UKKyAgM0QgQ29udHJvbCAtIExldmVsCisgIE1pYyBCb29zdCBbKD9kQildCisKK1BDTSBpbnRlcmZhY2U6CisKKyAgU2FtcGxlIENsb2NrIFNvdXJjZQl7ICJXb3JkIiwgIkludGVybmFsIiwgIkF1dG9TeW5jIiB9CisgIENsb2NrIFN5bmMgU3RhdHVzCXsgIkxvY2siLCAiU3luYyIsICJObyBMb2NrIiB9CisgIEV4dGVybmFsIFJhdGUJCS8qIGV4dGVybmFsIGNhcHR1cmUgcmF0ZSAqLworICBDYXB0dXJlIFJhdGUJCS8qIGNhcHR1cmUgcmF0ZSB0YWtlbiBmcm9tIGV4dGVybmFsIHNvdXJjZSAqLworCitJRUM5NTggKFMvUERJRikgaW50ZXJmYWNlOgorCisgIElFQzk1OCBbLi4uXSBbUGxheWJhY2t8Q2FwdHVyZV0gU3dpdGNoCS8qIHR1cm4gb24vb2ZmIHRoZSBJRUM5NTggaW50ZXJmYWNlICovCisgIElFQzk1OCBbLi4uXSBbUGxheWJhY2t8Q2FwdHVyZV0gVm9sdW1lCS8qIGRpZ2l0YWwgdm9sdW1lIGNvbnRyb2wgKi8KKyAgSUVDOTU4IFsuLi5dIFtQbGF5YmFja3xDYXB0dXJlXSBEZWZhdWx0CS8qIGRlZmF1bHQgb3IgZ2xvYmFsIHZhbHVlIC0gcmVhZC93cml0ZSAqLworICBJRUM5NTggWy4uLl0gW1BsYXliYWNrfENhcHR1cmVdIE1hc2sJCS8qIGNvbnN1bWVyIGFuZCBwcm9mZXNzaW9uYWwgbWFzayAqLworICBJRUM5NTggWy4uLl0gW1BsYXliYWNrfENhcHR1cmVdIENvbiBNYXNrCS8qIGNvbnN1bWVyIG1hc2sgKi8KKyAgSUVDOTU4IFsuLi5dIFtQbGF5YmFja3xDYXB0dXJlXSBQcm8gTWFzawkvKiBwcm9mZXNzaW9uYWwgbWFzayAqLworICBJRUM5NTggWy4uLl0gW1BsYXliYWNrfENhcHR1cmVdIFBDTSBTdHJlYW0JLyogdGhlIHNldHRpbmdzIGFzc2lnbmVkIHRvIGEgUENNIHN0cmVhbSAqLworICBJRUM5NTggUS1zdWJjb2RlIFtQbGF5YmFja3xDYXB0dXJlXSBEZWZhdWx0CS8qIFEtc3ViY29kZSBiaXRzICovCisgIElFQzk1OCBQcmVhbWJsZSBbUGxheWJhY2t8Q2FwdHVyZV0gRGVmYXVsdAkvKiBidXJzdCBwcmVhbWJsZSB3b3JkcyAoNCoxNmJpdHMpICovCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvSEQtQXVkaW8tQ29udHJvbHMudHh0IGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL0hELUF1ZGlvLUNvbnRyb2xzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTYyMWUzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL0hELUF1ZGlvLUNvbnRyb2xzLnR4dApAQCAtMCwwICsxLDExNiBAQAorVGhpcyBmaWxlIGV4cGxhaW5zIHRoZSBjb2RlYy1zcGVjaWZpYyBtaXhlciBjb250cm9scy4KKworUmVhbHRlayBjb2RlY3MKKy0tLS0tLS0tLS0tLS0tCisKKyogQ2hhbm5lbCBNb2RlCisgIFRoaXMgaXMgYW4gZW51bSBjb250cm9sIHRvIGNoYW5nZSB0aGUgc3Vycm91bmQtY2hhbm5lbCBzZXR1cCwKKyAgYXBwZWFycyBvbmx5IHdoZW4gdGhlIHN1cnJvdW5kIGNoYW5uZWxzIGFyZSBhdmFpbGFibGUuCisgIEl0IGdpdmVzIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgdG8gYmUgdXNlZCwgIjJjaCIsICI0Y2giLCAiNmNoIiwKKyAgYW5kICI4Y2giLiAgQWNjb3JkaW5nIHRvIHRoZSBjb25maWd1cmF0aW9uLCB0aGlzIGFsc28gY29udHJvbHMgdGhlCisgIGphY2stcmV0YXNraW5nIG9mIG11bHRpLUkvTyBqYWNrcy4KKworKiBBdXRvLU11dGUgTW9kZQorICBUaGlzIGlzIGFuIGVudW0gY29udHJvbCB0byBjaGFuZ2UgdGhlIGF1dG8tbXV0ZSBiZWhhdmlvciBvZiB0aGUKKyAgaGVhZHBob25lIGFuZCBsaW5lLW91dCBqYWNrcy4gIElmIGJ1aWx0LWluIHNwZWFrZXJzIGFuZCBoZWFkcGhvbmUKKyAgYW5kL29yIGxpbmUtb3V0IGphY2tzIGFyZSBhdmFpbGFibGUgb24gYSBtYWNoaW5lLCB0aGlzIGNvbnRyb2xzCisgIGFwcGVhcnMuCisgIFdoZW4gdGhlcmUgYXJlIG9ubHkgZWl0aGVyIGhlYWRwaG9uZXMgb3IgbGluZS1vdXQgamFja3MsIGl0IGdpdmVzCisgICJEaXNhYmxlZCIgYW5kICJFbmFibGVkIiBzdGF0ZS4gIFdoZW4gZW5hYmxlZCwgdGhlIHNwZWFrZXIgaXMgbXV0ZWQKKyAgYXV0b21hdGljYWxseSB3aGVuIGEgamFjayBpcyBwbHVnZ2VkLgorCisgIFdoZW4gYm90aCBoZWFkcGhvbmUgYW5kIGxpbmUtb3V0IGphY2tzIGFyZSBwcmVzZW50LCBpdCBnaXZlcworICAiRGlzYWJsZWQiLCAiU3BlYWtlciBPbmx5IiBhbmQgIkxpbmUtT3V0K1NwZWFrZXIiLiAgV2hlbgorICBzcGVha2VyLW9ubHkgaXMgY2hvc2VuLCBwbHVnZ2luZyBpbnRvIGEgaGVhZHBob25lIG9yIGEgbGluZS1vdXQgamFjaworICBtdXRlcyB0aGUgc3BlYWtlcnMsIGJ1dCBub3QgbGluZS1vdXRzLiAgV2hlbiBsaW5lLW91dCtzcGVha2VyIGlzCisgIHNlbGVjdGVkLCBwbHVnZ2luZyB0byBhIGhlYWRwaG9uZSBqYWNrIG11dGVzIGJvdGggc3BlYWtlcnMgYW5kCisgIGxpbmUtb3V0cy4KKworCitJRFQvU2lnbWF0ZWwgY29kZWNzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogQW5hbG9nIExvb3BiYWNrCisgIFRoaXMgY29udHJvbCBlbmFibGVzL2Rpc2FibGVzIHRoZSBhbmFsb2ctbG9vcGJhY2sgY2lyY3VpdC4gIFRoaXMKKyAgYXBwZWFycyBvbmx5IHdoZW4gImxvb3BiYWNrIiBpcyBzZXQgdG8gdHJ1ZSBpbiBhIGNvZGVjIGhpbnQKKyAgKHNlZSBIRC1BdWRpby50eHQpLiAgTm90ZSB0aGF0IG9uIHNvbWUgY29kZWNzIHRoZSBhbmFsb2ctbG9vcGJhY2sKKyAgYW5kIHRoZSBub3JtYWwgUENNIHBsYXliYWNrIGFyZSBleGNsdXNpdmUsIGkuZS4gd2hlbiB0aGlzIGlzIG9uLCB5b3UKKyAgd29uJ3QgaGVhciBhbnkgUENNIHN0cmVhbS4KKworKiBTd2FwIENlbnRlci9MRkUKKyAgU3dhcHMgdGhlIGNlbnRlciBhbmQgTEZFIGNoYW5uZWwgb3JkZXIuICBOb3JtYWxseSwgdGhlIGxlZnQKKyAgY29ycmVzcG9uZHMgdG8gdGhlIGNlbnRlciBhbmQgdGhlIHJpZ2h0IHRvIHRoZSBMRkUuICBXaGVuIHRoaXMgaXMKKyAgT04sIHRoZSBsZWZ0IHRvIHRoZSBMRkUgYW5kIHRoZSByaWdodCB0byB0aGUgY2VudGVyLgorCisqIEhlYWRwaG9uZSBhcyBMaW5lIE91dAorICBXaGVuIHRoaXMgY29udHJvbCBpcyBPTiwgdHJlYXQgdGhlIGhlYWRwaG9uZSBqYWNrcyBhcyBsaW5lLW91dAorICBqYWNrcy4gIFRoYXQgaXMsIHRoZSBoZWFkcGhvbmUgd29uJ3QgYXV0by1tdXRlIHRoZSBvdGhlciBsaW5lLW91dHMsCisgIGFuZCBubyBIUC1hbXAgaXMgc2V0IHRvIHRoZSBwaW5zLgorCisqIE1pYyBKYWNrIE1vZGUsIExpbmUgSmFjayBNb2RlLCBldGMKKyAgVGhlc2UgZW51bSBjb250cm9scyB0aGUgZGlyZWN0aW9uIGFuZCB0aGUgYmlhcyBvZiB0aGUgaW5wdXQgamFjaworICBwaW5zLiAgRGVwZW5kaW5nIG9uIHRoZSBqYWNrIHR5cGUsIGl0IGNhbiBzZXQgYXMgIk1pYyBJbiIgYW5kICJMaW5lIAorICBJbiIsIGZvciBkZXRlcm1pbmluZyB0aGUgaW5wdXQgYmlhcywgb3IgaXQgY2FuIGJlIHNldCB0byAiTGluZSBPdXQiCisgIHdoZW4gdGhlIHBpbiBpcyBhIG11bHRpLUkvTyBqYWNrIGZvciBzdXJyb3VuZCBjaGFubmVscy4KKworCitWSUEgY29kZWNzCistLS0tLS0tLS0tCisKKyogU21hcnQgNS4xCisgIEFuIGVudW0gY29udHJvbCB0byByZS10YXNrIHRoZSBtdWx0aS1JL08gamFja3MgZm9yIHN1cnJvdW5kIG91dHB1dHMuCisgIFdoZW4gaXQncyBPTiwgdGhlIGNvcnJlc3BvbmRpbmcgaW5wdXQgamFja3MgKHVzdWFsbHkgYSBsaW5lLWluIGFuZCBhCisgIG1pYy1pbikgYXJlIHN3aXRjaGVkIGFzIHRoZSBzdXJyb3VuZCBhbmQgdGhlIENMRkUgb3V0cHV0IGphY2tzLgorCisqIEluZGVwZW5kZW50IEhQCisgIFdoZW4gdGhpcyBlbnVtIGNvbnRyb2wgaXMgZW5hYmxlZCwgdGhlIGhlYWRwaG9uZSBvdXRwdXQgaXMgcm91dGVkCisgIGZyb20gYW4gaW5kaXZpZHVhbCBzdHJlYW0gKHRoZSB0aGlyZCBQQ00gc3VjaCBhcyBodzowLDIpIGluc3RlYWQgb2YKKyAgdGhlIHByaW1hcnkgc3RyZWFtLiAgSW4gdGhlIGNhc2UgdGhlIGhlYWRwaG9uZSBEQUMgaXMgc2hhcmVkIHdpdGggYQorICBzaWRlIG9yIGEgQ0xGRS1jaGFubmVsIERBQywgdGhlIERBQyBpcyBzd2l0Y2hlZCB0byB0aGUgaGVhZHBob25lCisgIGF1dG9tYXRpY2FsbHkuCisKKyogTG9vcGJhY2sgTWl4aW5nCisgIEFuIGVudW0gY29udHJvbCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgYW5hbG9nLWxvb3BiYWNrIHJvdXRlIGlzCisgIGVuYWJsZWQgb3Igbm90LiAgV2hlbiBpdCdzIGVuYWJsZWQsIHRoZSBhbmFsb2ctbG9vcGJhY2sgaXMgbWl4ZWQgdG8KKyAgdGhlIGZyb250LWNoYW5uZWwuICBBbHNvLCB0aGUgc2FtZSByb3V0ZSBpcyB1c2VkIGZvciB0aGUgaGVhZHBob25lCisgIGFuZCBzcGVha2VyIG91dHB1dHMuICBBcyBhIHNpZGUtZWZmZWN0LCB3aGVuIHRoaXMgbW9kZSBpcyBzZXQsIHRoZQorICBpbmRpdmlkdWFsIHZvbHVtZSBjb250cm9scyB3aWxsIGJlIG5vIGxvbmdlciBhdmFpbGFibGUgZm9yCisgIGhlYWRwaG9uZXMgYW5kIHNwZWFrZXJzIGJlY2F1c2UgdGhlcmUgaXMgb25seSBvbmUgREFDIGNvbm5lY3RlZCB0byBhCisgIG1peGVyIHdpZGdldC4KKworKiBEeW5hbWljIFBvd2VyLUNvbnRyb2wKKyAgVGhpcyBjb250cm9sIGRldGVybWluZXMgd2hldGhlciB0aGUgZHluYW1pYyBwb3dlci1jb250cm9sIHBlciBqYWNrCisgIGRldGVjdGlvbiBpcyBlbmFibGVkIG9yIG5vdC4gIFdoZW4gZW5hYmxlZCwgdGhlIHdpZGdldHMgcG93ZXIgc3RhdGUKKyAgKEQwL0QzKSBhcmUgY2hhbmdlZCBkeW5hbWljYWxseSBkZXBlbmRpbmcgb24gdGhlIGphY2sgcGx1Z2dpbmcKKyAgc3RhdGUgZm9yIHNhdmluZyBwb3dlciBjb25zdW1wdGlvbnMuICBIb3dldmVyLCBpZiB5b3VyIHN5c3RlbQorICBkb2Vzbid0IHByb3ZpZGUgYSBwcm9wZXIgamFjay1kZXRlY3Rpb24sIHRoaXMgd29uJ3Qgd29yazsgaW4gc3VjaCBhCisgIGNhc2UsIHR1cm4gdGhpcyBjb250cm9sIE9GRi4KKworKiBKYWNrIERldGVjdAorICBUaGlzIGNvbnRyb2wgaXMgcHJvdmlkZWQgb25seSBmb3IgVlQxNzA4IGNvZGVjIHdoaWNoIGdpdmVzIG5vIHByb3BlcgorICB1bnNvbGljaXRlZCBldmVudCBwZXIgamFjayBwbHVnLiAgV2hlbiB0aGlzIGlzIG9uLCB0aGUgZHJpdmVyIHBvbGxzCisgIHRoZSBqYWNrIGRldGVjdGlvbiBzbyB0aGF0IHRoZSBoZWFkcGhvbmUgYXV0by1tdXRlIGNhbiB3b3JrLCB3aGlsZSAKKyAgdHVybmluZyB0aGlzIG9mZiB3b3VsZCByZWR1Y2UgdGhlIHBvd2VyIGNvbnN1bXB0aW9uLgorCisKK0NvbmV4YW50IGNvZGVjcworLS0tLS0tLS0tLS0tLS0tCisKKyogQXV0by1NdXRlIE1vZGUKKyAgU2VlIFJlYXRlayBjb2RlY3MuCisKKworQW5hbG9nIGNvZGVjcworLS0tLS0tLS0tLS0tLS0KKworKiBDaGFubmVsIE1vZGUKKyAgVGhpcyBpcyBhbiBlbnVtIGNvbnRyb2wgdG8gY2hhbmdlIHRoZSBzdXJyb3VuZC1jaGFubmVsIHNldHVwLAorICBhcHBlYXJzIG9ubHkgd2hlbiB0aGUgc3Vycm91bmQgY2hhbm5lbHMgYXJlIGF2YWlsYWJsZS4KKyAgSXQgZ2l2ZXMgdGhlIG51bWJlciBvZiBjaGFubmVscyB0byBiZSB1c2VkLCAiMmNoIiwgIjRjaCIgYW5kICI2Y2giLgorICBBY2NvcmRpbmcgdG8gdGhlIGNvbmZpZ3VyYXRpb24sIHRoaXMgYWxzbyBjb250cm9scyB0aGUKKyAgamFjay1yZXRhc2tpbmcgb2YgbXVsdGktSS9PIGphY2tzLgorCisqIEluZGVwZW5kZW50IEhQCisgIFdoZW4gdGhpcyBlbnVtIGNvbnRyb2wgaXMgZW5hYmxlZCwgdGhlIGhlYWRwaG9uZSBvdXRwdXQgaXMgcm91dGVkCisgIGZyb20gYW4gaW5kaXZpZHVhbCBzdHJlYW0gKHRoZSB0aGlyZCBQQ00gc3VjaCBhcyBodzowLDIpIGluc3RlYWQgb2YKKyAgdGhlIHByaW1hcnkgc3RyZWFtLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL0hELUF1ZGlvLU1vZGVscy50eHQgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvSEQtQXVkaW8tTW9kZWxzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzA5OWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL0hELUF1ZGlvLU1vZGVscy50eHQKQEAgLTAsMCArMSwzMjQgQEAKKyAgTW9kZWwgbmFtZQlEZXNjcmlwdGlvbgorICAtLS0tLS0tLS0tICAgIC0tLS0tLS0tLS0tCitBTEM4ODAKKz09PT09PQorICAzc3RhY2sJMy1qYWNrIGluIGJhY2sgYW5kIGEgaGVhZHBob25lIG91dAorICAzc3RhY2stZGlnb3V0CTMtamFjayBpbiBiYWNrLCBhIEhQIG91dCBhbmQgYSBTUERJRiBvdXQKKyAgNXN0YWNrCTUtamFjayBpbiBiYWNrLCAyLWphY2sgaW4gZnJvbnQKKyAgNXN0YWNrLWRpZ291dAk1LWphY2sgaW4gYmFjaywgMi1qYWNrIGluIGZyb250LCBhIFNQRElGIG91dAorICA2c3RhY2sJNi1qYWNrIGluIGJhY2ssIDItamFjayBpbiBmcm9udAorICA2c3RhY2stZGlnb3V0CTYtamFjayB3aXRoIGEgU1BESUYgb3V0CisKK0FMQzI2MAorPT09PT09CisgIGdwaW8xCQlFbmFibGUgR1BJTzEKKyAgY29lZgkJRW5hYmxlIEVBUEQgdmlhIENPRUYgdGFibGUKKyAgZnVqaXRzdQlRdWlyayBmb3IgRlNDIFM3MDIwCisgIGZ1aml0c3UtandzZQlRdWlyayBmb3IgRlNDIFM3MDIwIHdpdGggamFjayBtb2RlcyBhbmQgSFAgbWljIHN1cHBvcnQKKworQUxDMjYyCis9PT09PT0KKyAgaW52LWRtaWMJSW52ZXJ0ZWQgaW50ZXJuYWwgbWljIHdvcmthcm91bmQKKworQUxDMjY3LzI2OAorPT09PT09PT09PQorICBpbnYtZG1pYwlJbnZlcnRlZCBpbnRlcm5hbCBtaWMgd29ya2Fyb3VuZAorICBocC1lYXBkCURpc2FibGUgSFAgRUFQRCBvbiBOSUQgMHgxNQorCitBTEMyMngvMjN4LzI1eC8yNjkvMjd4LzI4eC8yOXggKGFuZCB2ZW5kb3Itc3BlY2lmaWMgQUxDM3h4eCBtb2RlbHMpCis9PT09PT0KKyAgbGFwdG9wLWFtaWMJCUxhcHRvcHMgd2l0aCBhbmFsb2ctbWljIGlucHV0CisgIGxhcHRvcC1kbWljCQlMYXB0b3BzIHdpdGggZGlnaXRhbC1taWMgaW5wdXQKKyAgYWxjMjY5LWRtaWMJCUVuYWJsZSBBTEMyNjkoVkEpIGRpZ2l0YWwgbWljIHdvcmthcm91bmQKKyAgYWxjMjcxLWRtaWMJCUVuYWJsZSBBTEMyNzFYIGRpZ2l0YWwgbWljIHdvcmthcm91bmQKKyAgaW52LWRtaWMJCUludmVydGVkIGludGVybmFsIG1pYyB3b3JrYXJvdW5kCisgIGhlYWRzZXQtbWljCQlJbmRpY2F0ZXMgYSBjb21iaW5lZCBoZWFkc2V0IChoZWFkcGhvbmUrbWljKSBqYWNrCisgIGhlYWRzZXQtbW9kZQkJTW9yZSBjb21wcmVoZW5zaXZlIGhlYWRzZXQgc3VwcG9ydCBmb3IgQUxDMjY5ICYgY28KKyAgaGVhZHNldC1tb2RlLW5vLWhwLW1pYyBIZWFkc2V0IG1vZGUgc3VwcG9ydCB3aXRob3V0IGhlYWRwaG9uZSBtaWMKKyAgbGVub3ZvLWRvY2sgICAJRW5hYmxlcyBkb2NraW5nIHN0YXRpb24gSS9PIGZvciBzb21lIExlbm92b3MKKyAgaHAtZ3Bpby1sZWQJCUdQSU8gTEVEIHN1cHBvcnQgb24gSFAgbGFwdG9wcworICBkZWxsLWhlYWRzZXQtbXVsdGkJSGVhZHNldCBqYWNrLCB3aGljaCBjYW4gYWxzbyBiZSB1c2VkIGFzIG1pYy1pbgorICBkZWxsLWhlYWRzZXQtZG9jawlIZWFkc2V0IGphY2sgKHdpdGhvdXQgbWljLWluKSwgYW5kIGFsc28gZG9jayBJL08KKyAgYWxjMjgzLWRhYy13Y2FwcwlGaXh1cHMgZm9yIENocm9tZWJvb2sgd2l0aCBBTEMyODMKKyAgYWxjMjgzLXNlbnNlLWNvbWJvCUNvbWJvIGphY2sgc2Vuc2luZyBvbiBBTEMyODMKKyAgdHB0NDQwLWRvY2sJCVBpbiBjb25maWdzIGZvciBMZW5vdm8gVGhpbmtwYWQgRG9jayBzdXBwb3J0CisKK0FMQzY2eC82N3gvODkyCis9PT09PT09PT09PT09PQorICBtYXJpbwkJCUNocm9tZWJvb2sgbWFyaW8gbW9kZWwgZml4dXAKKyAgYXN1cy1tb2RlMQkJQVNVUworICBhc3VzLW1vZGUyCQlBU1VTCisgIGFzdXMtbW9kZTMJCUFTVVMKKyAgYXN1cy1tb2RlNAkJQVNVUworICBhc3VzLW1vZGU1CQlBU1VTCisgIGFzdXMtbW9kZTYJCUFTVVMKKyAgYXN1cy1tb2RlNwkJQVNVUworICBhc3VzLW1vZGU4CQlBU1VTCisgIGludi1kbWljCQlJbnZlcnRlZCBpbnRlcm5hbCBtaWMgd29ya2Fyb3VuZAorICBkZWxsLWhlYWRzZXQtbXVsdGkJSGVhZHNldCBqYWNrLCB3aGljaCBjYW4gYWxzbyBiZSB1c2VkIGFzIG1pYy1pbgorCitBTEM2ODAKKz09PT09PQorICBOL0EKKworQUxDODh4Lzg5OC8xMTUwCis9PT09PT09PT09PT09PT09PT09PT09CisgIGFjZXItYXNwaXJlLTQ5MzBnCUFjZXIgQXNwaXJlIDQ5MzBHLzU5MzBHLzY1MzBHLzY5MzBHLzc3MzBHCisgIGFjZXItYXNwaXJlLTg5MzBnCUFjZXIgQXNwaXJlIDgzMzBHLzY5MzVHCisgIGFjZXItYXNwaXJlCQlBY2VyIEFzcGlyZSBvdGhlcnMKKyAgaW52LWRtaWMJCUludmVydGVkIGludGVybmFsIG1pYyB3b3JrYXJvdW5kCisgIG5vLXByaW1hcnktaHAJCVZBSU8gWi9WR0MtTE41MUpHQiB3b3JrYXJvdW5kIChmb3IgZml4ZWQgc3BlYWtlciBEQUMpCisKK0FMQzg2MS82NjAKKz09PT09PT09PT0KKyAgTi9BCisKK0FMQzg2MVZELzY2MFZECis9PT09PT09PT09PT09PQorICBOL0EKKworQ01JOTg4MAorPT09PT09PQorICBtaW5pbWFsCTMtamFjayBpbiBiYWNrCisgIG1pbl9mcAkzLWphY2sgaW4gYmFjaywgMi1qYWNrIGluIGZyb250CisgIGZ1bGwJCTYtamFjayBpbiBiYWNrLCAyLWphY2sgaW4gZnJvbnQKKyAgZnVsbF9kaWcJNi1qYWNrIGluIGJhY2ssIDItamFjayBpbiBmcm9udCwgU1BESUYgSS9PCisgIGFsbG91dAk1LWphY2sgaW4gYmFjaywgMi1qYWNrIGluIGZyb250LCBTUERJRiBvdXQKKyAgYXV0bwkJYXV0by1jb25maWcgcmVhZGluZyBCSU9TIChkZWZhdWx0KQorCitBRDE4ODIgLyBBRDE4ODJBCis9PT09PT09PT09PT09PT09CisgIDNzdGFjawkzLXN0YWNrIG1vZGUKKyAgM3N0YWNrLWF1dG9tdXRlIDMtc3RhY2sgd2l0aCBhdXRvbXV0ZSBmcm9udCBIUCAoZGVmYXVsdCkKKyAgNnN0YWNrCTYtc3RhY2sgbW9kZQorCitBRDE4ODRBIC8gQUQxODgzIC8gQUQxOTg0QSAvIEFEMTk4NEIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICBkZXNrdG9wCTMtc3RhY2sgZGVza3RvcCAoZGVmYXVsdCkKKyAgbGFwdG9wCWxhcHRvcCB3aXRoIEhQIGphY2sgc2Vuc2luZworICBtb2JpbGUJbW9iaWxlIGRldmljZXMgd2l0aCBIUCBqYWNrIHNlbnNpbmcKKyAgdGhpbmtwYWQJTGVub3ZvIFRoaW5rcGFkIFgzMDAKKyAgdG91Y2hzbWFydAlIUCBUb3VjaHNtYXJ0CisKK0FEMTg4NAorPT09PT09CisgIE4vQQorCitBRDE5ODEKKz09PT09PQorICBiYXNpYwkJMy1qYWNrIChkZWZhdWx0KQorICBocAkJSFAgbng2MzIwCisgIHRoaW5rcGFkCUxlbm92byBUaGlua3BhZCBUNjAvWDYwL1o2MAorICB0b3NoaWJhCVRvc2hpYmEgVTIwNQorCitBRDE5ODMKKz09PT09PQorICBOL0EKKworQUQxOTg0Cis9PT09PT0KKyAgYmFzaWMJCWRlZmF1bHQgY29uZmlndXJhdGlvbgorICB0aGlua3BhZAlMZW5vdm8gVGhpbmtwYWQgVDYxL1g2MQorICBkZWxsX2Rlc2t0b3AJRGVsbCBUMzQwMAorCitBRDE5ODZBCis9PT09PT09CisgIDNzdGFjawkzLXN0YWNrLCBzaGFyZWQgc3Vycm91bmRzCisgIGxhcHRvcAkyLWNoYW5uZWwgb25seSAoRlNDIFYyMDYwLCBTYW1zdW5nIE01MCkKKyAgbGFwdG9wLWltaWMJMi1jaGFubmVsIHdpdGggYnVpbHQtaW4gbWljCisgIGVhcGQJCVR1cm4gb24gRUFQRCBjb25zdGFudGx5CisKK0FEMTk4OC9BRDE5ODhCL0FEMTk4OUEvQUQxOTg5QgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIDZzdGFjawk2LWphY2sKKyAgNnN0YWNrLWRpZwlkaXR0byB3aXRoIFNQRElGCisgIDNzdGFjawkzLWphY2sKKyAgM3N0YWNrLWRpZwlkaXR0byB3aXRoIFNQRElGCisgIGxhcHRvcAkzLWphY2sgd2l0aCBocC1qYWNrIGF1dG9tdXRlCisgIGxhcHRvcC1kaWcJZGl0dG8gd2l0aCBTUERJRgorICBhdXRvCQlhdXRvLWNvbmZpZyByZWFkaW5nIEJJT1MgKGRlZmF1bHQpCisKK0NvbmV4YW50IDUwNDUKKz09PT09PT09PT09PT0KKyAgbGFwdG9wLWhwc2Vuc2UgICAgTGFwdG9wIHdpdGggSFAgc2Vuc2UgKG9sZCBtb2RlbCBsYXB0b3ApCisgIGxhcHRvcC1taWNzZW5zZSAgIExhcHRvcCB3aXRoIE1pYyBzZW5zZSAob2xkIG1vZGVsIGZ1aml0c3UpCisgIGxhcHRvcC1ocG1pY3NlbnNlIExhcHRvcCB3aXRoIEhQIGFuZCBNaWMgc2Vuc2VzCisgIGJlbnEJCUJlbnEgUjU1RQorICBsYXB0b3AtaHA1MzAJSFAgNTMwIGxhcHRvcAorICB0ZXN0CQlmb3IgdGVzdGluZy9kZWJ1Z2dpbmcgcHVycG9zZSwgYWxtb3N0IGFsbCBjb250cm9scworCQljYW4gYmUgYWRqdXN0ZWQuICBBcHBlYXJpbmcgb25seSB3aGVuIGNvbXBpbGVkIHdpdGgKKwkJJENPTkZJR19TTkRfREVCVUc9eQorCitDb25leGFudCA1MDQ3Cis9PT09PT09PT09PT09CisgIGxhcHRvcAlCYXNpYyBMYXB0b3AgY29uZmlnIAorICBsYXB0b3AtaHAJTGFwdG9wIGNvbmZpZyBmb3Igc29tZSBIUCBtb2RlbHMgKHN1YmRldmljZSAzMEE1KQorICBsYXB0b3AtZWFwZAlMYXB0b3AgY29uZmlnIHdpdGggRUFQRCBzdXBwb3J0CisgIHRlc3QJCWZvciB0ZXN0aW5nL2RlYnVnZ2luZyBwdXJwb3NlLCBhbG1vc3QgYWxsIGNvbnRyb2xzCisJCWNhbiBiZSBhZGp1c3RlZC4gIEFwcGVhcmluZyBvbmx5IHdoZW4gY29tcGlsZWQgd2l0aAorCQkkQ09ORklHX1NORF9ERUJVRz15CisKK0NvbmV4YW50IDUwNTEKKz09PT09PT09PT09PT0KKyAgbGFwdG9wCUJhc2ljIExhcHRvcCBjb25maWcgKGRlZmF1bHQpCisgIGhwCQlIUCBTcGFydGFuIGxhcHRvcAorICBocC1kdjY3MzYJSFAgZHY2NzM2CisgIGhwLWY3MDAJSFAgQ29tcGFxIFByZXNhcmlvIEY3MDAKKyAgaWRlYXBhZAlMZW5vdm8gSWRlYVBhZCBsYXB0b3AKKyAgdG9zaGliYQlUb3NoaWJhIFNhdGVsbGl0ZSBNMzAwCisKK0NvbmV4YW50IDUwNjYKKz09PT09PT09PT09PT0KKyAgbGFwdG9wCUJhc2ljIExhcHRvcCBjb25maWcgKGRlZmF1bHQpCisgIGhwLWxhcHRvcAlIUCBsYXB0b3BzLCBlIGcgRzYwCisgIGFzdXMJCUFzdXMgSzUySlUsIExlbm92byBHNTYwCisgIGRlbGwtbGFwdG9wCURlbGwgbGFwdG9wcworICBkZWxsLXZvc3RybwlEZWxsIFZvc3RybworICBvbHBjLXhvLTFfNQlPTFBDIFhPIDEuNQorICBpZGVhcGFkICAgICAgIExlbm92byBJZGVhUGFkIFUxNTAKKyAgdGhpbmtwYWQJTGVub3ZvIFRoaW5rcGFkCisKK1NUQUM5MjAwCis9PT09PT09PQorICByZWYJCVJlZmVyZW5jZSBib2FyZAorICBvcW8JCU9RTyBNb2RlbCAyCisgIGRlbGwtZDIxCURlbGwgKHVua25vd24pCisgIGRlbGwtZDIyCURlbGwgKHVua25vd24pCisgIGRlbGwtZDIzCURlbGwgKHVua25vd24pCisgIGRlbGwtbTIxCURlbGwgSW5zcGlyb24gNjMwbSwgRGVsbCBJbnNwaXJvbiA2NDBtCisgIGRlbGwtbTIyCURlbGwgTGF0aXR1ZGUgRDYyMCwgRGVsbCBMYXRpdHVkZSBEODIwCisgIGRlbGwtbTIzCURlbGwgWFBTIE0xNzEwLCBEZWxsIFByZWNpc2lvbiBNOTAKKyAgZGVsbC1tMjQJRGVsbCBMYXRpdHVkZSAxMjBMCisgIGRlbGwtbTI1CURlbGwgSW5zcGlyb24gRTE1MDVuCisgIGRlbGwtbTI2CURlbGwgSW5zcGlyb24gMTUwMQorICBkZWxsLW0yNwlEZWxsIEluc3Bpcm9uIEUxNzA1Lzk0MDAKKyAgZ2F0ZXdheS1tNAlHYXRld2F5IGxhcHRvcHMgd2l0aCBFQVBEIGNvbnRyb2wKKyAgZ2F0ZXdheS1tNC0yCUdhdGV3YXkgbGFwdG9wcyB3aXRoIEVBUEQgY29udHJvbAorICBwYW5hc29uaWMJUGFuYXNvbmljIENGLTc0CisgIGF1dG8JCUJJT1Mgc2V0dXAgKGRlZmF1bHQpCisKK1NUQUM5MjA1LzkyNTQKKz09PT09PT09PT09PT0KKyAgcmVmCQlSZWZlcmVuY2UgYm9hcmQKKyAgZGVsbC1tNDIJRGVsbCAodW5rbm93bikKKyAgZGVsbC1tNDMJRGVsbCBQcmVjaXNpb24KKyAgZGVsbC1tNDQJRGVsbCBJbnNwaXJvbgorICBlYXBkCQlLZWVwIEVBUEQgb24gKGUuZy4gR2F0ZXdheSBUMTYxNikKKyAgYXV0bwkJQklPUyBzZXR1cCAoZGVmYXVsdCkKKworU1RBQzkyMjAvOTIyMQorPT09PT09PT09PT09PQorICByZWYJCVJlZmVyZW5jZSBib2FyZAorICAzc3RhY2sJRDk0NSAzc3RhY2sKKyAgNXN0YWNrCUQ5NDUgNXN0YWNrICsgU1BESUYKKyAgaW50ZWwtbWFjLXYxCUludGVsIE1hYyBUeXBlIDEKKyAgaW50ZWwtbWFjLXYyCUludGVsIE1hYyBUeXBlIDIKKyAgaW50ZWwtbWFjLXYzCUludGVsIE1hYyBUeXBlIDMKKyAgaW50ZWwtbWFjLXY0CUludGVsIE1hYyBUeXBlIDQKKyAgaW50ZWwtbWFjLXY1CUludGVsIE1hYyBUeXBlIDUKKyAgaW50ZWwtbWFjLWF1dG8gSW50ZWwgTWFjIChkZXRlY3QgdHlwZSBhY2NvcmRpbmcgdG8gc3Vic3lzdGVtIGlkKQorICBtYWNtaW5pCUludGVsIE1hYyBNaW5pIChlcXVpdmFsZW50IHdpdGggdHlwZSAzKQorICBtYWNib29rCUludGVsIE1hYyBCb29rIChlcS4gdHlwZSA1KQorICBtYWNib29rLXByby12MSBJbnRlbCBNYWMgQm9vayBQcm8gMXN0IGdlbmVyYXRpb24gKGVxLiB0eXBlIDMpCisgIG1hY2Jvb2stcHJvCUludGVsIE1hYyBCb29rIFBybyAybmQgZ2VuZXJhdGlvbiAoZXEuIHR5cGUgMykKKyAgaW1hYy1pbnRlbAlJbnRlbCBpTWFjIChlcS4gdHlwZSAyKQorICBpbWFjLWludGVsLTIwCUludGVsIGlNYWMgKG5ld2VyIHZlcnNpb24pIChlcS4gdHlwZSAzKQorICBlY3MyMDIJRUNTL1BDIGNoaXBzCisgIGRlbGwtZDgxCURlbGwgKHVua25vd24pCisgIGRlbGwtZDgyCURlbGwgKHVua25vd24pCisgIGRlbGwtbTgxCURlbGwgKHVua25vd24pCisgIGRlbGwtbTgyCURlbGwgWFBTIE0xMjEwCisgIGF1dG8JCUJJT1Mgc2V0dXAgKGRlZmF1bHQpCisKK1NUQUM5MjAyLzkyNTAvOTI1MQorPT09PT09PT09PT09PT09PT09CisgIHJlZgkJUmVmZXJlbmNlIGJvYXJkLCBiYXNlIGNvbmZpZworICBtMQkJU29tZSBHYXRld2F5IE1YIHNlcmllcyBsYXB0b3BzIChOWDU2MFhMKQorICBtMS0yCQlTb21lIEdhdGV3YXkgTVggc2VyaWVzIGxhcHRvcHMgKE1YNjQ1MykKKyAgbTIJCVNvbWUgR2F0ZXdheSBNWCBzZXJpZXMgbGFwdG9wcyAoTTI1NSkKKyAgbTItMgkJU29tZSBHYXRld2F5IE1YIHNlcmllcyBsYXB0b3BzCisgIG0zCQlTb21lIEdhdGV3YXkgTVggc2VyaWVzIGxhcHRvcHMKKyAgbTUJCVNvbWUgR2F0ZXdheSBNWCBzZXJpZXMgbGFwdG9wcyAoTVA2OTU0KQorICBtNgkJU29tZSBHYXRld2F5IE5YIHNlcmllcyBsYXB0b3BzCisgIGF1dG8JCUJJT1Mgc2V0dXAgKGRlZmF1bHQpCisKK1NUQUM5MjI3LzkyMjgvOTIyOS85Mjd4Cis9PT09PT09PT09PT09PT09PT09PT09PQorICByZWYJCVJlZmVyZW5jZSBib2FyZAorICByZWYtbm8tamQJUmVmZXJlbmNlIGJvYXJkIHdpdGhvdXQgSFAvTWljIGphY2sgZGV0ZWN0aW9uCisgIDNzdGFjawlEOTY1IDNzdGFjaworICA1c3RhY2sJRDk2NSA1c3RhY2sgKyBTUERJRgorICA1c3RhY2stbm8tZnAJRDk2NSA1c3RhY2sgd2l0aG91dCBmcm9udCBwYW5lbAorICBkZWxsLTNzdGFjawlEZWxsIERpbWVuc2lvbiBFNTIwCisgIGRlbGwtYmlvcwlGaXhlcyB3aXRoIERlbGwgQklPUyBzZXR1cAorICBkZWxsLWJpb3MtYW1pYyBGaXhlcyB3aXRoIERlbGwgQklPUyBzZXR1cCBpbmNsdWRpbmcgYW5hbG9nIG1pYworICB2b2xrbm9iCUZpeGVzIHdpdGggdm9sdW1lLWtub2Igd2lkZ2V0IDB4MjQKKyAgYXV0bwkJQklPUyBzZXR1cCAoZGVmYXVsdCkKKworU1RBQzkySEQ3MUIqCis9PT09PT09PT09PT0KKyAgcmVmCQlSZWZlcmVuY2UgYm9hcmQKKyAgZGVsbC1tNC0xCURlbGwgZGVza3RvcHMKKyAgZGVsbC1tNC0yCURlbGwgZGVza3RvcHMKKyAgZGVsbC1tNC0zCURlbGwgZGVza3RvcHMKKyAgaHAtbTQJCUhQIG1pbmkgMTAwMAorICBocC1kdjUJSFAgZHYgc2VyaWVzCisgIGhwLWhkeAlIUCBIRFggc2VyaWVzCisgIGhwLWR2NC0xMjIybnIJSFAgZHY0LTEyMjJuciAod2l0aCBMRUQgc3VwcG9ydCkKKyAgYXV0bwkJQklPUyBzZXR1cCAoZGVmYXVsdCkKKworU1RBQzkySEQ3MyoKKz09PT09PT09PT09CisgIHJlZgkJUmVmZXJlbmNlIGJvYXJkCisgIG5vLWpkCQlCSU9TIHNldHVwIGJ1dCB3aXRob3V0IGphY2stZGV0ZWN0aW9uCisgIGludGVsCQlJbnRlbCBERzQ1KiBtb2JvcworICBkZWxsLW02LWFtaWMJRGVsbCBkZXNrdG9wcy9sYXB0b3BzIHdpdGggYW5hbG9nIG1pY3MKKyAgZGVsbC1tNi1kbWljCURlbGwgZGVza3RvcHMvbGFwdG9wcyB3aXRoIGRpZ2l0YWwgbWljcworICBkZWxsLW02CURlbGwgZGVza3RvcHMvbGFwdG9wcyB3aXRoIGJvdGggdHlwZSBvZiBtaWNzCisgIGRlbGwtZXEJRGVsbCBkZXNrdG9wcy9sYXB0b3BzCisgIGFsaWVud2FyZQlBbGllbndhcmUgTTE3eAorICBhdXRvCQlCSU9TIHNldHVwIChkZWZhdWx0KQorCitTVEFDOTJIRDgzKgorPT09PT09PT09PT0KKyAgcmVmCQlSZWZlcmVuY2UgYm9hcmQKKyAgbWljLXJlZglSZWZlcmVuY2UgYm9hcmQgd2l0aCBwb3dlciBtYW5hZ2VtZW50IGZvciBwb3J0cworICBkZWxsLXMxNAlEZWxsIGxhcHRvcAorICBkZWxsLXZvc3Ryby0zNTAwCURlbGwgVm9zdHJvIDM1MDAgbGFwdG9wCisgIGhwLWR2Ny00MDAwCUhQIGR2LTcgNDAwMAorICBocF9jTkIxMV9pbnRxdWFkIEhQIENOQiBtb2RlbHMgd2l0aCA0IHNwZWFrZXJzCisgIGhwLXplcGh5cglIUCBaZXBoeXIKKyAgaHAtbGVkCUhQIHdpdGggYnJva2VuIEJJT1MgZm9yIG11dGUgTEVECisgIGhwLWludi1sZWQJSFAgd2l0aCBicm9rZW4gQklPUyBmb3IgaW52ZXJ0ZWQgbXV0ZSBMRUQKKyAgaHAtbWljLWxlZAlIUCB3aXRoIG1pYy1tdXRlIExFRAorICBoZWFkc2V0LWphY2sJRGVsbCBMYXRpdHVkZSB3aXRoIGEgNC1waW4gaGVhZHNldCBqYWNrCisgIGhwLWVudnktYmFzcwlQaW4gZml4dXAgZm9yIEhQIEVudnkgYmFzcyBzcGVha2VyIChOSUQgMHgwZikKKyAgaHAtZW52eS10cy1iYXNzIFBpbiBmaXh1cCBmb3IgSFAgRW52eSBUUyBiYXNzIHNwZWFrZXIgKE5JRCAweDEwKQorICBocC1ibmIxMy1lcQlIYXJkd2FyZSBlcXVhbGl6ZXIgc2V0dXAgZm9yIEhQIGxhcHRvcHMKKyAgYXV0bwkJQklPUyBzZXR1cCAoZGVmYXVsdCkKKworU1RBQzkySEQ5NQorPT09PT09PT09PQorICBocC1sZWQJTEVEIHN1cHBvcnQgZm9yIEhQIGxhcHRvcHMKKyAgaHAtYmFzcwlCYXNzIEhQRiBzZXR1cCBmb3IgSFAgU3BlY3RyZSAxMworCitTVEFDOTg3MgorPT09PT09PT0KKyAgdmFpbwkJVkFJTyBsYXB0b3Agd2l0aG91dCBTUERJRgorICBhdXRvCQlCSU9TIHNldHVwIChkZWZhdWx0KQorCitDaXJydXMgTG9naWMgQ1M0MjA2LzQyMDcKKz09PT09PT09PT09PT09PT09PT09PT09PQorICBtYnA1NQkJTWFjQm9vayBQcm8gNSw1CisgIGltYWMyNwlJTWFjIDI3IEluY2gKKyAgYXV0bwkJQklPUyBzZXR1cCAoZGVmYXVsdCkKKworQ2lycnVzIExvZ2ljIENTNDIwOAorPT09PT09PT09PT09PT09PT09PQorICBtYmE2CQlNYWNCb29rIEFpciA2LDEgYW5kIDYsMgorICBncGlvMAkJRW5hYmxlIEdQSU8gMCBhbXAKKyAgYXV0bwkJQklPUyBzZXR1cCAoZGVmYXVsdCkKKworVklBIFZUMTd4eC9WVDE4eHgvVlQyMHh4Cis9PT09PT09PT09PT09PT09PT09PT09PT0KKyAgYXV0bwkJQklPUyBzZXR1cCAoZGVmYXVsdCkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9IRC1BdWRpby50eHQgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvSEQtQXVkaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3MTkzYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvSEQtQXVkaW8udHh0CkBAIC0wLDAgKzEsODYzIEBACitNT1JFIE5PVEVTIE9OIEhELUFVRElPIERSSVZFUgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwkJCQkJVGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRlPgorCisKK0dFTkVSQUwKKy0tLS0tLS0KKworSEQtYXVkaW8gaXMgdGhlIG5ldyBzdGFuZGFyZCBvbi1ib2FyZCBhdWRpbyBjb21wb25lbnQgb24gbW9kZXJuIFBDcworYWZ0ZXIgQUM5Ny4gIEFsdGhvdWdoIExpbnV4IGhhcyBiZWVuIHN1cHBvcnRpbmcgSEQtYXVkaW8gc2luY2UgbG9uZwordGltZSBhZ28sIHRoZXJlIGFyZSBvZnRlbiBwcm9ibGVtcyB3aXRoIG5ldyBtYWNoaW5lcy4gIEEgcGFydCBvZiB0aGUKK3Byb2JsZW0gaXMgYnJva2VuIEJJT1MsIGFuZCB0aGUgcmVzdCBpcyB0aGUgZHJpdmVyIGltcGxlbWVudGF0aW9uLgorVGhpcyBkb2N1bWVudCBleHBsYWlucyB0aGUgYnJpZWYgdHJvdWJsZS1zaG9vdGluZyBhbmQgZGVidWdnaW5nCittZXRob2RzIGZvciB0aGUJSEQtYXVkaW8gaGFyZHdhcmUuCisKK1RoZSBIRC1hdWRpbyBjb21wb25lbnQgY29uc2lzdHMgb2YgdHdvIHBhcnRzOiB0aGUgY29udHJvbGxlciBjaGlwIGFuZCAKK3RoZSBjb2RlYyBjaGlwcyBvbiB0aGUgSEQtYXVkaW8gYnVzLiAgTGludXggcHJvdmlkZXMgYSBzaW5nbGUgZHJpdmVyCitmb3IgYWxsIGNvbnRyb2xsZXJzLCBzbmQtaGRhLWludGVsLiAgQWx0aG91Z2ggdGhlIGRyaXZlciBuYW1lIGNvbnRhaW5zCithIHdvcmQgb2YgYSB3ZWxsLWtub3duIGhhcmR3YXJlIHZlbmRvciwgaXQncyBub3Qgc3BlY2lmaWMgdG8gaXQgYnV0IGZvcgorYWxsIGNvbnRyb2xsZXIgY2hpcHMgYnkgb3RoZXIgY29tcGFuaWVzLiAgU2luY2UgdGhlIEhELWF1ZGlvCitjb250cm9sbGVycyBhcmUgc3VwcG9zZWQgdG8gYmUgY29tcGF0aWJsZSwgdGhlIHNpbmdsZSBzbmQtaGRhLWRyaXZlcgorc2hvdWxkIHdvcmsgaW4gbW9zdCBjYXNlcy4gIEJ1dCwgbm90IHN1cnByaXNpbmdseSwgdGhlcmUgYXJlIGtub3duCitidWdzIGFuZCBpc3N1ZXMgc3BlY2lmaWMgdG8gZWFjaCBjb250cm9sbGVyIHR5cGUuICBUaGUgc25kLWhkYS1pbnRlbAorZHJpdmVyIGhhcyBhIGJ1bmNoIG9mIHdvcmthcm91bmRzIGZvciB0aGVzZSBhcyBkZXNjcmliZWQgYmVsb3cuCisKK0EgY29udHJvbGxlciBtYXkgaGF2ZSBtdWx0aXBsZSBjb2RlY3MuICBVc3VhbGx5IHlvdSBoYXZlIG9uZSBhdWRpbworY29kZWMgYW5kIG9wdGlvbmFsbHkgb25lIG1vZGVtIGNvZGVjLiAgSW4gdGhlb3J5LCB0aGVyZSBtaWdodCBiZQorbXVsdGlwbGUgYXVkaW8gY29kZWNzLCBlLmcuIGZvciBhbmFsb2cgYW5kIGRpZ2l0YWwgb3V0cHV0cywgYW5kIHRoZQorZHJpdmVyIG1pZ2h0IG5vdCB3b3JrIHByb3Blcmx5IGJlY2F1c2Ugb2YgY29uZmxpY3Qgb2YgbWl4ZXIgZWxlbWVudHMuCitUaGlzIHNob3VsZCBiZSBmaXhlZCBpbiBmdXR1cmUgaWYgc3VjaCBoYXJkd2FyZSByZWFsbHkgZXhpc3RzLgorCitUaGUgc25kLWhkYS1pbnRlbCBkcml2ZXIgaGFzIHNldmVyYWwgZGlmZmVyZW50IGNvZGVjIHBhcnNlcnMgZGVwZW5kaW5nCitvbiB0aGUgY29kZWMuICBJdCBoYXMgYSBnZW5lcmljIHBhcnNlciBhcyBhIGZhbGxiYWNrLCBidXQgdGhpcworZnVuY3Rpb25hbGl0eSBpcyBmYWlybHkgbGltaXRlZCB1bnRpbCBub3cuICBJbnN0ZWFkIG9mIHRoZSBnZW5lcmljCitwYXJzZXIsIHVzdWFsbHkgdGhlIGNvZGVjLXNwZWNpZmljIHBhcnNlciAoY29kZWQgaW4gcGF0Y2hfKi5jKSBpcyB1c2VkCitmb3IgdGhlIGNvZGVjLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4gIFRoZSBkZXRhaWxzIGFib3V0IHRoZQorY29kZWMtc3BlY2lmaWMgcHJvYmxlbXMgYXJlIGV4cGxhaW5lZCBpbiB0aGUgbGF0ZXIgc2VjdGlvbnMuCisKK0lmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiB0aGUgZGVlcCBkZWJ1Z2dpbmcgb2YgSEQtYXVkaW8sIHJlYWQgdGhlCitIRC1hdWRpbyBzcGVjaWZpY2F0aW9uIGF0IGZpcnN0LiAgVGhlIHNwZWNpZmljYXRpb24gaXMgZm91bmQgb24KK0ludGVsJ3Mgd2ViIHBhZ2UsIGZvciBleGFtcGxlOgorCistIGh0dHA6Ly93d3cuaW50ZWwuY29tL3N0YW5kYXJkcy9oZGF1ZGlvLworCisKK0hELUFVRElPIENPTlRST0xMRVIKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworRE1BLVBvc2l0aW9uIFByb2JsZW0KK35+fn5+fn5+fn5+fn5+fn5+fn5+CitUaGUgbW9zdCBjb21tb24gcHJvYmxlbSBvZiB0aGUgY29udHJvbGxlciBpcyB0aGUgaW5hY2N1cmF0ZSBETUEKK3BvaW50ZXIgcmVwb3J0aW5nLiAgVGhlIERNQSBwb2ludGVyIGZvciBwbGF5YmFjayBhbmQgY2FwdHVyZSBjYW4gYmUKK3JlYWQgaW4gdHdvIHdheXMsIGVpdGhlciB2aWEgYSBMUElCIHJlZ2lzdGVyIG9yIHZpYSBhIHBvc2l0aW9uLWJ1ZmZlcgorbWFwLiAgQXMgZGVmYXVsdCB0aGUgZHJpdmVyIHRyaWVzIHRvIHJlYWQgZnJvbSB0aGUgaW8tbWFwcGVkCitwb3NpdGlvbi1idWZmZXIsIGFuZCBmYWxscyBiYWNrIHRvIExQSUIgaWYgdGhlIHBvc2l0aW9uLWJ1ZmZlciBhcHBlYXJzCitkZWFkLiAgSG93ZXZlciwgdGhpcyBkZXRlY3Rpb24gaXNuJ3QgcGVyZmVjdCBvbiBzb21lIGRldmljZXMuICBJbiBzdWNoCithIGNhc2UsIHlvdSBjYW4gY2hhbmdlIHRoZSBkZWZhdWx0IG1ldGhvZCB2aWEgYHBvc2l0aW9uX2ZpeGAgb3B0aW9uLgorCitgcG9zaXRpb25fZml4PTFgIG1lYW5zIHRvIHVzZSBMUElCIG1ldGhvZCBleHBsaWNpdGx5LgorYHBvc2l0aW9uX2ZpeD0yYCBtZWFucyB0byB1c2UgdGhlIHBvc2l0aW9uLWJ1ZmZlci4KK2Bwb3NpdGlvbl9maXg9M2AgbWVhbnMgdG8gdXNlIGEgY29tYmluYXRpb24gb2YgYm90aCBtZXRob2RzLCBuZWVkZWQKK2ZvciBzb21lIFZJQSBjb250cm9sbGVycy4gIFRoZSBjYXB0dXJlIHN0cmVhbSBwb3NpdGlvbiBpcyBjb3JyZWN0ZWQKK2J5IGNvbXBhcmluZyBib3RoIExQSUIgYW5kIHBvc2l0aW9uLWJ1ZmZlciB2YWx1ZXMuCitgcG9zaXRpb25fZml4PTRgIGlzIGFub3RoZXIgY29tYmluYXRpb24gYXZhaWxhYmxlIGZvciBhbGwgY29udHJvbGxlcnMsCithbmQgdXNlcyBMUElCIGZvciB0aGUgcGxheWJhY2sgYW5kIHRoZSBwb3NpdGlvbi1idWZmZXIgZm9yIHRoZSBjYXB0dXJlCitzdHJlYW1zLgorMCBpcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgYWxsIG90aGVyCitjb250cm9sbGVycywgdGhlIGF1dG9tYXRpYyBjaGVjayBhbmQgZmFsbGJhY2sgdG8gTFBJQiBhcyBkZXNjcmliZWQgaW4KK3RoZSBhYm92ZS4gIElmIHlvdSBnZXQgYSBwcm9ibGVtIG9mIHJlcGVhdGVkIHNvdW5kcywgdGhpcyBvcHRpb24gbWlnaHQKK2hlbHAuCisKK0luIGFkZGl0aW9uIHRvIHRoYXQsIGV2ZXJ5IGNvbnRyb2xsZXIgaXMga25vd24gdG8gYmUgYnJva2VuIHJlZ2FyZGluZwordGhlIHdha2UtdXAgdGltaW5nLiAgSXQgd2FrZXMgdXAgYSBmZXcgc2FtcGxlcyBiZWZvcmUgYWN0dWFsbHkKK3Byb2Nlc3NpbmcgdGhlIGRhdGEgb24gdGhlIGJ1ZmZlci4gIFRoaXMgY2F1c2VkIGEgbG90IG9mIHByb2JsZW1zLCBmb3IKK2V4YW1wbGUsIHdpdGggQUxTQSBkbWl4IG9yIEpBQ0suICBTaW5jZSAyLjYuMjcga2VybmVsLCB0aGUgZHJpdmVyIHB1dHMKK2FuIGFydGlmaWNpYWwgZGVsYXkgdG8gdGhlIHdha2UgdXAgdGltaW5nLiAgVGhpcyBkZWxheSBpcyBjb250cm9sbGVkCit2aWEgYGJkbF9wb3NfYWRqYCBvcHRpb24uIAorCitXaGVuIGBiZGxfcG9zX2FkamAgaXMgYSBuZWdhdGl2ZSB2YWx1ZSAoYXMgZGVmYXVsdCksIGl0J3MgYXNzaWduZWQgdG8KK2FuIGFwcHJvcHJpYXRlIHZhbHVlIGRlcGVuZGluZyBvbiB0aGUgY29udHJvbGxlciBjaGlwLiAgRm9yIEludGVsCitjaGlwcywgaXQnZCBiZSAxIHdoaWxlIGl0J2QgYmUgMzIgZm9yIG90aGVycy4gIFVzdWFsbHkgdGhpcyB3b3Jrcy4KK09ubHkgaW4gY2FzZSBpdCBkb2Vzbid0IHdvcmsgYW5kIHlvdSBnZXQgd2FybmluZyBtZXNzYWdlcywgeW91IHNob3VsZAorY2hhbmdlIHRoaXMgcGFyYW1ldGVyIHRvIG90aGVyIHZhbHVlcy4KKworCitDb2RlYy1Qcm9iaW5nIFByb2JsZW0KK35+fn5+fn5+fn5+fn5+fn5+fn5+fgorQSBsZXNzIG9mdGVuIGJ1dCBhIG1vcmUgc2V2ZXJlIHByb2JsZW0gaXMgdGhlIGNvZGVjIHByb2JpbmcuICBXaGVuCitCSU9TIHJlcG9ydHMgdGhlIGF2YWlsYWJsZSBjb2RlYyBzbG90cyB3cm9uZ2x5LCB0aGUgZHJpdmVyIGdldHMKK2NvbmZ1c2VkIGFuZCB0cmllcyB0byBhY2Nlc3MgdGhlIG5vbi1leGlzdGluZyBjb2RlYyBzbG90LiAgVGhpcyBvZnRlbgorcmVzdWx0cyBpbiB0aGUgdG90YWwgc2NyZXctdXAsIGFuZCBkZXN0cnVjdHMgdGhlIGZ1cnRoZXIgY29tbXVuaWNhdGlvbgord2l0aCB0aGUgY29kZWMgY2hpcHMuICBUaGUgc3ltcHRvbSBhcHBlYXJzIHVzdWFsbHkgYXMgZXJyb3IgbWVzc2FnZXMKK2xpa2U6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgaGRhX2ludGVsOiBhenhfZ2V0X3Jlc3BvbnNlIHRpbWVvdXQsIHN3aXRjaGluZyB0byBwb2xsaW5nIG1vZGU6CisgICAgICAgIGxhc3QgY21kPTB4MTIzNDU2NzgKKyAgaGRhX2ludGVsOiBhenhfZ2V0X3Jlc3BvbnNlIHRpbWVvdXQsIHN3aXRjaGluZyB0byBzaW5nbGVfY21kIG1vZGU6CisgICAgICAgIGxhc3QgY21kPTB4MTIzNDU2NzgKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZmlyc3QgbGluZSBpcyBhIHdhcm5pbmcsIGFuZCB0aGlzIGlzIHVzdWFsbHkgcmVsYXRpdmVseSBoYXJtbGVzcy4KK0l0IG1lYW5zIHRoYXQgdGhlIGNvZGVjIHJlc3BvbnNlIGlzbid0IG5vdGlmaWVkIHZpYSBhbiBJUlEuICBUaGUKK2RyaXZlciB1c2VzIGV4cGxpY2l0IHBvbGxpbmcgbWV0aG9kIHRvIHJlYWQgdGhlIHJlc3BvbnNlLiAgSXQgZ2l2ZXMKK3Zlcnkgc2xpZ2h0IENQVSBvdmVyaGVhZCwgYnV0IHlvdSdkIHVubGlrZWx5IG5vdGljZSBpdC4KKworVGhlIHNlY29uZCBsaW5lIGlzLCBob3dldmVyLCBhIGZhdGFsIGVycm9yLiAgSWYgdGhpcyBoYXBwZW5zLCB1c3VhbGx5CitpdCBtZWFucyB0aGF0IHNvbWV0aGluZyBpcyByZWFsbHkgd3JvbmcuICBNb3N0IGxpa2VseSB5b3UgYXJlCithY2Nlc3NpbmcgYSBub24tZXhpc3RpbmcgY29kZWMgc2xvdC4KKworVGh1cywgaWYgdGhlIHNlY29uZCBlcnJvciBtZXNzYWdlIGFwcGVhcnMsIHRyeSB0byBuYXJyb3cgdGhlIHByb2JlZAorY29kZWMgc2xvdHMgdmlhIGBwcm9iZV9tYXNrYCBvcHRpb24uICBJdCdzIGEgYml0bWFzaywgYW5kIGVhY2ggYml0Citjb3JyZXNwb25kcyB0byB0aGUgY29kZWMgc2xvdC4gIEZvciBleGFtcGxlLCB0byBwcm9iZSBvbmx5IHRoZSBmaXJzdAorc2xvdCwgcGFzcyBgcHJvYmVfbWFzaz0xYC4gIEZvciB0aGUgZmlyc3QgYW5kIHRoZSB0aGlyZCBzbG90cywgcGFzcworYHByb2JlX21hc2s9NWAgKHdoZXJlIDUgPSAxIHwgNCksIGFuZCBzbyBvbi4KKworU2luY2UgMi42LjI5IGtlcm5lbCwgdGhlIGRyaXZlciBoYXMgYSBtb3JlIHJvYnVzdCBwcm9iaW5nIG1ldGhvZCwgc28KK3RoaXMgZXJyb3IgbWlnaHQgaGFwcGVuIHJhcmVseSwgdGhvdWdoLgorCitPbiBhIG1hY2hpbmUgd2l0aCBhIGJyb2tlbiBCSU9TLCBzb21ldGltZXMgeW91IG5lZWQgdG8gZm9yY2UgdGhlCitkcml2ZXIgdG8gcHJvYmUgdGhlIGNvZGVjIHNsb3RzIHRoZSBoYXJkd2FyZSBkb2Vzbid0IHJlcG9ydCBmb3IgdXNlLgorSW4gc3VjaCBhIGNhc2UsIHR1cm4gdGhlIGJpdCA4ICgweDEwMCkgb2YgYHByb2JlX21hc2tgIG9wdGlvbiBvbi4KK1RoZW4gdGhlIHJlc3QgOCBiaXRzIGFyZSBwYXNzZWQgYXMgdGhlIGNvZGVjIHNsb3RzIHRvIHByb2JlCit1bmNvbmRpdGlvbmFsbHkuICBGb3IgZXhhbXBsZSwgYHByb2JlX21hc2s9MHgxMDNgIHdpbGwgZm9yY2UgdG8gcHJvYmUKK3RoZSBjb2RlYyBzbG90cyAwIGFuZCAxIG5vIG1hdHRlciB3aGF0IHRoZSBoYXJkd2FyZSByZXBvcnRzLgorCisKK0ludGVycnVwdCBIYW5kbGluZworfn5+fn5+fn5+fn5+fn5+fn5+CitIRC1hdWRpbyBkcml2ZXIgdXNlcyBNU0kgYXMgZGVmYXVsdCAoaWYgYXZhaWxhYmxlKSBzaW5jZSAyLjYuMzMKK2tlcm5lbCBhcyBNU0kgd29ya3MgYmV0dGVyIG9uIHNvbWUgbWFjaGluZXMsIGFuZCBpbiBnZW5lcmFsLCBpdCdzCitiZXR0ZXIgZm9yIHBlcmZvcm1hbmNlLiAgSG93ZXZlciwgTnZpZGlhIGNvbnRyb2xsZXJzIHNob3dlZCBiYWQKK3JlZ3Jlc3Npb25zIHdpdGggTVNJIChlc3BlY2lhbGx5IGluIGEgY29tYmluYXRpb24gd2l0aCBBTUQgY2hpcHNldCksCit0aHVzIHdlIGRpc2FibGVkIE1TSSBmb3IgdGhlbS4KKworVGhlcmUgc2VlbSBhbHNvIHN0aWxsIG90aGVyIGRldmljZXMgdGhhdCBkb24ndCB3b3JrIHdpdGggTVNJLiAgSWYgeW91CitzZWUgYSByZWdyZXNzaW9uIHdydCB0aGUgc291bmQgcXVhbGl0eSAoc3R1dHRlcmluZywgZXRjKSBvciBhIGxvY2stdXAKK2luIHRoZSByZWNlbnQga2VybmVsLCB0cnkgdG8gcGFzcyBgZW5hYmxlX21zaT0wYCBvcHRpb24gdG8gZGlzYWJsZQorTVNJLiAgSWYgaXQgd29ya3MsIHlvdSBjYW4gYWRkIHRoZSBrbm93biBiYWQgZGV2aWNlIHRvIHRoZSBibGFja2xpc3QKK2RlZmluZWQgaW4gaGRhX2ludGVsLmMuICBJbiBzdWNoIGEgY2FzZSwgcGxlYXNlIHJlcG9ydCBhbmQgZ2l2ZSB0aGUKK3BhdGNoIGJhY2sgdG8gdGhlIHVwc3RyZWFtIGRldmVsb3Blci4gCisKKworSEQtQVVESU8gQ09ERUMKKy0tLS0tLS0tLS0tLS0tCisKK01vZGVsIE9wdGlvbgorfn5+fn5+fn5+fn5+CitUaGUgbW9zdCBjb21tb24gcHJvYmxlbSByZWdhcmRpbmcgdGhlIEhELWF1ZGlvIGRyaXZlciBpcyB0aGUKK3Vuc3VwcG9ydGVkIGNvZGVjIGZlYXR1cmVzIG9yIHRoZSBtaXNtYXRjaGVkIGRldmljZSBjb25maWd1cmF0aW9uLgorTW9zdCBvZiBjb2RlYy1zcGVjaWZpYyBjb2RlIGhhcyBzZXZlcmFsIHByZXNldCBtb2RlbHMsIGVpdGhlciB0bworb3ZlcnJpZGUgdGhlIEJJT1Mgc2V0dXAgb3IgdG8gcHJvdmlkZSBtb3JlIGNvbXByZWhlbnNpdmUgZmVhdHVyZXMuCisKK1RoZSBkcml2ZXIgY2hlY2tzIFBDSSBTU0lEIGFuZCBsb29rcyB0aHJvdWdoIHRoZSBzdGF0aWMgY29uZmlndXJhdGlvbgordGFibGUgdW50aWwgYW55IG1hdGNoaW5nIGVudHJ5IGlzIGZvdW5kLiAgSWYgeW91IGhhdmUgYSBuZXcgbWFjaGluZSwKK3lvdSBtYXkgc2VlIGEgbWVzc2FnZSBsaWtlIGJlbG93OgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgaGRhX2NvZGVjOiBBTEM4ODA6IEJJT1MgYXV0by1wcm9iaW5nLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitNZWFud2hpbGUsIGluIHRoZSBlYXJsaWVyIHZlcnNpb25zLCB5b3Ugd291bGQgc2VlIGEgbWVzc2FnZSBsaWtlOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgaGRhX2NvZGVjOiBVbmtub3duIG1vZGVsIGZvciBBTEM4ODAsIHRyeWluZyBhdXRvLXByb2JlIGZyb20gQklPUy4uLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitFdmVuIGlmIHlvdSBzZWUgc3VjaCBhIG1lc3NhZ2UsIERPTidUIFBBTklDLiAgVGFrZSBhIGRlZXAgYnJlYXRoIGFuZAora2VlcCB5b3VyIHRvd2VsLiAgRmlyc3Qgb2YgYWxsLCBpdCdzIGFuIGluZm9ybWF0aW9uYWwgbWVzc2FnZSwgbm8KK3dhcm5pbmcsIG5vIGVycm9yLiAgVGhpcyBtZWFucyB0aGF0IHRoZSBQQ0kgU1NJRCBvZiB5b3VyIGRldmljZSBpc24ndAorbGlzdGVkIGluIHRoZSBrbm93biBwcmVzZXQgbW9kZWwgKHdoaXRlLSlsaXN0LiAgQnV0LCB0aGlzIGRvZXNuJ3QgbWVhbgordGhhdCB0aGUgZHJpdmVyIGlzIGJyb2tlbi4gIE1hbnkgY29kZWMtZHJpdmVycyBwcm92aWRlIHRoZSBhdXRvbWF0aWMKK2NvbmZpZ3VyYXRpb24gbWVjaGFuaXNtIGJhc2VkIG9uIHRoZSBCSU9TIHNldHVwLgorCitUaGUgSEQtYXVkaW8gY29kZWMgaGFzIHVzdWFsbHkgInBpbiIgd2lkZ2V0cywgYW5kIEJJT1Mgc2V0cyB0aGUgZGVmYXVsdAorY29uZmlndXJhdGlvbiBvZiBlYWNoIHBpbiwgd2hpY2ggaW5kaWNhdGVzIHRoZSBsb2NhdGlvbiwgdGhlCitjb25uZWN0aW9uIHR5cGUsIHRoZSBqYWNrIGNvbG9yLCBldGMuICBUaGUgSEQtYXVkaW8gZHJpdmVyIGNhbiBndWVzcwordGhlIHJpZ2h0IGNvbm5lY3Rpb24ganVkZ2luZyBmcm9tIHRoZXNlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB2YWx1ZXMuCitIb3dldmVyIC0tIHNvbWUgY29kZWMtc3VwcG9ydCBjb2Rlcywgc3VjaCBhcyBwYXRjaF9hbmFsb2cuYywgZG9uJ3QKK3N1cHBvcnQgdGhlIGF1dG9tYXRpYyBwcm9iaW5nICh5ZXQgYXMgb2YgMi42LjI4KS4gIEFuZCwgQklPUyBpcyBvZnRlbiwKK3llcywgcHJldHR5IG9mdGVuIGJyb2tlbi4gIEl0IHNldHMgdXAgd3JvbmcgdmFsdWVzIGFuZCBzY3Jld3MgdXAgdGhlCitkcml2ZXIuCisKK1RoZSBwcmVzZXQgbW9kZWwgKG9yIHJlY2VudGx5IGNhbGxlZCBhcyAiZml4LXVwIikgaXMgcHJvdmlkZWQKK2Jhc2ljYWxseSB0byBvdmVyY29tZSBzdWNoIGEgc2l0dWF0aW9uLiAgV2hlbiB0aGUgbWF0Y2hpbmcgcHJlc2V0Cittb2RlbCBpcyBmb3VuZCBpbiB0aGUgd2hpdGUtbGlzdCwgdGhlIGRyaXZlciBhc3N1bWVzIHRoZSBzdGF0aWMKK2NvbmZpZ3VyYXRpb24gb2YgdGhhdCBwcmVzZXQgd2l0aCB0aGUgY29ycmVjdCBwaW4gc2V0dXAsIGV0Yy4KK1RodXMsIGlmIHlvdSBoYXZlIGEgbmV3ZXIgbWFjaGluZSB3aXRoIGEgc2xpZ2h0bHkgZGlmZmVyZW50IFBDSSBTU0lECisob3IgY29kZWMgU1NJRCkgZnJvbSB0aGUgZXhpc3Rpbmcgb25lLCB5b3UgbWF5IGhhdmUgYSBnb29kIGNoYW5jZSB0bworcmUtdXNlIHRoZSBzYW1lIG1vZGVsLiAgWW91IGNhbiBwYXNzIHRoZSBgbW9kZWxgIG9wdGlvbiB0byBzcGVjaWZ5IHRoZQorcHJlc2V0IG1vZGVsIGluc3RlYWQgb2YgUENJIChhbmQgY29kZWMtKSBTU0lEIGxvb2stdXAuCisKK1doYXQgYG1vZGVsYCBvcHRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgZGVwZW5kcyBvbiB0aGUgY29kZWMgY2hpcC4KK0NoZWNrIHlvdXIgY29kZWMgY2hpcCBmcm9tIHRoZSBjb2RlYyBwcm9jIGZpbGUgKHNlZSAiQ29kZWMgUHJvYy1GaWxlIgorc2VjdGlvbiBiZWxvdykuICBJdCB3aWxsIHNob3cgdGhlIHZlbmRvci9wcm9kdWN0IG5hbWUgb2YgeW91ciBjb2RlYworY2hpcC4gIFRoZW4sIHNlZSBEb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvSEQtQXVkaW8tTW9kZWxzLnR4dCBmaWxlLAordGhlIHNlY3Rpb24gb2YgSEQtYXVkaW8gZHJpdmVyLiAgWW91IGNhbiBmaW5kIGEgbGlzdCBvZiBjb2RlY3MKK2FuZCBgbW9kZWxgIG9wdGlvbnMgYmVsb25naW5nIHRvIGVhY2ggY29kZWMuICBGb3IgZXhhbXBsZSwgZm9yIFJlYWx0ZWsKK0FMQzI2MiBjb2RlYyBjaGlwLCBwYXNzIGBtb2RlbD11bHRyYWAgZm9yIGRldmljZXMgdGhhdCBhcmUgY29tcGF0aWJsZQord2l0aCBTYW1zdW5nIFExIFVsdHJhLgorCitUaHVzLCB0aGUgZmlyc3QgdGhpbmcgeW91IGNhbiBkbyBmb3IgYW55IGJyYW5kLW5ldywgdW5zdXBwb3J0ZWQgYW5kCitub24td29ya2luZyBIRC1hdWRpbyBoYXJkd2FyZSBpcyB0byBjaGVjayBIRC1hdWRpbyBjb2RlYyBhbmQgc2V2ZXJhbAorZGlmZmVyZW50IGBtb2RlbGAgb3B0aW9uIHZhbHVlcy4gIElmIHlvdSBoYXZlIGFueSBsdWNrLCBzb21lIG9mIHRoZW0KK21pZ2h0IHN1aXQgd2l0aCB5b3VyIGRldmljZSB3ZWxsLgorCitUaGVyZSBhcmUgYSBmZXcgc3BlY2lhbCBtb2RlbCBvcHRpb24gdmFsdWVzOgorLSB3aGVuICdub2ZpeHVwJyBpcyBwYXNzZWQsIHRoZSBkZXZpY2Utc3BlY2lmaWMgZml4dXBzIGluIHRoZSBjb2RlYworICBwYXJzZXIgYXJlIHNraXBwZWQuCistIHdoZW4gYGdlbmVyaWNgIGlzIHBhc3NlZCwgdGhlIGNvZGVjLXNwZWNpZmljIHBhcnNlciBpcyBza2lwcGVkIGFuZAorICBvbmx5IHRoZSBnZW5lcmljIHBhcnNlciBpcyB1c2VkLgorCisKK1NwZWFrZXIgYW5kIEhlYWRwaG9uZSBPdXRwdXQKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK09uZSBvZiB0aGUgbW9zdCBmcmVxdWVudCAoYW5kIG9idmlvdXMpIGJ1Z3Mgd2l0aCBIRC1hdWRpbyBpcyB0aGUKK3NpbGVudCBvdXRwdXQgZnJvbSBlaXRoZXIgb3IgYm90aCBvZiBhIGJ1aWx0LWluIHNwZWFrZXIgYW5kIGEKK2hlYWRwaG9uZSBqYWNrLiAgSW4gZ2VuZXJhbCwgeW91IHNob3VsZCB0cnkgYSBoZWFkcGhvbmUgb3V0cHV0IGF0CitmaXJzdC4gIEEgc3BlYWtlciBvdXRwdXQgb2Z0ZW4gcmVxdWlyZXMgbW9yZSBhZGRpdGlvbmFsIGNvbnRyb2xzIGxpa2UKK3RoZSBleHRlcm5hbCBhbXBsaWZpZXIgYml0cy4gIFRodXMgYSBoZWFkcGhvbmUgb3V0cHV0IGhhcyBhIHNsaWdodGx5CitiZXR0ZXIgY2hhbmNlLgorCitCZWZvcmUgbWFraW5nIGEgYnVnIHJlcG9ydCwgZG91YmxlLWNoZWNrIHdoZXRoZXIgdGhlIG1peGVyIGlzIHNldCB1cAorY29ycmVjdGx5LiAgVGhlIHJlY2VudCB2ZXJzaW9uIG9mIHNuZC1oZGEtaW50ZWwgZHJpdmVyIHByb3ZpZGVzIG1vc3RseQorIk1hc3RlciIgdm9sdW1lIGNvbnRyb2wgYXMgd2VsbCBhcyAiRnJvbnQiIHZvbHVtZSAod2hlcmUgRnJvbnQKK2luZGljYXRlcyB0aGUgZnJvbnQtY2hhbm5lbHMpLiAgSW4gYWRkaXRpb24sIHRoZXJlIGNhbiBiZSBpbmRpdmlkdWFsCisiSGVhZHBob25lIiBhbmQgIlNwZWFrZXIiIGNvbnRyb2xzLgorCitEaXR0byBmb3IgdGhlIHNwZWFrZXIgb3V0cHV0LiAgVGhlcmUgY2FuIGJlICJFeHRlcm5hbCBBbXBsaWZpZXIiCitzd2l0Y2ggb24gc29tZSBjb2RlY3MuICBUdXJuIG9uIHRoaXMgaWYgcHJlc2VudC4KKworQW5vdGhlciByZWxhdGVkIHByb2JsZW0gaXMgdGhlIGF1dG9tYXRpYyBtdXRlIG9mIHNwZWFrZXIgb3V0cHV0IGJ5CitoZWFkcGhvbmUgcGx1Z2dpbmcuICBUaGlzIGZlYXR1cmUgaXMgaW1wbGVtZW50ZWQgaW4gbW9zdCBjYXNlcywgYnV0Citub3Qgb24gZXZlcnkgcHJlc2V0IG1vZGVsIG9yIGNvZGVjLXN1cHBvcnQgY29kZS4KKworSW4gYW55d2F5LCB0cnkgYSBkaWZmZXJlbnQgbW9kZWwgb3B0aW9uIGlmIHlvdSBoYXZlIHN1Y2ggYSBwcm9ibGVtLgorU29tZSBvdGhlciBtb2RlbHMgbWF5IG1hdGNoIGJldHRlciBhbmQgZ2l2ZSB5b3UgbW9yZSBtYXRjaGluZworZnVuY3Rpb25hbGl0eS4gIElmIG5vbmUgb2YgdGhlIGF2YWlsYWJsZSBtb2RlbHMgd29ya3MsIHNlbmQgYSBidWcKK3JlcG9ydC4gIFNlZSB0aGUgYnVnIHJlcG9ydCBzZWN0aW9uIGZvciBkZXRhaWxzLgorCitJZiB5b3UgYXJlIG1hc29jaGlzdGljIGVub3VnaCB0byBkZWJ1ZyB0aGUgZHJpdmVyIHByb2JsZW0sIG5vdGUgdGhlCitmb2xsb3dpbmc6CisKKy0gVGhlIHNwZWFrZXIgKGFuZCB0aGUgaGVhZHBob25lLCB0b28pIG91dHB1dCBvZnRlbiByZXF1aXJlcyB0aGUKKyAgZXh0ZXJuYWwgYW1wbGlmaWVyLiAgVGhpcyBjYW4gYmUgc2V0IHVzdWFsbHkgdmlhIEVBUEQgdmVyYiBvciBhCisgIGNlcnRhaW4gR1BJTy4gIElmIHRoZSBjb2RlYyBwaW4gc3VwcG9ydHMgRUFQRCwgeW91IGhhdmUgYSBiZXR0ZXIKKyAgY2hhbmNlIHZpYSBTRVRfRUFQRF9CVEwgdmVyYiAoMHg3MGMpLiAgT24gb3RoZXJzLCBHUElPIHBpbiAobW9zdGx5CisgIGl0J3MgZWl0aGVyIEdQSU8wIG9yIEdQSU8xKSBtYXkgdHVybiBvbi9vZmYgRUFQRC4KKy0gU29tZSBSZWFsdGVrIGNvZGVjcyByZXF1aXJlIHNwZWNpYWwgdmVuZG9yLXNwZWNpZmljIGNvZWZmaWNpZW50cyB0bworICB0dXJuIG9uIHRoZSBhbXBsaWZpZXIuICBTZWUgcGF0Y2hfcmVhbHRlay5jLgorLSBJRFQgY29kZWNzIG1heSBoYXZlIGV4dHJhIHBvd2VyLWVuYWJsZS9kaXNhYmxlIGNvbnRyb2xzIG9uIGVhY2gKKyAgYW5hbG9nIHBpbi4gIFNlZSBwYXRjaF9zaWdtYXRlbC5jLgorLSBWZXJ5IHJhcmUgYnV0IHNvbWUgZGV2aWNlcyBkb24ndCBhY2NlcHQgdGhlIHBpbi1kZXRlY3Rpb24gdmVyYiB1bnRpbAorICB0cmlnZ2VyZWQuICBJc3N1aW5nIEdFVF9QSU5fU0VOU0UgdmVyYiAoMHhmMDkpIG1heSByZXN1bHQgaW4gdGhlCisgIGNvZGVjLWNvbW11bmljYXRpb24gc3RhbGwuICBTb21lIGV4YW1wbGVzIGFyZSBmb3VuZCBpbgorICBwYXRjaF9yZWFsdGVrLmMuCisKKworQ2FwdHVyZSBQcm9ibGVtcworfn5+fn5+fn5+fn5+fn5+fgorVGhlIGNhcHR1cmUgcHJvYmxlbXMgYXJlIG9mdGVuIGJlY2F1c2Ugb2YgbWlzc2luZyBzZXR1cHMgb2YgbWl4ZXJzLgorVGh1cywgYmVmb3JlIHN1Ym1pdHRpbmcgYSBidWcgcmVwb3J0LCBtYWtlIHN1cmUgdGhhdCB5b3Ugc2V0IHVwIHRoZQorbWl4ZXIgY29ycmVjdGx5LiAgRm9yIGV4YW1wbGUsIGJvdGggIkNhcHR1cmUgVm9sdW1lIiBhbmQgIkNhcHR1cmUKK1N3aXRjaCIgaGF2ZSB0byBiZSBzZXQgcHJvcGVybHkgaW4gYWRkaXRpb24gdG8gdGhlIHJpZ2h0ICJDYXB0dXJlCitTb3VyY2UiIG9yICJJbnB1dCBTb3VyY2UiIHNlbGVjdGlvbi4gIFNvbWUgZGV2aWNlcyBoYXZlICJNaWMgQm9vc3QiCit2b2x1bWUgb3Igc3dpdGNoLgorCitXaGVuIHRoZSBQQ00gZGV2aWNlIGlzIG9wZW5lZCB2aWEgImRlZmF1bHQiIFBDTSAod2l0aG91dCBwdWxzZS1hdWRpbworcGx1Z2luKSwgeW91J2xsIGxpa2VseSBoYXZlICJEaWdpdGFsIENhcHR1cmUgVm9sdW1lIiBjb250cm9sIGFzIHdlbGwuCitUaGlzIGlzIHByb3ZpZGVkIGZvciB0aGUgZXh0cmEgZ2Fpbi9hdHRlbnVhdGlvbiBvZiB0aGUgc2lnbmFsIGluCitzb2Z0d2FyZSwgZXNwZWNpYWxseSBmb3IgdGhlIGlucHV0cyB3aXRob3V0IHRoZSBoYXJkd2FyZSB2b2x1bWUKK2NvbnRyb2wgc3VjaCBhcyBkaWdpdGFsIG1pY3JvcGhvbmVzLiAgVW5sZXNzIHJlYWxseSBuZWVkZWQsIHRoaXMKK3Nob3VsZCBiZSBzZXQgdG8gZXhhY3RseSA1MCUsIGNvcnJlc3BvbmRpbmcgdG8gMGRCIC0tIG5laXRoZXIgZXh0cmEKK2dhaW4gbm9yIGF0dGVudWF0aW9uLiAgV2hlbiB5b3UgdXNlICJodyIgUENNLCBpLmUuLCBhIHJhdyBhY2Nlc3MgUENNLAordGhpcyBjb250cm9sIHdpbGwgaGF2ZSBubyBpbmZsdWVuY2UsIHRob3VnaC4KKworSXQncyBrbm93biB0aGF0IHNvbWUgY29kZWNzIC8gZGV2aWNlcyBoYXZlIGZhaXJseSBiYWQgYW5hbG9nIGNpcmN1aXRzLAorYW5kIHRoZSByZWNvcmRlZCBzb3VuZCBjb250YWlucyBhIGNlcnRhaW4gREMtb2Zmc2V0LiAgVGhpcyBpcyBubyBidWcKK29mIHRoZSBkcml2ZXIuCisKK01vc3Qgb2YgbW9kZXJuIGxhcHRvcHMgaGF2ZSBubyBhbmFsb2cgQ0QtaW5wdXQgY29ubmVjdGlvbi4gIFRodXMsIHRoZQorcmVjb3JkaW5nIGZyb20gQ0QgaW5wdXQgd29uJ3Qgd29yayBpbiBtYW55IGNhc2VzIGFsdGhvdWdoIHRoZSBkcml2ZXIKK3Byb3ZpZGVzIGl0IGFzIHRoZSBjYXB0dXJlIHNvdXJjZS4gIFVzZSBDRERBIGluc3RlYWQuCisKK1RoZSBhdXRvbWF0aWMgc3dpdGNoaW5nIG9mIHRoZSBidWlsdC1pbiBhbmQgZXh0ZXJuYWwgbWljIHBlciBwbHVnZ2luZworaXMgaW1wbGVtZW50ZWQgb24gc29tZSBjb2RlYyBtb2RlbHMgYnV0IG5vdCBvbiBldmVyeSBtb2RlbC4gIFBhcnRseQorYmVjYXVzZSBvZiBteSBsYXppbmVzcyBidXQgbW9zdGx5IGxhY2sgb2YgdGVzdGVycy4gIEZlZWwgZnJlZSB0bworc3VibWl0IHRoZSBpbXByb3ZlbWVudCBwYXRjaCB0byB0aGUgYXV0aG9yLgorCisKK0RpcmVjdCBEZWJ1Z2dpbmcKK35+fn5+fn5+fn5+fn5+fn4KK0lmIG5vIG1vZGVsIG9wdGlvbiBnaXZlcyB5b3UgYSBiZXR0ZXIgcmVzdWx0LCBhbmQgeW91IGFyZSBhIHRvdWdoIGd1eQordG8gZmlnaHQgYWdhaW5zdCBldmlsLCB0cnkgZGVidWdnaW5nIHZpYSBoaXR0aW5nIHRoZSByYXcgSEQtYXVkaW8KK2NvZGVjIHZlcmJzIHRvIHRoZSBkZXZpY2UuICBTb21lIHRvb2xzIGFyZSBhdmFpbGFibGU6IGhkYS1lbXUgYW5kCitoZGEtYW5hbHl6ZXIuICBUaGUgZGV0YWlsZWQgZGVzY3JpcHRpb24gaXMgZm91bmQgaW4gdGhlIHNlY3Rpb25zCitiZWxvdy4gIFlvdSdkIG5lZWQgdG8gZW5hYmxlIGh3ZGVwIGZvciB1c2luZyB0aGVzZSB0b29scy4gIFNlZSAiS2VybmVsCitDb25maWd1cmF0aW9uIiBzZWN0aW9uLgorCisKK09USEVSIElTU1VFUworLS0tLS0tLS0tLS0tCisKK0tlcm5lbCBDb25maWd1cmF0aW9uCit+fn5+fn5+fn5+fn5+fn5+fn5+fgorSW4gZ2VuZXJhbCwgSSByZWNvbW1lbmQgeW91IHRvIGVuYWJsZSB0aGUgc291bmQgZGVidWcgb3B0aW9uLAorYENPTkZJR19TTkRfREVCVUc9eWAsIG5vIG1hdHRlciB3aGV0aGVyIHlvdSBhcmUgZGVidWdnaW5nIG9yIG5vdC4KK1RoaXMgZW5hYmxlcyBzbmRfcHJpbnRkKCkgbWFjcm8gYW5kIG90aGVycywgYW5kIHlvdSdsbCBnZXQgYWRkaXRpb25hbAora2VybmVsIG1lc3NhZ2VzIGF0IHByb2JpbmcuCisKK0luIGFkZGl0aW9uLCB5b3UgY2FuIGVuYWJsZSBgQ09ORklHX1NORF9ERUJVR19WRVJCT1NFPXlgLiAgQnV0IHRoaXMKK3dpbGwgZ2l2ZSB5b3UgZmFyIG1vcmUgbWVzc2FnZXMuICBUaHVzIHR1cm4gdGhpcyBvbiBvbmx5IHdoZW4geW91IGFyZQorc3VyZSB0byB3YW50IGl0LgorCitEb24ndCBmb3JnZXQgdG8gdHVybiBvbiB0aGUgYXBwcm9wcmlhdGUgYENPTkZJR19TTkRfSERBX0NPREVDXypgCitvcHRpb25zLiAgTm90ZSB0aGF0IGVhY2ggb2YgdGhlbSBjb3JyZXNwb25kcyB0byB0aGUgY29kZWMgY2hpcCwgbm90Cit0aGUgY29udHJvbGxlciBjaGlwLiAgVGh1cywgZXZlbiBpZiBsc3BjaSBzaG93cyB0aGUgTnZpZGlhIGNvbnRyb2xsZXIsCit5b3UgbWF5IG5lZWQgdG8gY2hvb3NlIHRoZSBvcHRpb24gZm9yIG90aGVyIHZlbmRvcnMuICBJZiB5b3UgYXJlCit1bnN1cmUsIGp1c3Qgc2VsZWN0IGFsbCB5ZXMuCisKK2BDT05GSUdfU05EX0hEQV9IV0RFUGAgaXMgYSB1c2VmdWwgb3B0aW9uIGZvciBkZWJ1Z2dpbmcgdGhlIGRyaXZlci4KK1doZW4gdGhpcyBpcyBlbmFibGVkLCB0aGUgZHJpdmVyIGNyZWF0ZXMgaGFyZHdhcmUtZGVwZW5kZW50IGRldmljZXMKKyhvbmUgcGVyIGVhY2ggY29kZWMpLCBhbmQgeW91IGhhdmUgYSByYXcgYWNjZXNzIHRvIHRoZSBkZXZpY2UgdmlhCit0aGVzZSBkZXZpY2UgZmlsZXMuICBGb3IgZXhhbXBsZSwgYGh3QzBEMmAgd2lsbCBiZSBjcmVhdGVkIGZvciB0aGUKK2NvZGVjIHNsb3QgIzIgb2YgdGhlIGZpcnN0IGNhcmQgKCMwKS4gIEZvciBkZWJ1Zy10b29scyBzdWNoIGFzCitoZGEtdmVyYiBhbmQgaGRhLWFuYWx5emVyLCB0aGUgaHdkZXAgZGV2aWNlIGhhcyB0byBiZSBlbmFibGVkLgorVGh1cywgaXQnZCBiZSBiZXR0ZXIgdG8gdHVybiB0aGlzIG9uIGFsd2F5cy4KKworYENPTkZJR19TTkRfSERBX1JFQ09ORklHYCBpcyBhIG5ldyBvcHRpb24sIGFuZCB0aGlzIGRlcGVuZHMgb24gdGhlCitod2RlcCBvcHRpb24gYWJvdmUuICBXaGVuIGVuYWJsZWQsIHlvdSdsbCBoYXZlIHNvbWUgc3lzZnMgZmlsZXMgdW5kZXIKK3RoZSBjb3JyZXNwb25kaW5nIGh3ZGVwIGRpcmVjdG9yeS4gIFNlZSAiSEQtYXVkaW8gcmVjb25maWd1cmF0aW9uIgorc2VjdGlvbiBiZWxvdy4KKworYENPTkZJR19TTkRfSERBX1BPV0VSX1NBVkVgIG9wdGlvbiBlbmFibGVzIHRoZSBwb3dlci1zYXZpbmcgZmVhdHVyZS4KK1NlZSAiUG93ZXItc2F2aW5nIiBzZWN0aW9uIGJlbG93LgorCisKK0NvZGVjIFByb2MtRmlsZQorfn5+fn5+fn5+fn5+fn5+CitUaGUgY29kZWMgcHJvYy1maWxlIGlzIGEgdHJlYXN1cmUtY2hlc3QgZm9yIGRlYnVnZ2luZyBIRC1hdWRpby4KK0l0IHNob3dzIG1vc3Qgb2YgdXNlZnVsIGluZm9ybWF0aW9uIG9mIGVhY2ggY29kZWMgd2lkZ2V0LgorCitUaGUgcHJvYyBmaWxlIGlzIGxvY2F0ZWQgaW4gL3Byb2MvYXNvdW5kL2NhcmQqL2NvZGVjIyosIG9uZSBmaWxlIHBlcgorZWFjaCBjb2RlYyBzbG90LiAgWW91IGNhbiBrbm93IHRoZSBjb2RlYyB2ZW5kb3IsIHByb2R1Y3QgaWQgYW5kCituYW1lcywgdGhlIHR5cGUgb2YgZWFjaCB3aWRnZXQsIGNhcGFiaWxpdGllcyBhbmQgc28gb24uCitUaGlzIGZpbGUsIGhvd2V2ZXIsIGRvZXNuJ3Qgc2hvdyB0aGUgamFjayBzZW5zaW5nIHN0YXRlLCBzbyBmYXIuICBUaGlzCitpcyBiZWNhdXNlIHRoZSBqYWNrLXNlbnNpbmcgbWlnaHQgYmUgZGVwZW5kaW5nIG9uIHRoZSB0cmlnZ2VyIHN0YXRlLgorCitUaGlzIGZpbGUgd2lsbCBiZSBwaWNrZWQgdXAgYnkgdGhlIGRlYnVnIHRvb2xzLCBhbmQgYWxzbyBpdCBjYW4gYmUgZmVkCit0byB0aGUgZW11bGF0b3IgYXMgdGhlIHByaW1hcnkgY29kZWMgaW5mb3JtYXRpb24uICBTZWUgdGhlIGRlYnVnIHRvb2xzCitzZWN0aW9uIGJlbG93LgorCitUaGlzIHByb2MgZmlsZSBjYW4gYmUgYWxzbyB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGdlbmVyaWMgcGFyc2VyIGlzCit1c2VkLiAgV2hlbiB0aGUgZ2VuZXJpYyBwYXJzZXIgaXMgdXNlZCwgdGhlIHZlbmRvci9wcm9kdWN0IElEIG5hbWUKK3dpbGwgYXBwZWFyIGFzICJSZWFsdGVrIElEIDAyNjIiLCBpbnN0ZWFkIG9mICJSZWFsdGVrIEFMQzI2MiIuCisKKworSEQtQXVkaW8gUmVjb25maWd1cmF0aW9uCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK1RoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgdG8gYWxsb3cgeW91IHJlLWNvbmZpZ3VyZSB0aGUgSEQtYXVkaW8KK2NvZGVjIGR5bmFtaWNhbGx5IHdpdGhvdXQgcmVsb2FkaW5nIHRoZSBkcml2ZXIuICBUaGUgZm9sbG93aW5nIHN5c2ZzCitmaWxlcyBhcmUgYXZhaWxhYmxlIHVuZGVyIGVhY2ggY29kZWMtaHdkZXAgZGV2aWNlIGRpcmVjdG9yeSAoZS5nLiAKKy9zeXMvY2xhc3Mvc291bmQvaHdDMEQwKToKKwordmVuZG9yX2lkOjoKKyAgU2hvd3MgdGhlIDMyYml0IGNvZGVjIHZlbmRvci1pZCBoZXggbnVtYmVyLiAgWW91IGNhbiBjaGFuZ2UgdGhlCisgIHZlbmRvci1pZCB2YWx1ZSBieSB3cml0aW5nIHRvIHRoaXMgZmlsZS4KK3N1YnN5c3RlbV9pZDo6CisgIFNob3dzIHRoZSAzMmJpdCBjb2RlYyBzdWJzeXN0ZW0taWQgaGV4IG51bWJlci4gIFlvdSBjYW4gY2hhbmdlIHRoZQorICBzdWJzeXN0ZW0taWQgdmFsdWUgYnkgd3JpdGluZyB0byB0aGlzIGZpbGUuCityZXZpc2lvbl9pZDo6CisgIFNob3dzIHRoZSAzMmJpdCBjb2RlYyByZXZpc2lvbi1pZCBoZXggbnVtYmVyLiAgWW91IGNhbiBjaGFuZ2UgdGhlCisgIHJldmlzaW9uLWlkIHZhbHVlIGJ5IHdyaXRpbmcgdG8gdGhpcyBmaWxlLgorYWZnOjoKKyAgU2hvd3MgdGhlIEFGRyBJRC4gIFRoaXMgaXMgcmVhZC1vbmx5LgorbWZnOjoKKyAgU2hvd3MgdGhlIE1GRyBJRC4gIFRoaXMgaXMgcmVhZC1vbmx5LgorbmFtZTo6CisgIFNob3dzIHRoZSBjb2RlYyBuYW1lIHN0cmluZy4gIENhbiBiZSBjaGFuZ2VkIGJ5IHdyaXRpbmcgdG8gdGhpcworICBmaWxlLgorbW9kZWxuYW1lOjoKKyAgU2hvd3MgdGhlIGN1cnJlbnRseSBzZXQgYG1vZGVsYCBvcHRpb24uICBDYW4gYmUgY2hhbmdlZCBieSB3cml0aW5nCisgIHRvIHRoaXMgZmlsZS4KK2luaXRfdmVyYnM6OgorICBUaGUgZXh0cmEgdmVyYnMgdG8gZXhlY3V0ZSBhdCBpbml0aWFsaXphdGlvbi4gIFlvdSBjYW4gYWRkIGEgdmVyYiBieQorICB3cml0aW5nIHRvIHRoaXMgZmlsZS4gIFBhc3MgdGhyZWUgbnVtYmVyczogbmlkLCB2ZXJiIGFuZCBwYXJhbWV0ZXIKKyAgKHNlcGFyYXRlZCB3aXRoIGEgc3BhY2UpLgoraGludHM6OgorICBTaG93cyAvIHN0b3JlcyBoaW50IHN0cmluZ3MgZm9yIGNvZGVjIHBhcnNlcnMgZm9yIGFueSB1c2UuCisgIEl0cyBmb3JtYXQgaXMgYGtleSA9IHZhbHVlYC4gIEZvciBleGFtcGxlLCBwYXNzaW5nIGBqYWNrX2RldGVjdCA9IG5vYAorICB3aWxsIGRpc2FibGUgdGhlIGphY2sgZGV0ZWN0aW9uIG9mIHRoZSBtYWNoaW5lIGNvbXBsZXRlbHkuCitpbml0X3Bpbl9jb25maWdzOjoKKyAgU2hvd3MgdGhlIGluaXRpYWwgcGluIGRlZmF1bHQgY29uZmlnIHZhbHVlcyBzZXQgYnkgQklPUy4KK2RyaXZlcl9waW5fY29uZmlnczo6CisgIFNob3dzIHRoZSBwaW4gZGVmYXVsdCB2YWx1ZXMgc2V0IGJ5IHRoZSBjb2RlYyBwYXJzZXIgZXhwbGljaXRseS4KKyAgVGhpcyBkb2Vzbid0IHNob3cgYWxsIHBpbiB2YWx1ZXMgYnV0IG9ubHkgdGhlIGNoYW5nZWQgdmFsdWVzIGJ5CisgIHRoZSBwYXJzZXIuICBUaGF0IGlzLCBpZiB0aGUgcGFyc2VyIGRvZXNuJ3QgY2hhbmdlIHRoZSBwaW4gZGVmYXVsdAorICBjb25maWcgdmFsdWVzIGJ5IGl0c2VsZiwgdGhpcyB3aWxsIGNvbnRhaW4gbm90aGluZy4KK3VzZXJfcGluX2NvbmZpZ3M6OgorICBTaG93cyB0aGUgcGluIGRlZmF1bHQgY29uZmlnIHZhbHVlcyB0byBvdmVycmlkZSB0aGUgQklPUyBzZXR1cC4KKyAgV3JpdGluZyB0aGlzICh3aXRoIHR3byBudW1iZXJzLCBOSUQgYW5kIHZhbHVlKSBhcHBlbmRzIHRoZSBuZXcKKyAgdmFsdWUuICBUaGUgZ2l2ZW4gd2lsbCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGluaXRpYWwgQklPUyB2YWx1ZSBhdAorICB0aGUgbmV4dCByZWNvbmZpZ3VyYXRpb24gdGltZS4gIE5vdGUgdGhhdCB0aGlzIGNvbmZpZyB3aWxsIG92ZXJyaWRlCisgIGV2ZW4gdGhlIGRyaXZlciBwaW4gY29uZmlncywgdG9vLgorcmVjb25maWc6OgorICBUcmlnZ2VycyB0aGUgY29kZWMgcmUtY29uZmlndXJhdGlvbi4gIFdoZW4gYW55IHZhbHVlIGlzIHdyaXR0ZW4gdG8KKyAgdGhpcyBmaWxlLCB0aGUgZHJpdmVyIHJlLWluaXRpYWxpemUgYW5kIHBhcnNlcyB0aGUgY29kZWMgdHJlZQorICBhZ2Fpbi4gIEFsbCB0aGUgY2hhbmdlcyBkb25lIGJ5IHRoZSBzeXNmcyBlbnRyaWVzIGFib3ZlIGFyZSB0YWtlbgorICBpbnRvIGFjY291bnQuCitjbGVhcjo6CisgIFJlc2V0cyB0aGUgY29kZWMsIHJlbW92ZXMgdGhlIG1peGVyIGVsZW1lbnRzIGFuZCBQQ00gc3R1ZmYgb2YgdGhlCisgIHNwZWNpZmllZCBjb2RlYywgYW5kIGNsZWFyIGFsbCBpbml0IHZlcmJzIGFuZCBoaW50cy4KKworRm9yIGV4YW1wbGUsIHdoZW4geW91IHdhbnQgdG8gY2hhbmdlIHRoZSBwaW4gZGVmYXVsdCBjb25maWd1cmF0aW9uCit2YWx1ZSBvZiB0aGUgcGluIHdpZGdldCAweDE0IHRvIDB4OTk5MzAxM2YsIGFuZCBsZXQgdGhlIGRyaXZlcgorcmUtY29uZmlndXJlIGJhc2VkIG9uIHRoYXQgc3RhdGUsIHJ1biBsaWtlIGJlbG93OgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICMgZWNobyAweDE0IDB4OTk5MzAxM2YgPiAvc3lzL2NsYXNzL3NvdW5kL2h3QzBEMC91c2VyX3Bpbl9jb25maWdzCisgICMgZWNobyAxID4gL3N5cy9jbGFzcy9zb3VuZC9od0MwRDAvcmVjb25maWcgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworSGludCBTdHJpbmdzCit+fn5+fn5+fn5+fn4KK1RoZSBjb2RlYyBwYXJzZXIgaGF2ZSBzZXZlcmFsIHN3aXRjaGVzIGFuZCBhZGp1c3RtZW50IGtub2JzIGZvcgorbWF0Y2hpbmcgYmV0dGVyIHdpdGggdGhlIGFjdHVhbCBjb2RlYyBvciBkZXZpY2UgYmVoYXZpb3IuICBNYW55IG9mCit0aGVtIGNhbiBiZSBhZGp1c3RlZCBkeW5hbWljYWxseSB2aWEgImhpbnRzIiBzdHJpbmdzIGFzIG1lbnRpb25lZCBpbgordGhlIHNlY3Rpb24gYWJvdmUuICBGb3IgZXhhbXBsZSwgYnkgcGFzc2luZyBgamFja19kZXRlY3QgPSBub2Agc3RyaW5nCit2aWEgc3lzZnMgb3IgYSBwYXRjaCBmaWxlLCB5b3UgY2FuIGRpc2FibGUgdGhlIGphY2sgZGV0ZWN0aW9uLCB0aHVzCit0aGUgY29kZWMgcGFyc2VyIHdpbGwgc2tpcCB0aGUgZmVhdHVyZXMgbGlrZSBhdXRvLW11dGUgb3IgbWljCithdXRvLXN3aXRjaC4gIEFzIGEgYm9vbGVhbiB2YWx1ZSwgZWl0aGVyIGB5ZXNgLCBgbm9gLCBgdHJ1ZWAsIGBmYWxzZWAsCitgMWAgb3IgYDBgIGNhbiBiZSBwYXNzZWQuCisKK1RoZSBnZW5lcmljIHBhcnNlciBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGhpbnRzOgorCistIGphY2tfZGV0ZWN0IChib29sKTogc3BlY2lmeSB3aGV0aGVyIHRoZSBqYWNrIGRldGVjdGlvbiBpcyBhdmFpbGFibGUKKyAgYXQgYWxsIG9uIHRoaXMgbWFjaGluZTsgZGVmYXVsdCB0cnVlCistIGludl9qYWNrX2RldGVjdCAoYm9vbCk6IGluZGljYXRlcyB0aGF0IHRoZSBqYWNrIGRldGVjdGlvbiBsb2dpYyBpcworICBpbnZlcnRlZAorLSB0cmlnZ2VyX3NlbnNlIChib29sKTogaW5kaWNhdGVzIHRoYXQgdGhlIGphY2sgZGV0ZWN0aW9uIG5lZWRzIHRoZQorICBleHBsaWNpdCBjYWxsIG9mIEFDX1ZFUkJfU0VUX1BJTl9TRU5TRSB2ZXJiCistIGludl9lYXBkIChib29sKTogaW5kaWNhdGVzIHRoYXQgdGhlIEVBUEQgaXMgaW1wbGVtZW50ZWQgaW4gdGhlCisgIGludmVydGVkIGxvZ2ljCistIHBjbV9mb3JtYXRfZmlyc3QgKGJvb2wpOiBzZXRzIHRoZSBQQ00gZm9ybWF0IGJlZm9yZSB0aGUgc3RyZWFtIHRhZworICBhbmQgY2hhbm5lbCBJRAorLSBzdGlja3lfc3RyZWFtIChib29sKToga2VlcCB0aGUgUENNIGZvcm1hdCwgc3RyZWFtIHRhZyBhbmQgSUQgYXMgbG9uZworICBhcyBwb3NzaWJsZTsgZGVmYXVsdCB0cnVlCistIHNwZGlmX3N0YXR1c19yZXNldCAoYm9vbCk6IHJlc2V0IHRoZSBTUERJRiBzdGF0dXMgYml0cyBhdCBlYWNoIHRpbWUKKyAgdGhlIFNQRElGIHN0cmVhbSBpcyBzZXQgdXAKKy0gIHBpbl9hbXBfd29ya2Fyb3VuZCAoYm9vbCk6IHRoZSBvdXRwdXQgcGluIG1heSBoYXZlIG11bHRpcGxlIGFtcAorICB2YWx1ZXMKKy0gc2luZ2xlX2FkY19hbXAgKGJvb2wpOiBBRENzIGNhbiBoYXZlIG9ubHkgc2luZ2xlIGlucHV0IGFtcHMKKy0gYXV0b19tdXRlIChib29sKTogZW5hYmxlL2Rpc2FibGUgdGhlIGhlYWRwaG9uZSBhdXRvLW11dGUgZmVhdHVyZTsKKyAgZGVmYXVsdCB0cnVlCistIGF1dG9fbWljIChib29sKTogZW5hYmxlL2Rpc2FibGUgdGhlIG1pYyBhdXRvLXN3aXRjaCBmZWF0dXJlOyBkZWZhdWx0CisgIHRydWUKKy0gbGluZV9pbl9hdXRvX3N3aXRjaCAoYm9vbCk6IGVuYWJsZS9kaXNhYmxlIHRoZSBsaW5lLWluIGF1dG8tc3dpdGNoCisgIGZlYXR1cmU7IGRlZmF1bHQgZmFsc2UKKy0gbmVlZF9kYWNfZml4IChib29sKTogbGltaXRzIHRoZSBEQUNzIGRlcGVuZGluZyBvbiB0aGUgY2hhbm5lbCBjb3VudAorLSBwcmltYXJ5X2hwIChib29sKTogcHJvYmUgaGVhZHBob25lIGphY2tzIGFzIHRoZSBwcmltYXJ5IG91dHB1dHM7CisgIGRlZmF1bHQgdHJ1ZQorLSBtdWx0aV9pbyAoYm9vbCk6IHRyeSBwcm9iaW5nIG11bHRpLUkvTyBjb25maWcgKGUuZy4gc2hhcmVkCisgIGxpbmUtaW4vc3Vycm91bmQsIG1pYy9jbGZlIGphY2tzKQorLSBtdWx0aV9jYXBfdm9sIChib29sKTogcHJvdmlkZSBtdWx0aXBsZSBjYXB0dXJlIHZvbHVtZXMKKy0gaW52X2RtaWNfc3BsaXQgKGJvb2wpOiBwcm92aWRlIHNwbGl0IGludGVybmFsIG1pYyB2b2x1bWUvc3dpdGNoIGZvcgorICBwaGFzZS1pbnZlcnRlZCBkaWdpdGFsIG1pY3MKKy0gaW5kZXBfaHAgKGJvb2wpOiBwcm92aWRlIHRoZSBpbmRlcGVuZGVudCBoZWFkcGhvbmUgUENNIHN0cmVhbSBhbmQKKyAgdGhlIGNvcnJlc3BvbmRpbmcgbWl4ZXIgY29udHJvbCwgaWYgYXZhaWxhYmxlCistIGFkZF9zdGVyZW9fbWl4X2lucHV0IChib29sKTogYWRkIHRoZSBzdGVyZW8gbWl4IChhbmFsb2ctbG9vcGJhY2sKKyAgbWl4KSB0byB0aGUgaW5wdXQgbXV4IGlmIGF2YWlsYWJsZQorLSBhZGRfamFja19tb2RlcyAoYm9vbCk6IGFkZCAieHh4IEphY2sgTW9kZSIgZW51bSBjb250cm9scyB0byBlYWNoCisgIEkvTyBqYWNrIGZvciBhbGxvd2luZyB0byBjaGFuZ2UgdGhlIGhlYWRwaG9uZSBhbXAgYW5kIG1pYyBiaWFzIFZSRUYKKyAgY2FwYWJpbGl0aWVzCistIHBvd2VyX3NhdmVfbm9kZSAoYm9vbCk6IGFkdmFuY2VkIHBvd2VyIG1hbmFnZW1lbnQgZm9yIGVhY2ggd2lkZ2V0LAorICBjb250cm9sbGluZyB0aGUgcG93ZXIgc2F0ZSAoRDAvRDMpIG9mIGVhY2ggd2lkZ2V0IG5vZGUgZGVwZW5kaW5nIG9uCisgIHRoZSBhY3R1YWwgcGluIGFuZCBzdHJlYW0gc3RhdGVzCistIHBvd2VyX2Rvd25fdW51c2VkIChib29sKTogcG93ZXIgZG93biB0aGUgdW51c2VkIHdpZGdldHMsIGEgc3Vic2V0IG9mCisgIHBvd2VyX3NhdmVfbm9kZSwgYW5kIHdpbGwgYmUgZHJvcHBlZCBpbiBmdXR1cmUKKy0gYWRkX2hwX21pYyAoYm9vbCk6IGFkZCB0aGUgaGVhZHBob25lIHRvIGNhcHR1cmUgc291cmNlIGlmIHBvc3NpYmxlCistIGhwX21pY19kZXRlY3QgKGJvb2wpOiBlbmFibGUvZGlzYWJsZSB0aGUgaHAvbWljIHNoYXJlZCBpbnB1dCBmb3IgYQorICBzaW5nbGUgYnVpbHQtaW4gbWljIGNhc2U7IGRlZmF1bHQgdHJ1ZQorLSBtaXhlcl9uaWQgKGludCk6IHNwZWNpZmllcyB0aGUgd2lkZ2V0IE5JRCBvZiB0aGUgYW5hbG9nLWxvb3BiYWNrCisgIG1peGVyCisKKworRWFybHkgUGF0Y2hpbmcKK35+fn5+fn5+fn5+fn5+CitXaGVuIENPTkZJR19TTkRfSERBX1BBVENIX0xPQURFUj15IGlzIHNldCwgeW91IGNhbiBwYXNzIGEgInBhdGNoIiBhcyBhCitmaXJtd2FyZSBmaWxlIGZvciBtb2RpZnlpbmcgdGhlIEhELWF1ZGlvIHNldHVwIGJlZm9yZSBpbml0aWFsaXppbmcgdGhlCitjb2RlYy4gIFRoaXMgY2FuIHdvcmsgYmFzaWNhbGx5IGxpa2UgdGhlIHJlY29uZmlndXJhdGlvbiB2aWEgc3lzZnMgaW4KK3RoZSBhYm92ZSwgYnV0IGl0IGRvZXMgaXQgYmVmb3JlIHRoZSBmaXJzdCBjb2RlYyBjb25maWd1cmF0aW9uLgorCitBIHBhdGNoIGZpbGUgaXMgYSBwbGFpbiB0ZXh0IGZpbGUgd2hpY2ggbG9va3MgbGlrZSBiZWxvdzoKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFtjb2RlY10KKyAgMHgxMjM0NTY3OCAweGFiY2QxMjM0IDIKKworICBbbW9kZWxdCisgIGF1dG8KKworICBbcGluY2ZnXQorICAweDEyIDB4NDExMTExZjAKKworICBbdmVyYl0KKyAgMHgyMCAweDUwMCAweDAzCisgIDB4MjAgMHg0MDAgMHhmZgorCisgIFtoaW50XQorICBqYWNrX2RldGVjdCA9IG5vCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZpbGUgbmVlZHMgdG8gaGF2ZSBhIGxpbmUgYFtjb2RlY11gLiAgVGhlIG5leHQgbGluZSBzaG91bGQgY29udGFpbgordGhyZWUgbnVtYmVycyBpbmRpY2F0aW5nIHRoZSBjb2RlYyB2ZW5kb3ItaWQgKDB4MTIzNDU2NzggaW4gdGhlCitleGFtcGxlKSwgdGhlIGNvZGVjIHN1YnN5c3RlbS1pZCAoMHhhYmNkMTIzNCkgYW5kIHRoZSBhZGRyZXNzICgyKSBvZgordGhlIGNvZGVjLiAgVGhlIHJlc3QgcGF0Y2ggZW50cmllcyBhcmUgYXBwbGllZCB0byB0aGlzIHNwZWNpZmllZCBjb2RlYwordW50aWwgYW5vdGhlciBjb2RlYyBlbnRyeSBpcyBnaXZlbi4gIFBhc3NpbmcgMCBvciBhIG5lZ2F0aXZlIG51bWJlciB0bwordGhlIGZpcnN0IG9yIHRoZSBzZWNvbmQgdmFsdWUgd2lsbCBtYWtlIHRoZSBjaGVjayBvZiB0aGUgY29ycmVzcG9uZGluZworZmllbGQgYmUgc2tpcHBlZC4gIEl0J2xsIGJlIHVzZWZ1bCBmb3IgcmVhbGx5IGJyb2tlbiBkZXZpY2VzIHRoYXQgZG9uJ3QKK2luaXRpYWxpemUgU1NJRCBwcm9wZXJseS4KKworVGhlIGBbbW9kZWxdYCBsaW5lIGFsbG93cyB0byBjaGFuZ2UgdGhlIG1vZGVsIG5hbWUgb2YgdGhlIGVhY2ggY29kZWMuCitJbiB0aGUgZXhhbXBsZSBhYm92ZSwgaXQgd2lsbCBiZSBjaGFuZ2VkIHRvIG1vZGVsPWF1dG8uCitOb3RlIHRoYXQgdGhpcyBvdmVycmlkZXMgdGhlIG1vZHVsZSBvcHRpb24uCisKK0FmdGVyIHRoZSBgW3BpbmNmZ11gIGxpbmUsIHRoZSBjb250ZW50cyBhcmUgcGFyc2VkIGFzIHRoZSBpbml0aWFsCitkZWZhdWx0IHBpbi1jb25maWd1cmF0aW9ucyBqdXN0IGxpa2UgYHVzZXJfcGluX2NvbmZpZ3NgIHN5c2ZzIGFib3ZlLgorVGhlIHZhbHVlcyBjYW4gYmUgc2hvd24gaW4gdXNlcl9waW5fY29uZmlncyBzeXNmcyBmaWxlLCB0b28uCisKK1NpbWlsYXJseSwgdGhlIGxpbmVzIGFmdGVyIGBbdmVyYl1gIGFyZSBwYXJzZWQgYXMgYGluaXRfdmVyYnNgCitzeXNmcyBlbnRyaWVzLCBhbmQgdGhlIGxpbmVzIGFmdGVyIGBbaGludF1gIGFyZSBwYXJzZWQgYXMgYGhpbnRzYAorc3lzZnMgZW50cmllcywgcmVzcGVjdGl2ZWx5LgorCitBbm90aGVyIGV4YW1wbGUgdG8gb3ZlcnJpZGUgdGhlIGNvZGVjIHZlbmRvciBpZCBmcm9tIDB4MTIzNDU2NzggdG8KKzB4ZGVhZGJlZWYgaXMgbGlrZSBiZWxvdzoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBbY29kZWNdCisgIDB4MTIzNDU2NzggMHhhYmNkMTIzNCAyCisKKyAgW3ZlbmRvcl9pZF0KKyAgMHhkZWFkYmVlZgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0luIHRoZSBzaW1pbGFyIHdheSwgeW91IGNhbiBvdmVycmlkZSB0aGUgY29kZWMgc3Vic3lzdGVtX2lkIHZpYQorYFtzdWJzeXN0ZW1faWRdYCwgdGhlIHJldmlzaW9uIGlkIHZpYSBgW3JldmlzaW9uX2lkXWAgbGluZS4KK0Fsc28sIHRoZSBjb2RlYyBjaGlwIG5hbWUgY2FuIGJlIHJld3JpdHRlbiB2aWEgYFtjaGlwX25hbWVdYCBsaW5lLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFtjb2RlY10KKyAgMHgxMjM0NTY3OCAweGFiY2QxMjM0IDIKKworICBbc3Vic3lzdGVtX2lkXQorICAweGZmZmYxMTExCisKKyAgW3JldmlzaW9uX2lkXQorICAweDEwCisKKyAgW2NoaXBfbmFtZV0KKyAgTXktb3duIE5FV1MtMDAwMgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBoZC1hdWRpbyBkcml2ZXIgcmVhZHMgdGhlIGZpbGUgdmlhIHJlcXVlc3RfZmlybXdhcmUoKS4gIFRodXMsCithIHBhdGNoIGZpbGUgaGFzIHRvIGJlIGxvY2F0ZWQgb24gdGhlIGFwcHJvcHJpYXRlIGZpcm13YXJlIHBhdGgsCit0eXBpY2FsbHksIC9saWIvZmlybXdhcmUuICBGb3IgZXhhbXBsZSwgd2hlbiB5b3UgcGFzcyB0aGUgb3B0aW9uCitgcGF0Y2g9aGRhLWluaXQuZndgLCB0aGUgZmlsZSAvbGliL2Zpcm13YXJlL2hkYS1pbml0LmZ3IG11c3QgYmUKK3ByZXNlbnQuCisKK1RoZSBwYXRjaCBtb2R1bGUgb3B0aW9uIGlzIHNwZWNpZmljIHRvIGVhY2ggY2FyZCBpbnN0YW5jZSwgYW5kIHlvdQorbmVlZCB0byBnaXZlIG9uZSBmaWxlIG5hbWUgZm9yIGVhY2ggaW5zdGFuY2UsIHNlcGFyYXRlZCBieSBjb21tYXMuCitGb3IgZXhhbXBsZSwgaWYgeW91IGhhdmUgdHdvIGNhcmRzLCBvbmUgZm9yIGFuIG9uLWJvYXJkIGFuYWxvZyBhbmQgb25lIAorZm9yIGFuIEhETUkgdmlkZW8gYm9hcmQsIHlvdSBtYXkgcGFzcyBwYXRjaCBvcHRpb24gbGlrZSBiZWxvdzoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIG9wdGlvbnMgc25kLWhkYS1pbnRlbCBwYXRjaD1vbi1ib2FyZC1wYXRjaCxoZG1pLXBhdGNoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitQb3dlci1TYXZpbmcKK35+fn5+fn5+fn5+fgorVGhlIHBvd2VyLXNhdmluZyBpcyBhIGtpbmQgb2YgYXV0by1zdXNwZW5kIG9mIHRoZSBkZXZpY2UuICBXaGVuIHRoZQorZGV2aWNlIGlzIGluYWN0aXZlIGZvciBhIGNlcnRhaW4gdGltZSwgdGhlIGRldmljZSBpcyBhdXRvbWF0aWNhbGx5Cit0dXJuZWQgb2ZmIHRvIHNhdmUgdGhlIHBvd2VyLiAgVGhlIHRpbWUgdG8gZ28gZG93biBpcyBzcGVjaWZpZWQgdmlhCitgcG93ZXJfc2F2ZWAgbW9kdWxlIG9wdGlvbiwgYW5kIHRoaXMgb3B0aW9uIGNhbiBiZSBjaGFuZ2VkIGR5bmFtaWNhbGx5Cit2aWEgc3lzZnMuCisKK1RoZSBwb3dlci1zYXZpbmcgd29uJ3Qgd29yayB3aGVuIHRoZSBhbmFsb2cgbG9vcGJhY2sgaXMgZW5hYmxlZCBvbgorc29tZSBjb2RlY3MuICBNYWtlIHN1cmUgdGhhdCB5b3UgbXV0ZSBhbGwgdW5uZWVkZWQgc2lnbmFsIHJvdXRlcyB3aGVuCit5b3Ugd2FudCB0aGUgcG93ZXItc2F2aW5nLgorCitUaGUgcG93ZXItc2F2aW5nIGZlYXR1cmUgbWlnaHQgY2F1c2UgYXVkaWJsZSBjbGljayBub2lzZXMgYXQgZWFjaAorcG93ZXItZG93bi91cCBkZXBlbmRpbmcgb24gdGhlIGRldmljZS4gIFNvbWUgb2YgdGhlbSBtaWdodCBiZQorc29sdmFibGUsIGJ1dCBzb21lIGFyZSBoYXJkLCBJJ20gYWZyYWlkLiAgU29tZSBkaXN0cm9zIHN1Y2ggYXMKK29wZW5TVVNFIGVuYWJsZXMgdGhlIHBvd2VyLXNhdmluZyBmZWF0dXJlIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgcG93ZXIKK2NhYmxlIGlzIHVucGx1Z2dlZC4gIFRodXMsIGlmIHlvdSBoZWFyIG5vaXNlcywgc3VzcGVjdCBmaXJzdCB0aGUKK3Bvd2VyLXNhdmluZy4gIFNlZSAvc3lzL21vZHVsZS9zbmRfaGRhX2ludGVsL3BhcmFtZXRlcnMvcG93ZXJfc2F2ZSB0bworY2hlY2sgdGhlIGN1cnJlbnQgdmFsdWUuICBJZiBpdCdzIG5vbi16ZXJvLCB0aGUgZmVhdHVyZSBpcyB0dXJuZWQgb24uCisKK1RoZSByZWNlbnQga2VybmVsIHN1cHBvcnRzIHRoZSBydW50aW1lIFBNIGZvciB0aGUgSEQtYXVkaW8gY29udHJvbGxlcgorY2hpcCwgdG9vLiAgSXQgbWVhbnMgdGhhdCB0aGUgSEQtYXVkaW8gY29udHJvbGxlciBpcyBhbHNvIHBvd2VyZWQgdXAgLworZG93biBkeW5hbWljYWxseS4gIFRoZSBmZWF0dXJlIGlzIGVuYWJsZWQgb25seSBmb3IgY2VydGFpbiBjb250cm9sbGVyCitjaGlwcyBsaWtlIEludGVsIEx5bnhQb2ludC4gIFlvdSBjYW4gZW5hYmxlL2Rpc2FibGUgdGhpcyBmZWF0dXJlCitmb3JjaWJseSBieSBzZXR0aW5nIGBwb3dlcl9zYXZlX2NvbnRyb2xsZXJgIG9wdGlvbiwgd2hpY2ggaXMgYWxzbworYXZhaWxhYmxlIGF0IC9zeXMvbW9kdWxlL3NuZF9oZGFfaW50ZWwvcGFyYW1ldGVycyBkaXJlY3RvcnkuCisKKworVHJhY2Vwb2ludHMKK35+fn5+fn5+fn5+CitUaGUgaGQtYXVkaW8gZHJpdmVyIGdpdmVzIGEgZmV3IGJhc2ljIHRyYWNlcG9pbnRzLgorYGhkYTpoZGFfc2VuZF9jbWRgIHRyYWNlcyBlYWNoIENPUkIgd3JpdGUgd2hpbGUgYGhkYTpoZGFfZ2V0X3Jlc3BvbnNlYAordHJhY2VzIHRoZSByZXNwb25zZSBmcm9tIFJJUkIgKG9ubHkgd2hlbiByZWFkIGZyb20gdGhlIGNvZGVjIGRyaXZlcikuCitgaGRhOmhkYV9idXNfcmVzZXRgIHRyYWNlcyB0aGUgYnVzLXJlc2V0IGR1ZSB0byBmYXRhbCBlcnJvciwgZXRjLAorYGhkYTpoZGFfdW5zb2xfZXZlbnRgIHRyYWNlcyB0aGUgdW5zb2xpY2l0ZWQgZXZlbnRzLCBhbmQKK2BoZGE6aGRhX3Bvd2VyX2Rvd25gIGFuZCBgaGRhOmhkYV9wb3dlcl91cGAgdHJhY2UgdGhlIHBvd2VyIGRvd24vdXAKK3ZpYSBwb3dlci1zYXZpbmcgYmVoYXZpb3IuCisKK0VuYWJsaW5nIGFsbCB0cmFjZXBvaW50cyBjYW4gYmUgZG9uZSBsaWtlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIyBlY2hvIDEgPiAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2V2ZW50cy9oZGEvZW5hYmxlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3RoZW4gYWZ0ZXIgc29tZSBjb21tYW5kcywgeW91IGNhbiB0cmFjZXMgZnJvbQorL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjZSBmaWxlLiAgRm9yIGV4YW1wbGUsIHdoZW4geW91IHdhbnQgdG8KK3RyYWNlIHdoYXQgY29kZWMgY29tbWFuZCBpcyBzZW50LCBlbmFibGUgdGhlIHRyYWNlcG9pbnQgbGlrZToKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAjIGNhdCAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3RyYWNlCisgICMgdHJhY2VyOiBub3AKKyAgIworICAjICAgICAgIFRBU0stUElEICAgIENQVSMgICAgVElNRVNUQU1QICBGVU5DVElPTgorICAjICAgICAgICAgIHwgfCAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8CisgICAgICAgICA8Li4uPi03ODA3ICBbMDAyXSAxMDUxNDcuNzc0ODg5OiBoZGFfc2VuZF9jbWQ6IFswOjBdIHZhbD1lM2EwMTkKKyAgICAgICAgIDwuLi4+LTc4MDcgIFswMDJdIDEwNTE0Ny43NzQ4OTM6IGhkYV9zZW5kX2NtZDogWzA6MF0gdmFsPWUzOTAxOQorICAgICAgICAgPC4uLj4tNzgwNyAgWzAwMl0gMTA1MTQ3Ljk5OTU0MjogaGRhX3NlbmRfY21kOiBbMDowXSB2YWw9ZTNhMDFhCisgICAgICAgICA8Li4uPi03ODA3ICBbMDAyXSAxMDUxNDcuOTk5NTQzOiBoZGFfc2VuZF9jbWQ6IFswOjBdIHZhbD1lMzkwMWEKKyAgICAgICAgIDwuLi4+LTI2NzY0IFswMDFdIDM0OTIyMi44MzcxNDM6IGhkYV9zZW5kX2NtZDogWzA6MF0gdmFsPWUzYTAxOQorICAgICAgICAgPC4uLj4tMjY3NjQgWzAwMV0gMzQ5MjIyLjgzNzE0ODogaGRhX3NlbmRfY21kOiBbMDowXSB2YWw9ZTM5MDE5CisgICAgICAgICA8Li4uPi0yNjc2NCBbMDAxXSAzNDkyMjMuMDU4NTM5OiBoZGFfc2VuZF9jbWQ6IFswOjBdIHZhbD1lM2EwMWEKKyAgICAgICAgIDwuLi4+LTI2NzY0IFswMDFdIDM0OTIyMy4wNTg1NDE6IGhkYV9zZW5kX2NtZDogWzA6MF0gdmFsPWUzOTAxYQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitIZXJlIGBbMDowXWAgaW5kaWNhdGVzIHRoZSBjYXJkIG51bWJlciBhbmQgdGhlIGNvZGVjIGFkZHJlc3MsIGFuZAorYHZhbGAgc2hvd3MgdGhlIHZhbHVlIHNlbnQgdG8gdGhlIGNvZGVjLCByZXNwZWN0aXZlbHkuICBUaGUgdmFsdWUgaXMKK2EgcGFja2VkIHZhbHVlLCBhbmQgeW91IGNhbiBkZWNvZGUgaXQgdmlhIGhkYS1kZWNvZGUtdmVyYiBwcm9ncmFtCitpbmNsdWRlZCBpbiBoZGEtZW11IHBhY2thZ2UgYmVsb3cuICBGb3IgZXhhbXBsZSwgdGhlIHZhbHVlIGUzYTAxOSBpcwordG8gc2V0IHRoZSBsZWZ0IG91dHB1dC1hbXAgdmFsdWUgdG8gMjUuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgJSBoZGEtZGVjb2RlLXZlcmIgMHhlM2EwMTkKKyAgcmF3IHZhbHVlID0gMHgwMGUzYTAxOQorICBjaWQgPSAwLCBuaWQgPSAweDBlLCB2ZXJiID0gMHgzYTAsIHBhcm0gPSAweDE5CisgIHJhdyB2YWx1ZTogdmVyYiA9IDB4M2EwLCBwYXJtID0gMHgxOQorICB2ZXJibmFtZSA9IHNldF9hbXBfZ2Fpbl9tdXRlCisgIGFtcCByYXcgdmFsID0gMHhhMDE5CisgIG91dHB1dCwgbGVmdCwgaWR4PTAsIG11dGU9MCwgdmFsPTI1CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitEZXZlbG9wbWVudCBUcmVlCit+fn5+fn5+fn5+fn5+fn5+CitUaGUgbGF0ZXN0IGRldmVsb3BtZW50IGNvZGVzIGZvciBIRC1hdWRpbyBhcmUgZm91bmQgb24gc291bmQgZ2l0IHRyZWU6CisKKy0gZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3Rpd2FpL3NvdW5kLmdpdAorCitUaGUgbWFzdGVyIGJyYW5jaCBvciBmb3ItbmV4dCBicmFuY2hlcyBjYW4gYmUgdXNlZCBhcyB0aGUgbWFpbgorZGV2ZWxvcG1lbnQgYnJhbmNoZXMgaW4gZ2VuZXJhbCB3aGlsZSB0aGUgZGV2ZWxvcG1lbnQgZm9yIHRoZSBjdXJyZW50CithbmQgbmV4dCBrZXJuZWxzIGFyZSBmb3VuZCBpbiBmb3ItbGludXMgYW5kIGZvci1uZXh0IGJyYW5jaGVzLAorcmVzcGVjdGl2ZWx5LgorCitJZiB5b3UgYXJlIHVzaW5nIHRoZSBsYXRlc3QgTGludXMgdHJlZSwgaXQnZCBiZSBiZXR0ZXIgdG8gcHVsbCB0aGUKK2Fib3ZlIEdJVCB0cmVlIG9udG8gaXQuICBJZiB5b3UgYXJlIHVzaW5nIHRoZSBvbGRlciBrZXJuZWxzLCBhbiBlYXN5Cit3YXkgdG8gdHJ5IHRoZSBsYXRlc3QgQUxTQSBjb2RlIGlzIHRvIGJ1aWxkIGZyb20gdGhlIHNuYXBzaG90Cit0YXJiYWxsLiAgVGhlcmUgYXJlIGRhaWx5IHRhcmJhbGxzIGFuZCB0aGUgbGF0ZXN0IHNuYXBzaG90IHRhcmJhbGwuCitBbGwgY2FuIGJlIGJ1aWx0IGp1c3QgbGlrZSBub3JtYWwgYWxzYS1kcml2ZXIgcmVsZWFzZSBwYWNrYWdlcywgdGhhdAoraXMsIGluc3RhbGxlZCB2aWEgdGhlIHVzdWFsIHNwZWxsczogY29uZmlndXJlLCBtYWtlIGFuZCBtYWtlCitpbnN0YWxsKC1tb2R1bGVzKS4gIFNlZSBJTlNUQUxMIGluIHRoZSBwYWNrYWdlLiAgVGhlIHNuYXBzaG90IHRhcmJhbGxzCithcmUgZm91bmQgYXQ6CisKKy0gZnRwOi8vZnRwLnN1c2UuY29tL3B1Yi9wZW9wbGUvdGl3YWkvc25hcHNob3QvCisKKworU2VuZGluZyBhIEJ1ZyBSZXBvcnQKK35+fn5+fn5+fn5+fn5+fn5+fn5+CitJZiBhbnkgbW9kZWwgb3IgbW9kdWxlIG9wdGlvbnMgZG9uJ3Qgd29yayBmb3IgeW91ciBkZXZpY2UsIGl0J3MgdGltZQordG8gc2VuZCBhIGJ1ZyByZXBvcnQgdG8gdGhlIGRldmVsb3BlcnMuICBHaXZlIHRoZSBmb2xsb3dpbmcgaW4geW91cgorYnVnIHJlcG9ydDoKKworLSBIYXJkd2FyZSB2ZW5kb3IsIHByb2R1Y3QgYW5kIG1vZGVsIG5hbWVzCistIEtlcm5lbCB2ZXJzaW9uIChhbmQgQUxTQS1kcml2ZXIgdmVyc2lvbiBpZiB5b3UgYnVpbHQgZXh0ZXJuYWxseSkKKy0gYGFsc2EtaW5mby5zaGAgb3V0cHV0OyBydW4gd2l0aCBgLS1uby11cGxvYWRgIG9wdGlvbi4gIFNlZSB0aGUKKyAgc2VjdGlvbiBiZWxvdyBhYm91dCBhbHNhLWluZm8KKworSWYgaXQncyBhIHJlZ3Jlc3Npb24sIGF0IGJlc3QsIHNlbmQgYWxzYS1pbmZvIG91dHB1dHMgb2YgYm90aCB3b3JraW5nCithbmQgbm9uLXdvcmtpbmcga2VybmVscy4gIFRoaXMgaXMgcmVhbGx5IGhlbHBmdWwgYmVjYXVzZSB3ZSBjYW4KK2NvbXBhcmUgdGhlIGNvZGVjIHJlZ2lzdGVycyBkaXJlY3RseS4KKworU2VuZCBhIGJ1ZyByZXBvcnQgZWl0aGVyIHRoZSBmb2xsb3dpbmdzOgorCitrZXJuZWwtYnVnemlsbGE6OgorICBodHRwczovL2J1Z3ppbGxhLmtlcm5lbC5vcmcvCithbHNhLWRldmVsIE1MOjoKKyAgYWxzYS1kZXZlbEBhbHNhLXByb2plY3Qub3JnCisKKworREVCVUcgVE9PTFMKKy0tLS0tLS0tLS0tCisKK1RoaXMgc2VjdGlvbiBkZXNjcmliZXMgc29tZSB0b29scyBhdmFpbGFibGUgZm9yIGRlYnVnZ2luZyBIRC1hdWRpbworcHJvYmxlbXMuCisKK2Fsc2EtaW5mbworfn5+fn5+fn5+CitUaGUgc2NyaXB0IGBhbHNhLWluZm8uc2hgIGlzIGEgdmVyeSB1c2VmdWwgdG9vbCB0byBnYXRoZXIgdGhlIGF1ZGlvCitkZXZpY2UgaW5mb3JtYXRpb24uICBZb3UgY2FuIGZldGNoIHRoZSBsYXRlc3QgdmVyc2lvbiBmcm9tOgorCistIGh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZy9hbHNhLWluZm8uc2gKKworUnVuIHRoaXMgc2NyaXB0IGFzIHJvb3QsIGFuZCBpdCB3aWxsIGdhdGhlciB0aGUgaW1wb3J0YW50IGluZm9ybWF0aW9uCitzdWNoIGFzIHRoZSBtb2R1bGUgbGlzdHMsIG1vZHVsZSBwYXJhbWV0ZXJzLCBwcm9jIGZpbGUgY29udGVudHMKK2luY2x1ZGluZyB0aGUgY29kZWMgcHJvYyBmaWxlcywgbWl4ZXIgb3V0cHV0cyBhbmQgdGhlIGNvbnRyb2wKK2VsZW1lbnRzLiAgQXMgZGVmYXVsdCwgaXQgd2lsbCBzdG9yZSB0aGUgaW5mb3JtYXRpb24gb250byBhIHdlYiBzZXJ2ZXIKK29uIGFsc2EtcHJvamVjdC5vcmcuICBCdXQsIGlmIHlvdSBzZW5kIGEgYnVnIHJlcG9ydCwgaXQnZCBiZSBiZXR0ZXIgdG8KK3J1biB3aXRoIGAtLW5vLXVwbG9hZGAgb3B0aW9uLCBhbmQgYXR0YWNoIHRoZSBnZW5lcmF0ZWQgZmlsZS4KKworVGhlcmUgYXJlIHNvbWUgb3RoZXIgdXNlZnVsIG9wdGlvbnMuICBTZWUgYC0taGVscGAgb3B0aW9uIG91dHB1dCBmb3IKK2RldGFpbHMuCisKK1doZW4gYSBwcm9iZSBlcnJvciBvY2N1cnMgb3Igd2hlbiB0aGUgZHJpdmVyIG9idmlvdXNseSBhc3NpZ25zIGEKK21pc21hdGNoZWQgbW9kZWwsIGl0J2QgYmUgaGVscGZ1bCB0byBsb2FkIHRoZSBkcml2ZXIgd2l0aAorYHByb2JlX29ubHk9MWAgb3B0aW9uIChhdCBiZXN0IGFmdGVyIHRoZSBjb2xkIHJlYm9vdCkgYW5kIHJ1bgorYWxzYS1pbmZvIGF0IHRoaXMgc3RhdGUuICBXaXRoIHRoaXMgb3B0aW9uLCB0aGUgZHJpdmVyIHdvbid0IGNvbmZpZ3VyZQordGhlIG1peGVyIGFuZCBQQ00gYnV0IGp1c3QgdHJpZXMgdG8gcHJvYmUgdGhlIGNvZGVjIHNsb3QuICBBZnRlcgorcHJvYmluZywgdGhlIHByb2MgZmlsZSBpcyBhdmFpbGFibGUsIHNvIHlvdSBjYW4gZ2V0IHRoZSByYXcgY29kZWMKK2luZm9ybWF0aW9uIGJlZm9yZSBtb2RpZmllZCBieSB0aGUgZHJpdmVyLiAgT2YgY291cnNlLCB0aGUgZHJpdmVyCitpc24ndCB1c2FibGUgd2l0aCBgcHJvYmVfb25seT0xYC4gIEJ1dCB5b3UgY2FuIGNvbnRpbnVlIHRoZQorY29uZmlndXJhdGlvbiB2aWEgaHdkZXAgc3lzZnMgZmlsZSBpZiBoZGEtcmVjb25maWcgb3B0aW9uIGlzIGVuYWJsZWQuCitVc2luZyBgcHJvYmVfb25seWAgbWFzayAyIHNraXBzIHRoZSByZXNldCBvZiBIREEgY29kZWNzICh1c2UKK2Bwcm9iZV9vbmx5PTNgIGFzIG1vZHVsZSBvcHRpb24pLiBUaGUgaHdkZXAgaW50ZXJmYWNlIGNhbiBiZSB1c2VkCit0byBkZXRlcm1pbmUgdGhlIEJJT1MgY29kZWMgaW5pdGlhbGl6YXRpb24uCisKKworaGRhLXZlcmIKK35+fn5+fn5+CitoZGEtdmVyYiBpcyBhIHRpbnkgcHJvZ3JhbSB0aGF0IGFsbG93cyB5b3UgdG8gYWNjZXNzIHRoZSBIRC1hdWRpbworY29kZWMgZGlyZWN0bHkuICBZb3UgY2FuIGV4ZWN1dGUgYSByYXcgSEQtYXVkaW8gY29kZWMgdmVyYiB3aXRoIHRoaXMuCitUaGlzIHByb2dyYW0gYWNjZXNzZXMgdGhlIGh3ZGVwIGRldmljZSwgdGh1cyB5b3UgbmVlZCB0byBlbmFibGUgdGhlCitrZXJuZWwgY29uZmlnIGBDT05GSUdfU05EX0hEQV9IV0RFUD15YCBiZWZvcmVoYW5kLgorCitUaGUgaGRhLXZlcmIgcHJvZ3JhbSB0YWtlcyBmb3VyIGFyZ3VtZW50czogdGhlIGh3ZGVwIGRldmljZSBmaWxlLCB0aGUKK3dpZGdldCBOSUQsIHRoZSB2ZXJiIGFuZCB0aGUgcGFyYW1ldGVyLiAgV2hlbiB5b3UgYWNjZXNzIHRvIHRoZSBjb2RlYworb24gdGhlIHNsb3QgMiBvZiB0aGUgY2FyZCAwLCBwYXNzIC9kZXYvc25kL2h3QzBEMiB0byB0aGUgZmlyc3QKK2FyZ3VtZW50LCB0eXBpY2FsbHkuICAoSG93ZXZlciwgdGhlIHJlYWwgcGF0aCBuYW1lIGRlcGVuZHMgb24gdGhlCitzeXN0ZW0uKQorCitUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyB0aGUgd2lkZ2V0IG51bWJlci1pZCB0byBhY2Nlc3MuICBUaGUgdGhpcmQKK3BhcmFtZXRlciBjYW4gYmUgZWl0aGVyIGEgaGV4L2RpZ2l0IG51bWJlciBvciBhIHN0cmluZyBjb3JyZXNwb25kaW5nCit0byBhIHZlcmIuICBTaW1pbGFybHksIHRoZSBsYXN0IHBhcmFtZXRlciBpcyB0aGUgdmFsdWUgdG8gd3JpdGUsIG9yCitjYW4gYmUgYSBzdHJpbmcgZm9yIHRoZSBwYXJhbWV0ZXIgdHlwZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICUgaGRhLXZlcmIgL2Rldi9zbmQvaHdDMEQwIDB4MTIgMHg3MDEgMgorICBuaWQgPSAweDEyLCB2ZXJiID0gMHg3MDEsIHBhcmFtID0gMHgyCisgIHZhbHVlID0gMHgwCisKKyAgJSBoZGEtdmVyYiAvZGV2L3NuZC9od0MwRDAgMHgwIFBBUkFNRVRFUlMgVkVORE9SX0lECisgIG5pZCA9IDB4MCwgdmVyYiA9IDB4ZjAwLCBwYXJhbSA9IDB4MAorICB2YWx1ZSA9IDB4MTBlYzAyNjIKKworICAlIGhkYS12ZXJiIC9kZXYvc25kL2h3QzBEMCAyIHNldF9hIDB4YjA4MAorICBuaWQgPSAweDIsIHZlcmIgPSAweDMwMCwgcGFyYW0gPSAweGIwODAKKyAgdmFsdWUgPSAweDAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbHRob3VnaCB5b3UgY2FuIGlzc3VlIGFueSB2ZXJicyB3aXRoIHRoaXMgcHJvZ3JhbSwgdGhlIGRyaXZlciBzdGF0ZQord29uJ3QgYmUgYWx3YXlzIHVwZGF0ZWQuICBGb3IgZXhhbXBsZSwgdGhlIHZvbHVtZSB2YWx1ZXMgYXJlIHVzdWFsbHkKK2NhY2hlZCBpbiB0aGUgZHJpdmVyLCBhbmQgdGh1cyBjaGFuZ2luZyB0aGUgd2lkZ2V0IGFtcCB2YWx1ZSBkaXJlY3RseQordmlhIGhkYS12ZXJiIHdvbid0IGNoYW5nZSB0aGUgbWl4ZXIgdmFsdWUuCisKK1RoZSBoZGEtdmVyYiBwcm9ncmFtIGlzIGluY2x1ZGVkIG5vdyBpbiBhbHNhLXRvb2xzOgorCistIGdpdDovL2dpdC5hbHNhLXByb2plY3Qub3JnL2Fsc2EtdG9vbHMuZ2l0CisKK0Fsc28sIHRoZSBvbGQgc3RhbmQtYWxvbmUgcGFja2FnZSBpcyBmb3VuZCBpbiB0aGUgZnRwIGRpcmVjdG9yeToKKworLSBmdHA6Ly9mdHAuc3VzZS5jb20vcHViL3Blb3BsZS90aXdhaS9taXNjLworCitBbHNvIGEgZ2l0IHJlcG9zaXRvcnkgaXMgYXZhaWxhYmxlOgorCistIGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90aXdhaS9oZGEtdmVyYi5naXQKKworU2VlIFJFQURNRSBmaWxlIGluIHRoZSB0YXJiYWxsIGZvciBtb3JlIGRldGFpbHMgYWJvdXQgaGRhLXZlcmIKK3Byb2dyYW0uCisKKworaGRhLWFuYWx5emVyCit+fn5+fn5+fn5+fn4KK2hkYS1hbmFseXplciBwcm92aWRlcyBhIGdyYXBoaWNhbCBpbnRlcmZhY2UgdG8gYWNjZXNzIHRoZSByYXcgSEQtYXVkaW8KK2NvbnRyb2wsIGJhc2VkIG9uIHB5R1RLMiBiaW5kaW5nLiAgSXQncyBhIG1vcmUgcG93ZXJmdWwgdmVyc2lvbiBvZgoraGRhLXZlcmIuICBUaGUgcHJvZ3JhbSBnaXZlcyB5b3UgYW4gZWFzeS10by11c2UgR1VJIHN0dWZmIGZvciBzaG93aW5nCit0aGUgd2lkZ2V0IGluZm9ybWF0aW9uIGFuZCBhZGp1c3RpbmcgdGhlIGFtcCB2YWx1ZXMsIGFzIHdlbGwgYXMgdGhlCitwcm9jLWNvbXBhdGlibGUgb3V0cHV0LgorCitUaGUgaGRhLWFuYWx5emVyOgorCistIGh0dHA6Ly9naXQuYWxzYS1wcm9qZWN0Lm9yZy8/cD1hbHNhLmdpdDthPXRyZWU7Zj1oZGEtYW5hbHl6ZXIKKworaXMgYSBwYXJ0IG9mIGFsc2EuZ2l0IHJlcG9zaXRvcnkgaW4gYWxzYS1wcm9qZWN0Lm9yZzoKKworLSBnaXQ6Ly9naXQuYWxzYS1wcm9qZWN0Lm9yZy9hbHNhLmdpdAorCitDb2RlY2dyYXBoCit+fn5+fn5+fn5+CitDb2RlY2dyYXBoIGlzIGEgdXRpbGl0eSBwcm9ncmFtIHRvIGdlbmVyYXRlIGEgZ3JhcGggYW5kIHZpc3VhbGl6ZXMgdGhlCitjb2RlYy1ub2RlIGNvbm5lY3Rpb24gb2YgYSBjb2RlYyBjaGlwLiAgSXQncyBlc3BlY2lhbGx5IHVzZWZ1bCB3aGVuCit5b3UgYW5hbHl6ZSBvciBkZWJ1ZyBhIGNvZGVjIHdpdGhvdXQgYSBwcm9wZXIgZGF0YXNoZWV0LiAgVGhlIHByb2dyYW0KK3BhcnNlcyB0aGUgZ2l2ZW4gY29kZWMgcHJvYyBmaWxlIGFuZCBjb252ZXJ0cyB0byBTVkcgdmlhIGdyYXBoaXoKK3Byb2dyYW0uCisKK1RoZSB0YXJiYWxsIGFuZCBHSVQgdHJlZXMgYXJlIGZvdW5kIGluIHRoZSB3ZWIgcGFnZSBhdDoKKworLSBodHRwOi8vaGVsbGxhYnMub3JnL2NvZGVjZ3JhcGgvCisKKworaGRhLWVtdQorfn5+fn5+fgoraGRhLWVtdSBpcyBhbiBIRC1hdWRpbyBlbXVsYXRvci4gIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcyBwcm9ncmFtIGlzCit0byBkZWJ1ZyBhbiBIRC1hdWRpbyBjb2RlYyB3aXRob3V0IHRoZSByZWFsIGhhcmR3YXJlLiAgVGh1cywgaXQKK2RvZXNuJ3QgZW11bGF0ZSB0aGUgYmVoYXZpb3Igd2l0aCB0aGUgcmVhbCBhdWRpbyBJL08sIGJ1dCBpdCBqdXN0CitkdW1wcyB0aGUgY29kZWMgcmVnaXN0ZXIgY2hhbmdlcyBhbmQgdGhlIEFMU0EtZHJpdmVyIGludGVybmFsIGNoYW5nZXMKK2F0IHByb2JpbmcgYW5kIG9wZXJhdGluZyB0aGUgSEQtYXVkaW8gZHJpdmVyLgorCitUaGUgcHJvZ3JhbSByZXF1aXJlcyBhIGNvZGVjIHByb2MtZmlsZSB0byBzaW11bGF0ZS4gIEdldCBhIHByb2MgZmlsZQorZm9yIHRoZSB0YXJnZXQgY29kZWMgYmVmb3JlaGFuZCwgb3IgcGljayB1cCBhbiBleGFtcGxlIGNvZGVjIGZyb20gdGhlCitjb2RlYyBwcm9jIGNvbGxlY3Rpb25zIGluIHRoZSB0YXJiYWxsLiAgVGhlbiwgcnVuIHRoZSBwcm9ncmFtIHdpdGggdGhlCitwcm9jIGZpbGUsIGFuZCB0aGUgaGRhLWVtdSBwcm9ncmFtIHdpbGwgc3RhcnQgcGFyc2luZyB0aGUgY29kZWMgZmlsZQorYW5kIHNpbXVsYXRlcyB0aGUgSEQtYXVkaW8gZHJpdmVyOgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgJSBoZGEtZW11IGNvZGVjcy9zdGFjOTIwMC1kZWxsLWQ4MjAtbGFwdG9wCisgICMgUGFyc2luZy4uCisgIGhkYV9jb2RlYzogVW5rbm93biBtb2RlbCBmb3IgU1RBQzkyMDAsIHVzaW5nIEJJT1MgZGVmYXVsdHMKKyAgaGRhX2NvZGVjOiBwaW4gbmlkIDA4IGJpb3MgcGluIGNvbmZpZyA0MGMwMDNmYQorICAuLi4uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHByb2dyYW0gZ2l2ZXMgeW91IG9ubHkgYSB2ZXJ5IGR1bWIgY29tbWFuZC1saW5lIGludGVyZmFjZS4gIFlvdQorY2FuIGdldCBhIHByb2MtZmlsZSBkdW1wIGF0IHRoZSBjdXJyZW50IHN0YXRlLCBnZXQgYSBsaXN0IG9mIGNvbnRyb2wKKyhtaXhlcikgZWxlbWVudHMsIHNldC9nZXQgdGhlIGNvbnRyb2wgZWxlbWVudCB2YWx1ZSwgc2ltdWxhdGUgdGhlIFBDTQorb3BlcmF0aW9uLCB0aGUgamFjayBwbHVnZ2luZyBzaW11bGF0aW9uLCBldGMuCisKK1RoZSBwYWNrYWdlIGlzIGZvdW5kIGluOgorCistIGZ0cDovL2Z0cC5zdXNlLmNvbS9wdWIvcGVvcGxlL3Rpd2FpL21pc2MvCisKK0EgZ2l0IHJlcG9zaXRvcnkgaXMgYXZhaWxhYmxlOgorCistIGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90aXdhaS9oZGEtZW11LmdpdAorCitTZWUgUkVBRE1FIGZpbGUgaW4gdGhlIHRhcmJhbGwgZm9yIG1vcmUgZGV0YWlscyBhYm91dCBoZGEtZW11Citwcm9ncmFtLgorCisKK2hkYS1qYWNrLXJldGFzaworfn5+fn5+fn5+fn5+fn5+CitoZGEtamFjay1yZXRhc2sgaXMgYSB1c2VyLWZyaWVuZGx5IEdVSSBwcm9ncmFtIHRvIG1hbmlwdWxhdGUgdGhlCitIRC1hdWRpbyBwaW4gY29udHJvbCBmb3IgamFjayByZXRhc2tpbmcuICBJZiB5b3UgaGF2ZSBhIHByb2JsZW0gYWJvdXQKK3RoZSBqYWNrIGFzc2lnbm1lbnQsIHRyeSB0aGlzIHByb2dyYW0gYW5kIGNoZWNrIHdoZXRoZXIgeW91IGNhbiBnZXQKK3VzZWZ1bCByZXN1bHRzLiAgT25jZSB3aGVuIHlvdSBmaWd1cmUgb3V0IHRoZSBwcm9wZXIgcGluIGFzc2lnbm1lbnQsCitpdCBjYW4gYmUgZml4ZWQgZWl0aGVyIGluIHRoZSBkcml2ZXIgY29kZSBzdGF0aWNhbGx5IG9yIHZpYSBwYXNzaW5nIGEKK2Zpcm13YXJlIHBhdGNoIGZpbGUgKHNlZSAiRWFybHkgUGF0Y2hpbmciIHNlY3Rpb24pLgorCitUaGUgcHJvZ3JhbSBpcyBpbmNsdWRlZCBpbiBhbHNhLXRvb2xzIG5vdzoKKworLSBnaXQ6Ly9naXQuYWxzYS1wcm9qZWN0Lm9yZy9hbHNhLXRvb2xzLmdpdAorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvSmFjay1Db250cm9scy50eHQgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvSmFjay1Db250cm9scy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUxYzVlMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9KYWNrLUNvbnRyb2xzLnR4dApAQCAtMCwwICsxLDQzIEBACitXaHkgd2UgbmVlZCBKYWNrIGtjb250cm9scworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQUxTQSB1c2VzIGtjb250cm9scyB0byBleHBvcnQgYXVkaW8gY29udHJvbHMoc3dpdGNoLCB2b2x1bWUsIE11eCwgLi4uKQordG8gdXNlciBzcGFjZS4gVGhpcyBtZWFucyB1c2Vyc3BhY2UgYXBwbGljYXRpb25zIGxpa2UgcHVsc2VhdWRpbyBjYW4KK3N3aXRjaCBvZmYgaGVhZHBob25lcyBhbmQgc3dpdGNoIG9uIHNwZWFrZXJzIHdoZW4gbm8gaGVhZHBob25lcyBhcmUKK3BsdWdlZCBpbi4KKworVGhlIG9sZCBBTFNBIGphY2sgY29kZSBvbmx5IGNyZWF0ZWQgaW5wdXQgZGV2aWNlcyBmb3IgZWFjaCByZWdpc3RlcmVkCitqYWNrLiBUaGVzZSBqYWNrIGlucHV0IGRldmljZXMgYXJlIG5vdCByZWFkYWJsZSBieSB1c2Vyc3BhY2UgZGV2aWNlcwordGhhdCBydW4gYXMgbm9uIHJvb3QuCisKK1RoZSBuZXcgamFjayBjb2RlIGNyZWF0ZXMgZW1iZWRkZWQgamFjayBrY29udHJvbHMgZm9yIGVhY2ggamFjayB0aGF0CitjYW4gYmUgcmVhZCBieSBhbnkgcHJvY2Vzcy4KKworVGhpcyBjYW4gYmUgY29tYmluZWQgd2l0aCBVQ00gdG8gYWxsb3cgdXNlcnNwYWNlIHRvIHJvdXRlIGF1ZGlvIG1vcmUKK2ludGVsbGlnZW50bHkgYmFzZWQgb24gamFjayBpbnNlcnRpb24gb3IgcmVtb3ZhbCBldmVudHMuCisKK0phY2sgS2NvbnRyb2wgSW50ZXJuYWxzCis9PT09PT09PT09PT09PT09PT09PT09PQorCitFYWNoIGphY2sgd2lsbCBoYXZlIGEga2NvbnRyb2wgbGlzdCwgc28gdGhhdCB3ZSBjYW4gY3JlYXRlIGEga2NvbnRyb2wKK2FuZCBhdHRhY2ggaXQgdG8gdGhlIGphY2ssIGF0IGphY2sgY3JlYXRpb24gc3RhZ2UuIFdlIGNhbiBhbHNvIGFkZCBhCitrY29udHJvbCB0byBhbiBleGlzdGluZyBqYWNrLCBhdCBhbnl0aW1lIHdoZW4gcmVxdWlyZWQuCisKK1Rob3NlIGtjb250cm9scyB3aWxsIGJlIGZyZWVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgSmFjayBpcyBmcmVlZC4KKworSG93IHRvIHVzZSBqYWNrIGtjb250cm9scworPT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbiBvcmRlciB0byBrZWVwIGNvbXBhdGliaWxpdHksIHNuZF9qYWNrX25ldygpIGhhcyBiZWVuIG1vZGlmaWVkIGJ5CithZGRpbmcgdHdvIHBhcmFtcyA6LQorCisgLSBAaW5pdGlhbF9rY3RsOiBpZiB0cnVlLCBjcmVhdGUgYSBrY29udHJvbCBhbmQgYWRkIGl0IHRvIHRoZSBqYWNrCisJbGlzdC4KKyAtIEBwaGFudG9tX2phY2s6IERvbid0IGNyZWF0ZSBhIGlucHV0IGRldmljZSBmb3IgcGhhbnRvbSBqYWNrcy4KKworSERBIGphY2tzIGNhbiBzZXQgcGhhbnRvbV9qYWNrIHRvIHRydWUgaW4gb3JkZXIgdG8gY3JlYXRlIGEgcGhhbnRvbQoramFjayBhbmQgc2V0IGluaXRpYWxfa2N0bCB0byB0cnVlIHRvIGNyZWF0ZSBhbiBpbml0aWFsIGtjb250cm9sIHdpdGgKK3RoZSBjb3JyZWN0IGlkLgorCitBU29DIGphY2tzIHNob3VsZCBzZXQgaW5pdGlhbF9rY3RsIGFzIGZhbHNlLiBUaGUgcGluIG5hbWUgd2lsbCBiZQorYXNzaWduZWQgYXMgdGhlIGphY2sga2NvbnRyb2wgbmFtZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9Kb3lzdGljay50eHQgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvSm95c3RpY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjZGE0MWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvSm95c3RpY2sudHh0CkBAIC0wLDAgKzEsODYgQEAKK0FuYWxvZyBKb3lzdGljayBTdXBwb3J0IG9uIEFMU0EgRHJpdmVycworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICAgICAgICAgICAgICAgICAgICAgIE9jdC4gMTQsIDIwMDMKKyAgICAgICAgICAgVGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRlPgorCitHZW5lcmFsCistLS0tLS0tCisKK0ZpcnN0IG9mIGFsbCwgeW91IG5lZWQgdG8gZW5hYmxlIEdBTUVQT1JUIHN1cHBvcnQgb24gTGludXgga2VybmVsIGZvcgordXNpbmcgYSBqb3lzdGljayB3aXRoIHRoZSBBTFNBIGRyaXZlci4gIEZvciB0aGUgZGV0YWlscyBvZiBnYW1lcG9ydAorc3VwcG9ydCwgcmVmZXIgdG8gRG9jdW1lbnRhdGlvbi9pbnB1dC9qb3lzdGljay50eHQuCisKK1RoZSBqb3lzdGljayBzdXBwb3J0IG9mIEFMU0EgZHJpdmVycyBpcyBkaWZmZXJlbnQgYmV0d2VlbiBJU0EgYW5kIFBDSQorY2FyZHMuICBJbiB0aGUgY2FzZSBvZiBJU0EgKFBuUCkgY2FyZHMsIGl0J3MgdXN1YWxseSBoYW5kbGVkIGJ5IHRoZQoraW5kZXBlbmRlbnQgbW9kdWxlIChuczU1OCkuICBNZWFud2hpbGUsIHRoZSBBTFNBIFBDSSBkcml2ZXJzIGhhdmUgdGhlCitidWlsdC1pbiBnYW1lcG9ydCBzdXBwb3J0LiAgSGVuY2UsIHdoZW4gdGhlIEFMU0EgUENJIGRyaXZlciBpcyBidWlsdAoraW4gdGhlIGtlcm5lbCwgQ09ORklHX0dBTUVQT1JUIG11c3QgYmUgJ3knLCB0b28uICBPdGhlcndpc2UsIHRoZQorZ2FtZXBvcnQgc3VwcG9ydCBvbiB0aGF0IGNhcmQgd2lsbCBiZSAoc2lsZW50bHkpIGRpc2FibGVkLgorCitTb21lIGFkYXB0ZXIgbW9kdWxlcyBwcm9iZSB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbiBvZiB0aGUgZGV2aWNlIGF0Cit0aGUgbG9hZCB0aW1lLiAgSXQnZCBiZSBzYWZlciB0byBwbHVnIGluIHRoZSBqb3lzdGljayBkZXZpY2UgYmVmb3JlCitsb2FkaW5nIHRoZSBtb2R1bGUuCisKKworUENJIENhcmRzCistLS0tLS0tLS0KKworRm9yIFBDSSBjYXJkcywgdGhlIGpveXN0aWNrIGlzIGVuYWJsZWQgd2hlbiB0aGUgYXBwcm9wcmlhdGUgbW9kdWxlCitvcHRpb24gaXMgc3BlY2lmaWVkLiAgU29tZSBkcml2ZXJzIGRvbid0IG5lZWQgb3B0aW9ucywgYW5kIHRoZQoram95c3RpY2sgc3VwcG9ydCBpcyBhbHdheXMgZW5hYmxlZC4gIEluIHRoZSBmb3JtZXIgQUxTQSB2ZXJzaW9uLCB0aGVyZQord2FzIGEgZHluYW1pYyBjb250cm9sIEFQSSBmb3IgdGhlIGpveXN0aWNrIGFjdGl2YXRpb24uICBJdCB3YXMKK2NoYW5nZWQsIGhvd2V2ZXIsIHRvIHRoZSBzdGF0aWMgbW9kdWxlIG9wdGlvbnMgYmVjYXVzZSBvZiB0aGUgc3lzdGVtCitzdGFiaWxpdHkgYW5kIHRoZSByZXNvdXJjZSBtYW5hZ2VtZW50LgorCitUaGUgZm9sbG93aW5nIFBDSSBkcml2ZXJzIHN1cHBvcnQgdGhlIGpveXN0aWNrIG5hdGl2ZWx5LgorCisgICAgRHJpdmVyCU1vZHVsZSBPcHRpb24JQXZhaWxhYmxlIFZhbHVlcworICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIGFsczQwMDAJam95c3RpY2tfcG9ydAkwID0gZGlzYWJsZSAoZGVmYXVsdCksIDEgPSBhdXRvLWRldGVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsOiBhbnkgYWRkcmVzcyAoZS5nLiAweDIwMCkKKyAgICBhdTg4eDAJTi9BCQlOL0EKKyAgICBhemYzMzI4CWpveXN0aWNrCTAgPSBkaXNhYmxlLCAxID0gZW5hYmxlLCAtMSA9IGF1dG8gKGRlZmF1bHQpCisgICAgZW5zMTM3MAlqb3lzdGljawkwID0gZGlzYWJsZSAoZGVmYXVsdCksIDEgPSBlbmFibGUKKyAgICBlbnMxMzcxCWpveXN0aWNrX3BvcnQJMCA9IGRpc2FibGUgKGRlZmF1bHQpLCAxID0gYXV0by1kZXRlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbDogMHgyMDAsIDB4MjA4LCAweDIxMCwgMHgyMTgKKyAgICBjbWlwY2kJam95c3RpY2tfcG9ydAkwID0gZGlzYWJsZSAoZGVmYXVsdCksIDEgPSBhdXRvLWRldGVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsOiBhbnkgYWRkcmVzcyAoZS5nLiAweDIwMCkKKyAgICBjczQyODEJTi9BCQlOL0EKKyAgICBjczQ2eHgJTi9BCQlOL0EKKyAgICBlczE5MzgJTi9BCQlOL0EKKyAgICBlczE5NjgJam95c3RpY2sJMCA9IGRpc2FibGUgKGRlZmF1bHQpLCAxID0gZW5hYmxlCisgICAgc29uaWN2aWJlcwlOL0EJCU4vQQorICAgIHRyaWRlbnQJTi9BCQlOL0EKKyAgICB2aWE4Mnh4KCoxKQlqb3lzdGljawkwID0gZGlzYWJsZSAoZGVmYXVsdCksIDEgPSBlbmFibGUKKyAgICB5bWZwY2kJam95c3RpY2tfcG9ydAkwID0gZGlzYWJsZSAoZGVmYXVsdCksIDEgPSBhdXRvLWRldGVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsOiAweDIwMSwgMHgyMDIsIDB4MjA0LCAweDIwNSgqMikKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICoxKSAgVklBNjg2QS9CIG9ubHkKKyAgICAqMikgIFdpdGggWU1GNzQ0Lzc1NCBjaGlwcywgdGhlIHBvcnQgYWRkcmVzcyBjYW4gYmUgY2hvc2VuIGFyYml0cmFyaWx5CisKK1RoZSBmb2xsb3dpbmcgZHJpdmVycyBkb24ndCBzdXBwb3J0IGdhbWVwb3J0IG5hdGl2ZWx5LCBidXQgdGhlcmUgYXJlCithZGRpdGlvbmFsIG1vZHVsZXMuICBMb2FkIHRoZSBjb3JyZXNwb25kaW5nIG1vZHVsZSB0byBhZGQgdGhlIGdhbWVwb3J0CitzdXBwb3J0LgorCisgICAgRHJpdmVyCUFkZGl0aW9uYWwgTW9kdWxlCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBlbXUxMGsxCWVtdTEwazEtZ3AKKyAgICBmbTgwMQlmbTgwMS1ncAorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05vdGU6IHRoZSAicGNpZ2FtZSIgYW5kICJjczQ2MXgiIG1vZHVsZXMgYXJlIGZvciB0aGUgT1NTIGRyaXZlcnMgb25seS4KKyAgICAgIFRoZXNlIEFMU0EgZHJpdmVycyAoY3M0Nnh4LCB0cmlkZW50IGFuZCBhdTg4eDApIGhhdmUgdGhlCisgICAgICBidWlsdC1pbiBnYW1lcG9ydCBzdXBwb3J0LgorCitBcyBtZW50aW9uZWQgYWJvdmUsIEFMU0EgUENJIGRyaXZlcnMgaGF2ZSB0aGUgYnVpbHQtaW4gZ2FtZXBvcnQKK3N1cHBvcnQsIHNvIHlvdSBkb24ndCBoYXZlIHRvIGxvYWQgbnM1NTggbW9kdWxlLiAgSnVzdCBsb2FkICJqb3lkZXYiCithbmQgdGhlIGFwcHJvcHJpYXRlIGFkYXB0ZXIgbW9kdWxlIChlLmcuICJhbmFsb2ciKS4KKworCitJU0EgQ2FyZHMKKy0tLS0tLS0tLQorCitBTFNBIElTQSBkcml2ZXJzIGRvbid0IGhhdmUgdGhlIGJ1aWx0LWluIGdhbWVwb3J0IHN1cHBvcnQuCitJbnN0ZWFkLCB5b3UgbmVlZCB0byBsb2FkICJuczU1OCIgbW9kdWxlIGluIGFkZGl0aW9uIHRvICJqb3lkZXYiIGFuZAordGhlIGFkYXB0ZXIgbW9kdWxlIChlLmcuICJhbmFsb2ciKS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9NSVhBUlQudHh0IGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL01JWEFSVC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVlMzViNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9NSVhBUlQudHh0CkBAIC0wLDAgKzEsMTAwIEBACisgICAgQWxzYSBkcml2ZXIgZm9yIERpZ2lncmFtIG1pWGFydDggYW5kIG1pWGFydDhBRVMvRUJVIHNvdW5kY2FyZHMKKwkgICAgRGlnaWdyYW0gPGFsc2FAZGlnaWdyYW0uY29tPgorCisKK0dFTkVSQUwKKz09PT09PT0KKworVGhlIG1pWGFydDggaXMgYSBtdWx0aWNoYW5uZWwgYXVkaW8gcHJvY2Vzc2luZyBhbmQgbWl4aW5nIHNvdW5kY2FyZAordGhhdCBoYXMgNCBzdGVyZW8gYXVkaW8gaW5wdXRzIGFuZCA0IHN0ZXJlbyBhdWRpbyBvdXRwdXRzLgorVGhlIG1pWGFydDhBRVMvRUJVIGlzIHRoZSBzYW1lIHdpdGggYSBhZGQtb24gY2FyZCB0aGF0IG9mZmVycyBmdXJ0aGVyCis0IGRpZ2l0YWwgc3RlcmVvIGF1ZGlvIGlucHV0cyBhbmQgb3V0cHV0cy4KK0Z1cnRoZXJtb3JlIHRoZSBhZGQtb24gY2FyZCBvZmZlcnMgZXh0ZXJuYWwgY2xvY2sgc3luY2hyb25pc2F0aW9uCisoQUVTL0VCVSwgV29yZCBDbG9jaywgVGltZSBDb2RlIGFuZCBWaWRlbyBTeW5jaHJvKQorCitUaGUgbWFpbmJvYXJkIGhhcyBhIFBvd2VyUEMgdGhhdCBvZmZlcnMgb25ib2FyZCBtcGVnIGVuY29kaW5nIGFuZAorZGVjb2RpbmcsIHNhbXBsZXJhdGUgY29udmVyc2lvbnMgYW5kIHZhcmlvdXMgZWZmZWN0cy4KKworVGhlIGRyaXZlciBkb24ndCB3b3JrIHByb3Blcmx5IGF0IGFsbCB1bnRpbCB0aGUgY2VydGFpbiBmaXJtd2FyZXMKK2FyZSBsb2FkZWQsIGkuZS4gbm8gUENNIG5vciBtaXhlciBkZXZpY2VzIHdpbGwgYXBwZWFyLgorVXNlIHRoZSBtaXhhcnRsb2FkZXIgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIGFsc2EtdG9vbHMgcGFja2FnZS4KKworCitWRVJTSU9OIDAuMS4wCis9PT09PT09PT09PT09CisKK09uZSBtaVhhcnQ4IGJvYXJkIHdpbGwgYmUgcmVwcmVzZW50ZWQgYXMgNCBhbHNhIGNhcmRzLCBlYWNoIHdpdGggMQorc3RlcmVvIGFuYWxvZyBjYXB0dXJlICdwY20wYycgYW5kIDEgc3RlcmVvIGFuYWxvZyBwbGF5YmFjayAncGNtMHAnIGRldmljZS4KK1dpdGggYSBtaVhhcnQ4QUVTL0VCVSB0aGVyZSBpcyBpbiBhZGRpdGlvbiAxIHN0ZXJlbyBkaWdpdGFsIGlucHV0CisncGNtMWMnIGFuZCAxIHN0ZXJlbyBkaWdpdGFsIG91dHB1dCAncGNtMXAnIHBlciBjYXJkLgorCitGb3JtYXRzCistLS0tLS0tCitVOCwgUzE2X0xFLCBTMTZfQkUsIFMyNF8zTEUsIFMyNF8zQkUsIEZMT0FUX0xFLCBGTE9BVF9CRQorU2FtcGxlIHJhdGVzIDogODAwMCAtIDQ4MDAwIEh6IGNvbnRpbnVvdXNseQorCitQbGF5YmFjaworLS0tLS0tLS0KK0ZvciBpbnN0YW5jZSB0aGUgcGxheWJhY2sgZGV2aWNlcyBhcmUgY29uZmlndXJlZCB0byBoYXZlIG1heC4gNAorc3Vic3RyZWFtcyBwZXJmb3JtaW5nIGhhcmR3YXJlIG1peGluZy4gVGhpcyBjb3VsZCBiZSBjaGFuZ2VkIHRvIGEKK21heGltdW0gb2YgMjQgc3Vic3RyZWFtcyBpZiB3aXNoZWQuCitNb25vIGZpbGVzIHdpbGwgYmUgcGxheWVkIG9uIHRoZSBsZWZ0IGFuZCByaWdodCBjaGFubmVsLiBFYWNoIGNoYW5uZWwKK2NhbiBiZSBtdXRlZCBmb3IgZWFjaCBzdHJlYW0gdG8gdXNlIDggYW5hbG9nL2RpZ2l0YWwgb3V0cHV0cyBzZXBhcmF0ZWx5LgorCitDYXB0dXJlCistLS0tLS0tCitUaGVyZSBpcyBvbmUgc3Vic3RyZWFtIHBlciBjYXB0dXJlIGRldmljZS4gRm9yIGluc3RhbmNlIG9ubHkgc3RlcmVvCitmb3JtYXRzIGFyZSBzdXBwb3J0ZWQuCisKK01peGVyCistLS0tLQorPE1hc3Rlcj4gYW5kIDxNYXN0ZXIgQ2FwdHVyZT4gOiBhbmFsb2cgdm9sdW1lIGNvbnRyb2wgb2YgcGxheWJhY2sgYW5kIGNhcHR1cmUgUENNLgorPFBDTSAwLTM+IGFuZCA8UENNIENhcHR1cmU+IDogZGlnaXRhbCB2b2x1bWUgY29udHJvbCBvZiBlYWNoIGFuYWxvZyBzdWJzdHJlYW0uCis8QUVTIDAtMz4gYW5kIDxBRVMgQ2FwdHVyZT4gOiBkaWdpdGFsIHZvbHVtZSBjb250cm9sIG9mIGVhY2ggQUVTL0VCVSBzdWJzdHJlYW0uCis8TW9uaXRvcmluZz4gOiBMb29wYmFjayBmcm9tICdwY20wYycgdG8gJ3BjbTBwJyB3aXRoIGRpZ2l0YWwgdm9sdW1lCithbmQgbXV0ZSBjb250cm9sLgorCitSZW0gOiBmb3IgYmVzdCBhdWRpbyBxdWFsaXR5IHRyeSB0byBrZWVwIGEgMCBhdHRlbnVhdGlvbiBvbiB0aGUgUENNCithbmQgQUVTIHZvbHVtZSBjb250cm9scyB3aGljaCBpcyBzZXQgYnkgMjE5IGluIHRoZSByYW5nZSBmcm9tIDAgdG8gMjU1CisoYWJvdXQgODYlIHdpdGggYWxzYW1peGVyKQorCisKK05PVCBZRVQgSU1QTEVNRU5URUQKKz09PT09PT09PT09PT09PT09PT0KKworLSBleHRlcm5hbCBjbG9jayBzdXBwb3J0IChBRVMvRUJVLCBXb3JkIENsb2NrLCBUaW1lIENvZGUsIFZpZGVvIFN5bmMpCistIE1QRUcgYXVkaW8gZm9ybWF0cworLSBtb25vIHJlY29yZAorLSBvbi1ib2FyZCBlZmZlY3RzIGFuZCBzYW1wbGVyYXRlIGNvbnZlcnNpb25zCistIGxpbmtlZCBzdHJlYW1zCisKKworRklSTVdBUkUKKz09PT09PT09CisKK1tBcyBvZiAyLjYuMTEsIHRoZSBmaXJtd2FyZSBjYW4gYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkgd2l0aCBob3RwbHVnCisgd2hlbiBDT05GSUdfRldfTE9BREVSIGlzIHNldC4gIFRoZSBtaXhhcnRsb2FkZXIgaXMgbmVjZXNzYXJ5IG9ubHkKKyBmb3Igb2xkZXIgdmVyc2lvbnMgb3Igd2hlbiB5b3UgYnVpbGQgdGhlIGRyaXZlciBpbnRvIGtlcm5lbC5dCisgCitGb3IgbG9hZGluZyB0aGUgZmlybXdhcmUgYXV0b21hdGljYWxseSBhZnRlciB0aGUgbW9kdWxlIGlzIGxvYWRlZCwgdXNlIGEKK2luc3RhbGwgY29tbWFuZC4gIEZvciBleGFtcGxlLCBhZGQgdGhlIGZvbGxvd2luZyBlbnRyeSB0bworL2V0Yy9tb2Rwcm9iZS5kL21peGFydC5jb25mIGZvciBtaVhhcnQgZHJpdmVyOgorCisJaW5zdGFsbCBzbmQtbWl4YXJ0IC9zYmluL21vZHByb2JlIC0tZmlyc3QtdGltZSAtaSBzbmQtbWl4YXJ0ICYmIFwKKwkJCSAgIC91c3IvYmluL21peGFydGxvYWRlcgorKGZvciAyLjIvMi40IGtlcm5lbHMsIGFkZCAicG9zdC1pbnN0YWxsIHNuZC1taXhhcnQgL3Vzci9iaW4vdnhsb2FkZXIiIHRvCisgL2V0Yy9tb2R1bGVzLmNvbmYsIGluc3RlYWQuKQorCitUaGUgZmlybXdhcmUgYmluYXJpZXMgYXJlIGluc3RhbGxlZCBvbiAvdXNyL3NoYXJlL2Fsc2EvZmlybXdhcmUKKyhvciAvdXNyL2xvY2FsL3NoYXJlL2Fsc2EvZmlybXdhcmUsIGRlcGVuZGluZyB0byB0aGUgcHJlZml4IG9wdGlvbiBvZgorY29uZmlndXJlKS4gIFRoZXJlIHdpbGwgYmUgYSBtaVhhcnQuY29uZiBmaWxlLCB3aGljaCBkZWZpbmUgdGhlIGRzcCBpbWFnZQorZmlsZXMuCisKK1RoZSBmaXJtd2FyZSBmaWxlcyBhcmUgY29weXJpZ2h0IGJ5IERpZ2lncmFtIFNBCisKKworQ09QWVJJR0hUCis9PT09PT09PT0KKworQ29weXJpZ2h0IChjKSAyMDAzIERpZ2lncmFtIFNBIDxhbHNhQGRpZ2lncmFtLmNvbT4KK0Rpc3RyaWJ1dGFibGUgdW5kZXIgR1BMLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL09TUy1FbXVsYXRpb24udHh0IGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL09TUy1FbXVsYXRpb24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1MmNhMmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvT1NTLUVtdWxhdGlvbi50eHQKQEAgLTAsMCArMSwzMDUgQEAKKwkJTk9URVMgT04gS0VSTkVMIE9TUy1FTVVMQVRJT04KKwkJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCQlKYW4uIDIyLCAyMDA0ICBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+CisKKworTW9kdWxlcworPT09PT09PQorCitBTFNBIHByb3ZpZGVzIGEgcG93ZXJmdWwgT1NTIGVtdWxhdGlvbiBvbiB0aGUga2VybmVsLgorVGhlIE9TUyBlbXVsYXRpb24gZm9yIFBDTSwgbWl4ZXIgYW5kIHNlcXVlbmNlciBkZXZpY2VzIGlzIGltcGxlbWVudGVkCithcyBhZGQtb24ga2VybmVsIG1vZHVsZXMsIHNuZC1wY20tb3NzLCBzbmQtbWl4ZXItb3NzIGFuZCBzbmQtc2VxLW9zcy4KK1doZW4geW91IG5lZWQgdG8gYWNjZXNzIHRoZSBPU1MgUENNLCBtaXhlciBvciBzZXF1ZW5jZXIgZGV2aWNlcywgdGhlCitjb3JyZXNwb25kaW5nIG1vZHVsZSBoYXMgdG8gYmUgbG9hZGVkLgorCitUaGVzZSBtb2R1bGVzIGFyZSBsb2FkZWQgYXV0b21hdGljYWxseSB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIHNlcnZpY2UKK2lzIGNhbGxlZC4gIFRoZSBhbGlhcyBpcyBkZWZpbmVkIHNvdW5kLXNlcnZpY2UteC15LCB3aGVyZSB4IGFuZCB5IGFyZQordGhlIGNhcmQgbnVtYmVyIGFuZCB0aGUgbWlub3IgdW5pdCBudW1iZXIuICBVc3VhbGx5IHlvdSBkb24ndCBoYXZlIHRvCitkZWZpbmUgdGhlc2UgYWxpYXNlcyBieSB5b3Vyc2VsZi4KKworT25seSBuZWNlc3Nhcnkgc3RlcCBmb3IgYXV0by1sb2FkaW5nIG9mIE9TUyBtb2R1bGVzIGlzIHRvIGRlZmluZSB0aGUKK2NhcmQgYWxpYXMgaW4gL2V0Yy9tb2Rwcm9iZS5kL2Fsc2EuY29uZiwgc3VjaCBhcworCisJYWxpYXMgc291bmQtc2xvdC0wIHNuZC1lbXUxMGsxCisKK0FzIHRoZSBzZWNvbmQgY2FyZCwgZGVmaW5lIHNvdW5kLXNsb3QtMSBhcyB3ZWxsLgorTm90ZSB0aGF0IHlvdSBjYW4ndCB1c2UgdGhlIGFsaWFzZWQgbmFtZSBhcyB0aGUgdGFyZ2V0IG5hbWUgKGkuZS4KKyJhbGlhcyBzb3VuZC1zbG90LTAgc25kLWNhcmQtMCIgZG9lc24ndCB3b3JrIGFueSBtb3JlIGxpa2UgdGhlIG9sZAorbW9kdXRpbHMpLgorCitUaGUgY3VycmVudGx5IGF2YWlsYWJsZSBPU1MgY29uZmlndXJhdGlvbiBpcyBzaG93biBpbgorL3Byb2MvYXNvdW5kL29zcy9zbmRzdGF0LiAgVGhpcyBzaG93cyBpbiB0aGUgc2FtZSBzeW50YXggb2YKKy9kZXYvc25kc3RhdCwgd2hpY2ggaXMgYXZhaWxhYmxlIG9uIHRoZSBjb21tZXJjaWFsIE9TUyBkcml2ZXIuCitPbiBBTFNBLCB5b3UgY2FuIHN5bWxpbmsgL2Rldi9zbmRzdGF0IHRvIHRoaXMgcHJvYyBmaWxlLgorCitQbGVhc2Ugbm90ZSB0aGF0IHRoZSBkZXZpY2VzIGxpc3RlZCBpbiB0aGlzIHByb2MgZmlsZSBhcHBlYXIgb25seQorYWZ0ZXIgdGhlIGNvcnJlc3BvbmRpbmcgT1NTLWVtdWxhdGlvbiBtb2R1bGUgaXMgbG9hZGVkLiAgRG9uJ3Qgd29ycnkKK2V2ZW4gaWYgIk5PVCBFTkFCTEVEIElOIENPTkZJRyIgaXMgc2hvd24gaW4gaXQuCisKKworRGV2aWNlIE1hcHBpbmcKKz09PT09PT09PT09PT09CisKK0FMU0Egc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBPU1MgZGV2aWNlIGZpbGVzOgorCisJUENNOgorCQkvZGV2L2RzcFgKKwkJL2Rldi9hZHNwWAorCisJTWl4ZXI6CisJCS9kZXYvbWl4ZXJYCisKKwlNSURJOgorCQkvZGV2L21pZGkwWAorCQkvZGV2L2FtaWRpMFgKKworCVNlcXVlbmNlcjoKKwkJL2Rldi9zZXF1ZW5jZXIKKwkJL2Rldi9zZXF1ZW5jZXIyIChha2EgL2Rldi9tdXNpYykKKword2hlcmUgWCBpcyB0aGUgY2FyZCBudW1iZXIgZnJvbSAwIHRvIDcuCisKKyhOT1RFOiBTb21lIGRpc3RyaWJ1dGlvbnMgaGF2ZSB0aGUgZGV2aWNlIGZpbGVzIGxpa2UgL2Rldi9taWRpMCBhbmQKKyAgICAgICAvZGV2L21pZGkxLiAgVGhleSBhcmUgTk9UIGZvciBPU1MgYnV0IGZvciB0Y2xtaWRpLCB3aGljaCBpcworICAgICAgIGEgdG90YWxseSBkaWZmZXJlbnQgdGhpbmcuKQorCitVbmxpa2UgdGhlIHJlYWwgT1NTLCBBTFNBIGNhbm5vdCB1c2UgdGhlIGRldmljZSBmaWxlcyBtb3JlIHRoYW4gdGhlCithc3NpZ25lZCBvbmVzLiAgRm9yIGV4YW1wbGUsIHRoZSBmaXJzdCBjYXJkIGNhbm5vdCB1c2UgL2Rldi9kc3AxIG9yCisvZGV2L2RzcDIsIGJ1dCBvbmx5IC9kZXYvZHNwMCBhbmQgL2Rldi9hZHNwMC4KKworQXMgc2VlbiBhYm92ZSwgUENNIGFuZCBNSURJIG1heSBoYXZlIHR3byBkZXZpY2VzLiAgVXN1YWxseSwgdGhlIGZpcnN0CitQQ00gZGV2aWNlIChodzowLDAgaW4gQUxTQSkgaXMgbWFwcGVkIHRvIC9kZXYvZHNwIGFuZCB0aGUgc2Vjb25kYXJ5CitkZXZpY2UgKGh3OjAsMSkgdG8gL2Rldi9hZHNwIChpZiBhdmFpbGFibGUpLiAgRm9yIE1JREksIC9kZXYvbWlkaSBhbmQKKy9kZXYvYW1pZGksIHJlc3BlY3RpdmVseS4KKworWW91IGNhbiBjaGFuZ2UgdGhpcyBkZXZpY2UgbWFwcGluZyB2aWEgdGhlIG1vZHVsZSBvcHRpb25zIG9mCitzbmQtcGNtLW9zcyBhbmQgc25kLXJhd21pZGkuICBJbiB0aGUgY2FzZSBvZiBQQ00sIHRoZSBmb2xsb3dpbmcKK29wdGlvbnMgYXJlIGF2YWlsYWJsZSBmb3Igc25kLXBjbS1vc3M6CisKKwlkc3BfbWFwCQlQQ00gZGV2aWNlIG51bWJlciBhc3NpZ25lZCB0byAvZGV2L2RzcFgKKwkJCShkZWZhdWx0ID0gMCkKKwlhZHNwX21hcAlQQ00gZGV2aWNlIG51bWJlciBhc3NpZ25lZCB0byAvZGV2L2Fkc3BYCisJCQkoZGVmYXVsdCA9IDEpCisKK0ZvciBleGFtcGxlLCB0byBtYXAgdGhlIHRoaXJkIFBDTSBkZXZpY2UgKGh3OjAsMikgdG8gL2Rldi9hZHNwMCwKK2RlZmluZSBsaWtlIHRoaXM6CisKKwlvcHRpb25zIHNuZC1wY20tb3NzIGFkc3BfbWFwPTIKKworVGhlIG9wdGlvbnMgdGFrZSBhcnJheXMuICBGb3IgY29uZmlndXJpbmcgdGhlIHNlY29uZCBjYXJkLCBzcGVjaWZ5Cit0d28gZW50cmllcyBzZXBhcmF0ZWQgYnkgY29tbWEuICBGb3IgZXhhbXBsZSwgdG8gbWFwIHRoZSB0aGlyZCBQQ00KK2RldmljZSBvbiB0aGUgc2Vjb25kIGNhcmQgdG8gL2Rldi9hZHNwMSwgZGVmaW5lIGxpa2UgYmVsb3c6CisKKwlvcHRpb25zIHNuZC1wY20tb3NzIGFkc3BfbWFwPTAsMgorCitUbyBjaGFuZ2UgdGhlIG1hcHBpbmcgb2YgTUlESSBkZXZpY2VzLCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgYXJlCithdmFpbGFibGUgZm9yIHNuZC1yYXdtaWRpOgorCisJbWlkaV9tYXAJTUlESSBkZXZpY2UgbnVtYmVyIGFzc2lnbmVkIHRvIC9kZXYvbWlkaTBYCisJCQkoZGVmYXVsdCA9IDApCisJYW1pZGlfbWFwCU1JREkgZGV2aWNlIG51bWJlciBhc3NpZ25lZCB0byAvZGV2L2FtaWRpMFgKKwkJCShkZWZhdWx0ID0gMSkKKworRm9yIGV4YW1wbGUsIHRvIGFzc2lnbiB0aGUgdGhpcmQgTUlESSBkZXZpY2Ugb24gdGhlIGZpcnN0IGNhcmQgdG8KKy9kZXYvbWlkaTAwLCBkZWZpbmUgYXMgZm9sbG93czoKKworCW9wdGlvbnMgc25kLXJhd21pZGkgbWlkaV9tYXA9MgorCisKK1BDTSBNb2RlCis9PT09PT09PQorCitBcyBkZWZhdWx0LCBBTFNBIGVtdWxhdGVzIHRoZSBPU1MgUENNIHdpdGggc28tY2FsbGVkIHBsdWdpbiBsYXllciwKK2kuZS4gdHJpZXMgdG8gY29udmVydCB0aGUgc2FtcGxlIGZvcm1hdCwgcmF0ZSBvciBjaGFubmVscworYXV0b21hdGljYWxseSB3aGVuIHRoZSBjYXJkIGRvZXNuJ3Qgc3VwcG9ydCBpdCBuYXRpdmVseS4KK1RoaXMgd2lsbCBsZWFkIHRvIHNvbWUgcHJvYmxlbXMgZm9yIHNvbWUgYXBwbGljYXRpb25zIGxpa2UgcXVha2Ugb3IKK3dpbmUsIGVzcGVjaWFsbHkgaWYgdGhleSB1c2UgdGhlIGNhcmQgb25seSBpbiB0aGUgTU1BUCBtb2RlLgorCitJbiBzdWNoIGEgY2FzZSwgeW91IGNhbiBjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIFBDTSBwZXIgYXBwbGljYXRpb24gYnkKK3dyaXRpbmcgYSBjb21tYW5kIHRvIHRoZSBwcm9jIGZpbGUuICBUaGVyZSBpcyBhIHByb2MgZmlsZSBmb3IgZWFjaCBQQ00KK3N0cmVhbSwgL3Byb2MvYXNvdW5kL2NhcmRYL3BjbVlbY3BdL29zcywgd2hlcmUgWCBpcyB0aGUgY2FyZCBudW1iZXIKKyh6ZXJvLWJhc2VkKSwgWSB0aGUgUENNIGRldmljZSBudW1iZXIgKHplcm8tYmFzZWQpLCBhbmQgJ3AnIGlzIGZvcgorcGxheWJhY2sgYW5kICdjJyBmb3IgY2FwdHVyZSwgcmVzcGVjdGl2ZWx5LiAgTm90ZSB0aGF0IHRoaXMgcHJvYyBmaWxlCitleGlzdHMgb25seSBhZnRlciBzbmQtcGNtLW9zcyBtb2R1bGUgaXMgbG9hZGVkLgorCitUaGUgY29tbWFuZCBzZXF1ZW5jZSBoYXMgdGhlIGZvbGxvd2luZyBzeW50YXg6CisKKwlhcHBfbmFtZSBmcmFnbWVudHMgZnJhZ21lbnRfc2l6ZSBbb3B0aW9uc10KKworYXBwX25hbWUgaXMgdGhlIG5hbWUgb2YgYXBwbGljYXRpb24gd2l0aCAoaGlnaGVyIHByaW9yaXR5KSBvciB3aXRob3V0CitwYXRoLgorZnJhZ21lbnRzIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGZyYWdtZW50cyBvciB6ZXJvIGlmIG5vIHNwZWNpZmljCitudW1iZXIgaXMgZ2l2ZW4uCitmcmFnbWVudF9zaXplIGlzIHRoZSBzaXplIG9mIGZyYWdtZW50IGluIGJ5dGVzIG9yIHplcm8gaWYgbm90IGdpdmVuLgorb3B0aW9ucyBpcyB0aGUgb3B0aW9uYWwgcGFyYW1ldGVycy4gIFRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUKK2F2YWlsYWJsZToKKworCWRpc2FibGUJCXRoZSBhcHBsaWNhdGlvbiB0cmllcyB0byBvcGVuIGEgcGNtIGRldmljZSBmb3IKKwkJCXRoaXMgY2hhbm5lbCBidXQgZG9lcyBub3Qgd2FudCB0byB1c2UgaXQuCisJZGlyZWN0CQlkb24ndCB1c2UgcGx1Z2lucworCWJsb2NrCQlmb3JjZSBibG9jayBvcGVuIG1vZGUKKwlub24tYmxvY2sJZm9yY2Ugbm9uLWJsb2NrIG9wZW4gbW9kZQorCXBhcnRpYWwtZnJhZwl3cml0ZSBhbHNvIHBhcnRpYWwgZnJhZ21lbnRzIChhZmZlY3RzIHBsYXliYWNrIG9ubHkpCisJbm8tc2lsZW5jZQlkbyBub3QgZmlsbCBzaWxlbmNlIGFoZWFkIHRvIGF2b2lkIGNsaWNrcworCitUaGUgZGlzYWJsZSBvcHRpb24gaXMgdXNlZnVsIHdoZW4gb25lIHN0cmVhbSBkaXJlY3Rpb24gKHBsYXliYWNrIG9yCitjYXB0dXJlKSBpcyBub3QgaGFuZGxlZCBjb3JyZWN0bHkgYnkgdGhlIGFwcGxpY2F0aW9uIGFsdGhvdWdoIHRoZQoraGFyZHdhcmUgaXRzZWxmIGRvZXMgc3VwcG9ydCBib3RoIGRpcmVjdGlvbnMuCitUaGUgZGlyZWN0IG9wdGlvbiBpcyB1c2VkLCBhcyBtZW50aW9uZWQgYWJvdmUsIHRvIGJ5cGFzcyB0aGUgYXV0b21hdGljCitjb252ZXJzaW9uIGFuZCB1c2VmdWwgZm9yIE1NQVAtYXBwbGljYXRpb25zLgorRm9yIGV4YW1wbGUsIHRvIHBsYXliYWNrIHRoZSBmaXJzdCBQQ00gZGV2aWNlIHdpdGhvdXQgcGx1Z2lucyBmb3IKK3F1YWtlLCBzZW5kIGEgY29tbWFuZCB2aWEgZWNobyBsaWtlIHRoZSBmb2xsb3dpbmc6CisKKwklIGVjaG8gInF1YWtlIDAgMCBkaXJlY3QiID4gL3Byb2MvYXNvdW5kL2NhcmQwL3BjbTBwL29zcworCitXaGlsZSBxdWFrZSB3YW50cyBvbmx5IHBsYXliYWNrLCB5b3UgbWF5IGFwcGVuZCB0aGUgc2Vjb25kIGNvbW1hbmQKK3RvIG5vdGlmeSBkcml2ZXIgdGhhdCBvbmx5IHRoaXMgZGlyZWN0aW9uIGlzIGFib3V0IHRvIGJlIGFsbG9jYXRlZDoKKworCSUgZWNobyAicXVha2UgMCAwIGRpc2FibGUiID4gL3Byb2MvYXNvdW5kL2NhcmQwL3BjbTBjL29zcworCitUaGUgcGVybWlzc2lvbiBvZiBwcm9jIGZpbGVzIGRlcGVuZCBvbiB0aGUgbW9kdWxlIG9wdGlvbnMgb2Ygc25kLgorQXMgZGVmYXVsdCBpdCdzIHNldCBhcyByb290LCBzbyB5b3UnbGwgbGlrZWx5IG5lZWQgdG8gYmUgc3VwZXJ1c2VyIGZvcgorc2VuZGluZyB0aGUgY29tbWFuZCBhYm92ZS4KKworVGhlIGJsb2NrIGFuZCBub24tYmxvY2sgb3B0aW9ucyBhcmUgdXNlZCB0byBjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mCitvcGVuaW5nIHRoZSBkZXZpY2UgZmlsZS4KKworQXMgZGVmYXVsdCwgQUxTQSBiZWhhdmVzIGFzIG9yaWdpbmFsIE9TUyBkcml2ZXJzLCBpLmUuIGRvZXMgbm90IGJsb2NrCit0aGUgZmlsZSB3aGVuIGl0J3MgYnVzeS4gVGhlIC1FQlVTWSBlcnJvciBpcyByZXR1cm5lZCBpbiB0aGlzIGNhc2UuCisKK1RoaXMgYmxvY2tpbmcgYmVoYXZpb3IgY2FuIGJlIGNoYW5nZWQgZ2xvYmFsbHkgdmlhIG5vbmJsb2NrX29wZW4KK21vZHVsZSBvcHRpb24gb2Ygc25kLXBjbS1vc3MuICBGb3IgdXNpbmcgdGhlIGJsb2NraW5nIG1vZGUgYXMgZGVmYXVsdAorZm9yIE9TUyBkZXZpY2VzLCBkZWZpbmUgbGlrZSB0aGUgZm9sbG93aW5nOgorCisJb3B0aW9ucyBzbmQtcGNtLW9zcyBub25ibG9ja19vcGVuPTAKKworVGhlIHBhcnRpYWwtZnJhZyBhbmQgbm8tc2lsZW5jZSBjb21tYW5kcyBoYXZlIGJlZW4gYWRkZWQgcmVjZW50bHkuCitCb3RoIGNvbW1hbmRzIGFyZSBmb3Igb3B0aW1pemF0aW9uIHVzZSBvbmx5LiAgVGhlIGZvcm1lciBjb21tYW5kCitzcGVjaWZpZXMgdG8gaW52b2tlIHRoZSB3cml0ZSB0cmFuc2ZlciBvbmx5IHdoZW4gdGhlIHdob2xlIGZyYWdtZW50IGlzCitmaWxsZWQuICBUaGUgbGF0dGVyIHN0b3BzIHdyaXRpbmcgdGhlIHNpbGVuY2UgZGF0YSBhaGVhZAorYXV0b21hdGljYWxseS4gIEJvdGggYXJlIGRpc2FibGVkIGFzIGRlZmF1bHQuCisKK1lvdSBjYW4gY2hlY2sgdGhlIGN1cnJlbnRseSBkZWZpbmVkIGNvbmZpZ3VyYXRpb24gYnkgcmVhZGluZyB0aGUgcHJvYworZmlsZS4gIFRoZSByZWFkIGltYWdlIGNhbiBiZSBzZW50IHRvIHRoZSBwcm9jIGZpbGUgYWdhaW4sIGhlbmNlIHlvdQorY2FuIHNhdmUgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbgorCisJJSBjYXQgL3Byb2MvYXNvdW5kL2NhcmQwL3BjbTBwL29zcyA+IC9zb21ld2hlcmUvb3NzLWNmZworCithbmQgcmVzdG9yZSBpdCBsaWtlCisKKwklIGNhdCAvc29tZXdoZXJlL29zcy1jZmcgPiAvcHJvYy9hc291bmQvY2FyZDAvcGNtMHAvb3NzCisKK0Fsc28sIGZvciBjbGVhcmluZyBhbGwgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiwgc2VuZCAiZXJhc2UiIGNvbW1hbmQKK2FzIGJlbG93OgorCisJJSBlY2hvICJlcmFzZSIgPiAvcHJvYy9hc291bmQvY2FyZDAvcGNtMHAvb3NzCisKKworTWl4ZXIgRWxlbWVudHMKKz09PT09PT09PT09PT09CisKK1NpbmNlIEFMU0EgaGFzIGNvbXBsZXRlbHkgZGlmZmVyZW50IG1peGVyIGludGVyZmFjZSwgdGhlIGVtdWxhdGlvbiBvZgorT1NTIG1peGVyIGlzIHJlbGF0aXZlbHkgY29tcGxpY2F0ZWQuICBBTFNBIGJ1aWxkcyB1cCBhIG1peGVyIGVsZW1lbnQKK2Zyb20gc2V2ZXJhbCBkaWZmZXJlbnQgQUxTQSAobWl4ZXIpIGNvbnRyb2xzIGJhc2VkIG9uIHRoZSBuYW1lCitzdHJpbmcuICBGb3IgZXhhbXBsZSwgdGhlIHZvbHVtZSBlbGVtZW50IFNPVU5EX01JWEVSX1BDTSBpcyBjb21wb3NlZAorZnJvbSAiUENNIFBsYXliYWNrIFZvbHVtZSIgYW5kICJQQ00gUGxheWJhY2sgU3dpdGNoIiBjb250cm9scyBmb3IgdGhlCitwbGF5YmFjayBkaXJlY3Rpb24gYW5kIGZyb20gIlBDTSBDYXB0dXJlIFZvbHVtZSIgYW5kICJQQ00gQ2FwdHVyZQorU3dpdGNoIiBmb3IgdGhlIGNhcHR1cmUgZGlyZWN0b3J5IChpZiBleGlzdHMpLiAgV2hlbiB0aGUgUENNIHZvbHVtZSBvZgorT1NTIGlzIGNoYW5nZWQsIGFsbCB0aGUgdm9sdW1lIGFuZCBzd2l0Y2ggY29udHJvbHMgYWJvdmUgYXJlIGFkanVzdGVkCithdXRvbWF0aWNhbGx5LgorCitBcyBkZWZhdWx0LCBBTFNBIHVzZXMgdGhlIGZvbGxvd2luZyBjb250cm9sIGZvciBPU1Mgdm9sdW1lczoKKworCU9TUyB2b2x1bWUJCUFMU0EgY29udHJvbAkJSW5kZXgKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCVNPVU5EX01JWEVSX1ZPTFVNRSAJTWFzdGVyCQkJMAorCVNPVU5EX01JWEVSX0JBU1MJVG9uZSBDb250cm9sIC0gQmFzcwkwCisJU09VTkRfTUlYRVJfVFJFQkxFCVRvbmUgQ29udHJvbCAtIFRyZWJsZQkwCisJU09VTkRfTUlYRVJfU1lOVEgJU3ludGgJCQkwCisJU09VTkRfTUlYRVJfUENNCQlQQ00JCQkwCisJU09VTkRfTUlYRVJfU1BFQUtFUglQQyBTcGVha2VyIAkJMAorCVNPVU5EX01JWEVSX0xJTkUJTGluZQkJCTAKKwlTT1VORF9NSVhFUl9NSUMJCU1pYyAJCQkwCisJU09VTkRfTUlYRVJfQ0QJCUNEIAkJCTAKKwlTT1VORF9NSVhFUl9JTUlYCU1vbml0b3IgTWl4IAkJMAorCVNPVU5EX01JWEVSX0FMVFBDTQlQQ00JCQkxCisJU09VTkRfTUlYRVJfUkVDTEVWCShub3QgYXNzaWduZWQpCisJU09VTkRfTUlYRVJfSUdBSU4JQ2FwdHVyZQkJCTAKKwlTT1VORF9NSVhFUl9PR0FJTglQbGF5YmFjawkJMAorCVNPVU5EX01JWEVSX0xJTkUxCUF1eAkJCTAKKwlTT1VORF9NSVhFUl9MSU5FMglBdXgJCQkxCisJU09VTkRfTUlYRVJfTElORTMJQXV4CQkJMgorCVNPVU5EX01JWEVSX0RJR0lUQUwxCURpZ2l0YWwJCQkwCisJU09VTkRfTUlYRVJfRElHSVRBTDIJRGlnaXRhbAkJCTEKKwlTT1VORF9NSVhFUl9ESUdJVEFMMwlEaWdpdGFsCQkJMgorCVNPVU5EX01JWEVSX1BIT05FSU4JUGhvbmUJCQkwCisJU09VTkRfTUlYRVJfUEhPTkVPVVQJUGhvbmUJCQkxCisJU09VTkRfTUlYRVJfVklERU8JVmlkZW8JCQkwCisJU09VTkRfTUlYRVJfUkFESU8JUmFkaW8JCQkwCisJU09VTkRfTUlYRVJfTU9OSVRPUglNb25pdG9yCQkJMAorCitUaGUgc2Vjb25kIGNvbHVtbiBpcyB0aGUgYmFzZS1zdHJpbmcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgQUxTQQorY29udHJvbC4gIEluIGZhY3QsIHRoZSBjb250cm9scyB3aXRoICJYWFggW1BsYXliYWNrfENhcHR1cmVdCitbVm9sdW1lfFN3aXRjaF0iIHdpbGwgYmUgY2hlY2tlZCBpbiBhZGRpdGlvbi4KKworVGhlIGN1cnJlbnQgYXNzaWdubWVudCBvZiB0aGVzZSBtaXhlciBlbGVtZW50cyBpcyBsaXN0ZWQgaW4gdGhlIHByb2MKK2ZpbGUsIC9wcm9jL2Fzb3VuZC9jYXJkWC9vc3NfbWl4ZXIsIHdoaWNoIHdpbGwgYmUgbGlrZSB0aGUgZm9sbG93aW5nCisKKwlWT0xVTUUgIk1hc3RlciIgMAorCUJBU1MgIiIgMAorCVRSRUJMRSAiIiAwCisJU1lOVEggIiIgMAorCVBDTSAiUENNIiAwCisJLi4uCisKK3doZXJlIHRoZSBmaXJzdCBjb2x1bW4gaXMgdGhlIE9TUyB2b2x1bWUgZWxlbWVudCwgdGhlIHNlY29uZCBjb2x1bW4KK3RoZSBiYXNlLXN0cmluZyBvZiB0aGUgY29ycmVzcG9uZGluZyBBTFNBIGNvbnRyb2wsIGFuZCB0aGUgdGhpcmQgdGhlCitjb250cm9sIGluZGV4LiAgV2hlbiB0aGUgc3RyaW5nIGlzIGVtcHR5LCBpdCBtZWFucyB0aGF0IHRoZQorY29ycmVzcG9uZGluZyBPU1MgY29udHJvbCBpcyBub3QgYXZhaWxhYmxlLgorCitGb3IgY2hhbmdpbmcgdGhlIGFzc2lnbm1lbnQsIHlvdSBjYW4gd3JpdGUgdGhlIGNvbmZpZ3VyYXRpb24gdG8gdGhpcworcHJvYyBmaWxlLiAgRm9yIGV4YW1wbGUsIHRvIG1hcCAiV2F2ZSBQbGF5YmFjayIgdG8gdGhlIFBDTSB2b2x1bWUsCitzZW5kIHRoZSBjb21tYW5kIGxpa2UgdGhlIGZvbGxvd2luZzoKKworCSUgZWNobyAnVk9MVU1FICJXYXZlIFBsYXliYWNrIiAwJyA+IC9wcm9jL2Fzb3VuZC9jYXJkMC9vc3NfbWl4ZXIKKworVGhlIGNvbW1hbmQgaXMgZXhhY3RseSBhcyBzYW1lIGFzIGxpc3RlZCBpbiB0aGUgcHJvYyBmaWxlLiAgWW91IGNhbgorY2hhbmdlIG9uZSBvciBtb3JlIGVsZW1lbnRzLCBvbmUgdm9sdW1lIHBlciBsaW5lLiAgSW4gdGhlIGxhc3QKK2V4YW1wbGUsIGJvdGggIldhdmUgUGxheWJhY2sgVm9sdW1lIiBhbmQgIldhdmUgUGxheWJhY2sgU3dpdGNoIiB3aWxsCitiZSBhZmZlY3RlZCB3aGVuIFBDTSB2b2x1bWUgaXMgY2hhbmdlZC4KKworTGlrZSB0aGUgY2FzZSBvZiBQQ00gcHJvYyBmaWxlLCB0aGUgcGVybWlzc2lvbiBvZiBwcm9jIGZpbGVzIGRlcGVuZCBvbgordGhlIG1vZHVsZSBvcHRpb25zIG9mIHNuZC4gIHlvdSdsbCBsaWtlbHkgbmVlZCB0byBiZSBzdXBlcnVzZXIgZm9yCitzZW5kaW5nIHRoZSBjb21tYW5kIGFib3ZlLgorCitBcyB3ZWxsIGFzIGluIHRoZSBjYXNlIG9mIFBDTSBwcm9jIGZpbGUsIHlvdSBjYW4gc2F2ZSBhbmQgcmVzdG9yZSB0aGUKK2N1cnJlbnQgbWl4ZXIgY29uZmlndXJhdGlvbiBieSByZWFkaW5nIGFuZCB3cml0aW5nIHRoZSB3aG9sZSBmaWxlCitpbWFnZS4KKworCitEdXBsZXggU3RyZWFtcworPT09PT09PT09PT09PT0KKworTm90ZSB0aGF0IHdoZW4gYXR0ZW1wdGluZyB0byB1c2UgYSBzaW5nbGUgZGV2aWNlIGZpbGUgZm9yIHBsYXliYWNrIGFuZAorY2FwdHVyZSwgdGhlIE9TUyBBUEkgcHJvdmlkZXMgbm8gd2F5IHRvIHNldCB0aGUgZm9ybWF0LCBzYW1wbGUgcmF0ZSBvcgorbnVtYmVyIG9mIGNoYW5uZWxzIGRpZmZlcmVudCBpbiBlYWNoIGRpcmVjdGlvbi4gIFRodXMKKwlpb19oYW5kbGUgPSBvcGVuKCJkZXZpY2UiLCBPX1JEV1IpCit3aWxsIG9ubHkgZnVuY3Rpb24gY29ycmVjdGx5IGlmIHRoZSB2YWx1ZXMgYXJlIHRoZSBzYW1lIGluIGVhY2ggZGlyZWN0aW9uLgorCitUbyB1c2UgZGlmZmVyZW50IHZhbHVlcyBpbiB0aGUgdHdvIGRpcmVjdGlvbnMsIHVzZSBib3RoCisJaW5wdXRfaGFuZGxlID0gb3BlbigiZGV2aWNlIiwgT19SRE9OTFkpCisJb3V0cHV0X2hhbmRsZSA9IG9wZW4oImRldmljZSIsIE9fV1JPTkxZKQorYW5kIHNldCB0aGUgdmFsdWVzIGZvciB0aGUgY29ycmVzcG9uZGluZyBoYW5kbGUuCisKKworVW5zdXBwb3J0ZWQgRmVhdHVyZXMKKz09PT09PT09PT09PT09PT09PT09CisKK01NQVAgb24gSUNFMTcxMiBkcml2ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0lDRTE3MTIgc3VwcG9ydHMgb25seSB0aGUgdW5jb252ZW50aW9uYWwgZm9ybWF0LCBpbnRlcmxlYXZlZAorMTAtY2hhbm5lbHMgMjRiaXQgKHBhY2tlZCBpbiAzMmJpdCkgZm9ybWF0LiAgVGhlcmVmb3JlIHlvdSBjYW5ub3QgbW1hcAordGhlIGJ1ZmZlciBhcyB0aGUgY29udmVudGlvbmFsIChtb25vIG9yIDItY2hhbm5lbHMsIDggb3IgMTZiaXQpIGZvcm1hdAorb24gT1NTLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvUHJvY2ZpbGUudHh0IGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL1Byb2NmaWxlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjhhMGQzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL1Byb2NmaWxlLnR4dApAQCAtMCwwICsxLDIzNCBAQAorCQlQcm9jIEZpbGVzIG9mIEFMU0EgRHJpdmVycworCQk9PT09PT09PT09PT09PT09PT09PT09PT09PQorCQlUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+CisKK0dlbmVyYWwKKy0tLS0tLS0KKworQUxTQSBoYXMgaXRzIG93biBwcm9jIHRyZWUsIC9wcm9jL2Fzb3VuZC4gIE1hbnkgdXNlZnVsIGluZm9ybWF0aW9uIGFyZQorZm91bmQgaW4gdGhpcyB0cmVlLiAgV2hlbiB5b3UgZW5jb3VudGVyIGEgcHJvYmxlbSBhbmQgbmVlZCBkZWJ1Z2dpbmcsCitjaGVjayB0aGUgZmlsZXMgbGlzdGVkIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMuCisKK0VhY2ggY2FyZCBoYXMgaXRzIHN1YnRyZWUgY2FyZFgsIHdoZXJlIFggaXMgZnJvbSAwIHRvIDcuIFRoZQorY2FyZC1zcGVjaWZpYyBmaWxlcyBhcmUgc3RvcmVkIGluIHRoZSBjYXJkKiBzdWJkaXJlY3Rvcmllcy4KKworCitHbG9iYWwgSW5mb3JtYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLQorCitjYXJkcworCVNob3dzIHRoZSBsaXN0IG9mIGN1cnJlbnRseSBjb25maWd1cmVkIEFMU0EgZHJpdmVycywKKwlpbmRleCwgdGhlIGlkIHN0cmluZywgc2hvcnQgYW5kIGxvbmcgZGVzY3JpcHRpb25zLgorCit2ZXJzaW9uCisJU2hvd3MgdGhlIHZlcnNpb24gc3RyaW5nIGFuZCBjb21waWxlIGRhdGUuCisKK21vZHVsZXMKKwlMaXN0cyB0aGUgbW9kdWxlIG9mIGVhY2ggY2FyZAorCitkZXZpY2VzCisJTGlzdHMgdGhlIEFMU0EgbmF0aXZlIGRldmljZSBtYXBwaW5ncy4KKworbWVtaW5mbworCVNob3dzIHRoZSBzdGF0dXMgb2YgYWxsb2NhdGVkIHBhZ2VzIHZpYSBBTFNBIGRyaXZlcnMuCisJQXBwZWFycyBvbmx5IHdoZW4gQ09ORklHX1NORF9ERUJVRz15LgorCitod2RlcAorCUxpc3RzIHRoZSBjdXJyZW50bHkgYXZhaWxhYmxlIGh3ZGVwIGRldmljZXMgaW4gZm9ybWF0IG9mCisJPGNhcmQ+LTxkZXZpY2U+OiA8bmFtZT4KKworcGNtCisJTGlzdHMgdGhlIGN1cnJlbnRseSBhdmFpbGFibGUgUENNIGRldmljZXMgaW4gZm9ybWF0IG9mCisJPGNhcmQ+LTxkZXZpY2U+OiA8aWQ+OiA8bmFtZT4gOiA8c3ViLXN0cmVhbXM+CisKK3RpbWVyCisJTGlzdHMgdGhlIGN1cnJlbnRseSBhdmFpbGFibGUgdGltZXIgZGV2aWNlcworCisKK29zcy9kZXZpY2VzCisJTGlzdHMgdGhlIE9TUyBkZXZpY2UgbWFwcGluZ3MuCisKK29zcy9zbmRzdGF0CisJUHJvdmlkZXMgdGhlIG91dHB1dCBjb21wYXRpYmxlIHdpdGggL2Rldi9zbmRzdGF0LgorCVlvdSBjYW4gc3ltbGluayB0aGlzIHRvIC9kZXYvc25kc3RhdC4KKworCitDYXJkIFNwZWNpZmljIEZpbGVzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBjYXJkLXNwZWNpZmljIGZpbGVzIGFyZSBmb3VuZCBpbiAvcHJvYy9hc291bmQvY2FyZCogZGlyZWN0b3JpZXMuCitTb21lIGRyaXZlcnMgKGUuZy4gY21pcGNpKSBoYXZlIHRoZWlyIG93biBwcm9jIGVudHJpZXMgZm9yIHRoZQorcmVnaXN0ZXIgZHVtcCwgZXRjIChlLmcuIC9wcm9jL2Fzb3VuZC9jYXJkKi9jbWlwY2kgc2hvd3MgdGhlIHJlZ2lzdGVyCitkdW1wKS4gIFRoZXNlIGZpbGVzIHdvdWxkIGJlIHJlYWxseSBoZWxwZnVsIGZvciBkZWJ1Z2dpbmcuCisKK1doZW4gUENNIGRldmljZXMgYXJlIGF2YWlsYWJsZSBvbiB0aGlzIGNhcmQsIHlvdSBjYW4gc2VlIGRpcmVjdG9yaWVzCitsaWtlIHBjbTBwIG9yIHBjbTFjLiAgVGhleSBob2xkIHRoZSBQQ00gaW5mb3JtYXRpb24gZm9yIGVhY2ggUENNCitzdHJlYW0uICBUaGUgbnVtYmVyIGFmdGVyICdwY20nIGlzIHRoZSBQQ00gZGV2aWNlIG51bWJlciBmcm9tIDAsIGFuZAordGhlIGxhc3QgJ3AnIG9yICdjJyBtZWFucyBwbGF5YmFjayBvciBjYXB0dXJlIGRpcmVjdGlvbi4gIFRoZSBmaWxlcyBpbgordGhpcyBzdWJ0cmVlIGlzIGRlc2NyaWJlZCBsYXRlci4KKworVGhlIHN0YXR1cyBvZiBNSURJIEkvTyBpcyBmb3VuZCBpbiBtaWRpKiBmaWxlcy4gIEl0IHNob3dzIHRoZSBkZXZpY2UKK25hbWUgYW5kIHRoZSByZWNlaXZlZC90cmFuc21pdHRlZCBieXRlcyB0aHJvdWdoIHRoZSBNSURJIGRldmljZS4KKworV2hlbiB0aGUgY2FyZCBpcyBlcXVpcHBlZCB3aXRoIEFDOTcgY29kZWNzLCB0aGVyZSBhcmUgY29kZWM5NyMqCitzdWJkaXJlY3RvcmllcyAoZGVzY3JpYmVkIGxhdGVyKS4KKworV2hlbiB0aGUgT1NTIG1peGVyIGVtdWxhdGlvbiBpcyBlbmFibGVkIChhbmQgdGhlIG1vZHVsZSBpcyBsb2FkZWQpLAorb3NzX21peGVyIGZpbGUgYXBwZWFycyBoZXJlLCB0b28uICBUaGlzIHNob3dzIHRoZSBjdXJyZW50IG1hcHBpbmcgb2YKK09TUyBtaXhlciBlbGVtZW50cyB0byB0aGUgQUxTQSBjb250cm9sIGVsZW1lbnRzLiAgWW91IGNhbiBjaGFuZ2UgdGhlCittYXBwaW5nIGJ5IHdyaXRpbmcgdG8gdGhpcyBkZXZpY2UuICBSZWFkIE9TUy1FbXVsYXRpb24udHh0IGZvcgorZGV0YWlscy4KKworCitQQ00gUHJvYyBGaWxlcworLS0tLS0tLS0tLS0tLS0KKworY2FyZCovcGNtKi9pbmZvCisJVGhlIGdlbmVyYWwgaW5mb3JtYXRpb24gb2YgdGhpcyBQQ00gZGV2aWNlOiBjYXJkICMsIGRldmljZSAjLAorCXN1YnN0cmVhbXMsIGV0Yy4KKworY2FyZCovcGNtKi94cnVuX2RlYnVnCisJVGhpcyBmaWxlIGFwcGVhcnMgd2hlbiBDT05GSUdfU05EX0RFQlVHPXkgYW5kCisJQ09ORklHX1BDTV9YUlVOX0RFQlVHPXkuCisJVGhpcyBzaG93cyB0aGUgc3RhdHVzIG9mIHhydW4gKD0gYnVmZmVyIG92ZXJydW4veHJ1bikgYW5kCisJaW52YWxpZCBQQ00gcG9zaXRpb24gZGVidWcvY2hlY2sgb2YgQUxTQSBQQ00gbWlkZGxlIGxheWVyLgorCUl0IHRha2VzIGFuIGludGVnZXIgdmFsdWUsIGNhbiBiZSBjaGFuZ2VkIGJ5IHdyaXRpbmcgdG8gdGhpcworCWZpbGUsIHN1Y2ggYXMKKworCQkgIyBlY2hvIDUgPiAvcHJvYy9hc291bmQvY2FyZDAvcGNtMHAveHJ1bl9kZWJ1ZworCisJVGhlIHZhbHVlIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcgYml0IGZsYWdzOgorCSAgYml0IDAgPSBFbmFibGUgWFJVTi9qaWZmaWVzIGRlYnVnIG1lc3NhZ2VzCisJICBiaXQgMSA9IFNob3cgc3RhY2sgdHJhY2UgYXQgWFJVTiAvIGppZmZpZXMgY2hlY2sKKwkgIGJpdCAyID0gRW5hYmxlIGFkZGl0aW9uYWwgamlmZmllcyBjaGVjaworCisJV2hlbiB0aGUgYml0IDAgaXMgc2V0LCB0aGUgZHJpdmVyIHdpbGwgc2hvdyB0aGUgbWVzc2FnZXMgdG8KKwlrZXJuZWwgbG9nIHdoZW4gYW4geHJ1biBpcyBkZXRlY3RlZC4gIFRoZSBkZWJ1ZyBtZXNzYWdlIGlzCisJc2hvd24gYWxzbyB3aGVuIHRoZSBpbnZhbGlkIEgvVyBwb2ludGVyIGlzIGRldGVjdGVkIGF0IHRoZQorCXVwZGF0ZSBvZiBwZXJpb2RzICh1c3VhbGx5IGNhbGxlZCBmcm9tIHRoZSBpbnRlcnJ1cHQKKwloYW5kbGVyKS4KKworCVdoZW4gdGhlIGJpdCAxIGlzIHNldCwgdGhlIGRyaXZlciB3aWxsIHNob3cgdGhlIHN0YWNrIHRyYWNlCisJYWRkaXRpb25hbGx5LiAgVGhpcyBtYXkgaGVscCB0aGUgZGVidWdnaW5nLgorCisJU2luY2UgMi42LjMwLCB0aGlzIG9wdGlvbiBjYW4gZW5hYmxlIHRoZSBod3B0ciBjaGVjayB1c2luZworCWppZmZpZXMuICBUaGlzIGRldGVjdHMgc3BvbnRhbmVvdXMgaW52YWxpZCBwb2ludGVyIGNhbGxiYWNrCisJdmFsdWVzLCBidXQgY2FuIGJlIGxlYWQgdG8gdG9vIG11Y2ggY29ycmVjdGlvbnMgZm9yIGEgKG1vc3RseQorCWJ1Z2d5KSBoYXJkd2FyZSB0aGF0IGRvZXNuJ3QgZ2l2ZSBzbW9vdGggcG9pbnRlciB1cGRhdGVzLgorCVRoaXMgZmVhdHVyZSBpcyBlbmFibGVkIHZpYSB0aGUgYml0IDIuCisKK2NhcmQqL3BjbSovc3ViKi9pbmZvCisJVGhlIGdlbmVyYWwgaW5mb3JtYXRpb24gb2YgdGhpcyBQQ00gc3ViLXN0cmVhbS4KKworY2FyZCovcGNtKi9zdWIqL3N0YXR1cworCVRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGlzIFBDTSBzdWItc3RyZWFtLCBlbGFwc2VkIHRpbWUsCisJSC9XIHBvc2l0aW9uLCBldGMuCisKK2NhcmQqL3BjbSovc3ViKi9od19wYXJhbXMKKwlUaGUgaGFyZHdhcmUgcGFyYW1ldGVycyBzZXQgZm9yIHRoaXMgc3ViLXN0cmVhbS4KKworY2FyZCovcGNtKi9zdWIqL3N3X3BhcmFtcworCVRoZSBzb2Z0IHBhcmFtZXRlcnMgc2V0IGZvciB0aGlzIHN1Yi1zdHJlYW0uCisKK2NhcmQqL3BjbSovc3ViKi9wcmVhbGxvYworCVRoZSBidWZmZXIgcHJlLWFsbG9jYXRpb24gaW5mb3JtYXRpb24uCisKK2NhcmQqL3BjbSovc3ViKi94cnVuX2luamVjdGlvbgorCVRyaWdnZXJzIGFuIFhSVU4gdG8gdGhlIHJ1bm5pbmcgc3RyZWFtIHdoZW4gYW55IHZhbHVlIGlzCisJd3JpdHRlbiB0byB0aGlzIHByb2MgZmlsZS4gIFVzZWQgZm9yIGZhdWx0IGluamVjdGlvbi4KKwlUaGlzIGVudHJ5IGlzIHdyaXRlLW9ubHkuCisKK0FDOTcgQ29kZWMgSW5mb3JtYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2FyZCovY29kZWM5NyMqL2FjOTcjPy0/CisJU2hvd3MgdGhlIGdlbmVyYWwgaW5mb3JtYXRpb24gb2YgdGhpcyBBQzk3IGNvZGVjIGNoaXAsIHN1Y2ggYXMKKwluYW1lLCBjYXBhYmlsaXRpZXMsIHNldCB1cC4KKworY2FyZCovY29kZWM5NyMwL2FjOTcjPy0/K3JlZ3MKKwlTaG93cyB0aGUgQUM5NyByZWdpc3RlciBkdW1wLiAgVXNlZnVsIGZvciBkZWJ1Z2dpbmcuCisKKwlXaGVuIENPTkZJR19TTkRfREVCVUcgaXMgZW5hYmxlZCwgeW91IGNhbiB3cml0ZSB0byB0aGlzIGZpbGUgZm9yCisJY2hhbmdpbmcgYW4gQUM5NyByZWdpc3RlciBkaXJlY3RseS4gIFBhc3MgdHdvIGhleCBudW1iZXJzLgorCUZvciBleGFtcGxlLAorCisJIyBlY2hvIDAyIDlmMWYgPiAvcHJvYy9hc291bmQvY2FyZDAvY29kZWM5NyMwL2FjOTcjMC0wK3JlZ3MKKworCitVU0IgQXVkaW8gU3RyZWFtcworLS0tLS0tLS0tLS0tLS0tLS0KKworY2FyZCovc3RyZWFtKgorCVNob3dzIHRoZSBhc3NpZ25tZW50IGFuZCB0aGUgY3VycmVudCBzdGF0dXMgb2YgZWFjaCBhdWRpbyBzdHJlYW0KKwlvZiB0aGUgZ2l2ZW4gY2FyZC4gIFRoaXMgaW5mb3JtYXRpb24gaXMgdmVyeSB1c2VmdWwgZm9yIGRlYnVnZ2luZy4KKworCitIRC1BdWRpbyBDb2RlY3MKKy0tLS0tLS0tLS0tLS0tLQorCitjYXJkKi9jb2RlYyMqCisJU2hvd3MgdGhlIGdlbmVyYWwgY29kZWMgaW5mb3JtYXRpb24gYW5kIHRoZSBhdHRyaWJ1dGUgb2YgZWFjaAorCXdpZGdldCBub2RlLgorCitjYXJkKi9lbGQjKgorCUF2YWlsYWJsZSBmb3IgSERNSSBvciBEaXNwbGF5UG9ydCBpbnRlcmZhY2VzLgorCVNob3dzIEVMRChFRElEIExpa2UgRGF0YSkgaW5mbyByZXRyaWV2ZWQgZnJvbSB0aGUgYXR0YWNoZWQgSERNSSBzaW5rLAorCWFuZCBkZXNjcmliZXMgaXRzIGF1ZGlvIGNhcGFiaWxpdGllcyBhbmQgY29uZmlndXJhdGlvbnMuCisKKwlTb21lIEVMRCBmaWVsZHMgbWF5IGJlIG1vZGlmaWVkIGJ5IGRvaW5nIGBlY2hvIG5hbWUgaGV4X3ZhbHVlID4gZWxkIypgLgorCU9ubHkgZG8gdGhpcyBpZiB5b3UgYXJlIHN1cmUgdGhlIEhETUkgc2luayBwcm92aWRlZCB2YWx1ZSBpcyB3cm9uZy4KKwlBbmQgaWYgdGhhdCBtYWtlcyB5b3VyIEhETUkgYXVkaW8gd29yaywgcGxlYXNlIHJlcG9ydCB0byB1cyBzbyB0aGF0IHdlCisJY2FuIGZpeCBpdCBpbiBmdXR1cmUga2VybmVsIHJlbGVhc2VzLgorCisKK1NlcXVlbmNlciBJbmZvcm1hdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3NlcS9kcml2ZXJzCisJTGlzdHMgdGhlIGN1cnJlbnRseSBhdmFpbGFibGUgQUxTQSBzZXF1ZW5jZXIgZHJpdmVycy4KKworc2VxL2NsaWVudHMKKwlTaG93cyB0aGUgbGlzdCBvZiBjdXJyZW50bHkgYXZhaWxhYmxlIHNlcXVlbmNlciBjbGllbnRzIGFuZAorCXBvcnRzLiAgVGhlIGNvbm5lY3Rpb24gc3RhdHVzIGFuZCB0aGUgcnVubmluZyBzdGF0dXMgYXJlIHNob3duCisJaW4gdGhpcyBmaWxlLCB0b28uCisKK3NlcS9xdWV1ZXMKKwlMaXN0cyB0aGUgY3VycmVudGx5IGFsbG9jYXRlZC9ydW5uaW5nIHNlcXVlbmNlciBxdWV1ZXMuCisKK3NlcS90aW1lcgorCUxpc3RzIHRoZSBjdXJyZW50bHkgYWxsb2NhdGVkL3J1bm5pbmcgc2VxdWVuY2VyIHRpbWVycy4KKworc2VxL29zcworCUxpc3RzIHRoZSBPU1MtY29tcGF0aWJsZSBzZXF1ZW5jZXIgc3R1ZmZzLgorCisKK0hlbHAgRm9yIERlYnVnZ2luZz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hlbiB0aGUgcHJvYmxlbSBpcyByZWxhdGVkIHdpdGggUENNLCBmaXJzdCB0cnkgdG8gdHVybiBvbiB4cnVuX2RlYnVnCittb2RlLiAgVGhpcyB3aWxsIGdpdmUgeW91IHRoZSBrZXJuZWwgbWVzc2FnZXMgd2hlbiBhbmQgd2hlcmUgeHJ1bgoraGFwcGVuZWQuCisKK0lmIGl0J3MgcmVhbGx5IGEgYnVnLCByZXBvcnQgaXQgd2l0aCB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOgorCisgIC0gdGhlIG5hbWUgb2YgdGhlIGRyaXZlci9jYXJkLCBzaG93IGluIC9wcm9jL2Fzb3VuZC9jYXJkcworICAtIHRoZSByZWdpc3RlciBkdW1wLCBpZiBhdmFpbGFibGUgKGUuZy4gY2FyZCovY21pcGNpKQorCit3aGVuIGl0J3MgYSBQQ00gcHJvYmxlbSwKKworICAtIHNldC11cCBvZiBQQ00sIHNob3duIGluIGh3X3Bhcm1zLCBzd19wYXJhbXMsIGFuZCBzdGF0dXMgaW4gdGhlIFBDTQorICAgIHN1Yi1zdHJlYW0gZGlyZWN0b3J5CisKK3doZW4gaXQncyBhIG1peGVyIHByb2JsZW0sCisKKyAgLSBBQzk3IHByb2MgZmlsZXMsIGNvZGVjOTcjKi8qIGZpbGVzCisKK2ZvciBVU0IgYXVkaW8vbWlkaSwKKworICAtIG91dHB1dCBvZiBsc3VzYiAtdgorICAtIHN0cmVhbSogZmlsZXMgaW4gY2FyZCBkaXJlY3RvcnkKKworCitUaGUgQUxTQSBidWctdHJhY2tpbmcgc3lzdGVtIGlzIGZvdW5kIGF0OgorCisgICAgaHR0cHM6Ly9idWd0cmFjay5hbHNhLXByb2plY3Qub3JnL2Fsc2EtYnVnLwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL1JFQURNRS5tYXlhNDQgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvUkVBRE1FLm1heWE0NApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2IyZWExCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL1JFQURNRS5tYXlhNDQKQEAgLTAsMCArMSwxNjMgQEAKK05PVEU6IFRoZSBmb2xsb3dpbmcgaXMgdGhlIG9yaWdpbmFsIGRvY3VtZW50IG9mIFJhaW5lcidzIHBhdGNoIHRoYXQgdGhlCitjdXJyZW50IG1heWE0NCBjb2RlIGJhc2VkIG9uLiAgU29tZSBjb250ZW50cyBtaWdodCBiZSBvYnNvbGV0ZWQsIGJ1dCBJCitrZWVwIGhlcmUgYXMgcmVmZXJlbmNlIC0tIHRpd2FpCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKK1NUQVRFIE9GIERFVkVMT1BNRU5UOgorCitUaGlzIGRyaXZlciBpcyBiZWluZyBkZXZlbG9wZWQgb24gdGhlIGluaXRpYXRpdmUgb2YgUGlvdHIgTWFrb3dza2kgKG9wb25la0BnbWFpbC5jb20pIGFuZCBmaW5hbmNlZCBieSBMYXJzIEJlcmdtYW5uLgorRGV2ZWxvcG1lbnQgaXMgY2FycmllZCBvdXQgYnkgUmFpbmVyIFppbW1lcm1hbm4gKG1haWxAbGlnaHRzaGVkLmRlKS4KKworRVNJIHByb3ZpZGVkIGEgc2FtcGxlIE1heWE0NCBjYXJkIGZvciB0aGUgZGV2ZWxvcG1lbnQgd29yay4KKworSG93ZXZlciwgdW5mb3J0dW5hdGVseSBpdCBoYXMgdHVybmVkIG91dCBkaWZmaWN1bHQgdG8gZ2V0IGRldGFpbGVkIHByb2dyYW1taW5nIGluZm9ybWF0aW9uLCBzbyBJIChSYWluZXIgWmltbWVybWFubikgaGFkIHRvIGZpbmQgb3V0IHNvbWUgY2FyZC1zcGVjaWZpYyBpbmZvcm1hdGlvbiBieSBleHBlcmltZW50IGFuZCBjb25qZWN0dXJlLiBTb21lIGluZm9ybWF0aW9uIChpbiBwYXJ0aWN1bGFyLCBzZXZlcmFsIEdQSU8gYml0cykgaXMgc3RpbGwgbWlzc2luZy4KKworVGhpcyBpcyB0aGUgZmlyc3QgdGVzdGluZyB2ZXJzaW9uIG9mIHRoZSBNYXlhNDQgZHJpdmVyIHJlbGVhc2VkIHRvIHRoZSBhbHNhLWRldmVsIG1haWxpbmcgbGlzdCAoRmViIDUsIDIwMDgpLgorCisKK1RoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHdvcmssIGFzIHRlc3RlZCBieSBSYWluZXIgWmltbWVybWFubiBhbmQgUGlvdHIgTWFrb3dza2k6CisKKy0gcGxheWJhY2sgYW5kIGNhcHR1cmUgYXQgYWxsIHNhbXBsaW5nIHJhdGVzCistIGlucHV0L291dHB1dCBsZXZlbAorLSBjcm9zc21peGluZworLSBsaW5lL21pYyBzd2l0Y2gKKy0gcGhhbnRvbSBwb3dlciBzd2l0Y2gKKy0gYW5hbG9ndWUgbW9uaXRvciBhLmsuYSBieXBhc3MKKworCitUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyAqc2hvdWxkKiB3b3JrLCBidXQgYXJlIG5vdCBmdWxseSB0ZXN0ZWQ6CisKKy0gQ2hhbm5lbCAzKzQgYW5hbG9ndWUgLSBTL1BESUYgaW5wdXQgc3dpdGNoaW5nCistIFMvUERJRiBvdXRwdXQKKy0gYWxsIGlucHV0cy9vdXRwdXRzIG9uIHRoZSBNL0lPL0RJTyBleHRlbnNpb24gY2FyZAorLSBpbnRlcm5hbC9leHRlcm5hbCBjbG9jayBzZWxlY3Rpb24KKworCisqSW4gcGFydGljdWxhciwgd2Ugd291bGQgYXBwcmVjaWF0ZSB0ZXN0aW5nIG9mIHRoZXNlIGZ1bmN0aW9ucyBieSBhbnlvbmUgd2hvIGhhcyBhY2Nlc3MgdG8gYW4gTS9JTy9ESU8gZXh0ZW5zaW9uIGNhcmQuKgorCisKK1RoaW5ncyB0aGF0IGRvIG5vdCBzZWVtIHRvIHdvcms6CisKKy0gVGhlIGxldmVsIG1ldGVycyAoIm11bHRpIHRyYWNrIikgaW4gJ2Fsc2FtaXhlcicgZG8gbm90IHNlZW0gdG8gcmVhY3QgdG8gc2lnbmFscyBpbiAoaWYgdGhpcyBpcyBhIGJ1ZywgaXQgd291bGQgcHJvYmFibHkgYmUgaW4gdGhlIGV4aXN0aW5nIElDRTE3MjQgY29kZSkuCisKKy0gQXJkb3VyIDIuMSBzZWVtcyB0byB3b3JrIG9ubHkgdmlhIEpBQ0ssIG5vdCB1c2luZyBBTFNBIGRpcmVjdGx5IG9yIHZpYSBPU1MuIFRoaXMgc3RpbGwgbmVlZHMgdG8gYmUgdHJhY2tlZCBkb3duLgorCisKK0RSSVZFUiBERVRBSUxTOgorCit0aGUgZm9sbG93aW5nIGZpbGVzIHdlcmUgYWRkZWQ6CisKK3BjaS9pY2UxNzI0L21heWE0NC5jICAgICAgICAtIE1heWE0NCBzcGVjaWZpYyBjb2RlCitwY2kvaWNlMTcyNC9tYXlhNDQuaAorcGNpL2ljZTE3MjQvaWNlMTcyNC5wYXRjaAorcGNpL2ljZTE3MjQvaWNlMTcyNC5oLnBhdGNoIC0gUFJPUE9TRUQgcGF0Y2ggdG8gaWNlMTcyNC5oIChzZWUgU0FNUExJTkcgUkFURVMpCitpMmMvb3RoZXIvd204Nzc2LmMgIC0gbG93LWxldmVsIGFjY2VzcyByb3V0aW5lcyBmb3IgV29sZnNvbiBXTTg3NzYgY29kZWNzIAoraW5jbHVkZS93bTg3NzYuaAorCisKK05vdGUgdGhhdCB0aGUgd204Nzc2LmMgY29kZSBpcyBtZWFudCB0byBiZSBjYXJkLWluZGVwZW5kZW50IGFuZCBkb2VzIG5vdCBhY3R1YWxseSByZWdpc3RlciB0aGUgY29kZWMgd2l0aCB0aGUgQUxTQSBpbmZyYXN0cnVjdHVyZS4KK1RoaXMgaXMgZG9uZSBpbiBtYXlhNDQuYywgbWFpbmx5IGJlY2F1c2Ugc29tZSBvZiB0aGUgV004Nzc2IGNvbnRyb2xzIGFyZSB1c2VkIGluIE1heWE0NC1zcGVjaWZpYyB3YXlzLCBhbmQgc2hvdWxkIGJlIG5hbWVkIGFwcHJvcHJpYXRlbHkuCisKKwordGhlIGZvbGxvd2luZyBmaWxlcyB3ZXJlIGNyZWF0ZWQgaW4gcGNpL2ljZTE3MjQsIHNpbXBseSAjaW5jbHVkaW5nIHRoZSBjb3JyZXNwb25kaW5nIGZpbGUgZnJvbSB0aGUgYWxzYS1rZXJuZWwgdHJlZToKKword3RtLmgKK3Z0MTcyMF9tb2JvLmgKK3Jldm8uaAorcHJvZGlneTE5Mi5oCitwb250aXMuaAorcGhhc2UuaAorbWF5YTQ0LmgKK2p1bGkuaAorYXVyZW9uLmgKK2FtcC5oCitlbnZ5MjRodC5oCitzZS5oCitwcm9kaWd5X2hpZmkuaAorCisKKypJIGhvcGUgdGhpcyBpcyB0aGUgY29ycmVjdCB3YXkgdG8gZG8gdGhpbmdzLioKKworCitTQU1QTElORyBSQVRFUzoKKworVGhlIE1heWE0NCBjYXJkIChvciBtb3JlIGV4YWN0bHksIHRoZSBXb2xmc29uIFdNODc3NiBjb2RlY3MpIGFsbG93IGEgbWF4aW11bSBzYW1wbGluZyByYXRlIG9mIDE5MiBrSHogZm9yIHBsYXliYWNrIGFuZCA5MiBrSHogZm9yIGNhcHR1cmUuCisKK0FzIHRoZSBJQ0UxNzI0IGNoaXAgb25seSBhbGxvd3Mgb25lIGdsb2JhbCBzYW1wbGluZyByYXRlLCB0aGlzIGlzIGhhbmRsZWQgYXMgZm9sbG93czoKKworKiBzZXR0aW5nIHRoZSBzYW1wbGluZyByYXRlIG9uIGFueSBvcGVuIFBDTSBkZXZpY2Ugb24gdGhlIG1heWE0NCBjYXJkIHdpbGwgYWx3YXlzIHNldCB0aGUgKmdsb2JhbCogc2FtcGxpbmcgcmF0ZSBmb3IgYWxsIHBsYXliYWNrIGFuZCBjYXB0dXJlIGNoYW5uZWxzLgorCisqIEluIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBkcml2ZXIsIHNldHRpbmcgcmF0ZXMgb2YgdXAgdG8gMTkyIGtIeiBpcyBwZXJtaXR0ZWQgZXZlbiBmb3IgY2FwdHVyZSBkZXZpY2VzLgorCisqQVZPSUQgQ0FQVFVSSU5HIEFUIFJBVEVTIEFCT1ZFIDk2a0h6KiwgZXZlbiB0aG91Z2ggaXQgbWF5IGFwcGVhciB0byB3b3JrLiBUaGUgY29kZWMgY2Fubm90IGFjdHVhbGx5IGNhcHR1cmUgYXQgc3VjaCByYXRlcywgbWVhbmluZyBwb29yIHF1YWxpdHkuCisKKworSSBwcm9wb3NlIHNvbWUgYWRkaXRpb25hbCBjb2RlIGZvciBsaW1pdGluZyB0aGUgc2FtcGxpbmcgcmF0ZSB3aGVuIHNldHRpbmcgb24gYSBjYXB0dXJlIHBjbSBkZXZpY2UuIEhvd2V2ZXIgYmVjYXVzZSBvZiB0aGUgZ2xvYmFsIHNhbXBsaW5nIHJhdGUsIHRoaXMgbG9naWMgd291bGQgYmUgc29tZXdoYXQgcHJvYmxlbWF0aWMuCisKK1RoZSBwcm9wb3NlZCBjb2RlIChjdXJyZW50bHkgZGVhY3RpdmF0ZWQpIGlzIGluIGljZTE3MTIuaC5wYXRjaCwgaWNlMTcyNC5jIGFuZCBtYXlhNDQuYyAoaW4gcGNpL2ljZTE3MTIpLgorCisKK1NPVU5EIERFVklDRVM6CisKK1BDTSBkZXZpY2VzIGNvcnJlc3BvbmQgdG8gaW5wdXRzL291dHB1dHMgYXMgZm9sbG93cyAoYXNzdW1pbmcgTWF5YTQ0IGlzIGNhcmQgIzApOgorCitodzowLDAgaW5wdXQgLSBzdGVyZW8sIGFuYWxvZyBpbnB1dCAxKzIKK2h3OjAsMCBvdXRwdXQgLSBzdGVyZW8sIGFuYWxvZyBvdXRwdXQgMSsyCitodzowLDEgaW5wdXQgLSBzdGVyZW8sIGFuYWxvZyBpbnB1dCAzKzQgT1IgUy9QRElGIGlucHV0CitodzowLDEgb3V0cHV0IC0gc3RlcmVvLCBhbmFsb2cgb3V0cHV0IDMrNCAoYW5kIFNQRElGIG91dCkKKworCitOQU1JTkcgT0YgTUlYRVIgQ09OVFJPTFM6CisKKyhmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2lnbmFsIGZsb3csIHBsZWFzZSByZWZlciB0byB0aGUgYmxvY2sgZGlhZ3JhbSBvbiBwLjI0IG9mIHRoZSBFU0kgTWF5YTQ0IG1hbnVhbCwgb3IgaW4gdGhlIEVTSSB3aW5kb3dzIHNvZnR3YXJlKS4KKworCitQQ006IChkaWdpdGFsKSBvdXRwdXQgbGV2ZWwgZm9yIGNoYW5uZWwgMSsyCitQQ00gMTogc2FtZSBmb3IgY2hhbm5lbCAzKzQKKworTWljIFBoYW50b20rNDhWOiBzd2l0Y2ggZm9yICs0OFYgcGhhbnRvbSBwb3dlciBmb3IgZWxlY3Ryb3N0YXRpYyBtaWNyb3Bob25lcyBvbiBpbnB1dCAxLzIuCisgICAgTWFrZSBzdXJlIHRoaXMgaXMgbm90IHR1cm5lZCBvbiB3aGlsZSBhbnkgb3RoZXIgc291cmNlIGlzIGNvbm5lY3RlZCB0byBpbnB1dCAxLzIuCisgICAgSXQgbWlnaHQgZGFtYWdlIHRoZSBzb3VyY2UgYW5kL29yIHRoZSBtYXlhNDQgY2FyZC4KKworTWljL0xpbmUgaW5wdXQ6IGlmIHN3aXRjaCBpcyBvbiwgaW5wdXQgamFjayAxLzIgaXMgbWljcm9waG9uZSBpbnB1dCAobW9ubyksIG90aGVyd2lzZSBsaW5lIGlucHV0IChzdGVyZW8pLgorCitCeXBhc3M6IGFuYWxvZ3VlIGJ5cGFzcyBmcm9tIEFEQyBpbnB1dCB0byBvdXRwdXQgZm9yIGNoYW5uZWwgMSsyLiBTYW1lIGFzICJNb25pdG9yIiBpbiB0aGUgd2luZG93cyBkcml2ZXIuCitCeXBhc3MgMTogc2FtZSBmb3IgY2hhbm5lbCAzKzQuCisKK0Nyb3NzbWl4OiBjcm9zcy1taXhlciBmcm9tIGNoYW5uZWxzIDErMiB0byBjaGFubmVscyAzKzQKK0Nyb3NzbWl4IDE6IGNyb3NzLW1peGVyIGZyb20gY2hhbm5lbHMgMys0IHRvIGNoYW5uZWxzIDErMgorCitJRUM5NTggT3V0cHV0OiBzd2l0Y2ggZm9yIFMvUERJRiBvdXRwdXQuCisgICAgVGhpcyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBFU0kgd2luZG93cyBkcml2ZXIuCisgICAgUy9QRElGIHNob3VsZCBvdXRwdXQgdGhlIHNhbWUgc2lnbmFsIGFzIGNoYW5uZWwgMys0LiBbdW50ZXN0ZWQhXQorCisKK0RpZ2l0aWFsIG91dHB1dCBzZWxlY3RvcnM6CisKKyAgICBUaGVzZSBzd2l0Y2hlcyBhbGxvdyBhIGRpcmVjdCBkaWdpdGFsIHJvdXRpbmcgZnJvbSB0aGUgQURDcyB0byB0aGUgREFDcy4KKyAgICBFYWNoIHN3aXRjaCBkZXRlcm1pbmVzIHdoZXJlIHRoZSBkaWdpdGFsIGlucHV0IGRhdGEgdG8gb25lIG9mIHRoZSBEQUNzIGNvbWVzIGZyb20uCisgICAgVGhleSBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgRVNJIHdpbmRvd3MgZHJpdmVyLgorICAgIEZvciBub3JtYWwgb3BlcmF0aW9uLCB0aGV5IHNob3VsZCBhbGwgYmUgc2V0IHRvICJQQ00gb3V0Ii4KKworSC9XOiBPdXRwdXQgc291cmNlIGNoYW5uZWwgMQorSC9XIDE6IE91dHB1dCBzb3VyY2UgY2hhbm5lbCAyCitIL1cgMjogT3V0cHV0IHNvdXJjZSBjaGFubmVsIDMKK0gvVyAzOiBPdXRwdXQgc291cmNlIGNoYW5uZWwgNAorCitIL1cgNCAuLi4gSC9XIDk6IHVua25vd24gZnVuY3Rpb24sIGxlZnQgaW4gdG8gZW5hYmxlIHRlc3RpbmcuCisgICAgUG9zc2libHkgc29tZSBvZiB0aGVzZSBjb250cm9sIFMvUERJRiBvdXRwdXQocykuCisgICAgSWYgdGhlc2UgdHVybiBvdXQgdG8gYmUgdW51c2VkLCB0aGV5IHdpbGwgZ28gYXdheSBpbiBsYXRlciBkcml2ZXIgdmVyc2lvbnMuCisKK1NlbGVjdGFibGUgdmFsdWVzIGZvciBlYWNoIG9mIHRoZSBkaWdpdGFsIG91dHB1dCBzZWxlY3RvcnMgYXJlOgorICAgIlBDTSBvdXQiIC0+IERBQyBvdXRwdXQgb2YgdGhlIGNvcnJlc3BvbmRpbmcgY2hhbm5lbCAoZGVmYXVsdCBzZXR0aW5nKQorICAgIklucHV0IDEiLi4uCisgICAiSW5wdXQgNCIgLT4gZGlyZWN0IHJvdXRpbmcgZnJvbSBBREMgb3V0cHV0IG9mIHRoZSBzZWxlY3RlZCBpbnB1dCBjaGFubmVsCisKKworLS0tLS0tLS0KKworRmViIDE0LCAyMDA4CitSYWluZXIgWmltbWVybWFubgorbWFpbEBsaWdodHNoZWQuZGUKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL1NCLUxpdmUtbWl4ZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL1NCLUxpdmUtbWl4ZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0YjU5ODgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvU0ItTGl2ZS1taXhlci50eHQKQEAgLTAsMCArMSwzNTYgQEAKKworCQlTb3VuZCBCbGFzdGVyIExpdmUgbWl4ZXIgLyBkZWZhdWx0IERTUCBjb2RlCisJCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCitUaGUgRU1VMTBLMSBjaGlwcyBoYXZlIGEgRFNQIHBhcnQgd2hpY2ggY2FuIGJlIHByb2dyYW1tZWQgdG8gc3VwcG9ydAordmFyaW91cyB3YXlzIG9mIHNhbXBsZSBwcm9jZXNzaW5nLCB3aGljaCBpcyBkZXNjcmliZWQgaGVyZS4KKyhUaGlzIGFydGljbGUgZG9lcyBub3QgZGVhbCB3aXRoIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIAorRU1VMTBLMSBjaGlwcy4gU2VlIHRoZSBtYW51YWxzIHNlY3Rpb24gZm9yIGZ1cnRoZXIgZGV0YWlscy4pCisKK1RoZSBBTFNBIGRyaXZlciBwcm9ncmFtcyB0aGlzIHBvcnRpb24gb2YgY2hpcCBieSBkZWZhdWx0IGNvZGUKKyhjYW4gYmUgYWx0ZXJlZCBsYXRlcikgd2hpY2ggb2ZmZXJzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25hbGl0eToKKworCisxKSBJRUM5NTggKFMvUERJRikgcmF3IFBDTQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBQQ00gZGV2aWNlIChpdCdzIHRoZSA0dGggUENNIGRldmljZSAoaW5kZXggMyEpIGFuZCBmaXJzdCBzdWJkZXZpY2UKKyhpbmRleCAwKSBmb3IgYSBnaXZlbiBjYXJkKSBhbGxvd3MgdG8gZm9yd2FyZCA0OGtIeiwgc3RlcmVvLCAxNi1iaXQKK2xpdHRsZSBlbmRpYW4gc3RyZWFtcyB3aXRob3V0IGFueSBtb2RpZmljYXRpb25zIHRvIHRoZSBkaWdpdGFsIG91dHB1dAorKGNvYXhpYWwgb3Igb3B0aWNhbCkuIFRoZSB1bml2ZXJzYWwgaW50ZXJmYWNlIGFsbG93cyB0aGUgY3JlYXRpb24gb2YgdXAKK3RvIDggcmF3IFBDTSBkZXZpY2VzIG9wZXJhdGluZyBhdCA0OGtIeiwgMTYtYml0IGxpdHRsZSBlbmRpYW4uIEl0IHdvdWxkCitiZSBlYXN5IHRvIGFkZCBzdXBwb3J0IGZvciBtdWx0aWNoYW5uZWwgZGV2aWNlcyB0byB0aGUgY3VycmVudCBjb2RlLAorYnV0IHRoZSBjb252ZXJzaW9uIHJvdXRpbmVzIGV4aXN0IG9ubHkgZm9yIHN0ZXJlbyAoMi1jaGFubmVsIHN0cmVhbXMpCithdCB0aGUgdGltZS4gCisKK0xvb2sgdG8gdHJhbV9wb2tlIHJvdXRpbmVzIGluIGxvd2xldmVsL2VtdTEwazEvZW11ZnguYyBmb3IgbW9yZSBkZXRhaWxzLgorCisKKzIpIERpZ2l0YWwgbWl4ZXIgY29udHJvbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlc2UgY29udHJvbHMgYXJlIGJ1aWx0IHVzaW5nIHRoZSBEU1AgaW5zdHJ1Y3Rpb25zLiBUaGV5IG9mZmVyIGV4dGVuZGVkCitmdW5jdGlvbmFsaXR5LiBPbmx5IHRoZSBkZWZhdWx0IGJ1aWxkLWluIGNvZGUgaW4gdGhlIEFMU0EgZHJpdmVyIGlzIGRlc2NyaWJlZAoraGVyZS4gTm90ZSB0aGF0IHRoZSBjb250cm9scyB3b3JrIGFzIGF0dGVudWF0b3JzOiB0aGUgbWF4aW11bSB2YWx1ZSBpcyB0aGUgCituZXV0cmFsIHBvc2l0aW9uIGxlYXZpbmcgdGhlIHNpZ25hbCB1bmNoYW5nZWQuIE5vdGUgdGhhdCBpZiB0aGUgIHNhbWUgZGVzdGluYXRpb24gCitpcyBtZW50aW9uZWQgaW4gbXVsdGlwbGUgY29udHJvbHMsIHRoZSBzaWduYWwgaXMgYWNjdW11bGF0ZWQgYW5kIGNhbiBiZSB3cmFwcGVkIAorKHNldCB0byBtYXhpbWFsIG9yIG1pbmltYWwgdmFsdWUgd2l0aG91dCBjaGVja2luZyBvZiBvdmVyZmxvdykuCisKKworRXhwbGFuYXRpb24gb2YgdXNlZCBhYmJyZXZpYXRpb25zOgorCitEQUMgICAgLSBkaWdpdGFsIHRvIGFuYWxvZyBjb252ZXJ0ZXIKK0FEQyAgICAtIGFuYWxvZyB0byBkaWdpdGFsIGNvbnZlcnRlcgorSTJTICAgIC0gb25lLXdheSB0aHJlZSB3aXJlIHNlcmlhbCBidXMgZm9yIGRpZ2l0YWwgc291bmQgYnkgUGhpbGlwcyBTZW1pY29uZHVjdG9ycworICAgICAgICAgKHRoaXMgc3RhbmRhcmQgaXMgdXNlZCBmb3IgY29ubmVjdGluZyBzdGFuZGFsb25lIERBQyBhbmQgQURDIGNvbnZlcnRlcnMpCitMRkUgICAgLSBsb3cgZnJlcXVlbmN5IGVmZmVjdHMgKHN1Yndvb2ZlciBzaWduYWwpCitBQzk3ICAgLSBhIGNoaXAgY29udGFpbmluZyBhbiBhbmFsb2cgbWl4ZXIsIERBQyBhbmQgQURDIGNvbnZlcnRlcnMKK0lFQzk1OCAtIFMvUERJRgorRlgtYnVzIC0gdGhlIEVNVTEwSzEgY2hpcCBoYXMgYW4gZWZmZWN0IGJ1cyBjb250YWluaW5nIDE2IGFjY3VtdWxhdG9ycy4KKyAgICAgICAgIEVhY2ggb2YgdGhlIHN5bnRoZXNpemVyIHZvaWNlcyBjYW4gZmVlZCBpdHMgb3V0cHV0IHRvIHRoZXNlIGFjY3VtdWxhdG9ycworICAgICAgICAgYW5kIHRoZSBEU1AgbWljcm9jb250cm9sbGVyIGNhbiBvcGVyYXRlIHdpdGggdGhlIHJlc3VsdGluZyBzdW0uCisKKworbmFtZT0nV2F2ZSBQbGF5YmFjayBWb2x1bWUnLGluZGV4PTAKKworVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gYXR0ZW51YXRlIHNhbXBsZXMgZm9yIGxlZnQgYW5kIHJpZ2h0IFBDTSBGWC1idXMKK2FjY3VtdWxhdG9ycy4gQUxTQSB1c2VzIGFjY3VtdWxhdG9ycyAwIGFuZCAxIGZvciBsZWZ0IGFuZCByaWdodCBQQ00gc2FtcGxlcy4KK1RoZSByZXN1bHQgc2FtcGxlcyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBmcm9udCBEQUMgUENNIHNsb3RzIG9mIHRoZSBBQzk3IGNvZGVjLgorCituYW1lPSdXYXZlIFN1cnJvdW5kIFBsYXliYWNrIFZvbHVtZScsaW5kZXg9MAorCitUaGlzIGNvbnRyb2wgaXMgdXNlZCB0byBhdHRlbnVhdGUgc2FtcGxlcyBmb3IgbGVmdCBhbmQgcmlnaHQgUENNIEZYLWJ1cworYWNjdW11bGF0b3JzLiBBTFNBIHVzZXMgYWNjdW11bGF0b3JzIDAgYW5kIDEgZm9yIGxlZnQgYW5kIHJpZ2h0IFBDTSBzYW1wbGVzLgorVGhlIHJlc3VsdCBzYW1wbGVzIGFyZSBmb3J3YXJkZWQgdG8gdGhlIHJlYXIgSTJTIERBQ3MuIFRoZXNlIERBQ3Mgb3BlcmF0ZXMKK3NlcGFyYXRlbHkgKHRoZXkgYXJlIG5vdCBpbnNpZGUgdGhlIEFDOTcgY29kZWMpLgorCituYW1lPSdXYXZlIENlbnRlciBQbGF5YmFjayBWb2x1bWUnLGluZGV4PTAKKworVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gYXR0ZW51YXRlIHNhbXBsZXMgZm9yIGxlZnQgYW5kIHJpZ2h0IFBDTSBGWC1idXMKK2FjY3VtdWxhdG9ycy4gQUxTQSB1c2VzIGFjY3VtdWxhdG9ycyAwIGFuZCAxIGZvciBsZWZ0IGFuZCByaWdodCBQQ00gc2FtcGxlcy4KK1RoZSByZXN1bHQgaXMgbWl4ZWQgdG8gbW9ubyBzaWduYWwgKHNpbmdsZSBjaGFubmVsKSBhbmQgZm9yd2FyZGVkIHRvCit0aGUgPz9yZWFyPz8gcmlnaHQgREFDIFBDTSBzbG90IG9mIHRoZSBBQzk3IGNvZGVjLgorCituYW1lPSdXYXZlIExGRSBQbGF5YmFjayBWb2x1bWUnLGluZGV4PTAKKworVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gYXR0ZW51YXRlIHNhbXBsZXMgZm9yIGxlZnQgYW5kIHJpZ2h0IFBDTSBGWC1idXMKK2FjY3VtdWxhdG9ycy4gQUxTQSB1c2VzIGFjY3VtdWxhdG9ycyAwIGFuZCAxIGZvciBsZWZ0IGFuZCByaWdodCBQQ00uCitUaGUgcmVzdWx0IGlzIG1peGVkIHRvIG1vbm8gc2lnbmFsIChzaW5nbGUgY2hhbm5lbCkgYW5kIGZvcndhcmRlZCB0bwordGhlID8/cmVhcj8/IGxlZnQgREFDIFBDTSBzbG90IG9mIHRoZSBBQzk3IGNvZGVjLgorCituYW1lPSdXYXZlIENhcHR1cmUgVm9sdW1lJyxpbmRleD0wCituYW1lPSdXYXZlIENhcHR1cmUgU3dpdGNoJyxpbmRleD0wCisKK1RoZXNlIGNvbnRyb2xzIGFyZSB1c2VkIHRvIGF0dGVudWF0ZSBzYW1wbGVzIGZvciBsZWZ0IGFuZCByaWdodCBQQ00gRlgtYnVzCithY2N1bXVsYXRvci4gQUxTQSB1c2VzIGFjY3VtdWxhdG9ycyAwIGFuZCAxIGZvciBsZWZ0IGFuZCByaWdodCBQQ00uCitUaGUgcmVzdWx0IGlzIGZvcndhcmRlZCB0byB0aGUgQURDIGNhcHR1cmUgRklGTyAodGh1cyB0byB0aGUgc3RhbmRhcmQgY2FwdHVyZQorUENNIGRldmljZSkuCisKK25hbWU9J1N5bnRoIFBsYXliYWNrIFZvbHVtZScsaW5kZXg9MAorCitUaGlzIGNvbnRyb2wgaXMgdXNlZCB0byBhdHRlbnVhdGUgc2FtcGxlcyBmb3IgbGVmdCBhbmQgcmlnaHQgTUlESSBGWC1idXMKK2FjY3VtdWxhdG9ycy4gQUxTQSB1c2VzIGFjY3VtdWxhdG9ycyA0IGFuZCA1IGZvciBsZWZ0IGFuZCByaWdodCBNSURJIHNhbXBsZXMuCitUaGUgcmVzdWx0IHNhbXBsZXMgYXJlIGZvcndhcmRlZCB0byB0aGUgZnJvbnQgREFDIFBDTSBzbG90cyBvZiB0aGUgQUM5NyBjb2RlYy4KKworbmFtZT0nU3ludGggQ2FwdHVyZSBWb2x1bWUnLGluZGV4PTAKK25hbWU9J1N5bnRoIENhcHR1cmUgU3dpdGNoJyxpbmRleD0wCisKK1RoZXNlIGNvbnRyb2xzIGFyZSB1c2VkIHRvIGF0dGVudWF0ZSBzYW1wbGVzIGZvciBsZWZ0IGFuZCByaWdodCBNSURJIEZYLWJ1cworYWNjdW11bGF0b3IuIEFMU0EgdXNlcyBhY2N1bXVsYXRvcnMgNCBhbmQgNSBmb3IgbGVmdCBhbmQgcmlnaHQgUENNLgorVGhlIHJlc3VsdCBpcyBmb3J3YXJkZWQgdG8gdGhlIEFEQyBjYXB0dXJlIEZJRk8gKHRodXMgdG8gdGhlIHN0YW5kYXJkIGNhcHR1cmUKK1BDTSBkZXZpY2UpLgorCituYW1lPSdTdXJyb3VuZCBQbGF5YmFjayBWb2x1bWUnLGluZGV4PTAKKworVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gYXR0ZW51YXRlIHNhbXBsZXMgZm9yIGxlZnQgYW5kIHJpZ2h0IHJlYXIgUENNIEZYLWJ1cworYWNjdW11bGF0b3JzLiBBTFNBIHVzZXMgYWNjdW11bGF0b3JzIDIgYW5kIDMgZm9yIGxlZnQgYW5kIHJpZ2h0IHJlYXIgUENNIHNhbXBsZXMuCitUaGUgcmVzdWx0IHNhbXBsZXMgYXJlIGZvcndhcmRlZCB0byB0aGUgcmVhciBJMlMgREFDcy4gVGhlc2UgREFDcyBvcGVyYXRlCitzZXBhcmF0ZWx5ICh0aGV5IGFyZSBub3QgaW5zaWRlIHRoZSBBQzk3IGNvZGVjKS4KKworbmFtZT0nU3Vycm91bmQgQ2FwdHVyZSBWb2x1bWUnLGluZGV4PTAKK25hbWU9J1N1cnJvdW5kIENhcHR1cmUgU3dpdGNoJyxpbmRleD0wCisKK1RoZXNlIGNvbnRyb2xzIGFyZSB1c2VkIHRvIGF0dGVudWF0ZSBzYW1wbGVzIGZvciBsZWZ0IGFuZCByaWdodCByZWFyIFBDTSBGWC1idXMKK2FjY3VtdWxhdG9ycy4gQUxTQSB1c2VzIGFjY3VtdWxhdG9ycyAyIGFuZCAzIGZvciBsZWZ0IGFuZCByaWdodCByZWFyIFBDTSBzYW1wbGVzLgorVGhlIHJlc3VsdCBpcyBmb3J3YXJkZWQgdG8gdGhlIEFEQyBjYXB0dXJlIEZJRk8gKHRodXMgdG8gdGhlIHN0YW5kYXJkIGNhcHR1cmUKK1BDTSBkZXZpY2UpLgorCituYW1lPSdDZW50ZXIgUGxheWJhY2sgVm9sdW1lJyxpbmRleD0wCisKK1RoaXMgY29udHJvbCBpcyB1c2VkIHRvIGF0dGVudWF0ZSBzYW1wbGUgZm9yIGNlbnRlciBQQ00gRlgtYnVzIGFjY3VtdWxhdG9yLgorQUxTQSB1c2VzIGFjY3VtdWxhdG9yIDYgZm9yIGNlbnRlciBQQ00gc2FtcGxlLiBUaGUgcmVzdWx0IHNhbXBsZSBpcyBmb3J3YXJkZWQKK3RvIHRoZSA/P3JlYXI/PyByaWdodCBEQUMgUENNIHNsb3Qgb2YgdGhlIEFDOTcgY29kZWMuCisKK25hbWU9J0xGRSBQbGF5YmFjayBWb2x1bWUnLGluZGV4PTAKKworVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gYXR0ZW51YXRlIHNhbXBsZSBmb3IgY2VudGVyIFBDTSBGWC1idXMgYWNjdW11bGF0b3IuCitBTFNBIHVzZXMgYWNjdW11bGF0b3IgNiBmb3IgY2VudGVyIFBDTSBzYW1wbGUuIFRoZSByZXN1bHQgc2FtcGxlIGlzIGZvcndhcmRlZAordG8gdGhlID8/cmVhcj8/IGxlZnQgREFDIFBDTSBzbG90IG9mIHRoZSBBQzk3IGNvZGVjLgorCituYW1lPSdBQzk3IFBsYXliYWNrIFZvbHVtZScsaW5kZXg9MAorCitUaGlzIGNvbnRyb2wgaXMgdXNlZCB0byBhdHRlbnVhdGUgc2FtcGxlcyBmb3IgbGVmdCBhbmQgcmlnaHQgZnJvbnQgQURDIFBDTSBzbG90cworb2YgdGhlIEFDOTcgY29kZWMuIFRoZSByZXN1bHQgc2FtcGxlcyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBmcm9udCBEQUMgUENNCitzbG90cyBvZiB0aGUgQUM5NyBjb2RlYy4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqKiogTm90ZTogVGhpcyBjb250cm9sIHNob3VsZCBiZSB6ZXJvIGZvciB0aGUgc3RhbmRhcmQgb3BlcmF0aW9ucywgb3RoZXJ3aXNlICoqKgorKioqIGEgZGlnaXRhbCBsb29wYmFjayBpcyBhY3RpdmF0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK25hbWU9J0FDOTcgQ2FwdHVyZSBWb2x1bWUnLGluZGV4PTAKKworVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gYXR0ZW51YXRlIHNhbXBsZXMgZm9yIGxlZnQgYW5kIHJpZ2h0IGZyb250IEFEQyBQQ00gc2xvdHMKK29mIHRoZSBBQzk3IGNvZGVjLiBUaGUgcmVzdWx0IGlzIGZvcndhcmRlZCB0byB0aGUgQURDIGNhcHR1cmUgRklGTyAodGh1cyB0bwordGhlIHN0YW5kYXJkIGNhcHR1cmUgUENNIGRldmljZSkuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKioqIE5vdGU6IFRoaXMgY29udHJvbCBzaG91bGQgYmUgMTAwIChtYXhpbWFsIHZhbHVlKSwgb3RoZXJ3aXNlIG5vIGFuYWxvZyAgICAqKioKKyoqKiBpbnB1dHMgb2YgdGhlIEFDOTcgY29kZWMgY2FuIGJlIGNhcHR1cmVkIChyZWNvcmRlZCkuICAgICAgICAgICAgICAgICAgICAgKioqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCituYW1lPSdJRUM5NTggVFRMIFBsYXliYWNrIFZvbHVtZScsaW5kZXg9MAorCitUaGlzIGNvbnRyb2wgaXMgdXNlZCB0byBhdHRlbnVhdGUgc2FtcGxlcyBmcm9tIGxlZnQgYW5kIHJpZ2h0IElFQzk1OCBUVEwKK2RpZ2l0YWwgaW5wdXRzICh1c3VhbGx5IHVzZWQgYnkgYSBDRFJPTSBkcml2ZSkuIFRoZSByZXN1bHQgc2FtcGxlcyBhcmUKK2ZvcndhcmRlZCB0byB0aGUgZnJvbnQgREFDIFBDTSBzbG90cyBvZiB0aGUgQUM5NyBjb2RlYy4KKworbmFtZT0nSUVDOTU4IFRUTCBDYXB0dXJlIFZvbHVtZScsaW5kZXg9MAorCitUaGlzIGNvbnRyb2wgaXMgdXNlZCB0byBhdHRlbnVhdGUgc2FtcGxlcyBmcm9tIGxlZnQgYW5kIHJpZ2h0IElFQzk1OCBUVEwKK2RpZ2l0YWwgaW5wdXRzICh1c3VhbGx5IHVzZWQgYnkgYSBDRFJPTSBkcml2ZSkuIFRoZSByZXN1bHQgc2FtcGxlcyBhcmUKK2ZvcndhcmRlZCB0byB0aGUgQURDIGNhcHR1cmUgRklGTyAodGh1cyB0byB0aGUgc3RhbmRhcmQgY2FwdHVyZSBQQ00gZGV2aWNlKS4KKworbmFtZT0nWm9vbSBWaWRlbyBQbGF5YmFjayBWb2x1bWUnLGluZGV4PTAKKworVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gYXR0ZW51YXRlIHNhbXBsZXMgZnJvbSBsZWZ0IGFuZCByaWdodCB6b29tIHZpZGVvCitkaWdpdGFsIGlucHV0cyAodXN1YWxseSB1c2VkIGJ5IGEgQ0RST00gZHJpdmUpLiBUaGUgcmVzdWx0IHNhbXBsZXMgYXJlCitmb3J3YXJkZWQgdG8gdGhlIGZyb250IERBQyBQQ00gc2xvdHMgb2YgdGhlIEFDOTcgY29kZWMuCisKK25hbWU9J1pvb20gVmlkZW8gQ2FwdHVyZSBWb2x1bWUnLGluZGV4PTAKKworVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gYXR0ZW51YXRlIHNhbXBsZXMgZnJvbSBsZWZ0IGFuZCByaWdodCB6b29tIHZpZGVvCitkaWdpdGFsIGlucHV0cyAodXN1YWxseSB1c2VkIGJ5IGEgQ0RST00gZHJpdmUpLiBUaGUgcmVzdWx0IHNhbXBsZXMgYXJlCitmb3J3YXJkZWQgdG8gdGhlIEFEQyBjYXB0dXJlIEZJRk8gKHRodXMgdG8gdGhlIHN0YW5kYXJkIGNhcHR1cmUgUENNIGRldmljZSkuCisKK25hbWU9J0lFQzk1OCBMaXZlRHJpdmUgUGxheWJhY2sgVm9sdW1lJyxpbmRleD0wCisKK1RoaXMgY29udHJvbCBpcyB1c2VkIHRvIGF0dGVudWF0ZSBzYW1wbGVzIGZyb20gbGVmdCBhbmQgcmlnaHQgSUVDOTU4IG9wdGljYWwKK2RpZ2l0YWwgaW5wdXQuIFRoZSByZXN1bHQgc2FtcGxlcyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBmcm9udCBEQUMgUENNIHNsb3RzCitvZiB0aGUgQUM5NyBjb2RlYy4KKworbmFtZT0nSUVDOTU4IExpdmVEcml2ZSBDYXB0dXJlIFZvbHVtZScsaW5kZXg9MAorCitUaGlzIGNvbnRyb2wgaXMgdXNlZCB0byBhdHRlbnVhdGUgc2FtcGxlcyBmcm9tIGxlZnQgYW5kIHJpZ2h0IElFQzk1OCBvcHRpY2FsCitkaWdpdGFsIGlucHV0cy4gVGhlIHJlc3VsdCBzYW1wbGVzIGFyZSBmb3J3YXJkZWQgdG8gdGhlIEFEQyBjYXB0dXJlIEZJRk8KKyh0aHVzIHRvIHRoZSBzdGFuZGFyZCBjYXB0dXJlIFBDTSBkZXZpY2UpLgorCituYW1lPSdJRUM5NTggQ29heGlhbCBQbGF5YmFjayBWb2x1bWUnLGluZGV4PTAKKworVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gYXR0ZW51YXRlIHNhbXBsZXMgZnJvbSBsZWZ0IGFuZCByaWdodCBJRUM5NTggY29heGlhbAorZGlnaXRhbCBpbnB1dHMuIFRoZSByZXN1bHQgc2FtcGxlcyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBmcm9udCBEQUMgUENNIHNsb3RzCitvZiB0aGUgQUM5NyBjb2RlYy4KKworbmFtZT0nSUVDOTU4IENvYXhpYWwgQ2FwdHVyZSBWb2x1bWUnLGluZGV4PTAKKworVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gYXR0ZW51YXRlIHNhbXBsZXMgZnJvbSBsZWZ0IGFuZCByaWdodCBJRUM5NTggY29heGlhbAorZGlnaXRhbCBpbnB1dHMuIFRoZSByZXN1bHQgc2FtcGxlcyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBBREMgY2FwdHVyZSBGSUZPCisodGh1cyB0byB0aGUgc3RhbmRhcmQgY2FwdHVyZSBQQ00gZGV2aWNlKS4KKworbmFtZT0nTGluZSBMaXZlRHJpdmUgUGxheWJhY2sgVm9sdW1lJyxpbmRleD0wCituYW1lPSdMaW5lIExpdmVEcml2ZSBQbGF5YmFjayBWb2x1bWUnLGluZGV4PTEKKworVGhpcyBjb250cm9sIGlzIHVzZWQgdG8gYXR0ZW51YXRlIHNhbXBsZXMgZnJvbSBsZWZ0IGFuZCByaWdodCBJMlMgQURDCitpbnB1dHMgKG9uIHRoZSBMaXZlRHJpdmUpLiBUaGUgcmVzdWx0IHNhbXBsZXMgYXJlIGZvcndhcmRlZCB0byB0aGUgZnJvbnQKK0RBQyBQQ00gc2xvdHMgb2YgdGhlIEFDOTcgY29kZWMuCisKK25hbWU9J0xpbmUgTGl2ZURyaXZlIENhcHR1cmUgVm9sdW1lJyxpbmRleD0xCituYW1lPSdMaW5lIExpdmVEcml2ZSBDYXB0dXJlIFZvbHVtZScsaW5kZXg9MQorCitUaGlzIGNvbnRyb2wgaXMgdXNlZCB0byBhdHRlbnVhdGUgc2FtcGxlcyBmcm9tIGxlZnQgYW5kIHJpZ2h0IEkyUyBBREMKK2lucHV0cyAob24gdGhlIExpdmVEcml2ZSkuIFRoZSByZXN1bHQgc2FtcGxlcyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBBREMKK2NhcHR1cmUgRklGTyAodGh1cyB0byB0aGUgc3RhbmRhcmQgY2FwdHVyZSBQQ00gZGV2aWNlKS4KKworbmFtZT0nVG9uZSBDb250cm9sIC0gU3dpdGNoJyxpbmRleD0wCisKK1RoaXMgY29udHJvbCB0dXJucyB0aGUgdG9uZSBjb250cm9sIG9uIG9yIG9mZi4gVGhlIHNhbXBsZXMgZm9yIGZyb250LCByZWFyCithbmQgY2VudGVyIC8gTEZFIG91dHB1dHMgYXJlIGFmZmVjdGVkLgorCituYW1lPSdUb25lIENvbnRyb2wgLSBCYXNzJyxpbmRleD0wCisKK1RoaXMgY29udHJvbCBzZXRzIHRoZSBiYXNzIGludGVuc2l0eS4gVGhlcmUgaXMgbm8gbmV1dHJhbCB2YWx1ZSEhCitXaGVuIHRoZSB0b25lIGNvbnRyb2wgY29kZSBpcyBhY3RpdmF0ZWQsIHRoZSBzYW1wbGVzIGFyZSBhbHdheXMgbW9kaWZpZWQuCitUaGUgY2xvc2VzdCB2YWx1ZSB0byBwdXJlIHNpZ25hbCBpcyAyMC4KKworbmFtZT0nVG9uZSBDb250cm9sIC0gVHJlYmxlJyxpbmRleD0wCisKK1RoaXMgY29udHJvbCBzZXRzIHRoZSB0cmVibGUgaW50ZW5zaXR5LiBUaGVyZSBpcyBubyBuZXV0cmFsIHZhbHVlISEKK1doZW4gdGhlIHRvbmUgY29udHJvbCBjb2RlIGlzIGFjdGl2YXRlZCwgdGhlIHNhbXBsZXMgYXJlIGFsd2F5cyBtb2RpZmllZC4KK1RoZSBjbG9zZXN0IHZhbHVlIHRvIHB1cmUgc2lnbmFsIGlzIDIwLgorCituYW1lPSdJRUM5NTggT3B0aWNhbCBSYXcgUGxheWJhY2sgU3dpdGNoJyxpbmRleD0wCisKK0lmIHRoaXMgc3dpdGNoIGlzIG9uLCB0aGVuIHRoZSBzYW1wbGVzIGZvciB0aGUgSUVDOTU4IChTL1BESUYpIGRpZ2l0YWwKK291dHB1dCBhcmUgdGFrZW4gb25seSBmcm9tIHRoZSByYXcgRlg4MDEwIFBDTSwgb3RoZXJ3aXNlIHN0YW5kYXJkIGZyb250CitQQ00gc2FtcGxlcyBhcmUgdGFrZW4uCisKK25hbWU9J0hlYWRwaG9uZSBQbGF5YmFjayBWb2x1bWUnLGluZGV4PTEKKworVGhpcyBjb250cm9sIGF0dGVudWF0ZXMgdGhlIHNhbXBsZXMgZm9yIHRoZSBoZWFkcGhvbmUgb3V0cHV0LgorCituYW1lPSdIZWFkcGhvbmUgQ2VudGVyIFBsYXliYWNrIFN3aXRjaCcsaW5kZXg9MQorCitJZiB0aGlzIHN3aXRjaCBpcyBvbiwgdGhlbiB0aGUgc2FtcGxlIGZvciB0aGUgY2VudGVyIFBDTSBpcyBwdXQgdG8gdGhlCitsZWZ0IGhlYWRwaG9uZSBvdXRwdXQgKHVzZWZ1bCBmb3IgU0IgTGl2ZSBjYXJkcyB3aXRob3V0IHNlcGFyYXRlIGNlbnRlci9MRkUKK291dHB1dCkuCisKK25hbWU9J0hlYWRwaG9uZSBMRkUgUGxheWJhY2sgU3dpdGNoJyxpbmRleD0xCisKK0lmIHRoaXMgc3dpdGNoIGlzIG9uLCB0aGVuIHRoZSBzYW1wbGUgZm9yIHRoZSBjZW50ZXIgUENNIGlzIHB1dCB0byB0aGUKK3JpZ2h0IGhlYWRwaG9uZSBvdXRwdXQgKHVzZWZ1bCBmb3IgU0IgTGl2ZSBjYXJkcyB3aXRob3V0IHNlcGFyYXRlIGNlbnRlci9MRkUKK291dHB1dCkuCisKKworMykgUENNIHN0cmVhbSByZWxhdGVkIGNvbnRyb2xzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZT0nRU1VMTBLMSBQQ00gVm9sdW1lJyxpbmRleCAwLTMxCisKK0NoYW5uZWwgdm9sdW1lIGF0dGVudWF0aW9uIGluIHJhbmdlIDAtMHhmZmZmLiBUaGUgbWF4aW11bSB2YWx1ZSAobm8KK2F0dGVudWF0aW9uKSBpcyBkZWZhdWx0LiBUaGUgY2hhbm5lbCBtYXBwaW5nIGZvciB0aHJlZSB2YWx1ZXMgaXMKK2FzIGZvbGxvd3M6CisKKwkwIC0gbW9ubywgZGVmYXVsdCAweGZmZmYgKG5vIGF0dGVudWF0aW9uKQorCTEgLSBsZWZ0LCBkZWZhdWx0IDB4ZmZmZiAobm8gYXR0ZW51YXRpb24pCisJMiAtIHJpZ2h0LCBkZWZhdWx0IDB4ZmZmZiAobm8gYXR0ZW51YXRpb24pCisKK25hbWU9J0VNVTEwSzEgUENNIFNlbmQgUm91dGluZycsaW5kZXggMC0zMQorCitUaGlzIGNvbnRyb2wgc3BlY2lmaWVzIHRoZSBkZXN0aW5hdGlvbiAtIEZYLWJ1cyBhY2N1bXVsYXRvcnMuIFRoZXJlIGFyZQordHdlbHZlIHZhbHVlcyB3aXRoIHRoaXMgbWFwcGluZzoKKworCSAwIC0gIG1vbm8sIEEgZGVzdGluYXRpb24gKEZYLWJ1cyAwLTE1KSwgZGVmYXVsdCAwCisJIDEgLSAgbW9ubywgQiBkZXN0aW5hdGlvbiAoRlgtYnVzIDAtMTUpLCBkZWZhdWx0IDEKKwkgMiAtICBtb25vLCBDIGRlc3RpbmF0aW9uIChGWC1idXMgMC0xNSksIGRlZmF1bHQgMgorCSAzIC0gIG1vbm8sIEQgZGVzdGluYXRpb24gKEZYLWJ1cyAwLTE1KSwgZGVmYXVsdCAzCisJIDQgLSAgbGVmdCwgQSBkZXN0aW5hdGlvbiAoRlgtYnVzIDAtMTUpLCBkZWZhdWx0IDAKKwkgNSAtICBsZWZ0LCBCIGRlc3RpbmF0aW9uIChGWC1idXMgMC0xNSksIGRlZmF1bHQgMQorCSA2IC0gIGxlZnQsIEMgZGVzdGluYXRpb24gKEZYLWJ1cyAwLTE1KSwgZGVmYXVsdCAyCisJIDcgLSAgbGVmdCwgRCBkZXN0aW5hdGlvbiAoRlgtYnVzIDAtMTUpLCBkZWZhdWx0IDMKKwkgOCAtIHJpZ2h0LCBBIGRlc3RpbmF0aW9uIChGWC1idXMgMC0xNSksIGRlZmF1bHQgMAorCSA5IC0gcmlnaHQsIEIgZGVzdGluYXRpb24gKEZYLWJ1cyAwLTE1KSwgZGVmYXVsdCAxCisJMTAgLSByaWdodCwgQyBkZXN0aW5hdGlvbiAoRlgtYnVzIDAtMTUpLCBkZWZhdWx0IDIKKwkxMSAtIHJpZ2h0LCBEIGRlc3RpbmF0aW9uIChGWC1idXMgMC0xNSksIGRlZmF1bHQgMworCitEb24ndCBmb3JnZXQgdGhhdCBpdCdzIGlsbGVnYWwgdG8gYXNzaWduIGEgY2hhbm5lbCB0byB0aGUgc2FtZSBGWC1idXMgYWNjdW11bGF0b3IgCittb3JlIHRoYW4gb25jZSAoaXQgbWVhbnMgMD0wICYmIDE9MCBpcyBhbiBpbnZhbGlkIGNvbWJpbmF0aW9uKS4KKyAKK25hbWU9J0VNVTEwSzEgUENNIFNlbmQgVm9sdW1lJyxpbmRleCAwLTMxCisKK0l0IHNwZWNpZmllcyB0aGUgYXR0ZW51YXRpb24gKGFtb3VudCkgZm9yIGdpdmVuIGRlc3RpbmF0aW9uIGluIHJhbmdlIDAtMjU1LgorVGhlIGNoYW5uZWwgbWFwcGluZyBpcyBmb2xsb3dpbmc6CisKKwkgMCAtICBtb25vLCBBIGRlc3RpbmF0aW9uIGF0dG4sIGRlZmF1bHQgMjU1IChubyBhdHRlbnVhdGlvbikKKwkgMSAtICBtb25vLCBCIGRlc3RpbmF0aW9uIGF0dG4sIGRlZmF1bHQgMjU1IChubyBhdHRlbnVhdGlvbikKKwkgMiAtICBtb25vLCBDIGRlc3RpbmF0aW9uIGF0dG4sIGRlZmF1bHQgMCAobXV0ZSkKKwkgMyAtICBtb25vLCBEIGRlc3RpbmF0aW9uIGF0dG4sIGRlZmF1bHQgMCAobXV0ZSkKKwkgNCAtICBsZWZ0LCBBIGRlc3RpbmF0aW9uIGF0dG4sIGRlZmF1bHQgMjU1IChubyBhdHRlbnVhdGlvbikKKwkgNSAtICBsZWZ0LCBCIGRlc3RpbmF0aW9uIGF0dG4sIGRlZmF1bHQgMCAobXV0ZSkKKwkgNiAtICBsZWZ0LCBDIGRlc3RpbmF0aW9uIGF0dG4sIGRlZmF1bHQgMCAobXV0ZSkKKwkgNyAtICBsZWZ0LCBEIGRlc3RpbmF0aW9uIGF0dG4sIGRlZmF1bHQgMCAobXV0ZSkKKwkgOCAtIHJpZ2h0LCBBIGRlc3RpbmF0aW9uIGF0dG4sIGRlZmF1bHQgMCAobXV0ZSkKKwkgOSAtIHJpZ2h0LCBCIGRlc3RpbmF0aW9uIGF0dG4sIGRlZmF1bHQgMjU1IChubyBhdHRlbnVhdGlvbikKKwkxMCAtIHJpZ2h0LCBDIGRlc3RpbmF0aW9uIGF0dG4sIGRlZmF1bHQgMCAobXV0ZSkKKwkxMSAtIHJpZ2h0LCBEIGRlc3RpbmF0aW9uIGF0dG4sIGRlZmF1bHQgMCAobXV0ZSkKKworCisKKzQpIE1BTlVBTFMvUEFURU5UUzoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworZnRwOi8vb3BlbnNvdXJjZS5jcmVhdGl2ZS5jb20vcHViL2RvYworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgICAgIEZpbGVzOgorICAgICAgICBMTTQ1NDUucGRmICAgICAgQUM5NyBDb2RlYworCisgICAgICAgIG0yMDQ5LnBkZiAgICAgICBUaGUgRU1VMTBLMSBEaWdpdGFsIEF1ZGlvIFByb2Nlc3NvcgorCisgICAgICAgIGhvZzYzLnBzICAgICAgICBGWDgwMTAgLSBBIERTUCBDaGlwIEFyY2hpdGVjdHVyZSBmb3IgQXVkaW8gRWZmZWN0cworCisKK1dJUE8gUGF0ZW50cworLS0tLS0tLS0tLS0tCisgICAgICAgIFBhdGVudCBudW1iZXJzOgorICAgICAgICBXTyA5OTAxODEzIChBMSkgQXVkaW8gRWZmZWN0cyBQcm9jZXNzb3Igd2l0aCBtdWx0aXBsZSBhc3luY2hyb25vdXMgKEphbi4gMTQsIDE5OTkpCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1zCisKKyAgICAgICAgV08gOTkwMTgxNCAoQTEpIFByb2Nlc3NvciB3aXRoIEluc3RydWN0aW9uIFNldCBmb3IgQXVkaW8gRWZmZWN0cyAoSmFuLiAxNCwgMTk5OSkKKworICAgICAgICBXTyA5OTAxOTUzIChBMSkgQXVkaW8gRWZmZWN0cyBQcm9jZXNzb3IgaGF2aW5nIERlY291cGxlZCBJbnN0cnVjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgRXhlY3V0aW9uIGFuZCBBdWRpbyBEYXRhIFNlcXVlbmNpbmcgKEphbi4gMTQsIDE5OTkpCisKKworVVMgUGF0ZW50cyAoaHR0cDovL3d3dy51c3B0by5nb3YvKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgICAgIFVTIDU5MjU4NDEgICAgICBEaWdpdGFsIFNhbXBsaW5nIEluc3RydW1lbnQgZW1wbG95aW5nIGNhY2hlIG1lbW9yeSAoSnVsLiAyMCwgMTk5OSkKKworICAgICAgICBVUyA1OTI4MzQyICAgICAgQXVkaW8gRWZmZWN0cyBQcm9jZXNzb3IgaW50ZWdyYXRlZCBvbiBhIHNpbmdsZSBjaGlwIChKdWwuIDI3LCAxOTk5KQorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhIG11bHRpcG9ydCBtZW1vcnkgb250byB3aGljaCBtdWx0aXBsZSBhc3luY2hyb25vdXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2l0YWwgc291bmQgc2FtcGxlcyBjYW4gYmUgY29uY3VycmVudGx5IGxvYWRlZAorCisgICAgICAgIFVTIDU5MzAxNTggICAgICBQcm9jZXNzb3Igd2l0aCBJbnN0cnVjdGlvbiBTZXQgZm9yIEF1ZGlvIEVmZmVjdHMgKEp1bC4gMjcsIDE5OTkpCisKKyAgICAgICAgVVMgNjAzMjIzNSAgICAgIE1lbW9yeSBpbml0aWFsaXphdGlvbiBjaXJjdWl0IChUcmFtKSAoRmViLiAyOSwgMjAwMCkKKworICAgICAgICBVUyA2MTM4MjA3ICAgICAgSW50ZXJwb2xhdGlvbiBsb29waW5nIG9mIGF1ZGlvIHNhbXBsZXMgaW4gY2FjaGUgY29ubmVjdGVkIHRvICAgIChPY3QuIDI0LCAyMDAwKQorICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIGJ1cyB3aXRoIHByaW9yaXRpemF0aW9uIGFuZCBtb2RpZmljYXRpb24gb2YgYnVzIHRyYW5zZmVycworICAgICAgICAgICAgICAgICAgICAgICAgaW4gYWNjb3JkYW5jZSB3aXRoIGxvb3AgZW5kcyBhbmQgbWluaW11bSBibG9jayBzaXplcworCisgICAgICAgIFVTIDYxNTE2NzAgICAgICBNZXRob2QgZm9yIGNvbnNlcnZpbmcgbWVtb3J5IHN0b3JhZ2UgdXNpbmcgYSAoTm92LiAyMSwgMjAwMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvb2wgb2YgIHNob3J0IHRlcm0gbWVtb3J5IHJlZ2lzdGVycworCisgICAgICAgIFVTIDYxOTU3MTUgICAgICBJbnRlcnJ1cHQgY29udHJvbCBmb3IgbXVsdGlwbGUgcHJvZ3JhbXMgY29tbXVuaWNhdGluZyB3aXRoICAgICAgKEZlYi4gMjcsIDIwMDEpCisgICAgICAgICAgICAgICAgICAgICAgICBhIGNvbW1vbiBpbnRlcnJ1cHQgYnkgYXNzb2NpYXRpbmcgcHJvZ3JhbXMgdG8gR1AgcmVnaXN0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5pbmcgaW50ZXJydXB0IHJlZ2lzdGVyLCBwb2xsaW5nIEdQIHJlZ2lzdGVycywgYW5kIGludm9raW5nCisgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayByb3V0aW5lIGFzc29jaWF0ZWQgd2l0aCBkZWZpbmVkIGludGVycnVwdCByZWdpc3RlcgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL1ZJQTgyeHgtbWl4ZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL1ZJQTgyeHgtbWl4ZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiMGFjMDYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvVklBODJ4eC1taXhlci50eHQKQEAgLTAsMCArMSw4IEBACisKKwkJCQlWSUE4Mnh4IG1peGVyCisJCQkJPT09PT09PT09PT09PQorCitPbiBtYW55IFZJQTgyeHggYm9hcmRzLCB0aGUgJ0lucHV0IFNvdXJjZSBTZWxlY3QnIG1peGVyIGNvbnRyb2wgZG9lcyBub3Qgd29yay4KK1NldHRpbmcgaXQgdG8gJ0lucHV0Micgb24gc3VjaCBib2FyZHMgd2lsbCBjYXVzZSByZWNvcmRpbmcgdG8gaGFuZywgb3IgZmFpbAord2l0aCBFSU8gKGlucHV0L291dHB1dCBlcnJvcikgdmlhIE9TUyBlbXVsYXRpb24uICBUaGlzIGNvbnRyb2wgc2hvdWxkIGJlIGxlZnQKK2F0ICdJbnB1dDEnIGZvciBzdWNoIGNhcmRzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL2Fsc2EtcGFyYW1ldGVycy50eHQgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvYWxzYS1wYXJhbWV0ZXJzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmE0MDY3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL2Fsc2EtcGFyYW1ldGVycy50eHQKQEAgLTAsMCArMSwxMzUgQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQUxTQSBLZXJuZWwgUGFyYW1ldGVycworICAgICAgICAgICAgICAgICAgICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1NlZSBEb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCBmb3IgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvbgorc3BlY2lmeWluZyBtb2R1bGUgcGFyYW1ldGVycy4KKworVGhpcyBkb2N1bWVudCBtYXkgbm90IGJlIGVudGlyZWx5IHVwIHRvIGRhdGUgYW5kIGNvbXByZWhlbnNpdmUuIFRoZSBjb21tYW5kCisibW9kaW5mbyAtcCAke21vZHVsZW5hbWV9IiBzaG93cyBhIGN1cnJlbnQgbGlzdCBvZiBhbGwgcGFyYW1ldGVycyBvZiBhIGxvYWRhYmxlCittb2R1bGUuIExvYWRhYmxlIG1vZHVsZXMsIGFmdGVyIGJlaW5nIGxvYWRlZCBpbnRvIHRoZSBydW5uaW5nIGtlcm5lbCwgYWxzbworcmV2ZWFsIHRoZWlyIHBhcmFtZXRlcnMgaW4gL3N5cy9tb2R1bGUvJHttb2R1bGVuYW1lfS9wYXJhbWV0ZXJzLy4gU29tZSBvZiB0aGVzZQorcGFyYW1ldGVycyBtYXkgYmUgY2hhbmdlZCBhdCBydW50aW1lIGJ5IHRoZSBjb21tYW5kCisiZWNobyAtbiAke3ZhbHVlfSA+IC9zeXMvbW9kdWxlLyR7bW9kdWxlbmFtZX0vcGFyYW1ldGVycy8ke3Bhcm19Ii4KKworCisJc25kLWFkMTgxNmE9CVtIVyxBTFNBXQorCisJc25kLWFkMTg0OD0JW0hXLEFMU0FdCisKKwlzbmQtYWxpNTQ1MT0JW0hXLEFMU0FdCisKKwlzbmQtYWxzMTAwPQlbSFcsQUxTQV0KKworCXNuZC1hbHM0MDAwPQlbSFcsQUxTQV0KKworCXNuZC1henQyMzIwPQlbSFcsQUxTQV0KKworCXNuZC1jbWk4MzMwPQlbSFcsQUxTQV0KKworCXNuZC1jbWlwY2k9CVtIVyxBTFNBXQorCisJc25kLWNzNDIzMT0JW0hXLEFMU0FdCisKKwlzbmQtY3M0MjMyPQlbSFcsQUxTQV0KKworCXNuZC1jczQyMzY9CVtIVyxBTFNBXQorCisJc25kLWNzNDI4MT0JW0hXLEFMU0FdCisKKwlzbmQtY3M0Nnh4PQlbSFcsQUxTQV0KKworCXNuZC1kdDAxOXg9CVtIVyxBTFNBXQorCisJc25kLWR1bW15PQlbSFcsQUxTQV0KKworCXNuZC1lbXUxMGsxPQlbSFcsQUxTQV0KKworCXNuZC1lbnMxMzcwPQlbSFcsQUxTQV0KKworCXNuZC1lbnMxMzcxPQlbSFcsQUxTQV0KKworCXNuZC1lczk2OD0JW0hXLEFMU0FdCisKKwlzbmQtZXMxNjg4PQlbSFcsQUxTQV0KKworCXNuZC1lczE4eHg9CVtIVyxBTFNBXQorCisJc25kLWVzMTkzOD0JW0hXLEFMU0FdCisKKwlzbmQtZXMxOTY4PQlbSFcsQUxTQV0KKworCXNuZC1mbTgwMT0JW0hXLEFMU0FdCisKKwlzbmQtZ3VzY2xhc3NpYz0JW0hXLEFMU0FdCisKKwlzbmQtZ3VzZXh0cmVtZT0JW0hXLEFMU0FdCisKKwlzbmQtZ3VzbWF4PQlbSFcsQUxTQV0KKworCXNuZC1oZHNwPQlbSFcsQUxTQV0KKworCXNuZC1pY2UxNzEyPQlbSFcsQUxTQV0KKworCXNuZC1pbnRlbDh4MD0JW0hXLEFMU0FdCisKKwlzbmQtaW50ZXJ3YXZlPQlbSFcsQUxTQV0KKworCXNuZC1pbnRlcndhdmUtc3RiPQorCQkJW0hXLEFMU0FdCisKKwlzbmQta29yZzEyMTI9CVtIVyxBTFNBXQorCisJc25kLW1hZXN0cm8zPQlbSFcsQUxTQV0KKworCXNuZC1tcHU0MDE9CVtIVyxBTFNBXQorCisJc25kLW10cGF2PQlbSFcsQUxTQV0KKworCXNuZC1ubTI1Nj0JW0hXLEFMU0FdCisKKwlzbmQtb3BsM3NhMj0JW0hXLEFMU0FdCisKKwlzbmQtb3B0aTkyeC1hZDE4NDg9CisJCQlbSFcsQUxTQV0KKworCXNuZC1vcHRpOTJ4LWNzNDIzMT0KKwkJCVtIVyxBTFNBXQorCisJc25kLW9wdGk5M3g9CVtIVyxBTFNBXQorCisJc25kLXBtYWM9CVtIVyxBTFNBXQorCisJc25kLXJtZTMyPQlbSFcsQUxTQV0KKworCXNuZC1ybWU5Nj0JW0hXLEFMU0FdCisKKwlzbmQtcm1lOTY1Mj0JW0hXLEFMU0FdCisKKwlzbmQtc2I4PQlbSFcsQUxTQV0KKworCXNuZC1zYjE2PQlbSFcsQUxTQV0KKworCXNuZC1zYmF3ZT0JW0hXLEFMU0FdCisKKwlzbmQtc2VyaWFsPQlbSFcsQUxTQV0KKworCXNuZC1zZ2FsYXh5PQlbSFcsQUxTQV0KKworCXNuZC1zb25pY3ZpYmVzPQlbSFcsQUxTQV0KKworCXNuZC1zdW4tYW1kNzkzMD0KKwkJCVtIVyxBTFNBXQorCisJc25kLXN1bi1jczQyMzE9CVtIVyxBTFNBXQorCisJc25kLXRyaWRlbnQ9CVtIVyxBTFNBXQorCisJc25kLXVzYi1hdWRpbz0JW0hXLEFMU0EsVVNCXQorCisJc25kLXZpYTgyeHg9CVtIVyxBTFNBXQorCisJc25kLXZpcm1pZGk9CVtIVyxBTFNBXQorCisJc25kLXdhdmVmcm9udD0JW0hXLEFMU0FdCisKKwlzbmQteW1mcGNpPQlbSFcsQUxTQV0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9jb21wcmVzc19vZmZsb2FkLnR4dCBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9jb21wcmVzc19vZmZsb2FkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzBjNDkyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL2NvbXByZXNzX29mZmxvYWQudHh0CkBAIC0wLDAgKzEsMjM0IEBACisJCWNvbXByZXNzX29mZmxvYWQudHh0CisJCT09PT09PT09PT09PT09PT09PT09PQorCVBpZXJyZS1Mb3Vpcy5Cb3NzYXJ0IDxwaWVycmUtbG91aXMuYm9zc2FydEBsaW51eC5pbnRlbC5jb20+CisJCVZpbm9kIEtvdWwgPHZpbm9kLmtvdWxAbGludXguaW50ZWwuY29tPgorCitPdmVydmlldworCitTaW5jZSBpdHMgZWFybHkgZGF5cywgdGhlIEFMU0EgQVBJIHdhcyBkZWZpbmVkIHdpdGggUENNIHN1cHBvcnQgb3IKK2NvbnN0YW50IGJpdHJhdGVzIHBheWxvYWRzIHN1Y2ggYXMgSUVDNjE5MzcgaW4gbWluZC4gQXJndW1lbnRzIGFuZAorcmV0dXJuZWQgdmFsdWVzIGluIGZyYW1lcyBhcmUgdGhlIG5vcm0sIG1ha2luZyBpdCBhIGNoYWxsZW5nZSB0bworZXh0ZW5kIHRoZSBleGlzdGluZyBBUEkgdG8gY29tcHJlc3NlZCBkYXRhIHN0cmVhbXMuCisKK0luIHJlY2VudCB5ZWFycywgYXVkaW8gZGlnaXRhbCBzaWduYWwgcHJvY2Vzc29ycyAoRFNQKSB3ZXJlIGludGVncmF0ZWQKK2luIHN5c3RlbS1vbi1jaGlwIGRlc2lnbnMsIGFuZCBEU1BzIGFyZSBhbHNvIGludGVncmF0ZWQgaW4gYXVkaW8KK2NvZGVjcy4gUHJvY2Vzc2luZyBjb21wcmVzc2VkIGRhdGEgb24gc3VjaCBEU1BzIHJlc3VsdHMgaW4gYSBkcmFtYXRpYworcmVkdWN0aW9uIG9mIHBvd2VyIGNvbnN1bXB0aW9uIGNvbXBhcmVkIHRvIGhvc3QtYmFzZWQKK3Byb2Nlc3NpbmcuIFN1cHBvcnQgZm9yIHN1Y2ggaGFyZHdhcmUgaGFzIG5vdCBiZWVuIHZlcnkgZ29vZCBpbiBMaW51eCwKK21vc3RseSBiZWNhdXNlIG9mIGEgbGFjayBvZiBhIGdlbmVyaWMgQVBJIGF2YWlsYWJsZSBpbiB0aGUgbWFpbmxpbmUKK2tlcm5lbC4KKworUmF0aGVyIHRoYW4gcmVxdWlyaW5nIGEgY29tcGF0aWJpbGl0eSBicmVhayB3aXRoIGFuIEFQSSBjaGFuZ2Ugb2YgdGhlCitBTFNBIFBDTSBpbnRlcmZhY2UsIGEgbmV3ICdDb21wcmVzc2VkIERhdGEnIEFQSSBpcyBpbnRyb2R1Y2VkIHRvCitwcm92aWRlIGEgY29udHJvbCBhbmQgZGF0YS1zdHJlYW1pbmcgaW50ZXJmYWNlIGZvciBhdWRpbyBEU1BzLgorCitUaGUgZGVzaWduIG9mIHRoaXMgQVBJIHdhcyBpbnNwaXJlZCBieSB0aGUgMi15ZWFyIGV4cGVyaWVuY2Ugd2l0aCB0aGUKK0ludGVsIE1vb3Jlc3Rvd24gU09DLCB3aXRoIG1hbnkgY29ycmVjdGlvbnMgcmVxdWlyZWQgdG8gdXBzdHJlYW0gdGhlCitBUEkgaW4gdGhlIG1haW5saW5lIGtlcm5lbCBpbnN0ZWFkIG9mIHRoZSBzdGFnaW5nIHRyZWUgYW5kIG1ha2UgaXQKK3VzYWJsZSBieSBvdGhlcnMuCisKK1JlcXVpcmVtZW50cworCitUaGUgbWFpbiByZXF1aXJlbWVudHMgYXJlOgorCistIHNlcGFyYXRpb24gYmV0d2VlbiBieXRlIGNvdW50cyBhbmQgdGltZS4gQ29tcHJlc3NlZCBmb3JtYXRzIG1heSBoYXZlCisgIGEgaGVhZGVyIHBlciBmaWxlLCBwZXIgZnJhbWUsIG9yIG5vIGhlYWRlciBhdCBhbGwuIFRoZSBwYXlsb2FkIHNpemUKKyAgbWF5IHZhcnkgZnJvbSBmcmFtZS10by1mcmFtZS4gQXMgYSByZXN1bHQsIGl0IGlzIG5vdCBwb3NzaWJsZSB0bworICBlc3RpbWF0ZSByZWxpYWJseSB0aGUgZHVyYXRpb24gb2YgYXVkaW8gYnVmZmVycyB3aGVuIGhhbmRsaW5nCisgIGNvbXByZXNzZWQgZGF0YS4gRGVkaWNhdGVkIG1lY2hhbmlzbXMgYXJlIHJlcXVpcmVkIHRvIGFsbG93IGZvcgorICByZWxpYWJsZSBhdWRpby12aWRlbyBzeW5jaHJvbml6YXRpb24sIHdoaWNoIHJlcXVpcmVzIHByZWNpc2UKKyAgcmVwb3J0aW5nIG9mIHRoZSBudW1iZXIgb2Ygc2FtcGxlcyByZW5kZXJlZCBhdCBhbnkgZ2l2ZW4gdGltZS4KKworLSBIYW5kbGluZyBvZiBtdWx0aXBsZSBmb3JtYXRzLiBQQ00gZGF0YSBvbmx5IHJlcXVpcmVzIGEgc3BlY2lmaWNhdGlvbgorICBvZiB0aGUgc2FtcGxpbmcgcmF0ZSwgbnVtYmVyIG9mIGNoYW5uZWxzIGFuZCBiaXRzIHBlciBzYW1wbGUuIEluCisgIGNvbnRyYXN0LCBjb21wcmVzc2VkIGRhdGEgY29tZXMgaW4gYSB2YXJpZXR5IG9mIGZvcm1hdHMuIEF1ZGlvIERTUHMKKyAgbWF5IGFsc28gcHJvdmlkZSBzdXBwb3J0IGZvciBhIGxpbWl0ZWQgbnVtYmVyIG9mIGF1ZGlvIGVuY29kZXJzIGFuZAorICBkZWNvZGVycyBlbWJlZGRlZCBpbiBmaXJtd2FyZSwgb3IgbWF5IHN1cHBvcnQgbW9yZSBjaG9pY2VzIHRocm91Z2gKKyAgZHluYW1pYyBkb3dubG9hZCBvZiBsaWJyYXJpZXMuCisKKy0gRm9jdXMgb24gbWFpbiBmb3JtYXRzLiBUaGlzIEFQSSBwcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgbW9zdAorICBwb3B1bGFyIGZvcm1hdHMgdXNlZCBmb3IgYXVkaW8gYW5kIHZpZGVvIGNhcHR1cmUgYW5kIHBsYXliYWNrLiBJdCBpcworICBsaWtlbHkgdGhhdCBhcyBhdWRpbyBjb21wcmVzc2lvbiB0ZWNobm9sb2d5IGFkdmFuY2VzLCBuZXcgZm9ybWF0cworICB3aWxsIGJlIGFkZGVkLgorCistIEhhbmRsaW5nIG9mIG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zLiBFdmVuIGZvciBhIGdpdmVuIGZvcm1hdCBsaWtlCisgIEFBQywgc29tZSBpbXBsZW1lbnRhdGlvbnMgbWF5IHN1cHBvcnQgQUFDIG11bHRpY2hhbm5lbCBidXQgSEUtQUFDCisgIHN0ZXJlby4gTGlrZXdpc2UgV01BMTAgbGV2ZWwgTTMgbWF5IHJlcXVpcmUgdG9vIG11Y2ggbWVtb3J5IGFuZCBjcHUKKyAgY3ljbGVzLiBUaGUgbmV3IEFQSSBuZWVkcyB0byBwcm92aWRlIGEgZ2VuZXJpYyB3YXkgb2YgbGlzdGluZyB0aGVzZQorICBmb3JtYXRzLgorCistIFJlbmRlcmluZy9HcmFiYmluZyBvbmx5LiBUaGlzIEFQSSBkb2VzIG5vdCBwcm92aWRlIGFueSBtZWFucyBvZgorICBoYXJkd2FyZSBhY2NlbGVyYXRpb24sIHdoZXJlIFBDTSBzYW1wbGVzIGFyZSBwcm92aWRlZCBiYWNrIHRvCisgIHVzZXItc3BhY2UgZm9yIGFkZGl0aW9uYWwgcHJvY2Vzc2luZy4gVGhpcyBBUEkgZm9jdXNlcyBpbnN0ZWFkIG9uCisgIHN0cmVhbWluZyBjb21wcmVzc2VkIGRhdGEgdG8gYSBEU1AsIHdpdGggdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUKKyAgZGVjb2RlZCBzYW1wbGVzIGFyZSByb3V0ZWQgdG8gYSBwaHlzaWNhbCBvdXRwdXQgb3IgbG9naWNhbCBiYWNrLWVuZC4KKworIC0gQ29tcGxleGl0eSBoaWRpbmcuIEV4aXN0aW5nIHVzZXItc3BhY2UgbXVsdGltZWRpYSBmcmFtZXdvcmtzIGFsbAorICBoYXZlIGV4aXN0aW5nIGVudW1zL3N0cnVjdHVyZXMgZm9yIGVhY2ggY29tcHJlc3NlZCBmb3JtYXQuIFRoaXMgbmV3CisgIEFQSSBhc3N1bWVzIHRoZSBleGlzdGVuY2Ugb2YgYSBwbGF0Zm9ybS1zcGVjaWZpYyBjb21wYXRpYmlsaXR5IGxheWVyCisgIHRvIGV4cG9zZSwgdHJhbnNsYXRlIGFuZCBtYWtlIHVzZSBvZiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBhdWRpbworICBEU1AsIGVnLiBBbmRyb2lkIEhBTCBvciBQdWxzZUF1ZGlvIHNpbmtzLiBCeSBjb25zdHJ1Y3Rpb24sIHJlZ3VsYXIKKyAgYXBwbGljYXRpb25zIGFyZSBub3Qgc3VwcG9zZWQgdG8gbWFrZSB1c2Ugb2YgdGhpcyBBUEkuCisKKworRGVzaWduCisKK1RoZSBuZXcgQVBJIHNoYXJlcyBhIG51bWJlciBvZiBjb25jZXB0cyB3aXRoIHRoZSBQQ00gQVBJIGZvciBmbG93Citjb250cm9sLiBTdGFydCwgcGF1c2UsIHJlc3VtZSwgZHJhaW4gYW5kIHN0b3AgY29tbWFuZHMgaGF2ZSB0aGUgc2FtZQorc2VtYW50aWNzIG5vIG1hdHRlciB3aGF0IHRoZSBjb250ZW50IGlzLgorCitUaGUgY29uY2VwdCBvZiBtZW1vcnkgcmluZyBidWZmZXIgZGl2aWRlZCBpbiBhIHNldCBvZiBmcmFnbWVudHMgaXMKK2JvcnJvd2VkIGZyb20gdGhlIEFMU0EgUENNIEFQSS4gSG93ZXZlciwgb25seSBzaXplcyBpbiBieXRlcyBjYW4gYmUKK3NwZWNpZmllZC4KKworU2Vla3MvdHJpY2sgbW9kZXMgYXJlIGFzc3VtZWQgdG8gYmUgaGFuZGxlZCBieSB0aGUgaG9zdC4KKworVGhlIG5vdGlvbiBvZiByZXdpbmRzL2ZvcndhcmRzIGlzIG5vdCBzdXBwb3J0ZWQuIERhdGEgY29tbWl0dGVkIHRvIHRoZQorcmluZyBidWZmZXIgY2Fubm90IGJlIGludmFsaWRhdGVkLCBleGNlcHQgd2hlbiBkcm9wcGluZyBhbGwgYnVmZmVycy4KKworVGhlIENvbXByZXNzZWQgRGF0YSBBUEkgZG9lcyBub3QgbWFrZSBhbnkgYXNzdW1wdGlvbnMgb24gaG93IHRoZSBkYXRhCitpcyB0cmFuc21pdHRlZCB0byB0aGUgYXVkaW8gRFNQLiBETUEgdHJhbnNmZXJzIGZyb20gbWFpbiBtZW1vcnkgdG8gYW4KK2VtYmVkZGVkIGF1ZGlvIGNsdXN0ZXIgb3IgdG8gYSBTUEkgaW50ZXJmYWNlIGZvciBleHRlcm5hbCBEU1BzIGFyZQorcG9zc2libGUuIEFzIGluIHRoZSBBTFNBIFBDTSBjYXNlLCBhIGNvcmUgc2V0IG9mIHJvdXRpbmVzIGlzIGV4cG9zZWQ7CitlYWNoIGRyaXZlciBpbXBsZW1lbnRlciB3aWxsIGhhdmUgdG8gd3JpdGUgc3VwcG9ydCBmb3IgYSBzZXQgb2YKK21hbmRhdG9yeSByb3V0aW5lcyBhbmQgcG9zc2libHkgbWFrZSB1c2Ugb2Ygb3B0aW9uYWwgb25lcy4KKworVGhlIG1haW4gYWRkaXRpb25zIGFyZQorCistIGdldF9jYXBzCitUaGlzIHJvdXRpbmUgcmV0dXJucyB0aGUgbGlzdCBvZiBhdWRpbyBmb3JtYXRzIHN1cHBvcnRlZC4gUXVlcnlpbmcgdGhlCitjb2RlY3Mgb24gYSBjYXB0dXJlIHN0cmVhbSB3aWxsIHJldHVybiBlbmNvZGVycywgZGVjb2RlcnMgd2lsbCBiZQorbGlzdGVkIGZvciBwbGF5YmFjayBzdHJlYW1zLgorCistIGdldF9jb2RlY19jYXBzIEZvciBlYWNoIGNvZGVjLCB0aGlzIHJvdXRpbmUgcmV0dXJucyBhIGxpc3Qgb2YKK2NhcGFiaWxpdGllcy4gVGhlIGludGVudCBpcyB0byBtYWtlIHN1cmUgYWxsIHRoZSBjYXBhYmlsaXRpZXMKK2NvcnJlc3BvbmQgdG8gdmFsaWQgc2V0dGluZ3MsIGFuZCB0byBtaW5pbWl6ZSB0aGUgcmlza3Mgb2YKK2NvbmZpZ3VyYXRpb24gZmFpbHVyZXMuIEZvciBleGFtcGxlLCBmb3IgYSBjb21wbGV4IGNvZGVjIHN1Y2ggYXMgQUFDLAordGhlIG51bWJlciBvZiBjaGFubmVscyBzdXBwb3J0ZWQgbWF5IGRlcGVuZCBvbiBhIHNwZWNpZmljIHByb2ZpbGUuIElmCit0aGUgY2FwYWJpbGl0aWVzIHdlcmUgZXhwb3NlZCB3aXRoIGEgc2luZ2xlIGRlc2NyaXB0b3IsIGl0IG1heSBoYXBwZW4KK3RoYXQgYSBzcGVjaWZpYyBjb21iaW5hdGlvbiBvZiBwcm9maWxlcy9jaGFubmVscy9mb3JtYXRzIG1heSBub3QgYmUKK3N1cHBvcnRlZC4gTGlrZXdpc2UsIGVtYmVkZGVkIERTUHMgaGF2ZSBsaW1pdGVkIG1lbW9yeSBhbmQgY3B1IGN5Y2xlcywKK2l0IGlzIGxpa2VseSB0aGF0IHNvbWUgaW1wbGVtZW50YXRpb25zIG1ha2UgdGhlIGxpc3Qgb2YgY2FwYWJpbGl0aWVzCitkeW5hbWljIGFuZCBkZXBlbmRlbnQgb24gZXhpc3Rpbmcgd29ya2xvYWRzLiBJbiBhZGRpdGlvbiB0byBjb2RlYworc2V0dGluZ3MsIHRoaXMgcm91dGluZSByZXR1cm5zIHRoZSBtaW5pbXVtIGJ1ZmZlciBzaXplIGhhbmRsZWQgYnkgdGhlCitpbXBsZW1lbnRhdGlvbi4gVGhpcyBpbmZvcm1hdGlvbiBjYW4gYmUgYSBmdW5jdGlvbiBvZiB0aGUgRE1BIGJ1ZmZlcgorc2l6ZXMsIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVxdWlyZWQgdG8gc3luY2hyb25pemUsIGV0YywgYW5kIGNhbiBiZQordXNlZCBieSB1c2Vyc3BhY2UgdG8gZGVmaW5lIGhvdyBtdWNoIG5lZWRzIHRvIGJlIHdyaXR0ZW4gaW4gdGhlIHJpbmcKK2J1ZmZlciBiZWZvcmUgcGxheWJhY2sgY2FuIHN0YXJ0LgorCistIHNldF9wYXJhbXMKK1RoaXMgcm91dGluZSBzZXRzIHRoZSBjb25maWd1cmF0aW9uIGNob3NlbiBmb3IgYSBzcGVjaWZpYyBjb2RlYy4gVGhlCittb3N0IGltcG9ydGFudCBmaWVsZCBpbiB0aGUgcGFyYW1ldGVycyBpcyB0aGUgY29kZWMgdHlwZTsgaW4gbW9zdAorY2FzZXMgZGVjb2RlcnMgd2lsbCBpZ25vcmUgb3RoZXIgZmllbGRzLCB3aGlsZSBlbmNvZGVycyB3aWxsIHN0cmljdGx5Citjb21wbHkgdG8gdGhlIHNldHRpbmdzCisKKy0gZ2V0X3BhcmFtcworVGhpcyByb3V0aW5lcyByZXR1cm5zIHRoZSBhY3R1YWwgc2V0dGluZ3MgdXNlZCBieSB0aGUgRFNQLiBDaGFuZ2VzIHRvCit0aGUgc2V0dGluZ3Mgc2hvdWxkIHJlbWFpbiB0aGUgZXhjZXB0aW9uLgorCistIGdldF90aW1lc3RhbXAKK1RoZSB0aW1lc3RhbXAgYmVjb21lcyBhIG11bHRpcGxlIGZpZWxkIHN0cnVjdHVyZS4gSXQgbGlzdHMgdGhlIG51bWJlcgorb2YgYnl0ZXMgdHJhbnNmZXJyZWQsIHRoZSBudW1iZXIgb2Ygc2FtcGxlcyBwcm9jZXNzZWQgYW5kIHRoZSBudW1iZXIKK29mIHNhbXBsZXMgcmVuZGVyZWQvZ3JhYmJlZC4gQWxsIHRoZXNlIHZhbHVlcyBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUKK3RoZSBhdmVyYWdlIGJpdHJhdGUsIGZpZ3VyZSBvdXQgaWYgdGhlIHJpbmcgYnVmZmVyIG5lZWRzIHRvIGJlCityZWZpbGxlZCBvciB0aGUgZGVsYXkgZHVlIHRvIGRlY29kaW5nL2VuY29kaW5nL2lvIG9uIHRoZSBEU1AuCisKK05vdGUgdGhhdCB0aGUgbGlzdCBvZiBjb2RlY3MvcHJvZmlsZXMvbW9kZXMgd2FzIGRlcml2ZWQgZnJvbSB0aGUKK09wZW5NQVggQUwgc3BlY2lmaWNhdGlvbiBpbnN0ZWFkIG9mIHJlaW52ZW50aW5nIHRoZSB3aGVlbC4KK01vZGlmaWNhdGlvbnMgaW5jbHVkZToKKy0gQWRkaXRpb24gb2YgRkxBQyBhbmQgSUVDIGZvcm1hdHMKKy0gTWVyZ2Ugb2YgZW5jb2Rlci9kZWNvZGVyIGNhcGFiaWxpdGllcworLSBQcm9maWxlcy9tb2RlcyBsaXN0ZWQgYXMgYml0bWFza3MgdG8gbWFrZSBkZXNjcmlwdG9ycyBtb3JlIGNvbXBhY3QKKy0gQWRkaXRpb24gb2Ygc2V0X3BhcmFtcyBmb3IgZGVjb2RlcnMgKG1pc3NpbmcgaW4gT3Blbk1BWCBBTCkKKy0gQWRkaXRpb24gb2YgQU1SL0FNUi1XQiBlbmNvZGluZyBtb2RlcyAobWlzc2luZyBpbiBPcGVuTUFYIEFMKQorLSBBZGRpdGlvbiBvZiBmb3JtYXQgaW5mb3JtYXRpb24gZm9yIFdNQQorLSBBZGRpdGlvbiBvZiBlbmNvZGluZyBvcHRpb25zIHdoZW4gcmVxdWlyZWQgKGRlcml2ZWQgZnJvbSBPcGVuTUFYIElMKQorLSBBZGRpdGlvbiBvZiByYXRlQ29udHJvbFN1cHBvcnRlZCAobWlzc2luZyBpbiBPcGVuTUFYIEFMKQorCitHYXBsZXNzIFBsYXliYWNrCis9PT09PT09PT09PT09PT09CitXaGVuIHBsYXlpbmcgdGhydSBhbiBhbGJ1bSwgdGhlIGRlY29kZXJzIGhhdmUgdGhlIGFiaWxpdHkgdG8gc2tpcCB0aGUgZW5jb2RlcgorZGVsYXkgYW5kIHBhZGRpbmcgYW5kIGRpcmVjdGx5IG1vdmUgZnJvbSBvbmUgdHJhY2sgY29udGVudCB0byBhbm90aGVyLiBUaGUgZW5kCit1c2VyIGNhbiBwZXJjZWl2ZSB0aGlzIGFzIGdhcGxlc3MgcGxheWJhY2sgYXMgd2UgZG9udCBoYXZlIHNpbGVuY2Ugd2hpbGUKK3N3aXRjaGluZyBmcm9tIG9uZSB0cmFjayB0byBhbm90aGVyCisKK0Fsc28sIHRoZXJlIG1pZ2h0IGJlIGxvdy1pbnRlbnNpdHkgbm9pc2VzIGR1ZSB0byBlbmNvZGluZy4gUGVyZmVjdCBnYXBsZXNzIGlzCitkaWZmaWN1bHQgdG8gcmVhY2ggd2l0aCBhbGwgdHlwZXMgb2YgY29tcHJlc3NlZCBkYXRhLCBidXQgd29ya3MgZmluZSB3aXRoIG1vc3QKK211c2ljIGNvbnRlbnQuIFRoZSBkZWNvZGVyIG5lZWRzIHRvIGtub3cgdGhlIGVuY29kZXIgZGVsYXkgYW5kIGVuY29kZXIgcGFkZGluZy4KK1NvIHdlIG5lZWQgdG8gcGFzcyB0aGlzIHRvIERTUC4gVGhpcyBtZXRhZGF0YSBpcyBleHRyYWN0ZWQgZnJvbSBJRDMvTVA0IGhlYWRlcnMKK2FuZCBhcmUgbm90IHByZXNlbnQgYnkgZGVmYXVsdCBpbiB0aGUgYml0c3RyZWFtLCBoZW5jZSB0aGUgbmVlZCBmb3IgYSBuZXcKK2ludGVyZmFjZSB0byBwYXNzIHRoaXMgaW5mb3JtYXRpb24gdG8gdGhlIERTUC4gQWxzbyBEU1AgYW5kIHVzZXJzcGFjZSBuZWVkcyB0bworc3dpdGNoIGZyb20gb25lIHRyYWNrIHRvIGFub3RoZXIgYW5kIHN0YXJ0IHVzaW5nIGRhdGEgZm9yIHNlY29uZCB0cmFjay4KKworVGhlIG1haW4gYWRkaXRpb25zIGFyZToKKworLSBzZXRfbWV0YWRhdGEKK1RoaXMgcm91dGluZSBzZXRzIHRoZSBlbmNvZGVyIGRlbGF5IGFuZCBlbmNvZGVyIHBhZGRpbmcuIFRoaXMgY2FuIGJlIHVzZWQgYnkKK2RlY29kZXIgdG8gc3RyaXAgdGhlIHNpbGVuY2UuIFRoaXMgbmVlZHMgdG8gYmUgc2V0IGJlZm9yZSB0aGUgZGF0YSBpbiB0aGUgdHJhY2sKK2lzIHdyaXR0ZW4uCisKKy0gc2V0X25leHRfdHJhY2sKK1RoaXMgcm91dGluZSB0ZWxscyBEU1AgdGhhdCBtZXRhZGF0YSBhbmQgd3JpdGUgb3BlcmF0aW9uIHNlbnQgYWZ0ZXIgdGhpcyB3b3VsZAorY29ycmVzcG9uZCB0byBzdWJzZXF1ZW50IHRyYWNrCisKKy0gcGFydGlhbCBkcmFpbgorVGhpcyBpcyBjYWxsZWQgd2hlbiBlbmQgb2YgZmlsZSBpcyByZWFjaGVkLiBUaGUgdXNlcnNwYWNlIGNhbiBpbmZvcm0gRFNQIHRoYXQKK0VPRiBpcyByZWFjaGVkIGFuZCBub3cgRFNQIGNhbiBzdGFydCBza2lwcGluZyBwYWRkaW5nIGRlbGF5LiBBbHNvIG5leHQgd3JpdGUKK2RhdGEgd291bGQgYmVsb25nIHRvIG5leHQgdHJhY2sKKworU2VxdWVuY2UgZmxvdyBmb3IgZ2FwbGVzcyB3b3VsZCBiZToKKy0gT3BlbgorLSBHZXQgY2FwcyAvIGNvZGVjIGNhcHMKKy0gU2V0IHBhcmFtcworLSBTZXQgbWV0YWRhdGEgb2YgdGhlIGZpcnN0IHRyYWNrCistIEZpbGwgZGF0YSBvZiB0aGUgZmlyc3QgdHJhY2sKKy0gVHJpZ2dlciBzdGFydAorLSBVc2VyLXNwYWNlIGZpbmlzaGVkIHNlbmRpbmcgYWxsLAorLSBJbmRpY2FpdGUgbmV4dCB0cmFjayBkYXRhIGJ5IHNlbmRpbmcgc2V0X25leHRfdHJhY2sKKy0gU2V0IG1ldGFkYXRhIG9mIHRoZSBuZXh0IHRyYWNrCistIHRoZW4gY2FsbCBwYXJ0aWFsX2RyYWluIHRvIGZsdXNoIG1vc3Qgb2YgYnVmZmVyIGluIERTUAorLSBGaWxsIGRhdGEgb2YgdGhlIG5leHQgdHJhY2sKKy0gRFNQIHN3aXRjaGVzIHRvIHNlY29uZCB0cmFjaworKG5vdGU6IG9yZGVyIGZvciBwYXJ0aWFsX2RyYWluIGFuZCB3cml0ZSBmb3IgbmV4dCB0cmFjayBjYW4gYmUgcmV2ZXJzZWQgYXMgd2VsbCkKKworTm90IHN1cHBvcnRlZDoKKworLSBTdXBwb3J0IGZvciBWb0lQL2NpcmN1aXQtc3dpdGNoZWQgY2FsbHMgaXMgbm90IHRoZSB0YXJnZXQgb2YgdGhpcworICBBUEkuIFN1cHBvcnQgZm9yIGR5bmFtaWMgYml0LXJhdGUgY2hhbmdlcyB3b3VsZCByZXF1aXJlIGEgdGlnaHQKKyAgY291cGxpbmcgYmV0d2VlbiB0aGUgRFNQIGFuZCB0aGUgaG9zdCBzdGFjaywgbGltaXRpbmcgcG93ZXIgc2F2aW5ncy4KKworLSBQYWNrZXQtbG9zcyBjb25jZWFsbWVudCBpcyBub3Qgc3VwcG9ydGVkLiBUaGlzIHdvdWxkIHJlcXVpcmUgYW4KKyAgYWRkaXRpb25hbCBpbnRlcmZhY2UgdG8gbGV0IHRoZSBkZWNvZGVyIHN5bnRoZXNpemUgZGF0YSB3aGVuIGZyYW1lcworICBhcmUgbG9zdCBkdXJpbmcgdHJhbnNtaXNzaW9uLiBUaGlzIG1heSBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlLgorCistIFZvbHVtZSBjb250cm9sL3JvdXRpbmcgaXMgbm90IGhhbmRsZWQgYnkgdGhpcyBBUEkuIERldmljZXMgZXhwb3NpbmcgYQorICBjb21wcmVzc2VkIGRhdGEgaW50ZXJmYWNlIHdpbGwgYmUgY29uc2lkZXJlZCBhcyByZWd1bGFyIEFMU0EgZGV2aWNlczsKKyAgdm9sdW1lIGNoYW5nZXMgYW5kIHJvdXRpbmcgaW5mb3JtYXRpb24gd2lsbCBiZSBwcm92aWRlZCB3aXRoIHJlZ3VsYXIKKyAgQUxTQSBrY29udHJvbHMuCisKKy0gRW1iZWRkZWQgYXVkaW8gZWZmZWN0cy4gU3VjaCBlZmZlY3RzIHNob3VsZCBiZSBlbmFibGVkIGluIHRoZSBzYW1lCisgIG1hbm5lciwgbm8gbWF0dGVyIGlmIHRoZSBpbnB1dCB3YXMgUENNIG9yIGNvbXByZXNzZWQuCisKKy0gbXVsdGljaGFubmVsIElFQyBlbmNvZGluZy4gVW5jbGVhciBpZiB0aGlzIGlzIHJlcXVpcmVkLgorCistIEVuY29kaW5nL2RlY29kaW5nIGFjY2VsZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGFzIG1lbnRpb25lZAorICBhYm92ZS4gSXQgaXMgcG9zc2libGUgdG8gcm91dGUgdGhlIG91dHB1dCBvZiBhIGRlY29kZXIgdG8gYSBjYXB0dXJlCisgIHN0cmVhbSwgb3IgZXZlbiBpbXBsZW1lbnQgdHJhbnNjb2RpbmcgY2FwYWJpbGl0aWVzLiBUaGlzIHJvdXRpbmcKKyAgd291bGQgYmUgZW5hYmxlZCB3aXRoIEFMU0Ega2NvbnRyb2xzLgorCistIEF1ZGlvIHBvbGljeS9yZXNvdXJjZSBtYW5hZ2VtZW50LiBUaGlzIEFQSSBkb2VzIG5vdCBwcm92aWRlIGFueQorICBob29rcyB0byBxdWVyeSB0aGUgdXRpbGl6YXRpb24gb2YgdGhlIGF1ZGlvIERTUCwgbm9yIGFueSBwcmVlbXB0aW9uCisgIG1lY2hhbmlzbXMuCisKKy0gTm8gbm90aW9uIG9mIHVuZGVycnVuL292ZXJydW4uIFNpbmNlIHRoZSBieXRlcyB3cml0dGVuIGFyZSBjb21wcmVzc2VkCisgIGluIG5hdHVyZSBhbmQgZGF0YSB3cml0dGVuL3JlYWQgZG9lc24ndCB0cmFuc2xhdGUgZGlyZWN0bHkgdG8KKyAgcmVuZGVyZWQgb3V0cHV0IGluIHRpbWUsIHRoaXMgZG9lcyBub3QgZGVhbCB3aXRoIHVuZGVycnVuL292ZXJydW4gYW5kCisgIG1heWJlIGRlYWx0IGluIHVzZXItbGlicmFyeQorCitDcmVkaXRzOgorLSBNYXJrIEJyb3duIGFuZCBMaWFtIEdpcmR3b29kIGZvciBkaXNjdXNzaW9ucyBvbiB0aGUgbmVlZCBmb3IgdGhpcyBBUEkKKy0gSGFyc2hhIFByaXlhIGZvciBoZXIgd29yayBvbiBpbnRlbF9zc3QgY29tcHJlc3NlZCBBUEkKKy0gUmFrZXNoIFVnaHJlamEgZm9yIHZhbHVhYmxlIGZlZWRiYWNrCistIFNpbmcgTmFsbGFzZWxsYW4sIFNpa2thbmRhciBNYWRhciBhbmQgUHJhc2FubmEgU2FtYWdhIGZvcgorICBkZW1vbnN0cmF0aW5nIGFuZCBxdWFudGlmeWluZyB0aGUgYmVuZWZpdHMgb2YgYXVkaW8gb2ZmbG9hZCBvbiBhCisgIHJlYWwgcGxhdGZvcm0uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvZW11MTBrMS1qYWNrLnR4dCBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9lbXUxMGsxLWphY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MWQ0NTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvZW11MTBrMS1qYWNrLnR4dApAQCAtMCwwICsxLDc0IEBACitUaGlzIGRvY3VtZW50IGlzIGEgZ3VpZGUgdG8gdXNpbmcgdGhlIGVtdTEwazEgYmFzZWQgZGV2aWNlcyB3aXRoIEpBQ0sgZm9yIGxvdworbGF0ZW5jeSwgbXVsdGljaGFubmVsIHJlY29yZGluZyBmdW5jdGlvbmFsaXR5LiAgQWxsIG9mIG15IHJlY2VudCB3b3JrIHRvIGFsbG93CitMaW51eCB1c2VycyB0byB1c2UgdGhlIGZ1bGwgY2FwYWJpbGl0aWVzIG9mIHRoZWlyIGhhcmR3YXJlIGhhcyBiZWVuIGluc3BpcmVkIAorYnkgdGhlIGtYIFByb2plY3QuICBXaXRob3V0IHRoZWlyIHdvcmsgSSBuZXZlciB3b3VsZCBoYXZlIGRpc2NvdmVyZWQgdGhlIHRydWUKK3Bvd2VyIG9mIHRoaXMgaGFyZHdhcmUuCisKKwlodHRwOi8vd3d3Lmt4cHJvamVjdC5jb20KKwkJCQkJCS0gTGVlIFJldmVsbCwgMjAwNS4wMy4zMAorCitMb3cgbGF0ZW5jeSwgbXVsdGljaGFubmVsIGF1ZGlvIHdpdGggSkFDSyBhbmQgdGhlIGVtdTEwazEvZW11MTBrMgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVW50aWwgcmVjZW50bHksIGVtdTEwazEgdXNlcnMgb24gTGludXggZGlkIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgc2FtZSBsb3cKK2xhdGVuY3ksIG11bHRpY2hhbm5lbCBmZWF0dXJlcyBvZmZlcmVkIGJ5IHRoZSAia1ggQVNJTyIgZmVhdHVyZSBvZiB0aGVpcgorV2luZG93cyBkcml2ZXIuICBBcyBvZiBBTFNBIDEuMC45IHRoaXMgaXMgbm8gbW9yZSEKKworRm9yIHRob3NlIHVuZmFtaWxpYXIgd2l0aCBrWCBBU0lPLCB0aGlzIGNvbnNpc3RzIG9mIDE2IGNhcHR1cmUgYW5kIDE2IHBsYXliYWNrCitjaGFubmVscy4gIFdpdGggYSBwb3N0IDIuNi45IExpbnV4IGtlcm5lbCwgbGF0ZW5jaWVzIGRvd24gdG8gNjQgKDEuMzMgbXMpIG9yCitldmVuIDMyICgwLjY2bXMpIGZyYW1lcyBzaG91bGQgd29yayB3ZWxsLgorCitUaGUgY29uZmlndXJhdGlvbiBpcyBzbGlnaHRseSBtb3JlIGludm9sdmVkIHRoYW4gb24gV2luZG93cywgYXMgeW91IGhhdmUgdG8KK3NlbGVjdCB0aGUgY29ycmVjdCBkZXZpY2UgZm9yIEpBQ0sgdG8gdXNlLiAgQWN0dWFsbHksIGZvciBxamFja2N0bCB1c2VycyBpdCdzCitmYWlybHkgc2VsZiBleHBsYW5hdG9yeSAtIHNlbGVjdCBEdXBsZXgsIHRoZW4gZm9yIGNhcHR1cmUgYW5kIHBsYXliYWNrIHNlbGVjdAordGhlIG11bHRpY2hhbm5lbCBkZXZpY2VzLCBzZXQgdGhlIGluIGFuZCBvdXQgY2hhbm5lbHMgdG8gMTYsIGFuZCB0aGUgc2FtcGxlCityYXRlIHRvIDQ4MDAwSHouICBUaGUgY29tbWFuZCBsaW5lIGxvb2tzIGxpa2UgdGhpczoKKworL3Vzci9sb2NhbC9iaW4vamFja2QgLVIgLWRhbHNhIC1yNDgwMDAgLXA2NCAtbjIgLUQgLUNodzowLDIgLVBodzowLDMgLVMKKworVGhpcyB3aWxsIGdpdmUgeW91IDE2IGlucHV0IHBvcnRzIGFuZCAxNiBvdXRwdXQgcG9ydHMuCisKK1RoZSAxNiBvdXRwdXQgcG9ydHMgbWFwIG9udG8gdGhlIDE2IEZYIGJ1c2VzIChvciB0aGUgZmlyc3QgMTYgb2YgNjQsIGZvciB0aGUKK0F1ZGlneSkuICBUaGUgbWFwcGluZyBmcm9tIEZYIGJ1cyB0byBwaHlzaWNhbCBvdXRwdXQgaXMgZGVzY3JpYmVkIGluCitTQi1MaXZlLW1peGVyLnR4dCAob3IgQXVkaWd5LW1peGVyLnR4dCkuCisKK1RoZSAxNiBpbnB1dCBwb3J0cyBhcmUgY29ubmVjdGVkIHRvIHRoZSAxNiBwaHlzaWNhbCBpbnB1dHMuICBDb250cmFyeSB0bworcG9wdWxhciBiZWxpZWYsIGFsbCBlbXUxMGsxIGNhcmRzIGFyZSBtdWx0aWNoYW5uZWwgY2FyZHMuICBXaGljaCBvZiB0aGVzZQoraW5wdXQgY2hhbm5lbHMgaGF2ZSBwaHlzaWNhbCBpbnB1dHMgY29ubmVjdGVkIHRvIHRoZW0gZGVwZW5kcyBvbiB0aGUgY2FyZAorbW9kZWwuICBUcmlhbCBhbmQgZXJyb3IgaXMgaGlnaGx5IHJlY29tbWVuZGVkOyB0aGUgcGlub3V0IGRpYWdyYW1zCitmb3IgdGhlIGNhcmQgaGF2ZSBiZWVuIHJldmVyc2UgZW5naW5lZXJlZCBieSBzb21lIGVudGVycHJpc2luZyBrWCB1c2VycyBhbmQgYXJlIAorYXZhaWxhYmxlIG9uIHRoZSBpbnRlcm5ldC4gIE1ldGVyYnJpZGdlIGlzIGhlbHBmdWwgaGVyZSwgYW5kIHRoZSBrWCBmb3J1bXMgYXJlCitwYWNrZWQgd2l0aCB1c2VmdWwgaW5mb3JtYXRpb24uCisKK0VhY2ggaW5wdXQgcG9ydCB3aWxsIGVpdGhlciBjb3JyZXNwb25kIHRvIGEgZGlnaXRhbCAoU1BESUYpIGlucHV0LCBhbiBhbmFsb2cKK2lucHV0LCBvciBub3RoaW5nLiAgVGhlIG9uZSBleGNlcHRpb24gaXMgdGhlIFNCTGl2ZSEgNS4xLiAgT24gdGhlc2UgZGV2aWNlcywKK3RoZSBzZWNvbmQgYW5kIHRoaXJkIGlucHV0IHBvcnRzIGFyZSB3aXJlZCB0byB0aGUgY2VudGVyL0xGRSBvdXRwdXQuICBZb3Ugd2lsbAorc3RpbGwgc2VlIDE2IGNhcHR1cmUgY2hhbm5lbHMsIGJ1dCBvbmx5IDE0IGFyZSBhdmFpbGFibGUgZm9yIHJlY29yZGluZyBpbnB1dHMuCisKK1RoaXMgY2hhcnQsIGJvcnJvd2VkIGZyb20ga3hmeGxpYi9kYV9hc2lvNTEuY3BwLCBkZXNjcmliZXMgdGhlIG1hcHBpbmcgb2YgSkFDSworcG9ydHMgdG8gRlhCVVMyIChtdWx0aXRyYWNrIHJlY29yZGluZyBpbnB1dCkgYW5kIEVYVE9VVCAocGh5c2ljYWwgb3V0cHV0KQorY2hhbm5lbHMuCisKKy8qSkFDSyAoJiBBU0lPKSBtYXBwaW5ncyBvbiAxMGsxIDUuMSBTQkxpdmUgY2FyZHM6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSkFDSwkJRXBpbG9nCQlGWEJVUzIobnIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorY2FwdHVyZV8xCWFzaW8xNAkJRlhCVVMyKDB4ZSkKK2NhcHR1cmVfMglhc2lvMTUJCUZYQlVTMigweGYpCitjYXB0dXJlXzMJYXNpbzAJCUZYQlVTMigweDApCQorfmNhcHR1cmVfNAlDZW50ZXIJCUVYVE9VVCgweDExKQkvLyBtYXBwZWQgdG8gYnkgQ2VudGVyCit+Y2FwdHVyZV81CUxGRQkJRVhUT1VUKDB4MTIpCS8vIG1hcHBlZCB0byBieSBMRkUKK2NhcHR1cmVfNglhc2lvMwkJRlhCVVMyKDB4MykKK2NhcHR1cmVfNwlhc2lvNAkJRlhCVVMyKDB4NCkKK2NhcHR1cmVfOAlhc2lvNQkJRlhCVVMyKDB4NSkKK2NhcHR1cmVfOQlhc2lvNgkJRlhCVVMyKDB4NikKK2NhcHR1cmVfMTAJYXNpbzcJCUZYQlVTMigweDcpCitjYXB0dXJlXzExCWFzaW84CQlGWEJVUzIoMHg4KQorY2FwdHVyZV8xMglhc2lvOQkJRlhCVVMyKDB4OSkKK2NhcHR1cmVfMTMJYXNpbzEwCQlGWEJVUzIoMHhhKQorY2FwdHVyZV8xNAlhc2lvMTEJCUZYQlVTMigweGIpCitjYXB0dXJlXzE1CWFzaW8xMgkJRlhCVVMyKDB4YykKK2NhcHR1cmVfMTYJYXNpbzEzCQlGWEJVUzIoMHhkKQorKi8KKworVE9ETzogZGVzY3JpYmUgdXNlIG9mIGxkMTBrMS9xbG8xMGsxIGluIGNvbmp1bmN0aW9uIHdpdGggSkFDSwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL2hkc3BtLnR4dCBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9oZHNwbS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JhMzE5NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9oZHNwbS50eHQKQEAgLTAsMCArMSwzNjIgQEAKK1NvZnR3YXJlIEludGVyZmFjZSBBTFNBLURTUCBNQURJIERyaXZlciAKKworKHRyYW5zbGF0ZWQgZnJvbSBHZXJtYW4sIHNvIG5vIGdvb2QgRW5nbGlzaCA7LSksIAorMjAwNCAtIHdpbmZyaWVkIHJpdHNjaAorCisKKworIEZ1bGwgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgZHJpdmVyLiBTaW5jZSBzb21lIG9mCisgdGhlIENvbnRyb2xzIGFuZCBzdGFydHVwLW9wdGlvbnMgIGFyZSBBTFNBLVN0YW5kYXJkIGFuZCBvbmx5IHRoZQorIHNwZWNpYWwgQ29udHJvbHMgYXJlIGRlc2NyaWJlZCBhbmQgZGlzY3Vzc2VkIGJlbG93LgorCisKKyBoYXJkd2FyZSBmdW5jdGlvbmFsaXR5OgorCisgICAKKyAgIEF1ZGlvIHRyYW5zbWlzc2lvbjoKKworICAgICBudW1iZXIgb2YgY2hhbm5lbHMgLS0gIGRlcGVuZHMgb24gdHJhbnNtaXNzaW9uIG1vZGUKKworCQlUaGUgbnVtYmVyIG9mIGNoYW5uZWxzIGNob3NlbiBpcyBmcm9tIDEuLk5tYXguIFRoZSByZWFzb24gdG8KKwkJdXNlIGZvciBhIGxvd2VyIG51bWJlciBvZiBjaGFubmVscyBpcyBvbmx5IHJlc291cmNlIGFsbG9jYXRpb24sCisJCXNpbmNlIHVudXNlZCBETUEgY2hhbm5lbHMgYXJlIGRpc2FibGVkIGFuZCBsZXNzIG1lbW9yeSBpcworCQlhbGxvY2F0ZWQuIFNvIGFsc28gdGhlIHRocm91Z2hwdXQgb2YgdGhlIFBDSSBzeXN0ZW0gY2FuIGJlCisJCXNjYWxlZC4gKE9ubHkgaW1wb3J0YW50IGZvciBsb3cgcGVyZm9ybWFuY2UgYm9hcmRzKS4KKworICAgICAgIFNpbmdsZSBTcGVlZCAtLSAxLi42NCBjaGFubmVscyAKKworCQkgKE5vdGU6IENob29zaW5nIHRoZSA1NmNoYW5uZWwgbW9kZSBmb3IgdHJhbnNtaXNzaW9uIG9yIGFzCisJCSByZWNlaXZlciwgb25seSA1NiBhcmUgdHJhbnNtaXR0ZWQvcmVjZWl2ZWQgb3ZlciB0aGUgTUFESSwgYnV0CisJCSBhbGwgNjQgY2hhbm5lbHMgYXJlIGF2YWlsYWJsZSBmb3IgdGhlIG1peGVyLCBzbyBjaGFubmVsIGNvdW50CisJCSBmb3IgdGhlIGRyaXZlcikKKworICAgICAgIERvdWJsZSBTcGVlZCAtLSAxLi4zMiBjaGFubmVscworCisJCSBOb3RlOiBDaG9vc2luZyB0aGUgNTYtY2hhbm5lbCBtb2RlIGZvcgorCQkgdHJhbnNtaXNzaW9uL3JlY2VpdmUtbW9kZSAsIG9ubHkgMjggYXJlIHRyYW5zbWl0dGVkL3JlY2VpdmVkCisJCSBvdmVyIHRoZSBNQURJLCBidXQgYWxsIDMyIGNoYW5uZWxzIGFyZSBhdmFpbGFibGUgZm9yIHRoZSBtaXhlciwKKwkJIHNvIGNoYW5uZWwgY291bnQgZm9yIHRoZSBkcml2ZXIKKworCisgICAgICAgUXVhZCBTcGVlZCAtLSAxLi4xNiBjaGFubmVscyAKKworCQkgTm90ZTogQ2hvb3NpbmcgdGhlIDU2LWNoYW5uZWwgbW9kZSBmb3IKKwkJIHRyYW5zbWlzc2lvbi9yZWNlaXZlLW1vZGUgLCBvbmx5IDE0IGFyZSB0cmFuc21pdHRlZC9yZWNlaXZlZAorCQkgb3ZlciB0aGUgTUFESSwgYnV0IGFsbCAxNiBjaGFubmVscyBhcmUgYXZhaWxhYmxlIGZvciB0aGUgbWl4ZXIsCisJCSBzbyBjaGFubmVsIGNvdW50IGZvciB0aGUgZHJpdmVyCisKKyAgICAgRm9ybWF0IC0tIHNpZ25lZCAzMiBCaXQgTGl0dGxlIEVuZGlhbiAoU05EUlZfUENNX0ZNVEJJVF9TMzJfTEUpCisKKyAgICAgU2FtcGxlIFJhdGVzIC0tCisKKyAgICAgICBTaW5nbGUgU3BlZWQgLS0gMzIwMDAsIDQ0MTAwLCA0ODAwMAorCisgICAgICAgRG91YmxlIFNwZWVkIC0tIDY0MDAwLCA4ODIwMCwgOTYwMDAgKHVudGVzdGVkKQorCisgICAgICAgUXVhZCBTcGVlZCAtLSAxMjgwMDAsIDE3NjQwMCwgMTkyMDAwICh1bnRlc3RlZCkKKworICAgICBhY2Nlc3MtbW9kZSAtLSBNTUFQIChtZW1vcnkgbWFwcGVkKSwgTm90IGludGVybGVhdmVkCisgICAgIChQQ01fTk9OLUlOVEVSTEVBVkVEKQorCisgICAgIGJ1ZmZlci1zaXplcyAtLSA2NCwxMjgsMjU2LDUxMiwxMDI0LDIwNDgsODE5MiBTYW1wbGVzCisKKyAgICAgZnJhZ21lbnRzIC0tIDIKKworICAgICBIYXJkd2FyZS1wb2ludGVyIC0tIDIgTW9kaQorCisKKwkJIFRoZSBDYXJkIHN1cHBvcnRzIHRoZSByZWFkb3V0IG9mIHRoZSBhY3R1YWwgQnVmZmVyLXBvaW50ZXIsCisJCSB3aGVyZSBETUEgcmVhZHMvd3JpdGVzLiBTaW5jZSBvZiB0aGUgYnVsayBtb2RlIG9mIFBDSSBpdCBpcyBvbmx5CisJCSA2NCBCeXRlIGFjY3VyYXRlLiBTTyBpdCBpcyBub3QgcmVhbGx5IHVzYWJsZSBmb3IgdGhlCisJCSBBTFNBLW1pZC1sZXZlbCBmdW5jdGlvbnMgKGhlcmUgdGhlIGJ1ZmZlci1JRCBnaXZlcyBhIGJldHRlcgorCQkgcmVzdWx0KSwgYnV0IGlmIE1NQVAgaXMgdXNlZCBieSB0aGUgYXBwbGljYXRpb24uIFRoZXJlZm9yZSBpdAorCQkgY2FuIGJlIGNvbmZpZ3VyZWQgYXQgbG9hZC10aW1lIHdpdGggdGhlIHBhcmFtZXRlcgorCQkgcHJlY2lzZS1wb2ludGVyLgorCisKKwkJIChIaW50OiBFeHBlcmltZW50aW5nIEkgZm91bmQgdGhhdCB0aGUgcG9pbnRlciBpcyBtYXhpbXVtIDY0IHRvCisJCSBsYXJnZSBuZXZlciB0byBzbWFsbC4gU28gaWYgeW91IHN1YnRyYWN0IDY0IHlvdSBhbHdheXMgaGF2ZSBhCisJCSBzYWZlIHBvaW50ZXIgZm9yIHdyaXRpbmcsIHdoaWNoIGlzIHVzZWQgb24gdGhpcyBtb2RlIGluc2lkZQorCQkgQUxTQS4gSW4gdGhlb3J5IG5vdyB5b3UgY2FuIGdldCBub3cgYSBsYXRlbmN5IGFzIGxvdyBhcyAxNgorCQkgU2FtcGxlcywgd2hpY2ggaXMgYSBxdWFydGVyIG9mIHRoZSBpbnRlcnJ1cHQgcG9zc2liaWxpdGllcy4pCisKKyAgICAgICBQcmVjaXNlIFBvaW50ZXIgLS0gb2ZmCisJCQkJCWludGVycnVwdCB1c2VkIGZvciBwb2ludGVyLWNhbGN1bGF0aW9uCisKKyAgICAgICBQcmVjaXNlIFBvaW50ZXIgLS0gb24KKwkJCQkJaGFyZHdhcmUgcG9pbnRlciB1c2VkLgorCisgICBDb250cm9sbGVyOgorCisKKwkgIFNpbmNlIERTUC1NQURJLU1peGVyIGhhcyA4MTUyIEZhZGVyLCBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvCisJICB1c2UgdGhlIHN0YW5kYXJkIG1peGVyLWNvbnRyb2xzLCBzaW5jZSB0aGlzIHdvdWxkIGJyZWFrIG1vc3Qgb2YKKwkgIChlc3BlY2lhbGx5IGdyYXBoaWMpIEFMU0EtTWl4ZXIgR1VJcy4gU28gTWl4ZXIgY29udHJvbCBoYXMgYmUKKwkgIHByb3ZpZGVkIGJ5IGEgMi1kaW1lbnNpb25hbCBjb250cm9sbGVyIHVzaW5nIHRoZQorCSAgaHdkZXAtaW50ZXJmYWNlLiAKKworICAgICBBbHNvIGFsbCAxMjgrMjU2IFBlYWsgYW5kIFJNUy1NZXRlciBjYW4gYmUgYWNjZXNzZWQgdmlhIHRoZQorICAgICBod2RlcC1pbnRlcmZhY2UuIFNpbmNlIGl0IGNvdWxkIGJlIGEgcGVyZm9ybWFuY2UgcHJvYmxlbSBhbHdheXMKKyAgICAgY29weWluZyBhbmQgY29udmVydGluZyBQZWFrIGFuZCBSTVMtTGV2ZWxzIGV2ZW4gaWYgeW91IGp1c3QgbmVlZAorICAgICBvbmUsIEkgZGVjaWRlZCB0byBleHBvcnQgdGhlIGhhcmR3YXJlIHN0cnVjdHVyZSwgc28gdGhhdCBvZgorICAgICBuZWVkZWQgc29tZSBkcml2ZXItZ3VydSBjYW4gaW1wbGVtZW50IGEgbWVtb3J5LW1hcHBpbmcgb2YgbWl4ZXIKKyAgICAgb3IgcGVhay1tZXRlcnMgb3ZlciBpb2N0bCwgb3IgYWxzbyB0byBkbyBvbmx5IGNvcHlpbmcgYW5kIG5vCisgICAgIGNvbnZlcnNpb24uIEEgdGVzdC1hcHBsaWNhdGlvbiBzaG93cyB0aGUgdXNhZ2Ugb2YgdGhlIGNvbnRyb2xsZXIuCisKKyAgICBMYXRlbmN5IENvbnRyb2xzIC0tLSBub3QgaW1wbGVtZW50ZWQgISEhCisKKworCSAgIE5vdGU6IFdpdGhpbiB0aGUgd2luZG93cy1kcml2ZXIgdGhlIGxhdGVuY3kgaXMgYWNjZXNzaWJsZSBvZiBhCisJICAgY29udHJvbC1wYW5lbCwgYnV0IGJ1ZmZlci1zaXplcyBhcmUgY29udHJvbGxlZCB3aXRoIEFMU0EgZnJvbQorCSAgIGh3cGFyYW1zLWNhbGxzIGFuZCBzaG91bGQgbm90IGJlIGNoYW5nZWQgaW4gcnVuLXN0YXRlLCBJIGRpZCBub3QKKwkgICBpbXBsZW1lbnQgaXQgaGVyZS4KKworCisgICAgU3lzdGVtIENsb2NrIC0tIHN1c3BlbmRlZCAhISEhCisKKyAgICAgICAgTmFtZSAtLSAiU3lzdGVtIENsb2NrIE1vZGUiCisKKyAgICAgICAgQWNjZXNzIC0tIFJlYWQgV3JpdGUKKworICAgICAgICBWYWx1ZXMgLS0gIk1hc3RlciIgIlNsYXZlIgorCisKKwkJICAhISEhIFRoaXMgaXMgYSBoYXJkd2FyZS1mdW5jdGlvbiBidXQgaXMgaW4gY29uZmxpY3Qgd2l0aCB0aGUKKwkJICBDbG9jay1zb3VyY2UgY29udHJvbGxlciwgd2hpY2ggaXMgYSBraW5kIG9mIEFMU0Etc3RhbmRhcmQuIEkKKwkJICBtYWtlcyBzZW5zZSB0byBzZXQgdGhlIGNhcmQgdG8gYSBzcGVjaWFsIG1vZGUgKG1hc3RlciBhdCBzb21lCisJCSAgZnJlcXVlbmN5IG9yIHNsYXZlKSwgc2luY2UgZXZlbiBub3QgdXNpbmcgYW4gQXVkaW8tYXBwbGljYXRpb24KKwkJICBhIHN0dWRpbyBzaG91bGQgaGF2ZSB3b3JraW5nIHN5bmNocm9uaXNhdGlvbnMgc2V0dXAuIFNvIHVzZQorCQkgIENsb2NrLXNvdXJjZS1jb250cm9sbGVyIGluc3RlYWQgISEhIQorCisgICAgQ2xvY2sgU291cmNlICAKKworICAgICAgIE5hbWUgLS0gIlNhbXBsZSBDbG9jayBTb3VyY2UiCisKKyAgICAgICBBY2Nlc3MgLS0gUmVhZCBXcml0ZQorCisgICAgICAgVmFsdWVzIC0tICJBdXRvU3luYyIsICJJbnRlcm5hbCAzMi4wIGtIeiIsICJJbnRlcm5hbCA0NC4xIGtIeiIsCisgICAgICAgIkludGVybmFsIDQ4LjAga0h6IiwgIkludGVybmFsIDY0LjAga0h6IiwgIkludGVybmFsIDg4LjIga0h6IiwKKyAgICAgICAiSW50ZXJuYWwgOTYuMCBrSHoiCisKKwkJIENob29zZSBiZXR3ZWVuIE1hc3RlciBhdCBhIHNwZWNpZmljIEZyZXF1ZW5jeSBhbmQgc28gYWxzbyB0aGUKKwkJIFNwZWVkLW1vZGUgb3IgU2xhdmUgKEF1dG9zeW5jKS4gQWxzbyBzZWUgICJQcmVmZXJyZWQgU3luYyBSZWYiCisKKworICAgICAgICEhISEgVGhpcyBpcyBubyBwdXJlIGhhcmR3YXJlIGZ1bmN0aW9uIGJ1dCB3YXMgaW1wbGVtZW50ZWQgYnkKKyAgICAgICBBTFNBIGJ5IHNvbWUgQUxTQS1kcml2ZXJzIGJlZm9yZSwgc28gSSB1c2UgaXQgYWxzby4gISEhCisKKworICAgIFByZWZlcnJlZCBTeW5jIFJlZgorCisgICAgICAgTmFtZSAtLSAiUHJlZmVycmVkIFN5bmMgUmVmZXJlbmNlIgorCisgICAgICAgQWNjZXNzIC0tIFJlYWQgV3JpdGUKKworICAgICAgIFZhbHVlcyAtLSAiV29yZCIgIk1BREkiCisKKworCQkgV2l0aGluIHRoZSBBdXRvLXN5bmMtTW9kZSB0aGUgcHJlZmVycmVkIFN5bmMgU291cmNlIGNhbiBiZQorCQkgY2hvc2VuLiBJZiBpdCBpcyBub3QgYXZhaWxhYmxlIGFub3RoZXIgaXMgdXNlZCBpZiBwb3NzaWJsZS4KKworCQkgTm90ZTogU2luY2UgTUFESSBoYXMgYSBtdWNoIGhpZ2hlciBiaXQtcmF0ZSB0aGFuIHdvcmQtY2xvY2ssIHRoZQorCQkgY2FyZCBzaG91bGQgc3luY2hyb25pc2UgYmV0dGVyIGluIE1BREkgTW9kZS4gQnV0IHNpbmNlIHRoZQorCQkgUk1FLVBMTCBpcyB2ZXJ5IGdvb2QsIHRoZXJlIGFyZSBhbG1vc3Qgbm8gcHJvYmxlbXMgd2l0aAorCQkgd29yZC1jbG9jayB0b28uIEkgbmV2ZXIgZm91bmQgYSBkaWZmZXJlbmNlLgorCisKKyAgICBUWCA2NCBjaGFubmVsIC0tLSAKKworICAgICAgIE5hbWUgLS0gIlRYIDY0IGNoYW5uZWxzIG1vZGUiCisKKyAgICAgICBBY2Nlc3MgLS0gUmVhZCBXcml0ZQorCisgICAgICAgVmFsdWVzIC0tIDAgMQorCisJCSBVc2luZyA2NC1jaGFubmVsLW1vZHVzICgxKSBvciA1Ni1jaGFubmVsLW1vZHVzIGZvcgorCQkgTUFESS10cmFuc21pc3Npb24gKDApLgorCisKKwkJIE5vdGU6IFRoaXMgY29udHJvbCBpcyBmb3Igb3V0cHV0IG9ubHkuIElucHV0LW1vZGUgaXMgZGV0ZWN0ZWQKKwkJIGF1dG9tYXRpY2FsbHkgZnJvbSBoYXJkd2FyZSBzZW5kaW5nIE1BREkuCisKKworICAgIENsZWFyIFRNUyAtLS0KKworICAgICAgIE5hbWUgLS0gIkNsZWFyIFRyYWNrIE1hcmtlciIKKworICAgICAgIEFjY2VzcyAtLSBSZWFkIFdyaXRlCisKKyAgICAgICBWYWx1ZXMgLS0gMCAxCisKKworCQkgRG9uJ3QgdXNlIHRvIGxvd2VyIDUgQXVkaW8tYml0cyBvbiBBRVMgYXMgYWRkaXRpb25hbCBCaXRzLgorICAgICAgICAKKworICAgIFNhZmUgTW9kZSBvZGVyIEF1dG8gSW5wdXQgLS0tIAorCisgICAgICAgTmFtZSAtLSAiU2FmZSBNb2RlIgorCisgICAgICAgQWNjZXNzIC0tIFJlYWQgV3JpdGUKKworICAgICAgIFZhbHVlcyAtLSAwIDEKKworICAgICAgIChkZWZhdWx0IG9uKQorCisJCSBJZiBvbiAoMSksIHRoZW4gaWYgZWl0aGVyIHRoZSBvcHRpY2FsIG9yIGNvYXhpYWwgY29ubmVjdGlvbgorCQkgaGFzIGEgZmFpbHVyZSwgdGhlcmUgaXMgYSB0YWtlb3ZlciB0byB0aGUgd29ya2luZyBvbmUsIHdpdGggbm8KKwkJIHNhbXBsZSBmYWlsdXJlLiBJdHMgb25seSB1c2VmdWwgaWYgeW91IHVzZSB0aGUgc2Vjb25kIGFzIGEKKwkJIGJhY2t1cCBjb25uZWN0aW9uLgorCisgICAgSW5wdXQgLS0tIAorCisgICAgICAgTmFtZSAtLSAiSW5wdXQgU2VsZWN0IgorCisgICAgICAgQWNjZXNzIC0tIFJlYWQgV3JpdGUKKworICAgICAgIFZhbHVlcyAtLSBvcHRpY2FsIGNvYXhpYWwKKworCisJCSBDaG9vc2luZyB0aGUgSW5wdXQsIG9wdGljYWwgb3IgY29heGlhbC4gSWYgU2FmZS1tb2RlIGlzIGFjdGl2ZSwKKwkJIHRoaXMgaXMgdGhlIHByZWZlcnJlZCBJbnB1dC4KKworLS0tLS0tLS0tLS0tLS0gTWl4ZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTWl4ZXIKKworICAgICAgIE5hbWUgLS0gIk1peGVyIgorCisgICAgICAgQWNjZXNzIC0tIFJlYWQgV3JpdGUKKworICAgICAgIFZhbHVlcyAtIDxjaGFubmVsLW51bWJlciAwLTEyNz4gPFZhbHVlIDAtNjU1MzU+CisKKworCQkgSGVyZSBhcyBhIGZpcnN0IHZhbHVlIHRoZSBjaGFubmVsLWluZGV4IGlzIHRha2VuIHRvIGdldC9zZXQgdGhlCisJCSBjb3JyZXNwb25kaW5nIG1peGVyIGNoYW5uZWwsIHdoZXJlIDAtNjMgYXJlIHRoZSBpbnB1dCB0byBvdXRwdXQKKwkJIGZhZGVyIGFuZCA2NC0xMjcgdGhlIHBsYXliYWNrIHRvIG91dHB1dHMgZmFkZXIuIFZhbHVlIDAKKwkJIGlzIGNoYW5uZWwgbXV0ZWQgMCBhbmQgMzI3NjggYW4gYW1wbGlmaWNhdGlvbiBvZiAgMS4KKworICAgIENobiAxLTY0CisKKyAgICAgICBmYXN0IG1peGVyIGZvciB0aGUgQUxTQS1taXhlciB1dGlscy4gVGhlIGRpYWdvbmFsIG9mIHRoZQorICAgICAgIG1peGVyLW1hdHJpeCBpcyBpbXBsZW1lbnRlZCBmcm9tIHBsYXliYWNrIHRvIG91dHB1dC4KKyAgICAgICAKKworICAgIExpbmUgT3V0CisKKyAgICAgICBOYW1lICAtLSAiTGluZSBPdXQiCisKKyAgICAgICBBY2Nlc3MgLS0gUmVhZCBXcml0ZQorCisgICAgICAgVmFsdWVzIC0tIDAgMQorCisJCSBTd2l0Y2hpbmcgb24gYW5kIG9mZiB0aGUgYW5hbG9nIG91dCwgd2hpY2ggaGFzIG5vdGhpbmcgdG8gZG8KKwkJIHdpdGggbWl4aW5nIG9yIHJvdXRpbmcuIHRoZSBhbmFsb2cgb3V0cyByZWZsZWN0cyBjaGFubmVsIDYzLDY0LgorCisKKy0tLSBpbmZvcm1hdGlvbiAob25seSByZWFkIGFjY2Vzcyk6CisgCisgICAgU2FtcGxlIFJhdGUKKworICAgICAgIE5hbWUgLS0gIlN5c3RlbSBTYW1wbGUgUmF0ZSIKKworICAgICAgIEFjY2VzcyAtLSBSZWFkLW9ubHkKKworCQkgZ2V0dGluZyB0aGUgc2FtcGxlIHJhdGUuCisKKworICAgIEV4dGVybmFsIFJhdGUgbWVhc3VyZWQKKworICAgICAgIE5hbWUgLS0gIkV4dGVybmFsIFJhdGUiCisKKyAgICAgICBBY2Nlc3MgLS0gUmVhZCBvbmx5CisKKworCQkgU2hvdWxkIGJlICJBdXRvc3luYyBSYXRlIiwgYnV0IE5hbWUgdXNlZCBpcworCQkgQUxTQS1TY2hlbWUuIEV4dGVybmFsIFNhbXBsZSBmcmVxdWVuY3kgbGlrZWQgdXNlZCBvbiBBdXRvc3luYyBpcworCQkgcmVwb3J0ZWQuCisKKworICAgIE1BREkgU3luYyBTdGF0dXMKKworICAgICAgIE5hbWUgLS0gIk1BREkgU3luYyBMb2NrIFN0YXR1cyIKKworICAgICAgIEFjY2VzcyAtLSBSZWFkCisKKyAgICAgICBWYWx1ZXMgLS0gMCwxLDIKKworICAgICAgIE1BREktSW5wdXQgaXMgMD1VbmxvY2tlZCwgMT1Mb2NrZWQsIG9yIDI9U3luY2VkLgorCisKKyAgICBXb3JkIENsb2NrIFN5bmMgU3RhdHVzCisKKyAgICAgICBOYW1lIC0tICJXb3JkIENsb2NrIExvY2sgU3RhdHVzIgorCisgICAgICAgQWNjZXNzIC0tIFJlYWQKKworICAgICAgIFZhbHVlcyAtLSAwLDEsMgorCisgICAgICAgV29yZCBDbG9jayBJbnB1dCBpcyAwPVVubG9ja2VkLCAxPUxvY2tlZCwgb3IgMj1TeW5jZWQuCisKKyAgICBBdXRvU3luYworCisgICAgICAgTmFtZSAtLSAiQXV0b1N5bmMgUmVmZXJlbmNlIgorCisgICAgICAgQWNjZXNzIC0tIFJlYWQKKworICAgICAgIFZhbHVlcyAtLSAiV29yZENsb2NrIiwgIk1BREkiLCAiTm9uZSIKKworCQkgU3luYy1SZWZlcmVuY2UgaXMgZWl0aGVyICJXb3JkQ2xvY2siLCAiTUFESSIgb3Igbm9uZS4KKworICAgUlggNjRjaCAtLS0gbm9jaCBuaWNodCBpbXBsZW1lbnRpZXJ0CisKKyAgICAgICBNQURJLVJlY2VpdmVyIGlzIGluIDY0IGNoYW5uZWwgbW9kZSBvZGVyIDU2IGNoYW5uZWwgbW9kZS4KKworCisgICBBQl9pbnAgICAtLS0gbm90IHRlc3RlZCAKKworCQkgVXNlZCBpbnB1dCBmb3IgQXV0by1JbnB1dC4KKworCisgICBhY3R1YWwgQnVmZmVyIFBvc2l0aW9uIC0tLSBub3QgaW1wbGVtZW50ZWQKKworCSAgICEhISB0aGlzIGlzIGEgQUxTQSBpbnRlcm5hbCBmdW5jdGlvbiwgc28gbm8gY29udHJvbCBpcyB1c2VkICEhIQorCisKKworQ2FsbGluZyBQYXJhbWV0ZXI6CisKKyAgIGluZGV4IGludCBhcnJheSAobWluID0gMSwgbWF4ID0gOCksIAorICAgICAiSW5kZXggdmFsdWUgZm9yIFJNRSBIRFNQTSBpbnRlcmZhY2UuIiBjYXJkLWluZGV4IHdpdGhpbiBBTFNBCisKKyAgICAgbm90ZTogQUxTQS1zdGFuZGFyZAorCisgICBpZCBzdHJpbmcgYXJyYXkgKG1pbiA9IDEsIG1heCA9IDgpLCAKKyAgICAgIklEIHN0cmluZyBmb3IgUk1FIEhEU1BNIGludGVyZmFjZS4iCisKKyAgICAgbm90ZTogQUxTQS1zdGFuZGFyZAorCisgICBlbmFibGUgaW50IGFycmF5IChtaW4gPSAxLCBtYXggPSA4KSwgCisgICAgICJFbmFibGUvZGlzYWJsZSBzcGVjaWZpYyBIRFNQTSBzb3VuZC1jYXJkcy4iCisKKyAgICAgbm90ZTogQUxTQS1zdGFuZGFyZAorCisgICBwcmVjaXNlX3B0ciBpbnQgYXJyYXkgKG1pbiA9IDEsIG1heCA9IDgpLCAKKyAgICAgIkVuYWJsZSBwcmVjaXNlIHBvaW50ZXIsIG9yIGRpc2FibGUuIgorCisgICAgIG5vdGU6IFVzZSBvbmx5IHdoZW4gdGhlIGFwcGxpY2F0aW9uIHN1cHBvcnRzIHRoaXMgKHdoaWNoIGlzIGEgc3BlY2lhbCBjYXNlKS4KKworICAgbGluZV9vdXRzX21vbml0b3IgaW50IGFycmF5IChtaW4gPSAxLCBtYXggPSA4KSwgCisgICAgICJTZW5kIHBsYXliYWNrIHN0cmVhbXMgdG8gYW5hbG9nIG91dHMgYnkgZGVmYXVsdC4iCisKKworCSAgbm90ZTogZWFjaCBwbGF5YmFjayBjaGFubmVsIGlzIG1peGVkIHRvIHRoZSBzYW1lIG51bWJlcmVkIG91dHB1dAorCSAgY2hhbm5lbCAocm91dGVkKS4gVGhpcyBpcyBhZ2FpbnN0IHRoZSBBTFNBLWNvbnZlbnRpb24sIHdoZXJlIGFsbAorCSAgY2hhbm5lbHMgaGF2ZSB0byBiZSBtdXRlZCBvbiBhZnRlciBsb2FkaW5nIHRoZSBkcml2ZXIsIGJ1dCB3YXMKKwkgIHVzZWQgYmVmb3JlIG9uIG90aGVyIGNhcmRzLCBzbyBpIGhpc3RvcmljYWxseSB1c2UgaXQgYWdhaW4pCisKKworCisgICBlbmFibGVfbW9uaXRvciBpbnQgYXJyYXkgKG1pbiA9IDEsIG1heCA9IDgpLCAKKyAgICAgIkVuYWJsZSBBbmFsb2cgT3V0IG9uIENoYW5uZWwgNjMvNjQgYnkgZGVmYXVsdC4iCisKKyAgICAgIG5vdGU6IGhlcmUgdGhlIGFuYWxvZyBvdXRwdXQgaXMgZW5hYmxlZCAoYnV0IG5vdCByb3V0ZWQpLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3Bvd2Vyc2F2ZS50eHQgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2EvcG93ZXJzYXZlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjU3ZTgwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3Bvd2Vyc2F2ZS50eHQKQEAgLTAsMCArMSw0MSBAQAorTm90ZXMgb24gUG93ZXItU2F2aW5nIE1vZGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FDOTcgYW5kIEhELWF1ZGlvIGRyaXZlcnMgaGF2ZSB0aGUgYXV0b21hdGljIHBvd2VyLXNhdmluZyBtb2RlLgorVGhpcyBmZWF0dXJlIGlzIGVuYWJsZWQgdmlhIEtjb25maWcgQ09ORklHX1NORF9BQzk3X1BPV0VSX1NBVkUKK2FuZCBDT05GSUdfU05EX0hEQV9QT1dFUl9TQVZFIG9wdGlvbnMsIHJlc3BlY3RpdmVseS4KKworV2l0aCB0aGUgYXV0b21hdGljIHBvd2VyLXNhdmluZywgdGhlIGRyaXZlciB0dXJucyBvZmYgdGhlIGNvZGVjIHBvd2VyCithcHByb3ByaWF0ZWx5IHdoZW4gbm8gb3BlcmF0aW9uIGlzIHJlcXVpcmVkLiAgV2hlbiBubyBhcHBsaWNhdGlvbnMgdXNlCit0aGUgZGV2aWNlIGFuZC9vciBubyBhbmFsb2cgbG9vcGJhY2sgaXMgc2V0LCB0aGUgcG93ZXIgZGlzYWJsZW1lbnQgaXMKK2RvbmUgZnVsbHkgb3IgcGFydGlhbGx5LiAgSXQnbGwgc2F2ZSBhIGNlcnRhaW4gcG93ZXIgY29uc3VtcHRpb24sIHRodXMKK2dvb2QgZm9yIGxhcHRvcHMgKGV2ZW4gZm9yIGRlc2t0b3BzKS4KKworVGhlIHRpbWUtb3V0IGZvciBhdXRvbWF0aWMgcG93ZXItb2ZmIGNhbiBiZSBzcGVjaWZpZWQgdmlhIHBvd2VyX3NhdmUKK21vZHVsZSBvcHRpb24gb2Ygc25kLWFjOTctY29kZWMgYW5kIHNuZC1oZGEtaW50ZWwgbW9kdWxlcy4gIFNwZWNpZnkKK3RoZSB0aW1lLW91dCB2YWx1ZSBpbiBzZWNvbmRzLiAgMCBtZWFucyB0byBkaXNhYmxlIHRoZSBhdXRvbWF0aWMKK3Bvd2VyLXNhdmluZy4gIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRpbWVvdXQgaXMgZ2l2ZW4gdmlhCitDT05GSUdfU05EX0FDOTdfUE9XRVJfU0FWRV9ERUZBVUxUIGFuZAorQ09ORklHX1NORF9IREFfUE9XRVJfU0FWRV9ERUZBVUxUIEtjb25maWcgb3B0aW9ucy4gIFNldHRpbmcgdGhpcyB0byAxCisodGhlIG1pbmltdW0gdmFsdWUpIGlzbid0IHJlY29tbWVuZGVkIGJlY2F1c2UgbWFueSBhcHBsaWNhdGlvbnMgdHJ5IHRvCityZW9wZW4gdGhlIGRldmljZSBmcmVxdWVudGx5LiAgMTAgd291bGQgYmUgYSBnb29kIGNob2ljZSBmb3Igbm9ybWFsCitvcGVyYXRpb25zLgorCitUaGUgcG93ZXJfc2F2ZSBvcHRpb24gaXMgZXhwb3J0ZWQgYXMgd3JpdGFibGUuICBUaGlzIG1lYW5zIHlvdSBjYW4KK2FkanVzdCB0aGUgdmFsdWUgdmlhIHN5c2ZzIG9uIHRoZSBmbHkuICBGb3IgZXhhbXBsZSwgdG8gdHVybiBvbiB0aGUKK2F1dG9tYXRpYyBwb3dlci1zYXZlIG1vZGUgd2l0aCAxMCBzZWNvbmRzLCB3cml0ZSB0bworL3N5cy9tb2R1bGVzL3NuZF9hYzk3X2NvZGVjL3BhcmFtZXRlcnMvcG93ZXJfc2F2ZSAodXN1YWxseSBhcyByb290KToKKworCSMgZWNobyAxMCA+IC9zeXMvbW9kdWxlcy9zbmRfYWM5N19jb2RlYy9wYXJhbWV0ZXJzL3Bvd2VyX3NhdmUKKworCitOb3RlIHRoYXQgeW91IG1pZ2h0IGhlYXIgY2xpY2sgbm9pc2UvcG9wIHdoZW4gY2hhbmdpbmcgdGhlIHBvd2VyCitzdGF0ZS4gIEFsc28sIGl0IG9mdGVuIHRha2VzIGNlcnRhaW4gdGltZSB0byB3YWtlIHVwIGZyb20gdGhlCitwb3dlci1kb3duIHRvIHRoZSBhY3RpdmUgc3RhdGUuICBUaGVzZSBhcmUgb2Z0ZW4gaGFyZGx5IHRvIGZpeCwgc28KK2Rvbid0IHJlcG9ydCBleHRyYSBidWcgcmVwb3J0cyB1bmxlc3MgeW91IGhhdmUgYSBmaXggcGF0Y2ggOy0pCisKK0ZvciBIRC1hdWRpbyBpbnRlcmZhY2UsIHRoZXJlIGlzIGFub3RoZXIgbW9kdWxlIG9wdGlvbiwKK3Bvd2VyX3NhdmVfY29udHJvbGxlci4gIFRoaXMgZW5hYmxlcy9kaXNhYmxlcyB0aGUgcG93ZXItc2F2ZSBtb2RlIG9mCit0aGUgY29udHJvbGxlciBzaWRlLiAgU2V0dGluZyB0aGlzIG9uIG1heSByZWR1Y2UgYSBiaXQgbW9yZSBwb3dlcgorY29uc3VtcHRpb24sIGJ1dCBtaWdodCByZXN1bHQgaW4gbG9uZ2VyIHdha2UtdXAgdGltZSBhbmQgY2xpY2sgbm9pc2UuCitUcnkgdG8gdHVybiBpdCBvZmYgd2hlbiB5b3UgZXhwZXJpZW5jZSBzdWNoIGEgdGhpbmcgdG9vIG9mdGVuLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3NlcV9vc3MuaHRtbCBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zZXFfb3NzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY2M2I0NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zZXFfb3NzLmh0bWwKQEAgLTAsMCArMSw0MDkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAgVHJhbnNpdGlvbmFsLy9FTiI+Cis8SFRNTD4KKzxIRUFEPgorICAgPFRJVExFPk9TUyBTZXF1ZW5jZXIgRW11bGF0aW9uIG9uIEFMU0E8L1RJVExFPgorPC9IRUFEPgorPEJPRFk+CisKKzxDRU5URVI+Cis8SDE+CisKKzxIUiBXSURUSD0iMTAwJSI+PC9IMT48L0NFTlRFUj4KKworPENFTlRFUj4KKzxIMT4KK09TUyBTZXF1ZW5jZXIgRW11bGF0aW9uIG9uIEFMU0E8L0gxPjwvQ0VOVEVSPgorCis8SFIgV0lEVEg9IjEwMCUiPgorPFA+Q29weXJpZ2h0IChjKSAxOTk4LDE5OTkgYnkgVGFrYXNoaSBJd2FpCis8VFQ+PEEgSFJFRj0ibWFpbHRvOml3YWlAd3cudW5pLWVybGFuZ2VuLmRlIj4mbHQ7aXdhaUB3dy51bmktZXJsYW5nZW4uZGU+PC9BPjwvVFQ+Cis8UD52ZXIuMC4xLjg7IE5vdi4gMTYsIDE5OTkKKzxIMj4KKworPEhSIFdJRFRIPSIxMDAlIj48L0gyPgorCis8SDI+CisxLiBEZXNjcmlwdGlvbjwvSDI+CitUaGlzIGRpcmVjdG9yeSBjb250YWlucyB0aGUgT1NTIHNlcXVlbmNlciBlbXVsYXRpb24gZHJpdmVyIG9uIEFMU0EuIE5vdGUKK3RoYXQgdGhpcyBwcm9ncmFtIGlzIHN0aWxsIGluIHRoZSBkZXZlbG9wbWVudCBzdGF0ZS4KKzxQPldoYXQgdGhpcyBkb2VzIC0gaXQgcHJvdmlkZXMgdGhlIGVtdWxhdGlvbiBvZiB0aGUgT1NTIHNlcXVlbmNlciwgYWNjZXNzCit2aWEKKzxUVD4vZGV2L3NlcXVlbmNlcjwvVFQ+IGFuZCA8VFQ+L2Rldi9tdXNpYzwvVFQ+IGRldmljZXMuCitUaGUgbW9zdCBvZiBhcHBsaWNhdGlvbnMgdXNpbmcgT1NTIGNhbiBydW4gaWYgdGhlIGFwcHJvcHJpYXRlIEFMU0EKK3NlcXVlbmNlciBpcyBwcmVwYXJlZC4KKzxQPlRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGVtdWxhdGVkIGJ5IHRoaXMgZHJpdmVyOgorPFVMPgorPExJPgorTm9ybWFsIHNlcXVlbmNlciBhbmQgTUlESSBldmVudHM6PC9MST4KKworPEJSPlRoZXkgYXJlIGNvbnZlcnRlZCB0byB0aGUgQUxTQSBzZXF1ZW5jZXIgZXZlbnRzLCBhbmQgc2VudCB0byB0aGUgY29ycmVzcG9uZGluZworcG9ydC4KKzxMST4KK1RpbWVyIGV2ZW50czo8L0xJPgorCis8QlI+VGhlIHRpbWVyIGlzIG5vdCBzZWxlY3RhYmxlIGJ5IGlvY3RsLiBUaGUgY29udHJvbCByYXRlIGlzIGZpeGVkIHRvCisxMDAgcmVnYXJkbGVzcyBvZiBIWi4gVGhhdCBpcywgZXZlbiBvbiBBbHBoYSBzeXN0ZW0sIGEgdGljayBpcyBhbHdheXMKKzEvMTAwIHNlY29uZC4gVGhlIGJhc2UgcmF0ZSBhbmQgdGVtcG8gY2FuIGJlIGNoYW5nZWQgaW4gPFRUPi9kZXYvbXVzaWM8L1RUPi4KKworPExJPgorUGF0Y2ggbG9hZGluZzo8L0xJPgorCis8QlI+SXQgcHVyZWx5IGRlcGVuZHMgb24gdGhlIHN5bnRoIGRyaXZlcnMgd2hldGhlciBpdCdzIHN1cHBvcnRlZCBzaW5jZQordGhlIHBhdGNoIGxvYWRpbmcgaXMgcmVhbGl6ZWQgYnkgY2FsbGJhY2sgdG8gdGhlIHN5bnRoIGRyaXZlci4KKzxMST4KK0kvTyBjb250cm9sczo8L0xJPgorCis8QlI+TW9zdCBvZiBjb250cm9scyBhcmUgYWNjZXB0ZWQuIFNvbWUgY29udHJvbHMKK2FyZSBkZXBlbmRlbnQgb24gdGhlIHN5bnRoIGRyaXZlciwgYXMgd2VsbCBhcyBldmVuIG9uIG9yaWdpbmFsIE9TUy48L1VMPgorRnVydGhlcm1vcmUsIHlvdSBjYW4gZmluZCB0aGUgZm9sbG93aW5nIGFkdmFuY2VkIGZlYXR1cmVzOgorPFVMPgorPExJPgorQmV0dGVyIHF1ZXVlIG1lY2hhbmlzbTo8L0xJPgorCis8QlI+VGhlIGV2ZW50cyBhcmUgcXVldWVkIGJlZm9yZSBwcm9jZXNzaW5nIHRoZW0uCis8TEk+CitNdWx0aXBsZSBhcHBsaWNhdGlvbnM6PC9MST4KKworPEJSPllvdSBjYW4gcnVuIHR3byBvciBtb3JlIGFwcGxpY2F0aW9ucyBzaW11bHRhbmVvdXNseSAoZXZlbiBmb3IgT1NTIHNlcXVlbmNlcikhCitIb3dldmVyLCBlYWNoIE1JREkgZGV2aWNlIGlzIGV4Y2x1c2l2ZSAtIHRoYXQgaXMsIGlmIGEgTUlESSBkZXZpY2UgaXMgb3BlbmVkCitvbmNlIGJ5IHNvbWUgYXBwbGljYXRpb24sIG90aGVyIGFwcGxpY2F0aW9ucyBjYW4ndCB1c2UgaXQuIE5vIHN1Y2ggYSByZXN0cmljdGlvbgoraW4gc3ludGggZGV2aWNlcy4KKzxMST4KK1JlYWwtdGltZSBldmVudCBwcm9jZXNzaW5nOjwvTEk+CisKKzxCUj5UaGUgZXZlbnRzIGNhbiBiZSBwcm9jZXNzZWQgaW4gcmVhbCB0aW1lIHdpdGhvdXQgdXNpbmcgb3V0IG9mIGJvdW5kCitpb2N0bC4gVG8gc3dpdGNoIHRvIHJlYWwtdGltZSBtb2RlLCBzZW5kIEFCU1RJTUUgMCBldmVudC4gVGhlIGZvbGxvd2VkCitldmVudHMgd2lsbCBiZSBwcm9jZXNzZWQgaW4gcmVhbC10aW1lIHdpdGhvdXQgcXVldWVkLiBUbyBzd2l0Y2ggb2ZmIHRoZQorcmVhbC10aW1lIG1vZGUsIHNlbmQgUkVMVElNRSAwIGV2ZW50LgorPExJPgorPFRUPi9wcm9jPC9UVD4gaW50ZXJmYWNlOjwvTEk+CisKKzxCUj5UaGUgc3RhdHVzIG9mIGFwcGxpY2F0aW9ucyBhbmQgZGV2aWNlcyBjYW4gYmUgc2hvd24gdmlhIDxUVD4vcHJvYy9hc291bmQvc2VxL29zczwvVFQ+CithdCBhbnkgdGltZS4gSW4gdGhlIGxhdGVyIHZlcnNpb24sIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBjaGFuZ2VkIHZpYSA8VFQ+L3Byb2M8L1RUPgoraW50ZXJmYWNlLCB0b28uPC9VTD4KKworPEgyPgorMi4gSW5zdGFsbGF0aW9uPC9IMj4KK1J1biBjb25maWd1cmUgc2NyaXB0IHdpdGggYm90aCBzZXF1ZW5jZXIgc3VwcG9ydCAoPFRUPi0td2l0aC1zZXF1ZW5jZXI9eWVzPC9UVD4pCithbmQgT1NTIGVtdWxhdGlvbiAoPFRUPi0td2l0aC1vc3M9eWVzPC9UVD4pIG9wdGlvbnMuIEEgbW9kdWxlIDxUVD5zbmQtc2VxLW9zcy5vPC9UVD4KK3dpbGwgYmUgY3JlYXRlZC4gSWYgdGhlIHN5bnRoIG1vZHVsZSBvZiB5b3VyIHNvdW5kIGNhcmQgc3VwcG9ydHMgZm9yIE9TUworZW11bGF0aW9uIChzbyBmYXIsIG9ubHkgRW11ODAwMCBkcml2ZXIpLCB0aGlzIG1vZHVsZSB3aWxsIGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5LgorT3RoZXJ3aXNlLCB5b3UgbmVlZCB0byBsb2FkIHRoaXMgbW9kdWxlIG1hbnVhbGx5LgorPFA+QXQgYmVnaW5uaW5nLCB0aGlzIG1vZHVsZSBwcm9iZXMgYWxsIHRoZSBNSURJIHBvcnRzIHdoaWNoIGhhdmUgYmVlbgorYWxyZWFkeSBjb25uZWN0ZWQgdG8gdGhlIHNlcXVlbmNlci4gT25jZSBhZnRlciB0aGF0LCB0aGUgY3JlYXRpb24gYW5kIGRlbGV0aW9uCitvZiBwb3J0cyBhcmUgd2F0Y2hlZCBieSBhbm5vdW5jZW1lbnQgbWVjaGFuaXNtIG9mIEFMU0Egc2VxdWVuY2VyLgorPFA+VGhlIGF2YWlsYWJsZSBzeW50aCBhbmQgTUlESSBkZXZpY2VzIGNhbiBiZSBmb3VuZCBpbiBwcm9jIGludGVyZmFjZS4KK1J1biAiPFRUPmNhdCAvcHJvYy9hc291bmQvc2VxL29zczwvVFQ+IiwgYW5kIGNoZWNrIHRoZSBkZXZpY2VzLiBGb3IgZXhhbXBsZSwKK2lmIHlvdSB1c2UgYW4gQVdFNjQgY2FyZCwgeW91J2xsIHNlZSBsaWtlIHRoZSBmb2xsb3dpbmc6Cis8UFJFPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBPU1Mgc2VxdWVuY2VyIGVtdWxhdGlvbiB2ZXJzaW9uIDAuMS44CismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgQUxTQSBjbGllbnQgbnVtYmVyIDYzCismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgQUxTQSByZWNlaXZlciBwb3J0IDAKKworJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IE51bWJlciBvZiBhcHBsaWNhdGlvbnM6IDAKKworJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IE51bWJlciBvZiBzeW50aCBkZXZpY2VzOiAxCisKKyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBzeW50aCAwOiBbRU1VODAwMF0KKyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB0eXBlIDB4MSA6IHN1YnR5cGUgMHgyMCA6IHZvaWNlcyAzMgorJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGNhcGFiaWx0aWVzIDogaW9jdGwgZW5hYmxlZCAvIGxvYWRfcGF0Y2ggZW5hYmxlZAorCismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgTnVtYmVyIG9mIE1JREkgZGV2aWNlczogMworCismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgbWlkaSAwOiBbRW11ODAwMCBQb3J0LTBdIEFMU0EgcG9ydCA2NTowCismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgY2FwYWJpbGl0eSB3cml0ZSAvIG9wZW5lZCBub25lCisKKyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBtaWRpIDE6IFtFbXU4MDAwIFBvcnQtMV0gQUxTQSBwb3J0IDY1OjEKKyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBjYXBhYmlsaXR5IHdyaXRlIC8gb3BlbmVkIG5vbmUKKworJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IG1pZGkgMjogWzA6IE1QVS00MDEgKFVBUlQpXSBBTFNBIHBvcnQgNjQ6MAorJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGNhcGFiaWxpdHkgcmVhZC93cml0ZSAvIG9wZW5lZCBub25lPC9QUkU+CitOb3RlIHRoYXQgdGhlIGRldmljZSBudW1iZXIgbWF5IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBpbmZvcm1hdGlvbiBvZgorPFRUPi9wcm9jL2Fzb3VuZC9vc3MtZGV2aWNlczwvVFQ+CitvciBvbmVzIG9mIHRoZSBvcmlnaW5hbCBPU1MgZHJpdmVyLiBVc2UgdGhlIGRldmljZSBudW1iZXIgbGlzdGVkIGluIDxUVD4vcHJvYy9hc291bmQvc2VxL29zczwvVFQ+Cit0byBwbGF5IHZpYSBPU1Mgc2VxdWVuY2VyIGVtdWxhdGlvbi4KKzxIMj4KKzMuIFVzaW5nIFN5bnRoZXNpemVyIERldmljZXM8L0gyPgorUnVuIHlvdXIgZmF2b3JpdGUgcHJvZ3JhbS4gSSd2ZSB0ZXN0ZWQgcGxheW1pZGktMi40LCBhd2VtaWRpLTAuNC4zLCBnbW9kLTMuMQorYW5kIHhtcC0xLjEuNS4gWW91IGNhbiBsb2FkIHNhbXBsZXMgdmlhIDxUVD4vZGV2L3NlcXVlbmNlcjwvVFQ+IGxpa2Ugc2Z4bG9hZCwKK3Rvby4KKzxQPklmIHRoZSBsb3dsZXZlbCBkcml2ZXIgc3VwcG9ydHMgbXVsdGlwbGUgYWNjZXNzIHRvIHN5bnRoIGRldmljZXMgKGxpa2UKK0VtdTgwMDAgZHJpdmVyKSwgdHdvIG9yIG1vcmUgYXBwbGljYXRpb25zIGFyZSBhbGxvd2VkIHRvIHJ1biBhdCB0aGUgc2FtZQordGltZS4KKzxIMj4KKzQuIFVzaW5nIE1JREkgRGV2aWNlczwvSDI+CitTbyBmYXIsIG9ubHkgTUlESSBvdXRwdXQgd2FzIHRlc3RlZC4gTUlESSBpbnB1dCB3YXMgbm90IGNoZWNrZWQgYXQgYWxsLAorYnV0IGhvcGVmdWxseSBpdCB3aWxsIHdvcmsuIFVzZSB0aGUgZGV2aWNlIG51bWJlciBsaXN0ZWQgaW4gPFRUPi9wcm9jL2Fzb3VuZC9zZXEvb3NzPC9UVD4uCitCZSBhd2FyZSB0aGF0IHRoZXNlIG51bWJlcnMgYXJlIG1vc3RseSBkaWZmZXJlbnQgZnJvbSB0aGUgbGlzdCBpbgorPFRUPi9wcm9jL2Fzb3VuZC9vc3MtZGV2aWNlczwvVFQ+LgorPEgyPgorNS4gTW9kdWxlIE9wdGlvbnM8L0gyPgorVGhlIGZvbGxvd2luZyBtb2R1bGUgb3B0aW9ucyBhcmUgYXZhaWxhYmxlOgorPFVMPgorPExJPgorPFRUPm1heHFsZW48L1RUPjwvTEk+CisKKzxCUj5zcGVjaWZpZXMgdGhlIG1heGltdW0gcmVhZC93cml0ZSBxdWV1ZSBsZW5ndGguIFRoaXMgcXVldWUgaXMgcHJpdmF0ZQorZm9yIE9TUyBzZXF1ZW5jZXIsIHNvIHRoYXQgaXQgaXMgaW5kZXBlbmRlbnQgZnJvbSB0aGUgcXVldWUgbGVuZ3RoIG9mIEFMU0EKK3NlcXVlbmNlci4gRGVmYXVsdCB2YWx1ZSBpcyAxMDI0LgorPExJPgorPFRUPnNlcV9vc3NfZGVidWc8L1RUPjwvTEk+CisKKzxCUj5zcGVjaWZpZXMgdGhlIGRlYnVnIGxldmVsIGFuZCBhY2NlcHRzIHplcm8gKD0gbm8gZGVidWcgbWVzc2FnZSkgb3IKK3Bvc2l0aXZlIGludGVnZXIuIERlZmF1bHQgdmFsdWUgaXMgMC48L1VMPgorCis8SDI+Cis2LiBRdWV1ZSBNZWNoYW5pc208L0gyPgorT1NTIHNlcXVlbmNlciBlbXVsYXRpb24gdXNlcyBhbiBBTFNBIHByaW9yaXR5IHF1ZXVlLiBUaGUKK2V2ZW50cyBmcm9tIDxUVD4vZGV2L3NlcXVlbmNlcjwvVFQ+IGFyZSBwcm9jZXNzZWQgYW5kIHB1dCBvbnRvIHRoZSBxdWV1ZQorc3BlY2lmaWVkIGJ5IG1vZHVsZSBvcHRpb24uCis8UD5BbGwgdGhlIGV2ZW50cyBmcm9tIDxUVD4vZGV2L3NlcXVlbmNlcjwvVFQ+IGFyZSBwYXJzZWQgYXQgYmVnaW5uaW5nLgorVGhlIHRpbWluZyBldmVudHMgYXJlIGFsc28gcGFyc2VkIGF0IHRoaXMgbW9tZW50LCBzbyB0aGF0IHRoZSBldmVudHMgbWF5CitiZSBwcm9jZXNzZWQgaW4gcmVhbC10aW1lLiBTZW5kaW5nIGFuIGV2ZW50IEFCU1RJTUUgMCBzd2l0Y2hlcyB0aGUgb3BlcmF0aW9uCittb2RlIHRvIHJlYWwtdGltZSBtb2RlLCBhbmQgc2VuZGluZyBhbiBldmVudCBSRUxUSU1FIDAgc3dpdGNoZXMgaXQgb2ZmLgorSW4gdGhlIHJlYWwtdGltZSBtb2RlLCBhbGwgZXZlbnRzIGFyZSBkaXNwYXRjaGVkIGltbWVkaWF0ZWx5LgorPFA+VGhlIHF1ZXVlZCBldmVudHMgYXJlIGRpc3BhdGNoZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgQUxTQSBzZXF1ZW5jZXIKK3BvcnRzIGFmdGVyIHNjaGVkdWxlZCB0aW1lIGJ5IEFMU0Egc2VxdWVuY2VyIGRpc3BhdGNoZXIuCis8UD5JZiB0aGUgd3JpdGUtcXVldWUgaXMgZnVsbCwgdGhlIGFwcGxpY2F0aW9uIHNsZWVwcyB1bnRpbCBhIGNlcnRhaW4gYW1vdW50CisoYXMgZGVmYXVsdCBvbmUgaGFsZikgYmVjb21lcyBlbXB0eSBpbiBibG9ja2luZyBtb2RlLiBUaGUgc3luY2hyb25pemF0aW9uCit0byB3cml0ZSB0aW1pbmcgd2FzIGltcGxlbWVudGVkLCB0b28uCis8UD5UaGUgaW5wdXQgZnJvbSBNSURJIGRldmljZXMgb3IgZWNoby1iYWNrIGV2ZW50cyBhcmUgc3RvcmVkIG9uIHJlYWQgRklGTworcXVldWUuIElmIGFwcGxpY2F0aW9uIHJlYWRzIDxUVD4vZGV2L3NlcXVlbmNlcjwvVFQ+IGluIGJsb2NraW5nIG1vZGUsIHRoZQorcHJvY2VzcyB3aWxsIGJlIGF3YWtlZC4KKworPEgyPgorNy4gSW50ZXJmYWNlIHRvIFN5bnRoZXNpemVyIERldmljZTwvSDI+CisKKzxIMz4KKzcuMS4gUmVnaXN0cmF0aW9uPC9IMz4KK1RvIHJlZ2lzdGVyIGFuIE9TUyBzeW50aGVzaXplciBkZXZpY2UsIHVzZSA8VFQ+c25kX3NlcV9vc3Nfc3ludGhfcmVnaXN0ZXI8L1RUPgorZnVuY3Rpb24uCis8UFJFPmludCBzbmRfc2VxX29zc19zeW50aF9yZWdpc3RlcihjaGFyICpuYW1lLCBpbnQgdHlwZSwgaW50IHN1YnR5cGUsIGludCBudm9pY2VzLAorJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHNuZF9zZXFfb3NzX2NhbGxiYWNrX3QgKm9wZXIsIHZvaWQgKnByaXZhdGVfZGF0YSk8L1BSRT4KK1RoZSBhcmd1bWVudHMgPFRUPm5hbWU8L1RUPiwgPFRUPnR5cGU8L1RUPiwgPFRUPnN1YnR5cGU8L1RUPiBhbmQKKzxUVD5udm9pY2VzPC9UVD4KK2FyZSB1c2VkIGZvciBtYWtpbmcgdGhlIGFwcHJvcHJpYXRlIHN5bnRoX2luZm8gc3RydWN0dXJlIGZvciBpb2N0bC4gVGhlCityZXR1cm4gdmFsdWUgaXMgYW4gaW5kZXggbnVtYmVyIG9mIHRoaXMgZGV2aWNlLiBUaGlzIGluZGV4IG11c3QgYmUgcmVtZW1iZXJlZAorZm9yIHVucmVnaXN0ZXIuIElmIHJlZ2lzdHJhdGlvbiBpcyBmYWlsZWQsIC1lcnJubyB3aWxsIGJlIHJldHVybmVkLgorPFA+VG8gcmVsZWFzZSB0aGlzIGRldmljZSwgY2FsbCA8VFQ+c25kX3NlcV9vc3Nfc3ludGhfdW5yZWdpc3RlciBmdW5jdGlvbjwvVFQ+OgorPFBSRT5pbnQgc25kX3NlcV9vc3Nfc3ludGhfdW5yZWdpc3RlcihpbnQgaW5kZXgpLDwvUFJFPgord2hlcmUgdGhlIDxUVD5pbmRleDwvVFQ+IGlzIHRoZSBpbmRleCBudW1iZXIgcmV0dXJuZWQgYnkgcmVnaXN0ZXIgZnVuY3Rpb24uCis8SDM+Cis3LjIuIENhbGxiYWNrczwvSDM+CitPU1Mgc3ludGhlc2l6ZXIgZGV2aWNlcyBoYXZlIGNhcGFiaWxpdHkgZm9yIHNhbXBsZSBkb3dubG9hZGluZyBhbmQgaW9jdGxzCitsaWtlIHNhbXBsZSByZXNldC4gSW4gT1NTIGVtdWxhdGlvbiwgdGhlc2Ugc3BlY2lhbCBmZWF0dXJlcyBhcmUgcmVhbGl6ZWQKK2J5IHVzaW5nIGNhbGxiYWNrcy4gVGhlIHJlZ2lzdHJhdGlvbiBhcmd1bWVudCBvcGVyIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGVzZQorY2FsbGJhY2tzLiBUaGUgZm9sbG93aW5nIGNhbGxiYWNrIGZ1bmN0aW9ucyBtdXN0IGJlIGRlZmluZWQ6Cis8UFJFPnNuZF9zZXFfb3NzX2NhbGxiYWNrX3Q6CismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaW50ICgqb3Blbikoc25kX3NlcV9vc3NfYXJnX3QgKnAsIHZvaWQgKmNsb3N1cmUpOworJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGludCAoKmNsb3NlKShzbmRfc2VxX29zc19hcmdfdCAqcCk7CismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaW50ICgqaW9jdGwpKHNuZF9zZXFfb3NzX2FyZ190ICpwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZyk7CismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaW50ICgqbG9hZF9wYXRjaCkoc25kX3NlcV9vc3NfYXJnX3QgKnAsIGludCBmb3JtYXQsIGNvbnN0IGNoYXIgKmJ1ZiwgaW50IG9mZnMsIGludCBjb3VudCk7CismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaW50ICgqcmVzZXQpKHNuZF9zZXFfb3NzX2FyZ190ICpwKTsKK0V4Y2VwdCBmb3IgPFRUPm9wZW48L1RUPiBhbmQgPFRUPmNsb3NlPC9UVD4gY2FsbGJhY2tzLCB0aGV5IGFyZSBhbGxvd2VkCit0byBiZSBOVUxMLgorPFA+RWFjaCBjYWxsYmFjayBmdW5jdGlvbiB0YWtlcyB0aGUgYXJndW1lbnQgdHlwZSBzbmRfc2VxX29zc19hcmdfdCBhcyB0aGUKK2ZpcnN0IGFyZ3VtZW50LgorPFBSRT5zdHJ1Y3Qgc25kX3NlcV9vc3NfYXJnX3QgeworJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGludCBhcHBfaW5kZXg7CismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaW50IGZpbGVfbW9kZTsKKyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBpbnQgc2VxX21vZGU7CismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgc25kX3NlcV9hZGRyX3QgYWRkcjsKKyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB2b2lkICpwcml2YXRlX2RhdGE7CismbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaW50IGV2ZW50X3Bhc3Npbmc7Cit9OzwvUFJFPgorVGhlIGZpcnN0IHRocmVlIGZpZWxkcywgPFRUPmFwcF9pbmRleDwvVFQ+LCA8VFQ+ZmlsZV9tb2RlPC9UVD4gYW5kCis8VFQ+c2VxX21vZGU8L1RUPgorYXJlIGluaXRpYWxpemVkIGJ5IE9TUyBzZXF1ZW5jZXIuIFRoZSA8VFQ+YXBwX2luZGV4PC9UVD4gaXMgdGhlIGFwcGxpY2F0aW9uCitpbmRleCB3aGljaCBpcyB1bmlxdWUgdG8gZWFjaCBhcHBsaWNhdGlvbiBvcGVuaW5nIE9TUyBzZXF1ZW5jZXIuIFRoZQorPFRUPmZpbGVfbW9kZTwvVFQ+CitpcyBiaXQtZmxhZ3MgaW5kaWNhdGluZyB0aGUgZmlsZSBvcGVyYXRpb24gbW9kZS4gU2VlCis8VFQ+c2VxX29zcy5oPC9UVD4KK2ZvciBpdHMgbWVhbmluZy4gVGhlIDxUVD5zZXFfbW9kZTwvVFQ+IGlzIHNlcXVlbmNlciBvcGVyYXRpb24gbW9kZS4gSW4KK3RoZSBjdXJyZW50IHZlcnNpb24sIG9ubHkgPFRUPlNORF9PU1NTRVFfTU9ERV9TWU5USDwvVFQ+IGlzIHVzZWQuCis8UD5UaGUgbmV4dCB0d28gZmllbGRzLCA8VFQ+YWRkcjwvVFQ+IGFuZCA8VFQ+cHJpdmF0ZV9kYXRhPC9UVD4sIG11c3QgYmUKK2ZpbGxlZCBieSB0aGUgc3ludGggZHJpdmVyIGF0IG9wZW4gY2FsbGJhY2suIFRoZSA8VFQ+YWRkcjwvVFQ+IGNvbnRhaW5zCit0aGUgYWRkcmVzcyBvZiBBTFNBIHNlcXVlbmNlciBwb3J0IHdoaWNoIGlzIGFzc2lnbmVkIHRvIHRoaXMgZGV2aWNlLiBJZgordGhlIGRyaXZlciBhbGxvY2F0ZXMgbWVtb3J5IGZvciA8VFQ+cHJpdmF0ZV9kYXRhPC9UVD4sIGl0IG11c3QgYmUgcmVsZWFzZWQKK2luIGNsb3NlIGNhbGxiYWNrIGJ5IGl0c2VsZi4KKzxQPlRoZSBsYXN0IGZpZWxkLCA8VFQ+ZXZlbnRfcGFzc2luZzwvVFQ+LCBpbmRpY2F0ZXMgaG93IHRvIHRyYW5zbGF0ZSBub3RlLW9uCisvIG9mZiBldmVudHMuIEluIDxUVD5QUk9DRVNTX0VWRU5UUzwvVFQ+IG1vZGUsIHRoZSBub3RlIDI1NSBpcyByZWdhcmRlZAorYXMgdmVsb2NpdHkgY2hhbmdlLCBhbmQga2V5IHByZXNzdXJlIGV2ZW50IGlzIHBhc3NlZCB0byB0aGUgcG9ydC4gSW4gPFRUPlBBU1NfRVZFTlRTPC9UVD4KK21vZGUsIGFsbCBub3RlIG9uL29mZiBldmVudHMgYXJlIHBhc3NlZCB0byB0aGUgcG9ydCB3aXRob3V0IG1vZGlmaWVkLiA8VFQ+UFJPQ0VTU19LRVlQUkVTUzwvVFQ+Cittb2RlIGNoZWNrcyB0aGUgbm90ZSBhYm92ZSAxMjggYW5kIHJlZ2FyZHMgaXQgYXMga2V5IHByZXNzdXJlIGV2ZW50IChtYWlubHkKK2ZvciBFbXU4MDAwIGRyaXZlcikuCis8SDQ+Cis3LjIuMS4gT3BlbiBDYWxsYmFjazwvSDQ+CitUaGUgPFRUPm9wZW48L1RUPiBpcyBjYWxsZWQgYXQgZWFjaCB0aW1lIHRoaXMgZGV2aWNlIGlzIG9wZW5lZCBieSBhbiBhcHBsaWNhdGlvbgordXNpbmcgT1NTIHNlcXVlbmNlci4gVGhpcyBtdXN0IG5vdCBiZSBOVUxMLiBUeXBpY2FsbHksIHRoZSBvcGVuIGNhbGxiYWNrCitkb2VzIHRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlOgorPE9MPgorPExJPgorQWxsb2NhdGUgcHJpdmF0ZSBkYXRhIHJlY29yZC48L0xJPgorCis8TEk+CitDcmVhdGUgYW4gQUxTQSBzZXF1ZW5jZXIgcG9ydC48L0xJPgorCis8TEk+CitTZXQgdGhlIG5ldyBwb3J0IGFkZHJlc3Mgb24gYXJnLT5hZGRyLjwvTEk+CisKKzxMST4KK1NldCB0aGUgcHJpdmF0ZSBkYXRhIHJlY29yZCBwb2ludGVyIG9uIGFyZy0+cHJpdmF0ZV9kYXRhLjwvTEk+Cis8L09MPgorTm90ZSB0aGF0IHRoZSB0eXBlIGJpdC1mbGFncyBpbiBwb3J0X2luZm8gb2YgdGhpcyBzeW50aCBwb3J0IG11c3QgTk9UIGNvbnRhaW4KKzxUVD5UWVBFX01JRElfR0VORVJJQzwvVFQ+CitiaXQuIEluc3RlYWQsIDxUVD5UWVBFX1NQRUNJRklDPC9UVD4gc2hvdWxkIGJlIHVzZWQuIEFsc28sIDxUVD5DQVBfU1VCU0NSSVBUSU9OPC9UVD4KK2JpdCBzaG91bGQgTk9UIGJlIGluY2x1ZGVkLCB0b28uIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIHRlbGwgaXQgZnJvbSBvdGhlcgorbm9ybWFsIE1JREkgZGV2aWNlcy4gSWYgdGhlIG9wZW4gcHJvY2VkdXJlIHN1Y2NlZWRlZCwgcmV0dXJuIHplcm8uIE90aGVyd2lzZSwKK3JldHVybiAtZXJybm8uCis8SDQ+Cis3LjIuMiBJb2N0bCBDYWxsYmFjazwvSDQ+CitUaGUgPFRUPmlvY3RsPC9UVD4gY2FsbGJhY2sgaXMgY2FsbGVkIHdoZW4gdGhlIHNlcXVlbmNlciByZWNlaXZlcyBkZXZpY2Utc3BlY2lmaWMKK2lvY3Rscy4gVGhlIGZvbGxvd2luZyB0d28gaW9jdGxzIHNob3VsZCBiZSBwcm9jZXNzZWQgYnkgdGhpcyBjYWxsYmFjazoKKzxVTD4KKzxMST4KKzxUVD5JT0NUTF9TRVFfUkVTRVRfU0FNUExFUzwvVFQ+PC9MST4KKworPEJSPnJlc2V0IGFsbCBzYW1wbGVzIG9uIG1lbW9yeSAtLSByZXR1cm4gMAorPExJPgorPFRUPklPQ1RMX1NZTlRIX01FTUFWTDwvVFQ+PC9MST4KKworPEJSPnJldHVybiB0aGUgYXZhaWxhYmxlIG1lbW9yeSBzaXplCis8TEk+Cis8VFQ+Rk1fNE9QX0VOQUJMRTwvVFQ+PC9MST4KKworPEJSPmNhbiBiZSBpZ25vcmVkIHVzdWFsbHk8L1VMPgorVGhlIG90aGVyIGlvY3RscyBhcmUgcHJvY2Vzc2VkIGluc2lkZSB0aGUgc2VxdWVuY2VyIHdpdGhvdXQgcGFzc2luZyB0bwordGhlIGxvd2xldmVsIGRyaXZlci4KKzxIND4KKzcuMi4zIExvYWRfUGF0Y2ggQ2FsbGJhY2s8L0g0PgorVGhlIDxUVD5sb2FkX3BhdGNoPC9UVD4gY2FsbGJhY2sgaXMgdXNlZCBmb3Igc2FtcGxlLWRvd25sb2FkaW5nLiBUaGlzIGNhbGxiYWNrCittdXN0IHJlYWQgdGhlIGRhdGEgb24gdXNlci1zcGFjZSBhbmQgdHJhbnNmZXIgdG8gZWFjaCBkZXZpY2UuIFJldHVybiAwCitpZiBzdWNjZWVkZWQsIGFuZCAtZXJybm8gaWYgZmFpbGVkLiBUaGUgZm9ybWF0IGFyZ3VtZW50IGlzIHRoZSBwYXRjaCBrZXkKK2luIHBhdGNoX2luZm8gcmVjb3JkLiBUaGUgYnVmIGlzIHVzZXItc3BhY2UgcG9pbnRlciB3aGVyZSBwYXRjaF9pbmZvIHJlY29yZAoraXMgc3RvcmVkLiBUaGUgb2ZmcyBjYW4gYmUgaWdub3JlZC4gVGhlIGNvdW50IGlzIHRvdGFsIGRhdGEgc2l6ZSBvZiB0aGlzCitzYW1wbGUgZGF0YS4KKzxIND4KKzcuMi40IENsb3NlIENhbGxiYWNrPC9IND4KK1RoZSA8VFQ+Y2xvc2U8L1RUPiBjYWxsYmFjayBpcyBjYWxsZWQgd2hlbiB0aGlzIGRldmljZSBpcyBjbG9zZWQgYnkgdGhlCithcHBsaWNhdGlvbi4gSWYgYW55IHByaXZhdGUgZGF0YSB3YXMgYWxsb2NhdGVkIGluIG9wZW4gY2FsbGJhY2ssIGl0IG11c3QKK2JlIHJlbGVhc2VkIGluIHRoZSBjbG9zZSBjYWxsYmFjay4gVGhlIGRlbGV0aW9uIG9mIEFMU0EgcG9ydCBzaG91bGQgYmUKK2RvbmUgaGVyZSwgdG9vLiBUaGlzIGNhbGxiYWNrIG11c3Qgbm90IGJlIE5VTEwuCis8SDQ+Cis3LjIuNSBSZXNldCBDYWxsYmFjazwvSDQ+CitUaGUgPFRUPnJlc2V0PC9UVD4gY2FsbGJhY2sgaXMgY2FsbGVkIHdoZW4gc2VxdWVuY2VyIGRldmljZSBpcyByZXNldCBvcgorY2xvc2VkIGJ5IGFwcGxpY2F0aW9ucy4gVGhlIGNhbGxiYWNrIHNob3VsZCB0dXJuIG9mZiB0aGUgc291bmRzIG9uIHRoZQorcmVsZXZhbnQgcG9ydCBpbW1lZGlhdGVseSwgYW5kIGluaXRpYWxpemUgdGhlIHN0YXR1cyBvZiB0aGUgcG9ydC4gSWYgdGhpcworY2FsbGJhY2sgaXMgdW5kZWZpbmVkLCBPU1Mgc2VxIHNlbmRzIGEgPFRUPkhFQVJUQkVBVDwvVFQ+IGV2ZW50IHRvIHRoZQorcG9ydC4KKzxIMz4KKzcuMyBFdmVudHM8L0gzPgorTW9zdCBvZiB0aGUgZXZlbnRzIGFyZSBwcm9jZXNzZWQgYnkgc2VxdWVuY2VyIGFuZCB0cmFuc2xhdGVkIHRvIHRoZSBhZGVxdWF0ZQorQUxTQSBzZXF1ZW5jZXIgZXZlbnRzLCBzbyB0aGF0IGVhY2ggc3ludGggZGV2aWNlIGNhbiByZWNlaXZlIGJ5IGlucHV0X2V2ZW50CitjYWxsYmFjayBvZiBBTFNBIHNlcXVlbmNlciBwb3J0LiBUaGUgZm9sbG93aW5nIEFMU0EgZXZlbnRzIHNob3VsZCBiZSBpbXBsZW1lbnRlZAorYnkgdGhlIGRyaXZlcjoKKzxCUj4mbmJzcDsKKzxUQUJMRSBCT1JERVIgV0lEVEg9Ijc1JSIgTk9TQVZFID4KKzxUUiBOT1NBVkU+Cis8VEQgTk9TQVZFPjxCPkFMU0EgZXZlbnQ8L0I+PC9URD4KKworPFREPjxCPk9yaWdpbmFsIE9TUyBldmVudHM8L0I+PC9URD4KKzwvVFI+CisKKzxUUj4KKzxURD5OT1RFT048L1REPgorCis8VEQ+U0VRX05PVEVPTgorPEJSPk1JRElfTk9URU9OPC9URD4KKzwvVFI+CisKKzxUUj4KKzxURD5OT1RFPC9URD4KKworPFREPlNFUV9OT1RFT0ZGCis8QlI+TUlESV9OT1RFT0ZGPC9URD4KKzwvVFI+CisKKzxUUiBOT1NBVkU+Cis8VEQgTk9TQVZFPktFWVBSRVNTPC9URD4KKworPFREPk1JRElfS0VZX1BSRVNTVVJFPC9URD4KKzwvVFI+CisKKzxUUiBOT1NBVkU+Cis8VEQ+Q0hBTlBSRVNTPC9URD4KKworPFREIE5PU0FWRT5TRVFfQUZURVJUT1VDSAorPEJSPk1JRElfQ0hOX1BSRVNTVVJFPC9URD4KKzwvVFI+CisKKzxUUiBOT1NBVkU+Cis8VEQgTk9TQVZFPlBHTUNIQU5HRTwvVEQ+CisKKzxURCBOT1NBVkU+U0VRX1BHTUNIQU5HRQorPEJSPk1JRElfUEdNX0NIQU5HRTwvVEQ+Cis8L1RSPgorCis8VFI+Cis8VEQ+UElUQ0hCRU5EPC9URD4KKworPFREPlNFUV9DT05UUk9MTEVSKENUUkxfUElUQ0hfQkVOREVSKQorPEJSPk1JRElfUElUQ0hfQkVORDwvVEQ+Cis8L1RSPgorCis8VFI+Cis8VEQ+Q09OVFJPTExFUjwvVEQ+CisKKzxURD5NSURJX0NUTF9DSEFOR0UKKzxCUj5TRVFfQkFMQU5DRSAod2l0aCBDVExfUEFOKTwvVEQ+Cis8L1RSPgorCis8VFI+Cis8VEQ+Q09OVFJPTDE0PC9URD4KKworPFREPlNFUV9DT05UUk9MTEVSPC9URD4KKzwvVFI+CisKKzxUUj4KKzxURD5SRUdQQVJBTTwvVEQ+CisKKzxURD5TRVFfQ09OVFJPTExFUihDVFJMX1BJVENIX0JFTkRFUl9SQU5HRSk8L1REPgorPC9UUj4KKworPFRSPgorPFREPlNZU0VYPC9URD4KKworPFREPlNFUV9TWVNFWDwvVEQ+Cis8L1RSPgorPC9UQUJMRT4KKworPFA+VGhlIG1vc3Qgb2YgdGhlc2UgYmVoYXZpb3IgY2FuIGJlIHJlYWxpemVkIGJ5IE1JREkgZW11bGF0aW9uIGRyaXZlcgoraW5jbHVkZWQgaW4gdGhlIEVtdTgwMDAgbG93bGV2ZWwgZHJpdmVyLiBJbiB0aGUgZnV0dXJlIHJlbGVhc2UsIHRoaXMgbW9kdWxlCit3aWxsIGJlIGluZGVwZW5kZW50LgorPFA+U29tZSBPU1MgZXZlbnRzICg8VFQ+U0VRX1BSSVZBVEU8L1RUPiBhbmQgPFRUPlNFUV9WT0xVTUU8L1RUPiBldmVudHMpIGFyZSBwYXNzZWQgYXMgZXZlbnQKK3R5cGUgU05EX1NFUV9PU1NfUFJJVkFURS4gIFRoZSBPU1Mgc2VxdWVuY2VyIHBhc3NlcyB0aGVzZSBldmVudCA4IGJ5dGUKK3BhY2tldHMgd2l0aG91dCBhbnkgbW9kaWZpY2F0aW9uLiBUaGUgbG93bGV2ZWwgZHJpdmVyIHNob3VsZCBwcm9jZXNzIHRoZXNlCitldmVudHMgYXBwcm9wcmlhdGVseS4KKzxIMj4KKzguIEludGVyZmFjZSB0byBNSURJIERldmljZTwvSDI+CitTaW5jZSB0aGUgT1NTIGVtdWxhdGlvbiBwcm9iZXMgdGhlIGNyZWF0aW9uIGFuZCBkZWxldGlvbiBvZiBBTFNBIE1JREkgc2VxdWVuY2VyCitwb3J0cyBhdXRvbWF0aWNhbGx5IGJ5IHJlY2VpdmluZyBhbm5vdW5jZW1lbnQgZnJvbSBBTFNBIHNlcXVlbmNlciwgdGhlCitNSURJIGRldmljZXMgZG9uJ3QgbmVlZCB0byBiZSByZWdpc3RlcmVkIGV4cGxpY2l0bHkgbGlrZSBzeW50aCBkZXZpY2VzLgorSG93ZXZlciwgdGhlIE1JREkgcG9ydF9pbmZvIHJlZ2lzdGVyZWQgdG8gQUxTQSBzZXF1ZW5jZXIgbXVzdCBpbmNsdWRlIGEgZ3JvdXAKK25hbWUgPFRUPlNORF9TRVFfR1JPVVBfREVWSUNFPC9UVD4gYW5kIGEgY2FwYWJpbGl0eS1iaXQgPFRUPkNBUF9SRUFEPC9UVD4gb3IKKzxUVD5DQVBfV1JJVEU8L1RUPi4gQWxzbywgc3Vic2NyaXB0aW9uIGNhcGFiaWxpdGllcywgPFRUPkNBUF9TVUJTX1JFQUQ8L1RUPiBvciA8VFQ+Q0FQX1NVQlNfV1JJVEU8L1RUPiwKK211c3QgYmUgZGVmaW5lZCwgdG9vLiBJZiB0aGVzZSBjb25kaXRpb25zIGFyZSBub3Qgc2F0aXNmaWVkLCB0aGUgcG9ydCBpcyBub3QKK3JlZ2lzdGVyZWQgYXMgT1NTIHNlcXVlbmNlciBNSURJIGRldmljZS4KKzxQPlRoZSBldmVudHMgdmlhIE1JREkgZGV2aWNlcyBhcmUgcGFyc2VkIGluIE9TUyBzZXF1ZW5jZXIgYW5kIGNvbnZlcnRlZAordG8gdGhlIGNvcnJlc3BvbmRpbmcgQUxTQSBzZXF1ZW5jZXIgZXZlbnRzLiBUaGUgaW5wdXQgZnJvbSBNSURJIHNlcXVlbmNlcgoraXMgYWxzbyBjb252ZXJ0ZWQgdG8gTUlESSBieXRlIGV2ZW50cyBieSBPU1Mgc2VxdWVuY2VyLiBUaGlzIHdvcmtzIGp1c3QKK2EgcmV2ZXJzZSB3YXkgb2Ygc2VxX21pZGkgbW9kdWxlLgorPEgyPgorOS4gS25vd24gUHJvYmxlbXMgLyBUT0RPJ3M8L0gyPgorCis8VUw+Cis8TEk+CitQYXRjaCBsb2FkaW5nIHZpYSBBTFNBIGluc3RydW1lbnQgbGF5ZXIgaXMgbm90IGltcGxlbWVudGVkIHlldC48L0xJPgorPC9VTD4KKworPC9CT0RZPgorPC9IVE1MPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3NlcmlhbC11MTY1NTAudHh0IGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3NlcmlhbC11MTY1NTAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxOTE5NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2Evc2VyaWFsLXUxNjU1MC50eHQKQEAgLTAsMCArMSw4OCBAQAorCisJCQlTZXJpYWwgVUFSVCAxNjQ1MC8xNjU1MCBNSURJIGRyaXZlcgorCQkJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGFkYXB0b3IgbW9kdWxlIHBhcmFtZXRlciBhbGxvd3MgeW91IHRvIHNlbGVjdCBlaXRoZXI6CisKKyAgMCAtIFJvbGFuZCBTb3VuZGNhbnZhcyBzdXBwb3J0IChkZWZhdWx0KQorICAxIC0gTWlkaWF0b3IgTVMtMTI0VCBzdXBwb3J0ICgxKQorICAyIC0gTWlkaWF0b3IgTVMtMTI0VyBTL0EgbW9kZSAoMikKKyAgMyAtIE1TLTEyNFcgTS9CIG1vZGUgc3VwcG9ydCAoMykKKyAgNCAtIEdlbmVyaWMgZGV2aWNlIHdpdGggbXVsdGlwbGUgaW5wdXQgc3VwcG9ydCAoNCkKKworRm9yIHRoZSBNaWRpYXRvciBNUy0xMjRXLCB5b3UgbXVzdCBzZXQgdGhlIHBoeXNpY2FsIE0tUyBhbmQgQS1CCitzd2l0Y2hlcyBvbiB0aGUgTWlkaWF0b3IgdG8gbWF0Y2ggdGhlIGRyaXZlciBtb2RlIHlvdSBzZWxlY3QuCisKK0luIFJvbGFuZCBTb3VuZGNhbnZhcyBtb2RlLCBtdWx0aXBsZSBBTFNBIHJhdyBNSURJIHN1YnN0cmVhbXMgYXJlIHN1cHBvcnRlZAorKG1pZGlDbkQwLW1pZGlDbkQxNSkuICBXaGVuZXZlciB5b3Ugd3JpdGUgdG8gYSBkaWZmZXJlbnQgc3Vic3RyZWFtLCB0aGUgZHJpdmVyCitzZW5kcyB0aGUgbm9uc3RhbmRhcmQgTUlESSBjb21tYW5kIHNlcXVlbmNlIEY1IE5OLCB3aGVyZSBOTiBpcyB0aGUgc3Vic3RyZWFtCitudW1iZXIgcGx1cyAxLiAgUm9sYW5kIG1vZHVsZXMgdXNlIHRoaXMgY29tbWFuZCB0byBzd2l0Y2ggYmV0d2VlbiBkaWZmZXJlbnQKKyJwYXJ0cyIsIHNvIHRoaXMgZmVhdHVyZSBsZXRzIHlvdSB0cmVhdCBlYWNoIHBhcnQgYXMgYSBkaXN0aW5jdCByYXcgTUlESQorc3Vic3RyZWFtLiBUaGUgZHJpdmVyIHByb3ZpZGVzIG5vIHdheSB0byBzZW5kIEY1IDAwIChubyBzZWxlY3Rpb24pIG9yIHRvIG5vdAorc2VuZCB0aGUgRjUgTk4gY29tbWFuZCBzZXF1ZW5jZSBhdCBhbGw7IHBlcmhhcHMgaXQgb3VnaHQgdG8uCisKK1VzYWdlIGV4YW1wbGUgZm9yIHNpbXBsZSBzZXJpYWwgY29udmVydGVyOgorCisJL3NiaW4vc2V0c2VyaWFsIC9kZXYvdHR5UzAgdWFydCBub25lCisJL3NiaW4vbW9kcHJvYmUgc25kLXNlcmlhbC11MTY1NTAgcG9ydD0weDNmOCBpcnE9NCBzcGVlZD0xMTUyMDAKKworVXNhZ2UgZXhhbXBsZSBmb3IgUm9sYW5kIFNvdW5kQ2FudmFzIHdpdGggNCBNSURJIHBvcnRzOgorCisJL3NiaW4vc2V0c2VyaWFsIC9kZXYvdHR5UzAgdWFydCBub25lCisJL3NiaW4vbW9kcHJvYmUgc25kLXNlcmlhbC11MTY1NTAgcG9ydD0weDNmOCBpcnE9NCBvdXRzPTQKKworSW4gTVMtMTI0VCBtb2RlLCBvbmUgcmF3IE1JREkgc3Vic3RyZWFtIGlzIHN1cHBvcnRlZCAobWlkaUNuRDApOyB0aGUgb3V0cworbW9kdWxlIHBhcmFtZXRlciBpcyBhdXRvbWF0aWNhbGx5IHNldCB0byAxLiBUaGUgZHJpdmVyIHNlbmRzIHRoZSBzYW1lIGRhdGEgdG8KK2FsbCBmb3VyIE1JREkgT3V0IGNvbm5lY3RvcnMuICBTZXQgdGhlIEEtQiBzd2l0Y2ggYW5kIHRoZSBzcGVlZCBtb2R1bGUKK3BhcmFtZXRlciB0byBtYXRjaCAoQT0xOTIwMCwgQj05NjAwKS4KKworVXNhZ2UgZXhhbXBsZSBmb3IgTVMtMTI0VCwgd2l0aCBBLUIgc3dpdGNoIGluIEEgcG9zaXRpb246CisKKwkvc2Jpbi9zZXRzZXJpYWwgL2Rldi90dHlTMCB1YXJ0IG5vbmUKKwkvc2Jpbi9tb2Rwcm9iZSBzbmQtc2VyaWFsLXUxNjU1MCBwb3J0PTB4M2Y4IGlycT00IGFkYXB0b3I9MSBcCisJCQlzcGVlZD0xOTIwMAorCitJbiBNUy0xMjRXIFMvQSBtb2RlLCBvbmUgcmF3IE1JREkgc3Vic3RyZWFtIGlzIHN1cHBvcnRlZCAobWlkaUNuRDApOwordGhlIG91dHMgbW9kdWxlIHBhcmFtZXRlciBpcyBhdXRvbWF0aWNhbGx5IHNldCB0byAxLiBUaGUgZHJpdmVyIHNlbmRzCit0aGUgc2FtZSBkYXRhIHRvIGFsbCBmb3VyIE1JREkgT3V0IGNvbm5lY3RvcnMgYXQgZnVsbCBNSURJIHNwZWVkLgorCitVc2FnZSBleGFtcGxlIGZvciBTL0EgbW9kZToKKworCS9zYmluL3NldHNlcmlhbCAvZGV2L3R0eVMwIHVhcnQgbm9uZQorCS9zYmluL21vZHByb2JlIHNuZC1zZXJpYWwtdTE2NTUwIHBvcnQ9MHgzZjggaXJxPTQgYWRhcHRvcj0yCisKK0luIE1TLTEyNFcgTS9CIG1vZGUsIHRoZSBkcml2ZXIgc3VwcG9ydHMgMTYgQUxTQSByYXcgTUlESSBzdWJzdHJlYW1zOwordGhlIG91dHMgbW9kdWxlIHBhcmFtZXRlciBpcyBhdXRvbWF0aWNhbGx5IHNldCB0byAxNi4gIFRoZSBzdWJzdHJlYW0KK251bWJlciBnaXZlcyBhIGJpdG1hc2sgb2Ygd2hpY2ggTUlESSBPdXQgY29ubmVjdG9ycyB0aGUgZGF0YSBzaG91bGQgYmUKK3NlbnQgdG8sIHdpdGggbWlkaUNuRDEgc2VuZGluZyB0byBPdXQgMSwgbWlkaUNuRDIgdG8gT3V0IDIsIG1pZGlDbkQ0IHRvCitPdXQgMywgYW5kIG1pZGlDbkQ4IHRvIE91dCA0LiAgVGh1cyBtaWRpQ25EMTUgc2VuZHMgdGhlIGRhdGEgdG8gYWxsIDQgcG9ydHMuCitBcyBhIHNwZWNpYWwgY2FzZSwgbWlkaUNuRDAgYWxzbyBzZW5kcyB0byBhbGwgcG9ydHMsIHNpbmNlIGl0IGlzIG5vdCB1c2VmdWwKK3RvIHNlbmQgdGhlIGRhdGEgdG8gbm8gcG9ydHMuICBNL0IgbW9kZSBoYXMgZXh0cmEgb3ZlcmhlYWQgdG8gc2VsZWN0IHRoZSBNSURJCitPdXQgZm9yIGVhY2ggYnl0ZSwgc28gdGhlIGFnZ3JlZ2F0ZSBkYXRhIHJhdGUgYWNyb3NzIGFsbCBmb3VyIE1JREkgT3V0cyBpcworYXQgbW9zdCBvbmUgYnl0ZSBldmVyeSA1MjAgdXMsIGFzIGNvbXBhcmVkIHdpdGggdGhlIGZ1bGwgTUlESSBkYXRhIHJhdGUgb2YKK29uZSBieXRlIGV2ZXJ5IDMyMCB1cyBwZXIgcG9ydC4KKworVXNhZ2UgZXhhbXBsZSBmb3IgTS9CIG1vZGU6CisKKwkvc2Jpbi9zZXRzZXJpYWwgL2Rldi90dHlTMCB1YXJ0IG5vbmUKKwkvc2Jpbi9tb2Rwcm9iZSBzbmQtc2VyaWFsLXUxNjU1MCBwb3J0PTB4M2Y4IGlycT00IGFkYXB0b3I9MworCitUaGUgTVMtMTI0VyBoYXJkd2FyZSdzIE0vQSBtb2RlIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLiBUaGlzIG1vZGUgYWxsb3dzCit0aGUgTUlESSBPdXRzIHRvIGFjdCBpbmRlcGVuZGVudGx5IGF0IGRvdWJsZSB0aGUgYWdncmVnYXRlIHRocm91Z2hwdXQgb2YgTS9CLAorYnV0IGRvZXMgbm90IGFsbG93IHNlbmRpbmcgdGhlIHNhbWUgYnl0ZSBzaW11bHRhbmVvdXNseSB0byBtdWx0aXBsZSBNSURJIE91dHMuIAorVGhlIE0vQSBwcm90b2NvbCByZXF1aXJlcyB0aGUgZHJpdmVyIHRvIHR3aWRkbGUgdGhlIG1vZGVtIGNvbnRyb2wgbGluZXMgdW5kZXIKK3RpbWluZyBjb25zdHJhaW50cywgc28gaXQgd291bGQgYmUgYSBiaXQgbW9yZSBjb21wbGljYXRlZCB0byBpbXBsZW1lbnQgdGhhbgordGhlIG90aGVyIG1vZGVzLgorCitNaWRpYXRvciBtb2RlbHMgb3RoZXIgdGhhbiBNUy0xMjRXIGFuZCBNUy0xMjRUIGFyZSBjdXJyZW50bHkgbm90IHN1cHBvcnRlZC4gCitOb3RlIHRoYXQgdGhlIHN1ZmZpeCBsZXR0ZXIgaXMgc2lnbmlmaWNhbnQ7IHRoZSBNUy0xMjQgYW5kIE1TLTEyNEIgYXJlIG5vdAorY29tcGF0aWJsZSwgbm9yIGFyZSB0aGUgb3RoZXIga25vd24gbW9kZWxzIE1TLTEwMSwgTVMtMTAxQiwgTVMtMTAzLCBhbmQgTVMtMTE0LgorSSBkbyBoYXZlIGRvY3VtZW50YXRpb24gKHRpbS5tYW5uQGNvbXBhcS5jb20pIHRoYXQgcGFydGlhbGx5IGNvdmVycyB0aGVzZSBtb2RlbHMsCitidXQgbm8gdW5pdHMgdG8gZXhwZXJpbWVudCB3aXRoLiAgVGhlIE1TLTEyNFcgc3VwcG9ydCBpcyB0ZXN0ZWQgd2l0aCBhIHJlYWwgdW5pdC4KK1RoZSBNUy0xMjRUIHN1cHBvcnQgaXMgdW50ZXN0ZWQsIGJ1dCBzaG91bGQgd29yay4KKworVGhlIEdlbmVyaWMgZHJpdmVyIHN1cHBvcnRzIG11bHRpcGxlIGlucHV0IGFuZCBvdXRwdXQgc3Vic3RyZWFtcyBvdmVyIGEgc2luZ2xlCitzZXJpYWwgcG9ydC4gIFNpbWlsYXIgdG8gUm9sYW5kIFNvdW5kY2FudmFzIG1vZGUsIEY1IE5OIGlzIHVzZWQgdG8gc2VsZWN0IHRoZQorYXBwcm9wcmlhdGUgaW5wdXQgb3Igb3V0cHV0IHN0cmVhbSAoZGVwZW5kaW5nIG9uIHRoZSBkYXRhIGRpcmVjdGlvbikuCitBZGRpdGlvbmFsbHksIHRoZSBDVFMgc2lnbmFsIGlzIHVzZWQgdG8gcmVndWxhdGUgdGhlIGRhdGEgZmxvdy4gIFRoZSBudW1iZXIgb2YKK2lucHV0cyBpcyBzcGVjaWZpZWQgYnkgdGhlIGlucyBwYXJhbWV0ZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2Evc29jL0RBSS50eHQgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2Evc29jL0RBSS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk2NzkyNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zb2MvREFJLnR4dApAQCAtMCwwICsxLDU2IEBACitBU29DIGN1cnJlbnRseSBzdXBwb3J0cyB0aGUgdGhyZWUgbWFpbiBEaWdpdGFsIEF1ZGlvIEludGVyZmFjZXMgKERBSSkgZm91bmQgb24KK1NvQyBjb250cm9sbGVycyBhbmQgcG9ydGFibGUgYXVkaW8gQ09ERUNzIHRvZGF5LCBuYW1lbHkgQUM5NywgSTJTIGFuZCBQQ00uCisKKworQUM5NworPT09PQorCisgIEFDOTcgaXMgYSBmaXZlIHdpcmUgaW50ZXJmYWNlIGNvbW1vbmx5IGZvdW5kIG9uIG1hbnkgUEMgc291bmQgY2FyZHMuIEl0IGlzCitub3cgYWxzbyBwb3B1bGFyIGluIG1hbnkgcG9ydGFibGUgZGV2aWNlcy4gVGhpcyBEQUkgaGFzIGEgcmVzZXQgbGluZSBhbmQgdGltZQorbXVsdGlwbGV4ZXMgaXRzIGRhdGEgb24gaXRzIFNEQVRBX09VVCAocGxheWJhY2spIGFuZCBTREFUQV9JTiAoY2FwdHVyZSkgbGluZXMuCitUaGUgYml0IGNsb2NrIChCQ0xLKSBpcyBhbHdheXMgZHJpdmVuIGJ5IHRoZSBDT0RFQyAodXN1YWxseSAxMi4yODhNSHopIGFuZCB0aGUKK2ZyYW1lIChGUkFNRSkgKHVzdWFsbHkgNDhrSHopIGlzIGFsd2F5cyBkcml2ZW4gYnkgdGhlIGNvbnRyb2xsZXIuIEVhY2ggQUM5NworZnJhbWUgaXMgMjF1UyBsb25nIGFuZCBpcyBkaXZpZGVkIGludG8gMTMgdGltZSBzbG90cy4KKworVGhlIEFDOTcgc3BlY2lmaWNhdGlvbiBjYW4gYmUgZm91bmQgYXQgOi0KK2h0dHA6Ly93d3cuaW50ZWwuY29tL3AvZW5fVVMvYnVzaW5lc3MvZGVzaWduCisKKworSTJTCis9PT0KKworIEkyUyBpcyBhIGNvbW1vbiA0IHdpcmUgREFJIHVzZWQgaW4gSGlGaSwgU1RCIGFuZCBwb3J0YWJsZSBkZXZpY2VzLiBUaGUgVHggYW5kCitSeCBsaW5lcyBhcmUgdXNlZCBmb3IgYXVkaW8gdHJhbnNtaXNzaW9uLCB3aGlsc3QgdGhlIGJpdCBjbG9jayAoQkNMSykgYW5kCitsZWZ0L3JpZ2h0IGNsb2NrIChMUkMpIHN5bmNocm9uaXNlIHRoZSBsaW5rLiBJMlMgaXMgZmxleGlibGUgaW4gdGhhdCBlaXRoZXIgdGhlCitjb250cm9sbGVyIG9yIENPREVDIGNhbiBkcml2ZSAobWFzdGVyKSB0aGUgQkNMSyBhbmQgTFJDIGNsb2NrIGxpbmVzLiBCaXQgY2xvY2sKK3VzdWFsbHkgdmFyaWVzIGRlcGVuZGluZyBvbiB0aGUgc2FtcGxlIHJhdGUgYW5kIHRoZSBtYXN0ZXIgc3lzdGVtIGNsb2NrCisoU1lTQ0xLKS4gTFJDTEsgaXMgdGhlIHNhbWUgYXMgdGhlIHNhbXBsZSByYXRlLiBBIGZldyBkZXZpY2VzIHN1cHBvcnQgc2VwYXJhdGUKK0FEQyBhbmQgREFDIExSQ0xLcywgdGhpcyBhbGxvd3MgZm9yIHNpbXVsdGFuZW91cyBjYXB0dXJlIGFuZCBwbGF5YmFjayBhdAorZGlmZmVyZW50IHNhbXBsZSByYXRlcy4KKworSTJTIGhhcyBzZXZlcmFsIGRpZmZlcmVudCBvcGVyYXRpbmcgbW9kZXM6LQorCisgbyBJMlMgLSBNU0IgaXMgdHJhbnNtaXR0ZWQgb24gdGhlIGZhbGxpbmcgZWRnZSBvZiB0aGUgZmlyc3QgQkNMSyBhZnRlciBMUkMKKyAgICAgICAgIHRyYW5zaXRpb24uCisKKyBvIExlZnQgSnVzdGlmaWVkIC0gTVNCIGlzIHRyYW5zbWl0dGVkIG9uIHRyYW5zaXRpb24gb2YgTFJDLgorCisgbyBSaWdodCBKdXN0aWZpZWQgLSBNU0IgaXMgdHJhbnNtaXR0ZWQgc2FtcGxlIHNpemUgQkNMS3MgYmVmb3JlIExSQworICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbi4KKworUENNCis9PT0KKworUENNIGlzIGFub3RoZXIgNCB3aXJlIGludGVyZmFjZSwgdmVyeSBzaW1pbGFyIHRvIEkyUywgd2hpY2ggY2FuIHN1cHBvcnQgYSBtb3JlCitmbGV4aWJsZSBwcm90b2NvbC4gSXQgaGFzIGJpdCBjbG9jayAoQkNMSykgYW5kIHN5bmMgKFNZTkMpIGxpbmVzIHRoYXQgYXJlIHVzZWQKK3RvIHN5bmNocm9uaXNlIHRoZSBsaW5rIHdoaWxzdCB0aGUgVHggYW5kIFJ4IGxpbmVzIGFyZSB1c2VkIHRvIHRyYW5zbWl0IGFuZAorcmVjZWl2ZSB0aGUgYXVkaW8gZGF0YS4gQml0IGNsb2NrIHVzdWFsbHkgdmFyaWVzIGRlcGVuZGluZyBvbiBzYW1wbGUgcmF0ZQord2hpbHN0IHN5bmMgcnVucyBhdCB0aGUgc2FtcGxlIHJhdGUuIFBDTSBhbHNvIHN1cHBvcnRzIFRpbWUgRGl2aXNpb24KK011bHRpcGxleGluZyAoVERNKSBpbiB0aGF0IHNldmVyYWwgZGV2aWNlcyBjYW4gdXNlIHRoZSBidXMgc2ltdWx0YW5lb3VzbHkgKHRoaXMKK2lzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBuZXR3b3JrIG1vZGUpLgorCitDb21tb24gUENNIG9wZXJhdGluZyBtb2RlczotCisKKyBvIE1vZGUgQSAtIE1TQiBpcyB0cmFuc21pdHRlZCBvbiBmYWxsaW5nIGVkZ2Ugb2YgZmlyc3QgQkNMSyBhZnRlciBGUkFNRS9TWU5DLgorCisgbyBNb2RlIEIgLSBNU0IgaXMgdHJhbnNtaXR0ZWQgb24gcmlzaW5nIGVkZ2Ugb2YgRlJBTUUvU1lOQy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zb2MvRFBDTS50eHQgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2Evc29jL0RQQ00udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMTAxODAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2Evc29jL0RQQ00udHh0CkBAIC0wLDAgKzEsMzgwIEBACitEeW5hbWljIFBDTQorPT09PT09PT09PT0KKworMS4gRGVzY3JpcHRpb24KKz09PT09PT09PT09PT09CisKK0R5bmFtaWMgUENNIGFsbG93cyBhbiBBTFNBIFBDTSBkZXZpY2UgdG8gZGlnaXRhbGx5IHJvdXRlIGl0cyBQQ00gYXVkaW8gdG8KK3ZhcmlvdXMgZGlnaXRhbCBlbmRwb2ludHMgZHVyaW5nIHRoZSBQQ00gc3RyZWFtIHJ1bnRpbWUuIGUuZy4gUENNMCBjYW4gcm91dGUKK2RpZ2l0YWwgYXVkaW8gdG8gSTJTIERBSTAsIEkyUyBEQUkxIG9yIFBETSBEQUkyLiBUaGlzIGlzIHVzZWZ1bCBmb3Igb24gU29DIERTUAorZHJpdmVycyB0aGF0IGV4cG9zZSBzZXZlcmFsIEFMU0EgUENNcyBhbmQgY2FuIHJvdXRlIHRvIG11bHRpcGxlIERBSXMuCisKK1RoZSBEUENNIHJ1bnRpbWUgcm91dGluZyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBBTFNBIG1peGVyIHNldHRpbmdzIGluIHRoZSBzYW1lCit3YXkgYXMgdGhlIGFuYWxvZyBzaWduYWwgaXMgcm91dGVkIGluIGFuIEFTb0MgY29kZWMgZHJpdmVyLiBEUENNIHVzZXMgYSBEQVBNCitncmFwaCByZXByZXNlbnRpbmcgdGhlIERTUCBpbnRlcm5hbCBhdWRpbyBwYXRocyBhbmQgdXNlcyB0aGUgbWl4ZXIgc2V0dGluZ3MgdG8KK2RldGVybWluZSB0aGUgcGF0Y2ggdXNlZCBieSBlYWNoIEFMU0EgUENNLgorCitEUENNIHJlLXVzZXMgYWxsIHRoZSBleGlzdGluZyBjb21wb25lbnQgY29kZWMsIHBsYXRmb3JtIGFuZCBEQUkgZHJpdmVycyB3aXRob3V0CithbnkgbW9kaWZpY2F0aW9ucy4KKworCitQaG9uZSBBdWRpbyBTeXN0ZW0gd2l0aCBTb0MgYmFzZWQgRFNQCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvbnNpZGVyIHRoZSBmb2xsb3dpbmcgcGhvbmUgYXVkaW8gc3Vic3lzdGVtLiBUaGlzIHdpbGwgYmUgdXNlZCBpbiB0aGlzCitkb2N1bWVudCBmb3IgYWxsIGV4YW1wbGVzIDotCisKK3wgRnJvbnQgRW5kIFBDTXMgICAgfCAgU29DIERTUCAgfCBCYWNrIEVuZCBEQUlzIHwgQXVkaW8gZGV2aWNlcyB8CisKKyAgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKgorUENNMCA8LS0tLS0tLS0tLS0tPiAqICAgICAgICAgICAqIDwtLS0tREFJMC0tLS0tPiBDb2RlYyBIZWFkc2V0CisgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICoKK1BDTTEgPC0tLS0tLS0tLS0tLT4gKiAgICAgICAgICAgKiA8LS0tLURBSTEtLS0tLT4gQ29kZWMgU3BlYWtlcnMKKyAgICAgICAgICAgICAgICAgICAgKiAgIERTUCAgICAgKgorUENNMiA8LS0tLS0tLS0tLS0tPiAqICAgICAgICAgICAqIDwtLS0tREFJMi0tLS0tPiBNT0RFTQorICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAqCitQQ00zIDwtLS0tLS0tLS0tLS0+ICogICAgICAgICAgICogPC0tLS1EQUkzLS0tLS0+IEJUCisgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgKiA8LS0tLURBSTQtLS0tLT4gRE1JQworICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICogPC0tLS1EQUk1LS0tLS0+IEZNCisgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioKKworVGhpcyBkaWFncmFtIHNob3dzIGEgc2ltcGxlIHNtYXJ0IHBob25lIGF1ZGlvIHN1YnN5c3RlbS4gSXQgc3VwcG9ydHMgQmx1ZXRvb3RoLAorRk0gZGlnaXRhbCByYWRpbywgU3BlYWtlcnMsIEhlYWRzZXQgSmFjaywgZGlnaXRhbCBtaWNyb3Bob25lcyBhbmQgY2VsbHVsYXIKK21vZGVtLiBUaGlzIHNvdW5kIGNhcmQgZXhwb3NlcyA0IERTUCBmcm9udCBlbmQgKEZFKSBBTFNBIFBDTSBkZXZpY2VzIGFuZAorc3VwcG9ydHMgNiBiYWNrIGVuZCAoQkUpIERBSXMuIEVhY2ggRkUgUENNIGNhbiBkaWdpdGFsbHkgcm91dGUgYXVkaW8gZGF0YSB0byBhbnkKK29mIHRoZSBCRSBEQUlzLiBUaGUgRkUgUENNIGRldmljZXMgY2FuIGFsc28gcm91dGUgYXVkaW8gdG8gbW9yZSB0aGFuIDEgQkUgREFJLgorCisKKworRXhhbXBsZSAtIERQQ00gU3dpdGNoaW5nIHBsYXliYWNrIGZyb20gREFJMCB0byBEQUkxCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQXVkaW8gaXMgYmVpbmcgcGxheWVkIHRvIHRoZSBIZWFkc2V0LiBBZnRlciBhIHdoaWxlIHRoZSB1c2VyIHJlbW92ZXMgdGhlIGhlYWRzZXQKK2FuZCBhdWRpbyBjb250aW51ZXMgcGxheWluZyBvbiB0aGUgc3BlYWtlcnMuCisKK1BsYXliYWNrIG9uIFBDTTAgdG8gSGVhZHNldCB3b3VsZCBsb29rIGxpa2UgOi0KKworICAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqCitQQ00wIDw9PT09PT09PT09PT0+ICogICAgICAgICAgICogPD09PT1EQUkwPT09PT0+IENvZGVjIEhlYWRzZXQKKyAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgKgorUENNMSA8LS0tLS0tLS0tLS0tPiAqICAgICAgICAgICAqIDwtLS0tREFJMS0tLS0tPiBDb2RlYyBTcGVha2VycworICAgICAgICAgICAgICAgICAgICAqICAgRFNQICAgICAqCitQQ00yIDwtLS0tLS0tLS0tLS0+ICogICAgICAgICAgICogPC0tLS1EQUkyLS0tLS0+IE1PREVNCisgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICoKK1BDTTMgPC0tLS0tLS0tLS0tLT4gKiAgICAgICAgICAgKiA8LS0tLURBSTMtLS0tLT4gQlQKKyAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAqIDwtLS0tREFJNC0tLS0tPiBETUlDCisgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgKiA8LS0tLURBSTUtLS0tLT4gRk0KKyAgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKgorCitUaGUgaGVhZHNldCBpcyByZW1vdmVkIGZyb20gdGhlIGphY2sgYnkgdXNlciBzbyB0aGUgc3BlYWtlcnMgbXVzdCBub3cgYmUgdXNlZCA6LQorCisgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioKK1BDTTAgPD09PT09PT09PT09PT4gKiAgICAgICAgICAgKiA8LS0tLURBSTAtLS0tLT4gQ29kZWMgSGVhZHNldAorICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAqCitQQ00xIDwtLS0tLS0tLS0tLS0+ICogICAgICAgICAgICogPD09PT1EQUkxPT09PT0+IENvZGVjIFNwZWFrZXJzCisgICAgICAgICAgICAgICAgICAgICogICBEU1AgICAgICoKK1BDTTIgPC0tLS0tLS0tLS0tLT4gKiAgICAgICAgICAgKiA8LS0tLURBSTItLS0tLT4gTU9ERU0KKyAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgKgorUENNMyA8LS0tLS0tLS0tLS0tPiAqICAgICAgICAgICAqIDwtLS0tREFJMy0tLS0tPiBCVAorICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICogPC0tLS1EQUk0LS0tLS0+IERNSUMKKyAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAqIDwtLS0tREFJNS0tLS0tPiBGTQorICAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqCisKK1RoZSBhdWRpbyBkcml2ZXIgcHJvY2Vzc2VzIHRoaXMgYXMgZm9sbG93cyA6LQorCisgMSkgTWFjaGluZSBkcml2ZXIgcmVjZWl2ZXMgSmFjayByZW1vdmFsIGV2ZW50LgorCisgMikgTWFjaGluZSBkcml2ZXIgT1IgYXVkaW8gSEFMIGRpc2FibGVzIHRoZSBIZWFkc2V0IHBhdGguCisKKyAzKSBEUENNIHJ1bnMgdGhlIFBDTSB0cmlnZ2VyKHN0b3ApLCBod19mcmVlKCksIHNodXRkb3duKCkgb3BlcmF0aW9ucyBvbiBEQUkwCisgICAgZm9yIGhlYWRzZXQgc2luY2UgdGhlIHBhdGggaXMgbm93IGRpc2FibGVkLgorCisgNCkgTWFjaGluZSBkcml2ZXIgb3IgYXVkaW8gSEFMIGVuYWJsZXMgdGhlIHNwZWFrZXIgcGF0aC4KKworIDUpIERQQ00gcnVucyB0aGUgUENNIG9wcyBmb3Igc3RhcnR1cCgpLCBod19wYXJhbXMoKSwgcHJlcGFwcmUoKSBhbmQKKyAgICB0cmlnZ2VyKHN0YXJ0KSBmb3IgREFJMSBTcGVha2VycyBzaW5jZSB0aGUgcGF0aCBpcyBlbmFibGVkLgorCitJbiB0aGlzIGV4YW1wbGUsIHRoZSBtYWNoaW5lIGRyaXZlciBvciB1c2Vyc3BhY2UgYXVkaW8gSEFMIGNhbiBhbHRlciB0aGUgcm91dGluZworYW5kIHRoZW4gRFBDTSB3aWxsIHRha2UgY2FyZSBvZiBtYW5hZ2luZyB0aGUgREFJIFBDTSBvcGVyYXRpb25zIHRvIGVpdGhlciBicmluZwordGhlIGxpbmsgdXAgb3IgZG93bi4gQXVkaW8gcGxheWJhY2sgZG9lcyBub3Qgc3RvcCBkdXJpbmcgdGhpcyB0cmFuc2l0aW9uLgorCisKKworRFBDTSBtYWNoaW5lIGRyaXZlcgorPT09PT09PT09PT09PT09PT09PQorCitUaGUgRFBDTSBlbmFibGVkIEFTb0MgbWFjaGluZSBkcml2ZXIgaXMgc2ltaWxhciB0byBub3JtYWwgbWFjaGluZSBkcml2ZXJzCitleGNlcHQgdGhhdCB3ZSBhbHNvIGhhdmUgdG8gOi0KKworIDEpIERlZmluZSB0aGUgRkUgYW5kIEJFIERBSSBsaW5rcy4KKworIDIpIERlZmluZSBhbnkgRkUvQkUgUENNIG9wZXJhdGlvbnMuCisKKyAzKSBEZWZpbmUgd2lkZ2V0IGdyYXBoIGNvbm5lY3Rpb25zLgorCisKKzEgRkUgYW5kIEJFIERBSSBsaW5rcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3wgRnJvbnQgRW5kIFBDTXMgICAgfCAgU29DIERTUCAgfCBCYWNrIEVuZCBEQUlzIHwgQXVkaW8gZGV2aWNlcyB8CisKKyAgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKgorUENNMCA8LS0tLS0tLS0tLS0tPiAqICAgICAgICAgICAqIDwtLS0tREFJMC0tLS0tPiBDb2RlYyBIZWFkc2V0CisgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICoKK1BDTTEgPC0tLS0tLS0tLS0tLT4gKiAgICAgICAgICAgKiA8LS0tLURBSTEtLS0tLT4gQ29kZWMgU3BlYWtlcnMKKyAgICAgICAgICAgICAgICAgICAgKiAgIERTUCAgICAgKgorUENNMiA8LS0tLS0tLS0tLS0tPiAqICAgICAgICAgICAqIDwtLS0tREFJMi0tLS0tPiBNT0RFTQorICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAqCitQQ00zIDwtLS0tLS0tLS0tLS0+ICogICAgICAgICAgICogPC0tLS1EQUkzLS0tLS0+IEJUCisgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgKiA8LS0tLURBSTQtLS0tLT4gRE1JQworICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICogPC0tLS1EQUk1LS0tLS0+IEZNCisgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioKKworRm9yIHRoZSBleGFtcGxlIGFib3ZlIHdlIGhhdmUgdG8gZGVmaW5lIDQgRkUgREFJIGxpbmtzIGFuZCA2IEJFIERBSSBsaW5rcy4gVGhlCitGRSBEQUkgbGlua3MgYXJlIGRlZmluZWQgYXMgZm9sbG93cyA6LQorCitzdGF0aWMgc3RydWN0IHNuZF9zb2NfZGFpX2xpbmsgbWFjaGluZV9kYWlzW10gPSB7CisJeworCQkubmFtZSA9ICJQQ00wIFN5c3RlbSIsCisJCS5zdHJlYW1fbmFtZSA9ICJTeXN0ZW0gUGxheWJhY2siLAorCQkuY3B1X2RhaV9uYW1lID0gIlN5c3RlbSBQaW4iLAorCQkucGxhdGZvcm1fbmFtZSA9ICJkc3AtYXVkaW8iLAorCQkuY29kZWNfbmFtZSA9ICJzbmQtc29jLWR1bW15IiwKKwkJLmNvZGVjX2RhaV9uYW1lID0gInNuZC1zb2MtZHVtbXktZGFpIiwKKwkJLmR5bmFtaWMgPSAxLAorCQkudHJpZ2dlciA9IHtTTkRfU09DX0RQQ01fVFJJR0dFUl9QT1NULCBTTkRfU09DX0RQQ01fVFJJR0dFUl9QT1NUfSwKKwkJLmRwY21fcGxheWJhY2sgPSAxLAorCX0sCisJLi4uLi48IG90aGVyIEZFIGFuZCBCRSBEQUkgbGlua3MgaGVyZSA+Cit9OworCitUaGlzIEZFIERBSSBsaW5rIGlzIHByZXR0eSBzaW1pbGFyIHRvIGEgcmVndWxhciBEQUkgbGluayBleGNlcHQgdGhhdCB3ZSBhbHNvCitzZXQgdGhlIERBSSBsaW5rIHRvIGEgRFBDTSBGRSB3aXRoIHRoZSAiZHluYW1pYyA9IDEiLiBUaGUgc3VwcG9ydGVkIEZFIHN0cmVhbQorZGlyZWN0aW9ucyBzaG91bGQgYWxzbyBiZSBzZXQgd2l0aCB0aGUgImRwY21fcGxheWJhY2siIGFuZCAiZHBjbV9jYXB0dXJlIgorZmxhZ3MuIFRoZXJlIGlzIGFsc28gYW4gb3B0aW9uIHRvIHNwZWNpZnkgdGhlIG9yZGVyaW5nIG9mIHRoZSB0cmlnZ2VyIGNhbGwgZm9yCitlYWNoIEZFLiBUaGlzIGFsbG93cyB0aGUgQVNvQyBjb3JlIHRvIHRyaWdnZXIgdGhlIERTUCBiZWZvcmUgb3IgYWZ0ZXIgdGhlIG90aGVyCitjb21wb25lbnRzIChhcyBzb21lIERTUHMgaGF2ZSBzdHJvbmcgcmVxdWlyZW1lbnRzIGZvciB0aGUgb3JkZXJpbmcgREFJL0RTUAorc3RhcnQgYW5kIHN0b3Agc2VxdWVuY2VzKS4KKworVGhlIEZFIERBSSBhYm92ZSBzZXRzIHRoZSBjb2RlYyBhbmQgY29kZSBEQUlzIHRvIGR1bW15IGRldmljZXMgc2luY2UgdGhlIEJFIGlzCitkeW5hbWljIGFuZCB3aWxsIGNoYW5nZSBkZXBlbmRpbmcgb24gcnVudGltZSBjb25maWcuCisKK1RoZSBCRSBEQUlzIGFyZSBjb25maWd1cmVkIGFzIGZvbGxvd3MgOi0KKworc3RhdGljIHN0cnVjdCBzbmRfc29jX2RhaV9saW5rIG1hY2hpbmVfZGFpc1tdID0geworCS4uLi4uPCBGRSBEQUkgbGlua3MgaGVyZSA+CisJeworCQkubmFtZSA9ICJDb2RlYyBIZWFkc2V0IiwKKwkJLmNwdV9kYWlfbmFtZSA9ICJzc3AtZGFpLjAiLAorCQkucGxhdGZvcm1fbmFtZSA9ICJzbmQtc29jLWR1bW15IiwKKwkJLm5vX3BjbSA9IDEsCisJCS5jb2RlY19uYW1lID0gInJ0NTY0MC4wLTAwMWMiLAorCQkuY29kZWNfZGFpX25hbWUgPSAicnQ1NjQwLWFpZjEiLAorCQkuaWdub3JlX3N1c3BlbmQgPSAxLAorCQkuaWdub3JlX3BtZG93bl90aW1lID0gMSwKKwkJLmJlX2h3X3BhcmFtc19maXh1cCA9IGhzd3VsdF9zc3AwX2ZpeHVwLAorCQkub3BzID0gJmhhc3dlbGxfb3BzLAorCQkuZHBjbV9wbGF5YmFjayA9IDEsCisJCS5kcGNtX2NhcHR1cmUgPSAxLAorCX0sCisJLi4uLi48IG90aGVyIEJFIERBSSBsaW5rcyBoZXJlID4KK307CisKK1RoaXMgQkUgREFJIGxpbmsgY29ubmVjdHMgREFJMCB0byB0aGUgY29kZWMgKGluIHRoaXMgY2FzZSBSVDU0NjAgQUlGMSkuIEl0IHNldHMKK3RoZSAibm9fcGNtIiBmbGFnIHRvIG1hcmsgaXQgaGFzIGEgQkUgYW5kIHNldHMgZmxhZ3MgZm9yIHN1cHBvcnRlZCBzdHJlYW0KK2RpcmVjdGlvbnMgdXNpbmcgImRwY21fcGxheWJhY2siIGFuZCAiZHBjbV9jYXB0dXJlIiBhYm92ZS4KKworVGhlIEJFIGhhcyBhbHNvIGZsYWdzIHNldCBmb3IgaWdub3Jpbmcgc3VzcGVuZCBhbmQgUE0gZG93biB0aW1lLiBUaGlzIGFsbG93cwordGhlIEJFIHRvIHdvcmsgaW4gYSBob3N0bGVzcyBtb2RlIHdoZXJlIHRoZSBob3N0IENQVSBpcyBub3QgdHJhbnNmZXJyaW5nIGRhdGEKK2xpa2UgYSBCVCBwaG9uZSBjYWxsIDotCisKKyAgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKgorUENNMCA8LS0tLS0tLS0tLS0tPiAqICAgICAgICAgICAqIDwtLS0tREFJMC0tLS0tPiBDb2RlYyBIZWFkc2V0CisgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICoKK1BDTTEgPC0tLS0tLS0tLS0tLT4gKiAgICAgICAgICAgKiA8LS0tLURBSTEtLS0tLT4gQ29kZWMgU3BlYWtlcnMKKyAgICAgICAgICAgICAgICAgICAgKiAgIERTUCAgICAgKgorUENNMiA8LS0tLS0tLS0tLS0tPiAqICAgICAgICAgICAqIDw9PT09REFJMj09PT09PiBNT0RFTQorICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAqCitQQ00zIDwtLS0tLS0tLS0tLS0+ICogICAgICAgICAgICogPD09PT1EQUkzPT09PT0+IEJUCisgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgKiA8LS0tLURBSTQtLS0tLT4gRE1JQworICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICogPC0tLS1EQUk1LS0tLS0+IEZNCisgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioKKworVGhpcyBhbGxvd3MgdGhlIGhvc3QgQ1BVIHRvIHNsZWVwIHdoaWxzdCB0aGUgRFNQLCBNT0RFTSBEQUkgYW5kIHRoZSBCVCBEQUkgYXJlCitzdGlsbCBpbiBvcGVyYXRpb24uCisKK0EgQkUgREFJIGxpbmsgY2FuIGFsc28gc2V0IHRoZSBjb2RlYyB0byBhIGR1bW15IGRldmljZSBpZiB0aGUgY29kZSBpcyBhIGRldmljZQordGhhdCBpcyBtYW5hZ2VkIGV4dGVybmFsbHkuCisKK0xpa2V3aXNlIGEgQkUgREFJIGNhbiBhbHNvIHNldCBhIGR1bW15IGNwdSBEQUkgaWYgdGhlIENQVSBEQUkgaXMgbWFuYWdlZCBieSB0aGUKK0RTUCBmaXJtd2FyZS4KKworCisyIEZFL0JFIFBDTSBvcGVyYXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBCRSBhYm92ZSBhbHNvIGV4cG9ydHMgc29tZSBQQ00gb3BlcmF0aW9ucyBhbmQgYSAiZml4dXAiIGNhbGxiYWNrLiBUaGUgZml4dXAKK2NhbGxiYWNrIGlzIHVzZWQgYnkgdGhlIG1hY2hpbmUgZHJpdmVyIHRvIChyZSljb25maWd1cmUgdGhlIERBSSBiYXNlZCB1cG9uIHRoZQorRkUgaHcgcGFyYW1zLiBpLmUuIHRoZSBEU1AgbWF5IHBlcmZvcm0gU1JDIG9yIEFTUkMgZnJvbSB0aGUgRkUgdG8gQkUuCisKK2UuZy4gRFNQIGNvbnZlcnRzIGFsbCBGRSBodyBwYXJhbXMgdG8gcnVuIGF0IGZpeGVkIHJhdGUgb2YgNDhrLCAxNmJpdCwgc3RlcmVvIGZvcgorREFJMC4gVGhpcyBtZWFucyBhbGwgRkUgaHdfcGFyYW1zIGhhdmUgdG8gYmUgZml4ZWQgaW4gdGhlIG1hY2hpbmUgZHJpdmVyIGZvcgorREFJMCBzbyB0aGF0IHRoZSBEQUkgaXMgcnVubmluZyBhdCBkZXNpcmVkIGNvbmZpZ3VyYXRpb24gcmVnYXJkbGVzcyBvZiB0aGUgRkUKK2NvbmZpZ3VyYXRpb24uCisKK3N0YXRpYyBpbnQgZGFpMF9maXh1cChzdHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqcnRkLAorCQkJc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMpCit7CisJc3RydWN0IHNuZF9pbnRlcnZhbCAqcmF0ZSA9IGh3X3BhcmFtX2ludGVydmFsKHBhcmFtcywKKwkJCVNORFJWX1BDTV9IV19QQVJBTV9SQVRFKTsKKwlzdHJ1Y3Qgc25kX2ludGVydmFsICpjaGFubmVscyA9IGh3X3BhcmFtX2ludGVydmFsKHBhcmFtcywKKwkJCQkJCVNORFJWX1BDTV9IV19QQVJBTV9DSEFOTkVMUyk7CisKKwkvKiBUaGUgRFNQIHdpbGwgY292ZXJ0IHRoZSBGRSByYXRlIHRvIDQ4aywgc3RlcmVvICovCisJcmF0ZS0+bWluID0gcmF0ZS0+bWF4ID0gNDgwMDA7CisJY2hhbm5lbHMtPm1pbiA9IGNoYW5uZWxzLT5tYXggPSAyOworCisJLyogc2V0IERBSTAgdG8gMTYgYml0ICovCisJc25kX21hc2tfc2V0KCZwYXJhbXMtPm1hc2tzW1NORFJWX1BDTV9IV19QQVJBTV9GT1JNQVQgLQorCQkJCSAgICBTTkRSVl9QQ01fSFdfUEFSQU1fRklSU1RfTUFTS10sCisJCQkJICAgIFNORFJWX1BDTV9GT1JNQVRfUzE2X0xFKTsKKwlyZXR1cm4gMDsKK30KKworVGhlIG90aGVyIFBDTSBvcGVyYXRpb24gYXJlIHRoZSBzYW1lIGFzIGZvciByZWd1bGFyIERBSSBsaW5rcy4gVXNlIGFzIG5lY2Vzc2FyeS4KKworCiszIFdpZGdldCBncmFwaCBjb25uZWN0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIEJFIERBSSBsaW5rcyB3aWxsIG5vcm1hbGx5IGJlIGNvbm5lY3RlZCB0byB0aGUgZ3JhcGggYXQgaW5pdGlhbGlzYXRpb24gdGltZQorYnkgdGhlIEFTb0MgREFQTSBjb3JlLiBIb3dldmVyLCBpZiB0aGUgQkUgY29kZWMgb3IgQkUgREFJIGlzIGEgZHVtbXkgdGhlbiB0aGlzCitoYXMgdG8gYmUgc2V0IGV4cGxpY2l0bHkgaW4gdGhlIGRyaXZlciA6LQorCisvKiBCRSBmb3IgY29kZWMgSGVhZHNldCAtICBEQUkwIGlzIGR1bW15IGFuZCBtYW5hZ2VkIGJ5IERTUCBGVyAqLworeyJEQUkwIENPREVDIElOIiwgTlVMTCwgIkFJRjEgQ2FwdHVyZSJ9LAoreyJBSUYxIFBsYXliYWNrIiwgTlVMTCwgIkRBSTAgQ09ERUMgT1VUIn0sCisKKworV3JpdGluZyBhIERQQ00gRFNQIGRyaXZlcgorPT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgRFBDTSBEU1AgZHJpdmVyIGxvb2tzIG11Y2ggbGlrZSBhIHN0YW5kYXJkIHBsYXRmb3JtIGNsYXNzIEFTb0MgZHJpdmVyCitjb21iaW5lZCB3aXRoIGVsZW1lbnRzIGZyb20gYSBjb2RlYyBjbGFzcyBkcml2ZXIuIEEgRFNQIHBsYXRmb3JtIGRyaXZlciBtdXN0CitpbXBsZW1lbnQgOi0KKworIDEpIEZyb250IEVuZCBQQ00gREFJcyAtIGkuZS4gc3RydWN0IHNuZF9zb2NfZGFpX2RyaXZlci4KKworIDIpIERBUE0gZ3JhcGggc2hvd2luZyBEU1AgYXVkaW8gcm91dGluZyBmcm9tIEZFIERBSXMgdG8gQkVzLgorCisgMykgREFQTSB3aWRnZXRzIGZyb20gRFNQIGdyYXBoLgorCisgNCkgTWl4ZXJzIGZvciBnYWlucywgcm91dGluZywgZXRjLgorCisgNSkgRE1BIGNvbmZpZ3VyYXRpb24uCisKKyA2KSBCRSBBSUYgd2lkZ2V0cy4KKworSXRlbXMgNiBpcyBpbXBvcnRhbnQgZm9yIHJvdXRpbmcgdGhlIGF1ZGlvIG91dHNpZGUgb2YgdGhlIERTUC4gQUlGIG5lZWQgdG8gYmUKK2RlZmluZWQgZm9yIGVhY2ggQkUgYW5kIGVhY2ggc3RyZWFtIGRpcmVjdGlvbi4gZS5nIGZvciBCRSBEQUkwIGFib3ZlIHdlIHdvdWxkCitoYXZlIDotCisKK1NORF9TT0NfREFQTV9BSUZfSU4oIkRBSTAgUlgiLCBOVUxMLCAwLCBTTkRfU09DX05PUE0sIDAsIDApLAorU05EX1NPQ19EQVBNX0FJRl9PVVQoIkRBSTAgVFgiLCBOVUxMLCAwLCBTTkRfU09DX05PUE0sIDAsIDApLAorCitUaGUgQkUgQUlGIGFyZSB1c2VkIHRvIGNvbm5lY3QgdGhlIERTUCBncmFwaCB0byB0aGUgZ3JhcGhzIGZvciB0aGUgb3RoZXIKK2NvbXBvbmVudCBkcml2ZXJzIChlLmcuIGNvZGVjIGdyYXBoKS4KKworCitIb3N0bGVzcyBQQ00gc3RyZWFtcworPT09PT09PT09PT09PT09PT09PT0KKworQSBob3N0bGVzcyBQQ00gc3RyZWFtIGlzIGEgc3RyZWFtIHRoYXQgaXMgbm90IHJvdXRlZCB0aHJvdWdoIHRoZSBob3N0IENQVS4gQW4KK2V4YW1wbGUgb2YgdGhpcyB3b3VsZCBiZSBhIHBob25lIGNhbGwgZnJvbSBoYW5kc2V0IHRvIG1vZGVtLgorCisKKyAgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKgorUENNMCA8LS0tLS0tLS0tLS0tPiAqICAgICAgICAgICAqIDwtLS0tREFJMC0tLS0tPiBDb2RlYyBIZWFkc2V0CisgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICoKK1BDTTEgPC0tLS0tLS0tLS0tLT4gKiAgICAgICAgICAgKiA8PT09PURBSTE9PT09PT4gQ29kZWMgU3BlYWtlcnMvTWljCisgICAgICAgICAgICAgICAgICAgICogICBEU1AgICAgICoKK1BDTTIgPC0tLS0tLS0tLS0tLT4gKiAgICAgICAgICAgKiA8PT09PURBSTI9PT09PT4gTU9ERU0KKyAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgKgorUENNMyA8LS0tLS0tLS0tLS0tPiAqICAgICAgICAgICAqIDwtLS0tREFJMy0tLS0tPiBCVAorICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICogPC0tLS1EQUk0LS0tLS0+IERNSUMKKyAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAqIDwtLS0tREFJNS0tLS0tPiBGTQorICAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqCisKK0luIHRoaXMgY2FzZSB0aGUgUENNIGRhdGEgaXMgcm91dGVkIHZpYSB0aGUgRFNQLiBUaGUgaG9zdCBDUFUgaW4gdGhpcyB1c2UgY2FzZQoraXMgb25seSB1c2VkIGZvciBjb250cm9sIGFuZCBjYW4gc2xlZXAgZHVyaW5nIHRoZSBydW50aW1lIG9mIHRoZSBzdHJlYW0uCisKK1RoZSBob3N0IGNhbiBjb250cm9sIHRoZSBob3N0bGVzcyBsaW5rIGVpdGhlciBieSA6LQorCisgMSkgQ29uZmlndXJpbmcgdGhlIGxpbmsgYXMgYSBDT0RFQyA8LT4gQ09ERUMgc3R5bGUgbGluay4gSW4gdGhpcyBjYXNlIHRoZSBsaW5rCisgICAgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCBieSB0aGUgc3RhdGUgb2YgdGhlIERBUE0gZ3JhcGguIFRoaXMgdXN1YWxseSBtZWFucworICAgIHRoZXJlIGlzIGEgbWl4ZXIgY29udHJvbCB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvbm5lY3Qgb3IgZGlzY29ubmVjdCB0aGUgcGF0aAorICAgIGJldHdlZW4gYm90aCBEQUlzLgorCisgMikgSG9zdGxlc3MgRkUuIFRoaXMgRkUgaGFzIGEgdmlydHVhbCBjb25uZWN0aW9uIHRvIHRoZSBCRSBEQUkgbGlua3Mgb24gdGhlIERBUE0KKyAgICBncmFwaC4gQ29udHJvbCBpcyB0aGVuIGNhcnJpZWQgb3V0IGJ5IHRoZSBGRSBhcyByZWd1bGFyIFBDTSBvcGVyYXRpb25zLgorICAgIFRoaXMgbWV0aG9kIGdpdmVzIG1vcmUgY29udHJvbCBvdmVyIHRoZSBEQUkgbGlua3MsIGJ1dCByZXF1aXJlcyBtdWNoIG1vcmUKKyAgICB1c2Vyc3BhY2UgY29kZSB0byBjb250cm9sIHRoZSBsaW5rLiBJdHMgcmVjb21tZW5kZWQgdG8gdXNlIENPREVDPC0+Q09ERUMKKyAgICB1bmxlc3MgeW91ciBIVyBuZWVkcyBtb3JlIGZpbmUgZ3JhaW5lZCBzZXF1ZW5jaW5nIG9mIHRoZSBQQ00gb3BzLgorCisKK0NPREVDIDwtPiBDT0RFQyBsaW5rCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIERBSSBsaW5rIGlzIGVuYWJsZWQgd2hlbiBEQVBNIGRldGVjdHMgYSB2YWxpZCBwYXRoIHdpdGhpbiB0aGUgREFQTSBncmFwaC4KK1RoZSBtYWNoaW5lIGRyaXZlciBzZXRzIHNvbWUgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIHRvIHRoZSBEQUkgbGluayBpLmUuCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX3NvY19wY21fc3RyZWFtIGRhaV9wYXJhbXMgPSB7CisJLmZvcm1hdHMgPSBTTkRSVl9QQ01fRk1UQklUX1MzMl9MRSwKKwkucmF0ZV9taW4gPSA4MDAwLAorCS5yYXRlX21heCA9IDgwMDAsCisJLmNoYW5uZWxzX21pbiA9IDIsCisJLmNoYW5uZWxzX21heCA9IDIsCit9OworCitzdGF0aWMgc3RydWN0IHNuZF9zb2NfZGFpX2xpbmsgZGFpc1tdID0geworCTwgLi4uIG1vcmUgREFJIGxpbmtzIGFib3ZlIC4uLiA+CisJeworCQkubmFtZSA9ICJNT0RFTSIsCisJCS5zdHJlYW1fbmFtZSA9ICJNT0RFTSIsCisJCS5jcHVfZGFpX25hbWUgPSAiZGFpMiIsCisJCS5jb2RlY19kYWlfbmFtZSA9ICJtb2RlbS1haWYxIiwKKwkJLmNvZGVjX25hbWUgPSAibW9kZW0iLAorCQkuZGFpX2ZtdCA9IFNORF9TT0NfREFJRk1UX0kyUyB8IFNORF9TT0NfREFJRk1UX05CX05GCisJCQkJfCBTTkRfU09DX0RBSUZNVF9DQk1fQ0ZNLAorCQkucGFyYW1zID0gJmRhaV9wYXJhbXMsCisJfQorCTwgLi4uIG1vcmUgREFJIGxpbmtzIGhlcmUgLi4uID4KKworVGhlc2UgcGFyYW1ldGVycyBhcmUgdXNlZCB0byBjb25maWd1cmUgdGhlIERBSSBod19wYXJhbXMoKSB3aGVuIERBUE0gZGV0ZWN0cyBhCit2YWxpZCBwYXRoIGFuZCB0aGVuIGNhbGxzIHRoZSBQQ00gb3BlcmF0aW9ucyB0byBzdGFydCB0aGUgbGluay4gREFQTSB3aWxsIGFsc28KK2NhbGwgdGhlIGFwcHJvcHJpYXRlIFBDTSBvcGVyYXRpb25zIHRvIGRpc2FibGUgdGhlIERBSSB3aGVuIHRoZSBwYXRoIGlzIG5vCitsb25nZXIgdmFsaWQuCisKKworSG9zdGxlc3MgRkUKKy0tLS0tLS0tLS0tCisKK1RoZSBEQUkgbGluayhzKSBhcmUgZW5hYmxlZCBieSBhIEZFIHRoYXQgZG9lcyBub3QgcmVhZCBvciB3cml0ZSBhbnkgUENNIGRhdGEuCitUaGlzIG1lYW5zIGNyZWF0aW5nIGEgbmV3IEZFIHRoYXQgaXMgY29ubmVjdGVkIHdpdGggYSB2aXJ0dWFsIHBhdGggdG8gYm90aAorREFJIGxpbmtzLiBUaGUgREFJIGxpbmtzIHdpbGwgYmUgc3RhcnRlZCB3aGVuIHRoZSBGRSBQQ00gaXMgc3RhcnRlZCBhbmQgc3RvcHBlZAord2hlbiB0aGUgRkUgUENNIGlzIHN0b3BwZWQuIE5vdGUgdGhhdCB0aGUgRkUgUENNIGNhbm5vdCByZWFkIG9yIHdyaXRlIGRhdGEgaW4KK3RoaXMgY29uZmlndXJhdGlvbi4KKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2Evc29jL2Nsb2NraW5nLnR4dCBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zb2MvY2xvY2tpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMzAwMTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2Evc29jL2Nsb2NraW5nLnR4dApAQCAtMCwwICsxLDUxIEBACitBdWRpbyBDbG9ja2luZworPT09PT09PT09PT09PT0KKworVGhpcyB0ZXh0IGRlc2NyaWJlcyB0aGUgYXVkaW8gY2xvY2tpbmcgdGVybXMgaW4gQVNvQyBhbmQgZGlnaXRhbCBhdWRpbyBpbgorZ2VuZXJhbC4gTm90ZTogQXVkaW8gY2xvY2tpbmcgY2FuIGJlIGNvbXBsZXghCisKKworTWFzdGVyIENsb2NrCistLS0tLS0tLS0tLS0KKworRXZlcnkgYXVkaW8gc3Vic3lzdGVtIGlzIGRyaXZlbiBieSBhIG1hc3RlciBjbG9jayAoc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIE1DTEsKK29yIFNZU0NMSykuIFRoaXMgYXVkaW8gbWFzdGVyIGNsb2NrIGNhbiBiZSBkZXJpdmVkIGZyb20gYSBudW1iZXIgb2Ygc291cmNlcworKGUuZy4gY3J5c3RhbCwgUExMLCBDUFUgY2xvY2spIGFuZCBpcyByZXNwb25zaWJsZSBmb3IgcHJvZHVjaW5nIHRoZSBjb3JyZWN0CithdWRpbyBwbGF5YmFjayBhbmQgY2FwdHVyZSBzYW1wbGUgcmF0ZXMuCisKK1NvbWUgbWFzdGVyIGNsb2NrcyAoZS5nLiBQTExzIGFuZCBDUFUgYmFzZWQgY2xvY2tzKSBhcmUgY29uZmlndXJhYmxlIGluIHRoYXQKK3RoZWlyIHNwZWVkIGNhbiBiZSBhbHRlcmVkIGJ5IHNvZnR3YXJlIChkZXBlbmRpbmcgb24gdGhlIHN5c3RlbSB1c2UgYW5kIHRvIHNhdmUKK3Bvd2VyKS4gT3RoZXIgbWFzdGVyIGNsb2NrcyBhcmUgZml4ZWQgYXQgYSBzZXQgZnJlcXVlbmN5IChpLmUuIGNyeXN0YWxzKS4KKworCitEQUkgQ2xvY2tzCistLS0tLS0tLS0tCitUaGUgRGlnaXRhbCBBdWRpbyBJbnRlcmZhY2UgaXMgdXN1YWxseSBkcml2ZW4gYnkgYSBCaXQgQ2xvY2sgKG9mdGVuIHJlZmVycmVkIHRvCithcyBCQ0xLKS4gVGhpcyBjbG9jayBpcyB1c2VkIHRvIGRyaXZlIHRoZSBkaWdpdGFsIGF1ZGlvIGRhdGEgYWNyb3NzIHRoZSBsaW5rCitiZXR3ZWVuIHRoZSBjb2RlYyBhbmQgQ1BVLgorCitUaGUgREFJIGFsc28gaGFzIGEgZnJhbWUgY2xvY2sgdG8gc2lnbmFsIHRoZSBzdGFydCBvZiBlYWNoIGF1ZGlvIGZyYW1lLiBUaGlzCitjbG9jayBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgTFJDIChsZWZ0IHJpZ2h0IGNsb2NrKSBvciBGUkFNRS4gVGhpcyBjbG9jaworcnVucyBhdCBleGFjdGx5IHRoZSBzYW1wbGUgcmF0ZSAoTFJDID0gUmF0ZSkuCisKK0JpdCBDbG9jayBjYW4gYmUgZ2VuZXJhdGVkIGFzIGZvbGxvd3M6LQorCitCQ0xLID0gTUNMSyAvIHgKKworIG9yCisKK0JDTEsgPSBMUkMgKiB4CisKKyBvcgorCitCQ0xLID0gTFJDICogQ2hhbm5lbHMgKiBXb3JkIFNpemUKKworVGhpcyByZWxhdGlvbnNoaXAgZGVwZW5kcyBvbiB0aGUgY29kZWMgb3IgU29DIENQVSBpbiBwYXJ0aWN1bGFyLiBJbiBnZW5lcmFsCitpdCBpcyBiZXN0IHRvIGNvbmZpZ3VyZSBCQ0xLIHRvIHRoZSBsb3dlc3QgcG9zc2libGUgc3BlZWQgKGRlcGVuZGluZyBvbiB5b3VyCityYXRlLCBudW1iZXIgb2YgY2hhbm5lbHMgYW5kIHdvcmQgc2l6ZSkgdG8gc2F2ZSBvbiBwb3dlci4KKworSXQgaXMgYWxzbyBkZXNpcmFibGUgdG8gdXNlIHRoZSBjb2RlYyAoaWYgcG9zc2libGUpIHRvIGRyaXZlIChvciBtYXN0ZXIpIHRoZQorYXVkaW8gY2xvY2tzIGFzIGl0IHVzdWFsbHkgZ2l2ZXMgbW9yZSBhY2N1cmF0ZSBzYW1wbGUgcmF0ZXMgdGhhbiB0aGUgQ1BVLgorCisKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3NvYy9jb2RlYy50eHQgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2Evc29jL2NvZGVjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjVmOWM5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3NvYy9jb2RlYy50eHQKQEAgLTAsMCArMSwxNzkgQEAKK0FTb0MgQ29kZWMgQ2xhc3MgRHJpdmVyCis9PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgY29kZWMgY2xhc3MgZHJpdmVyIGlzIGdlbmVyaWMgYW5kIGhhcmR3YXJlIGluZGVwZW5kZW50IGNvZGUgdGhhdCBjb25maWd1cmVzCit0aGUgY29kZWMsIEZNLCBNT0RFTSwgQlQgb3IgZXh0ZXJuYWwgRFNQIHRvIHByb3ZpZGUgYXVkaW8gY2FwdHVyZSBhbmQgcGxheWJhY2suCitJdCBzaG91bGQgY29udGFpbiBubyBjb2RlIHRoYXQgaXMgc3BlY2lmaWMgdG8gdGhlIHRhcmdldCBwbGF0Zm9ybSBvciBtYWNoaW5lLgorQWxsIHBsYXRmb3JtIGFuZCBtYWNoaW5lIHNwZWNpZmljIGNvZGUgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBwbGF0Zm9ybSBhbmQKK21hY2hpbmUgZHJpdmVycyByZXNwZWN0aXZlbHkuCisKK0VhY2ggY29kZWMgY2xhc3MgZHJpdmVyICptdXN0KiBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6LQorCisgMSkgQ29kZWMgREFJIGFuZCBQQ00gY29uZmlndXJhdGlvbgorIDIpIENvZGVjIGNvbnRyb2wgSU8gLSB1c2luZyBSZWdNYXAgQVBJCisgMykgTWl4ZXJzIGFuZCBhdWRpbyBjb250cm9scworIDQpIENvZGVjIGF1ZGlvIG9wZXJhdGlvbnMKKyA1KSBEQVBNIGRlc2NyaXB0aW9uLgorIDYpIERBUE0gZXZlbnQgaGFuZGxlci4KKworT3B0aW9uYWxseSwgY29kZWMgZHJpdmVycyBjYW4gYWxzbyBwcm92aWRlOi0KKworIDcpIERBQyBEaWdpdGFsIG11dGUgY29udHJvbC4KKworSXRzIHByb2JhYmx5IGJlc3QgdG8gdXNlIHRoaXMgZ3VpZGUgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgZXhpc3RpbmcgY29kZWMKK2RyaXZlciBjb2RlIGluIHNvdW5kL3NvYy9jb2RlY3MvCisKK0FTb0MgQ29kZWMgZHJpdmVyIGJyZWFrZG93bgorPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzEgLSBDb2RlYyBEQUkgYW5kIFBDTSBjb25maWd1cmF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRWFjaCBjb2RlYyBkcml2ZXIgbXVzdCBoYXZlIGEgc3RydWN0IHNuZF9zb2NfZGFpX2RyaXZlciB0byBkZWZpbmUgaXRzIERBSSBhbmQKK1BDTSBjYXBhYmlsaXRpZXMgYW5kIG9wZXJhdGlvbnMuIFRoaXMgc3RydWN0IGlzIGV4cG9ydGVkIHNvIHRoYXQgaXQgY2FuIGJlCityZWdpc3RlcmVkIHdpdGggdGhlIGNvcmUgYnkgeW91ciBtYWNoaW5lIGRyaXZlci4KKworZS5nLgorCitzdGF0aWMgc3RydWN0IHNuZF9zb2NfZGFpX29wcyB3bTg3MzFfZGFpX29wcyA9IHsKKwkucHJlcGFyZQk9IHdtODczMV9wY21fcHJlcGFyZSwKKwkuaHdfcGFyYW1zCT0gd204NzMxX2h3X3BhcmFtcywKKwkuc2h1dGRvd24JPSB3bTg3MzFfc2h1dGRvd24sCisJLmRpZ2l0YWxfbXV0ZQk9IHdtODczMV9tdXRlLAorCS5zZXRfc3lzY2xrCT0gd204NzMxX3NldF9kYWlfc3lzY2xrLAorCS5zZXRfZm10CT0gd204NzMxX3NldF9kYWlfZm10LAorfTsKKworc3RydWN0IHNuZF9zb2NfZGFpX2RyaXZlciB3bTg3MzFfZGFpID0geworCS5uYW1lID0gIndtODczMS1oaWZpIiwKKwkucGxheWJhY2sgPSB7CisJCS5zdHJlYW1fbmFtZSA9ICJQbGF5YmFjayIsCisJCS5jaGFubmVsc19taW4gPSAxLAorCQkuY2hhbm5lbHNfbWF4ID0gMiwKKwkJLnJhdGVzID0gV004NzMxX1JBVEVTLAorCQkuZm9ybWF0cyA9IFdNODczMV9GT1JNQVRTLH0sCisJLmNhcHR1cmUgPSB7CisJCS5zdHJlYW1fbmFtZSA9ICJDYXB0dXJlIiwKKwkJLmNoYW5uZWxzX21pbiA9IDEsCisJCS5jaGFubmVsc19tYXggPSAyLAorCQkucmF0ZXMgPSBXTTg3MzFfUkFURVMsCisJCS5mb3JtYXRzID0gV004NzMxX0ZPUk1BVFMsfSwKKwkub3BzID0gJndtODczMV9kYWlfb3BzLAorCS5zeW1tZXRyaWNfcmF0ZXMgPSAxLAorfTsKKworCisyIC0gQ29kZWMgY29udHJvbCBJTworLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBjb2RlYyBjYW4gdXN1YWxseSBiZSBjb250cm9sbGVkIHZpYSBhbiBJMkMgb3IgU1BJIHN0eWxlIGludGVyZmFjZQorKEFDOTcgY29tYmluZXMgY29udHJvbCB3aXRoIGRhdGEgaW4gdGhlIERBSSkuIFRoZSBjb2RlYyBkcml2ZXIgc2hvdWxkIHVzZSB0aGUKK1JlZ21hcCBBUEkgZm9yIGFsbCBjb2RlYyBJTy4gUGxlYXNlIHNlZSBpbmNsdWRlL2xpbnV4L3JlZ21hcC5oIGFuZCBleGlzdGluZworY29kZWMgZHJpdmVycyBmb3IgZXhhbXBsZSByZWdtYXAgdXNhZ2UuCisKKworMyAtIE1peGVycyBhbmQgYXVkaW8gY29udHJvbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBbGwgdGhlIGNvZGVjIG1peGVycyBhbmQgYXVkaW8gY29udHJvbHMgY2FuIGJlIGRlZmluZWQgdXNpbmcgdGhlIGNvbnZlbmllbmNlCittYWNyb3MgZGVmaW5lZCBpbiBzb2MuaC4KKworICAgICNkZWZpbmUgU09DX1NJTkdMRSh4bmFtZSwgcmVnLCBzaGlmdCwgbWFzaywgaW52ZXJ0KQorCitEZWZpbmVzIGEgc2luZ2xlIGNvbnRyb2wgYXMgZm9sbG93czotCisKKyAgeG5hbWUgPSBDb250cm9sIG5hbWUgZS5nLiAiUGxheWJhY2sgVm9sdW1lIgorICByZWcgPSBjb2RlYyByZWdpc3RlcgorICBzaGlmdCA9IGNvbnRyb2wgYml0KHMpIG9mZnNldCBpbiByZWdpc3RlcgorICBtYXNrID0gY29udHJvbCBiaXQgc2l6ZShzKSBlLmcuIG1hc2sgb2YgNyA9IDMgYml0cworICBpbnZlcnQgPSB0aGUgY29udHJvbCBpcyBpbnZlcnRlZAorCitPdGhlciBtYWNyb3MgaW5jbHVkZTotCisKKyAgICAjZGVmaW5lIFNPQ19ET1VCTEUoeG5hbWUsIHJlZywgc2hpZnRfbGVmdCwgc2hpZnRfcmlnaHQsIG1hc2ssIGludmVydCkKKworQSBzdGVyZW8gY29udHJvbAorCisgICAgI2RlZmluZSBTT0NfRE9VQkxFX1IoeG5hbWUsIHJlZ19sZWZ0LCByZWdfcmlnaHQsIHNoaWZ0LCBtYXNrLCBpbnZlcnQpCisKK0Egc3RlcmVvIGNvbnRyb2wgc3Bhbm5pbmcgMiByZWdpc3RlcnMKKworICAgICNkZWZpbmUgU09DX0VOVU1fU0lOR0xFKHhyZWcsIHhzaGlmdCwgeG1hc2ssIHh0ZXh0cykKKworRGVmaW5lcyBhbiBzaW5nbGUgZW51bWVyYXRlZCBjb250cm9sIGFzIGZvbGxvd3M6LQorCisgICB4cmVnID0gcmVnaXN0ZXIKKyAgIHhzaGlmdCA9IGNvbnRyb2wgYml0KHMpIG9mZnNldCBpbiByZWdpc3RlcgorICAgeG1hc2sgPSBjb250cm9sIGJpdChzKSBzaXplCisgICB4dGV4dHMgPSBwb2ludGVyIHRvIGFycmF5IG9mIHN0cmluZ3MgdGhhdCBkZXNjcmliZSBlYWNoIHNldHRpbmcKKworICAgI2RlZmluZSBTT0NfRU5VTV9ET1VCTEUoeHJlZywgeHNoaWZ0X2wsIHhzaGlmdF9yLCB4bWFzaywgeHRleHRzKQorCitEZWZpbmVzIGEgc3RlcmVvIGVudW1lcmF0ZWQgY29udHJvbAorCisKKzQgLSBDb2RlYyBBdWRpbyBPcGVyYXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIGNvZGVjIGRyaXZlciBhbHNvIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgQUxTQSBQQ00gb3BlcmF0aW9uczotCisKKy8qIFNvQyBhdWRpbyBvcHMgKi8KK3N0cnVjdCBzbmRfc29jX29wcyB7CisJaW50ICgqc3RhcnR1cCkoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICopOworCXZvaWQgKCpzaHV0ZG93bikoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICopOworCWludCAoKmh3X3BhcmFtcykoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICosIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyAqKTsKKwlpbnQgKCpod19mcmVlKShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKik7CisJaW50ICgqcHJlcGFyZSkoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICopOworfTsKKworUGxlYXNlIHJlZmVyIHRvIHRoZSBBTFNBIGRyaXZlciBQQ00gZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KK2h0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZy9+aXdhaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLworCisKKzUgLSBEQVBNIGRlc2NyaXB0aW9uLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgRHluYW1pYyBBdWRpbyBQb3dlciBNYW5hZ2VtZW50IGRlc2NyaXB0aW9uIGRlc2NyaWJlcyB0aGUgY29kZWMgcG93ZXIKK2NvbXBvbmVudHMgYW5kIHRoZWlyIHJlbGF0aW9uc2hpcHMgYW5kIHJlZ2lzdGVycyB0byB0aGUgQVNvQyBjb3JlLgorUGxlYXNlIHJlYWQgZGFwbS50eHQgZm9yIGRldGFpbHMgb2YgYnVpbGRpbmcgdGhlIGRlc2NyaXB0aW9uLgorCitQbGVhc2UgYWxzbyBzZWUgdGhlIGV4YW1wbGVzIGluIG90aGVyIGNvZGVjIGRyaXZlcnMuCisKKworNiAtIERBUE0gZXZlbnQgaGFuZGxlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhpcyBmdW5jdGlvbiBpcyBhIGNhbGxiYWNrIHRoYXQgaGFuZGxlcyBjb2RlYyBkb21haW4gUE0gY2FsbHMgYW5kIHN5c3RlbQorZG9tYWluIFBNIGNhbGxzIChlLmcuIHN1c3BlbmQgYW5kIHJlc3VtZSkuIEl0IGlzIHVzZWQgdG8gcHV0IHRoZSBjb2RlYwordG8gc2xlZXAgd2hlbiBub3QgaW4gdXNlLgorCitQb3dlciBzdGF0ZXM6LQorCisJU05EUlZfQ1RMX1BPV0VSX0QwOiAvKiBmdWxsIE9uICovCisJLyogdnJlZi9taWQsIGNsayBhbmQgb3NjIG9uLCBhY3RpdmUgKi8KKworCVNORFJWX0NUTF9QT1dFUl9EMTogLyogcGFydGlhbCBPbiAqLworCVNORFJWX0NUTF9QT1dFUl9EMjogLyogcGFydGlhbCBPbiAqLworCisJU05EUlZfQ1RMX1BPV0VSX0QzaG90OiAvKiBPZmYsIHdpdGggcG93ZXIgKi8KKwkvKiBldmVyeXRoaW5nIG9mZiBleGNlcHQgdnJlZi92bWlkLCBpbmFjdGl2ZSAqLworCisJU05EUlZfQ1RMX1BPV0VSX0QzY29sZDogLyogRXZlcnl0aGluZyBPZmYsIHdpdGhvdXQgcG93ZXIgKi8KKworCis3IC0gQ29kZWMgREFDIGRpZ2l0YWwgbXV0ZSBjb250cm9sCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitNb3N0IGNvZGVjcyBoYXZlIGEgZGlnaXRhbCBtdXRlIGJlZm9yZSB0aGUgREFDcyB0aGF0IGNhbiBiZSB1c2VkIHRvCittaW5pbWlzZSBhbnkgc3lzdGVtIG5vaXNlLiAgVGhlIG11dGUgc3RvcHMgYW55IGRpZ2l0YWwgZGF0YSBmcm9tCitlbnRlcmluZyB0aGUgREFDLgorCitBIGNhbGxiYWNrIGNhbiBiZSBjcmVhdGVkIHRoYXQgaXMgY2FsbGVkIGJ5IHRoZSBjb3JlIGZvciBlYWNoIGNvZGVjIERBSQord2hlbiB0aGUgbXV0ZSBpcyBhcHBsaWVkIG9yIGZyZWVkLgorCitpLmUuCisKK3N0YXRpYyBpbnQgd204OTc0X211dGUoc3RydWN0IHNuZF9zb2NfZGFpICpkYWksIGludCBtdXRlKQoreworCXN0cnVjdCBzbmRfc29jX2NvZGVjICpjb2RlYyA9IGRhaS0+Y29kZWM7CisJdTE2IG11dGVfcmVnID0gc25kX3NvY19yZWFkKGNvZGVjLCBXTTg5NzRfREFDKSAmIDB4ZmZiZjsKKworCWlmIChtdXRlKQorCQlzbmRfc29jX3dyaXRlKGNvZGVjLCBXTTg5NzRfREFDLCBtdXRlX3JlZyB8IDB4NDApOworCWVsc2UKKwkJc25kX3NvY193cml0ZShjb2RlYywgV004OTc0X0RBQywgbXV0ZV9yZWcpOworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3NvYy9kYXBtLnR4dCBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zb2MvZGFwbS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZhYWI0OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zb2MvZGFwbS50eHQKQEAgLTAsMCArMSwzMDUgQEAKK0R5bmFtaWMgQXVkaW8gUG93ZXIgTWFuYWdlbWVudCBmb3IgUG9ydGFibGUgRGV2aWNlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzEuIERlc2NyaXB0aW9uCis9PT09PT09PT09PT09PQorCitEeW5hbWljIEF1ZGlvIFBvd2VyIE1hbmFnZW1lbnQgKERBUE0pIGlzIGRlc2lnbmVkIHRvIGFsbG93IHBvcnRhYmxlCitMaW51eCBkZXZpY2VzIHRvIHVzZSB0aGUgbWluaW11bSBhbW91bnQgb2YgcG93ZXIgd2l0aGluIHRoZSBhdWRpbworc3Vic3lzdGVtIGF0IGFsbCB0aW1lcy4gSXQgaXMgaW5kZXBlbmRlbnQgb2Ygb3RoZXIga2VybmVsIFBNIGFuZCBhcworc3VjaCwgY2FuIGVhc2lseSBjby1leGlzdCB3aXRoIHRoZSBvdGhlciBQTSBzeXN0ZW1zLgorCitEQVBNIGlzIGFsc28gY29tcGxldGVseSB0cmFuc3BhcmVudCB0byBhbGwgdXNlciBzcGFjZSBhcHBsaWNhdGlvbnMgYXMKK2FsbCBwb3dlciBzd2l0Y2hpbmcgaXMgZG9uZSB3aXRoaW4gdGhlIEFTb0MgY29yZS4gTm8gY29kZSBjaGFuZ2VzIG9yCityZWNvbXBpbGluZyBhcmUgcmVxdWlyZWQgZm9yIHVzZXIgc3BhY2UgYXBwbGljYXRpb25zLiBEQVBNIG1ha2VzIHBvd2VyCitzd2l0Y2hpbmcgZGVjaXNpb25zIGJhc2VkIHVwb24gYW55IGF1ZGlvIHN0cmVhbSAoY2FwdHVyZS9wbGF5YmFjaykKK2FjdGl2aXR5IGFuZCBhdWRpbyBtaXhlciBzZXR0aW5ncyB3aXRoaW4gdGhlIGRldmljZS4KKworREFQTSBzcGFucyB0aGUgd2hvbGUgbWFjaGluZS4gSXQgY292ZXJzIHBvd2VyIGNvbnRyb2wgd2l0aGluIHRoZSBlbnRpcmUKK2F1ZGlvIHN1YnN5c3RlbSwgdGhpcyBpbmNsdWRlcyBpbnRlcm5hbCBjb2RlYyBwb3dlciBibG9ja3MgYW5kIG1hY2hpbmUKK2xldmVsIHBvd2VyIHN5c3RlbXMuCisKK1RoZXJlIGFyZSA0IHBvd2VyIGRvbWFpbnMgd2l0aGluIERBUE0KKworICAgMS4gQ29kZWMgYmlhcyBkb21haW4gLSBWUkVGLCBWTUlEIChjb3JlIGNvZGVjIGFuZCBhdWRpbyBwb3dlcikKKyAgICAgIFVzdWFsbHkgY29udHJvbGxlZCBhdCBjb2RlYyBwcm9iZS9yZW1vdmUgYW5kIHN1c3BlbmQvcmVzdW1lLCBhbHRob3VnaAorICAgICAgY2FuIGJlIHNldCBhdCBzdHJlYW0gdGltZSBpZiBwb3dlciBpcyBub3QgbmVlZGVkIGZvciBzaWRldG9uZSwgZXRjLgorCisgICAyLiBQbGF0Zm9ybS9NYWNoaW5lIGRvbWFpbiAtIHBoeXNpY2FsbHkgY29ubmVjdGVkIGlucHV0cyBhbmQgb3V0cHV0cworICAgICAgSXMgcGxhdGZvcm0vbWFjaGluZSBhbmQgdXNlciBhY3Rpb24gc3BlY2lmaWMsIGlzIGNvbmZpZ3VyZWQgYnkgdGhlCisgICAgICBtYWNoaW5lIGRyaXZlciBhbmQgcmVzcG9uZHMgdG8gYXN5bmNocm9ub3VzIGV2ZW50cyBlLmcgd2hlbiBIUAorICAgICAgYXJlIGluc2VydGVkCisKKyAgIDMuIFBhdGggZG9tYWluIC0gYXVkaW8gc3Vic3lzdGVtIHNpZ25hbCBwYXRocworICAgICAgQXV0b21hdGljYWxseSBzZXQgd2hlbiBtaXhlciBhbmQgbXV4IHNldHRpbmdzIGFyZSBjaGFuZ2VkIGJ5IHRoZSB1c2VyLgorICAgICAgZS5nLiBhbHNhbWl4ZXIsIGFtaXhlci4KKworICAgNC4gU3RyZWFtIGRvbWFpbiAtIERBQ3MgYW5kIEFEQ3MuCisgICAgICBFbmFibGVkIGFuZCBkaXNhYmxlZCB3aGVuIHN0cmVhbSBwbGF5YmFjay9jYXB0dXJlIGlzIHN0YXJ0ZWQgYW5kCisgICAgICBzdG9wcGVkIHJlc3BlY3RpdmVseS4gZS5nLiBhcGxheSwgYXJlY29yZC4KKworQWxsIERBUE0gcG93ZXIgc3dpdGNoaW5nIGRlY2lzaW9ucyBhcmUgbWFkZSBhdXRvbWF0aWNhbGx5IGJ5IGNvbnN1bHRpbmcgYW4gYXVkaW8KK3JvdXRpbmcgbWFwIG9mIHRoZSB3aG9sZSBtYWNoaW5lLiBUaGlzIG1hcCBpcyBzcGVjaWZpYyB0byBlYWNoIG1hY2hpbmUgYW5kCitjb25zaXN0cyBvZiB0aGUgaW50ZXJjb25uZWN0aW9ucyBiZXR3ZWVuIGV2ZXJ5IGF1ZGlvIGNvbXBvbmVudCAoaW5jbHVkaW5nCitpbnRlcm5hbCBjb2RlYyBjb21wb25lbnRzKS4gQWxsIGF1ZGlvIGNvbXBvbmVudHMgdGhhdCBlZmZlY3QgcG93ZXIgYXJlIGNhbGxlZAord2lkZ2V0cyBoZXJlYWZ0ZXIuCisKKworMi4gREFQTSBXaWRnZXRzCis9PT09PT09PT09PT09PT0KKworQXVkaW8gREFQTSB3aWRnZXRzIGZhbGwgaW50byBhIG51bWJlciBvZiB0eXBlczotCisKKyBvIE1peGVyICAgICAgLSBNaXhlcyBzZXZlcmFsIGFuYWxvZyBzaWduYWxzIGludG8gYSBzaW5nbGUgYW5hbG9nIHNpZ25hbC4KKyBvIE11eCAgICAgICAgLSBBbiBhbmFsb2cgc3dpdGNoIHRoYXQgb3V0cHV0cyBvbmx5IG9uZSBvZiBtYW55IGlucHV0cy4KKyBvIFBHQSAgICAgICAgLSBBIHByb2dyYW1tYWJsZSBnYWluIGFtcGxpZmllciBvciBhdHRlbnVhdGlvbiB3aWRnZXQuCisgbyBBREMgICAgICAgIC0gQW5hbG9nIHRvIERpZ2l0YWwgQ29udmVydGVyCisgbyBEQUMgICAgICAgIC0gRGlnaXRhbCB0byBBbmFsb2cgQ29udmVydGVyCisgbyBTd2l0Y2ggICAgIC0gQW4gYW5hbG9nIHN3aXRjaAorIG8gSW5wdXQgICAgICAtIEEgY29kZWMgaW5wdXQgcGluCisgbyBPdXRwdXQgICAgIC0gQSBjb2RlYyBvdXRwdXQgcGluCisgbyBIZWFkcGhvbmUgIC0gSGVhZHBob25lIChhbmQgb3B0aW9uYWwgSmFjaykKKyBvIE1pYyAgICAgICAgLSBNaWMgKGFuZCBvcHRpb25hbCBKYWNrKQorIG8gTGluZSAgICAgICAtIExpbmUgSW5wdXQvT3V0cHV0IChhbmQgb3B0aW9uYWwgSmFjaykKKyBvIFNwZWFrZXIgICAgLSBTcGVha2VyCisgbyBTdXBwbHkgICAgIC0gUG93ZXIgb3IgY2xvY2sgc3VwcGx5IHdpZGdldCB1c2VkIGJ5IG90aGVyIHdpZGdldHMuCisgbyBSZWd1bGF0b3IgIC0gRXh0ZXJuYWwgcmVndWxhdG9yIHRoYXQgc3VwcGxpZXMgcG93ZXIgdG8gYXVkaW8gY29tcG9uZW50cy4KKyBvIENsb2NrICAgICAgLQlFeHRlcm5hbCBjbG9jayB0aGF0IHN1cHBsaWVzIGNsb2NrIHRvIGF1ZGlvIGNvbXBvbmVudHMuCisgbyBBSUYgSU4gICAgIC0gQXVkaW8gSW50ZXJmYWNlIElucHV0ICh3aXRoIFRETSBzbG90IG1hc2spLgorIG8gQUlGIE9VVCAgICAtIEF1ZGlvIEludGVyZmFjZSBPdXRwdXQgKHdpdGggVERNIHNsb3QgbWFzaykuCisgbyBTaWdnZW4gICAgIC0gU2lnbmFsIEdlbmVyYXRvci4KKyBvIERBSSBJTiAgICAgLSBEaWdpdGFsIEF1ZGlvIEludGVyZmFjZSBJbnB1dC4KKyBvIERBSSBPVVQgICAgLSBEaWdpdGFsIEF1ZGlvIEludGVyZmFjZSBPdXRwdXQuCisgbyBEQUkgTGluayAgIC0gREFJIExpbmsgYmV0d2VlbiB0d28gREFJIHN0cnVjdHVyZXMgKi8KKyBvIFByZSAgICAgICAgLSBTcGVjaWFsIFBSRSB3aWRnZXQgKGV4ZWMgYmVmb3JlIGFsbCBvdGhlcnMpCisgbyBQb3N0ICAgICAgIC0gU3BlY2lhbCBQT1NUIHdpZGdldCAoZXhlYyBhZnRlciBhbGwgb3RoZXJzKQorCisoV2lkZ2V0cyBhcmUgZGVmaW5lZCBpbiBpbmNsdWRlL3NvdW5kL3NvYy1kYXBtLmgpCisKK1dpZGdldHMgY2FuIGJlIGFkZGVkIHRvIHRoZSBzb3VuZCBjYXJkIGJ5IGFueSBvZiB0aGUgY29tcG9uZW50IGRyaXZlciB0eXBlcy4KK1RoZXJlIGFyZSBjb252ZW5pZW5jZSBtYWNyb3MgZGVmaW5lZCBpbiBzb2MtZGFwbS5oIHRoYXQgY2FuIGJlIHVzZWQgdG8gcXVpY2tseQorYnVpbGQgYSBsaXN0IG9mIHdpZGdldHMgb2YgdGhlIGNvZGVjcyBhbmQgbWFjaGluZXMgREFQTSB3aWRnZXRzLgorCitNb3N0IHdpZGdldHMgaGF2ZSBhIG5hbWUsIHJlZ2lzdGVyLCBzaGlmdCBhbmQgaW52ZXJ0LiBTb21lIHdpZGdldHMgaGF2ZSBleHRyYQorcGFyYW1ldGVycyBmb3Igc3RyZWFtIG5hbWUgYW5kIGtjb250cm9scy4KKworCisyLjEgU3RyZWFtIERvbWFpbiBXaWRnZXRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1N0cmVhbSBXaWRnZXRzIHJlbGF0ZSB0byB0aGUgc3RyZWFtIHBvd2VyIGRvbWFpbiBhbmQgb25seSBjb25zaXN0IG9mIEFEQ3MKKyhhbmFsb2cgdG8gZGlnaXRhbCBjb252ZXJ0ZXJzKSwgREFDcyAoZGlnaXRhbCB0byBhbmFsb2cgY29udmVydGVycyksCitBSUYgSU4gYW5kIEFJRiBPVVQuCisKK1N0cmVhbSB3aWRnZXRzIGhhdmUgdGhlIGZvbGxvd2luZyBmb3JtYXQ6LQorCitTTkRfU09DX0RBUE1fREFDKG5hbWUsIHN0cmVhbSBuYW1lLCByZWcsIHNoaWZ0LCBpbnZlcnQpLAorU05EX1NPQ19EQVBNX0FJRl9JTihuYW1lLCBzdHJlYW0sIHNsb3QsIHJlZywgc2hpZnQsIGludmVydCkKKworTk9URTogdGhlIHN0cmVhbSBuYW1lIG11c3QgbWF0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgc3RyZWFtIG5hbWUgaW4geW91ciBjb2RlYworc25kX3NvY19jb2RlY19kYWkuCisKK2UuZy4gc3RyZWFtIHdpZGdldHMgZm9yIEhpRmkgcGxheWJhY2sgYW5kIGNhcHR1cmUKKworU05EX1NPQ19EQVBNX0RBQygiSGlGaSBEQUMiLCAiSGlGaSBQbGF5YmFjayIsIFJFRywgMywgMSksCitTTkRfU09DX0RBUE1fQURDKCJIaUZpIEFEQyIsICJIaUZpIENhcHR1cmUiLCBSRUcsIDIsIDEpLAorCitlLmcuIHN0cmVhbSB3aWRnZXRzIGZvciBBSUYKKworU05EX1NPQ19EQVBNX0FJRl9JTigiQUlGMVJYIiwgIkFJRjEgUGxheWJhY2siLCAwLCBTTkRfU09DX05PUE0sIDAsIDApLAorU05EX1NPQ19EQVBNX0FJRl9PVVQoIkFJRjFUWCIsICJBSUYxIENhcHR1cmUiLCAwLCBTTkRfU09DX05PUE0sIDAsIDApLAorCisKKzIuMiBQYXRoIERvbWFpbiBXaWRnZXRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQYXRoIGRvbWFpbiB3aWRnZXRzIGhhdmUgYSBhYmlsaXR5IHRvIGNvbnRyb2wgb3IgYWZmZWN0IHRoZSBhdWRpbyBzaWduYWwgb3IKK2F1ZGlvIHBhdGhzIHdpdGhpbiB0aGUgYXVkaW8gc3Vic3lzdGVtLiBUaGV5IGhhdmUgdGhlIGZvbGxvd2luZyBmb3JtOi0KKworU05EX1NPQ19EQVBNX1BHQShuYW1lLCByZWcsIHNoaWZ0LCBpbnZlcnQsIGNvbnRyb2xzLCBudW1fY29udHJvbHMpCisKK0FueSB3aWRnZXQga2NvbnRyb2xzIGNhbiBiZSBzZXQgdXNpbmcgdGhlIGNvbnRyb2xzIGFuZCBudW1fY29udHJvbHMgbWVtYmVycy4KKworZS5nLiBNaXhlciB3aWRnZXQgKHRoZSBrY29udHJvbHMgYXJlIGRlY2xhcmVkIGZpcnN0KQorCisvKiBPdXRwdXQgTWl4ZXIgKi8KK3N0YXRpYyBjb25zdCBzbmRfa2NvbnRyb2xfbmV3X3Qgd204NzMxX291dHB1dF9taXhlcl9jb250cm9sc1tdID0geworU09DX0RBUE1fU0lOR0xFKCJMaW5lIEJ5cGFzcyBTd2l0Y2giLCBXTTg3MzFfQVBBTkEsIDMsIDEsIDApLAorU09DX0RBUE1fU0lOR0xFKCJNaWMgU2lkZXRvbmUgU3dpdGNoIiwgV004NzMxX0FQQU5BLCA1LCAxLCAwKSwKK1NPQ19EQVBNX1NJTkdMRSgiSGlGaSBQbGF5YmFjayBTd2l0Y2giLCBXTTg3MzFfQVBBTkEsIDQsIDEsIDApLAorfTsKKworU05EX1NPQ19EQVBNX01JWEVSKCJPdXRwdXQgTWl4ZXIiLCBXTTg3MzFfUFdSLCA0LCAxLCB3bTg3MzFfb3V0cHV0X21peGVyX2NvbnRyb2xzLAorCUFSUkFZX1NJWkUod204NzMxX291dHB1dF9taXhlcl9jb250cm9scykpLAorCitJZiB5b3UgZG9udCB3YW50IHRoZSBtaXhlciBlbGVtZW50cyBwcmVmaXhlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBtaXhlciB3aWRnZXQsCit5b3UgY2FuIHVzZSBTTkRfU09DX0RBUE1fTUlYRVJfTkFNRURfQ1RMIGluc3RlYWQuIHRoZSBwYXJhbWV0ZXJzIGFyZSB0aGUgc2FtZQorYXMgZm9yIFNORF9TT0NfREFQTV9NSVhFUi4KKworCisyLjMgTWFjaGluZSBkb21haW4gV2lkZ2V0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTWFjaGluZSB3aWRnZXRzIGFyZSBkaWZmZXJlbnQgZnJvbSBjb2RlYyB3aWRnZXRzIGluIHRoYXQgdGhleSBkb24ndCBoYXZlIGEKK2NvZGVjIHJlZ2lzdGVyIGJpdCBhc3NvY2lhdGVkIHdpdGggdGhlbS4gQSBtYWNoaW5lIHdpZGdldCBpcyBhc3NpZ25lZCB0byBlYWNoCittYWNoaW5lIGF1ZGlvIGNvbXBvbmVudCAobm9uIGNvZGVjIG9yIERTUCkgdGhhdCBjYW4gYmUgaW5kZXBlbmRlbnRseQorcG93ZXJlZC4gZS5nLgorCisgbyBTcGVha2VyIEFtcAorIG8gTWljcm9waG9uZSBCaWFzCisgbyBKYWNrIGNvbm5lY3RvcnMKKworQSBtYWNoaW5lIHdpZGdldCBjYW4gaGF2ZSBhbiBvcHRpb25hbCBjYWxsIGJhY2suCisKK2UuZy4gSmFjayBjb25uZWN0b3Igd2lkZ2V0IGZvciBhbiBleHRlcm5hbCBNaWMgdGhhdCBlbmFibGVzIE1pYyBCaWFzCit3aGVuIHRoZSBNaWMgaXMgaW5zZXJ0ZWQ6LQorCitzdGF0aWMgaW50IHNwaXR6X21pY19iaWFzKHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0KiB3LCBpbnQgZXZlbnQpCit7CisJZ3Bpb19zZXRfdmFsdWUoU1BJVFpfR1BJT19NSUNfQklBUywgU05EX1NPQ19EQVBNX0VWRU5UX09OKGV2ZW50KSk7CisJcmV0dXJuIDA7Cit9CisKK1NORF9TT0NfREFQTV9NSUMoIk1pYyBKYWNrIiwgc3BpdHpfbWljX2JpYXMpLAorCisKKzIuNCBDb2RlYyAoQklBUykgRG9tYWluCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgY29kZWMgYmlhcyBwb3dlciBkb21haW4gaGFzIG5vIHdpZGdldHMgYW5kIGlzIGhhbmRsZWQgYnkgdGhlIGNvZGVjcyBEQVBNCitldmVudCBoYW5kbGVyLiBUaGlzIGhhbmRsZXIgaXMgY2FsbGVkIHdoZW4gdGhlIGNvZGVjIHBvd2Vyc3RhdGUgaXMgY2hhbmdlZCB3cnQKK3RvIGFueSBzdHJlYW0gZXZlbnQgb3IgYnkga2VybmVsIFBNIGV2ZW50cy4KKworCisyLjUgVmlydHVhbCBXaWRnZXRzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NvbWV0aW1lcyB3aWRnZXRzIGV4aXN0IGluIHRoZSBjb2RlYyBvciBtYWNoaW5lIGF1ZGlvIG1hcCB0aGF0IGRvbid0IGhhdmUgYW55Citjb3JyZXNwb25kaW5nIHNvZnQgcG93ZXIgY29udHJvbC4gSW4gdGhpcyBjYXNlIGl0IGlzIG5lY2Vzc2FyeSB0byBjcmVhdGUKK2EgdmlydHVhbCB3aWRnZXQgLSBhIHdpZGdldCB3aXRoIG5vIGNvbnRyb2wgYml0cyBlLmcuCisKK1NORF9TT0NfREFQTV9NSVhFUigiQUM5NyBNaXhlciIsIFNORF9TT0NfREFQTV9OT1BNLCAwLCAwLCBOVUxMLCAwKSwKKworVGhpcyBjYW4gYmUgdXNlZCB0byBtZXJnZSB0byBzaWduYWwgcGF0aHMgdG9nZXRoZXIgaW4gc29mdHdhcmUuCisKK0FmdGVyIGFsbCB0aGUgd2lkZ2V0cyBoYXZlIGJlZW4gZGVmaW5lZCwgdGhleSBjYW4gdGhlbiBiZSBhZGRlZCB0byB0aGUgREFQTQorc3Vic3lzdGVtIGluZGl2aWR1YWxseSB3aXRoIGEgY2FsbCB0byBzbmRfc29jX2RhcG1fbmV3X2NvbnRyb2woKS4KKworCiszLiBDb2RlYy9EU1AgV2lkZ2V0IEludGVyY29ubmVjdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitXaWRnZXRzIGFyZSBjb25uZWN0ZWQgdG8gZWFjaCBvdGhlciB3aXRoaW4gdGhlIGNvZGVjLCBwbGF0Zm9ybSBhbmQgbWFjaGluZSBieQorYXVkaW8gcGF0aHMgKGNhbGxlZCBpbnRlcmNvbm5lY3Rpb25zKS4gRWFjaCBpbnRlcmNvbm5lY3Rpb24gbXVzdCBiZSBkZWZpbmVkIGluCitvcmRlciB0byBjcmVhdGUgYSBtYXAgb2YgYWxsIGF1ZGlvIHBhdGhzIGJldHdlZW4gd2lkZ2V0cy4KKworVGhpcyBpcyBlYXNpZXN0IHdpdGggYSBkaWFncmFtIG9mIHRoZSBjb2RlYyBvciBEU1AgKGFuZCBzY2hlbWF0aWMgb2YgdGhlIG1hY2hpbmUKK2F1ZGlvIHN5c3RlbSksIGFzIGl0IHJlcXVpcmVzIGpvaW5pbmcgd2lkZ2V0cyB0b2dldGhlciB2aWEgdGhlaXIgYXVkaW8gc2lnbmFsCitwYXRocy4KKworZS5nLiwgZnJvbSB0aGUgV004NzMxIG91dHB1dCBtaXhlciAod204NzMxLmMpCisKK1RoZSBXTTg3MzEgb3V0cHV0IG1peGVyIGhhcyAzIGlucHV0cyAoc291cmNlcykKKworIDEuIExpbmUgQnlwYXNzIElucHV0CisgMi4gREFDIChIaUZpIHBsYXliYWNrKQorIDMuIE1pYyBTaWRldG9uZSBJbnB1dAorCitFYWNoIGlucHV0IGluIHRoaXMgZXhhbXBsZSBoYXMgYSBrY29udHJvbCBhc3NvY2lhdGVkIHdpdGggaXQgKGRlZmluZWQgaW4gZXhhbXBsZQorYWJvdmUpIGFuZCBpcyBjb25uZWN0ZWQgdG8gdGhlIG91dHB1dCBtaXhlciB2aWEgaXRzIGtjb250cm9sIG5hbWUuIFdlIGNhbiBub3cKK2Nvbm5lY3QgdGhlIGRlc3RpbmF0aW9uIHdpZGdldCAod3J0IGF1ZGlvIHNpZ25hbCkgd2l0aCBpdHMgc291cmNlIHdpZGdldHMuCisKKwkvKiBvdXRwdXQgbWl4ZXIgKi8KKwl7Ik91dHB1dCBNaXhlciIsICJMaW5lIEJ5cGFzcyBTd2l0Y2giLCAiTGluZSBJbnB1dCJ9LAorCXsiT3V0cHV0IE1peGVyIiwgIkhpRmkgUGxheWJhY2sgU3dpdGNoIiwgIkRBQyJ9LAorCXsiT3V0cHV0IE1peGVyIiwgIk1pYyBTaWRldG9uZSBTd2l0Y2giLCAiTWljIEJpYXMifSwKKworU28gd2UgaGF2ZSA6LQorCisJRGVzdGluYXRpb24gV2lkZ2V0ICA8PT09IFBhdGggTmFtZSA8PT09IFNvdXJjZSBXaWRnZXQKKworT3I6LQorCisJU2luaywgUGF0aCwgU291cmNlCisKK09yIDotCisKKwkiT3V0cHV0IE1peGVyIiBpcyBjb25uZWN0ZWQgdG8gdGhlICJEQUMiIHZpYSB0aGUgIkhpRmkgUGxheWJhY2sgU3dpdGNoIi4KKworV2hlbiB0aGVyZSBpcyBubyBwYXRoIG5hbWUgY29ubmVjdGluZyB3aWRnZXRzIChlLmcuIGEgZGlyZWN0IGNvbm5lY3Rpb24pIHdlCitwYXNzIE5VTEwgZm9yIHRoZSBwYXRoIG5hbWUuCisKK0ludGVyY29ubmVjdGlvbnMgYXJlIGNyZWF0ZWQgd2l0aCBhIGNhbGwgdG86LQorCitzbmRfc29jX2RhcG1fY29ubmVjdF9pbnB1dChjb2RlYywgc2luaywgcGF0aCwgc291cmNlKTsKKworRmluYWxseSwgc25kX3NvY19kYXBtX25ld193aWRnZXRzKGNvZGVjKSBtdXN0IGJlIGNhbGxlZCBhZnRlciBhbGwgd2lkZ2V0cyBhbmQKK2ludGVyY29ubmVjdGlvbnMgaGF2ZSBiZWVuIHJlZ2lzdGVyZWQgd2l0aCB0aGUgY29yZS4gVGhpcyBjYXVzZXMgdGhlIGNvcmUgdG8KK3NjYW4gdGhlIGNvZGVjIGFuZCBtYWNoaW5lIHNvIHRoYXQgdGhlIGludGVybmFsIERBUE0gc3RhdGUgbWF0Y2hlcyB0aGUKK3BoeXNpY2FsIHN0YXRlIG9mIHRoZSBtYWNoaW5lLgorCisKKzMuMSBNYWNoaW5lIFdpZGdldCBJbnRlcmNvbm5lY3Rpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTWFjaGluZSB3aWRnZXQgaW50ZXJjb25uZWN0aW9ucyBhcmUgY3JlYXRlZCBpbiB0aGUgc2FtZSB3YXkgYXMgY29kZWMgb25lcyBhbmQKK2RpcmVjdGx5IGNvbm5lY3QgdGhlIGNvZGVjIHBpbnMgdG8gbWFjaGluZSBsZXZlbCB3aWRnZXRzLgorCitlLmcuIGNvbm5lY3RzIHRoZSBzcGVha2VyIG91dCBjb2RlYyBwaW5zIHRvIHRoZSBpbnRlcm5hbCBzcGVha2VyLgorCisJLyogZXh0IHNwZWFrZXIgY29ubmVjdGVkIHRvIGNvZGVjIHBpbnMgTE9VVDIsIFJPVVQyICAqLworCXsiRXh0IFNwayIsIE5VTEwgLCAiUk9VVDIifSwKKwl7IkV4dCBTcGsiLCBOVUxMICwgIkxPVVQyIn0sCisKK1RoaXMgYWxsb3dzIHRoZSBEQVBNIHRvIHBvd2VyIG9uIGFuZCBvZmYgcGlucyB0aGF0IGFyZSBjb25uZWN0ZWQgKGFuZCBpbiB1c2UpCithbmQgcGlucyB0aGF0IGFyZSBOQyByZXNwZWN0aXZlbHkuCisKKworNCBFbmRwb2ludCBXaWRnZXRzCis9PT09PT09PT09PT09PT09PT09CitBbiBlbmRwb2ludCBpcyBhIHN0YXJ0IG9yIGVuZCBwb2ludCAod2lkZ2V0KSBvZiBhbiBhdWRpbyBzaWduYWwgd2l0aGluIHRoZQorbWFjaGluZSBhbmQgaW5jbHVkZXMgdGhlIGNvZGVjLiBlLmcuCisKKyBvIEhlYWRwaG9uZSBKYWNrCisgbyBJbnRlcm5hbCBTcGVha2VyCisgbyBJbnRlcm5hbCBNaWMKKyBvIE1pYyBKYWNrCisgbyBDb2RlYyBQaW5zCisKK0VuZHBvaW50cyBhcmUgYWRkZWQgdG8gdGhlIERBUE0gZ3JhcGggc28gdGhhdCB0aGVpciB1c2FnZSBjYW4gYmUgZGV0ZXJtaW5lZCBpbgorb3JkZXIgdG8gc2F2ZSBwb3dlci4gZS5nLiBOQyBjb2RlY3MgcGlucyB3aWxsIGJlIHN3aXRjaGVkIE9GRiwgdW5jb25uZWN0ZWQKK2phY2tzIGNhbiBhbHNvIGJlIHN3aXRjaGVkIE9GRi4KKworCis1IERBUE0gV2lkZ2V0IEV2ZW50cworPT09PT09PT09PT09PT09PT09PT0KKworU29tZSB3aWRnZXRzIGNhbiByZWdpc3RlciB0aGVpciBpbnRlcmVzdCB3aXRoIHRoZSBEQVBNIGNvcmUgaW4gUE0gZXZlbnRzLgorZS5nLiBBIFNwZWFrZXIgd2l0aCBhbiBhbXBsaWZpZXIgcmVnaXN0ZXJzIGEgd2lkZ2V0IHNvIHRoZSBhbXBsaWZpZXIgY2FuIGJlCitwb3dlcmVkIG9ubHkgd2hlbiB0aGUgc3BrIGlzIGluIHVzZS4KKworLyogdHVybiBzcGVha2VyIGFtcGxpZmllciBvbi9vZmYgZGVwZW5kaW5nIG9uIHVzZSAqLworc3RhdGljIGludCBjb3JnaV9hbXBfZXZlbnQoc3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgKncsIGludCBldmVudCkKK3sKKwlncGlvX3NldF92YWx1ZShDT1JHSV9HUElPX0FQTV9PTiwgU05EX1NPQ19EQVBNX0VWRU5UX09OKGV2ZW50KSk7CisJcmV0dXJuIDA7Cit9CisKKy8qIGNvcmdpIG1hY2hpbmUgZGFwbSB3aWRnZXRzICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgd204NzMxX2RhcG1fd2lkZ2V0cyA9CisJU05EX1NPQ19EQVBNX1NQSygiRXh0IFNwayIsIGNvcmdpX2FtcF9ldmVudCk7CisKK1BsZWFzZSBzZWUgc29jLWRhcG0uaCBmb3IgYWxsIG90aGVyIHdpZGdldHMgdGhhdCBzdXBwb3J0IGV2ZW50cy4KKworCis1LjEgRXZlbnQgdHlwZXMKKy0tLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIGV2ZW50IHR5cGVzIGFyZSBzdXBwb3J0ZWQgYnkgZXZlbnQgd2lkZ2V0cy4KKworLyogZGFwbSBldmVudCB0eXBlcyAqLworI2RlZmluZSBTTkRfU09DX0RBUE1fUFJFX1BNVQkweDEgCS8qIGJlZm9yZSB3aWRnZXQgcG93ZXIgdXAgKi8KKyNkZWZpbmUgU05EX1NPQ19EQVBNX1BPU1RfUE1VCTB4MgkJLyogYWZ0ZXIgd2lkZ2V0IHBvd2VyIHVwICovCisjZGVmaW5lIFNORF9TT0NfREFQTV9QUkVfUE1ECTB4NCAJLyogYmVmb3JlIHdpZGdldCBwb3dlciBkb3duICovCisjZGVmaW5lIFNORF9TT0NfREFQTV9QT1NUX1BNRAkweDgJCS8qIGFmdGVyIHdpZGdldCBwb3dlciBkb3duICovCisjZGVmaW5lIFNORF9TT0NfREFQTV9QUkVfUkVHCTB4MTAJLyogYmVmb3JlIGF1ZGlvIHBhdGggc2V0dXAgKi8KKyNkZWZpbmUgU05EX1NPQ19EQVBNX1BPU1RfUkVHCTB4MjAJLyogYWZ0ZXIgYXVkaW8gcGF0aCBzZXR1cCAqLwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3NvYy9qYWNrLnR4dCBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zb2MvamFjay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNmODJhNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zb2MvamFjay50eHQKQEAgLTAsMCArMSw3MSBAQAorQVNvQyBqYWNrIGRldGVjdGlvbgorPT09PT09PT09PT09PT09PT09PQorCitBTFNBIGhhcyBhIHN0YW5kYXJkIEFQSSBmb3IgcmVwcmVzZW50aW5nIHBoeXNpY2FsIGphY2tzIHRvIHVzZXIgc3BhY2UsCit0aGUga2VybmVsIHNpZGUgb2Ygd2hpY2ggY2FuIGJlIHNlZW4gaW4gaW5jbHVkZS9zb3VuZC9qYWNrLmguICBBU29DCitwcm92aWRlcyBhIHZlcnNpb24gb2YgdGhpcyBBUEkgYWRkaW5nIHR3byBhZGRpdGlvbmFsIGZlYXR1cmVzOgorCisgLSBJdCBhbGxvd3MgbW9yZSB0aGFuIG9uZSBqYWNrIGRldGVjdGlvbiBtZXRob2QgdG8gd29yayB0b2dldGhlciBvbiBvbmUKKyAgIHVzZXIgdmlzaWJsZSBqYWNrLiAgSW4gZW1iZWRkZWQgc3lzdGVtcyBpdCBpcyBjb21tb24gZm9yIG11bHRpcGxlCisgICB0byBiZSBwcmVzZW50IG9uIGEgc2luZ2xlIGphY2sgYnV0IGhhbmRsZWQgYnkgc2VwYXJhdGUgYml0cyBvZgorICAgaGFyZHdhcmUuCisKKyAtIEludGVncmF0aW9uIHdpdGggREFQTSwgYWxsb3dpbmcgREFQTSBlbmRwb2ludHMgdG8gYmUgdXBkYXRlZAorICAgYXV0b21hdGljYWxseSBiYXNlZCBvbiB0aGUgZGV0ZWN0ZWQgamFjayBzdGF0dXMgKGVnLCB0dXJuaW5nIG9mZiB0aGUKKyAgIGhlYWRwaG9uZSBvdXRwdXRzIGlmIG5vIGhlYWRwaG9uZXMgYXJlIHByZXNlbnQpLgorCitUaGlzIGlzIGRvbmUgYnkgc3BsaXR0aW5nIHRoZSBqYWNrcyB1cCBpbnRvIHRocmVlIHRoaW5ncyB3b3JraW5nCit0b2dldGhlcjogdGhlIGphY2sgaXRzZWxmIHJlcHJlc2VudGVkIGJ5IGEgc3RydWN0IHNuZF9zb2NfamFjaywgc2V0cyBvZgorc25kX3NvY19qYWNrX3BpbnMgcmVwcmVzZW50aW5nIERBUE0gZW5kcG9pbnRzIHRvIHVwZGF0ZSBhbmQgYmxvY2tzIG9mCitjb2RlIHByb3ZpZGluZyBqYWNrIHJlcG9ydGluZyBtZWNoYW5pc21zLgorCitGb3IgZXhhbXBsZSwgYSBzeXN0ZW0gbWF5IGhhdmUgYSBzdGVyZW8gaGVhZHNldCBqYWNrIHdpdGggdHdvIHJlcG9ydGluZworbWVjaGFuaXNtcywgb25lIGZvciB0aGUgaGVhZHBob25lIGFuZCBvbmUgZm9yIHRoZSBtaWNyb3Bob25lLiAgU29tZQorc3lzdGVtcyB3b24ndCBiZSBhYmxlIHRvIHVzZSB0aGVpciBzcGVha2VyIG91dHB1dCB3aGlsZSBhIGhlYWRwaG9uZSBpcworY29ubmVjdGVkIGFuZCBzbyB3aWxsIHdhbnQgdG8gbWFrZSBzdXJlIHRvIHVwZGF0ZSBib3RoIHNwZWFrZXIgYW5kCitoZWFkcGhvbmUgd2hlbiB0aGUgaGVhZHBob25lIGphY2sgc3RhdHVzIGNoYW5nZXMuCisKK1RoZSBqYWNrIC0gc3RydWN0IHNuZF9zb2NfamFjaworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgcmVwcmVzZW50cyBhIHBoeXNpY2FsIGphY2sgb24gdGhlIHN5c3RlbSBhbmQgaXMgd2hhdCBpcyB2aXNpYmxlIHRvCit1c2VyIHNwYWNlLiAgVGhlIGphY2sgaXRzZWxmIGlzIGNvbXBsZXRlbHkgcGFzc2l2ZSwgaXQgaXMgc2V0IHVwIGJ5IHRoZQorbWFjaGluZSBkcml2ZXIgYW5kIHVwZGF0ZWQgYnkgamFjayBkZXRlY3Rpb24gbWV0aG9kcy4KKworSmFja3MgYXJlIGNyZWF0ZWQgYnkgdGhlIG1hY2hpbmUgZHJpdmVyIGNhbGxpbmcgc25kX3NvY19qYWNrX25ldygpLgorCitzbmRfc29jX2phY2tfcGluCis9PT09PT09PT09PT09PT09CisKK1RoZXNlIHJlcHJlc2VudCBhIERBUE0gcGluIHRvIHVwZGF0ZSBkZXBlbmRpbmcgb24gc29tZSBvZiB0aGUgc3RhdHVzCitiaXRzIHN1cHBvcnRlZCBieSB0aGUgamFjay4gIEVhY2ggc25kX3NvY19qYWNrIGhhcyB6ZXJvIG9yIG1vcmUgb2YgdGhlc2UKK3doaWNoIGFyZSB1cGRhdGVkIGF1dG9tYXRpY2FsbHkuICBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZSBtYWNoaW5lIGRyaXZlcgorYW5kIGFzc29jaWF0ZWQgd2l0aCB0aGUgamFjayB1c2luZyBzbmRfc29jX2phY2tfYWRkX3BpbnMoKS4gIFRoZSBzdGF0dXMKK29mIHRoZSBlbmRwb2ludCBtYXkgY29uZmlndXJlZCB0byBiZSB0aGUgb3Bwb3NpdGUgb2YgdGhlIGphY2sgc3RhdHVzIGlmCityZXF1aXJlZCAoZWcsIGVuYWJsaW5nIGEgYnVpbHQgaW4gbWljcm9waG9uZSBpZiBhIG1pY3JvcGhvbmUgaXMgbm90Citjb25uZWN0ZWQgdmlhIGEgamFjaykuCisKK0phY2sgZGV0ZWN0aW9uIG1ldGhvZHMKKz09PT09PT09PT09PT09PT09PT09PT0KKworQWN0dWFsIGphY2sgZGV0ZWN0aW9uIGlzIGRvbmUgYnkgY29kZSB3aGljaCBpcyBhYmxlIHRvIG1vbml0b3Igc29tZQoraW5wdXQgdG8gdGhlIHN5c3RlbSBhbmQgdXBkYXRlIGEgamFjayBieSBjYWxsaW5nIHNuZF9zb2NfamFja19yZXBvcnQoKSwKK3NwZWNpZnlpbmcgYSBzdWJzZXQgb2YgYml0cyB0byB1cGRhdGUuICBUaGUgamFjayBkZXRlY3Rpb24gY29kZSBzaG91bGQKK2JlIHNldCB1cCBieSB0aGUgbWFjaGluZSBkcml2ZXIsIHRha2luZyBjb25maWd1cmF0aW9uIGZvciB0aGUgamFjayB0bwordXBkYXRlIGFuZCB0aGUgc2V0IG9mIHRoaW5ncyB0byByZXBvcnQgd2hlbiB0aGUgamFjayBpcyBjb25uZWN0ZWQuCisKK09mdGVuIHRoaXMgaXMgZG9uZSBiYXNlZCBvbiB0aGUgc3RhdHVzIG9mIGEgR1BJTyAtIGEgaGFuZGxlciBmb3IgdGhpcyBpcworcHJvdmlkZWQgYnkgdGhlIHNuZF9zb2NfamFja19hZGRfZ3BpbygpIGZ1bmN0aW9uLiAgT3RoZXIgbWV0aG9kcyBhcmUKK2Fsc28gYXZhaWxhYmxlLCBmb3IgZXhhbXBsZSBpbnRlZ3JhdGVkIGludG8gQ09ERUNzLiAgT25lIGV4YW1wbGUgb2YKK0NPREVDIGludGVncmF0ZWQgamFjayBkZXRlY3Rpb24gY2FuIGJlIHNlZSBpbiB0aGUgV004MzUwIGRyaXZlci4KKworRWFjaCBqYWNrIG1heSBoYXZlIG11bHRpcGxlIHJlcG9ydGluZyBtZWNoYW5pc21zLCB0aG91Z2ggaXQgd2lsbCBuZWVkIGF0CitsZWFzdCBvbmUgdG8gYmUgdXNlZnVsLgorCitNYWNoaW5lIGRyaXZlcnMKKz09PT09PT09PT09PT09PQorCitUaGVzZSBhcmUgYWxsIGhvb2tlZCB0b2dldGhlciBieSB0aGUgbWFjaGluZSBkcml2ZXIgZGVwZW5kaW5nIG9uIHRoZQorc3lzdGVtIGhhcmR3YXJlLiAgVGhlIG1hY2hpbmUgZHJpdmVyIHdpbGwgc2V0IHVwIHRoZSBzbmRfc29jX2phY2sgYW5kCit0aGUgbGlzdCBvZiBwaW5zIHRvIHVwZGF0ZSB0aGVuIHNldCB1cCBvbmUgb3IgbW9yZSBqYWNrIGRldGVjdGlvbgorbWVjaGFuaXNtcyB0byB1cGRhdGUgdGhhdCBqYWNrIGJhc2VkIG9uIHRoZWlyIGN1cnJlbnQgc3RhdHVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3NvYy9tYWNoaW5lLnR4dCBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zb2MvbWFjaGluZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQwNTZkYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zb2MvbWFjaGluZS50eHQKQEAgLTAsMCArMSw5MyBAQAorQVNvQyBNYWNoaW5lIERyaXZlcgorPT09PT09PT09PT09PT09PT09PQorCitUaGUgQVNvQyBtYWNoaW5lIChvciBib2FyZCkgZHJpdmVyIGlzIHRoZSBjb2RlIHRoYXQgZ2x1ZXMgdG9nZXRoZXIgYWxsIHRoZQorY29tcG9uZW50IGRyaXZlcnMgKGUuZy4gY29kZWNzLCBwbGF0Zm9ybXMgYW5kIERBSXMpLiBJdCBhbHNvIGRlc2NyaWJlcyB0aGUKK3JlbGF0aW9uc2hpcHMgYmV0d2VlbiBlYWNoIGNvbXBvbm5lbnQgd2hpY2ggaW5jbHVkZSBhdWRpbyBwYXRocywgR1BJT3MsCitpbnRlcnJ1cHRzLCBjbG9ja2luZywgamFja3MgYW5kIHZvbHRhZ2UgcmVndWxhdG9ycy4KKworVGhlIG1hY2hpbmUgZHJpdmVyIGNhbiBjb250YWluIGNvZGVjIGFuZCBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiBJdCByZWdpc3RlcnMKK3RoZSBhdWRpbyBzdWJzeXN0ZW0gd2l0aCB0aGUga2VybmVsIGFzIGEgcGxhdGZvcm0gZGV2aWNlIGFuZCBpcyByZXByZXNlbnRlZCBieQordGhlIGZvbGxvd2luZyBzdHJ1Y3Q6LQorCisvKiBTb0MgbWFjaGluZSAqLworc3RydWN0IHNuZF9zb2NfY2FyZCB7CisJY2hhciAqbmFtZTsKKworCS4uLgorCisJaW50ICgqcHJvYmUpKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpOworCWludCAoKnJlbW92ZSkoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7CisKKwkvKiB0aGUgcHJlIGFuZCBwb3N0IFBNIGZ1bmN0aW9ucyBhcmUgdXNlZCB0byBkbyBhbnkgUE0gd29yayBiZWZvcmUgYW5kCisJICogYWZ0ZXIgdGhlIGNvZGVjIGFuZCBEQUlzIGRvIGFueSBQTSB3b3JrLiAqLworCWludCAoKnN1c3BlbmRfcHJlKShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBwbV9tZXNzYWdlX3Qgc3RhdGUpOworCWludCAoKnN1c3BlbmRfcG9zdCkoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgcG1fbWVzc2FnZV90IHN0YXRlKTsKKwlpbnQgKCpyZXN1bWVfcHJlKShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KTsKKwlpbnQgKCpyZXN1bWVfcG9zdCkoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7CisKKwkuLi4KKworCS8qIENQVSA8LS0+IENvZGVjIERBSSBsaW5rcyAgKi8KKwlzdHJ1Y3Qgc25kX3NvY19kYWlfbGluayAqZGFpX2xpbms7CisJaW50IG51bV9saW5rczsKKworCS4uLgorfTsKKworcHJvYmUoKS9yZW1vdmUoKQorLS0tLS0tLS0tLS0tLS0tLQorcHJvYmUvcmVtb3ZlIGFyZSBvcHRpb25hbC4gRG8gYW55IG1hY2hpbmUgc3BlY2lmaWMgcHJvYmUgaGVyZS4KKworCitzdXNwZW5kKCkvcmVzdW1lKCkKKy0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIG1hY2hpbmUgZHJpdmVyIGhhcyBwcmUgYW5kIHBvc3QgdmVyc2lvbnMgb2Ygc3VzcGVuZCBhbmQgcmVzdW1lIHRvIHRha2UgY2FyZQorb2YgYW55IG1hY2hpbmUgYXVkaW8gdGFza3MgdGhhdCBoYXZlIHRvIGJlIGRvbmUgYmVmb3JlIG9yIGFmdGVyIHRoZSBjb2RlYywgREFJcworYW5kIERNQSBpcyBzdXNwZW5kZWQgYW5kIHJlc3VtZWQuIE9wdGlvbmFsLgorCisKK01hY2hpbmUgREFJIENvbmZpZ3VyYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSBtYWNoaW5lIERBSSBjb25maWd1cmF0aW9uIGdsdWVzIGFsbCB0aGUgY29kZWMgYW5kIENQVSBEQUlzIHRvZ2V0aGVyLiBJdCBjYW4KK2Fsc28gYmUgdXNlZCB0byBzZXQgdXAgdGhlIERBSSBzeXN0ZW0gY2xvY2sgYW5kIGZvciBhbnkgbWFjaGluZSByZWxhdGVkIERBSQoraW5pdGlhbGlzYXRpb24gZS5nLiB0aGUgbWFjaGluZSBhdWRpbyBtYXAgY2FuIGJlIGNvbm5lY3RlZCB0byB0aGUgY29kZWMgYXVkaW8KK21hcCwgdW5jb25uZWN0ZWQgY29kZWMgcGlucyBjYW4gYmUgc2V0IGFzIHN1Y2guCisKK3N0cnVjdCBzbmRfc29jX2RhaV9saW5rIGlzIHVzZWQgdG8gc2V0IHVwIGVhY2ggREFJIGluIHlvdXIgbWFjaGluZS4gZS5nLgorCisvKiBjb3JnaSBkaWdpdGFsIGF1ZGlvIGludGVyZmFjZSBnbHVlIC0gY29ubmVjdHMgY29kZWMgPC0tPiBDUFUgKi8KK3N0YXRpYyBzdHJ1Y3Qgc25kX3NvY19kYWlfbGluayBjb3JnaV9kYWkgPSB7CisJLm5hbWUgPSAiV004NzMxIiwKKwkuc3RyZWFtX25hbWUgPSAiV004NzMxIiwKKwkuY3B1X2RhaV9uYW1lID0gInB4YS1pczItZGFpIiwKKwkuY29kZWNfZGFpX25hbWUgPSAid204NzMxLWhpZmkiLAorCS5wbGF0Zm9ybV9uYW1lID0gInB4YS1wY20tYXVkaW8iLAorCS5jb2RlY19uYW1lID0gIndtODcxMy1jb2RlYy4wLTAwMWEiLAorCS5pbml0ID0gY29yZ2lfd204NzMxX2luaXQsCisJLm9wcyA9ICZjb3JnaV9vcHMsCit9OworCitzdHJ1Y3Qgc25kX3NvY19jYXJkIHRoZW4gc2V0cyB1cCB0aGUgbWFjaGluZSB3aXRoIGl0cyBEQUlzLiBlLmcuCisKKy8qIGNvcmdpIGF1ZGlvIG1hY2hpbmUgZHJpdmVyICovCitzdGF0aWMgc3RydWN0IHNuZF9zb2NfY2FyZCBzbmRfc29jX2NvcmdpID0geworCS5uYW1lID0gIkNvcmdpIiwKKwkuZGFpX2xpbmsgPSAmY29yZ2lfZGFpLAorCS5udW1fbGlua3MgPSAxLAorfTsKKworCitNYWNoaW5lIFBvd2VyIE1hcAorLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG1hY2hpbmUgZHJpdmVyIGNhbiBvcHRpb25hbGx5IGV4dGVuZCB0aGUgY29kZWMgcG93ZXIgbWFwIGFuZCB0byBiZWNvbWUgYW4KK2F1ZGlvIHBvd2VyIG1hcCBvZiB0aGUgYXVkaW8gc3Vic3lzdGVtLiBUaGlzIGFsbG93cyBmb3IgYXV0b21hdGljIHBvd2VyIHVwL2Rvd24KK29mIHNwZWFrZXIvSFAgYW1wbGlmaWVycywgZXRjLiBDb2RlYyBwaW5zIGNhbiBiZSBjb25uZWN0ZWQgdG8gdGhlIG1hY2hpbmVzIGphY2sKK3NvY2tldHMgaW4gdGhlIG1hY2hpbmUgaW5pdCBmdW5jdGlvbi4KKworCitNYWNoaW5lIENvbnRyb2xzCistLS0tLS0tLS0tLS0tLS0tCisKK01hY2hpbmUgc3BlY2lmaWMgYXVkaW8gbWl4ZXIgY29udHJvbHMgY2FuIGJlIGFkZGVkIGluIHRoZSBEQUkgaW5pdCBmdW5jdGlvbi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zb2Mvb3ZlcnZpZXcudHh0IGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3NvYy9vdmVydmlldy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY4OGY1MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9zb2Mvb3ZlcnZpZXcudHh0CkBAIC0wLDAgKzEsOTUgQEAKK0FMU0EgU29DIExheWVyCis9PT09PT09PT09PT09PQorCitUaGUgb3ZlcmFsbCBwcm9qZWN0IGdvYWwgb2YgdGhlIEFMU0EgU3lzdGVtIG9uIENoaXAgKEFTb0MpIGxheWVyIGlzIHRvCitwcm92aWRlIGJldHRlciBBTFNBIHN1cHBvcnQgZm9yIGVtYmVkZGVkIHN5c3RlbS1vbi1jaGlwIHByb2Nlc3NvcnMgKGUuZy4KK3B4YTJ4eCwgYXUxeDAwLCBpTVgsIGV0YykgYW5kIHBvcnRhYmxlIGF1ZGlvIGNvZGVjcy4gIFByaW9yIHRvIHRoZSBBU29DCitzdWJzeXN0ZW0gdGhlcmUgd2FzIHNvbWUgc3VwcG9ydCBpbiB0aGUga2VybmVsIGZvciBTb0MgYXVkaW8sIGhvd2V2ZXIgaXQKK2hhZCBzb21lIGxpbWl0YXRpb25zOi0KKworICAqIENvZGVjIGRyaXZlcnMgd2VyZSBvZnRlbiB0aWdodGx5IGNvdXBsZWQgdG8gdGhlIHVuZGVybHlpbmcgU29DCisgICAgQ1BVLiBUaGlzIGlzIG5vdCBpZGVhbCBhbmQgbGVhZHMgdG8gY29kZSBkdXBsaWNhdGlvbiAtIGZvciBleGFtcGxlLAorICAgIExpbnV4IGhhZCBkaWZmZXJlbnQgd204NzMxIGRyaXZlcnMgZm9yIDQgZGlmZmVyZW50IFNvQyBwbGF0Zm9ybXMuCisKKyAgKiBUaGVyZSB3YXMgbm8gc3RhbmRhcmQgbWV0aG9kIHRvIHNpZ25hbCB1c2VyIGluaXRpYXRlZCBhdWRpbyBldmVudHMgKGUuZy4KKyAgICBIZWFkcGhvbmUvTWljIGluc2VydGlvbiwgSGVhZHBob25lL01pYyBkZXRlY3Rpb24gYWZ0ZXIgYW4gaW5zZXJ0aW9uCisgICAgZXZlbnQpLiBUaGVzZSBhcmUgcXVpdGUgY29tbW9uIGV2ZW50cyBvbiBwb3J0YWJsZSBkZXZpY2VzIGFuZCBvZnRlbiByZXF1aXJlCisgICAgbWFjaGluZSBzcGVjaWZpYyBjb2RlIHRvIHJlLXJvdXRlIGF1ZGlvLCBlbmFibGUgYW1wcywgZXRjLiwgYWZ0ZXIgc3VjaCBhbgorICAgIGV2ZW50LgorCisgICogRHJpdmVycyB0ZW5kZWQgdG8gcG93ZXIgdXAgdGhlIGVudGlyZSBjb2RlYyB3aGVuIHBsYXlpbmcgKG9yCisgICAgcmVjb3JkaW5nKSBhdWRpby4gVGhpcyBpcyBmaW5lIGZvciBhIFBDLCBidXQgdGVuZHMgdG8gd2FzdGUgYSBsb3Qgb2YKKyAgICBwb3dlciBvbiBwb3J0YWJsZSBkZXZpY2VzLiBUaGVyZSB3YXMgYWxzbyBubyBzdXBwb3J0IGZvciBzYXZpbmcKKyAgICBwb3dlciB2aWEgY2hhbmdpbmcgY29kZWMgb3ZlcnNhbXBsaW5nIHJhdGVzLCBiaWFzIGN1cnJlbnRzLCBldGMuCisKKworQVNvQyBEZXNpZ24KKz09PT09PT09PT09CisKK1RoZSBBU29DIGxheWVyIGlzIGRlc2lnbmVkIHRvIGFkZHJlc3MgdGhlc2UgaXNzdWVzIGFuZCBwcm92aWRlIHRoZSBmb2xsb3dpbmcKK2ZlYXR1cmVzIDotCisKKyAgKiBDb2RlYyBpbmRlcGVuZGVuY2UuIEFsbG93cyByZXVzZSBvZiBjb2RlYyBkcml2ZXJzIG9uIG90aGVyIHBsYXRmb3JtcworICAgIGFuZCBtYWNoaW5lcy4KKworICAqIEVhc3kgSTJTL1BDTSBhdWRpbyBpbnRlcmZhY2Ugc2V0dXAgYmV0d2VlbiBjb2RlYyBhbmQgU29DLiBFYWNoIFNvQworICAgIGludGVyZmFjZSBhbmQgY29kZWMgcmVnaXN0ZXJzIGl0cyBhdWRpbyBpbnRlcmZhY2UgY2FwYWJpbGl0aWVzIHdpdGggdGhlCisgICAgY29yZSBhbmQgYXJlIHN1YnNlcXVlbnRseSBtYXRjaGVkIGFuZCBjb25maWd1cmVkIHdoZW4gdGhlIGFwcGxpY2F0aW9uCisgICAgaGFyZHdhcmUgcGFyYW1ldGVycyBhcmUga25vd24uCisKKyAgKiBEeW5hbWljIEF1ZGlvIFBvd2VyIE1hbmFnZW1lbnQgKERBUE0pLiBEQVBNIGF1dG9tYXRpY2FsbHkgc2V0cyB0aGUgY29kZWMgdG8KKyAgICBpdHMgbWluaW11bSBwb3dlciBzdGF0ZSBhdCBhbGwgdGltZXMuIFRoaXMgaW5jbHVkZXMgcG93ZXJpbmcgdXAvZG93bgorICAgIGludGVybmFsIHBvd2VyIGJsb2NrcyBkZXBlbmRpbmcgb24gdGhlIGludGVybmFsIGNvZGVjIGF1ZGlvIHJvdXRpbmcgYW5kIGFueQorICAgIGFjdGl2ZSBzdHJlYW1zLgorCisgICogUG9wIGFuZCBjbGljayByZWR1Y3Rpb24uIFBvcHMgYW5kIGNsaWNrcyBjYW4gYmUgcmVkdWNlZCBieSBwb3dlcmluZyB0aGUKKyAgICBjb2RlYyB1cC9kb3duIGluIHRoZSBjb3JyZWN0IHNlcXVlbmNlIChpbmNsdWRpbmcgdXNpbmcgZGlnaXRhbCBtdXRlKS4gQVNvQworICAgIHNpZ25hbHMgdGhlIGNvZGVjIHdoZW4gdG8gY2hhbmdlIHBvd2VyIHN0YXRlcy4KKworICAqIE1hY2hpbmUgc3BlY2lmaWMgY29udHJvbHM6IEFsbG93IG1hY2hpbmVzIHRvIGFkZCBjb250cm9scyB0byB0aGUgc291bmQgY2FyZAorICAgIChlLmcuIHZvbHVtZSBjb250cm9sIGZvciBzcGVha2VyIGFtcGxpZmllcikuCisKK1RvIGFjaGlldmUgYWxsIHRoaXMsIEFTb0MgYmFzaWNhbGx5IHNwbGl0cyBhbiBlbWJlZGRlZCBhdWRpbyBzeXN0ZW0gaW50bworbXVsdGlwbGUgcmUtdXNhYmxlIGNvbXBvbmVudCBkcml2ZXJzIDotCisKKyAgKiBDb2RlYyBjbGFzcyBkcml2ZXJzOiBUaGUgY29kZWMgY2xhc3MgZHJpdmVyIGlzIHBsYXRmb3JtIGluZGVwZW5kZW50IGFuZAorICAgIGNvbnRhaW5zIGF1ZGlvIGNvbnRyb2xzLCBhdWRpbyBpbnRlcmZhY2UgY2FwYWJpbGl0aWVzLCBjb2RlYyBEQVBNCisgICAgZGVmaW5pdGlvbiBhbmQgY29kZWMgSU8gZnVuY3Rpb25zLiBUaGlzIGNsYXNzIGV4dGVuZHMgdG8gQlQsIEZNIGFuZCBNT0RFTQorICAgIElDcyBpZiByZXF1aXJlZC4gQ29kZWMgY2xhc3MgZHJpdmVycyBzaG91bGQgYmUgZ2VuZXJpYyBjb2RlIHRoYXQgY2FuIHJ1bgorICAgIG9uIGFueSBhcmNoaXRlY3R1cmUgYW5kIG1hY2hpbmUuCisKKyAgKiBQbGF0Zm9ybSBjbGFzcyBkcml2ZXJzOiBUaGUgcGxhdGZvcm0gY2xhc3MgZHJpdmVyIGluY2x1ZGVzIHRoZSBhdWRpbyBETUEKKyAgICBlbmdpbmUgZHJpdmVyLCBkaWdpdGFsIGF1ZGlvIGludGVyZmFjZSAoREFJKSBkcml2ZXJzIChlLmcuIEkyUywgQUM5NywgUENNKQorICAgIGFuZCBhbnkgYXVkaW8gRFNQIGRyaXZlcnMgZm9yIHRoYXQgcGxhdGZvcm0uCisKKyAgKiBNYWNoaW5lIGNsYXNzIGRyaXZlcjogVGhlIG1hY2hpbmUgZHJpdmVyIGNsYXNzIGFjdHMgYXMgdGhlIGdsdWUgdGhhdAorICAgIGRlY3JpYmVzIGFuZCBiaW5kcyB0aGUgb3RoZXIgY29tcG9uZW50IGRyaXZlcnMgdG9nZXRoZXIgdG8gZm9ybSBhbiBBTFNBCisgICAgInNvdW5kIGNhcmQgZGV2aWNlIi4gSXQgaGFuZGxlcyBhbnkgbWFjaGluZSBzcGVjaWZpYyBjb250cm9scyBhbmQKKyAgICBtYWNoaW5lIGxldmVsIGF1ZGlvIGV2ZW50cyAoZS5nLiB0dXJuaW5nIG9uIGFuIGFtcCBhdCBzdGFydCBvZiBwbGF5YmFjaykuCisKKworRG9jdW1lbnRhdGlvbgorPT09PT09PT09PT09PQorCitUaGUgZG9jdW1lbnRhdGlvbiBpcyBzcGlsdCBpbnRvIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnM6LQorCitvdmVydmlldy50eHQ6IFRoaXMgZmlsZS4KKworY29kZWMudHh0OiBDb2RlYyBkcml2ZXIgaW50ZXJuYWxzLgorCitEQUkudHh0OiBEZXNjcmlwdGlvbiBvZiBEaWdpdGFsIEF1ZGlvIEludGVyZmFjZSBzdGFuZGFyZHMgYW5kIGhvdyB0byBjb25maWd1cmUKK2EgREFJIHdpdGhpbiB5b3VyIGNvZGVjIGFuZCBDUFUgREFJIGRyaXZlcnMuCisKK2RhcG0udHh0OiBEeW5hbWljIEF1ZGlvIFBvd2VyIE1hbmFnZW1lbnQKKworcGxhdGZvcm0udHh0OiBQbGF0Zm9ybSBhdWRpbyBETUEgYW5kIERBSS4KKworbWFjaGluZS50eHQ6IE1hY2hpbmUgZHJpdmVyIGludGVybmFscy4KKworcG9wX2NsaWNrcy50eHQ6IEhvdyB0byBtaW5pbWlzZSBhdWRpbyBhcnRpZmFjdHMuCisKK2Nsb2NraW5nLnR4dDogQVNvQyBjbG9ja2luZyBmb3IgYmVzdCBwb3dlciBwZXJmb3JtYW5jZS4KKworamFjay50eHQ6IEFTb0MgamFjayBkZXRlY3Rpb24uCisKK0RQQ00udHh0OiBEeW5hbWljIFBDTSAtIERlc2NyaWJlcyBEUENNIHdpdGggRFNQIGV4YW1wbGVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3NvYy9wbGF0Zm9ybS50eHQgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2Evc29jL3BsYXRmb3JtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTA4YTJjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3NvYy9wbGF0Zm9ybS50eHQKQEAgLTAsMCArMSw3OSBAQAorQVNvQyBQbGF0Zm9ybSBEcml2ZXIKKz09PT09PT09PT09PT09PT09PT09CisKK0FuIEFTb0MgcGxhdGZvcm0gZHJpdmVyIGNsYXNzIGNhbiBiZSBkaXZpZGVkIGludG8gYXVkaW8gRE1BIGRyaXZlcnMsIFNvQyBEQUkKK2RyaXZlcnMgYW5kIERTUCBkcml2ZXJzLiBUaGUgcGxhdGZvcm0gZHJpdmVycyBvbmx5IHRhcmdldCB0aGUgU29DIENQVSBhbmQgbXVzdAoraGF2ZSBubyBib2FyZCBzcGVjaWZpYyBjb2RlLgorCitBdWRpbyBETUEKKz09PT09PT09PQorCitUaGUgcGxhdGZvcm0gRE1BIGRyaXZlciBvcHRpb25hbGx5IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgQUxTQSBvcGVyYXRpb25zOi0KKworLyogU29DIGF1ZGlvIG9wcyAqLworc3RydWN0IHNuZF9zb2Nfb3BzIHsKKwlpbnQgKCpzdGFydHVwKShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKik7CisJdm9pZCAoKnNodXRkb3duKShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKik7CisJaW50ICgqaHdfcGFyYW1zKShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKiwgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICopOworCWludCAoKmh3X2ZyZWUpKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqKTsKKwlpbnQgKCpwcmVwYXJlKShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKik7CisJaW50ICgqdHJpZ2dlcikoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICosIGludCk7Cit9OworCitUaGUgcGxhdGZvcm0gZHJpdmVyIGV4cG9ydHMgaXRzIERNQSBmdW5jdGlvbmFsaXR5IHZpYSBzdHJ1Y3QKK3NuZF9zb2NfcGxhdGZvcm1fZHJpdmVyOi0KKworc3RydWN0IHNuZF9zb2NfcGxhdGZvcm1fZHJpdmVyIHsKKwljaGFyICpuYW1lOworCisJaW50ICgqcHJvYmUpKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpOworCWludCAoKnJlbW92ZSkoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7CisJaW50ICgqc3VzcGVuZCkoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IHNuZF9zb2NfY3B1X2RhaSAqY3B1X2RhaSk7CisJaW50ICgqcmVzdW1lKShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3Qgc25kX3NvY19jcHVfZGFpICpjcHVfZGFpKTsKKworCS8qIHBjbSBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gKi8KKwlpbnQgKCpwY21fbmV3KShzdHJ1Y3Qgc25kX2NhcmQgKiwgc3RydWN0IHNuZF9zb2NfY29kZWNfZGFpICosIHN0cnVjdCBzbmRfcGNtICopOworCXZvaWQgKCpwY21fZnJlZSkoc3RydWN0IHNuZF9wY20gKik7CisKKwkvKgorCSAqIEZvciBwbGF0Zm9ybSBjYXVzZWQgZGVsYXkgcmVwb3J0aW5nLgorCSAqIE9wdGlvbmFsLgorCSAqLworCXNuZF9wY21fc2ZyYW1lc190ICgqZGVsYXkpKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqLAorCQlzdHJ1Y3Qgc25kX3NvY19kYWkgKik7CisKKwkvKiBwbGF0Zm9ybSBzdHJlYW0gb3BzICovCisJc3RydWN0IHNuZF9wY21fb3BzICpwY21fb3BzOworfTsKKworUGxlYXNlIHJlZmVyIHRvIHRoZSBBTFNBIGRyaXZlciBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzIG9mIGF1ZGlvIERNQS4KK2h0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZy9+aXdhaS93cml0aW5nLWFuLWFsc2EtZHJpdmVyLworCitBbiBleGFtcGxlIERNQSBkcml2ZXIgaXMgc29jL3B4YS9weGEyeHgtcGNtLmMKKworCitTb0MgREFJIERyaXZlcnMKKz09PT09PT09PT09PT09PQorCitFYWNoIFNvQyBEQUkgZHJpdmVyIG11c3QgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGZlYXR1cmVzOi0KKworIDEpIERpZ2l0YWwgYXVkaW8gaW50ZXJmYWNlIChEQUkpIGRlc2NyaXB0aW9uCisgMikgRGlnaXRhbCBhdWRpbyBpbnRlcmZhY2UgY29uZmlndXJhdGlvbgorIDMpIFBDTSdzIGRlc2NyaXB0aW9uCisgNCkgU1lTQ0xLIGNvbmZpZ3VyYXRpb24KKyA1KSBTdXNwZW5kIGFuZCByZXN1bWUgKG9wdGlvbmFsKQorCitQbGVhc2Ugc2VlIGNvZGVjLnR4dCBmb3IgYSBkZXNjcmlwdGlvbiBvZiBpdGVtcyAxIC0gNC4KKworCitTb0MgRFNQIERyaXZlcnMKKz09PT09PT09PT09PT09PQorCitFYWNoIFNvQyBEU1AgZHJpdmVyIHVzdWFsbHkgc3VwcGxpZXMgdGhlIGZvbGxvd2luZyBmZWF0dXJlcyA6LQorCisgMSkgREFQTSBncmFwaAorIDIpIE1peGVyIGNvbnRyb2xzCisgMykgRE1BIElPIHRvL2Zyb20gRFNQIGJ1ZmZlcnMgKGlmIGFwcGxpY2FibGUpCisgNCkgRGVmaW5pdGlvbiBvZiBEU1AgZnJvbnQgZW5kIChGRSkgUENNIGRldmljZXMuCisKK1BsZWFzZSBzZWUgRFBDTS50eHQgZm9yIGEgZGVzY3JpcHRpb24gb2YgaXRlbSA0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3NvYy9wb3BzX2NsaWNrcy50eHQgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL2Fsc2Evc29jL3BvcHNfY2xpY2tzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWU3NGRhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3NvYy9wb3BzX2NsaWNrcy50eHQKQEAgLTAsMCArMSw1MiBAQAorQXVkaW8gUG9wcyBhbmQgQ2xpY2tzCis9PT09PT09PT09PT09PT09PT09PT0KKworUG9wcyBhbmQgY2xpY2tzIGFyZSB1bndhbnRlZCBhdWRpbyBhcnRpZmFjdHMgY2F1c2VkIGJ5IHRoZSBwb3dlcmluZyB1cCBhbmQgZG93bgorb2YgY29tcG9uZW50cyB3aXRoaW4gdGhlIGF1ZGlvIHN1YnN5c3RlbS4gVGhpcyBpcyBub3RpY2VhYmxlIG9uIFBDcyB3aGVuIGFuCithdWRpbyBtb2R1bGUgaXMgZWl0aGVyIGxvYWRlZCBvciB1bmxvYWRlZCAoYXQgbW9kdWxlIGxvYWQgdGltZSB0aGUgc291bmQgY2FyZCBpcworcG93ZXJlZCB1cCBhbmQgY2F1c2VzIGEgcG9wcGluZyBub2lzZSBvbiB0aGUgc3BlYWtlcnMpLgorCitQb3BzIGFuZCBjbGlja3MgY2FuIGJlIG1vcmUgZnJlcXVlbnQgb24gcG9ydGFibGUgc3lzdGVtcyB3aXRoIERBUE0uIFRoaXMgaXMKK2JlY2F1c2UgdGhlIGNvbXBvbmVudHMgd2l0aGluIHRoZSBzdWJzeXN0ZW0gYXJlIGJlaW5nIGR5bmFtaWNhbGx5IHBvd2VyZWQKK2RlcGVuZGluZyBvbiB0aGUgYXVkaW8gdXNhZ2UgYW5kIHRoaXMgY2FuIHN1YnNlcXVlbnRseSBjYXVzZSBhIHNtYWxsIHBvcCBvcgorY2xpY2sgZXZlcnkgdGltZSBhIGNvbXBvbmVudCBwb3dlciBzdGF0ZSBpcyBjaGFuZ2VkLgorCisKK01pbmltaXNpbmcgUGxheWJhY2sgUG9wcyBhbmQgQ2xpY2tzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQbGF5YmFjayBwb3BzIGluIHBvcnRhYmxlIGF1ZGlvIHN1YnN5c3RlbXMgY2Fubm90IGJlIGNvbXBsZXRlbHkgZWxpbWluYXRlZAorY3VycmVudGx5LCBob3dldmVyIGZ1dHVyZSBhdWRpbyBjb2RlYyBoYXJkd2FyZSB3aWxsIGhhdmUgYmV0dGVyIHBvcCBhbmQgY2xpY2sKK3N1cHByZXNzaW9uLiAgUG9wcyBjYW4gYmUgcmVkdWNlZCB3aXRoaW4gcGxheWJhY2sgYnkgcG93ZXJpbmcgdGhlIGF1ZGlvCitjb21wb25lbnRzIGluIGEgc3BlY2lmaWMgb3JkZXIuIFRoaXMgb3JkZXIgaXMgZGlmZmVyZW50IGZvciBzdGFydHVwIGFuZAorc2h1dGRvd24gYW5kIGZvbGxvd3Mgc29tZSBiYXNpYyBydWxlczotCisKKyBTdGFydHVwIE9yZGVyIDotIERBQyAtLT4gTWl4ZXJzIC0tPiBPdXRwdXQgUEdBIC0tPiBEaWdpdGFsIFVubXV0ZQorCisgU2h1dGRvd24gT3JkZXIgOi0gRGlnaXRhbCBNdXRlIC0tPiBPdXRwdXQgUEdBIC0tPiBNaXhlcnMgLS0+IERBQworCitUaGlzIGFzc3VtZXMgdGhhdCB0aGUgY29kZWMgUENNIG91dHB1dCBwYXRoIGZyb20gdGhlIERBQyBpcyB2aWEgYSBtaXhlciBhbmQgdGhlbgorYSBQR0EgKHByb2dyYW1tYWJsZSBnYWluIGFtcGxpZmllcikgYmVmb3JlIGJlaW5nIG91dHB1dCB0byB0aGUgc3BlYWtlcnMuCisKKworTWluaW1pc2luZyBDYXB0dXJlIFBvcHMgYW5kIENsaWNrcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitDYXB0dXJlIGFydGlmYWN0cyBhcmUgc29tZXdoYXQgZWFzaWVyIHRvIGdldCByaWQgYXMgd2UgY2FuIGRlbGF5IGFjdGl2YXRpbmcgdGhlCitBREMgdW50aWwgYWxsIHRoZSBwb3BzIGhhdmUgb2NjdXJyZWQuIFRoaXMgZm9sbG93cyBzaW1pbGFyIHBvd2VyIHJ1bGVzIHRvCitwbGF5YmFjayBpbiB0aGF0IGNvbXBvbmVudHMgYXJlIHBvd2VyZWQgaW4gYSBzZXF1ZW5jZSBkZXBlbmRpbmcgdXBvbiBzdHJlYW0KK3N0YXJ0dXAgb3Igc2h1dGRvd24uCisKKyBTdGFydHVwIE9yZGVyIC0gSW5wdXQgUEdBIC0tPiBNaXhlcnMgLS0+IEFEQworCisgU2h1dGRvd24gT3JkZXIgLSBBREMgLS0+IE1peGVycyAtLT4gSW5wdXQgUEdBCisKKworWmlwcGVyIE5vaXNlCis9PT09PT09PT09PT0KK0FuIHVud2FudGVkIHppcHBlciBub2lzZSBjYW4gb2NjdXIgd2l0aGluIHRoZSBhdWRpbyBwbGF5YmFjayBvciBjYXB0dXJlIHN0cmVhbQord2hlbiBhIHZvbHVtZSBjb250cm9sIGlzIGNoYW5nZWQgbmVhciBpdHMgbWF4aW11bSBnYWluIHZhbHVlLiBUaGUgemlwcGVyIG5vaXNlCitpcyBoZWFyZCB3aGVuIHRoZSBnYWluIGluY3JlYXNlIG9yIGRlY3JlYXNlIGNoYW5nZXMgdGhlIG1lYW4gYXVkaW8gc2lnbmFsCithbXBsaXR1ZGUgdG9vIHF1aWNrbHkuIEl0IGNhbiBiZSBtaW5pbWlzZWQgYnkgZW5hYmxpbmcgdGhlIHplcm8gY3Jvc3Mgc2V0dGluZworZm9yIGVhY2ggdm9sdW1lIGNvbnRyb2wuIFRoZSBaQyBmb3JjZXMgdGhlIGdhaW4gY2hhbmdlIHRvIG9jY3VyIHdoZW4gdGhlIHNpZ25hbAorY3Jvc3NlcyB0aGUgemVybyBhbXBsaXR1ZGUgbGluZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS90aW1lc3RhbXBpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL3RpbWVzdGFtcGluZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIxOTFhMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS90aW1lc3RhbXBpbmcudHh0CkBAIC0wLDAgKzEsMjAwIEBACitUaGUgQUxTQSBBUEkgY2FuIHByb3ZpZGUgdHdvIGRpZmZlcmVudCBzeXN0ZW0gdGltZXN0YW1wczoKKworLSBUcmlnZ2VyX3RzdGFtcCBpcyB0aGUgc3lzdGVtIHRpbWUgc25hcHNob3QgdGFrZW4gd2hlbiB0aGUgLnRyaWdnZXIKK2NhbGxiYWNrIGlzIGludm9rZWQuIFRoaXMgc25hcHNob3QgaXMgdGFrZW4gYnkgdGhlIEFMU0EgY29yZSBpbiB0aGUKK2dlbmVyYWwgY2FzZSwgYnV0IHNwZWNpZmljIGhhcmR3YXJlIG1heSBoYXZlIHN5bmNocm9uaXphdGlvbgorY2FwYWJpbGl0aWVzIG9yIGNvbnZlcnNlbHkgbWF5IG9ubHkgYmUgYWJsZSB0byBwcm92aWRlIGEgY29ycmVjdAorZXN0aW1hdGUgd2l0aCBhIGRlbGF5LiBJbiB0aGUgbGF0dGVyIHR3byBjYXNlcywgdGhlIGxvdy1sZXZlbCBkcml2ZXIKK2lzIHJlc3BvbnNpYmxlIGZvciB1cGRhdGluZyB0aGUgdHJpZ2dlcl90c3RhbXAgYXQgdGhlIG1vc3QgYXBwcm9wcmlhdGUKK2FuZCBwcmVjaXNlIG1vbWVudC4gQXBwbGljYXRpb25zIHNob3VsZCBub3QgcmVseSBzb2xlbHkgb24gdGhlIGZpcnN0Cit0cmlnZ2VyX3RzdGFtcCBidXQgdXBkYXRlIHRoZWlyIGludGVybmFsIGNhbGN1bGF0aW9ucyBpZiB0aGUgZHJpdmVyCitwcm92aWRlcyBhIHJlZmluZWQgZXN0aW1hdGUgd2l0aCBhIGRlbGF5LgorCistIHRzdGFtcCBpcyB0aGUgY3VycmVudCBzeXN0ZW0gdGltZXN0YW1wIHVwZGF0ZWQgZHVyaW5nIHRoZSBsYXN0CitldmVudCBvciBhcHBsaWNhdGlvbiBxdWVyeS4KK1RoZSBkaWZmZXJlbmNlICh0c3RhbXAgLSB0cmlnZ2VyX3RzdGFtcCkgZGVmaW5lcyB0aGUgZWxhcHNlZCB0aW1lLgorCitUaGUgQUxTQSBBUEkgcHJvdmlkZXMgcmVwb3J0cyB0d28gYmFzaWMgcGllY2VzIG9mIGluZm9ybWF0aW9uLCBhdmFpbAorYW5kIGRlbGF5LCB3aGljaCBjb21iaW5lZCB3aXRoIHRoZSB0cmlnZ2VyIGFuZCBjdXJyZW50IHN5c3RlbQordGltZXN0YW1wcyBhbGxvdyBmb3IgYXBwbGljYXRpb25zIHRvIGtlZXAgdHJhY2sgb2YgdGhlICdmdWxsbmVzcycgb2YKK3RoZSByaW5nIGJ1ZmZlciBhbmQgdGhlIGFtb3VudCBvZiBxdWV1ZWQgc2FtcGxlcy4KKworVGhlIHVzZSBvZiB0aGVzZSBkaWZmZXJlbnQgcG9pbnRlcnMgYW5kIHRpbWUgaW5mb3JtYXRpb24gZGVwZW5kcyBvbgordGhlIGFwcGxpY2F0aW9uIG5lZWRzOgorCistICdhdmFpbCcgcmVwb3J0cyBob3cgbXVjaCBjYW4gYmUgd3JpdHRlbiBpbiB0aGUgcmluZyBidWZmZXIKKy0gJ2RlbGF5JyByZXBvcnRzIHRoZSB0aW1lIGl0IHdpbGwgdGFrZSB0byBoZWFyIGEgbmV3IHNhbXBsZSBhZnRlciBhbGwKK3F1ZXVlZCBzYW1wbGVzIGhhdmUgYmVlbiBwbGF5ZWQgb3V0LgorCitXaGVuIHRpbWVzdGFtcHMgYXJlIGVuYWJsZWQsIHRoZSBhdmFpbC9kZWxheSBpbmZvcm1hdGlvbiBpcyByZXBvcnRlZAorYWxvbmcgd2l0aCBhIHNuYXBzaG90IG9mIHN5c3RlbSB0aW1lLiBBcHBsaWNhdGlvbnMgY2FuIHNlbGVjdCBmcm9tCitDTE9DS19SRUFMVElNRSAoTlRQIGNvcnJlY3Rpb25zIGluY2x1ZGluZyBnb2luZyBiYWNrd2FyZHMpLAorQ0xPQ0tfTU9OT1RPTklDIChOVFAgY29ycmVjdGlvbnMgYnV0IG5ldmVyIGdvaW5nIGJhY2t3YXJkcyksCitDTE9DS19NT05PVElDX1JBVyAod2l0aG91dCBOVFAgY29ycmVjdGlvbnMpIGFuZCBjaGFuZ2UgdGhlIG1vZGUKK2R5bmFtaWNhbGx5IHdpdGggc3dfcGFyYW1zCisKKworVGhlIEFMU0EgQVBJIGFsc28gcHJvdmlkZSBhbiBhdWRpb190c3RhbXAgd2hpY2ggcmVmbGVjdHMgdGhlIHBhc3NhZ2UKK29mIHRpbWUgYXMgbWVhc3VyZWQgYnkgZGlmZmVyZW50IGNvbXBvbmVudHMgb2YgYXVkaW8gaGFyZHdhcmUuICBJbgorYXNjaWktYXJ0LCB0aGlzIGNvdWxkIGJlIHJlcHJlc2VudGVkIGFzIGZvbGxvd3MgKGZvciB0aGUgcGxheWJhY2sKK2Nhc2UpOgorCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiB0aW1lCisgIF4gICAgICAgICAgICAgICBeICAgICAgICAgICAgICBeICAgICAgICAgICAgICAgIF4gICAgICAgICAgIF4KKyAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfAorIGFuYWxvZyAgICAgICAgIGxpbmsgICAgICAgICAgICBkbWEgICAgICAgICAgICAgIGFwcCAgICAgICBGdWxsQnVmZmVyCisgdGltZSAgICAgICAgICAgdGltZSAgICAgICAgICAgdGltZSAgICAgICAgICAgICAgdGltZSAgICAgICAgdGltZQorICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8CisgIHw8IGNvZGVjIGRlbGF5ID58PC0taHcgZGVsYXktLT58PHF1ZXVlZCBzYW1wbGVzPnw8LS0tYXZhaWwtPnwKKyAgfDwtLS0tLS0tLS0tLS0tLS0tLSBkZWxheS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+fCAgICAgICAgICAgfAorCQkJICAgICAgICAgfDwtLS0tcmluZyBidWZmZXIgbGVuZ3RoLS0tLT58CisKK1RoZSBhbmFsb2cgdGltZSBpcyB0YWtlbiBhdCB0aGUgbGFzdCBzdGFnZSBvZiB0aGUgcGxheWJhY2ssIGFzIGNsb3NlCithcyBwb3NzaWJsZSB0byB0aGUgYWN0dWFsIHRyYW5zZHVjZXIKKworVGhlIGxpbmsgdGltZSBpcyB0YWtlbiBhdCB0aGUgb3V0cHV0IG9mIHRoZSBTT0MvY2hpcHNldCBhcyB0aGUgc2FtcGxlcworYXJlIHB1c2hlZCBvbiBhIGxpbmsuIFRoZSBsaW5rIHRpbWUgY2FuIGJlIGRpcmVjdGx5IG1lYXN1cmVkIGlmCitzdXBwb3J0ZWQgaW4gaGFyZHdhcmUgYnkgc2FtcGxlIGNvdW50ZXJzIG9yIHdhbGxjbG9ja3MgKGUuZy4gd2l0aAorSERBdWRpbyAyNE1IeiBvciBQVFAgY2xvY2sgZm9yIG5ldHdvcmtlZCBzb2x1dGlvbnMpIG9yIGluZGlyZWN0bHkKK2VzdGltYXRlZCAoZS5nLiB3aXRoIHRoZSBmcmFtZSBjb3VudGVyIGluIFVTQikuCisKK1RoZSBETUEgdGltZSBpcyBtZWFzdXJlZCB1c2luZyBjb3VudGVycyAtIHR5cGljYWxseSB0aGUgbGVhc3QgcmVsaWFibGUKK29mIGFsbCBtZWFzdXJlbWVudHMgZHVlIHRvIHRoZSBidXJzdHkgbmF0dXJlZCBvZiBETUEgdHJhbnNmZXJzLgorCitUaGUgYXBwIHRpbWUgY29ycmVzcG9uZHMgdG8gdGhlIHRpbWUgdHJhY2tlZCBieSBhbiBhcHBsaWNhdGlvbiBhZnRlcgord3JpdGluZyBpbiB0aGUgcmluZyBidWZmZXIuCisKK1RoZSBhcHBsaWNhdGlvbiBjYW4gcXVlcnkgd2hhdCB0aGUgaGFyZHdhcmUgc3VwcG9ydHMsIGRlZmluZSB3aGljaAorYXVkaW8gdGltZSBpdCB3YW50cyByZXBvcnRlZCBieSBzZWxlY3RpbmcgdGhlIHJlbGV2YW50IHNldHRpbmdzIGluCithdWRpb190c3RhbXBfY29uZmlnIGZpZWxkcywgZ2V0IGFuIGVzdGltYXRlIG9mIHRoZSB0aW1lc3RhbXAKK2FjY3VyYWN5LiBJdCBjYW4gYWxzbyByZXF1ZXN0IHRoZSBkZWxheS10by1hbmFsb2cgYmUgaW5jbHVkZWQgaW4gdGhlCittZWFzdXJlbWVudC4gRGlyZWN0IGFjY2VzcyB0byB0aGUgbGluayB0aW1lIGlzIHZlcnkgaW50ZXJlc3Rpbmcgb24KK3BsYXRmb3JtcyB0aGF0IHByb3ZpZGUgYW4gZW1iZWRkZWQgRFNQOyBtZWFzdXJpbmcgZGlyZWN0bHkgdGhlIGxpbmsKK3RpbWUgd2l0aCBkZWRpY2F0ZWQgaGFyZHdhcmUsIHBvc3NpYmx5IHN5bmNocm9uaXplZCB3aXRoIHN5c3RlbSB0aW1lLAorcmVtb3ZlcyB0aGUgbmVlZCB0byBrZWVwIHRyYWNrIG9mIGludGVybmFsIERTUCBwcm9jZXNzaW5nIHRpbWVzIGFuZAorbGF0ZW5jeS4KKworSW4gY2FzZSB0aGUgYXBwbGljYXRpb24gcmVxdWVzdHMgYW4gYXVkaW8gdHN0YW1wIHRoYXQgaXMgbm90IHN1cHBvcnRlZAoraW4gaGFyZHdhcmUvbG93LWxldmVsIGRyaXZlciwgdGhlIHR5cGUgaXMgb3ZlcnJpZGRlbiBhcyBERUZBVUxUIGFuZCB0aGUKK3RpbWVzdGFtcCB3aWxsIHJlcG9ydCB0aGUgRE1BIHRpbWUgYmFzZWQgb24gdGhlIGh3X3BvaW50ZXIgdmFsdWUuCisKK0ZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIGltcGxlbWVudGF0aW9ucyB0aGF0IGRpZCBub3QKK3Byb3ZpZGUgdGltZXN0YW1wIHNlbGVjdGlvbiwgd2l0aCBhIHplcm8tdmFsdWVkIENPTVBBVCB0aW1lc3RhbXAgdHlwZQordGhlIHJlc3VsdHMgd2lsbCBkZWZhdWx0IHRvIHRoZSBIREF1ZGlvIHdhbGwgY2xvY2sgZm9yIHBsYXliYWNrCitzdHJlYW1zIGFuZCB0byB0aGUgRE1BIHRpbWUgKGh3X3B0cikgaW4gYWxsIG90aGVyIGNhc2VzLgorCitUaGUgYXVkaW8gdGltZXN0YW1wIGFjY3VyYWN5IGNhbiBiZSByZXR1cm5lZCB0byB1c2VyLXNwYWNlLCBzbyB0aGF0CithcHByb3ByaWF0ZSBkZWNpc2lvbnMgYXJlIG1hZGU6CisKKy0gZm9yIGRtYSB0aW1lIChkZWZhdWx0KSwgdGhlIGdyYW51bGFyaXR5IG9mIHRoZSB0cmFuc2ZlcnMgY2FuIGJlCisgIGluZmVycmVkIGZyb20gdGhlIHN0ZXBzIGJldHdlZW4gdXBkYXRlcyBhbmQgaW4gdHVybiBwcm92aWRlCisgIGluZm9ybWF0aW9uIG9uIGhvdyBtdWNoIHRoZSBhcHBsaWNhdGlvbiBwb2ludGVyIGNhbiBiZSByZXdvdW5kCisgIHNhZmVseS4KKworLSB0aGUgbGluayB0aW1lIGNhbiBiZSB1c2VkIHRvIHRyYWNrIGxvbmctdGVybSBkcmlmdHMgYmV0d2VlbiBhdWRpbworICBhbmQgc3lzdGVtIHRpbWUgdXNpbmcgdGhlICh0c3RhbXAtdHJpZ2dlcl90c3RhbXApL2F1ZGlvX3RzdGFtcAorICByYXRpbywgdGhlIHByZWNpc2lvbiBoZWxwcyBkZWZpbmUgaG93IG11Y2ggc21vb3RoaW5nL2xvdy1wYXNzCisgIGZpbHRlcmluZyBpcyByZXF1aXJlZC4gVGhlIGxpbmsgdGltZSBjYW4gYmUgZWl0aGVyIHJlc2V0IG9uIHN0YXJ0dXAKKyAgb3IgcmVwb3J0ZWQgYXMgaXMgKHRoZSBsYXR0ZXIgYmVpbmcgdXNlZnVsIHRvIGNvbXBhcmUgcHJvZ3Jlc3Mgb2YKKyAgZGlmZmVyZW50IHN0cmVhbXMgLSBidXQgbWF5IHJlcXVpcmUgdGhlIHdhbGxjbG9jayB0byBiZSBhbHdheXMKKyAgcnVubmluZyBhbmQgbm90IHdyYXAtYXJvdW5kIGR1cmluZyBpZGxlIHBlcmlvZHMpLiBJZiBzdXBwb3J0ZWQgaW4KKyAgaGFyZHdhcmUsIHRoZSBhYnNvbHV0ZSBsaW5rIHRpbWUgY291bGQgYWxzbyBiZSB1c2VkIHRvIGRlZmluZSBhCisgIHByZWNpc2Ugc3RhcnQgdGltZSAocGF0Y2hlcyBXSVApCisKKy0gaW5jbHVkaW5nIHRoZSBkZWxheSBpbiB0aGUgYXVkaW8gdGltZXN0YW1wIG1heQorICBjb3VudGVyLWludHVpdGl2ZWx5IG5vdCBpbmNyZWFzZSB0aGUgcHJlY2lzaW9uIG9mIHRpbWVzdGFtcHMsIGUuZy4gaWYgYQorICBjb2RlYyBpbmNsdWRlcyB2YXJpYWJsZS1sYXRlbmN5IERTUCBwcm9jZXNzaW5nIG9yIGEgY2hhaW4gb2YKKyAgaGFyZHdhcmUgY29tcG9uZW50cyB0aGUgZGVsYXkgaXMgdHlwaWNhbGx5IG5vdCBrbm93biB3aXRoIHByZWNpc2lvbi4KKworVGhlIGFjY3VyYWN5IGlzIHJlcG9ydGVkIGluIG5hbm9zZWNvbmQgdW5pdHMgKHVzaW5nIGFuIHVuc2lnbmVkIDMyLWJpdAord29yZCksIHdoaWNoIGdpdmVzIGEgbWF4IHByZWNpc2lvbiBvZiA0LjI5cywgbW9yZSB0aGFuIGVub3VnaCBmb3IKK2F1ZGlvIGFwcGxpY2F0aW9ucy4uLgorCitEdWUgdG8gdGhlIHZhcmllZCBuYXR1cmUgb2YgdGltZXN0YW1waW5nIG5lZWRzLCBldmVuIGZvciBhIHNpbmdsZQorYXBwbGljYXRpb24sIHRoZSBhdWRpb190c3RhbXBfY29uZmlnIGNhbiBiZSBjaGFuZ2VkIGR5bmFtaWNhbGx5LiBJbgordGhlIFNUQVRVUyBpb2N0bCwgdGhlIHBhcmFtZXRlcnMgYXJlIHJlYWQtb25seSBhbmQgZG8gbm90IGFsbG93IGZvcgorYW55IGFwcGxpY2F0aW9uIHNlbGVjdGlvbi4gVG8gd29yayBhcm91bmQgdGhpcyBsaW1pdGF0aW9uIHdpdGhvdXQKK2ltcGFjdGluZyBsZWdhY3kgYXBwbGljYXRpb25zLCBhIG5ldyBTVEFUVVNfRVhUIGlvY3RsIGlzIGludHJvZHVjZWQKK3dpdGggcmVhZC93cml0ZSBwYXJhbWV0ZXJzLiBBTFNBLWxpYiB3aWxsIGJlIG1vZGlmaWVkIHRvIG1ha2UgdXNlIG9mCitTVEFUVVNfRVhUIGFuZCBlZmZlY3RpdmVseSBkZXByZWNhdGUgU1RBVFVTLgorCitUaGUgQUxTQSBBUEkgb25seSBhbGxvd3MgZm9yIGEgc2luZ2xlIGF1ZGlvIHRpbWVzdGFtcCB0byBiZSByZXBvcnRlZAorYXQgYSB0aW1lLiBUaGlzIGlzIGEgY29uc2Npb3VzIGRlc2lnbiBkZWNpc2lvbiwgcmVhZGluZyB0aGUgYXVkaW8KK3RpbWVzdGFtcHMgZnJvbSBoYXJkd2FyZSByZWdpc3RlcnMgb3IgZnJvbSBJUEMgdGFrZXMgdGltZSwgdGhlIG1vcmUKK3RpbWVzdGFtcHMgYXJlIHJlYWQgdGhlIG1vcmUgaW1wcmVjaXNlIHRoZSBjb21iaW5lZCBtZWFzdXJlbWVudHMKK2FyZS4gVG8gYXZvaWQgYW55IGludGVycHJldGF0aW9uIGlzc3VlcywgYSBzaW5nbGUgKHN5c3RlbSwgYXVkaW8pCit0aW1lc3RhbXAgaXMgcmVwb3J0ZWQuIEFwcGxpY2F0aW9ucyB0aGF0IG5lZWQgZGlmZmVyZW50IHRpbWVzdGFtcHMKK3dpbGwgYmUgcmVxdWlyZWQgdG8gaXNzdWUgbXVsdGlwbGUgcXVlcmllcyBhbmQgcGVyZm9ybSBhbgoraW50ZXJwb2xhdGlvbiBvZiB0aGUgcmVzdWx0cworCitJbiBzb21lIGhhcmR3YXJlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24sIHRoZSBzeXN0ZW0gdGltZXN0YW1wIGlzCitsYXRjaGVkIGJ5IGEgbG93LWxldmVsIGF1ZGlvIHN1YnN5dGVtLCBhbmQgdGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkCitiYWNrIHRvIHRoZSBkcml2ZXIuIER1ZSB0byBwb3RlbnRpYWwgZGVsYXlzIGluIHRoZSBjb21tdW5pY2F0aW9uIHdpdGgKK3RoZSBoYXJkd2FyZSwgdGhlcmUgaXMgYSByaXNrIG9mIG1pc2FsaWdubWVudCB3aXRoIHRoZSBhdmFpbCBhbmQgZGVsYXkKK2luZm9ybWF0aW9uLiBUbyBtYWtlIHN1cmUgYXBwbGljYXRpb25zIGFyZSBub3QgY29uZnVzZWQsIGEKK2RyaXZlcl90aW1lc3RhbXAgZmllbGQgaXMgYWRkZWQgaW4gdGhlIHNuZF9wY21fc3RhdHVzIHN0cnVjdHVyZTsgdGhpcwordGltZXN0YW1wIHNob3dzIHdoZW4gdGhlIGluZm9ybWF0aW9uIGlzIHB1dCB0b2dldGhlciBieSB0aGUgZHJpdmVyCitiZWZvcmUgcmV0dXJuaW5nIGZyb20gdGhlIFNUQVRVUyBhbmQgU1RBVFVTX0VYVCBpb2N0bC4gaW4gbW9zdCBjYXNlcwordGhpcyBkcml2ZXJfdGltZXN0YW1wIHdpbGwgYmUgaWRlbnRpY2FsIHRvIHRoZSByZWd1bGFyIHN5c3RlbSB0c3RhbXAuCisKK0V4YW1wbGVzIG9mIHR5cGVzdGFtcGluZyB3aXRoIEhEYXVkaW86CisKKzEuIERNQSB0aW1lc3RhbXAsIG5vIGNvbXBlbnNhdGlvbiBmb3IgRE1BK2FuYWxvZyBkZWxheQorJCAuL2F1ZGlvX3RpbWUgIC1wIC0tdHNfdHlwZT0xCitwbGF5YmFjazogc3lzdGltZTogMzQxMTIxMzM4IG5zZWMsIGF1ZGlvIHRpbWUgMzQyMDAwMDAwIG5zZWMsIAlzeXN0aW1lIGRlbHRhIC04Nzg2NjIKK3BsYXliYWNrOiBzeXN0aW1lOiA0MjYyMzY2NjMgbnNlYywgYXVkaW8gdGltZSA0MjcxODc1MDAgbnNlYywgCXN5c3RpbWUgZGVsdGEgLTk1MDgzNworcGxheWJhY2s6IHN5c3RpbWU6IDU5NzA4MDU4MCBuc2VjLCBhdWRpbyB0aW1lIDU5ODAwMDAwMCBuc2VjLCAJc3lzdGltZSBkZWx0YSAtOTE5NDIwCitwbGF5YmFjazogc3lzdGltZTogNjgyMDU5NzgyIG5zZWMsIGF1ZGlvIHRpbWUgNjgzMDIwODMzIG5zZWMsIAlzeXN0aW1lIGRlbHRhIC05NjEwNTEKK3BsYXliYWNrOiBzeXN0aW1lOiA4NTI4OTY0MTUgbnNlYywgYXVkaW8gdGltZSA4NTM4NTQxNjYgbnNlYywgCXN5c3RpbWUgZGVsdGEgLTk1Nzc1MQorcGxheWJhY2s6IHN5c3RpbWU6IDkzNzkwMzM0NCBuc2VjLCBhdWRpbyB0aW1lIDkzODg1NDE2NiBuc2VjLCAJc3lzdGltZSBkZWx0YSAtOTUwODIyCisKKzIuIERNQSB0aW1lc3RhbXAsIGNvbXBlbnNhdGlvbiBmb3IgRE1BK2FuYWxvZyBkZWxheQorJCAuL2F1ZGlvX3RpbWUgIC1wIC0tdHNfdHlwZT0xIC1kCitwbGF5YmFjazogc3lzdGltZTogMzQxMDUzMzQ3IG5zZWMsIGF1ZGlvIHRpbWUgMzQxMDYyNTAwIG5zZWMsIAlzeXN0aW1lIGRlbHRhIC05MTUzCitwbGF5YmFjazogc3lzdGltZTogNDI2MDcyNDQ3IG5zZWMsIGF1ZGlvIHRpbWUgNDI2MDYyNTAwIG5zZWMsIAlzeXN0aW1lIGRlbHRhIDk5NDcKK3BsYXliYWNrOiBzeXN0aW1lOiA1OTY4OTk1MTggbnNlYywgYXVkaW8gdGltZSA1OTY4OTU4MzMgbnNlYywgCXN5c3RpbWUgZGVsdGEgMzY4NQorcGxheWJhY2s6IHN5c3RpbWU6IDY4MTkxNTMxNyBuc2VjLCBhdWRpbyB0aW1lIDY4MTkxNjY2NiBuc2VjLCAJc3lzdGltZSBkZWx0YSAtMTM0OQorcGxheWJhY2s6IHN5c3RpbWU6IDg1Mjc0MTMwNiBuc2VjLCBhdWRpbyB0aW1lIDg1Mjc1MDAwMCBuc2VjLCAJc3lzdGltZSBkZWx0YSAtODY5NAorCiszLiBsaW5rIHRpbWVzdGFtcCwgY29tcGVuc2F0aW9uIGZvciBETUErYW5hbG9nIGRlbGF5CiskIC4vYXVkaW9fdGltZSAgLXAgLS10c190eXBlPTIgLWQKK3BsYXliYWNrOiBzeXN0aW1lOiAzNDEwNjAwMDQgbnNlYywgYXVkaW8gdGltZSAzNDEwNjI3OTEgbnNlYywgCXN5c3RpbWUgZGVsdGEgLTI3ODcKK3BsYXliYWNrOiBzeXN0aW1lOiA0MjYyNDIwNzQgbnNlYywgYXVkaW8gdGltZSA0MjYyNDQ4NzUgbnNlYywgCXN5c3RpbWUgZGVsdGEgLTI4MDEKK3BsYXliYWNrOiBzeXN0aW1lOiA1OTcwODA5OTIgbnNlYywgYXVkaW8gdGltZSA1OTcwODQ1ODMgbnNlYywgCXN5c3RpbWUgZGVsdGEgLTM1OTEKK3BsYXliYWNrOiBzeXN0aW1lOiA2ODIwODQ1MTIgbnNlYywgYXVkaW8gdGltZSA2ODIwODgyOTEgbnNlYywgCXN5c3RpbWUgZGVsdGEgLTM3NzkKK3BsYXliYWNrOiBzeXN0aW1lOiA4NTI5MzYyMjkgbnNlYywgYXVkaW8gdGltZSA4NTI5NDA5MTYgbnNlYywgCXN5c3RpbWUgZGVsdGEgLTQ2ODcKK3BsYXliYWNrOiBzeXN0aW1lOiA5MzgxMDc1NjIgbnNlYywgYXVkaW8gdGltZSA5MzgxMTI3MDggbnNlYywgCXN5c3RpbWUgZGVsdGEgLTUxNDYKKworRXhhbXBsZSAxIHNob3dzIHRoYXQgdGhlIHRpbWVzdGFtcCBhdCB0aGUgRE1BIGxldmVsIGlzIGNsb3NlIHRvIDFtcworYWhlYWQgb2YgdGhlIGFjdHVhbCBwbGF5YmFjayB0aW1lIChhcyBhIHNpZGUgdGltZSB0aGlzIHNvcnQgb2YKK21lYXN1cmVtZW50IGNhbiBoZWxwIGRlZmluZSByZXdpbmQgc2FmZWd1YXJkcykuIENvbXBlbnNhdGluZyBmb3IgdGhlCitETUEtbGluayBkZWxheSBpbiBleGFtcGxlIDIgaGVscHMgcmVtb3ZlIHRoZSBoYXJkd2FyZSBidWZmZXJpbmcgYWJ1dAordGhlIGluZm9ybWF0aW9uIGlzIHN0aWxsIHZlcnkgaml0dGVyeSwgd2l0aCB1cCB0byBvbmUgc2FtcGxlIG9mCitlcnJvci4gSW4gZXhhbXBsZSAzIHdoZXJlIHRoZSB0aW1lc3RhbXBzIGFyZSBtZWFzdXJlZCB3aXRoIHRoZSBsaW5rCit3YWxsY2xvY2ssIHRoZSB0aW1lc3RhbXBzIHNob3cgYSBtb25vdG9uaWMgYmVoYXZpb3IgYW5kIGEgbG93ZXIKK2Rpc3BlcnNpb24uCisKK0V4YW1wbGUgMyBhbmQgNCBhcmUgd2l0aCBVU0IgYXVkaW8gY2xhc3MuIEV4YW1wbGUgMyBzaG93cyBhIGhpZ2gKK29mZnNldCBiZXR3ZWVuIGF1ZGlvIHRpbWUgYW5kIHN5c3RlbSB0aW1lIGR1ZSB0byBidWZmZXJpbmcuIEV4YW1wbGUgNAorc2hvd3MgaG93IGNvbXBlbnNhdGluZyBmb3IgdGhlIGRlbGF5IGV4cG9zZXMgYSAxbXMgYWNjdXJhY3kgKGR1ZSB0bwordGhlIHVzZSBvZiB0aGUgZnJhbWUgY291bnRlciBieSB0aGUgZHJpdmVyKQorCitFeGFtcGxlIDM6IERNQSB0aW1lc3RhbXAsIG5vIGNvbXBlbnNhdGlvbiBmb3IgZGVsYXksIGRlbHRhIG9mIH41bXMKKyQgLi9hdWRpb190aW1lIC1wIC1EaHc6MSAtdDEKK3BsYXliYWNrOiBzeXN0aW1lOiAxMjAxNzQwMTkgbnNlYywgYXVkaW8gdGltZSAxMjUwMDAwMDAgbnNlYywgCXN5c3RpbWUgZGVsdGEgLTQ4MjU5ODEKK3BsYXliYWNrOiBzeXN0aW1lOiAyNDUwNDExMzYgbnNlYywgYXVkaW8gdGltZSAyNTAwMDAwMDAgbnNlYywgCXN5c3RpbWUgZGVsdGEgLTQ5NTg4NjQKK3BsYXliYWNrOiBzeXN0aW1lOiAzNzAxMDYwODggbnNlYywgYXVkaW8gdGltZSAzNzUwMDAwMDAgbnNlYywgCXN5c3RpbWUgZGVsdGEgLTQ4OTM5MTIKK3BsYXliYWNrOiBzeXN0aW1lOiA0OTUwNDAwNjUgbnNlYywgYXVkaW8gdGltZSA1MDAwMDAwMDAgbnNlYywgCXN5c3RpbWUgZGVsdGEgLTQ5NTk5MzUKK3BsYXliYWNrOiBzeXN0aW1lOiA2MjAwMzgxNzkgbnNlYywgYXVkaW8gdGltZSA2MjUwMDAwMDAgbnNlYywgCXN5c3RpbWUgZGVsdGEgLTQ5NjE4MjEKK3BsYXliYWNrOiBzeXN0aW1lOiA3NDUwODc3NDEgbnNlYywgYXVkaW8gdGltZSA3NTAwMDAwMDAgbnNlYywgCXN5c3RpbWUgZGVsdGEgLTQ5MTIyNTkKK3BsYXliYWNrOiBzeXN0aW1lOiA4NzAwMzczMzYgbnNlYywgYXVkaW8gdGltZSA4NzUwMDAwMDAgbnNlYywgCXN5c3RpbWUgZGVsdGEgLTQ5NjI2NjQKKworRXhhbXBsZSA0OiBETUEgdGltZXN0YW1wLCBjb21wZW5zYXRpb24gZm9yIGRlbGF5LCBkZWxheSBvZiB+MW1zCiskIC4vYXVkaW9fdGltZSAtcCAtRGh3OjEgLXQxIC1kCitwbGF5YmFjazogc3lzdGltZTogMTIwMTkwNTIwIG5zZWMsIGF1ZGlvIHRpbWUgMTIwMDAwMDAwIG5zZWMsIAlzeXN0aW1lIGRlbHRhIDE5MDUyMAorcGxheWJhY2s6IHN5c3RpbWU6IDI0NTAzNjc0MCBuc2VjLCBhdWRpbyB0aW1lIDI0NDAwMDAwMCBuc2VjLCAJc3lzdGltZSBkZWx0YSAxMDM2NzQwCitwbGF5YmFjazogc3lzdGltZTogMzcwMDM0MDgxIG5zZWMsIGF1ZGlvIHRpbWUgMzY5MDAwMDAwIG5zZWMsIAlzeXN0aW1lIGRlbHRhIDEwMzQwODEKK3BsYXliYWNrOiBzeXN0aW1lOiA0OTUxNTk5MDcgbnNlYywgYXVkaW8gdGltZSA0OTQwMDAwMDAgbnNlYywgCXN5c3RpbWUgZGVsdGEgMTE1OTkwNworcGxheWJhY2s6IHN5c3RpbWU6IDYyMDA5ODgyNCBuc2VjLCBhdWRpbyB0aW1lIDYxOTAwMDAwMCBuc2VjLCAJc3lzdGltZSBkZWx0YSAxMDk4ODI0CitwbGF5YmFjazogc3lzdGltZTogNzQ1MDMxODQ3IG5zZWMsIGF1ZGlvIHRpbWUgNzQ0MDAwMDAwIG5zZWMsIAlzeXN0aW1lIGRlbHRhIDEwMzE4NDcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvb3NzL0FMUyBiL0RvY3VtZW50YXRpb24vc291bmQvb3NzL0FMUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjEwYmVkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvQUxTCkBAIC0wLDAgKzEsNjYgQEAKK0FMUy0wMDcvQUxTLTEwMC9BTFMtMjAwIGJhc2VkIHNvdW5kIGNhcmRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0IGZvciBzb3VuZCBjYXJkcyBiYXNlZCBhcm91bmQgdGhlIEF2YW5jZSBMb2dpYworQUxTLTAwNy9BTFMtMTAwL0FMUy0yMDAgY2hpcCBpcyBpbmNsdWRlZC4gIFRoZXNlIGNoaXBzIGFyZSBhIHNpbmdsZQorY2hpcCBQblAgc291bmQgc29sdXRpb24gd2hpY2ggaXMgbW9zdGx5IGhhcmR3YXJlIGNvbXBhdGlibGUgd2l0aCB0aGUKK1NvdW5kIEJsYXN0ZXIgMTYgY2FyZCwgd2l0aCBtb3N0IGRpZmZlcmVuY2VzIG9jY3VycmluZyBpbiB0aGUgdXNlIG9mCit0aGUgbWl4ZXIgcmVnaXN0ZXJzLiAgRm9yIHRoaXMgcmVhc29uIHRoZSBBTFMgY29kZSBpcyBpbnRlZ3JhdGVkCithcyBwYXJ0IG9mIHRoZSBTb3VuZCBCbGFzdGVyIDE2IGRyaXZlciAoYWRkaW5nIG9ubHkgODAwIGJ5dGVzIHRvIHRoZQorU0IxNiBkcml2ZXIpLgorCitUbyB1c2UgYW4gQUxTIHNvdW5kIGNhcmQgdW5kZXIgTGludXgsIGVuYWJsZSB0aGUgZm9sbG93aW5nIG9wdGlvbnMgYXMKK21vZHVsZXMgaW4gdGhlIHNvdW5kIGNvbmZpZ3VyYXRpb24gc2VjdGlvbiBvZiB0aGUga2VybmVsIGNvbmZpZzoKKyAgLSAxMDAlIFNvdW5kIEJsYXN0ZXIgY29tcGF0aWJsZXMgKFNCMTYvMzIvNjQsIEVTUywgSmF6ejE2KSBzdXBwb3J0CisgIC0gRk0gc3ludGhlc2l6ZXIgKFlNMzgxMi9PUEwtMykgc3VwcG9ydCAKKyAgLSBzdGFuZGFsb25lIE1QVTQwMSBzdXBwb3J0IG1heSBiZSByZXF1aXJlZCBmb3Igc29tZSBjYXJkczsgZm9yIHRoZQorICAgIEFMUy0wMDcsIHdoZW4gdXNpbmcgaXNhcG5wdG9vbHMsIGl0IGlzIHJlcXVpcmVkCitTaW5jZSB0aGUgQUxTLTAwNy8xMDAvMjAwIGFyZSBQblAgY2FyZHMsIElTQVBuUCBzdXBwb3J0IHNob3VsZCBwcm9iYWJseSBiZQorY29tcGlsZWQgaW4uICBJZiBrZXJuZWwgbGV2ZWwgUG5QIHN1cHBvcnQgaXMgbm90IGluY2x1ZGVkLCBpc2FwbnB0b29scyB3aWxsCitiZSByZXF1aXJlZCB0byBjb25maWd1cmUgdGhlIGNhcmQgYmVmb3JlIHRoZSBzb3VuZCBtb2R1bGVzIGFyZSBsb2FkZWQuCisKK1doZW4gdXNpbmcga2VybmVsIGxldmVsIElTQVBuUCwgdGhlIGtlcm5lbCBzaG91bGQgY29ycmVjdGx5IGlkZW50aWZ5IGFuZAorY29uZmlndXJlIGFsbCByZXNvdXJjZXMgcmVxdWlyZWQgYnkgdGhlIGNhcmQgd2hlbiB0aGUgInNiIiBtb2R1bGUgaXMKK2luc2VydGVkLiAgTm90ZSB0aGF0IHRoZSBBTFMtMDA3IGRvZXMgbm90IGhhdmUgYSAxNiBiaXQgRE1BIGNoYW5uZWwgYW5kIHRoYXQKK3RoZSBNUFU0MDEgaW50ZXJmYWNlIG9uIHRoaXMgY2FyZCB1c2VzIGEgZGlmZmVyZW50IGludGVycnVwdCB0byB0aGUgYXVkaW8KK3NlY3Rpb24uICBUaGlzIHNob3VsZCBhbGwgYmUgY29ycmVjdGx5IGNvbmZpZ3VyZWQgYnkgdGhlIGtlcm5lbDsgaWYgcHJvYmxlbXMKK3dpdGggdGhlIE1QVTQwMSBpbnRlcmZhY2Ugc3VyZmFjZSwgdHJ5IHVzaW5nIHRoZSBzdGFuZGFsb25lIE1QVTQwMSBtb2R1bGUsCitwYXNzaW5nICIwIiBhcyB0aGUgInNiIiBtb2R1bGUncyAibXB1X2lvIiBtb2R1bGUgcGFyYW1ldGVyIHRvIHByZXZlbnQgdGhlCitzb3VuZGJsYXN0ZXIgZHJpdmVyIGF0dGVtcHRpbmcgdG8gcmVnaXN0ZXIgdGhlIE1QVTQwMSBpdHNlbGYuICBUaGUgb25ib2FyZAorc3ludGggZGV2aWNlIGNhbiBiZSBhY2Nlc3NlZCB1c2luZyB0aGUgIm9wbDMiIG1vZHVsZS4KKworSWYgaXNhcG5wdG9vbHMgaXMgdXNlZCB0byB3YWtlIHVwIHRoZSBzb3VuZCBjYXJkIChhcyBpbiAyLjIueCksIHRoZSBzZXR0aW5ncworb2YgdGhlIGNhcmQncyByZXNvdXJjZXMgc2hvdWxkIGJlIHBhc3NlZCB0byB0aGUga2VybmVsIG1vZHVsZXMgKCJzYiIsICJvcGwzIgorYW5kICJtcHU0MDEiKSB1c2luZyB0aGUgbW9kdWxlIHBhcmFtZXRlcnMuICBXaGVuIGNvbmZpZ3VyaW5nIGFuIEFMUy0wMDcsIGJlCitzdXJlIHRvIHNwZWNpZnkgZGlmZmVyZW50IElSUXMgZm9yIHRoZSBhdWRpbyBhbmQgTVBVNDAxIHNlY3Rpb25zIC0gdGhpcyBjYXJkCityZXF1aXJlcyB0aGV5IGJlIGRpZmZlcmVudC4gIEZvciAic2IiLCAiaW8iLCAiaXJxIiBhbmQgImRtYSIgc2hvdWxkIGJlIHNldAordG8gdGhlIHNhbWUgdmFsdWVzIHVzZWQgdG8gY29uZmlndXJlIHRoZSBhdWRpbyBzZWN0aW9uIG9mIHRoZSBjYXJkIHdpdGgKK2lzYXBucC4gICJkbWExNiIgc2hvdWxkIGJlIGV4cGxpY2l0bHkgc2V0IHRvICItMSIgZm9yIGFuIEFMUy0wMDcgc2luY2UgdGhpcworY2FyZCBkb2VzIG5vdCBoYXZlIGEgMTYgYml0IGRtYSBjaGFubmVsOyBpZiBub3Qgc3BlY2lmaWVkIHRoZSBrZXJuZWwgd2lsbAorZGVmYXVsdCB0byB1c2luZyBjaGFubmVsIDUgYW55d2F5IHdoaWNoIHdpbGwgY2F1c2UgYXVkaW8gbm90IHRvIHdvcmsuIAorIm1wdV9pbyIgc2hvdWxkIGJlIHNldCB0byAwLiAgVGhlICJpbyIgcGFyYW1ldGVyIG9mIHRoZSAib3BsMyIgbW9kdWxlIHNob3VsZAorYWxzbyBhZ3JlZSB3aXRoIHRoZSBzZXR0aW5nIHVzZWQgYnkgaXNhcG5wLiAgVG8gZ2V0IHRoZSBNUFU0MDEgaW50ZXJmYWNlCit3b3JraW5nIG9uIGFuIEFMUy0wMDcgY2FyZCwgdGhlICJtcHU0MDEiIG1vZHVsZSB3aWxsIGJlIHJlcXVpcmVkIHNpbmNlIHRoaXMKK2NhcmQgdXNlcyBzZXBhcmF0ZSBJUlFzIGZvciB0aGUgYXVkaW8gYW5kIE1QVTQwMSBzZWN0aW9ucyBhbmQgdGhlcmUgaXMgbm8KK3BhcmFtZXRlciBhdmFpbGFibGUgdG8gcGFzcyBhIGRpZmZlcmVudCBJUlEgdG8gdGhlICJzYiIgZHJpdmVyICh3aG9zZQoraW5idWlsdCBNUFU0MDEgZHJpdmVyIHdvdWxkIG90aGVyd2lzZSBiZSBmaW5lKS4gIEluc2VydCB0aGUgbXB1NDAxIG1vZHVsZQorcGFzc2luZyBhcHByb3ByaWF0ZSB2YWx1ZXMgdXNpbmcgdGhlICJpbyIgYW5kICJpcnEiIHBhcmFtZXRlcnMuCisKK1RoZSByZXN1bHRpbmcgc291bmQgZHJpdmVyIHdpbGwgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGNhcGFiaWxpdGllczoKKyAgLSA4IGFuZCAxNiBiaXQgYXVkaW8gcGxheWJhY2sKKyAgLSA4IGFuZCAxNiBiaXQgYXVkaW8gcmVjb3JkaW5nCisgIC0gU29mdHdhcmUgc2VsZWN0aW9uIG9mIHJlY29yZCBzb3VyY2UgKGxpbmUgaW4sIENELCBGTSwgbWljLCBtYXN0ZXIpCisgIC0gUmVjb3JkIGFuZCBwbGF5YmFjayBvZiBtaWRpIGRhdGEgdmlhIHRoZSBleHRlcm5hbCBNUFUtNDAxCisgIC0gUGxheWJhY2sgb2YgbWlkaSBkYXRhIHVzaW5nIGluYnVpbHQgRk0gc3ludGhlc2l6ZXIKKyAgLSBDb250cm9sIG9mIHRoZSBBTFMtMDA3IG1peGVyIHZpYSBhbnkgT1NTLWNvbXBhdGlibGUgbWl4ZXIgcHJvZ3JhbXMuIAorICAgIENvbnRyb2xzIGF2YWlsYWJsZSBhcmUgTWFzdGVyIChMJlIpLCBMaW5lIGluIChMJlIpLCBDRCAoTCZSKSwgCisgICAgRFNQL1BDTS9hdWRpbyBvdXQgKEwmUiksIEZNIChMJlIpIGFuZCBNaWMgaW4gKG1vbm8pLgorCitKb25hdGhhbiBXb2l0aGUKK2p3b2l0aGVAanVzdDQyLm5ldAorMzAgTWFyY2ggMTk5OAorCitNb2RpZmllZCAyMDAwLTAyLTI2IGJ5IERhdmUgRm9ycmVzdCwgZHJmNW5AdmlyZ2luaWEuZWR1IHRvIGFkZCBBTFMxMDAvQUxTMjAwCitNb2RpZmllZCAyMDAwLTA0LTEwIGJ5IFBhdWwgTGF1ZmVyLCBwZWxhdWZlckBjc3Vwb21vbmEuZWR1IHRvIGFkZCBJU0FQblAgaW5mby4KK01vZGlmaWVkIDIwMDAtMTEtMTkgYnkgSm9uYXRoYW4gV29pdGhlLCBqd29pdGhlQGp1c3Q0Mi5uZXQKKyAtIHVwZGF0ZWQgaW5mb3JtYXRpb24gZm9yIGtlcm5lbCAyLjQueC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvb3NzL0F1ZGlvRXhjZWxEU1AxNiBiL0RvY3VtZW50YXRpb24vc291bmQvb3NzL0F1ZGlvRXhjZWxEU1AxNgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTg1NDlmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvQXVkaW9FeGNlbERTUDE2CkBAIC0wLDAgKzEsMTAxIEBACitEcml2ZXIKKy0tLS0tLQorCitJbmZvcm1hdGlvbiBhYm91dCBBdWRpbyBFeGNlbCBEU1AgMTYgZHJpdmVyIGNhbiBiZSBmb3VuZCBpbiB0aGUgc291cmNlCitmaWxlIGFlZHNwMTYuYworUGxlYXNlLCByZWFkIHRoZSBoZWFkIG9mIHRoZSBzb3VyY2UgYmVmb3JlIHVzaW5nIGl0LiBJdCBjb250YWluIHVzZWZ1bAoraW5mb3JtYXRpb24uCisKK0NvbmZpZ3VyYXRpb24KKy0tLS0tLS0tLS0tLS0KKworVGhlIEF1ZGlvIEV4Y2VsIGNvbmZpZ3VyYXRpb24sIGlzIG5vdyBkb25lIHdpdGggdGhlIHN0YW5kYXJkIExpbnV4IHNldHVwLgorWW91IGhhdmUgdG8gY29uZmlndXJlIHRoZSBzb3VuZCBjYXJkIChTb3VuZCBCbGFzdGVyIG9yIE1pY3Jvc29mdCBTb3VuZCBTeXN0ZW0pCithbmQsIGlmIHlvdSB3YW50IGl0LCB0aGUgUm9sYW5kIE1QVS00MDEgKGRvIG5vdCB1c2UgdGhlIFNvdW5kIEJsYXN0ZXIgTVBVLTQwMSwKK1NCLU1QVTQwMSkgaW4gdGhlIG1haW4gZHJpdmVyIG1lbnUuIEFjdGl2YXRlIHRoZSBsb3dsZXZlbCBkcml2ZXJzIHRoZW4gc2VsZWN0Cit0aGUgQXVkaW8gRXhjZWwgaGFyZHdhcmUgdGhhdCB5b3Ugd2FudCB0byBpbml0aWFsaXplLiBDaGVjayB0aGUgSVJRL0RNQS9NSVJRCitvZiB0aGUgQXVkaW8gRXhjZWwgaW5pdGlhbGl6YXRpb246IGl0IG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIFNCUFJPIChvciBNU1MpCitzZXR1cC4gSWYgdGhlIHBhcmFtZXRlcnMgYXJlIGRpZmZlcmVudCwgY29ycmVjdCBpdC4KK0kgeW91IG93biBhIEdhbGxhbnQncyBhdWRpbyBjYXJkIGJhc2VkIG9uIFNDLTY2MDAsIGFjdGl2YXRlIHRoZSBTQy02NjAwIHN1cHBvcnQuCitJZiB5b3Ugd2FudCB0byBjaGFuZ2UgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHNvdW5kIGJvYXJkLCBiZSBzdXJlIHRvCitjaGVjayBvZmYgYWxsIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGJlZm9yZSByZS1jb25maWd1cmUgaXQuCisKK01vZHVsZSBwYXJhbWV0ZXJzCistLS0tLS0tLS0tLS0tLS0tLQorVG8gdXNlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCB5b3UgbXVzdCBjb25maWd1cmUgc29tZSBtb2R1bGUgcGFyYW1ldGVycywgdG8KK3NldCB1cCBJL08gYWRkcmVzc2VzLCBJUlEgbGluZXMgYW5kIERNQSBjaGFubmVscy4gU29tZSBwYXJhbWV0ZXJzIGFyZQorbWFuZGF0b3J5IHdoaWxlIHNvbWUgb3RoZXJzIGFyZSBvcHRpb25hbC4gSGVyZSBhIGxpc3Qgb2YgcGFyYW1ldGVycyB5b3UgY2FuCit1c2Ugd2l0aCB0aGlzIG1vZHVsZToKKworTmFtZQkJRGVzY3JpcHRpb24KKz09PT0JCT09PT09PT09PT09CitNQU5EQVRPUlkKK2lvCQlJL08gYmFzZSBhZGRyZXNzICgweDIyMCBvciAweDI0MCkKK2lycQkJaXJxIGxpbmUgKDUsIDcsIDksIDEwIG9yIDExKQorZG1hCQlkbWEgY2hhbm5lbCAoMCwgMSBvciAzKQorCitPUFRJT05BTAorbXNzX2Jhc2UJSS9PIGJhc2UgYWRkcmVzcyBmb3IgYWN0aXZhdGUgTVNTIG1vZGUgKGRlZmF1bHQgU0JQUk8pCisJCSgweDUzMCBvciAweEU4MCkKK21wdV9iYXNlCUkvTyBiYXNlIGFkZHJlc3MgZm9yIGFjdGl2YXRlIE1QVS00MDEgbW9kZQorCQkoMHgzMDAsIDB4MzEwLCAweDMyMCBvciAweDMzMCkKK21wdV9pcnEJCU1QVS00MDEgaXJxIGxpbmUgKDUsIDcsIDksIDEwIG9yIDApCisKK0EgY29uZmlndXJhdGlvbiBmaWxlIGluIC9ldGMvbW9kcHJvYmUuZC8gZGlyZWN0b3J5IHdpbGwgaGF2ZSBsaW5lcyBsaWtlIHRoaXM6CisKK29wdGlvbnMgb3BsMyBpbz0weDM4OAorb3B0aW9ucyBhZDE4NDggaW89MHg1MzAgaXJxPTExIGRtYT0zCitvcHRpb25zIGFlZHNwMTYgaW89MHgyMjAgaXJxPTExIGRtYT0zIG1zc19iYXNlPTB4NTMwCisKK1doZXJlIHRoZSBhZWRzcDE2IG9wdGlvbnMgYXJlIHRoZSBvcHRpb25zIGZvciB0aGlzIGRyaXZlciB3aGlsZSBvcGwzIGFuZAorYWQxODQ4IGFyZSB0aGUgY29ycmVzcG9uZGluZyBvcHRpb25zIGZvciB0aGUgTVNTIGFuZCBPUEwzIG1vZHVsZXMuCisKK0xvYWRpbmcgTVNTIGFuZCBPUEwzIG5lZWRzIHRvIHByZSBsb2FkIHRoZSBhZWRzcDE2IG1vZHVsZSB0byBzZXQgdXAgY29ycmVjdGx5Cit0aGUgc291bmQgY2FyZC4gSW5zdGFsbGF0aW9uIGRlcGVuZGVuY2llcyBtdXN0IGJlIHdyaXR0ZW4gaW4gY29uZmlndXJhdGlvbgorZmlsZXMgdW5kZXIgL2V0Yy9tb2Rwcm9iZS5kLyBkaXJlY3Rvcnk6CisKK3NvZnRkZXAgYWQxODQ4IHByZTogYWVkc3AxNgorc29mdGRlcCBvcGwzIHByZTogYWVkc3AxNgorCitUaGVuIHlvdSBtdXN0IGxvYWQgdGhlIHNvdW5kIG1vZHVsZXMgc3RhY2sgaW4gdGhpcyBvcmRlcjoKK3NvdW5kIC0+IGFlZHNwMTYgLT4gWyBhZDE4NDgsIG9wbDMgXQorCitXaXRoIHRoZSBhYm92ZSBjb25maWd1cmF0aW9uLCBsb2FkaW5nIGFkMTg0OCBvciBvcGwzIG1vZHVsZXMsIHdpbGwKK2F1dG9tYXRpY2FsbHkgbG9hZCBhbGwgdGhlIHNvdW5kIHN0YWNrLgorCitTb3VuZCBjYXJkcyBzdXBwb3J0ZWQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIFNDLTYwMDAgYW5kIFNDLTY2MDAgYmFzZWQgR2FsbGFudCdzIHNvdW5kIGNhcmQuCitJdCBkb24ndCBzdXBwb3J0IHRoZSBBdWRpbyBFeGNlbCBEU1AgMTYgSUlJICh0cnkgdGhlIFNDLTY2MDAgY29kZSkuCitJJ20gd29ya2luZyBvbiB0aGUgSUlJIHZlcnNpb24gb2YgdGhlIGNhcmQ6IGlmIHNvbWVvbmUgaGF2ZSB1c2VmdWwKK2luZm9ybWF0aW9uIGFib3V0IGl0LCBwbGVhc2UgbGV0IG1lIGtub3cuCitGb3IgYWxsIHRoZSBub24tc3VwcG9ydGVkIGF1ZGlvIGNhcmRzLCB5b3UgaGF2ZSB0byBib290IE1TLURPUyAob3IgV0lOOTUpCithY3RpdmF0aW5nIHRoZSBhdWRpbyBjYXJkIHdpdGggdGhlIE1TLURPUyBkZXZpY2UgZHJpdmVyLCB0aGVuIHlvdSBoYXZlIHRvCis8Y3RybD4tPGFsdD4tPGRlbD4gYW5kIGJvb3QgTGludXguCitGb2xsb3cgdGhlc2Ugc3RlcHM6CisKKzEpIENvbXBpbGUgTGludXgga2VybmVsIHdpdGggc3RhbmRhcmQgc291bmQgZHJpdmVyLCB1c2luZyB0aGUgZW11bGF0aW9uCisgICB5b3Ugd2FudCwgd2l0aCB0aGUgcGFyYW1ldGVycyBvZiB5b3VyIGF1ZGlvIGNhcmQsCisgICBlLmcuIE1pY3Jvc29mdCBTb3VuZCBTeXN0ZW0gaXJxMTAgZG1hMworMikgSW5zdGFsbCB5b3VyIG5ldyBrZXJuZWwgYXMgdGhlIGRlZmF1bHQgYm9vdCBrZXJuZWwuCiszKSBCb290IE1TLURPUyBhbmQgY29uZmlndXJlIHRoZSBhdWRpbyBjYXJkIHdpdGggdGhlIGJvb3QgdGltZSBkZXZpY2UKKyAgIGRyaXZlciwgZm9yIE1TUyBpcnExMCBkbWEzIGluIG91ciBleGFtcGxlLgorNCkgPGN0cmw+LTxhbHQ+LTxkZWw+IGFuZCBib290IExpbnV4LiBUaGlzIHdpbGwgbWFpbnRhaW4gdGhlIERPUyBjb25maWd1cmF0aW9uCisgICBhbmQgd2lsbCBib290IHRoZSBuZXcga2VybmVsIHdpdGggc291bmQgZHJpdmVyLiBUaGUgc291bmQgZHJpdmVyIHdpbGwgZmluZAorICAgdGhlIGF1ZGlvIGNhcmQgYW5kIHdpbGwgcmVjb2duaXplIGFuZCBhdHRhY2ggaXQuCisKK1JlcG9ydHMgb24gVXNlciBzdWNjZXNzZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworPiBEYXRlOiBNb24sIDI5IEp1bCAxOTk2IDA4OjM1OjQwICswMTAwCis+IEZyb206IE1yIFMgSiBHcmVlbmF3YXkgPHNqZzk1QHVuaXhmZS5ybC5hYy51az4KKz4gVG86IHJpY2NhcmRvQGNkYzhnNS5jZGMucG9saW1pLml0IChSaWNjYXJkbyBGYWNjaGV0dGkpCis+IFN1YmplY3Q6IFJlOiBBdWRpbyBFeGNlbCBEU1AgMTYgaW5pdGlhbGl6YXRpb24gY29kZQorPgorPiBKdXN0IHRvIGxldCB5b3Uga25vdyBnb3QgbXkgQXVkaW8gRXhjZWwgKGVtdWxhdGluZyBhIE1TUykgd29ya2luZworPiB3aXRoIG15IG9yaWdpbmFsIFNCMTYsIHRoYW5rcyBmb3IgdGhlIGRyaXZlciEKKworCitMYXN0IHJldmlzZWQ6IDIwIEF1Z3VzdCAxOTk4CitSaWNjYXJkbyBGYWNjaGV0dGkKK2ZpemJhbkB0aW4uaXQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvb3NzL0NNSTgzMzAgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9DTUk4MzMwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhNWZkMTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9DTUk4MzMwCkBAIC0wLDAgKzEsMTUyIEBACitEb2N1bWVudGF0aW9uIGZvciBDTUkgODMzMCAoU291bmRQUk8pIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQWxlc3NhbmRybyBadW1tbyA8YXp1bW1vQGl0YS5mbGFzaG5ldC5pdD4KKworKCBCZSBzdXJlIHRvIHJlYWQgRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvU291bmRQcm8gdG9vICkKKworCitUaGlzIGFkYXB0ZXIgaXMgbm93IGRpcmVjdGx5IHN1cHBvcnRlZCBieSB0aGUgc2IgZHJpdmVyLgorCisgVGhlIG9ubHkgdGhpbmcgeW91IGhhdmUgdG8gZG8gaXMgdG8gY29tcGlsZSB0aGUga2VybmVsIHNvdW5kCitzdXBwb3J0IGFzIGEgbW9kdWxlIGFuZCB0byBlbmFibGUga2VybmVsIElTQVBuUCBzdXBwb3J0LAorYXMgc2hvd24gYmVsb3cuCisKKworQ09ORklHX1NPVU5EPW0KK0NPTkZJR19TT1VORF9TQj1tCisKK0NPTkZJR19QTlA9eQorQ09ORklHX0lTQVBOUD15CisKKworYW5kIG9wdGlvbmFsbHk6CisKKworQ09ORklHX1NPVU5EX01QVTQwMT1tCisKKyBmb3IgTVBVNDAxIHN1cHBvcnQuCisKKworKEkgc3VnZ2VzdCB5b3UgdG8gdXNlICJtYWtlIG1lbnVjb25maWciIG9yICJtYWtlIHhjb25maWciIAorIGZvciBhIG1vcmUgY29tZm9ydGFibGUgY29uZmlndXJhdGlvbiBlZGl0aW5nKQorCisKKworVGhlbiB5b3UgY2FuIGRvCisKKyBtb2Rwcm9iZSBzYgorCithbmQgZXZlcnl0aGluZyB3aWxsIGJlIChob3BlZnVsbHkpIGNvbmZpZ3VyZWQuCisKK1lvdSBzaG91bGQgZ2V0IHNvbWV0aGluZyBzaW1pbGFyIGluIHN5c2xvZzoKKworc2I6IENNSTgzMzAgZGV0ZWN0ZWQuCitzYjogQ01JODMzMCBzYiBiYXNlIGxvY2F0ZWQgYXQgMHgyMjAKK3NiOiBDTUk4MzMwIG1wdSBiYXNlIGxvY2F0ZWQgYXQgMHgzMzAKK3NiOiBDTUk4MzMwIG1haWwgcmVwb3J0cyB0byBBbGVzc2FuZHJvIFp1bW1vIDxhenVtbW9AaXRhLmZsYXNobmV0Lml0Pgorc2I6IElTQVBuUCByZXBvcnRzIENNSSA4MzMwIFNvdW5kUFJPIGF0IGkvbyAweDIyMCwgaXJxIDcsIGRtYSAxLDUKKworCisKKworVGhlIG9sZCBkb2N1bWVudGF0aW9uIGZpbGUgZm9sbG93cyBmb3IgcmVmZXJlbmNlCitwdXJwb3Nlcy4KKworCitIb3cgdG8gZW5hYmxlIENNSSA4MzMwIChTT1VORFBSTykgc291bmRjaGlwIG9uIExpbnV4CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1N0ZWZhbiBMYXVkYXQgPFN0ZWZhbi5MYXVkYXRAYXNpdC5ybz4KKworW05vdGU6IFRoZSBDTUkgODMzOCBpcyB1bnJlbGF0ZWQgYW5kIGlzIHN1cHBvcnRlZCBieSBjbXBjaS5vXQorCisJCisJSW4gb3JkZXIgdG8gdXNlIENNSTgzMzAgdW5kZXIgTGludXggIHlvdSBqdXN0IGhhdmUgdG8gdXNlIGEgcHJvcGVyIGlzYXBucC5jb25mLCBhIGdvb2QgaXNhcG5wIGFuZCBhIGxpdHRsZSBiaXQgb2YgcGF0aWVuY2UuICBJIHVzZSBpc2FwbnAgMS4xNywgYnV0Cit5b3UgbWF5IGdldCBhIGJldHRlciBvbmUgSSBndWVzcyBhdCBodHRwOi8vd3d3LnJvZXN0b2NrLmRlbW9uLmNvLnVrL2lzYXBucHRvb2xzLy4KKworCU9mIGNvdXJzZSB5b3Ugd2lsbCBoYXZlIHRvIGNvbXBpbGUga2VybmVsIHNvdW5kIHN1cHBvcnQgYXMgbW9kdWxlLCBhcyBzaG93biBiZWxvdzoKKworQ09ORklHX1NPVU5EPW0KK0NPTkZJR19TT1VORF9PU1M9bQorQ09ORklHX1NPVU5EX1NCPW0KK0NPTkZJR19TT1VORF9BRExJQj1tCitDT05GSUdfU09VTkRfTVBVNDAxPW0KKyMgTWlrcm8kY2hhZnQgc291bmQgc3lzdGVtIChraW5kYSB1c2VmdWwgaGVyZSA7KSkJCitDT05GSUdfU09VTkRfTVNTPW0KKworCVRoZSAvZXRjL2lzYXBucC5jb25mIGZpbGUgd2lsbCBiZToKKworPHNuaXAgYmVsb3c+CisKKworKFJFQURQT1JUIDB4MDIwMykKKyhJU09MQVRFIFBSRVNFUlZFKQorKElERU5USUZZICopCisoVkVSQk9TSVRZIDIpCisoQ09ORkxJQ1QgKElPIEZBVEFMKShJUlEgRkFUQUwpKERNQSBGQVRBTCkoTUVNIEZBVEFMKSkgIyBvciBXQVJOSU5HCisoVkVSSUZZTEQgTikKKworCisjIFdTUyAKKworKENPTkZJR1VSRSBDTUkwMDAxLzE2Nzc3NDcyIChMRCAwCisoSU8gMCAoU0laRSA4KSAoQkFTRSAweDA1MzApKQorKElPIDEgKFNJWkUgOCkgKEJBU0UgMHgwMzg4KSkKKyhJTlQgMCAoSVJRIDcgKE1PREUgK0UpKSkKKyhETUEgMCAoQ0hBTk5FTCAwKSkKKyhOQU1FICJDTUkwMDAxLzE2Nzc3NDcyWzBde0NNSTgzMzAvQzNEIEF1ZGlvIEFkYXB0ZXJ9IikKKyhBQ1QgWSkKKykpCisKKyMgTVBVCisKKyhDT05GSUdVUkUgQ01JMDAwMS8xNjc3NzQ3MiAoTEQgMQorKElPIDAgKFNJWkUgMikgKEJBU0UgMHgwMzMwKSkKKyhJTlQgMCAoSVJRIDExIChNT0RFICtFKSkpCisoTkFNRSAiQ01JMDAwMS8xNjc3NzQ3MlsxXXtDTUk4MzMwL0MzRCBBdWRpbyBBZGFwdGVyfSIpCisoQUNUIFkpCispKQorCisjIEpveXN0aWNrCisKKyhDT05GSUdVUkUgQ01JMDAwMS8xNjc3NzQ3MiAoTEQgMgorKElPIDAgKFNJWkUgOCkgKEJBU0UgMHgwMjAwKSkKKyhOQU1FICJDTUkwMDAxLzE2Nzc3NDcyWzJde0NNSTgzMzAvQzNEIEF1ZGlvIEFkYXB0ZXJ9IikKKyhBQ1QgWSkKKykpCisKKyMgU291bmRCbGFzdGVyIAorIAorKENPTkZJR1VSRSBDTUkwMDAxLzE2Nzc3NDcyIChMRCAzCisoSU8gMCAoU0laRSAxNikgKEJBU0UgMHgwMjIwKSkKKyhJTlQgMCAoSVJRIDUgKE1PREUgK0UpKSkKKyhETUEgMCAoQ0hBTk5FTCAxKSkKKyhETUEgMSAoQ0hBTk5FTCA1KSkKKyhOQU1FICJDTUkwMDAxLzE2Nzc3NDcyWzNde0NNSTgzMzAvQzNEIEF1ZGlvIEFkYXB0ZXJ9IikKKyhBQ1QgWSkKKykpCisKKworKFdBSVRGT1JLRVkpCisKKzxlbmQgb2Ygc25pcD4KKworCVRoZSBtb2R1bGUgc2VxdWVuY2UgaXMgdHJpdmlhbDoKKworL3NiaW4vaW5zbW9kIHNvdW5kY29yZQorL3NiaW4vaW5zbW9kIHNvdW5kCisvc2Jpbi9pbnNtb2QgdWFydDQwMQorIyBpbnNlcnQgdGhpcyBmaXJzdAorL3NiaW4vaW5zbW9kIGFkMTg0OCBpbz0weDUzMCBpcnE9NyBkbWE9MCBzb3VuZHBybz0xCisjIFRoZSBzYiBtb2R1bGUgaXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlIGFkMTg0OCAoTWljcm9zb2Z0IFNvdW5kIFN5c3RlbSkKKyMgQW55aG93LCB0aGlzIGlzIGZ1bGwgZHVwbGV4IGFuZCBoYXMgTUlESQorL3NiaW4vaW5zbW9kIHNiIGlvPTB4MjIwIGRtYT0xIGRtYTE2PTUgaXJxPTUgbXB1X2lvPTB4MzMwCisKKworCitBbG1hIENoYW8gPGVseXNpYW5AZXRoZXJlYWwudG9yc2lvbi5vcmc+IHN1Z2dlc3RzIHRoZSBmb2xsb3dpbmcgaW4KK2EgL2V0Yy9tb2Rwcm9iZS5kLypjb25mIGZpbGU6CisKK2FsaWFzIHNvdW5kIGFkMTg0OAorYWxpYXMgc3ludGgwIG9wbDMKK29wdGlvbnMgYWQxODQ4IGlvPTB4NTMwIGlycT03IGRtYT0wIHNvdW5kcHJvPTEKK29wdGlvbnMgb3BsMyBpbz0weDM4OApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvRVNTIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvRVNTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiYTkzYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9FU1MKQEAgLTAsMCArMSwzNCBAQAorRG9jdW1lbnRhdGlvbiBmb3IgdGhlIEVTUyBBdWRpb0RyaXZlIGNoaXBzCisKK0luIDIuNCBrZXJuZWxzIHRoZSBTb3VuZEJsYXN0ZXIgZHJpdmVyIG5vdCBvbmx5IHRyaWVzIHRvIGRldGVjdCBhbiBFU1MgY2hpcCwgaXQKK3RyaWVzIHRvIGRldGVjdCB0aGUgdHlwZSBvZiBFU1MgY2hpcCB0b28uIFRoZSBjb3JyZWN0IGRldGVjdGlvbiBvZiB0aGUgY2hpcCAKK2RvZXNuJ3QgYWx3YXlzIHN1Y2NlZWQgaG93ZXZlciwgc28gdW5sZXNzIHlvdSB1c2UgdGhlIGtlcm5lbCBpc2FwbnAgZmFjaWxpdGllcworKGFuZCB5b3UgY2hpcCBpcyBwbnAgY2FwYWJsZSkgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIGlzIDIuMCBiZWhhdmlvdXIgd2hpY2gKK21lYW5zOiBvbmx5IGRldGVjdCBFUzY4OCBhbmQgRVMxNjg4LgorCitBbGwgRVNTIGNoaXBzIG5vdyBoYXZlIGEgcmVjb3JkaW5nIGxldmVsIHNldHRpbmcuIFRoaXMgaXMgYSBuZWVkLXRvLWhhdmUgZm9yCitwZW9wbGUgd2hvIHdhbnQgdG8gdXNlIHRoZWlyIEVTUyBmb3IgcmVjb3JkaW5nIHNvdW5kLgorCitFdmVyeSBjaGlwIHRoYXQncyBkZXRlY3RlZCBhcyBhIGxhdGVyLXRoYW4tZXMxNjg4IGNoaXAgaGFzIGEgNiBiaXRzIGxvZ2FyaXRobWljCittYXN0ZXIgdm9sdW1lIGNvbnRyb2wuCisKK0V2ZXJ5IGNoaXAgdGhhdCdzIGRldGVjdGVkIGFzIGEgRVMxODg3IG5vdyBoYXMgRnVsbCBEdXBsZXggc3VwcG9ydC4gTWFkZSBhIAorbGl0dGxlIHRlc3Rwcm9ncmFtIHRoYXQgc2hvd3MgdGhhdCBpcyB3b3JrcywgaGF2ZW4ndCBzZWVuIGEgcmVhbCBwcm9ncmFtIHRoYXQKK25lZWRzIHRoaXMgaG93ZXZlci4KKworRm9yIEVTUyBjaGlwcyBhbiBhZGRpdGlvbmFsIHBhcmFtZXRlciAiZXNzdHlwZSIgY2FuIGJlIHNwZWNpZmllZC4gVGhpcyBjb250cm9scwordGhlIChhdXRvKSBkZXRlY3Rpb24gb2YgdGhlIEVTUyBjaGlwcy4gSXQgY2FuIGhhdmUgMyBraW5kcyBvZiB2YWx1ZXM6CisKKy0xICAgQWN0IGxpa2UgMi4wIGtlcm5lbHM6IG9ubHkgZGV0ZWN0IEVTNjg4IG9yIEVTMTY4OC4KKzAJIFRyeSB0byBhdXRvLWRldGVjdCB0aGUgY2hpcCAobWF5IGZhaWwgZm9yIEVTMTY4OCkKKzY4OCAgVGhlIGNoaXAgd2lsbCBiZSB0cmVhdGVkIGFzICBFUzY4OAorMTY4OCAgLCwgICwsICAgLCwgICwsICAgICwsICAgLCwgRVMxNjg4CisxODY4ICAsLCAgLCwgICAsLCAgLCwgICAgLCwgICAsLCBFUzE4NjgKKzE4NjkgICwsICAsLCAgICwsICAsLCAgICAsLCAgICwsIEVTMTg2OQorMTc4OCAgLCwgICwsICAgLCwgICwsICAgICwsICAgLCwgRVMxNzg4CisxODg3ICAsLCAgLCwgICAsLCAgLCwgICAgLCwgICAsLCBFUzE4ODcKKzE4ODggICwsICAsLCAgICwsICAsLCAgICAsLCAgICwsIEVTMTg4OAorCitCZWNhdXNlIEZ1bGwgRHVwbGV4IGlzIHN1cHBvcnRlZCBmb3IgRVMxODg3IHlvdSBjYW4gc3BlY2lmeSBhIHNlY29uZCBETUEKK2NoYW5uZWwgYnkgc3BlY2lmeWluZyBtb2R1bGUgcGFyYW1ldGVyIGRtYTE2LiBJdCBjYW4gYmUgb25lIG9mOiAwLCAxLCAzIG9yIDUuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvb3NzL0VTUzE4NjggYi9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9FU1MxODY4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1ZTkyMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9FU1MxODY4CkBAIC0wLDAgKzEsNTUgQEAKK0RvY3VtZW50YXRpb24gZm9yIHRoZSBFU1MxODY4RiBBdWRpb0RyaXZlIFBuUCBzb3VuZCBjYXJkCisKK1RoZSBFU1MxODY4IHNvdW5kIGNhcmQgaXMgYSBQblAgRVNTMTY4OC1jb21wYXRpYmxlIDE2LWJpdCBzb3VuZCBjYXJkLgorCitJdCBzaG91bGQgYmUgYXV0b21hdGljYWxseSBkZXRlY3RlZCBieSB0aGUgTGludXggS2VybmVsIGlzYXBucCBzdXBwb3J0IHdoZW4geW91Citsb2FkIHRoZSBzYi5vIG1vZHVsZS4gT3RoZXJ3aXNlIHlvdSBzaG91bGQgdGFrZSBjYXJlIG9mOgorCisgICogIFRoZSBFU1MxODY4IGRvZXMgbm90IGFsbG93IHVzZSBvZiBhIDE2LWJpdCBETUEsIHRodXMgRE1BIDAsIDEsIDIsIGFuZCAzCisgICAgIG1heSBvbmx5IGJlIHVzZWQuCisKKyAgKiAgaXNhcG5wdG9vbHMgdmVyc2lvbiAxLjE0IGRvZXMgd29yayB3aXRoIEVTUzE4NjguICBFYXJsaWVyIHZlcnNpb25zIG1pZ2h0CisgICAgIG5vdC4KKworICAqICBTb3VuZCBzdXBwb3J0IE1VU1QgYmUgY29tcGlsZWQgYXMgTU9EVUxFUywgbm90IHN0YXRpY2FsbHkgbGlua2VkCisgICAgIGludG8gdGhlIGtlcm5lbC4KKworCitOT1RFOiB0aGlzIGlzIG9ubHkgbmVlZGVkIHdoZW4gbm90IHVzaW5nIHRoZSBrZXJuZWwgaXNhcG5wIHN1cHBvcnQhCisKK0ZvciBjb25maWd1cmluZyB0aGUgc291bmQgY2FyZCdzIEkvTyBhZGRyZXNzZXMsIElSUSBhbmQgRE1BLCBoZXJlIGlzIGEKK3NhbXBsZSBjb3B5IG9mIHRoZSBpc2FwbnAuY29uZiBkaXJlY3RpdmVzIHJlZ2FyZGluZyB0aGUgRVNTMTg2ODoKKworKENPTkZJR1VSRSBFU1MxODY4Ly0xIChMRCAxCisoSU8gMCAoQkFTRSAweDAyMjApKQorKElPIDEgKEJBU0UgMHgwMzg4KSkKKyhJTyAyIChCQVNFIDB4MDMzMCkpCisoRE1BIDAgKENIQU5ORUwgMSkpCisoSU5UIDAgKElSUSA1IChNT0RFICtFKSkpCisoQUNUIFkpCispKQorCisoZm9yIGEgZnVsbCB3b3JraW5nIGlzYXBucC5jb25mIGZpbGUsIHJlbWVtYmVyIHRoZQorKElTT0xBVEUpCisoSURFTlRJRlkgKikKK2F0IHRoZSBiZWdpbm5pbmcgYW5kIHRoZQorKFdBSVRGT1JLRVkpCithdCB0aGUgZW5kLikKKworSW4gdGhpcyBzZXR1cCwgdGhlIG1haW4gY2FyZCBJL08gaXMgMHgwMjIwLCBGTSBzeW50aGVzaXplciBpcyAweDAzODgsIGFuZAordGhlIE1QVS00MDEgTUlESSBwb3J0IGlzIGxvY2F0ZWQgYXQgMHgwMzMwLiAgSVJRIGlzIElSUSA1LCBETUEgaXMgY2hhbm5lbCAxLgorCitBZnRlciBjb25maWd1cmluZyB0aGUgc291bmQgY2FyZCB2aWEgaXNhcG5wLCB0byB1c2UgdGhlIGNhcmQgeW91IG11c3QgbG9hZAordGhlIHNvdW5kIG1vZHVsZXMgd2l0aCB0aGUgcHJvcGVyIEkvTyBpbmZvcm1hdGlvbi4gIEhlcmUgaXMgbXkgc2V0dXA6CisKKyMgRVNTMTg2OEYgQXVkaW9Ecml2ZSBpbml0aWFsaXphdGlvbgorCisvc2Jpbi9tb2Rwcm9iZSBzb3VuZAorL3NiaW4vaW5zbW9kIHVhcnQ0MDEKKy9zYmluL2luc21vZCBzYiBpbz0weDIyMCBpcnE9NSBkbWE9MSBkbWExNj0tMQorL3NiaW4vaW5zbW9kIG1wdTQwMSBpbz0weDMzMAorL3NiaW4vaW5zbW9kIG9wbDMgaW89MHgzODgKKy9zYmluL2luc21vZCB2X21pZGkKKworb3BsMyBpcyB0aGUgRk0gc3ludGhlc2l6ZXIKKy9zYmluL2luc21vZCBvcGwzIGlvPTB4Mzg4CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9JbnRyb2R1Y3Rpb24gYi9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9JbnRyb2R1Y3Rpb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJkYTJkOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvb3NzL0ludHJvZHVjdGlvbgpAQCAtMCwwICsxLDQ1OSBAQAorSW50cm9kdWN0aW9uCU5vdGVzIG9uIE1vZHVsYXIgU291bmQgRHJpdmVycyBhbmQgU291bmRjb3JlCitXYWRlIEhhbXB0b24gCisyLzE0LzIwMDEKKworUHVycG9zZTogIAorPT09PT09PT0KK1RoaXMgZG9jdW1lbnQgcHJvdmlkZXMgc29tZSBnZW5lcmFsIG5vdGVzIG9uIHRoZSBtb2R1bGFyIAorc291bmQgZHJpdmVycyBhbmQgdGhlaXIgY29uZmlndXJhdGlvbiwgYWxvbmcgd2l0aCB0aGUgCitzdXBwb3J0IG1vZHVsZXMgc291bmQubyBhbmQgc291bmRjb3JlLm8uCisKK05vdGUsIHNvbWUgb2YgdGhpcyBwcm9iYWJseSBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIFNvdW5kLUhPV1RPIQorCitOb3RlLCBzb3VuZGxvdy5vIHdhcyBwcmVzZW50IHdpdGggMi4yIGtlcm5lbHMgYnV0IGlzIG5vdCAKK3JlcXVpcmVkIGZvciAyLjQueCBrZXJuZWxzLiAgUmVmZXJlbmNlcyBoYXZlIGJlZW4gcmVtb3ZlZAordG8gdGhpcy4KKworCitDb3B5aW5nOgorPT09PT09PT0KK25vbmUKKworCitIaXN0b3J5OgorPT09PT09PT0KKzAuMS4wICAxMS8yMC8xOTk4ICBGaXJzdCB2ZXJzaW9uLCBkcmFmdAorMS4wLjAgIDExLzE5OTggICAgIEFsYW4gQ294IGNoYW5nZXMsIGluY29ycG9yYXRpb24gaW4gMi4yLjAKKyAgICAgICAgICAgICAgICAgICBhcyBEb2N1bWVudGF0aW9uL3NvdW5kL29zcy9JbnRyb2R1Y3Rpb24KKzEuMS4wICA2LzMwLzE5OTkgICBTZWNvbmQgdmVyc2lvbiwgYWRkZWQgbm90ZXMgb24gbWFraW5nIHRoZSBkcml2ZXJzLAorICAgICAgICAgICAgICAgICAgIGFkZGVkIGluZm8gb24gbXVsdGlwbGUgc291bmQgY2FyZHMgb2Ygc2ltaWxhciB0eXBlcyxdCisgICAgICAgICAgICAgICAgICAgYWRkZWQgbW9yZSBkaWFnbm9zdGljcyBpbmZvLCBhZGRlZCBpbmZvIGFib3V0IGVzZC4KKyAgICAgICAgICAgICAgICAgICBhZGRlZCBpbmZvIG9uIE9TUyBhbmQgQUxTQS4KKzEuMS4xICAxOTk5MTAzMQkgICBBZGRlZCBub3RlcyBvbiBzb3VuZC1zbG90LSBhbmQgc291bmQtc2VydmljZS4KKwkJCShBbGFuIENveCkKKzEuMS4yICAyMDAwMDkyMCAgICBNb2RpZmllZCBmb3IgS2VybmVsIDIuNCAoQ2hyaXN0b3BoIEhlbGx3aWcpCisxLjEuMyAgMjAwMTAyMTQgICAgTWlub3Igbm90ZXMgYW5kIGNvcnJlY3Rpb25zIChXYWRlIEhhbXB0b24pCisgICAgICAgICAgICAgICAgICAgQWRkZWQgZXhhbXBsZXMgb2Ygc291bmQtc2xvdC0wLCBldGMuCisKKworTW9kdWxhciBTb3VuZCBEcml2ZXJzOgorPT09PT09PT09PT09PT09PT09PT09PQorCitUaGFua3MgdG8gdGhlIEdSRUFUIHdvcmsgYnkgQWxhbiBDb3ggKGFsYW5AbHhvcmd1ay51a3V1Lm9yZy51ayksCisKK1tBbmQgT2xlZyBEcm9raW4sIFRob21hcyBTYWlsZXIsIEFuZHJldyBWZWxpYXRoIGFuZCBtb3JlIHRoYW4gYSBmZXcgCisgb3RoZXJzIC0gbm90IHRvIG1lbnRpb24gSGFubnUncyBvcmlnaW5hbCBjb2RlIGJlaW5nIGRlc2lnbmVkIHdlbGwKKyBlbm91Z2ggdG8gY29wZSB3aXRoIHRoYXQga2luZCBvZiBjaG9wcGluZyB1cF0oQWxhbikKKwordGhlIHN0YW5kYXJkIExpbnV4IGtlcm5lbHMgc3VwcG9ydCBhIG1vZHVsYXIgc291bmQgZHJpdmVyLiAgRnJvbQorQWxhbidzIGNvbW1lbnRzIGluIGxpbnV4L2RyaXZlcnMvc291bmQvUkVBRE1FLkZJUlNUOgorCisgIFRoZSBtb2R1bGFyIHNvdW5kIGRyaXZlciBwYXRjaGVzIHdlcmUgZnVuZGVkIGJ5IFJlZCBIYXQgU29mdHdhcmUgCisgICh3d3cucmVkaGF0LmNvbSkuIFRoZSBzb3VuZCBkcml2ZXIgaGVyZSBpcyB0aHVzIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiAKKyAgSGFubnUncyBjb2RlLiBQbGVhc2UgYmVhciB0aGF0IGluIG1pbmQgd2hlbiBjb25zaWRlcmluZyB0aGUgYXBwcm9wcmlhdGUKKyAgZm9ydW1zIGZvciBidWcgcmVwb3J0aW5nLgorCitUaGUgbW9kdWxhciBzb3VuZCBkcml2ZXJzIG1heSBiZSBsb2FkZWQgdmlhIGluc21vZCBvciBtb2Rwcm9iZS4gIAorVG8gc3VwcG9ydCBhbGwgdGhlIHZhcmlvdXMgc291bmQgbW9kdWxlcywgdGhlcmUgYXJlIHR3byBnZW5lcmFsIAorc3VwcG9ydCBtb2R1bGVzIHRoYXQgbXVzdCBiZSBsb2FkZWQgZmlyc3Q6CisgCisgICBzb3VuZGNvcmUubzogICBUb3AgbGV2ZWwgaGFuZGxlciBmb3IgdGhlIHNvdW5kIHN5c3RlbSwgcHJvdmlkZXMKKyAgICAgICAgICAgICAgICAgIGEgc2V0IG9mIGZ1bmN0aW9ucyBmb3IgcmVnaXN0cmF0aW9uIG9mIGRldmljZXMKKyAgICAgICAgICAgICAgICAgIGJ5IHR5cGUuCisKKyAgIHNvdW5kLm86ICAgICAgIENvbW1vbiBzb3VuZCBmdW5jdGlvbnMgcmVxdWlyZWQgYnkgYWxsIG1vZHVsZXMuCisKK0ZvciB0aGUgc3BlY2lmaWMgc291bmQgbW9kdWxlcyAoZS5nLiwgc2IubyBmb3IgdGhlIFNvdW5kYmxhc3RlciksIAorcmVhZCB0aGUgZG9jdW1lbnRhdGlvbiBvbiB0aGF0IG1vZHVsZSB0byBkZXRlcm1pbmUgd2hhdCBvcHRpb25zCithcmUgYXZhaWxhYmxlLCBmb3IgZXhhbXBsZSBJUlEsIGFkZHJlc3MsIERNQS4KKworV2FybmluZywgdGhlIG9wdGlvbnMgZm9yIGRpZmZlcmVudCBjYXJkcyBzb21ldGltZSB1c2UgZGlmZmVyZW50IG5hbWVzIAorZm9yIHRoZSBzYW1lIG9yIGEgc2ltaWxhciBmZWF0dXJlIChkbWExPSB2ZXJzdXMgZG1hMTY9KS4gIEFzIGEgbGFzdCAKK3Jlc29ydCwgaW5zcGVjdCB0aGUgY29kZSAoc2VhcmNoIGZvciBtb2R1bGVfcGFyYW0pLgorCitOb3RlczoKKworMS4gIFRoZXJlIGlzIGEgbmV3IE9wZW5Tb3VyY2Ugc291bmQgZHJpdmVyIGNhbGxlZCBBTFNBIHdoaWNoIGlzCisgICAgY3VycmVudGx5IHVuZGVyIGRldmVsb3BtZW50OiAgaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnLworICAgIFRoZSBBTFNBIGRyaXZlcnMgc3VwcG9ydCBzb21lIG5ld2VyIGhhcmR3YXJlIHRoYXQgbWF5IG5vdCAKKyAgICBiZSBzdXBwb3J0ZWQgYnkgdGhpcyBzb3VuZCBkcml2ZXIgYW5kIGFsc28gcHJvdmlkZSBzb21lIAorICAgIGFkZGl0aW9uYWwgZmVhdHVyZXMuCisKKzIuICBUaGUgY29tbWVyY2lhbCBPU1MgZHJpdmVyIG1heSBiZSBvYnRhaW5lZCBmcm9tIHRoZSBzaXRlOgorICAgIGh0dHA6Ly93d3cub3BlbnNvdW5kLmNvbS4gIFRoaXMgbWF5IGJlIHVzZWQgZm9yIGNhcmRzIHRoYXQKKyAgICBhcmUgdW5zdXBwb3J0ZWQgYnkgdGhlIGtlcm5lbCBkcml2ZXIsIG9yIG1heSBiZSB1c2VkCisgICAgYnkgb3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMuICAKKworMy4gIFRoZSBlbmxpZ2h0ZW5tZW50IHNvdW5kIGRhZW1vbiBtYXkgYmUgdXNlZCBmb3IgcGxheWluZworICAgIG11bHRpcGxlIHNvdW5kcyBhdCB0aGUgc2FtZSB0aW1lIHZpYSBhIHNpbmdsZSBjYXJkLCBlbGltaW5hdGluZworICAgIHNvbWUgb2YgdGhlIHJlcXVpcmVtZW50cyBmb3IgbXVsdGlwbGUgc291bmQgY2FyZCBzeXN0ZW1zLiAgRm9yCisgICAgbW9yZSBpbmZvcm1hdGlvbiwgc2VlOiAgaHR0cDovL3d3dy50dXgub3JnL35yaWNkdWRlL0Vzb3VuRC5odG1sICAKKyAgICBUaGUgImVzZCIgcHJvZ3JhbSBtYXkgYmUgdXNlZCB3aXRoIHRoZSByZWFsLXBsYXllciBhbmQgbXBlZyAKKyAgICBwbGF5ZXJzIGxpa2UgbXBnMTIzIGFuZCB4MTFhbXAuICBUaGUgbmV3ZXIgcmVhbC1wbGF5ZXIgCisgICAgYW5kIHNvbWUgZ2FtZXMgZXZlbiBpbmNsdWRlIGJ1aWx0LWluIHN1cHBvcnQgZm9yIEVTRCEKKworCitCdWlsZGluZyB0aGUgTW9kdWxlczoKKz09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGRvY3VtZW50IGRvZXMgbm90IHByb3ZpZGUgZnVsbCBkZXRhaWxzIG9uIGJ1aWxkaW5nIHRoZSAKK2tlcm5lbCwgZXRjLiAgVGhlIG5vdGVzIGJlbG93IGFwcGx5IG9ubHkgdG8gbWFraW5nIHRoZSBrZXJuZWwKK3NvdW5kIG1vZHVsZXMuICAgSWYgdGhpcyBjb25mbGljdHMgd2l0aCB0aGUga2VybmVsJ3MgUkVBRE1FLAordGhlIFJFQURNRSB0YWtlcyBwcmVjZWRlbmNlLiAKKworMS4gIFRvIG1ha2UgdGhlIGtlcm5lbCBzb3VuZCBtb2R1bGVzLCBjZCB0byB5b3VyIC91c3Ivc3JjL2xpbnV4CisgICAgZGlyZWN0b3J5ICh0eXBpY2FsbHkpIGFuZCB0eXBlIG1ha2UgY29uZmlnLCBtYWtlIG1lbnVjb25maWcsIAorICAgIG9yIG1ha2UgeGNvbmZpZyAodG8gc3RhcnQgdGhlIGNvbW1hbmQgbGluZSwgZGlhbG9nLCBvciB4LWJhc2VkCisgICAgY29uZmlndXJhdGlvbiB0b29sKS4gIAorCisyLiAgU2VsZWN0IHRoZSBTb3VuZCBvcHRpb24gYW5kIGEgZGlhbG9nIHdpbGwgYmUgZGlzcGxheWVkLiAgCisKKzMuICBTZWxlY3QgTSAobW9kdWxlKSBmb3IgIlNvdW5kIGNhcmQgc3VwcG9ydCIuCisKKzQuICBTZWxlY3QgeW91ciBzb3VuZCBkcml2ZXIocykgYXMgYSBtb2R1bGUuICBGb3IgUHJvQXVkaW8sIFNvdW5kCisgICAgQmxhc3RlciwgZXRjLiwgc2VsZWN0IE0gKG1vZHVsZSkgZm9yIE9TUyBzb3VuZCBtb2R1bGVzLgorICAgIFt0aGFua3MgdG8gTWFydmluIFN0b2RvbHNreSA8c3RvZG9sc2tAZXJvbHMuY29tPl1BCisKKzUuICBNYWtlIHRoZSBrZXJuZWwgKGUuZy4sIG1ha2UgYnpJbWFnZSksIGFuZCBpbnN0YWxsIHRoZSBrZXJuZWwuCisKKzYuICBNYWtlIHRoZSBtb2R1bGVzIGFuZCBpbnN0YWxsIHRoZW0gKG1ha2UgbW9kdWxlczsgbWFrZSBtb2R1bGVzX2luc3RhbGwpLgorCitOb3RlLCBmb3IgMi41Lngga2VybmVscywgbWFrZSBzdXJlIHlvdSBoYXZlIHRoZSBuZXdlciBtb2R1bGUtaW5pdC10b29scyAKK2luc3RhbGxlZCBvciBtb2R1bGVzIHdpbGwgbm90IGJlIGxvYWRlZCBwcm9wZXJseS4gIDIuNS54IHJlcXVpcmVzIGFuCit1cGRhdGVkIG1vZHVsZS1pbml0LXRvb2xzLgorCisKK1BsdWcgYW5kIFBsYXkgKFBuUDoKKz09PT09PT09PT09PT09PT09PT0KKworSWYgdGhlIHNvdW5kIGNhcmQgaXMgYW4gSVNBIFBuUCBjYXJkLCBpc2FwbnAgbWF5IGJlIHVzZWQKK3RvIGNvbmZpZ3VyZSB0aGUgY2FyZC4gIFNlZSB0aGUgZmlsZSBpc2FwbnAudHh0IGluIHRoZSAKK2RpcmVjdG9yeSBvbmUgbGV2ZWwgdXAgKGUuZy4sIC91c3Ivc3JjL2xpbnV4L0RvY3VtZW50YXRpb24pLgorCitBbHNvIHRoZSAyLjQueCBrZXJuZWxzIHByb3ZpZGUgUG5QIGNhcGFiaWxpdGllcywgc2VlIHRoZSAKK2ZpbGUgTkVXUyBpbiB0aGlzIGRpcmVjdG9yeS4KKworUENJIHNvdW5kIGNhcmRzIGFyZSBoaWdobHkgcmVjb21tZW5kZWQsIGFzIHRoZXkgYXJlIGZhciAKK2Vhc2llciB0byBjb25maWd1cmUgYW5kIGZyb20gd2hhdCBJIGhhdmUgcmVhZCwgdGhleSB1c2UKK2xlc3MgcmVzb3VyY2VzIGFuZCBhcmUgbW9yZSBDUFUgZWZmaWNpZW50LgorCisKK0lOU01PRDoKKz09PT09PT0KKworSWYgbG9hZGluZyB2aWEgaW5zbW9kLCB0aGUgY29tbW9uIG1vZHVsZXMgbXVzdCBiZSBsb2FkZWQgaW4gdGhlIAorb3JkZXIgYmVsb3cgQkVGT1JFIGxvYWRpbmcgdGhlIG90aGVyIHNvdW5kIG1vZHVsZXMuICBUaGUgY2FyZC1zcGVjaWZpYworbW9kdWxlcyBtYXkgdGhlbiBiZSBsb2FkZWQgKG1vc3QgcmVxdWlyZSBwYXJhbWV0ZXJzKS4gIEZvciBleGFtcGxlLAorSSB1c2UgdGhlIGZvbGxvd2luZyB2aWEgYSBzaGVsbCBzY3JpcHQgdG8gbG9hZCBteSBTb3VuZEJsYXN0ZXI6CisKK1NCX0JBU0U9MHgyNDAKK1NCX0lSUT05CitTQl9ETUE9MworU0JfRE1BMj01CitTQl9NUFU9MHgzMDAKKyMKK2VjaG8gU3RhcnRpbmcgc291bmQKKy9zYmluL2luc21vZCBzb3VuZGNvcmUKKy9zYmluL2luc21vZCBzb3VuZCAgCisjCitlY2hvIFN0YXJ0aW5nIHNvdW5kIGJsYXN0ZXIuLi4uCisvc2Jpbi9pbnNtb2QgdWFydDQwMQorL3NiaW4vaW5zbW9kIHNiIGlvPSRTQl9CQVNFIGlycT0kU0JfSVJRIGRtYT0kU0JfRE1BIGRtYTE2PSRTQl9ETUEyIG1wdV9pbz0kU0JfTVAKKworV2hlbiB1c2luZyBzb3VuZCBhcyBhIG1vZHVsZSwgSSB0eXBpY2FsbHkgcHV0IHRoZXNlIGNvbW1hbmRzCitpbiBhIGZpbGUgc3VjaCBhcyAvcm9vdC9zb3VuZG9uLnNoLgorCisKK01PRFBST0JFOgorPT09PT09PT09CisKK0lmIGxvYWRpbmcgdmlhIG1vZHByb2JlLCB0aGVzZSBjb21tb24gZmlsZXMgYXJlIGF1dG9tYXRpY2FsbHkgbG9hZGVkIHdoZW4KK3JlcXVlc3RlZCBieSBtb2Rwcm9iZS4gIEZvciBleGFtcGxlLCBteSAvZXRjL21vZHByb2JlLmQvb3NzLmNvbmYgY29udGFpbnM6CisKK2FsaWFzIHNvdW5kIHNiIAorb3B0aW9ucyBzYiBpbz0weDI0MCBpcnE9OSBkbWE9MyBkbWExNj01IG1wdV9pbz0weDMwMAorCitBbGwgeW91IG5lZWQgdG8gZG8gdG8gbG9hZCB0aGUgbW9kdWxlIGlzOgorCisJL3NiaW4vbW9kcHJvYmUgc2IKKworCitTb3VuZCBTdGF0dXM6Cis9PT09PT09PT09PT09CisKK1RoZSBzdGF0dXMgb2Ygc291bmQgbWF5IGJlIHJlYWQvY2hlY2tlZCBieToKKyAgICAgICAgY2F0IChhbnlmaWxlKS5hdSA+L2Rldi9hdWRpbworCitbV1dIOiAgVGhpcyBtYXkgbm90IHdvcmsgcHJvcGVybHkgZm9yIFNvdW5kQmxhc3RlciBQQ0kgMTI4IGNhcmRzCitzdWNoIGFzIHRoZSBlczEzNzAvMSAoc2VlIHRoZSBlczEzNzAvMSBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeSkgCithcyB0aGV5IGRvIG5vdCBhdXRvbWF0aWNhbGx5IHN1cHBvcnQgdUxhdyBvbiAvZGV2L2F1ZGlvLl0KKworVGhlIHN0YXR1cyBvZiB0aGUgbW9kdWxlcyBhbmQgd2hpY2ggbW9kdWxlcyBkZXBlbmQgb24gCit3aGljaCBvdGhlciBtb2R1bGVzIG1heSBiZSBjaGVja2VkIGJ5OgorCS9zYmluL2xzbW9kCisKKy9zYmluL2xzbW9kIHNob3VsZCBzaG93IHNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmc6CisJc2IgICAgICAgICAgICAgICAgICAgICAyNjI4MCAgIDAgCisJdWFydDQwMSAgICAgICAgICAgICAgICAgNTY0MCAgIDAgIFtzYl0KKwlzb3VuZCAgICAgICAgICAgICAgICAgIDU3MTEyICAgMCAgW3NiIHVhcnQ0MDFdCisJc291bmRjb3JlICAgICAgICAgICAgICAgMTk2OCAgIDggIFtzYiBzb3VuZF0KKworCitSZW1vdmluZyBTb3VuZDogCis9PT09PT09PT09PT09PT0gCisKK1NvdW5kIG1heSBiZSByZW1vdmVkIGJ5IHVzaW5nIC9zYmluL3JtbW9kIGluIHRoZSByZXZlcnNlIG9yZGVyCitpbiB3aGljaCB5b3UgbG9hZCB0aGUgbW9kdWxlcy4gIE5vdGUsIGlmIGEgcHJvZ3JhbSBoYXMgYSBzb3VuZCBkZXZpY2UKK29wZW4gKGUuZy4sIHhtaXhlciksIHRoYXQgbW9kdWxlIChhbmQgdGhlIG1vZHVsZXMgb24gd2hpY2ggaXQgCitkZXBlbmRzKSBtYXkgbm90IGJlIHVubG9hZGVkLgorCitGb3IgZXhhbXBsZSwgSSB1c2UgdGhlIGZvbGxvd2luZyB0byByZW1vdmUgbXkgU291bmRibGFzdGVyIChybW1vZAoraW4gdGhlIHJldmVyc2Ugb3JkZXIgaW4gd2hpY2ggSSBsb2FkZWQgdGhlIG1vZHVsZXMpOgorCisvc2Jpbi9ybW1vZCBzYgorL3NiaW4vcm1tb2QgdWFydDQwMQorL3NiaW4vcm1tb2Qgc291bmQKKy9zYmluL3JtbW9kIHNvdW5kY29yZQorCitXaGVuIHVzaW5nIHNvdW5kIGFzIGEgbW9kdWxlLCBJIHR5cGljYWxseSBwdXQgdGhlc2UgY29tbWFuZHMKK2luIGEgc2NyaXB0IHN1Y2ggYXMgL3Jvb3Qvc291bmRvZmYuc2guCisKKworUmVtb3ZpbmcgU291bmQgZm9yIHVzZSB3aXRoIE9TUzogCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAKKworSWYgeW91IGdldCByZWFsbHkgc3R1Y2sgb3IgaGF2ZSBhIGNhcmQgdGhhdCB0aGUga2VybmVsIG1vZHVsZXMKK3dpbGwgbm90IHN1cHBvcnQsIHlvdSBjYW4gZ2V0IGEgY29tbWVyY2lhbCBzb3VuZCBkcml2ZXIgZnJvbQoraHR0cDovL3d3dy5vcGVuc291bmQuY29tLiAgQmVmb3JlIGxvYWRpbmcgdGhlIGNvbW1lcmNpYWwgc291bmQKK2RyaXZlciwgeW91IHNob3VsZCBkbyB0aGUgZm9sbG93aW5nOgorCisxLiAgcmVtb3ZlIHNvdW5kIG1vZHVsZXMgKGRldGFpbGVkIGFib3ZlKQorMi4gIHJlbW92ZSB0aGUgc291bmQgbW9kdWxlcyBmcm9tIC9ldGMvbW9kcHJvYmUuZC8qLmNvbmYKKzMuICBtb3ZlIHRoZSBzb3VuZCBtb2R1bGVzIGZyb20gL2xpYi9tb2R1bGVzLzxrZXJuZWw+L21pc2MKKyAgICAoZm9yIGV4YW1wbGUsIEkgbWFrZSBhIC9saWIvbW9kdWxlcy88a2VybmVsPi9taXNjL3RtcAorICAgIGRpcmVjdG9yeSBhbmQgY29weSB0aGUgc291bmQgbW9kdWxlIGZpbGVzIHRvIHRoYXQgCisgICAgZGlyZWN0b3J5KS4KKworCitNdWx0aXBsZSBTb3VuZCBDYXJkczoKKz09PT09PT09PT09PT09PT09PT09PQorCitUaGUgc291bmQgZHJpdmVycyB3aWxsIHN1cHBvcnQgbXVsdGlwbGUgc291bmQgY2FyZHMgYW5kIHRoZXJlCithcmUgc29tZSBncmVhdCBhcHBsaWNhdGlvbnMgbGlrZSBtdWx0aXRyYWNrIHRoYXQgc3VwcG9ydCB0aGVtLiAgCitUeXBpY2FsbHksIHlvdSBuZWVkIHR3byBzb3VuZCBjYXJkcyBvZiBkaWZmZXJlbnQgdHlwZXMuICBOb3RlLCB0aGlzCit1c2VzIG1vcmUgcHJlY2lvdXMgaW50ZXJydXB0cyBhbmQgRE1BIGNoYW5uZWxzIGFuZCBzb21ldGltZXMgCitjYW4gYmUgYSBjb25maWd1cmF0aW9uIG5pZ2h0bWFyZS4gIEkgaGF2ZSBoZWFyZCByZXBvcnRzIG9mIDMtNAorc291bmQgY2FyZHMgKHR5cGljYWxseSBJIG9ubHkgdXNlIDIpLiAgWW91IGNhbiBzb21ldGltZXMgdXNlCittdWx0aXBsZSBQQ0kgc291bmQgY2FyZHMgb2YgdGhlIHNhbWUgdHlwZS4KKworT24gbXkgbWFjaGluZSBJIGhhdmUgdHdvIHNvdW5kIGNhcmRzIChjczQyMzIgYW5kIFNvdW5kYmxhc3RlciBWaWJyYQorMTYpLiAgQnkgbG9hZGluZyBzb3VuZCBhcyBtb2R1bGVzLCBJIGNhbiBjb250cm9sIHdoaWNoIGlzIHRoZSBmaXJzdAorc291bmQgZGV2aWNlICgvZGV2L2RzcCwgL2Rldi9hdWRpbywgL2Rldi9taXhlcikgYW5kIHdoaWNoIGlzIAordGhlIHNlY29uZC4gIE5vcm1hbGx5LCB0aGUgY3M0MjMyIChEZWxsIHNvdW5kIG9uIHRoZSBtb3RoZXJib2FyZCkgCit3b3VsZCBiZSB0aGUgZmlyc3Qgc291bmQgZGV2aWNlLCBidXQgSSBwcmVmZXIgdGhlIFNvdW5kYmxhc3Rlci4gIAorQWxsIHlvdSBoYXZlIHRvIGRvIGlzIHRvIGxvYWQgdGhlIG9uZSB5b3Ugd2FudCBhcyAvZGV2L2RzcCAKK2ZpcnN0IChpbiBteSBjYXNlICJzYiIpIGFuZCB0aGVuIGxvYWQgdGhlIG90aGVyIG9uZQorKGluIG15IGNhc2UgImNzNDIzMiIpLgorCitJZiB5b3UgaGF2ZSB0d28gY2FyZHMgb2YgdGhlIHNhbWUgdHlwZSB0aGF0IGFyZSBqdW1wZXJlZCAKK2NhcmRzIG9yIGRpZmZlcmVudCBQblAgcmV2aXNpb25zLCB5b3UgbWF5IGxvYWQgdGhlIHNhbWUgCittb2R1bGUgdHdpY2UuICBGb3IgZXhhbXBsZSwgSSBoYXZlIGEgU291bmRCbGFzdGVyIHZpYnJhIDE2CithbmQgYW4gb2xkZXIgU291bmRCbGFzdGVyIDE2IChqdW1wZXJzKS4gIFRvIGxvYWQgdGhlIG1vZHVsZQordHdpY2UsIHlvdSBuZWVkIHRvIGRvIHRoZSBmb2xsb3dpbmc6CisKKzEuICBDb3B5IHRoZSBzb3VuZCBtb2R1bGVzIHRvIGEgbmV3IG5hbWUuICBGb3IgZXhhbXBsZQorICAgIHNiLm8gY291bGQgYmUgY29waWVkIChvciBzeW1saW5rZWQpIHRvIHNiMS5vIGZvciB0aGUKKyAgICBzZWNvbmQgU291bmRCbGFzdGVyLgorCisyLiAgTWFrZSBhIHNlY29uZCBlbnRyeSBpbiAvZXRjL21vZHByb2JlLmQvKmNvbmYsIGZvciBleGFtcGxlLAorICAgIHNvdW5kMSBvciBzYjEuICBUaGlzIHNlY29uZCBlbnRyeSBzaG91bGQgcmVmZXIgdG8gdGhlCisgICAgbmV3IG1vZHVsZSBuYW1lcyBmb3IgZXhhbXBsZSBzYjEsIGFuZCBzaG91bGQgaW5jbHVkZQorICAgIHRoZSBJL08sIGV0Yy4gZm9yIHRoZSBzZWNvbmQgc291bmQgY2FyZC4KKworMy4gIFVwZGF0ZSB5b3VyIHNvdW5kb24uc2ggc2NyaXB0LCBldGMuCisKK1dhcm5pbmc6ICBJIGhhdmUgbmV2ZXIgYmVlbiBhYmxlIHRvIGdldCB0d28gUG5QIHNvdW5kIGNhcmRzIG9mIHRoZQorc2FtZSB0eXBlIHRvIGxvYWQgYXQgdGhlIHNhbWUgdGltZS4gIEkgaGF2ZSB0cmllZCB0aGlzIHNldmVyYWwgdGltZXMKK3dpdGggdGhlIFNvdW5kYmxhc3RlciBWaWJyYSAxNiBjYXJkcy4gIE9TUyBoYXMgaW5kaWNhdGVkIHRoYXQgdGhpcworaXMgYSBQblAgcHJvYmxlbS4uLi4gIElmIGFueW9uZSBoYXMgYW55IGx1Y2sgZG9pbmcgdGhpcywgcGxlYXNlIAorc2VuZCBtZSBhbiBFLU1BSUwuICBQQ0kgc291bmQgY2FyZHMgc2hvdWxkIG5vdCBoYXZlIHRoaXMgcHJvYmxlbS5hCitTaW5jZSB0aGlzIHdhcyBvcmlnaW5hbGx5IHJlbGVhc2UsIEkgaGF2ZSByZWNlaXZlZCBhIGNvdXBsZSBvZiAKK21haWxzIGZyb20gcGVvcGxlIHdobyBoYXZlIGFjY29tcGxpc2hlZCB0aGlzIQorCitOT1RFOiBJbiBMaW51eCAyLjQgdGhlIFNvdW5kIEJsYXN0ZXIgZHJpdmVyIChhbmQgb25seSB0aGlzIG9uZSB5ZXQpCitzdXBwb3J0cyBtdWx0aXBsZSBjYXJkcyB3aXRoIG9uZSBtb2R1bGUgYnkgZGVmYXVsdC4KK1JlYWQgdGhlIGZpbGUgJ1NvdW5kYmxhc3RlcicgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGRldGFpbHMuCisKKworU291bmQgUHJvYmxlbXM6Cis9PT09PT09PT09PT09PT0KKworRmlyc3QgUlRGTSAoaW5jbHVkaW5nIHRoZSB0cm91Ymxlc2hvb3Rpbmcgc2VjdGlvbiAKK2luIHRoZSBTb3VuZC1IT1dUTykuIAorCisxKSAgSWYgeW91IGFyZSBoYXZpbmcgcHJvYmxlbXMgbG9hZGluZyB0aGUgbW9kdWxlcyAoZm9yCisgICAgZXhhbXBsZSwgaWYgeW91IGdldCBkZXZpY2UgY29uZmxpY3QgZXJyb3JzKSB0cnkgdGhlCisgICAgZm9sbG93aW5nOgorCisgIEEpICBJZiB5b3UgaGF2ZSBXaW45NSBvciBOVCBvbiB0aGUgc2FtZSBjb21wdXRlciwgIAorICAgICAgd3JpdGUgZG93biB3aGF0IGFkZHJlc3NlcywgSVJRLCBhbmQgRE1BIGNoYW5uZWxzCisgICAgICB0aG9zZSB3ZXJlIHVzaW5nIGZvciB0aGUgc2FtZSBoYXJkd2FyZS4gIFlvdSBwcm9iYWJseSAKKyAgICAgIGNhbiB1c2UgdGhlc2UgYWRkcmVzc2VzLCBJUlFzLCBhbmQgRE1BIGNoYW5uZWxzLgorICAgICAgWW91IHNob3VsZCByZWFsbHkgZG8gdGhpcyBCRUZPUkUgYXR0ZW1wdGluZyB0byBnZXQKKyAgICAgIHNvdW5kIHdvcmtpbmchCisgIAorICBCKSAgQ2hlY2sgKGNhdCkgL3Byb2MvaW50ZXJydXB0cywgL3Byb2MvaW9wb3J0cywKKyAgICAgIGFuZCAvcHJvYy9kbWEuICBBcmUgeW91IHRyeWluZyB0byB1c2UgYW4gYWRkcmVzcywKKyAgICAgIElSUSBvciBETUEgcG9ydCB0aGF0IGFub3RoZXIgZGV2aWNlIGlzIHVzaW5nPworICAKKyAgQykgIENoZWNrIChjYXQpIC9wcm9jL2lzYXBucAorICAKKyAgRCkgIEluc3BlY3QgeW91ciAvdmFyL2xvZy9tZXNzYWdlcyBmaWxlLiAgT2Z0ZW4gdGhhdCB3aWxsIAorICAgICAgaW5kaWNhdGUgd2hhdCBJUlEgb3IgSU8gcG9ydCBjb3VsZCBub3QgYmUgb2J0YWluZWQuCisgIAorICBFKSAgVHJ5IGFub3RoZXIgcG9ydCBvciBJUlEuICBOb3RlIHRoaXMgbWF5IGludm9sdmUgCisgICAgICB1c2luZyB0aGUgUG5QIHRvb2xzIHRvIG1vdmUgdGhlIHNvdW5kIGNhcmQgdG8gCisgICAgICBhbm90aGVyIGxvY2F0aW9uLiAgU29tZXRpbWVzIHRoaXMgaXMgdGhlIG9ubHkgd2F5IAorICAgICAgYW5kIGl0IGlzIG1vcmUgb3IgbGVzcyB0cmlhbCBhbmQgZXJyb3IuCisKKzIpICBJZiB5b3UgZ2V0IG1vdG9yLWJvYXRpbmcgKHRoZSBzYW1lIHNvdW5kIG9yIHBhcnQgb2YgYSAKKyAgICBzb3VuZCBjbGlwIHJlcGVhdGVkKSwgeW91IHByb2JhYmx5IGhhdmUgZWl0aGVyIGFuIElSUQorICAgIG9yIERNQSBjb25mbGljdC4gIE1vdmUgdGhlIGNhcmQgdG8gYW5vdGhlciBJUlEgb3IgRE1BCisgICAgcG9ydC4gIFRoaXMgaGFzIGhhcHBlbmVkIHRvIG1lIHdoZW4gcGxheWluZyBsb25nIGZpbGVzIAorICAgIHdoZW4gSSBoYWQgYW4gSVJRIGNvbmZsaWN0LgorCiszLiAgSWYgeW91IGdldCBkcm9wb3V0cyBvciBwYXVzZXMgd2hlbiBwbGF5aW5nIGhpZ2ggc2FtcGxlCisgICAgcmF0ZSBmaWxlcyBzdWNoIGFzIHVzaW5nIG1wZzEyMyBvciB4MTFhbXAveG1tcywgeW91IG1heSAKKyAgICBoYXZlIHRvbyBzbG93IG9mIGEgQ1BVIGFuZCBtYXkgaGF2ZSB0byB1c2UgdGhlIG9wdGlvbnMgdG8gCisgICAgcGxheSB0aGUgZmlsZXMgYXQgMS8yIHNwZWVkLiAgRm9yIGV4YW1wbGUsIHlvdSBtYXkgdXNlCisgICAgdGhlIC0yIG9yIC00IG9wdGlvbiBvbiBtcGcxMjMuICBZb3UgbWF5IGFsc28gZ2V0IHRoaXMKKyAgICB3aGVuIHRyeWluZyB0byBwbGF5IG1wZWcgZmlsZXMgc3RvcmVkIG9uIGEgQ0QtUk9NCisgICAgKG15IFRvc2hpYmEgVDgwMDAgUElJLzM2NiBzb21ldGltZXMgaGFzIHRoaXMgcHJvYmxlbSkuCisKKzQuICBJZiB5b3UgZ2V0ICJjYW5ub3QgYWNjZXNzIGRldmljZSIgZXJyb3JzLCB5b3VyIC9kZXYvZHNwCisgICAgZmlsZXMsIGV0Yy4gbWF5IGJlIHNldCB0byBvd25lciByb290LCBtb2RlIDYwMC4gIFlvdSAKKyAgICBtYXkgaGF2ZSB0byB1c2UgdGhlIGNvbW1hbmQ6CisgICAgICBjaG1vZCA2NjYgL2Rldi9kc3AgL2Rldi9taXhlciAvZGV2L2F1ZGlvCisKKzUuICBJZiB5b3UgZ2V0ICJkZXZpY2UgYnVzeSIgZXJyb3JzLCBhbm90aGVyIHByb2dyYW0gaGFzIHRoZQorICAgIHNvdW5kIGRldmljZSBvcGVuLiAgRm9yIGV4YW1wbGUsIGlmIHVzaW5nIHRoZSBFbmxpZ2h0ZW5tZW50CisgICAgc291bmQgZGFlbW9uICJlc2QiLCB0aGUgImVzZCIgcHJvZ3JhbSBoYXMgdGhlIHNvdW5kIGRldmljZS4KKyAgICBJZiB1c2luZyAiZXNkIiwgcGxlYXNlIFJURk0gdGhlIGRvY3Mgb24gRVNELiAgRm9yIGV4YW1wbGUsCisgICAgZXNkZHNwIDxwcm9ncmFtPiBtYXkgYmUgdXNlZCB0byBwbGF5IGZpbGVzIHZpYSBhIG5vbi1lc2QKKyAgICBhd2FyZSBwcm9ncmFtLgorCis2KSAgQXNrIGZvciBoZWxwIG9uIHRoZSBzb3VuZCBsaXN0IG9yIHNlbmQgRS1NQUlMIHRvIHRoZQorICAgIHNvdW5kIGRyaXZlciBhdXRob3IvbWFpbnRhaW5lci4KKworNykgIFR1cm4gb24gZGVidWcgaW4gZHJpdmVycy9zb3VuZC9zb3VuZF9jb25maWcuaCAoREVCLCBEREIsIE1EQikuCisKKzgpICBJZiB0aGUgc3lzdGVtIHJlcG9ydHMgaW5zdWZmaWNpZW50IERNQSBtZW1vcnkgdGhlbiB5b3UgbWF5IHdhbnQgdG8KKyAgICBsb2FkIHNvdW5kIHdpdGggdGhlICJkbWFidWZzPTEiIG9wdGlvbi4gT3IgaW4gL2V0Yy9jb25mLm1vZHVsZXMgYWRkCisJCisJcHJlaW5zdGFsbCBzb3VuZCBkbWFidWZzPTEKKworICAgIFRoaXMgbWFrZXMgdGhlIHNvdW5kIHN5c3RlbSBhbGxvY2F0ZSBpdHMgYnVmZmVycyBhbmQgaGFuZyBvbnRvIHRoZW0uCisKKyAgICBZb3UgbWF5IGFsc28gc2V0IHBlcnNpc3RlbnQgRE1BIHdoZW4gYnVpbGRpbmcgYSAyLjQueCBrZXJuZWwuCisKKworQ29uZmlndXJpbmcgU291bmQ6Cis9PT09PT09PT09PT09PT09PT0KKworVGhlcmUgYXJlIHNldmVyYWwgd2F5cyBvZiBjb25maWd1cmluZyB5b3VyIHNvdW5kOgorCisxKSAgT24gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgKHdoZW4gdXNpbmcgdGhlIHNvdW5kIGRyaXZlcihzKQorICAgIGNvbXBpbGVkIGluIHRoZSBrZXJuZWwpLiBDaGVjayB0aGUgZHJpdmVyIHNvdXJjZSBhbmQKKyAgICBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLgorCisyKSAgT24gdGhlIGNvbW1hbmQgbGluZSB3aGVuIHVzaW5nIGluc21vZCBvciBpbiBhIGJhc2ggc2NyaXB0CisgICAgdXNpbmcgY29tbWFuZCBsaW5lIGNhbGxzIHRvIGxvYWQgc291bmQuCisKKzMpICBJbiAvZXRjL21vZHByb2JlLmQvKmNvbmYgd2hlbiB1c2luZyBtb2Rwcm9iZS4KKworNCkgIFZpYSBSZWQgSGF0J3MgR1BMJ2QgL3Vzci9zYmluL3NuZGNvbmZpZyBwcm9ncmFtICh0ZXh0IGJhc2VkKS4KKworNSkgIFZpYSB0aGUgT1NTIHNvdW5kY29uZiBwcm9ncmFtICh3aXRoIHRoZSBjb21tZXJjaWFsIHZlcnNpb24KKyAgICBvZiB0aGUgT1NTIGRyaXZlci4KKworNikgIEJ5IGp1c3QgbG9hZGluZyB0aGUgbW9kdWxlIGFuZCBsZXQgaXNhcG5wIGRvIGV2ZXJ5dGhpbmcgcmVsZXZhbnQKKyAgICBmb3IgeW91LiBUaGlzIHdvcmtzIG9ubHkgd2l0aCBhIGZldyBkcml2ZXJzIHlldCBhbmQgLSBvZiBjb3Vyc2UgLQorICAgIG9ubHkgd2l0aCBpc2FwbnAgaGFyZHdhcmUuCisKK0FuZCBJIGFtIHN1cmUsIHNldmVyYWwgb3RoZXIgd2F5cy4gIAorCitBbnlvbmUgd2FudCB0byB3cml0ZSBhIGxpbnV4Y29uZiBtb2R1bGUgZm9yIGNvbmZpZ3VyaW5nIHNvdW5kPworCisKK01vZHVsZSBMb2FkaW5nOgorPT09PT09PT09PT09PT09CisKK1doZW4gYSBzb3VuZCBjYXJkIGlzIGZpcnN0IHJlZmVyZW5jZWQgYW5kIHNvdW5kIGlzIG1vZHVsYXIsIHRoZSBzb3VuZCBzeXN0ZW0KK3dpbGwgYXNrIGZvciB0aGUgc291bmQgZGV2aWNlcyB0byBiZSBsb2FkZWQuIEluaXRpYWxseSBpdCByZXF1ZXN0cyB0aGF0Cit0aGUgZHJpdmVyIGZvciB0aGUgc291bmQgc3lzdGVtIGlzIGxvYWRlZC4gSXQgdGhlbiB3aWxsIGFzayBmb3IgCitzb3VuZC1zbG90LTAsIHdoZXJlIDAgaXMgdGhlIGZpcnN0IHNvdW5kIGNhcmQuIChzb3VuZC1zbG90LTEgdGhlIHNlY29uZCBhbmQKK3NvIG9uKS4gVGh1cyB5b3UgY2FuIGRvCisKK2FsaWFzIHNvdW5kLXNsb3QtMCBzYgorCitUbyBsb2FkIGEgc291bmRibGFzdGVyIGF0IHRoaXMgcG9pbnQuIElmIHRoZSBzbG90IGxvYWRpbmcgZG9lcyBub3QgcHJvdmlkZQordGhlIGRlc2lyZWQgZGV2aWNlIC0gZm9yIGV4YW1wbGUgYSBzb3VuZGJsYXN0ZXIgZG9lcyBub3QgZGlyZWN0bHkgcHJvdmlkZQorYSBtaWRpIHN5bnRoIGluIGFsbCBjYXNlcyB0aGVuIGl0IHdpbGwgcmVxdWVzdCAic291bmQtc2VydmljZS0wLW4iIHdoZXJlIG4KK2lzCisKKyAgMAlNaXhlcgorCisgIDIgIAlNSURJCisKKyAgMywgNAlEU1AgYXVkaW8KKworCitGb3IgZXhhbXBsZSwgSSB1c2UgdGhlIGZvbGxvd2luZyB0byBsb2FkIG15IFNvdW5kYmxhc3RlciBQQ0kgMTI4CisoRVMgMTM3MSkgY2FyZCBmaXJzdCwgZm9sbG93ZWQgYnkgbXkgU291bmRCbGFzdGVyIFZpYnJhIDE2IGNhcmQsCit0aGVuIGJ5IG15IFRWIGNhcmQ6CisKKyMgTG9hZCB0aGUgU291bmRibGFzdGVyIFBDSSAxMjggYXMgL2Rldi9kc3AsIC9kZXYvZHNwMSwgL2Rldi9taXhlcgorYWxpYXMgc291bmQtc2xvdC0wIGVzMTM3MQorCisjIExvYWQgdGhlIFNvdW5kYmxhc3RlciBWaWJyYSAxNiBhcyAvZGV2L2RzcDIsIC9kZXYvbWl4ZXIxCithbGlhcyBzb3VuZC1zbG90LTEgc2IKK29wdGlvbnMgc2IgaW89MHgyNDAgaXJxPTUgZG1hPTEgZG1hMTY9NSBtcHVfaW89MHgzMzAKKworIyBMb2FkIHRoZSBCVFRWIChUViBjYXJkKSBhcyAvZGV2L21peGVyMgorYWxpYXMgc291bmQtc2xvdC0yIGJ0dHYKK2FsaWFzIHNvdW5kLXNlcnZpY2UtMi0wIHR2bWl4ZXIKKworcHJlLWluc3RhbGwgYnR0diAgbW9kcHJvYmUgdHVuZXIgOyBtb2Rwcm9iZSB0dm1peGVyCitwcmUtaW5zdGFsbCB0dm1peGVyIG1vZHByb2JlIG1zcDM0MDA7IG1vZHByb2JlIHR2YXVkaW8gCitvcHRpb25zIHR1bmVyIGRlYnVnPTAgdHlwZT04IAorb3B0aW9ucyBidHR2ICBjYXJkPTAgcmFkaW89MCBwbGw9MAorCisKK0ZvciBNb3JlIEluZm9ybWF0aW9uIChSVEZNKToKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzEpICBJbmZvcm1hdGlvbiBvbiBrZXJuZWwgbW9kdWxlczogbWFudWFsIHBhZ2VzIGZvciBpbnNtb2QgYW5kIG1vZHByb2JlLgorCisyKSAgSW5mb3JtYXRpb24gb24gUG5QLCBSVEZNIG1hbnVhbCBwYWdlcyBmb3IgaXNhcG5wLgorCiszKSAgU291bmQtSE9XVE8gYW5kIFNvdW5kLVBsYXlpbmctSE9XVE8uCisKKzQpICBPU1MncyBXV1cgc2l0ZSBhdCBodHRwOi8vd3d3Lm9wZW5zb3VuZC5jb20uCisKKzUpICBBbGwgdGhlIGZpbGVzIGluIERvY3VtZW50YXRpb24vc291bmQuCisKKzYpICBUaGUgY29tbWVudHMgYW5kIGNvZGUgaW4gbGludXgvZHJpdmVycy9zb3VuZC4KKworNykgIFRoZSBzbmRjb25maWcgYW5kIHJoc291bmQgZG9jdW1lbnRhdGlvbiBmcm9tIFJlZCBIYXQuCisKKzgpICBUaGUgTGludXgtc291bmQgbWFpbGluZyBsaXN0OiAgc291bmQtbGlzdEByZWRoYXQuY29tLgorCis5KSAgRW5saWdodGVubWVudCBkb2N1bWVudGF0aW9uIChmb3IgaW5mbyBvbiBlc2QpCisgICAgaHR0cDovL3d3dy50dXgub3JnL35yaWNkdWRlL0Vzb3VuRC5odG1sLgorCisxMCkgQUxTQSBob21lIHBhZ2U6ICBodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmcvCisKKworQ29udGFjdCBJbmZvcm1hdGlvbjoKKz09PT09PT09PT09PT09PT09PT09CitXYWRlIEhhbXB0b246ICAod2hhbXB0b25Ac3RhZmZuZXQuY29tKQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9NdWx0aVNvdW5kIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvTXVsdGlTb3VuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGExOGJiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvTXVsdGlTb3VuZApAQCAtMCwwICsxLDExMzcgQEAKKyMhIC9iaW4vc2gKKyMKKyMgIFR1cnRsZSBCZWFjaCBNdWx0aVNvdW5kIERyaXZlciBOb3RlcworIyAgLS0gQW5kcmV3IFZlbGlhdGggPGFuZHJld3R2QHVzYS5uZXQ+CisjCisjICBMYXN0IHVwZGF0ZTogICAgICAgICAgICAgICAgICAgICAgU2VwdGVtYmVyIDEwLCAxOTk4CisjICBDb3JyZXNwb25kaW5nIG1zbmQgZHJpdmVyOiAgICAgICAgMC44LjMKKyMKKyMgKiogVGhpcyBmaWxlIGlzIGEgUkVBRE1FICh0b3AgcGFydCkgYW5kIHNoZWxsIGFyY2hpdmUgKGJvdHRvbSBwYXJ0KS4KKyMgICAgVGhlIGNvcnJlc3BvbmRpbmcgYXJjaGl2ZWQgdXRpbGl0eSBzb3VyY2VzIGNhbiBiZSB1bnBhY2tlZCBieQorIyAgICBydW5uaW5nIGBzaCBNdWx0aVNvdW5kJyAodGhlIHV0aWxpdGllcyBhcmUgb25seSBuZWVkZWQgZm9yIHRoZQorIyAgICBQaW5uYWNsZSBhbmQgRmlqaSBjYXJkcykuICoqCisjCisjCisjICAtPS09LSBHZXR0aW5nIEZpcm13YXJlIC09LT0tCisjICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisjICAKKyMgIFNlZSB0aGUgc2VjdGlvbiBgT2J0YWluaW5nIGFuZCBDcmVhdGluZyBGaXJtd2FyZSBGaWxlcycgaW4gdGhpcworIyAgZG9jdW1lbnQgZm9yIGluc3RydWN0aW9ucyBvbiBvYnRhaW5pbmcgdGhlIG5lY2Vzc2FyeSBmaXJtd2FyZQorIyAgZmlsZXMuCisjICAKKyMgIAorIyAgU3VwcG9ydGVkIEZlYXR1cmVzCisjICB+fn5+fn5+fn5+fn5+fn5+fn4KKyMgIAorIyAgQ3VycmVudGx5LCBmdWxsLWR1cGxleCBkaWdpdGFsIGF1ZGlvICgvZGV2L2RzcCBvbmx5LCAvZGV2L2F1ZGlvIGlzCisjICBub3QgY3VycmVudGx5IGF2YWlsYWJsZSkgYW5kIG1peGVyIGZ1bmN0aW9uYWxpdHkgKC9kZXYvbWl4ZXIpIGFyZQorIyAgc3VwcG9ydGVkIChtZW1vcnkgbWFwcGVkIGRpZ2l0YWwgYXVkaW8gaXMgbm90IHlldCBzdXBwb3J0ZWQpLgorIyAgRGlnaXRhbCB0cmFuc2ZlcnMgYW5kIG1vbml0b3JpbmcgY2FuIGJlIGRvbmUgYXMgd2VsbCBpZiB5b3UgaGF2ZQorIyAgdGhlIGRpZ2l0YWwgZGF1Z2h0ZXJib2FyZCAoc2VlIHRoZSBzZWN0aW9uIG9uIHVzaW5nIHRoZSBTL1BESUYgcG9ydAorIyAgZm9yIG1vcmUgaW5mb3JtYXRpb24pLgorIworIyAgU3VwcG9ydCBmb3IgdGhlIFR1cnRsZSBCZWFjaCBNdWx0aVNvdW5kIEh1cnJpY2FuZSBhcmNoaXRlY3R1cmUgaXMKKyMgIGNvbXBvc2VkIG9mIHRoZSBmb2xsb3dpbmcgbW9kdWxlcyAodGhlc2UgY2FuIGFsc28gb3BlcmF0ZSBjb21waWxlZAorIyAgaW50byB0aGUga2VybmVsKToKKyMgIAorIyAgbXNuZCAgICAgICAgICAgICAgIC0gTXVsdGlTb3VuZCBiYXNlIChyZXF1aXJlcyBzb3VuZGNvcmUpCisjCisjICBtc25kX2NsYXNzaWMgICAgICAgLSBCYXNlIGF1ZGlvL21peGVyIHN1cHBvcnQgZm9yIENsYXNzaWMsIE1vbmV0ZXJ5IGFuZAorIyAgICAgICAgICAgICAgICAgICAgICAgVGFoaXRpIGNhcmRzCisjCisjICBtc25kX3Bpbm5hY2xlICAgICAgLSBCYXNlIGF1ZGlvL21peGVyIHN1cHBvcnQgZm9yIFBpbm5hY2xlIGFuZCBGaWppIGNhcmRzCisjICAKKyMgIAorIyAgSW1wb3J0YW50IE5vdGVzIC0gUmVhZCBCZWZvcmUgVXNpbmcKKyMgIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisjICAKKyMgIFRoZSBmaXJtd2FyZSBmaWxlcyBhcmUgbm90IGluY2x1ZGVkIChtYXkgY2hhbmdlIGluIGZ1dHVyZSkuICBZb3UKKyMgIG11c3Qgb2J0YWluIHRoZXNlIGltYWdlcyBmcm9tIFR1cnRsZSBCZWFjaCAodGhleSBhcmUgaW5jbHVkZWQgaW4KKyMgIHRoZSBNdWx0aVNvdW5kIERldmVsb3BtZW50IEtpdHMpLCBhbmQgcGxhY2UgdGhlbSBpbiAvZXRjL3NvdW5kIGZvcgorIyAgZXhhbXBsZSwgYW5kIGdpdmUgdGhlIGZ1bGwgcGF0aHMgaW4gdGhlIExpbnV4IGNvbmZpZ3VyYXRpb24uICBJZgorIyAgeW91IGFyZSBjb21waWxpbmcgaW4gc3VwcG9ydCBmb3IgdGhlIE11bHRpU291bmQgZHJpdmVyIHJhdGhlciB0aGFuCisjICB1c2luZyBpdCBhcyBhIG1vZHVsZSwgdGhlc2UgZmlybXdhcmUgZmlsZXMgbXVzdCBiZSBhY2Nlc3NpYmxlCisjICBkdXJpbmcga2VybmVsIGNvbXBpbGF0aW9uLgorIworIyAgUGxlYXNlIG5vdGUgdGhlc2UgZmlsZXMgbXVzdCBiZSBiaW5hcnkgZmlsZXMsIG5vdCBhc3NlbWJsZXIuICBTZWUKKyMgIHRoZSBzZWN0aW9uIGxhdGVyIGluIHRoaXMgZG9jdW1lbnQgZm9yIGluc3RydWN0aW9ucyB0byBvYnRhaW4gdGhlc2UKKyMgIGZpbGVzLgorIyAgCisjICAKKyMgIENvbmZpZ3VyaW5nIENhcmQgUmVzb3VyY2VzCisjICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorIworIyAgKiogVGhpcyBzZWN0aW9uIGlzIHZlcnkgaW1wb3J0YW50LCBhcyB5b3VyIGNhcmQgbWF5IG5vdCB3b3JrIGF0IGFsbAorIyAgICAgb3IgeW91ciBtYWNoaW5lIG1heSBjcmFzaCBpZiB5b3UgZG8gbm90IGRvIHRoaXMgY29ycmVjdGx5LiAqKgorIworIyAgKiBDbGFzc2ljL01vbnRlcmV5L1RhaGl0aQorIyAgCisjICBUaGVzZSBjYXJkcyBhcmUgY29uZmlndXJlZCB0aHJvdWdoIHRoZSBkcml2ZXIgbXNuZF9jbGFzc2ljLiAgWW91IG11c3QKKyMgIGtub3cgdGhlIGlvIHBvcnQsIHRoZW4gdGhlIGRyaXZlciB3aWxsIHNlbGVjdCB0aGUgaXJxIGFuZCBtZW1vcnkgcmVzb3VyY2VzCisjICBvbiB0aGUgY2FyZC4gIEl0IGlzIHVwIHRvIHlvdSB0byBrbm93IGlmIHRoZXNlIGFyZSBmcmVlIGxvY2F0aW9ucyBvciBub3csCisjICBhIGNvbmZsaWN0IGNhbiBsb2NrIHRoZSBtYWNoaW5lIHVwLgorIworIyAgKiBQaW5uYWNsZS9GaWppCisjCisjICBUaGUgUGlubmFjbGUgYW5kIEZpamkgY2FyZHMgaGF2ZSBhbiBleHRyYSBjb25maWcgcG9ydCwgZWl0aGVyCisjICAweDI1MCwgMHgyNjAgb3IgMHgyNzAuICBUaGlzIHBvcnQgY2FuIGJlIGRpc2FibGVkIHRvIGhhdmUgdGhlIGNhcmQKKyMgIGNvbmZpZ3VyZWQgc3RyaWN0bHkgdGhyb3VnaCBQblAsIGhvd2V2ZXIgeW91IGxvc2UgdGhlIGFiaWxpdHkgdG8KKyMgIGFjY2VzcyB0aGUgSURFIGNvbnRyb2xsZXIgYW5kIGpveXN0aWNrIGRldmljZXMgb24gdGhpcyBjYXJkIHdoZW4KKyMgIHVzaW5nIFBuUC4gIFRoZSBpbmNsdWRlZCBwaW5uYWNsZWNmZyBwcm9ncmFtIGluIHRoaXMgc2hlbGwgYXJjaGl2ZQorIyAgY2FuIGJlIHVzZWQgdG8gY29uZmlndXJlIHRoZSBjYXJkIGluIG5vbi1QblAgbW9kZSwgYW5kIGluIFBuUCBtb2RlCisjICB5b3UgY2FuIHVzZSBpc2FwbnB0b29scy4gIFRoZXNlIGFyZSBkZXNjcmliZWQgYnJpZWZseSBoZXJlLgorIworIyAgcGlubmFjbGVjZmcgaXMgbm90IHJlcXVpcmVkOyB5b3UgY2FuIHVzZSB0aGUgbXNuZF9waW5uYWNsZSBtb2R1bGUKKyMgIHRvIGZ1bGx5IGNvbmZpZ3VyZSB0aGUgY2FyZCBhcyB3ZWxsLiAgSG93ZXZlciwgcGlubmFjbGVjZmcgY2FuIGJlCisjICB1c2VkIHRvIGNoYW5nZSB0aGUgcmVzb3VyY2UgdmFsdWVzIG9mIGEgcGFydGljdWxhciBkZXZpY2UgYWZ0ZXIgdGhlCisjICBtc25kX3Bpbm5hY2xlIG1vZHVsZSBoYXMgYmVlbiBsb2FkZWQuICBJZiB5b3UgYXJlIGNvbXBpbGluZyB0aGUKKyMgIGRyaXZlciBpbnRvIHRoZSBrZXJuZWwsIHlvdSBtdXN0IHNldCB0aGVzZSB2YWx1ZXMgZHVyaW5nIGNvbXBpbGUKKyMgIHRpbWUsIGhvd2V2ZXIgb3RoZXIgcGVyaXBoZXJhbCByZXNvdXJjZSB2YWx1ZXMgY2FuIGJlIGNoYW5nZWQgd2l0aAorIyAgdGhlIHBpbm5hY2xlY2ZnIHByb2dyYW0gYWZ0ZXIgdGhlIGtlcm5lbCBpcyBsb2FkZWQuCisjCisjCisjICAqKiogUG5QIG1vZGUKKyMgIAorIyAgVXNlIHBucGR1bXAgdG8gb2J0YWluIGEgc2FtcGxlIGNvbmZpZ3VyYXRpb24gaWYgeW91IGNhbjsgSSB3YXMgYWJsZQorIyAgdG8gb2J0YWluIG9uZSB3aXRoIHRoZSBjb21tYW5kIGBwbnBkdW1wIDEgMHgyMDMnIC0tIHRoaXMgbWF5IHZhcnkKKyMgIGZvciB5b3UgKHJ1bm5pbmcgcG5wZHVtcCBieSBpdHNlbGYgZGlkIG5vdCB3b3JrIGZvciBtZSkuICBUaGVuLAorIyAgZWRpdCB0aGlzIGZpbGUgYW5kIHVzZSBpc2FwbnAgdG8gdW5jb21tZW50IGFuZCBzZXQgdGhlIGNhcmQgdmFsdWVzLgorIyAgVXNlIHRoZXNlIHZhbHVlcyB3aGVuIGluc2VydGluZyB0aGUgbXNuZF9waW5uYWNsZSBtb2R1bGUuICBVc2luZworIyAgdGhpcyBtZXRob2QsIHlvdSBjYW4gc2V0IHRoZSByZXNvdXJjZXMgZm9yIHRoZSBEU1AgYW5kIHRoZSBLdXJ6d2VpbAorIyAgc3ludGggKFBpbm5hY2xlKS4gIFNpbmNlIExpbnV4IGRvZXMgbm90IGRpcmVjdGx5IHN1cHBvcnQgUG5QCisjICBkZXZpY2VzLCB5b3UgbWF5IGhhdmUgZGlmZmljdWx0eSB3aGVuIHVzaW5nIHRoZSBjYXJkIGluIFBuUCBtb2RlCisjICB3aGVuIGl0IHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgaW50byB0aGUga2VybmVsLiAgVXNpbmcgbm9uLVBuUCBtb2RlCisjICBpcyBwcmVmZXJhYmxlIGluIHRoaXMgY2FzZS4KKyMKKyMgIEhlcmUgaXMgYW4gZXhhbXBsZSBteXBpbm5hY2xlLmNvbmYgZm9yIGlzYXBucCB0aGF0IHNldHMgdGhlIGNhcmQgdG8KKyMgIGlvIGJhc2UgMHgyMTAsIGlycSA1IGFuZCBtZW0gMHhkODAwMCwgYW5kIGFsc28gc2V0cyB0aGUgS3VyendlaWwKKyMgIHN5bnRoIHRvIDB4MzMwIGFuZCBpcnEgOSAobWF5IG5lZWQgZWRpdGluZyBmb3IgeW91ciBzeXN0ZW0pOgorIworIyAgKFJFQURQT1JUIDB4MDIwMykKKyMgIChDU04gMikKKyMgIChJREVOVElGWSAqKQorIyAgCisjICAjIERTUAorIyAgKENPTkZJR1VSRSBCVkowNDQwLy0xIChMRCAwCisjICAgICAgICAgIChJTlQgMCAoSVJRIDUgKE1PREUgK0UpKSkgKElPIDAgKEJBU0UgMHgwMjEwKSkgKE1FTSAwIChCQVNFIDB4MGQ4MDAwKSkKKyMgICAgICAgICAgKEFDVCBZKSkpCisjICAKKyMgICMgS3VyendlaWwgU3ludGggKFBpbm5hY2xlIE9ubHkpCisjICAoQ09ORklHVVJFIEJWSjA0NDAvLTEgKExEIDEKKyMgICAgICAgICAgKElPIDAgKEJBU0UgMHgwMzMwKSkgKElOVCAwIChJUlEgOSAoTU9ERSArRSkpKQorIyAgICAgICAgICAoQUNUIFkpKSkKKyMgIAorIyAgKFdBSVRGT1JLRVkpCisjCisjCisjICAqKiogTm9uLVBuUCBtb2RlCisjICAKKyMgIFRoZSBzZWNvbmQgd2F5IGlzIGJ5IHJ1bm5pbmcgdGhlIGNhcmQgaW4gbm9uLVBuUCBtb2RlLiAgVGhpcworIyAgYWN0dWFsbHkgaGFzIHNvbWUgYWR2YW50YWdlcyBpbiB0aGF0IHlvdSBjYW4gYWNjZXNzIHNvbWUgb3RoZXIKKyMgIGRldmljZXMgb24gdGhlIGNhcmQsIHN1Y2ggYXMgdGhlIGpveXN0aWNrIGFuZCBJREUgY29udHJvbGxlci4gIFRvCisjICBjb25maWd1cmUgdGhlIGNhcmQsIHVucGFjayB0aGlzIHNoZWxsIGFyY2hpdmUgYW5kIGJ1aWxkIHRoZQorIyAgcGlubmFjbGVjZmcgcHJvZ3JhbS4gIFVzaW5nIHRoaXMgcHJvZ3JhbSwgeW91IGNhbiBhc3NpZ24gdGhlCisjICByZXNvdXJjZSB2YWx1ZXMgdG8gdGhlIGNhcmQncyBkZXZpY2VzLCBvciBkaXNhYmxlIHRoZSBkZXZpY2VzLiAgQXMKKyMgIGFuIGFsdGVybmF0aXZlIHRvIHVzaW5nIHBpbm5hY2xlY2ZnLCB5b3UgY2FuIHNwZWNpZnkgbWFueSBvZiB0aGUKKyMgIGNvbmZpZ3VyYXRpb24gdmFsdWVzIHdoZW4gbG9hZGluZyB0aGUgbXNuZF9waW5uYWNsZSBtb2R1bGUgKG9yCisjICBkdXJpbmcga2VybmVsIGNvbmZpZ3VyYXRpb24gd2hlbiBjb21waWxpbmcgdGhlIGRyaXZlciBpbnRvIHRoZQorIyAga2VybmVsKS4KKyMKKyMgIElmIHlvdSBzcGVjaWZ5IGNmZz0weDI1MCBmb3IgdGhlIG1zbmRfcGlubmFjbGUgbW9kdWxlLCBpdAorIyAgYXV0b21hdGljYWxseSBjb25maWd1cmUgdGhlIGNhcmQgdG8gdGhlIGdpdmVuIGlvLCBpcnEgYW5kIG1lbW9yeQorIyAgdmFsdWVzIHVzaW5nIHRoYXQgY29uZmlnIHBvcnQgKHRoZSBjb25maWcgcG9ydCBpcyBqdW1wZXIgc2VsZWN0YWJsZQorIyAgb24gdGhlIGNhcmQgdG8gMHgyNTAsIDB4MjYwIG9yIDB4MjcwKS4KKyMKKyMgIFNlZSB0aGUgYG1zbmRfcGlubmFjbGUgQWRkaXRpb25hbCBPcHRpb25zJyBzZWN0aW9uIGJlbG93IGZvciBtb3JlCisjICBpbmZvcm1hdGlvbiBvbiB0aGVzZSBwYXJhbWV0ZXJzIChhbHNvLCBpZiB5b3UgY29tcGlsZSB0aGUgZHJpdmVyCisjICBkaXJlY3RseSBpbnRvIHRoZSBrZXJuZWwsIHRoZXNlIGV4dHJhIHBhcmFtZXRlcnMgY2FuIGJlIHVzZWZ1bAorIyAgaGVyZSkuCisjCisjCisjICoqIEl0IGlzIHZlcnkgZWFzeSB0byBjYXVzZSBwcm9ibGVtcyBpbiB5b3VyIG1hY2hpbmUgaWYgeW91IGNob29zZSBhCisjICAgIHJlc291cmNlIHZhbHVlIHdoaWNoIGlzIGluY29ycmVjdC4gKioKKyMgIAorIworIyAgRXhhbXBsZXMKKyMgIH5+fn5+fn5+CisjICAKKyMgICogTXVsdGlTb3VuZCBDbGFzc2ljL01vbnRlcmV5L1RhaGl0aToKKyMgIAorIyAgbW9kcHJvYmUgc291bmRjb3JlCisjICBpbnNtb2QgbXNuZAorIyAgaW5zbW9kIG1zbmRfY2xhc3NpYyBpbz0weDI5MCBpcnE9NyBtZW09MHhkMDAwMAorIyAgCisjICAqIE11bHRpU291bmQgUGlubmFjbGUgaW4gUG5QIG1vZGU6CisjICAKKyMgIG1vZHByb2JlIHNvdW5kY29yZQorIyAgaW5zbW9kIG1zbmQKKyMgIGlzYXBucCBteXBpbm5hY2xlLmNvbmYKKyMgIGluc21vZCBtc25kX3Bpbm5hY2xlIGlvPTB4MjEwIGlycT01IG1lbT0weGQ4MDAwIDwtLSBtYXRjaCBteXBpbm5hY2xlLmNvbmYgdmFsdWVzCisjICAKKyMgICogTXVsdGlTb3VuZCBQaW5uYWNsZSBpbiBub24tUG5QIG1vZGUgKHJlcGxhY2UgMHgyNTAgd2l0aCB5b3VyIGNvbmZpZ3VyYXRpb24gcG9ydCwKKyMgICAgb25lIG9mIDB4MjUwLCAweDI2MCBvciAweDI3MCk6CisjICAKKyMgIGluc21vZCBzb3VuZGNvcmUKKyMgIGluc21vZCBtc25kCisjICBpbnNtb2QgbXNuZF9waW5uYWNsZSBjZmc9MHgyNTAgaW89MHgyOTAgaXJxPTUgbWVtPTB4ZDAwMDAKKyMgIAorIyAqIFRvIHVzZSB0aGUgTVBVLWNvbXBhdGlibGUgS3VyendlaWwgc3ludGggb24gdGhlIFBpbm5hY2xlIGluIFBuUAorIyAgIG1vZGUsIGFkZCB0aGUgZm9sbG93aW5nIChhc3N1bWVzIHlvdSBkaWQgYGlzYXBucCBteXBpbm5hY2xlLmNvbmYnKToKKyMgIAorIyAgaW5zbW9kIHNvdW5kCisjICBpbnNtb2QgbXB1NDAxIGlvPTB4MzMwIGlycT05ICAgICAgICAgICAgICAgICAgICA8LS0gbWF0Y2ggbXlwaW5uYWNsZS5jb25mIHZhbHVlcworIyAgCisjICogVG8gdXNlIHRoZSBNUFUtY29tcGF0aWJsZSBLdXJ6d2VpbCBzeW50aCBvbiB0aGUgUGlubmFjbGUgaW4gbm9uLVBuUAorIyAgIG1vZGUsIGFkZCB0aGUgZm9sbG93aW5nLiAgTm90ZSBob3cgd2UgZmlyc3QgY29uZmlndXJlIHRoZSBwZXJpcGhlcmFsJ3MKKyMgICByZXNvdXJjZXMsIF90aGVuXyBpbnN0YWxsIGEgTGludXggZHJpdmVyIGZvciBpdDoKKyMgIAorIyAgaW5zbW9kIHNvdW5kCisjICBwaW5uYWNsZWNmZyAweDI1MCBtcHUgMHgzMzAgOQorIyAgaW5zbW9kIG1wdTQwMSBpbz0weDMzMCBpcnE9OQorIworIyAgLS0gT1IgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBzZXF1ZW5jZSB3aXRob3V0IHBpbm5hY2xlY2ZnIGluIG5vbi1QblAgbW9kZToKKyMKKyMgIGluc21vZCBzb3VuZGNvcmUKKyMgIGluc21vZCBtc25kCisjICBpbnNtb2QgbXNuZF9waW5uYWNsZSBjZmc9MHgyNTAgaW89MHgyOTAgaXJxPTUgbWVtPTB4ZDAwMDAgbXB1X2lvPTB4MzMwIG1wdV9pcnE9OQorIyAgaW5zbW9kIHNvdW5kCisjICBpbnNtb2QgbXB1NDAxIGlvPTB4MzMwIGlycT05CisjCisjICogVG8gc2V0dXAgdGhlIGpveXN0aWNrIHBvcnQgb24gdGhlIFBpbm5hY2xlIGluIG5vbi1QblAgbW9kZSAodGhvdWdoCisjICAgeW91IGhhdmUgdG8gZmluZCB0aGUgYWN0dWFsIExpbnV4IGpveXN0aWNrIGRyaXZlciBlbHNld2hlcmUpLCB5b3UKKyMgICBjYW4gdXNlIHBpbm5hY2xlY2ZnOgorIworIyAgIHBpbm5hY2xlY2ZnIDB4MjUwIGpveXN0aWNrIDB4MjAwCisjCisjICAtLSBPUiB5b3UgY2FuIGNvbmZpZ3VyZSB0aGlzIHVzaW5nIG1zbmRfcGlubmFjbGUgd2l0aCB0aGUgZm9sbG93aW5nOgorIworIyAgaW5zbW9kIHNvdW5kY29yZQorIyAgaW5zbW9kIG1zbmQKKyMgIGluc21vZCBtc25kX3Bpbm5hY2xlIGNmZz0weDI1MCBpbz0weDI5MCBpcnE9NSBtZW09MHhkMDAwMCBqb3lzdGlja19pbz0weDIwMAorIworIyAgCisjICBtc25kX2NsYXNzaWMsIG1zbmRfcGlubmFjbGUgUmVxdWlyZWQgT3B0aW9ucworIyAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyMgIAorIyAgSWYgdGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBub3QgZ2l2ZW4sIHRoZSBtb2R1bGUgd2lsbCBub3QgbG9hZC4KKyMgIEV4YW1pbmUgdGhlIGtlcm5lbCBtZXNzYWdlIGxvZyBmb3IgaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZXMuCisjICBXQVJOSU5HLS1wcm9iaW5nIGlzbid0IHN1cHBvcnRlZCBzbyB0cnkgdG8gbWFrZSBzdXJlIHlvdSBoYXZlIHRoZQorIyAgY29ycmVjdCBzaGFyZWQgbWVtb3J5IGFyZWEsIG90aGVyd2lzZSB5b3UgbWF5IGV4cGVyaWVuY2UgcHJvYmxlbXMuCisjICAKKyMgIGlvICAgICAgICAgICAgICAgICAgIEkvTyBiYXNlIG9mIERTUCwgZS5nLiBpbz0weDIxMAorIyAgaXJxICAgICAgICAgICAgICAgICAgSVJRIG51bWJlciwgZS5nLiBpcnE9NQorIyAgbWVtICAgICAgICAgICAgICAgICAgU2hhcmVkIG1lbW9yeSBhcmVhLCBlLmcuIG1lbT0weGQ4MDAwCisjICAKKyMgIAorIyAgbXNuZF9jbGFzc2ljLCBtc25kX3Bpbm5hY2xlIEFkZGl0aW9uYWwgT3B0aW9ucworIyAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorIyAgCisjICBmaWZvc2l6ZSAgICAgICAgICAgICBUaGUgZGlnaXRhbCBhdWRpbyBGSUZPcywgaW4ga2lsb2J5dGVzLiAgSWYgbm90CisjICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHdpbGwgYmUgdXNlZC4gIEluY3JlYXNpbmcKKyMgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgdmFsdWUgd2lsbCByZWR1Y2UgdGhlIGNoYW5jZSBvZiBhIEZJRk8KKyMgICAgICAgICAgICAgICAgICAgICAgIHVuZGVyZmxvdyBhdCB0aGUgZXhwZW5zZSBvZiBpbmNyZWFzaW5nIG92ZXJhbGwKKyMgICAgICAgICAgICAgICAgICAgICAgIGxhdGVuY3kuICBGb3IgZXhhbXBsZSwgZmlmb3NpemU9NTEyIHdpbGwKKyMgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRlIDUxMmtCIHJlYWQgYW5kIHdyaXRlIEZJRk9zICgxTUIgdG90YWwpLgorIyAgICAgICAgICAgICAgICAgICAgICAgV2hpbGUgdGhpcyBtYXkgcmVkdWNlIGRyb3BvdXRzLCBhIGhlYXZ5IG1hY2hpbmUKKyMgICAgICAgICAgICAgICAgICAgICAgIGxvYWQgd2lsbCB1bmRvdWJ0ZWRseSBzdGFydmUgdGhlIEZJRk8gb2YgZGF0YQorIyAgICAgICAgICAgICAgICAgICAgICAgYW5kIHlvdSB3aWxsIGV2ZW50dWFsbHkgZ2V0IGRyb3BvdXRzLiAgT25lCisjICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24gaXMgdG8gYWx0ZXIgdGhlIHNjaGVkdWxpbmcgcHJpb3JpdHkgb2YKKyMgICAgICAgICAgICAgICAgICAgICAgIHRoZSBwbGF5YmFjayBwcm9jZXNzLCB1c2luZyBgbmljZScgb3Igc29tZSBmb3JtCisjICAgICAgICAgICAgICAgICAgICAgICBvZiBQT1NJWCBzb2Z0IHJlYWwtdGltZSBzY2hlZHVsaW5nLgorIworIyAgY2FsaWJyYXRlX3NpZ25hbCAgICAgU2V0dGluZyB0aGlzIHRvIG9uZSBjYWxpYnJhdGVzIHRoZSBBRENzIHRvIHRoZQorIyAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsLCB6ZXJvIGNhbGlicmF0ZXMgdG8gdGhlIGNhcmQgKGRlZmF1bHRzCisjICAgICAgICAgICAgICAgICAgICAgICB0byB6ZXJvKS4KKyMgIAorIyAgCisjICBtc25kX3Bpbm5hY2xlIEFkZGl0aW9uYWwgT3B0aW9ucworIyAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyMKKyMgIGRpZ2l0YWwgICAgICAgICAgICAgIFNwZWNpZnkgZGlnaXRhbD0xIHRvIGVuYWJsZSB0aGUgUy9QRElGIGlucHV0CisjICAgICAgICAgICAgICAgICAgICAgICBpZiB5b3UgaGF2ZSB0aGUgZGlnaXRhbCBkYXVnaHRlcmJvYXJkCisjICAgICAgICAgICAgICAgICAgICAgICBhZGFwdGVyLiBUaGlzIHdpbGwgZW5hYmxlIGFjY2VzcyB0byB0aGUKKyMgICAgICAgICAgICAgICAgICAgICAgIERJR0lUQUwxIGlucHV0IGZvciB0aGUgc291bmRjYXJkIGluIHRoZSBtaXhlci4KKyMgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgbWl4ZXIgcHJvZ3JhbXMgbWlnaHQgaGF2ZSB0cm91YmxlIHNldHRpbmcKKyMgICAgICAgICAgICAgICAgICAgICAgIHRoZSBESUdJVEFMMSBzb3VyY2UgYXMgYW4gaW5wdXQuICBJZiB5b3UgaGF2ZQorIyAgICAgICAgICAgICAgICAgICAgICAgdHJvdWJsZSwgeW91IGNhbiB0cnkgdGhlIHNldGRpZ2l0YWwuYyBwcm9ncmFtCisjICAgICAgICAgICAgICAgICAgICAgICBhdCB0aGUgYm90dG9tIG9mIHRoaXMgZG9jdW1lbnQuCisjCisjICBjZmcgICAgICAgICAgICAgICAgICBOb24tUG5QIGNvbmZpZ3VyYXRpb24gcG9ydCBmb3IgdGhlIFBpbm5hY2xlCisjICAgICAgICAgICAgICAgICAgICAgICBhbmQgRmlqaSAodHlwaWNhbGx5IDB4MjUwLCAweDI2MCBvciAweDI3MCwKKyMgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGluZyBvbiB0aGUganVtcGVyIGNvbmZpZ3VyYXRpb24pLiAgSWYKKyMgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgb3B0aW9uIGlzIG9taXR0ZWQsIHRoZW4gaXQgaXMgYXNzdW1lZAorIyAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB0aGUgY2FyZCBpcyBpbiBQblAgbW9kZSwgYW5kIHRoYXQgdGhlCisjICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQgRFNQIHJlc291cmNlIHZhbHVlcyBhcmUgYWxyZWFkeQorIyAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJlZCB3aXRoIFBuUCAoaS5lLiBpdCB3b24ndCBhdHRlbXB0IHRvCisjICAgICAgICAgICAgICAgICAgICAgICBkbyBhbnkgc29ydCBvZiBjb25maWd1cmF0aW9uKS4KKyMKKyMgIFdoZW4gdGhlIFBpbm5hY2xlIGlzIGluIG5vbi1QblAgbW9kZSwgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZworIyAgb3B0aW9ucyB0byBjb25maWd1cmUgcGFydGljdWxhciBkZXZpY2VzLiAgSWYgYSBmdWxsIHNwZWNpZmljYXRpb24KKyMgIGZvciBhIGRldmljZSBpcyBub3QgZ2l2ZW4sIHRoZW4gdGhlIGRldmljZSBpcyBub3QgY29uZmlndXJlZC4gIE5vdGUKKyMgIHRoYXQgeW91IHN0aWxsIG11c3QgdXNlIGEgTGludXggZHJpdmVyIGZvciBhbnkgb2YgdGhlc2UgZGV2aWNlcworIyAgb25jZSB0aGVpciByZXNvdXJjZXMgYXJlIHNldHVwIChzdWNoIGFzIHRoZSBMaW51eCBqb3lzdGljayBkcml2ZXIsCisjICBvciB0aGUgTVBVNDAxIGRyaXZlciBmcm9tIE9TUyBmb3IgdGhlIEt1cnp3ZWlsIHN5bnRoKS4KKyMKKyMgIG1wdV9pbyAgICAgICAgICAgICAgIEkvTyBwb3J0IG9mIE1QVSAob24tYm9hcmQgS3VyendlaWwgc3ludGgpCisjICBtcHVfaXJxICAgICAgICAgICAgICBJUlEgb2YgTVBVIChvbi1ib2FyZCBLdXJ6d2VpbCBzeW50aCkKKyMgIGlkZV9pbzAJCUZpcnN0IEkvTyBwb3J0IG9mIElERSBjb250cm9sbGVyCisjICBpZGVfaW8xCQlTZWNvbmQgSS9PIHBvcnQgb2YgSURFIGNvbnRyb2xsZXIKKyMgIGlkZV9pcnEJCUlSUSBJREUgY29udHJvbGxlcgorIyAgam95c3RpY2tfaW8gICAgICAgICAgSS9PIHBvcnQgb2Ygam95c3RpY2sKKyMgIAorIyAgCisjICBPYnRhaW5pbmcgYW5kIENyZWF0aW5nIEZpcm13YXJlIEZpbGVzCisjICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisjICAKKyMgICAgICAgRm9yIHRoZSBDbGFzc2ljL1RhaGl0aS9Nb250ZXJleQorIyAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+IAorIyAgCisjICBEb3dubG9hZCB0byAvdG1wIGFuZCB1bnppcCB0aGUgZm9sbG93aW5nIGZpbGUgZnJvbSBUdXJ0bGUgQmVhY2g6CisjICAKKyMgICAgICAgZnRwOi8vZnRwLnZveWV0cmEuY29tL3B1Yi90YnMvbXNuZGNsL21zbmR2a2l0LnppcAorIyAgCisjICBXaGVuIHVuemlwcGVkLCB1bnppcCB0aGUgZmlsZSBuYW1lZCBNc25kRmlsZXMuemlwLiAgVGhlbiBjb3B5IHRoZQorIyAgZm9sbG93aW5nIGZpcm13YXJlIGZpbGVzIHRvIC9ldGMvc291bmQgKG5vdGUgdGhlIGZpbGUgcmVuYW1pbmcpOgorIyAgCisjICAgIGNwIERTUENPREUvTVNORElOSVQuQklOIC9ldGMvc291bmQvbXNuZGluaXQuYmluCisjICAgIGNwIERTUENPREUvTVNORFBFUk0uUkVCIC9ldGMvc291bmQvbXNuZHBlcm0uYmluCisjICAKKyMgIFdoZW4gY29uZmlndXJpbmcgdGhlIExpbnV4IGtlcm5lbCwgc3BlY2lmeSAvZXRjL3NvdW5kL21zbmRpbml0LmJpbiBhbmQKKyMgIC9ldGMvc291bmQvbXNuZHBlcm0uYmluIGZvciB0aGUgdHdvIGZpcm13YXJlIGZpbGVzIChMaW51eCBrZXJuZWwKKyMgIHZlcnNpb25zIG9sZGVyIHRoYW4gMi4yIGRvIG5vdCBhc2sgZm9yIGZpcm13YXJlIHBhdGhzLCBhbmQgYXJlCisjICBoYXJkY29kZWQgdG8gL2V0Yy9zb3VuZCkuCisjCisjICBJZiB5b3UgYXJlIGNvbXBpbGluZyB0aGUgZHJpdmVyIGludG8gdGhlIGtlcm5lbCwgdGhlc2UgZmlsZXMgbXVzdAorIyAgYmUgYWNjZXNzaWJsZSBkdXJpbmcgY29tcGlsYXRpb24sIGJ1dCB3aWxsIG5vdCBiZSBuZWVkZWQgbGF0ZXIuCisjICBUaGUgZmlsZXMgbXVzdCByZW1haW4sIGhvd2V2ZXIsIGlmIHRoZSBkcml2ZXIgaXMgdXNlZCBhcyBhIG1vZHVsZS4KKyMgIAorIyAgCisjICAgICAgIEZvciB0aGUgUGlubmFjbGUvRmlqaQorIyAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyMgIAorIyAgRG93bmxvYWQgdG8gL3RtcCBhbmQgdW56aXAgdGhlIGZvbGxvd2luZyBmaWxlIGZyb20gVHVydGxlIEJlYWNoIChiZQorIyAgc3VyZSB0byB1c2UgdGhlIGVudGlyZSBVUkw7IHNvbWUgaGF2ZSBoYWQgdHJvdWJsZSBuYXZpZ2F0aW5nIHRvIHRoZQorIyAgVVJMKToKKyMgIAorIyAgICAgICBmdHA6Ly9mdHAudm95ZXRyYS5jb20vcHViL3Ricy9waW5uL3BuZGRrMTAwLnppcAorIworIyAgVW5wYWNrIHRoaXMgc2hlbGwgYXJjaGl2ZSwgYW5kIHJ1biBtYWtlIGluIHRoZSBjcmVhdGVkIGRpcmVjdG9yeQorIyAgKHlvdSBuZWVkIGEgQyBjb21waWxlciBhbmQgZmxleCB0byBidWlsZCB0aGUgdXRpbGl0aWVzKS4gIFRoaXMKKyMgIHNob3VsZCBnaXZlIHlvdSB0aGUgZXhlY3V0YWJsZXMgY29udiwgcGlubmFjbGVjZmcgYW5kIHNldGRpZ2l0YWwuCisjICBjb252IGlzIG9ubHkgdXNlZCB0ZW1wb3JhcmlseSBoZXJlIHRvIGNyZWF0ZSB0aGUgZmlybXdhcmUgZmlsZXMsCisjICB3aGlsZSBwaW5uYWNsZWNmZyBpcyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgUGlubmFjbGUgb3IgRmlqaSBjYXJkIGluCisjICBub24tUG5QIG1vZGUsIGFuZCBzZXRkaWdpdGFsIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgUy9QRElGIGlucHV0IG9uCisjICB0aGUgbWl4ZXIgKHBpbm5hY2xlY2ZnIGFuZCBzZXRkaWdpdGFsIHNob3VsZCBiZSBjb3BpZWQgdG8gYQorIyAgY29udmVuaWVudCBwbGFjZSwgcG9zc2libHkgcnVuIGR1cmluZyBzeXN0ZW0gaW5pdGlhbGl6YXRpb24pLgorIworIyAgVG8gZ2VuZXJhdGluZyB0aGUgZmlybXdhcmUgZmlsZXMgd2l0aCB0aGUgYGNvbnYnIHByb2dyYW0sIHdlIGNyZWF0ZQorIyAgdGhlIGJpbmFyeSBmaXJtd2FyZSBmaWxlcyBieSBkb2luZyB0aGUgZm9sbG93aW5nIGNvbnZlcnNpb24KKyMgIChhc3N1bWluZyB0aGUgYXJjaGl2ZSB1bnBhY2tlZCBpbnRvIGEgZGlyZWN0b3J5IG5hbWVkIFBJTk5EREspOgorIyAgCisjICAgIC4vY29udiA8IFBJTk5EREsvZHNwY29kZS9wbmRzcGluaS5hc20gPiAvZXRjL3NvdW5kL3BuZHNwaW5pLmJpbgorIyAgICAuL2NvbnYgPCBQSU5ORERLL2RzcGNvZGUvcG5kc3Blcm0uYXNtID4gL2V0Yy9zb3VuZC9wbmRzcGVybS5iaW4KKyMgIAorIyAgVGhlIGNvbnYgKGFuZCBjb252LmwpIHByb2dyYW0gaXMgbm90IG5lZWRlZCBhZnRlciBjb252ZXJzaW9uIGFuZCBjYW4KKyMgIGJlIHNhZmVseSBkZWxldGVkLiAgVGhlbiwgd2hlbiBjb25maWd1cmluZyB0aGUgTGludXgga2VybmVsLCBzcGVjaWZ5CisjICAvZXRjL3NvdW5kL3BuZHNwaW5pLmJpbiBhbmQgL2V0Yy9zb3VuZC9wbmRzcGVybS5iaW4gZm9yIHRoZSB0d28KKyMgIGZpcm13YXJlIGZpbGVzIChMaW51eCBrZXJuZWwgdmVyc2lvbnMgb2xkZXIgdGhhbiAyLjIgZG8gbm90IGFzayBmb3IKKyMgIGZpcm13YXJlIHBhdGhzLCBhbmQgYXJlIGhhcmRjb2RlZCB0byAvZXRjL3NvdW5kKS4KKyMgIAorIyAgSWYgeW91IGFyZSBjb21waWxpbmcgdGhlIGRyaXZlciBpbnRvIHRoZSBrZXJuZWwsIHRoZXNlIGZpbGVzIG11c3QKKyMgIGJlIGFjY2Vzc2libGUgZHVyaW5nIGNvbXBpbGF0aW9uLCBidXQgd2lsbCBub3QgYmUgbmVlZGVkIGxhdGVyLgorIyAgVGhlIGZpbGVzIG11c3QgcmVtYWluLCBob3dldmVyLCBpZiB0aGUgZHJpdmVyIGlzIHVzZWQgYXMgYSBtb2R1bGUuCisjCisjICAKKyMgIFVzaW5nIERpZ2l0YWwgSS9PIHdpdGggdGhlIFMvUERJRiBQb3J0CisjICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorIworIyAgSWYgeW91IGhhdmUgYSBQaW5uYWNsZSBvciBGaWppIHdpdGggdGhlIGRpZ2l0YWwgZGF1Z2h0ZXJib2FyZCBhbmQKKyMgIHdhbnQgdG8gc2V0IGl0IGFzIHRoZSBpbnB1dCBzb3VyY2UsIHlvdSBjYW4gdXNlIHRoaXMgcHJvZ3JhbSBpZiB5b3UKKyMgIGhhdmUgdHJvdWJsZSB0cnlpbmcgdG8gZG8gaXQgd2l0aCBhIG1peGVyIHByb2dyYW0gKGJlIHN1cmUgdG8KKyMgIGluc2VydCB0aGUgbW9kdWxlIHdpdGggdGhlIGRpZ2l0YWw9MSBvcHRpb24sIG9yIHNheSBZIHRvIHRoZSBvcHRpb24KKyMgIGR1cmluZyBjb21waWxlZC1pbiBrZXJuZWwgb3BlcmF0aW9uKS4gIFVwb24gc2VsZWN0aW9uIG9mIHRoZSBTL1BESUYKKyMgIHBvcnQsIHlvdSBzaG91bGQgYmUgYWJsZSBtb25pdG9yIGFuZCByZWNvcmQgZnJvbSBpdC4KKyMKKyMgIFRoZXJlIGlzIHNvbWV0aGluZyB0byBub3RlIGFib3V0IHVzaW5nIHRoZSBTL1BESUYgcG9ydC4gIERpZ2l0YWwKKyMgIHRpbWluZyBpcyB0YWtlbiBmcm9tIHRoZSBkaWdpdGFsIHNpZ25hbCwgc28gaWYgYSBzaWduYWwgaXMgbm90CisjICBjb25uZWN0ZWQgdG8gdGhlIHBvcnQgYW5kIGl0IGlzIHNlbGVjdGVkIGFzIHJlY29yZGluZyBpbnB1dCwgeW91CisjICB3aWxsIGZpbmQgUENNIHBsYXliYWNrIHRvIGJlIGRpc3RvcnRlZCBpbiBwbGF5YmFjayByYXRlLiAgQWxzbywKKyMgIGF0dGVtcHRpbmcgdG8gcmVjb3JkIGF0IGEgc2FtcGxpbmcgcmF0ZSBvdGhlciB0aGFuIHRoZSBEQVQgcmF0ZSBtYXkKKyMgIGJlIHByb2JsZW1hdGljIChpLmUuIHRyeWluZyB0byByZWNvcmQgYXQgODAwMEh6IHdoZW4gdGhlIERBVCBzaWduYWwKKyMgIGlzIDQ0MTAwSHopLiAgSWYgeW91IGhhdmUgYSBwcm9ibGVtIHdpdGggdGhpcywgc2V0IHRoZSByZWNvcmRpbmcKKyMgIGlucHV0IHRvIGFuYWxvZyBpZiB5b3UgbmVlZCB0byByZWNvcmQgYXQgYSByYXRlIG90aGVyIHRoYW4gdGhhdCBvZgorIyAgdGhlIERBVCByYXRlLgorIworIworIyAgLS0gU2hlbGwgYXJjaGl2ZSBhdHRhY2hlZCBiZWxvdywganVzdCBydW4gYHNoIE11bHRpU291bmQnIHRvIGV4dHJhY3QuCisjICAgICBDb250YWlucyBQaW5uYWNsZS9GaWppIHV0aWxpdGllcyB0byBjb252ZXJ0IGZpcm13YXJlLCBjb25maWd1cmUKKyMgICAgIGluIG5vbi1QblAgbW9kZSwgYW5kIHNlbGVjdCB0aGUgRElHSVRBTDEgaW5wdXQgZm9yIHRoZSBtaXhlci4KKyMKKyMKKyMhL2Jpbi9zaAorIyBUaGlzIGlzIGEgc2hlbGwgYXJjaGl2ZSAocHJvZHVjZWQgYnkgR05VIHNoYXJ1dGlscyA0LjIpLgorIyBUbyBleHRyYWN0IHRoZSBmaWxlcyBmcm9tIHRoaXMgYXJjaGl2ZSwgc2F2ZSBpdCB0byBzb21lIEZJTEUsIHJlbW92ZQorIyBldmVyeXRoaW5nIGJlZm9yZSB0aGUgYCEvYmluL3NoJyBsaW5lIGFib3ZlLCB0aGVuIHR5cGUgYHNoIEZJTEUnLgorIworIyBNYWRlIG9uIDE5OTgtMTItMDQgMTA6MDcgRVNUIGJ5IDxhbmRyZXd0dkB6dHJhbnNmb3JtLnZlbHNvZnQuY29tPi4KKyMgU291cmNlIGRpcmVjdG9yeSB3YXMgYC9ob21lL2FuZHJld3R2L3Byb2dyYW1taW5nL3Bpbm5hY2xlL3Bpbm5hY2xlJy4KKyMKKyMgRXhpc3RpbmcgZmlsZXMgd2lsbCAqbm90KiBiZSBvdmVyd3JpdHRlbiB1bmxlc3MgYC1jJyBpcyBzcGVjaWZpZWQuCisjCisjIFRoaXMgc2hhciBjb250YWluczoKKyMgbGVuZ3RoIG1vZGUgICAgICAgbmFtZQorIyAtLS0tLS0gLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgICAyMDQ2IC1ydy1ydy1yLS0gTXVsdGlTb3VuZC5kL3NldGRpZ2l0YWwuYworIyAgMTAyMzUgLXJ3LXJ3LXItLSBNdWx0aVNvdW5kLmQvcGlubmFjbGVjZmcuYworIyAgICAxMDYgLXJ3LXJ3LXItLSBNdWx0aVNvdW5kLmQvTWFrZWZpbGUKKyMgICAgMTQxIC1ydy1ydy1yLS0gTXVsdGlTb3VuZC5kL2NvbnYubAorIyAgIDE0NzIgLXJ3LXJ3LXItLSBNdWx0aVNvdW5kLmQvbXNuZHJlc2V0LmMKKyMKK3NhdmVfSUZTPSIke0lGU30iCitJRlM9IiR7SUZTfToiCitnZXR0ZXh0X2Rpcj1GQUlMRUQKK2xvY2FsZV9kaXI9RkFJTEVECitmaXJzdF9wYXJhbT0iJDEiCitmb3IgZGlyIGluICRQQVRICitkbworICBpZiB0ZXN0ICIkZ2V0dGV4dF9kaXIiID0gRkFJTEVEICYmIHRlc3QgLWYgJGRpci9nZXR0ZXh0IFwKKyAgICAgJiYgKCRkaXIvZ2V0dGV4dCAtLXZlcnNpb24gPi9kZXYvbnVsbCAyPiYxKQorICB0aGVuCisgICAgc2V0IGAkZGlyL2dldHRleHQgLS12ZXJzaW9uIDI+JjFgCisgICAgaWYgdGVzdCAiJDMiID0gR05VCisgICAgdGhlbgorICAgICAgZ2V0dGV4dF9kaXI9JGRpcgorICAgIGZpCisgIGZpCisgIGlmIHRlc3QgIiRsb2NhbGVfZGlyIiA9IEZBSUxFRCAmJiB0ZXN0IC1mICRkaXIvc2hhciBcCisgICAgICYmICgkZGlyL3NoYXIgLS1wcmludC10ZXh0LWRvbWFpbi1kaXIgPi9kZXYvbnVsbCAyPiYxKQorICB0aGVuCisgICAgbG9jYWxlX2Rpcj1gJGRpci9zaGFyIC0tcHJpbnQtdGV4dC1kb21haW4tZGlyYAorICBmaQorZG9uZQorSUZTPSIkc2F2ZV9JRlMiCitpZiB0ZXN0ICIkbG9jYWxlX2RpciIgPSBGQUlMRUQgfHwgdGVzdCAiJGdldHRleHRfZGlyIiA9IEZBSUxFRAordGhlbgorICBlY2hvPWVjaG8KK2Vsc2UKKyAgVEVYVERPTUFJTkRJUj0kbG9jYWxlX2RpcgorICBleHBvcnQgVEVYVERPTUFJTkRJUgorICBURVhURE9NQUlOPXNoYXJ1dGlscworICBleHBvcnQgVEVYVERPTUFJTgorICBlY2hvPSIkZ2V0dGV4dF9kaXIvZ2V0dGV4dCAtcyIKK2ZpCit0b3VjaCAtYW0gMTIzMTIzNTk5OSAkJC50b3VjaCA+L2Rldi9udWxsIDI+JjEKK2lmIHRlc3QgISAtZiAxMjMxMjM1OTk5ICYmIHRlc3QgLWYgJCQudG91Y2g7IHRoZW4KKyAgc2hhcl90b3VjaD10b3VjaAorZWxzZQorICBzaGFyX3RvdWNoPToKKyAgZWNobworICAkZWNobyAnV0FSTklORzogbm90IHJlc3RvcmluZyB0aW1lc3RhbXBzLiAgQ29uc2lkZXIgZ2V0dGluZyBhbmQnCisgICRlY2hvICJpbnN0YWxsaW5nIEdOVSBcYHRvdWNoJywgZGlzdHJpYnV0ZWQgaW4gR05VIEZpbGUgVXRpbGl0aWVzLi4uIgorICBlY2hvCitmaQorcm0gLWYgMTIzMTIzNTk5OSAkJC50b3VjaAorIworaWYgbWtkaXIgX3NoMDE0MjY7IHRoZW4KKyAgJGVjaG8gJ3ggLScgJ2NyZWF0aW5nIGxvY2sgZGlyZWN0b3J5JworZWxzZQorICAkZWNobyAnZmFpbGVkIHRvIGNyZWF0ZSBsb2NrIGRpcmVjdG9yeScKKyAgZXhpdCAxCitmaQorIyA9PT09PT09PT09PT09IE11bHRpU291bmQuZC9zZXRkaWdpdGFsLmMgPT09PT09PT09PT09PT0KK2lmIHRlc3QgISAtZCAnTXVsdGlTb3VuZC5kJzsgdGhlbgorICAkZWNobyAneCAtJyAnY3JlYXRpbmcgZGlyZWN0b3J5JyAnTXVsdGlTb3VuZC5kJworICBta2RpciAnTXVsdGlTb3VuZC5kJworZmkKK2lmIHRlc3QgLWYgJ011bHRpU291bmQuZC9zZXRkaWdpdGFsLmMnICYmIHRlc3QgIiRmaXJzdF9wYXJhbSIgIT0gLWM7IHRoZW4KKyAgJGVjaG8gJ3ggLScgU0tJUFBJTkcgJ011bHRpU291bmQuZC9zZXRkaWdpdGFsLmMnICcoZmlsZSBhbHJlYWR5IGV4aXN0cyknCitlbHNlCisgICRlY2hvICd4IC0nIGV4dHJhY3RpbmcgJ011bHRpU291bmQuZC9zZXRkaWdpdGFsLmMnICcodGV4dCknCisgIHNlZCAncy9eWC8vJyA8PCAnU0hBUl9FT0YnID4gJ011bHRpU291bmQuZC9zZXRkaWdpdGFsLmMnICYmCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitYICoKK1ggKiBzZXRkaWdpdGFsLmMgLSBzZXRzIHRoZSBESUdJVEFMMSBpbnB1dCBmb3IgYSBtaXhlcgorWCAqCitYICogQ29weXJpZ2h0IChDKSAxOTk4IEFuZHJldyBWZWxpYXRoCitYICoKK1ggKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorWCAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CitYICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKK1ggKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorWCAqCitYICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCitYICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKK1ggKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCitYICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KK1ggKgorWCAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCitYICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKK1ggKiBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KK1ggKgorWCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1gKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxzeXMvc291bmRjYXJkLmg+CitYCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworWAlpbnQgZmQ7CitYCXVuc2lnbmVkIGxvbmcgcmVjbWFzaywgcmVjc3JjOworWAorWAlpZiAoYXJnYyAhPSAyKSB7CitYCQlmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiBzZXRkaWdpdGFsIDxtaXhlciBkZXZpY2U+XG4iKTsKK1gJCWV4aXQoMSk7CitYCX0KK1gKK1gJaWYgKChmZCA9IG9wZW4oYXJndlsxXSwgT19SRFdSKSkgPCAwKSB7CitYCQlwZXJyb3IoYXJndlsxXSk7CitYCQlleGl0KDEpOworWAl9CitYCitYCWlmIChpb2N0bChmZCwgU09VTkRfTUlYRVJfUkVBRF9SRUNNQVNLLCAmcmVjbWFzaykgPCAwKSB7CitYCQlmcHJpbnRmKHN0ZGVyciwgImVycm9yOiBpb2N0bCByZWFkIHJlY29yZGluZyBtYXNrIGZhaWxlZFxuIik7CitYCQlwZXJyb3IoImlvY3RsIik7CitYCQljbG9zZShmZCk7CitYCQlleGl0KDEpOworWAl9CitYCitYCWlmICghKHJlY21hc2sgJiBTT1VORF9NQVNLX0RJR0lUQUwxKSkgeworWAkJZnByaW50ZihzdGRlcnIsICJlcnJvcjogY2Fubm90IGZpbmQgRElHSVRBTDEgZGV2aWNlIGluIG1peGVyXG4iKTsKK1gJCWNsb3NlKGZkKTsKK1gJCWV4aXQoMSk7CitYCX0KK1gKK1gJaWYgKGlvY3RsKGZkLCBTT1VORF9NSVhFUl9SRUFEX1JFQ1NSQywgJnJlY3NyYykgPCAwKSB7CitYCQlmcHJpbnRmKHN0ZGVyciwgImVycm9yOiBpb2N0bCByZWFkIHJlY29yZGluZyBzb3VyY2UgZmFpbGVkXG4iKTsKK1gJCXBlcnJvcigiaW9jdGwiKTsKK1gJCWNsb3NlKGZkKTsKK1gJCWV4aXQoMSk7CitYCX0KK1gKK1gJcmVjc3JjIHw9IFNPVU5EX01BU0tfRElHSVRBTDE7CitYCQorWAlpZiAoaW9jdGwoZmQsIFNPVU5EX01JWEVSX1dSSVRFX1JFQ1NSQywgJnJlY3NyYykgPCAwKSB7CitYCQlmcHJpbnRmKHN0ZGVyciwgImVycm9yOiBpb2N0bCB3cml0ZSByZWNvcmRpbmcgc291cmNlIGZhaWxlZFxuIik7CitYCQlwZXJyb3IoImlvY3RsIik7CitYCQljbG9zZShmZCk7CitYCQlleGl0KDEpOworWAl9CitYCitYCWNsb3NlKGZkKTsKK1gJCitYCXJldHVybiAwOworfQorU0hBUl9FT0YKKyAgJHNoYXJfdG91Y2ggLWFtIDEyMDQwOTI1OTggJ011bHRpU291bmQuZC9zZXRkaWdpdGFsLmMnICYmCisgIGNobW9kIDA2NjQgJ011bHRpU291bmQuZC9zZXRkaWdpdGFsLmMnIHx8CisgICRlY2hvICdyZXN0b3JlIG9mJyAnTXVsdGlTb3VuZC5kL3NldGRpZ2l0YWwuYycgJ2ZhaWxlZCcKKyAgaWYgKCBtZDVzdW0gLS1oZWxwIDI+JjEgfCBncmVwICdzYWdlOiBtZDVzdW0gXFsnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgJiYgKCBtZDVzdW0gLS12ZXJzaW9uIDI+JjEgfCBncmVwIC12ICd0ZXh0dXRpbHMgMS4xMicgKSA+L2Rldi9udWxsOyB0aGVuCisgICAgbWQ1c3VtIC1jIDw8IFNIQVJfRU9GID4vZGV2L251bGwgMj4mMSBcCisgICAgfHwgJGVjaG8gJ011bHRpU291bmQuZC9zZXRkaWdpdGFsLmM6JyAnTUQ1IGNoZWNrIGZhaWxlZCcKK2U4NzIxN2ZjM2U3MTI4ODEwMmJhNDFmZDgxZjcxZWM0ICBNdWx0aVNvdW5kLmQvc2V0ZGlnaXRhbC5jCitTSEFSX0VPRgorICBlbHNlCisgICAgc2hhcl9jb3VudD0iYExDX0FMTD0gTENfQ1RZUEU9IExBTkc9IHdjIC1jIDwgJ011bHRpU291bmQuZC9zZXRkaWdpdGFsLmMnYCIKKyAgICB0ZXN0IDIwNDYgLWVxICIkc2hhcl9jb3VudCIgfHwKKyAgICAkZWNobyAnTXVsdGlTb3VuZC5kL3NldGRpZ2l0YWwuYzonICdvcmlnaW5hbCBzaXplJyAnMjA0NiwnICdjdXJyZW50IHNpemUnICIkc2hhcl9jb3VudCEiCisgIGZpCitmaQorIyA9PT09PT09PT09PT09IE11bHRpU291bmQuZC9waW5uYWNsZWNmZy5jID09PT09PT09PT09PT09CitpZiB0ZXN0IC1mICdNdWx0aVNvdW5kLmQvcGlubmFjbGVjZmcuYycgJiYgdGVzdCAiJGZpcnN0X3BhcmFtIiAhPSAtYzsgdGhlbgorICAkZWNobyAneCAtJyBTS0lQUElORyAnTXVsdGlTb3VuZC5kL3Bpbm5hY2xlY2ZnLmMnICcoZmlsZSBhbHJlYWR5IGV4aXN0cyknCitlbHNlCisgICRlY2hvICd4IC0nIGV4dHJhY3RpbmcgJ011bHRpU291bmQuZC9waW5uYWNsZWNmZy5jJyAnKHRleHQpJworICBzZWQgJ3MvXlgvLycgPDwgJ1NIQVJfRU9GJyA+ICdNdWx0aVNvdW5kLmQvcGlubmFjbGVjZmcuYycgJiYKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK1ggKgorWCAqIHBpbm5hY2xlY2ZnLmMgLSBQaW5uYWNsZS9GaWppIERldmljZSBDb25maWd1cmF0aW9uIFByb2dyYW0KK1ggKgorWCAqIFRoaXMgaXMgZm9yIE5PTi1QblAgbW9kZSBvbmx5LiAgRm9yIFBuUCBtb2RlLCB1c2UgaXNhcG5wdG9vbHMuCitYICoKK1ggKiBUaGlzIGlzIExpbnV4LXNwZWNpZmljLCBhbmQgbXVzdCBiZSBydW4gd2l0aCByb290IHBlcm1pc3Npb25zLgorWCAqCitYICogUGFydCBvZiB0aGUgVHVydGxlIEJlYWNoIE11bHRpU291bmQgU291bmQgQ2FyZCBEcml2ZXIgZm9yIExpbnV4CitYICoKK1ggKiBDb3B5cmlnaHQgKEMpIDE5OTggQW5kcmV3IFZlbGlhdGgKK1ggKgorWCAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CitYICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKK1ggKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorWCAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCitYICoKK1ggKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKK1ggKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorWCAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKK1ggKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorWCAqCitYICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKK1ggKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorWCAqIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorWCAqCitYICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworWAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vdHlwZXMuaD4KK1gKKyNkZWZpbmUgSVJFR19MT0dERVZJQ0UJCTB4MDcKKyNkZWZpbmUgSVJFR19BQ1RJVkFURQkJMHgzMAorI2RlZmluZSBMRF9BQ1RJVkFURQkJMHgwMQorI2RlZmluZSBMRF9ESVNBQ1RJVkFURQkJMHgwMAorI2RlZmluZSBJUkVHX0VFQ09OVFJPTAkJMHgzRgorI2RlZmluZSBJUkVHX01FTUJBU0VISQkJMHg0MAorI2RlZmluZSBJUkVHX01FTUJBU0VMTwkJMHg0MQorI2RlZmluZSBJUkVHX01FTUNPTlRST0wJCTB4NDIKKyNkZWZpbmUgSVJFR19NRU1SQU5HRUhJCQkweDQzCisjZGVmaW5lIElSRUdfTUVNUkFOR0VMTwkJMHg0NAorI2RlZmluZSBNRU1UWVBFXzhCSVQJCTB4MDAKKyNkZWZpbmUgTUVNVFlQRV8xNkJJVAkJMHgwMgorI2RlZmluZSBNRU1UWVBFX1JBTkdFCQkweDAwCisjZGVmaW5lIE1FTVRZUEVfSElBRERSCQkweDAxCisjZGVmaW5lIElSRUdfSU8wX0JBU0VISQkJMHg2MAorI2RlZmluZSBJUkVHX0lPMF9CQVNFTE8JCTB4NjEKKyNkZWZpbmUgSVJFR19JTzFfQkFTRUhJCQkweDYyCisjZGVmaW5lIElSRUdfSU8xX0JBU0VMTwkJMHg2MworI2RlZmluZSBJUkVHX0lSUV9OVU1CRVIJCTB4NzAKKyNkZWZpbmUgSVJFR19JUlFfVFlQRQkJMHg3MQorI2RlZmluZSBJUlFUWVBFX0hJR0gJCTB4MDIKKyNkZWZpbmUgSVJRVFlQRV9MT1cJCTB4MDAKKyNkZWZpbmUgSVJRVFlQRV9MRVZFTAkJMHgwMQorI2RlZmluZSBJUlFUWVBFX0VER0UJCTB4MDAKK1gKKyNkZWZpbmUgSElCWVRFKHcpCQkoKEJZVEUpKCgoV09SRCkodykgPj4gOCkgJiAweEZGKSkKKyNkZWZpbmUgTE9CWVRFKHcpCQkoKEJZVEUpKHcpKQorI2RlZmluZSBNQUtFV09SRChsb3csaGkpCSgoV09SRCkoKChCWVRFKShsb3cpKXwoKChXT1JEKSgoQllURSkoaGkpKSk8PDgpKSkKK1gKK3R5cGVkZWYgX191OAkJCUJZVEU7Cit0eXBlZGVmIF9fdTE2CQkJVVNIT1JUOwordHlwZWRlZiBfX3UxNgkJCVdPUkQ7CitYCitzdGF0aWMgaW50IGNvbmZpZ19wb3J0ID0gLTE7CitYCitzdGF0aWMgaW50IG1zbmRfd3JpdGVfY2ZnKGludCBjZmcsIGludCByZWcsIGludCB2YWx1ZSkKK3sKK1gJb3V0YihyZWcsIGNmZyk7CitYCW91dGIodmFsdWUsIGNmZyArIDEpOworWAlpZiAodmFsdWUgIT0gaW5iKGNmZyArIDEpKSB7CitYCQlmcHJpbnRmKHN0ZGVyciwgImVycm9yOiBtc25kX3dyaXRlX2NmZzogSS9PIGVycm9yXG4iKTsKK1gJCXJldHVybiAtRUlPOworWAl9CitYCXJldHVybiAwOworfQorWAorc3RhdGljIGludCBtc25kX3JlYWRfY2ZnKGludCBjZmcsIGludCByZWcpCit7CitYCW91dGIocmVnLCBjZmcpOworWAlyZXR1cm4gaW5iKGNmZyArIDEpOworfQorWAorc3RhdGljIGludCBtc25kX3dyaXRlX2NmZ19pbzAoaW50IGNmZywgaW50IG51bSwgV09SRCBpbykKK3sKK1gJaWYgKG1zbmRfd3JpdGVfY2ZnKGNmZywgSVJFR19MT0dERVZJQ0UsIG51bSkpCitYCQlyZXR1cm4gLUVJTzsKK1gJaWYgKG1zbmRfd3JpdGVfY2ZnKGNmZywgSVJFR19JTzBfQkFTRUhJLCBISUJZVEUoaW8pKSkKK1gJCXJldHVybiAtRUlPOworWAlpZiAobXNuZF93cml0ZV9jZmcoY2ZnLCBJUkVHX0lPMF9CQVNFTE8sIExPQllURShpbykpKQorWAkJcmV0dXJuIC1FSU87CitYCXJldHVybiAwOworfQorWAorc3RhdGljIGludCBtc25kX3JlYWRfY2ZnX2lvMChpbnQgY2ZnLCBpbnQgbnVtLCBXT1JEICppbykKK3sKK1gJaWYgKG1zbmRfd3JpdGVfY2ZnKGNmZywgSVJFR19MT0dERVZJQ0UsIG51bSkpCitYCQlyZXR1cm4gLUVJTzsKK1gJCitYCSppbyA9IE1BS0VXT1JEKG1zbmRfcmVhZF9jZmcoY2ZnLCBJUkVHX0lPMF9CQVNFTE8pLAorWAkJICAgICAgIG1zbmRfcmVhZF9jZmcoY2ZnLCBJUkVHX0lPMF9CQVNFSEkpKTsKK1gKK1gJcmV0dXJuIDA7Cit9CitYCitzdGF0aWMgaW50IG1zbmRfd3JpdGVfY2ZnX2lvMShpbnQgY2ZnLCBpbnQgbnVtLCBXT1JEIGlvKQoreworWAlpZiAobXNuZF93cml0ZV9jZmcoY2ZnLCBJUkVHX0xPR0RFVklDRSwgbnVtKSkKK1gJCXJldHVybiAtRUlPOworWAlpZiAobXNuZF93cml0ZV9jZmcoY2ZnLCBJUkVHX0lPMV9CQVNFSEksIEhJQllURShpbykpKQorWAkJcmV0dXJuIC1FSU87CitYCWlmIChtc25kX3dyaXRlX2NmZyhjZmcsIElSRUdfSU8xX0JBU0VMTywgTE9CWVRFKGlvKSkpCitYCQlyZXR1cm4gLUVJTzsKK1gJcmV0dXJuIDA7Cit9CitYCitzdGF0aWMgaW50IG1zbmRfcmVhZF9jZmdfaW8xKGludCBjZmcsIGludCBudW0sIFdPUkQgKmlvKQoreworWAlpZiAobXNuZF93cml0ZV9jZmcoY2ZnLCBJUkVHX0xPR0RFVklDRSwgbnVtKSkKK1gJCXJldHVybiAtRUlPOworWAkKK1gJKmlvID0gTUFLRVdPUkQobXNuZF9yZWFkX2NmZyhjZmcsIElSRUdfSU8xX0JBU0VMTyksCitYCQkgICAgICAgbXNuZF9yZWFkX2NmZyhjZmcsIElSRUdfSU8xX0JBU0VISSkpOworWAorWAlyZXR1cm4gMDsKK30KK1gKK3N0YXRpYyBpbnQgbXNuZF93cml0ZV9jZmdfaXJxKGludCBjZmcsIGludCBudW0sIFdPUkQgaXJxKQoreworWAlpZiAobXNuZF93cml0ZV9jZmcoY2ZnLCBJUkVHX0xPR0RFVklDRSwgbnVtKSkKK1gJCXJldHVybiAtRUlPOworWAlpZiAobXNuZF93cml0ZV9jZmcoY2ZnLCBJUkVHX0lSUV9OVU1CRVIsIExPQllURShpcnEpKSkKK1gJCXJldHVybiAtRUlPOworWAlpZiAobXNuZF93cml0ZV9jZmcoY2ZnLCBJUkVHX0lSUV9UWVBFLCBJUlFUWVBFX0VER0UpKQorWAkJcmV0dXJuIC1FSU87CitYCXJldHVybiAwOworfQorWAorc3RhdGljIGludCBtc25kX3JlYWRfY2ZnX2lycShpbnQgY2ZnLCBpbnQgbnVtLCBXT1JEICppcnEpCit7CitYCWlmIChtc25kX3dyaXRlX2NmZyhjZmcsIElSRUdfTE9HREVWSUNFLCBudW0pKQorWAkJcmV0dXJuIC1FSU87CitYCQorWAkqaXJxID0gbXNuZF9yZWFkX2NmZyhjZmcsIElSRUdfSVJRX05VTUJFUik7CitYCitYCXJldHVybiAwOworfQorWAorc3RhdGljIGludCBtc25kX3dyaXRlX2NmZ19tZW0oaW50IGNmZywgaW50IG51bSwgaW50IG1lbSkKK3sKK1gJV09SRCB3bWVtOworWAorWAltZW0gPj49IDg7CitYCW1lbSAmPSAweGZmZjsKK1gJd21lbSA9IChXT1JEKW1lbTsKK1gJaWYgKG1zbmRfd3JpdGVfY2ZnKGNmZywgSVJFR19MT0dERVZJQ0UsIG51bSkpCitYCQlyZXR1cm4gLUVJTzsKK1gJaWYgKG1zbmRfd3JpdGVfY2ZnKGNmZywgSVJFR19NRU1CQVNFSEksIEhJQllURSh3bWVtKSkpCitYCQlyZXR1cm4gLUVJTzsKK1gJaWYgKG1zbmRfd3JpdGVfY2ZnKGNmZywgSVJFR19NRU1CQVNFTE8sIExPQllURSh3bWVtKSkpCitYCQlyZXR1cm4gLUVJTzsKK1gJaWYgKHdtZW0gJiYgbXNuZF93cml0ZV9jZmcoY2ZnLCBJUkVHX01FTUNPTlRST0wsIChNRU1UWVBFX0hJQUREUiB8IE1FTVRZUEVfMTZCSVQpKSkKK1gJCXJldHVybiAtRUlPOworWAlyZXR1cm4gMDsKK30KK1gKK3N0YXRpYyBpbnQgbXNuZF9yZWFkX2NmZ19tZW0oaW50IGNmZywgaW50IG51bSwgaW50ICptZW0pCit7CitYCWlmIChtc25kX3dyaXRlX2NmZyhjZmcsIElSRUdfTE9HREVWSUNFLCBudW0pKQorWAkJcmV0dXJuIC1FSU87CitYCQorWAkqbWVtID0gTUFLRVdPUkQobXNuZF9yZWFkX2NmZyhjZmcsIElSRUdfTUVNQkFTRUxPKSwKK1gJCQltc25kX3JlYWRfY2ZnKGNmZywgSVJFR19NRU1CQVNFSEkpKTsKK1gJKm1lbSA8PD0gODsKK1gKK1gJcmV0dXJuIDA7Cit9CitYCitzdGF0aWMgaW50IG1zbmRfYWN0aXZhdGVfbG9naWNhbChpbnQgY2ZnLCBpbnQgbnVtKQoreworWAlpZiAobXNuZF93cml0ZV9jZmcoY2ZnLCBJUkVHX0xPR0RFVklDRSwgbnVtKSkKK1gJCXJldHVybiAtRUlPOworWAlpZiAobXNuZF93cml0ZV9jZmcoY2ZnLCBJUkVHX0FDVElWQVRFLCBMRF9BQ1RJVkFURSkpCitYCQlyZXR1cm4gLUVJTzsKK1gJcmV0dXJuIDA7Cit9CitYCitzdGF0aWMgaW50IG1zbmRfd3JpdGVfY2ZnX2xvZ2ljYWwoaW50IGNmZywgaW50IG51bSwgV09SRCBpbzAsIFdPUkQgaW8xLCBXT1JEIGlycSwgaW50IG1lbSkKK3sKK1gJaWYgKG1zbmRfd3JpdGVfY2ZnKGNmZywgSVJFR19MT0dERVZJQ0UsIG51bSkpCitYCQlyZXR1cm4gLUVJTzsKK1gJaWYgKG1zbmRfd3JpdGVfY2ZnX2lvMChjZmcsIG51bSwgaW8wKSkKK1gJCXJldHVybiAtRUlPOworWAlpZiAobXNuZF93cml0ZV9jZmdfaW8xKGNmZywgbnVtLCBpbzEpKQorWAkJcmV0dXJuIC1FSU87CitYCWlmIChtc25kX3dyaXRlX2NmZ19pcnEoY2ZnLCBudW0sIGlycSkpCitYCQlyZXR1cm4gLUVJTzsKK1gJaWYgKG1zbmRfd3JpdGVfY2ZnX21lbShjZmcsIG51bSwgbWVtKSkKK1gJCXJldHVybiAtRUlPOworWAlpZiAobXNuZF9hY3RpdmF0ZV9sb2dpY2FsKGNmZywgbnVtKSkKK1gJCXJldHVybiAtRUlPOworWAlyZXR1cm4gMDsKK30KK1gKK3N0YXRpYyBpbnQgbXNuZF9yZWFkX2NmZ19sb2dpY2FsKGludCBjZmcsIGludCBudW0sIFdPUkQgKmlvMCwgV09SRCAqaW8xLCBXT1JEICppcnEsIGludCAqbWVtKQoreworWAlpZiAobXNuZF93cml0ZV9jZmcoY2ZnLCBJUkVHX0xPR0RFVklDRSwgbnVtKSkKK1gJCXJldHVybiAtRUlPOworWAlpZiAobXNuZF9yZWFkX2NmZ19pbzAoY2ZnLCBudW0sIGlvMCkpCitYCQlyZXR1cm4gLUVJTzsKK1gJaWYgKG1zbmRfcmVhZF9jZmdfaW8xKGNmZywgbnVtLCBpbzEpKQorWAkJcmV0dXJuIC1FSU87CitYCWlmIChtc25kX3JlYWRfY2ZnX2lycShjZmcsIG51bSwgaXJxKSkKK1gJCXJldHVybiAtRUlPOworWAlpZiAobXNuZF9yZWFkX2NmZ19tZW0oY2ZnLCBudW0sIG1lbSkpCitYCQlyZXR1cm4gLUVJTzsKK1gJcmV0dXJuIDA7Cit9CitYCitzdGF0aWMgdm9pZCB1c2FnZSh2b2lkKQoreworWAlmcHJpbnRmKHN0ZGVyciwKK1gJCSJcbiIKK1gJCSJwaW5uYWNsZWNmZyAxLjBcbiIKK1gJCSJcbiIKK1gJCSJ1c2FnZTogcGlubmFjbGVjZmcgPGNvbmZpZyBwb3J0PiBbZGV2aWNlIGNvbmZpZ11cbiIKK1gJCSJcbiIKK1gJCSJUaGlzIGlzIGZvciB1c2Ugd2l0aCB0aGUgY2FyZCBpbiBOT04tUG5QIG1vZGUgb25seS5cbiIKK1gJCSJcbiIKK1gJCSJBdmFpbGFibGUgZGV2aWNlcyAobm90IGFsbCBhdmFpbGFibGUgZm9yIEZpamkpOlxuIgorWAkJIlxuIgorWAkJIiAgICAgICAgRGV2aWNlICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvblxuIgorWAkJIiAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIgorWAkJIiAgICAgICAgcmVzZXQgICAgICAgICAgICAgICAgICAgICAgICBSZXNldCBhbGwgZGV2aWNlcyAoaS5lLiBkaXNhYmxlKVxuIgorWAkJIiAgICAgICAgc2hvdyAgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5IGN1cnJlbnQgZGV2aWNlIGNvbmZpZ3VyYXRpb25zXG4iCitYCQkiXG4iCitYCQkiICAgICAgICBkc3AgPGlvPiA8aXJxPiA8bWVtPiAgICAgICAgIEF1ZGlvIGRldmljZVxuIgorWAkJIiAgICAgICAgbXB1IDxpbz4gPGlycT4gICAgICAgICAgICAgICBJbnRlcm5hbCBLdXJ6d2VpbCBzeW50aFxuIgorWAkJIiAgICAgICAgaWRlIDxpbzA+IDxpbzE+IDxpcnE+ICAgICAgICBPbi1ib2FyZCBJREUgY29udHJvbGxlclxuIgorWAkJIiAgICAgICAgam95c3RpY2sgPGlvPiAgICAgICAgICAgICAgICBKb3lzdGljayBwb3J0XG4iCitYCQkiXG4iKTsKK1gJZXhpdCgxKTsKK30KK1gKK3N0YXRpYyBpbnQgY2ZnX3Jlc2V0KHZvaWQpCit7CitYCWludCBpOworWAorWAlmb3IgKGkgPSAwOyBpIDwgNDsgKytpKQorWAkJbXNuZF93cml0ZV9jZmdfbG9naWNhbChjb25maWdfcG9ydCwgaSwgMCwgMCwgMCwgMCk7CitYCQorWAlyZXR1cm4gMDsKK30KK1gKK3N0YXRpYyBpbnQgY2ZnX3Nob3codm9pZCkKK3sKK1gJaW50IGk7CitYCWludCBjb3VudCA9IDA7CitYCitYCWZvciAoaSA9IDA7IGkgPCA0OyArK2kpIHsKK1gJCVdPUkQgaW8wLCBpbzEsIGlycTsKK1gJCWludCBtZW07CitYCQltc25kX3JlYWRfY2ZnX2xvZ2ljYWwoY29uZmlnX3BvcnQsIGksICZpbzAsICZpbzEsICZpcnEsICZtZW0pOworWAkJc3dpdGNoIChpKSB7CitYCQljYXNlIDA6CitYCQkJaWYgKGlvMCB8fCBpcnEgfHwgbWVtKSB7CitYCQkJCXByaW50ZigiZHNwIDB4JXggJWQgMHgleFxuIiwgaW8wLCBpcnEsIG1lbSk7CitYCQkJCSsrY291bnQ7CitYCQkJfQorWAkJCWJyZWFrOworWAkJY2FzZSAxOgorWAkJCWlmIChpbzAgfHwgaXJxKSB7CitYCQkJCXByaW50ZigibXB1IDB4JXggJWRcbiIsIGlvMCwgaXJxKTsKK1gJCQkJKytjb3VudDsKK1gJCQl9CitYCQkJYnJlYWs7CitYCQljYXNlIDI6CitYCQkJaWYgKGlvMCB8fCBpbzEgfHwgaXJxKSB7CitYCQkJCXByaW50ZigiaWRlIDB4JXggMHgleCAlZFxuIiwgaW8wLCBpbzEsIGlycSk7CitYCQkJCSsrY291bnQ7CitYCQkJfQorWAkJCWJyZWFrOworWAkJY2FzZSAzOgorWAkJCWlmIChpbzApIHsKK1gJCQkJcHJpbnRmKCJqb3lzdGljayAweCV4XG4iLCBpbzApOworWAkJCQkrK2NvdW50OworWAkJCX0KK1gJCQlicmVhazsKK1gJCX0KK1gJfQorWAorWAlpZiAoY291bnQgPT0gMCkKK1gJCWZwcmludGYoc3RkZXJyLCAibm8gZGV2aWNlcyBjb25maWd1cmVkXG4iKTsKK1gJCitYCXJldHVybiAwOworfQorWAorc3RhdGljIGludCBjZmdfZHNwKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CitYCWludCBpbywgaXJxLCBtZW07CitYCitYCWlmIChhcmdjIDwgMyB8fAorWAkgICAgc3NjYW5mKGFyZ3ZbMF0sICIweCV4IiwgJmlvKSAhPSAxIHx8CitYCSAgICBzc2NhbmYoYXJndlsxXSwgIiVkIiwgJmlycSkgIT0gMSB8fAorWAkgICAgc3NjYW5mKGFyZ3ZbMl0sICIweCV4IiwgJm1lbSkgIT0gMSkKK1gJCXVzYWdlKCk7CitYCitYCWlmICghKGlvID09IDB4MjkwIHx8CitYCSAgICAgIGlvID09IDB4MjYwIHx8CitYCSAgICAgIGlvID09IDB4MjUwIHx8CitYCSAgICAgIGlvID09IDB4MjQwIHx8CitYCSAgICAgIGlvID09IDB4MjMwIHx8CitYCSAgICAgIGlvID09IDB4MjIwIHx8CitYCSAgICAgIGlvID09IDB4MjEwIHx8CitYCSAgICAgIGlvID09IDB4M2UwKSkgeworWAkJZnByaW50ZihzdGRlcnIsICJlcnJvcjogaW8gbXVzdCBiZSBvbmUgb2YgIgorWAkJCSIyMTAsIDIyMCwgMjMwLCAyNDAsIDI1MCwgMjYwLCAyOTAsIG9yIDNFMFxuIik7CitYCQl1c2FnZSgpOworWAl9CitYCQorWAlpZiAoIShpcnEgPT0gNSB8fAorWAkgICAgICBpcnEgPT0gNyB8fAorWAkgICAgICBpcnEgPT0gOSB8fAorWAkgICAgICBpcnEgPT0gMTAgfHwKK1gJICAgICAgaXJxID09IDExIHx8CitYCSAgICAgIGlycSA9PSAxMikpIHsKK1gJCWZwcmludGYoc3RkZXJyLCAiZXJyb3I6IGlycSBtdXN0IGJlIG9uZSBvZiAiCitYCQkJIjUsIDcsIDksIDEwLCAxMSBvciAxMlxuIik7CitYCQl1c2FnZSgpOworWAl9CitYCitYCWlmICghKG1lbSA9PSAweGIwMDAwIHx8CitYCSAgICAgIG1lbSA9PSAweGM4MDAwIHx8CitYCSAgICAgIG1lbSA9PSAweGQwMDAwIHx8CitYCSAgICAgIG1lbSA9PSAweGQ4MDAwIHx8CitYCSAgICAgIG1lbSA9PSAweGUwMDAwIHx8CitYCSAgICAgIG1lbSA9PSAweGU4MDAwKSkgeworWAkJZnByaW50ZihzdGRlcnIsICJlcnJvcjogbWVtIG11c3QgYmUgb25lIG9mICIKK1gJCQkiMHhiMDAwMCwgMHhjODAwMCwgMHhkMDAwMCwgMHhkODAwMCwgMHhlMDAwMCBvciAweGU4MDAwXG4iKTsKK1gJCXVzYWdlKCk7CitYCX0KK1gKK1gJcmV0dXJuIG1zbmRfd3JpdGVfY2ZnX2xvZ2ljYWwoY29uZmlnX3BvcnQsIDAsIGlvLCAwLCBpcnEsIG1lbSk7Cit9CitYCitzdGF0aWMgaW50IGNmZ19tcHUoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKK1gJaW50IGlvLCBpcnE7CitYCitYCWlmIChhcmdjIDwgMiB8fAorWAkgICAgc3NjYW5mKGFyZ3ZbMF0sICIweCV4IiwgJmlvKSAhPSAxIHx8CitYCSAgICBzc2NhbmYoYXJndlsxXSwgIiVkIiwgJmlycSkgIT0gMSkKK1gJCXVzYWdlKCk7CitYCQorWAlyZXR1cm4gbXNuZF93cml0ZV9jZmdfbG9naWNhbChjb25maWdfcG9ydCwgMSwgaW8sIDAsIGlycSwgMCk7Cit9CitYCitzdGF0aWMgaW50IGNmZ19pZGUoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKK1gJaW50IGlvMCwgaW8xLCBpcnE7CitYCitYCWlmIChhcmdjIDwgMyB8fAorWAkgICAgc3NjYW5mKGFyZ3ZbMF0sICIweCV4IiwgJmlvMCkgIT0gMSB8fAorWAkgICAgc3NjYW5mKGFyZ3ZbMF0sICIweCV4IiwgJmlvMSkgIT0gMSB8fAorWAkgICAgc3NjYW5mKGFyZ3ZbMV0sICIlZCIsICZpcnEpICE9IDEpCitYCQl1c2FnZSgpOworWAkKK1gJcmV0dXJuIG1zbmRfd3JpdGVfY2ZnX2xvZ2ljYWwoY29uZmlnX3BvcnQsIDIsIGlvMCwgaW8xLCBpcnEsIDApOworfQorWAorc3RhdGljIGludCBjZmdfam95c3RpY2soaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKK1gJaW50IGlvOworWAorWAlpZiAoYXJnYyA8IDEgfHwKK1gJICAgIHNzY2FuZihhcmd2WzBdLCAiMHgleCIsICZpbykgIT0gMSkKK1gJCXVzYWdlKCk7CitYCQorWAlyZXR1cm4gbXNuZF93cml0ZV9jZmdfbG9naWNhbChjb25maWdfcG9ydCwgMywgaW8sIDAsIDAsIDApOworfQorWAoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKK1gJY2hhciAqZGV2aWNlOworWAlpbnQgcnYgPSAwOworWAorWAktLWFyZ2M7ICsrYXJndjsKK1gKK1gJaWYgKGFyZ2MgPCAyKQorWAkJdXNhZ2UoKTsKK1gKK1gJc3NjYW5mKGFyZ3ZbMF0sICIweCV4IiwgJmNvbmZpZ19wb3J0KTsKK1gJaWYgKGNvbmZpZ19wb3J0ICE9IDB4MjUwICYmIGNvbmZpZ19wb3J0ICE9IDB4MjYwICYmIGNvbmZpZ19wb3J0ICE9IDB4MjcwKSB7CitYCQlmcHJpbnRmKHN0ZGVyciwgImVycm9yOiA8Y29uZmlnIHBvcnQ+IG11c3QgYmUgMHgyNTAsIDB4MjYwIG9yIDB4MjcwXG4iKTsKK1gJCWV4aXQoMSk7CitYCX0KK1gJaWYgKGlvcGVybShjb25maWdfcG9ydCwgMiwgMSkpIHsKK1gJCXBlcnJvcigiaW9wZXJtIik7CitYCQlmcHJpbnRmKHN0ZGVyciwgIm5vdGU6IHBpbm5hY2xlY2ZnIG11c3QgYmUgcnVuIGFzIHJvb3RcbiIpOworWAkJZXhpdCgxKTsKK1gJfQorWAlkZXZpY2UgPSBhcmd2WzFdOworWAorWAlhcmdjIC09IDI7IGFyZ3YgKz0gMjsKK1gKK1gJaWYgKHN0cmNtcChkZXZpY2UsICJyZXNldCIpID09IDApCitYCQlydiA9IGNmZ19yZXNldCgpOworWAllbHNlIGlmIChzdHJjbXAoZGV2aWNlLCAic2hvdyIpID09IDApCitYCQlydiA9IGNmZ19zaG93KCk7CitYCWVsc2UgaWYgKHN0cmNtcChkZXZpY2UsICJkc3AiKSA9PSAwKQorWAkJcnYgPSBjZmdfZHNwKGFyZ2MsIGFyZ3YpOworWAllbHNlIGlmIChzdHJjbXAoZGV2aWNlLCAibXB1IikgPT0gMCkKK1gJCXJ2ID0gY2ZnX21wdShhcmdjLCBhcmd2KTsKK1gJZWxzZSBpZiAoc3RyY21wKGRldmljZSwgImlkZSIpID09IDApCitYCQlydiA9IGNmZ19pZGUoYXJnYywgYXJndik7CitYCWVsc2UgaWYgKHN0cmNtcChkZXZpY2UsICJqb3lzdGljayIpID09IDApCitYCQlydiA9IGNmZ19qb3lzdGljayhhcmdjLCBhcmd2KTsKK1gJZWxzZSB7CitYCQlmcHJpbnRmKHN0ZGVyciwgImVycm9yOiB1bmtub3duIGRldmljZSAlc1xuIiwgZGV2aWNlKTsKK1gJCXVzYWdlKCk7CitYCX0KK1gKK1gJaWYgKHJ2KQorWAkJZnByaW50ZihzdGRlcnIsICJlcnJvcjogZGV2aWNlIGNvbmZpZ3VyYXRpb24gZmFpbGVkXG4iKTsKK1gJCitYCXJldHVybiAwOworfQorU0hBUl9FT0YKKyAgJHNoYXJfdG91Y2ggLWFtIDEyMDQwOTI1OTggJ011bHRpU291bmQuZC9waW5uYWNsZWNmZy5jJyAmJgorICBjaG1vZCAwNjY0ICdNdWx0aVNvdW5kLmQvcGlubmFjbGVjZmcuYycgfHwKKyAgJGVjaG8gJ3Jlc3RvcmUgb2YnICdNdWx0aVNvdW5kLmQvcGlubmFjbGVjZmcuYycgJ2ZhaWxlZCcKKyAgaWYgKCBtZDVzdW0gLS1oZWxwIDI+JjEgfCBncmVwICdzYWdlOiBtZDVzdW0gXFsnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgJiYgKCBtZDVzdW0gLS12ZXJzaW9uIDI+JjEgfCBncmVwIC12ICd0ZXh0dXRpbHMgMS4xMicgKSA+L2Rldi9udWxsOyB0aGVuCisgICAgbWQ1c3VtIC1jIDw8IFNIQVJfRU9GID4vZGV2L251bGwgMj4mMSBcCisgICAgfHwgJGVjaG8gJ011bHRpU291bmQuZC9waW5uYWNsZWNmZy5jOicgJ01ENSBjaGVjayBmYWlsZWQnCiszNjZiZGYyN2YwZGI3NjdhM2M3OTIxZDBhNmRiMjBmZSAgTXVsdGlTb3VuZC5kL3Bpbm5hY2xlY2ZnLmMKK1NIQVJfRU9GCisgIGVsc2UKKyAgICBzaGFyX2NvdW50PSJgTENfQUxMPSBMQ19DVFlQRT0gTEFORz0gd2MgLWMgPCAnTXVsdGlTb3VuZC5kL3Bpbm5hY2xlY2ZnLmMnYCIKKyAgICB0ZXN0IDEwMjM1IC1lcSAiJHNoYXJfY291bnQiIHx8CisgICAgJGVjaG8gJ011bHRpU291bmQuZC9waW5uYWNsZWNmZy5jOicgJ29yaWdpbmFsIHNpemUnICcxMDIzNSwnICdjdXJyZW50IHNpemUnICIkc2hhcl9jb3VudCEiCisgIGZpCitmaQorIyA9PT09PT09PT09PT09IE11bHRpU291bmQuZC9NYWtlZmlsZSA9PT09PT09PT09PT09PQoraWYgdGVzdCAtZiAnTXVsdGlTb3VuZC5kL01ha2VmaWxlJyAmJiB0ZXN0ICIkZmlyc3RfcGFyYW0iICE9IC1jOyB0aGVuCisgICRlY2hvICd4IC0nIFNLSVBQSU5HICdNdWx0aVNvdW5kLmQvTWFrZWZpbGUnICcoZmlsZSBhbHJlYWR5IGV4aXN0cyknCitlbHNlCisgICRlY2hvICd4IC0nIGV4dHJhY3RpbmcgJ011bHRpU291bmQuZC9NYWtlZmlsZScgJyh0ZXh0KScKKyAgc2VkICdzL15YLy8nIDw8ICdTSEFSX0VPRicgPiAnTXVsdGlTb3VuZC5kL01ha2VmaWxlJyAmJgorQ0MJPSBnY2MKK0NGTEFHUwk9IC1PCitQUk9HUwk9IHNldGRpZ2l0YWwgbXNuZHJlc2V0IHBpbm5hY2xlY2ZnIGNvbnYKK1gKK2FsbDogJChQUk9HUykKK1gKK2NsZWFuOgorWAlybSAtZiAkKFBST0dTKQorU0hBUl9FT0YKKyAgJHNoYXJfdG91Y2ggLWFtIDEyMDQwOTIzOTggJ011bHRpU291bmQuZC9NYWtlZmlsZScgJiYKKyAgY2htb2QgMDY2NCAnTXVsdGlTb3VuZC5kL01ha2VmaWxlJyB8fAorICAkZWNobyAncmVzdG9yZSBvZicgJ011bHRpU291bmQuZC9NYWtlZmlsZScgJ2ZhaWxlZCcKKyAgaWYgKCBtZDVzdW0gLS1oZWxwIDI+JjEgfCBncmVwICdzYWdlOiBtZDVzdW0gXFsnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgJiYgKCBtZDVzdW0gLS12ZXJzaW9uIDI+JjEgfCBncmVwIC12ICd0ZXh0dXRpbHMgMS4xMicgKSA+L2Rldi9udWxsOyB0aGVuCisgICAgbWQ1c3VtIC1jIDw8IFNIQVJfRU9GID4vZGV2L251bGwgMj4mMSBcCisgICAgfHwgJGVjaG8gJ011bHRpU291bmQuZC9NYWtlZmlsZTonICdNRDUgY2hlY2sgZmFpbGVkJworNzZjYThiYjQ0ZTM4ODJlZGNmNzljOTdkZjZjODE4NDUgIE11bHRpU291bmQuZC9NYWtlZmlsZQorU0hBUl9FT0YKKyAgZWxzZQorICAgIHNoYXJfY291bnQ9ImBMQ19BTEw9IExDX0NUWVBFPSBMQU5HPSB3YyAtYyA8ICdNdWx0aVNvdW5kLmQvTWFrZWZpbGUnYCIKKyAgICB0ZXN0IDEwNiAtZXEgIiRzaGFyX2NvdW50IiB8fAorICAgICRlY2hvICdNdWx0aVNvdW5kLmQvTWFrZWZpbGU6JyAnb3JpZ2luYWwgc2l6ZScgJzEwNiwnICdjdXJyZW50IHNpemUnICIkc2hhcl9jb3VudCEiCisgIGZpCitmaQorIyA9PT09PT09PT09PT09IE11bHRpU291bmQuZC9jb252LmwgPT09PT09PT09PT09PT0KK2lmIHRlc3QgLWYgJ011bHRpU291bmQuZC9jb252LmwnICYmIHRlc3QgIiRmaXJzdF9wYXJhbSIgIT0gLWM7IHRoZW4KKyAgJGVjaG8gJ3ggLScgU0tJUFBJTkcgJ011bHRpU291bmQuZC9jb252LmwnICcoZmlsZSBhbHJlYWR5IGV4aXN0cyknCitlbHNlCisgICRlY2hvICd4IC0nIGV4dHJhY3RpbmcgJ011bHRpU291bmQuZC9jb252LmwnICcodGV4dCknCisgIHNlZCAncy9eWC8vJyA8PCAnU0hBUl9FT0YnID4gJ011bHRpU291bmQuZC9jb252LmwnICYmCislJQorWyBcblx0LFxyXQorXDsuKgorREIKK1swLTlBLUZhLWZdK0gJeyBpbnQgbjsgc3NjYW5mKHl5dGV4dCwgIiV4SCIsICZuKTsgcHJpbnRmKCIlYyIsIG4pOyB9CislJQoraW50IHl5d3JhcCgpIHsgcmV0dXJuIDE7IH0KK21haW4oKSB7IHl5bGV4KCk7IH0KK1NIQVJfRU9GCisgICRzaGFyX3RvdWNoIC1hbSAwODI4MjMxNzk4ICdNdWx0aVNvdW5kLmQvY29udi5sJyAmJgorICBjaG1vZCAwNjY0ICdNdWx0aVNvdW5kLmQvY29udi5sJyB8fAorICAkZWNobyAncmVzdG9yZSBvZicgJ011bHRpU291bmQuZC9jb252LmwnICdmYWlsZWQnCisgIGlmICggbWQ1c3VtIC0taGVscCAyPiYxIHwgZ3JlcCAnc2FnZTogbWQ1c3VtIFxbJyApID4vZGV2L251bGwgMj4mMSBcCisgICYmICggbWQ1c3VtIC0tdmVyc2lvbiAyPiYxIHwgZ3JlcCAtdiAndGV4dHV0aWxzIDEuMTInICkgPi9kZXYvbnVsbDsgdGhlbgorICAgIG1kNXN1bSAtYyA8PCBTSEFSX0VPRiA+L2Rldi9udWxsIDI+JjEgXAorICAgIHx8ICRlY2hvICdNdWx0aVNvdW5kLmQvY29udi5sOicgJ01ENSBjaGVjayBmYWlsZWQnCitkMjQxMWZjMzJjZDcxYTAwZGNkYzFmMDA5ZTg1OGRkMiAgTXVsdGlTb3VuZC5kL2NvbnYubAorU0hBUl9FT0YKKyAgZWxzZQorICAgIHNoYXJfY291bnQ9ImBMQ19BTEw9IExDX0NUWVBFPSBMQU5HPSB3YyAtYyA8ICdNdWx0aVNvdW5kLmQvY29udi5sJ2AiCisgICAgdGVzdCAxNDEgLWVxICIkc2hhcl9jb3VudCIgfHwKKyAgICAkZWNobyAnTXVsdGlTb3VuZC5kL2NvbnYubDonICdvcmlnaW5hbCBzaXplJyAnMTQxLCcgJ2N1cnJlbnQgc2l6ZScgIiRzaGFyX2NvdW50ISIKKyAgZmkKK2ZpCisjID09PT09PT09PT09PT0gTXVsdGlTb3VuZC5kL21zbmRyZXNldC5jID09PT09PT09PT09PT09CitpZiB0ZXN0IC1mICdNdWx0aVNvdW5kLmQvbXNuZHJlc2V0LmMnICYmIHRlc3QgIiRmaXJzdF9wYXJhbSIgIT0gLWM7IHRoZW4KKyAgJGVjaG8gJ3ggLScgU0tJUFBJTkcgJ011bHRpU291bmQuZC9tc25kcmVzZXQuYycgJyhmaWxlIGFscmVhZHkgZXhpc3RzKScKK2Vsc2UKKyAgJGVjaG8gJ3ggLScgZXh0cmFjdGluZyAnTXVsdGlTb3VuZC5kL21zbmRyZXNldC5jJyAnKHRleHQpJworICBzZWQgJ3MvXlgvLycgPDwgJ1NIQVJfRU9GJyA+ICdNdWx0aVNvdW5kLmQvbXNuZHJlc2V0LmMnICYmCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitYICoKK1ggKiBtc25kcmVzZXQuYyAtIHJlc2V0cyB0aGUgTXVsdGlTb3VuZCBjYXJkCitYICoKK1ggKiBDb3B5cmlnaHQgKEMpIDE5OTggQW5kcmV3IFZlbGlhdGgKK1ggKgorWCAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CitYICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKK1ggKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorWCAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCitYICoKK1ggKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKK1ggKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorWCAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKK1ggKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorWCAqCitYICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKK1ggKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorWCAqIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorWCAqCitYICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworWAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPHN5cy9zb3VuZGNhcmQuaD4KK1gKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CitYCWludCBmZDsKK1gKK1gJaWYgKGFyZ2MgIT0gMikgeworWAkJZnByaW50ZihzdGRlcnIsICJ1c2FnZTogbXNuZHJlc2V0IDxtaXhlciBkZXZpY2U+XG4iKTsKK1gJCWV4aXQoMSk7CitYCX0KK1gKK1gJaWYgKChmZCA9IG9wZW4oYXJndlsxXSwgT19SRFdSKSkgPCAwKSB7CitYCQlwZXJyb3IoYXJndlsxXSk7CitYCQlleGl0KDEpOworWAl9CitYCitYCWlmIChpb2N0bChmZCwgU09VTkRfTUlYRVJfUFJJVkFURTEsIDApIDwgMCkgeworWAkJZnByaW50ZihzdGRlcnIsICJlcnJvcjogbXNuZCBpb2N0bCByZXNldCBmYWlsZWRcbiIpOworWAkJcGVycm9yKCJpb2N0bCIpOworWAkJY2xvc2UoZmQpOworWAkJZXhpdCgxKTsKK1gJfQorWAorWAljbG9zZShmZCk7CitYCQorWAlyZXR1cm4gMDsKK30KK1NIQVJfRU9GCisgICRzaGFyX3RvdWNoIC1hbSAxMjA0MTAwNjk4ICdNdWx0aVNvdW5kLmQvbXNuZHJlc2V0LmMnICYmCisgIGNobW9kIDA2NjQgJ011bHRpU291bmQuZC9tc25kcmVzZXQuYycgfHwKKyAgJGVjaG8gJ3Jlc3RvcmUgb2YnICdNdWx0aVNvdW5kLmQvbXNuZHJlc2V0LmMnICdmYWlsZWQnCisgIGlmICggbWQ1c3VtIC0taGVscCAyPiYxIHwgZ3JlcCAnc2FnZTogbWQ1c3VtIFxbJyApID4vZGV2L251bGwgMj4mMSBcCisgICYmICggbWQ1c3VtIC0tdmVyc2lvbiAyPiYxIHwgZ3JlcCAtdiAndGV4dHV0aWxzIDEuMTInICkgPi9kZXYvbnVsbDsgdGhlbgorICAgIG1kNXN1bSAtYyA8PCBTSEFSX0VPRiA+L2Rldi9udWxsIDI+JjEgXAorICAgIHx8ICRlY2hvICdNdWx0aVNvdW5kLmQvbXNuZHJlc2V0LmM6JyAnTUQ1IGNoZWNrIGZhaWxlZCcKK2M1MmY4NzY1MjEwODRlOGViMjVlMTJlMDFkY2NjYjhhICBNdWx0aVNvdW5kLmQvbXNuZHJlc2V0LmMKK1NIQVJfRU9GCisgIGVsc2UKKyAgICBzaGFyX2NvdW50PSJgTENfQUxMPSBMQ19DVFlQRT0gTEFORz0gd2MgLWMgPCAnTXVsdGlTb3VuZC5kL21zbmRyZXNldC5jJ2AiCisgICAgdGVzdCAxNDcyIC1lcSAiJHNoYXJfY291bnQiIHx8CisgICAgJGVjaG8gJ011bHRpU291bmQuZC9tc25kcmVzZXQuYzonICdvcmlnaW5hbCBzaXplJyAnMTQ3MiwnICdjdXJyZW50IHNpemUnICIkc2hhcl9jb3VudCEiCisgIGZpCitmaQorcm0gLWZyIF9zaDAxNDI2CitleGl0IDAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvb3NzL09QTDMgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9PUEwzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0NjhmZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9PUEwzCkBAIC0wLDAgKzEsNiBAQAorQSBwdXJlIE9QTDMgY2FyZCBpcyBuaWNlIGFuZCBlYXN5IHRvIGNvbmZpZ3VyZS4gU2ltcGx5IGRvCisKK2luc21vZCBvcGwzIGlvPTB4Mzg4CisKK0NoYW5nZSB0aGUgSS9PIGFkZHJlc3MgaW4gdGhlIHZlcnkgdW5saWtlbHkgY2FzZSB0aGlzIGNhcmQgaXMgZGlmZmVyZW50bHkKK2NvbmZpZ3VyZWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvb3NzL09wdGkgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9PcHRpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZDVkOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9PcHRpCkBAIC0wLDAgKzEsMjE4IEBACitTdXBwb3J0IGZvciB0aGUgT1BUaSA4MkM5MzEgY2hpcAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05vdGU6IHBhcnRzIG9mIHRoaXMgUkVBRE1FIGZpbGUgYXBwbHkgYWxzbyB0byBvdGhlcgorY2FyZHMgdGhhdCB1c2UgdGhlIG1hZDE2IGRyaXZlci4KKworU29tZSBpdGVtcyBpbiB0aGlzIFJFQURNRSBmaWxlIGFyZSBiYXNlZCBvbiBmZWF0dXJlcworYWRkZWQgdG8gdGhlIHNvdW5kIGRyaXZlciBhZnRlciBMaW51eC0yLjEuOTEgd2FzIG91dC4KK0J5IHRoZSB0aW1lIG9mIHdyaXRpbmcgdGhpcyBJIGRvIG5vdCBrbm93IHdoaWNoIG9mZmljaWFsCitrZXJuZWwgcmVsZWFzZSB3aWxsIGluY2x1ZGUgdGhlc2UgZmVhdHVyZXMuCitQbGVhc2UgZG8gbm90IHJlcG9ydCBpbmNvbnNpc3RlbmNpZXMgb24gb2xkZXIgTGludXgKK2tlcm5lbHMuCisKK1RoZSBPUFRpIDgyQzkzMSBpcyBzdXBwb3J0ZWQgaW4gaXRzIG5vbi1QblAgbW9kZS4KK1VzdWFsbHkgeW91IGRvIG5vdCBuZWVkIHRvIHNldCBqdW1wZXJzLCBldGMuIFRoZSBzb3VuZCBkcml2ZXIKK3dpbGwgY2hlY2sgdGhlIGNhcmQgc3RhdHVzIGFuZCBpZiBpdCBpcyByZXF1aXJlZCBpdCB3aWxsCitmb3JjZSB0aGUgY2FyZCBpbnRvIGEgbW9kZSBpbiB3aGljaCBpdCBjYW4gYmUgcHJvZ3JhbW1lZC4KKworSWYgeW91IGhhdmUgYW5vdGhlciBPUyBpbnN0YWxsZWQgb24geW91ciBjb21wdXRlciBpdCBpcyByZWNvbW1lbmRlZAordGhhdCBMaW51eCBhbmQgdGhlIG90aGVyIE9TIHVzZSB0aGUgc2FtZSByZXNvdXJjZXMuCisKK0Fsc28sIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgcmVzb3VyY2VzIHNwZWNpZmllZCBpbiAvZXRjL21vZHByb2JlLmQvKi5jb25mCithbmQgcmVzb3VyY2VzIHNwZWNpZmllZCBpbiAvZXRjL2lzYXBucC5jb25mIGFncmVlLgorCitDb21waWxpbmcgdGhlIHNvdW5kIGRyaXZlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0kgaGlnaGx5IHJlY29tbWVuZCB0aGF0IHlvdSBidWlsZCBhIG1vZHVsYXJpemVkIHNvdW5kIGRyaXZlci4KK1RoaXMgZG9jdW1lbnQgZG9lcyBub3QgY292ZXIgYSBzb3VuZC1kcml2ZXIgd2hpY2ggaXMgYnVpbHQgaW4KK3RoZSBrZXJuZWwuCisKK1NvdW5kIGNhcmQgc3VwcG9ydCBzaG91bGQgYmUgZW5hYmxlZCBhcyBhIG1vZHVsZSAoY2hvc2UgbSkuCitBbnN3ZXIgJ20nIGZvciAgdGhlc2UgaXRlbXM6CisgIEdlbmVyaWMgT1BMMi9PUEwzIEZNIHN5bnRoZXNpemVyIHN1cHBvcnQJCShDT05GSUdfU09VTkRfQURMSUIpCisgIE1pY3Jvc29mdCBTb3VuZCBTeXN0ZW0gc3VwcG9ydAkJCShDT05GSUdfU09VTkRfTVNTKQorICBTdXBwb3J0IGZvciBPUFRpIE1BRDE2IGFuZC9vciBNb3phcnQgYmFzZWQgY2FyZHMJKENPTkZJR19TT1VORF9NQUQxNikKKyAgRk0gc3ludGhlc2l6ZXIgKFlNMzgxMi9PUEwtMykgc3VwcG9ydAkJCShDT05GSUdfU09VTkRfWU0zODEyKQorCitUaGUgY29uZmlndXJhdGlvbiBtZW51IG1heSBhc2sgZm9yIGFkZHJlc3NlcywgSVJRIGxpbmVzIG9yIERNQQorY2hhbm5lbHMuIElmIHRoZSBjYXJkIGlzIHVzZWQgYXMgYSBtb2R1bGUgdGhlIG1vZHVsZSBsb2FkaW5nCitvcHRpb25zIHdpbGwgb3ZlcnJpZGUgdGhlc2UgdmFsdWVzLgorCitGb3IgdGhlIE9QVGkgOTMxIHlvdSBjYW4gYW5zd2VyICduJyB0bzoKKyAgU3VwcG9ydCBNSURJIGluIG9sZGVyIE1BRDE2IGJhc2VkIGNhcmRzIChyZXF1aXJlcyBTQikJKENPTkZJR19TT1VORF9NQUQxNl9PTERDQVJEKQorSWYgeW91IGRvIG5lZWQgTUlESSBzdXBwb3J0IGluIGEgTW96YXJ0IG9yIEM5MjggYmFzZWQgY2FyZCB5b3UKK25lZWQgdG8gYW5zd2VyICdtJyB0byB0aGUgYWJvdmUgcXVlc3Rpb24uIEluIHRoYXQgY2FzZSB5b3Ugd2lsbAorYWxzbyBuZWVkIHRvIGFuc3dlciAnbScgdG86CisgICcxMDAlIFNvdW5kIEJsYXN0ZXIgY29tcGF0aWJsZXMgKFNCMTYvMzIvNjQsIEVTUywgSmF6ejE2KSBzdXBwb3J0JyAoQ09ORklHX1NPVU5EX1NCKQorCitHbyBvbiBhbmQgY29tcGlsZSB5b3VyIGtlcm5lbCBhbmQgbW9kdWxlcy4gSW5zdGFsbCB0aGUgbW9kdWxlcy4gUnVuIGRlcG1vZCAtYS4KKworVXNpbmcgaXNhcG5wdG9vbHMKKy0tLS0tLS0tLS0tLS0tLS0tCitJbiBtb3N0IHN5c3RlbXMgd2l0aCBhIFBuUCBCSU9TIHlvdSBkbyBub3QgbmVlZCB0byB1c2UgaXNhcG5wLiBUaGUKK2luaXRpYWxpemF0aW9uIHByb3ZpZGVkIGJ5IHRoZSBCSU9TIGlzIHN1ZmZpY2llbnQgZm9yIHRoZSBkcml2ZXIKK3RvIHBpY2sgdXAgdGhlIGNhcmQgYW5kIGNvbnRpbnVlIGluaXRpYWxpemF0aW9uLgorCitJZiB0aGF0IGZhaWxzLCBvciBpZiB5b3UgaGF2ZSBvdGhlciBQblAgY2FyZHMsIHlvdSBuZWVkIHRvIHVzZSBpc2FwbnAKK3RvIGluaXRpYWxpemUgdGhlIGNhcmQuCitUaGlzIHdhcyB0ZXN0ZWQgd2l0aCBpc2FwbnB0b29scy0xLjExIGJ1dCBJIHJlY29tbWVuZCB0aGF0IHlvdSB1c2UKK2lzYXBucHRvb2xzLTEuMTMgKG9yIG5ld2VyKS4gUnVuIHBucGR1bXAgdG8gZHVtcCB0aGUgaW5mb3JtYXRpb24KK2Fib3V0IHlvdXIgUG5QIGNhcmRzLiBUaGVuIGVkaXQgdGhlIHJlc3VsdGluZyBmaWxlIGFuZCBzZWxlY3QKK3RoZSBvcHRpb25zIG9mIHlvdXIgY2hvaWNlLiBUaGlzIGZpbGUgaXMgbm9ybWFsbHkgaW5zdGFsbGVkIGFzCisvZXRjL2lzYXBucC5jb25mLgorCitUaGUgZHJpdmVyIGhhcyBvbmUgbGltaXRhdGlvbiB3aXRoIHJlc3BlY3QgdG8gSS9PIHBvcnQgcmVzb3VyY2VzOgorSU8zIGJhc2UgbXVzdCBiZSAweDBFMEMuICBBbHRob3VnaCBpc2FwbnAgYWxsb3dzIG90aGVyIHBvcnRzLCB0aGlzCithZGRyZXNzIGlzIGhhcmQtY29kZWQgaW50byB0aGUgZHJpdmVyLgorCitVc2luZyBrbW9kIGFuZCBhdXRvbG9hZGluZyB0aGUgc291bmQgZHJpdmVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDb25maWcgZmlsZXMgaW4gJy9ldGMvbW9kcHJvYmUuZC8nIGFyZSB1c2VkIGFzIGJlbG93OgorCithbGlhcyBtaXhlcjAgbWFkMTYKK2FsaWFzIGF1ZGlvMCBtYWQxNgorYWxpYXMgbWlkaTAgIG1hZDE2CithbGlhcyBzeW50aDAgb3BsMworb3B0aW9ucyBzYiBtYWQxNj0xCitvcHRpb25zIG1hZDE2IGlycT0xMCBkbWE9MCBkbWExNj0xIGlvPTB4NTMwIGpveXN0aWNrPTEgY2R0eXBlPTAKK29wdGlvbnMgb3BsMyBpbz0weDM4OAoraW5zdGFsbCBtYWQxNiAvc2Jpbi9tb2Rwcm9iZSAtaSBtYWQxNiAmJiAvc2Jpbi9hZDE4NDhfbWl4ZXJfcmVyb3V0ZSAxNCA4IDE1IDMgMTYgNgorCitJZiB5b3UgaGF2ZSBhbiBNUFUgZGF1Z2h0ZXJjYXJkIG9yIG9uYm9hcmQgTVBVIHlvdSB3aWxsIHdhbnQgdG8gYWRkIHRvIHRoZQorIm9wdGlvbnMgbWFkMTYiIGxpbmUgLSBlZyAKKworb3B0aW9ucyBtYWQxNiBpcnE9NSBkbWE9MCBkbWExNj0zIGlvPTB4NTMwIG1wdV9pbz0weDMzMCBtcHVfaXJxPTkKKworVG8gc2V0IHRoZSBJL08gYW5kIElSUSBvZiB0aGUgTVBVLgorCisKK0V4cGxhaW46CisKK2FsaWFzIG1peGVyMCBtYWQxNgorYWxpYXMgYXVkaW8wIG1hZDE2CithbGlhcyBtaWRpMCAgbWFkMTYKK2FsaWFzIHN5bnRoMCBvcGwzCisKK1doZW4gYW55IHNvdW5kIGRldmljZSBpcyBvcGVuZWQgdGhlIGtlcm5lbCByZXF1ZXN0cyBhdXRvLWxvYWRpbmcKK29mIGNoYXItbWFqb3ItMTQuIFRoZXJlIGlzIGEgYnVpbHQtaW4gYWxpYXMgdGhhdCB0cmFuc2xhdGVzIHRoaXMKK3JlcXVlc3QgdG8gbG9hZGluZyB0aGUgbWFpbiBzb3VuZCBtb2R1bGUuCisKK1RoZSBzb3VuZCBtb2R1bGUgaW4gaXRzIHR1cm4gd2lsbCByZXF1ZXN0IGxvYWRpbmcgb2YgYSBzdWItZHJpdmVyCitmb3IgbWl4ZXIsIGF1ZGlvLCBtaWRpIG9yIHN5bnRoZXNpemVyIGRldmljZS4gVGhlIGZpcnN0IDMgYXJlCitzdXBwb3J0ZWQgYnkgdGhlIG1hZDE2IGRyaXZlci4gVGhlIHN5bnRoIGRldmljZSBpcyBzdXBwb3J0ZWQKK2J5IHRoZSBvcGwzIGRyaXZlci4KKworVGhlcmUgaXMgY3VycmVudGx5IG5vIHdheSB0byBhdXRvbG9hZCB0aGUgc291bmQgZGV2aWNlIGRyaXZlcgoraWYgbW9yZSB0aGFuIG9uZSBjYXJkIGlzIGluc3RhbGxlZC4KKworb3B0aW9ucyBzYiBtYWQxNj0xCisKK1RoaXMgaXMgbGVmdCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLiBJZiB5b3UgZW5hYmxlIHRoZQorY29uZmlnIG9wdGlvbiAnU3VwcG9ydCBNSURJIGluIG9sZGVyIE1BRDE2IGJhc2VkIGNhcmRzIChyZXF1aXJlcyBTQiknCitvciBpZiB5b3UgdXNlIGFuIG9sZGVyIG1hZDE2IGRyaXZlciBpdCB3aWxsIGZvcmNlIGxvYWRpbmcgb2YgdGhlCitTb3VuZEJsYXN0ZXIgZHJpdmVyLiBUaGlzIG9wdGlvbiB0ZWxscyB0aGUgU0IgZHJpdmVyIG5vdCB0byBsb29rCitmb3IgYSBTQiBjYXJkIGJ1dCB0byB3YWl0IGZvciB0aGUgbWFkMTYgZHJpdmVyLgorCitvcHRpb25zIG1hZDE2IGlycT0xMCBkbWE9MCBkbWExNj0xIGlvPTB4NTMwIGpveXN0aWNrPTEgY2R0eXBlPTAKK29wdGlvbnMgb3BsMyBpbz0weDM4OAorCitwb3N0LWluc3RhbGwgbWFkMTYgL3NiaW4vYWQxODQ4X21peGVyX3Jlcm91dGUgMTQgOCAxNSAzIDE2IDYKKworVGhpcyBzZXRzIHJlc291cmNlcyBhbmQgb3B0aW9ucyBmb3IgdGhlIG1hZDE2IGFuZCBvcGwzIGRyaXZlcnMuCitJIHVzZSB0d28gRE1BIGNoYW5uZWxzIChvbmx5IG9uZSBpcyByZXF1aXJlZCkgdG8gZW5hYmxlIGZ1bGwgZHVwbGV4Lgoram95c3RpY2s9MSBlbmFibGVzIHRoZSBqb3lzdGljayBwb3J0LiBjZHR5cGU9MCBkaXNhYmxlcyB0aGUgY2QgcG9ydC4KK1lvdSBjYW4gYWxzbyBzZXQgbXB1X2lvIGFuZCBtcHVfaXJxIGluIHRoZSBtYWQxNiBvcHRpb25zIGZvciB0aGUKK3VhcnQ0MDEgZHJpdmVyLgorCitUaGlzIHRlbGxzIG1vZHByb2JlIHRvIHJ1biAvc2Jpbi9hZDE4NDhfbWl4ZXJfcmVyb3V0ZSBhZnRlcgorbWFkMTYgaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBhbmQgaW5pdGlhbGl6ZWQuIFRoZSBzb3VyY2UKK2ZvciBhZDE4NDhfbWl4ZXJfcmVyb3V0ZSBpcyBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIHRoaXMgcmVhZG1lCitmaWxlLiBJdCBpcyBpbXBvc3NpYmxlIGZvciB0aGUgc291bmQgZHJpdmVyIHRvIGtub3cgdGhlIGFjdHVhbAorY29ubmVjdGlvbnMgdG8gdGhlIG1peGVyLiBUaGUgMyBpbnB1dHMgaW50ZW5kZWQgZm9yIGNkLCBzeW50aAorYW5kIGxpbmUtaW4gYXJlIG1hcHBlZCB0byB0aGUgZ2VuZXJpYyBpbnB1dHMgbGluZTEsIGxpbmUyIGFuZAorbGluZTMuIFRoaXMgcHJvZ3JhbSByZXJvdXRlcyB0aGVzZSBtaXhlciBjaGFubmVscyB0byB0aGVpcgorcmlnaHQgbmFtZXMgKG5vdGUgdGhlIHJpZ2h0IG1hcHBpbmcgZGVwZW5kcyBvbiB0aGUgYWN0dWFsIHNvdW5kCitjYXJkIHRoYXQgeW91IHVzZSkuCitUaGUgbnVtZXJpYyBwYXJhbWV0ZXJzIG1lYW46CisgMTQ9bGluZTEgOD1jZCAgICAtIHJlcm91dGUgbGluZTEgdG8gdGhlIENEIGlucHV0LgorIDE1PWxpbmUyIDM9c3ludGggLSByZXJvdXRlIGxpbmUyIHRvIHRoZSBzeW50aGVzaXplciBpbnB1dC4KKyAxNj1saW5lMyA2PWxpbmUgIC0gcmVyb3V0ZSBsaW5lMyB0byB0aGUgbGluZSBpbnB1dC4KK0ZvciByZWZlcmVuY2Ugb24gb3RoZXIgaW5wdXQgbmFtZXMgbG9vayBhdCB0aGUgZmlsZQorL3Vzci9pbmNsdWRlL2xpbnV4L3NvdW5kY2FyZC5oLgorCitVc2luZyBhIGpveXN0aWNrCistLS0tLS0tLS0tLS0tLS0tLQorWW91IG11c3QgZW5hYmxlIGEgam95c3RpY2sgaW4gdGhlIG1hZDE2IG9wdGlvbnMuIChhbHNvCitpbiAvZXRjL2lzYXBucC5jb25mIGlmIHlvdSB1c2UgaXQpLgorVGVzdGVkIHdpdGggcmVndWxhciBhbmFsb2cgam95c3RpY2tzLgorCitBIENEUk9NIGRyaXZlIGNvbm5lY3RlZCB0byB0aGUgc291bmQgY2FyZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSA4MkM5MzEgY2hpcCBoYXMgc3VwcG9ydCBvbmx5IGZvciBzZWNvbmRhcnkgQVRBUEkgY2Ryb20uCisoY2R0eXBlPTgpLiBMb2FkaW5nIHRoZSBtYWQxNiBkcml2ZXIgcmVzZXRzIHRoZSBDOTMxIGNoaXAKK2FuZCBpZiBhIGNkcm9tIHdhcyBhbHJlYWR5IG1vdW50ZWQgaXQgbWF5IGNhdXNlIGEgY29tcGxldGUKK3N5c3RlbSBoYW5nLiBEbyBub3QgdXNlIHRoZSBzb3VuZCBjYXJkIGlmIHlvdSBoYXZlIGFuIGFsdGVybmF0aXZlLgorSWYgeW91IGRvIHVzZSB0aGUgc291bmQgY2FyZCBpdCBpcyBpbXBvcnRhbnQgdGhhdCB5b3UgbG9hZAordGhlIG1hZDE2IGRyaXZlciAodXNlICJtb2Rwcm9iZSBtYWQxNiIgdG8gcHJldmVudCBhdXRvLXVubG9hZGluZykKK2JlZm9yZSB0aGUgY2Ryb20gaXMgYWNjZXNzZWQgdGhlIGZpcnN0IHRpbWUuCisKK1VzaW5nIHRoZSBzb3VuZCBkcml2ZXIgYnVpbHQtaW4gdG8gdGhlIGtlcm5lbCBtYXkgaGVscCBoZXJlLCBidXQuLi4KK01vc3QgbmV3IHN5c3RlbXMgaGF2ZSBhIFBuUCBCSU9TIGFuZCBhbHNvIHR3byBJREUgY29udHJvbGxlcnMuCitUaGUgSURFIGNvbnRyb2xsZXIgb24gdGhlIHNvdW5kIGNhcmQgbWF5IGJlIG5lZWRlZCBvbmx5IG9uIG9sZGVyCitzeXN0ZW1zICh3aGljaCBoYXZlIG9ubHkgb25lIElERSBjb250cm9sbGVyKSBidXQgdGhlc2Ugc3lzdGVtcworYWxzbyBkbyBub3QgaGF2ZSBhIFBuUCBCSU9TIC0gcmVxdWlyaW5nIGlzYXBucHRvb2xzIGFuZCBhIG1vZHVsYXJpemVkCitkcml2ZXIuCisKK0tub3duIHByb2JsZW1zCistLS0tLS0tLS0tLS0tLQorMS4gU2VlIHRoZSBzZWN0aW9uIG9uICJBIENEUk9NIGRyaXZlIGNvbm5lY3RlZCB0byB0aGUgc291bmQgY2FyZCIuCisKKzIuIE9uIG15IHN5c3RlbSB0aGUgY29kZWMgY2Fubm90IGNhcHR1cmUgY29tcGFuZGVkIHNvdW5kIHNhbXBsZXMuCisgICAoZWcuLCByZWNvcmRpbmcgZnJvbSAvZGV2L2F1ZGlvKS4gV2hlbiBhbnkgY29tcGFuZGVkIGNhcHR1cmUgaXMKKyAgIHJlcXVlc3RlZCBJIGdldCBzdGVyZW8tMTYgYml0IHNhbXBsZXMgaW5zdGVhZC4gUGxheWJhY2sgb2YKKyAgIGNvbXBhbmRlZCBzYW1wbGVzIHdvcmtzIHdlbGwuIEFwcGFyZW50bHkgdGhpcyBwcm9ibGVtIGlzIG5vdCBjb21tb24KKyAgIHRvIGFsbCBDOTMxIGJhc2VkIGNhcmRzLiBJIGRvIG5vdCBrbm93IGhvdyB0byBpZGVudGlmeSBjYXJkcyB0aGF0CisgICBoYXZlIHRoaXMgcHJvYmxlbS4KKworU291cmNlIGZvciBhZDE4NDhfbWl4ZXJfcmVyb3V0ZS5jCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8bGludXgvc291bmRjYXJkLmg+CisKK3N0YXRpYyBjaGFyICptaXhlcl9uYW1lc1tTT1VORF9NSVhFUl9OUkRFVklDRVNdID0KKwlTT1VORF9ERVZJQ0VfTEFCRUxTOworCitpbnQKK21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisJaW50IHZhbCwgZnJvbSwgdG87CisJaW50IGksIGZkOworCisJZmQgPSBvcGVuKCIvZGV2L21peGVyIiwgT19SRFdSKTsKKwlpZihmZCA8IDApIHsKKwkJcGVycm9yKCIvZGV2L21peGVyIik7CisJCXJldHVybiAxOworCX0KKworCWZvcihpID0gMjsgaSA8IGFyZ2M7IGkgKz0gMikgeworCQlmcm9tID0gYXRvaShhcmd2W2ktMV0pOworCQl0byA9IGF0b2koYXJndltpXSk7CisKKwkJaWYodG8gPT0gU09VTkRfTUlYRVJfTk9ORSkKKwkJCWZwcmludGYoc3RkZXJyLCAiJXM6IHR1cm5pbmcgb2ZmIG1peGVyICVzXG4iLAorCQkJCWFyZ3ZbMF0sIG1peGVyX25hbWVzW3RvXSk7CisJCWVsc2UKKwkJCWZwcmludGYoc3RkZXJyLCAiJXM6IHJlcm91dGluZyBtaXhlciAlcyB0byAlc1xuIiwKKwkJCQlhcmd2WzBdLCBtaXhlcl9uYW1lc1tmcm9tXSwgbWl4ZXJfbmFtZXNbdG9dKTsKKworCQl2YWwgPSBmcm9tIDw8IDggfCB0bzsKKworCQlpZihpb2N0bChmZCwgU09VTkRfTUlYRVJfUFJJVkFURTIsICZ2YWwpKSB7CisJCQlwZXJyb3IoIkFEMTg0OCBtaXhlciByZXJvdXRlIik7CisJCQlyZXR1cm4gMTsKKwkJfQorCX0KKworCXJldHVybiAwOworfQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9QQVMxNiBiL0RvY3VtZW50YXRpb24vc291bmQvb3NzL1BBUzE2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjMjcyMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9QQVMxNgpAQCAtMCwwICsxLDE2MiBAQAorUHJvIEF1ZGlvIFNwZWN0cnVtIDE2IGZvciAyLjMuOTkgYW5kIGxhdGVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorYnkgVGhvbWFzIE1vbGluYSAodG1vbGluYUBob21lLmNvbSkKK2xhc3QgbW9kaWZpZWQgMyBNYXIgMjAwMQorQWNrbm93bGVkZ2VtZW50IHRvIEF4ZWwgQm9sZHQgKGJvbGR0QG1hdGgudWNzYi5lZHUpIGZvciBzdHVmZiB0YWtlbgorZnJvbSBDb25maWd1cmUuaGVscCwgUmljY2FyZG8gRmFjY2hldHRpIGZvciBzdHVmZiBmcm9tIFJFQURNRS5PU1MsCithbmQgb3RoZXJzIHdob3NlIG5hbWVzIEkgY291bGQgbm90IGZpbmQuCisKK1RoaXMgZG9jdW1lbnRhdGlvbiBpcyByZWxldmFudCBmb3IgdGhlIFBBUzE2IGRyaXZlciAocGFzMl9jYXJkLmMgYW5kCitmcmllbmRzKSB1bmRlciBrZXJuZWwgdmVyc2lvbiAyLjMuOTkgYW5kIGxhdGVyLiAgSWYgeW91IGFyZQordW5mYW1pbGlhciB3aXRoIGNvbmZpZ3VyaW5nIHNvdW5kIHVuZGVyIExpbnV4LCBwbGVhc2UgcmVhZCB0aGUKK1NvdW5kLUhPV1RPLCBEb2N1bWVudGF0aW9uL3NvdW5kL29zcy9JbnRyb2R1Y3Rpb24gYW5kIG90aGVyCityZWxldmFudCBkb2NzIGZpcnN0LgorCitUaGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGlzIHJlbGV2YW50IGluZm9ybWF0aW9uIGZyb20gUkVBRE1FLk9TUworYW5kIGxlZ2FjeSBkb2NzIGZvciB0aGUgUHJvIEF1ZGlvIFNwZWN0cnVtIDE2IChQQVMxNik6Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHBhczJfY2FyZC5jIGRyaXZlciBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGNhcmRzIC0tCitQcm8gQXVkaW8gU3BlY3RydW0gMTYgKFBBUzE2KSBhbmQgY29tcGF0aWJsZXM6CisgICAgICAgIFBybyBBdWRpbyBTcGVjdHJ1bSAxNgorICAgICAgICBQcm8gQXVkaW8gU3R1ZGlvIDE2CisgICAgICAgIExvZ2l0ZWNoIFNvdW5kIE1hbiAxNgorICAgICAgICBOT1RFISBUaGUgb3JpZ2luYWwgUHJvIEF1ZGlvIFNwZWN0cnVtIGFzIHdlbGwgYXMgdGhlIFBBUysgYXJlIG5vdAorICAgICAgICAgICAgICBhbmQgd2lsbCBub3QgYmUgc3VwcG9ydGVkIGJ5IHRoZSBkcml2ZXIuCisKK1RoZSBzb3VuZCBkcml2ZXIgY29uZmlndXJhdGlvbiBkaWFsb2cKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU291bmQgY29uZmlndXJhdGlvbiBzdGFydHMgYnkgbWFraW5nIHNvbWUgeWVzL25vIHF1ZXN0aW9ucy4gQmUgY2FyZWZ1bAord2hlbiBhbnN3ZXJpbmcgdG8gdGhlc2UgcXVlc3Rpb25zIHNpbmNlIGFuc3dlcmluZyB5IHRvIGEgcXVlc3Rpb24gbWF5CitwcmV2ZW50IHNvbWUgbGF0ZXIgb25lcyBmcm9tIGJlaW5nIGFza2VkLiBGb3IgZXhhbXBsZSBkb24ndCBhbnN3ZXIgeSB0bwordGhlIHF1ZXN0aW9uIGFib3V0IChQQVMxNikgaWYgeW91IGRvbid0IHJlYWxseSBoYXZlIGEgUEFTMTYuICBTb3VuZAorY29uZmlndXJhdGlvbiBtYXkgYWxzbyBiZSBtYWRlIG1vZHVsYXIgYnkgYW5zd2VyaW5nIG0gdG8gY29uZmlndXJhdGlvbgorb3B0aW9ucyBwcmVzZW50ZWQuIAorCitOb3RlIGFsc28gdGhhdCBhbGwgcXVlc3Rpb25zIG1heSBub3QgYmUgYXNrZWQuIFRoZSBjb25maWd1cmF0aW9uIHByb2dyYW0KK21heSBkaXNhYmxlIHNvbWUgcXVlc3Rpb25zIGRlcGVuZGluZyBvbiB0aGUgZWFybGllciBjaG9pY2VzLiBJdCBtYXkgYWxzbworc2VsZWN0IHNvbWUgb3B0aW9ucyBhdXRvbWF0aWNhbGx5IGFzIHdlbGwuCisKKyAgIlByb0F1ZGlvU3BlY3RydW0gMTYgc3VwcG9ydCIsCisgICAgICAgIC0gQW5zd2VyICd5J19PTkxZXyBpZiB5b3UgaGF2ZSBhIFBybyBBdWRpbyBTcGVjdHJ1bSBfMTZfLAorICAgICAgICAgIFBybyBBdWRpbyBTdHVkaW8gMTYgb3IgTG9naXRlY2ggU291bmRNYW4gMTYgKGJlIHN1cmUgdGhhdAorICAgICAgICAgIHlvdSByZWFkIHRoZSBhYm92ZSBsaXN0IGNvcnJlY3RseSkuIERvbid0IGFuc3dlciAneScgaWYgeW91CisgICAgICAgICAgaGF2ZSBzb21lIG90aGVyIGNhcmQgbWFkZSBieSBNZWRpYSBWaXNpb24gb3IgTG9naXRlY2ggc2luY2UgdGhleQorICAgICAgICAgIGFyZSBub3QgUEFTMTYgY29tcGF0aWJsZS4KKyAgICAgICAgICBOT1RFISBTaW5jZSAzLjUtYmV0YTEwIHlvdSBuZWVkIHRvIGVuYWJsZSBTQiBzdXBwb3J0IChuZXh0IHF1ZXN0aW9uKQorICAgICAgICAgIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgU0IgZW11bGF0aW9uIG9mIFBBUzE2LiBJdCdzIGFsc28gcG9zc2libGUgdG8KKyAgICAgICAgICB0aGUgZW11bGF0aW9uIGlmIHlvdSB3YW50IHRvIHVzZSBhIHRydWUgU0IgY2FyZCB0b2dldGhlciB3aXRoIFBBUzE2CisgICAgICAgICAgKHRoZXJlIGlzIGFub3RoZXIgcXVlc3Rpb24gYWJvdXQgdGhpcyB0aGF0IGlzIGFza2VkIGxhdGVyKS4KKworICAiR2VuZXJpYyBPUEwyL09QTDMgRk0gc3ludGhlc2l6ZXIgc3VwcG9ydCIsCisgICAgICAgIC0gQW5zd2VyICd5JyBpZiB5b3VyIGNhcmQgaGFzIGEgRk0gY2hpcCBtYWRlIGJ5IFlhbWFoYSAoT1BMMi9PUEwzL09QTDQpLgorCSAgVGhlIFBBUzE2IGhhcyBhbiBPUEwzLWNvbXBhdGlibGUgRk0gY2hpcC4KKworV2l0aCBQQVMxNiB5b3UgY2FuIHVzZSB0d28gYXVkaW8gZGV2aWNlIGZpbGVzIGF0IHRoZSBzYW1lIHRpbWUuIC9kZXYvZHNwIChhbmQKKy9kZXYvYXVkaW8pIGlzIGNvbm5lY3RlZCB0byB0aGUgOC8xNiBiaXQgbmF0aXZlIGNvZGVjIGFuZCB0aGUgL2Rldi9kc3AxIChhbmQKKy9kZXYvYXVkaW8xKSBpcyBjb25uZWN0ZWQgdG8gdGhlIFNCIGVtdWxhdGlvbiAoOCBiaXQgbW9ubyBvbmx5KS4KKworCitUaGUgbmV3IHN0dWZmIGZvciAyLjMuOTkgYW5kIGxhdGVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitUaGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgcmVsZXZhbnQgdG8gY29uZmlndXJpbmcgdGhlIFBBUzE2OgorCitTb3VuZCBjYXJkIHN1cHBvcnQKK0NPTkZJR19TT1VORAorICBJZiB5b3UgaGF2ZSBhIHNvdW5kIGNhcmQgaW4geW91ciBjb21wdXRlciwgaS5lLiBpZiBpdCBjYW4gc2F5IG1vcmUKKyAgdGhhbiBhbiBvY2Nhc2lvbmFsIGJlZXAsIHNheSBZLiBCZSBzdXJlIHRvIGhhdmUgYWxsIHRoZSBpbmZvcm1hdGlvbgorICBhYm91dCB5b3VyIHNvdW5kIGNhcmQgYW5kIGl0cyBjb25maWd1cmF0aW9uIGRvd24gKEkvTyBwb3J0LAorICBpbnRlcnJ1cHQgYW5kIERNQSBjaGFubmVsKSwgYmVjYXVzZSB5b3Ugd2lsbCBiZSBhc2tlZCBmb3IgaXQuCisKKyAgWW91IHdhbnQgdG8gcmVhZCB0aGUgU291bmQtSE9XVE8sIGF2YWlsYWJsZSBmcm9tCisgIGh0dHA6Ly93d3cudGxkcC5vcmcvZG9jcy5odG1sI2hvd3RvIC4gR2VuZXJhbCBpbmZvcm1hdGlvbgorICBhYm91dCB0aGUgbW9kdWxhciBzb3VuZCBzeXN0ZW0gaXMgY29udGFpbmVkIGluIHRoZSBmaWxlcworICBEb2N1bWVudGF0aW9uL3NvdW5kL29zcy9JbnRyb2R1Y3Rpb24uIFRoZSBmaWxlCisgIERvY3VtZW50YXRpb24vc291bmQvb3NzL1JFQURNRS5PU1MgY29udGFpbnMgc29tZSBzbGlnaHRseSBvdXRkYXRlZCBidXQKKyAgc3RpbGwgdXNlZnVsIGluZm9ybWF0aW9uIGFzIHdlbGwuCisKK09TUyBzb3VuZCBtb2R1bGVzCitDT05GSUdfU09VTkRfT1NTCisgIE9TUyBpcyB0aGUgT3BlbiBTb3VuZCBTeXN0ZW0gc3VpdGUgb2Ygc291bmQgY2FyZCBkcml2ZXJzLiBUaGV5IG1ha2UKKyAgc291bmQgcHJvZ3JhbW1pbmcgZWFzaWVyIHNpbmNlIHRoZXkgcHJvdmlkZSBhIGNvbW1vbiBBUEkuIFNheSBZIG9yIE0KKyAgaGVyZSAodGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzb3VuZC5vKSBpZiB5b3UgaGF2ZW4ndCBmb3VuZCBhCisgIGRyaXZlciBmb3IgeW91ciBzb3VuZCBjYXJkIGFib3ZlLCB0aGVuIHBpY2sgeW91ciBkcml2ZXIgZnJvbSB0aGUKKyAgbGlzdCBiZWxvdy4KKworUGVyc2lzdGVudCBETUEgYnVmZmVycworQ09ORklHX1NPVU5EX0RNQVAKKyAgTGludXggY2FuIG9mdGVuIGhhdmUgcHJvYmxlbXMgYWxsb2NhdGluZyBETUEgYnVmZmVycyBmb3IgSVNBIHNvdW5kCisgIGNhcmRzIG9uIG1hY2hpbmVzIHdpdGggbW9yZSB0aGFuIDE2TUIgb2YgUkFNLiBUaGlzIGlzIGJlY2F1c2UgSVNBCisgIERNQSBidWZmZXJzIG11c3QgZXhpc3QgYmVsb3cgdGhlIDE2TUIgYm91bmRhcnkgYW5kIGl0IGlzIHF1aXRlCisgIHBvc3NpYmxlIHRoYXQgYSBsYXJnZSBlbm91Z2ggZnJlZSBibG9jayBpbiB0aGlzIHJlZ2lvbiBjYW5ub3QgYmUKKyAgZm91bmQgYWZ0ZXIgdGhlIG1hY2hpbmUgaGFzIGJlZW4gcnVubmluZyBmb3IgYSB3aGlsZS4gSWYgeW91IHNheSBZCisgIGhlcmUgdGhlIERNQSBidWZmZXJzICg2NEtiKSB3aWxsIGJlIGFsbG9jYXRlZCBhdCBib290IHRpbWUgYW5kIGtlcHQKKyAgdW50aWwgdGhlIHNodXRkb3duLiBUaGlzIG9wdGlvbiBpcyBvbmx5IHVzZWZ1bCBpZiB5b3Ugc2FpZCBZIHRvCisgICJPU1Mgc291bmQgbW9kdWxlcyIsIGFib3ZlLiBJZiB5b3Ugc2FpZCBNIHRvICJPU1Mgc291bmQgbW9kdWxlcyIKKyAgdGhlbiB5b3UgY2FuIGdldCB0aGUgcGVyc2lzdGVudCBETUEgYnVmZmVyIGZ1bmN0aW9uYWxpdHkgYnkgcGFzc2luZworICB0aGUgY29tbWFuZC1saW5lIGFyZ3VtZW50ICJkbWFidWY9MSIgdG8gdGhlIHNvdW5kLm8gbW9kdWxlLgorCisgIFNheSB5IGhlcmUgZm9yIFBBUzE2LgorCitQcm9BdWRpb1NwZWN0cnVtIDE2IHN1cHBvcnQKK0NPTkZJR19TT1VORF9QQVMKKyAgQW5zd2VyIFkgb25seSBpZiB5b3UgaGF2ZSBhIFBybyBBdWRpbyBTcGVjdHJ1bSAxNiwgUHJvQXVkaW8gU3R1ZGlvCisgIDE2IG9yIExvZ2l0ZWNoIFNvdW5kTWFuIDE2IHNvdW5kIGNhcmQuIERvbid0IGFuc3dlciBZIGlmIHlvdSBoYXZlCisgIHNvbWUgb3RoZXIgY2FyZCBtYWRlIGJ5IE1lZGlhIFZpc2lvbiBvciBMb2dpdGVjaCBzaW5jZSB0aGV5IGFyZSBub3QKKyAgUEFTMTYgY29tcGF0aWJsZS4gIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gZW5hYmxlIHRoZSAgc2VwYXJhdGUKKyAgU291bmQgQmxhc3RlciBzdXBwb3J0OyBpdCBpcyBpbmNsdWRlZCBpbiB0aGUgUEFTIGRyaXZlci4KKworICBJZiB5b3UgY29tcGlsZSB0aGUgZHJpdmVyIGludG8gdGhlIGtlcm5lbCwgeW91IGhhdmUgdG8gYWRkCisgICJwYXMyPTxpbz4sPGlycT4sPGRtYT4sPGRtYTI+LDxzYmlvPiw8c2JpcnE+LDxzYmRtYT4sPHNiZG1hMj4KKyAgdG8gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUuCisKK0ZNIFN5bnRoZXNpemVyIChZTTM4MTIvT1BMLTMpIHN1cHBvcnQKK0NPTkZJR19TT1VORF9ZTTM4MTIKKyAgQW5zd2VyIFkgaWYgeW91ciBjYXJkIGhhcyBhIEZNIGNoaXAgbWFkZSBieSBZYW1haGEgKE9QTDIvT1BMMy9PUEw0KS4KKyAgQW5zd2VyaW5nIFkgaXMgdXN1YWxseSBhIHNhZmUgYW5kIHJlY29tbWVuZGVkIGNob2ljZSwgaG93ZXZlciBzb21lCisgIGNhcmRzIG1heSBoYXZlIHNvZnR3YXJlIChUU1IpIEZNIGVtdWxhdGlvbi4gRW5hYmxpbmcgRk0gc3VwcG9ydCB3aXRoCisgIHRoZXNlIGNhcmRzIG1heSBjYXVzZSB0cm91YmxlIChJIGRvbid0IGN1cnJlbnRseSBrbm93IG9mIGFueSBzdWNoCisgIGNhcmRzLCBob3dldmVyKS4KKyAgUGxlYXNlIHJlYWQgdGhlIGZpbGUgRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvT1BMMyBpZiB5b3VyIGNhcmQgaGFzIGFuCisgIE9QTDMgY2hpcC4KKyAgSWYgeW91IGNvbXBpbGUgdGhlIGRyaXZlciBpbnRvIHRoZSBrZXJuZWwsIHlvdSBoYXZlIHRvIGFkZAorICAib3BsMz08aW8+IiB0byB0aGUga2VybmVsIGNvbW1hbmQgbGluZS4KKworICBJZiB5b3UgY29tcGlsZSB5b3VyIGRyaXZlcnMgaW50byB0aGUga2VybmVsLCB5b3UgTVVTVCBjb25maWd1cmUgCisgIE9QTDMgc3VwcG9ydCBhcyBhIG1vZHVsZSBmb3IgUEFTMTYgc3VwcG9ydCB0byB3b3JrIHByb3Blcmx5LgorICBZb3UgY2FuIHRoZW4gZ2V0IE9QTDMgZnVuY3Rpb25hbGl0eSBieSBpc3N1aW5nIHRoZSBjb21tYW5kOgorICBpbnNtb2Qgb3BsMworICBJbiBhZGRpdGlvbiwgeW91IG11c3QgZWl0aGVyIGFkZCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gCisgIC9ldGMvbW9kcHJvYmUuZC8qLmNvbmY6CisgIG9wdGlvbnMgb3BsMyBpbz0weDM4OAorICBvciBlbHNlIGFkZCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gL2V0Yy9saWxvLmNvbmY6CisgIG9wbDM9MHgzODgKKworCitFWEFNUExFUworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorVG8gdXNlIHRoZSBQQVMxNiBpbiBteSBjb21wdXRlciBJIGhhdmUgZW5hYmxlZCB0aGUgZm9sbG93aW5nIHNvdW5kCitjb25maWd1cmF0aW9uIG9wdGlvbnM6CisKK0NPTkZJR19TT1VORD15CitDT05GSUdfU09VTkRfT1NTPXkKK0NPTkZJR19TT1VORF9UUkFDRUlOSVQ9eQorQ09ORklHX1NPVU5EX0RNQVA9eQorQ09ORklHX1NPVU5EX1BBUz15CitDT05GSUdfU09VTkRfU0I9bgorQ09ORklHX1NPVU5EX1lNMzgxMj1tCisKK0kgaGF2ZSBhbHNvIGluY2x1ZGVkIHRoZSBmb2xsb3dpbmcgYXBwZW5kIGxpbmUgaW4gL2V0Yy9saWxvLmNvbmY6CithcHBlbmQ9InBhczI9MHgzODgsMTAsMywtMSwweDIyMCw1LDEsLTEgc2I9MHgyMjAsNSwxLC0xIG9wbDM9MHgzODgiCisKK1RoZSBpbyBhZGRyZXNzIG9mIDB4Mzg4IGlzIGRlZmF1bHQgY29uZmlndXJhdGlvbiBvbiB0aGUgUEFTMTYuICBUaGUKK2lycSBvZiAxMCBhbmQgZG1hIG9mIDMgbWF5IG5vdCBtYXRjaCB5b3VyIGluc3RhbGxhdGlvbi4gIFRoZSBhYm92ZSAKK2NvbmZpZ3VyYXRpb24gZW5hYmxlcyBQQVMxNiwgOC1iaXQgU291bmRibGFzdGVyIGFuZCBPUEwzCitmdW5jdGlvbmFsaXR5LiAgSWYgU291bmRibGFzdGVyIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGRlc2lyZWQsIHRoZQorZm9sbG93aW5nIGxpbmUgd291bGQgYmUgYXBwcm9wcmlhdGU6CithcHBlbmQ9InBhczI9MHgzODgsMTAsMywtMSwwLC0xLC0xLC0xIG9wbDM9MHgzODgiCisKK0lmIHNvdW5kIGlzIGJ1aWx0IHRvdGFsbHkgbW9kdWxhciwgdGhlIGFib3ZlIG9wdGlvbnMgbWF5IGJlIAorc3BlY2lmaWVkIGluIC9ldGMvbW9kcHJvYmUuZC8qLmNvbmYgZm9yIHBhczIsIHNiIGFuZCBvcGwzCityZXNwZWN0aXZlbHkuIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvUFNTIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvUFNTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4N2I5NTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9QU1MKQEAgLTAsMCArMSw0MSBAQAorVGhlIFBTUyBjYXJkcyBhbmQgb3RoZXIgRUNITyBiYXNlZCBjYXJkcyBwcm92aWRlIGFuIG9uYm9hcmQgRFNQIHdpdGggCitkb3dubG9hZGFibGUgcHJvZ3JhbXMgYW5kIGFsc28gaGFzIGFuIEFEMTg0OCAiTWljcm9zb2Z0IFNvdW5kIFN5c3RlbSIgCitkZXZpY2UuIFRoZSBQU1MgZHJpdmVyIGVuYWJsZXMgTVNTIGFuZCBNUFU0MDEgbW9kZXMgb2YgdGhlIGNhcmQuIFNCIAoraXMgbm90IGVuYWJsZWQgc2luY2UgaXQgZG9lc24ndCB3b3JrIGNvbmN1cnJlbnRseSB3aXRoIE1TUy4gCisKK0lmIHlvdSBidWlsZCB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSB0aGVuIHRoZSBkcml2ZXIgdGFrZXMgdGhlIGZvbGxvd2luZworcGFyYW1ldGVycworCitwc3NfaW8uIAlUaGUgSS9PIGJhc2UgdGhlIFBTUyBjYXJkIGlzIGNvbmZpZ3VyZWQgYXQgKG5vcm1hbGx5IDB4MjIwCisJCW9yIDB4MjQwKQorCittc3NfaW8JCVRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIE1pY3Jvc29mdCBTb3VuZCBTeXN0ZW0gaW50ZXJmYWNlLgorCQlUaGlzIGlzIG5vcm1hbGx5IDB4NTMwLCBidXQgbWF5IGJlIDB4NjA0IG9yIG90aGVyIGFkZHJlc3Nlcy4KKworbXNzX2lycQkJVGhlIGludGVycnVwdCBhc3NpZ25lZCB0byB0aGUgTWljcm9zb2Z0IFNvdW5kIFN5c3RlbQorCQllbXVsYXRpb24uIElSUSdzIDMsNSw3LDksMTAsMTEgYW5kIDEyIGFyZSBhdmFpbGFibGUuIElmIHlvdQorCQlnZXQgSVJRIGVycm9ycyBiZSBzdXJlIHRvIGNoZWNrIHRoZSBpbnRlcnJ1cHQgaXMgc2V0IHRvIAorCQkiSVNBL0xlZ2FjeSIgaW4gdGhlIEJJT1Mgb24gbW9kZXJuIG1hY2hpbmVzLgorCittc3NfZG1hCQlUaGUgRE1BIGNoYW5uZWwgdXNlZCBieSB0aGUgTWljcm9zb2Z0IFNvdW5kIFN5c3RlbS4KKwkJVGhpcyBjYW4gYmUgMCwgMSwgb3IgMy4gRE1BIDAgaXMgbm90IGF2YWlsYWJsZSBvbiBvbGRlciAKKwkJbWFjaGluZXMgYW5kIHdpbGwgY2F1c2UgYSBjcmFzaCBvbiB0aGVtLgorCittcHVfaW8JCVRoZSBNUFUgZW11bGF0aW9uIGJhc2UgYWRkcmVzcy4gVGhpcyBzZXRzIHRoZSBiYXNlIG9mIHRoZQorCQlzeW50aGVzaXplci4gSXQgaXMgdHlwaWNhbGx5IDB4MzMwIGJ1dCBjYW4gYmUgYWx0ZXJlZC4KKworbXB1X2lycQkJVGhlIGludGVycnVwdCB0byB1c2UgZm9yIHRoZSBzeW50aGVzaXplci4gSXQgbXVzdCBkaWZmZXIKKwkJZnJvbSB0aGUgSVJRIHVzZWQgYnkgdGhlIE1pY3Jvc29mdCBTb3VuZCBTeXN0ZW0gcG9ydC4KKworCitUaGUgbXB1X2lvL21wdV9pcnEgZmllbGRzIGFyZSBvcHRpb25hbC4gSWYgdGhleSBhcmUgbm90IHNwZWNpZmllZCB0aGUgCitzeW50aGVzaXplciBwYXJ0cyBhcmUgbm90IGNvbmZpZ3VyZWQuCisKK1doZW4gdGhlIG1vZHVsZSBpcyBsb2FkZWQgaXQgbG9va3MgZm9yIGEgZmlsZSBjYWxsZWQgCisvZXRjL3NvdW5kL3Bzc19zeW50aC4gVGhpcyBpcyB0aGUgZmlybXdhcmUgZmlsZSBmcm9tIHRoZSBET1MgaW5zdGFsbCBkaXNrcy4KK1RoaXMgZmlsIGhvbGRzIGEgZ2VuZXJhbCBNSURJIGVtdWxhdGlvbi4gVGhlIGZpbGUgZXhwZWN0ZWQgaXMgY2FsbGVkCitnZW5taWRpLmxkIG9uIG5ld2VyIERPUyBkcml2ZXIgaW5zdGFsbCBkaXNrcyBhbmQgc3ludGgubGQgb24gb2xkZXIgb25lcy4KKworWW91IGNhbiBhbHNvIGxvYWQgYWx0ZXJuYXRpdmUgRFNQIGFsZ29yaXRobXMgaW50byB0aGUgY2FyZCBpZiB5b3Ugd2lzaC4gT25lCithbHRlcm5hdGl2ZSBkcml2ZXIgY2FuIGJlIGZvdW5kIGF0IGh0dHA6Ly93d3cubXBnMTIzLmRlLworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9QU1MtdXBkYXRlcyBiL0RvY3VtZW50YXRpb24vc291bmQvb3NzL1BTUy11cGRhdGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExOTE0YTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9QU1MtdXBkYXRlcwpAQCAtMCwwICsxLDg4IEBACisJVGhpcyBmaWxlIGNvbnRhaW5zIG5vdGVzIGZvciB1c2VycyBvZiBQU1Mgc291bmQgY2FyZHMgd2hvIHdpc2ggdG8gdXNlIHRoZSAKK25ld2x5IGFkZGVkIGZlYXR1cmVzIG9mIHRoZSBuZXdlc3QgdmVyc2lvbiBvZiB0aGlzIGRyaXZlci4KKworCVRoZSBtYWpvciBlbmhhbmNlbWVudHMgcHJlc2VudCBpbiB0aGlzIG5ldyByZXZpc2lvbiBvZiB0aGlzIGRyaXZlciBpcyB0aGUgCithZGRpdGlvbiBvZiB0d28gbmV3IG1vZHVsZSBwYXJhbWV0ZXJzIHRoYXQgYWxsb3cgeW91IHRvIHRha2UgZnVsbCBhZHZhbnRhZ2Ugb2YgCithbGwgdGhlIGZlYXR1cmVzIHByZXNlbnQgb24geW91ciBQU1Mgc291bmQgY2FyZC4gIFRoZXNlIGZlYXR1cmVzIGluY2x1ZGUgdGhlIAorYWJpbGl0eSB0byBlbmFibGUgYm90aCB0aGUgYnVpbHRpbiBDRFJPTSBhbmQgam95c3RpY2sgcG9ydHMuCisKK3Bzc19lbmFibGVfam95c3RpY2sKKworCVRoaXMgcGFyYW1ldGVyIGlzIGJhc2ljYWxseSBhIGZsYWcuICBBIDAgd2lsbCBsZWF2ZSB0aGUgam95c3RpY2sgcG9ydCAKK2Rpc2FibGVkLCB3aGlsZSBhIG5vbi16ZXJvIHZhbHVlIHdvdWxkIGVuYWJsZSB0aGUgam95c3RpY2sgcG9ydC4gIFRoZSBkZWZhdWx0IAorc2V0dGluZyBpcyBwc3NfZW5hYmxlX2pveXN0aWNrPTAgYXMgdGhpcyBrZWVwcyB0aGlzIGRyaXZlciBmdWxseSBjb21wYXRpYmxlIAord2l0aCBzeXN0ZW1zIHRoYXQgd2VyZSB1c2luZyBwcmV2aW91cyB2ZXJzaW9ucyBvZiB0aGlzIGRyaXZlci4gIElmIHlvdSB3aXNoIHRvIAorZW5hYmxlIHRoZSBqb3lzdGljayBwb3J0IHlvdSB3aWxsIGhhdmUgdG8gYWRkIHBzc19lbmFibGVfam95c3RpY2s9MSBhcyBhbiAKK2FyZ3VtZW50IHRvIHRoZSBkcml2ZXIuICBUbyBhY3R1YWxseSB1c2UgdGhlIGpveXN0aWNrIHBvcnQgeW91IHdpbGwgdGhlbiBoYXZlIAordG8gbG9hZCB0aGUgam95c3RpY2sgZHJpdmVyIGl0c2VsZi4gIEp1c3QgcmVtZW1iZXIgdG8gbG9hZCB0aGUgam95c3RpY2sgZHJpdmVyIAorQUZURVIgdGhlIHBzcyBzb3VuZCBkcml2ZXIuCisKK3Bzc19jZHJvbV9wb3J0CisKKwlUaGlzIHBhcmFtZXRlciB0YWtlcyBhIHBvcnQgYWRkcmVzcyBhcyBpdHMgcGFyYW1ldGVyLiAgQW55IGF2YWlsYWJsZSBwb3J0IAorYWRkcmVzcyBjYW4gYmUgc3BlY2lmaWVkIHRvIGVuYWJsZSB0aGUgQ0RST00gcG9ydCwgZXhjZXB0IGZvciAweDAgYW5kIC0xIGFzIAordGhlc2UgdmFsdWVzIHdvdWxkIGxlYXZlIHRoZSBwb3J0IGRpc2FibGVkLiAgTGlrZSB0aGUgam95c3RpY2sgcG9ydCwgdGhlIGNkcm9tIAorcG9ydCB3aWxsIHJlcXVpcmUgdGhhdCBhbiBhcHByb3ByaWF0ZSBDRFJPTSBkcml2ZXIgYmUgbG9hZGVkIGJlZm9yZSB5b3UgY2FuIG1ha2UgCit1c2Ugb2YgdGhlIG5ld2x5IGVuYWJsZWQgQ0RST00gcG9ydC4gIExpa2UgdGhlIGpveXN0aWNrIHBvcnQgb3B0aW9uIGFib3ZlLCAKK3JlbWVtYmVyIHRvIGxvYWQgdGhlIENEUk9NIGRyaXZlciBBRlRFUiB0aGUgcHNzIHNvdW5kIGRyaXZlci4gIFdoaWxlIGl0IG1heSAKK2RpZmZlciBvbiBzb21lIFBTUyBzb3VuZCBjYXJkcywgYWxsIHRoZSBQU1Mgc291bmQgY2FyZHMgdGhhdCBJIGhhdmUgc2VlbiBoYXZlIGEgCitidWlsdGluIFdlYXJuZXMgQ0RST00gcG9ydC4gIElmIHRoaXMgaXMgdGhlIGNhc2Ugd2l0aCB5b3VyIFBTUyBzb3VuZCBjYXJkIHlvdSAKK3Nob3VsZCBsb2FkIGF6dGNkIHdpdGggdGhlIGFwcHJvcHJpYXRlIHBvcnQgb3B0aW9uIHRoYXQgbWF0Y2hlcyB0aGUgcG9ydCB5b3UgCithc3NpZ25lZCB0byB0aGUgQ0RST00gcG9ydCB3aGVuIHlvdSBsb2FkZWQgeW91ciBwc3Mgc291bmQgZHJpdmVyLiAgKGV4LiAKK21vZHByb2JlIHBzcyBwc3NfY2Ryb21fcG9ydD0weDM0MCAmJiBtb2Rwcm9iZSBhenRjZCBhenRjZD0weDM0MCkgIFRoZSBkZWZhdWx0IAorc2V0dGluZyBvZiB0aGlzIHBhcmFtZXRlciBsZWF2ZXMgdGhlIENEUk9NIHBvcnQgZGlzYWJsZWQgdG8gbWFpbnRhaW4gZnVsbCAKK2NvbXBhdGliaWxpdHkgd2l0aCBzeXN0ZW1zIHVzaW5nIHByZXZpb3VzIHZlcnNpb25zIG9mIHRoaXMgZHJpdmVyLgorCisJT3RoZXIgb3B0aW9ucyBoYXZlIGFsc28gYmVlbiBhZGRlZCBmb3IgdGhlIGFkZGVkIGNvbnZlbmllbmNlIGFuZCB1dGlsaXR5IAorb2YgdGhlIHVzZXIuICBUaGVzZSBvcHRpb25zIGFyZSBvbmx5IGF2YWlsYWJsZSBpZiB0aGlzIGRyaXZlciBpcyBsb2FkZWQgYXMgYSAKK21vZHVsZS4KKworcHNzX25vX3NvdW5kCisKKwlUaGlzIG1vZHVsZSBwYXJhbWV0ZXIgaXMgYSBmbGFnIHRoYXQgY2FuIGJlIHVzZWQgdG8gdGVsbCB0aGUgZHJpdmVyIHRvIAoranVzdCBjb25maWd1cmUgbm9uLXNvdW5kIGNvbXBvbmVudHMuICAwIGNvbmZpZ3VyZXMgYWxsIGNvbXBvbmVudHMsIGEgbm9uLTAgCit2YWx1ZSB3aWxsIG9ubHkgYXR0ZW1wdCB0byBjb25maWd1cmUgdGhlIENEUk9NIGFuZCBqb3lzdGljayBwb3J0cy4gIFRoaXMgCitwYXJhbWV0ZXIgY2FuIGJlIHVzZWQgYnkgYSB1c2VyIHdobyBvbmx5IHdpc2hlZCB0byB1c2UgdGhlIGJ1aWx0aW4gam95c3RpY2sgCithbmQvb3IgQ0RST00gcG9ydChzKSBvZiBoaXMgUFNTIHNvdW5kIGNhcmQuICBJZiB0aGlzIGRyaXZlciBpcyBsb2FkZWQgd2l0aCB0aGlzIAorcGFyYW1ldGVyIGFuZCB3aXRoIHRoZSBwYXJhbWV0ZXIgYmVsb3cgc2V0IHRvIHRydWUgdGhlbiBhIHVzZXIgY2FuIHNhZmVseSB1bmxvYWQgCit0aGlzIGRyaXZlciB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZCAicm1tb2QgcHNzICYmIHJtbW9kIGFkMTg0OCAmJiBybW1vZCAKK21wdTQwMSAmJiBybW1vZCBzb3VuZCAmJiBybW1vZCBzb3VuZGNvcmUiIGFuZCByZXRhaW4gdGhlIGZ1bGwgZnVuY3Rpb25hbGl0eSBvZiAKK2hpcyBDRFJPTSBhbmQvb3Igam95c3RpY2sgcG9ydChzKSB3aGlsZSBnYWluaW5nIGJhY2sgdGhlIG1lbW9yeSBwcmV2aW91c2x5IHVzZWQgCitieSB0aGUgc291bmQgZHJpdmVycy4gIFRoaXMgZGVmYXVsdCBzZXR0aW5nIG9mIHRoaXMgcGFyYW1ldGVyIGlzIDAgdG8gcmV0YWluIAorZnVsbCBiZWhhdmlvcmFsIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBvZiB0aGlzIGRyaXZlci4KKworcHNzX2tlZXBfc2V0dGluZ3MKKworCVRoaXMgcGFyYW1ldGVyIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgd2hldGhlciB5b3Ugd2FudCB0aGUgZHJpdmVyIHRvIHJlc2V0IAorYWxsIGVtdWxhdGlvbnMgd2hlbmV2ZXIgaXRzIHVubG9hZGVkLiAgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciB0aG9zZSB3aG8gYXJlIAorc2hhcmluZyByZXNvdXJjZXMgKGlvIHBvcnRzLCBJUlEncywgRE1BJ3MpIGJldHdlZW4gZGlmZmVyZW50IElTQSBjYXJkcy4gIFRoaXMgCitmbGFnIGNhbiBhbHNvIGJlIHVzZWZ1bCBpbiB0aGF0IGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGlzIGRyaXZlciBtYXkgcmVzZXQgYWxsIAorZW11bGF0aW9ucyBieSBkZWZhdWx0IG9uIHRoZSBkcml2ZXIncyB1bmxvYWRpbmcgKGFzIGl0IHByb2JhYmx5IHNob3VsZCksIHNvIAorc3BlY2lmeWluZyBpdCBub3cgd2lsbCBlbnN1cmUgdGhhdCBhbGwgZnV0dXJlIHZlcnNpb25zIG9mIHRoaXMgZHJpdmVyIHdpbGwgCitjb250aW51ZSB0byB3b3JrIGFzIGV4cGVjdGVkLiAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhpcyBwYXJhbWV0ZXIgaXMgMSB0byAKK3JldGFpbiBmdWxsIGJlaGF2aW9yYWwgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHZlcnNpb25zIG9mIHRoaXMgZHJpdmVyLgorCitwc3NfZmlybXdhcmUKKworCVRoaXMgcGFyYW1ldGVyIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGZpbGUgY29udGFpbmluZyB0aGUgZmlybXdhcmUgCitjb2RlIHNvIHRoYXQgYSB1c2VyIGNvdWxkIHRlbGwgdGhlIGRyaXZlciB3aGVyZSB0aGF0IGZpbGUgaXMgbG9jYXRlZCBpbnN0ZWFkIAorb2YgaGF2aW5nIHRvIHB1dCBpdCBpbiBhIHByZWRlZmluZWQgbG9jYXRpb24gd2l0aCBhIHByZWRlZmluZWQgbmFtZS4gIFRoZSAKK2RlZmF1bHQgc2V0dGluZyBvZiB0aGlzIHBhcmFtZXRlciBpcyAiL2V0Yy9zb3VuZC9wc3Nfc3ludGgiIGFzIHRoaXMgd2FzIHRoZSAKK3BhdGggYW5kIGZpbGVuYW1lIHRoZSBoYXJkY29kZWQgdmFsdWUgaW4gdGhlIHByZXZpb3VzIHZlcnNpb25zIG9mIHRoaXMgZHJpdmVyLgorCitFeGFtcGxlczoKKworIyBOb3JtYWwgUFNTIHNvdW5kIGNhcmQgc3lzdGVtLCBsb2FkaW5nIG9mIGRyaXZlcnMuCisjIFNob3VsZCBiZSBzcGVjaWZpZWQgaW4gYW4gcmMgZmlsZSAoZXguIFNsYWNrd2FyZSB1c2VzIC9ldGMvcmMuZC9yYy5tb2R1bGVzKS4KKworL3NiaW4vbW9kcHJvYmUgcHNzIHBzc19pbz0weDIyMCBtcHVfaW89MHgzMzggbXB1X2lycT05IG1zc19pbz0weDUzMCBtc3NfaXJxPTEwIG1zc19kbWE9MSBwc3NfY2Ryb21fcG9ydD0weDM0MCBwc3NfZW5hYmxlX2pveXN0aWNrPTEKKy9zYmluL21vZHByb2JlIGF6dGNkIGF6dGNkPTB4MzQwCisvc2Jpbi9tb2Rwcm9iZSBqb3lzdGljaworCisjIFN5c3RlbSB1c2luZyB0aGUgUFNTIHNvdW5kIGNhcmQganVzdCBmb3IgaXRzIENEUk9NIGFuZCBqb3lzdGljayBwb3J0cy4KKyMgU2hvdWxkIGJlIHNwZWNpZmllZCBpbiBhbiByYyBmaWxlIChleC4gU2xhY2t3YXJlIHVzZXMgL2V0Yy9yYy5kL3JjLm1vZHVsZXMpLgorCisvc2Jpbi9tb2Rwcm9iZSBwc3MgcHNzX2lvPTB4MjIwIHBzc19jZHJvbV9wb3J0PTB4MzQwIHBzc19lbmFibGVfam95c3RpY2s9MSBwc3Nfbm9fc291bmQ9MQorL3NiaW4vcm1tb2QgcHNzICYmIC9zYmluL3JtbW9kIGFkMTg0OCAmJiAvc2Jpbi9ybW1vZCBtcHU0MDEgJiYgL3NiaW4vcm1tb2Qgc291bmQgJiYgL3NiaW4vcm1tb2Qgc291bmRjb3JlICAjIFRoaXMgbGluZSBub3QgbmVlZGVkLCBidXQgc2F2ZXMgbWVtb3J5LgorL3NiaW4vbW9kcHJvYmUgYXp0Y2QgYXp0Y2Q9MHgzNDAKKy9zYmluL21vZHByb2JlIGpveXN0aWNrCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9SRUFETUUuT1NTIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvUkVBRE1FLk9TUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDg1ZWEzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvUkVBRE1FLk9TUwpAQCAtMCwwICsxLDE0NTUgQEAKK0ludHJvZHVjdGlvbgorLS0tLS0tLS0tLS0tCisKK1RoaXMgZmlsZSBpcyBhIGNvbGxlY3Rpb24gb2YgYWxsIHRoZSBvbGQgUmVhZG1lIGZpbGVzIGRpc3RyaWJ1dGVkIHdpdGgKK09TUy9MaXRlIGJ5IEhhbm51IFNhdm9sYWluZW4uIFNpbmNlIHRoZSBuZXcgTGludXggc291bmQgZHJpdmVyIGlzIGZvdW5kZWQKK29uIGl0IEkgdGhpbmsgdGhlc2UgaW5mb3JtYXRpb24gbWF5IHN0aWxsIGJlIGludGVyZXN0aW5nIGZvciB1c2VycyB0aGF0CitoYXZlIHRvIGNvbmZpZ3VyZSB0aGVpciBzb3VuZCBzeXN0ZW0uCisKK0JlIHdhcm5lZDogQWxhbiBDb3ggaXMgdGhlIGN1cnJlbnQgbWFpbnRhaW5lciBvZiB0aGUgTGludXggc291bmQgZHJpdmVyIHNvIGlmCit5b3UgaGF2ZSBwcm9ibGVtcyB3aXRoIGl0LCBwbGVhc2UgY29udGFjdCBoaW0gb3IgdGhlIGN1cnJlbnQgZGV2aWNlLXNwZWNpZmljCitkcml2ZXIgbWFpbnRhaW5lciAoZS5nLiBmb3IgYWVkc3AxNiBzcGVjaWZpYyBwcm9ibGVtcyBjb250YWN0IG1lKS4gSWYgeW91IGhhdmUKK3BhdGNoZXMsIGNvbnRyaWJ1dGlvbnMgb3Igc3VnZ2VzdGlvbnMgc2VuZCB0aGVtIHRvIEFsYW46IEknbSBzdXJlIHRoZXkgYXJlCit3ZWxjb21lLgorCitJbiB0aGlzIGRvY3VtZW50IHlvdSB3aWxsIGZpbmQgYSBsb3Qgb2YgcmVmZXJlbmNlcyBhYm91dCBPU1MvTGl0ZSBvciBvc3NmcmVlOgordGhleSBhcmUgZ29uZSBmb3JldmVyLiBLZWVwaW5nIHRoaXMgaW4gbWluZCBhbmQgd2l0aCBhIGdyYWluIG9mIHNhbHQgdGhpcworZG9jdW1lbnQgY2FuIGJlIHN0aWxsIGludGVyZXN0aW5nIGFuZCB2ZXJ5IGhlbHBmdWwuCisKK1sgRmlsZSBlZGl0ZWQgMTcuMDEuMTk5OSAtIFJpY2NhcmRvIEZhY2NoZXR0aSBdCitbIEVkaXRlZCBtaXJvU09VTkQgc2VjdGlvbiAxOS4wNC4yMDAxIC0gUm9iZXJ0IFNpZW1lciBdCisKK09TUy9GcmVlIHZlcnNpb24gMy44IHJlbGVhc2Ugbm90ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUGxlYXNlIHJlYWQgdGhlIFNPVU5ELUhPV1RPIChhdmFpbGFibGUgZnJvbSBzdW5zaXRlLnVuYy5lZHUgYW5kIG90aGVyIExpbnV4IEZUUCAKK3NpdGVzKS4gSXQgZ2l2ZXMgaW5zdHJ1Y3Rpb25zIGFib3V0IHVzaW5nIHNvdW5kIHdpdGggTGludXguIEl0J3MgYml0IG91dCBvZgorZGF0ZSBidXQgc3RpbGwgdmVyeSB1c2VmdWwuIEluZm9ybWF0aW9uIGFib3V0IGJ1ZyBmaXhlcyBhbmQgc3VjaCB0aGluZ3MKK2lzIGF2YWlsYWJsZSBmcm9tIHRoZSB3ZWIgcGFnZSAoc2VlIGFib3ZlKS4KKworUGxlYXNlIGNoZWNrIGh0dHA6Ly93d3cub3BlbnNvdW5kLmNvbS9wZ3VpZGUgZm9yIG1vcmUgaW5mbyBhYm91dCBwcm9ncmFtbWluZword2l0aCBPU1MgQVBJLgorCisgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistICBUSElTIFZFUlNJT04gX19fX1JFUVVJUkVTX19fXyBMaW51eCAyLjEuNTcgT1IgTEFURVIuCisgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1BhY2thZ2VzICJzbmQtdXRpbC0zLjgudGFyLmd6IiBhbmQgInNuZC1kYXRhLTAuMS50YXIuWiIKK2NvbnRhaW4gdXNlZnVsIHV0aWxpdGllcyB0byBiZSB1c2VkIHdpdGggdGhpcyBkcml2ZXIuCitTZWUgaHR0cDovL3d3dy5vcGVuc291bmQuY29tL29zc2ZyZWUvIGZvcgorZG93bmxvYWQgaW5zdHJ1Y3Rpb25zLgorCitJZiB5b3UgYXJlIGxvb2tpbmcgZm9yIHRoZSBpbnN0YWxsYXRpb24gaW5zdHJ1Y3Rpb25zLCBwbGVhc2UKK2xvb2sgZm9yd2FyZCBpbnRvIHRoaXMgZG9jdW1lbnQuCisKK1N1cHBvcnRlZCBzb3VuZCBjYXJkcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NlZSBiZWxvdy4KKworQ29udHJpYnV0b3JzCistLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgY29udGFpbnMgY29kZSBieSBzZXZlcmFsIGNvbnRyaWJ1dG9ycy4gSW4gYWRkaXRpb24gc2V2ZXJhbCBvdGhlcgorcGVyc29ucyBoYXZlIGdpdmVuIHVzZWZ1bCBzdWdnZXN0aW9ucy4gVGhlIGZvbGxvd2luZyBpcyBhIGxpc3Qgb2YgbWFqb3IKK2NvbnRyaWJ1dG9ycy4gKEkgY291bGQgaGF2ZSBmb3Jnb3R0ZW4gc29tZSBuYW1lcy4pCisKKwlDcmFpZyBNZXR6CTEvMiBvZiB0aGUgUEFTMTYgTWl4ZXIgYW5kIFBDTSBzdXBwb3J0CisJUm9iIEhvb2Z0CVZvbHVtZSBjb21wdXRhdGlvbiBhbGdvcml0aG0gZm9yIHRoZSBGTSBzeW50aC4KKwlNaWthIExpbGplYmVyZwl1TGF3IGVuY29kaW5nIGFuZCBkZWNvZGluZyByb3V0aW5lcworCUplZmYgVHJhbnRlcglMaW51eCBTT1VORCBIT1dUTyBkb2N1bWVudAorCUdyZWcgTGVlCVZvbHVtZSBjb21wdXRhdGlvbiBhbGdvcml0aG0gZm9yIHRoZSBHVVMgYW5kCisJCQlsb3RzIG9mIHZhbHVhYmxlIHN1Z2dlc3Rpb25zLgorCUFuZHkgV2FybmVyCUlTQyBwb3J0CisJSmltIExvd2UsCisJQW1hbmNpbyBIYXN0eSBKcglGcmVlQlNEL05ldEJTRCBwb3J0CisJQW5kZXJzIEJhZWtnYWFyZCAJQnVnIGh1bnRpbmcgYW5kIHZhbHVhYmxlIHN1Z2dlc3Rpb25zLgorCUpvZXJnIFNjaHViZXJ0CVNCMTYgRFNQIHN1cHBvcnQgKGluaXRpYWwgdmVyc2lvbikuCisJQW5kcmV3IFJvYmluc29uIEltcHJvdmVtZW50cyB0byB0aGUgR1VTIGRyaXZlcgorCU1lZ2VucyBTQQlNSURJIHJlY29yZGluZyBmb3IgU0IgYW5kIFNCIFBybyAoaW5pdGlhbCB2ZXJzaW9uKS4KKwlNaWthZWwgTm9yZHF2aXN0ICBMaW5lYXIgdm9sdW1lIHN1cHBvcnQgZm9yIEdVUyBhbmQKKwkJCSAgbm9uYmxvY2tpbmcgL2Rldi9zZXF1ZW5jZXIuCisJSWFuIEhhcnRhcwkJU1ZSNC4yIHBvcnQKKwlNYXJrdXMgQXJvaGFyanUJYW5kCisJUmlzdG8gS2Fua2t1bmVuCQlNYWpvciBjb250cmlidXRpb25zIHRvIHRoZSBtaXhlciBzdXBwb3J0CisJCQkJb2YgR1VTIHYzLjcuCisJSHVueXVlIFlhdQlNaXhlciBzdXBwb3J0IGZvciBTRyBOWCBQcm8uCisJTWFyYyBIb2ZmbWFuCVBTUyBzdXBwb3J0IChpbml0aWFsIHZlcnNpb24pLgorCVJhaW5lciBWcmFua2VuCUluaXRpYWxpemF0aW9uIGZvciBKYXp6MTYgKGluaXRpYWwgdmVyc2lvbikuCisJUGV0ZXIgVHJhdHRsZXIJSW5pdGlhbCB2ZXJzaW9uIG9mIGxvYWRhYmxlIG1vZHVsZSBzdXBwb3J0IGZvciBMaW51eC4KKwlKUkEgR2lic29uCTE2IGJpdCBtb2RlIGZvciBKYXp6MTYgKGluaXRpYWwgdmVyc2lvbikKKwlEYXZvciBKYWRyaWpldmljIE1BRDE2IHN1cHBvcnQgKGluaXRpYWwgdmVyc2lvbikKKwlHcmVnb3IgSG9mZmxlaXQJTW96YXJ0IHN1cHBvcnQgKGluaXRpYWwgdmVyc2lvbikKKwlSaWNjYXJkbyBGYWNjaGV0dGkgQXVkaW8gRXhjZWwgRFNQIDE2IChhZWRzcDE2KSBzdXBwb3J0CisJSmFtZXMgSGlnaHRvd2VyIFNwb3R0aW5nIGEgdGlueSBidXQgaW1wb3J0YW50IGJ1ZyBpbiBDUzQyM3ggc3VwcG9ydC4KKwlEZW5pcyBTYWJsaWMJT1BUaSA4MkM5MjQgc3BlY2lmaWMgZW5oYW5jZW1lbnRzIChub24gUG5QIG1vZGUpCisJVGltIE1hY0tlbnppZQlGdWxsIGR1cGxleCBzdXBwb3J0IGZvciBPUFRpIDgyQzkzMC4KKwkKKwlQbGVhc2UgbG9vayBhdCBsb3dsZXZlbC9SRUFETUUgZm9yIG1vcmUgY29udHJpYnV0b3JzLgorCitUaGVyZSBhcmUgcHJvYmFibHkgbWFueSBvdGhlciBuYW1lcyBtaXNzaW5nLiBJZiB5b3UgaGF2ZSBzZW50IG1lIHNvbWUKK3BhdGNoZXMgYW5kIHlvdXIgbmFtZSBpcyBub3QgaW4gdGhlIGFib3ZlIGxpc3QsIHBsZWFzZSBpbmZvcm0gbWUuCisKK1NlbmRpbmcgeW91ciBjb250cmlidXRpb25zIG9yIHBhdGNoZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRmlyc3Qgb2YgYWxsIGl0J3MgaGlnaGx5IHJlY29tbWVuZGVkIHRvIGNvbnRhY3QgbWUgYmVmb3JlIHNlbmRpbmcgYW55dGhpbmcKK29yIGJlZm9yZSBldmVuIHN0YXJ0aW5nIHRvIGRvIGFueSB3b3JrLiBUZWxsIG1lIHdoYXQgeW91IHN1Z2dlc3QgdG8gYmUKK2NoYW5nZWQgb3Igd2hhdCB5b3UgaGF2ZSBwbGFubmVkIHRvIGRvLiBBbHNvIGVuc3VyZSB5b3UgYXJlIHVzaW5nIHRoZQordmVyeSBsYXRlc3QgKGRldmVsb3BtZW50KSB2ZXJzaW9uIG9mIE9TUy9GcmVlIHNpbmNlIHRoZSBjaGFuZ2UgbWF5IGFscmVhZHkgYmUKK2ltcGxlbWVudGVkIHRoZXJlLiBJbiBnZW5lcmFsIGl0J3MgYSBtYWpvciB3YXN0ZSBvZiB0aW1lIHRvIHRyeSB0byBpbXByb3ZlIGEKK3NldmVyYWwgbW9udGhzIG9sZCB2ZXJzaW9uLiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgbGF0ZXN0IHZlcnNpb24gY2FuIGJlIGZvdW5kCitmcm9tIGh0dHA6Ly93d3cub3BlbnNvdW5kLmNvbS9vc3NmcmVlLiBJbiBnZW5lcmFsIHRoZXJlIGlzIG5vIHBvaW50IGluCitzZW5kaW5nIG1lIHBhdGNoZXMgcmVsYXRpdmUgdG8gcHJvZHVjdGlvbiBrZXJuZWxzLgorCitTcG9uc29ycyBldGMuCistLS0tLS0tLS0tLS0tCisKK1RoZSBmb2xsb3dpbmcgY29tcGFuaWVzIGhhdmUgZ3JlYXRseSBoZWxwZWQgZGV2ZWxvcG1lbnQgb2YgdGhpcyBkcml2ZXIgCitpbiBmb3JtIG9mIGEgZnJlZSBjb3B5IG9mIHRoZWlyIHByb2R1Y3Q6CisKK05vdmVsbCwgSW5jLgkJVW5peFdhcmUgcGVyc29uYWwgZWRpdGlvbiArIFNESworVGhlIFNhbnRhIENydXogT3BlcmF0aW9uLCBJbmMuIAlBIFNDTyBPcGVuU2VydmVyICsgU0RLCitFbnNvbmlxIENvcnAsCQlhIFNvdW5kU2NhcGUgY2FyZCBhbmQgZXh0ZW5zaXZlIGFtb3VudCBvZiBhc3Npc3RhbmNlCitNZWRpYVRyaXggUGVyaXBoZXJhbHMgSW5jLCBhIEF1ZGlvVHJpeCBQcm8gY2FyZCArIFNESworQWNlciwgSW5jLgkJYSBwYWlyIG9mIEFjZXJNYWdpYyBTMjMgY2FyZHMuCisKK0luIGFkZGl0aW9uIHRoZSBmb2xsb3dpbmcgY29tcGFuaWVzIGhhdmUgcHJvdmlkZWQgbWUgc3VmZmljaWVudCBhbW91bnQKK29mIHRlY2huaWNhbCBpbmZvcm1hdGlvbiBhdCBsZWFzdCBzb21lIG9mIHRoZWlyIHByb2R1Y3RzIChmcmVlIG9yICQkJCk6CisKK0FkdmFuY2VkIEdyYXZpcyBDb21wdXRlciBUZWNobm9sb2d5IEx0ZC4KK01lZGlhIFZpc2lvbiBJbmMuCitBbmFsb2cgRGV2aWNlcyBJbmMuCitMb2dpdGVjaCBJbmMuCitBenRlY2ggTGFicyBJbmMuCitDcnlzdGFsIFNlbWljb25kdWN0b3IgQ29ycG9yYXRpb24sCitJbnRlZ3JhdGVkIENpcmN1aXQgU3lzdGVtcyBJbmMuCitPQUsgVGVjaG5vbG9neQorT1BUaQorVHVydGxlIEJlYWNoCittaXJvCitBZCBMaWIgSW5jLiAoJCQpCitNdXNpYyBRdWVzdCBJbmMuICgkJCkKK0NyZWF0aXZlIExhYnMgKCQkJCkKKworSWYgeW91IGhhdmUgc29tZSBwcm9ibGVtcworPT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZWFkIHRoZSBzb3VuZCBIT1dUTyAoc3Vuc2l0ZS51bmMuZWR1Oi9wdWIvTGludXgvZG9jcy8uLi4/KS4KK0Fsc28gbG9vayBhdCB0aGUgaG9tZSBwYWdlIChodHRwOi8vd3d3Lm9wZW5zb3VuZC5jb20vb3NzZnJlZSkuIEl0IG1heQorY29udGFpbiBpbmZvIGFib3V0IHNvbWUgcmVjZW50IGJ1ZyBmaXhlcy4KKworSXQncyBsaWtlbHkgdGhhdCB5b3UgaGF2ZSBzb21lIHByb2JsZW1zIHdoZW4gdHJ5aW5nIHRvIHVzZSB0aGUgc291bmQgZHJpdmVyCitmaXJzdCB0aW1lLiBTb3VuZCBjYXJkcyBkb24ndCBoYXZlIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gc28gdGhlcmUgYXJlIG5vCitnb29kIGRlZmF1bHQgY29uZmlndXJhdGlvbiB0byB1c2UuIFBsZWFzZSB0cnkgdG8gdXNlIHNhbWUgSS9PLCBETUEgYW5kIElSUQordmFsdWVzIGZvciB0aGUgc291bmQgY2FyZCB0aGFuIHdpdGggRE9TLgorCitJZiB5b3UgZ2V0IGFuIGVycm9yIG1lc3NhZ2Ugd2hlbiB0cnlpbmcgdG8gdXNlIHRoZSBkcml2ZXIsIHBsZWFzZSBsb29rCithdCAvdmFyL2FkbS9tZXNzYWdlcyBmb3IgbW9yZSB2ZXJib3NlIGVycm9yIG1lc3NhZ2UuCisKKworVGhlIGZvbGxvd2luZyBlcnJvcnMgYXJlIGxpa2VseSB3aXRoIC9kZXYvZHNwIGFuZCAvZGV2L2F1ZGlvLgorCisJLSAiTm8gc3VjaCBkZXZpY2Ugb3IgYWRkcmVzcyIuCisJVGhpcyBlcnJvciBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBhcmUgbm8gc3VpdGFibGUgaGFyZHdhcmUgZm9yIHRoZQorCWRldmljZSBmaWxlIG9yIHRoZSBzb3VuZCBkcml2ZXIgaGFzIGJlZW4gY29tcGlsZWQgd2l0aG91dCBzdXBwb3J0IGZvcgorCXRoaXMgcGFydGljdWxhciBkZXZpY2UuIEZvciBleGFtcGxlIC9kZXYvYXVkaW8gYW5kIC9kZXYvZHNwIHdpbGwgbm90CisJd29yayBpZiAiZGlnaXRpemVkIHZvaWNlIHN1cHBvcnQiIHdhcyBub3QgZW5hYmxlZCBkdXJpbmcgIm1ha2UgY29uZmlnIi4KKwkKKwktICJEZXZpY2Ugb3IgcmVzb3VyY2UgYnVzeSIuIFByb2JhYmx5IHRoZSBJUlEgKG9yIERNQSkgY2hhbm5lbCAKKwlyZXF1aXJlZCBieSB0aGUgc291bmQgY2FyZCBpcyBpbiB1c2UgYnkgc29tZSBvdGhlciBkZXZpY2UvZHJpdmVyLgorCisJLSAiSS9PIGVycm9yIi4gQWxtb3N0IGNlcnRhaW5seSAoOTklKSBpdCdzIGFuIElSUSBvciBETUEgY29uZmxpY3QuCisJTG9vayBhdCB0aGUga2VybmVsIG1lc3NhZ2VzIGluIC92YXIvYWRtL25vdGljZSBmb3IgbW9yZSBpbmZvLgorCisJLSAiSW52YWxpZCBhcmd1bWVudCIuIFRoZSBhcHBsaWNhdGlvbiBpcyBjYWxsaW5nIGlvY3RsKCkKKwl3aXRoIGltcG9zc2libGUgcGFyYW1ldGVycy4gQ2hlY2sgdGhhdCB0aGUgYXBwbGljYXRpb24gaXMKKwlmb3Igc291bmQgZHJpdmVyIHZlcnNpb24gMi5YIG9yIGxhdGVyLgorCitMaW51eCBpbnN0YWxsYXRpb24KKz09PT09PT09PT09PT09PT09PQorCitJTVBPUlRBTlQhCVJlYWQgdGhpcyBpZiB5b3UgYXJlIGluc3RhbGxpbmcgYSBzZXBhcmF0ZWx5CisJCWRpc3RyaWJ1dGVkIHZlcnNpb24gb2YgdGhpcyBkcml2ZXIuCisKKwkJQ2hlY2sgdGhhdCB5b3VyIGtlcm5lbCB2ZXJzaW9uIHdvcmtzIHdpdGggdGhpcworCQlyZWxlYXNlIG9mIHRoZSBkcml2ZXIgKHNlZSBSZWFkbWUpLiBBbHNvIHZlcmlmeQorCQl0aGF0IHlvdXIgY3VycmVudCBrZXJuZWwgdmVyc2lvbiBkb2Vzbid0IGhhdmUgbW9yZQorCQlyZWNlbnQgc291bmQgZHJpdmVyIHZlcnNpb24gdGhhbiB0aGlzIG9uZS4gSVQnUyBISUdITFkKKwkJUkVDT01NRU5ERUQgVEhBVCBZT1UgVVNFIFRIRSBTT1VORCBEUklWRVIgVkVSU0lPTiBUSEFUCisJCUlTIERJU1RSSUJVVEVEIFdJVEggS0VSTkVMIFNPVVJDRVMuCisKKy0gV2hlbiBpbnN0YWxsaW5nIHNlcGFyYXRlbHkgZGlzdHJpYnV0ZWQgc291bmQgZHJpdmVyIHlvdSBzaG91bGQgZmlyc3QKKyAgcmVhZCB0aGUgYWJvdmUgbm90aWNlLiBUaGVuIHRyeSB0byBmaW5kIHByb3BlciBkaXJlY3Rvcnkgd2hlcmUgYW5kIGhvdworICB0byBpbnN0YWxsIHRoZSBkcml2ZXIgc291cmNlcy4gWW91IHNob3VsZCBub3QgdHJ5IHRvIGluc3RhbGwgYSBzZXBhcmF0ZWx5CisgIGRpc3RyaWJ1dGVkIGRyaXZlciB2ZXJzaW9uIGlmIHlvdSBhcmUgbm90IGFibGUgdG8gZmluZCB0aGUgcHJvcGVyIHdheQorICB5b3Vyc2VsZiAoaW4gdGhpcyBjYXNlIHVzZSB0aGUgdmVyc2lvbiB0aGF0IGlzIGRpc3RyaWJ1dGVkIHdpdGgga2VybmVsCisgIHNvdXJjZXMpLiBSZW1vdmUgb2xkIHZlcnNpb24gb2YgbGludXgvZHJpdmVycy9zb3VuZCBkaXJlY3RvcnkgYmVmb3JlCisgIGluc3RhbGxpbmcgbmV3IGZpbGVzLgorCistIFRvIGJ1aWxkIHRoZSBkZXZpY2UgZmlsZXMgeW91IG5lZWQgdG8gcnVuIHRoZSBlbmNsb3NlZCBzaGVsbCBzY3JpcHQgCisgIChzZWUgYmVsb3cpLiBZb3UgbmVlZCB0byBkbyB0aGlzIG9ubHkgd2hlbiBpbnN0YWxsaW5nIHNvdW5kIGRyaXZlcgorICBmaXJzdCB0aW1lIG9yIHdoZW4gdXBncmFkaW5nIHRvIG11Y2ggcmVjZW50IHZlcnNpb24gdGhhbiB0aGUgZWFybGllcgorICBvbmUuCisKKy0gQ29uZmlndXJlIGFuZCBjb21waWxlIExpbnV4IGFzIG5vcm1hbGx5IChyZW1lbWJlciB0byBpbmNsdWRlIHRoZQorICBzb3VuZCBzdXBwb3J0IGR1cmluZyAibWFrZSBjb25maWciKS4gUGxlYXNlIHJlZmVyIHRvIGtlcm5lbCBkb2N1bWVudGF0aW9uCisgIGZvciBpbnN0cnVjdGlvbnMgYWJvdXQgY29uZmlndXJpbmcgYW5kIGNvbXBpbGluZyBrZXJuZWwuIEZpbGUgUmVhZG1lLmNhcmRzCisgIGNvbnRhaW5zIGNhcmQgc3BlY2lmaWMgaW5zdHJ1Y3Rpb25zIGZvciBjb25maWd1cmluZyB0aGlzIGRyaXZlciBmb3IKKyAgdXNlIHdpdGggdmFyaW91cyBzb3VuZCBjYXJkcy4KKworQm9vdCB0aW1lIGNvbmZpZ3VyYXRpb24gKHVzaW5nIGxpbG8gYW5kIGluc21vZCkgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGluZm9ybWF0aW9uIGhhcyBiZWVuIHJlbW92ZWQuIFRvbyBtYW55IHVzZXJzIGRpZG4ndCBiZWxpZXZlCit0aGF0IGl0J3MgcmVhbGx5IG5vdCBuZWNlc3NhcnkgdG8gdXNlIHRoaXMgbWV0aG9kLiBQbGVhc2UgbG9vayBhdAorUmVhZG1lIG9mIHNvdW5kIGRyaXZlciB2ZXJzaW9uIDMuMC4xIGlmIHlvdSBzdGlsbCB3YW50IHRvIHVzZSB0aGlzIG1ldGhvZC4KKworUHJvYmxlbXMKKy0tLS0tLS0tCisKK0NvbW1vbiBlcnJvciBtZXNzYWdlczoKKworLSAvZGV2Lz8/Pz8/Pz86IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkuCitSdW4gdGhlIHNjcmlwdCBhdCB0aGUgZW5kIG9mIHRoaXMgZmlsZS4KKworLSAvZGV2Lz8/Pz8/Pz86IE5vIHN1Y2ggZGV2aWNlLgorWW91IGFyZSBub3QgcnVubmluZyBrZXJuZWwgd2hpY2ggY29udGFpbnMgdGhlIHNvdW5kIGRyaXZlci4gV2hlbiB1c2luZworbW9kdWxhcml6ZWQgc291bmQgZHJpdmVyIHRoaXMgZXJyb3IgbWVhbnMgdGhhdCB0aGUgc291bmQgZHJpdmVyIGlzIG5vdAorbG9hZGVkLgorCistIC9kZXYvPz8/PzogTm8gc3VjaCBkZXZpY2Ugb3IgYWRkcmVzcy4KK1NvdW5kIGRyaXZlciBkaWRuJ3QgZGV0ZWN0IHN1aXRhYmxlIGNhcmQgd2hlbiBpbml0aWFsaXppbmcuIFBsZWFzZSBsb29rIGF0CitSZWFkbWUuY2FyZHMgZm9yIGluZm8gYWJvdXQgY29uZmlndXJpbmcgdGhlIGRyaXZlciB3aXRoIHlvdXIgY2FyZC4gQWxzbworY2hlY2sgZm9yIHBvc3NpYmxlIGJvb3QgKGluc21vZCkgdGltZSBlcnJvciBtZXNzYWdlcyBpbiAvdmFyL2FkbS9tZXNzYWdlcy4KKworLSBPdGhlciBtZXNzYWdlcyBvciBwcm9ibGVtcworUGxlYXNlIGNoZWNrIGh0dHA6Ly93d3cub3BlbnNvdW5kLmNvbS9vc3NmcmVlIGZvciBtb3JlIGluZm8uCisKK0NvbmZpZ3VyaW5nIHZlcnNpb24gMy44IChmb3IgTGludXgpIHdpdGggc29tZSBjb21tb24gc291bmQgY2FyZHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgY29uZmlndXJpbmcgc291bmQgY2FyZHMgd2l0aCB0aGUgZnJlZXdhcmUgdmVyc2lvbiBvZgorT3BlbiBTb3VuZCBTeXN0ZW1zIChPU1MvRnJlZSkuIEluZm9ybWF0aW9uIGFib3V0IHRoZSBjb21tZXJjaWFsIHZlcnNpb24KKyhPU1MvTGludXgpIGFuZCBpdHMgY29uZmlndXJhdGlvbiBpcyBhdmFpbGFibGUgZnJvbSAKK2h0dHA6Ly93d3cub3BlbnNvdW5kLmNvbS9saW51eC5odG1sLiBJbmZvcm1hdGlvbiBwcmVzZW50ZWQgaGVyZSBpcworbm90IHZhbGlkIGZvciBPU1MvTGludXguIAorCitJZiB5b3UgYXJlIHVuc3VyZSBhYm91dCBob3cgdG8gY29uZmlndXJlIE9TUy9GcmVlCit5b3UgY2FuIGRvd25sb2FkIHRoZSBmcmVlIGV2YWx1YXRpb24gdmVyc2lvbiBvZiBPU1MvTGludXggZnJvbSB0aGUgYWJvdmUKK2FkZHJlc3MuIFRoZXJlIGlzIGEgY2hhbmNlIHRoYXQgaXQgY2FuIGF1dG9kZXRlY3QgeW91ciBzb3VuZCBjYXJkLiBJbiB0aGlzIGNhc2UKK3lvdSBjYW4gdXNlIHRoZSBpbmZvcm1hdGlvbiBpbmNsdWRlZCBpbiBzb3VuZG9uLmxvZyB3aGVuIGNvbmZpZ3VyaW5nIE9TUy9GcmVlLgorCisKK0lNUE9SVEFOVCEJVGhpcyBkb2N1bWVudCBjb3ZlcnMgb25seSBjYXJkcyB0aGF0IHdlcmUgImtub3duIiB3aGVuCisJCXRoaXMgZHJpdmVyIHZlcnNpb24gd2FzIHJlbGVhc2VkLiBQbGVhc2UgbG9vayBhdAorCQlodHRwOi8vd3d3Lm9wZW5zb3VuZC5jb20vb3NzZnJlZSBmb3IgaW5mbyBhYm91dAorCQljYXJkcyBpbnRyb2R1Y2VkIHJlY2VudGx5LgorCisJCVdoZW4gY29uZmlndXJpbmcgdGhlIHNvdW5kIGRyaXZlciwgeW91IHNob3VsZCBjYXJlZnVsbHkKKwkJY2hlY2sgZWFjaCBzb3VuZCBjb25maWd1cmF0aW9uIG9wdGlvbiAocGFydGljdWxhcmx5CisJCSJTdXBwb3J0IGZvciAvZGV2L2RzcCBhbmQgL2Rldi9hdWRpbyIpLiBUaGUgZGVmYXVsdCB2YWx1ZXMKKwkJb2ZmZXJlZCBieSB0aGVzZSBwcm9ncmFtcyBhcmUgbm90IG5lY2Vzc2FyaWx5IHZhbGlkLgorCisKK1RIRSBCSUdHRVNUIE1JU1RBS0VTIFlPVSBDQU4gTUFLRQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzEuIEFzc3VtaW5nIHRoYXQgdGhlIGNhcmQgaXMgU291bmQgQmxhc3RlciBjb21wYXRpYmxlIHdoZW4gaXQncyBub3QuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbnVtYmVyIG9uZSBtaXN0YWtlIGlzIHRvIGFzc3VtZSB0aGF0IHlvdXIgY2FyZCBpcyBjb21wYXRpYmxlIHdpdGgKK1NvdW5kIEJsYXN0ZXIuIE9ubHkgdGhlIGNhcmRzIG1hZGUgYnkgQ3JlYXRpdmUgVGVjaG5vbG9neSBvciB3aGljaCBoYXZlCitvbmUgb3IgbW9yZSBjaGlwcyBsYWJlbGVkIGJ5IENyZWF0aXZlIGFyZSBTQiBjb21wYXRpYmxlLiBJbiBhZGRpdGlvbiB0aGVyZQorYXJlIGZldyBzb3VuZCBjaGlwc2V0cyB3aGljaCBhcmUgU0IgY29tcGF0aWJsZSBpbiBMaW51eCBzdWNoIGFzIEVTUzE2ODggb3IKK0phenoxNi4gTm90ZSB0aGF0IFNCIGNvbXBhdGliaWxpdHkgaW4gRE9TL1dpbmRvd3MgZG9lcyBfTk9UXyBtZWFuIGFueXRoaW5nCitpbiBMaW51eC4gCisKK0lGIFlPVSBSRUFMTFkgQVJFIDE1MCUgU1VSRSBZT1UgSEFWRSBBIFNPVU5EIEJMQVNURVIgWU9VIENBTiBTS0lQIFRIRSBSRVNUIE9GCitUSElTIENIQVBURVIuCisKK0ZvciBtb3N0IG90aGVyICJzdXBwb3NlZCB0byBiZSBTQiBjb21wYXRpYmxlIiBjYXJkcyB5b3UgaGF2ZSB0byB1c2Ugb3RoZXIKK3RoYW4gU0IgZHJpdmVycyAoc2VlIGJlbG93KS4gIEl0IGlzIHBvc3NpYmxlIHRvIGdldCBtb3N0IHNvdW5kIGNhcmRzIHRvIHdvcmsKK2luIFNCIG1vZGUgYnV0IGluIGdlbmVyYWwgaXQncyBhIGNvbXBsZXRlIHdhc3RlIG9mIHRpbWUuIFRoZXJlIGFyZSBzZXZlcmFsCitwcm9ibGVtcyB3aGljaCB5b3Ugd2lsbCBlbmNvdW50ZXIgYnkgdXNpbmcgU0IgbW9kZSB3aXRoIGNhcmRzIHRoYXQgYXJlIG5vdAordHJ1bHkgU0IgY29tcGF0aWJsZToKKworLSBUaGUgU0IgZW11bGF0aW9uIGlzIGF0IG1vc3QgU0IgUHJvIChEU1AgdmVyc2lvbiAzLngpIHdoaWNoIG1lYW5zIHRoYXQgCit5b3UgZ2V0IG9ubHkgOCBiaXQgYXVkaW8gKHRoZXJlIGlzIGFsd2F5cyBhbiBhbm90aGVyICgibmF0aXZlIikgbW9kZSB3aGljaAorZ2l2ZXMgdGhlIDE2IGJpdCBjYXBhYmlsaXR5KS4gVGhlIDggYml0IG9ubHkgb3BlcmF0aW9uIGlzIHRoZSByZWFzb24gd2h5CittYW55IHVzZXJzIGNsYWltIHRoYXQgc291bmQgcXVhbGl0eSBpbiBMaW51eCBpcyBtdWNoIHdvcnNlIHRoYW4gaW4gRE9TLgorSW4gYWRkaXRpb24gc29tZSBhcHBsaWNhdGlvbnMgcmVxdWlyZSAxNiBiaXQgbW9kZSBhbmQgdGhleSBwcm9kdWNlIGp1c3QKK25vaXNlIHdpdGggYSA4IGJpdCBvbmx5IGRldmljZS4KKy0gVGhlIGNhcmQgbWF5IHdvcmsgb25seSBpbiBzb21lIGNhc2VzIGJ1dCByZWZ1c2UgdG8gd29yayBtb3N0IG9mIHRoZQordGltZS4gVGhlIFNCIGNvbXBhdGlibGUgbW9kZSBhbHdheXMgcmVxdWlyZXMgc3BlY2lhbCBpbml0aWFsaXphdGlvbiB3aGljaCBpcyAKK2RvbmUgYnkgdGhlIERPUy9XaW5kb3dzIGRyaXZlcnMuIFRoaXMga2luZCBvZiBjYXJkcyB3b3JrIGluIExpbnV4IGFmdGVyCit5b3UgaGF2ZSB3YXJtIGJvb3RlZCBpdCBhZnRlciBET1MgYnV0IHRoZXkgZG9uJ3Qgd29yayBhZnRlciBjb2xkIGJvb3QKKyhwb3dlciBvbiBvciByZXNldCkuCistIFlvdSBnZXQgdGhlIGZhbW91cyAiRE1BIHRpbWVkIG91dCIgbWVzc2FnZXMuIFVzdWFsbHkgYWxsIFNCIGNsb25lcyBoYXZlCitzb2Z0d2FyZSBzZWxlY3RhYmxlIElSUSBhbmQgRE1BIHNldHRpbmdzLiBJZiB0aGUgKHBvd2VyIG9uIGRlZmF1bHQpIHZhbHVlcworY3VycmVudGx5IHVzZWQgYnkgdGhlIGNhcmQgZG9uJ3QgbWF0Y2ggY29uZmlndXJhdGlvbiBvZiB0aGUgZHJpdmVyIHlvdSB3aWxsCitnZXQgdGhlIGFib3ZlIGVycm9yIG1lc3NhZ2Ugd2hlbmV2ZXIgeW91IHRyeSB0byByZWNvcmQgb3IgcGxheS4gVGhlcmUgYXJlCitmZXcgb3RoZXIgcmVhc29ucyB0byB0aGUgRE1BIHRpbWVvdXQgbWVzc2FnZSBidXQgdXNpbmcgdGhlIFNCIG1vZGUgc2VlbXMKK3RvIGJlIHRoZSBtb3N0IGNvbW1vbiBjYXVzZS4KKworMi4gVHJ5aW5nIHRvIHVzZSBhIFBuUCAoUGx1ZyAmIFBsYXkpIGNhcmQganVzdCBsaWtlIGFuIG9yZGluYXJ5IHNvdW5kIGNhcmQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1BsdWcgJiBQbGF5IGlzIGEgcHJvdG9jb2wgZGVmaW5lZCBieSBJbnRlbCBhbmQgTWljcm9zb2Z0LiBJdCBsZXRzIG9wZXJhdGluZworc3lzdGVtcyB0byBlYXNpbHkgaWRlbnRpZnkgYW5kIHJlY29uZmlndXJlIEkvTyBwb3J0cywgSVJRcyBhbmQgRE1BcyBvZiBJU0EKK2NhcmRzLiBUaGUgcHJvYmxlbSB3aXRoIFBuUCBjYXJkcyBpcyB0aGF0IHRoZSBzdGFuZGFyZCBMaW51eCBkb2Vzbid0IGN1cnJlbnRseQorKHZlcnNpb25zIDIuMS54IGFuZCBlYXJsaWVyKSBkb24ndCBzdXBwb3J0IFBuUC4gVGhpcyBtZWFucyB0aGF0IHlvdSB3aWxsIGhhdmUKK3RvIHVzZSBzb21lIHNwZWNpYWwgdHJpY2tzIChzZWUgbGF0ZXIpIHRvIGdldCBhIFBuUCBjYXJkIGFsaXZlLiBNYW55IFBuUCBjYXJkcword29yayBhZnRlciB0aGV5IGhhdmUgYmVlbiBpbml0aWFsaXplZCBidXQgdGhpcyBpcyBub3QgYWx3YXlzIHRoZSBjYXNlLgorCitUaGVyZSBhcmUgc29tZXRpbWVzIGJvdGggUG5QIGFuZCBub24tUG5QIHZlcnNpb25zIG9mIHRoZSBzYW1lIHNvdW5kIGNhcmQuCitUaGUgbm9uLVBuUCB2ZXJzaW9uIGlzIHRoZSBvcmlnaW5hbCBtb2RlbCB3aGljaCB1c3VhbGx5IGhhcyBiZWVuIGRpc2NvbnRpbnVlZAorbW9yZSB0aGFuIGFuIHllYXIgYWdvLiBUaGUgUG5QIHZlcnNpb24gaGFzIHRoZSBzYW1lIG5hbWUgYnV0IHdpdGggIlBuUCIKK2FwcGVuZGVkIHRvIGl0IChzb21ldGltZXMgbm90KS4gVGhpcyBjYXVzZXMgbWFqb3IgY29uZnVzaW9uIHNpbmNlIHRoZSBub24tUG5QCittb2RlbCB3b3JrcyB3aXRoIExpbnV4IGJ1dCB0aGUgUG5QIG9uZSBkb2Vzbid0LgorCitZb3Ugc2hvdWxkIGNhcmVmdWxseSBjaGVjayBpZiAiUGx1ZyAmIFBsYXkiIG9yICJQblAiIGlzIG1lbnRpb25lZCBpbiB0aGUgbmFtZQorb2YgdGhlIGNhcmQgb3IgaW4gdGhlIGRvY3VtZW50YXRpb24gb3IgcGFja2FnZSB0aGF0IGNhbWUgd2l0aCB0aGUgY2FyZC4gCitFdmVyeXRoaW5nIGRlc2NyaWJlZCBpbiB0aGUgcmVzdCBvZiB0aGlzIGRvY3VtZW50IGlzIG5vdCBuZWNlc3NhcmlseSB2YWxpZCBmb3IKK1BuUCBtb2RlbHMgb2Ygc291bmQgY2FyZHMgZXZlbiB5b3UgaGF2ZSBtYW5hZ2VkIHRvIHdha2UgdXAgdGhlIGNhcmQgcHJvcGVybHkuCitNYW55IFBuUCBjYXJkcyBhcmUgc2ltcGx5IHRvbyBkaWZmZXJlbnQgZnJvbSB0aGVpciBub24tUG5QIGFuY2VzdG9ycyB3aGljaCBhcmUKK2NvdmVyZWQgYnkgdGhpcyBkb2N1bWVudC4KKworCitDYXJkcyB0aGF0IGFyZSBub3QgKGZ1bGx5KSBzdXBwb3J0ZWQgYnkgdGhpcyBkcml2ZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitTZWUgaHR0cDovL3d3dy5vcGVuc291bmQuY29tL29zc2ZyZWUgZm9yIGluZm9ybWF0aW9uIGFib3V0IHNvdW5kIGNhcmRzIAordG8gYmUgc3VwcG9ydGVkIGluIGZ1dHVyZS4gCisKKworSG93IHRvIHVzZSBzb3VuZCB3aXRob3V0IHJlY29tcGlsaW5nIGtlcm5lbCBhbmQvb3Igc291bmQgZHJpdmVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlcmUgaXMgYSBjb21tZXJjaWFsIHNvdW5kIGRyaXZlciB3aGljaCBjb21lcyBpbiBwcmVjb21waWxlZCBmb3JtIGFuZCBkb2Vzbid0CityZXF1aXJlIHJlY29tcGlsaW5nIG9mIHRoZSBrZXJuZWwuIFNlZSBodHRwOi8vd3d3LjRGcm9udC10ZWNoLmNvbS9vc3MuaHRtbCBmb3IKK21vcmUgaW5mby4KKworCitDb25maWd1cmluZyBQblAgY2FyZHMKKz09PT09PT09PT09PT09PT09PT09PQorCitOZXcgdmVyc2lvbnMgb2YgbW9zdCBzb3VuZCBjYXJkcyB1c2UgdGhlIHNvLWNhbGxlZCBJU0EgUG5QIHByb3RvY29sIGZvcgorc29mdCBjb25maWd1cmluZyB0aGVpciBJL08sIElSUSwgRE1BIGFuZCBzaGFyZWQgbWVtb3J5IHJlc291cmNlcy4KK0N1cnJlbnRseSBhdCBsZWFzdCBjYXJkcyBtYWRlIGJ5IENyZWF0aXZlIFRlY2hub2xvZ3kgKFNCMzIgYW5kIFNCMzJBV0UKK1BuUCksIEdyYXZpcyAoR1VTIFBuUCBhbmQgR1VTIFBuUCBQcm8pLCBFbnNvbmlxIChTb3VuZHNjYXBlIFBuUCkgYW5kCitBenRlY2ggKHNvbWUgU291bmQgR2FsYXh5IG1vZGVscykgdXNlIFBuUCB0ZWNobm9sb2d5LiBUaGUgQ1M0MjMyLzQyMzYgYXVkaW8KK2NoaXAgYnkgQ3J5c3RhbCBTZW1pY29uZHVjdG9yIChJbnRlbCBBdGxhbnRpcywgSFAgUGF2aWxpb24gYW5kIG1hbnkgb3RoZXIKK21vdGhlcmJvYXJkcykgaXMgYWxzbyBiYXNlZCBvbiBQblAgdGVjaG5vbG9neSBidXQgdGhlcmUgaXMgYSAibmF0aXZlIiBkcml2ZXIKK2F2YWlsYWJsZSBmb3IgaXQgKHNlZSBpbmZvcm1hdGlvbiBhYm91dCBDUzQyMzIgbGF0ZXIgaW4gdGhpcyBkb2N1bWVudCkuCisKK1BuUCBzb3VuZCBjYXJkcyAoYXMgd2VsbCBhcyBtb3N0IG90aGVyIFBuUCBJU0EgY2FyZHMpIGFyZSBub3Qgc3VwcG9ydGVkCitieSB0aGlzIHZlcnNpb24gb2YgdGhlIGRyaXZlciAuIFByb3Blcgorc3VwcG9ydCBmb3IgdGhlbSBzaG91bGQgYmUgcmVsZWFzZWQgZHVyaW5nIDk3IG9uY2UgdGhlIGtlcm5lbCBsZXZlbAorUG5QIHN1cHBvcnQgaXMgYXZhaWxhYmxlLgorCitUaGVyZSBpcyBhIG1ldGhvZCB0byBnZXQgbW9zdCBvZiB0aGUgUG5QIGNhcmRzIHRvIHdvcmsuIFRoZSBiYXNpYyBtZXRob2QKK2lzIHRoZSBmb2xsb3dpbmc6CisKKzEpIEJvb3QgRE9TIHNvIHRoZSBjYXJkJ3MgRE9TIGRyaXZlcnMgaGF2ZSBhIGNoYW5jZSB0byBpbml0aWFsaXplIGl0LgorMikgX0NvbGRfIGJvb3QgdG8gTGludXggYnkgdXNpbmcgImxvYWRsaW4uZXhlIi4gIEhpdHRpbmcgY3RybC1hbHQtZGVsCit3b3JrcyB3aXRoIG9sZGVyIG1hY2hpbmVzIGJ1dCBjYXVzZXMgYSBoYXJkIHJlc2V0IG9mIGFsbCBjYXJkcyBvbiByZWNlbnQKKyhQZW50aXVtKSBtYWNoaW5lcy4KKzMpIElmIHlvdSBoYXZlIHRoZSBzb3VuZCBkcml2ZXIgaW4gTGludXggY29uZmlndXJlZCBwcm9wZXJseSwgdGhlIGNhcmQgc2hvdWxkCit3b3JrIG5vdy4gIlByb3BlciIgbWVhbnMgdGhhdCBJL08sIElSUSBhbmQgRE1BIHNldHRpbmdzIGFyZSB0aGUgc2FtZSBhcyBpbgorRE9TLiBUaGUgaGFyZCBwYXJ0IGlzIHRvIGZpbmQgd2hpY2ggc2V0dGluZ3Mgd2VyZSB1c2VkLiBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YKK3lvdXIgY2FyZCBmb3IgbW9yZSBpbmZvLgorCitXaW5kb3dzIDk1IGNvdWxkIHdvcmsgYXMgd2VsbCBhcyBET1MgYnV0IHJ1bm5pbmcgbG9hZGxpbiBtYXkgYmUgZGlmZmljdWx0LgorUHJvYmFibHkgeW91IHNob3VsZCAic2h1dCBkb3duIiB5b3VyIG1hY2hpbmUgdG8gTVMtRE9TIG1vZGUgYmVmb3JlIHJ1bm5pbmcgaXQuCisKK1NvbWUgbWFjaGluZXMgaGF2ZSBhIEJJT1MgdXRpbGl0eSBmb3Igc2V0dGluZyBQblAgcmVzb3VyY2VzLiBUaGlzIGlzIGEgZ29vZAord2F5IHRvIGNvbmZpZ3VyZSBzb21lIGNhcmRzLiBJbiB0aGlzIGNhc2UgeW91IGRvbid0IG5lZWQgdG8gYm9vdCBET1MvV2luOTUKK2JlZm9yZSBzdGFydGluZyBMaW51eC4KKworQW5vdGhlciB3YXkgdG8gaW5pdGlhbGl6ZSBQblAgY2FyZHMgd2l0aG91dCBET1MvV2luOTUgaXMgYSBMaW51eCBiYXNlZAorUG5QIGlzb2xhdGlvbiB0b29sLiBXaGVuIHdyaXRpbmcgdGhpcyB0aGVyZSBpcyBhIHByZSBhbHBoYSB0ZXN0IHZlcnNpb24KK29mIHN1Y2ggYSB0b29sIGF2YWlsYWJsZSBmcm9tIGZ0cDovL2Z0cC5kZW1vbi5jby51ay9wdWIvdW5peC9saW51eC91dGlscy4gVGhlCitmaWxlIGlzIGNhbGxlZCBpc2FwbnB0b29scy0qLiBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgdG9vbCBpcyBqdXN0IGEgdGVtcG9yYXJ5Citzb2x1dGlvbiB3aGljaCBtYXkgYmUgaW5jb21wYXRpYmxlIHdpdGggZnV0dXJlIGtlcm5lbCB2ZXJzaW9ucyBoYXZpbmcgcHJvcGVyCitzdXBwb3J0IGZvciBQblAgY2FyZHMuIFRoZXJlIGFyZSBidWdzIGluIHNldHRpbmcgRE1BIGNoYW5uZWxzIGluIGVhcmxpZXIKK3ZlcnNpb25zIG9mIGlzYXBucHRvb2xzIHNvIGF0IGxlYXN0IHZlcnNpb24gMS42IGlzIHJlcXVpcmVkIHdpdGggc291bmQgY2FyZHMuCisKK1lldCBhbm90aGVyIHdheSB0byB1c2UgUG5QIGNhcmRzIGlzIHRvIHVzZSAoY29tbWVyY2lhbCkgT1NTL0xpbnV4IGRyaXZlcnMuICBTZWUKK2h0dHA6Ly93d3cub3BlbnNvdW5kLmNvbS9saW51eC5odG1sIGZvciBtb3JlIGluZm8uIFRoaXMgaXMgcHJvYmFibHkgdGhlIHdheSB5b3UKK3Nob3VsZCBkbyBpdCBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzcGVuZCB0aW1lIHJlY29tcGlsaW5nIHRoZSBrZXJuZWwgYW5kIAorcmVxdWlyZWQgdG9vbHMuCisKKworUmVhZCB0aGlzIGJlZm9yZSB0cnlpbmcgdG8gY29uZmlndXJlIHRoZSBkcml2ZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZXJlIGFyZSBjdXJyZW50bHkgbWFueSBjYXJkcyB0aGF0IHdvcmsgd2l0aCB0aGlzIGRyaXZlci4gU29tZSBvZiB0aGUgY2FyZHMKK2hhdmUgbmF0aXZlIHN1cHBvcnQgd2hpbGUgb3RoZXJzIHdvcmsgc2luY2UgdGhleSBlbXVsYXRlIHNvbWUgb3RoZXIKK2NhcmQgKHVzdWFsbHkgU0IsIE1TUy9XU1MgYW5kL29yIE1QVTQwMSkuIFRoZSBmb2xsb3dpbmcgY2FyZHMgaGF2ZSBuYXRpdmUKK3N1cHBvcnQgaW4gdGhlIGRyaXZlci4gRGV0YWlsZWQgaW5zdHJ1Y3Rpb25zIGZvciBjb25maWd1cmluZyB0aGVzZSBjYXJkcword2lsbCBiZSBnaXZlbiBsYXRlciBpbiB0aGlzIGRvY3VtZW50LgorCitQcm8gQXVkaW8gU3BlY3RydW0gMTYgKFBBUzE2KSBhbmQgY29tcGF0aWJsZXM6CisJUHJvIEF1ZGlvIFNwZWN0cnVtIDE2CisJUHJvIEF1ZGlvIFN0dWRpbyAxNgorCUxvZ2l0ZWNoIFNvdW5kIE1hbiAxNgorCU5PVEUhIFRoZSBvcmlnaW5hbCBQcm8gQXVkaW8gU3BlY3RydW0gYXMgd2VsbCBhcyB0aGUgUEFTKyBhcmUgbm90CisJICAgICAgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZCBieSB0aGUgZHJpdmVyLgorCitNZWRpYSBWaXNpb24gSmF6ejE2IGJhc2VkIGNhcmRzCisJUHJvIFNvbmljIDE2CisJTG9naXRlY2ggU291bmRNYW4gV2F2ZQorCShPdGhlciBKYXp6IGJhc2VkIGNhcmRzIHNob3VsZCB3b3JrIGJ1dCBJIGRvbid0IGhhdmUgYW55IHJlcG9ydHMKKwlhYm91dCB0aGVtKS4KKworU291bmQgQmxhc3RlcnMKKwlTQiAxLjAgdG8gMi4wCisJU0IgUHJvCisJU0IgMTYKKwlTQjMyLzY0L0FXRQorCQlDb25maWd1cmUgU0IzMi82NC9BV0UganVzdCBsaWtlIFNCMTYuIFNlZSBsb3dsZXZlbC9SRUFETUUuYXdlCisJCWZvciBpbmZvcm1hdGlvbiBhYm91dCB1c2luZyB0aGUgd2F2ZSB0YWJsZSBzeW50aC4KKwkgICAgICAgIE5PVEUhIEFXRTYzL0dvbGQgYW5kIDE2LzMyL0FXRSAiUG5QIiBjYXJkcyBuZWVkIHRvIGJlIGFjdGl2YXRlZAorCQkgICAgICB1c2luZyBpc2FwbnB0b29scyBiZWZvcmUgdGhleSB3b3JrIHdpdGggT1NTL0ZyZWUuCisJU0IxNiBjb21wYXRpYmxlIGNhcmRzIGJ5IG90aGVyIG1hbnVmYWN0dXJlcnMgdGhhbiBDcmVhdGl2ZS4KKwkJWW91IGhhdmUgYmVlbiBmb29sZWQgc2luY2UgdGhlcmUgYXJlIF9ub18gU0IxNiBjb21wYXRpYmxlCisJCWNhcmRzIG9uIHRoZSBtYXJrZXQgKGFzIG9mIE1heSAxOTk3KS4gSXQncyBsaWtlbHkgdGhhdCB5b3VyIGNhcmQKKwkJaXMgY29tcGF0aWJsZSBqdXN0IHdpdGggU0IgUHJvIGJ1dCB0aGVyZSBpcyBhbHNvIGEgbm9uLVNCLQorCQljb21wYXRpYmxlIDE2IGJpdCBtb2RlLiBVc3VhbGx5IGl0J3MgTVNTL1dTUyBidXQgaXQgY291bGQgYWxzbworCQliZSBhIHByb3ByaWV0YXJ5IG9uZSBsaWtlIE1WIEphenoxNiBvciBFU1MgRVM2ODguIE9QVGkKKwkJTUFEMTYgY2hpcHMgYXJlIHZlcnkgY29tbW9uIGluIHNvIGNhbGxlZCAiU0IgMTYgYml0IGNhcmRzIgorCQkodHJ5IHdpdGggdGhlIE1BRDE2IGRyaXZlcikuCisKKwk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJIlN1cHBvc2VkIHRvIGJlIFNCIGNvbXBhdGlibGUiIGNhcmRzLgorCQlGb3JnZXQgdGhlIFNCIGNvbXBhdGliaWxpdHkgYW5kIGNoZWNrIGZvciBvdGhlciBhbHRlcm5hdGl2ZXMKKwkJZmlyc3QuIFRoZSBvbmx5IGNhcmRzIHRoYXQgd29yayB3aXRoIHRoZSBTQiBkcml2ZXIgaW4KKwkJTGludXggaGF2ZSBiZWVuIG1hZGUgYnkgQ3JlYXRpdmUgVGVjaG5vbG9neSAodGhlcmUgaXMgYXQgbGVhc3QKKwkJb25lIGNoaXAgb24gdGhlIGNhcmQgd2l0aCAiQ1JFQVRJVkUiIHByaW50ZWQgb24gaXQpLiBUaGUKKwkJb25seSBvdGhlciBTQiBjb21wYXRpYmxlIGNoaXBzIGFyZSBFU1MgYW5kIEphenoxNiBjaGlwcworCQkobWF5YmUgQUxTeHh4IGNoaXBzIHRvbyBidXQgdGhleSBwcm9iYWJseSBkb24ndCB3b3JrKS4KKwkJTW9zdCBvdGhlciAiMTYgYml0IFNCIGNvbXBhdGlibGUiIGNhcmRzIHN1Y2ggYXMgIk9QVGkvTUFEMTYiIG9yCisJCSJDcnlzdGFsIiBhcmUgX05PVF8gU0IgY29tcGF0aWJsZSBpbiBMaW51eC4KKworCQlQcmFjdGljYWxseSBhbGwgc291bmQgY2FyZHMgaGF2ZSBzb21lIGtpbmQgb2YgU0IgZW11bGF0aW9uIG1vZGUKKwkJaW4gYWRkaXRpb24gdG8gdGhlaXIgbmF0aXZlICgxNiBiaXQpIG1vZGUuIEluIG1vc3QgY2FzZXMgdGhpcworCQkoOCBiaXQgb25seSkgU0IgY29tcGF0aWJsZSBtb2RlIGRvZXNuJ3Qgd29yayB3aXRoIExpbnV4LiBJZgorCQl5b3UgZ2V0IGl0IHdvcmtpbmcgaXQgbWF5IGNhdXNlIHByb2JsZW1zIHdpdGggZ2FtZXMgYW5kCisJCWFwcGxpY2F0aW9ucyB3aGljaCByZXF1aXJlIDE2IGJpdCBhdWRpby4gU29tZSAxNiBiaXQgb25seQorCQlhcHBsaWNhdGlvbnMgZG9uJ3QgY2hlY2sgaWYgdGhlIGNhcmQgYWN0dWFsbHkgc3VwcG9ydHMgMTYgYml0cy4KKwkJVGhleSBqdXN0IGR1bXAgMTYgYml0IGRhdGEgdG8gYSA4IGJpdCBjYXJkIHdoaWNoIHByb2R1Y2VzIGp1c3QKKwkJbm9pc2UuCisKKwkJSW4gbW9zdCBjYXNlcyB0aGUgMTYgYml0IG5hdGl2ZSBtb2RlIGlzIHN1cHBvcnRlZCBieSBMaW51eC4KKwkJVXNlIHRoZSBTQiBtb2RlIHdpdGggImNsb25lcyIgb25seSBpZiB5b3UgZG9uJ3QgZmluZCBhbnl0aGluZworCQliZXR0ZXIgZnJvbSB0aGUgcmVzdCBvZiB0aGlzIGRvYy4KKwk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0dyYXZpcyBVbHRyYXNvdW5kIChHVVMpCisJR1VTCisJR1VTICsgdGhlIDE2IGJpdCBvcHRpb24KKwlHVVMgTUFYCisJR1VTIEFDRSAoTm8gTUlESSBwb3J0IGFuZCBhdWRpbyByZWNvcmRpbmcpCisJR1VTIFBuUCAod2l0aCBSQU0pCisKK01QVS00MDEJYW5kIGNvbXBhdGlibGVzCisJVGhlIGRyaXZlciB3b3JrcyBib3RoIHdpdGggdGhlIGZ1bGwgKGludGVsbGlnZW50IG1vZGUpIE1QVS00MDEKKwljYXJkcyAoc3VjaCBhcyBNUFUgSVBDLVQgYW5kIE1RWC0zMk0pIGFuZCB3aXRoIHRoZSBVQVJUIG9ubHkKKwlkdW1iIE1JREkgcG9ydHMuIE1QVS00MDEgaXMgY3VycmVudGx5IHRoZSBtb3N0IGNvbW1vbiBNSURJCisJaW50ZXJmYWNlLiBNb3N0IHNvdW5kIGNhcmRzIGFyZSBjb21wYXRpYmxlIHdpdGggaXQuIEhvd2V2ZXIsCisJZG9uJ3QgZW5hYmxlIE1QVTQwMSBtb2RlIGJsaW5kbHkuIE1hbnkgY2FyZHMgd2l0aCBuYXRpdmUgc3VwcG9ydAorCWluIHRoZSBkcml2ZXIgaGF2ZSB0aGVpciBvd24gTVBVNDAxIGRyaXZlci4gRW5hYmxpbmcgdGhlIHN0YW5kYXJkIG9uZQorCXdpbGwgY2F1c2UgYSBjb25mbGljdCB3aXRoIHRoZXNlIGNhcmRzLiBTbyBjaGVjayBpZiB5b3VyIGNhcmQgaXMKKwlpbiB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgY2FyZHMgYmVmb3JlIGVuYWJsaW5nIE1QVTQwMS4KKworV2luZG93cyBTb3VuZCBTeXN0ZW0gKE1TUy9XU1MpCisJRXZlbiB3aGVuIE1pY3Jvc29mdCBoYXMgZGlzY29udGludWVkIHRoZWlyIG93biBTb3VuZCBTeXN0ZW0gY2FyZCAKKwl0aGV5IG1hbmFnZWQgdG8gbWFrZSBpdCBhIHN0YW5kYXJkLiBNU1MgY29tcGF0aWJsZSBjYXJkcyBhcmUgYmFzZWQgb24gCisJYSBjb2RlYyBjaGlwIHdoaWNoIGlzIGVhc2lseSBhdmFpbGFibGUgZnJvbSBhdCBsZWFzdCB0d28gbWFudWZhY3R1cmVycworCShBRDE4NDggYnkgQW5hbG9nIERldmljZXMgYW5kIENTNDIzMS9DUzQyNDggYnkgQ3J5c3RhbCBTZW1pY29uZHVjdG9yKS4KKwlDdXJyZW50bHkgbW9zdCBzb3VuZCBjYXJkcyBhcmUgYmFzZWQgb24gb25lIG9mIHRoZSBNU1MgY29tcGF0aWJsZSBjb2RlYworCWNoaXBzLiBUaGUgQ1M0MjMxIGlzIHVzZWQgaW4gdGhlIGhpZ2ggcXVhbGl0eSBjYXJkcyBzdWNoIGFzIEdVUyBNQVgsCisJTWVkaWFUcml4IEF1ZGlvVHJpeCBQcm8gYW5kIFRCIFRyb3BleiAoR1VTIE1BWCBpcyBub3QgTVNTIGNvbXBhdGlibGUpLiAKKworCUhhdmluZyBhIEFEMTg0OCwgQ1M0MjQ4IG9yIENTNDIzMSBjb2RlYyBjaGlwIG9uIHRoZSBjYXJkIGlzIGEgZ29vZAorCXNpZ24uIEV2ZW4gaWYgdGhlIGNhcmQgaXMgbm90IE1TUyBjb21wYXRpYmxlLCBpdCBjb3VsZCBiZSBlYXN5IHRvIHdyaXRlCisJc3VwcG9ydCBmb3IgaXQuIE5vdGUgYWxzbyB0aGF0IG1vc3QgTVNTIGNvbXBhdGlibGUgY2FyZHMKKwlyZXF1aXJlIHNwZWNpYWwgYm9vdCB0aW1lIGluaXRpYWxpemF0aW9uIHdoaWNoIG1heSBub3QgYmUgcHJlc2VudAorCWluIHRoZSBkcml2ZXIuIEFsc28sIHNvbWUgTVNTIGNvbXBhdGlibGUgY2FyZHMgaGF2ZSBuYXRpdmUgc3VwcG9ydC4KKwlFbmFibGluZyB0aGUgTVNTIHN1cHBvcnQgd2l0aCB0aGVzZSBjYXJkcyBpcyBsaWtlbHkgdG8KKwljYXVzZSBhIGNvbmZsaWN0LiBTbyBjaGVjayBpZiB5b3VyIGNhcmQgaXMgbGlzdGVkIGluIHRoaXMgZmlsZSBiZWZvcmUKKwllbmFibGluZyB0aGUgTVNTIHN1cHBvcnQuCisKK1lhbWFoYSBGTSBzeW50aGVzaXplcnMgKE9QTDIsIE9QTDMgKG5vdCBPUEwzLVNBKSBhbmQgT1BMNCkKKwlNb3N0IHNvdW5kIGNhcmRzIGhhdmUgYSBGTSBzeW50aGVzaXplciBjaGlwLiBUaGUgT1BMMiBpcyBhIDIKKwlvcGVyYXRvciBjaGlwIHVzZWQgaW4gdGhlIG9yaWdpbmFsIEFkTGliIGNhcmQuIEN1cnJlbnRseSBpdCdzIHVzZWQKKwlvbmx5IGluIHRoZSBjaGVhcGVzdCAoOCBiaXQgbW9ubykgY2FyZHMuIFRoZSBPUEwzIGlzIGEgNCBvcGVyYXRvciAKKwlGTSBjaGlwIHdoaWNoIHByb3ZpZGVzIGJldHRlciBzb3VuZCBxdWFsaXR5IGFuZC9vciBtb3JlIGF2YWlsYWJsZSAKKwl2b2ljZXMgdGhhbiB0aGUgT1BMMi4gVGhlIE9QTDQgaXMgYSBuZXcgY2hpcCB0aGF0IGhhcyBhbiBPUEwzIGFuZAorCWEgd2F2ZSB0YWJsZSBzeW50aGVzaXplciBwYWNrZWQgb250byB0aGUgc2FtZSBjaGlwLiBUaGUgZHJpdmVyIHN1cHBvcnRzCisJanVzdCB0aGUgT1BMMyBtb2RlIGRpcmVjdGx5LiBNb3N0IGNhcmRzIHdpdGggYW4gT1BMNCAobGlrZQorCVNNIFdhdmUgYW5kIEF1ZGlvVHJpeCBQcm8pIHN1cHBvcnQgdGhlIE9QTDQgbW9kZSB1c2luZyBNUFU0MDEKKwllbXVsYXRpb24uIFdyaXRpbmcgYSBuYXRpdmUgT1BMNCBzdXBwb3J0IGlzIGRpZmZpY3VsdAorCXNpbmNlIFlhbWFoYSBkb2Vzbid0IGdpdmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlaXIgc2FtcGxlIFJPTSBjaGlwLgorCisJRW5hYmxlIHRoZSBnZW5lcmljIE9QTDIvT1BMMyBGTSBzeW50aGVzaXplciBzdXBwb3J0IGlmIHlvdXIKKwljYXJkIGhhcyBhIEZNIGNoaXAgbWFkZSBieSBZYW1haGEuIERvbid0IGVuYWJsZSBpdCBpZiB5b3VyIGNhcmQKKwloYXMgYSBzb2Z0d2FyZSAoVFJTKSBiYXNlZCBGTSBlbXVsYXRvci4KKworCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlOT1RFISBPUEwzLVNBIGlzIGRpZmZlcmVudCBjaGlwIHRoYW4gdGhlIG9yZGluYXJ5IE9QTDMuIEluIGFkZGl0aW9uCisJdG8gdGhlIEZNIHN5bnRoIHRoaXMgY2hpcCBoYXMgYWxzbyBkaWdpdGFsIGF1ZGlvIChXU1MpIGFuZAorCU1JREkgKE1QVTQwMSkgY2FwYWJpbGl0aWVzLiBTdXBwb3J0IGZvciBPUEwzLVNBIGlzIGRlc2NyaWJlZCBiZWxvdy4KKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1lhbWFoYSBPUEwzLVNBMQorCisJWWFtYWhhIE9QTDMtU0ExIChZTUY3MDEpIGlzIGFuIGF1ZGlvIGNvbnRyb2xsZXIgY2hpcCB1c2VkIG9uIHNvbWUKKwkoSW50ZWwpIG1vdGhlcmJvYXJkcyBhbmQgb24gY2hlYXAgc291bmQgY2FyZHMuIEl0IHNob3VsZCBub3QgYmUKKwljb25mdXNlZCB3aXRoIHRoZSBvcmlnaW5hbCBPUEwzIGNoaXAgKFlNRjI3OCkgd2hpY2ggaXMgZW50aXJlbHkKKyAgICAgICAgZGlmZmVyZW50IGNoaXAuIE9QTDMtU0ExIGhhcyBzdXBwb3J0IGZvciBNU1MsIE1QVTQwMSBhbmQgU0IgUHJvCisJKG5vdCB1c2VkIGluIE9TUy9GcmVlKSBpbiBhZGRpdGlvbiB0byB0aGUgT1BMMyBGTSBzeW50aC4KKworCVRoZXJlIGFyZSBhbHNvIGNoaXBzIGNhbGxlZCBPUEwzLVNBMiwgT1BMMy1TQTMsIC4uLiwgT1BMM1NBLU4uIFRoZXkKKwlhcmUgUG5QIGNoaXBzIGFuZCB3aWxsIG5vdCB3b3JrIHdpdGggdGhlIE9QTDMtU0ExIGRyaXZlci4gWW91IHNob3VsZCAKKwl1c2UgdGhlIHN0YW5kYXJkIE1TUywgTVBVNDAxIGFuZCBPUEwzIG9wdGlvbnMgd2l0aCB0aGVzZSBjaGlwcyBhbmQgdG8KKwlhY3RpdmF0ZSB0aGUgY2FyZCB1c2luZyBpc2FwbnB0b29scy4KKworNEZyb250IFRlY2hub2xvZ2llcyBTb2Z0T1NTCisKKwlTb2Z0T1NTIGlzIGEgc29mdHdhcmUgYmFzZWQgd2F2ZSB0YWJsZSBlbXVsYXRpb24gd2hpY2ggd29ya3Mgd2l0aAorCWFueSAxNiBiaXQgc3RlcmVvIHNvdW5kIGNhcmQuIER1ZSB0byBpdHMgbmF0dXJlIGEgZmFzdCBDUFUgaXMKKwlyZXF1aXJlZCAoUDEzMyBpcyBtaW5pbXVtKS4gQWx0aG91Z2ggU29mdE9TUyBkb2VzIF9ub3RfIHVzZSBNTVgKKwlpbnN0cnVjdGlvbnMgaXQgaGFzIHByb3ZlbiBvdXQgdGhhdCByZWNlbnQgcHJvY2Vzc29ycyAod2hpY2ggYXBwZWFyCisJdG8gaGF2ZSBNTVgpIHBlcmZvcm0gc2lnbmlmaWNhbnRseSBiZXR0ZXIgd2l0aCBTb2Z0T1NTIHRoYW4gZWFybGllcgorCW9uZXMuIEZvciBleGFtcGxlIGEgUDE2Nk1NWCBiZWF0cyBhIFBQcm8yMDAuIFNvZnRPU1Mgc2hvdWxkIG5vdCBiZSB1c2VkCisJb24gNDg2IG9yIDM4NiBtYWNoaW5lcy4KKworCVRoZSBhbW91bnQgb2YgQ1BVIGxvYWQgY2F1c2VkIGJ5IFNvZnRPU1MgY2FuIGJlIGNvbnRyb2xsZWQgYnkKKwlzZWxlY3RpbmcgdGhlIENPTkZJR19TT0ZUT1NTX1JBVEUgYW5kIENPTkZJR19TT0ZUT1NTX1ZPSUNFUworCXBhcmFtZXRlcnMgcHJvcGVybHkgKHRoZXkgd2lsbCBiZSBwcm9tcHRlZCBieSBtYWtlIGNvbmZpZykuIEl0J3MKKwlyZWNvbW1lbmRlZCB0byBzZXQgQ09ORklHX1NPRlRPU1NfVk9JQ0VTIHRvIDMyLiBJZiB5b3UgaGF2ZSBhCisJUDE2Nk1NWCBvciBmYXN0ZXIgKFBQcm8yMDAgaXMgbm90IGZhc3RlcikgeW91IGNhbiBzZXQKKwlDT05GSUdfU09GVE9TU19SQVRFIHRvIDQ0MTAwIChrSHopLiBIb3dldmVyIHdpdGggc2xvd2VyIHN5c3RlbXMgaXQKKwlyZWNvbW1lbmRlZCB0byB1c2Ugc2FtcGxpbmcgcmF0ZXMgYXJvdW5kIDIyMDUwIG9yIGV2ZW4gMTYwMDAga0h6LgorCVNlbGVjdGluZyB0b28gaGlnaCB2YWx1ZXMgZm9yIHRoZXNlIHBhcmFtZXRlcnMgbWF5IGhhbmcgeW91cgorCXN5c3RlbSB3aGVuIHBsYXlpbmcgTUlESSBmaWxlcyB3aXRoIGhpZ2h0IGRlZ3JlZSBvZiBwb2x5cGhvbnkKKwkobnVtYmVyIG9mIGNvbmN1cnJlbnRseSBwbGF5aW5nIG5vdGVzKS4gSXQncyBhbHNvIHBvc3NpYmxlIHRvCisJZGVjcmVhc2UgQ09ORklHX1NPRlRPU1NfVk9JQ0VTLiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHVzZQorCWhpZ2hlciBzYW1wbGluZyByYXRlcy4gSG93ZXZlciB1c2luZyBmZXdlciB2b2ljZXMgZGVjcmVhc2VzCisJcGxheWJhY2sgcXVhbGl0eSBtb3JlIHRoYW4gZGVjcmVhc2luZyB0aGUgc2FtcGxpbmcgcmF0ZS4KKworCVNvZnRPU1Mga2VlcHMgdGhlIHNhbXBsZXMgbG9hZGVkIG9uIHRoZSBzeXN0ZW0ncyBSQU0gc28gbXVjaCBSQU0gaXMKKwlyZXF1aXJlZC4gU29mdE9TUyBzaG91bGQgbmV2ZXIgYmUgdXNlZCBvbiBtYWNoaW5lcyB3aXRoIGxlc3MgdGhhbiAxNiBNQgorCW9mIFJBTSBzaW5jZSB0aGlzIGlzIHBvdGVudGlhbGx5IGRhbmdlcm91cyAoeW91IG1heSBhY2NpZGVudGFsbHkgcnVuIG91dAorCW9mIG1lbW9yeSB3aGljaCBwcm9iYWJseSBjcmFzaGVzIHRoZSBtYWNoaW5lKS4gCisKKwlTb2Z0T1NTIGltcGxlbWVudHMgdGhlIHdhdmUgdGFibGUgQVBJIG9yaWdpbmFsbHkgZGVzaWduZWQgZm9yIEdVUy4gRm9yCisJdGhpcyByZWFzb24gYWxsIGFwcGxpY2F0aW9ucyBkZXNpZ25lZCBmb3IgR1VTIHNob3VsZCB3b3JrIChhdCBsZWFzdAorCWFmdGVyIG1pbm9yIG1vZGlmaWNhdGlvbnMpLiBGb3IgZXhhbXBsZSBnbW9kL3hnbW9kIGFuZCBwbGF5bWlkaSAtZyBhcmUKKwlrbm93biB0byB3b3JrLgorCisJVG8gd29yayBTb2Z0T1NTIHdpbGwgcmVxdWlyZSBHVVMgY29tcGF0aWJsZQorCXBhdGNoIGZpbGVzIHRvIGJlIGluc3RhbGxlZCBvbiB0aGUgc3lzdGVtIChpbiAvZG9zL3VsdHJhc25kL21pZGkpLiBZb3UKKwljYW4gdXNlIHRoZSBwdWJsaWMgZG9tYWluIE1JRElBIHBhdGNoc2V0IGF2YWlsYWJsZSBmcm9tIHNldmVyYWwgZnRwCisJc2l0ZXMuCisKKyAgICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisJSU1QT1JUQU5UIE5PVElDRSEgVGhlIG9yaWdpbmFsIHBhdGNoIHNldCBkaXN0cmlidXRlZCB3aXRoIHRoZSBHcmF2aXMgCisJVWx0cmFzb3VuZCBjYXJkIGlzIG5vdCBpbiBwdWJsaWMgZG9tYWluIChldmVuIHRob3VnaCBpdCdzIGF2YWlsYWJsZSBmcm9tCisJc29tZSBGVFAgc2l0ZXMpLiBZb3Ugc2hvdWxkIGNvbnRhY3QgVm9pY2UgQ3J5c3RhbCAod3d3LnZvaWNlY3J5c3RhbC5jb20pCisJaWYgeW91IGxpa2UgdG8gdXNlIHRoZXNlIHBhdGNoZXMgd2l0aCBTb2Z0T1NTIGluY2x1ZGVkIGluIE9TUy9GcmVlLgorICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworUFNTIGJhc2VkIGNhcmRzIChBRDE4NDggKyBBRFNQLTIxMTUgKyBFY2hvIEVTQzYxNCBBU0lDKQorCUFuYWxvZyBEZXZpY2VzIGFuZCBFY2hvIFNwZWVjaCBoYXZlIHRvZ2V0aGVyIGRlZmluZWQgYSBzb3VuZCBjYXJkCisJYXJjaGl0ZWN0dXJlIGJhc2VkIG9uIHRoZSBhYm92ZSBjaGlwcy4gVGhlIERTUCBjaGlwIGlzIHVzZWQKKwlmb3IgZW11bGF0aW9uIG9mIFNCIFBybywgRk0gYW5kIEdlbmVyYWwgTUlESS9NVDMyLgorCisJVGhlcmUgYXJlIHNldmVyYWwgY2FyZHMgYmFzZWQgb24gdGhpcyBhcmNoaXRlY3R1cmUuIFRoZSBtb3N0IGtub3duCisJb25lcyBhcmUgT3JjaGlkIFNXMzIgYW5kIENhcmRpbmFsIERTUDE2LiAKKworCVRoZSBkcml2ZXIgc3VwcG9ydHMgZG93bmxvYWRpbmcgRFNQIGFsZ29yaXRobXMgdG8gdGhlc2UgY2FyZHMuCisKKwlOT1RFISBZb3Ugd2lsbCBoYXZlIHRvIHVzZSB0aGUgIm9sZCIgY29uZmlnIHNjcmlwdCB3aGVuIGNvbmZpZ3VyaW5nCisJUFNTIGNhcmRzLgorCitNZWRpYVRyaXggQXVkaW9Ucml4IFBybworCVRoZSBBVFAgY2FyZCBpcyBidWlsdCBhcm91bmQgYSBDUzQyMzEgY29kZWMgYW5kIGFuIE9QTDQgc3ludGhlc2l6ZXIKKwljaGlwcy4gVGhlIE9QTDQgbW9kZSBpcyBzdXBwb3J0ZWQgYnkgYSBtaWNyb2NvbnRyb2xsZXIgcnVubmluZyBhCisJR2VuZXJhbCBNSURJIGVtdWxhdG9yLiBUaGVyZSBpcyBhbHNvIGEgU0IgMS41IGNvbXBhdGlibGUgcGxheWJhY2sgbW9kZS4KKworRW5zb25pcSBTb3VuZFNjYXBlIGFuZCBjb21wYXRpYmxlcworCUVuc29uaXEgaGFzIGRlc2lnbmVkIGEgc291bmQgY2FyZCBhcmNoaXRlY3R1cmUgYmFzZWQgb24gdGhlCisJT1RUTyBzeW50aGVzaXplciBjaGlwIHVzZWQgaW4gdGhlaXIgcHJvZmVzc2lvbmFsIE1JREkgc3ludGhlc2l6ZXJzLgorCVNldmVyYWwgY29tcGFuaWVzIChpbmNsdWRpbmcgRW5zb25pcSwgUmV2ZWFsIGFuZCBTcGVhKSBhcmUgc2VsbGluZworCWNhcmRzIGJhc2VkIG9uIHRoaXMgYXJjaGl0ZWN0dXJlLgorCisJTk9URSEgVGhlIFNvdW5kU2NhcGUgUG5QIGlzIG5vdCBzdXBwb3J0ZWQgYnkgT1NTL0ZyZWUuIEVuc29uaXEgVklWTyBhbmQKKwlWSVZPOTAgY2FyZHMgYXJlIG5vdCBjb21wYXRpYmxlIHdpdGggU291bmRzY2FwZXMgc28gdGhlIFNvdW5kc2NhcGUKKyAgICAgICAgZHJpdmVyIHdpbGwgbm90IHdvcmsgd2l0aCB0aGVtLiBZb3UgbWF5IHdhbnQgdG8gdXNlIE9TUy9MaW51eCB3aXRoIHRoZXNlCisgICAgICAgIGNhcmRzLgorCitPUFRpIE1BRDE2IGFuZCBNb3phcnQgYmFzZWQgY2FyZHMKKwlUaGUgTW96YXJ0IChPQUsgT1RJLTYwMSksIE1BRDE2IChPUFRpIDgyQzkyOCksIE1BRDE2IFBybyAoT1BUaSA4MkM5MjkpLAorCU9QVGkgODJDOTI0LzgyQzkyNSAoaW4gX25vbl8gUG5QIG1vZGUpIGFuZCBPUFRpIDgyQzkzMCBpbnRlcmZhY2UKKwljaGlwcyBhcmUgdXNlZCBpbiBtYW55IGRpZmZlcmVudCBzb3VuZCBjYXJkcywgaW5jbHVkaW5nIHNvbWUKKwljYXJkcyBieSBSZXZlYWwgbWlybyBhbmQgVHVydGxlIEJlYWNoIChUcm9wZXopLiBUaGUgcHVycG9zZSBvZiB0aGVzZQorCWNoaXBzIGlzIHRvIGNvbm5lY3Qgb3RoZXIgYXVkaW8gY29tcG9uZW50cyB0byB0aGUgUEMgYnVzLiBUaGUKKwlpbnRlcmZhY2UgY2hpcCBwZXJmb3JtcyBhZGRyZXNzIGRlY29kaW5nIGZvciB0aGUgb3RoZXIgY2hpcHMuCisJTk9URSEgVHJvcGV6IFBsdXMgaXMgbm90IE1BRDE2IGJ1dCBDUzQyMzIgYmFzZWQuCisJTk9URSEgTUFEMTYgUG5QIGNhcmRzICg4MkM5MjQsIDgyQzkyNSwgODJDOTMxKSBhcmUgbm90IE1BRDE2IGNvbXBhdGlibGUKKwlpbiB0aGUgUG5QIG1vZGUuIFlvdSB3aWxsIGhhdmUgdG8gdXNlIHRoZW0gaW4gTVNTIG1vZGUgYWZ0ZXIgaGF2aW5nCisJaW5pdGlhbGl6ZWQgdGhlbSB1c2luZyBpc2FwbnB0b29scyBvciBET1MuIDgyQzkzMSBwcm9iYWJseSByZXF1aXJlcworCWluaXRpYWxpemF0aW9uIHVzaW5nIERPUy9XaW5kb3dzIChydW5uaW5nIGlzYXBucHRvb2xzIGlzIG5vdCBlbm91Z2gpLgorCUl0J3MgcG9zc2libGUgdG8gdXNlIDgyQzkzMSB3aXRoIE9TUy9GcmVlIGJ5IGp1bXBlcmluZyBpdCB0byBub24tUG5QCisJbW9kZSAocHJvdmlkZWQgdGhhdCB0aGUgY2FyZCBoYXMgYSBqdW1wZXIgZm9yIHRoaXMpLiBJbiBub24tUG5QIG1vZGUKKwk4MkM5MzEgaXMgY29tcGF0aWJsZSB3aXRoIDgyQzkzMCBhbmQgc2hvdWxkIHdvcmsgd2l0aCB0aGUgTUFEMTYgZHJpdmVyCisJKHdpdGhvdXQgbmVlZCB0byB1c2UgaXNhcG5wdG9vbHMgb3IgRE9TIHRvIGluaXRpYWxpemUgaXQpLiBBbGwgT1BUaQorCWNoaXBzIGFyZSBzdXBwb3J0ZWQgYnkgT1NTL0xpbnV4IChib3RoIGluIFBuUCBhbmQgbm9uLVBuUCBtb2RlcykuCisKK0F1ZGlvIEV4Y2VsIERTUDE2IAorCVN1cHBvcnQgZm9yIHRoaXMgY2FyZCB3YXMgd3JpdHRlbiBieSBSaWNjYXJkbyBGYWNjZXR0aQorCShyaWNjYXJkb0BjZGM4ZzUuY2RjLnBvbGltaS5pdCkuIFRoZSBBRURTUDE2IGRyaXZlciBpbmNsdWRlZCBpbgorCXRoZSBsb3dsZXZlbC8gZGlyZWN0b3J5LiBUbyB1c2UgaXQgeW91IHNob3VsZCBlbmFibGUgdGhlCisJIkFkZGl0aW9uYWwgbG93IGxldmVsIGRyaXZlcnMiIG9wdGlvbi4KKworQ3J5c3RhbCBDUzQyMzIgYW5kIENTNDIzNiBiYXNlZCBjYXJkcyBzdWNoIGFzIEFjZXJNYWdpYyBTMjMsIFRCIFRyb3BleiBfUGx1c18gYW5kIAorCW1hbnkgUEMgbW90aGVyYm9hcmRzIChDb21wYXEsIEhQLCBJbnRlbCwgLi4uKQorCUNTNDIzMiBpcyBhIFBuUCBtdWx0aW1lZGlhIGNoaXAgd2hpY2ggY29udGFpbnMgYSBDUzMyMzFBIGNvZGVjLAorCVNCIGFuZCBNUFU0MDEgZW11bGF0aW9ucy4gVGhlcmUgaXMgc3VwcG9ydCBmb3IgT1BMMyB0b28uCisJVW5mb3J0dW5hdGVseSB0aGUgTVBVNDAxIG1vZGUgZG9lc24ndCB3b3JrIChJIGRvbid0IGtub3cgaG93IHRvCisJaW5pdGlhbGl6ZSBpdCkuIENTNDIzNiBpcyBhbiBlbmhhbmNlZCAoY29tcGF0aWJsZSkgdmVyc2lvbiBvZiBDUzQyMzIuCisJTk9URSEgRG9uJ3QgZXZlciB0cnkgdG8gdXNlIGlzYXBucHRvb2xzIHdpdGggQ1M0MjMyIHNpbmNlIHRoaXMgd2lsbCBqdXN0CisJZnJlZXplIHlvdXIgbWFjaGluZSAoZHVlIHRvIGNoaXAgYnVncykuIElmIHlvdSBoYXZlIHByb2JsZW1zIGluIGdldHRpbmcKKwlDUzQyMzIgd29ya2luZyB5b3UgY291bGQgdHJ5IGluaXRpYWxpemluZyBpdCB3aXRoIERPUyAoQ1M0MjMyQy5FWEUpIGFuZAorCXRoZW4gYm9vdGluZyBMaW51eCB1c2luZyBsb2FkbGluLiBDUzQyMzJDLkVYRSBsb2FkcyBhIHNlY3JldCBmaXJtd2FyZQorCXBhdGNoIHdoaWNoIGlzIG5vdCBkb2N1bWVudGVkIGJ5IENyeXN0YWwuCisKK1R1cnRsZSBCZWFjaCBNYXVpIGFuZCBUcm9wZXogImNsYXNzaWMiCisJVGhpcyBkcml2ZXIgdmVyc2lvbiBzdXBwb3J0cyBzYW1wbGUsIHBhdGNoIGFuZCBwcm9ncmFtIGxvYWRpbmcgY29tbWFuZHMKKwlkZXNjcmliZWQgaW4gdGhlIE1hdWkvVHJvcGV6IFVzZXIncyBtYW51YWwuIAorCVRoZXJlIGlzIG5vdyBmdWxsIGluaXRpYWxpemF0aW9uIHN1cHBvcnQgdG9vLiBUaGUgYXVkaW8gc2lkZSBvZgorCXRoZSBUcm9wZXogaXMgYmFzZWQgb24gdGhlIE1BRDE2IGNoaXAgKHNlZSBhYm92ZSkuCisJTk9URSEgVHJvcGV6IFBsdXMgaXMgZGlmZmVyZW50IGNhcmQgdGhhbiBUcm9wZXogImNsYXNzaWMiIGFuZCB3aWxsIG5vdAorCXdvcmsgZnVsbHkgaW4gTGludXguIFlvdSBjYW4gZ2V0IGF1ZGlvIGZlYXR1cmVzIHdvcmtpbmcgYnkgY29uZmlndXJpbmcKKwl0aGUgY2FyZCBhcyBhIENTNDIzMiBiYXNlZCBjYXJkIChhYm92ZSkuCisKKworSnVtcGVycyBhbmQgc29mdHdhcmUgY29uZmlndXJhdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitTb21lIG9mIHRoZSBlYXJsaWVzdCBzb3VuZCBjYXJkcyB3ZXJlIGp1bXBlciBjb25maWd1cmFibGUuIFlvdSBoYXZlIHRvCitjb25maWd1cmUgdGhlIGRyaXZlciB1c2UgSS9PLCBJUlEgYW5kIERNQSBzZXR0aW5ncwordGhhdCBtYXRjaCB0aGUganVtcGVycy4gSnVzdCBmZXcgOCBiaXQgY2FyZHMgYXJlIGZ1bGx5IGp1bXBlciAKK2NvbmZpZ3VyYWJsZSAoU0IgMS54LzIueCwgU0IgUHJvIGFuZCBjbG9uZXMpLgorU29tZSBjYXJkcyBtYWRlIGJ5IEF6dGVjaCBoYXZlIGFuIEVFUFJPTSB3aGljaCBjb250YWlucyB0aGUgCitjb25maWcgaW5mby4gVGhlc2UgY2FyZHMgYmVoYXZlIG11Y2ggbGlrZSBoYXJkd2FyZSBqdW1wZXJlZCBjYXJkcy4KKworTW9zdCBjYXJkcyBoYXZlIGp1bXBlciBmb3IgdGhlIGJhc2UgSS9PIGFkZHJlc3MgYnV0IG90aGVyIHBhcmFtZXRlcnMKK2FyZSBzb2Z0d2FyZSBjb25maWd1cmFibGUuIFNvbWV0aW1lcyB0aGVyZSBhcmUgZmV3IG90aGVyIGp1bXBlcnMgdG9vLgorCitMYXRlc3QgY2FyZHMgYXJlIGZ1bGx5IHNvZnR3YXJlIGNvbmZpZ3VyYWJsZSBvciB0aGV5IGFyZSBQblAgSVNBCitjb21wYXRpYmxlLiBUaGVyZSBhcmUgbm8ganVtcGVycyBvbiB0aGUgYm9hcmQuCisKK1RoZSBkcml2ZXIgaGFuZGxlcyBzb2Z0d2FyZSBjb25maWd1cmFibGUgY2FyZHMgYXV0b21hdGljYWxseS4gSnVzdCBjb25maWd1cmUKK3RoZSBkcml2ZXIgdG8gdXNlIEkvTywgSVJRIGFuZCBETUEgc2V0dGluZ3Mgd2hpY2ggYXJlIGtub3duIHRvIHdvcmsuCitZb3UgY291bGQgdXN1YWxseSB1c2UgdGhlIHNhbWUgdmFsdWVzIHRoYW4gd2l0aCBET1MgYW5kL29yIFdpbmRvd3MuCitVc2luZyBkaWZmZXJlbnQgc2V0dGluZ3MgaXMgcG9zc2libGUgYnV0IG5vdCByZWNvbW1lbmRlZCBzaW5jZSBpdCBtYXkgY2F1c2UKK3NvbWUgdHJvdWJsZSAoZm9yIGV4YW1wbGUgd2hlbiB3YXJtIGJvb3RpbmcgZnJvbSBhbiBPUyB0byBhbm90aGVyIG9yCit3aGVuIGluc3RhbGxpbmcgbmV3IGhhcmR3YXJlIHRvIHRoZSBtYWNoaW5lKS4KKworU291bmQgZHJpdmVyIHNldHMgdGhlIHNvZnQgY29uZmlndXJhYmxlIHBhcmFtZXRlcnMgb2YgdGhlIGNhcmQgYXV0b21hdGljYWxseQorZHVyaW5nIGJvb3QuIFVzdWFsbHkgeW91IGRvbid0IG5lZWQgdG8gcnVuIGFueSBleHRyYSBpbml0aWFsaXphdGlvbgorcHJvZ3JhbXMgd2hlbiBib290aW5nIExpbnV4IGJ1dCB0aGVyZSBhcmUgc29tZSBleGNlcHRpb25zLiBTZWUgdGhlCitjYXJkLXNwZWNpZmljIGluc3RydWN0aW9ucyBiZWxvdyBmb3IgbW9yZSBpbmZvLgorCitUaGUgZHJhd2JhY2sgb2Ygc29mdHdhcmUgY29uZmlndXJhdGlvbiBpcyB0aGF0IHRoZSBkcml2ZXIgbmVlZHMgdG8ga25vdworaG93IHRoZSBjYXJkIG11c3QgYmUgaW5pdGlhbGl6ZWQuIEl0IGNhbm5vdCBpbml0aWFsaXplIHVua25vd24gY2FyZHMKK2V2ZW4gaWYgdGhleSBhcmUgb3RoZXJ3aXNlIGNvbXBhdGlibGUgd2l0aCBzb21lIG90aGVyIGNhcmRzIChsaWtlIFNCLAorTVBVNDAxIG9yIFdpbmRvd3MgU291bmQgU3lzdGVtKS4KKworCitXaGF0IGlmIHlvdXIgY2FyZCB3YXMgbm90IGxpc3RlZCBhYm92ZT8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZmlyc3QgdGhpbmcgdG8gZG8gaXMgdG8gbG9vayBhdCB0aGUgbWFqb3IgSUMgY2hpcHMgb24gdGhlIGNhcmQuCitNYW55IG9mIHRoZSBsYXRlc3Qgc291bmQgY2FyZHMgYXJlIGJhc2VkIG9uIHNvbWUgc3RhbmRhcmQgY2hpcHMuIElmIHlvdQorYXJlIGx1Y2t5LCBhbGwgb2YgdGhlbSBjb3VsZCBiZSBzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlci4gVGhlIG1vc3QgY29tbW9uIG9uZXMKK2FyZSB0aGUgT1BUaSBNQUQxNiwgTW96YXJ0LCBTb3VuZFNjYXBlIChFbnNvbmlxKSBhbmQgdGhlIFBTUyBhcmNoaXRlY3R1cmVzCitsaXN0ZWQgYWJvdmUuIEFsc28gbG9vayBhdCB0aGUgZW5kIG9mIHRoaXMgZmlsZSBmb3IgbGlzdCBvZiB1bnN1cHBvcnRlZAorY2FyZHMgYW5kIHRoZSBvbmVzIHdoaWNoIGNvdWxkIGJlIHN1cHBvcnRlZCBsYXRlci4KKworVGhlIGxhc3QgcmVzb3J0IGlzIHRvIHNlbmQgX2V4YWN0XyBuYW1lIGFuZCBtb2RlbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2FyZAordG8gbWUgdG9nZXRoZXIgd2l0aCBhIGxpc3Qgb2YgdGhlIG1ham9yIElDIGNoaXBzIChtYW51ZmFjdHVyZWQsIG1vZGVsKSB0byAKK21lLiBJIGNvdWxkIHRoZW4gdHJ5IHRvIGNoZWNrIGlmIHlvdXIgY2FyZCBsb29rcyBsaWtlIHNvbWV0aGluZyBmYW1pbGlhci4KKworVGhlcmUgYXJlIG1hbnkgbW9yZSBjYXJkcyBpbiB0aGUgd29ybGQgdGhhbiBsaXN0ZWQgYWJvdmUuIFRoZSBmaXJzdCB0aGluZyB0bworZG8gd2l0aCB0aGVzZSBjYXJkcyBpcyB0byBjaGVjayBpZiB0aGV5IGVtdWxhdGUgc29tZSBvdGhlciBjYXJkIG9yIGludGVyZmFjZQorc3VjaCBhcyBTQiwgTVNTIGFuZC9vciBNUFU0MDEuIEluIHRoaXMgY2FzZSB0aGVyZSBpcyBhIGNoYW5jZSB0byBnZXQgdGhlCitjYXJkIHRvIHdvcmsgYnkgYm9vdGluZyBET1MgYmVmb3JlIHN0YXJ0aW5nIExpbnV4IChib290IERPUywgaGl0IGN0cmwtYWx0LWRlbAorYW5kIGJvb3QgTGludXggd2l0aG91dCBoYXJkIHJlc2V0dGluZyB0aGUgbWFjaGluZSkuIEluIHRoaXMgbWV0aG9kIHRoZQorRE9TIGJhc2VkIGRyaXZlciBpbml0aWFsaXplcyB0aGUgaGFyZHdhcmUgdG8gdXNlIGtub3duIEkvTywgSVJRIGFuZCBETUEKK3NldHRpbmdzLiBJZiBzb3VuZCBkcml2ZXIgaXMgY29uZmlndXJlZCB0byB1c2UgdGhlIHNhbWUgc2V0dGluZ3MsIGV2ZXJ5dGhpbmcKK3Nob3VsZCB3b3JrIE9LLgorCisKK0NvbmZpZ3VyaW5nIHNvdW5kIGRyaXZlciAod2l0aCBMaW51eCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHNvdW5kIGRyaXZlciBpcyBjdXJyZW50bHkgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiB0aGUgTGludXgga2VybmVsLiBUaGUgCitmaWxlcyBhcmUgaW4gL3Vzci9zcmMvbGludXgvZHJpdmVycy9zb3VuZC8uIAorCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCUFMV0FZUyBVU0UgVEhFIFNPVU5EIERSSVZFUiBWRVJTSU9OIFdISUNIIElTIERJU1RSSUJVVEVEIFdJVEgJICAgKgorKglUSEUgS0VSTkVMIFNPVVJDRSBQQUNLQUdFIFlPVSBBUkUgVVNJTkcuIFNPTUUgQUxQSEEgQU5EIEJFVEEgVEVTVCAgKgorKglWRVJTSU9OUyBDQU4gQkUgSU5TVEFMTEVEIEZST00gQSBTRVBBUkFURUxZIERJU1RSSUJVVEVEIFBBQ0tBR0UJICAgKgorKglCVVQgQ0hFQ0sgVEhBVCBUSEUgUEFDS0FHRSBJUyBOT1QgTVVDSCBPTERFUiAoT1IgTkVXRVIpIFRIQU4gVEhFICAgKgorKglLRVJORUwgWU9VIEFSRSBVU0lORy4gSVQnUyBQT1NTSUJMRSBUSEFUIFRIRSBLRVJORUwvRFJJVkVSIAkgICAqCisqCUlOVEVSRkFDRSBDSEFOR0VTIEJFVFdFRU4gS0VSTkVMIFJFTEVBU0VTIFdISUNIIE1BWSBDQVVTRSBTT01FCSAgICoKKyoJSU5DT01QQVRJQklMSVRZIFBST0JMRU1TLgkJCQkJICAgKgorKgkJCQkJCQkJCSAgICoKKyoJSU4gQ0FTRSBZT1UgSU5TVEFMTCBBIFNFUEFSQVRFTFkgRElTVFJJQlVURUQgU09VTkQgRFJJVkVSIFZFUlNJT04sICoKKyoJQkUgU1VSRSBUTyBSRU1PVkUgT1IgUkVOQU1FIFRIRSBPTEQgU09VTkQgRFJJVkVSIERJUkVDVE9SWSBCRUZPUkUgICoKKyoJSU5TVEFMTElORyBUSEUgTkVXIE9ORS4gTEVBVklORyBPTEQgRklMRVMgVE8gVEhFIFNPVU5EIERSSVZFUgkgICAqCisqCURJUkVDVE9SWSBfV0lMTF8gQ0FVU0UgUFJPQkxFTVMgV0hFTiBUSEUgRFJJVkVSIElTIFVTRUQgT1IJICAgKgorKglDT01QSUxFRC4JCQkJCQkJICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitUbyBjb25maWd1cmUgdGhlIGRyaXZlciwgcnVuICJtYWtlIGNvbmZpZyIgaW4gdGhlIGtlcm5lbCBzb3VyY2UgZGlyZWN0b3J5CisoL3Vzci9zcmMvbGludXgpLiBBbnN3ZXIgInkiIG9yICJtIiB0byB0aGUgcXVlc3Rpb24gYWJvdXQgU291bmQgY2FyZCBzdXBwb3J0CisoYWZ0ZXIgdGhlIHF1ZXN0aW9ucyBhYm91dCBtb3VzZSwgQ0QtUk9NLCBmdGFwZSwgZXRjLiBzdXBwb3J0KS4gIFF1ZXN0aW9ucworYWJvdXQgb3B0aW9ucyBmb3Igc291bmQgd2lsbCB0aGVuIGJlIGFza2VkLgorCitBZnRlciBjb25maWd1cmluZyB0aGUga2VybmVsIGFuZCBzb3VuZCBkcml2ZXIgYW5kIGNvbXBpbGUgdGhlIGtlcm5lbCAKK2ZvbGxvd2luZyBpbnN0cnVjdGlvbnMgaW4gdGhlIGtlcm5lbCBSRUFETUUuCisKK1RoZSBzb3VuZCBkcml2ZXIgY29uZmlndXJhdGlvbiBkaWFsb2cKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU291bmQgY29uZmlndXJhdGlvbiBzdGFydHMgYnkgbWFraW5nIHNvbWUgeWVzL25vIHF1ZXN0aW9ucy4gQmUgY2FyZWZ1bAord2hlbiBhbnN3ZXJpbmcgdG8gdGhlc2UgcXVlc3Rpb25zIHNpbmNlIGFuc3dlcmluZyB5IHRvIGEgcXVlc3Rpb24gbWF5CitwcmV2ZW50IHNvbWUgbGF0ZXIgb25lcyBmcm9tIGJlaW5nIGFza2VkLiBGb3IgZXhhbXBsZSBkb24ndCBhbnN3ZXIgeSB0bwordGhlIGZpcnN0IHF1ZXN0aW9uIChQQVMxNikgaWYgeW91IGRvbid0IHJlYWxseSBoYXZlIGEgUEFTMTYuIERvbid0IGVuYWJsZQorbW9yZSBjYXJkcyB0aGFuIHlvdSByZWFsbHkgbmVlZCBzaW5jZSB0aGV5IGp1c3QgY29uc3VtZSBtZW1vcnkuIEFsc28KK3NvbWUgZHJpdmVycyAobGlrZSBNUFU0MDEpIG1heSBjb25mbGljdCB3aXRoIHlvdXIgU0NTSSBjb250cm9sbGVyIGFuZAorcHJldmVudCBrZXJuZWwgZnJvbSBib290aW5nLiBJZiB5b3UgY2FyZCB3YXMgaW4gdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkCitjYXJkcyAoYWJvdmUpLCBwbGVhc2UgbG9vayBhdCB0aGUgY2FyZCBzcGVjaWZpYyBjb25maWcgaW5zdHJ1Y3Rpb25zCisobGF0ZXIgaW4gdGhpcyBmaWxlKSBiZWZvcmUgc3RhcnRpbmcgdG8gY29uZmlndXJlLiBTb21lIGNhcmRzIG11c3QgYmUKK2NvbmZpZ3VyZWQgaW4gd2F5IHdoaWNoIGlzIG5vdCBvYnZpb3VzLgorCitTbyBoZXJlIGlzIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGNvbmZpZyBkaWFsb2cuIEFuc3dlciAneScgb3IgJ24nIHRvIHRoZXNlCitxdWVzdGlvbnMuIFRoZSBkZWZhdWx0IGFuc3dlciBpcyBzaG93biBzbyB0aGF0ICh5L24pIG1lYW5zICd5JyBieSBkZWZhdWx0IGFuZAorKG4veSkgbWVhbnMgJ24nLiBUbyB1c2UgdGhlIGRlZmF1bHQgdmFsdWUsIGp1c3QgaGl0IEVOVEVSLiBCdXQgYmUgY2FyZWZ1bAorc2luY2UgdXNpbmcgdGhlIGRlZmF1bHQgX2RvZXNuJ3RfIGd1YXJhbnRlZSBhbnl0aGluZy4KKworTm90ZSBhbHNvIHRoYXQgYWxsIHF1ZXN0aW9ucyBtYXkgbm90IGJlIGFza2VkLiBUaGUgY29uZmlndXJhdGlvbiBwcm9ncmFtCittYXkgZGlzYWJsZSBzb21lIHF1ZXN0aW9ucyBkZXBlbmRpbmcgb24gdGhlIGVhcmxpZXIgY2hvaWNlcy4gSXQgbWF5IGFsc28KK3NlbGVjdCBzb21lIG9wdGlvbnMgYXV0b21hdGljYWxseSBhcyB3ZWxsLgorCisgICJQcm9BdWRpb1NwZWN0cnVtIDE2IHN1cHBvcnQiLAorCS0gQW5zd2VyICd5J19PTkxZXyBpZiB5b3UgaGF2ZSBhIFBybyBBdWRpbyBTcGVjdHJ1bSBfMTZfLAorCSAgUHJvIEF1ZGlvIFN0dWRpbyAxNiBvciBMb2dpdGVjaCBTb3VuZE1hbiAxNiAoYmUgc3VyZSB0aGF0CisJICB5b3UgcmVhZCB0aGUgYWJvdmUgbGlzdCBjb3JyZWN0bHkpLiBEb24ndCBhbnN3ZXIgJ3knIGlmIHlvdQorCSAgaGF2ZSBzb21lIG90aGVyIGNhcmQgbWFkZSBieSBNZWRpYSBWaXNpb24gb3IgTG9naXRlY2ggc2luY2UgdGhleQorCSAgYXJlIG5vdCBQQVMxNiBjb21wYXRpYmxlLgorCSAgTk9URSEgU2luY2UgMy41LWJldGExMCB5b3UgbmVlZCB0byBlbmFibGUgU0Igc3VwcG9ydCAobmV4dCBxdWVzdGlvbikKKwkgIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgU0IgZW11bGF0aW9uIG9mIFBBUzE2LiBJdCdzIGFsc28gcG9zc2libGUgdG8KKyAgIAkgIHRoZSBlbXVsYXRpb24gaWYgeW91IHdhbnQgdG8gdXNlIGEgdHJ1ZSBTQiBjYXJkIHRvZ2V0aGVyIHdpdGggUEFTMTYKKwkgICh0aGVyZSBpcyBhbm90aGVyIHF1ZXN0aW9uIGFib3V0IHRoaXMgdGhhdCBpcyBhc2tlZCBsYXRlcikuCisgICJTb3VuZCBCbGFzdGVyIHN1cHBvcnQiLAorCS0gQW5zd2VyICd5JyBpZiB5b3UgaGF2ZSBhbiBvcmlnaW5hbCBTQiBjYXJkIG1hZGUgYnkgQ3JlYXRpdmUgTGFicworCSAgb3IgYSBmdWxsIDEwMCUgaGFyZHdhcmUgY29tcGF0aWJsZSBjbG9uZSAobGlrZSBUaHVuZGVyYm9hcmQgb3IKKwkgIFNNIEdhbWVzKS4gSWYgeW91ciBjYXJkIHdhcyBpbiB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgY2FyZHMgKGFib3ZlKSwKKwkgIHBsZWFzZSBsb29rIGF0IHRoZSBjYXJkIHNwZWNpZmljIGluc3RydWN0aW9ucyBsYXRlciBpbiB0aGlzIGZpbGUKKwkgIGJlZm9yZSBhbnN3ZXJpbmcgdGhpcyBxdWVzdGlvbi4gRm9yIGFuIHVua25vd24gY2FyZCB5b3UgbWF5IGFuc3dlciAKKwkgICd5JyBpZiB0aGUgY2FyZCBjbGFpbXMgdG8gYmUgU0IgY29tcGF0aWJsZS4KKwkgRW5hYmxlIHRoaXMgb3B0aW9uIGFsc28gd2l0aCBQQVMxNiAoY2hhbmdlZCBzaW5jZSB2My41LWJldGE5KS4KKworCSBEb24ndCBlbmFibGUgU0IgaWYgeW91IGhhdmUgYSBNQUQxNiBvciBNb3phcnQgY29tcGF0aWJsZSBjYXJkLgorCisgICJHZW5lcmljIE9QTDIvT1BMMyBGTSBzeW50aGVzaXplciBzdXBwb3J0IiwKKwktIEFuc3dlciAneScgaWYgeW91ciBjYXJkIGhhcyBhIEZNIGNoaXAgbWFkZSBieSBZYW1haGEgKE9QTDIvT1BMMy9PUEw0KS4KKwkgIEFuc3dlcmluZyAneScgaXMgdXN1YWxseSBhIHNhZmUgYW5kIHJlY29tbWVuZGVkIGNob2ljZS4gSG93ZXZlciBzb21lCisJICBjYXJkcyBtYXkgaGF2ZSBzb2Z0d2FyZSAoVFNSKSBGTSBlbXVsYXRpb24uIEVuYWJsaW5nIEZNIHN1cHBvcnQKKwkgIHdpdGggdGhlc2UgY2FyZHMgbWF5IGNhdXNlIHRyb3VibGUuIEhvd2V2ZXIgSSBkb24ndCBjdXJyZW50bHkga25vdworCSAgc3VjaCBjYXJkcy4KKyAgIkdyYXZpcyBVbHRyYXNvdW5kIHN1cHBvcnQiLAorCS0gQW5zd2VyICd5JyBpZiB5b3UgaGF2ZSBHVVMgb3IgR1VTIE1BWC4gQW5zd2VyICduJyBpZiB5b3UgZG9uJ3QKKwkgIGhhdmUgR1VTIHNpbmNlIHRoZSBHVVMgZHJpdmVyIGNvbnN1bWVzIG11Y2ggbWVtb3J5LgorCSAgQ3VycmVudGx5IEkgZG9uJ3QgaGF2ZSBleHBlcmllbmNlcyB3aXRoIHRoZSBHVVMgQUNFIHNvIEkgZG9uJ3QKKwkgIGtub3cgd2hhdCB0byBhbnN3ZXIgd2l0aCBpdC4KKyAgIk1QVS00MDEgc3VwcG9ydCAoTk9UIGZvciBTQjE2KSIsCisJLSBCZSBjYXJlZnVsIHdpdGggdGhpcyBxdWVzdGlvbi4gVGhlIE1QVTQwMSBpbnRlcmZhY2UgaXMgc3VwcG9ydGVkCisJICBieSBhbG1vc3QgYW55IHNvdW5kIGNhcmQgdG9kYXkuIEhvd2V2ZXIgc29tZSBuYXRpdmVseSBzdXBwb3J0ZWQgY2FyZHMKKwkgIGhhdmUgdGhlaXIgb3duIGRyaXZlciBmb3IgTVBVNDAxLiBFbmFibGluZyB0aGUgTVBVNDAxIG9wdGlvbiB3aXRoCisJICB0aGVzZSBjYXJkcyB3aWxsIGNhdXNlIGEgY29uZmxpY3QuIEFsc28gZW5hYmxpbmcgTVBVNDAxIG9uIGEgc3lzdGVtCisJICB0aGF0IGRvZXNuJ3QgcmVhbGx5IGhhdmUgYSBNUFU0MDEgY291bGQgY2F1c2Ugc29tZSB0cm91YmxlLiBJZiB5b3VyCisJICBjYXJkIHdhcyBpbiB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgY2FyZHMgKGFib3ZlKSwgcGxlYXNlIGxvb2sgYXQKKwkgIHRoZSBjYXJkIHNwZWNpZmljIGluc3RydWN0aW9ucyBsYXRlciBpbiB0aGlzIGZpbGUuCisKKwkgIEluIE1PU1QgY2FzZXMgdGhpcyBNUFU0MDEgZHJpdmVyIHNob3VsZCBvbmx5IGJlIHVzZWQgd2l0aCAidHJ1ZSIKKwkgIE1JREktb25seSBNUFU0MDEgcHJvZmVzc2lvbmFsIGNhcmRzLiBJbiBtb3N0IG90aGVyIGNhc2VzIHRoZXJlCisJICBpcyBhbm90aGVyIHdheSB0byBnZXQgdGhlIE1QVTQwMSBjb21wYXRpYmxlIGludGVyZmFjZSBvZiBhCisJICBzb3VuZCBjYXJkIHRvIHdvcmsuCisJICBTdXBwb3J0IGZvciB0aGUgTVBVNDAxIGNvbXBhdGlibGUgTUlESSBwb3J0IG9mIFNCMTYsIEVTUzE2ODgKKwkgIGFuZCBNViBKYXp6MTYgY2FyZHMgaXMgaW5jbHVkZWQgaW4gdGhlIFNCIGRyaXZlci4gVXNlIGl0IGluc3RlYWQKKwkgIG9mIHRoaXMgc2VwYXJhdGUgTVBVNDAxIGRyaXZlciB3aXRoIHRoZXNlIGNhcmRzLiBBcyB3ZWxsIAorCSAgU291bmRzY2FwZSwgUFNTIGFuZCBNYXVpIGRyaXZlcnMgaW5jbHVkZSB0aGVpciBvd24gTVBVNDAxCisJICBvcHRpb25zLgorCisJICBJdCdzIHNhZmUgdG8gYW5zd2VyICd5JyBpZiB5b3UgaGF2ZSBhIHRydWUgTVBVNDAxIE1JREkgaW50ZXJmYWNlCisJICBjYXJkLiAKKyAgIjY4NTAgVUFSVCBNaWRpIHN1cHBvcnQiLAorCS0gSXQncyBzYWZlIHRvIGFuc3dlciAnbicgdG8gdGhpcyBxdWVzdGlvbiBpbiBhbGwgY2FzZXMuIFRoZSA2ODUwCisJICBVQVJUIGludGVyZmFjZSBpcyBzbyByYXJlbHkgdXNlZC4KKyAgIlBTUyAoRUNITy1BREkyMTExKSBzdXBwb3J0IiwKKwktIEFuc3dlciAneScgb25seSBpZiB5b3UgaGF2ZSBPcmNoaWQgU1czMiwgQ2FyZGluYWwgRFNQMTYgb3Igc29tZQorCSAgb3RoZXIgY2FyZCBiYXNlZCBvbiB0aGUgUFNTIGNoaXBzZXQgKEFEMTg0OCBjb2RlYyArIEFEU1AtMjExNQorCSAgRFNQIGNoaXAgKyBFY2hvIEVTQzYxNCBBU0lDIENISVApLgorICAiMTYgYml0IHNhbXBsaW5nIG9wdGlvbiBvZiBHVVMgKF9OT1RfIEdVUyBNQVgpIiwKKwktIEFuc3dlciAneScgaWYgeW91IGhhdmUgaW5zdGFsbGVkIHRoZSAxNiBiaXQgc2FtcGxpbmcgZGF1Z2h0ZXJjYXJkCisJICB0byB5b3VyIEdVUy4gQW5zd2VyICduJyBpZiB5b3UgaGF2ZSBHVVMgTUFYLiBFbmFibGluZyB0aGlzIG9wdGlvbgorCSAgZGlzYWJsZXMgR1VTIE1BWCBzdXBwb3J0LgorICAiR1VTIE1BWCBzdXBwb3J0IiwKKwktIEFuc3dlciAneScgb25seSBpZiB5b3UgaGF2ZSBhIEdVUyBNQVguCisgICJNaWNyb3NvZnQgU291bmQgU3lzdGVtIHN1cHBvcnQiLAorCS0gQWdhaW4gdGhpbmsgY2FyZWZ1bGx5IGJlZm9yZSBhbnN3ZXJpbmcgJ3knIHRvIHRoaXMgcXVlc3Rpb24uIEl0J3MKKwkgIHNhZmUgdG8gYW5zd2VyICd5JyBpbiBjYXNlIHlvdSBoYXZlIHRoZSBvcmlnaW5hbCBXaW5kb3dzIFNvdW5kIAorCSAgU3lzdGVtIGNhcmQgbWFkZSBieSBNaWNyb3NvZnQgb3IgQXp0ZWNoIFNHIDE2IFBybyAob3IgTlgxNiBQcm8pLgorCSAgQWxzbyB5b3UgbWF5IGFuc3dlciAneScgaW4gY2FzZSB5b3VyIGNhcmQgd2FzIG5vdCBsaXN0ZWQgZWFybGllcgorCSAgaW4gdGhpcyBmaWxlLiBGb3IgY2FyZHMgaGF2aW5nIG5hdGl2ZSBzdXBwb3J0IGluIHRoZSBkcml2ZXIsIGNvbnN1bHQKKwkgIHRoZSBjYXJkIHNwZWNpZmljIGluc3RydWN0aW9ucyBsYXRlciBpbiB0aGlzIGZpbGUuIFNvbWUgZHJpdmVycworCSAgaGF2ZSB0aGVpciBvd24gTVNTIHN1cHBvcnQgYW5kIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHdpbGwgY2F1c2UgYQorCSAgY29uZmxpY3QuIAorCSAgTm90ZSEgVGhlIE1TUyBkcml2ZXIgcGVybWl0cyBjb25maWd1cmluZyB0d28gRE1BIGNoYW5uZWxzLiBUaGlzIGlzIGEKKwkgICJub25zdGFuZGFyZCIgZmVhdHVyZSBhbmQgd29ya3Mgb25seSB3aXRoIHZlcnkgZmV3IGNhcmRzIChpZiBhbnkpLgorCSAgSW4gbW9zdCBjYXNlcyB0aGUgc2Vjb25kIERNQSBjaGFubmVsIHNob3VsZCBiZSBkaXNhYmxlZCBvciBzZXQgdG8KKwkgIHRoZSBzYW1lIGNoYW5uZWwgdGhhbiB0aGUgZmlyc3Qgb25lLiBUcnlpbmcgdG8gY29uZmlndXJlIHR3byBzZXBhcmF0ZQorCSAgY2hhbm5lbHMgd2l0aCBjYXJkcyB0aGF0IGRvbid0IHN1cHBvcnQgdGhpcyBmZWF0dXJlIHdpbGwgcHJldmVudAorCSAgYXVkaW8gKGF0IGxlYXN0IHJlY29yZGluZykgZnJvbSB3b3JraW5nLgorICAiRW5zb25pcSBTb3VuZHNjYXBlIHN1cHBvcnQiLAorCS0gQW5zd2VyICd5JyBpZiB5b3UgaGF2ZSBhIHNvdW5kIGNhcmQgYmFzZWQgb24gdGhlIEVuc29uaXEgU291bmRTY2FwZQorCSAgY2hpcHNldC4gU3VjaCBjYXJkcyBhcmUgYmVpbmcgbWFudWZhY3R1cmVkIGF0IGxlYXN0IGJ5IEVuc29uaXEsCisJICBTcGVhIGFuZCBSZXZlYWwgKG5vdGUgdGhhdCBSZXZlYWwgbWFrZXMgb3RoZXIgY2FyZHMgYWxzbykuICBUaGUgb2xkZXN0CisJICBjYXJkcyBtYWRlIGJ5IFNwZWEgZG9uJ3Qgd29yayBwcm9wZXJseSB3aXRoIExpbnV4LiAKKwkgIFNvdW5kc2NhcGUgUG5QIGFzIHdlbGwgYXMgRW5zb25pcSBWSVZPIHdvcmsgb25seSB3aXRoIHRoZSBjb21tZXJjaWFsCisJICBPU1MvTGludXggdmVyc2lvbi4KKyAgIk1lZGlhVHJpeCBBdWRpb1RyaXggUHJvIHN1cHBvcnQiLAorCS0gQW5zd2VyICd5JyBpZiB5b3UgaGF2ZSB0aGUgQXVkaW9Ucml4IFByby4KKyAgIlN1cHBvcnQgZm9yIE1BRDE2IGFuZC9vciBNb3phcnQgYmFzZWQgY2FyZHMiLAorCS0gQW5zd2VyIHkgaWYgeW91ciBjYXJkIGhhcyBhIE1vemFydCAoT0FLIE9USS02MDEpIG9yIE1BRDE2CisJICAoT1BUaSA4MkM5MjgsIDgyQzkyOSwgODJDOTI0LzgyQzkyNSBvciA4MkM5MzApIGF1ZGlvIGludGVyZmFjZSBjaGlwLiAKKwkgIFRoZXNlIGNoaXBzIGFyZQorCSAgY3VycmVudGx5IHF1aXRlIGNvbW1vbiBzbyBpdCdzIHBvc3NpYmxlIHRoYXQgbWFueSBuby1uYW1lIGNhcmRzCisJICBoYXZlIG9uZSBvZiB0aGVtLiBJbiBhZGRpdGlvbiB0aGUgTUFEMTYgY2hpcCBpcyB1c2VkIGluIHNvbWUKKwkgIGNhcmRzIG1hZGUgYnkga25vd24gbWFudWZhY3R1cmVycyBzdWNoIGFzIFR1cnRsZSBCZWFjaCAoVHJvcGV6KSwKKwkgIFJldmVhbCAoc29tZSBtb2RlbHMpIGFuZCBEaWFtb25kIChzb21lIHJlY2VudCBtb2RlbHMpLgorCSAgTm90ZSBPUFRpIDgyQzkyNCBhbmQgODJDOTI1IGFyZSBNQUQxNiBjb21wYXRpYmxlIG9ubHkgaW4gbm9uIFBuUAorCSAgbW9kZSAoanVtcGVyIHNlbGVjdGFibGUgb24gbWFueSBjYXJkcykuCisgICJTdXBwb3J0IGZvciBUQiBNYXVpIgorCS0gVGhpcyBlbmFibGVzIFRCIE1hdWkgc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24uIFdvcmtzIHdpdGggVEIgTWF1aQorCWFuZCBUQiBUcm9wZXogKG1heSBub3Qgd29yayB3aXRoIFRyb3BleiBQbHVzKS4KKworCitUaGVuIHRoZSBjb25maWd1cmF0aW9uIHByb2dyYW0gYXNrcyBzb21lIHkvbiBxdWVzdGlvbnMgYWJvdXQgdGhlIGhpZ2hlcgorbGV2ZWwgc2VydmljZXMuIEl0J3MgcmVjb21tZW5kZWQgdG8gYW5zd2VyICd5JyB0byBlYWNoIG9mIHRoZXNlIHF1ZXN0aW9ucy4KK0Fuc3dlciAnbicgb25seSBpZiB5b3Uga25vdyB5b3Ugd2lsbCBub3QgbmVlZCB0aGUgb3B0aW9uLgorCisgICJNSURJIGludGVyZmFjZSBzdXBwb3J0IiwKKwktIEFuc3dlcmluZyAnbicgZGlzYWJsZXMgL2Rldi9taWRpIyMgZGV2aWNlcyBhbmQgYWNjZXNzIHRvIGFueQorCSAgTUlESSBwb3J0cyB1c2luZyAvZGV2L3NlcXVlbmNlciBhbmQgL2Rldi9tdXNpYy4gVGhpcyBvcHRpb24KKwkgIGFsc28gYWZmZWN0cyBhbnkgTVBVNDAxIGFuZC9vciBHZW5lcmFsIE1JREkgY29tcGF0aWJsZSBkZXZpY2VzLgorICAiRk0gc3ludGhlc2l6ZXIgKFlNMzgxMi9PUEwtMykgc3VwcG9ydCIsCisJLSBBbnN3ZXIgJ3knIGhlcmUuCisgICIvZGV2L3NlcXVlbmNlciBzdXBwb3J0IiwKKwktIEFuc3dlcmluZyAnbicgZGlzYWJsZXMgL2Rldi9zZXF1ZW5jZXIgYW5kIC9kZXYvbXVzaWMuCisKK0VudGVyaW5nIHRoZSBJL08sIElSUSBhbmQgRE1BIGNvbmZpZyBwYXJhbWV0ZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBZnRlciB0aGUgYWJvdmUgcXVlc3Rpb25zIHRoZSBjb25maWd1cmF0aW9uIHByb2dyYW0gcHJvbXB0cyBmb3IgdGhlCitjYXJkIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uIFVzdWFsbHkganVzdCBhIHNldCBvZgorSS9PIGFkZHJlc3MsIElSUSBhbmQgRE1BIG51bWJlcnMgYXJlIGFza2VkLiBXaXRoIHNvbWUgY2FyZHMgdGhlIHByb2dyYW0KK2Fza3MgZm9yIHNvbWUgZmlsZXMgdG8gYmUgdXNlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGNhcmQuIEZvciBleGFtcGxlCittYW55IGNhcmRzIGhhdmUgYSBEU1AgY2hpcCBvciBtaWNyb3Byb2Nlc3NvciB3aGljaCBtdXN0IGJlIGluaXRpYWxpemVkIGJ5Citkb3dubG9hZGluZyBhIHByb2dyYW0gKG1pY3JvY29kZSkgZmlsZSB0byB0aGUgY2FyZC4KKworSW5zdHJ1Y3Rpb25zIGZvciBhbnN3ZXJpbmcgdGhlc2UgcXVlc3Rpb25zIGFyZSBnaXZlbiBpbiB0aGUgbmV4dCBzZWN0aW9uLgorCisKK0NhcmQgc3BlY2lmaWMgaW5mb3JtYXRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBzZWN0aW9uIGdpdmVzIGFkZGl0aW9uYWwgaW5zdHJ1Y3Rpb25zIGFib3V0IGNvbmZpZ3VyaW5nIHNvbWUgY2FyZHMuCitQbGVhc2UgcmVmZXIgbWFudWFsIG9mIHlvdXIgY2FyZCBmb3IgdmFsaWQgSS9PLCBJUlEgYW5kIERNQSBudW1iZXJzLiBVc2luZwordGhlIHNhbWUgc2V0dGluZ3Mgd2l0aCBET1MvV2luZG93cyBhbmQgTGludXggaXMgcmVjb21tZW5kZWQuIFVzaW5nCitkaWZmZXJlbnQgdmFsdWVzIGNvdWxkIGNhdXNlIHNvbWUgcHJvYmxlbXMgd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbgorZGlmZmVyZW50IG9wZXJhdGluZyBzeXN0ZW1zLgorCitTb3VuZCBCbGFzdGVycyAodGhlIG9yaWdpbmFsIG9uZXMgYnkgQ3JlYXRpdmUpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTk9URSEgQ2hlY2sgaWYgeW91IGhhdmUgYSBQblAgU291bmQgQmxhc3RlciAoY2FyZHMgc29sZCBhZnRlciBzdW1tZXIgMTk5NQorICAgICAgYXJlIGFsbW9zdCBjZXJ0YWlubHkgUG5QIG9uZXMpLiBXaXRoIFBuUCBjYXJkcyB5b3Ugc2hvdWxkIHVzZSBpc2FwbnB0b29scworICAgICAgdG8gYWN0aXZhdGUgdGhlbSAoc2VlIGFib3ZlKS4KKworSXQncyBwb3NzaWJsZSB0byBjb25maWd1cmUgdGhlc2UgY2FyZHMgdG8gdXNlIGRpZmZlcmVudCBJL08sIElSUSBhbmQKK0RNQSBzZXR0aW5ncy4gU2luY2UgdGhlIHBvc3NpYmxlL2RlZmF1bHQgc2V0dGluZ3MgaGF2ZSBjaGFuZ2VkIGJldHdlZW4gdmFyaW91cworbW9kZWxzLCB5b3UgaGF2ZSB0byBjb25zdWx0IG1hbnVhbCBvZiB5b3VyIGNhcmQgZm9yIHRoZSBwcm9wZXIgb25lcy4gSXQncworYSBnb29kIGlkZWEgdG8gdXNlIHRoZSBzYW1lIHZhbHVlcyB0aGFuIHdpdGggRE9TL1dpbmRvd3MuIFdpdGggU0IgYW5kIFNCIFBybworaXQncyB0aGUgb25seSBjaG9pY2UuIFNCMTYgaGFzIHNvZnR3YXJlIHNlbGVjdGFibGUgSVJRIGFuZCBETUEgY2hhbm5lbHMgYnV0Cit1c2luZyBkaWZmZXJlbnQgdmFsdWVzIHdpdGggRE9TIGFuZCBMaW51eCBpcyBsaWtlbHkgdG8gY2F1c2UgdHJvdWJsZXMuIFRoZQorRE9TIGRyaXZlciBpcyBub3QgYWJsZSB0byByZXNldCB0aGUgY2FyZCBwcm9wZXJseSBhZnRlciB3YXJtIGJvb3QgZnJvbSBMaW51eAoraWYgTGludXggaGFzIHVzZWQgZGlmZmVyZW50IElSUSBvciBETUEgdmFsdWVzLgorCitUaGUgb3JpZ2luYWwgKHN0ZWFtKSBTb3VuZCBCbGFzdGVyICh2ZXJzaW9ucyAxLnggYW5kIDIueCkgdXNlIGFsd2F5cworRE1BMS4gVGhlcmUgaXMgbm8gd2F5IHRvIGNoYW5nZSBpdC4KKworVGhlIFNCMTYgbmVlZHMgdHdvIERNQSBjaGFubmVscy4gQSA4IGJpdCBvbmUgKDEgb3IgMykgaXMgcmVxdWlyZWQgZm9yCis4IGJpdCBvcGVyYXRpb24gYW5kIGEgMTYgYml0IG9uZSAoNSwgNiBvciA3KSBmb3IgdGhlIDE2IGJpdCBtb2RlLiBJbiB0aGVvcnkKK2l0J3MgcG9zc2libGUgdG8gdXNlIGp1c3Qgb25lICg4IGJpdCkgRE1BIGNoYW5uZWwgYnkgYW5zd2VyaW5nIHRoZSA4IGJpdAorb25lIHdoZW4gdGhlIGNvbmZpZ3VyYXRpb24gcHJvZ3JhbSBhc2tzIGZvciB0aGUgMTYgYml0IG9uZS4gVGhpcyBtYXkgd29yaworaW4gc29tZSBzeXN0ZW1zIGJ1dCBpcyBsaWtlbHkgdG8gY2F1c2UgdGVycmlibGUgbm9pc2Ugb24gc29tZSBvdGhlciBzeXN0ZW1zLgorCitJdCdzIHBvc3NpYmxlIHRvIHVzZSB0d28gU0IxNi8zMi82NCBhdCB0aGUgc2FtZSB0aW1lLiBUbyBkbyB0aGlzIHlvdSBzaG91bGQKK2ZpcnN0IGNvbmZpZ3VyZSBPU1MvRnJlZSBmb3Igb25lIGNhcmQuIFRoZW4gZWRpdCBsb2NhbC5oIG1hbnVhbGx5IGFuZCBkZWZpbmUKK1NCMl9CQVNFLCBTQjJfSVJRLCBTQjJfRE1BIGFuZCBTQjJfRE1BMiBmb3IgdGhlIHNlY29uZCBvbmUuIFlvdSBjYW4ndCBnZXQKK3RoZSBPUEwzLCBNSURJIGFuZCBFTVU4MDAwIGRldmljZXMgb2YgdGhlIHNlY29uZCBjYXJkIHRvIHdvcmsuIElmIHlvdSBhcmUKK2dvaW5nIHRvIHVzZSB0d28gUG5QIFNvdW5kIEJsYXN0ZXJzLCBlbnN1cmUgdGhhdCB0aGV5IGFyZSBvZiBkaWZmZXJlbnQgbW9kZWwKK2FuZCBoYXZlIGRpZmZlcmVudCBQblAgSURzLiBUaGVyZSBpcyBubyB3YXkgdG8gZ2V0IHR3byBjYXJkcyB3aXRoIHRoZSBzYW1lCitjYXJkIElEIGFuZCBzZXJpYWwgbnVtYmVyIHRvIHdvcmsuIFRoZSBlYXNpZXN0IHdheSB0byBjaGVjayB0aGlzIGlzIHRyeWluZyAKK2lmIGlzYXBucHRvb2xzIGNhbiBzZWUgYm90aCBjYXJkcyBvciBqdXN0IG9uZS4KKworTk9URSEJRG9uJ3QgZW5hYmxlIHRoZSBTTSBHYW1lcyBvcHRpb24gKGFza2VkIGJ5IHRoZSBjb25maWd1cmF0aW9uIHByb2dyYW0pCisJaWYgeW91IGFyZSBub3QgMTAxJSBzdXJlIHRoYXQgeW91ciBjYXJkIGlzIGEgTG9naXRlY2ggU291bmRtYW4gR2FtZXMKKwkobm90IGEgU00gV2F2ZSBvciBTTTE2KS4KKworU0IgQ2xvbmVzCistLS0tLS0tLS0KKworRmlyc3Qgb2YgYWxsOiBUaGVyZSBhcmUgbm8gU0IxNiBjbG9uZXMuIFRoZXJlIGFyZSBTQiBQcm8gY2xvbmVzIHdpdGggYQorMTYgYml0IG1vZGUgd2hpY2ggaXMgbm90IFNCMTYgY29tcGF0aWJsZS4gVGhlIG1vc3QgbGlrZWx5IGFsdGVybmF0aXZlIGlzIHRoYXQKK3RoZSAxNiBiaXQgbW9kZSBtZWFucyBNU1MvV1NTLgorCitUaGVyZSBhcmUganVzdCBhIGZldyBmdWxseSAxMDAlIGhhcmR3YXJlIFNCIG9yIFNCIFBybyBjb21wYXRpYmxlIGNhcmRzLgorSSBrbm93IGp1c3QgVGh1bmRlcmJvYXJkIGFuZCBTTSBHYW1lcy4gT3RoZXIgY2FyZHMgcmVxdWlyZSBzb21lIGtpbmQgb2YKK2hhcmR3YXJlIGluaXRpYWxpemF0aW9uIGJlZm9yZSB0aGV5IGJlY29tZSBTQiBjb21wYXRpYmxlLiBDaGVjayBpZiB5b3VyIGNhcmQKK3dhcyBsaXN0ZWQgaW4gdGhlIGJlZ2lubmluZyBvZiB0aGlzIGZpbGUuIEluIHRoaXMgY2FzZSB5b3Ugc2hvdWxkIGZvbGxvdworaW5zdHJ1Y3Rpb25zIGZvciB5b3VyIGNhcmQgbGF0ZXIgaW4gdGhpcyBmaWxlLgorCitGb3Igb3RoZXIgbm90IGZ1bGx5IFNCIGNsb25lcyB5b3UgbWF5IHRyeSBpbml0aWFsaXphdGlvbiB1c2luZyBET1MgaW4KK3RoZSBmb2xsb3dpbmcgd2F5OgorCisJLSBCb290IERPUyBzbyB0aGF0IHRoZSBjYXJkIHNwZWNpZmljIGRyaXZlciBnZXRzIHJ1bi4KKwktIEhpdCBjdHJsLWFsdC1kZWwgKG9yIHVzZSBsb2FkbGluKSB0byBib290IExpbnV4LiBEb24ndAorCSAgc3dpdGNoIG9mZiBwb3dlciBvciBwcmVzcyB0aGUgcmVzZXQgYnV0dG9uLgorCS0gSWYgeW91IHVzZSB0aGUgc2FtZSBJL08sIElSUSBhbmQgRE1BIHNldHRpbmdzIGluIExpbnV4LCB0aGUKKwkgIGNhcmQgc2hvdWxkIHdvcmsuCisKK0lmIHlvdXIgY2FyZCBpcyBib3RoIFNCIGFuZCBNU1MgY29tcGF0aWJsZSwgSSByZWNvbW1lbmQgdXNpbmcgdGhlIE1TUyBtb2RlLgorTW9zdCBjYXJkcyBvZiB0aGlzIGtpbmQgYXJlIG5vdCBhYmxlIHRvIHdvcmsgaW4gdGhlIFNCIGFuZCB0aGUgTVNTIG1vZGUgCitzaW11bHRhbmVvdXNseS4gVXNpbmcgdGhlIE1TUyBtb2RlIHByb3ZpZGVzIDE2IGJpdCByZWNvcmRpbmcgYW5kIHBsYXliYWNrLgorCitQcm9BdWRpb1NwZWN0cnVtIDE2IGFuZCBjb21wYXRpYmxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUEFTMTYgaGFzIGEgU0IgZW11bGF0aW9uIGNoaXAgd2hpY2ggY2FuIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCB0aGUgbmF0aXZlCisoMTYgYml0KSBtb2RlIG9mIHRoZSBjYXJkLiBUbyBlbmFibGUgdGhpcyBlbXVsYXRpb24geW91IHNob3VsZCBjb25maWd1cmUgCit0aGUgZHJpdmVyIHRvIGhhdmUgU0Igc3VwcG9ydCB0b28gKHRoaXMgaGFzIGJlZW4gY2hhbmdlZCBzaW5jZSB2ZXJzaW9uCiszLjUtYmV0YTkgb2YgdGhpcyBkcml2ZXIpLgorCitXaXRoIGN1cnJlbnQgZHJpdmVyIHZlcnNpb25zIGl0J3MgYWxzbyBwb3NzaWJsZSB0byB1c2UgUEFTMTYgdG9nZXRoZXIgd2l0aCAKK2Fub3RoZXIgU0IgY29tcGF0aWJsZSBjYXJkLiBJbiB0aGlzIGNhc2UgeW91IHNob3VsZCBjb25maWd1cmUgU0Igc3VwcG9ydAorZm9yIHRoZSBvdGhlciBjYXJkIGFuZCB0byBkaXNhYmxlIHRoZSBTQiBlbXVsYXRpb24gb2YgUEFTMTYgKHRoZXJlIGlzIGEKK3NlcGFyYXRlIHF1ZXN0aW9ucyBhYm91dCB0aGlzKS4KKworV2l0aCBQQVMxNiB5b3UgY2FuIHVzZSB0d28gYXVkaW8gZGV2aWNlIGZpbGVzIGF0IHRoZSBzYW1lIHRpbWUuIC9kZXYvZHNwIChhbmQKKy9kZXYvYXVkaW8pIGlzIGNvbm5lY3RlZCB0byB0aGUgOC8xNiBiaXQgbmF0aXZlIGNvZGVjIGFuZCB0aGUgL2Rldi9kc3AxIChhbmQKKy9kZXYvYXVkaW8xKSBpcyBjb25uZWN0ZWQgdG8gdGhlIFNCIGVtdWxhdGlvbiAoOCBiaXQgbW9ubyBvbmx5KS4KKworR3JhdmlzIFVsdHJhc291bmQKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXJlIGFyZSBtYW55IGRpZmZlcmVudCByZXZpc2lvbnMgb2YgdGhlIFVsdHJhc291bmQgY2FyZCAoR1VTKS4gVGhlCitlYXJsaWVzdCBvbmVzIChwcmUgMy43KSBkb24ndCBoYXZlIGEgaGFyZHdhcmUgbWl4ZXIuIFdpdGggdGhlc2UgY2FyZHMKK3RoZSBkcml2ZXIgdXNlcyBhIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3Igc3ludGggYW5kIHBjbSBwbGF5YmFja3MuIEl0J3MKK2Fsc28gcG9zc2libGUgdG8gc3dpdGNoIHNvbWUgb2YgdGhlIGlucHV0cyAobGluZSBpbiwgbWljKSBvZmYgYnkgc2V0dGluZworbWl4ZXIgdm9sdW1lIG9mIHRoZSBjaGFubmVsIGxldmVsIGJlbG93IDEwJS4gRm9yIHJlY29yZGluZyB5b3UgaGF2ZQordG8gc2VsZWN0IHRoZSBjaGFubmVsIGFzIGEgcmVjb3JkaW5nIHNvdXJjZSBhbmQgdG8gdXNlIHZvbHVtZSBhYm92ZSAxMCUuCisKK0dVUyAzLjcgaGFzIGEgaGFyZHdhcmUgbWl4ZXIuCisKK0dVUyBNQVggYW5kIHRoZSAxNiBiaXQgc2FtcGxpbmcgZGF1Z2h0ZXJjYXJkIGhhdmUgYSBDUzQyMzEgY29kZWMgY2hpcCB3aGljaCAKK2Fsc28gY29udGFpbnMgYSBtaXhlci4KKworQ29uZmlndXJpbmcgR1VTIGlzIHNpbXBsZS4gSnVzdCBlbmFibGUgdGhlIEdVUyBzdXBwb3J0IGFuZCBHVVMgTUFYIG9yCit0aGUgMTYgYml0IGRhdWdodGVyY2FyZCBpZiB5b3UgaGF2ZSB0aGVtLiBOb3RlIHRoYXQgZW5hYmxpbmcgdGhlIGRhdWdodGVyCitjYXJkIGRpc2FibGVzIEdVUyBNQVggZHJpdmVyLgorCitOT1RFIGZvciBvd25lcnMgb2YgdGhlIDE2IGJpdCBkYXVnaHRlcmNhcmQ6IEJ5IGRlZmF1bHQgdGhlIGRhdWdodGVyY2FyZAordXNlcyAvZGV2L2RzcCAoYW5kIC9kZXYvYXVkaW8pLiBDb21tYW5kICJsbiAtc2YgL2Rldi9kc3AxIC9kZXYvZHNwIgorc2VsZWN0cyB0aGUgZGF1Z2h0ZXIgY2FyZCBhcyB0aGUgZGVmYXVsdCBkZXZpY2UuCisKK1dpdGgganVzdCB0aGUgc3RhbmRhcmQgR1VTIGVuYWJsZWQgdGhlIGNvbmZpZ3VyYXRpb24gcHJvZ3JhbSBwcm9tcHRzCitmb3IgdGhlIEkvTywgSVJRIGFuZCBETUEgbnVtYmVycyBmb3IgdGhlIGNhcmQuIFVzZSB0aGUgc2FtZSB2YWx1ZXMgdGhhbgord2l0aCBET1MuCisKK1dpdGggdGhlIGRhdWdodGVyIGNhcmQgb3B0aW9uIGVuYWJsZWQgeW91IHdpbGwgYmUgcHJvbXB0ZWQgZm9yIHRoZSBJL08sCitJUlEgYW5kIERNQSBudW1iZXJzIGZvciB0aGUgZGF1Z2h0ZXIgY2FyZC4gWW91IGhhdmUgdG8gdXNlIGRpZmZlcmVudCBJL08KK2FuZCBETUEgdmFsdWVzIHRoYW4gZm9yIHRoZSBzdGFuZGFyZCBHVVMuIFRoZSBkYXVnaHRlciBjYXJkIHBlcm1pdHMKK3NpbXVsdGFuZW91cyByZWNvcmRpbmcgYW5kIHBsYXliYWNrLiBVc2UgL2Rldi9kc3AgKHRoZSBkYXVnaHRlcmNhcmQpIGZvcgorcmVjb3JkaW5nIGFuZCAvZGV2L2RzcDEgKEdVUyBHRjEpIGZvciBwbGF5YmFjay4KKworR1VTIE1BWCB1c2VzIHRoZSBzYW1lIEkvTyBhZGRyZXNzIGFuZCBJUlEgc2V0dGluZ3MgdGhhbiB0aGUgb3JpZ2luYWwgR1VTCisoR1VTIE1BWCA9IEdVUyArIGEgQ1M0MjMxIGNvZGVjKS4gSW4gYWRkaXRpb24gYW4gZXh0cmEgRE1BIGNoYW5uZWwgbWF5IGJlIHVzZWQuCitVc2luZyB0d28gRE1BIGNoYW5uZWxzIHBlcm1pdHMgc2ltdWx0YW5lb3VzIHBsYXliYWNrIHVzaW5nIHR3byBkZXZpY2VzCisoZGV2L2RzcDAgYW5kIC9kZXYvZHNwMSkuIFRoZSBzZWNvbmQgRE1BIGNoYW5uZWwgaXMgcmVxdWlyZWQgZm9yCitmdWxsIGR1cGxleCBhdWRpby4KK1RvIGVuYWJsZSB0aGUgc2Vjb25kIERNQSBjaGFubmVscywgZ2l2ZSBhIHZhbGlkIERNQSBjaGFubmVsIHdoZW4gdGhlIGNvbmZpZworcHJvZ3JhbSBhc2tzIGZvciB0aGUgR1VTIE1BWCBETUEgKGVudGVyaW5nIC0xIGRpc2FibGVzIHRoZSBzZWNvbmQgRE1BKS4KK1VzaW5nIDE2IGJpdCBETUEgY2hhbm5lbHMgKDUsNiBvciA3KSBpcyByZWNvbW1lbmRlZC4KKworSWYgeW91IGhhdmUgcHJvYmxlbXMgaW4gcmVjb3JkaW5nIHdpdGggR1VTIE1BWCwgeW91IGNvdWxkIHRyeSB0byB1c2UKK2p1c3Qgb25lIDggYml0IERNQSBjaGFubmVsLiBSZWNvcmRpbmcgd2lsbCBub3Qgd29yayB3aXRoIG9uZSBETUEKK2NoYW5uZWwgaWYgaXQncyBhIDE2IGJpdCBvbmUuCisKK01pY3JvcGhvbmUgaW5wdXQgb2YgR1VTIE1BWCBpcyBjb25uZWN0ZWQgdG8gbWl4ZXIgaW4gbGl0dGxlIGJpdCBub25zdGFuZGFyZAord2F5LiBUaGVyZSBpcyBhY3R1YWxseSB0d28gbWljcm9waG9uZSB2b2x1bWUgY29udHJvbHMuIE5vcm1hbCAibWljIiBjb250cm9scworb25seSByZWNvcmRpbmcgbGV2ZWwuIE1peGVyIGNvbnRyb2wgInNwZWFrZXIiIGlzIHVzZWQgdG8gY29udHJvbCB2b2x1bWUgb2YKK21pY3JvcGhvbmUgc2lnbmFsIGNvbm5lY3RlZCBkaXJlY3RseSB0byBsaW5lL3NwZWFrZXIgb3V0LiBTbyBqdXN0IGRlY3JlYXNlCit2b2x1bWUgb2YgInNwZWFrZXIiIGlmIHlvdSBoYXZlIHByb2JsZW1zIHdpdGggbWljcm9waG9uZSBmZWVkYmFjay4KKworR1VTIEFDRSB3b3JrcyB0b28gYnV0IGFueSBhdHRlbXB0IHRvIHJlY29yZCBvciB0byB1c2UgdGhlIE1JREkgcG9ydAord2lsbCBmYWlsLgorCitHVVMgUG5QICh3aXRoIFJBTSkgaXMgcGFydGlhbGx5IHN1cHBvcnRlZCBidXQgaXQgbmVlZHMgdG8gYmUgaW5pdGlhbGl6ZWQgdXNpbmcKK0RPUyBvciBpc2FwbnB0b29scyBiZWZvcmUgc3RhcnRpbmcgdGhlIGRyaXZlci4KKworTVBVNDAxIGFuZCBXaW5kb3dzIFNvdW5kIFN5c3RlbQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBZ2Fpbi4gRG9uJ3QgZW5hYmxlIHRoZXNlIG9wdGlvbnMgaW4gY2FzZSB5b3VyIGNhcmQgaXMgbGlzdGVkCitzb21ld2hlcmUgZWxzZSBpbiB0aGlzIGZpbGUuCisKK0NvbmZpZ3VyaW5nIHRoZXNlIGNhcmRzIGlzIG9idmlvdXMgKG9yIGl0IHNob3VsZCBiZSkuIFdpdGggTVNTCit5b3Ugc2hvdWxkIHByb2JhYmx5IGVuYWJsZSB0aGUgT1BMMyBzeW50aCBhbHNvIHNpbmNlCittb3N0IE1TUyBjb21wYXRpYmxlIGNhcmRzIGhhdmUgaXQuIEhvd2V2ZXIgY2hlY2sgdGhhdCB0aGlzIGlzIHRydWUKK2JlZm9yZSBlbmFibGluZyBPUEwzLgorCitTb3VuZCBkcml2ZXIgc3VwcG9ydHMgbW9yZSB0aGFuIG9uZSBNUFU0MDEgY29tcGF0aWJsZSBjYXJkcyBhdCB0aGUgc2FtZSB0aW1lCitidXQgdGhlIGNvbmZpZyBwcm9ncmFtIGFza3MgY29uZmlnIGluZm8gZm9yIGp1c3QgdGhlIGZpcnN0IG9mIHRoZW0uCitBZGRpbmcgdGhlIHNlY29uZCBvciB0aGlyZCBNUFUgaW50ZXJmYWNlcyBtdXN0IGJlIGRvbmUgbWFudWFsbHkgYnkKK2VkaXRpbmcgc291bmQvbG9jYWwuaCAoYWZ0ZXIgcnVubmluZyB0aGUgY29uZmlnIHByb2dyYW0pLiBBZGQgZGVmaW5lcyBmb3IKK01QVTJfQkFTRSAmIE1QVTJfSVJRIChhbmQgTVBVM19CQVNFICYgTVBVM19JUlEpIHRvIHRoZSBmaWxlLgorCitDQVVUSU9OIQorCitUaGUgZGVmYXVsdCBJL08gYmFzZSBvZiBBZGFwdGVjIEFIQS0xNTQyIFNDU0kgY29udHJvbGxlciBpcyAweDMzMCB3aGljaAoraXMgYWxzbyB0aGUgZGVmYXVsdCBvZiB0aGUgTVBVNDAxIGRyaXZlci4gRG9uJ3QgY29uZmlndXJlIHRoZSBzb3VuZCBkcml2ZXIgdG8KK3VzZSAweDMzMCBhcyB0aGUgTVBVNDAxIGJhc2UgaWYgeW91IGhhdmUgYSBBSEExNTQyLiBUaGUga2VybmVsIHdpbGwgbm90IGJvb3QKK2lmIHlvdSBtYWtlIHRoaXMgbWlzdGFrZS4KKworUFNTCistLS0KKworRXZlbiB0aGUgUFNTIGNhcmRzIGFyZSBjb21wYXRpYmxlIHdpdGggU0IsIE1TUyBhbmQgTVBVNDAxLCB5b3UgbXVzdCBub3QKK2VuYWJsZSB0aGVzZSBvcHRpb25zIHdoZW4gY29uZmlndXJpbmcgdGhlIGRyaXZlci4gVGhlIGNvbmZpZ3VyYXRpb24KK3Byb2dyYW0gaGFuZGxlcyB0aGVzZSBvcHRpb25zIGl0c2VsZi4gKFlvdSBtYXkgdXNlIHRoZSBTQiwgTVBVIGFuZCBNU1Mgb3B0aW9ucwordG9nZXRoZXIgd2l0aCBQU1MgaWYgeW91IGhhdmUgYW5vdGhlciBjYXJkIG9uIHRoZSBzeXN0ZW0pLgorCitUaGUgUFNTIGRyaXZlciBlbmFibGVzIE1TUyBhbmQgTVBVNDAxIG1vZGVzIG9mIHRoZSBjYXJkLiBTQiBpcyBub3QgZW5hYmxlZCAKK3NpbmNlIGl0IGRvZXNuJ3Qgd29yayBjb25jdXJyZW50bHkgd2l0aCBNU1MuIFRoZSBkcml2ZXIgbG9hZHMgYWxzbyBhCitEU1AgYWxnb3JpdGhtIHdoaWNoIGlzIHVzZWQgdG8gZm9yIHRoZSBnZW5lcmFsIE1JREkgZW11bGF0aW9uLiBUaGUKK2FsZ29yaXRobSBmaWxlICgubGQpIGlzIHJlYWQgYnkgdGhlIGNvbmZpZyBwcm9ncmFtIGFuZCB3cml0dGVuIHRvIGEKK2ZpbGUgaW5jbHVkZWQgd2hlbiB0aGUgcHNzLmMgaXMgY29tcGlsZWQuIEZvciB0aGlzIHJlYXNvbiB0aGUgY29uZmlnCitwcm9ncmFtIGFza3MgaWYgeW91IHdhbnQgdG8gZG93bmxvYWQgdGhlIGZpbGUuIFVzZSB0aGUgZ2VubWlkaS5sZCBmaWxlCitkaXN0cmlidXRlZCB3aXRoIHRoZSBET1MvV2luZG93cyBkcml2ZXJzIG9mIHRoZSBjYXJkIChkb24ndCB1c2UgdGhlIG10MzIubGQpLgorV2l0aCBzb21lIGNhcmRzIHRoZSBmaWxlIGlzIGNhbGxlZCAnc3ludGgubGQnLiBZb3UgbXVzdCBoYXZlIGFjY2VzcyB0bwordGhlIGZpbGUgd2hlbiBjb25maWd1cmluZyB0aGUgZHJpdmVyLiBUaGUgZWFzaWVzdCB3YXkgaXMgdG8gbW91bnQgdGhlIERPUworcGFydGl0aW9uIGNvbnRhaW5pbmcgdGhlIGZpbGUgd2l0aCBMaW51eC4gCisKK0l0J3MgcG9zc2libGUgdG8gbG9hZCB5b3VyIG93biBEU1AgYWxnb3JpdGhtcyBhbmQgcnVuIHRoZW0gd2l0aCB0aGUgY2FyZC4KK0xvb2sgYXQgdGhlIGRpcmVjdG9yeSBwc3NfdGVzdCBvZiBzbmQtdXRpbC0zLjAudGFyLmd6IGZvciBtb3JlIGluZm8uCisKK0F1ZGlvVHJpeCBQcm8KKy0tLS0tLS0tLS0tLS0KKworWW91IGhhdmUgdG8gZW5hYmxlIHRoZSBPUEwzIGFuZCBTQiAobm90IFNCIFBybyBvciBTQjE2KSBkcml2ZXJzIGluIGFkZGl0aW9uCit0byB0aGUgbmF0aXZlIEF1ZGlvVHJpeCBkcml2ZXIuIERvbid0IGVuYWJsZSBNU1Mgb3IgTVBVIGRyaXZlcnMuCisKK0NvbmZpZ3VyaW5nIEFUUCBpcyBsaXR0bGUgYml0IHRyaWNreSBzaW5jZSBpdCB1c2VzIHNvIG1hbnkgSS9PLCBJUlEgYW5kCitETUEgbnVtYmVycy4gVXNpbmcgdGhlIHNhbWUgdmFsdWVzIHRoYW4gd2l0aCBET1MvV2luIGlzIGEgZ29vZCBpZGVhLiBEb24ndAorYXR0ZW1wdCB0byB1c2UgdGhlIHNhbWUgSVJRIG9yIERNQSBjaGFubmVscyB0d2ljZS4KKworVGhlIFNCIG1vZGUgb2YgQVRQIGlzIGltcGxlbWVudGVkIHNvIHRoZSBBVFAgZHJpdmVyIGp1c3QgZW5hYmxlcyBTQgoraW4gdGhlIHByb3BlciBhZGRyZXNzLiBUaGUgU0IgZHJpdmVyIGhhbmRsZXMgdGhlIHJlc3QuIFlvdSBoYXZlIHRvIGNvbmZpZ3VyZQorYm90aCB0aGUgU0IgZHJpdmVyIGFuZCB0aGUgU0IgbW9kZSBvZiBBVFAgdG8gdXNlIHRoZSBzYW1lIElSUSwgRE1BIGFuZCBJL08KK3NldHRpbmdzLgorCitBbHNvIHRoZSBBVFAgaGFzIGEgbWljcm9jb250cm9sbGVyIGZvciB0aGUgR2VuZXJhbCBNSURJIGVtdWxhdGlvbiAoT1BMNCkuCitGb3IgdGhpcyByZWFzb24gdGhlIGRyaXZlciBhc2tzIGZvciB0aGUgbmFtZSBvZiBhIGZpbGUgY29udGFpbmluZyB0aGUKK21pY3JvY29kZSAoVFJYUFJPLkhFWCkuIFRoaXMgZmlsZSBpcyB1c3VhbGx5IGxvY2F0ZWQgaW4gdGhlIGRpcmVjdG9yeQord2hlcmUgdGhlIERPUyBkcml2ZXJzIHdlcmUgaW5zdGFsbGVkLiBZb3UgbXVzdCBoYXZlIGFjY2VzcyB0byB0aGlzIGZpbGUKK3doZW4gY29uZmlndXJpbmcgdGhlIGRyaXZlci4gCisKK0lmIHlvdSBoYXZlIHRoZSBlZmZlY3RzIGRhdWdodGVyY2FyZCwgaXQgbXVzdCBiZSBpbml0aWFsaXplZCBieSBydW5uaW5nCit0aGUgc2V0ZnggcHJvZ3JhbSBvZiBzbmQtdXRpbC0zLjAudGFyLmd6IHBhY2thZ2UuIFRoaXMgc3RlcCBpcyBub3QgcmVxdWlyZWQKK3doZW4gdXNpbmcgdGhlIChmdXR1cmUpIGJpbmFyeSBkaXN0cmlidXRpb24gdmVyc2lvbiBvZiB0aGUgZHJpdmVyLgorCitFbnNvbmlxIFNvdW5kU2NhcGUKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitOT1RFIQlUaGUgbmV3IFBuUCBTb3VuZFNjYXBlIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LiBTb3VuZHNjYXBlIGNvbXBhdGlibGUKKwljYXJkcyBtYWRlIGJ5IFJldmVhbCBkb24ndCB3b3JrIHdpdGggTGludXguIFRoZXkgdXNlIG9sZGVyIHJldmlzaW9uCisJb2YgdGhlIFNvdW5kc2NhcGUgY2hpcHNldCB3aGljaCBpcyBub3QgZnVsbHkgY29tcGF0aWJsZSB3aXRoCisJbmV3ZXIgY2FyZHMgbWFkZSBieSBFbnNvbmlxLgorCitUaGUgU291bmRTY2FwZSBkcml2ZXIgaGFuZGxlcyBpbml0aWFsaXphdGlvbiBvZiBNU1MgYW5kIE1QVSBzdXBwb3J0cworaXRzZWxmIHNvIHlvdSBkb24ndCBuZWVkIHRvIGVuYWJsZSBvdGhlciBkcml2ZXJzIHRoYW4gU291bmRTY2FwZQorKGVuYWJsZSBhbHNvIHRoZSAvZGV2L2RzcCwgL2Rldi9zZXF1ZW5jZXIgYW5kIE1JREkgc3VwcG9ydHMpLgorCishISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhCishISEhISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhISEhCishISEhISBOT1RFISBCZWZvcmUgdmVyc2lvbiAzLjUtYmV0YTYgdGhlcmUgV0VSRSB0d28gc2V0cyBvZiBhdWRpbyAJISEhIQorISEhISEgICAgICAgZGV2aWNlIGZpbGVzICgvZGV2L2RzcDAgYW5kIC9kZXYvZHNwMSkuIFRoZSBmaXJzdCBvbmUgV0FTICAgISEhIQorISEhISEJICAgIHVzZWQgb25seSBmb3IgY2FyZCBpbml0aWFsaXphdGlvbiBhbmQgdGhlIHNlY29uZCBmb3IgYXVkaW8gICEhISEKKyEhISEhCSAgICBwdXJwb3Nlcy4gSXQgV0FTIHJlcXVpcmVkIHRvIGNoYW5nZSAvZGV2L2RzcCAoYSBzeW1saW5rKSB0byAhISEhCishISEhIQkgICAgcG9pbnQgdG8gL2Rldi9kc3AxLgkJCQkJCSEhISEKKyEhISEhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhISEKKyEhISEhCSAgICBUaGlzIGlzIG5vdCByZXF1aXJlZCB3aXRoIE9TUyB2ZXJzaW9ucyAzLjUtYmV0YTYgYW5kIGxhdGVyCSEhISEKKyEhISEhCSAgICBzaW5jZSB0aGVyZSBpcyBub3cganVzdCBvbmUgYXVkaW8gZGV2aWNlIGZpbGUuIFBsZWFzZSAJISEhIQorISEhISEJICAgIGNoYW5nZSAvZGV2L2RzcCB0byBwb2ludCBiYWNrIHRvIC9kZXYvZHNwMCBpZiB5b3UgYXJlCSEhISEKKyEhISEhCSAgICB1cGdyYWRpbmcgZnJvbSBhbiBlYXJsaWVyIGRyaXZlciB2ZXJzaW9uIHVzaW5nCQkhISEhCishISEhIQkgICAgKGNkIC9kZXY7cm0gZHNwO2xuIC1zIGRzcDAgZHNwKS4JCQkJISEhIQorISEhISEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISEhIQorISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhIQorCitUaGUgY29uZmlndXJhdGlvbiBwcm9ncmFtIGFza3Mgb25lIERNQSBjaGFubmVsIGFuZCB0d28gaW50ZXJydXB0cy4gT25lIElSUQorYW5kIG9uZSBETUEgaXMgdXNlZCBieSB0aGUgTVNTIGNvZGVjLiBUaGUgc2Vjb25kIElSUSBpcyByZXF1aXJlZCBmb3IgdGhlCitNUFU0MDEgbW9kZSAoeW91IGhhdmUgdG8gdXNlIGRpZmZlcmVudCBJUlFzIGZvciBib3RoIHB1cnBvc2VzKS4KK1RoZXJlIHdlcmUgZWFybGllciB0d28gRE1BIGNoYW5uZWxzIGZvciBTb3VuZFNjYXBlIGJ1dCB0aGUgY3VycmVudCBkcml2ZXIKK3ZlcnNpb24gcmVxdWlyZXMganVzdCBvbmUuCisKK1RoZSBTb3VuZFNjYXBlIGNhcmQgaGFzIGEgTW90b3JvbGEgbWljcm9jb250cm9sbGVyIHdoaWNoIG11c3QgaW5pdGlhbGl6ZWQKK19hZnRlcl8gYm9vdCAodGhlIGRyaXZlciBkb2Vzbid0IGluaXRpYWxpemUgaXQgZHVyaW5nIGJvb3QpLgorVGhlIGluaXRpYWxpemF0aW9uIGlzIGRvbmUgYnkgcnVubmluZyB0aGUgJ3NzaW5pdCcgcHJvZ3JhbSB3aGljaCBpcworZGlzdHJpYnV0ZWQgaW4gdGhlIHNuZC11dGlsLTMuMC50YXIuZ3ogcGFja2FnZS4gWW91IGhhdmUgdG8gZWRpdCB0d28KK2RlZmluZXMgaW4gdGhlIHNzaW5pdC5jIGFuZCB0aGVuIGNvbXBpbGUgdGhlIHByb2dyYW0uIFlvdSBtYXkgcnVuIHNzaW5pdCAKK21hbnVhbGx5IChhZnRlciBlYWNoIGJvb3QpIG9yIGFkZCBpdCB0byAvZXRjL3JjLmQvcmMubG9jYWwuCisKK1RoZSBzc2luaXQgcHJvZ3JhbSBuZWVkcyB0aGUgbWljcm9jb2RlIGZpbGUgdGhhdCBjb21lcyB3aXRoIHRoZSBET1MvV2luZG93cworZHJpdmVyIG9mIHRoZSBjYXJkLiBZb3Ugd2lsbCBuZWVkIHRvIHVzZSB2ZXJzaW9uIDEuMzAuMDAgb3IgbGF0ZXIKK29mIHRoZSBtaWNyb2NvZGUgZmlsZSAoc25kc2NhcGUuY28wIG9yIHNuZHNjYXBlLmNvMSBkZXBlbmRpbmcgb24KK3lvdXIgY2FyZCBtb2RlbCkuIFRIRSBPTEQgc25kc2NhcGUuY29kIFdJTEwgTk9UIFdPUksuIElUIFdJTEwgSEFORyBZT1VSCitNQUNISU5FLiBUaGUgb25seSB3YXkgdG8gZ2V0IHRoZSBuZXcgbWljcm9jb2RlIGZpbGUgaXMgdG8gZG93bmxvYWQKK2FuZCBpbnN0YWxsIHRoZSBET1MvV2luZG93cyBkcml2ZXIgZnJvbSBmdHA6Ly9mdHAuZW5zb25pcS5jb20vcHViLgorCitUaGVuIHlvdSBoYXZlIHRvIHNlbGVjdCB0aGUgcHJvcGVyIG1pY3JvY29kZSBmaWxlIHRvIHVzZTogc291bmRzY2FwZS5jbzAKK2lzIHRoZSByaWdodCBvbmUgZm9yIG1vc3QgY2FyZHMgYW5kIHNuZHNjYXBlLmNvMSBpcyBmb3IgZmV3IChvbGRlcikgY2FyZHMKK21hZGUgYnkgUmV2ZWFsIGFuZC9vciBTcGVhLiBUaGUgZHJpdmVyIGhhcyBjYXBhYmlsaXR5IHRvIGRldGVjdCB0aGUgY2FyZAordmVyc2lvbiBkdXJpbmcgYm9vdC4gTG9vayBhdCB0aGUgYm9vdCBsb2cgbWVzc2FnZXMgaW4gL3Zhci9hZG0vbWVzc2FnZXMKK2FuZCBsb2NhdGUgdGhlIHNvdW5kIGRyaXZlciBpbml0aWFsaXphdGlvbiBtZXNzYWdlIGZvciB0aGUgU291bmRTY2FwZQorY2FyZC4gSWYgdGhlIGRyaXZlciBkaXNwbGF5cyBzdHJpbmcgPEVuc29uaXEgU291bmRzY2FwZSAob2xkKT4sIHlvdSBoYXZlCithbiBvbGQgY2FyZCBhbmQgeW91IHdpbGwgbmVlZCB0byB1c2Ugc25kc2NhcGUuY28xLiBGb3Igb3RoZXIgY2FyZHMgdXNlCitzb3VuZHNjYXBlLmNvMC4gTmV3IFNvdW5kc2NhcGUgcmV2aXNpb25zIHN1Y2ggYXMgRWxpdGUgYW5kIFBuUCB1c2UKK2NvZGUgZmlsZXMgd2l0aCBoaWdoZXIgbnVtYmVycyAoLmNvMiwgLmNvMywgZXRjLikuCisKK05PVEUhCUVuc29uaXEgU291bmRzY2FwZSBWSVZPIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggb3RoZXIgU291bmRzY2FwZSBjYXJkcy4KKwlDdXJyZW50bHkgaXQncyBwb3NzaWJsZSB0byB1c2UgaXQgaW4gTGludXggb25seSB3aXRoIE9TUy9MaW51eAorCWRyaXZlcnMuCisKK0NoZWNrIC92YXIvYWRtL21lc3NhZ2VzIGFmdGVyIHJ1bm5pbmcgc3Npbml0LiBUaGUgZHJpdmVyIHByaW50cwordGhlIGJvYXJkIHZlcnNpb24gYWZ0ZXIgZG93bmxvYWRpbmcgdGhlIG1pY3JvY29kZSBmaWxlLiBUaGF0IHZlcnNpb24KK251bWJlciBtdXN0IG1hdGNoIHRoZSBudW1iZXIgaW4gdGhlIG5hbWUgb2YgdGhlIG1pY3JvY29kZSBmaWxlIChleHRlbnNpb24pLgorCitSdW5uaW5nIHNzaW5pdCB3aXRoIGEgd3JvbmcgdmVyc2lvbiBvZiB0aGUgc25kc2NhcGUuY28/IGZpbGUgaXMgbm90CitkYW5nZXJvdXMgYXMgbG9uZyBhcyB5b3UgZG9uJ3QgdHJ5IHRvIHVzZSBhIGZpbGUgY2FsbGVkIHNuZHNjYXBlLmNvZC4KK0lmIHlvdSBoYXZlIGluaXRpYWxpemVkIHRoZSBjYXJkIHVzaW5nIGEgd3JvbmcgbWljcm9jb2RlIGZpbGUgKHNvdW5kcworYXJlIHRlcnJpYmxlKSwganVzdCBtb2RpZnkgc3Npbml0LmMgdG8gdXNlIGFub3RoZXIgbWljcm9jb2RlIGZpbGUgYW5kIHRyeQorYWdhaW4uIEl0J3MgcG9zc2libGUgdG8gdXNlIGFuIGVhcmxpZXIgdmVyc2lvbiBvZiBzbmRzY2FwZS5jb1swMV0gYnV0IGl0CittYXkgc291bmQgd2VpcmQuCisKK01BRDE2IChQcm8pIGFuZCBNb3phcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWW91IG5lZWQgdG8gZW5hYmxlIGp1c3QgdGhlIE1BRDE2IC9Nb3phcnQgc3VwcG9ydCB3aGVuIGNvbmZpZ3VyaW5nCit0aGUgZHJpdmVyLiBfRG9uJ3RfIGVuYWJsZSBTQiwgTVBVNDAxIG9yIE1TUy4gSG93ZXZlciB5b3Ugd2lsbCBuZWVkIHRoZQorL2Rldi9hdWRpbywgL2Rldi9zZXF1ZW5jZXIgYW5kIE1JREkgc3VwcG9ydHMuCisKK01vemFydCBhbmQgT1BUaSA4MkM5MjggKHRoZSBvcmlnaW5hbCBNQUQxNikgY2hpcHMgZG9uJ3Qgc3VwcG9ydAorTVBVNDAxIG1vZGUgc28gZW50ZXIganVzdCAwIHdoZW4gdGhlIGNvbmZpZ3VyYXRpb24gcHJvZ3JhbSBhc2tzIHRoZQorTVBVL01JREkgSS9PIGJhc2UuIFRoZSBNQUQxNiBQcm8gKE9QVGkgODJDOTI5KSBhbmQgODJDOTMwIGNoaXBzIGhhdmUgTVBVNDAxCittb2RlLgorCitUQiBUcm9wZXogaXMgYmFzZWQgb24gdGhlIDgyQzkyOSBjaGlwLiBJdCBoYXMgdHdvIE1JREkgcG9ydHMuCitUaGUgb25lIGNvbm5lY3RlZCB0byB0aGUgTUFEMTYgY2hpcCBpcyB0aGUgc2Vjb25kIG9uZSAodGhlcmUgaXMgYSBzZWNvbmQKK01JREkgY29ubmVjdG9yL3BpbnMgc29tZXdoZXJlPz8pLiBJZiB5b3UgaGF2ZSBub3QgY29ubmVjdGVkIHRoZSBzZWNvbmQgTUlESQorcG9ydCwganVzdCBkaXNhYmxlIHRoZSBNSURJIHBvcnQgb2YgTUFEMTYuIFRoZSAnTWF1aScgY29tcGF0aWJsZSBzeW50aCBvZgorVHJvcGV6IGlzIGp1bXBlciBjb25maWd1cmFibGUgYW5kIG5vdCBjb25uZWN0ZWQgdG8gdGhlIE1BRDE2IGNoaXAgKHRoZQorTWF1aSBkcml2ZXIgY2FuIGJlIHVzZWQgd2l0aCBpdCkuCisKK1NvbWUgTUFEMTYgYmFzZWQgY2FyZHMgbWF5IGNhdXNlIGZlZWRiYWNrLCB3aGlzdGxlIG9yIHRlcnJpYmxlIG5vaXNlIGlmIHRoZQorbGluZTMgbWl4ZXIgY2hhbm5lbCBpcyB0dXJuZWQgdG9vIGhpZ2guIFRoaXMgaGFwcGVucyBhdCBsZWFzdCB3aXRoIFNodXR0bGUKK1NvdW5kIFN5c3RlbS4gQ3VycmVudCBkcml2ZXIgdmVyc2lvbnMgc2V0IHZvbHVtZSBvZiBsaW5lMyBsb3cgZW5vdWdoIHNvCit0aGlzIHNob3VsZCBub3QgYmUgYSBwcm9ibGVtLgorCitJZiB5b3UgaGF2ZSBhIE1BRDE2IGNhcmQgd2hpY2ggaGF2ZSBhbiBPUEw0IChGTSArIFdhdmUgdGFibGUpIHN5bnRoZXNpemVyCitjaGlwIChfbm90XyBhbiBPUEwzKSwgeW91IGhhdmUgdG8gYXBwZW5kIGEgbGluZSBjb250YWluaW5nICNkZWZpbmUgTUFEMTZfT1BMNAordG8gdGhlIGZpbGUgbGludXgvZHJpdmVycy9zb3VuZC9sb2NhbC5oIChhZnRlciBydW5uaW5nIG1ha2UgY29uZmlnKS4KKworTUFEMTYgY2FyZHMgaGF2aW5nIGEgQ1M0MjMxIGNvZGVjIHN1cHBvcnQgZnVsbCBkdXBsZXggbW9kZS4gVGhpcyBtb2RlCitjYW4gYmUgZW5hYmxlZCBieSBjb25maWd1cmluZyB0aGUgY2FyZCB0byB1c2UgdHdvIERNQSBjaGFubmVscy4gUG9zc2libGUKK0RNQSBjaGFubmVsIHBhaXJzIGFyZTogMCYxLCAxJjAgYW5kIDMmMC4KKworTk9URSEgQ2FyZHMgaGF2aW5nIGFuIE9QVGkgODJDOTI0LzgyQzkyNSBjaGlwIHdvcmsgd2l0aCBPU1MvRnJlZSBvbmx5IGluCitub24tUG5QIG1vZGUgKHVzdWFsbHkganVtcGVyIHNlbGVjdGFibGUpLiBUaGUgUG5QIG1vZGUgaXMgc3VwcG9ydGVkIG9ubHkKK2J5IE9TUy9MaW51eC4KKworTVYgSmF6eiAoUHJvU29uaWMpCistLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIEphenoxNiBkcml2ZXIgaXMganVzdCBhIGhhY2sgbWFkZSB0byB0aGUgU0IgUHJvIGRyaXZlci4gSG93ZXZlciBpdCB3b3JrcworZmFpcmx5IHdlbGwuIFlvdSBoYXZlIHRvIGVuYWJsZSBTQiwgU0IgUHJvIChfbm90XyBTQjE2KSBhbmQgTVBVNDAxIHN1cHBvcnRzCit3aGVuIGNvbmZpZ3VyaW5nIHRoZSBkcml2ZXIuIFRoZSBjb25maWd1cmF0aW9uIHByb2dyYW0gYXNrcyBsYXRlciBpZiB5b3UKK3dhbnQgc3VwcG9ydCBmb3IgTVYgSmF6ejE2IGJhc2VkIGNhcmRzIChhZnRlciBhc2tpbmcgU0IgYmFzZSBhZGRyZXNzKS4gQW5zd2VyCisneScgaGVyZSBhbmQgdGhlIGRyaXZlciBhc2tzIHRoZSBzZWNvbmQgKDE2IGJpdCkgRE1BIGNoYW5uZWwuCisKK1RoZSBKYXp6MTYgZHJpdmVyIHVzZXMgdGhlIE1QVTQwMSBkcml2ZXIgaW4gYSB3YXkgd2hpY2ggd2lsbCBjYXVzZQorcHJvYmxlbXMgaWYgeW91IGhhdmUgYW5vdGhlciBNUFU0MDEgY29tcGF0aWJsZSBjYXJkLiBJbiB0aGlzIGNhc2UgeW91IG11c3QKK2dpdmUgYWRkcmVzcyBvZiB0aGUgSmF6ejE2IGJhc2VkIE1QVTQwMSBpbnRlcmZhY2Ugd2hlbiB0aGUgY29uZmlnCitwcm9ncmFtIHByb21wdHMgZm9yIHRoZSBNUFU0MDEgaW5mb3JtYXRpb24uIFRoZW4gbG9vayBhdCB0aGUgTVBVNDAxCitzcGVjaWZpYyBzZWN0aW9uIGZvciBpbnN0cnVjdGlvbnMgYWJvdXQgY29uZmlndXJpbmcgbW9yZSB0aGFuIG9uZSBNUFU0MDEgY2FyZHMuCisKK0xvZ2l0ZWNoIFNvdW5kbWFuIFdhdmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVhZCB0aGUgYWJvdmUgTVYgSmF6eiBzcGVjaWZpYyBpbnN0cnVjdGlvbnMgZmlyc3QuCisKK1RoZSBMb2dpdGVjaCBTb3VuZE1hbiBXYXZlIChkb24ndCBjb25mdXNlIHRoaXMgd2l0aCB0aGUgU00xNiBvciBTTSBHYW1lcykgaXMKK2EgTVYgSmF6eiBiYXNlZCBjYXJkIHdoaWNoIGhhcyBhbiBhZGRpdGlvbmFsIE9QTDQgYmFzZWQgd2F2ZSB0YWJsZQorc3ludGhlc2l6ZXIuIFRoZSBPUEw0IGNoaXAgaXMgaGFuZGxlZCBieSBhbiBvbiBib2FyZCBtaWNyb2NvbnRyb2xsZXIKK3doaWNoIG11c3QgYmUgaW5pdGlhbGl6ZWQgZHVyaW5nIGJvb3QuIFRoZSBjb25maWcgcHJvZ3JhbSBhc2tzIGlmCit5b3UgaGF2ZSBhIFNNIFdhdmUgaW1tZWRpYXRlbHkgYWZ0ZXIgYXNraW5nIHRoZSBzZWNvbmQgRE1BIGNoYW5uZWwgb2YgamF6ejE2LgorSWYgeW91IGFuc3dlciAneScsIHRoZSBjb25maWcgcHJvZ3JhbSB3aWxsIGFzayBuYW1lIG9mIHRoZSBmaWxlIGNvbnRhaW5pbmcKK2NvZGUgdG8gYmUgbG9hZGVkIHRvIHRoZSBtaWNyb2NvbnRyb2xsZXIuIFRoZSBmaWxlIGlzIHVzdWFsbHkgY2FsbGVkCitNSURJMDAwMS5CSU4gYW5kIGl0J3MgbG9jYXRlZCBpbiB0aGUgRE9TL1dpbmRvd3MgZHJpdmVyIGRpcmVjdG9yeS4gVGhlIGZpbGUKK21heSBhbHNvIGJlIGNhbGxlZCBhcyBUU1VOQU1JLkJJTiBvciBzb21ldGhpbmcgZWxzZSAob2xkZXIgY2FyZHM/KS4KKworVGhlIE9QTDQgc3ludGggd2lsbCBiZSBpbmFjY2Vzc2libGUgd2l0aG91dCBsb2FkaW5nIHRoZSBtaWNyb2NvbnRyb2xsZXIgY29kZS4KKworQWxzbyByZW1lbWJlciB0byBlbmFibGUgU0IgTVBVNDAxIHN1cHBvcnQgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBPUEw0IG1vZGUuCisoRG9uJ3QgZW5hYmxlIHRoZSAnbm9ybWFsJyBNUFU0MDEgZGV2aWNlIGFzIHdpdGggc29tZSBlYXJsaWVyIGRyaXZlcgordmVyc2lvbnMgKHByZSAzLjUtYWxwaGE4KSkuCisKK05PVEUhCURvbid0IGFuc3dlciAneScgd2hlbiB0aGUgZHJpdmVyIGFza3MgYWJvdXQgU00gR2FtZXMgc3VwcG9ydAorCSh0aGUgbmV4dCBxdWVzdGlvbiBhZnRlciB0aGUgTUlESTAwMDEuQklOIG5hbWUpLiBIb3dldmVyCisJYW5zd2VyaW5nICd5JyBkb2Vzbid0IGNhdXNlIGRhbWFnZSB5b3VyIGNvbXB1dGVyIHNvIGRvbid0IHBhbmljLiAKKworU291bmQgR2FsYXhpZXMKKy0tLS0tLS0tLS0tLS0tCisKK1RoZXJlIGFyZSBtYW55IGRpZmZlcmVudCBTb3VuZCBHYWxheHkgY2FyZHMgbWFkZSBieSBBenRlY2guIFRoZSA4IGJpdAorb25lcyBhcmUgZnVsbHkgU0Igb3IgU0IgUHJvIGNvbXBhdGlibGUgYW5kIHRoZXJlIHNob3VsZCBiZSBubyBwcm9ibGVtcword2l0aCB0aGVtLiAKKworVGhlIG9sZGVyIDE2IGJpdCBjYXJkcyAoU0cgUHJvMTYsIFNHIE5YIFBybzE2LCBOb3ZhIGFuZCBMeXJhKSBoYXZlCithbiBFRVBST00gY2hpcCBmb3Igc3RvcmluZyB0aGUgY29uZmlndXJhdGlvbiBkYXRhLiBUaGVyZSBpcyBhIG1pY3JvY29udHJvbGxlcgord2hpY2ggaW5pdGlhbGl6ZXMgdGhlIGNhcmQgdG8gbWF0Y2ggdGhlIEVFUFJPTSBzZXR0aW5ncyB3aGVuIHRoZSBtYWNoaW5lCitpcyBwb3dlcmVkIG9uLiBUaGVzZSBjYXJkcyBhY3R1YWxseSBiZWhhdmUganVzdCBsaWtlIHRoZXkgaGF2ZSBqdW1wZXJzCitmb3IgYWxsIG9mIHRoZSBzZXR0aW5ncy4gQ29uZmlndXJlIGRyaXZlciBmb3IgTVNTLCBNUFUsIFNCL1NCIFBybyAgYW5kIE9QTDMgCitzdXBwb3J0cyB3aXRoIHRoZXNlIGNhcmRzLiAKKworVGhlcmUgYXJlIHNvbWUgbmV3IFNvdW5kIEdhbGF4aWVzIGluIHRoZSBtYXJrZXQuIEkgaGF2ZSBubyBleHBlcmllbmNlIHdpdGgKK3RoZW0gc28gcmVhZCB0aGUgY2FyZCdzIG1hbnVhbCBjYXJlZnVsbHkuCisKK0VTUyBFUzE2ODggYW5kIEVTNjg4ICdBdWRpb0RyaXZlJyBiYXNlZCBjYXJkcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1N1cHBvcnQgZm9yIHRoZXNlIHR3byBFU1MgY2hpcHMgaXMgZW1iZWRkZWQgaW4gdGhlIFNCIGRyaXZlci4KK0NvbmZpZ3VyZSB0aGVzZSBjYXJkcyBqdXN0IGxpa2UgU0IuIEVuYWJsZSB0aGUgJ1NCIE1QVTQwMSBNSURJIHBvcnQnCitpZiB5b3Ugd2FudCB0byB1c2UgTUlESSBmZWF0dXJlcyBvZiBFUzE2ODguIEVTNjg4IGRvZXNuJ3QgaGF2ZSBNUFUgbW9kZQorc28geW91IGRvbid0IG5lZWQgdG8gZW5hYmxlIGl0ICh0aGUgZHJpdmVyIHVzZXMgbm9ybWFsIFNCIE1JREkgYXV0b21hdGljYWxseQord2l0aCBFUzY4OCkuCisKK05PVEUhIEVTUyBjYXJkcyBhcmUgbm90IGNvbXBhdGlibGUgd2l0aCBNU1MvV1NTIHNvIGRvbid0IHdvcnJ5IGlmIE1TUyBzdXBwb3J0CitvZiBPU1MgZG9lc24ndCB3b3JrIHdpdGggaXQuCisKK1RoZXJlIGFyZSBzb21lIEVTMTY4OC82ODggYmFzZWQgc291bmQgY2FyZHMgYW5kIChwYXJ0aWN1bGFybHkpIG1vdGhlcmJvYXJkcword2hpY2ggdXNlIHNvZnR3YXJlIGNvbmZpZ3VyYWJsZSBJL08gcG9ydCByZWxvY2F0aW9uIGZlYXR1cmUgb2YgdGhlIGNoaXAuCitUaGlzIEVTUyBwcm9wcmlldGFyeSBmZWF0dXJlIGlzIHN1cHBvcnRlZCBvbmx5IGJ5IE9TUy9MaW51eC4KKworVGhlcmUgYXJlIEVTMTY4OCBiYXNlZCBjYXJkcyB3aGljaCB1c2UgZGlmZmVyZW50IGludGVycnVwdCBwaW4gYXNzaWdubWVudCB0aGFuCityZWNvbW1lbmRlZCBieSBFU1MgKDUsIDcsIDkvMiBhbmQgMTApLiBJbiB0aGlzIGNhc2UgYWxsIElSUXMgZG9uJ3Qgd29yay4KK0F0IGxlYXN0IGEgY2FyZCBjYWxsZWQgKFBlYXJsPykgSHlwZXJzb3VuZCAxNiBzdXBwb3J0cyBJUlEgMTUgYnV0IGl0IGRvZXNuJ3QKK3dvcmsuCisKK0VTMTg2OCBpcyBhIFBuUCBjaGlwIHdoaWNoIGlzIChzdXBwb3NlZCB0byBiZSkgY29tcGF0aWJsZSB3aXRoIEVTUzE2ODgKK3Byb2JhYmx5IHdvcmtzIHdpdGggT1NTL0ZyZWUgYWZ0ZXIgaW5pdGlhbGl6YXRpb24gdXNpbmcgaXNhcG5wdG9vbHMuCisKK1JldmVhbCBjYXJkcworLS0tLS0tLS0tLS0tCisKK1RoZXJlIGFyZSBzZXZlcmFsIGRpZmZlcmVudCBjYXJkcyBtYWRlL21hcmtldGVkIGJ5IFJldmVhbC4gU29tZSBvZiB0aGVtCithcmUgY29tcGF0aWJsZSB3aXRoIFNvdW5kU2NhcGUgYW5kIHNvbWUgdXNlIHRoZSBNQUQxNiBjaGlwLiBZb3UgbWF5IGhhdmUKK3RvIGxvb2sgYXQgdGhlIGNhcmQgYW5kIHRyeSB0byBpZGVudGlmeSBpdHMgb3JpZ2luLgorCitEaWFtb25kCistLS0tLS0tCisKK1RoZSBvbGRlc3QgKFNpZXJyYSBBcmlhIGJhc2VkKSBzb3VuZCBjYXJkcyBtYWRlIGJ5IERpYW1vbmQgYXJlIG5vdCBzdXBwb3J0ZWQKKyh0aGV5IG1heSB3b3JrIGlmIHRoZSBjYXJkIGlzIGluaXRpYWxpemVkIHVzaW5nIERPUykuIFRoZSByZWNlbnQgKExYPykKK21vZGVscyBhcmUgYmFzZWQgb24gdGhlIE1BRDE2IGNoaXAgd2hpY2ggaXMgc3VwcG9ydGVkIGJ5IHRoZSBkcml2ZXIuCisKK0F1ZGlvIEV4Y2VsIERTUDE2CistLS0tLS0tLS0tLS0tLS0tLQorCitTdXBwb3J0IGZvciB0aGlzIGNhcmQgaXMgY3VycmVudGx5IG5vdCBmdW5jdGlvbmFsLiBBIG5ldyBkcml2ZXIgZm9yIGl0CitzaG91bGQgYmUgYXZhaWxhYmxlIGxhdGVyIHRoaXMgeWVhci4KKworUENNQ0lBIGNhcmRzCistLS0tLS0tLS0tLS0KKworU29ycnksIGNhbid0IGhlbHAuIFNvbWUgY2FyZHMgbWF5IHdvcmsgYW5kIHNvbWUgZG9uJ3QuCisKK1RJIFRNNDAwME0gbm90ZWJvb2tzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGVzZSBjb21wdXRlcnMgaGF2ZSBhIGJ1aWx0IGluIHNvdW5kIHN1cHBvcnQgYmFzZWQgb24gdGhlIEphenogY2hpcHNldC4KK0xvb2sgYXQgdGhlIGluc3RydWN0aW9ucyBmb3IgTVYgSmF6eiAoYWJvdmUpLiBJdCdzIGFsc28gaW1wb3J0YW50IHRvIG5vdGUKK3RoYXQgdGhlcmUgaXMgc29tZXRoaW5nIHdyb25nIHdpdGggdGhlIG1vdXNlIHBvcnQgYW5kIHNvdW5kIGF0IGxlYXN0IG9uCitzb21lIFRNIG1vZGVscy4gRG9uJ3QgZW5hYmxlIHRoZSAiQyZUIDgyQzcxMCBtb3VzZSBwb3J0IHN1cHBvcnQiIHdoZW4KK2NvbmZpZ3VyaW5nIExpbnV4LiBIYXZpbmcgaXQgZW5hYmxlZCBpcyBsaWtlbHkgdG8gY2F1c2UgbXlzdGVyaW91cyBwcm9ibGVtcworYW5kIGtlcm5lbCBmYWlsdXJlcyB3aGVuIHNvdW5kIGlzIHVzZWQuCisKK21pcm9TT1VORAorLS0tLS0tLS0tCisKK1RoZSBtaXJvU09VTkQgUENNMS1wcm8sIFBDTTEyIGFuZCBQQ00yMCByYWRpbyBoYXMgYmVlbiB1c2VkCitzdWNjZXNzZnVsbHkuIFRoZXNlIGNhcmRzIGFyZSBiYXNlZCBvbiB0aGUgTUFEMTYsIE9QTDQsIGFuZCBDUzQyMzFBIGNoaXBzCithbmQgZXZlcnl0aGluZyBzYWlkIGluIHRoZSBzZWN0aW9uIGFib3V0IE1BRDE2IGNhcmRzIGFwcGxpZXMgaGVyZSwKK3Rvby4gVGhlIG9ubHkgbWFqb3IgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBQQ014eCBhbmQgb3RoZXIgTUFEMTYgY2FyZHMKK2lzIHRoYXQgaW5zdGVhZCBvZiB0aGUgbWl4ZXIgaW4gdGhlIENTNDIzMSBjb2RlYyBhIHNlcGFyYXRlIG1peGVyCitjb250cm9sbGVkIGJ5IGFuIG9uLWJvYXJkIDgwQzMyIG1pY3JvY29udHJvbGxlciBpcyB1c2VkLiBDb250cm9sIG9mCit0aGUgbWl4ZXIgdGFrZXMgcGxhY2UgdmlhIHRoZSBBQ0kgKG1pcm8ncyBhdWRpbyBjb250cm9sIGludGVyZmFjZSkKK3Byb3RvY29sIHRoYXQgaXMgaW1wbGVtZW50ZWQgaW4gYSBzZXBhcmF0ZSBsb3dsZXZlbCBkcml2ZXIuIE1ha2Ugc3VyZQoreW91IGNvbXBpbGUgdGhpcyBBQ0kgZHJpdmVyIHRvZ2V0aGVyIHdpdGggdGhlIG5vcm1hbCBNQUQxNiBzdXBwb3J0Cit3aGVuIHlvdSB1c2UgYSBtaXJvU09VTkQgUENNeHggY2FyZC4gVGhlIEFDSSBtaXhlciBpcyBjb250cm9sbGVkIGJ5CisvZGV2L21peGVyIGFuZCB0aGUgQ1M0MjMxIG1peGVyIGJ5IC9kZXYvbWl4ZXIxIChkZXBlbmRzIG9uIGxvYWQKK3RpbWUpLiBPbmx5IGluIHNwZWNpYWwgY2FzZXMgeW91IHdhbnQgdG8gY2hhbmdlIHNvbWV0aGluZyByZWd1bGFybHkgb24KK3RoZSBDUzQyMzEgbWl4ZXIuCisKK1RoZSBtaXJvU09VTkQgUENNMTIgYW5kIFBDTTIwIHJhZGlvIGlzIGNhcGFibGUgb2YgZnVsbCBkdXBsZXgKK29wZXJhdGlvbiAoc2ltdWx0YW5lb3VzIFBDTSByZXBsYXkgYW5kIHJlY29yZGluZyksIHdoaWNoIGFsbG93cyB5b3UgdG8KK2ltcGxlbWVudCBuaWNlIHJlYWwtdGltZSBzaWduYWwgcHJvY2Vzc2luZyBhdWRpbyBlZmZlY3Qgc29mdHdhcmUgYW5kCituZXR3b3JrIHRlbGVwaG9uZXMuIFRoZSBBQ0kgbWl4ZXIgaGFzIHRvIGJlIHN3aXRjaGVkIGludG8gdGhlICJzb2xvIgorbW9kZSBmb3IgZHVwbGV4IG9wZXJhdGlvbiBpbiBvcmRlciB0byBhdm9pZCBmZWVkYmFjayBjYXVzZWQgYnkgdGhlCittaXhlciAoaW5wdXQgaGVhcnMgb3V0cHV0IHNpZ25hbCkuIFlvdSBjYW4gZGUtL2FjdGl2YXRlIHRoaXMgbW9kZQordGhyb3VnaCB0b2dnbGluZyB0aGUgcmVjb3JkIGJ1dHRvbiBmb3IgdGhlIHdhdmUgY29udHJvbGxlciB3aXRoIGFuCitPU1MtbWl4ZXIuCisKK1RoZSBQQ00yMCBjb250YWlucyBhIHJhZGlvIHR1bmVyLCB3aGljaCBpcyBhbHNvIGNvbnRyb2xsZWQgYnkKK0FDSS4gVGhpcyByYWRpbyB0dW5lciBpcyBzdXBwb3J0ZWQgYnkgdGhlIEFDSSBkcml2ZXIgdG9nZXRoZXIgd2l0aCB0aGUKK21pcm9wY20yMC5vIG1vZHVsZS4gQWxzbyB0aGUgNy1iYW5kIGVxdWFsaXplciBpcyBpbnRlZ3JhdGVkCisobGltaXRlZCBieSB0aGUgT1NTLWRlc2lnbikuIERldmVsb3BtZW50IGhhcyBzdGFydGVkIGFuZCBtYXliZQorZmluaXNoZWQgZm9yIHRoZSBSRFMgZGVjb2RlciBvbiB0aGlzIGNhcmQsIHRvby4gWW91IHdpbGwgYmUgYWJsZSB0bworcmVhZCBSYWRpb1RleHQsIHRoZSBQcm9ncmFtbWUgU2VydmljZSBuYW1lLCBQcm9ncmFtbWUgVFlwZSBhbmQKK290aGVycy4gRXZlbiB0aGUgdjRsIHJhZGlvIG1vZHVsZSBiZW5lZml0cyBmcm9tIGl0IHdpdGggYSByZWZpbmVkCitzdHJlbmd0aCB2YWx1ZS4gU2VlIGFjaS5bY2hdIGFuZCBtaXJvcGNtMjAqLltjaF0gZm9yIG1vcmUgZGV0YWlscy4KKworVGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgaGF2ZSB3b3JrZWQgZmluZSBmb3IgdGhlIFBDTTEyCitpbiBNYXJrdXMgS3VobidzIHN5c3RlbSwgbWFueSBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCB3b3JrLCB0b286CitDT05GSUdfTUFEMTZfQkFTRT0weDUzMCwgQ09ORklHX01BRDE2X0lSUT0xMSwgQ09ORklHX01BRDE2X0RNQT0zLCAKK0NPTkZJR19NQUQxNl9ETUEyPTAsIENPTkZJR19NQUQxNl9NUFVfQkFTRT0weDMzMCwgQ09ORklHX01BRDE2X01QVV9JUlE9MTAsCitEU1BfQlVGRlNJWkU9NjU1MzYsIFNFTEVDVEVEX1NPVU5EX09QVElPTlM9MHgwMDI4MTAwMC4KKworQmFzIHZhbiBkZXIgTGluZGVuIGlzIHVzaW5nIGhpcyBQQ00xLXBybyB3aXRoIGEgY29uZmlndXJhdGlvbiB0aGF0CitkaWZmZXJzIGluOiBDT05GSUdfTUFEMTZfSVJRPTcsIENPTkZJR19NQUQxNl9ETUE9MSwgQ09ORklHX01BRDE2X01QVV9JUlE9OQorCitDb21wYXEgRGVza3BybyBYTAorLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGJ1aWx0aW4gc291bmQgaGFyZHdhcmUgb2YgQ29tcGFxIERlc2twcm8gWEwgaXMgbm93IHN1cHBvcnRlZC4gCitZb3UgbmVlZCB0byBjb25maWd1cmUgdGhlIGRyaXZlciB3aXRoIE1TUyBhbmQgT1BMMyBzdXBwb3J0cyBlbmFibGVkLgorSW4gYWRkaXRpb24geW91IG5lZWQgdG8gbWFudWFsbHkgZWRpdCBsaW51eC9kcml2ZXJzL3NvdW5kL2xvY2FsLmggYW5kCit0byBhZGQgYSBsaW5lIGNvbnRhaW5pbmcgIiNkZWZpbmUgREVTS1BST1hMIiBpZiB5b3UgdXNlZCAKK21ha2UgbWVudWNvbmZpZy94Y29uZmlnLgorCitPdGhlcnM/CistLS0tLS0tCisKK1NpbmNlIHRoZXJlIGFyZSBzbyBtYW55IGRpZmZlcmVudCBzb3VuZCBjYXJkcywgaXQncyBsaWtlbHkgdGhhdCBJIGhhdmUgCitmb3Jnb3R0ZW4gdG8gbWVudGlvbiBtYW55IG9mIHRoZW0uIFBsZWFzZSBpbmZvcm0gbWUgaWYgeW91IGtub3cgeWV0IGFub3RoZXIKK2NhcmQgd2hpY2ggd29ya3Mgd2l0aCBMaW51eCwgcGxlYXNlIGluZm9ybSBtZSAob3IgaXMgYW55Ym9keSBlbHNlCit3aWxsaW5nIHRvIG1haW50YWluIGEgZGF0YWJhc2Ugb2Ygc3VwcG9ydGVkIGNhcmRzIChqdXN0IGxpa2UgaW4gWEY4Nik/KS4KKworQ2FyZHMgbm90IHN1cHBvcnRlZCB5ZXQKKz09PT09PT09PT09PT09PT09PT09PT09CisKK1BsZWFzZSBjaGVjayB0aGUgdmVyc2lvbiBvZiBzb3VuZCBkcml2ZXIgeW91IGFyZSB1c2luZyBiZWZvcmUgCitjb21wbGFpbmluZyB0aGF0IHlvdXIgY2FyZCBpcyBub3Qgc3VwcG9ydGVkLiBJdCdzIHBvc3NpYmxlIHlvdSBhcmUgCit1c2luZyBhIGRyaXZlciB2ZXJzaW9uIHdoaWNoIHdhcyByZWxlYXNlZCBtb250aHMgYmVmb3JlIHlvdXIgY2FyZCB3YXMKK2ludHJvZHVjZWQuCisKK0ZpcnN0IG9mIGFsbCwgdGhlcmUgaXMgYW4gZWFzeSB3YXkgdG8gbWFrZSBtb3N0IHNvdW5kIGNhcmRzIHdvcmsgd2l0aCBMaW51eC4KK0p1c3QgdXNlIHRoZSBET1MgYmFzZWQgZHJpdmVyIHRvIGluaXRpYWxpemUgdGhlIGNhcmQgdG8gYSBrbm93biBzdGF0ZSwgdGhlbiB1c2UKK2xvYWRsaW4uZXhlIHRvIGJvb3QgTGludXguIElmIExpbnV4IGlzIGNvbmZpZ3VyZWQgdG8gdXNlIHRoZSBzYW1lIEkvTywgSVJRIGFuZAorRE1BIG51bWJlcnMgYXMgRE9TLCB0aGUgY2FyZCBjb3VsZCB3b3JrLgorKGN0cmwtYWx0LWRlbCBjYW4gYmUgdXNlZCBpbiBwbGFjZSBvZiBsb2FkbGluLmV4ZSBidXQgaXQgZG9lc24ndCB3b3JrIHdpdGgKK25ldyBtb3RoZXJib2FyZHMpLiBUaGlzIG1ldGhvZCB3b3JrcyBhbHNvIHdpdGggYWxsL21vc3QgUG5QIHNvdW5kIGNhcmRzLgorCitEb24ndCBnZXQgZm9vbGVkIHdpdGggU0IgY29tcGF0aWJpbGl0eS4gTW9zdCBjYXJkcyBhcmUgY29tcGF0aWJsZSB3aXRoCitTQiBidXQgdGhhdCBtYXkgcmVxdWlyZSBhIFRTUiB3aGljaCBpcyBub3QgcG9zc2libGUgd2l0aCBMaW51eC4gSWYKK3RoZSBjYXJkIGlzIGNvbXBhdGlibGUgd2l0aCBNU1MsIGl0J3MgYSBiZXR0ZXIgY2hvaWNlLiBTb21lIGNhcmRzCitkb24ndCB3b3JrIGluIHRoZSBTQiBhbmQgTVNTIG1vZGVzIGF0IHRoZSBzYW1lIHRpbWUuCisKK1RoZW4gdGhlcmUgYXJlIGNhcmRzIHdoaWNoIGFyZSBubyBsb25nZXIgbWFudWZhY3R1cmVkIGFuZC9vciB3aGljaAorYXJlIHJlbGF0aXZlbHkgcmFyZWx5IHVzZWQgKHN1Y2ggYXMgdGhlIDggYml0IFByb0F1ZGlvU3BlY3RydW0KK21vZGVscykuIEl0J3MgZXh0cmVtZWx5IHVubGlrZWx5IHRoYXQgc3VjaCBjYXJkcyBldmVyIGdldCBzdXBwb3J0ZWQuCitBZGRpbmcgc3VwcG9ydCBmb3IgYSBuZXcgY2FyZCByZXF1aXJlcyBtdWNoIHdvcmsgYW5kIGluY3JlYXNlcyB0aW1lCityZXF1aXJlZCBpbiBtYWludGFpbmluZyB0aGUgZHJpdmVyIChzb21lIGNoYW5nZXMgbmVlZCB0byBiZSBkb25lCit0byBhbGwgbG93IGxldmVsIGRyaXZlcnMgYW5kIGJlIHRlc3RlZCB0b28sIG1heWJlIHdpdGggbXVsdGlwbGUKK29wZXJhdGluZyBzeXN0ZW1zKS4gRm9yIHRoaXMgcmVhc29uIEkgaGF2ZSBtYWRlIGEgZGVjaXNpb24gdG8gbm90IHN1cHBvcnQKK29ic29sZXRlIGNhcmRzLiBJdCdzIHBvc3NpYmxlIHRoYXQgc29tZW9uZSBlbHNlIG1ha2VzIGEgc2VwYXJhdGVseSAKK2Rpc3RyaWJ1dGVkIGRyaXZlciAoZGlmZnMpIGZvciB0aGUgY2FyZC4gCisKK1dyaXRpbmcgYSBkcml2ZXIgZm9yIGEgbmV3IGNhcmQgaXMgbm90IHBvc3NpYmxlIGlmIHRoZXJlIGFyZSBubyAKK3Byb2dyYW1taW5nIGluZm9ybWF0aW9uIGF2YWlsYWJsZSBhYm91dCB0aGUgY2FyZC4gSWYgeW91IGRvbid0CitmaW5kIHlvdXIgbmV3IGNhcmQgZnJvbSB0aGlzIGZpbGUsIGxvb2sgZnJvbSB0aGUgaG9tZSBwYWdlIAorKGh0dHA6Ly93d3cub3BlbnNvdW5kLmNvbS9vc3NmcmVlKS4gVGhlbiBwbGVhc2UgY29udGFjdAorbWFudWZhY3R1cmVyIG9mIHRoZSBjYXJkIGFuZCBhc2sgaWYgdGhleSBoYXZlIChvciBhcmUgd2lsbGluZyB0bykKK3JlbGVhc2VkIHRlY2huaWNhbCBkZXRhaWxzIG9mIHRoZSBjYXJkLiBEbyB0aGlzIGJlZm9yZSBjb250YWN0aW5nIG1lLiBJCitjYW4gb25seSBhbnN3ZXIgJ25vJyBpZiB0aGVyZSBhcmUgbm8gcHJvZ3JhbW1pbmcgaW5mb3JtYXRpb24gYXZhaWxhYmxlLgorCitJIGhhdmUgbWFkZSBkZWNpc2lvbiB0byBub3QgYWNjZXB0IGNvZGUgYmFzZWQgb24gcmV2ZXJzZSBlbmdpbmVlcmluZwordG8gdGhlIGRyaXZlci4gVGhlcmUgYXJlIHRocmVlIG1haW4gcmVhc29uczogRmlyc3QgSSBkb24ndCB3YW50IHRvIGJyZWFrCityZWxhdGlvbnNoaXBzIHRvIHNvdW5kIGNhcmQgbWFudWZhY3R1cmVycy4gVGhlIHNlY29uZCByZWFzb24gaXMgdGhhdAorbWFpbnRhaW5pbmcgYW5kIHN1cHBvcnRpbmcgYSBkcml2ZXIgd2l0aG91dCBhbnkgc3BlY3Mgd2lsbCBiZSBhIHBhaW4uCitUaGUgdGhpcmQgcmVhc29uIGlzIHRoYXQgY29tcGFuaWVzIGhhdmUgZnJlZWRvbSB0byByZWZ1c2Ugc2VsbGluZyB0aGVpcgorcHJvZHVjdHMgdG8gb3RoZXIgdGhhbiBXaW5kb3dzIHVzZXJzLgorCitTb21lIGNvbXBhbmllcyBkb24ndCBnaXZlIGxvdyBsZXZlbCB0ZWNobmljYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlaXIKK3Byb2R1Y3RzIHRvIHB1YmxpYyBvciBhdCBsZWFzdCB0aGVpciByZXF1aXJlIHNpZ25pbmcgYSBOREEuIEl0J3Mgbm90Citwb3NzaWJsZSB0byBpbXBsZW1lbnQgYSBmcmVld2FyZSBkcml2ZXIgZm9yIHRoZW0uIEhvd2V2ZXIgaXQncyBwb3NzaWJsZQordGhhdCBzdXBwb3J0IGZvciBzdWNoIGNhcmRzIGJlY29tZSBhdmFpbGFibGUgaW4gdGhlIGNvbW1lcmNpYWwgdmVyc2lvbgorb2YgdGhpcyBkcml2ZXIgKHNlZSBodHRwOi8vd3d3LjRGcm9udC10ZWNoLmNvbS9vc3MuaHRtbCBmb3IgbW9yZSBpbmZvKS4KKworVGhlcmUgYXJlIHNvbWUgY29tbW9uIGF1ZGlvIGNoaXBzZXRzIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LiBGb3IgZXhhbXBsZQorU2llcnJhIEFyaWEgYW5kIElCTSBNd2F2ZS4gSXQncyBwb3NzaWJsZSB0aGF0IHRoZXNlIGFyY2hpdGVjdHVyZXMKK2dldCBzb21lIHN1cHBvcnQgaW4gZnV0dXJlIGJ1dCBJIGNhbid0IG1ha2UgYW55IHByb21pc2VzLiBKdXN0IGxvb2sKK2F0IHRoZSBob21lIHBhZ2UgKGh0dHA6Ly93d3cub3BlbnNvdW5kLmNvbS9vc3NmcmVlLykKK2ZvciBsYXRlc3QgaW5mby4KKworSW5mb3JtYXRpb24gYWJvdXQgdW5zdXBwb3J0ZWQgc291bmQgY2FyZHMgYW5kIGNoaXBzZXRzIGlzIHdlbGNvbWUgYXMgd2VsbAorYXMgZnJlZSBjb3BpZXMgb2Ygc291bmQgY2FyZHMsIFNES3MgYW5kIG9wZXJhdGluZyBzeXN0ZW1zLgorCitJZiB5b3UgaGF2ZSBhbnkgY29ycmVjdGlvbnMgYW5kL29yIGNvbW1lbnRzLCBwbGVhc2UgY29udGFjdCBtZS4KKworSGFubnUgU2F2b2xhaW5lbgoraGFubnVAb3BlbnNvdW5kLmNvbQorCitob21lIHBhZ2Ugb2YgT1NTL0ZyZWU6IGh0dHA6Ly93d3cub3BlbnNvdW5kLmNvbS9vc3NmcmVlCisKK2hvbWUgcGFnZSBvZiBjb21tZXJjaWFsIE9TUworKE9wZW4gU291bmQgU3lzdGVtKSBkcml2ZXJzOiBodHRwOi8vd3d3Lm9wZW5zb3VuZC5jb20vb3NzLmh0bWwKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvb3NzL1JFQURNRS5tb2R1bGVzIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvUkVBRE1FLm1vZHVsZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RjMDM5NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvb3NzL1JFQURNRS5tb2R1bGVzCkBAIC0wLDAgKzEsMTA2IEBACitCdWlsZGluZyBhIG1vZHVsYXIgc291bmQgZHJpdmVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgIFRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gaXMgY3VycmVudCBhcyBvZiBsaW51eC0yLjEuODUuIENoZWNrIHRoZSBvdGhlcgorcmVhZG1lIGZpbGVzLCBlc3BlY2lhbGx5IFJFQURNRS5PU1MsIGZvciBpbmZvcm1hdGlvbiBub3Qgc3BlY2lmaWMgdG8KK21ha2luZyBzb3VuZCBtb2R1bGFyLgorCisgIEZpcnN0LCBjb25maWd1cmUgeW91ciBrZXJuZWwuIFRoaXMgaXMgYW4gaWRlYSBvZiB3aGF0IHlvdSBzaG91bGQgYmUKK3NldHRpbmcgaW4gdGhlIHNvdW5kIHNlY3Rpb246CisKKzxNPiBTb3VuZCBjYXJkIHN1cHBvcnQgCisKKzxNPiAxMDAlIFNvdW5kIEJsYXN0ZXIgY29tcGF0aWJsZXMgKFNCMTYvMzIvNjQsIEVTUywgSmF6ejE2KSBzdXBwb3J0IAorCisgIEkgaGF2ZSBTb3VuZEJsYXN0ZXIuIFNlbGVjdCB5b3VyIGNhcmQgZnJvbSB0aGUgbGlzdC4KKworPE0+IEdlbmVyaWMgT1BMMi9PUEwzIEZNIHN5bnRoZXNpemVyIHN1cHBvcnQgCis8TT4gRk0gc3ludGhlc2l6ZXIgKFlNMzgxMi9PUEwtMykgc3VwcG9ydCAKKworICBJZiB5b3UgZG9uJ3Qgc2V0IHRoZXNlLCB5b3Ugd2lsbCBwcm9iYWJseSBmaW5kIHlvdSBjYW4gcGxheSAud2F2IGZpbGVzCitidXQgbm90IC5taWRpLiBBcyB0aGUgaGVscCBmb3IgdGhlbSBzYXlzLCBzZXQgdGhlbSB1bmxlc3MgeW91IGtub3cgeW91cgorY2FyZCBkb2VzIG5vdCB1c2Ugb25lIG9mIHRoZXNlIGNoaXBzIGZvciBGTSBzdXBwb3J0LgorCisgIE9uY2UgeW91IGFyZSBjb25maWd1cmVkLCBtYWtlIHpsaWxvLCBtb2R1bGVzLCBtb2R1bGVzX2luc3RhbGw7IHJlYm9vdC4KK05vdGUgdGhhdCBpdCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IG9yIHBvc3NpYmxlIHRvIGNvbmZpZ3VyZSBzb3VuZCBpbiB0aGUKK2RyaXZlcnMvc291bmQgZGlyLiBOb3cgb25lIHNpbXBseSBjb25maWd1cmVzIGFuZCBtYWtlcyBvbmUncyBrZXJuZWwgYW5kCittb2R1bGVzIGluIHRoZSB1c3VhbCB3YXkuCisKKyBUaGVuLCBhZGQgdG8geW91ciAvZXRjL21vZHByb2JlLmQvb3NzLmNvbmYgc29tZXRoaW5nIGxpa2U6CisKK2FsaWFzIGNoYXItbWFqb3ItMTQtKiBzYgoraW5zdGFsbCBzYiAvc2Jpbi9tb2Rwcm9iZSAtaSBzYiAmJiAvc2Jpbi9tb2Rwcm9iZSBhZGxpYl9jYXJkCitvcHRpb25zIHNiIGlvPTB4MjIwIGlycT03IGRtYT0xIGRtYTE2PTUgbXB1X2lvPTB4MzMwCitvcHRpb25zIGFkbGliX2NhcmQgaW89MHgzODggICAgICMgRk0gc3ludGhlc2l6ZXIKKworIEFsdGVybmF0aXZlbHksIGlmIHlvdSBoYXZlIGNvbXBpbGVkIGluIGtlcm5lbCBsZXZlbCBJU0FQblAgc3VwcG9ydDoKKworYWxpYXMgY2hhci1tYWpvci0xNCBzYgorc29mdGRlcCBzYiBwb3N0OiBhZGxpYl9jYXJkCitvcHRpb25zIGFkbGliX2NhcmQgaW89MHgzODgKKworICBUaGUgZWZmZWN0IG9mIHRoaXMgaXMgdGhhdCB0aGUgc291bmQgZHJpdmVyIGFuZCBhbGwgbmVjZXNzYXJ5IGJpdHMgYW5kCitwaWVjZXMgYXV0b2xvYWQgb24gZGVtYW5kLCBhc3N1bWluZyB5b3UgdXNlIGtlcm5lbGQgKGEgc291bmQgY2hvaWNlKSBhbmQKK2F1dG9jbGVhbiB3aGVuIG5vdCBpbiB1c2UuIEFsc28sIG9wdGlvbnMgZm9yIHRoZSBkZXZpY2UgZHJpdmVycyBhcmUKK3NldC4gVGhleSB3aWxsIG5vdCB3b3JrIHdpdGhvdXQgdGhlbS4gQ2hhbmdlIGFzIGFwcHJvcHJpYXRlIGZvciB5b3VyIGNhcmQuCitJZiB5b3UgYXJlIG5vdCB5ZXQgdXNpbmcgdGhlIHZlcnkgY29vbCBrZXJuZWxkLCB5b3Ugd2lsbCBoYXZlIHRvICJtb2Rwcm9iZQorLWsgc2IiIHlvdXJzZWxmIHRvIGdldCB0aGluZ3MgZ29pbmcuIEV2ZW50dWFsbHkgdGhpbmdzIG1heSBiZSBmaXhlZCBzbwordGhhdCB0aGlzIGtsdWRnZXJ5IGlzIG5vdCBuZWNlc3Nhcnk7IGZvciB0aGUgdGltZSBiZWluZywgaXQgc2VlbXMgdG8gd29yaword2VsbC4KKworICBSZXBsYWNlICdzYicgd2l0aCB0aGUgZHJpdmVyIGZvciB5b3VyIGNhcmQsIGFuZCBnaXZlIGl0IHRoZSByaWdodAorb3B0aW9ucy4gVG8gZmluZCB0aGUgZmlsZW5hbWUgb2YgdGhlIGRyaXZlciwgbG9vayBpbgorL2xpYi9tb2R1bGVzLzxrZXJuZWwtdmVyc2lvbj4vbWlzYy4gTWluZSBsb29rcyBsaWtlOgorCithZGxpYl9jYXJkLm8gIyBUaGlzIGlzIHRoZSBnZW5lcmljIE9QTHggZHJpdmVyCitvcGwzLm8gIyBUaGUgT1BMMyBkcml2ZXIKK3NiLm8gIyA8PFRoZSBTb3VuZEJsYXN0ZXIgZHJpdmVyLiBZb3VycyBtYXkgZGlmZmVyLj4+Citzb3VuZC5vICMgVGhlIHNvdW5kIGRyaXZlcgordWFydDQwMS5vICMgVXNlZCBieSBzYiwgbWF5YmUgb3RoZXIgY2FyZHMKKworIFdoaWNoZXZlciBjYXJkIHlvdSBoYXZlLCB0cnkgZmVlZGluZyBpdCB0aGUgb3B0aW9ucyB0aGF0IHdvdWxkIGJlIHRoZQorZGVmYXVsdCBpZiB5b3Ugd2VyZSBtYWtpbmcgdGhlIGRyaXZlciB3aXJlZCwgbm90IGFzIG1vZHVsZXMuIFlvdSBjYW4KK2xvb2sgYXQgZnVuY3Rpb24gcmVmZXJyZWQgdG8gYnkgbW9kdWxlX2luaXQoKSBmb3IgdGhlIGNhcmQgdG8gc2VlIHdoYXQKK2FyZ3MgYXJlIGV4cGVjdGVkLgorCisgTm90ZSB0aGF0IGF0IHByZXNlbnQgdGhlcmUgaXMgbm8gd2F5IHRvIGNvbmZpZ3VyZSB0aGUgaW8sIGlycSBhbmQgb3RoZXIKK3BhcmFtZXRlcnMgZm9yIHRoZSBtb2R1bGFyIGRyaXZlcnMgYXMgb25lIGRvZXMgZm9yIHRoZSB3aXJlZCBkcml2ZXJzLi4gT25lCituZWVkcyB0byBwYXNzIHRoZSBtb2R1bGVzIHRoZSBuZWNlc3NhcnkgcGFyYW1ldGVycyBhcyBhcmd1bWVudHMsIGVpdGhlcgord2l0aCAvZXRjL21vZHByb2JlLmQvKi5jb25mIG9yIHdpdGggY29tbWFuZC1saW5lIGFyZ3MgdG8gbW9kcHJvYmUsIGUuZy4KKworbW9kcHJvYmUgc2IgaW89MHgyMjAgaXJxPTcgZG1hPTEgZG1hMTY9NSBtcHVfaW89MHgzMzAKK21vZHByb2JlIGFkbGliX2NhcmQgaW89MHgzODgKKworIHJlY29tbWVuZCB1c2luZyAvZXRjL21vZHByb2JlLmQvKi5jb25mLgorCitQZXJzaXN0ZW50IERNQSBCdWZmZXJzOgorCitUaGUgc291bmQgbW9kdWxlcyBub3JtYWxseSBhbGxvY2F0ZSBETUEgYnVmZmVycyBkdXJpbmcgb3BlbigpIGFuZAorZGVhbGxvY2F0ZSB0aGVtIGR1cmluZyBjbG9zZSgpLiBMaW51eCBjYW4gb2Z0ZW4gaGF2ZSBwcm9ibGVtcyBhbGxvY2F0aW5nCitETUEgYnVmZmVycyBmb3IgSVNBIGNhcmRzIG9uIG1hY2hpbmVzIHdpdGggbW9yZSB0aGFuIDE2TUIgUkFNLiBUaGlzIGlzCitiZWNhdXNlIElTQSBETUEgYnVmZmVycyBtdXN0IGV4aXN0IGJlbG93IHRoZSAxNk1CIGJvdW5kYXJ5IGFuZCBpdCBpcyBxdWl0ZQorcG9zc2libGUgdGhhdCB3ZSBjYW4ndCBmaW5kIGEgbGFyZ2UgZW5vdWdoIGZyZWUgYmxvY2sgaW4gdGhpcyByZWdpb24gYWZ0ZXIKK3RoZSBtYWNoaW5lIGhhcyBiZWVuIHJ1bm5pbmcgZm9yIGFueSBhbW91bnQgb2YgdGltZS4gVGhlIHdheSB0byBhdm9pZCB0aGlzCitwcm9ibGVtIGlzIHRvIGFsbG9jYXRlIHRoZSBETUEgYnVmZmVycyBkdXJpbmcgbW9kdWxlIGxvYWQgYW5kIGRlYWxsb2NhdGUKK3RoZW0gd2hlbiB0aGUgbW9kdWxlIGlzIHVubG9hZGVkLiBGb3IgdGhpcyB0byBiZSBlZmZlY3RpdmUgd2UgbmVlZCB0byBsb2FkCit0aGUgc291bmQgbW9kdWxlcyByaWdodCBhZnRlciB0aGUga2VybmVsIGJvb3RzLCBlaXRoZXIgbWFudWFsbHkgb3IgYnkgYW4KK2luaXQgc2NyaXB0LCBhbmQga2VlcCB0aGVtIGFyb3VuZCB1bnRpbCB3ZSBzaHV0IGRvd24uIFRoaXMgaXMgYSBsaXR0bGUKK3dhc3RlZnVsIG9mIFJBTSwgYnV0IGl0IGd1YXJhbnRlZXMgdGhhdCBzb3VuZCBhbHdheXMgd29ya3MuCisKK1RvIG1ha2UgdGhlIHNvdW5kIGRyaXZlciB1c2UgcGVyc2lzdGVudCBETUEgYnVmZmVycyB3ZSBuZWVkIHRvIHBhc3MgdGhlCitzb3VuZC5vIG1vZHVsZSBhICJkbWFidWY9MSIgY29tbWFuZC1saW5lIGFyZ3VtZW50LiBUaGlzIGlzIG5vcm1hbGx5IGRvbmUKK2luIC9ldGMvbW9kcHJvYmUuZC8qLmNvbmYgZmlsZXMgbGlrZSBzbzoKKworb3B0aW9ucyBzb3VuZAkJZG1hYnVmPTEKKworSWYgeW91IGhhdmUgMTZNQiBvciBsZXNzIFJBTSBvciBhIFBDSSBzb3VuZCBjYXJkLCB0aGlzIGlzIHdhc3RlZnVsIGFuZAordW5uZWNlc3NhcnkuIEl0IGlzIHBvc3NpYmxlIHRoYXQgbWFjaGluZSB3aXRoIDE2TUIgb3IgbGVzcyBSQU0gd2lsbCBmaW5kCit0aGlzIG9wdGlvbiB1c2VmdWwsIGJ1dCBpZiB5b3VyIG1hY2hpbmUgaXMgc28gbWVtb3J5LXN0YXJ2ZWQgdGhhdCBpdAorY2Fubm90IGZpbmQgYSA2NEsgYmxvY2sgZnJlZSwgeW91IHdpbGwgYmUgd2FzdGluZyBldmVuIG1vcmUgUkFNIGJ5IGtlZXBpbmcKK3RoZSBzb3VuZCBtb2R1bGVzIGxvYWRlZCBhbmQgdGhlIERNQSBidWZmZXJzIGFsbG9jYXRlZCB3aGVuIHRoZXkgYXJlIG5vdAorbmVlZGVkLiBUaGUgcHJvcGVyIHNvbHV0aW9uIGlzIHRvIHVwZ3JhZGUgeW91ciBSQU0uIEJ1dCB5b3UgZG8gYWxzbyBoYXZlCit0aGlzIGltcHJvcGVyIHNvbHV0aW9uIGFzIHdlbGwuIFVzZSBpdCB3aXNlbHkuCisKKyAgSSdtIGFmcmFpZCBJIGtub3cgbm90aGluZyBhYm91dCBhbnl0aGluZyBidXQgbXkgc2V0dXAsIGJlaW5nIG1vcmUgb2YgYQordGV4dC1tb2RlIGd1eSBhbnl3YXkuIElmIHlvdSBoYXZlIG9wdGlvbnMgZm9yIG90aGVyIGNhcmRzIG9yIG90aGVyIGhlbHBmdWwKK2hpbnRzLCBzZW5kIHRoZW0gdG8gbWUsIEppbSBCcmF5LCBqYkBhczIyMC5vcmcsIGh0dHA6Ly9hczIyMC5vcmcvamIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9SRUFETUUueW1mc2IgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9SRUFETUUueW1mc2IKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjZiNzc5MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvb3NzL1JFQURNRS55bWZzYgpAQCAtMCwwICsxLDEwNyBAQAorTGVnYWN5IGF1ZGlvIGRyaXZlciBmb3IgWU1GN3h4IFBDSSBjYXJkcy4KKworCitGSVJTVCBPRiBBTEwKKz09PT09PT09PT09PQorCisgIFRoaXMgY29kZSByZWZlcmVuY2VzIFlBTUFIQSdzIHNhbXBsZSBjb2RlcyBhbmQgZGF0YSBzaGVldHMuCisgIEkgcmVzcGVjdCBhbmQgdGhhbmsgZm9yIGFsbCBwZW9wbGUgdGhleSBtYWRlIG9wZW4gdGhlIGluZm9ybWF0aW9uCisgIGFib3V0IFlNRjd4eCBjYXJkcy4KKworICBBbmQgdGhpcyBjb2RlcyBoZWF2aWx5IGJhc2VkIG9uIEplZmYgR2FyemlrIDxqZ2FyemlrQHBvYm94LmNvbT4ncworICBvbGQgVklBIDgyQ3h4eCBkcml2ZXIgKHZpYTgyY3h4eC5jKS4gSSBhbHNvIHJlc3BlY3QgaGltLgorCisKK0RJU0NMSU1FUgorPT09PT09PT09CisKKyBUaGlzIGRyaXZlciBpcyBjdXJyZW50bHkgYXQgZWFybHkgQUxQSEEgc3RhZ2UuIEl0IG1heSBjYXVzZSBzZXJpb3VzCisgZGFtYWdlIHRvIHlvdXIgY29tcHV0ZXIgd2hlbiB1c2VkLgorIFBMRUFTRSBVU0UgSVQgQVQgWU9VUiBPV04gUklTSy4KKworCitBQk9VVCBUSElTIERSSVZFUgorPT09PT09PT09PT09PT09PT0KKworICBUaGlzIGNvZGUgZW5hYmxlcyB5b3UgdG8gdXNlIHlvdXIgWU1GNzI0W0EtRl0sIFlNRjc0MFtBLUNdLCBZTUY3NDQsIFlNRjc1NAorIGNhcmRzLiBXaGVuIGVuYWJsZWQsIHlvdXIgY2FyZCBhY3RzIGFzICJTb3VuZEJsYXN0ZXIgUHJvIiBjb21wYXRpYmxlIGNhcmQuCisgSXQgY2FuIG9ubHkgcGxheSAyMi4wNWtIeiAvIDhiaXQgLyBTdGVyZW8gc2FtcGxlcywgY29udHJvbCBleHRlcm5hbCBNSURJCisgcG9ydC4KKyBJZiB5b3Ugd2FudCB0byB1c2UgeW91ciBjYXJkIGFzIHJlY2VudCAiMTYtYml0IiBjYXJkLCB5b3Ugc2hvdWxkIHVzZQorIEFsc2Egb3IgT1NTL0xpbnV4IGRyaXZlci4gT2YgY291cnNlIHlvdSBjYW4gd3JpdGUgbmF0aXZlIFBDSSBkcml2ZXIgZm9yCisgeW91ciBjYXJkcyA6KQorCisKK1VTQUdFCis9PT09PQorCisgIyBtb2Rwcm9iZSB5bWZzYiAob3B0aW9ucykKKworCitPUFRJT05TIEZPUiBNT0RVTEUKKz09PT09PT09PT09PT09PT09PQorCisgIGlvICAgICAgICAgICA6IFNCIGJhc2UgYWRkcmVzcyAgICAgKDB4MjIwLCAweDI0MCwgMHgyNjAsIDB4MjgwKQorICBzeW50aF9pbyAgICAgOiBPUEwzIGJhc2UgYWRkcmVzcyAgICgweDM4OCwgMHgzOTgsIDB4M2EwLCAweDNhOCkKKyAgZG1hICAgICAgICAgIDogRE1BIG51bWJlciAgICAgICAgICAoMCwxLDMpCisgIG1hc3Rlcl92b2x1bWU6IEFDJzk3IFBDTSBvdXQgVm9sICAgKDAtMTAwKQorICBzcGRpZl9vdXQgICAgOiBTUERJRi1vdXQgZmxhZyAgICAgICgwOmRpc2FibGUgMTplbmFibGUpCisKKyBUaGVzZSBvcHRpb25zIHdpbGwgY2hhbmdlIGluIGZ1dHVyZS4uLgorCisKK0ZSRVFVRU5DWQorPT09PT09PT09CisKKyAgV2hlbiBwbGF5aW5nIHNvdW5kcyB2aWEgdGhpcyBkcml2ZXIsIHlvdSB3aWxsIGhlYXIgaXRzIHBpdGNoIGlzIHNsaWdodGx5CisgbG93ZXIgdGhhbiBvcmlnaW5hbCBzb3VuZHMuIFNpbmNlIHRoaXMgZHJpdmVyIHJlY29nbml6ZXMgeW91ciBjYXJkIGFjdHMKKyB3aXRoIDIxLjczOWtIeiBzYW1wbGUgcmF0ZXMgcmF0aGVyIHRoYW4gMjIuMDUwa0h6IChJIHRoaW5rIGl0IG11c3QgYmUKKyBoYXJkd2FyZSByZXN0cmljdGlvbikuIFNvIG1hbnkgcGxheWVycyBiZWNvbWUgdG9uZSBkZWFmbmVzcy4KKyBUbyBwcmV2ZW50IHRoaXMsIHlvdSBzaG91bGQgZXhwcmVzcyBzb21lIG9wdGlvbnMgdG8geW91ciBzb3VuZCBwbGF5ZXIKKyB0aGF0IHNwZWNpZnkgY29ycmVjdCBzYW1wbGUgZnJlcXVlbmN5LiBGb3IgZXhhbXBsZSwgdG8gcGxheSB5b3VyIE1QMyBmaWxlCisgY29ycmVjdGx5IHdpdGggbXBnMTIzLCBzcGVjaWZ5IHRoZSBmcmVxdWVuY3kgbGlrZSBmb2xsb3dpbmc6CisKKyAgJSAgbXBnMTIzIC1yIDIxNzM5IGZvby5tcDMKKworCitTUERJRiBPVVQKKz09PT09PT09PQorCisgIFdpdGggaW5zdGFsbGluZyBtb2R1bGVzIHdpdGggb3B0aW9uICdzcGRpZl9vdXQ9MScsIHlvdSBjYW4gZW5qb3kgeW91cgorIHNvdW5kcyBmcm9tIFNQRElGLW91dCBvZiB5b3VyIGNhcmQgKGlmIGl0IGhhZCkuCisgSXRzIEZzIGlzIGZpeGVkIHRvIDQ4a0h6IChJdCBuZXZlciBtZWFucyB0aGUgc2FtcGxlIGZyZXF1ZW5jeSBiZWNvbWUgCisgdXAgdG8gNDhrSHouIEFsbCBzb3VuZHMgdmlhIFNQRElGLW91dCBhbHNvIDIya0h6IHNhbXBsZXMpLiBTbyB5b3VyCisgZGlnaXRhbC1pbiBjYXBhYmxlIGNvbXBvbmVudHMgaGFzIHRvIGJlIGFibGUgdG8gaGFuZGxlIDQ4a0h6IEZzLgorCisKK0NPUFlJTkcKKz09PT09PT0KKworIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisgYW55IGxhdGVyIHZlcnNpb24uCisKKyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorCisKK1RPRE8KKz09PT0KKyAqIHN1cHBvcnQgZm9yIG11bHRpcGxlIGNhcmRzCisgICAoc2V0IHRoZSBkaWZmZXJlbnQgU0JfSU8sTVBVX0lPLE9QTF9JTyBmb3IgZWFjaCBjYXJkcykKKworICogc3VwcG9ydCBmb3IgT1BMIChkbWZtKSA6IFRoZXJlIHdpbGwgYmUgbm8gcmVxdWlyZW1lbnRzLi4uIDotPAorCisKK0FVVEhPUgorPT09PT09CisKKyBEYWlzdWtlIE5hZ2FubyA8YnJlZXplLm5hZ2Fub0BuaWZ0eS5uZS5qcD4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvU291bmRQcm8gYi9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9Tb3VuZFBybwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDRkYjFmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvU291bmRQcm8KQEAgLTAsMCArMSwxMDUgQEAKK0RvY3VtZW50YXRpb24gZm9yIHRoZSBTb3VuZFBybyBDTUk4MzMwIGV4dGVuc2lvbnMgaW4gdGhlIFdTUyBkcml2ZXIgKGFkMTg0OC5vKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyggQmUgc3VyZSB0byByZWFkIERvY3VtZW50YXRpb24vc291bmQvb3NzL0NNSTgzMzAgdG9vICkKKworSW9uIEJhZHVsZXNjdSwgaW9udXRAY3MuY29sdW1iaWEuZWR1CitGZWJydWFyeSAyNCwgMTk5OQorCisoZGVyaXZlZCBmcm9tIHRoZSBPUEwzLVNBMiBkb2N1bWVudGF0aW9uIGJ5IFNjb3R0IE11cnJheSkKKworVGhlIFNvdW5kUHJvIENNSTgzMzAgKElTQSkgaXMgYSBjaGlwIHVzdWFsbHkgZm91bmQgb24gc29tZSBUYWl3YW5lc2UKK21vdGhlcmJvYXJkcy4gIFRoZSBvZmZpY2lhbCBuYW1lIGluIHRoZSBkb2N1bWVudGF0aW9uIGlzIENNSTgzMzAsIFNvdW5kUHJvCitpcyB0aGUgbmlja25hbWUgYW5kIHRoZSBiaWcgaW5zY3JpcHRpb24gb24gdGhlIGNoaXAgaXRzZWxmLgorCitUaGUgY2hpcCBlbXVsYXRlcyBhIFdTUyBhcyB3ZWxsIGFzIGEgU0IxNiwgYnV0IGl0IGhhcyBjZXJ0YWluIGRpZmZlcmVuY2VzCitpbiB0aGUgbWl4ZXIgc2VjdGlvbiB3aGljaCByZXF1aXJlIHNlcGFyYXRlIHN1cHBvcnQuIEl0IGFsc28gZW11bGF0ZXMgYW4KK01QVTQwMSBhbmQgYW4gT1BMMyBzeW50aGVzaXplciwgc28geW91IHByb2JhYmx5IHdhbnQgdG8gZW5hYmxlIHN1cHBvcnQKK2ZvciB0aGVzZSwgdG9vLgorCitUaGUgY2hpcCBpZGVudGlmaWVzIGl0c2VsZiBhcyBhbiBBRDE4NDgsIGJ1dCBpdHMgbWl4ZXIgaXMgc2lnbmlmaWNhbnRseQorbW9yZSBhZHZhbmNlZCB0aGFuIHRoZSBvcmlnaW5hbCBBRDE4NDggb25lLiBJZiB5b3VyIHN5c3RlbSB3b3JrcyB3aXRoCitlaXRoZXIgV1NTIG9yIFNCMTYgYW5kIHlvdSBhcmUgaGF2aW5nIHByb2JsZW1zIHdpdGggc29tZSBtaXhlciBjb250cm9scworKG5vIENEIGF1ZGlvLCBubyBsaW5lLWluLCBldGMpLCB5b3UgbWlnaHQgd2FudCB0byBnaXZlIHRoaXMgZHJpdmVyIGEgdHJ5LgorRGV0ZWN0aW9uIHNob3VsZCB3b3JrLCBidXQgaXQgaGFzbid0IGJlZW4gd2lkZWx5IHRlc3RlZCwgc28gaXQgbWlnaHQgc3RpbGwKK21pcy1pZGVudGlmeSB0aGUgY2hpcC4gWW91IGNhbiBzdGlsbCBmb3JjZSBzb3VuZHBybz0xIGluIHRoZSBtb2Rwcm9iZQorcGFyYW1ldGVycyBmb3IgYWQxODQ4LiBQbGVhc2UgbGV0IG1lIGtub3cgaWYgaXQgaGFwcGVucyB0byB5b3UsIHNvIEkgY2FuCithZGp1c3QgdGhlIGRldGVjdGlvbiByb3V0aW5lLgorCitUaGUgY2hpcCBpcyBjYXBhYmxlIG9mIGRvaW5nIGZ1bGwtZHVwbGV4LCBidXQgc2luY2UgdGhlIGRyaXZlciBzZWVzIGl0IGFzIGFuCitBRDE4NDgsIGl0IGNhbm5vdCB0YWtlIGFkdmFudGFnZSBvZiB0aGlzLiAgTW9yZW92ZXIsIHRoZSBmdWxsLWR1cGxleCBtb2RlIGlzCitub3QgYWNoaWV2YWJsZSB0aHJvdWdoIHRoZSBXU1MgaW50ZXJmYWNlLCBiL2MgaXQgbmVlZHMgYSBkbWExNiBsaW5lIHdoaWNoIGlzCithc3NpZ25lZCBvbmx5IHRvIHRoZSBTQjE2IHN1YmRldmljZSAod2l0aCBpc2FwbnApLiBXaW5kb3dzIGRvY3VtZW50YXRpb24KK3NheXMgdGhlIHVzZXIgbXVzdCB1c2UgV1NTIFBsYXliYWNrIGFuZCBTQjE2IFJlY29yZGluZyBmb3IgZnVsbC1kdXBsZXgsIHNvCitpdCBtaWdodCBiZSBwb3NzaWJsZSB0byBkbyB0aGUgc2FtZSB0aGluZyB1bmRlciBMaW51eC4gWW91IGNhbiB0cnkgbG9hZGluZwordXAgYm90aCBhZDE4NDggYW5kIHNiIHRoZW4gdXNlIG9uZSBmb3IgcGxheWJhY2sgYW5kIHRoZSBvdGhlciBmb3IKK3JlY29yZGluZy4gSSBkb24ndCBrbm93IGlmIHRoaXMgd29ya3MsIGIvYyBJIGhhdmVuJ3QgdGVzdGVkIGl0LiBBbnl3YXksIGlmCit5b3UgdHJ5IGl0LCBiZSB2ZXJ5IGNhcmVmdWw6IHRoZSBTQjE2IG1peGVyICptb3N0bHkqIHdvcmtzLCBidXQgY2VydGFpbgorc2V0dGluZ3MgY2FuIGhhdmUgdW5leHBlY3RlZCBlZmZlY3RzLiBVc2UgdGhlIFdTUyBtaXhlciBmb3IgYmVzdCByZXN1bHRzLgorCitUaGVyZSBpcyBhbHNvIGEgUENJIFNvdW5kUHJvIGNoaXAuIEkgaGF2ZSBub3Qgc2VlbiB0aGlzIGNoaXAsIHNvIEkgaGF2ZQorbm8gaWRlYSBpZiB0aGUgZHJpdmVyIHdpbGwgd29yayB3aXRoIGl0LiBJIHN1c3BlY3QgaXQgd29uJ3QuCisKK0FzIHdpdGggUG5QIGNhcmRzLCBzb21lIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQuICBUaGVyZSBhcmUgdHdvIHdheXMKK29mIGRvaW5nIHRoaXMuICBUaGUgbW9zdCBjb21tb24gaXMgdG8gdXNlIHRoZSBpc2FwbnB0b29scyBwYWNrYWdlIHRvCitpbml0aWFsaXplIHRoZSBjYXJkLCBhbmQgdXNlIHRoZSBrZXJuZWwgbW9kdWxlIGZvcm0gb2YgdGhlIHNvdW5kCitzdWJzeXN0ZW0gYW5kIHNvdW5kIGRyaXZlcnMuICBBbHRlcm5hdGl2ZWx5LCBzb21lIEJJT1MncyBhbGxvdyBtYW51YWwKK2NvbmZpZ3VyYXRpb24gb2YgaW5zdGFsbGVkIFBuUCBkZXZpY2VzIGluIGEgQklPUyBtZW51LCB3aGljaCBzaG91bGQKK2FsbG93IHVzaW5nIHRoZSBub24tbW9kdWxhciBzb3VuZCBkcml2ZXJzLCBpLmUuIGJ1aWx0IGludG8gdGhlIGtlcm5lbC4KK1NpbmNlIGluIHRoaXMgbGF0dGVyIGNhc2UgeW91IGNhbm5vdCB1c2UgbW9kdWxlIHBhcmFtZXRlcnMsIHlvdSB3aWxsCitoYXZlIHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgU291bmRQcm8gYXQgY29tcGlsZSB0aW1lLgorCitUaGUgSVJRIGFuZCBETUEgdmFsdWVzIGNhbiBiZSBhbnkgdGhhdCBhcmUgY29uc2lkZXJlZCBhY2NlcHRhYmxlIGZvciBhCitXU1MuICBBc3N1bWluZyB5b3UndmUgZ290IGlzYXBucCBhbGwgaGFwcHksIHRoZW4geW91IHNob3VsZCBiZSBhYmxlIHRvCitkbyBzb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nICh3aGljaCAqbXVzdCogbWF0Y2ggdGhlIGlzYXBucC9CSU9TCitjb25maWd1cmF0aW9uKToKKworbW9kcHJvYmUgYWQxODQ4IGlvPTB4NTMwIGlycT0xMSBkbWE9MCBzb3VuZHBybz0xCistYW5kIG1heWJlLQorbW9kcHJvYmUgc2IgaW89MHgyMjAgaXJxPTUgZG1hPTEgZG1hMTY9NQorCistdGhlbi0KK21vZHByb2JlIG1wdTQwMSBpbz0weDMzMCBpcnE9OQorbW9kcHJvYmUgb3BsMyBpbz0weDM4OAorCitJZiBhbGwgZ29lcyB3ZWxsIGFuZCB5b3Ugc2VlIG5vIGVycm9yIG1lc3NhZ2VzLCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8KK3N0YXJ0IHVzaW5nIHRoZSBzb3VuZCBjYXBhYmlsaXRpZXMgb2YgeW91ciBzeXN0ZW0uICBJZiB5b3UgZ2V0IGFuCitlcnJvciBtZXNzYWdlIHdoaWxlIHRyeWluZyB0byBpbnNlcnQgdGhlIG1vZHVsZShzKSwgdGhlbiBtYWtlCitzdXJlIHRoYXQgdGhlIHZhbHVlcyBvZiB0aGUgdmFyaW91cyBhcmd1bWVudHMgbWF0Y2ggd2hhdCB5b3Ugc3BlY2lmaWVkCitpbiB5b3VyIGlzYXBucCBjb25maWd1cmF0aW9uIGZpbGUsIGFuZCB0aGF0IHRoZXJlIGlzIG5vIGNvbmZsaWN0IHdpdGgKK2Fub3RoZXIgZGV2aWNlIGZvciBhbiBJL08gcG9ydCBvciBpbnRlcnJ1cHQuICBDaGVja2luZyB0aGUgY29udGVudHMgb2YKKy9wcm9jL2lvcG9ydHMgYW5kIC9wcm9jL2ludGVycnVwdHMgY2FuIGJlIHVzZWZ1bCB0byBzZWUgaWYgeW91J3JlCitidXR0aW5nIGhlYWRzIHdpdGggYW5vdGhlciBkZXZpY2UuCisKK0lmIHlvdSBkbyBub3Qgc2VlIHRoZSBjaGlwc2V0IHZlcnNpb24gbWVzc2FnZSwgYW5kIG5vbmUgb2YgdGhlIG90aGVyCittZXNzYWdlcyBwcmVzZW50IGluIHRoZSBzeXN0ZW0gbG9nIGFyZSBoZWxwZnVsLCB0cnkgYWRkaW5nICdkZWJ1Zz0xJwordG8gdGhlIGFkMTg0OCBwYXJhbWV0ZXJzLCBlbWFpbCBtZSB0aGUgc3lzbG9nIHJlc3VsdHMgYW5kIEknbGwgZG8KK215IGJlc3QgdG8gaGVscC4gCisKK0xhc3RseSwgaWYgeW91J3JlIHVzaW5nIG1vZHVsZXMgYW5kIHdhbnQgdG8gc2V0IHVwIGF1dG9tYXRpYyBtb2R1bGUKK2xvYWRpbmcgd2l0aCBrbW9kLCB0aGUga2VybmVsIG1vZHVsZSBsb2FkZXIsIGhlcmUgaXMgdGhlIHNlY3Rpb24gSQorY3VycmVudGx5IHVzZSBpbiBteSBjb25mLm1vZHVsZXMgZmlsZToKKworIyBTb3VuZAorcG9zdC1pbnN0YWxsIHNvdW5kIG1vZHByb2JlIC1rIGFkMTg0ODsgbW9kcHJvYmUgLWsgbXB1NDAxOyBtb2Rwcm9iZSAtayBvcGwzCitvcHRpb25zIGFkMTg0OCBpbz0weDUzMCBpcnE9MTEgZG1hPTAKK29wdGlvbnMgc2IgaW89MHgyMjAgaXJxPTUgZG1hPTEgZG1hMTY9NQorb3B0aW9ucyBtcHU0MDEgaW89MHgzMzAgaXJxPTkKK29wdGlvbnMgb3BsMyBpbz0weDM4OAorCitUaGUgYWJvdmUgZW5zdXJlcyB0aGF0IGFkMTg0OCB3aWxsIGJlIGxvYWRlZCB3aGVuZXZlciB0aGUgc291bmQgc3lzdGVtCitpcyBiZWluZyB1c2VkLgorCitHb29kIGx1Y2suCisKK0lvbgorCitOT1QgUkVBTExZIFRFU1RFRDoKKy0gcmVjb3JkaW5nCistIHJlY29yZGluZyBkZXZpY2Ugc2VsZWN0aW9uCistIGZ1bGwtZHVwbGV4CisKK1RPRE86CistIGltcGxlbWVudCBtaXhlciBzdXBwb3J0IGZvciBzdXJyb3VuZCwgbG91ZCwgZGlnaXRhbCBDRCBzd2l0Y2hlcy4KKy0gY29tZSB1cCB3aXRoIGEgc2NoZW1lIHdoaWNoIGFsbG93cyByZWNvcmRpbmcgdm9sdW1lcyBmb3IgZWFjaCBzdWJkZXZpY2UuCitUaGlzIGlzIGEgbWFqb3IgT1NTIEFQSSBjaGFuZ2UuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9Tb3VuZGJsYXN0ZXIgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9Tb3VuZGJsYXN0ZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI4OGQ0NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvb3NzL1NvdW5kYmxhc3RlcgpAQCAtMCwwICsxLDUzIEBACittb2Rwcm9iZSBzb3VuZAoraW5zbW9kIHVhcnQ0MDEKK2luc21vZCBzYiAuLi4KKworVGhpcyBsb2FkcyB0aGUgZHJpdmVyIGZvciB0aGUgU291bmQgQmxhc3RlciBhbmQgYXNzb3J0ZWQgY2xvbmVzLiBDYXJkcyB0aGF0CithcmUgY292ZXJlZCBieSBvdGhlciBkcml2ZXJzIHNob3VsZCBub3QgYmUgdXNpbmcgdGhpcyBkcml2ZXIuCisKK1RoZSBTb3VuZCBCbGFzdGVyIG1vZHVsZSB0YWtlcyB0aGUgZm9sbG93aW5nIGFyZ3VtZW50cworCitpbwkJSS9PIGFkZHJlc3Mgb2YgdGhlIFNvdW5kIEJsYXN0ZXIgY2hpcCAoMHgyMjAsMHgyNDAsMHgyNjAsMHgyODApCitpcnEJCUlSUSBvZiB0aGUgU291bmQgQmxhc3RlciBjaGlwICg1LDcsOSwxMCkKK2RtYQkJOC1iaXQgRE1BIGNoYW5uZWwgZm9yIHRoZSBTb3VuZCBCbGFzdGVyICgwLDEsMykKK2RtYTE2CQkxNi1iaXQgRE1BIGNoYW5uZWwgZm9yIFNCMTYgYW5kIGVxdWl2YWxlbnQgY2FyZHMgKDUsNiw3KQorbXB1X2lvCQlJL08gZm9yIE1QVSBjaGlwIGlmIHByZXNlbnQgKDB4MzAwLDB4MzMwKQorCitzbV9nYW1lcz0xCVNldCBpZiB5b3UgaGF2ZSBhIExvZ2l0ZWNoIHNvdW5kbWFuIGdhbWVzCithY2VyPTEJCVNldCB0aGlzIHRvIGRldGVjdCBjYXJkcyBpbiBzb21lIEFDRVIgbm90ZWJvb2tzCittd2F2ZV9idWc9MQlTZXQgaWYgeW91IGFyZSB0cnlpbmcgdG8gdXNlIHRoaXMgZHJpdmVyIHdpdGggbXdhdmUgKHNlZSBvbikKK3R5cGUJCVVzZSB0aGlzIHRvIHNwZWNpZnkgYSBzcGVjaWZpYyBjYXJkIHR5cGUKKworVGhlIGZvbGxvd2luZyBhcmd1bWVudHMgYXJlIHRha2VuIGlmIElTQVBuUCBzdXBwb3J0IGlzIGNvbXBpbGVkIGluCisKK2lzYXBucD0wCVNldCB0aGlzIHRvIGRpc2FibGUgSVNBUG5QIGRldGVjdGlvbiAodXNlIGlvPTB4WFhYIGV0Yy4gYWJvdmUpCittdWx0aXBsZT0wCVNldCB0byBkaXNhYmxlIGRldGVjdGlvbiBvZiBtdWx0aXBsZSBTb3VuZGJsYXN0ZXIgY2FyZHMuCisJCUNvbnNpZGVyIGl0IGEgYnVnIGlmIHRoaXMgb3B0aW9uIGlzIG5lZWRlZCwgYW5kIHNlbmQgaW4gYQorCQlyZXBvcnQuCitwbnBsZWdhY3k9MQlTZXQgdGhpcyB0byBiZSBhYmxlIHRvIHVzZSBhIFBuUCBjYXJkKHMpIGFsb25nIHdpdGggYSBzaW5nbGUKKwkJbm9uLVBuUCAobGVnYWN5KSBjYXJkLiAgQWJvdmUgb3B0aW9ucyBmb3IgaW8sIGlycSwgZXRjLiBhcmUKKwkJbmVlZGVkLCBhbmQgd2lsbCBhcHBseSBvbmx5IHRvIHRoZSBsZWdhY3kgY2FyZC4KK3JldmVyc2U9MQlSZXZlcnNlcyB0aGUgb3JkZXIgb2YgdGhlIHNlYXJjaCBpbiB0aGUgUG5QIHRhYmxlLgordWFydDQwMT0xCVNldCB0byBlbmFibGUgZGV0ZWN0aW9uIG9mIG1wdSBkZXZpY2VzIG9uIHNvbWUgY2xvbmVzLgoraXNhcG5wanVtcD1uCUp1bXBzIHRvIHNsb3QgbiBpbiB0aGUgZHJpdmVyJ3MgUG5QIHRhYmxlLiBVc2UgdGhlIHNvdXJjZSwKKwkJTHVrZS4KKworWW91IG1heSB3ZWxsIHdhbnQgdG8gbG9hZCB0aGUgb3BsMyBkcml2ZXIgZm9yIHN5bnRoIG11c2ljIG9uIG1vc3QgU0IgYW5kCitjbG9uZSBTQiBkZXZpY2VzCisKK2luc21vZCBvcGwzIGlvPTB4Mzg4CisKK1VzaW5nIE13YXZlCisKK1RvIG1ha2UgdGhpcyBkcml2ZXIgd29yayB3aXRoIE13YXZlIHlvdSBtdXN0IHNldCBtd2F2ZV9idWcuIFlvdSBhbHNvIG5lZWQKK3RvIHdhcm0gYm9vdCBmcm9tIERPUy9XaW5kb3dzIHdpdGggdGhlIHJlcXVpcmVkIGZpcm13YXJlIGxvYWRlZCB1bmRlciB0aGlzCitPUy4gSUJNIGFyZSBiZWluZyBkaWZmaWN1bHQgYWJvdXQgZG9jdW1lbnRpbmcgaG93IHRvIGxvYWQgdGhpcyBmaXJtd2FyZS4KKworQXZhbmNlIExvZ2ljIEFMUzAwNworCitUaGlzIGNhcmQgaXMgc3VwcG9ydGVkOyBzZWUgdGhlIHNlcGFyYXRlIGZpbGUgQUxTMDA3IGZvciBmdWxsIGRldGFpbHMuCisKK0F2YW5jZSBMb2dpYyBBTFMxMDAKKworVGhpcyBjYXJkIGlzIHN1cHBvcnRlZDsgc2V0dXAgc2hvdWxkIGJlIGFzIGZvciBhIHN0YW5kYXJkIFNvdW5kIEJsYXN0ZXIgMTYuCitUaGUgZHJpdmVyIHdpbGwgaWRlbnRpZnkgdGhlIGF1ZGlvIGRldmljZSBhcyBhICJTb3VuZCBCbGFzdGVyIDE2IChBTFMtMTAwKSIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9Ucm9wZXorIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvVHJvcGV6KwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTNhNmI3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvVHJvcGV6KwpAQCAtMCwwICsxLDI2IEBACitGcm9tOiBQYXVsIEJhcnRvbi1EYXZpcyA8cGJkQG9wLm5ldD4KKworSGVyZSBpcyB0aGUgY29uZmlndXJhdGlvbiBJIHVzZSB3aXRoIGEgVHJvcGV6KyBhbmQgbXkgbW9kdWxhcgorZHJpdmVyOgorCisgIGFsaWFzIGNoYXItbWFqb3ItMTQgd2F2ZWZyb250CisgIGFsaWFzIHN5bnRoMCB3YXZlZnJvbnQKKyAgYWxpYXMgbWl4ZXIwIGNzNDIzMgorICBhbGlhcyBhdWRpbzAgY3M0MjMyCisgIHByZS1pbnN0YWxsIHdhdmVmcm9udCBtb2Rwcm9iZSAiLWsiICJjczQyMzIiCisgIHBvc3QtaW5zdGFsbCB3YXZlZnJvbnQgbW9kcHJvYmUgIi1rIiAib3BsMyIKKyAgb3B0aW9ucyB3YXZlZnJvbnQgaW89MHgyMDAgaXJxPTkKKyAgb3B0aW9ucyBjczQyMzIgc3ludGhpcnE9OSBzeW50aGlvPTB4MjAwIGlvPTB4NTMwIGlycT01IGRtYT0xIGRtYTI9MAorICBvcHRpb25zIG9wbDMgaW89MHgzODgKKworVGhpbmdzIHRvIG5vdGU6IAorCisgICAgICAgdGhlIHdhdmVmcm9udCBvcHRpb25zICJpbyIgYW5kICJpcnEiICoqKk1VU1QqKiogbWF0Y2ggdGhlICJzeW50aGlvIgorICAgICAgIGFuZCAic3ludGhpcnEiIGNzNDIzMiBvcHRpb25zLgorCisgICAgICAgeW91IGNhbiBkbyB3aXRob3V0IHRoZSBvcGwzIG1vZHVsZSBpZiB5b3UgZG9uJ3QKKyAgICAgICB3YW50IHRvIHVzZSB0aGUgT1BML1szNF0gc3ludGggb24gdGhlIHNvdW5kY2FyZAorCisgICAgICAgdGhlIG9wbDMgaW8gcGFyYW1ldGVyIGlzIGNvbnZlbnRpb25hbGx5IG5vdCBhZGp1c3RhYmxlLgorCitQbGVhc2Ugc2VlIGRyaXZlcnMvc291bmQvUkVBRE1FLndhdmVmcm9udCBmb3IgbW9yZSBkZXRhaWxzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvVklCUkExNiBiL0RvY3VtZW50YXRpb24vc291bmQvb3NzL1ZJQlJBMTYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjhhNWE0NgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvb3NzL1ZJQlJBMTYKQEAgLTAsMCArMSw4MCBAQAorU291bmQgQmxhc3RlciAxNlggVmlicmEgYWRkZW5kdW0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitieSBNYXJpdXMgSWxpb2FlYSA8bWFyaXVzaUBwcm90di5ybz4KKyAgIFN0ZWZhbiBMYXVkYXQgIDxzdGVmYW5AYXNpdC5ybz4KKworU2F0IE1hciA2IDIzOjU1OjI3IEVFVCAxOTk5CisKKwkJCUhlbGxvIGFnYWluLAorCQorCVBsYXlpbmcgd2l0aCBhIFNCIFZpYnJhIDE2eCBzb3VuZGNhcmQgd2UgZm91bmQgaXQgdmVyeSBkaWZmaWN1bHQKK3RvIHNldHVwIGJlY2F1c2UgdGhlIGtlcm5lbCByZXBvcnRlZCBhIGxvdCBvZiBETUEgZXJyb3JzIGFuZCB3b3VsZG4ndAorc2ltcGx5IHBsYXkgYW55IHNvdW5kLgorCUEgZ29vZCBzdGFydGluZyBwb2ludCBpcyB0aGF0IHRoZSB2aWJyYTE2eCBjaGlwIGZ1bGwtZHVwbGV4IGZhY2lsaXR5CitpcyBuZWl0aGVyIHN0aWxsIGV4cGxvaXRlZCBieSB0aGUgc2IgZHJpdmVyIGZvdW5kIGluIHRoZSBsaW51eCBrZXJuZWwgCisodHJpZWQgaXQgd2l0aCBhIDIuMi4yLWFjNyksIG5vciBpbiB0aGUgY29tbWVyY2lhbCBPU1MgcGFja2FnZSAoaXQgcmVwb3J0cworaXQgYXMgaGFsZi1kdXBsZXggc291bmRjYXJkKS4gT2gsIEkgYWxtb3N0IGZvcmdvdCwgdGhlIFJlZEhhdCBzbmRjb25maWcKK2ZhaWxlZCBkZXRlY3RpbmcgaXQgOykKKwlTbywgdGhlIGJpZyBwcm9ibGVtIHN0aWxsIHJlbWFpbnMsIGJlY2F1c2UgdGhlIHNiIG1vZHVsZSB3YW50cyBhCis4LWJpdCBhbmQgYSAxNi1iaXQgZG1hLCB3aGljaCB3ZSBjb3VsZCBub3QgYWxsb2NhdGUgZm9yIHZpYnJhLi4uIGl0IHN1cHBvcnRzCitvbmx5IHR3byA4LWJpdCBkbWEgY2hhbm5lbHMsIHRoZSBzZWNvbmQgb25lIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBtb2R1bGUKK2FzIGEgMTYgYml0IGNoYW5uZWwsIHRoZSBrZXJuZWwgd2lsbCB5aWVsZCBhYm91dCB0aGF0IGJ1dCBldmVyeXRoaW5nIHdpbGwKK2JlIG9rYXksIHRydXN0IHVzLiAKKwlUaGUgb25seSBpbmNvbnZlbmllbnQgeW91IG1heSBmaW5kIGlzIHRoYXQgeW91IHdpbGwgaGF2ZQorc29tZSBzb3VuZCBwbGF5aW5nIGppdHRlcnMgaWYgeW91IGhhdmUgSEREIGRtYSBzdXBwb3J0IGVuYWJsZWQgLSBidXQgdGhpcword2lsbCBoYXBwZW4gd2l0aCBhbG1vc3QgYWxsIHNvdW5kY2FyZHMuLi4KKworCUEgZnVsbHkgd29ya2luZyBpc2FwbnAuY29uZiBpcyBqdXN0IGhlcmU6CisKKzxzbmlwIGhlcmU+CisKKyhSRUFEUE9SVCAweDAyMDMpCisoSVNPTEFURSBQUkVTRVJWRSkKKyhJREVOVElGWSAqKQorKFZFUkJPU0lUWSAyKQorKENPTkZMSUNUIChJTyBGQVRBTCkoSVJRIEZBVEFMKShETUEgRkFUQUwpKE1FTSBGQVRBTCkpICMgb3IgV0FSTklORworIyBTQiAxNiBhbmQgT1BMMyBkZXZpY2VzCisoQ09ORklHVVJFIENUTDAwZjAvLTEgKExEIDAKKyhJTlQgMCAoSVJRIDUgKE1PREUgK0UpKSkKKyhETUEgMCAoQ0hBTk5FTCAxKSkKKyhETUEgMSAoQ0hBTk5FTCAzKSkKKyhJTyAwIChTSVpFIDE2KSAoQkFTRSAweDAyMjApKQorKElPIDIgKFNJWkUgNCkgKEJBU0UgMHgwMzg4KSkKKyhOQU1FICJDVEwwMGYwLy0xWzBde0F1ZGlvICAgICAgICAgICAgICAgfSIpCisoQUNUIFkpCispKQorCisjIEpveXN0aWNrIGRldmljZSAtIG9ubHkgaWYgeW91IG5lZWQgaXQgOi0vCisKKyhDT05GSUdVUkUgQ1RMMDBmMC8tMSAoTEQgMQorKElPIDAgKFNJWkUgMSkgKEJBU0UgMHgwMjAwKSkKKyhOQU1FICJDVEwwMGYwLy0xWzFde0dhbWUgICAgICAgICAgICAgICAgfSIpCisoQUNUIFkpCispKQorKFdBSVRGT1JLRVkpCisKKzxlbmQgb2Ygc25pcHBpbmc+CisKKwlTbywgYWZ0ZXIgYSBnb29kIGtlcm5lbCBtb2R1bGVzIGNvbXBpbGF0aW9uIGFuZCBhICdkZXBtb2QgLWEga2VybmVsX3ZlcicKK3lvdSBtYXkgd2FudCB0bzoKKworbW9kcHJvYmUgc2IgaW89MHgyMjAgaXJxPTUgZG1hPTEgZG1hMTY9MworCisJT3IsIHRha2UgdGhlIGhhcmQgd2F5OgorCittb2Rwcm9iZSBzb3VuZGNvcmUKK21vZHByb2JlIHNvdW5kCittb2Rwcm9iZSB1YXJ0NDAxCittb2Rwcm9iZSBzYiBpbz0weDIyMCBpcnE9NSBkbWE9MSBkbWExNj0zCisjIGRvIHlvdSBuZWVkIE1JREk/Cittb2Rwcm9iZSBvcGwzPTB4Mzg4CisKKwlKdXN0IGluIGNhc2UsIHRoZSBrZXJuZWwgc291bmQgc3VwcG9ydCBzaG91bGQgYmU6CisKK0NPTkZJR19TT1VORD1tCitDT05GSUdfU09VTkRfT1NTPW0KK0NPTkZJR19TT1VORF9TQj1tCisJCisJRW5qb3kgeW91ciBuZXcgbm9pc3kgTGludXggYm94ISA7KQorCQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9XYXZlQXJ0aXN0IGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvV2F2ZUFydGlzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGYzNDA3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvV2F2ZUFydGlzdApAQCAtMCwwICsxLDE3MCBAQAorCisgKHRoZSBmb2xsb3dpbmcgaXMgZnJvbSB0aGUgYXJtbGludXggQ1ZTKQorCisgV2F2ZUFydGlzdCBtaXhlciBhbmQgdm9sdW1lIGxldmVscyBjYW4gYmUgYWNjZXNzZWQgdmlhIHRoZXNlIGNvbW1hbmRzOgorCisgIG5uMzAJcmVhZCByZWdpc3RlcnMgbm4sIHdoZXJlIG5uID0gMDAgLSAwOSBmb3IgbWl4ZXIgc2V0dGluZ3MKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMGEgLSAxMyBmb3IgY2hhbm5lbCB2b2x1bWVzCisgIG1tMzEJd3JpdGUgdGhlIHZvbHVtZSBzZXR0aW5nIGluIHBhaXJzLCB3aGVyZSBtbSA9IChubiAtIDEwKSAvIDIKKyAgcnIzMgl3cml0ZSB0aGUgbWl4ZXIgc2V0dGluZ3MgaW4gcGFpcnMsIHdoZXJlIHJyID0gbm4vMgorICB4eDMzCXJlc2V0IGFsbCBzZXR0aW5ncyB0byBkZWZhdWx0CisgIDB5MzQJc2VsZWN0IG1vbm8gc291cmNlLCB5PTAgPSBsZWZ0LCB5PTEgPSByaWdodAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0cworIG5uICAxNSAgMTQgMTMgMTIgMTEgICAxMCAgICA5ICAgICA4ICAgICA3ICAgIDYgICAgIDUgICAgIDQgICAgIDMgICAgIDIgICAgIDEgICAgIDAKKy0tLS0rLS0tKy0tLS0tLS0tLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworIDAwIHwgMCB8IDAgIDAgIDEgIDEgfCBsZWZ0IGxpbmUgbWl4ZXIgZ2FpbiAgICAgICB8IGxlZnQgYXV4MSBtaXhlciBnYWluICAgICAgICB8bG11dGV8CistLS0tKy0tLSstLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAwMSB8IDAgfCAwICAxICAwICAxIHwgbGVmdCBhdXgyIG1peGVyIGdhaW4gICAgICAgfCByaWdodCAyIGxlZnQgbWljIGdhaW4gICAgICAgfG1tdXRlfAorLS0tLSstLS0rLS0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgMDIgfCAwIHwgMCAgMSAgMSAgMSB8IGxlZnQgbWljIG1peGVyIGdhaW4gICAgICAgIHwgbGVmdCBtaWMgIHwgbGVmdCBtaXhlciBnYWluIHxkaXRoIHwKKy0tLS0rLS0tKy0tLS0tLS0tLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworIDAzIHwgMCB8IDEgIDAgIDAgIDEgfCBsZWZ0IG1peGVyIGlucHV0IHNlbGVjdCAgICAgICAgICAgICAgICB8bHJmZyB8IGxlZnQgQURDIGdhaW4gICB8CistLS0tKy0tLSstLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAwNCB8IDAgfCAxICAwICAxICAxIHwgcmlnaHQgbGluZSBtaXhlciBnYWluICAgICAgfCByaWdodCBhdXgxIG1peGVyIGdhaW4gICAgICAgfHJtdXRlfAorLS0tLSstLS0rLS0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgMDUgfCAwIHwgMSAgMSAgMCAgMSB8IHJpZ2h0IGF1eDIgbWl4ZXIgZ2FpbiAgICAgIHwgbGVmdCAyIHJpZ2h0IG1pYyBnYWluICAgICAgIHx0ZXN0IHwKKy0tLS0rLS0tKy0tLS0tLS0tLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworIDA2IHwgMCB8IDEgIDEgIDEgIDEgfCByaWdodCBtaWMgbWl4ZXIgZ2FpbiAgICAgICB8IHJpZ2h0IG1pYyB8cmlnaHQgbWl4ZXIgZ2FpbiB8cmJ5cHN8CistLS0tKy0tLSstLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAwNyB8IDEgfCAwICAwICAwICAxIHwgcmlnaHQgbWl4ZXIgc2VsZWN0ICAgICAgICAgICAgICAgICAgICAgfHJyZmcgfCByaWdodCBBREMgZ2FpbiAgfAorLS0tLSstLS0rLS0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgMDggfCAxIHwgMCAgMCAgMSAgMSB8IG1vbm8gbWl4ZXIgZ2FpbiAgICAgICAgICAgIHxyaWdodCBBREMgbXV4IHNlbHxsZWZ0IEFEQyBtdXggc2VsIHwKKy0tLS0rLS0tKy0tLS0tLS0tLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworIDA5IHwgMSB8IDAgIDEgIDAgIDEgfGxvb3BifGxlZnQgbGlub3V0fGxvb3B8QURDY2h8VHhGY2h8T2ZmQ0R8dGVzdCB8bG9vcGJ8bG9vcGJ8b3NhbXB8CistLS0tKy0tLSstLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAwYSB8IDAgfCBsZWZ0IFBDTSBjaGFubmVsIHZvbHVtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorLS0tLSstLS0rLS0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgMGIgfCAwIHwgcmlnaHQgUENNIGNoYW5uZWwgdm9sdW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0rLS0tKy0tLS0tLS0tLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworIDBjIHwgMCB8IGxlZnQgRk0gY2hhbm5lbCB2b2x1bWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CistLS0tKy0tLSstLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAwZCB8IDAgfCByaWdodCBGTSBjaGFubmVsIHZvbHVtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorLS0tLSstLS0rLS0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgMGUgfCAwIHwgbGVmdCB3YXZldGFibGUgY2hhbm5lbCB2b2x1bWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0rLS0tKy0tLS0tLS0tLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworIDBmIHwgMCB8IHJpZ2h0IHdhdmV0YWJsZSBjaGFubmVsIHZvbHVtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CistLS0tKy0tLSstLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAxMCB8IDAgfCBsZWZ0IFBDTSBleHBhbnNpb24gY2hhbm5lbCB2b2x1bWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorLS0tLSstLS0rLS0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisgMTEgfCAwIHwgcmlnaHQgUENNIGV4cGFuc2lvbiBjaGFubmVsIHZvbHVtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKy0tLS0rLS0tKy0tLS0tLS0tLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKworIDEyIHwgMCB8IGxlZnQgRk0gZXhwYW5zaW9uIGNoYW5uZWwgdm9sdW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CistLS0tKy0tLSstLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKKyAxMyB8IDAgfCByaWdodCBGTSBleHBhbnNpb24gY2hhbm5lbCB2b2x1bWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorLS0tLSstLS0rLS0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0rCisKKyBsbXV0ZTogbGVmdCBtdXRlCisgbW11dGU6IG1vbm8gbXV0ZQorIGRpdGg6IGRpdGhkcworIGxyZmc6Cisgcm11dGU6IHJpZ2h0IG11dGUKKyByYnlwczogcmlnaHQgYnlwYXNzCisgcnJmZzoKKyBBRENjaDoKKyBUeEZjaDoKKyBPZmZDRDoKKyBvc2FtcDoKKworIEFuZCB0aGUgZm9sbG93aW5nIGRpYWdyYW0gaXMgZGVyaXZlZCBmcm9tIHRoZSBkZXNjcmlwdGlvbiBpbiB0aGUgQ1ZTIGFyY2hpdmU6CisKKyBNSUMgTCAobW91dGhwaWVjZSkKKyAgICstLS0tLS0rCisgLS0+UHJlQW1wPi1cCisgICArLS1eLS0tKyB8CisgICAgICB8ICAgICB8CisgICAgcjJiNC01ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0rCisgICAgICAgLy0tLS0qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+NSAgICAgICB8CisgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICB8CisgICAgICAgfCAvLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+NCAgICAgICB8CisgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICB8CisgICAgICAgfCB8IC8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+MyAxb2Y1ICB8ICArLS0tKworICAgICAgIHwgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbXV4ICAgPi0tPkFNUD4tLT4gQURDIEwKKyAgICAgICB8IHwgfCAvLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4yICAgICAgIHwgICstXi0rCisgICAgICAgfCB8IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICB8ICAgIHwKKyBMaW5lICB8IHwgfCB8ICstLS0tKyAgKy0tLS0tLSsgICstLS0rICAvLS0tLT4xICAgICAgIHwgIHIzYjMtMAorIC0tLS0tLS0tLS0tLSotPm11dGU+LS0+IEdhaW4gPi0tPiAgIHwgIHwgICAgfCAgICAgICAgfAorICBMICAgIHwgfCB8ICAgKy0tLS0rICArLS0tLS0tKyAgfCAgIHwgIHwgICotPjAgICAgICAgfAorICAgICAgIHwgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgIHwgIHwgICAgKy0tLV4tLS0tKworIEF1eDIgIHwgfCB8ICAgKy0tLS0rICArLS0tLS0tKyAgfCAgIHwgIHwgICAgICAgIHwKKyAtLS0tLS0tLS0tKi0tLT5tdXRlPi0tPiBHYWluID4tLT4gTSB8ICB8ICAgICByOGIwLTIKKyAgTCAgICB8IHwgICAgICstLS0tKyAgKy0tLS0tLSsgIHwgICB8ICB8CisgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgfCAgXC0tLS0tLVwKKyBBdXgxICB8IHwgICAgICstLS0tKyAgKy0tLS0tLSsgIHwgICB8ICAgICAgICAgfAorIC0tLS0tLS0tKi0tLS0tPm11dGU+LS0+IEdhaW4gPi0tPiBJIHwgICAgICAgICB8CisgIEwgICAgfCAgICAgICArLS0tLSsgICstLS0tLS0rICB8ICAgfCAgICAgICAgIHwKKyAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICAgICAgfAorICAgICAgIHwgICAgICAgKy0tLS0rICArLS0tLS0tKyAgfCAgIHwgICstLS0rICB8CisgICAgICAgKi0tLS0tLS0+bXV0ZT4tLT4gR2FpbiA+LS0+IFggPi0tPkFNUD4tLSoKKyAgICAgICB8ICAgICAgICstLS0tKyAgKy0tLS0tLSsgIHwgICB8ICArLV4tKyAgfAorICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgfCAgICB8CisgICAgICAgfCAgICAgICArLS0tLSsgICstLS0tLS0rICB8ICAgfCAgcjJiMS0zIHwgIAorICAgICAgIHwgLy0tLS0tPm11dGU+LS0+IEdhaW4gPi0tPiBFIHwgICAgICAgICB8CisgICAgICAgfCB8ICAgICArLS0tLSsgICstLS0tLS0rICB8ICAgfCAgICAgICAgIHwKKyAgICAgICB8IHwgICAgICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICAgICAgfAorICAgICAgIHwgfCAgICAgKy0tLS0rICArLS0tLS0tKyAgfCAgIHwgICAgICAgICB8CisgICAgICAgfCB8IC8tLS0+bXV0ZT4tLT4gR2FpbiA+LS0+IFIgfCAgICAgICAgIHwKKyAgICAgICB8IHwgfCAgICstLS0tKyAgKy0tLS0tLSsgIHwgICB8ICAgICAgICAgfAorICAgICAgIHwgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgICAgICB8ICAgcjliOC05CisgICAgICAgfCB8IHwgICArLS0tLSsgICstLS0tLS0rICB8ICAgfCAgICAgICAgIHwgICAgIHwKKyAgICAgICB8IHwgfCAvLT5tdXRlPi0tPiBHYWluID4tLT4gICB8ICAgICAgICAgfCArLS0tdi0tLSsKKyAgICAgICB8IHwgfCB8ICstLS0tKyAgKy0tLS0tLSsgICstLS0rICAgICAgIC8tKi0+MCAgICAgIHwKKyBEQUMgICB8IHwgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICAgIHwKKyAtLS0tLS0tLS0tLS0qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+PyAgICAgIHwgICstLS0tKworICBMICAgIHwgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIHwgIE11eCAgPi0tPm11dGU+LS0+IEwgb3V0cHV0CisgICAgICAgfCB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IC8tPj8gICAgICB8ICArLS1eLSsKKyAgICAgICB8IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgfCB8ICAgICAgIHwgICAgIHwKKyAgICAgICB8IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8tLS0tLS0tLS0+PyAgICAgIHwgICByMGIwCisgICAgICAgfCB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHwgKy0tLS0tLS0rCisgICAgICAgfCB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHwKKyBNb25vICB8IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgfCArLS0tLS0tLSsKKyAtLS0tLS0tLS0tKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIFwtLS0+ICAgICAgIHwgICstLS0tKworICAgICAgIHwgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8IHwgIE1peCAgPi0tPm11dGU+LS0+IE1vbm8gb3V0cHV0CisgICAgICAgfCB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICotPiAgICAgICB8ICArLS1eLSsKKyAgICAgICB8IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfCArLS0tLS0tLSsgICAgIHwKKyAgICAgICB8IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfCAgICAgICAgICAgICByMWIwCisgREFDICAgfCB8IHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwgKy0tLS0tLS0rCisgLS0tLS0tLS0tLS0tKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLS0tLS0tLS0tPjEgICAgICB8ICArLS0tLSsKKyAgUiAgICB8IHwgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8ICBNdXggID4tLT5tdXRlPi0tPiBSIG91dHB1dAorICAgICAgIHwgfCB8IHwgKy0tLS0rICArLS0tLS0tKyAgKy0tLSsgICAgICAgICAqLT4wICAgICAgfCAgKy0tXi0rCisgICAgICAgfCB8IHwgXC0+bXV0ZT4tLT4gR2FpbiA+LS0+ICAgfCAgICAgICAgIHwgKy0tLV4tLS0rICAgICB8CisgICAgICAgfCB8IHwgICArLS0tLSsgICstLS0tLS0rICB8ICAgfCAgICAgICAgIHwgICAgIHwgICAgICAgcjViMAorICAgICAgIHwgfCB8ICAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgICAgICB8ICAgcjZiMAorICAgICAgIHwgfCB8ICAgKy0tLS0rICArLS0tLS0tKyAgfCAgIHwgICAgICAgICB8CisgICAgICAgfCB8IFwtLS0+bXV0ZT4tLT4gR2FpbiA+LS0+IE0gfCAgICAgICAgIHwKKyAgICAgICB8IHwgICAgICstLS0tKyAgKy0tLS0tLSsgIHwgICB8ICAgICAgICAgfAorICAgICAgIHwgfCAgICAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgICAgICB8CisgICAgICAgfCB8ICAgICArLS0tLSsgICstLS0tLS0rICB8ICAgfCAgICAgICAgIHwKKyAgICAgICB8ICotLS0tLT5tdXRlPi0tPiBHYWluID4tLT4gSSB8ICAgICAgICAgfAorICAgICAgIHwgfCAgICAgKy0tLS0rICArLS0tLS0tKyAgfCAgIHwgICAgICAgICB8CisgICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgICAgIHwKKyAgICAgICB8IHwgICAgICstLS0tKyAgKy0tLS0tLSsgIHwgICB8ICArLS0tKyAgfAorICAgICAgIFwtLS0tLS0tPm11dGU+LS0+IEdhaW4gPi0tPiBYID4tLT5BTVA+LS0qCisgICAgICAgICB8ICAgICArLS0tLSsgICstLS0tLS0rICB8ICAgfCAgKy1eLSsgIHwKKyAgICAgIC8tLS8gICAgICAgICAgICAgICAgICAgICAgIHwgICB8ICAgIHwgICAgfAorIEF1eDEgfCAgICAgICAgKy0tLS0rICArLS0tLS0tKyAgfCAgIHwgIHI2YjEtMyB8CisgLS0tLS0tLSotLS0tLS0+bXV0ZT4tLT4gR2FpbiA+LS0+IEUgfCAgICAgICAgIHwKKyAgUiAgIHwgfCAgICAgICstLS0tKyAgKy0tLS0tLSsgIHwgICB8ICAgICAgICAgfAorICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgICAgICB8CisgQXV4MiB8IHwgICAgICArLS0tLSsgICstLS0tLS0rICB8ICAgfCAgLy0tLS0tLS8KKyAtLS0tLS0tLS0qLS0tLT5tdXRlPi0tPiBHYWluID4tLT4gUiB8ICB8CisgIFIgICB8IHwgfCAgICArLS0tLSsgICstLS0tLS0rICB8ICAgfCAgfAorICAgICAgfCB8IHwgICAgICAgICAgICAgICAgICAgICAgfCAgIHwgIHwgICAgKy0tLS0tLS0tKworIExpbmUgfCB8IHwgICAgKy0tLS0rICArLS0tLS0tKyAgfCAgIHwgIHwgICotPjAgICAgICAgfAorIC0tLS0tLS0tLS0tKi0tPm11dGU+LS0+IEdhaW4gPi0tPiAgIHwgIHwgICAgfCAgICAgICAgfAorICBSICAgfCB8IHwgfCAgKy0tLS0rICArLS0tLS0tKyAgKy0tLSsgIFwtLS0tPjEgICAgICAgfAorICAgICAgfCB8IHwgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgfAorICAgICAgfCB8IHwgXC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPjIgICAgICAgfCAgKy0tLSsKKyAgICAgIHwgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIE11eCAgID4tLT5BTVA+LS0+IEFEQyBSCisgICAgICB8IHwgXC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+MyAgICAgICB8ICArLV4tKworICAgICAgfCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICB8CisgICAgICB8IFwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+NCAgICAgICB8ICByN2IzLTAKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgIHwKKyAgICAgIFwtLS0tLSotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT41ICAgICAgIHwKKyAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS1eLS0tLSsKKyAgICByNmI0LTUgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICB8ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI4YjMtNQorICAgKy0tdi0tLSsgfAorIC0tPlByZUFtcD4tLworICAgKy0tLS0tLSsKKyBNSUMgUiAoZWxlY3RyZXQgbWljKQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvYnRhdWRpbyBiL0RvY3VtZW50YXRpb24vc291bmQvb3NzL2J0YXVkaW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZmZGI5YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvb3NzL2J0YXVkaW8KQEAgLTAsMCArMSw5MiBAQAorCitJbnRybworPT09PT0KKworcGVvcGxlIHN0YXJ0IGJ1Z2dpbmcgbWUgYWJvdXQgdGhpcyB3aXRoIHF1ZXN0aW9ucywgbG9va3MgbGlrZSBJCitzaG91bGQgd3JpdGUgdXAgc29tZSBkb2N1bWVudGF0aW9uIGZvciB0aGlzIGJlYXN0LiAgVGhhdCB3YXkgSQorZG9uJ3QgaGF2ZSB0byBhbnN3ZXIgdGhhdCBtdWNoIG1haWxzIEkgaG9wZS4gIFllcywgSSdtIGxhenkuLi4KKworCitZb3UgbWlnaHQgaGF2ZSBub3RpY2VkIHRoYXQgdGhlIGJ0ODc4IGdyYWJiZXIgY2FyZHMgaGF2ZSBhY3R1YWxseQorX3R3b18gUENJIGZ1bmN0aW9uczoKKworJCBsc3BjaQorWyAuLi4gXQorMDA6MGEuMCBNdWx0aW1lZGlhIHZpZGVvIGNvbnRyb2xsZXI6IEJyb29rdHJlZSBDb3Jwb3JhdGlvbiBCdDg3OCAocmV2IDAyKQorMDA6MGEuMSBNdWx0aW1lZGlhIGNvbnRyb2xsZXI6IEJyb29rdHJlZSBDb3Jwb3JhdGlvbiBCdDg3OCAocmV2IDAyKQorWyAuLi4gXQorCitUaGUgZmlyc3QgZG9lcyB2aWRlbywgaXQgaXMgYmFja3dhcmQgY29tcGF0aWJsZSB0byB0aGUgYnQ4NDguICBUaGUgc2Vjb25kCitkb2VzIGF1ZGlvLiAgYnRhdWRpbyBpcyBhIGRyaXZlciBmb3IgdGhlIHNlY29uZCBmdW5jdGlvbi4gIEl0J3MgYSBzb3VuZAorZHJpdmVyIHdoaWNoIGNhbiBiZSB1c2VkIGZvciByZWNvcmRpbmcgc291bmQgKGFuZCBfb25seV8gcmVjb3JkaW5nLCBubworcGxheWJhY2spLiAgQXMgbW9zdCBUViBjYXJkcyBjb21lIHdpdGggYSBzaG9ydCBjYWJsZSB3aGljaCBjYW4gYmUgcGx1Z2dlZAoraW50byB5b3VyIHNvdW5kIGNhcmQncyBsaW5lLWluIHlvdSBwcm9iYWJseSBkb24ndCBuZWVkIHRoaXMgZHJpdmVyIGlmIGFsbAoreW91IHdhbnQgdG8gZG8gaXMganVzdCB3YXRjaGluZyBUVi4uLgorCisKK0RyaXZlciBTdGF0dXMKKz09PT09PT09PT09PT0KKworU3RpbGwgc29tZXdoYXQgZXhwZXJpbWVudGFsLiAgVGhlIGRyaXZlciBzaG91bGQgd29yayBzdGFibGUsIGkuZS4gaXQKK3Nob3VsZCdudCBjcmFzaCB5b3VyIGJveC4gIEl0IG1pZ2h0IG5vdCB3b3JrIGFzIGV4cGVjdGVkLCBoYXZlIGJ1Z3MsCitub3QgYmVpbmcgZnVsbHkgT1NTIEFQSSBjb21wbGlhbnQsIC4uLgorCitMYXRlc3QgdmVyc2lvbnMgYXJlIGF2YWlsYWJsZSBmcm9tIGh0dHA6Ly9ieXRlc2V4Lm9yZy9idHR2LywgdGhlCitkcml2ZXIgaXMgaW4gdGhlIGJ0dHYgdGFyYmFsbC4gIEtlcm5lbCBwYXRjaGVzIG1pZ2h0IGJlIGF2YWlsYWJsZSB0b28sCitoYXZlIGEgbG9vayBhdCBodHRwOi8vYnl0ZXNleC5vcmcvYnR0di9saXN0aW5nLmh0bWwuCisKK1RoZSBjaGlwIGtub3dzIHR3byBkaWZmZXJlbnQgbW9kZXMuICBidGF1ZGlvIHJlZ2lzdGVycyB0d28gZHNwCitkZXZpY2VzLCBvbmUgZm9yIGVhY2ggbW9kZS4gIFRoZXkgY2FuIG5vdCBiZSB1c2VkIGF0IHRoZSBzYW1lIHRpbWUuCisKKworRGlnaXRhbCBhdWRpbyBtb2RlCis9PT09PT09PT09PT09PT09PT0KKworVGhlIGNoaXAgZ2l2ZXMgeW91IDE2IGJpdCBzdGVyZW8gc291bmQuICBUaGUgc2FtcGxlIHJhdGUgZGVwZW5kcyBvbgordGhlIGV4dGVybmFsIHNvdXJjZSB3aGljaCBmZWVkcyB0aGUgYnQ4Nzggd2l0aCBkaWdpdGFsIHNvdW5kIHZpYSBJMlMKK2ludGVyZmFjZS4gIFRoZXJlIGlzIGEgaW5zbW9kIG9wdGlvbiAocmF0ZSkgdG8gdGVsbCB0aGUgZHJpdmVyIHdoaWNoCitzYW1wbGUgcmF0ZSB0aGUgaGFyZHdhcmUgdXNlcyAoMzIwMDAgaXMgdGhlIGRlZmF1bHQpLgorCitPbmUgcG9zc2libGUgc291cmNlIGZvciBkaWdpdGFsIHNvdW5kIGlzIHRoZSBtc3AzNHh4IGF1ZGlvIHByb2Nlc3NvcgorY2hpcCB3aGljaCBwcm92aWRlcyBkaWdpdGFsIHNvdW5kIHZpYSBJMlMgd2l0aCAzMiBrSHogc2FtcGxlIHJhdGUuICBNeQorSGF1cHBhdWdlIGJvYXJkIHdvcmtzIHRoaXMgd2F5LgorCitUaGUgT3NwcmV5LTIwMCByZXBvcnRseSBnaXZlcyB5b3UgZGlnaXRhbCBzb3VuZCB3aXRoIDQ0MTAwIEh6IHNhbXBsZQorcmF0ZS4gIEl0IGlzIGFsc28gcG9zc2libGUgdGhhdCB5b3UgZ2V0IG5vIHNvdW5kIGF0IGFsbC4KKworCithbmFsb2cgbW9kZSAoQS9EKQorPT09PT09PT09PT09PT09PT0KKworWW91IGNhbiB0ZWxsIHRoZSBkcml2ZXIgdG8gdXNlIHRoaXMgbW9kZSB3aXRoIHRoZSBpbnNtb2Qgb3B0aW9uICJhbmFsb2c9MSIuCitUaGUgY2hpcCBoYXMgdGhyZWUgYW5hbG9nIGlucHV0cy4gIENvbnNlcXVlbnRseSB5b3UnbGwgZ2V0IGEgbWl4ZXIgZGV2aWNlCit0byBjb250cm9sIHRoZXNlLgorCitUaGUgYW5hbG9nIG1vZGUgc3VwcG9ydHMgbW9ubyBvbmx5LiAgQm90aCA4ICsgMTYgYml0LiAgQm90aCBhcmUgX3NpZ25lZF8KK2ludCwgd2hpY2ggaXMgdW5jb21tb24gZm9yIHRoZSA4IGJpdCBjYXNlLiAgU2FtcGxlIHJhdGUgcmFuZ2UgaXMgMTE5IGtIegordG8gNDQ4IGtIei4gIFllcywgdGhlIG51bWJlciBvZiBkaWdpdHMgaXMgY29ycmVjdC4gIFRoZSBkcml2ZXIgc3VwcG9ydHMKK2Rvd25zYW1wbGluZyBieSBwb3dlcnMgb2YgdHdvLCBzbyB5b3UgY2FuIGFzayBmb3IgbW9yZSB1c3VhbCBzYW1wbGUgcmF0ZXMKK2xpa2UgNDQga0h6IHRvby4KKworV2l0aCBteSBIYXVwcGF1Z2UgSSBnZXQgbm9pc3kgc291bmQgb24gdGhlIHNlY29uZCBpbnB1dCAobWFwcGVkIHRvIGxpbmUyCitieSB0aGUgbWl4ZXIgZGV2aWNlKS4gIE90aGVycyBnZXQgYSB1c2VhYmxlIHNpZ25hbCBvbiBsaW5lMS4KKworCitzb21lIGV4YW1wbGVzCis9PT09PT09PT09PT09CisKKyogcmVhZCBhdWRpbyBkYXRhIGZyb20gYnRhdWRpbyAoZHNwMiksIHNlbmQgdG8gZXMxNzMwIChkc3AsZHNwMSk6CisgICQgc294IC13IC1yIDMyMDAwIC10IG9zc2RzcCAvZGV2L2RzcDIgLXQgb3NzZHNwIC9kZXYvZHNwCisKKyogcmVhZCBhdWRpbyBkYXRhIGZyb20gYnRhdWRpbywgc2VuZCB0byBlc291bmQgZGFlbW9uICh3aGljaCBtaWdodCBiZQorICBydW5uaW5nIG9uIGFub3RoZXIgaG9zdCk6CisgICQgc294IC1jIDIgLXcgLXIgMzIwMDAgLXQgb3NzZHNwIC9kZXYvZHNwMiAtdCBzdyAtIHwgZXNkY2F0IC1yIDMyMDAwCisgICQgc294IC1jIDEgLXcgLXIgMzIwMDAgLXQgb3NzZHNwIC9kZXYvZHNwMiAtdCBzdyAtIHwgZXNkY2F0IC1tIC1yIDMyMDAwCisKKworSGF2ZSBmdW4sCisKKyAgR2VyZAorCistLSAKK0dlcmQgS25vcnIgPGtyYXhlbEBieXRlc2V4Lm9yZz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvb3NzL213YXZlIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvbXdhdmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZiY2IxNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvb3NzL213YXZlCkBAIC0wLDAgKzEsMTg1IEBACisJSG93IHRvIHRyeSB0byBzdXJ2aXZlIGFuIElCTSBNd2F2ZSB1bmRlciBMaW51eCBTQiBkcml2ZXJzCisKKworKwlJQk0gaGF2ZSBub3cgcmVsZWFzZWQgZG9jdW1lbnRhdGlvbiBvZiBzb3J0cyBhbmQgVG9yc3RlbiBpcyBidXN5CisJdHJ5aW5nIHRvIG1ha2UgdGhlIE13YXZlIHdvcmsuIFRoaXMgaXMgbm90IGhvd2V2ZXIgYSB0cml2aWFsIHRhc2suCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT0ssIGZpcnN0IHRoaW5nIC0gdGhlIElSUSBwcm9ibGVtIElTIGEgcHJvYmxlbSwgd2hldGhlciB0aGUgdGVzdCBpcyBieXBhc3NlZCBvcgorbm90LiAgSXQgaXMgTk9UIGEgTGludXggcHJvYmxlbSwgYnV0IGFuIE1XQVZFIHByb2JsZW0gdGhhdCBpcyBmaXhlZCB3aXRoIHRoZQorbGF0ZXN0IE1XQVZFIHBhdGNoZXMuIFNvLCBpbiBvdGhlciB3b3JkcywgZG9uJ3QgYnlwYXNzIHRoZSB0ZXN0IGZvciBNV0FWRVMhCisKK0kgaGF2ZSBXaW5kb3dzIDk1IG9uIC9kZXYvaGRhMSwgc3dhcCBvbiAvZGV2L2hkYTIsIGFuZCBSZWQgSGF0IDUgb24gL2Rldi9oZGEzLgorCitUaGUgc3RlcHMsIHRoZW46CisKKyAgICBCb290IHRvIExpbnV4LiAKKyAgICBNb3VudCBXaW5kb3dzIDk1IGZpbGUgc3lzdGVtIChhc3N1bWUgbW91bnQgcG9pbnQgPSAvZG9zOTUpLgorICAgIG1rZGlyIC9kb3M5NS9saW51eAorICAgIG1rZGlyIC9kb3M5NS9saW51eC9ib290CisgICAgbWtkaXIgL2Rvczk1L2xpbnV4L2Jvb3QvcGFybXMKKworICAgIENvcHkgdGhlIGtlcm5lbCwgYW55IGluaXRyZCBpbWFnZSwgYW5kIGxvYWRsaW4gdG8gL2Rvczk1L2xpbnV4L2Jvb3QvLgorCisgICAgUmVib290IHRvIFdpbmRvd3MgOTUuCisKKyAgICBFZGl0IEM6L21zZG9zLnN5cyBhbmQgYWRkIG9yIGNoYW5nZSB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIExvZ289MAorICAgICAgICBCb290R1VJPTAKKworICAgIE5vdGUgdGhhdCBtc2Rvcy5zeXMgaXMgYSB0ZXh0IGZpbGUgYnV0IGl0IG5lZWRzIHRvIGJlIG1hZGUgJ3VuaGlkZGVuJywKKyAgICByZWFkYWJsZSBhbmQgd3JpdGFibGUgYmVmb3JlIGl0IGNhbiBiZSBlZGl0ZWQuICBUaGlzIGNhbiBiZSBkb25lIHdpdGgKKyAgICBET1MnICJhdHRyaWIiIGNvbW1hbmQuCisKKyAgICBFZGl0IGNvbmZpZy5zeXMgdG8gaGF2ZSBtdWx0aXBsZSBjb25maWcgbWVudXMuIEkgaGF2ZSBvbmUgZm9yIHdpbmRvd3MgOTUgYW5kCisgICAgZml2ZSBmb3IgTGludXgsIGxpa2UgdGhpczoKKy0tLS0tLS0tLS0tLQorW21lbnVdCittZW51aXRlbT1XOTUsIFdpbmRvd3MgOTUKK21lbnVpdGVtPUxJTlRQLCBMaW51eCAtIFRoaW5rUGFkCittZW51aXRlbT1MSU5UUDMsIExpbnV4IC0gVGhpbmtQYWQgQ29uc29sZQorbWVudWl0ZW09TElORE9DLCBMaW51eCAtIERvY2tlZAorbWVudWl0ZW09TElORE9DMywgTGludXggLSBEb2NrZWQgQ29uc29sZQorbWVudWl0ZW09TElOMSwgTGludXggLSBTaW5nbGUgVXNlciBNb2RlCitSRU0gbWVudWRlZmF1bHQ9Vzk1LDEwCisKK1tXOTVdCisKK1tMSU5UUF0KKworW0xJTkRPQ10KKworW0xJTlRQM10KKworW0xJTkRPQzNdCisKK1tMSU4xXQorCitbQ09NTU9OXQorRklMRVM9MzAKK1JFTSBQbGVhc2UgcmVhZCBSRUFETUUuVFhUIGluIEM6XE1XVyBzdWJkaXJlY3RvcnkgYmVmb3JlIGNoYW5naW5nIHRoZSBET1M9IHN0YXRlbWVudC4KK0RPUz1ISUdILFVNQgorREVWSUNFPUM6XE1XV1xNQU5BR0VSXE1XRDUwNDMwLkVYRQorU0hFTEw9YzpcY29tbWFuZC5jb20gL2U6MjA0OAorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgaW1wb3J0YW50IHRoaW5ncyBhcmUgdGhlIFNIRUxMIGFuZCBERVZJQ0Ugc3RhdGVtZW50cy4KKworICAgIFRoZW4gY2hhbmdlIGF1dG9leGVjLmJhdC4gQmFzaWNhbGx5IGV2ZXJ5dGhpbmcgaW4gdGhlcmUgb3JpZ2luYWxseSBzaG91bGQgYmUKKyAgICBkb25lIE9OTFkgd2hlbiBXaW5kb3dzIDk1IGlzIGJvb3RlZC4gVGhlbiB5b3UgYWRkIG5ldyB0aGluZ3Mgc3BlY2lmaWNhbGx5CisgICAgZm9yIExpbnV4LiAgTWluZSBpcyBhcyBmb2xsb3dzCisKKy0tLS0tLS0tLS0tLS0tLQorQEVDSE8gT0ZGCitpZiAiJUNPTkZJRyUiID09ICJXOTUiIGdvdG8gVzk1CisKK1JFTQorUkVNIExpbnV4IHN0dWZmCitSRU0KK1NFVCBNV1BBVEg9QzpcTVdXXERMTDtDOlxNV1dcTVdHQU1FUztDOlxNV1dcRFNQCitTRVQgQkxBU1RFUj1BMjIwIEk1IEQxCitTRVQgTVdST09UPUM6XE1XVworU0VUIExJQlBBVEg9QzpcTVdXXERMTAorU0VUIFBBVEg9QzpcV0lORE9XUztDOlxNV1dcRExMOworQ0FMTCBNV0FWRSBTVEFSVCBOT1NIT1cKK2M6XGxpbnV4XGJvb3RcbG9hZGxpbi5leGUgQGM6XGxpbnV4XGJvb3RccGFybXNcJUNPTkZJRyUucGFyCisKKzpXOTUKK1JFTQorUkVNIFdpbmRvd3MgOTUgc3R1ZmYKK1JFTQorYzpcdG9vbGtpdFxndWFyZAorU0VUIE1TSU5QVVQ9QzpcTVNJTlBVVAorU0VUIE1XUEFUSD1DOlxNV1dcRExMO0M6XE1XV1xNV0dBTUVTO0M6XE1XV1xEU1AKK1JFTSBUaGUgZm9sbG93aW5nIGlzIHVzZWQgYnkgRE9TIGdhbWVzIHRvIHJlY29nbml6ZSBTb3VuZCBCbGFzdGVyIGhhcmR3YXJlLgorUkVNIElmIGhhcmR3YXJlIHNldHRpbmdzIGFyZSBjaGFuZ2VkLCBwbGVhc2UgY2hhbmdlIHRoaXMgbGluZSBhcyB3ZWxsLgorUkVNIFNlZSB0aGUgTXdhdmUgUkVBRE1FIGZpbGUgZm9yIGluc3RydWN0aW9ucy4KK1NFVCBCTEFTVEVSPUEyMjAgSTUgRDEKK1NFVCBNV1JPT1Q9QzpcTVdXCitTRVQgTElCUEFUSD1DOlxNV1dcRExMCitTRVQgUEFUSD1DOlxXSU5ET1dTO0M6XFdJTkRPV1NcQ09NTUFORDtFOlxPUkFXSU45NVxCSU47ZjpcbXNkZXZcYmluO2U6XHYzMFxiaW4uZGJnO3Y6XGRldnRcdjMwXGJpbjtjOlxKYXZhU0RLXEJpbjtDOlxNV1dcRExMOworU0VUIElOQ0xVREU9ZjpcTVNERVZcSU5DTFVERTtGOlxNU0RFVlxNRkNcSU5DTFVERQorU0VUIExJQj1GOlxNU0RFVlxMSUI7RjpcTVNERVZcTUZDXExJQgord2luCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOb3cgYnVpbGQgYSBmaWxlIGluIGM6XGxpbnV4XGJvb3RccGFybXMgZm9yIGVhY2ggTGludXggY29uZmlnIHRoYXQgeW91IGhhdmUuCisKK0ZvciBleGFtcGxlLCBteSBMSU5ET0MzIGNvbmZpZyBpcyBmb3IgYSBkb2NrZWQgVGhpbmtwYWQgYXQgcnVubGV2ZWwgMyB3aXRoIG5vCitpbml0cmQgaW1hZ2UsIGFuZCBoYXMgYSBwYXJhbWV0ZXIgZmlsZSBuYW1lZCBMSU5ET0MzLlBBUiBpbiBjOlxsaW51eFxib290XHBhcm1zOgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAgIExPQURMSU4gQHBhcmFtX2ZpbGUgaW1hZ2U9b3RoZXJfaW1hZ2Ugcm9vdD0vZGV2L290aGVyCisjCisjCUxpbnV4IENvbnNvbGUgaW4gZG9ja2luZyBzdGF0aW9uCisjCitjOlxsaW51eFxib290XHpJbWFnZS5rcm4gICAgICAgICMgRmlyc3QgdmFsdWUgbXVzdCBiZSBmaWxlbmFtZSBvZiBMaW51eCBrZXJuZWwuCityb290PS9kZXYvaGRhMyAgICAgICAgICAgICAgICAgICMgZGV2aWNlIHdoaWNoIGdldHMgbW91bnRlZCBhcyByb290IEZTCitybyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT3RoZXIga2VybmVsIGFyZ3VtZW50cyBnbyBoZXJlLgorYXBtPW9mZgorZG9jPXllcworMworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGRvYz15ZXMgcGFyYW1ldGVyIGlzIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHVzZWQgYnkgbXkgaW5pdCBzY3JpcHRzLCBub3QKK2Ega2VybmVsIGFyZ3VtZW50LgorCitIb3dldmVyLCB0aGUgYXBtPW9mZiBwYXJhbWV0ZXIgSVMgYSBrZXJuZWwgYXJndW1lbnQhICBBUE0sIGF0IGxlYXN0IGluIG15IHNldHVwLAorY2F1c2VzIHRoZSBrZXJuZWwgdG8gY3Jhc2ggd2hlbiBsb2FkZWQgdmlhIGxvYWRsaW4gKGJ1dCBOT1Qgd2hlbiBsb2FkZWQgdmlhCitMSUxPKS4gVGhlIEFQTSBzdHVmZiBDT1VMRCBiZSBmb3JjZWQgb3V0IG9mIHRoZSBrZXJuZWwgdmlhIHRoZSBrZXJuZWwgY29tcGlsZQorb3B0aW9ucy4gSW5zdGVhZCwgSSBnb3QgYW4gdW5vZmZpY2lhbCBwYXRjaCB0byB0aGUgQVBNIGRyaXZlcnMgdGhhdCBhbGxvd3MgdGhlbQordG8gYmUgZHluYW1pY2FsbHkgZGVhY3RpdmF0ZWQgdmlhIGtlcm5lbCBhcmd1bWVudHMuIFdoYXRldmVyIHlvdSBjaG9zZSB0bworZG9jdW1lbnQsIEFQTSwgaXQgc2VlbXMsIE1VU1QgYmUgb2ZmIGZvciBzZXR1cHMgbGlrZSBtaW5lLgorCitOb3cgbWFrZSBzdXJlIEM6XE1XV1xNV0NPTkZJRy5SRUYgbG9va3MgbGlrZSB0aGlzOgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitbTmF0aXZlRE9TXQorRGVmYXVsdD1TQjEuNQorU0JJbnB1dFNvdXJjZT1DRAorU1lOVEg9Rk0KK1FTb3VuZD1PRkYKK1JldmVyYj1PRkYKK0Nob3J1cz1PRkYKK1JldmVyYkRlcHRoPTUKK0Nob3J1c0RlcHRoPTUKK1NCSW5wdXRWb2x1bWU9NQorU0JNYWluVm9sdW1lPTEwCitTQldhdmVWb2x1bWU9MTAKK1NCU3ludGhWb2x1bWU9MTAKK1dhdmVUYWJsZVZvbHVtZT0xMAorQXVkaW9Qb3dlckRyaXZlcj1PTgorCitbRmFzdENGR10KK1Nob3c9Tm8KK0hpZGVPcHRpb249T2ZmCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPUiB0aGUgRGVmYXVsdD0gbGluZSBDT1VMRCBiZQorCitEZWZhdWx0PVNCUFJPCisKK1JlYm9vdCB0byBXaW5kb3dzIDk1IGFuZCBjaG9vc2UgTGludXguIFdoZW4gYm9vdGVkLCB1c2Ugc25kY29uZmlnIHRvIGNvbmZpZ3VyZQordGhlIHNvdW5kIG1vZHVsZXMgYW5kIHZvaWzDoCAtIFRoaW5rUGFkIHNvdW5kIHdpdGggTGludXguCisKK05vdyB0aGUgZ290Y2hhcyAtIHlvdSBjYW4gZWl0aGVyIGhhdmUgQ0Qgc291bmQgT1IgTWl4ZXJzIGJ1dCBub3QgYm90aC4gVGhhdCdzIGEKK3Byb2JsZW0gd2l0aCB0aGUgU0IxLjUgKENEIHNvdW5kKSBvciBTQlBSTyAoTWl4ZXJzKSBzZXR0aW5ncy4gTm8gb25lIGtub3dzIHdoeQordGhpcyBpcyEKKworRm9yIHNvbWUgcmVhc29uIE1QRUczIGZpbGVzLCB3aGVuIHBsYXllZCB0aHJvdWdoIG1wZzEyMywgc291bmQgbGlrZSB0aGV5CithcmUgcGxheWluZyBhdCAxLzh0aCBzcGVlZCAtIG5vdCB2ZXJ5IHVzZWZ1bCEgIElmIHlvdSBoYXZlIEFOWSBpbnNpZ2h0CitvbiB3aHkgdGhpcyBzZWNvbmQgdGhpbmcgbWlnaHQgYmUgaGFwcGVuaW5nLCBJIHdvdWxkIGJlIGdyYXRlZnVsLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIF8vICAgICAgXy9fL18vXy8KKyAgIF8vXy8gIF8vXy8gICAgIF8vCisgIF8vIF8vXy8gXy9fL18vXy8gICAgICBNYXJ0aW4gSm9obiBCYXJ0bGV0dAorIF8vICBfLyAgXy8gICAgIF8vICAgICAgKG1hcnRpbkBuaXRyYW0uZGVtb24uY28udWspCitfLyAgICAgIF8vXy9fL18vCisgICAgICAgXy8KK18vICAgIF8vCisgXy9fLworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvb3NzL29zcy1wYXJhbWV0ZXJzLnR4dCBiL0RvY3VtZW50YXRpb24vc291bmQvb3NzL29zcy1wYXJhbWV0ZXJzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWIzOTFlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3Mvb3NzLXBhcmFtZXRlcnMudHh0CkBAIC0wLDAgKzEsNTEgQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgT1NTIEtlcm5lbCBQYXJhbWV0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitTZWUgRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQgZm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gb24KK3NwZWNpZnlpbmcgbW9kdWxlIHBhcmFtZXRlcnMuCisKK1RoaXMgZG9jdW1lbnQgbWF5IG5vdCBiZSBlbnRpcmVseSB1cCB0byBkYXRlIGFuZCBjb21wcmVoZW5zaXZlLiBUaGUgY29tbWFuZAorIm1vZGluZm8gLXAgJHttb2R1bGVuYW1lfSIgc2hvd3MgYSBjdXJyZW50IGxpc3Qgb2YgYWxsIHBhcmFtZXRlcnMgb2YgYSBsb2FkYWJsZQorbW9kdWxlLiBMb2FkYWJsZSBtb2R1bGVzLCBhZnRlciBiZWluZyBsb2FkZWQgaW50byB0aGUgcnVubmluZyBrZXJuZWwsIGFsc28KK3JldmVhbCB0aGVpciBwYXJhbWV0ZXJzIGluIC9zeXMvbW9kdWxlLyR7bW9kdWxlbmFtZX0vcGFyYW1ldGVycy8uIFNvbWUgb2YgdGhlc2UKK3BhcmFtZXRlcnMgbWF5IGJlIGNoYW5nZWQgYXQgcnVudGltZSBieSB0aGUgY29tbWFuZAorImVjaG8gLW4gJHt2YWx1ZX0gPiAvc3lzL21vZHVsZS8ke21vZHVsZW5hbWV9L3BhcmFtZXRlcnMvJHtwYXJtfSIuCisKKworCWFkMTg0OD0JCVtIVyxPU1NdCisJCQlGb3JtYXQ6IDxpbz4sPGlycT4sPGRtYT4sPGRtYTI+LDx0eXBlPgorCisJYWVkc3AxNj0JW0hXLE9TU10gQXVkaW8gRXhjZWwgRFNQIDE2CisJCQlGb3JtYXQ6IDxpbz4sPGlycT4sPGRtYT4sPG1zc19pbz4sPG1wdV9pbz4sPG1wdV9pcnE+CisJCQlTZWUgYWxzbyBoZWFkZXIgb2Ygc291bmQvb3NzL2FlZHNwMTYuYy4KKworCWRtYXNvdW5kPQlbSFcsT1NTXSBTb3VuZCBzdWJzeXN0ZW0gYnVmZmVycworCisJbXB1NDAxPQkJW0hXLE9TU10KKwkJCUZvcm1hdDogPGlvPiw8aXJxPgorCisJb3BsMz0JCVtIVyxPU1NdCisJCQlGb3JtYXQ6IDxpbz4KKworCXBhczI9CQlbSFcsT1NTXSBGb3JtYXQ6CisJCQk8aW8+LDxpcnE+LDxkbWE+LDxkbWExNj4sPHNiX2lvPiw8c2JfaXJxPiw8c2JfZG1hPiw8c2JfZG1hMTY+CisKKwlwc3M9CQlbSFcsT1NTXSBQZXJzb25hbCBTb3VuZCBTeXN0ZW0gKEVDSE8gRVNDNjE0KQorCQkJRm9ybWF0OgorCQkJPGlvPiw8bXNzX2lvPiw8bXNzX2lycT4sPG1zc19kbWE+LDxtcHVfaW8+LDxtcHVfaXJxPgorCisJc3NjYXBlPQkJW0hXLE9TU10KKwkJCUZvcm1hdDogPGlvPiw8aXJxPiw8ZG1hPiw8bXB1X2lvPiw8bXB1X2lycT4KKworCXRyaXg9CQlbSFcsT1NTXSBNZWRpYVRyaXggQXVkaW9Ucml4IFBybworCQkJRm9ybWF0OgorCQkJPGlvPiw8aXJxPiw8ZG1hPiw8ZG1hMj4sPHNiX2lvPiw8c2JfaXJxPiw8c2JfZG1hPiw8bXB1X2lvPiw8bXB1X2lycT4KKworCXVhcnQ0MDE9CVtIVyxPU1NdCisJCQlGb3JtYXQ6IDxpbz4sPGlycT4KKworCXVhcnQ2ODUwPQlbSFcsT1NTXQorCQkJRm9ybWF0OiA8aW8+LDxpcnE+CisKKwl3YXZlYXJ0aXN0PQlbSFcsT1NTXQorCQkJRm9ybWF0OiA8aW8+LDxpcnE+LDxkbWE+LDxkbWEyPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvdWx0cmFzb3VuZCBiL0RvY3VtZW50YXRpb24vc291bmQvb3NzL3VsdHJhc291bmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVkMzMxYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc291bmQvb3NzL3VsdHJhc291bmQKQEAgLTAsMCArMSwzMCBAQAorbW9kcHJvYmUgc291bmQKK2luc21vZCBhZDE4NDgKK2luc21vZCBndXMgaW89KiBpcnE9KiBkbWE9KiAuLi4KKworVGhpcyBsb2FkcyB0aGUgZHJpdmVyIGZvciB0aGUgR3JhdmlzIFVsdHJhc291bmQgZmFtaWx5IG9mIHNvdW5kIGNhcmRzLgorCitUaGUgZ3VzIG1vZHVsZSB0YWtlcyB0aGUgZm9sbG93aW5nIGFyZ3VtZW50cworCitpbwkJSS9PIGFkZHJlc3Mgb2YgdGhlIFVsdHJhc291bmQgY2FyZCAoZWcuIGlvPTB4MjIwKQoraXJxCQlJUlEgb2YgdGhlIFNvdW5kIEJsYXN0ZXIgY2FyZCAKK2RtYSAgICAgCURNQSBjaGFubmVsIGZvciB0aGUgU291bmQgQmxhc3RlcgorZG1hMTYgICAJMm5kIERNQSBjaGFubmVsLCBvbmx5IG5lZWRlZCBmb3IgZnVsbCBkdXBsZXggb3BlcmF0aW9uCit0eXBlCQkxIGZvciBQblAgY2FyZAorZ3VzMTYJCTEgZm9yIHVzaW5nIDE2IGJpdCBzYW1wbGluZyBkYXVnaHRlciBib2FyZAorbm9fd2F2ZV9kbWEJU2V0IHRvIGRpc2FibGUgRE1BIHVzYWdlIGZvciB3YXZldGFibGUgKHNlZSBub3RlKQorZGIxNgkJPz8/CisKKworbm9fd2F2ZV9kbWEgb3B0aW9uCisKK1RoaXMgb3B0aW9uIGRlZmF1bHRzIHRvIGEgdmFsdWUgb2YgMCwgd2hpY2ggYWxsb3dzIHRoZSBVbHRyYXNvdW5kIHdhdmV0YWJsZQorRFNQIHRvIHVzZSBETUEgZm9yIHBsYXliYWNrIGFuZCBkb3dubG9hZGluZyBzYW1wbGVzLiBUaGlzIGlzIHRoZSBzYW1lCithcyB0aGUgb2xkIGJlaGF2aW91ci4gSWYgc2V0IHRvIDEsIG5vIERNQSBpcyBuZWVkZWQgZm9yIGRvd25sb2FkaW5nIHNhbXBsZXMsCithbmQgYWxsb3dzIG93bmVycyBvZiBhIEdVUyBNQVggdG8gbWFrZSB1c2Ugb2Ygc2ltdWx0YW5lb3VzIGRpZ2l0YWwgYXVkaW8KKygvZGV2L2RzcCksIE1JREksIGFuZCB3YXZldGFibGUgcGxheWJhY2suCisKKworSWYgeW91IGhhdmUgcHJvYmxlbXMgaW4gcmVjb3JkaW5nIHdpdGggR1VTIE1BWCwgeW91IGNvdWxkIHRyeSB0byB1c2UKK2p1c3Qgb25lIDggYml0IERNQSBjaGFubmVsLiBSZWNvcmRpbmcgd2lsbCBub3Qgd29yayB3aXRoIG9uZSBETUEKK2NoYW5uZWwgaWYgaXQncyBhIDE2IGJpdCBvbmUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NwYXJzZS50eHQgYi9Eb2N1bWVudGF0aW9uL3NwYXJzZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNlYWIxMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc3BhcnNlLnR4dApAQCAtMCwwICsxLDEwOCBAQAorQ29weXJpZ2h0IDIwMDQgTGludXMgVG9ydmFsZHMKK0NvcHlyaWdodCAyMDA0IFBhdmVsIE1hY2hlayA8cGF2ZWxAdWN3LmN6PgorQ29weXJpZ2h0IDIwMDYgQm9iIENvcGVsYW5kIDxtZUBib2Jjb3BlbGFuZC5jb20+CisKK1VzaW5nIHNwYXJzZSBmb3IgdHlwZWNoZWNraW5nCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisiX19iaXR3aXNlIiBpcyBhIHR5cGUgYXR0cmlidXRlLCBzbyB5b3UgaGF2ZSB0byBkbyBzb21ldGhpbmcgbGlrZSB0aGlzOgorCisgICAgICAgIHR5cGVkZWYgaW50IF9fYml0d2lzZSBwbV9yZXF1ZXN0X3Q7CisKKyAgICAgICAgZW51bSBwbV9yZXF1ZXN0IHsKKyAgICAgICAgICAgICAgICBQTV9TVVNQRU5EID0gKF9fZm9yY2UgcG1fcmVxdWVzdF90KSAxLAorICAgICAgICAgICAgICAgIFBNX1JFU1VNRSA9IChfX2ZvcmNlIHBtX3JlcXVlc3RfdCkgMgorICAgICAgICB9OworCit3aGljaCBtYWtlcyBQTV9TVVNQRU5EIGFuZCBQTV9SRVNVTUUgImJpdHdpc2UiIGludGVnZXJzICh0aGUgIl9fZm9yY2UiIGlzCit0aGVyZSBiZWNhdXNlIHNwYXJzZSB3aWxsIGNvbXBsYWluIGFib3V0IGNhc3RpbmcgdG8vZnJvbSBhIGJpdHdpc2UgdHlwZSwKK2J1dCBpbiB0aGlzIGNhc2Ugd2UgcmVhbGx5IF9kb18gd2FudCB0byBmb3JjZSB0aGUgY29udmVyc2lvbikuIEFuZCBiZWNhdXNlCit0aGUgZW51bSB2YWx1ZXMgYXJlIGFsbCB0aGUgc2FtZSB0eXBlLCBub3cgImVudW0gcG1fcmVxdWVzdCIgd2lsbCBiZSB0aGF0Cit0eXBlIHRvby4KKworQW5kIHdpdGggZ2NjLCBhbGwgdGhlIF9fYml0d2lzZS9fX2ZvcmNlIHN0dWZmIGdvZXMgYXdheSwgYW5kIGl0IGFsbCBlbmRzCit1cCBsb29raW5nIGp1c3QgbGlrZSBpbnRlZ2VycyB0byBnY2MuCisKK1F1aXRlIGZyYW5rbHksIHlvdSBkb24ndCBuZWVkIHRoZSBlbnVtIHRoZXJlLiBUaGUgYWJvdmUgYWxsIHJlYWxseSBqdXN0Citib2lscyBkb3duIHRvIG9uZSBzcGVjaWFsICJpbnQgX19iaXR3aXNlIiB0eXBlLgorCitTbyB0aGUgc2ltcGxlciB3YXkgaXMgdG8ganVzdCBkbworCisgICAgICAgIHR5cGVkZWYgaW50IF9fYml0d2lzZSBwbV9yZXF1ZXN0X3Q7CisKKyAgICAgICAgI2RlZmluZSBQTV9TVVNQRU5EICgoX19mb3JjZSBwbV9yZXF1ZXN0X3QpIDEpCisgICAgICAgICNkZWZpbmUgUE1fUkVTVU1FICgoX19mb3JjZSBwbV9yZXF1ZXN0X3QpIDIpCisKK2FuZCB5b3Ugbm93IGhhdmUgYWxsIHRoZSBpbmZyYXN0cnVjdHVyZSBuZWVkZWQgZm9yIHN0cmljdCB0eXBlY2hlY2tpbmcuCisKK09uZSBzbWFsbCBub3RlOiB0aGUgY29uc3RhbnQgaW50ZWdlciAiMCIgaXMgc3BlY2lhbC4gWW91IGNhbiB1c2UgYQorY29uc3RhbnQgemVybyBhcyBhIGJpdHdpc2UgaW50ZWdlciB0eXBlIHdpdGhvdXQgc3BhcnNlIGV2ZXIgY29tcGxhaW5pbmcuCitUaGlzIGlzIGJlY2F1c2UgImJpdHdpc2UiIChhcyB0aGUgbmFtZSBpbXBsaWVzKSB3YXMgZGVzaWduZWQgZm9yIG1ha2luZworc3VyZSB0aGF0IGJpdHdpc2UgdHlwZXMgZG9uJ3QgZ2V0IG1peGVkIHVwIChsaXR0bGUtZW5kaWFuIHZzIGJpZy1lbmRpYW4KK3ZzIGNwdS1lbmRpYW4gdnMgd2hhdGV2ZXIpLCBhbmQgdGhlcmUgdGhlIGNvbnN0YW50ICIwIiByZWFsbHkgX2lzXworc3BlY2lhbC4KKworX19iaXR3aXNlX18gLSB0byBiZSB1c2VkIGZvciByZWxhdGl2ZWx5IGNvbXBhY3Qgc3R1ZmYgKGdmcF90LCBldGMuKSB0aGF0CitpcyBtb3N0bHkgd2FybmluZy1mcmVlIGFuZCBpcyBzdXBwb3NlZCB0byBzdGF5IHRoYXQgd2F5LiAgV2FybmluZ3Mgd2lsbAorYmUgZ2VuZXJhdGVkIHdpdGhvdXQgX19DSEVDS19FTkRJQU5fXy4KKworX19iaXR3aXNlIC0gbm9pc3kgc3R1ZmY7IGluIHBhcnRpY3VsYXIsIF9fbGUqL19fYmUqIGFyZSB0aGF0LiAgV2UgcmVhbGx5Citkb24ndCB3YW50IHRvIGRyb3duIGluIG5vaXNlIHVubGVzcyB3ZSdkIGV4cGxpY2l0bHkgYXNrZWQgZm9yIGl0LgorCitVc2luZyBzcGFyc2UgZm9yIGxvY2sgY2hlY2tpbmcKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitUaGUgZm9sbG93aW5nIG1hY3JvcyBhcmUgdW5kZWZpbmVkIGZvciBnY2MgYW5kIGRlZmluZWQgZHVyaW5nIGEgc3BhcnNlCitydW4gdG8gdXNlIHRoZSAiY29udGV4dCIgdHJhY2tpbmcgZmVhdHVyZSBvZiBzcGFyc2UsIGFwcGxpZWQgdG8KK2xvY2tpbmcuICBUaGVzZSBhbm5vdGF0aW9ucyB0ZWxsIHNwYXJzZSB3aGVuIGEgbG9jayBpcyBoZWxkLCB3aXRoCityZWdhcmQgdG8gdGhlIGFubm90YXRlZCBmdW5jdGlvbidzIGVudHJ5IGFuZCBleGl0LgorCitfX211c3RfaG9sZCAtIFRoZSBzcGVjaWZpZWQgbG9jayBpcyBoZWxkIG9uIGZ1bmN0aW9uIGVudHJ5IGFuZCBleGl0LgorCitfX2FjcXVpcmVzIC0gVGhlIHNwZWNpZmllZCBsb2NrIGlzIGhlbGQgb24gZnVuY3Rpb24gZXhpdCwgYnV0IG5vdCBlbnRyeS4KKworX19yZWxlYXNlcyAtIFRoZSBzcGVjaWZpZWQgbG9jayBpcyBoZWxkIG9uIGZ1bmN0aW9uIGVudHJ5LCBidXQgbm90IGV4aXQuCisKK0lmIHRoZSBmdW5jdGlvbiBlbnRlcnMgYW5kIGV4aXRzIHdpdGhvdXQgdGhlIGxvY2sgaGVsZCwgYWNxdWlyaW5nIGFuZAorcmVsZWFzaW5nIHRoZSBsb2NrIGluc2lkZSB0aGUgZnVuY3Rpb24gaW4gYSBiYWxhbmNlZCB3YXksIG5vCithbm5vdGF0aW9uIGlzIG5lZWRlZC4gIFRoZSB0cmVlIGFubm90YXRpb25zIGFib3ZlIGFyZSBmb3IgY2FzZXMgd2hlcmUKK3NwYXJzZSB3b3VsZCBvdGhlcndpc2UgcmVwb3J0IGEgY29udGV4dCBpbWJhbGFuY2UuCisKK0dldHRpbmcgc3BhcnNlCit+fn5+fn5+fn5+fn5+fgorCitZb3UgY2FuIGdldCBsYXRlc3QgcmVsZWFzZWQgdmVyc2lvbnMgZnJvbSB0aGUgU3BhcnNlIGhvbWVwYWdlIGF0CitodHRwczovL3NwYXJzZS53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL01haW5fUGFnZQorCitBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGdldCBzbmFwc2hvdHMgb2YgdGhlIGxhdGVzdCBkZXZlbG9wbWVudCB2ZXJzaW9uCitvZiBzcGFyc2UgdXNpbmcgZ2l0IHRvIGNsb25lLi4KKworICAgICAgICBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2RldmVsL3NwYXJzZS9zcGFyc2UuZ2l0CisKK0RhdmVKIGhhcyBob3VybHkgZ2VuZXJhdGVkIHRhcmJhbGxzIG9mIHRoZSBnaXQgdHJlZSBhdmFpbGFibGUgYXQuLgorCisgICAgICAgIGh0dHA6Ly93d3cuY29kZW1vbmtleS5vcmcudWsvcHJvamVjdHMvZ2l0LXNuYXBzaG90cy9zcGFyc2UvCisKKworT25jZSB5b3UgaGF2ZSBpdCwganVzdCBkbworCisgICAgICAgIG1ha2UKKyAgICAgICAgbWFrZSBpbnN0YWxsCisKK2FzIGEgcmVndWxhciB1c2VyLCBhbmQgaXQgd2lsbCBpbnN0YWxsIHNwYXJzZSBpbiB5b3VyIH4vYmluIGRpcmVjdG9yeS4KKworVXNpbmcgc3BhcnNlCit+fn5+fn5+fn5+fn4KKworRG8gYSBrZXJuZWwgbWFrZSB3aXRoICJtYWtlIEM9MSIgdG8gcnVuIHNwYXJzZSBvbiBhbGwgdGhlIEMgZmlsZXMgdGhhdCBnZXQKK3JlY29tcGlsZWQsIG9yIHVzZSAibWFrZSBDPTIiIHRvIHJ1biBzcGFyc2Ugb24gdGhlIGZpbGVzIHdoZXRoZXIgdGhleSBuZWVkIHRvCitiZSByZWNvbXBpbGVkIG9yIG5vdC4gIFRoZSBsYXR0ZXIgaXMgYSBmYXN0IHdheSB0byBjaGVjayB0aGUgd2hvbGUgdHJlZSBpZiB5b3UKK2hhdmUgYWxyZWFkeSBidWlsdCBpdC4KKworVGhlIG9wdGlvbmFsIG1ha2UgdmFyaWFibGUgQ0YgY2FuIGJlIHVzZWQgdG8gcGFzcyBhcmd1bWVudHMgdG8gc3BhcnNlLiAgVGhlCitidWlsZCBzeXN0ZW0gcGFzc2VzIC1XYml0d2lzZSB0byBzcGFyc2UgYXV0b21hdGljYWxseS4gIFRvIHBlcmZvcm0gZW5kaWFubmVzcworY2hlY2tzLCB5b3UgbWF5IGRlZmluZSBfX0NIRUNLX0VORElBTl9fOgorCisgICAgICAgIG1ha2UgQz0yIENGPSItRF9fQ0hFQ0tfRU5ESUFOX18iCisKK1RoZXNlIGNoZWNrcyBhcmUgZGlzYWJsZWQgYnkgZGVmYXVsdCBhcyB0aGV5IGdlbmVyYXRlIGEgaG9zdCBvZiB3YXJuaW5ncy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc3BpLy5naXRpZ25vcmUgYi9Eb2N1bWVudGF0aW9uL3NwaS8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyODA1NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NwaS8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsMiBAQAorc3BpZGV2X2ZkeAorc3BpZGV2X3Rlc3QKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc3BpLzAwLUlOREVYIGIvRG9jdW1lbnRhdGlvbi9zcGkvMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTEyOGZhOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc3BpLzAwLUlOREVYCkBAIC0wLDAgKzEsMjIgQEAKKzAwLUlOREVYCisJLSB0aGlzIGZpbGUuCitNYWtlZmlsZQorCS0gTWFrZWZpbGUgZm9yIHRoZSBleGFtcGxlIHNvdXJjZWZpbGVzLgorYnV0dGVyZmx5CisJLSBBVlIgQnV0dGVyZmx5IFNQSSBkcml2ZXIgb3ZlcnZpZXcgYW5kIHBpbiBjb25maWd1cmF0aW9uLgorZXA5M3h4X3NwaQorCS0gQmFzaWMgRVA5M3h4IFNQSSBkcml2ZXIgY29uZmlndXJhdGlvbi4KK3B4YTJ4eAorCS0gUFhBMnh4IFNQSSBtYXN0ZXIgY29udHJvbGxlciBidWlsZCBieSBzcGlfbWVzc2FnZSBmaWZvIHdxCitzcGlkZXYKKwktIEludHJvIHRvIHRoZSB1c2Vyc3BhY2UgQVBJIGZvciBzcGkgZGV2aWNlcworc3BpZGV2X2ZkeC5jCisJLSBzcGlkZXYgZXhhbXBsZSBmaWxlCitzcGktbG03MGxscAorCS0gQ29ubmVjdGluZyBhbiBMTTcwLUxMUCBzZW5zb3IgdG8gdGhlIGtlcm5lbCB2aWEgdGhlIFNQSSBzdWJzeXMuCitzcGktc2MxOGlzNjAyCisJLSBOWFAgU0MxOElTNjAyLzYwMyBJMkMtYnVzIHRvIFNQSSBicmlkZ2UKK3NwaS1zdW1tYXJ5CisJLSAoTGludXgpIFNQSSBvdmVydmlldy4gSWYgdW5zdXJlIGFib3V0IFNQSSBvciBTUEkgaW4gTGludXgsIHN0YXJ0IGhlcmUuCitzcGlkZXZfdGVzdC5jCisJLSBTUEkgdGVzdGluZyB1dGlsaXR5LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zcGkvTWFrZWZpbGUgYi9Eb2N1bWVudGF0aW9uL3NwaS9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmEyNTU4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zcGkvTWFrZWZpbGUKQEAgLTAsMCArMSw4IEBACisjIExpc3Qgb2YgcHJvZ3JhbXMgdG8gYnVpbGQKK2hvc3Rwcm9ncy15IDo9IHNwaWRldl90ZXN0IHNwaWRldl9mZHgKKworIyBUZWxsIGtidWlsZCB0byBhbHdheXMgYnVpbGQgdGhlIHByb2dyYW1zCithbHdheXMgOj0gJChob3N0cHJvZ3MteSkKKworSE9TVENGTEFHU19zcGlkZXZfdGVzdC5vICs9IC1JJChvYmp0cmVlKS91c3IvaW5jbHVkZQorSE9TVENGTEFHU19zcGlkZXZfZmR4Lm8gKz0gLUkkKG9ianRyZWUpL3Vzci9pbmNsdWRlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NwaS9idXR0ZXJmbHkgYi9Eb2N1bWVudGF0aW9uL3NwaS9idXR0ZXJmbHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTkyN2FmNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc3BpL2J1dHRlcmZseQpAQCAtMCwwICsxLDY4IEBACitzcGlfYnV0dGVyZmx5IC0gcGFycG9ydC10by1idXR0ZXJmbHkgYWRhcHRlciBkcml2ZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGlzIGEgaGFyZHdhcmUgYW5kIHNvZnR3YXJlIHByb2plY3QgdGhhdCBpbmNsdWRlcyBidWlsZGluZyBhbmQgdXNpbmcKK2EgcGFyYWxsZWwgcG9ydCBhZGFwdGVyIGNhYmxlLCB0b2dldGhlciB3aXRoIGFuICJBVlIgQnV0dGVyZmx5IiB0byBydW4KK2Zpcm13YXJlIGZvciB1c2VyIGludGVyZmFjaW5nIGFuZC9vciBzZW5zb3JzLiAgQSBCdXR0ZXJmbHkgaXMgYSAkVVMyMAorYmF0dGVyeSBwb3dlcmVkIGNhcmQgd2l0aCBhbiBBVlIgbWljcm9jb250cm9sbGVyIGFuZCBsb3RzIG9mIGdvb2RpZXM6CitzZW5zb3JzLCBMQ0QsIGZsYXNoLCB0b2dnbGUgc3RpY2ssIGFuZCBtb3JlLiAgWW91IGNhbiB1c2UgQVZSLUdDQyB0bworZGV2ZWxvcCBmaXJtd2FyZSBmb3IgdGhpcywgYW5kIGZsYXNoIGl0IHVzaW5nIHRoaXMgYWRhcHRlciBjYWJsZS4KKworWW91IGNhbiBtYWtlIHRoaXMgYWRhcHRlciBmcm9tIGFuIG9sZCBwcmludGVyIGNhYmxlIGFuZCBzb2xkZXIgdGhpbmdzCitkaXJlY3RseSB0byB0aGUgQnV0dGVyZmx5LiAgT3IgKGlmIHlvdSBoYXZlIHRoZSBwYXJ0cyBhbmQgc2tpbGxzKSB5b3UKK2NhbiBjb21lIHVwIHdpdGggc29tZXRoaW5nIGZhbmNpZXIsIHByb3ZpZGluZyBjaXJ1aXQgcHJvdGVjdGlvbiB0byB0aGUKK0J1dHRlcmZseSBhbmQgdGhlIHByaW50ZXIgcG9ydCwgb3Igd2l0aCBhIGJldHRlciBwb3dlciBzdXBwbHkgdGhhbiB0d28KK3NpZ25hbCBwaW5zIGZyb20gdGhlIHByaW50ZXIgcG9ydC4gIE9yIGZvciB0aGF0IG1hdHRlciwgeW91IGNhbiB1c2UKK3NpbWlsYXIgY2FibGVzIHRvIHRhbGsgdG8gbWFueSBBVlIgYm9hcmRzLCBldmVuIGEgYnJlYWRib2FyZC4KKworVGhpcyBpcyBtb3JlIHBvd2VyZnVsIHRoYW4gIklTUCBwcm9ncmFtbWluZyIgY2FibGVzIHNpbmNlIGl0IGxldHMga2VybmVsCitTUEkgcHJvdG9jb2wgZHJpdmVycyBpbnRlcmFjdCB3aXRoIHRoZSBBVlIsIGFuZCBjb3VsZCBldmVuIGxldCB0aGUgQVZSCitpc3N1ZSBpbnRlcnJ1cHRzIHRvIHRoZW0uICBMYXRlciwgeW91ciBwcm90b2NvbCBkcml2ZXIgc2hvdWxkIHdvcmsKK2Vhc2lseSB3aXRoIGEgInJlYWwgU1BJIGNvbnRyb2xsZXIiLCBpbnN0ZWFkIG9mIHRoaXMgYml0YmFuZ2VyLgorCisKK1RoZSBmaXJzdCBjYWJsZSBjb25uZWN0aW9ucyB3aWxsIGhvb2sgTGludXggdXAgdG8gb25lIFNQSSBidXMsIHdpdGggdGhlCitBVlIgYW5kIGEgRGF0YUZsYXNoIGNoaXA7IGFuZCB0byB0aGUgQVZSIHJlc2V0IGxpbmUuICBUaGlzIGlzIGFsbCB5b3UKK25lZWQgdG8gcmVmbGFzaCB0aGUgZmlybXdhcmUsIGFuZCB0aGUgcGlucyBhcmUgdGhlIHN0YW5kYXJkIEF0bWVsICJJU1AiCitjb25uZWN0b3IgcGlucyAodXNlZCBhbHNvIG9uIG5vbi1CdXR0ZXJmbHkgQVZSIGJvYXJkcykuICBPbiB0aGUgcGFycG9ydAorc2lkZSB0aGlzIGlzIGxpa2UgInNwMTIiIHByb2dyYW1taW5nIGNhYmxlcy4KKworCVNpZ25hbAkgIEJ1dHRlcmZseQkgIFBhcnBvcnQgKERCLTI1KQorCS0tLS0tLQkgIC0tLS0tLS0tLQkgIC0tLS0tLS0tLS0tLS0tLQorCVNDSwk9IEo0MDMuUEIxL1NDSwk9IHBpbiAyL0QwCisJUkVTRVQJPSBKNDAzLm5SU1QJPSBwaW4gMy9EMQorCVZDQwk9IEo0MDMuVkNDX0VYVAk9IHBpbiA4L0Q2CisJTU9TSQk9IEo0MDMuUEIyL01PU0kJPSBwaW4gOS9ENworCU1JU08JPSBKNDAzLlBCMy9NSVNPCT0gcGluIDExL1M3LG5CVVNZCisJR05ECT0gSjQwMy5HTkQJPSBwaW4gMjMvR05ECisKK1RoZW4gdG8gbGV0IExpbnV4IG1hc3RlciB0aGF0IGJ1cyB0byB0YWxrIHRvIHRoZSBEYXRhRmxhc2ggY2hpcCwgeW91IG11c3QKKyhhKSBmbGFzaCBuZXcgZmlybXdhcmUgdGhhdCBkaXNhYmxlcyBTUEkgKHNldCBQUlIuMiwgYW5kIGRpc2FibGUgcHVsbHVwcworYnkgY2xlYXJpbmcgUE9SVEIuWzAtM10pOyAoYikgY29uZmlndXJlIHRoZSBtdGRfZGF0YWZsYXNoIGRyaXZlcjsgYW5kCisoYykgY2FibGUgaW4gdGhlIGNoaXBzZWxlY3QuCisKKwlTaWduYWwJICBCdXR0ZXJmbHkJICBQYXJwb3J0IChEQi0yNSkKKwktLS0tLS0JICAtLS0tLS0tLS0JICAtLS0tLS0tLS0tLS0tLS0KKwlWQ0MJPSBKNDAwLlZDQ19FWFQJPSBwaW4gNy9ENQorCVNFTEVDVAk9IEo0MDAuUEIwL25TUwk9IHBpbiAxNy9DMyxuU0VMRUNUCisJR05ECT0gSjQwMC5HTkQJPSBwaW4gMjQvR05ECisKK09yIHlvdSBjb3VsZCBmbGFzaCBmaXJtd2FyZSBtYWtpbmcgdGhlIEFWUiBpbnRvIGFuIFNQSSBzbGF2ZSAoa2VlcGluZyB0aGUKK0RhdGFGbGFzaCBpbiByZXNldCkgYW5kIHR3ZWFrIHRoZSBzcGlfYnV0dGVyZmx5IGRyaXZlciB0byBtYWtlIGl0IGJpbmQgdG8KK3RoZSBkcml2ZXIgZm9yIHlvdXIgY3VzdG9tIFNQSS1iYXNlZCBwcm90b2NvbC4KKworVGhlICJVU0kiIGNvbnRyb2xsZXIsIHVzaW5nIEo0MDUsIGNhbiBhbHNvIGJlIHVzZWQgZm9yIGEgc2Vjb25kIFNQSSBidXMuCitUaGF0IHdvdWxkIGxldCB5b3UgdGFsayB0byB0aGUgQVZSIHVzaW5nIGN1c3RvbSBTUEktd2l0aC1VU0kgZmlybXdhcmUsCit3aGlsZSBsZXR0aW5nIGVpdGhlciBMaW51eCBvciB0aGUgQVZSIHVzZSB0aGUgRGF0YUZsYXNoLiAgVGhlcmUgYXJlIHBsZW50eQorb2Ygc3BhcmUgcGFycG9ydCBwaW5zIHRvIHdpcmUgdGhpcyBvbmUgdXAsIHN1Y2ggYXM6CisKKwlTaWduYWwJICBCdXR0ZXJmbHkJICBQYXJwb3J0IChEQi0yNSkKKwktLS0tLS0JICAtLS0tLS0tLS0JICAtLS0tLS0tLS0tLS0tLS0KKwlTQ0sJPSBKNDAzLlBFNC9VU0NLCT0gcGluIDUvRDMKKwlNT1NJCT0gSjQwMy5QRTUvREkJPSBwaW4gNi9ENAorCU1JU08JPSBKNDAzLlBFNi9ETwk9IHBpbiAxMi9TNSxuUEFQRVJPVVQKKwlHTkQJPSBKNDAzLkdORAk9IHBpbiAyMi9HTkQKKworCUlSUQk9IEo0MDIuUEY0CT0gcGluIDEwL1M2LEFDSworCUdORAk9IEo0MDIuR05EKFAyKQk9IHBpbiAyNS9HTkQKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zcGkvZXA5M3h4X3NwaSBiL0RvY3VtZW50YXRpb24vc3BpL2VwOTN4eF9zcGkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMyZGRjZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc3BpL2VwOTN4eF9zcGkKQEAgLTAsMCArMSwxMDUgQEAKK0NpcnJ1cyBFUDkzeHggU1BJIGNvbnRyb2xsZXIgZHJpdmVyIEhPV1RPCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitlcDkzeHhfc3BpIGRyaXZlciBicmluZ3MgU1BJIG1hc3RlciBzdXBwb3J0IGZvciBFUDkzeHggU1BJIGNvbnRyb2xsZXIuICBDaGlwCitzZWxlY3RzIGFyZSBpbXBsZW1lbnRlZCB3aXRoIEdQSU8gbGluZXMuCisKK05PVEU6IElmIHBvc3NpYmxlLCBkb24ndCB1c2UgU0ZSTU9VVCAoU0ZSTTEpIHNpZ25hbCBhcyBhIGNoaXAgc2VsZWN0LiBJdCB3aWxsCitub3Qgd29yayBjb3JyZWN0bHkgKGl0IGNhbm5vdCBiZSBjb250cm9sbGVkIGJ5IHNvZnR3YXJlKS4gVXNlIEdQSU8gbGluZXMKK2luc3RlYWQuCisKK1NhbXBsZSBjb25maWd1cmF0aW9uCis9PT09PT09PT09PT09PT09PT09PQorCitUeXBpY2FsbHkgZHJpdmVyIGNvbmZpZ3VyYXRpb24gaXMgZG9uZSBpbiBwbGF0Zm9ybSBib2FyZCBmaWxlcyAodGhlIGZpbGVzIHVuZGVyCithcmNoL2FybS9tYWNoLWVwOTN4eC8qLmMpLiBJbiB0aGlzIGV4YW1wbGUgd2UgY29uZmlndXJlIE1NQyBvdmVyIFNQSSB0aHJvdWdoCit0aGlzIGRyaXZlciBvbiBUUy03MjYwIGJvYXJkLiBZb3UgY2FuIGFkYXB0IHRoZSBjb2RlIHRvIHN1aXQgeW91ciBuZWVkcy4KKworVGhpcyBleGFtcGxlIHVzZXMgRUdQSU85IGFzIFNEL01NQyBjYXJkIGNoaXAgc2VsZWN0ICh0aGlzIGlzIHdpcmVkIGluIERJTzEKK2hlYWRlciBvbiB0aGUgYm9hcmQpLgorCitZb3UgbmVlZCB0byBzZWxlY3QgQ09ORklHX01NQ19TUEkgdG8gdXNlIG1tY19zcGkgZHJpdmVyLgorCithcmNoL2FybS9tYWNoLWVwOTN4eC90czcyeHguYzoKKworLi4uCisjaW5jbHVkZSA8bGludXgvZ3Bpby5oPgorI2luY2x1ZGUgPGxpbnV4L3NwaS9zcGkuaD4KKworI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RhdGEvc3BpLWVwOTN4eC5oPgorCisvKiB0aGlzIGlzIG91ciBHUElPIGxpbmUgdXNlZCBmb3IgY2hpcCBzZWxlY3QgKi8KKyNkZWZpbmUgTU1DX0NISVBfU0VMRUNUX0dQSU8gRVA5M1hYX0dQSU9fTElORV9FR1BJTzkKKworc3RhdGljIGludCB0czcyeHhfbW1jX3NwaV9zZXR1cChzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQoreworCWludCBlcnI7CisKKwllcnIgPSBncGlvX3JlcXVlc3QoTU1DX0NISVBfU0VMRUNUX0dQSU8sIHNwaS0+bW9kYWxpYXMpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwlncGlvX2RpcmVjdGlvbl9vdXRwdXQoTU1DX0NISVBfU0VMRUNUX0dQSU8sIDEpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHRzNzJ4eF9tbWNfc3BpX2NsZWFudXAoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKK3sKKwlncGlvX3NldF92YWx1ZShNTUNfQ0hJUF9TRUxFQ1RfR1BJTywgMSk7CisJZ3Bpb19kaXJlY3Rpb25faW5wdXQoTU1DX0NISVBfU0VMRUNUX0dQSU8pOworCWdwaW9fZnJlZShNTUNfQ0hJUF9TRUxFQ1RfR1BJTyk7Cit9CisKK3N0YXRpYyB2b2lkIHRzNzJ4eF9tbWNfc3BpX2NzX2NvbnRyb2woc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwgaW50IHZhbHVlKQoreworCWdwaW9fc2V0X3ZhbHVlKE1NQ19DSElQX1NFTEVDVF9HUElPLCB2YWx1ZSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZXA5M3h4X3NwaV9jaGlwX29wcyB0czcyeHhfbW1jX3NwaV9vcHMgPSB7CisJLnNldHVwCQk9IHRzNzJ4eF9tbWNfc3BpX3NldHVwLAorCS5jbGVhbnVwCT0gdHM3Mnh4X21tY19zcGlfY2xlYW51cCwKKwkuY3NfY29udHJvbAk9IHRzNzJ4eF9tbWNfc3BpX2NzX2NvbnRyb2wsCit9OworCitzdGF0aWMgc3RydWN0IHNwaV9ib2FyZF9pbmZvIHRzNzJ4eF9zcGlfZGV2aWNlc1tdIF9faW5pdGRhdGEgPSB7CisJeworCQkubW9kYWxpYXMJCT0gIm1tY19zcGkiLAorCQkuY29udHJvbGxlcl9kYXRhCT0gJnRzNzJ4eF9tbWNfc3BpX29wcywKKwkJLyoKKwkJICogV2UgdXNlIDEwIE1IeiBldmVuIHRob3VnaCB0aGUgbWF4aW11bSBpcyA3LjQgTUh6LiBUaGUgZHJpdmVyCisJCSAqIHdpbGwgbGltaXQgaXQgYXV0b21hdGljYWxseSB0byBtYXguIGZyZXF1ZW5jeS4KKwkJICovCisJCS5tYXhfc3BlZWRfaHoJCT0gMTAgKiAxMDAwICogMTAwMCwKKwkJLmJ1c19udW0JCT0gMCwKKwkJLmNoaXBfc2VsZWN0CQk9IDAsCisJCS5tb2RlCQkJPSBTUElfTU9ERV8wLAorCX0sCit9OworCitzdGF0aWMgc3RydWN0IGVwOTN4eF9zcGlfaW5mbyB0czcyeHhfc3BpX2luZm8gPSB7CisJLm51bV9jaGlwc2VsZWN0CT0gQVJSQVlfU0laRSh0czcyeHhfc3BpX2RldmljZXMpLAorfTsKKworc3RhdGljIHZvaWQgX19pbml0IHRzNzJ4eF9pbml0X21hY2hpbmUodm9pZCkKK3sKKwkuLi4KKwllcDkzeHhfcmVnaXN0ZXJfc3BpKCZ0czcyeHhfc3BpX2luZm8sIHRzNzJ4eF9zcGlfZGV2aWNlcywKKwkJCSAgICBBUlJBWV9TSVpFKHRzNzJ4eF9zcGlfZGV2aWNlcykpOworfQorCitUaGUgZHJpdmVyIGNhbiB1c2UgRE1BIGZvciB0aGUgdHJhbnNmZXJzIGFsc28uIEluIHRoaXMgY2FzZSB0czcyeHhfc3BpX2luZm8KK2JlY29tZXM6CisKK3N0YXRpYyBzdHJ1Y3QgZXA5M3h4X3NwaV9pbmZvIHRzNzJ4eF9zcGlfaW5mbyA9IHsKKwkubnVtX2NoaXBzZWxlY3QJPSBBUlJBWV9TSVpFKHRzNzJ4eF9zcGlfZGV2aWNlcyksCisJLnVzZV9kbWEJPSB0cnVlOworfTsKKworTm90ZSB0aGF0IENPTkZJR19FUDkzWFhfRE1BIHNob3VsZCBiZSBlbmFibGVkIGFzIHdlbGwuCisKK1RoYW5rcyB0bworPT09PT09PT09CitNYXJ0aW4gR3V5LCBILiBIYXJ0bGV5IFN3ZWV0ZW4gYW5kIG90aGVycyB3aG8gaGVscGVkIG1lIGR1cmluZyBkZXZlbG9wbWVudCBvZgordGhlIGRyaXZlci4gU2ltcGxlbWFjaGluZXMuaXQgZG9uYXRlZCBtZSBhIFNpbS5PbmUgYm9hcmQgd2hpY2ggSSB1c2VkIHRlc3RpbmcKK3RoZSBkcml2ZXIgb24gRVA5MzA3LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zcGkvcHhhMnh4IGIvRG9jdW1lbnRhdGlvbi9zcGkvcHhhMnh4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzYTBiN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NwaS9weGEyeHgKQEAgLTAsMCArMSwyMzUgQEAKK1BYQTJ4eCBTUEkgb24gU1NQIGRyaXZlciBIT1dUTworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitUaGlzIGEgbWluaSBob3d0byBvbiB0aGUgcHhhMnh4X3NwaSBkcml2ZXIuICBUaGUgZHJpdmVyIHR1cm5zIGEgUFhBMnh4CitzeW5jaHJvbm91cyBzZXJpYWwgcG9ydCBpbnRvIGEgU1BJIG1hc3RlciBjb250cm9sbGVyCisoc2VlIERvY3VtZW50YXRpb24vc3BpL3NwaS1zdW1tYXJ5KS4gVGhlIGRyaXZlciBoYXMgdGhlIGZvbGxvd2luZyBmZWF0dXJlcworCistIFN1cHBvcnQgZm9yIGFueSBQWEEyeHggU1NQCistIFNTUCBQSU8gYW5kIFNTUCBETUEgZGF0YSB0cmFuc2ZlcnMuCistIEV4dGVybmFsIGFuZCBJbnRlcm5hbCAoU1NQRlJNKSBjaGlwIHNlbGVjdHMuCistIFBlciBzbGF2ZSBkZXZpY2UgKGNoaXApIGNvbmZpZ3VyYXRpb24uCistIEZ1bGwgc3VzcGVuZCwgZnJlZXplLCByZXN1bWUgc3VwcG9ydC4KKworVGhlIGRyaXZlciBpcyBidWlsdCBhcm91bmQgYSAic3BpX21lc3NhZ2UiIGZpZm8gc2VydmljZWQgYnkgd29ya3F1ZXVlIGFuZCBhCit0YXNrbGV0LiBUaGUgd29ya3F1ZXVlLCAicHVtcF9tZXNzYWdlcyIsIGRyaXZlcyBtZXNzYWdlIGZpZm8gYW5kIHRoZSB0YXNrbGV0CisocHVtcF90cmFuc2ZlcikgaXMgcmVzcG9uc2libGUgZm9yIHF1ZXVpbmcgU1BJIHRyYW5zYWN0aW9ucyBhbmQgc2V0dGluZyB1cCBhbmQKK2xhdW5jaGluZyB0aGUgZG1hL2ludGVycnVwdCBkcml2ZW4gdHJhbnNmZXJzLgorCitEZWNsYXJpbmcgUFhBMnh4IE1hc3RlciBDb250cm9sbGVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1R5cGljYWxseSBhIFNQSSBtYXN0ZXIgaXMgZGVmaW5lZCBpbiB0aGUgYXJjaC8uLi4vbWFjaC0qL2JvYXJkLSouYyBhcyBhCisicGxhdGZvcm0gZGV2aWNlIi4gIFRoZSBtYXN0ZXIgY29uZmlndXJhdGlvbiBpcyBwYXNzZWQgdG8gdGhlIGRyaXZlciB2aWEgYSB0YWJsZQorZm91bmQgaW4gaW5jbHVkZS9saW51eC9zcGkvcHhhMnh4X3NwaS5oOgorCitzdHJ1Y3QgcHhhMnh4X3NwaV9tYXN0ZXIgeworCXUxNiBudW1fY2hpcHNlbGVjdDsKKwl1OCBlbmFibGVfZG1hOworfTsKKworVGhlICJweGEyeHhfc3BpX21hc3Rlci5udW1fY2hpcHNlbGVjdCIgZmllbGQgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZgorc2xhdmUgZGV2aWNlIChjaGlwcykgYXR0YWNoZWQgdG8gdGhpcyBTUEkgbWFzdGVyLgorCitUaGUgInB4YTJ4eF9zcGlfbWFzdGVyLmVuYWJsZV9kbWEiIGZpZWxkIGluZm9ybXMgdGhlIGRyaXZlciB0aGF0IFNTUCBETUEgc2hvdWxkCitiZSB1c2VkLiAgVGhpcyBjYXVzZWQgdGhlIGRyaXZlciB0byBhY3F1aXJlIHR3byBETUEgY2hhbm5lbHM6IHJ4X2NoYW5uZWwgYW5kCit0eF9jaGFubmVsLiAgVGhlIHJ4X2NoYW5uZWwgaGFzIGEgaGlnaGVyIERNQSBzZXJ2aWNlIHByaW9yaXR5IHRoZSB0eF9jaGFubmVsLgorU2VlIHRoZSAiUFhBMnh4IERldmVsb3BlciBNYW51YWwiIHNlY3Rpb24gIkRNQSBDb250cm9sbGVyIi4KKworTlNTUCBNQVNURVIgU0FNUExFCistLS0tLS0tLS0tLS0tLS0tLS0KK0JlbG93IGlzIGEgc2FtcGxlIGNvbmZpZ3VyYXRpb24gdXNpbmcgdGhlIFBYQTI1NSBOU1NQLgorCitzdGF0aWMgc3RydWN0IHJlc291cmNlIHB4YV9zcGlfbnNzcF9yZXNvdXJjZXNbXSA9IHsKKwlbMF0gPSB7CisJCS5zdGFydAk9IF9fUFJFRyhTU0NSMF9QKDIpKSwgLyogU3RhcnQgYWRkcmVzcyBvZiBOU1NQICovCisJCS5lbmQJPSBfX1BSRUcoU1NDUjBfUCgyKSkgKyAweDJjLCAvKiBSYW5nZSBvZiByZWdpc3RlcnMgKi8KKwkJLmZsYWdzCT0gSU9SRVNPVVJDRV9NRU0sCisJfSwKKwlbMV0gPSB7CisJCS5zdGFydAk9IElSUV9OU1NQLCAvKiBOU1NQIElSUSAqLworCQkuZW5kCT0gSVJRX05TU1AsCisJCS5mbGFncwk9IElPUkVTT1VSQ0VfSVJRLAorCX0sCit9OworCitzdGF0aWMgc3RydWN0IHB4YTJ4eF9zcGlfbWFzdGVyIHB4YV9uc3NwX21hc3Rlcl9pbmZvID0geworCS5udW1fY2hpcHNlbGVjdCA9IDEsIC8qIE1hdGNoZXMgdGhlIG51bWJlciBvZiBjaGlwcyBhdHRhY2hlZCB0byBOU1NQICovCisJLmVuYWJsZV9kbWEgPSAxLCAvKiBFbmFibGVzIE5TU1AgRE1BICovCit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBweGFfc3BpX25zc3AgPSB7CisJLm5hbWUgPSAicHhhMnh4LXNwaSIsIC8qIE1VU1QgQkUgVEhJUyBWQUxVRSwgc28gZGV2aWNlIG1hdGNoIGRyaXZlciAqLworCS5pZCA9IDIsIC8qIEJ1cyBudW1iZXIsIE1VU1QgTUFUQ0ggU1NQIG51bWJlciAxLi5uICovCisJLnJlc291cmNlID0gcHhhX3NwaV9uc3NwX3Jlc291cmNlcywKKwkubnVtX3Jlc291cmNlcyA9IEFSUkFZX1NJWkUocHhhX3NwaV9uc3NwX3Jlc291cmNlcyksCisJLmRldiA9IHsKKwkJLnBsYXRmb3JtX2RhdGEgPSAmcHhhX25zc3BfbWFzdGVyX2luZm8sIC8qIFBhc3NlZCB0byBkcml2ZXIgKi8KKwl9LAorfTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldmljZXNbXSBfX2luaXRkYXRhID0geworCSZweGFfc3BpX25zc3AsCit9OworCitzdGF0aWMgdm9pZCBfX2luaXQgYm9hcmRfaW5pdCh2b2lkKQoreworCSh2b2lkKXBsYXRmb3JtX2FkZF9kZXZpY2UoZGV2aWNlcywgQVJSQVlfU0laRShkZXZpY2VzKSk7Cit9CisKK0RlY2xhcmluZyBTbGF2ZSBEZXZpY2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVHlwaWNhbGx5IGVhY2ggU1BJIHNsYXZlIChjaGlwKSBpcyBkZWZpbmVkIGluIHRoZSBhcmNoLy4uLi9tYWNoLSovYm9hcmQtKi5jCit1c2luZyB0aGUgInNwaV9ib2FyZF9pbmZvIiBzdHJ1Y3R1cmUgZm91bmQgaW4gImxpbnV4L3NwaS9zcGkuaCIuIFNlZQorIkRvY3VtZW50YXRpb24vc3BpL3NwaS1zdW1tYXJ5IiBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KKworRWFjaCBzbGF2ZSBkZXZpY2UgYXR0YWNoZWQgdG8gdGhlIFBYQSBtdXN0IHByb3ZpZGUgc2xhdmUgc3BlY2lmaWMgY29uZmlndXJhdGlvbgoraW5mb3JtYXRpb24gdmlhIHRoZSBzdHJ1Y3R1cmUgInB4YTJ4eF9zcGlfY2hpcCIgZm91bmQgaW4KKyJpbmNsdWRlL2xpbnV4L3NwaS9weGEyeHhfc3BpLmgiLiAgVGhlIHB4YTJ4eF9zcGkgbWFzdGVyIGNvbnRyb2xsZXIgZHJpdmVyCit3aWxsIHVzZXMgdGhlIGNvbmZpZ3VyYXRpb24gd2hlbmV2ZXIgdGhlIGRyaXZlciBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgc2xhdmUKK2RldmljZS4gQWxsIGZpZWxkcyBhcmUgb3B0aW9uYWwuCisKK3N0cnVjdCBweGEyeHhfc3BpX2NoaXAgeworCXU4IHR4X3RocmVzaG9sZDsKKwl1OCByeF90aHJlc2hvbGQ7CisJdTggZG1hX2J1cnN0X3NpemU7CisJdTMyIHRpbWVvdXQ7CisJdTggZW5hYmxlX2xvb3BiYWNrOworCXZvaWQgKCpjc19jb250cm9sKSh1MzIgY29tbWFuZCk7Cit9OworCitUaGUgInB4YTJ4eF9zcGlfY2hpcC50eF90aHJlc2hvbGQiIGFuZCAicHhhMnh4X3NwaV9jaGlwLnJ4X3RocmVzaG9sZCIgZmllbGRzIGFyZQordXNlZCB0byBjb25maWd1cmUgdGhlIFNTUCBoYXJkd2FyZSBmaWZvLiAgVGhlc2UgZmllbGRzIGFyZSBjcml0aWNhbCB0byB0aGUKK3BlcmZvcm1hbmNlIG9mIHB4YTJ4eF9zcGkgZHJpdmVyIGFuZCBtaXNjb25maWd1cmF0aW9uIHdpbGwgcmVzdWx0IGluIHJ4CitmaWZvIG92ZXJydW5zIChlc3BlY2lhbGx5IGluIFBJTyBtb2RlIHRyYW5zZmVycykuIEdvb2QgZGVmYXVsdCB2YWx1ZXMgYXJlCisKKwkudHhfdGhyZXNob2xkID0gOCwKKwkucnhfdGhyZXNob2xkID0gOCwKKworVGhlIHJhbmdlIGlzIDEgdG8gMTYgd2hlcmUgemVybyBpbmRpY2F0ZXMgInVzZSBkZWZhdWx0Ii4KKworVGhlICJweGEyeHhfc3BpX2NoaXAuZG1hX2J1cnN0X3NpemUiIGZpZWxkIGlzIHVzZWQgdG8gY29uZmlndXJlIFBYQTJ4eCBETUEKK2VuZ2luZSBhbmQgaXMgcmVsYXRlZCB0aGUgInNwaV9kZXZpY2UuYml0c19wZXJfd29yZCIgZmllbGQuICBSZWFkIGFuZCB1bmRlcnN0YW5kCit0aGUgUFhBMnh4ICJEZXZlbG9wZXIgTWFudWFsIiBzZWN0aW9ucyBvbiB0aGUgRE1BIGNvbnRyb2xsZXIgYW5kIFNTUCBDb250cm9sbGVycwordG8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IHZhbHVlLiBBbiBTU1AgY29uZmlndXJlZCBmb3IgYnl0ZS13aWRlIHRyYW5zZmVycyB3b3VsZAordXNlIGEgdmFsdWUgb2YgOC4gVGhlIGRyaXZlciB3aWxsIGRldGVybWluZSBhIHJlYXNvbmFibGUgZGVmYXVsdCBpZgorZG1hX2J1cnN0X3NpemUgPT0gMC4KKworVGhlICJweGEyeHhfc3BpX2NoaXAudGltZW91dCIgZmllbGRzIGlzIHVzZWQgdG8gZWZmaWNpZW50bHkgaGFuZGxlCit0cmFpbGluZyBieXRlcyBpbiB0aGUgU1NQIHJlY2VpdmVyIGZpZm8uICBUaGUgY29ycmVjdCB2YWx1ZSBmb3IgdGhpcyBmaWVsZCBpcworZGVwZW5kZW50IG9uIHRoZSBTUEkgYnVzIHNwZWVkICgic3BpX2JvYXJkX2luZm8ubWF4X3NwZWVkX2h6IikgYW5kIHRoZSBzcGVjaWZpYworc2xhdmUgZGV2aWNlLiAgUGxlYXNlIG5vdGUgdGhhdCB0aGUgUFhBMnh4IFNTUCAxIGRvZXMgbm90IHN1cHBvcnQgdHJhaWxpbmcgYnl0ZQordGltZW91dHMgYW5kIG11c3QgYnVzeS13YWl0IGFueSB0cmFpbGluZyBieXRlcy4KKworVGhlICJweGEyeHhfc3BpX2NoaXAuZW5hYmxlX2xvb3BiYWNrIiBmaWVsZCBpcyB1c2VkIHRvIHBsYWNlIHRoZSBTU1AgcG9ydGluZworaW50byBpbnRlcm5hbCBsb29wYmFjayBtb2RlLiAgSW4gdGhpcyBtb2RlIHRoZSBTU1AgY29udHJvbGxlciBpbnRlcm5hbGx5Citjb25uZWN0cyB0aGUgU1NQVFggcGluIHRvIHRoZSBTU1BSWCBwaW4uICBUaGlzIGlzIHVzZWZ1bCBmb3IgaW5pdGlhbCBzZXR1cAordGVzdGluZy4KKworVGhlICJweGEyeHhfc3BpX2NoaXAuY3NfY29udHJvbCIgZmllbGQgaXMgdXNlZCB0byBwb2ludCB0byBhIGJvYXJkIHNwZWNpZmljCitmdW5jdGlvbiBmb3IgYXNzZXJ0aW5nL2RlYXNzZXJ0aW5nIGEgc2xhdmUgZGV2aWNlIGNoaXAgc2VsZWN0LiAgSWYgdGhlIGZpZWxkIGlzCitOVUxMLCB0aGUgcHhhMnh4X3NwaSBtYXN0ZXIgY29udHJvbGxlciBkcml2ZXIgYXNzdW1lcyB0aGF0IHRoZSBTU1AgcG9ydCBpcworY29uZmlndXJlZCB0byB1c2UgU1NQRlJNIGluc3RlYWQuCisKK05PVEU6IHRoZSBTUEkgZHJpdmVyIGNhbm5vdCBjb250cm9sIHRoZSBjaGlwIHNlbGVjdCBpZiBTU1BGUk0gaXMgdXNlZCwgc28gdGhlCitjaGlwc2VsZWN0IGlzIGRyb3BwZWQgYWZ0ZXIgZWFjaCBzcGlfdHJhbnNmZXIuICBNb3N0IGRldmljZXMgbmVlZCBjaGlwIHNlbGVjdAorYXNzZXJ0ZWQgYXJvdW5kIHRoZSBjb21wbGV0ZSBtZXNzYWdlLiAgVXNlIFNTUEZSTSBhcyBhIEdQSU8gKHRocm91Z2ggY3NfY29udHJvbCkKK3RvIGFjY29tbW9kYXRlIHRoZXNlIGNoaXBzLgorCisKK05TU1AgU0xBVkUgU0FNUExFCistLS0tLS0tLS0tLS0tLS0tLQorVGhlIHB4YTJ4eF9zcGlfY2hpcCBzdHJ1Y3R1cmUgaXMgcGFzc2VkIHRvIHRoZSBweGEyeHhfc3BpIGRyaXZlciBpbiB0aGUKKyJzcGlfYm9hcmRfaW5mby5jb250cm9sbGVyX2RhdGEiIGZpZWxkLiBCZWxvdyBpcyBhIHNhbXBsZSBjb25maWd1cmF0aW9uIHVzaW5nCit0aGUgUFhBMjU1IE5TU1AuCisKKy8qIENoaXAgU2VsZWN0IGNvbnRyb2wgZm9yIHRoZSBDUzg0MTVBIFNQSSBzbGF2ZSBkZXZpY2UgKi8KK3N0YXRpYyB2b2lkIGNzODQxNWFfY3NfY29udHJvbCh1MzIgY29tbWFuZCkKK3sKKwlpZiAoY29tbWFuZCAmIFBYQTJYWF9DU19BU1NFUlQpCisJCUdQQ1IoMikgPSBHUElPX2JpdCgyKTsKKwllbHNlCisJCUdQU1IoMikgPSBHUElPX2JpdCgyKTsKK30KKworLyogQ2hpcCBTZWxlY3QgY29udHJvbCBmb3IgdGhlIENTODQwNUEgU1BJIHNsYXZlIGRldmljZSAqLworc3RhdGljIHZvaWQgY3M4NDA1YV9jc19jb250cm9sKHUzMiBjb21tYW5kKQoreworCWlmIChjb21tYW5kICYgUFhBMlhYX0NTX0FTU0VSVCkKKwkJR1BDUigzKSA9IEdQSU9fYml0KDMpOworCWVsc2UKKwkJR1BTUigzKSA9IEdQSU9fYml0KDMpOworfQorCitzdGF0aWMgc3RydWN0IHB4YTJ4eF9zcGlfY2hpcCBjczg0MTVhX2NoaXBfaW5mbyA9IHsKKwkudHhfdGhyZXNob2xkID0gOCwgLyogU1NQIGhhcmR3YXJkIEZJRk8gdGhyZXNob2xkICovCisJLnJ4X3RocmVzaG9sZCA9IDgsIC8qIFNTUCBoYXJkd2FyZCBGSUZPIHRocmVzaG9sZCAqLworCS5kbWFfYnVyc3Rfc2l6ZSA9IDgsIC8qIEJ5dGUgd2lkZSB0cmFuc2ZlcnMgdXNlZCBzbyA4IGJ5dGUgYnVyc3RzICovCisJLnRpbWVvdXQgPSAyMzUsIC8qIFNlZSBJbnRlbCBkb2N1bWVudGF0aW9uICovCisJLmNzX2NvbnRyb2wgPSBjczg0MTVhX2NzX2NvbnRyb2wsIC8qIFVzZSBleHRlcm5hbCBjaGlwIHNlbGVjdCAqLworfTsKKworc3RhdGljIHN0cnVjdCBweGEyeHhfc3BpX2NoaXAgY3M4NDA1YV9jaGlwX2luZm8gPSB7CisJLnR4X3RocmVzaG9sZCA9IDgsIC8qIFNTUCBoYXJkd2FyZCBGSUZPIHRocmVzaG9sZCAqLworCS5yeF90aHJlc2hvbGQgPSA4LCAvKiBTU1AgaGFyZHdhcmQgRklGTyB0aHJlc2hvbGQgKi8KKwkuZG1hX2J1cnN0X3NpemUgPSA4LCAvKiBCeXRlIHdpZGUgdHJhbnNmZXJzIHVzZWQgc28gOCBieXRlIGJ1cnN0cyAqLworCS50aW1lb3V0ID0gMjM1LCAvKiBTZWUgSW50ZWwgZG9jdW1lbnRhdGlvbiAqLworCS5jc19jb250cm9sID0gY3M4NDA1YV9jc19jb250cm9sLCAvKiBVc2UgZXh0ZXJuYWwgY2hpcCBzZWxlY3QgKi8KK307CisKK3N0YXRpYyBzdHJ1Y3Qgc3BpX2JvYXJkX2luZm8gc3RyZWV0cmFjZXJfc3BpX2JvYXJkX2luZm9bXSBfX2luaXRkYXRhID0geworCXsKKwkJLm1vZGFsaWFzID0gImNzODQxNWEiLCAvKiBOYW1lIG9mIHNwaV9kcml2ZXIgZm9yIHRoaXMgZGV2aWNlICovCisJCS5tYXhfc3BlZWRfaHogPSAzNjg2NDAwLCAvKiBSdW4gU1NQIGFzIGZhc3QgYSBwb3NzYmlsZSAqLworCQkuYnVzX251bSA9IDIsIC8qIEZyYW1ld29yayBidXMgbnVtYmVyICovCisJCS5jaGlwX3NlbGVjdCA9IDAsIC8qIEZyYW1ld29yayBjaGlwIHNlbGVjdCAqLworCQkucGxhdGZvcm1fZGF0YSA9IE5VTEw7IC8qIE5vIHNwaV9kcml2ZXIgc3BlY2lmaWMgY29uZmlnICovCisJCS5jb250cm9sbGVyX2RhdGEgPSAmY3M4NDE1YV9jaGlwX2luZm8sIC8qIE1hc3RlciBjaGlwIGNvbmZpZyAqLworCQkuaXJxID0gU1RSRUVUUkFDRVJfQVBDSV9JUlEsIC8qIFNsYXZlIGRldmljZSBpbnRlcnJ1cHQgKi8KKwl9LAorCXsKKwkJLm1vZGFsaWFzID0gImNzODQwNWEiLCAvKiBOYW1lIG9mIHNwaV9kcml2ZXIgZm9yIHRoaXMgZGV2aWNlICovCisJCS5tYXhfc3BlZWRfaHogPSAzNjg2NDAwLCAvKiBSdW4gU1NQIGFzIGZhc3QgYSBwb3NzYmlsZSAqLworCQkuYnVzX251bSA9IDIsIC8qIEZyYW1ld29yayBidXMgbnVtYmVyICovCisJCS5jaGlwX3NlbGVjdCA9IDEsIC8qIEZyYW1ld29yayBjaGlwIHNlbGVjdCAqLworCQkuY29udHJvbGxlcl9kYXRhID0gJmNzODQwNWFfY2hpcF9pbmZvLCAvKiBNYXN0ZXIgY2hpcCBjb25maWcgKi8KKwkJLmlycSA9IFNUUkVFVFJBQ0VSX0FQQ0lfSVJRLCAvKiBTbGF2ZSBkZXZpY2UgaW50ZXJydXB0ICovCisJfSwKK307CisKK3N0YXRpYyB2b2lkIF9faW5pdCBzdHJlZXRyYWNlcl9pbml0KHZvaWQpCit7CisJc3BpX3JlZ2lzdGVyX2JvYXJkX2luZm8oc3RyZWV0cmFjZXJfc3BpX2JvYXJkX2luZm8sCisJCQkJQVJSQVlfU0laRShzdHJlZXRyYWNlcl9zcGlfYm9hcmRfaW5mbykpOworfQorCisKK0RNQSBhbmQgUElPIEkvTyBTdXBwb3J0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIHB4YTJ4eF9zcGkgZHJpdmVyIHN1cHBvcnRzIGJvdGggRE1BIGFuZCBpbnRlcnJ1cHQgZHJpdmVuIFBJTyBtZXNzYWdlCit0cmFuc2ZlcnMuICBUaGUgZHJpdmVyIGRlZmF1bHRzIHRvIFBJTyBtb2RlIGFuZCBETUEgdHJhbnNmZXJzIG11c3QgYmUgZW5hYmxlZAorYnkgc2V0dGluZyB0aGUgImVuYWJsZV9kbWEiIGZsYWcgaW4gdGhlICJweGEyeHhfc3BpX21hc3RlciIgc3RydWN0dXJlLiAgVGhlIERNQQorbW9kZSBzdXBwb3J0cyBib3RoIGNvaGVyZW50IGFuZCBzdHJlYW0gYmFzZWQgRE1BIG1hcHBpbmdzLgorCitUaGUgZm9sbG93aW5nIGxvZ2ljIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB0eXBlIG9mIEkvTyB0byBiZSB1c2VkIG9uCithIHBlciAic3BpX3RyYW5zZmVyIiBiYXNpczoKKworaWYgIWVuYWJsZV9kbWEgdGhlbgorCWFsd2F5cyB1c2UgUElPIHRyYW5zZmVycworCitpZiBzcGlfbWVzc2FnZS5sZW4gPiA4MTkxIHRoZW4KKwlwcmludCAicmF0ZSBsaW1pdGVkIiB3YXJuaW5nCisJdXNlIFBJTyB0cmFuc2ZlcnMKKworaWYgc3BpX21lc3NhZ2UuaXNfZG1hX21hcHBlZCBhbmQgcnhfZG1hX2J1ZiAhPSAwIGFuZCB0eF9kbWFfYnVmICE9IDAgdGhlbgorCXVzZSBjb2hlcmVudCBETUEgbW9kZQorCitpZiByeF9idWYgYW5kIHR4X2J1ZiBhcmUgYWxpZ25lZCBvbiA4IGJ5dGUgYm91bmRhcnkgdGhlbgorCXVzZSBzdHJlYW1pbmcgRE1BIG1vZGUKKworb3RoZXJ3aXNlCisJdXNlIFBJTyB0cmFuc2ZlcgorCitUSEFOS1MgVE8KKy0tLS0tLS0tLQorCitEYXZpZCBCcm93bmVsbCBhbmQgb3RoZXJzIGZvciBtZW50b3JpbmcgdGhlIGRldmVsb3BtZW50IG9mIHRoaXMgZHJpdmVyLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NwaS9zcGktbG03MGxscCBiL0RvY3VtZW50YXRpb24vc3BpL3NwaS1sbTcwbGxwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2M2Y2ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NwaS9zcGktbG03MGxscApAQCAtMCwwICsxLDc5IEBACitzcGlfbG03MGxscCA6ICBMTTcwLUxMUCBwYXJwb3J0LXRvLVNQSSBhZGFwdGVyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBib2FyZC9jaGlwOgorICAqIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgTE03MCBMTFAgZXZhbHVhdGlvbiBib2FyZAorICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5uYXRpb25hbC5jb20vcGYvTE0vTE03MC5odG1sCisKK0F1dGhvcjoKKyAgICAgICAgS2Fpd2FuIE4gQmlsbGltb3JpYSA8a2Fpd2FuQGRlc2lnbmVyZ3JhcGhpeC5jb20+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorVGhpcyBkcml2ZXIgcHJvdmlkZXMgZ2x1ZSBjb2RlIGNvbm5lY3RpbmcgYSBOYXRpb25hbCBTZW1pY29uZHVjdG9yIExNNzAgTExQCit0ZW1wZXJhdHVyZSBzZW5zb3IgZXZhbHVhdGlvbiBib2FyZCB0byB0aGUga2VybmVsJ3MgU1BJIGNvcmUgc3Vic3lzdGVtLgorCitUaGlzIGlzIGEgU1BJIG1hc3RlciBjb250cm9sbGVyIGRyaXZlci4gSXQgY2FuIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aAorKGxheWVyZWQgdW5kZXIpIHRoZSBMTTcwIGxvZ2ljYWwgZHJpdmVyIChhICJTUEkgcHJvdG9jb2wgZHJpdmVyIikuCitJbiBlZmZlY3QsIHRoaXMgZHJpdmVyIHR1cm5zIHRoZSBwYXJhbGxlbCBwb3J0IGludGVyZmFjZSBvbiB0aGUgZXZhbCBib2FyZAoraW50byBhIFNQSSBidXMgd2l0aCBhIHNpbmdsZSBkZXZpY2UsIHdoaWNoIHdpbGwgYmUgZHJpdmVuIGJ5IHRoZSBnZW5lcmljCitMTTcwIGRyaXZlciAoZHJpdmVycy9od21vbi9sbTcwLmMpLgorCisKK0hhcmR3YXJlIEludGVyZmFjaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIHNjaGVtYXRpYyBmb3IgdGhpcyBwYXJ0aWN1bGFyIGJvYXJkICh0aGUgTE03MEVWQUwtTExQKSBpcworYXZhaWxhYmxlIChvbiBwYWdlIDQpIGhlcmU6CisKKyAgaHR0cDovL3d3dy5uYXRpb25hbC5jb20vYXBwaW5mby90ZW1wc2Vuc29ycy9maWxlcy9MTTcwTExQRVZBTG1hbnVhbC5wZGYKKworVGhlIGhhcmR3YXJlIGludGVyZmFjaW5nIG9uIHRoZSBMTTcwIExMUCBldmFsIGJvYXJkIGlzIGFzIGZvbGxvd3M6CisKKyAgIFBhcmFsbGVsICAgICAgICAgICAgICAgICBMTTcwIExMUAorICAgICBQb3J0ICAgICAgRGlyZWN0aW9uICAgSlAyIEhlYWRlcgorICAgLS0tLS0tLS0tLS0gLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIEQwICAgICAyICAgICAgLSAgICAgICAgIC0KKyAgICAgIEQxICAgICAzICAgICAtLT4gICAgICBWKyAgIDUKKyAgICAgIEQyICAgICA0ICAgICAtLT4gICAgICBWKyAgIDUKKyAgICAgIEQzICAgICA1ICAgICAtLT4gICAgICBWKyAgIDUKKyAgICAgIEQ0ICAgICA2ICAgICAtLT4gICAgICBWKyAgIDUKKyAgICAgIEQ1ICAgICA3ICAgICAtLT4gICAgICBuQ1MgIDgKKyAgICAgIEQ2ICAgICA4ICAgICAtLT4gICAgICBTQ0xLIDMKKyAgICAgIEQ3ICAgICA5ICAgICAtLT4gICAgICBTSS9PIDUKKyAgICAgR05EICAgIDI1ICAgICAgLSAgICAgICBHTkQgIDcKKyAgICBTZWxlY3QgIDEzICAgICA8LS0gICAgICBTSS9PIDEKKyAgIC0tLS0tLS0tLS0tIC0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tCisKK05vdGUgdGhhdCBzaW5jZSB0aGUgTE03MCB1c2VzIGEgIjMtd2lyZSIgdmFyaWFudCBvZiBTUEksIHRoZSBTSS9TTyBwaW4KK2lzIGNvbm5lY3RlZCB0byBib3RoIHBpbiBENyAoYXMgTWFzdGVyIE91dCkgYW5kIFNlbGVjdCAoYXMgTWFzdGVyIEluKQordXNpbmcgYW4gYXJyYW5nZW1lbnQgdGhhdCBsZXRzIGVpdGhlciB0aGUgcGFycG9ydCBvciB0aGUgTE03MCBwdWxsIHRoZQorcGluIGxvdy4gIFRoaXMgY2FuJ3QgYmUgc2hhcmVkIHdpdGggdHJ1ZSBTUEkgZGV2aWNlcywgYnV0IG90aGVyIDMtd2lyZQorZGV2aWNlcyBtaWdodCBzaGFyZSB0aGUgc2FtZSBTSS9TTyBwaW4uCisKK1RoZSBiaXRiYW5nZXIgcm91dGluZSBpbiB0aGlzIGRyaXZlciAobG03MF90eHJ4KSBpcyBjYWxsZWQgYmFjayBmcm9tCit0aGUgYm91bmQgImh3bW9uL2xtNzAiIHByb3RvY29sIGRyaXZlciB0aHJvdWdoIGl0cyBzeXNmcyBob29rLCB1c2luZyBhCitzcGlfd3JpdGVfdGhlbl9yZWFkKCkgY2FsbC4gIEl0IHBlcmZvcm1zIE1vZGUgMCAoU1BJL01pY3Jvd2lyZSkgYml0YmFuZ2luZy4KK1RoZSBsbTcwIGRyaXZlciB0aGVuIGludGVwcmV0cyB0aGUgcmVzdWx0aW5nIGRpZ2l0YWwgdGVtcGVyYXR1cmUgdmFsdWUKK2FuZCBleHBvcnRzIGl0IHRocm91Z2ggc3lzZnMuCisKK0EgImdvdGNoYSI6IE5hdGlvbmFsIFNlbWljb25kdWN0b3IncyBMTTcwIExMUCBldmFsIGJvYXJkIGNpcmN1aXQgc2NoZW1hdGljCitzaG93cyB0aGF0IHRoZSBTSS9PIGxpbmUgZnJvbSB0aGUgTE03MCBjaGlwIGlzIGNvbm5lY3RlZCB0byB0aGUgYmFzZSBvZiBhCit0cmFuc2lzdG9yIFExIChhbmQgYWxzbyBhIHB1bGx1cCwgYW5kIGEgemVuZXIgZGlvZGUgdG8gRDcpOyB3aGlsZSB0aGUKK2NvbGxlY3RvciBpcyB0aWVkIHRvIFZDQy4KKworSW50ZXJwcmV0aW5nIHRoaXMgY2lyY3VpdCwgd2hlbiB0aGUgTE03MCBTSS9PIGxpbmUgaXMgSGlnaCAob3IgdHJpc3RhdGUKK2FuZCBub3QgZ3JvdW5kZWQgYnkgdGhlIGhvc3QgdmlhIEQ3KSwgdGhlIHRyYW5zaXN0b3IgY29uZHVjdHMgYW5kIHN3aXRjaGVzCit0aGUgY29sbGVjdG9yIHRvIHplcm8sIHdoaWNoIGlzIHJlZmxlY3RlZCBvbiBwaW4gMTMgb2YgdGhlIERCMjUgcGFycG9ydAorY29ubmVjdG9yLiAgV2hlbiBTSS9PIGlzIExvdyAoZHJpdmVuIGJ5IHRoZSBMTTcwIG9yIHRoZSBob3N0KSBvbiB0aGUgb3RoZXIKK2hhbmQsIHRoZSB0cmFuc2lzdG9yIGlzIGN1dCBvZmYgYW5kIHRoZSB2b2x0YWdlIHRpZWQgdG8gaXQncyBjb2xsZWN0b3IgaXMKK3JlZmxlY3RlZCBvbiBwaW4gMTMgYXMgYSBIaWdoIGxldmVsLgorCitTbzogdGhlIGdldG1pc28gaW5saW5lIHJvdXRpbmUgaW4gdGhpcyBkcml2ZXIgdGFrZXMgdGhpcyBmYWN0IGludG8gYWNjb3VudCwKK2ludmVydGluZyB0aGUgdmFsdWUgcmVhZCBhdCBwaW4gMTMuCisKKworVGhhbmtzIHRvCistLS0tLS0tLS0KK28gRGF2aWQgQnJvd25lbGwgZm9yIG1lbnRvcmluZyB0aGUgU1BJLXNpZGUgZHJpdmVyIGRldmVsb3BtZW50LgorbyBEci5DcmFpZyBIb2xsYWJhdWdoIGZvciB0aGUgKGVhcmx5KSAibWFudWFsIiBiaXRiYW5naW5nIGRyaXZlciB2ZXJzaW9uLgorbyBOYWRpciBCaWxsaW1vcmlhIGZvciBoZWxwIGludGVycHJldGluZyB0aGUgY2lyY3VpdCBzY2hlbWF0aWMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NwaS9zcGktc2MxOGlzNjAyIGIvRG9jdW1lbnRhdGlvbi9zcGkvc3BpLXNjMThpczYwMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDU3MDI4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zcGkvc3BpLXNjMThpczYwMgpAQCAtMCwwICsxLDM2IEBACitLZXJuZWwgZHJpdmVyIHNwaS1zYzE4aXM2MDIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogTlhQIFNJMThJUzYwMi82MDJCLzYwMworICAgIERhdGFzaGVldDogaHR0cDovL3d3dy5ueHAuY29tL2RvY3VtZW50cy9kYXRhX3NoZWV0L1NDMThJUzYwMl82MDJCXzYwMy5wZGYKKworQXV0aG9yOgorICAgICAgICBHdWVudGVyIFJvZWNrIDxsaW51eEByb2Vjay11cy5uZXQ+CisKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIHByb3ZpZGVzIGNvbm5lY3RzIGEgTlhQIFNDMThJUzYwMi82MDMgSTJDLWJ1cyB0byBTUEkgYnJpZGdlIHRvIHRoZQora2VybmVsJ3MgU1BJIGNvcmUgc3Vic3lzdGVtLgorCitUaGUgZHJpdmVyIGRvZXMgbm90IHByb2JlIGZvciBzdXBwb3J0ZWQgY2hpcHMsIHNpbmNlIHRoZSBTSTE4SVM2MDIvNjAzIGRvZXMgbm90CitzdXBwb3J0IENoaXAgSUQgcmVnaXN0ZXJzLiBZb3Ugd2lsbCBoYXZlIHRvIGluc3RhbnRpYXRlIHRoZSBkZXZpY2VzIGV4cGxpY2l0bHkuCitQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vaTJjL2luc3RhbnRpYXRpbmctZGV2aWNlcyBmb3IgZGV0YWlscy4KKworCitVc2FnZSBOb3RlcworLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgcmVxdWlyZXMgdGhlIEkyQyBhZGFwdGVyIGRyaXZlciB0byBzdXBwb3J0IHJhdyBJMkMgbWVzc2FnZXMuIEkyQworYWRhcHRlciBkcml2ZXJzIHdoaWNoIGNhbiBvbmx5IGhhbmRsZSB0aGUgU01CdXMgcHJvdG9jb2wgYXJlIG5vdCBzdXBwb3J0ZWQuCisKK1RoZSBtYXhpbXVtIFNQSSBtZXNzYWdlIHNpemUgc3VwcG9ydGVkIGJ5IFNDMThJUzYwMi82MDMgaXMgMjAwIGJ5dGVzLiBBdHRlbXB0cwordG8gaW5pdGlhdGUgbG9uZ2VyIHRyYW5zZmVycyB3aWxsIGZhaWwgd2l0aCAtRUlOVkFMLiBFRVBST00gcmVhZCBvcGVyYXRpb25zIGFuZAorc2ltaWxhciBsYXJnZSBhY2Nlc3NlcyBoYXZlIHRvIGJlIHNwbGl0IGludG8gbXVsdGlwbGUgY2h1bmtzIG9mIG5vIG1vcmUgdGhhbgorMjAwIGJ5dGVzIHBlciBTUEkgbWVzc2FnZSAoMTI4IGJ5dGVzIG9mIGRhdGEgcGVyIG1lc3NhZ2UgaXMgcmVjb21tZW5kZWQpLiBUaGlzCittZWFucyB0aGF0IHByb2dyYW1zIHN1Y2ggYXMgImNwIiBvciAib2QiLCB3aGljaCBhdXRvbWF0aWNhbGx5IHVzZSBsYXJnZSBibG9jaworc2l6ZXMgdG8gYWNjZXNzIGEgZGV2aWNlLCBjYW4gbm90IGJlIHVzZWQgZGlyZWN0bHkgdG8gcmVhZCBkYXRhIGZyb20gRUVQUk9NLgorUHJvZ3JhbXMgc3VjaCBhcyBkZCwgd2hlcmUgdGhlIGJsb2NrIHNpemUgY2FuIGJlIHNwZWNpZmllZCwgc2hvdWxkIGJlIHVzZWQKK2luc3RlYWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NwaS9zcGktc3VtbWFyeSBiL0RvY3VtZW50YXRpb24vc3BpL3NwaS1zdW1tYXJ5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxODI0YjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NwaS9zcGktc3VtbWFyeQpAQCAtMCwwICsxLDYxMiBAQAorT3ZlcnZpZXcgb2YgTGludXgga2VybmVsIFNQSSBzdXBwb3J0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworMDItRmViLTIwMTIKKworV2hhdCBpcyBTUEk/CistLS0tLS0tLS0tLS0KK1RoZSAiU2VyaWFsIFBlcmlwaGVyYWwgSW50ZXJmYWNlIiAoU1BJKSBpcyBhIHN5bmNocm9ub3VzIGZvdXIgd2lyZSBzZXJpYWwKK2xpbmsgdXNlZCB0byBjb25uZWN0IG1pY3JvY29udHJvbGxlcnMgdG8gc2Vuc29ycywgbWVtb3J5LCBhbmQgcGVyaXBoZXJhbHMuCitJdCdzIGEgc2ltcGxlICJkZSBmYWN0byIgc3RhbmRhcmQsIG5vdCBjb21wbGljYXRlZCBlbm91Z2ggdG8gYWNxdWlyZSBhCitzdGFuZGFyZGl6YXRpb24gYm9keS4gIFNQSSB1c2VzIGEgbWFzdGVyL3NsYXZlIGNvbmZpZ3VyYXRpb24uCisKK1RoZSB0aHJlZSBzaWduYWwgd2lyZXMgaG9sZCBhIGNsb2NrIChTQ0ssIG9mdGVuIG9uIHRoZSBvcmRlciBvZiAxMCBNSHopLAorYW5kIHBhcmFsbGVsIGRhdGEgbGluZXMgd2l0aCAiTWFzdGVyIE91dCwgU2xhdmUgSW4iIChNT1NJKSBvciAiTWFzdGVyIEluLAorU2xhdmUgT3V0IiAoTUlTTykgc2lnbmFscy4gIChPdGhlciBuYW1lcyBhcmUgYWxzbyB1c2VkLikgIFRoZXJlIGFyZSBmb3VyCitjbG9ja2luZyBtb2RlcyB0aHJvdWdoIHdoaWNoIGRhdGEgaXMgZXhjaGFuZ2VkOyBtb2RlLTAgYW5kIG1vZGUtMyBhcmUgbW9zdAorY29tbW9ubHkgdXNlZC4gIEVhY2ggY2xvY2sgY3ljbGUgc2hpZnRzIGRhdGEgb3V0IGFuZCBkYXRhIGluOyB0aGUgY2xvY2sKK2RvZXNuJ3QgY3ljbGUgZXhjZXB0IHdoZW4gdGhlcmUgaXMgYSBkYXRhIGJpdCB0byBzaGlmdC4gIE5vdCBhbGwgZGF0YSBiaXRzCithcmUgdXNlZCB0aG91Z2g7IG5vdCBldmVyeSBwcm90b2NvbCB1c2VzIHRob3NlIGZ1bGwgZHVwbGV4IGNhcGFiaWxpdGllcy4KKworU1BJIG1hc3RlcnMgdXNlIGEgZm91cnRoICJjaGlwIHNlbGVjdCIgbGluZSB0byBhY3RpdmF0ZSBhIGdpdmVuIFNQSSBzbGF2ZQorZGV2aWNlLCBzbyB0aG9zZSB0aHJlZSBzaWduYWwgd2lyZXMgbWF5IGJlIGNvbm5lY3RlZCB0byBzZXZlcmFsIGNoaXBzCitpbiBwYXJhbGxlbC4gIEFsbCBTUEkgc2xhdmVzIHN1cHBvcnQgY2hpcHNlbGVjdHM7IHRoZXkgYXJlIHVzdWFsbHkgYWN0aXZlCitsb3cgc2lnbmFscywgbGFiZWxlZCBuQ1N4IGZvciBzbGF2ZSAneCcgKGUuZy4gbkNTMCkuICBTb21lIGRldmljZXMgaGF2ZQorb3RoZXIgc2lnbmFscywgb2Z0ZW4gaW5jbHVkaW5nIGFuIGludGVycnVwdCB0byB0aGUgbWFzdGVyLgorCitVbmxpa2Ugc2VyaWFsIGJ1c3NlcyBsaWtlIFVTQiBvciBTTUJ1cywgZXZlbiBsb3cgbGV2ZWwgcHJvdG9jb2xzIGZvcgorU1BJIHNsYXZlIGZ1bmN0aW9ucyBhcmUgdXN1YWxseSBub3QgaW50ZXJvcGVyYWJsZSBiZXR3ZWVuIHZlbmRvcnMKKyhleGNlcHQgZm9yIGNvbW1vZGl0aWVzIGxpa2UgU1BJIG1lbW9yeSBjaGlwcykuCisKKyAgLSBTUEkgbWF5IGJlIHVzZWQgZm9yIHJlcXVlc3QvcmVzcG9uc2Ugc3R5bGUgZGV2aWNlIHByb3RvY29scywgYXMgd2l0aAorICAgIHRvdWNoc2NyZWVuIHNlbnNvcnMgYW5kIG1lbW9yeSBjaGlwcy4KKworICAtIEl0IG1heSBhbHNvIGJlIHVzZWQgdG8gc3RyZWFtIGRhdGEgaW4gZWl0aGVyIGRpcmVjdGlvbiAoaGFsZiBkdXBsZXgpLAorICAgIG9yIGJvdGggb2YgdGhlbSBhdCB0aGUgc2FtZSB0aW1lIChmdWxsIGR1cGxleCkuCisKKyAgLSBTb21lIGRldmljZXMgbWF5IHVzZSBlaWdodCBiaXQgd29yZHMuICBPdGhlcnMgbWF5IHVzZSBkaWZmZXJlbnQgd29yZAorICAgIGxlbmd0aHMsIHN1Y2ggYXMgc3RyZWFtcyBvZiAxMi1iaXQgb3IgMjAtYml0IGRpZ2l0YWwgc2FtcGxlcy4KKworICAtIFdvcmRzIGFyZSB1c3VhbGx5IHNlbnQgd2l0aCB0aGVpciBtb3N0IHNpZ25pZmljYW50IGJpdCAoTVNCKSBmaXJzdCwKKyAgICBidXQgc29tZXRpbWVzIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgKExTQikgZ29lcyBmaXJzdCBpbnN0ZWFkLgorCisgIC0gU29tZXRpbWVzIFNQSSBpcyB1c2VkIHRvIGRhaXN5LWNoYWluIGRldmljZXMsIGxpa2Ugc2hpZnQgcmVnaXN0ZXJzLgorCitJbiB0aGUgc2FtZSB3YXksIFNQSSBzbGF2ZXMgd2lsbCBvbmx5IHJhcmVseSBzdXBwb3J0IGFueSBraW5kIG9mIGF1dG9tYXRpYworZGlzY292ZXJ5L2VudW1lcmF0aW9uIHByb3RvY29sLiAgVGhlIHRyZWUgb2Ygc2xhdmUgZGV2aWNlcyBhY2Nlc3NpYmxlIGZyb20KK2EgZ2l2ZW4gU1BJIG1hc3RlciB3aWxsIG5vcm1hbGx5IGJlIHNldCB1cCBtYW51YWxseSwgd2l0aCBjb25maWd1cmF0aW9uCit0YWJsZXMuCisKK1NQSSBpcyBvbmx5IG9uZSBvZiB0aGUgbmFtZXMgdXNlZCBieSBzdWNoIGZvdXItd2lyZSBwcm90b2NvbHMsIGFuZAorbW9zdCBjb250cm9sbGVycyBoYXZlIG5vIHByb2JsZW0gaGFuZGxpbmcgIk1pY3JvV2lyZSIgKHRoaW5rIG9mIGl0IGFzCitoYWxmLWR1cGxleCBTUEksIGZvciByZXF1ZXN0L3Jlc3BvbnNlIHByb3RvY29scyksIFNTUCAoIlN5bmNocm9ub3VzCitTZXJpYWwgUHJvdG9jb2wiKSwgUFNQICgiUHJvZ3JhbW1hYmxlIFNlcmlhbCBQcm90b2NvbCIpLCBhbmQgb3RoZXIKK3JlbGF0ZWQgcHJvdG9jb2xzLgorCitTb21lIGNoaXBzIGVsaW1pbmF0ZSBhIHNpZ25hbCBsaW5lIGJ5IGNvbWJpbmluZyBNT1NJIGFuZCBNSVNPLCBhbmQKK2xpbWl0aW5nIHRoZW1zZWx2ZXMgdG8gaGFsZi1kdXBsZXggYXQgdGhlIGhhcmR3YXJlIGxldmVsLiAgSW4gZmFjdAorc29tZSBTUEkgY2hpcHMgaGF2ZSB0aGlzIHNpZ25hbCBtb2RlIGFzIGEgc3RyYXBwaW5nIG9wdGlvbi4gIFRoZXNlCitjYW4gYmUgYWNjZXNzZWQgdXNpbmcgdGhlIHNhbWUgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlIGFzIFNQSSwgYnV0IG9mCitjb3Vyc2UgdGhleSB3b24ndCBoYW5kbGUgZnVsbCBkdXBsZXggdHJhbnNmZXJzLiAgWW91IG1heSBmaW5kIHN1Y2gKK2NoaXBzIGRlc2NyaWJlZCBhcyB1c2luZyAidGhyZWUgd2lyZSIgc2lnbmFsaW5nOiBTQ0ssIGRhdGEsIG5DU3guCisoVGhhdCBkYXRhIGxpbmUgaXMgc29tZXRpbWVzIGNhbGxlZCBNT01JIG9yIFNJU08uKQorCitNaWNyb2NvbnRyb2xsZXJzIG9mdGVuIHN1cHBvcnQgYm90aCBtYXN0ZXIgYW5kIHNsYXZlIHNpZGVzIG9mIHRoZSBTUEkKK3Byb3RvY29sLiAgVGhpcyBkb2N1bWVudCAoYW5kIExpbnV4KSBjdXJyZW50bHkgb25seSBzdXBwb3J0cyB0aGUgbWFzdGVyCitzaWRlIG9mIFNQSSBpbnRlcmFjdGlvbnMuCisKKworV2hvIHVzZXMgaXQ/ICBPbiB3aGF0IGtpbmRzIG9mIHN5c3RlbXM/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpbnV4IGRldmVsb3BlcnMgdXNpbmcgU1BJIGFyZSBwcm9iYWJseSB3cml0aW5nIGRldmljZSBkcml2ZXJzIGZvciBlbWJlZGRlZAorc3lzdGVtcyBib2FyZHMuICBTUEkgaXMgdXNlZCB0byBjb250cm9sIGV4dGVybmFsIGNoaXBzLCBhbmQgaXQgaXMgYWxzbyBhCitwcm90b2NvbCBzdXBwb3J0ZWQgYnkgZXZlcnkgTU1DIG9yIFNEIG1lbW9yeSBjYXJkLiAgKFRoZSBvbGRlciAiRGF0YUZsYXNoIgorY2FyZHMsIHByZWRhdGluZyBNTUMgY2FyZHMgYnV0IHVzaW5nIHRoZSBzYW1lIGNvbm5lY3RvcnMgYW5kIGNhcmQgc2hhcGUsCitzdXBwb3J0IG9ubHkgU1BJLikgIFNvbWUgUEMgaGFyZHdhcmUgdXNlcyBTUEkgZmxhc2ggZm9yIEJJT1MgY29kZS4KKworU1BJIHNsYXZlIGNoaXBzIHJhbmdlIGZyb20gZGlnaXRhbC9hbmFsb2cgY29udmVydGVycyB1c2VkIGZvciBhbmFsb2cKK3NlbnNvcnMgYW5kIGNvZGVjcywgdG8gbWVtb3J5LCB0byBwZXJpcGhlcmFscyBsaWtlIFVTQiBjb250cm9sbGVycworb3IgRXRoZXJuZXQgYWRhcHRlcnM7IGFuZCBtb3JlLgorCitNb3N0IHN5c3RlbXMgdXNpbmcgU1BJIHdpbGwgaW50ZWdyYXRlIGEgZmV3IGRldmljZXMgb24gYSBtYWluYm9hcmQuCitTb21lIHByb3ZpZGUgU1BJIGxpbmtzIG9uIGV4cGFuc2lvbiBjb25uZWN0b3JzOyBpbiBjYXNlcyB3aGVyZSBubworZGVkaWNhdGVkIFNQSSBjb250cm9sbGVyIGV4aXN0cywgR1BJTyBwaW5zIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhCitsb3cgc3BlZWQgImJpdGJhbmdpbmciIGFkYXB0ZXIuICBWZXJ5IGZldyBzeXN0ZW1zIHdpbGwgImhvdHBsdWciIGFuIFNQSQorY29udHJvbGxlcjsgdGhlIHJlYXNvbnMgdG8gdXNlIFNQSSBmb2N1cyBvbiBsb3cgY29zdCBhbmQgc2ltcGxlIG9wZXJhdGlvbiwKK2FuZCBpZiBkeW5hbWljIHJlY29uZmlndXJhdGlvbiBpcyBpbXBvcnRhbnQsIFVTQiB3aWxsIG9mdGVuIGJlIGEgbW9yZQorYXBwcm9wcmlhdGUgbG93LXBpbmNvdW50IHBlcmlwaGVyYWwgYnVzLgorCitNYW55IG1pY3JvY29udHJvbGxlcnMgdGhhdCBjYW4gcnVuIExpbnV4IGludGVncmF0ZSBvbmUgb3IgbW9yZSBJL08KK2ludGVyZmFjZXMgd2l0aCBTUEkgbW9kZXMuICBHaXZlbiBTUEkgc3VwcG9ydCwgdGhleSBjb3VsZCB1c2UgTU1DIG9yIFNECitjYXJkcyB3aXRob3V0IG5lZWRpbmcgYSBzcGVjaWFsIHB1cnBvc2UgTU1DL1NEL1NESU8gY29udHJvbGxlci4KKworCitJJ20gY29uZnVzZWQuICBXaGF0IGFyZSB0aGVzZSBmb3VyIFNQSSAiY2xvY2sgbW9kZXMiPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0l0J3MgZWFzeSB0byBiZSBjb25mdXNlZCBoZXJlLCBhbmQgdGhlIHZlbmRvciBkb2N1bWVudGF0aW9uIHlvdSdsbAorZmluZCBpc24ndCBuZWNlc3NhcmlseSBoZWxwZnVsLiAgVGhlIGZvdXIgbW9kZXMgY29tYmluZSB0d28gbW9kZSBiaXRzOgorCisgLSBDUE9MIGluZGljYXRlcyB0aGUgaW5pdGlhbCBjbG9jayBwb2xhcml0eS4gIENQT0w9MCBtZWFucyB0aGUKKyAgIGNsb2NrIHN0YXJ0cyBsb3csIHNvIHRoZSBmaXJzdCAobGVhZGluZykgZWRnZSBpcyByaXNpbmcsIGFuZAorICAgdGhlIHNlY29uZCAodHJhaWxpbmcpIGVkZ2UgaXMgZmFsbGluZy4gIENQT0w9MSBtZWFucyB0aGUgY2xvY2sKKyAgIHN0YXJ0cyBoaWdoLCBzbyB0aGUgZmlyc3QgKGxlYWRpbmcpIGVkZ2UgaXMgZmFsbGluZy4KKworIC0gQ1BIQSBpbmRpY2F0ZXMgdGhlIGNsb2NrIHBoYXNlIHVzZWQgdG8gc2FtcGxlIGRhdGE7IENQSEE9MCBzYXlzCisgICBzYW1wbGUgb24gdGhlIGxlYWRpbmcgZWRnZSwgQ1BIQT0xIG1lYW5zIHRoZSB0cmFpbGluZyBlZGdlLgorCisgICBTaW5jZSB0aGUgc2lnbmFsIG5lZWRzIHRvIHN0YWJsaXplIGJlZm9yZSBpdCdzIHNhbXBsZWQsIENQSEE9MAorICAgaW1wbGllcyB0aGF0IGl0cyBkYXRhIGlzIHdyaXR0ZW4gaGFsZiBhIGNsb2NrIGJlZm9yZSB0aGUgZmlyc3QKKyAgIGNsb2NrIGVkZ2UuICBUaGUgY2hpcHNlbGVjdCBtYXkgaGF2ZSBtYWRlIGl0IGJlY29tZSBhdmFpbGFibGUuCisKK0NoaXAgc3BlY3Mgd29uJ3QgYWx3YXlzIHNheSAidXNlcyBTUEkgbW9kZSBYIiBpbiBhcyBtYW55IHdvcmRzLAorYnV0IHRoZWlyIHRpbWluZyBkaWFncmFtcyB3aWxsIG1ha2UgdGhlIENQT0wgYW5kIENQSEEgbW9kZXMgY2xlYXIuCisKK0luIHRoZSBTUEkgbW9kZSBudW1iZXIsIENQT0wgaXMgdGhlIGhpZ2ggb3JkZXIgYml0IGFuZCBDUEhBIGlzIHRoZQorbG93IG9yZGVyIGJpdC4gIFNvIHdoZW4gYSBjaGlwJ3MgdGltaW5nIGRpYWdyYW0gc2hvd3MgdGhlIGNsb2NrCitzdGFydGluZyBsb3cgKENQT0w9MCkgYW5kIGRhdGEgc3RhYmlsaXplZCBmb3Igc2FtcGxpbmcgZHVyaW5nIHRoZQordHJhaWxpbmcgY2xvY2sgZWRnZSAoQ1BIQT0xKSwgdGhhdCdzIFNQSSBtb2RlIDEuCisKK05vdGUgdGhhdCB0aGUgY2xvY2sgbW9kZSBpcyByZWxldmFudCBhcyBzb29uIGFzIHRoZSBjaGlwc2VsZWN0IGdvZXMKK2FjdGl2ZS4gIFNvIHRoZSBtYXN0ZXIgbXVzdCBzZXQgdGhlIGNsb2NrIHRvIGluYWN0aXZlIGJlZm9yZSBzZWxlY3RpbmcKK2Egc2xhdmUsIGFuZCB0aGUgc2xhdmUgY2FuIHRlbGwgdGhlIGNob3NlbiBwb2xhcml0eSBieSBzYW1wbGluZyB0aGUKK2Nsb2NrIGxldmVsIHdoZW4gaXRzIHNlbGVjdCBsaW5lIGdvZXMgYWN0aXZlLiAgVGhhdCdzIHdoeSBtYW55IGRldmljZXMKK3N1cHBvcnQgZm9yIGV4YW1wbGUgYm90aCBtb2RlcyAwIGFuZCAzOiAgdGhleSBkb24ndCBjYXJlIGFib3V0IHBvbGFyaXR5LAorYW5kIGFsd2F5cyBjbG9jayBkYXRhIGluL291dCBvbiByaXNpbmcgY2xvY2sgZWRnZXMuCisKKworSG93IGRvIHRoZXNlIGRyaXZlciBwcm9ncmFtbWluZyBpbnRlcmZhY2VzIHdvcms/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RoZSA8bGludXgvc3BpL3NwaS5oPiBoZWFkZXIgZmlsZSBpbmNsdWRlcyBrZXJuZWxkb2MsIGFzIGRvZXMgdGhlCittYWluIHNvdXJjZSBjb2RlLCBhbmQgeW91IHNob3VsZCBjZXJ0YWlubHkgcmVhZCB0aGF0IGNoYXB0ZXIgb2YgdGhlCitrZXJuZWwgQVBJIGRvY3VtZW50LiAgVGhpcyBpcyBqdXN0IGFuIG92ZXJ2aWV3LCBzbyB5b3UgZ2V0IHRoZSBiaWcKK3BpY3R1cmUgYmVmb3JlIHRob3NlIGRldGFpbHMuCisKK1NQSSByZXF1ZXN0cyBhbHdheXMgZ28gaW50byBJL08gcXVldWVzLiAgUmVxdWVzdHMgZm9yIGEgZ2l2ZW4gU1BJIGRldmljZQorYXJlIGFsd2F5cyBleGVjdXRlZCBpbiBGSUZPIG9yZGVyLCBhbmQgY29tcGxldGUgYXN5bmNocm9ub3VzbHkgdGhyb3VnaAorY29tcGxldGlvbiBjYWxsYmFja3MuICBUaGVyZSBhcmUgYWxzbyBzb21lIHNpbXBsZSBzeW5jaHJvbm91cyB3cmFwcGVycworZm9yIHRob3NlIGNhbGxzLCBpbmNsdWRpbmcgb25lcyBmb3IgY29tbW9uIHRyYW5zYWN0aW9uIHR5cGVzIGxpa2Ugd3JpdGluZworYSBjb21tYW5kIGFuZCB0aGVuIHJlYWRpbmcgaXRzIHJlc3BvbnNlLgorCitUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIFNQSSBkcml2ZXIsIGhlcmUgY2FsbGVkOgorCisgIENvbnRyb2xsZXIgZHJpdmVycyAuLi4gY29udHJvbGxlcnMgbWF5IGJlIGJ1aWx0IGludG8gU3lzdGVtLU9uLUNoaXAKKwlwcm9jZXNzb3JzLCBhbmQgb2Z0ZW4gc3VwcG9ydCBib3RoIE1hc3RlciBhbmQgU2xhdmUgcm9sZXMuCisJVGhlc2UgZHJpdmVycyB0b3VjaCBoYXJkd2FyZSByZWdpc3RlcnMgYW5kIG1heSB1c2UgRE1BLgorCU9yIHRoZXkgY2FuIGJlIFBJTyBiaXRiYW5nZXJzLCBuZWVkaW5nIGp1c3QgR1BJTyBwaW5zLgorCisgIFByb3RvY29sIGRyaXZlcnMgLi4uIHRoZXNlIHBhc3MgbWVzc2FnZXMgdGhyb3VnaCB0aGUgY29udHJvbGxlcgorCWRyaXZlciB0byBjb21tdW5pY2F0ZSB3aXRoIGEgU2xhdmUgb3IgTWFzdGVyIGRldmljZSBvbiB0aGUKKwlvdGhlciBzaWRlIG9mIGFuIFNQSSBsaW5rLgorCitTbyBmb3IgZXhhbXBsZSBvbmUgcHJvdG9jb2wgZHJpdmVyIG1pZ2h0IHRhbGsgdG8gdGhlIE1URCBsYXllciB0byBleHBvcnQKK2RhdGEgdG8gZmlsZXN5c3RlbXMgc3RvcmVkIG9uIFNQSSBmbGFzaCBsaWtlIERhdGFGbGFzaDsgYW5kIG90aGVycyBtaWdodAorY29udHJvbCBhdWRpbyBpbnRlcmZhY2VzLCBwcmVzZW50IHRvdWNoc2NyZWVuIHNlbnNvcnMgYXMgaW5wdXQgaW50ZXJmYWNlcywKK29yIG1vbml0b3IgdGVtcGVyYXR1cmUgYW5kIHZvbHRhZ2UgbGV2ZWxzIGR1cmluZyBpbmR1c3RyaWFsIHByb2Nlc3NpbmcuCitBbmQgdGhvc2UgbWlnaHQgYWxsIGJlIHNoYXJpbmcgdGhlIHNhbWUgY29udHJvbGxlciBkcml2ZXIuCisKK0EgInN0cnVjdCBzcGlfZGV2aWNlIiBlbmNhcHN1bGF0ZXMgdGhlIG1hc3Rlci1zaWRlIGludGVyZmFjZSBiZXR3ZWVuCit0aG9zZSB0d28gdHlwZXMgb2YgZHJpdmVyLiAgQXQgdGhpcyB3cml0aW5nLCBMaW51eCBoYXMgbm8gc2xhdmUgc2lkZQorcHJvZ3JhbW1pbmcgaW50ZXJmYWNlLgorCitUaGVyZSBpcyBhIG1pbmltYWwgY29yZSBvZiBTUEkgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlcywgZm9jdXNzaW5nIG9uCit1c2luZyB0aGUgZHJpdmVyIG1vZGVsIHRvIGNvbm5lY3QgY29udHJvbGxlciBhbmQgcHJvdG9jb2wgZHJpdmVycyB1c2luZworZGV2aWNlIHRhYmxlcyBwcm92aWRlZCBieSBib2FyZCBzcGVjaWZpYyBpbml0aWFsaXphdGlvbiBjb2RlLiAgU1BJCitzaG93cyB1cCBpbiBzeXNmcyBpbiBzZXZlcmFsIGxvY2F0aW9uczoKKworICAgL3N5cy9kZXZpY2VzLy4uLi9DVExSIC4uLiBwaHlzaWNhbCBub2RlIGZvciBhIGdpdmVuIFNQSSBjb250cm9sbGVyCisKKyAgIC9zeXMvZGV2aWNlcy8uLi4vQ1RMUi9zcGlCLkMgLi4uIHNwaV9kZXZpY2Ugb24gYnVzICJCIiwKKwljaGlwc2VsZWN0IEMsIGFjY2Vzc2VkIHRocm91Z2ggQ1RMUi4KKworICAgL3N5cy9idXMvc3BpL2RldmljZXMvc3BpQi5DIC4uLiBzeW1saW5rIHRvIHRoYXQgcGh5c2ljYWwKKyAgIAkuLi4vQ1RMUi9zcGlCLkMgZGV2aWNlCisKKyAgIC9zeXMvZGV2aWNlcy8uLi4vQ1RMUi9zcGlCLkMvbW9kYWxpYXMgLi4uIGlkZW50aWZpZXMgdGhlIGRyaXZlcgorCXRoYXQgc2hvdWxkIGJlIHVzZWQgd2l0aCB0aGlzIGRldmljZSAoZm9yIGhvdHBsdWcvY29sZHBsdWcpCisKKyAgIC9zeXMvYnVzL3NwaS9kcml2ZXJzL0QgLi4uIGRyaXZlciBmb3Igb25lIG9yIG1vcmUgc3BpKi4qIGRldmljZXMKKworICAgL3N5cy9jbGFzcy9zcGlfbWFzdGVyL3NwaUIgLi4uIHN5bWxpbmsgKG9yIGFjdHVhbCBkZXZpY2Ugbm9kZSkgdG8KKwlhIGxvZ2ljYWwgbm9kZSB3aGljaCBjb3VsZCBob2xkIGNsYXNzIHJlbGF0ZWQgc3RhdGUgZm9yIHRoZQorCWNvbnRyb2xsZXIgbWFuYWdpbmcgYnVzICJCIi4gIEFsbCBzcGlCLiogZGV2aWNlcyBzaGFyZSBvbmUKKwlwaHlzaWNhbCBTUEkgYnVzIHNlZ21lbnQsIHdpdGggU0NMSywgTU9TSSwgYW5kIE1JU08uCisKK05vdGUgdGhhdCB0aGUgYWN0dWFsIGxvY2F0aW9uIG9mIHRoZSBjb250cm9sbGVyJ3MgY2xhc3Mgc3RhdGUgZGVwZW5kcworb24gd2hldGhlciB5b3UgZW5hYmxlZCBDT05GSUdfU1lTRlNfREVQUkVDQVRFRCBvciBub3QuICBBdCB0aGlzIHRpbWUsCit0aGUgb25seSBjbGFzcy1zcGVjaWZpYyBzdGF0ZSBpcyB0aGUgYnVzIG51bWJlciAoIkIiIGluICJzcGlCIiksIHNvCit0aG9zZSAvc3lzL2NsYXNzIGVudHJpZXMgYXJlIG9ubHkgdXNlZnVsIHRvIHF1aWNrbHkgaWRlbnRpZnkgYnVzc2VzLgorCisKK0hvdyBkb2VzIGJvYXJkLXNwZWNpZmljIGluaXQgY29kZSBkZWNsYXJlIFNQSSBkZXZpY2VzPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaW51eCBuZWVkcyBzZXZlcmFsIGtpbmRzIG9mIGluZm9ybWF0aW9uIHRvIHByb3Blcmx5IGNvbmZpZ3VyZSBTUEkgZGV2aWNlcy4KK1RoYXQgaW5mb3JtYXRpb24gaXMgbm9ybWFsbHkgcHJvdmlkZWQgYnkgYm9hcmQtc3BlY2lmaWMgY29kZSwgZXZlbiBmb3IKK2NoaXBzIHRoYXQgZG8gc3VwcG9ydCBzb21lIG9mIGF1dG9tYXRlZCBkaXNjb3ZlcnkvZW51bWVyYXRpb24uCisKK0RFQ0xBUkUgQ09OVFJPTExFUlMKKworVGhlIGZpcnN0IGtpbmQgb2YgaW5mb3JtYXRpb24gaXMgYSBsaXN0IG9mIHdoYXQgU1BJIGNvbnRyb2xsZXJzIGV4aXN0LgorRm9yIFN5c3RlbS1vbi1DaGlwIChTT0MpIGJhc2VkIGJvYXJkcywgdGhlc2Ugd2lsbCB1c3VhbGx5IGJlIHBsYXRmb3JtCitkZXZpY2VzLCBhbmQgdGhlIGNvbnRyb2xsZXIgbWF5IG5lZWQgc29tZSBwbGF0Zm9ybV9kYXRhIGluIG9yZGVyIHRvCitvcGVyYXRlIHByb3Blcmx5LiAgVGhlICJzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIiB3aWxsIGluY2x1ZGUgcmVzb3VyY2VzCitsaWtlIHRoZSBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyJ3MgZmlyc3QgcmVnaXN0ZXIgYW5kIGl0cyBJUlEuCisKK1BsYXRmb3JtcyB3aWxsIG9mdGVuIGFic3RyYWN0IHRoZSAicmVnaXN0ZXIgU1BJIGNvbnRyb2xsZXIiIG9wZXJhdGlvbiwKK21heWJlIGNvdXBsaW5nIGl0IHdpdGggY29kZSB0byBpbml0aWFsaXplIHBpbiBjb25maWd1cmF0aW9ucywgc28gdGhhdAordGhlIGFyY2gvLi4uL21hY2gtKi9ib2FyZC0qLmMgZmlsZXMgZm9yIHNldmVyYWwgYm9hcmRzIGNhbiBhbGwgc2hhcmUgdGhlCitzYW1lIGJhc2ljIGNvbnRyb2xsZXIgc2V0dXAgY29kZS4gIFRoaXMgaXMgYmVjYXVzZSBtb3N0IFNPQ3MgaGF2ZSBzZXZlcmFsCitTUEktY2FwYWJsZSBjb250cm9sbGVycywgYW5kIG9ubHkgdGhlIG9uZXMgYWN0dWFsbHkgdXNhYmxlIG9uIGEgZ2l2ZW4KK2JvYXJkIHNob3VsZCBub3JtYWxseSBiZSBzZXQgdXAgYW5kIHJlZ2lzdGVyZWQuCisKK1NvIGZvciBleGFtcGxlIGFyY2gvLi4uL21hY2gtKi9ib2FyZC0qLmMgZmlsZXMgbWlnaHQgaGF2ZSBjb2RlIGxpa2U6CisKKwkjaW5jbHVkZSA8bWFjaC9zcGkuaD4JLyogZm9yIG15c29jX3NwaV9kYXRhICovCisKKwkvKiBpZiB5b3VyIG1hY2gtKiBpbmZyYXN0cnVjdHVyZSBkb2Vzbid0IHN1cHBvcnQga2VybmVscyB0aGF0IGNhbgorCSAqIHJ1biBvbiBtdWx0aXBsZSBib2FyZHMsIHBkYXRhIHdvdWxkbid0IGJlbmVmaXQgZnJvbSAiX19pbml0Ii4KKwkgKi8KKwlzdGF0aWMgc3RydWN0IG15c29jX3NwaV9kYXRhIHBkYXRhIF9faW5pdGRhdGEgPSB7IC4uLiB9OworCisJc3RhdGljIF9faW5pdCBib2FyZF9pbml0KHZvaWQpCisJeworCQkuLi4KKwkJLyogdGhpcyBib2FyZCBvbmx5IHVzZXMgU1BJIGNvbnRyb2xsZXIgIzIgKi8KKwkJbXlzb2NfcmVnaXN0ZXJfc3BpKDIsICZwZGF0YSk7CisJCS4uLgorCX0KKworQW5kIFNPQy1zcGVjaWZpYyB1dGlsaXR5IGNvZGUgbWlnaHQgbG9vayBzb21ldGhpbmcgbGlrZToKKworCSNpbmNsdWRlIDxtYWNoL3NwaS5oPgorCisJc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ugc3BpMiA9IHsgLi4uIH07CisKKwl2b2lkIG15c29jX3JlZ2lzdGVyX3NwaSh1bnNpZ25lZCBuLCBzdHJ1Y3QgbXlzb2Nfc3BpX2RhdGEgKnBkYXRhKQorCXsKKwkJc3RydWN0IG15c29jX3NwaV9kYXRhICpwZGF0YTI7CisKKwkJcGRhdGEyID0ga21hbGxvYyhzaXplb2YgKnBkYXRhMiwgR0ZQX0tFUk5FTCk7CisJCSpwZGF0YTIgPSBwZGF0YTsKKwkJLi4uCisJCWlmIChuID09IDIpIHsKKwkJCXNwaTItPmRldi5wbGF0Zm9ybV9kYXRhID0gcGRhdGEyOworCQkJcmVnaXN0ZXJfcGxhdGZvcm1fZGV2aWNlKCZzcGkyKTsKKworCQkJLyogYWxzbzogc2V0IHVwIHBpbiBtb2RlcyBzbyB0aGUgc3BpMiBzaWduYWxzIGFyZQorCQkJICogdmlzaWJsZSBvbiB0aGUgcmVsZXZhbnQgcGlucyAuLi4gYm9vdGxvYWRlcnMgb24KKwkJCSAqIHByb2R1Y3Rpb24gYm9hcmRzIG1heSBhbHJlYWR5IGhhdmUgZG9uZSB0aGlzLCBidXQKKwkJCSAqIGRldmVsb3BlciBib2FyZHMgd2lsbCBvZnRlbiBuZWVkIExpbnV4IHRvIGRvIGl0LgorCQkJICovCisJCX0KKwkJLi4uCisJfQorCitOb3RpY2UgaG93IHRoZSBwbGF0Zm9ybV9kYXRhIGZvciBib2FyZHMgbWF5IGJlIGRpZmZlcmVudCwgZXZlbiBpZiB0aGUKK3NhbWUgU09DIGNvbnRyb2xsZXIgaXMgdXNlZC4gIEZvciBleGFtcGxlLCBvbiBvbmUgYm9hcmQgU1BJIG1pZ2h0IHVzZQorYW4gZXh0ZXJuYWwgY2xvY2ssIHdoZXJlIGFub3RoZXIgZGVyaXZlcyB0aGUgU1BJIGNsb2NrIGZyb20gY3VycmVudAorc2V0dGluZ3Mgb2Ygc29tZSBtYXN0ZXIgY2xvY2suCisKKworREVDTEFSRSBTTEFWRSBERVZJQ0VTCisKK1RoZSBzZWNvbmQga2luZCBvZiBpbmZvcm1hdGlvbiBpcyBhIGxpc3Qgb2Ygd2hhdCBTUEkgc2xhdmUgZGV2aWNlcyBleGlzdAorb24gdGhlIHRhcmdldCBib2FyZCwgb2Z0ZW4gd2l0aCBzb21lIGJvYXJkLXNwZWNpZmljIGRhdGEgbmVlZGVkIGZvciB0aGUKK2RyaXZlciB0byB3b3JrIGNvcnJlY3RseS4KKworTm9ybWFsbHkgeW91ciBhcmNoLy4uLi9tYWNoLSovYm9hcmQtKi5jIGZpbGVzIHdvdWxkIHByb3ZpZGUgYSBzbWFsbCB0YWJsZQorbGlzdGluZyB0aGUgU1BJIGRldmljZXMgb24gZWFjaCBib2FyZC4gIChUaGlzIHdvdWxkIHR5cGljYWxseSBiZSBvbmx5IGEKK3NtYWxsIGhhbmRmdWwuKSAgVGhhdCBtaWdodCBsb29rIGxpa2U6CisKKwlzdGF0aWMgc3RydWN0IGFkczc4NDZfcGxhdGZvcm1fZGF0YSBhZHNfaW5mbyA9IHsKKwkJLnZyZWZfZGVsYXlfdXNlY3MJPSAxMDAsCisJCS54X3BsYXRlX29obXMJCT0gNTgwLAorCQkueV9wbGF0ZV9vaG1zCQk9IDQxMCwKKwl9OworCisJc3RhdGljIHN0cnVjdCBzcGlfYm9hcmRfaW5mbyBzcGlfYm9hcmRfaW5mb1tdIF9faW5pdGRhdGEgPSB7CisJeworCQkubW9kYWxpYXMJPSAiYWRzNzg0NiIsCisJCS5wbGF0Zm9ybV9kYXRhCT0gJmFkc19pbmZvLAorCQkubW9kZQkJPSBTUElfTU9ERV8wLAorCQkuaXJxCQk9IEdQSU9fSVJRKDMxKSwKKwkJLm1heF9zcGVlZF9oegk9IDEyMDAwMCAvKiBtYXggc2FtcGxlIHJhdGUgYXQgM1YgKi8gKiAxNiwKKwkJLmJ1c19udW0JPSAxLAorCQkuY2hpcF9zZWxlY3QJPSAwLAorCX0sCisJfTsKKworQWdhaW4sIG5vdGljZSBob3cgYm9hcmQtc3BlY2lmaWMgaW5mb3JtYXRpb24gaXMgcHJvdmlkZWQ7IGVhY2ggY2hpcCBtYXkgbmVlZAorc2V2ZXJhbCB0eXBlcy4gIFRoaXMgZXhhbXBsZSBzaG93cyBnZW5lcmljIGNvbnN0cmFpbnRzIGxpa2UgdGhlIGZhc3Rlc3QgU1BJCitjbG9jayB0byBhbGxvdyAoYSBmdW5jdGlvbiBvZiBib2FyZCB2b2x0YWdlIGluIHRoaXMgY2FzZSkgb3IgaG93IGFuIElSUSBwaW4KK2lzIHdpcmVkLCBwbHVzIGNoaXAtc3BlY2lmaWMgY29uc3RyYWludHMgbGlrZSBhbiBpbXBvcnRhbnQgZGVsYXkgdGhhdCdzCitjaGFuZ2VkIGJ5IHRoZSBjYXBhY2l0YW5jZSBhdCBvbmUgcGluLgorCisoVGhlcmUncyBhbHNvICJjb250cm9sbGVyX2RhdGEiLCBpbmZvcm1hdGlvbiB0aGF0IG1heSBiZSB1c2VmdWwgdG8gdGhlCitjb250cm9sbGVyIGRyaXZlci4gIEFuIGV4YW1wbGUgd291bGQgYmUgcGVyaXBoZXJhbC1zcGVjaWZpYyBETUEgdHVuaW5nCitkYXRhIG9yIGNoaXBzZWxlY3QgY2FsbGJhY2tzLiAgVGhpcyBpcyBzdG9yZWQgaW4gc3BpX2RldmljZSBsYXRlci4pCisKK1RoZSBib2FyZF9pbmZvIHNob3VsZCBwcm92aWRlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBsZXQgdGhlIHN5c3RlbSB3b3JrCit3aXRob3V0IHRoZSBjaGlwJ3MgZHJpdmVyIGJlaW5nIGxvYWRlZC4gIFRoZSBtb3N0IHRyb3VibGVzb21lIGFzcGVjdCBvZgordGhhdCBpcyBsaWtlbHkgdGhlIFNQSV9DU19ISUdIIGJpdCBpbiB0aGUgc3BpX2RldmljZS5tb2RlIGZpZWxkLCBzaW5jZQorc2hhcmluZyBhIGJ1cyB3aXRoIGEgZGV2aWNlIHRoYXQgaW50ZXJwcmV0cyBjaGlwc2VsZWN0ICJiYWNrd2FyZHMiIGlzCitub3QgcG9zc2libGUgdW50aWwgdGhlIGluZnJhc3RydWN0dXJlIGtub3dzIGhvdyB0byBkZXNlbGVjdCBpdC4KKworVGhlbiB5b3VyIGJvYXJkIGluaXRpYWxpemF0aW9uIGNvZGUgd291bGQgcmVnaXN0ZXIgdGhhdCB0YWJsZSB3aXRoIHRoZSBTUEkKK2luZnJhc3RydWN0dXJlLCBzbyB0aGF0IGl0J3MgYXZhaWxhYmxlIGxhdGVyIHdoZW4gdGhlIFNQSSBtYXN0ZXIgY29udHJvbGxlcgorZHJpdmVyIGlzIHJlZ2lzdGVyZWQ6CisKKwlzcGlfcmVnaXN0ZXJfYm9hcmRfaW5mbyhzcGlfYm9hcmRfaW5mbywgQVJSQVlfU0laRShzcGlfYm9hcmRfaW5mbykpOworCitMaWtlIHdpdGggb3RoZXIgc3RhdGljIGJvYXJkLXNwZWNpZmljIHNldHVwLCB5b3Ugd29uJ3QgdW5yZWdpc3RlciB0aG9zZS4KKworVGhlIHdpZGVseSB1c2VkICJjYXJkIiBzdHlsZSBjb21wdXRlcnMgYnVuZGxlIG1lbW9yeSwgY3B1LCBhbmQgbGl0dGxlIGVsc2UKK29udG8gYSBjYXJkIHRoYXQncyBtYXliZSBqdXN0IHRoaXJ0eSBzcXVhcmUgY2VudGltZXRlcnMuICBPbiBzdWNoIHN5c3RlbXMsCit5b3VyIGFyY2gvLi4uL21hY2gtLi4uL2JvYXJkLSouYyBmaWxlIHdvdWxkIHByaW1hcmlseSBwcm92aWRlIGluZm9ybWF0aW9uCithYm91dCB0aGUgZGV2aWNlcyBvbiB0aGUgbWFpbmJvYXJkIGludG8gd2hpY2ggc3VjaCBhIGNhcmQgaXMgcGx1Z2dlZC4gIFRoYXQKK2NlcnRhaW5seSBpbmNsdWRlcyBTUEkgZGV2aWNlcyBob29rZWQgdXAgdGhyb3VnaCB0aGUgY2FyZCBjb25uZWN0b3JzIQorCisKK05PTi1TVEFUSUMgQ09ORklHVVJBVElPTlMKKworRGV2ZWxvcGVyIGJvYXJkcyBvZnRlbiBwbGF5IGJ5IGRpZmZlcmVudCBydWxlcyB0aGFuIHByb2R1Y3QgYm9hcmRzLCBhbmQgb25lCitleGFtcGxlIGlzIHRoZSBwb3RlbnRpYWwgbmVlZCB0byBob3RwbHVnIFNQSSBkZXZpY2VzIGFuZC9vciBjb250cm9sbGVycy4KKworRm9yIHRob3NlIGNhc2VzIHlvdSBtaWdodCBuZWVkIHRvIHVzZSBzcGlfYnVzbnVtX3RvX21hc3RlcigpIHRvIGxvb2sKK3VwIHRoZSBzcGkgYnVzIG1hc3RlciwgYW5kIHdpbGwgbGlrZWx5IG5lZWQgc3BpX25ld19kZXZpY2UoKSB0byBwcm92aWRlIHRoZQorYm9hcmQgaW5mbyBiYXNlZCBvbiB0aGUgYm9hcmQgdGhhdCB3YXMgaG90cGx1Z2dlZC4gIE9mIGNvdXJzZSwgeW91J2QgbGF0ZXIKK2NhbGwgYXQgbGVhc3Qgc3BpX3VucmVnaXN0ZXJfZGV2aWNlKCkgd2hlbiB0aGF0IGJvYXJkIGlzIHJlbW92ZWQuCisKK1doZW4gTGludXggaW5jbHVkZXMgc3VwcG9ydCBmb3IgTU1DL1NEL1NESU8vRGF0YUZsYXNoIGNhcmRzIHRocm91Z2ggU1BJLCB0aG9zZQorY29uZmlndXJhdGlvbnMgd2lsbCBhbHNvIGJlIGR5bmFtaWMuICBGb3J0dW5hdGVseSwgc3VjaCBkZXZpY2VzIGFsbCBzdXBwb3J0CitiYXNpYyBkZXZpY2UgaWRlbnRpZmljYXRpb24gcHJvYmVzLCBzbyB0aGV5IHNob3VsZCBob3RwbHVnIG5vcm1hbGx5LgorCisKK0hvdyBkbyBJIHdyaXRlIGFuICJTUEkgUHJvdG9jb2wgRHJpdmVyIj8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK01vc3QgU1BJIGRyaXZlcnMgYXJlIGN1cnJlbnRseSBrZXJuZWwgZHJpdmVycywgYnV0IHRoZXJlJ3MgYWxzbyBzdXBwb3J0Citmb3IgdXNlcnNwYWNlIGRyaXZlcnMuICBIZXJlIHdlIHRhbGsgb25seSBhYm91dCBrZXJuZWwgZHJpdmVycy4KKworU1BJIHByb3RvY29sIGRyaXZlcnMgc29tZXdoYXQgcmVzZW1ibGUgcGxhdGZvcm0gZGV2aWNlIGRyaXZlcnM6CisKKwlzdGF0aWMgc3RydWN0IHNwaV9kcml2ZXIgQ0hJUF9kcml2ZXIgPSB7CisJCS5kcml2ZXIgPSB7CisJCQkubmFtZQkJPSAiQ0hJUCIsCisJCQkub3duZXIJCT0gVEhJU19NT0RVTEUsCisJCQkucG0JCT0gJkNISVBfcG1fb3BzLAorCQl9LAorCisJCS5wcm9iZQkJPSBDSElQX3Byb2JlLAorCQkucmVtb3ZlCQk9IENISVBfcmVtb3ZlLAorCX07CisKK1RoZSBkcml2ZXIgY29yZSB3aWxsIGF1dG9tYXRpY2FsbHkgYXR0ZW1wdCB0byBiaW5kIHRoaXMgZHJpdmVyIHRvIGFueSBTUEkKK2RldmljZSB3aG9zZSBib2FyZF9pbmZvIGdhdmUgYSBtb2RhbGlhcyBvZiAiQ0hJUCIuICBZb3VyIHByb2JlKCkgY29kZQorbWlnaHQgbG9vayBsaWtlIHRoaXMgdW5sZXNzIHlvdSdyZSBjcmVhdGluZyBhIGRldmljZSB3aGljaCBpcyBtYW5hZ2luZworYSBidXMgKGFwcGVhcmluZyB1bmRlciAvc3lzL2NsYXNzL3NwaV9tYXN0ZXIpLgorCisJc3RhdGljIGludCBDSElQX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCisJeworCQlzdHJ1Y3QgQ0hJUAkJCSpjaGlwOworCQlzdHJ1Y3QgQ0hJUF9wbGF0Zm9ybV9kYXRhCSpwZGF0YTsKKworCQkvKiBhc3N1bWluZyB0aGUgZHJpdmVyIHJlcXVpcmVzIGJvYXJkLXNwZWNpZmljIGRhdGE6ICovCisJCXBkYXRhID0gJnNwaS0+ZGV2LnBsYXRmb3JtX2RhdGE7CisJCWlmICghcGRhdGEpCisJCQlyZXR1cm4gLUVOT0RFVjsKKworCQkvKiBnZXQgbWVtb3J5IGZvciBkcml2ZXIncyBwZXItY2hpcCBzdGF0ZSAqLworCQljaGlwID0ga3phbGxvYyhzaXplb2YgKmNoaXAsIEdGUF9LRVJORUwpOworCQlpZiAoIWNoaXApCisJCQlyZXR1cm4gLUVOT01FTTsKKwkJc3BpX3NldF9kcnZkYXRhKHNwaSwgY2hpcCk7CisKKwkJLi4uIGV0YworCQlyZXR1cm4gMDsKKwl9CisKK0FzIHNvb24gYXMgaXQgZW50ZXJzIHByb2JlKCksIHRoZSBkcml2ZXIgbWF5IGlzc3VlIEkvTyByZXF1ZXN0cyB0bwordGhlIFNQSSBkZXZpY2UgdXNpbmcgInN0cnVjdCBzcGlfbWVzc2FnZSIuICBXaGVuIHJlbW92ZSgpIHJldHVybnMsCitvciBhZnRlciBwcm9iZSgpIGZhaWxzLCB0aGUgZHJpdmVyIGd1YXJhbnRlZXMgdGhhdCBpdCB3b24ndCBzdWJtaXQKK2FueSBtb3JlIHN1Y2ggbWVzc2FnZXMuCisKKyAgLSBBbiBzcGlfbWVzc2FnZSBpcyBhIHNlcXVlbmNlIG9mIHByb3RvY29sIG9wZXJhdGlvbnMsIGV4ZWN1dGVkCisgICAgYXMgb25lIGF0b21pYyBzZXF1ZW5jZS4gIFNQSSBkcml2ZXIgY29udHJvbHMgaW5jbHVkZToKKworICAgICAgKyB3aGVuIGJpZGlyZWN0aW9uYWwgcmVhZHMgYW5kIHdyaXRlcyBzdGFydCAuLi4gYnkgaG93IGl0cworICAgICAgICBzZXF1ZW5jZSBvZiBzcGlfdHJhbnNmZXIgcmVxdWVzdHMgaXMgYXJyYW5nZWQ7CisKKyAgICAgICsgd2hpY2ggSS9PIGJ1ZmZlcnMgYXJlIHVzZWQgLi4uIGVhY2ggc3BpX3RyYW5zZmVyIHdyYXBzIGEKKyAgICAgICAgYnVmZmVyIGZvciBlYWNoIHRyYW5zZmVyIGRpcmVjdGlvbiwgc3VwcG9ydGluZyBmdWxsIGR1cGxleAorICAgICAgICAodHdvIHBvaW50ZXJzLCBtYXliZSB0aGUgc2FtZSBvbmUgaW4gYm90aCBjYXNlcykgYW5kIGhhbGYKKyAgICAgICAgZHVwbGV4IChvbmUgcG9pbnRlciBpcyBOVUxMKSB0cmFuc2ZlcnM7CisKKyAgICAgICsgb3B0aW9uYWxseSBkZWZpbmluZyBzaG9ydCBkZWxheXMgYWZ0ZXIgdHJhbnNmZXJzIC4uLiB1c2luZworICAgICAgICB0aGUgc3BpX3RyYW5zZmVyLmRlbGF5X3VzZWNzIHNldHRpbmcgKHRoaXMgZGVsYXkgY2FuIGJlIHRoZQorICAgICAgICBvbmx5IHByb3RvY29sIGVmZmVjdCwgaWYgdGhlIGJ1ZmZlciBsZW5ndGggaXMgemVybyk7CisKKyAgICAgICsgd2hldGhlciB0aGUgY2hpcHNlbGVjdCBiZWNvbWVzIGluYWN0aXZlIGFmdGVyIGEgdHJhbnNmZXIgYW5kCisgICAgICAgIGFueSBkZWxheSAuLi4gYnkgdXNpbmcgdGhlIHNwaV90cmFuc2Zlci5jc19jaGFuZ2UgZmxhZzsKKworICAgICAgKyBoaW50aW5nIHdoZXRoZXIgdGhlIG5leHQgbWVzc2FnZSBpcyBsaWtlbHkgdG8gZ28gdG8gdGhpcyBzYW1lCisgICAgICAgIGRldmljZSAuLi4gdXNpbmcgdGhlIHNwaV90cmFuc2Zlci5jc19jaGFuZ2UgZmxhZyBvbiB0aGUgbGFzdAorCXRyYW5zZmVyIGluIHRoYXQgYXRvbWljIGdyb3VwLCBhbmQgcG90ZW50aWFsbHkgc2F2aW5nIGNvc3RzCisJZm9yIGNoaXAgZGVzZWxlY3QgYW5kIHNlbGVjdCBvcGVyYXRpb25zLgorCisgIC0gRm9sbG93IHN0YW5kYXJkIGtlcm5lbCBydWxlcywgYW5kIHByb3ZpZGUgRE1BLXNhZmUgYnVmZmVycyBpbgorICAgIHlvdXIgbWVzc2FnZXMuICBUaGF0IHdheSBjb250cm9sbGVyIGRyaXZlcnMgdXNpbmcgRE1BIGFyZW4ndCBmb3JjZWQKKyAgICB0byBtYWtlIGV4dHJhIGNvcGllcyB1bmxlc3MgdGhlIGhhcmR3YXJlIHJlcXVpcmVzIGl0IChlLmcuIHdvcmtpbmcKKyAgICBhcm91bmQgaGFyZHdhcmUgZXJyYXRhIHRoYXQgZm9yY2UgdGhlIHVzZSBvZiBib3VuY2UgYnVmZmVyaW5nKS4KKworICAgIElmIHN0YW5kYXJkIGRtYV9tYXBfc2luZ2xlKCkgaGFuZGxpbmcgb2YgdGhlc2UgYnVmZmVycyBpcyBpbmFwcHJvcHJpYXRlLAorICAgIHlvdSBjYW4gdXNlIHNwaV9tZXNzYWdlLmlzX2RtYV9tYXBwZWQgdG8gdGVsbCB0aGUgY29udHJvbGxlciBkcml2ZXIKKyAgICB0aGF0IHlvdSd2ZSBhbHJlYWR5IHByb3ZpZGVkIHRoZSByZWxldmFudCBETUEgYWRkcmVzc2VzLgorCisgIC0gVGhlIGJhc2ljIEkvTyBwcmltaXRpdmUgaXMgc3BpX2FzeW5jKCkuICBBc3luYyByZXF1ZXN0cyBtYXkgYmUKKyAgICBpc3N1ZWQgaW4gYW55IGNvbnRleHQgKGlycSBoYW5kbGVyLCB0YXNrLCBldGMpIGFuZCBjb21wbGV0aW9uCisgICAgaXMgcmVwb3J0ZWQgdXNpbmcgYSBjYWxsYmFjayBwcm92aWRlZCB3aXRoIHRoZSBtZXNzYWdlLgorICAgIEFmdGVyIGFueSBkZXRlY3RlZCBlcnJvciwgdGhlIGNoaXAgaXMgZGVzZWxlY3RlZCBhbmQgcHJvY2Vzc2luZworICAgIG9mIHRoYXQgc3BpX21lc3NhZ2UgaXMgYWJvcnRlZC4KKworICAtIFRoZXJlIGFyZSBhbHNvIHN5bmNocm9ub3VzIHdyYXBwZXJzIGxpa2Ugc3BpX3N5bmMoKSwgYW5kIHdyYXBwZXJzCisgICAgbGlrZSBzcGlfcmVhZCgpLCBzcGlfd3JpdGUoKSwgYW5kIHNwaV93cml0ZV90aGVuX3JlYWQoKS4gIFRoZXNlCisgICAgbWF5IGJlIGlzc3VlZCBvbmx5IGluIGNvbnRleHRzIHRoYXQgbWF5IHNsZWVwLCBhbmQgdGhleSdyZSBhbGwKKyAgICBjbGVhbiAoYW5kIHNtYWxsLCBhbmQgIm9wdGlvbmFsIikgbGF5ZXJzIG92ZXIgc3BpX2FzeW5jKCkuCisKKyAgLSBUaGUgc3BpX3dyaXRlX3RoZW5fcmVhZCgpIGNhbGwsIGFuZCBjb252ZW5pZW5jZSB3cmFwcGVycyBhcm91bmQKKyAgICBpdCwgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIHNtYWxsIGFtb3VudHMgb2YgZGF0YSB3aGVyZSB0aGUKKyAgICBjb3N0IG9mIGFuIGV4dHJhIGNvcHkgbWF5IGJlIGlnbm9yZWQuICBJdCdzIGRlc2lnbmVkIHRvIHN1cHBvcnQKKyAgICBjb21tb24gUlBDLXN0eWxlIHJlcXVlc3RzLCBzdWNoIGFzIHdyaXRpbmcgYW4gZWlnaHQgYml0IGNvbW1hbmQKKyAgICBhbmQgcmVhZGluZyBhIHNpeHRlZW4gYml0IHJlc3BvbnNlIC0tIHNwaV93OHIxNigpIGJlaW5nIG9uZSBpdHMKKyAgICB3cmFwcGVycywgZG9pbmcgZXhhY3RseSB0aGF0LgorCitTb21lIGRyaXZlcnMgbWF5IG5lZWQgdG8gbW9kaWZ5IHNwaV9kZXZpY2UgY2hhcmFjdGVyaXN0aWNzIGxpa2UgdGhlCit0cmFuc2ZlciBtb2RlLCB3b3Jkc2l6ZSwgb3IgY2xvY2sgcmF0ZS4gIFRoaXMgaXMgZG9uZSB3aXRoIHNwaV9zZXR1cCgpLAord2hpY2ggd291bGQgbm9ybWFsbHkgYmUgY2FsbGVkIGZyb20gcHJvYmUoKSBiZWZvcmUgdGhlIGZpcnN0IEkvTyBpcworZG9uZSB0byB0aGUgZGV2aWNlLiAgSG93ZXZlciwgdGhhdCBjYW4gYWxzbyBiZSBjYWxsZWQgYXQgYW55IHRpbWUKK3RoYXQgbm8gbWVzc2FnZSBpcyBwZW5kaW5nIGZvciB0aGF0IGRldmljZS4KKworV2hpbGUgInNwaV9kZXZpY2UiIHdvdWxkIGJlIHRoZSBib3R0b20gYm91bmRhcnkgb2YgdGhlIGRyaXZlciwgdGhlCit1cHBlciBib3VuZGFyaWVzIG1pZ2h0IGluY2x1ZGUgc3lzZnMgKGVzcGVjaWFsbHkgZm9yIHNlbnNvciByZWFkaW5ncyksCit0aGUgaW5wdXQgbGF5ZXIsIEFMU0EsIG5ldHdvcmtpbmcsIE1URCwgdGhlIGNoYXJhY3RlciBkZXZpY2UgZnJhbWV3b3JrLAorb3Igb3RoZXIgTGludXggc3Vic3lzdGVtcy4KKworTm90ZSB0aGF0IHRoZXJlIGFyZSB0d28gdHlwZXMgb2YgbWVtb3J5IHlvdXIgZHJpdmVyIG11c3QgbWFuYWdlIGFzIHBhcnQKK29mIGludGVyYWN0aW5nIHdpdGggU1BJIGRldmljZXMuCisKKyAgLSBJL08gYnVmZmVycyB1c2UgdGhlIHVzdWFsIExpbnV4IHJ1bGVzLCBhbmQgbXVzdCBiZSBETUEtc2FmZS4KKyAgICBZb3UnZCBub3JtYWxseSBhbGxvY2F0ZSB0aGVtIGZyb20gdGhlIGhlYXAgb3IgZnJlZSBwYWdlIHBvb2wuCisgICAgRG9uJ3QgdXNlIHRoZSBzdGFjaywgb3IgYW55dGhpbmcgdGhhdCdzIGRlY2xhcmVkICJzdGF0aWMiLgorCisgIC0gVGhlIHNwaV9tZXNzYWdlIGFuZCBzcGlfdHJhbnNmZXIgbWV0YWRhdGEgdXNlZCB0byBnbHVlIHRob3NlCisgICAgSS9PIGJ1ZmZlcnMgaW50byBhIGdyb3VwIG9mIHByb3RvY29sIHRyYW5zYWN0aW9ucy4gIFRoZXNlIGNhbgorICAgIGJlIGFsbG9jYXRlZCBhbnl3aGVyZSBpdCdzIGNvbnZlbmllbnQsIGluY2x1ZGluZyBhcyBwYXJ0IG9mCisgICAgb3RoZXIgYWxsb2NhdGUtb25jZSBkcml2ZXIgZGF0YSBzdHJ1Y3R1cmVzLiAgWmVyby1pbml0IHRoZXNlLgorCitJZiB5b3UgbGlrZSwgc3BpX21lc3NhZ2VfYWxsb2MoKSBhbmQgc3BpX21lc3NhZ2VfZnJlZSgpIGNvbnZlbmllbmNlCityb3V0aW5lcyBhcmUgYXZhaWxhYmxlIHRvIGFsbG9jYXRlIGFuZCB6ZXJvLWluaXRpYWxpemUgYW4gc3BpX21lc3NhZ2UKK3dpdGggc2V2ZXJhbCB0cmFuc2ZlcnMuCisKKworSG93IGRvIEkgd3JpdGUgYW4gIlNQSSBNYXN0ZXIgQ29udHJvbGxlciBEcml2ZXIiPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQW4gU1BJIGNvbnRyb2xsZXIgd2lsbCBwcm9iYWJseSBiZSByZWdpc3RlcmVkIG9uIHRoZSBwbGF0Zm9ybV9idXM7IHdyaXRlCithIGRyaXZlciB0byBiaW5kIHRvIHRoZSBkZXZpY2UsIHdoaWNoZXZlciBidXMgaXMgaW52b2x2ZWQuCisKK1RoZSBtYWluIHRhc2sgb2YgdGhpcyB0eXBlIG9mIGRyaXZlciBpcyB0byBwcm92aWRlIGFuICJzcGlfbWFzdGVyIi4KK1VzZSBzcGlfYWxsb2NfbWFzdGVyKCkgdG8gYWxsb2NhdGUgdGhlIG1hc3RlciwgYW5kIHNwaV9tYXN0ZXJfZ2V0X2RldmRhdGEoKQordG8gZ2V0IHRoZSBkcml2ZXItcHJpdmF0ZSBkYXRhIGFsbG9jYXRlZCBmb3IgdGhhdCBkZXZpY2UuCisKKwlzdHJ1Y3Qgc3BpX21hc3RlcgkqbWFzdGVyOworCXN0cnVjdCBDT05UUk9MTEVSCSpjOworCisJbWFzdGVyID0gc3BpX2FsbG9jX21hc3RlcihkZXYsIHNpemVvZiAqYyk7CisJaWYgKCFtYXN0ZXIpCisJCXJldHVybiAtRU5PREVWOworCisJYyA9IHNwaV9tYXN0ZXJfZ2V0X2RldmRhdGEobWFzdGVyKTsKKworVGhlIGRyaXZlciB3aWxsIGluaXRpYWxpemUgdGhlIGZpZWxkcyBvZiB0aGF0IHNwaV9tYXN0ZXIsIGluY2x1ZGluZyB0aGUKK2J1cyBudW1iZXIgKG1heWJlIHRoZSBzYW1lIGFzIHRoZSBwbGF0Zm9ybSBkZXZpY2UgSUQpIGFuZCB0aHJlZSBtZXRob2RzCit1c2VkIHRvIGludGVyYWN0IHdpdGggdGhlIFNQSSBjb3JlIGFuZCBTUEkgcHJvdG9jb2wgZHJpdmVycy4gIEl0IHdpbGwKK2Fsc28gaW5pdGlhbGl6ZSBpdHMgb3duIGludGVybmFsIHN0YXRlLiAgKFNlZSBiZWxvdyBhYm91dCBidXMgbnVtYmVyaW5nCithbmQgdGhvc2UgbWV0aG9kcy4pCisKK0FmdGVyIHlvdSBpbml0aWFsaXplIHRoZSBzcGlfbWFzdGVyLCB0aGVuIHVzZSBzcGlfcmVnaXN0ZXJfbWFzdGVyKCkgdG8KK3B1Ymxpc2ggaXQgdG8gdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gQXQgdGhhdCB0aW1lLCBkZXZpY2Ugbm9kZXMgZm9yIHRoZQorY29udHJvbGxlciBhbmQgYW55IHByZWRlY2xhcmVkIHNwaSBkZXZpY2VzIHdpbGwgYmUgbWFkZSBhdmFpbGFibGUsIGFuZAordGhlIGRyaXZlciBtb2RlbCBjb3JlIHdpbGwgdGFrZSBjYXJlIG9mIGJpbmRpbmcgdGhlbSB0byBkcml2ZXJzLgorCitJZiB5b3UgbmVlZCB0byByZW1vdmUgeW91ciBTUEkgY29udHJvbGxlciBkcml2ZXIsIHNwaV91bnJlZ2lzdGVyX21hc3RlcigpCit3aWxsIHJldmVyc2UgdGhlIGVmZmVjdCBvZiBzcGlfcmVnaXN0ZXJfbWFzdGVyKCkuCisKKworQlVTIE5VTUJFUklORworCitCdXMgbnVtYmVyaW5nIGlzIGltcG9ydGFudCwgc2luY2UgdGhhdCdzIGhvdyBMaW51eCBpZGVudGlmaWVzIGEgZ2l2ZW4KK1NQSSBidXMgKHNoYXJlZCBTQ0ssIE1PU0ksIE1JU08pLiAgVmFsaWQgYnVzIG51bWJlcnMgc3RhcnQgYXQgemVyby4gIE9uCitTT0Mgc3lzdGVtcywgdGhlIGJ1cyBudW1iZXJzIHNob3VsZCBtYXRjaCB0aGUgbnVtYmVycyBkZWZpbmVkIGJ5IHRoZSBjaGlwCittYW51ZmFjdHVyZXIuICBGb3IgZXhhbXBsZSwgaGFyZHdhcmUgY29udHJvbGxlciBTUEkyIHdvdWxkIGJlIGJ1cyBudW1iZXIgMiwKK2FuZCBzcGlfYm9hcmRfaW5mbyBmb3IgZGV2aWNlcyBjb25uZWN0ZWQgdG8gaXQgd291bGQgdXNlIHRoYXQgbnVtYmVyLgorCitJZiB5b3UgZG9uJ3QgaGF2ZSBzdWNoIGhhcmR3YXJlLWFzc2lnbmVkIGJ1cyBudW1iZXIsIGFuZCBmb3Igc29tZSByZWFzb24KK3lvdSBjYW4ndCBqdXN0IGFzc2lnbiB0aGVtLCB0aGVuIHByb3ZpZGUgYSBuZWdhdGl2ZSBidXMgbnVtYmVyLiAgVGhhdCB3aWxsCit0aGVuIGJlIHJlcGxhY2VkIGJ5IGEgZHluYW1pY2FsbHkgYXNzaWduZWQgbnVtYmVyLiBZb3UnZCB0aGVuIG5lZWQgdG8gdHJlYXQKK3RoaXMgYXMgYSBub24tc3RhdGljIGNvbmZpZ3VyYXRpb24gKHNlZSBhYm92ZSkuCisKKworU1BJIE1BU1RFUiBNRVRIT0RTCisKKyAgICBtYXN0ZXItPnNldHVwKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpCisJVGhpcyBzZXRzIHVwIHRoZSBkZXZpY2UgY2xvY2sgcmF0ZSwgU1BJIG1vZGUsIGFuZCB3b3JkIHNpemVzLgorCURyaXZlcnMgbWF5IGNoYW5nZSB0aGUgZGVmYXVsdHMgcHJvdmlkZWQgYnkgYm9hcmRfaW5mbywgYW5kIHRoZW4KKwljYWxsIHNwaV9zZXR1cChzcGkpIHRvIGludm9rZSB0aGlzIHJvdXRpbmUuICBJdCBtYXkgc2xlZXAuCisKKwlVbmxlc3MgZWFjaCBTUEkgc2xhdmUgaGFzIGl0cyBvd24gY29uZmlndXJhdGlvbiByZWdpc3RlcnMsIGRvbid0CisJY2hhbmdlIHRoZW0gcmlnaHQgYXdheSAuLi4gb3RoZXJ3aXNlIGRyaXZlcnMgY291bGQgY29ycnVwdCBJL08KKwl0aGF0J3MgaW4gcHJvZ3Jlc3MgZm9yIG90aGVyIFNQSSBkZXZpY2VzLgorCisJCSoqIEJVRyBBTEVSVDogIGZvciBzb21lIHJlYXNvbiB0aGUgZmlyc3QgdmVyc2lvbiBvZgorCQkqKiBtYW55IHNwaV9tYXN0ZXIgZHJpdmVycyBzZWVtcyB0byBnZXQgdGhpcyB3cm9uZy4KKwkJKiogV2hlbiB5b3UgY29kZSBzZXR1cCgpLCBBU1NVTUUgdGhhdCB0aGUgY29udHJvbGxlcgorCQkqKiBpcyBhY3RpdmVseSBwcm9jZXNzaW5nIHRyYW5zZmVycyBmb3IgYW5vdGhlciBkZXZpY2UuCisKKyAgICBtYXN0ZXItPmNsZWFudXAoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkKKwlZb3VyIGNvbnRyb2xsZXIgZHJpdmVyIG1heSB1c2Ugc3BpX2RldmljZS5jb250cm9sbGVyX3N0YXRlIHRvIGhvbGQKKwlzdGF0ZSBpdCBkeW5hbWljYWxseSBhc3NvY2lhdGVzIHdpdGggdGhhdCBkZXZpY2UuICBJZiB5b3UgZG8gdGhhdCwKKwliZSBzdXJlIHRvIHByb3ZpZGUgdGhlIGNsZWFudXAoKSBtZXRob2QgdG8gZnJlZSB0aGF0IHN0YXRlLgorCisgICAgbWFzdGVyLT5wcmVwYXJlX3RyYW5zZmVyX2hhcmR3YXJlKHN0cnVjdCBzcGlfbWFzdGVyICptYXN0ZXIpCisJVGhpcyB3aWxsIGJlIGNhbGxlZCBieSB0aGUgcXVldWUgbWVjaGFuaXNtIHRvIHNpZ25hbCB0byB0aGUgZHJpdmVyCisJdGhhdCBhIG1lc3NhZ2UgaXMgY29taW5nIGluIHNvb24sIHNvIHRoZSBzdWJzeXN0ZW0gcmVxdWVzdHMgdGhlCisJZHJpdmVyIHRvIHByZXBhcmUgdGhlIHRyYW5zZmVyIGhhcmR3YXJlIGJ5IGlzc3VpbmcgdGhpcyBjYWxsLgorCVRoaXMgbWF5IHNsZWVwLgorCisgICAgbWFzdGVyLT51bnByZXBhcmVfdHJhbnNmZXJfaGFyZHdhcmUoc3RydWN0IHNwaV9tYXN0ZXIgKm1hc3RlcikKKwlUaGlzIHdpbGwgYmUgY2FsbGVkIGJ5IHRoZSBxdWV1ZSBtZWNoYW5pc20gdG8gc2lnbmFsIHRvIHRoZSBkcml2ZXIKKwl0aGF0IHRoZXJlIGFyZSBubyBtb3JlIG1lc3NhZ2VzIHBlbmRpbmcgaW4gdGhlIHF1ZXVlIGFuZCBpdCBtYXkKKwlyZWxheCB0aGUgaGFyZHdhcmUgKGUuZy4gYnkgcG93ZXIgbWFuYWdlbWVudCBjYWxscykuIFRoaXMgbWF5IHNsZWVwLgorCisgICAgbWFzdGVyLT50cmFuc2Zlcl9vbmVfbWVzc2FnZShzdHJ1Y3Qgc3BpX21hc3RlciAqbWFzdGVyLAorCQkJCSBzdHJ1Y3Qgc3BpX21lc3NhZ2UgKm1lc2cpCisJVGhlIHN1YnN5c3RlbSBjYWxscyB0aGUgZHJpdmVyIHRvIHRyYW5zZmVyIGEgc2luZ2xlIG1lc3NhZ2Ugd2hpbGUKKwlxdWV1aW5nIHRyYW5zZmVycyB0aGF0IGFycml2ZSBpbiB0aGUgbWVhbnRpbWUuIFdoZW4gdGhlIGRyaXZlciBpcworCWZpbmlzaGVkIHdpdGggdGhpcyBtZXNzYWdlLCBpdCBtdXN0IGNhbGwKKwlzcGlfZmluYWxpemVfY3VycmVudF9tZXNzYWdlKCkgc28gdGhlIHN1YnN5c3RlbSBjYW4gaXNzdWUgdGhlIG5leHQKKwltZXNzYWdlLiBUaGlzIG1heSBzbGVlcC4KKworICAgIG1hc3Rlci0+dHJhbnNmZXJfb25lKHN0cnVjdCBzcGlfbWFzdGVyICptYXN0ZXIsIHN0cnVjdCBzcGlfZGV2aWNlICpzcGksCisJCQkgc3RydWN0IHNwaV90cmFuc2ZlciAqdHJhbnNmZXIpCisJVGhlIHN1YnN5c3RlbSBjYWxscyB0aGUgZHJpdmVyIHRvIHRyYW5zZmVyIGEgc2luZ2xlIHRyYW5zZmVyIHdoaWxlCisJcXVldWluZyB0cmFuc2ZlcnMgdGhhdCBhcnJpdmUgaW4gdGhlIG1lYW50aW1lLiBXaGVuIHRoZSBkcml2ZXIgaXMKKwlmaW5pc2hlZCB3aXRoIHRoaXMgdHJhbnNmZXIsIGl0IG11c3QgY2FsbAorCXNwaV9maW5hbGl6ZV9jdXJyZW50X3RyYW5zZmVyKCkgc28gdGhlIHN1YnN5c3RlbSBjYW4gaXNzdWUgdGhlIG5leHQKKwl0cmFuc2Zlci4gVGhpcyBtYXkgc2xlZXAuIE5vdGU6IHRyYW5zZmVyX29uZSBhbmQgdHJhbnNmZXJfb25lX21lc3NhZ2UKKwlhcmUgbXV0dWFsbHkgZXhjbHVzaXZlOyB3aGVuIGJvdGggYXJlIHNldCwgdGhlIGdlbmVyaWMgc3Vic3lzdGVtIGRvZXMKKwlub3QgY2FsbCB5b3VyIHRyYW5zZmVyX29uZSBjYWxsYmFjay4KKworCVJldHVybiB2YWx1ZXM6CisJbmVnYXRpdmUgZXJybm86IGVycm9yCisJMDogdHJhbnNmZXIgaXMgZmluaXNoZWQKKwkxOiB0cmFuc2ZlciBpcyBzdGlsbCBpbiBwcm9ncmVzcworCisgICAgREVQUkVDQVRFRCBNRVRIT0RTCisKKyAgICBtYXN0ZXItPnRyYW5zZmVyKHN0cnVjdCBzcGlfZGV2aWNlICpzcGksIHN0cnVjdCBzcGlfbWVzc2FnZSAqbWVzc2FnZSkKKwlUaGlzIG11c3Qgbm90IHNsZWVwLiBJdHMgcmVzcG9uc2liaWxpdHkgaXMgdG8gYXJyYW5nZSB0aGF0IHRoZQorCXRyYW5zZmVyIGhhcHBlbnMgYW5kIGl0cyBjb21wbGV0ZSgpIGNhbGxiYWNrIGlzIGlzc3VlZC4gVGhlIHR3bworCXdpbGwgbm9ybWFsbHkgaGFwcGVuIGxhdGVyLCBhZnRlciBvdGhlciB0cmFuc2ZlcnMgY29tcGxldGUsIGFuZAorCWlmIHRoZSBjb250cm9sbGVyIGlzIGlkbGUgaXQgd2lsbCBuZWVkIHRvIGJlIGtpY2tzdGFydGVkLiBUaGlzCisJbWV0aG9kIGlzIG5vdCB1c2VkIG9uIHF1ZXVlZCBjb250cm9sbGVycyBhbmQgbXVzdCBiZSBOVUxMIGlmCisJdHJhbnNmZXJfb25lX21lc3NhZ2UoKSBhbmQgKHVuKXByZXBhcmVfdHJhbnNmZXJfaGFyZHdhcmUoKSBhcmUKKwlpbXBsZW1lbnRlZC4KKworCitTUEkgTUVTU0FHRSBRVUVVRQorCitJZiB5b3UgYXJlIGhhcHB5IHdpdGggdGhlIHN0YW5kYXJkIHF1ZXVlaW5nIG1lY2hhbmlzbSBwcm92aWRlZCBieSB0aGUKK1NQSSBzdWJzeXN0ZW0sIGp1c3QgaW1wbGVtZW50IHRoZSBxdWV1ZWQgbWV0aG9kcyBzcGVjaWZpZWQgYWJvdmUuIFVzaW5nCit0aGUgbWVzc2FnZSBxdWV1ZSBoYXMgdGhlIHVwc2lkZSBvZiBjZW50cmFsaXppbmcgYSBsb3Qgb2YgY29kZSBhbmQKK3Byb3ZpZGluZyBwdXJlIHByb2Nlc3MtY29udGV4dCBleGVjdXRpb24gb2YgbWV0aG9kcy4gVGhlIG1lc3NhZ2UgcXVldWUKK2NhbiBhbHNvIGJlIGVsZXZhdGVkIHRvIHJlYWx0aW1lIHByaW9yaXR5IG9uIGhpZ2gtcHJpb3JpdHkgU1BJIHRyYWZmaWMuCisKK1VubGVzcyB0aGUgcXVldWVpbmcgbWVjaGFuaXNtIGluIHRoZSBTUEkgc3Vic3lzdGVtIGlzIHNlbGVjdGVkLCB0aGUgYnVsaworb2YgdGhlIGRyaXZlciB3aWxsIGJlIG1hbmFnaW5nIHRoZSBJL08gcXVldWUgZmVkIGJ5IHRoZSBub3cgZGVwcmVjYXRlZAorZnVuY3Rpb24gdHJhbnNmZXIoKS4KKworVGhhdCBxdWV1ZSBjb3VsZCBiZSBwdXJlbHkgY29uY2VwdHVhbC4gIEZvciBleGFtcGxlLCBhIGRyaXZlciB1c2VkIG9ubHkKK2ZvciBsb3ctZnJlcXVlbmN5IHNlbnNvciBhY2Nlc3MgbWlnaHQgYmUgZmluZSB1c2luZyBzeW5jaHJvbm91cyBQSU8uCisKK0J1dCB0aGUgcXVldWUgd2lsbCBwcm9iYWJseSBiZSB2ZXJ5IHJlYWwsIHVzaW5nIG1lc3NhZ2UtPnF1ZXVlLCBQSU8sCitvZnRlbiBETUEgKGVzcGVjaWFsbHkgaWYgdGhlIHJvb3QgZmlsZXN5c3RlbSBpcyBpbiBTUEkgZmxhc2gpLCBhbmQKK2V4ZWN1dGlvbiBjb250ZXh0cyBsaWtlIElSUSBoYW5kbGVycywgdGFza2xldHMsIG9yIHdvcmtxdWV1ZXMgKHN1Y2gKK2FzIGtldmVudGQpLiAgWW91ciBkcml2ZXIgY2FuIGJlIGFzIGZhbmN5LCBvciBhcyBzaW1wbGUsIGFzIHlvdSBuZWVkLgorU3VjaCBhIHRyYW5zZmVyKCkgbWV0aG9kIHdvdWxkIG5vcm1hbGx5IGp1c3QgYWRkIHRoZSBtZXNzYWdlIHRvIGEKK3F1ZXVlLCBhbmQgdGhlbiBzdGFydCBzb21lIGFzeW5jaHJvbm91cyB0cmFuc2ZlciBlbmdpbmUgKHVubGVzcyBpdCdzCithbHJlYWR5IHJ1bm5pbmcpLgorCisKK1RIQU5LUyBUTworLS0tLS0tLS0tCitDb250cmlidXRvcnMgdG8gTGludXgtU1BJIGRpc2N1c3Npb25zIGluY2x1ZGUgKGluIGFscGhhYmV0aWNhbCBvcmRlciwKK2J5IGxhc3QgbmFtZSk6CisKK01hcmsgQnJvd24KK0RhdmlkIEJyb3duZWxsCitSdXNzZWxsIEtpbmcKK0dyYW50IExpa2VseQorRG1pdHJ5IFBlcnZ1c2hpbgorU3RlcGhlbiBTdHJlZXQKK01hcmsgVW5kZXJ3b29kCitBbmRyZXcgVmljdG9yCitMaW51cyBXYWxsZWlqCitWaXRhbHkgV29vbApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zcGkvc3BpZGV2IGIvRG9jdW1lbnRhdGlvbi9zcGkvc3BpZGV2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkMTQwMzUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NwaS9zcGlkZXYKQEAgLTAsMCArMSwxNDkgQEAKK1NQSSBkZXZpY2VzIGhhdmUgYSBsaW1pdGVkIHVzZXJzcGFjZSBBUEksIHN1cHBvcnRpbmcgYmFzaWMgaGFsZi1kdXBsZXgKK3JlYWQoKSBhbmQgd3JpdGUoKSBhY2Nlc3MgdG8gU1BJIHNsYXZlIGRldmljZXMuICBVc2luZyBpb2N0bCgpIHJlcXVlc3RzLAorZnVsbCBkdXBsZXggdHJhbnNmZXJzIGFuZCBkZXZpY2UgSS9PIGNvbmZpZ3VyYXRpb24gYXJlIGFsc28gYXZhaWxhYmxlLgorCisJI2luY2x1ZGUgPGZjbnRsLmg+CisJI2luY2x1ZGUgPHVuaXN0ZC5oPgorCSNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKwkjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKwkjaW5jbHVkZSA8bGludXgvc3BpL3NwaWRldi5oPgorCitTb21lIHJlYXNvbnMgeW91IG1pZ2h0IHdhbnQgdG8gdXNlIHRoaXMgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlIGluY2x1ZGU6CisKKyAqIFByb3RvdHlwaW5nIGluIGFuIGVudmlyb25tZW50IHRoYXQncyBub3QgY3Jhc2gtcHJvbmU7IHN0cmF5IHBvaW50ZXJzCisgICBpbiB1c2Vyc3BhY2Ugd29uJ3Qgbm9ybWFsbHkgYnJpbmcgZG93biBhbnkgTGludXggc3lzdGVtLgorCisgKiBEZXZlbG9waW5nIHNpbXBsZSBwcm90b2NvbHMgdXNlZCB0byB0YWxrIHRvIG1pY3JvY29udHJvbGxlcnMgYWN0aW5nCisgICBhcyBTUEkgc2xhdmVzLCB3aGljaCB5b3UgbWF5IG5lZWQgdG8gY2hhbmdlIHF1aXRlIG9mdGVuLgorCitPZiBjb3Vyc2UgdGhlcmUgYXJlIGRyaXZlcnMgdGhhdCBjYW4gbmV2ZXIgYmUgd3JpdHRlbiBpbiB1c2Vyc3BhY2UsIGJlY2F1c2UKK3RoZXkgbmVlZCB0byBhY2Nlc3Mga2VybmVsIGludGVyZmFjZXMgKHN1Y2ggYXMgSVJRIGhhbmRsZXJzIG9yIG90aGVyIGxheWVycworb2YgdGhlIGRyaXZlciBzdGFjaykgdGhhdCBhcmUgbm90IGFjY2Vzc2libGUgdG8gdXNlcnNwYWNlLgorCisKK0RFVklDRSBDUkVBVElPTiwgRFJJVkVSIEJJTkRJTkcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1RoZSBzaW1wbGVzdCB3YXkgdG8gYXJyYW5nZSB0byB1c2UgdGhpcyBkcml2ZXIgaXMgdG8ganVzdCBsaXN0IGl0IGluIHRoZQorc3BpX2JvYXJkX2luZm8gZm9yIGEgZGV2aWNlIGFzIHRoZSBkcml2ZXIgaXQgc2hvdWxkIHVzZTogIHRoZSAibW9kYWxpYXMiCitlbnRyeSBpcyAic3BpZGV2IiwgbWF0Y2hpbmcgdGhlIG5hbWUgb2YgdGhlIGRyaXZlciBleHBvc2luZyB0aGlzIEFQSS4KK1NldCB1cCB0aGUgb3RoZXIgZGV2aWNlIGNoYXJhY3RlcmlzdGljcyAoYml0cyBwZXIgd29yZCwgU1BJIGNsb2NraW5nLAorY2hpcHNlbGVjdCBwb2xhcml0eSwgZXRjKSBhcyB1c3VhbCwgc28geW91IHdvbid0IGFsd2F5cyBuZWVkIHRvIG92ZXJyaWRlCit0aGVtIGxhdGVyLgorCisoU3lzZnMgYWxzbyBzdXBwb3J0cyB1c2Vyc3BhY2UgZHJpdmVuIGJpbmRpbmcvdW5iaW5kaW5nIG9mIGRyaXZlcnMgdG8KK2RldmljZXMuICBUaGF0IG1lY2hhbmlzbSBtaWdodCBiZSBzdXBwb3J0ZWQgaGVyZSBpbiB0aGUgZnV0dXJlLikKKworV2hlbiB5b3UgZG8gdGhhdCwgdGhlIHN5c2ZzIG5vZGUgZm9yIHRoZSBTUEkgZGV2aWNlIHdpbGwgaW5jbHVkZSBhIGNoaWxkCitkZXZpY2Ugbm9kZSB3aXRoIGEgImRldiIgYXR0cmlidXRlIHRoYXQgd2lsbCBiZSB1bmRlcnN0b29kIGJ5IHVkZXYgb3IgbWRldi4KKyhMYXJnZXIgc3lzdGVtcyB3aWxsIGhhdmUgInVkZXYiLiAgU21hbGxlciBvbmVzIG1heSBjb25maWd1cmUgIm1kZXYiIGludG8KK2J1c3lib3g7IGl0J3MgbGVzcyBmZWF0dXJlZnVsLCBidXQgb2Z0ZW4gZW5vdWdoLikgIEZvciBhIFNQSSBkZXZpY2Ugd2l0aAorY2hpcHNlbGVjdCBDIG9uIGJ1cyBCLCB5b3Ugc2hvdWxkIHNlZToKKworICAgIC9kZXYvc3BpZGV2Qi5DIC4uLiBjaGFyYWN0ZXIgc3BlY2lhbCBkZXZpY2UsIG1ham9yIG51bWJlciAxNTMgd2l0aAorCWEgZHluYW1pY2FsbHkgY2hvc2VuIG1pbm9yIGRldmljZSBudW1iZXIuICBUaGlzIGlzIHRoZSBub2RlCisJdGhhdCB1c2Vyc3BhY2UgcHJvZ3JhbXMgd2lsbCBvcGVuLCBjcmVhdGVkIGJ5ICJ1ZGV2IiBvciAibWRldiIuCisKKyAgICAvc3lzL2RldmljZXMvLi4uL3NwaUIuQyAuLi4gYXMgdXN1YWwsIHRoZSBTUEkgZGV2aWNlIG5vZGUgd2lsbAorCWJlIGEgY2hpbGQgb2YgaXRzIFNQSSBtYXN0ZXIgY29udHJvbGxlci4KKworICAgIC9zeXMvY2xhc3Mvc3BpZGV2L3NwaWRldkIuQyAuLi4gY3JlYXRlZCB3aGVuIHRoZSAic3BpZGV2IiBkcml2ZXIKKwliaW5kcyB0byB0aGF0IGRldmljZS4gIChEaXJlY3Rvcnkgb3Igc3ltbGluaywgYmFzZWQgb24gd2hldGhlcgorCW9yIG5vdCB5b3UgZW5hYmxlZCB0aGUgImRlcHJlY2F0ZWQgc3lzZnMgZmlsZXMiIEtjb25maWcgb3B0aW9uLikKKworRG8gbm90IHRyeSB0byBtYW5hZ2UgdGhlIC9kZXYgY2hhcmFjdGVyIGRldmljZSBzcGVjaWFsIGZpbGUgbm9kZXMgYnkgaGFuZC4KK1RoYXQncyBlcnJvciBwcm9uZSwgYW5kIHlvdSdkIG5lZWQgdG8gcGF5IGNhcmVmdWwgYXR0ZW50aW9uIHRvIHN5c3RlbQorc2VjdXJpdHkgaXNzdWVzOyB1ZGV2L21kZXYgc2hvdWxkIGFscmVhZHkgYmUgY29uZmlndXJlZCBzZWN1cmVseS4KKworSWYgeW91IHVuYmluZCB0aGUgInNwaWRldiIgZHJpdmVyIGZyb20gdGhhdCBkZXZpY2UsIHRob3NlIHR3byAic3BpZGV2IiBub2RlcworKGluIHN5c2ZzIGFuZCBpbiAvZGV2KSBzaG91bGQgYXV0b21hdGljYWxseSBiZSByZW1vdmVkIChyZXNwZWN0aXZlbHkgYnkgdGhlCitrZXJuZWwgYW5kIGJ5IHVkZXYvbWRldikuICBZb3UgY2FuIHVuYmluZCBieSByZW1vdmluZyB0aGUgInNwaWRldiIgZHJpdmVyCittb2R1bGUsIHdoaWNoIHdpbGwgYWZmZWN0IGFsbCBkZXZpY2VzIHVzaW5nIHRoaXMgZHJpdmVyLiAgWW91IGNhbiBhbHNvIHVuYmluZAorYnkgaGF2aW5nIGtlcm5lbCBjb2RlIHJlbW92ZSB0aGUgU1BJIGRldmljZSwgcHJvYmFibHkgYnkgcmVtb3ZpbmcgdGhlIGRyaXZlcgorZm9yIGl0cyBTUEkgY29udHJvbGxlciAoc28gaXRzIHNwaV9tYXN0ZXIgdmFuaXNoZXMpLgorCitTaW5jZSB0aGlzIGlzIGEgc3RhbmRhcmQgTGludXggZGV2aWNlIGRyaXZlciAtLSBldmVuIHRob3VnaCBpdCBqdXN0IGhhcHBlbnMKK3RvIGV4cG9zZSBhIGxvdyBsZXZlbCBBUEkgdG8gdXNlcnNwYWNlIC0tIGl0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYW55IG51bWJlcgorb2YgZGV2aWNlcyBhdCBhIHRpbWUuICBKdXN0IHByb3ZpZGUgb25lIHNwaV9ib2FyZF9pbmZvIHJlY29yZCBmb3IgZWFjaCBzdWNoCitTUEkgZGV2aWNlLCBhbmQgeW91J2xsIGdldCBhIC9kZXYgZGV2aWNlIG5vZGUgZm9yIGVhY2ggZGV2aWNlLgorCisKK0JBU0lDIENIQVJBQ1RFUiBERVZJQ0UgQVBJCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorTm9ybWFsIG9wZW4oKSBhbmQgY2xvc2UoKSBvcGVyYXRpb25zIG9uIC9kZXYvc3BpZGV2Qi5EIGZpbGVzIHdvcmsgYXMgeW91Cit3b3VsZCBleHBlY3QuCisKK1N0YW5kYXJkIHJlYWQoKSBhbmQgd3JpdGUoKSBvcGVyYXRpb25zIGFyZSBvYnZpb3VzbHkgb25seSBoYWxmLWR1cGxleCwgYW5kCit0aGUgY2hpcHNlbGVjdCBpcyBkZWFjdGl2YXRlZCBiZXR3ZWVuIHRob3NlIG9wZXJhdGlvbnMuICBGdWxsLWR1cGxleCBhY2Nlc3MsCithbmQgY29tcG9zaXRlIG9wZXJhdGlvbiB3aXRob3V0IGNoaXBzZWxlY3QgZGUtYWN0aXZhdGlvbiwgaXMgYXZhaWxhYmxlIHVzaW5nCit0aGUgU1BJX0lPQ19NRVNTQUdFKE4pIHJlcXVlc3QuCisKK1NldmVyYWwgaW9jdGwoKSByZXF1ZXN0cyBsZXQgeW91ciBkcml2ZXIgcmVhZCBvciBvdmVycmlkZSB0aGUgZGV2aWNlJ3MgY3VycmVudAorc2V0dGluZ3MgZm9yIGRhdGEgdHJhbnNmZXIgcGFyYW1ldGVyczoKKworICAgIFNQSV9JT0NfUkRfTU9ERSwgU1BJX0lPQ19XUl9NT0RFIC4uLiBwYXNzIGEgcG9pbnRlciB0byBhIGJ5dGUgd2hpY2ggd2lsbAorCXJldHVybiAoUkQpIG9yIGFzc2lnbiAoV1IpIHRoZSBTUEkgdHJhbnNmZXIgbW9kZS4gIFVzZSB0aGUgY29uc3RhbnRzCisJU1BJX01PREVfMC4uU1BJX01PREVfMzsgb3IgaWYgeW91IHByZWZlciB5b3UgY2FuIGNvbWJpbmUgU1BJX0NQT0wKKwkoY2xvY2sgcG9sYXJpdHksIGlkbGUgaGlnaCBpZmYgdGhpcyBpcyBzZXQpIG9yIFNQSV9DUEhBIChjbG9jayBwaGFzZSwKKwlzYW1wbGUgb24gdHJhaWxpbmcgZWRnZSBpZmYgdGhpcyBpcyBzZXQpIGZsYWdzLgorCU5vdGUgdGhhdCB0aGlzIHJlcXVlc3QgaXMgbGltaXRlZCB0byBTUEkgbW9kZSBmbGFncyB0aGF0IGZpdCBpbiBhCisJc2luZ2xlIGJ5dGUuCisKKyAgICBTUElfSU9DX1JEX01PREUzMiwgU1BJX0lPQ19XUl9NT0RFMzIgLi4uIHBhc3MgYSBwb2ludGVyIHRvIGEgdWluMzJfdAorCXdoaWNoIHdpbGwgcmV0dXJuIChSRCkgb3IgYXNzaWduIChXUikgdGhlIGZ1bGwgU1BJIHRyYW5zZmVyIG1vZGUsCisJbm90IGxpbWl0ZWQgdG8gdGhlIGJpdHMgdGhhdCBmaXQgaW4gb25lIGJ5dGUuCisKKyAgICBTUElfSU9DX1JEX0xTQl9GSVJTVCwgU1BJX0lPQ19XUl9MU0JfRklSU1QgLi4uIHBhc3MgYSBwb2ludGVyIHRvIGEgYnl0ZQorCXdoaWNoIHdpbGwgcmV0dXJuIChSRCkgb3IgYXNzaWduIChXUikgdGhlIGJpdCBqdXN0aWZpY2F0aW9uIHVzZWQgdG8KKwl0cmFuc2ZlciBTUEkgd29yZHMuICBaZXJvIGluZGljYXRlcyBNU0ItZmlyc3Q7IG90aGVyIHZhbHVlcyBpbmRpY2F0ZQorCXRoZSBsZXNzIGNvbW1vbiBMU0ItZmlyc3QgZW5jb2RpbmcuICBJbiBib3RoIGNhc2VzIHRoZSBzcGVjaWZpZWQgdmFsdWUKKwlpcyByaWdodC1qdXN0aWZpZWQgaW4gZWFjaCB3b3JkLCBzbyB0aGF0IHVudXNlZCAoVFgpIG9yIHVuZGVmaW5lZCAoUlgpCisJYml0cyBhcmUgaW4gdGhlIE1TQnMuCisKKyAgICBTUElfSU9DX1JEX0JJVFNfUEVSX1dPUkQsIFNQSV9JT0NfV1JfQklUU19QRVJfV09SRCAuLi4gcGFzcyBhIHBvaW50ZXIgdG8KKwlhIGJ5dGUgd2hpY2ggd2lsbCByZXR1cm4gKFJEKSBvciBhc3NpZ24gKFdSKSB0aGUgbnVtYmVyIG9mIGJpdHMgaW4KKwllYWNoIFNQSSB0cmFuc2ZlciB3b3JkLiAgVGhlIHZhbHVlIHplcm8gc2lnbmlmaWVzIGVpZ2h0IGJpdHMuCisKKyAgICBTUElfSU9DX1JEX01BWF9TUEVFRF9IWiwgU1BJX0lPQ19XUl9NQVhfU1BFRURfSFogLi4uIHBhc3MgYSBwb2ludGVyIHRvIGEKKwl1MzIgd2hpY2ggd2lsbCByZXR1cm4gKFJEKSBvciBhc3NpZ24gKFdSKSB0aGUgbWF4aW11bSBTUEkgdHJhbnNmZXIKKwlzcGVlZCwgaW4gSHouICBUaGUgY29udHJvbGxlciBjYW4ndCBuZWNlc3NhcmlseSBhc3NpZ24gdGhhdCBzcGVjaWZpYworCWNsb2NrIHNwZWVkLgorCitOT1RFUzoKKworICAgIC0gQXQgdGhpcyB0aW1lIHRoZXJlIGlzIG5vIGFzeW5jIEkvTyBzdXBwb3J0OyBldmVyeXRoaW5nIGlzIHB1cmVseQorICAgICAgc3luY2hyb25vdXMuCisKKyAgICAtIFRoZXJlJ3MgY3VycmVudGx5IG5vIHdheSB0byByZXBvcnQgdGhlIGFjdHVhbCBiaXQgcmF0ZSB1c2VkIHRvCisgICAgICBzaGlmdCBkYXRhIHRvL2Zyb20gYSBnaXZlbiBkZXZpY2UuCisKKyAgICAtIEZyb20gdXNlcnNwYWNlLCB5b3UgY2FuJ3QgY3VycmVudGx5IGNoYW5nZSB0aGUgY2hpcCBzZWxlY3QgcG9sYXJpdHk7CisgICAgICB0aGF0IGNvdWxkIGNvcnJ1cHQgdHJhbnNmZXJzIHRvIG90aGVyIGRldmljZXMgc2hhcmluZyB0aGUgU1BJIGJ1cy4KKyAgICAgIEVhY2ggU1BJIGRldmljZSBpcyBkZXNlbGVjdGVkIHdoZW4gaXQncyBub3QgaW4gYWN0aXZlIHVzZSwgYWxsb3dpbmcKKyAgICAgIG90aGVyIGRyaXZlcnMgdG8gdGFsayB0byBvdGhlciBkZXZpY2VzLgorCisgICAgLSBUaGVyZSdzIGEgbGltaXQgb24gdGhlIG51bWJlciBvZiBieXRlcyBlYWNoIEkvTyByZXF1ZXN0IGNhbiB0cmFuc2ZlcgorICAgICAgdG8gdGhlIFNQSSBkZXZpY2UuICBJdCBkZWZhdWx0cyB0byBvbmUgcGFnZSwgYnV0IHRoYXQgY2FuIGJlIGNoYW5nZWQKKyAgICAgIHVzaW5nIGEgbW9kdWxlIHBhcmFtZXRlci4KKworICAgIC0gQmVjYXVzZSBTUEkgaGFzIG5vIGxvdy1sZXZlbCB0cmFuc2ZlciBhY2tub3dsZWRnZW1lbnQsIHlvdSB1c3VhbGx5CisgICAgICB3b24ndCBzZWUgYW55IEkvTyBlcnJvcnMgd2hlbiB0YWxraW5nIHRvIGEgbm9uLWV4aXN0ZW50IGRldmljZS4KKworCitGVUxMIERVUExFWCBDSEFSQUNURVIgREVWSUNFIEFQSQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU2VlIHRoZSBzcGlkZXZfZmR4LmMgc2FtcGxlIHByb2dyYW0gZm9yIG9uZSBleGFtcGxlIHNob3dpbmcgdGhlIHVzZSBvZiB0aGUKK2Z1bGwgZHVwbGV4IHByb2dyYW1taW5nIGludGVyZmFjZS4gIChBbHRob3VnaCBpdCBkb2Vzbid0IHBlcmZvcm0gYSBmdWxsIGR1cGxleAordHJhbnNmZXIuKSAgVGhlIG1vZGVsIGlzIHRoZSBzYW1lIGFzIHRoYXQgdXNlZCBpbiB0aGUga2VybmVsIHNwaV9zeW5jKCkKK3JlcXVlc3Q7IHRoZSBpbmRpdmlkdWFsIHRyYW5zZmVycyBvZmZlciB0aGUgc2FtZSBjYXBhYmlsaXRpZXMgYXMgYXJlCithdmFpbGFibGUgdG8ga2VybmVsIGRyaXZlcnMgKGV4Y2VwdCB0aGF0IGl0J3Mgbm90IGFzeW5jaHJvbm91cykuCisKK1RoZSBleGFtcGxlIHNob3dzIG9uZSBoYWxmLWR1cGxleCBSUEMtc3R5bGUgcmVxdWVzdCBhbmQgcmVzcG9uc2UgbWVzc2FnZS4KK1RoZXNlIHJlcXVlc3RzIGNvbW1vbmx5IHJlcXVpcmUgdGhhdCB0aGUgY2hpcCBub3QgYmUgZGVzZWxlY3RlZCBiZXR3ZWVuCit0aGUgcmVxdWVzdCBhbmQgcmVzcG9uc2UuICBTZXZlcmFsIHN1Y2ggcmVxdWVzdHMgY291bGQgYmUgY2hhaW5lZCBpbnRvCithIHNpbmdsZSBrZXJuZWwgcmVxdWVzdCwgZXZlbiBhbGxvd2luZyB0aGUgY2hpcCB0byBiZSBkZXNlbGVjdGVkIGFmdGVyCitlYWNoIHJlc3BvbnNlLiAgKE90aGVyIHByb3RvY29sIG9wdGlvbnMgaW5jbHVkZSBjaGFuZ2luZyB0aGUgd29yZCBzaXplCithbmQgYml0cmF0ZSBmb3IgZWFjaCB0cmFuc2ZlciBzZWdtZW50LikKKworVG8gbWFrZSBhIGZ1bGwgZHVwbGV4IHJlcXVlc3QsIHByb3ZpZGUgYm90aCByeF9idWYgYW5kIHR4X2J1ZiBmb3IgdGhlCitzYW1lIHRyYW5zZmVyLiAgSXQncyBldmVuIE9LIGlmIHRob3NlIGFyZSB0aGUgc2FtZSBidWZmZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3NwaS9zcGlkZXZfZmR4LmMgYi9Eb2N1bWVudGF0aW9uL3NwaS9zcGlkZXZfZmR4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVhM2U1MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc3BpL3NwaWRldl9mZHguYwpAQCAtMCwwICsxLDE1OCBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisKKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L3NwaS9zcGlkZXYuaD4KKworCitzdGF0aWMgaW50IHZlcmJvc2U7CisKK3N0YXRpYyB2b2lkIGRvX3JlYWQoaW50IGZkLCBpbnQgbGVuKQoreworCXVuc2lnbmVkIGNoYXIJYnVmWzMyXSwgKmJwOworCWludAkJc3RhdHVzOworCisJLyogcmVhZCBhdCBsZWFzdCAyIGJ5dGVzLCBubyBtb3JlIHRoYW4gMzIgKi8KKwlpZiAobGVuIDwgMikKKwkJbGVuID0gMjsKKwllbHNlIGlmIChsZW4gPiBzaXplb2YoYnVmKSkKKwkJbGVuID0gc2l6ZW9mKGJ1Zik7CisJbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mIGJ1Zik7CisKKwlzdGF0dXMgPSByZWFkKGZkLCBidWYsIGxlbik7CisJaWYgKHN0YXR1cyA8IDApIHsKKwkJcGVycm9yKCJyZWFkIik7CisJCXJldHVybjsKKwl9CisJaWYgKHN0YXR1cyAhPSBsZW4pIHsKKwkJZnByaW50ZihzdGRlcnIsICJzaG9ydCByZWFkXG4iKTsKKwkJcmV0dXJuOworCX0KKworCXByaW50ZigicmVhZCglMmQsICUyZCk6ICUwMnggJTAyeCwiLCBsZW4sIHN0YXR1cywKKwkJYnVmWzBdLCBidWZbMV0pOworCXN0YXR1cyAtPSAyOworCWJwID0gYnVmICsgMjsKKwl3aGlsZSAoc3RhdHVzLS0gPiAwKQorCQlwcmludGYoIiAlMDJ4IiwgKmJwKyspOworCXByaW50ZigiXG4iKTsKK30KKworc3RhdGljIHZvaWQgZG9fbXNnKGludCBmZCwgaW50IGxlbikKK3sKKwlzdHJ1Y3Qgc3BpX2lvY190cmFuc2Zlcgl4ZmVyWzJdOworCXVuc2lnbmVkIGNoYXIJCWJ1ZlszMl0sICpicDsKKwlpbnQJCQlzdGF0dXM7CisKKwltZW1zZXQoeGZlciwgMCwgc2l6ZW9mIHhmZXIpOworCW1lbXNldChidWYsIDAsIHNpemVvZiBidWYpOworCisJaWYgKGxlbiA+IHNpemVvZiBidWYpCisJCWxlbiA9IHNpemVvZiBidWY7CisKKwlidWZbMF0gPSAweGFhOworCXhmZXJbMF0udHhfYnVmID0gKHVuc2lnbmVkIGxvbmcpYnVmOworCXhmZXJbMF0ubGVuID0gMTsKKworCXhmZXJbMV0ucnhfYnVmID0gKHVuc2lnbmVkIGxvbmcpIGJ1ZjsKKwl4ZmVyWzFdLmxlbiA9IGxlbjsKKworCXN0YXR1cyA9IGlvY3RsKGZkLCBTUElfSU9DX01FU1NBR0UoMiksIHhmZXIpOworCWlmIChzdGF0dXMgPCAwKSB7CisJCXBlcnJvcigiU1BJX0lPQ19NRVNTQUdFIik7CisJCXJldHVybjsKKwl9CisKKwlwcmludGYoInJlc3BvbnNlKCUyZCwgJTJkKTogIiwgbGVuLCBzdGF0dXMpOworCWZvciAoYnAgPSBidWY7IGxlbjsgbGVuLS0pCisJCXByaW50ZigiICUwMngiLCAqYnArKyk7CisJcHJpbnRmKCJcbiIpOworfQorCitzdGF0aWMgdm9pZCBkdW1wc3RhdChjb25zdCBjaGFyICpuYW1lLCBpbnQgZmQpCit7CisJX191OAlsc2IsIGJpdHM7CisJX191MzIJbW9kZSwgc3BlZWQ7CisKKwlpZiAoaW9jdGwoZmQsIFNQSV9JT0NfUkRfTU9ERTMyLCAmbW9kZSkgPCAwKSB7CisJCXBlcnJvcigiU1BJIHJkX21vZGUiKTsKKwkJcmV0dXJuOworCX0KKwlpZiAoaW9jdGwoZmQsIFNQSV9JT0NfUkRfTFNCX0ZJUlNULCAmbHNiKSA8IDApIHsKKwkJcGVycm9yKCJTUEkgcmRfbHNiX2Zpc3QiKTsKKwkJcmV0dXJuOworCX0KKwlpZiAoaW9jdGwoZmQsIFNQSV9JT0NfUkRfQklUU19QRVJfV09SRCwgJmJpdHMpIDwgMCkgeworCQlwZXJyb3IoIlNQSSBiaXRzX3Blcl93b3JkIik7CisJCXJldHVybjsKKwl9CisJaWYgKGlvY3RsKGZkLCBTUElfSU9DX1JEX01BWF9TUEVFRF9IWiwgJnNwZWVkKSA8IDApIHsKKwkJcGVycm9yKCJTUEkgbWF4X3NwZWVkX2h6Iik7CisJCXJldHVybjsKKwl9CisKKwlwcmludGYoIiVzOiBzcGkgbW9kZSAweCV4LCAlZCBiaXRzICVzcGVyIHdvcmQsICVkIEh6IG1heFxuIiwKKwkJbmFtZSwgbW9kZSwgYml0cywgbHNiID8gIihsc2IgZmlyc3QpICIgOiAiIiwgc3BlZWQpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJaW50CQljOworCWludAkJcmVhZGNvdW50ID0gMDsKKwlpbnQJCW1zZ2xlbiA9IDA7CisJaW50CQlmZDsKKwljb25zdCBjaGFyCSpuYW1lOworCisJd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJobTpyOnYiKSkgIT0gRU9GKSB7CisJCXN3aXRjaCAoYykgeworCQljYXNlICdtJzoKKwkJCW1zZ2xlbiA9IGF0b2kob3B0YXJnKTsKKwkJCWlmIChtc2dsZW4gPCAwKQorCQkJCWdvdG8gdXNhZ2U7CisJCQljb250aW51ZTsKKwkJY2FzZSAncic6CisJCQlyZWFkY291bnQgPSBhdG9pKG9wdGFyZyk7CisJCQlpZiAocmVhZGNvdW50IDwgMCkKKwkJCQlnb3RvIHVzYWdlOworCQkJY29udGludWU7CisJCWNhc2UgJ3YnOgorCQkJdmVyYm9zZSsrOworCQkJY29udGludWU7CisJCWNhc2UgJ2gnOgorCQljYXNlICc/JzoKK3VzYWdlOgorCQkJZnByaW50ZihzdGRlcnIsCisJCQkJInVzYWdlOiAlcyBbLWhdIFstbSBOXSBbLXIgTl0gL2Rldi9zcGlkZXZCLkRcbiIsCisJCQkJYXJndlswXSk7CisJCQlyZXR1cm4gMTsKKwkJfQorCX0KKworCWlmICgob3B0aW5kICsgMSkgIT0gYXJnYykKKwkJZ290byB1c2FnZTsKKwluYW1lID0gYXJndltvcHRpbmRdOworCisJZmQgPSBvcGVuKG5hbWUsIE9fUkRXUik7CisJaWYgKGZkIDwgMCkgeworCQlwZXJyb3IoIm9wZW4iKTsKKwkJcmV0dXJuIDE7CisJfQorCisJZHVtcHN0YXQobmFtZSwgZmQpOworCisJaWYgKG1zZ2xlbikKKwkJZG9fbXNnKGZkLCBtc2dsZW4pOworCisJaWYgKHJlYWRjb3VudCkKKwkJZG9fcmVhZChmZCwgcmVhZGNvdW50KTsKKworCWNsb3NlKGZkKTsKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc3BpL3NwaWRldl90ZXN0LmMgYi9Eb2N1bWVudGF0aW9uL3NwaS9zcGlkZXZfdGVzdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNWIzZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3NwaS9zcGlkZXZfdGVzdC5jCkBAIC0wLDAgKzEsMzE4IEBACisvKgorICogU1BJIHRlc3RpbmcgdXRpbGl0eSAodXNpbmcgc3BpZGV2IGRyaXZlcikKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDcgIE1vbnRhVmlzdGEgU29mdHdhcmUsIEluYy4KKyAqIENvcHlyaWdodCAoYykgMjAwNyAgQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgorICoKKyAqIENyb3NzLWNvbXBpbGUgd2l0aCBjcm9zcy1nY2MgLUkvcGF0aC90by9jcm9zcy1rZXJuZWwvaW5jbHVkZQorICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGdldG9wdC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9zcGkvc3BpZGV2Lmg+CisKKyNkZWZpbmUgQVJSQVlfU0laRShhKSAoc2l6ZW9mKGEpIC8gc2l6ZW9mKChhKVswXSkpCisKK3N0YXRpYyB2b2lkIHBhYm9ydChjb25zdCBjaGFyICpzKQoreworCXBlcnJvcihzKTsKKwlhYm9ydCgpOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqZGV2aWNlID0gIi9kZXYvc3BpZGV2MS4xIjsKK3N0YXRpYyB1aW50MzJfdCBtb2RlOworc3RhdGljIHVpbnQ4X3QgYml0cyA9IDg7CitzdGF0aWMgdWludDMyX3Qgc3BlZWQgPSA1MDAwMDA7CitzdGF0aWMgdWludDE2X3QgZGVsYXk7CitzdGF0aWMgaW50IHZlcmJvc2U7CisKK3VpbnQ4X3QgZGVmYXVsdF90eFtdID0geworCTB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsCisJMHg0MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5NSwKKwkweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLCAweEZGLAorCTB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsCisJMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwKKwkweEYwLCAweDBELAorfTsKKwordWludDhfdCBkZWZhdWx0X3J4W0FSUkFZX1NJWkUoZGVmYXVsdF90eCldID0gezAsIH07CitjaGFyICppbnB1dF90eDsKKworc3RhdGljIHZvaWQgaGV4X2R1bXAoY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QgbGluZV9zaXplLCBjaGFyICpwcmVmaXgpCit7CisJaW50IGkgPSAwOworCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHJlc3MgPSBzcmM7CisJY29uc3QgdW5zaWduZWQgY2hhciAqbGluZSA9IGFkZHJlc3M7CisJdW5zaWduZWQgY2hhciBjOworCisJcHJpbnRmKCIlcyB8ICIsIHByZWZpeCk7CisJd2hpbGUgKGxlbmd0aC0tID4gMCkgeworCQlwcmludGYoIiUwMlggIiwgKmFkZHJlc3MrKyk7CisJCWlmICghKCsraSAlIGxpbmVfc2l6ZSkgfHwgKGxlbmd0aCA9PSAwICYmIGkgJSBsaW5lX3NpemUpKSB7CisJCQlpZiAobGVuZ3RoID09IDApIHsKKwkJCQl3aGlsZSAoaSsrICUgbGluZV9zaXplKQorCQkJCQlwcmludGYoIl9fICIpOworCQkJfQorCQkJcHJpbnRmKCIgfCAiKTsgIC8qIHJpZ2h0IGNsb3NlICovCisJCQl3aGlsZSAobGluZSA8IGFkZHJlc3MpIHsKKwkJCQljID0gKmxpbmUrKzsKKwkJCQlwcmludGYoIiVjIiwgKGMgPCAzMyB8fCBjID09IDI1NSkgPyAweDJFIDogYyk7CisJCQl9CisJCQlwcmludGYoIlxuIik7CisJCQlpZiAobGVuZ3RoID4gMCkKKwkJCQlwcmludGYoIiVzIHwgIiwgcHJlZml4KTsKKwkJfQorCX0KK30KKworLyoKKyAqICBVbmVzY2FwZSAtIHByb2Nlc3MgaGV4YWRlY2ltYWwgZXNjYXBlIGNoYXJhY3RlcgorICogICAgICBjb252ZXJ0cyBzaGVsbCBpbnB1dCAiXHgyMyIgLT4gMHgyMworICovCitzdGF0aWMgaW50IHVuZXNjYXBlKGNoYXIgKl9kc3QsIGNoYXIgKl9zcmMsIHNpemVfdCBsZW4pCit7CisJaW50IHJldCA9IDA7CisJY2hhciAqc3JjID0gX3NyYzsKKwljaGFyICpkc3QgPSBfZHN0OworCXVuc2lnbmVkIGludCBjaDsKKworCXdoaWxlICgqc3JjKSB7CisJCWlmICgqc3JjID09ICdcXCcgJiYgKihzcmMrMSkgPT0gJ3gnKSB7CisJCQlzc2NhbmYoc3JjICsgMiwgIiUyeCIsICZjaCk7CisJCQlzcmMgKz0gNDsKKwkJCSpkc3QrKyA9ICh1bnNpZ25lZCBjaGFyKWNoOworCQl9IGVsc2UgeworCQkJKmRzdCsrID0gKnNyYysrOworCQl9CisJCXJldCsrOworCX0KKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCB0cmFuc2ZlcihpbnQgZmQsIHVpbnQ4X3QgY29uc3QgKnR4LCB1aW50OF90IGNvbnN0ICpyeCwgc2l6ZV90IGxlbikKK3sKKwlpbnQgcmV0OworCisJc3RydWN0IHNwaV9pb2NfdHJhbnNmZXIgdHIgPSB7CisJCS50eF9idWYgPSAodW5zaWduZWQgbG9uZyl0eCwKKwkJLnJ4X2J1ZiA9ICh1bnNpZ25lZCBsb25nKXJ4LAorCQkubGVuID0gbGVuLAorCQkuZGVsYXlfdXNlY3MgPSBkZWxheSwKKwkJLnNwZWVkX2h6ID0gc3BlZWQsCisJCS5iaXRzX3Blcl93b3JkID0gYml0cywKKwl9OworCisJaWYgKG1vZGUgJiBTUElfVFhfUVVBRCkKKwkJdHIudHhfbmJpdHMgPSA0OworCWVsc2UgaWYgKG1vZGUgJiBTUElfVFhfRFVBTCkKKwkJdHIudHhfbmJpdHMgPSAyOworCWlmIChtb2RlICYgU1BJX1JYX1FVQUQpCisJCXRyLnJ4X25iaXRzID0gNDsKKwllbHNlIGlmIChtb2RlICYgU1BJX1JYX0RVQUwpCisJCXRyLnJ4X25iaXRzID0gMjsKKwlpZiAoIShtb2RlICYgU1BJX0xPT1ApKSB7CisJCWlmIChtb2RlICYgKFNQSV9UWF9RVUFEIHwgU1BJX1RYX0RVQUwpKQorCQkJdHIucnhfYnVmID0gMDsKKwkJZWxzZSBpZiAobW9kZSAmIChTUElfUlhfUVVBRCB8IFNQSV9SWF9EVUFMKSkKKwkJCXRyLnR4X2J1ZiA9IDA7CisJfQorCisJcmV0ID0gaW9jdGwoZmQsIFNQSV9JT0NfTUVTU0FHRSgxKSwgJnRyKTsKKwlpZiAocmV0IDwgMSkKKwkJcGFib3J0KCJjYW4ndCBzZW5kIHNwaSBtZXNzYWdlIik7CisKKwlpZiAodmVyYm9zZSkKKwkJaGV4X2R1bXAodHgsIGxlbiwgMzIsICJUWCIpOworCWhleF9kdW1wKHJ4LCBsZW4sIDMyLCAiUlgiKTsKK30KKworc3RhdGljIHZvaWQgcHJpbnRfdXNhZ2UoY29uc3QgY2hhciAqcHJvZykKK3sKKwlwcmludGYoIlVzYWdlOiAlcyBbLURzYmRsSE9MQzNdXG4iLCBwcm9nKTsKKwlwdXRzKCIgIC1EIC0tZGV2aWNlICAgZGV2aWNlIHRvIHVzZSAoZGVmYXVsdCAvZGV2L3NwaWRldjEuMSlcbiIKKwkgICAgICIgIC1zIC0tc3BlZWQgICAgbWF4IHNwZWVkIChIeilcbiIKKwkgICAgICIgIC1kIC0tZGVsYXkgICAgZGVsYXkgKHVzZWMpXG4iCisJICAgICAiICAtYiAtLWJwdyAgICAgIGJpdHMgcGVyIHdvcmQgXG4iCisJICAgICAiICAtbCAtLWxvb3AgICAgIGxvb3BiYWNrXG4iCisJICAgICAiICAtSCAtLWNwaGEgICAgIGNsb2NrIHBoYXNlXG4iCisJICAgICAiICAtTyAtLWNwb2wgICAgIGNsb2NrIHBvbGFyaXR5XG4iCisJICAgICAiICAtTCAtLWxzYiAgICAgIGxlYXN0IHNpZ25pZmljYW50IGJpdCBmaXJzdFxuIgorCSAgICAgIiAgLUMgLS1jcy1oaWdoICBjaGlwIHNlbGVjdCBhY3RpdmUgaGlnaFxuIgorCSAgICAgIiAgLTMgLS0zd2lyZSAgICBTSS9TTyBzaWduYWxzIHNoYXJlZFxuIgorCSAgICAgIiAgLXYgLS12ZXJib3NlICBWZXJib3NlIChzaG93IHR4IGJ1ZmZlcilcbiIKKwkgICAgICIgIC1wICAgICAgICAgICAgU2VuZCBkYXRhIChlLmcuIFwiMTIzNFxceGRlXFx4YWRcIilcbiIKKwkgICAgICIgIC1OIC0tbm8tY3MgICAgbm8gY2hpcCBzZWxlY3RcbiIKKwkgICAgICIgIC1SIC0tcmVhZHkgICAgc2xhdmUgcHVsbHMgbG93IHRvIHBhdXNlXG4iCisJICAgICAiICAtMiAtLWR1YWwgICAgIGR1YWwgdHJhbnNmZXJcbiIKKwkgICAgICIgIC00IC0tcXVhZCAgICAgcXVhZCB0cmFuc2ZlclxuIik7CisJZXhpdCgxKTsKK30KKworc3RhdGljIHZvaWQgcGFyc2Vfb3B0cyhpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCXdoaWxlICgxKSB7CisJCXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3B0aW9uIGxvcHRzW10gPSB7CisJCQl7ICJkZXZpY2UiLCAgMSwgMCwgJ0QnIH0sCisJCQl7ICJzcGVlZCIsICAgMSwgMCwgJ3MnIH0sCisJCQl7ICJkZWxheSIsICAgMSwgMCwgJ2QnIH0sCisJCQl7ICJicHciLCAgICAgMSwgMCwgJ2InIH0sCisJCQl7ICJsb29wIiwgICAgMCwgMCwgJ2wnIH0sCisJCQl7ICJjcGhhIiwgICAgMCwgMCwgJ0gnIH0sCisJCQl7ICJjcG9sIiwgICAgMCwgMCwgJ08nIH0sCisJCQl7ICJsc2IiLCAgICAgMCwgMCwgJ0wnIH0sCisJCQl7ICJjcy1oaWdoIiwgMCwgMCwgJ0MnIH0sCisJCQl7ICIzd2lyZSIsICAgMCwgMCwgJzMnIH0sCisJCQl7ICJuby1jcyIsICAgMCwgMCwgJ04nIH0sCisJCQl7ICJyZWFkeSIsICAgMCwgMCwgJ1InIH0sCisJCQl7ICJkdWFsIiwgICAgMCwgMCwgJzInIH0sCisJCQl7ICJ2ZXJib3NlIiwgMCwgMCwgJ3YnIH0sCisJCQl7ICJxdWFkIiwgICAgMCwgMCwgJzQnIH0sCisJCQl7IE5VTEwsIDAsIDAsIDAgfSwKKwkJfTsKKwkJaW50IGM7CisKKwkJYyA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJEOnM6ZDpiOmxIT0xDM05SMjRwOnYiLCBsb3B0cywgTlVMTCk7CisKKwkJaWYgKGMgPT0gLTEpCisJCQlicmVhazsKKworCQlzd2l0Y2ggKGMpIHsKKwkJY2FzZSAnRCc6CisJCQlkZXZpY2UgPSBvcHRhcmc7CisJCQlicmVhazsKKwkJY2FzZSAncyc6CisJCQlzcGVlZCA9IGF0b2kob3B0YXJnKTsKKwkJCWJyZWFrOworCQljYXNlICdkJzoKKwkJCWRlbGF5ID0gYXRvaShvcHRhcmcpOworCQkJYnJlYWs7CisJCWNhc2UgJ2InOgorCQkJYml0cyA9IGF0b2kob3B0YXJnKTsKKwkJCWJyZWFrOworCQljYXNlICdsJzoKKwkJCW1vZGUgfD0gU1BJX0xPT1A7CisJCQlicmVhazsKKwkJY2FzZSAnSCc6CisJCQltb2RlIHw9IFNQSV9DUEhBOworCQkJYnJlYWs7CisJCWNhc2UgJ08nOgorCQkJbW9kZSB8PSBTUElfQ1BPTDsKKwkJCWJyZWFrOworCQljYXNlICdMJzoKKwkJCW1vZGUgfD0gU1BJX0xTQl9GSVJTVDsKKwkJCWJyZWFrOworCQljYXNlICdDJzoKKwkJCW1vZGUgfD0gU1BJX0NTX0hJR0g7CisJCQlicmVhazsKKwkJY2FzZSAnMyc6CisJCQltb2RlIHw9IFNQSV8zV0lSRTsKKwkJCWJyZWFrOworCQljYXNlICdOJzoKKwkJCW1vZGUgfD0gU1BJX05PX0NTOworCQkJYnJlYWs7CisJCWNhc2UgJ3YnOgorCQkJdmVyYm9zZSA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAnUic6CisJCQltb2RlIHw9IFNQSV9SRUFEWTsKKwkJCWJyZWFrOworCQljYXNlICdwJzoKKwkJCWlucHV0X3R4ID0gb3B0YXJnOworCQkJYnJlYWs7CisJCWNhc2UgJzInOgorCQkJbW9kZSB8PSBTUElfVFhfRFVBTDsKKwkJCWJyZWFrOworCQljYXNlICc0JzoKKwkJCW1vZGUgfD0gU1BJX1RYX1FVQUQ7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXByaW50X3VzYWdlKGFyZ3ZbMF0pOworCQkJYnJlYWs7CisJCX0KKwl9CisJaWYgKG1vZGUgJiBTUElfTE9PUCkgeworCQlpZiAobW9kZSAmIFNQSV9UWF9EVUFMKQorCQkJbW9kZSB8PSBTUElfUlhfRFVBTDsKKwkJaWYgKG1vZGUgJiBTUElfVFhfUVVBRCkKKwkJCW1vZGUgfD0gU1BJX1JYX1FVQUQ7CisJfQorfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWludCByZXQgPSAwOworCWludCBmZDsKKwl1aW50OF90ICp0eDsKKwl1aW50OF90ICpyeDsKKwlpbnQgc2l6ZTsKKworCXBhcnNlX29wdHMoYXJnYywgYXJndik7CisKKwlmZCA9IG9wZW4oZGV2aWNlLCBPX1JEV1IpOworCWlmIChmZCA8IDApCisJCXBhYm9ydCgiY2FuJ3Qgb3BlbiBkZXZpY2UiKTsKKworCS8qCisJICogc3BpIG1vZGUKKwkgKi8KKwlyZXQgPSBpb2N0bChmZCwgU1BJX0lPQ19XUl9NT0RFMzIsICZtb2RlKTsKKwlpZiAocmV0ID09IC0xKQorCQlwYWJvcnQoImNhbid0IHNldCBzcGkgbW9kZSIpOworCisJcmV0ID0gaW9jdGwoZmQsIFNQSV9JT0NfUkRfTU9ERTMyLCAmbW9kZSk7CisJaWYgKHJldCA9PSAtMSkKKwkJcGFib3J0KCJjYW4ndCBnZXQgc3BpIG1vZGUiKTsKKworCS8qCisJICogYml0cyBwZXIgd29yZAorCSAqLworCXJldCA9IGlvY3RsKGZkLCBTUElfSU9DX1dSX0JJVFNfUEVSX1dPUkQsICZiaXRzKTsKKwlpZiAocmV0ID09IC0xKQorCQlwYWJvcnQoImNhbid0IHNldCBiaXRzIHBlciB3b3JkIik7CisKKwlyZXQgPSBpb2N0bChmZCwgU1BJX0lPQ19SRF9CSVRTX1BFUl9XT1JELCAmYml0cyk7CisJaWYgKHJldCA9PSAtMSkKKwkJcGFib3J0KCJjYW4ndCBnZXQgYml0cyBwZXIgd29yZCIpOworCisJLyoKKwkgKiBtYXggc3BlZWQgaHoKKwkgKi8KKwlyZXQgPSBpb2N0bChmZCwgU1BJX0lPQ19XUl9NQVhfU1BFRURfSFosICZzcGVlZCk7CisJaWYgKHJldCA9PSAtMSkKKwkJcGFib3J0KCJjYW4ndCBzZXQgbWF4IHNwZWVkIGh6Iik7CisKKwlyZXQgPSBpb2N0bChmZCwgU1BJX0lPQ19SRF9NQVhfU1BFRURfSFosICZzcGVlZCk7CisJaWYgKHJldCA9PSAtMSkKKwkJcGFib3J0KCJjYW4ndCBnZXQgbWF4IHNwZWVkIGh6Iik7CisKKwlwcmludGYoInNwaSBtb2RlOiAweCV4XG4iLCBtb2RlKTsKKwlwcmludGYoImJpdHMgcGVyIHdvcmQ6ICVkXG4iLCBiaXRzKTsKKwlwcmludGYoIm1heCBzcGVlZDogJWQgSHogKCVkIEtIeilcbiIsIHNwZWVkLCBzcGVlZC8xMDAwKTsKKworCWlmIChpbnB1dF90eCkgeworCQlzaXplID0gc3RybGVuKGlucHV0X3R4KzEpOworCQl0eCA9IG1hbGxvYyhzaXplKTsKKwkJcnggPSBtYWxsb2Moc2l6ZSk7CisJCXNpemUgPSB1bmVzY2FwZSgoY2hhciAqKXR4LCBpbnB1dF90eCwgc2l6ZSk7CisJCXRyYW5zZmVyKGZkLCB0eCwgcngsIHNpemUpOworCQlmcmVlKHJ4KTsKKwkJZnJlZSh0eCk7CisJfSBlbHNlIHsKKwkJdHJhbnNmZXIoZmQsIGRlZmF1bHRfdHgsIGRlZmF1bHRfcngsIHNpemVvZihkZWZhdWx0X3R4KSk7CisJfQorCisJY2xvc2UoZmQpOworCisJcmV0dXJuIHJldDsKK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc3RhYmxlX2FwaV9ub25zZW5zZS50eHQgYi9Eb2N1bWVudGF0aW9uL3N0YWJsZV9hcGlfbm9uc2Vuc2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiM2JlODkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3N0YWJsZV9hcGlfbm9uc2Vuc2UudHh0CkBAIC0wLDAgKzEsMTkwIEBACitUaGUgTGludXggS2VybmVsIERyaXZlciBJbnRlcmZhY2UKKyhhbGwgb2YgeW91ciBxdWVzdGlvbnMgYW5zd2VyZWQgYW5kIHRoZW4gc29tZSkKKworR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVnQGtyb2FoLmNvbT4KKworVGhpcyBpcyBiZWluZyB3cml0dGVuIHRvIHRyeSB0byBleHBsYWluIHdoeSBMaW51eCBkb2VzIG5vdCBoYXZlIGEgYmluYXJ5CitrZXJuZWwgaW50ZXJmYWNlLCBub3IgZG9lcyBpdCBoYXZlIGEgc3RhYmxlIGtlcm5lbCBpbnRlcmZhY2UuICBQbGVhc2UKK3JlYWxpemUgdGhhdCB0aGlzIGFydGljbGUgZGVzY3JpYmVzIHRoZSBfaW4ga2VybmVsXyBpbnRlcmZhY2VzLCBub3QgdGhlCitrZXJuZWwgdG8gdXNlcnNwYWNlIGludGVyZmFjZXMuICBUaGUga2VybmVsIHRvIHVzZXJzcGFjZSBpbnRlcmZhY2UgaXMKK3RoZSBvbmUgdGhhdCBhcHBsaWNhdGlvbiBwcm9ncmFtcyB1c2UsIHRoZSBzeXNjYWxsIGludGVyZmFjZS4gIFRoYXQKK2ludGVyZmFjZSBpcyBfdmVyeV8gc3RhYmxlIG92ZXIgdGltZSwgYW5kIHdpbGwgbm90IGJyZWFrLiAgSSBoYXZlIG9sZAorcHJvZ3JhbXMgdGhhdCB3ZXJlIGJ1aWx0IG9uIGEgcHJlIDAuOXNvbWV0aGluZyBrZXJuZWwgdGhhdCBzdGlsbCB3b3JrCitqdXN0IGZpbmUgb24gdGhlIGxhdGVzdCAyLjYga2VybmVsIHJlbGVhc2UuICBUaGF0IGludGVyZmFjZSBpcyB0aGUgb25lCit0aGF0IHVzZXJzIGFuZCBhcHBsaWNhdGlvbiBwcm9ncmFtbWVycyBjYW4gY291bnQgb24gYmVpbmcgc3RhYmxlLgorCisKK0V4ZWN1dGl2ZSBTdW1tYXJ5CistLS0tLS0tLS0tLS0tLS0tLQorWW91IHRoaW5rIHlvdSB3YW50IGEgc3RhYmxlIGtlcm5lbCBpbnRlcmZhY2UsIGJ1dCB5b3UgcmVhbGx5IGRvIG5vdCwgYW5kCit5b3UgZG9uJ3QgZXZlbiBrbm93IGl0LiAgV2hhdCB5b3Ugd2FudCBpcyBhIHN0YWJsZSBydW5uaW5nIGRyaXZlciwgYW5kCit5b3UgZ2V0IHRoYXQgb25seSBpZiB5b3VyIGRyaXZlciBpcyBpbiB0aGUgbWFpbiBrZXJuZWwgdHJlZS4gIFlvdSBhbHNvCitnZXQgbG90cyBvZiBvdGhlciBnb29kIGJlbmVmaXRzIGlmIHlvdXIgZHJpdmVyIGlzIGluIHRoZSBtYWluIGtlcm5lbAordHJlZSwgYWxsIG9mIHdoaWNoIGhhcyBtYWRlIExpbnV4IGludG8gc3VjaCBhIHN0cm9uZywgc3RhYmxlLCBhbmQgbWF0dXJlCitvcGVyYXRpbmcgc3lzdGVtIHdoaWNoIGlzIHRoZSByZWFzb24geW91IGFyZSB1c2luZyBpdCBpbiB0aGUgZmlyc3QKK3BsYWNlLgorCisKK0ludHJvCistLS0tLQorCitJdCdzIG9ubHkgdGhlIG9kZCBwZXJzb24gd2hvIHdhbnRzIHRvIHdyaXRlIGEga2VybmVsIGRyaXZlciB0aGF0IG5lZWRzCit0byB3b3JyeSBhYm91dCB0aGUgaW4ta2VybmVsIGludGVyZmFjZXMgY2hhbmdpbmcuICBGb3IgdGhlIG1ham9yaXR5IG9mCit0aGUgd29ybGQsIHRoZXkgbmVpdGhlciBzZWUgdGhpcyBpbnRlcmZhY2UsIG5vciBkbyB0aGV5IGNhcmUgYWJvdXQgaXQgYXQKK2FsbC4KKworRmlyc3Qgb2ZmLCBJJ20gbm90IGdvaW5nIHRvIGFkZHJlc3MgX2FueV8gbGVnYWwgaXNzdWVzIGFib3V0IGNsb3NlZAorc291cmNlLCBoaWRkZW4gc291cmNlLCBiaW5hcnkgYmxvYnMsIHNvdXJjZSB3cmFwcGVycywgb3IgYW55IG90aGVyIHRlcm0KK3RoYXQgZGVzY3JpYmVzIGtlcm5lbCBkcml2ZXJzIHRoYXQgZG8gbm90IGhhdmUgdGhlaXIgc291cmNlIGNvZGUKK3JlbGVhc2VkIHVuZGVyIHRoZSBHUEwuICBQbGVhc2UgY29uc3VsdCBhIGxhd3llciBpZiB5b3UgaGF2ZSBhbnkgbGVnYWwKK3F1ZXN0aW9ucywgSSdtIGEgcHJvZ3JhbW1lciBhbmQgaGVuY2UsIEknbSBqdXN0IGdvaW5nIHRvIGJlIGRlc2NyaWJpbmcKK3RoZSB0ZWNobmljYWwgaXNzdWVzIGhlcmUgKG5vdCB0byBtYWtlIGxpZ2h0IG9mIHRoZSBsZWdhbCBpc3N1ZXMsIHRoZXkKK2FyZSByZWFsLCBhbmQgeW91IGRvIG5lZWQgdG8gYmUgYXdhcmUgb2YgdGhlbSBhdCBhbGwgdGltZXMuKQorCitTbywgdGhlcmUgYXJlIHR3byBtYWluIHRvcGljcyBoZXJlLCBiaW5hcnkga2VybmVsIGludGVyZmFjZXMgYW5kIHN0YWJsZQora2VybmVsIHNvdXJjZSBpbnRlcmZhY2VzLiAgVGhleSBib3RoIGRlcGVuZCBvbiBlYWNoIG90aGVyLCBidXQgd2Ugd2lsbAorZGlzY3VzcyB0aGUgYmluYXJ5IHN0dWZmIGZpcnN0IHRvIGdldCBpdCBvdXQgb2YgdGhlIHdheS4KKworCitCaW5hcnkgS2VybmVsIEludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0Fzc3VtaW5nIHRoYXQgd2UgaGFkIGEgc3RhYmxlIGtlcm5lbCBzb3VyY2UgaW50ZXJmYWNlIGZvciB0aGUga2VybmVsLCBhCitiaW5hcnkgaW50ZXJmYWNlIHdvdWxkIG5hdHVyYWxseSBoYXBwZW4gdG9vLCByaWdodD8gIFdyb25nLiAgUGxlYXNlCitjb25zaWRlciB0aGUgZm9sbG93aW5nIGZhY3RzIGFib3V0IHRoZSBMaW51eCBrZXJuZWw6CisgIC0gRGVwZW5kaW5nIG9uIHRoZSB2ZXJzaW9uIG9mIHRoZSBDIGNvbXBpbGVyIHlvdSB1c2UsIGRpZmZlcmVudCBrZXJuZWwKKyAgICBkYXRhIHN0cnVjdHVyZXMgd2lsbCBjb250YWluIGRpZmZlcmVudCBhbGlnbm1lbnQgb2Ygc3RydWN0dXJlcywgYW5kCisgICAgcG9zc2libHkgaW5jbHVkZSBkaWZmZXJlbnQgZnVuY3Rpb25zIGluIGRpZmZlcmVudCB3YXlzIChwdXR0aW5nCisgICAgZnVuY3Rpb25zIGlubGluZSBvciBub3QuKSAgVGhlIGluZGl2aWR1YWwgZnVuY3Rpb24gb3JnYW5pemF0aW9uCisgICAgaXNuJ3QgdGhhdCBpbXBvcnRhbnQsIGJ1dCB0aGUgZGlmZmVyZW50IGRhdGEgc3RydWN0dXJlIHBhZGRpbmcgaXMKKyAgICB2ZXJ5IGltcG9ydGFudC4KKyAgLSBEZXBlbmRpbmcgb24gd2hhdCBrZXJuZWwgYnVpbGQgb3B0aW9ucyB5b3Ugc2VsZWN0LCBhIHdpZGUgcmFuZ2Ugb2YKKyAgICBkaWZmZXJlbnQgdGhpbmdzIGNhbiBiZSBhc3N1bWVkIGJ5IHRoZSBrZXJuZWw6CisgICAgICAtIGRpZmZlcmVudCBzdHJ1Y3R1cmVzIGNhbiBjb250YWluIGRpZmZlcmVudCBmaWVsZHMKKyAgICAgIC0gU29tZSBmdW5jdGlvbnMgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBhdCBhbGwsIChpLmUuIHNvbWUgbG9ja3MKKwljb21waWxlIGF3YXkgdG8gbm90aGluZyBmb3Igbm9uLVNNUCBidWlsZHMuKQorICAgICAgLSBNZW1vcnkgd2l0aGluIHRoZSBrZXJuZWwgY2FuIGJlIGFsaWduZWQgaW4gZGlmZmVyZW50IHdheXMsCisJZGVwZW5kaW5nIG9uIHRoZSBidWlsZCBvcHRpb25zLgorICAtIExpbnV4IHJ1bnMgb24gYSB3aWRlIHJhbmdlIG9mIGRpZmZlcmVudCBwcm9jZXNzb3IgYXJjaGl0ZWN0dXJlcy4KKyAgICBUaGVyZSBpcyBubyB3YXkgdGhhdCBiaW5hcnkgZHJpdmVycyBmcm9tIG9uZSBhcmNoaXRlY3R1cmUgd2lsbCBydW4KKyAgICBvbiBhbm90aGVyIGFyY2hpdGVjdHVyZSBwcm9wZXJseS4KKworTm93IGEgbnVtYmVyIG9mIHRoZXNlIGlzc3VlcyBjYW4gYmUgYWRkcmVzc2VkIGJ5IHNpbXBseSBjb21waWxpbmcgeW91cgorbW9kdWxlIGZvciB0aGUgZXhhY3Qgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb24sIHVzaW5nIHRoZSBzYW1lIGV4YWN0CitDIGNvbXBpbGVyIHRoYXQgdGhlIGtlcm5lbCB3YXMgYnVpbHQgd2l0aC4gIFRoaXMgaXMgc3VmZmljaWVudCBpZiB5b3UKK3dhbnQgdG8gcHJvdmlkZSBhIG1vZHVsZSBmb3IgYSBzcGVjaWZpYyByZWxlYXNlIHZlcnNpb24gb2YgYSBzcGVjaWZpYworTGludXggZGlzdHJpYnV0aW9uLiAgQnV0IG11bHRpcGx5IHRoYXQgc2luZ2xlIGJ1aWxkIGJ5IHRoZSBudW1iZXIgb2YKK2RpZmZlcmVudCBMaW51eCBkaXN0cmlidXRpb25zIGFuZCB0aGUgbnVtYmVyIG9mIGRpZmZlcmVudCBzdXBwb3J0ZWQKK3JlbGVhc2VzIG9mIHRoZSBMaW51eCBkaXN0cmlidXRpb24gYW5kIHlvdSBxdWlja2x5IGhhdmUgYSBuaWdodG1hcmUgb2YKK2RpZmZlcmVudCBidWlsZCBvcHRpb25zIG9uIGRpZmZlcmVudCByZWxlYXNlcy4gIEFsc28gcmVhbGl6ZSB0aGF0IGVhY2gKK0xpbnV4IGRpc3RyaWJ1dGlvbiByZWxlYXNlIGNvbnRhaW5zIGEgbnVtYmVyIG9mIGRpZmZlcmVudCBrZXJuZWxzLCBhbGwKK3R1bmVkIHRvIGRpZmZlcmVudCBoYXJkd2FyZSB0eXBlcyAoZGlmZmVyZW50IHByb2Nlc3NvciB0eXBlcyBhbmQKK2RpZmZlcmVudCBvcHRpb25zKSwgc28gZm9yIGV2ZW4gYSBzaW5nbGUgcmVsZWFzZSB5b3Ugd2lsbCBuZWVkIHRvIGNyZWF0ZQorbXVsdGlwbGUgdmVyc2lvbnMgb2YgeW91ciBtb2R1bGUuCisKK1RydXN0IG1lLCB5b3Ugd2lsbCBnbyBpbnNhbmUgb3ZlciB0aW1lIGlmIHlvdSB0cnkgdG8gc3VwcG9ydCB0aGlzIGtpbmQKK29mIHJlbGVhc2UsIEkgbGVhcm5lZCB0aGlzIHRoZSBoYXJkIHdheSBhIGxvbmcgdGltZSBhZ28uLi4KKworCitTdGFibGUgS2VybmVsIFNvdXJjZSBJbnRlcmZhY2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgaXMgYSBtdWNoIG1vcmUgInZvbGF0aWxlIiB0b3BpYyBpZiB5b3UgdGFsayB0byBwZW9wbGUgd2hvIHRyeSB0bwora2VlcCBhIExpbnV4IGtlcm5lbCBkcml2ZXIgdGhhdCBpcyBub3QgaW4gdGhlIG1haW4ga2VybmVsIHRyZWUgdXAgdG8KK2RhdGUgb3ZlciB0aW1lLgorCitMaW51eCBrZXJuZWwgZGV2ZWxvcG1lbnQgaXMgY29udGludW91cyBhbmQgYXQgYSByYXBpZCBwYWNlLCBuZXZlcgorc3RvcHBpbmcgdG8gc2xvdyBkb3duLiAgQXMgc3VjaCwgdGhlIGtlcm5lbCBkZXZlbG9wZXJzIGZpbmQgYnVncyBpbgorY3VycmVudCBpbnRlcmZhY2VzLCBvciBmaWd1cmUgb3V0IGEgYmV0dGVyIHdheSB0byBkbyB0aGluZ3MuICBJZiB0aGV5IGRvCit0aGF0LCB0aGV5IHRoZW4gZml4IHRoZSBjdXJyZW50IGludGVyZmFjZXMgdG8gd29yayBiZXR0ZXIuICBXaGVuIHRoZXkgZG8KK3NvLCBmdW5jdGlvbiBuYW1lcyBtYXkgY2hhbmdlLCBzdHJ1Y3R1cmVzIG1heSBncm93IG9yIHNocmluaywgYW5kCitmdW5jdGlvbiBwYXJhbWV0ZXJzIG1heSBiZSByZXdvcmtlZC4gIElmIHRoaXMgaGFwcGVucywgYWxsIG9mIHRoZQoraW5zdGFuY2VzIG9mIHdoZXJlIHRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgd2l0aGluIHRoZSBrZXJuZWwgYXJlIGZpeGVkIHVwCithdCB0aGUgc2FtZSB0aW1lLCBlbnN1cmluZyB0aGF0IGV2ZXJ5dGhpbmcgY29udGludWVzIHRvIHdvcmsgcHJvcGVybHkuCisKK0FzIGEgc3BlY2lmaWMgZXhhbXBsZXMgb2YgdGhpcywgdGhlIGluLWtlcm5lbCBVU0IgaW50ZXJmYWNlcyBoYXZlCit1bmRlcmdvbmUgYXQgbGVhc3QgdGhyZWUgZGlmZmVyZW50IHJld29ya3Mgb3ZlciB0aGUgbGlmZXRpbWUgb2YgdGhpcworc3Vic3lzdGVtLiAgVGhlc2UgcmV3b3JrcyB3ZXJlIGRvbmUgdG8gYWRkcmVzcyBhIG51bWJlciBvZiBkaWZmZXJlbnQKK2lzc3VlczoKKyAgLSBBIGNoYW5nZSBmcm9tIGEgc3luY2hyb25vdXMgbW9kZWwgb2YgZGF0YSBzdHJlYW1zIHRvIGFuIGFzeW5jaHJvbm91cworICAgIG9uZS4gIFRoaXMgcmVkdWNlZCB0aGUgY29tcGxleGl0eSBvZiBhIG51bWJlciBvZiBkcml2ZXJzIGFuZAorICAgIGluY3JlYXNlZCB0aGUgdGhyb3VnaHB1dCBvZiBhbGwgVVNCIGRyaXZlcnMgc3VjaCB0aGF0IHdlIGFyZSBub3cKKyAgICBydW5uaW5nIGFsbW9zdCBhbGwgVVNCIGRldmljZXMgYXQgdGhlaXIgbWF4aW11bSBzcGVlZCBwb3NzaWJsZS4KKyAgLSBBIGNoYW5nZSB3YXMgbWFkZSBpbiB0aGUgd2F5IGRhdGEgcGFja2V0cyB3ZXJlIGFsbG9jYXRlZCBmcm9tIHRoZQorICAgIFVTQiBjb3JlIGJ5IFVTQiBkcml2ZXJzIHNvIHRoYXQgYWxsIGRyaXZlcnMgbm93IG5lZWRlZCB0byBwcm92aWRlCisgICAgbW9yZSBpbmZvcm1hdGlvbiB0byB0aGUgVVNCIGNvcmUgdG8gZml4IGEgbnVtYmVyIG9mIGRvY3VtZW50ZWQKKyAgICBkZWFkbG9ja3MuCisKK1RoaXMgaXMgaW4gc3RhcmsgY29udHJhc3QgdG8gYSBudW1iZXIgb2YgY2xvc2VkIHNvdXJjZSBvcGVyYXRpbmcgc3lzdGVtcword2hpY2ggaGF2ZSBoYWQgdG8gbWFpbnRhaW4gdGhlaXIgb2xkZXIgVVNCIGludGVyZmFjZXMgb3ZlciB0aW1lLiAgVGhpcworcHJvdmlkZXMgdGhlIGFiaWxpdHkgZm9yIG5ldyBkZXZlbG9wZXJzIHRvIGFjY2lkZW50YWxseSB1c2UgdGhlIG9sZAoraW50ZXJmYWNlcyBhbmQgZG8gdGhpbmdzIGluIGltcHJvcGVyIHdheXMsIGNhdXNpbmcgdGhlIHN0YWJpbGl0eSBvZiB0aGUKK29wZXJhdGluZyBzeXN0ZW0gdG8gc3VmZmVyLgorCitJbiBib3RoIG9mIHRoZXNlIGluc3RhbmNlcywgYWxsIGRldmVsb3BlcnMgYWdyZWVkIHRoYXQgdGhlc2Ugd2VyZQoraW1wb3J0YW50IGNoYW5nZXMgdGhhdCBuZWVkZWQgdG8gYmUgbWFkZSwgYW5kIHRoZXkgd2VyZSBtYWRlLCB3aXRoCityZWxhdGl2ZWx5IGxpdHRsZSBwYWluLiAgSWYgTGludXggaGFkIHRvIGVuc3VyZSB0aGF0IGl0IHdpbGwgcHJlc2VydmUgYQorc3RhYmxlIHNvdXJjZSBpbnRlcmZhY2UsIGEgbmV3IGludGVyZmFjZSB3b3VsZCBoYXZlIGJlZW4gY3JlYXRlZCwgYW5kCit0aGUgb2xkZXIsIGJyb2tlbiBvbmUgd291bGQgaGF2ZSBoYWQgdG8gYmUgbWFpbnRhaW5lZCBvdmVyIHRpbWUsIGxlYWRpbmcKK3RvIGV4dHJhIHdvcmsgZm9yIHRoZSBVU0IgZGV2ZWxvcGVycy4gIFNpbmNlIGFsbCBMaW51eCBVU0IgZGV2ZWxvcGVycyBkbwordGhlaXIgd29yayBvbiB0aGVpciBvd24gdGltZSwgYXNraW5nIHByb2dyYW1tZXJzIHRvIGRvIGV4dHJhIHdvcmsgZm9yIG5vCitnYWluLCBmb3IgZnJlZSwgaXMgbm90IGEgcG9zc2liaWxpdHkuCisKK1NlY3VyaXR5IGlzc3VlcyBhcmUgYWxzbyB2ZXJ5IGltcG9ydGFudCBmb3IgTGludXguICBXaGVuIGEKK3NlY3VyaXR5IGlzc3VlIGlzIGZvdW5kLCBpdCBpcyBmaXhlZCBpbiBhIHZlcnkgc2hvcnQgYW1vdW50IG9mIHRpbWUuICBBCitudW1iZXIgb2YgdGltZXMgdGhpcyBoYXMgY2F1c2VkIGludGVybmFsIGtlcm5lbCBpbnRlcmZhY2VzIHRvIGJlCityZXdvcmtlZCB0byBwcmV2ZW50IHRoZSBzZWN1cml0eSBwcm9ibGVtIGZyb20gb2NjdXJyaW5nLiAgV2hlbiB0aGlzCitoYXBwZW5zLCBhbGwgZHJpdmVycyB0aGF0IHVzZSB0aGUgaW50ZXJmYWNlcyB3ZXJlIGFsc28gZml4ZWQgYXQgdGhlCitzYW1lIHRpbWUsIGVuc3VyaW5nIHRoYXQgdGhlIHNlY3VyaXR5IHByb2JsZW0gd2FzIGZpeGVkIGFuZCBjb3VsZCBub3QKK2NvbWUgYmFjayBhdCBzb21lIGZ1dHVyZSB0aW1lIGFjY2lkZW50YWxseS4gIElmIHRoZSBpbnRlcm5hbCBpbnRlcmZhY2VzCit3ZXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSwgZml4aW5nIHRoaXMga2luZCBvZiBzZWN1cml0eSBwcm9ibGVtIGFuZAoraW5zdXJpbmcgdGhhdCBpdCBjb3VsZCBub3QgaGFwcGVuIGFnYWluIHdvdWxkIG5vdCBiZSBwb3NzaWJsZS4KKworS2VybmVsIGludGVyZmFjZXMgYXJlIGNsZWFuZWQgdXAgb3ZlciB0aW1lLiAgSWYgdGhlcmUgaXMgbm8gb25lIHVzaW5nIGEKK2N1cnJlbnQgaW50ZXJmYWNlLCBpdCBpcyBkZWxldGVkLiAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGtlcm5lbCByZW1haW5zCithcyBzbWFsbCBhcyBwb3NzaWJsZSwgYW5kIHRoYXQgYWxsIHBvdGVudGlhbCBpbnRlcmZhY2VzIGFyZSB0ZXN0ZWQgYXMKK3dlbGwgYXMgdGhleSBjYW4gYmUgKHVudXNlZCBpbnRlcmZhY2VzIGFyZSBwcmV0dHkgbXVjaCBpbXBvc3NpYmxlIHRvCit0ZXN0IGZvciB2YWxpZGl0eS4pCisKKworV2hhdCB0byBkbworLS0tLS0tLS0tLQorCitTbywgaWYgeW91IGhhdmUgYSBMaW51eCBrZXJuZWwgZHJpdmVyIHRoYXQgaXMgbm90IGluIHRoZSBtYWluIGtlcm5lbAordHJlZSwgd2hhdCBhcmUgeW91LCBhIGRldmVsb3Blciwgc3VwcG9zZWQgdG8gZG8/ICBSZWxlYXNpbmcgYSBiaW5hcnkKK2RyaXZlciBmb3IgZXZlcnkgZGlmZmVyZW50IGtlcm5lbCB2ZXJzaW9uIGZvciBldmVyeSBkaXN0cmlidXRpb24gaXMgYQorbmlnaHRtYXJlLCBhbmQgdHJ5aW5nIHRvIGtlZXAgdXAgd2l0aCBhbiBldmVyIGNoYW5naW5nIGtlcm5lbCBpbnRlcmZhY2UKK2lzIGFsc28gYSByb3VnaCBqb2IuCisKK1NpbXBsZSwgZ2V0IHlvdXIga2VybmVsIGRyaXZlciBpbnRvIHRoZSBtYWluIGtlcm5lbCB0cmVlIChyZW1lbWJlciB3ZQorYXJlIHRhbGtpbmcgYWJvdXQgR1BMIHJlbGVhc2VkIGRyaXZlcnMgaGVyZSwgaWYgeW91ciBjb2RlIGRvZXNuJ3QgZmFsbAordW5kZXIgdGhpcyBjYXRlZ29yeSwgZ29vZCBsdWNrLCB5b3UgYXJlIG9uIHlvdXIgb3duIGhlcmUsIHlvdSBsZWVjaAorPGluc2VydCBsaW5rIHRvIGxlZWNoIGNvbW1lbnQgZnJvbSBBbmRyZXcgYW5kIExpbnVzIGhlcmU+LikgIElmIHlvdXIKK2RyaXZlciBpcyBpbiB0aGUgdHJlZSwgYW5kIGEga2VybmVsIGludGVyZmFjZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGZpeGVkCit1cCBieSB0aGUgcGVyc29uIHdobyBkaWQgdGhlIGtlcm5lbCBjaGFuZ2UgaW4gdGhlIGZpcnN0IHBsYWNlLiAgVGhpcworZW5zdXJlcyB0aGF0IHlvdXIgZHJpdmVyIGlzIGFsd2F5cyBidWlsZGFibGUsIGFuZCB3b3JrcyBvdmVyIHRpbWUsIHdpdGgKK3ZlcnkgbGl0dGxlIGVmZm9ydCBvbiB5b3VyIHBhcnQuCisKK1RoZSB2ZXJ5IGdvb2Qgc2lkZSBlZmZlY3RzIG9mIGhhdmluZyB5b3VyIGRyaXZlciBpbiB0aGUgbWFpbiBrZXJuZWwgdHJlZQorYXJlOgorICAtIFRoZSBxdWFsaXR5IG9mIHRoZSBkcml2ZXIgd2lsbCByaXNlIGFzIHRoZSBtYWludGVuYW5jZSBjb3N0cyAodG8gdGhlCisgICAgb3JpZ2luYWwgZGV2ZWxvcGVyKSB3aWxsIGRlY3JlYXNlLgorICAtIE90aGVyIGRldmVsb3BlcnMgd2lsbCBhZGQgZmVhdHVyZXMgdG8geW91ciBkcml2ZXIuCisgIC0gT3RoZXIgcGVvcGxlIHdpbGwgZmluZCBhbmQgZml4IGJ1Z3MgaW4geW91ciBkcml2ZXIuCisgIC0gT3RoZXIgcGVvcGxlIHdpbGwgZmluZCB0dW5pbmcgb3Bwb3J0dW5pdGllcyBpbiB5b3VyIGRyaXZlci4KKyAgLSBPdGhlciBwZW9wbGUgd2lsbCB1cGRhdGUgdGhlIGRyaXZlciBmb3IgeW91IHdoZW4gZXh0ZXJuYWwgaW50ZXJmYWNlCisgICAgY2hhbmdlcyByZXF1aXJlIGl0LgorICAtIFRoZSBkcml2ZXIgYXV0b21hdGljYWxseSBnZXRzIHNoaXBwZWQgaW4gYWxsIExpbnV4IGRpc3RyaWJ1dGlvbnMKKyAgICB3aXRob3V0IGhhdmluZyB0byBhc2sgdGhlIGRpc3Ryb3MgdG8gYWRkIGl0LgorICAgIAorQXMgTGludXggc3VwcG9ydHMgYSBsYXJnZXIgbnVtYmVyIG9mIGRpZmZlcmVudCBkZXZpY2VzICJvdXQgb2YgdGhlIGJveCIKK3RoYW4gYW55IG90aGVyIG9wZXJhdGluZyBzeXN0ZW0sIGFuZCBpdCBzdXBwb3J0cyB0aGVzZSBkZXZpY2VzIG9uIG1vcmUKK2RpZmZlcmVudCBwcm9jZXNzb3IgYXJjaGl0ZWN0dXJlcyB0aGFuIGFueSBvdGhlciBvcGVyYXRpbmcgc3lzdGVtLCB0aGlzCitwcm92ZW4gdHlwZSBvZiBkZXZlbG9wbWVudCBtb2RlbCBtdXN0IGJlIGRvaW5nIHNvbWV0aGluZyByaWdodCA6KQorCisKKworLS0tLS0tCisKK1RoYW5rcyB0byBSYW5keSBEdW5sYXAsIEFuZHJldyBNb3J0b24sIERhdmlkIEJyb3duZWxsLCBIYW5uYSBMaW5kZXIsCitSb2JlcnQgTG92ZSwgYW5kIE5pc2hhbnRoIEFyYXZhbXVkYW4gZm9yIHRoZWlyIHJldmlldyBhbmQgY29tbWVudHMgb24KK2Vhcmx5IGRyYWZ0cyBvZiB0aGlzIHBhcGVyLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zdGFibGVfa2VybmVsX3J1bGVzLnR4dCBiL0RvY3VtZW50YXRpb24vc3RhYmxlX2tlcm5lbF9ydWxlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA0OWE2MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc3RhYmxlX2tlcm5lbF9ydWxlcy50eHQKQEAgLTAsMCArMSwxNDEgQEAKK0V2ZXJ5dGhpbmcgeW91IGV2ZXIgd2FudGVkIHRvIGtub3cgYWJvdXQgTGludXggLXN0YWJsZSByZWxlYXNlcy4KKworUnVsZXMgb24gd2hhdCBraW5kIG9mIHBhdGNoZXMgYXJlIGFjY2VwdGVkLCBhbmQgd2hpY2ggb25lcyBhcmUgbm90LCBpbnRvIHRoZQorIi1zdGFibGUiIHRyZWU6CisKKyAtIEl0IG11c3QgYmUgb2J2aW91c2x5IGNvcnJlY3QgYW5kIHRlc3RlZC4KKyAtIEl0IGNhbm5vdCBiZSBiaWdnZXIgdGhhbiAxMDAgbGluZXMsIHdpdGggY29udGV4dC4KKyAtIEl0IG11c3QgZml4IG9ubHkgb25lIHRoaW5nLgorIC0gSXQgbXVzdCBmaXggYSByZWFsIGJ1ZyB0aGF0IGJvdGhlcnMgcGVvcGxlIChub3QgYSwgIlRoaXMgY291bGQgYmUgYQorICAgcHJvYmxlbS4uLiIgdHlwZSB0aGluZykuCisgLSBJdCBtdXN0IGZpeCBhIHByb2JsZW0gdGhhdCBjYXVzZXMgYSBidWlsZCBlcnJvciAoYnV0IG5vdCBmb3IgdGhpbmdzCisgICBtYXJrZWQgQ09ORklHX0JST0tFTiksIGFuIG9vcHMsIGEgaGFuZywgZGF0YSBjb3JydXB0aW9uLCBhIHJlYWwKKyAgIHNlY3VyaXR5IGlzc3VlLCBvciBzb21lICJvaCwgdGhhdCdzIG5vdCBnb29kIiBpc3N1ZS4gIEluIHNob3J0LCBzb21ldGhpbmcKKyAgIGNyaXRpY2FsLgorIC0gU2VyaW91cyBpc3N1ZXMgYXMgcmVwb3J0ZWQgYnkgYSB1c2VyIG9mIGEgZGlzdHJpYnV0aW9uIGtlcm5lbCBtYXkgYWxzbworICAgYmUgY29uc2lkZXJlZCBpZiB0aGV5IGZpeCBhIG5vdGFibGUgcGVyZm9ybWFuY2Ugb3IgaW50ZXJhY3Rpdml0eSBpc3N1ZS4KKyAgIEFzIHRoZXNlIGZpeGVzIGFyZSBub3QgYXMgb2J2aW91cyBhbmQgaGF2ZSBhIGhpZ2hlciByaXNrIG9mIGEgc3VidGxlCisgICByZWdyZXNzaW9uIHRoZXkgc2hvdWxkIG9ubHkgYmUgc3VibWl0dGVkIGJ5IGEgZGlzdHJpYnV0aW9uIGtlcm5lbAorICAgbWFpbnRhaW5lciBhbmQgaW5jbHVkZSBhbiBhZGRlbmR1bSBsaW5raW5nIHRvIGEgYnVnemlsbGEgZW50cnkgaWYgaXQKKyAgIGV4aXN0cyBhbmQgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGUgdXNlci12aXNpYmxlIGltcGFjdC4KKyAtIE5ldyBkZXZpY2UgSURzIGFuZCBxdWlya3MgYXJlIGFsc28gYWNjZXB0ZWQuCisgLSBObyAidGhlb3JldGljYWwgcmFjZSBjb25kaXRpb24iIGlzc3VlcywgdW5sZXNzIGFuIGV4cGxhbmF0aW9uIG9mIGhvdyB0aGUKKyAgIHJhY2UgY2FuIGJlIGV4cGxvaXRlZCBpcyBhbHNvIHByb3ZpZGVkLgorIC0gSXQgY2Fubm90IGNvbnRhaW4gYW55ICJ0cml2aWFsIiBmaXhlcyBpbiBpdCAoc3BlbGxpbmcgY2hhbmdlcywKKyAgIHdoaXRlc3BhY2UgY2xlYW51cHMsIGV0YykuCisgLSBJdCBtdXN0IGZvbGxvdyB0aGUgRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nUGF0Y2hlcyBydWxlcy4KKyAtIEl0IG9yIGFuIGVxdWl2YWxlbnQgZml4IG11c3QgYWxyZWFkeSBleGlzdCBpbiBMaW51cycgdHJlZSAodXBzdHJlYW0pLgorCisKK1Byb2NlZHVyZSBmb3Igc3VibWl0dGluZyBwYXRjaGVzIHRvIHRoZSAtc3RhYmxlIHRyZWU6CisKKyAtIElmIHRoZSBwYXRjaCBjb3ZlcnMgZmlsZXMgaW4gbmV0LyBvciBkcml2ZXJzL25ldCBwbGVhc2UgZm9sbG93IG5ldGRldiBzdGFibGUKKyAgIHN1Ym1pc3Npb24gZ3VpZGVsaW5lcyBhcyBkZXNjcmliZWQgaW4KKyAgIERvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXYtRkFRLnR4dAorIC0gU2VjdXJpdHkgcGF0Y2hlcyBzaG91bGQgbm90IGJlIGhhbmRsZWQgKHNvbGVseSkgYnkgdGhlIC1zdGFibGUgcmV2aWV3CisgICBwcm9jZXNzIGJ1dCBzaG91bGQgZm9sbG93IHRoZSBwcm9jZWR1cmVzIGluIERvY3VtZW50YXRpb24vU2VjdXJpdHlCdWdzLgorCitGb3IgYWxsIG90aGVyIHN1Ym1pc3Npb25zLCBjaG9vc2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgcHJvY2VkdXJlczoKKworICAgLS0tIE9wdGlvbiAxIC0tLQorCisgICBUbyBoYXZlIHRoZSBwYXRjaCBhdXRvbWF0aWNhbGx5IGluY2x1ZGVkIGluIHRoZSBzdGFibGUgdHJlZSwgYWRkIHRoZSB0YWcKKyAgICAgQ2M6IHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmcKKyAgIGluIHRoZSBzaWduLW9mZiBhcmVhLiBPbmNlIHRoZSBwYXRjaCBpcyBtZXJnZWQgaXQgd2lsbCBiZSBhcHBsaWVkIHRvCisgICB0aGUgc3RhYmxlIHRyZWUgd2l0aG91dCBhbnl0aGluZyBlbHNlIG5lZWRpbmcgdG8gYmUgZG9uZSBieSB0aGUgYXV0aG9yCisgICBvciBzdWJzeXN0ZW0gbWFpbnRhaW5lci4KKworICAgLS0tIE9wdGlvbiAyIC0tLQorCisgICBBZnRlciB0aGUgcGF0Y2ggaGFzIGJlZW4gbWVyZ2VkIHRvIExpbnVzJyB0cmVlLCBzZW5kIGFuIGVtYWlsIHRvCisgICBzdGFibGVAdmdlci5rZXJuZWwub3JnIGNvbnRhaW5pbmcgdGhlIHN1YmplY3Qgb2YgdGhlIHBhdGNoLCB0aGUgY29tbWl0IElELAorICAgd2h5IHlvdSB0aGluayBpdCBzaG91bGQgYmUgYXBwbGllZCwgYW5kIHdoYXQga2VybmVsIHZlcnNpb24geW91IHdpc2ggaXQgdG8KKyAgIGJlIGFwcGxpZWQgdG8uCisKKyAgIC0tLSBPcHRpb24gMyAtLS0KKworICAgU2VuZCB0aGUgcGF0Y2gsIGFmdGVyIHZlcmlmeWluZyB0aGF0IGl0IGZvbGxvd3MgdGhlIGFib3ZlIHJ1bGVzLCB0bworICAgc3RhYmxlQHZnZXIua2VybmVsLm9yZy4gIFlvdSBtdXN0IG5vdGUgdGhlIHVwc3RyZWFtIGNvbW1pdCBJRCBpbiB0aGUKKyAgIGNoYW5nZWxvZyBvZiB5b3VyIHN1Ym1pc3Npb24sIGFzIHdlbGwgYXMgdGhlIGtlcm5lbCB2ZXJzaW9uIHlvdSB3aXNoCisgICBpdCB0byBiZSBhcHBsaWVkIHRvLgorCitPcHRpb24gMSBpcyAqc3Ryb25nbHkqIHByZWZlcnJlZCwgaXMgdGhlIGVhc2llc3QgYW5kIG1vc3QgY29tbW9uLiAgT3B0aW9ucyAyIGFuZAorMyBhcmUgbW9yZSB1c2VmdWwgaWYgdGhlIHBhdGNoIGlzbid0IGRlZW1lZCB3b3J0aHkgYXQgdGhlIHRpbWUgaXQgaXMgYXBwbGllZCB0bworYSBwdWJsaWMgZ2l0IHRyZWUgKGZvciBpbnN0YW5jZSwgYmVjYXVzZSBpdCBkZXNlcnZlcyBtb3JlIHJlZ3Jlc3Npb24gdGVzdGluZworZmlyc3QpLiAgT3B0aW9uIDMgaXMgZXNwZWNpYWxseSB1c2VmdWwgaWYgdGhlIHBhdGNoIG5lZWRzIHNvbWUgc3BlY2lhbCBoYW5kbGluZwordG8gYXBwbHkgdG8gYW4gb2xkZXIga2VybmVsIChlLmcuLCBpZiBBUEkncyBoYXZlIGNoYW5nZWQgaW4gdGhlIG1lYW50aW1lKS4KKworTm90ZSB0aGF0IGZvciBPcHRpb24gMywgaWYgdGhlIHBhdGNoIGRldmlhdGVzIGZyb20gdGhlIG9yaWdpbmFsIHVwc3RyZWFtIHBhdGNoCisoZm9yIGV4YW1wbGUgYmVjYXVzZSBpdCBoYWQgdG8gYmUgYmFja3BvcnRlZCkgdGhpcyBtdXN0IGJlIHZlcnkgY2xlYXJseQorZG9jdW1lbnRlZCBhbmQganVzdGlmaWVkIGluIHRoZSBwYXRjaCBkZXNjcmlwdGlvbi4KKworVGhlIHVwc3RyZWFtIGNvbW1pdCBJRCBtdXN0IGJlIHNwZWNpZmllZCB3aXRoIGEgc2VwYXJhdGUgbGluZSBhYm92ZSB0aGUgY29tbWl0Cit0ZXh0LCBsaWtlIHRoaXM6CisKKyAgICBjb21taXQgPHNoYTE+IHVwc3RyZWFtLgorCitBZGRpdGlvbmFsbHksIHNvbWUgcGF0Y2hlcyBzdWJtaXR0ZWQgdmlhIE9wdGlvbiAxIG1heSBoYXZlIGFkZGl0aW9uYWwgcGF0Y2gKK3ByZXJlcXVpc2l0ZXMgd2hpY2ggY2FuIGJlIGNoZXJyeS1waWNrZWQuIFRoaXMgY2FuIGJlIHNwZWNpZmllZCBpbiB0aGUgZm9sbG93aW5nCitmb3JtYXQgaW4gdGhlIHNpZ24tb2ZmIGFyZWE6CisKKyAgICAgQ2M6IDxzdGFibGVAdmdlci5rZXJuZWwub3JnPiAjIDMuMy54OiBhMWY4NGEzOiBzY2hlZDogQ2hlY2sgZm9yIGlkbGUKKyAgICAgQ2M6IDxzdGFibGVAdmdlci5rZXJuZWwub3JnPiAjIDMuMy54OiAxYjk1MDhmOiBzY2hlZDogUmF0ZS1saW1pdCBuZXdpZGxlCisgICAgIENjOiA8c3RhYmxlQHZnZXIua2VybmVsLm9yZz4gIyAzLjMueDogZmQyMTA3Mzogc2NoZWQ6IEZpeCBhZmZpbml0eSBsb2dpYworICAgICBDYzogPHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmc+ICMgMy4zLngKKyAgICBTaWduZWQtb2ZmLWJ5OiBJbmdvIE1vbG5hciA8bWluZ29AZWx0ZS5odT4KKworICAgVGhlIHRhZyBzZXF1ZW5jZSBoYXMgdGhlIG1lYW5pbmcgb2Y6CisgICAgIGdpdCBjaGVycnktcGljayBhMWY4NGEzCisgICAgIGdpdCBjaGVycnktcGljayAxYjk1MDhmCisgICAgIGdpdCBjaGVycnktcGljayBmZDIxMDczCisgICAgIGdpdCBjaGVycnktcGljayA8dGhpcyBjb21taXQ+CisKK0Fsc28sIHNvbWUgcGF0Y2hlcyBtYXkgaGF2ZSBrZXJuZWwgdmVyc2lvbiBwcmVyZXF1aXNpdGVzLiAgVGhpcyBjYW4gYmUKK3NwZWNpZmllZCBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdCBpbiB0aGUgc2lnbi1vZmYgYXJlYToKKworICAgICBDYzogIDxzdGFibGVAdmdlci5rZXJuZWwub3JnPiAjIDMuMy54LQorCisgICBUaGUgdGFnIGhhcyB0aGUgbWVhbmluZyBvZjoKKyAgICAgZ2l0IGNoZXJyeS1waWNrIDx0aGlzIGNvbW1pdD4KKworICAgRm9yIGVhY2ggIi1zdGFibGUiIHRyZWUgc3RhcnRpbmcgd2l0aCB0aGUgc3BlY2lmaWVkIHZlcnNpb24uCisKK0ZvbGxvd2luZyB0aGUgc3VibWlzc2lvbjoKKworIC0gVGhlIHNlbmRlciB3aWxsIHJlY2VpdmUgYW4gQUNLIHdoZW4gdGhlIHBhdGNoIGhhcyBiZWVuIGFjY2VwdGVkIGludG8gdGhlCisgICBxdWV1ZSwgb3IgYSBOQUsgaWYgdGhlIHBhdGNoIGlzIHJlamVjdGVkLiAgVGhpcyByZXNwb25zZSBtaWdodCB0YWtlIGEgZmV3CisgICBkYXlzLCBhY2NvcmRpbmcgdG8gdGhlIGRldmVsb3BlcidzIHNjaGVkdWxlcy4KKyAtIElmIGFjY2VwdGVkLCB0aGUgcGF0Y2ggd2lsbCBiZSBhZGRlZCB0byB0aGUgLXN0YWJsZSBxdWV1ZSwgZm9yIHJldmlldyBieQorICAgb3RoZXIgZGV2ZWxvcGVycyBhbmQgYnkgdGhlIHJlbGV2YW50IHN1YnN5c3RlbSBtYWludGFpbmVyLgorCisKK1JldmlldyBjeWNsZToKKworIC0gV2hlbiB0aGUgLXN0YWJsZSBtYWludGFpbmVycyBkZWNpZGUgZm9yIGEgcmV2aWV3IGN5Y2xlLCB0aGUgcGF0Y2hlcyB3aWxsIGJlCisgICBzZW50IHRvIHRoZSByZXZpZXcgY29tbWl0dGVlLCBhbmQgdGhlIG1haW50YWluZXIgb2YgdGhlIGFmZmVjdGVkIGFyZWEgb2YKKyAgIHRoZSBwYXRjaCAodW5sZXNzIHRoZSBzdWJtaXR0ZXIgaXMgdGhlIG1haW50YWluZXIgb2YgdGhlIGFyZWEpIGFuZCBDQzogdG8KKyAgIHRoZSBsaW51eC1rZXJuZWwgbWFpbGluZyBsaXN0LgorIC0gVGhlIHJldmlldyBjb21taXR0ZWUgaGFzIDQ4IGhvdXJzIGluIHdoaWNoIHRvIEFDSyBvciBOQUsgdGhlIHBhdGNoLgorIC0gSWYgdGhlIHBhdGNoIGlzIHJlamVjdGVkIGJ5IGEgbWVtYmVyIG9mIHRoZSBjb21taXR0ZWUsIG9yIGxpbnV4LWtlcm5lbAorICAgbWVtYmVycyBvYmplY3QgdG8gdGhlIHBhdGNoLCBicmluZ2luZyB1cCBpc3N1ZXMgdGhhdCB0aGUgbWFpbnRhaW5lcnMgYW5kCisgICBtZW1iZXJzIGRpZCBub3QgcmVhbGl6ZSwgdGhlIHBhdGNoIHdpbGwgYmUgZHJvcHBlZCBmcm9tIHRoZSBxdWV1ZS4KKyAtIEF0IHRoZSBlbmQgb2YgdGhlIHJldmlldyBjeWNsZSwgdGhlIEFDS2VkIHBhdGNoZXMgd2lsbCBiZSBhZGRlZCB0byB0aGUKKyAgIGxhdGVzdCAtc3RhYmxlIHJlbGVhc2UsIGFuZCBhIG5ldyAtc3RhYmxlIHJlbGVhc2Ugd2lsbCBoYXBwZW4uCisgLSBTZWN1cml0eSBwYXRjaGVzIHdpbGwgYmUgYWNjZXB0ZWQgaW50byB0aGUgLXN0YWJsZSB0cmVlIGRpcmVjdGx5IGZyb20gdGhlCisgICBzZWN1cml0eSBrZXJuZWwgdGVhbSwgYW5kIG5vdCBnbyB0aHJvdWdoIHRoZSBub3JtYWwgcmV2aWV3IGN5Y2xlLgorICAgQ29udGFjdCB0aGUga2VybmVsIHNlY3VyaXR5IHRlYW0gZm9yIG1vcmUgZGV0YWlscyBvbiB0aGlzIHByb2NlZHVyZS4KKworVHJlZXM6CisKKyAtIFRoZSBxdWV1ZXMgb2YgcGF0Y2hlcywgZm9yIGJvdGggY29tcGxldGVkIHZlcnNpb25zIGFuZCBpbiBwcm9ncmVzcworICAgdmVyc2lvbnMgY2FuIGJlIGZvdW5kIGF0OgorCWh0dHA6Ly9naXQua2VybmVsLm9yZy8/cD1saW51eC9rZXJuZWwvZ2l0L3N0YWJsZS9zdGFibGUtcXVldWUuZ2l0CisgLSBUaGUgZmluYWxpemVkIGFuZCB0YWdnZWQgcmVsZWFzZXMgb2YgYWxsIHN0YWJsZSBrZXJuZWxzIGNhbiBiZSBmb3VuZAorICAgaW4gc2VwYXJhdGUgYnJhbmNoZXMgcGVyIHZlcnNpb24gYXQ6CisJaHR0cDovL2dpdC5rZXJuZWwub3JnLz9wPWxpbnV4L2tlcm5lbC9naXQvc3RhYmxlL2xpbnV4LXN0YWJsZS5naXQKKworCitSZXZpZXcgY29tbWl0dGVlOgorCisgLSBUaGlzIGlzIG1hZGUgdXAgb2YgYSBudW1iZXIgb2Yga2VybmVsIGRldmVsb3BlcnMgd2hvIGhhdmUgdm9sdW50ZWVyZWQgZm9yCisgICB0aGlzIHRhc2ssIGFuZCBhIGZldyB0aGF0IGhhdmVuJ3QuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3N0YXRpYy1rZXlzLnR4dCBiL0RvY3VtZW50YXRpb24vc3RhdGljLWtleXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NzkyN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3N0YXRpYy1rZXlzLnR4dApAQCAtMCwwICsxLDI5MSBAQAorCQkJU3RhdGljIEtleXMKKwkJCS0tLS0tLS0tLS0tCisKK0RFUFJFQ0FURUQgQVBJOgorCitUaGUgdXNlIG9mICdzdHJ1Y3Qgc3RhdGljX2tleScgZGlyZWN0bHksIGlzIG5vdyBERVBSRUNBVEVELiBJbiBhZGRpdGlvbgorc3RhdGljX2tleV97dHJ1ZSxmYWxzZX0oKSBpcyBhbHNvIERFUFJFQ0FURUQuIElFIERPIE5PVCB1c2UgdGhlIGZvbGxvd2luZzoKKworc3RydWN0IHN0YXRpY19rZXkgZmFsc2UgPSBTVEFUSUNfS0VZX0lOSVRfRkFMU0U7CitzdHJ1Y3Qgc3RhdGljX2tleSB0cnVlID0gU1RBVElDX0tFWV9JTklUX1RSVUU7CitzdGF0aWNfa2V5X3RydWUoKQorc3RhdGljX2tleV9mYWxzZSgpCisKK1RoZSB1cGRhdGVkIEFQSSByZXBsYWNlbWVudHMgYXJlOgorCitERUZJTkVfU1RBVElDX0tFWV9UUlVFKGtleSk7CitERUZJTkVfU1RBVElDX0tFWV9GQUxTRShrZXkpOworc3RhdGljX2JyYW5jaF9saWtlbHkoKQorc3RhdGljX2JyYW5jaF91bmxpa2VseSgpCisKKzApIEFic3RyYWN0CisKK1N0YXRpYyBrZXlzIGFsbG93cyB0aGUgaW5jbHVzaW9uIG9mIHNlbGRvbSB1c2VkIGZlYXR1cmVzIGluCitwZXJmb3JtYW5jZS1zZW5zaXRpdmUgZmFzdC1wYXRoIGtlcm5lbCBjb2RlLCB2aWEgYSBHQ0MgZmVhdHVyZSBhbmQgYSBjb2RlCitwYXRjaGluZyB0ZWNobmlxdWUuIEEgcXVpY2sgZXhhbXBsZToKKworCURFRklORV9TVEFUSUNfS0VZX0ZBTFNFKGtleSk7CisKKwkuLi4KKworICAgICAgICBpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseSgma2V5KSkKKyAgICAgICAgICAgICAgICBkbyB1bmxpa2VseSBjb2RlCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkbyBsaWtlbHkgY29kZQorCisJLi4uCisJc3RhdGljX2JyYW5jaF9lbmFibGUoJmtleSk7CisJLi4uCisJc3RhdGljX2JyYW5jaF9kaXNhYmxlKCZrZXkpOworCS4uLgorCitUaGUgc3RhdGljX2JyYW5jaF91bmxpa2VseSgpIGJyYW5jaCB3aWxsIGJlIGdlbmVyYXRlZCBpbnRvIHRoZSBjb2RlIHdpdGggYXMgbGl0dGxlCitpbXBhY3QgdG8gdGhlIGxpa2VseSBjb2RlIHBhdGggYXMgcG9zc2libGUuCisKKworMSkgTW90aXZhdGlvbgorCisKK0N1cnJlbnRseSwgdHJhY2Vwb2ludHMgYXJlIGltcGxlbWVudGVkIHVzaW5nIGEgY29uZGl0aW9uYWwgYnJhbmNoLiBUaGUKK2NvbmRpdGlvbmFsIGNoZWNrIHJlcXVpcmVzIGNoZWNraW5nIGEgZ2xvYmFsIHZhcmlhYmxlIGZvciBlYWNoIHRyYWNlcG9pbnQuCitBbHRob3VnaCB0aGUgb3ZlcmhlYWQgb2YgdGhpcyBjaGVjayBpcyBzbWFsbCwgaXQgaW5jcmVhc2VzIHdoZW4gdGhlIG1lbW9yeQorY2FjaGUgY29tZXMgdW5kZXIgcHJlc3N1cmUgKG1lbW9yeSBjYWNoZSBsaW5lcyBmb3IgdGhlc2UgZ2xvYmFsIHZhcmlhYmxlcyBtYXkKK2JlIHNoYXJlZCB3aXRoIG90aGVyIG1lbW9yeSBhY2Nlc3NlcykuIEFzIHdlIGluY3JlYXNlIHRoZSBudW1iZXIgb2YgdHJhY2Vwb2ludHMKK2luIHRoZSBrZXJuZWwgdGhpcyBvdmVyaGVhZCBtYXkgYmVjb21lIG1vcmUgb2YgYW4gaXNzdWUuIEluIGFkZGl0aW9uLAordHJhY2Vwb2ludHMgYXJlIG9mdGVuIGRvcm1hbnQgKGRpc2FibGVkKSBhbmQgcHJvdmlkZSBubyBkaXJlY3Qga2VybmVsCitmdW5jdGlvbmFsaXR5LiBUaHVzLCBpdCBpcyBoaWdobHkgZGVzaXJhYmxlIHRvIHJlZHVjZSB0aGVpciBpbXBhY3QgYXMgbXVjaCBhcworcG9zc2libGUuIEFsdGhvdWdoIHRyYWNlcG9pbnRzIGFyZSB0aGUgb3JpZ2luYWwgbW90aXZhdGlvbiBmb3IgdGhpcyB3b3JrLCBvdGhlcgora2VybmVsIGNvZGUgcGF0aHMgc2hvdWxkIGJlIGFibGUgdG8gbWFrZSB1c2Ugb2YgdGhlIHN0YXRpYyBrZXlzIGZhY2lsaXR5LgorCisKKzIpIFNvbHV0aW9uCisKKworZ2NjICh2NC41KSBhZGRzIGEgbmV3ICdhc20gZ290bycgc3RhdGVtZW50IHRoYXQgYWxsb3dzIGJyYW5jaGluZyB0byBhIGxhYmVsOgorCitodHRwOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLXBhdGNoZXMvMjAwOS0wNy9tc2cwMTU1Ni5odG1sCisKK1VzaW5nIHRoZSAnYXNtIGdvdG8nLCB3ZSBjYW4gY3JlYXRlIGJyYW5jaGVzIHRoYXQgYXJlIGVpdGhlciB0YWtlbiBvciBub3QgdGFrZW4KK2J5IGRlZmF1bHQsIHdpdGhvdXQgdGhlIG5lZWQgdG8gY2hlY2sgbWVtb3J5LiBUaGVuLCBhdCBydW4tdGltZSwgd2UgY2FuIHBhdGNoCit0aGUgYnJhbmNoIHNpdGUgdG8gY2hhbmdlIHRoZSBicmFuY2ggZGlyZWN0aW9uLgorCitGb3IgZXhhbXBsZSwgaWYgd2UgaGF2ZSBhIHNpbXBsZSBicmFuY2ggdGhhdCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0OgorCisJaWYgKHN0YXRpY19icmFuY2hfdW5saWtlbHkoJmtleSkpCisJCXByaW50aygiSSBhbSB0aGUgdHJ1ZSBicmFuY2hcbiIpOworCitUaHVzLCBieSBkZWZhdWx0IHRoZSAncHJpbnRrJyB3aWxsIG5vdCBiZSBlbWl0dGVkLiBBbmQgdGhlIGNvZGUgZ2VuZXJhdGVkIHdpbGwKK2NvbnNpc3Qgb2YgYSBzaW5nbGUgYXRvbWljICduby1vcCcgaW5zdHJ1Y3Rpb24gKDUgYnl0ZXMgb24geDg2KSwgaW4gdGhlCitzdHJhaWdodC1saW5lIGNvZGUgcGF0aC4gV2hlbiB0aGUgYnJhbmNoIGlzICdmbGlwcGVkJywgd2Ugd2lsbCBwYXRjaCB0aGUKKyduby1vcCcgaW4gdGhlIHN0cmFpZ2h0LWxpbmUgY29kZXBhdGggd2l0aCBhICdqdW1wJyBpbnN0cnVjdGlvbiB0byB0aGUKK291dC1vZi1saW5lIHRydWUgYnJhbmNoLiBUaHVzLCBjaGFuZ2luZyBicmFuY2ggZGlyZWN0aW9uIGlzIGV4cGVuc2l2ZSBidXQKK2JyYW5jaCBzZWxlY3Rpb24gaXMgYmFzaWNhbGx5ICdmcmVlJy4gVGhhdCBpcyB0aGUgYmFzaWMgdHJhZGVvZmYgb2YgdGhpcworb3B0aW1pemF0aW9uLgorCitUaGlzIGxvd2xldmVsIHBhdGNoaW5nIG1lY2hhbmlzbSBpcyBjYWxsZWQgJ2p1bXAgbGFiZWwgcGF0Y2hpbmcnLCBhbmQgaXQgZ2l2ZXMKK3RoZSBiYXNpcyBmb3IgdGhlIHN0YXRpYyBrZXlzIGZhY2lsaXR5LgorCiszKSBTdGF0aWMga2V5IGxhYmVsIEFQSSwgdXNhZ2UgYW5kIGV4YW1wbGVzOgorCisKK0luIG9yZGVyIHRvIG1ha2UgdXNlIG9mIHRoaXMgb3B0aW1pemF0aW9uIHlvdSBtdXN0IGZpcnN0IGRlZmluZSBhIGtleToKKworCURFRklORV9TVEFUSUNfS0VZX1RSVUUoa2V5KTsKKworb3I6CisKKwlERUZJTkVfU1RBVElDX0tFWV9GQUxTRShrZXkpOworCisKK1RoZSBrZXkgbXVzdCBiZSBnbG9iYWwsIHRoYXQgaXMsIGl0IGNhbid0IGJlIGFsbG9jYXRlZCBvbiB0aGUgc3RhY2sgb3IgZHluYW1pY2FsbHkKK2FsbG9jYXRlZCBhdCBydW4tdGltZS4KKworVGhlIGtleSBpcyB0aGVuIHVzZWQgaW4gY29kZSBhczoKKworICAgICAgICBpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseSgma2V5KSkKKyAgICAgICAgICAgICAgICBkbyB1bmxpa2VseSBjb2RlCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkbyBsaWtlbHkgY29kZQorCitPcjoKKworICAgICAgICBpZiAoc3RhdGljX2JyYW5jaF9saWtlbHkoJmtleSkpCisgICAgICAgICAgICAgICAgZG8gbGlrZWx5IGNvZGUKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRvIHVubGlrZWx5IGNvZGUKKworS2V5cyBkZWZpbmVkIHZpYSBERUZJTkVfU1RBVElDX0tFWV9UUlVFKCksIG9yIERFRklORV9TVEFUSUNfS0VZX0ZBTFNFLCBtYXkKK2JlIHVzZWQgaW4gZWl0aGVyIHN0YXRpY19icmFuY2hfbGlrZWx5KCkgb3Igc3RhdGljX2JyYW5jaF91bmxpa2VseSgpCitzdGF0ZW1udHMuCisKK0JyYW5jaChlcykgY2FuIGJlIHNldCB0cnVlIHZpYToKKworc3RhdGljX2JyYW5jaF9lbmFibGUoJmtleSk7CisKK29yIGZhbHNlIHZpYToKKworc3RhdGljX2JyYW5jaF9kaXNhYmxlKCZrZXkpOworCitUaGUgYnJhbmNoKGVzKSBjYW4gdGhlbiBiZSBzd2l0Y2hlZCB2aWEgcmVmZXJlbmNlIGNvdW50czoKKworCXN0YXRpY19icmFuY2hfaW5jKCZrZXkpOworCS4uLgorCXN0YXRpY19icmFuY2hfZGVjKCZrZXkpOworCitUaHVzLCAnc3RhdGljX2JyYW5jaF9pbmMoKScgbWVhbnMgJ21ha2UgdGhlIGJyYW5jaCB0cnVlJywgYW5kCisnc3RhdGljX2JyYW5jaF9kZWMoKScgbWVhbnMgJ21ha2UgdGhlIGJyYW5jaCBmYWxzZScgd2l0aCBhcHByb3ByaWF0ZQorcmVmZXJlbmNlIGNvdW50aW5nLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGtleSBpcyBpbml0aWFsaXplZCB0cnVlLCBhCitzdGF0aWNfYnJhbmNoX2RlYygpLCB3aWxsIHN3aXRjaCB0aGUgYnJhbmNoIHRvIGZhbHNlLiBBbmQgYSBzdWJzZXF1ZW50CitzdGF0aWNfYnJhbmNoX2luYygpLCB3aWxsIGNoYW5nZSB0aGUgYnJhbmNoIGJhY2sgdG8gdHJ1ZS4gTGlrZXdpc2UsIGlmIHRoZQora2V5IGlzIGluaXRpYWxpemVkIGZhbHNlLCBhICdzdGF0aWNfYnJhbmNoX2luYygpJywgd2lsbCBjaGFuZ2UgdGhlIGJyYW5jaCB0bwordHJ1ZS4gQW5kIHRoZW4gYSAnc3RhdGljX2JyYW5jaF9kZWMoKScsIHdpbGwgYWdhaW4gbWFrZSB0aGUgYnJhbmNoIGZhbHNlLgorCisKKzQpIEFyY2hpdGVjdHVyZSBsZXZlbCBjb2RlIHBhdGNoaW5nIGludGVyZmFjZSwgJ2p1bXAgbGFiZWxzJworCisKK1RoZXJlIGFyZSBhIGZldyBmdW5jdGlvbnMgYW5kIG1hY3JvcyB0aGF0IGFyY2hpdGVjdHVyZXMgbXVzdCBpbXBsZW1lbnQgaW4gb3JkZXIKK3RvIHRha2UgYWR2YW50YWdlIG9mIHRoaXMgb3B0aW1pemF0aW9uLiBJZiB0aGVyZSBpcyBubyBhcmNoaXRlY3R1cmUgc3VwcG9ydCwgd2UKK3NpbXBseSBmYWxsIGJhY2sgdG8gYSB0cmFkaXRpb25hbCwgbG9hZCwgdGVzdCwgYW5kIGp1bXAgc2VxdWVuY2UuCisKKyogc2VsZWN0IEhBVkVfQVJDSF9KVU1QX0xBQkVMLCBzZWU6IGFyY2gveDg2L0tjb25maWcKKworKiAjZGVmaW5lIEpVTVBfTEFCRUxfTk9QX1NJWkUsIHNlZTogYXJjaC94ODYvaW5jbHVkZS9hc20vanVtcF9sYWJlbC5oCisKKyogX19hbHdheXNfaW5saW5lIGJvb2wgYXJjaF9zdGF0aWNfYnJhbmNoKHN0cnVjdCBzdGF0aWNfa2V5ICprZXksIGJvb2wgYnJhbmNoKSwgc2VlOgorCQkJCQlhcmNoL3g4Ni9pbmNsdWRlL2FzbS9qdW1wX2xhYmVsLmgKKworKiBfX2Fsd2F5c19pbmxpbmUgYm9vbCBhcmNoX3N0YXRpY19icmFuY2hfanVtcChzdHJ1Y3Qgc3RhdGljX2tleSAqa2V5LCBib29sIGJyYW5jaCksCisJCQkJCXNlZTogYXJjaC94ODYvaW5jbHVkZS9hc20vanVtcF9sYWJlbC5oCisKKyogdm9pZCBhcmNoX2p1bXBfbGFiZWxfdHJhbnNmb3JtKHN0cnVjdCBqdW1wX2VudHJ5ICplbnRyeSwgZW51bSBqdW1wX2xhYmVsX3R5cGUgdHlwZSksCisJCQkJCXNlZTogYXJjaC94ODYva2VybmVsL2p1bXBfbGFiZWwuYworCisqIF9faW5pdF9vcl9tb2R1bGUgdm9pZCBhcmNoX2p1bXBfbGFiZWxfdHJhbnNmb3JtX3N0YXRpYyhzdHJ1Y3QganVtcF9lbnRyeSAqZW50cnksIGVudW0ganVtcF9sYWJlbF90eXBlIHR5cGUpLAorCQkJCQlzZWU6IGFyY2gveDg2L2tlcm5lbC9qdW1wX2xhYmVsLmMKKworCisqIHN0cnVjdCBqdW1wX2VudHJ5LCBzZWU6IGFyY2gveDg2L2luY2x1ZGUvYXNtL2p1bXBfbGFiZWwuaAorCisKKzUpIFN0YXRpYyBrZXlzIC8ganVtcCBsYWJlbCBhbmFseXNpcywgcmVzdWx0cyAoeDg2XzY0KToKKworCitBcyBhbiBleGFtcGxlLCBsZXQncyBhZGQgdGhlIGZvbGxvd2luZyBicmFuY2ggdG8gJ2dldHBwaWQoKScsIHN1Y2ggdGhhdCB0aGUKK3N5c3RlbSBjYWxsIG5vdyBsb29rcyBsaWtlOgorCitTWVNDQUxMX0RFRklORTAoZ2V0cHBpZCkKK3sKKyAgICAgICAgaW50IHBpZDsKKworKyAgICAgICBpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseSgma2V5KSkKKysgICAgICAgICAgICAgICBwcmludGsoIkkgYW0gdGhlIHRydWUgYnJhbmNoXG4iKTsKKworICAgICAgICByY3VfcmVhZF9sb2NrKCk7CisgICAgICAgIHBpZCA9IHRhc2tfdGdpZF92bnIocmN1X2RlcmVmZXJlbmNlKGN1cnJlbnQtPnJlYWxfcGFyZW50KSk7CisgICAgICAgIHJjdV9yZWFkX3VubG9jaygpOworCisgICAgICAgIHJldHVybiBwaWQ7Cit9CisKK1RoZSByZXN1bHRpbmcgaW5zdHJ1Y3Rpb25zIHdpdGgganVtcCBsYWJlbHMgZ2VuZXJhdGVkIGJ5IEdDQyBpczoKKworZmZmZmZmZmY4MTA0NDI5MCA8c3lzX2dldHBwaWQ+OgorZmZmZmZmZmY4MTA0NDI5MDogICAgICAgNTUgICAgICAgICAgICAgICAgICAgICAgcHVzaCAgICVyYnAKK2ZmZmZmZmZmODEwNDQyOTE6ICAgICAgIDQ4IDg5IGU1ICAgICAgICAgICAgICAgIG1vdiAgICAlcnNwLCVyYnAKK2ZmZmZmZmZmODEwNDQyOTQ6ICAgICAgIGU5IDAwIDAwIDAwIDAwICAgICAgICAgIGptcHEgICBmZmZmZmZmZjgxMDQ0Mjk5IDxzeXNfZ2V0cHBpZCsweDk+CitmZmZmZmZmZjgxMDQ0Mjk5OiAgICAgICA2NSA0OCA4YiAwNCAyNSBjMCBiNiAgICBtb3YgICAgJWdzOjB4YjZjMCwlcmF4CitmZmZmZmZmZjgxMDQ0MmEwOiAgICAgICAwMCAwMAorZmZmZmZmZmY4MTA0NDJhMjogICAgICAgNDggOGIgODAgODAgMDIgMDAgMDAgICAgbW92ICAgIDB4MjgwKCVyYXgpLCVyYXgKK2ZmZmZmZmZmODEwNDQyYTk6ICAgICAgIDQ4IDhiIDgwIGIwIDAyIDAwIDAwICAgIG1vdiAgICAweDJiMCglcmF4KSwlcmF4CitmZmZmZmZmZjgxMDQ0MmIwOiAgICAgICA0OCA4YiBiOCBlOCAwMiAwMCAwMCAgICBtb3YgICAgMHgyZTgoJXJheCksJXJkaQorZmZmZmZmZmY4MTA0NDJiNzogICAgICAgZTggZjQgZDkgMDAgMDAgICAgICAgICAgY2FsbHEgIGZmZmZmZmZmODEwNTFjYjAgPHBpZF92bnI+CitmZmZmZmZmZjgxMDQ0MmJjOiAgICAgICA1ZCAgICAgICAgICAgICAgICAgICAgICBwb3AgICAgJXJicAorZmZmZmZmZmY4MTA0NDJiZDogICAgICAgNDggOTggICAgICAgICAgICAgICAgICAgY2x0cQorZmZmZmZmZmY4MTA0NDJiZjogICAgICAgYzMgICAgICAgICAgICAgICAgICAgICAgcmV0cQorZmZmZmZmZmY4MTA0NDJjMDogICAgICAgNDggYzcgYzcgZTMgNTQgOTggODEgICAgbW92ICAgICQweGZmZmZmZmZmODE5ODU0ZTMsJXJkaQorZmZmZmZmZmY4MTA0NDJjNzogICAgICAgMzEgYzAgICAgICAgICAgICAgICAgICAgeG9yICAgICVlYXgsJWVheAorZmZmZmZmZmY4MTA0NDJjOTogICAgICAgZTggNzEgMTMgNmQgMDAgICAgICAgICAgY2FsbHEgIGZmZmZmZmZmODE3MTU2M2YgPHByaW50az4KK2ZmZmZmZmZmODEwNDQyY2U6ICAgICAgIGViIGM5ICAgICAgICAgICAgICAgICAgIGptcCAgICBmZmZmZmZmZjgxMDQ0Mjk5IDxzeXNfZ2V0cHBpZCsweDk+CisKK1dpdGhvdXQgdGhlIGp1bXAgbGFiZWwgb3B0aW1pemF0aW9uIGl0IGxvb2tzIGxpa2U6CisKK2ZmZmZmZmZmODEwNDQxZjAgPHN5c19nZXRwcGlkPjoKK2ZmZmZmZmZmODEwNDQxZjA6ICAgICAgIDhiIDA1IDhhIDUyIGQ4IDAwICAgICAgIG1vdiAgICAweGQ4NTI4YSglcmlwKSwlZWF4ICAgICAgICAjIGZmZmZmZmZmODFkYzk0ODAgPGtleT4KK2ZmZmZmZmZmODEwNDQxZjY6ICAgICAgIDU1ICAgICAgICAgICAgICAgICAgICAgIHB1c2ggICAlcmJwCitmZmZmZmZmZjgxMDQ0MWY3OiAgICAgICA0OCA4OSBlNSAgICAgICAgICAgICAgICBtb3YgICAgJXJzcCwlcmJwCitmZmZmZmZmZjgxMDQ0MWZhOiAgICAgICA4NSBjMCAgICAgICAgICAgICAgICAgICB0ZXN0ICAgJWVheCwlZWF4CitmZmZmZmZmZjgxMDQ0MWZjOiAgICAgICA3NSAyNyAgICAgICAgICAgICAgICAgICBqbmUgICAgZmZmZmZmZmY4MTA0NDIyNSA8c3lzX2dldHBwaWQrMHgzNT4KK2ZmZmZmZmZmODEwNDQxZmU6ICAgICAgIDY1IDQ4IDhiIDA0IDI1IGMwIGI2ICAgIG1vdiAgICAlZ3M6MHhiNmMwLCVyYXgKK2ZmZmZmZmZmODEwNDQyMDU6ICAgICAgIDAwIDAwCitmZmZmZmZmZjgxMDQ0MjA3OiAgICAgICA0OCA4YiA4MCA4MCAwMiAwMCAwMCAgICBtb3YgICAgMHgyODAoJXJheCksJXJheAorZmZmZmZmZmY4MTA0NDIwZTogICAgICAgNDggOGIgODAgYjAgMDIgMDAgMDAgICAgbW92ICAgIDB4MmIwKCVyYXgpLCVyYXgKK2ZmZmZmZmZmODEwNDQyMTU6ICAgICAgIDQ4IDhiIGI4IGU4IDAyIDAwIDAwICAgIG1vdiAgICAweDJlOCglcmF4KSwlcmRpCitmZmZmZmZmZjgxMDQ0MjFjOiAgICAgICBlOCAyZiBkYSAwMCAwMCAgICAgICAgICBjYWxscSAgZmZmZmZmZmY4MTA1MWM1MCA8cGlkX3Zucj4KK2ZmZmZmZmZmODEwNDQyMjE6ICAgICAgIDVkICAgICAgICAgICAgICAgICAgICAgIHBvcCAgICAlcmJwCitmZmZmZmZmZjgxMDQ0MjIyOiAgICAgICA0OCA5OCAgICAgICAgICAgICAgICAgICBjbHRxCitmZmZmZmZmZjgxMDQ0MjI0OiAgICAgICBjMyAgICAgICAgICAgICAgICAgICAgICByZXRxCitmZmZmZmZmZjgxMDQ0MjI1OiAgICAgICA0OCBjNyBjNyAxMyA1MyA5OCA4MSAgICBtb3YgICAgJDB4ZmZmZmZmZmY4MTk4NTMxMywlcmRpCitmZmZmZmZmZjgxMDQ0MjJjOiAgICAgICAzMSBjMCAgICAgICAgICAgICAgICAgICB4b3IgICAgJWVheCwlZWF4CitmZmZmZmZmZjgxMDQ0MjJlOiAgICAgICBlOCA2MCAwZiA2ZCAwMCAgICAgICAgICBjYWxscSAgZmZmZmZmZmY4MTcxNTE5MyA8cHJpbnRrPgorZmZmZmZmZmY4MTA0NDIzMzogICAgICAgZWIgYzkgICAgICAgICAgICAgICAgICAgam1wICAgIGZmZmZmZmZmODEwNDQxZmUgPHN5c19nZXRwcGlkKzB4ZT4KK2ZmZmZmZmZmODEwNDQyMzU6ICAgICAgIDY2IDY2IDJlIDBmIDFmIDg0IDAwICAgIGRhdGEzMiBub3B3ICVjczoweDAoJXJheCwlcmF4LDEpCitmZmZmZmZmZjgxMDQ0MjNjOiAgICAgICAwMCAwMCAwMCAwMAorCitUaHVzLCB0aGUgZGlzYWJsZSBqdW1wIGxhYmVsIGNhc2UgYWRkcyBhICdtb3YnLCAndGVzdCcgYW5kICdqbmUnIGluc3RydWN0aW9uCit2cy4gdGhlIGp1bXAgbGFiZWwgY2FzZSBqdXN0IGhhcyBhICduby1vcCcgb3IgJ2ptcCAwJy4gKFRoZSBqbXAgMCwgaXMgcGF0Y2hlZAordG8gYSA1IGJ5dGUgYXRvbWljIG5vLW9wIGluc3RydWN0aW9uIGF0IGJvb3QtdGltZS4pIFRodXMsIHRoZSBkaXNhYmxlZCBqdW1wCitsYWJlbCBjYXNlIGFkZHM6CisKKzYgKG1vdikgKyAyICh0ZXN0KSArIDIgKGpuZSkgPSAxMCAtIDUgKDUgYnl0ZSBqdW1wIDApID0gNSBhZGRpdGlvbiBieXRlcy4KKworSWYgd2UgdGhlbiBpbmNsdWRlIHRoZSBwYWRkaW5nIGJ5dGVzLCB0aGUganVtcCBsYWJlbCBjb2RlIHNhdmVzLCAxNiB0b3RhbCBieXRlcworb2YgaW5zdHJ1Y3Rpb24gbWVtb3J5IGZvciB0aGlzIHNtYWxsIGZ1bmN0aW9uLiBJbiB0aGlzIGNhc2UgdGhlIG5vbi1qdW1wIGxhYmVsCitmdW5jdGlvbiBpcyA4MCBieXRlcyBsb25nLiBUaHVzLCB3ZSBoYXZlIHNhdmVkIDIwJSBvZiB0aGUgaW5zdHJ1Y3Rpb24KK2Zvb3RwcmludC4gV2UgY2FuIGluIGZhY3QgaW1wcm92ZSB0aGlzIGV2ZW4gZnVydGhlciwgc2luY2UgdGhlIDUtYnl0ZSBuby1vcAorcmVhbGx5IGNhbiBiZSBhIDItYnl0ZSBuby1vcCBzaW5jZSB3ZSBjYW4gcmVhY2ggdGhlIGJyYW5jaCB3aXRoIGEgMi1ieXRlIGptcC4KK0hvd2V2ZXIsIHdlIGhhdmUgbm90IHlldCBpbXBsZW1lbnRlZCBvcHRpbWFsIG5vLW9wIHNpemVzICh0aGV5IGFyZSBjdXJyZW50bHkKK2hhcmQtY29kZWQpLgorCitTaW5jZSB0aGVyZSBhcmUgYSBudW1iZXIgb2Ygc3RhdGljIGtleSBBUEkgdXNlcyBpbiB0aGUgc2NoZWR1bGVyIHBhdGhzLAorJ3BpcGUtdGVzdCcgKGFsc28ga25vd24gYXMgJ3BlcmYgYmVuY2ggc2NoZWQgcGlwZScpIGNhbiBiZSB1c2VkIHRvIHNob3cgdGhlCitwZXJmb3JtYW5jZSBpbXByb3ZlbWVudC4gVGVzdGluZyBkb25lIG9uIDMuMy4wLXJjMjoKKworanVtcCBsYWJlbCBkaXNhYmxlZDoKKworIFBlcmZvcm1hbmNlIGNvdW50ZXIgc3RhdHMgZm9yICdiYXNoIC1jIC90bXAvcGlwZS10ZXN0JyAoNTAgcnVucyk6CisKKyAgICAgICAgODU1LjcwMDMxNCB0YXNrLWNsb2NrICAgICAgICAgICAgICAgICMgICAgMC41MzQgQ1BVcyB1dGlsaXplZCAgICAgICAgICAgICggKy0gIDAuMTElICkKKyAgICAgICAgICAgMjAwLDAwMyBjb250ZXh0LXN3aXRjaGVzICAgICAgICAgICMgICAgMC4yMzQgTS9zZWMgICAgICAgICAgICAgICAgICAgICggKy0gIDAuMDAlICkKKyAgICAgICAgICAgICAgICAgMCBDUFUtbWlncmF0aW9ucyAgICAgICAgICAgICMgICAgMC4wMDAgTS9zZWMgICAgICAgICAgICAgICAgICAgICggKy0gMzkuNTglICkKKyAgICAgICAgICAgICAgIDQ4NyBwYWdlLWZhdWx0cyAgICAgICAgICAgICAgICMgICAgMC4wMDEgTS9zZWMgICAgICAgICAgICAgICAgICAgICggKy0gIDAuMDIlICkKKyAgICAgMSw0NzQsMzc0LDI2MiBjeWNsZXMgICAgICAgICAgICAgICAgICAgICMgICAgMS43MjMgR0h6ICAgICAgICAgICAgICAgICAgICAgICggKy0gIDAuMTclICkKKyAgIDxub3Qgc3VwcG9ydGVkPiBzdGFsbGVkLWN5Y2xlcy1mcm9udGVuZAorICAgPG5vdCBzdXBwb3J0ZWQ+IHN0YWxsZWQtY3ljbGVzLWJhY2tlbmQKKyAgICAgMSwxNzgsMDQ5LDU2NyBpbnN0cnVjdGlvbnMgICAgICAgICAgICAgICMgICAgMC44MCAgaW5zbnMgcGVyIGN5Y2xlICAgICAgICAgICggKy0gIDAuMDYlICkKKyAgICAgICAyMDgsMzY4LDkyNiBicmFuY2hlcyAgICAgICAgICAgICAgICAgICMgIDI0My41MDcgTS9zZWMgICAgICAgICAgICAgICAgICAgICggKy0gIDAuMDYlICkKKyAgICAgICAgIDUsNTY5LDE4OCBicmFuY2gtbWlzc2VzICAgICAgICAgICAgICMgICAgMi42NyUgb2YgYWxsIGJyYW5jaGVzICAgICAgICAgICggKy0gIDAuNTQlICkKKworICAgICAgIDEuNjAxNjA3Mzg0IHNlY29uZHMgdGltZSBlbGFwc2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCArLSAgMC4wNyUgKQorCitqdW1wIGxhYmVsIGVuYWJsZWQ6CisKKyBQZXJmb3JtYW5jZSBjb3VudGVyIHN0YXRzIGZvciAnYmFzaCAtYyAvdG1wL3BpcGUtdGVzdCcgKDUwIHJ1bnMpOgorCisgICAgICAgIDg0MS4wNDMxODUgdGFzay1jbG9jayAgICAgICAgICAgICAgICAjICAgIDAuNTMzIENQVXMgdXRpbGl6ZWQgICAgICAgICAgICAoICstICAwLjEyJSApCisgICAgICAgICAgIDIwMCwwMDQgY29udGV4dC1zd2l0Y2hlcyAgICAgICAgICAjICAgIDAuMjM4IE0vc2VjICAgICAgICAgICAgICAgICAgICAoICstICAwLjAwJSApCisgICAgICAgICAgICAgICAgIDAgQ1BVLW1pZ3JhdGlvbnMgICAgICAgICAgICAjICAgIDAuMDAwIE0vc2VjICAgICAgICAgICAgICAgICAgICAoICstIDQwLjg3JSApCisgICAgICAgICAgICAgICA0ODcgcGFnZS1mYXVsdHMgICAgICAgICAgICAgICAjICAgIDAuMDAxIE0vc2VjICAgICAgICAgICAgICAgICAgICAoICstICAwLjA1JSApCisgICAgIDEsNDMyLDU1OSw0MjggY3ljbGVzICAgICAgICAgICAgICAgICAgICAjICAgIDEuNzAzIEdIeiAgICAgICAgICAgICAgICAgICAgICAoICstICAwLjE4JSApCisgICA8bm90IHN1cHBvcnRlZD4gc3RhbGxlZC1jeWNsZXMtZnJvbnRlbmQKKyAgIDxub3Qgc3VwcG9ydGVkPiBzdGFsbGVkLWN5Y2xlcy1iYWNrZW5kCisgICAgIDEsMTc1LDM2Myw5OTQgaW5zdHJ1Y3Rpb25zICAgICAgICAgICAgICAjICAgIDAuODIgIGluc25zIHBlciBjeWNsZSAgICAgICAgICAoICstICAwLjA0JSApCisgICAgICAgMjA2LDg1OSwzNTkgYnJhbmNoZXMgICAgICAgICAgICAgICAgICAjICAyNDUuOTU2IE0vc2VjICAgICAgICAgICAgICAgICAgICAoICstICAwLjA0JSApCisgICAgICAgICA0LDg4NCwxMTkgYnJhbmNoLW1pc3NlcyAgICAgICAgICAgICAjICAgIDIuMzYlIG9mIGFsbCBicmFuY2hlcyAgICAgICAgICAoICstICAwLjg1JSApCisKKyAgICAgICAxLjU3OTM4NDM2NiBzZWNvbmRzIHRpbWUgZWxhcHNlZAorCitUaGUgcGVyY2VudGFnZSBvZiBzYXZlZCBicmFuY2hlcyBpcyAuNyUsIGFuZCB3ZSd2ZSBzYXZlZCAxMiUgb24KKydicmFuY2gtbWlzc2VzJy4gVGhpcyBpcyB3aGVyZSB3ZSB3b3VsZCBleHBlY3QgdG8gZ2V0IHRoZSBtb3N0IHNhdmluZ3MsIHNpbmNlCit0aGlzIG9wdGltaXphdGlvbiBpcyBhYm91dCByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGJyYW5jaGVzLiBJbiBhZGRpdGlvbiwgd2UndmUKK3NhdmVkIC4yJSBvbiBpbnN0cnVjdGlvbnMsIGFuZCAyLjglIG9uIGN5Y2xlcyBhbmQgMS40JSBvbiBlbGFwc2VkIHRpbWUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3N2Z2EudHh0IGIvRG9jdW1lbnRhdGlvbi9zdmdhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDY2ZWM4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zdmdhLnR4dApAQCAtMCwwICsxLDI3NiBAQAorCQkgICAgICAgVmlkZW8gTW9kZSBTZWxlY3Rpb24gU3VwcG9ydCAyLjEzCisJCSAgICAoYykgMTk5NS0tMTk5OSBNYXJ0aW4gTWFyZXMsIDxtakB1Y3cuY3o+CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisxLiBJbnRybworfn5+fn5+fn4KKyAgIFRoaXMgc21hbGwgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSAiVmlkZW8gTW9kZSBTZWxlY3Rpb24iIGZlYXR1cmUgd2hpY2gKK2FsbG93cyB0aGUgdXNlIG9mIHZhcmlvdXMgc3BlY2lhbCB2aWRlbyBtb2RlcyBzdXBwb3J0ZWQgYnkgdGhlIHZpZGVvIEJJT1MuIER1ZQordG8gdXNhZ2Ugb2YgdGhlIEJJT1MsIHRoZSBzZWxlY3Rpb24gaXMgbGltaXRlZCB0byBib290IHRpbWUgKGJlZm9yZSB0aGUKK2tlcm5lbCBkZWNvbXByZXNzaW9uIHN0YXJ0cykgYW5kIHdvcmtzIG9ubHkgb24gODBYODYgbWFjaGluZXMuCisKKyAgICoqICBTaG9ydCBpbnRybyBmb3IgdGhlIGltcGF0aWVudDogSnVzdCB1c2UgdmdhPWFzayBmb3IgdGhlIGZpcnN0IHRpbWUsCisgICAqKiAgZW50ZXIgYHNjYW4nIG9uIHRoZSB2aWRlbyBtb2RlIHByb21wdCwgcGljayB0aGUgbW9kZSB5b3Ugd2FudCB0byB1c2UsCisgICAqKiAgcmVtZW1iZXIgaXRzIG1vZGUgSUQgKHRoZSBmb3VyLWRpZ2l0IGhleGFkZWNpbWFsIG51bWJlcikgYW5kIHRoZW4KKyAgICoqICBzZXQgdGhlIHZnYSBwYXJhbWV0ZXIgdG8gdGhpcyBudW1iZXIgKGNvbnZlcnRlZCB0byBkZWNpbWFsIGZpcnN0KS4KKworICAgVGhlIHZpZGVvIG1vZGUgdG8gYmUgdXNlZCBpcyBzZWxlY3RlZCBieSBhIGtlcm5lbCBwYXJhbWV0ZXIgd2hpY2ggY2FuIGJlCitzcGVjaWZpZWQgaW4gdGhlIGtlcm5lbCBNYWtlZmlsZSAodGhlIFNWR0FfTU9ERT0uLi4gbGluZSkgb3IgYnkgdGhlICJ2Z2E9Li4uIgorb3B0aW9uIG9mIExJTE8gKG9yIHNvbWUgb3RoZXIgYm9vdCBsb2FkZXIgeW91IHVzZSkgb3IgYnkgdGhlICJ2aWRtb2RlIiB1dGlsaXR5CisocHJlc2VudCBpbiBzdGFuZGFyZCBMaW51eCB1dGlsaXR5IHBhY2thZ2VzKS4gWW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyB2YWx1ZXMKK29mIHRoaXMgcGFyYW1ldGVyOgorCisgICBOT1JNQUxfVkdBIC0gU3RhbmRhcmQgODB4MjUgbW9kZSBhdmFpbGFibGUgb24gYWxsIGRpc3BsYXkgYWRhcHRlcnMuCisKKyAgIEVYVEVOREVEX1ZHQQktIFN0YW5kYXJkIDgtcGl4ZWwgZm9udCBtb2RlOiA4MHg0MyBvbiBFR0EsIDgweDUwIG9uIFZHQS4KKworICAgQVNLX1ZHQSAtIERpc3BsYXkgYSB2aWRlbyBtb2RlIG1lbnUgdXBvbiBzdGFydHVwIChzZWUgYmVsb3cpLgorCisgICAwLi4zNSAtIE1lbnUgaXRlbSBudW1iZXIgKHdoZW4geW91IGhhdmUgdXNlZCB0aGUgbWVudSB0byB2aWV3IHRoZSBsaXN0IG9mCisgICAgICBtb2RlcyBhdmFpbGFibGUgb24geW91ciBhZGFwdGVyLCB5b3UgY2FuIHNwZWNpZnkgdGhlIG1lbnUgaXRlbSB5b3Ugd2FudAorICAgICAgdG8gdXNlKS4gMC4uOSBjb3JyZXNwb25kIHRvICIwIi4uIjkiLCAxMC4uMzUgdG8gImEiLi4ieiIuIFdhcm5pbmc6IHRoZQorICAgICAgbW9kZSBsaXN0IGRpc3BsYXllZCBtYXkgdmFyeSBhcyB0aGUga2VybmVsIHZlcnNpb24gY2hhbmdlcywgYmVjYXVzZSB0aGUKKyAgICAgIG1vZGVzIGFyZSBsaXN0ZWQgaW4gYSAiZmlyc3QgZGV0ZWN0ZWQgLS0gZmlyc3QgZGlzcGxheWVkIiBtYW5uZXIuIEl0J3MKKyAgICAgIGJldHRlciB0byB1c2UgYWJzb2x1dGUgbW9kZSBudW1iZXJzIGluc3RlYWQuCisKKyAgIDB4Li4uLiAtIEhleGFkZWNpbWFsIHZpZGVvIG1vZGUgSUQgKGFsc28gZGlzcGxheWVkIG9uIHRoZSBtZW51LCBzZWUgYmVsb3cKKyAgICAgIGZvciBleGFjdCBtZWFuaW5nIG9mIHRoZSBJRCkuIFdhcm5pbmc6IHJkZXYgYW5kIExJTE8gZG9uJ3Qgc3VwcG9ydAorICAgICAgaGV4YWRlY2ltYWwgbnVtYmVycyAtLSB5b3UgaGF2ZSB0byBjb252ZXJ0IGl0IHRvIGRlY2ltYWwgbWFudWFsbHkuCisKKzIuIE1lbnUKK35+fn5+fn4KKyAgIFRoZSBBU0tfVkdBIG1vZGUgY2F1c2VzIHRoZSBrZXJuZWwgdG8gb2ZmZXIgYSB2aWRlbyBtb2RlIG1lbnUgdXBvbgorYm9vdHVwLiBJdCBkaXNwbGF5cyBhICJQcmVzcyA8UkVUVVJOPiB0byBzZWUgdmlkZW8gbW9kZXMgYXZhaWxhYmxlLCA8U1BBQ0U+Cit0byBjb250aW51ZSBvciB3YWl0IDMwIHNlY3MiIG1lc3NhZ2UuIElmIHlvdSBwcmVzcyA8UkVUVVJOPiwgeW91IGVudGVyIHRoZQorbWVudSwgaWYgeW91IHByZXNzIDxTUEFDRT4gb3Igd2FpdCAzMCBzZWNvbmRzLCB0aGUga2VybmVsIHdpbGwgYm9vdCB1cCBpbgordGhlIHN0YW5kYXJkIDgweDI1IG1vZGUuCisKKyAgIFRoZSBtZW51IGxvb2tzIGxpa2U6CisKK1ZpZGVvIGFkYXB0ZXI6IDxuYW1lLW9mLWRldGVjdGVkLXZpZGVvLWFkYXB0ZXI+CitNb2RlOiAgICBDT0xTeFJPV1M6CiswICAwRjAwICA4MHgyNQorMSAgMEYwMSAgODB4NTAKKzIgIDBGMDIgIDgweDQzCiszICAwRjAzICA4MHgyNgorLi4uLgorRW50ZXIgbW9kZSBudW1iZXIgb3IgYHNjYW4nOiA8Zmxhc2hpbmctY3Vyc29yLWhlcmU+CisKKyAgIDxuYW1lLW9mLWRldGVjdGVkLXZpZGVvLWFkYXB0ZXI+IHRlbGxzIHdoYXQgdmlkZW8gYWRhcHRlciBkaWQgTGludXggZGV0ZWN0CistLSBpdCdzIGVpdGhlciBhIGdlbmVyaWMgYWRhcHRlciBuYW1lIChNREEsIENHQSwgSEdDLCBFR0EsIFZHQSwgVkVTQSBWR0EgW2EgVkdBCit3aXRoIFZFU0EtY29tcGxpYW50IEJJT1NdKSBvciBhIGNoaXBzZXQgbmFtZSAoZS5nLiwgVHJpZGVudCkuIERpcmVjdCBkZXRlY3Rpb24KK29mIGNoaXBzZXRzIGlzIHR1cm5lZCBvZmYgYnkgZGVmYXVsdCAoc2VlIENPTkZJR19WSURFT19TVkdBIGluIGNoYXB0ZXIgNCB0byBzZWUKK2hvdyB0byBlbmFibGUgaXQgaWYgeW91IHJlYWxseSB3YW50KSBhcyBpdCdzIGluaGVyZW50bHkgdW5yZWxpYWJsZSBkdWUgdG8KK2Fic29sdXRlbHkgaW5zYW5lIFBDIGRlc2lnbi4KKworICAgIjAgIDBGMDAgIDgweDI1IiBtZWFucyB0aGF0IHRoZSBmaXJzdCBtZW51IGl0ZW0gKHRoZSBtZW51IGl0ZW1zIGFyZSBudW1iZXJlZAorZnJvbSAiMCIgdG8gIjkiIGFuZCBmcm9tICJhIiB0byAieiIpIGlzIGEgODB4MjUgbW9kZSB3aXRoIElEPTB4MGYwMCAoc2VlIHRoZQorbmV4dCBzZWN0aW9uIGZvciBhIGRlc2NyaXB0aW9uIG9mIG1vZGUgSURzKS4KKworICAgPGZsYXNoaW5nLWN1cnNvci1oZXJlPiBlbmNvdXJhZ2VzIHlvdSB0byBlbnRlciB0aGUgaXRlbSBudW1iZXIgb3IgbW9kZSBJRAoreW91IHdpc2ggdG8gc2V0IGFuZCBwcmVzcyA8UkVUVVJOPi4gSWYgdGhlIGNvbXB1dGVyIGNvbXBsYWlucyBzb21ldGhpbmcgYWJvdXQKKyJVbmtub3duIG1vZGUgSUQiLCBpdCBpcyB0cnlpbmcgdG8gdGVsbCB5b3UgdGhhdCBpdCBpc24ndCBwb3NzaWJsZSB0byBzZXQgc3VjaAorYSBtb2RlLiBJdCdzIGFsc28gcG9zc2libGUgdG8gcHJlc3Mgb25seSA8UkVUVVJOPiB3aGljaCBsZWF2ZXMgdGhlIGN1cnJlbnQgbW9kZS4KKworICAgVGhlIG1vZGUgbGlzdCB1c3VhbGx5IGNvbnRhaW5zIGEgZmV3IGJhc2ljIG1vZGVzIGFuZCBzb21lIFZFU0EgbW9kZXMuICBJbgorY2FzZSB5b3VyIGNoaXBzZXQgaGFzIGJlZW4gZGV0ZWN0ZWQsIHNvbWUgY2hpcHNldC1zcGVjaWZpYyBtb2RlcyBhcmUgc2hvd24gYXMKK3dlbGwgKHNvbWUgb2YgdGhlc2UgbWlnaHQgYmUgbWlzc2luZyBvciB1bnVzYWJsZSBvbiB5b3VyIG1hY2hpbmUgYXMgZGlmZmVyZW50CitCSU9TZXMgYXJlIG9mdGVuIHNoaXBwZWQgd2l0aCB0aGUgc2FtZSBjYXJkIGFuZCB0aGUgbW9kZSBudW1iZXJzIGRlcGVuZCBwdXJlbHkKK29uIHRoZSBWR0EgQklPUykuCisKKyAgIFRoZSBtb2RlcyBkaXNwbGF5ZWQgb24gdGhlIG1lbnUgYXJlIHBhcnRpYWxseSBzb3J0ZWQ6IFRoZSBsaXN0IHN0YXJ0cyB3aXRoCit0aGUgc3RhbmRhcmQgbW9kZXMgKDgweDI1IGFuZCA4MHg1MCkgZm9sbG93ZWQgYnkgInNwZWNpYWwiIG1vZGVzICg4MHgyOCBhbmQKKzgweDQzKSwgbG9jYWwgbW9kZXMgKGlmIHRoZSBsb2NhbCBtb2RlcyBmZWF0dXJlIGlzIGVuYWJsZWQpLCBWRVNBIG1vZGVzIGFuZAorZmluYWxseSBTVkdBIG1vZGVzIGZvciB0aGUgYXV0by1kZXRlY3RlZCBhZGFwdGVyLgorCisgICBJZiB5b3UgYXJlIG5vdCBoYXBweSB3aXRoIHRoZSBtb2RlIGxpc3Qgb2ZmZXJlZCAoZS5nLiwgaWYgeW91IHRoaW5rIHlvdXIgY2FyZAoraXMgYWJsZSB0byBkbyBtb3JlKSwgeW91IGNhbiBlbnRlciAic2NhbiIgaW5zdGVhZCBvZiBpdGVtIG51bWJlciAvIG1vZGUgSUQuICBUaGUKK3Byb2dyYW0gd2lsbCB0cnkgdG8gYXNrIHRoZSBCSU9TIGZvciBhbGwgcG9zc2libGUgdmlkZW8gbW9kZSBudW1iZXJzIGFuZCB0ZXN0Cit3aGF0IGhhcHBlbnMgdGhlbi4gVGhlIHNjcmVlbiB3aWxsIGJlIHByb2JhYmx5IGZsYXNoaW5nIHdpbGRseSBmb3Igc29tZSB0aW1lIGFuZAorc3RyYW5nZSBub2lzZXMgd2lsbCBiZSBoZWFyZCBmcm9tIGluc2lkZSB0aGUgbW9uaXRvciBhbmQgc28gb24gYW5kIHRoZW4sIHJlYWxseQorYWxsIGNvbnNpc3RlbnQgdmlkZW8gbW9kZXMgc3VwcG9ydGVkIGJ5IHlvdXIgQklPUyB3aWxsIGFwcGVhciAocGx1cyBtYXliZSBzb21lCitgZ2hvc3QgbW9kZXMnKS4gSWYgeW91IGFyZSBhZnJhaWQgdGhpcyBjb3VsZCBkYW1hZ2UgeW91ciBtb25pdG9yLCBkb24ndCB1c2UgdGhpcworZnVuY3Rpb24uCisKKyAgIEFmdGVyIHNjYW5uaW5nLCB0aGUgbW9kZSBvcmRlcmluZyBpcyBhIGJpdCBkaWZmZXJlbnQ6IHRoZSBhdXRvLWRldGVjdGVkIFNWR0EKK21vZGVzIGFyZSBub3QgbGlzdGVkIGF0IGFsbCBhbmQgdGhlIG1vZGVzIHJldmVhbGVkIGJ5IGBzY2FuJyBhcmUgc2hvd24gYmVmb3JlCithbGwgVkVTQSBtb2Rlcy4KKworMy4gTW9kZSBJRHMKK35+fn5+fn5+fn5+CisgICBCZWNhdXNlIG9mIHRoZSBjb21wbGV4aXR5IG9mIGFsbCB0aGUgdmlkZW8gc3R1ZmYsIHRoZSB2aWRlbyBtb2RlIElEcwordXNlZCBoZXJlIGFyZSBhbHNvIGEgYml0IGNvbXBsZXguIEEgdmlkZW8gbW9kZSBJRCBpcyBhIDE2LWJpdCBudW1iZXIgdXN1YWxseQorZXhwcmVzc2VkIGluIGEgaGV4YWRlY2ltYWwgbm90YXRpb24gKHN0YXJ0aW5nIHdpdGggIjB4IikuIFlvdSBjYW4gc2V0IGEgbW9kZQorYnkgZW50ZXJpbmcgaXRzIG1vZGUgZGlyZWN0bHkgaWYgeW91IGtub3cgaXQgZXZlbiBpZiBpdCBpc24ndCBzaG93biBvbiB0aGUgbWVudS4KKworVGhlIElEIG51bWJlcnMgY2FuIGJlIGRpdmlkZWQgdG8gdGhyZWUgcmVnaW9uczoKKworICAgMHgwMDAwIHRvIDB4MDBmZiAtIG1lbnUgaXRlbSByZWZlcmVuY2VzLiAweDAwMDAgaXMgdGhlIGZpcnN0IGl0ZW0uIERvbid0IHVzZQorCW91dHNpZGUgdGhlIG1lbnUgYXMgdGhpcyBjYW4gY2hhbmdlIGZyb20gYm9vdCB0byBib290IChlc3BlY2lhbGx5IGlmIHlvdQorCWhhdmUgdXNlZCB0aGUgYHNjYW4nIGZlYXR1cmUpLgorCisgICAweDAxMDAgdG8gMHgwMTdmIC0gc3RhbmRhcmQgQklPUyBtb2Rlcy4gVGhlIElEIGlzIGEgQklPUyB2aWRlbyBtb2RlIG51bWJlcgorCShhcyBwcmVzZW50ZWQgdG8gSU5UIDEwLCBmdW5jdGlvbiAwMCkgaW5jcmVhc2VkIGJ5IDB4MDEwMC4KKworICAgMHgwMjAwIHRvIDB4MDhmZiAtIFZFU0EgQklPUyBtb2Rlcy4gVGhlIElEIGlzIGEgVkVTQSBtb2RlIElEIGluY3JlYXNlZCBieQorCTB4MDEwMC4gQWxsIFZFU0EgbW9kZXMgc2hvdWxkIGJlIGF1dG9kZXRlY3RlZCBhbmQgc2hvd24gb24gdGhlIG1lbnUuCisKKyAgIDB4MDkwMCB0byAweDA5ZmYgLSBWaWRlbzcgc3BlY2lhbCBtb2Rlcy4gU2V0IGJ5IGNhbGxpbmcgSU5UIDB4MTAsIEFYPTB4NmYwNS4KKwkoVXN1YWxseSA5NDA9ODB4NDMsIDk0MT0xMzJ4MjUsIDk0Mj0xMzJ4NDQsIDk0Mz04MHg2MCwgOTQ0PTEwMHg2MCwKKwk5NDU9MTMyeDI4IGZvciB0aGUgc3RhbmRhcmQgVmlkZW83IEJJT1MpCisKKyAgIDB4MGYwMCB0byAweDBmZmYgLSBzcGVjaWFsIG1vZGVzICh0aGV5IGFyZSBzZXQgYnkgdmFyaW91cyB0cmlja3MgLS0gdXN1YWxseQorCWJ5IG1vZGlmeWluZyBvbmUgb2YgdGhlIHN0YW5kYXJkIG1vZGVzKS4gQ3VycmVudGx5IGF2YWlsYWJsZToKKwkweDBmMDAJc3RhbmRhcmQgODB4MjUsIGRvbid0IHJlc2V0IG1vZGUgaWYgYWxyZWFkeSBzZXQgKD1GRkZGKQorCTB4MGYwMQlzdGFuZGFyZCB3aXRoIDgtcG9pbnQgZm9udDogODB4NDMgb24gRUdBLCA4MHg1MCBvbiBWR0EKKwkweDBmMDIJVkdBIDgweDQzIChWR0Egc3dpdGNoZWQgdG8gMzUwIHNjYW5saW5lcyB3aXRoIGEgOC1wb2ludCBmb250KQorCTB4MGYwMwlWR0EgODB4MjggKHN0YW5kYXJkIFZHQSBzY2FucywgYnV0IDE0LXBvaW50IGZvbnQpCisJMHgwZjA0CWxlYXZlIGN1cnJlbnQgdmlkZW8gbW9kZQorCTB4MGYwNQlWR0EgODB4MzAgKDQ4MCBzY2FucywgMTYtcG9pbnQgZm9udCkKKwkweDBmMDYJVkdBIDgweDM0ICg0ODAgc2NhbnMsIDE0LXBvaW50IGZvbnQpCisJMHgwZjA3CVZHQSA4MHg2MCAoNDgwIHNjYW5zLCA4LXBvaW50IGZvbnQpCisJMHgwZjA4CUdyYXBoaWNzIGhhY2sgKHNlZSB0aGUgQ09ORklHX1ZJREVPX0hBQ0sgcGFyYWdyYXBoIGJlbG93KQorCisgICAweDEwMDAgdG8gMHg3ZmZmIC0gbW9kZXMgc3BlY2lmaWVkIGJ5IHJlc29sdXRpb24uIFRoZSBjb2RlIGhhcyBhICIweFJSQ0MiCisJZm9ybSB3aGVyZSBSUiBpcyBhIG51bWJlciBvZiByb3dzIGFuZCBDQyBpcyBhIG51bWJlciBvZiBjb2x1bW5zLgorCUUuZy4sIDB4MTk1MCBjb3JyZXNwb25kcyB0byBhIDgweDI1IG1vZGUsIDB4MmI4NCB0byAxMzJ4NDMgZXRjLgorCVRoaXMgaXMgdGhlIG9ubHkgZnVsbHkgcG9ydGFibGUgd2F5IHRvIHJlZmVyIHRvIGEgbm9uLXN0YW5kYXJkIG1vZGUsCisJYnV0IGl0IHJlbGllcyBvbiB0aGUgbW9kZSBiZWluZyBmb3VuZCBhbmQgZGlzcGxheWVkIG9uIHRoZSBtZW51CisJKHJlbWVtYmVyIHRoYXQgbW9kZSBzY2FubmluZyBpcyBub3QgZG9uZSBhdXRvbWF0aWNhbGx5KS4KKworICAgMHhmZjAwIHRvIDB4ZmZmZiAtIGFsaWFzZXMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHk6CisJMHhmZmZmCWVxdWl2YWxlbnQgdG8gMHgwZjAwIChzdGFuZGFyZCA4MHgyNSkKKwkweGZmZmUJZXF1aXZhbGVudCB0byAweDBmMDEgKEVHQSA4MHg0MyBvciBWR0EgODB4NTApCisKKyAgIElmIHlvdSBhZGQgMHg4MDAwIHRvIHRoZSBtb2RlIElELCB0aGUgcHJvZ3JhbSB3aWxsIHRyeSB0byByZWNhbGN1bGF0ZQordmVydGljYWwgZGlzcGxheSB0aW1pbmcgYWNjb3JkaW5nIHRvIG1vZGUgcGFyYW1ldGVycywgd2hpY2ggY2FuIGJlIHVzZWQgdG8KK2VsaW1pbmF0ZSBzb21lIGFubm95aW5nIGJ1Z3Mgb2YgY2VydGFpbiBWR0EgQklPU2VzICh1c3VhbGx5IHRob3NlIHVzZWQgZm9yCitjYXJkcyB3aXRoIFMzIGNoaXBzZXRzIGFuZCBvbGQgQ2lycnVzIExvZ2ljIEJJT1NlcykgLS0gbWFpbmx5IGV4dHJhIGxpbmVzIGF0IHRoZQorZW5kIG9mIHRoZSBkaXNwbGF5LgorCis0LiBPcHRpb25zCit+fn5+fn5+fn5+CisgICBTb21lIG9wdGlvbnMgY2FuIGJlIHNldCBpbiB0aGUgc291cmNlIHRleHQgKGluIGFyY2gvaTM4Ni9ib290L3ZpZGVvLlMpLgorQWxsIG9mIHRoZW0gYXJlIHNpbXBsZSAjZGVmaW5lJ3MgLS0gY2hhbmdlIHRoZW0gdG8gI3VuZGVmJ3Mgd2hlbiB5b3Ugd2FudCB0bworc3dpdGNoIHRoZW0gb2ZmLiBDdXJyZW50bHkgc3VwcG9ydGVkOgorCisgICBDT05GSUdfVklERU9fU1ZHQSAtIGVuYWJsZXMgYXV0b2RldGVjdGlvbiBvZiBTVkdBIGNhcmRzLiBUaGlzIGlzIHN3aXRjaGVkCitvZmYgYnkgZGVmYXVsdCBhcyBpdCdzIGEgYml0IHVucmVsaWFibGUgZHVlIHRvIHRlcnJpYmx5IGJhZCBQQyBkZXNpZ24uIElmIHlvdQorcmVhbGx5IHdhbnQgdG8gaGF2ZSB0aGUgYWRhcHRlciBhdXRvZGV0ZWN0ZWQgKG1heWJlIGluIGNhc2UgdGhlIGBzY2FuJyBmZWF0dXJlCitkb2Vzbid0IHdvcmsgb24geW91ciBtYWNoaW5lKSwgc3dpdGNoIHRoaXMgb24gYW5kIGRvbid0IGNyeSBpZiB0aGUgcmVzdWx0cworYXJlIG5vdCBjb21wbGV0ZWx5IHNhbmUuIEluIGNhc2UgeW91IHJlYWxseSBuZWVkIHRoaXMgZmVhdHVyZSwgcGxlYXNlIGRyb3AgbWUKK2EgbWFpbCBhcyBJIHRoaW5rIG9mIHJlbW92aW5nIGl0IHNvbWUgZGF5LgorCisgICBDT05GSUdfVklERU9fVkVTQSAtIGVuYWJsZXMgYXV0b2RldGVjdGlvbiBvZiBWRVNBIG1vZGVzLiBJZiBpdCBkb2Vzbid0IHdvcmsKK29uIHlvdXIgbWFjaGluZSAob3IgZGlzcGxheXMgYSAiRXJyb3I6IFNjYW5uaW5nIG9mIFZFU0EgbW9kZXMgZmFpbGVkIiBtZXNzYWdlKSwKK3lvdSBjYW4gc3dpdGNoIGl0IG9mZiBhbmQgcmVwb3J0IGFzIGEgYnVnLgorCisgICBDT05GSUdfVklERU9fQ09NUEFDVCAtIGVuYWJsZXMgY29tcGFjdGluZyBvZiB0aGUgdmlkZW8gbW9kZSBsaXN0LiBJZiB0aGVyZQorYXJlIG1vcmUgbW9kZXMgd2l0aCB0aGUgc2FtZSBzY3JlZW4gc2l6ZSwgb25seSB0aGUgZmlyc3Qgb25lIGlzIGtlcHQgKHNlZSBhYm92ZQorZm9yIG1vcmUgaW5mbyBvbiBtb2RlIG9yZGVyaW5nKS4gSG93ZXZlciwgaW4gdmVyeSBzdHJhbmdlIGNhc2VzIGl0J3MgcG9zc2libGUKK3RoYXQgdGhlIGZpcnN0ICJ2ZXJzaW9uIiBvZiB0aGUgbW9kZSBkb2Vzbid0IHdvcmsgYWx0aG91Z2ggc29tZSBvZiB0aGUgb3RoZXJzCitkbyAtLSBpbiB0aGlzIGNhc2UgdHVybiB0aGlzIHN3aXRjaCBvZmYgdG8gc2VlIHRoZSByZXN0LgorCisgICBDT05GSUdfVklERU9fUkVUQUlOIC0gZW5hYmxlcyByZXRhaW5pbmcgb2Ygc2NyZWVuIGNvbnRlbnRzIHdoZW4gc3dpdGNoaW5nCit2aWRlbyBtb2Rlcy4gV29ya3Mgb25seSB3aXRoIHNvbWUgYm9vdCBsb2FkZXJzIHdoaWNoIGxlYXZlIGVub3VnaCByb29tIGZvciB0aGUKK2J1ZmZlci4gKElmIHlvdSBoYXZlIG9sZCBMSUxPLCB5b3UgY2FuIGFkanVzdCBoZWFwX2VuZF9wdHIgYW5kIGxvYWRmbGFncworaW4gc2V0dXAuUywgYnV0IGl0J3MgYmV0dGVyIHRvIHVwZ3JhZGUgdGhlIGJvb3QgbG9hZGVyLi4uKQorCisgICBDT05GSUdfVklERU9fTE9DQUwgLSBlbmFibGVzIGluY2x1c2lvbiBvZiAibG9jYWwgbW9kZXMiIGluIHRoZSBsaXN0LiBUaGUKK2xvY2FsIG1vZGVzIGFyZSBhZGRlZCBhdXRvbWF0aWNhbGx5IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpc3Qgbm90IGRlcGVuZGluZworb24gaGFyZHdhcmUgY29uZmlndXJhdGlvbi4gVGhlIGxvY2FsIG1vZGVzIGFyZSBsaXN0ZWQgaW4gdGhlIHNvdXJjZSB0ZXh0IGFmdGVyCit0aGUgImxvY2FsX21vZGVfdGFibGU6IiBsaW5lLiBUaGUgY29tbWVudCBiZWZvcmUgdGhpcyBsaW5lIGRlc2NyaWJlcyB0aGUgZm9ybWF0CitvZiB0aGUgdGFibGUgKHdoaWNoIGFsc28gaW5jbHVkZXMgYSB2aWRlbyBjYXJkIG5hbWUgdG8gYmUgZGlzcGxheWVkIG9uIHRoZQordG9wIG9mIHRoZSBtZW51KS4KKworICAgQ09ORklHX1ZJREVPXzQwMF9IQUNLIC0gZm9yY2Ugc2V0dGluZyBvZiA0MDAgc2NhbiBsaW5lcyBmb3Igc3RhbmRhcmQgVkdBCittb2Rlcy4gVGhpcyBvcHRpb24gaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBvbiBjZXJ0YWluIGJ1Z2d5IEJJT1NlcyB3aGljaCBkcmF3Citzb21lIHVzZWxlc3MgbG9nbyB1c2luZyBmb250IGRvd25sb2FkIGFuZCB0aGVuIGZhaWwgdG8gcmVzZXQgdGhlIGNvcnJlY3QgbW9kZS4KK0Rvbid0IHVzZSB1bmxlc3MgbmVlZGVkIGFzIGl0IGZvcmNlcyByZXNldHRpbmcgdGhlIHZpZGVvIGNhcmQuCisKKyAgIENPTkZJR19WSURFT19HRlhfSEFDSyAtIGluY2x1ZGVzIHNwZWNpYWwgaGFjayBmb3Igc2V0dGluZyBvZiBncmFwaGljcyBtb2RlcwordG8gYmUgdXNlZCBsYXRlciBieSBzcGVjaWFsIGRyaXZlcnMgKGUuZy4sIDgwMHg2MDAgb24gSUJNIFRoaW5rUGFkIC0tIHNlZQorZnRwOi8vZnRwLnBoeXMua2Vpby5hYy5qcC9wdWIvWEZyZWU4Ni84MDB4NjAwL1hGODZDb25maWdzL1hGODZDb25maWcuSUJNX1RQNTYwKS4KK0FsbG93cyB0byBzZXQgX2FueV8gQklPUyBtb2RlIGluY2x1ZGluZyBncmFwaGljIG9uZXMgYW5kIGZvcmNpbmcgc3BlY2lmaWMKK3RleHQgc2NyZWVuIHJlc29sdXRpb24gaW5zdGVhZCBvZiBwZWVraW5nIGl0IGZyb20gQklPUyB2YXJpYWJsZXMuIERvbid0IHVzZQordW5sZXNzIHlvdSB0aGluayB5b3Uga25vdyB3aGF0IHlvdSdyZSBkb2luZy4gVG8gYWN0aXZhdGUgdGhpcyBzZXR1cCwgdXNlCittb2RlIG51bWJlciAweDBmMDggKHNlZSBzZWN0aW9uIDMpLgorCis1LiBTdGlsbCBkb2Vzbid0IHdvcms/Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisgICBXaGVuIHRoZSBtb2RlIGRldGVjdGlvbiBkb2Vzbid0IHdvcmsgKGUuZy4sIHRoZSBtb2RlIGxpc3QgaXMgaW5jb3JyZWN0IG9yCit0aGUgbWFjaGluZSBoYW5ncyBpbnN0ZWFkIG9mIGRpc3BsYXlpbmcgdGhlIG1lbnUpLCB0cnkgdG8gc3dpdGNoIG9mZiBzb21lIG9mCit0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGxpc3RlZCBpbiBzZWN0aW9uIDQuIElmIGl0IGZhaWxzLCB5b3UgY2FuIHN0aWxsIHVzZQoreW91ciBrZXJuZWwgd2l0aCB0aGUgdmlkZW8gbW9kZSBzZXQgZGlyZWN0bHkgdmlhIHRoZSBrZXJuZWwgcGFyYW1ldGVyLgorCisgICBJbiBlaXRoZXIgY2FzZSwgcGxlYXNlIHNlbmQgbWUgYSBidWcgcmVwb3J0IGNvbnRhaW5pbmcgd2hhdCBfZXhhY3RseV8KK2hhcHBlbnMgYW5kIGhvdyBkbyB0aGUgY29uZmlndXJhdGlvbiBzd2l0Y2hlcyBhZmZlY3QgdGhlIGJlaGF2aW91ciBvZiB0aGUgYnVnLgorCisgICBJZiB5b3Ugc3RhcnQgTGludXggZnJvbSBNJC1ET1MsIHlvdSBtaWdodCBhbHNvIHVzZSBzb21lIERPUyB0b29scyBmb3IKK3ZpZGVvIG1vZGUgc2V0dGluZy4gSW4gdGhpcyBjYXNlLCB5b3UgbXVzdCBzcGVjaWZ5IHRoZSAweDBmMDQgbW9kZSAoImxlYXZlCitjdXJyZW50IHNldHRpbmdzIikgdG8gTGludXgsIGJlY2F1c2UgaWYgeW91IGRvbid0IGFuZCB5b3UgdXNlIGFueSBub24tc3RhbmRhcmQKK21vZGUsIExpbnV4IHdpbGwgc3dpdGNoIHRvIDgweDI1IGF1dG9tYXRpY2FsbHkuCisKKyAgIElmIHlvdSBzZXQgc29tZSBleHRlbmRlZCBtb2RlIGFuZCB0aGVyZSdzIG9uZSBvciBtb3JlIGV4dHJhIGxpbmVzIG9uIHRoZQorYm90dG9tIG9mIHRoZSBkaXNwbGF5IGNvbnRhaW5pbmcgYWxyZWFkeSBzY3JvbGxlZC1vdXQgdGV4dCwgeW91ciBWR0EgQklPUworY29udGFpbnMgdGhlIG1vc3QgY29tbW9uIHZpZGVvIEJJT1MgYnVnIGNhbGxlZCAiaW5jb3JyZWN0IHZlcnRpY2FsIGRpc3BsYXkKK2VuZCBzZXR0aW5nIi4gQWRkaW5nIDB4ODAwMCB0byB0aGUgbW9kZSBJRCBtaWdodCBmaXggdGhlIHByb2JsZW0uIFVuZm9ydHVuYXRlbHksCit0aGlzIG11c3QgYmUgZG9uZSBtYW51YWxseSAtLSBubyBhdXRvZGV0ZWN0aW9uIG1lY2hhbmlzbXMgYXJlIGF2YWlsYWJsZS4KKworICAgSWYgeW91IGhhdmUgYSBWR0EgY2FyZCBhbmQgeW91ciBkaXNwbGF5IHN0aWxsIGxvb2tzIGFzIG9uIEVHQSwgeW91ciBCSU9TCitpcyBwcm9iYWJseSBicm9rZW4gYW5kIHlvdSBuZWVkIHRvIHNldCB0aGUgQ09ORklHX1ZJREVPXzQwMF9IQUNLIHN3aXRjaCB0bworZm9yY2Ugc2V0dGluZyBvZiB0aGUgY29ycmVjdCBtb2RlLgorCis2LiBIaXN0b3J5Cit+fn5+fn5+fn5+CisxLjAgKD8/LU5vdi05NSkJRmlyc3QgdmVyc2lvbiBzdXBwb3J0aW5nIGFsbCBhZGFwdGVycyBzdXBwb3J0ZWQgYnkgdGhlIG9sZAorCQlzZXR1cC5TICsgQ2lycnVzIExvZ2ljIDU0WFguIFByZXNlbnQgaW4gc29tZSAxLjMuND8ga2VybmVscworCQlhbmQgdGhlbiByZW1vdmVkIGR1ZSB0byBpbnN0YWJpbGl0eSBvbiBzb21lIG1hY2hpbmVzLgorMi4wICgyOC1KYW4tOTYpCVJld3JpdHRlbiBmcm9tIHNjcmF0Y2guIENpcnJ1cyBMb2dpYyA2NFhYIHN1cHBvcnQgYWRkZWQsIGFsbW9zdAorCQlldmVyeXRoaW5nIGlzIGNvbmZpZ3VyYWJsZSwgdGhlIFZFU0Egc3VwcG9ydCBzaG91bGQgYmUgbXVjaCBtb3JlCisJCXN0YWJsZSwgZXhwbGljaXQgbW9kZSBudW1iZXJpbmcgYWxsb3dlZCwgInNjYW4iIGltcGxlbWVudGVkIGV0Yy4KKzIuMSAoMzAtSmFuLTk2KSBWRVNBIG1vZGVzIG1vdmVkIHRvIDB4MjAwLTB4M2ZmLiBNb2RlIHNlbGVjdGlvbiBieSByZXNvbHV0aW9uCisJCXN1cHBvcnRlZC4gRmV3IGJ1Z3MgZml4ZWQuIFZFU0EgbW9kZXMgYXJlIGxpc3RlZCBwcmlvciB0bworCQltb2RlcyBzdXBwbGllZCBieSBTVkdBIGF1dG9kZXRlY3Rpb24gYXMgdGhleSBhcmUgbW9yZSByZWxpYWJsZS4KKwkJQ0xHRCBhdXRvZGV0ZWN0IHdvcmtzIGJldHRlci4gRG9lc24ndCBkZXBlbmQgb24gODB4MjUgYmVpbmcKKwkJYWN0aXZlIHdoZW4gc3RhcnRlZC4gU2Nhbm5pbmcgZml4ZWQuIDgweDQzIChhbnkgVkdBKSBhZGRlZC4KKwkJQ29kZSBjbGVhbmVkIHVwLgorMi4yICgwMS1GZWItOTYpCUVHQSA4MHg0MyBmaXhlZC4gVkVTQSBleHRlbmRlZCB0byAweDIwMC0weDRmZiAobm9uLXN0YW5kYXJkIDAyWFgKKwkJVkVTQSBtb2RlcyB3b3JrIG5vdykuIERpc3BsYXkgZW5kIGJ1ZyB3b3JrYXJvdW5kIHN1cHBvcnRlZC4KKwkJU3BlY2lhbCBtb2RlcyByZW51bWJlcmVkIHRvIGFsbG93IGFkZGluZyBvZiB0aGUgInJlY2FsY3VsYXRlIgorCQlmbGFnLCAweGZmZmYgYW5kIDB4ZmZmZSBiZWNhbWUgYWxpYXNlcyBpbnN0ZWFkIG9mIHJlYWwgSURzLgorCQlTY3JlZW4gY29udGVudHMgcmV0YWluZWQgZHVyaW5nIG1vZGUgY2hhbmdlcy4KKzIuMyAoMTUtTWFyLTk2KQlDaGFuZ2VkIHRvIHdvcmsgd2l0aCAxLjMuNzQga2VybmVsLgorMi40ICgxOC1NYXItOTYpCUFkZGVkIHBhdGNoZXMgYnkgSGFucyBMZXJtZW4gZml4aW5nIGEgbWVtb3J5IG92ZXJ3cml0ZSBwcm9ibGVtCisJCXdpdGggc29tZSBib290IGxvYWRlcnMuIE1lbW9yeSBtYW5hZ2VtZW50IHJld3JpdHRlbiB0byByZWZsZWN0CisJCXRoZXNlIGNoYW5nZXMuIFVuZm9ydHVuYXRlbHksIHNjcmVlbiBjb250ZW50cyByZXRhaW5pbmcgd29ya3MKKwkJb25seSB3aXRoIHNvbWUgbG9hZGVycyBub3cuCisJCUFkZGVkIGEgVHNlbmcgMTMyeDYwIG1vZGUuCisyLjUgKDE5LU1hci05NikJRml4ZWQgYSBWRVNBIG1vZGUgc2Nhbm5pbmcgYnVnIGludHJvZHVjZWQgaW4gMi40LgorMi42ICgyNS1NYXItOTYpCVNvbWUgVkVTQSBCSU9TIGVycm9ycyBub3QgcmVwb3J0ZWQgLS0gaXQgZml4ZXMgZXJyb3IgcmVwb3J0cyBvbgorCQlzZXZlcmFsIGNhcmRzIHdpdGggYnJva2VuIFZFU0EgY29kZSAoZS5nLiwgQVRJIFZHQSkuCisyLjcgKDA5LUFwci05NikJLSBBY2NlcHRlZCBhbGwgVkVTQSBtb2RlcyBpbiByYW5nZSAweDEwMCB0byAweDdmZiwgYmVjYXVzZSBzb21lCisJCSAgY2FyZHMgdXNlIHZlcnkgc3RyYW5nZSBtb2RlIG51bWJlcnMuCisJCS0gQWRkZWQgUmVhbHRlayBWR0EgbW9kZXMgKHRoYW5rcyB0byBHb256YWxvIFRvcm5hcmlhKS4KKwkJLSBIYXJkd2FyZSB0ZXN0aW5nIG9yZGVyIHNsaWdodGx5IGNoYW5nZWQsIHRlc3RzIGJhc2VkIG9uIFJPTQorCQkgIGNvbnRlbnRzIGRvbmUgYXMgZmlyc3QuCisJCS0gQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lhbCBWaWRlbzcgbW9kZSBzd2l0Y2hpbmcgZnVuY3Rpb25zCisJCSAgKHRoYW5rcyB0byBUb20gVmFuZGVyIEFhKS4KKwkJLSBBZGRlZCA0ODAtc2NhbmxpbmUgbW9kZXMgKGVzcGVjaWFsbHkgdXNlZnVsIGZvciBub3RlYm9va3MsCisJCSAgb3JpZ2luYWwgdmVyc2lvbiB3cml0dGVuIGJ5IGhoYW5lbWFhQGNzLnJ1dS5ubCwgcGF0Y2hlZCBieQorCQkgIEplZmYgQ2h1YSwgcmV3cml0dGVuIGJ5IG1lKS4KKwkJLSBTY3JlZW4gc3RvcmUvcmVzdG9yZSBmaXhlZC4KKzIuOCAoMTQtQXByLTk2KQktIFByZXZpb3VzIHJlbGVhc2Ugd2FzIG5vdCBjb21waWxhYmxlIHdpdGhvdXQgQ09ORklHX1ZJREVPX1NWR0EuCisJCS0gQmV0dGVyIHJlY29nbml0aW9uIG9mIHRleHQgbW9kZXMgZHVyaW5nIG1vZGUgc2Nhbi4KKzIuOSAoMTItTWF5LTk2KQktIElnbm9yZWQgVkVTQSBtb2RlcyAweDgwIC0gMHhmZiAobW9yZSBWRVNBIEJJT1MgYnVncyEpCisyLjEwICgxMS1Ob3YtOTYpLSBUaGUgd2hvbGUgdGhpbmcgbWFkZSBvcHRpb25hbC4KKwkJLSBBZGRlZCB0aGUgQ09ORklHX1ZJREVPXzQwMF9IQUNLIHN3aXRjaC4KKwkJLSBBZGRlZCB0aGUgQ09ORklHX1ZJREVPX0dGWF9IQUNLIHN3aXRjaC4KKwkJLSBDb2RlIGNsZWFudXAuCisyLjExICgwMy1NYXktOTcpLSBZZXQgYW5vdGhlciBjbGVhbnVwLCBub3cgaW5jbHVkaW5nIGFsc28gdGhlIGRvY3VtZW50YXRpb24uCisJCS0gRGlyZWN0IHRlc3Rpbmcgb2YgU1ZHQSBhZGFwdGVycyB0dXJuZWQgb2ZmIGJ5IGRlZmF1bHQsIGBzY2FuJworCQkgIG9mZmVyZWQgZXhwbGljaXRseSBvbiB0aGUgcHJvbXB0IGxpbmUuCisJCS0gUmVtb3ZlZCB0aGUgZG9jIHNlY3Rpb24gZGVzY3JpYmluZyBhZGRpbmcgb2YgbmV3IHByb2JpbmcKKwkJICBmdW5jdGlvbnMgYXMgSSB0cnkgdG8gZ2V0IHJpZCBvZiBfYWxsXyBoYXJkd2FyZSBwcm9iaW5nIGhlcmUuCisyLjEyICgyNS1NYXktOTgpLSBBZGRlZCBzdXBwb3J0IGZvciBWRVNBIGZyYW1lIGJ1ZmZlciBncmFwaGljcy4KKzIuMTMgKDE0LU1heS05OSktIE1pbm9yIGRvY3VtZW50YXRpb24gZml4ZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3N5c2N0bC8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vc3lzY3RsLzAwLUlOREVYCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjZjVkNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3N5c2N0bC8wMC1JTkRFWApAQCAtMCwwICsxLDE2IEBACiswMC1JTkRFWAorCS0gdGhpcyBmaWxlLgorUkVBRE1FCisJLSBnZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0IC9wcm9jL3N5cy8gc3lzY3RsIGZpbGVzLgorYWJpLnR4dAorCS0gZG9jdW1lbnRhdGlvbiBmb3IgL3Byb2Mvc3lzL2FiaS8qLgorZnMudHh0CisJLSBkb2N1bWVudGF0aW9uIGZvciAvcHJvYy9zeXMvZnMvKi4KK2tlcm5lbC50eHQKKwktIGRvY3VtZW50YXRpb24gZm9yIC9wcm9jL3N5cy9rZXJuZWwvKi4KK25ldC50eHQKKwktIGRvY3VtZW50YXRpb24gZm9yIC9wcm9jL3N5cy9uZXQvKi4KK3N1bnJwYy50eHQKKwktIGRvY3VtZW50YXRpb24gZm9yIC9wcm9jL3N5cy9zdW5ycGMvKi4KK3ZtLnR4dAorCS0gZG9jdW1lbnRhdGlvbiBmb3IgL3Byb2Mvc3lzL3ZtLyouCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3N5c2N0bC9SRUFETUUgYi9Eb2N1bWVudGF0aW9uL3N5c2N0bC9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMzMzA2ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc3lzY3RsL1JFQURNRQpAQCAtMCwwICsxLDc1IEBACitEb2N1bWVudGF0aW9uIGZvciAvcHJvYy9zeXMvCQlrZXJuZWwgdmVyc2lvbiAyLjIuMTAKKwkoYykgMTk5OCwgMTk5OSwgIFJpayB2YW4gUmllbCA8cmllbEBubC5saW51eC5vcmc+CisKKydXaHknLCBJIGhlYXIgeW91IGFzaywgJ3dvdWxkIGFueW9uZSBldmVuIF93YW50XyBkb2N1bWVudGF0aW9uCitmb3IgdGhlbSBzeXNjdGwgZmlsZXM/IElmIGFueWJvZHkgcmVhbGx5IG5lZWRzIGl0LCBpdCdzIGFsbCBpbgordGhlIHNvdXJjZS4uLicKKworV2VsbCwgdGhpcyBkb2N1bWVudGF0aW9uIGlzIHdyaXR0ZW4gYmVjYXVzZSBzb21lIHBlb3BsZSBlaXRoZXIKK2Rvbid0IGtub3cgdGhleSBuZWVkIHRvIHR3ZWFrIHNvbWV0aGluZywgb3IgYmVjYXVzZSB0aGV5IGRvbid0CitoYXZlIHRoZSB0aW1lIG9yIGtub3dsZWRnZSB0byByZWFkIHRoZSBzb3VyY2UgY29kZS4KKworRnVydGhlcm1vcmUsIHRoZSBwcm9ncmFtbWVycyB3aG8gYnVpbHQgc3lzY3RsIGhhdmUgYnVpbHQgaXQgdG8KK2JlIGFjdHVhbGx5IHVzZWQsIG5vdCBqdXN0IGZvciB0aGUgZnVuIG9mIHByb2dyYW1taW5nIGl0IDotKQorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitMZWdhbCBibHVyYjoKKworQXMgdXN1YWwsIHRoZXJlIGFyZSB0d28gbWFpbiB0aGluZ3MgdG8gY29uc2lkZXI6CisxLiB5b3UgZ2V0IHdoYXQgeW91IHBheSBmb3IKKzIuIGl0J3MgZnJlZQorCitUaGUgY29uc2VxdWVuY2VzIGFyZSB0aGF0IEkgd29uJ3QgZ3VhcmFudGVlIHRoZSBjb3JyZWN0bmVzcyBvZgordGhpcyBkb2N1bWVudCwgYW5kIGlmIHlvdSBjb21lIHRvIG1lIGNvbXBsYWluaW5nIGFib3V0IGhvdyB5b3UKK3NjcmV3ZWQgdXAgeW91ciBzeXN0ZW0gYmVjYXVzZSBvZiB3cm9uZyBkb2N1bWVudGF0aW9uLCBJIHdvbid0CitmZWVsIHNvcnJ5IGZvciB5b3UuIEkgbWlnaHQgZXZlbiBsYXVnaCBhdCB5b3UuLi4KKworQnV0IG9mIGNvdXJzZSwgaWYgeW91IF9kb18gbWFuYWdlIHRvIHNjcmV3IHVwIHlvdXIgc3lzdGVtIHVzaW5nCitvbmx5IHRoZSBzeXNjdGwgb3B0aW9ucyB1c2VkIGluIHRoaXMgZmlsZSwgSSdkIGxpa2UgdG8gaGVhciBvZgoraXQuIE5vdCBvbmx5IHRvIGhhdmUgYSBncmVhdCBsYXVnaCwgYnV0IGFsc28gdG8gbWFrZSBzdXJlIHRoYXQKK3lvdSdyZSB0aGUgbGFzdCBSVEZNaW5nIHBlcnNvbiB0byBzY3JldyB1cC4KKworSW4gc2hvcnQsIGUtbWFpbCB5b3VyIHN1Z2dlc3Rpb25zLCBjb3JyZWN0aW9ucyBhbmQgLyBvciBob3Jyb3IKK3N0b3JpZXMgdG86IDxyaWVsQG5sLmxpbnV4Lm9yZz4KKworUmlrIHZhbiBSaWVsLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJbnRyb2R1Y3Rpb246CisKK1N5c2N0bCBpcyBhIG1lYW5zIG9mIGNvbmZpZ3VyaW5nIGNlcnRhaW4gYXNwZWN0cyBvZiB0aGUga2VybmVsCithdCBydW4tdGltZSwgYW5kIHRoZSAvcHJvYy9zeXMvIGRpcmVjdG9yeSBpcyB0aGVyZSBzbyB0aGF0IHlvdQorZG9uJ3QgZXZlbiBuZWVkIHNwZWNpYWwgdG9vbHMgdG8gZG8gaXQhCitJbiBmYWN0LCB0aGVyZSBhcmUgb25seSBmb3VyIHRoaW5ncyBuZWVkZWQgdG8gdXNlIHRoZXNlIGNvbmZpZworZmFjaWxpdGllczoKKy0gYSBydW5uaW5nIExpbnV4IHN5c3RlbQorLSByb290IGFjY2VzcworLSBjb21tb24gc2Vuc2UgKHRoaXMgaXMgZXNwZWNpYWxseSBoYXJkIHRvIGNvbWUgYnkgdGhlc2UgZGF5cykKKy0ga25vd2xlZGdlIG9mIHdoYXQgYWxsIHRob3NlIHZhbHVlcyBtZWFuCisKK0FzIGEgcXVpY2sgJ2xzIC9wcm9jL3N5cycgd2lsbCBzaG93LCB0aGUgZGlyZWN0b3J5IGNvbnNpc3RzIG9mCitzZXZlcmFsIChhcmNoLWRlcGVuZGVudD8pIHN1YmRpcnMuIEVhY2ggc3ViZGlyIGlzIG1haW5seSBhYm91dAorb25lIHBhcnQgb2YgdGhlIGtlcm5lbCwgc28geW91IGNhbiBkbyBjb25maWd1cmF0aW9uIG9uIGEgcGllY2UKK2J5IHBpZWNlIGJhc2lzLCBvciBqdXN0IHNvbWUgJ3RoZW1hdGljIGZyb2JiaW5nJy4KKworVGhlIHN1YmRpcnMgYXJlIGFib3V0OgorYWJpLwkJZXhlY3V0aW9uIGRvbWFpbnMgJiBwZXJzb25hbGl0aWVzCitkZWJ1Zy8JCTxlbXB0eT4KK2Rldi8JCWRldmljZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiAoZWcgZGV2L2Nkcm9tL2luZm8pCitmcy8JCXNwZWNpZmljIGZpbGVzeXN0ZW1zCisJCWZpbGVoYW5kbGUsIGlub2RlLCBkZW50cnkgYW5kIHF1b3RhIHR1bmluZworCQliaW5mbXRfbWlzYyA8RG9jdW1lbnRhdGlvbi9iaW5mbXRfbWlzYy50eHQ+CitrZXJuZWwvCQlnbG9iYWwga2VybmVsIGluZm8gLyB0dW5pbmcKKwkJbWlzY2VsbGFuZW91cyBzdHVmZgorbmV0LwkJbmV0d29ya2luZyBzdHVmZiwgZm9yIGRvY3VtZW50YXRpb24gbG9vayBpbjoKKwkJPERvY3VtZW50YXRpb24vbmV0d29ya2luZy8+Citwcm9jLwkJPGVtcHR5Pgorc3VucnBjLwkJU1VOIFJlbW90ZSBQcm9jZWR1cmUgQ2FsbCAoTkZTKQordm0vCQltZW1vcnkgbWFuYWdlbWVudCB0dW5pbmcKKwkJYnVmZmVyIGFuZCBjYWNoZSBtYW5hZ2VtZW50CisKK1RoZXNlIGFyZSB0aGUgc3ViZGlycyBJIGhhdmUgb24gbXkgc3lzdGVtLiBUaGVyZSBtaWdodCBiZSBtb3JlCitvciBvdGhlciBzdWJkaXJzIGluIGFub3RoZXIgc2V0dXAuIElmIHlvdSBzZWUgYW5vdGhlciBkaXIsIEknZAorcmVhbGx5IGxpa2UgdG8gaGVhciBhYm91dCBpdCA6LSkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc3lzY3RsL2FiaS50eHQgYi9Eb2N1bWVudGF0aW9uL3N5c2N0bC9hYmkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzZjRlYmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3N5c2N0bC9hYmkudHh0CkBAIC0wLDAgKzEsNTQgQEAKK0RvY3VtZW50YXRpb24gZm9yIC9wcm9jL3N5cy9hYmkvKiBrZXJuZWwgdmVyc2lvbiAyLjYuMC50ZXN0MgorCShjKSAyMDAzLCAgRmFiaWFuIEZyZWRlcmljayA8ZmZyZWRlcmlja0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK0ZvciBnZW5lcmFsIGluZm8gOiBSRUFETUUuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgcGF0aCBpcyBiaW5hcnkgZW11bGF0aW9uIHJlbGV2YW50IGFrYSBwZXJzb25hbGl0eSB0eXBlcyBha2EgYWJpLgorV2hlbiBhIHByb2Nlc3MgaXMgZXhlY3V0ZWQsIGl0J3MgbGlua2VkIHRvIGFuIGV4ZWNfZG9tYWluIHdob3NlCitwZXJzb25hbGl0eSBpcyBkZWZpbmVkIHVzaW5nIHZhbHVlcyBhdmFpbGFibGUgZnJvbSAvcHJvYy9zeXMvYWJpLgorWW91IGNhbiBmaW5kIGZ1cnRoZXIgZGV0YWlscyBhYm91dCBhYmkgaW4gaW5jbHVkZS9saW51eC9wZXJzb25hbGl0eS5oLgorCitIZXJlIGFyZSB0aGUgZmlsZXMgZmVhdHVyaW5nIGluIDIuNiBrZXJuZWwgOgorCistIGRlZmhhbmRsZXJfY29mZgorLSBkZWZoYW5kbGVyX2VsZgorLSBkZWZoYW5kbGVyX2xjYWxsNworLSBkZWZoYW5kbGVyX2xpYmNzbworLSBmYWtlX3V0c25hbWUKKy0gdHJhY2UKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2RlZmhhbmRsZXJfY29mZjoKK2RlZmluZWQgdmFsdWUgOgorUEVSX1NDT1NWUjMKKzB4MDAwMyB8IFNUSUNLWV9USU1FT1VUUyB8IFdIT0xFX1NFQ09ORFMgfCBTSE9SVF9JTk9ERQorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZGVmaGFuZGxlcl9lbGY6CitkZWZpbmVkIHZhbHVlIDoKK1BFUl9MSU5VWAorMAorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZGVmaGFuZGxlcl9sY2FsbDc6CitkZWZpbmVkIHZhbHVlIDoKK1BFUl9TVlI0CisweDAwMDEgfCBTVElDS1lfVElNRU9VVFMgfCBNTUFQX1BBR0VfWkVSTywKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2RlZmhhbmRsZXJfbGlic2NvOgorZGVmaW5lZCB2YWx1ZToKK1BFUl9TVlI0CisweDAwMDEgfCBTVElDS1lfVElNRU9VVFMgfCBNTUFQX1BBR0VfWkVSTywKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2Zha2VfdXRzbmFtZToKK1VudXNlZAorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQordHJhY2U6CitVbnVzZWQKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc3lzY3RsL2ZzLnR4dCBiL0RvY3VtZW50YXRpb24vc3lzY3RsL2ZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWUxN2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zeXNjdGwvZnMudHh0CkBAIC0wLDAgKzEsMzMwIEBACitEb2N1bWVudGF0aW9uIGZvciAvcHJvYy9zeXMvZnMvKglrZXJuZWwgdmVyc2lvbiAyLjIuMTAKKwkoYykgMTk5OCwgMTk5OSwgIFJpayB2YW4gUmllbCA8cmllbEBubC5saW51eC5vcmc+CisJKGMpIDIwMDksICAgICAgICBTaGVuIEZlbmc8c2hlbkBjbi5mdWppdHN1LmNvbT4KKworRm9yIGdlbmVyYWwgaW5mbyBhbmQgbGVnYWwgYmx1cmIsIHBsZWFzZSBsb29rIGluIFJFQURNRS4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBmaWxlIGNvbnRhaW5zIGRvY3VtZW50YXRpb24gZm9yIHRoZSBzeXNjdGwgZmlsZXMgaW4KKy9wcm9jL3N5cy9mcy8gYW5kIGlzIHZhbGlkIGZvciBMaW51eCBrZXJuZWwgdmVyc2lvbiAyLjIuCisKK1RoZSBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeSBjYW4gYmUgdXNlZCB0byB0dW5lIGFuZCBtb25pdG9yCittaXNjZWxsYW5lb3VzIGFuZCBnZW5lcmFsIHRoaW5ncyBpbiB0aGUgb3BlcmF0aW9uIG9mIHRoZSBMaW51eAora2VybmVsLiBTaW5jZSBzb21lIG9mIHRoZSBmaWxlcyBfY2FuXyBiZSB1c2VkIHRvIHNjcmV3IHVwIHlvdXIKK3N5c3RlbSwgaXQgaXMgYWR2aXNhYmxlIHRvIHJlYWQgYm90aCBkb2N1bWVudGF0aW9uIGFuZCBzb3VyY2UKK2JlZm9yZSBhY3R1YWxseSBtYWtpbmcgYWRqdXN0bWVudHMuCisKKzEuIC9wcm9jL3N5cy9mcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDdXJyZW50bHksIHRoZXNlIGZpbGVzIGFyZSBpbiAvcHJvYy9zeXMvZnM6CistIGFpby1tYXgtbnIKKy0gYWlvLW5yCistIGRlbnRyeS1zdGF0ZQorLSBkcXVvdC1tYXgKKy0gZHF1b3QtbnIKKy0gZmlsZS1tYXgKKy0gZmlsZS1ucgorLSBpbm9kZS1tYXgKKy0gaW5vZGUtbnIKKy0gaW5vZGUtc3RhdGUKKy0gbnJfb3BlbgorLSBvdmVyZmxvd3VpZAorLSBvdmVyZmxvd2dpZAorLSBwaXBlLXVzZXItcGFnZXMtaGFyZAorLSBwaXBlLXVzZXItcGFnZXMtc29mdAorLSBwcm90ZWN0ZWRfaGFyZGxpbmtzCistIHByb3RlY3RlZF9zeW1saW5rcworLSBzdWlkX2R1bXBhYmxlCistIHN1cGVyLW1heAorLSBzdXBlci1ucgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCithaW8tbnIgJiBhaW8tbWF4LW5yOgorCithaW8tbnIgaXMgdGhlIHJ1bm5pbmcgdG90YWwgb2YgdGhlIG51bWJlciBvZiBldmVudHMgc3BlY2lmaWVkIG9uIHRoZQoraW9fc2V0dXAgc3lzdGVtIGNhbGwgZm9yIGFsbCBjdXJyZW50bHkgYWN0aXZlIGFpbyBjb250ZXh0cy4gIElmIGFpby1ucgorcmVhY2hlcyBhaW8tbWF4LW5yIHRoZW4gaW9fc2V0dXAgd2lsbCBmYWlsIHdpdGggRUFHQUlOLiAgTm90ZSB0aGF0CityYWlzaW5nIGFpby1tYXgtbnIgZG9lcyBub3QgcmVzdWx0IGluIHRoZSBwcmUtYWxsb2NhdGlvbiBvciByZS1zaXppbmcKK29mIGFueSBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitkZW50cnktc3RhdGU6CisKK0Zyb20gbGludXgvZnMvZGVudHJ5LmM6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorc3RydWN0IHsKKyAgICAgICAgaW50IG5yX2RlbnRyeTsKKyAgICAgICAgaW50IG5yX3VudXNlZDsKKyAgICAgICAgaW50IGFnZV9saW1pdDsgICAgICAgICAvKiBhZ2UgaW4gc2Vjb25kcyAqLworICAgICAgICBpbnQgd2FudF9wYWdlczsgICAgICAgIC8qIHBhZ2VzIHJlcXVlc3RlZCBieSBzeXN0ZW0gKi8KKyAgICAgICAgaW50IGR1bW15WzJdOworfSBkZW50cnlfc3RhdCA9IHswLCAwLCA0NSwgMCx9OworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCisKK0RlbnRyaWVzIGFyZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYW5kIGRlYWxsb2NhdGVkLCBhbmQKK25yX2RlbnRyeSBzZWVtcyB0byBiZSAwIGFsbCB0aGUgdGltZS4gSGVuY2UgaXQncyBzYWZlIHRvCithc3N1bWUgdGhhdCBvbmx5IG5yX3VudXNlZCwgYWdlX2xpbWl0IGFuZCB3YW50X3BhZ2VzIGFyZQordXNlZC4gTnJfdW51c2VkIHNlZW1zIHRvIGJlIGV4YWN0bHkgd2hhdCBpdHMgbmFtZSBzYXlzLgorQWdlX2xpbWl0IGlzIHRoZSBhZ2UgaW4gc2Vjb25kcyBhZnRlciB3aGljaCBkY2FjaGUgZW50cmllcworY2FuIGJlIHJlY2xhaW1lZCB3aGVuIG1lbW9yeSBpcyBzaG9ydCBhbmQgd2FudF9wYWdlcyBpcworbm9uemVybyB3aGVuIHNocmlua19kY2FjaGVfcGFnZXMoKSBoYXMgYmVlbiBjYWxsZWQgYW5kIHRoZQorZGNhY2hlIGlzbid0IHBydW5lZCB5ZXQuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2RxdW90LW1heCAmIGRxdW90LW5yOgorCitUaGUgZmlsZSBkcXVvdC1tYXggc2hvd3MgdGhlIG1heGltdW0gbnVtYmVyIG9mIGNhY2hlZCBkaXNrCitxdW90YSBlbnRyaWVzLgorCitUaGUgZmlsZSBkcXVvdC1uciBzaG93cyB0aGUgbnVtYmVyIG9mIGFsbG9jYXRlZCBkaXNrIHF1b3RhCitlbnRyaWVzIGFuZCB0aGUgbnVtYmVyIG9mIGZyZWUgZGlzayBxdW90YSBlbnRyaWVzLgorCitJZiB0aGUgbnVtYmVyIG9mIGZyZWUgY2FjaGVkIGRpc2sgcXVvdGFzIGlzIHZlcnkgbG93IGFuZAoreW91IGhhdmUgc29tZSBhd2Vzb21lIG51bWJlciBvZiBzaW11bHRhbmVvdXMgc3lzdGVtIHVzZXJzLAoreW91IG1pZ2h0IHdhbnQgdG8gcmFpc2UgdGhlIGxpbWl0LgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitmaWxlLW1heCAmIGZpbGUtbnI6CisKK1RoZSB2YWx1ZSBpbiBmaWxlLW1heCBkZW5vdGVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBmaWxlLQoraGFuZGxlcyB0aGF0IHRoZSBMaW51eCBrZXJuZWwgd2lsbCBhbGxvY2F0ZS4gV2hlbiB5b3UgZ2V0IGxvdHMKK29mIGVycm9yIG1lc3NhZ2VzIGFib3V0IHJ1bm5pbmcgb3V0IG9mIGZpbGUgaGFuZGxlcywgeW91IG1pZ2h0Cit3YW50IHRvIGluY3JlYXNlIHRoaXMgbGltaXQuCisKK0hpc3RvcmljYWxseSx0aGUga2VybmVsIHdhcyBhYmxlIHRvIGFsbG9jYXRlIGZpbGUgaGFuZGxlcworZHluYW1pY2FsbHksIGJ1dCBub3QgdG8gZnJlZSB0aGVtIGFnYWluLiBUaGUgdGhyZWUgdmFsdWVzIGluCitmaWxlLW5yIGRlbm90ZSB0aGUgbnVtYmVyIG9mIGFsbG9jYXRlZCBmaWxlIGhhbmRsZXMsIHRoZSBudW1iZXIKK29mIGFsbG9jYXRlZCBidXQgdW51c2VkIGZpbGUgaGFuZGxlcywgYW5kIHRoZSBtYXhpbXVtIG51bWJlciBvZgorZmlsZSBoYW5kbGVzLiBMaW51eCAyLjYgYWx3YXlzIHJlcG9ydHMgMCBhcyB0aGUgbnVtYmVyIG9mIGZyZWUKK2ZpbGUgaGFuZGxlcyAtLSB0aGlzIGlzIG5vdCBhbiBlcnJvciwgaXQganVzdCBtZWFucyB0aGF0IHRoZQorbnVtYmVyIG9mIGFsbG9jYXRlZCBmaWxlIGhhbmRsZXMgZXhhY3RseSBtYXRjaGVzIHRoZSBudW1iZXIgb2YKK3VzZWQgZmlsZSBoYW5kbGVzLgorCitBdHRlbXB0cyB0byBhbGxvY2F0ZSBtb3JlIGZpbGUgZGVzY3JpcHRvcnMgdGhhbiBmaWxlLW1heCBhcmUKK3JlcG9ydGVkIHdpdGggcHJpbnRrLCBsb29rIGZvciAiVkZTOiBmaWxlLW1heCBsaW1pdCA8bnVtYmVyPgorcmVhY2hlZCIuCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitucl9vcGVuOgorCitUaGlzIGRlbm90ZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGZpbGUtaGFuZGxlcyBhIHByb2Nlc3MgY2FuCithbGxvY2F0ZS4gRGVmYXVsdCB2YWx1ZSBpcyAxMDI0KjEwMjQgKDEwNDg1NzYpIHdoaWNoIHNob3VsZCBiZQorZW5vdWdoIGZvciBtb3N0IG1hY2hpbmVzLiBBY3R1YWwgbGltaXQgZGVwZW5kcyBvbiBSTElNSVRfTk9GSUxFCityZXNvdXJjZSBsaW1pdC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworaW5vZGUtbWF4LCBpbm9kZS1uciAmIGlub2RlLXN0YXRlOgorCitBcyB3aXRoIGZpbGUgaGFuZGxlcywgdGhlIGtlcm5lbCBhbGxvY2F0ZXMgdGhlIGlub2RlIHN0cnVjdHVyZXMKK2R5bmFtaWNhbGx5LCBidXQgY2FuJ3QgZnJlZSB0aGVtIHlldC4KKworVGhlIHZhbHVlIGluIGlub2RlLW1heCBkZW5vdGVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBpbm9kZQoraGFuZGxlcnMuIFRoaXMgdmFsdWUgc2hvdWxkIGJlIDMtNCB0aW1lcyBsYXJnZXIgdGhhbiB0aGUgdmFsdWUKK2luIGZpbGUtbWF4LCBzaW5jZSBzdGRpbiwgc3Rkb3V0IGFuZCBuZXR3b3JrIHNvY2tldHMgYWxzbworbmVlZCBhbiBpbm9kZSBzdHJ1Y3QgdG8gaGFuZGxlIHRoZW0uIFdoZW4geW91IHJlZ3VsYXJseSBydW4KK291dCBvZiBpbm9kZXMsIHlvdSBuZWVkIHRvIGluY3JlYXNlIHRoaXMgdmFsdWUuCisKK1RoZSBmaWxlIGlub2RlLW5yIGNvbnRhaW5zIHRoZSBmaXJzdCB0d28gaXRlbXMgZnJvbQoraW5vZGUtc3RhdGUsIHNvIHdlJ2xsIHNraXAgdG8gdGhhdCBmaWxlLi4uCisKK0lub2RlLXN0YXRlIGNvbnRhaW5zIHRocmVlIGFjdHVhbCBudW1iZXJzIGFuZCBmb3VyIGR1bW1pZXMuCitUaGUgYWN0dWFsIG51bWJlcnMgYXJlLCBpbiBvcmRlciBvZiBhcHBlYXJhbmNlLCBucl9pbm9kZXMsCitucl9mcmVlX2lub2RlcyBhbmQgcHJlc2hyaW5rLgorCitOcl9pbm9kZXMgc3RhbmRzIGZvciB0aGUgbnVtYmVyIG9mIGlub2RlcyB0aGUgc3lzdGVtIGhhcworYWxsb2NhdGVkLCB0aGlzIGNhbiBiZSBzbGlnaHRseSBtb3JlIHRoYW4gaW5vZGUtbWF4IGJlY2F1c2UKK0xpbnV4IGFsbG9jYXRlcyB0aGVtIG9uZSBwYWdlZnVsIGF0IGEgdGltZS4KKworTnJfZnJlZV9pbm9kZXMgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIGZyZWUgaW5vZGVzICg/KSBhbmQKK3ByZXNocmluayBpcyBub256ZXJvIHdoZW4gdGhlIG5yX2lub2RlcyA+IGlub2RlLW1heCBhbmQgdGhlCitzeXN0ZW0gbmVlZHMgdG8gcHJ1bmUgdGhlIGlub2RlIGxpc3QgaW5zdGVhZCBvZiBhbGxvY2F0aW5nCittb3JlLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitvdmVyZmxvd2dpZCAmIG92ZXJmbG93dWlkOgorCitTb21lIGZpbGVzeXN0ZW1zIG9ubHkgc3VwcG9ydCAxNi1iaXQgVUlEcyBhbmQgR0lEcywgYWx0aG91Z2ggaW4gTGludXgKK1VJRHMgYW5kIEdJRHMgYXJlIDMyIGJpdHMuIFdoZW4gb25lIG9mIHRoZXNlIGZpbGVzeXN0ZW1zIGlzIG1vdW50ZWQKK3dpdGggd3JpdGVzIGVuYWJsZWQsIGFueSBVSUQgb3IgR0lEIHRoYXQgd291bGQgZXhjZWVkIDY1NTM1IGlzIHRyYW5zbGF0ZWQKK3RvIGEgZml4ZWQgdmFsdWUgYmVmb3JlIGJlaW5nIHdyaXR0ZW4gdG8gZGlzay4KKworVGhlc2Ugc3lzY3RscyBhbGxvdyB5b3UgdG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiB0aGUgZml4ZWQgVUlEIGFuZCBHSUQuCitUaGUgZGVmYXVsdCBpcyA2NTUzNC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcGlwZS11c2VyLXBhZ2VzLWhhcmQ6CisKK01heGltdW0gdG90YWwgbnVtYmVyIG9mIHBhZ2VzIGEgbm9uLXByaXZpbGVnZWQgdXNlciBtYXkgYWxsb2NhdGUgZm9yIHBpcGVzLgorT25jZSB0aGlzIGxpbWl0IGlzIHJlYWNoZWQsIG5vIG5ldyBwaXBlcyBtYXkgYmUgYWxsb2NhdGVkIHVudGlsIHVzYWdlIGdvZXMKK2JlbG93IHRoZSBsaW1pdCBhZ2Fpbi4gV2hlbiBzZXQgdG8gMCwgbm8gbGltaXQgaXMgYXBwbGllZCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQKK3NldHRpbmcuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3BpcGUtdXNlci1wYWdlcy1zb2Z0OgorCitNYXhpbXVtIHRvdGFsIG51bWJlciBvZiBwYWdlcyBhIG5vbi1wcml2aWxlZ2VkIHVzZXIgbWF5IGFsbG9jYXRlIGZvciBwaXBlcworYmVmb3JlIHRoZSBwaXBlIHNpemUgZ2V0cyBsaW1pdGVkIHRvIGEgc2luZ2xlIHBhZ2UuIE9uY2UgdGhpcyBsaW1pdCBpcyByZWFjaGVkLAorbmV3IHBpcGVzIHdpbGwgYmUgbGltaXRlZCB0byBhIHNpbmdsZSBwYWdlIGluIHNpemUgZm9yIHRoaXMgdXNlciBpbiBvcmRlciB0bworbGltaXQgdG90YWwgbWVtb3J5IHVzYWdlLCBhbmQgdHJ5aW5nIHRvIGluY3JlYXNlIHRoZW0gdXNpbmcgZmNudGwoKSB3aWxsIGJlCitkZW5pZWQgdW50aWwgdXNhZ2UgZ29lcyBiZWxvdyB0aGUgbGltaXQgYWdhaW4uIFRoZSBkZWZhdWx0IHZhbHVlIGFsbG93cyB0bworYWxsb2NhdGUgdXAgdG8gMTAyNCBwaXBlcyBhdCB0aGVpciBkZWZhdWx0IHNpemUuIFdoZW4gc2V0IHRvIDAsIG5vIGxpbWl0IGlzCithcHBsaWVkLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitwcm90ZWN0ZWRfaGFyZGxpbmtzOgorCitBIGxvbmctc3RhbmRpbmcgY2xhc3Mgb2Ygc2VjdXJpdHkgaXNzdWVzIGlzIHRoZSBoYXJkbGluay1iYXNlZAordGltZS1vZi1jaGVjay10aW1lLW9mLXVzZSByYWNlLCBtb3N0IGNvbW1vbmx5IHNlZW4gaW4gd29ybGQtd3JpdGFibGUKK2RpcmVjdG9yaWVzIGxpa2UgL3RtcC4gVGhlIGNvbW1vbiBtZXRob2Qgb2YgZXhwbG9pdGF0aW9uIG9mIHRoaXMgZmxhdworaXMgdG8gY3Jvc3MgcHJpdmlsZWdlIGJvdW5kYXJpZXMgd2hlbiBmb2xsb3dpbmcgYSBnaXZlbiBoYXJkbGluayAoaS5lLiBhCityb290IHByb2Nlc3MgZm9sbG93cyBhIGhhcmRsaW5rIGNyZWF0ZWQgYnkgYW5vdGhlciB1c2VyKS4gQWRkaXRpb25hbGx5LAorb24gc3lzdGVtcyB3aXRob3V0IHNlcGFyYXRlZCBwYXJ0aXRpb25zLCB0aGlzIHN0b3BzIHVuYXV0aG9yaXplZCB1c2VycworZnJvbSAicGlubmluZyIgdnVsbmVyYWJsZSBzZXR1aWQvc2V0Z2lkIGZpbGVzIGFnYWluc3QgYmVpbmcgdXBncmFkZWQgYnkKK3RoZSBhZG1pbmlzdHJhdG9yLCBvciBsaW5raW5nIHRvIHNwZWNpYWwgZmlsZXMuCisKK1doZW4gc2V0IHRvICIwIiwgaGFyZGxpbmsgY3JlYXRpb24gYmVoYXZpb3IgaXMgdW5yZXN0cmljdGVkLgorCitXaGVuIHNldCB0byAiMSIgaGFyZGxpbmtzIGNhbm5vdCBiZSBjcmVhdGVkIGJ5IHVzZXJzIGlmIHRoZXkgZG8gbm90CithbHJlYWR5IG93biB0aGUgc291cmNlIGZpbGUsIG9yIGRvIG5vdCBoYXZlIHJlYWQvd3JpdGUgYWNjZXNzIHRvIGl0LgorCitUaGlzIHByb3RlY3Rpb24gaXMgYmFzZWQgb24gdGhlIHJlc3RyaWN0aW9ucyBpbiBPcGVud2FsbCBhbmQgZ3JzZWN1cml0eS4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcHJvdGVjdGVkX3N5bWxpbmtzOgorCitBIGxvbmctc3RhbmRpbmcgY2xhc3Mgb2Ygc2VjdXJpdHkgaXNzdWVzIGlzIHRoZSBzeW1saW5rLWJhc2VkCit0aW1lLW9mLWNoZWNrLXRpbWUtb2YtdXNlIHJhY2UsIG1vc3QgY29tbW9ubHkgc2VlbiBpbiB3b3JsZC13cml0YWJsZQorZGlyZWN0b3JpZXMgbGlrZSAvdG1wLiBUaGUgY29tbW9uIG1ldGhvZCBvZiBleHBsb2l0YXRpb24gb2YgdGhpcyBmbGF3CitpcyB0byBjcm9zcyBwcml2aWxlZ2UgYm91bmRhcmllcyB3aGVuIGZvbGxvd2luZyBhIGdpdmVuIHN5bWxpbmsgKGkuZS4gYQorcm9vdCBwcm9jZXNzIGZvbGxvd3MgYSBzeW1saW5rIGJlbG9uZ2luZyB0byBhbm90aGVyIHVzZXIpLiBGb3IgYSBsaWtlbHkKK2luY29tcGxldGUgbGlzdCBvZiBodW5kcmVkcyBvZiBleGFtcGxlcyBhY3Jvc3MgdGhlIHllYXJzLCBwbGVhc2Ugc2VlOgoraHR0cDovL2N2ZS5taXRyZS5vcmcvY2dpLWJpbi9jdmVrZXkuY2dpP2tleXdvcmQ9L3RtcAorCitXaGVuIHNldCB0byAiMCIsIHN5bWxpbmsgZm9sbG93aW5nIGJlaGF2aW9yIGlzIHVucmVzdHJpY3RlZC4KKworV2hlbiBzZXQgdG8gIjEiIHN5bWxpbmtzIGFyZSBwZXJtaXR0ZWQgdG8gYmUgZm9sbG93ZWQgb25seSB3aGVuIG91dHNpZGUKK2Egc3RpY2t5IHdvcmxkLXdyaXRhYmxlIGRpcmVjdG9yeSwgb3Igd2hlbiB0aGUgdWlkIG9mIHRoZSBzeW1saW5rIGFuZAorZm9sbG93ZXIgbWF0Y2gsIG9yIHdoZW4gdGhlIGRpcmVjdG9yeSBvd25lciBtYXRjaGVzIHRoZSBzeW1saW5rJ3Mgb3duZXIuCisKK1RoaXMgcHJvdGVjdGlvbiBpcyBiYXNlZCBvbiB0aGUgcmVzdHJpY3Rpb25zIGluIE9wZW53YWxsIGFuZCBncnNlY3VyaXR5LgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitzdWlkX2R1bXBhYmxlOgorCitUaGlzIHZhbHVlIGNhbiBiZSB1c2VkIHRvIHF1ZXJ5IGFuZCBzZXQgdGhlIGNvcmUgZHVtcCBtb2RlIGZvciBzZXR1aWQKK29yIG90aGVyd2lzZSBwcm90ZWN0ZWQvdGFpbnRlZCBiaW5hcmllcy4gVGhlIG1vZGVzIGFyZQorCiswIC0gKGRlZmF1bHQpIC0gdHJhZGl0aW9uYWwgYmVoYXZpb3VyLiBBbnkgcHJvY2VzcyB3aGljaCBoYXMgY2hhbmdlZAorCXByaXZpbGVnZSBsZXZlbHMgb3IgaXMgZXhlY3V0ZSBvbmx5IHdpbGwgbm90IGJlIGR1bXBlZC4KKzEgLSAoZGVidWcpIC0gYWxsIHByb2Nlc3NlcyBkdW1wIGNvcmUgd2hlbiBwb3NzaWJsZS4gVGhlIGNvcmUgZHVtcCBpcworCW93bmVkIGJ5IHRoZSBjdXJyZW50IHVzZXIgYW5kIG5vIHNlY3VyaXR5IGlzIGFwcGxpZWQuIFRoaXMgaXMKKwlpbnRlbmRlZCBmb3Igc3lzdGVtIGRlYnVnZ2luZyBzaXR1YXRpb25zIG9ubHkuIFB0cmFjZSBpcyB1bmNoZWNrZWQuCisJVGhpcyBpcyBpbnNlY3VyZSBhcyBpdCBhbGxvd3MgcmVndWxhciB1c2VycyB0byBleGFtaW5lIHRoZSBtZW1vcnkKKwljb250ZW50cyBvZiBwcml2aWxlZ2VkIHByb2Nlc3Nlcy4KKzIgLSAoc3VpZHNhZmUpIC0gYW55IGJpbmFyeSB3aGljaCBub3JtYWxseSB3b3VsZCBub3QgYmUgZHVtcGVkIGlzIGR1bXBlZAorCWFueXdheSwgYnV0IG9ubHkgaWYgdGhlICJjb3JlX3BhdHRlcm4iIGtlcm5lbCBzeXNjdGwgaXMgc2V0IHRvCisJZWl0aGVyIGEgcGlwZSBoYW5kbGVyIG9yIGEgZnVsbHkgcXVhbGlmaWVkIHBhdGguIChGb3IgbW9yZSBkZXRhaWxzCisJb24gdGhpcyBsaW1pdGF0aW9uLCBzZWUgQ1ZFLTIwMDYtMjQ1MS4pIFRoaXMgbW9kZSBpcyBhcHByb3ByaWF0ZQorCXdoZW4gYWRtaW5pc3RyYXRvcnMgYXJlIGF0dGVtcHRpbmcgdG8gZGVidWcgcHJvYmxlbXMgaW4gYSBub3JtYWwKKwllbnZpcm9ubWVudCwgYW5kIGVpdGhlciBoYXZlIGEgY29yZSBkdW1wIHBpcGUgaGFuZGxlciB0aGF0IGtub3dzCisJdG8gdHJlYXQgcHJpdmlsZWdlZCBjb3JlIGR1bXBzIHdpdGggY2FyZSwgb3Igc3BlY2lmaWMgZGlyZWN0b3J5CisJZGVmaW5lZCBmb3IgY2F0Y2hpbmcgY29yZSBkdW1wcy4gSWYgYSBjb3JlIGR1bXAgaGFwcGVucyB3aXRob3V0CisJYSBwaXBlIGhhbmRsZXIgb3IgZnVsbHkgcXVhbGlmaWQgcGF0aCwgYSBtZXNzYWdlIHdpbGwgYmUgZW1pdHRlZAorCXRvIHN5c2xvZyB3YXJuaW5nIGFib3V0IHRoZSBsYWNrIG9mIGEgY29ycmVjdCBzZXR0aW5nLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitzdXBlci1tYXggJiBzdXBlci1ucjoKKworVGhlc2UgbnVtYmVycyBjb250cm9sIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzdXBlcmJsb2NrcywgYW5kCit0aHVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBtb3VudGVkIGZpbGVzeXN0ZW1zIHRoZSBrZXJuZWwKK2NhbiBoYXZlLiBZb3Ugb25seSBuZWVkIHRvIGluY3JlYXNlIHN1cGVyLW1heCBpZiB5b3UgbmVlZCB0bworbW91bnQgbW9yZSBmaWxlc3lzdGVtcyB0aGFuIHRoZSBjdXJyZW50IHZhbHVlIGluIHN1cGVyLW1heAorYWxsb3dzIHlvdSB0by4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworYWlvLW5yICYgYWlvLW1heC1ucjoKKworYWlvLW5yIHNob3dzIHRoZSBjdXJyZW50IHN5c3RlbS13aWRlIG51bWJlciBvZiBhc3luY2hyb25vdXMgaW8KK3JlcXVlc3RzLiAgYWlvLW1heC1uciBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgbWF4aW11bSB2YWx1ZQorYWlvLW5yIGNhbiBncm93IHRvLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCittb3VudC1tYXg6CisKK1RoaXMgZGVub3RlcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgbW91bnRzIHRoYXQgbWF5IGV4aXN0CitpbiBhIG1vdW50IG5hbWVzcGFjZS4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCisyLiAvcHJvYy9zeXMvZnMvYmluZm10X21pc2MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRG9jdW1lbnRhdGlvbiBmb3IgdGhlIGZpbGVzIGluIC9wcm9jL3N5cy9mcy9iaW5mbXRfbWlzYyBpcworaW4gRG9jdW1lbnRhdGlvbi9iaW5mbXRfbWlzYy50eHQuCisKKworMy4gL3Byb2Mvc3lzL2ZzL21xdWV1ZSAtIFBPU0lYIG1lc3NhZ2UgcXVldWVzIGZpbGVzeXN0ZW0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlICJtcXVldWUiICBmaWxlc3lzdGVtIHByb3ZpZGVzICB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBmZWF0dXJlcyB0byBlbmFibGUgdGhlCitjcmVhdGlvbiBvZiBhICB1c2VyIHNwYWNlICBsaWJyYXJ5IHRoYXQgIGltcGxlbWVudHMgIHRoZSAgUE9TSVggbWVzc2FnZSBxdWV1ZXMKK0FQSSAoYXMgbm90ZWQgYnkgdGhlICBNU0cgdGFnIGluIHRoZSAgUE9TSVggMTAwMy4xLTIwMDEgdmVyc2lvbiAgb2YgdGhlIFN5c3RlbQorSW50ZXJmYWNlcyBzcGVjaWZpY2F0aW9uLikKKworVGhlICJtcXVldWUiIGZpbGVzeXN0ZW0gY29udGFpbnMgdmFsdWVzIGZvciBkZXRlcm1pbmluZy9zZXR0aW5nICB0aGUgYW1vdW50IG9mCityZXNvdXJjZXMgdXNlZCBieSB0aGUgZmlsZSBzeXN0ZW0uCisKKy9wcm9jL3N5cy9mcy9tcXVldWUvcXVldWVzX21heCBpcyBhIHJlYWQvd3JpdGUgIGZpbGUgZm9yICBzZXR0aW5nL2dldHRpbmcgIHRoZQorbWF4aW11bSBudW1iZXIgb2YgbWVzc2FnZSBxdWV1ZXMgYWxsb3dlZCBvbiB0aGUgc3lzdGVtLgorCisvcHJvYy9zeXMvZnMvbXF1ZXVlL21zZ19tYXggIGlzICBhICByZWFkL3dyaXRlIGZpbGUgIGZvciAgc2V0dGluZy9nZXR0aW5nICB0aGUKK21heGltdW0gbnVtYmVyIG9mIG1lc3NhZ2VzIGluIGEgcXVldWUgdmFsdWUuICBJbiBmYWN0IGl0IGlzIHRoZSBsaW1pdGluZyB2YWx1ZQorZm9yIGFub3RoZXIgKHVzZXIpIGxpbWl0IHdoaWNoIGlzIHNldCBpbiBtcV9vcGVuIGludm9jYXRpb24uIFRoaXMgYXR0cmlidXRlIG9mCithIHF1ZXVlIG11c3QgYmUgbGVzcyBvciBlcXVhbCB0aGVuIG1zZ19tYXguCisKKy9wcm9jL3N5cy9mcy9tcXVldWUvbXNnc2l6ZV9tYXggaXMgIGEgcmVhZC93cml0ZSAgZmlsZSBmb3Igc2V0dGluZy9nZXR0aW5nIHRoZQorbWF4aW11bSAgbWVzc2FnZSBzaXplIHZhbHVlIChpdCBpcyBldmVyeSAgbWVzc2FnZSBxdWV1ZSdzIGF0dHJpYnV0ZSBzZXQgZHVyaW5nCitpdHMgY3JlYXRpb24pLgorCisvcHJvYy9zeXMvZnMvbXF1ZXVlL21zZ19kZWZhdWx0IGlzICBhIHJlYWQvd3JpdGUgIGZpbGUgZm9yIHNldHRpbmcvZ2V0dGluZyB0aGUKK2RlZmF1bHQgbnVtYmVyIG9mIG1lc3NhZ2VzIGluIGEgcXVldWUgdmFsdWUgaWYgYXR0ciBwYXJhbWV0ZXIgb2YgbXFfb3BlbigyKSBpcworTlVMTC4gSWYgaXQgZXhjZWVkIG1zZ19tYXgsIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluaXRpYWxpemVkIG1zZ19tYXguCisKKy9wcm9jL3N5cy9mcy9tcXVldWUvbXNnc2l6ZV9kZWZhdWx0IGlzIGEgcmVhZC93cml0ZSBmaWxlIGZvciBzZXR0aW5nL2dldHRpbmcKK3RoZSBkZWZhdWx0IG1lc3NhZ2Ugc2l6ZSB2YWx1ZSBpZiBhdHRyIHBhcmFtZXRlciBvZiBtcV9vcGVuKDIpIGlzIE5VTEwuIElmIGl0CitleGNlZWQgbXNnc2l6ZV9tYXgsIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluaXRpYWxpemVkIG1zZ3NpemVfbWF4LgorCis0LiAvcHJvYy9zeXMvZnMvZXBvbGwgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBlcG9sbCBpbnRlcmZhY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGVwb2xsKDcpIGludGVyZmFjZS4KKworbWF4X3VzZXJfd2F0Y2hlcworLS0tLS0tLS0tLS0tLS0tLQorCitFdmVyeSBlcG9sbCBmaWxlIGRlc2NyaXB0b3IgY2FuIHN0b3JlIGEgbnVtYmVyIG9mIGZpbGVzIHRvIGJlIG1vbml0b3JlZAorZm9yIGV2ZW50IHJlYWRpbmVzcy4gRWFjaCBvbmUgb2YgdGhlc2UgbW9uaXRvcmVkIGZpbGVzIGNvbnN0aXR1dGVzIGEgIndhdGNoIi4KK1RoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gc2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgIndhdGNoZXMiIHRoYXQgYXJlCithbGxvd2VkIGZvciBlYWNoIHVzZXIuCitFYWNoICJ3YXRjaCIgY29zdHMgcm91Z2hseSA5MCBieXRlcyBvbiBhIDMyYml0IGtlcm5lbCwgYW5kIHJvdWdobHkgMTYwIGJ5dGVzCitvbiBhIDY0Yml0IG9uZS4KK1RoZSBjdXJyZW50IGRlZmF1bHQgdmFsdWUgZm9yICBtYXhfdXNlcl93YXRjaGVzICBpcyB0aGUgMS8zMiBvZiB0aGUgYXZhaWxhYmxlCitsb3cgbWVtb3J5LCBkaXZpZGVkIGZvciB0aGUgIndhdGNoIiBjb3N0IGluIGJ5dGVzLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3N5c2N0bC9rZXJuZWwudHh0IGIvRG9jdW1lbnRhdGlvbi9zeXNjdGwva2VybmVsLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTYxZDUzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zeXNjdGwva2VybmVsLnR4dApAQCAtMCwwICsxLDk2NyBAQAorRG9jdW1lbnRhdGlvbiBmb3IgL3Byb2Mvc3lzL2tlcm5lbC8qCWtlcm5lbCB2ZXJzaW9uIDIuMi4xMAorCShjKSAxOTk4LCAxOTk5LCAgUmlrIHZhbiBSaWVsIDxyaWVsQG5sLmxpbnV4Lm9yZz4KKwkoYykgMjAwOSwgICAgICAgIFNoZW4gRmVuZzxzaGVuQGNuLmZ1aml0c3UuY29tPgorCitGb3IgZ2VuZXJhbCBpbmZvIGFuZCBsZWdhbCBibHVyYiwgcGxlYXNlIGxvb2sgaW4gUkVBRE1FLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGZpbGUgY29udGFpbnMgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHN5c2N0bCBmaWxlcyBpbgorL3Byb2Mvc3lzL2tlcm5lbC8gYW5kIGlzIHZhbGlkIGZvciBMaW51eCBrZXJuZWwgdmVyc2lvbiAyLjIuCisKK1RoZSBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeSBjYW4gYmUgdXNlZCB0byB0dW5lIGFuZCBtb25pdG9yCittaXNjZWxsYW5lb3VzIGFuZCBnZW5lcmFsIHRoaW5ncyBpbiB0aGUgb3BlcmF0aW9uIG9mIHRoZSBMaW51eAora2VybmVsLiBTaW5jZSBzb21lIG9mIHRoZSBmaWxlcyBfY2FuXyBiZSB1c2VkIHRvIHNjcmV3IHVwIHlvdXIKK3N5c3RlbSwgaXQgaXMgYWR2aXNhYmxlIHRvIHJlYWQgYm90aCBkb2N1bWVudGF0aW9uIGFuZCBzb3VyY2UKK2JlZm9yZSBhY3R1YWxseSBtYWtpbmcgYWRqdXN0bWVudHMuCisKK0N1cnJlbnRseSwgdGhlc2UgZmlsZXMgbWlnaHQgKGRlcGVuZGluZyBvbiB5b3VyIGNvbmZpZ3VyYXRpb24pCitzaG93IHVwIGluIC9wcm9jL3N5cy9rZXJuZWw6CisKKy0gYWNjdAorLSBhY3BpX3ZpZGVvX2ZsYWdzCistIGF1dG9fbXNnbW5pCistIGJvb3Rsb2FkZXJfdHlwZQkgICAgIFsgWDg2IG9ubHkgXQorLSBib290bG9hZGVyX3ZlcnNpb24JICAgICBbIFg4NiBvbmx5IF0KKy0gY2FsbGhvbWUJCSAgICAgWyBTMzkwIG9ubHkgXQorLSBjYXBfbGFzdF9jYXAKKy0gY29yZV9wYXR0ZXJuCistIGNvcmVfcGlwZV9saW1pdAorLSBjb3JlX3VzZXNfcGlkCistIGN0cmwtYWx0LWRlbAorLSBkbWVzZ19yZXN0cmljdAorLSBkb21haW5uYW1lCistIGhvc3RuYW1lCistIGhvdHBsdWcKKy0gaGFyZGxvY2t1cF9hbGxfY3B1X2JhY2t0cmFjZQorLSBodW5nX3Rhc2tfcGFuaWMKKy0gaHVuZ190YXNrX2NoZWNrX2NvdW50CistIGh1bmdfdGFza190aW1lb3V0X3NlY3MKKy0gaHVuZ190YXNrX3dhcm5pbmdzCistIGtleGVjX2xvYWRfZGlzYWJsZWQKKy0ga3B0cl9yZXN0cmljdAorLSBrc3RhY2tfZGVwdGhfdG9fcHJpbnQgICAgICAgWyBYODYgb25seSBdCistIGwyY3IgICAgICAgICAgICAgICAgICAgICAgICBbIFBQQyBvbmx5IF0KKy0gbW9kcHJvYmUgICAgICAgICAgICAgICAgICAgID09PiBEb2N1bWVudGF0aW9uL2RlYnVnZ2luZy1tb2R1bGVzLnR4dAorLSBtb2R1bGVzX2Rpc2FibGVkCistIG1zZ19uZXh0X2lkCQkgICAgICBbIHN5c3YgaXBjIF0KKy0gbXNnbWF4CistIG1zZ21uYgorLSBtc2dtbmkKKy0gbm1pX3dhdGNoZG9nCistIG9zcmVsZWFzZQorLSBvc3R5cGUKKy0gb3ZlcmZsb3dnaWQKKy0gb3ZlcmZsb3d1aWQKKy0gcGFuaWMKKy0gcGFuaWNfb25fb29wcworLSBwYW5pY19vbl9zdGFja292ZXJmbG93CistIHBhbmljX29uX3VucmVjb3ZlcmVkX25taQorLSBwYW5pY19vbl93YXJuCistIHBpZF9tYXgKKy0gcG93ZXJzYXZlLW5hcCAgICAgICAgICAgICAgIFsgUFBDIG9ubHkgXQorLSBwcmludGsKKy0gcHJpbnRrX2RlbGF5CistIHByaW50a19yYXRlbGltaXQKKy0gcHJpbnRrX3JhdGVsaW1pdF9idXJzdAorLSByYW5kb21pemVfdmFfc3BhY2UKKy0gcmVhbC1yb290LWRldiAgICAgICAgICAgICAgID09PiBEb2N1bWVudGF0aW9uL2luaXRyZC50eHQKKy0gcmVib290LWNtZCAgICAgICAgICAgICAgICAgIFsgU1BBUkMgb25seSBdCistIHJ0c2lnLW1heAorLSBydHNpZy1ucgorLSBzZW0KKy0gc2VtX25leHRfaWQJCSAgICAgIFsgc3lzdiBpcGMgXQorLSBzZy1iaWctYnVmZiAgICAgICAgICAgICAgICAgWyBnZW5lcmljIFNDU0kgZGV2aWNlIChzZykgXQorLSBzaG1fbmV4dF9pZAkJICAgICAgWyBzeXN2IGlwYyBdCistIHNobV9ybWlkX2ZvcmNlZAorLSBzaG1hbGwKKy0gc2htbWF4ICAgICAgICAgICAgICAgICAgICAgIFsgc3lzdiBpcGMgXQorLSBzaG1tbmkKKy0gc29mdGxvY2t1cF9hbGxfY3B1X2JhY2t0cmFjZQorLSBzb2Z0X3dhdGNoZG9nCistIHN0b3AtYSAgICAgICAgICAgICAgICAgICAgICBbIFNQQVJDIG9ubHkgXQorLSBzeXNycSAgICAgICAgICAgICAgICAgICAgICAgPT0+IERvY3VtZW50YXRpb24vc3lzcnEudHh0CistIHN5c2N0bF93cml0ZXNfc3RyaWN0CistIHRhaW50ZWQKKy0gdGhyZWFkcy1tYXgKKy0gdW5rbm93bl9ubWlfcGFuaWMKKy0gd2F0Y2hkb2cKKy0gd2F0Y2hkb2dfdGhyZXNoCistIHZlcnNpb24KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworYWNjdDoKKworaGlnaHdhdGVyIGxvd3dhdGVyIGZyZXF1ZW5jeQorCitJZiBCU0Qtc3R5bGUgcHJvY2VzcyBhY2NvdW50aW5nIGlzIGVuYWJsZWQgdGhlc2UgdmFsdWVzIGNvbnRyb2wKK2l0cyBiZWhhdmlvdXIuIElmIGZyZWUgc3BhY2Ugb24gZmlsZXN5c3RlbSB3aGVyZSB0aGUgbG9nIGxpdmVzCitnb2VzIGJlbG93IDxsb3d3YXRlcj4lIGFjY291bnRpbmcgc3VzcGVuZHMuIElmIGZyZWUgc3BhY2UgZ2V0cworYWJvdmUgPGhpZ2h3YXRlcj4lIGFjY291bnRpbmcgcmVzdW1lcy4gPEZyZXF1ZW5jeT4gZGV0ZXJtaW5lcworaG93IG9mdGVuIGRvIHdlIGNoZWNrIHRoZSBhbW91bnQgb2YgZnJlZSBzcGFjZSAodmFsdWUgaXMgaW4KK3NlY29uZHMpLiBEZWZhdWx0OgorNCAyIDMwCitUaGF0IGlzLCBzdXNwZW5kIGFjY291bnRpbmcgaWYgdGhlcmUgbGVmdCA8PSAyJSBmcmVlOyByZXN1bWUgaXQKK2lmIHdlIGdvdCA+PTQlOyBjb25zaWRlciBpbmZvcm1hdGlvbiBhYm91dCBhbW91bnQgb2YgZnJlZSBzcGFjZQordmFsaWQgZm9yIDMwIHNlY29uZHMuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2FjcGlfdmlkZW9fZmxhZ3M6CisKK2ZsYWdzCisKK1NlZSBEb2MqL2tlcm5lbC9wb3dlci92aWRlby50eHQsIGl0IGFsbG93cyBtb2RlIG9mIHZpZGVvIGJvb3QgdG8gYmUKK3NldCBkdXJpbmcgcnVuIHRpbWUuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2F1dG9fbXNnbW5pOgorCitUaGlzIHZhcmlhYmxlIGhhcyBubyBlZmZlY3QgYW5kIG1heSBiZSByZW1vdmVkIGluIGZ1dHVyZSBrZXJuZWwKK3JlbGVhc2VzLiBSZWFkaW5nIGl0IGFsd2F5cyByZXR1cm5zIDAuCitVcCB0byBMaW51eCAzLjE3LCBpdCBlbmFibGVkL2Rpc2FibGVkIGF1dG9tYXRpYyByZWNvbXB1dGluZyBvZiBtc2dtbmkKK3Vwb24gbWVtb3J5IGFkZC9yZW1vdmUgb3IgdXBvbiBpcGMgbmFtZXNwYWNlIGNyZWF0aW9uL3JlbW92YWwuCitFY2hvaW5nICIxIiBpbnRvIHRoaXMgZmlsZSBlbmFibGVkIG1zZ21uaSBhdXRvbWF0aWMgcmVjb21wdXRpbmcuCitFY2hvaW5nICIwIiB0dXJuZWQgaXQgb2ZmLiBhdXRvX21zZ21uaSBkZWZhdWx0IHZhbHVlIHdhcyAxLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2Jvb3Rsb2FkZXJfdHlwZToKKworeDg2IGJvb3Rsb2FkZXIgaWRlbnRpZmljYXRpb24KKworVGhpcyBnaXZlcyB0aGUgYm9vdGxvYWRlciB0eXBlIG51bWJlciBhcyBpbmRpY2F0ZWQgYnkgdGhlIGJvb3Rsb2FkZXIsCitzaGlmdGVkIGxlZnQgYnkgNCwgYW5kIE9SJ2Qgd2l0aCB0aGUgbG93IGZvdXIgYml0cyBvZiB0aGUgYm9vdGxvYWRlcgordmVyc2lvbi4gIFRoZSByZWFzb24gZm9yIHRoaXMgZW5jb2RpbmcgaXMgdGhhdCB0aGlzIHVzZWQgdG8gbWF0Y2ggdGhlCit0eXBlX29mX2xvYWRlciBmaWVsZCBpbiB0aGUga2VybmVsIGhlYWRlcjsgdGhlIGVuY29kaW5nIGlzIGtlcHQgZm9yCitiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4gIFRoYXQgaXMsIGlmIHRoZSBmdWxsIGJvb3Rsb2FkZXIgdHlwZSBudW1iZXIKK2lzIDB4MTUgYW5kIHRoZSBmdWxsIHZlcnNpb24gbnVtYmVyIGlzIDB4MjM0LCB0aGlzIGZpbGUgd2lsbCBjb250YWluCit0aGUgdmFsdWUgMzQwID0gMHgxNTQuCisKK1NlZSB0aGUgdHlwZV9vZl9sb2FkZXIgYW5kIGV4dF9sb2FkZXJfdHlwZSBmaWVsZHMgaW4KK0RvY3VtZW50YXRpb24veDg2L2Jvb3QudHh0IGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitib290bG9hZGVyX3ZlcnNpb246CisKK3g4NiBib290bG9hZGVyIHZlcnNpb24KKworVGhlIGNvbXBsZXRlIGJvb3Rsb2FkZXIgdmVyc2lvbiBudW1iZXIuICBJbiB0aGUgZXhhbXBsZSBhYm92ZSwgdGhpcworZmlsZSB3aWxsIGNvbnRhaW4gdGhlIHZhbHVlIDU2NCA9IDB4MjM0LgorCitTZWUgdGhlIHR5cGVfb2ZfbG9hZGVyIGFuZCBleHRfbG9hZGVyX3ZlciBmaWVsZHMgaW4KK0RvY3VtZW50YXRpb24veDg2L2Jvb3QudHh0IGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitjYWxsaG9tZToKKworQ29udHJvbHMgdGhlIGtlcm5lbCdzIGNhbGxob21lIGJlaGF2aW9yIGluIGNhc2Ugb2YgYSBrZXJuZWwgcGFuaWMuCisKK1RoZSBzMzkwIGhhcmR3YXJlIGFsbG93cyBhbiBvcGVyYXRpbmcgc3lzdGVtIHRvIHNlbmQgYSBub3RpZmljYXRpb24KK3RvIGEgc2VydmljZSBvcmdhbml6YXRpb24gKGNhbGxob21lKSBpbiBjYXNlIG9mIGFuIG9wZXJhdGluZyBzeXN0ZW0gcGFuaWMuCisKK1doZW4gdGhlIHZhbHVlIGluIHRoaXMgZmlsZSBpcyAwICh3aGljaCBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvcikKK25vdGhpbmcgaGFwcGVucyBpbiBjYXNlIG9mIGEga2VybmVsIHBhbmljLiBJZiB0aGlzIHZhbHVlIGlzIHNldCB0byAiMSIKK3RoZSBjb21wbGV0ZSBrZXJuZWwgb29wcyBtZXNzYWdlIGlzIHNlbmQgdG8gdGhlIElCTSBjdXN0b21lciBzZXJ2aWNlCitvcmdhbml6YXRpb24gaW4gY2FzZSB0aGUgbWFpbmZyYW1lIHRoZSBMaW51eCBvcGVyYXRpbmcgc3lzdGVtIGlzIHJ1bm5pbmcKK29uIGhhcyBhIHNlcnZpY2UgY29udHJhY3Qgd2l0aCBJQk0uCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2NhcF9sYXN0X2NhcAorCitIaWdoZXN0IHZhbGlkIGNhcGFiaWxpdHkgb2YgdGhlIHJ1bm5pbmcga2VybmVsLiAgRXhwb3J0cworQ0FQX0xBU1RfQ0FQIGZyb20gdGhlIGtlcm5lbC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworY29yZV9wYXR0ZXJuOgorCitjb3JlX3BhdHRlcm4gaXMgdXNlZCB0byBzcGVjaWZ5IGEgY29yZSBkdW1wZmlsZSBwYXR0ZXJuIG5hbWUuCisuIG1heCBsZW5ndGggMTI4IGNoYXJhY3RlcnM7IGRlZmF1bHQgdmFsdWUgaXMgImNvcmUiCisuIGNvcmVfcGF0dGVybiBpcyB1c2VkIGFzIGEgcGF0dGVybiB0ZW1wbGF0ZSBmb3IgdGhlIG91dHB1dCBmaWxlbmFtZTsKKyAgY2VydGFpbiBzdHJpbmcgcGF0dGVybnMgKGJlZ2lubmluZyB3aXRoICclJykgYXJlIHN1YnN0aXR1dGVkIHdpdGgKKyAgdGhlaXIgYWN0dWFsIHZhbHVlcy4KKy4gYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIGNvcmVfdXNlc19waWQ6CisJSWYgY29yZV9wYXR0ZXJuIGRvZXMgbm90IGluY2x1ZGUgIiVwIiAoZGVmYXVsdCBkb2VzIG5vdCkKKwlhbmQgY29yZV91c2VzX3BpZCBpcyBzZXQsIHRoZW4gLlBJRCB3aWxsIGJlIGFwcGVuZGVkIHRvCisJdGhlIGZpbGVuYW1lLgorLiBjb3JlbmFtZSBmb3JtYXQgc3BlY2lmaWVyczoKKwklPE5VTD4JJyUnIGlzIGRyb3BwZWQKKwklJQlvdXRwdXQgb25lICclJworCSVwCXBpZAorCSVQCWdsb2JhbCBwaWQgKGluaXQgUElEIG5hbWVzcGFjZSkKKwklaQl0aWQKKwklSQlnbG9iYWwgdGlkIChpbml0IFBJRCBuYW1lc3BhY2UpCisJJXUJdWlkIChpbiBpbml0aWFsIHVzZXIgbmFtZXNwYWNlKQorCSVnCWdpZCAoaW4gaW5pdGlhbCB1c2VyIG5hbWVzcGFjZSkKKwklZAlkdW1wIG1vZGUsIG1hdGNoZXMgUFJfU0VUX0RVTVBBQkxFIGFuZAorCQkvcHJvYy9zeXMvZnMvc3VpZF9kdW1wYWJsZQorCSVzCXNpZ25hbCBudW1iZXIKKwkldAlVTklYIHRpbWUgb2YgZHVtcAorCSVoCWhvc3RuYW1lCisJJWUJZXhlY3V0YWJsZSBmaWxlbmFtZSAobWF5IGJlIHNob3J0ZW5lZCkKKwklRQlleGVjdXRhYmxlIHBhdGgKKwklPE9USEVSPiBib3RoIGFyZSBkcm9wcGVkCisuIElmIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHBhdHRlcm4gaXMgYSAnfCcsIHRoZSBrZXJuZWwgd2lsbCB0cmVhdAorICB0aGUgcmVzdCBvZiB0aGUgcGF0dGVybiBhcyBhIGNvbW1hbmQgdG8gcnVuLiAgVGhlIGNvcmUgZHVtcCB3aWxsIGJlCisgIHdyaXR0ZW4gdG8gdGhlIHN0YW5kYXJkIGlucHV0IG9mIHRoYXQgcHJvZ3JhbSBpbnN0ZWFkIG9mIHRvIGEgZmlsZS4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworY29yZV9waXBlX2xpbWl0OgorCitUaGlzIHN5c2N0bCBpcyBvbmx5IGFwcGxpY2FibGUgd2hlbiBjb3JlX3BhdHRlcm4gaXMgY29uZmlndXJlZCB0byBwaXBlCitjb3JlIGZpbGVzIHRvIGEgdXNlciBzcGFjZSBoZWxwZXIgKHdoZW4gdGhlIGZpcnN0IGNoYXJhY3RlciBvZgorY29yZV9wYXR0ZXJuIGlzIGEgJ3wnLCBzZWUgYWJvdmUpLiAgV2hlbiBjb2xsZWN0aW5nIGNvcmVzIHZpYSBhIHBpcGUKK3RvIGFuIGFwcGxpY2F0aW9uLCBpdCBpcyBvY2Nhc2lvbmFsbHkgdXNlZnVsIGZvciB0aGUgY29sbGVjdGluZworYXBwbGljYXRpb24gdG8gZ2F0aGVyIGRhdGEgYWJvdXQgdGhlIGNyYXNoaW5nIHByb2Nlc3MgZnJvbSBpdHMKKy9wcm9jL3BpZCBkaXJlY3RvcnkuICBJbiBvcmRlciB0byBkbyB0aGlzIHNhZmVseSwgdGhlIGtlcm5lbCBtdXN0IHdhaXQKK2ZvciB0aGUgY29sbGVjdGluZyBwcm9jZXNzIHRvIGV4aXQsIHNvIGFzIG5vdCB0byByZW1vdmUgdGhlIGNyYXNoaW5nCitwcm9jZXNzZXMgcHJvYyBmaWxlcyBwcmVtYXR1cmVseS4gIFRoaXMgaW4gdHVybiBjcmVhdGVzIHRoZQorcG9zc2liaWxpdHkgdGhhdCBhIG1pc2JlaGF2aW5nIHVzZXJzcGFjZSBjb2xsZWN0aW5nIHByb2Nlc3MgY2FuIGJsb2NrCit0aGUgcmVhcGluZyBvZiBhIGNyYXNoZWQgcHJvY2VzcyBzaW1wbHkgYnkgbmV2ZXIgZXhpdGluZy4gIFRoaXMgc3lzY3RsCitkZWZlbmRzIGFnYWluc3QgdGhhdC4gIEl0IGRlZmluZXMgaG93IG1hbnkgY29uY3VycmVudCBjcmFzaGluZworcHJvY2Vzc2VzIG1heSBiZSBwaXBlZCB0byB1c2VyIHNwYWNlIGFwcGxpY2F0aW9ucyBpbiBwYXJhbGxlbC4gIElmCit0aGlzIHZhbHVlIGlzIGV4Y2VlZGVkLCB0aGVuIHRob3NlIGNyYXNoaW5nIHByb2Nlc3NlcyBhYm92ZSB0aGF0IHZhbHVlCithcmUgbm90ZWQgdmlhIHRoZSBrZXJuZWwgbG9nIGFuZCB0aGVpciBjb3JlcyBhcmUgc2tpcHBlZC4gIDAgaXMgYQorc3BlY2lhbCB2YWx1ZSwgaW5kaWNhdGluZyB0aGF0IHVubGltaXRlZCBwcm9jZXNzZXMgbWF5IGJlIGNhcHR1cmVkIGluCitwYXJhbGxlbCwgYnV0IHRoYXQgbm8gd2FpdGluZyB3aWxsIHRha2UgcGxhY2UgKGkuZS4gdGhlIGNvbGxlY3RpbmcKK3Byb2Nlc3MgaXMgbm90IGd1YXJhbnRlZWQgYWNjZXNzIHRvIC9wcm9jLzxjcmFzaGluZyBwaWQ+LykuICBUaGlzCit2YWx1ZSBkZWZhdWx0cyB0byAwLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitjb3JlX3VzZXNfcGlkOgorCitUaGUgZGVmYXVsdCBjb3JlZHVtcCBmaWxlbmFtZSBpcyAiY29yZSIuICBCeSBzZXR0aW5nCitjb3JlX3VzZXNfcGlkIHRvIDEsIHRoZSBjb3JlZHVtcCBmaWxlbmFtZSBiZWNvbWVzIGNvcmUuUElELgorSWYgY29yZV9wYXR0ZXJuIGRvZXMgbm90IGluY2x1ZGUgIiVwIiAoZGVmYXVsdCBkb2VzIG5vdCkKK2FuZCBjb3JlX3VzZXNfcGlkIGlzIHNldCwgdGhlbiAuUElEIHdpbGwgYmUgYXBwZW5kZWQgdG8KK3RoZSBmaWxlbmFtZS4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworY3RybC1hbHQtZGVsOgorCitXaGVuIHRoZSB2YWx1ZSBpbiB0aGlzIGZpbGUgaXMgMCwgY3RybC1hbHQtZGVsIGlzIHRyYXBwZWQgYW5kCitzZW50IHRvIHRoZSBpbml0KDEpIHByb2dyYW0gdG8gaGFuZGxlIGEgZ3JhY2VmdWwgcmVzdGFydC4KK1doZW4sIGhvd2V2ZXIsIHRoZSB2YWx1ZSBpcyA+IDAsIExpbnV4J3MgcmVhY3Rpb24gdG8gYSBWdWxjYW4KK05lcnZlIFBpbmNoICh0bSkgd2lsbCBiZSBhbiBpbW1lZGlhdGUgcmVib290LCB3aXRob3V0IGV2ZW4KK3N5bmNpbmcgaXRzIGRpcnR5IGJ1ZmZlcnMuCisKK05vdGU6IHdoZW4gYSBwcm9ncmFtIChsaWtlIGRvc2VtdSkgaGFzIHRoZSBrZXlib2FyZCBpbiAncmF3JworbW9kZSwgdGhlIGN0cmwtYWx0LWRlbCBpcyBpbnRlcmNlcHRlZCBieSB0aGUgcHJvZ3JhbSBiZWZvcmUgaXQKK2V2ZXIgcmVhY2hlcyB0aGUga2VybmVsIHR0eSBsYXllciwgYW5kIGl0J3MgdXAgdG8gdGhlIHByb2dyYW0KK3RvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggaXQuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2RtZXNnX3Jlc3RyaWN0OgorCitUaGlzIHRvZ2dsZSBpbmRpY2F0ZXMgd2hldGhlciB1bnByaXZpbGVnZWQgdXNlcnMgYXJlIHByZXZlbnRlZAorZnJvbSB1c2luZyBkbWVzZyg4KSB0byB2aWV3IG1lc3NhZ2VzIGZyb20gdGhlIGtlcm5lbCdzIGxvZyBidWZmZXIuCitXaGVuIGRtZXNnX3Jlc3RyaWN0IGlzIHNldCB0byAoMCkgdGhlcmUgYXJlIG5vIHJlc3RyaWN0aW9ucy4gV2hlbgorZG1lc2dfcmVzdHJpY3QgaXMgc2V0IHNldCB0byAoMSksIHVzZXJzIG11c3QgaGF2ZSBDQVBfU1lTTE9HIHRvIHVzZQorZG1lc2coOCkuCisKK1RoZSBrZXJuZWwgY29uZmlnIG9wdGlvbiBDT05GSUdfU0VDVVJJVFlfRE1FU0dfUkVTVFJJQ1Qgc2V0cyB0aGUKK2RlZmF1bHQgdmFsdWUgb2YgZG1lc2dfcmVzdHJpY3QuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2RvbWFpbm5hbWUgJiBob3N0bmFtZToKKworVGhlc2UgZmlsZXMgY2FuIGJlIHVzZWQgdG8gc2V0IHRoZSBOSVMvWVAgZG9tYWlubmFtZSBhbmQgdGhlCitob3N0bmFtZSBvZiB5b3VyIGJveCBpbiBleGFjdGx5IHRoZSBzYW1lIHdheSBhcyB0aGUgY29tbWFuZHMKK2RvbWFpbm5hbWUgYW5kIGhvc3RuYW1lLCBpLmUuOgorIyBlY2hvICJkYXJrc3RhciIgPiAvcHJvYy9zeXMva2VybmVsL2hvc3RuYW1lCisjIGVjaG8gIm15ZG9tYWluIiA+IC9wcm9jL3N5cy9rZXJuZWwvZG9tYWlubmFtZQoraGFzIHRoZSBzYW1lIGVmZmVjdCBhcworIyBob3N0bmFtZSAiZGFya3N0YXIiCisjIGRvbWFpbm5hbWUgIm15ZG9tYWluIgorCitOb3RlLCBob3dldmVyLCB0aGF0IHRoZSBjbGFzc2ljIGRhcmtzdGFyLmZyb3Aub3JnIGhhcyB0aGUKK2hvc3RuYW1lICJkYXJrc3RhciIgYW5kIEROUyAoSW50ZXJuZXQgRG9tYWluIE5hbWUgU2VydmVyKQorZG9tYWlubmFtZSAiZnJvcC5vcmciLCBub3QgdG8gYmUgY29uZnVzZWQgd2l0aCB0aGUgTklTIChOZXR3b3JrCitJbmZvcm1hdGlvbiBTZXJ2aWNlKSBvciBZUCAoWWVsbG93IFBhZ2VzKSBkb21haW5uYW1lLiBUaGVzZSB0d28KK2RvbWFpbiBuYW1lcyBhcmUgaW4gZ2VuZXJhbCBkaWZmZXJlbnQuIEZvciBhIGRldGFpbGVkIGRpc2N1c3Npb24KK3NlZSB0aGUgaG9zdG5hbWUoMSkgbWFuIHBhZ2UuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitoYXJkbG9ja3VwX2FsbF9jcHVfYmFja3RyYWNlOgorCitUaGlzIHZhbHVlIGNvbnRyb2xzIHRoZSBoYXJkIGxvY2t1cCBkZXRlY3RvciBiZWhhdmlvciB3aGVuIGEgaGFyZAorbG9ja3VwIGNvbmRpdGlvbiBpcyBkZXRlY3RlZCBhcyB0byB3aGV0aGVyIG9yIG5vdCB0byBnYXRoZXIgZnVydGhlcgorZGVidWcgaW5mb3JtYXRpb24uIElmIGVuYWJsZWQsIGFyY2gtc3BlY2lmaWMgYWxsLUNQVSBzdGFjayBkdW1waW5nCit3aWxsIGJlIGluaXRpYXRlZC4KKworMDogZG8gbm90aGluZy4gVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci4KKworMTogb24gZGV0ZWN0aW9uIGNhcHR1cmUgbW9yZSBkZWJ1ZyBpbmZvcm1hdGlvbi4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2hvdHBsdWc6CisKK1BhdGggZm9yIHRoZSBob3RwbHVnIHBvbGljeSBhZ2VudC4KK0RlZmF1bHQgdmFsdWUgaXMgIi9zYmluL2hvdHBsdWciLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitodW5nX3Rhc2tfcGFuaWM6CisKK0NvbnRyb2xzIHRoZSBrZXJuZWwncyBiZWhhdmlvciB3aGVuIGEgaHVuZyB0YXNrIGlzIGRldGVjdGVkLgorVGhpcyBmaWxlIHNob3dzIHVwIGlmIENPTkZJR19ERVRFQ1RfSFVOR19UQVNLIGlzIGVuYWJsZWQuCisKKzA6IGNvbnRpbnVlIG9wZXJhdGlvbi4gVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci4KKworMTogcGFuaWMgaW1tZWRpYXRlbHkuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2h1bmdfdGFza19jaGVja19jb3VudDoKKworVGhlIHVwcGVyIGJvdW5kIG9uIHRoZSBudW1iZXIgb2YgdGFza3MgdGhhdCBhcmUgY2hlY2tlZC4KK1RoaXMgZmlsZSBzaG93cyB1cCBpZiBDT05GSUdfREVURUNUX0hVTkdfVEFTSyBpcyBlbmFibGVkLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitodW5nX3Rhc2tfdGltZW91dF9zZWNzOgorCitDaGVjayBpbnRlcnZhbC4gV2hlbiBhIHRhc2sgaW4gRCBzdGF0ZSBkaWQgbm90IGdldCBzY2hlZHVsZWQKK2ZvciBtb3JlIHRoYW4gdGhpcyB2YWx1ZSByZXBvcnQgYSB3YXJuaW5nLgorVGhpcyBmaWxlIHNob3dzIHVwIGlmIENPTkZJR19ERVRFQ1RfSFVOR19UQVNLIGlzIGVuYWJsZWQuCisKKzA6IG1lYW5zIGluZmluaXRlIHRpbWVvdXQgLSBubyBjaGVja2luZyBkb25lLgorUG9zc2libGUgdmFsdWVzIHRvIHNldCBhcmUgaW4gcmFuZ2UgezAuLkxPTkdfTUFYL0hafS4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworaHVuZ190YXNrX3dhcm5pbmdzOgorCitUaGUgbWF4aW11bSBudW1iZXIgb2Ygd2FybmluZ3MgdG8gcmVwb3J0LiBEdXJpbmcgYSBjaGVjayBpbnRlcnZhbAoraWYgYSBodW5nIHRhc2sgaXMgZGV0ZWN0ZWQsIHRoaXMgdmFsdWUgaXMgZGVjcmVhc2VkIGJ5IDEuCitXaGVuIHRoaXMgdmFsdWUgcmVhY2hlcyAwLCBubyBtb3JlIHdhcm5pbmdzIHdpbGwgYmUgcmVwb3J0ZWQuCitUaGlzIGZpbGUgc2hvd3MgdXAgaWYgQ09ORklHX0RFVEVDVF9IVU5HX1RBU0sgaXMgZW5hYmxlZC4KKworLTE6IHJlcG9ydCBhbiBpbmZpbml0ZSBudW1iZXIgb2Ygd2FybmluZ3MuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2tleGVjX2xvYWRfZGlzYWJsZWQ6CisKK0EgdG9nZ2xlIGluZGljYXRpbmcgaWYgdGhlIGtleGVjX2xvYWQgc3lzY2FsbCBoYXMgYmVlbiBkaXNhYmxlZC4gVGhpcwordmFsdWUgZGVmYXVsdHMgdG8gMCAoZmFsc2U6IGtleGVjX2xvYWQgZW5hYmxlZCksIGJ1dCBjYW4gYmUgc2V0IHRvIDEKKyh0cnVlOiBrZXhlY19sb2FkIGRpc2FibGVkKS4gT25jZSB0cnVlLCBrZXhlYyBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQsIGFuZAordGhlIHRvZ2dsZSBjYW5ub3QgYmUgc2V0IGJhY2sgdG8gZmFsc2UuIFRoaXMgYWxsb3dzIGEga2V4ZWMgaW1hZ2UgdG8gYmUKK2xvYWRlZCBiZWZvcmUgZGlzYWJsaW5nIHRoZSBzeXNjYWxsLCBhbGxvd2luZyBhIHN5c3RlbSB0byBzZXQgdXAgKGFuZAorbGF0ZXIgdXNlKSBhbiBpbWFnZSB3aXRob3V0IGl0IGJlaW5nIGFsdGVyZWQuIEdlbmVyYWxseSB1c2VkIHRvZ2V0aGVyCit3aXRoIHRoZSAibW9kdWxlc19kaXNhYmxlZCIgc3lzY3RsLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitrcHRyX3Jlc3RyaWN0OgorCitUaGlzIHRvZ2dsZSBpbmRpY2F0ZXMgd2hldGhlciByZXN0cmljdGlvbnMgYXJlIHBsYWNlZCBvbgorZXhwb3Npbmcga2VybmVsIGFkZHJlc3NlcyB2aWEgL3Byb2MgYW5kIG90aGVyIGludGVyZmFjZXMuCisKK1doZW4ga3B0cl9yZXN0cmljdCBpcyBzZXQgdG8gKDApLCB0aGUgZGVmYXVsdCwgdGhlcmUgYXJlIG5vIHJlc3RyaWN0aW9ucy4KKworV2hlbiBrcHRyX3Jlc3RyaWN0IGlzIHNldCB0byAoMSksIGtlcm5lbCBwb2ludGVycyBwcmludGVkIHVzaW5nIHRoZSAlcEsKK2Zvcm1hdCBzcGVjaWZpZXIgd2lsbCBiZSByZXBsYWNlZCB3aXRoIDAncyB1bmxlc3MgdGhlIHVzZXIgaGFzIENBUF9TWVNMT0cKK2FuZCBlZmZlY3RpdmUgdXNlciBhbmQgZ3JvdXAgaWRzIGFyZSBlcXVhbCB0byB0aGUgcmVhbCBpZHMuIFRoaXMgaXMKK2JlY2F1c2UgJXBLIGNoZWNrcyBhcmUgZG9uZSBhdCByZWFkKCkgdGltZSByYXRoZXIgdGhhbiBvcGVuKCkgdGltZSwgc28KK2lmIHBlcm1pc3Npb25zIGFyZSBlbGV2YXRlZCBiZXR3ZWVuIHRoZSBvcGVuKCkgYW5kIHRoZSByZWFkKCkgKGUuZyB2aWEKK2Egc2V0dWlkIGJpbmFyeSkgdGhlbiAlcEsgd2lsbCBub3QgbGVhayBrZXJuZWwgcG9pbnRlcnMgdG8gdW5wcml2aWxlZ2VkCit1c2Vycy4gTm90ZSwgdGhpcyBpcyBhIHRlbXBvcmFyeSBzb2x1dGlvbiBvbmx5LiBUaGUgY29ycmVjdCBsb25nLXRlcm0KK3NvbHV0aW9uIGlzIHRvIGRvIHRoZSBwZXJtaXNzaW9uIGNoZWNrcyBhdCBvcGVuKCkgdGltZS4gQ29uc2lkZXIgcmVtb3ZpbmcKK3dvcmxkIHJlYWQgcGVybWlzc2lvbnMgZnJvbSBmaWxlcyB0aGF0IHVzZSAlcEssIGFuZCB1c2luZyBkbWVzZ19yZXN0cmljdAordG8gcHJvdGVjdCBhZ2FpbnN0IHVzZXMgb2YgJXBLIGluIGRtZXNnKDgpIGlmIGxlYWtpbmcga2VybmVsIHBvaW50ZXIKK3ZhbHVlcyB0byB1bnByaXZpbGVnZWQgdXNlcnMgaXMgYSBjb25jZXJuLgorCitXaGVuIGtwdHJfcmVzdHJpY3QgaXMgc2V0IHRvICgyKSwga2VybmVsIHBvaW50ZXJzIHByaW50ZWQgdXNpbmcKKyVwSyB3aWxsIGJlIHJlcGxhY2VkIHdpdGggMCdzIHJlZ2FyZGxlc3Mgb2YgcHJpdmlsZWdlcy4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwora3N0YWNrX2RlcHRoX3RvX3ByaW50OiAoWDg2IG9ubHkpCisKK0NvbnRyb2xzIHRoZSBudW1iZXIgb2Ygd29yZHMgdG8gcHJpbnQgd2hlbiBkdW1waW5nIHRoZSByYXcKK2tlcm5lbCBzdGFjay4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworbDJjcjogKFBQQyBvbmx5KQorCitUaGlzIGZsYWcgY29udHJvbHMgdGhlIEwyIGNhY2hlIG9mIEczIHByb2Nlc3NvciBib2FyZHMuIElmCiswLCB0aGUgY2FjaGUgaXMgZGlzYWJsZWQuIEVuYWJsZWQgaWYgbm9uemVyby4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworbW9kdWxlc19kaXNhYmxlZDoKKworQSB0b2dnbGUgdmFsdWUgaW5kaWNhdGluZyBpZiBtb2R1bGVzIGFyZSBhbGxvd2VkIHRvIGJlIGxvYWRlZAoraW4gYW4gb3RoZXJ3aXNlIG1vZHVsYXIga2VybmVsLiAgVGhpcyB0b2dnbGUgZGVmYXVsdHMgdG8gb2ZmCisoMCksIGJ1dCBjYW4gYmUgc2V0IHRydWUgKDEpLiAgT25jZSB0cnVlLCBtb2R1bGVzIGNhbiBiZQorbmVpdGhlciBsb2FkZWQgbm9yIHVubG9hZGVkLCBhbmQgdGhlIHRvZ2dsZSBjYW5ub3QgYmUgc2V0IGJhY2sKK3RvIGZhbHNlLiAgR2VuZXJhbGx5IHVzZWQgd2l0aCB0aGUgImtleGVjX2xvYWRfZGlzYWJsZWQiIHRvZ2dsZS4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworbXNnX25leHRfaWQsIHNlbV9uZXh0X2lkLCBhbmQgc2htX25leHRfaWQ6CisKK1RoZXNlIHRocmVlIHRvZ2dsZXMgYWxsb3dzIHRvIHNwZWNpZnkgZGVzaXJlZCBpZCBmb3IgbmV4dCBhbGxvY2F0ZWQgSVBDCitvYmplY3Q6IG1lc3NhZ2UsIHNlbWFwaG9yZSBvciBzaGFyZWQgbWVtb3J5IHJlc3BlY3RpdmVseS4KKworQnkgZGVmYXVsdCB0aGV5IGFyZSBlcXVhbCB0byAtMSwgd2hpY2ggbWVhbnMgZ2VuZXJpYyBhbGxvY2F0aW9uIGxvZ2ljLgorUG9zc2libGUgdmFsdWVzIHRvIHNldCBhcmUgaW4gcmFuZ2UgezAuLklOVF9NQVh9LgorCitOb3RlczoKKzEpIGtlcm5lbCBkb2Vzbid0IGd1YXJhbnRlZSwgdGhhdCBuZXcgb2JqZWN0IHdpbGwgaGF2ZSBkZXNpcmVkIGlkLiBTbywKK2l0J3MgdXAgdG8gdXNlcnNwYWNlLCBob3cgdG8gaGFuZGxlIGFuIG9iamVjdCB3aXRoICJ3cm9uZyIgaWQuCisyKSBUb2dnbGUgd2l0aCBub24tZGVmYXVsdCB2YWx1ZSB3aWxsIGJlIHNldCBiYWNrIHRvIC0xIGJ5IGtlcm5lbCBhZnRlcgorc3VjY2Vzc2Z1bCBJUEMgb2JqZWN0IGFsbG9jYXRpb24uCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK25taV93YXRjaGRvZzoKKworVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGUgTk1JIHdhdGNoZG9nCisoaS5lLiB0aGUgaGFyZCBsb2NrdXAgZGV0ZWN0b3IpIG9uIHg4NiBzeXN0ZW1zLgorCisgICAwIC0gZGlzYWJsZSB0aGUgaGFyZCBsb2NrdXAgZGV0ZWN0b3IKKyAgIDEgLSBlbmFibGUgdGhlIGhhcmQgbG9ja3VwIGRldGVjdG9yCisKK1RoZSBoYXJkIGxvY2t1cCBkZXRlY3RvciBtb25pdG9ycyBlYWNoIENQVSBmb3IgaXRzIGFiaWxpdHkgdG8gcmVzcG9uZCB0bwordGltZXIgaW50ZXJydXB0cy4gVGhlIG1lY2hhbmlzbSB1dGlsaXplcyBDUFUgcGVyZm9ybWFuY2UgY291bnRlciByZWdpc3RlcnMKK3RoYXQgYXJlIHByb2dyYW1tZWQgdG8gZ2VuZXJhdGUgTm9uLU1hc2thYmxlIEludGVycnVwdHMgKE5NSXMpIHBlcmlvZGljYWxseQord2hpbGUgYSBDUFUgaXMgYnVzeS4gSGVuY2UsIHRoZSBhbHRlcm5hdGl2ZSBuYW1lICdOTUkgd2F0Y2hkb2cnLgorCitUaGUgTk1JIHdhdGNoZG9nIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgaWYgdGhlIGtlcm5lbCBpcyBydW5uaW5nIGFzIGEgZ3Vlc3QKK2luIGEgS1ZNIHZpcnR1YWwgbWFjaGluZS4gVGhpcyBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGFkZGluZworCisgICBubWlfd2F0Y2hkb2c9MQorCit0byB0aGUgZ3Vlc3Qga2VybmVsIGNvbW1hbmQgbGluZSAoc2VlIERvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0KS4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworbnVtYV9iYWxhbmNpbmcKKworRW5hYmxlcy9kaXNhYmxlcyBhdXRvbWF0aWMgcGFnZSBmYXVsdCBiYXNlZCBOVU1BIG1lbW9yeQorYmFsYW5jaW5nLiBNZW1vcnkgaXMgbW92ZWQgYXV0b21hdGljYWxseSB0byBub2RlcwordGhhdCBhY2Nlc3MgaXQgb2Z0ZW4uCisKK0VuYWJsZXMvZGlzYWJsZXMgYXV0b21hdGljIE5VTUEgbWVtb3J5IGJhbGFuY2luZy4gT24gTlVNQSBtYWNoaW5lcywgdGhlcmUKK2lzIGEgcGVyZm9ybWFuY2UgcGVuYWx0eSBpZiByZW1vdGUgbWVtb3J5IGlzIGFjY2Vzc2VkIGJ5IGEgQ1BVLiBXaGVuIHRoaXMKK2ZlYXR1cmUgaXMgZW5hYmxlZCB0aGUga2VybmVsIHNhbXBsZXMgd2hhdCB0YXNrIHRocmVhZCBpcyBhY2Nlc3NpbmcgbWVtb3J5CitieSBwZXJpb2RpY2FsbHkgdW5tYXBwaW5nIHBhZ2VzIGFuZCBsYXRlciB0cmFwcGluZyBhIHBhZ2UgZmF1bHQuIEF0IHRoZQordGltZSBvZiB0aGUgcGFnZSBmYXVsdCwgaXQgaXMgZGV0ZXJtaW5lZCBpZiB0aGUgZGF0YSBiZWluZyBhY2Nlc3NlZCBzaG91bGQKK2JlIG1pZ3JhdGVkIHRvIGEgbG9jYWwgbWVtb3J5IG5vZGUuCisKK1RoZSB1bm1hcHBpbmcgb2YgcGFnZXMgYW5kIHRyYXBwaW5nIGZhdWx0cyBpbmN1ciBhZGRpdGlvbmFsIG92ZXJoZWFkIHRoYXQKK2lkZWFsbHkgaXMgb2Zmc2V0IGJ5IGltcHJvdmVkIG1lbW9yeSBsb2NhbGl0eSBidXQgdGhlcmUgaXMgbm8gdW5pdmVyc2FsCitndWFyYW50ZWUuIElmIHRoZSB0YXJnZXQgd29ya2xvYWQgaXMgYWxyZWFkeSBib3VuZCB0byBOVU1BIG5vZGVzIHRoZW4gdGhpcworZmVhdHVyZSBzaG91bGQgYmUgZGlzYWJsZWQuIE90aGVyd2lzZSwgaWYgdGhlIHN5c3RlbSBvdmVyaGVhZCBmcm9tIHRoZQorZmVhdHVyZSBpcyB0b28gaGlnaCB0aGVuIHRoZSByYXRlIHRoZSBrZXJuZWwgc2FtcGxlcyBmb3IgTlVNQSBoaW50aW5nCitmYXVsdHMgbWF5IGJlIGNvbnRyb2xsZWQgYnkgdGhlIG51bWFfYmFsYW5jaW5nX3NjYW5fcGVyaW9kX21pbl9tcywKK251bWFfYmFsYW5jaW5nX3NjYW5fZGVsYXlfbXMsIG51bWFfYmFsYW5jaW5nX3NjYW5fcGVyaW9kX21heF9tcywKK251bWFfYmFsYW5jaW5nX3NjYW5fc2l6ZV9tYiwgYW5kIG51bWFfYmFsYW5jaW5nX3NldHRsZV9jb3VudCBzeXNjdGxzLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitudW1hX2JhbGFuY2luZ19zY2FuX3BlcmlvZF9taW5fbXMsIG51bWFfYmFsYW5jaW5nX3NjYW5fZGVsYXlfbXMsCitudW1hX2JhbGFuY2luZ19zY2FuX3BlcmlvZF9tYXhfbXMsIG51bWFfYmFsYW5jaW5nX3NjYW5fc2l6ZV9tYgorCitBdXRvbWF0aWMgTlVNQSBiYWxhbmNpbmcgc2NhbnMgdGFza3MgYWRkcmVzcyBzcGFjZSBhbmQgdW5tYXBzIHBhZ2VzIHRvCitkZXRlY3QgaWYgcGFnZXMgYXJlIHByb3Blcmx5IHBsYWNlZCBvciBpZiB0aGUgZGF0YSBzaG91bGQgYmUgbWlncmF0ZWQgdG8gYQorbWVtb3J5IG5vZGUgbG9jYWwgdG8gd2hlcmUgdGhlIHRhc2sgaXMgcnVubmluZy4gIEV2ZXJ5ICJzY2FuIGRlbGF5IiB0aGUgdGFzaworc2NhbnMgdGhlIG5leHQgInNjYW4gc2l6ZSIgbnVtYmVyIG9mIHBhZ2VzIGluIGl0cyBhZGRyZXNzIHNwYWNlLiBXaGVuIHRoZQorZW5kIG9mIHRoZSBhZGRyZXNzIHNwYWNlIGlzIHJlYWNoZWQgdGhlIHNjYW5uZXIgcmVzdGFydHMgZnJvbSB0aGUgYmVnaW5uaW5nLgorCitJbiBjb21iaW5hdGlvbiwgdGhlICJzY2FuIGRlbGF5IiBhbmQgInNjYW4gc2l6ZSIgZGV0ZXJtaW5lIHRoZSBzY2FuIHJhdGUuCitXaGVuICJzY2FuIGRlbGF5IiBkZWNyZWFzZXMsIHRoZSBzY2FuIHJhdGUgaW5jcmVhc2VzLiAgVGhlIHNjYW4gZGVsYXkgYW5kCitoZW5jZSB0aGUgc2NhbiByYXRlIG9mIGV2ZXJ5IHRhc2sgaXMgYWRhcHRpdmUgYW5kIGRlcGVuZHMgb24gaGlzdG9yaWNhbAorYmVoYXZpb3VyLiBJZiBwYWdlcyBhcmUgcHJvcGVybHkgcGxhY2VkIHRoZW4gdGhlIHNjYW4gZGVsYXkgaW5jcmVhc2VzLAorb3RoZXJ3aXNlIHRoZSBzY2FuIGRlbGF5IGRlY3JlYXNlcy4gIFRoZSAic2NhbiBzaXplIiBpcyBub3QgYWRhcHRpdmUgYnV0Cit0aGUgaGlnaGVyIHRoZSAic2NhbiBzaXplIiwgdGhlIGhpZ2hlciB0aGUgc2NhbiByYXRlLgorCitIaWdoZXIgc2NhbiByYXRlcyBpbmN1ciBoaWdoZXIgc3lzdGVtIG92ZXJoZWFkIGFzIHBhZ2UgZmF1bHRzIG11c3QgYmUKK3RyYXBwZWQgYW5kIHBvdGVudGlhbGx5IGRhdGEgbXVzdCBiZSBtaWdyYXRlZC4gSG93ZXZlciwgdGhlIGhpZ2hlciB0aGUgc2NhbgorcmF0ZSwgdGhlIG1vcmUgcXVpY2tseSBhIHRhc2tzIG1lbW9yeSBpcyBtaWdyYXRlZCB0byBhIGxvY2FsIG5vZGUgaWYgdGhlCit3b3JrbG9hZCBwYXR0ZXJuIGNoYW5nZXMgYW5kIG1pbmltaXNlcyBwZXJmb3JtYW5jZSBpbXBhY3QgZHVlIHRvIHJlbW90ZQorbWVtb3J5IGFjY2Vzc2VzLiBUaGVzZSBzeXNjdGxzIGNvbnRyb2wgdGhlIHRocmVzaG9sZHMgZm9yIHNjYW4gZGVsYXlzIGFuZAordGhlIG51bWJlciBvZiBwYWdlcyBzY2FubmVkLgorCitudW1hX2JhbGFuY2luZ19zY2FuX3BlcmlvZF9taW5fbXMgaXMgdGhlIG1pbmltdW0gdGltZSBpbiBtaWxsaXNlY29uZHMgdG8KK3NjYW4gYSB0YXNrcyB2aXJ0dWFsIG1lbW9yeS4gSXQgZWZmZWN0aXZlbHkgY29udHJvbHMgdGhlIG1heGltdW0gc2Nhbm5pbmcKK3JhdGUgZm9yIGVhY2ggdGFzay4KKworbnVtYV9iYWxhbmNpbmdfc2Nhbl9kZWxheV9tcyBpcyB0aGUgc3RhcnRpbmcgInNjYW4gZGVsYXkiIHVzZWQgZm9yIGEgdGFzaword2hlbiBpdCBpbml0aWFsbHkgZm9ya3MuCisKK251bWFfYmFsYW5jaW5nX3NjYW5fcGVyaW9kX21heF9tcyBpcyB0aGUgbWF4aW11bSB0aW1lIGluIG1pbGxpc2Vjb25kcyB0bworc2NhbiBhIHRhc2tzIHZpcnR1YWwgbWVtb3J5LiBJdCBlZmZlY3RpdmVseSBjb250cm9scyB0aGUgbWluaW11bSBzY2FubmluZworcmF0ZSBmb3IgZWFjaCB0YXNrLgorCitudW1hX2JhbGFuY2luZ19zY2FuX3NpemVfbWIgaXMgaG93IG1hbnkgbWVnYWJ5dGVzIHdvcnRoIG9mIHBhZ2VzIGFyZQorc2Nhbm5lZCBmb3IgYSBnaXZlbiBzY2FuLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitvc3JlbGVhc2UsIG9zdHlwZSAmIHZlcnNpb246CisKKyMgY2F0IG9zcmVsZWFzZQorMi4xLjg4CisjIGNhdCBvc3R5cGUKK0xpbnV4CisjIGNhdCB2ZXJzaW9uCisjNSBXZWQgRmViIDI1IDIxOjQ5OjI0IE1FVCAxOTk4CisKK1RoZSBmaWxlcyBvc3JlbGVhc2UgYW5kIG9zdHlwZSBzaG91bGQgYmUgY2xlYXIgZW5vdWdoLiBWZXJzaW9uCituZWVkcyBhIGxpdHRsZSBtb3JlIGNsYXJpZmljYXRpb24gaG93ZXZlci4gVGhlICcjNScgbWVhbnMgdGhhdAordGhpcyBpcyB0aGUgZmlmdGgga2VybmVsIGJ1aWx0IGZyb20gdGhpcyBzb3VyY2UgYmFzZSBhbmQgdGhlCitkYXRlIGJlaGluZCBpdCBpbmRpY2F0ZXMgdGhlIHRpbWUgdGhlIGtlcm5lbCB3YXMgYnVpbHQuCitUaGUgb25seSB3YXkgdG8gdHVuZSB0aGVzZSB2YWx1ZXMgaXMgdG8gcmVidWlsZCB0aGUga2VybmVsIDotKQorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitvdmVyZmxvd2dpZCAmIG92ZXJmbG93dWlkOgorCitpZiB5b3VyIGFyY2hpdGVjdHVyZSBkaWQgbm90IGFsd2F5cyBzdXBwb3J0IDMyLWJpdCBVSURzIChpLmUuIGFybSwKK2kzODYsIG02OGssIHNoLCBhbmQgc3BhcmMzMiksIGEgZml4ZWQgVUlEIGFuZCBHSUQgd2lsbCBiZSByZXR1cm5lZCB0bworYXBwbGljYXRpb25zIHRoYXQgdXNlIHRoZSBvbGQgMTYtYml0IFVJRC9HSUQgc3lzdGVtIGNhbGxzLCBpZiB0aGUKK2FjdHVhbCBVSUQgb3IgR0lEIHdvdWxkIGV4Y2VlZCA2NTUzNS4KKworVGhlc2Ugc3lzY3RscyBhbGxvdyB5b3UgdG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiB0aGUgZml4ZWQgVUlEIGFuZCBHSUQuCitUaGUgZGVmYXVsdCBpcyA2NTUzNC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcGFuaWM6CisKK1RoZSB2YWx1ZSBpbiB0aGlzIGZpbGUgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgdGhlIGtlcm5lbAord2FpdHMgYmVmb3JlIHJlYm9vdGluZyBvbiBhIHBhbmljLiBXaGVuIHlvdSB1c2UgdGhlIHNvZnR3YXJlIHdhdGNoZG9nLAordGhlIHJlY29tbWVuZGVkIHNldHRpbmcgaXMgNjAuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3BhbmljX29uX29vcHM6CisKK0NvbnRyb2xzIHRoZSBrZXJuZWwncyBiZWhhdmlvdXIgd2hlbiBhbiBvb3BzIG9yIEJVRyBpcyBlbmNvdW50ZXJlZC4KKworMDogdHJ5IHRvIGNvbnRpbnVlIG9wZXJhdGlvbgorCisxOiBwYW5pYyBpbW1lZGlhdGVseS4gIElmIHRoZSBgcGFuaWMnIHN5c2N0bCBpcyBhbHNvIG5vbi16ZXJvIHRoZW4gdGhlCisgICBtYWNoaW5lIHdpbGwgYmUgcmVib290ZWQuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3BhbmljX29uX3N0YWNrb3ZlcmZsb3c6CisKK0NvbnRyb2xzIHRoZSBrZXJuZWwncyBiZWhhdmlvciB3aGVuIGRldGVjdGluZyB0aGUgb3ZlcmZsb3dzIG9mCitrZXJuZWwsIElSUSBhbmQgZXhjZXB0aW9uIHN0YWNrcyBleGNlcHQgYSB1c2VyIHN0YWNrLgorVGhpcyBmaWxlIHNob3dzIHVwIGlmIENPTkZJR19ERUJVR19TVEFDS09WRVJGTE9XIGlzIGVuYWJsZWQuCisKKzA6IHRyeSB0byBjb250aW51ZSBvcGVyYXRpb24uCisKKzE6IHBhbmljIGltbWVkaWF0ZWx5LgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitwYW5pY19vbl91bnJlY292ZXJlZF9ubWk6CisKK1RoZSBkZWZhdWx0IExpbnV4IGJlaGF2aW91ciBvbiBhbiBOTUkgb2YgZWl0aGVyIG1lbW9yeSBvciB1bmtub3duIGlzCit0byBjb250aW51ZSBvcGVyYXRpb24uIEZvciBtYW55IGVudmlyb25tZW50cyBzdWNoIGFzIHNjaWVudGlmaWMKK2NvbXB1dGluZyBpdCBpcyBwcmVmZXJhYmxlIHRoYXQgdGhlIGJveCBpcyB0YWtlbiBvdXQgYW5kIHRoZSBlcnJvcgorZGVhbHQgd2l0aCB0aGFuIGFuIHVuY29ycmVjdGVkIHBhcml0eS9FQ0MgZXJyb3IgZ2V0IHByb3BhZ2F0ZWQuCisKK0Egc21hbGwgbnVtYmVyIG9mIHN5c3RlbXMgZG8gZ2VuZXJhdGUgTk1JJ3MgZm9yIGJpemFycmUgcmFuZG9tIHJlYXNvbnMKK3N1Y2ggYXMgcG93ZXIgbWFuYWdlbWVudCBzbyB0aGUgZGVmYXVsdCBpcyBvZmYuIFRoYXQgc3lzY3RsIHdvcmtzIGxpa2UKK3RoZSBleGlzdGluZyBwYW5pYyBjb250cm9scyBhbHJlYWR5IGluIHRoYXQgZGlyZWN0b3J5LgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitwYW5pY19vbl93YXJuOgorCitDYWxscyBwYW5pYygpIGluIHRoZSBXQVJOKCkgcGF0aCB3aGVuIHNldCB0byAxLiAgVGhpcyBpcyB1c2VmdWwgdG8gYXZvaWQKK2Ega2VybmVsIHJlYnVpbGQgd2hlbiBhdHRlbXB0aW5nIHRvIGtkdW1wIGF0IHRoZSBsb2NhdGlvbiBvZiBhIFdBUk4oKS4KKworMDogb25seSBXQVJOKCksIGRlZmF1bHQgYmVoYXZpb3VyLgorCisxOiBjYWxsIHBhbmljKCkgYWZ0ZXIgcHJpbnRpbmcgb3V0IFdBUk4oKSBsb2NhdGlvbi4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcGVyZl9jcHVfdGltZV9tYXhfcGVyY2VudDoKKworSGludHMgdG8gdGhlIGtlcm5lbCBob3cgbXVjaCBDUFUgdGltZSBpdCBzaG91bGQgYmUgYWxsb3dlZCB0bwordXNlIHRvIGhhbmRsZSBwZXJmIHNhbXBsaW5nIGV2ZW50cy4gIElmIHRoZSBwZXJmIHN1YnN5c3RlbQoraXMgaW5mb3JtZWQgdGhhdCBpdHMgc2FtcGxlcyBhcmUgZXhjZWVkaW5nIHRoaXMgbGltaXQsIGl0Cit3aWxsIGRyb3AgaXRzIHNhbXBsaW5nIGZyZXF1ZW5jeSB0byBhdHRlbXB0IHRvIHJlZHVjZSBpdHMgQ1BVCit1c2FnZS4KKworU29tZSBwZXJmIHNhbXBsaW5nIGhhcHBlbnMgaW4gTk1Jcy4gIElmIHRoZXNlIHNhbXBsZXMKK3VuZXhwZWN0ZWRseSB0YWtlIHRvbyBsb25nIHRvIGV4ZWN1dGUsIHRoZSBOTUlzIGNhbiBiZWNvbWUKK3N0YWNrZWQgdXAgbmV4dCB0byBlYWNoIG90aGVyIHNvIG11Y2ggdGhhdCBub3RoaW5nIGVsc2UgaXMKK2FsbG93ZWQgdG8gZXhlY3V0ZS4KKworMDogZGlzYWJsZSB0aGUgbWVjaGFuaXNtLiAgRG8gbm90IG1vbml0b3Igb3IgY29ycmVjdCBwZXJmJ3MKKyAgIHNhbXBsaW5nIHJhdGUgbm8gbWF0dGVyIGhvdyBDUFUgdGltZSBpdCB0YWtlcy4KKworMS0xMDA6IGF0dGVtcHQgdG8gdGhyb3R0bGUgcGVyZidzIHNhbXBsZSByYXRlIHRvIHRoaXMKKyAgIHBlcmNlbnRhZ2Ugb2YgQ1BVLiAgTm90ZTogdGhlIGtlcm5lbCBjYWxjdWxhdGVzIGFuCisgICAiZXhwZWN0ZWQiIGxlbmd0aCBvZiBlYWNoIHNhbXBsZSBldmVudC4gIDEwMCBoZXJlIG1lYW5zCisgICAxMDAlIG9mIHRoYXQgZXhwZWN0ZWQgbGVuZ3RoLiAgRXZlbiBpZiB0aGlzIGlzIHNldCB0bworICAgMTAwLCB5b3UgbWF5IHN0aWxsIHNlZSBzYW1wbGUgdGhyb3R0bGluZyBpZiB0aGlzCisgICBsZW5ndGggaXMgZXhjZWVkZWQuICBTZXQgdG8gMCBpZiB5b3UgdHJ1bHkgZG8gbm90IGNhcmUKKyAgIGhvdyBtdWNoIENQVSBpcyBjb25zdW1lZC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCitwaWRfbWF4OgorCitQSUQgYWxsb2NhdGlvbiB3cmFwIHZhbHVlLiAgV2hlbiB0aGUga2VybmVsJ3MgbmV4dCBQSUQgdmFsdWUKK3JlYWNoZXMgdGhpcyB2YWx1ZSwgaXQgd3JhcHMgYmFjayB0byBhIG1pbmltdW0gUElEIHZhbHVlLgorUElEcyBvZiB2YWx1ZSBwaWRfbWF4IG9yIGxhcmdlciBhcmUgbm90IGFsbG9jYXRlZC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworbnNfbGFzdF9waWQ6CisKK1RoZSBsYXN0IHBpZCBhbGxvY2F0ZWQgaW4gdGhlIGN1cnJlbnQgKHRoZSBvbmUgdGFzayB1c2luZyB0aGlzIHN5c2N0bAorbGl2ZXMgaW4pIHBpZCBuYW1lc3BhY2UuIFdoZW4gc2VsZWN0aW5nIGEgcGlkIGZvciBhIG5leHQgdGFzayBvbiBmb3JrCitrZXJuZWwgdHJpZXMgdG8gYWxsb2NhdGUgYSBudW1iZXIgc3RhcnRpbmcgZnJvbSB0aGlzIG9uZS4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcG93ZXJzYXZlLW5hcDogKFBQQyBvbmx5KQorCitJZiBzZXQsIExpbnV4LVBQQyB3aWxsIHVzZSB0aGUgJ25hcCcgbW9kZSBvZiBwb3dlcnNhdmluZywKK290aGVyd2lzZSB0aGUgJ2RvemUnIG1vZGUgd2lsbCBiZSB1c2VkLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitwcmludGs6CisKK1RoZSBmb3VyIHZhbHVlcyBpbiBwcmludGsgZGVub3RlOiBjb25zb2xlX2xvZ2xldmVsLAorZGVmYXVsdF9tZXNzYWdlX2xvZ2xldmVsLCBtaW5pbXVtX2NvbnNvbGVfbG9nbGV2ZWwgYW5kCitkZWZhdWx0X2NvbnNvbGVfbG9nbGV2ZWwgcmVzcGVjdGl2ZWx5LgorCitUaGVzZSB2YWx1ZXMgaW5mbHVlbmNlIHByaW50aygpIGJlaGF2aW9yIHdoZW4gcHJpbnRpbmcgb3IKK2xvZ2dpbmcgZXJyb3IgbWVzc2FnZXMuIFNlZSAnbWFuIDIgc3lzbG9nJyBmb3IgbW9yZSBpbmZvIG9uCit0aGUgZGlmZmVyZW50IGxvZ2xldmVscy4KKworLSBjb25zb2xlX2xvZ2xldmVsOiBtZXNzYWdlcyB3aXRoIGEgaGlnaGVyIHByaW9yaXR5IHRoYW4KKyAgdGhpcyB3aWxsIGJlIHByaW50ZWQgdG8gdGhlIGNvbnNvbGUKKy0gZGVmYXVsdF9tZXNzYWdlX2xvZ2xldmVsOiBtZXNzYWdlcyB3aXRob3V0IGFuIGV4cGxpY2l0IHByaW9yaXR5CisgIHdpbGwgYmUgcHJpbnRlZCB3aXRoIHRoaXMgcHJpb3JpdHkKKy0gbWluaW11bV9jb25zb2xlX2xvZ2xldmVsOiBtaW5pbXVtIChoaWdoZXN0KSB2YWx1ZSB0byB3aGljaAorICBjb25zb2xlX2xvZ2xldmVsIGNhbiBiZSBzZXQKKy0gZGVmYXVsdF9jb25zb2xlX2xvZ2xldmVsOiBkZWZhdWx0IHZhbHVlIGZvciBjb25zb2xlX2xvZ2xldmVsCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3ByaW50a19kZWxheToKKworRGVsYXkgZWFjaCBwcmludGsgbWVzc2FnZSBpbiBwcmludGtfZGVsYXkgbWlsbGlzZWNvbmRzCisKK1ZhbHVlIGZyb20gMCAtIDEwMDAwIGlzIGFsbG93ZWQuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3ByaW50a19yYXRlbGltaXQ6CisKK1NvbWUgd2FybmluZyBtZXNzYWdlcyBhcmUgcmF0ZSBsaW1pdGVkLiBwcmludGtfcmF0ZWxpbWl0IHNwZWNpZmllcwordGhlIG1pbmltdW0gbGVuZ3RoIG9mIHRpbWUgYmV0d2VlbiB0aGVzZSBtZXNzYWdlcyAoaW4gamlmZmllcyksIGJ5CitkZWZhdWx0IHdlIGFsbG93IG9uZSBldmVyeSA1IHNlY29uZHMuCisKK0EgdmFsdWUgb2YgMCB3aWxsIGRpc2FibGUgcmF0ZSBsaW1pdGluZy4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcHJpbnRrX3JhdGVsaW1pdF9idXJzdDoKKworV2hpbGUgbG9uZyB0ZXJtIHdlIGVuZm9yY2Ugb25lIG1lc3NhZ2UgcGVyIHByaW50a19yYXRlbGltaXQKK3NlY29uZHMsIHdlIGRvIGFsbG93IGEgYnVyc3Qgb2YgbWVzc2FnZXMgdG8gcGFzcyB0aHJvdWdoLgorcHJpbnRrX3JhdGVsaW1pdF9idXJzdCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBtZXNzYWdlcyB3ZSBjYW4KK3NlbmQgYmVmb3JlIHJhdGVsaW1pdGluZyBraWNrcyBpbi4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworcmFuZG9taXplX3ZhX3NwYWNlOgorCitUaGlzIG9wdGlvbiBjYW4gYmUgdXNlZCB0byBzZWxlY3QgdGhlIHR5cGUgb2YgcHJvY2VzcyBhZGRyZXNzCitzcGFjZSByYW5kb21pemF0aW9uIHRoYXQgaXMgdXNlZCBpbiB0aGUgc3lzdGVtLCBmb3IgYXJjaGl0ZWN0dXJlcwordGhhdCBzdXBwb3J0IHRoaXMgZmVhdHVyZS4KKworMCAtIFR1cm4gdGhlIHByb2Nlc3MgYWRkcmVzcyBzcGFjZSByYW5kb21pemF0aW9uIG9mZi4gIFRoaXMgaXMgdGhlCisgICAgZGVmYXVsdCBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGRvIG5vdCBzdXBwb3J0IHRoaXMgZmVhdHVyZSBhbnl3YXlzLAorICAgIGFuZCBrZXJuZWxzIHRoYXQgYXJlIGJvb3RlZCB3aXRoIHRoZSAibm9yYW5kbWFwcyIgcGFyYW1ldGVyLgorCisxIC0gTWFrZSB0aGUgYWRkcmVzc2VzIG9mIG1tYXAgYmFzZSwgc3RhY2sgYW5kIFZEU08gcGFnZSByYW5kb21pemVkLgorICAgIFRoaXMsIGFtb25nIG90aGVyIHRoaW5ncywgaW1wbGllcyB0aGF0IHNoYXJlZCBsaWJyYXJpZXMgd2lsbCBiZQorICAgIGxvYWRlZCB0byByYW5kb20gYWRkcmVzc2VzLiAgQWxzbyBmb3IgUElFLWxpbmtlZCBiaW5hcmllcywgdGhlCisgICAgbG9jYXRpb24gb2YgY29kZSBzdGFydCBpcyByYW5kb21pemVkLiAgVGhpcyBpcyB0aGUgZGVmYXVsdCBpZiB0aGUKKyAgICBDT05GSUdfQ09NUEFUX0JSSyBvcHRpb24gaXMgZW5hYmxlZC4KKworMiAtIEFkZGl0aW9uYWxseSBlbmFibGUgaGVhcCByYW5kb21pemF0aW9uLiAgVGhpcyBpcyB0aGUgZGVmYXVsdCBpZgorICAgIENPTkZJR19DT01QQVRfQlJLIGlzIGRpc2FibGVkLgorCisgICAgVGhlcmUgYXJlIGEgZmV3IGxlZ2FjeSBhcHBsaWNhdGlvbnMgb3V0IHRoZXJlIChzdWNoIGFzIHNvbWUgYW5jaWVudAorICAgIHZlcnNpb25zIG9mIGxpYmMuc28uNSBmcm9tIDE5OTYpIHRoYXQgYXNzdW1lIHRoYXQgYnJrIGFyZWEgc3RhcnRzCisgICAganVzdCBhZnRlciB0aGUgZW5kIG9mIHRoZSBjb2RlK2Jzcy4gIFRoZXNlIGFwcGxpY2F0aW9ucyBicmVhayB3aGVuCisgICAgc3RhcnQgb2YgdGhlIGJyayBhcmVhIGlzIHJhbmRvbWl6ZWQuICBUaGVyZSBhcmUgaG93ZXZlciBubyBrbm93bgorICAgIG5vbi1sZWdhY3kgYXBwbGljYXRpb25zIHRoYXQgd291bGQgYmUgYnJva2VuIHRoaXMgd2F5LCBzbyBmb3IgbW9zdAorICAgIHN5c3RlbXMgaXQgaXMgc2FmZSB0byBjaG9vc2UgZnVsbCByYW5kb21pemF0aW9uLgorCisgICAgU3lzdGVtcyB3aXRoIGFuY2llbnQgYW5kL29yIGJyb2tlbiBiaW5hcmllcyBzaG91bGQgYmUgY29uZmlndXJlZAorICAgIHdpdGggQ09ORklHX0NPTVBBVF9CUksgZW5hYmxlZCwgd2hpY2ggZXhjbHVkZXMgdGhlIGhlYXAgZnJvbSBwcm9jZXNzCisgICAgYWRkcmVzcyBzcGFjZSByYW5kb21pemF0aW9uLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCityZWJvb3QtY21kOiAoU3BhcmMgb25seSkKKworPz8/IFRoaXMgc2VlbXMgdG8gYmUgYSB3YXkgdG8gZ2l2ZSBhbiBhcmd1bWVudCB0byB0aGUgU3BhcmMKK1JPTS9GbGFzaCBib290IGxvYWRlci4gTWF5YmUgdG8gdGVsbCBpdCB3aGF0IHRvIGRvIGFmdGVyCityZWJvb3RpbmcuID8/PworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitydHNpZy1tYXggJiBydHNpZy1ucjoKKworVGhlIGZpbGUgcnRzaWctbWF4IGNhbiBiZSB1c2VkIHRvIHR1bmUgdGhlIG1heGltdW0gbnVtYmVyCitvZiBQT1NJWCByZWFsdGltZSAocXVldWVkKSBzaWduYWxzIHRoYXQgY2FuIGJlIG91dHN0YW5kaW5nCitpbiB0aGUgc3lzdGVtLgorCitydHNpZy1uciBzaG93cyB0aGUgbnVtYmVyIG9mIFJUIHNpZ25hbHMgY3VycmVudGx5IHF1ZXVlZC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworc2ctYmlnLWJ1ZmY6CisKK1RoaXMgZmlsZSBzaG93cyB0aGUgc2l6ZSBvZiB0aGUgZ2VuZXJpYyBTQ1NJIChzZykgYnVmZmVyLgorWW91IGNhbid0IHR1bmUgaXQganVzdCB5ZXQsIGJ1dCB5b3UgY291bGQgY2hhbmdlIGl0IG9uCitjb21waWxlIHRpbWUgYnkgZWRpdGluZyBpbmNsdWRlL3Njc2kvc2cuaCBhbmQgY2hhbmdpbmcKK3RoZSB2YWx1ZSBvZiBTR19CSUdfQlVGRi4KKworVGhlcmUgc2hvdWxkbid0IGJlIGFueSByZWFzb24gdG8gY2hhbmdlIHRoaXMgdmFsdWUuIElmCit5b3UgY2FuIGNvbWUgdXAgd2l0aCBvbmUsIHlvdSBwcm9iYWJseSBrbm93IHdoYXQgeW91CithcmUgZG9pbmcgYW55d2F5IDopCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3NobWFsbDoKKworVGhpcyBwYXJhbWV0ZXIgc2V0cyB0aGUgdG90YWwgYW1vdW50IG9mIHNoYXJlZCBtZW1vcnkgcGFnZXMgdGhhdAorY2FuIGJlIHVzZWQgc3lzdGVtIHdpZGUuIEhlbmNlLCBTSE1BTEwgc2hvdWxkIGFsd2F5cyBiZSBhdCBsZWFzdAorY2VpbChzaG1tYXgvUEFHRV9TSVpFKS4KKworSWYgeW91IGFyZSBub3Qgc3VyZSB3aGF0IHRoZSBkZWZhdWx0IFBBR0VfU0laRSBpcyBvbiB5b3VyIExpbnV4CitzeXN0ZW0sIHlvdSBjYW4gcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKworIyBnZXRjb25mIFBBR0VfU0laRQorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitzaG1tYXg6CisKK1RoaXMgdmFsdWUgY2FuIGJlIHVzZWQgdG8gcXVlcnkgYW5kIHNldCB0aGUgcnVuIHRpbWUgbGltaXQKK29uIHRoZSBtYXhpbXVtIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBzaXplIHRoYXQgY2FuIGJlIGNyZWF0ZWQuCitTaGFyZWQgbWVtb3J5IHNlZ21lbnRzIHVwIHRvIDFHYiBhcmUgbm93IHN1cHBvcnRlZCBpbiB0aGUKK2tlcm5lbC4gIFRoaXMgdmFsdWUgZGVmYXVsdHMgdG8gU0hNTUFYLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitzaG1fcm1pZF9mb3JjZWQ6CisKK0xpbnV4IGxldHMgeW91IHNldCByZXNvdXJjZSBsaW1pdHMsIGluY2x1ZGluZyBob3cgbXVjaCBtZW1vcnkgb25lCitwcm9jZXNzIGNhbiBjb25zdW1lLCB2aWEgc2V0cmxpbWl0KDIpLiAgVW5mb3J0dW5hdGVseSwgc2hhcmVkIG1lbW9yeQorc2VnbWVudHMgYXJlIGFsbG93ZWQgdG8gZXhpc3Qgd2l0aG91dCBhc3NvY2lhdGlvbiB3aXRoIGFueSBwcm9jZXNzLCBhbmQKK3RodXMgbWlnaHQgbm90IGJlIGNvdW50ZWQgYWdhaW5zdCBhbnkgcmVzb3VyY2UgbGltaXRzLiAgSWYgZW5hYmxlZCwKK3NoYXJlZCBtZW1vcnkgc2VnbWVudHMgYXJlIGF1dG9tYXRpY2FsbHkgZGVzdHJveWVkIHdoZW4gdGhlaXIgYXR0YWNoCitjb3VudCBiZWNvbWVzIHplcm8gYWZ0ZXIgYSBkZXRhY2ggb3IgYSBwcm9jZXNzIHRlcm1pbmF0aW9uLiAgSXQgd2lsbAorYWxzbyBkZXN0cm95IHNlZ21lbnRzIHRoYXQgd2VyZSBjcmVhdGVkLCBidXQgbmV2ZXIgYXR0YWNoZWQgdG8sIG9uIGV4aXQKK2Zyb20gdGhlIHByb2Nlc3MuICBUaGUgb25seSB1c2UgbGVmdCBmb3IgSVBDX1JNSUQgaXMgdG8gaW1tZWRpYXRlbHkKK2Rlc3Ryb3kgYW4gdW5hdHRhY2hlZCBzZWdtZW50LiAgT2YgY291cnNlLCB0aGlzIGJyZWFrcyB0aGUgd2F5IHRoaW5ncyBhcmUKK2RlZmluZWQsIHNvIHNvbWUgYXBwbGljYXRpb25zIG1pZ2h0IHN0b3Agd29ya2luZy4gIE5vdGUgdGhhdCB0aGlzCitmZWF0dXJlIHdpbGwgZG8geW91IG5vIGdvb2QgdW5sZXNzIHlvdSBhbHNvIGNvbmZpZ3VyZSB5b3VyIHJlc291cmNlCitsaW1pdHMgKGluIHBhcnRpY3VsYXIsIFJMSU1JVF9BUyBhbmQgUkxJTUlUX05QUk9DKS4gIE1vc3Qgc3lzdGVtcyBkb24ndAorbmVlZCB0aGlzLgorCitOb3RlIHRoYXQgaWYgeW91IGNoYW5nZSB0aGlzIGZyb20gMCB0byAxLCBhbHJlYWR5IGNyZWF0ZWQgc2VnbWVudHMKK3dpdGhvdXQgdXNlcnMgYW5kIHdpdGggYSBkZWFkIG9yaWdpbmF0aXZlIHByb2Nlc3Mgd2lsbCBiZSBkZXN0cm95ZWQuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3N5c2N0bF93cml0ZXNfc3RyaWN0OgorCitDb250cm9sIGhvdyBmaWxlIHBvc2l0aW9uIGFmZmVjdHMgdGhlIGJlaGF2aW9yIG9mIHVwZGF0aW5nIHN5c2N0bCB2YWx1ZXMKK3ZpYSB0aGUgL3Byb2Mvc3lzIGludGVyZmFjZToKKworICAtMSAtIExlZ2FjeSBwZXItd3JpdGUgc3lzY3RsIHZhbHVlIGhhbmRsaW5nLCB3aXRoIG5vIHByaW50ayB3YXJuaW5ncy4KKyAgICAgICBFYWNoIHdyaXRlIHN5c2NhbGwgbXVzdCBmdWxseSBjb250YWluIHRoZSBzeXNjdGwgdmFsdWUgdG8gYmUKKyAgICAgICB3cml0dGVuLCBhbmQgbXVsdGlwbGUgd3JpdGVzIG9uIHRoZSBzYW1lIHN5c2N0bCBmaWxlIGRlc2NyaXB0b3IKKyAgICAgICB3aWxsIHJld3JpdGUgdGhlIHN5c2N0bCB2YWx1ZSwgcmVnYXJkbGVzcyBvZiBmaWxlIHBvc2l0aW9uLgorICAgMCAtIFNhbWUgYmVoYXZpb3IgYXMgYWJvdmUsIGJ1dCB3YXJuIGFib3V0IHByb2Nlc3NlcyB0aGF0IHBlcmZvcm0gd3JpdGVzCisgICAgICAgdG8gYSBzeXNjdGwgZmlsZSBkZXNjcmlwdG9yIHdoZW4gdGhlIGZpbGUgcG9zaXRpb24gaXMgbm90IDAuCisgICAxIC0gKGRlZmF1bHQpIFJlc3BlY3QgZmlsZSBwb3NpdGlvbiB3aGVuIHdyaXRpbmcgc3lzY3RsIHN0cmluZ3MuIE11bHRpcGxlCisgICAgICAgd3JpdGVzIHdpbGwgYXBwZW5kIHRvIHRoZSBzeXNjdGwgdmFsdWUgYnVmZmVyLiBBbnl0aGluZyBwYXN0IHRoZSBtYXgKKyAgICAgICBsZW5ndGggb2YgdGhlIHN5c2N0bCB2YWx1ZSBidWZmZXIgd2lsbCBiZSBpZ25vcmVkLiBXcml0ZXMgdG8gbnVtZXJpYworICAgICAgIHN5c2N0bCBlbnRyaWVzIG11c3QgYWx3YXlzIGJlIGF0IGZpbGUgcG9zaXRpb24gMCBhbmQgdGhlIHZhbHVlIG11c3QKKyAgICAgICBiZSBmdWxseSBjb250YWluZWQgaW4gdGhlIGJ1ZmZlciBzZW50IGluIHRoZSB3cml0ZSBzeXNjYWxsLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitzb2Z0bG9ja3VwX2FsbF9jcHVfYmFja3RyYWNlOgorCitUaGlzIHZhbHVlIGNvbnRyb2xzIHRoZSBzb2Z0IGxvY2t1cCBkZXRlY3RvciB0aHJlYWQncyBiZWhhdmlvcgord2hlbiBhIHNvZnQgbG9ja3VwIGNvbmRpdGlvbiBpcyBkZXRlY3RlZCBhcyB0byB3aGV0aGVyIG9yIG5vdAordG8gZ2F0aGVyIGZ1cnRoZXIgZGVidWcgaW5mb3JtYXRpb24uIElmIGVuYWJsZWQsIGVhY2ggY3B1IHdpbGwKK2JlIGlzc3VlZCBhbiBOTUkgYW5kIGluc3RydWN0ZWQgdG8gY2FwdHVyZSBzdGFjayB0cmFjZS4KKworVGhpcyBmZWF0dXJlIGlzIG9ubHkgYXBwbGljYWJsZSBmb3IgYXJjaGl0ZWN0dXJlcyB3aGljaCBzdXBwb3J0CitOTUkuCisKKzA6IGRvIG5vdGhpbmcuIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IuCisKKzE6IG9uIGRldGVjdGlvbiBjYXB0dXJlIG1vcmUgZGVidWcgaW5mb3JtYXRpb24uCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3NvZnRfd2F0Y2hkb2cKKworVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGUgc29mdCBsb2NrdXAgZGV0ZWN0b3IuCisKKyAgIDAgLSBkaXNhYmxlIHRoZSBzb2Z0IGxvY2t1cCBkZXRlY3RvcgorICAgMSAtIGVuYWJsZSB0aGUgc29mdCBsb2NrdXAgZGV0ZWN0b3IKKworVGhlIHNvZnQgbG9ja3VwIGRldGVjdG9yIG1vbml0b3JzIENQVXMgZm9yIHRocmVhZHMgdGhhdCBhcmUgaG9nZ2luZyB0aGUgQ1BVcword2l0aG91dCByZXNjaGVkdWxpbmcgdm9sdW50YXJpbHksIGFuZCB0aHVzIHByZXZlbnQgdGhlICd3YXRjaGRvZy9OJyB0aHJlYWRzCitmcm9tIHJ1bm5pbmcuIFRoZSBtZWNoYW5pc20gZGVwZW5kcyBvbiB0aGUgQ1BVcyBhYmlsaXR5IHRvIHJlc3BvbmQgdG8gdGltZXIKK2ludGVycnVwdHMgd2hpY2ggYXJlIG5lZWRlZCBmb3IgdGhlICd3YXRjaGRvZy9OJyB0aHJlYWRzIHRvIGJlIHdva2VuIHVwIGJ5Cit0aGUgd2F0Y2hkb2cgdGltZXIgZnVuY3Rpb24sIG90aGVyd2lzZSB0aGUgTk1JIHdhdGNoZG9nIC0gaWYgZW5hYmxlZCAtIGNhbgorZGV0ZWN0IGEgaGFyZCBsb2NrdXAgY29uZGl0aW9uLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCit0YWludGVkOgorCitOb24temVybyBpZiB0aGUga2VybmVsIGhhcyBiZWVuIHRhaW50ZWQuICBOdW1lcmljIHZhbHVlcywgd2hpY2gKK2NhbiBiZSBPUmVkIHRvZ2V0aGVyOgorCisgICAxIC0gQSBtb2R1bGUgd2l0aCBhIG5vbi1HUEwgbGljZW5zZSBoYXMgYmVlbiBsb2FkZWQsIHRoaXMKKyAgICAgICBpbmNsdWRlcyBtb2R1bGVzIHdpdGggbm8gbGljZW5zZS4KKyAgICAgICBTZXQgYnkgbW9kdXRpbHMgPj0gMi40LjkgYW5kIG1vZHVsZS1pbml0LXRvb2xzLgorICAgMiAtIEEgbW9kdWxlIHdhcyBmb3JjZSBsb2FkZWQgYnkgaW5zbW9kIC1mLgorICAgICAgIFNldCBieSBtb2R1dGlscyA+PSAyLjQuOSBhbmQgbW9kdWxlLWluaXQtdG9vbHMuCisgICA0IC0gVW5zYWZlIFNNUCBwcm9jZXNzb3JzOiBTTVAgd2l0aCBDUFVzIG5vdCBkZXNpZ25lZCBmb3IgU01QLgorICAgOCAtIEEgbW9kdWxlIHdhcyBmb3JjaWJseSB1bmxvYWRlZCBmcm9tIHRoZSBzeXN0ZW0gYnkgcm1tb2QgLWYuCisgIDE2IC0gQSBoYXJkd2FyZSBtYWNoaW5lIGNoZWNrIGVycm9yIG9jY3VycmVkIG9uIHRoZSBzeXN0ZW0uCisgIDMyIC0gQSBiYWQgcGFnZSB3YXMgZGlzY292ZXJlZCBvbiB0aGUgc3lzdGVtLgorICA2NCAtIFRoZSB1c2VyIGhhcyBhc2tlZCB0aGF0IHRoZSBzeXN0ZW0gYmUgbWFya2VkICJ0YWludGVkIi4gIFRoaXMKKyAgICAgICBjb3VsZCBiZSBiZWNhdXNlIHRoZXkgYXJlIHJ1bm5pbmcgc29mdHdhcmUgdGhhdCBkaXJlY3RseSBtb2RpZmllcworICAgICAgIHRoZSBoYXJkd2FyZSwgb3IgZm9yIG90aGVyIHJlYXNvbnMuCisgMTI4IC0gVGhlIHN5c3RlbSBoYXMgZGllZC4KKyAyNTYgLSBUaGUgQUNQSSBEU0RUIGhhcyBiZWVuIG92ZXJyaWRkZW4gd2l0aCBvbmUgc3VwcGxpZWQgYnkgdGhlIHVzZXIKKyAgICAgICAgaW5zdGVhZCBvZiB1c2luZyB0aGUgb25lIHByb3ZpZGVkIGJ5IHRoZSBoYXJkd2FyZS4KKyA1MTIgLSBBIGtlcm5lbCB3YXJuaW5nIGhhcyBvY2N1cnJlZC4KKzEwMjQgLSBBIG1vZHVsZSBmcm9tIGRyaXZlcnMvc3RhZ2luZyB3YXMgbG9hZGVkLgorMjA0OCAtIFRoZSBzeXN0ZW0gaXMgd29ya2luZyBhcm91bmQgYSBzZXZlcmUgZmlybXdhcmUgYnVnLgorNDA5NiAtIEFuIG91dC1vZi10cmVlIG1vZHVsZSBoYXMgYmVlbiBsb2FkZWQuCis4MTkyIC0gQW4gdW5zaWduZWQgbW9kdWxlIGhhcyBiZWVuIGxvYWRlZCBpbiBhIGtlcm5lbCBzdXBwb3J0aW5nIG1vZHVsZQorICAgICAgIHNpZ25hdHVyZS4KKzE2Mzg0IC0gQSBzb2Z0IGxvY2t1cCBoYXMgcHJldmlvdXNseSBvY2N1cnJlZCBvbiB0aGUgc3lzdGVtLgorMzI3NjggLSBUaGUga2VybmVsIGhhcyBiZWVuIGxpdmUgcGF0Y2hlZC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwordGhyZWFkcy1tYXgKKworVGhpcyB2YWx1ZSBjb250cm9scyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGhyZWFkcyB0aGF0IGNhbiBiZSBjcmVhdGVkCit1c2luZyBmb3JrKCkuCisKK0R1cmluZyBpbml0aWFsaXphdGlvbiB0aGUga2VybmVsIHNldHMgdGhpcyB2YWx1ZSBzdWNoIHRoYXQgZXZlbiBpZiB0aGUKK21heGltdW0gbnVtYmVyIG9mIHRocmVhZHMgaXMgY3JlYXRlZCwgdGhlIHRocmVhZCBzdHJ1Y3R1cmVzIG9jY3VweSBvbmx5CithIHBhcnQgKDEvOHRoKSBvZiB0aGUgYXZhaWxhYmxlIFJBTSBwYWdlcy4KKworVGhlIG1pbmltdW0gdmFsdWUgdGhhdCBjYW4gYmUgd3JpdHRlbiB0byB0aHJlYWRzLW1heCBpcyAyMC4KK1RoZSBtYXhpbXVtIHZhbHVlIHRoYXQgY2FuIGJlIHdyaXR0ZW4gdG8gdGhyZWFkcy1tYXggaXMgZ2l2ZW4gYnkgdGhlCitjb25zdGFudCBGVVRFWF9USURfTUFTSyAoMHgzZmZmZmZmZikuCitJZiBhIHZhbHVlIG91dHNpZGUgb2YgdGhpcyByYW5nZSBpcyB3cml0dGVuIHRvIHRocmVhZHMtbWF4IGFuIGVycm9yCitFSU5WQUwgb2NjdXJzLgorCitUaGUgdmFsdWUgd3JpdHRlbiBpcyBjaGVja2VkIGFnYWluc3QgdGhlIGF2YWlsYWJsZSBSQU0gcGFnZXMuIElmIHRoZQordGhyZWFkIHN0cnVjdHVyZXMgd291bGQgb2NjdXB5IHRvbyBtdWNoIChtb3JlIHRoYW4gMS84dGgpIG9mIHRoZQorYXZhaWxhYmxlIFJBTSBwYWdlcyB0aHJlYWRzLW1heCBpcyByZWR1Y2VkIGFjY29yZGluZ2x5LgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCit1bmtub3duX25taV9wYW5pYzoKKworVGhlIHZhbHVlIGluIHRoaXMgZmlsZSBhZmZlY3RzIGJlaGF2aW9yIG9mIGhhbmRsaW5nIE5NSS4gV2hlbiB0aGUKK3ZhbHVlIGlzIG5vbi16ZXJvLCB1bmtub3duIE5NSSBpcyB0cmFwcGVkIGFuZCB0aGVuIHBhbmljIG9jY3Vycy4gQXQKK3RoYXQgdGltZSwga2VybmVsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBpcyBkaXNwbGF5ZWQgb24gY29uc29sZS4KKworTk1JIHN3aXRjaCB0aGF0IG1vc3QgSUEzMiBzZXJ2ZXJzIGhhdmUgZmlyZXMgdW5rbm93biBOTUkgdXAsIGZvcgorZXhhbXBsZS4gIElmIGEgc3lzdGVtIGhhbmdzIHVwLCB0cnkgcHJlc3NpbmcgdGhlIE5NSSBzd2l0Y2guCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3dhdGNoZG9nOgorCitUaGlzIHBhcmFtZXRlciBjYW4gYmUgdXNlZCB0byBkaXNhYmxlIG9yIGVuYWJsZSB0aGUgc29mdCBsb2NrdXAgZGV0ZWN0b3IKK19hbmRfIHRoZSBOTUkgd2F0Y2hkb2cgKGkuZS4gdGhlIGhhcmQgbG9ja3VwIGRldGVjdG9yKSBhdCB0aGUgc2FtZSB0aW1lLgorCisgICAwIC0gZGlzYWJsZSBib3RoIGxvY2t1cCBkZXRlY3RvcnMKKyAgIDEgLSBlbmFibGUgYm90aCBsb2NrdXAgZGV0ZWN0b3JzCisKK1RoZSBzb2Z0IGxvY2t1cCBkZXRlY3RvciBhbmQgdGhlIE5NSSB3YXRjaGRvZyBjYW4gYWxzbyBiZSBkaXNhYmxlZCBvcgorZW5hYmxlZCBpbmRpdmlkdWFsbHksIHVzaW5nIHRoZSBzb2Z0X3dhdGNoZG9nIGFuZCBubWlfd2F0Y2hkb2cgcGFyYW1ldGVycy4KK0lmIHRoZSB3YXRjaGRvZyBwYXJhbWV0ZXIgaXMgcmVhZCwgZm9yIGV4YW1wbGUgYnkgZXhlY3V0aW5nCisKKyAgIGNhdCAvcHJvYy9zeXMva2VybmVsL3dhdGNoZG9nCisKK3RoZSBvdXRwdXQgb2YgdGhpcyBjb21tYW5kICgwIG9yIDEpIHNob3dzIHRoZSBsb2dpY2FsIE9SIG9mIHNvZnRfd2F0Y2hkb2cKK2FuZCBubWlfd2F0Y2hkb2cuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3dhdGNoZG9nX2NwdW1hc2s6CisKK1RoaXMgdmFsdWUgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBvbiB3aGljaCBjcHVzIHRoZSB3YXRjaGRvZyBtYXkgcnVuLgorVGhlIGRlZmF1bHQgY3B1bWFzayBpcyBhbGwgcG9zc2libGUgY29yZXMsIGJ1dCBpZiBOT19IWl9GVUxMIGlzCitlbmFibGVkIGluIHRoZSBrZXJuZWwgY29uZmlnLCBhbmQgY29yZXMgYXJlIHNwZWNpZmllZCB3aXRoIHRoZQorbm9oel9mdWxsPSBib290IGFyZ3VtZW50LCB0aG9zZSBjb3JlcyBhcmUgZXhjbHVkZWQgYnkgZGVmYXVsdC4KK09mZmxpbmUgY29yZXMgY2FuIGJlIGluY2x1ZGVkIGluIHRoaXMgbWFzaywgYW5kIGlmIHRoZSBjb3JlIGlzIGxhdGVyCiticm91Z2h0IG9ubGluZSwgdGhlIHdhdGNoZG9nIHdpbGwgYmUgc3RhcnRlZCBiYXNlZCBvbiB0aGUgbWFzayB2YWx1ZS4KKworVHlwaWNhbGx5IHRoaXMgdmFsdWUgd291bGQgb25seSBiZSB0b3VjaGVkIGluIHRoZSBub2h6X2Z1bGwgY2FzZQordG8gcmUtZW5hYmxlIGNvcmVzIHRoYXQgYnkgZGVmYXVsdCB3ZXJlIG5vdCBydW5uaW5nIHRoZSB3YXRjaGRvZywKK2lmIGEga2VybmVsIGxvY2t1cCB3YXMgc3VzcGVjdGVkIG9uIHRob3NlIGNvcmVzLgorCitUaGUgYXJndW1lbnQgdmFsdWUgaXMgdGhlIHN0YW5kYXJkIGNwdWxpc3QgZm9ybWF0IGZvciBjcHVtYXNrcywKK3NvIGZvciBleGFtcGxlIHRvIGVuYWJsZSB0aGUgd2F0Y2hkb2cgb24gY29yZXMgMCwgMiwgMywgYW5kIDQgeW91CittaWdodCBzYXk6CisKKyAgZWNobyAwLDItNCA+IC9wcm9jL3N5cy9rZXJuZWwvd2F0Y2hkb2dfY3B1bWFzaworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCit3YXRjaGRvZ190aHJlc2g6CisKK1RoaXMgdmFsdWUgY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGUgZnJlcXVlbmN5IG9mIGhydGltZXIgYW5kIE5NSQorZXZlbnRzIGFuZCB0aGUgc29mdCBhbmQgaGFyZCBsb2NrdXAgdGhyZXNob2xkcy4gVGhlIGRlZmF1bHQgdGhyZXNob2xkCitpcyAxMCBzZWNvbmRzLgorCitUaGUgc29mdGxvY2t1cCB0aHJlc2hvbGQgaXMgKDIgKiB3YXRjaGRvZ190aHJlc2gpLiBTZXR0aW5nIHRoaXMKK3R1bmFibGUgdG8gemVybyB3aWxsIGRpc2FibGUgbG9ja3VwIGRldGVjdGlvbiBhbHRvZ2V0aGVyLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zeXNjdGwvbmV0LnR4dCBiL0RvY3VtZW50YXRpb24vc3lzY3RsL25ldC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA5YWI2ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc3lzY3RsL25ldC50eHQKQEAgLTAsMCArMSwzMDYgQEAKK0RvY3VtZW50YXRpb24gZm9yIC9wcm9jL3N5cy9uZXQvKgorCShjKSAxOTk5CQlUZXJyZWhvbiBCb3dkZW4gPHRlcnJlaG9uQHBhY2JlbGwubmV0PgorCQkJCUJvZG8gQmF1ZXIgPGJiQHJpY29jaGV0Lm5ldD4KKwkoYykgMjAwMAkJSm9yZ2UgTmVyaW4gPGNvbWFuZGFudGVAemFyYWxpbnV4LmNvbT4KKwkoYykgMjAwOQkJU2hlbiBGZW5nIDxzaGVuQGNuLmZ1aml0c3UuY29tPgorCitGb3IgZ2VuZXJhbCBpbmZvIGFuZCBsZWdhbCBibHVyYiwgcGxlYXNlIGxvb2sgaW4gUkVBRE1FLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGZpbGUgY29udGFpbnMgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBzeXNjdGwgZmlsZXMgaW4KKy9wcm9jL3N5cy9uZXQKKworVGhlIGludGVyZmFjZSAgdG8gIHRoZSAgbmV0d29ya2luZyAgcGFydHMgIG9mICB0aGUgIGtlcm5lbCAgaXMgIGxvY2F0ZWQgIGluCisvcHJvYy9zeXMvbmV0LiBUaGUgZm9sbG93aW5nIHRhYmxlIHNob3dzIGFsbCBwb3NzaWJsZSBzdWJkaXJlY3Rvcmllcy4gIFlvdSBtYXkKK3NlZSBvbmx5IHNvbWUgb2YgdGhlbSwgZGVwZW5kaW5nIG9uIHlvdXIga2VybmVsJ3MgY29uZmlndXJhdGlvbi4KKworCitUYWJsZSA6IFN1YmRpcmVjdG9yaWVzIGluIC9wcm9jL3N5cy9uZXQKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorIERpcmVjdG9yeSBDb250ZW50ICAgICAgICAgICAgIERpcmVjdG9yeSAgQ29udGVudAorIGNvcmUgICAgICBHZW5lcmFsIHBhcmFtZXRlciAgIGFwcGxldGFsayAgQXBwbGV0YWxrIHByb3RvY29sCisgdW5peCAgICAgIFVuaXggZG9tYWluIHNvY2tldHMgbmV0cm9tICAgICBORVQvUk9NCisgODAyICAgICAgIEU4MDIgcHJvdG9jb2wgICAgICAgYXgyNSAgICAgICBBWDI1CisgZXRoZXJuZXQgIEV0aGVybmV0IHByb3RvY29sICAgcm9zZSAgICAgICBYLjI1IFBMUCBsYXllcgorIGlwdjQgICAgICBJUCB2ZXJzaW9uIDQgICAgICAgIHgyNSAgICAgICAgWC4yNSBwcm90b2NvbAorIGlweCAgICAgICBJUFggICAgICAgICAgICAgICAgIHRva2VuLXJpbmcgSUJNIHRva2VuIHJpbmcKKyBicmlkZ2UgICAgQnJpZGdpbmcgICAgICAgICAgICBkZWNuZXQgICAgIERFQyBuZXQKKyBpcHY2ICAgICAgSVAgdmVyc2lvbiA2ICAgICAgICB0aXBjICAgICAgIFRJUEMKKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorCisxLiAvcHJvYy9zeXMvbmV0L2NvcmUgLSBOZXR3b3JrIGNvcmUgb3B0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiticGZfaml0X2VuYWJsZQorLS0tLS0tLS0tLS0tLS0KKworVGhpcyBlbmFibGVzIEJlcmtlbGV5IFBhY2tldCBGaWx0ZXIgSnVzdCBpbiBUaW1lIGNvbXBpbGVyLgorQ3VycmVudGx5IHN1cHBvcnRlZCBvbiB4ODZfNjQgYXJjaGl0ZWN0dXJlLCBicGZfaml0IHByb3ZpZGVzIGEgZnJhbWV3b3JrCit0byBzcGVlZCBwYWNrZXQgZmlsdGVyaW5nLCB0aGUgb25lIHVzZWQgYnkgdGNwZHVtcC9saWJwY2FwIGZvciBleGFtcGxlLgorVmFsdWVzIDoKKwkwIC0gZGlzYWJsZSB0aGUgSklUIChkZWZhdWx0IHZhbHVlKQorCTEgLSBlbmFibGUgdGhlIEpJVAorCTIgLSBlbmFibGUgdGhlIEpJVCBhbmQgYXNrIHRoZSBjb21waWxlciB0byBlbWl0IHRyYWNlcyBvbiBrZXJuZWwgbG9nLgorCitkZXZfd2VpZ2h0CistLS0tLS0tLS0tLS0tLQorCitUaGUgbWF4aW11bSBudW1iZXIgb2YgcGFja2V0cyB0aGF0IGtlcm5lbCBjYW4gaGFuZGxlIG9uIGEgTkFQSSBpbnRlcnJ1cHQsCitpdCdzIGEgUGVyLUNQVSB2YXJpYWJsZS4KK0RlZmF1bHQ6IDY0CisKK2RlZmF1bHRfcWRpc2MKKy0tLS0tLS0tLS0tLS0tCisKK1RoZSBkZWZhdWx0IHF1ZXVpbmcgZGlzY2lwbGluZSB0byB1c2UgZm9yIG5ldHdvcmsgZGV2aWNlcy4gVGhpcyBhbGxvd3MKK292ZXJyaWRpbmcgdGhlIGRlZmF1bHQgb2YgcGZpZm9fZmFzdCB3aXRoIGFuIGFsdGVybmF0aXZlLiBTaW5jZSB0aGUgZGVmYXVsdAorcXVldWluZyBkaXNjaXBsaW5lIGlzIGNyZWF0ZWQgd2l0aG91dCBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgc28gaXMgYmVzdCBzdWl0ZWQKK3RvIHF1ZXVpbmcgZGlzY2lwbGluZXMgdGhhdCB3b3JrIHdlbGwgd2l0aG91dCBjb25maWd1cmF0aW9uIGxpa2Ugc3RvY2hhc3RpYworZmFpciBxdWV1ZSAoc2ZxKSwgQ29EZWwgKGNvZGVsKSBvciBmYWlyIHF1ZXVlIENvRGVsIChmcV9jb2RlbCkuIERvbid0IHVzZQorcXVldWluZyBkaXNjaXBsaW5lcyBsaWtlIEhpZXJhcmNoaWNhbCBUb2tlbiBCdWNrZXQgb3IgRGVmaWNpdCBSb3VuZCBSb2Jpbgord2hpY2ggcmVxdWlyZSBzZXR0aW5nIHVwIGNsYXNzZXMgYW5kIGJhbmR3aWR0aHMuIE5vdGUgdGhhdCBwaHlzaWNhbCBtdWx0aXF1ZXVlCitpbnRlcmZhY2VzIHN0aWxsIHVzZSBtcSBhcyByb290IHFkaXNjLCB3aGljaCBpbiB0dXJuIHVzZXMgdGhpcyBkZWZhdWx0IGZvciBpdHMKK2xlYXZlcy4gVmlydHVhbCBkZXZpY2VzIChsaWtlIGUuZy4gbG8gb3IgdmV0aCkgaWdub3JlIHRoaXMgc2V0dGluZyBhbmQgaW5zdGVhZAorZGVmYXVsdCB0byBub3F1ZXVlLgorRGVmYXVsdDogcGZpZm9fZmFzdAorCitidXN5X3JlYWQKKy0tLS0tLS0tLS0tLS0tLS0KK0xvdyBsYXRlbmN5IGJ1c3kgcG9sbCB0aW1lb3V0IGZvciBzb2NrZXQgcmVhZHMuIChuZWVkcyBDT05GSUdfTkVUX1JYX0JVU1lfUE9MTCkKK0FwcHJveGltYXRlIHRpbWUgaW4gdXMgdG8gYnVzeSBsb29wIHdhaXRpbmcgZm9yIHBhY2tldHMgb24gdGhlIGRldmljZSBxdWV1ZS4KK1RoaXMgc2V0cyB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgU09fQlVTWV9QT0xMIHNvY2tldCBvcHRpb24uCitDYW4gYmUgc2V0IG9yIG92ZXJyaWRkZW4gcGVyIHNvY2tldCBieSBzZXR0aW5nIHNvY2tldCBvcHRpb24gU09fQlVTWV9QT0xMLAord2hpY2ggaXMgdGhlIHByZWZlcnJlZCBtZXRob2Qgb2YgZW5hYmxpbmcuIElmIHlvdSBuZWVkIHRvIGVuYWJsZSB0aGUgZmVhdHVyZQorZ2xvYmFsbHkgdmlhIHN5c2N0bCwgYSB2YWx1ZSBvZiA1MCBpcyByZWNvbW1lbmRlZC4KK1dpbGwgaW5jcmVhc2UgcG93ZXIgdXNhZ2UuCitEZWZhdWx0OiAwIChvZmYpCisKK2J1c3lfcG9sbAorLS0tLS0tLS0tLS0tLS0tLQorTG93IGxhdGVuY3kgYnVzeSBwb2xsIHRpbWVvdXQgZm9yIHBvbGwgYW5kIHNlbGVjdC4gKG5lZWRzIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMKQorQXBwcm94aW1hdGUgdGltZSBpbiB1cyB0byBidXN5IGxvb3Agd2FpdGluZyBmb3IgZXZlbnRzLgorUmVjb21tZW5kZWQgdmFsdWUgZGVwZW5kcyBvbiB0aGUgbnVtYmVyIG9mIHNvY2tldHMgeW91IHBvbGwgb24uCitGb3Igc2V2ZXJhbCBzb2NrZXRzIDUwLCBmb3Igc2V2ZXJhbCBodW5kcmVkcyAxMDAuCitGb3IgbW9yZSB0aGFuIHRoYXQgeW91IHByb2JhYmx5IHdhbnQgdG8gdXNlIGVwb2xsLgorTm90ZSB0aGF0IG9ubHkgc29ja2V0cyB3aXRoIFNPX0JVU1lfUE9MTCBzZXQgd2lsbCBiZSBidXN5IHBvbGxlZCwKK3NvIHlvdSB3YW50IHRvIGVpdGhlciBzZWxlY3RpdmVseSBzZXQgU09fQlVTWV9QT0xMIG9uIHRob3NlIHNvY2tldHMgb3Igc2V0CitzeXNjdGwubmV0LmJ1c3lfcmVhZCBnbG9iYWxseS4KK1dpbGwgaW5jcmVhc2UgcG93ZXIgdXNhZ2UuCitEZWZhdWx0OiAwIChvZmYpCisKK3JtZW1fZGVmYXVsdAorLS0tLS0tLS0tLS0tCisKK1RoZSBkZWZhdWx0IHNldHRpbmcgb2YgdGhlIHNvY2tldCByZWNlaXZlIGJ1ZmZlciBpbiBieXRlcy4KKworcm1lbV9tYXgKKy0tLS0tLS0tCisKK1RoZSBtYXhpbXVtIHJlY2VpdmUgc29ja2V0IGJ1ZmZlciBzaXplIGluIGJ5dGVzLgorCit0c3RhbXBfYWxsb3dfZGF0YQorLS0tLS0tLS0tLS0tLS0tLS0KK0FsbG93IHByb2Nlc3NlcyB0byByZWNlaXZlIHR4IHRpbWVzdGFtcHMgbG9vcGVkIHRvZ2V0aGVyIHdpdGggdGhlIG9yaWdpbmFsCitwYWNrZXQgY29udGVudHMuIElmIGRpc2FibGVkLCB0cmFuc21pdCB0aW1lc3RhbXAgcmVxdWVzdHMgZnJvbSB1bnByaXZpbGVnZWQKK3Byb2Nlc3NlcyBhcmUgZHJvcHBlZCB1bmxlc3Mgc29ja2V0IG9wdGlvbiBTT0ZfVElNRVNUQU1QSU5HX09QVF9UU09OTFkgaXMgc2V0LgorRGVmYXVsdDogMSAob24pCisKKword21lbV9kZWZhdWx0CistLS0tLS0tLS0tLS0KKworVGhlIGRlZmF1bHQgc2V0dGluZyAoaW4gYnl0ZXMpIG9mIHRoZSBzb2NrZXQgc2VuZCBidWZmZXIuCisKK3dtZW1fbWF4CistLS0tLS0tLQorCitUaGUgbWF4aW11bSBzZW5kIHNvY2tldCBidWZmZXIgc2l6ZSBpbiBieXRlcy4KKworbWVzc2FnZV9idXJzdCBhbmQgbWVzc2FnZV9jb3N0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlc2UgcGFyYW1ldGVycyAgYXJlIHVzZWQgdG8gbGltaXQgdGhlIHdhcm5pbmcgbWVzc2FnZXMgd3JpdHRlbiB0byB0aGUga2VybmVsCitsb2cgZnJvbSAgdGhlICBuZXR3b3JraW5nICBjb2RlLiAgVGhleSAgZW5mb3JjZSAgYSAgcmF0ZSAgbGltaXQgIHRvICBtYWtlICBhCitkZW5pYWwtb2Ytc2VydmljZSBhdHRhY2sgIGltcG9zc2libGUuIEEgaGlnaGVyIG1lc3NhZ2VfY29zdCBmYWN0b3IsIHJlc3VsdHMgaW4KK2Zld2VyIG1lc3NhZ2VzIHRoYXQgd2lsbCBiZSB3cml0dGVuLiBNZXNzYWdlX2J1cnN0IGNvbnRyb2xzIHdoZW4gbWVzc2FnZXMgd2lsbAorYmUgZHJvcHBlZC4gIFRoZSAgZGVmYXVsdCAgc2V0dGluZ3MgIGxpbWl0ICB3YXJuaW5nIG1lc3NhZ2VzIHRvIG9uZSBldmVyeSBmaXZlCitzZWNvbmRzLgorCit3YXJuaW5ncworLS0tLS0tLS0KKworVGhpcyBzeXNjdGwgaXMgbm93IHVudXNlZC4KKworVGhpcyB3YXMgdXNlZCB0byBjb250cm9sIGNvbnNvbGUgbWVzc2FnZXMgZnJvbSB0aGUgbmV0d29ya2luZyBzdGFjayB0aGF0CitvY2N1ciBiZWNhdXNlIG9mIHByb2JsZW1zIG9uIHRoZSBuZXR3b3JrIGxpa2UgZHVwbGljYXRlIGFkZHJlc3Mgb3IgYmFkCitjaGVja3N1bXMuCisKK1RoZXNlIG1lc3NhZ2VzIGFyZSBub3cgZW1pdHRlZCBhdCBLRVJOX0RFQlVHIGFuZCBjYW4gZ2VuZXJhbGx5IGJlIGVuYWJsZWQKK2FuZCBjb250cm9sbGVkIGJ5IHRoZSBkeW5hbWljX2RlYnVnIGZhY2lsaXR5LgorCituZXRkZXZfYnVkZ2V0CistLS0tLS0tLS0tLS0tCisKK01heGltdW0gbnVtYmVyIG9mIHBhY2tldHMgdGFrZW4gZnJvbSBhbGwgaW50ZXJmYWNlcyBpbiBvbmUgcG9sbGluZyBjeWNsZSAoTkFQSQorcG9sbCkuIEluIG9uZSBwb2xsaW5nIGN5Y2xlIGludGVyZmFjZXMgd2hpY2ggYXJlIHJlZ2lzdGVyZWQgdG8gcG9sbGluZyBhcmUKK3Byb2JlZCBpbiBhIHJvdW5kLXJvYmluIG1hbm5lci4KKworbmV0ZGV2X21heF9iYWNrbG9nCistLS0tLS0tLS0tLS0tLS0tLS0KKworTWF4aW11bSBudW1iZXIgIG9mICBwYWNrZXRzLCAgcXVldWVkICBvbiAgdGhlICBJTlBVVCAgc2lkZSwgd2hlbiB0aGUgaW50ZXJmYWNlCityZWNlaXZlcyBwYWNrZXRzIGZhc3RlciB0aGFuIGtlcm5lbCBjYW4gcHJvY2VzcyB0aGVtLgorCituZXRkZXZfcnNzX2tleQorLS0tLS0tLS0tLS0tLS0KKworUlNTIChSZWNlaXZlIFNpZGUgU2NhbGluZykgZW5hYmxlZCBkcml2ZXJzIHVzZSBhIDQwIGJ5dGVzIGhvc3Qga2V5IHRoYXQgaXMKK3JhbmRvbWx5IGdlbmVyYXRlZC4KK1NvbWUgdXNlciBzcGFjZSBtaWdodCBuZWVkIHRvIGdhdGhlciBpdHMgY29udGVudCBldmVuIGlmIGRyaXZlcnMgZG8gbm90Citwcm92aWRlIGV0aHRvb2wgLXggc3VwcG9ydCB5ZXQuCisKK215aG9zdDp+IyBjYXQgL3Byb2Mvc3lzL25ldC9jb3JlL25ldGRldl9yc3Nfa2V5Cis4NDo1MDpmNDowMDphODoxNTpkMTphNzplOTo3ZjoxZDo2MDozNTpjNzo0NzoyNTo0Mjo5Nzo3NDpjYTo1NjpiYjpiNjphMTpkODogLi4uICg1MiBieXRlcyB0b3RhbCkKKworRmlsZSBjb250YWlucyBudWwgYnl0ZXMgaWYgbm8gZHJpdmVyIGV2ZXIgY2FsbGVkIG5ldGRldl9yc3Nfa2V5X2ZpbGwoKSBmdW5jdGlvbi4KK05vdGU6CisvcHJvYy9zeXMvbmV0L2NvcmUvbmV0ZGV2X3Jzc19rZXkgY29udGFpbnMgNTIgYnl0ZXMgb2Yga2V5LAorYnV0IG1vc3QgZHJpdmVycyBvbmx5IHVzZSA0MCBieXRlcyBvZiBpdC4KKworbXlob3N0On4jIGV0aHRvb2wgLXggZXRoMAorUlggZmxvdyBoYXNoIGluZGlyZWN0aW9uIHRhYmxlIGZvciBldGgwIHdpdGggOCBSWCByaW5nKHMpOgorICAgIDA6ICAgIDAgICAgIDEgICAgIDIgICAgIDMgICAgIDQgICAgIDUgICAgIDYgICAgIDcKK1JTUyBoYXNoIGtleToKKzg0OjUwOmY0OjAwOmE4OjE1OmQxOmE3OmU5OjdmOjFkOjYwOjM1OmM3OjQ3OjI1OjQyOjk3Ojc0OmNhOjU2OmJiOmI2OmExOmQ4OjQzOmUzOmM5OjBjOmZkOjE3OjU1OmMyOjNhOjRkOjY5OmVkOmYxOjQyOjg5CisKK25ldGRldl90c3RhbXBfcHJlcXVldWUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgc2V0IHRvIDAsIFJYIHBhY2tldCB0aW1lc3RhbXBzIGNhbiBiZSBzYW1wbGVkIGFmdGVyIFJQUyBwcm9jZXNzaW5nLCB3aGVuCit0aGUgdGFyZ2V0IENQVSBwcm9jZXNzZXMgcGFja2V0cy4gSXQgbWlnaHQgZ2l2ZSBzb21lIGRlbGF5IG9uIHRpbWVzdGFtcHMsIGJ1dAorcGVybWl0IHRvIGRpc3RyaWJ1dGUgdGhlIGxvYWQgb24gc2V2ZXJhbCBjcHVzLgorCitJZiBzZXQgdG8gMSAoZGVmYXVsdCksIHRpbWVzdGFtcHMgYXJlIHNhbXBsZWQgYXMgc29vbiBhcyBwb3NzaWJsZSwgYmVmb3JlCitxdWV1ZWluZy4KKworb3B0bWVtX21heAorLS0tLS0tLS0tLQorCitNYXhpbXVtIGFuY2lsbGFyeSBidWZmZXIgc2l6ZSBhbGxvd2VkIHBlciBzb2NrZXQuIEFuY2lsbGFyeSBkYXRhIGlzIGEgc2VxdWVuY2UKK29mIHN0cnVjdCBjbXNnaGRyIHN0cnVjdHVyZXMgd2l0aCBhcHBlbmRlZCBkYXRhLgorCisyLiAvcHJvYy9zeXMvbmV0L3VuaXggLSBQYXJhbWV0ZXJzIGZvciBVbml4IGRvbWFpbiBzb2NrZXRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXJlIGlzIG9ubHkgb25lIGZpbGUgaW4gdGhpcyBkaXJlY3RvcnkuCit1bml4X2RncmFtX3FsZW4gbGltaXRzIHRoZSBtYXggbnVtYmVyIG9mIGRhdGFncmFtcyBxdWV1ZWQgaW4gVW5peCBkb21haW4KK3NvY2tldCdzIGJ1ZmZlci4gSXQgd2lsbCBub3QgdGFrZSBlZmZlY3QgdW5sZXNzIFBGX1VOSVggZmxhZyBpcyBzcGVjaWZpZWQuCisKKworMy4gL3Byb2Mvc3lzL25ldC9pcHY0IC0gSVBWNCBzZXR0aW5ncworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUGxlYXNlIHNlZTogRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2lwLXN5c2N0bC50eHQgYW5kIGlwdnMtc3lzY3RsLnR4dCBmb3IKK2Rlc2NyaXB0aW9ucyBvZiB0aGVzZSBlbnRyaWVzLgorCisKKzQuIEFwcGxldGFsaworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgL3Byb2Mvc3lzL25ldC9hcHBsZXRhbGsgIGRpcmVjdG9yeSAgaG9sZHMgdGhlIEFwcGxldGFsayBjb25maWd1cmF0aW9uIGRhdGEKK3doZW4gQXBwbGV0YWxrIGlzIGxvYWRlZC4gVGhlIGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzIGFyZToKKworYWFycC1leHBpcnktdGltZQorLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgYW1vdW50ICBvZiAgdGltZSAgd2Uga2VlcCBhbiBBUlAgZW50cnkgYmVmb3JlIGV4cGlyaW5nIGl0LiBVc2VkIHRvIGFnZSBvdXQKK29sZCBob3N0cy4KKworYWFycC1yZXNvbHZlLXRpbWUKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBhbW91bnQgb2YgdGltZSB3ZSB3aWxsIHNwZW5kIHRyeWluZyB0byByZXNvbHZlIGFuIEFwcGxldGFsayBhZGRyZXNzLgorCithYXJwLXJldHJhbnNtaXQtbGltaXQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbnVtYmVyIG9mIHRpbWVzIHdlIHdpbGwgcmV0cmFuc21pdCBhIHF1ZXJ5IGJlZm9yZSBnaXZpbmcgdXAuCisKK2FhcnAtdGljay10aW1lCistLS0tLS0tLS0tLS0tLQorCitDb250cm9scyB0aGUgcmF0ZSBhdCB3aGljaCBleHBpcmVzIGFyZSBjaGVja2VkLgorCitUaGUgZGlyZWN0b3J5ICAvcHJvYy9uZXQvYXBwbGV0YWxrICBob2xkcyB0aGUgbGlzdCBvZiBhY3RpdmUgQXBwbGV0YWxrIHNvY2tldHMKK29uIGEgbWFjaGluZS4KKworVGhlIGZpZWxkcyAgaW5kaWNhdGUgIHRoZSBERFAgdHlwZSwgdGhlIGxvY2FsIGFkZHJlc3MgKGluIG5ldHdvcms6bm9kZSBmb3JtYXQpCit0aGUgcmVtb3RlICBhZGRyZXNzLCAgdGhlICBzaXplIG9mIHRoZSB0cmFuc21pdCBwZW5kaW5nIHF1ZXVlLCB0aGUgc2l6ZSBvZiB0aGUKK3JlY2VpdmVkIHF1ZXVlICAoYnl0ZXMgd2FpdGluZyBmb3IgYXBwbGljYXRpb25zIHRvIHJlYWQpIHRoZSBzdGF0ZSBhbmQgdGhlIHVpZAorb3duaW5nIHRoZSBzb2NrZXQuCisKKy9wcm9jL25ldC9hdGFsa19pZmFjZSBsaXN0cyAgYWxsICB0aGUgIGludGVyZmFjZXMgIGNvbmZpZ3VyZWQgZm9yIGFwcGxldGFsay5JdAorc2hvd3MgdGhlICBuYW1lICBvZiB0aGUgaW50ZXJmYWNlLCBpdHMgQXBwbGV0YWxrIGFkZHJlc3MsIHRoZSBuZXR3b3JrIHJhbmdlIG9uCit0aGF0IGFkZHJlc3MgIChvciAgbmV0d29yayBudW1iZXIgZm9yIHBoYXNlIDEgbmV0d29ya3MpLCBhbmQgdGhlIHN0YXR1cyBvZiB0aGUKK2ludGVyZmFjZS4KKworL3Byb2MvbmV0L2F0YWxrX3JvdXRlIGxpc3RzICBlYWNoICBrbm93biAgbmV0d29yayAgcm91dGUuICBJdCBsaXN0cyB0aGUgdGFyZ2V0CisobmV0d29yaykgdGhhdCB0aGUgcm91dGUgbGVhZHMgdG8sIHRoZSByb3V0ZXIgKG1heSBiZSBkaXJlY3RseSBjb25uZWN0ZWQpLCB0aGUKK3JvdXRlIGZsYWdzLCBhbmQgdGhlIGRldmljZSB0aGUgcm91dGUgaXMgdXNpbmcuCisKKworNS4gSVBYCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBJUFggcHJvdG9jb2wgaGFzIG5vIHR1bmFibGUgdmFsdWVzIGluIHByb2Mvc3lzL25ldC4KKworVGhlIElQWCAgcHJvdG9jb2wgIGRvZXMsICBob3dldmVyLCAgcHJvdmlkZSAgcHJvYy9uZXQvaXB4LiBUaGlzIGxpc3RzIGVhY2ggSVBYCitzb2NrZXQgZ2l2aW5nICB0aGUgIGxvY2FsICBhbmQgIHJlbW90ZSAgYWRkcmVzc2VzICBpbiAgTm92ZWxsICBmb3JtYXQgKHRoYXQgaXMKK25ldHdvcms6bm9kZTpwb3J0KS4gSW4gIGFjY29yZGFuY2UgIHdpdGggIHRoZSAgc3RyYW5nZSAgTm92ZWxsICB0cmFkaXRpb24sCitldmVyeXRoaW5nIGJ1dCB0aGUgcG9ydCBpcyBpbiBoZXguIE5vdF9Db25uZWN0ZWQgaXMgZGlzcGxheWVkIGZvciBzb2NrZXRzIHRoYXQKK2FyZSBub3QgIHRpZWQgdG8gYSBzcGVjaWZpYyByZW1vdGUgYWRkcmVzcy4gVGhlIFR4IGFuZCBSeCBxdWV1ZSBzaXplcyBpbmRpY2F0ZQordGhlIG51bWJlciAgb2YgIGJ5dGVzICBwZW5kaW5nICBmb3IgIHRyYW5zbWlzc2lvbiAgYW5kICByZWNlcHRpb24uICBUaGUgIHN0YXRlCitpbmRpY2F0ZXMgdGhlICBzdGF0ZSAgdGhlICBzb2NrZXQgIGlzICBpbiBhbmQgdGhlIHVpZCBpcyB0aGUgb3duaW5nIHVpZCBvZiB0aGUKK3NvY2tldC4KKworVGhlIC9wcm9jL25ldC9pcHhfaW50ZXJmYWNlICBmaWxlIGxpc3RzIGFsbCBJUFggaW50ZXJmYWNlcy4gRm9yIGVhY2ggaW50ZXJmYWNlCitpdCBnaXZlcyAgdGhlIG5ldHdvcmsgbnVtYmVyLCB0aGUgbm9kZSBudW1iZXIsIGFuZCBpbmRpY2F0ZXMgaWYgdGhlIG5ldHdvcmsgaXMKK3RoZSBwcmltYXJ5ICBuZXR3b3JrLiAgSXQgIGFsc28gIGluZGljYXRlcyAgd2hpY2ggIGRldmljZSAgaXQgIGlzIGJvdW5kIHRvIChvcgorSW50ZXJuYWwgZm9yICBpbnRlcm5hbCAgbmV0d29ya3MpICBhbmQgIHRoZSAgRnJhbWUgIFR5cGUgaWYgYXBwcm9wcmlhdGUuIExpbnV4CitzdXBwb3J0cyA4MDIuMywgIDgwMi4yLCAgODAyLjIgIFNOQVAgIGFuZCBESVggKEJsdWUgQm9vaykgZXRoZXJuZXQgZnJhbWluZyBmb3IKK0lQWC4KKworVGhlIC9wcm9jL25ldC9pcHhfcm91dGUgIHRhYmxlICBob2xkcyAgYSBsaXN0IG9mIElQWCByb3V0ZXMuIEZvciBlYWNoIHJvdXRlIGl0CitnaXZlcyB0aGUgIGRlc3RpbmF0aW9uICBuZXR3b3JrLCB0aGUgcm91dGVyIG5vZGUgKG9yIERpcmVjdGx5KSBhbmQgdGhlIG5ldHdvcmsKK2FkZHJlc3Mgb2YgdGhlIHJvdXRlciAob3IgQ29ubmVjdGVkKSBmb3IgaW50ZXJuYWwgbmV0d29ya3MuCisKKzYuIFRJUEMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGlwY19ybWVtCistLS0tLS0tLS0tCisKK1RoZSBUSVBDIHByb3RvY29sIG5vdyBoYXMgYSB0dW5hYmxlIGZvciB0aGUgcmVjZWl2ZSBtZW1vcnksIHNpbWlsYXIgdG8gdGhlCit0Y3Bfcm1lbSAtIGkuZS4gYSB2ZWN0b3Igb2YgMyBJTlRFR0VSczogKG1pbiwgZGVmYXVsdCwgbWF4KQorCisgICAgIyBjYXQgL3Byb2Mvc3lzL25ldC90aXBjL3RpcGNfcm1lbQorICAgIDQyNTI3MjUgMzQwMjE4MDAgICAgICAgIDY4MDQzNjAwCisgICAgIworCitUaGUgbWF4IHZhbHVlIGlzIHNldCB0byBDT05OX09WRVJMT0FEX0xJTUlULCBhbmQgdGhlIGRlZmF1bHQgYW5kIG1pbiB2YWx1ZXMKK2FyZSBzY2FsZWQgKHNoaWZ0ZWQpIHZlcnNpb25zIG9mIHRoYXQgc2FtZSB2YWx1ZS4gIE5vdGUgdGhhdCB0aGUgbWluIHZhbHVlCitpcyBub3QgYXQgdGhpcyBwb2ludCBpbiB0aW1lIHVzZWQgaW4gYW55IG1lYW5pbmdmdWwgd2F5LCBidXQgdGhlIHRyaXBsZXQgaXMKK3ByZXNlcnZlZCBpbiBvcmRlciB0byBiZSBjb25zaXN0ZW50IHdpdGggdGhpbmdzIGxpa2UgdGNwX3JtZW0uCisKK25hbWVkX3RpbWVvdXQKKy0tLS0tLS0tLS0tLS0tCisKK1RJUEMgbmFtZSB0YWJsZSB1cGRhdGVzIGFyZSBkaXN0cmlidXRlZCBhc3luY2hyb25vdXNseSBpbiBhIGNsdXN0ZXIsIHdpdGhvdXQKK2FueSBmb3JtIG9mIHRyYW5zYWN0aW9uIGhhbmRsaW5nLiBUaGlzIG1lYW5zIHRoYXQgZGlmZmVyZW50IHJhY2Ugc2NlbmFyaW9zIGFyZQorcG9zc2libGUuIE9uZSBzdWNoIGlzIHRoYXQgYSBuYW1lIHdpdGhkcmF3YWwgc2VudCBvdXQgYnkgb25lIG5vZGUgYW5kIHJlY2VpdmVkCitieSBhbm90aGVyIG5vZGUgbWF5IGFycml2ZSBhZnRlciBhIHNlY29uZCwgb3ZlcmxhcHBpbmcgbmFtZSBwdWJsaWNhdGlvbiBhbHJlYWR5CitoYXMgYmVlbiBhY2NlcHRlZCBmcm9tIGEgdGhpcmQgbm9kZSwgYWx0aG91Z2ggdGhlIGNvbmZsaWN0aW5nIHVwZGF0ZXMKK29yaWdpbmFsbHkgbWF5IGhhdmUgYmVlbiBpc3N1ZWQgaW4gdGhlIGNvcnJlY3Qgc2VxdWVudGlhbCBvcmRlci4KK0lmIG5hbWVkX3RpbWVvdXQgaXMgbm9uemVybywgZmFpbGVkIHRvcG9sb2d5IHVwZGF0ZXMgd2lsbCBiZSBwbGFjZWQgb24gYSBkZWZlcgorcXVldWUgdW50aWwgYW5vdGhlciBldmVudCBhcnJpdmVzIHRoYXQgY2xlYXJzIHRoZSBlcnJvciwgb3IgdW50aWwgdGhlIHRpbWVvdXQKK2V4cGlyZXMuIFZhbHVlIGlzIGluIG1pbGxpc2Vjb25kcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc3lzY3RsL3N1bnJwYy50eHQgYi9Eb2N1bWVudGF0aW9uL3N5c2N0bC9zdW5ycGMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMWVjYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3N5c2N0bC9zdW5ycGMudHh0CkBAIC0wLDAgKzEsMjAgQEAKK0RvY3VtZW50YXRpb24gZm9yIC9wcm9jL3N5cy9zdW5ycGMvKglrZXJuZWwgdmVyc2lvbiAyLjIuMTAKKwkoYykgMTk5OCwgMTk5OSwgIFJpayB2YW4gUmllbCA8cmllbEBubC5saW51eC5vcmc+CisKK0ZvciBnZW5lcmFsIGluZm8gYW5kIGxlZ2FsIGJsdXJiLCBwbGVhc2UgbG9vayBpbiBSRUFETUUuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgZmlsZSBjb250YWlucyB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHN5c2N0bCBmaWxlcyBpbgorL3Byb2Mvc3lzL3N1bnJwYyBhbmQgaXMgdmFsaWQgZm9yIExpbnV4IGtlcm5lbCB2ZXJzaW9uIDIuMi4KKworVGhlIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5IGNhbiBiZSB1c2VkIHRvIChyZSlzZXQgdGhlIGRlYnVnCitmbGFncyBvZiB0aGUgU1VOIFJlbW90ZSBQcm9jZWR1cmUgQ2FsbCAoUlBDKSBzdWJzeXN0ZW0gaW4KK3RoZSBMaW51eCBrZXJuZWwuIFRoaXMgc3R1ZmYgaXMgdXNlZCBmb3IgTkZTLCBLTkZTRCBhbmQKK21heWJlIGEgZmV3IG90aGVyIHRoaW5ncyBhcyB3ZWxsLgorCitUaGUgZmlsZXMgaW4gdGhlcmUgYXJlIHVzZWQgdG8gY29udHJvbCB0aGUgZGVidWdnaW5nIGZsYWdzOgorcnBjX2RlYnVnLCBuZnNfZGVidWcsIG5mc2RfZGVidWcgYW5kIG5sbV9kZWJ1Zy4KKworVGhlc2UgZmxhZ3MgYXJlIGZvciBrZXJuZWwgaGFja2VycyBvbmx5LiBZb3Ugc2hvdWxkIHJlYWQgdGhlCitzb3VyY2UgY29kZSBpbiBuZXQvc3VucnBjLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc3lzY3RsL3ZtLnR4dCBiL0RvY3VtZW50YXRpb24vc3lzY3RsL3ZtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzIzNzBiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zeXNjdGwvdm0udHh0CkBAIC0wLDAgKzEsODE1IEBACitEb2N1bWVudGF0aW9uIGZvciAvcHJvYy9zeXMvdm0vKglrZXJuZWwgdmVyc2lvbiAyLjYuMjkKKwkoYykgMTk5OCwgMTk5OSwgIFJpayB2YW4gUmllbCA8cmllbEBubC5saW51eC5vcmc+CisJKGMpIDIwMDggICAgICAgICBQZXRlciBXLiBNb3JyZWFsZSA8cG1vcnJlYWxlQG5vdmVsbC5jb20+CisKK0ZvciBnZW5lcmFsIGluZm8gYW5kIGxlZ2FsIGJsdXJiLCBwbGVhc2UgbG9vayBpbiBSRUFETUUuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgZmlsZSBjb250YWlucyB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHN5c2N0bCBmaWxlcyBpbgorL3Byb2Mvc3lzL3ZtIGFuZCBpcyB2YWxpZCBmb3IgTGludXgga2VybmVsIHZlcnNpb24gMi42LjI5LgorCitUaGUgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgY2FuIGJlIHVzZWQgdG8gdHVuZSB0aGUgb3BlcmF0aW9uCitvZiB0aGUgdmlydHVhbCBtZW1vcnkgKFZNKSBzdWJzeXN0ZW0gb2YgdGhlIExpbnV4IGtlcm5lbCBhbmQKK3RoZSB3cml0ZW91dCBvZiBkaXJ0eSBkYXRhIHRvIGRpc2suCisKK0RlZmF1bHQgdmFsdWVzIGFuZCBpbml0aWFsaXphdGlvbiByb3V0aW5lcyBmb3IgbW9zdCBvZiB0aGVzZQorZmlsZXMgY2FuIGJlIGZvdW5kIGluIG1tL3N3YXAuYy4KKworQ3VycmVudGx5LCB0aGVzZSBmaWxlcyBhcmUgaW4gL3Byb2Mvc3lzL3ZtOgorCistIGFkbWluX3Jlc2VydmVfa2J5dGVzCistIGJsb2NrX2R1bXAKKy0gY29tcGFjdF9tZW1vcnkKKy0gY29tcGFjdF91bmV2aWN0YWJsZV9hbGxvd2VkCistIGRpcnR5X2JhY2tncm91bmRfYnl0ZXMKKy0gZGlydHlfYmFja2dyb3VuZF9yYXRpbworLSBkaXJ0eV9ieXRlcworLSBkaXJ0eV9leHBpcmVfY2VudGlzZWNzCistIGRpcnR5X3JhdGlvCistIGRpcnR5X3dyaXRlYmFja19jZW50aXNlY3MKKy0gZHJvcF9jYWNoZXMKKy0gZXh0ZnJhZ190aHJlc2hvbGQKKy0gaHVnZXBhZ2VzX3RyZWF0X2FzX21vdmFibGUKKy0gaHVnZXRsYl9zaG1fZ3JvdXAKKy0gbGFwdG9wX21vZGUKKy0gbGVnYWN5X3ZhX2xheW91dAorLSBsb3dtZW1fcmVzZXJ2ZV9yYXRpbworLSBtYXhfbWFwX2NvdW50CistIG1lbW9yeV9mYWlsdXJlX2Vhcmx5X2tpbGwKKy0gbWVtb3J5X2ZhaWx1cmVfcmVjb3ZlcnkKKy0gbWluX2ZyZWVfa2J5dGVzCistIG1pbl9zbGFiX3JhdGlvCistIG1pbl91bm1hcHBlZF9yYXRpbworLSBtbWFwX21pbl9hZGRyCistIG5yX2h1Z2VwYWdlcworLSBucl9vdmVyY29tbWl0X2h1Z2VwYWdlcworLSBucl90cmltX3BhZ2VzICAgICAgICAgKG9ubHkgaWYgQ09ORklHX01NVT1uKQorLSBudW1hX3pvbmVsaXN0X29yZGVyCistIG9vbV9kdW1wX3Rhc2tzCistIG9vbV9raWxsX2FsbG9jYXRpbmdfdGFzaworLSBvdmVyY29tbWl0X2tieXRlcworLSBvdmVyY29tbWl0X21lbW9yeQorLSBvdmVyY29tbWl0X3JhdGlvCistIHBhZ2UtY2x1c3RlcgorLSBwYW5pY19vbl9vb20KKy0gcGVyY3B1X3BhZ2VsaXN0X2ZyYWN0aW9uCistIHN0YXRfaW50ZXJ2YWwKKy0gc3dhcHBpbmVzcworLSB1c2VyX3Jlc2VydmVfa2J5dGVzCistIHZmc19jYWNoZV9wcmVzc3VyZQorLSB6b25lX3JlY2xhaW1fbW9kZQorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCithZG1pbl9yZXNlcnZlX2tieXRlcworCitUaGUgYW1vdW50IG9mIGZyZWUgbWVtb3J5IGluIHRoZSBzeXN0ZW0gdGhhdCBzaG91bGQgYmUgcmVzZXJ2ZWQgZm9yIHVzZXJzCit3aXRoIHRoZSBjYXBhYmlsaXR5IGNhcF9zeXNfYWRtaW4uCisKK2FkbWluX3Jlc2VydmVfa2J5dGVzIGRlZmF1bHRzIHRvIG1pbigzJSBvZiBmcmVlIHBhZ2VzLCA4TUIpCisKK1RoYXQgc2hvdWxkIHByb3ZpZGUgZW5vdWdoIGZvciB0aGUgYWRtaW4gdG8gbG9nIGluIGFuZCBraWxsIGEgcHJvY2VzcywKK2lmIG5lY2Vzc2FyeSwgdW5kZXIgdGhlIGRlZmF1bHQgb3ZlcmNvbW1pdCAnZ3Vlc3MnIG1vZGUuCisKK1N5c3RlbXMgcnVubmluZyB1bmRlciBvdmVyY29tbWl0ICduZXZlcicgc2hvdWxkIGluY3JlYXNlIHRoaXMgdG8gYWNjb3VudAorZm9yIHRoZSBmdWxsIFZpcnR1YWwgTWVtb3J5IFNpemUgb2YgcHJvZ3JhbXMgdXNlZCB0byByZWNvdmVyLiBPdGhlcndpc2UsCityb290IG1heSBub3QgYmUgYWJsZSB0byBsb2cgaW4gdG8gcmVjb3ZlciB0aGUgc3lzdGVtLgorCitIb3cgZG8geW91IGNhbGN1bGF0ZSBhIG1pbmltdW0gdXNlZnVsIHJlc2VydmU/CisKK3NzaGQgb3IgbG9naW4gKyBiYXNoIChvciBzb21lIG90aGVyIHNoZWxsKSArIHRvcCAob3IgcHMsIGtpbGwsIGV0Yy4pCisKK0ZvciBvdmVyY29tbWl0ICdndWVzcycsIHdlIGNhbiBzdW0gcmVzaWRlbnQgc2V0IHNpemVzIChSU1MpLgorT24geDg2XzY0IHRoaXMgaXMgYWJvdXQgOE1CLgorCitGb3Igb3ZlcmNvbW1pdCAnbmV2ZXInLCB3ZSBjYW4gdGFrZSB0aGUgbWF4IG9mIHRoZWlyIHZpcnR1YWwgc2l6ZXMgKFZTWikKK2FuZCBhZGQgdGhlIHN1bSBvZiB0aGVpciBSU1MuCitPbiB4ODZfNjQgdGhpcyBpcyBhYm91dCAxMjhNQi4KKworQ2hhbmdpbmcgdGhpcyB0YWtlcyBlZmZlY3Qgd2hlbmV2ZXIgYW4gYXBwbGljYXRpb24gcmVxdWVzdHMgbWVtb3J5LgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitibG9ja19kdW1wCisKK2Jsb2NrX2R1bXAgZW5hYmxlcyBibG9jayBJL08gZGVidWdnaW5nIHdoZW4gc2V0IHRvIGEgbm9uemVybyB2YWx1ZS4gTW9yZQoraW5mb3JtYXRpb24gb24gYmxvY2sgSS9PIGRlYnVnZ2luZyBpcyBpbiBEb2N1bWVudGF0aW9uL2xhcHRvcHMvbGFwdG9wLW1vZGUudHh0LgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitjb21wYWN0X21lbW9yeQorCitBdmFpbGFibGUgb25seSB3aGVuIENPTkZJR19DT01QQUNUSU9OIGlzIHNldC4gV2hlbiAxIGlzIHdyaXR0ZW4gdG8gdGhlIGZpbGUsCithbGwgem9uZXMgYXJlIGNvbXBhY3RlZCBzdWNoIHRoYXQgZnJlZSBtZW1vcnkgaXMgYXZhaWxhYmxlIGluIGNvbnRpZ3VvdXMKK2Jsb2NrcyB3aGVyZSBwb3NzaWJsZS4gVGhpcyBjYW4gYmUgaW1wb3J0YW50IGZvciBleGFtcGxlIGluIHRoZSBhbGxvY2F0aW9uIG9mCitodWdlIHBhZ2VzIGFsdGhvdWdoIHByb2Nlc3NlcyB3aWxsIGFsc28gZGlyZWN0bHkgY29tcGFjdCBtZW1vcnkgYXMgcmVxdWlyZWQuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2NvbXBhY3RfdW5ldmljdGFibGVfYWxsb3dlZAorCitBdmFpbGFibGUgb25seSB3aGVuIENPTkZJR19DT01QQUNUSU9OIGlzIHNldC4gV2hlbiBzZXQgdG8gMSwgY29tcGFjdGlvbiBpcworYWxsb3dlZCB0byBleGFtaW5lIHRoZSB1bmV2aWN0YWJsZSBscnUgKG1sb2NrZWQgcGFnZXMpIGZvciBwYWdlcyB0byBjb21wYWN0LgorVGhpcyBzaG91bGQgYmUgdXNlZCBvbiBzeXN0ZW1zIHdoZXJlIHN0YWxscyBmb3IgbWlub3IgcGFnZSBmYXVsdHMgYXJlIGFuCithY2NlcHRhYmxlIHRyYWRlIGZvciBsYXJnZSBjb250aWd1b3VzIGZyZWUgbWVtb3J5LiAgU2V0IHRvIDAgdG8gcHJldmVudAorY29tcGFjdGlvbiBmcm9tIG1vdmluZyBwYWdlcyB0aGF0IGFyZSB1bmV2aWN0YWJsZS4gIERlZmF1bHQgdmFsdWUgaXMgMS4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworZGlydHlfYmFja2dyb3VuZF9ieXRlcworCitDb250YWlucyB0aGUgYW1vdW50IG9mIGRpcnR5IG1lbW9yeSBhdCB3aGljaCB0aGUgYmFja2dyb3VuZCBrZXJuZWwKK2ZsdXNoZXIgdGhyZWFkcyB3aWxsIHN0YXJ0IHdyaXRlYmFjay4KKworTm90ZTogZGlydHlfYmFja2dyb3VuZF9ieXRlcyBpcyB0aGUgY291bnRlcnBhcnQgb2YgZGlydHlfYmFja2dyb3VuZF9yYXRpby4gT25seQorb25lIG9mIHRoZW0gbWF5IGJlIHNwZWNpZmllZCBhdCBhIHRpbWUuIFdoZW4gb25lIHN5c2N0bCBpcyB3cml0dGVuIGl0IGlzCitpbW1lZGlhdGVseSB0YWtlbiBpbnRvIGFjY291bnQgdG8gZXZhbHVhdGUgdGhlIGRpcnR5IG1lbW9yeSBsaW1pdHMgYW5kIHRoZQorb3RoZXIgYXBwZWFycyBhcyAwIHdoZW4gcmVhZC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworZGlydHlfYmFja2dyb3VuZF9yYXRpbworCitDb250YWlucywgYXMgYSBwZXJjZW50YWdlIG9mIHRvdGFsIGF2YWlsYWJsZSBtZW1vcnkgdGhhdCBjb250YWlucyBmcmVlIHBhZ2VzCithbmQgcmVjbGFpbWFibGUgcGFnZXMsIHRoZSBudW1iZXIgb2YgcGFnZXMgYXQgd2hpY2ggdGhlIGJhY2tncm91bmQga2VybmVsCitmbHVzaGVyIHRocmVhZHMgd2lsbCBzdGFydCB3cml0aW5nIG91dCBkaXJ0eSBkYXRhLgorCitUaGUgdG90YWwgYXZhaWFibGUgbWVtb3J5IGlzIG5vdCBlcXVhbCB0byB0b3RhbCBzeXN0ZW0gbWVtb3J5LgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitkaXJ0eV9ieXRlcworCitDb250YWlucyB0aGUgYW1vdW50IG9mIGRpcnR5IG1lbW9yeSBhdCB3aGljaCBhIHByb2Nlc3MgZ2VuZXJhdGluZyBkaXNrIHdyaXRlcword2lsbCBpdHNlbGYgc3RhcnQgd3JpdGViYWNrLgorCitOb3RlOiBkaXJ0eV9ieXRlcyBpcyB0aGUgY291bnRlcnBhcnQgb2YgZGlydHlfcmF0aW8uIE9ubHkgb25lIG9mIHRoZW0gbWF5IGJlCitzcGVjaWZpZWQgYXQgYSB0aW1lLiBXaGVuIG9uZSBzeXNjdGwgaXMgd3JpdHRlbiBpdCBpcyBpbW1lZGlhdGVseSB0YWtlbiBpbnRvCithY2NvdW50IHRvIGV2YWx1YXRlIHRoZSBkaXJ0eSBtZW1vcnkgbGltaXRzIGFuZCB0aGUgb3RoZXIgYXBwZWFycyBhcyAwIHdoZW4KK3JlYWQuCisKK05vdGU6IHRoZSBtaW5pbXVtIHZhbHVlIGFsbG93ZWQgZm9yIGRpcnR5X2J5dGVzIGlzIHR3byBwYWdlcyAoaW4gYnl0ZXMpOyBhbnkKK3ZhbHVlIGxvd2VyIHRoYW4gdGhpcyBsaW1pdCB3aWxsIGJlIGlnbm9yZWQgYW5kIHRoZSBvbGQgY29uZmlndXJhdGlvbiB3aWxsIGJlCityZXRhaW5lZC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworZGlydHlfZXhwaXJlX2NlbnRpc2VjcworCitUaGlzIHR1bmFibGUgaXMgdXNlZCB0byBkZWZpbmUgd2hlbiBkaXJ0eSBkYXRhIGlzIG9sZCBlbm91Z2ggdG8gYmUgZWxpZ2libGUKK2ZvciB3cml0ZW91dCBieSB0aGUga2VybmVsIGZsdXNoZXIgdGhyZWFkcy4gIEl0IGlzIGV4cHJlc3NlZCBpbiAxMDAndGhzCitvZiBhIHNlY29uZC4gIERhdGEgd2hpY2ggaGFzIGJlZW4gZGlydHkgaW4tbWVtb3J5IGZvciBsb25nZXIgdGhhbiB0aGlzCitpbnRlcnZhbCB3aWxsIGJlIHdyaXR0ZW4gb3V0IG5leHQgdGltZSBhIGZsdXNoZXIgdGhyZWFkIHdha2VzIHVwLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitkaXJ0eV9yYXRpbworCitDb250YWlucywgYXMgYSBwZXJjZW50YWdlIG9mIHRvdGFsIGF2YWlsYWJsZSBtZW1vcnkgdGhhdCBjb250YWlucyBmcmVlIHBhZ2VzCithbmQgcmVjbGFpbWFibGUgcGFnZXMsIHRoZSBudW1iZXIgb2YgcGFnZXMgYXQgd2hpY2ggYSBwcm9jZXNzIHdoaWNoIGlzCitnZW5lcmF0aW5nIGRpc2sgd3JpdGVzIHdpbGwgaXRzZWxmIHN0YXJ0IHdyaXRpbmcgb3V0IGRpcnR5IGRhdGEuCisKK1RoZSB0b3RhbCBhdmFpYWJsZSBtZW1vcnkgaXMgbm90IGVxdWFsIHRvIHRvdGFsIHN5c3RlbSBtZW1vcnkuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2RpcnR5X3dyaXRlYmFja19jZW50aXNlY3MKKworVGhlIGtlcm5lbCBmbHVzaGVyIHRocmVhZHMgd2lsbCBwZXJpb2RpY2FsbHkgd2FrZSB1cCBhbmQgd3JpdGUgYG9sZCcgZGF0YQorb3V0IHRvIGRpc2suICBUaGlzIHR1bmFibGUgZXhwcmVzc2VzIHRoZSBpbnRlcnZhbCBiZXR3ZWVuIHRob3NlIHdha2V1cHMsIGluCisxMDAndGhzIG9mIGEgc2Vjb25kLgorCitTZXR0aW5nIHRoaXMgdG8gemVybyBkaXNhYmxlcyBwZXJpb2RpYyB3cml0ZWJhY2sgYWx0b2dldGhlci4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworZHJvcF9jYWNoZXMKKworV3JpdGluZyB0byB0aGlzIHdpbGwgY2F1c2UgdGhlIGtlcm5lbCB0byBkcm9wIGNsZWFuIGNhY2hlcywgYXMgd2VsbCBhcworcmVjbGFpbWFibGUgc2xhYiBvYmplY3RzIGxpa2UgZGVudHJpZXMgYW5kIGlub2Rlcy4gIE9uY2UgZHJvcHBlZCwgdGhlaXIKK21lbW9yeSBiZWNvbWVzIGZyZWUuCisKK1RvIGZyZWUgcGFnZWNhY2hlOgorCWVjaG8gMSA+IC9wcm9jL3N5cy92bS9kcm9wX2NhY2hlcworVG8gZnJlZSByZWNsYWltYWJsZSBzbGFiIG9iamVjdHMgKGluY2x1ZGVzIGRlbnRyaWVzIGFuZCBpbm9kZXMpOgorCWVjaG8gMiA+IC9wcm9jL3N5cy92bS9kcm9wX2NhY2hlcworVG8gZnJlZSBzbGFiIG9iamVjdHMgYW5kIHBhZ2VjYWNoZToKKwllY2hvIDMgPiAvcHJvYy9zeXMvdm0vZHJvcF9jYWNoZXMKKworVGhpcyBpcyBhIG5vbi1kZXN0cnVjdGl2ZSBvcGVyYXRpb24gYW5kIHdpbGwgbm90IGZyZWUgYW55IGRpcnR5IG9iamVjdHMuCitUbyBpbmNyZWFzZSB0aGUgbnVtYmVyIG9mIG9iamVjdHMgZnJlZWQgYnkgdGhpcyBvcGVyYXRpb24sIHRoZSB1c2VyIG1heSBydW4KK2BzeW5jJyBwcmlvciB0byB3cml0aW5nIHRvIC9wcm9jL3N5cy92bS9kcm9wX2NhY2hlcy4gIFRoaXMgd2lsbCBtaW5pbWl6ZSB0aGUKK251bWJlciBvZiBkaXJ0eSBvYmplY3RzIG9uIHRoZSBzeXN0ZW0gYW5kIGNyZWF0ZSBtb3JlIGNhbmRpZGF0ZXMgdG8gYmUKK2Ryb3BwZWQuCisKK1RoaXMgZmlsZSBpcyBub3QgYSBtZWFucyB0byBjb250cm9sIHRoZSBncm93dGggb2YgdGhlIHZhcmlvdXMga2VybmVsIGNhY2hlcworKGlub2RlcywgZGVudHJpZXMsIHBhZ2VjYWNoZSwgZXRjLi4uKSAgVGhlc2Ugb2JqZWN0cyBhcmUgYXV0b21hdGljYWxseQorcmVjbGFpbWVkIGJ5IHRoZSBrZXJuZWwgd2hlbiBtZW1vcnkgaXMgbmVlZGVkIGVsc2V3aGVyZSBvbiB0aGUgc3lzdGVtLgorCitVc2Ugb2YgdGhpcyBmaWxlIGNhbiBjYXVzZSBwZXJmb3JtYW5jZSBwcm9ibGVtcy4gIFNpbmNlIGl0IGRpc2NhcmRzIGNhY2hlZAorb2JqZWN0cywgaXQgbWF5IGNvc3QgYSBzaWduaWZpY2FudCBhbW91bnQgb2YgSS9PIGFuZCBDUFUgdG8gcmVjcmVhdGUgdGhlCitkcm9wcGVkIG9iamVjdHMsIGVzcGVjaWFsbHkgaWYgdGhleSB3ZXJlIHVuZGVyIGhlYXZ5IHVzZS4gIEJlY2F1c2Ugb2YgdGhpcywKK3VzZSBvdXRzaWRlIG9mIGEgdGVzdGluZyBvciBkZWJ1Z2dpbmcgZW52aXJvbm1lbnQgaXMgbm90IHJlY29tbWVuZGVkLgorCitZb3UgbWF5IHNlZSBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIGluIHlvdXIga2VybmVsIGxvZyB3aGVuIHRoaXMgZmlsZSBpcwordXNlZDoKKworCWNhdCAoMTIzNCk6IGRyb3BfY2FjaGVzOiAzCisKK1RoZXNlIGFyZSBpbmZvcm1hdGlvbmFsIG9ubHkuICBUaGV5IGRvIG5vdCBtZWFuIHRoYXQgYW55dGhpbmcgaXMgd3JvbmcKK3dpdGggeW91ciBzeXN0ZW0uICBUbyBkaXNhYmxlIHRoZW0sIGVjaG8gNCAoYml0IDMpIGludG8gZHJvcF9jYWNoZXMuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2V4dGZyYWdfdGhyZXNob2xkCisKK1RoaXMgcGFyYW1ldGVyIGFmZmVjdHMgd2hldGhlciB0aGUga2VybmVsIHdpbGwgY29tcGFjdCBtZW1vcnkgb3IgZGlyZWN0CityZWNsYWltIHRvIHNhdGlzZnkgYSBoaWdoLW9yZGVyIGFsbG9jYXRpb24uIFRoZSBleHRmcmFnL2V4dGZyYWdfaW5kZXggZmlsZSBpbgorZGVidWdmcyBzaG93cyB3aGF0IHRoZSBmcmFnbWVudGF0aW9uIGluZGV4IGZvciBlYWNoIG9yZGVyIGlzIGluIGVhY2ggem9uZSBpbgordGhlIHN5c3RlbS4gVmFsdWVzIHRlbmRpbmcgdG93YXJkcyAwIGltcGx5IGFsbG9jYXRpb25zIHdvdWxkIGZhaWwgZHVlIHRvIGxhY2sKK29mIG1lbW9yeSwgdmFsdWVzIHRvd2FyZHMgMTAwMCBpbXBseSBmYWlsdXJlcyBhcmUgZHVlIHRvIGZyYWdtZW50YXRpb24gYW5kIC0xCitpbXBsaWVzIHRoYXQgdGhlIGFsbG9jYXRpb24gd2lsbCBzdWNjZWVkIGFzIGxvbmcgYXMgd2F0ZXJtYXJrcyBhcmUgbWV0LgorCitUaGUga2VybmVsIHdpbGwgbm90IGNvbXBhY3QgbWVtb3J5IGluIGEgem9uZSBpZiB0aGUKK2ZyYWdtZW50YXRpb24gaW5kZXggaXMgPD0gZXh0ZnJhZ190aHJlc2hvbGQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDUwMC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworaHVnZXBhZ2VzX3RyZWF0X2FzX21vdmFibGUKKworVGhpcyBwYXJhbWV0ZXIgY29udHJvbHMgd2hldGhlciB3ZSBjYW4gYWxsb2NhdGUgaHVnZXBhZ2VzIGZyb20gWk9ORV9NT1ZBQkxFCitvciBub3QuIElmIHNldCB0byBub24temVybywgaHVnZXBhZ2VzIGNhbiBiZSBhbGxvY2F0ZWQgZnJvbSBaT05FX01PVkFCTEUuCitaT05FX01PVkFCTEUgaXMgY3JlYXRlZCB3aGVuIGtlcm5lbCBib290IHBhcmFtZXRlciBrZXJuZWxjb3JlPSBpcyBzcGVjaWZpZWQsCitzbyB0aGlzIHBhcmFtZXRlciBoYXMgbm8gZWZmZWN0IGlmIHVzZWQgd2l0aG91dCBrZXJuZWxjb3JlPS4KKworSHVnZXBhZ2UgbWlncmF0aW9uIGlzIG5vdyBhdmFpbGFibGUgaW4gc29tZSBzaXR1YXRpb25zIHdoaWNoIGRlcGVuZCBvbiB0aGUKK2FyY2hpdGVjdHVyZSBhbmQvb3IgdGhlIGh1Z2VwYWdlIHNpemUuIElmIGEgaHVnZXBhZ2Ugc3VwcG9ydHMgbWlncmF0aW9uLAorYWxsb2NhdGlvbiBmcm9tIFpPTkVfTU9WQUJMRSBpcyBhbHdheXMgZW5hYmxlZCBmb3IgdGhlIGh1Z2VwYWdlIHJlZ2FyZGxlc3MKK29mIHRoZSB2YWx1ZSBvZiB0aGlzIHBhcmFtZXRlci4KK0lPVywgdGhpcyBwYXJhbWV0ZXIgYWZmZWN0cyBvbmx5IG5vbi1taWdyYXRhYmxlIGh1Z2VwYWdlcy4KKworQXNzdW1pbmcgdGhhdCBodWdlcGFnZXMgYXJlIG5vdCBtaWdyYXRhYmxlIGluIHlvdXIgc3lzdGVtLCBvbmUgdXNlY2FzZSBvZgordGhpcyBwYXJhbWV0ZXIgaXMgdGhhdCB1c2VycyBjYW4gbWFrZSBodWdlcGFnZSBwb29sIG1vcmUgZXh0ZW5zaWJsZSBieQorZW5hYmxpbmcgdGhlIGFsbG9jYXRpb24gZnJvbSBaT05FX01PVkFCTEUuIFRoaXMgaXMgYmVjYXVzZSBvbiBaT05FX01PVkFCTEUKK3BhZ2UgcmVjbGFpbS9taWdyYXRpb24vY29tcGFjdGlvbiB3b3JrIG1vcmUgYW5kIHlvdSBjYW4gZ2V0IGNvbnRpZ3VvdXMKK21lbW9yeSBtb3JlIGxpa2VseS4gTm90ZSB0aGF0IHVzaW5nIFpPTkVfTU9WQUJMRSBmb3Igbm9uLW1pZ3JhdGFibGUKK2h1Z2VwYWdlcyBjYW4gZG8gaGFybSB0byBvdGhlciBmZWF0dXJlcyBsaWtlIG1lbW9yeSBob3RyZW1vdmUgKGJlY2F1c2UKK21lbW9yeSBob3RyZW1vdmUgZXhwZWN0cyB0aGF0IG1lbW9yeSBibG9ja3Mgb24gWk9ORV9NT1ZBQkxFIGFyZSBhbHdheXMKK3JlbW92YWJsZSwpIHNvIGl0J3MgYSB0cmFkZS1vZmYgcmVzcG9uc2libGUgZm9yIHRoZSB1c2Vycy4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworaHVnZXRsYl9zaG1fZ3JvdXAKKworaHVnZXRsYl9zaG1fZ3JvdXAgY29udGFpbnMgZ3JvdXAgaWQgdGhhdCBpcyBhbGxvd2VkIHRvIGNyZWF0ZSBTeXNWCitzaGFyZWQgbWVtb3J5IHNlZ21lbnQgdXNpbmcgaHVnZXRsYiBwYWdlLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitsYXB0b3BfbW9kZQorCitsYXB0b3BfbW9kZSBpcyBhIGtub2IgdGhhdCBjb250cm9scyAibGFwdG9wIG1vZGUiLiBBbGwgdGhlIHRoaW5ncyB0aGF0IGFyZQorY29udHJvbGxlZCBieSB0aGlzIGtub2IgYXJlIGRpc2N1c3NlZCBpbiBEb2N1bWVudGF0aW9uL2xhcHRvcHMvbGFwdG9wLW1vZGUudHh0LgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitsZWdhY3lfdmFfbGF5b3V0CisKK0lmIG5vbi16ZXJvLCB0aGlzIHN5c2N0bCBkaXNhYmxlcyB0aGUgbmV3IDMyLWJpdCBtbWFwIGxheW91dCAtIHRoZSBrZXJuZWwKK3dpbGwgdXNlIHRoZSBsZWdhY3kgKDIuNCkgbGF5b3V0IGZvciBhbGwgcHJvY2Vzc2VzLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitsb3dtZW1fcmVzZXJ2ZV9yYXRpbworCitGb3Igc29tZSBzcGVjaWFsaXNlZCB3b3JrbG9hZHMgb24gaGlnaG1lbSBtYWNoaW5lcyBpdCBpcyBkYW5nZXJvdXMgZm9yCit0aGUga2VybmVsIHRvIGFsbG93IHByb2Nlc3MgbWVtb3J5IHRvIGJlIGFsbG9jYXRlZCBmcm9tIHRoZSAibG93bWVtIgorem9uZS4gIFRoaXMgaXMgYmVjYXVzZSB0aGF0IG1lbW9yeSBjb3VsZCB0aGVuIGJlIHBpbm5lZCB2aWEgdGhlIG1sb2NrKCkKK3N5c3RlbSBjYWxsLCBvciBieSB1bmF2YWlsYWJpbGl0eSBvZiBzd2Fwc3BhY2UuCisKK0FuZCBvbiBsYXJnZSBoaWdobWVtIG1hY2hpbmVzIHRoaXMgbGFjayBvZiByZWNsYWltYWJsZSBsb3dtZW0gbWVtb3J5CitjYW4gYmUgZmF0YWwuCisKK1NvIHRoZSBMaW51eCBwYWdlIGFsbG9jYXRvciBoYXMgYSBtZWNoYW5pc20gd2hpY2ggcHJldmVudHMgYWxsb2NhdGlvbnMKK3doaWNoIF9jb3VsZF8gdXNlIGhpZ2htZW0gZnJvbSB1c2luZyB0b28gbXVjaCBsb3dtZW0uICBUaGlzIG1lYW5zIHRoYXQKK2EgY2VydGFpbiBhbW91bnQgb2YgbG93bWVtIGlzIGRlZmVuZGVkIGZyb20gdGhlIHBvc3NpYmlsaXR5IG9mIGJlaW5nCitjYXB0dXJlZCBpbnRvIHBpbm5lZCB1c2VyIG1lbW9yeS4KKworKFRoZSBzYW1lIGFyZ3VtZW50IGFwcGxpZXMgdG8gdGhlIG9sZCAxNiBtZWdhYnl0ZSBJU0EgRE1BIHJlZ2lvbi4gIFRoaXMKK21lY2hhbmlzbSB3aWxsIGFsc28gZGVmZW5kIHRoYXQgcmVnaW9uIGZyb20gYWxsb2NhdGlvbnMgd2hpY2ggY291bGQgdXNlCitoaWdobWVtIG9yIGxvd21lbSkuCisKK1RoZSBgbG93bWVtX3Jlc2VydmVfcmF0aW8nIHR1bmFibGUgZGV0ZXJtaW5lcyBob3cgYWdncmVzc2l2ZSB0aGUga2VybmVsIGlzCitpbiBkZWZlbmRpbmcgdGhlc2UgbG93ZXIgem9uZXMuCisKK0lmIHlvdSBoYXZlIGEgbWFjaGluZSB3aGljaCB1c2VzIGhpZ2htZW0gb3IgSVNBIERNQSBhbmQgeW91cgorYXBwbGljYXRpb25zIGFyZSB1c2luZyBtbG9jaygpLCBvciBpZiB5b3UgYXJlIHJ1bm5pbmcgd2l0aCBubyBzd2FwIHRoZW4KK3lvdSBwcm9iYWJseSBzaG91bGQgY2hhbmdlIHRoZSBsb3dtZW1fcmVzZXJ2ZV9yYXRpbyBzZXR0aW5nLgorCitUaGUgbG93bWVtX3Jlc2VydmVfcmF0aW8gaXMgYW4gYXJyYXkuIFlvdSBjYW4gc2VlIHRoZW0gYnkgcmVhZGluZyB0aGlzIGZpbGUuCistCislIGNhdCAvcHJvYy9zeXMvdm0vbG93bWVtX3Jlc2VydmVfcmF0aW8KKzI1NiAgICAgMjU2ICAgICAzMgorLQorTm90ZTogIyBvZiB0aGlzIGVsZW1lbnRzIGlzIG9uZSBmZXdlciB0aGFuIG51bWJlciBvZiB6b25lcy4gQmVjYXVzZSB0aGUgaGlnaGVzdAorICAgICAgem9uZSdzIHZhbHVlIGlzIG5vdCBuZWNlc3NhcnkgZm9yIGZvbGxvd2luZyBjYWxjdWxhdGlvbi4KKworQnV0LCB0aGVzZSB2YWx1ZXMgYXJlIG5vdCB1c2VkIGRpcmVjdGx5LiBUaGUga2VybmVsIGNhbGN1bGF0ZXMgIyBvZiBwcm90ZWN0aW9uCitwYWdlcyBmb3IgZWFjaCB6b25lcyBmcm9tIHRoZW0uIFRoZXNlIGFyZSBzaG93biBhcyBhcnJheSBvZiBwcm90ZWN0aW9uIHBhZ2VzCitpbiAvcHJvYy96b25laW5mbyBsaWtlIGZvbGxvd2luZ3MuIChUaGlzIGlzIGFuIGV4YW1wbGUgb2YgeDg2LTY0IGJveCkuCitFYWNoIHpvbmUgaGFzIGFuIGFycmF5IG9mIHByb3RlY3Rpb24gcGFnZXMgbGlrZSB0aGlzLgorCistCitOb2RlIDAsIHpvbmUgICAgICBETUEKKyAgcGFnZXMgZnJlZSAgICAgMTM1NQorICAgICAgICBtaW4gICAgICAzCisgICAgICAgIGxvdyAgICAgIDMKKyAgICAgICAgaGlnaCAgICAgNAorCToKKwk6CisgICAgbnVtYV9vdGhlciAgIDAKKyAgICAgICAgcHJvdGVjdGlvbjogKDAsIDIwMDQsIDIwMDQsIDIwMDQpCisJXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisgIHBhZ2VzZXRzCisgICAgY3B1OiAwIHBjcDogMAorICAgICAgICA6CistCitUaGVzZSBwcm90ZWN0aW9ucyBhcmUgYWRkZWQgdG8gc2NvcmUgdG8ganVkZ2Ugd2hldGhlciB0aGlzIHpvbmUgc2hvdWxkIGJlIHVzZWQKK2ZvciBwYWdlIGFsbG9jYXRpb24gb3Igc2hvdWxkIGJlIHJlY2xhaW1lZC4KKworSW4gdGhpcyBleGFtcGxlLCBpZiBub3JtYWwgcGFnZXMgKGluZGV4PTIpIGFyZSByZXF1aXJlZCB0byB0aGlzIERNQSB6b25lIGFuZAord2F0ZXJtYXJrW1dNQVJLX0hJR0hdIGlzIHVzZWQgZm9yIHdhdGVybWFyaywgdGhlIGtlcm5lbCBqdWRnZXMgdGhpcyB6b25lIHNob3VsZAorbm90IGJlIHVzZWQgYmVjYXVzZSBwYWdlc19mcmVlKDEzNTUpIGlzIHNtYWxsZXIgdGhhbiB3YXRlcm1hcmsgKyBwcm90ZWN0aW9uWzJdCisoNCArIDIwMDQgPSAyMDA4KS4gSWYgdGhpcyBwcm90ZWN0aW9uIHZhbHVlIGlzIDAsIHRoaXMgem9uZSB3b3VsZCBiZSB1c2VkIGZvcgorbm9ybWFsIHBhZ2UgcmVxdWlyZW1lbnQuIElmIHJlcXVpcmVtZW50IGlzIERNQSB6b25lKGluZGV4PTApLCBwcm90ZWN0aW9uWzBdCisoPTApIGlzIHVzZWQuCisKK3pvbmVbaV0ncyBwcm90ZWN0aW9uW2pdIGlzIGNhbGN1bGF0ZWQgYnkgZm9sbG93aW5nIGV4cHJlc3Npb24uCisKKyhpIDwgaik6CisgIHpvbmVbaV0tPnByb3RlY3Rpb25bal0KKyAgPSAodG90YWwgc3VtcyBvZiBtYW5hZ2VkX3BhZ2VzIGZyb20gem9uZVtpKzFdIHRvIHpvbmVbal0gb24gdGhlIG5vZGUpCisgICAgLyBsb3dtZW1fcmVzZXJ2ZV9yYXRpb1tpXTsKKyhpID0gaik6CisgICAoc2hvdWxkIG5vdCBiZSBwcm90ZWN0ZWQuID0gMDsKKyhpID4gaik6CisgICAobm90IG5lY2Vzc2FyeSwgYnV0IGxvb2tzIDApCisKK1RoZSBkZWZhdWx0IHZhbHVlcyBvZiBsb3dtZW1fcmVzZXJ2ZV9yYXRpb1tpXSBhcmUKKyAgICAyNTYgKGlmIHpvbmVbaV0gbWVhbnMgRE1BIG9yIERNQTMyIHpvbmUpCisgICAgMzIgIChvdGhlcnMpLgorQXMgYWJvdmUgZXhwcmVzc2lvbiwgdGhleSBhcmUgcmVjaXByb2NhbCBudW1iZXIgb2YgcmF0aW8uCisyNTYgbWVhbnMgMS8yNTYuICMgb2YgcHJvdGVjdGlvbiBwYWdlcyBiZWNvbWVzIGFib3V0ICIwLjM5JSIgb2YgdG90YWwgbWFuYWdlZAorcGFnZXMgb2YgaGlnaGVyIHpvbmVzIG9uIHRoZSBub2RlLgorCitJZiB5b3Ugd291bGQgbGlrZSB0byBwcm90ZWN0IG1vcmUgcGFnZXMsIHNtYWxsZXIgdmFsdWVzIGFyZSBlZmZlY3RpdmUuCitUaGUgbWluaW11bSB2YWx1ZSBpcyAxICgxLzEgLT4gMTAwJSkuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK21heF9tYXBfY291bnQ6CisKK1RoaXMgZmlsZSBjb250YWlucyB0aGUgbWF4aW11bSBudW1iZXIgb2YgbWVtb3J5IG1hcCBhcmVhcyBhIHByb2Nlc3MKK21heSBoYXZlLiBNZW1vcnkgbWFwIGFyZWFzIGFyZSB1c2VkIGFzIGEgc2lkZS1lZmZlY3Qgb2YgY2FsbGluZworbWFsbG9jLCBkaXJlY3RseSBieSBtbWFwIGFuZCBtcHJvdGVjdCwgYW5kIGFsc28gd2hlbiBsb2FkaW5nIHNoYXJlZAorbGlicmFyaWVzLgorCitXaGlsZSBtb3N0IGFwcGxpY2F0aW9ucyBuZWVkIGxlc3MgdGhhbiBhIHRob3VzYW5kIG1hcHMsIGNlcnRhaW4KK3Byb2dyYW1zLCBwYXJ0aWN1bGFybHkgbWFsbG9jIGRlYnVnZ2VycywgbWF5IGNvbnN1bWUgbG90cyBvZiB0aGVtLAorZS5nLiwgdXAgdG8gb25lIG9yIHR3byBtYXBzIHBlciBhbGxvY2F0aW9uLgorCitUaGUgZGVmYXVsdCB2YWx1ZSBpcyA2NTUzNi4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCittZW1vcnlfZmFpbHVyZV9lYXJseV9raWxsOgorCitDb250cm9sIGhvdyB0byBraWxsIHByb2Nlc3NlcyB3aGVuIHVuY29ycmVjdGVkIG1lbW9yeSBlcnJvciAodHlwaWNhbGx5CithIDJiaXQgZXJyb3IgaW4gYSBtZW1vcnkgbW9kdWxlKSBpcyBkZXRlY3RlZCBpbiB0aGUgYmFja2dyb3VuZCBieSBoYXJkd2FyZQordGhhdCBjYW5ub3QgYmUgaGFuZGxlZCBieSB0aGUga2VybmVsLiBJbiBzb21lIGNhc2VzIChsaWtlIHRoZSBwYWdlCitzdGlsbCBoYXZpbmcgYSB2YWxpZCBjb3B5IG9uIGRpc2spIHRoZSBrZXJuZWwgd2lsbCBoYW5kbGUgdGhlIGZhaWx1cmUKK3RyYW5zcGFyZW50bHkgd2l0aG91dCBhZmZlY3RpbmcgYW55IGFwcGxpY2F0aW9ucy4gQnV0IGlmIHRoZXJlIGlzCitubyBvdGhlciB1cHRvZGF0ZSBjb3B5IG9mIHRoZSBkYXRhIGl0IHdpbGwga2lsbCB0byBwcmV2ZW50IGFueSBkYXRhCitjb3JydXB0aW9ucyBmcm9tIHByb3BhZ2F0aW5nLgorCisxOiBLaWxsIGFsbCBwcm9jZXNzZXMgdGhhdCBoYXZlIHRoZSBjb3JydXB0ZWQgYW5kIG5vdCByZWxvYWRhYmxlIHBhZ2UgbWFwcGVkCithcyBzb29uIGFzIHRoZSBjb3JydXB0aW9uIGlzIGRldGVjdGVkLiAgTm90ZSB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQKK2ZvciBhIGZldyB0eXBlcyBvZiBwYWdlcywgbGlrZSBrZXJuZWwgaW50ZXJuYWxseSBhbGxvY2F0ZWQgZGF0YSBvcgordGhlIHN3YXAgY2FjaGUsIGJ1dCB3b3JrcyBmb3IgdGhlIG1ham9yaXR5IG9mIHVzZXIgcGFnZXMuCisKKzA6IE9ubHkgdW5tYXAgdGhlIGNvcnJ1cHRlZCBwYWdlIGZyb20gYWxsIHByb2Nlc3NlcyBhbmQgb25seSBraWxsIGEgcHJvY2Vzcword2hvIHRyaWVzIHRvIGFjY2VzcyBpdC4KKworVGhlIGtpbGwgaXMgZG9uZSB1c2luZyBhIGNhdGNoYWJsZSBTSUdCVVMgd2l0aCBCVVNfTUNFRVJSX0FPLCBzbyBwcm9jZXNzZXMgY2FuCitoYW5kbGUgdGhpcyBpZiB0aGV5IHdhbnQgdG8uCisKK1RoaXMgaXMgb25seSBhY3RpdmUgb24gYXJjaGl0ZWN0dXJlcy9wbGF0Zm9ybXMgd2l0aCBhZHZhbmNlZCBtYWNoaW5lCitjaGVjayBoYW5kbGluZyBhbmQgZGVwZW5kcyBvbiB0aGUgaGFyZHdhcmUgY2FwYWJpbGl0aWVzLgorCitBcHBsaWNhdGlvbnMgY2FuIG92ZXJyaWRlIHRoaXMgc2V0dGluZyBpbmRpdmlkdWFsbHkgd2l0aCB0aGUgUFJfTUNFX0tJTEwgcHJjdGwKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworbWVtb3J5X2ZhaWx1cmVfcmVjb3ZlcnkKKworRW5hYmxlIG1lbW9yeSBmYWlsdXJlIHJlY292ZXJ5ICh3aGVuIHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0pCisKKzE6IEF0dGVtcHQgcmVjb3ZlcnkuCisKKzA6IEFsd2F5cyBwYW5pYyBvbiBhIG1lbW9yeSBmYWlsdXJlLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCittaW5fZnJlZV9rYnl0ZXM6CisKK1RoaXMgaXMgdXNlZCB0byBmb3JjZSB0aGUgTGludXggVk0gdG8ga2VlcCBhIG1pbmltdW0gbnVtYmVyCitvZiBraWxvYnl0ZXMgZnJlZS4gIFRoZSBWTSB1c2VzIHRoaXMgbnVtYmVyIHRvIGNvbXB1dGUgYQord2F0ZXJtYXJrW1dNQVJLX01JTl0gdmFsdWUgZm9yIGVhY2ggbG93bWVtIHpvbmUgaW4gdGhlIHN5c3RlbS4KK0VhY2ggbG93bWVtIHpvbmUgZ2V0cyBhIG51bWJlciBvZiByZXNlcnZlZCBmcmVlIHBhZ2VzIGJhc2VkCitwcm9wb3J0aW9uYWxseSBvbiBpdHMgc2l6ZS4KKworU29tZSBtaW5pbWFsIGFtb3VudCBvZiBtZW1vcnkgaXMgbmVlZGVkIHRvIHNhdGlzZnkgUEZfTUVNQUxMT0MKK2FsbG9jYXRpb25zOyBpZiB5b3Ugc2V0IHRoaXMgdG8gbG93ZXIgdGhhbiAxMDI0S0IsIHlvdXIgc3lzdGVtIHdpbGwKK2JlY29tZSBzdWJ0bHkgYnJva2VuLCBhbmQgcHJvbmUgdG8gZGVhZGxvY2sgdW5kZXIgaGlnaCBsb2Fkcy4KKworU2V0dGluZyB0aGlzIHRvbyBoaWdoIHdpbGwgT09NIHlvdXIgbWFjaGluZSBpbnN0YW50bHkuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworbWluX3NsYWJfcmF0aW86CisKK1RoaXMgaXMgYXZhaWxhYmxlIG9ubHkgb24gTlVNQSBrZXJuZWxzLgorCitBIHBlcmNlbnRhZ2Ugb2YgdGhlIHRvdGFsIHBhZ2VzIGluIGVhY2ggem9uZS4gIE9uIFpvbmUgcmVjbGFpbQorKGZhbGxiYWNrIGZyb20gdGhlIGxvY2FsIHpvbmUgb2NjdXJzKSBzbGFicyB3aWxsIGJlIHJlY2xhaW1lZCBpZiBtb3JlCit0aGFuIHRoaXMgcGVyY2VudGFnZSBvZiBwYWdlcyBpbiBhIHpvbmUgYXJlIHJlY2xhaW1hYmxlIHNsYWIgcGFnZXMuCitUaGlzIGluc3VyZXMgdGhhdCB0aGUgc2xhYiBncm93dGggc3RheXMgdW5kZXIgY29udHJvbCBldmVuIGluIE5VTUEKK3N5c3RlbXMgdGhhdCByYXJlbHkgcGVyZm9ybSBnbG9iYWwgcmVjbGFpbS4KKworVGhlIGRlZmF1bHQgaXMgNSBwZXJjZW50LgorCitOb3RlIHRoYXQgc2xhYiByZWNsYWltIGlzIHRyaWdnZXJlZCBpbiBhIHBlciB6b25lIC8gbm9kZSBmYXNoaW9uLgorVGhlIHByb2Nlc3Mgb2YgcmVjbGFpbWluZyBzbGFiIG1lbW9yeSBpcyBjdXJyZW50bHkgbm90IG5vZGUgc3BlY2lmaWMKK2FuZCBtYXkgbm90IGJlIGZhc3QuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworbWluX3VubWFwcGVkX3JhdGlvOgorCitUaGlzIGlzIGF2YWlsYWJsZSBvbmx5IG9uIE5VTUEga2VybmVscy4KKworVGhpcyBpcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIHRvdGFsIHBhZ2VzIGluIGVhY2ggem9uZS4gWm9uZSByZWNsYWltIHdpbGwKK29ubHkgb2NjdXIgaWYgbW9yZSB0aGFuIHRoaXMgcGVyY2VudGFnZSBvZiBwYWdlcyBhcmUgaW4gYSBzdGF0ZSB0aGF0Cit6b25lX3JlY2xhaW1fbW9kZSBhbGxvd3MgdG8gYmUgcmVjbGFpbWVkLgorCitJZiB6b25lX3JlY2xhaW1fbW9kZSBoYXMgdGhlIHZhbHVlIDQgT1InZCwgdGhlbiB0aGUgcGVyY2VudGFnZSBpcyBjb21wYXJlZAorYWdhaW5zdCBhbGwgZmlsZS1iYWNrZWQgdW5tYXBwZWQgcGFnZXMgaW5jbHVkaW5nIHN3YXBjYWNoZSBwYWdlcyBhbmQgdG1wZnMKK2ZpbGVzLiBPdGhlcndpc2UsIG9ubHkgdW5tYXBwZWQgcGFnZXMgYmFja2VkIGJ5IG5vcm1hbCBmaWxlcyBidXQgbm90IHRtcGZzCitmaWxlcyBhbmQgc2ltaWxhciBhcmUgY29uc2lkZXJlZC4KKworVGhlIGRlZmF1bHQgaXMgMSBwZXJjZW50LgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCittbWFwX21pbl9hZGRyCisKK1RoaXMgZmlsZSBpbmRpY2F0ZXMgdGhlIGFtb3VudCBvZiBhZGRyZXNzIHNwYWNlICB3aGljaCBhIHVzZXIgcHJvY2VzcyB3aWxsCitiZSByZXN0cmljdGVkIGZyb20gbW1hcHBpbmcuICBTaW5jZSBrZXJuZWwgbnVsbCBkZXJlZmVyZW5jZSBidWdzIGNvdWxkCithY2NpZGVudGFsbHkgb3BlcmF0ZSBiYXNlZCBvbiB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIGZpcnN0IGNvdXBsZSBvZiBwYWdlcworb2YgbWVtb3J5IHVzZXJzcGFjZSBwcm9jZXNzZXMgc2hvdWxkIG5vdCBiZSBhbGxvd2VkIHRvIHdyaXRlIHRvIHRoZW0uICBCeQorZGVmYXVsdCB0aGlzIHZhbHVlIGlzIHNldCB0byAwIGFuZCBubyBwcm90ZWN0aW9ucyB3aWxsIGJlIGVuZm9yY2VkIGJ5IHRoZQorc2VjdXJpdHkgbW9kdWxlLiAgU2V0dGluZyB0aGlzIHZhbHVlIHRvIHNvbWV0aGluZyBsaWtlIDY0ayB3aWxsIGFsbG93IHRoZQordmFzdCBtYWpvcml0eSBvZiBhcHBsaWNhdGlvbnMgdG8gd29yayBjb3JyZWN0bHkgYW5kIHByb3ZpZGUgZGVmZW5zZSBpbiBkZXB0aAorYWdhaW5zdCBmdXR1cmUgcG90ZW50aWFsIGtlcm5lbCBidWdzLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitucl9odWdlcGFnZXMKKworQ2hhbmdlIHRoZSBtaW5pbXVtIHNpemUgb2YgdGhlIGh1Z2VwYWdlIHBvb2wuCisKK1NlZSBEb2N1bWVudGF0aW9uL3ZtL2h1Z2V0bGJwYWdlLnR4dAorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitucl9vdmVyY29tbWl0X2h1Z2VwYWdlcworCitDaGFuZ2UgdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgaHVnZXBhZ2UgcG9vbC4gVGhlIG1heGltdW0gaXMKK25yX2h1Z2VwYWdlcyArIG5yX292ZXJjb21taXRfaHVnZXBhZ2VzLgorCitTZWUgRG9jdW1lbnRhdGlvbi92bS9odWdldGxicGFnZS50eHQKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworbnJfdHJpbV9wYWdlcworCitUaGlzIGlzIGF2YWlsYWJsZSBvbmx5IG9uIE5PTU1VIGtlcm5lbHMuCisKK1RoaXMgdmFsdWUgYWRqdXN0cyB0aGUgZXhjZXNzIHBhZ2UgdHJpbW1pbmcgYmVoYXZpb3VyIG9mIHBvd2VyLW9mLTIgYWxpZ25lZAorTk9NTVUgbW1hcCBhbGxvY2F0aW9ucy4KKworQSB2YWx1ZSBvZiAwIGRpc2FibGVzIHRyaW1taW5nIG9mIGFsbG9jYXRpb25zIGVudGlyZWx5LCB3aGlsZSBhIHZhbHVlIG9mIDEKK3RyaW1zIGV4Y2VzcyBwYWdlcyBhZ2dyZXNzaXZlbHkuIEFueSB2YWx1ZSA+PSAxIGFjdHMgYXMgdGhlIHdhdGVybWFyayB3aGVyZQordHJpbW1pbmcgb2YgYWxsb2NhdGlvbnMgaXMgaW5pdGlhdGVkLgorCitUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxLgorCitTZWUgRG9jdW1lbnRhdGlvbi9ub21tdS1tbWFwLnR4dCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworbnVtYV96b25lbGlzdF9vcmRlcgorCitUaGlzIHN5c2N0bCBpcyBvbmx5IGZvciBOVU1BLgorJ3doZXJlIHRoZSBtZW1vcnkgaXMgYWxsb2NhdGVkIGZyb20nIGlzIGNvbnRyb2xsZWQgYnkgem9uZWxpc3RzLgorKFRoaXMgZG9jdW1lbnRhdGlvbiBpZ25vcmVzIFpPTkVfSElHSE1FTS9aT05FX0RNQTMyIGZvciBzaW1wbGUgZXhwbGFuYXRpb24uCisgeW91IG1heSBiZSBhYmxlIHRvIHJlYWQgWk9ORV9ETUEgYXMgWk9ORV9ETUEzMi4uLikKKworSW4gbm9uLU5VTUEgY2FzZSwgYSB6b25lbGlzdCBmb3IgR0ZQX0tFUk5FTCBpcyBvcmRlcmVkIGFzIGZvbGxvd2luZy4KK1pPTkVfTk9STUFMIC0+IFpPTkVfRE1BCitUaGlzIG1lYW5zIHRoYXQgYSBtZW1vcnkgYWxsb2NhdGlvbiByZXF1ZXN0IGZvciBHRlBfS0VSTkVMIHdpbGwKK2dldCBtZW1vcnkgZnJvbSBaT05FX0RNQSBvbmx5IHdoZW4gWk9ORV9OT1JNQUwgaXMgbm90IGF2YWlsYWJsZS4KKworSW4gTlVNQSBjYXNlLCB5b3UgY2FuIHRoaW5rIG9mIGZvbGxvd2luZyAyIHR5cGVzIG9mIG9yZGVyLgorQXNzdW1lIDIgbm9kZSBOVU1BIGFuZCBiZWxvdyBpcyB6b25lbGlzdCBvZiBOb2RlKDApJ3MgR0ZQX0tFUk5FTAorCisoQSkgTm9kZSgwKSBaT05FX05PUk1BTCAtPiBOb2RlKDApIFpPTkVfRE1BIC0+IE5vZGUoMSkgWk9ORV9OT1JNQUwKKyhCKSBOb2RlKDApIFpPTkVfTk9STUFMIC0+IE5vZGUoMSkgWk9ORV9OT1JNQUwgLT4gTm9kZSgwKSBaT05FX0RNQS4KKworVHlwZShBKSBvZmZlcnMgdGhlIGJlc3QgbG9jYWxpdHkgZm9yIHByb2Nlc3NlcyBvbiBOb2RlKDApLCBidXQgWk9ORV9ETUEKK3dpbGwgYmUgdXNlZCBiZWZvcmUgWk9ORV9OT1JNQUwgZXhoYXVzdGlvbi4gVGhpcyBpbmNyZWFzZXMgcG9zc2liaWxpdHkgb2YKK291dC1vZi1tZW1vcnkoT09NKSBvZiBaT05FX0RNQSBiZWNhdXNlIFpPTkVfRE1BIGlzIHRlbmQgdG8gYmUgc21hbGwuCisKK1R5cGUoQikgY2Fubm90IG9mZmVyIHRoZSBiZXN0IGxvY2FsaXR5IGJ1dCBpcyBtb3JlIHJvYnVzdCBhZ2FpbnN0IE9PTSBvZgordGhlIERNQSB6b25lLgorCitUeXBlKEEpIGlzIGNhbGxlZCBhcyAiTm9kZSIgb3JkZXIuIFR5cGUgKEIpIGlzICJab25lIiBvcmRlci4KKworIk5vZGUgb3JkZXIiIG9yZGVycyB0aGUgem9uZWxpc3RzIGJ5IG5vZGUsIHRoZW4gYnkgem9uZSB3aXRoaW4gZWFjaCBub2RlLgorU3BlY2lmeSAiW05uXW9kZSIgZm9yIG5vZGUgb3JkZXIKKworIlpvbmUgT3JkZXIiIG9yZGVycyB0aGUgem9uZWxpc3RzIGJ5IHpvbmUgdHlwZSwgdGhlbiBieSBub2RlIHdpdGhpbiBlYWNoCit6b25lLiAgU3BlY2lmeSAiW1p6XW9uZSIgZm9yIHpvbmUgb3JkZXIuCisKK1NwZWNpZnkgIltEZF1lZmF1bHQiIHRvIHJlcXVlc3QgYXV0b21hdGljIGNvbmZpZ3VyYXRpb24uICBBdXRvY29uZmlndXJhdGlvbgord2lsbCBzZWxlY3QgIm5vZGUiIG9yZGVyIGluIGZvbGxvd2luZyBjYXNlLgorKDEpIGlmIHRoZSBETUEgem9uZSBkb2VzIG5vdCBleGlzdCBvcgorKDIpIGlmIHRoZSBETUEgem9uZSBjb21wcmlzZXMgZ3JlYXRlciB0aGFuIDUwJSBvZiB0aGUgYXZhaWxhYmxlIG1lbW9yeSBvcgorKDMpIGlmIGFueSBub2RlJ3MgRE1BIHpvbmUgY29tcHJpc2VzIGdyZWF0ZXIgdGhhbiA3MCUgb2YgaXRzIGxvY2FsIG1lbW9yeSBhbmQKKyAgICB0aGUgYW1vdW50IG9mIGxvY2FsIG1lbW9yeSBpcyBiaWcgZW5vdWdoLgorCitPdGhlcndpc2UsICJ6b25lIiBvcmRlciB3aWxsIGJlIHNlbGVjdGVkLiBEZWZhdWx0IG9yZGVyIGlzIHJlY29tbWVuZGVkIHVubGVzcwordGhpcyBpcyBjYXVzaW5nIHByb2JsZW1zIGZvciB5b3VyIHN5c3RlbS9hcHBsaWNhdGlvbi4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworb29tX2R1bXBfdGFza3MKKworRW5hYmxlcyBhIHN5c3RlbS13aWRlIHRhc2sgZHVtcCAoZXhjbHVkaW5nIGtlcm5lbCB0aHJlYWRzKSB0byBiZSBwcm9kdWNlZAord2hlbiB0aGUga2VybmVsIHBlcmZvcm1zIGFuIE9PTS1raWxsaW5nIGFuZCBpbmNsdWRlcyBzdWNoIGluZm9ybWF0aW9uIGFzCitwaWQsIHVpZCwgdGdpZCwgdm0gc2l6ZSwgcnNzLCBucl9wdGVzLCBucl9wbWRzLCBzd2FwZW50cywgb29tX3Njb3JlX2Fkagorc2NvcmUsIGFuZCBuYW1lLiAgVGhpcyBpcyBoZWxwZnVsIHRvIGRldGVybWluZSB3aHkgdGhlIE9PTSBraWxsZXIgd2FzCitpbnZva2VkLCB0byBpZGVudGlmeSB0aGUgcm9ndWUgdGFzayB0aGF0IGNhdXNlZCBpdCwgYW5kIHRvIGRldGVybWluZSB3aHkKK3RoZSBPT00ga2lsbGVyIGNob3NlIHRoZSB0YXNrIGl0IGRpZCB0byBraWxsLgorCitJZiB0aGlzIGlzIHNldCB0byB6ZXJvLCB0aGlzIGluZm9ybWF0aW9uIGlzIHN1cHByZXNzZWQuICBPbiB2ZXJ5CitsYXJnZSBzeXN0ZW1zIHdpdGggdGhvdXNhbmRzIG9mIHRhc2tzIGl0IG1heSBub3QgYmUgZmVhc2libGUgdG8gZHVtcAordGhlIG1lbW9yeSBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgZWFjaCBvbmUuICBTdWNoIHN5c3RlbXMgc2hvdWxkIG5vdAorYmUgZm9yY2VkIHRvIGluY3VyIGEgcGVyZm9ybWFuY2UgcGVuYWx0eSBpbiBPT00gY29uZGl0aW9ucyB3aGVuIHRoZQoraW5mb3JtYXRpb24gbWF5IG5vdCBiZSBkZXNpcmVkLgorCitJZiB0aGlzIGlzIHNldCB0byBub24temVybywgdGhpcyBpbmZvcm1hdGlvbiBpcyBzaG93biB3aGVuZXZlciB0aGUKK09PTSBraWxsZXIgYWN0dWFsbHkga2lsbHMgYSBtZW1vcnktaG9nZ2luZyB0YXNrLgorCitUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxIChlbmFibGVkKS4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworb29tX2tpbGxfYWxsb2NhdGluZ190YXNrCisKK1RoaXMgZW5hYmxlcyBvciBkaXNhYmxlcyBraWxsaW5nIHRoZSBPT00tdHJpZ2dlcmluZyB0YXNrIGluCitvdXQtb2YtbWVtb3J5IHNpdHVhdGlvbnMuCisKK0lmIHRoaXMgaXMgc2V0IHRvIHplcm8sIHRoZSBPT00ga2lsbGVyIHdpbGwgc2NhbiB0aHJvdWdoIHRoZSBlbnRpcmUKK3Rhc2tsaXN0IGFuZCBzZWxlY3QgYSB0YXNrIGJhc2VkIG9uIGhldXJpc3RpY3MgdG8ga2lsbC4gIFRoaXMgbm9ybWFsbHkKK3NlbGVjdHMgYSByb2d1ZSBtZW1vcnktaG9nZ2luZyB0YXNrIHRoYXQgZnJlZXMgdXAgYSBsYXJnZSBhbW91bnQgb2YKK21lbW9yeSB3aGVuIGtpbGxlZC4KKworSWYgdGhpcyBpcyBzZXQgdG8gbm9uLXplcm8sIHRoZSBPT00ga2lsbGVyIHNpbXBseSBraWxscyB0aGUgdGFzayB0aGF0Cit0cmlnZ2VyZWQgdGhlIG91dC1vZi1tZW1vcnkgY29uZGl0aW9uLiAgVGhpcyBhdm9pZHMgdGhlIGV4cGVuc2l2ZQordGFza2xpc3Qgc2Nhbi4KKworSWYgcGFuaWNfb25fb29tIGlzIHNlbGVjdGVkLCBpdCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgd2hhdGV2ZXIgdmFsdWUKK2lzIHVzZWQgaW4gb29tX2tpbGxfYWxsb2NhdGluZ190YXNrLgorCitUaGUgZGVmYXVsdCB2YWx1ZSBpcyAwLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitvdmVyY29tbWl0X2tieXRlczoKKworV2hlbiBvdmVyY29tbWl0X21lbW9yeSBpcyBzZXQgdG8gMiwgdGhlIGNvbW1pdHRlZCBhZGRyZXNzIHNwYWNlIGlzIG5vdAorcGVybWl0dGVkIHRvIGV4Y2VlZCBzd2FwIHBsdXMgdGhpcyBhbW91bnQgb2YgcGh5c2ljYWwgUkFNLiBTZWUgYmVsb3cuCisKK05vdGU6IG92ZXJjb21taXRfa2J5dGVzIGlzIHRoZSBjb3VudGVycGFydCBvZiBvdmVyY29tbWl0X3JhdGlvLiBPbmx5IG9uZQorb2YgdGhlbSBtYXkgYmUgc3BlY2lmaWVkIGF0IGEgdGltZS4gU2V0dGluZyBvbmUgZGlzYWJsZXMgdGhlIG90aGVyICh3aGljaAordGhlbiBhcHBlYXJzIGFzIDAgd2hlbiByZWFkKS4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworb3ZlcmNvbW1pdF9tZW1vcnk6CisKK1RoaXMgdmFsdWUgY29udGFpbnMgYSBmbGFnIHRoYXQgZW5hYmxlcyBtZW1vcnkgb3ZlcmNvbW1pdG1lbnQuCisKK1doZW4gdGhpcyBmbGFnIGlzIDAsIHRoZSBrZXJuZWwgYXR0ZW1wdHMgdG8gZXN0aW1hdGUgdGhlIGFtb3VudAorb2YgZnJlZSBtZW1vcnkgbGVmdCB3aGVuIHVzZXJzcGFjZSByZXF1ZXN0cyBtb3JlIG1lbW9yeS4KKworV2hlbiB0aGlzIGZsYWcgaXMgMSwgdGhlIGtlcm5lbCBwcmV0ZW5kcyB0aGVyZSBpcyBhbHdheXMgZW5vdWdoCittZW1vcnkgdW50aWwgaXQgYWN0dWFsbHkgcnVucyBvdXQuCisKK1doZW4gdGhpcyBmbGFnIGlzIDIsIHRoZSBrZXJuZWwgdXNlcyBhICJuZXZlciBvdmVyY29tbWl0IgorcG9saWN5IHRoYXQgYXR0ZW1wdHMgdG8gcHJldmVudCBhbnkgb3ZlcmNvbW1pdCBvZiBtZW1vcnkuCitOb3RlIHRoYXQgdXNlcl9yZXNlcnZlX2tieXRlcyBhZmZlY3RzIHRoaXMgcG9saWN5LgorCitUaGlzIGZlYXR1cmUgY2FuIGJlIHZlcnkgdXNlZnVsIGJlY2F1c2UgdGhlcmUgYXJlIGEgbG90IG9mCitwcm9ncmFtcyB0aGF0IG1hbGxvYygpIGh1Z2UgYW1vdW50cyBvZiBtZW1vcnkgImp1c3QtaW4tY2FzZSIKK2FuZCBkb24ndCB1c2UgbXVjaCBvZiBpdC4KKworVGhlIGRlZmF1bHQgdmFsdWUgaXMgMC4KKworU2VlIERvY3VtZW50YXRpb24vdm0vb3ZlcmNvbW1pdC1hY2NvdW50aW5nIGFuZAorbW0vbW1hcC5jOjpfX3ZtX2Vub3VnaF9tZW1vcnkoKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworb3ZlcmNvbW1pdF9yYXRpbzoKKworV2hlbiBvdmVyY29tbWl0X21lbW9yeSBpcyBzZXQgdG8gMiwgdGhlIGNvbW1pdHRlZCBhZGRyZXNzCitzcGFjZSBpcyBub3QgcGVybWl0dGVkIHRvIGV4Y2VlZCBzd2FwIHBsdXMgdGhpcyBwZXJjZW50YWdlCitvZiBwaHlzaWNhbCBSQU0uICBTZWUgYWJvdmUuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3BhZ2UtY2x1c3RlcgorCitwYWdlLWNsdXN0ZXIgY29udHJvbHMgdGhlIG51bWJlciBvZiBwYWdlcyB1cCB0byB3aGljaCBjb25zZWN1dGl2ZSBwYWdlcworYXJlIHJlYWQgaW4gZnJvbSBzd2FwIGluIGEgc2luZ2xlIGF0dGVtcHQuIFRoaXMgaXMgdGhlIHN3YXAgY291bnRlcnBhcnQKK3RvIHBhZ2UgY2FjaGUgcmVhZGFoZWFkLgorVGhlIG1lbnRpb25lZCBjb25zZWN1dGl2aXR5IGlzIG5vdCBpbiB0ZXJtcyBvZiB2aXJ0dWFsL3BoeXNpY2FsIGFkZHJlc3NlcywKK2J1dCBjb25zZWN1dGl2ZSBvbiBzd2FwIHNwYWNlIC0gdGhhdCBtZWFucyB0aGV5IHdlcmUgc3dhcHBlZCBvdXQgdG9nZXRoZXIuCisKK0l0IGlzIGEgbG9nYXJpdGhtaWMgdmFsdWUgLSBzZXR0aW5nIGl0IHRvIHplcm8gbWVhbnMgIjEgcGFnZSIsIHNldHRpbmcKK2l0IHRvIDEgbWVhbnMgIjIgcGFnZXMiLCBzZXR0aW5nIGl0IHRvIDIgbWVhbnMgIjQgcGFnZXMiLCBldGMuCitaZXJvIGRpc2FibGVzIHN3YXAgcmVhZGFoZWFkIGNvbXBsZXRlbHkuCisKK1RoZSBkZWZhdWx0IHZhbHVlIGlzIHRocmVlIChlaWdodCBwYWdlcyBhdCBhIHRpbWUpLiAgVGhlcmUgbWF5IGJlIHNvbWUKK3NtYWxsIGJlbmVmaXRzIGluIHR1bmluZyB0aGlzIHRvIGEgZGlmZmVyZW50IHZhbHVlIGlmIHlvdXIgd29ya2xvYWQgaXMKK3N3YXAtaW50ZW5zaXZlLgorCitMb3dlciB2YWx1ZXMgbWVhbiBsb3dlciBsYXRlbmNpZXMgZm9yIGluaXRpYWwgZmF1bHRzLCBidXQgYXQgdGhlIHNhbWUgdGltZQorZXh0cmEgZmF1bHRzIGFuZCBJL08gZGVsYXlzIGZvciBmb2xsb3dpbmcgZmF1bHRzIGlmIHRoZXkgd291bGQgaGF2ZSBiZWVuIHBhcnQgb2YKK3RoYXQgY29uc2VjdXRpdmUgcGFnZXMgcmVhZGFoZWFkIHdvdWxkIGhhdmUgYnJvdWdodCBpbi4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitwYW5pY19vbl9vb20KKworVGhpcyBlbmFibGVzIG9yIGRpc2FibGVzIHBhbmljIG9uIG91dC1vZi1tZW1vcnkgZmVhdHVyZS4KKworSWYgdGhpcyBpcyBzZXQgdG8gMCwgdGhlIGtlcm5lbCB3aWxsIGtpbGwgc29tZSByb2d1ZSBwcm9jZXNzLAorY2FsbGVkIG9vbV9raWxsZXIuICBVc3VhbGx5LCBvb21fa2lsbGVyIGNhbiBraWxsIHJvZ3VlIHByb2Nlc3NlcyBhbmQKK3N5c3RlbSB3aWxsIHN1cnZpdmUuCisKK0lmIHRoaXMgaXMgc2V0IHRvIDEsIHRoZSBrZXJuZWwgcGFuaWNzIHdoZW4gb3V0LW9mLW1lbW9yeSBoYXBwZW5zLgorSG93ZXZlciwgaWYgYSBwcm9jZXNzIGxpbWl0cyB1c2luZyBub2RlcyBieSBtZW1wb2xpY3kvY3B1c2V0cywKK2FuZCB0aG9zZSBub2RlcyBiZWNvbWUgbWVtb3J5IGV4aGF1c3Rpb24gc3RhdHVzLCBvbmUgcHJvY2VzcworbWF5IGJlIGtpbGxlZCBieSBvb20ta2lsbGVyLiBObyBwYW5pYyBvY2N1cnMgaW4gdGhpcyBjYXNlLgorQmVjYXVzZSBvdGhlciBub2RlcycgbWVtb3J5IG1heSBiZSBmcmVlLiBUaGlzIG1lYW5zIHN5c3RlbSB0b3RhbCBzdGF0dXMKK21heSBiZSBub3QgZmF0YWwgeWV0LgorCitJZiB0aGlzIGlzIHNldCB0byAyLCB0aGUga2VybmVsIHBhbmljcyBjb21wdWxzb3JpbHkgZXZlbiBvbiB0aGUKK2Fib3ZlLW1lbnRpb25lZC4gRXZlbiBvb20gaGFwcGVucyB1bmRlciBtZW1vcnkgY2dyb3VwLCB0aGUgd2hvbGUKK3N5c3RlbSBwYW5pY3MuCisKK1RoZSBkZWZhdWx0IHZhbHVlIGlzIDAuCisxIGFuZCAyIGFyZSBmb3IgZmFpbG92ZXIgb2YgY2x1c3RlcmluZy4gUGxlYXNlIHNlbGVjdCBlaXRoZXIKK2FjY29yZGluZyB0byB5b3VyIHBvbGljeSBvZiBmYWlsb3Zlci4KK3BhbmljX29uX29vbT0yK2tkdW1wIGdpdmVzIHlvdSB2ZXJ5IHN0cm9uZyB0b29sIHRvIGludmVzdGlnYXRlCit3aHkgb29tIGhhcHBlbnMuIFlvdSBjYW4gZ2V0IHNuYXBzaG90LgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3BlcmNwdV9wYWdlbGlzdF9mcmFjdGlvbgorCitUaGlzIGlzIHRoZSBmcmFjdGlvbiBvZiBwYWdlcyBhdCBtb3N0IChoaWdoIG1hcmsgcGNwLT5oaWdoKSBpbiBlYWNoIHpvbmUgdGhhdAorYXJlIGFsbG9jYXRlZCBmb3IgZWFjaCBwZXIgY3B1IHBhZ2UgbGlzdC4gIFRoZSBtaW4gdmFsdWUgZm9yIHRoaXMgaXMgOC4gIEl0CittZWFucyB0aGF0IHdlIGRvbid0IGFsbG93IG1vcmUgdGhhbiAxLzh0aCBvZiBwYWdlcyBpbiBlYWNoIHpvbmUgdG8gYmUKK2FsbG9jYXRlZCBpbiBhbnkgc2luZ2xlIHBlcl9jcHVfcGFnZWxpc3QuICBUaGlzIGVudHJ5IG9ubHkgY2hhbmdlcyB0aGUgdmFsdWUKK29mIGhvdCBwZXIgY3B1IHBhZ2VsaXN0cy4gIFVzZXIgY2FuIHNwZWNpZnkgYSBudW1iZXIgbGlrZSAxMDAgdG8gYWxsb2NhdGUKKzEvMTAwdGggb2YgZWFjaCB6b25lIHRvIGVhY2ggcGVyIGNwdSBwYWdlIGxpc3QuCisKK1RoZSBiYXRjaCB2YWx1ZSBvZiBlYWNoIHBlciBjcHUgcGFnZWxpc3QgaXMgYWxzbyB1cGRhdGVkIGFzIGEgcmVzdWx0LiAgSXQgaXMKK3NldCB0byBwY3AtPmhpZ2gvNC4gIFRoZSB1cHBlciBsaW1pdCBvZiBiYXRjaCBpcyAoUEFHRV9TSElGVCAqIDgpCisKK1RoZSBpbml0aWFsIHZhbHVlIGlzIHplcm8uICBLZXJuZWwgZG9lcyBub3QgdXNlIHRoaXMgdmFsdWUgYXQgYm9vdCB0aW1lIHRvIHNldAordGhlIGhpZ2ggd2F0ZXIgbWFya3MgZm9yIGVhY2ggcGVyIGNwdSBwYWdlIGxpc3QuICBJZiB0aGUgdXNlciB3cml0ZXMgJzAnIHRvIHRoaXMKK3N5c2N0bCwgaXQgd2lsbCByZXZlcnQgdG8gdGhpcyBkZWZhdWx0IGJlaGF2aW9yLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitzdGF0X2ludGVydmFsCisKK1RoZSB0aW1lIGludGVydmFsIGJldHdlZW4gd2hpY2ggdm0gc3RhdGlzdGljcyBhcmUgdXBkYXRlZC4gIFRoZSBkZWZhdWx0CitpcyAxIHNlY29uZC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworc3dhcHBpbmVzcworCitUaGlzIGNvbnRyb2wgaXMgdXNlZCB0byBkZWZpbmUgaG93IGFnZ3Jlc3NpdmUgdGhlIGtlcm5lbCB3aWxsIHN3YXAKK21lbW9yeSBwYWdlcy4gIEhpZ2hlciB2YWx1ZXMgd2lsbCBpbmNyZWFzZSBhZ3Jlc3NpdmVuZXNzLCBsb3dlciB2YWx1ZXMKK2RlY3JlYXNlIHRoZSBhbW91bnQgb2Ygc3dhcC4gIEEgdmFsdWUgb2YgMCBpbnN0cnVjdHMgdGhlIGtlcm5lbCBub3QgdG8KK2luaXRpYXRlIHN3YXAgdW50aWwgdGhlIGFtb3VudCBvZiBmcmVlIGFuZCBmaWxlLWJhY2tlZCBwYWdlcyBpcyBsZXNzCit0aGFuIHRoZSBoaWdoIHdhdGVyIG1hcmsgaW4gYSB6b25lLgorCitUaGUgZGVmYXVsdCB2YWx1ZSBpcyA2MC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLSB1c2VyX3Jlc2VydmVfa2J5dGVzCisKK1doZW4gb3ZlcmNvbW1pdF9tZW1vcnkgaXMgc2V0IHRvIDIsICJuZXZlciBvdmVyY29tbWl0IiBtb2RlLCByZXNlcnZlCittaW4oMyUgb2YgY3VycmVudCBwcm9jZXNzIHNpemUsIHVzZXJfcmVzZXJ2ZV9rYnl0ZXMpIG9mIGZyZWUgbWVtb3J5LgorVGhpcyBpcyBpbnRlbmRlZCB0byBwcmV2ZW50IGEgdXNlciBmcm9tIHN0YXJ0aW5nIGEgc2luZ2xlIG1lbW9yeSBob2dnaW5nCitwcm9jZXNzLCBzdWNoIHRoYXQgdGhleSBjYW5ub3QgcmVjb3ZlciAoa2lsbCB0aGUgaG9nKS4KKwordXNlcl9yZXNlcnZlX2tieXRlcyBkZWZhdWx0cyB0byBtaW4oMyUgb2YgdGhlIGN1cnJlbnQgcHJvY2VzcyBzaXplLCAxMjhNQikuCisKK0lmIHRoaXMgaXMgcmVkdWNlZCB0byB6ZXJvLCB0aGVuIHRoZSB1c2VyIHdpbGwgYmUgYWxsb3dlZCB0byBhbGxvY2F0ZQorYWxsIGZyZWUgbWVtb3J5IHdpdGggYSBzaW5nbGUgcHJvY2VzcywgbWludXMgYWRtaW5fcmVzZXJ2ZV9rYnl0ZXMuCitBbnkgc3Vic2VxdWVudCBhdHRlbXB0cyB0byBleGVjdXRlIGEgY29tbWFuZCB3aWxsIHJlc3VsdCBpbgorImZvcms6IENhbm5vdCBhbGxvY2F0ZSBtZW1vcnkiLgorCitDaGFuZ2luZyB0aGlzIHRha2VzIGVmZmVjdCB3aGVuZXZlciBhbiBhcHBsaWNhdGlvbiByZXF1ZXN0cyBtZW1vcnkuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3Zmc19jYWNoZV9wcmVzc3VyZQorLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgcGVyY2VudGFnZSB2YWx1ZSBjb250cm9scyB0aGUgdGVuZGVuY3kgb2YgdGhlIGtlcm5lbCB0byByZWNsYWltCit0aGUgbWVtb3J5IHdoaWNoIGlzIHVzZWQgZm9yIGNhY2hpbmcgb2YgZGlyZWN0b3J5IGFuZCBpbm9kZSBvYmplY3RzLgorCitBdCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB2ZnNfY2FjaGVfcHJlc3N1cmU9MTAwIHRoZSBrZXJuZWwgd2lsbCBhdHRlbXB0IHRvCityZWNsYWltIGRlbnRyaWVzIGFuZCBpbm9kZXMgYXQgYSAiZmFpciIgcmF0ZSB3aXRoIHJlc3BlY3QgdG8gcGFnZWNhY2hlIGFuZAorc3dhcGNhY2hlIHJlY2xhaW0uICBEZWNyZWFzaW5nIHZmc19jYWNoZV9wcmVzc3VyZSBjYXVzZXMgdGhlIGtlcm5lbCB0byBwcmVmZXIKK3RvIHJldGFpbiBkZW50cnkgYW5kIGlub2RlIGNhY2hlcy4gV2hlbiB2ZnNfY2FjaGVfcHJlc3N1cmU9MCwgdGhlIGtlcm5lbCB3aWxsCituZXZlciByZWNsYWltIGRlbnRyaWVzIGFuZCBpbm9kZXMgZHVlIHRvIG1lbW9yeSBwcmVzc3VyZSBhbmQgdGhpcyBjYW4gZWFzaWx5CitsZWFkIHRvIG91dC1vZi1tZW1vcnkgY29uZGl0aW9ucy4gSW5jcmVhc2luZyB2ZnNfY2FjaGVfcHJlc3N1cmUgYmV5b25kIDEwMAorY2F1c2VzIHRoZSBrZXJuZWwgdG8gcHJlZmVyIHRvIHJlY2xhaW0gZGVudHJpZXMgYW5kIGlub2Rlcy4KKworSW5jcmVhc2luZyB2ZnNfY2FjaGVfcHJlc3N1cmUgc2lnbmlmaWNhbnRseSBiZXlvbmQgMTAwIG1heSBoYXZlIG5lZ2F0aXZlCitwZXJmb3JtYW5jZSBpbXBhY3QuIFJlY2xhaW0gY29kZSBuZWVkcyB0byB0YWtlIHZhcmlvdXMgbG9ja3MgdG8gZmluZCBmcmVlYWJsZQorZGlyZWN0b3J5IGFuZCBpbm9kZSBvYmplY3RzLiBXaXRoIHZmc19jYWNoZV9wcmVzc3VyZT0xMDAwLCBpdCB3aWxsIGxvb2sgZm9yCit0ZW4gdGltZXMgbW9yZSBmcmVlYWJsZSBvYmplY3RzIHRoYW4gdGhlcmUgYXJlLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCit6b25lX3JlY2xhaW1fbW9kZToKKworWm9uZV9yZWNsYWltX21vZGUgYWxsb3dzIHNvbWVvbmUgdG8gc2V0IG1vcmUgb3IgbGVzcyBhZ2dyZXNzaXZlIGFwcHJvYWNoZXMgdG8KK3JlY2xhaW0gbWVtb3J5IHdoZW4gYSB6b25lIHJ1bnMgb3V0IG9mIG1lbW9yeS4gSWYgaXQgaXMgc2V0IHRvIHplcm8gdGhlbiBubworem9uZSByZWNsYWltIG9jY3Vycy4gQWxsb2NhdGlvbnMgd2lsbCBiZSBzYXRpc2ZpZWQgZnJvbSBvdGhlciB6b25lcyAvIG5vZGVzCitpbiB0aGUgc3lzdGVtLgorCitUaGlzIGlzIHZhbHVlIE9SZWQgdG9nZXRoZXIgb2YKKworMQk9IFpvbmUgcmVjbGFpbSBvbgorMgk9IFpvbmUgcmVjbGFpbSB3cml0ZXMgZGlydHkgcGFnZXMgb3V0Cis0CT0gWm9uZSByZWNsYWltIHN3YXBzIHBhZ2VzCisKK3pvbmVfcmVjbGFpbV9tb2RlIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuICBGb3IgZmlsZSBzZXJ2ZXJzIG9yIHdvcmtsb2FkcwordGhhdCBiZW5lZml0IGZyb20gaGF2aW5nIHRoZWlyIGRhdGEgY2FjaGVkLCB6b25lX3JlY2xhaW1fbW9kZSBzaG91bGQgYmUKK2xlZnQgZGlzYWJsZWQgYXMgdGhlIGNhY2hpbmcgZWZmZWN0IGlzIGxpa2VseSB0byBiZSBtb3JlIGltcG9ydGFudCB0aGFuCitkYXRhIGxvY2FsaXR5LgorCit6b25lX3JlY2xhaW0gbWF5IGJlIGVuYWJsZWQgaWYgaXQncyBrbm93biB0aGF0IHRoZSB3b3JrbG9hZCBpcyBwYXJ0aXRpb25lZAorc3VjaCB0aGF0IGVhY2ggcGFydGl0aW9uIGZpdHMgd2l0aGluIGEgTlVNQSBub2RlIGFuZCB0aGF0IGFjY2Vzc2luZyByZW1vdGUKK21lbW9yeSB3b3VsZCBjYXVzZSBhIG1lYXN1cmFibGUgcGVyZm9ybWFuY2UgcmVkdWN0aW9uLiAgVGhlIHBhZ2UgYWxsb2NhdG9yCit3aWxsIHRoZW4gcmVjbGFpbSBlYXNpbHkgcmV1c2FibGUgcGFnZXMgKHRob3NlIHBhZ2UgY2FjaGUgcGFnZXMgdGhhdCBhcmUKK2N1cnJlbnRseSBub3QgdXNlZCkgYmVmb3JlIGFsbG9jYXRpbmcgb2ZmIG5vZGUgcGFnZXMuCisKK0FsbG93aW5nIHpvbmUgcmVjbGFpbSB0byB3cml0ZSBvdXQgcGFnZXMgc3RvcHMgcHJvY2Vzc2VzIHRoYXQgYXJlCit3cml0aW5nIGxhcmdlIGFtb3VudHMgb2YgZGF0YSBmcm9tIGRpcnR5aW5nIHBhZ2VzIG9uIG90aGVyIG5vZGVzLiBab25lCityZWNsYWltIHdpbGwgd3JpdGUgb3V0IGRpcnR5IHBhZ2VzIGlmIGEgem9uZSBmaWxscyB1cCBhbmQgc28gZWZmZWN0aXZlbHkKK3Rocm90dGxlIHRoZSBwcm9jZXNzLiBUaGlzIG1heSBkZWNyZWFzZSB0aGUgcGVyZm9ybWFuY2Ugb2YgYSBzaW5nbGUgcHJvY2Vzcworc2luY2UgaXQgY2Fubm90IHVzZSBhbGwgb2Ygc3lzdGVtIG1lbW9yeSB0byBidWZmZXIgdGhlIG91dGdvaW5nIHdyaXRlcworYW55bW9yZSBidXQgaXQgcHJlc2VydmUgdGhlIG1lbW9yeSBvbiBvdGhlciBub2RlcyBzbyB0aGF0IHRoZSBwZXJmb3JtYW5jZQorb2Ygb3RoZXIgcHJvY2Vzc2VzIHJ1bm5pbmcgb24gb3RoZXIgbm9kZXMgd2lsbCBub3QgYmUgYWZmZWN0ZWQuCisKK0FsbG93aW5nIHJlZ3VsYXIgc3dhcCBlZmZlY3RpdmVseSByZXN0cmljdHMgYWxsb2NhdGlvbnMgdG8gdGhlIGxvY2FsCitub2RlIHVubGVzcyBleHBsaWNpdGx5IG92ZXJyaWRkZW4gYnkgbWVtb3J5IHBvbGljaWVzIG9yIGNwdXNldAorY29uZmlndXJhdGlvbnMuCisKKz09PT09PT09PT09PSBFbmQgb2YgRG9jdW1lbnQgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3N5c2ZzLXJ1bGVzLnR4dCBiL0RvY3VtZW50YXRpb24vc3lzZnMtcnVsZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlNjBmZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3N5c2ZzLXJ1bGVzLnR4dApAQCAtMCwwICsxLDE4NCBAQAorUnVsZXMgb24gaG93IHRvIGFjY2VzcyBpbmZvcm1hdGlvbiBpbiB0aGUgTGludXgga2VybmVsIHN5c2ZzCisKK1RoZSBrZXJuZWwtZXhwb3J0ZWQgc3lzZnMgZXhwb3J0cyBpbnRlcm5hbCBrZXJuZWwgaW1wbGVtZW50YXRpb24gZGV0YWlscworYW5kIGRlcGVuZHMgb24gaW50ZXJuYWwga2VybmVsIHN0cnVjdHVyZXMgYW5kIGxheW91dC4gSXQgaXMgYWdyZWVkIHVwb24KK2J5IHRoZSBrZXJuZWwgZGV2ZWxvcGVycyB0aGF0IHRoZSBMaW51eCBrZXJuZWwgZG9lcyBub3QgcHJvdmlkZSBhIHN0YWJsZQoraW50ZXJuYWwgQVBJLiBUaGVyZWZvcmUsIHRoZXJlIGFyZSBhc3BlY3RzIG9mIHRoZSBzeXNmcyBpbnRlcmZhY2UgdGhhdAorbWF5IG5vdCBiZSBzdGFibGUgYWNyb3NzIGtlcm5lbCByZWxlYXNlcy4KKworVG8gbWluaW1pemUgdGhlIHJpc2sgb2YgYnJlYWtpbmcgdXNlcnMgb2Ygc3lzZnMsIHdoaWNoIGFyZSBpbiBtb3N0IGNhc2VzCitsb3ctbGV2ZWwgdXNlcnNwYWNlIGFwcGxpY2F0aW9ucywgd2l0aCBhIG5ldyBrZXJuZWwgcmVsZWFzZSwgdGhlIHVzZXJzCitvZiBzeXNmcyBtdXN0IGZvbGxvdyBzb21lIHJ1bGVzIHRvIHVzZSBhbiBhcy1hYnN0cmFjdC1hcy1wb3NzaWJsZSB3YXkgdG8KK2FjY2VzcyB0aGlzIGZpbGVzeXN0ZW0uIFRoZSBjdXJyZW50IHVkZXYgYW5kIEhBTCBwcm9ncmFtcyBhbHJlYWR5CitpbXBsZW1lbnQgdGhpcyBhbmQgdXNlcnMgYXJlIGVuY291cmFnZWQgdG8gcGx1ZywgaWYgcG9zc2libGUsIGludG8gdGhlCithYnN0cmFjdGlvbnMgdGhlc2UgcHJvZ3JhbXMgcHJvdmlkZSBpbnN0ZWFkIG9mIGFjY2Vzc2luZyBzeXNmcyBkaXJlY3RseS4KKworQnV0IGlmIHlvdSByZWFsbHkgZG8gd2FudCBvciBuZWVkIHRvIGFjY2VzcyBzeXNmcyBkaXJlY3RseSwgcGxlYXNlIGZvbGxvdwordGhlIGZvbGxvd2luZyBydWxlcyBhbmQgdGhlbiB5b3VyIHByb2dyYW1zIHNob3VsZCB3b3JrIHdpdGggZnV0dXJlCit2ZXJzaW9ucyBvZiB0aGUgc3lzZnMgaW50ZXJmYWNlLgorCistIERvIG5vdCB1c2UgbGlic3lzZnMKKyAgSXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgc3lzZnMgd2hpY2ggYXJlIG5vdCB0cnVlLiBJdHMgQVBJIGRvZXMgbm90CisgIG9mZmVyIGFueSBhYnN0cmFjdGlvbiwgaXQgZXhwb3NlcyBhbGwgdGhlIGtlcm5lbCBkcml2ZXItY29yZQorICBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGluIGl0cyBvd24gQVBJLiBUaGVyZWZvcmUgaXQgaXMgbm90IGJldHRlciB0aGFuCisgIHJlYWRpbmcgZGlyZWN0b3JpZXMgYW5kIG9wZW5pbmcgdGhlIGZpbGVzIHlvdXJzZWxmLgorICBBbHNvLCBpdCBpcyBub3QgYWN0aXZlbHkgbWFpbnRhaW5lZCwgaW4gdGhlIHNlbnNlIG9mIHJlZmxlY3RpbmcgdGhlCisgIGN1cnJlbnQga2VybmVsIGRldmVsb3BtZW50LiBUaGUgZ29hbCBvZiBwcm92aWRpbmcgYSBzdGFibGUgaW50ZXJmYWNlCisgIHRvIHN5c2ZzIGhhcyBmYWlsZWQ7IGl0IGNhdXNlcyBtb3JlIHByb2JsZW1zIHRoYW4gaXQgc29sdmVzLiBJdAorICB2aW9sYXRlcyBtYW55IG9mIHRoZSBydWxlcyBpbiB0aGlzIGRvY3VtZW50LgorCistIHN5c2ZzIGlzIGFsd2F5cyBhdCAvc3lzCisgIFBhcnNpbmcgL3Byb2MvbW91bnRzIGlzIGEgd2FzdGUgb2YgdGltZS4gT3RoZXIgbW91bnQgcG9pbnRzIGFyZSBhCisgIHN5c3RlbSBjb25maWd1cmF0aW9uIGJ1ZyB5b3Ugc2hvdWxkIG5vdCB0cnkgdG8gc29sdmUuIEZvciB0ZXN0IGNhc2VzLAorICBwb3NzaWJseSBzdXBwb3J0IGEgU1lTRlNfUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBvdmVyd3JpdGUgdGhlCisgIGFwcGxpY2F0aW9uJ3MgYmVoYXZpb3IsIGJ1dCBuZXZlciB0cnkgdG8gc2VhcmNoIGZvciBzeXNmcy4gTmV2ZXIgdHJ5CisgIHRvIG1vdW50IGl0LCBpZiB5b3UgYXJlIG5vdCBhbiBlYXJseSBib290IHNjcmlwdC4KKworLSBkZXZpY2VzIGFyZSBvbmx5ICJkZXZpY2VzIgorICBUaGVyZSBpcyBubyBzdWNoIHRoaW5nIGxpa2UgY2xhc3MtLCBidXMtLCBwaHlzaWNhbCBkZXZpY2VzLAorICBpbnRlcmZhY2VzLCBhbmQgc3VjaCB0aGF0IHlvdSBjYW4gcmVseSBvbiBpbiB1c2Vyc3BhY2UuIEV2ZXJ5dGhpbmcgaXMKKyAganVzdCBzaW1wbHkgYSAiZGV2aWNlIi4gQ2xhc3MtLCBidXMtLCBwaHlzaWNhbCwgLi4uIHR5cGVzIGFyZSBqdXN0CisgIGtlcm5lbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHdoaWNoIHNob3VsZCBub3QgYmUgZXhwZWN0ZWQgYnkKKyAgYXBwbGljYXRpb25zIHRoYXQgbG9vayBmb3IgZGV2aWNlcyBpbiBzeXNmcy4KKworICBUaGUgcHJvcGVydGllcyBvZiBhIGRldmljZSBhcmU6CisgICAgbyBkZXZwYXRoICgvZGV2aWNlcy9wY2kwMDAwOjAwLzAwMDA6MDA6MWQuMS91c2IyLzItMi8yLTI6MS4wKQorICAgICAgLSBpZGVudGljYWwgdG8gdGhlIERFVlBBVEggdmFsdWUgaW4gdGhlIGV2ZW50IHNlbnQgZnJvbSB0aGUga2VybmVsCisgICAgICAgIGF0IGRldmljZSBjcmVhdGlvbiBhbmQgcmVtb3ZhbAorICAgICAgLSB0aGUgdW5pcXVlIGtleSB0byB0aGUgZGV2aWNlIGF0IHRoYXQgcG9pbnQgaW4gdGltZQorICAgICAgLSB0aGUga2VybmVsJ3MgcGF0aCB0byB0aGUgZGV2aWNlIGRpcmVjdG9yeSB3aXRob3V0IHRoZSBsZWFkaW5nCisgICAgICAgIC9zeXMsIGFuZCBhbHdheXMgc3RhcnRpbmcgd2l0aCBhIHNsYXNoCisgICAgICAtIGFsbCBlbGVtZW50cyBvZiBhIGRldnBhdGggbXVzdCBiZSByZWFsIGRpcmVjdG9yaWVzLiBTeW1saW5rcworICAgICAgICBwb2ludGluZyB0byAvc3lzL2RldmljZXMgbXVzdCBhbHdheXMgYmUgcmVzb2x2ZWQgdG8gdGhlaXIgcmVhbAorICAgICAgICB0YXJnZXQgYW5kIHRoZSB0YXJnZXQgcGF0aCBtdXN0IGJlIHVzZWQgdG8gYWNjZXNzIHRoZSBkZXZpY2UuCisgICAgICAgIFRoYXQgd2F5IHRoZSBkZXZwYXRoIHRvIHRoZSBkZXZpY2UgbWF0Y2hlcyB0aGUgZGV2cGF0aCBvZiB0aGUKKyAgICAgICAga2VybmVsIHVzZWQgYXQgZXZlbnQgdGltZS4KKyAgICAgIC0gdXNpbmcgb3IgZXhwb3Npbmcgc3ltbGluayB2YWx1ZXMgYXMgZWxlbWVudHMgaW4gYSBkZXZwYXRoIHN0cmluZworICAgICAgICBpcyBhIGJ1ZyBpbiB0aGUgYXBwbGljYXRpb24KKworICAgIG8ga2VybmVsIG5hbWUgKHNkYSwgdHR5LCAwMDAwOjAwOjFmLjIsIC4uLikKKyAgICAgIC0gYSBkaXJlY3RvcnkgbmFtZSwgaWRlbnRpY2FsIHRvIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIGRldnBhdGgKKyAgICAgIC0gYXBwbGljYXRpb25zIG5lZWQgdG8gaGFuZGxlIHNwYWNlcyBhbmQgY2hhcmFjdGVycyBsaWtlICchJyBpbgorICAgICAgICB0aGUgbmFtZQorCisgICAgbyBzdWJzeXN0ZW0gKGJsb2NrLCB0dHksIHBjaSwgLi4uKQorICAgICAgLSBzaW1wbGUgc3RyaW5nLCBuZXZlciBhIHBhdGggb3IgYSBsaW5rCisgICAgICAtIHJldHJpZXZlZCBieSByZWFkaW5nIHRoZSAic3Vic3lzdGVtIi1saW5rIGFuZCB1c2luZyBvbmx5IHRoZQorICAgICAgICBsYXN0IGVsZW1lbnQgb2YgdGhlIHRhcmdldCBwYXRoCisKKyAgICBvIGRyaXZlciAodGczLCBhdGFfcGlpeCwgdWhjaV9oY2QpCisgICAgICAtIGEgc2ltcGxlIHN0cmluZywgd2hpY2ggbWF5IGNvbnRhaW4gc3BhY2VzLCBuZXZlciBhIHBhdGggb3IgYQorICAgICAgICBsaW5rCisgICAgICAtIGl0IGlzIHJldHJpZXZlZCBieSByZWFkaW5nIHRoZSAiZHJpdmVyIi1saW5rIGFuZCB1c2luZyBvbmx5IHRoZQorICAgICAgICBsYXN0IGVsZW1lbnQgb2YgdGhlIHRhcmdldCBwYXRoCisgICAgICAtIGRldmljZXMgd2hpY2ggZG8gbm90IGhhdmUgImRyaXZlciItbGluayBqdXN0IGRvIG5vdCBoYXZlIGEKKyAgICAgICAgZHJpdmVyOyBjb3B5aW5nIHRoZSBkcml2ZXIgdmFsdWUgaW4gYSBjaGlsZCBkZXZpY2UgY29udGV4dCBpcyBhCisgICAgICAgIGJ1ZyBpbiB0aGUgYXBwbGljYXRpb24KKworICAgIG8gYXR0cmlidXRlcworICAgICAgLSB0aGUgZmlsZXMgaW4gdGhlIGRldmljZSBkaXJlY3Rvcnkgb3IgZmlsZXMgYmVsb3cgc3ViZGlyZWN0b3JpZXMKKyAgICAgICAgb2YgdGhlIHNhbWUgZGV2aWNlIGRpcmVjdG9yeQorICAgICAgLSBhY2Nlc3NpbmcgYXR0cmlidXRlcyByZWFjaGVkIGJ5IGEgc3ltbGluayBwb2ludGluZyB0byBhbm90aGVyIGRldmljZSwKKyAgICAgICAgbGlrZSB0aGUgImRldmljZSItbGluaywgaXMgYSBidWcgaW4gdGhlIGFwcGxpY2F0aW9uCisKKyAgRXZlcnl0aGluZyBlbHNlIGlzIGp1c3QgYSBrZXJuZWwgZHJpdmVyLWNvcmUgaW1wbGVtZW50YXRpb24gZGV0YWlsCisgIHRoYXQgc2hvdWxkIG5vdCBiZSBhc3N1bWVkIHRvIGJlIHN0YWJsZSBhY3Jvc3Mga2VybmVsIHJlbGVhc2VzLgorCistIFByb3BlcnRpZXMgb2YgcGFyZW50IGRldmljZXMgbmV2ZXIgYmVsb25nIGludG8gYSBjaGlsZCBkZXZpY2UuCisgIEFsd2F5cyBsb29rIGF0IHRoZSBwYXJlbnQgZGV2aWNlcyB0aGVtc2VsdmVzIGZvciBkZXRlcm1pbmluZyBkZXZpY2UKKyAgY29udGV4dCBwcm9wZXJ0aWVzLiBJZiB0aGUgZGV2aWNlICdldGgwJyBvciAnc2RhJyBkb2VzIG5vdCBoYXZlIGEKKyAgImRyaXZlciItbGluaywgdGhlbiB0aGlzIGRldmljZSBkb2VzIG5vdCBoYXZlIGEgZHJpdmVyLiBJdHMgdmFsdWUgaXMgZW1wdHkuCisgIE5ldmVyIGNvcHkgYW55IHByb3BlcnR5IG9mIHRoZSBwYXJlbnQtZGV2aWNlIGludG8gYSBjaGlsZC1kZXZpY2UuIFBhcmVudAorICBkZXZpY2UgcHJvcGVydGllcyBtYXkgY2hhbmdlIGR5bmFtaWNhbGx5IHdpdGhvdXQgYW55IG5vdGljZSB0byB0aGUKKyAgY2hpbGQgZGV2aWNlLgorCistIEhpZXJhcmNoeSBpbiBhIHNpbmdsZSBkZXZpY2UgdHJlZQorICBUaGVyZSBpcyBvbmx5IG9uZSB2YWxpZCBwbGFjZSBpbiBzeXNmcyB3aGVyZSBoaWVyYXJjaHkgY2FuIGJlIGV4YW1pbmVkCisgIGFuZCB0aGlzIGlzIGJlbG93OiAvc3lzL2RldmljZXMuCisgIEl0IGlzIHBsYW5uZWQgdGhhdCBhbGwgZGV2aWNlIGRpcmVjdG9yaWVzIHdpbGwgZW5kIHVwIGluIHRoZSB0cmVlCisgIGJlbG93IHRoaXMgZGlyZWN0b3J5LgorCistIENsYXNzaWZpY2F0aW9uIGJ5IHN1YnN5c3RlbQorICBUaGVyZSBhcmUgY3VycmVudGx5IHRocmVlIHBsYWNlcyBmb3IgY2xhc3NpZmljYXRpb24gb2YgZGV2aWNlczoKKyAgL3N5cy9ibG9jaywgL3N5cy9jbGFzcyBhbmQgL3N5cy9idXMuIEl0IGlzIHBsYW5uZWQgdGhhdCB0aGVzZSB3aWxsCisgIG5vdCBjb250YWluIGFueSBkZXZpY2UgZGlyZWN0b3JpZXMgdGhlbXNlbHZlcywgYnV0IG9ubHkgZmxhdCBsaXN0cyBvZgorICBzeW1saW5rcyBwb2ludGluZyB0byB0aGUgdW5pZmllZCAvc3lzL2RldmljZXMgdHJlZS4KKyAgQWxsIHRocmVlIHBsYWNlcyBoYXZlIGNvbXBsZXRlbHkgZGlmZmVyZW50IHJ1bGVzIG9uIGhvdyB0byBhY2Nlc3MKKyAgZGV2aWNlIGluZm9ybWF0aW9uLiBJdCBpcyBwbGFubmVkIHRvIG1lcmdlIGFsbCB0aHJlZQorICBjbGFzc2lmaWNhdGlvbiBkaXJlY3RvcmllcyBpbnRvIG9uZSBwbGFjZSBhdCAvc3lzL3N1YnN5c3RlbSwKKyAgZm9sbG93aW5nIHRoZSBsYXlvdXQgb2YgdGhlIGJ1cyBkaXJlY3Rvcmllcy4gQWxsIGJ1c2VzIGFuZAorICBjbGFzc2VzLCBpbmNsdWRpbmcgdGhlIGNvbnZlcnRlZCBibG9jayBzdWJzeXN0ZW0sIHdpbGwgc2hvdyB1cAorICB0aGVyZS4KKyAgVGhlIGRldmljZXMgYmVsb25naW5nIHRvIGEgc3Vic3lzdGVtIHdpbGwgY3JlYXRlIGEgc3ltbGluayBpbiB0aGUKKyAgImRldmljZXMiIGRpcmVjdG9yeSBhdCAvc3lzL3N1YnN5c3RlbS88bmFtZT4vZGV2aWNlcy4KKworICBJZiAvc3lzL3N1YnN5c3RlbSBleGlzdHMsIC9zeXMvYnVzLCAvc3lzL2NsYXNzIGFuZCAvc3lzL2Jsb2NrIGNhbiBiZQorICBpZ25vcmVkLiBJZiBpdCBkb2VzIG5vdCBleGlzdCwgeW91IGFsd2F5cyBoYXZlIHRvIHNjYW4gYWxsIHRocmVlCisgIHBsYWNlcywgYXMgdGhlIGtlcm5lbCBpcyBmcmVlIHRvIG1vdmUgYSBzdWJzeXN0ZW0gZnJvbSBvbmUgcGxhY2UgdG8KKyAgdGhlIG90aGVyLCBhcyBsb25nIGFzIHRoZSBkZXZpY2VzIGFyZSBzdGlsbCByZWFjaGFibGUgYnkgdGhlIHNhbWUKKyAgc3Vic3lzdGVtIG5hbWUuCisKKyAgQXNzdW1pbmcgL3N5cy9jbGFzcy88c3Vic3lzdGVtPiBhbmQgL3N5cy9idXMvPHN1YnN5c3RlbT4sIG9yCisgIC9zeXMvYmxvY2sgYW5kIC9zeXMvY2xhc3MvYmxvY2sgYXJlIG5vdCBpbnRlcmNoYW5nZWFibGUgaXMgYSBidWcgaW4KKyAgdGhlIGFwcGxpY2F0aW9uLgorCistIEJsb2NrCisgIFRoZSBjb252ZXJ0ZWQgYmxvY2sgc3Vic3lzdGVtIGF0IC9zeXMvY2xhc3MvYmxvY2sgb3IKKyAgL3N5cy9zdWJzeXN0ZW0vYmxvY2sgd2lsbCBjb250YWluIHRoZSBsaW5rcyBmb3IgZGlza3MgYW5kIHBhcnRpdGlvbnMKKyAgYXQgdGhlIHNhbWUgbGV2ZWwsIG5ldmVyIGluIGEgaGllcmFyY2h5LiBBc3N1bWluZyB0aGUgYmxvY2sgc3Vic3lzdGVtIHRvCisgIGNvbnRhaW4gb25seSBkaXNrcyBhbmQgbm90IHBhcnRpdGlvbiBkZXZpY2VzIGluIHRoZSBzYW1lIGZsYXQgbGlzdCBpcworICBhIGJ1ZyBpbiB0aGUgYXBwbGljYXRpb24uCisKKy0gImRldmljZSItbGluayBhbmQgPHN1YnN5c3RlbT46PGtlcm5lbCBuYW1lPi1saW5rcworICBOZXZlciBkZXBlbmQgb24gdGhlICJkZXZpY2UiLWxpbmsuIFRoZSAiZGV2aWNlIi1saW5rIGlzIGEgd29ya2Fyb3VuZAorICBmb3IgdGhlIG9sZCBsYXlvdXQsIHdoZXJlIGNsYXNzIGRldmljZXMgYXJlIG5vdCBjcmVhdGVkIGluCisgIC9zeXMvZGV2aWNlcy8gbGlrZSB0aGUgYnVzIGRldmljZXMuIElmIHRoZSBsaW5rLXJlc29sdmluZyBvZiBhCisgIGRldmljZSBkaXJlY3RvcnkgZG9lcyBub3QgZW5kIGluIC9zeXMvZGV2aWNlcy8sIHlvdSBjYW4gdXNlIHRoZQorICAiZGV2aWNlIi1saW5rIHRvIGZpbmQgdGhlIHBhcmVudCBkZXZpY2VzIGluIC9zeXMvZGV2aWNlcy8uIFRoYXQgaXMgdGhlCisgIHNpbmdsZSB2YWxpZCB1c2Ugb2YgdGhlICJkZXZpY2UiLWxpbms7IGl0IG11c3QgbmV2ZXIgYXBwZWFyIGluIGFueQorICBwYXRoIGFzIGFuIGVsZW1lbnQuIEFzc3VtaW5nIHRoZSBleGlzdGVuY2Ugb2YgdGhlICJkZXZpY2UiLWxpbmsgZm9yCisgIGEgZGV2aWNlIGluIC9zeXMvZGV2aWNlcy8gaXMgYSBidWcgaW4gdGhlIGFwcGxpY2F0aW9uLgorICBBY2Nlc3NpbmcgL3N5cy9jbGFzcy9uZXQvZXRoMC9kZXZpY2UgaXMgYSBidWcgaW4gdGhlIGFwcGxpY2F0aW9uLgorCisgIE5ldmVyIGRlcGVuZCBvbiB0aGUgY2xhc3Mtc3BlY2lmaWMgbGlua3MgYmFjayB0byB0aGUgL3N5cy9jbGFzcworICBkaXJlY3RvcnkuICBUaGVzZSBsaW5rcyBhcmUgYWxzbyBhIHdvcmthcm91bmQgZm9yIHRoZSBkZXNpZ24gbWlzdGFrZQorICB0aGF0IGNsYXNzIGRldmljZXMgYXJlIG5vdCBjcmVhdGVkIGluIC9zeXMvZGV2aWNlcy4gSWYgYSBkZXZpY2UKKyAgZGlyZWN0b3J5IGRvZXMgbm90IGNvbnRhaW4gZGlyZWN0b3JpZXMgZm9yIGNoaWxkIGRldmljZXMsIHRoZXNlIGxpbmtzCisgIG1heSBiZSB1c2VkIHRvIGZpbmQgdGhlIGNoaWxkIGRldmljZXMgaW4gL3N5cy9jbGFzcy4gVGhhdCBpcyB0aGUgc2luZ2xlCisgIHZhbGlkIHVzZSBvZiB0aGVzZSBsaW5rczsgdGhleSBtdXN0IG5ldmVyIGFwcGVhciBpbiBhbnkgcGF0aCBhcyBhbgorICBlbGVtZW50LiBBc3N1bWluZyB0aGUgZXhpc3RlbmNlIG9mIHRoZXNlIGxpbmtzIGZvciBkZXZpY2VzIHdoaWNoIGFyZQorICByZWFsIGNoaWxkIGRldmljZSBkaXJlY3RvcmllcyBpbiB0aGUgL3N5cy9kZXZpY2VzIHRyZWUgaXMgYSBidWcgaW4KKyAgdGhlIGFwcGxpY2F0aW9uLgorCisgIEl0IGlzIHBsYW5uZWQgdG8gcmVtb3ZlIGFsbCB0aGVzZSBsaW5rcyB3aGVuIGFsbCBjbGFzcyBkZXZpY2UKKyAgZGlyZWN0b3JpZXMgbGl2ZSBpbiAvc3lzL2RldmljZXMuCisKKy0gUG9zaXRpb24gb2YgZGV2aWNlcyBhbG9uZyBkZXZpY2UgY2hhaW4gY2FuIGNoYW5nZS4KKyAgTmV2ZXIgZGVwZW5kIG9uIGEgc3BlY2lmaWMgcGFyZW50IGRldmljZSBwb3NpdGlvbiBpbiB0aGUgZGV2cGF0aCwKKyAgb3IgdGhlIGNoYWluIG9mIHBhcmVudCBkZXZpY2VzLiBUaGUga2VybmVsIGlzIGZyZWUgdG8gaW5zZXJ0IGRldmljZXMgaW50bworICB0aGUgY2hhaW4uIFlvdSBtdXN0IGFsd2F5cyByZXF1ZXN0IHRoZSBwYXJlbnQgZGV2aWNlIHlvdSBhcmUgbG9va2luZyBmb3IKKyAgYnkgaXRzIHN1YnN5c3RlbSB2YWx1ZS4gWW91IG5lZWQgdG8gd2FsayB1cCB0aGUgY2hhaW4gdW50aWwgeW91IGZpbmQKKyAgdGhlIGRldmljZSB0aGF0IG1hdGNoZXMgdGhlIGV4cGVjdGVkIHN1YnN5c3RlbS4gRGVwZW5kaW5nIG9uIGEgc3BlY2lmaWMKKyAgcG9zaXRpb24gb2YgYSBwYXJlbnQgZGV2aWNlIG9yIGV4cG9zaW5nIHJlbGF0aXZlIHBhdGhzIHVzaW5nICIuLi8iIHRvCisgIGFjY2VzcyB0aGUgY2hhaW4gb2YgcGFyZW50cyBpcyBhIGJ1ZyBpbiB0aGUgYXBwbGljYXRpb24uCisKKy0gV2hlbiByZWFkaW5nIGFuZCB3cml0aW5nIHN5c2ZzIGRldmljZSBhdHRyaWJ1dGUgZmlsZXMsIGF2b2lkIGRlcGVuZGVuY3kKKyAgb24gc3BlY2lmaWMgZXJyb3IgY29kZXMgd2hlcmV2ZXIgcG9zc2libGUuIFRoaXMgbWluaW1pemVzIGNvdXBsaW5nIHRvCisgIHRoZSBlcnJvciBoYW5kbGluZyBpbXBsZW1lbnRhdGlvbiB3aXRoaW4gdGhlIGtlcm5lbC4KKworICBJbiBnZW5lcmFsLCBmYWlsdXJlcyB0byByZWFkIG9yIHdyaXRlIHN5c2ZzIGRldmljZSBhdHRyaWJ1dGVzIHNoYWxsCisgIHByb3BhZ2F0ZSBlcnJvcnMgd2hlcmV2ZXIgcG9zc2libGUuIENvbW1vbiBlcnJvcnMgaW5jbHVkZSwgYnV0IGFyZSBub3QKKyAgbGltaXRlZCB0bzoKKworICAtRUlPOiBUaGUgcmVhZCBvciBzdG9yZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCwgdHlwaWNhbGx5IHJldHVybmVkIGJ5CisgICAgICAgIHRoZSBzeXNmcyBzeXN0ZW0gaXRzZWxmIGlmIHRoZSByZWFkIG9yIHN0b3JlIHBvaW50ZXIgaXMgTlVMTC4KKworICAtRU5YSU86IFRoZSByZWFkIG9yIHN0b3JlIG9wZXJhdGlvbiBmYWlsZWQKKworICBFcnJvciBjb2RlcyB3aWxsIG5vdCBiZSBjaGFuZ2VkIHdpdGhvdXQgZ29vZCByZWFzb24sIGFuZCBzaG91bGQgYSBjaGFuZ2UKKyAgdG8gZXJyb3IgY29kZXMgcmVzdWx0IGluIHVzZXItc3BhY2UgYnJlYWthZ2UsIGl0IHdpbGwgYmUgZml4ZWQsIG9yIHRoZQorICB0aGUgb2ZmZW5kaW5nIGNoYW5nZSB3aWxsIGJlIHJldmVydGVkLgorCisgIFVzZXJzcGFjZSBhcHBsaWNhdGlvbnMgY2FuLCBob3dldmVyLCBleHBlY3QgdGhlIGZvcm1hdCBhbmQgY29udGVudHMgb2YKKyAgdGhlIGF0dHJpYnV0ZSBmaWxlcyB0byByZW1haW4gY29uc2lzdGVudCBpbiB0aGUgYWJzZW5jZSBvZiBhIHZlcnNpb24KKyAgYXR0cmlidXRlIGNoYW5nZSBpbiB0aGUgY29udGV4dCBvZiBhIGdpdmVuIGF0dHJpYnV0ZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc3lzcnEudHh0IGIvRG9jdW1lbnRhdGlvbi9zeXNycS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNmNTYxOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vc3lzcnEudHh0CkBAIC0wLDAgKzEsMjU3IEBACitMaW51eCBNYWdpYyBTeXN0ZW0gUmVxdWVzdCBLZXkgSGFja3MKK0RvY3VtZW50YXRpb24gZm9yIHN5c3JxLmMKKworKiAgV2hhdCBpcyB0aGUgbWFnaWMgU3lzUnEga2V5Pworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorSXQgaXMgYSAnbWFnaWNhbCcga2V5IGNvbWJvIHlvdSBjYW4gaGl0IHdoaWNoIHRoZSBrZXJuZWwgd2lsbCByZXNwb25kIHRvCityZWdhcmRsZXNzIG9mIHdoYXRldmVyIGVsc2UgaXQgaXMgZG9pbmcsIHVubGVzcyBpdCBpcyBjb21wbGV0ZWx5IGxvY2tlZCB1cC4KKworKiAgSG93IGRvIEkgZW5hYmxlIHRoZSBtYWdpYyBTeXNScSBrZXk/Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK1lvdSBuZWVkIHRvIHNheSAieWVzIiB0byAnTWFnaWMgU3lzUnEga2V5IChDT05GSUdfTUFHSUNfU1lTUlEpJyB3aGVuCitjb25maWd1cmluZyB0aGUga2VybmVsLiBXaGVuIHJ1bm5pbmcgYSBrZXJuZWwgd2l0aCBTeXNScSBjb21waWxlZCBpbiwKKy9wcm9jL3N5cy9rZXJuZWwvc3lzcnEgY29udHJvbHMgdGhlIGZ1bmN0aW9ucyBhbGxvd2VkIHRvIGJlIGludm9rZWQgdmlhCit0aGUgU3lzUnEga2V5LiBUaGUgZGVmYXVsdCB2YWx1ZSBpbiB0aGlzIGZpbGUgaXMgc2V0IGJ5IHRoZQorQ09ORklHX01BR0lDX1NZU1JRX0RFRkFVTFRfRU5BQkxFIGNvbmZpZyBzeW1ib2wsIHdoaWNoIGl0c2VsZiBkZWZhdWx0cwordG8gMS4gSGVyZSBpcyB0aGUgbGlzdCBvZiBwb3NzaWJsZSB2YWx1ZXMgaW4gL3Byb2Mvc3lzL2tlcm5lbC9zeXNycToKKyAgIDAgLSBkaXNhYmxlIHN5c3JxIGNvbXBsZXRlbHkKKyAgIDEgLSBlbmFibGUgYWxsIGZ1bmN0aW9ucyBvZiBzeXNycQorICA+MSAtIGJpdG1hc2sgb2YgYWxsb3dlZCBzeXNycSBmdW5jdGlvbnMgKHNlZSBiZWxvdyBmb3IgZGV0YWlsZWQgZnVuY3Rpb24KKyAgICAgICBkZXNjcmlwdGlvbik6CisgICAgICAgICAgMiA9ICAgMHgyIC0gZW5hYmxlIGNvbnRyb2wgb2YgY29uc29sZSBsb2dnaW5nIGxldmVsCisgICAgICAgICAgNCA9ICAgMHg0IC0gZW5hYmxlIGNvbnRyb2wgb2Yga2V5Ym9hcmQgKFNBSywgdW5yYXcpCisgICAgICAgICAgOCA9ICAgMHg4IC0gZW5hYmxlIGRlYnVnZ2luZyBkdW1wcyBvZiBwcm9jZXNzZXMgZXRjLgorICAgICAgICAgMTYgPSAgMHgxMCAtIGVuYWJsZSBzeW5jIGNvbW1hbmQKKyAgICAgICAgIDMyID0gIDB4MjAgLSBlbmFibGUgcmVtb3VudCByZWFkLW9ubHkKKyAgICAgICAgIDY0ID0gIDB4NDAgLSBlbmFibGUgc2lnbmFsbGluZyBvZiBwcm9jZXNzZXMgKHRlcm0sIGtpbGwsIG9vbS1raWxsKQorICAgICAgICAxMjggPSAgMHg4MCAtIGFsbG93IHJlYm9vdC9wb3dlcm9mZgorICAgICAgICAyNTYgPSAweDEwMCAtIGFsbG93IG5pY2luZyBvZiBhbGwgUlQgdGFza3MKKworWW91IGNhbiBzZXQgdGhlIHZhbHVlIGluIHRoZSBmaWxlIGJ5IHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKyAgICBlY2hvICJudW1iZXIiID4vcHJvYy9zeXMva2VybmVsL3N5c3JxCisKK1RoZSBudW1iZXIgbWF5IGJlIHdyaXR0ZW4gaGVyZSBlaXRoZXIgYXMgZGVjaW1hbCBvciBhcyBoZXhhZGVjaW1hbAord2l0aCB0aGUgMHggcHJlZml4LiBDT05GSUdfTUFHSUNfU1lTUlFfREVGQVVMVF9FTkFCTEUgbXVzdCBhbHdheXMgYmUKK3dyaXR0ZW4gaW4gaGV4YWRlY2ltYWwuCisKK05vdGUgdGhhdCB0aGUgdmFsdWUgb2YgL3Byb2Mvc3lzL2tlcm5lbC9zeXNycSBpbmZsdWVuY2VzIG9ubHkgdGhlIGludm9jYXRpb24KK3ZpYSBhIGtleWJvYXJkLiBJbnZvY2F0aW9uIG9mIGFueSBvcGVyYXRpb24gdmlhIC9wcm9jL3N5c3JxLXRyaWdnZXIgaXMgYWx3YXlzCithbGxvd2VkIChieSBhIHVzZXIgd2l0aCBhZG1pbiBwcml2aWxlZ2VzKS4KKworKiAgSG93IGRvIEkgdXNlIHRoZSBtYWdpYyBTeXNScSBrZXk/Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK09uIHg4NiAgIC0gWW91IHByZXNzIHRoZSBrZXkgY29tYm8gJ0FMVC1TeXNScS08Y29tbWFuZCBrZXk+Jy4gTm90ZSAtIFNvbWUKKyAgICAgICAgICAga2V5Ym9hcmRzIG1heSBub3QgaGF2ZSBhIGtleSBsYWJlbGVkICdTeXNScScuIFRoZSAnU3lzUnEnIGtleSBpcworICAgICAgICAgICBhbHNvIGtub3duIGFzIHRoZSAnUHJpbnQgU2NyZWVuJyBrZXkuIEFsc28gc29tZSBrZXlib2FyZHMgY2Fubm90CisJICAgaGFuZGxlIHNvIG1hbnkga2V5cyBiZWluZyBwcmVzc2VkIGF0IHRoZSBzYW1lIHRpbWUsIHNvIHlvdSBtaWdodAorCSAgIGhhdmUgYmV0dGVyIGx1Y2sgd2l0aCAicHJlc3MgQWx0IiwgInByZXNzIFN5c1JxIiwgInJlbGVhc2UgU3lzUnEiLAorCSAgICJwcmVzcyA8Y29tbWFuZCBrZXk+IiwgcmVsZWFzZSBldmVyeXRoaW5nLgorCitPbiBTUEFSQyAtIFlvdSBwcmVzcyAnQUxULVNUT1AtPGNvbW1hbmQga2V5PicsIEkgYmVsaWV2ZS4KKworT24gdGhlIHNlcmlhbCBjb25zb2xlIChQQyBzdHlsZSBzdGFuZGFyZCBzZXJpYWwgcG9ydHMgb25seSkgLQorICAgICAgICAgICBZb3Ugc2VuZCBhIEJSRUFLLCB0aGVuIHdpdGhpbiA1IHNlY29uZHMgYSBjb21tYW5kIGtleS4gU2VuZGluZworICAgICAgICAgICBCUkVBSyB0d2ljZSBpcyBpbnRlcnByZXRlZCBhcyBhIG5vcm1hbCBCUkVBSy4KKworT24gUG93ZXJQQyAtIFByZXNzICdBTFQgLSBQcmludCBTY3JlZW4gKG9yIEYxMykgLSA8Y29tbWFuZCBrZXk+LCAgCisgICAgICAgICAgICAgUHJpbnQgU2NyZWVuIChvciBGMTMpIC0gPGNvbW1hbmQga2V5PiBtYXkgc3VmZmljZS4KKworT24gb3RoZXIgLSBJZiB5b3Uga25vdyBvZiB0aGUga2V5IGNvbWJvcyBmb3Igb3RoZXIgYXJjaGl0ZWN0dXJlcywgcGxlYXNlCisgICAgICAgICAgIGxldCBtZSBrbm93IHNvIEkgY2FuIGFkZCB0aGVtIHRvIHRoaXMgc2VjdGlvbi4KKworT24gYWxsIC0gIHdyaXRlIGEgY2hhcmFjdGVyIHRvIC9wcm9jL3N5c3JxLXRyaWdnZXIuICBlLmcuOgorCisJCWVjaG8gdCA+IC9wcm9jL3N5c3JxLXRyaWdnZXIKKworKiAgV2hhdCBhcmUgdGhlICdjb21tYW5kJyBrZXlzPworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorJ2InICAgICAtIFdpbGwgaW1tZWRpYXRlbHkgcmVib290IHRoZSBzeXN0ZW0gd2l0aG91dCBzeW5jaW5nIG9yIHVubW91bnRpbmcKKyAgICAgICAgICB5b3VyIGRpc2tzLgorCisnYycJLSBXaWxsIHBlcmZvcm0gYSBzeXN0ZW0gY3Jhc2ggYnkgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuCisgICAgICAgICAgQSBjcmFzaGR1bXAgd2lsbCBiZSB0YWtlbiBpZiBjb25maWd1cmVkLgorCisnZCcJLSBTaG93cyBhbGwgbG9ja3MgdGhhdCBhcmUgaGVsZC4KKworJ2UnICAgICAtIFNlbmQgYSBTSUdURVJNIHRvIGFsbCBwcm9jZXNzZXMsIGV4Y2VwdCBmb3IgaW5pdC4KKworJ2YnCS0gV2lsbCBjYWxsIHRoZSBvb20ga2lsbGVyIHRvIGtpbGwgYSBtZW1vcnkgaG9nIHByb2Nlc3MsIGJ1dCBkbyBub3QKKwkgIHBhbmljIGlmIG5vdGhpbmcgY2FuIGJlIGtpbGxlZC4KKworJ2cnCS0gVXNlZCBieSBrZ2RiIChrZXJuZWwgZGVidWdnZXIpCisKKydoJyAgICAgLSBXaWxsIGRpc3BsYXkgaGVscCAoYWN0dWFsbHkgYW55IG90aGVyIGtleSB0aGFuIHRob3NlIGxpc3RlZAorICAgICAgICAgIGhlcmUgd2lsbCBkaXNwbGF5IGhlbHAuIGJ1dCAnaCcgaXMgZWFzeSB0byByZW1lbWJlciA6LSkKKworJ2knICAgICAtIFNlbmQgYSBTSUdLSUxMIHRvIGFsbCBwcm9jZXNzZXMsIGV4Y2VwdCBmb3IgaW5pdC4KKworJ2onICAgICAtIEZvcmNpYmx5ICJKdXN0IHRoYXcgaXQiIC0gZmlsZXN5c3RlbXMgZnJvemVuIGJ5IHRoZSBGSUZSRUVaRSBpb2N0bC4KKworJ2snICAgICAtIFNlY3VyZSBBY2Nlc3MgS2V5IChTQUspIEtpbGxzIGFsbCBwcm9ncmFtcyBvbiB0aGUgY3VycmVudCB2aXJ0dWFsCisgICAgICAgICAgY29uc29sZS4gTk9URTogU2VlIGltcG9ydGFudCBjb21tZW50cyBiZWxvdyBpbiBTQUsgc2VjdGlvbi4KKworJ2wnICAgICAtIFNob3dzIGEgc3RhY2sgYmFja3RyYWNlIGZvciBhbGwgYWN0aXZlIENQVXMuCisKKydtJyAgICAgLSBXaWxsIGR1bXAgY3VycmVudCBtZW1vcnkgaW5mbyB0byB5b3VyIGNvbnNvbGUuCisKKyduJwktIFVzZWQgdG8gbWFrZSBSVCB0YXNrcyBuaWNlLWFibGUKKworJ28nICAgICAtIFdpbGwgc2h1dCB5b3VyIHN5c3RlbSBvZmYgKGlmIGNvbmZpZ3VyZWQgYW5kIHN1cHBvcnRlZCkuCisKKydwJyAgICAgLSBXaWxsIGR1bXAgdGhlIGN1cnJlbnQgcmVnaXN0ZXJzIGFuZCBmbGFncyB0byB5b3VyIGNvbnNvbGUuCisKKydxJyAgICAgLSBXaWxsIGR1bXAgcGVyIENQVSBsaXN0cyBvZiBhbGwgYXJtZWQgaHJ0aW1lcnMgKGJ1dCBOT1QgcmVndWxhcgorICAgICAgICAgIHRpbWVyX2xpc3QgdGltZXJzKSBhbmQgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgYWxsCisgICAgICAgICAgY2xvY2tldmVudCBkZXZpY2VzLgorCisncicgICAgIC0gVHVybnMgb2ZmIGtleWJvYXJkIHJhdyBtb2RlIGFuZCBzZXRzIGl0IHRvIFhMQVRFLgorCisncycgICAgIC0gV2lsbCBhdHRlbXB0IHRvIHN5bmMgYWxsIG1vdW50ZWQgZmlsZXN5c3RlbXMuCisKKyd0JyAgICAgLSBXaWxsIGR1bXAgYSBsaXN0IG9mIGN1cnJlbnQgdGFza3MgYW5kIHRoZWlyIGluZm9ybWF0aW9uIHRvIHlvdXIKKyAgICAgICAgICBjb25zb2xlLgorCisndScgICAgIC0gV2lsbCBhdHRlbXB0IHRvIHJlbW91bnQgYWxsIG1vdW50ZWQgZmlsZXN5c3RlbXMgcmVhZC1vbmx5LgorCisndicJLSBGb3JjZWZ1bGx5IHJlc3RvcmVzIGZyYW1lYnVmZmVyIGNvbnNvbGUKKyd2JwktIENhdXNlcyBFVE0gYnVmZmVyIGR1bXAgW0FSTS1zcGVjaWZpY10KKworJ3cnCS0gRHVtcHMgdGFza3MgdGhhdCBhcmUgaW4gdW5pbnRlcnJ1cHRhYmxlIChibG9ja2VkKSBzdGF0ZS4KKworJ3gnCS0gVXNlZCBieSB4bW9uIGludGVyZmFjZSBvbiBwcGMvcG93ZXJwYyBwbGF0Zm9ybXMuCisgICAgICAgICAgU2hvdyBnbG9iYWwgUE1VIFJlZ2lzdGVycyBvbiBzcGFyYzY0LgorICAgICAgICAgIER1bXAgYWxsIFRMQiBlbnRyaWVzIG9uIE1JUFMuCisKKyd5JwktIFNob3cgZ2xvYmFsIENQVSBSZWdpc3RlcnMgW1NQQVJDLTY0IHNwZWNpZmljXQorCisneicJLSBEdW1wIHRoZSBmdHJhY2UgYnVmZmVyCisKKycwJy0nOScgLSBTZXRzIHRoZSBjb25zb2xlIGxvZyBsZXZlbCwgY29udHJvbGxpbmcgd2hpY2gga2VybmVsIG1lc3NhZ2VzCisgICAgICAgICAgd2lsbCBiZSBwcmludGVkIHRvIHlvdXIgY29uc29sZS4gKCcwJywgZm9yIGV4YW1wbGUgd291bGQgbWFrZQorICAgICAgICAgIGl0IHNvIHRoYXQgb25seSBlbWVyZ2VuY3kgbWVzc2FnZXMgbGlrZSBQQU5JQ3Mgb3IgT09QU2VzIHdvdWxkCisgICAgICAgICAgbWFrZSBpdCB0byB5b3VyIGNvbnNvbGUuKQorCisqICBPa2F5LCBzbyB3aGF0IGNhbiBJIHVzZSB0aGVtIGZvcj8KK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorV2VsbCwgdW5yYXcocikgaXMgdmVyeSBoYW5keSB3aGVuIHlvdXIgWCBzZXJ2ZXIgb3IgYSBzdmdhbGliIHByb2dyYW0gY3Jhc2hlcy4KKworc2FrKGspIChTZWN1cmUgQWNjZXNzIEtleSkgaXMgdXNlZnVsIHdoZW4geW91IHdhbnQgdG8gYmUgc3VyZSB0aGVyZSBpcyBubwordHJvamFuIHByb2dyYW0gcnVubmluZyBhdCBjb25zb2xlIHdoaWNoIGNvdWxkIGdyYWIgeW91ciBwYXNzd29yZAord2hlbiB5b3Ugd291bGQgdHJ5IHRvIGxvZ2luLiBJdCB3aWxsIGtpbGwgYWxsIHByb2dyYW1zIG9uIGdpdmVuIGNvbnNvbGUsCit0aHVzIGxldHRpbmcgeW91IG1ha2Ugc3VyZSB0aGF0IHRoZSBsb2dpbiBwcm9tcHQgeW91IHNlZSBpcyBhY3R1YWxseQordGhlIG9uZSBmcm9tIGluaXQsIG5vdCBzb21lIHRyb2phbiBwcm9ncmFtLgorSU1QT1JUQU5UOiBJbiBpdHMgdHJ1ZSBmb3JtIGl0IGlzIG5vdCBhIHRydWUgU0FLIGxpa2UgdGhlIG9uZSBpbiBhIDpJTVBPUlRBTlQKK0lNUE9SVEFOVDogYzIgY29tcGxpYW50IHN5c3RlbSwgYW5kIGl0IHNob3VsZCBub3QgYmUgbWlzdGFrZW4gYXMgICA6SU1QT1JUQU5UCitJTVBPUlRBTlQ6IHN1Y2guICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOklNUE9SVEFOVAorICAgICAgIEl0IHNlZW1zIG90aGVycyBmaW5kIGl0IHVzZWZ1bCBhcyAoU3lzdGVtIEF0dGVudGlvbiBLZXkpIHdoaWNoIGlzCit1c2VmdWwgd2hlbiB5b3Ugd2FudCB0byBleGl0IGEgcHJvZ3JhbSB0aGF0IHdpbGwgbm90IGxldCB5b3Ugc3dpdGNoIGNvbnNvbGVzLgorKEZvciBleGFtcGxlLCBYIG9yIGEgc3ZnYWxpYiBwcm9ncmFtLikKKworcmVib290KGIpIGlzIGdvb2Qgd2hlbiB5b3UncmUgdW5hYmxlIHRvIHNodXQgZG93bi4gQnV0IHlvdSBzaG91bGQgYWxzbworc3luYyhzKSBhbmQgdW1vdW50KHUpIGZpcnN0LgorCitjcmFzaChjKSBjYW4gYmUgdXNlZCB0byBtYW51YWxseSB0cmlnZ2VyIGEgY3Jhc2hkdW1wIHdoZW4gdGhlIHN5c3RlbSBpcyBodW5nLgorTm90ZSB0aGF0IHRoaXMganVzdCB0cmlnZ2VycyBhIGNyYXNoIGlmIHRoZXJlIGlzIG5vIGR1bXAgbWVjaGFuaXNtIGF2YWlsYWJsZS4KKworc3luYyhzKSBpcyBncmVhdCB3aGVuIHlvdXIgc3lzdGVtIGlzIGxvY2tlZCB1cCwgaXQgYWxsb3dzIHlvdSB0byBzeW5jIHlvdXIKK2Rpc2tzIGFuZCB3aWxsIGNlcnRhaW5seSBsZXNzZW4gdGhlIGNoYW5jZSBvZiBkYXRhIGxvc3MgYW5kIGZzY2tpbmcuIE5vdGUKK3RoYXQgdGhlIHN5bmMgaGFzbid0IHRha2VuIHBsYWNlIHVudGlsIHlvdSBzZWUgdGhlICJPSyIgYW5kICJEb25lIiBhcHBlYXIKK29uIHRoZSBzY3JlZW4uIChJZiB0aGUga2VybmVsIGlzIHJlYWxseSBpbiBzdHJpZmUsIHlvdSBtYXkgbm90IGV2ZXIgZ2V0IHRoZQorT0sgb3IgRG9uZSBtZXNzYWdlLi4uKQorCit1bW91bnQodSkgaXMgYmFzaWNhbGx5IHVzZWZ1bCBpbiB0aGUgc2FtZSB3YXlzIGFzIHN5bmMocykuIEkgZ2VuZXJhbGx5IHN5bmMocyksCit1bW91bnQodSksIHRoZW4gcmVib290KGIpIHdoZW4gbXkgc3lzdGVtIGxvY2tzLiBJdCdzIHNhdmVkIG1lIG1hbnkgYSBmc2NrLgorQWdhaW4sIHRoZSB1bm1vdW50IChyZW1vdW50IHJlYWQtb25seSkgaGFzbid0IHRha2VuIHBsYWNlIHVudGlsIHlvdSBzZWUgdGhlCisiT0siIGFuZCAiRG9uZSIgbWVzc2FnZSBhcHBlYXIgb24gdGhlIHNjcmVlbi4KKworVGhlIGxvZ2xldmVscyAnMCctJzknIGFyZSB1c2VmdWwgd2hlbiB5b3VyIGNvbnNvbGUgaXMgYmVpbmcgZmxvb2RlZCB3aXRoCitrZXJuZWwgbWVzc2FnZXMgeW91IGRvIG5vdCB3YW50IHRvIHNlZS4gU2VsZWN0aW5nICcwJyB3aWxsIHByZXZlbnQgYWxsIGJ1dAordGhlIG1vc3QgdXJnZW50IGtlcm5lbCBtZXNzYWdlcyBmcm9tIHJlYWNoaW5nIHlvdXIgY29uc29sZS4gKFRoZXkgd2lsbAorc3RpbGwgYmUgbG9nZ2VkIGlmIHN5c2xvZ2Qva2xvZ2QgYXJlIGFsaXZlLCB0aG91Z2guKQorCit0ZXJtKGUpIGFuZCBraWxsKGkpIGFyZSB1c2VmdWwgaWYgeW91IGhhdmUgc29tZSBzb3J0IG9mIHJ1bmF3YXkgcHJvY2VzcyB5b3UKK2FyZSB1bmFibGUgdG8ga2lsbCBhbnkgb3RoZXIgd2F5LCBlc3BlY2lhbGx5IGlmIGl0J3Mgc3Bhd25pbmcgb3RoZXIKK3Byb2Nlc3Nlcy4KKworImp1c3QgdGhhdyBpdChqKSIgaXMgdXNlZnVsIGlmIHlvdXIgc3lzdGVtIGJlY29tZXMgdW5yZXNwb25zaXZlIGR1ZSB0byBhIGZyb3plbgorKHByb2JhYmx5IHJvb3QpIGZpbGVzeXN0ZW0gdmlhIHRoZSBGSUZSRUVaRSBpb2N0bC4KKworKiAgU29tZXRpbWVzIFN5c1JxIHNlZW1zIHRvIGdldCAnc3R1Y2snIGFmdGVyIHVzaW5nIGl0LCB3aGF0IGNhbiBJIGRvPworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorVGhhdCBoYXBwZW5zIHRvIG1lLCBhbHNvLiBJJ3ZlIGZvdW5kIHRoYXQgdGFwcGluZyBzaGlmdCwgYWx0LCBhbmQgY29udHJvbAorb24gYm90aCBzaWRlcyBvZiB0aGUga2V5Ym9hcmQsIGFuZCBoaXR0aW5nIGFuIGludmFsaWQgc3lzcnEgc2VxdWVuY2UgYWdhaW4KK3dpbGwgZml4IHRoZSBwcm9ibGVtLiAoaS5lLiwgc29tZXRoaW5nIGxpa2UgYWx0LXN5c3JxLXopLiBTd2l0Y2hpbmcgdG8gYW5vdGhlcgordmlydHVhbCBjb25zb2xlIChBTFQrRm4pIGFuZCB0aGVuIGJhY2sgYWdhaW4gc2hvdWxkIGFsc28gaGVscC4KKworKiAgSSBoaXQgU3lzUnEsIGJ1dCBub3RoaW5nIHNlZW1zIHRvIGhhcHBlbiwgd2hhdCdzIHdyb25nPworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorVGhlcmUgYXJlIHNvbWUga2V5Ym9hcmRzIHRoYXQgcHJvZHVjZSBhIGRpZmZlcmVudCBrZXljb2RlIGZvciBTeXNScSB0aGFuIHRoZQorcHJlLWRlZmluZWQgdmFsdWUgb2YgOTkgKHNlZSBLRVlfU1lTUlEgaW4gaW5jbHVkZS9saW51eC9pbnB1dC5oKSwgb3Igd2hpY2gKK2Rvbid0IGhhdmUgYSBTeXNScSBrZXkgYXQgYWxsLiBJbiB0aGVzZSBjYXNlcywgcnVuICdzaG93a2V5IC1zJyB0byBmaW5kIGFuCithcHByb3ByaWF0ZSBzY2FuY29kZSBzZXF1ZW5jZSwgYW5kIHVzZSAnc2V0a2V5Y29kZXMgPHNlcXVlbmNlPiA5OScgdG8gbWFwCit0aGlzIHNlcXVlbmNlIHRvIHRoZSB1c3VhbCBTeXNScSBjb2RlIChlLmcuLCAnc2V0a2V5Y29kZXMgZTA1YiA5OScpLiBJdCdzCitwcm9iYWJseSBiZXN0IHRvIHB1dCB0aGlzIGNvbW1hbmQgaW4gYSBib290IHNjcmlwdC4gT2gsIGFuZCBieSB0aGUgd2F5LCB5b3UKK2V4aXQgJ3Nob3drZXknIGJ5IG5vdCB0eXBpbmcgYW55dGhpbmcgZm9yIHRlbiBzZWNvbmRzLgorCisqICBJIHdhbnQgdG8gYWRkIFN5c1JRIGtleSBldmVudHMgdG8gYSBtb2R1bGUsIGhvdyBkb2VzIGl0IHdvcms/Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitJbiBvcmRlciB0byByZWdpc3RlciBhIGJhc2ljIGZ1bmN0aW9uIHdpdGggdGhlIHRhYmxlLCB5b3UgbXVzdCBmaXJzdCBpbmNsdWRlCit0aGUgaGVhZGVyICdpbmNsdWRlL2xpbnV4L3N5c3JxLmgnLCB0aGlzIHdpbGwgZGVmaW5lIGV2ZXJ5dGhpbmcgZWxzZSB5b3UgbmVlZC4KK05leHQsIHlvdSBtdXN0IGNyZWF0ZSBhIHN5c3JxX2tleV9vcCBzdHJ1Y3QsIGFuZCBwb3B1bGF0ZSBpdCB3aXRoIEEpIHRoZSBrZXkKK2hhbmRsZXIgZnVuY3Rpb24geW91IHdpbGwgdXNlLCBCKSBhIGhlbHBfbXNnIHN0cmluZywgdGhhdCB3aWxsIHByaW50IHdoZW4gU3lzUlEKK3ByaW50cyBoZWxwLCBhbmQgQykgYW4gYWN0aW9uX21zZyBzdHJpbmcsIHRoYXQgd2lsbCBwcmludCByaWdodCBiZWZvcmUgeW91cgoraGFuZGxlciBpcyBjYWxsZWQuIFlvdXIgaGFuZGxlciBtdXN0IGNvbmZvcm0gdG8gdGhlIHByb3RvdHlwZSBpbiAnc3lzcnEuaCcuCisKK0FmdGVyIHRoZSBzeXNycV9rZXlfb3AgaXMgY3JlYXRlZCwgeW91IGNhbiBjYWxsIHRoZSBrZXJuZWwgZnVuY3Rpb24KK3JlZ2lzdGVyX3N5c3JxX2tleShpbnQga2V5LCBzdHJ1Y3Qgc3lzcnFfa2V5X29wICpvcF9wKTsgdGhpcyB3aWxsCityZWdpc3RlciB0aGUgb3BlcmF0aW9uIHBvaW50ZWQgdG8gYnkgJ29wX3AnIGF0IHRhYmxlIGtleSAna2V5JywKK2lmIHRoYXQgc2xvdCBpbiB0aGUgdGFibGUgaXMgYmxhbmsuIEF0IG1vZHVsZSB1bmxvYWQgdGltZSwgeW91IG11c3QgY2FsbAordGhlIGZ1bmN0aW9uIHVucmVnaXN0ZXJfc3lzcnFfa2V5KGludCBrZXksIHN0cnVjdCBzeXNycV9rZXlfb3AgKm9wX3ApLCB3aGljaAord2lsbCByZW1vdmUgdGhlIGtleSBvcCBwb2ludGVkIHRvIGJ5ICdvcF9wJyBmcm9tIHRoZSBrZXkgJ2tleScsIGlmIGFuZCBvbmx5IGlmCitpdCBpcyBjdXJyZW50bHkgcmVnaXN0ZXJlZCBpbiB0aGF0IHNsb3QuIFRoaXMgaXMgaW4gY2FzZSB0aGUgc2xvdCBoYXMgYmVlbgorb3ZlcndyaXR0ZW4gc2luY2UgeW91IHJlZ2lzdGVyZWQgaXQuCisKK1RoZSBNYWdpYyBTeXNSUSBzeXN0ZW0gd29ya3MgYnkgcmVnaXN0ZXJpbmcga2V5IG9wZXJhdGlvbnMgYWdhaW5zdCBhIGtleSBvcAorbG9va3VwIHRhYmxlLCB3aGljaCBpcyBkZWZpbmVkIGluICdkcml2ZXJzL2NoYXIvc3lzcnEuYycuIFRoaXMga2V5IHRhYmxlIGhhcworYSBudW1iZXIgb2Ygb3BlcmF0aW9ucyByZWdpc3RlcmVkIGludG8gaXQgYXQgY29tcGlsZSB0aW1lLCBidXQgaXMgbXV0YWJsZSwKK2FuZCAyIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgZm9yIGludGVyZmFjZSB0byBpdDoKKwlyZWdpc3Rlcl9zeXNycV9rZXkgYW5kIHVucmVnaXN0ZXJfc3lzcnFfa2V5LgorT2YgY291cnNlLCBuZXZlciBldmVyIGxlYXZlIGFuIGludmFsaWQgcG9pbnRlciBpbiB0aGUgdGFibGUuIEkuZS4sIHdoZW4KK3lvdXIgbW9kdWxlIHRoYXQgY2FsbGVkIHJlZ2lzdGVyX3N5c3JxX2tleSgpIGV4aXRzLCBpdCBtdXN0IGNhbGwKK3VucmVnaXN0ZXJfc3lzcnFfa2V5KCkgdG8gY2xlYW4gdXAgdGhlIHN5c3JxIGtleSB0YWJsZSBlbnRyeSB0aGF0IGl0IHVzZWQuCitOdWxsIHBvaW50ZXJzIGluIHRoZSB0YWJsZSBhcmUgYWx3YXlzIHNhZmUuIDopCisKK0lmIGZvciBzb21lIHJlYXNvbiB5b3UgZmVlbCB0aGUgbmVlZCB0byBjYWxsIHRoZSBoYW5kbGVfc3lzcnEgZnVuY3Rpb24gZnJvbQord2l0aGluIGEgZnVuY3Rpb24gY2FsbGVkIGJ5IGhhbmRsZV9zeXNycSwgeW91IG11c3QgYmUgYXdhcmUgdGhhdCB5b3UgYXJlIGluCithIGxvY2sgKHlvdSBhcmUgYWxzbyBpbiBhbiBpbnRlcnJ1cHQgaGFuZGxlciwgd2hpY2ggbWVhbnMgZG9uJ3Qgc2xlZXAhKSwgc28KK3lvdSBtdXN0IGNhbGwgX19oYW5kbGVfc3lzcnFfbm9sb2NrIGluc3RlYWQuCisKKyogIFdoZW4gSSBoaXQgYSBTeXNScSBrZXkgY29tYmluYXRpb24gb25seSB0aGUgaGVhZGVyIGFwcGVhcnMgb24gdGhlIGNvbnNvbGU/Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorU3lzcnEgb3V0cHV0IGlzIHN1YmplY3QgdG8gdGhlIHNhbWUgY29uc29sZSBsb2dsZXZlbCBjb250cm9sIGFzIGFsbAorb3RoZXIgY29uc29sZSBvdXRwdXQuICBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlIGtlcm5lbCB3YXMgYm9vdGVkICdxdWlldCcKK2FzIGlzIGNvbW1vbiBvbiBkaXN0cm8ga2VybmVscyB0aGUgb3V0cHV0IG1heSBub3QgYXBwZWFyIG9uIHRoZSBhY3R1YWwKK2NvbnNvbGUsIGV2ZW4gdGhvdWdoIGl0IHdpbGwgYXBwZWFyIGluIHRoZSBkbWVzZyBidWZmZXIsIGFuZCBiZSBhY2Nlc3NpYmxlCit2aWEgdGhlIGRtZXNnIGNvbW1hbmQgYW5kIHRvIHRoZSBjb25zdW1lcnMgb2YgL3Byb2Mva21zZy4gIEFzIGEgc3BlY2lmaWMKK2V4Y2VwdGlvbiB0aGUgaGVhZGVyIGxpbmUgZnJvbSB0aGUgc3lzcnEgY29tbWFuZCBpcyBwYXNzZWQgdG8gYWxsIGNvbnNvbGUKK2NvbnN1bWVycyBhcyBpZiB0aGUgY3VycmVudCBsb2dsZXZlbCB3YXMgbWF4aW11bS4gIElmIG9ubHkgdGhlIGhlYWRlcgoraXMgZW1pdHRlZCBpdCBpcyBhbG1vc3QgY2VydGFpbiB0aGF0IHRoZSBrZXJuZWwgbG9nbGV2ZWwgaXMgdG9vIGxvdy4KK1Nob3VsZCB5b3UgcmVxdWlyZSB0aGUgb3V0cHV0IG9uIHRoZSBjb25zb2xlIGNoYW5uZWwgdGhlbiB5b3Ugd2lsbCBuZWVkCit0byB0ZW1wb3JhcmlseSB1cCB0aGUgY29uc29sZSBsb2dsZXZlbCB1c2luZyBhbHQtc3lzcnEtOCBvcjoKKworICAgIGVjaG8gOCA+IC9wcm9jL3N5c3JxLXRyaWdnZXIKKworUmVtZW1iZXIgdG8gcmV0dXJuIHRoZSBsb2dsZXZlbCB0byBub3JtYWwgYWZ0ZXIgdHJpZ2dlcmluZyB0aGUgc3lzcnEKK2NvbW1hbmQgeW91IGFyZSBpbnRlcmVzdGVkIGluLgorCisqICBJIGhhdmUgbW9yZSBxdWVzdGlvbnMsIHdobyBjYW4gSSBhc2s/Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitKdXN0IGFzayB0aGVtIG9uIHRoZSBsaW51eC1rZXJuZWwgbWFpbGluZyBsaXN0OgorCWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKKworKiAgQ3JlZGl0cworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorV3JpdHRlbiBieSBNeWRyYWFsIDx2dWxweW5lQHZ1bHB5bmUubmV0PgorVXBkYXRlZCBieSBBZGFtIFN1bG1pY2tpIDxhZGFtQGNmYXIudW1kLmVkdT4KK1VwZGF0ZWQgYnkgSmVyZW15IE0uIERvbGFuIDxqbWRAdHVyYm9nZWVrLm9yZz4gMjAwMS8wMS8yOCAxMDoxNTo1OQorQWRkZWQgdG8gYnkgQ3J1dGNoZXIgRHVubmF2YW50IDxjcnV0Y2hlcitrZXJuZWxAZGF0YXN0YWNrcy5jb20+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RhcmdldC90Y21fbW9kX2J1aWxkZXIucHkgYi9Eb2N1bWVudGF0aW9uL3RhcmdldC90Y21fbW9kX2J1aWxkZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uN2QzNzBjOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdGFyZ2V0L3RjbV9tb2RfYnVpbGRlci5weQpAQCAtMCwwICsxLDY4MCBAQAorIyEvdXNyL2Jpbi9weXRob24KKyMgVGhlIFRDTSB2NCBtdWx0aS1wcm90b2NvbCBmYWJyaWMgbW9kdWxlIGdlbmVyYXRpb24gc2NyaXB0IGZvciBkcml2ZXJzL3RhcmdldC8kTkVXX01PRAorIworIyBDb3B5cmlnaHQgKGMpIDIwMTAgUmlzaW5nIFRpZGUgU3lzdGVtcworIyBDb3B5cmlnaHQgKGMpIDIwMTAgTGludXgtaVNDU0kub3JnCisjCisjIEF1dGhvcjogbmFiQGtlcm5lbC5vcmcKKyMKK2ltcG9ydCBvcywgc3lzCitpbXBvcnQgc3VicHJvY2VzcyBhcyBzdWIKK2ltcG9ydCBzdHJpbmcKK2ltcG9ydCByZQoraW1wb3J0IG9wdHBhcnNlCisKK3RjbV9kaXIgPSAiIgorCitmYWJyaWNfb3BzID0gW10KK2ZhYnJpY19tb2RfZGlyID0gIiIKK2ZhYnJpY19tb2RfcG9ydCA9ICIiCitmYWJyaWNfbW9kX2luaXRfcG9ydCA9ICIiCisKK2RlZiB0Y21fbW9kX2Vycihtc2cpOgorCXByaW50IG1zZworCXN5cy5leGl0KDEpCisKK2RlZiB0Y21fbW9kX2NyZWF0ZV9tb2R1bGVfc3ViZGlyKGZhYnJpY19tb2RfZGlyX3Zhcik6CisKKwlpZiBvcy5wYXRoLmlzZGlyKGZhYnJpY19tb2RfZGlyX3ZhcikgPT0gVHJ1ZToKKwkJcmV0dXJuIDEKKworCXByaW50ICJDcmVhdGluZyBmYWJyaWNfbW9kX2RpcjogIiArIGZhYnJpY19tb2RfZGlyX3ZhcgorCXJldCA9IG9zLm1rZGlyKGZhYnJpY19tb2RfZGlyX3ZhcikKKwlpZiByZXQ6CisJCXRjbV9tb2RfZXJyKCJVbmFibGUgdG8gbWtkaXIgIiArIGZhYnJpY19tb2RfZGlyX3ZhcikKKworCXJldHVybgorCitkZWYgdGNtX21vZF9idWlsZF9GQ19pbmNsdWRlKGZhYnJpY19tb2RfZGlyX3ZhciwgZmFicmljX21vZF9uYW1lKToKKwlnbG9iYWwgZmFicmljX21vZF9wb3J0CisJZ2xvYmFsIGZhYnJpY19tb2RfaW5pdF9wb3J0CisJYnVmID0gIiIKKworCWYgPSBmYWJyaWNfbW9kX2Rpcl92YXIgKyAiLyIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX2Jhc2UuaCIKKwlwcmludCAiV3JpdGluZyBmaWxlOiAiICsgZgorCisJcCA9IG9wZW4oZiwgJ3cnKTsKKwlpZiBub3QgcDoKKwkJdGNtX21vZF9lcnIoIlVuYWJsZSB0byBvcGVuIGZpbGU6ICIgKyBmKQorCisJYnVmID0gIiNkZWZpbmUgIiArIGZhYnJpY19tb2RfbmFtZS51cHBlcigpICsgIl9WRVJTSU9OCVwidjAuMVwiXG4iCisJYnVmICs9ICIjZGVmaW5lICIgKyBmYWJyaWNfbW9kX25hbWUudXBwZXIoKSArICJfTkFNRUxFTgkzMlxuIgorCWJ1ZiArPSAiXG4iCisJYnVmICs9ICJzdHJ1Y3QgIiArIGZhYnJpY19tb2RfbmFtZSArICJfdHBnIHtcbiIKKwlidWYgKz0gIgkvKiBGQyBscG9ydCB0YXJnZXQgcG9ydGFsIGdyb3VwIHRhZyBmb3IgVENNICovXG4iCisJYnVmICs9ICIJdTE2IGxwb3J0X3RwZ3Q7XG4iCisJYnVmICs9ICIJLyogUG9pbnRlciBiYWNrIHRvICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX2xwb3J0ICovXG4iCisJYnVmICs9ICIJc3RydWN0ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX2xwb3J0ICpscG9ydDtcbiIKKwlidWYgKz0gIgkvKiBSZXR1cm5lZCBieSAiICsgZmFicmljX21vZF9uYW1lICsgIl9tYWtlX3RwZygpICovXG4iCisJYnVmICs9ICIJc3RydWN0IHNlX3BvcnRhbF9ncm91cCBzZV90cGc7XG4iCisJYnVmICs9ICJ9O1xuIgorCWJ1ZiArPSAiXG4iCisJYnVmICs9ICJzdHJ1Y3QgIiArIGZhYnJpY19tb2RfbmFtZSArICJfbHBvcnQge1xuIgorCWJ1ZiArPSAiCS8qIEJpbmFyeSBXb3JsZCBXaWRlIHVuaXF1ZSBQb3J0IE5hbWUgZm9yIEZDIFRhcmdldCBMcG9ydCAqL1xuIgorCWJ1ZiArPSAiCXU2NCBscG9ydF93d3BuO1xuIgorCWJ1ZiArPSAiCS8qIEFTQ0lJIGZvcm1hdHRlZCBXV1BOIGZvciBGQyBUYXJnZXQgTHBvcnQgKi9cbiIKKwlidWYgKz0gIgljaGFyIGxwb3J0X25hbWVbIiArIGZhYnJpY19tb2RfbmFtZS51cHBlcigpICsgIl9OQU1FTEVOXTtcbiIKKwlidWYgKz0gIgkvKiBSZXR1cm5lZCBieSAiICsgZmFicmljX21vZF9uYW1lICsgIl9tYWtlX2xwb3J0KCkgKi9cbiIKKwlidWYgKz0gIglzdHJ1Y3Qgc2Vfd3duIGxwb3J0X3d3bjtcbiIKKwlidWYgKz0gIn07XG4iCisKKwlyZXQgPSBwLndyaXRlKGJ1ZikKKwlpZiByZXQ6CisJCXRjbV9tb2RfZXJyKCJVbmFibGUgdG8gd3JpdGUgZjogIiArIGYpCisKKwlwLmNsb3NlKCkKKworCWZhYnJpY19tb2RfcG9ydCA9ICJscG9ydCIKKwlmYWJyaWNfbW9kX2luaXRfcG9ydCA9ICJucG9ydCIKKworCXJldHVybgorCitkZWYgdGNtX21vZF9idWlsZF9TQVNfaW5jbHVkZShmYWJyaWNfbW9kX2Rpcl92YXIsIGZhYnJpY19tb2RfbmFtZSk6CisJZ2xvYmFsIGZhYnJpY19tb2RfcG9ydAorCWdsb2JhbCBmYWJyaWNfbW9kX2luaXRfcG9ydAorCWJ1ZiA9ICIiCisKKwlmID0gZmFicmljX21vZF9kaXJfdmFyICsgIi8iICsgZmFicmljX21vZF9uYW1lICsgIl9iYXNlLmgiCisJcHJpbnQgIldyaXRpbmcgZmlsZTogIiArIGYKKworCXAgPSBvcGVuKGYsICd3Jyk7CisJaWYgbm90IHA6CisJCXRjbV9tb2RfZXJyKCJVbmFibGUgdG8gb3BlbiBmaWxlOiAiICsgZikKKworCWJ1ZiA9ICIjZGVmaW5lICIgKyBmYWJyaWNfbW9kX25hbWUudXBwZXIoKSArICJfVkVSU0lPTiAgXCJ2MC4xXCJcbiIKKwlidWYgKz0gIiNkZWZpbmUgIiArIGZhYnJpY19tb2RfbmFtZS51cHBlcigpICsgIl9OQU1FTEVOIDMyXG4iCisJYnVmICs9ICJcbiIKKwlidWYgKz0gInN0cnVjdCAiICsgZmFicmljX21vZF9uYW1lICsgIl90cGcge1xuIgorCWJ1ZiArPSAiCS8qIFNBUyBwb3J0IHRhcmdldCBwb3J0YWwgZ3JvdXAgdGFnIGZvciBUQ00gKi9cbiIKKwlidWYgKz0gIgl1MTYgdHBvcnRfdHBndDtcbiIKKwlidWYgKz0gIgkvKiBQb2ludGVyIGJhY2sgdG8gIiArIGZhYnJpY19tb2RfbmFtZSArICJfdHBvcnQgKi9cbiIKKwlidWYgKz0gIglzdHJ1Y3QgIiArIGZhYnJpY19tb2RfbmFtZSArICJfdHBvcnQgKnRwb3J0O1xuIgorCWJ1ZiArPSAiCS8qIFJldHVybmVkIGJ5ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX21ha2VfdHBnKCkgKi9cbiIKKwlidWYgKz0gIglzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwIHNlX3RwZztcbiIKKwlidWYgKz0gIn07XG5cbiIKKwlidWYgKz0gInN0cnVjdCAiICsgZmFicmljX21vZF9uYW1lICsgIl90cG9ydCB7XG4iCisJYnVmICs9ICIJLyogQmluYXJ5IFdvcmxkIFdpZGUgdW5pcXVlIFBvcnQgTmFtZSBmb3IgU0FTIFRhcmdldCBwb3J0ICovXG4iCisJYnVmICs9ICIJdTY0IHRwb3J0X3d3cG47XG4iCisJYnVmICs9ICIJLyogQVNDSUkgZm9ybWF0dGVkIFdXUE4gZm9yIFNBUyBUYXJnZXQgcG9ydCAqL1xuIgorCWJ1ZiArPSAiCWNoYXIgdHBvcnRfbmFtZVsiICsgZmFicmljX21vZF9uYW1lLnVwcGVyKCkgKyAiX05BTUVMRU5dO1xuIgorCWJ1ZiArPSAiCS8qIFJldHVybmVkIGJ5ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX21ha2VfdHBvcnQoKSAqL1xuIgorCWJ1ZiArPSAiCXN0cnVjdCBzZV93d24gdHBvcnRfd3duO1xuIgorCWJ1ZiArPSAifTtcbiIKKworCXJldCA9IHAud3JpdGUoYnVmKQorCWlmIHJldDoKKwkJdGNtX21vZF9lcnIoIlVuYWJsZSB0byB3cml0ZSBmOiAiICsgZikKKworCXAuY2xvc2UoKQorCisJZmFicmljX21vZF9wb3J0ID0gInRwb3J0IgorCWZhYnJpY19tb2RfaW5pdF9wb3J0ID0gImlwb3J0IgorCisJcmV0dXJuCisKK2RlZiB0Y21fbW9kX2J1aWxkX2lTQ1NJX2luY2x1ZGUoZmFicmljX21vZF9kaXJfdmFyLCBmYWJyaWNfbW9kX25hbWUpOgorCWdsb2JhbCBmYWJyaWNfbW9kX3BvcnQKKwlnbG9iYWwgZmFicmljX21vZF9pbml0X3BvcnQKKwlidWYgPSAiIgorCisJZiA9IGZhYnJpY19tb2RfZGlyX3ZhciArICIvIiArIGZhYnJpY19tb2RfbmFtZSArICJfYmFzZS5oIgorCXByaW50ICJXcml0aW5nIGZpbGU6ICIgKyBmCisKKwlwID0gb3BlbihmLCAndycpOworCWlmIG5vdCBwOgorCQl0Y21fbW9kX2VycigiVW5hYmxlIHRvIG9wZW4gZmlsZTogIiArIGYpCisKKwlidWYgPSAiI2RlZmluZSAiICsgZmFicmljX21vZF9uYW1lLnVwcGVyKCkgKyAiX1ZFUlNJT04gIFwidjAuMVwiXG4iCisJYnVmICs9ICIjZGVmaW5lICIgKyBmYWJyaWNfbW9kX25hbWUudXBwZXIoKSArICJfTkFNRUxFTiAzMlxuIgorCWJ1ZiArPSAiXG4iCisJYnVmICs9ICJzdHJ1Y3QgIiArIGZhYnJpY19tb2RfbmFtZSArICJfdHBnIHtcbiIKKwlidWYgKz0gIgkvKiBpU0NTSSB0YXJnZXQgcG9ydGFsIGdyb3VwIHRhZyBmb3IgVENNICovXG4iCisJYnVmICs9ICIJdTE2IHRwb3J0X3RwZ3Q7XG4iCisJYnVmICs9ICIJLyogUG9pbnRlciBiYWNrIHRvICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX3Rwb3J0ICovXG4iCisJYnVmICs9ICIJc3RydWN0ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX3Rwb3J0ICp0cG9ydDtcbiIKKwlidWYgKz0gIgkvKiBSZXR1cm5lZCBieSAiICsgZmFicmljX21vZF9uYW1lICsgIl9tYWtlX3RwZygpICovXG4iCisJYnVmICs9ICIJc3RydWN0IHNlX3BvcnRhbF9ncm91cCBzZV90cGc7XG4iCisJYnVmICs9ICJ9O1xuXG4iCisJYnVmICs9ICJzdHJ1Y3QgIiArIGZhYnJpY19tb2RfbmFtZSArICJfdHBvcnQge1xuIgorCWJ1ZiArPSAiCS8qIEFTQ0lJIGZvcm1hdHRlZCBUYXJnZXROYW1lIGZvciBJUU4gKi9cbiIKKwlidWYgKz0gIgljaGFyIHRwb3J0X25hbWVbIiArIGZhYnJpY19tb2RfbmFtZS51cHBlcigpICsgIl9OQU1FTEVOXTtcbiIKKwlidWYgKz0gIgkvKiBSZXR1cm5lZCBieSAiICsgZmFicmljX21vZF9uYW1lICsgIl9tYWtlX3Rwb3J0KCkgKi9cbiIKKwlidWYgKz0gIglzdHJ1Y3Qgc2Vfd3duIHRwb3J0X3d3bjtcbiIKKwlidWYgKz0gIn07XG4iCisKKwlyZXQgPSBwLndyaXRlKGJ1ZikKKwlpZiByZXQ6CisJCXRjbV9tb2RfZXJyKCJVbmFibGUgdG8gd3JpdGUgZjogIiArIGYpCisKKwlwLmNsb3NlKCkKKworCWZhYnJpY19tb2RfcG9ydCA9ICJ0cG9ydCIKKwlmYWJyaWNfbW9kX2luaXRfcG9ydCA9ICJpcG9ydCIKKworCXJldHVybgorCitkZWYgdGNtX21vZF9idWlsZF9iYXNlX2luY2x1ZGVzKHByb3RvX2lkZW50LCBmYWJyaWNfbW9kX2Rpcl92YWwsIGZhYnJpY19tb2RfbmFtZSk6CisKKwlpZiBwcm90b19pZGVudCA9PSAiRkMiOgorCQl0Y21fbW9kX2J1aWxkX0ZDX2luY2x1ZGUoZmFicmljX21vZF9kaXJfdmFsLCBmYWJyaWNfbW9kX25hbWUpCisJZWxpZiBwcm90b19pZGVudCA9PSAiU0FTIjoKKwkJdGNtX21vZF9idWlsZF9TQVNfaW5jbHVkZShmYWJyaWNfbW9kX2Rpcl92YWwsIGZhYnJpY19tb2RfbmFtZSkKKwllbGlmIHByb3RvX2lkZW50ID09ICJpU0NTSSI6CisJCXRjbV9tb2RfYnVpbGRfaVNDU0lfaW5jbHVkZShmYWJyaWNfbW9kX2Rpcl92YWwsIGZhYnJpY19tb2RfbmFtZSkKKwllbHNlOgorCQlwcmludCAiVW5zdXBwb3J0ZWQgcHJvdG9faWRlbnQ6ICIgKyBwcm90b19pZGVudAorCQlzeXMuZXhpdCgxKQorCisJcmV0dXJuCisKK2RlZiB0Y21fbW9kX2J1aWxkX2NvbmZpZ2ZzKHByb3RvX2lkZW50LCBmYWJyaWNfbW9kX2Rpcl92YXIsIGZhYnJpY19tb2RfbmFtZSk6CisJYnVmID0gIiIKKworCWYgPSBmYWJyaWNfbW9kX2Rpcl92YXIgKyAiLyIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX2NvbmZpZ2ZzLmMiCisJcHJpbnQgIldyaXRpbmcgZmlsZTogIiArIGYKKworICAgICAgICBwID0gb3BlbihmLCAndycpOworICAgICAgICBpZiBub3QgcDoKKyAgICAgICAgICAgICAgICB0Y21fbW9kX2VycigiVW5hYmxlIHRvIG9wZW4gZmlsZTogIiArIGYpCisKKwlidWYgPSAiI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPlxuIgorCWJ1ZiArPSAiI2luY2x1ZGUgPGxpbnV4L21vZHVsZXBhcmFtLmg+XG4iCisJYnVmICs9ICIjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPlxuIgorCWJ1ZiArPSAiI2luY2x1ZGUgPGdlbmVyYXRlZC91dHNyZWxlYXNlLmg+XG4iCisJYnVmICs9ICIjaW5jbHVkZSA8bGludXgvdXRzbmFtZS5oPlxuIgorCWJ1ZiArPSAiI2luY2x1ZGUgPGxpbnV4L2luaXQuaD5cbiIKKwlidWYgKz0gIiNpbmNsdWRlIDxsaW51eC9zbGFiLmg+XG4iCisJYnVmICs9ICIjaW5jbHVkZSA8bGludXgva3RocmVhZC5oPlxuIgorCWJ1ZiArPSAiI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+XG4iCisJYnVmICs9ICIjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+XG4iCisJYnVmICs9ICIjaW5jbHVkZSA8bGludXgvY29uZmlnZnMuaD5cbiIKKwlidWYgKz0gIiNpbmNsdWRlIDxsaW51eC9jdHlwZS5oPlxuIgorCWJ1ZiArPSAiI2luY2x1ZGUgPGFzbS91bmFsaWduZWQuaD5cbiIKKwlidWYgKz0gIiNpbmNsdWRlIDxzY3NpL3Njc2lfcHJvdG8uaD5cblxuIgorCWJ1ZiArPSAiI2luY2x1ZGUgPHRhcmdldC90YXJnZXRfY29yZV9iYXNlLmg+XG4iCisJYnVmICs9ICIjaW5jbHVkZSA8dGFyZ2V0L3RhcmdldF9jb3JlX2ZhYnJpYy5oPlxuIgorCWJ1ZiArPSAiI2luY2x1ZGUgXCIiICsgZmFicmljX21vZF9uYW1lICsgIl9iYXNlLmhcIlxuIgorCWJ1ZiArPSAiI2luY2x1ZGUgXCIiICsgZmFicmljX21vZF9uYW1lICsgIl9mYWJyaWMuaFwiXG5cbiIKKworCWJ1ZiArPSAic3RhdGljIGNvbnN0IHN0cnVjdCB0YXJnZXRfY29yZV9mYWJyaWNfb3BzICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX29wcztcblxuIgorCisJYnVmICs9ICJzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqIiArIGZhYnJpY19tb2RfbmFtZSArICJfbWFrZV90cGcoXG4iCisJYnVmICs9ICIJc3RydWN0IHNlX3d3biAqd3duLFxuIgorCWJ1ZiArPSAiCXN0cnVjdCBjb25maWdfZ3JvdXAgKmdyb3VwLFxuIgorCWJ1ZiArPSAiCWNvbnN0IGNoYXIgKm5hbWUpXG4iCisJYnVmICs9ICJ7XG4iCisJYnVmICs9ICIJc3RydWN0ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiXyIgKyBmYWJyaWNfbW9kX3BvcnQgKyAiKiIgKyBmYWJyaWNfbW9kX3BvcnQgKyAiID0gY29udGFpbmVyX29mKHd3bixcbiIKKwlidWYgKz0gIgkJCXN0cnVjdCAiICsgZmFicmljX21vZF9uYW1lICsgIl8iICsgZmFicmljX21vZF9wb3J0ICsgIiwgIiArIGZhYnJpY19tb2RfcG9ydCArICJfd3duKTtcblxuIgorCWJ1ZiArPSAiCXN0cnVjdCAiICsgZmFicmljX21vZF9uYW1lICsgIl90cGcgKnRwZztcbiIKKwlidWYgKz0gIgl1bnNpZ25lZCBsb25nIHRwZ3Q7XG4iCisJYnVmICs9ICIJaW50IHJldDtcblxuIgorCWJ1ZiArPSAiCWlmIChzdHJzdHIobmFtZSwgXCJ0cGd0X1wiKSAhPSBuYW1lKVxuIgorCWJ1ZiArPSAiCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbiIKKwlidWYgKz0gIglpZiAoa3N0cnRvdWwobmFtZSArIDUsIDEwLCAmdHBndCkgfHwgdHBndCA+IFVJTlRfTUFYKVxuIgorCWJ1ZiArPSAiCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcblxuIgorCWJ1ZiArPSAiCXRwZyA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCAiICsgZmFicmljX21vZF9uYW1lICsgIl90cGcpLCBHRlBfS0VSTkVMKTtcbiIKKwlidWYgKz0gIglpZiAoIXRwZykge1xuIgorCWJ1ZiArPSAiCQlwcmludGsoS0VSTl9FUlIgXCJVbmFibGUgdG8gYWxsb2NhdGUgc3RydWN0ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX3RwZ1wiKTtcbiIKKwlidWYgKz0gIgkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4iCisJYnVmICs9ICIJfVxuIgorCWJ1ZiArPSAiCXRwZy0+IiArIGZhYnJpY19tb2RfcG9ydCArICIgPSAiICsgZmFicmljX21vZF9wb3J0ICsgIjtcbiIKKwlidWYgKz0gIgl0cGctPiIgKyBmYWJyaWNfbW9kX3BvcnQgKyAiX3RwZ3QgPSB0cGd0O1xuXG4iCisKKwlpZiBwcm90b19pZGVudCA9PSAiRkMiOgorCQlidWYgKz0gIglyZXQgPSBjb3JlX3RwZ19yZWdpc3Rlcih3d24sICZ0cGctPnNlX3RwZywgU0NTSV9QUk9UT0NPTF9GQ1ApO1xuIgorCWVsaWYgcHJvdG9faWRlbnQgPT0gIlNBUyI6CisJCWJ1ZiArPSAiCXJldCA9IGNvcmVfdHBnX3JlZ2lzdGVyKHd3biwgJnRwZy0+c2VfdHBnLCBTQ1NJX1BST1RPQ09MX1NBUyk7XG4iCisJZWxpZiBwcm90b19pZGVudCA9PSAiaVNDU0kiOgorCQlidWYgKz0gIglyZXQgPSBjb3JlX3RwZ19yZWdpc3Rlcih3d24sICZ0cGctPnNlX3RwZywgU0NTSV9QUk9UT0NPTF9JU0NTSSk7XG4iCisKKwlidWYgKz0gIglpZiAocmV0IDwgMCkge1xuIgorCWJ1ZiArPSAiCQlrZnJlZSh0cGcpO1xuIgorCWJ1ZiArPSAiCQlyZXR1cm4gTlVMTDtcbiIKKwlidWYgKz0gIgl9XG4iCisJYnVmICs9ICIJcmV0dXJuICZ0cGctPnNlX3RwZztcbiIKKwlidWYgKz0gIn1cblxuIgorCWJ1ZiArPSAic3RhdGljIHZvaWQgIiArIGZhYnJpY19tb2RfbmFtZSArICJfZHJvcF90cGcoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnKVxuIgorCWJ1ZiArPSAie1xuIgorCWJ1ZiArPSAiCXN0cnVjdCAiICsgZmFicmljX21vZF9uYW1lICsgIl90cGcgKnRwZyA9IGNvbnRhaW5lcl9vZihzZV90cGcsXG4iCisJYnVmICs9ICIJCQkJc3RydWN0ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX3RwZywgc2VfdHBnKTtcblxuIgorCWJ1ZiArPSAiCWNvcmVfdHBnX2RlcmVnaXN0ZXIoc2VfdHBnKTtcbiIKKwlidWYgKz0gIglrZnJlZSh0cGcpO1xuIgorCWJ1ZiArPSAifVxuXG4iCisKKwlidWYgKz0gInN0YXRpYyBzdHJ1Y3Qgc2Vfd3duICoiICsgZmFicmljX21vZF9uYW1lICsgIl9tYWtlXyIgKyBmYWJyaWNfbW9kX3BvcnQgKyAiKFxuIgorCWJ1ZiArPSAiCXN0cnVjdCB0YXJnZXRfZmFicmljX2NvbmZpZ2ZzICp0ZixcbiIKKwlidWYgKz0gIglzdHJ1Y3QgY29uZmlnX2dyb3VwICpncm91cCxcbiIKKwlidWYgKz0gIgljb25zdCBjaGFyICpuYW1lKVxuIgorCWJ1ZiArPSAie1xuIgorCWJ1ZiArPSAiCXN0cnVjdCAiICsgZmFicmljX21vZF9uYW1lICsgIl8iICsgZmFicmljX21vZF9wb3J0ICsgIiAqIiArIGZhYnJpY19tb2RfcG9ydCArICI7XG4iCisKKwlpZiBwcm90b19pZGVudCA9PSAiRkMiIG9yIHByb3RvX2lkZW50ID09ICJTQVMiOgorCQlidWYgKz0gIgl1NjQgd3dwbiA9IDA7XG5cbiIKKworCWJ1ZiArPSAiCS8qIGlmICgiICsgZmFicmljX21vZF9uYW1lICsgIl9wYXJzZV93d24obmFtZSwgJnd3cG4sIDEpIDwgMClcbiIKKwlidWYgKz0gIgkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7ICovXG5cbiIKKwlidWYgKz0gIgkiICsgZmFicmljX21vZF9wb3J0ICsgIiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCAiICsgZmFicmljX21vZF9uYW1lICsgIl8iICsgZmFicmljX21vZF9wb3J0ICsgIiksIEdGUF9LRVJORUwpO1xuIgorCWJ1ZiArPSAiCWlmICghIiArIGZhYnJpY19tb2RfcG9ydCArICIpIHtcbiIKKwlidWYgKz0gIgkJcHJpbnRrKEtFUk5fRVJSIFwiVW5hYmxlIHRvIGFsbG9jYXRlIHN0cnVjdCAiICsgZmFicmljX21vZF9uYW1lICsgIl8iICsgZmFicmljX21vZF9wb3J0ICsgIlwiKTtcbiIKKwlidWYgKz0gIgkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4iCisJYnVmICs9ICIJfVxuIgorCisJaWYgcHJvdG9faWRlbnQgPT0gIkZDIiBvciBwcm90b19pZGVudCA9PSAiU0FTIjoKKwkJYnVmICs9ICIJIiArIGZhYnJpY19tb2RfcG9ydCArICItPiIgKyBmYWJyaWNfbW9kX3BvcnQgKyAiX3d3cG4gPSB3d3BuO1xuIgorCisJYnVmICs9ICIJLyogIiArIGZhYnJpY19tb2RfbmFtZSArICJfZm9ybWF0X3d3bigmIiArIGZhYnJpY19tb2RfcG9ydCArICItPiIgKyBmYWJyaWNfbW9kX3BvcnQgKyAiX25hbWVbMF0sICIgKyBmYWJyaWNfbW9kX25hbWUudXBwZXIoKSArICJfTkFNRUxFTiwgd3dwbik7ICovXG5cbiIKKwlidWYgKz0gIglyZXR1cm4gJiIgKyBmYWJyaWNfbW9kX3BvcnQgKyAiLT4iICsgZmFicmljX21vZF9wb3J0ICsgIl93d247XG4iCisJYnVmICs9ICJ9XG5cbiIKKwlidWYgKz0gInN0YXRpYyB2b2lkICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX2Ryb3BfIiArIGZhYnJpY19tb2RfcG9ydCArICIoc3RydWN0IHNlX3d3biAqd3duKVxuIgorCWJ1ZiArPSAie1xuIgorCWJ1ZiArPSAiCXN0cnVjdCAiICsgZmFicmljX21vZF9uYW1lICsgIl8iICsgZmFicmljX21vZF9wb3J0ICsgIiAqIiArIGZhYnJpY19tb2RfcG9ydCArICIgPSBjb250YWluZXJfb2Yod3duLFxuIgorCWJ1ZiArPSAiCQkJCXN0cnVjdCAiICsgZmFicmljX21vZF9uYW1lICsgIl8iICsgZmFicmljX21vZF9wb3J0ICsgIiwgIiArIGZhYnJpY19tb2RfcG9ydCArICJfd3duKTtcbiIKKwlidWYgKz0gIglrZnJlZSgiICsgZmFicmljX21vZF9wb3J0ICsgIik7XG4iCisJYnVmICs9ICJ9XG5cbiIKKworCWJ1ZiArPSAic3RhdGljIGNvbnN0IHN0cnVjdCB0YXJnZXRfY29yZV9mYWJyaWNfb3BzICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX29wcyA9IHtcbiIKKwlidWYgKz0gIgkubW9kdWxlCQkJCT0gVEhJU19NT0RVTEUsXG4iCisJYnVmICs9ICIJLm5hbWUJCQkJPSBcIiIgKyBmYWJyaWNfbW9kX25hbWUgKyAiXCIsXG4iCisJYnVmICs9ICIJLmdldF9mYWJyaWNfbmFtZQkJPSAiICsgZmFicmljX21vZF9uYW1lICsgIl9nZXRfZmFicmljX25hbWUsXG4iCisJYnVmICs9ICIJLnRwZ19nZXRfd3duCQkJPSAiICsgZmFicmljX21vZF9uYW1lICsgIl9nZXRfZmFicmljX3d3bixcbiIKKwlidWYgKz0gIgkudHBnX2dldF90YWcJCQk9ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX2dldF90YWcsXG4iCisJYnVmICs9ICIJLnRwZ19jaGVja19kZW1vX21vZGUJCT0gIiArIGZhYnJpY19tb2RfbmFtZSArICJfY2hlY2tfZmFsc2UsXG4iCisJYnVmICs9ICIJLnRwZ19jaGVja19kZW1vX21vZGVfY2FjaGUJPSAiICsgZmFicmljX21vZF9uYW1lICsgIl9jaGVja190cnVlLFxuIgorCWJ1ZiArPSAiCS50cGdfY2hlY2tfZGVtb19tb2RlX3dyaXRlX3Byb3RlY3QgPSAiICsgZmFicmljX21vZF9uYW1lICsgIl9jaGVja190cnVlLFxuIgorCWJ1ZiArPSAiCS50cGdfY2hlY2tfcHJvZF9tb2RlX3dyaXRlX3Byb3RlY3QgPSAiICsgZmFicmljX21vZF9uYW1lICsgIl9jaGVja19mYWxzZSxcbiIKKwlidWYgKz0gIgkudHBnX2dldF9pbnN0X2luZGV4CQk9ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX3RwZ19nZXRfaW5zdF9pbmRleCxcbiIKKwlidWYgKz0gIgkucmVsZWFzZV9jbWQJCQk9ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX3JlbGVhc2VfY21kLFxuIgorCWJ1ZiArPSAiCS5zaHV0ZG93bl9zZXNzaW9uCQk9ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX3NodXRkb3duX3Nlc3Npb24sXG4iCisJYnVmICs9ICIJLmNsb3NlX3Nlc3Npb24JCQk9ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX2Nsb3NlX3Nlc3Npb24sXG4iCisJYnVmICs9ICIJLnNlc3NfZ2V0X2luZGV4CQkJPSAiICsgZmFicmljX21vZF9uYW1lICsgIl9zZXNzX2dldF9pbmRleCxcbiIKKwlidWYgKz0gIgkuc2Vzc19nZXRfaW5pdGlhdG9yX3NpZAkJPSBOVUxMLFxuIgorCWJ1ZiArPSAiCS53cml0ZV9wZW5kaW5nCQkJPSAiICsgZmFicmljX21vZF9uYW1lICsgIl93cml0ZV9wZW5kaW5nLFxuIgorCWJ1ZiArPSAiCS53cml0ZV9wZW5kaW5nX3N0YXR1cwkJPSAiICsgZmFicmljX21vZF9uYW1lICsgIl93cml0ZV9wZW5kaW5nX3N0YXR1cyxcbiIKKwlidWYgKz0gIgkuc2V0X2RlZmF1bHRfbm9kZV9hdHRyaWJ1dGVzCT0gIiArIGZhYnJpY19tb2RfbmFtZSArICJfc2V0X2RlZmF1bHRfbm9kZV9hdHRycyxcbiIKKwlidWYgKz0gIgkuZ2V0X2NtZF9zdGF0ZQkJCT0gIiArIGZhYnJpY19tb2RfbmFtZSArICJfZ2V0X2NtZF9zdGF0ZSxcbiIKKwlidWYgKz0gIgkucXVldWVfZGF0YV9pbgkJCT0gIiArIGZhYnJpY19tb2RfbmFtZSArICJfcXVldWVfZGF0YV9pbixcbiIKKwlidWYgKz0gIgkucXVldWVfc3RhdHVzCQkJPSAiICsgZmFicmljX21vZF9uYW1lICsgIl9xdWV1ZV9zdGF0dXMsXG4iCisJYnVmICs9ICIJLnF1ZXVlX3RtX3JzcAkJCT0gIiArIGZhYnJpY19tb2RfbmFtZSArICJfcXVldWVfdG1fcnNwLFxuIgorCWJ1ZiArPSAiCS5hYm9ydGVkX3Rhc2sJCQk9ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX2Fib3J0ZWRfdGFzayxcbiIKKwlidWYgKz0gIgkvKlxuIgorCWJ1ZiArPSAiCSAqIFNldHVwIGZ1bmN0aW9uIHBvaW50ZXJzIGZvciBnZW5lcmljIGxvZ2ljIGluIHRhcmdldF9jb3JlX2ZhYnJpY19jb25maWdmcy5jXG4iCisJYnVmICs9ICIJICovXG4iCisJYnVmICs9ICIJLmZhYnJpY19tYWtlX3d3bgkJPSAiICsgZmFicmljX21vZF9uYW1lICsgIl9tYWtlXyIgKyBmYWJyaWNfbW9kX3BvcnQgKyAiLFxuIgorCWJ1ZiArPSAiCS5mYWJyaWNfZHJvcF93d24JCT0gIiArIGZhYnJpY19tb2RfbmFtZSArICJfZHJvcF8iICsgZmFicmljX21vZF9wb3J0ICsgIixcbiIKKwlidWYgKz0gIgkuZmFicmljX21ha2VfdHBnCQk9ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX21ha2VfdHBnLFxuIgorCWJ1ZiArPSAiCS5mYWJyaWNfZHJvcF90cGcJCT0gIiArIGZhYnJpY19tb2RfbmFtZSArICJfZHJvcF90cGcsXG4iCisJYnVmICs9ICJ9O1xuXG4iCisKKwlidWYgKz0gInN0YXRpYyBpbnQgX19pbml0ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX2luaXQodm9pZClcbiIKKwlidWYgKz0gIntcbiIKKwlidWYgKz0gIglyZXR1cm4gdGFyZ2V0X3JlZ2lzdGVyX3RlbXBsYXRlKCYiICsgZmFicmljX21vZF9uYW1lICsgIl9vcHMpO1xuIgorCWJ1ZiArPSAifTtcblxuIgorCisJYnVmICs9ICJzdGF0aWMgdm9pZCBfX2V4aXQgIiArIGZhYnJpY19tb2RfbmFtZSArICJfZXhpdCh2b2lkKVxuIgorCWJ1ZiArPSAie1xuIgorCWJ1ZiArPSAiCXRhcmdldF91bnJlZ2lzdGVyX3RlbXBsYXRlKCYiICsgZmFicmljX21vZF9uYW1lICsgIl9vcHMpO1xuIgorCWJ1ZiArPSAifTtcblxuIgorCisJYnVmICs9ICJNT0RVTEVfREVTQ1JJUFRJT04oXCIiICsgZmFicmljX21vZF9uYW1lLnVwcGVyKCkgKyAiIHNlcmllcyBmYWJyaWMgZHJpdmVyXCIpO1xuIgorCWJ1ZiArPSAiTU9EVUxFX0xJQ0VOU0UoXCJHUExcIik7XG4iCisJYnVmICs9ICJtb2R1bGVfaW5pdCgiICsgZmFicmljX21vZF9uYW1lICsgIl9pbml0KTtcbiIKKwlidWYgKz0gIm1vZHVsZV9leGl0KCIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX2V4aXQpO1xuIgorCisJcmV0ID0gcC53cml0ZShidWYpCisJaWYgcmV0OgorCQl0Y21fbW9kX2VycigiVW5hYmxlIHRvIHdyaXRlIGY6ICIgKyBmKQorCisJcC5jbG9zZSgpCisKKwlyZXR1cm4KKworZGVmIHRjbV9tb2Rfc2Nhbl9mYWJyaWNfb3BzKHRjbV9kaXIpOgorCisJZmFicmljX29wc19hcGkgPSB0Y21fZGlyICsgImluY2x1ZGUvdGFyZ2V0L3RhcmdldF9jb3JlX2ZhYnJpYy5oIgorCisJcHJpbnQgIlVzaW5nIHRjbV9tb2Rfc2Nhbl9mYWJyaWNfb3BzOiAiICsgZmFicmljX29wc19hcGkKKwlwcm9jZXNzX2ZvID0gMDsKKworCXAgPSBvcGVuKGZhYnJpY19vcHNfYXBpLCAncicpCisKKwlsaW5lID0gcC5yZWFkbGluZSgpCisJd2hpbGUgbGluZToKKwkJaWYgcHJvY2Vzc19mbyA9PSAwIGFuZCByZS5zZWFyY2goJ3N0cnVjdCB0YXJnZXRfY29yZV9mYWJyaWNfb3BzIHsnLCBsaW5lKToKKwkJCWxpbmUgPSBwLnJlYWRsaW5lKCkKKwkJCWNvbnRpbnVlCisKKwkJaWYgcHJvY2Vzc19mbyA9PSAwOgorCQkJcHJvY2Vzc19mbyA9IDE7CisJCQlsaW5lID0gcC5yZWFkbGluZSgpCisJCQkjIFNlYXJjaCBmb3IgZnVuY3Rpb24gcG9pbnRlcgorCQkJaWYgbm90IHJlLnNlYXJjaCgnXChcKicsIGxpbmUpOgorCQkJCWNvbnRpbnVlCisKKwkJCWZhYnJpY19vcHMuYXBwZW5kKGxpbmUucnN0cmlwKCkpCisJCQljb250aW51ZQorCisJCWxpbmUgPSBwLnJlYWRsaW5lKCkKKwkJIyBTZWFyY2ggZm9yIGZ1bmN0aW9uIHBvaW50ZXIKKwkJaWYgbm90IHJlLnNlYXJjaCgnXChcKicsIGxpbmUpOgorCQkJY29udGludWUKKworCQlmYWJyaWNfb3BzLmFwcGVuZChsaW5lLnJzdHJpcCgpKQorCisJcC5jbG9zZSgpCisJcmV0dXJuCisKK2RlZiB0Y21fbW9kX2R1bXBfZmFicmljX29wcyhwcm90b19pZGVudCwgZmFicmljX21vZF9kaXJfdmFyLCBmYWJyaWNfbW9kX25hbWUpOgorCWJ1ZiA9ICIiCisJYnVmaSA9ICIiCisKKwlmID0gZmFicmljX21vZF9kaXJfdmFyICsgIi8iICsgZmFicmljX21vZF9uYW1lICsgIl9mYWJyaWMuYyIKKwlwcmludCAiV3JpdGluZyBmaWxlOiAiICsgZgorCisJcCA9IG9wZW4oZiwgJ3cnKQorCWlmIG5vdCBwOgorCQl0Y21fbW9kX2VycigiVW5hYmxlIHRvIG9wZW4gZmlsZTogIiArIGYpCisKKwlmaSA9IGZhYnJpY19tb2RfZGlyX3ZhciArICIvIiArIGZhYnJpY19tb2RfbmFtZSArICJfZmFicmljLmgiCisJcHJpbnQgIldyaXRpbmcgZmlsZTogIiArIGZpCisKKwlwaSA9IG9wZW4oZmksICd3JykKKwlpZiBub3QgcGk6CisJCXRjbV9tb2RfZXJyKCJVbmFibGUgdG8gb3BlbiBmaWxlOiAiICsgZmkpCisKKwlidWYgPSAiI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD5cbiIKKwlidWYgKz0gIiNpbmNsdWRlIDxsaW51eC9rdGhyZWFkLmg+XG4iCisJYnVmICs9ICIjaW5jbHVkZSA8bGludXgvdHlwZXMuaD5cbiIKKwlidWYgKz0gIiNpbmNsdWRlIDxsaW51eC9saXN0Lmg+XG4iCisJYnVmICs9ICIjaW5jbHVkZSA8bGludXgvdHlwZXMuaD5cbiIKKwlidWYgKz0gIiNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD5cbiIKKwlidWYgKz0gIiNpbmNsdWRlIDxsaW51eC9jdHlwZS5oPlxuIgorCWJ1ZiArPSAiI2luY2x1ZGUgPGFzbS91bmFsaWduZWQuaD5cbiIKKwlidWYgKz0gIiNpbmNsdWRlIDxzY3NpL3Njc2lfY29tbW9uLmg+XG4iCisJYnVmICs9ICIjaW5jbHVkZSA8c2NzaS9zY3NpX3Byb3RvLmg+XG4iCisJYnVmICs9ICIjaW5jbHVkZSA8dGFyZ2V0L3RhcmdldF9jb3JlX2Jhc2UuaD5cbiIKKwlidWYgKz0gIiNpbmNsdWRlIDx0YXJnZXQvdGFyZ2V0X2NvcmVfZmFicmljLmg+XG4iCisJYnVmICs9ICIjaW5jbHVkZSBcIiIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX2Jhc2UuaFwiXG4iCisJYnVmICs9ICIjaW5jbHVkZSBcIiIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX2ZhYnJpYy5oXCJcblxuIgorCisJYnVmICs9ICJpbnQgIiArIGZhYnJpY19tb2RfbmFtZSArICJfY2hlY2tfdHJ1ZShzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXG4iCisJYnVmICs9ICJ7XG4iCisJYnVmICs9ICIJcmV0dXJuIDE7XG4iCisJYnVmICs9ICJ9XG5cbiIKKwlidWZpICs9ICJpbnQgIiArIGZhYnJpY19tb2RfbmFtZSArICJfY2hlY2tfdHJ1ZShzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICopO1xuIgorCisJYnVmICs9ICJpbnQgIiArIGZhYnJpY19tb2RfbmFtZSArICJfY2hlY2tfZmFsc2Uoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnKVxuIgorCWJ1ZiArPSAie1xuIgorCWJ1ZiArPSAiCXJldHVybiAwO1xuIgorCWJ1ZiArPSAifVxuXG4iCisJYnVmaSArPSAiaW50ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX2NoZWNrX2ZhbHNlKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKik7XG4iCisKKwl0b3RhbF9mYWJyaWNfb3BzID0gbGVuKGZhYnJpY19vcHMpCisJaSA9IDAKKworCXdoaWxlIGkgPCB0b3RhbF9mYWJyaWNfb3BzOgorCQlmbyA9IGZhYnJpY19vcHNbaV0KKwkJaSArPSAxCisjCQlwcmludCAiZmFicmljX29wczogIiArIGZvCisKKwkJaWYgcmUuc2VhcmNoKCdnZXRfZmFicmljX25hbWUnLCBmbyk6CisJCQlidWYgKz0gImNoYXIgKiIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX2dldF9mYWJyaWNfbmFtZSh2b2lkKVxuIgorCQkJYnVmICs9ICJ7XG4iCisJCQlidWYgKz0gIglyZXR1cm4gXCIiICsgZmFicmljX21vZF9uYW1lICsgIlwiO1xuIgorCQkJYnVmICs9ICJ9XG5cbiIKKwkJCWJ1ZmkgKz0gImNoYXIgKiIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX2dldF9mYWJyaWNfbmFtZSh2b2lkKTtcbiIKKwkJCWNvbnRpbnVlCisKKwkJaWYgcmUuc2VhcmNoKCdnZXRfd3duJywgZm8pOgorCQkJYnVmICs9ICJjaGFyICoiICsgZmFicmljX21vZF9uYW1lICsgIl9nZXRfZmFicmljX3d3bihzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICpzZV90cGcpXG4iCisJCQlidWYgKz0gIntcbiIKKwkJCWJ1ZiArPSAiCXN0cnVjdCAiICsgZmFicmljX21vZF9uYW1lICsgIl90cGcgKnRwZyA9IGNvbnRhaW5lcl9vZihzZV90cGcsXG4iCisJCQlidWYgKz0gIgkJCQlzdHJ1Y3QgIiArIGZhYnJpY19tb2RfbmFtZSArICJfdHBnLCBzZV90cGcpO1xuIgorCQkJYnVmICs9ICIJc3RydWN0ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiXyIgKyBmYWJyaWNfbW9kX3BvcnQgKyAiICoiICsgZmFicmljX21vZF9wb3J0ICsgIiA9IHRwZy0+IiArIGZhYnJpY19tb2RfcG9ydCArICI7XG5cbiIKKwkJCWJ1ZiArPSAiCXJldHVybiAmIiArIGZhYnJpY19tb2RfcG9ydCArICItPiIgKyBmYWJyaWNfbW9kX3BvcnQgKyAiX25hbWVbMF07XG4iCisJCQlidWYgKz0gIn1cblxuIgorCQkJYnVmaSArPSAiY2hhciAqIiArIGZhYnJpY19tb2RfbmFtZSArICJfZ2V0X2ZhYnJpY193d24oc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqKTtcbiIKKworCQlpZiByZS5zZWFyY2goJ2dldF90YWcnLCBmbyk6CisJCQlidWYgKz0gInUxNiAiICsgZmFicmljX21vZF9uYW1lICsgIl9nZXRfdGFnKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZylcbiIKKwkJCWJ1ZiArPSAie1xuIgorCQkJYnVmICs9ICIJc3RydWN0ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX3RwZyAqdHBnID0gY29udGFpbmVyX29mKHNlX3RwZyxcbiIKKwkJCWJ1ZiArPSAiCQkJCXN0cnVjdCAiICsgZmFicmljX21vZF9uYW1lICsgIl90cGcsIHNlX3RwZyk7XG4iCisJCQlidWYgKz0gIglyZXR1cm4gdHBnLT4iICsgZmFicmljX21vZF9wb3J0ICsgIl90cGd0O1xuIgorCQkJYnVmICs9ICJ9XG5cbiIKKwkJCWJ1ZmkgKz0gInUxNiAiICsgZmFicmljX21vZF9uYW1lICsgIl9nZXRfdGFnKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKik7XG4iCisKKwkJaWYgcmUuc2VhcmNoKCd0cGdfZ2V0X2luc3RfaW5kZXhcKVwoJywgZm8pOgorCQkJYnVmICs9ICJ1MzIgIiArIGZhYnJpY19tb2RfbmFtZSArICJfdHBnX2dldF9pbnN0X2luZGV4KHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZylcbiIKKwkJCWJ1ZiArPSAie1xuIgorCQkJYnVmICs9ICIJcmV0dXJuIDE7XG4iCisJCQlidWYgKz0gIn1cblxuIgorCQkJYnVmaSArPSAidTMyICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX3RwZ19nZXRfaW5zdF9pbmRleChzdHJ1Y3Qgc2VfcG9ydGFsX2dyb3VwICopO1xuIgorCisJCWlmIHJlLnNlYXJjaCgnXCpyZWxlYXNlX2NtZFwpXCgnLCBmbyk6CisJCQlidWYgKz0gInZvaWQgIiArIGZhYnJpY19tb2RfbmFtZSArICJfcmVsZWFzZV9jbWQoc3RydWN0IHNlX2NtZCAqc2VfY21kKVxuIgorCQkJYnVmICs9ICJ7XG4iCisJCQlidWYgKz0gIglyZXR1cm47XG4iCisJCQlidWYgKz0gIn1cblxuIgorCQkJYnVmaSArPSAidm9pZCAiICsgZmFicmljX21vZF9uYW1lICsgIl9yZWxlYXNlX2NtZChzdHJ1Y3Qgc2VfY21kICopO1xuIgorCisJCWlmIHJlLnNlYXJjaCgnc2h1dGRvd25fc2Vzc2lvblwpXCgnLCBmbyk6CisJCQlidWYgKz0gImludCAiICsgZmFicmljX21vZF9uYW1lICsgIl9zaHV0ZG93bl9zZXNzaW9uKHN0cnVjdCBzZV9zZXNzaW9uICpzZV9zZXNzKVxuIgorCQkJYnVmICs9ICJ7XG4iCisJCQlidWYgKz0gIglyZXR1cm4gMDtcbiIKKwkJCWJ1ZiArPSAifVxuXG4iCisJCQlidWZpICs9ICJpbnQgIiArIGZhYnJpY19tb2RfbmFtZSArICJfc2h1dGRvd25fc2Vzc2lvbihzdHJ1Y3Qgc2Vfc2Vzc2lvbiAqKTtcbiIKKworCQlpZiByZS5zZWFyY2goJ2Nsb3NlX3Nlc3Npb25cKVwoJywgZm8pOgorCQkJYnVmICs9ICJ2b2lkICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX2Nsb3NlX3Nlc3Npb24oc3RydWN0IHNlX3Nlc3Npb24gKnNlX3Nlc3MpXG4iCisJCQlidWYgKz0gIntcbiIKKwkJCWJ1ZiArPSAiCXJldHVybjtcbiIKKwkJCWJ1ZiArPSAifVxuXG4iCisJCQlidWZpICs9ICJ2b2lkICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX2Nsb3NlX3Nlc3Npb24oc3RydWN0IHNlX3Nlc3Npb24gKik7XG4iCisKKwkJaWYgcmUuc2VhcmNoKCdzZXNzX2dldF9pbmRleFwpXCgnLCBmbyk6CisJCQlidWYgKz0gInUzMiAiICsgZmFicmljX21vZF9uYW1lICsgIl9zZXNzX2dldF9pbmRleChzdHJ1Y3Qgc2Vfc2Vzc2lvbiAqc2Vfc2VzcylcbiIKKwkJCWJ1ZiArPSAie1xuIgorCQkJYnVmICs9ICIJcmV0dXJuIDA7XG4iCisJCQlidWYgKz0gIn1cblxuIgorCQkJYnVmaSArPSAidTMyICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX3Nlc3NfZ2V0X2luZGV4KHN0cnVjdCBzZV9zZXNzaW9uICopO1xuIgorCisJCWlmIHJlLnNlYXJjaCgnd3JpdGVfcGVuZGluZ1wpXCgnLCBmbyk6CisJCQlidWYgKz0gImludCAiICsgZmFicmljX21vZF9uYW1lICsgIl93cml0ZV9wZW5kaW5nKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcbiIKKwkJCWJ1ZiArPSAie1xuIgorCQkJYnVmICs9ICIJcmV0dXJuIDA7XG4iCisJCQlidWYgKz0gIn1cblxuIgorCQkJYnVmaSArPSAiaW50ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX3dyaXRlX3BlbmRpbmcoc3RydWN0IHNlX2NtZCAqKTtcbiIKKworCQlpZiByZS5zZWFyY2goJ3dyaXRlX3BlbmRpbmdfc3RhdHVzXClcKCcsIGZvKToKKwkJCWJ1ZiArPSAiaW50ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX3dyaXRlX3BlbmRpbmdfc3RhdHVzKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcbiIKKwkJCWJ1ZiArPSAie1xuIgorCQkJYnVmICs9ICIJcmV0dXJuIDA7XG4iCisJCQlidWYgKz0gIn1cblxuIgorCQkJYnVmaSArPSAiaW50ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX3dyaXRlX3BlbmRpbmdfc3RhdHVzKHN0cnVjdCBzZV9jbWQgKik7XG4iCisKKwkJaWYgcmUuc2VhcmNoKCdzZXRfZGVmYXVsdF9ub2RlX2F0dHJpYnV0ZXNcKVwoJywgZm8pOgorCQkJYnVmICs9ICJ2b2lkICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX3NldF9kZWZhdWx0X25vZGVfYXR0cnMoc3RydWN0IHNlX25vZGVfYWNsICpuYWNsKVxuIgorCQkJYnVmICs9ICJ7XG4iCisJCQlidWYgKz0gIglyZXR1cm47XG4iCisJCQlidWYgKz0gIn1cblxuIgorCQkJYnVmaSArPSAidm9pZCAiICsgZmFicmljX21vZF9uYW1lICsgIl9zZXRfZGVmYXVsdF9ub2RlX2F0dHJzKHN0cnVjdCBzZV9ub2RlX2FjbCAqKTtcbiIKKworCQlpZiByZS5zZWFyY2goJ2dldF9jbWRfc3RhdGVcKVwoJywgZm8pOgorCQkJYnVmICs9ICJpbnQgIiArIGZhYnJpY19tb2RfbmFtZSArICJfZ2V0X2NtZF9zdGF0ZShzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXG4iCisJCQlidWYgKz0gIntcbiIKKwkJCWJ1ZiArPSAiCXJldHVybiAwO1xuIgorCQkJYnVmICs9ICJ9XG5cbiIKKwkJCWJ1ZmkgKz0gImludCAiICsgZmFicmljX21vZF9uYW1lICsgIl9nZXRfY21kX3N0YXRlKHN0cnVjdCBzZV9jbWQgKik7XG4iCisKKwkJaWYgcmUuc2VhcmNoKCdxdWV1ZV9kYXRhX2luXClcKCcsIGZvKToKKwkJCWJ1ZiArPSAiaW50ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX3F1ZXVlX2RhdGFfaW4oc3RydWN0IHNlX2NtZCAqc2VfY21kKVxuIgorCQkJYnVmICs9ICJ7XG4iCisJCQlidWYgKz0gIglyZXR1cm4gMDtcbiIKKwkJCWJ1ZiArPSAifVxuXG4iCisJCQlidWZpICs9ICJpbnQgIiArIGZhYnJpY19tb2RfbmFtZSArICJfcXVldWVfZGF0YV9pbihzdHJ1Y3Qgc2VfY21kICopO1xuIgorCisJCWlmIHJlLnNlYXJjaCgncXVldWVfc3RhdHVzXClcKCcsIGZvKToKKwkJCWJ1ZiArPSAiaW50ICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX3F1ZXVlX3N0YXR1cyhzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXG4iCisJCQlidWYgKz0gIntcbiIKKwkJCWJ1ZiArPSAiCXJldHVybiAwO1xuIgorCQkJYnVmICs9ICJ9XG5cbiIKKwkJCWJ1ZmkgKz0gImludCAiICsgZmFicmljX21vZF9uYW1lICsgIl9xdWV1ZV9zdGF0dXMoc3RydWN0IHNlX2NtZCAqKTtcbiIKKworCQlpZiByZS5zZWFyY2goJ3F1ZXVlX3RtX3JzcFwpXCgnLCBmbyk6CisJCQlidWYgKz0gInZvaWQgIiArIGZhYnJpY19tb2RfbmFtZSArICJfcXVldWVfdG1fcnNwKHN0cnVjdCBzZV9jbWQgKnNlX2NtZClcbiIKKwkJCWJ1ZiArPSAie1xuIgorCQkJYnVmICs9ICIJcmV0dXJuO1xuIgorCQkJYnVmICs9ICJ9XG5cbiIKKwkJCWJ1ZmkgKz0gInZvaWQgIiArIGZhYnJpY19tb2RfbmFtZSArICJfcXVldWVfdG1fcnNwKHN0cnVjdCBzZV9jbWQgKik7XG4iCisKKwkJaWYgcmUuc2VhcmNoKCdhYm9ydGVkX3Rhc2tcKVwoJywgZm8pOgorCQkJYnVmICs9ICJ2b2lkICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX2Fib3J0ZWRfdGFzayhzdHJ1Y3Qgc2VfY21kICpzZV9jbWQpXG4iCisJCQlidWYgKz0gIntcbiIKKwkJCWJ1ZiArPSAiCXJldHVybjtcbiIKKwkJCWJ1ZiArPSAifVxuXG4iCisJCQlidWZpICs9ICJ2b2lkICIgKyBmYWJyaWNfbW9kX25hbWUgKyAiX2Fib3J0ZWRfdGFzayhzdHJ1Y3Qgc2VfY21kICopO1xuIgorCisJcmV0ID0gcC53cml0ZShidWYpCisJaWYgcmV0OgorCQl0Y21fbW9kX2VycigiVW5hYmxlIHRvIHdyaXRlIGY6ICIgKyBmKQorCisJcC5jbG9zZSgpCisKKwlyZXQgPSBwaS53cml0ZShidWZpKQorCWlmIHJldDoKKwkJdGNtX21vZF9lcnIoIlVuYWJsZSB0byB3cml0ZSBmaTogIiArIGZpKQorCisJcGkuY2xvc2UoKQorCXJldHVybgorCitkZWYgdGNtX21vZF9idWlsZF9rYnVpbGQoZmFicmljX21vZF9kaXJfdmFyLCBmYWJyaWNfbW9kX25hbWUpOgorCisJYnVmID0gIiIKKwlmID0gZmFicmljX21vZF9kaXJfdmFyICsgIi9NYWtlZmlsZSIKKwlwcmludCAiV3JpdGluZyBmaWxlOiAiICsgZgorCisJcCA9IG9wZW4oZiwgJ3cnKQorCWlmIG5vdCBwOgorCQl0Y21fbW9kX2VycigiVW5hYmxlIHRvIG9wZW4gZmlsZTogIiArIGYpCisKKwlidWYgKz0gZmFicmljX21vZF9uYW1lICsgIi1vYmpzCQkJOj0gIiArIGZhYnJpY19tb2RfbmFtZSArICJfZmFicmljLm8gXFxcbiIKKwlidWYgKz0gIgkJCQkJICAgIiArIGZhYnJpY19tb2RfbmFtZSArICJfY29uZmlnZnMub1xuIgorCWJ1ZiArPSAib2JqLSQoQ09ORklHXyIgKyBmYWJyaWNfbW9kX25hbWUudXBwZXIoKSArICIpCQkrPSAiICsgZmFicmljX21vZF9uYW1lICsgIi5vXG4iCisKKwlyZXQgPSBwLndyaXRlKGJ1ZikKKwlpZiByZXQ6CisJCXRjbV9tb2RfZXJyKCJVbmFibGUgdG8gd3JpdGUgZjogIiArIGYpCisKKwlwLmNsb3NlKCkKKwlyZXR1cm4KKworZGVmIHRjbV9tb2RfYnVpbGRfa2NvbmZpZyhmYWJyaWNfbW9kX2Rpcl92YXIsIGZhYnJpY19tb2RfbmFtZSk6CisKKwlidWYgPSAiIgorCWYgPSBmYWJyaWNfbW9kX2Rpcl92YXIgKyAiL0tjb25maWciCisJcHJpbnQgIldyaXRpbmcgZmlsZTogIiArIGYKKworCXAgPSBvcGVuKGYsICd3JykKKwlpZiBub3QgcDoKKwkJdGNtX21vZF9lcnIoIlVuYWJsZSB0byBvcGVuIGZpbGU6ICIgKyBmKQorCisJYnVmID0gImNvbmZpZyAiICsgZmFicmljX21vZF9uYW1lLnVwcGVyKCkgKyAiXG4iCisJYnVmICs9ICIJdHJpc3RhdGUgXCIiICsgZmFicmljX21vZF9uYW1lLnVwcGVyKCkgKyAiIGZhYnJpYyBtb2R1bGVcIlxuIgorCWJ1ZiArPSAiCWRlcGVuZHMgb24gVEFSR0VUX0NPUkUgJiYgQ09ORklHRlNfRlNcbiIKKwlidWYgKz0gIglkZWZhdWx0IG5cbiIKKwlidWYgKz0gIgktLS1oZWxwLS0tXG4iCisJYnVmICs9ICIJU2F5IFkgaGVyZSB0byBlbmFibGUgdGhlICIgKyBmYWJyaWNfbW9kX25hbWUudXBwZXIoKSArICIgZmFicmljIG1vZHVsZVxuIgorCisJcmV0ID0gcC53cml0ZShidWYpCisJaWYgcmV0OgorCQl0Y21fbW9kX2VycigiVW5hYmxlIHRvIHdyaXRlIGY6ICIgKyBmKQorCisJcC5jbG9zZSgpCisJcmV0dXJuCisKK2RlZiB0Y21fbW9kX2FkZF9rYnVpbGQodGNtX2RpciwgZmFicmljX21vZF9uYW1lKToKKwlidWYgPSAib2JqLSQoQ09ORklHXyIgKyBmYWJyaWNfbW9kX25hbWUudXBwZXIoKSArICIpCSs9ICIgKyBmYWJyaWNfbW9kX25hbWUubG93ZXIoKSArICIvXG4iCisJa2J1aWxkID0gdGNtX2RpciArICIvZHJpdmVycy90YXJnZXQvTWFrZWZpbGUiCisKKwlmID0gb3BlbihrYnVpbGQsICdhJykKKwlmLndyaXRlKGJ1ZikKKwlmLmNsb3NlKCkKKwlyZXR1cm4KKworZGVmIHRjbV9tb2RfYWRkX2tjb25maWcodGNtX2RpciwgZmFicmljX21vZF9uYW1lKToKKwlidWYgPSAic291cmNlIFwiZHJpdmVycy90YXJnZXQvIiArIGZhYnJpY19tb2RfbmFtZS5sb3dlcigpICsgIi9LY29uZmlnXCJcbiIKKwlrY29uZmlnID0gdGNtX2RpciArICIvZHJpdmVycy90YXJnZXQvS2NvbmZpZyIKKworCWYgPSBvcGVuKGtjb25maWcsICdhJykKKwlmLndyaXRlKGJ1ZikKKwlmLmNsb3NlKCkKKwlyZXR1cm4KKworZGVmIG1haW4obW9kbmFtZSwgcHJvdG9faWRlbnQpOgorIwlwcm90b19pZGVudCA9ICJGQyIKKyMJcHJvdG9faWRlbnQgPSAiU0FTIgorIwlwcm90b19pZGVudCA9ICJpU0NTSSIKKworCXRjbV9kaXIgPSBvcy5nZXRjd2QoKTsKKwl0Y21fZGlyICs9ICIvLi4vLi4vIgorCXByaW50ICJ0Y21fZGlyOiAiICsgdGNtX2RpcgorCWZhYnJpY19tb2RfbmFtZSA9IG1vZG5hbWUKKwlmYWJyaWNfbW9kX2RpciA9IHRjbV9kaXIgKyAiZHJpdmVycy90YXJnZXQvIiArIGZhYnJpY19tb2RfbmFtZQorCXByaW50ICJTZXQgZmFicmljX21vZF9uYW1lOiAiICsgZmFicmljX21vZF9uYW1lCisJcHJpbnQgIlNldCBmYWJyaWNfbW9kX2RpcjogIiArIGZhYnJpY19tb2RfZGlyCisJcHJpbnQgIlVzaW5nIHByb3RvX2lkZW50OiAiICsgcHJvdG9faWRlbnQKKworCWlmIHByb3RvX2lkZW50ICE9ICJGQyIgYW5kIHByb3RvX2lkZW50ICE9ICJTQVMiIGFuZCBwcm90b19pZGVudCAhPSAiaVNDU0kiOgorCQlwcmludCAiVW5zdXBwb3J0ZWQgcHJvdG9faWRlbnQ6ICIgKyBwcm90b19pZGVudAorCQlzeXMuZXhpdCgxKQorCisJcmV0ID0gdGNtX21vZF9jcmVhdGVfbW9kdWxlX3N1YmRpcihmYWJyaWNfbW9kX2RpcikKKwlpZiByZXQ6CisJCXByaW50ICJ0Y21fbW9kX2NyZWF0ZV9tb2R1bGVfc3ViZGlyKCkgZmFpbGVkIGJlY2F1c2UgbW9kdWxlIGFscmVhZHkgZXhpc3RzISIKKwkJc3lzLmV4aXQoMSkKKworCXRjbV9tb2RfYnVpbGRfYmFzZV9pbmNsdWRlcyhwcm90b19pZGVudCwgZmFicmljX21vZF9kaXIsIGZhYnJpY19tb2RfbmFtZSkKKwl0Y21fbW9kX3NjYW5fZmFicmljX29wcyh0Y21fZGlyKQorCXRjbV9tb2RfZHVtcF9mYWJyaWNfb3BzKHByb3RvX2lkZW50LCBmYWJyaWNfbW9kX2RpciwgZmFicmljX21vZF9uYW1lKQorCXRjbV9tb2RfYnVpbGRfY29uZmlnZnMocHJvdG9faWRlbnQsIGZhYnJpY19tb2RfZGlyLCBmYWJyaWNfbW9kX25hbWUpCisJdGNtX21vZF9idWlsZF9rYnVpbGQoZmFicmljX21vZF9kaXIsIGZhYnJpY19tb2RfbmFtZSkKKwl0Y21fbW9kX2J1aWxkX2tjb25maWcoZmFicmljX21vZF9kaXIsIGZhYnJpY19tb2RfbmFtZSkKKworCWlucHV0ID0gcmF3X2lucHV0KCJXb3VsZCB5b3UgbGlrZSB0byBhZGQgIiArIGZhYnJpY19tb2RfbmFtZSArICIgdG8gZHJpdmVycy90YXJnZXQvTWFrZWZpbGUuLj8gW3llcyxub106ICIpCisJaWYgaW5wdXQgPT0gInllcyIgb3IgaW5wdXQgPT0gInkiOgorCQl0Y21fbW9kX2FkZF9rYnVpbGQodGNtX2RpciwgZmFicmljX21vZF9uYW1lKQorCisJaW5wdXQgPSByYXdfaW5wdXQoIldvdWxkIHlvdSBsaWtlIHRvIGFkZCAiICsgZmFicmljX21vZF9uYW1lICsgIiB0byBkcml2ZXJzL3RhcmdldC9LY29uZmlnLi4/IFt5ZXMsbm9dOiAiKQorCWlmIGlucHV0ID09ICJ5ZXMiIG9yIGlucHV0ID09ICJ5IjoKKwkJdGNtX21vZF9hZGRfa2NvbmZpZyh0Y21fZGlyLCBmYWJyaWNfbW9kX25hbWUpCisKKwlyZXR1cm4KKworcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKK3BhcnNlci5hZGRfb3B0aW9uKCctbScsICctLW1vZHVsZW5hbWUnLCBoZWxwPSdNb2R1bGUgbmFtZScsIGRlc3Q9J21vZG5hbWUnLAorCQlhY3Rpb249J3N0b3JlJywgbmFyZ3M9MSwgdHlwZT0nc3RyaW5nJykKK3BhcnNlci5hZGRfb3B0aW9uKCctcCcsICctLXByb3RvaWRlbnQnLCBoZWxwPSdQcm90b2NvbCBJZGVudCcsIGRlc3Q9J3Byb3RvaWRlbnQnLAorCQlhY3Rpb249J3N0b3JlJywgbmFyZ3M9MSwgdHlwZT0nc3RyaW5nJykKKworKG9wdHMsIGFyZ3MpID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCittYW5kYXRvcmllcyA9IFsnbW9kbmFtZScsICdwcm90b2lkZW50J10KK2ZvciBtIGluIG1hbmRhdG9yaWVzOgorCWlmIG5vdCBvcHRzLl9fZGljdF9fW21dOgorCQlwcmludCAibWFuZGF0b3J5IG9wdGlvbiBpcyBtaXNzaW5nXG4iCisJCXBhcnNlci5wcmludF9oZWxwKCkKKwkJZXhpdCgtMSkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKworCW1haW4oc3RyKG9wdHMubW9kbmFtZSksIG9wdHMucHJvdG9pZGVudCkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGFyZ2V0L3RjbV9tb2RfYnVpbGRlci50eHQgYi9Eb2N1bWVudGF0aW9uL3RhcmdldC90Y21fbW9kX2J1aWxkZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMjJmNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3RhcmdldC90Y21fbW9kX2J1aWxkZXIudHh0CkBAIC0wLDAgKzEsMTQ1IEBACis+Pj4+Pj4+Pj4+IFRoZSBUQ00gdjQgZmFicmljIG1vZHVsZSBzY3JpcHQgZ2VuZXJhdG9yIDw8PDw8PDw8PDwKKworR3JlZXRpbmdzIGFsbCwKKworVGhpcyBkb2N1bWVudCBpcyBpbnRlbmRlZCB0byBiZSBhIG1pbmktSE9XVE8gZm9yIHVzaW5nIHRoZSB0Y21fbW9kX2J1aWxkZXIucHkKK3NjcmlwdCB0byBnZW5lcmF0ZSBhIGJyYW5kIG5ldyBmdW5jdGlvbmFsIFRDTSB2NCBmYWJyaWMgLmtvIG1vZHVsZSBvZiB5b3VyIHZlcnkgb3duLAordGhhdCBvbmNlIGJ1aWx0IGNhbiBiZSBpbW1lZGlhdGVseSBiZSBsb2FkZWQgdG8gc3RhcnQgYWNjZXNzIHRoZSBuZXcgVENNL0NvbmZpZ0ZTCitmYWJyaWMgc2tlbGV0b24sIGJ5IHNpbXBseSB1c2luZzoKKworCW1vZHByb2JlICRUQ01fTkVXX01PRAorCW1rZGlyIC1wIC9zeXMva2VybmVsL2NvbmZpZy90YXJnZXQvJFRDTV9ORVdfTU9ECisKK1RoaXMgc2NyaXB0IHdpbGwgY3JlYXRlIGEgbmV3IGRyaXZlcnMvdGFyZ2V0LyRUQ01fTkVXX01PRC8sIGFuZCB3aWxsIGRvIHRoZSBmb2xsb3dpbmcKKworCSopIEdlbmVyYXRlIG5ldyBBUEkgY2FsbGVycyBmb3IgZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZmFicmljX2NvbmZpZ3MuYyBsb2dpYworCSAgIC0+bWFrZV90cGcoKSwgLT5kcm9wX3RwZygpLCAtPm1ha2Vfd3duKCksIC0+ZHJvcF93d24oKS4gIFRoZXNlIGFyZSBjcmVhdGVkCisJICAgaW50byAkVENNX05FV19NT0QvJFRDTV9ORVdfTU9EX2NvbmZpZ2ZzLmMKKwkqKSBHZW5lcmF0ZSBiYXNpYyBpbmZyYXN0cnVjdHVyZSBmb3IgbG9hZGluZy91bmxvYWRpbmcgTEtNcyBhbmQgVENNL0NvbmZpZ0ZTIGZhYnJpYyBtb2R1bGUKKwkgICB1c2luZyBhIHNrZWxldG9uIHN0cnVjdCB0YXJnZXRfY29yZV9mYWJyaWNfb3BzIEFQSSB0ZW1wbGF0ZS4KKwkqKSBCYXNlZCBvbiB1c2VyIGRlZmluZWQgVDEwIFByb3RvX0lkZW50IGZvciB0aGUgbmV3IGZhYnJpYyBtb2R1bGUgYmVpbmcgYnVpbHQsCisJICAgdGhlIFRyYW5zcG9ydElEIC8gSW5pdGlhdG9yIGFuZCBUYXJnZXQgV1dQTiByZWxhdGVkIGhhbmRsZXJzIGZvcgorCSAgIFNQQy0zIHBlcnNpc3RlbnQgcmVzZXJ2YXRpb24gYXJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGluICRUQ01fTkVXX01PRC8kVENNX05FV19NT0RfZmFicmljLmMKKwkgICB1c2luZyBkcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9mYWJyaWNfbGliLmMgbG9naWMuCisJKikgTk9QIEFQSSBjYWxscyBmb3IgYWxsIG90aGVyIERhdGEgSS9PIHBhdGggYW5kIGZhYnJpYyBkZXBlbmRlbnQgYXR0cmlidXRlIGxvZ2ljCisJICAgaW4gJFRDTV9ORVdfTU9ELyRUQ01fTkVXX01PRF9mYWJyaWMuYworCit0Y21fbW9kX2J1aWxkZXIucHkgZGVwZW5kcyB1cG9uIHRoZSBtYW5kYXRvcnkgJy1wICRQUk9UT19JREVOVCcgYW5kICctbQorJEZBQlJJQ19NT0RfbmFtZScgcGFyYW1ldGVycywgYW5kIGFjdHVhbGx5IHJ1bm5pbmcgdGhlIHNjcmlwdCBsb29rcyBsaWtlOgorCit0YXJnZXQ6L21udC9zZGIvbGlvLWNvcmUtMi42LmdpdC9Eb2N1bWVudGF0aW9uL3RhcmdldCMgcHl0aG9uIHRjbV9tb2RfYnVpbGRlci5weSAtcCBpU0NTSSAtbSB0Y21fbmFiNTAwMAordGNtX2RpcjogL21udC9zZGIvbGlvLWNvcmUtMi42LmdpdC9Eb2N1bWVudGF0aW9uL3RhcmdldC8uLi8uLi8KK1NldCBmYWJyaWNfbW9kX25hbWU6IHRjbV9uYWI1MDAwCitTZXQgZmFicmljX21vZF9kaXI6CisvbW50L3NkYi9saW8tY29yZS0yLjYuZ2l0L0RvY3VtZW50YXRpb24vdGFyZ2V0Ly4uLy4uL2RyaXZlcnMvdGFyZ2V0L3RjbV9uYWI1MDAwCitVc2luZyBwcm90b19pZGVudDogaVNDU0kKK0NyZWF0aW5nIGZhYnJpY19tb2RfZGlyOgorL21udC9zZGIvbGlvLWNvcmUtMi42LmdpdC9Eb2N1bWVudGF0aW9uL3RhcmdldC8uLi8uLi9kcml2ZXJzL3RhcmdldC90Y21fbmFiNTAwMAorV3JpdGluZyBmaWxlOgorL21udC9zZGIvbGlvLWNvcmUtMi42LmdpdC9Eb2N1bWVudGF0aW9uL3RhcmdldC8uLi8uLi9kcml2ZXJzL3RhcmdldC90Y21fbmFiNTAwMC90Y21fbmFiNTAwMF9iYXNlLmgKK1VzaW5nIHRjbV9tb2Rfc2Nhbl9mYWJyaWNfb3BzOgorL21udC9zZGIvbGlvLWNvcmUtMi42LmdpdC9Eb2N1bWVudGF0aW9uL3RhcmdldC8uLi8uLi9pbmNsdWRlL3RhcmdldC90YXJnZXRfY29yZV9mYWJyaWNfb3BzLmgKK1dyaXRpbmcgZmlsZToKKy9tbnQvc2RiL2xpby1jb3JlLTIuNi5naXQvRG9jdW1lbnRhdGlvbi90YXJnZXQvLi4vLi4vZHJpdmVycy90YXJnZXQvdGNtX25hYjUwMDAvdGNtX25hYjUwMDBfZmFicmljLmMKK1dyaXRpbmcgZmlsZToKKy9tbnQvc2RiL2xpby1jb3JlLTIuNi5naXQvRG9jdW1lbnRhdGlvbi90YXJnZXQvLi4vLi4vZHJpdmVycy90YXJnZXQvdGNtX25hYjUwMDAvdGNtX25hYjUwMDBfZmFicmljLmgKK1dyaXRpbmcgZmlsZToKKy9tbnQvc2RiL2xpby1jb3JlLTIuNi5naXQvRG9jdW1lbnRhdGlvbi90YXJnZXQvLi4vLi4vZHJpdmVycy90YXJnZXQvdGNtX25hYjUwMDAvdGNtX25hYjUwMDBfY29uZmlnZnMuYworV3JpdGluZyBmaWxlOgorL21udC9zZGIvbGlvLWNvcmUtMi42LmdpdC9Eb2N1bWVudGF0aW9uL3RhcmdldC8uLi8uLi9kcml2ZXJzL3RhcmdldC90Y21fbmFiNTAwMC9LYnVpbGQKK1dyaXRpbmcgZmlsZToKKy9tbnQvc2RiL2xpby1jb3JlLTIuNi5naXQvRG9jdW1lbnRhdGlvbi90YXJnZXQvLi4vLi4vZHJpdmVycy90YXJnZXQvdGNtX25hYjUwMDAvS2NvbmZpZworV291bGQgeW91IGxpa2UgdG8gYWRkIHRjbV9uYWI1MDAwdG8gZHJpdmVycy90YXJnZXQvS2J1aWxkLi4/IFt5ZXMsbm9dOiB5ZXMKK1dvdWxkIHlvdSBsaWtlIHRvIGFkZCB0Y21fbmFiNTAwMHRvIGRyaXZlcnMvdGFyZ2V0L0tjb25maWcuLj8gW3llcyxub106IHllcworCitBdCB0aGUgZW5kIG9mIHRjbV9tb2RfYnVpbGRlci5weS4gdGhlIHNjcmlwdCB3aWxsIGFzayB0byBhZGQgdGhlIGZvbGxvd2luZworbGluZSB0byBkcml2ZXJzL3RhcmdldC9LYnVpbGQ6CisKKwlvYmotJChDT05GSUdfVENNX05BQjUwMDApICAgICAgICs9IHRjbV9uYWI1MDAwLworCithbmQgdGhlIHNhbWUgZm9yIGRyaXZlcnMvdGFyZ2V0L0tjb25maWc6CisKKwlzb3VyY2UgImRyaXZlcnMvdGFyZ2V0L3RjbV9uYWI1MDAwL0tjb25maWciCisKKyopIFJ1biAnbWFrZSBtZW51Y29uZmlnJyBhbmQgc2VsZWN0IHRoZSBuZXcgQ09ORklHX1RDTV9OQUI1MDAwIGl0ZW06CisKKwk8TT4gICBUQ01fTkFCNTAwMCBmYWJyaWMgbW9kdWxlCisKKyopIEJ1aWxkIHVzaW5nICdtYWtlIG1vZHVsZXMnLCBvbmNlIGNvbXBsZXRlZCB5b3Ugd2lsbCBoYXZlOgorCit0YXJnZXQ6L21udC9zZGIvbGlvLWNvcmUtMi42LmdpdCMgbHMgLWxhIGRyaXZlcnMvdGFyZ2V0L3RjbV9uYWI1MDAwLwordG90YWwgMTM0OAorZHJ3eHIteHIteCAyIHJvb3Qgcm9vdCAgIDQwOTYgMjAxMC0xMC0wNSAwMzoyMyAuCitkcnd4ci14ci14IDkgcm9vdCByb290ICAgNDA5NiAyMDEwLTEwLTA1IDAzOjIyIC4uCistcnctci0tci0tIDEgcm9vdCByb290ICAgIDI4MiAyMDEwLTEwLTA1IDAzOjIyIEtidWlsZAorLXJ3LXItLXItLSAxIHJvb3Qgcm9vdCAgICAxNzEgMjAxMC0xMC0wNSAwMzoyMiBLY29uZmlnCistcnctci0tci0tIDEgcm9vdCByb290ICAgICA0OSAyMDEwLTEwLTA1IDAzOjIzIG1vZHVsZXMub3JkZXIKKy1ydy1yLS1yLS0gMSByb290IHJvb3QgICAgNzM4IDIwMTAtMTAtMDUgMDM6MjIgdGNtX25hYjUwMDBfYmFzZS5oCistcnctci0tci0tIDEgcm9vdCByb290ICAgOTA5NiAyMDEwLTEwLTA1IDAzOjIyIHRjbV9uYWI1MDAwX2NvbmZpZ2ZzLmMKKy1ydy1yLS1yLS0gMSByb290IHJvb3QgMTkxMjAwIDIwMTAtMTAtMDUgMDM6MjMgdGNtX25hYjUwMDBfY29uZmlnZnMubworLXJ3LXItLXItLSAxIHJvb3Qgcm9vdCAgNDA1MDQgMjAxMC0xMC0wNSAwMzoyMyAudGNtX25hYjUwMDBfY29uZmlnZnMuby5jbWQKKy1ydy1yLS1yLS0gMSByb290IHJvb3QgICA1NDE0IDIwMTAtMTAtMDUgMDM6MjIgdGNtX25hYjUwMDBfZmFicmljLmMKKy1ydy1yLS1yLS0gMSByb290IHJvb3QgICAyMDE2IDIwMTAtMTAtMDUgMDM6MjIgdGNtX25hYjUwMDBfZmFicmljLmgKKy1ydy1yLS1yLS0gMSByb290IHJvb3QgMTkwOTMyIDIwMTAtMTAtMDUgMDM6MjMgdGNtX25hYjUwMDBfZmFicmljLm8KKy1ydy1yLS1yLS0gMSByb290IHJvb3QgIDQwNzEzIDIwMTAtMTAtMDUgMDM6MjMgLnRjbV9uYWI1MDAwX2ZhYnJpYy5vLmNtZAorLXJ3LXItLXItLSAxIHJvb3Qgcm9vdCA0MDE4NjEgMjAxMC0xMC0wNSAwMzoyMyB0Y21fbmFiNTAwMC5rbworLXJ3LXItLXItLSAxIHJvb3Qgcm9vdCAgICAyNjUgMjAxMC0xMC0wNSAwMzoyMyAudGNtX25hYjUwMDAua28uY21kCistcnctci0tci0tIDEgcm9vdCByb290ICAgIDQ1OSAyMDEwLTEwLTA1IDAzOjIzIHRjbV9uYWI1MDAwLm1vZC5jCistcnctci0tci0tIDEgcm9vdCByb290ICAyMzg5NiAyMDEwLTEwLTA1IDAzOjIzIHRjbV9uYWI1MDAwLm1vZC5vCistcnctci0tci0tIDEgcm9vdCByb290ICAyMjY1NSAyMDEwLTEwLTA1IDAzOjIzIC50Y21fbmFiNTAwMC5tb2Quby5jbWQKKy1ydy1yLS1yLS0gMSByb290IHJvb3QgMzc5MDIyIDIwMTAtMTAtMDUgMDM6MjMgdGNtX25hYjUwMDAubworLXJ3LXItLXItLSAxIHJvb3Qgcm9vdCAgICAyMTEgMjAxMC0xMC0wNSAwMzoyMyAudGNtX25hYjUwMDAuby5jbWQKKworKikgTG9hZCB0aGUgbmV3IG1vZHVsZSwgY3JlYXRlIGEgbHVuXzAgY29uZmlnZnMgZ3JvdXAsIGFuZCBhZGQgbmV3IFRDTSBDb3JlCisgICBJQkxPQ0sgYmFja3N0b3JlIHN5bWxpbmsgdG8gcG9ydDoKKwordGFyZ2V0Oi9tbnQvc2RiL2xpby1jb3JlLTIuNi5naXQjIGluc21vZCBkcml2ZXJzL3RhcmdldC90Y21fbmFiNTAwMC5rbwordGFyZ2V0Oi9tbnQvc2RiL2xpby1jb3JlLTIuNi5naXQjIG1rZGlyIC1wIC9zeXMva2VybmVsL2NvbmZpZy90YXJnZXQvbmFiNTAwMC9pcW4uZm9vL3RwZ3RfMS9sdW4vbHVuXzAKK3RhcmdldDovbW50L3NkYi9saW8tY29yZS0yLjYuZ2l0IyBjZCAvc3lzL2tlcm5lbC9jb25maWcvdGFyZ2V0L25hYjUwMDAvaXFuLmZvby90cGd0XzEvbHVuL2x1bl8wLwordGFyZ2V0Oi9zeXMva2VybmVsL2NvbmZpZy90YXJnZXQvbmFiNTAwMC9pcW4uZm9vL3RwZ3RfMS9sdW4vbHVuXzAjIGxuIC1zIC9zeXMva2VybmVsL2NvbmZpZy90YXJnZXQvY29yZS9pYmxvY2tfMC9sdm1fdGVzdDAgbmFiNTAwMF9wb3J0CisKK3RhcmdldDovc3lzL2tlcm5lbC9jb25maWcvdGFyZ2V0L25hYjUwMDAvaXFuLmZvby90cGd0XzEvbHVuL2x1bl8wIyBjZCAtCit0YXJnZXQ6L21udC9zZGIvbGlvLWNvcmUtMi42LmdpdCMgdHJlZSAvc3lzL2tlcm5lbC9jb25maWcvdGFyZ2V0L25hYjUwMDAvCisvc3lzL2tlcm5lbC9jb25maWcvdGFyZ2V0L25hYjUwMDAvCit8LS0gZGlzY292ZXJ5X2F1dGgKK3wtLSBpcW4uZm9vCit8ICAgYC0tIHRwZ3RfMQorfCAgICAgICB8LS0gYWNscworfCAgICAgICB8LS0gYXR0cmliCit8ICAgICAgIHwtLSBsdW4KK3wgICAgICAgfCAgIGAtLSBsdW5fMAorfCAgICAgICB8ICAgICAgIHwtLSBhbHVhX3RnX3B0X2dwCit8ICAgICAgIHwgICAgICAgfC0tIGFsdWFfdGdfcHRfb2ZmbGluZQorfCAgICAgICB8ICAgICAgIHwtLSBhbHVhX3RnX3B0X3N0YXR1cworfCAgICAgICB8ICAgICAgIHwtLSBhbHVhX3RnX3B0X3dyaXRlX21kCit8CXwJYC0tIG5hYjUwMDBfcG9ydCAtPiAuLi8uLi8uLi8uLi8uLi8uLi90YXJnZXQvY29yZS9pYmxvY2tfMC9sdm1fdGVzdDAKK3wgICAgICAgfC0tIG5wCit8ICAgICAgIGAtLSBwYXJhbQorYC0tIHZlcnNpb24KKwordGFyZ2V0Oi9tbnQvc2RiL2xpby1jb3JlLTIuNi5naXQjIGxzbW9kCitNb2R1bGUgICAgICAgICAgICAgICAgICBTaXplICBVc2VkIGJ5Cit0Y21fbmFiNTAwMCAgICAgICAgICAgICAzOTM1ICA0Citpc2NzaV90YXJnZXRfbW9kICAgICAgMTkzMjExICAwCit0YXJnZXRfY29yZV9zdGd0ICAgICAgICA4MDkwICAwCit0YXJnZXRfY29yZV9wc2NzaSAgICAgIDExMTIyICAxCit0YXJnZXRfY29yZV9maWxlICAgICAgICA5MTcyICAyCit0YXJnZXRfY29yZV9pYmxvY2sgICAgICA5MjgwICAxCit0YXJnZXRfY29yZV9tb2QgICAgICAgMjI4NTc1ICAzMQordGNtX25hYjUwMDAsaXNjc2lfdGFyZ2V0X21vZCx0YXJnZXRfY29yZV9zdGd0LHRhcmdldF9jb3JlX3BzY3NpLHRhcmdldF9jb3JlX2ZpbGUsdGFyZ2V0X2NvcmVfaWJsb2NrCitsaWJmYyAgICAgICAgICAgICAgICAgIDczNjgxICAwCitzY3NpX2RlYnVnICAgICAgICAgICAgIDU2MjY1ICAwCitzY3NpX3RndCAgICAgICAgICAgICAgICA4NjY2ICAxIHRhcmdldF9jb3JlX3N0Z3QKK2NvbmZpZ2ZzICAgICAgICAgICAgICAgMjA2NDQgIDIgdGFyZ2V0X2NvcmVfbW9kCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRnV0dXJlIFRPRE8gaXRlbXM6CisKKwkqKSBBZGQgbW9yZSBUMTAgcHJvdG9faWRlbnRzCisJKikgTWFrZSB0Y21fbW9kX2R1bXBfZmFicmljX29wcygpIHNtYXJ0ZXIgYW5kIGdlbmVyYXRlIGZ1bmN0aW9uIHBvaW50ZXIKKwkgICBkZWZzIGRpcmVjdGx5IGZyb20gaW5jbHVkZS90YXJnZXQvdGFyZ2V0X2NvcmVfZmFicmljX29wcy5oOnN0cnVjdCB0YXJnZXRfY29yZV9mYWJyaWNfb3BzCisJICAgc3RydWN0dXJlIG1lbWJlcnMuCisKK09jdG9iZXIgNXRoLCAyMDEwCitOaWNob2xhcyBBLiBCZWxsaW5nZXIgPG5hYkBsaW51eC1pc2NzaS5vcmc+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RhcmdldC90Y211LWRlc2lnbi50eHQgYi9Eb2N1bWVudGF0aW9uL3RhcmdldC90Y211LWRlc2lnbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmVmODFlNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdGFyZ2V0L3RjbXUtZGVzaWduLnR4dApAQCAtMCwwICsxLDM3MiBAQAorQ29udGVudHM6CisKKzEpIFRDTSBVc2Vyc3BhY2UgRGVzaWduCisgIGEpIEJhY2tncm91bmQKKyAgYikgQmVuZWZpdHMKKyAgYykgRGVzaWduIGNvbnN0cmFpbnRzCisgIGQpIEltcGxlbWVudGF0aW9uIG92ZXJ2aWV3CisgICAgIGkuIE1haWxib3gKKyAgICAgaWkuIENvbW1hbmQgcmluZworICAgICBpaWkuIERhdGEgQXJlYQorICBlKSBEZXZpY2UgZGlzY292ZXJ5CisgIGYpIERldmljZSBldmVudHMKKyAgZykgT3RoZXIgY29udGluZ2VuY2llcworMikgV3JpdGluZyBhIHVzZXIgcGFzcy10aHJvdWdoIGhhbmRsZXIKKyAgYSkgRGlzY292ZXJpbmcgYW5kIGNvbmZpZ3VyaW5nIFRDTVUgdWlvIGRldmljZXMKKyAgYikgV2FpdGluZyBmb3IgZXZlbnRzIG9uIHRoZSBkZXZpY2UocykKKyAgYykgTWFuYWdpbmcgdGhlIGNvbW1hbmQgcmluZworMykgQSBmaW5hbCBub3RlCisKKworVENNIFVzZXJzcGFjZSBEZXNpZ24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RDTSBpcyBhbm90aGVyIG5hbWUgZm9yIExJTywgYW4gaW4ta2VybmVsIGlTQ1NJIHRhcmdldCAoc2VydmVyKS4KK0V4aXN0aW5nIFRDTSB0YXJnZXRzIHJ1biBpbiB0aGUga2VybmVsLiAgVENNVSAoVENNIGluIFVzZXJzcGFjZSkKK2FsbG93cyB1c2Vyc3BhY2UgcHJvZ3JhbXMgdG8gYmUgd3JpdHRlbiB3aGljaCBhY3QgYXMgaVNDU0kgdGFyZ2V0cy4KK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBkZXNpZ24uCisKK1RoZSBleGlzdGluZyBrZXJuZWwgcHJvdmlkZXMgbW9kdWxlcyBmb3IgZGlmZmVyZW50IFNDU0kgdHJhbnNwb3J0Citwcm90b2NvbHMuICBUQ00gYWxzbyBtb2R1bGFyaXplcyB0aGUgZGF0YSBzdG9yYWdlLiAgVGhlcmUgYXJlIGV4aXN0aW5nCittb2R1bGVzIGZvciBmaWxlLCBibG9jayBkZXZpY2UsIFJBTSBvciB1c2luZyBhbm90aGVyIFNDU0kgZGV2aWNlIGFzCitzdG9yYWdlLiAgVGhlc2UgYXJlIGNhbGxlZCAiYmFja3N0b3JlcyIgb3IgInN0b3JhZ2UgZW5naW5lcyIuICBUaGVzZQorYnVpbHQtaW4gbW9kdWxlcyBhcmUgaW1wbGVtZW50ZWQgZW50aXJlbHkgYXMga2VybmVsIGNvZGUuCisKK0JhY2tncm91bmQ6CisKK0luIGFkZGl0aW9uIHRvIG1vZHVsYXJpemluZyB0aGUgdHJhbnNwb3J0IHByb3RvY29sIHVzZWQgZm9yIGNhcnJ5aW5nCitTQ1NJIGNvbW1hbmRzICgiZmFicmljcyIpLCB0aGUgTGludXgga2VybmVsIHRhcmdldCwgTElPLCBhbHNvIG1vZHVsYXJpemVzCit0aGUgYWN0dWFsIGRhdGEgc3RvcmFnZSBhcyB3ZWxsLiBUaGVzZSBhcmUgcmVmZXJyZWQgdG8gYXMgImJhY2tzdG9yZXMiCitvciAic3RvcmFnZSBlbmdpbmVzIi4gVGhlIHRhcmdldCBjb21lcyB3aXRoIGJhY2tzdG9yZXMgdGhhdCBhbGxvdyBhCitmaWxlLCBhIGJsb2NrIGRldmljZSwgUkFNLCBvciBhbm90aGVyIFNDU0kgZGV2aWNlIHRvIGJlIHVzZWQgZm9yIHRoZQorbG9jYWwgc3RvcmFnZSBuZWVkZWQgZm9yIHRoZSBleHBvcnRlZCBTQ1NJIExVTi4gTGlrZSB0aGUgcmVzdCBvZiBMSU8sCit0aGVzZSBhcmUgaW1wbGVtZW50ZWQgZW50aXJlbHkgYXMga2VybmVsIGNvZGUuCisKK1RoZXNlIGJhY2tzdG9yZXMgY292ZXIgdGhlIG1vc3QgY29tbW9uIHVzZSBjYXNlcywgYnV0IG5vdCBhbGwuIE9uZSBuZXcKK3VzZSBjYXNlIHRoYXQgb3RoZXIgbm9uLWtlcm5lbCB0YXJnZXQgc29sdXRpb25zLCBzdWNoIGFzIHRndCwgYXJlIGFibGUKK3RvIHN1cHBvcnQgaXMgdXNpbmcgR2x1c3RlcidzIEdMRlMgb3IgQ2VwaCdzIFJCRCBhcyBhIGJhY2tzdG9yZS4gVGhlCit0YXJnZXQgdGhlbiBzZXJ2ZXMgYXMgYSB0cmFuc2xhdG9yLCBhbGxvd2luZyBpbml0aWF0b3JzIHRvIHN0b3JlIGRhdGEKK2luIHRoZXNlIG5vbi10cmFkaXRpb25hbCBuZXR3b3JrZWQgc3RvcmFnZSBzeXN0ZW1zLCB3aGlsZSBzdGlsbCBvbmx5Cit1c2luZyBzdGFuZGFyZCBwcm90b2NvbHMgdGhlbXNlbHZlcy4KKworSWYgdGhlIHRhcmdldCBpcyBhIHVzZXJzcGFjZSBwcm9jZXNzLCBzdXBwb3J0aW5nIHRoZXNlIGlzIGVhc3kuIHRndCwKK2ZvciBleGFtcGxlLCBuZWVkcyBvbmx5IGEgc21hbGwgYWRhcHRlciBtb2R1bGUgZm9yIGVhY2gsIGJlY2F1c2UgdGhlCittb2R1bGVzIGp1c3QgdXNlIHRoZSBhdmFpbGFibGUgdXNlcnNwYWNlIGxpYnJhcmllcyBmb3IgUkJEIGFuZCBHTEZTLgorCitBZGRpbmcgc3VwcG9ydCBmb3IgdGhlc2UgYmFja3N0b3JlcyBpbiBMSU8gaXMgY29uc2lkZXJhYmx5IG1vcmUKK2RpZmZpY3VsdCwgYmVjYXVzZSBMSU8gaXMgZW50aXJlbHkga2VybmVsIGNvZGUuIEluc3RlYWQgb2YgdW5kZXJ0YWtpbmcKK3RoZSBzaWduaWZpY2FudCB3b3JrIHRvIHBvcnQgdGhlIEdMRlMgb3IgUkJEIEFQSXMgYW5kIHByb3RvY29scyB0byB0aGUKK2tlcm5lbCwgYW5vdGhlciBhcHByb2FjaCBpcyB0byBjcmVhdGUgYSB1c2Vyc3BhY2UgcGFzcy10aHJvdWdoCitiYWNrc3RvcmUgZm9yIExJTywgIlRDTVUiLgorCisKK0JlbmVmaXRzOgorCitJbiBhZGRpdGlvbiB0byBhbGxvd2luZyByZWxhdGl2ZWx5IGVhc3kgc3VwcG9ydCBmb3IgUkJEIGFuZCBHTEZTLCBUQ01VCit3aWxsIGFsc28gYWxsb3cgZWFzaWVyIGRldmVsb3BtZW50IG9mIG5ldyBiYWNrc3RvcmVzLiBUQ01VIGNvbWJpbmVzCit3aXRoIHRoZSBMSU8gbG9vcGJhY2sgZmFicmljIHRvIGJlY29tZSBzb21ldGhpbmcgc2ltaWxhciB0byBGVVNFCisoRmlsZXN5c3RlbSBpbiBVc2Vyc3BhY2UpLCBidXQgYXQgdGhlIFNDU0kgbGF5ZXIgaW5zdGVhZCBvZiB0aGUKK2ZpbGVzeXN0ZW0gbGF5ZXIuIEEgU1VTRSwgaWYgeW91IHdpbGwuCisKK1RoZSBkaXNhZHZhbnRhZ2UgaXMgdGhlcmUgYXJlIG1vcmUgZGlzdGluY3QgY29tcG9uZW50cyB0byBjb25maWd1cmUsIGFuZAorcG90ZW50aWFsbHkgdG8gbWFsZnVuY3Rpb24uIFRoaXMgaXMgdW5hdm9pZGFibGUsIGJ1dCBob3BlZnVsbHkgbm90CitmYXRhbCBpZiB3ZSdyZSBjYXJlZnVsIHRvIGtlZXAgdGhpbmdzIGFzIHNpbXBsZSBhcyBwb3NzaWJsZS4KKworRGVzaWduIGNvbnN0cmFpbnRzOgorCistIEdvb2QgcGVyZm9ybWFuY2U6IGhpZ2ggdGhyb3VnaHB1dCwgbG93IGxhdGVuY3kKKy0gQ2xlYW5seSBoYW5kbGUgaWYgdXNlcnNwYWNlOgorICAgMSkgbmV2ZXIgYXR0YWNoZXMKKyAgIDIpIGhhbmdzCisgICAzKSBkaWVzCisgICA0KSBtaXNiZWhhdmVzCistIEFsbG93IGZ1dHVyZSBmbGV4aWJpbGl0eSBpbiB1c2VyICYga2VybmVsIGltcGxlbWVudGF0aW9ucworLSBCZSByZWFzb25hYmx5IG1lbW9yeS1lZmZpY2llbnQKKy0gU2ltcGxlIHRvIGNvbmZpZ3VyZSAmIHJ1bgorLSBTaW1wbGUgdG8gd3JpdGUgYSB1c2Vyc3BhY2UgYmFja2VuZAorCisKK0ltcGxlbWVudGF0aW9uIG92ZXJ2aWV3OgorCitUaGUgY29yZSBvZiB0aGUgVENNVSBpbnRlcmZhY2UgaXMgYSBtZW1vcnkgcmVnaW9uIHRoYXQgaXMgc2hhcmVkCitiZXR3ZWVuIGtlcm5lbCBhbmQgdXNlcnNwYWNlLiBXaXRoaW4gdGhpcyByZWdpb24gaXM6IGEgY29udHJvbCBhcmVhCisobWFpbGJveCk7IGEgbG9ja2xlc3MgcHJvZHVjZXIvY29uc3VtZXIgY2lyY3VsYXIgYnVmZmVyIGZvciBjb21tYW5kcwordG8gYmUgcGFzc2VkIHVwLCBhbmQgc3RhdHVzIHJldHVybmVkOyBhbmQgYW4gaW4vb3V0IGRhdGEgYnVmZmVyIGFyZWEuCisKK1RDTVUgdXNlcyB0aGUgcHJlLWV4aXN0aW5nIFVJTyBzdWJzeXN0ZW0uIFVJTyBhbGxvd3MgZGV2aWNlIGRyaXZlcgorZGV2ZWxvcG1lbnQgaW4gdXNlcnNwYWNlLCBhbmQgdGhpcyBpcyBjb25jZXB0dWFsbHkgdmVyeSBjbG9zZSB0byB0aGUKK1RDTVUgdXNlIGNhc2UsIGV4Y2VwdCBpbnN0ZWFkIG9mIGEgcGh5c2ljYWwgZGV2aWNlLCBUQ01VIGltcGxlbWVudHMgYQorbWVtb3J5LW1hcHBlZCBsYXlvdXQgZGVzaWduZWQgZm9yIFNDU0kgY29tbWFuZHMuIFVzaW5nIFVJTyBhbHNvCitiZW5lZml0cyBUQ01VIGJ5IGhhbmRsaW5nIGRldmljZSBpbnRyb3NwZWN0aW9uIChlLmcuIGEgd2F5IGZvcgordXNlcnNwYWNlIHRvIGRldGVybWluZSBob3cgbGFyZ2UgdGhlIHNoYXJlZCByZWdpb24gaXMpIGFuZCBzaWduYWxpbmcKK21lY2hhbmlzbXMgaW4gYm90aCBkaXJlY3Rpb25zLgorCitUaGVyZSBhcmUgbm8gZW1iZWRkZWQgcG9pbnRlcnMgaW4gdGhlIG1lbW9yeSByZWdpb24uIEV2ZXJ5dGhpbmcgaXMKK2V4cHJlc3NlZCBhcyBhbiBvZmZzZXQgZnJvbSB0aGUgcmVnaW9uJ3Mgc3RhcnRpbmcgYWRkcmVzcy4gVGhpcyBhbGxvd3MKK3RoZSByaW5nIHRvIHN0aWxsIHdvcmsgaWYgdGhlIHVzZXIgcHJvY2VzcyBkaWVzIGFuZCBpcyByZXN0YXJ0ZWQgd2l0aAordGhlIHJlZ2lvbiBtYXBwZWQgYXQgYSBkaWZmZXJlbnQgdmlydHVhbCBhZGRyZXNzLgorCitTZWUgdGFyZ2V0X2NvcmVfdXNlci5oIGZvciB0aGUgc3RydWN0IGRlZmluaXRpb25zLgorCitUaGUgTWFpbGJveDoKKworVGhlIG1haWxib3ggaXMgYWx3YXlzIGF0IHRoZSBzdGFydCBvZiB0aGUgc2hhcmVkIG1lbW9yeSByZWdpb24sIGFuZAorY29udGFpbnMgYSB2ZXJzaW9uLCBkZXRhaWxzIGFib3V0IHRoZSBzdGFydGluZyBvZmZzZXQgYW5kIHNpemUgb2YgdGhlCitjb21tYW5kIHJpbmcsIGFuZCBoZWFkIGFuZCB0YWlsIHBvaW50ZXJzIHRvIGJlIHVzZWQgYnkgdGhlIGtlcm5lbCBhbmQKK3VzZXJzcGFjZSAocmVzcGVjdGl2ZWx5KSB0byBwdXQgY29tbWFuZHMgb24gdGhlIHJpbmcsIGFuZCBpbmRpY2F0ZQord2hlbiB0aGUgY29tbWFuZHMgYXJlIGNvbXBsZXRlZC4KKwordmVyc2lvbiAtIDEgKHVzZXJzcGFjZSBzaG91bGQgYWJvcnQgaWYgb3RoZXJ3aXNlKQorZmxhZ3MgLSBub25lIHlldCBkZWZpbmVkLgorY21kcl9vZmYgLSBUaGUgb2Zmc2V0IG9mIHRoZSBzdGFydCBvZiB0aGUgY29tbWFuZCByaW5nIGZyb20gdGhlIHN0YXJ0CitvZiB0aGUgbWVtb3J5IHJlZ2lvbiwgdG8gYWNjb3VudCBmb3IgdGhlIG1haWxib3ggc2l6ZS4KK2NtZHJfc2l6ZSAtIFRoZSBzaXplIG9mIHRoZSBjb21tYW5kIHJpbmcuIFRoaXMgZG9lcyAqbm90KiBuZWVkIHRvIGJlIGEKK3Bvd2VyIG9mIHR3by4KK2NtZF9oZWFkIC0gTW9kaWZpZWQgYnkgdGhlIGtlcm5lbCB0byBpbmRpY2F0ZSB3aGVuIGEgY29tbWFuZCBoYXMgYmVlbgorcGxhY2VkIG9uIHRoZSByaW5nLgorY21kX3RhaWwgLSBNb2RpZmllZCBieSB1c2Vyc3BhY2UgdG8gaW5kaWNhdGUgd2hlbiBpdCBoYXMgY29tcGxldGVkCitwcm9jZXNzaW5nIG9mIGEgY29tbWFuZC4KKworVGhlIENvbW1hbmQgUmluZzoKKworQ29tbWFuZHMgYXJlIHBsYWNlZCBvbiB0aGUgcmluZyBieSB0aGUga2VybmVsIGluY3JlbWVudGluZworbWFpbGJveC5jbWRfaGVhZCBieSB0aGUgc2l6ZSBvZiB0aGUgY29tbWFuZCwgbW9kdWxvIGNtZHJfc2l6ZSwgYW5kCit0aGVuIHNpZ25hbGluZyB1c2Vyc3BhY2UgdmlhIHVpb19ldmVudF9ub3RpZnkoKS4gT25jZSB0aGUgY29tbWFuZCBpcworY29tcGxldGVkLCB1c2Vyc3BhY2UgdXBkYXRlcyBtYWlsYm94LmNtZF90YWlsIGluIHRoZSBzYW1lIHdheSBhbmQKK3NpZ25hbHMgdGhlIGtlcm5lbCB2aWEgYSA0LWJ5dGUgd3JpdGUoKS4gV2hlbiBjbWRfaGVhZCBlcXVhbHMKK2NtZF90YWlsLCB0aGUgcmluZyBpcyBlbXB0eSAtLSBubyBjb21tYW5kcyBhcmUgY3VycmVudGx5IHdhaXRpbmcgdG8gYmUKK3Byb2Nlc3NlZCBieSB1c2Vyc3BhY2UuCisKK1RDTVUgY29tbWFuZHMgYXJlIDgtYnl0ZSBhbGlnbmVkLiBUaGV5IHN0YXJ0IHdpdGggYSBjb21tb24gaGVhZGVyCitjb250YWluaW5nICJsZW5fb3AiLCBhIDMyLWJpdCB2YWx1ZSB0aGF0IHN0b3JlcyB0aGUgbGVuZ3RoLCBhcyB3ZWxsIGFzCit0aGUgb3Bjb2RlIGluIHRoZSBsb3dlc3QgdW51c2VkIGJpdHMuIEl0IGFsc28gY29udGFpbnMgY21kX2lkIGFuZAorZmxhZ3MgZmllbGRzIGZvciBzZXR0aW5nIGJ5IHRoZSBrZXJuZWwgKGtmbGFncykgYW5kIHVzZXJzcGFjZQorKHVmbGFncykuCisKK0N1cnJlbnRseSBvbmx5IHR3byBvcGNvZGVzIGFyZSBkZWZpbmVkLCBUQ01VX09QX0NNRCBhbmQgVENNVV9PUF9QQUQuCisKK1doZW4gdGhlIG9wY29kZSBpcyBDTUQsIHRoZSBlbnRyeSBpbiB0aGUgY29tbWFuZCByaW5nIGlzIGEgc3RydWN0Cit0Y211X2NtZF9lbnRyeS4gVXNlcnNwYWNlIGZpbmRzIHRoZSBTQ1NJIENEQiAoQ29tbWFuZCBEYXRhIEJsb2NrKSB2aWEKK3RjbXVfY21kX2VudHJ5LnJlcS5jZGJfb2ZmLiBUaGlzIGlzIGFuIG9mZnNldCBmcm9tIHRoZSBzdGFydCBvZiB0aGUKK292ZXJhbGwgc2hhcmVkIG1lbW9yeSByZWdpb24sIG5vdCB0aGUgZW50cnkuIFRoZSBkYXRhIGluL291dCBidWZmZXJzCithcmUgYWNjZXNzaWJsZSB2aWEgdGh0IHJlcS5pb3ZbXSBhcnJheS4gaW92X2NudCBjb250YWlucyB0aGUgbnVtYmVyIG9mCitlbnRyaWVzIGluIGlvdltdIG5lZWRlZCB0byBkZXNjcmliZSBlaXRoZXIgdGhlIERhdGEtSW4gb3IgRGF0YS1PdXQKK2J1ZmZlcnMuIEZvciBiaWRpcmVjdGlvbmFsIGNvbW1hbmRzLCBpb3ZfY250IHNwZWNpZmllcyBob3cgbWFueSBpb3ZlYworZW50cmllcyBjb3ZlciB0aGUgRGF0YS1PdXQgYXJlYSwgYW5kIGlvdl9iaWRpX2NudCBzcGVjaWZpZXMgaG93IG1hbnkKK2lvdmVjIGVudHJpZXMgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhhdCBpbiBpb3ZbXSBjb3ZlciB0aGUgRGF0YS1JbgorYXJlYS4gSnVzdCBsaWtlIG90aGVyIGZpZWxkcywgaW92Lmlvdl9iYXNlIGlzIGFuIG9mZnNldCBmcm9tIHRoZSBzdGFydAorb2YgdGhlIHJlZ2lvbi4KKworV2hlbiBjb21wbGV0aW5nIGEgY29tbWFuZCwgdXNlcnNwYWNlIHNldHMgcnNwLnNjc2lfc3RhdHVzLCBhbmQKK3JzcC5zZW5zZV9idWZmZXIgaWYgbmVjZXNzYXJ5LiBVc2Vyc3BhY2UgdGhlbiBpbmNyZW1lbnRzCittYWlsYm94LmNtZF90YWlsIGJ5IGVudHJ5Lmhkci5sZW5ndGggKG1vZCBjbWRyX3NpemUpIGFuZCBzaWduYWxzIHRoZQora2VybmVsIHZpYSB0aGUgVUlPIG1ldGhvZCwgYSA0LWJ5dGUgd3JpdGUgdG8gdGhlIGZpbGUgZGVzY3JpcHRvci4KKworV2hlbiB0aGUgb3Bjb2RlIGlzIFBBRCwgdXNlcnNwYWNlIG9ubHkgdXBkYXRlcyBjbWRfdGFpbCBhcyBhYm92ZSAtLQoraXQncyBhIG5vLW9wLiAoVGhlIGtlcm5lbCBpbnNlcnRzIFBBRCBlbnRyaWVzIHRvIGVuc3VyZSBlYWNoIENNRCBlbnRyeQoraXMgY29udGlndW91cyB3aXRoaW4gdGhlIGNvbW1hbmQgcmluZy4pCisKK01vcmUgb3Bjb2RlcyBtYXkgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4gSWYgdXNlcnNwYWNlIGVuY291bnRlcnMgYW4KK29wY29kZSBpdCBkb2VzIG5vdCBoYW5kbGUsIGl0IG11c3Qgc2V0IFVOS05PV05fT1AgYml0IChiaXQgMCkgaW4KK2hkci51ZmxhZ3MsIHVwZGF0ZSBjbWRfdGFpbCwgYW5kIHByb2NlZWQgd2l0aCBwcm9jZXNzaW5nIGFkZGl0aW9uYWwKK2NvbW1hbmRzLCBpZiBhbnkuCisKK1RoZSBEYXRhIEFyZWE6CisKK1RoaXMgaXMgc2hhcmVkLW1lbW9yeSBzcGFjZSBhZnRlciB0aGUgY29tbWFuZCByaW5nLiBUaGUgb3JnYW5pemF0aW9uCitvZiB0aGlzIGFyZWEgaXMgbm90IGRlZmluZWQgaW4gdGhlIFRDTVUgaW50ZXJmYWNlLCBhbmQgdXNlcnNwYWNlCitzaG91bGQgYWNjZXNzIG9ubHkgdGhlIHBhcnRzIHJlZmVyZW5jZWQgYnkgcGVuZGluZyBpb3ZzLgorCisKK0RldmljZSBEaXNjb3Zlcnk6CisKK090aGVyIGRldmljZXMgbWF5IGJlIHVzaW5nIFVJTyBiZXNpZGVzIFRDTVUuIFVucmVsYXRlZCB1c2VyIHByb2Nlc3NlcworbWF5IGFsc28gYmUgaGFuZGxpbmcgZGlmZmVyZW50IHNldHMgb2YgVENNVSBkZXZpY2VzLiBUQ01VIHVzZXJzcGFjZQorcHJvY2Vzc2VzIG11c3QgZmluZCB0aGVpciBkZXZpY2VzIGJ5IHNjYW5uaW5nIHN5c2ZzCitjbGFzcy91aW8vdWlvKi9uYW1lLiBGb3IgVENNVSBkZXZpY2VzLCB0aGVzZSBuYW1lcyB3aWxsIGJlIG9mIHRoZQorZm9ybWF0OgorCit0Y20tdXNlci88aGJhX251bT4vPGRldmljZV9uYW1lPi88c3VidHlwZT4vPHBhdGg+CisKK3doZXJlICJ0Y20tdXNlciIgaXMgY29tbW9uIGZvciBhbGwgVENNVS1iYWNrZWQgVUlPIGRldmljZXMuIDxoYmFfbnVtPgorYW5kIDxkZXZpY2VfbmFtZT4gYWxsb3cgdXNlcnNwYWNlIHRvIGZpbmQgdGhlIGRldmljZSdzIHBhdGggaW4gdGhlCitrZXJuZWwgdGFyZ2V0J3MgY29uZmlnZnMgdHJlZS4gQXNzdW1pbmcgdGhlIHVzdWFsIG1vdW50IHBvaW50LCBpdCBpcworZm91bmQgYXQ6CisKKy9zeXMva2VybmVsL2NvbmZpZy90YXJnZXQvY29yZS91c2VyXzxoYmFfbnVtPi88ZGV2aWNlX25hbWU+CisKK1RoaXMgbG9jYXRpb24gY29udGFpbnMgYXR0cmlidXRlcyBzdWNoIGFzICJod19ibG9ja19zaXplIiwgdGhhdAordXNlcnNwYWNlIG5lZWRzIHRvIGtub3cgZm9yIGNvcnJlY3Qgb3BlcmF0aW9uLgorCis8c3VidHlwZT4gd2lsbCBiZSBhIHVzZXJzcGFjZS1wcm9jZXNzLXVuaXF1ZSBzdHJpbmcgdG8gaWRlbnRpZnkgdGhlCitUQ01VIGRldmljZSBhcyBleHBlY3RpbmcgdG8gYmUgYmFja2VkIGJ5IGEgY2VydGFpbiBoYW5kbGVyLCBhbmQgPHBhdGg+Cit3aWxsIGJlIGFuIGFkZGl0aW9uYWwgaGFuZGxlci1zcGVjaWZpYyBzdHJpbmcgZm9yIHRoZSB1c2VyIHByb2Nlc3MgdG8KK2NvbmZpZ3VyZSB0aGUgZGV2aWNlLCBpZiBuZWVkZWQuIFRoZSBuYW1lIGNhbm5vdCBjb250YWluICc6JywgZHVlIHRvCitMSU8gbGltaXRhdGlvbnMuCisKK0ZvciBhbGwgZGV2aWNlcyBzbyBkaXNjb3ZlcmVkLCB0aGUgdXNlciBoYW5kbGVyIG9wZW5zIC9kZXYvdWlvWCBhbmQKK2NhbGxzIG1tYXAoKToKKworbW1hcChOVUxMLCBzaXplLCBQUk9UX1JFQUR8UFJPVF9XUklURSwgTUFQX1NIQVJFRCwgZmQsIDApCisKK3doZXJlIHNpemUgbXVzdCBiZSBlcXVhbCB0byB0aGUgdmFsdWUgcmVhZCBmcm9tCisvc3lzL2NsYXNzL3Vpby91aW9YL21hcHMvbWFwMC9zaXplLgorCisKK0RldmljZSBFdmVudHM6CisKK0lmIGEgbmV3IGRldmljZSBpcyBhZGRlZCBvciByZW1vdmVkLCBhIG5vdGlmaWNhdGlvbiB3aWxsIGJlIGJyb2FkY2FzdAorb3ZlciBuZXRsaW5rLCB1c2luZyBhIGdlbmVyaWMgbmV0bGluayBmYW1pbHkgbmFtZSBvZiAiVENNLVVTRVIiIGFuZCBhCittdWx0aWNhc3QgZ3JvdXAgbmFtZWQgImNvbmZpZyIuIFRoaXMgd2lsbCBpbmNsdWRlIHRoZSBVSU8gbmFtZSBhcworZGVzY3JpYmVkIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uLCBhcyB3ZWxsIGFzIHRoZSBVSU8gbWlub3IKK251bWJlci4gVGhpcyBzaG91bGQgYWxsb3cgdXNlcnNwYWNlIHRvIGlkZW50aWZ5IGJvdGggdGhlIFVJTyBkZXZpY2UgYW5kCit0aGUgTElPIGRldmljZSwgc28gdGhhdCBhZnRlciBkZXRlcm1pbmluZyB0aGUgZGV2aWNlIGlzIHN1cHBvcnRlZAorKGJhc2VkIG9uIHN1YnR5cGUpIGl0IGNhbiB0YWtlIHRoZSBhcHByb3ByaWF0ZSBhY3Rpb24uCisKKworT3RoZXIgY29udGluZ2VuY2llczoKKworVXNlcnNwYWNlIGhhbmRsZXIgcHJvY2VzcyBuZXZlciBhdHRhY2hlczoKKworLSBUQ01VIHdpbGwgcG9zdCBjb21tYW5kcywgYW5kIHRoZW4gYWJvcnQgdGhlbSBhZnRlciBhIHRpbWVvdXQgcGVyaW9kCisgICgzMCBzZWNvbmRzLikKKworVXNlcnNwYWNlIGhhbmRsZXIgcHJvY2VzcyBpcyBraWxsZWQ6CisKKy0gSXQgaXMgc3RpbGwgcG9zc2libGUgdG8gcmVzdGFydCBhbmQgcmUtY29ubmVjdCB0byBUQ01VCisgIGRldmljZXMuIENvbW1hbmQgcmluZyBpcyBwcmVzZXJ2ZWQuIEhvd2V2ZXIsIGFmdGVyIHRoZSB0aW1lb3V0IHBlcmlvZCwKKyAgdGhlIGtlcm5lbCB3aWxsIGFib3J0IHBlbmRpbmcgdGFza3MuCisKK1VzZXJzcGFjZSBoYW5kbGVyIHByb2Nlc3MgaGFuZ3M6CisKKy0gVGhlIGtlcm5lbCB3aWxsIGFib3J0IHBlbmRpbmcgdGFza3MgYWZ0ZXIgYSB0aW1lb3V0IHBlcmlvZC4KKworVXNlcnNwYWNlIGhhbmRsZXIgcHJvY2VzcyBpcyBtYWxpY2lvdXM6CisKKy0gVGhlIHByb2Nlc3MgY2FuIHRyaXZpYWxseSBicmVhayB0aGUgaGFuZGxpbmcgb2YgZGV2aWNlcyBpdCBjb250cm9scywKKyAgYnV0IHNob3VsZCBub3QgYmUgYWJsZSB0byBhY2Nlc3Mga2VybmVsIG1lbW9yeSBvdXRzaWRlIGl0cyBzaGFyZWQKKyAgbWVtb3J5IGFyZWFzLgorCisKK1dyaXRpbmcgYSB1c2VyIHBhc3MtdGhyb3VnaCBoYW5kbGVyICh3aXRoIGV4YW1wbGUgY29kZSkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSB1c2VyIHByb2Nlc3MgaGFuZGluZyBhIFRDTVUgZGV2aWNlIG11c3Qgc3VwcG9ydCB0aGUgZm9sbG93aW5nOgorCithKSBEaXNjb3ZlcmluZyBhbmQgY29uZmlndXJpbmcgVENNVSB1aW8gZGV2aWNlcworYikgV2FpdGluZyBmb3IgZXZlbnRzIG9uIHRoZSBkZXZpY2UocykKK2MpIE1hbmFnaW5nIHRoZSBjb21tYW5kIHJpbmc6IFBhcnNpbmcgb3BlcmF0aW9ucyBhbmQgY29tbWFuZHMsCisgICBwZXJmb3JtaW5nIHdvcmsgYXMgbmVlZGVkLCBzZXR0aW5nIHJlc3BvbnNlIGZpZWxkcyAoc2NzaV9zdGF0dXMgYW5kCisgICBwb3NzaWJseSBzZW5zZV9idWZmZXIpLCB1cGRhdGluZyBjbWRfdGFpbCwgYW5kIG5vdGlmeWluZyB0aGUga2VybmVsCisgICB0aGF0IHdvcmsgaGFzIGJlZW4gZmluaXNoZWQKKworRmlyc3QsIGNvbnNpZGVyIGluc3RlYWQgd3JpdGluZyBhIHBsdWdpbiBmb3IgdGNtdS1ydW5uZXIuIHRjbXUtcnVubmVyCitpbXBsZW1lbnRzIGFsbCBvZiB0aGlzLCBhbmQgcHJvdmlkZXMgYSBoaWdoZXItbGV2ZWwgQVBJIGZvciBwbHVnaW4KK2F1dGhvcnMuCisKK1RDTVUgaXMgZGVzaWduZWQgc28gdGhhdCBtdWx0aXBsZSB1bnJlbGF0ZWQgcHJvY2Vzc2VzIGNhbiBtYW5hZ2UgVENNVQorZGV2aWNlcyBzZXBhcmF0ZWx5LiBBbGwgaGFuZGxlcnMgc2hvdWxkIG1ha2Ugc3VyZSB0byBvbmx5IG9wZW4gdGhlaXIKK2RldmljZXMsIGJhc2VkIG9wb24gYSBrbm93biBzdWJ0eXBlIHN0cmluZy4KKworYSkgRGlzY292ZXJpbmcgYW5kIGNvbmZpZ3VyaW5nIFRDTVUgVUlPIGRldmljZXM6CisKKyhlcnJvciBjaGVja2luZyBvbWl0dGVkIGZvciBicmV2aXR5KQorCitpbnQgZmQsIGRldl9mZDsKK2NoYXIgYnVmWzI1Nl07Cit1bnNpZ25lZCBsb25nIGxvbmcgbWFwX2xlbjsKK3ZvaWQgKm1hcDsKKworZmQgPSBvcGVuKCIvc3lzL2NsYXNzL3Vpby91aW8wL25hbWUiLCBPX1JET05MWSk7CityZXQgPSByZWFkKGZkLCBidWYsIHNpemVvZihidWYpKTsKK2Nsb3NlKGZkKTsKK2J1ZltyZXQtMV0gPSAnXDAnOyAvKiBudWxsLXRlcm1pbmF0ZSBhbmQgY2hvcCBvZmYgdGhlIFxuICovCisKKy8qIHdlIG9ubHkgd2FudCB1aW8gZGV2aWNlcyB3aG9zZSBuYW1lIGlzIGEgZm9ybWF0IHdlIGV4cGVjdCAqLworaWYgKHN0cm5jbXAoYnVmLCAidGNtLXVzZXIiLCA4KSkKKwlleGl0KC0xKTsKKworLyogRnVydGhlciBjaGVja2luZyBmb3Igc3VidHlwZSBhbHNvIG5lZWRlZCBoZXJlICovCisKK2ZkID0gb3Blbigvc3lzL2NsYXNzL3Vpby8lcy9tYXBzL21hcDAvc2l6ZSwgT19SRE9OTFkpOworcmV0ID0gcmVhZChmZCwgYnVmLCBzaXplb2YoYnVmKSk7CitjbG9zZShmZCk7CitzdHJfYnVmW3JldC0xXSA9ICdcMCc7IC8qIG51bGwtdGVybWluYXRlIGFuZCBjaG9wIG9mZiB0aGUgXG4gKi8KKworbWFwX2xlbiA9IHN0cnRvdWxsKGJ1ZiwgTlVMTCwgMCk7CisKK2Rldl9mZCA9IG9wZW4oIi9kZXYvdWlvMCIsIE9fUkRXUik7CittYXAgPSBtbWFwKE5VTEwsIG1hcF9sZW4sIFBST1RfUkVBRHxQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBkZXZfZmQsIDApOworCisKK2IpIFdhaXRpbmcgZm9yIGV2ZW50cyBvbiB0aGUgZGV2aWNlKHMpCisKK3doaWxlICgxKSB7CisgIGNoYXIgYnVmWzRdOworCisgIGludCByZXQgPSByZWFkKGRldl9mZCwgYnVmLCA0KTsgLyogd2lsbCBibG9jayAqLworCisgIGhhbmRsZV9kZXZpY2VfZXZlbnRzKGRldl9mZCwgbWFwKTsKK30KKworCitjKSBNYW5hZ2luZyB0aGUgY29tbWFuZCByaW5nCisKKyNpbmNsdWRlIDxsaW51eC90YXJnZXRfY29yZV91c2VyLmg+CisKK2ludCBoYW5kbGVfZGV2aWNlX2V2ZW50cyhpbnQgZmQsIHZvaWQgKm1hcCkKK3sKKyAgc3RydWN0IHRjbXVfbWFpbGJveCAqbWIgPSBtYXA7CisgIHN0cnVjdCB0Y211X2NtZF9lbnRyeSAqZW50ID0gKHZvaWQgKikgbWIgKyBtYi0+Y21kcl9vZmYgKyBtYi0+Y21kX3RhaWw7CisgIGludCBkaWRfc29tZV93b3JrID0gMDsKKworICAvKiBQcm9jZXNzIGV2ZW50cyBmcm9tIGNtZCByaW5nIHVudGlsIHdlIGNhdGNoIHVwIHdpdGggY21kX2hlYWQgKi8KKyAgd2hpbGUgKGVudCAhPSAodm9pZCAqKW1iICsgbWItPmNtZHJfb2ZmICsgbWItPmNtZF9oZWFkKSB7CisKKyAgICBpZiAodGNtdV9oZHJfZ2V0X29wKGVudC0+aGRyLmxlbl9vcCkgPT0gVENNVV9PUF9DTUQpIHsKKyAgICAgIHVpbnQ4X3QgKmNkYiA9ICh2b2lkICopbWIgKyBlbnQtPnJlcS5jZGJfb2ZmOworICAgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKworICAgICAgLyogSGFuZGxlIGNvbW1hbmQgaGVyZS4gKi8KKyAgICAgIHByaW50ZigiU0NTSSBvcGNvZGU6IDB4JXhcbiIsIGNkYlswXSk7CisKKyAgICAgIC8qIFNldCByZXNwb25zZSBmaWVsZHMgKi8KKyAgICAgIGlmIChzdWNjZXNzKQorICAgICAgICBlbnQtPnJzcC5zY3NpX3N0YXR1cyA9IFNDU0lfTk9fU0VOU0U7CisgICAgICBlbHNlIHsKKyAgICAgICAgLyogQWxzbyBmaWxsIGluIHJzcC0+c2Vuc2VfYnVmZmVyIGhlcmUgKi8KKyAgICAgICAgZW50LT5yc3Auc2NzaV9zdGF0dXMgPSBTQ1NJX0NIRUNLX0NPTkRJVElPTjsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAodGNtdV9oZHJfZ2V0X29wKGVudC0+aGRyLmxlbl9vcCkgIT0gVENNVV9PUF9QQUQpIHsKKyAgICAgIC8qIFRlbGwgdGhlIGtlcm5lbCB3ZSBkaWRuJ3QgaGFuZGxlIHVua25vd24gb3Bjb2RlcyAqLworICAgICAgZW50LT5oZHIudWZsYWdzIHw9IFRDTVVfVUZMQUdfVU5LTk9XTl9PUDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAvKiBEbyBub3RoaW5nIGZvciBQQUQgZW50cmllcyBleGNlcHQgdXBkYXRlIGNtZF90YWlsICovCisgICAgfQorCisgICAgLyogdXBkYXRlIGNtZF90YWlsICovCisgICAgbWItPmNtZF90YWlsID0gKG1iLT5jbWRfdGFpbCArIHRjbXVfaGRyX2dldF9sZW4oJmVudC0+aGRyKSkgJSBtYi0+Y21kcl9zaXplOworICAgIGVudCA9ICh2b2lkICopIG1iICsgbWItPmNtZHJfb2ZmICsgbWItPmNtZF90YWlsOworICAgIGRpZF9zb21lX3dvcmsgPSAxOworICB9CisKKyAgLyogTm90aWZ5IHRoZSBrZXJuZWwgdGhhdCB3b3JrIGhhcyBiZWVuIGZpbmlzaGVkICovCisgIGlmIChkaWRfc29tZV93b3JrKSB7CisgICAgdWludDMyX3QgYnVmID0gMDsKKworICAgIHdyaXRlKGZkLCAmYnVmLCA0KTsKKyAgfQorCisgIHJldHVybiAwOworfQorCisKK0EgZmluYWwgbm90ZQorLS0tLS0tLS0tLS0tCisKK1BsZWFzZSBiZSBjYXJlZnVsIHRvIHJldHVybiBjb2RlcyBhcyBkZWZpbmVkIGJ5IHRoZSBTQ1NJCitzcGVjaWZpY2F0aW9ucy4gVGhlc2UgYXJlIGRpZmZlcmVudCB0aGFuIHNvbWUgdmFsdWVzIGRlZmluZWQgaW4gdGhlCitzY3NpL3Njc2kuaCBpbmNsdWRlIGZpbGUuIEZvciBleGFtcGxlLCBDSEVDSyBDT05ESVRJT04ncyBzdGF0dXMgY29kZQoraXMgMiwgbm90IDEuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RoZXJtYWwvY3B1LWNvb2xpbmctYXBpLnR4dCBiL0RvY3VtZW50YXRpb24vdGhlcm1hbC9jcHUtY29vbGluZy1hcGkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNjUzNTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3RoZXJtYWwvY3B1LWNvb2xpbmctYXBpLnR4dApAQCAtMCwwICsxLDE5NyBAQAorQ1BVIGNvb2xpbmcgQVBJcyBIb3cgVG8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1dyaXR0ZW4gYnkgQW1pdCBEYW5pZWwgS2FjaGhhcCA8YW1pdC5rYWNoaGFwQGxpbmFyby5vcmc+CisKK1VwZGF0ZWQ6IDYgSmFuIDIwMTUKKworQ29weXJpZ2h0IChjKSAgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkKGh0dHA6Ly93d3cuc2Ftc3VuZy5jb20pCisKKzAuIEludHJvZHVjdGlvbgorCitUaGUgZ2VuZXJpYyBjcHUgY29vbGluZyhmcmVxIGNsaXBwaW5nKSBwcm92aWRlcyByZWdpc3RyYXRpb24vdW5yZWdpc3RyYXRpb24gQVBJcwordG8gdGhlIGNhbGxlci4gVGhlIGJpbmRpbmcgb2YgdGhlIGNvb2xpbmcgZGV2aWNlcyB0byB0aGUgdHJpcCBwb2ludCBpcyBsZWZ0IGZvcgordGhlIHVzZXIuIFRoZSByZWdpc3RyYXRpb24gQVBJcyByZXR1cm5zIHRoZSBjb29saW5nIGRldmljZSBwb2ludGVyLgorCisxLiBjcHUgY29vbGluZyBBUElzCisKKzEuMSBjcHVmcmVxIHJlZ2lzdHJhdGlvbi91bnJlZ2lzdHJhdGlvbiBBUElzCisxLjEuMSBzdHJ1Y3QgdGhlcm1hbF9jb29saW5nX2RldmljZSAqY3B1ZnJlcV9jb29saW5nX3JlZ2lzdGVyKAorCXN0cnVjdCBjcHVtYXNrICpjbGlwX2NwdXMpCisKKyAgICBUaGlzIGludGVyZmFjZSBmdW5jdGlvbiByZWdpc3RlcnMgdGhlIGNwdWZyZXEgY29vbGluZyBkZXZpY2Ugd2l0aCB0aGUgbmFtZQorICAgICJ0aGVybWFsLWNwdWZyZXEtJXgiLiBUaGlzIGFwaSBjYW4gc3VwcG9ydCBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgY3B1ZnJlcQorICAgIGNvb2xpbmcgZGV2aWNlcy4KKworICAgY2xpcF9jcHVzOiBjcHVtYXNrIG9mIGNwdXMgd2hlcmUgdGhlIGZyZXF1ZW5jeSBjb25zdHJhaW50cyB3aWxsIGhhcHBlbi4KKworMS4xLjIgc3RydWN0IHRoZXJtYWxfY29vbGluZ19kZXZpY2UgKm9mX2NwdWZyZXFfY29vbGluZ19yZWdpc3RlcigKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY2xpcF9jcHVzKQorCisgICAgVGhpcyBpbnRlcmZhY2UgZnVuY3Rpb24gcmVnaXN0ZXJzIHRoZSBjcHVmcmVxIGNvb2xpbmcgZGV2aWNlIHdpdGgKKyAgICB0aGUgbmFtZSAidGhlcm1hbC1jcHVmcmVxLSV4IiBsaW5raW5nIGl0IHdpdGggYSBkZXZpY2UgdHJlZSBub2RlLCBpbgorICAgIG9yZGVyIHRvIGJpbmQgaXQgdmlhIHRoZSB0aGVybWFsIERUIGNvZGUuIFRoaXMgYXBpIGNhbiBzdXBwb3J0IG11bHRpcGxlCisgICAgaW5zdGFuY2VzIG9mIGNwdWZyZXEgY29vbGluZyBkZXZpY2VzLgorCisgICAgbnA6IHBvaW50ZXIgdG8gdGhlIGNvb2xpbmcgZGV2aWNlIGRldmljZSB0cmVlIG5vZGUKKyAgICBjbGlwX2NwdXM6IGNwdW1hc2sgb2YgY3B1cyB3aGVyZSB0aGUgZnJlcXVlbmN5IGNvbnN0cmFpbnRzIHdpbGwgaGFwcGVuLgorCisxLjEuMyBzdHJ1Y3QgdGhlcm1hbF9jb29saW5nX2RldmljZSAqY3B1ZnJlcV9wb3dlcl9jb29saW5nX3JlZ2lzdGVyKAorICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjbGlwX2NwdXMsIHUzMiBjYXBhY2l0YW5jZSwKKyAgICBnZXRfc3RhdGljX3QgcGxhdF9zdGF0aWNfZnVuYykKKworU2ltaWxhciB0byBjcHVmcmVxX2Nvb2xpbmdfcmVnaXN0ZXIsIHRoaXMgZnVuY3Rpb24gcmVnaXN0ZXJzIGEgY3B1ZnJlcQorY29vbGluZyBkZXZpY2UuICBVc2luZyB0aGlzIGZ1bmN0aW9uLCB0aGUgY29vbGluZyBkZXZpY2Ugd2lsbAoraW1wbGVtZW50IHRoZSBwb3dlciBleHRlbnNpb25zIGJ5IHVzaW5nIGEgc2ltcGxlIGNwdSBwb3dlciBtb2RlbC4gIFRoZQorY3B1cyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGVpciBPUFBzIHVzaW5nIHRoZSBPUFAgbGlicmFyeS4KKworVGhlIGFkZGl0aW9uYWwgcGFyYW1ldGVycyBhcmUgbmVlZGVkIGZvciB0aGUgcG93ZXIgbW9kZWwgKFNlZSAyLiBQb3dlcgorbW9kZWxzKS4gICJjYXBhY2l0YW5jZSIgaXMgdGhlIGR5bmFtaWMgcG93ZXIgY29lZmZpY2llbnQgKFNlZSAyLjEKK0R5bmFtaWMgcG93ZXIpLiAgInBsYXRfc3RhdGljX2Z1bmMiIGlzIGEgZnVuY3Rpb24gdG8gY2FsY3VsYXRlIHRoZQorc3RhdGljIHBvd2VyIGNvbnN1bWVkIGJ5IHRoZXNlIGNwdXMgKFNlZSAyLjIgU3RhdGljIHBvd2VyKS4KKworMS4xLjQgc3RydWN0IHRoZXJtYWxfY29vbGluZ19kZXZpY2UgKm9mX2NwdWZyZXFfcG93ZXJfY29vbGluZ19yZWdpc3RlcigKKyAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY2xpcF9jcHVzLCB1MzIgY2FwYWNpdGFuY2UsCisgICAgZ2V0X3N0YXRpY190IHBsYXRfc3RhdGljX2Z1bmMpCisKK1NpbWlsYXIgdG8gY3B1ZnJlcV9wb3dlcl9jb29saW5nX3JlZ2lzdGVyLCB0aGlzIGZ1bmN0aW9uIHJlZ2lzdGVyIGEKK2NwdWZyZXEgY29vbGluZyBkZXZpY2Ugd2l0aCBwb3dlciBleHRlbnNpb25zIHVzaW5nIHRoZSBkZXZpY2UgdHJlZQoraW5mb3JtYXRpb24gc3VwcGxpZWQgYnkgdGhlIG5wIHBhcmFtZXRlci4KKworMS4xLjUgdm9pZCBjcHVmcmVxX2Nvb2xpbmdfdW5yZWdpc3RlcihzdHJ1Y3QgdGhlcm1hbF9jb29saW5nX2RldmljZSAqY2RldikKKworICAgIFRoaXMgaW50ZXJmYWNlIGZ1bmN0aW9uIHVucmVnaXN0ZXJzIHRoZSAidGhlcm1hbC1jcHVmcmVxLSV4IiBjb29saW5nIGRldmljZS4KKworICAgIGNkZXY6IENvb2xpbmcgZGV2aWNlIHBvaW50ZXIgd2hpY2ggaGFzIHRvIGJlIHVucmVnaXN0ZXJlZC4KKworMi4gUG93ZXIgbW9kZWxzCisKK1RoZSBwb3dlciBBUEkgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucyBwcm92aWRlIGEgc2ltcGxlIHBvd2VyIG1vZGVsIGZvcgorQ1BVcy4gIFRoZSBjdXJyZW50IHBvd2VyIGlzIGNhbGN1bGF0ZWQgYXMgZHluYW1pYyArIChvcHRpb25hbGx5KQorc3RhdGljIHBvd2VyLiAgVGhpcyBwb3dlciBtb2RlbCByZXF1aXJlcyB0aGF0IHRoZSBvcGVyYXRpbmctcG9pbnRzIG9mCit0aGUgQ1BVcyBhcmUgcmVnaXN0ZXJlZCB1c2luZyB0aGUga2VybmVsJ3Mgb3BwIGxpYnJhcnkgYW5kIHRoZQorYGNwdWZyZXFfZnJlcXVlbmN5X3RhYmxlYCBpcyBhc3NpZ25lZCB0byB0aGUgYHN0cnVjdCBkZXZpY2VgIG9mIHRoZQorY3B1LiAgSWYgeW91IGFyZSB1c2luZyBDT05GSUdfQ1BVRlJFUV9EVCB0aGVuIHRoZQorYGNwdWZyZXFfZnJlcXVlbmN5X3RhYmxlYCBzaG91bGQgYWxyZWFkeSBiZSBhc3NpZ25lZCB0byB0aGUgY3B1CitkZXZpY2UuCisKK1RoZSBgcGxhdF9zdGF0aWNfZnVuY2AgcGFyYW1ldGVyIG9mIGBjcHVmcmVxX3Bvd2VyX2Nvb2xpbmdfcmVnaXN0ZXIoKWAKK2FuZCBgb2ZfY3B1ZnJlcV9wb3dlcl9jb29saW5nX3JlZ2lzdGVyKClgIGlzIG9wdGlvbmFsLiAgSWYgeW91IGRvbid0Citwcm92aWRlIGl0LCBvbmx5IGR5bmFtaWMgcG93ZXIgd2lsbCBiZSBjb25zaWRlcmVkLgorCisyLjEgRHluYW1pYyBwb3dlcgorCitUaGUgZHluYW1pYyBwb3dlciBjb25zdW1wdGlvbiBvZiBhIHByb2Nlc3NvciBkZXBlbmRzIG9uIG1hbnkgZmFjdG9ycy4KK0ZvciBhIGdpdmVuIHByb2Nlc3NvciBpbXBsZW1lbnRhdGlvbiB0aGUgcHJpbWFyeSBmYWN0b3JzIGFyZToKKworLSBUaGUgdGltZSB0aGUgcHJvY2Vzc29yIHNwZW5kcyBydW5uaW5nLCBjb25zdW1pbmcgZHluYW1pYyBwb3dlciwgYXMKKyAgY29tcGFyZWQgdG8gdGhlIHRpbWUgaW4gaWRsZSBzdGF0ZXMgd2hlcmUgZHluYW1pYyBjb25zdW1wdGlvbiBpcworICBuZWdsaWdpYmxlLiAgSGVyZWluIHdlIHJlZmVyIHRvIHRoaXMgYXMgJ3V0aWxpc2F0aW9uJy4KKy0gVGhlIHZvbHRhZ2UgYW5kIGZyZXF1ZW5jeSBsZXZlbHMgYXMgYSByZXN1bHQgb2YgRFZGUy4gIFRoZSBEVkZTCisgIGxldmVsIGlzIGEgZG9taW5hbnQgZmFjdG9yIGdvdmVybmluZyBwb3dlciBjb25zdW1wdGlvbi4KKy0gSW4gcnVubmluZyB0aW1lIHRoZSAnZXhlY3V0aW9uJyBiZWhhdmlvdXIgKGluc3RydWN0aW9uIHR5cGVzLCBtZW1vcnkKKyAgYWNjZXNzIHBhdHRlcm5zIGFuZCBzbyBmb3J0aCkgY2F1c2VzLCBpbiBtb3N0IGNhc2VzLCBhIHNlY29uZCBvcmRlcgorICB2YXJpYXRpb24uICBJbiBwYXRob2xvZ2ljYWwgY2FzZXMgdGhpcyB2YXJpYXRpb24gY2FuIGJlIHNpZ25pZmljYW50LAorICBidXQgdHlwaWNhbGx5IGl0IGlzIG9mIGEgbXVjaCBsZXNzZXIgaW1wYWN0IHRoYW4gdGhlIGZhY3RvcnMgYWJvdmUuCisKK0EgaGlnaCBsZXZlbCBkeW5hbWljIHBvd2VyIGNvbnN1bXB0aW9uIG1vZGVsIG1heSB0aGVuIGJlIHJlcHJlc2VudGVkIGFzOgorCitQZHluID0gZihydW4pICogVm9sdGFnZV4yICogRnJlcXVlbmN5ICogVXRpbGlzYXRpb24KKworZihydW4pIGhlcmUgcmVwcmVzZW50cyB0aGUgZGVzY3JpYmVkIGV4ZWN1dGlvbiBiZWhhdmlvdXIgYW5kIGl0cworcmVzdWx0IGhhcyBhIHVuaXRzIG9mIFdhdHRzL0h6L1ZvbHReMiAodGhpcyBvZnRlbiBleHByZXNzZWQgaW4KK21XL01Iei91Vm9sdF4yKQorCitUaGUgZGV0YWlsZWQgYmVoYXZpb3VyIGZvciBmKHJ1bikgY291bGQgYmUgbW9kZWxsZWQgb24tbGluZS4gIEhvd2V2ZXIsCitpbiBwcmFjdGljZSwgc3VjaCBhbiBvbi1saW5lIG1vZGVsIGhhcyBkZXBlbmRlbmNpZXMgb24gYSBudW1iZXIgb2YKK2ltcGxlbWVudGF0aW9uIHNwZWNpZmljIHByb2Nlc3NvciBzdXBwb3J0IGFuZCBjaGFyYWN0ZXJpc2F0aW9uCitmYWN0b3JzLiAgVGhlcmVmb3JlLCBpbiBpbml0aWFsIGltcGxlbWVudGF0aW9uIHRoYXQgY29udHJpYnV0aW9uIGlzCityZXByZXNlbnRlZCBhcyBhIGNvbnN0YW50IGNvZWZmaWNpZW50LiAgVGhpcyBpcyBhIHNpbXBsaWZpY2F0aW9uCitjb25zaXN0ZW50IHdpdGggdGhlIHJlbGF0aXZlIGNvbnRyaWJ1dGlvbiB0byBvdmVyYWxsIHBvd2VyIHZhcmlhdGlvbi4KKworSW4gdGhpcyBzaW1wbGlmaWVkIHJlcHJlc2VudGF0aW9uIG91ciBtb2RlbCBiZWNvbWVzOgorCitQZHluID0gQ2FwYWNpdGFuY2UgKiBWb2x0YWdlXjIgKiBGcmVxdWVuY3kgKiBVdGlsaXNhdGlvbgorCitXaGVyZSBgY2FwYWNpdGFuY2VgIGlzIGEgY29uc3RhbnQgdGhhdCByZXByZXNlbnRzIGFuIGluZGljYXRpdmUKK3J1bm5pbmcgdGltZSBkeW5hbWljIHBvd2VyIGNvZWZmaWNpZW50IGluIGZ1bmRhbWVudGFsIHVuaXRzIG9mCittVy9NSHovdVZvbHReMi4gIFR5cGljYWwgdmFsdWVzIGZvciBtb2JpbGUgQ1BVcyBtaWdodCBsaWUgaW4gcmFuZ2UKK2Zyb20gMTAwIHRvIDUwMC4gIEZvciByZWZlcmVuY2UsIHRoZSBhcHByb3hpbWF0ZSB2YWx1ZXMgZm9yIHRoZSBTb0MgaW4KK0FSTSdzIEp1bm8gRGV2ZWxvcG1lbnQgUGxhdGZvcm0gYXJlIDUzMCBmb3IgdGhlIENvcnRleC1BNTcgY2x1c3RlciBhbmQKKzE0MCBmb3IgdGhlIENvcnRleC1BNTMgY2x1c3Rlci4KKworCisyLjIgU3RhdGljIHBvd2VyCisKK1N0YXRpYyBsZWFrYWdlIHBvd2VyIGNvbnN1bXB0aW9uIGRlcGVuZHMgb24gYSBudW1iZXIgb2YgZmFjdG9ycy4gIEZvciBhCitnaXZlbiBjaXJjdWl0IGltcGxlbWVudGF0aW9uIHRoZSBwcmltYXJ5IGZhY3RvcnMgYXJlOgorCistIFRpbWUgdGhlIGNpcmN1aXQgc3BlbmRzIGluIGVhY2ggJ3Bvd2VyIHN0YXRlJworLSBUZW1wZXJhdHVyZQorLSBPcGVyYXRpbmcgdm9sdGFnZQorLSBQcm9jZXNzIGdyYWRlCisKK1RoZSB0aW1lIHRoZSBjaXJjdWl0IHNwZW5kcyBpbiBlYWNoICdwb3dlciBzdGF0ZScgZm9yIGEgZ2l2ZW4KK2V2YWx1YXRpb24gcGVyaW9kIGF0IGZpcnN0IG9yZGVyIG1lYW5zIE9GRiBvciBPTi4gIEhvd2V2ZXIsCisncmV0ZW50aW9uJyBzdGF0ZXMgY2FuIGFsc28gYmUgc3VwcG9ydGVkIHRoYXQgcmVkdWNlIHBvd2VyIGR1cmluZworaW5hY3RpdmUgcGVyaW9kcyB3aXRob3V0IGxvc3Mgb2YgY29udGV4dC4KKworTm90ZTogVGhlIHZpc2liaWxpdHkgb2Ygc3RhdGUgZW50cmllcyB0byB0aGUgT1MgY2FuIHZhcnksIGFjY29yZGluZyB0bworcGxhdGZvcm0gc3BlY2lmaWNzLCBhbmQgdGhpcyBjYW4gdGhlbiBpbXBhY3QgdGhlIGFjY3VyYWN5IG9mIGEgbW9kZWwKK2Jhc2VkIG9uIE9TIHN0YXRlIGluZm9ybWF0aW9uIGFsb25lLiAgSXQgbWlnaHQgYmUgcG9zc2libGUgaW4gc29tZQorY2FzZXMgdG8gZXh0cmFjdCBtb3JlIGFjY3VyYXRlIGluZm9ybWF0aW9uIGZyb20gc3lzdGVtIHJlc291cmNlcy4KKworVGhlIHRlbXBlcmF0dXJlLCBvcGVyYXRpbmcgdm9sdGFnZSBhbmQgcHJvY2VzcyAnZ3JhZGUnIChzbG93IHRvIGZhc3QpCitvZiB0aGUgY2lyY3VpdCBhcmUgYWxsIHNpZ25pZmljYW50IGZhY3RvcnMgaW4gc3RhdGljIGxlYWthZ2UgcG93ZXIKK2NvbnN1bXB0aW9uLiAgQWxsIG9mIHRoZXNlIGhhdmUgY29tcGxleCByZWxhdGlvbnNoaXBzIHRvIHN0YXRpYyBwb3dlci4KKworQ2lyY3VpdCBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBmYWN0b3JzIGluY2x1ZGUgdGhlIGNob3NlbiBzaWxpY29uCitwcm9jZXNzIGFzIHdlbGwgYXMgdGhlIHR5cGUsIG51bWJlciBhbmQgc2l6ZSBvZiB0cmFuc2lzdG9ycyBpbiBib3RoCit0aGUgbG9naWMgZ2F0ZXMgYW5kIGFueSBSQU0gZWxlbWVudHMgaW5jbHVkZWQuCisKK1RoZSBzdGF0aWMgcG93ZXIgY29uc3VtcHRpb24gbW9kZWxsaW5nIG11c3QgdGFrZSBpbnRvIGFjY291bnQgdGhlCitwb3dlciBtYW5hZ2VkIHJlZ2lvbnMgdGhhdCBhcmUgaW1wbGVtZW50ZWQuICBUYWtpbmcgdGhlIGV4YW1wbGUgb2YgYW4KK0FSTSBwcm9jZXNzb3IgY2x1c3RlciwgdGhlIG1vZGVsbGluZyB3b3VsZCB0YWtlIGludG8gYWNjb3VudCB3aGV0aGVyCitlYWNoIENQVSBjYW4gYmUgcG93ZXJlZCBPRkYgc2VwYXJhdGVseSBvciBpZiBvbmx5IGEgc2luZ2xlIHBvd2VyCityZWdpb24gaXMgaW1wbGVtZW50ZWQgZm9yIHRoZSBjb21wbGV0ZSBjbHVzdGVyLgorCitJbiBvbmUgdmlldywgdGhlcmUgYXJlIG90aGVycywgYSBzdGF0aWMgcG93ZXIgY29uc3VtcHRpb24gbW9kZWwgY2FuCit0aGVuIHN0YXJ0IGZyb20gYSBzZXQgb2YgcmVmZXJlbmNlIHZhbHVlcyBmb3IgZWFjaCBwb3dlciBtYW5hZ2VkCityZWdpb24gKGUuZy4gQ1BVLCBDbHVzdGVyL0wyKSBpbiBlYWNoIHN0YXRlIChlLmcuIE9OLCBPRkYpIGF0IGFuCithcmJpdHJhcnkgcHJvY2VzcyBncmFkZSwgdm9sdGFnZSBhbmQgdGVtcGVyYXR1cmUgcG9pbnQuICBUaGVzZSB2YWx1ZXMKK2FyZSB0aGVuIHNjYWxlZCBmb3IgYWxsIG9mIHRoZSBmb2xsb3dpbmc6IHRoZSB0aW1lIGluIGVhY2ggc3RhdGUsIHRoZQorcHJvY2VzcyBncmFkZSwgdGhlIGN1cnJlbnQgdGVtcGVyYXR1cmUgYW5kIHRoZSBvcGVyYXRpbmcgdm9sdGFnZS4KK0hvd2V2ZXIsIHNpbmNlIGJvdGggaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgYW5kIGNvbXBsZXggcmVsYXRpb25zaGlwcworZG9taW5hdGUgdGhlIGVzdGltYXRlLCB0aGUgYXBwcm9wcmlhdGUgaW50ZXJmYWNlIHRvIHRoZSBtb2RlbCBmcm9tIHRoZQorY3B1IGNvb2xpbmcgZGV2aWNlIGlzIHRvIHByb3ZpZGUgYSBmdW5jdGlvbiBjYWxsYmFjayB0aGF0IGNhbGN1bGF0ZXMKK3RoZSBzdGF0aWMgcG93ZXIgaW4gdGhpcyBwbGF0Zm9ybS4gIFdoZW4gcmVnaXN0ZXJpbmcgdGhlIGNwdSBjb29saW5nCitkZXZpY2UgcGFzcyBhIGZ1bmN0aW9uIHBvaW50ZXIgdGhhdCBmb2xsb3dzIHRoZSBgZ2V0X3N0YXRpY190YAorcHJvdG90eXBlOgorCisgICAgaW50IHBsYXRfZ2V0X3N0YXRpYyhjcHVtYXNrX3QgKmNwdW1hc2ssIGludCBpbnRlcnZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdm9sdGFnZSwgdTMyICZwb3dlcik7CisKK2BjcHVtYXNrYCBpcyB0aGUgY3B1bWFzayBvZiB0aGUgY3B1cyBpbnZvbHZlZCBpbiB0aGUgY2FsY3VsYXRpb24uCitgdm9sdGFnZWAgaXMgdGhlIHZvbHRhZ2UgYXQgd2hpY2ggdGhleSBhcmUgb3BlcmF0aW5nLiAgVGhlIGZ1bmN0aW9uCitzaG91bGQgY2FsY3VsYXRlIHRoZSBhdmVyYWdlIHN0YXRpYyBwb3dlciBmb3IgdGhlIGxhc3QgYGludGVydmFsYAorbWlsbGlzZWNvbmRzLiAgSXQgcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIC1FKiBvbiBlcnJvci4gIElmIGl0CitzdWNjZWVkcywgaXQgc2hvdWxkIHN0b3JlIHRoZSBzdGF0aWMgcG93ZXIgaW4gYHBvd2VyYC4gIFJlYWRpbmcgdGhlCit0ZW1wZXJhdHVyZSBvZiB0aGUgY3B1cyBkZXNjcmliZWQgYnkgYGNwdW1hc2tgIGlzIGxlZnQgZm9yCitwbGF0X2dldF9zdGF0aWMoKSB0byBkbyBhcyB0aGUgcGxhdGZvcm0ga25vd3MgYmVzdCB3aGljaCB0aGVybWFsCitzZW5zb3IgaXMgY2xvc2VzdCB0byB0aGUgY3B1LgorCitJZiBgcGxhdF9zdGF0aWNfZnVuY2AgaXMgTlVMTCwgc3RhdGljIHBvd2VyIGlzIGNvbnNpZGVyZWQgdG8gYmUKK25lZ2xpZ2libGUgZm9yIHRoaXMgcGxhdGZvcm0gYW5kIG9ubHkgZHluYW1pYyBwb3dlciBpcyBjb25zaWRlcmVkLgorCitUaGUgcGxhdGZvcm0gc3BlY2lmaWMgY2FsbGJhY2sgY2FuIHRoZW4gdXNlIGFueSBjb21iaW5hdGlvbiBvZiB0YWJsZXMKK2FuZC9vciBlcXVhdGlvbnMgdG8gcGVybXV0ZSB0aGUgZXN0aW1hdGVkIHZhbHVlLiAgUHJvY2VzcyBncmFkZQoraW5mb3JtYXRpb24gaXMgbm90IHBhc3NlZCB0byB0aGUgbW9kZWwgc2luY2UgYWNjZXNzIHRvIHN1Y2ggZGF0YSwgZnJvbQorb24tY2hpcCBtZWFzdXJlbWVudCBjYXBhYmlsaXR5IG9yIG1hbnVmYWN0dXJlIHRpbWUgZGF0YSwgaXMgcGxhdGZvcm0KK3NwZWNpZmljLgorCitOb3RlOiB0aGUgc2lnbmlmaWNhbmNlIG9mIHN0YXRpYyBwb3dlciBmb3IgQ1BVcyBpbiBjb21wYXJpc29uIHRvCitkeW5hbWljIHBvd2VyIGlzIGhpZ2hseSBkZXBlbmRlbnQgb24gaW1wbGVtZW50YXRpb24uICBHaXZlbiB0aGUKK3BvdGVudGlhbCBjb21wbGV4aXR5IGluIGltcGxlbWVudGF0aW9uLCB0aGUgaW1wb3J0YW5jZSBhbmQgYWNjdXJhY3kgb2YKK2l0cyBpbmNsdXNpb24gd2hlbiB1c2luZyBjcHUgY29vbGluZyBkZXZpY2VzIHNob3VsZCBiZSBhc3Nlc3NlZCBvbiBhCitjYXNlIGJ5IGNhc2UgYmFzaXMuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGhlcm1hbC9leHlub3NfdGhlcm1hbCBiL0RvY3VtZW50YXRpb24vdGhlcm1hbC9leHlub3NfdGhlcm1hbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDEwYzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi90aGVybWFsL2V4eW5vc190aGVybWFsCkBAIC0wLDAgKzEsNzcgQEAKK0tlcm5lbCBkcml2ZXIgZXh5bm9zX3RtdQorPT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorKiBBUk0gU0FNU1VORyBFWFlOT1M0LCBFWFlOT1M1IHNlcmllcyBvZiBTb0MKKyAgRGF0YXNoZWV0OiBOb3QgcHVibGljbHkgYXZhaWxhYmxlCisKK0F1dGhvcnM6IERvbmdnZXVuIEtpbSA8ZGc3Ny5raW1Ac2Ftc3VuZy5jb20+CitBdXRob3JzOiBBbWl0IERhbmllbCA8YW1pdC5kYW5pZWxAc2Ftc3VuZy5jb20+CisKK1RNVSBjb250cm9sbGVyIERlc2NyaXB0aW9uOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGFsbG93cyB0byByZWFkIHRlbXBlcmF0dXJlIGluc2lkZSBTQU1TVU5HIEVYWU5PUzQvNSBzZXJpZXMgb2YgU29DLgorCitUaGUgY2hpcCBvbmx5IGV4cG9zZXMgdGhlIG1lYXN1cmVkIDgtYml0IHRlbXBlcmF0dXJlIGNvZGUgdmFsdWUKK3Rocm91Z2ggYSByZWdpc3Rlci4KK1RlbXBlcmF0dXJlIGNhbiBiZSB0YWtlbiBmcm9tIHRoZSB0ZW1wZXJhdHVyZSBjb2RlLgorVGhlcmUgYXJlIHRocmVlIGVxdWF0aW9ucyBjb252ZXJ0aW5nIGZyb20gdGVtcGVyYXR1cmUgdG8gdGVtcGVyYXR1cmUgY29kZS4KKworVGhlIHRocmVlIGVxdWF0aW9ucyBhcmU6CisgIDEuIFR3byBwb2ludCB0cmltbWluZworCVRjID0gKFQgLSAyNSkgKiAoVEkyIC0gVEkxKSAvICg4NSAtIDI1KSArIFRJMQorCisgIDIuIE9uZSBwb2ludCB0cmltbWluZworCVRjID0gVCArIFRJMSAtIDI1CisKKyAgMy4gTm8gdHJpbW1pbmcKKwlUYyA9IFQgKyA1MAorCisgIFRjOiBUZW1wZXJhdHVyZSBjb2RlLCBUOiBUZW1wZXJhdHVyZSwKKyAgVEkxOiBUcmltbWluZyBpbmZvIGZvciAyNSBkZWdyZWUgQ2Vsc2l1cyAoc3RvcmVkIGF0IFRSSU1JTkZPIHJlZ2lzdGVyKQorICAgICAgIFRlbXBlcmF0dXJlIGNvZGUgbWVhc3VyZWQgYXQgMjUgZGVncmVlIENlbHNpdXMgd2hpY2ggaXMgdW5jaGFuZ2VkCisgIFRJMjogVHJpbW1pbmcgaW5mbyBmb3IgODUgZGVncmVlIENlbHNpdXMgKHN0b3JlZCBhdCBUUklNSU5GTyByZWdpc3RlcikKKyAgICAgICBUZW1wZXJhdHVyZSBjb2RlIG1lYXN1cmVkIGF0IDg1IGRlZ3JlZSBDZWxzaXVzIHdoaWNoIGlzIHVuY2hhbmdlZAorCitUTVUoVGhlcm1hbCBNYW5hZ2VtZW50IFVuaXQpIGluIEVYWU5PUzQvNSBnZW5lcmF0ZXMgaW50ZXJydXB0Cit3aGVuIHRlbXBlcmF0dXJlIGV4Y2VlZHMgcHJlLWRlZmluZWQgbGV2ZWxzLgorVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbmZpZ3VyYWJsZSB0aHJlc2hvbGQgaXMgZml2ZS4KK1RoZSB0aHJlc2hvbGQgbGV2ZWxzIGFyZSBkZWZpbmVkIGFzIGZvbGxvd3M6CisgIExldmVsXzA6IGN1cnJlbnQgdGVtcGVyYXR1cmUgPiB0cmlnZ2VyX2xldmVsXzAgKyB0aHJlc2hvbGQKKyAgTGV2ZWxfMTogY3VycmVudCB0ZW1wZXJhdHVyZSA+IHRyaWdnZXJfbGV2ZWxfMSArIHRocmVzaG9sZAorICBMZXZlbF8yOiBjdXJyZW50IHRlbXBlcmF0dXJlID4gdHJpZ2dlcl9sZXZlbF8yICsgdGhyZXNob2xkCisgIExldmVsXzM6IGN1cnJlbnQgdGVtcGVyYXR1cmUgPiB0cmlnZ2VyX2xldmVsXzMgKyB0aHJlc2hvbGQKKworICBUaGUgdGhyZXNob2xkIGFuZCBlYWNoIHRyaWdnZXJfbGV2ZWwgYXJlIHNldAorICB0aHJvdWdoIHRoZSBjb3JyZXNwb25kaW5nIHJlZ2lzdGVycy4KKworV2hlbiBhbiBpbnRlcnJ1cHQgb2NjdXJzLCB0aGlzIGRyaXZlciBub3RpZnkga2VybmVsIHRoZXJtYWwgZnJhbWV3b3JrCit3aXRoIHRoZSBmdW5jdGlvbiBleHlub3NfcmVwb3J0X3RyaWdnZXIuCitBbHRob3VnaCBhbiBpbnRlcnJ1cHQgY29uZGl0aW9uIGZvciBsZXZlbF8wIGNhbiBiZSBzZXQsCitpdCBjYW4gYmUgdXNlZCB0byBzeW5jaHJvbml6ZSB0aGUgY29vbGluZyBhY3Rpb24uCisKK1RNVSBkcml2ZXIgZGVzY3JpcHRpb246CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZXh5bm9zIHRoZXJtYWwgZHJpdmVyIGlzIHN0cnVjdHVyZWQgYXMsCisKKwkJCQkJS2VybmVsIENvcmUgdGhlcm1hbCBmcmFtZXdvcmsKKwkJCQkodGhlcm1hbF9jb3JlLmMsIHN0ZXBfd2lzZS5jLCBjcHVfY29vbGluZy5jKQorCQkJCQkJCQleCisJCQkJCQkJCXwKKwkJCQkJCQkJfAorVE1VIGNvbmZpZ3VyYXRpb24gZGF0YSAtLS0tLS0tPiBUTVUgRHJpdmVyICA8LS0tLS0tPiBFeHlub3MgQ29yZSB0aGVybWFsIHdyYXBwZXIKKyhleHlub3NfdG11X2RhdGEuYykJICAgICAgKGV4eW5vc190bXUuYykJICAgKGV4eW5vc190aGVybWFsX2NvbW1vbi5jKQorKGV4eW5vc190bXVfZGF0YS5oKQkgICAgICAoZXh5bm9zX3RtdS5oKQkgICAoZXh5bm9zX3RoZXJtYWxfY29tbW9uLmgpCisKK2EpIFRNVSBjb25maWd1cmF0aW9uIGRhdGE6IFRoaXMgY29uc2lzdCBvZiBUTVUgcmVnaXN0ZXIgb2Zmc2V0cy9iaXRmaWVsZHMKKwkJZGVzY3JpYmVkIHRocm91Z2ggc3RydWN0dXJlIGV4eW5vc190bXVfcmVnaXN0ZXJzLiBBbHNvIHNldmVyYWwKKwkJb3RoZXIgcGxhdGZvcm0gZGF0YSAoc3RydWN0IGV4eW5vc190bXVfcGxhdGZvcm1fZGF0YSkgbWVtYmVycworCQlhcmUgdXNlZCB0byBjb25maWd1cmUgdGhlIFRNVS4KK2IpIFRNVSBkcml2ZXI6IFRoaXMgY29tcG9uZW50IGluaXRpYWxpc2VzIHRoZSBUTVUgY29udHJvbGxlciBhbmQgc2V0cyBkaWZmZXJlbnQKKwkJdGhyZXNob2xkcy4gSXQgaW52b2tlcyBjb3JlIHRoZXJtYWwgaW1wbGVtZW50YXRpb24gd2l0aCB0aGUgY2FsbAorCQlleHlub3NfcmVwb3J0X3RyaWdnZXIuCitjKSBFeHlub3MgQ29yZSB0aGVybWFsIHdyYXBwZXI6IFRoaXMgcHJvdmlkZXMgMyB3cmFwcGVyIGZ1bmN0aW9uIHRvIHVzZSB0aGUKKwkJS2VybmVsIGNvcmUgdGhlcm1hbCBmcmFtZXdvcmsuIFRoZXkgYXJlIGV4eW5vc191bnJlZ2lzdGVyX3RoZXJtYWwsCisJCWV4eW5vc19yZWdpc3Rlcl90aGVybWFsIGFuZCBleHlub3NfcmVwb3J0X3RyaWdnZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RoZXJtYWwvZXh5bm9zX3RoZXJtYWxfZW11bGF0aW9uIGIvRG9jdW1lbnRhdGlvbi90aGVybWFsL2V4eW5vc190aGVybWFsX2VtdWxhdGlvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTVlZmVjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi90aGVybWFsL2V4eW5vc190aGVybWFsX2VtdWxhdGlvbgpAQCAtMCwwICsxLDUzIEBACitFWFlOT1MgRU1VTEFUSU9OIE1PREUKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcworCitXcml0dGVuIGJ5IEpvbmdod2EgTGVlIDxqb25naHdhMy5sZWVAc2Ftc3VuZy5jb20+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitFeHlub3MgNHgxMiAoNDIxMiwgNDQxMikgYW5kIDUgc2VyaWVzIHByb3ZpZGUgZW11bGF0aW9uIG1vZGUgZm9yIHRoZXJtYWwgbWFuYWdlbWVudCB1bml0LgorVGhlcm1hbCBlbXVsYXRpb24gbW9kZSBzdXBwb3J0cyBzb2Z0d2FyZSBkZWJ1ZyBmb3IgVE1VJ3Mgb3BlcmF0aW9uLiBVc2VyIGNhbiBzZXQgdGVtcGVyYXR1cmUKK21hbnVhbGx5IHdpdGggc29mdHdhcmUgY29kZSBhbmQgVE1VIHdpbGwgcmVhZCBjdXJyZW50IHRlbXBlcmF0dXJlIGZyb20gdXNlciB2YWx1ZSBub3QgZnJvbQorc2Vuc29yJ3MgdmFsdWUuCisKK0VuYWJsaW5nIENPTkZJR19USEVSTUFMX0VNVUxBVElPTiBvcHRpb24gd2lsbCBtYWtlIHRoaXMgc3VwcG9ydCBhdmFpbGFibGUuCitXaGVuIGl0J3MgZW5hYmxlZCwgc3lzZnMgbm9kZSB3aWxsIGJlIGNyZWF0ZWQgYXMKKy9zeXMvZGV2aWNlcy92aXJ0dWFsL3RoZXJtYWwvdGhlcm1hbF96b25lJ3pvbmUgaWQnL2VtdWxfdGVtcC4KKworVGhlIHN5c2ZzIG5vZGUsICdlbXVsX25vZGUnLCB3aWxsIGNvbnRhaW4gdmFsdWUgMCBmb3IgdGhlIGluaXRpYWwgc3RhdGUuIFdoZW4geW91IGlucHV0IGFueQordGVtcGVyYXR1cmUgeW91IHdhbnQgdG8gdXBkYXRlIHRvIHN5c2ZzIG5vZGUsIGl0IGF1dG9tYXRpY2FsbHkgZW5hYmxlIGVtdWxhdGlvbiBtb2RlIGFuZAorY3VycmVudCB0ZW1wZXJhdHVyZSB3aWxsIGJlIGNoYW5nZWQgaW50byBpdC4KKyhFeHlub3MgYWxzbyBzdXBwb3J0cyB1c2VyIGNoYW5nZWFibGUgZGVsYXkgdGltZSB3aGljaCB3b3VsZCBiZSB1c2VkIHRvIGRlbGF5IG9mCisgY2hhbmdpbmcgdGVtcGVyYXR1cmUuIEhvd2V2ZXIsIHRoaXMgbm9kZSBvbmx5IHVzZXMgc2FtZSBkZWxheSBvZiByZWFsIHNlbnNpbmcgdGltZSwgOTM4dXMuKQorCitFeHlub3MgZW11bGF0aW9uIG1vZGUgcmVxdWlyZXMgc3luY2hyb25vdXMgb2YgdmFsdWUgY2hhbmdpbmcgYW5kIGVuYWJsaW5nLiBJdCBtZWFucyB3aGVuIHlvdQord2FudCB0byB1cGRhdGUgdGhlIGFueSB2YWx1ZSBvZiBkZWxheSBvciBuZXh0IHRlbXBlcmF0dXJlLCB0aGVuIHlvdSBoYXZlIHRvIGVuYWJsZSBlbXVsYXRpb24KK21vZGUgYXQgdGhlIHNhbWUgdGltZS4gKE9yIHlvdSBoYXZlIHRvIGtlZXAgdGhlIG1vZGUgZW5hYmxpbmcuKSBJZiB5b3UgZG9uJ3QsIGl0IGZhaWxzIHRvCitjaGFuZ2UgdGhlIHZhbHVlIHRvIHVwZGF0ZWQgb25lIGFuZCBqdXN0IHVzZSBsYXN0IHN1Y2NlZXNzZnVsIHZhbHVlIHJlcGVhdGVkbHkuIFRoYXQncyB3aHkKK3RoaXMgbm9kZSBnaXZlcyB1c2VycyB0aGUgcmlnaHQgdG8gY2hhbmdlIHRlcm1lcnBhdHVyZSBvbmx5LiBKdXN0IG9uZSBpbnRlcmZhY2UgbWFrZXMgaXQgbW9yZQorc2ltcGx5IHRvIHVzZS4KKworRGlzYWJsaW5nIGVtdWxhdGlvbiBtb2RlIG9ubHkgcmVxdWlyZXMgd3JpdGluZyB2YWx1ZSAwIHRvIHN5c2ZzIG5vZGUuCisKKworVEVNUAkxMjAgfAorCSAgICB8CisJMTAwIHwKKwkgICAgfAorCSA4MCB8CisJICAgIHwJCSAgICAgCSAJICstLS0tLS0tLS0tLQorCSA2MCB8ICAgICAgCQkgICAgIAkgfAkgICAgfAorCSAgICB8CSAgICAgICAgICAgKy0tLS0tLS0tLS0tLS18ICAgICAgICAgIHwKKwkgNDAgfCAgICAgICAgICAgICAgfCAgICAgICAgIAkgfCAgICAgICAgICB8CisJICAgIHwJCSAgIHwJICAgICAJIHwgICAgICAgICAgfAorCSAyMCB8CQkgICB8CSAgICAgCSB8ICAgICAgICAgICstLS0tLS0tLS0tCisJICAgIHwJIAkgICB8CSAgICAgCSB8ICAgICAgICAgIHwgICAgICAgICAgfAorCSAgMCB8X19fX19fX19fX19fX198X19fX19fX19fX19fX3xfX19fX19fX19ffF9fX19fX19fX198X19fX19fX19fCisJCSAgIEEJICAgIAkgQQkgICAgQQkgICAJICAgICAgIEEgICAgIFRJTUUKKwkJICAgfDwtLS0tLT58CSB8PC0tLS0tPnwgIHw8LS0tLS0+fAkgICAgICAgfAorCQkgICB8IDkzOHVzIHwgIAkgfAkgfCAgfCAgICAgICB8ICAgICAgICAgIHwKK2VtdWxhdGlvbiAgICA6ICAwICA1MAkgICB8ICAJIDcwICAgICAgfCAgMjAgICAgICB8ICAgICAgICAgIDAKK2N1cnJlbnQgdGVtcCA6ICAgc2Vuc29yICAgNTAJCSA3MCAgICAgICAgIDIwCSAgICAgIHNlbnNvcgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90aGVybWFsL2ludGVsX3Bvd2VyY2xhbXAudHh0IGIvRG9jdW1lbnRhdGlvbi90aGVybWFsL2ludGVsX3Bvd2VyY2xhbXAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzMmRlNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3RoZXJtYWwvaW50ZWxfcG93ZXJjbGFtcC50eHQKQEAgLTAsMCArMSwzMDcgQEAKKwkJCSA9PT09PT09PT09PT09PT09PT09PT09PQorCQkJIElOVEVMIFBPV0VSQ0xBTVAgRFJJVkVSCisJCQkgPT09PT09PT09PT09PT09PT09PT09PT0KK0J5OiBBcmphbiB2YW4gZGUgVmVuIDxhcmphbkBsaW51eC5pbnRlbC5jb20+CisgICAgSmFjb2IgUGFuIDxqYWNvYi5qdW4ucGFuQGxpbnV4LmludGVsLmNvbT4KKworQ29udGVudHM6CisJKCopIEludHJvZHVjdGlvbgorCSAgICAtIEdvYWxzIGFuZCBPYmplY3RpdmVzCisKKwkoKikgVGhlb3J5IG9mIE9wZXJhdGlvbgorCSAgICAtIElkbGUgSW5qZWN0aW9uCisJICAgIC0gQ2FsaWJyYXRpb24KKworCSgqKSBQZXJmb3JtYW5jZSBBbmFseXNpcworCSAgICAtIEVmZmVjdGl2ZW5lc3MgYW5kIExpbWl0YXRpb25zCisJICAgIC0gUG93ZXIgdnMgUGVyZm9ybWFuY2UKKwkgICAgLSBTY2FsYWJpbGl0eQorCSAgICAtIENhbGlicmF0aW9uCisJICAgIC0gQ29tcGFyaXNvbiB3aXRoIEFsdGVybmF0aXZlIFRlY2huaXF1ZXMKKworCSgqKSBVc2FnZSBhbmQgSW50ZXJmYWNlcworCSAgICAtIEdlbmVyaWMgVGhlcm1hbCBMYXllciAoc3lzZnMpCisJICAgIC0gS2VybmVsIEFQSXMgKFRCRCkKKworPT09PT09PT09PT09CitJTlRST0RVQ1RJT04KKz09PT09PT09PT09PQorCitDb25zaWRlciB0aGUgc2l0dWF0aW9uIHdoZXJlIGEgc3lzdGVt4oCZcyBwb3dlciBjb25zdW1wdGlvbiBtdXN0IGJlCityZWR1Y2VkIGF0IHJ1bnRpbWUsIGR1ZSB0byBwb3dlciBidWRnZXQsIHRoZXJtYWwgY29uc3RyYWludCwgb3Igbm9pc2UKK2xldmVsLCBhbmQgd2hlcmUgYWN0aXZlIGNvb2xpbmcgaXMgbm90IHByZWZlcnJlZC4gU29mdHdhcmUgbWFuYWdlZAorcGFzc2l2ZSBwb3dlciByZWR1Y3Rpb24gbXVzdCBiZSBwZXJmb3JtZWQgdG8gcHJldmVudCB0aGUgaGFyZHdhcmUKK2FjdGlvbnMgdGhhdCBhcmUgZGVzaWduZWQgZm9yIGNhdGFzdHJvcGhpYyBzY2VuYXJpb3MuCisKK0N1cnJlbnRseSwgUC1zdGF0ZXMsIFQtc3RhdGVzIChjbG9jayBtb2R1bGF0aW9uKSwgYW5kIENQVSBvZmZsaW5pbmcKK2FyZSB1c2VkIGZvciBDUFUgdGhyb3R0bGluZy4KKworT24gSW50ZWwgQ1BVcywgQy1zdGF0ZXMgcHJvdmlkZSBlZmZlY3RpdmUgcG93ZXIgcmVkdWN0aW9uLCBidXQgc28gZmFyCit0aGV54oCZcmUgb25seSB1c2VkIG9wcG9ydHVuaXN0aWNhbGx5LCBiYXNlZCBvbiB3b3JrbG9hZC4gV2l0aCB0aGUKK2RldmVsb3BtZW50IG9mIGludGVsX3Bvd2VyY2xhbXAgZHJpdmVyLCB0aGUgbWV0aG9kIG9mIHN5bmNocm9uaXppbmcKK2lkbGUgaW5qZWN0aW9uIGFjcm9zcyBhbGwgb25saW5lIENQVSB0aHJlYWRzIHdhcyBpbnRyb2R1Y2VkLiBUaGUgZ29hbAoraXMgdG8gYWNoaWV2ZSBmb3JjZWQgYW5kIGNvbnRyb2xsYWJsZSBDLXN0YXRlIHJlc2lkZW5jeS4KKworVGVzdC9BbmFseXNpcyBoYXMgYmVlbiBtYWRlIGluIHRoZSBhcmVhcyBvZiBwb3dlciwgcGVyZm9ybWFuY2UsCitzY2FsYWJpbGl0eSwgYW5kIHVzZXIgZXhwZXJpZW5jZS4gSW4gbWFueSBjYXNlcywgY2xlYXIgYWR2YW50YWdlIGlzCitzaG93biBvdmVyIHRha2luZyB0aGUgQ1BVIG9mZmxpbmUgb3IgbW9kdWxhdGluZyB0aGUgQ1BVIGNsb2NrLgorCisKKz09PT09PT09PT09PT09PT09PT0KK1RIRU9SWSBPRiBPUEVSQVRJT04KKz09PT09PT09PT09PT09PT09PT0KKworSWRsZSBJbmplY3Rpb24KKy0tLS0tLS0tLS0tLS0tCisKK09uIG1vZGVybiBJbnRlbCBwcm9jZXNzb3JzIChOZWhhbGVtIG9yIGxhdGVyKSwgcGFja2FnZSBsZXZlbCBDLXN0YXRlCityZXNpZGVuY3kgaXMgYXZhaWxhYmxlIGluIE1TUnMsIHRodXMgYWxzbyBhdmFpbGFibGUgdG8gdGhlIGtlcm5lbC4KKworVGhlc2UgTVNScyBhcmU6CisgICAgICAjZGVmaW5lIE1TUl9QS0dfQzJfUkVTSURFTkNZCTB4NjBECisgICAgICAjZGVmaW5lIE1TUl9QS0dfQzNfUkVTSURFTkNZCTB4M0Y4CisgICAgICAjZGVmaW5lIE1TUl9QS0dfQzZfUkVTSURFTkNZCTB4M0Y5CisgICAgICAjZGVmaW5lIE1TUl9QS0dfQzdfUkVTSURFTkNZCTB4M0ZBCisKK0lmIHRoZSBrZXJuZWwgY2FuIGFsc28gaW5qZWN0IGlkbGUgdGltZSB0byB0aGUgc3lzdGVtLCB0aGVuIGEKK2Nsb3NlZC1sb29wIGNvbnRyb2wgc3lzdGVtIGNhbiBiZSBlc3RhYmxpc2hlZCB0aGF0IG1hbmFnZXMgcGFja2FnZQorbGV2ZWwgQy1zdGF0ZS4gVGhlIGludGVsX3Bvd2VyY2xhbXAgZHJpdmVyIGlzIGNvbmNlaXZlZCBhcyBzdWNoIGEKK2NvbnRyb2wgc3lzdGVtLCB3aGVyZSB0aGUgdGFyZ2V0IHNldCBwb2ludCBpcyBhIHVzZXItc2VsZWN0ZWQgaWRsZQorcmF0aW8gKGJhc2VkIG9uIHBvd2VyIHJlZHVjdGlvbiksIGFuZCB0aGUgZXJyb3IgaXMgdGhlIGRpZmZlcmVuY2UKK2JldHdlZW4gdGhlIGFjdHVhbCBwYWNrYWdlIGxldmVsIEMtc3RhdGUgcmVzaWRlbmN5IHJhdGlvIGFuZCB0aGUgdGFyZ2V0IGlkbGUKK3JhdGlvLgorCitJbmplY3Rpb24gaXMgY29udHJvbGxlZCBieSBoaWdoIHByaW9yaXR5IGtlcm5lbCB0aHJlYWRzLCBzcGF3bmVkIGZvcgorZWFjaCBvbmxpbmUgQ1BVLgorCitUaGVzZSBrZXJuZWwgdGhyZWFkcywgd2l0aCBTQ0hFRF9GSUZPIGNsYXNzLCBhcmUgY3JlYXRlZCB0byBwZXJmb3JtCitjbGFtcGluZyBhY3Rpb25zIG9mIGNvbnRyb2xsZWQgZHV0eSByYXRpbyBhbmQgZHVyYXRpb24uIEVhY2ggcGVyLUNQVQordGhyZWFkIHN5bmNocm9uaXplcyBpdHMgaWRsZSB0aW1lIGFuZCBkdXJhdGlvbiwgYmFzZWQgb24gdGhlIHJvdW5kaW5nCitvZiBqaWZmaWVzLCBzbyBhY2N1bXVsYXRlZCBlcnJvcnMgY2FuIGJlIHByZXZlbnRlZCB0byBhdm9pZCBhIGppdHRlcnkKK2VmZmVjdC4gVGhyZWFkcyBhcmUgYWxzbyBib3VuZCB0byB0aGUgQ1BVIHN1Y2ggdGhhdCB0aGV5IGNhbm5vdCBiZQorbWlncmF0ZWQsIHVubGVzcyB0aGUgQ1BVIGlzIHRha2VuIG9mZmxpbmUuIEluIHRoaXMgY2FzZSwgdGhyZWFkcworYmVsb25nIHRvIHRoZSBvZmZsaW5lZCBDUFVzIHdpbGwgYmUgdGVybWluYXRlZCBpbW1lZGlhdGVseS4KKworUnVubmluZyBhcyBTQ0hFRF9GSUZPIGFuZCByZWxhdGl2ZWx5IGhpZ2ggcHJpb3JpdHksIGFsc28gYWxsb3dzIHN1Y2gKK3NjaGVtZSB0byB3b3JrIGZvciBib3RoIHByZWVtcHRhYmxlIGFuZCBub24tcHJlZW1wdGFibGUga2VybmVscy4KK0FsaWdubWVudCBvZiBpZGxlIHRpbWUgYXJvdW5kIGppZmZpZXMgZW5zdXJlcyBzY2FsYWJpbGl0eSBmb3IgSFoKK3ZhbHVlcy4gVGhpcyBlZmZlY3QgY2FuIGJlIGJldHRlciB2aXN1YWxpemVkIHVzaW5nIGEgUGVyZiB0aW1lY2hhcnQuCitUaGUgZm9sbG93aW5nIGRpYWdyYW0gc2hvd3MgdGhlIGJlaGF2aW9yIG9mIGtlcm5lbCB0aHJlYWQKK2tpZGxlX2luamVjdC9jcHUuIER1cmluZyBpZGxlIGluamVjdGlvbiwgaXQgcnVucyBtb25pdG9yL213YWl0IGlkbGUKK2ZvciBhIGdpdmVuICJkdXJhdGlvbiIsIHRoZW4gcmVsaW5xdWlzaGVzIHRoZSBDUFUgdG8gb3RoZXIgdGFza3MsCit1bnRpbCB0aGUgbmV4dCB0aW1lIGludGVydmFsLgorCitUaGUgTk9IWiBzY2hlZHVsZSB0aWNrIGlzIGRpc2FibGVkIGR1cmluZyBpZGxlIHRpbWUsIGJ1dCBpbnRlcnJ1cHRzCithcmUgbm90IG1hc2tlZC4gVGVzdHMgc2hvdyB0aGF0IHRoZSBleHRyYSB3YWtldXBzIGZyb20gc2NoZWR1bGVyIHRpY2sKK2hhdmUgYSBkcmFtYXRpYyBpbXBhY3Qgb24gdGhlIGVmZmVjdGl2ZW5lc3Mgb2YgdGhlIHBvd2VyY2xhbXAgZHJpdmVyCitvbiBsYXJnZSBzY2FsZSBzeXN0ZW1zIChXZXN0bWVyZSBzeXN0ZW0gd2l0aCA4MCBwcm9jZXNzb3JzKS4KKworQ1BVMAorCQkgIF9fX19fX19fX19fXyAgICAgICAgICBfX19fX19fX19fX18KK2tpZGxlX2luamVjdC8wICAgfCAgIHNsZWVwICAgIHwgIG13YWl0IHwgIHNsZWVwICAgICB8CisJX19fX19fX19ffCAgICAgICAgICAgIHxfX19fX19fX3wgICAgICAgICAgICB8X19fX19fXworCQkJICAgICAgIGR1cmF0aW9uCitDUFUxCisJCSAgX19fX19fX19fX19fICAgICAgICAgIF9fX19fX19fX19fXwora2lkbGVfaW5qZWN0LzEgICB8ICAgc2xlZXAgICAgfCAgbXdhaXQgfCAgc2xlZXAgICAgIHwKKwlfX19fX19fX198ICAgICAgICAgICAgfF9fX19fX19ffCAgICAgICAgICAgIHxfX19fX19fCisJCQkgICAgICBeCisJCQkgICAgICB8CisJCQkgICAgICB8CisJCQkgICAgICByb3VuZHVwKGppZmZpZXMsIGludGVydmFsKQorCitPbmx5IG9uZSBDUFUgaXMgYWxsb3dlZCB0byBjb2xsZWN0IHN0YXRpc3RpY3MgYW5kIHVwZGF0ZSBnbG9iYWwKK2NvbnRyb2wgcGFyYW1ldGVycy4gVGhpcyBDUFUgaXMgcmVmZXJyZWQgdG8gYXMgdGhlIGNvbnRyb2xsaW5nIENQVSBpbgordGhpcyBkb2N1bWVudC4gVGhlIGNvbnRyb2xsaW5nIENQVSBpcyBlbGVjdGVkIGF0IHJ1bnRpbWUsIHdpdGggYQorcG9saWN5IHRoYXQgZmF2b3JzIEJTUCwgdGFraW5nIGludG8gYWNjb3VudCB0aGUgcG9zc2liaWxpdHkgb2YgYSBDUFUKK2hvdC1wbHVnLgorCitJbiB0ZXJtcyBvZiBkeW5hbWljcyBvZiB0aGUgaWRsZSBjb250cm9sIHN5c3RlbSwgcGFja2FnZSBsZXZlbCBpZGxlCit0aW1lIGlzIGNvbnNpZGVyZWQgbGFyZ2VseSBhcyBhIG5vbi1jYXVzYWwgc3lzdGVtIHdoZXJlIGl0cyBiZWhhdmlvcgorY2Fubm90IGJlIGJhc2VkIG9uIHRoZSBwYXN0IG9yIGN1cnJlbnQgaW5wdXQuIFRoZXJlZm9yZSwgdGhlCitpbnRlbF9wb3dlcmNsYW1wIGRyaXZlciBhdHRlbXB0cyB0byBlbmZvcmNlIHRoZSBkZXNpcmVkIGlkbGUgdGltZQoraW5zdGFudGx5IGFzIGdpdmVuIGlucHV0ICh0YXJnZXQgaWRsZSByYXRpbykuIEFmdGVyIGluamVjdGlvbiwKK3Bvd2VyY2xhbXAgbW9uaW9ycyB0aGUgYWN0dWFsIGlkbGUgZm9yIGEgZ2l2ZW4gdGltZSB3aW5kb3cgYW5kIGFkanVzdAordGhlIG5leHQgaW5qZWN0aW9uIGFjY29yZGluZ2x5IHRvIGF2b2lkIG92ZXIvdW5kZXIgY29ycmVjdGlvbi4KKworV2hlbiB1c2VkIGluIGEgY2F1c2FsIGNvbnRyb2wgc3lzdGVtLCBzdWNoIGFzIGEgdGVtcGVyYXR1cmUgY29udHJvbCwKK2l0IGlzIHVwIHRvIHRoZSB1c2VyIG9mIHRoaXMgZHJpdmVyIHRvIGltcGxlbWVudCBhbGdvcml0aG1zIHdoZXJlCitwYXN0IHNhbXBsZXMgYW5kIG91dHB1dHMgYXJlIGluY2x1ZGVkIGluIHRoZSBmZWVkYmFjay4gRm9yIGV4YW1wbGUsIGEKK1BJRC1iYXNlZCB0aGVybWFsIGNvbnRyb2xsZXIgY2FuIHVzZSB0aGUgcG93ZXJjbGFtcCBkcml2ZXIgdG8KK21haW50YWluIGEgZGVzaXJlZCB0YXJnZXQgdGVtcGVyYXR1cmUsIGJhc2VkIG9uIGludGVncmFsIGFuZAorZGVyaXZhdGl2ZSBnYWlucyBvZiB0aGUgcGFzdCBzYW1wbGVzLgorCisKKworQ2FsaWJyYXRpb24KKy0tLS0tLS0tLS0tCitEdXJpbmcgc2NhbGFiaWxpdHkgdGVzdGluZywgaXQgaXMgb2JzZXJ2ZWQgdGhhdCBzeW5jaHJvbml6ZWQgYWN0aW9ucworYW1vbmcgQ1BVcyBiZWNvbWUgY2hhbGxlbmdpbmcgYXMgdGhlIG51bWJlciBvZiBjb3JlcyBncm93cy4gVGhpcyBpcworYWxzbyB0cnVlIGZvciB0aGUgYWJpbGl0eSBvZiBhIHN5c3RlbSB0byBlbnRlciBwYWNrYWdlIGxldmVsIEMtc3RhdGVzLgorCitUbyBtYWtlIHN1cmUgdGhlIGludGVsX3Bvd2VyY2xhbXAgZHJpdmVyIHNjYWxlcyB3ZWxsLCBvbmxpbmUKK2NhbGlicmF0aW9uIGlzIGltcGxlbWVudGVkLiBUaGUgZ29hbHMgZm9yIGRvaW5nIHN1Y2ggYSBjYWxpYnJhdGlvbgorYXJlOgorCithKSBkZXRlcm1pbmUgdGhlIGVmZmVjdGl2ZSByYW5nZSBvZiBpZGxlIGluamVjdGlvbiByYXRpbworYikgZGV0ZXJtaW5lIHRoZSBhbW91bnQgb2YgY29tcGVuc2F0aW9uIG5lZWRlZCBhdCBlYWNoIHRhcmdldCByYXRpbworCitDb21wZW5zYXRpb24gdG8gZWFjaCB0YXJnZXQgcmF0aW8gY29uc2lzdHMgb2YgdHdvIHBhcnRzOgorCisgICAgICAgIGEpIHN0ZWFkeSBzdGF0ZSBlcnJvciBjb21wZW5zYXRpb24KKwlUaGlzIGlzIHRvIG9mZnNldCB0aGUgZXJyb3Igb2NjdXJyaW5nIHdoZW4gdGhlIHN5c3RlbSBjYW4KKwllbnRlciBpZGxlIHdpdGhvdXQgZXh0cmEgd2FrZXVwcyAoc3VjaCBhcyBleHRlcm5hbCBpbnRlcnJ1cHRzKS4KKworCWIpIGR5bmFtaWMgZXJyb3IgY29tcGVuc2F0aW9uCisJV2hlbiBhbiBleGNlc3NpdmUgYW1vdW50IG9mIHdha2V1cHMgb2NjdXJzIGR1cmluZyBpZGxlLCBhbgorCWFkZGl0aW9uYWwgaWRsZSByYXRpbyBjYW4gYmUgYWRkZWQgdG8gcXVpZXQgaW50ZXJydXB0cywgYnkKKwlzbG93aW5nIGRvd24gQ1BVIGFjdGl2aXRpZXMuCisKK0EgZGVidWdmcyBmaWxlIGlzIHByb3ZpZGVkIGZvciB0aGUgdXNlciB0byBleGFtaW5lIGNvbXBlbnNhdGlvbgorcHJvZ3Jlc3MgYW5kIHJlc3VsdHMsIHN1Y2ggYXMgb24gYSBXZXN0bWVyZSBzeXN0ZW0uCitbamFjb2JAbmV4MDEgfl0kIGNhdAorL3N5cy9rZXJuZWwvZGVidWcvaW50ZWxfcG93ZXJjbGFtcC9wb3dlcmNsYW1wX2NhbGliCitjb250cm9sbGluZyBjcHU6IDAKK3BjdCBjb25maWRlbmNlIHN0ZWFkeSBkeW5hbWljIChjb21wZW5zYXRpb24pCiswCTAJMAkwCisxCTEJMAkwCisyCTEJMQkwCiszCTMJMQkwCis0CTMJMQkwCis1CTMJMQkwCis2CTMJMQkwCis3CTMJMQkwCis4CTMJMQkwCisuLi4KKzMwCTMJMgkwCiszMQkzCTIJMAorMzIJMwkxCTAKKzMzCTMJMgkwCiszNAkzCTEJMAorMzUJMwkyCTAKKzM2CTMJMQkwCiszNwkzCTIJMAorMzgJMwkxCTAKKzM5CTMJMgkwCis0MAkzCTMJMAorNDEJMwkxCTAKKzQyCTMJMgkwCis0MwkzCTEJMAorNDQJMwkxCTAKKzQ1CTMJMgkwCis0NgkzCTMJMAorNDcJMwkwCTAKKzQ4CTMJMgkwCis0OQkzCTMJMAorCitDYWxpYnJhdGlvbiBvY2N1cnMgZHVyaW5nIHJ1bnRpbWUuIE5vIG9mZmxpbmUgbWV0aG9kIGlzIGF2YWlsYWJsZS4KK1N0ZWFkeSBzdGF0ZSBjb21wZW5zYXRpb24gaXMgdXNlZCBvbmx5IHdoZW4gY29uZmlkZW5jZSBsZXZlbHMgb2YgYWxsCithZGphY2VudCByYXRpb3MgaGF2ZSByZWFjaGVkIHNhdGlzZmFjdG9yeSBsZXZlbC4gQSBjb25maWRlbmNlIGxldmVsCitpcyBhY2N1bXVsYXRlZCBiYXNlZCBvbiBjbGVhbiBkYXRhIGNvbGxlY3RlZCBhdCBydW50aW1lLiBEYXRhCitjb2xsZWN0ZWQgZHVyaW5nIGEgcGVyaW9kIHdpdGhvdXQgZXh0cmEgaW50ZXJydXB0cyBpcyBjb25zaWRlcmVkCitjbGVhbi4KKworVG8gY29tcGVuc2F0ZSBmb3IgZXhjZXNzaXZlIGFtb3VudHMgb2Ygd2FrZXVwIGR1cmluZyBpZGxlLCBhZGRpdGlvbmFsCitpZGxlIHRpbWUgaXMgaW5qZWN0ZWQgd2hlbiBzdWNoIGEgY29uZGl0aW9uIGlzIGRldGVjdGVkLiBDdXJyZW50bHksCit3ZSBoYXZlIGEgc2ltcGxlIGFsZ29yaXRobSB0byBkb3VibGUgdGhlIGluamVjdGlvbiByYXRpby4gQSBwb3NzaWJsZQorZW5oYW5jZW1lbnQgbWlnaHQgYmUgdG8gdGhyb3R0bGUgdGhlIG9mZmVuZGluZyBJUlEsIHN1Y2ggYXMgZGVsYXlpbmcKK0VPSSBmb3IgbGV2ZWwgdHJpZ2dlcmVkIGludGVycnVwdHMuIEJ1dCBpdCBpcyBhIGNoYWxsZW5nZSB0byBiZQorbm9uLWludHJ1c2l2ZSB0byB0aGUgc2NoZWR1bGVyIG9yIHRoZSBJUlEgY29yZSBjb2RlLgorCisKK0NQVSBPbmxpbmUvT2ZmbGluZQorLS0tLS0tLS0tLS0tLS0tLS0tCitQZXItQ1BVIGtlcm5lbCB0aHJlYWRzIGFyZSBzdGFydGVkL3N0b3BwZWQgdXBvbiByZWNlaXZpbmcKK25vdGlmaWNhdGlvbnMgb2YgQ1BVIGhvdHBsdWcgYWN0aXZpdGllcy4gVGhlIGludGVsX3Bvd2VyY2xhbXAgZHJpdmVyCitrZWVwcyB0cmFjayBvZiBjbGFtcGluZyBrZXJuZWwgdGhyZWFkcywgZXZlbiBhZnRlciB0aGV5IGFyZSBtaWdyYXRlZAordG8gb3RoZXIgQ1BVcywgYWZ0ZXIgYSBDUFUgb2ZmbGluZSBldmVudC4KKworCis9PT09PT09PT09PT09PT09PT09PT0KK1BlcmZvcm1hbmNlIEFuYWx5c2lzCis9PT09PT09PT09PT09PT09PT09PT0KK1RoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhlIGdlbmVyYWwgcGVyZm9ybWFuY2UgZGF0YSBjb2xsZWN0ZWQgb24KK211bHRpcGxlIHN5c3RlbXMsIGluY2x1ZGluZyBXZXN0bWVyZSAoODBQKSBhbmQgSXZ5IEJyaWRnZSAoNFAsIDhQKS4KKworRWZmZWN0aXZlbmVzcyBhbmQgTGltaXRhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgbWF4aW11bSByYW5nZSB0aGF0IGlkbGUgaW5qZWN0aW9uIGlzIGFsbG93ZWQgaXMgY2FwcGVkIGF0IDUwCitwZXJjZW50LiBBcyBtZW50aW9uZWQgZWFybGllciwgc2luY2UgaW50ZXJydXB0cyBhcmUgYWxsb3dlZCBkdXJpbmcKK2ZvcmNlZCBpZGxlIHRpbWUsIGV4Y2Vzc2l2ZSBpbnRlcnJ1cHRzIGNvdWxkIHJlc3VsdCBpbiBsZXNzCitlZmZlY3RpdmVuZXNzLiBUaGUgZXh0cmVtZSBjYXNlIHdvdWxkIGJlIGRvaW5nIGEgcGluZyAtZiB0byBnZW5lcmF0ZWQKK2Zsb29kZWQgbmV0d29yayBpbnRlcnJ1cHRzIHdpdGhvdXQgbXVjaCBDUFUgYWNrbm93bGVkZ2VtZW50LiBJbiB0aGlzCitjYXNlLCBsaXR0bGUgY2FuIGJlIGRvbmUgZnJvbSB0aGUgaWRsZSBpbmplY3Rpb24gdGhyZWFkcy4gSW4gbW9zdAorbm9ybWFsIGNhc2VzLCBzdWNoIGFzIHNjcCBhIGxhcmdlIGZpbGUsIGFwcGxpY2F0aW9ucyBjYW4gYmUgdGhyb3R0bGVkCitieSB0aGUgcG93ZXJjbGFtcCBkcml2ZXIsIHNpbmNlIHNsb3dpbmcgZG93biB0aGUgQ1BVIGFsc28gc2xvd3MgZG93bgorbmV0d29yayBwcm90b2NvbCBwcm9jZXNzaW5nLCB3aGljaCBpbiB0dXJuIHJlZHVjZXMgaW50ZXJydXB0cy4KKworV2hlbiBjb250cm9sIHBhcmFtZXRlcnMgY2hhbmdlIGF0IHJ1bnRpbWUgYnkgdGhlIGNvbnRyb2xsaW5nIENQVSwgaXQKK21heSB0YWtlIGFuIGFkZGl0aW9uYWwgcGVyaW9kIGZvciB0aGUgcmVzdCBvZiB0aGUgQ1BVcyB0byBjYXRjaCB1cAord2l0aCB0aGUgY2hhbmdlcy4gRHVyaW5nIHRoaXMgdGltZSwgaWRsZSBpbmplY3Rpb24gaXMgb3V0IG9mIHN5bmMsCit0aHVzIG5vdCBhYmxlIHRvIGVudGVyIHBhY2thZ2UgQy0gc3RhdGVzIGF0IHRoZSBleHBlY3RlZCByYXRpby4gQnV0Cit0aGlzIGVmZmVjdCBpcyBtaW5vciwgaW4gdGhhdCBpbiBtb3N0IGNhc2VzIGNoYW5nZSB0byB0aGUgdGFyZ2V0CityYXRpbyBpcyB1cGRhdGVkIG11Y2ggbGVzcyBmcmVxdWVudGx5IHRoYW4gdGhlIGlkbGUgaW5qZWN0aW9uCitmcmVxdWVuY3kuCisKK1NjYWxhYmlsaXR5CistLS0tLS0tLS0tLQorVGVzdHMgYWxzbyBzaG93IGEgbWlub3IsIGJ1dCBtZWFzdXJhYmxlLCBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIDRQLzhQCitJdnkgQnJpZGdlIHN5c3RlbSBhbmQgdGhlIDgwUCBXZXN0bWVyZSBzZXJ2ZXIgdW5kZXIgNTAlIGlkbGUgcmF0aW8uCitNb3JlIGNvbXBlbnNhdGlvbiBpcyBuZWVkZWQgb24gV2VzdG1lcmUgZm9yIHRoZSBzYW1lIGFtb3VudCBvZgordGFyZ2V0IGlkbGUgcmF0aW8uIFRoZSBjb21wZW5zYXRpb24gYWxzbyBpbmNyZWFzZXMgYXMgdGhlIGlkbGUgcmF0aW8KK2dldHMgbGFyZ2VyLiBUaGUgYWJvdmUgcmVhc29uIGNvbnN0aXR1dGVzIHRoZSBuZWVkIGZvciB0aGUKK2NhbGlicmF0aW9uIGNvZGUuCisKK09uIHRoZSBJVkIgOFAgc3lzdGVtLCBjb21wYXJlZCB0byBhbiBvZmZsaW5lIENQVSwgcG93ZXJjbGFtcCBjYW4KK2FjaGlldmUgdXAgdG8gNDAlIGJldHRlciBwZXJmb3JtYW5jZSBwZXIgd2F0dC4gKG1lYXN1cmVkIGJ5IGEgc3BpbgorY291bnRlciBzdW1tZWQgb3ZlciBwZXIgQ1BVIGNvdW50aW5nIHRocmVhZHMgc3Bhd25lZCBmb3IgYWxsIHJ1bm5pbmcKK0NQVXMpLgorCis9PT09PT09PT09PT09PT09PT09PQorVXNhZ2UgYW5kIEludGVyZmFjZXMKKz09PT09PT09PT09PT09PT09PT09CitUaGUgcG93ZXJjbGFtcCBkcml2ZXIgaXMgcmVnaXN0ZXJlZCB0byB0aGUgZ2VuZXJpYyB0aGVybWFsIGxheWVyIGFzIGEKK2Nvb2xpbmcgZGV2aWNlLiBDdXJyZW50bHksIGl04oCZcyBub3QgYm91bmQgdG8gYW55IHRoZXJtYWwgem9uZXMuCisKK2phY29iQGNocm9tb2x5Oi9zeXMvY2xhc3MvdGhlcm1hbC9jb29saW5nX2RldmljZTE0JCBncmVwIC4gKgorY3VyX3N0YXRlOjAKK21heF9zdGF0ZTo1MAordHlwZTppbnRlbF9wb3dlcmNsYW1wCisKK0V4YW1wbGUgdXNhZ2U6CistIFRvIGluamVjdCAyNSUgaWRsZSB0aW1lCiskIHN1ZG8gc2ggLWMgImVjaG8gMjUgPiAvc3lzL2NsYXNzL3RoZXJtYWwvY29vbGluZ19kZXZpY2U4MC9jdXJfc3RhdGUKKyIKKworSWYgdGhlIHN5c3RlbSBpcyBub3QgYnVzeSBhbmQgaGFzIG1vcmUgdGhhbiAyNSUgaWRsZSB0aW1lIGFscmVhZHksCit0aGVuIHRoZSBwb3dlcmNsYW1wIGRyaXZlciB3aWxsIG5vdCBzdGFydCBpZGxlIGluamVjdGlvbi4gVXNpbmcgVG9wCit3aWxsIG5vdCBzaG93IGlkbGUgaW5qZWN0aW9uIGtlcm5lbCB0aHJlYWRzLgorCitJZiB0aGUgc3lzdGVtIGlzIGJ1c3kgKHNwaW4gdGVzdCBiZWxvdykgYW5kIGhhcyBsZXNzIHRoYW4gMjUlIG5hdHVyYWwKK2lkbGUgdGltZSwgcG93ZXJjbGFtcCBrZXJuZWwgdGhyZWFkcyB3aWxsIGRvIGlkbGUgaW5qZWN0aW9uLCB3aGljaAorYXBwZWFyIHJ1bm5pbmcgdG8gdGhlIHNjaGVkdWxlci4gQnV0IHRoZSBvdmVyYWxsIHN5c3RlbSBpZGxlIGlzIHN0aWxsCityZWZsZWN0ZWQuIEluIHRoaXMgZXhhbXBsZSwgMjQuMSUgaWRsZSBpcyBzaG93bi4gVGhpcyBoZWxwcyB0aGUKK3N5c3RlbSBhZG1pbiBvciB1c2VyIGRldGVybWluZSB0aGUgY2F1c2Ugb2Ygc2xvd2Rvd24sIHdoZW4gYQorcG93ZXJjbGFtcCBkcml2ZXIgaXMgaW4gYWN0aW9uLgorCisKK1Rhc2tzOiAxOTcgdG90YWwsICAgMSBydW5uaW5nLCAxOTYgc2xlZXBpbmcsICAgMCBzdG9wcGVkLCAgIDAgem9tYmllCitDcHUocyk6IDcxLjIldXMsICA0Ljclc3ksICAwLjAlbmksIDI0LjElaWQsICAwLjAld2EsICAwLjAlaGksICAwLjAlc2ksICAwLjAlc3QKK01lbTogICAzOTQzMjI4ayB0b3RhbCwgIDE2ODk2MzJrIHVzZWQsICAyMjUzNTk2ayBmcmVlLCAgICA3NDk2MGsgYnVmZmVycworU3dhcDogIDQwODc4MDRrIHRvdGFsLCAgICAgICAgMGsgdXNlZCwgIDQwODc4MDRrIGZyZWUsICAgOTQ1MzM2ayBjYWNoZWQKKworICBQSUQgVVNFUiAgICAgIFBSICBOSSAgVklSVCAgUkVTICBTSFIgUyAlQ1BVICVNRU0gICAgVElNRSsgIENPTU1BTkQKKyAzMzUyIGphY29iICAgICAyMCAgIDAgIDI2Mm0gIDY0NCAgNDI4IFMgIDI4NiAgMC4wICAgMDoxNy4xNiBzcGluCisgMzM0MSByb290ICAgICAtNTEgICAwICAgICAwICAgIDAgICAgMCBEICAgMjUgIDAuMCAgIDA6MDEuNjIga2lkbGVfaW5qZWN0LzAKKyAzMzQ0IHJvb3QgICAgIC01MSAgIDAgICAgIDAgICAgMCAgICAwIEQgICAyNSAgMC4wICAgMDowMS42MCBraWRsZV9pbmplY3QvMworIDMzNDIgcm9vdCAgICAgLTUxICAgMCAgICAgMCAgICAwICAgIDAgRCAgIDI1ICAwLjAgICAwOjAxLjYxIGtpZGxlX2luamVjdC8xCisgMzM0MyByb290ICAgICAtNTEgICAwICAgICAwICAgIDAgICAgMCBEICAgMjUgIDAuMCAgIDA6MDEuNjAga2lkbGVfaW5qZWN0LzIKKyAyOTM1IGphY29iICAgICAyMCAgIDAgIDY5Nm0gMTI1bSAgMzVtIFMgICAgNSAgMy4zICAgMDozMS4xMSBmaXJlZm94CisgMTU0NiByb290ICAgICAgMjAgICAwICAxNThtICAyMG0gNjY0MCBTICAgIDMgIDAuNSAgIDA6MjYuOTcgWG9yZworIDIxMDAgamFjb2IgICAgIDIwICAgMCAxMjIzbSAgODhtICAzMG0gUyAgICAzICAyLjMgICAwOjIzLjY4IGNvbXBpegorCitUZXN0cyBoYXZlIHNob3duIHRoYXQgYnkgdXNpbmcgdGhlIHBvd2VyY2xhbXAgZHJpdmVyIGFzIGEgY29vbGluZworZGV2aWNlLCBhIFBJRCBiYXNlZCB1c2Vyc3BhY2UgdGhlcm1hbCBjb250cm9sbGVyIGNhbiBtYW5hZ2UgdG8KK2NvbnRyb2wgQ1BVIHRlbXBlcmF0dXJlIGVmZmVjdGl2ZWx5LCB3aGVuIG5vIG90aGVyIHRoZXJtYWwgaW5mbHVlbmNlCitpcyBhZGRlZC4gRm9yIGV4YW1wbGUsIGEgVWx0cmFCb29rIHVzZXIgY2FuIGNvbXBpbGUgdGhlIGtlcm5lbCB1bmRlcgorY2VydGFpbiB0ZW1wZXJhdHVyZSAoYmVsb3cgbW9zdCBhY3RpdmUgdHJpcCBwb2ludHMpLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90aGVybWFsL25vdXZlYXVfdGhlcm1hbCBiL0RvY3VtZW50YXRpb24vdGhlcm1hbC9ub3V2ZWF1X3RoZXJtYWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBiYzI5MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdGhlcm1hbC9ub3V2ZWF1X3RoZXJtYWwKQEAgLTAsMCArMSw4MiBAQAorS2VybmVsIGRyaXZlciBub3V2ZWF1Cis9PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyogTlY0MysKKworQXV0aG9yczogTWFydGluIFBlcmVzIChtdXB1ZikgPG1hcnRpbi5wZXJlc0BmcmVlLmZyPgorCitEZXNjcmlwdGlvbgorLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIGFsbG93cyB0byByZWFkIHRoZSBHUFUgY29yZSB0ZW1wZXJhdHVyZSwgZHJpdmUgdGhlIEdQVSBmYW4gYW5kCitzZXQgdGVtcGVyYXR1cmUgYWxhcm1zLgorCitDdXJyZW50bHksIGR1ZSB0byB0aGUgYWJzZW5jZSBvZiBpbi1rZXJuZWwgQVBJIHRvIGFjY2VzcyBIV01PTiBkcml2ZXJzLCBOb3V2ZWF1CitjYW5ub3QgYWNjZXNzIGFueSBvZiB0aGUgaTJjIGV4dGVybmFsIG1vbml0b3JpbmcgY2hpcHMgaXQgbWF5IGZpbmQuIElmIHlvdQoraGF2ZSBvbmUgb2YgdGhvc2UsIHRlbXBlcmF0dXJlIGFuZC9vciBmYW4gbWFuYWdlbWVudCB0aHJvdWdoIE5vdXZlYXUncyBIV01PTgoraW50ZXJmYWNlIGlzIGxpa2VseSBub3QgdG8gd29yay4gVGhpcyBkb2N1bWVudCBtYXkgdGhlbiBub3QgY292ZXIgeW91ciBzaXR1YXRpb24KK2VudGlyZWx5LgorCitUZW1wZXJhdHVyZSBtYW5hZ2VtZW50CistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUZW1wZXJhdHVyZSBpcyBleHBvc2VkIHVuZGVyIGFzIGEgcmVhZC1vbmx5IEhXTU9OIGF0dHJpYnV0ZSB0ZW1wMV9pbnB1dC4KKworSW4gb3JkZXIgdG8gcHJvdGVjdCB0aGUgR1BVIGZyb20gb3ZlcmhlYXRpbmcsIE5vdXZlYXUgc3VwcG9ydHMgNCBjb25maWd1cmFibGUKK3RlbXBlcmF0dXJlIHRocmVzaG9sZHM6CisKKyAqIEZhbl9ib29zdDogRmFuIHNwZWVkIGlzIHNldCB0byAxMDAlIHdoZW4gcmVhY2hpbmcgdGhpcyB0ZW1wZXJhdHVyZTsKKyAqIERvd25jbG9jazogVGhlIEdQVSB3aWxsIGJlIGRvd25jbG9ja2VkIHRvIHJlZHVjZSBpdHMgcG93ZXIgZGlzc2lwYXRpb247CisgKiBDcml0aWNhbDogVGhlIEdQVSBpcyBwdXQgb24gaG9sZCB0byBmdXJ0aGVyIGxvd2VyIHBvd2VyIGRpc3NpcGF0aW9uOworICogU2h1dGRvd246IFNodXQgdGhlIGNvbXB1dGVyIGRvd24gdG8gcHJvdGVjdCB5b3VyIEdQVS4KKworV0FSTklORzogU29tZSBvZiB0aGVzZSB0aHJlc2hvbGRzIG1heSBub3QgYmUgdXNlZCBieSBOb3V2ZWF1IGRlcGVuZGluZworb24geW91ciBjaGlwc2V0LgorCitUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlc2UgdGhyZXNob2xkcyBjb21lcyBmcm9tIHRoZSBHUFUncyB2Ymlvcy4gVGhlc2UKK3RocmVzaG9sZHMgY2FuIGJlIGNvbmZpZ3VyZWQgdGhhbmtzIHRvIHRoZSBmb2xsb3dpbmcgSFdNT04gYXR0cmlidXRlczoKKworICogRmFuX2Jvb3N0OiB0ZW1wMV9hdXRvX3BvaW50MV90ZW1wIGFuZCB0ZW1wMV9hdXRvX3BvaW50MV90ZW1wX2h5c3Q7CisgKiBEb3duY2xvY2s6IHRlbXAxX21heCBhbmQgdGVtcDFfbWF4X2h5c3Q7CisgKiBDcml0aWNhbDogdGVtcDFfY3JpdCBhbmQgdGVtcDFfY3JpdF9oeXN0OworICogU2h1dGRvd246IHRlbXAxX2VtZXJnZW5jeSBhbmQgdGVtcDFfZW1lcmdlbmN5X2h5c3QuCisKK05PVEU6IFJlbWVtYmVyIHRoYXQgdGhlIHZhbHVlcyBhcmUgc3RvcmVkIGFzIG1pbGxpIGRlZ3JlZXMgQ2VsY2l1cy4gRG9uJ3QgZm9yZ2V0Cit0byBtdWx0aXBseSEKKworRmFuIG1hbmFnZW1lbnQKKy0tLS0tLS0tLS0tLQorCitOb3QgYWxsIGNhcmRzIGhhdmUgYSBkcml2YWJsZSBmYW4uIElmIHlvdSBkbywgdGhlbiB0aGUgZm9sbG93aW5nIEhXTU9OCithdHRyaWJ1dGVzIHNob3VsZCBiZSBhdmFpbGFibGU6CisKKyAqIHB3bTFfZW5hYmxlOiBDdXJyZW50IGZhbiBtYW5hZ2VtZW50IG1vZGUgKE5PTkUsIE1BTlVBTCBvciBBVVRPKTsKKyAqIHB3bTE6IEN1cnJlbnQgUFdNIHZhbHVlIChwb3dlciBwZXJjZW50YWdlKTsKKyAqIHB3bTFfbWluOiBUaGUgbWluaW11bSBQV00gc3BlZWQgYWxsb3dlZDsKKyAqIHB3bTFfbWF4OiBUaGUgbWF4aW11bSBQV00gc3BlZWQgYWxsb3dlZCAoYnlwYXNzZWQgd2hlbiBoaXR0aW5nIEZhbl9ib29zdCk7CisKK1lvdSBtYXkgYWxzbyBoYXZlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlOgorCisgKiBmYW4xX2lucHV0OiBTcGVlZCBpbiBSUE0gb2YgeW91ciBmYW4uCisKK1lvdXIgZmFuIGNhbiBiZSBkcml2ZW4gaW4gZGlmZmVyZW50IG1vZGVzOgorCisgKiAwOiBUaGUgZmFuIGlzIGxlZnQgdW50b3VjaGVkOworICogMTogVGhlIGZhbiBjYW4gYmUgZHJpdmVuIGluIG1hbnVhbCAodXNlIHB3bTEgdG8gY2hhbmdlIHRoZSBzcGVlZCk7CisgKiAyOyBUaGUgZmFuIGlzIGRyaXZlbiBhdXRvbWF0aWNhbGx5IGRlcGVuZGluZyBvbiB0aGUgdGVtcGVyYXR1cmUuCisKK05PVEU6IEJlIHN1cmUgdG8gdXNlIHRoZSBtYW51YWwgbW9kZSBpZiB5b3Ugd2FudCB0byBkcml2ZSB0aGUgZmFuIHNwZWVkIG1hbnVhbGx5CisKK05PVEUyOiBXaGVuIG9wZXJhdGluZyBpbiBtYW51YWwgbW9kZSBvdXRzaWRlIHRoZSB2Ymlvcy1kZWZpbmVkCitbUFdNX21pbiwgUFdNX21heF0gcmFuZ2UsIHRoZSByZXBvcnRlZCBmYW4gc3BlZWQgKFJQTSkgbWF5IG5vdCBiZSBhY2N1cmF0ZQorZGVwZW5kaW5nIG9uIHlvdXIgaGFyZHdhcmUuCisKK0J1ZyByZXBvcnRzCistLS0tLS0tLS0KKworVGhlcm1hbCBtYW5hZ2VtZW50IG9uIE5vdXZlYXUgaXMgbmV3IGFuZCBtYXkgbm90IHdvcmsgb24gYWxsIGNhcmRzLiBJZiB5b3UgaGF2ZQoraW5xdWlyaWVzLCBwbGVhc2UgcGluZyBtdXB1ZiBvbiBJUkMgKCNub3V2ZWF1LCBmcmVlbm9kZSkuCisKK0J1ZyByZXBvcnRzIHNob3VsZCBiZSBmaWxsZWQgb24gRnJlZWRlc2t0b3AncyBidWcgdHJhY2tlci4gUGxlYXNlIGZvbGxvdworaHR0cDovL25vdXZlYXUuZnJlZWRlc2t0b3Aub3JnL3dpa2kvQnVncwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90aGVybWFsL3Bvd2VyX2FsbG9jYXRvci50eHQgYi9Eb2N1bWVudGF0aW9uL3RoZXJtYWwvcG93ZXJfYWxsb2NhdG9yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWNlMjIzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi90aGVybWFsL3Bvd2VyX2FsbG9jYXRvci50eHQKQEAgLTAsMCArMSwyNDcgQEAKK1Bvd2VyIGFsbG9jYXRvciBnb3Zlcm5vciB0dW5hYmxlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RyaXAgcG9pbnRzCistLS0tLS0tLS0tLQorCitUaGUgZ292ZXJub3Igd29ya3Mgb3B0aW1hbGx5IHdpdGggdGhlIGZvbGxvd2luZyB0d28gcGFzc2l2ZSB0cmlwIHBvaW50czoKKworMS4gICJzd2l0Y2ggb24iIHRyaXAgcG9pbnQ6IHRlbXBlcmF0dXJlIGFib3ZlIHdoaWNoIHRoZSBnb3Zlcm5vcgorICAgIGNvbnRyb2wgbG9vcCBzdGFydHMgb3BlcmF0aW5nLiAgVGhpcyBpcyB0aGUgZmlyc3QgcGFzc2l2ZSB0cmlwCisgICAgcG9pbnQgb2YgdGhlIHRoZXJtYWwgem9uZS4KKworMi4gICJkZXNpcmVkIHRlbXBlcmF0dXJlIiB0cmlwIHBvaW50OiBpdCBzaG91bGQgYmUgaGlnaGVyIHRoYW4gdGhlCisgICAgInN3aXRjaCBvbiIgdHJpcCBwb2ludC4gIFRoaXMgdGhlIHRhcmdldCB0ZW1wZXJhdHVyZSB0aGUgZ292ZXJub3IKKyAgICBpcyBjb250cm9sbGluZyBmb3IuICBUaGlzIGlzIHRoZSBsYXN0IHBhc3NpdmUgdHJpcCBwb2ludCBvZiB0aGUKKyAgICB0aGVybWFsIHpvbmUuCisKK1BJRCBDb250cm9sbGVyCistLS0tLS0tLS0tLS0tLQorCitUaGUgcG93ZXIgYWxsb2NhdG9yIGdvdmVybm9yIGltcGxlbWVudHMgYQorUHJvcG9ydGlvbmFsLUludGVncmFsLURlcml2YXRpdmUgY29udHJvbGxlciAoUElEIGNvbnRyb2xsZXIpIHdpdGgKK3RlbXBlcmF0dXJlIGFzIHRoZSBjb250cm9sIGlucHV0IGFuZCBwb3dlciBhcyB0aGUgY29udHJvbGxlZCBvdXRwdXQ6CisKKyAgICBQX21heCA9IGtfcCAqIGUgKyBrX2kgKiBlcnJfaW50ZWdyYWwgKyBrX2QgKiBkaWZmX2VyciArIHN1c3RhaW5hYmxlX3Bvd2VyCisKK3doZXJlCisgICAgZSA9IGRlc2lyZWRfdGVtcGVyYXR1cmUgLSBjdXJyZW50X3RlbXBlcmF0dXJlCisgICAgZXJyX2ludGVncmFsIGlzIHRoZSBzdW0gb2YgcHJldmlvdXMgZXJyb3JzCisgICAgZGlmZl9lcnIgPSBlIC0gcHJldmlvdXNfZXJyb3IKKworSXQgaXMgc2ltaWxhciB0byB0aGUgb25lIGRlcGljdGVkIGJlbG93OgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtfZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorY3VycmVudF90ZW1wICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdgorICAgICB8ICAgICAgICAgICAgICAgICstLS0tLS0tLS0tKyAgICstLS0rCisgICAgIHwgICAgICAgICArLS0tLS0+fCBkaWZmX2VyciB8LS0+fCBYIHwtLS0tLS0rCisgICAgIHwgICAgICAgICB8ICAgICAgKy0tLS0tLS0tLS0rICAgKy0tLSsgICAgICB8CisgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgdGRwICAgICAgICBhY3RvcgorICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBrX2kgICAgICAgfCAgICAgICB8ICBnZXRfcmVxdWVzdGVkX3Bvd2VyKCkKKyAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgIHwgICAgICAgfCAgICAgICAgfCAgICAgfAorICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgfCAgICAgICB8ICAgICAgICB8ICAgICB8IC4uLgorICAgICB2ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgdiAgICAgICB2ICAgICAgICB2ICAgICB2CisgICArLS0tKyAgICAgICB8ICAgICAgKy0tLS0tLS0rICAgICAgKy0tLSsgICAgKy0tLSsgICArLS0tKyAgICstLS0tLS0tLS0tKworICAgfCBTIHwtLS0tLS0tKy0tLS0tPnwgc3VtIGUgfC0tLS0tPnwgWCB8LS0tPnwgUyB8LS0+fCBTIHwtLT58cG93ZXIgICAgIHwKKyAgICstLS0rICAgICAgIHwgICAgICArLS0tLS0tLSsgICAgICArLS0tKyAgICArLS0tKyAgICstLS0rICAgfGFsbG9jYXRpb258CisgICAgIF4gICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgICstLS0tLS0tLS0tKworICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICB8CisgICAgIHwgICAgICAgICB8ICAgICAgICArLS0tKyAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgICAgIHwKKyAgICAgfCAgICAgICAgICstLS0tLS0tPnwgWCB8LS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgdiAgICAgdgorICAgICB8ICAgICAgICAgICAgICAgICAgKy0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbnRlZCBwZXJmb3JtYW5jZQorZGVzaXJlZF90ZW1wZXJhdHVyZSAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgIGtfcG8va19wdQorCitTdXN0YWluYWJsZSBwb3dlcgorLS0tLS0tLS0tLS0tLS0tLS0KKworQW4gZXN0aW1hdGUgb2YgdGhlIHN1c3RhaW5hYmxlIGRpc3NpcGF0YWJsZSBwb3dlciAoaW4gbVcpIHNob3VsZCBiZQorcHJvdmlkZWQgd2hpbGUgcmVnaXN0ZXJpbmcgdGhlIHRoZXJtYWwgem9uZS4gIFRoaXMgZXN0aW1hdGVzIHRoZQorc3VzdGFpbmVkIHBvd2VyIHRoYXQgY2FuIGJlIGRpc3NpcGF0ZWQgYXQgdGhlIGRlc2lyZWQgY29udHJvbAordGVtcGVyYXR1cmUuICBUaGlzIGlzIHRoZSBtYXhpbXVtIHN1c3RhaW5lZCBwb3dlciBmb3IgYWxsb2NhdGlvbiBhdAordGhlIGRlc2lyZWQgbWF4aW11bSB0ZW1wZXJhdHVyZS4gIFRoZSBhY3R1YWwgc3VzdGFpbmVkIHBvd2VyIGNhbiB2YXJ5Citmb3IgYSBudW1iZXIgb2YgcmVhc29ucy4gIFRoZSBjbG9zZWQgbG9vcCBjb250cm9sbGVyIHdpbGwgdGFrZSBjYXJlIG9mCit2YXJpYXRpb25zIHN1Y2ggYXMgZW52aXJvbm1lbnRhbCBjb25kaXRpb25zLCBhbmQgc29tZSBmYWN0b3JzIHJlbGF0ZWQKK3RvIHRoZSBzcGVlZC1ncmFkZSBvZiB0aGUgc2lsaWNvbi4gIGBzdXN0YWluYWJsZV9wb3dlcmAgaXMgdGhlcmVmb3JlCitzaW1wbHkgYW4gZXN0aW1hdGUsIGFuZCBtYXkgYmUgdHVuZWQgdG8gYWZmZWN0IHRoZSBhZ2dyZXNzaXZlbmVzcyBvZgordGhlIHRoZXJtYWwgcmFtcC4gRm9yIHJlZmVyZW5jZSwgdGhlIHN1c3RhaW5hYmxlIHBvd2VyIG9mIGEgNCIgcGhvbmUKK2lzIHR5cGljYWxseSAyMDAwbVcsIHdoaWxlIG9uIGEgMTAiIHRhYmxldCBpcyBhcm91bmQgNDUwMG1XIChtYXkgdmFyeQorZGVwZW5kaW5nIG9uIHNjcmVlbiBzaXplKS4KKworSWYgeW91IGFyZSB1c2luZyBkZXZpY2UgdHJlZSwgZG8gYWRkIGl0IGFzIGEgcHJvcGVydHkgb2YgdGhlCit0aGVybWFsLXpvbmUuICBGb3IgZXhhbXBsZToKKworCXRoZXJtYWwtem9uZXMgeworCQlzb2NfdGhlcm1hbCB7CisJCQlwb2xsaW5nLWRlbGF5ID0gPDEwMDA+OworCQkJcG9sbGluZy1kZWxheS1wYXNzaXZlID0gPDEwMD47CisJCQlzdXN0YWluYWJsZS1wb3dlciA9IDwyNTAwPjsKKwkJCS4uLgorCitJbnN0ZWFkLCBpZiB0aGUgdGhlcm1hbCB6b25lIGlzIHJlZ2lzdGVyZWQgZnJvbSB0aGUgcGxhdGZvcm0gY29kZSwgcGFzcyBhCitgdGhlcm1hbF96b25lX3BhcmFtc2AgdGhhdCBoYXMgYSBgc3VzdGFpbmFibGVfcG93ZXJgLiAgSWYgbm8KK2B0aGVybWFsX3pvbmVfcGFyYW1zYCB3ZXJlIGJlaW5nIHBhc3NlZCwgdGhlbiBzb21ldGhpbmcgbGlrZSBiZWxvdword2lsbCBzdWZmaWNlOgorCisJc3RhdGljIGNvbnN0IHN0cnVjdCB0aGVybWFsX3pvbmVfcGFyYW1zIHR6X3BhcmFtcyA9IHsKKwkJLnN1c3RhaW5hYmxlX3Bvd2VyID0gMzUwMCwKKwl9OworCithbmQgdGhlbiBwYXNzIGB0el9wYXJhbXNgIGFzIHRoZSA1dGggcGFyYW1ldGVyIHRvCitgdGhlcm1hbF96b25lX2RldmljZV9yZWdpc3RlcigpYAorCitrX3BvIGFuZCBrX3B1CistLS0tLS0tLS0tLS0tCisKK1RoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUElEIGNvbnRyb2xsZXIgaW4gdGhlIHBvd2VyIGFsbG9jYXRvcgordGhlcm1hbCBnb3Zlcm5vciBhbGxvd3MgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdHdvIHByb3BvcnRpb25hbCB0ZXJtCitjb25zdGFudHM6IGBrX3BvYCBhbmQgYGtfcHVgLiAgYGtfcG9gIGlzIHRoZSBwcm9wb3J0aW9uYWwgdGVybQorY29uc3RhbnQgZHVyaW5nIHRlbXBlcmF0dXJlIG92ZXJzaG9vdCBwZXJpb2RzIChjdXJyZW50IHRlbXBlcmF0dXJlIGlzCithYm92ZSAiZGVzaXJlZCB0ZW1wZXJhdHVyZSIgdHJpcCBwb2ludCkuICBDb252ZXJzZWx5LCBga19wdWAgaXMgdGhlCitwcm9wb3J0aW9uYWwgdGVybSBjb25zdGFudCBkdXJpbmcgdGVtcGVyYXR1cmUgdW5kZXJzaG9vdCBwZXJpb2RzCisoY3VycmVudCB0ZW1wZXJhdHVyZSBiZWxvdyAiZGVzaXJlZCB0ZW1wZXJhdHVyZSIgdHJpcCBwb2ludCkuCisKK1RoZXNlIGNvbnRyb2xzIGFyZSBpbnRlbmRlZCBhcyB0aGUgcHJpbWFyeSBtZWNoYW5pc20gZm9yIGNvbmZpZ3VyaW5nCit0aGUgcGVybWl0dGVkIHRoZXJtYWwgInJhbXAiIG9mIHRoZSBzeXN0ZW0uICBGb3IgaW5zdGFuY2UsIGEgbG93ZXIKK2BrX3B1YCB2YWx1ZSB3aWxsIHByb3ZpZGUgYSBzbG93ZXIgcmFtcCwgYXQgdGhlIGNvc3Qgb2YgY2FwcGluZworYXZhaWxhYmxlIGNhcGFjaXR5IGF0IGEgbG93IHRlbXBlcmF0dXJlLiAgT24gdGhlIG90aGVyIGhhbmQsIGEgaGlnaAordmFsdWUgb2YgYGtfcHVgIHdpbGwgcmVzdWx0IGluIHRoZSBnb3Zlcm5vciBncmFudGluZyB2ZXJ5IGhpZ2ggcG93ZXIKK3doaWxzdCB0ZW1wZXJhdHVyZSBpcyBsb3csIGFuZCBtYXkgbGVhZCB0byB0ZW1wZXJhdHVyZSBvdmVyc2hvb3RpbmcuCisKK1RoZSBkZWZhdWx0IHZhbHVlIGZvciBga19wdWAgaXM6CisKKyAgICAyICogc3VzdGFpbmFibGVfcG93ZXIgLyAoZGVzaXJlZF90ZW1wZXJhdHVyZSAtIHN3aXRjaF9vbl90ZW1wKQorCitUaGlzIG1lYW5zIHRoYXQgYXQgYHN3aXRjaF9vbl90ZW1wYCB0aGUgb3V0cHV0IG9mIHRoZSBjb250cm9sbGVyJ3MKK3Byb3BvcnRpb25hbCB0ZXJtIHdpbGwgYmUgMiAqIGBzdXN0YWluYWJsZV9wb3dlcmAuICBUaGUgZGVmYXVsdCB2YWx1ZQorZm9yIGBrX3BvYCBpczoKKworICAgIHN1c3RhaW5hYmxlX3Bvd2VyIC8gKGRlc2lyZWRfdGVtcGVyYXR1cmUgLSBzd2l0Y2hfb25fdGVtcCkKKworRm9jdXNpbmcgb24gdGhlIHByb3BvcnRpb25hbCBhbmQgZmVlZCBmb3J3YXJkIHZhbHVlcyBvZiB0aGUgUElECitjb250cm9sbGVyIGVxdWF0aW9uIHdlIGhhdmU6CisKKyAgICBQX21heCA9IGtfcCAqIGUgKyBzdXN0YWluYWJsZV9wb3dlcgorCitUaGUgcHJvcG9ydGlvbmFsIHRlcm0gaXMgcHJvcG9ydGlvbmFsIHRvIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlCitkZXNpcmVkIHRlbXBlcmF0dXJlIGFuZCB0aGUgY3VycmVudCBvbmUuICBXaGVuIHRoZSBjdXJyZW50IHRlbXBlcmF0dXJlCitpcyB0aGUgZGVzaXJlZCBvbmUsIHRoZW4gdGhlIHByb3BvcnRpb25hbCBjb21wb25lbnQgaXMgemVybyBhbmQKK2BQX21heGAgPSBgc3VzdGFpbmFibGVfcG93ZXJgLiAgVGhhdCBpcywgdGhlIHN5c3RlbSBzaG91bGQgb3BlcmF0ZSBpbgordGhlcm1hbCBlcXVpbGlicml1bSB1bmRlciBjb25zdGFudCBsb2FkLiAgYHN1c3RhaW5hYmxlX3Bvd2VyYCBpcyBvbmx5CithbiBlc3RpbWF0ZSwgd2hpY2ggaXMgdGhlIHJlYXNvbiBmb3IgY2xvc2VkLWxvb3AgY29udHJvbCBzdWNoIGFzIHRoaXMuCisKK0V4cGFuZGluZyBga19wdWAgd2UgZ2V0OgorICAgIFBfbWF4ID0gMiAqIHN1c3RhaW5hYmxlX3Bvd2VyICogKFRfc2V0IC0gVCkgLyAoVF9zZXQgLSBUX29uKSArCisgICAgICAgIHN1c3RhaW5hYmxlX3Bvd2VyCisKK3doZXJlCisgICAgVF9zZXQgaXMgdGhlIGRlc2lyZWQgdGVtcGVyYXR1cmUKKyAgICBUIGlzIHRoZSBjdXJyZW50IHRlbXBlcmF0dXJlCisgICAgVF9vbiBpcyB0aGUgc3dpdGNoIG9uIHRlbXBlcmF0dXJlCisKK1doZW4gdGhlIGN1cnJlbnQgdGVtcGVyYXR1cmUgaXMgdGhlIHN3aXRjaF9vbiB0ZW1wZXJhdHVyZSwgdGhlIGFib3ZlCitmb3JtdWxhIGJlY29tZXM6CisKKyAgICBQX21heCA9IDIgKiBzdXN0YWluYWJsZV9wb3dlciAqIChUX3NldCAtIFRfb24pIC8gKFRfc2V0IC0gVF9vbikgKworICAgICAgICBzdXN0YWluYWJsZV9wb3dlciA9IDIgKiBzdXN0YWluYWJsZV9wb3dlciArIHN1c3RhaW5hYmxlX3Bvd2VyID0KKyAgICAgICAgMyAqIHN1c3RhaW5hYmxlX3Bvd2VyCisKK1RoZXJlZm9yZSwgdGhlIHByb3BvcnRpb25hbCB0ZXJtIGFsb25lIGxpbmVhcmx5IGRlY3JlYXNlcyBwb3dlciBmcm9tCiszICogYHN1c3RhaW5hYmxlX3Bvd2VyYCB0byBgc3VzdGFpbmFibGVfcG93ZXJgIGFzIHRoZSB0ZW1wZXJhdHVyZQorcmlzZXMgZnJvbSB0aGUgc3dpdGNoIG9uIHRlbXBlcmF0dXJlIHRvIHRoZSBkZXNpcmVkIHRlbXBlcmF0dXJlLgorCitrX2kgYW5kIGludGVncmFsX2N1dG9mZgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYGtfaWAgY29uZmlndXJlcyB0aGUgUElEIGxvb3AncyBpbnRlZ3JhbCB0ZXJtIGNvbnN0YW50LiAgVGhpcyB0ZXJtCithbGxvd3MgdGhlIFBJRCBjb250cm9sbGVyIHRvIGNvbXBlbnNhdGUgZm9yIGxvbmcgdGVybSBkcmlmdCBhbmQgZm9yCit0aGUgcXVhbnRpemVkIG5hdHVyZSBvZiB0aGUgb3V0cHV0IGNvbnRyb2w6IGNvb2xpbmcgZGV2aWNlcyBjYW4ndCBzZXQKK3RoZSBleGFjdCBwb3dlciB0aGF0IHRoZSBnb3Zlcm5vciByZXF1ZXN0cy4gIFdoZW4gdGhlIHRlbXBlcmF0dXJlCitlcnJvciBpcyBiZWxvdyBgaW50ZWdyYWxfY3V0b2ZmYCwgZXJyb3JzIGFyZSBhY2N1bXVsYXRlZCBpbiB0aGUKK2ludGVncmFsIHRlcm0uICBUaGlzIHRlcm0gaXMgdGhlbiBtdWx0aXBsaWVkIGJ5IGBrX2lgIGFuZCB0aGUgcmVzdWx0CithZGRlZCB0byB0aGUgb3V0cHV0IG9mIHRoZSBjb250cm9sbGVyLiAgVHlwaWNhbGx5IGBrX2lgIGlzIHNldCBsb3cgKDEKK29yIDIpIGFuZCBgaW50ZWdyYWxfY3V0b2ZmYCBpcyAwLgorCitrX2QKKy0tLQorCitga19kYCBjb25maWd1cmVzIHRoZSBQSUQgbG9vcCdzIGRlcml2YXRpdmUgdGVybSBjb25zdGFudC4gIEl0J3MKK3JlY29tbWVuZGVkIHRvIGxlYXZlIGl0IGFzIHRoZSBkZWZhdWx0OiAwLgorCitDb29saW5nIGRldmljZSBwb3dlciBBUEkKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitDb29saW5nIGRldmljZXMgY29udHJvbGxlZCBieSB0aGlzIGdvdmVybm9yIG11c3Qgc3VwcGx5IHRoZSBhZGRpdGlvbmFsCisicG93ZXIiIEFQSSBpbiB0aGVpciBgY29vbGluZ19kZXZpY2Vfb3BzYC4gIEl0IGNvbnNpc3RzIG9uIHRocmVlIG9wczoKKworMS4gaW50IGdldF9yZXF1ZXN0ZWRfcG93ZXIoc3RydWN0IHRoZXJtYWxfY29vbGluZ19kZXZpY2UgKmNkZXYsCisJc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UgKnR6LCB1MzIgKnBvd2VyKTsKK0BjZGV2OiBUaGUgYHN0cnVjdCB0aGVybWFsX2Nvb2xpbmdfZGV2aWNlYCBwb2ludGVyCitAdHo6IHRoZXJtYWwgem9uZSBpbiB3aGljaCB3ZSBhcmUgY3VycmVudGx5IG9wZXJhdGluZworQHBvd2VyOiBwb2ludGVyIGluIHdoaWNoIHRvIHN0b3JlIHRoZSBjYWxjdWxhdGVkIHBvd2VyCisKK2BnZXRfcmVxdWVzdGVkX3Bvd2VyKClgIGNhbGN1bGF0ZXMgdGhlIHBvd2VyIHJlcXVlc3RlZCBieSB0aGUgZGV2aWNlCitpbiBtaWxsaXdhdHRzIGFuZCBzdG9yZXMgaXQgaW4gQHBvd2VyIC4gIEl0IHNob3VsZCByZXR1cm4gMCBvbgorc3VjY2VzcywgLUUqIG9uIGZhaWx1cmUuICBUaGlzIGlzIGN1cnJlbnRseSB1c2VkIGJ5IHRoZSBwb3dlcgorYWxsb2NhdG9yIGdvdmVybm9yIHRvIGNhbGN1bGF0ZSBob3cgbXVjaCBwb3dlciB0byBnaXZlIHRvIGVhY2ggY29vbGluZworZGV2aWNlLgorCisyLiBpbnQgc3RhdGUycG93ZXIoc3RydWN0IHRoZXJtYWxfY29vbGluZ19kZXZpY2UgKmNkZXYsIHN0cnVjdAorICAgICAgICB0aGVybWFsX3pvbmVfZGV2aWNlICp0eiwgdW5zaWduZWQgbG9uZyBzdGF0ZSwgdTMyICpwb3dlcik7CitAY2RldjogVGhlIGBzdHJ1Y3QgdGhlcm1hbF9jb29saW5nX2RldmljZWAgcG9pbnRlcgorQHR6OiB0aGVybWFsIHpvbmUgaW4gd2hpY2ggd2UgYXJlIGN1cnJlbnRseSBvcGVyYXRpbmcKK0BzdGF0ZTogQSBjb29saW5nIGRldmljZSBzdGF0ZQorQHBvd2VyOiBwb2ludGVyIGluIHdoaWNoIHRvIHN0b3JlIHRoZSBlcXVpdmFsZW50IHBvd2VyCisKK0NvbnZlcnQgY29vbGluZyBkZXZpY2Ugc3RhdGUgQHN0YXRlIGludG8gcG93ZXIgY29uc3VtcHRpb24gaW4KK21pbGxpd2F0dHMgYW5kIHN0b3JlIGl0IGluIEBwb3dlci4gIEl0IHNob3VsZCByZXR1cm4gMCBvbiBzdWNjZXNzLCAtRSoKK29uIGZhaWx1cmUuICBUaGlzIGlzIGN1cnJlbnRseSB1c2VkIGJ5IHRoZXJtYWwgY29yZSB0byBjYWxjdWxhdGUgdGhlCittYXhpbXVtIHBvd2VyIHRoYXQgYW4gYWN0b3IgY2FuIGNvbnN1bWUuCisKKzMuIGludCBwb3dlcjJzdGF0ZShzdHJ1Y3QgdGhlcm1hbF9jb29saW5nX2RldmljZSAqY2RldiwgdTMyIHBvd2VyLAorCXVuc2lnbmVkIGxvbmcgKnN0YXRlKTsKK0BjZGV2OiBUaGUgYHN0cnVjdCB0aGVybWFsX2Nvb2xpbmdfZGV2aWNlYCBwb2ludGVyCitAcG93ZXI6IHBvd2VyIGluIG1pbGxpd2F0dHMKK0BzdGF0ZTogcG9pbnRlciBpbiB3aGljaCB0byBzdG9yZSB0aGUgcmVzdWx0aW5nIHN0YXRlCisKK0NhbGN1bGF0ZSBhIGNvb2xpbmcgZGV2aWNlIHN0YXRlIHRoYXQgd291bGQgbWFrZSB0aGUgZGV2aWNlIGNvbnN1bWUgYXQKK21vc3QgQHBvd2VyIG1XIGFuZCBzdG9yZSBpdCBpbiBAc3RhdGUuICBJdCBzaG91bGQgcmV0dXJuIDAgb24gc3VjY2VzcywKKy1FKiBvbiBmYWlsdXJlLiAgVGhpcyBpcyBjdXJyZW50bHkgdXNlZCBieSB0aGUgdGhlcm1hbCBjb3JlIHRvIGNvbnZlcnQKK2EgZ2l2ZW4gcG93ZXIgc2V0IGJ5IHRoZSBwb3dlciBhbGxvY2F0b3IgZ292ZXJub3IgdG8gYSBzdGF0ZSB0aGF0IHRoZQorY29vbGluZyBkZXZpY2UgY2FuIHNldC4gIEl0IGlzIGEgZnVuY3Rpb24gYmVjYXVzZSB0aGlzIGNvbnZlcnNpb24gbWF5CitkZXBlbmQgb24gZXh0ZXJuYWwgZmFjdG9ycyB0aGF0IG1heSBjaGFuZ2Ugc28gdGhpcyBmdW5jdGlvbiBzaG91bGQgdGhlCitiZXN0IGNvbnZlcnNpb24gZ2l2ZW4gImN1cnJlbnQgY2lyY3Vtc3RhbmNlcyIuCisKK0Nvb2xpbmcgZGV2aWNlIHdlaWdodHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2VpZ2h0cyBhcmUgYSBtZWNoYW5pc20gdG8gYmlhcyB0aGUgYWxsb2NhdGlvbiBhbW9uZyBjb29saW5nCitkZXZpY2VzLiAgVGhleSBleHByZXNzIHRoZSByZWxhdGl2ZSBwb3dlciBlZmZpY2llbmN5IG9mIGRpZmZlcmVudAorY29vbGluZyBkZXZpY2VzLiAgSGlnaGVyIHdlaWdodCBjYW4gYmUgdXNlZCB0byBleHByZXNzIGhpZ2hlciBwb3dlcgorZWZmaWNpZW5jeS4gIFdlaWdodGluZyBpcyByZWxhdGl2ZSBzdWNoIHRoYXQgaWYgZWFjaCBjb29saW5nIGRldmljZQoraGFzIGEgd2VpZ2h0IG9mIG9uZSB0aGV5IGFyZSBjb25zaWRlcmVkIGVxdWFsLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkKK3VzZWZ1bCBpbiBoZXRlcm9nZW5lb3VzIHN5c3RlbXMgd2hlcmUgdHdvIGNvb2xpbmcgZGV2aWNlcyBtYXkgcGVyZm9ybQordGhlIHNhbWUga2luZCBvZiBjb21wdXRlLCBidXQgd2l0aCBkaWZmZXJlbnQgZWZmaWNpZW5jeS4gIEZvciBleGFtcGxlLAorYSBzeXN0ZW0gd2l0aCB0d28gZGlmZmVyZW50IHR5cGVzIG9mIHByb2Nlc3NvcnMuCisKK0lmIHRoZSB0aGVybWFsIHpvbmUgaXMgcmVnaXN0ZXJlZCB1c2luZworYHRoZXJtYWxfem9uZV9kZXZpY2VfcmVnaXN0ZXIoKWAgKGkuZS4sIHBsYXRmb3JtIGNvZGUpLCB0aGVuIHdlaWdodHMKK2FyZSBwYXNzZWQgYXMgcGFydCBvZiB0aGUgdGhlcm1hbCB6b25lJ3MgYHRoZXJtYWxfYmluZF9wYXJhbWV0ZXJzYC4KK0lmIHRoZSBwbGF0Zm9ybSBpcyByZWdpc3RlcmVkIHVzaW5nIGRldmljZSB0cmVlLCB0aGVuIHRoZXkgYXJlIHBhc3NlZAorYXMgdGhlIGBjb250cmlidXRpb25gIHByb3BlcnR5IG9mIGVhY2ggbWFwIGluIHRoZSBgY29vbGluZy1tYXBzYCBub2RlLgorCitMaW1pdGF0aW9ucyBvZiB0aGUgcG93ZXIgYWxsb2NhdG9yIGdvdmVybm9yCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBwb3dlciBhbGxvY2F0b3IgZ292ZXJub3IncyBQSUQgY29udHJvbGxlciB3b3JrcyBiZXN0IGlmIHRoZXJlIGlzIGEKK3BlcmlvZGljIHRpY2suICBJZiB5b3UgaGF2ZSBhIGRyaXZlciB0aGF0IGNhbGxzCitgdGhlcm1hbF96b25lX2RldmljZV91cGRhdGUoKWAgKG9yIGFueXRoaW5nIHRoYXQgZW5kcyB1cCBjYWxsaW5nIHRoZQorZ292ZXJub3IncyBgdGhyb3R0bGUoKWAgZnVuY3Rpb24pIHJlcGV0aXRpdmVseSwgdGhlIGdvdmVybm9yIHJlc3BvbnNlCit3b24ndCBiZSB2ZXJ5IGdvb2QuICBOb3RlIHRoYXQgdGhpcyBpcyBub3QgcGFydGljdWxhciB0byB0aGlzCitnb3Zlcm5vciwgc3RlcC13aXNlIHdpbGwgYWxzbyBtaXNiZWhhdmUgaWYgeW91IGNhbGwgaXRzIHRocm90dGxlKCkKK2Zhc3RlciB0aGFuIHRoZSBub3JtYWwgdGhlcm1hbCBmcmFtZXdvcmsgdGljayAoZHVlIHRvIGludGVycnVwdHMgZm9yCitleGFtcGxlKSBhcyBpdCB3aWxsIG92ZXJyZWFjdC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGhlcm1hbC9zeXNmcy1hcGkudHh0IGIvRG9jdW1lbnRhdGlvbi90aGVybWFsL3N5c2ZzLWFwaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBmMDYyZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdGhlcm1hbC9zeXNmcy1hcGkudHh0CkBAIC0wLDAgKzEsNDk2IEBACitHZW5lcmljIFRoZXJtYWwgU3lzZnMgZHJpdmVyIEhvdyBUbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworV3JpdHRlbiBieSBTdWppdGggVGhvbWFzIDxzdWppdGgudGhvbWFzQGludGVsLmNvbT4sIFpoYW5nIFJ1aSA8cnVpLnpoYW5nQGludGVsLmNvbT4KKworVXBkYXRlZDogMiBKYW51YXJ5IDIwMDgKKworQ29weXJpZ2h0IChjKSAgMjAwOCBJbnRlbCBDb3Jwb3JhdGlvbgorCisKKzAuIEludHJvZHVjdGlvbgorCitUaGUgZ2VuZXJpYyB0aGVybWFsIHN5c2ZzIHByb3ZpZGVzIGEgc2V0IG9mIGludGVyZmFjZXMgZm9yIHRoZXJtYWwgem9uZQorZGV2aWNlcyAoc2Vuc29ycykgYW5kIHRoZXJtYWwgY29vbGluZyBkZXZpY2VzIChmYW4sIHByb2Nlc3Nvci4uLikgdG8gcmVnaXN0ZXIKK3dpdGggdGhlIHRoZXJtYWwgbWFuYWdlbWVudCBzb2x1dGlvbiBhbmQgdG8gYmUgYSBwYXJ0IG9mIGl0LgorCitUaGlzIGhvdy10byBmb2N1c2VzIG9uIGVuYWJsaW5nIG5ldyB0aGVybWFsIHpvbmUgYW5kIGNvb2xpbmcgZGV2aWNlcyB0bworcGFydGljaXBhdGUgaW4gdGhlcm1hbCBtYW5hZ2VtZW50LgorVGhpcyBzb2x1dGlvbiBpcyBwbGF0Zm9ybSBpbmRlcGVuZGVudCBhbmQgYW55IHR5cGUgb2YgdGhlcm1hbCB6b25lIGRldmljZXMKK2FuZCBjb29saW5nIGRldmljZXMgc2hvdWxkIGJlIGFibGUgdG8gbWFrZSB1c2Ugb2YgdGhlIGluZnJhc3RydWN0dXJlLgorCitUaGUgbWFpbiB0YXNrIG9mIHRoZSB0aGVybWFsIHN5c2ZzIGRyaXZlciBpcyB0byBleHBvc2UgdGhlcm1hbCB6b25lIGF0dHJpYnV0ZXMKK2FzIHdlbGwgYXMgY29vbGluZyBkZXZpY2UgYXR0cmlidXRlcyB0byB0aGUgdXNlciBzcGFjZS4KK0FuIGludGVsbGlnZW50IHRoZXJtYWwgbWFuYWdlbWVudCBhcHBsaWNhdGlvbiBjYW4gbWFrZSBkZWNpc2lvbnMgYmFzZWQgb24KK2lucHV0cyBmcm9tIHRoZXJtYWwgem9uZSBhdHRyaWJ1dGVzICh0aGUgY3VycmVudCB0ZW1wZXJhdHVyZSBhbmQgdHJpcCBwb2ludAordGVtcGVyYXR1cmUpIGFuZCB0aHJvdHRsZSBhcHByb3ByaWF0ZSBkZXZpY2VzLgorCitbMC0qXQlkZW5vdGVzIGFueSBwb3NpdGl2ZSBudW1iZXIgc3RhcnRpbmcgZnJvbSAwCitbMS0qXQlkZW5vdGVzIGFueSBwb3NpdGl2ZSBudW1iZXIgc3RhcnRpbmcgZnJvbSAxCisKKzEuIHRoZXJtYWwgc3lzZnMgZHJpdmVyIGludGVyZmFjZSBmdW5jdGlvbnMKKworMS4xIHRoZXJtYWwgem9uZSBkZXZpY2UgaW50ZXJmYWNlCisxLjEuMSBzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdGhlcm1hbF96b25lX2RldmljZV9yZWdpc3RlcihjaGFyICp0eXBlLAorCQlpbnQgdHJpcHMsIGludCBtYXNrLCB2b2lkICpkZXZkYXRhLAorCQlzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZV9vcHMgKm9wcywKKwkJY29uc3Qgc3RydWN0IHRoZXJtYWxfem9uZV9wYXJhbXMgKnR6cCwKKwkJaW50IHBhc3NpdmVfZGVsYXksIGludCBwb2xsaW5nX2RlbGF5KSkKKworICAgIFRoaXMgaW50ZXJmYWNlIGZ1bmN0aW9uIGFkZHMgYSBuZXcgdGhlcm1hbCB6b25lIGRldmljZSAoc2Vuc29yKSB0bworICAgIC9zeXMvY2xhc3MvdGhlcm1hbCBmb2xkZXIgYXMgdGhlcm1hbF96b25lWzAtKl0uIEl0IHRyaWVzIHRvIGJpbmQgYWxsIHRoZQorICAgIHRoZXJtYWwgY29vbGluZyBkZXZpY2VzIHJlZ2lzdGVyZWQgYXQgdGhlIHNhbWUgdGltZS4KKworICAgIHR5cGU6IHRoZSB0aGVybWFsIHpvbmUgdHlwZS4KKyAgICB0cmlwczogdGhlIHRvdGFsIG51bWJlciBvZiB0cmlwIHBvaW50cyB0aGlzIHRoZXJtYWwgem9uZSBzdXBwb3J0cy4KKyAgICBtYXNrOiBCaXQgc3RyaW5nOiBJZiAnbid0aCBiaXQgaXMgc2V0LCB0aGVuIHRyaXAgcG9pbnQgJ24nIGlzIHdyaXRlYWJsZS4KKyAgICBkZXZkYXRhOiBkZXZpY2UgcHJpdmF0ZSBkYXRhCisgICAgb3BzOiB0aGVybWFsIHpvbmUgZGV2aWNlIGNhbGwtYmFja3MuCisJLmJpbmQ6IGJpbmQgdGhlIHRoZXJtYWwgem9uZSBkZXZpY2Ugd2l0aCBhIHRoZXJtYWwgY29vbGluZyBkZXZpY2UuCisJLnVuYmluZDogdW5iaW5kIHRoZSB0aGVybWFsIHpvbmUgZGV2aWNlIHdpdGggYSB0aGVybWFsIGNvb2xpbmcgZGV2aWNlLgorCS5nZXRfdGVtcDogZ2V0IHRoZSBjdXJyZW50IHRlbXBlcmF0dXJlIG9mIHRoZSB0aGVybWFsIHpvbmUuCisJLmdldF9tb2RlOiBnZXQgdGhlIGN1cnJlbnQgbW9kZSAoZW5hYmxlZC9kaXNhYmxlZCkgb2YgdGhlIHRoZXJtYWwgem9uZS4KKwkgICAgLSAiZW5hYmxlZCIgbWVhbnMgdGhlIGtlcm5lbCB0aGVybWFsIG1hbmFnZW1lbnQgaXMgZW5hYmxlZC4KKwkgICAgLSAiZGlzYWJsZWQiIHdpbGwgcHJldmVudCBrZXJuZWwgdGhlcm1hbCBkcml2ZXIgYWN0aW9uIHVwb24gdHJpcCBwb2ludHMKKwkgICAgICBzbyB0aGF0IHVzZXIgYXBwbGljYXRpb25zIGNhbiB0YWtlIGNoYXJnZSBvZiB0aGVybWFsIG1hbmFnZW1lbnQuCisJLnNldF9tb2RlOiBzZXQgdGhlIG1vZGUgKGVuYWJsZWQvZGlzYWJsZWQpIG9mIHRoZSB0aGVybWFsIHpvbmUuCisJLmdldF90cmlwX3R5cGU6IGdldCB0aGUgdHlwZSBvZiBjZXJ0YWluIHRyaXAgcG9pbnQuCisJLmdldF90cmlwX3RlbXA6IGdldCB0aGUgdGVtcGVyYXR1cmUgYWJvdmUgd2hpY2ggdGhlIGNlcnRhaW4gdHJpcCBwb2ludAorCQkJd2lsbCBiZSBmaXJlZC4KKwkuc2V0X2VtdWxfdGVtcDogc2V0IHRoZSBlbXVsYXRpb24gdGVtcGVyYXR1cmUgd2hpY2ggaGVscHMgaW4gZGVidWdnaW5nCisJCQlkaWZmZXJlbnQgdGhyZXNob2xkIHRlbXBlcmF0dXJlIHBvaW50cy4KKyAgICB0enA6IHRoZXJtYWwgem9uZSBwbGF0Zm9ybSBwYXJhbWV0ZXJzLgorICAgIHBhc3NpdmVfZGVsYXk6IG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCBiZXR3ZWVuIHBvbGxzIHdoZW4KKwlwZXJmb3JtaW5nIHBhc3NpdmUgY29vbGluZy4KKyAgICBwb2xsaW5nX2RlbGF5OiBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmV0d2VlbiBwb2xscyB3aGVuIGNoZWNraW5nCisJd2hldGhlciB0cmlwIHBvaW50cyBoYXZlIGJlZW4gY3Jvc3NlZCAoMCBmb3IgaW50ZXJydXB0IGRyaXZlbiBzeXN0ZW1zKS4KKworCisxLjEuMiB2b2lkIHRoZXJtYWxfem9uZV9kZXZpY2VfdW5yZWdpc3RlcihzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHopCisKKyAgICBUaGlzIGludGVyZmFjZSBmdW5jdGlvbiByZW1vdmVzIHRoZSB0aGVybWFsIHpvbmUgZGV2aWNlLgorICAgIEl0IGRlbGV0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgZW50cnkgZm9ybSAvc3lzL2NsYXNzL3RoZXJtYWwgZm9sZGVyIGFuZAorICAgIHVuYmluZCBhbGwgdGhlIHRoZXJtYWwgY29vbGluZyBkZXZpY2VzIGl0IHVzZXMuCisKKzEuMiB0aGVybWFsIGNvb2xpbmcgZGV2aWNlIGludGVyZmFjZQorMS4yLjEgc3RydWN0IHRoZXJtYWxfY29vbGluZ19kZXZpY2UgKnRoZXJtYWxfY29vbGluZ19kZXZpY2VfcmVnaXN0ZXIoY2hhciAqbmFtZSwKKwkJdm9pZCAqZGV2ZGF0YSwgc3RydWN0IHRoZXJtYWxfY29vbGluZ19kZXZpY2Vfb3BzICopCisKKyAgICBUaGlzIGludGVyZmFjZSBmdW5jdGlvbiBhZGRzIGEgbmV3IHRoZXJtYWwgY29vbGluZyBkZXZpY2UgKGZhbi9wcm9jZXNzb3IvLi4uKQorICAgIHRvIC9zeXMvY2xhc3MvdGhlcm1hbC8gZm9sZGVyIGFzIGNvb2xpbmdfZGV2aWNlWzAtKl0uIEl0IHRyaWVzIHRvIGJpbmQgaXRzZWxmCisgICAgdG8gYWxsIHRoZSB0aGVybWFsIHpvbmUgZGV2aWNlcyByZWdpc3RlciBhdCB0aGUgc2FtZSB0aW1lLgorICAgIG5hbWU6IHRoZSBjb29saW5nIGRldmljZSBuYW1lLgorICAgIGRldmRhdGE6IGRldmljZSBwcml2YXRlIGRhdGEuCisgICAgb3BzOiB0aGVybWFsIGNvb2xpbmcgZGV2aWNlcyBjYWxsLWJhY2tzLgorCS5nZXRfbWF4X3N0YXRlOiBnZXQgdGhlIE1heGltdW0gdGhyb3R0bGUgc3RhdGUgb2YgdGhlIGNvb2xpbmcgZGV2aWNlLgorCS5nZXRfY3VyX3N0YXRlOiBnZXQgdGhlIEN1cnJlbnQgdGhyb3R0bGUgc3RhdGUgb2YgdGhlIGNvb2xpbmcgZGV2aWNlLgorCS5zZXRfY3VyX3N0YXRlOiBzZXQgdGhlIEN1cnJlbnQgdGhyb3R0bGUgc3RhdGUgb2YgdGhlIGNvb2xpbmcgZGV2aWNlLgorCisxLjIuMiB2b2lkIHRoZXJtYWxfY29vbGluZ19kZXZpY2VfdW5yZWdpc3RlcihzdHJ1Y3QgdGhlcm1hbF9jb29saW5nX2RldmljZSAqY2RldikKKworICAgIFRoaXMgaW50ZXJmYWNlIGZ1bmN0aW9uIHJlbW92ZSB0aGUgdGhlcm1hbCBjb29saW5nIGRldmljZS4KKyAgICBJdCBkZWxldGVzIHRoZSBjb3JyZXNwb25kaW5nIGVudHJ5IGZvcm0gL3N5cy9jbGFzcy90aGVybWFsIGZvbGRlciBhbmQKKyAgICB1bmJpbmQgaXRzZWxmIGZyb20gYWxsIHRoZSB0aGVybWFsIHpvbmUgZGV2aWNlcyB1c2luZyBpdC4KKworMS4zIGludGVyZmFjZSBmb3IgYmluZGluZyBhIHRoZXJtYWwgem9uZSBkZXZpY2Ugd2l0aCBhIHRoZXJtYWwgY29vbGluZyBkZXZpY2UKKzEuMy4xIGludCB0aGVybWFsX3pvbmVfYmluZF9jb29saW5nX2RldmljZShzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHosCisJaW50IHRyaXAsIHN0cnVjdCB0aGVybWFsX2Nvb2xpbmdfZGV2aWNlICpjZGV2LAorCXVuc2lnbmVkIGxvbmcgdXBwZXIsIHVuc2lnbmVkIGxvbmcgbG93ZXIsIHVuc2lnbmVkIGludCB3ZWlnaHQpOworCisgICAgVGhpcyBpbnRlcmZhY2UgZnVuY3Rpb24gYmluZCBhIHRoZXJtYWwgY29vbGluZyBkZXZpY2UgdG8gdGhlIGNlcnRhaW4gdHJpcAorICAgIHBvaW50IG9mIGEgdGhlcm1hbCB6b25lIGRldmljZS4KKyAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzdWFsbHkgY2FsbGVkIGluIHRoZSB0aGVybWFsIHpvbmUgZGV2aWNlIC5iaW5kIGNhbGxiYWNrLgorICAgIHR6OiB0aGUgdGhlcm1hbCB6b25lIGRldmljZQorICAgIGNkZXY6IHRoZXJtYWwgY29vbGluZyBkZXZpY2UKKyAgICB0cmlwOiBpbmRpY2F0ZXMgd2hpY2ggdHJpcCBwb2ludCB0aGUgY29vbGluZyBkZXZpY2VzIGlzIGFzc29jaWF0ZWQgd2l0aAorCSAgaW4gdGhpcyB0aGVybWFsIHpvbmUuCisgICAgdXBwZXI6dGhlIE1heGltdW0gY29vbGluZyBzdGF0ZSBmb3IgdGhpcyB0cmlwIHBvaW50LgorICAgICAgICAgIFRIRVJNQUxfTk9fTElNSVQgbWVhbnMgbm8gdXBwZXIgbGltaXQsCisJICBhbmQgdGhlIGNvb2xpbmcgZGV2aWNlIGNhbiBiZSBpbiBtYXhfc3RhdGUuCisgICAgbG93ZXI6dGhlIE1pbmltdW0gY29vbGluZyBzdGF0ZSBjYW4gYmUgdXNlZCBmb3IgdGhpcyB0cmlwIHBvaW50LgorICAgICAgICAgIFRIRVJNQUxfTk9fTElNSVQgbWVhbnMgbm8gbG93ZXIgbGltaXQsCisJICBhbmQgdGhlIGNvb2xpbmcgZGV2aWNlIGNhbiBiZSBpbiBjb29saW5nIHN0YXRlIDAuCisgICAgd2VpZ2h0OiB0aGUgaW5mbHVlbmNlIG9mIHRoaXMgY29vbGluZyBkZXZpY2UgaW4gdGhpcyB0aGVybWFsCisgICAgICAgICAgICB6b25lLiAgU2VlIDEuNC4xIGJlbG93IGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisxLjMuMiBpbnQgdGhlcm1hbF96b25lX3VuYmluZF9jb29saW5nX2RldmljZShzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqdHosCisJCWludCB0cmlwLCBzdHJ1Y3QgdGhlcm1hbF9jb29saW5nX2RldmljZSAqY2Rldik7CisKKyAgICBUaGlzIGludGVyZmFjZSBmdW5jdGlvbiB1bmJpbmQgYSB0aGVybWFsIGNvb2xpbmcgZGV2aWNlIGZyb20gdGhlIGNlcnRhaW4KKyAgICB0cmlwIHBvaW50IG9mIGEgdGhlcm1hbCB6b25lIGRldmljZS4gVGhpcyBmdW5jdGlvbiBpcyB1c3VhbGx5IGNhbGxlZCBpbgorICAgIHRoZSB0aGVybWFsIHpvbmUgZGV2aWNlIC51bmJpbmQgY2FsbGJhY2suCisgICAgdHo6IHRoZSB0aGVybWFsIHpvbmUgZGV2aWNlCisgICAgY2RldjogdGhlcm1hbCBjb29saW5nIGRldmljZQorICAgIHRyaXA6IGluZGljYXRlcyB3aGljaCB0cmlwIHBvaW50IHRoZSBjb29saW5nIGRldmljZXMgaXMgYXNzb2NpYXRlZCB3aXRoCisJICBpbiB0aGlzIHRoZXJtYWwgem9uZS4KKworMS40IFRoZXJtYWwgWm9uZSBQYXJhbWV0ZXJzCisxLjQuMSBzdHJ1Y3QgdGhlcm1hbF9iaW5kX3BhcmFtcworICAgIFRoaXMgc3RydWN0dXJlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIHRoYXQgYXJlIHVzZWQgdG8gYmluZAorICAgIGEgem9uZSB3aXRoIGEgY29vbGluZyBkZXZpY2UgZm9yIGEgcGFydGljdWxhciB0cmlwIHBvaW50LgorICAgIC5jZGV2OiBUaGUgY29vbGluZyBkZXZpY2UgcG9pbnRlcgorICAgIC53ZWlnaHQ6IFRoZSAnaW5mbHVlbmNlJyBvZiBhIHBhcnRpY3VsYXIgY29vbGluZyBkZXZpY2Ugb24gdGhpcworICAgICAgICAgICAgIHpvbmUuIFRoaXMgaXMgcmVsYXRpdmUgdG8gdGhlIHJlc3Qgb2YgdGhlIGNvb2xpbmcKKyAgICAgICAgICAgICBkZXZpY2VzLiBGb3IgZXhhbXBsZSwgaWYgYWxsIGNvb2xpbmcgZGV2aWNlcyBoYXZlIGEKKyAgICAgICAgICAgICB3ZWlnaHQgb2YgMSwgdGhlbiB0aGV5IGFsbCBjb250cmlidXRlIHRoZSBzYW1lLiBZb3UgY2FuCisgICAgICAgICAgICAgdXNlIHBlcmNlbnRhZ2VzIGlmIHlvdSB3YW50LCBidXQgaXQncyBub3QgbWFuZGF0b3J5LiBBCisgICAgICAgICAgICAgd2VpZ2h0IG9mIDAgbWVhbnMgdGhhdCB0aGlzIGNvb2xpbmcgZGV2aWNlIGRvZXNuJ3QKKyAgICAgICAgICAgICBjb250cmlidXRlIHRvIHRoZSBjb29saW5nIG9mIHRoaXMgem9uZSB1bmxlc3MgYWxsIGNvb2xpbmcKKyAgICAgICAgICAgICBkZXZpY2VzIGhhdmUgYSB3ZWlnaHQgb2YgMC4gSWYgYWxsIHdlaWdodHMgYXJlIDAsIHRoZW4KKyAgICAgICAgICAgICB0aGV5IGFsbCBjb250cmlidXRlIHRoZSBzYW1lLgorICAgIC50cmlwX21hc2s6VGhpcyBpcyBhIGJpdCBtYXNrIHRoYXQgZ2l2ZXMgdGhlIGJpbmRpbmcgcmVsYXRpb24gYmV0d2VlbgorICAgICAgICAgICAgICAgdGhpcyB0aGVybWFsIHpvbmUgYW5kIGNkZXYsIGZvciBhIHBhcnRpY3VsYXIgdHJpcCBwb2ludC4KKyAgICAgICAgICAgICAgIElmIG50aCBiaXQgaXMgc2V0LCB0aGVuIHRoZSBjZGV2IGFuZCB0aGVybWFsIHpvbmUgYXJlIGJvdW5kCisgICAgICAgICAgICAgICBmb3IgdHJpcCBwb2ludCBuLgorICAgIC5saW1pdHM6IFRoaXMgaXMgYW4gYXJyYXkgb2YgY29vbGluZyBzdGF0ZSBsaW1pdHMuIE11c3QgaGF2ZSBleGFjdGx5CisgICAgICAgICAyICogdGhlcm1hbF96b25lLm51bWJlcl9vZl90cmlwX3BvaW50cy4gSXQgaXMgYW4gYXJyYXkgY29uc2lzdGluZworICAgICAgICAgb2YgdHVwbGVzIDxsb3dlci1zdGF0ZSB1cHBlci1zdGF0ZT4gb2Ygc3RhdGUgbGltaXRzLiBFYWNoIHRyaXAKKyAgICAgICAgIHdpbGwgYmUgYXNzb2NpYXRlZCB3aXRoIG9uZSBzdGF0ZSBsaW1pdCB0dXBsZSB3aGVuIGJpbmRpbmcuCisgICAgICAgICBBIE5VTEwgcG9pbnRlciBtZWFucyA8VEhFUk1BTF9OT19MSU1JVFMgVEhFUk1BTF9OT19MSU1JVFM+CisgICAgICAgICBvbiBhbGwgdHJpcHMuIFRoZXNlIGxpbWl0cyBhcmUgdXNlZCB3aGVuIGJpbmRpbmcgYSBjZGV2IHRvIGEKKyAgICAgICAgIHRyaXAgcG9pbnQuCisgICAgLm1hdGNoOiBUaGlzIGNhbGwgYmFjayByZXR1cm5zIHN1Y2Nlc3MoMCkgaWYgdGhlICd0eiBhbmQgY2RldicgbmVlZCB0bworCSAgICBiZSBib3VuZCwgYXMgcGVyIHBsYXRmb3JtIGRhdGEuCisxLjQuMiBzdHJ1Y3QgdGhlcm1hbF96b25lX3BhcmFtcworICAgIFRoaXMgc3RydWN0dXJlIGRlZmluZXMgdGhlIHBsYXRmb3JtIGxldmVsIHBhcmFtZXRlcnMgZm9yIGEgdGhlcm1hbCB6b25lLgorICAgIFRoaXMgZGF0YSwgZm9yIGVhY2ggdGhlcm1hbCB6b25lIHNob3VsZCBjb21lIGZyb20gdGhlIHBsYXRmb3JtIGxheWVyLgorICAgIFRoaXMgaXMgYW4gb3B0aW9uYWwgZmVhdHVyZSB3aGVyZSBzb21lIHBsYXRmb3JtcyBjYW4gY2hvb3NlIG5vdCB0bworICAgIHByb3ZpZGUgdGhpcyBkYXRhLgorICAgIC5nb3Zlcm5vcl9uYW1lOiBOYW1lIG9mIHRoZSB0aGVybWFsIGdvdmVybm9yIHVzZWQgZm9yIHRoaXMgem9uZQorICAgIC5ub19od21vbjogYSBib29sZWFuIHRvIGluZGljYXRlIGlmIHRoZSB0aGVybWFsIHRvIGh3bW9uIHN5c2ZzIGludGVyZmFjZQorICAgICAgICAgICAgICAgaXMgcmVxdWlyZWQuIHdoZW4gbm9faHdtb24gPT0gZmFsc2UsIGEgaHdtb24gc3lzZnMgaW50ZXJmYWNlCisgICAgICAgICAgICAgICB3aWxsIGJlIGNyZWF0ZWQuIHdoZW4gbm9faHdtb24gPT0gdHJ1ZSwgbm90aGluZyB3aWxsIGJlIGRvbmUuCisgICAgICAgICAgICAgICBJbiBjYXNlIHRoZSB0aGVybWFsX3pvbmVfcGFyYW1zIGlzIE5VTEwsIHRoZSBod21vbiBpbnRlcmZhY2UKKyAgICAgICAgICAgICAgIHdpbGwgYmUgY3JlYXRlZCAoZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpLgorICAgIC5udW1fdGJwczogTnVtYmVyIG9mIHRoZXJtYWxfYmluZF9wYXJhbXMgZW50cmllcyBmb3IgdGhpcyB6b25lCisgICAgLnRicDogdGhlcm1hbF9iaW5kX3BhcmFtcyBlbnRyaWVzCisKKzIuIHN5c2ZzIGF0dHJpYnV0ZXMgc3RydWN0dXJlCisKK1JPCXJlYWQgb25seSB2YWx1ZQorUlcJcmVhZC93cml0ZSB2YWx1ZQorCitUaGVybWFsIHN5c2ZzIGF0dHJpYnV0ZXMgd2lsbCBiZSByZXByZXNlbnRlZCB1bmRlciAvc3lzL2NsYXNzL3RoZXJtYWwuCitId21vbiBzeXNmcyBJL0YgZXh0ZW5zaW9uIGlzIGFsc28gYXZhaWxhYmxlIHVuZGVyIC9zeXMvY2xhc3MvaHdtb24KK2lmIGh3bW9uIGlzIGNvbXBpbGVkIGluIG9yIGJ1aWx0IGFzIGEgbW9kdWxlLgorCitUaGVybWFsIHpvbmUgZGV2aWNlIHN5cyBJL0YsIGNyZWF0ZWQgb25jZSBpdCdzIHJlZ2lzdGVyZWQ6Cisvc3lzL2NsYXNzL3RoZXJtYWwvdGhlcm1hbF96b25lWzAtKl06CisgICAgfC0tLXR5cGU6CQkJVHlwZSBvZiB0aGUgdGhlcm1hbCB6b25lCisgICAgfC0tLXRlbXA6CQkJQ3VycmVudCB0ZW1wZXJhdHVyZQorICAgIHwtLS1tb2RlOgkJCVdvcmtpbmcgbW9kZSBvZiB0aGUgdGhlcm1hbCB6b25lCisgICAgfC0tLXBvbGljeToJCQlUaGVybWFsIGdvdmVybm9yIHVzZWQgZm9yIHRoaXMgem9uZQorICAgIHwtLS1hdmFpbGFibGVfcG9saWNpZXM6CUF2YWlsYWJsZSB0aGVybWFsIGdvdmVybm9ycyBmb3IgdGhpcyB6b25lCisgICAgfC0tLXRyaXBfcG9pbnRfWzAtKl1fdGVtcDoJVHJpcCBwb2ludCB0ZW1wZXJhdHVyZQorICAgIHwtLS10cmlwX3BvaW50X1swLSpdX3R5cGU6CVRyaXAgcG9pbnQgdHlwZQorICAgIHwtLS10cmlwX3BvaW50X1swLSpdX2h5c3Q6CUh5c3RlcmVzaXMgdmFsdWUgZm9yIHRoaXMgdHJpcCBwb2ludAorICAgIHwtLS1lbXVsX3RlbXA6CQlFbXVsYXRlZCB0ZW1wZXJhdHVyZSBzZXQgbm9kZQorICAgIHwtLS1zdXN0YWluYWJsZV9wb3dlcjogICAgICBTdXN0YWluYWJsZSBkaXNzaXBhdGFibGUgcG93ZXIKKyAgICB8LS0ta19wbzogICAgICAgICAgICAgICAgICAgUHJvcG9ydGlvbmFsIHRlcm0gZHVyaW5nIHRlbXBlcmF0dXJlIG92ZXJzaG9vdAorICAgIHwtLS1rX3B1OiAgICAgICAgICAgICAgICAgICBQcm9wb3J0aW9uYWwgdGVybSBkdXJpbmcgdGVtcGVyYXR1cmUgdW5kZXJzaG9vdAorICAgIHwtLS1rX2k6ICAgICAgICAgICAgICAgICAgICBQSUQncyBpbnRlZ3JhbCB0ZXJtIGluIHRoZSBwb3dlciBhbGxvY2F0b3IgZ292CisgICAgfC0tLWtfZDogICAgICAgICAgICAgICAgICAgIFBJRCdzIGRlcml2YXRpdmUgdGVybSBpbiB0aGUgcG93ZXIgYWxsb2NhdG9yCisgICAgfC0tLWludGVncmFsX2N1dG9mZjogICAgICAgIE9mZnNldCBhYm92ZSB3aGljaCBlcnJvcnMgYXJlIGFjY3VtdWxhdGVkCisgICAgfC0tLXNsb3BlOiAgICAgICAgICAgICAgICAgIFNsb3BlIGNvbnN0YW50IGFwcGxpZWQgYXMgbGluZWFyIGV4dHJhcG9sYXRpb24KKyAgICB8LS0tb2Zmc2V0OiAgICAgICAgICAgICAgICAgT2Zmc2V0IGNvbnN0YW50IGFwcGxpZWQgYXMgbGluZWFyIGV4dHJhcG9sYXRpb24KKworVGhlcm1hbCBjb29saW5nIGRldmljZSBzeXMgSS9GLCBjcmVhdGVkIG9uY2UgaXQncyByZWdpc3RlcmVkOgorL3N5cy9jbGFzcy90aGVybWFsL2Nvb2xpbmdfZGV2aWNlWzAtKl06CisgICAgfC0tLXR5cGU6CQkJVHlwZSBvZiB0aGUgY29vbGluZyBkZXZpY2UocHJvY2Vzc29yL2Zhbi8uLi4pCisgICAgfC0tLW1heF9zdGF0ZToJCU1heGltdW0gY29vbGluZyBzdGF0ZSBvZiB0aGUgY29vbGluZyBkZXZpY2UKKyAgICB8LS0tY3VyX3N0YXRlOgkJQ3VycmVudCBjb29saW5nIHN0YXRlIG9mIHRoZSBjb29saW5nIGRldmljZQorCisKK1RoZW4gbmV4dCB0d28gZHluYW1pYyBhdHRyaWJ1dGVzIGFyZSBjcmVhdGVkL3JlbW92ZWQgaW4gcGFpcnMuIFRoZXkgcmVwcmVzZW50Cit0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYSB0aGVybWFsIHpvbmUgYW5kIGl0cyBhc3NvY2lhdGVkIGNvb2xpbmcgZGV2aWNlLgorVGhleSBhcmUgY3JlYXRlZC9yZW1vdmVkIGZvciBlYWNoIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uIG9mCit0aGVybWFsX3pvbmVfYmluZF9jb29saW5nX2RldmljZS90aGVybWFsX3pvbmVfdW5iaW5kX2Nvb2xpbmdfZGV2aWNlLgorCisvc3lzL2NsYXNzL3RoZXJtYWwvdGhlcm1hbF96b25lWzAtKl06CisgICAgfC0tLWNkZXZbMC0qXToJCVswLSpddGggY29vbGluZyBkZXZpY2UgaW4gY3VycmVudCB0aGVybWFsIHpvbmUKKyAgICB8LS0tY2RldlswLSpdX3RyaXBfcG9pbnQ6CVRyaXAgcG9pbnQgdGhhdCBjZGV2WzAtKl0gaXMgYXNzb2NpYXRlZCB3aXRoCisgICAgfC0tLWNkZXZbMC0qXV93ZWlnaHQ6ICAgICAgIEluZmx1ZW5jZSBvZiB0aGUgY29vbGluZyBkZXZpY2UgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyB0aGVybWFsIHpvbmUKKworQmVzaWRlcyB0aGUgdGhlcm1hbCB6b25lIGRldmljZSBzeXNmcyBJL0YgYW5kIGNvb2xpbmcgZGV2aWNlIHN5c2ZzIEkvRiwKK3RoZSBnZW5lcmljIHRoZXJtYWwgZHJpdmVyIGFsc28gY3JlYXRlcyBhIGh3bW9uIHN5c2ZzIEkvRiBmb3IgZWFjaCBfdHlwZV8KK29mIHRoZXJtYWwgem9uZSBkZXZpY2UuIEUuZy4gdGhlIGdlbmVyaWMgdGhlcm1hbCBkcml2ZXIgcmVnaXN0ZXJzIG9uZSBod21vbgorY2xhc3MgZGV2aWNlIGFuZCBidWlsZCB0aGUgYXNzb2NpYXRlZCBod21vbiBzeXNmcyBJL0YgZm9yIGFsbCB0aGUgcmVnaXN0ZXJlZAorQUNQSSB0aGVybWFsIHpvbmVzLgorCisvc3lzL2NsYXNzL2h3bW9uL2h3bW9uWzAtKl06CisgICAgfC0tLW5hbWU6CQkJVGhlIHR5cGUgb2YgdGhlIHRoZXJtYWwgem9uZSBkZXZpY2VzCisgICAgfC0tLXRlbXBbMS0qXV9pbnB1dDoJVGhlIGN1cnJlbnQgdGVtcGVyYXR1cmUgb2YgdGhlcm1hbCB6b25lIFsxLSpdCisgICAgfC0tLXRlbXBbMS0qXV9jcml0aWNhbDoJVGhlIGNyaXRpY2FsIHRyaXAgcG9pbnQgb2YgdGhlcm1hbCB6b25lIFsxLSpdCisKK1BsZWFzZSByZWFkIERvY3VtZW50YXRpb24vaHdtb24vc3lzZnMtaW50ZXJmYWNlIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorCisqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogVGhlcm1hbCB6b25lIGF0dHJpYnV0ZXMgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK3R5cGUKKwlTdHJpbmdzIHdoaWNoIHJlcHJlc2VudCB0aGUgdGhlcm1hbCB6b25lIHR5cGUuCisJVGhpcyBpcyBnaXZlbiBieSB0aGVybWFsIHpvbmUgZHJpdmVyIGFzIHBhcnQgb2YgcmVnaXN0cmF0aW9uLgorCUUuZzogImFjcGl0eiIgaW5kaWNhdGVzIGl0J3MgYW4gQUNQSSB0aGVybWFsIGRldmljZS4KKwlJbiBvcmRlciB0byBrZWVwIGl0IGNvbnNpc3RlbnQgd2l0aCBod21vbiBzeXMgYXR0cmlidXRlOyB0aGlzIHNob3VsZAorCWJlIGEgc2hvcnQsIGxvd2VyY2FzZSBzdHJpbmcsIG5vdCBjb250YWluaW5nIHNwYWNlcyBub3IgZGFzaGVzLgorCVJPLCBSZXF1aXJlZAorCit0ZW1wCisJQ3VycmVudCB0ZW1wZXJhdHVyZSBhcyByZXBvcnRlZCBieSB0aGVybWFsIHpvbmUgKHNlbnNvcikuCisJVW5pdDogbWlsbGlkZWdyZWUgQ2Vsc2l1cworCVJPLCBSZXF1aXJlZAorCittb2RlCisJT25lIG9mIHRoZSBwcmVkZWZpbmVkIHZhbHVlcyBpbiBbZW5hYmxlZCwgZGlzYWJsZWRdLgorCVRoaXMgZmlsZSBnaXZlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYWxnb3JpdGhtIHRoYXQgaXMgY3VycmVudGx5CisJbWFuYWdpbmcgdGhlIHRoZXJtYWwgem9uZS4gSXQgY2FuIGJlIGVpdGhlciBkZWZhdWx0IGtlcm5lbCBiYXNlZAorCWFsZ29yaXRobSBvciB1c2VyIHNwYWNlIGFwcGxpY2F0aW9uLgorCWVuYWJsZWQJCT0gZW5hYmxlIEtlcm5lbCBUaGVybWFsIG1hbmFnZW1lbnQuCisJZGlzYWJsZWQJPSBQcmV2ZW50aW5nIGtlcm5lbCB0aGVybWFsIHpvbmUgZHJpdmVyIGFjdGlvbnMgdXBvbgorCQkJICB0cmlwIHBvaW50cyBzbyB0aGF0IHVzZXIgYXBwbGljYXRpb24gY2FuIHRha2UgZnVsbAorCQkJICBjaGFyZ2Ugb2YgdGhlIHRoZXJtYWwgbWFuYWdlbWVudC4KKwlSVywgT3B0aW9uYWwKKworcG9saWN5CisJT25lIG9mIHRoZSB2YXJpb3VzIHRoZXJtYWwgZ292ZXJub3JzIHVzZWQgZm9yIGEgcGFydGljdWxhciB6b25lLgorCVJXLCBSZXF1aXJlZAorCithdmFpbGFibGVfcG9saWNpZXMKKwlBdmFpbGFibGUgdGhlcm1hbCBnb3Zlcm5vcnMgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGEgcGFydGljdWxhciB6b25lLgorCVJPLCBSZXF1aXJlZAorCit0cmlwX3BvaW50X1swLSpdX3RlbXAKKwlUaGUgdGVtcGVyYXR1cmUgYWJvdmUgd2hpY2ggdHJpcCBwb2ludCB3aWxsIGJlIGZpcmVkLgorCVVuaXQ6IG1pbGxpZGVncmVlIENlbHNpdXMKKwlSTywgT3B0aW9uYWwKKwordHJpcF9wb2ludF9bMC0qXV90eXBlCisJU3RyaW5ncyB3aGljaCBpbmRpY2F0ZSB0aGUgdHlwZSBvZiB0aGUgdHJpcCBwb2ludC4KKwlFLmcuIGl0IGNhbiBiZSBvbmUgb2YgY3JpdGljYWwsIGhvdCwgcGFzc2l2ZSwgYWN0aXZlWzAtKl0gZm9yIEFDUEkKKwl0aGVybWFsIHpvbmUuCisJUk8sIE9wdGlvbmFsCisKK3RyaXBfcG9pbnRfWzAtKl1faHlzdAorCVRoZSBoeXN0ZXJlc2lzIHZhbHVlIGZvciBhIHRyaXAgcG9pbnQsIHJlcHJlc2VudGVkIGFzIGFuIGludGVnZXIKKwlVbml0OiBDZWxzaXVzCisJUlcsIE9wdGlvbmFsCisKK2NkZXZbMC0qXQorCVN5c2ZzIGxpbmsgdG8gdGhlIHRoZXJtYWwgY29vbGluZyBkZXZpY2Ugbm9kZSB3aGVyZSB0aGUgc3lzIEkvRgorCWZvciBjb29saW5nIGRldmljZSB0aHJvdHRsaW5nIGNvbnRyb2wgcmVwcmVzZW50cy4KKwlSTywgT3B0aW9uYWwKKworY2RldlswLSpdX3RyaXBfcG9pbnQKKwlUaGUgdHJpcCBwb2ludCB3aXRoIHdoaWNoIGNkZXZbMC0qXSBpcyBhc3NvY2lhdGVkIGluIHRoaXMgdGhlcm1hbAorCXpvbmU7IC0xIG1lYW5zIHRoZSBjb29saW5nIGRldmljZSBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGFueSB0cmlwCisJcG9pbnQuCisJUk8sIE9wdGlvbmFsCisKK2NkZXZbMC0qXV93ZWlnaHQKKyAgICAgICAgVGhlIGluZmx1ZW5jZSBvZiBjZGV2WzAtKl0gaW4gdGhpcyB0aGVybWFsIHpvbmUuIFRoaXMgdmFsdWUKKyAgICAgICAgaXMgcmVsYXRpdmUgdG8gdGhlIHJlc3Qgb2YgY29vbGluZyBkZXZpY2VzIGluIHRoZSB0aGVybWFsCisgICAgICAgIHpvbmUuIEZvciBleGFtcGxlLCBpZiBhIGNvb2xpbmcgZGV2aWNlIGhhcyBhIHdlaWdodCBkb3VibGUKKyAgICAgICAgdGhhbiB0aGF0IG9mIG90aGVyLCBpdCdzIHR3aWNlIGFzIGVmZmVjdGl2ZSBpbiBjb29saW5nIHRoZQorICAgICAgICB0aGVybWFsIHpvbmUuCisgICAgICAgIFJXLCBPcHRpb25hbAorCitwYXNzaXZlCisJQXR0cmlidXRlIGlzIG9ubHkgcHJlc2VudCBmb3Igem9uZXMgaW4gd2hpY2ggdGhlIHBhc3NpdmUgY29vbGluZworCXBvbGljeSBpcyBub3Qgc3VwcG9ydGVkIGJ5IG5hdGl2ZSB0aGVybWFsIGRyaXZlci4gRGVmYXVsdCBpcyB6ZXJvCisJYW5kIGNhbiBiZSBzZXQgdG8gYSB0ZW1wZXJhdHVyZSAoaW4gbWlsbGlkZWdyZWVzKSB0byBlbmFibGUgYQorCXBhc3NpdmUgdHJpcCBwb2ludCBmb3IgdGhlIHpvbmUuIEFjdGl2YXRpb24gaXMgZG9uZSBieSBwb2xsaW5nIHdpdGgKKwlhbiBpbnRlcnZhbCBvZiAxIHNlY29uZC4KKwlVbml0OiBtaWxsaWRlZ3JlZXMgQ2Vsc2l1cworCVZhbGlkIHZhbHVlczogMCAoZGlzYWJsZWQpIG9yIGdyZWF0ZXIgdGhhbiAxMDAwCisJUlcsIE9wdGlvbmFsCisKK2VtdWxfdGVtcAorCUludGVyZmFjZSB0byBzZXQgdGhlIGVtdWxhdGVkIHRlbXBlcmF0dXJlIG1ldGhvZCBpbiB0aGVybWFsIHpvbmUKKwkoc2Vuc29yKS4gQWZ0ZXIgc2V0dGluZyB0aGlzIHRlbXBlcmF0dXJlLCB0aGUgdGhlcm1hbCB6b25lIG1heSBwYXNzCisJdGhpcyB0ZW1wZXJhdHVyZSB0byBwbGF0Zm9ybSBlbXVsYXRpb24gZnVuY3Rpb24gaWYgcmVnaXN0ZXJlZCBvcgorCWNhY2hlIGl0IGxvY2FsbHkuIFRoaXMgaXMgdXNlZnVsIGluIGRlYnVnZ2luZyBkaWZmZXJlbnQgdGVtcGVyYXR1cmUKKwl0aHJlc2hvbGQgYW5kIGl0cyBhc3NvY2lhdGVkIGNvb2xpbmcgYWN0aW9uLiBUaGlzIGlzIHdyaXRlIG9ubHkgbm9kZQorCWFuZCB3cml0aW5nIDAgb24gdGhpcyBub2RlIHNob3VsZCBkaXNhYmxlIGVtdWxhdGlvbi4KKwlVbml0OiBtaWxsaWRlZ3JlZSBDZWxzaXVzCisJV08sIE9wdGlvbmFsCisKKwkgIFdBUk5JTkc6IEJlIGNhcmVmdWwgd2hpbGUgZW5hYmxpbmcgdGhpcyBvcHRpb24gb24gcHJvZHVjdGlvbiBzeXN0ZW1zLAorCSAgYmVjYXVzZSB1c2VybGFuZCBjYW4gZWFzaWx5IGRpc2FibGUgdGhlIHRoZXJtYWwgcG9saWN5IGJ5IHNpbXBseQorCSAgZmxvb2RpbmcgdGhpcyBzeXNmcyBub2RlIHdpdGggbG93IHRlbXBlcmF0dXJlIHZhbHVlcy4KKworc3VzdGFpbmFibGVfcG93ZXIKKwlBbiBlc3RpbWF0ZSBvZiB0aGUgc3VzdGFpbmVkIHBvd2VyIHRoYXQgY2FuIGJlIGRpc3NpcGF0ZWQgYnkKKwl0aGUgdGhlcm1hbCB6b25lLiBVc2VkIGJ5IHRoZSBwb3dlciBhbGxvY2F0b3IgZ292ZXJub3IuIEZvcgorCW1vcmUgaW5mb3JtYXRpb24gc2VlIERvY3VtZW50YXRpb24vdGhlcm1hbC9wb3dlcl9hbGxvY2F0b3IudHh0CisJVW5pdDogbWlsbGl3YXR0cworCVJXLCBPcHRpb25hbAorCitrX3BvCisJVGhlIHByb3BvcnRpb25hbCB0ZXJtIG9mIHRoZSBwb3dlciBhbGxvY2F0b3IgZ292ZXJub3IncyBQSUQKKwljb250cm9sbGVyIGR1cmluZyB0ZW1wZXJhdHVyZSBvdmVyc2hvb3QuIFRlbXBlcmF0dXJlIG92ZXJzaG9vdAorCWlzIHdoZW4gdGhlIGN1cnJlbnQgdGVtcGVyYXR1cmUgaXMgYWJvdmUgdGhlICJkZXNpcmVkCisJdGVtcGVyYXR1cmUiIHRyaXAgcG9pbnQuIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZQorCURvY3VtZW50YXRpb24vdGhlcm1hbC9wb3dlcl9hbGxvY2F0b3IudHh0CisJUlcsIE9wdGlvbmFsCisKK2tfcHUKKwlUaGUgcHJvcG9ydGlvbmFsIHRlcm0gb2YgdGhlIHBvd2VyIGFsbG9jYXRvciBnb3Zlcm5vcidzIFBJRAorCWNvbnRyb2xsZXIgZHVyaW5nIHRlbXBlcmF0dXJlIHVuZGVyc2hvb3QuIFRlbXBlcmF0dXJlIHVuZGVyc2hvb3QKKwlpcyB3aGVuIHRoZSBjdXJyZW50IHRlbXBlcmF0dXJlIGlzIGJlbG93IHRoZSAiZGVzaXJlZAorCXRlbXBlcmF0dXJlIiB0cmlwIHBvaW50LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUKKwlEb2N1bWVudGF0aW9uL3RoZXJtYWwvcG93ZXJfYWxsb2NhdG9yLnR4dAorCVJXLCBPcHRpb25hbAorCitrX2kKKwlUaGUgaW50ZWdyYWwgdGVybSBvZiB0aGUgcG93ZXIgYWxsb2NhdG9yIGdvdmVybm9yJ3MgUElECisJY29udHJvbGxlci4gVGhpcyB0ZXJtIGFsbG93cyB0aGUgUElEIGNvbnRyb2xsZXIgdG8gY29tcGVuc2F0ZQorCWZvciBsb25nIHRlcm0gZHJpZnQuIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZQorCURvY3VtZW50YXRpb24vdGhlcm1hbC9wb3dlcl9hbGxvY2F0b3IudHh0CisJUlcsIE9wdGlvbmFsCisKK2tfZAorCVRoZSBkZXJpdmF0aXZlIHRlcm0gb2YgdGhlIHBvd2VyIGFsbG9jYXRvciBnb3Zlcm5vcidzIFBJRAorCWNvbnRyb2xsZXIuIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZQorCURvY3VtZW50YXRpb24vdGhlcm1hbC9wb3dlcl9hbGxvY2F0b3IudHh0CisJUlcsIE9wdGlvbmFsCisKK2ludGVncmFsX2N1dG9mZgorCVRlbXBlcmF0dXJlIG9mZnNldCBmcm9tIHRoZSBkZXNpcmVkIHRlbXBlcmF0dXJlIHRyaXAgcG9pbnQKKwlhYm92ZSB3aGljaCB0aGUgaW50ZWdyYWwgdGVybSBvZiB0aGUgcG93ZXIgYWxsb2NhdG9yCisJZ292ZXJub3IncyBQSUQgY29udHJvbGxlciBzdGFydHMgYWNjdW11bGF0aW5nIGVycm9ycy4gRm9yCisJZXhhbXBsZSwgaWYgaW50ZWdyYWxfY3V0b2ZmIGlzIDAsIHRoZW4gdGhlIGludGVncmFsIHRlcm0gb25seQorCWFjY3VtdWxhdGVzIGVycm9yIHdoZW4gdGVtcGVyYXR1cmUgaXMgYWJvdmUgdGhlIGRlc2lyZWQKKwl0ZW1wZXJhdHVyZSB0cmlwIHBvaW50LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUKKwlEb2N1bWVudGF0aW9uL3RoZXJtYWwvcG93ZXJfYWxsb2NhdG9yLnR4dAorCVJXLCBPcHRpb25hbAorCitzbG9wZQorCVRoZSBzbG9wZSBjb25zdGFudCB1c2VkIGluIGEgbGluZWFyIGV4dHJhcG9sYXRpb24gbW9kZWwKKwl0byBkZXRlcm1pbmUgYSBob3RzcG90IHRlbXBlcmF0dXJlIGJhc2VkIG9mZiB0aGUgc2Vuc29yJ3MKKwlyYXcgcmVhZGluZ3MuIEl0IGlzIHVwIHRvIHRoZSBkZXZpY2UgZHJpdmVyIHRvIGRldGVybWluZQorCXRoZSB1c2FnZSBvZiB0aGVzZSB2YWx1ZXMuCisJUlcsIE9wdGlvbmFsCisKK29mZnNldAorCVRoZSBvZmZzZXQgY29uc3RhbnQgdXNlZCBpbiBhIGxpbmVhciBleHRyYXBvbGF0aW9uIG1vZGVsCisJdG8gZGV0ZXJtaW5lIGEgaG90c3BvdCB0ZW1wZXJhdHVyZSBiYXNlZCBvZmYgdGhlIHNlbnNvcidzCisJcmF3IHJlYWRpbmdzLiBJdCBpcyB1cCB0byB0aGUgZGV2aWNlIGRyaXZlciB0byBkZXRlcm1pbmUKKwl0aGUgdXNhZ2Ugb2YgdGhlc2UgdmFsdWVzLgorCVJXLCBPcHRpb25hbAorCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb29saW5nIGRldmljZSBhdHRyaWJ1dGVzICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK3R5cGUKKwlTdHJpbmcgd2hpY2ggcmVwcmVzZW50cyB0aGUgdHlwZSBvZiBkZXZpY2UsIGUuZzoKKwktIGZvciBnZW5lcmljIEFDUEk6IHNob3VsZCBiZSAiRmFuIiwgIlByb2Nlc3NvciIgb3IgIkxDRCIKKwktIGZvciBtZW1vcnkgY29udHJvbGxlciBkZXZpY2Ugb24gaW50ZWxfbWVubG93IHBsYXRmb3JtOgorCSAgc2hvdWxkIGJlICJNZW1vcnkgY29udHJvbGxlciIuCisJUk8sIFJlcXVpcmVkCisKK21heF9zdGF0ZQorCVRoZSBtYXhpbXVtIHBlcm1pc3NpYmxlIGNvb2xpbmcgc3RhdGUgb2YgdGhpcyBjb29saW5nIGRldmljZS4KKwlSTywgUmVxdWlyZWQKKworY3VyX3N0YXRlCisJVGhlIGN1cnJlbnQgY29vbGluZyBzdGF0ZSBvZiB0aGlzIGNvb2xpbmcgZGV2aWNlLgorCVRoZSB2YWx1ZSBjYW4gYW55IGludGVnZXIgbnVtYmVycyBiZXR3ZWVuIDAgYW5kIG1heF9zdGF0ZToKKwktIGN1cl9zdGF0ZSA9PSAwIG1lYW5zIG5vIGNvb2xpbmcKKwktIGN1cl9zdGF0ZSA9PSBtYXhfc3RhdGUgbWVhbnMgdGhlIG1heGltdW0gY29vbGluZy4KKwlSVywgUmVxdWlyZWQKKworMy4gQSBzaW1wbGUgaW1wbGVtZW50YXRpb24KKworQUNQSSB0aGVybWFsIHpvbmUgbWF5IHN1cHBvcnQgbXVsdGlwbGUgdHJpcCBwb2ludHMgbGlrZSBjcml0aWNhbCwgaG90LAorcGFzc2l2ZSwgYWN0aXZlLiBJZiBhbiBBQ1BJIHRoZXJtYWwgem9uZSBzdXBwb3J0cyBjcml0aWNhbCwgcGFzc2l2ZSwKK2FjdGl2ZVswXSBhbmQgYWN0aXZlWzFdIGF0IHRoZSBzYW1lIHRpbWUsIGl0IG1heSByZWdpc3RlciBpdHNlbGYgYXMgYQordGhlcm1hbF96b25lX2RldmljZSAodGhlcm1hbF96b25lMSkgd2l0aCA0IHRyaXAgcG9pbnRzIGluIGFsbC4KK0l0IGhhcyBvbmUgcHJvY2Vzc29yIGFuZCBvbmUgZmFuLCB3aGljaCBhcmUgYm90aCByZWdpc3RlcmVkIGFzCit0aGVybWFsX2Nvb2xpbmdfZGV2aWNlLiBCb3RoIGFyZSBjb25zaWRlcmVkIHRvIGhhdmUgdGhlIHNhbWUKK2VmZmVjdGl2ZW5lc3MgaW4gY29vbGluZyB0aGUgdGhlcm1hbCB6b25lLgorCitJZiB0aGUgcHJvY2Vzc29yIGlzIGxpc3RlZCBpbiBfUFNMIG1ldGhvZCwgYW5kIHRoZSBmYW4gaXMgbGlzdGVkIGluIF9BTDAKK21ldGhvZCwgdGhlIHN5cyBJL0Ygc3RydWN0dXJlIHdpbGwgYmUgYnVpbHQgbGlrZSB0aGlzOgorCisvc3lzL2NsYXNzL3RoZXJtYWw6CisKK3x0aGVybWFsX3pvbmUxOgorICAgIHwtLS10eXBlOgkJCWFjcGl0egorICAgIHwtLS10ZW1wOgkJCTM3MDAwCisgICAgfC0tLW1vZGU6CQkJZW5hYmxlZAorICAgIHwtLS1wb2xpY3k6CQkJc3RlcF93aXNlCisgICAgfC0tLWF2YWlsYWJsZV9wb2xpY2llczoJc3RlcF93aXNlIGZhaXJfc2hhcmUKKyAgICB8LS0tdHJpcF9wb2ludF8wX3RlbXA6CTEwMDAwMAorICAgIHwtLS10cmlwX3BvaW50XzBfdHlwZToJY3JpdGljYWwKKyAgICB8LS0tdHJpcF9wb2ludF8xX3RlbXA6CTgwMDAwCisgICAgfC0tLXRyaXBfcG9pbnRfMV90eXBlOglwYXNzaXZlCisgICAgfC0tLXRyaXBfcG9pbnRfMl90ZW1wOgk3MDAwMAorICAgIHwtLS10cmlwX3BvaW50XzJfdHlwZToJYWN0aXZlMAorICAgIHwtLS10cmlwX3BvaW50XzNfdGVtcDoJNjAwMDAKKyAgICB8LS0tdHJpcF9wb2ludF8zX3R5cGU6CWFjdGl2ZTEKKyAgICB8LS0tY2RldjA6CQkJLS0tPi9zeXMvY2xhc3MvdGhlcm1hbC9jb29saW5nX2RldmljZTAKKyAgICB8LS0tY2RldjBfdHJpcF9wb2ludDoJMQkvKiBjZGV2MCBjYW4gYmUgdXNlZCBmb3IgcGFzc2l2ZSAqLworICAgIHwtLS1jZGV2MF93ZWlnaHQ6ICAgICAgICAgICAxMDI0CisgICAgfC0tLWNkZXYxOgkJCS0tLT4vc3lzL2NsYXNzL3RoZXJtYWwvY29vbGluZ19kZXZpY2UzCisgICAgfC0tLWNkZXYxX3RyaXBfcG9pbnQ6CTIJLyogY2RldjEgY2FuIGJlIHVzZWQgZm9yIGFjdGl2ZVswXSovCisgICAgfC0tLWNkZXYxX3dlaWdodDogICAgICAgICAgIDEwMjQKKworfGNvb2xpbmdfZGV2aWNlMDoKKyAgICB8LS0tdHlwZToJCQlQcm9jZXNzb3IKKyAgICB8LS0tbWF4X3N0YXRlOgkJOAorICAgIHwtLS1jdXJfc3RhdGU6CQkwCisKK3xjb29saW5nX2RldmljZTM6CisgICAgfC0tLXR5cGU6CQkJRmFuCisgICAgfC0tLW1heF9zdGF0ZToJCTIKKyAgICB8LS0tY3VyX3N0YXRlOgkJMAorCisvc3lzL2NsYXNzL2h3bW9uOgorCit8aHdtb24wOgorICAgIHwtLS1uYW1lOgkJCWFjcGl0egorICAgIHwtLS10ZW1wMV9pbnB1dDoJCTM3MDAwCisgICAgfC0tLXRlbXAxX2NyaXQ6CQkxMDAwMDAKKworNC4gRXZlbnQgTm90aWZpY2F0aW9uCisKK1RoZSBmcmFtZXdvcmsgaW5jbHVkZXMgYSBzaW1wbGUgbm90aWZpY2F0aW9uIG1lY2hhbmlzbSwgaW4gdGhlIGZvcm0gb2YgYQorbmV0bGluayBldmVudC4gTmV0bGluayBzb2NrZXQgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSBkdXJpbmcgdGhlIF9pbml0Xworb2YgdGhlIGZyYW1ld29yay4gRHJpdmVycyB3aGljaCBpbnRlbmQgdG8gdXNlIHRoZSBub3RpZmljYXRpb24gbWVjaGFuaXNtCitqdXN0IG5lZWQgdG8gY2FsbCB0aGVybWFsX2dlbmVyYXRlX25ldGxpbmtfZXZlbnQoKSB3aXRoIHR3byBhcmd1bWVudHMgdml6Cisob3JpZ2luYXRvciwgZXZlbnQpLiBUaGUgb3JpZ2luYXRvciBpcyBhIHBvaW50ZXIgdG8gc3RydWN0IHRoZXJtYWxfem9uZV9kZXZpY2UKK2Zyb20gd2hlcmUgdGhlIGV2ZW50IGhhcyBiZWVuIG9yaWdpbmF0ZWQuIEFuIGludGVnZXIgd2hpY2ggcmVwcmVzZW50cyB0aGUKK3RoZXJtYWwgem9uZSBkZXZpY2Ugd2lsbCBiZSB1c2VkIGluIHRoZSBtZXNzYWdlIHRvIGlkZW50aWZ5IHRoZSB6b25lLiBUaGUKK2V2ZW50IHdpbGwgYmUgb25lIG9mOntUSEVSTUFMX0FVWDAsIFRIRVJNQUxfQVVYMSwgVEhFUk1BTF9DUklUSUNBTCwKK1RIRVJNQUxfREVWX0ZBVUxUfS4gTm90aWZpY2F0aW9uIGNhbiBiZSBzZW50IHdoZW4gdGhlIGN1cnJlbnQgdGVtcGVyYXR1cmUKK2Nyb3NzZXMgYW55IG9mIHRoZSBjb25maWd1cmVkIHRocmVzaG9sZHMuCisKKzUuIEV4cG9ydCBTeW1ib2wgQVBJczoKKworNS4xOiBnZXRfdHpfdHJlbmQ6CitUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRyZW5kIG9mIGEgdGhlcm1hbCB6b25lLCBpLmUgdGhlIHJhdGUgb2YgY2hhbmdlCitvZiB0ZW1wZXJhdHVyZSBvZiB0aGUgdGhlcm1hbCB6b25lLiBJZGVhbGx5LCB0aGUgdGhlcm1hbCBzZW5zb3IgZHJpdmVycworYXJlIHN1cHBvc2VkIHRvIGltcGxlbWVudCB0aGUgY2FsbGJhY2suIElmIHRoZXkgZG9uJ3QsIHRoZSB0aGVybWFsCitmcmFtZXdvcmsgY2FsY3VsYXRlZCB0aGUgdHJlbmQgYnkgY29tcGFyaW5nIHRoZSBwcmV2aW91cyBhbmQgdGhlIGN1cnJlbnQKK3RlbXBlcmF0dXJlIHZhbHVlcy4KKworNS4yOmdldF90aGVybWFsX2luc3RhbmNlOgorVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB0aGVybWFsX2luc3RhbmNlIGNvcnJlc3BvbmRpbmcgdG8gYSBnaXZlbgore3RoZXJtYWxfem9uZSwgY29vbGluZ19kZXZpY2UsIHRyaXBfcG9pbnR9IGNvbWJpbmF0aW9uLiBSZXR1cm5zIE5VTEwKK2lmIHN1Y2ggYW4gaW5zdGFuY2UgZG9lcyBub3QgZXhpc3QuCisKKzUuMzp0aGVybWFsX25vdGlmeV9mcmFtZXdvcms6CitUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgdGhlIHRyaXAgZXZlbnRzIGZyb20gc2Vuc29yIGRyaXZlcnMuIEl0IHN0YXJ0cwordGhyb3R0bGluZyB0aGUgY29vbGluZyBkZXZpY2VzIGFjY29yZGluZyB0byB0aGUgcG9saWN5IGNvbmZpZ3VyZWQuCitGb3IgQ1JJVElDQUwgYW5kIEhPVCB0cmlwIHBvaW50cywgdGhpcyBub3RpZmllcyB0aGUgcmVzcGVjdGl2ZSBkcml2ZXJzLAorYW5kIGRvZXMgYWN0dWFsIHRocm90dGxpbmcgZm9yIG90aGVyIHRyaXAgcG9pbnRzIGkuZSBBQ1RJVkUgYW5kIFBBU1NJVkUuCitUaGUgdGhyb3R0bGluZyBwb2xpY3kgaXMgYmFzZWQgb24gdGhlIGNvbmZpZ3VyZWQgcGxhdGZvcm0gZGF0YTsgaWYgbm8KK3BsYXRmb3JtIGRhdGEgaXMgcHJvdmlkZWQsIHRoaXMgdXNlcyB0aGUgc3RlcF93aXNlIHRocm90dGxpbmcgcG9saWN5LgorCis1LjQ6dGhlcm1hbF9jZGV2X3VwZGF0ZToKK1RoaXMgZnVuY3Rpb24gc2VydmVzIGFzIGFuIGFyYml0cmF0b3IgdG8gc2V0IHRoZSBzdGF0ZSBvZiBhIGNvb2xpbmcKK2RldmljZS4gSXQgc2V0cyB0aGUgY29vbGluZyBkZXZpY2UgdG8gdGhlIGRlZXBlc3QgY29vbGluZyBzdGF0ZSBpZgorcG9zc2libGUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RoZXJtYWwveDg2X3BrZ190ZW1wZXJhdHVyZV90aGVybWFsIGIvRG9jdW1lbnRhdGlvbi90aGVybWFsL3g4Nl9wa2dfdGVtcGVyYXR1cmVfdGhlcm1hbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2EzYTRjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi90aGVybWFsL3g4Nl9wa2dfdGVtcGVyYXR1cmVfdGhlcm1hbApAQCAtMCwwICsxLDQ3IEBACitLZXJuZWwgZHJpdmVyOiB4ODZfcGtnX3RlbXBfdGhlcm1hbAorPT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisqIHg4Njogd2l0aCBwYWNrYWdlIGxldmVsIHRoZXJtYWwgbWFuYWdlbWVudAorKFZlcmlmeSB1c2luZzogQ1BVSUQuMDZIOkVBWFtiaXQgNl0gPTEpCisKK0F1dGhvcnM6IFNyaW5pdmFzIFBhbmRydXZhZGEgPHNyaW5pdmFzLnBhbmRydXZhZGFAbGludXguaW50ZWwuY29tPgorCitSZWZlcmVuY2UKKy0tLQorSW50ZWzCriA2NCBhbmQgSUEtMzIgQXJjaGl0ZWN0dXJlcyBTb2Z0d2FyZSBEZXZlbG9wZXLigJlzIE1hbnVhbCAoSmFuLCAyMDEzKToKK0NoYXB0ZXIgMTQuNjogUEFDS0FHRSBMRVZFTCBUSEVSTUFMIE1BTkFHRU1FTlQKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLQorCitUaGlzIGRyaXZlciByZWdpc3RlciBDUFUgZGlnaXRhbCB0ZW1wZXJhdHVyZSBwYWNrYWdlIGxldmVsIHNlbnNvciBhcyBhIHRoZXJtYWwKK3pvbmUgd2l0aCBtYXhpbXVtIHR3byB1c2VyIG1vZGUgY29uZmlndXJhYmxlIHRyaXAgcG9pbnRzLiBOdW1iZXIgb2YgdHJpcCBwb2ludHMKK2RlcGVuZHMgb24gdGhlIGNhcGFiaWxpdHkgb2YgdGhlIHBhY2thZ2UuIE9uY2UgdGhlIHRyaXAgcG9pbnQgaXMgdmlvbGF0ZWQsCit1c2VyIG1vZGUgY2FuIHJlY2VpdmUgbm90aWZpY2F0aW9uIHZpYSB0aGVybWFsIG5vdGlmaWNhdGlvbiBtZWNoYW5pc20gYW5kIGNhbgordGFrZSBhbnkgYWN0aW9uIHRvIGNvbnRyb2wgdGVtcGVyYXR1cmUuCisKKworVGhyZXNob2xkIG1hbmFnZW1lbnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCitFYWNoIHBhY2thZ2Ugd2lsbCByZWdpc3RlciBhcyBhIHRoZXJtYWwgem9uZSB1bmRlciAvc3lzL2NsYXNzL3RoZXJtYWwuCitFeGFtcGxlOgorL3N5cy9jbGFzcy90aGVybWFsL3RoZXJtYWxfem9uZTEKKworVGhpcyBjb250YWlucyB0d28gdHJpcCBwb2ludHM6CistIHRyaXBfcG9pbnRfMF90ZW1wCistIHRyaXBfcG9pbnRfMV90ZW1wCisKK1VzZXIgY2FuIHNldCBhbnkgdGVtcGVyYXR1cmUgYmV0d2VlbiAwIHRvIFRKLU1heCB0ZW1wZXJhdHVyZS4gVGVtcGVyYXR1cmUgdW5pdHMKK2FyZSBpbiBtaWxsaS1kZWdyZWUgQ2Vsc2l1cy4gUmVmZXIgdG8gIkRvY3VtZW50YXRpb24vdGhlcm1hbC9zeXNmcy1hcGkudHh0IiBmb3IKK3RoZXJtYWwgc3lzLWZzIGRldGFpbHMuCisKK0FueSB2YWx1ZSBvdGhlciB0aGFuIDAgaW4gdGhlc2UgdHJpcCBwb2ludHMsIGNhbiB0cmlnZ2VyIHRoZXJtYWwgbm90aWZpY2F0aW9ucy4KK1NldHRpbmcgMCwgc3RvcHMgc2VuZGluZyB0aGVybWFsIG5vdGlmaWNhdGlvbnMuCisKK1RoZXJtYWwgbm90aWZpY2F0aW9uczogVG8gZ2V0IGtvYmplY3QtdWV2ZW50IG5vdGlmaWNhdGlvbnMsIHNldCB0aGUgdGhlcm1hbCB6b25lCitwb2xpY3kgdG8gInVzZXJfc3BhY2UiLiBGb3IgZXhhbXBsZTogZWNobyAtbiAidXNlcl9zcGFjZSIgPiBwb2xpY3kKKworCisKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90aGlzX2NwdV9vcHMudHh0IGIvRG9jdW1lbnRhdGlvbi90aGlzX2NwdV9vcHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjYmY3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3RoaXNfY3B1X29wcy50eHQKQEAgLTAsMCArMSwzMzIgQEAKK3RoaXNfY3B1IG9wZXJhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGhpc19jcHUgb3BlcmF0aW9ucyBhcmUgYSB3YXkgb2Ygb3B0aW1pemluZyBhY2Nlc3MgdG8gcGVyIGNwdQordmFyaWFibGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgKmN1cnJlbnRseSogZXhlY3V0aW5nIHByb2Nlc3Nvci4gVGhpcyBpcworZG9uZSB0aHJvdWdoIHRoZSB1c2Ugb2Ygc2VnbWVudCByZWdpc3RlcnMgKG9yIGEgZGVkaWNhdGVkIHJlZ2lzdGVyIHdoZXJlCit0aGUgY3B1IHBlcm1hbmVudGx5IHN0b3JlZCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwZXIgY3B1CWFyZWEgZm9yIGEKK3NwZWNpZmljIHByb2Nlc3NvcikuCisKK3RoaXNfY3B1IG9wZXJhdGlvbnMgYWRkIGEgcGVyIGNwdSB2YXJpYWJsZSBvZmZzZXQgdG8gdGhlIHByb2Nlc3Nvcgorc3BlY2lmaWMgcGVyIGNwdSBiYXNlIGFuZCBlbmNvZGUgdGhhdCBvcGVyYXRpb24gaW4gdGhlIGluc3RydWN0aW9uCitvcGVyYXRpbmcgb24gdGhlIHBlciBjcHUgdmFyaWFibGUuCisKK1RoaXMgbWVhbnMgdGhhdCB0aGVyZSBhcmUgbm8gYXRvbWljaXR5IGlzc3VlcyBiZXR3ZWVuIHRoZSBjYWxjdWxhdGlvbiBvZgordGhlIG9mZnNldCBhbmQgdGhlIG9wZXJhdGlvbiBvbiB0aGUgZGF0YS4gVGhlcmVmb3JlIGl0IGlzIG5vdAorbmVjZXNzYXJ5IHRvIGRpc2FibGUgcHJlZW1wdGlvbiBvciBpbnRlcnJ1cHRzIHRvIGVuc3VyZSB0aGF0IHRoZQorcHJvY2Vzc29yIGlzIG5vdCBjaGFuZ2VkIGJldHdlZW4gdGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBhZGRyZXNzIGFuZAordGhlIG9wZXJhdGlvbiBvbiB0aGUgZGF0YS4KKworUmVhZC1tb2RpZnktd3JpdGUgb3BlcmF0aW9ucyBhcmUgb2YgcGFydGljdWxhciBpbnRlcmVzdC4gRnJlcXVlbnRseQorcHJvY2Vzc29ycyBoYXZlIHNwZWNpYWwgbG93ZXIgbGF0ZW5jeSBpbnN0cnVjdGlvbnMgdGhhdCBjYW4gb3BlcmF0ZQord2l0aG91dCB0aGUgdHlwaWNhbCBzeW5jaHJvbml6YXRpb24gb3ZlcmhlYWQsIGJ1dCBzdGlsbCBwcm92aWRlIHNvbWUKK3NvcnQgb2YgcmVsYXhlZCBhdG9taWNpdHkgZ3VhcmFudGVlcy4gVGhlIHg4NiwgZm9yIGV4YW1wbGUsIGNhbiBleGVjdXRlCitSTVcgKFJlYWQgTW9kaWZ5IFdyaXRlKSBpbnN0cnVjdGlvbnMgbGlrZSBpbmMvZGVjL2NtcHhjaGcgd2l0aG91dCB0aGUKK2xvY2sgcHJlZml4IGFuZCB0aGUgYXNzb2NpYXRlZCBsYXRlbmN5IHBlbmFsdHkuCisKK0FjY2VzcyB0byB0aGUgdmFyaWFibGUgd2l0aG91dCB0aGUgbG9jayBwcmVmaXggaXMgbm90IHN5bmNocm9uaXplZCBidXQKK3N5bmNocm9uaXphdGlvbiBpcyBub3QgbmVjZXNzYXJ5IHNpbmNlIHdlIGFyZSBkZWFsaW5nIHdpdGggcGVyIGNwdQorZGF0YSBzcGVjaWZpYyB0byB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBwcm9jZXNzb3IuIE9ubHkgdGhlIGN1cnJlbnQKK3Byb2Nlc3NvciBzaG91bGQgYmUgYWNjZXNzaW5nIHRoYXQgdmFyaWFibGUgYW5kIHRoZXJlZm9yZSB0aGVyZSBhcmUgbm8KK2NvbmN1cnJlbmN5IGlzc3VlcyB3aXRoIG90aGVyIHByb2Nlc3NvcnMgaW4gdGhlIHN5c3RlbS4KKworUGxlYXNlIG5vdGUgdGhhdCBhY2Nlc3NlcyBieSByZW1vdGUgcHJvY2Vzc29ycyB0byBhIHBlciBjcHUgYXJlYSBhcmUKK2V4Y2VwdGlvbmFsIHNpdHVhdGlvbnMgYW5kIG1heSBpbXBhY3QgcGVyZm9ybWFuY2UgYW5kL29yIGNvcnJlY3RuZXNzCisocmVtb3RlIHdyaXRlIG9wZXJhdGlvbnMpIG9mIGxvY2FsIFJNVyBvcGVyYXRpb25zIHZpYSB0aGlzX2NwdV8qLgorCitUaGUgbWFpbiB1c2Ugb2YgdGhlIHRoaXNfY3B1IG9wZXJhdGlvbnMgaGFzIGJlZW4gdG8gb3B0aW1pemUgY291bnRlcgorb3BlcmF0aW9ucy4KKworVGhlIGZvbGxvd2luZyB0aGlzX2NwdSgpIG9wZXJhdGlvbnMgd2l0aCBpbXBsaWVkIHByZWVtcHRpb24gcHJvdGVjdGlvbgorYXJlIGRlZmluZWQuIFRoZXNlIG9wZXJhdGlvbnMgY2FuIGJlIHVzZWQgd2l0aG91dCB3b3JyeWluZyBhYm91dAorcHJlZW1wdGlvbiBhbmQgaW50ZXJydXB0cy4KKworCXRoaXNfY3B1X3JlYWQocGNwKQorCXRoaXNfY3B1X3dyaXRlKHBjcCwgdmFsKQorCXRoaXNfY3B1X2FkZChwY3AsIHZhbCkKKwl0aGlzX2NwdV9hbmQocGNwLCB2YWwpCisJdGhpc19jcHVfb3IocGNwLCB2YWwpCisJdGhpc19jcHVfYWRkX3JldHVybihwY3AsIHZhbCkKKwl0aGlzX2NwdV94Y2hnKHBjcCwgbnZhbCkKKwl0aGlzX2NwdV9jbXB4Y2hnKHBjcCwgb3ZhbCwgbnZhbCkKKwl0aGlzX2NwdV9jbXB4Y2hnX2RvdWJsZShwY3AxLCBwY3AyLCBvdmFsMSwgb3ZhbDIsIG52YWwxLCBudmFsMikKKwl0aGlzX2NwdV9zdWIocGNwLCB2YWwpCisJdGhpc19jcHVfaW5jKHBjcCkKKwl0aGlzX2NwdV9kZWMocGNwKQorCXRoaXNfY3B1X3N1Yl9yZXR1cm4ocGNwLCB2YWwpCisJdGhpc19jcHVfaW5jX3JldHVybihwY3ApCisJdGhpc19jcHVfZGVjX3JldHVybihwY3ApCisKKworSW5uZXIgd29ya2luZyBvZiB0aGlzX2NwdSBvcGVyYXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT24geDg2IHRoZSBmczogb3IgdGhlIGdzOiBzZWdtZW50IHJlZ2lzdGVycyBjb250YWluIHRoZSBiYXNlIG9mIHRoZQorcGVyIGNwdSBhcmVhLiBJdCBpcyB0aGVuIHBvc3NpYmxlIHRvIHNpbXBseSB1c2UgdGhlIHNlZ21lbnQgb3ZlcnJpZGUKK3RvIHJlbG9jYXRlIGEgcGVyIGNwdSByZWxhdGl2ZSBhZGRyZXNzIHRvIHRoZSBwcm9wZXIgcGVyIGNwdSBhcmVhIGZvcgordGhlIHByb2Nlc3Nvci4gU28gdGhlIHJlbG9jYXRpb24gdG8gdGhlIHBlciBjcHUgYmFzZSBpcyBlbmNvZGVkIGluIHRoZQoraW5zdHJ1Y3Rpb24gdmlhIGEgc2VnbWVudCByZWdpc3RlciBwcmVmaXguCisKK0ZvciBleGFtcGxlOgorCisJREVGSU5FX1BFUl9DUFUoaW50LCB4KTsKKwlpbnQgejsKKworCXogPSB0aGlzX2NwdV9yZWFkKHgpOworCityZXN1bHRzIGluIGEgc2luZ2xlIGluc3RydWN0aW9uCisKKwltb3YgYXgsIGdzOlt4XQorCitpbnN0ZWFkIG9mIGEgc2VxdWVuY2Ugb2YgY2FsY3VsYXRpb24gb2YgdGhlIGFkZHJlc3MgYW5kIHRoZW4gYSBmZXRjaAorZnJvbSB0aGF0IGFkZHJlc3Mgd2hpY2ggb2NjdXJzIHdpdGggdGhlIHBlciBjcHUgb3BlcmF0aW9ucy4gQmVmb3JlCit0aGlzX2NwdV9vcHMgc3VjaCBzZXF1ZW5jZSBhbHNvIHJlcXVpcmVkIHByZWVtcHQgZGlzYWJsZS9lbmFibGUgdG8KK3ByZXZlbnQgdGhlIGtlcm5lbCBmcm9tIG1vdmluZyB0aGUgdGhyZWFkIHRvIGEgZGlmZmVyZW50IHByb2Nlc3Nvcgord2hpbGUgdGhlIGNhbGN1bGF0aW9uIGlzIHBlcmZvcm1lZC4KKworQ29uc2lkZXIgdGhlIGZvbGxvd2luZyB0aGlzX2NwdSBvcGVyYXRpb246CisKKwl0aGlzX2NwdV9pbmMoeCkKKworVGhlIGFib3ZlIHJlc3VsdHMgaW4gdGhlIGZvbGxvd2luZyBzaW5nbGUgaW5zdHJ1Y3Rpb24gKG5vIGxvY2sgcHJlZml4ISkKKworCWluYyBnczpbeF0KKworaW5zdGVhZCBvZiB0aGUgZm9sbG93aW5nIG9wZXJhdGlvbnMgcmVxdWlyZWQgaWYgdGhlcmUgaXMgbm8gc2VnbWVudAorcmVnaXN0ZXI6CisKKwlpbnQgKnk7CisJaW50IGNwdTsKKworCWNwdSA9IGdldF9jcHUoKTsKKwl5ID0gcGVyX2NwdV9wdHIoJngsIGNwdSk7CisJKCp5KSsrOworCXB1dF9jcHUoKTsKKworTm90ZSB0aGF0IHRoZXNlIG9wZXJhdGlvbnMgY2FuIG9ubHkgYmUgdXNlZCBvbiBwZXIgY3B1IGRhdGEgdGhhdCBpcworcmVzZXJ2ZWQgZm9yIGEgc3BlY2lmaWMgcHJvY2Vzc29yLiBXaXRob3V0IGRpc2FibGluZyBwcmVlbXB0aW9uIGluIHRoZQorc3Vycm91bmRpbmcgY29kZSB0aGlzX2NwdV9pbmMoKSB3aWxsIG9ubHkgZ3VhcmFudGVlIHRoYXQgb25lIG9mIHRoZQorcGVyIGNwdSBjb3VudGVycyBpcyBjb3JyZWN0bHkgaW5jcmVtZW50ZWQuIEhvd2V2ZXIsIHRoZXJlIGlzIG5vCitndWFyYW50ZWUgdGhhdCB0aGUgT1Mgd2lsbCBub3QgbW92ZSB0aGUgcHJvY2VzcyBkaXJlY3RseSBiZWZvcmUgb3IKK2FmdGVyIHRoZSB0aGlzX2NwdSBpbnN0cnVjdGlvbiBpcyBleGVjdXRlZC4gSW4gZ2VuZXJhbCB0aGlzIG1lYW5zIHRoYXQKK3RoZSB2YWx1ZSBvZiB0aGUgaW5kaXZpZHVhbCBjb3VudGVycyBmb3IgZWFjaCBwcm9jZXNzb3IgYXJlCittZWFuaW5nbGVzcy4gVGhlIHN1bSBvZiBhbGwgdGhlIHBlciBjcHUgY291bnRlcnMgaXMgdGhlIG9ubHkgdmFsdWUKK3RoYXQgaXMgb2YgaW50ZXJlc3QuCisKK1BlciBjcHUgdmFyaWFibGVzIGFyZSB1c2VkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiBCb3VuY2luZyBjYWNoZQorbGluZXMgY2FuIGJlIGF2b2lkZWQgaWYgbXVsdGlwbGUgcHJvY2Vzc29ycyBjb25jdXJyZW50bHkgZ28gdGhyb3VnaAordGhlIHNhbWUgY29kZSBwYXRocy4gIFNpbmNlIGVhY2ggcHJvY2Vzc29yIGhhcyBpdHMgb3duIHBlciBjcHUKK3ZhcmlhYmxlcyBubyBjb25jdXJyZW50IGNhY2hlIGxpbmUgdXBkYXRlcyB0YWtlIHBsYWNlLiBUaGUgcHJpY2UgdGhhdAoraGFzIHRvIGJlIHBhaWQgZm9yIHRoaXMgb3B0aW1pemF0aW9uIGlzIHRoZSBuZWVkIHRvIGFkZCB1cCB0aGUgcGVyIGNwdQorY291bnRlcnMgd2hlbiB0aGUgdmFsdWUgb2YgYSBjb3VudGVyIGlzIG5lZWRlZC4KKworCitTcGVjaWFsIG9wZXJhdGlvbnM6CistLS0tLS0tLS0tLS0tLS0tLS0tCisKKwl5ID0gdGhpc19jcHVfcHRyKCZ4KQorCitUYWtlcyB0aGUgb2Zmc2V0IG9mIGEgcGVyIGNwdSB2YXJpYWJsZSAoJnggISkgYW5kIHJldHVybnMgdGhlIGFkZHJlc3MKK29mIHRoZSBwZXIgY3B1IHZhcmlhYmxlIHRoYXQgYmVsb25ncyB0byB0aGUgY3VycmVudGx5IGV4ZWN1dGluZworcHJvY2Vzc29yLiAgdGhpc19jcHVfcHRyIGF2b2lkcyBtdWx0aXBsZSBzdGVwcyB0aGF0IHRoZSBjb21tb24KK2dldF9jcHUvcHV0X2NwdSBzZXF1ZW5jZSByZXF1aXJlcy4gTm8gcHJvY2Vzc29yIG51bWJlciBpcworYXZhaWxhYmxlLiBJbnN0ZWFkLCB0aGUgb2Zmc2V0IG9mIHRoZSBsb2NhbCBwZXIgY3B1IGFyZWEgaXMgc2ltcGx5CithZGRlZCB0byB0aGUgcGVyIGNwdSBvZmZzZXQuCisKK05vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBpcyB1c3VhbGx5IHVzZWQgaW4gYSBjb2RlIHNlZ21lbnQgd2hlbgorcHJlZW1wdGlvbiBoYXMgYmVlbiBkaXNhYmxlZC4gVGhlIHBvaW50ZXIgaXMgdGhlbiB1c2VkIHRvCithY2Nlc3MgbG9jYWwgcGVyIGNwdSBkYXRhIGluIGEgY3JpdGljYWwgc2VjdGlvbi4gV2hlbiBwcmVlbXB0aW9uCitpcyByZS1lbmFibGVkIHRoaXMgcG9pbnRlciBpcyB1c3VhbGx5IG5vIGxvbmdlciB1c2VmdWwgc2luY2UgaXQgbWF5CitubyBsb25nZXIgcG9pbnQgdG8gcGVyIGNwdSBkYXRhIG9mIHRoZSBjdXJyZW50IHByb2Nlc3Nvci4KKworCitQZXIgY3B1IHZhcmlhYmxlcyBhbmQgb2Zmc2V0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUGVyIGNwdSB2YXJpYWJsZXMgaGF2ZSAqb2Zmc2V0cyogdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgcGVyIGNwdQorYXJlYS4gVGhleSBkbyBub3QgaGF2ZSBhZGRyZXNzZXMgYWx0aG91Z2ggdGhleSBsb29rIGxpa2UgdGhhdCBpbiB0aGUKK2NvZGUuIE9mZnNldHMgY2Fubm90IGJlIGRpcmVjdGx5IGRlcmVmZXJlbmNlZC4gVGhlIG9mZnNldCBtdXN0IGJlCithZGRlZCB0byBhIGJhc2UgcG9pbnRlciBvZiBhIHBlciBjcHUgYXJlYSBvZiBhIHByb2Nlc3NvciBpbiBvcmRlciB0bworZm9ybSBhIHZhbGlkIGFkZHJlc3MuCisKK1RoZXJlZm9yZSB0aGUgdXNlIG9mIHggb3IgJnggb3V0c2lkZSBvZiB0aGUgY29udGV4dCBvZiBwZXIgY3B1CitvcGVyYXRpb25zIGlzIGludmFsaWQgYW5kIHdpbGwgZ2VuZXJhbGx5IGJlIHRyZWF0ZWQgbGlrZSBhIE5VTEwKK3BvaW50ZXIgZGVyZWZlcmVuY2UuCisKKwlERUZJTkVfUEVSX0NQVShpbnQsIHgpOworCitJbiB0aGUgY29udGV4dCBvZiBwZXIgY3B1IG9wZXJhdGlvbnMgdGhlIGFib3ZlIGltcGxpZXMgdGhhdCB4IGlzIGEgcGVyCitjcHUgdmFyaWFibGUuIE1vc3QgdGhpc19jcHUgb3BlcmF0aW9ucyB0YWtlIGEgY3B1IHZhcmlhYmxlLgorCisJaW50IF9fcGVyY3B1ICpwID0gJng7CisKKyZ4IGFuZCBoZW5jZSBwIGlzIHRoZSAqb2Zmc2V0KiBvZiBhIHBlciBjcHUgdmFyaWFibGUuIHRoaXNfY3B1X3B0cigpCit0YWtlcyB0aGUgb2Zmc2V0IG9mIGEgcGVyIGNwdSB2YXJpYWJsZSB3aGljaCBtYWtlcyB0aGlzIGxvb2sgYSBiaXQKK3N0cmFuZ2UuCisKKworT3BlcmF0aW9ucyBvbiBhIGZpZWxkIG9mIGEgcGVyIGNwdSBzdHJ1Y3R1cmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0xldCdzIHNheSB3ZSBoYXZlIGEgcGVyY3B1IHN0cnVjdHVyZQorCisJc3RydWN0IHMgeworCQlpbnQgbixtOworCX07CisKKwlERUZJTkVfUEVSX0NQVShzdHJ1Y3QgcywgcCk7CisKKworT3BlcmF0aW9ucyBvbiB0aGVzZSBmaWVsZHMgYXJlIHN0cmFpZ2h0Zm9yd2FyZAorCisJdGhpc19jcHVfaW5jKHAubSkKKworCXogPSB0aGlzX2NwdV9jbXB4Y2hnKHAubSwgMCwgMSk7CisKKworSWYgd2UgaGF2ZSBhbiBvZmZzZXQgdG8gc3RydWN0IHM6CisKKwlzdHJ1Y3QgcyBfX3BlcmNwdSAqcHMgPSAmcDsKKworCXRoaXNfY3B1X2RlYyhwcy0+bSk7CisKKwl6ID0gdGhpc19jcHVfaW5jX3JldHVybihwcy0+bik7CisKKworVGhlIGNhbGN1bGF0aW9uIG9mIHRoZSBwb2ludGVyIG1heSByZXF1aXJlIHRoZSB1c2Ugb2YgdGhpc19jcHVfcHRyKCkKK2lmIHdlIGRvIG5vdCBtYWtlIHVzZSBvZiB0aGlzX2NwdSBvcHMgbGF0ZXIgdG8gbWFuaXB1bGF0ZSBmaWVsZHM6CisKKwlzdHJ1Y3QgcyAqcHA7CisKKwlwcCA9IHRoaXNfY3B1X3B0cigmcCk7CisKKwlwcC0+bS0tOworCisJeiA9IHBwLT5uKys7CisKKworVmFyaWFudHMgb2YgdGhpc19jcHUgb3BzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RoaXNfY3B1IG9wcyBhcmUgaW50ZXJydXB0IHNhZmUuIFNvbWUgYXJjaGl0ZWN0dXJlcyBkbyBub3Qgc3VwcG9ydAordGhlc2UgcGVyIGNwdSBsb2NhbCBvcGVyYXRpb25zLiBJbiB0aGF0IGNhc2UgdGhlIG9wZXJhdGlvbiBtdXN0IGJlCityZXBsYWNlZCBieSBjb2RlIHRoYXQgZGlzYWJsZXMgaW50ZXJydXB0cywgdGhlbiBkb2VzIHRoZSBvcGVyYXRpb25zCit0aGF0IGFyZSBndWFyYW50ZWVkIHRvIGJlIGF0b21pYyBhbmQgdGhlbiByZS1lbmFibGUgaW50ZXJydXB0cy4gRG9pbmcKK3NvIGlzIGV4cGVuc2l2ZS4gSWYgdGhlcmUgYXJlIG90aGVyIHJlYXNvbnMgd2h5IHRoZSBzY2hlZHVsZXIgY2Fubm90CitjaGFuZ2UgdGhlIHByb2Nlc3NvciB3ZSBhcmUgZXhlY3V0aW5nIG9uIHRoZW4gdGhlcmUgaXMgbm8gcmVhc29uIHRvCitkaXNhYmxlIGludGVycnVwdHMuIEZvciB0aGF0IHB1cnBvc2UgdGhlIGZvbGxvd2luZyBfX3RoaXNfY3B1IG9wZXJhdGlvbnMKK2FyZSBwcm92aWRlZC4KKworVGhlc2Ugb3BlcmF0aW9ucyBoYXZlIG5vIGd1YXJhbnRlZSBhZ2FpbnN0IGNvbmN1cnJlbnQgaW50ZXJydXB0cyBvcgorcHJlZW1wdGlvbi4gSWYgYSBwZXIgY3B1IHZhcmlhYmxlIGlzIG5vdCB1c2VkIGluIGFuIGludGVycnVwdCBjb250ZXh0CithbmQgdGhlIHNjaGVkdWxlciBjYW5ub3QgcHJlZW1wdCwgdGhlbiB0aGV5IGFyZSBzYWZlLiBJZiBhbnkgaW50ZXJydXB0cworc3RpbGwgb2NjdXIgd2hpbGUgYW4gb3BlcmF0aW9uIGlzIGluIHByb2dyZXNzIGFuZCBpZiB0aGUgaW50ZXJydXB0IHRvbworbW9kaWZpZXMgdGhlIHZhcmlhYmxlLCB0aGVuIFJNVyBhY3Rpb25zIGNhbiBub3QgYmUgZ3VhcmFudGVlZCB0byBiZQorc2FmZS4KKworCV9fdGhpc19jcHVfcmVhZChwY3ApCisJX190aGlzX2NwdV93cml0ZShwY3AsIHZhbCkKKwlfX3RoaXNfY3B1X2FkZChwY3AsIHZhbCkKKwlfX3RoaXNfY3B1X2FuZChwY3AsIHZhbCkKKwlfX3RoaXNfY3B1X29yKHBjcCwgdmFsKQorCV9fdGhpc19jcHVfYWRkX3JldHVybihwY3AsIHZhbCkKKwlfX3RoaXNfY3B1X3hjaGcocGNwLCBudmFsKQorCV9fdGhpc19jcHVfY21weGNoZyhwY3AsIG92YWwsIG52YWwpCisJX190aGlzX2NwdV9jbXB4Y2hnX2RvdWJsZShwY3AxLCBwY3AyLCBvdmFsMSwgb3ZhbDIsIG52YWwxLCBudmFsMikKKwlfX3RoaXNfY3B1X3N1YihwY3AsIHZhbCkKKwlfX3RoaXNfY3B1X2luYyhwY3ApCisJX190aGlzX2NwdV9kZWMocGNwKQorCV9fdGhpc19jcHVfc3ViX3JldHVybihwY3AsIHZhbCkKKwlfX3RoaXNfY3B1X2luY19yZXR1cm4ocGNwKQorCV9fdGhpc19jcHVfZGVjX3JldHVybihwY3ApCisKKworV2lsbCBpbmNyZW1lbnQgeCBhbmQgd2lsbCBub3QgZmFsbC1iYWNrIHRvIGNvZGUgdGhhdCBkaXNhYmxlcworaW50ZXJydXB0cyBvbiBwbGF0Zm9ybXMgdGhhdCBjYW5ub3QgYWNjb21wbGlzaCBhdG9taWNpdHkgdGhyb3VnaAorYWRkcmVzcyByZWxvY2F0aW9uIGFuZCBhIFJlYWQtTW9kaWZ5LVdyaXRlIG9wZXJhdGlvbiBpbiB0aGUgc2FtZQoraW5zdHJ1Y3Rpb24uCisKKworJnRoaXNfY3B1X3B0cihwcCktPm4gdnMgdGhpc19jcHVfcHRyKCZwcC0+bikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBmaXJzdCBvcGVyYXRpb24gdGFrZXMgdGhlIG9mZnNldCBhbmQgZm9ybXMgYW4gYWRkcmVzcyBhbmQgdGhlbgorYWRkcyB0aGUgb2Zmc2V0IG9mIHRoZSBuIGZpZWxkLiBUaGlzIG1heSByZXN1bHQgaW4gdHdvIGFkZAoraW5zdHJ1Y3Rpb25zIGVtaXR0ZWQgYnkgdGhlIGNvbXBpbGVyLgorCitUaGUgc2Vjb25kIG9uZSBmaXJzdCBhZGRzIHRoZSB0d28gb2Zmc2V0cyBhbmQgdGhlbiBkb2VzIHRoZQorcmVsb2NhdGlvbi4gIElNSE8gdGhlIHNlY29uZCBmb3JtIGxvb2tzIGNsZWFuZXIgYW5kIGhhcyBhbiBlYXNpZXIgdGltZQord2l0aCAoKS4gVGhlIHNlY29uZCBmb3JtIGFsc28gaXMgY29uc2lzdGVudCB3aXRoIHRoZSB3YXkKK3RoaXNfY3B1X3JlYWQoKSBhbmQgZnJpZW5kcyBhcmUgdXNlZC4KKworCitSZW1vdGUgYWNjZXNzIHRvIHBlciBjcHUgZGF0YQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1BlciBjcHUgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBkZXNpZ25lZCB0byBiZSB1c2VkIGJ5IG9uZSBjcHUgZXhjbHVzaXZlbHkuCitJZiB5b3UgdXNlIHRoZSB2YXJpYWJsZXMgYXMgaW50ZW5kZWQsIHRoaXNfY3B1X29wcygpIGFyZSBndWFyYW50ZWVkIHRvCitiZSAiYXRvbWljIiBhcyBubyBvdGhlciBDUFUgaGFzIGFjY2VzcyB0byB0aGVzZSBkYXRhIHN0cnVjdHVyZXMuCisKK1RoZXJlIGFyZSBzcGVjaWFsIGNhc2VzIHdoZXJlIHlvdSBtaWdodCBuZWVkIHRvIGFjY2VzcyBwZXIgY3B1IGRhdGEKK3N0cnVjdHVyZXMgcmVtb3RlbHkuIEl0IGlzIHVzdWFsbHkgc2FmZSB0byBkbyBhIHJlbW90ZSByZWFkIGFjY2VzcworYW5kIHRoYXQgaXMgZnJlcXVlbnRseSBkb25lIHRvIHN1bW1hcml6ZSBjb3VudGVycy4gUmVtb3RlIHdyaXRlIGFjY2Vzcworc29tZXRoaW5nIHdoaWNoIGNvdWxkIGJlIHByb2JsZW1hdGljIGJlY2F1c2UgdGhpc19jcHUgb3BzIGRvIG5vdAoraGF2ZSBsb2NrIHNlbWFudGljcy4gQSByZW1vdGUgd3JpdGUgbWF5IGludGVyZmVyZSB3aXRoIGEgdGhpc19jcHUKK1JNVyBvcGVyYXRpb24uCisKK1JlbW90ZSB3cml0ZSBhY2Nlc3NlcyB0byBwZXJjcHUgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBoaWdobHkgZGlzY291cmFnZWQKK3VubGVzcyBhYnNvbHV0ZWx5IG5lY2Vzc2FyeS4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIGFuIElQSSB0byB3YWtlIHVwCit0aGUgcmVtb3RlIENQVSBhbmQgcGVyZm9ybSB0aGUgdXBkYXRlIHRvIGl0cyBwZXIgY3B1IGFyZWEuCisKK1RvIGFjY2VzcyBwZXItY3B1IGRhdGEgc3RydWN0dXJlIHJlbW90ZWx5LCB0eXBpY2FsbHkgdGhlIHBlcl9jcHVfcHRyKCkKK2Z1bmN0aW9uIGlzIHVzZWQ6CisKKworCURFRklORV9QRVJfQ1BVKHN0cnVjdCBkYXRhLCBkYXRhcCk7CisKKwlzdHJ1Y3QgZGF0YSAqcCA9IHBlcl9jcHVfcHRyKCZkYXRhcCwgY3B1KTsKKworVGhpcyBtYWtlcyBpdCBleHBsaWNpdCB0aGF0IHdlIGFyZSBnZXR0aW5nIHJlYWR5IHRvIGFjY2VzcyBhIHBlcmNwdQorYXJlYSByZW1vdGVseS4KKworWW91IGNhbiBhbHNvIGRvIHRoZSBmb2xsb3dpbmcgdG8gY29udmVydCB0aGUgZGF0YXAgb2Zmc2V0IHRvIGFuIGFkZHJlc3MKKworCXN0cnVjdCBkYXRhICpwID0gdGhpc19jcHVfcHRyKCZkYXRhcCk7CisKK2J1dCwgcGFzc2luZyBvZiBwb2ludGVycyBjYWxjdWxhdGVkIHZpYSB0aGlzX2NwdV9wdHIgdG8gb3RoZXIgY3B1cyBpcwordW51c3VhbCBhbmQgc2hvdWxkIGJlIGF2b2lkZWQuCisKK1JlbW90ZSBhY2Nlc3MgYXJlIHR5cGljYWxseSBvbmx5IGZvciByZWFkaW5nIHRoZSBzdGF0dXMgb2YgYW5vdGhlciBjcHVzCitwZXIgY3B1IGRhdGEuIFdyaXRlIGFjY2Vzc2VzIGNhbiBjYXVzZSB1bmlxdWUgcHJvYmxlbXMgZHVlIHRvIHRoZQorcmVsYXhlZCBzeW5jaHJvbml6YXRpb24gcmVxdWlyZW1lbnRzIGZvciB0aGlzX2NwdSBvcGVyYXRpb25zLgorCitPbmUgZXhhbXBsZSB0aGF0IGlsbHVzdHJhdGVzIHNvbWUgY29uY2VybnMgd2l0aCB3cml0ZSBvcGVyYXRpb25zIGlzCit0aGUgZm9sbG93aW5nIHNjZW5hcmlvIHRoYXQgb2NjdXJzIGJlY2F1c2UgdHdvIHBlciBjcHUgdmFyaWFibGVzCitzaGFyZSBhIGNhY2hlLWxpbmUgYnV0IHRoZSByZWxheGVkIHN5bmNocm9uaXphdGlvbiBpcyBhcHBsaWVkIHRvCitvbmx5IG9uZSBwcm9jZXNzIHVwZGF0aW5nIHRoZSBjYWNoZS1saW5lLgorCitDb25zaWRlciB0aGUgZm9sbG93aW5nIGV4YW1wbGUKKworCisJc3RydWN0IHRlc3QgeworCQlhdG9taWNfdCBhOworCQlpbnQgYjsKKwl9OworCisJREVGSU5FX1BFUl9DUFUoc3RydWN0IHRlc3QsIG9uZWNhY2hlbGluZSk7CisKK1RoZXJlIGlzIHNvbWUgY29uY2VybiBhYm91dCB3aGF0IHdvdWxkIGhhcHBlbiBpZiB0aGUgZmllbGQgJ2EnIGlzIHVwZGF0ZWQKK3JlbW90ZWx5IGZyb20gb25lIHByb2Nlc3NvciBhbmQgdGhlIGxvY2FsIHByb2Nlc3NvciB3b3VsZCB1c2UgdGhpc19jcHUgb3BzCit0byB1cGRhdGUgZmllbGQgYi4gQ2FyZSBzaG91bGQgYmUgdGFrZW4gdGhhdCBzdWNoIHNpbXVsdGFuZW91cyBhY2Nlc3NlcyB0bworZGF0YSB3aXRoaW4gdGhlIHNhbWUgY2FjaGUgbGluZSBhcmUgYXZvaWRlZC4gQWxzbyBjb3N0bHkgc3luY2hyb25pemF0aW9uCittYXkgYmUgbmVjZXNzYXJ5LiBJUElzIGFyZSBnZW5lcmFsbHkgcmVjb21tZW5kZWQgaW4gc3VjaCBzY2VuYXJpb3MgaW5zdGVhZAorb2YgYSByZW1vdGUgd3JpdGUgdG8gdGhlIHBlciBjcHUgYXJlYSBvZiBhbm90aGVyIHByb2Nlc3Nvci4KKworRXZlbiBpbiBjYXNlcyB3aGVyZSB0aGUgcmVtb3RlIHdyaXRlcyBhcmUgcmFyZSwgcGxlYXNlIGJlYXIgaW4KK21pbmQgdGhhdCBhIHJlbW90ZSB3cml0ZSB3aWxsIGV2aWN0IHRoZSBjYWNoZSBsaW5lIGZyb20gdGhlIHByb2Nlc3NvcgordGhhdCBtb3N0IGxpa2VseSB3aWxsIGFjY2VzcyBpdC4gSWYgdGhlIHByb2Nlc3NvciB3YWtlcyB1cCBhbmQgZmluZHMgYQorbWlzc2luZyBsb2NhbCBjYWNoZSBsaW5lIG9mIGEgcGVyIGNwdSBhcmVhLCBpdHMgcGVyZm9ybWFuY2UgYW5kIGhlbmNlCit0aGUgd2FrZSB1cCB0aW1lcyB3aWxsIGJlIGFmZmVjdGVkLgorCitDaHJpc3RvcGggTGFtZXRlciwgQXVndXN0IDR0aCwgMjAxNAorUHJhbml0aCBLdW1hciwgQXVnIDJuZCwgMjAxNApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90aW1lcnMvLmdpdGlnbm9yZSBiL0RvY3VtZW50YXRpb24vdGltZXJzLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVjNDVkNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdGltZXJzLy5naXRpZ25vcmUKQEAgLTAsMCArMSBAQAoraHBldF9leGFtcGxlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RpbWVycy8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vdGltZXJzLzAwLUlOREVYCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlMjEyYTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3RpbWVycy8wMC1JTkRFWApAQCAtMCwwICsxLDIwIEBACiswMC1JTkRFWAorCS0gdGhpcyBmaWxlCitoaWdocmVzLnR4dAorCS0gSGlnaCByZXNvbHV0aW9uIHRpbWVycyBhbmQgZHluYW1pYyB0aWNrcyBkZXNpZ24gbm90ZXMKK2hwZXQudHh0CisJLSBIaWdoIFByZWNpc2lvbiBFdmVudCBUaW1lciBEcml2ZXIgZm9yIExpbnV4CitocGV0X2V4YW1wbGUuYworCS0gc2FtcGxlIGhwZXQgdGltZXIgdGVzdCBwcm9ncmFtCitocnRpbWVycy50eHQKKwktIHN1YnN5c3RlbSBmb3IgaGlnaC1yZXNvbHV0aW9uIGtlcm5lbCB0aW1lcnMKK01ha2VmaWxlCisJLSBCdWlsZCBhbmQgbGluayBocGV0X2V4YW1wbGUKK05PX0haLnR4dAorCS0gU3VtbWFyeSBvZiB0aGUgZGlmZmVyZW50IG1ldGhvZHMgZm9yIHRoZSBzY2hlZHVsZXIgY2xvY2staW50ZXJydXB0cyBtYW5hZ2VtZW50LgordGltZWtlZXBpbmcudHh0CisJLSBDbG9jayBzb3VyY2VzLCBjbG9jayBldmVudHMsIHNjaGVkX2Nsb2NrKCkgYW5kIGRlbGF5IHRpbWVyIG5vdGVzCit0aW1lcnMtaG93dG8udHh0CisJLSBob3cgdG8gaW5zZXJ0IGRlbGF5cyBpbiB0aGUga2VybmVsIHRoZSByaWdodCAodG0pIHdheS4KK3RpbWVyX3N0YXRzLnR4dAorCS0gdGltZXIgdXNhZ2Ugc3RhdGlzdGljcwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90aW1lcnMvTWFrZWZpbGUgYi9Eb2N1bWVudGF0aW9uL3RpbWVycy9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzA5ZWU2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi90aW1lcnMvTWFrZWZpbGUKQEAgLTAsMCArMSw1IEBACisjIExpc3Qgb2YgcHJvZ3JhbXMgdG8gYnVpbGQKK2hvc3Rwcm9ncy0kKENPTkZJR19YODYpIDo9IGhwZXRfZXhhbXBsZQorCisjIFRlbGwga2J1aWxkIHRvIGFsd2F5cyBidWlsZCB0aGUgcHJvZ3JhbXMKK2Fsd2F5cyA6PSAkKGhvc3Rwcm9ncy15KQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90aW1lcnMvTk9fSFoudHh0IGIvRG9jdW1lbnRhdGlvbi90aW1lcnMvTk9fSFoudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlYWY1NzYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3RpbWVycy9OT19IWi50eHQKQEAgLTAsMCArMSwzNDggQEAKKwkJTk9fSFo6IFJlZHVjaW5nIFNjaGVkdWxpbmctQ2xvY2sgVGlja3MKKworCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyBLY29uZmlnIG9wdGlvbnMgYW5kIGJvb3QgcGFyYW1ldGVycyB0aGF0IGNhbgorcmVkdWNlIHRoZSBudW1iZXIgb2Ygc2NoZWR1bGluZy1jbG9jayBpbnRlcnJ1cHRzLCB0aGVyZWJ5IGltcHJvdmluZyBlbmVyZ3kKK2VmZmljaWVuY3kgYW5kIHJlZHVjaW5nIE9TIGppdHRlci4gIFJlZHVjaW5nIE9TIGppdHRlciBpcyBpbXBvcnRhbnQgZm9yCitzb21lIHR5cGVzIG9mIGNvbXB1dGF0aW9uYWxseSBpbnRlbnNpdmUgaGlnaC1wZXJmb3JtYW5jZSBjb21wdXRpbmcgKEhQQykKK2FwcGxpY2F0aW9ucyBhbmQgZm9yIHJlYWwtdGltZSBhcHBsaWNhdGlvbnMuCisKK1RoZXJlIGFyZSB0aHJlZSBtYWluIHdheXMgb2YgbWFuYWdpbmcgc2NoZWR1bGluZy1jbG9jayBpbnRlcnJ1cHRzCisoYWxzbyBrbm93biBhcyAic2NoZWR1bGluZy1jbG9jayB0aWNrcyIgb3Igc2ltcGx5ICJ0aWNrcyIpOgorCisxLglOZXZlciBvbWl0IHNjaGVkdWxpbmctY2xvY2sgdGlja3MgKENPTkZJR19IWl9QRVJJT0RJQz15IG9yCisJQ09ORklHX05PX0haPW4gZm9yIG9sZGVyIGtlcm5lbHMpLiAgWW91IG5vcm1hbGx5IHdpbGwgLW5vdC0KKwl3YW50IHRvIGNob29zZSB0aGlzIG9wdGlvbi4KKworMi4JT21pdCBzY2hlZHVsaW5nLWNsb2NrIHRpY2tzIG9uIGlkbGUgQ1BVcyAoQ09ORklHX05PX0haX0lETEU9eSBvcgorCUNPTkZJR19OT19IWj15IGZvciBvbGRlciBrZXJuZWxzKS4gIFRoaXMgaXMgdGhlIG1vc3QgY29tbW9uCisJYXBwcm9hY2gsIGFuZCBzaG91bGQgYmUgdGhlIGRlZmF1bHQuCisKKzMuCU9taXQgc2NoZWR1bGluZy1jbG9jayB0aWNrcyBvbiBDUFVzIHRoYXQgYXJlIGVpdGhlciBpZGxlIG9yIHRoYXQKKwloYXZlIG9ubHkgb25lIHJ1bm5hYmxlIHRhc2sgKENPTkZJR19OT19IWl9GVUxMPXkpLiAgVW5sZXNzIHlvdQorCWFyZSBydW5uaW5nIHJlYWx0aW1lIGFwcGxpY2F0aW9ucyBvciBjZXJ0YWluIHR5cGVzIG9mIEhQQworCXdvcmtsb2FkcywgeW91IHdpbGwgbm9ybWFsbHkgLW5vdC0gd2FudCB0aGlzIG9wdGlvbi4KKworVGhlc2UgdGhyZWUgY2FzZXMgYXJlIGRlc2NyaWJlZCBpbiB0aGUgZm9sbG93aW5nIHRocmVlIHNlY3Rpb25zLCBmb2xsb3dlZAorYnkgYSB0aGlyZCBzZWN0aW9uIG9uIFJDVS1zcGVjaWZpYyBjb25zaWRlcmF0aW9ucywgYSBmb3VydGggc2VjdGlvbgorZGlzY3Vzc2luZyB0ZXN0aW5nLCBhbmQgYSBmaWZ0aCBhbmQgZmluYWwgc2VjdGlvbiBsaXN0aW5nIGtub3duIGlzc3Vlcy4KKworCitORVZFUiBPTUlUIFNDSEVEVUxJTkctQ0xPQ0sgVElDS1MKKworVmVyeSBvbGQgdmVyc2lvbnMgb2YgTGludXggZnJvbSB0aGUgMTk5MHMgYW5kIHRoZSB2ZXJ5IGVhcmx5IDIwMDBzCithcmUgaW5jYXBhYmxlIG9mIG9taXR0aW5nIHNjaGVkdWxpbmctY2xvY2sgdGlja3MuICBJdCB0dXJucyBvdXQgdGhhdAordGhlcmUgYXJlIHNvbWUgc2l0dWF0aW9ucyB3aGVyZSB0aGlzIG9sZC1zY2hvb2wgYXBwcm9hY2ggaXMgc3RpbGwgdGhlCityaWdodCBhcHByb2FjaCwgZm9yIGV4YW1wbGUsIGluIGhlYXZ5IHdvcmtsb2FkcyB3aXRoIGxvdHMgb2YgdGFza3MKK3RoYXQgdXNlIHNob3J0IGJ1cnN0cyBvZiBDUFUsIHdoZXJlIHRoZXJlIGFyZSB2ZXJ5IGZyZXF1ZW50IGlkbGUKK3BlcmlvZHMsIGJ1dCB3aGVyZSB0aGVzZSBpZGxlIHBlcmlvZHMgYXJlIGFsc28gcXVpdGUgc2hvcnQgKHRlbnMgb3IKK2h1bmRyZWRzIG9mIG1pY3Jvc2Vjb25kcykuICBGb3IgdGhlc2UgdHlwZXMgb2Ygd29ya2xvYWRzLCBzY2hlZHVsaW5nCitjbG9jayBpbnRlcnJ1cHRzIHdpbGwgbm9ybWFsbHkgYmUgZGVsaXZlcmVkIGFueSB3YXkgYmVjYXVzZSB0aGVyZQord2lsbCBmcmVxdWVudGx5IGJlIG11bHRpcGxlIHJ1bm5hYmxlIHRhc2tzIHBlciBDUFUuICBJbiB0aGVzZSBjYXNlcywKK2F0dGVtcHRpbmcgdG8gdHVybiBvZmYgdGhlIHNjaGVkdWxpbmcgY2xvY2sgaW50ZXJydXB0IHdpbGwgaGF2ZSBubyBlZmZlY3QKK290aGVyIHRoYW4gaW5jcmVhc2luZyB0aGUgb3ZlcmhlYWQgb2Ygc3dpdGNoaW5nIHRvIGFuZCBmcm9tIGlkbGUgYW5kCit0cmFuc2l0aW9uaW5nIGJldHdlZW4gdXNlciBhbmQga2VybmVsIGV4ZWN1dGlvbi4KKworVGhpcyBtb2RlIG9mIG9wZXJhdGlvbiBjYW4gYmUgc2VsZWN0ZWQgdXNpbmcgQ09ORklHX0haX1BFUklPRElDPXkgKG9yCitDT05GSUdfTk9fSFo9biBmb3Igb2xkZXIga2VybmVscykuCisKK0hvd2V2ZXIsIGlmIHlvdSBhcmUgaW5zdGVhZCBydW5uaW5nIGEgbGlnaHQgd29ya2xvYWQgd2l0aCBsb25nIGlkbGUKK3BlcmlvZHMsIGZhaWxpbmcgdG8gb21pdCBzY2hlZHVsaW5nLWNsb2NrIGludGVycnVwdHMgd2lsbCByZXN1bHQgaW4KK2V4Y2Vzc2l2ZSBwb3dlciBjb25zdW1wdGlvbi4gIFRoaXMgaXMgZXNwZWNpYWxseSBiYWQgb24gYmF0dGVyeS1wb3dlcmVkCitkZXZpY2VzLCB3aGVyZSBpdCByZXN1bHRzIGluIGV4dHJlbWVseSBzaG9ydCBiYXR0ZXJ5IGxpZmV0aW1lcy4gIElmIHlvdQorYXJlIHJ1bm5pbmcgbGlnaHQgd29ya2xvYWRzLCB5b3Ugc2hvdWxkIHRoZXJlZm9yZSByZWFkIHRoZSBmb2xsb3dpbmcKK3NlY3Rpb24uCisKK0luIGFkZGl0aW9uLCBpZiB5b3UgYXJlIHJ1bm5pbmcgZWl0aGVyIGEgcmVhbC10aW1lIHdvcmtsb2FkIG9yIGFuIEhQQword29ya2xvYWQgd2l0aCBzaG9ydCBpdGVyYXRpb25zLCB0aGUgc2NoZWR1bGluZy1jbG9jayBpbnRlcnJ1cHRzIGNhbgorZGVncmFkZSB5b3VyIGFwcGxpY2F0aW9ucyBwZXJmb3JtYW5jZS4gIElmIHRoaXMgZGVzY3JpYmVzIHlvdXIgd29ya2xvYWQsCit5b3Ugc2hvdWxkIHJlYWQgdGhlIGZvbGxvd2luZyB0d28gc2VjdGlvbnMuCisKKworT01JVCBTQ0hFRFVMSU5HLUNMT0NLIFRJQ0tTIEZPUiBJRExFIENQVXMKKworSWYgYSBDUFUgaXMgaWRsZSwgdGhlcmUgaXMgbGl0dGxlIHBvaW50IGluIHNlbmRpbmcgaXQgYSBzY2hlZHVsaW5nLWNsb2NrCitpbnRlcnJ1cHQuICBBZnRlciBhbGwsIHRoZSBwcmltYXJ5IHB1cnBvc2Ugb2YgYSBzY2hlZHVsaW5nLWNsb2NrIGludGVycnVwdAoraXMgdG8gZm9yY2UgYSBidXN5IENQVSB0byBzaGlmdCBpdHMgYXR0ZW50aW9uIGFtb25nIG11bHRpcGxlIGR1dGllcywKK2FuZCBhbiBpZGxlIENQVSBoYXMgbm8gZHV0aWVzIHRvIHNoaWZ0IGl0cyBhdHRlbnRpb24gYW1vbmcuCisKK1RoZSBDT05GSUdfTk9fSFpfSURMRT15IEtjb25maWcgb3B0aW9uIGNhdXNlcyB0aGUga2VybmVsIHRvIGF2b2lkIHNlbmRpbmcKK3NjaGVkdWxpbmctY2xvY2sgaW50ZXJydXB0cyB0byBpZGxlIENQVXMsIHdoaWNoIGlzIGNyaXRpY2FsbHkgaW1wb3J0YW50Citib3RoIHRvIGJhdHRlcnktcG93ZXJlZCBkZXZpY2VzIGFuZCB0byBoaWdobHkgdmlydHVhbGl6ZWQgbWFpbmZyYW1lcy4KK0EgYmF0dGVyeS1wb3dlcmVkIGRldmljZSBydW5uaW5nIGEgQ09ORklHX0haX1BFUklPRElDPXkga2VybmVsIHdvdWxkCitkcmFpbiBpdHMgYmF0dGVyeSB2ZXJ5IHF1aWNrbHksIGVhc2lseSAyLTMgdGltZXMgYXMgZmFzdCBhcyB3b3VsZCB0aGUKK3NhbWUgZGV2aWNlIHJ1bm5pbmcgYSBDT05GSUdfTk9fSFpfSURMRT15IGtlcm5lbC4gIEEgbWFpbmZyYW1lIHJ1bm5pbmcKKzEsNTAwIE9TIGluc3RhbmNlcyBtaWdodCBmaW5kIHRoYXQgaGFsZiBvZiBpdHMgQ1BVIHRpbWUgd2FzIGNvbnN1bWVkIGJ5Cit1bm5lY2Vzc2FyeSBzY2hlZHVsaW5nLWNsb2NrIGludGVycnVwdHMuICBJbiB0aGVzZSBzaXR1YXRpb25zLCB0aGVyZQoraXMgc3Ryb25nIG1vdGl2YXRpb24gdG8gYXZvaWQgc2VuZGluZyBzY2hlZHVsaW5nLWNsb2NrIGludGVycnVwdHMgdG8KK2lkbGUgQ1BVcy4gIFRoYXQgc2FpZCwgZHludGljay1pZGxlIG1vZGUgaXMgbm90IGZyZWU6CisKKzEuCUl0IGluY3JlYXNlcyB0aGUgbnVtYmVyIG9mIGluc3RydWN0aW9ucyBleGVjdXRlZCBvbiB0aGUgcGF0aAorCXRvIGFuZCBmcm9tIHRoZSBpZGxlIGxvb3AuCisKKzIuCU9uIG1hbnkgYXJjaGl0ZWN0dXJlcywgZHludGljay1pZGxlIG1vZGUgYWxzbyBpbmNyZWFzZXMgdGhlCisJbnVtYmVyIG9mIGV4cGVuc2l2ZSBjbG9jay1yZXByb2dyYW1taW5nIG9wZXJhdGlvbnMuCisKK1RoZXJlZm9yZSwgc3lzdGVtcyB3aXRoIGFnZ3Jlc3NpdmUgcmVhbC10aW1lIHJlc3BvbnNlIGNvbnN0cmFpbnRzIG9mdGVuCitydW4gQ09ORklHX0haX1BFUklPRElDPXkga2VybmVscyAob3IgQ09ORklHX05PX0haPW4gZm9yIG9sZGVyIGtlcm5lbHMpCitpbiBvcmRlciB0byBhdm9pZCBkZWdyYWRpbmcgZnJvbS1pZGxlIHRyYW5zaXRpb24gbGF0ZW5jaWVzLgorCitBbiBpZGxlIENQVSB0aGF0IGlzIG5vdCByZWNlaXZpbmcgc2NoZWR1bGluZy1jbG9jayBpbnRlcnJ1cHRzIGlzIHNhaWQgdG8KK2JlICJkeW50aWNrLWlkbGUiLCAiaW4gZHludGljay1pZGxlIG1vZGUiLCAiaW4gbm9oeiBtb2RlIiwgb3IgInJ1bm5pbmcKK3RpY2tsZXNzIi4gIFRoZSByZW1haW5kZXIgb2YgdGhpcyBkb2N1bWVudCB3aWxsIHVzZSAiZHludGljay1pZGxlIG1vZGUiLgorCitUaGVyZSBpcyBhbHNvIGEgYm9vdCBwYXJhbWV0ZXIgIm5vaHo9IiB0aGF0IGNhbiBiZSB1c2VkIHRvIGRpc2FibGUKK2R5bnRpY2staWRsZSBtb2RlIGluIENPTkZJR19OT19IWl9JRExFPXkga2VybmVscyBieSBzcGVjaWZ5aW5nICJub2h6PW9mZiIuCitCeSBkZWZhdWx0LCBDT05GSUdfTk9fSFpfSURMRT15IGtlcm5lbHMgYm9vdCB3aXRoICJub2h6PW9uIiwgZW5hYmxpbmcKK2R5bnRpY2staWRsZSBtb2RlLgorCisKK09NSVQgU0NIRURVTElORy1DTE9DSyBUSUNLUyBGT1IgQ1BVcyBXSVRIIE9OTFkgT05FIFJVTk5BQkxFIFRBU0sKKworSWYgYSBDUFUgaGFzIG9ubHkgb25lIHJ1bm5hYmxlIHRhc2ssIHRoZXJlIGlzIGxpdHRsZSBwb2ludCBpbiBzZW5kaW5nIGl0CithIHNjaGVkdWxpbmctY2xvY2sgaW50ZXJydXB0IGJlY2F1c2UgdGhlcmUgaXMgbm8gb3RoZXIgdGFzayB0byBzd2l0Y2ggdG8uCitOb3RlIHRoYXQgb21pdHRpbmcgc2NoZWR1bGluZy1jbG9jayB0aWNrcyBmb3IgQ1BVcyB3aXRoIG9ubHkgb25lIHJ1bm5hYmxlCit0YXNrIGltcGxpZXMgYWxzbyBvbWl0dGluZyB0aGVtIGZvciBpZGxlIENQVXMuCisKK1RoZSBDT05GSUdfTk9fSFpfRlVMTD15IEtjb25maWcgb3B0aW9uIGNhdXNlcyB0aGUga2VybmVsIHRvIGF2b2lkCitzZW5kaW5nIHNjaGVkdWxpbmctY2xvY2sgaW50ZXJydXB0cyB0byBDUFVzIHdpdGggYSBzaW5nbGUgcnVubmFibGUgdGFzaywKK2FuZCBzdWNoIENQVXMgYXJlIHNhaWQgdG8gYmUgImFkYXB0aXZlLXRpY2tzIENQVXMiLiAgVGhpcyBpcyBpbXBvcnRhbnQKK2ZvciBhcHBsaWNhdGlvbnMgd2l0aCBhZ2dyZXNzaXZlIHJlYWwtdGltZSByZXNwb25zZSBjb25zdHJhaW50cyBiZWNhdXNlCitpdCBhbGxvd3MgdGhlbSB0byBpbXByb3ZlIHRoZWlyIHdvcnN0LWNhc2UgcmVzcG9uc2UgdGltZXMgYnkgdGhlIG1heGltdW0KK2R1cmF0aW9uIG9mIGEgc2NoZWR1bGluZy1jbG9jayBpbnRlcnJ1cHQuICBJdCBpcyBhbHNvIGltcG9ydGFudCBmb3IKK2NvbXB1dGF0aW9uYWxseSBpbnRlbnNpdmUgc2hvcnQtaXRlcmF0aW9uIHdvcmtsb2FkczogIElmIGFueSBDUFUgaXMKK2RlbGF5ZWQgZHVyaW5nIGEgZ2l2ZW4gaXRlcmF0aW9uLCBhbGwgdGhlIG90aGVyIENQVXMgd2lsbCBiZSBmb3JjZWQgdG8KK3dhaXQgaWRsZSB3aGlsZSB0aGUgZGVsYXllZCBDUFUgZmluaXNoZXMuICBUaHVzLCB0aGUgZGVsYXkgaXMgbXVsdGlwbGllZAorYnkgb25lIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIENQVXMuICBJbiB0aGVzZSBzaXR1YXRpb25zLCB0aGVyZSBpcworYWdhaW4gc3Ryb25nIG1vdGl2YXRpb24gdG8gYXZvaWQgc2VuZGluZyBzY2hlZHVsaW5nLWNsb2NrIGludGVycnVwdHMuCisKK0J5IGRlZmF1bHQsIG5vIENQVSB3aWxsIGJlIGFuIGFkYXB0aXZlLXRpY2tzIENQVS4gIFRoZSAibm9oel9mdWxsPSIKK2Jvb3QgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgYWRhcHRpdmUtdGlja3MgQ1BVcy4gIEZvciBleGFtcGxlLAorIm5vaHpfZnVsbD0xLDYtOCIgc2F5cyB0aGF0IENQVXMgMSwgNiwgNywgYW5kIDggYXJlIHRvIGJlIGFkYXB0aXZlLXRpY2tzCitDUFVzLiAgTm90ZSB0aGF0IHlvdSBhcmUgcHJvaGliaXRlZCBmcm9tIG1hcmtpbmcgYWxsIG9mIHRoZSBDUFVzIGFzCithZGFwdGl2ZS10aWNrIENQVXM6ICBBdCBsZWFzdCBvbmUgbm9uLWFkYXB0aXZlLXRpY2sgQ1BVIG11c3QgcmVtYWluCitvbmxpbmUgdG8gaGFuZGxlIHRpbWVrZWVwaW5nIHRhc2tzIGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IHN5c3RlbQorY2FsbHMgbGlrZSBnZXR0aW1lb2ZkYXkoKSByZXR1cm5zIGFjY3VyYXRlIHZhbHVlcyBvbiBhZGFwdGl2ZS10aWNrIENQVXMuCisoVGhpcyBpcyBub3QgYW4gaXNzdWUgZm9yIENPTkZJR19OT19IWl9JRExFPXkgYmVjYXVzZSB0aGVyZSBhcmUgbm8gcnVubmluZwordXNlciBwcm9jZXNzZXMgdG8gb2JzZXJ2ZSBzbGlnaHQgZHJpZnRzIGluIGNsb2NrIHJhdGUuKSAgVGhlcmVmb3JlLCB0aGUKK2Jvb3QgQ1BVIGlzIHByb2hpYml0ZWQgZnJvbSBlbnRlcmluZyBhZGFwdGl2ZS10aWNrcyBtb2RlLiAgU3BlY2lmeWluZyBhCisibm9oel9mdWxsPSIgbWFzayB0aGF0IGluY2x1ZGVzIHRoZSBib290IENQVSB3aWxsIHJlc3VsdCBpbiBhIGJvb3QtdGltZQorZXJyb3IgbWVzc2FnZSwgYW5kIHRoZSBib290IENQVSB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgbWFzay4gIE5vdGUgdGhhdAordGhpcyBtZWFucyB0aGF0IHlvdXIgc3lzdGVtIG11c3QgaGF2ZSBhdCBsZWFzdCB0d28gQ1BVcyBpbiBvcmRlciBmb3IKK0NPTkZJR19OT19IWl9GVUxMPXkgdG8gZG8gYW55dGhpbmcgZm9yIHlvdS4KKworQWx0ZXJuYXRpdmVseSwgdGhlIENPTkZJR19OT19IWl9GVUxMX0FMTD15IEtjb25maWcgcGFyYW1ldGVyIHNwZWNpZmllcwordGhhdCBhbGwgQ1BVcyBvdGhlciB0aGFuIHRoZSBib290IENQVSBhcmUgYWRhcHRpdmUtdGlja3MgQ1BVcy4gIFRoaXMKK0tjb25maWcgcGFyYW1ldGVyIHdpbGwgYmUgb3ZlcnJpZGRlbiBieSB0aGUgIm5vaHpfZnVsbD0iIGJvb3QgcGFyYW1ldGVyLAorc28gdGhhdCBpZiBib3RoIHRoZSBDT05GSUdfTk9fSFpfRlVMTF9BTEw9eSBLY29uZmlnIHBhcmFtZXRlciBhbmQKK3RoZSAibm9oel9mdWxsPTEiIGJvb3QgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCwgdGhlIGJvb3QgcGFyYW1ldGVyIHdpbGwKK3ByZXZhaWwgc28gdGhhdCBvbmx5IENQVSAxIHdpbGwgYmUgYW4gYWRhcHRpdmUtdGlja3MgQ1BVLgorCitGaW5hbGx5LCBhZGFwdGl2ZS10aWNrcyBDUFVzIG11c3QgaGF2ZSB0aGVpciBSQ1UgY2FsbGJhY2tzIG9mZmxvYWRlZC4KK1RoaXMgaXMgY292ZXJlZCBpbiB0aGUgIlJDVSBJTVBMSUNBVElPTlMiIHNlY3Rpb24gYmVsb3cuCisKK05vcm1hbGx5LCBhIENQVSByZW1haW5zIGluIGFkYXB0aXZlLXRpY2tzIG1vZGUgYXMgbG9uZyBhcyBwb3NzaWJsZS4KK0luIHBhcnRpY3VsYXIsIHRyYW5zaXRpb25pbmcgdG8ga2VybmVsIG1vZGUgZG9lcyBub3QgYXV0b21hdGljYWxseSBjaGFuZ2UKK3RoZSBtb2RlLiAgSW5zdGVhZCwgdGhlIENQVSB3aWxsIGV4aXQgYWRhcHRpdmUtdGlja3MgbW9kZSBvbmx5IGlmIG5lZWRlZCwKK2ZvciBleGFtcGxlLCBpZiB0aGF0IENQVSBlbnF1ZXVlcyBhbiBSQ1UgY2FsbGJhY2suCisKK0p1c3QgYXMgd2l0aCBkeW50aWNrLWlkbGUgbW9kZSwgdGhlIGJlbmVmaXRzIG9mIGFkYXB0aXZlLXRpY2sgbW9kZSBkbworbm90IGNvbWUgZm9yIGZyZWU6CisKKzEuCUNPTkZJR19OT19IWl9GVUxMIHNlbGVjdHMgQ09ORklHX05PX0haX0NPTU1PTiwgc28geW91IGNhbm5vdCBydW4KKwlhZGFwdGl2ZSB0aWNrcyB3aXRob3V0IGFsc28gcnVubmluZyBkeW50aWNrIGlkbGUuICBUaGlzIGRlcGVuZGVuY3kKKwlleHRlbmRzIGRvd24gaW50byB0aGUgaW1wbGVtZW50YXRpb24sIHNvIHRoYXQgYWxsIG9mIHRoZSBjb3N0cworCW9mIENPTkZJR19OT19IWl9JRExFIGFyZSBhbHNvIGluY3VycmVkIGJ5IENPTkZJR19OT19IWl9GVUxMLgorCisyLglUaGUgdXNlci9rZXJuZWwgdHJhbnNpdGlvbnMgYXJlIHNsaWdodGx5IG1vcmUgZXhwZW5zaXZlIGR1ZQorCXRvIHRoZSBuZWVkIHRvIGluZm9ybSBrZXJuZWwgc3Vic3lzdGVtcyAoc3VjaCBhcyBSQ1UpIGFib3V0CisJdGhlIGNoYW5nZSBpbiBtb2RlLgorCiszLglQT1NJWCBDUFUgdGltZXJzIHByZXZlbnQgQ1BVcyBmcm9tIGVudGVyaW5nIGFkYXB0aXZlLXRpY2sgbW9kZS4KKwlSZWFsLXRpbWUgYXBwbGljYXRpb25zIG5lZWRpbmcgdG8gdGFrZSBhY3Rpb25zIGJhc2VkIG9uIENQVSB0aW1lCisJY29uc3VtcHRpb24gbmVlZCB0byB1c2Ugb3RoZXIgbWVhbnMgb2YgZG9pbmcgc28uCisKKzQuCUlmIHRoZXJlIGFyZSBtb3JlIHBlcmYgZXZlbnRzIHBlbmRpbmcgdGhhbiB0aGUgaGFyZHdhcmUgY2FuCisJYWNjb21tb2RhdGUsIHRoZXkgYXJlIG5vcm1hbGx5IHJvdW5kLXJvYmluZWQgc28gYXMgdG8gY29sbGVjdAorCWFsbCBvZiB0aGVtIG92ZXIgdGltZS4gIEFkYXB0aXZlLXRpY2sgbW9kZSBtYXkgcHJldmVudCB0aGlzCisJcm91bmQtcm9iaW5pbmcgZnJvbSBoYXBwZW5pbmcuICBUaGlzIHdpbGwgbGlrZWx5IGJlIGZpeGVkIGJ5CisJcHJldmVudGluZyBDUFVzIHdpdGggbGFyZ2UgbnVtYmVycyBvZiBwZXJmIGV2ZW50cyBwZW5kaW5nIGZyb20KKwllbnRlcmluZyBhZGFwdGl2ZS10aWNrIG1vZGUuCisKKzUuCVNjaGVkdWxlciBzdGF0aXN0aWNzIGZvciBhZGFwdGl2ZS10aWNrIENQVXMgbWF5IGJlIGNvbXB1dGVkCisJc2xpZ2h0bHkgZGlmZmVyZW50bHkgdGhhbiB0aG9zZSBmb3Igbm9uLWFkYXB0aXZlLXRpY2sgQ1BVcy4KKwlUaGlzIG1pZ2h0IGluIHR1cm4gcGVydHVyYiBsb2FkLWJhbGFuY2luZyBvZiByZWFsLXRpbWUgdGFza3MuCisKKzYuCVRoZSBMQl9CSUFTIHNjaGVkdWxlciBmZWF0dXJlIGlzIGRpc2FibGVkIGJ5IGFkYXB0aXZlIHRpY2tzLgorCitBbHRob3VnaCBpbXByb3ZlbWVudHMgYXJlIGV4cGVjdGVkIG92ZXIgdGltZSwgYWRhcHRpdmUgdGlja3MgaXMgcXVpdGUKK3VzZWZ1bCBmb3IgbWFueSB0eXBlcyBvZiByZWFsLXRpbWUgYW5kIGNvbXB1dGUtaW50ZW5zaXZlIGFwcGxpY2F0aW9ucy4KK0hvd2V2ZXIsIHRoZSBkcmF3YmFja3MgbGlzdGVkIGFib3ZlIG1lYW4gdGhhdCBhZGFwdGl2ZSB0aWNrcyBzaG91bGQgbm90CisoeWV0KSBiZSBlbmFibGVkIGJ5IGRlZmF1bHQuCisKKworUkNVIElNUExJQ0FUSU9OUworCitUaGVyZSBhcmUgc2l0dWF0aW9ucyBpbiB3aGljaCBpZGxlIENQVXMgY2Fubm90IGJlIHBlcm1pdHRlZCB0bworZW50ZXIgZWl0aGVyIGR5bnRpY2staWRsZSBtb2RlIG9yIGFkYXB0aXZlLXRpY2sgbW9kZSwgdGhlIG1vc3QKK2NvbW1vbiBiZWluZyB3aGVuIHRoYXQgQ1BVIGhhcyBSQ1UgY2FsbGJhY2tzIHBlbmRpbmcuCisKK1RoZSBDT05GSUdfUkNVX0ZBU1RfTk9fSFo9eSBLY29uZmlnIG9wdGlvbiBtYXkgYmUgdXNlZCB0byBjYXVzZSBzdWNoIENQVXMKK3RvIGVudGVyIGR5bnRpY2staWRsZSBtb2RlIG9yIGFkYXB0aXZlLXRpY2sgbW9kZSBhbnl3YXkuICBJbiB0aGlzIGNhc2UsCithIHRpbWVyIHdpbGwgYXdha2VuIHRoZXNlIENQVXMgZXZlcnkgZm91ciBqaWZmaWVzIGluIG9yZGVyIHRvIGVuc3VyZQordGhhdCB0aGUgUkNVIGNhbGxiYWNrcyBhcmUgcHJvY2Vzc2VkIGluIGEgdGltZWx5IGZhc2hpb24uCisKK0Fub3RoZXIgYXBwcm9hY2ggaXMgdG8gb2ZmbG9hZCBSQ1UgY2FsbGJhY2sgcHJvY2Vzc2luZyB0byAicmN1byIga3RocmVhZHMKK3VzaW5nIHRoZSBDT05GSUdfUkNVX05PQ0JfQ1BVPXkgS2NvbmZpZyBvcHRpb24uICBUaGUgc3BlY2lmaWMgQ1BVcyB0bworb2ZmbG9hZCBtYXkgYmUgc2VsZWN0ZWQgdmlhIHNldmVyYWwgbWV0aG9kczoKKworMS4JT25lIG9mIHRocmVlIG11dHVhbGx5IGV4Y2x1c2l2ZSBLY29uZmlnIG9wdGlvbnMgc3BlY2lmeSBhCisJYnVpbGQtdGltZSBkZWZhdWx0IGZvciB0aGUgQ1BVcyB0byBvZmZsb2FkOgorCisJYS4JVGhlIENPTkZJR19SQ1VfTk9DQl9DUFVfTk9ORT15IEtjb25maWcgb3B0aW9uIHJlc3VsdHMgaW4KKwkJbm8gQ1BVcyBiZWluZyBvZmZsb2FkZWQuCisKKwliLglUaGUgQ09ORklHX1JDVV9OT0NCX0NQVV9aRVJPPXkgS2NvbmZpZyBvcHRpb24gY2F1c2VzCisJCUNQVSAwIHRvIGJlIG9mZmxvYWRlZC4KKworCWMuCVRoZSBDT05GSUdfUkNVX05PQ0JfQ1BVX0FMTD15IEtjb25maWcgb3B0aW9uIGNhdXNlcyBhbGwKKwkJQ1BVcyB0byBiZSBvZmZsb2FkZWQuICBOb3RlIHRoYXQgdGhlIGNhbGxiYWNrcyB3aWxsIGJlCisJCW9mZmxvYWRlZCB0byAicmN1byIga3RocmVhZHMsIGFuZCB0aGF0IHRob3NlIGt0aHJlYWRzCisJCXdpbGwgaW4gZmFjdCBydW4gb24gc29tZSBDUFUuICBIb3dldmVyLCB0aGlzIGFwcHJvYWNoCisJCWdpdmVzIGZpbmUtZ3JhaW5lZCBjb250cm9sIG9uIGV4YWN0bHkgd2hpY2ggQ1BVcyB0aGUKKwkJY2FsbGJhY2tzIHJ1biBvbiwgYWxvbmcgd2l0aCB0aGVpciBzY2hlZHVsaW5nIHByaW9yaXR5CisJCShpbmNsdWRpbmcgdGhlIGRlZmF1bHQgb2YgU0NIRURfT1RIRVIpLCBhbmQgaXQgZnVydGhlcgorCQlhbGxvd3MgdGhpcyBjb250cm9sIHRvIGJlIHZhcmllZCBkeW5hbWljYWxseSBhdCBydW50aW1lLgorCisyLglUaGUgInJjdV9ub2Nicz0iIGtlcm5lbCBib290IHBhcmFtZXRlciwgd2hpY2ggdGFrZXMgYSBjb21tYS1zZXBhcmF0ZWQKKwlsaXN0IG9mIENQVXMgYW5kIENQVSByYW5nZXMsIGZvciBleGFtcGxlLCAiMSwzLTUiIHNlbGVjdHMgQ1BVcyAxLAorCTMsIDQsIGFuZCA1LiAgVGhlIHNwZWNpZmllZCBDUFVzIHdpbGwgYmUgb2ZmbG9hZGVkIGluIGFkZGl0aW9uIHRvCisJYW55IENQVXMgc3BlY2lmaWVkIGFzIG9mZmxvYWRlZCBieSBDT05GSUdfUkNVX05PQ0JfQ1BVX1pFUk89eSBvcgorCUNPTkZJR19SQ1VfTk9DQl9DUFVfQUxMPXkuICBUaGlzIG1lYW5zIHRoYXQgdGhlICJyY3Vfbm9jYnM9IiBib290CisJcGFyYW1ldGVyIGhhcyBubyBlZmZlY3QgZm9yIGtlcm5lbHMgYnVpbHQgd2l0aCBSQ1VfTk9DQl9DUFVfQUxMPXkuCisKK1RoZSBvZmZsb2FkZWQgQ1BVcyB3aWxsIG5ldmVyIHF1ZXVlIFJDVSBjYWxsYmFja3MsIGFuZCB0aGVyZWZvcmUgUkNVCituZXZlciBwcmV2ZW50cyBvZmZsb2FkZWQgQ1BVcyBmcm9tIGVudGVyaW5nIGVpdGhlciBkeW50aWNrLWlkbGUgbW9kZQorb3IgYWRhcHRpdmUtdGljayBtb2RlLiAgVGhhdCBzYWlkLCBub3RlIHRoYXQgaXQgaXMgdXAgdG8gdXNlcnNwYWNlIHRvCitwaW4gdGhlICJyY3VvIiBrdGhyZWFkcyB0byBzcGVjaWZpYyBDUFVzIGlmIGRlc2lyZWQuICBPdGhlcndpc2UsIHRoZQorc2NoZWR1bGVyIHdpbGwgZGVjaWRlIHdoZXJlIHRvIHJ1biB0aGVtLCB3aGljaCBtaWdodCBvciBtaWdodCBub3QgYmUKK3doZXJlIHlvdSB3YW50IHRoZW0gdG8gcnVuLgorCisKK1RFU1RJTkcKKworU28geW91IGVuYWJsZSBhbGwgdGhlIE9TLWppdHRlciBmZWF0dXJlcyBkZXNjcmliZWQgaW4gdGhpcyBkb2N1bWVudCwKK2J1dCBkbyBub3Qgc2VlIGFueSBjaGFuZ2UgaW4geW91ciB3b3JrbG9hZCdzIGJlaGF2aW9yLiAgSXMgdGhpcyBiZWNhdXNlCit5b3VyIHdvcmtsb2FkIGlzbid0IGFmZmVjdGVkIHRoYXQgbXVjaCBieSBPUyBqaXR0ZXIsIG9yIGlzIGl0IGJlY2F1c2UKK3NvbWV0aGluZyBlbHNlIGlzIGluIHRoZSB3YXk/ICBUaGlzIHNlY3Rpb24gaGVscHMgYW5zd2VyIHRoaXMgcXVlc3Rpb24KK2J5IHByb3ZpZGluZyBhIHNpbXBsZSBPUy1qaXR0ZXIgdGVzdCBzdWl0ZSwgd2hpY2ggaXMgYXZhaWxhYmxlIG9uIGJyYW5jaAorbWFzdGVyIG9mIHRoZSBmb2xsb3dpbmcgZ2l0IGFyY2hpdmU6CisKK2dpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9mcmVkZXJpYy9keW50aWNrcy10ZXN0aW5nLmdpdAorCitDbG9uZSB0aGlzIGFyY2hpdmUgYW5kIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluIHRoZSBSRUFETUUgZmlsZS4KK1RoaXMgdGVzdCBwcm9jZWR1cmUgd2lsbCBwcm9kdWNlIGEgdHJhY2UgdGhhdCB3aWxsIGFsbG93IHlvdSB0byBldmFsdWF0ZQord2hldGhlciBvciBub3QgeW91IGhhdmUgc3VjY2VlZGVkIGluIHJlbW92aW5nIE9TIGppdHRlciBmcm9tIHlvdXIgc3lzdGVtLgorSWYgdGhpcyB0cmFjZSBzaG93cyB0aGF0IHlvdSBoYXZlIHJlbW92ZWQgT1Mgaml0dGVyIGFzIG11Y2ggYXMgaXMKK3Bvc3NpYmxlLCB0aGVuIHlvdSBjYW4gY29uY2x1ZGUgdGhhdCB5b3VyIHdvcmtsb2FkIGlzIG5vdCBhbGwgdGhhdAorc2Vuc2l0aXZlIHRvIE9TIGppdHRlci4KKworTm90ZTogdGhpcyB0ZXN0IHJlcXVpcmVzIHRoYXQgeW91ciBzeXN0ZW0gaGF2ZSBhdCBsZWFzdCB0d28gQ1BVcy4KK1dlIGRvIG5vdCBjdXJyZW50bHkgaGF2ZSBhIGdvb2Qgd2F5IHRvIHJlbW92ZSBPUyBqaXR0ZXIgZnJvbSBzaW5nbGUtQ1BVCitzeXN0ZW1zLgorCisKK0tOT1dOIElTU1VFUworCitvCUR5bnRpY2staWRsZSBzbG93cyB0cmFuc2l0aW9ucyB0byBhbmQgZnJvbSBpZGxlIHNsaWdodGx5LgorCUluIHByYWN0aWNlLCB0aGlzIGhhcyBub3QgYmVlbiBhIHByb2JsZW0gZXhjZXB0IGZvciB0aGUgbW9zdAorCWFnZ3Jlc3NpdmUgcmVhbC10aW1lIHdvcmtsb2Fkcywgd2hpY2ggaGF2ZSB0aGUgb3B0aW9uIG9mIGRpc2FibGluZworCWR5bnRpY2staWRsZSBtb2RlLCBhbiBvcHRpb24gdGhhdCBtb3N0IG9mIHRoZW0gdGFrZS4gIEhvd2V2ZXIsCisJc29tZSB3b3JrbG9hZHMgd2lsbCBubyBkb3VidCB3YW50IHRvIHVzZSBhZGFwdGl2ZSB0aWNrcyB0bworCWVsaW1pbmF0ZSBzY2hlZHVsaW5nLWNsb2NrIGludGVycnVwdCBsYXRlbmNpZXMuICBIZXJlIGFyZSBzb21lCisJb3B0aW9ucyBmb3IgdGhlc2Ugd29ya2xvYWRzOgorCisJYS4JVXNlIFBNUU9TIGZyb20gdXNlcnNwYWNlIHRvIGluZm9ybSB0aGUga2VybmVsIG9mIHlvdXIKKwkJbGF0ZW5jeSByZXF1aXJlbWVudHMgKHByZWZlcnJlZCkuCisKKwliLglPbiB4ODYgc3lzdGVtcywgdXNlIHRoZSAiaWRsZT1td2FpdCIgYm9vdCBwYXJhbWV0ZXIuCisKKwljLglPbiB4ODYgc3lzdGVtcywgdXNlIHRoZSAiaW50ZWxfaWRsZS5tYXhfY3N0YXRlPSIgdG8gbGltaXQKKwlgCXRoZSBtYXhpbXVtIEMtc3RhdGUgZGVwdGguCisKKwlkLglPbiB4ODYgc3lzdGVtcywgdXNlIHRoZSAiaWRsZT1wb2xsIiBib290IHBhcmFtZXRlci4KKwkJSG93ZXZlciwgcGxlYXNlIG5vdGUgdGhhdCB1c2Ugb2YgdGhpcyBwYXJhbWV0ZXIgY2FuIGNhdXNlCisJCXlvdXIgQ1BVIHRvIG92ZXJoZWF0LCB3aGljaCBtYXkgY2F1c2UgdGhlcm1hbCB0aHJvdHRsaW5nCisJCXRvIGRlZ3JhZGUgeW91ciBsYXRlbmNpZXMgLS0gYW5kIHRoYXQgdGhpcyBkZWdyYWRhdGlvbiBjYW4KKwkJYmUgZXZlbiB3b3JzZSB0aGFuIHRoYXQgb2YgZHludGljay1pZGxlLiAgRnVydGhlcm1vcmUsCisJCXRoaXMgcGFyYW1ldGVyIGVmZmVjdGl2ZWx5IGRpc2FibGVzIFR1cmJvIE1vZGUgb24gSW50ZWwKKwkJQ1BVcywgd2hpY2ggY2FuIHNpZ25pZmljYW50bHkgcmVkdWNlIG1heGltdW0gcGVyZm9ybWFuY2UuCisKK28JQWRhcHRpdmUtdGlja3Mgc2xvd3MgdXNlci9rZXJuZWwgdHJhbnNpdGlvbnMgc2xpZ2h0bHkuCisJVGhpcyBpcyBub3QgZXhwZWN0ZWQgdG8gYmUgYSBwcm9ibGVtIGZvciBjb21wdXRhdGlvbmFsbHkgaW50ZW5zaXZlCisJd29ya2xvYWRzLCB3aGljaCBoYXZlIGZldyBzdWNoIHRyYW5zaXRpb25zLiAgQ2FyZWZ1bCBiZW5jaG1hcmtpbmcKKwl3aWxsIGJlIHJlcXVpcmVkIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBvdGhlciB3b3JrbG9hZHMKKwlhcmUgc2lnbmlmaWNhbnRseSBhZmZlY3RlZCBieSB0aGlzIGVmZmVjdC4KKworbwlBZGFwdGl2ZS10aWNrcyBkb2VzIG5vdCBkbyBhbnl0aGluZyB1bmxlc3MgdGhlcmUgaXMgb25seSBvbmUKKwlydW5uYWJsZSB0YXNrIGZvciBhIGdpdmVuIENQVSwgZXZlbiB0aG91Z2ggdGhlcmUgYXJlIGEgbnVtYmVyCisJb2Ygb3RoZXIgc2l0dWF0aW9ucyB3aGVyZSB0aGUgc2NoZWR1bGluZy1jbG9jayB0aWNrIGlzIG5vdAorCW5lZWRlZC4gIFRvIGdpdmUgYnV0IG9uZSBleGFtcGxlLCBjb25zaWRlciBhIENQVSB0aGF0IGhhcyBvbmUKKwlydW5uYWJsZSBoaWdoLXByaW9yaXR5IFNDSEVEX0ZJRk8gdGFzayBhbmQgYW4gYXJiaXRyYXJ5IG51bWJlcgorCW9mIGxvdy1wcmlvcml0eSBTQ0hFRF9PVEhFUiB0YXNrcy4gIEluIHRoaXMgY2FzZSwgdGhlIENQVSBpcworCXJlcXVpcmVkIHRvIHJ1biB0aGUgU0NIRURfRklGTyB0YXNrIHVudGlsIGl0IGVpdGhlciBibG9ja3Mgb3IKKwlzb21lIG90aGVyIGhpZ2hlci1wcmlvcml0eSB0YXNrIGF3YWtlbnMgb24gKG9yIGlzIGFzc2lnbmVkIHRvKQorCXRoaXMgQ1BVLCBzbyB0aGVyZSBpcyBubyBwb2ludCBpbiBzZW5kaW5nIGEgc2NoZWR1bGluZy1jbG9jaworCWludGVycnVwdCB0byB0aGlzIENQVS4JSG93ZXZlciwgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24KKwluZXZlcnRoZWxlc3Mgc2VuZHMgc2NoZWR1bGluZy1jbG9jayBpbnRlcnJ1cHRzIHRvIENQVXMgaGF2aW5nIGEKKwlzaW5nbGUgcnVubmFibGUgU0NIRURfRklGTyB0YXNrIGFuZCBtdWx0aXBsZSBydW5uYWJsZSBTQ0hFRF9PVEhFUgorCXRhc2tzLCBldmVuIHRob3VnaCB0aGVzZSBpbnRlcnJ1cHRzIGFyZSB1bm5lY2Vzc2FyeS4KKworCUFuZCBldmVuIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIHJ1bm5hYmxlIHRhc2tzIG9uIGEgZ2l2ZW4gQ1BVLAorCXRoZXJlIGlzIGxpdHRsZSBwb2ludCBpbiBpbnRlcnJ1cHRpbmcgdGhhdCBDUFUgdW50aWwgdGhlIGN1cnJlbnQKKwlydW5uaW5nIHRhc2sncyB0aW1lc2xpY2UgZXhwaXJlcywgd2hpY2ggaXMgYWxtb3N0IGFsd2F5cyB3YXkKKwlsb25nZXIgdGhhbiB0aGUgdGltZSBvZiB0aGUgbmV4dCBzY2hlZHVsaW5nLWNsb2NrIGludGVycnVwdC4KKworCUJldHRlciBoYW5kbGluZyBvZiB0aGVzZSBzb3J0cyBvZiBzaXR1YXRpb25zIGlzIGZ1dHVyZSB3b3JrLgorCitvCUEgcmVib290IGlzIHJlcXVpcmVkIHRvIHJlY29uZmlndXJlIGJvdGggYWRhcHRpdmUgaWRsZSBhbmQgUkNVCisJY2FsbGJhY2sgb2ZmbG9hZGluZy4gIFJ1bnRpbWUgcmVjb25maWd1cmF0aW9uIGNvdWxkIGJlIHByb3ZpZGVkCisJaWYgbmVlZGVkLCBob3dldmVyLCBkdWUgdG8gdGhlIGNvbXBsZXhpdHkgb2YgcmVjb25maWd1cmluZyBSQ1UgYXQKKwlydW50aW1lLCB0aGVyZSB3b3VsZCBuZWVkIHRvIGJlIGFuIGVhcnRoc2hha2luZ2x5IGdvb2QgcmVhc29uLgorCUVzcGVjaWFsbHkgZ2l2ZW4gdGhhdCB5b3UgaGF2ZSB0aGUgc3RyYWlnaHRmb3J3YXJkIG9wdGlvbiBvZgorCXNpbXBseSBvZmZsb2FkaW5nIFJDVSBjYWxsYmFja3MgZnJvbSBhbGwgQ1BVcyBhbmQgcGlubmluZyB0aGVtCisJd2hlcmUgeW91IHdhbnQgdGhlbSB3aGVuZXZlciB5b3Ugd2FudCB0aGVtIHBpbm5lZC4KKworbwlBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQgdG8gZGVhbCB3aXRoIG90aGVyIHNvdXJjZXMKKwlvZiBPUyBqaXR0ZXIsIGluY2x1ZGluZyBpbnRlcnJ1cHRzIGFuZCBzeXN0ZW0tdXRpbGl0eSB0YXNrcworCWFuZCBwcm9jZXNzZXMuICBUaGlzIGNvbmZpZ3VyYXRpb24gbm9ybWFsbHkgaW52b2x2ZXMgYmluZGluZworCWludGVycnVwdHMgYW5kIHRhc2tzIHRvIHBhcnRpY3VsYXIgQ1BVcy4KKworbwlTb21lIHNvdXJjZXMgb2YgT1Mgaml0dGVyIGNhbiBjdXJyZW50bHkgYmUgZWxpbWluYXRlZCBvbmx5IGJ5CisJY29uc3RyYWluaW5nIHRoZSB3b3JrbG9hZC4gIEZvciBleGFtcGxlLCB0aGUgb25seSB3YXkgdG8gZWxpbWluYXRlCisJT1Mgaml0dGVyIGR1ZSB0byBnbG9iYWwgVExCIHNob290ZG93bnMgaXMgdG8gYXZvaWQgdGhlIHVubWFwcGluZworCW9wZXJhdGlvbnMgKHN1Y2ggYXMga2VybmVsIG1vZHVsZSB1bmxvYWQgb3BlcmF0aW9ucykgdGhhdAorCXJlc3VsdCBpbiB0aGVzZSBzaG9vdGRvd25zLiAgRm9yIGFub3RoZXIgZXhhbXBsZSwgcGFnZSBmYXVsdHMKKwlhbmQgVExCIG1pc3NlcyBjYW4gYmUgcmVkdWNlZCAoYW5kIGluIHNvbWUgY2FzZXMgZWxpbWluYXRlZCkgYnkKKwl1c2luZyBodWdlIHBhZ2VzIGFuZCBieSBjb25zdHJhaW5pbmcgdGhlIGFtb3VudCBvZiBtZW1vcnkgdXNlZAorCWJ5IHRoZSBhcHBsaWNhdGlvbi4gIFByZS1mYXVsdGluZyB0aGUgd29ya2luZyBzZXQgY2FuIGFsc28gYmUKKwloZWxwZnVsLCBlc3BlY2lhbGx5IHdoZW4gY29tYmluZWQgd2l0aCB0aGUgbWxvY2soKSBhbmQgbWxvY2thbGwoKQorCXN5c3RlbSBjYWxscy4KKworbwlVbmxlc3MgYWxsIENQVXMgYXJlIGlkbGUsIGF0IGxlYXN0IG9uZSBDUFUgbXVzdCBrZWVwIHRoZQorCXNjaGVkdWxpbmctY2xvY2sgaW50ZXJydXB0IGdvaW5nIGluIG9yZGVyIHRvIHN1cHBvcnQgYWNjdXJhdGUKKwl0aW1la2VlcGluZy4KKworbwlJZiB0aGVyZSBtaWdodCBwb3RlbnRpYWxseSBiZSBzb21lIGFkYXB0aXZlLXRpY2tzIENQVXMsIHRoZXJlCisJd2lsbCBiZSBhdCBsZWFzdCBvbmUgQ1BVIGtlZXBpbmcgdGhlIHNjaGVkdWxpbmctY2xvY2sgaW50ZXJydXB0CisJZ29pbmcsIGV2ZW4gaWYgYWxsIENQVXMgYXJlIG90aGVyd2lzZSBpZGxlLgorCisJQmV0dGVyIGhhbmRsaW5nIG9mIHRoaXMgc2l0dWF0aW9uIGlzIG9uZ29pbmcgd29yay4KKworbwlTb21lIHByb2Nlc3MtaGFuZGxpbmcgb3BlcmF0aW9ucyBzdGlsbCByZXF1aXJlIHRoZSBvY2Nhc2lvbmFsCisJc2NoZWR1bGluZy1jbG9jayB0aWNrLglUaGVzZSBvcGVyYXRpb25zIGluY2x1ZGUgY2FsY3VsYXRpbmcgQ1BVCisJbG9hZCwgbWFpbnRhaW5pbmcgc2NoZWQgYXZlcmFnZSwgY29tcHV0aW5nIENGUyBlbnRpdHkgdnJ1bnRpbWUsCisJY29tcHV0aW5nIGF2ZW5ydW4sIGFuZCBjYXJyeWluZyBvdXQgbG9hZCBiYWxhbmNpbmcuICBUaGV5IGFyZQorCWN1cnJlbnRseSBhY2NvbW1vZGF0ZWQgYnkgc2NoZWR1bGluZy1jbG9jayB0aWNrIGV2ZXJ5IHNlY29uZAorCW9yIHNvLglPbi1nb2luZyB3b3JrIHdpbGwgZWxpbWluYXRlIHRoZSBuZWVkIGV2ZW4gZm9yIHRoZXNlCisJaW5mcmVxdWVudCBzY2hlZHVsaW5nLWNsb2NrIHRpY2tzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90aW1lcnMvaGlnaHJlcy50eHQgYi9Eb2N1bWVudGF0aW9uL3RpbWVycy9oaWdocmVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODc4OTk3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi90aW1lcnMvaGlnaHJlcy50eHQKQEAgLTAsMCArMSwyNDkgQEAKK0hpZ2ggcmVzb2x1dGlvbiB0aW1lcnMgYW5kIGR5bmFtaWMgdGlja3MgZGVzaWduIG5vdGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGdXJ0aGVyIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUgcGFwZXIgb2YgdGhlIE9MUyAyMDA2IHRhbGsgImhydGltZXJzCithbmQgYmV5b25kIi4gVGhlIHBhcGVyIGlzIHBhcnQgb2YgdGhlIE9MUyAyMDA2IFByb2NlZWRpbmdzIFZvbHVtZSAxLCB3aGljaCBjYW4KK2JlIGZvdW5kIG9uIHRoZSBPTFMgd2Vic2l0ZToKK2h0dHA6Ly93d3cubGludXhzeW1wb3NpdW0ub3JnLzIwMDYvbGludXhzeW1wb3NpdW1fcHJvY3YxLnBkZgorCitUaGUgc2xpZGVzIHRvIHRoaXMgdGFsayBhcmUgYXZhaWxhYmxlIGZyb206CitodHRwOi8vdGdseC5kZS9wcm9qZWN0cy9ocnRpbWVycy9vbHMyMDA2LWhydGltZXJzLnBkZgorCitUaGUgc2xpZGVzIGNvbnRhaW4gZml2ZSBmaWd1cmVzIChwYWdlcyAyLCAxNSwgMTgsIDIwLCAyMiksIHdoaWNoIGlsbHVzdHJhdGUgdGhlCitjaGFuZ2VzIGluIHRoZSB0aW1lKHIpIHJlbGF0ZWQgTGludXggc3Vic3lzdGVtcy4gRmlndXJlICMxIChwLiAyKSBzaG93cyB0aGUKK2Rlc2lnbiBvZiB0aGUgTGludXggdGltZShyKSBzeXN0ZW0gYmVmb3JlIGhydGltZXJzIGFuZCBvdGhlciBidWlsZGluZyBibG9ja3MKK2dvdCBtZXJnZWQgaW50byBtYWlubGluZS4KKworTm90ZTogdGhlIHBhcGVyIGFuZCB0aGUgc2xpZGVzIGFyZSB0YWxraW5nIGFib3V0ICJjbG9jayBldmVudCBzb3VyY2UiLCB3aGlsZSB3ZQorc3dpdGNoZWQgdG8gdGhlIG5hbWUgImNsb2NrIGV2ZW50IGRldmljZXMiIGluIG1lYW50aW1lLgorCitUaGUgZGVzaWduIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgYmFzaWMgYnVpbGRpbmcgYmxvY2tzOgorCistIGhydGltZXIgYmFzZSBpbmZyYXN0cnVjdHVyZQorLSB0aW1lb2ZkYXkgYW5kIGNsb2NrIHNvdXJjZSBtYW5hZ2VtZW50CistIGNsb2NrIGV2ZW50IG1hbmFnZW1lbnQKKy0gaGlnaCByZXNvbHV0aW9uIHRpbWVyIGZ1bmN0aW9uYWxpdHkKKy0gZHluYW1pYyB0aWNrcworCisKK2hydGltZXIgYmFzZSBpbmZyYXN0cnVjdHVyZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBocnRpbWVyIGJhc2UgaW5mcmFzdHJ1Y3R1cmUgd2FzIG1lcmdlZCBpbnRvIHRoZSAyLjYuMTYga2VybmVsLiBEZXRhaWxzIG9mCit0aGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBhcmUgY292ZXJlZCBpbiBEb2N1bWVudGF0aW9uL3RpbWVycy9ocnRpbWVycy50eHQuIFNlZQorYWxzbyBmaWd1cmUgIzIgKE9MUyBzbGlkZXMgcC4gMTUpCisKK1RoZSBtYWluIGRpZmZlcmVuY2VzIHRvIHRoZSB0aW1lciB3aGVlbCwgd2hpY2ggaG9sZHMgdGhlIGFybWVkIHRpbWVyX2xpc3QgdHlwZQordGltZXJzIGFyZToKKyAgICAgICAtIHRpbWUgb3JkZXJlZCBlbnF1ZXVlaW5nIGludG8gYSByYi10cmVlCisgICAgICAgLSBpbmRlcGVuZGVudCBvZiB0aWNrcyAodGhlIHByb2Nlc3NpbmcgaXMgYmFzZWQgb24gbmFub3NlY29uZHMpCisKKwordGltZW9mZGF5IGFuZCBjbG9jayBzb3VyY2UgbWFuYWdlbWVudAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitKb2huIFN0dWx0eidzIEdlbmVyaWMgVGltZSBPZiBEYXkgKEdUT0QpIGZyYW1ld29yayBtb3ZlcyBhIGxhcmdlIHBvcnRpb24gb2YKK2NvZGUgb3V0IG9mIHRoZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgYXJlYXMgaW50byBhIGdlbmVyaWMgbWFuYWdlbWVudAorZnJhbWV3b3JrLCBhcyBpbGx1c3RyYXRlZCBpbiBmaWd1cmUgIzMgKE9MUyBzbGlkZXMgcC4gMTgpLiBUaGUgYXJjaGl0ZWN0dXJlCitzcGVjaWZpYyBwb3J0aW9uIGlzIHJlZHVjZWQgdG8gdGhlIGxvdyBsZXZlbCBoYXJkd2FyZSBkZXRhaWxzIG9mIHRoZSBjbG9jaworc291cmNlcywgd2hpY2ggYXJlIHJlZ2lzdGVyZWQgaW4gdGhlIGZyYW1ld29yayBhbmQgc2VsZWN0ZWQgb24gYSBxdWFsaXR5IGJhc2VkCitkZWNpc2lvbi4gVGhlIGxvdyBsZXZlbCBjb2RlIHByb3ZpZGVzIGhhcmR3YXJlIHNldHVwIGFuZCByZWFkb3V0IHJvdXRpbmVzIGFuZAoraW5pdGlhbGl6ZXMgZGF0YSBzdHJ1Y3R1cmVzLCB3aGljaCBhcmUgdXNlZCBieSB0aGUgZ2VuZXJpYyB0aW1lIGtlZXBpbmcgY29kZSB0bworY29udmVydCB0aGUgY2xvY2sgdGlja3MgdG8gbmFub3NlY29uZCBiYXNlZCB0aW1lIHZhbHVlcy4gQWxsIG90aGVyIHRpbWUga2VlcGluZworcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGlzIG1vdmVkIGludG8gdGhlIGdlbmVyaWMgY29kZS4gVGhlIEdUT0QgYmFzZSBwYXRjaCBnb3QKK21lcmdlZCBpbnRvIHRoZSAyLjYuMTgga2VybmVsLgorCitGdXJ0aGVyIGluZm9ybWF0aW9uIGFib3V0IHRoZSBHZW5lcmljIFRpbWUgT2YgRGF5IGZyYW1ld29yayBpcyBhdmFpbGFibGUgaW4gdGhlCitPTFMgMjAwNSBQcm9jZWVkaW5ncyBWb2x1bWUgMToKK2h0dHA6Ly93d3cubGludXhzeW1wb3NpdW0ub3JnLzIwMDUvbGludXhzeW1wb3NpdW1fcHJvY3YxLnBkZgorCitUaGUgcGFwZXIgIldlIEFyZSBOb3QgR2V0dGluZyBBbnkgWW91bmdlcjogQSBOZXcgQXBwcm9hY2ggdG8gVGltZSBhbmQKK1RpbWVycyIgd2FzIHdyaXR0ZW4gYnkgSi4gU3R1bHR6LCBELlYuIEhhcnQsICYgTi4gQXJhdmFtdWRhbi4KKworRmlndXJlICMzIChPTFMgc2xpZGVzIHAuMTgpIGlsbHVzdHJhdGVzIHRoZSB0cmFuc2Zvcm1hdGlvbi4KKworCitjbG9jayBldmVudCBtYW5hZ2VtZW50CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doaWxlIGNsb2NrIHNvdXJjZXMgcHJvdmlkZSByZWFkIGFjY2VzcyB0byB0aGUgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIHRpbWUKK3ZhbHVlLCBjbG9jayBldmVudCBkZXZpY2VzIGFyZSB1c2VkIHRvIHNjaGVkdWxlIHRoZSBuZXh0IGV2ZW50CitpbnRlcnJ1cHQocykuIFRoZSBuZXh0IGV2ZW50IGlzIGN1cnJlbnRseSBkZWZpbmVkIHRvIGJlIHBlcmlvZGljLCB3aXRoIGl0cworcGVyaW9kIGRlZmluZWQgYXQgY29tcGlsZSB0aW1lLiBUaGUgc2V0dXAgYW5kIHNlbGVjdGlvbiBvZiB0aGUgZXZlbnQgZGV2aWNlCitmb3IgdmFyaW91cyBldmVudCBkcml2ZW4gZnVuY3Rpb25hbGl0aWVzIGlzIGhhcmR3aXJlZCBpbnRvIHRoZSBhcmNoaXRlY3R1cmUKK2RlcGVuZGVudCBjb2RlLiBUaGlzIHJlc3VsdHMgaW4gZHVwbGljYXRlZCBjb2RlIGFjcm9zcyBhbGwgYXJjaGl0ZWN0dXJlcyBhbmQKK21ha2VzIGl0IGV4dHJlbWVseSBkaWZmaWN1bHQgdG8gY2hhbmdlIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBzeXN0ZW0gdG8gdXNlCitldmVudCBpbnRlcnJ1cHQgZGV2aWNlcyBvdGhlciB0aGFuIHRob3NlIGFscmVhZHkgYnVpbHQgaW50byB0aGUKK2FyY2hpdGVjdHVyZS4gQW5vdGhlciBpbXBsaWNhdGlvbiBvZiB0aGUgY3VycmVudCBkZXNpZ24gaXMgdGhhdCBpdCBpcyBuZWNlc3NhcnkKK3RvIHRvdWNoIGFsbCB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucyBpbiBvcmRlciB0byBwcm92aWRlIG5ldworZnVuY3Rpb25hbGl0eSBsaWtlIGhpZ2ggcmVzb2x1dGlvbiB0aW1lcnMgb3IgZHluYW1pYyB0aWNrcy4KKworVGhlIGNsb2NrIGV2ZW50cyBzdWJzeXN0ZW0gdHJpZXMgdG8gYWRkcmVzcyB0aGlzIHByb2JsZW0gYnkgcHJvdmlkaW5nIGEgZ2VuZXJpYworc29sdXRpb24gdG8gbWFuYWdlIGNsb2NrIGV2ZW50IGRldmljZXMgYW5kIHRoZWlyIHVzYWdlIGZvciB0aGUgdmFyaW91cyBjbG9jaworZXZlbnQgZHJpdmVuIGtlcm5lbCBmdW5jdGlvbmFsaXRpZXMuIFRoZSBnb2FsIG9mIHRoZSBjbG9jayBldmVudCBzdWJzeXN0ZW0gaXMKK3RvIG1pbmltaXplIHRoZSBjbG9jayBldmVudCByZWxhdGVkIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQgY29kZSB0byB0aGUgcHVyZQoraGFyZHdhcmUgcmVsYXRlZCBoYW5kbGluZyBhbmQgdG8gYWxsb3cgZWFzeSBhZGRpdGlvbiBhbmQgdXRpbGl6YXRpb24gb2YgbmV3CitjbG9jayBldmVudCBkZXZpY2VzLiBJdCBhbHNvIG1pbmltaXplcyB0aGUgZHVwbGljYXRlZCBjb2RlIGFjcm9zcyB0aGUKK2FyY2hpdGVjdHVyZXMgYXMgaXQgcHJvdmlkZXMgZ2VuZXJpYyBmdW5jdGlvbmFsaXR5IGRvd24gdG8gdGhlIGludGVycnVwdAorc2VydmljZSBoYW5kbGVyLCB3aGljaCBpcyBhbG1vc3QgaW5oZXJlbnRseSBoYXJkd2FyZSBkZXBlbmRlbnQuCisKK0Nsb2NrIGV2ZW50IGRldmljZXMgYXJlIHJlZ2lzdGVyZWQgZWl0aGVyIGJ5IHRoZSBhcmNoaXRlY3R1cmUgZGVwZW5kZW50IGJvb3QKK2NvZGUgb3IgYXQgbW9kdWxlIGluc2VydGlvbiB0aW1lLiBFYWNoIGNsb2NrIGV2ZW50IGRldmljZSBmaWxscyBhIGRhdGEKK3N0cnVjdHVyZSB3aXRoIGNsb2NrLXNwZWNpZmljIHByb3BlcnR5IHBhcmFtZXRlcnMgYW5kIGNhbGxiYWNrIGZ1bmN0aW9ucy4gVGhlCitjbG9jayBldmVudCBtYW5hZ2VtZW50IGRlY2lkZXMsIGJ5IHVzaW5nIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkgcGFyYW1ldGVycywgdGhlCitzZXQgb2Ygc3lzdGVtIGZ1bmN0aW9ucyBhIGNsb2NrIGV2ZW50IGRldmljZSB3aWxsIGJlIHVzZWQgdG8gc3VwcG9ydC4gVGhpcworaW5jbHVkZXMgdGhlIGRpc3RpbmN0aW9uIG9mIHBlci1DUFUgYW5kIHBlci1zeXN0ZW0gZ2xvYmFsIGV2ZW50IGRldmljZXMuCisKK1N5c3RlbS1sZXZlbCBnbG9iYWwgZXZlbnQgZGV2aWNlcyBhcmUgdXNlZCBmb3IgdGhlIExpbnV4IHBlcmlvZGljIHRpY2suIFBlci1DUFUKK2V2ZW50IGRldmljZXMgYXJlIHVzZWQgdG8gcHJvdmlkZSBsb2NhbCBDUFUgZnVuY3Rpb25hbGl0eSBzdWNoIGFzIHByb2Nlc3MKK2FjY291bnRpbmcsIHByb2ZpbGluZywgYW5kIGhpZ2ggcmVzb2x1dGlvbiB0aW1lcnMuCisKK1RoZSBtYW5hZ2VtZW50IGxheWVyIGFzc2lnbnMgb25lIG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgdG8gYSBjbG9jaworZXZlbnQgZGV2aWNlOgorICAgICAgLSBzeXN0ZW0gZ2xvYmFsIHBlcmlvZGljIHRpY2sgKGppZmZpZXMgdXBkYXRlKQorICAgICAgLSBjcHUgbG9jYWwgdXBkYXRlX3Byb2Nlc3NfdGltZXMKKyAgICAgIC0gY3B1IGxvY2FsIHByb2ZpbGluZworICAgICAgLSBjcHUgbG9jYWwgbmV4dCBldmVudCBpbnRlcnJ1cHQgKG5vbiBwZXJpb2RpYyBtb2RlKQorCitUaGUgY2xvY2sgZXZlbnQgZGV2aWNlIGRlbGVnYXRlcyB0aGUgc2VsZWN0aW9uIG9mIHRob3NlIHRpbWVyIGludGVycnVwdCByZWxhdGVkCitmdW5jdGlvbnMgY29tcGxldGVseSB0byB0aGUgbWFuYWdlbWVudCBsYXllci4gVGhlIGNsb2NrIG1hbmFnZW1lbnQgbGF5ZXIgc3RvcmVzCithIGZ1bmN0aW9uIHBvaW50ZXIgaW4gdGhlIGRldmljZSBkZXNjcmlwdGlvbiBzdHJ1Y3R1cmUsIHdoaWNoIGhhcyB0byBiZSBjYWxsZWQKK2Zyb20gdGhlIGhhcmR3YXJlIGxldmVsIGhhbmRsZXIuIFRoaXMgcmVtb3ZlcyBhIGxvdCBvZiBkdXBsaWNhdGVkIGNvZGUgZnJvbSB0aGUKK2FyY2hpdGVjdHVyZSBzcGVjaWZpYyB0aW1lciBpbnRlcnJ1cHQgaGFuZGxlcnMgYW5kIGhhbmRzIHRoZSBjb250cm9sIG92ZXIgdGhlCitjbG9jayBldmVudCBkZXZpY2VzIGFuZCB0aGUgYXNzaWdubWVudCBvZiB0aW1lciBpbnRlcnJ1cHQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5Cit0byB0aGUgY29yZSBjb2RlLgorCitUaGUgY2xvY2sgZXZlbnQgbGF5ZXIgQVBJIGlzIHJhdGhlciBzbWFsbC4gQXNpZGUgZnJvbSB0aGUgY2xvY2sgZXZlbnQgZGV2aWNlCityZWdpc3RyYXRpb24gaW50ZXJmYWNlIGl0IHByb3ZpZGVzIGZ1bmN0aW9ucyB0byBzY2hlZHVsZSB0aGUgbmV4dCBldmVudAoraW50ZXJydXB0LCBjbG9jayBldmVudCBkZXZpY2Ugbm90aWZpY2F0aW9uIHNlcnZpY2UgYW5kIHN1cHBvcnQgZm9yIHN1c3BlbmQgYW5kCityZXN1bWUuCisKK1RoZSBmcmFtZXdvcmsgYWRkcyBhYm91dCA3MDAgbGluZXMgb2YgY29kZSB3aGljaCByZXN1bHRzIGluIGEgMktCIGluY3JlYXNlIG9mCit0aGUga2VybmVsIGJpbmFyeSBzaXplLiBUaGUgY29udmVyc2lvbiBvZiBpMzg2IHJlbW92ZXMgYWJvdXQgMTAwIGxpbmVzIG9mCitjb2RlLiBUaGUgYmluYXJ5IHNpemUgZGVjcmVhc2UgaXMgaW4gdGhlIHJhbmdlIG9mIDQwMCBieXRlLiBXZSBiZWxpZXZlIHRoYXQgdGhlCitpbmNyZWFzZSBvZiBmbGV4aWJpbGl0eSBhbmQgdGhlIGF2b2lkYW5jZSBvZiBkdXBsaWNhdGVkIGNvZGUgYWNyb3NzCithcmNoaXRlY3R1cmVzIGp1c3RpZmllcyB0aGUgc2xpZ2h0IGluY3JlYXNlIG9mIHRoZSBiaW5hcnkgc2l6ZS4KKworVGhlIGNvbnZlcnNpb24gb2YgYW4gYXJjaGl0ZWN0dXJlIGhhcyBubyBmdW5jdGlvbmFsIGltcGFjdCwgYnV0IGFsbG93cyB0bwordXRpbGl6ZSB0aGUgaGlnaCByZXNvbHV0aW9uIGFuZCBkeW5hbWljIHRpY2sgZnVuY3Rpb25hbGl0aWVzIHdpdGhvdXQgYW55IGNoYW5nZQordG8gdGhlIGNsb2NrIGV2ZW50IGRldmljZSBhbmQgdGltZXIgaW50ZXJydXB0IGNvZGUuIEFmdGVyIHRoZSBjb252ZXJzaW9uIHRoZQorZW5hYmxpbmcgb2YgaGlnaCByZXNvbHV0aW9uIHRpbWVycyBhbmQgZHluYW1pYyB0aWNrcyBpcyBzaW1wbHkgcHJvdmlkZWQgYnkKK2FkZGluZyB0aGUga2VybmVsL3RpbWUvS2NvbmZpZyBmaWxlIHRvIHRoZSBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgS2NvbmZpZyBhbmQKK2FkZGluZyB0aGUgZHluYW1pYyB0aWNrIHNwZWNpZmljIGNhbGxzIHRvIHRoZSBpZGxlIHJvdXRpbmUgKGEgdG90YWwgb2YgMyBsaW5lcworYWRkZWQgdG8gdGhlIGlkbGUgZnVuY3Rpb24gYW5kIHRoZSBLY29uZmlnIGZpbGUpCisKK0ZpZ3VyZSAjNCAoT0xTIHNsaWRlcyBwLjIwKSBpbGx1c3RyYXRlcyB0aGUgdHJhbnNmb3JtYXRpb24uCisKKworaGlnaCByZXNvbHV0aW9uIHRpbWVyIGZ1bmN0aW9uYWxpdHkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0R1cmluZyBzeXN0ZW0gYm9vdCBpdCBpcyBub3QgcG9zc2libGUgdG8gdXNlIHRoZSBoaWdoIHJlc29sdXRpb24gdGltZXIKK2Z1bmN0aW9uYWxpdHksIHdoaWxlIG1ha2luZyBpdCBwb3NzaWJsZSB3b3VsZCBiZSBkaWZmaWN1bHQgYW5kIHdvdWxkIHNlcnZlIG5vCit1c2VmdWwgZnVuY3Rpb24uIFRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgY2xvY2sgZXZlbnQgZGV2aWNlIGZyYW1ld29yaywgdGhlCitjbG9jayBzb3VyY2UgZnJhbWV3b3JrIChHVE9EKSBhbmQgaHJ0aW1lcnMgaXRzZWxmIGhhcyB0byBiZSBkb25lIGFuZAorYXBwcm9wcmlhdGUgY2xvY2sgc291cmNlcyBhbmQgY2xvY2sgZXZlbnQgZGV2aWNlcyBoYXZlIHRvIGJlIHJlZ2lzdGVyZWQgYmVmb3JlCit0aGUgaGlnaCByZXNvbHV0aW9uIGZ1bmN0aW9uYWxpdHkgY2FuIHdvcmsuIFVwIHRvIHRoZSBwb2ludCB3aGVyZSBocnRpbWVycyBhcmUKK2luaXRpYWxpemVkLCB0aGUgc3lzdGVtIHdvcmtzIGluIHRoZSB1c3VhbCBsb3cgcmVzb2x1dGlvbiBwZXJpb2RpYyBtb2RlLiBUaGUKK2Nsb2NrIHNvdXJjZSBhbmQgdGhlIGNsb2NrIGV2ZW50IGRldmljZSBsYXllcnMgcHJvdmlkZSBub3RpZmljYXRpb24gZnVuY3Rpb25zCit3aGljaCBpbmZvcm0gaHJ0aW1lcnMgYWJvdXQgYXZhaWxhYmlsaXR5IG9mIG5ldyBoYXJkd2FyZS4gaHJ0aW1lcnMgdmFsaWRhdGVzCit0aGUgdXNhYmlsaXR5IG9mIHRoZSByZWdpc3RlcmVkIGNsb2NrIHNvdXJjZXMgYW5kIGNsb2NrIGV2ZW50IGRldmljZXMgYmVmb3JlCitzd2l0Y2hpbmcgdG8gaGlnaCByZXNvbHV0aW9uIG1vZGUuIFRoaXMgZW5zdXJlcyBhbHNvIHRoYXQgYSBrZXJuZWwgd2hpY2ggaXMKK2NvbmZpZ3VyZWQgZm9yIGhpZ2ggcmVzb2x1dGlvbiB0aW1lcnMgY2FuIHJ1biBvbiBhIHN5c3RlbSB3aGljaCBsYWNrcyB0aGUKK25lY2Vzc2FyeSBoYXJkd2FyZSBzdXBwb3J0LgorCitUaGUgaGlnaCByZXNvbHV0aW9uIHRpbWVyIGNvZGUgZG9lcyBub3Qgc3VwcG9ydCBTTVAgbWFjaGluZXMgd2hpY2ggaGF2ZSBvbmx5CitnbG9iYWwgY2xvY2sgZXZlbnQgZGV2aWNlcy4gVGhlIHN1cHBvcnQgb2Ygc3VjaCBoYXJkd2FyZSB3b3VsZCBpbnZvbHZlIElQSQorY2FsbHMgd2hlbiBhbiBpbnRlcnJ1cHQgaGFwcGVucy4gVGhlIG92ZXJoZWFkIHdvdWxkIGJlIG11Y2ggbGFyZ2VyIHRoYW4gdGhlCitiZW5lZml0LiBUaGlzIGlzIHRoZSByZWFzb24gd2h5IHdlIGN1cnJlbnRseSBkaXNhYmxlIGhpZ2ggcmVzb2x1dGlvbiBhbmQKK2R5bmFtaWMgdGlja3Mgb24gaTM4NiBTTVAgc3lzdGVtcyB3aGljaCBzdG9wIHRoZSBsb2NhbCBBUElDIGluIEMzIHBvd2VyCitzdGF0ZS4gQSB3b3JrYXJvdW5kIGlzIGF2YWlsYWJsZSBhcyBhbiBpZGVhLCBidXQgdGhlIHByb2JsZW0gaGFzIG5vdCBiZWVuCit0YWNrbGVkIHlldC4KKworVGhlIHRpbWUgb3JkZXJlZCBpbnNlcnRpb24gb2YgdGltZXJzIHByb3ZpZGVzIGFsbCB0aGUgaW5mcmFzdHJ1Y3R1cmUgdG8gZGVjaWRlCit3aGV0aGVyIHRoZSBldmVudCBkZXZpY2UgaGFzIHRvIGJlIHJlcHJvZ3JhbW1lZCB3aGVuIGEgdGltZXIgaXMgYWRkZWQuIFRoZQorZGVjaXNpb24gaXMgbWFkZSBwZXIgdGltZXIgYmFzZSBhbmQgc3luY2hyb25pemVkIGFjcm9zcyBwZXItY3B1IHRpbWVyIGJhc2VzIGluCithIHN1cHBvcnQgZnVuY3Rpb24uIFRoZSBkZXNpZ24gYWxsb3dzIHRoZSBzeXN0ZW0gdG8gdXRpbGl6ZSBzZXBhcmF0ZSBwZXItQ1BVCitjbG9jayBldmVudCBkZXZpY2VzIGZvciB0aGUgcGVyLUNQVSB0aW1lciBiYXNlcywgYnV0IGN1cnJlbnRseSBvbmx5IG9uZQorcmVwcm9ncmFtbWFibGUgY2xvY2sgZXZlbnQgZGV2aWNlIHBlci1DUFUgaXMgdXRpbGl6ZWQuCisKK1doZW4gdGhlIHRpbWVyIGludGVycnVwdCBoYXBwZW5zLCB0aGUgbmV4dCBldmVudCBpbnRlcnJ1cHQgaGFuZGxlciBpcyBjYWxsZWQKK2Zyb20gdGhlIGNsb2NrIGV2ZW50IGRpc3RyaWJ1dGlvbiBjb2RlIGFuZCBtb3ZlcyBleHBpcmVkIHRpbWVycyBmcm9tIHRoZQorcmVkLWJsYWNrIHRyZWUgdG8gYSBzZXBhcmF0ZSBkb3VibGUgbGlua2VkIGxpc3QgYW5kIGludm9rZXMgdGhlIHNvZnRpcnEKK2hhbmRsZXIuIEFuIGFkZGl0aW9uYWwgbW9kZSBmaWVsZCBpbiB0aGUgaHJ0aW1lciBzdHJ1Y3R1cmUgYWxsb3dzIHRoZSBzeXN0ZW0gdG8KK2V4ZWN1dGUgY2FsbGJhY2sgZnVuY3Rpb25zIGRpcmVjdGx5IGZyb20gdGhlIG5leHQgZXZlbnQgaW50ZXJydXB0IGhhbmRsZXIuIFRoaXMKK2lzIHJlc3RyaWN0ZWQgdG8gY29kZSB3aGljaCBjYW4gc2FmZWx5IGJlIGV4ZWN1dGVkIGluIHRoZSBoYXJkIGludGVycnVwdAorY29udGV4dC4gVGhpcyBhcHBsaWVzLCBmb3IgZXhhbXBsZSwgdG8gdGhlIGNvbW1vbiBjYXNlIG9mIGEgd2FrZXVwIGZ1bmN0aW9uIGFzCit1c2VkIGJ5IG5hbm9zbGVlcC4gVGhlIGFkdmFudGFnZSBvZiBleGVjdXRpbmcgdGhlIGhhbmRsZXIgaW4gdGhlIGludGVycnVwdAorY29udGV4dCBpcyB0aGUgYXZvaWRhbmNlIG9mIHVwIHRvIHR3byBjb250ZXh0IHN3aXRjaGVzIC0gZnJvbSB0aGUgaW50ZXJydXB0ZWQKK2NvbnRleHQgdG8gdGhlIHNvZnRpcnEgYW5kIHRvIHRoZSB0YXNrIHdoaWNoIGlzIHdva2VuIHVwIGJ5IHRoZSBleHBpcmVkCit0aW1lci4KKworT25jZSBhIHN5c3RlbSBoYXMgc3dpdGNoZWQgdG8gaGlnaCByZXNvbHV0aW9uIG1vZGUsIHRoZSBwZXJpb2RpYyB0aWNrIGlzCitzd2l0Y2hlZCBvZmYuIFRoaXMgZGlzYWJsZXMgdGhlIHBlciBzeXN0ZW0gZ2xvYmFsIHBlcmlvZGljIGNsb2NrIGV2ZW50IGRldmljZSAtCitlLmcuIHRoZSBQSVQgb24gaTM4NiBTTVAgc3lzdGVtcy4KKworVGhlIHBlcmlvZGljIHRpY2sgZnVuY3Rpb25hbGl0eSBpcyBwcm92aWRlZCBieSBhbiBwZXItY3B1IGhydGltZXIuIFRoZSBjYWxsYmFjaworZnVuY3Rpb24gaXMgZXhlY3V0ZWQgaW4gdGhlIG5leHQgZXZlbnQgaW50ZXJydXB0IGNvbnRleHQgYW5kIHVwZGF0ZXMgamlmZmllcworYW5kIGNhbGxzIHVwZGF0ZV9wcm9jZXNzX3RpbWVzIGFuZCBwcm9maWxpbmcuIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaHJ0aW1lcgorYmFzZWQgcGVyaW9kaWMgdGljayBpcyBkZXNpZ25lZCB0byBiZSBleHRlbmRlZCB3aXRoIGR5bmFtaWMgdGljayBmdW5jdGlvbmFsaXR5LgorVGhpcyBhbGxvd3MgdG8gdXNlIGEgc2luZ2xlIGNsb2NrIGV2ZW50IGRldmljZSB0byBzY2hlZHVsZSBoaWdoIHJlc29sdXRpb24KK3RpbWVyIGFuZCBwZXJpb2RpYyBldmVudHMgKGppZmZpZXMgdGljaywgcHJvZmlsaW5nLCBwcm9jZXNzIGFjY291bnRpbmcpIG9uIFVQCitzeXN0ZW1zLiBUaGlzIGhhcyBiZWVuIHByb3ZlZCB0byB3b3JrIHdpdGggdGhlIFBJVCBvbiBpMzg2IGFuZCB0aGUgSW5jcmVtZW50ZXIKK29uIFBQQy4KKworVGhlIHNvZnRpcnEgZm9yIHJ1bm5pbmcgdGhlIGhydGltZXIgcXVldWVzIGFuZCBleGVjdXRpbmcgdGhlIGNhbGxiYWNrcyBoYXMgYmVlbgorc2VwYXJhdGVkIGZyb20gdGhlIHRpY2sgYm91bmQgdGltZXIgc29mdGlycSB0byBhbGxvdyBhY2N1cmF0ZSBkZWxpdmVyeSBvZiBoaWdoCityZXNvbHV0aW9uIHRpbWVyIHNpZ25hbHMgd2hpY2ggYXJlIHVzZWQgYnkgaXRpbWVyIGFuZCBQT1NJWCBpbnRlcnZhbAordGltZXJzLiBUaGUgZXhlY3V0aW9uIG9mIHRoaXMgc29mdGlycSBjYW4gc3RpbGwgYmUgZGVsYXllZCBieSBvdGhlciBzb2Z0aXJxcywKK2J1dCB0aGUgb3ZlcmFsbCBsYXRlbmNpZXMgaGF2ZSBiZWVuIHNpZ25pZmljYW50bHkgaW1wcm92ZWQgYnkgdGhpcyBzZXBhcmF0aW9uLgorCitGaWd1cmUgIzUgKE9MUyBzbGlkZXMgcC4yMikgaWxsdXN0cmF0ZXMgdGhlIHRyYW5zZm9ybWF0aW9uLgorCisKK2R5bmFtaWMgdGlja3MKKy0tLS0tLS0tLS0tLS0KKworRHluYW1pYyB0aWNrcyBhcmUgdGhlIGxvZ2ljYWwgY29uc2VxdWVuY2Ugb2YgdGhlIGhydGltZXIgYmFzZWQgcGVyaW9kaWMgdGljaworcmVwbGFjZW1lbnQgKHNjaGVkX3RpY2spLiBUaGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgc2NoZWRfdGljayBocnRpbWVyIGlzCitleHRlbmRlZCBieSB0aHJlZSBmdW5jdGlvbnM6CisKKy0gaHJ0aW1lcl9zdG9wX3NjaGVkX3RpY2sKKy0gaHJ0aW1lcl9yZXN0YXJ0X3NjaGVkX3RpY2sKKy0gaHJ0aW1lcl91cGRhdGVfamlmZmllcworCitocnRpbWVyX3N0b3Bfc2NoZWRfdGljaygpIGlzIGNhbGxlZCB3aGVuIGEgQ1BVIGdvZXMgaW50byBpZGxlIHN0YXRlLiBUaGUgY29kZQorZXZhbHVhdGVzIHRoZSBuZXh0IHNjaGVkdWxlZCB0aW1lciBldmVudCAoZnJvbSBib3RoIGhydGltZXJzIGFuZCB0aGUgdGltZXIKK3doZWVsKSBhbmQgaW4gY2FzZSB0aGF0IHRoZSBuZXh0IGV2ZW50IGlzIGZ1cnRoZXIgYXdheSB0aGFuIHRoZSBuZXh0IHRpY2sgaXQKK3JlcHJvZ3JhbXMgdGhlIHNjaGVkX3RpY2sgdG8gdGhpcyBmdXR1cmUgZXZlbnQsIHRvIGFsbG93IGxvbmdlciBpZGxlIHNsZWVwcword2l0aG91dCB3b3J0aGxlc3MgaW50ZXJydXB0aW9uIGJ5IHRoZSBwZXJpb2RpYyB0aWNrLiBUaGUgZnVuY3Rpb24gaXMgYWxzbworY2FsbGVkIHdoZW4gYW4gaW50ZXJydXB0IGhhcHBlbnMgZHVyaW5nIHRoZSBpZGxlIHBlcmlvZCwgd2hpY2ggZG9lcyBub3QgY2F1c2UgYQorcmVzY2hlZHVsZS4gVGhlIGNhbGwgaXMgbmVjZXNzYXJ5IGFzIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBtaWdodCBoYXZlIGFybWVkIGEKK25ldyB0aW1lciB3aG9zZSBleHBpcnkgdGltZSBpcyBiZWZvcmUgdGhlIHRpbWUgd2hpY2ggd2FzIGlkZW50aWZpZWQgYXMgdGhlCituZWFyZXN0IGV2ZW50IGluIHRoZSBwcmV2aW91cyBjYWxsIHRvIGhydGltZXJfc3RvcF9zY2hlZF90aWNrLgorCitocnRpbWVyX3Jlc3RhcnRfc2NoZWRfdGljaygpIGlzIGNhbGxlZCB3aGVuIHRoZSBDUFUgbGVhdmVzIHRoZSBpZGxlIHN0YXRlIGJlZm9yZQoraXQgY2FsbHMgc2NoZWR1bGUoKS4gaHJ0aW1lcl9yZXN0YXJ0X3NjaGVkX3RpY2soKSByZXN1bWVzIHRoZSBwZXJpb2RpYyB0aWNrLAord2hpY2ggaXMga2VwdCBhY3RpdmUgdW50aWwgdGhlIG5leHQgY2FsbCB0byBocnRpbWVyX3N0b3Bfc2NoZWRfdGljaygpLgorCitocnRpbWVyX3VwZGF0ZV9qaWZmaWVzKCkgaXMgY2FsbGVkIGZyb20gaXJxX2VudGVyKCkgd2hlbiBhbiBpbnRlcnJ1cHQgaGFwcGVucworaW4gdGhlIGlkbGUgcGVyaW9kIHRvIG1ha2Ugc3VyZSB0aGF0IGppZmZpZXMgYXJlIHVwIHRvIGRhdGUgYW5kIHRoZSBpbnRlcnJ1cHQKK2hhbmRsZXIgaGFzIG5vdCB0byBkZWFsIHdpdGggYW4gZXZlbnR1YWxseSBzdGFsZSBqaWZmeSB2YWx1ZS4KKworVGhlIGR5bmFtaWMgdGljayBmZWF0dXJlIHByb3ZpZGVzIHN0YXRpc3RpY2FsIHZhbHVlcyB3aGljaCBhcmUgZXhwb3J0ZWQgdG8KK3VzZXJzcGFjZSB2aWEgL3Byb2Mvc3RhdHMgYW5kIGNhbiBiZSBtYWRlIGF2YWlsYWJsZSBmb3IgZW5oYW5jZWQgcG93ZXIKK21hbmFnZW1lbnQgY29udHJvbC4KKworVGhlIGltcGxlbWVudGF0aW9uIGxlYXZlcyByb29tIGZvciBmdXJ0aGVyIGRldmVsb3BtZW50IGxpa2UgZnVsbCB0aWNrbGVzcworc3lzdGVtcywgd2hlcmUgdGhlIHRpbWUgc2xpY2UgaXMgY29udHJvbGxlZCBieSB0aGUgc2NoZWR1bGVyLCB2YXJpYWJsZQorZnJlcXVlbmN5IHByb2ZpbGluZywgYW5kIGEgY29tcGxldGUgcmVtb3ZhbCBvZiBqaWZmaWVzIGluIHRoZSBmdXR1cmUuCisKKworQXNpZGUgdGhlIGN1cnJlbnQgaW5pdGlhbCBzdWJtaXNzaW9uIG9mIGkzODYgc3VwcG9ydCwgdGhlIHBhdGNoc2V0IGhhcyBiZWVuCitleHRlbmRlZCB0byB4ODZfNjQgYW5kIEFSTSBhbHJlYWR5LiBJbml0aWFsICh3b3JrIGluIHByb2dyZXNzKSBzdXBwb3J0IGlzIGFsc28KK2F2YWlsYWJsZSBmb3IgTUlQUyBhbmQgUG93ZXJQQy4KKworCSAgVGhvbWFzLCBJbmdvCisKKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RpbWVycy9ocGV0LnR4dCBiL0RvY3VtZW50YXRpb24vdGltZXJzL2hwZXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NzM5MmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3RpbWVycy9ocGV0LnR4dApAQCAtMCwwICsxLDMwIEBACisJCUhpZ2ggUHJlY2lzaW9uIEV2ZW50IFRpbWVyIERyaXZlciBmb3IgTGludXgKKworVGhlIEhpZ2ggUHJlY2lzaW9uIEV2ZW50IFRpbWVyIChIUEVUKSBoYXJkd2FyZSBmb2xsb3dzIGEgc3BlY2lmaWNhdGlvbgorYnkgSW50ZWwgYW5kIE1pY3Jvc29mdCB3aGljaCBjYW4gYmUgZm91bmQgYXQKKworCWh0dHA6Ly93d3cuaW50ZWwuY29tL2hhcmR3YXJlZGVzaWduL2hwZXRzcGVjXzEucGRmCisKK0VhY2ggSFBFVCBoYXMgb25lIGZpeGVkLXJhdGUgY291bnRlciAoYXQgMTArIE1IeiwgaGVuY2UgIkhpZ2ggUHJlY2lzaW9uIikKK2FuZCB1cCB0byAzMiBjb21wYXJhdG9ycy4gIE5vcm1hbGx5IHRocmVlIG9yIG1vcmUgY29tcGFyYXRvcnMgYXJlIHByb3ZpZGVkLAorZWFjaCBvZiB3aGljaCBjYW4gZ2VuZXJhdGUgb25lc2hvdCBpbnRlcnJ1cHRzIGFuZCBhdCBsZWFzdCBvbmUgb2Ygd2hpY2ggaGFzCithZGRpdGlvbmFsIGhhcmR3YXJlIHRvIHN1cHBvcnQgcGVyaW9kaWMgaW50ZXJydXB0cy4gIFRoZSBjb21wYXJhdG9ycyBhcmUKK2Fsc28gY2FsbGVkICJ0aW1lcnMiLCB3aGljaCBjYW4gYmUgbWlzbGVhZGluZyBzaW5jZSB1c3VhbGx5IHRpbWVycyBhcmUKK2luZGVwZW5kZW50IG9mIGVhY2ggb3RoZXIgLi4uIHRoZXNlIHNoYXJlIGEgY291bnRlciwgY29tcGxpY2F0aW5nIHJlc2V0cy4KKworSFBFVCBkZXZpY2VzIGNhbiBzdXBwb3J0IHR3byBpbnRlcnJ1cHQgcm91dGluZyBtb2Rlcy4gIEluIG9uZSBtb2RlLCB0aGUKK2NvbXBhcmF0b3JzIGFyZSBhZGRpdGlvbmFsIGludGVycnVwdCBzb3VyY2VzIHdpdGggbm8gcGFydGljdWxhciBzeXN0ZW0KK3JvbGUuICBNYW55IHg4NiBCSU9TIHdyaXRlcnMgZG9uJ3Qgcm91dGUgSFBFVCBpbnRlcnJ1cHRzIGF0IGFsbCwgd2hpY2gKK3ByZXZlbnRzIHVzZSBvZiB0aGF0IG1vZGUuICBUaGV5IHN1cHBvcnQgdGhlIG90aGVyICJsZWdhY3kgcmVwbGFjZW1lbnQiCittb2RlIHdoZXJlIHRoZSBmaXJzdCB0d28gY29tcGFyYXRvcnMgYmxvY2sgaW50ZXJydXB0cyBmcm9tIDgyNTQgdGltZXJzCithbmQgZnJvbSB0aGUgUlRDLgorCitUaGUgZHJpdmVyIHN1cHBvcnRzIGRldGVjdGlvbiBvZiBIUEVUIGRyaXZlciBhbGxvY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbgorb2YgdGhlIEhQRVQgYmVmb3JlIHRoZSBkcml2ZXIgbW9kdWxlX2luaXQgcm91dGluZSBpcyBjYWxsZWQuICBUaGlzIGVuYWJsZXMKK3BsYXRmb3JtIGNvZGUgd2hpY2ggdXNlcyB0aW1lciAwIG9yIDEgYXMgdGhlIG1haW4gdGltZXIgdG8gaW50ZXJjZXB0IEhQRVQKK2luaXRpYWxpemF0aW9uLiAgQW4gZXhhbXBsZSBvZiB0aGlzIGluaXRpYWxpemF0aW9uIGNhbiBiZSBmb3VuZCBpbgorYXJjaC94ODYva2VybmVsL2hwZXQuYy4KKworVGhlIGRyaXZlciBwcm92aWRlcyBhIHVzZXJzcGFjZSBBUEkgd2hpY2ggcmVzZW1ibGVzIHRoZSBBUEkgZm91bmQgaW4gdGhlCitSVEMgZHJpdmVyIGZyYW1ld29yay4gIEFuIGV4YW1wbGUgdXNlciBzcGFjZSBwcm9ncmFtIGlzIHByb3ZpZGVkIGluCitmaWxlOkRvY3VtZW50YXRpb24vdGltZXJzL2hwZXRfZXhhbXBsZS5jCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RpbWVycy9ocGV0X2V4YW1wbGUuYyBiL0RvY3VtZW50YXRpb24vdGltZXJzL2hwZXRfZXhhbXBsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhM2U3MDEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3RpbWVycy9ocGV0X2V4YW1wbGUuYwpAQCAtMCwwICsxLDI5NCBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxtZW1vcnkuaD4KKyNpbmNsdWRlIDxtYWxsb2MuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDxsaW51eC9ocGV0Lmg+CisKKworZXh0ZXJuIHZvaWQgaHBldF9vcGVuX2Nsb3NlKGludCwgY29uc3QgY2hhciAqKik7CitleHRlcm4gdm9pZCBocGV0X2luZm8oaW50LCBjb25zdCBjaGFyICoqKTsKK2V4dGVybiB2b2lkIGhwZXRfcG9sbChpbnQsIGNvbnN0IGNoYXIgKiopOworZXh0ZXJuIHZvaWQgaHBldF9mYXN5bmMoaW50LCBjb25zdCBjaGFyICoqKTsKK2V4dGVybiB2b2lkIGhwZXRfcmVhZChpbnQsIGNvbnN0IGNoYXIgKiopOworCisjaW5jbHVkZSA8c3lzL3BvbGwuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKworc3RydWN0IGhwZXRfY29tbWFuZCB7CisJY2hhcgkJKmNvbW1hbmQ7CisJdm9pZAkJKCpmdW5jKShpbnQgYXJnYywgY29uc3QgY2hhciAqKiBhcmd2KTsKK30gaHBldF9jb21tYW5kW10gPSB7CisJeworCQkib3Blbi1jbG9zZSIsCisJCWhwZXRfb3Blbl9jbG9zZQorCX0sCisJeworCQkiaW5mbyIsCisJCWhwZXRfaW5mbworCX0sCisJeworCQkicG9sbCIsCisJCWhwZXRfcG9sbAorCX0sCisJeworCQkiZmFzeW5jIiwKKwkJaHBldF9mYXN5bmMKKwl9LAorfTsKKworaW50CittYWluKGludCBhcmdjLCBjb25zdCBjaGFyICoqIGFyZ3YpCit7CisJaW50CWk7CisKKwlhcmdjLS07CisJYXJndisrOworCisJaWYgKCFhcmdjKSB7CisJCWZwcmludGYoc3RkZXJyLCAiLWhwZXQ6IHJlcXVpcmVzIGNvbW1hbmRcbiIpOworCQlyZXR1cm4gLTE7CisJfQorCisKKwlmb3IgKGkgPSAwOyBpIDwgKHNpemVvZiAoaHBldF9jb21tYW5kKSAvIHNpemVvZiAoaHBldF9jb21tYW5kWzBdKSk7IGkrKykKKwkJaWYgKCFzdHJjbXAoYXJndlswXSwgaHBldF9jb21tYW5kW2ldLmNvbW1hbmQpKSB7CisJCQlhcmdjLS07CisJCQlhcmd2Kys7CisJCQlmcHJpbnRmKHN0ZGVyciwgIi1ocGV0OiBleGVjdXRpbmcgJXNcbiIsCisJCQkJaHBldF9jb21tYW5kW2ldLmNvbW1hbmQpOworCQkJaHBldF9jb21tYW5kW2ldLmZ1bmMoYXJnYywgYXJndik7CisJCQlyZXR1cm4gMDsKKwkJfQorCisJZnByaW50ZihzdGRlcnIsICJkb19ocGV0OiBjb21tYW5kICVzIG5vdCBpbXBsZW1lbnRlZFxuIiwgYXJndlswXSk7CisKKwlyZXR1cm4gLTE7Cit9CisKK3ZvaWQKK2hwZXRfb3Blbl9jbG9zZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCit7CisJaW50CWZkOworCisJaWYgKGFyZ2MgIT0gMSkgeworCQlmcHJpbnRmKHN0ZGVyciwgImhwZXRfb3Blbl9jbG9zZTogZGV2aWNlLW5hbWVcbiIpOworCQlyZXR1cm47CisJfQorCisJZmQgPSBvcGVuKGFyZ3ZbMF0sIE9fUkRPTkxZKTsKKwlpZiAoZmQgPCAwKQorCQlmcHJpbnRmKHN0ZGVyciwgImhwZXRfb3Blbl9jbG9zZTogb3BlbiBmYWlsZWRcbiIpOworCWVsc2UKKwkJY2xvc2UoZmQpOworCisJcmV0dXJuOworfQorCit2b2lkCitocGV0X2luZm8oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KQoreworCXN0cnVjdCBocGV0X2luZm8JaW5mbzsKKwlpbnQJCQlmZDsKKworCWlmIChhcmdjICE9IDEpIHsKKwkJZnByaW50ZihzdGRlcnIsICJocGV0X2luZm86IGRldmljZS1uYW1lXG4iKTsKKwkJcmV0dXJuOworCX0KKworCWZkID0gb3Blbihhcmd2WzBdLCBPX1JET05MWSk7CisJaWYgKGZkIDwgMCkgeworCQlmcHJpbnRmKHN0ZGVyciwgImhwZXRfaW5mbzogb3BlbiBvZiAlcyBmYWlsZWRcbiIsIGFyZ3ZbMF0pOworCQlyZXR1cm47CisJfQorCisJaWYgKGlvY3RsKGZkLCBIUEVUX0lORk8sICZpbmZvKSA8IDApIHsKKwkJZnByaW50ZihzdGRlcnIsICJocGV0X2luZm86IGZhaWxlZCB0byBnZXQgaW5mb1xuIik7CisJCWdvdG8gb3V0OworCX0KKworCWZwcmludGYoc3RkZXJyLCAiaHBldF9pbmZvOiBoaV9pcnFmcmVxIDB4JWx4IGhpX2ZsYWdzIDB4JWx4ICIsCisJCWluZm8uaGlfaXJlcWZyZXEsIGluZm8uaGlfZmxhZ3MpOworCWZwcmludGYoc3RkZXJyLCAiaGlfaHBldCAlZCBoaV90aW1lciAlZFxuIiwKKwkJaW5mby5oaV9ocGV0LCBpbmZvLmhpX3RpbWVyKTsKKworb3V0OgorCWNsb3NlKGZkKTsKKwlyZXR1cm47Cit9CisKK3ZvaWQKK2hwZXRfcG9sbChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCit7CisJdW5zaWduZWQgbG9uZwkJZnJlcTsKKwlpbnQJCQlpdGVyYXRpb25zLCBpLCBmZDsKKwlzdHJ1Y3QgcG9sbGZkCQlwZmQ7CisJc3RydWN0IGhwZXRfaW5mbwlpbmZvOworCXN0cnVjdCB0aW1ldmFsCQlzdHYsIGV0djsKKwlzdHJ1Y3QgdGltZXpvbmUJCXR6OworCWxvbmcJCQl1c2VjOworCisJaWYgKGFyZ2MgIT0gMykgeworCQlmcHJpbnRmKHN0ZGVyciwgImhwZXRfcG9sbDogZGV2aWNlLW5hbWUgZnJlcSBpdGVyYXRpb25zXG4iKTsKKwkJcmV0dXJuOworCX0KKworCWZyZXEgPSBhdG9pKGFyZ3ZbMV0pOworCWl0ZXJhdGlvbnMgPSBhdG9pKGFyZ3ZbMl0pOworCisJZmQgPSBvcGVuKGFyZ3ZbMF0sIE9fUkRPTkxZKTsKKworCWlmIChmZCA8IDApIHsKKwkJZnByaW50ZihzdGRlcnIsICJocGV0X3BvbGw6IG9wZW4gb2YgJXMgZmFpbGVkXG4iLCBhcmd2WzBdKTsKKwkJcmV0dXJuOworCX0KKworCWlmIChpb2N0bChmZCwgSFBFVF9JUlFGUkVRLCBmcmVxKSA8IDApIHsKKwkJZnByaW50ZihzdGRlcnIsICJocGV0X3BvbGw6IEhQRVRfSVJRRlJFUSBmYWlsZWRcbiIpOworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAoaW9jdGwoZmQsIEhQRVRfSU5GTywgJmluZm8pIDwgMCkgeworCQlmcHJpbnRmKHN0ZGVyciwgImhwZXRfcG9sbDogZmFpbGVkIHRvIGdldCBpbmZvXG4iKTsKKwkJZ290byBvdXQ7CisJfQorCisJZnByaW50ZihzdGRlcnIsICJocGV0X3BvbGw6IGluZm8uaGlfZmxhZ3MgMHglbHhcbiIsIGluZm8uaGlfZmxhZ3MpOworCisJaWYgKGluZm8uaGlfZmxhZ3MgJiYgKGlvY3RsKGZkLCBIUEVUX0VQSSwgMCkgPCAwKSkgeworCQlmcHJpbnRmKHN0ZGVyciwgImhwZXRfcG9sbDogSFBFVF9FUEkgZmFpbGVkXG4iKTsKKwkJZ290byBvdXQ7CisJfQorCisJaWYgKGlvY3RsKGZkLCBIUEVUX0lFX09OLCAwKSA8IDApIHsKKwkJZnByaW50ZihzdGRlcnIsICJocGV0X3BvbGwsIEhQRVRfSUVfT04gZmFpbGVkXG4iKTsKKwkJZ290byBvdXQ7CisJfQorCisJcGZkLmZkID0gZmQ7CisJcGZkLmV2ZW50cyA9IFBPTExJTjsKKworCWZvciAoaSA9IDA7IGkgPCBpdGVyYXRpb25zOyBpKyspIHsKKwkJcGZkLnJldmVudHMgPSAwOworCQlnZXR0aW1lb2ZkYXkoJnN0diwgJnR6KTsKKwkJaWYgKHBvbGwoJnBmZCwgMSwgLTEpIDwgMCkKKwkJCWZwcmludGYoc3RkZXJyLCAiaHBldF9wb2xsOiBwb2xsIGZhaWxlZFxuIik7CisJCWVsc2UgeworCQkJbG9uZyAJZGF0YTsKKworCQkJZ2V0dGltZW9mZGF5KCZldHYsICZ0eik7CisJCQl1c2VjID0gc3R2LnR2X3NlYyAqIDEwMDAwMDAgKyBzdHYudHZfdXNlYzsKKwkJCXVzZWMgPSAoZXR2LnR2X3NlYyAqIDEwMDAwMDAgKyBldHYudHZfdXNlYykgLSB1c2VjOworCisJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQkiaHBldF9wb2xsOiBleHBpcmVkIHRpbWUgPSAweCVseFxuIiwgdXNlYyk7CisKKwkJCWZwcmludGYoc3RkZXJyLCAiaHBldF9wb2xsOiByZXZlbnRzID0gMHgleFxuIiwKKwkJCQlwZmQucmV2ZW50cyk7CisKKwkJCWlmIChyZWFkKGZkLCAmZGF0YSwgc2l6ZW9mKGRhdGEpKSAhPSBzaXplb2YoZGF0YSkpIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwgImhwZXRfcG9sbDogcmVhZCBmYWlsZWRcbiIpOworCQkJfQorCQkJZWxzZQorCQkJCWZwcmludGYoc3RkZXJyLCAiaHBldF9wb2xsOiBkYXRhIDB4JWx4XG4iLAorCQkJCQlkYXRhKTsKKwkJfQorCX0KKworb3V0OgorCWNsb3NlKGZkKTsKKwlyZXR1cm47Cit9CisKK3N0YXRpYyBpbnQgaHBldF9zaWdpb19jb3VudDsKKworc3RhdGljIHZvaWQKK2hwZXRfc2lnaW8oaW50IHZhbCkKK3sKKwlmcHJpbnRmKHN0ZGVyciwgImhwZXRfc2lnaW86IGNhbGxlZFxuIik7CisJaHBldF9zaWdpb19jb3VudCsrOworfQorCit2b2lkCitocGV0X2Zhc3luYyhpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCit7CisJdW5zaWduZWQgbG9uZwkJZnJlcTsKKwlpbnQJCQlpdGVyYXRpb25zLCBpLCBmZCwgdmFsdWU7CisJc2lnX3QJCQlvbGRzaWc7CisJc3RydWN0IGhwZXRfaW5mbwlpbmZvOworCisJaHBldF9zaWdpb19jb3VudCA9IDA7CisJZmQgPSAtMTsKKworCWlmICgob2xkc2lnID0gc2lnbmFsKFNJR0lPLCBocGV0X3NpZ2lvKSkgPT0gU0lHX0VSUikgeworCQlmcHJpbnRmKHN0ZGVyciwgImhwZXRfZmFzeW5jOiBmYWlsZWQgdG8gc2V0IHNpZ25hbCBoYW5kbGVyXG4iKTsKKwkJcmV0dXJuOworCX0KKworCWlmIChhcmdjICE9IDMpIHsKKwkJZnByaW50ZihzdGRlcnIsICJocGV0X2Zhc3luYzogZGV2aWNlLW5hbWUgZnJlcSBpdGVyYXRpb25zXG4iKTsKKwkJZ290byBvdXQ7CisJfQorCisJZmQgPSBvcGVuKGFyZ3ZbMF0sIE9fUkRPTkxZKTsKKworCWlmIChmZCA8IDApIHsKKwkJZnByaW50ZihzdGRlcnIsICJocGV0X2Zhc3luYzogZmFpbGVkIHRvIG9wZW4gJXNcbiIsIGFyZ3ZbMF0pOworCQlyZXR1cm47CisJfQorCisKKwlpZiAoKGZjbnRsKGZkLCBGX1NFVE9XTiwgZ2V0cGlkKCkpID09IDEpIHx8CisJCSgodmFsdWUgPSBmY250bChmZCwgRl9HRVRGTCkpID09IDEpIHx8CisJCShmY250bChmZCwgRl9TRVRGTCwgdmFsdWUgfCBPX0FTWU5DKSA9PSAxKSkgeworCQlmcHJpbnRmKHN0ZGVyciwgImhwZXRfZmFzeW5jOiBmY250bCBmYWlsZWRcbiIpOworCQlnb3RvIG91dDsKKwl9CisKKwlmcmVxID0gYXRvaShhcmd2WzFdKTsKKwlpdGVyYXRpb25zID0gYXRvaShhcmd2WzJdKTsKKworCWlmIChpb2N0bChmZCwgSFBFVF9JUlFGUkVRLCBmcmVxKSA8IDApIHsKKwkJZnByaW50ZihzdGRlcnIsICJocGV0X2Zhc3luYzogSFBFVF9JUlFGUkVRIGZhaWxlZFxuIik7CisJCWdvdG8gb3V0OworCX0KKworCWlmIChpb2N0bChmZCwgSFBFVF9JTkZPLCAmaW5mbykgPCAwKSB7CisJCWZwcmludGYoc3RkZXJyLCAiaHBldF9mYXN5bmM6IGZhaWxlZCB0byBnZXQgaW5mb1xuIik7CisJCWdvdG8gb3V0OworCX0KKworCWZwcmludGYoc3RkZXJyLCAiaHBldF9mYXN5bmM6IGluZm8uaGlfZmxhZ3MgMHglbHhcbiIsIGluZm8uaGlfZmxhZ3MpOworCisJaWYgKGluZm8uaGlfZmxhZ3MgJiYgKGlvY3RsKGZkLCBIUEVUX0VQSSwgMCkgPCAwKSkgeworCQlmcHJpbnRmKHN0ZGVyciwgImhwZXRfZmFzeW5jOiBIUEVUX0VQSSBmYWlsZWRcbiIpOworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAoaW9jdGwoZmQsIEhQRVRfSUVfT04sIDApIDwgMCkgeworCQlmcHJpbnRmKHN0ZGVyciwgImhwZXRfZmFzeW5jLCBIUEVUX0lFX09OIGZhaWxlZFxuIik7CisJCWdvdG8gb3V0OworCX0KKworCWZvciAoaSA9IDA7IGkgPCBpdGVyYXRpb25zOyBpKyspIHsKKwkJKHZvaWQpIHBhdXNlKCk7CisJCWZwcmludGYoc3RkZXJyLCAiaHBldF9mYXN5bmM6IGNvdW50ID0gJWRcbiIsIGhwZXRfc2lnaW9fY291bnQpOworCX0KKworb3V0OgorCXNpZ25hbChTSUdJTywgb2xkc2lnKTsKKworCWlmIChmZCA+PSAwKQorCQljbG9zZShmZCk7CisKKwlyZXR1cm47Cit9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RpbWVycy9ocnRpbWVycy50eHQgYi9Eb2N1bWVudGF0aW9uL3RpbWVycy9ocnRpbWVycy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UzMWY2NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdGltZXJzL2hydGltZXJzLnR4dApAQCAtMCwwICsxLDE3OCBAQAorCitocnRpbWVycyAtIHN1YnN5c3RlbSBmb3IgaGlnaC1yZXNvbHV0aW9uIGtlcm5lbCB0aW1lcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHN1YnN5c3RlbSBmb3IgaGlnaC1yZXNvbHV0aW9uIGtlcm5lbCB0aW1lcnMuCisKK09uZSBtaWdodCBhc2sgdGhlIHF1ZXN0aW9uOiB3ZSBhbHJlYWR5IGhhdmUgYSB0aW1lciBzdWJzeXN0ZW0KKyhrZXJuZWwvdGltZXJzLmMpLCB3aHkgZG8gd2UgbmVlZCB0d28gdGltZXIgc3Vic3lzdGVtcz8gQWZ0ZXIgYSBsb3Qgb2YKK2JhY2sgYW5kIGZvcnRoIHRyeWluZyB0byBpbnRlZ3JhdGUgaGlnaC1yZXNvbHV0aW9uIGFuZCBoaWdoLXByZWNpc2lvbgorZmVhdHVyZXMgaW50byB0aGUgZXhpc3RpbmcgdGltZXIgZnJhbWV3b3JrLCBhbmQgYWZ0ZXIgdGVzdGluZyB2YXJpb3VzCitzdWNoIGhpZ2gtcmVzb2x1dGlvbiB0aW1lciBpbXBsZW1lbnRhdGlvbnMgaW4gcHJhY3RpY2UsIHdlIGNhbWUgdG8gdGhlCitjb25jbHVzaW9uIHRoYXQgdGhlIHRpbWVyIHdoZWVsIGNvZGUgaXMgZnVuZGFtZW50YWxseSBub3Qgc3VpdGFibGUgZm9yCitzdWNoIGFuIGFwcHJvYWNoLiBXZSBpbml0aWFsbHkgZGlkbid0IGJlbGlldmUgdGhpcyAoJ3RoZXJlIG11c3QgYmUgYSB3YXkKK3RvIHNvbHZlIHRoaXMnKSwgYW5kIHNwZW50IGEgY29uc2lkZXJhYmxlIGVmZm9ydCB0cnlpbmcgdG8gaW50ZWdyYXRlCit0aGluZ3MgaW50byB0aGUgdGltZXIgd2hlZWwsIGJ1dCB3ZSBmYWlsZWQuIEluIGhpbmRzaWdodCwgdGhlcmUgYXJlCitzZXZlcmFsIHJlYXNvbnMgd2h5IHN1Y2ggaW50ZWdyYXRpb24gaXMgaGFyZC9pbXBvc3NpYmxlOgorCistIHRoZSBmb3JjZWQgaGFuZGxpbmcgb2YgbG93LXJlc29sdXRpb24gYW5kIGhpZ2gtcmVzb2x1dGlvbiB0aW1lcnMgaW4KKyAgdGhlIHNhbWUgd2F5IGxlYWRzIHRvIGEgbG90IG9mIGNvbXByb21pc2VzLCBtYWNybyBtYWdpYyBhbmQgI2lmZGVmCisgIG1lc3MuIFRoZSB0aW1lcnMuYyBjb2RlIGlzIHZlcnkgInRpZ2h0bHkgY29kZWQiIGFyb3VuZCBqaWZmaWVzIGFuZAorICAzMi1iaXRuZXNzIGFzc3VtcHRpb25zLCBhbmQgaGFzIGJlZW4gaG9uZWQgYW5kIG1pY3JvLW9wdGltaXplZCBmb3IgYQorICByZWxhdGl2ZWx5IG5hcnJvdyB1c2UgY2FzZSAoamlmZmllcyBpbiBhIHJlbGF0aXZlbHkgbmFycm93IEhaIHJhbmdlKQorICBmb3IgbWFueSB5ZWFycyAtIGFuZCB0aHVzIGV2ZW4gc21hbGwgZXh0ZW5zaW9ucyB0byBpdCBlYXNpbHkgYnJlYWsKKyAgdGhlIHdoZWVsIGNvbmNlcHQsIGxlYWRpbmcgdG8gZXZlbiB3b3JzZSBjb21wcm9taXNlcy4gVGhlIHRpbWVyIHdoZWVsCisgIGNvZGUgaXMgdmVyeSBnb29kIGFuZCB0aWdodCBjb2RlLCB0aGVyZSdzIHplcm8gcHJvYmxlbXMgd2l0aCBpdCBpbiBpdHMKKyAgY3VycmVudCB1c2FnZSAtIGJ1dCBpdCBpcyBzaW1wbHkgbm90IHN1aXRhYmxlIHRvIGJlIGV4dGVuZGVkIGZvcgorICBoaWdoLXJlcyB0aW1lcnMuCisKKy0gdGhlIHVucHJlZGljdGFibGUgW08oTildIG92ZXJoZWFkIG9mIGNhc2NhZGluZyBsZWFkcyB0byBkZWxheXMgd2hpY2gKKyAgbmVjZXNzaXRhdGUgYSBtb3JlIGNvbXBsZXggaGFuZGxpbmcgb2YgaGlnaCByZXNvbHV0aW9uIHRpbWVycywgd2hpY2gKKyAgaW4gdHVybiBkZWNyZWFzZXMgcm9idXN0bmVzcy4gU3VjaCBhIGRlc2lnbiBzdGlsbCBsZWQgdG8gcmF0aGVyIGxhcmdlCisgIHRpbWluZyBpbmFjY3VyYWNpZXMuIENhc2NhZGluZyBpcyBhIGZ1bmRhbWVudGFsIHByb3BlcnR5IG9mIHRoZSB0aW1lcgorICB3aGVlbCBjb25jZXB0LCBpdCBjYW5ub3QgYmUgJ2Rlc2lnbmVkIG91dCcgd2l0aG91dCB1bmV2aXRhYmx5CisgIGRlZ3JhZGluZyBvdGhlciBwb3J0aW9ucyBvZiB0aGUgdGltZXJzLmMgY29kZSBpbiBhbiB1bmFjY2VwdGFibGUgd2F5LgorCistIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY3VycmVudCBwb3NpeC10aW1lciBzdWJzeXN0ZW0gb24gdG9wIG9mCisgIHRoZSB0aW1lciB3aGVlbCBoYXMgYWxyZWFkeSBpbnRyb2R1Y2VkIGEgcXVpdGUgY29tcGxleCBoYW5kbGluZyBvZgorICB0aGUgcmVxdWlyZWQgcmVhZGp1c3Rpbmcgb2YgYWJzb2x1dGUgQ0xPQ0tfUkVBTFRJTUUgdGltZXJzIGF0CisgIHNldHRpbWVvZmRheSBvciBOVFAgdGltZSAtIGZ1cnRoZXIgdW5kZXJseWluZyBvdXIgZXhwZXJpZW5jZSBieQorICBleGFtcGxlOiB0aGF0IHRoZSB0aW1lciB3aGVlbCBkYXRhIHN0cnVjdHVyZSBpcyB0b28gcmlnaWQgZm9yIGhpZ2gtcmVzCisgIHRpbWVycy4KKworLSB0aGUgdGltZXIgd2hlZWwgY29kZSBpcyBtb3N0IG9wdGltYWwgZm9yIHVzZSBjYXNlcyB3aGljaCBjYW4gYmUKKyAgaWRlbnRpZmllZCBhcyAidGltZW91dHMiLiBTdWNoIHRpbWVvdXRzIGFyZSB1c3VhbGx5IHNldCB1cCB0byBjb3ZlcgorICBlcnJvciBjb25kaXRpb25zIGluIHZhcmlvdXMgSS9PIHBhdGhzLCBzdWNoIGFzIG5ldHdvcmtpbmcgYW5kIGJsb2NrCisgIEkvTy4gVGhlIHZhc3QgbWFqb3JpdHkgb2YgdGhvc2UgdGltZXJzIG5ldmVyIGV4cGlyZSBhbmQgYXJlIHJhcmVseQorICByZWNhc2NhZGVkIGJlY2F1c2UgdGhlIGV4cGVjdGVkIGNvcnJlY3QgZXZlbnQgYXJyaXZlcyBpbiB0aW1lIHNvIHRoZXkKKyAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgdGltZXIgd2hlZWwgYmVmb3JlIGFueSBmdXJ0aGVyIHByb2Nlc3Npbmcgb2YKKyAgdGhlbSBiZWNvbWVzIG5lY2Vzc2FyeS4gVGh1cyB0aGUgdXNlcnMgb2YgdGhlc2UgdGltZW91dHMgY2FuIGFjY2VwdAorICB0aGUgZ3JhbnVsYXJpdHkgYW5kIHByZWNpc2lvbiB0cmFkZW9mZnMgb2YgdGhlIHRpbWVyIHdoZWVsLCBhbmQKKyAgbGFyZ2VseSBleHBlY3QgdGhlIHRpbWVyIHN1YnN5c3RlbSB0byBoYXZlIG5lYXItemVybyBvdmVyaGVhZC4KKyAgQWNjdXJhdGUgdGltaW5nIGZvciB0aGVtIGlzIG5vdCBhIGNvcmUgcHVycG9zZSAtIGluIGZhY3QgbW9zdCBvZiB0aGUKKyAgdGltZW91dCB2YWx1ZXMgdXNlZCBhcmUgYWQtaG9jLiBGb3IgdGhlbSBpdCBpcyBhdCBtb3N0IGEgbmVjZXNzYXJ5CisgIGV2aWwgdG8gZ3VhcmFudGVlIHRoZSBwcm9jZXNzaW5nIG9mIGFjdHVhbCB0aW1lb3V0IGNvbXBsZXRpb25zCisgIChiZWNhdXNlIG1vc3Qgb2YgdGhlIHRpbWVvdXRzIGFyZSBkZWxldGVkIGJlZm9yZSBjb21wbGV0aW9uKSwgd2hpY2gKKyAgc2hvdWxkIHRodXMgYmUgYXMgY2hlYXAgYW5kIHVuaW50cnVzaXZlIGFzIHBvc3NpYmxlLgorCitUaGUgcHJpbWFyeSB1c2VycyBvZiBwcmVjaXNpb24gdGltZXJzIGFyZSB1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucyB0aGF0Cit1dGlsaXplIG5hbm9zbGVlcCwgcG9zaXgtdGltZXJzIGFuZCBpdGltZXIgaW50ZXJmYWNlcy4gQWxzbywgaW4ta2VybmVsCit1c2VycyBsaWtlIGRyaXZlcnMgYW5kIHN1YnN5c3RlbXMgd2hpY2ggcmVxdWlyZSBwcmVjaXNlIHRpbWVkIGV2ZW50cworKGUuZy4gbXVsdGltZWRpYSkgY2FuIGJlbmVmaXQgZnJvbSB0aGUgYXZhaWxhYmlsaXR5IG9mIGEgc2VwYXJhdGUKK2hpZ2gtcmVzb2x1dGlvbiB0aW1lciBzdWJzeXN0ZW0gYXMgd2VsbC4KKworV2hpbGUgdGhpcyBzdWJzeXN0ZW0gZG9lcyBub3Qgb2ZmZXIgaGlnaC1yZXNvbHV0aW9uIGNsb2NrIHNvdXJjZXMganVzdAoreWV0LCB0aGUgaHJ0aW1lciBzdWJzeXN0ZW0gY2FuIGJlIGVhc2lseSBleHRlbmRlZCB3aXRoIGhpZ2gtcmVzb2x1dGlvbgorY2xvY2sgY2FwYWJpbGl0aWVzLCBhbmQgcGF0Y2hlcyBmb3IgdGhhdCBleGlzdCBhbmQgYXJlIG1hdHVyaW5nIHF1aWNrbHkuCitUaGUgaW5jcmVhc2luZyBkZW1hbmQgZm9yIHJlYWx0aW1lIGFuZCBtdWx0aW1lZGlhIGFwcGxpY2F0aW9ucyBhbG9uZword2l0aCBvdGhlciBwb3RlbnRpYWwgdXNlcnMgZm9yIHByZWNpc2UgdGltZXJzIGdpdmVzIGFub3RoZXIgcmVhc29uIHRvCitzZXBhcmF0ZSB0aGUgInRpbWVvdXQiIGFuZCAicHJlY2lzZSB0aW1lciIgc3Vic3lzdGVtcy4KKworQW5vdGhlciBwb3RlbnRpYWwgYmVuZWZpdCBpcyB0aGF0IHN1Y2ggYSBzZXBhcmF0aW9uIGFsbG93cyBldmVuIG1vcmUKK3NwZWNpYWwtcHVycG9zZSBvcHRpbWl6YXRpb24gb2YgdGhlIGV4aXN0aW5nIHRpbWVyIHdoZWVsIGZvciB0aGUgbG93CityZXNvbHV0aW9uIGFuZCBsb3cgcHJlY2lzaW9uIHVzZSBjYXNlcyAtIG9uY2UgdGhlIHByZWNpc2lvbi1zZW5zaXRpdmUKK0FQSXMgYXJlIHNlcGFyYXRlZCBmcm9tIHRoZSB0aW1lciB3aGVlbCBhbmQgYXJlIG1pZ3JhdGVkIG92ZXIgdG8KK2hydGltZXJzLiBFLmcuIHdlIGNvdWxkIGRlY3JlYXNlIHRoZSBmcmVxdWVuY3kgb2YgdGhlIHRpbWVvdXQgc3Vic3lzdGVtCitmcm9tIDI1MCBIeiB0byAxMDAgSFogKG9yIGV2ZW4gc21hbGxlcikuCisKK2hydGltZXIgc3Vic3lzdGVtIGltcGxlbWVudGF0aW9uIGRldGFpbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordGhlIGJhc2ljIGRlc2lnbiBjb25zaWRlcmF0aW9ucyB3ZXJlOgorCistIHNpbXBsaWNpdHkKKworLSBkYXRhIHN0cnVjdHVyZSBub3QgYm91bmQgdG8gamlmZmllcyBvciBhbnkgb3RoZXIgZ3JhbnVsYXJpdHkuIEFsbCB0aGUKKyAga2VybmVsIGxvZ2ljIHdvcmtzIGF0IDY0LWJpdCBuYW5vc2Vjb25kcyByZXNvbHV0aW9uIC0gbm8gY29tcHJvbWlzZXMuCisKKy0gc2ltcGxpZmljYXRpb24gb2YgZXhpc3RpbmcsIHRpbWluZyByZWxhdGVkIGtlcm5lbCBjb2RlCisKK2Fub3RoZXIgYmFzaWMgcmVxdWlyZW1lbnQgd2FzIHRoZSBpbW1lZGlhdGUgZW5xdWV1ZWluZyBhbmQgb3JkZXJpbmcgb2YKK3RpbWVycyBhdCBhY3RpdmF0aW9uIHRpbWUuIEFmdGVyIGxvb2tpbmcgYXQgc2V2ZXJhbCBwb3NzaWJsZSBzb2x1dGlvbnMKK3N1Y2ggYXMgcmFkaXggdHJlZXMgYW5kIGhhc2hlcywgd2UgY2hvc2UgdGhlIHJlZCBibGFjayB0cmVlIGFzIHRoZSBiYXNpYworZGF0YSBzdHJ1Y3R1cmUuIFJidHJlZXMgYXJlIGF2YWlsYWJsZSBhcyBhIGxpYnJhcnkgaW4gdGhlIGtlcm5lbCBhbmQgYXJlCit1c2VkIGluIHZhcmlvdXMgcGVyZm9ybWFuY2UtY3JpdGljYWwgYXJlYXMgb2YgZS5nLiBtZW1vcnkgbWFuYWdlbWVudCBhbmQKK2ZpbGUgc3lzdGVtcy4gVGhlIHJidHJlZSBpcyBzb2xlbHkgdXNlZCBmb3IgdGltZSBzb3J0ZWQgb3JkZXJpbmcsIHdoaWxlCithIHNlcGFyYXRlIGxpc3QgaXMgdXNlZCB0byBnaXZlIHRoZSBleHBpcnkgY29kZSBmYXN0IGFjY2VzcyB0byB0aGUKK3F1ZXVlZCB0aW1lcnMsIHdpdGhvdXQgaGF2aW5nIHRvIHdhbGsgdGhlIHJidHJlZS4KKworKFRoaXMgc2VwYXJhdGUgbGlzdCBpcyBhbHNvIHVzZWZ1bCBmb3IgbGF0ZXIgd2hlbiB3ZSdsbCBpbnRyb2R1Y2UKK2hpZ2gtcmVzb2x1dGlvbiBjbG9ja3MsIHdoZXJlIHdlIG5lZWQgc2VwYXJhdGUgcGVuZGluZyBhbmQgZXhwaXJlZAorcXVldWVzIHdoaWxlIGtlZXBpbmcgdGhlIHRpbWUtb3JkZXIgaW50YWN0LikKKworVGltZS1vcmRlcmVkIGVucXVldWVpbmcgaXMgbm90IHB1cmVseSBmb3IgdGhlIHB1cnBvc2VzIG9mCitoaWdoLXJlc29sdXRpb24gY2xvY2tzIHRob3VnaCwgaXQgYWxzbyBzaW1wbGlmaWVzIHRoZSBoYW5kbGluZyBvZgorYWJzb2x1dGUgdGltZXJzIGJhc2VkIG9uIGEgbG93LXJlc29sdXRpb24gQ0xPQ0tfUkVBTFRJTUUuIFRoZSBleGlzdGluZworaW1wbGVtZW50YXRpb24gbmVlZGVkIHRvIGtlZXAgYW4gZXh0cmEgbGlzdCBvZiBhbGwgYXJtZWQgYWJzb2x1dGUKK0NMT0NLX1JFQUxUSU1FIHRpbWVycyBhbG9uZyB3aXRoIGNvbXBsZXggbG9ja2luZy4gSW4gY2FzZSBvZgorc2V0dGltZW9mZGF5IGFuZCBOVFAsIGFsbCB0aGUgdGltZXJzICghKSBoYWQgdG8gYmUgZGVxdWV1ZWQsIHRoZQordGltZS1jaGFuZ2luZyBjb2RlIGhhZCB0byBmaXggdGhlbSB1cCBvbmUgYnkgb25lLCBhbmQgYWxsIG9mIHRoZW0gaGFkIHRvCitiZSBlbnF1ZXVlZCBhZ2Fpbi4gVGhlIHRpbWUtb3JkZXJlZCBlbnF1ZXVlaW5nIGFuZCB0aGUgc3RvcmFnZSBvZiB0aGUKK2V4cGlyeSB0aW1lIGluIGFic29sdXRlIHRpbWUgdW5pdHMgcmVtb3ZlcyBhbGwgdGhpcyBjb21wbGV4IGFuZCBwb29ybHkKK3NjYWxpbmcgY29kZSBmcm9tIHRoZSBwb3NpeC10aW1lciBpbXBsZW1lbnRhdGlvbiAtIHRoZSBjbG9jayBjYW4gc2ltcGx5CitiZSBzZXQgd2l0aG91dCBoYXZpbmcgdG8gdG91Y2ggdGhlIHJidHJlZS4gVGhpcyBhbHNvIG1ha2VzIHRoZSBoYW5kbGluZworb2YgcG9zaXgtdGltZXJzIHNpbXBsZXIgaW4gZ2VuZXJhbC4KKworVGhlIGxvY2tpbmcgYW5kIHBlci1DUFUgYmVoYXZpb3Igb2YgaHJ0aW1lcnMgd2FzIG1vc3RseSB0YWtlbiBmcm9tIHRoZQorZXhpc3RpbmcgdGltZXIgd2hlZWwgY29kZSwgYXMgaXQgaXMgbWF0dXJlIGFuZCB3ZWxsIHN1aXRlZC4gU2hhcmluZyBjb2RlCit3YXMgbm90IHJlYWxseSBhIHdpbiwgZHVlIHRvIHRoZSBkaWZmZXJlbnQgZGF0YSBzdHJ1Y3R1cmVzLiBBbHNvLCB0aGUKK2hydGltZXIgZnVuY3Rpb25zIG5vdyBoYXZlIGNsZWFyZXIgYmVoYXZpb3IgYW5kIGNsZWFyZXIgbmFtZXMgLSBzdWNoIGFzCitocnRpbWVyX3RyeV90b19jYW5jZWwoKSBhbmQgaHJ0aW1lcl9jYW5jZWwoKSBbd2hpY2ggYXJlIHJvdWdobHkKK2VxdWl2YWxlbnQgdG8gZGVsX3RpbWVyKCkgYW5kIGRlbF90aW1lcl9zeW5jKCldIC0gc28gdGhlcmUncyBubyBkaXJlY3QKKzE6MSBtYXBwaW5nIGJldHdlZW4gdGhlbSBvbiB0aGUgYWxnb3JpdGhtaWNhbCBsZXZlbCwgYW5kIHRodXMgbm8gcmVhbAorcG90ZW50aWFsIGZvciBjb2RlIHNoYXJpbmcgZWl0aGVyLgorCitCYXNpYyBkYXRhIHR5cGVzOiBldmVyeSB0aW1lIHZhbHVlLCBhYnNvbHV0ZSBvciByZWxhdGl2ZSwgaXMgaW4gYQorc3BlY2lhbCBuYW5vc2Vjb25kLXJlc29sdXRpb24gdHlwZToga3RpbWVfdC4gVGhlIGtlcm5lbC1pbnRlcm5hbAorcmVwcmVzZW50YXRpb24gb2Yga3RpbWVfdCB2YWx1ZXMgYW5kIG9wZXJhdGlvbnMgaXMgaW1wbGVtZW50ZWQgdmlhCittYWNyb3MgYW5kIGlubGluZSBmdW5jdGlvbnMsIGFuZCBjYW4gYmUgc3dpdGNoZWQgYmV0d2VlbiBhICJoeWJyaWQKK3VuaW9uIiB0eXBlIGFuZCBhIHBsYWluICJzY2FsYXIiIDY0Yml0IG5hbm9zZWNvbmRzIHJlcHJlc2VudGF0aW9uIChhdAorY29tcGlsZSB0aW1lKS4gVGhlIGh5YnJpZCB1bmlvbiB0eXBlIG9wdGltaXplcyB0aW1lIGNvbnZlcnNpb25zIG9uIDMyYml0CitDUFVzLiBUaGlzIGJ1aWxkLXRpbWUtc2VsZWN0YWJsZSBrdGltZV90IHN0b3JhZ2UgZm9ybWF0IHdhcyBpbXBsZW1lbnRlZAordG8gYXZvaWQgdGhlIHBlcmZvcm1hbmNlIGltcGFjdCBvZiA2NC1iaXQgbXVsdGlwbGljYXRpb25zIGFuZCBkaXZpc2lvbnMKK29uIDMyYml0IENQVXMuIFN1Y2ggb3BlcmF0aW9ucyBhcmUgZnJlcXVlbnRseSBuZWNlc3NhcnkgdG8gY29udmVydAorYmV0d2VlbiB0aGUgc3RvcmFnZSBmb3JtYXRzIHByb3ZpZGVkIGJ5IGtlcm5lbCBhbmQgdXNlcnNwYWNlIGludGVyZmFjZXMKK2FuZCB0aGUgaW50ZXJuYWwgdGltZSBmb3JtYXQuIChTZWUgaW5jbHVkZS9saW51eC9rdGltZS5oIGZvciBmdXJ0aGVyCitkZXRhaWxzLikKKworaHJ0aW1lcnMgLSByb3VuZGluZyBvZiB0aW1lciB2YWx1ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RoZSBocnRpbWVyIGNvZGUgd2lsbCByb3VuZCB0aW1lciBldmVudHMgdG8gbG93ZXItcmVzb2x1dGlvbiBjbG9ja3MKK2JlY2F1c2UgaXQgaGFzIHRvLiBPdGhlcndpc2UgaXQgd2lsbCBkbyBubyBhcnRpZmljaWFsIHJvdW5kaW5nIGF0IGFsbC4KKworb25lIHF1ZXN0aW9uIGlzLCB3aGF0IHJlc29sdXRpb24gdmFsdWUgc2hvdWxkIGJlIHJldHVybmVkIHRvIHRoZSB1c2VyIGJ5Cit0aGUgY2xvY2tfZ2V0cmVzKCkgaW50ZXJmYWNlLiBUaGlzIHdpbGwgcmV0dXJuIHdoYXRldmVyIHJlYWwgcmVzb2x1dGlvbgorYSBnaXZlbiBjbG9jayBoYXMgLSBiZSBpdCBsb3ctcmVzLCBoaWdoLXJlcywgb3IgYXJ0aWZpY2lhbGx5LWxvdy1yZXMuCisKK2hydGltZXJzIC0gdGVzdGluZyBhbmQgdmVyaWZpY2F0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1dlIHVzZWQgdGhlIGhpZ2gtcmVzb2x1dGlvbiBjbG9jayBzdWJzeXN0ZW0gb250b3Agb2YgaHJ0aW1lcnMgdG8gdmVyaWZ5Cit0aGUgaHJ0aW1lciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGluIHByYXhpcywgYW5kIHdlIGFsc28gcmFuIHRoZSBwb3NpeAordGltZXIgdGVzdHMgaW4gb3JkZXIgdG8gZW5zdXJlIHNwZWNpZmljYXRpb24gY29tcGxpYW5jZS4gV2UgYWxzbyByYW4KK3Rlc3RzIG9uIGxvdy1yZXNvbHV0aW9uIGNsb2Nrcy4KKworVGhlIGhydGltZXIgcGF0Y2ggY29udmVydHMgdGhlIGZvbGxvd2luZyBrZXJuZWwgZnVuY3Rpb25hbGl0eSB0byB1c2UKK2hydGltZXJzOgorCisgLSBuYW5vc2xlZXAKKyAtIGl0aW1lcnMKKyAtIHBvc2l4LXRpbWVycworCitUaGUgY29udmVyc2lvbiBvZiBuYW5vc2xlZXAgYW5kIHBvc2l4LXRpbWVycyBlbmFibGVkIHRoZSB1bmlmaWNhdGlvbiBvZgorbmFub3NsZWVwIGFuZCBjbG9ja19uYW5vc2xlZXAuCisKK1RoZSBjb2RlIHdhcyBzdWNjZXNzZnVsbHkgY29tcGlsZWQgZm9yIHRoZSBmb2xsb3dpbmcgcGxhdGZvcm1zOgorCisgaTM4NiwgeDg2XzY0LCBBUk0sIFBQQywgUFBDNjQsIElBNjQKKworVGhlIGNvZGUgd2FzIHJ1bi10ZXN0ZWQgb24gdGhlIGZvbGxvd2luZyBwbGF0Zm9ybXM6CisKKyBpMzg2KFVQL1NNUCksIHg4Nl82NChVUC9TTVApLCBBUk0sIFBQQworCitocnRpbWVycyB3ZXJlIGFsc28gaW50ZWdyYXRlZCBpbnRvIHRoZSAtcnQgdHJlZSwgYWxvbmcgd2l0aCBhCitocnRpbWVycy1iYXNlZCBoaWdoLXJlc29sdXRpb24gY2xvY2sgaW1wbGVtZW50YXRpb24sIHNvIHRoZSBocnRpbWVycworY29kZSBnb3QgYSBoZWFsdGh5IGFtb3VudCBvZiB0ZXN0aW5nIGFuZCB1c2UgaW4gcHJhY3RpY2UuCisKKwlUaG9tYXMgR2xlaXhuZXIsIEluZ28gTW9sbmFyCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RpbWVycy90aW1la2VlcGluZy50eHQgYi9Eb2N1bWVudGF0aW9uL3RpbWVycy90aW1la2VlcGluZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjNhOGNmMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdGltZXJzL3RpbWVrZWVwaW5nLnR4dApAQCAtMCwwICsxLDE3OSBAQAorQ2xvY2sgc291cmNlcywgQ2xvY2sgZXZlbnRzLCBzY2hlZF9jbG9jaygpIGFuZCBkZWxheSB0aW1lcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZG9jdW1lbnQgdHJpZXMgdG8gYnJpZWZseSBleHBsYWluIHNvbWUgYmFzaWMga2VybmVsIHRpbWVrZWVwaW5nCithYnN0cmFjdGlvbnMuIEl0IHBhcnRseSBwZXJ0YWlucyB0byB0aGUgZHJpdmVycyB1c3VhbGx5IGZvdW5kIGluCitkcml2ZXJzL2Nsb2Nrc291cmNlIGluIHRoZSBrZXJuZWwgdHJlZSwgYnV0IHRoZSBjb2RlIG1heSBiZSBzcHJlYWQgb3V0CithY3Jvc3MgdGhlIGtlcm5lbC4KKworSWYgeW91IGdyZXAgdGhyb3VnaCB0aGUga2VybmVsIHNvdXJjZSB5b3Ugd2lsbCBmaW5kIGEgbnVtYmVyIG9mIGFyY2hpdGVjdHVyZS0KK3NwZWNpZmljIGltcGxlbWVudGF0aW9ucyBvZiBjbG9jayBzb3VyY2VzLCBjbG9ja2V2ZW50cyBhbmQgc2V2ZXJhbCBsaWtld2lzZQorYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG92ZXJyaWRlcyBvZiB0aGUgc2NoZWRfY2xvY2soKSBmdW5jdGlvbiBhbmQgc29tZQorZGVsYXkgdGltZXJzLgorCitUbyBwcm92aWRlIHRpbWVrZWVwaW5nIGZvciB5b3VyIHBsYXRmb3JtLCB0aGUgY2xvY2sgc291cmNlIHByb3ZpZGVzCit0aGUgYmFzaWMgdGltZWxpbmUsIHdoZXJlYXMgY2xvY2sgZXZlbnRzIHNob290IGludGVycnVwdHMgb24gY2VydGFpbiBwb2ludHMKK29uIHRoaXMgdGltZWxpbmUsIHByb3ZpZGluZyBmYWNpbGl0aWVzIHN1Y2ggYXMgaGlnaC1yZXNvbHV0aW9uIHRpbWVycy4KK3NjaGVkX2Nsb2NrKCkgaXMgdXNlZCBmb3Igc2NoZWR1bGluZyBhbmQgdGltZXN0YW1waW5nLCBhbmQgZGVsYXkgdGltZXJzCitwcm92aWRlIGFuIGFjY3VyYXRlIGRlbGF5IHNvdXJjZSB1c2luZyBoYXJkd2FyZSBjb3VudGVycy4KKworCitDbG9jayBzb3VyY2VzCistLS0tLS0tLS0tLS0tCisKK1RoZSBwdXJwb3NlIG9mIHRoZSBjbG9jayBzb3VyY2UgaXMgdG8gcHJvdmlkZSBhIHRpbWVsaW5lIGZvciB0aGUgc3lzdGVtIHRoYXQKK3RlbGxzIHlvdSB3aGVyZSB5b3UgYXJlIGluIHRpbWUuIEZvciBleGFtcGxlIGlzc3VpbmcgdGhlIGNvbW1hbmQgJ2RhdGUnIG9uCithIExpbnV4IHN5c3RlbSB3aWxsIGV2ZW50dWFsbHkgcmVhZCB0aGUgY2xvY2sgc291cmNlIHRvIGRldGVybWluZSBleGFjdGx5Cit3aGF0IHRpbWUgaXQgaXMuCisKK1R5cGljYWxseSB0aGUgY2xvY2sgc291cmNlIGlzIGEgbW9ub3RvbmljLCBhdG9taWMgY291bnRlciB3aGljaCB3aWxsIHByb3ZpZGUKK24gYml0cyB3aGljaCBjb3VudCBmcm9tIDAgdG8gMl4obi0xKSBhbmQgdGhlbiB3cmFwcyBhcm91bmQgdG8gMCBhbmQgc3RhcnQgb3Zlci4KK0l0IHdpbGwgaWRlYWxseSBORVZFUiBzdG9wIHRpY2tpbmcgYXMgbG9uZyBhcyB0aGUgc3lzdGVtIGlzIHJ1bm5pbmcuIEl0CittYXkgc3RvcCBkdXJpbmcgc3lzdGVtIHN1c3BlbmQuCisKK1RoZSBjbG9jayBzb3VyY2Ugc2hhbGwgaGF2ZSBhcyBoaWdoIHJlc29sdXRpb24gYXMgcG9zc2libGUsIGFuZCB0aGUgZnJlcXVlbmN5CitzaGFsbCBiZSBhcyBzdGFibGUgYW5kIGNvcnJlY3QgYXMgcG9zc2libGUgYXMgY29tcGFyZWQgdG8gYSByZWFsLXdvcmxkIHdhbGwKK2Nsb2NrLiBJdCBzaG91bGQgbm90IG1vdmUgdW5wcmVkaWN0YWJseSBiYWNrIGFuZCBmb3J0aCBpbiB0aW1lIG9yIG1pc3MgYSBmZXcKK2N5Y2xlcyBoZXJlIGFuZCB0aGVyZS4KKworSXQgbXVzdCBiZSBpbW11bmUgdG8gdGhlIGtpbmQgb2YgZWZmZWN0cyB0aGF0IG9jY3VyIGluIGhhcmR3YXJlIHdoZXJlIGUuZy4KK3RoZSBjb3VudGVyIHJlZ2lzdGVyIGlzIHJlYWQgaW4gdHdvIHBoYXNlcyBvbiB0aGUgYnVzIGxvd2VzdCAxNiBiaXRzIGZpcnN0CithbmQgdGhlIGhpZ2hlciAxNiBiaXRzIGluIGEgc2Vjb25kIGJ1cyBjeWNsZSB3aXRoIHRoZSBjb3VudGVyIGJpdHMKK3BvdGVudGlhbGx5IGJlaW5nIHVwZGF0ZWQgaW4gYmV0d2VlbiBsZWFkaW5nIHRvIHRoZSByaXNrIG9mIHZlcnkgc3RyYW5nZQordmFsdWVzIGZyb20gdGhlIGNvdW50ZXIuCisKK1doZW4gdGhlIHdhbGwtY2xvY2sgYWNjdXJhY3kgb2YgdGhlIGNsb2NrIHNvdXJjZSBpc24ndCBzYXRpc2ZhY3RvcnksIHRoZXJlCithcmUgdmFyaW91cyBxdWlya3MgYW5kIGxheWVycyBpbiB0aGUgdGltZWtlZXBpbmcgY29kZSBmb3IgZS5nLiBzeW5jaHJvbml6aW5nCit0aGUgdXNlci12aXNpYmxlIHRpbWUgdG8gUlRDIGNsb2NrcyBpbiB0aGUgc3lzdGVtIG9yIGFnYWluc3QgbmV0d29ya2VkIHRpbWUKK3NlcnZlcnMgdXNpbmcgTlRQLCBidXQgYWxsIHRoZXkgZG8gYmFzaWNhbGx5IGlzIHVwZGF0ZSBhbiBvZmZzZXQgYWdhaW5zdAordGhlIGNsb2NrIHNvdXJjZSwgd2hpY2ggcHJvdmlkZXMgdGhlIGZ1bmRhbWVudGFsIHRpbWVsaW5lIGZvciB0aGUgc3lzdGVtLgorVGhlc2UgbWVhc3VyZXMgZG9lcyBub3QgYWZmZWN0IHRoZSBjbG9jayBzb3VyY2UgcGVyIHNlLCB0aGV5IG9ubHkgYWRhcHQgdGhlCitzeXN0ZW0gdG8gdGhlIHNob3J0Y29taW5ncyBvZiBpdC4KKworVGhlIGNsb2NrIHNvdXJjZSBzdHJ1Y3Qgc2hhbGwgcHJvdmlkZSBtZWFucyB0byB0cmFuc2xhdGUgdGhlIHByb3ZpZGVkIGNvdW50ZXIKK2ludG8gYSBuYW5vc2Vjb25kIHZhbHVlIGFzIGFuIHVuc2lnbmVkIGxvbmcgbG9uZyAodW5zaWduZWQgNjQgYml0KSBudW1iZXIuCitTaW5jZSB0aGlzIG9wZXJhdGlvbiBtYXkgYmUgaW52b2tlZCB2ZXJ5IG9mdGVuLCBkb2luZyB0aGlzIGluIGEgc3RyaWN0CittYXRoZW1hdGljYWwgc2Vuc2UgaXMgbm90IGRlc2lyYWJsZTogaW5zdGVhZCB0aGUgbnVtYmVyIGlzIHRha2VuIGFzIGNsb3NlIGFzCitwb3NzaWJsZSB0byBhIG5hbm9zZWNvbmQgdmFsdWUgdXNpbmcgb25seSB0aGUgYXJpdGhtZXRpYyBvcGVyYXRpb25zCittdWx0aXBseSBhbmQgc2hpZnQsIHNvIGluIGNsb2Nrc291cmNlX2N5YzJucygpIHlvdSBmaW5kOgorCisgIG5zIH49IChjbG9ja3NvdXJjZSAqIG11bHQpID4+IHNoaWZ0CisKK1lvdSB3aWxsIGZpbmQgYSBudW1iZXIgb2YgaGVscGVyIGZ1bmN0aW9ucyBpbiB0aGUgY2xvY2sgc291cmNlIGNvZGUgaW50ZW5kZWQKK3RvIGFpZCBpbiBwcm92aWRpbmcgdGhlc2UgbXVsdCBhbmQgc2hpZnQgdmFsdWVzLCBzdWNoIGFzCitjbG9ja3NvdXJjZV9raHoybXVsdCgpLCBjbG9ja3NvdXJjZV9oejJtdWx0KCkgdGhhdCBoZWxwIGRldGVybWluZSB0aGUKK211bHQgZmFjdG9yIGZyb20gYSBmaXhlZCBzaGlmdCwgYW5kIGNsb2Nrc291cmNlX3JlZ2lzdGVyX2h6KCkgYW5kCitjbG9ja3NvdXJjZV9yZWdpc3Rlcl9raHooKSB3aGljaCB3aWxsIGhlbHAgb3V0IGFzc2lnbmluZyBib3RoIHNoaWZ0IGFuZCBtdWx0CitmYWN0b3JzIHVzaW5nIHRoZSBmcmVxdWVuY3kgb2YgdGhlIGNsb2NrIHNvdXJjZSBhcyB0aGUgb25seSBpbnB1dC4KKworRm9yIHJlYWwgc2ltcGxlIGNsb2NrIHNvdXJjZXMgYWNjZXNzZWQgZnJvbSBhIHNpbmdsZSBJL08gbWVtb3J5IGxvY2F0aW9uCit0aGVyZSBpcyBub3dhZGF5cyBldmVuIGNsb2Nrc291cmNlX21taW9faW5pdCgpIHdoaWNoIHdpbGwgdGFrZSBhIG1lbW9yeQorbG9jYXRpb24sIGJpdCB3aWR0aCwgYSBwYXJhbWV0ZXIgdGVsbGluZyB3aGV0aGVyIHRoZSBjb3VudGVyIGluIHRoZQorcmVnaXN0ZXIgY291bnRzIHVwIG9yIGRvd24sIGFuZCB0aGUgdGltZXIgY2xvY2sgcmF0ZSwgYW5kIHRoZW4gY29uanVyZSBhbGwKK25lY2Vzc2FyeSBwYXJhbWV0ZXJzLgorCitTaW5jZSBhIDMyLWJpdCBjb3VudGVyIGF0IHNheSAxMDAgTUh6IHdpbGwgd3JhcCBhcm91bmQgdG8gemVybyBhZnRlciBzb21lIDQzCitzZWNvbmRzLCB0aGUgY29kZSBoYW5kbGluZyB0aGUgY2xvY2sgc291cmNlIHdpbGwgaGF2ZSB0byBjb21wZW5zYXRlIGZvciB0aGlzLgorVGhhdCBpcyB0aGUgcmVhc29uIHdoeSB0aGUgY2xvY2sgc291cmNlIHN0cnVjdCBhbHNvIGNvbnRhaW5zIGEgJ21hc2snCittZW1iZXIgdGVsbGluZyBob3cgbWFueSBiaXRzIG9mIHRoZSBzb3VyY2UgYXJlIHZhbGlkLiBUaGlzIHdheSB0aGUgdGltZWtlZXBpbmcKK2NvZGUga25vd3Mgd2hlbiB0aGUgY291bnRlciB3aWxsIHdyYXAgYXJvdW5kIGFuZCBjYW4gaW5zZXJ0IHRoZSBuZWNlc3NhcnkKK2NvbXBlbnNhdGlvbiBjb2RlIG9uIGJvdGggc2lkZXMgb2YgdGhlIHdyYXAgcG9pbnQgc28gdGhhdCB0aGUgc3lzdGVtIHRpbWVsaW5lCityZW1haW5zIG1vbm90b25pYy4KKworCitDbG9jayBldmVudHMKKy0tLS0tLS0tLS0tLQorCitDbG9jayBldmVudHMgYXJlIHRoZSBjb25jZXB0dWFsIHJldmVyc2Ugb2YgY2xvY2sgc291cmNlczogdGhleSB0YWtlIGEKK2Rlc2lyZWQgdGltZSBzcGVjaWZpY2F0aW9uIHZhbHVlIGFuZCBjYWxjdWxhdGUgdGhlIHZhbHVlcyB0byBwb2tlIGludG8KK2hhcmR3YXJlIHRpbWVyIHJlZ2lzdGVycy4KKworQ2xvY2sgZXZlbnRzIGFyZSBvcnRob2dvbmFsIHRvIGNsb2NrIHNvdXJjZXMuIFRoZSBzYW1lIGhhcmR3YXJlCithbmQgcmVnaXN0ZXIgcmFuZ2UgbWF5IGJlIHVzZWQgZm9yIHRoZSBjbG9jayBldmVudCwgYnV0IGl0IGlzIGVzc2VudGlhbGx5CithIGRpZmZlcmVudCB0aGluZy4gVGhlIGhhcmR3YXJlIGRyaXZpbmcgY2xvY2sgZXZlbnRzIGhhcyB0byBiZSBhYmxlIHRvCitmaXJlIGludGVycnVwdHMsIHNvIGFzIHRvIHRyaWdnZXIgZXZlbnRzIG9uIHRoZSBzeXN0ZW0gdGltZWxpbmUuIE9uIGFuIFNNUAorc3lzdGVtLCBpdCBpcyBpZGVhbCAoYW5kIGN1c3RvbWFyeSkgdG8gaGF2ZSBvbmUgc3VjaCBldmVudCBkcml2aW5nIHRpbWVyIHBlcgorQ1BVIGNvcmUsIHNvIHRoYXQgZWFjaCBjb3JlIGNhbiB0cmlnZ2VyIGV2ZW50cyBpbmRlcGVuZGVudGx5IG9mIGFueSBvdGhlcgorY29yZS4KKworWW91IHdpbGwgbm90aWNlIHRoYXQgdGhlIGNsb2NrIGV2ZW50IGRldmljZSBjb2RlIGlzIGJhc2VkIG9uIHRoZSBzYW1lIGJhc2ljCitpZGVhIGFib3V0IHRyYW5zbGF0aW5nIGNvdW50ZXJzIHRvIG5hbm9zZWNvbmRzIHVzaW5nIG11bHQgYW5kIHNoaWZ0Cithcml0aG1ldGljLCBhbmQgeW91IGZpbmQgdGhlIHNhbWUgZmFtaWx5IG9mIGhlbHBlciBmdW5jdGlvbnMgYWdhaW4gZm9yCithc3NpZ25pbmcgdGhlc2UgdmFsdWVzLiBUaGUgY2xvY2sgZXZlbnQgZHJpdmVyIGRvZXMgbm90IG5lZWQgYSAnbWFzaycKK2F0dHJpYnV0ZSBob3dldmVyOiB0aGUgc3lzdGVtIHdpbGwgbm90IHRyeSB0byBwbGFuIGV2ZW50cyBiZXlvbmQgdGhlIHRpbWUKK2hvcml6b24gb2YgdGhlIGNsb2NrIGV2ZW50LgorCisKK3NjaGVkX2Nsb2NrKCkKKy0tLS0tLS0tLS0tLS0KKworSW4gYWRkaXRpb24gdG8gdGhlIGNsb2NrIHNvdXJjZXMgYW5kIGNsb2NrIGV2ZW50cyB0aGVyZSBpcyBhIHNwZWNpYWwgd2VhaworZnVuY3Rpb24gaW4gdGhlIGtlcm5lbCBjYWxsZWQgc2NoZWRfY2xvY2soKS4gVGhpcyBmdW5jdGlvbiBzaGFsbCByZXR1cm4gdGhlCitudW1iZXIgb2YgbmFub3NlY29uZHMgc2luY2UgdGhlIHN5c3RlbSB3YXMgc3RhcnRlZC4gQW4gYXJjaGl0ZWN0dXJlIG1heSBvcgorbWF5IG5vdCBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIG9mIHNjaGVkX2Nsb2NrKCkgb24gaXRzIG93bi4gSWYgYSBsb2NhbAoraW1wbGVtZW50YXRpb24gaXMgbm90IHByb3ZpZGVkLCB0aGUgc3lzdGVtIGppZmZ5IGNvdW50ZXIgd2lsbCBiZSB1c2VkIGFzCitzY2hlZF9jbG9jaygpLgorCitBcyB0aGUgbmFtZSBzdWdnZXN0cywgc2NoZWRfY2xvY2soKSBpcyB1c2VkIGZvciBzY2hlZHVsaW5nIHRoZSBzeXN0ZW0sCitkZXRlcm1pbmluZyB0aGUgYWJzb2x1dGUgdGltZXNsaWNlIGZvciBhIGNlcnRhaW4gcHJvY2VzcyBpbiB0aGUgQ0ZTIHNjaGVkdWxlcgorZm9yIGV4YW1wbGUuIEl0IGlzIGFsc28gdXNlZCBmb3IgcHJpbnRrIHRpbWVzdGFtcHMgd2hlbiB5b3UgaGF2ZSBzZWxlY3RlZCB0bworaW5jbHVkZSB0aW1lIGluZm9ybWF0aW9uIGluIHByaW50ayBmb3IgdGhpbmdzIGxpa2UgYm9vdGNoYXJ0cy4KKworQ29tcGFyZWQgdG8gY2xvY2sgc291cmNlcywgc2NoZWRfY2xvY2soKSBoYXMgdG8gYmUgdmVyeSBmYXN0OiBpdCBpcyBjYWxsZWQKK211Y2ggbW9yZSBvZnRlbiwgZXNwZWNpYWxseSBieSB0aGUgc2NoZWR1bGVyLiBJZiB5b3UgaGF2ZSB0byBkbyB0cmFkZS1vZmZzCitiZXR3ZWVuIGFjY3VyYWN5IGNvbXBhcmVkIHRvIHRoZSBjbG9jayBzb3VyY2UsIHlvdSBtYXkgc2FjcmlmaWNlIGFjY3VyYWN5Citmb3Igc3BlZWQgaW4gc2NoZWRfY2xvY2soKS4gSXQgaG93ZXZlciByZXF1aXJlcyBzb21lIG9mIHRoZSBzYW1lIGJhc2ljCitjaGFyYWN0ZXJpc3RpY3MgYXMgdGhlIGNsb2NrIHNvdXJjZSwgaS5lLiBpdCBzaG91bGQgYmUgbW9ub3RvbmljLgorCitUaGUgc2NoZWRfY2xvY2soKSBmdW5jdGlvbiBtYXkgd3JhcCBvbmx5IG9uIHVuc2lnbmVkIGxvbmcgbG9uZyBib3VuZGFyaWVzLAoraS5lLiBhZnRlciA2NCBiaXRzLiBTaW5jZSB0aGlzIGlzIGEgbmFub3NlY29uZCB2YWx1ZSB0aGlzIHdpbGwgbWVhbiBpdCB3cmFwcworYWZ0ZXIgY2lyY2EgNTg1IHllYXJzLiAoRm9yIG1vc3QgcHJhY3RpY2FsIHN5c3RlbXMgdGhpcyBtZWFucyAibmV2ZXIiLikKKworSWYgYW4gYXJjaGl0ZWN0dXJlIGRvZXMgbm90IHByb3ZpZGUgaXRzIG93biBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLAoraXQgd2lsbCBmYWxsIGJhY2sgdG8gdXNpbmcgamlmZmllcywgbWFraW5nIGl0cyBtYXhpbXVtIHJlc29sdXRpb24gMS9IWiBvZiB0aGUKK2ppZmZ5IGZyZXF1ZW5jeSBmb3IgdGhlIGFyY2hpdGVjdHVyZS4gVGhpcyB3aWxsIGFmZmVjdCBzY2hlZHVsaW5nIGFjY3VyYWN5CithbmQgd2lsbCBsaWtlbHkgc2hvdyB1cCBpbiBzeXN0ZW0gYmVuY2htYXJrcy4KKworVGhlIGNsb2NrIGRyaXZpbmcgc2NoZWRfY2xvY2soKSBtYXkgc3RvcCBvciByZXNldCB0byB6ZXJvIGR1cmluZyBzeXN0ZW0KK3N1c3BlbmQvc2xlZXAuIFRoaXMgZG9lcyBub3QgbWF0dGVyIHRvIHRoZSBmdW5jdGlvbiBpdCBzZXJ2ZXMgb2Ygc2NoZWR1bGluZworZXZlbnRzIG9uIHRoZSBzeXN0ZW0uIEhvd2V2ZXIgaXQgbWF5IHJlc3VsdCBpbiBpbnRlcmVzdGluZyB0aW1lc3RhbXBzIGluCitwcmludGsoKS4KKworVGhlIHNjaGVkX2Nsb2NrKCkgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxhYmxlIGluIGFueSBjb250ZXh0LCBJUlEtIGFuZAorTk1JLXNhZmUgYW5kIHJldHVybiBhIHNhbmUgdmFsdWUgaW4gYW55IGNvbnRleHQuCisKK1NvbWUgYXJjaGl0ZWN0dXJlcyBtYXkgaGF2ZSBhIGxpbWl0ZWQgc2V0IG9mIHRpbWUgc291cmNlcyBhbmQgbGFjayBhIG5pY2UKK2NvdW50ZXIgdG8gZGVyaXZlIGEgNjQtYml0IG5hbm9zZWNvbmQgdmFsdWUsIHNvIGZvciBleGFtcGxlIG9uIHRoZSBBUk0KK2FyY2hpdGVjdHVyZSwgc3BlY2lhbCBoZWxwZXIgZnVuY3Rpb25zIGhhdmUgYmVlbiBjcmVhdGVkIHRvIHByb3ZpZGUgYQorc2NoZWRfY2xvY2soKSBuYW5vc2Vjb25kIGJhc2UgZnJvbSBhIDE2LSBvciAzMi1iaXQgY291bnRlci4gU29tZXRpbWVzIHRoZQorc2FtZSBjb3VudGVyIHRoYXQgaXMgYWxzbyB1c2VkIGFzIGNsb2NrIHNvdXJjZSBpcyB1c2VkIGZvciB0aGlzIHB1cnBvc2UuCisKK09uIFNNUCBzeXN0ZW1zLCBpdCBpcyBjcnVjaWFsIGZvciBwZXJmb3JtYW5jZSB0aGF0IHNjaGVkX2Nsb2NrKCkgY2FuIGJlIGNhbGxlZAoraW5kZXBlbmRlbnRseSBvbiBlYWNoIENQVSB3aXRob3V0IGFueSBzeW5jaHJvbml6YXRpb24gcGVyZm9ybWFuY2UgaGl0cy4KK1NvbWUgaGFyZHdhcmUgKHN1Y2ggYXMgdGhlIHg4NiBUU0MpIHdpbGwgY2F1c2UgdGhlIHNjaGVkX2Nsb2NrKCkgZnVuY3Rpb24gdG8KK2RyaWZ0IGJldHdlZW4gdGhlIENQVXMgb24gdGhlIHN5c3RlbS4gVGhlIGtlcm5lbCBjYW4gd29yayBhcm91bmQgdGhpcyBieQorZW5hYmxpbmcgdGhlIENPTkZJR19IQVZFX1VOU1RBQkxFX1NDSEVEX0NMT0NLIG9wdGlvbi4gVGhpcyBpcyBhbm90aGVyIGFzcGVjdAordGhhdCBtYWtlcyBzY2hlZF9jbG9jaygpIGRpZmZlcmVudCBmcm9tIHRoZSBvcmRpbmFyeSBjbG9jayBzb3VyY2UuCisKKworRGVsYXkgdGltZXJzIChzb21lIGFyY2hpdGVjdHVyZXMgb25seSkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK09uIHN5c3RlbXMgd2l0aCB2YXJpYWJsZSBDUFUgZnJlcXVlbmN5LCB0aGUgdmFyaW91cyBrZXJuZWwgZGVsYXkoKSBmdW5jdGlvbnMKK3dpbGwgc29tZXRpbWVzIGJlaGF2ZSBzdHJhbmdlbHkuIEJhc2ljYWxseSB0aGVzZSBkZWxheXMgdXN1YWxseSB1c2UgYSBoYXJkCitsb29wIHRvIGRlbGF5IGEgY2VydGFpbiBudW1iZXIgb2YgamlmZnkgZnJhY3Rpb25zIHVzaW5nIGEgImxwaiIgKGxvb3BzIHBlcgoramlmZnkpIHZhbHVlLCBjYWxpYnJhdGVkIG9uIGJvb3QuCisKK0xldCdzIGhvcGUgdGhhdCB5b3VyIHN5c3RlbSBpcyBydW5uaW5nIG9uIG1heGltdW0gZnJlcXVlbmN5IHdoZW4gdGhpcyB2YWx1ZQoraXMgY2FsaWJyYXRlZDogYXMgYW4gZWZmZWN0IHdoZW4gdGhlIGZyZXF1ZW5jeSBpcyBnZWFyZWQgZG93biB0byBoYWxmIHRoZQorZnVsbCBmcmVxdWVuY3ksIGFueSBkZWxheSgpIHdpbGwgYmUgdHdpY2UgYXMgbG9uZy4gVXN1YWxseSB0aGlzIGRvZXMgbm90CitodXJ0LCBhcyB5b3UncmUgY29tbW9ubHkgcmVxdWVzdGluZyB0aGF0IGFtb3VudCBvZiBkZWxheSAqb3IgbW9yZSouIEJ1dAorYmFzaWNhbGx5IHRoZSBzZW1hbnRpY3MgYXJlIHF1aXRlIHVucHJlZGljdGFibGUgb24gc3VjaCBzeXN0ZW1zLgorCitFbnRlciB0aW1lci1iYXNlZCBkZWxheXMuIFVzaW5nIHRoZXNlLCBhIHRpbWVyIHJlYWQgbWF5IGJlIHVzZWQgaW5zdGVhZCBvZgorYSBoYXJkLWNvZGVkIGxvb3AgZm9yIHByb3ZpZGluZyB0aGUgZGVzaXJlZCBkZWxheS4KKworVGhpcyBpcyBkb25lIGJ5IGRlY2xhcmluZyBhIHN0cnVjdCBkZWxheV90aW1lciBhbmQgYXNzaWduaW5nIHRoZSBhcHByb3ByaWF0ZQorZnVuY3Rpb24gcG9pbnRlcnMgYW5kIHJhdGUgc2V0dGluZ3MgZm9yIHRoaXMgZGVsYXkgdGltZXIuCisKK1RoaXMgaXMgYXZhaWxhYmxlIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcyBsaWtlIE9wZW5SSVNDIG9yIEFSTS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGltZXJzL3RpbWVyX3N0YXRzLnR4dCBiL0RvY3VtZW50YXRpb24vdGltZXJzL3RpbWVyX3N0YXRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTgzNWVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi90aW1lcnMvdGltZXJfc3RhdHMudHh0CkBAIC0wLDAgKzEsNzMgQEAKK3RpbWVyX3N0YXRzIC0gdGltZXIgdXNhZ2Ugc3RhdGlzdGljcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RpbWVyX3N0YXRzIGlzIGEgZGVidWdnaW5nIGZhY2lsaXR5IHRvIG1ha2UgdGhlIHRpbWVyIChhYil1c2FnZSBpbiBhIExpbnV4CitzeXN0ZW0gdmlzaWJsZSB0byBrZXJuZWwgYW5kIHVzZXJzcGFjZSBkZXZlbG9wZXJzLiBJZiBlbmFibGVkIGluIHRoZSBjb25maWcKK2J1dCBub3QgdXNlZCBpdCBoYXMgYWxtb3N0IHplcm8gcnVudGltZSBvdmVyaGVhZCwgYW5kIGEgcmVsYXRpdmVseSBzbWFsbAorZGF0YSBzdHJ1Y3R1cmUgb3ZlcmhlYWQuIEV2ZW4gaWYgY29sbGVjdGlvbiBpcyBlbmFibGVkIHJ1bnRpbWUgYWxsIHRoZQorbG9ja2luZyBpcyBwZXItQ1BVIGFuZCBsb29rdXAgaXMgaGFzaGVkLgorCit0aW1lcl9zdGF0cyBzaG91bGQgYmUgdXNlZCBieSBrZXJuZWwgYW5kIHVzZXJzcGFjZSBkZXZlbG9wZXJzIHRvIHZlcmlmeSB0aGF0Cit0aGVpciBjb2RlIGRvZXMgbm90IG1ha2UgdW5kdWx5IHVzZSBvZiB0aW1lcnMuIFRoaXMgaGVscHMgdG8gYXZvaWQgdW5uZWNlc3NhcnkKK3dha2V1cHMsIHdoaWNoIHNob3VsZCBiZSBhdm9pZGVkIHRvIG9wdGltaXplIHBvd2VyIGNvbnN1bXB0aW9uLgorCitJdCBjYW4gYmUgZW5hYmxlZCBieSBDT05GSUdfVElNRVJfU1RBVFMgaW4gdGhlICJLZXJuZWwgaGFja2luZyIgY29uZmlndXJhdGlvbgorc2VjdGlvbi4KKwordGltZXJfc3RhdHMgY29sbGVjdHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRpbWVyIGV2ZW50cyB3aGljaCBhcmUgZmlyZWQgaW4gYQorTGludXggc3lzdGVtIG92ZXIgYSBzYW1wbGUgcGVyaW9kOgorCistIHRoZSBwaWQgb2YgdGhlIHRhc2socHJvY2Vzcykgd2hpY2ggaW5pdGlhbGl6ZWQgdGhlIHRpbWVyCistIHRoZSBuYW1lIG9mIHRoZSBwcm9jZXNzIHdoaWNoIGluaXRpYWxpemVkIHRoZSB0aW1lcgorLSB0aGUgZnVuY3Rpb24gd2hlcmUgdGhlIHRpbWVyIHdhcyBpbml0aWFsaXplZAorLSB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gd2hpY2ggaXMgYXNzb2NpYXRlZCB0byB0aGUgdGltZXIKKy0gdGhlIG51bWJlciBvZiBldmVudHMgKGNhbGxiYWNrcykKKwordGltZXJfc3RhdHMgYWRkcyBhbiBlbnRyeSB0byAvcHJvYzogL3Byb2MvdGltZXJfc3RhdHMKKworVGhpcyBlbnRyeSBpcyB1c2VkIHRvIGNvbnRyb2wgdGhlIHN0YXRpc3RpY3MgZnVuY3Rpb25hbGl0eSBhbmQgdG8gcmVhZCBvdXQgdGhlCitzYW1wbGVkIGluZm9ybWF0aW9uLgorCitUaGUgdGltZXJfc3RhdHMgZnVuY3Rpb25hbGl0eSBpcyBpbmFjdGl2ZSBvbiBib290dXAuCisKK1RvIGFjdGl2YXRlIGEgc2FtcGxlIHBlcmlvZCBpc3N1ZToKKyMgZWNobyAxID4vcHJvYy90aW1lcl9zdGF0cworCitUbyBzdG9wIGEgc2FtcGxlIHBlcmlvZCBpc3N1ZToKKyMgZWNobyAwID4vcHJvYy90aW1lcl9zdGF0cworCitUaGUgc3RhdGlzdGljcyBjYW4gYmUgcmV0cmlldmVkIGJ5OgorIyBjYXQgL3Byb2MvdGltZXJfc3RhdHMKKworV2hpbGUgc2FtcGxpbmcgaXMgZW5hYmxlZCwgZWFjaCByZWFkb3V0IGZyb20gL3Byb2MvdGltZXJfc3RhdHMgd2lsbCBzZWUKK25ld2x5IHVwZGF0ZWQgc3RhdGlzdGljcy4gT25jZSBzYW1wbGluZyBpcyBkaXNhYmxlZCwgdGhlIHNhbXBsZWQgaW5mb3JtYXRpb24KK2lzIGtlcHQgdW50aWwgYSBuZXcgc2FtcGxlIHBlcmlvZCBpcyBzdGFydGVkLiBUaGlzIGFsbG93cyBtdWx0aXBsZSByZWFkb3V0cy4KKworU2FtcGxlIG91dHB1dCBvZiAvcHJvYy90aW1lcl9zdGF0czoKKworVGltZXJzdGF0cyBzYW1wbGUgcGVyaW9kOiAzLjg4ODc3MCBzCisgIDEyLCAgICAgMCBzd2FwcGVyICAgICAgICAgIGhydGltZXJfc3RvcF9zY2hlZF90aWNrIChocnRpbWVyX3NjaGVkX3RpY2spCisgIDE1LCAgICAgMSBzd2FwcGVyICAgICAgICAgIGhjZF9zdWJtaXRfdXJiIChyaF90aW1lcl9mdW5jKQorICAgNCwgICA5NTkga2VkYWMgICAgICAgICAgICBzY2hlZHVsZV90aW1lb3V0IChwcm9jZXNzX3RpbWVvdXQpCisgICAxLCAgICAgMCBzd2FwcGVyICAgICAgICAgIHBhZ2Vfd3JpdGViYWNrX2luaXQgKHdiX3RpbWVyX2ZuKQorICAyOCwgICAgIDAgc3dhcHBlciAgICAgICAgICBocnRpbWVyX3N0b3Bfc2NoZWRfdGljayAoaHJ0aW1lcl9zY2hlZF90aWNrKQorICAyMiwgIDI5NDggSVJRIDQgICAgICAgICAgICB0dHlfZmxpcF9idWZmZXJfcHVzaCAoZGVsYXllZF93b3JrX3RpbWVyX2ZuKQorICAgMywgIDMxMDAgYmFzaCAgICAgICAgICAgICBzY2hlZHVsZV90aW1lb3V0IChwcm9jZXNzX3RpbWVvdXQpCisgICAxLCAgICAgMSBzd2FwcGVyICAgICAgICAgIHF1ZXVlX2RlbGF5ZWRfd29ya19vbiAoZGVsYXllZF93b3JrX3RpbWVyX2ZuKQorICAgMSwgICAgIDEgc3dhcHBlciAgICAgICAgICBxdWV1ZV9kZWxheWVkX3dvcmtfb24gKGRlbGF5ZWRfd29ya190aW1lcl9mbikKKyAgIDEsICAgICAxIHN3YXBwZXIgICAgICAgICAgbmVpZ2hfdGFibGVfaW5pdF9ub19uZXRsaW5rIChuZWlnaF9wZXJpb2RpY190aW1lcikKKyAgIDEsICAyMjkyIGlwICAgICAgICAgICAgICAgX19uZXRkZXZfd2F0Y2hkb2dfdXAgKGRldl93YXRjaGRvZykKKyAgIDEsICAgIDIzIGV2ZW50cy8xICAgICAgICAgZG9fY2FjaGVfY2xlYW4gKGRlbGF5ZWRfd29ya190aW1lcl9mbikKKzkwIHRvdGFsIGV2ZW50cywgMzAuMCBldmVudHMvc2VjCisKK1RoZSBmaXJzdCBjb2x1bW4gaXMgdGhlIG51bWJlciBvZiBldmVudHMsIHRoZSBzZWNvbmQgY29sdW1uIHRoZSBwaWQsIHRoZSB0aGlyZAorY29sdW1uIGlzIHRoZSBuYW1lIG9mIHRoZSBwcm9jZXNzLiBUaGUgZm9ydGggY29sdW1uIHNob3dzIHRoZSBmdW5jdGlvbiB3aGljaAoraW5pdGlhbGl6ZWQgdGhlIHRpbWVyIGFuZCBpbiBwYXJlbnRoZXNpcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gd2hpY2ggd2FzCitleGVjdXRlZCBvbiBleHBpcnkuCisKKyAgICBUaG9tYXMsIEluZ28KKworQWRkZWQgZmxhZyB0byBpbmRpY2F0ZSAnZGVmZXJyYWJsZSB0aW1lcicgaW4gL3Byb2MvdGltZXJfc3RhdHMuIEEgZGVmZXJyYWJsZQordGltZXIgd2lsbCBhcHBlYXIgYXMgZm9sbG93cworICAxMEQsICAgICAxIHN3YXBwZXIgICAgICAgICAgcXVldWVfZGVsYXllZF93b3JrX29uIChkZWxheWVkX3dvcmtfdGltZXJfZm4pCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGltZXJzL3RpbWVycy1ob3d0by50eHQgYi9Eb2N1bWVudGF0aW9uL3RpbWVycy90aW1lcnMtaG93dG8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzOGY4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3RpbWVycy90aW1lcnMtaG93dG8udHh0CkBAIC0wLDAgKzEsMTA1IEBACitkZWxheXMgLSBJbmZvcm1hdGlvbiBvbiB0aGUgdmFyaW91cyBrZXJuZWwgZGVsYXkgLyBzbGVlcCBtZWNoYW5pc21zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZG9jdW1lbnQgc2Vla3MgdG8gYW5zd2VyIHRoZSBjb21tb24gcXVlc3Rpb246ICJXaGF0IGlzIHRoZQorUmlnaHRXYXkgKFRNKSB0byBpbnNlcnQgYSBkZWxheT8iCisKK1RoaXMgcXVlc3Rpb24gaXMgbW9zdCBvZnRlbiBmYWNlZCBieSBkcml2ZXIgd3JpdGVycyB3aG8gaGF2ZSB0bworZGVhbCB3aXRoIGhhcmR3YXJlIGRlbGF5cyBhbmQgd2hvIG1heSBub3QgYmUgdGhlIG1vc3QgaW50aW1hdGVseQorZmFtaWxpYXIgd2l0aCB0aGUgaW5uZXIgd29ya2luZ3Mgb2YgdGhlIExpbnV4IEtlcm5lbC4KKworCitJbnNlcnRpbmcgRGVsYXlzCistLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBmaXJzdCwgYW5kIG1vc3QgaW1wb3J0YW50LCBxdWVzdGlvbiB5b3UgbmVlZCB0byBhc2sgaXMgIklzIG15Citjb2RlIGluIGFuIGF0b21pYyBjb250ZXh0PyIgIFRoaXMgc2hvdWxkIGJlIGZvbGxvd2VkIGNsb3NlbHkgYnkgIkRvZXMKK2l0IHJlYWxseSBuZWVkIHRvIGRlbGF5IGluIGF0b21pYyBjb250ZXh0PyIgSWYgc28uLi4KKworQVRPTUlDIENPTlRFWFQ6CisJWW91IG11c3QgdXNlIHRoZSAqZGVsYXkgZmFtaWx5IG9mIGZ1bmN0aW9ucy4gVGhlc2UKKwlmdW5jdGlvbnMgdXNlIHRoZSBqaWZmaWUgZXN0aW1hdGlvbiBvZiBjbG9jayBzcGVlZAorCWFuZCB3aWxsIGJ1c3kgd2FpdCBmb3IgZW5vdWdoIGxvb3AgY3ljbGVzIHRvIGFjaGlldmUKKwl0aGUgZGVzaXJlZCBkZWxheToKKworCW5kZWxheSh1bnNpZ25lZCBsb25nIG5zZWNzKQorCXVkZWxheSh1bnNpZ25lZCBsb25nIHVzZWNzKQorCW1kZWxheSh1bnNpZ25lZCBsb25nIG1zZWNzKQorCisJdWRlbGF5IGlzIHRoZSBnZW5lcmFsbHkgcHJlZmVycmVkIEFQSTsgbmRlbGF5LWxldmVsCisJcHJlY2lzaW9uIG1heSBub3QgYWN0dWFsbHkgZXhpc3Qgb24gbWFueSBub24tUEMgZGV2aWNlcy4KKworCW1kZWxheSBpcyBtYWNybyB3cmFwcGVyIGFyb3VuZCB1ZGVsYXksIHRvIGFjY291bnQgZm9yCisJcG9zc2libGUgb3ZlcmZsb3cgd2hlbiBwYXNzaW5nIGxhcmdlIGFyZ3VtZW50cyB0byB1ZGVsYXkuCisJSW4gZ2VuZXJhbCwgdXNlIG9mIG1kZWxheSBpcyBkaXNjb3VyYWdlZCBhbmQgY29kZSBzaG91bGQKKwliZSByZWZhY3RvcmVkIHRvIGFsbG93IGZvciB0aGUgdXNlIG9mIG1zbGVlcC4KKworTk9OLUFUT01JQyBDT05URVhUOgorCVlvdSBzaG91bGQgdXNlIHRoZSAqc2xlZXBbX3JhbmdlXSBmYW1pbHkgb2YgZnVuY3Rpb25zLgorCVRoZXJlIGFyZSBhIGZldyBtb3JlIG9wdGlvbnMgaGVyZSwgd2hpbGUgYW55IG9mIHRoZW0gbWF5CisJd29yayBjb3JyZWN0bHksIHVzaW5nIHRoZSAicmlnaHQiIHNsZWVwIGZ1bmN0aW9uIHdpbGwKKwloZWxwIHRoZSBzY2hlZHVsZXIsIHBvd2VyIG1hbmFnZW1lbnQsIGFuZCBqdXN0IG1ha2UgeW91cgorCWRyaXZlciBiZXR0ZXIgOikKKworCS0tIEJhY2tlZCBieSBidXN5LXdhaXQgbG9vcDoKKwkJdWRlbGF5KHVuc2lnbmVkIGxvbmcgdXNlY3MpCisJLS0gQmFja2VkIGJ5IGhydGltZXJzOgorCQl1c2xlZXBfcmFuZ2UodW5zaWduZWQgbG9uZyBtaW4sIHVuc2lnbmVkIGxvbmcgbWF4KQorCS0tIEJhY2tlZCBieSBqaWZmaWVzIC8gbGVnYWN5X3RpbWVycworCQltc2xlZXAodW5zaWduZWQgbG9uZyBtc2VjcykKKwkJbXNsZWVwX2ludGVycnVwdGlibGUodW5zaWduZWQgbG9uZyBtc2VjcykKKworCVVubGlrZSB0aGUgKmRlbGF5IGZhbWlseSwgdGhlIHVuZGVybHlpbmcgbWVjaGFuaXNtCisJZHJpdmluZyBlYWNoIG9mIHRoZXNlIGNhbGxzIHZhcmllcywgdGh1cyB0aGVyZSBhcmUKKwlxdWlya3MgeW91IHNob3VsZCBiZSBhd2FyZSBvZi4KKworCisJU0xFRVBJTkcgRk9SICJBIEZFVyIgVVNFQ1MgKCA8IH4xMHVzPyApOgorCQkqIFVzZSB1ZGVsYXkKKworCQktIFdoeSBub3QgdXNsZWVwPworCQkJT24gc2xvd2VyIHN5c3RlbXMsIChlbWJlZGRlZCwgT1IgcGVyaGFwcyBhIHNwZWVkLQorCQkJc3RlcHBlZCBQQyEpIHRoZSBvdmVyaGVhZCBvZiBzZXR0aW5nIHVwIHRoZSBocnRpbWVycworCQkJZm9yIHVzbGVlcCAqbWF5KiBub3QgYmUgd29ydGggaXQuIFN1Y2ggYW4gZXZhbHVhdGlvbgorCQkJd2lsbCBvYnZpb3VzbHkgZGVwZW5kIG9uIHlvdXIgc3BlY2lmaWMgc2l0dWF0aW9uLCBidXQKKwkJCWl0IGlzIHNvbWV0aGluZyB0byBiZSBhd2FyZSBvZi4KKworCVNMRUVQSU5HIEZPUiB+VVNFQ1MgT1IgU01BTEwgTVNFQ1MgKCAxMHVzIC0gMjBtcyk6CisJCSogVXNlIHVzbGVlcF9yYW5nZQorCisJCS0gV2h5IG5vdCBtc2xlZXAgZm9yICgxbXMgLSAyMG1zKT8KKwkJCUV4cGxhaW5lZCBvcmlnaW5hbGx5IGhlcmU6CisJCQkJaHR0cDovL2xrbWwub3JnL2xrbWwvMjAwNy84LzMvMjUwCisJCQltc2xlZXAoMX4yMCkgbWF5IG5vdCBkbyB3aGF0IHRoZSBjYWxsZXIgaW50ZW5kcywgYW5kCisJCQl3aWxsIG9mdGVuIHNsZWVwIGxvbmdlciAofjIwIG1zIGFjdHVhbCBzbGVlcCBmb3IgYW55CisJCQl2YWx1ZSBnaXZlbiBpbiB0aGUgMX4yMG1zIHJhbmdlKS4gSW4gbWFueSBjYXNlcyB0aGlzCisJCQlpcyBub3QgdGhlIGRlc2lyZWQgYmVoYXZpb3IuCisKKwkJLSBXaHkgaXMgdGhlcmUgbm8gInVzbGVlcCIgLyBXaGF0IGlzIGEgZ29vZCByYW5nZT8KKwkJCVNpbmNlIHVzbGVlcF9yYW5nZSBpcyBidWlsdCBvbiB0b3Agb2YgaHJ0aW1lcnMsIHRoZQorCQkJd2FrZXVwIHdpbGwgYmUgdmVyeSBwcmVjaXNlIChpc2gpLCB0aHVzIGEgc2ltcGxlCisJCQl1c2xlZXAgZnVuY3Rpb24gd291bGQgbGlrZWx5IGludHJvZHVjZSBhIGxhcmdlIG51bWJlcgorCQkJb2YgdW5kZXNpcmVkIGludGVycnVwdHMuCisKKwkJCVdpdGggdGhlIGludHJvZHVjdGlvbiBvZiBhIHJhbmdlLCB0aGUgc2NoZWR1bGVyIGlzCisJCQlmcmVlIHRvIGNvYWxlc2NlIHlvdXIgd2FrZXVwIHdpdGggYW55IG90aGVyIHdha2V1cAorCQkJdGhhdCBtYXkgaGF2ZSBoYXBwZW5lZCBmb3Igb3RoZXIgcmVhc29ucywgb3IgYXQgdGhlCisJCQl3b3JzdCBjYXNlLCBmaXJlIGFuIGludGVycnVwdCBmb3IgeW91ciB1cHBlciBib3VuZC4KKworCQkJVGhlIGxhcmdlciBhIHJhbmdlIHlvdSBzdXBwbHksIHRoZSBncmVhdGVyIGEgY2hhbmNlCisJCQl0aGF0IHlvdSB3aWxsIG5vdCB0cmlnZ2VyIGFuIGludGVycnVwdDsgdGhpcyBzaG91bGQKKwkJCWJlIGJhbGFuY2VkIHdpdGggd2hhdCBpcyBhbiBhY2NlcHRhYmxlIHVwcGVyIGJvdW5kIG9uCisJCQlkZWxheSAvIHBlcmZvcm1hbmNlIGZvciB5b3VyIHNwZWNpZmljIGNvZGUgcGF0aC4gRXhhY3QKKwkJCXRvbGVyYW5jZXMgaGVyZSBhcmUgdmVyeSBzaXR1YXRpb24gc3BlY2lmaWMsIHRodXMgaXQKKwkJCWlzIGxlZnQgdG8gdGhlIGNhbGxlciB0byBkZXRlcm1pbmUgYSByZWFzb25hYmxlIHJhbmdlLgorCisJU0xFRVBJTkcgRk9SIExBUkdFUiBNU0VDUyAoIDEwbXMrICkKKwkJKiBVc2UgbXNsZWVwIG9yIHBvc3NpYmx5IG1zbGVlcF9pbnRlcnJ1cHRpYmxlCisKKwkJLSBXaGF0J3MgdGhlIGRpZmZlcmVuY2U/CisJCQltc2xlZXAgc2V0cyB0aGUgY3VycmVudCB0YXNrIHRvIFRBU0tfVU5JTlRFUlJVUFRJQkxFCisJCQl3aGVyZWFzIG1zbGVlcF9pbnRlcnJ1cHRpYmxlIHNldHMgdGhlIGN1cnJlbnQgdGFzayB0bworCQkJVEFTS19JTlRFUlJVUFRJQkxFIGJlZm9yZSBzY2hlZHVsaW5nIHRoZSBzbGVlcC4gSW4KKwkJCXNob3J0LCB0aGUgZGlmZmVyZW5jZSBpcyB3aGV0aGVyIHRoZSBzbGVlcCBjYW4gYmUgZW5kZWQKKwkJCWVhcmx5IGJ5IGEgc2lnbmFsLiBJbiBnZW5lcmFsLCBqdXN0IHVzZSBtc2xlZXAgdW5sZXNzCisJCQl5b3Uga25vdyB5b3UgaGF2ZSBhIG5lZWQgZm9yIHRoZSBpbnRlcnJ1cHRpYmxlIHZhcmlhbnQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RwbS94ZW4tdHBtZnJvbnQudHh0IGIvRG9jdW1lbnRhdGlvbi90cG0veGVuLXRwbWZyb250LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTM0NmRlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi90cG0veGVuLXRwbWZyb250LnR4dApAQCAtMCwwICsxLDExMyBAQAorVmlydHVhbCBUUE0gaW50ZXJmYWNlIGZvciBYZW4KKworQXV0aG9yczogTWF0dGhldyBGaW9yYXZhbnRlIChKSFVBUEwpLCBEYW5pZWwgRGUgR3JhYWYgKE5TQSkKKworVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIHZpcnR1YWwgVHJ1c3RlZCBQbGF0Zm9ybSBNb2R1bGUgKHZUUE0pIHN1YnN5c3RlbSBmb3IKK1hlbi4gVGhlIHJlYWRlciBpcyBhc3N1bWVkIHRvIGhhdmUgZmFtaWxpYXJpdHkgd2l0aCBidWlsZGluZyBhbmQgaW5zdGFsbGluZyBYZW4sCitMaW51eCwgYW5kIGEgYmFzaWMgdW5kZXJzdGFuZGluZyBvZiB0aGUgVFBNIGFuZCB2VFBNIGNvbmNlcHRzLgorCitJTlRST0RVQ1RJT04KKworVGhlIGdvYWwgb2YgdGhpcyB3b3JrIGlzIHRvIHByb3ZpZGUgYSBUUE0gZnVuY3Rpb25hbGl0eSB0byBhIHZpcnR1YWwgZ3Vlc3QKK29wZXJhdGluZyBzeXN0ZW0gKGluIFhlbiB0ZXJtcywgYSBEb21VKS4gIFRoaXMgYWxsb3dzIHByb2dyYW1zIHRvIGludGVyYWN0IHdpdGgKK2EgVFBNIGluIGEgdmlydHVhbCBzeXN0ZW0gdGhlIHNhbWUgd2F5IHRoZXkgaW50ZXJhY3Qgd2l0aCBhIFRQTSBvbiB0aGUgcGh5c2ljYWwKK3N5c3RlbS4gIEVhY2ggZ3Vlc3QgZ2V0cyBpdHMgb3duIHVuaXF1ZSwgZW11bGF0ZWQsIHNvZnR3YXJlIFRQTS4gIEhvd2V2ZXIsIGVhY2gKK29mIHRoZSB2VFBNJ3Mgc2VjcmV0cyAoS2V5cywgTlZSQU0sIGV0YykgYXJlIG1hbmFnZWQgYnkgYSB2VFBNIE1hbmFnZXIgZG9tYWluLAord2hpY2ggc2VhbHMgdGhlIHNlY3JldHMgdG8gdGhlIFBoeXNpY2FsIFRQTS4gIElmIHRoZSBwcm9jZXNzIG9mIGNyZWF0aW5nIGVhY2ggb2YKK3RoZXNlIGRvbWFpbnMgKG1hbmFnZXIsIHZUUE0sIGFuZCBndWVzdCkgaXMgdHJ1c3RlZCwgdGhlIHZUUE0gc3Vic3lzdGVtIGV4dGVuZHMKK3RoZSBjaGFpbiBvZiB0cnVzdCByb290ZWQgaW4gdGhlIGhhcmR3YXJlIFRQTSB0byB2aXJ0dWFsIG1hY2hpbmVzIGluIFhlbi4gRWFjaAorbWFqb3IgY29tcG9uZW50IG9mIHZUUE0gaXMgaW1wbGVtZW50ZWQgYXMgYSBzZXBhcmF0ZSBkb21haW4sIHByb3ZpZGluZyBzZWN1cmUKK3NlcGFyYXRpb24gZ3VhcmFudGVlZCBieSB0aGUgaHlwZXJ2aXNvci4gVGhlIHZUUE0gZG9tYWlucyBhcmUgaW1wbGVtZW50ZWQgaW4KK21pbmktb3MgdG8gcmVkdWNlIG1lbW9yeSBhbmQgcHJvY2Vzc29yIG92ZXJoZWFkLgorCitUaGlzIG1pbmktb3MgdlRQTSBzdWJzeXN0ZW0gd2FzIGJ1aWx0IG9uIHRvcCBvZiB0aGUgcHJldmlvdXMgdlRQTSB3b3JrIGRvbmUgYnkKK0lCTSBhbmQgSW50ZWwgY29ycG9yYXRpb24uCisKKworREVTSUdOIE9WRVJWSUVXCistLS0tLS0tLS0tLS0tLS0KKworVGhlIGFyY2hpdGVjdHVyZSBvZiB2VFBNIGlzIGRlc2NyaWJlZCBiZWxvdzoKKworKy0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgICAgTGludXggRG9tVSAgICB8IC4uLgorfCAgICAgICB8ICBeICAgICAgIHwKK3wgICAgICAgdiAgfCAgICAgICB8Cit8ICAgeGVuLXRwbWZyb250ICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgfCAgXgorICAgICAgICB2ICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tKworfCBtaW5pLW9zL3RwbWJhY2sgIHwKK3wgICAgICAgfCAgXiAgICAgICB8Cit8ICAgICAgIHYgIHwgICAgICAgfAorfCAgdnRwbS1zdHViZG9tICAgIHwgLi4uCit8ICAgICAgIHwgIF4gICAgICAgfAorfCAgICAgICB2ICB8ICAgICAgIHwKK3wgbWluaS1vcy90cG1mcm9udCB8CisrLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICB8ICBeCisgICAgICAgIHYgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0rCit8IG1pbmktb3MvdHBtYmFjayAgfAorfCAgICAgICB8ICBeICAgICAgIHwKK3wgICAgICAgdiAgfCAgICAgICB8Cit8IHZ0cG1tZ3Itc3R1YmRvbSAgfAorfCAgICAgICB8ICBeICAgICAgIHwKK3wgICAgICAgdiAgfCAgICAgICB8Cit8IG1pbmktb3MvdHBtX3RpcyAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgfCAgXgorICAgICAgICB2ICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tKworfCAgIEhhcmR3YXJlIFRQTSAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0rCisKKyAqIExpbnV4IERvbVU6IFRoZSBMaW51eCBiYXNlZCBndWVzdCB0aGF0IHdhbnRzIHRvIHVzZSBhIHZUUE0uIFRoZXJlIG1heSBiZQorCSAgICAgICBtb3JlIHRoYW4gb25lIG9mIHRoZXNlLgorCisgKiB4ZW4tdHBtZnJvbnQua286IExpbnV4IGtlcm5lbCB2aXJ0dWFsIFRQTSBmcm9udGVuZCBkcml2ZXIuIFRoaXMgZHJpdmVyCisgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVzIHZUUE0gYWNjZXNzIHRvIGEgTGludXgtYmFzZWQgRG9tVS4KKworICogbWluaS1vcy90cG1iYWNrOiBNaW5pLW9zIFRQTSBiYWNrZW5kIGRyaXZlci4gVGhlIExpbnV4IGZyb250ZW5kIGRyaXZlcgorCQkgICAgY29ubmVjdHMgdG8gdGhpcyBiYWNrZW5kIGRyaXZlciB0byBmYWNpbGl0YXRlIGNvbW11bmljYXRpb25zCisJCSAgICBiZXR3ZWVuIHRoZSBMaW51eCBEb21VIGFuZCBpdHMgdlRQTS4gVGhpcyBkcml2ZXIgaXMgYWxzbworCQkgICAgdXNlZCBieSB2dHBtbWdyLXN0dWJkb20gdG8gY29tbXVuaWNhdGUgd2l0aCB2dHBtLXN0dWJkb20uCisKKyAqIHZ0cG0tc3R1YmRvbTogQSBtaW5pLW9zIHN0dWIgZG9tYWluIHRoYXQgaW1wbGVtZW50cyBhIHZUUE0uIFRoZXJlIGlzIGEKKwkJIG9uZSB0byBvbmUgbWFwcGluZyBiZXR3ZWVuIHJ1bm5pbmcgdnRwbS1zdHViZG9tIGluc3RhbmNlcyBhbmQKKyAgICAgICAgICAgICAgICAgbG9naWNhbCB2dHBtcyBvbiB0aGUgc3lzdGVtLiBUaGUgdlRQTSBQbGF0Zm9ybSBDb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgIFJlZ2lzdGVycyAoUENScykgYXJlIG5vcm1hbGx5IGFsbCBpbml0aWFsaXplZCB0byB6ZXJvLgorCisgKiBtaW5pLW9zL3RwbWZyb250OiBNaW5pLW9zIFRQTSBmcm9udGVuZCBkcml2ZXIuIFRoZSB2VFBNIG1pbmktb3MgZG9tYWluCisJCSAgICAgdnRwbS1zdHViZG9tIHVzZXMgdGhpcyBkcml2ZXIgdG8gY29tbXVuaWNhdGUgd2l0aAorCQkgICAgIHZ0cG1tZ3Itc3R1YmRvbS4gVGhpcyBkcml2ZXIgaXMgYWxzbyB1c2VkIGluIG1pbmktb3MKKwkJICAgICBkb21haW5zIHN1Y2ggYXMgcHYtZ3J1YiB0aGF0IHRhbGsgdG8gdGhlIHZUUE0gZG9tYWluLgorCisgKiB2dHBtbWdyLXN0dWJkb206IEEgbWluaS1vcyBkb21haW4gdGhhdCBpbXBsZW1lbnRzIHRoZSB2VFBNIG1hbmFnZXIuIFRoZXJlIGlzCisJCSAgICBvbmx5IG9uZSB2VFBNIG1hbmFnZXIgYW5kIGl0IHNob3VsZCBiZSBydW5uaW5nIGR1cmluZyB0aGUKKwkJICAgIGVudGlyZSBsaWZldGltZSBvZiB0aGUgbWFjaGluZS4gIFRoaXMgZG9tYWluIHJlZ3VsYXRlcworCQkgICAgYWNjZXNzIHRvIHRoZSBwaHlzaWNhbCBUUE0gb24gdGhlIHN5c3RlbSBhbmQgc2VjdXJlcyB0aGUKKwkJICAgIHBlcnNpc3RlbnQgc3RhdGUgb2YgZWFjaCB2VFBNLgorCisgKiBtaW5pLW9zL3RwbV90aXM6IE1pbmktb3MgVFBNIHZlcnNpb24gMS4yIFRQTSBJbnRlcmZhY2UgU3BlY2lmaWNhdGlvbiAoVElTKQorICAgICAgICAgICAgICAgICAgICBkcml2ZXIuIFRoaXMgZHJpdmVyIHVzZWQgYnkgdnRwbW1nci1zdHViZG9tIHRvIHRhbGsgZGlyZWN0bHkgdG8KKyAgICAgICAgICAgICAgICAgICAgdGhlIGhhcmR3YXJlIFRQTS4gQ29tbXVuaWNhdGlvbiBpcyBmYWNpbGl0YXRlZCBieSBtYXBwaW5nCisgICAgICAgICAgICAgICAgICAgIGhhcmR3YXJlIG1lbW9yeSBwYWdlcyBpbnRvIHZ0cG1tZ3Itc3R1YmRvbS4KKworICogSGFyZHdhcmUgVFBNOiBUaGUgcGh5c2ljYWwgVFBNIHRoYXQgaXMgc29sZGVyZWQgb250byB0aGUgbW90aGVyYm9hcmQuCisKKworSU5URUdSQVRJT04gV0lUSCBYRU4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1N1cHBvcnQgZm9yIHRoZSB2VFBNIGRyaXZlciB3YXMgYWRkZWQgaW4gWGVuIHVzaW5nIHRoZSBsaWJ4bCB0b29sc3RhY2sgaW4gWGVuCis0LjMuICBTZWUgdGhlIFhlbiBkb2N1bWVudGF0aW9uIChkb2NzL21pc2MvdnRwbS50eHQpIGZvciBkZXRhaWxzIG9uIHNldHRpbmcgdXAKK3RoZSB2VFBNIGFuZCB2VFBNIE1hbmFnZXIgc3R1YiBkb21haW5zLiAgT25jZSB0aGUgc3R1YiBkb21haW5zIGFyZSBydW5uaW5nLCBhCit2VFBNIGRldmljZSBpcyBzZXQgdXAgaW4gdGhlIHNhbWUgbWFubmVyIGFzIGEgZGlzayBvciBuZXR3b3JrIGRldmljZSBpbiB0aGUKK2RvbWFpbidzIGNvbmZpZ3VyYXRpb24gZmlsZS4KKworSW4gb3JkZXIgdG8gdXNlIGZlYXR1cmVzIHN1Y2ggYXMgSU1BIHRoYXQgcmVxdWlyZSBhIFRQTSB0byBiZSBsb2FkZWQgcHJpb3IgdG8KK3RoZSBpbml0cmQsIHRoZSB4ZW4tdHBtZnJvbnQgZHJpdmVyIG11c3QgYmUgY29tcGlsZWQgaW4gdG8gdGhlIGtlcm5lbC4gIElmIG5vdAordXNpbmcgc3VjaCBmZWF0dXJlcywgdGhlIGRyaXZlciBjYW4gYmUgY29tcGlsZWQgYXMgYSBtb2R1bGUgYW5kIHdpbGwgYmUgbG9hZGVkCithcyB1c3VhbC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdHJhY2UvY29yZXNpZ2h0LnR4dCBiL0RvY3VtZW50YXRpb24vdHJhY2UvY29yZXNpZ2h0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTVjMzI5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi90cmFjZS9jb3Jlc2lnaHQudHh0CkBAIC0wLDAgKzEsMjk5IEBACisJCUNvcmVzaWdodCAtIEhXIEFzc2lzdGVkIFRyYWNpbmcgb24gQVJNCisJCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgIEF1dGhvcjogICBNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgorICAgRGF0ZTogICAgIFNlcHRlbWJlciAxMXRoLCAyMDE0CisKK0ludHJvZHVjdGlvbgorLS0tLS0tLS0tLS0tCisKK0NvcmVzaWdodCBpcyBhbiB1bWJyZWxsYSBvZiB0ZWNobm9sb2dpZXMgYWxsb3dpbmcgZm9yIHRoZSBkZWJ1Z2dpbmcgb2YgQVJNCitiYXNlZCBTb0MuICBJdCBpbmNsdWRlcyBzb2x1dGlvbnMgZm9yIEpUQUcgYW5kIEhXIGFzc2lzdGVkIHRyYWNpbmcuICBUaGlzCitkb2N1bWVudCBpcyBjb25jZXJuZWQgd2l0aCB0aGUgbGF0dGVyLgorCitIVyBhc3Npc3RlZCB0cmFjaW5nIGlzIGJlY29taW5nIGluY3JlYXNpbmdseSB1c2VmdWwgd2hlbiBkZWFsaW5nIHdpdGggc3lzdGVtcwordGhhdCBoYXZlIG1hbnkgU29DcyBhbmQgb3RoZXIgY29tcG9uZW50cyBsaWtlIEdQVSBhbmQgRE1BIGVuZ2luZXMuICBBUk0gaGFzCitkZXZlbG9wZWQgYSBIVyBhc3Npc3RlZCB0cmFjaW5nIHNvbHV0aW9uIGJ5IG1lYW5zIG9mIGRpZmZlcmVudCBjb21wb25lbnRzLCBlYWNoCitiZWluZyBhZGRlZCB0byBhIGRlc2lnbiBhdCBzeW50aGVzaXMgdGltZSB0byBjYXRlciB0byBzcGVjaWZpYyB0cmFjaW5nIG5lZWRzLgorQ29tcG9uZW50cyBhcmUgZ2VuZXJhbGx5IGNhdGVnb3Jpc2VkIGFzIHNvdXJjZSwgbGluayBhbmQgc2lua3MgYW5kIGFyZQorKHVzdWFsbHkpIGRpc2NvdmVyZWQgdXNpbmcgdGhlIEFNQkEgYnVzLgorCisiU291cmNlcyIgZ2VuZXJhdGUgYSBjb21wcmVzc2VkIHN0cmVhbSByZXByZXNlbnRpbmcgdGhlIHByb2Nlc3NvciBpbnN0cnVjdGlvbgorcGF0aCBiYXNlZCBvbiB0cmFjaW5nIHNjZW5hcmlvcyBhcyBjb25maWd1cmVkIGJ5IHVzZXJzLiAgRnJvbSB0aGVyZSB0aGUgc3RyZWFtCitmbG93cyB0aHJvdWdoIHRoZSBjb3Jlc2lnaHQgc3lzdGVtICh2aWEgQVRCIGJ1cykgdXNpbmcgbGlua3MgdGhhdCBhcmUgY29ubmVjdGluZwordGhlIGVtYW5hdGluZyBzb3VyY2UgdG8gYSBzaW5rKHMpLiAgU2lua3Mgc2VydmUgYXMgZW5kcG9pbnRzIHRvIHRoZSBjb3Jlc2lnaHQKK2ltcGxlbWVudGF0aW9uLCBlaXRoZXIgc3RvcmluZyB0aGUgY29tcHJlc3NlZCBzdHJlYW0gaW4gYSBtZW1vcnkgYnVmZmVyIG9yCitjcmVhdGluZyBhbiBpbnRlcmZhY2UgdG8gdGhlIG91dHNpZGUgd29ybGQgd2hlcmUgZGF0YSBjYW4gYmUgdHJhbnNmZXJyZWQgdG8gYQoraG9zdCB3aXRob3V0IGZlYXIgb2YgZmlsbGluZyB1cCB0aGUgb25ib2FyZCBjb3Jlc2lnaHQgbWVtb3J5IGJ1ZmZlci4KKworQXQgdHlwaWNhbCBjb3Jlc2lnaHQgc3lzdGVtIHdvdWxkIGxvb2sgbGlrZSB0aGlzOgorCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBBTUJBIEFYSSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKj09PXx8CisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgIHx8CisgICAgICAgIF4gICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHx8CisgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgICoqCisgICAgIDAwMDAwMDAgICAgOjo6OjogICAgIDAwMDAwMDAgICAgOjo6OjogICAgOjo6OjogICAgQEBAQEBAQCAgICB8fHx8fHx8fHx8fHwKKyAgICAgMCBDUFUgMDwtLT46IEMgOiAgICAgMCBDUFUgMDwtLT46IEMgOiAgICA6IEMgOiAgICBAIFNUTSBAICAgIHx8IFN5c3RlbSB8fAorICB8LT4wMDAwMDAwICAgIDogVCA6ICB8LT4wMDAwMDAwICAgIDogVCA6ICAgIDogVCA6PC0tLT5AQEBAQCAgICAgfHwgTWVtb3J5IHx8CisgIHwgICMjIyMjIyM8LS0+OiBJIDogIHwgICMjIyMjIyM8LS0+OiBJIDogICAgOiBJIDogICAgICBAQEA8LXwgICB8fHx8fHx8fHx8fHwKKyAgfCAgIyBFVE0gIyAgICA6Ojo6OiAgfCAgIyBQVE0gIyAgICA6Ojo6OiAgICA6Ojo6OiAgICAgICBAICAgfAorICB8ICAgIyMjIyMgICAgICBeIF4gICB8ICAgIyMjIyMgICAgICBeICEgICAgICBeICEgICAgICAgIC4gICB8ICAgfHx8fHx8fHx8CisgIHwgfC0+IyMjICAgICAgIHwgISAgIHwgfC0+IyMjICAgICAgIHwgISAgICAgIHwgISAgICAgICAgLiAgIHwgICB8fCBEQVAgfHwKKyAgfCB8ICAgIyAgICAgICAgfCAhICAgfCB8ICAgIyAgICAgICAgfCAhICAgICAgfCAhICAgICAgICAuICAgfCAgIHx8fHx8fHx8fAorICB8IHwgICAuICAgICAgICB8ICEgICB8IHwgICAuICAgICAgICB8ICEgICAgICB8ICEgICAgICAgIC4gICB8ICAgICAgfCAgfAorICB8IHwgICAuICAgICAgICB8ICEgICB8IHwgICAuICAgICAgICB8ICEgICAgICB8ICEgICAgICAgIC4gICB8ICAgICAgfCAgKgorICB8IHwgICAuICAgICAgICB8ICEgICB8IHwgICAuICAgICAgICB8ICEgICAgICB8ICEgICAgICAgIC4gICB8ICAgICAgfCBTV0QvCisgIHwgfCAgIC4gICAgICAgIHwgISAgIHwgfCAgIC4gICAgICAgIHwgISAgICAgIHwgISAgICAgICAgLiAgIHwgICAgICB8IEpUQUcKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio8LXwKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKiogQU1CQSBEZWJ1ZyBBUEIgKioqKioqKioqKioqKioqKioqKioqKioqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICB8ICAgIC4gICAgICAgICAgISAgICAgICAgIC4gICAgICAgICAgISAgICAgICAgISAgICAgICAgLiAgICB8CisgICB8ICAgIC4gICAgICAgICAgKiAgICAgICAgIC4gICAgICAgICAgKiAgICAgICAgKiAgICAgICAgLiAgICB8CisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKiogQ3Jvc3MgVHJpZ2dlciBNYXRyaXggKENUTSkgKioqKioqKioqKioqKioqKioqKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgfCAgICAuICAgICBeICAgICAgICAgICAgICAuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gICAgfAorICAgfCAgICAqICAgICAhICAgICAgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICAgfAorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKiBBTUJBIEFkdmFuY2VkIFRyYWNlIEJ1cyAoQVRCKSAqKioqKioqKioqKioqKioqKioKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgIHwgICAgICAgICAgISAgICAgICAgICAgICAgICAgICAgICAgID09PT09PT09PT09PT09PSAgICAgICAgIHwKKyAgIHwgICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICA9PT09PSBGID09PT09PC0tLS0tLS0tLXwKKyAgIHwgICA6Ojo6Ojo6OjogICAgICAgICAgICAgICAgICAgICAgICAgPT09PSBVID09PT0KKyAgIHwtLT46OiBDVEkgOjo8ISEgICAgICAgICAgICAgICAgICAgICAgID09PSBOID09PQorICAgfCAgIDo6Ojo6Ojo6OiAgISAgICAgICAgICAgICAgICAgICAgICAgID09IE4gPT0KKyAgIHwgICAgXiAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICA9PSBFID09CisgICB8ICAgICEgICYmJiYmJiYmJiAgICAgICBJSUlJSUlJICAgICAgICAgPT0gTCA9PQorICAgfC0tLS0tLT4mJiBFVEIgJiY8Li4uLi4uSUkgICAgIEkgICAgICAgID09PT09PT0KKyAgIHwgICAgISAgJiYmJiYmJiYmICAgICAgIElJICAgICBJICAgICAgICAgICAuCisgICB8ICAgICEgICAgICAgICAgICAgICAgICAgIEkgICAgIEkgICAgICAgICAgLgorICAgfCAgICAhICAgICAgICAgICAgICAgICAgICBJIFJFUCBJPC4uLi4uLi4uLi4KKyAgIHwgICAgISAgICAgICAgICAgICAgICAgICAgSSAgICAgSQorICAgfCAgICAhIT4mJiYmJiYmJiYgICAgICAgSUkgICAgIEkgICAgICAgICAgICpTb3VyY2U6IEFSTSBsdGQuCisgICB8LS0tLS0tPiYgVFBJVSAgJjwuLi4uLi5JSSAgICBJICAgICAgICAgICAgREFQID0gRGVidWcgQWNjZXNzIFBvcnQKKyAgICAgICAgICAgJiYmJiYmJiYmICAgICAgIElJSUlJSUkgICAgICAgICAgICBFVE0gPSBFbWJlZGRlZCBUcmFjZSBNYWNyb2NlbGwKKyAgICAgICAgICAgICAgIDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQVE0gPSBQcm9ncmFtIFRyYWNlIE1hY3JvY2VsbAorICAgICAgICAgICAgICAgOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENUSSA9IENyb3NzIFRyaWdnZXIgSW50ZXJmYWNlCisgICAgICAgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVRCID0gRW1iZWRkZWQgVHJhY2UgQnVmZmVyCisgICAgICAgICAgVG8gdHJhY2UgcG9ydCAgICAgICAgICAgICAgICAgICAgICAgVFBJVT0gVHJhY2UgUG9ydCBJbnRlcmZhY2UgVW5pdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNXRCA9IFNlcmlhbCBXaXJlIERlYnVnCisKK1doaWxlIG9uIHRhcmdldCBjb25maWd1cmF0aW9uIG9mIHRoZSBjb21wb25lbnRzIGlzIGRvbmUgdmlhIHRoZSBBUEIgYnVzLAorYWxsIHRyYWNlIGRhdGEgYXJlIGNhcnJpZWQgb3V0LW9mLWJhbmQgb24gdGhlIEFUQiBidXMuICBUaGUgQ1RNIHByb3ZpZGVzCithIHdheSB0byBhZ2dyZWdhdGUgYW5kIGRpc3RyaWJ1dGUgc2lnbmFscyBiZXR3ZWVuIENvcmVTaWdodCBjb21wb25lbnRzLgorCitUaGUgY29yZXNpZ2h0IGZyYW1ld29yayBwcm92aWRlcyBhIGNlbnRyYWwgcG9pbnQgdG8gcmVwcmVzZW50LCBjb25maWd1cmUgYW5kCittYW5hZ2UgY29yZXNpZ2h0IGRldmljZXMgb24gYSBwbGF0Zm9ybS4gIFRoaXMgZmlyc3QgaW1wbGVtZW50YXRpb24gY2VudGVycyBvbgordGhlIGJhc2ljIHRyYWNpbmcgZnVuY3Rpb25hbGl0eSwgZW5hYmxpbmcgY29tcG9uZW50cyBzdWNoIEVUTS9QVE0sIGZ1bm5lbCwKK3JlcGxpY2F0b3IsIFRNQywgVFBJVSBhbmQgRVRCLiAgRnV0dXJlIHdvcmsgd2lsbCBlbmFibGUgbW9yZQoraW50cmljYXRlIElQIGJsb2NrcyBzdWNoIGFzIFNUTSBhbmQgQ1RJLgorCisKK0Fjcm9ueW1zIGFuZCBDbGFzc2lmaWNhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Fjcm9ueW1zOgorCitQVE06ICAgICBQcm9ncmFtIFRyYWNlIE1hY3JvY2VsbAorRVRNOiAgICAgRW1iZWRkZWQgVHJhY2UgTWFjcm9jZWxsCitTVE06ICAgICBTeXN0ZW0gdHJhY2UgTWFjcm9jZWxsCitFVEI6ICAgICBFbWJlZGRlZCBUcmFjZSBCdWZmZXIKK0lUTTogICAgIEluc3RydW1lbnRhdGlvbiBUcmFjZSBNYWNyb2NlbGwKK1RQSVU6ICAgIFRyYWNlIFBvcnQgSW50ZXJmYWNlIFVuaXQKK1RNQy1FVFI6IFRyYWNlIE1lbW9yeSBDb250cm9sbGVyLCBjb25maWd1cmVkIGFzIEVtYmVkZGVkIFRyYWNlIFJvdXRlcgorVE1DLUVURjogVHJhY2UgTWVtb3J5IENvbnRyb2xsZXIsIGNvbmZpZ3VyZWQgYXMgRW1iZWRkZWQgVHJhY2UgRklGTworQ1RJOiAgICAgQ3Jvc3MgVHJpZ2dlciBJbnRlcmZhY2UKKworQ2xhc3NpZmljYXRpb246CisKK1NvdXJjZToKKyAgIEVUTXYzLnggRVRNdjQsIFBUTXYxLjAsIFBUTXYxLjEsIFNUTSwgU1RNNTAwLCBJVE0KK0xpbms6CisgICBGdW5uZWwsIHJlcGxpY2F0b3IgKGludGVsbGlnZW50IG9yIG5vdCksIFRNQy1FVFIKK1NpbmtzOgorICAgRVRCdjEuMCwgRVRCMS4xLCBUUElVLCBUTUMtRVRGCitNaXNjOgorICAgQ1RJCisKKworRGV2aWNlIFRyZWUgQmluZGluZ3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU2VlIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vY29yZXNpZ2h0LnR4dCBmb3IgZGV0YWlscy4KKworQXMgb2YgdGhpcyB3cml0aW5nIGRyaXZlcnMgZm9yIElUTSwgU1RNcyBhbmQgQ1RJcyBhcmUgbm90IHByb3ZpZGVkIGJ1dCBhcmUKK2V4cGVjdGVkIHRvIGJlIGFkZGVkIGFzIHRoZSBzb2x1dGlvbiBtYXR1cmVzLgorCisKK0ZyYW1ld29yayBhbmQgaW1wbGVtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGNvcmVzaWdodCBmcmFtZXdvcmsgcHJvdmlkZXMgYSBjZW50cmFsIHBvaW50IHRvIHJlcHJlc2VudCwgY29uZmlndXJlIGFuZAorbWFuYWdlIGNvcmVzaWdodCBkZXZpY2VzIG9uIGEgcGxhdGZvcm0uICBBbnkgY29yZXNpZ2h0IGNvbXBsaWFudCBkZXZpY2UgY2FuCityZWdpc3RlciB3aXRoIHRoZSBmcmFtZXdvcmsgZm9yIGFzIGxvbmcgYXMgdGhleSB1c2UgdGhlIHJpZ2h0IEFQSXM6CisKK3N0cnVjdCBjb3Jlc2lnaHRfZGV2aWNlICpjb3Jlc2lnaHRfcmVnaXN0ZXIoc3RydWN0IGNvcmVzaWdodF9kZXNjICpkZXNjKTsKK3ZvaWQgY29yZXNpZ2h0X3VucmVnaXN0ZXIoc3RydWN0IGNvcmVzaWdodF9kZXZpY2UgKmNzZGV2KTsKKworVGhlIHJlZ2lzdGVyaW5nIGZ1bmN0aW9uIGlzIHRha2luZyBhICJzdHJ1Y3QgY29yZXNpZ2h0X2RldmljZSAqY3NkZXYiIGFuZAorcmVnaXN0ZXIgdGhlIGRldmljZSB3aXRoIHRoZSBjb3JlIGZyYW1ld29yay4gIFRoZSB1bnJlZ2lzdGVyIGZ1bmN0aW9uIHRha2VzCithIHJlZmVyZW5jZSB0byBhICJzdHJ1Y3QgY29yZXNpZ2h0X2RldmljZSIsIG9idGFpbmVkIGF0IHJlZ2lzdHJhdGlvbiB0aW1lLgorCitJZiBldmVyeXRoaW5nIGdvZXMgd2VsbCBkdXJpbmcgdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIHRoZSBuZXcgZGV2aWNlcyB3aWxsCitzaG93IHVwIHVuZGVyIC9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzLCBhcyBzaG93bnMgaGVyZSBmb3IgYSBUQzIgcGxhdGZvcm06CisKK3Jvb3Q6fiMgbHMgL3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMvCityZXBsaWNhdG9yICAyMDAzMDAwMC50cGl1ICAgIDIyMDFjMDAwLnB0bSAgMjIwM2MwMDAuZXRtICAyMjAzZTAwMC5ldG0KKzIwMDEwMDAwLmV0YiAgICAgICAgIDIwMDQwMDAwLmZ1bm5lbCAgMjIwMWQwMDAucHRtICAyMjAzZDAwMC5ldG0KK3Jvb3Q6fiMKKworVGhlIGZ1bmN0aW9ucyB0YWtlIGEgInN0cnVjdCBjb3Jlc2lnaHRfZGV2aWNlIiwgd2hpY2ggbG9va3MgbGlrZSB0aGlzOgorCitzdHJ1Y3QgY29yZXNpZ2h0X2Rlc2MgeworICAgICAgICBlbnVtIGNvcmVzaWdodF9kZXZfdHlwZSB0eXBlOworICAgICAgICBzdHJ1Y3QgY29yZXNpZ2h0X2Rldl9zdWJ0eXBlIHN1YnR5cGU7CisgICAgICAgIGNvbnN0IHN0cnVjdCBjb3Jlc2lnaHRfb3BzICpvcHM7CisgICAgICAgIHN0cnVjdCBjb3Jlc2lnaHRfcGxhdGZvcm1fZGF0YSAqcGRhdGE7CisgICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldjsKKyAgICAgICAgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqKmdyb3VwczsKK307CisKKworVGhlICJjb3Jlc2lnaHRfZGV2X3R5cGUiIGlkZW50aWZpZXMgd2hhdCB0aGUgZGV2aWNlIGlzLCBpLmUsIHNvdXJjZSBsaW5rIG9yCitzaW5rIHdoaWxlIHRoZSAiY29yZXNpZ2h0X2Rldl9zdWJ0eXBlIiB3aWxsIGNoYXJhY3RlcmlzZSB0aGF0IHR5cGUgZnVydGhlci4KKworVGhlICJzdHJ1Y3QgY29yZXNpZ2h0X29wcyIgaXMgbWFuZGF0b3J5IGFuZCB3aWxsIHRlbGwgdGhlIGZyYW1ld29yayBob3cgdG8KK3BlcmZvcm0gYmFzZSBvcGVyYXRpb25zIHJlbGF0ZWQgdG8gdGhlIGNvbXBvbmVudHMsIGVhY2ggY29tcG9uZW50IGhhdmluZworYSBkaWZmZXJlbnQgc2V0IG9mIHJlcXVpcmVtZW50LiAgRm9yIHRoYXQgInN0cnVjdCBjb3Jlc2lnaHRfb3BzX3NpbmsiLAorInN0cnVjdCBjb3Jlc2lnaHRfb3BzX2xpbmsiIGFuZCAic3RydWN0IGNvcmVzaWdodF9vcHNfc291cmNlIiBoYXZlIGJlZW4KK3Byb3ZpZGVkLgorCitUaGUgbmV4dCBmaWVsZCwgInN0cnVjdCBjb3Jlc2lnaHRfcGxhdGZvcm1fZGF0YSAqcGRhdGEiIGlzIGFjcXVpcmVkIGJ5IGNhbGxpbmcKKyJvZl9nZXRfY29yZXNpZ2h0X3BsYXRmb3JtX2RhdGEoKSIsIGFzIHBhcnQgb2YgdGhlIGRyaXZlcidzIF9wcm9iZSByb3V0aW5lIGFuZAorInN0cnVjdCBkZXZpY2UgKmRldiIgZ2V0cyB0aGUgZGV2aWNlIHJlZmVyZW5jZSBlbWJlZGRlZCBpbiB0aGUgImFtYmFfZGV2aWNlIjoKKworc3RhdGljIGludCBldG1fcHJvYmUoc3RydWN0IGFtYmFfZGV2aWNlICphZGV2LCBjb25zdCBzdHJ1Y3QgYW1iYV9pZCAqaWQpCit7CisgLi4uCisgLi4uCisgZHJ2ZGF0YS0+ZGV2ID0gJmFkZXYtPmRldjsKKyAuLi4KK30KKworU3BlY2lmaWMgY2xhc3Mgb2YgZGV2aWNlIChzb3VyY2UsIGxpbmssIG9yIHNpbmspIGhhdmUgZ2VuZXJpYyBvcGVyYXRpb25zCit0aGF0IGNhbiBiZSBwZXJmb3JtZWQgb24gdGhlbSAoc2VlICJzdHJ1Y3QgY29yZXNpZ2h0X29wcyIpLiAgVGhlCisiKipncm91cHMiIGlzIGEgbGlzdCBvZiBzeXNmcyBlbnRyaWVzIHBlcnRhaW5pbmcgdG8gb3BlcmF0aW9ucworc3BlY2lmaWMgdG8gdGhhdCBjb21wb25lbnQgb25seS4gICJJbXBsZW1lbnRhdGlvbiBkZWZpbmVkIiBjdXN0b21pc2F0aW9ucyBhcmUKK2V4cGVjdGVkIHRvIGJlIGFjY2Vzc2VkIGFuZCBjb250cm9sbGVkIHVzaW5nIHRob3NlIGVudHJpZXMuCisKK0xhc3QgYnV0IG5vdCBsZWFzdCwgInN0cnVjdCBtb2R1bGUgKm93bmVyIiBpcyBleHBlY3RlZCB0byBiZSBzZXQgdG8gcmVmbGVjdAordGhlIGluZm9ybWF0aW9uIGNhcnJpZWQgaW4gIlRISVNfTU9EVUxFIi4KKworSG93IHRvIHVzZQorLS0tLS0tLS0tLQorCitCZWZvcmUgdHJhY2UgY29sbGVjdGlvbiBjYW4gc3RhcnQsIGEgY29yZXNpZ2h0IHNpbmsgbmVlZHMgdG8gYmUgaWRlbnRpZnkuCitUaGVyZSBpcyBubyBsaW1pdCBvbiB0aGUgYW1vdW50IG9mIHNpbmtzIChub3Igc291cmNlcykgdGhhdCBjYW4gYmUgZW5hYmxlZCBhdAorYW55IGdpdmVuIG1vbWVudC4gIEFzIGEgZ2VuZXJpYyBvcGVyYXRpb24sIGFsbCBkZXZpY2UgcGVydGFpbmluZyB0byB0aGUgc2luaworY2xhc3Mgd2lsbCBoYXZlIGFuICJhY3RpdmUiIGVudHJ5IGluIHN5c2ZzOgorCityb290Oi9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzIyBscworcmVwbGljYXRvciAgMjAwMzAwMDAudHBpdSAgICAyMjAxYzAwMC5wdG0gIDIyMDNjMDAwLmV0bSAgMjIwM2UwMDAuZXRtCisyMDAxMDAwMC5ldGIgICAgICAgICAyMDA0MDAwMC5mdW5uZWwgIDIyMDFkMDAwLnB0bSAgMjIwM2QwMDAuZXRtCityb290Oi9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzIyBscyAyMDAxMDAwMC5ldGIKK2VuYWJsZV9zaW5rICBzdGF0dXMgIHRyaWdnZXJfY250cgorcm9vdDovc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcyMgZWNobyAxID4gMjAwMTAwMDAuZXRiL2VuYWJsZV9zaW5rCityb290Oi9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzIyBjYXQgMjAwMTAwMDAuZXRiL2VuYWJsZV9zaW5rCisxCityb290Oi9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzIworCitBdCBib290IHRpbWUgdGhlIGN1cnJlbnQgZXRtM3ggZHJpdmVyIHdpbGwgY29uZmlndXJlIHRoZSBmaXJzdCBhZGRyZXNzCitjb21wYXJhdG9yIHdpdGggIl9zdGV4dCIgYW5kICJfZXRleHQiLCBlc3NlbnRpYWxseSB0cmFjaW5nIGFueSBpbnN0cnVjdGlvbgordGhhdCBmYWxscyB3aXRoaW4gdGhhdCByYW5nZS4gIEFzIHN1Y2ggImVuYWJsaW5nIiBhIHNvdXJjZSB3aWxsIGltbWVkaWF0ZWx5Cit0cmlnZ2VyIGEgdHJhY2UgY2FwdHVyZToKKworcm9vdDovc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcyMgZWNobyAxID4gMjIwMWMwMDAucHRtL2VuYWJsZV9zb3VyY2UKK3Jvb3Q6L3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMjIGNhdCAyMjAxYzAwMC5wdG0vZW5hYmxlX3NvdXJjZQorMQorcm9vdDovc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcyMgY2F0IDIwMDEwMDAwLmV0Yi9zdGF0dXMKK0RlcHRoOiAgICAgICAgICAweDIwMDAKK1N0YXR1czogICAgICAgICAweDEKK1JBTSByZWFkIHB0cjogICAweDAKK1JBTSB3cnQgcHRyOiAgICAweDE5ZDMgICA8LS0tLS0gVGhlIHdyaXRlIHBvaW50ZXIgaXMgbW92aW5nCitUcmlnZ2VyIGNudDogICAgMHgwCitDb250cm9sOiAgICAgICAgMHgxCitGbHVzaCBzdGF0dXM6ICAgMHgwCitGbHVzaCBjdHJsOiAgICAgMHgyMDAxCityb290Oi9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzIworCitUcmFjZSBjb2xsZWN0aW9uIGlzIHN0b3BwZWQgdGhlIHNhbWUgd2F5OgorCityb290Oi9zeXMvYnVzL2NvcmVzaWdodC9kZXZpY2VzIyBlY2hvIDAgPiAyMjAxYzAwMC5wdG0vZW5hYmxlX3NvdXJjZQorcm9vdDovc3lzL2J1cy9jb3Jlc2lnaHQvZGV2aWNlcyMKKworVGhlIGNvbnRlbnQgb2YgdGhlIEVUQiBidWZmZXIgY2FuIGJlIGhhcnZlc3RlZCBkaXJlY3RseSBmcm9tIC9kZXY6CisKK3Jvb3Q6L3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMjIGRkIGlmPS9kZXYvMjAwMTAwMDAuZXRiIFwKK29mPX4vY3N0cmFjZS5iaW4KKworNjQrMCByZWNvcmRzIGluCis2NCswIHJlY29yZHMgb3V0CiszMjc2OCBieXRlcyAoMzMga0IpIGNvcGllZCwgMC4wMDEyNTI1OCBzLCAyNi4yIE1CL3MKK3Jvb3Q6L3N5cy9idXMvY29yZXNpZ2h0L2RldmljZXMjCisKK1RoZSBmaWxlIGNzdHJhY2UuYmluIGNhbiBiZSBkZWNvbXByZXNzZWQgdXNpbmcgInB0bTJodW1hbiIsIERTLTUgb3IgVHJhY2UzMi4KKworRm9sbG93aW5nIGlzIGEgRFMtNSBvdXRwdXQgb2YgYW4gZXhwZXJpbWVudGFsIGxvb3AgdGhhdCBpbmNyZW1lbnRzIGEgdmFyaWFibGUgdXAKK3RvIGEgY2VydGFpbiB2YWx1ZS4gIFRoZSBleGFtcGxlIGlzIHNpbXBsZSBhbmQgeWV0IHByb3ZpZGVzIGEgZ2xpbXBzZSBvZiB0aGUKK3dlYWx0aCBvZiBwb3NzaWJpbGl0aWVzIHRoYXQgY29yZXNpZ2h0IHByb3ZpZGVzLgorCitJbmZvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhY2luZyBlbmFibGVkCitJbnN0cnVjdGlvbiAgICAgMTA2Mzc4ODY2ICAgICAgIDB4ODAyNkI1M0MgICAgICBFNTJERTAwNCAgICAgICAgZmFsc2UgICBQVVNIICAgICB7bHJ9CitJbnN0cnVjdGlvbiAgICAgMCAgICAgICAweDgwMjZCNTQwICAgICAgRTI0REQwMEMgICAgICAgIGZhbHNlICAgU1VCICAgICAgc3Asc3AsIzB4YworSW5zdHJ1Y3Rpb24gICAgIDAgICAgICAgMHg4MDI2QjU0NCAgICAgIEUzQTAzMDAwICAgICAgICBmYWxzZSAgIE1PViAgICAgIHIzLCMwCitJbnN0cnVjdGlvbiAgICAgMCAgICAgICAweDgwMjZCNTQ4ICAgICAgRTU4RDMwMDQgICAgICAgIGZhbHNlICAgU1RSICAgICAgcjMsW3NwLCM0XQorSW5zdHJ1Y3Rpb24gICAgIDAgICAgICAgMHg4MDI2QjU0QyAgICAgIEU1OUQzMDA0ICAgICAgICBmYWxzZSAgIExEUiAgICAgIHIzLFtzcCwjNF0KK0luc3RydWN0aW9uICAgICAwICAgICAgIDB4ODAyNkI1NTAgICAgICBFMzUzMDAwNCAgICAgICAgZmFsc2UgICBDTVAgICAgICByMywjNAorSW5zdHJ1Y3Rpb24gICAgIDAgICAgICAgMHg4MDI2QjU1NCAgICAgIEUyODMzMDAxICAgICAgICBmYWxzZSAgIEFERCAgICAgIHIzLHIzLCMxCitJbnN0cnVjdGlvbiAgICAgMCAgICAgICAweDgwMjZCNTU4ICAgICAgRTU4RDMwMDQgICAgICAgIGZhbHNlICAgU1RSICAgICAgcjMsW3NwLCM0XQorSW5zdHJ1Y3Rpb24gICAgIDAgICAgICAgMHg4MDI2QjU1QyAgICAgIERBRkZGRkZBICAgICAgICB0cnVlICAgIEJMRSAgICAgIHtwY30tMHgxMCA7IDB4ODAyNmI1NGMKK1RpbWVzdGFtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVzdGFtcDogMTcxMDY3MTU4MzMKK0luc3RydWN0aW9uICAgICAzMTkgICAgIDB4ODAyNkI1NEMgICAgICBFNTlEMzAwNCAgICAgICAgZmFsc2UgICBMRFIgICAgICByMyxbc3AsIzRdCitJbnN0cnVjdGlvbiAgICAgMCAgICAgICAweDgwMjZCNTUwICAgICAgRTM1MzAwMDQgICAgICAgIGZhbHNlICAgQ01QICAgICAgcjMsIzQKK0luc3RydWN0aW9uICAgICAwICAgICAgIDB4ODAyNkI1NTQgICAgICBFMjgzMzAwMSAgICAgICAgZmFsc2UgICBBREQgICAgICByMyxyMywjMQorSW5zdHJ1Y3Rpb24gICAgIDAgICAgICAgMHg4MDI2QjU1OCAgICAgIEU1OEQzMDA0ICAgICAgICBmYWxzZSAgIFNUUiAgICAgIHIzLFtzcCwjNF0KK0luc3RydWN0aW9uICAgICAwICAgICAgIDB4ODAyNkI1NUMgICAgICBEQUZGRkZGQSAgICAgICAgdHJ1ZSAgICBCTEUgICAgICB7cGN9LTB4MTAgOyAweDgwMjZiNTRjCitJbnN0cnVjdGlvbiAgICAgOSAgICAgICAweDgwMjZCNTRDICAgICAgRTU5RDMwMDQgICAgICAgIGZhbHNlICAgTERSICAgICAgcjMsW3NwLCM0XQorSW5zdHJ1Y3Rpb24gICAgIDAgICAgICAgMHg4MDI2QjU1MCAgICAgIEUzNTMwMDA0ICAgICAgICBmYWxzZSAgIENNUCAgICAgIHIzLCM0CitJbnN0cnVjdGlvbiAgICAgMCAgICAgICAweDgwMjZCNTU0ICAgICAgRTI4MzMwMDEgICAgICAgIGZhbHNlICAgQUREICAgICAgcjMscjMsIzEKK0luc3RydWN0aW9uICAgICAwICAgICAgIDB4ODAyNkI1NTggICAgICBFNThEMzAwNCAgICAgICAgZmFsc2UgICBTVFIgICAgICByMyxbc3AsIzRdCitJbnN0cnVjdGlvbiAgICAgMCAgICAgICAweDgwMjZCNTVDICAgICAgREFGRkZGRkEgICAgICAgIHRydWUgICAgQkxFICAgICAge3BjfS0weDEwIDsgMHg4MDI2YjU0YworSW5zdHJ1Y3Rpb24gICAgIDcgICAgICAgMHg4MDI2QjU0QyAgICAgIEU1OUQzMDA0ICAgICAgICBmYWxzZSAgIExEUiAgICAgIHIzLFtzcCwjNF0KK0luc3RydWN0aW9uICAgICAwICAgICAgIDB4ODAyNkI1NTAgICAgICBFMzUzMDAwNCAgICAgICAgZmFsc2UgICBDTVAgICAgICByMywjNAorSW5zdHJ1Y3Rpb24gICAgIDAgICAgICAgMHg4MDI2QjU1NCAgICAgIEUyODMzMDAxICAgICAgICBmYWxzZSAgIEFERCAgICAgIHIzLHIzLCMxCitJbnN0cnVjdGlvbiAgICAgMCAgICAgICAweDgwMjZCNTU4ICAgICAgRTU4RDMwMDQgICAgICAgIGZhbHNlICAgU1RSICAgICAgcjMsW3NwLCM0XQorSW5zdHJ1Y3Rpb24gICAgIDAgICAgICAgMHg4MDI2QjU1QyAgICAgIERBRkZGRkZBICAgICAgICB0cnVlICAgIEJMRSAgICAgIHtwY30tMHgxMCA7IDB4ODAyNmI1NGMKK0luc3RydWN0aW9uICAgICA3ICAgICAgIDB4ODAyNkI1NEMgICAgICBFNTlEMzAwNCAgICAgICAgZmFsc2UgICBMRFIgICAgICByMyxbc3AsIzRdCitJbnN0cnVjdGlvbiAgICAgMCAgICAgICAweDgwMjZCNTUwICAgICAgRTM1MzAwMDQgICAgICAgIGZhbHNlICAgQ01QICAgICAgcjMsIzQKK0luc3RydWN0aW9uICAgICAwICAgICAgIDB4ODAyNkI1NTQgICAgICBFMjgzMzAwMSAgICAgICAgZmFsc2UgICBBREQgICAgICByMyxyMywjMQorSW5zdHJ1Y3Rpb24gICAgIDAgICAgICAgMHg4MDI2QjU1OCAgICAgIEU1OEQzMDA0ICAgICAgICBmYWxzZSAgIFNUUiAgICAgIHIzLFtzcCwjNF0KK0luc3RydWN0aW9uICAgICAwICAgICAgIDB4ODAyNkI1NUMgICAgICBEQUZGRkZGQSAgICAgICAgdHJ1ZSAgICBCTEUgICAgICB7cGN9LTB4MTAgOyAweDgwMjZiNTRjCitJbnN0cnVjdGlvbiAgICAgMTAgICAgICAweDgwMjZCNTRDICAgICAgRTU5RDMwMDQgICAgICAgIGZhbHNlICAgTERSICAgICAgcjMsW3NwLCM0XQorSW5zdHJ1Y3Rpb24gICAgIDAgICAgICAgMHg4MDI2QjU1MCAgICAgIEUzNTMwMDA0ICAgICAgICBmYWxzZSAgIENNUCAgICAgIHIzLCM0CitJbnN0cnVjdGlvbiAgICAgMCAgICAgICAweDgwMjZCNTU0ICAgICAgRTI4MzMwMDEgICAgICAgIGZhbHNlICAgQUREICAgICAgcjMscjMsIzEKK0luc3RydWN0aW9uICAgICAwICAgICAgIDB4ODAyNkI1NTggICAgICBFNThEMzAwNCAgICAgICAgZmFsc2UgICBTVFIgICAgICByMyxbc3AsIzRdCitJbnN0cnVjdGlvbiAgICAgMCAgICAgICAweDgwMjZCNTVDICAgICAgREFGRkZGRkEgICAgICAgIHRydWUgICAgQkxFICAgICAge3BjfS0weDEwIDsgMHg4MDI2YjU0YworSW5zdHJ1Y3Rpb24gICAgIDYgICAgICAgMHg4MDI2QjU2MCAgICAgIEVFMUQzRjMwICAgICAgICBmYWxzZSAgIE1SQyAgICAgIHAxNSwjMHgwLHIzLGMxMyxjMCwjMQorSW5zdHJ1Y3Rpb24gICAgIDAgICAgICAgMHg4MDI2QjU2NCAgICAgIEUxQTAxMDBEICAgICAgICBmYWxzZSAgIE1PViAgICAgIHIxLHNwCitJbnN0cnVjdGlvbiAgICAgMCAgICAgICAweDgwMjZCNTY4ICAgICAgRTNDMTJEN0YgICAgICAgIGZhbHNlICAgQklDICAgICAgcjIscjEsIzB4MWZjMAorSW5zdHJ1Y3Rpb24gICAgIDAgICAgICAgMHg4MDI2QjU2QyAgICAgIEUzQzIyMDNGICAgICAgICBmYWxzZSAgIEJJQyAgICAgIHIyLHIyLCMweDNmCitJbnN0cnVjdGlvbiAgICAgMCAgICAgICAweDgwMjZCNTcwICAgICAgRTU5RDEwMDQgICAgICAgIGZhbHNlICAgTERSICAgICAgcjEsW3NwLCM0XQorSW5zdHJ1Y3Rpb24gICAgIDAgICAgICAgMHg4MDI2QjU3NCAgICAgIEU1OUYwMDEwICAgICAgICBmYWxzZSAgIExEUiAgICAgIHIwLFtwYywjMTZdIDsgWzB4ODAyNkI1OENdID0gMHg4MDU1MDM2OAorSW5zdHJ1Y3Rpb24gICAgIDAgICAgICAgMHg4MDI2QjU3OCAgICAgIEU1OTIyMDBDICAgICAgICBmYWxzZSAgIExEUiAgICAgIHIyLFtyMiwjMHhjXQorSW5zdHJ1Y3Rpb24gICAgIDAgICAgICAgMHg4MDI2QjU3QyAgICAgIEU1OTIyMUQwICAgICAgICBmYWxzZSAgIExEUiAgICAgIHIyLFtyMiwjMHgxZDBdCitJbnN0cnVjdGlvbiAgICAgMCAgICAgICAweDgwMjZCNTgwICAgICAgRUIwN0E0Q0YgICAgICAgIHRydWUgICAgQkwgICAgICAge3BjfSsweDFlOTM0NCA7IDB4ODA0NTQ4YzQKK0luZm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFjaW5nIGVuYWJsZWQKK0luc3RydWN0aW9uICAgICAxMzU3MDgzMSAgICAgICAgMHg4MDI2QjU4NCAgICAgIEUyOEREMDBDICAgICAgICBmYWxzZSAgIEFERCAgICAgIHNwLHNwLCMweGMKK0luc3RydWN0aW9uICAgICAwICAgICAgIDB4ODAyNkI1ODggICAgICBFOEJEODAwMCAgICAgICAgdHJ1ZSAgICBMRE0gICAgICBzcCEse3BjfQorVGltZXN0YW1wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGltZXN0YW1wOiAxNzEwNzA0MTUzNQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90cmFjZS9ldmVudHMta21lbS50eHQgYi9Eb2N1bWVudGF0aW9uL3RyYWNlL2V2ZW50cy1rbWVtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTQ4MDA0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi90cmFjZS9ldmVudHMta21lbS50eHQKQEAgLTAsMCArMSwxMDcgQEAKKwkJCVN1YnN5c3RlbSBUcmFjZSBQb2ludHM6IGttZW0KKworVGhlIGttZW0gdHJhY2luZyBzeXN0ZW0gY2FwdHVyZXMgZXZlbnRzIHJlbGF0ZWQgdG8gb2JqZWN0IGFuZCBwYWdlIGFsbG9jYXRpb24KK3dpdGhpbiB0aGUga2VybmVsLiBCcm9hZGx5IHNwZWFraW5nIHRoZXJlIGFyZSBmaXZlIG1ham9yIHN1YmhlYWRpbmdzLgorCisgIG8gU2xhYiBhbGxvY2F0aW9uIG9mIHNtYWxsIG9iamVjdHMgb2YgdW5rbm93biB0eXBlIChrbWFsbG9jKQorICBvIFNsYWIgYWxsb2NhdGlvbiBvZiBzbWFsbCBvYmplY3RzIG9mIGtub3duIHR5cGUKKyAgbyBQYWdlIGFsbG9jYXRpb24KKyAgbyBQZXItQ1BVIEFsbG9jYXRvciBBY3Rpdml0eQorICBvIEV4dGVybmFsIEZyYWdtZW50YXRpb24KKworVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgd2hhdCBlYWNoIG9mIHRoZSB0cmFjZXBvaW50cyBpcyBhbmQgd2h5IHRoZXkKK21pZ2h0IGJlIHVzZWZ1bC4KKworMS4gU2xhYiBhbGxvY2F0aW9uIG9mIHNtYWxsIG9iamVjdHMgb2YgdW5rbm93biB0eXBlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2ttYWxsb2MJCWNhbGxfc2l0ZT0lbHggcHRyPSVwIGJ5dGVzX3JlcT0lenUgYnl0ZXNfYWxsb2M9JXp1IGdmcF9mbGFncz0lcwora21hbGxvY19ub2RlCWNhbGxfc2l0ZT0lbHggcHRyPSVwIGJ5dGVzX3JlcT0lenUgYnl0ZXNfYWxsb2M9JXp1IGdmcF9mbGFncz0lcyBub2RlPSVkCitrZnJlZQkJY2FsbF9zaXRlPSVseCBwdHI9JXAKKworSGVhdnkgYWN0aXZpdHkgZm9yIHRoZXNlIGV2ZW50cyBtYXkgaW5kaWNhdGUgdGhhdCBhIHNwZWNpZmljIGNhY2hlIGlzCitqdXN0aWZpZWQsIHBhcnRpY3VsYXJseSBpZiBrbWFsbG9jIHNsYWIgcGFnZXMgYXJlIGdldHRpbmcgc2lnbmlmaWNhbnRseQoraW50ZXJuYWwgZnJhZ21lbnRlZCBhcyBhIHJlc3VsdCBvZiB0aGUgYWxsb2NhdGlvbiBwYXR0ZXJuLiBCeSBjb3JyZWxhdGluZwora21hbGxvYyB3aXRoIGtmcmVlLCBpdCBtYXkgYmUgcG9zc2libGUgdG8gaWRlbnRpZnkgbWVtb3J5IGxlYWtzIGFuZCB3aGVyZQordGhlIGFsbG9jYXRpb24gc2l0ZXMgd2VyZS4KKworCisyLiBTbGFiIGFsbG9jYXRpb24gb2Ygc21hbGwgb2JqZWN0cyBvZiBrbm93biB0eXBlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitrbWVtX2NhY2hlX2FsbG9jCWNhbGxfc2l0ZT0lbHggcHRyPSVwIGJ5dGVzX3JlcT0lenUgYnl0ZXNfYWxsb2M9JXp1IGdmcF9mbGFncz0lcwora21lbV9jYWNoZV9hbGxvY19ub2RlCWNhbGxfc2l0ZT0lbHggcHRyPSVwIGJ5dGVzX3JlcT0lenUgYnl0ZXNfYWxsb2M9JXp1IGdmcF9mbGFncz0lcyBub2RlPSVkCitrbWVtX2NhY2hlX2ZyZWUJCWNhbGxfc2l0ZT0lbHggcHRyPSVwCisKK1RoZXNlIGV2ZW50cyBhcmUgc2ltaWxhciBpbiB1c2FnZSB0byB0aGUga21hbGxvYy1yZWxhdGVkIGV2ZW50cyBleGNlcHQgdGhhdAoraXQgaXMgbGlrZWx5IGVhc2llciB0byBwaW4gdGhlIGV2ZW50IGRvd24gdG8gYSBzcGVjaWZpYyBjYWNoZS4gQXQgdGhlIHRpbWUKK29mIHdyaXRpbmcsIG5vIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSBvbiB3aGF0IHNsYWIgaXMgYmVpbmcgYWxsb2NhdGVkIGZyb20sCitidXQgdGhlIGNhbGxfc2l0ZSBjYW4gdXN1YWxseSBiZSB1c2VkIHRvIGV4dHJhcG9sYXRlIHRoYXQgaW5mb3JtYXRpb24uCisKKzMuIFBhZ2UgYWxsb2NhdGlvbgorPT09PT09PT09PT09PT09PT09CittbV9wYWdlX2FsbG9jCQkgIHBhZ2U9JXAgcGZuPSVsdSBvcmRlcj0lZCBtaWdyYXRldHlwZT0lZCBnZnBfZmxhZ3M9JXMKK21tX3BhZ2VfYWxsb2Nfem9uZV9sb2NrZWQgcGFnZT0lcCBwZm49JWx1IG9yZGVyPSV1IG1pZ3JhdGV0eXBlPSVkIGNwdT0lZCBwZXJjcHVfcmVmaWxsPSVkCittbV9wYWdlX2ZyZWUJCSAgcGFnZT0lcCBwZm49JWx1IG9yZGVyPSVkCittbV9wYWdlX2ZyZWVfYmF0Y2hlZAkgIHBhZ2U9JXAgcGZuPSVsdSBvcmRlcj0lZCBjb2xkPSVkCisKK1RoZXNlIGZvdXIgZXZlbnRzIGRlYWwgd2l0aCBwYWdlIGFsbG9jYXRpb24gYW5kIGZyZWVpbmcuIG1tX3BhZ2VfYWxsb2MgaXMKK2Egc2ltcGxlIGluZGljYXRvciBvZiBwYWdlIGFsbG9jYXRvciBhY3Rpdml0eS4gUGFnZXMgbWF5IGJlIGFsbG9jYXRlZCBmcm9tCit0aGUgcGVyLUNQVSBhbGxvY2F0b3IgKGhpZ2ggcGVyZm9ybWFuY2UpIG9yIHRoZSBidWRkeSBhbGxvY2F0b3IuCisKK0lmIHBhZ2VzIGFyZSBhbGxvY2F0ZWQgZGlyZWN0bHkgZnJvbSB0aGUgYnVkZHkgYWxsb2NhdG9yLCB0aGUKK21tX3BhZ2VfYWxsb2Nfem9uZV9sb2NrZWQgZXZlbnQgaXMgdHJpZ2dlcmVkLiBUaGlzIGV2ZW50IGlzIGltcG9ydGFudCBhcyBoaWdoCithbW91bnRzIG9mIGFjdGl2aXR5IGltcGx5IGhpZ2ggYWN0aXZpdHkgb24gdGhlIHpvbmUtPmxvY2suIFRha2luZyB0aGlzIGxvY2sKK2ltcGFpcnMgcGVyZm9ybWFuY2UgYnkgZGlzYWJsaW5nIGludGVycnVwdHMsIGRpcnR5aW5nIGNhY2hlIGxpbmVzIGJldHdlZW4KK0NQVXMgYW5kIHNlcmlhbGlzaW5nIG1hbnkgQ1BVcy4KKworV2hlbiBhIHBhZ2UgaXMgZnJlZWQgZGlyZWN0bHkgYnkgdGhlIGNhbGxlciwgdGhlIG9ubHkgbW1fcGFnZV9mcmVlIGV2ZW50CitpcyB0cmlnZ2VyZWQuIFNpZ25pZmljYW50IGFtb3VudHMgb2YgYWN0aXZpdHkgaGVyZSBjb3VsZCBpbmRpY2F0ZSB0aGF0IHRoZQorY2FsbGVycyBzaG91bGQgYmUgYmF0Y2hpbmcgdGhlaXIgYWN0aXZpdGllcy4KKworV2hlbiBwYWdlcyBhcmUgZnJlZWQgaW4gYmF0Y2gsIHRoZSBhbHNvIG1tX3BhZ2VfZnJlZV9iYXRjaGVkIGlzIHRyaWdnZXJlZC4KK0Jyb2FkbHkgc3BlYWtpbmcsIHBhZ2VzIGFyZSB0YWtlbiBvZmYgdGhlIExSVSBsb2NrIGluIGJ1bGsgYW5kCitmcmVlZCBpbiBiYXRjaCB3aXRoIGEgcGFnZSBsaXN0LiBTaWduaWZpY2FudCBhbW91bnRzIG9mIGFjdGl2aXR5IGhlcmUgY291bGQKK2luZGljYXRlIHRoYXQgdGhlIHN5c3RlbSBpcyB1bmRlciBtZW1vcnkgcHJlc3N1cmUgYW5kIGNhbiBhbHNvIGluZGljYXRlCitjb250ZW50aW9uIG9uIHRoZSB6b25lLT5scnVfbG9jay4KKworNC4gUGVyLUNQVSBBbGxvY2F0b3IgQWN0aXZpdHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CittbV9wYWdlX2FsbG9jX3pvbmVfbG9ja2VkCXBhZ2U9JXAgcGZuPSVsdSBvcmRlcj0ldSBtaWdyYXRldHlwZT0lZCBjcHU9JWQgcGVyY3B1X3JlZmlsbD0lZAorbW1fcGFnZV9wY3B1X2RyYWluCQlwYWdlPSVwIHBmbj0lbHUgb3JkZXI9JWQgY3B1PSVkIG1pZ3JhdGV0eXBlPSVkCisKK0luIGZyb250IG9mIHRoZSBwYWdlIGFsbG9jYXRvciBpcyBhIHBlci1jcHUgcGFnZSBhbGxvY2F0b3IuIEl0IGV4aXN0cyBvbmx5Citmb3Igb3JkZXItMCBwYWdlcywgcmVkdWNlcyBjb250ZW50aW9uIG9uIHRoZSB6b25lLT5sb2NrIGFuZCByZWR1Y2VzIHRoZQorYW1vdW50IG9mIHdyaXRpbmcgb24gc3RydWN0IHBhZ2UuCisKK1doZW4gYSBwZXItQ1BVIGxpc3QgaXMgZW1wdHkgb3IgcGFnZXMgb2YgdGhlIHdyb25nIHR5cGUgYXJlIGFsbG9jYXRlZCwKK3RoZSB6b25lLT5sb2NrIHdpbGwgYmUgdGFrZW4gb25jZSBhbmQgdGhlIHBlci1DUFUgbGlzdCByZWZpbGxlZC4gVGhlIGV2ZW50Cit0cmlnZ2VyZWQgaXMgbW1fcGFnZV9hbGxvY196b25lX2xvY2tlZCBmb3IgZWFjaCBwYWdlIGFsbG9jYXRlZCB3aXRoIHRoZQorZXZlbnQgaW5kaWNhdGluZyB3aGV0aGVyIGl0IGlzIGZvciBhIHBlcmNwdV9yZWZpbGwgb3Igbm90LgorCitXaGVuIHRoZSBwZXItQ1BVIGxpc3QgaXMgdG9vIGZ1bGwsIGEgbnVtYmVyIG9mIHBhZ2VzIGFyZSBmcmVlZCwgZWFjaCBvbmUKK3doaWNoIHRyaWdnZXJzIGEgbW1fcGFnZV9wY3B1X2RyYWluIGV2ZW50LgorCitUaGUgaW5kaXZpZHVhbCBuYXR1cmUgb2YgdGhlIGV2ZW50cyBpcyBzbyB0aGF0IHBhZ2VzIGNhbiBiZSB0cmFja2VkCitiZXR3ZWVuIGFsbG9jYXRpb24gYW5kIGZyZWVpbmcuIEEgbnVtYmVyIG9mIGRyYWluIG9yIHJlZmlsbCBwYWdlcyB0aGF0IG9jY3VyCitjb25zZWN1dGl2ZWx5IGltcGx5IHRoZSB6b25lLT5sb2NrIGJlaW5nIHRha2VuIG9uY2UuIExhcmdlIGFtb3VudHMgb2YgcGVyLUNQVQorcmVmaWxscyBhbmQgZHJhaW5zIGNvdWxkIGltcGx5IGFuIGltYmFsYW5jZSBiZXR3ZWVuIENQVXMgd2hlcmUgdG9vIG11Y2ggd29yaworaXMgYmVpbmcgY29uY2VudHJhdGVkIGluIG9uZSBwbGFjZS4gSXQgY291bGQgYWxzbyBpbmRpY2F0ZSB0aGF0IHRoZSBwZXItQ1BVCitsaXN0cyBzaG91bGQgYmUgYSBsYXJnZXIgc2l6ZS4gRmluYWxseSwgbGFyZ2UgYW1vdW50cyBvZiByZWZpbGxzIG9uIG9uZSBDUFUKK2FuZCBkcmFpbnMgb24gYW5vdGhlciBjb3VsZCBiZSBhIGZhY3RvciBpbiBjYXVzaW5nIGxhcmdlIGFtb3VudHMgb2YgY2FjaGUKK2xpbmUgYm91bmNlcyBkdWUgdG8gd3JpdGVzIGJldHdlZW4gQ1BVcyBhbmQgd29ydGggaW52ZXN0aWdhdGluZyBpZiBwYWdlcworY2FuIGJlIGFsbG9jYXRlZCBhbmQgZnJlZWQgb24gdGhlIHNhbWUgQ1BVIHRocm91Z2ggc29tZSBhbGdvcml0aG0gY2hhbmdlLgorCis1LiBFeHRlcm5hbCBGcmFnbWVudGF0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09CittbV9wYWdlX2FsbG9jX2V4dGZyYWcJCXBhZ2U9JXAgcGZuPSVsdSBhbGxvY19vcmRlcj0lZCBmYWxsYmFja19vcmRlcj0lZCBwYWdlYmxvY2tfb3JkZXI9JWQgYWxsb2NfbWlncmF0ZXR5cGU9JWQgZmFsbGJhY2tfbWlncmF0ZXR5cGU9JWQgZnJhZ21lbnRpbmc9JWQgY2hhbmdlX293bmVyc2hpcD0lZAorCitFeHRlcm5hbCBmcmFnbWVudGF0aW9uIGFmZmVjdHMgd2hldGhlciBhIGhpZ2gtb3JkZXIgYWxsb2NhdGlvbiB3aWxsIGJlCitzdWNjZXNzZnVsIG9yIG5vdC4gRm9yIHNvbWUgdHlwZXMgb2YgaGFyZHdhcmUsIHRoaXMgaXMgaW1wb3J0YW50IGFsdGhvdWdoCitpdCBpcyBhdm9pZGVkIHdoZXJlIHBvc3NpYmxlLiBJZiB0aGUgc3lzdGVtIGlzIHVzaW5nIGh1Z2UgcGFnZXMgYW5kIG5lZWRzCit0byBiZSBhYmxlIHRvIHJlc2l6ZSB0aGUgcG9vbCBvdmVyIHRoZSBsaWZldGltZSBvZiB0aGUgc3lzdGVtLCB0aGlzIHZhbHVlCitpcyBpbXBvcnRhbnQuCisKK0xhcmdlIG51bWJlcnMgb2YgdGhpcyBldmVudCBpbXBsaWVzIHRoYXQgbWVtb3J5IGlzIGZyYWdtZW50aW5nIGFuZAoraGlnaC1vcmRlciBhbGxvY2F0aW9ucyB3aWxsIHN0YXJ0IGZhaWxpbmcgYXQgc29tZSB0aW1lIGluIHRoZSBmdXR1cmUuIE9uZQorbWVhbnMgb2YgcmVkdWNpbmcgdGhlIG9jY3VycmVuY2Ugb2YgdGhpcyBldmVudCBpcyB0byBpbmNyZWFzZSB0aGUgc2l6ZSBvZgorbWluX2ZyZWVfa2J5dGVzIGluIGluY3JlbWVudHMgb2YgMypwYWdlYmxvY2tfc2l6ZSpucl9vbmxpbmVfbm9kZXMgd2hlcmUKK3BhZ2VibG9ja19zaXplIGlzIHVzdWFsbHkgdGhlIHNpemUgb2YgdGhlIGRlZmF1bHQgaHVnZXBhZ2Ugc2l6ZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdHJhY2UvZXZlbnRzLW5taS50eHQgYi9Eb2N1bWVudGF0aW9uL3RyYWNlL2V2ZW50cy1ubWkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwM2M4YzgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3RyYWNlL2V2ZW50cy1ubWkudHh0CkBAIC0wLDAgKzEsNDMgQEAKK05NSSBUcmFjZSBFdmVudHMKKworVGhlc2UgZXZlbnRzIG5vcm1hbGx5IHNob3cgdXAgaGVyZToKKworCS9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzL25taQorCistLQorCitubWlfaGFuZGxlcjoKKworWW91IG1pZ2h0IHdhbnQgdG8gdXNlIHRoaXMgdHJhY2Vwb2ludCBpZiB5b3Ugc3VzcGVjdCB0aGF0IHlvdXIKK05NSSBoYW5kbGVycyBhcmUgaG9nZ2luZyBsYXJnZSBhbW91bnRzIG9mIENQVSB0aW1lLiAgVGhlIGtlcm5lbAord2lsbCB3YXJuIGlmIGl0IHNlZXMgbG9uZy1ydW5uaW5nIGhhbmRsZXJzOgorCisJSU5GTzogTk1JIGhhbmRsZXIgdG9vayB0b28gbG9uZyB0byBydW46IDkuMjA3IG1zZWNzCisKK2FuZCB0aGlzIHRyYWNlcG9pbnQgd2lsbCBhbGxvdyB5b3UgdG8gZHJpbGwgZG93biBhbmQgZ2V0IHNvbWUKK21vcmUgZGV0YWlscy4KKworTGV0J3Mgc2F5IHlvdSBzdXNwZWN0IHRoYXQgcGVyZl9ldmVudF9ubWlfaGFuZGxlcigpIGlzIGNhdXNpbmcKK3lvdSBzb21lIHByb2JsZW1zIGFuZCB5b3Ugb25seSB3YW50IHRvIHRyYWNlIHRoYXQgaGFuZGxlcgorc3BlY2lmaWNhbGx5LiAgWW91IG5lZWQgdG8gZmluZCBpdHMgYWRkcmVzczoKKworCSQgZ3JlcCBwZXJmX2V2ZW50X25taV9oYW5kbGVyIC9wcm9jL2thbGxzeW1zCisJZmZmZmZmZmY4MTYyNTYwMCB0IHBlcmZfZXZlbnRfbm1pX2hhbmRsZXIKKworTGV0J3MgYWxzbyBzYXkgeW91IGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gd2hlbiB0aGF0IGZ1bmN0aW9uIGlzCityZWFsbHkgaG9nZ2luZyBhIGxvdCBvZiBDUFUgdGltZSwgbGlrZSBhIG1pbGxpc2Vjb25kIGF0IGEgdGltZS4KK05vdGUgdGhhdCB0aGUga2VybmVsJ3Mgb3V0cHV0IGlzIGluIG1pbGxpc2Vjb25kcywgYnV0IHRoZSBpbnB1dAordG8gdGhlIGZpbHRlciBpcyBpbiBuYW5vc2Vjb25kcyEgIFlvdSBjYW4gZmlsdGVyIG9uICdkZWx0YV9ucyc6CisKK2NkIC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzL25taS9ubWlfaGFuZGxlcgorZWNobyAnaGFuZGxlcj09MHhmZmZmZmZmZjgxNjI1NjAwICYmIGRlbHRhX25zPjEwMDAwMDAnID4gZmlsdGVyCitlY2hvIDEgPiBlbmFibGUKKworWW91ciBvdXRwdXQgd291bGQgdGhlbiBsb29rIGxpa2U6CisKKyQgY2F0IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2VfcGlwZQorPGlkbGU+LTAgICAgIFswMDBdIGQuaDMgICA1MDUuMzk3NTU4OiBubWlfaGFuZGxlcjogcGVyZl9ldmVudF9ubWlfaGFuZGxlcigpIGRlbHRhX25zOiAzMjM2NzY1IGhhbmRsZWQ6IDEKKzxpZGxlPi0wICAgICBbMDAwXSBkLmgzICAgNTA1LjgwNTg5Mzogbm1pX2hhbmRsZXI6IHBlcmZfZXZlbnRfbm1pX2hhbmRsZXIoKSBkZWx0YV9uczogMzE3NDIzNCBoYW5kbGVkOiAxCis8aWRsZT4tMCAgICAgWzAwMF0gZC5oMyAgIDUwNi4xNTgyMDY6IG5taV9oYW5kbGVyOiBwZXJmX2V2ZW50X25taV9oYW5kbGVyKCkgZGVsdGFfbnM6IDMwODQ2NDIgaGFuZGxlZDogMQorPGlkbGU+LTAgICAgIFswMDBdIGQuaDMgICA1MDYuMzM0MzQ2OiBubWlfaGFuZGxlcjogcGVyZl9ldmVudF9ubWlfaGFuZGxlcigpIGRlbHRhX25zOiAzMDgwMzUxIGhhbmRsZWQ6IDEKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90cmFjZS9ldmVudHMtcG93ZXIudHh0IGIvRG9jdW1lbnRhdGlvbi90cmFjZS9ldmVudHMtcG93ZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxZDUxNGMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3RyYWNlL2V2ZW50cy1wb3dlci50eHQKQEAgLTAsMCArMSw5NiBAQAorCisJCQlTdWJzeXN0ZW0gVHJhY2UgUG9pbnRzOiBwb3dlcgorCitUaGUgcG93ZXIgdHJhY2luZyBzeXN0ZW0gY2FwdHVyZXMgZXZlbnRzIHJlbGF0ZWQgdG8gcG93ZXIgdHJhbnNpdGlvbnMKK3dpdGhpbiB0aGUga2VybmVsLiBCcm9hZGx5IHNwZWFraW5nIHRoZXJlIGFyZSB0aHJlZSBtYWpvciBzdWJoZWFkaW5nczoKKworICBvIFBvd2VyIHN0YXRlIHN3aXRjaCB3aGljaCByZXBvcnRzIGV2ZW50cyByZWxhdGVkIHRvIHN1c3BlbmQgKFMtc3RhdGVzKSwKKyAgICAgY3B1aWRsZSAoQy1zdGF0ZXMpIGFuZCBjcHVmcmVxIChQLXN0YXRlcykKKyAgbyBTeXN0ZW0gY2xvY2sgcmVsYXRlZCBjaGFuZ2VzCisgIG8gUG93ZXIgZG9tYWlucyByZWxhdGVkIGNoYW5nZXMgYW5kIHRyYW5zaXRpb25zCisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHdoYXQgZWFjaCBvZiB0aGUgdHJhY2Vwb2ludHMgaXMgYW5kIHdoeSB0aGV5CittaWdodCBiZSB1c2VmdWwuCisKK0NmLiBpbmNsdWRlL3RyYWNlL2V2ZW50cy9wb3dlci5oIGZvciB0aGUgZXZlbnRzIGRlZmluaXRpb25zLgorCisxLiBQb3dlciBzdGF0ZSBzd2l0Y2ggZXZlbnRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzEuMSBUcmFjZSBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tCisKK0EgJ2NwdScgZXZlbnQgY2xhc3MgZ2F0aGVycyB0aGUgQ1BVLXJlbGF0ZWQgZXZlbnRzOiBjcHVpZGxlIGFuZAorY3B1ZnJlcS4KKworY3B1X2lkbGUJCSJzdGF0ZT0lbHUgY3B1X2lkPSVsdSIKK2NwdV9mcmVxdWVuY3kJCSJzdGF0ZT0lbHUgY3B1X2lkPSVsdSIKKworQSBzdXNwZW5kIGV2ZW50IGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhlIHN5c3RlbSBnb2luZyBpbiBhbmQgb3V0IG9mIHRoZQorc3VzcGVuZCBtb2RlOgorCittYWNoaW5lX3N1c3BlbmQJCSJzdGF0ZT0lbHUiCisKKworTm90ZTogdGhlIHZhbHVlIG9mICctMScgb3IgJzQyOTQ5NjcyOTUnIGZvciBzdGF0ZSBtZWFucyBhbiBleGl0IGZyb20gdGhlIGN1cnJlbnQgc3RhdGUsCitpLmUuIHRyYWNlX2NwdV9pZGxlKDQsIHNtcF9wcm9jZXNzb3JfaWQoKSkgbWVhbnMgdGhhdCB0aGUgc3lzdGVtCitlbnRlcnMgdGhlIGlkbGUgc3RhdGUgNCwgd2hpbGUgdHJhY2VfY3B1X2lkbGUoUFdSX0VWRU5UX0VYSVQsIHNtcF9wcm9jZXNzb3JfaWQoKSkKK21lYW5zIHRoYXQgdGhlIHN5c3RlbSBleGl0cyB0aGUgcHJldmlvdXMgaWRsZSBzdGF0ZS4KKworVGhlIGV2ZW50IHdoaWNoIGhhcyAnc3RhdGU9NDI5NDk2NzI5NScgaW4gdGhlIHRyYWNlIGlzIHZlcnkgaW1wb3J0YW50IHRvIHRoZSB1c2VyCitzcGFjZSB0b29scyB3aGljaCBhcmUgdXNpbmcgaXQgdG8gZGV0ZWN0IHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc3RhdGUsIGFuZCBzbyB0bworY29ycmVjdGx5IGRyYXcgdGhlIHN0YXRlcyBkaWFncmFtcyBhbmQgdG8gY2FsY3VsYXRlIGFjY3VyYXRlIHN0YXRpc3RpY3MgZXRjLgorCisyLiBDbG9ja3MgZXZlbnRzCis9PT09PT09PT09PT09PT09CitUaGUgY2xvY2sgZXZlbnRzIGFyZSB1c2VkIGZvciBjbG9jayBlbmFibGUvZGlzYWJsZSBhbmQgZm9yCitjbG9jayByYXRlIGNoYW5nZS4KKworY2xvY2tfZW5hYmxlCQkiJXMgc3RhdGU9JWx1IGNwdV9pZD0lbHUiCitjbG9ja19kaXNhYmxlCQkiJXMgc3RhdGU9JWx1IGNwdV9pZD0lbHUiCitjbG9ja19zZXRfcmF0ZQkJIiVzIHN0YXRlPSVsdSBjcHVfaWQ9JWx1IgorCitUaGUgZmlyc3QgcGFyYW1ldGVyIGdpdmVzIHRoZSBjbG9jayBuYW1lIChlLmcuICJncGlvMV9pY2xrIikuCitUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyAnMScgZm9yIGVuYWJsZSwgJzAnIGZvciBkaXNhYmxlLCB0aGUgdGFyZ2V0CitjbG9jayByYXRlIGZvciBzZXRfcmF0ZS4KKworMy4gUG93ZXIgZG9tYWlucyBldmVudHMKKz09PT09PT09PT09PT09PT09PT09PT09CitUaGUgcG93ZXIgZG9tYWluIGV2ZW50cyBhcmUgdXNlZCBmb3IgcG93ZXIgZG9tYWlucyB0cmFuc2l0aW9ucworCitwb3dlcl9kb21haW5fdGFyZ2V0CSIlcyBzdGF0ZT0lbHUgY3B1X2lkPSVsdSIKKworVGhlIGZpcnN0IHBhcmFtZXRlciBnaXZlcyB0aGUgcG93ZXIgZG9tYWluIG5hbWUgKGUuZy4gIm1wdV9wd3JkbSIpLgorVGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgdGhlIHBvd2VyIGRvbWFpbiB0YXJnZXQgc3RhdGUuCisKKzQuIFBNIFFvUyBldmVudHMKKz09PT09PT09PT09PT09PT0KK1RoZSBQTSBRb1MgZXZlbnRzIGFyZSB1c2VkIGZvciBRb1MgYWRkL3VwZGF0ZS9yZW1vdmUgcmVxdWVzdCBhbmQgZm9yCit0YXJnZXQvZmxhZ3MgdXBkYXRlLgorCitwbV9xb3NfYWRkX3JlcXVlc3QgICAgICAgICAgICAgICAgICJwbV9xb3NfY2xhc3M9JXMgdmFsdWU9JWQiCitwbV9xb3NfdXBkYXRlX3JlcXVlc3QgICAgICAgICAgICAgICJwbV9xb3NfY2xhc3M9JXMgdmFsdWU9JWQiCitwbV9xb3NfcmVtb3ZlX3JlcXVlc3QgICAgICAgICAgICAgICJwbV9xb3NfY2xhc3M9JXMgdmFsdWU9JWQiCitwbV9xb3NfdXBkYXRlX3JlcXVlc3RfdGltZW91dCAgICAgICJwbV9xb3NfY2xhc3M9JXMgdmFsdWU9JWQsIHRpbWVvdXRfdXM9JWxkIgorCitUaGUgZmlyc3QgcGFyYW1ldGVyIGdpdmVzIHRoZSBRb1MgY2xhc3MgbmFtZSAoZS5nLiAiQ1BVX0RNQV9MQVRFTkNZIikuCitUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyB2YWx1ZSB0byBiZSBhZGRlZC91cGRhdGVkL3JlbW92ZWQuCitUaGUgdGhpcmQgcGFyYW1ldGVyIGlzIHRpbWVvdXQgdmFsdWUgaW4gdXNlYy4KKworcG1fcW9zX3VwZGF0ZV90YXJnZXQgICAgICAgICAgICAgICAiYWN0aW9uPSVzIHByZXZfdmFsdWU9JWQgY3Vycl92YWx1ZT0lZCIKK3BtX3Fvc191cGRhdGVfZmxhZ3MgICAgICAgICAgICAgICAgImFjdGlvbj0lcyBwcmV2X3ZhbHVlPTB4JXggY3Vycl92YWx1ZT0weCV4IgorCitUaGUgZmlyc3QgcGFyYW1ldGVyIGdpdmVzIHRoZSBRb1MgYWN0aW9uIG5hbWUgKGUuZy4gIkFERF9SRVEiKS4KK1RoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIHRoZSBwcmV2aW91cyBRb1MgdmFsdWUuCitUaGUgdGhpcmQgcGFyYW1ldGVyIGlzIHRoZSBjdXJyZW50IFFvUyB2YWx1ZSB0byB1cGRhdGUuCisKK0FuZCwgdGhlcmUgYXJlIGFsc28gZXZlbnRzIHVzZWQgZm9yIGRldmljZSBQTSBRb1MgYWRkL3VwZGF0ZS9yZW1vdmUgcmVxdWVzdC4KKworZGV2X3BtX3Fvc19hZGRfcmVxdWVzdCAgICAgICAgICAgICAiZGV2aWNlPSVzIHR5cGU9JXMgbmV3X3ZhbHVlPSVkIgorZGV2X3BtX3Fvc191cGRhdGVfcmVxdWVzdCAgICAgICAgICAiZGV2aWNlPSVzIHR5cGU9JXMgbmV3X3ZhbHVlPSVkIgorZGV2X3BtX3Fvc19yZW1vdmVfcmVxdWVzdCAgICAgICAgICAiZGV2aWNlPSVzIHR5cGU9JXMgbmV3X3ZhbHVlPSVkIgorCitUaGUgZmlyc3QgcGFyYW1ldGVyIGdpdmVzIHRoZSBkZXZpY2UgbmFtZSB3aGljaCB0cmllcyB0byBhZGQvdXBkYXRlL3JlbW92ZQorUW9TIHJlcXVlc3RzLgorVGhlIHNlY29uZCBwYXJhbWV0ZXIgZ2l2ZXMgdGhlIHJlcXVlc3QgdHlwZSAoZS5nLiAiREVWX1BNX1FPU19SRVNVTUVfTEFURU5DWSIpLgorVGhlIHRoaXJkIHBhcmFtZXRlciBpcyB2YWx1ZSB0byBiZSBhZGRlZC91cGRhdGVkL3JlbW92ZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RyYWNlL2V2ZW50cy50eHQgYi9Eb2N1bWVudGF0aW9uL3RyYWNlL2V2ZW50cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzAxMGJlOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdHJhY2UvZXZlbnRzLnR4dApAQCAtMCwwICsxLDUxNCBAQAorCQkJICAgICBFdmVudCBUcmFjaW5nCisKKwkJRG9jdW1lbnRhdGlvbiB3cml0dGVuIGJ5IFRoZW9kb3JlIFRzJ28KKwkJVXBkYXRlZCBieSBMaSBaZWZhbiBhbmQgVG9tIFphbnVzc2kKKworMS4gSW50cm9kdWN0aW9uCis9PT09PT09PT09PT09PT0KKworVHJhY2Vwb2ludHMgKHNlZSBEb2N1bWVudGF0aW9uL3RyYWNlL3RyYWNlcG9pbnRzLnR4dCkgY2FuIGJlIHVzZWQKK3dpdGhvdXQgY3JlYXRpbmcgY3VzdG9tIGtlcm5lbCBtb2R1bGVzIHRvIHJlZ2lzdGVyIHByb2JlIGZ1bmN0aW9ucwordXNpbmcgdGhlIGV2ZW50IHRyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUuCisKK05vdCBhbGwgdHJhY2Vwb2ludHMgY2FuIGJlIHRyYWNlZCB1c2luZyB0aGUgZXZlbnQgdHJhY2luZyBzeXN0ZW07Cit0aGUga2VybmVsIGRldmVsb3BlciBtdXN0IHByb3ZpZGUgY29kZSBzbmlwcGV0cyB3aGljaCBkZWZpbmUgaG93IHRoZQordHJhY2luZyBpbmZvcm1hdGlvbiBpcyBzYXZlZCBpbnRvIHRoZSB0cmFjaW5nIGJ1ZmZlciwgYW5kIGhvdyB0aGUKK3RyYWNpbmcgaW5mb3JtYXRpb24gc2hvdWxkIGJlIHByaW50ZWQuCisKKzIuIFVzaW5nIEV2ZW50IFRyYWNpbmcKKz09PT09PT09PT09PT09PT09PT09PT0KKworMi4xIFZpYSB0aGUgJ3NldF9ldmVudCcgaW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGV2ZW50cyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB0cmFjaW5nIGNhbiBiZSBmb3VuZCBpbiB0aGUgZmlsZQorL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9hdmFpbGFibGVfZXZlbnRzLgorCitUbyBlbmFibGUgYSBwYXJ0aWN1bGFyIGV2ZW50LCBzdWNoIGFzICdzY2hlZF93YWtldXAnLCBzaW1wbHkgZWNobyBpdAordG8gL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9zZXRfZXZlbnQuIEZvciBleGFtcGxlOgorCisJIyBlY2hvIHNjaGVkX3dha2V1cCA+PiAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3NldF9ldmVudAorCitbIE5vdGU6ICc+PicgaXMgbmVjZXNzYXJ5LCBvdGhlcndpc2UgaXQgd2lsbCBmaXJzdGx5IGRpc2FibGUKKyAgYWxsIHRoZSBldmVudHMuIF0KKworVG8gZGlzYWJsZSBhbiBldmVudCwgZWNobyB0aGUgZXZlbnQgbmFtZSB0byB0aGUgc2V0X2V2ZW50IGZpbGUgcHJlZml4ZWQKK3dpdGggYW4gZXhjbGFtYXRpb24gcG9pbnQ6CisKKwkjIGVjaG8gJyFzY2hlZF93YWtldXAnID4+IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvc2V0X2V2ZW50CisKK1RvIGRpc2FibGUgYWxsIGV2ZW50cywgZWNobyBhbiBlbXB0eSBsaW5lIHRvIHRoZSBzZXRfZXZlbnQgZmlsZToKKworCSMgZWNobyA+IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvc2V0X2V2ZW50CisKK1RvIGVuYWJsZSBhbGwgZXZlbnRzLCBlY2hvICcqOionIG9yICcqOicgdG8gdGhlIHNldF9ldmVudCBmaWxlOgorCisJIyBlY2hvICo6KiA+IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvc2V0X2V2ZW50CisKK1RoZSBldmVudHMgYXJlIG9yZ2FuaXplZCBpbnRvIHN1YnN5c3RlbXMsIHN1Y2ggYXMgZXh0NCwgaXJxLCBzY2hlZCwKK2V0Yy4sIGFuZCBhIGZ1bGwgZXZlbnQgbmFtZSBsb29rcyBsaWtlIHRoaXM6IDxzdWJzeXN0ZW0+OjxldmVudD4uICBUaGUKK3N1YnN5c3RlbSBuYW1lIGlzIG9wdGlvbmFsLCBidXQgaXQgaXMgZGlzcGxheWVkIGluIHRoZSBhdmFpbGFibGVfZXZlbnRzCitmaWxlLiAgQWxsIG9mIHRoZSBldmVudHMgaW4gYSBzdWJzeXN0ZW0gY2FuIGJlIHNwZWNpZmllZCB2aWEgdGhlIHN5bnRheAorIjxzdWJzeXN0ZW0+OioiOyBmb3IgZXhhbXBsZSwgdG8gZW5hYmxlIGFsbCBpcnEgZXZlbnRzLCB5b3UgY2FuIHVzZSB0aGUKK2NvbW1hbmQ6CisKKwkjIGVjaG8gJ2lycToqJyA+IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvc2V0X2V2ZW50CisKKzIuMiBWaWEgdGhlICdlbmFibGUnIHRvZ2dsZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBldmVudHMgYXZhaWxhYmxlIGFyZSBhbHNvIGxpc3RlZCBpbiAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2V2ZW50cy8gaGllcmFyY2h5CitvZiBkaXJlY3Rvcmllcy4KKworVG8gZW5hYmxlIGV2ZW50ICdzY2hlZF93YWtldXAnOgorCisJIyBlY2hvIDEgPiAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2V2ZW50cy9zY2hlZC9zY2hlZF93YWtldXAvZW5hYmxlCisKK1RvIGRpc2FibGUgaXQ6CisKKwkjIGVjaG8gMCA+IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzL3NjaGVkL3NjaGVkX3dha2V1cC9lbmFibGUKKworVG8gZW5hYmxlIGFsbCBldmVudHMgaW4gc2NoZWQgc3Vic3lzdGVtOgorCisJIyBlY2hvIDEgPiAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2V2ZW50cy9zY2hlZC9lbmFibGUKKworVG8gZW5hYmxlIGFsbCBldmVudHM6CisKKwkjIGVjaG8gMSA+IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzL2VuYWJsZQorCitXaGVuIHJlYWRpbmcgb25lIG9mIHRoZXNlIGVuYWJsZSBmaWxlcywgdGhlcmUgYXJlIGZvdXIgcmVzdWx0czoKKworIDAgLSBhbGwgZXZlbnRzIHRoaXMgZmlsZSBhZmZlY3RzIGFyZSBkaXNhYmxlZAorIDEgLSBhbGwgZXZlbnRzIHRoaXMgZmlsZSBhZmZlY3RzIGFyZSBlbmFibGVkCisgWCAtIHRoZXJlIGlzIGEgbWl4dHVyZSBvZiBldmVudHMgZW5hYmxlZCBhbmQgZGlzYWJsZWQKKyA/IC0gdGhpcyBmaWxlIGRvZXMgbm90IGFmZmVjdCBhbnkgZXZlbnQKKworMi4zIEJvb3Qgb3B0aW9uCistLS0tLS0tLS0tLS0tLS0KKworSW4gb3JkZXIgdG8gZmFjaWxpdGF0ZSBlYXJseSBib290IGRlYnVnZ2luZywgdXNlIGJvb3Qgb3B0aW9uOgorCisJdHJhY2VfZXZlbnQ9W2V2ZW50LWxpc3RdCisKK2V2ZW50LWxpc3QgaXMgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBldmVudHMuIFNlZSBzZWN0aW9uIDIuMSBmb3IgZXZlbnQKK2Zvcm1hdC4KKworMy4gRGVmaW5pbmcgYW4gZXZlbnQtZW5hYmxlZCB0cmFjZXBvaW50Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU2VlIFRoZSBleGFtcGxlIHByb3ZpZGVkIGluIHNhbXBsZXMvdHJhY2VfZXZlbnRzCisKKzQuIEV2ZW50IGZvcm1hdHMKKz09PT09PT09PT09PT09PT0KKworRWFjaCB0cmFjZSBldmVudCBoYXMgYSAnZm9ybWF0JyBmaWxlIGFzc29jaWF0ZWQgd2l0aCBpdCB0aGF0IGNvbnRhaW5zCithIGRlc2NyaXB0aW9uIG9mIGVhY2ggZmllbGQgaW4gYSBsb2dnZWQgZXZlbnQuICBUaGlzIGluZm9ybWF0aW9uIGNhbgorYmUgdXNlZCB0byBwYXJzZSB0aGUgYmluYXJ5IHRyYWNlIHN0cmVhbSwgYW5kIGlzIGFsc28gdGhlIHBsYWNlIHRvCitmaW5kIHRoZSBmaWVsZCBuYW1lcyB0aGF0IGNhbiBiZSB1c2VkIGluIGV2ZW50IGZpbHRlcnMgKHNlZSBzZWN0aW9uIDUpLgorCitJdCBhbHNvIGRpc3BsYXlzIHRoZSBmb3JtYXQgc3RyaW5nIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHByaW50IHRoZQorZXZlbnQgaW4gdGV4dCBtb2RlLCBhbG9uZyB3aXRoIHRoZSBldmVudCBuYW1lIGFuZCBJRCB1c2VkIGZvcgorcHJvZmlsaW5nLgorCitFdmVyeSBldmVudCBoYXMgYSBzZXQgb2YgJ2NvbW1vbicgZmllbGRzIGFzc29jaWF0ZWQgd2l0aCBpdDsgdGhlc2UgYXJlCit0aGUgZmllbGRzIHByZWZpeGVkIHdpdGggJ2NvbW1vbl8nLiAgVGhlIG90aGVyIGZpZWxkcyB2YXJ5IGJldHdlZW4KK2V2ZW50cyBhbmQgY29ycmVzcG9uZCB0byB0aGUgZmllbGRzIGRlZmluZWQgaW4gdGhlIFRSQUNFX0VWRU5UCitkZWZpbml0aW9uIGZvciB0aGF0IGV2ZW50LgorCitFYWNoIGZpZWxkIGluIHRoZSBmb3JtYXQgaGFzIHRoZSBmb3JtOgorCisgICAgIGZpZWxkOmZpZWxkLXR5cGUgZmllbGQtbmFtZTsgb2Zmc2V0Ok47IHNpemU6TjsKKword2hlcmUgb2Zmc2V0IGlzIHRoZSBvZmZzZXQgb2YgdGhlIGZpZWxkIGluIHRoZSB0cmFjZSByZWNvcmQgYW5kIHNpemUKK2lzIHRoZSBzaXplIG9mIHRoZSBkYXRhIGl0ZW0sIGluIGJ5dGVzLgorCitGb3IgZXhhbXBsZSwgaGVyZSdzIHRoZSBpbmZvcm1hdGlvbiBkaXNwbGF5ZWQgZm9yIHRoZSAnc2NoZWRfd2FrZXVwJworZXZlbnQ6CisKKyMgY2F0IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzL3NjaGVkL3NjaGVkX3dha2V1cC9mb3JtYXQKKworbmFtZTogc2NoZWRfd2FrZXVwCitJRDogNjAKK2Zvcm1hdDoKKwlmaWVsZDp1bnNpZ25lZCBzaG9ydCBjb21tb25fdHlwZTsJb2Zmc2V0OjA7CXNpemU6MjsKKwlmaWVsZDp1bnNpZ25lZCBjaGFyIGNvbW1vbl9mbGFnczsJb2Zmc2V0OjI7CXNpemU6MTsKKwlmaWVsZDp1bnNpZ25lZCBjaGFyIGNvbW1vbl9wcmVlbXB0X2NvdW50OwlvZmZzZXQ6MzsJc2l6ZToxOworCWZpZWxkOmludCBjb21tb25fcGlkOwlvZmZzZXQ6NDsJc2l6ZTo0OworCWZpZWxkOmludCBjb21tb25fdGdpZDsJb2Zmc2V0Ojg7CXNpemU6NDsKKworCWZpZWxkOmNoYXIgY29tbVtUQVNLX0NPTU1fTEVOXTsJb2Zmc2V0OjEyOwlzaXplOjE2OworCWZpZWxkOnBpZF90IHBpZDsJb2Zmc2V0OjI4OwlzaXplOjQ7CisJZmllbGQ6aW50IHByaW87CW9mZnNldDozMjsJc2l6ZTo0OworCWZpZWxkOmludCBzdWNjZXNzOwlvZmZzZXQ6MzY7CXNpemU6NDsKKwlmaWVsZDppbnQgY3B1OwlvZmZzZXQ6NDA7CXNpemU6NDsKKworcHJpbnQgZm10OiAidGFzayAlczolZCBbJWRdIHN1Y2Nlc3M9JWQgWyUwM2RdIiwgUkVDLT5jb21tLCBSRUMtPnBpZCwKKwkgICBSRUMtPnByaW8sIFJFQy0+c3VjY2VzcywgUkVDLT5jcHUKKworVGhpcyBldmVudCBjb250YWlucyAxMCBmaWVsZHMsIHRoZSBmaXJzdCA1IGNvbW1vbiBhbmQgdGhlIHJlbWFpbmluZyA1CitldmVudC1zcGVjaWZpYy4gIEFsbCB0aGUgZmllbGRzIGZvciB0aGlzIGV2ZW50IGFyZSBudW1lcmljLCBleGNlcHQgZm9yCisnY29tbScgd2hpY2ggaXMgYSBzdHJpbmcsIGEgZGlzdGluY3Rpb24gaW1wb3J0YW50IGZvciBldmVudCBmaWx0ZXJpbmcuCisKKzUuIEV2ZW50IGZpbHRlcmluZworPT09PT09PT09PT09PT09PT09CisKK1RyYWNlIGV2ZW50cyBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGtlcm5lbCBieSBhc3NvY2lhdGluZyBib29sZWFuCisnZmlsdGVyIGV4cHJlc3Npb25zJyB3aXRoIHRoZW0uICBBcyBzb29uIGFzIGFuIGV2ZW50IGlzIGxvZ2dlZCBpbnRvCit0aGUgdHJhY2UgYnVmZmVyLCBpdHMgZmllbGRzIGFyZSBjaGVja2VkIGFnYWluc3QgdGhlIGZpbHRlciBleHByZXNzaW9uCithc3NvY2lhdGVkIHdpdGggdGhhdCBldmVudCB0eXBlLiAgQW4gZXZlbnQgd2l0aCBmaWVsZCB2YWx1ZXMgdGhhdAorJ21hdGNoJyB0aGUgZmlsdGVyIHdpbGwgYXBwZWFyIGluIHRoZSB0cmFjZSBvdXRwdXQsIGFuZCBhbiBldmVudCB3aG9zZQordmFsdWVzIGRvbid0IG1hdGNoIHdpbGwgYmUgZGlzY2FyZGVkLiAgQW4gZXZlbnQgd2l0aCBubyBmaWx0ZXIKK2Fzc29jaWF0ZWQgd2l0aCBpdCBtYXRjaGVzIGV2ZXJ5dGhpbmcsIGFuZCBpcyB0aGUgZGVmYXVsdCB3aGVuIG5vCitmaWx0ZXIgaGFzIGJlZW4gc2V0IGZvciBhbiBldmVudC4KKworNS4xIEV4cHJlc3Npb24gc3ludGF4CistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSBmaWx0ZXIgZXhwcmVzc2lvbiBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSAncHJlZGljYXRlcycgdGhhdCBjYW4gYmUKK2NvbWJpbmVkIHVzaW5nIHRoZSBsb2dpY2FsIG9wZXJhdG9ycyAnJiYnIGFuZCAnfHwnLiAgQSBwcmVkaWNhdGUgaXMKK3NpbXBseSBhIGNsYXVzZSB0aGF0IGNvbXBhcmVzIHRoZSB2YWx1ZSBvZiBhIGZpZWxkIGNvbnRhaW5lZCB3aXRoaW4gYQorbG9nZ2VkIGV2ZW50IHdpdGggYSBjb25zdGFudCB2YWx1ZSBhbmQgcmV0dXJucyBlaXRoZXIgMCBvciAxIGRlcGVuZGluZworb24gd2hldGhlciB0aGUgZmllbGQgdmFsdWUgbWF0Y2hlZCAoMSkgb3IgZGlkbid0IG1hdGNoICgwKToKKworCSAgZmllbGQtbmFtZSByZWxhdGlvbmFsLW9wZXJhdG9yIHZhbHVlCisKK1BhcmVudGhlc2VzIGNhbiBiZSB1c2VkIHRvIHByb3ZpZGUgYXJiaXRyYXJ5IGxvZ2ljYWwgZ3JvdXBpbmdzIGFuZAorZG91YmxlLXF1b3RlcyBjYW4gYmUgdXNlZCB0byBwcmV2ZW50IHRoZSBzaGVsbCBmcm9tIGludGVycHJldGluZworb3BlcmF0b3JzIGFzIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgorCitUaGUgZmllbGQtbmFtZXMgYXZhaWxhYmxlIGZvciB1c2UgaW4gZmlsdGVycyBjYW4gYmUgZm91bmQgaW4gdGhlCisnZm9ybWF0JyBmaWxlcyBmb3IgdHJhY2UgZXZlbnRzIChzZWUgc2VjdGlvbiA0KS4KKworVGhlIHJlbGF0aW9uYWwtb3BlcmF0b3JzIGRlcGVuZCBvbiB0aGUgdHlwZSBvZiB0aGUgZmllbGQgYmVpbmcgdGVzdGVkOgorCitUaGUgb3BlcmF0b3JzIGF2YWlsYWJsZSBmb3IgbnVtZXJpYyBmaWVsZHMgYXJlOgorCis9PSwgIT0sIDwsIDw9LCA+LCA+PSwgJgorCitBbmQgZm9yIHN0cmluZyBmaWVsZHMgdGhleSBhcmU6CisKKz09LCAhPSwgfgorCitUaGUgZ2xvYiAofikgb25seSBhY2NlcHRzIGEgd2lsZCBjYXJkIGNoYXJhY3RlciAoKikgYXQgdGhlIHN0YXJ0IGFuZCBvcgorZW5kIG9mIHRoZSBzdHJpbmcuIEZvciBleGFtcGxlOgorCisgIHByZXZfY29tbSB+ICIqc2giCisgIHByZXZfY29tbSB+ICJzaCoiCisgIHByZXZfY29tbSB+ICIqc2gqIgorCitCdXQgZG9lcyBub3QgYWxsb3cgZm9yIGl0IHRvIGJlIHdpdGhpbiB0aGUgc3RyaW5nOgorCisgIHByZXZfY29tbSB+ICJiYSpzaCIgICA8LS0gaXMgaW52YWxpZAorCis1LjIgU2V0dGluZyBmaWx0ZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgZmlsdGVyIGZvciBhbiBpbmRpdmlkdWFsIGV2ZW50IGlzIHNldCBieSB3cml0aW5nIGEgZmlsdGVyIGV4cHJlc3Npb24KK3RvIHRoZSAnZmlsdGVyJyBmaWxlIGZvciB0aGUgZ2l2ZW4gZXZlbnQuCisKK0ZvciBleGFtcGxlOgorCisjIGNkIC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzL3NjaGVkL3NjaGVkX3dha2V1cAorIyBlY2hvICJjb21tb25fcHJlZW1wdF9jb3VudCA+IDQiID4gZmlsdGVyCisKK0Egc2xpZ2h0bHkgbW9yZSBpbnZvbHZlZCBleGFtcGxlOgorCisjIGNkIC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzL3NpZ25hbC9zaWduYWxfZ2VuZXJhdGUKKyMgZWNobyAiKChzaWcgPj0gMTAgJiYgc2lnIDwgMTUpIHx8IHNpZyA9PSAxNykgJiYgY29tbSAhPSBiYXNoIiA+IGZpbHRlcgorCitJZiB0aGVyZSBpcyBhbiBlcnJvciBpbiB0aGUgZXhwcmVzc2lvbiwgeW91J2xsIGdldCBhbiAnSW52YWxpZAorYXJndW1lbnQnIGVycm9yIHdoZW4gc2V0dGluZyBpdCwgYW5kIHRoZSBlcnJvbmVvdXMgc3RyaW5nIGFsb25nIHdpdGgKK2FuIGVycm9yIG1lc3NhZ2UgY2FuIGJlIHNlZW4gYnkgbG9va2luZyBhdCB0aGUgZmlsdGVyIGUuZy46CisKKyMgY2QgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMvc2lnbmFsL3NpZ25hbF9nZW5lcmF0ZQorIyBlY2hvICIoKHNpZyA+PSAxMCAmJiBzaWcgPCAxNSkgfHwgZHNpZyA9PSAxNykgJiYgY29tbSAhPSBiYXNoIiA+IGZpbHRlcgorLWJhc2g6IGVjaG86IHdyaXRlIGVycm9yOiBJbnZhbGlkIGFyZ3VtZW50CisjIGNhdCBmaWx0ZXIKKygoc2lnID49IDEwICYmIHNpZyA8IDE1KSB8fCBkc2lnID09IDE3KSAmJiBjb21tICE9IGJhc2gKK14KK3BhcnNlX2Vycm9yOiBGaWVsZCBub3QgZm91bmQKKworQ3VycmVudGx5IHRoZSBjYXJldCAoJ14nKSBmb3IgYW4gZXJyb3IgYWx3YXlzIGFwcGVhcnMgYXQgdGhlIGJlZ2lubmluZyBvZgordGhlIGZpbHRlciBzdHJpbmc7IHRoZSBlcnJvciBtZXNzYWdlIHNob3VsZCBzdGlsbCBiZSB1c2VmdWwgdGhvdWdoCitldmVuIHdpdGhvdXQgbW9yZSBhY2N1cmF0ZSBwb3NpdGlvbiBpbmZvLgorCis1LjMgQ2xlYXJpbmcgZmlsdGVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVG8gY2xlYXIgdGhlIGZpbHRlciBmb3IgYW4gZXZlbnQsIHdyaXRlIGEgJzAnIHRvIHRoZSBldmVudCdzIGZpbHRlcgorZmlsZS4KKworVG8gY2xlYXIgdGhlIGZpbHRlcnMgZm9yIGFsbCBldmVudHMgaW4gYSBzdWJzeXN0ZW0sIHdyaXRlIGEgJzAnIHRvIHRoZQorc3Vic3lzdGVtJ3MgZmlsdGVyIGZpbGUuCisKKzUuMyBTdWJzeXN0ZW0gZmlsdGVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZvciBjb252ZW5pZW5jZSwgZmlsdGVycyBmb3IgZXZlcnkgZXZlbnQgaW4gYSBzdWJzeXN0ZW0gY2FuIGJlIHNldCBvcgorY2xlYXJlZCBhcyBhIGdyb3VwIGJ5IHdyaXRpbmcgYSBmaWx0ZXIgZXhwcmVzc2lvbiBpbnRvIHRoZSBmaWx0ZXIgZmlsZQorYXQgdGhlIHJvb3Qgb2YgdGhlIHN1YnN5c3RlbS4gIE5vdGUgaG93ZXZlciwgdGhhdCBpZiBhIGZpbHRlciBmb3IgYW55CitldmVudCB3aXRoaW4gdGhlIHN1YnN5c3RlbSBsYWNrcyBhIGZpZWxkIHNwZWNpZmllZCBpbiB0aGUgc3Vic3lzdGVtCitmaWx0ZXIsIG9yIGlmIHRoZSBmaWx0ZXIgY2FuJ3QgYmUgYXBwbGllZCBmb3IgYW55IG90aGVyIHJlYXNvbiwgdGhlCitmaWx0ZXIgZm9yIHRoYXQgZXZlbnQgd2lsbCByZXRhaW4gaXRzIHByZXZpb3VzIHNldHRpbmcuICBUaGlzIGNhbgorcmVzdWx0IGluIGFuIHVuaW50ZW5kZWQgbWl4dHVyZSBvZiBmaWx0ZXJzIHdoaWNoIGNvdWxkIGxlYWQgdG8KK2NvbmZ1c2luZyAodG8gdGhlIHVzZXIgd2hvIG1pZ2h0IHRoaW5rIGRpZmZlcmVudCBmaWx0ZXJzIGFyZSBpbgorZWZmZWN0KSB0cmFjZSBvdXRwdXQuICBPbmx5IGZpbHRlcnMgdGhhdCByZWZlcmVuY2UganVzdCB0aGUgY29tbW9uCitmaWVsZHMgY2FuIGJlIGd1YXJhbnRlZWQgdG8gcHJvcGFnYXRlIHN1Y2Nlc3NmdWxseSB0byBhbGwgZXZlbnRzLgorCitIZXJlIGFyZSBhIGZldyBzdWJzeXN0ZW0gZmlsdGVyIGV4YW1wbGVzIHRoYXQgYWxzbyBpbGx1c3RyYXRlIHRoZQorYWJvdmUgcG9pbnRzOgorCitDbGVhciB0aGUgZmlsdGVycyBvbiBhbGwgZXZlbnRzIGluIHRoZSBzY2hlZCBzdWJzeXN0ZW06CisKKyMgY2QgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMvc2NoZWQKKyMgZWNobyAwID4gZmlsdGVyCisjIGNhdCBzY2hlZF9zd2l0Y2gvZmlsdGVyCitub25lCisjIGNhdCBzY2hlZF93YWtldXAvZmlsdGVyCitub25lCisKK1NldCBhIGZpbHRlciB1c2luZyBvbmx5IGNvbW1vbiBmaWVsZHMgZm9yIGFsbCBldmVudHMgaW4gdGhlIHNjaGVkCitzdWJzeXN0ZW0gKGFsbCBldmVudHMgZW5kIHVwIHdpdGggdGhlIHNhbWUgZmlsdGVyKToKKworIyBjZCAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2V2ZW50cy9zY2hlZAorIyBlY2hvIGNvbW1vbl9waWQgPT0gMCA+IGZpbHRlcgorIyBjYXQgc2NoZWRfc3dpdGNoL2ZpbHRlcgorY29tbW9uX3BpZCA9PSAwCisjIGNhdCBzY2hlZF93YWtldXAvZmlsdGVyCitjb21tb25fcGlkID09IDAKKworQXR0ZW1wdCB0byBzZXQgYSBmaWx0ZXIgdXNpbmcgYSBub24tY29tbW9uIGZpZWxkIGZvciBhbGwgZXZlbnRzIGluIHRoZQorc2NoZWQgc3Vic3lzdGVtIChhbGwgZXZlbnRzIGJ1dCB0aG9zZSB0aGF0IGhhdmUgYSBwcmV2X3BpZCBmaWVsZCByZXRhaW4KK3RoZWlyIG9sZCBmaWx0ZXJzKToKKworIyBjZCAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2V2ZW50cy9zY2hlZAorIyBlY2hvIHByZXZfcGlkID09IDAgPiBmaWx0ZXIKKyMgY2F0IHNjaGVkX3N3aXRjaC9maWx0ZXIKK3ByZXZfcGlkID09IDAKKyMgY2F0IHNjaGVkX3dha2V1cC9maWx0ZXIKK2NvbW1vbl9waWQgPT0gMAorCis1LjQgUElEIGZpbHRlcmluZworLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHNldF9ldmVudF9waWQgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIHRvcCBldmVudHMgZGlyZWN0b3J5CitleGlzdHMsIHdpbGwgZmlsdGVyIGFsbCBldmVudHMgZnJvbSB0cmFjaW5nIGFueSB0YXNrIHRoYXQgZG9lcyBub3QgaGF2ZSB0aGUKK1BJRCBsaXN0ZWQgaW4gdGhlIHNldF9ldmVudF9waWQgZmlsZS4KKworIyBjZCAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nCisjIGVjaG8gJCQgPiBzZXRfZXZlbnRfcGlkCisjIGVjaG8gMSA+IGV2ZW50cy9lbmFibGVkCisKK1dpbGwgb25seSB0cmFjZSBldmVudHMgZm9yIHRoZSBjdXJyZW50IHRhc2suCisKK1RvIGFkZCBtb3JlIFBJRHMgd2l0aG91dCBsb3NpbmcgdGhlIFBJRHMgYWxyZWFkeSBpbmNsdWRlZCwgdXNlICc+PicuCisKKyMgZWNobyAxMjMgMjQ0IDEgPj4gc2V0X2V2ZW50X3BpZAorCisKKzYuIEV2ZW50IHRyaWdnZXJzCis9PT09PT09PT09PT09PT09PQorCitUcmFjZSBldmVudHMgY2FuIGJlIG1hZGUgdG8gY29uZGl0aW9uYWxseSBpbnZva2UgdHJpZ2dlciAnY29tbWFuZHMnCit3aGljaCBjYW4gdGFrZSB2YXJpb3VzIGZvcm1zIGFuZCBhcmUgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdzsKK2V4YW1wbGVzIHdvdWxkIGJlIGVuYWJsaW5nIG9yIGRpc2FibGluZyBvdGhlciB0cmFjZSBldmVudHMgb3IgaW52b2tpbmcKK2Egc3RhY2sgdHJhY2Ugd2hlbmV2ZXIgdGhlIHRyYWNlIGV2ZW50IGlzIGhpdC4gIFdoZW5ldmVyIGEgdHJhY2UgZXZlbnQKK3dpdGggYXR0YWNoZWQgdHJpZ2dlcnMgaXMgaW52b2tlZCwgdGhlIHNldCBvZiB0cmlnZ2VyIGNvbW1hbmRzCithc3NvY2lhdGVkIHdpdGggdGhhdCBldmVudCBpcyBpbnZva2VkLiAgQW55IGdpdmVuIHRyaWdnZXIgY2FuCithZGRpdGlvbmFsbHkgaGF2ZSBhbiBldmVudCBmaWx0ZXIgb2YgdGhlIHNhbWUgZm9ybSBhcyBkZXNjcmliZWQgaW4KK3NlY3Rpb24gNSAoRXZlbnQgZmlsdGVyaW5nKSBhc3NvY2lhdGVkIHdpdGggaXQgLSB0aGUgY29tbWFuZCB3aWxsIG9ubHkKK2JlIGludm9rZWQgaWYgdGhlIGV2ZW50IGJlaW5nIGludm9rZWQgcGFzc2VzIHRoZSBhc3NvY2lhdGVkIGZpbHRlci4KK0lmIG5vIGZpbHRlciBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIHRyaWdnZXIsIGl0IGFsd2F5cyBwYXNzZXMuCisKK1RyaWdnZXJzIGFyZSBhZGRlZCB0byBhbmQgcmVtb3ZlZCBmcm9tIGEgcGFydGljdWxhciBldmVudCBieSB3cml0aW5nCit0cmlnZ2VyIGV4cHJlc3Npb25zIHRvIHRoZSAndHJpZ2dlcicgZmlsZSBmb3IgdGhlIGdpdmVuIGV2ZW50LgorCitBIGdpdmVuIGV2ZW50IGNhbiBoYXZlIGFueSBudW1iZXIgb2YgdHJpZ2dlcnMgYXNzb2NpYXRlZCB3aXRoIGl0LAorc3ViamVjdCB0byBhbnkgcmVzdHJpY3Rpb25zIHRoYXQgaW5kaXZpZHVhbCBjb21tYW5kcyBtYXkgaGF2ZSBpbiB0aGF0CityZWdhcmQuCisKK0V2ZW50IHRyaWdnZXJzIGFyZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2YgInNvZnQiIG1vZGUsIHdoaWNoIG1lYW5zIHRoYXQKK3doZW5ldmVyIGEgdHJhY2UgZXZlbnQgaGFzIG9uZSBvciBtb3JlIHRyaWdnZXJzIGFzc29jaWF0ZWQgd2l0aCBpdCwKK3RoZSBldmVudCBpcyBhY3RpdmF0ZWQgZXZlbiBpZiBpdCBpc24ndCBhY3R1YWxseSBlbmFibGVkLCBidXQgaXMKK2Rpc2FibGVkIGluIGEgInNvZnQiIG1vZGUuICBUaGF0IGlzLCB0aGUgdHJhY2Vwb2ludCB3aWxsIGJlIGNhbGxlZCwKK2J1dCBqdXN0IHdpbGwgbm90IGJlIHRyYWNlZCwgdW5sZXNzIG9mIGNvdXJzZSBpdCdzIGFjdHVhbGx5IGVuYWJsZWQuCitUaGlzIHNjaGVtZSBhbGxvd3MgdHJpZ2dlcnMgdG8gYmUgaW52b2tlZCBldmVuIGZvciBldmVudHMgdGhhdCBhcmVuJ3QKK2VuYWJsZWQsIGFuZCBhbHNvIGFsbG93cyB0aGUgY3VycmVudCBldmVudCBmaWx0ZXIgaW1wbGVtZW50YXRpb24gdG8gYmUKK3VzZWQgZm9yIGNvbmRpdGlvbmFsbHkgaW52b2tpbmcgdHJpZ2dlcnMuCisKK1RoZSBzeW50YXggZm9yIGV2ZW50IHRyaWdnZXJzIGlzIHJvdWdobHkgYmFzZWQgb24gdGhlIHN5bnRheCBmb3IKK3NldF9mdHJhY2VfZmlsdGVyICdmdHJhY2UgZmlsdGVyIGNvbW1hbmRzJyAoc2VlIHRoZSAnRmlsdGVyIGNvbW1hbmRzJworc2VjdGlvbiBvZiBEb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS50eHQpLCBidXQgdGhlcmUgYXJlIG1ham9yCitkaWZmZXJlbmNlcyBhbmQgdGhlIGltcGxlbWVudGF0aW9uIGlzbid0IGN1cnJlbnRseSB0aWVkIHRvIGl0IGluIGFueQord2F5LCBzbyBiZXdhcmUgYWJvdXQgbWFraW5nIGdlbmVyYWxpemF0aW9ucyBiZXR3ZWVuIHRoZSB0d28uCisKKzYuMSBFeHByZXNzaW9uIHN5bnRheAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RyaWdnZXJzIGFyZSBhZGRlZCBieSBlY2hvaW5nIHRoZSBjb21tYW5kIHRvIHRoZSAndHJpZ2dlcicgZmlsZToKKworICAjIGVjaG8gJ2NvbW1hbmRbOmNvdW50XSBbaWYgZmlsdGVyXScgPiB0cmlnZ2VyCisKK1RyaWdnZXJzIGFyZSByZW1vdmVkIGJ5IGVjaG9pbmcgdGhlIHNhbWUgY29tbWFuZCBidXQgc3RhcnRpbmcgd2l0aCAnIScKK3RvIHRoZSAndHJpZ2dlcicgZmlsZToKKworICAjIGVjaG8gJyFjb21tYW5kWzpjb3VudF0gW2lmIGZpbHRlcl0nID4gdHJpZ2dlcgorCitUaGUgW2lmIGZpbHRlcl0gcGFydCBpc24ndCB1c2VkIGluIG1hdGNoaW5nIGNvbW1hbmRzIHdoZW4gcmVtb3ZpbmcsIHNvCitsZWF2aW5nIHRoYXQgb2ZmIGluIGEgJyEnIGNvbW1hbmQgd2lsbCBhY2NvbXBsaXNoIHRoZSBzYW1lIHRoaW5nIGFzCitoYXZpbmcgaXQgaW4uCisKK1RoZSBmaWx0ZXIgc3ludGF4IGlzIHRoZSBzYW1lIGFzIHRoYXQgZGVzY3JpYmVkIGluIHRoZSAnRXZlbnQKK2ZpbHRlcmluZycgc2VjdGlvbiBhYm92ZS4KKworRm9yIGVhc2Ugb2YgdXNlLCB3cml0aW5nIHRvIHRoZSB0cmlnZ2VyIGZpbGUgdXNpbmcgJz4nIGN1cnJlbnRseSBqdXN0CithZGRzIG9yIHJlbW92ZXMgYSBzaW5nbGUgdHJpZ2dlciBhbmQgdGhlcmUncyBubyBleHBsaWNpdCAnPj4nIHN1cHBvcnQKKygnPicgYWN0dWFsbHkgYmVoYXZlcyBsaWtlICc+PicpIG9yIHRydW5jYXRpb24gc3VwcG9ydCB0byByZW1vdmUgYWxsCit0cmlnZ2VycyAoeW91IGhhdmUgdG8gdXNlICchJyBmb3IgZWFjaCBvbmUgYWRkZWQuKQorCis2LjIgU3VwcG9ydGVkIHRyaWdnZXIgY29tbWFuZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQ6CisKKy0gZW5hYmxlX2V2ZW50L2Rpc2FibGVfZXZlbnQKKworICBUaGVzZSBjb21tYW5kcyBjYW4gZW5hYmxlIG9yIGRpc2FibGUgYW5vdGhlciB0cmFjZSBldmVudCB3aGVuZXZlcgorICB0aGUgdHJpZ2dlcmluZyBldmVudCBpcyBoaXQuICBXaGVuIHRoZXNlIGNvbW1hbmRzIGFyZSByZWdpc3RlcmVkLAorICB0aGUgb3RoZXIgdHJhY2UgZXZlbnQgaXMgYWN0aXZhdGVkLCBidXQgZGlzYWJsZWQgaW4gYSAic29mdCIgbW9kZS4KKyAgVGhhdCBpcywgdGhlIHRyYWNlcG9pbnQgd2lsbCBiZSBjYWxsZWQsIGJ1dCBqdXN0IHdpbGwgbm90IGJlIHRyYWNlZC4KKyAgVGhlIGV2ZW50IHRyYWNlcG9pbnQgc3RheXMgaW4gdGhpcyBtb2RlIGFzIGxvbmcgYXMgdGhlcmUncyBhIHRyaWdnZXIKKyAgaW4gZWZmZWN0IHRoYXQgY2FuIHRyaWdnZXIgaXQuCisKKyAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdHJpZ2dlciBjYXVzZXMga21hbGxvYyBldmVudHMgdG8gYmUKKyAgdHJhY2VkIHdoZW4gYSByZWFkIHN5c3RlbSBjYWxsIGlzIGVudGVyZWQsIGFuZCB0aGUgOjEgYXQgdGhlIGVuZAorICBzcGVjaWZpZXMgdGhhdCB0aGlzIGVuYWJsZW1lbnQgaGFwcGVucyBvbmx5IG9uY2U6CisKKyAgIyBlY2hvICdlbmFibGVfZXZlbnQ6a21lbTprbWFsbG9jOjEnID4gXAorICAgICAgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMvc3lzY2FsbHMvc3lzX2VudGVyX3JlYWQvdHJpZ2dlcgorCisgIFRoZSBmb2xsb3dpbmcgdHJpZ2dlciBjYXVzZXMga21hbGxvYyBldmVudHMgdG8gc3RvcCBiZWluZyB0cmFjZWQKKyAgd2hlbiBhIHJlYWQgc3lzdGVtIGNhbGwgZXhpdHMuICBUaGlzIGRpc2FibGVtZW50IGhhcHBlbnMgb24gZXZlcnkKKyAgcmVhZCBzeXN0ZW0gY2FsbCBleGl0OgorCisgICMgZWNobyAnZGlzYWJsZV9ldmVudDprbWVtOmttYWxsb2MnID4gXAorICAgICAgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMvc3lzY2FsbHMvc3lzX2V4aXRfcmVhZC90cmlnZ2VyCisKKyAgVGhlIGZvcm1hdCBpczoKKworICAgICAgZW5hYmxlX2V2ZW50OjxzeXN0ZW0+OjxldmVudD5bOmNvdW50XQorICAgICAgZGlzYWJsZV9ldmVudDo8c3lzdGVtPjo8ZXZlbnQ+Wzpjb3VudF0KKworICBUbyByZW1vdmUgdGhlIGFib3ZlIGNvbW1hbmRzOgorCisgICMgZWNobyAnIWVuYWJsZV9ldmVudDprbWVtOmttYWxsb2M6MScgPiBcCisgICAgICAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2V2ZW50cy9zeXNjYWxscy9zeXNfZW50ZXJfcmVhZC90cmlnZ2VyCisKKyAgIyBlY2hvICchZGlzYWJsZV9ldmVudDprbWVtOmttYWxsb2MnID4gXAorICAgICAgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMvc3lzY2FsbHMvc3lzX2V4aXRfcmVhZC90cmlnZ2VyCisKKyAgTm90ZSB0aGF0IHRoZXJlIGNhbiBiZSBhbnkgbnVtYmVyIG9mIGVuYWJsZS9kaXNhYmxlX2V2ZW50IHRyaWdnZXJzCisgIHBlciB0cmlnZ2VyaW5nIGV2ZW50LCBidXQgdGhlcmUgY2FuIG9ubHkgYmUgb25lIHRyaWdnZXIgcGVyCisgIHRyaWdnZXJlZCBldmVudC4gZS5nLiBzeXNfZW50ZXJfcmVhZCBjYW4gaGF2ZSB0cmlnZ2VycyBlbmFibGluZyBib3RoCisgIGttZW06a21hbGxvYyBhbmQgc2NoZWQ6c2NoZWRfc3dpdGNoLCBidXQgY2FuJ3QgaGF2ZSB0d28ga21lbTprbWFsbG9jCisgIHZlcnNpb25zIHN1Y2ggYXMga21lbTprbWFsbG9jIGFuZCBrbWVtOmttYWxsb2M6MSBvciAna21lbTprbWFsbG9jIGlmCisgIGJ5dGVzX3JlcSA9PSAyNTYnIGFuZCAna21lbTprbWFsbG9jIGlmIGJ5dGVzX2FsbG9jID09IDI1NicgKHRoZXkKKyAgY291bGQgYmUgY29tYmluZWQgaW50byBhIHNpbmdsZSBmaWx0ZXIgb24ga21lbTprbWFsbG9jIHRob3VnaCkuCisKKy0gc3RhY2t0cmFjZQorCisgIFRoaXMgY29tbWFuZCBkdW1wcyBhIHN0YWNrdHJhY2UgaW4gdGhlIHRyYWNlIGJ1ZmZlciB3aGVuZXZlciB0aGUKKyAgdHJpZ2dlcmluZyBldmVudCBvY2N1cnMuCisKKyAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgdHJpZ2dlciBkdW1wcyBhIHN0YWNrdHJhY2UgZXZlcnkgdGltZSB0aGUKKyAga21hbGxvYyB0cmFjZXBvaW50IGlzIGhpdDoKKworICAjIGVjaG8gJ3N0YWNrdHJhY2UnID4gXAorICAgICAgICAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2V2ZW50cy9rbWVtL2ttYWxsb2MvdHJpZ2dlcgorCisgIFRoZSBmb2xsb3dpbmcgdHJpZ2dlciBkdW1wcyBhIHN0YWNrdHJhY2UgdGhlIGZpcnN0IDUgdGltZXMgYSBrbWFsbG9jCisgIHJlcXVlc3QgaGFwcGVucyB3aXRoIGEgc2l6ZSA+PSA2NEsKKworICAjIGVjaG8gJ3N0YWNrdHJhY2U6NSBpZiBieXRlc19yZXEgPj0gNjU1MzYnID4gXAorICAgICAgICAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2V2ZW50cy9rbWVtL2ttYWxsb2MvdHJpZ2dlcgorCisgIFRoZSBmb3JtYXQgaXM6CisKKyAgICAgIHN0YWNrdHJhY2VbOmNvdW50XQorCisgIFRvIHJlbW92ZSB0aGUgYWJvdmUgY29tbWFuZHM6CisKKyAgIyBlY2hvICchc3RhY2t0cmFjZScgPiBcCisgICAgICAgIC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzL2ttZW0va21hbGxvYy90cmlnZ2VyCisKKyAgIyBlY2hvICchc3RhY2t0cmFjZTo1IGlmIGJ5dGVzX3JlcSA+PSA2NTUzNicgPiBcCisgICAgICAgIC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzL2ttZW0va21hbGxvYy90cmlnZ2VyCisKKyAgVGhlIGxhdHRlciBjYW4gYWxzbyBiZSByZW1vdmVkIG1vcmUgc2ltcGx5IGJ5IHRoZSBmb2xsb3dpbmcgKHdpdGhvdXQKKyAgdGhlIGZpbHRlcik6CisKKyAgIyBlY2hvICchc3RhY2t0cmFjZTo1JyA+IFwKKyAgICAgICAgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMva21lbS9rbWFsbG9jL3RyaWdnZXIKKworICBOb3RlIHRoYXQgdGhlcmUgY2FuIGJlIG9ubHkgb25lIHN0YWNrdHJhY2UgdHJpZ2dlciBwZXIgdHJpZ2dlcmluZworICBldmVudC4KKworLSBzbmFwc2hvdAorCisgIFRoaXMgY29tbWFuZCBjYXVzZXMgYSBzbmFwc2hvdCB0byBiZSB0cmlnZ2VyZWQgd2hlbmV2ZXIgdGhlCisgIHRyaWdnZXJpbmcgZXZlbnQgb2NjdXJzLgorCisgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCBjcmVhdGVzIGEgc25hcHNob3QgZXZlcnkgdGltZSBhIGJsb2NrIHJlcXVlc3QKKyAgcXVldWUgaXMgdW5wbHVnZ2VkIHdpdGggYSBkZXB0aCA+IDEuICBJZiB5b3Ugd2VyZSB0cmFjaW5nIGEgc2V0IG9mCisgIGV2ZW50cyBvciBmdW5jdGlvbnMgYXQgdGhlIHRpbWUsIHRoZSBzbmFwc2hvdCB0cmFjZSBidWZmZXIgd291bGQKKyAgY2FwdHVyZSB0aG9zZSBldmVudHMgd2hlbiB0aGUgdHJpZ2dlciBldmVudCBvY2N1cnJlZDoKKworICAjIGVjaG8gJ3NuYXBzaG90IGlmIG5yX3JxID4gMScgPiBcCisgICAgICAgIC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzL2Jsb2NrL2Jsb2NrX3VucGx1Zy90cmlnZ2VyCisKKyAgVG8gb25seSBzbmFwc2hvdCBvbmNlOgorCisgICMgZWNobyAnc25hcHNob3Q6MSBpZiBucl9ycSA+IDEnID4gXAorICAgICAgICAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2V2ZW50cy9ibG9jay9ibG9ja191bnBsdWcvdHJpZ2dlcgorCisgIFRvIHJlbW92ZSB0aGUgYWJvdmUgY29tbWFuZHM6CisKKyAgIyBlY2hvICchc25hcHNob3QgaWYgbnJfcnEgPiAxJyA+IFwKKyAgICAgICAgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMvYmxvY2svYmxvY2tfdW5wbHVnL3RyaWdnZXIKKworICAjIGVjaG8gJyFzbmFwc2hvdDoxIGlmIG5yX3JxID4gMScgPiBcCisgICAgICAgIC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzL2Jsb2NrL2Jsb2NrX3VucGx1Zy90cmlnZ2VyCisKKyAgTm90ZSB0aGF0IHRoZXJlIGNhbiBiZSBvbmx5IG9uZSBzbmFwc2hvdCB0cmlnZ2VyIHBlciB0cmlnZ2VyaW5nCisgIGV2ZW50LgorCistIHRyYWNlb24vdHJhY2VvZmYKKworICBUaGVzZSBjb21tYW5kcyB0dXJuIHRyYWNpbmcgb24gYW5kIG9mZiB3aGVuIHRoZSBzcGVjaWZpZWQgZXZlbnRzIGFyZQorICBoaXQuIFRoZSBwYXJhbWV0ZXIgZGV0ZXJtaW5lcyBob3cgbWFueSB0aW1lcyB0aGUgdHJhY2luZyBzeXN0ZW0gaXMKKyAgdHVybmVkIG9uIGFuZCBvZmYuIElmIHVuc3BlY2lmaWVkLCB0aGVyZSBpcyBubyBsaW1pdC4KKworICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgdHVybnMgdHJhY2luZyBvZmYgdGhlIGZpcnN0IHRpbWUgYSBibG9jaworICByZXF1ZXN0IHF1ZXVlIGlzIHVucGx1Z2dlZCB3aXRoIGEgZGVwdGggPiAxLiAgSWYgeW91IHdlcmUgdHJhY2luZyBhCisgIHNldCBvZiBldmVudHMgb3IgZnVuY3Rpb25zIGF0IHRoZSB0aW1lLCB5b3UgY291bGQgdGhlbiBleGFtaW5lIHRoZQorICB0cmFjZSBidWZmZXIgdG8gc2VlIHRoZSBzZXF1ZW5jZSBvZiBldmVudHMgdGhhdCBsZWQgdXAgdG8gdGhlCisgIHRyaWdnZXIgZXZlbnQ6CisKKyAgIyBlY2hvICd0cmFjZW9mZjoxIGlmIG5yX3JxID4gMScgPiBcCisgICAgICAgIC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzL2Jsb2NrL2Jsb2NrX3VucGx1Zy90cmlnZ2VyCisKKyAgVG8gYWx3YXlzIGRpc2FibGUgdHJhY2luZyB3aGVuIG5yX3JxICA+IDEgOgorCisgICMgZWNobyAndHJhY2VvZmYgaWYgbnJfcnEgPiAxJyA+IFwKKyAgICAgICAgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMvYmxvY2svYmxvY2tfdW5wbHVnL3RyaWdnZXIKKworICBUbyByZW1vdmUgdGhlIGFib3ZlIGNvbW1hbmRzOgorCisgICMgZWNobyAnIXRyYWNlb2ZmOjEgaWYgbnJfcnEgPiAxJyA+IFwKKyAgICAgICAgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMvYmxvY2svYmxvY2tfdW5wbHVnL3RyaWdnZXIKKworICAjIGVjaG8gJyF0cmFjZW9mZiBpZiBucl9ycSA+IDEnID4gXAorICAgICAgICAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2V2ZW50cy9ibG9jay9ibG9ja191bnBsdWcvdHJpZ2dlcgorCisgIE5vdGUgdGhhdCB0aGVyZSBjYW4gYmUgb25seSBvbmUgdHJhY2VvbiBvciB0cmFjZW9mZiB0cmlnZ2VyIHBlcgorICB0cmlnZ2VyaW5nIGV2ZW50LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UtZGVzaWduLnR4dCBiL0RvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLWRlc2lnbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ1ZjkxNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdHJhY2UvZnRyYWNlLWRlc2lnbi50eHQKQEAgLTAsMCArMSwzODIgQEAKKwkJZnVuY3Rpb24gdHJhY2VyIGd1dHMKKwkJPT09PT09PT09PT09PT09PT09PT0KKwkJQnkgTWlrZSBGcnlzaW5nZXIKKworSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0KKworSGVyZSB3ZSB3aWxsIGNvdmVyIHRoZSBhcmNoaXRlY3R1cmUgcGllY2VzIHRoYXQgdGhlIGNvbW1vbiBmdW5jdGlvbiB0cmFjaW5nCitjb2RlIHJlbGllcyBvbiBmb3IgcHJvcGVyIGZ1bmN0aW9uaW5nLiAgVGhpbmdzIGFyZSBicm9rZW4gZG93biBpbnRvIGluY3JlYXNpbmcKK2NvbXBsZXhpdHkgc28gdGhhdCB5b3UgY2FuIHN0YXJ0IHNpbXBsZSBhbmQgYXQgbGVhc3QgZ2V0IGJhc2ljIGZ1bmN0aW9uYWxpdHkuCisKK05vdGUgdGhhdCB0aGlzIGZvY3VzZXMgb24gYXJjaGl0ZWN0dXJlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb25seS4gIElmIHlvdQord2FudCBtb3JlIGV4cGxhbmF0aW9uIG9mIGEgZmVhdHVyZSBpbiB0ZXJtcyBvZiBjb21tb24gY29kZSwgcmV2aWV3IHRoZSBjb21tb24KK2Z0cmFjZS50eHQgZmlsZS4KKworSWRlYWxseSwgZXZlcnlvbmUgd2hvIHdpc2hlcyB0byByZXRhaW4gcGVyZm9ybWFuY2Ugd2hpbGUgc3VwcG9ydGluZyB0cmFjaW5nIGluCit0aGVpciBrZXJuZWwgc2hvdWxkIG1ha2UgaXQgYWxsIHRoZSB3YXkgdG8gZHluYW1pYyBmdHJhY2Ugc3VwcG9ydC4KKworCitQcmVyZXF1aXNpdGVzCistLS0tLS0tLS0tLS0tCisKK0Z0cmFjZSByZWxpZXMgb24gdGhlc2UgZmVhdHVyZXMgYmVpbmcgaW1wbGVtZW50ZWQ6CisgU1RBQ0tUUkFDRV9TVVBQT1JUIC0gaW1wbGVtZW50IHNhdmVfc3RhY2tfdHJhY2UoKQorIFRSQUNFX0lSUUZMQUdTX1NVUFBPUlQgLSBpbXBsZW1lbnQgaW5jbHVkZS9hc20vaXJxZmxhZ3MuaAorCisKK0hBVkVfRlVOQ1RJT05fVFJBQ0VSCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitZb3Ugd2lsbCBuZWVkIHRvIGltcGxlbWVudCB0aGUgbWNvdW50IGFuZCB0aGUgZnRyYWNlX3N0dWIgZnVuY3Rpb25zLgorCitUaGUgZXhhY3QgbWNvdW50IHN5bWJvbCBuYW1lIHdpbGwgZGVwZW5kIG9uIHlvdXIgdG9vbGNoYWluLiAgU29tZSBjYWxsIGl0CisibWNvdW50IiwgIl9tY291bnQiLCBvciBldmVuICJfX21jb3VudCIuICBZb3UgY2FuIHByb2JhYmx5IGZpZ3VyZSBpdCBvdXQgYnkKK3J1bm5pbmcgc29tZXRoaW5nIGxpa2U6CisJJCBlY2hvICdtYWluKCl7fScgfCBnY2MgLXggYyAtUyAtbyAtIC0gLXBnIHwgZ3JlcCBtY291bnQKKwkgICAgICAgIGNhbGwgICAgbWNvdW50CitXZSdsbCBtYWtlIHRoZSBhc3N1bXB0aW9uIGJlbG93IHRoYXQgdGhlIHN5bWJvbCBpcyAibWNvdW50IiBqdXN0IHRvIGtlZXAgdGhpbmdzCituaWNlIGFuZCBzaW1wbGUgaW4gdGhlIGV4YW1wbGVzLgorCitLZWVwIGluIG1pbmQgdGhhdCB0aGUgQUJJIHRoYXQgaXMgaW4gZWZmZWN0IGluc2lkZSBvZiB0aGUgbWNvdW50IGZ1bmN0aW9uIGlzCisqaGlnaGx5KiBhcmNoaXRlY3R1cmUvdG9vbGNoYWluIHNwZWNpZmljLiAgV2UgY2Fubm90IGhlbHAgeW91IGluIHRoaXMgcmVnYXJkLAorc29ycnkuICBEaWcgdXAgc29tZSBvbGQgZG9jdW1lbnRhdGlvbiBhbmQvb3IgZmluZCBzb21lb25lIG1vcmUgZmFtaWxpYXIgdGhhbgoreW91IHRvIGJhbmcgaWRlYXMgb2ZmIG9mLiAgVHlwaWNhbGx5LCByZWdpc3RlciB1c2FnZSAoYXJndW1lbnQvc2NyYXRjaC9ldGMuLi4pCitpcyBhIG1ham9yIGlzc3VlIGF0IHRoaXMgcG9pbnQsIGVzcGVjaWFsbHkgaW4gcmVsYXRpb24gdG8gdGhlIGxvY2F0aW9uIG9mIHRoZQorbWNvdW50IGNhbGwgKGJlZm9yZS9hZnRlciBmdW5jdGlvbiBwcm9sb2d1ZSkuICBZb3UgbWlnaHQgYWxzbyB3YW50IHRvIGxvb2sgYXQKK2hvdyBnbGliYyBoYXMgaW1wbGVtZW50ZWQgdGhlIG1jb3VudCBmdW5jdGlvbiBmb3IgeW91ciBhcmNoaXRlY3R1cmUuICBJdCBtaWdodAorYmUgKHNlbWktKXJlbGV2YW50LgorCitUaGUgbWNvdW50IGZ1bmN0aW9uIHNob3VsZCBjaGVjayB0aGUgZnVuY3Rpb24gcG9pbnRlciBmdHJhY2VfdHJhY2VfZnVuY3Rpb24KK3RvIHNlZSBpZiBpdCBpcyBzZXQgdG8gZnRyYWNlX3N0dWIuICBJZiBpdCBpcywgdGhlcmUgaXMgbm90aGluZyBmb3IgeW91IHRvIGRvLAorc28gcmV0dXJuIGltbWVkaWF0ZWx5LiAgSWYgaXQgaXNuJ3QsIHRoZW4gY2FsbCB0aGF0IGZ1bmN0aW9uIGluIHRoZSBzYW1lIHdheQordGhlIG1jb3VudCBmdW5jdGlvbiBub3JtYWxseSBjYWxscyBfX21jb3VudF9pbnRlcm5hbCAtLSB0aGUgZmlyc3QgYXJndW1lbnQgaXMKK3RoZSAiZnJvbXBjIiB3aGlsZSB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSAic2VsZnBjIiAoYWRqdXN0ZWQgdG8gcmVtb3ZlIHRoZQorc2l6ZSBvZiB0aGUgbWNvdW50IGNhbGwgdGhhdCBpcyBlbWJlZGRlZCBpbiB0aGUgZnVuY3Rpb24pLgorCitGb3IgZXhhbXBsZSwgaWYgdGhlIGZ1bmN0aW9uIGZvbygpIGNhbGxzIGJhcigpLCB3aGVuIHRoZSBiYXIoKSBmdW5jdGlvbiBjYWxscworbWNvdW50KCksIHRoZSBhcmd1bWVudHMgbWNvdW50KCkgd2lsbCBwYXNzIHRvIHRoZSB0cmFjZXIgYXJlOgorCSJmcm9tcGMiIC0gdGhlIGFkZHJlc3MgYmFyKCkgd2lsbCB1c2UgdG8gcmV0dXJuIHRvIGZvbygpCisJInNlbGZwYyIgLSB0aGUgYWRkcmVzcyBiYXIoKSAod2l0aCBtY291bnQoKSBzaXplIGFkanVzdG1lbnQpCisKK0Fsc28ga2VlcCBpbiBtaW5kIHRoYXQgdGhpcyBtY291bnQgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgKmEgbG90Kiwgc28KK29wdGltaXppbmcgZm9yIHRoZSBkZWZhdWx0IGNhc2Ugb2Ygbm8gdHJhY2VyIHdpbGwgaGVscCB0aGUgc21vb3RoIHJ1bm5pbmcgb2YKK3lvdXIgc3lzdGVtIHdoZW4gdHJhY2luZyBpcyBkaXNhYmxlZC4gIFNvIHRoZSBzdGFydCBvZiB0aGUgbWNvdW50IGZ1bmN0aW9uIGlzCit0eXBpY2FsbHkgdGhlIGJhcmUgbWluaW11bSB3aXRoIGNoZWNraW5nIHRoaW5ncyBiZWZvcmUgcmV0dXJuaW5nLiAgVGhhdCBhbHNvCittZWFucyB0aGUgY29kZSBmbG93IHNob3VsZCB1c3VhbGx5IGJlIGtlcHQgbGluZWFyIChpLmUuIG5vIGJyYW5jaGluZyBpbiB0aGUgbm9wCitjYXNlKS4gIFRoaXMgaXMgb2YgY291cnNlIGFuIG9wdGltaXphdGlvbiBhbmQgbm90IGEgaGFyZCByZXF1aXJlbWVudC4KKworSGVyZSBpcyBzb21lIHBzZXVkbyBjb2RlIHRoYXQgc2hvdWxkIGhlbHAgKHRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgYWN0dWFsbHkgYmUKK2ltcGxlbWVudGVkIGluIGFzc2VtYmx5KToKKwordm9pZCBmdHJhY2Vfc3R1Yih2b2lkKQoreworCXJldHVybjsKK30KKwordm9pZCBtY291bnQodm9pZCkKK3sKKwkvKiBzYXZlIGFueSBiYXJlIHN0YXRlIG5lZWRlZCBpbiBvcmRlciB0byBkbyBpbml0aWFsIGNoZWNraW5nICovCisKKwlleHRlcm4gdm9pZCAoKmZ0cmFjZV90cmFjZV9mdW5jdGlvbikodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7CisJaWYgKGZ0cmFjZV90cmFjZV9mdW5jdGlvbiAhPSBmdHJhY2Vfc3R1YikKKwkJZ290byBkb190cmFjZTsKKworCS8qIHJlc3RvcmUgYW55IGJhcmUgc3RhdGUgKi8KKworCXJldHVybjsKKworZG9fdHJhY2U6CisKKwkvKiBzYXZlIGFsbCBzdGF0ZSBuZWVkZWQgYnkgdGhlIEFCSSAoc2VlIHBhcmFncmFwaCBhYm92ZSkgKi8KKworCXVuc2lnbmVkIGxvbmcgZnJvbXBjID0gLi4uOworCXVuc2lnbmVkIGxvbmcgc2VsZnBjID0gPHJldHVybiBhZGRyZXNzPiAtIE1DT1VOVF9JTlNOX1NJWkU7CisJZnRyYWNlX3RyYWNlX2Z1bmN0aW9uKGZyb21wYywgc2VsZnBjKTsKKworCS8qIHJlc3RvcmUgYWxsIHN0YXRlIG5lZWRlZCBieSB0aGUgQUJJICovCit9CisKK0Rvbid0IGZvcmdldCB0byBleHBvcnQgbWNvdW50IGZvciBtb2R1bGVzICEKK2V4dGVybiB2b2lkIG1jb3VudCh2b2lkKTsKK0VYUE9SVF9TWU1CT0wobWNvdW50KTsKKworCitIQVZFX0ZVTkNUSU9OX0dSQVBIX1RSQUNFUgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRGVlcCBicmVhdGggLi4uIHRpbWUgdG8gZG8gc29tZSByZWFsIHdvcmsuICBIZXJlIHlvdSB3aWxsIG5lZWQgdG8gdXBkYXRlIHRoZQorbWNvdW50IGZ1bmN0aW9uIHRvIGNoZWNrIGZ0cmFjZSBncmFwaCBmdW5jdGlvbiBwb2ludGVycywgYXMgd2VsbCBhcyBpbXBsZW1lbnQKK3NvbWUgZnVuY3Rpb25zIHRvIHNhdmUgKGhpamFjaykgYW5kIHJlc3RvcmUgdGhlIHJldHVybiBhZGRyZXNzLgorCitUaGUgbWNvdW50IGZ1bmN0aW9uIHNob3VsZCBjaGVjayB0aGUgZnVuY3Rpb24gcG9pbnRlcnMgZnRyYWNlX2dyYXBoX3JldHVybgorKGNvbXBhcmUgdG8gZnRyYWNlX3N0dWIpIGFuZCBmdHJhY2VfZ3JhcGhfZW50cnkgKGNvbXBhcmUgdG8KK2Z0cmFjZV9ncmFwaF9lbnRyeV9zdHViKS4gIElmIGVpdGhlciBvZiB0aG9zZSBpcyBub3Qgc2V0IHRvIHRoZSByZWxldmFudCBzdHViCitmdW5jdGlvbiwgY2FsbCB0aGUgYXJjaC1zcGVjaWZpYyBmdW5jdGlvbiBmdHJhY2VfZ3JhcGhfY2FsbGVyIHdoaWNoIGluIHR1cm4KK2NhbGxzIHRoZSBhcmNoLXNwZWNpZmljIGZ1bmN0aW9uIHByZXBhcmVfZnRyYWNlX3JldHVybi4gIE5laXRoZXIgb2YgdGhlc2UKK2Z1bmN0aW9uIG5hbWVzIGlzIHN0cmljdGx5IHJlcXVpcmVkLCBidXQgeW91IHNob3VsZCB1c2UgdGhlbSBhbnl3YXkgdG8gc3RheQorY29uc2lzdGVudCBhY3Jvc3MgdGhlIGFyY2hpdGVjdHVyZSBwb3J0cyAtLSBlYXNpZXIgdG8gY29tcGFyZSAmIGNvbnRyYXN0Cit0aGluZ3MuCisKK1RoZSBhcmd1bWVudHMgdG8gcHJlcGFyZV9mdHJhY2VfcmV0dXJuIGFyZSBzbGlnaHRseSBkaWZmZXJlbnQgdGhhbiB3aGF0IGFyZQorcGFzc2VkIHRvIGZ0cmFjZV90cmFjZV9mdW5jdGlvbi4gIFRoZSBzZWNvbmQgYXJndW1lbnQgInNlbGZwYyIgaXMgdGhlIHNhbWUsCitidXQgdGhlIGZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSBhIHBvaW50ZXIgdG8gdGhlICJmcm9tcGMiLiAgVHlwaWNhbGx5IHRoaXMgaXMKK2xvY2F0ZWQgb24gdGhlIHN0YWNrLiAgVGhpcyBhbGxvd3MgdGhlIGZ1bmN0aW9uIHRvIGhpamFjayB0aGUgcmV0dXJuIGFkZHJlc3MKK3RlbXBvcmFyaWx5IHRvIGhhdmUgaXQgcG9pbnQgdG8gdGhlIGFyY2gtc3BlY2lmaWMgZnVuY3Rpb24gcmV0dXJuX3RvX2hhbmRsZXIuCitUaGF0IGZ1bmN0aW9uIHdpbGwgc2ltcGx5IGNhbGwgdGhlIGNvbW1vbiBmdHJhY2VfcmV0dXJuX3RvX2hhbmRsZXIgZnVuY3Rpb24gYW5kCit0aGF0IHdpbGwgcmV0dXJuIHRoZSBvcmlnaW5hbCByZXR1cm4gYWRkcmVzcyB3aXRoIHdoaWNoIHlvdSBjYW4gcmV0dXJuIHRvIHRoZQorb3JpZ2luYWwgY2FsbCBzaXRlLgorCitIZXJlIGlzIHRoZSB1cGRhdGVkIG1jb3VudCBwc2V1ZG8gY29kZToKK3ZvaWQgbWNvdW50KHZvaWQpCit7CisuLi4KKwlpZiAoZnRyYWNlX3RyYWNlX2Z1bmN0aW9uICE9IGZ0cmFjZV9zdHViKQorCQlnb3RvIGRvX3RyYWNlOworCisrI2lmZGVmIENPTkZJR19GVU5DVElPTl9HUkFQSF9UUkFDRVIKKysJZXh0ZXJuIHZvaWQgKCpmdHJhY2VfZ3JhcGhfcmV0dXJuKSguLi4pOworKwlleHRlcm4gdm9pZCAoKmZ0cmFjZV9ncmFwaF9lbnRyeSkoLi4uKTsKKysJaWYgKGZ0cmFjZV9ncmFwaF9yZXR1cm4gIT0gZnRyYWNlX3N0dWIgfHwKKysJICAgIGZ0cmFjZV9ncmFwaF9lbnRyeSAhPSBmdHJhY2VfZ3JhcGhfZW50cnlfc3R1YikKKysJCWZ0cmFjZV9ncmFwaF9jYWxsZXIoKTsKKysjZW5kaWYKKworCS8qIHJlc3RvcmUgYW55IGJhcmUgc3RhdGUgKi8KKy4uLgorCitIZXJlIGlzIHRoZSBwc2V1ZG8gY29kZSBmb3IgdGhlIG5ldyBmdHJhY2VfZ3JhcGhfY2FsbGVyIGFzc2VtYmx5IGZ1bmN0aW9uOgorI2lmZGVmIENPTkZJR19GVU5DVElPTl9HUkFQSF9UUkFDRVIKK3ZvaWQgZnRyYWNlX2dyYXBoX2NhbGxlcih2b2lkKQoreworCS8qIHNhdmUgYWxsIHN0YXRlIG5lZWRlZCBieSB0aGUgQUJJICovCisKKwl1bnNpZ25lZCBsb25nICpmcm9tcGMgPSAmLi4uOworCXVuc2lnbmVkIGxvbmcgc2VsZnBjID0gPHJldHVybiBhZGRyZXNzPiAtIE1DT1VOVF9JTlNOX1NJWkU7CisJLyogcGFzc2luZyBmcmFtZSBwb2ludGVyIHVwIGlzIG9wdGlvbmFsIC0tIHNlZSBiZWxvdyAqLworCXByZXBhcmVfZnRyYWNlX3JldHVybihmcm9tcGMsIHNlbGZwYywgZnJhbWVfcG9pbnRlcik7CisKKwkvKiByZXN0b3JlIGFsbCBzdGF0ZSBuZWVkZWQgYnkgdGhlIEFCSSAqLworfQorI2VuZGlmCisKK0ZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gaW1wbGVtZW50IHByZXBhcmVfZnRyYWNlX3JldHVybigpLCBzaW1wbHkgbG9vayBhdCB0aGUKK3g4NiB2ZXJzaW9uICh0aGUgZnJhbWUgcG9pbnRlciBwYXNzaW5nIGlzIG9wdGlvbmFsOyBzZWUgdGhlIG5leHQgc2VjdGlvbiBmb3IKK21vcmUgaW5mb3JtYXRpb24pLiAgVGhlIG9ubHkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHBpZWNlIGluIGl0IGlzIHRoZSBzZXR1cCBvZgordGhlIGZhdWx0IHJlY292ZXJ5IHRhYmxlICh0aGUgYXNtKC4uLikgY29kZSkuICBUaGUgcmVzdCBzaG91bGQgYmUgdGhlIHNhbWUKK2Fjcm9zcyBhcmNoaXRlY3R1cmVzLgorCitIZXJlIGlzIHRoZSBwc2V1ZG8gY29kZSBmb3IgdGhlIG5ldyByZXR1cm5fdG9faGFuZGxlciBhc3NlbWJseSBmdW5jdGlvbi4gIE5vdGUKK3RoYXQgdGhlIEFCSSB0aGF0IGFwcGxpZXMgaGVyZSBpcyBkaWZmZXJlbnQgZnJvbSB3aGF0IGFwcGxpZXMgdG8gdGhlIG1jb3VudAorY29kZS4gIFNpbmNlIHlvdSBhcmUgcmV0dXJuaW5nIGZyb20gYSBmdW5jdGlvbiAoYWZ0ZXIgdGhlIGVwaWxvZ3VlKSwgeW91IG1pZ2h0CitiZSBhYmxlIHRvIHNraW1wIG9uIHRoaW5ncyBzYXZlZC9yZXN0b3JlZCAodXN1YWxseSBqdXN0IHJlZ2lzdGVycyB1c2VkIHRvIHBhc3MKK3JldHVybiB2YWx1ZXMpLgorCisjaWZkZWYgQ09ORklHX0ZVTkNUSU9OX0dSQVBIX1RSQUNFUgordm9pZCByZXR1cm5fdG9faGFuZGxlcih2b2lkKQoreworCS8qIHNhdmUgYWxsIHN0YXRlIG5lZWRlZCBieSB0aGUgQUJJIChzZWUgcGFyYWdyYXBoIGFib3ZlKSAqLworCisJdm9pZCAoKm9yaWdpbmFsX3JldHVybl9wb2ludCkodm9pZCkgPSBmdHJhY2VfcmV0dXJuX3RvX2hhbmRsZXIoKTsKKworCS8qIHJlc3RvcmUgYWxsIHN0YXRlIG5lZWRlZCBieSB0aGUgQUJJICovCisKKwkvKiB0aGlzIGlzIHVzdWFsbHkgZWl0aGVyIGEgcmV0dXJuIG9yIGEganVtcCAqLworCW9yaWdpbmFsX3JldHVybl9wb2ludCgpOworfQorI2VuZGlmCisKKworSEFWRV9GVU5DVElPTl9HUkFQSF9GUF9URVNUCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQW4gYXJjaCBtYXkgcGFzcyBpbiBhIHVuaXF1ZSB2YWx1ZSAoZnJhbWUgcG9pbnRlcikgdG8gYm90aCB0aGUgZW50ZXJpbmcgYW5kCitleGl0aW5nIG9mIGEgZnVuY3Rpb24uICBPbiBleGl0LCB0aGUgdmFsdWUgaXMgY29tcGFyZWQgYW5kIGlmIGl0IGRvZXMgbm90CittYXRjaCwgdGhlbiBpdCB3aWxsIHBhbmljIHRoZSBrZXJuZWwuICBUaGlzIGlzIGxhcmdlbHkgYSBzYW5pdHkgY2hlY2sgZm9yIGJhZAorY29kZSBnZW5lcmF0aW9uIHdpdGggZ2NjLiAgSWYgZ2NjIGZvciB5b3VyIHBvcnQgc2FuZWx5IHVwZGF0ZXMgdGhlIGZyYW1lCitwb2ludGVyIHVuZGVyIGRpZmZlcmVudCBvcHRpbWl6YXRpb24gbGV2ZWxzLCB0aGVuIGlnbm9yZSB0aGlzIG9wdGlvbi4KKworSG93ZXZlciwgYWRkaW5nIHN1cHBvcnQgZm9yIGl0IGlzbid0IHRlcnJpYmx5IGRpZmZpY3VsdC4gIEluIHlvdXIgYXNzZW1ibHkgY29kZQordGhhdCBjYWxscyBwcmVwYXJlX2Z0cmFjZV9yZXR1cm4oKSwgcGFzcyB0aGUgZnJhbWUgcG9pbnRlciBhcyB0aGUgM3JkIGFyZ3VtZW50LgorVGhlbiBpbiB0aGUgQyB2ZXJzaW9uIG9mIHRoYXQgZnVuY3Rpb24sIGRvIHdoYXQgdGhlIHg4NiBwb3J0IGRvZXMgYW5kIHBhc3MgaXQKK2Fsb25nIHRvIGZ0cmFjZV9wdXNoX3JldHVybl90cmFjZSgpIGluc3RlYWQgb2YgYSBzdHViIHZhbHVlIG9mIDAuCisKK1NpbWlsYXJseSwgd2hlbiB5b3UgY2FsbCBmdHJhY2VfcmV0dXJuX3RvX2hhbmRsZXIoKSwgcGFzcyBpdCB0aGUgZnJhbWUgcG9pbnRlci4KKworCitIQVZFX0ZUUkFDRV9OTUlfRU5URVIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJZiB5b3UgY2FuJ3QgdHJhY2UgTk1JIGZ1bmN0aW9ucywgdGhlbiBza2lwIHRoaXMgb3B0aW9uLgorCis8ZGV0YWlscyB0byBiZSBmaWxsZWQ+CisKKworSEFWRV9TWVNDQUxMX1RSQUNFUE9JTlRTCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWW91IG5lZWQgdmVyeSBmZXcgdGhpbmdzIHRvIGdldCB0aGUgc3lzY2FsbHMgdHJhY2luZyBpbiBhbiBhcmNoLgorCistIFN1cHBvcnQgSEFWRV9BUkNIX1RSQUNFSE9PSyAoc2VlIGFyY2gvS2NvbmZpZykuCistIEhhdmUgYSBOUl9zeXNjYWxscyB2YXJpYWJsZSBpbiA8YXNtL3VuaXN0ZC5oPiB0aGF0IHByb3ZpZGVzIHRoZSBudW1iZXIKKyAgb2Ygc3lzY2FsbHMgc3VwcG9ydGVkIGJ5IHRoZSBhcmNoLgorLSBTdXBwb3J0IHRoZSBUSUZfU1lTQ0FMTF9UUkFDRVBPSU5UIHRocmVhZCBmbGFncy4KKy0gUHV0IHRoZSB0cmFjZV9zeXNfZW50ZXIoKSBhbmQgdHJhY2Vfc3lzX2V4aXQoKSB0cmFjZXBvaW50cyBjYWxscyBmcm9tIHB0cmFjZQorICBpbiB0aGUgcHRyYWNlIHN5c2NhbGxzIHRyYWNpbmcgcGF0aC4KKy0gSWYgdGhlIHN5c3RlbSBjYWxsIHRhYmxlIG9uIHRoaXMgYXJjaCBpcyBtb3JlIGNvbXBsaWNhdGVkIHRoYW4gYSBzaW1wbGUgYXJyYXkKKyAgb2YgYWRkcmVzc2VzIG9mIHRoZSBzeXN0ZW0gY2FsbHMsIGltcGxlbWVudCBhbiBhcmNoX3N5c2NhbGxfYWRkciB0byByZXR1cm4KKyAgdGhlIGFkZHJlc3Mgb2YgYSBnaXZlbiBzeXN0ZW0gY2FsbC4KKy0gSWYgdGhlIHN5bWJvbCBuYW1lcyBvZiB0aGUgc3lzdGVtIGNhbGxzIGRvIG5vdCBtYXRjaCB0aGUgZnVuY3Rpb24gbmFtZXMgb24KKyAgdGhpcyBhcmNoLCBkZWZpbmUgQVJDSF9IQVNfU1lTQ0FMTF9NQVRDSF9TWU1fTkFNRSBpbiBhc20vZnRyYWNlLmggYW5kCisgIGltcGxlbWVudCBhcmNoX3N5c2NhbGxfbWF0Y2hfc3ltX25hbWUgd2l0aCB0aGUgYXBwcm9wcmlhdGUgbG9naWMgdG8gcmV0dXJuCisgIHRydWUgaWYgdGhlIGZ1bmN0aW9uIG5hbWUgY29ycmVzcG9uZHMgd2l0aCB0aGUgc3ltYm9sIG5hbWUuCistIFRhZyB0aGlzIGFyY2ggYXMgSEFWRV9TWVNDQUxMX1RSQUNFUE9JTlRTLgorCisKK0hBVkVfRlRSQUNFX01DT1VOVF9SRUNPUkQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU2VlIHNjcmlwdHMvcmVjb3JkbWNvdW50LnBsIGZvciBtb3JlIGluZm8uICBKdXN0IGZpbGwgaW4gdGhlIGFyY2gtc3BlY2lmaWMKK2RldGFpbHMgZm9yIGhvdyB0byBsb2NhdGUgdGhlIGFkZHJlc3NlcyBvZiBtY291bnQgY2FsbCBzaXRlcyB2aWEgb2JqZHVtcC4KK1RoaXMgb3B0aW9uIGRvZXNuJ3QgbWFrZSBtdWNoIHNlbnNlIHdpdGhvdXQgYWxzbyBpbXBsZW1lbnRpbmcgZHluYW1pYyBmdHJhY2UuCisKKworSEFWRV9EWU5BTUlDX0ZUUkFDRQorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitZb3Ugd2lsbCBmaXJzdCBuZWVkIEhBVkVfRlRSQUNFX01DT1VOVF9SRUNPUkQgYW5kIEhBVkVfRlVOQ1RJT05fVFJBQ0VSLCBzbworc2Nyb2xsIHlvdXIgcmVhZGVyIGJhY2sgdXAgaWYgeW91IGdvdCBvdmVyIGVhZ2VyLgorCitPbmNlIHRob3NlIGFyZSBvdXQgb2YgdGhlIHdheSwgeW91IHdpbGwgbmVlZCB0byBpbXBsZW1lbnQ6CisJLSBhc20vZnRyYWNlLmg6CisJCS0gTUNPVU5UX0FERFIKKwkJLSBmdHJhY2VfY2FsbF9hZGp1c3QoKQorCQktIHN0cnVjdCBkeW5fYXJjaF9mdHJhY2V7fQorCS0gYXNtIGNvZGU6CisJCS0gbWNvdW50KCkgKG5ldyBzdHViKQorCQktIGZ0cmFjZV9jYWxsZXIoKQorCQktIGZ0cmFjZV9jYWxsKCkKKwkJLSBmdHJhY2Vfc3R1YigpCisJLSBDIGNvZGU6CisJCS0gZnRyYWNlX2R5bl9hcmNoX2luaXQoKQorCQktIGZ0cmFjZV9tYWtlX25vcCgpCisJCS0gZnRyYWNlX21ha2VfY2FsbCgpCisJCS0gZnRyYWNlX3VwZGF0ZV9mdHJhY2VfZnVuYygpCisKK0ZpcnN0IHlvdSB3aWxsIG5lZWQgdG8gZmlsbCBvdXQgc29tZSBhcmNoIGRldGFpbHMgaW4geW91ciBhc20vZnRyYWNlLmguCisKK0RlZmluZSBNQ09VTlRfQUREUiBhcyB0aGUgYWRkcmVzcyBvZiB5b3VyIG1jb3VudCBzeW1ib2wgc2ltaWxhciB0bzoKKwkjZGVmaW5lIE1DT1VOVF9BRERSICgodW5zaWduZWQgbG9uZyltY291bnQpCitTaW5jZSBubyBvbmUgZWxzZSB3aWxsIGhhdmUgYSBkZWNsIGZvciB0aGF0IGZ1bmN0aW9uLCB5b3Ugd2lsbCBuZWVkIHRvOgorCWV4dGVybiB2b2lkIG1jb3VudCh2b2lkKTsKKworWW91IHdpbGwgYWxzbyBuZWVkIHRoZSBoZWxwZXIgZnVuY3Rpb24gZnRyYWNlX2NhbGxfYWRqdXN0KCkuICBNb3N0IHBlb3BsZQord2lsbCBiZSBhYmxlIHRvIHN0dWIgaXQgb3V0IGxpa2Ugc286CisJc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGZ0cmFjZV9jYWxsX2FkanVzdCh1bnNpZ25lZCBsb25nIGFkZHIpCisJeworCQlyZXR1cm4gYWRkcjsKKwl9Cis8ZGV0YWlscyB0byBiZSBmaWxsZWQ+CisKK0xhc3RseSB5b3Ugd2lsbCBuZWVkIHRoZSBjdXN0b20gZHluX2FyY2hfZnRyYWNlIHN0cnVjdHVyZS4gIElmIHlvdSBuZWVkCitzb21lIGV4dHJhIHN0YXRlIHdoZW4gcnVudGltZSBwYXRjaGluZyBhcmJpdHJhcnkgY2FsbCBzaXRlcywgdGhpcyBpcyB0aGUKK3BsYWNlLiAgRm9yIG5vdyB0aG91Z2gsIGNyZWF0ZSBhbiBlbXB0eSBzdHJ1Y3Q6CisJc3RydWN0IGR5bl9hcmNoX2Z0cmFjZSB7CisJCS8qIE5vIGV4dHJhIGRhdGEgbmVlZGVkICovCisJfTsKKworV2l0aCB0aGUgaGVhZGVyIG91dCBvZiB0aGUgd2F5LCB3ZSBjYW4gZmlsbCBvdXQgdGhlIGFzc2VtYmx5IGNvZGUuICBXaGlsZSB3ZQorZGlkIGFscmVhZHkgY3JlYXRlIGEgbWNvdW50KCkgZnVuY3Rpb24gZWFybGllciwgZHluYW1pYyBmdHJhY2Ugb25seSB3YW50cyBhCitzdHViIGZ1bmN0aW9uLiAgVGhpcyBpcyBiZWNhdXNlIHRoZSBtY291bnQoKSB3aWxsIG9ubHkgYmUgdXNlZCBkdXJpbmcgYm9vdAorYW5kIHRoZW4gYWxsIHJlZmVyZW5jZXMgdG8gaXQgd2lsbCBiZSBwYXRjaGVkIG91dCBuZXZlciB0byByZXR1cm4uICBJbnN0ZWFkLAordGhlIGd1dHMgb2YgdGhlIG9sZCBtY291bnQoKSB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlIGEgbmV3IGZ0cmFjZV9jYWxsZXIoKQorZnVuY3Rpb24uICBCZWNhdXNlIHRoZSB0d28gYXJlIGhhcmQgdG8gbWVyZ2UsIGl0IHdpbGwgbW9zdCBsaWtlbHkgYmUgYSBsb3QKK2Vhc2llciB0byBoYXZlIHR3byBzZXBhcmF0ZSBkZWZpbml0aW9ucyBzcGxpdCB1cCBieSAjaWZkZWZzLiAgU2FtZSBnb2VzIGZvcgordGhlIGZ0cmFjZV9zdHViKCkgYXMgdGhhdCB3aWxsIG5vdyBiZSBpbmxpbmVkIGluIGZ0cmFjZV9jYWxsZXIoKS4KKworQmVmb3JlIHdlIGdldCBjb25mdXNlZCBhbnltb3JlLCBsZXQncyBjaGVjayBvdXQgc29tZSBwc2V1ZG8gY29kZSBzbyB5b3UgY2FuCitpbXBsZW1lbnQgeW91ciBvd24gc3R1ZmYgaW4gYXNzZW1ibHk6CisKK3ZvaWQgbWNvdW50KHZvaWQpCit7CisJcmV0dXJuOworfQorCit2b2lkIGZ0cmFjZV9jYWxsZXIodm9pZCkKK3sKKwkvKiBzYXZlIGFsbCBzdGF0ZSBuZWVkZWQgYnkgdGhlIEFCSSAoc2VlIHBhcmFncmFwaCBhYm92ZSkgKi8KKworCXVuc2lnbmVkIGxvbmcgZnJvbXBjID0gLi4uOworCXVuc2lnbmVkIGxvbmcgc2VsZnBjID0gPHJldHVybiBhZGRyZXNzPiAtIE1DT1VOVF9JTlNOX1NJWkU7CisKK2Z0cmFjZV9jYWxsOgorCWZ0cmFjZV9zdHViKGZyb21wYywgc2VsZnBjKTsKKworCS8qIHJlc3RvcmUgYWxsIHN0YXRlIG5lZWRlZCBieSB0aGUgQUJJICovCisKK2Z0cmFjZV9zdHViOgorCXJldHVybjsKK30KKworVGhpcyBtaWdodCBsb29rIGEgbGl0dGxlIG9kZCBhdCBmaXJzdCwgYnV0IGtlZXAgaW4gbWluZCB0aGF0IHdlIHdpbGwgYmUgcnVudGltZQorcGF0Y2hpbmcgbXVsdGlwbGUgdGhpbmdzLiAgRmlyc3QsIG9ubHkgZnVuY3Rpb25zIHRoYXQgd2UgYWN0dWFsbHkgd2FudCB0byB0cmFjZQord2lsbCBiZSBwYXRjaGVkIHRvIGNhbGwgZnRyYWNlX2NhbGxlcigpLiAgU2Vjb25kLCBzaW5jZSB3ZSBvbmx5IGhhdmUgb25lIHRyYWNlcgorYWN0aXZlIGF0IGEgdGltZSwgd2Ugd2lsbCBwYXRjaCB0aGUgZnRyYWNlX2NhbGxlcigpIGZ1bmN0aW9uIGl0c2VsZiB0byBjYWxsIHRoZQorc3BlY2lmaWMgdHJhY2VyIGluIHF1ZXN0aW9uLiAgVGhhdCBpcyB0aGUgcG9pbnQgb2YgdGhlIGZ0cmFjZV9jYWxsIGxhYmVsLgorCitXaXRoIHRoYXQgaW4gbWluZCwgbGV0J3MgbW92ZSBvbiB0byB0aGUgQyBjb2RlIHRoYXQgd2lsbCBhY3R1YWxseSBiZSBkb2luZyB0aGUKK3J1bnRpbWUgcGF0Y2hpbmcuICBZb3UnbGwgbmVlZCBhIGxpdHRsZSBrbm93bGVkZ2Ugb2YgeW91ciBhcmNoJ3Mgb3Bjb2RlcyBpbgorb3JkZXIgdG8gbWFrZSBpdCB0aHJvdWdoIHRoZSBuZXh0IHNlY3Rpb24uCisKK0V2ZXJ5IGFyY2ggaGFzIGFuIGluaXQgY2FsbGJhY2sgZnVuY3Rpb24uICBJZiB5b3UgbmVlZCB0byBkbyBzb21ldGhpbmcgZWFybHkgb24KK3RvIGluaXRpYWxpemUgc29tZSBzdGF0ZSwgdGhpcyBpcyB0aGUgdGltZSB0byBkbyB0aGF0LiAgT3RoZXJ3aXNlLCB0aGlzIHNpbXBsZQorZnVuY3Rpb24gYmVsb3cgc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIG1vc3QgcGVvcGxlOgorCitpbnQgX19pbml0IGZ0cmFjZV9keW5fYXJjaF9pbml0KHZvaWQpCit7CisJcmV0dXJuIDA7Cit9CisKK1RoZXJlIGFyZSB0d28gZnVuY3Rpb25zIHRoYXQgYXJlIHVzZWQgdG8gZG8gcnVudGltZSBwYXRjaGluZyBvZiBhcmJpdHJhcnkKK2Z1bmN0aW9ucy4gIFRoZSBmaXJzdCBpcyB1c2VkIHRvIHR1cm4gdGhlIG1jb3VudCBjYWxsIHNpdGUgaW50byBhIG5vcCAod2hpY2gKK2lzIHdoYXQgaGVscHMgdXMgcmV0YWluIHJ1bnRpbWUgcGVyZm9ybWFuY2Ugd2hlbiBub3QgdHJhY2luZykuICBUaGUgc2Vjb25kIGlzCit1c2VkIHRvIHR1cm4gdGhlIG1jb3VudCBjYWxsIHNpdGUgaW50byBhIGNhbGwgdG8gYW4gYXJiaXRyYXJ5IGxvY2F0aW9uIChidXQKK3R5cGljYWxseSB0aGF0IGlzIGZ0cmFjZXJfY2FsbGVyKCkpLiAgU2VlIHRoZSBnZW5lcmFsIGZ1bmN0aW9uIGRlZmluaXRpb24gaW4KK2xpbnV4L2Z0cmFjZS5oIGZvciB0aGUgZnVuY3Rpb25zOgorCWZ0cmFjZV9tYWtlX25vcCgpCisJZnRyYWNlX21ha2VfY2FsbCgpCitUaGUgcmVjLT5pcCB2YWx1ZSBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgbWNvdW50IGNhbGwgc2l0ZSB0aGF0IHdhcyBjb2xsZWN0ZWQKK2J5IHRoZSBzY3JpcHRzL3JlY29yZG1jb3VudC5wbCBkdXJpbmcgYnVpbGQgdGltZS4KKworVGhlIGxhc3QgZnVuY3Rpb24gaXMgdXNlZCB0byBkbyBydW50aW1lIHBhdGNoaW5nIG9mIHRoZSBhY3RpdmUgdHJhY2VyLiAgVGhpcword2lsbCBiZSBtb2RpZnlpbmcgdGhlIGFzc2VtYmx5IGNvZGUgYXQgdGhlIGxvY2F0aW9uIG9mIHRoZSBmdHJhY2VfY2FsbCBzeW1ib2wKK2luc2lkZSBvZiB0aGUgZnRyYWNlX2NhbGxlcigpIGZ1bmN0aW9uLiAgU28geW91IHNob3VsZCBoYXZlIHN1ZmZpY2llbnQgcGFkZGluZworYXQgdGhhdCBsb2NhdGlvbiB0byBzdXBwb3J0IHRoZSBuZXcgZnVuY3Rpb24gY2FsbHMgeW91J2xsIGJlIGluc2VydGluZy4gIFNvbWUKK3Blb3BsZSB3aWxsIGJlIHVzaW5nIGEgImNhbGwiIHR5cGUgaW5zdHJ1Y3Rpb24gd2hpbGUgb3RoZXJzIHdpbGwgYmUgdXNpbmcgYQorImJyYW5jaCIgdHlwZSBpbnN0cnVjdGlvbi4gIFNwZWNpZmljYWxseSwgdGhlIGZ1bmN0aW9uIGlzOgorCWZ0cmFjZV91cGRhdGVfZnRyYWNlX2Z1bmMoKQorCisKK0hBVkVfRFlOQU1JQ19GVFJBQ0UgKyBIQVZFX0ZVTkNUSU9OX0dSQVBIX1RSQUNFUgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBmdW5jdGlvbiBncmFwaGVyIG5lZWRzIGEgZmV3IHR3ZWFrcyBpbiBvcmRlciB0byB3b3JrIHdpdGggZHluYW1pYyBmdHJhY2UuCitCYXNpY2FsbHksIHlvdSB3aWxsIG5lZWQgdG86CisJLSB1cGRhdGU6CisJCS0gZnRyYWNlX2NhbGxlcigpCisJCS0gZnRyYWNlX2dyYXBoX2NhbGwoKQorCQktIGZ0cmFjZV9ncmFwaF9jYWxsZXIoKQorCS0gaW1wbGVtZW50OgorCQktIGZ0cmFjZV9lbmFibGVfZnRyYWNlX2dyYXBoX2NhbGxlcigpCisJCS0gZnRyYWNlX2Rpc2FibGVfZnRyYWNlX2dyYXBoX2NhbGxlcigpCisKKzxkZXRhaWxzIHRvIGJlIGZpbGxlZD4KK1F1aWNrIG5vdGVzOgorCS0gYWRkIGEgbm9wIHN0dWIgYWZ0ZXIgdGhlIGZ0cmFjZV9jYWxsIGxvY2F0aW9uIG5hbWVkIGZ0cmFjZV9ncmFwaF9jYWxsOworCSAgc3R1YiBuZWVkcyB0byBiZSBsYXJnZSBlbm91Z2ggdG8gc3VwcG9ydCBhIGNhbGwgdG8gZnRyYWNlX2dyYXBoX2NhbGxlcigpCisJLSB1cGRhdGUgZnRyYWNlX2dyYXBoX2NhbGxlcigpIHRvIHdvcmsgd2l0aCBiZWluZyBjYWxsZWQgYnkgdGhlIG5ldworCSAgZnRyYWNlX2NhbGxlcigpIHNpbmNlIHNvbWUgc2VtYW50aWNzIG1heSBoYXZlIGNoYW5nZWQKKwktIGZ0cmFjZV9lbmFibGVfZnRyYWNlX2dyYXBoX2NhbGxlcigpIHdpbGwgcnVudGltZSBwYXRjaCB0aGUKKwkgIGZ0cmFjZV9ncmFwaF9jYWxsIGxvY2F0aW9uIHdpdGggYSBjYWxsIHRvIGZ0cmFjZV9ncmFwaF9jYWxsZXIoKQorCS0gZnRyYWNlX2Rpc2FibGVfZnRyYWNlX2dyYXBoX2NhbGxlcigpIHdpbGwgcnVudGltZSBwYXRjaCB0aGUKKwkgIGZ0cmFjZV9ncmFwaF9jYWxsIGxvY2F0aW9uIHdpdGggbm9wcwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UudHh0IGIvRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1MmYyOTcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS50eHQKQEAgLTAsMCArMSwyODk5IEBACisJCWZ0cmFjZSAtIEZ1bmN0aW9uIFRyYWNlcgorCQk9PT09PT09PT09PT09PT09PT09PT09PT0KKworQ29weXJpZ2h0IDIwMDggUmVkIEhhdCBJbmMuCisgICBBdXRob3I6ICAgU3RldmVuIFJvc3RlZHQgPHNyb3N0ZWR0QHJlZGhhdC5jb20+CisgIExpY2Vuc2U6ICAgVGhlIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSwgVmVyc2lvbiAxLjIKKyAgICAgICAgICAgICAgIChkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBHUEwgdjIpCitSZXZpZXdlcnM6ICAgRWxpYXMgT2x0bWFubnMsIFJhbmR5IER1bmxhcCwgQW5kcmV3IE1vcnRvbiwKKwkgICAgIEpvaG4gS2FjdXIsIGFuZCBEYXZpZCBUZWlnbGFuZC4KK1dyaXR0ZW4gZm9yOiAyLjYuMjgtcmMyCitVcGRhdGVkIGZvcjogMy4xMAorCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLQorCitGdHJhY2UgaXMgYW4gaW50ZXJuYWwgdHJhY2VyIGRlc2lnbmVkIHRvIGhlbHAgb3V0IGRldmVsb3BlcnMgYW5kCitkZXNpZ25lcnMgb2Ygc3lzdGVtcyB0byBmaW5kIHdoYXQgaXMgZ29pbmcgb24gaW5zaWRlIHRoZSBrZXJuZWwuCitJdCBjYW4gYmUgdXNlZCBmb3IgZGVidWdnaW5nIG9yIGFuYWx5emluZyBsYXRlbmNpZXMgYW5kCitwZXJmb3JtYW5jZSBpc3N1ZXMgdGhhdCB0YWtlIHBsYWNlIG91dHNpZGUgb2YgdXNlci1zcGFjZS4KKworQWx0aG91Z2ggZnRyYWNlIGlzIHR5cGljYWxseSBjb25zaWRlcmVkIHRoZSBmdW5jdGlvbiB0cmFjZXIsIGl0CitpcyByZWFsbHkgYSBmcmFtZSB3b3JrIG9mIHNldmVyYWwgYXNzb3J0ZWQgdHJhY2luZyB1dGlsaXRpZXMuCitUaGVyZSdzIGxhdGVuY3kgdHJhY2luZyB0byBleGFtaW5lIHdoYXQgb2NjdXJzIGJldHdlZW4gaW50ZXJydXB0cworZGlzYWJsZWQgYW5kIGVuYWJsZWQsIGFzIHdlbGwgYXMgZm9yIHByZWVtcHRpb24gYW5kIGZyb20gYSB0aW1lCithIHRhc2sgaXMgd29rZW4gdG8gdGhlIHRhc2sgaXMgYWN0dWFsbHkgc2NoZWR1bGVkIGluLgorCitPbmUgb2YgdGhlIG1vc3QgY29tbW9uIHVzZXMgb2YgZnRyYWNlIGlzIHRoZSBldmVudCB0cmFjaW5nLgorVGhyb3VnaCBvdXQgdGhlIGtlcm5lbCBpcyBodW5kcmVkcyBvZiBzdGF0aWMgZXZlbnQgcG9pbnRzIHRoYXQKK2NhbiBiZSBlbmFibGVkIHZpYSB0aGUgZGVidWdmcyBmaWxlIHN5c3RlbSB0byBzZWUgd2hhdCBpcworZ29pbmcgb24gaW4gY2VydGFpbiBwYXJ0cyBvZiB0aGUga2VybmVsLgorCisKK0ltcGxlbWVudGF0aW9uIERldGFpbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU2VlIGZ0cmFjZS1kZXNpZ24udHh0IGZvciBkZXRhaWxzIGZvciBhcmNoIHBvcnRlcnMgYW5kIHN1Y2guCisKKworVGhlIEZpbGUgU3lzdGVtCistLS0tLS0tLS0tLS0tLS0KKworRnRyYWNlIHVzZXMgdGhlIGRlYnVnZnMgZmlsZSBzeXN0ZW0gdG8gaG9sZCB0aGUgY29udHJvbCBmaWxlcyBhcword2VsbCBhcyB0aGUgZmlsZXMgdG8gZGlzcGxheSBvdXRwdXQuCisKK1doZW4gZGVidWdmcyBpcyBjb25maWd1cmVkIGludG8gdGhlIGtlcm5lbCAod2hpY2ggc2VsZWN0aW5nIGFueSBmdHJhY2UKK29wdGlvbiB3aWxsIGRvKSB0aGUgZGlyZWN0b3J5IC9zeXMva2VybmVsL2RlYnVnIHdpbGwgYmUgY3JlYXRlZC4gVG8gbW91bnQKK3RoaXMgZGlyZWN0b3J5LCB5b3UgY2FuIGFkZCB0byB5b3VyIC9ldGMvZnN0YWIgZmlsZToKKworIGRlYnVnZnMgICAgICAgL3N5cy9rZXJuZWwvZGVidWcgICAgICAgICAgZGVidWdmcyBkZWZhdWx0cyAgICAgICAgMCAgICAgICAwCisKK09yIHlvdSBjYW4gbW91bnQgaXQgYXQgcnVuIHRpbWUgd2l0aDoKKworIG1vdW50IC10IGRlYnVnZnMgbm9kZXYgL3N5cy9rZXJuZWwvZGVidWcKKworRm9yIHF1aWNrZXIgYWNjZXNzIHRvIHRoYXQgZGlyZWN0b3J5IHlvdSBtYXkgd2FudCB0byBtYWtlIGEgc29mdCBsaW5rIHRvCitpdDoKKworIGxuIC1zIC9zeXMva2VybmVsL2RlYnVnIC9kZWJ1ZworCitBbnkgc2VsZWN0ZWQgZnRyYWNlIG9wdGlvbiB3aWxsIGFsc28gY3JlYXRlIGEgZGlyZWN0b3J5IGNhbGxlZCB0cmFjaW5nCit3aXRoaW4gdGhlIGRlYnVnZnMuIFRoZSByZXN0IG9mIHRoZSBkb2N1bWVudCB3aWxsIGFzc3VtZSB0aGF0IHlvdSBhcmUgaW4KK3RoZSBmdHJhY2UgZGlyZWN0b3J5IChjZCAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nKSBhbmQgd2lsbCBvbmx5IGNvbmNlbnRyYXRlCitvbiB0aGUgZmlsZXMgd2l0aGluIHRoYXQgZGlyZWN0b3J5IGFuZCBub3QgZGlzdHJhY3QgZnJvbSB0aGUgY29udGVudCB3aXRoCit0aGUgZXh0ZW5kZWQgIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmciIHBhdGggbmFtZS4KKworVGhhdCdzIGl0ISAoYXNzdW1pbmcgdGhhdCB5b3UgaGF2ZSBmdHJhY2UgY29uZmlndXJlZCBpbnRvIHlvdXIga2VybmVsKQorCitBZnRlciBtb3VudGluZyBkZWJ1Z2ZzLCB5b3UgY2FuIHNlZSBhIGRpcmVjdG9yeSBjYWxsZWQKKyJ0cmFjaW5nIi4gIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBjb250cm9sIGFuZCBvdXRwdXQgZmlsZXMKK29mIGZ0cmFjZS4gSGVyZSBpcyBhIGxpc3Qgb2Ygc29tZSBvZiB0aGUga2V5IGZpbGVzOgorCisKKyBOb3RlOiBhbGwgdGltZSB2YWx1ZXMgYXJlIGluIG1pY3Jvc2Vjb25kcy4KKworICBjdXJyZW50X3RyYWNlcjoKKworCVRoaXMgaXMgdXNlZCB0byBzZXQgb3IgZGlzcGxheSB0aGUgY3VycmVudCB0cmFjZXIKKwl0aGF0IGlzIGNvbmZpZ3VyZWQuCisKKyAgYXZhaWxhYmxlX3RyYWNlcnM6CisKKwlUaGlzIGhvbGRzIHRoZSBkaWZmZXJlbnQgdHlwZXMgb2YgdHJhY2VycyB0aGF0CisJaGF2ZSBiZWVuIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4gVGhlCisJdHJhY2VycyBsaXN0ZWQgaGVyZSBjYW4gYmUgY29uZmlndXJlZCBieQorCWVjaG9pbmcgdGhlaXIgbmFtZSBpbnRvIGN1cnJlbnRfdHJhY2VyLgorCisgIHRyYWNpbmdfb246CisKKwlUaGlzIHNldHMgb3IgZGlzcGxheXMgd2hldGhlciB3cml0aW5nIHRvIHRoZSB0cmFjZQorCXJpbmcgYnVmZmVyIGlzIGVuYWJsZWQuIEVjaG8gMCBpbnRvIHRoaXMgZmlsZSB0byBkaXNhYmxlCisJdGhlIHRyYWNlciBvciAxIHRvIGVuYWJsZSBpdC4gTm90ZSwgdGhpcyBvbmx5IGRpc2FibGVzCisJd3JpdGluZyB0byB0aGUgcmluZyBidWZmZXIsIHRoZSB0cmFjaW5nIG92ZXJoZWFkIG1heQorCXN0aWxsIGJlIG9jY3VycmluZy4KKworICB0cmFjZToKKworCVRoaXMgZmlsZSBob2xkcyB0aGUgb3V0cHV0IG9mIHRoZSB0cmFjZSBpbiBhIGh1bWFuCisJcmVhZGFibGUgZm9ybWF0IChkZXNjcmliZWQgYmVsb3cpLgorCisgIHRyYWNlX3BpcGU6CisKKwlUaGUgb3V0cHV0IGlzIHRoZSBzYW1lIGFzIHRoZSAidHJhY2UiIGZpbGUgYnV0IHRoaXMKKwlmaWxlIGlzIG1lYW50IHRvIGJlIHN0cmVhbWVkIHdpdGggbGl2ZSB0cmFjaW5nLgorCVJlYWRzIGZyb20gdGhpcyBmaWxlIHdpbGwgYmxvY2sgdW50aWwgbmV3IGRhdGEgaXMKKwlyZXRyaWV2ZWQuICBVbmxpa2UgdGhlICJ0cmFjZSIgZmlsZSwgdGhpcyBmaWxlIGlzIGEKKwljb25zdW1lci4gVGhpcyBtZWFucyByZWFkaW5nIGZyb20gdGhpcyBmaWxlIGNhdXNlcworCXNlcXVlbnRpYWwgcmVhZHMgdG8gZGlzcGxheSBtb3JlIGN1cnJlbnQgZGF0YS4gT25jZQorCWRhdGEgaXMgcmVhZCBmcm9tIHRoaXMgZmlsZSwgaXQgaXMgY29uc3VtZWQsIGFuZAorCXdpbGwgbm90IGJlIHJlYWQgYWdhaW4gd2l0aCBhIHNlcXVlbnRpYWwgcmVhZC4gVGhlCisJInRyYWNlIiBmaWxlIGlzIHN0YXRpYywgYW5kIGlmIHRoZSB0cmFjZXIgaXMgbm90CisJYWRkaW5nIG1vcmUgZGF0YSwgaXQgd2lsbCBkaXNwbGF5IHRoZSBzYW1lCisJaW5mb3JtYXRpb24gZXZlcnkgdGltZSBpdCBpcyByZWFkLgorCisgIHRyYWNlX29wdGlvbnM6CisKKwlUaGlzIGZpbGUgbGV0cyB0aGUgdXNlciBjb250cm9sIHRoZSBhbW91bnQgb2YgZGF0YQorCXRoYXQgaXMgZGlzcGxheWVkIGluIG9uZSBvZiB0aGUgYWJvdmUgb3V0cHV0CisJZmlsZXMuIE9wdGlvbnMgYWxzbyBleGlzdCB0byBtb2RpZnkgaG93IGEgdHJhY2VyCisJb3IgZXZlbnRzIHdvcmsgKHN0YWNrIHRyYWNlcywgdGltZXN0YW1wcywgZXRjKS4KKworICBvcHRpb25zOgorCisJVGhpcyBpcyBhIGRpcmVjdG9yeSB0aGF0IGhhcyBhIGZpbGUgZm9yIGV2ZXJ5IGF2YWlsYWJsZQorCXRyYWNlIG9wdGlvbiAoYWxzbyBpbiB0cmFjZV9vcHRpb25zKS4gT3B0aW9ucyBtYXkgYWxzbyBiZSBzZXQKKwlvciBjbGVhcmVkIGJ5IHdyaXRpbmcgYSAiMSIgb3IgIjAiIHJlc3BlY3RpdmVseSBpbnRvIHRoZQorCWNvcnJlc3BvbmRpbmcgZmlsZSB3aXRoIHRoZSBvcHRpb24gbmFtZS4KKworICB0cmFjaW5nX21heF9sYXRlbmN5OgorCisJU29tZSBvZiB0aGUgdHJhY2VycyByZWNvcmQgdGhlIG1heCBsYXRlbmN5LgorCUZvciBleGFtcGxlLCB0aGUgdGltZSBpbnRlcnJ1cHRzIGFyZSBkaXNhYmxlZC4KKwlUaGlzIHRpbWUgaXMgc2F2ZWQgaW4gdGhpcyBmaWxlLiBUaGUgbWF4IHRyYWNlCisJd2lsbCBhbHNvIGJlIHN0b3JlZCwgYW5kIGRpc3BsYXllZCBieSAidHJhY2UiLgorCUEgbmV3IG1heCB0cmFjZSB3aWxsIG9ubHkgYmUgcmVjb3JkZWQgaWYgdGhlCisJbGF0ZW5jeSBpcyBncmVhdGVyIHRoYW4gdGhlIHZhbHVlIGluIHRoaXMKKwlmaWxlLiAoaW4gbWljcm9zZWNvbmRzKQorCisgIHRyYWNpbmdfdGhyZXNoOgorCisJU29tZSBsYXRlbmN5IHRyYWNlcnMgd2lsbCByZWNvcmQgYSB0cmFjZSB3aGVuZXZlciB0aGUKKwlsYXRlbmN5IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbnVtYmVyIGluIHRoaXMgZmlsZS4KKwlPbmx5IGFjdGl2ZSB3aGVuIHRoZSBmaWxlIGNvbnRhaW5zIGEgbnVtYmVyIGdyZWF0ZXIgdGhhbiAwLgorCShpbiBtaWNyb3NlY29uZHMpCisKKyAgYnVmZmVyX3NpemVfa2I6CisKKwlUaGlzIHNldHMgb3IgZGlzcGxheXMgdGhlIG51bWJlciBvZiBraWxvYnl0ZXMgZWFjaCBDUFUKKwlidWZmZXIgaG9sZHMuIEJ5IGRlZmF1bHQsIHRoZSB0cmFjZSBidWZmZXJzIGFyZSB0aGUgc2FtZSBzaXplCisJZm9yIGVhY2ggQ1BVLiBUaGUgZGlzcGxheWVkIG51bWJlciBpcyB0aGUgc2l6ZSBvZiB0aGUKKwlDUFUgYnVmZmVyIGFuZCBub3QgdG90YWwgc2l6ZSBvZiBhbGwgYnVmZmVycy4gVGhlCisJdHJhY2UgYnVmZmVycyBhcmUgYWxsb2NhdGVkIGluIHBhZ2VzIChibG9ja3Mgb2YgbWVtb3J5CisJdGhhdCB0aGUga2VybmVsIHVzZXMgZm9yIGFsbG9jYXRpb24sIHVzdWFsbHkgNCBLQiBpbiBzaXplKS4KKwlJZiB0aGUgbGFzdCBwYWdlIGFsbG9jYXRlZCBoYXMgcm9vbSBmb3IgbW9yZSBieXRlcworCXRoYW4gcmVxdWVzdGVkLCB0aGUgcmVzdCBvZiB0aGUgcGFnZSB3aWxsIGJlIHVzZWQsCisJbWFraW5nIHRoZSBhY3R1YWwgYWxsb2NhdGlvbiBiaWdnZXIgdGhhbiByZXF1ZXN0ZWQuCisJKCBOb3RlLCB0aGUgc2l6ZSBtYXkgbm90IGJlIGEgbXVsdGlwbGUgb2YgdGhlIHBhZ2Ugc2l6ZQorCSAgZHVlIHRvIGJ1ZmZlciBtYW5hZ2VtZW50IG1ldGEtZGF0YS4gKQorCisgIGJ1ZmZlcl90b3RhbF9zaXplX2tiOgorCisJVGhpcyBkaXNwbGF5cyB0aGUgdG90YWwgY29tYmluZWQgc2l6ZSBvZiBhbGwgdGhlIHRyYWNlIGJ1ZmZlcnMuCisKKyAgZnJlZV9idWZmZXI6CisKKwlJZiBhIHByb2Nlc3MgaXMgcGVyZm9ybWluZyB0aGUgdHJhY2luZywgYW5kIHRoZSByaW5nIGJ1ZmZlcgorCXNob3VsZCBiZSBzaHJ1bmsgImZyZWVkIiB3aGVuIHRoZSBwcm9jZXNzIGlzIGZpbmlzaGVkLCBldmVuCisJaWYgaXQgd2VyZSB0byBiZSBraWxsZWQgYnkgYSBzaWduYWwsIHRoaXMgZmlsZSBjYW4gYmUgdXNlZAorCWZvciB0aGF0IHB1cnBvc2UuIE9uIGNsb3NlIG9mIHRoaXMgZmlsZSwgdGhlIHJpbmcgYnVmZmVyIHdpbGwKKwliZSByZXNpemVkIHRvIGl0cyBtaW5pbXVtIHNpemUuIEhhdmluZyBhIHByb2Nlc3MgdGhhdCBpcyB0cmFjaW5nCisJYWxzbyBvcGVuIHRoaXMgZmlsZSwgd2hlbiB0aGUgcHJvY2VzcyBleGl0cyBpdHMgZmlsZSBkZXNjcmlwdG9yCisJZm9yIHRoaXMgZmlsZSB3aWxsIGJlIGNsb3NlZCwgYW5kIGluIGRvaW5nIHNvLCB0aGUgcmluZyBidWZmZXIKKwl3aWxsIGJlICJmcmVlZCIuCisKKwlJdCBtYXkgYWxzbyBzdG9wIHRyYWNpbmcgaWYgZGlzYWJsZV9vbl9mcmVlIG9wdGlvbiBpcyBzZXQuCisKKyAgdHJhY2luZ19jcHVtYXNrOgorCisJVGhpcyBpcyBhIG1hc2sgdGhhdCBsZXRzIHRoZSB1c2VyIG9ubHkgdHJhY2UKKwlvbiBzcGVjaWZpZWQgQ1BVcy4gVGhlIGZvcm1hdCBpcyBhIGhleCBzdHJpbmcKKwlyZXByZXNlbnRpbmcgdGhlIENQVXMuCisKKyAgc2V0X2Z0cmFjZV9maWx0ZXI6CisKKwlXaGVuIGR5bmFtaWMgZnRyYWNlIGlzIGNvbmZpZ3VyZWQgaW4gKHNlZSB0aGUKKwlzZWN0aW9uIGJlbG93ICJkeW5hbWljIGZ0cmFjZSIpLCB0aGUgY29kZSBpcyBkeW5hbWljYWxseQorCW1vZGlmaWVkIChjb2RlIHRleHQgcmV3cml0ZSkgdG8gZGlzYWJsZSBjYWxsaW5nIG9mIHRoZQorCWZ1bmN0aW9uIHByb2ZpbGVyIChtY291bnQpLiBUaGlzIGxldHMgdHJhY2luZyBiZSBjb25maWd1cmVkCisJaW4gd2l0aCBwcmFjdGljYWxseSBubyBvdmVyaGVhZCBpbiBwZXJmb3JtYW5jZS4gIFRoaXMgYWxzbworCWhhcyBhIHNpZGUgZWZmZWN0IG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBzcGVjaWZpYyBmdW5jdGlvbnMKKwl0byBiZSB0cmFjZWQuIEVjaG9pbmcgbmFtZXMgb2YgZnVuY3Rpb25zIGludG8gdGhpcyBmaWxlCisJd2lsbCBsaW1pdCB0aGUgdHJhY2UgdG8gb25seSB0aG9zZSBmdW5jdGlvbnMuCisKKwlUaGlzIGludGVyZmFjZSBhbHNvIGFsbG93cyBmb3IgY29tbWFuZHMgdG8gYmUgdXNlZC4gU2VlIHRoZQorCSJGaWx0ZXIgY29tbWFuZHMiIHNlY3Rpb24gZm9yIG1vcmUgZGV0YWlscy4KKworICBzZXRfZnRyYWNlX25vdHJhY2U6CisKKwlUaGlzIGhhcyBhbiBlZmZlY3Qgb3Bwb3NpdGUgdG8gdGhhdCBvZgorCXNldF9mdHJhY2VfZmlsdGVyLiBBbnkgZnVuY3Rpb24gdGhhdCBpcyBhZGRlZCBoZXJlIHdpbGwgbm90CisJYmUgdHJhY2VkLiBJZiBhIGZ1bmN0aW9uIGV4aXN0cyBpbiBib3RoIHNldF9mdHJhY2VfZmlsdGVyCisJYW5kIHNldF9mdHJhY2Vfbm90cmFjZSwJdGhlIGZ1bmN0aW9uIHdpbGwgX25vdF8gYmUgdHJhY2VkLgorCisgIHNldF9mdHJhY2VfcGlkOgorCisJSGF2ZSB0aGUgZnVuY3Rpb24gdHJhY2VyIG9ubHkgdHJhY2UgYSBzaW5nbGUgdGhyZWFkLgorCisgIHNldF9ldmVudF9waWQ6CisKKwlIYXZlIHRoZSBldmVudHMgb25seSB0cmFjZSBhIHRhc2sgd2l0aCBhIFBJRCBsaXN0ZWQgaW4gdGhpcyBmaWxlLgorCU5vdGUsIHNjaGVkX3N3aXRjaCBhbmQgc2NoZWRfd2FrZV91cCB3aWxsIGFsc28gdHJhY2UgZXZlbnRzCisJbGlzdGVkIGluIHRoaXMgZmlsZS4KKworICBzZXRfZ3JhcGhfZnVuY3Rpb246CisKKwlTZXQgYSAidHJpZ2dlciIgZnVuY3Rpb24gd2hlcmUgdHJhY2luZyBzaG91bGQgc3RhcnQKKwl3aXRoIHRoZSBmdW5jdGlvbiBncmFwaCB0cmFjZXIgKFNlZSB0aGUgc2VjdGlvbgorCSJkeW5hbWljIGZ0cmFjZSIgZm9yIG1vcmUgZGV0YWlscykuCisKKyAgYXZhaWxhYmxlX2ZpbHRlcl9mdW5jdGlvbnM6CisKKwlUaGlzIGxpc3RzIHRoZSBmdW5jdGlvbnMgdGhhdCBmdHJhY2UKKwloYXMgcHJvY2Vzc2VkIGFuZCBjYW4gdHJhY2UuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb24KKwluYW1lcyB0aGF0IHlvdSBjYW4gcGFzcyB0byAic2V0X2Z0cmFjZV9maWx0ZXIiIG9yCisJInNldF9mdHJhY2Vfbm90cmFjZSIuIChTZWUgdGhlIHNlY3Rpb24gImR5bmFtaWMgZnRyYWNlIgorCWJlbG93IGZvciBtb3JlIGRldGFpbHMuKQorCisgIGVuYWJsZWRfZnVuY3Rpb25zOgorCisJVGhpcyBmaWxlIGlzIG1vcmUgZm9yIGRlYnVnZ2luZyBmdHJhY2UsIGJ1dCBjYW4gYWxzbyBiZSB1c2VmdWwKKwlpbiBzZWVpbmcgaWYgYW55IGZ1bmN0aW9uIGhhcyBhIGNhbGxiYWNrIGF0dGFjaGVkIHRvIGl0LgorCU5vdCBvbmx5IGRvZXMgdGhlIHRyYWNlIGluZnJhc3RydWN0dXJlIHVzZSBmdHJhY2UgZnVuY3Rpb24KKwl0cmFjZSB1dGlsaXR5LCBidXQgb3RoZXIgc3Vic3lzdGVtcyBtaWdodCB0b28uIFRoaXMgZmlsZQorCWRpc3BsYXlzIGFsbCBmdW5jdGlvbnMgdGhhdCBoYXZlIGEgY2FsbGJhY2sgYXR0YWNoZWQgdG8gdGhlbQorCWFzIHdlbGwgYXMgdGhlIG51bWJlciBvZiBjYWxsYmFja3MgdGhhdCBoYXZlIGJlZW4gYXR0YWNoZWQuCisJTm90ZSwgYSBjYWxsYmFjayBtYXkgYWxzbyBjYWxsIG11bHRpcGxlIGZ1bmN0aW9ucyB3aGljaCB3aWxsCisJbm90IGJlIGxpc3RlZCBpbiB0aGlzIGNvdW50LgorCisJSWYgdGhlIGNhbGxiYWNrIHJlZ2lzdGVyZWQgdG8gYmUgdHJhY2VkIGJ5IGEgZnVuY3Rpb24gd2l0aAorCXRoZSAic2F2ZSByZWdzIiBhdHRyaWJ1dGUgKHRodXMgZXZlbiBtb3JlIG92ZXJoZWFkKSwgYSAnUicKKwl3aWxsIGJlIGRpc3BsYXllZCBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBmdW5jdGlvbiB0aGF0CisJaXMgcmV0dXJuaW5nIHJlZ2lzdGVycy4KKworCUlmIHRoZSBjYWxsYmFjayByZWdpc3RlcmVkIHRvIGJlIHRyYWNlZCBieSBhIGZ1bmN0aW9uIHdpdGgKKwl0aGUgImlwIG1vZGlmeSIgYXR0cmlidXRlICh0aHVzIHRoZSByZWdzLT5pcCBjYW4gYmUgY2hhbmdlZCksCisJYW4gJ0knIHdpbGwgYmUgZGlzcGxheWVkIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGZ1bmN0aW9uIHRoYXQKKwljYW4gYmUgb3ZlcnJpZGRlbi4KKworICBmdW5jdGlvbl9wcm9maWxlX2VuYWJsZWQ6CisKKwlXaGVuIHNldCBpdCB3aWxsIGVuYWJsZSBhbGwgZnVuY3Rpb25zIHdpdGggZWl0aGVyIHRoZSBmdW5jdGlvbgorCXRyYWNlciwgb3IgaWYgZW5hYmxlZCwgdGhlIGZ1bmN0aW9uIGdyYXBoIHRyYWNlci4gSXQgd2lsbAorCWtlZXAgYSBoaXN0b2dyYW0gb2YgdGhlIG51bWJlciBvZiBmdW5jdGlvbnMgdGhhdCB3ZXJlIGNhbGxlZAorCWFuZCBpZiBydW4gd2l0aCB0aGUgZnVuY3Rpb24gZ3JhcGggdHJhY2VyLCBpdCB3aWxsIGFsc28ga2VlcAorCXRyYWNrIG9mIHRoZSB0aW1lIHNwZW50IGluIHRob3NlIGZ1bmN0aW9ucy4gVGhlIGhpc3RvZ3JhbQorCWNvbnRlbnQgY2FuIGJlIGRpc3BsYXllZCBpbiB0aGUgZmlsZXM6CisKKwl0cmFjZV9zdGF0cy9mdW5jdGlvbjxjcHU+ICggZnVuY3Rpb24wLCBmdW5jdGlvbjEsIGV0YykuCisKKyAgdHJhY2Vfc3RhdHM6CisKKwlBIGRpcmVjdG9yeSB0aGF0IGhvbGRzIGRpZmZlcmVudCB0cmFjaW5nIHN0YXRzLgorCisgIGtwcm9iZV9ldmVudHM6CisgCisJRW5hYmxlIGR5bmFtaWMgdHJhY2UgcG9pbnRzLiBTZWUga3Byb2JldHJhY2UudHh0LgorCisgIGtwcm9iZV9wcm9maWxlOgorCisJRHluYW1pYyB0cmFjZSBwb2ludHMgc3RhdHMuIFNlZSBrcHJvYmV0cmFjZS50eHQuCisKKyAgbWF4X2dyYXBoX2RlcHRoOgorCisJVXNlZCB3aXRoIHRoZSBmdW5jdGlvbiBncmFwaCB0cmFjZXIuIFRoaXMgaXMgdGhlIG1heCBkZXB0aAorCWl0IHdpbGwgdHJhY2UgaW50byBhIGZ1bmN0aW9uLiBTZXR0aW5nIHRoaXMgdG8gYSB2YWx1ZSBvZgorCW9uZSB3aWxsIHNob3cgb25seSB0aGUgZmlyc3Qga2VybmVsIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkCisJZnJvbSB1c2VyIHNwYWNlLgorCisgIHByaW50a19mb3JtYXRzOgorCisJVGhpcyBpcyBmb3IgdG9vbHMgdGhhdCByZWFkIHRoZSByYXcgZm9ybWF0IGZpbGVzLiBJZiBhbiBldmVudCBpbgorCXRoZSByaW5nIGJ1ZmZlciByZWZlcmVuY2VzIGEgc3RyaW5nIChjdXJyZW50bHkgb25seSB0cmFjZV9wcmludGsoKQorCWRvZXMgdGhpcyksIG9ubHkgYSBwb2ludGVyIHRvIHRoZSBzdHJpbmcgaXMgcmVjb3JkZWQgaW50byB0aGUgYnVmZmVyCisJYW5kIG5vdCB0aGUgc3RyaW5nIGl0c2VsZi4gVGhpcyBwcmV2ZW50cyB0b29scyBmcm9tIGtub3dpbmcgd2hhdAorCXRoYXQgc3RyaW5nIHdhcy4gVGhpcyBmaWxlIGRpc3BsYXlzIHRoZSBzdHJpbmcgYW5kIGFkZHJlc3MgZm9yCisJdGhlIHN0cmluZyBhbGxvd2luZyB0b29scyB0byBtYXAgdGhlIHBvaW50ZXJzIHRvIHdoYXQgdGhlCisJc3RyaW5ncyB3ZXJlLgorCisgIHNhdmVkX2NtZGxpbmVzOgorCisJT25seSB0aGUgcGlkIG9mIHRoZSB0YXNrIGlzIHJlY29yZGVkIGluIGEgdHJhY2UgZXZlbnQgdW5sZXNzCisJdGhlIGV2ZW50IHNwZWNpZmljYWxseSBzYXZlcyB0aGUgdGFzayBjb21tIGFzIHdlbGwuIEZ0cmFjZQorCW1ha2VzIGEgY2FjaGUgb2YgcGlkIG1hcHBpbmdzIHRvIGNvbW1zIHRvIHRyeSB0byBkaXNwbGF5CisJY29tbXMgZm9yIGV2ZW50cy4gSWYgYSBwaWQgZm9yIGEgY29tbSBpcyBub3QgbGlzdGVkLCB0aGVuCisJIjwuLi4+IiBpcyBkaXNwbGF5ZWQgaW4gdGhlIG91dHB1dC4KKworICBzbmFwc2hvdDoKKworCVRoaXMgZGlzcGxheXMgdGhlICJzbmFwc2hvdCIgYnVmZmVyIGFuZCBhbHNvIGxldHMgdGhlIHVzZXIKKwl0YWtlIGEgc25hcHNob3Qgb2YgdGhlIGN1cnJlbnQgcnVubmluZyB0cmFjZS4KKwlTZWUgdGhlICJTbmFwc2hvdCIgc2VjdGlvbiBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLgorCisgIHN0YWNrX21heF9zaXplOgorCisJV2hlbiB0aGUgc3RhY2sgdHJhY2VyIGlzIGFjdGl2YXRlZCwgdGhpcyB3aWxsIGRpc3BsYXkgdGhlCisJbWF4aW11bSBzdGFjayBzaXplIGl0IGhhcyBlbmNvdW50ZXJlZC4KKwlTZWUgdGhlICJTdGFjayBUcmFjZSIgc2VjdGlvbiBiZWxvdy4KKworICBzdGFja190cmFjZToKKworCVRoaXMgZGlzcGxheXMgdGhlIHN0YWNrIGJhY2sgdHJhY2Ugb2YgdGhlIGxhcmdlc3Qgc3RhY2sKKwl0aGF0IHdhcyBlbmNvdW50ZXJlZCB3aGVuIHRoZSBzdGFjayB0cmFjZXIgaXMgYWN0aXZhdGVkLgorCVNlZSB0aGUgIlN0YWNrIFRyYWNlIiBzZWN0aW9uIGJlbG93LgorCisgIHN0YWNrX3RyYWNlX2ZpbHRlcjoKKworCVRoaXMgaXMgc2ltaWxhciB0byAic2V0X2Z0cmFjZV9maWx0ZXIiIGJ1dCBpdCBsaW1pdHMgd2hhdAorCWZ1bmN0aW9ucyB0aGUgc3RhY2sgdHJhY2VyIHdpbGwgY2hlY2suCisKKyAgdHJhY2VfY2xvY2s6CisKKwlXaGVuZXZlciBhbiBldmVudCBpcyByZWNvcmRlZCBpbnRvIHRoZSByaW5nIGJ1ZmZlciwgYQorCSJ0aW1lc3RhbXAiIGlzIGFkZGVkLiBUaGlzIHN0YW1wIGNvbWVzIGZyb20gYSBzcGVjaWZpZWQKKwljbG9jay4gQnkgZGVmYXVsdCwgZnRyYWNlIHVzZXMgdGhlICJsb2NhbCIgY2xvY2suIFRoaXMKKwljbG9jayBpcyB2ZXJ5IGZhc3QgYW5kIHN0cmljdGx5IHBlciBjcHUsIGJ1dCBvbiBzb21lCisJc3lzdGVtcyBpdCBtYXkgbm90IGJlIG1vbm90b25pYyB3aXRoIHJlc3BlY3QgdG8gb3RoZXIKKwlDUFVzLiBJbiBvdGhlciB3b3JkcywgdGhlIGxvY2FsIGNsb2NrcyBtYXkgbm90IGJlIGluIHN5bmMKKwl3aXRoIGxvY2FsIGNsb2NrcyBvbiBvdGhlciBDUFVzLgorCisJVXN1YWwgY2xvY2tzIGZvciB0cmFjaW5nOgorCisJICAjIGNhdCB0cmFjZV9jbG9jaworCSAgW2xvY2FsXSBnbG9iYWwgY291bnRlciB4ODYtdHNjCisKKwkgIGxvY2FsOiBEZWZhdWx0IGNsb2NrLCBidXQgbWF5IG5vdCBiZSBpbiBzeW5jIGFjcm9zcyBDUFVzCisKKwkgIGdsb2JhbDogVGhpcyBjbG9jayBpcyBpbiBzeW5jIHdpdGggYWxsIENQVXMgYnV0IG1heQorCSAgCSAgYmUgYSBiaXQgc2xvd2VyIHRoYW4gdGhlIGxvY2FsIGNsb2NrLgorCisJICBjb3VudGVyOiBUaGlzIGlzIG5vdCBhIGNsb2NrIGF0IGFsbCwgYnV0IGxpdGVyYWxseSBhbiBhdG9taWMKKwkgIAkgICBjb3VudGVyLiBJdCBjb3VudHMgdXAgb25lIGJ5IG9uZSwgYnV0IGlzIGluIHN5bmMKKwkJICAgd2l0aCBhbGwgQ1BVcy4gVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3UgbmVlZCB0bworCQkgICBrbm93IGV4YWN0bHkgdGhlIG9yZGVyIGV2ZW50cyBvY2N1cnJlZCB3aXRoIHJlc3BlY3QgdG8KKwkJICAgZWFjaCBvdGhlciBvbiBkaWZmZXJlbnQgQ1BVcy4KKworCSAgdXB0aW1lOiBUaGlzIHVzZXMgdGhlIGppZmZpZXMgY291bnRlciBhbmQgdGhlIHRpbWUgc3RhbXAKKwkgIAkgIGlzIHJlbGF0aXZlIHRvIHRoZSB0aW1lIHNpbmNlIGJvb3QgdXAuCisKKwkgIHBlcmY6IFRoaXMgbWFrZXMgZnRyYWNlIHVzZSB0aGUgc2FtZSBjbG9jayB0aGF0IHBlcmYgdXNlcy4KKwkgIAlFdmVudHVhbGx5IHBlcmYgd2lsbCBiZSBhYmxlIHRvIHJlYWQgZnRyYWNlIGJ1ZmZlcnMKKwkJYW5kIHRoaXMgd2lsbCBoZWxwIG91dCBpbiBpbnRlcmxlYXZpbmcgdGhlIGRhdGEuCisKKwkgIHg4Ni10c2M6IEFyY2hpdGVjdHVyZXMgbWF5IGRlZmluZSB0aGVpciBvd24gY2xvY2tzLiBGb3IKKwkgIAkgICBleGFtcGxlLCB4ODYgdXNlcyBpdHMgb3duIFRTQyBjeWNsZSBjbG9jayBoZXJlLgorCisJICBwcGMtdGI6IFRoaXMgdXNlcyB0aGUgcG93ZXJwYyB0aW1lYmFzZSByZWdpc3RlciB2YWx1ZS4KKwkJICBUaGlzIGlzIGluIHN5bmMgYWNyb3NzIENQVXMgYW5kIGNhbiBhbHNvIGJlIHVzZWQKKwkJICB0byBjb3JyZWxhdGUgZXZlbnRzIGFjcm9zcyBoeXBlcnZpc29yL2d1ZXN0IGlmCisJCSAgdGJfb2Zmc2V0IGlzIGtub3duLgorCisJVG8gc2V0IGEgY2xvY2ssIHNpbXBseSBlY2hvIHRoZSBjbG9jayBuYW1lIGludG8gdGhpcyBmaWxlLgorCisJICBlY2hvIGdsb2JhbCA+IHRyYWNlX2Nsb2NrCisKKyAgdHJhY2VfbWFya2VyOgorCisJVGhpcyBpcyBhIHZlcnkgdXNlZnVsIGZpbGUgZm9yIHN5bmNocm9uaXppbmcgdXNlciBzcGFjZQorCXdpdGggZXZlbnRzIGhhcHBlbmluZyBpbiB0aGUga2VybmVsLiBXcml0aW5nIHN0cmluZ3MgaW50bworCXRoaXMgZmlsZSB3aWxsIGJlIHdyaXR0ZW4gaW50byB0aGUgZnRyYWNlIGJ1ZmZlci4KKworCUl0IGlzIHVzZWZ1bCBpbiBhcHBsaWNhdGlvbnMgdG8gb3BlbiB0aGlzIGZpbGUgYXQgdGhlIHN0YXJ0CisJb2YgdGhlIGFwcGxpY2F0aW9uIGFuZCBqdXN0IHJlZmVyZW5jZSB0aGUgZmlsZSBkZXNjcmlwdG9yCisJZm9yIHRoZSBmaWxlLgorCisJdm9pZCB0cmFjZV93cml0ZShjb25zdCBjaGFyICpmbXQsIC4uLikKKwl7CisJCXZhX2xpc3QgYXA7CisJCWNoYXIgYnVmWzI1Nl07CisJCWludCBuOworCisJCWlmICh0cmFjZV9mZCA8IDApCisJCQlyZXR1cm47CisKKwkJdmFfc3RhcnQoYXAsIGZtdCk7CisJCW4gPSB2c25wcmludGYoYnVmLCAyNTYsIGZtdCwgYXApOworCQl2YV9lbmQoYXApOworCisJCXdyaXRlKHRyYWNlX2ZkLCBidWYsIG4pOworCX0KKworCXN0YXJ0OgorCisJCXRyYWNlX2ZkID0gb3BlbigidHJhY2VfbWFya2VyIiwgV1JfT05MWSk7CisKKyAgdXByb2JlX2V2ZW50czoKKyAKKwlBZGQgZHluYW1pYyB0cmFjZXBvaW50cyBpbiBwcm9ncmFtcy4KKwlTZWUgdXByb2JldHJhY2VyLnR4dAorCisgIHVwcm9iZV9wcm9maWxlOgorCisJVXByb2JlIHN0YXRpc3RpY3MuIFNlZSB1cHJvYmV0cmFjZS50eHQKKworICBpbnN0YW5jZXM6CisKKwlUaGlzIGlzIGEgd2F5IHRvIG1ha2UgbXVsdGlwbGUgdHJhY2UgYnVmZmVycyB3aGVyZSBkaWZmZXJlbnQKKwlldmVudHMgY2FuIGJlIHJlY29yZGVkIGluIGRpZmZlcmVudCBidWZmZXJzLgorCVNlZSAiSW5zdGFuY2VzIiBzZWN0aW9uIGJlbG93LgorCisgIGV2ZW50czoKKworCVRoaXMgaXMgdGhlIHRyYWNlIGV2ZW50IGRpcmVjdG9yeS4gSXQgaG9sZHMgZXZlbnQgdHJhY2Vwb2ludHMKKwkoYWxzbyBrbm93biBhcyBzdGF0aWMgdHJhY2Vwb2ludHMpIHRoYXQgaGF2ZSBiZWVuIGNvbXBpbGVkCisJaW50byB0aGUga2VybmVsLiBJdCBzaG93cyB3aGF0IGV2ZW50IHRyYWNlcG9pbnRzIGV4aXN0CisJYW5kIGhvdyB0aGV5IGFyZSBncm91cGVkIGJ5IHN5c3RlbS4gVGhlcmUgYXJlICJlbmFibGUiCisJZmlsZXMgYXQgdmFyaW91cyBsZXZlbHMgdGhhdCBjYW4gZW5hYmxlIHRoZSB0cmFjZXBvaW50cworCXdoZW4gYSAiMSIgaXMgd3JpdHRlbiB0byB0aGVtLgorCisJU2VlIGV2ZW50cy50eHQgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKyAgcGVyX2NwdToKKworCVRoaXMgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0aGUgdHJhY2UgcGVyX2NwdSBpbmZvcm1hdGlvbi4KKworICBwZXJfY3B1L2NwdTAvYnVmZmVyX3NpemVfa2I6CisKKwlUaGUgZnRyYWNlIGJ1ZmZlciBpcyBkZWZpbmVkIHBlcl9jcHUuIFRoYXQgaXMsIHRoZXJlJ3MgYSBzZXBhcmF0ZQorCWJ1ZmZlciBmb3IgZWFjaCBDUFUgdG8gYWxsb3cgd3JpdGVzIHRvIGJlIGRvbmUgYXRvbWljYWxseSwKKwlhbmQgZnJlZSBmcm9tIGNhY2hlIGJvdW5jaW5nLiBUaGVzZSBidWZmZXJzIG1heSBoYXZlIGRpZmZlcmVudAorCXNpemUgYnVmZmVycy4gVGhpcyBmaWxlIGlzIHNpbWlsYXIgdG8gdGhlIGJ1ZmZlcl9zaXplX2tiCisJZmlsZSwgYnV0IGl0IG9ubHkgZGlzcGxheXMgb3Igc2V0cyB0aGUgYnVmZmVyIHNpemUgZm9yIHRoZQorCXNwZWNpZmljIENQVS4gKGhlcmUgY3B1MCkuCisKKyAgcGVyX2NwdS9jcHUwL3RyYWNlOgorCisJVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSAidHJhY2UiIGZpbGUsIGJ1dCBpdCB3aWxsIG9ubHkgZGlzcGxheQorCXRoZSBkYXRhIHNwZWNpZmljIGZvciB0aGUgQ1BVLiBJZiB3cml0dGVuIHRvLCBpdCBvbmx5IGNsZWFycworCXRoZSBzcGVjaWZpYyBDUFUgYnVmZmVyLgorCisgIHBlcl9jcHUvY3B1MC90cmFjZV9waXBlCisKKwlUaGlzIGlzIHNpbWlsYXIgdG8gdGhlICJ0cmFjZV9waXBlIiBmaWxlLCBhbmQgaXMgYSBjb25zdW1pbmcKKwlyZWFkLCBidXQgaXQgd2lsbCBvbmx5IGRpc3BsYXkgKGFuZCBjb25zdW1lKSB0aGUgZGF0YSBzcGVjaWZpYworCWZvciB0aGUgQ1BVLgorCisgIHBlcl9jcHUvY3B1MC90cmFjZV9waXBlX3JhdworCisJRm9yIHRvb2xzIHRoYXQgY2FuIHBhcnNlIHRoZSBmdHJhY2UgcmluZyBidWZmZXIgYmluYXJ5IGZvcm1hdCwKKwl0aGUgdHJhY2VfcGlwZV9yYXcgZmlsZSBjYW4gYmUgdXNlZCB0byBleHRyYWN0IHRoZSBkYXRhCisJZnJvbSB0aGUgcmluZyBidWZmZXIgZGlyZWN0bHkuIFdpdGggdGhlIHVzZSBvZiB0aGUgc3BsaWNlKCkKKwlzeXN0ZW0gY2FsbCwgdGhlIGJ1ZmZlciBkYXRhIGNhbiBiZSBxdWlja2x5IHRyYW5zZmVycmVkIHRvCisJYSBmaWxlIG9yIHRvIHRoZSBuZXR3b3JrIHdoZXJlIGEgc2VydmVyIGlzIGNvbGxlY3RpbmcgdGhlCisJZGF0YS4KKworCUxpa2UgdHJhY2VfcGlwZSwgdGhpcyBpcyBhIGNvbnN1bWluZyByZWFkZXIsIHdoZXJlIG11bHRpcGxlCisJcmVhZHMgd2lsbCBhbHdheXMgcHJvZHVjZSBkaWZmZXJlbnQgZGF0YS4KKworICBwZXJfY3B1L2NwdTAvc25hcHNob3Q6CisKKwlUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIG1haW4gInNuYXBzaG90IiBmaWxlLCBidXQgd2lsbCBvbmx5CisJc25hcHNob3QgdGhlIGN1cnJlbnQgQ1BVIChpZiBzdXBwb3J0ZWQpLiBJdCBvbmx5IGRpc3BsYXlzCisJdGhlIGNvbnRlbnQgb2YgdGhlIHNuYXBzaG90IGZvciBhIGdpdmVuIENQVSwgYW5kIGlmCisJd3JpdHRlbiB0bywgb25seSBjbGVhcnMgdGhpcyBDUFUgYnVmZmVyLgorCisgIHBlcl9jcHUvY3B1MC9zbmFwc2hvdF9yYXc6CisKKwlTaW1pbGFyIHRvIHRoZSB0cmFjZV9waXBlX3JhdywgYnV0IHdpbGwgcmVhZCB0aGUgYmluYXJ5IGZvcm1hdAorCWZyb20gdGhlIHNuYXBzaG90IGJ1ZmZlciBmb3IgdGhlIGdpdmVuIENQVS4KKworICBwZXJfY3B1L2NwdTAvc3RhdHM6CisKKwlUaGlzIGRpc3BsYXlzIGNlcnRhaW4gc3RhdHMgYWJvdXQgdGhlIHJpbmcgYnVmZmVyOgorCisJIGVudHJpZXM6IFRoZSBudW1iZXIgb2YgZXZlbnRzIHRoYXQgYXJlIHN0aWxsIGluIHRoZSBidWZmZXIuCisKKwkgb3ZlcnJ1bjogVGhlIG51bWJlciBvZiBsb3N0IGV2ZW50cyBkdWUgdG8gb3ZlcndyaXRpbmcgd2hlbgorCSAJICB0aGUgYnVmZmVyIHdhcyBmdWxsLgorCisJIGNvbW1pdCBvdmVycnVuOiBTaG91bGQgYWx3YXlzIGJlIHplcm8uCisJIAlUaGlzIGdldHMgc2V0IGlmIHNvIG1hbnkgZXZlbnRzIGhhcHBlbmVkIHdpdGhpbiBhIG5lc3RlZAorCQlldmVudCAocmluZyBidWZmZXIgaXMgcmUtZW50cmFudCksIHRoYXQgaXQgZmlsbHMgdGhlCisJCWJ1ZmZlciBhbmQgc3RhcnRzIGRyb3BwaW5nIGV2ZW50cy4KKworCSBieXRlczogQnl0ZXMgYWN0dWFsbHkgcmVhZCAobm90IG92ZXJ3cml0dGVuKS4KKworCSBvbGRlc3QgZXZlbnQgdHM6IFRoZSBvbGRlc3QgdGltZXN0YW1wIGluIHRoZSBidWZmZXIKKworCSBub3cgdHM6IFRoZSBjdXJyZW50IHRpbWVzdGFtcAorCisJIGRyb3BwZWQgZXZlbnRzOiBFdmVudHMgbG9zdCBkdWUgdG8gb3ZlcndyaXRlIG9wdGlvbiBiZWluZyBvZmYuCisKKwkgcmVhZCBldmVudHM6IFRoZSBudW1iZXIgb2YgZXZlbnRzIHJlYWQuCisKK1RoZSBUcmFjZXJzCistLS0tLS0tLS0tLQorCitIZXJlIGlzIHRoZSBsaXN0IG9mIGN1cnJlbnQgdHJhY2VycyB0aGF0IG1heSBiZSBjb25maWd1cmVkLgorCisgICJmdW5jdGlvbiIKKworCUZ1bmN0aW9uIGNhbGwgdHJhY2VyIHRvIHRyYWNlIGFsbCBrZXJuZWwgZnVuY3Rpb25zLgorCisgICJmdW5jdGlvbl9ncmFwaCIKKworCVNpbWlsYXIgdG8gdGhlIGZ1bmN0aW9uIHRyYWNlciBleGNlcHQgdGhhdCB0aGUKKwlmdW5jdGlvbiB0cmFjZXIgcHJvYmVzIHRoZSBmdW5jdGlvbnMgb24gdGhlaXIgZW50cnkKKwl3aGVyZWFzIHRoZSBmdW5jdGlvbiBncmFwaCB0cmFjZXIgdHJhY2VzIG9uIGJvdGggZW50cnkKKwlhbmQgZXhpdCBvZiB0aGUgZnVuY3Rpb25zLiBJdCB0aGVuIHByb3ZpZGVzIHRoZSBhYmlsaXR5CisJdG8gZHJhdyBhIGdyYXBoIG9mIGZ1bmN0aW9uIGNhbGxzIHNpbWlsYXIgdG8gQyBjb2RlCisJc291cmNlLgorCisgICJpcnFzb2ZmIgorCisJVHJhY2VzIHRoZSBhcmVhcyB0aGF0IGRpc2FibGUgaW50ZXJydXB0cyBhbmQgc2F2ZXMKKwl0aGUgdHJhY2Ugd2l0aCB0aGUgbG9uZ2VzdCBtYXggbGF0ZW5jeS4KKwlTZWUgdHJhY2luZ19tYXhfbGF0ZW5jeS4gV2hlbiBhIG5ldyBtYXggaXMgcmVjb3JkZWQsCisJaXQgcmVwbGFjZXMgdGhlIG9sZCB0cmFjZS4gSXQgaXMgYmVzdCB0byB2aWV3IHRoaXMKKwl0cmFjZSB3aXRoIHRoZSBsYXRlbmN5LWZvcm1hdCBvcHRpb24gZW5hYmxlZC4KKworICAicHJlZW1wdG9mZiIKKworCVNpbWlsYXIgdG8gaXJxc29mZiBidXQgdHJhY2VzIGFuZCByZWNvcmRzIHRoZSBhbW91bnQgb2YKKwl0aW1lIGZvciB3aGljaCBwcmVlbXB0aW9uIGlzIGRpc2FibGVkLgorCisgICJwcmVlbXB0aXJxc29mZiIKKworCVNpbWlsYXIgdG8gaXJxc29mZiBhbmQgcHJlZW1wdG9mZiwgYnV0IHRyYWNlcyBhbmQKKwlyZWNvcmRzIHRoZSBsYXJnZXN0IHRpbWUgZm9yIHdoaWNoIGlycXMgYW5kL29yIHByZWVtcHRpb24KKwlpcyBkaXNhYmxlZC4KKworICAid2FrZXVwIgorCisJVHJhY2VzIGFuZCByZWNvcmRzIHRoZSBtYXggbGF0ZW5jeSB0aGF0IGl0IHRha2VzIGZvcgorCXRoZSBoaWdoZXN0IHByaW9yaXR5IHRhc2sgdG8gZ2V0IHNjaGVkdWxlZCBhZnRlcgorCWl0IGhhcyBiZWVuIHdva2VuIHVwLgorICAgICAgICBUcmFjZXMgYWxsIHRhc2tzIGFzIGFuIGF2ZXJhZ2UgZGV2ZWxvcGVyIHdvdWxkIGV4cGVjdC4KKworICAid2FrZXVwX3J0IgorCisgICAgICAgIFRyYWNlcyBhbmQgcmVjb3JkcyB0aGUgbWF4IGxhdGVuY3kgdGhhdCBpdCB0YWtlcyBmb3IganVzdAorICAgICAgICBSVCB0YXNrcyAoYXMgdGhlIGN1cnJlbnQgIndha2V1cCIgZG9lcykuIFRoaXMgaXMgdXNlZnVsCisgICAgICAgIGZvciB0aG9zZSBpbnRlcmVzdGVkIGluIHdha2UgdXAgdGltaW5ncyBvZiBSVCB0YXNrcy4KKworICAibm9wIgorCisJVGhpcyBpcyB0aGUgInRyYWNlIG5vdGhpbmciIHRyYWNlci4gVG8gcmVtb3ZlIGFsbAorCXRyYWNlcnMgZnJvbSB0cmFjaW5nIHNpbXBseSBlY2hvICJub3AiIGludG8KKwljdXJyZW50X3RyYWNlci4KKworCitFeGFtcGxlcyBvZiB1c2luZyB0aGUgdHJhY2VyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0hlcmUgYXJlIHR5cGljYWwgZXhhbXBsZXMgb2YgdXNpbmcgdGhlIHRyYWNlcnMgd2hlbiBjb250cm9sbGluZwordGhlbSBvbmx5IHdpdGggdGhlIGRlYnVnZnMgaW50ZXJmYWNlICh3aXRob3V0IHVzaW5nIGFueQordXNlci1sYW5kIHV0aWxpdGllcykuCisKK091dHB1dCBmb3JtYXQ6CistLS0tLS0tLS0tLS0tLQorCitIZXJlIGlzIGFuIGV4YW1wbGUgb2YgdGhlIG91dHB1dCBmb3JtYXQgb2YgdGhlIGZpbGUgInRyYWNlIgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tCisjIHRyYWNlcjogZnVuY3Rpb24KKyMKKyMgZW50cmllcy1pbi1idWZmZXIvZW50cmllcy13cml0dGVuOiAxNDAwODAvMjUwMjgwICAgI1A6NAorIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8tLS0tLT0+IGlycXMtb2ZmCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF8tLS0tPT4gbmVlZC1yZXNjaGVkCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgLyBfLS0tPT4gaGFyZGlycS9zb2Z0aXJxCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IC8gXy0tPT4gcHJlZW1wdC1kZXB0aAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fHwgLyAgICAgZGVsYXkKKyMgICAgICAgICAgIFRBU0stUElEICAgQ1BVIyAgfHx8fCAgICBUSU1FU1RBTVAgIEZVTkNUSU9OCisjICAgICAgICAgICAgICB8IHwgICAgICAgfCAgIHx8fHwgICAgICAgfCAgICAgICAgIHwKKyAgICAgICAgICAgIGJhc2gtMTk3NyAgWzAwMF0gLi4uLiAxNzI4NC45OTM2NTI6IHN5c19jbG9zZSA8LXN5c3RlbV9jYWxsX2Zhc3RwYXRoCisgICAgICAgICAgICBiYXNoLTE5NzcgIFswMDBdIC4uLi4gMTcyODQuOTkzNjUzOiBfX2Nsb3NlX2ZkIDwtc3lzX2Nsb3NlCisgICAgICAgICAgICBiYXNoLTE5NzcgIFswMDBdIC4uLi4gMTcyODQuOTkzNjUzOiBfcmF3X3NwaW5fbG9jayA8LV9fY2xvc2VfZmQKKyAgICAgICAgICAgIHNzaGQtMTk3NCAgWzAwM10gLi4uLiAxNzI4NC45OTM2NTM6IF9fc3JjdV9yZWFkX3VubG9jayA8LWZzbm90aWZ5CisgICAgICAgICAgICBiYXNoLTE5NzcgIFswMDBdIC4uLi4gMTcyODQuOTkzNjU0OiBhZGRfcHJlZW1wdF9jb3VudCA8LV9yYXdfc3Bpbl9sb2NrCisgICAgICAgICAgICBiYXNoLTE5NzcgIFswMDBdIC4uLjEgMTcyODQuOTkzNjU1OiBfcmF3X3NwaW5fdW5sb2NrIDwtX19jbG9zZV9mZAorICAgICAgICAgICAgYmFzaC0xOTc3ICBbMDAwXSAuLi4xIDE3Mjg0Ljk5MzY1Njogc3ViX3ByZWVtcHRfY291bnQgPC1fcmF3X3NwaW5fdW5sb2NrCisgICAgICAgICAgICBiYXNoLTE5NzcgIFswMDBdIC4uLi4gMTcyODQuOTkzNjU3OiBmaWxwX2Nsb3NlIDwtX19jbG9zZV9mZAorICAgICAgICAgICAgYmFzaC0xOTc3ICBbMDAwXSAuLi4uIDE3Mjg0Ljk5MzY1NzogZG5vdGlmeV9mbHVzaCA8LWZpbHBfY2xvc2UKKyAgICAgICAgICAgIHNzaGQtMTk3NCAgWzAwM10gLi4uLiAxNzI4NC45OTM2NTg6IHN5c19zZWxlY3QgPC1zeXN0ZW1fY2FsbF9mYXN0cGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLQorCitBIGhlYWRlciBpcyBwcmludGVkIHdpdGggdGhlIHRyYWNlciBuYW1lIHRoYXQgaXMgcmVwcmVzZW50ZWQgYnkKK3RoZSB0cmFjZS4gSW4gdGhpcyBjYXNlIHRoZSB0cmFjZXIgaXMgImZ1bmN0aW9uIi4gVGhlbiBpdCBzaG93cyB0aGUKK251bWJlciBvZiBldmVudHMgaW4gdGhlIGJ1ZmZlciBhcyB3ZWxsIGFzIHRoZSB0b3RhbCBudW1iZXIgb2YgZW50cmllcwordGhhdCB3ZXJlIHdyaXR0ZW4uIFRoZSBkaWZmZXJlbmNlIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyB0aGF0IHdlcmUKK2xvc3QgZHVlIHRvIHRoZSBidWZmZXIgZmlsbGluZyB1cCAoMjUwMjgwIC0gMTQwMDgwID0gMTEwMjAwIGV2ZW50cworbG9zdCkuCisKK1RoZSBoZWFkZXIgZXhwbGFpbnMgdGhlIGNvbnRlbnQgb2YgdGhlIGV2ZW50cy4gVGFzayBuYW1lICJiYXNoIiwgdGhlIHRhc2sKK1BJRCAiMTk3NyIsIHRoZSBDUFUgdGhhdCBpdCB3YXMgcnVubmluZyBvbiAiMDAwIiwgdGhlIGxhdGVuY3kgZm9ybWF0CisoZXhwbGFpbmVkIGJlbG93KSwgdGhlIHRpbWVzdGFtcCBpbiA8c2Vjcz4uPHVzZWNzPiBmb3JtYXQsIHRoZQorZnVuY3Rpb24gbmFtZSB0aGF0IHdhcyB0cmFjZWQgInN5c19jbG9zZSIgYW5kIHRoZSBwYXJlbnQgZnVuY3Rpb24gdGhhdAorY2FsbGVkIHRoaXMgZnVuY3Rpb24gInN5c3RlbV9jYWxsX2Zhc3RwYXRoIi4gVGhlIHRpbWVzdGFtcCBpcyB0aGUgdGltZQorYXQgd2hpY2ggdGhlIGZ1bmN0aW9uIHdhcyBlbnRlcmVkLgorCitMYXRlbmN5IHRyYWNlIGZvcm1hdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hlbiB0aGUgbGF0ZW5jeS1mb3JtYXQgb3B0aW9uIGlzIGVuYWJsZWQgb3Igd2hlbiBvbmUgb2YgdGhlIGxhdGVuY3kKK3RyYWNlcnMgaXMgc2V0LCB0aGUgdHJhY2UgZmlsZSBnaXZlcyBzb21ld2hhdCBtb3JlIGluZm9ybWF0aW9uIHRvIHNlZQord2h5IGEgbGF0ZW5jeSBoYXBwZW5lZC4gSGVyZSBpcyBhIHR5cGljYWwgdHJhY2UuCisKKyMgdHJhY2VyOiBpcnFzb2ZmCisjCisjIGlycXNvZmYgbGF0ZW5jeSB0cmFjZSB2MS4xLjUgb24gMy44LjAtdGVzdCsKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgbGF0ZW5jeTogMjU5IHVzLCAjNC80LCBDUFUjMiB8IChNOnByZWVtcHQgVlA6MCwgS1A6MCwgU1A6MCBIUDowICNQOjQpCisjICAgIC0tLS0tLS0tLS0tLS0tLS0tCisjICAgIHwgdGFzazogcHMtNjE0MyAodWlkOjAgbmljZTowIHBvbGljeTowIHJ0X3ByaW86MCkKKyMgICAgLS0tLS0tLS0tLS0tLS0tLS0KKyMgID0+IHN0YXJ0ZWQgYXQ6IF9fbG9ja190YXNrX3NpZ2hhbmQKKyMgID0+IGVuZGVkIGF0OiAgIF9yYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZQorIworIworIyAgICAgICAgICAgICAgICAgIF8tLS0tLS09PiBDUFUjICAgICAgICAgICAgCisjICAgICAgICAgICAgICAgICAvIF8tLS0tLT0+IGlycXMtb2ZmICAgICAgICAKKyMgICAgICAgICAgICAgICAgfCAvIF8tLS0tPT4gbmVlZC1yZXNjaGVkICAgIAorIyAgICAgICAgICAgICAgICB8fCAvIF8tLS09PiBoYXJkaXJxL3NvZnRpcnEgCisjICAgICAgICAgICAgICAgIHx8fCAvIF8tLT0+IHByZWVtcHQtZGVwdGggICAKKyMgICAgICAgICAgICAgICAgfHx8fCAvICAgICBkZWxheSAgICAgICAgICAgICAKKyMgIGNtZCAgICAgcGlkICAgfHx8fHwgdGltZSAgfCAgIGNhbGxlciAgICAgIAorIyAgICAgXCAgIC8gICAgICB8fHx8fCAgXCAgICB8ICAgLyAgICAgICAgICAgCisgICAgICBwcy02MTQzICAgIDJkLi4uICAgIDB1cyE6IHRyYWNlX2hhcmRpcnFzX29mZiA8LV9fbG9ja190YXNrX3NpZ2hhbmQKKyAgICAgIHBzLTYxNDMgICAgMmQuLjEgIDI1OXVzKzogdHJhY2VfaGFyZGlycXNfb24gPC1fcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUKKyAgICAgIHBzLTYxNDMgICAgMmQuLjEgIDI2M3VzKzogdGltZV9oYXJkaXJxc19vbiA8LV9yYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZQorICAgICAgcHMtNjE0MyAgICAyZC4uMSAgMzA2dXMgOiA8c3RhY2sgdHJhY2U+CisgPT4gdHJhY2VfaGFyZGlycXNfb25fY2FsbGVyCisgPT4gdHJhY2VfaGFyZGlycXNfb24KKyA9PiBfcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUKKyA9PiBkb190YXNrX3N0YXQKKyA9PiBwcm9jX3RnaWRfc3RhdAorID0+IHByb2Nfc2luZ2xlX3Nob3cKKyA9PiBzZXFfcmVhZAorID0+IHZmc19yZWFkCisgPT4gc3lzX3JlYWQKKyA9PiBzeXN0ZW1fY2FsbF9mYXN0cGF0aAorCisKK1RoaXMgc2hvd3MgdGhhdCB0aGUgY3VycmVudCB0cmFjZXIgaXMgImlycXNvZmYiIHRyYWNpbmcgdGhlIHRpbWUKK2ZvciB3aGljaCBpbnRlcnJ1cHRzIHdlcmUgZGlzYWJsZWQuIEl0IGdpdmVzIHRoZSB0cmFjZSB2ZXJzaW9uICh3aGljaAorbmV2ZXIgY2hhbmdlcykgYW5kIHRoZSB2ZXJzaW9uIG9mIHRoZSBrZXJuZWwgdXBvbiB3aGljaCB0aGlzIHdhcyBleGVjdXRlZCBvbgorKDMuMTApLiBUaGVuIGl0IGRpc3BsYXlzIHRoZSBtYXggbGF0ZW5jeSBpbiBtaWNyb3NlY29uZHMgKDI1OSB1cykuIFRoZSBudW1iZXIKK29mIHRyYWNlIGVudHJpZXMgZGlzcGxheWVkIGFuZCB0aGUgdG90YWwgbnVtYmVyIChib3RoIGFyZSBmb3VyOiAjNC80KS4KK1ZQLCBLUCwgU1AsIGFuZCBIUCBhcmUgYWx3YXlzIHplcm8gYW5kIGFyZSByZXNlcnZlZCBmb3IgbGF0ZXIgdXNlLgorI1AgaXMgdGhlIG51bWJlciBvZiBvbmxpbmUgQ1BVcyAoI1A6NCkuCisKK1RoZSB0YXNrIGlzIHRoZSBwcm9jZXNzIHRoYXQgd2FzIHJ1bm5pbmcgd2hlbiB0aGUgbGF0ZW5jeQorb2NjdXJyZWQuIChwcyBwaWQ6IDYxNDMpLgorCitUaGUgc3RhcnQgYW5kIHN0b3AgKHRoZSBmdW5jdGlvbnMgaW4gd2hpY2ggdGhlIGludGVycnVwdHMgd2VyZQorZGlzYWJsZWQgYW5kIGVuYWJsZWQgcmVzcGVjdGl2ZWx5KSB0aGF0IGNhdXNlZCB0aGUgbGF0ZW5jaWVzOgorCisgX19sb2NrX3Rhc2tfc2lnaGFuZCBpcyB3aGVyZSB0aGUgaW50ZXJydXB0cyB3ZXJlIGRpc2FibGVkLgorIF9yYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSBpcyB3aGVyZSB0aGV5IHdlcmUgZW5hYmxlZCBhZ2Fpbi4KKworVGhlIG5leHQgbGluZXMgYWZ0ZXIgdGhlIGhlYWRlciBhcmUgdGhlIHRyYWNlIGl0c2VsZi4gVGhlIGhlYWRlcgorZXhwbGFpbnMgd2hpY2ggaXMgd2hpY2guCisKKyAgY21kOiBUaGUgbmFtZSBvZiB0aGUgcHJvY2VzcyBpbiB0aGUgdHJhY2UuCisKKyAgcGlkOiBUaGUgUElEIG9mIHRoYXQgcHJvY2Vzcy4KKworICBDUFUjOiBUaGUgQ1BVIHdoaWNoIHRoZSBwcm9jZXNzIHdhcyBydW5uaW5nIG9uLgorCisgIGlycXMtb2ZmOiAnZCcgaW50ZXJydXB0cyBhcmUgZGlzYWJsZWQuICcuJyBvdGhlcndpc2UuCisJICAgIE5vdGU6IElmIHRoZSBhcmNoaXRlY3R1cmUgZG9lcyBub3Qgc3VwcG9ydCBhIHdheSB0bworCQkgIHJlYWQgdGhlIGlycSBmbGFncyB2YXJpYWJsZSwgYW4gJ1gnIHdpbGwgYWx3YXlzCisJCSAgYmUgcHJpbnRlZCBoZXJlLgorCisgIG5lZWQtcmVzY2hlZDoKKwknTicgYm90aCBUSUZfTkVFRF9SRVNDSEVEIGFuZCBQUkVFTVBUX05FRURfUkVTQ0hFRCBpcyBzZXQsCisJJ24nIG9ubHkgVElGX05FRURfUkVTQ0hFRCBpcyBzZXQsCisJJ3AnIG9ubHkgUFJFRU1QVF9ORUVEX1JFU0NIRUQgaXMgc2V0LAorCScuJyBvdGhlcndpc2UuCisKKyAgaGFyZGlycS9zb2Z0aXJxOgorCSdIJyAtIGhhcmQgaXJxIG9jY3VycmVkIGluc2lkZSBhIHNvZnRpcnEuCisJJ2gnIC0gaGFyZCBpcnEgaXMgcnVubmluZworCSdzJyAtIHNvZnQgaXJxIGlzIHJ1bm5pbmcKKwknLicgLSBub3JtYWwgY29udGV4dC4KKworICBwcmVlbXB0LWRlcHRoOiBUaGUgbGV2ZWwgb2YgcHJlZW1wdF9kaXNhYmxlZAorCitUaGUgYWJvdmUgaXMgbW9zdGx5IG1lYW5pbmdmdWwgZm9yIGtlcm5lbCBkZXZlbG9wZXJzLgorCisgIHRpbWU6IFdoZW4gdGhlIGxhdGVuY3ktZm9ybWF0IG9wdGlvbiBpcyBlbmFibGVkLCB0aGUgdHJhY2UgZmlsZQorCW91dHB1dCBpbmNsdWRlcyBhIHRpbWVzdGFtcCByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlCisJdHJhY2UuIFRoaXMgZGlmZmVycyBmcm9tIHRoZSBvdXRwdXQgd2hlbiBsYXRlbmN5LWZvcm1hdAorCWlzIGRpc2FibGVkLCB3aGljaCBpbmNsdWRlcyBhbiBhYnNvbHV0ZSB0aW1lc3RhbXAuCisKKyAgZGVsYXk6IFRoaXMgaXMganVzdCB0byBoZWxwIGNhdGNoIHlvdXIgZXllIGEgYml0IGJldHRlci4gQW5kCisJIG5lZWRzIHRvIGJlIGZpeGVkIHRvIGJlIG9ubHkgcmVsYXRpdmUgdG8gdGhlIHNhbWUgQ1BVLgorCSBUaGUgbWFya3MgYXJlIGRldGVybWluZWQgYnkgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzCisJIGN1cnJlbnQgdHJhY2UgYW5kIHRoZSBuZXh0IHRyYWNlLgorCSAgJyQnIC0gZ3JlYXRlciB0aGFuIDEgc2Vjb25kCisJICAnQCcgLSBncmVhdGVyIHRoYW4gMTAwIG1pbGlzZWNvbmQKKwkgICcqJyAtIGdyZWF0ZXIgdGhhbiAxMCBtaWxpc2Vjb25kCisJICAnIycgLSBncmVhdGVyIHRoYW4gMTAwMCBtaWNyb3NlY29uZAorCSAgJyEnIC0gZ3JlYXRlciB0aGFuIDEwMCBtaWNyb3NlY29uZAorCSAgJysnIC0gZ3JlYXRlciB0aGFuIDEwIG1pY3Jvc2Vjb25kCisJICAnICcgLSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMTAgbWljcm9zZWNvbmQuCisKKyAgVGhlIHJlc3QgaXMgdGhlIHNhbWUgYXMgdGhlICd0cmFjZScgZmlsZS4KKworICBOb3RlLCB0aGUgbGF0ZW5jeSB0cmFjZXJzIHdpbGwgdXN1YWxseSBlbmQgd2l0aCBhIGJhY2sgdHJhY2UKKyAgdG8gZWFzaWx5IGZpbmQgd2hlcmUgdGhlIGxhdGVuY3kgb2NjdXJyZWQuCisKK3RyYWNlX29wdGlvbnMKKy0tLS0tLS0tLS0tLS0KKworVGhlIHRyYWNlX29wdGlvbnMgZmlsZSAob3IgdGhlIG9wdGlvbnMgZGlyZWN0b3J5KSBpcyB1c2VkIHRvIGNvbnRyb2wKK3doYXQgZ2V0cyBwcmludGVkIGluIHRoZSB0cmFjZSBvdXRwdXQsIG9yIG1hbmlwdWxhdGUgdGhlIHRyYWNlcnMuCitUbyBzZWUgd2hhdCBpcyBhdmFpbGFibGUsIHNpbXBseSBjYXQgdGhlIGZpbGU6CisKKyAgY2F0IHRyYWNlX29wdGlvbnMKK3ByaW50LXBhcmVudAorbm9zeW0tb2Zmc2V0Citub3N5bS1hZGRyCitub3ZlcmJvc2UKK25vcmF3Citub2hleAorbm9iaW4KK25vYmxvY2sKK25vc3RhY2t0cmFjZQordHJhY2VfcHJpbnRrCitub2Z0cmFjZV9wcmVlbXB0Citub2JyYW5jaAorYW5ub3RhdGUKK25vdXNlcnN0YWNrdHJhY2UKK25vc3ltLXVzZXJvYmoKK25vcHJpbnRrLW1zZy1vbmx5Citjb250ZXh0LWluZm8KK2xhdGVuY3ktZm9ybWF0CitzbGVlcC10aW1lCitncmFwaC10aW1lCityZWNvcmQtY21kCitvdmVyd3JpdGUKK25vZGlzYWJsZV9vbl9mcmVlCitpcnEtaW5mbworbWFya2VycworZnVuY3Rpb24tdHJhY2UKKworVG8gZGlzYWJsZSBvbmUgb2YgdGhlIG9wdGlvbnMsIGVjaG8gaW4gdGhlIG9wdGlvbiBwcmVwZW5kZWQgd2l0aAorIm5vIi4KKworICBlY2hvIG5vcHJpbnQtcGFyZW50ID4gdHJhY2Vfb3B0aW9ucworCitUbyBlbmFibGUgYW4gb3B0aW9uLCBsZWF2ZSBvZmYgdGhlICJubyIuCisKKyAgZWNobyBzeW0tb2Zmc2V0ID4gdHJhY2Vfb3B0aW9ucworCitIZXJlIGFyZSB0aGUgYXZhaWxhYmxlIG9wdGlvbnM6CisKKyAgcHJpbnQtcGFyZW50IC0gT24gZnVuY3Rpb24gdHJhY2VzLCBkaXNwbGF5IHRoZSBjYWxsaW5nIChwYXJlbnQpCisJCSBmdW5jdGlvbiBhcyB3ZWxsIGFzIHRoZSBmdW5jdGlvbiBiZWluZyB0cmFjZWQuCisKKyAgcHJpbnQtcGFyZW50OgorICAgYmFzaC00MDAwICBbMDFdICAxNDc3LjYwNjY5NDogc2ltcGxlX3N0cnRvdWwgPC1rc3RydG91bAorCisgIG5vcHJpbnQtcGFyZW50OgorICAgYmFzaC00MDAwICBbMDFdICAxNDc3LjYwNjY5NDogc2ltcGxlX3N0cnRvdWwKKworCisgIHN5bS1vZmZzZXQgLSBEaXNwbGF5IG5vdCBvbmx5IHRoZSBmdW5jdGlvbiBuYW1lLCBidXQgYWxzbyB0aGUKKwkgICAgICAgb2Zmc2V0IGluIHRoZSBmdW5jdGlvbi4gRm9yIGV4YW1wbGUsIGluc3RlYWQgb2YKKwkgICAgICAgc2VlaW5nIGp1c3QgImt0aW1lX2dldCIsIHlvdSB3aWxsIHNlZQorCSAgICAgICAia3RpbWVfZ2V0KzB4Yi8weDIwIi4KKworICBzeW0tb2Zmc2V0OgorICAgYmFzaC00MDAwICBbMDFdICAxNDc3LjYwNjY5NDogc2ltcGxlX3N0cnRvdWwrMHg2LzB4YTAKKworICBzeW0tYWRkciAtIHRoaXMgd2lsbCBhbHNvIGRpc3BsYXkgdGhlIGZ1bmN0aW9uIGFkZHJlc3MgYXMgd2VsbAorCSAgICAgYXMgdGhlIGZ1bmN0aW9uIG5hbWUuCisKKyAgc3ltLWFkZHI6CisgICBiYXNoLTQwMDAgIFswMV0gIDE0NzcuNjA2Njk0OiBzaW1wbGVfc3RydG91bCA8YzAzMzkzNDY+CisKKyAgdmVyYm9zZSAtIFRoaXMgZGVhbHMgd2l0aCB0aGUgdHJhY2UgZmlsZSB3aGVuIHRoZQorICAgICAgICAgICAgbGF0ZW5jeS1mb3JtYXQgb3B0aW9uIGlzIGVuYWJsZWQuCisKKyAgICBiYXNoICA0MDAwIDEgMCAwMDAwMDAwMCAwMDAxMGE5NSBbNTgxMjdkMjZdIDE3MjAuNDE1bXMgXAorICAgICgrMC4wMDBtcyk6IHNpbXBsZV9zdHJ0b3VsIChrc3RydG91bCkKKworICByYXcgLSBUaGlzIHdpbGwgZGlzcGxheSByYXcgbnVtYmVycy4gVGhpcyBvcHRpb24gaXMgYmVzdCBmb3IKKwl1c2Ugd2l0aCB1c2VyIGFwcGxpY2F0aW9ucyB0aGF0IGNhbiB0cmFuc2xhdGUgdGhlIHJhdworCW51bWJlcnMgYmV0dGVyIHRoYW4gaGF2aW5nIGl0IGRvbmUgaW4gdGhlIGtlcm5lbC4KKworICBoZXggLSBTaW1pbGFyIHRvIHJhdywgYnV0IHRoZSBudW1iZXJzIHdpbGwgYmUgaW4gYSBoZXhhZGVjaW1hbAorCWZvcm1hdC4KKworICBiaW4gLSBUaGlzIHdpbGwgcHJpbnQgb3V0IHRoZSBmb3JtYXRzIGluIHJhdyBiaW5hcnkuCisKKyAgYmxvY2sgLSBXaGVuIHNldCwgcmVhZGluZyB0cmFjZV9waXBlIHdpbGwgbm90IGJsb2NrIHdoZW4gcG9sbGVkLgorCisgIHN0YWNrdHJhY2UgLSBUaGlzIGlzIG9uZSBvZiB0aGUgb3B0aW9ucyB0aGF0IGNoYW5nZXMgdGhlIHRyYWNlCisJICAgICAgIGl0c2VsZi4gV2hlbiBhIHRyYWNlIGlzIHJlY29yZGVkLCBzbyBpcyB0aGUgc3RhY2sKKwkgICAgICAgb2YgZnVuY3Rpb25zLiBUaGlzIGFsbG93cyBmb3IgYmFjayB0cmFjZXMgb2YKKwkgICAgICAgdHJhY2Ugc2l0ZXMuCisKKyAgdHJhY2VfcHJpbnRrIC0gQ2FuIGRpc2FibGUgdHJhY2VfcHJpbnRrKCkgZnJvbSB3cml0aW5nIGludG8gdGhlIGJ1ZmZlci4KKworICBicmFuY2ggLSBFbmFibGUgYnJhbmNoIHRyYWNpbmcgd2l0aCB0aGUgdHJhY2VyLgorCisgIGFubm90YXRlIC0gSXQgaXMgc29tZXRpbWVzIGNvbmZ1c2luZyB3aGVuIHRoZSBDUFUgYnVmZmVycyBhcmUgZnVsbAorICAJICAgICBhbmQgb25lIENQVSBidWZmZXIgaGFkIGEgbG90IG9mIGV2ZW50cyByZWNlbnRseSwgdGh1cworCSAgICAgYSBzaG9ydGVyIHRpbWUgZnJhbWUsIHdlcmUgYW5vdGhlciBDUFUgbWF5IGhhdmUgb25seSBoYWQKKwkgICAgIGEgZmV3IGV2ZW50cywgd2hpY2ggbGV0cyBpdCBoYXZlIG9sZGVyIGV2ZW50cy4gV2hlbgorCSAgICAgdGhlIHRyYWNlIGlzIHJlcG9ydGVkLCBpdCBzaG93cyB0aGUgb2xkZXN0IGV2ZW50cyBmaXJzdCwKKwkgICAgIGFuZCBpdCBtYXkgbG9vayBsaWtlIG9ubHkgb25lIENQVSByYW4gKHRoZSBvbmUgd2l0aCB0aGUKKwkgICAgIG9sZGVzdCBldmVudHMpLiBXaGVuIHRoZSBhbm5vdGF0ZSBvcHRpb24gaXMgc2V0LCBpdCB3aWxsCisJICAgICBkaXNwbGF5IHdoZW4gYSBuZXcgQ1BVIGJ1ZmZlciBzdGFydGVkOgorCisgICAgICAgICAgPGlkbGU+LTAgICAgIFswMDFdIGROczQgMjExNjkuMDMxNDgxOiB3YWtlX3VwX2lkbGVfY3B1IDwtYWRkX3RpbWVyX29uCisgICAgICAgICAgPGlkbGU+LTAgICAgIFswMDFdIGROczQgMjExNjkuMDMxNDgyOiBfcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUgPC1hZGRfdGltZXJfb24KKyAgICAgICAgICA8aWRsZT4tMCAgICAgWzAwMV0gLk5zNCAyMTE2OS4wMzE0ODQ6IHN1Yl9wcmVlbXB0X2NvdW50IDwtX3Jhd19zcGluX3VubG9ja19pcnFyZXN0b3JlCisjIyMjIyBDUFUgMiBidWZmZXIgc3RhcnRlZCAjIyMjCisgICAgICAgICAgPGlkbGU+LTAgICAgIFswMDJdIC5OLjEgMjExNjkuMDMxNDg0OiByY3VfaWRsZV9leGl0IDwtY3B1X2lkbGUKKyAgICAgICAgICA8aWRsZT4tMCAgICAgWzAwMV0gLk5zMyAyMTE2OS4wMzE0ODQ6IF9yYXdfc3Bpbl91bmxvY2sgPC1jbG9ja3NvdXJjZV93YXRjaGRvZworICAgICAgICAgIDxpZGxlPi0wICAgICBbMDAxXSAuTnMzIDIxMTY5LjAzMTQ4NTogc3ViX3ByZWVtcHRfY291bnQgPC1fcmF3X3NwaW5fdW5sb2NrCisKKyAgdXNlcnN0YWNrdHJhY2UgLSBUaGlzIG9wdGlvbiBjaGFuZ2VzIHRoZSB0cmFjZS4gSXQgcmVjb3JkcyBhCisJCSAgIHN0YWNrdHJhY2Ugb2YgdGhlIGN1cnJlbnQgdXNlcnNwYWNlIHRocmVhZC4KKworICBzeW0tdXNlcm9iaiAtIHdoZW4gdXNlciBzdGFja3RyYWNlIGFyZSBlbmFibGVkLCBsb29rIHVwIHdoaWNoCisJCW9iamVjdCB0aGUgYWRkcmVzcyBiZWxvbmdzIHRvLCBhbmQgcHJpbnQgYQorCQlyZWxhdGl2ZSBhZGRyZXNzLiBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIHdoZW4KKwkJQVNMUiBpcyBvbiwgb3RoZXJ3aXNlIHlvdSBkb24ndCBnZXQgYSBjaGFuY2UgdG8KKwkJcmVzb2x2ZSB0aGUgYWRkcmVzcyB0byBvYmplY3QvZmlsZS9saW5lIGFmdGVyCisJCXRoZSBhcHAgaXMgbm8gbG9uZ2VyIHJ1bm5pbmcKKworCQlUaGUgbG9va3VwIGlzIHBlcmZvcm1lZCB3aGVuIHlvdSByZWFkCisJCXRyYWNlLHRyYWNlX3BpcGUuIEV4YW1wbGU6CisKKwkJYS5vdXQtMTYyMyAgWzAwMF0gNDA4NzQuNDY1MDY4OiAvcm9vdC9hLm91dFsrMHg0ODBdIDwtL3Jvb3QvYS5vdXRbKzAKK3g0OTRdIDwtIC9yb290L2Eub3V0WysweDRhOF0gPC0gL2xpYi9saWJjLTIuNy5zb1srMHgxZTFhNl0KKworCisgIHByaW50ay1tc2ctb25seSAtIFdoZW4gc2V0LCB0cmFjZV9wcmludGsoKXMgd2lsbCBvbmx5IHNob3cgdGhlIGZvcm1hdAorICAJCSAgICBhbmQgbm90IHRoZWlyIHBhcmFtZXRlcnMgKGlmIHRyYWNlX2JwcmludGsoKSBvcgorCQkgICAgdHJhY2VfYnB1dHMoKSB3YXMgdXNlZCB0byBzYXZlIHRoZSB0cmFjZV9wcmludGsoKSkuCisKKyAgY29udGV4dC1pbmZvIC0gU2hvdyBvbmx5IHRoZSBldmVudCBkYXRhLiBIaWRlcyB0aGUgY29tbSwgUElELAorICAJICAgICAgICAgdGltZXN0YW1wLCBDUFUsIGFuZCBvdGhlciB1c2VmdWwgZGF0YS4KKworICBsYXRlbmN5LWZvcm1hdCAtIFRoaXMgb3B0aW9uIGNoYW5nZXMgdGhlIHRyYWNlLiBXaGVuCisgICAgICAgICAgICAgICAgICAgaXQgaXMgZW5hYmxlZCwgdGhlIHRyYWNlIGRpc3BsYXlzCisgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAgICAgICAgICAgICAgICAgICBsYXRlbmNpZXMsIGFzIGRlc2NyaWJlZCBpbiAiTGF0ZW5jeQorICAgICAgICAgICAgICAgICAgIHRyYWNlIGZvcm1hdCIuCisKKyAgc2xlZXAtdGltZSAtIFdoZW4gcnVubmluZyBmdW5jdGlvbiBncmFwaCB0cmFjZXIsIHRvIGluY2x1ZGUKKyAgCSAgICAgICB0aGUgdGltZSBhIHRhc2sgc2NoZWR1bGVzIG91dCBpbiBpdHMgZnVuY3Rpb24uCisJICAgICAgIFdoZW4gZW5hYmxlZCwgaXQgd2lsbCBhY2NvdW50IHRpbWUgdGhlIHRhc2sgaGFzIGJlZW4KKwkgICAgICAgc2NoZWR1bGVkIG91dCBhcyBwYXJ0IG9mIHRoZSBmdW5jdGlvbiBjYWxsLgorCisgIGdyYXBoLXRpbWUgLSBXaGVuIHJ1bm5pbmcgZnVuY3Rpb24gZ3JhcGggdHJhY2VyLCB0byBpbmNsdWRlIHRoZQorICAJICAgICAgIHRpbWUgdG8gY2FsbCBuZXN0ZWQgZnVuY3Rpb25zLiBXaGVuIHRoaXMgaXMgbm90IHNldCwKKwkgICAgICAgdGhlIHRpbWUgcmVwb3J0ZWQgZm9yIHRoZSBmdW5jdGlvbiB3aWxsIG9ubHkgaW5jbHVkZQorCSAgICAgICB0aGUgdGltZSB0aGUgZnVuY3Rpb24gaXRzZWxmIGV4ZWN1dGVkIGZvciwgbm90IHRoZSB0aW1lCisJICAgICAgIGZvciBmdW5jdGlvbnMgdGhhdCBpdCBjYWxsZWQuCisKKyAgcmVjb3JkLWNtZCAtIFdoZW4gYW55IGV2ZW50IG9yIHRyYWNlciBpcyBlbmFibGVkLCBhIGhvb2sgaXMgZW5hYmxlZAorICAJICAgICAgIGluIHRoZSBzY2hlZF9zd2l0Y2ggdHJhY2UgcG9pbnQgdG8gZmlsbCBjb21tIGNhY2hlCisJICAgICAgIHdpdGggbWFwcGVkIHBpZHMgYW5kIGNvbW1zLiBCdXQgdGhpcyBtYXkgY2F1c2Ugc29tZQorCSAgICAgICBvdmVyaGVhZCwgYW5kIGlmIHlvdSBvbmx5IGNhcmUgYWJvdXQgcGlkcywgYW5kIG5vdCB0aGUKKwkgICAgICAgbmFtZSBvZiB0aGUgdGFzaywgZGlzYWJsaW5nIHRoaXMgb3B0aW9uIGNhbiBsb3dlciB0aGUKKwkgICAgICAgaW1wYWN0IG9mIHRyYWNpbmcuCisKKyAgb3ZlcndyaXRlIC0gVGhpcyBjb250cm9scyB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgdHJhY2UgYnVmZmVyIGlzCisgICAgICAgICAgICAgIGZ1bGwuIElmICIxIiAoZGVmYXVsdCksIHRoZSBvbGRlc3QgZXZlbnRzIGFyZQorICAgICAgICAgICAgICBkaXNjYXJkZWQgYW5kIG92ZXJ3cml0dGVuLiBJZiAiMCIsIHRoZW4gdGhlIG5ld2VzdAorICAgICAgICAgICAgICBldmVudHMgYXJlIGRpc2NhcmRlZC4KKwkgICAgICAgIChzZWUgcGVyX2NwdS9jcHUwL3N0YXRzIGZvciBvdmVycnVuIGFuZCBkcm9wcGVkKQorCisgIGRpc2FibGVfb25fZnJlZSAtIFdoZW4gdGhlIGZyZWVfYnVmZmVyIGlzIGNsb3NlZCwgdHJhY2luZyB3aWxsCisgIAkJICAgIHN0b3AgKHRyYWNpbmdfb24gc2V0IHRvIDApLgorCisgIGlycS1pbmZvIC0gU2hvd3MgdGhlIGludGVycnVwdCwgcHJlZW1wdCBjb3VudCwgbmVlZCByZXNjaGVkIGRhdGEuCisgIAkgICAgIFdoZW4gZGlzYWJsZWQsIHRoZSB0cmFjZSBsb29rcyBsaWtlOgorCisjIHRyYWNlcjogZnVuY3Rpb24KKyMKKyMgZW50cmllcy1pbi1idWZmZXIvZW50cmllcy13cml0dGVuOiAxNDQ0MDUvOTQ1MjA1MiAgICNQOjQKKyMKKyMgICAgICAgICAgIFRBU0stUElEICAgQ1BVIyAgICAgIFRJTUVTVEFNUCAgRlVOQ1RJT04KKyMgICAgICAgICAgICAgIHwgfCAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8CisgICAgICAgICAgPGlkbGU+LTAgICAgIFswMDJdICAyMzYzNi43NTYwNTQ6IHR0d3VfZG9fYWN0aXZhdGUuY29uc3Rwcm9wLjg5IDwtdHJ5X3RvX3dha2VfdXAKKyAgICAgICAgICA8aWRsZT4tMCAgICAgWzAwMl0gIDIzNjM2Ljc1NjA1NDogYWN0aXZhdGVfdGFzayA8LXR0d3VfZG9fYWN0aXZhdGUuY29uc3Rwcm9wLjg5CisgICAgICAgICAgPGlkbGU+LTAgICAgIFswMDJdICAyMzYzNi43NTYwNTU6IGVucXVldWVfdGFzayA8LWFjdGl2YXRlX3Rhc2sKKworCisgIG1hcmtlcnMgLSBXaGVuIHNldCwgdGhlIHRyYWNlX21hcmtlciBpcyB3cml0YWJsZSAob25seSBieSByb290KS4KKyAgCSAgICBXaGVuIGRpc2FibGVkLCB0aGUgdHJhY2VfbWFya2VyIHdpbGwgZXJyb3Igd2l0aCBFSU5WQUwKKwkgICAgb24gd3JpdGUuCisKKworICBmdW5jdGlvbi10cmFjZSAtIFRoZSBsYXRlbmN5IHRyYWNlcnMgd2lsbCBlbmFibGUgZnVuY3Rpb24gdHJhY2luZworICAJICAgIGlmIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQgKGRlZmF1bHQgaXQgaXMpLiBXaGVuCisJICAgIGl0IGlzIGRpc2FibGVkLCB0aGUgbGF0ZW5jeSB0cmFjZXJzIGRvIG5vdCB0cmFjZQorCSAgICBmdW5jdGlvbnMuIFRoaXMga2VlcHMgdGhlIG92ZXJoZWFkIG9mIHRoZSB0cmFjZXIgZG93bgorCSAgICB3aGVuIHBlcmZvcm1pbmcgbGF0ZW5jeSB0ZXN0cy4KKworIE5vdGU6IFNvbWUgdHJhY2VycyBoYXZlIHRoZWlyIG93biBvcHRpb25zLiBUaGV5IG9ubHkgYXBwZWFyCisgICAgICAgd2hlbiB0aGUgdHJhY2VyIGlzIGFjdGl2ZS4KKworCisKK2lycXNvZmYKKy0tLS0tLS0KKworV2hlbiBpbnRlcnJ1cHRzIGFyZSBkaXNhYmxlZCwgdGhlIENQVSBjYW4gbm90IHJlYWN0IHRvIGFueSBvdGhlcgorZXh0ZXJuYWwgZXZlbnQgKGJlc2lkZXMgTk1JcyBhbmQgU01JcykuIFRoaXMgcHJldmVudHMgdGhlIHRpbWVyCitpbnRlcnJ1cHQgZnJvbSB0cmlnZ2VyaW5nIG9yIHRoZSBtb3VzZSBpbnRlcnJ1cHQgZnJvbSBsZXR0aW5nCit0aGUga2VybmVsIGtub3cgb2YgYSBuZXcgbW91c2UgZXZlbnQuIFRoZSByZXN1bHQgaXMgYSBsYXRlbmN5Cit3aXRoIHRoZSByZWFjdGlvbiB0aW1lLgorCitUaGUgaXJxc29mZiB0cmFjZXIgdHJhY2tzIHRoZSB0aW1lIGZvciB3aGljaCBpbnRlcnJ1cHRzIGFyZQorZGlzYWJsZWQuIFdoZW4gYSBuZXcgbWF4aW11bSBsYXRlbmN5IGlzIGhpdCwgdGhlIHRyYWNlciBzYXZlcwordGhlIHRyYWNlIGxlYWRpbmcgdXAgdG8gdGhhdCBsYXRlbmN5IHBvaW50IHNvIHRoYXQgZXZlcnkgdGltZSBhCituZXcgbWF4aW11bSBpcyByZWFjaGVkLCB0aGUgb2xkIHNhdmVkIHRyYWNlIGlzIGRpc2NhcmRlZCBhbmQgdGhlCituZXcgdHJhY2UgaXMgc2F2ZWQuCisKK1RvIHJlc2V0IHRoZSBtYXhpbXVtLCBlY2hvIDAgaW50byB0cmFjaW5nX21heF9sYXRlbmN5LiBIZXJlIGlzCithbiBleGFtcGxlOgorCisgIyBlY2hvIDAgPiBvcHRpb25zL2Z1bmN0aW9uLXRyYWNlCisgIyBlY2hvIGlycXNvZmYgPiBjdXJyZW50X3RyYWNlcgorICMgZWNobyAxID4gdHJhY2luZ19vbgorICMgZWNobyAwID4gdHJhY2luZ19tYXhfbGF0ZW5jeQorICMgbHMgLWx0cgorIFsuLi5dCisgIyBlY2hvIDAgPiB0cmFjaW5nX29uCisgIyBjYXQgdHJhY2UKKyMgdHJhY2VyOiBpcnFzb2ZmCisjCisjIGlycXNvZmYgbGF0ZW5jeSB0cmFjZSB2MS4xLjUgb24gMy44LjAtdGVzdCsKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgbGF0ZW5jeTogMTYgdXMsICM0LzQsIENQVSMwIHwgKE06cHJlZW1wdCBWUDowLCBLUDowLCBTUDowIEhQOjAgI1A6NCkKKyMgICAgLS0tLS0tLS0tLS0tLS0tLS0KKyMgICAgfCB0YXNrOiBzd2FwcGVyLzAtMCAodWlkOjAgbmljZTowIHBvbGljeTowIHJ0X3ByaW86MCkKKyMgICAgLS0tLS0tLS0tLS0tLS0tLS0KKyMgID0+IHN0YXJ0ZWQgYXQ6IHJ1bl90aW1lcl9zb2Z0aXJxCisjICA9PiBlbmRlZCBhdDogICBydW5fdGltZXJfc29mdGlycQorIworIworIyAgICAgICAgICAgICAgICAgIF8tLS0tLS09PiBDUFUjICAgICAgICAgICAgCisjICAgICAgICAgICAgICAgICAvIF8tLS0tLT0+IGlycXMtb2ZmICAgICAgICAKKyMgICAgICAgICAgICAgICAgfCAvIF8tLS0tPT4gbmVlZC1yZXNjaGVkICAgIAorIyAgICAgICAgICAgICAgICB8fCAvIF8tLS09PiBoYXJkaXJxL3NvZnRpcnEgCisjICAgICAgICAgICAgICAgIHx8fCAvIF8tLT0+IHByZWVtcHQtZGVwdGggICAKKyMgICAgICAgICAgICAgICAgfHx8fCAvICAgICBkZWxheSAgICAgICAgICAgICAKKyMgIGNtZCAgICAgcGlkICAgfHx8fHwgdGltZSAgfCAgIGNhbGxlciAgICAgIAorIyAgICAgXCAgIC8gICAgICB8fHx8fCAgXCAgICB8ICAgLyAgICAgICAgICAgCisgIDxpZGxlPi0wICAgICAgIDBkLnMyICAgIDB1cys6IF9yYXdfc3Bpbl9sb2NrX2lycSA8LXJ1bl90aW1lcl9zb2Z0aXJxCisgIDxpZGxlPi0wICAgICAgIDBkTnMzICAgMTd1cyA6IF9yYXdfc3Bpbl91bmxvY2tfaXJxIDwtcnVuX3RpbWVyX3NvZnRpcnEKKyAgPGlkbGU+LTAgICAgICAgMGROczMgICAxN3VzKzogdHJhY2VfaGFyZGlycXNfb24gPC1ydW5fdGltZXJfc29mdGlycQorICA8aWRsZT4tMCAgICAgICAwZE5zMyAgIDI1dXMgOiA8c3RhY2sgdHJhY2U+CisgPT4gX3Jhd19zcGluX3VubG9ja19pcnEKKyA9PiBydW5fdGltZXJfc29mdGlycQorID0+IF9fZG9fc29mdGlycQorID0+IGNhbGxfc29mdGlycQorID0+IGRvX3NvZnRpcnEKKyA9PiBpcnFfZXhpdAorID0+IHNtcF9hcGljX3RpbWVyX2ludGVycnVwdAorID0+IGFwaWNfdGltZXJfaW50ZXJydXB0CisgPT4gcmN1X2lkbGVfZXhpdAorID0+IGNwdV9pZGxlCisgPT4gcmVzdF9pbml0CisgPT4gc3RhcnRfa2VybmVsCisgPT4geDg2XzY0X3N0YXJ0X3Jlc2VydmF0aW9ucworID0+IHg4Nl82NF9zdGFydF9rZXJuZWwKKworSGVyZSB3ZSBzZWUgdGhhdCB0aGF0IHdlIGhhZCBhIGxhdGVuY3kgb2YgMTYgbWljcm9zZWNvbmRzICh3aGljaCBpcwordmVyeSBnb29kKS4gVGhlIF9yYXdfc3Bpbl9sb2NrX2lycSBpbiBydW5fdGltZXJfc29mdGlycSBkaXNhYmxlZAoraW50ZXJydXB0cy4gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgMTYgYW5kIHRoZSBkaXNwbGF5ZWQKK3RpbWVzdGFtcCAyNXVzIG9jY3VycmVkIGJlY2F1c2UgdGhlIGNsb2NrIHdhcyBpbmNyZW1lbnRlZAorYmV0d2VlbiB0aGUgdGltZSBvZiByZWNvcmRpbmcgdGhlIG1heCBsYXRlbmN5IGFuZCB0aGUgdGltZSBvZgorcmVjb3JkaW5nIHRoZSBmdW5jdGlvbiB0aGF0IGhhZCB0aGF0IGxhdGVuY3kuCisKK05vdGUgdGhlIGFib3ZlIGV4YW1wbGUgaGFkIGZ1bmN0aW9uLXRyYWNlIG5vdCBzZXQuIElmIHdlIHNldAorZnVuY3Rpb24tdHJhY2UsIHdlIGdldCBhIG11Y2ggbGFyZ2VyIG91dHB1dDoKKworIHdpdGggZWNobyAxID4gb3B0aW9ucy9mdW5jdGlvbi10cmFjZQorCisjIHRyYWNlcjogaXJxc29mZgorIworIyBpcnFzb2ZmIGxhdGVuY3kgdHJhY2UgdjEuMS41IG9uIDMuOC4wLXRlc3QrCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGxhdGVuY3k6IDcxIHVzLCAjMTY4LzE2OCwgQ1BVIzMgfCAoTTpwcmVlbXB0IFZQOjAsIEtQOjAsIFNQOjAgSFA6MCAjUDo0KQorIyAgICAtLS0tLS0tLS0tLS0tLS0tLQorIyAgICB8IHRhc2s6IGJhc2gtMjA0MiAodWlkOjAgbmljZTowIHBvbGljeTowIHJ0X3ByaW86MCkKKyMgICAgLS0tLS0tLS0tLS0tLS0tLS0KKyMgID0+IHN0YXJ0ZWQgYXQ6IGF0YV9zY3NpX3F1ZXVlY21kCisjICA9PiBlbmRlZCBhdDogICBhdGFfc2NzaV9xdWV1ZWNtZAorIworIworIyAgICAgICAgICAgICAgICAgIF8tLS0tLS09PiBDUFUjICAgICAgICAgICAgCisjICAgICAgICAgICAgICAgICAvIF8tLS0tLT0+IGlycXMtb2ZmICAgICAgICAKKyMgICAgICAgICAgICAgICAgfCAvIF8tLS0tPT4gbmVlZC1yZXNjaGVkICAgIAorIyAgICAgICAgICAgICAgICB8fCAvIF8tLS09PiBoYXJkaXJxL3NvZnRpcnEgCisjICAgICAgICAgICAgICAgIHx8fCAvIF8tLT0+IHByZWVtcHQtZGVwdGggICAKKyMgICAgICAgICAgICAgICAgfHx8fCAvICAgICBkZWxheSAgICAgICAgICAgICAKKyMgIGNtZCAgICAgcGlkICAgfHx8fHwgdGltZSAgfCAgIGNhbGxlciAgICAgIAorIyAgICAgXCAgIC8gICAgICB8fHx8fCAgXCAgICB8ICAgLyAgICAgICAgICAgCisgICAgYmFzaC0yMDQyICAgIDNkLi4uICAgIDB1cyA6IF9yYXdfc3Bpbl9sb2NrX2lycXNhdmUgPC1hdGFfc2NzaV9xdWV1ZWNtZAorICAgIGJhc2gtMjA0MiAgICAzZC4uLiAgICAwdXMgOiBhZGRfcHJlZW1wdF9jb3VudCA8LV9yYXdfc3Bpbl9sb2NrX2lycXNhdmUKKyAgICBiYXNoLTIwNDIgICAgM2QuLjEgICAgMXVzIDogYXRhX3Njc2lfZmluZF9kZXYgPC1hdGFfc2NzaV9xdWV1ZWNtZAorICAgIGJhc2gtMjA0MiAgICAzZC4uMSAgICAxdXMgOiBfX2F0YV9zY3NpX2ZpbmRfZGV2IDwtYXRhX3Njc2lfZmluZF9kZXYKKyAgICBiYXNoLTIwNDIgICAgM2QuLjEgICAgMnVzIDogYXRhX2ZpbmRfZGV2LnBhcnQuMTQgPC1fX2F0YV9zY3NpX2ZpbmRfZGV2CisgICAgYmFzaC0yMDQyICAgIDNkLi4xICAgIDJ1cyA6IGF0YV9xY19uZXdfaW5pdCA8LV9fYXRhX3Njc2lfcXVldWVjbWQKKyAgICBiYXNoLTIwNDIgICAgM2QuLjEgICAgM3VzIDogYXRhX3NnX2luaXQgPC1fX2F0YV9zY3NpX3F1ZXVlY21kCisgICAgYmFzaC0yMDQyICAgIDNkLi4xICAgIDR1cyA6IGF0YV9zY3NpX3J3X3hsYXQgPC1fX2F0YV9zY3NpX3F1ZXVlY21kCisgICAgYmFzaC0yMDQyICAgIDNkLi4xICAgIDR1cyA6IGF0YV9idWlsZF9yd190ZiA8LWF0YV9zY3NpX3J3X3hsYXQKK1suLi5dCisgICAgYmFzaC0yMDQyICAgIDNkLi4xICAgNjd1cyA6IGRlbGF5X3RzYyA8LV9fZGVsYXkKKyAgICBiYXNoLTIwNDIgICAgM2QuLjEgICA2N3VzIDogYWRkX3ByZWVtcHRfY291bnQgPC1kZWxheV90c2MKKyAgICBiYXNoLTIwNDIgICAgM2QuLjIgICA2N3VzIDogc3ViX3ByZWVtcHRfY291bnQgPC1kZWxheV90c2MKKyAgICBiYXNoLTIwNDIgICAgM2QuLjEgICA2N3VzIDogYWRkX3ByZWVtcHRfY291bnQgPC1kZWxheV90c2MKKyAgICBiYXNoLTIwNDIgICAgM2QuLjIgICA2OHVzIDogc3ViX3ByZWVtcHRfY291bnQgPC1kZWxheV90c2MKKyAgICBiYXNoLTIwNDIgICAgM2QuLjEgICA2OHVzKzogYXRhX2JtZG1hX3N0YXJ0IDwtYXRhX2JtZG1hX3FjX2lzc3VlCisgICAgYmFzaC0yMDQyICAgIDNkLi4xICAgNzF1cyA6IF9yYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSA8LWF0YV9zY3NpX3F1ZXVlY21kCisgICAgYmFzaC0yMDQyICAgIDNkLi4xICAgNzF1cyA6IF9yYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSA8LWF0YV9zY3NpX3F1ZXVlY21kCisgICAgYmFzaC0yMDQyICAgIDNkLi4xICAgNzJ1cys6IHRyYWNlX2hhcmRpcnFzX29uIDwtYXRhX3Njc2lfcXVldWVjbWQKKyAgICBiYXNoLTIwNDIgICAgM2QuLjEgIDEyMHVzIDogPHN0YWNrIHRyYWNlPgorID0+IF9yYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZQorID0+IGF0YV9zY3NpX3F1ZXVlY21kCisgPT4gc2NzaV9kaXNwYXRjaF9jbWQKKyA9PiBzY3NpX3JlcXVlc3RfZm4KKyA9PiBfX2Jsa19ydW5fcXVldWVfdW5jb25kCisgPT4gX19ibGtfcnVuX3F1ZXVlCisgPT4gYmxrX3F1ZXVlX2JpbworID0+IGdlbmVyaWNfbWFrZV9yZXF1ZXN0CisgPT4gc3VibWl0X2JpbworID0+IHN1Ym1pdF9iaAorID0+IF9fZXh0M19nZXRfaW5vZGVfbG9jCisgPT4gZXh0M19pZ2V0CisgPT4gZXh0M19sb29rdXAKKyA9PiBsb29rdXBfcmVhbAorID0+IF9fbG9va3VwX2hhc2gKKyA9PiB3YWxrX2NvbXBvbmVudAorID0+IGxvb2t1cF9sYXN0CisgPT4gcGF0aF9sb29rdXBhdAorID0+IGZpbGVuYW1lX2xvb2t1cAorID0+IHVzZXJfcGF0aF9hdF9lbXB0eQorID0+IHVzZXJfcGF0aF9hdAorID0+IHZmc19mc3RhdGF0CisgPT4gdmZzX3N0YXQKKyA9PiBzeXNfbmV3c3RhdAorID0+IHN5c3RlbV9jYWxsX2Zhc3RwYXRoCisKKworSGVyZSB3ZSB0cmFjZWQgYSA3MSBtaWNyb3NlY29uZCBsYXRlbmN5LiBCdXQgd2UgYWxzbyBzZWUgYWxsIHRoZQorZnVuY3Rpb25zIHRoYXQgd2VyZSBjYWxsZWQgZHVyaW5nIHRoYXQgdGltZS4gTm90ZSB0aGF0IGJ5CitlbmFibGluZyBmdW5jdGlvbiB0cmFjaW5nLCB3ZSBpbmN1ciBhbiBhZGRlZCBvdmVyaGVhZC4gVGhpcworb3ZlcmhlYWQgbWF5IGV4dGVuZCB0aGUgbGF0ZW5jeSB0aW1lcy4gQnV0IG5ldmVydGhlbGVzcywgdGhpcwordHJhY2UgaGFzIHByb3ZpZGVkIHNvbWUgdmVyeSBoZWxwZnVsIGRlYnVnZ2luZyBpbmZvcm1hdGlvbi4KKworCitwcmVlbXB0b2ZmCistLS0tLS0tLS0tCisKK1doZW4gcHJlZW1wdGlvbiBpcyBkaXNhYmxlZCwgd2UgbWF5IGJlIGFibGUgdG8gcmVjZWl2ZQoraW50ZXJydXB0cyBidXQgdGhlIHRhc2sgY2Fubm90IGJlIHByZWVtcHRlZCBhbmQgYSBoaWdoZXIKK3ByaW9yaXR5IHRhc2sgbXVzdCB3YWl0IGZvciBwcmVlbXB0aW9uIHRvIGJlIGVuYWJsZWQgYWdhaW4KK2JlZm9yZSBpdCBjYW4gcHJlZW1wdCBhIGxvd2VyIHByaW9yaXR5IHRhc2suCisKK1RoZSBwcmVlbXB0b2ZmIHRyYWNlciB0cmFjZXMgdGhlIHBsYWNlcyB0aGF0IGRpc2FibGUgcHJlZW1wdGlvbi4KK0xpa2UgdGhlIGlycXNvZmYgdHJhY2VyLCBpdCByZWNvcmRzIHRoZSBtYXhpbXVtIGxhdGVuY3kgZm9yCit3aGljaCBwcmVlbXB0aW9uIHdhcyBkaXNhYmxlZC4gVGhlIGNvbnRyb2wgb2YgcHJlZW1wdG9mZiB0cmFjZXIKK2lzIG11Y2ggbGlrZSB0aGUgaXJxc29mZiB0cmFjZXIuCisKKyAjIGVjaG8gMCA+IG9wdGlvbnMvZnVuY3Rpb24tdHJhY2UKKyAjIGVjaG8gcHJlZW1wdG9mZiA+IGN1cnJlbnRfdHJhY2VyCisgIyBlY2hvIDEgPiB0cmFjaW5nX29uCisgIyBlY2hvIDAgPiB0cmFjaW5nX21heF9sYXRlbmN5CisgIyBscyAtbHRyCisgWy4uLl0KKyAjIGVjaG8gMCA+IHRyYWNpbmdfb24KKyAjIGNhdCB0cmFjZQorIyB0cmFjZXI6IHByZWVtcHRvZmYKKyMKKyMgcHJlZW1wdG9mZiBsYXRlbmN5IHRyYWNlIHYxLjEuNSBvbiAzLjguMC10ZXN0KworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBsYXRlbmN5OiA0NiB1cywgIzQvNCwgQ1BVIzEgfCAoTTpwcmVlbXB0IFZQOjAsIEtQOjAsIFNQOjAgSFA6MCAjUDo0KQorIyAgICAtLS0tLS0tLS0tLS0tLS0tLQorIyAgICB8IHRhc2s6IHNzaGQtMTk5MSAodWlkOjAgbmljZTowIHBvbGljeTowIHJ0X3ByaW86MCkKKyMgICAgLS0tLS0tLS0tLS0tLS0tLS0KKyMgID0+IHN0YXJ0ZWQgYXQ6IGRvX0lSUQorIyAgPT4gZW5kZWQgYXQ6ICAgZG9fSVJRCisjCisjCisjICAgICAgICAgICAgICAgICAgXy0tLS0tLT0+IENQVSMgICAgICAgICAgICAKKyMgICAgICAgICAgICAgICAgIC8gXy0tLS0tPT4gaXJxcy1vZmYgICAgICAgIAorIyAgICAgICAgICAgICAgICB8IC8gXy0tLS09PiBuZWVkLXJlc2NoZWQgICAgCisjICAgICAgICAgICAgICAgIHx8IC8gXy0tLT0+IGhhcmRpcnEvc29mdGlycSAKKyMgICAgICAgICAgICAgICAgfHx8IC8gXy0tPT4gcHJlZW1wdC1kZXB0aCAgIAorIyAgICAgICAgICAgICAgICB8fHx8IC8gICAgIGRlbGF5ICAgICAgICAgICAgIAorIyAgY21kICAgICBwaWQgICB8fHx8fCB0aW1lICB8ICAgY2FsbGVyICAgICAgCisjICAgICBcICAgLyAgICAgIHx8fHx8ICBcICAgIHwgICAvICAgICAgICAgICAKKyAgICBzc2hkLTE5OTEgICAgMWQuaC4gICAgMHVzKzogaXJxX2VudGVyIDwtZG9fSVJRCisgICAgc3NoZC0xOTkxICAgIDFkLi4xICAgNDZ1cyA6IGlycV9leGl0IDwtZG9fSVJRCisgICAgc3NoZC0xOTkxICAgIDFkLi4xICAgNDd1cys6IHRyYWNlX3ByZWVtcHRfb24gPC1kb19JUlEKKyAgICBzc2hkLTE5OTEgICAgMWQuLjEgICA1MnVzIDogPHN0YWNrIHRyYWNlPgorID0+IHN1Yl9wcmVlbXB0X2NvdW50CisgPT4gaXJxX2V4aXQKKyA9PiBkb19JUlEKKyA9PiByZXRfZnJvbV9pbnRyCisKKworVGhpcyBoYXMgc29tZSBtb3JlIGNoYW5nZXMuIFByZWVtcHRpb24gd2FzIGRpc2FibGVkIHdoZW4gYW4KK2ludGVycnVwdCBjYW1lIGluIChub3RpY2UgdGhlICdoJyksIGFuZCB3YXMgZW5hYmxlZCBvbiBleGl0LgorQnV0IHdlIGFsc28gc2VlIHRoYXQgaW50ZXJydXB0cyBoYXZlIGJlZW4gZGlzYWJsZWQgd2hlbiBlbnRlcmluZwordGhlIHByZWVtcHQgb2ZmIHNlY3Rpb24gYW5kIGxlYXZpbmcgaXQgKHRoZSAnZCcpLiBXZSBkbyBub3Qga25vdyBpZgoraW50ZXJydXB0cyB3ZXJlIGVuYWJsZWQgaW4gdGhlIG1lYW4gdGltZSBvciBzaG9ydGx5IGFmdGVyIHRoaXMKK3dhcyBvdmVyLgorCisjIHRyYWNlcjogcHJlZW1wdG9mZgorIworIyBwcmVlbXB0b2ZmIGxhdGVuY3kgdHJhY2UgdjEuMS41IG9uIDMuOC4wLXRlc3QrCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGxhdGVuY3k6IDgzIHVzLCAjMjQxLzI0MSwgQ1BVIzEgfCAoTTpwcmVlbXB0IFZQOjAsIEtQOjAsIFNQOjAgSFA6MCAjUDo0KQorIyAgICAtLS0tLS0tLS0tLS0tLS0tLQorIyAgICB8IHRhc2s6IGJhc2gtMTk5NCAodWlkOjAgbmljZTowIHBvbGljeTowIHJ0X3ByaW86MCkKKyMgICAgLS0tLS0tLS0tLS0tLS0tLS0KKyMgID0+IHN0YXJ0ZWQgYXQ6IHdha2VfdXBfbmV3X3Rhc2sKKyMgID0+IGVuZGVkIGF0OiAgIHRhc2tfcnFfdW5sb2NrCisjCisjCisjICAgICAgICAgICAgICAgICAgXy0tLS0tLT0+IENQVSMgICAgICAgICAgICAKKyMgICAgICAgICAgICAgICAgIC8gXy0tLS0tPT4gaXJxcy1vZmYgICAgICAgIAorIyAgICAgICAgICAgICAgICB8IC8gXy0tLS09PiBuZWVkLXJlc2NoZWQgICAgCisjICAgICAgICAgICAgICAgIHx8IC8gXy0tLT0+IGhhcmRpcnEvc29mdGlycSAKKyMgICAgICAgICAgICAgICAgfHx8IC8gXy0tPT4gcHJlZW1wdC1kZXB0aCAgIAorIyAgICAgICAgICAgICAgICB8fHx8IC8gICAgIGRlbGF5ICAgICAgICAgICAgIAorIyAgY21kICAgICBwaWQgICB8fHx8fCB0aW1lICB8ICAgY2FsbGVyICAgICAgCisjICAgICBcICAgLyAgICAgIHx8fHx8ICBcICAgIHwgICAvICAgICAgICAgICAKKyAgICBiYXNoLTE5OTQgICAgMWQuLjEgICAgMHVzIDogX3Jhd19zcGluX2xvY2tfaXJxc2F2ZSA8LXdha2VfdXBfbmV3X3Rhc2sKKyAgICBiYXNoLTE5OTQgICAgMWQuLjEgICAgMHVzIDogc2VsZWN0X3Rhc2tfcnFfZmFpciA8LXNlbGVjdF90YXNrX3JxCisgICAgYmFzaC0xOTk0ICAgIDFkLi4xICAgIDF1cyA6IF9fcmN1X3JlYWRfbG9jayA8LXNlbGVjdF90YXNrX3JxX2ZhaXIKKyAgICBiYXNoLTE5OTQgICAgMWQuLjEgICAgMXVzIDogc291cmNlX2xvYWQgPC1zZWxlY3RfdGFza19ycV9mYWlyCisgICAgYmFzaC0xOTk0ICAgIDFkLi4xICAgIDF1cyA6IHNvdXJjZV9sb2FkIDwtc2VsZWN0X3Rhc2tfcnFfZmFpcgorWy4uLl0KKyAgICBiYXNoLTE5OTQgICAgMWQuLjEgICAxMnVzIDogaXJxX2VudGVyIDwtc21wX2FwaWNfdGltZXJfaW50ZXJydXB0CisgICAgYmFzaC0xOTk0ICAgIDFkLi4xICAgMTJ1cyA6IHJjdV9pcnFfZW50ZXIgPC1pcnFfZW50ZXIKKyAgICBiYXNoLTE5OTQgICAgMWQuLjEgICAxM3VzIDogYWRkX3ByZWVtcHRfY291bnQgPC1pcnFfZW50ZXIKKyAgICBiYXNoLTE5OTQgICAgMWQuaDEgICAxM3VzIDogZXhpdF9pZGxlIDwtc21wX2FwaWNfdGltZXJfaW50ZXJydXB0CisgICAgYmFzaC0xOTk0ICAgIDFkLmgxICAgMTN1cyA6IGhydGltZXJfaW50ZXJydXB0IDwtc21wX2FwaWNfdGltZXJfaW50ZXJydXB0CisgICAgYmFzaC0xOTk0ICAgIDFkLmgxICAgMTN1cyA6IF9yYXdfc3Bpbl9sb2NrIDwtaHJ0aW1lcl9pbnRlcnJ1cHQKKyAgICBiYXNoLTE5OTQgICAgMWQuaDEgICAxNHVzIDogYWRkX3ByZWVtcHRfY291bnQgPC1fcmF3X3NwaW5fbG9jaworICAgIGJhc2gtMTk5NCAgICAxZC5oMiAgIDE0dXMgOiBrdGltZV9nZXRfdXBkYXRlX29mZnNldHMgPC1ocnRpbWVyX2ludGVycnVwdAorWy4uLl0KKyAgICBiYXNoLTE5OTQgICAgMWQuaDEgICAzNXVzIDogbGFwaWNfbmV4dF9ldmVudCA8LWNsb2NrZXZlbnRzX3Byb2dyYW1fZXZlbnQKKyAgICBiYXNoLTE5OTQgICAgMWQuaDEgICAzNXVzIDogaXJxX2V4aXQgPC1zbXBfYXBpY190aW1lcl9pbnRlcnJ1cHQKKyAgICBiYXNoLTE5OTQgICAgMWQuaDEgICAzNnVzIDogc3ViX3ByZWVtcHRfY291bnQgPC1pcnFfZXhpdAorICAgIGJhc2gtMTk5NCAgICAxZC4uMiAgIDM2dXMgOiBkb19zb2Z0aXJxIDwtaXJxX2V4aXQKKyAgICBiYXNoLTE5OTQgICAgMWQuLjIgICAzNnVzIDogX19kb19zb2Z0aXJxIDwtY2FsbF9zb2Z0aXJxCisgICAgYmFzaC0xOTk0ICAgIDFkLi4yICAgMzZ1cyA6IF9fbG9jYWxfYmhfZGlzYWJsZSA8LV9fZG9fc29mdGlycQorICAgIGJhc2gtMTk5NCAgICAxZC5zMiAgIDM3dXMgOiBhZGRfcHJlZW1wdF9jb3VudCA8LV9yYXdfc3Bpbl9sb2NrX2lycQorICAgIGJhc2gtMTk5NCAgICAxZC5zMyAgIDM4dXMgOiBfcmF3X3NwaW5fdW5sb2NrIDwtcnVuX3RpbWVyX3NvZnRpcnEKKyAgICBiYXNoLTE5OTQgICAgMWQuczMgICAzOXVzIDogc3ViX3ByZWVtcHRfY291bnQgPC1fcmF3X3NwaW5fdW5sb2NrCisgICAgYmFzaC0xOTk0ICAgIDFkLnMyICAgMzl1cyA6IGNhbGxfdGltZXJfZm4gPC1ydW5fdGltZXJfc29mdGlycQorWy4uLl0KKyAgICBiYXNoLTE5OTQgICAgMWROczIgICA4MXVzIDogY3B1X25lZWRzX2Fub3RoZXJfZ3AgPC1yY3VfcHJvY2Vzc19jYWxsYmFja3MKKyAgICBiYXNoLTE5OTQgICAgMWROczIgICA4MnVzIDogX19sb2NhbF9iaF9lbmFibGUgPC1fX2RvX3NvZnRpcnEKKyAgICBiYXNoLTE5OTQgICAgMWROczIgICA4MnVzIDogc3ViX3ByZWVtcHRfY291bnQgPC1fX2xvY2FsX2JoX2VuYWJsZQorICAgIGJhc2gtMTk5NCAgICAxZE4uMiAgIDgydXMgOiBpZGxlX2NwdSA8LWlycV9leGl0CisgICAgYmFzaC0xOTk0ICAgIDFkTi4yICAgODN1cyA6IHJjdV9pcnFfZXhpdCA8LWlycV9leGl0CisgICAgYmFzaC0xOTk0ICAgIDFkTi4yICAgODN1cyA6IHN1Yl9wcmVlbXB0X2NvdW50IDwtaXJxX2V4aXQKKyAgICBiYXNoLTE5OTQgICAgMS5OLjEgICA4NHVzIDogX3Jhd19zcGluX3VubG9ja19pcnFyZXN0b3JlIDwtdGFza19ycV91bmxvY2sKKyAgICBiYXNoLTE5OTQgICAgMS5OLjEgICA4NHVzKzogdHJhY2VfcHJlZW1wdF9vbiA8LXRhc2tfcnFfdW5sb2NrCisgICAgYmFzaC0xOTk0ICAgIDEuTi4xICAxMDR1cyA6IDxzdGFjayB0cmFjZT4KKyA9PiBzdWJfcHJlZW1wdF9jb3VudAorID0+IF9yYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZQorID0+IHRhc2tfcnFfdW5sb2NrCisgPT4gd2FrZV91cF9uZXdfdGFzaworID0+IGRvX2ZvcmsKKyA9PiBzeXNfY2xvbmUKKyA9PiBzdHViX2Nsb25lCisKKworVGhlIGFib3ZlIGlzIGFuIGV4YW1wbGUgb2YgdGhlIHByZWVtcHRvZmYgdHJhY2Ugd2l0aAorZnVuY3Rpb24tdHJhY2Ugc2V0LiBIZXJlIHdlIHNlZSB0aGF0IGludGVycnVwdHMgd2VyZSBub3QgZGlzYWJsZWQKK3RoZSBlbnRpcmUgdGltZS4gVGhlIGlycV9lbnRlciBjb2RlIGxldHMgdXMga25vdyB0aGF0IHdlIGVudGVyZWQKK2FuIGludGVycnVwdCAnaCcuIEJlZm9yZSB0aGF0LCB0aGUgZnVuY3Rpb25zIGJlaW5nIHRyYWNlZCBzdGlsbAorc2hvdyB0aGF0IGl0IGlzIG5vdCBpbiBhbiBpbnRlcnJ1cHQsIGJ1dCB3ZSBjYW4gc2VlIGZyb20gdGhlCitmdW5jdGlvbnMgdGhlbXNlbHZlcyB0aGF0IHRoaXMgaXMgbm90IHRoZSBjYXNlLgorCitwcmVlbXB0aXJxc29mZgorLS0tLS0tLS0tLS0tLS0KKworS25vd2luZyB0aGUgbG9jYXRpb25zIHRoYXQgaGF2ZSBpbnRlcnJ1cHRzIGRpc2FibGVkIG9yCitwcmVlbXB0aW9uIGRpc2FibGVkIGZvciB0aGUgbG9uZ2VzdCB0aW1lcyBpcyBoZWxwZnVsLiBCdXQKK3NvbWV0aW1lcyB3ZSB3b3VsZCBsaWtlIHRvIGtub3cgd2hlbiBlaXRoZXIgcHJlZW1wdGlvbiBhbmQvb3IKK2ludGVycnVwdHMgYXJlIGRpc2FibGVkLgorCitDb25zaWRlciB0aGUgZm9sbG93aW5nIGNvZGU6CisKKyAgICBsb2NhbF9pcnFfZGlzYWJsZSgpOworICAgIGNhbGxfZnVuY3Rpb25fd2l0aF9pcnFzX29mZigpOworICAgIHByZWVtcHRfZGlzYWJsZSgpOworICAgIGNhbGxfZnVuY3Rpb25fd2l0aF9pcnFzX2FuZF9wcmVlbXB0aW9uX29mZigpOworICAgIGxvY2FsX2lycV9lbmFibGUoKTsKKyAgICBjYWxsX2Z1bmN0aW9uX3dpdGhfcHJlZW1wdGlvbl9vZmYoKTsKKyAgICBwcmVlbXB0X2VuYWJsZSgpOworCitUaGUgaXJxc29mZiB0cmFjZXIgd2lsbCByZWNvcmQgdGhlIHRvdGFsIGxlbmd0aCBvZgorY2FsbF9mdW5jdGlvbl93aXRoX2lycXNfb2ZmKCkgYW5kCitjYWxsX2Z1bmN0aW9uX3dpdGhfaXJxc19hbmRfcHJlZW1wdGlvbl9vZmYoKS4KKworVGhlIHByZWVtcHRvZmYgdHJhY2VyIHdpbGwgcmVjb3JkIHRoZSB0b3RhbCBsZW5ndGggb2YKK2NhbGxfZnVuY3Rpb25fd2l0aF9pcnFzX2FuZF9wcmVlbXB0aW9uX29mZigpIGFuZAorY2FsbF9mdW5jdGlvbl93aXRoX3ByZWVtcHRpb25fb2ZmKCkuCisKK0J1dCBuZWl0aGVyIHdpbGwgdHJhY2UgdGhlIHRpbWUgdGhhdCBpbnRlcnJ1cHRzIGFuZC9vcgorcHJlZW1wdGlvbiBpcyBkaXNhYmxlZC4gVGhpcyB0b3RhbCB0aW1lIGlzIHRoZSB0aW1lIHRoYXQgd2UgY2FuCitub3Qgc2NoZWR1bGUuIFRvIHJlY29yZCB0aGlzIHRpbWUsIHVzZSB0aGUgcHJlZW1wdGlycXNvZmYKK3RyYWNlci4KKworQWdhaW4sIHVzaW5nIHRoaXMgdHJhY2UgaXMgbXVjaCBsaWtlIHRoZSBpcnFzb2ZmIGFuZCBwcmVlbXB0b2ZmCit0cmFjZXJzLgorCisgIyBlY2hvIDAgPiBvcHRpb25zL2Z1bmN0aW9uLXRyYWNlCisgIyBlY2hvIHByZWVtcHRpcnFzb2ZmID4gY3VycmVudF90cmFjZXIKKyAjIGVjaG8gMSA+IHRyYWNpbmdfb24KKyAjIGVjaG8gMCA+IHRyYWNpbmdfbWF4X2xhdGVuY3kKKyAjIGxzIC1sdHIKKyBbLi4uXQorICMgZWNobyAwID4gdHJhY2luZ19vbgorICMgY2F0IHRyYWNlCisjIHRyYWNlcjogcHJlZW1wdGlycXNvZmYKKyMKKyMgcHJlZW1wdGlycXNvZmYgbGF0ZW5jeSB0cmFjZSB2MS4xLjUgb24gMy44LjAtdGVzdCsKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgbGF0ZW5jeTogMTAwIHVzLCAjNC80LCBDUFUjMyB8IChNOnByZWVtcHQgVlA6MCwgS1A6MCwgU1A6MCBIUDowICNQOjQpCisjICAgIC0tLS0tLS0tLS0tLS0tLS0tCisjICAgIHwgdGFzazogbHMtMjIzMCAodWlkOjAgbmljZTowIHBvbGljeTowIHJ0X3ByaW86MCkKKyMgICAgLS0tLS0tLS0tLS0tLS0tLS0KKyMgID0+IHN0YXJ0ZWQgYXQ6IGF0YV9zY3NpX3F1ZXVlY21kCisjICA9PiBlbmRlZCBhdDogICBhdGFfc2NzaV9xdWV1ZWNtZAorIworIworIyAgICAgICAgICAgICAgICAgIF8tLS0tLS09PiBDUFUjICAgICAgICAgICAgCisjICAgICAgICAgICAgICAgICAvIF8tLS0tLT0+IGlycXMtb2ZmICAgICAgICAKKyMgICAgICAgICAgICAgICAgfCAvIF8tLS0tPT4gbmVlZC1yZXNjaGVkICAgIAorIyAgICAgICAgICAgICAgICB8fCAvIF8tLS09PiBoYXJkaXJxL3NvZnRpcnEgCisjICAgICAgICAgICAgICAgIHx8fCAvIF8tLT0+IHByZWVtcHQtZGVwdGggICAKKyMgICAgICAgICAgICAgICAgfHx8fCAvICAgICBkZWxheSAgICAgICAgICAgICAKKyMgIGNtZCAgICAgcGlkICAgfHx8fHwgdGltZSAgfCAgIGNhbGxlciAgICAgIAorIyAgICAgXCAgIC8gICAgICB8fHx8fCAgXCAgICB8ICAgLyAgICAgICAgICAgCisgICAgICBscy0yMjMwICAgIDNkLi4uICAgIDB1cys6IF9yYXdfc3Bpbl9sb2NrX2lycXNhdmUgPC1hdGFfc2NzaV9xdWV1ZWNtZAorICAgICAgbHMtMjIzMCAgICAzLi4uMSAgMTAwdXMgOiBfcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUgPC1hdGFfc2NzaV9xdWV1ZWNtZAorICAgICAgbHMtMjIzMCAgICAzLi4uMSAgMTAxdXMrOiB0cmFjZV9wcmVlbXB0X29uIDwtYXRhX3Njc2lfcXVldWVjbWQKKyAgICAgIGxzLTIyMzAgICAgMy4uLjEgIDExMXVzIDogPHN0YWNrIHRyYWNlPgorID0+IHN1Yl9wcmVlbXB0X2NvdW50CisgPT4gX3Jhd19zcGluX3VubG9ja19pcnFyZXN0b3JlCisgPT4gYXRhX3Njc2lfcXVldWVjbWQKKyA9PiBzY3NpX2Rpc3BhdGNoX2NtZAorID0+IHNjc2lfcmVxdWVzdF9mbgorID0+IF9fYmxrX3J1bl9xdWV1ZV91bmNvbmQKKyA9PiBfX2Jsa19ydW5fcXVldWUKKyA9PiBibGtfcXVldWVfYmlvCisgPT4gZ2VuZXJpY19tYWtlX3JlcXVlc3QKKyA9PiBzdWJtaXRfYmlvCisgPT4gc3VibWl0X2JoCisgPT4gZXh0M19icmVhZAorID0+IGV4dDNfZGlyX2JyZWFkCisgPT4gaHRyZWVfZGlyYmxvY2tfdG9fdHJlZQorID0+IGV4dDNfaHRyZWVfZmlsbF90cmVlCisgPT4gZXh0M19yZWFkZGlyCisgPT4gdmZzX3JlYWRkaXIKKyA9PiBzeXNfZ2V0ZGVudHMKKyA9PiBzeXN0ZW1fY2FsbF9mYXN0cGF0aAorCisKK1RoZSB0cmFjZV9oYXJkaXJxc19vZmZfdGh1bmsgaXMgY2FsbGVkIGZyb20gYXNzZW1ibHkgb24geDg2IHdoZW4KK2ludGVycnVwdHMgYXJlIGRpc2FibGVkIGluIHRoZSBhc3NlbWJseSBjb2RlLiBXaXRob3V0IHRoZQorZnVuY3Rpb24gdHJhY2luZywgd2UgZG8gbm90IGtub3cgaWYgaW50ZXJydXB0cyB3ZXJlIGVuYWJsZWQKK3dpdGhpbiB0aGUgcHJlZW1wdGlvbiBwb2ludHMuIFdlIGRvIHNlZSB0aGF0IGl0IHN0YXJ0ZWQgd2l0aAorcHJlZW1wdGlvbiBlbmFibGVkLgorCitIZXJlIGlzIGEgdHJhY2Ugd2l0aCBmdW5jdGlvbi10cmFjZSBzZXQ6CisKKyMgdHJhY2VyOiBwcmVlbXB0aXJxc29mZgorIworIyBwcmVlbXB0aXJxc29mZiBsYXRlbmN5IHRyYWNlIHYxLjEuNSBvbiAzLjguMC10ZXN0KworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBsYXRlbmN5OiAxNjEgdXMsICMzMzkvMzM5LCBDUFUjMyB8IChNOnByZWVtcHQgVlA6MCwgS1A6MCwgU1A6MCBIUDowICNQOjQpCisjICAgIC0tLS0tLS0tLS0tLS0tLS0tCisjICAgIHwgdGFzazogbHMtMjI2OSAodWlkOjAgbmljZTowIHBvbGljeTowIHJ0X3ByaW86MCkKKyMgICAgLS0tLS0tLS0tLS0tLS0tLS0KKyMgID0+IHN0YXJ0ZWQgYXQ6IHNjaGVkdWxlCisjICA9PiBlbmRlZCBhdDogICBtdXRleF91bmxvY2sKKyMKKyMKKyMgICAgICAgICAgICAgICAgICBfLS0tLS0tPT4gQ1BVIyAgICAgICAgICAgIAorIyAgICAgICAgICAgICAgICAgLyBfLS0tLS09PiBpcnFzLW9mZiAgICAgICAgCisjICAgICAgICAgICAgICAgIHwgLyBfLS0tLT0+IG5lZWQtcmVzY2hlZCAgICAKKyMgICAgICAgICAgICAgICAgfHwgLyBfLS0tPT4gaGFyZGlycS9zb2Z0aXJxIAorIyAgICAgICAgICAgICAgICB8fHwgLyBfLS09PiBwcmVlbXB0LWRlcHRoICAgCisjICAgICAgICAgICAgICAgIHx8fHwgLyAgICAgZGVsYXkgICAgICAgICAgICAgCisjICBjbWQgICAgIHBpZCAgIHx8fHx8IHRpbWUgIHwgICBjYWxsZXIgICAgICAKKyMgICAgIFwgICAvICAgICAgfHx8fHwgIFwgICAgfCAgIC8gICAgICAgICAgIAora3dvcmtlci8tNTkgICAgICAzLi4uMSAgICAwdXMgOiBfX3NjaGVkdWxlIDwtc2NoZWR1bGUKK2t3b3JrZXIvLTU5ICAgICAgM2QuLjEgICAgMHVzIDogcmN1X3ByZWVtcHRfcXMgPC1yY3Vfbm90ZV9jb250ZXh0X3N3aXRjaAora3dvcmtlci8tNTkgICAgICAzZC4uMSAgICAxdXMgOiBhZGRfcHJlZW1wdF9jb3VudCA8LV9yYXdfc3Bpbl9sb2NrX2lycQora3dvcmtlci8tNTkgICAgICAzZC4uMiAgICAxdXMgOiBkZWFjdGl2YXRlX3Rhc2sgPC1fX3NjaGVkdWxlCitrd29ya2VyLy01OSAgICAgIDNkLi4yICAgIDF1cyA6IGRlcXVldWVfdGFzayA8LWRlYWN0aXZhdGVfdGFzawora3dvcmtlci8tNTkgICAgICAzZC4uMiAgICAydXMgOiB1cGRhdGVfcnFfY2xvY2sgPC1kZXF1ZXVlX3Rhc2sKK2t3b3JrZXIvLTU5ICAgICAgM2QuLjIgICAgMnVzIDogZGVxdWV1ZV90YXNrX2ZhaXIgPC1kZXF1ZXVlX3Rhc2sKK2t3b3JrZXIvLTU5ICAgICAgM2QuLjIgICAgMnVzIDogdXBkYXRlX2N1cnIgPC1kZXF1ZXVlX3Rhc2tfZmFpcgora3dvcmtlci8tNTkgICAgICAzZC4uMiAgICAydXMgOiB1cGRhdGVfbWluX3ZydW50aW1lIDwtdXBkYXRlX2N1cnIKK2t3b3JrZXIvLTU5ICAgICAgM2QuLjIgICAgM3VzIDogY3B1YWNjdF9jaGFyZ2UgPC11cGRhdGVfY3Vycgora3dvcmtlci8tNTkgICAgICAzZC4uMiAgICAzdXMgOiBfX3JjdV9yZWFkX2xvY2sgPC1jcHVhY2N0X2NoYXJnZQora3dvcmtlci8tNTkgICAgICAzZC4uMiAgICAzdXMgOiBfX3JjdV9yZWFkX3VubG9jayA8LWNwdWFjY3RfY2hhcmdlCitrd29ya2VyLy01OSAgICAgIDNkLi4yICAgIDN1cyA6IHVwZGF0ZV9jZnNfcnFfYmxvY2tlZF9sb2FkIDwtZGVxdWV1ZV90YXNrX2ZhaXIKK2t3b3JrZXIvLTU5ICAgICAgM2QuLjIgICAgNHVzIDogY2xlYXJfYnVkZGllcyA8LWRlcXVldWVfdGFza19mYWlyCitrd29ya2VyLy01OSAgICAgIDNkLi4yICAgIDR1cyA6IGFjY291bnRfZW50aXR5X2RlcXVldWUgPC1kZXF1ZXVlX3Rhc2tfZmFpcgora3dvcmtlci8tNTkgICAgICAzZC4uMiAgICA0dXMgOiB1cGRhdGVfbWluX3ZydW50aW1lIDwtZGVxdWV1ZV90YXNrX2ZhaXIKK2t3b3JrZXIvLTU5ICAgICAgM2QuLjIgICAgNHVzIDogdXBkYXRlX2Nmc19zaGFyZXMgPC1kZXF1ZXVlX3Rhc2tfZmFpcgora3dvcmtlci8tNTkgICAgICAzZC4uMiAgICA1dXMgOiBocnRpY2tfdXBkYXRlIDwtZGVxdWV1ZV90YXNrX2ZhaXIKK2t3b3JrZXIvLTU5ICAgICAgM2QuLjIgICAgNXVzIDogd3Ffd29ya2VyX3NsZWVwaW5nIDwtX19zY2hlZHVsZQora3dvcmtlci8tNTkgICAgICAzZC4uMiAgICA1dXMgOiBrdGhyZWFkX2RhdGEgPC13cV93b3JrZXJfc2xlZXBpbmcKK2t3b3JrZXIvLTU5ICAgICAgM2QuLjIgICAgNXVzIDogcHV0X3ByZXZfdGFza19mYWlyIDwtX19zY2hlZHVsZQora3dvcmtlci8tNTkgICAgICAzZC4uMiAgICA2dXMgOiBwaWNrX25leHRfdGFza19mYWlyIDwtcGlja19uZXh0X3Rhc2sKK2t3b3JrZXIvLTU5ICAgICAgM2QuLjIgICAgNnVzIDogY2xlYXJfYnVkZGllcyA8LXBpY2tfbmV4dF90YXNrX2ZhaXIKK2t3b3JrZXIvLTU5ICAgICAgM2QuLjIgICAgNnVzIDogc2V0X25leHRfZW50aXR5IDwtcGlja19uZXh0X3Rhc2tfZmFpcgora3dvcmtlci8tNTkgICAgICAzZC4uMiAgICA2dXMgOiB1cGRhdGVfc3RhdHNfd2FpdF9lbmQgPC1zZXRfbmV4dF9lbnRpdHkKKyAgICAgIGxzLTIyNjkgICAgM2QuLjIgICAgN3VzIDogZmluaXNoX3Rhc2tfc3dpdGNoIDwtX19zY2hlZHVsZQorICAgICAgbHMtMjI2OSAgICAzZC4uMiAgICA3dXMgOiBfcmF3X3NwaW5fdW5sb2NrX2lycSA8LWZpbmlzaF90YXNrX3N3aXRjaAorICAgICAgbHMtMjI2OSAgICAzZC4uMiAgICA4dXMgOiBkb19JUlEgPC1yZXRfZnJvbV9pbnRyCisgICAgICBscy0yMjY5ICAgIDNkLi4yICAgIDh1cyA6IGlycV9lbnRlciA8LWRvX0lSUQorICAgICAgbHMtMjI2OSAgICAzZC4uMiAgICA4dXMgOiByY3VfaXJxX2VudGVyIDwtaXJxX2VudGVyCisgICAgICBscy0yMjY5ICAgIDNkLi4yICAgIDl1cyA6IGFkZF9wcmVlbXB0X2NvdW50IDwtaXJxX2VudGVyCisgICAgICBscy0yMjY5ICAgIDNkLmgyICAgIDl1cyA6IGV4aXRfaWRsZSA8LWRvX0lSUQorWy4uLl0KKyAgICAgIGxzLTIyNjkgICAgM2QuaDMgICAyMHVzIDogc3ViX3ByZWVtcHRfY291bnQgPC1fcmF3X3NwaW5fdW5sb2NrCisgICAgICBscy0yMjY5ICAgIDNkLmgyICAgMjB1cyA6IGlycV9leGl0IDwtZG9fSVJRCisgICAgICBscy0yMjY5ICAgIDNkLmgyICAgMjF1cyA6IHN1Yl9wcmVlbXB0X2NvdW50IDwtaXJxX2V4aXQKKyAgICAgIGxzLTIyNjkgICAgM2QuLjMgICAyMXVzIDogZG9fc29mdGlycSA8LWlycV9leGl0CisgICAgICBscy0yMjY5ICAgIDNkLi4zICAgMjF1cyA6IF9fZG9fc29mdGlycSA8LWNhbGxfc29mdGlycQorICAgICAgbHMtMjI2OSAgICAzZC4uMyAgIDIxdXMrOiBfX2xvY2FsX2JoX2Rpc2FibGUgPC1fX2RvX3NvZnRpcnEKKyAgICAgIGxzLTIyNjkgICAgM2QuczQgICAyOXVzIDogc3ViX3ByZWVtcHRfY291bnQgPC1fbG9jYWxfYmhfZW5hYmxlX2lwCisgICAgICBscy0yMjY5ICAgIDNkLnM1ICAgMjl1cyA6IHN1Yl9wcmVlbXB0X2NvdW50IDwtX2xvY2FsX2JoX2VuYWJsZV9pcAorICAgICAgbHMtMjI2OSAgICAzZC5zNSAgIDMxdXMgOiBkb19JUlEgPC1yZXRfZnJvbV9pbnRyCisgICAgICBscy0yMjY5ICAgIDNkLnM1ICAgMzF1cyA6IGlycV9lbnRlciA8LWRvX0lSUQorICAgICAgbHMtMjI2OSAgICAzZC5zNSAgIDMxdXMgOiByY3VfaXJxX2VudGVyIDwtaXJxX2VudGVyCitbLi4uXQorICAgICAgbHMtMjI2OSAgICAzZC5zNSAgIDMxdXMgOiByY3VfaXJxX2VudGVyIDwtaXJxX2VudGVyCisgICAgICBscy0yMjY5ICAgIDNkLnM1ICAgMzJ1cyA6IGFkZF9wcmVlbXB0X2NvdW50IDwtaXJxX2VudGVyCisgICAgICBscy0yMjY5ICAgIDNkLkg1ICAgMzJ1cyA6IGV4aXRfaWRsZSA8LWRvX0lSUQorICAgICAgbHMtMjI2OSAgICAzZC5INSAgIDMydXMgOiBoYW5kbGVfaXJxIDwtZG9fSVJRCisgICAgICBscy0yMjY5ICAgIDNkLkg1ICAgMzJ1cyA6IGlycV90b19kZXNjIDwtaGFuZGxlX2lycQorICAgICAgbHMtMjI2OSAgICAzZC5INSAgIDMzdXMgOiBoYW5kbGVfZmFzdGVvaV9pcnEgPC1oYW5kbGVfaXJxCitbLi4uXQorICAgICAgbHMtMjI2OSAgICAzZC5zNSAgMTU4dXMgOiBfcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUgPC1ydGw4MTM5X3BvbGwKKyAgICAgIGxzLTIyNjkgICAgM2QuczMgIDE1OHVzIDogbmV0X3Jwc19hY3Rpb25fYW5kX2lycV9lbmFibGUuaXNyYS42NSA8LW5ldF9yeF9hY3Rpb24KKyAgICAgIGxzLTIyNjkgICAgM2QuczMgIDE1OXVzIDogX19sb2NhbF9iaF9lbmFibGUgPC1fX2RvX3NvZnRpcnEKKyAgICAgIGxzLTIyNjkgICAgM2QuczMgIDE1OXVzIDogc3ViX3ByZWVtcHRfY291bnQgPC1fX2xvY2FsX2JoX2VuYWJsZQorICAgICAgbHMtMjI2OSAgICAzZC4uMyAgMTU5dXMgOiBpZGxlX2NwdSA8LWlycV9leGl0CisgICAgICBscy0yMjY5ICAgIDNkLi4zICAxNTl1cyA6IHJjdV9pcnFfZXhpdCA8LWlycV9leGl0CisgICAgICBscy0yMjY5ICAgIDNkLi4zICAxNjB1cyA6IHN1Yl9wcmVlbXB0X2NvdW50IDwtaXJxX2V4aXQKKyAgICAgIGxzLTIyNjkgICAgM2QuLi4gIDE2MXVzIDogX19tdXRleF91bmxvY2tfc2xvd3BhdGggPC1tdXRleF91bmxvY2sKKyAgICAgIGxzLTIyNjkgICAgM2QuLi4gIDE2MnVzKzogdHJhY2VfaGFyZGlycXNfb24gPC1tdXRleF91bmxvY2sKKyAgICAgIGxzLTIyNjkgICAgM2QuLi4gIDE4NnVzIDogPHN0YWNrIHRyYWNlPgorID0+IF9fbXV0ZXhfdW5sb2NrX3Nsb3dwYXRoCisgPT4gbXV0ZXhfdW5sb2NrCisgPT4gcHJvY2Vzc19vdXRwdXQKKyA9PiBuX3R0eV93cml0ZQorID0+IHR0eV93cml0ZQorID0+IHZmc193cml0ZQorID0+IHN5c193cml0ZQorID0+IHN5c3RlbV9jYWxsX2Zhc3RwYXRoCisKK1RoaXMgaXMgYW4gaW50ZXJlc3RpbmcgdHJhY2UuIEl0IHN0YXJ0ZWQgd2l0aCBrd29ya2VyIHJ1bm5pbmcgYW5kCitzY2hlZHVsaW5nIG91dCBhbmQgbHMgdGFraW5nIG92ZXIuIEJ1dCBhcyBzb29uIGFzIGxzIHJlbGVhc2VkIHRoZQorcnEgbG9jayBhbmQgZW5hYmxlZCBpbnRlcnJ1cHRzIChidXQgbm90IHByZWVtcHRpb24pIGFuIGludGVycnVwdAordHJpZ2dlcmVkLiBXaGVuIHRoZSBpbnRlcnJ1cHQgZmluaXNoZWQsIGl0IHN0YXJ0ZWQgcnVubmluZyBzb2Z0aXJxcy4KK0J1dCB3aGlsZSB0aGUgc29mdGlycSB3YXMgcnVubmluZywgYW5vdGhlciBpbnRlcnJ1cHQgdHJpZ2dlcmVkLgorV2hlbiBhbiBpbnRlcnJ1cHQgaXMgcnVubmluZyBpbnNpZGUgYSBzb2Z0aXJxLCB0aGUgYW5ub3RhdGlvbiBpcyAnSCcuCisKKword2FrZXVwCistLS0tLS0KKworT25lIGNvbW1vbiBjYXNlIHRoYXQgcGVvcGxlIGFyZSBpbnRlcmVzdGVkIGluIHRyYWNpbmcgaXMgdGhlCit0aW1lIGl0IHRha2VzIGZvciBhIHRhc2sgdGhhdCBpcyB3b2tlbiB0byBhY3R1YWxseSB3YWtlIHVwLgorTm93IGZvciBub24gUmVhbC1UaW1lIHRhc2tzLCB0aGlzIGNhbiBiZSBhcmJpdHJhcnkuIEJ1dCB0cmFjaW5nCitpdCBub25lIHRoZSBsZXNzIGNhbiBiZSBpbnRlcmVzdGluZy4gCisKK1dpdGhvdXQgZnVuY3Rpb24gdHJhY2luZzoKKworICMgZWNobyAwID4gb3B0aW9ucy9mdW5jdGlvbi10cmFjZQorICMgZWNobyB3YWtldXAgPiBjdXJyZW50X3RyYWNlcgorICMgZWNobyAxID4gdHJhY2luZ19vbgorICMgZWNobyAwID4gdHJhY2luZ19tYXhfbGF0ZW5jeQorICMgY2hydCAtZiA1IHNsZWVwIDEKKyAjIGVjaG8gMCA+IHRyYWNpbmdfb24KKyAjIGNhdCB0cmFjZQorIyB0cmFjZXI6IHdha2V1cAorIworIyB3YWtldXAgbGF0ZW5jeSB0cmFjZSB2MS4xLjUgb24gMy44LjAtdGVzdCsKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgbGF0ZW5jeTogMTUgdXMsICM0LzQsIENQVSMzIHwgKE06cHJlZW1wdCBWUDowLCBLUDowLCBTUDowIEhQOjAgI1A6NCkKKyMgICAgLS0tLS0tLS0tLS0tLS0tLS0KKyMgICAgfCB0YXNrOiBrd29ya2VyLzM6MUgtMzEyICh1aWQ6MCBuaWNlOi0yMCBwb2xpY3k6MCBydF9wcmlvOjApCisjICAgIC0tLS0tLS0tLS0tLS0tLS0tCisjCisjICAgICAgICAgICAgICAgICAgXy0tLS0tLT0+IENQVSMgICAgICAgICAgICAKKyMgICAgICAgICAgICAgICAgIC8gXy0tLS0tPT4gaXJxcy1vZmYgICAgICAgIAorIyAgICAgICAgICAgICAgICB8IC8gXy0tLS09PiBuZWVkLXJlc2NoZWQgICAgCisjICAgICAgICAgICAgICAgIHx8IC8gXy0tLT0+IGhhcmRpcnEvc29mdGlycSAKKyMgICAgICAgICAgICAgICAgfHx8IC8gXy0tPT4gcHJlZW1wdC1kZXB0aCAgIAorIyAgICAgICAgICAgICAgICB8fHx8IC8gICAgIGRlbGF5ICAgICAgICAgICAgIAorIyAgY21kICAgICBwaWQgICB8fHx8fCB0aW1lICB8ICAgY2FsbGVyICAgICAgCisjICAgICBcICAgLyAgICAgIHx8fHx8ICBcICAgIHwgICAvICAgICAgICAgICAKKyAgPGlkbGU+LTAgICAgICAgM2ROczcgICAgMHVzIDogICAgICAwOjEyMDpSICAgKyBbMDAzXSAgIDMxMjoxMDA6UiBrd29ya2VyLzM6MUgKKyAgPGlkbGU+LTAgICAgICAgM2ROczcgICAgMXVzKzogdHR3dV9kb19hY3RpdmF0ZS5jb25zdHByb3AuODcgPC10cnlfdG9fd2FrZV91cAorICA8aWRsZT4tMCAgICAgICAzZC4uMyAgIDE1dXMgOiBfX3NjaGVkdWxlIDwtc2NoZWR1bGUKKyAgPGlkbGU+LTAgICAgICAgM2QuLjMgICAxNXVzIDogICAgICAwOjEyMDpSID09PiBbMDAzXSAgIDMxMjoxMDA6UiBrd29ya2VyLzM6MUgKKworVGhlIHRyYWNlciBvbmx5IHRyYWNlcyB0aGUgaGlnaGVzdCBwcmlvcml0eSB0YXNrIGluIHRoZSBzeXN0ZW0KK3RvIGF2b2lkIHRyYWNpbmcgdGhlIG5vcm1hbCBjaXJjdW1zdGFuY2VzLiBIZXJlIHdlIHNlZSB0aGF0Cit0aGUga3dvcmtlciB3aXRoIGEgbmljZSBwcmlvcml0eSBvZiAtMjAgKG5vdCB2ZXJ5IG5pY2UpLCB0b29rCitqdXN0IDE1IG1pY3Jvc2Vjb25kcyBmcm9tIHRoZSB0aW1lIGl0IHdva2UgdXAsIHRvIHRoZSB0aW1lIGl0CityYW4uCisKK05vbiBSZWFsLVRpbWUgdGFza3MgYXJlIG5vdCB0aGF0IGludGVyZXN0aW5nLiBBIG1vcmUgaW50ZXJlc3RpbmcKK3RyYWNlIGlzIHRvIGNvbmNlbnRyYXRlIG9ubHkgb24gUmVhbC1UaW1lIHRhc2tzLgorCit3YWtldXBfcnQKKy0tLS0tLS0tLQorCitJbiBhIFJlYWwtVGltZSBlbnZpcm9ubWVudCBpdCBpcyB2ZXJ5IGltcG9ydGFudCB0byBrbm93IHRoZQord2FrZXVwIHRpbWUgaXQgdGFrZXMgZm9yIHRoZSBoaWdoZXN0IHByaW9yaXR5IHRhc2sgdGhhdCBpcyB3b2tlbgordXAgdG8gdGhlIHRpbWUgdGhhdCBpdCBleGVjdXRlcy4gVGhpcyBpcyBhbHNvIGtub3duIGFzICJzY2hlZHVsZQorbGF0ZW5jeSIuIEkgc3RyZXNzIHRoZSBwb2ludCB0aGF0IHRoaXMgaXMgYWJvdXQgUlQgdGFza3MuIEl0IGlzCithbHNvIGltcG9ydGFudCB0byBrbm93IHRoZSBzY2hlZHVsaW5nIGxhdGVuY3kgb2Ygbm9uLVJUIHRhc2tzLAorYnV0IHRoZSBhdmVyYWdlIHNjaGVkdWxlIGxhdGVuY3kgaXMgYmV0dGVyIGZvciBub24tUlQgdGFza3MuCitUb29scyBsaWtlIExhdGVuY3lUb3AgYXJlIG1vcmUgYXBwcm9wcmlhdGUgZm9yIHN1Y2gKK21lYXN1cmVtZW50cy4KKworUmVhbC1UaW1lIGVudmlyb25tZW50cyBhcmUgaW50ZXJlc3RlZCBpbiB0aGUgd29yc3QgY2FzZSBsYXRlbmN5LgorVGhhdCBpcyB0aGUgbG9uZ2VzdCBsYXRlbmN5IGl0IHRha2VzIGZvciBzb21ldGhpbmcgdG8gaGFwcGVuLAorYW5kIG5vdCB0aGUgYXZlcmFnZS4gV2UgY2FuIGhhdmUgYSB2ZXJ5IGZhc3Qgc2NoZWR1bGVyIHRoYXQgbWF5Citvbmx5IGhhdmUgYSBsYXJnZSBsYXRlbmN5IG9uY2UgaW4gYSB3aGlsZSwgYnV0IHRoYXQgd291bGQgbm90Cit3b3JrIHdlbGwgd2l0aCBSZWFsLVRpbWUgdGFza3MuICBUaGUgd2FrZXVwX3J0IHRyYWNlciB3YXMgZGVzaWduZWQKK3RvIHJlY29yZCB0aGUgd29yc3QgY2FzZSB3YWtldXBzIG9mIFJUIHRhc2tzLiBOb24tUlQgdGFza3MgYXJlCitub3QgcmVjb3JkZWQgYmVjYXVzZSB0aGUgdHJhY2VyIG9ubHkgcmVjb3JkcyBvbmUgd29yc3QgY2FzZSBhbmQKK3RyYWNpbmcgbm9uLVJUIHRhc2tzIHRoYXQgYXJlIHVucHJlZGljdGFibGUgd2lsbCBvdmVyd3JpdGUgdGhlCit3b3JzdCBjYXNlIGxhdGVuY3kgb2YgUlQgdGFza3MgKGp1c3QgcnVuIHRoZSBub3JtYWwgd2FrZXVwCit0cmFjZXIgZm9yIGEgd2hpbGUgdG8gc2VlIHRoYXQgZWZmZWN0KS4KKworU2luY2UgdGhpcyB0cmFjZXIgb25seSBkZWFscyB3aXRoIFJUIHRhc2tzLCB3ZSB3aWxsIHJ1biB0aGlzCitzbGlnaHRseSBkaWZmZXJlbnRseSB0aGFuIHdlIGRpZCB3aXRoIHRoZSBwcmV2aW91cyB0cmFjZXJzLgorSW5zdGVhZCBvZiBwZXJmb3JtaW5nIGFuICdscycsIHdlIHdpbGwgcnVuICdzbGVlcCAxJyB1bmRlcgorJ2NocnQnIHdoaWNoIGNoYW5nZXMgdGhlIHByaW9yaXR5IG9mIHRoZSB0YXNrLgorCisgIyBlY2hvIDAgPiBvcHRpb25zL2Z1bmN0aW9uLXRyYWNlCisgIyBlY2hvIHdha2V1cF9ydCA+IGN1cnJlbnRfdHJhY2VyCisgIyBlY2hvIDEgPiB0cmFjaW5nX29uCisgIyBlY2hvIDAgPiB0cmFjaW5nX21heF9sYXRlbmN5CisgIyBjaHJ0IC1mIDUgc2xlZXAgMQorICMgZWNobyAwID4gdHJhY2luZ19vbgorICMgY2F0IHRyYWNlCisjIHRyYWNlcjogd2FrZXVwCisjCisjIHRyYWNlcjogd2FrZXVwX3J0CisjCisjIHdha2V1cF9ydCBsYXRlbmN5IHRyYWNlIHYxLjEuNSBvbiAzLjguMC10ZXN0KworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBsYXRlbmN5OiA1IHVzLCAjNC80LCBDUFUjMyB8IChNOnByZWVtcHQgVlA6MCwgS1A6MCwgU1A6MCBIUDowICNQOjQpCisjICAgIC0tLS0tLS0tLS0tLS0tLS0tCisjICAgIHwgdGFzazogc2xlZXAtMjM4OSAodWlkOjAgbmljZTowIHBvbGljeToxIHJ0X3ByaW86NSkKKyMgICAgLS0tLS0tLS0tLS0tLS0tLS0KKyMKKyMgICAgICAgICAgICAgICAgICBfLS0tLS0tPT4gQ1BVIyAgICAgICAgICAgIAorIyAgICAgICAgICAgICAgICAgLyBfLS0tLS09PiBpcnFzLW9mZiAgICAgICAgCisjICAgICAgICAgICAgICAgIHwgLyBfLS0tLT0+IG5lZWQtcmVzY2hlZCAgICAKKyMgICAgICAgICAgICAgICAgfHwgLyBfLS0tPT4gaGFyZGlycS9zb2Z0aXJxIAorIyAgICAgICAgICAgICAgICB8fHwgLyBfLS09PiBwcmVlbXB0LWRlcHRoICAgCisjICAgICAgICAgICAgICAgIHx8fHwgLyAgICAgZGVsYXkgICAgICAgICAgICAgCisjICBjbWQgICAgIHBpZCAgIHx8fHx8IHRpbWUgIHwgICBjYWxsZXIgICAgICAKKyMgICAgIFwgICAvICAgICAgfHx8fHwgIFwgICAgfCAgIC8gICAgICAgICAgIAorICA8aWRsZT4tMCAgICAgICAzZC5oNCAgICAwdXMgOiAgICAgIDA6MTIwOlIgICArIFswMDNdICAyMzg5OiA5NDpSIHNsZWVwCisgIDxpZGxlPi0wICAgICAgIDNkLmg0ICAgIDF1cys6IHR0d3VfZG9fYWN0aXZhdGUuY29uc3Rwcm9wLjg3IDwtdHJ5X3RvX3dha2VfdXAKKyAgPGlkbGU+LTAgICAgICAgM2QuLjMgICAgNXVzIDogX19zY2hlZHVsZSA8LXNjaGVkdWxlCisgIDxpZGxlPi0wICAgICAgIDNkLi4zICAgIDV1cyA6ICAgICAgMDoxMjA6UiA9PT4gWzAwM10gIDIzODk6IDk0OlIgc2xlZXAKKworCitSdW5uaW5nIHRoaXMgb24gYW4gaWRsZSBzeXN0ZW0sIHdlIHNlZSB0aGF0IGl0IG9ubHkgdG9vayA1IG1pY3Jvc2Vjb25kcwordG8gcGVyZm9ybSB0aGUgdGFzayBzd2l0Y2guICBOb3RlLCBzaW5jZSB0aGUgdHJhY2UgcG9pbnQgaW4gdGhlIHNjaGVkdWxlCitpcyBiZWZvcmUgdGhlIGFjdHVhbCAic3dpdGNoIiwgd2Ugc3RvcCB0aGUgdHJhY2luZyB3aGVuIHRoZSByZWNvcmRlZCB0YXNrCitpcyBhYm91dCB0byBzY2hlZHVsZSBpbi4gVGhpcyBtYXkgY2hhbmdlIGlmIHdlIGFkZCBhIG5ldyBtYXJrZXIgYXQgdGhlCitlbmQgb2YgdGhlIHNjaGVkdWxlci4KKworTm90aWNlIHRoYXQgdGhlIHJlY29yZGVkIHRhc2sgaXMgJ3NsZWVwJyB3aXRoIHRoZSBQSUQgb2YgMjM4OQorYW5kIGl0IGhhcyBhbiBydF9wcmlvIG9mIDUuIFRoaXMgcHJpb3JpdHkgaXMgdXNlci1zcGFjZSBwcmlvcml0eQorYW5kIG5vdCB0aGUgaW50ZXJuYWwga2VybmVsIHByaW9yaXR5LiBUaGUgcG9saWN5IGlzIDEgZm9yCitTQ0hFRF9GSUZPIGFuZCAyIGZvciBTQ0hFRF9SUi4KKworTm90ZSwgdGhhdCB0aGUgdHJhY2UgZGF0YSBzaG93cyB0aGUgaW50ZXJuYWwgcHJpb3JpdHkgKDk5IC0gcnRwcmlvKS4KKworICA8aWRsZT4tMCAgICAgICAzZC4uMyAgICA1dXMgOiAgICAgIDA6MTIwOlIgPT0+IFswMDNdICAyMzg5OiA5NDpSIHNsZWVwCisKK1RoZSAwOjEyMDpSIG1lYW5zIGlkbGUgd2FzIHJ1bm5pbmcgd2l0aCBhIG5pY2UgcHJpb3JpdHkgb2YgMCAoMTIwIC0gMjApCithbmQgaW4gdGhlIHJ1bm5pbmcgc3RhdGUgJ1InLiBUaGUgc2xlZXAgdGFzayB3YXMgc2NoZWR1bGVkIGluIHdpdGgKKzIzODk6IDk0OlIuIFRoYXQgaXMgdGhlIHByaW9yaXR5IGlzIHRoZSBrZXJuZWwgcnRwcmlvICg5OSAtIDUgPSA5NCkKK2FuZCBpdCB0b28gaXMgaW4gdGhlIHJ1bm5pbmcgc3RhdGUuCisKK0RvaW5nIHRoZSBzYW1lIHdpdGggY2hydCAtciA1IGFuZCBmdW5jdGlvbi10cmFjZSBzZXQuCisKKyAgZWNobyAxID4gb3B0aW9ucy9mdW5jdGlvbi10cmFjZQorCisjIHRyYWNlcjogd2FrZXVwX3J0CisjCisjIHdha2V1cF9ydCBsYXRlbmN5IHRyYWNlIHYxLjEuNSBvbiAzLjguMC10ZXN0KworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBsYXRlbmN5OiAyOSB1cywgIzg1Lzg1LCBDUFUjMyB8IChNOnByZWVtcHQgVlA6MCwgS1A6MCwgU1A6MCBIUDowICNQOjQpCisjICAgIC0tLS0tLS0tLS0tLS0tLS0tCisjICAgIHwgdGFzazogc2xlZXAtMjQ0OCAodWlkOjAgbmljZTowIHBvbGljeToxIHJ0X3ByaW86NSkKKyMgICAgLS0tLS0tLS0tLS0tLS0tLS0KKyMKKyMgICAgICAgICAgICAgICAgICBfLS0tLS0tPT4gQ1BVIyAgICAgICAgICAgIAorIyAgICAgICAgICAgICAgICAgLyBfLS0tLS09PiBpcnFzLW9mZiAgICAgICAgCisjICAgICAgICAgICAgICAgIHwgLyBfLS0tLT0+IG5lZWQtcmVzY2hlZCAgICAKKyMgICAgICAgICAgICAgICAgfHwgLyBfLS0tPT4gaGFyZGlycS9zb2Z0aXJxIAorIyAgICAgICAgICAgICAgICB8fHwgLyBfLS09PiBwcmVlbXB0LWRlcHRoICAgCisjICAgICAgICAgICAgICAgIHx8fHwgLyAgICAgZGVsYXkgICAgICAgICAgICAgCisjICBjbWQgICAgIHBpZCAgIHx8fHx8IHRpbWUgIHwgICBjYWxsZXIgICAgICAKKyMgICAgIFwgICAvICAgICAgfHx8fHwgIFwgICAgfCAgIC8gICAgICAgICAgIAorICA8aWRsZT4tMCAgICAgICAzZC5oNCAgICAxdXMrOiAgICAgIDA6MTIwOlIgICArIFswMDNdICAyNDQ4OiA5NDpSIHNsZWVwCisgIDxpZGxlPi0wICAgICAgIDNkLmg0ICAgIDJ1cyA6IHR0d3VfZG9fYWN0aXZhdGUuY29uc3Rwcm9wLjg3IDwtdHJ5X3RvX3dha2VfdXAKKyAgPGlkbGU+LTAgICAgICAgM2QuaDMgICAgM3VzIDogY2hlY2tfcHJlZW1wdF9jdXJyIDwtdHR3dV9kb193YWtldXAKKyAgPGlkbGU+LTAgICAgICAgM2QuaDMgICAgM3VzIDogcmVzY2hlZF9jdXJyIDwtY2hlY2tfcHJlZW1wdF9jdXJyCisgIDxpZGxlPi0wICAgICAgIDNkTmgzICAgIDR1cyA6IHRhc2tfd29rZW5fcnQgPC10dHd1X2RvX3dha2V1cAorICA8aWRsZT4tMCAgICAgICAzZE5oMyAgICA0dXMgOiBfcmF3X3NwaW5fdW5sb2NrIDwtdHJ5X3RvX3dha2VfdXAKKyAgPGlkbGU+LTAgICAgICAgM2ROaDMgICAgNHVzIDogc3ViX3ByZWVtcHRfY291bnQgPC1fcmF3X3NwaW5fdW5sb2NrCisgIDxpZGxlPi0wICAgICAgIDNkTmgyICAgIDV1cyA6IHR0d3Vfc3RhdCA8LXRyeV90b193YWtlX3VwCisgIDxpZGxlPi0wICAgICAgIDNkTmgyICAgIDV1cyA6IF9yYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSA8LXRyeV90b193YWtlX3VwCisgIDxpZGxlPi0wICAgICAgIDNkTmgyICAgIDZ1cyA6IHN1Yl9wcmVlbXB0X2NvdW50IDwtX3Jhd19zcGluX3VubG9ja19pcnFyZXN0b3JlCisgIDxpZGxlPi0wICAgICAgIDNkTmgxICAgIDZ1cyA6IF9yYXdfc3Bpbl9sb2NrIDwtX19ydW5faHJ0aW1lcgorICA8aWRsZT4tMCAgICAgICAzZE5oMSAgICA2dXMgOiBhZGRfcHJlZW1wdF9jb3VudCA8LV9yYXdfc3Bpbl9sb2NrCisgIDxpZGxlPi0wICAgICAgIDNkTmgyICAgIDd1cyA6IF9yYXdfc3Bpbl91bmxvY2sgPC1ocnRpbWVyX2ludGVycnVwdAorICA8aWRsZT4tMCAgICAgICAzZE5oMiAgICA3dXMgOiBzdWJfcHJlZW1wdF9jb3VudCA8LV9yYXdfc3Bpbl91bmxvY2sKKyAgPGlkbGU+LTAgICAgICAgM2ROaDEgICAgN3VzIDogdGlja19wcm9ncmFtX2V2ZW50IDwtaHJ0aW1lcl9pbnRlcnJ1cHQKKyAgPGlkbGU+LTAgICAgICAgM2ROaDEgICAgN3VzIDogY2xvY2tldmVudHNfcHJvZ3JhbV9ldmVudCA8LXRpY2tfcHJvZ3JhbV9ldmVudAorICA8aWRsZT4tMCAgICAgICAzZE5oMSAgICA4dXMgOiBrdGltZV9nZXQgPC1jbG9ja2V2ZW50c19wcm9ncmFtX2V2ZW50CisgIDxpZGxlPi0wICAgICAgIDNkTmgxICAgIDh1cyA6IGxhcGljX25leHRfZXZlbnQgPC1jbG9ja2V2ZW50c19wcm9ncmFtX2V2ZW50CisgIDxpZGxlPi0wICAgICAgIDNkTmgxICAgIDh1cyA6IGlycV9leGl0IDwtc21wX2FwaWNfdGltZXJfaW50ZXJydXB0CisgIDxpZGxlPi0wICAgICAgIDNkTmgxICAgIDl1cyA6IHN1Yl9wcmVlbXB0X2NvdW50IDwtaXJxX2V4aXQKKyAgPGlkbGU+LTAgICAgICAgM2ROLjIgICAgOXVzIDogaWRsZV9jcHUgPC1pcnFfZXhpdAorICA8aWRsZT4tMCAgICAgICAzZE4uMiAgICA5dXMgOiByY3VfaXJxX2V4aXQgPC1pcnFfZXhpdAorICA8aWRsZT4tMCAgICAgICAzZE4uMiAgIDEwdXMgOiByY3VfZXFzX2VudGVyX2NvbW1vbi5pc3JhLjQ1IDwtcmN1X2lycV9leGl0CisgIDxpZGxlPi0wICAgICAgIDNkTi4yICAgMTB1cyA6IHN1Yl9wcmVlbXB0X2NvdW50IDwtaXJxX2V4aXQKKyAgPGlkbGU+LTAgICAgICAgMy5OLjEgICAxMXVzIDogcmN1X2lkbGVfZXhpdCA8LWNwdV9pZGxlCisgIDxpZGxlPi0wICAgICAgIDNkTi4xICAgMTF1cyA6IHJjdV9lcXNfZXhpdF9jb21tb24uaXNyYS40MyA8LXJjdV9pZGxlX2V4aXQKKyAgPGlkbGU+LTAgICAgICAgMy5OLjEgICAxMXVzIDogdGlja19ub2h6X2lkbGVfZXhpdCA8LWNwdV9pZGxlCisgIDxpZGxlPi0wICAgICAgIDNkTi4xICAgMTJ1cyA6IG1lbnVfaHJ0aW1lcl9jYW5jZWwgPC10aWNrX25vaHpfaWRsZV9leGl0CisgIDxpZGxlPi0wICAgICAgIDNkTi4xICAgMTJ1cyA6IGt0aW1lX2dldCA8LXRpY2tfbm9oel9pZGxlX2V4aXQKKyAgPGlkbGU+LTAgICAgICAgM2ROLjEgICAxMnVzIDogdGlja19kb191cGRhdGVfamlmZmllczY0IDwtdGlja19ub2h6X2lkbGVfZXhpdAorICA8aWRsZT4tMCAgICAgICAzZE4uMSAgIDEzdXMgOiB1cGRhdGVfY3B1X2xvYWRfbm9oeiA8LXRpY2tfbm9oel9pZGxlX2V4aXQKKyAgPGlkbGU+LTAgICAgICAgM2ROLjEgICAxM3VzIDogX3Jhd19zcGluX2xvY2sgPC11cGRhdGVfY3B1X2xvYWRfbm9oegorICA8aWRsZT4tMCAgICAgICAzZE4uMSAgIDEzdXMgOiBhZGRfcHJlZW1wdF9jb3VudCA8LV9yYXdfc3Bpbl9sb2NrCisgIDxpZGxlPi0wICAgICAgIDNkTi4yICAgMTN1cyA6IF9fdXBkYXRlX2NwdV9sb2FkIDwtdXBkYXRlX2NwdV9sb2FkX25vaHoKKyAgPGlkbGU+LTAgICAgICAgM2ROLjIgICAxNHVzIDogc2NoZWRfYXZnX3VwZGF0ZSA8LV9fdXBkYXRlX2NwdV9sb2FkCisgIDxpZGxlPi0wICAgICAgIDNkTi4yICAgMTR1cyA6IF9yYXdfc3Bpbl91bmxvY2sgPC11cGRhdGVfY3B1X2xvYWRfbm9oegorICA8aWRsZT4tMCAgICAgICAzZE4uMiAgIDE0dXMgOiBzdWJfcHJlZW1wdF9jb3VudCA8LV9yYXdfc3Bpbl91bmxvY2sKKyAgPGlkbGU+LTAgICAgICAgM2ROLjEgICAxNXVzIDogY2FsY19sb2FkX2V4aXRfaWRsZSA8LXRpY2tfbm9oel9pZGxlX2V4aXQKKyAgPGlkbGU+LTAgICAgICAgM2ROLjEgICAxNXVzIDogdG91Y2hfc29mdGxvY2t1cF93YXRjaGRvZyA8LXRpY2tfbm9oel9pZGxlX2V4aXQKKyAgPGlkbGU+LTAgICAgICAgM2ROLjEgICAxNXVzIDogaHJ0aW1lcl9jYW5jZWwgPC10aWNrX25vaHpfaWRsZV9leGl0CisgIDxpZGxlPi0wICAgICAgIDNkTi4xICAgMTV1cyA6IGhydGltZXJfdHJ5X3RvX2NhbmNlbCA8LWhydGltZXJfY2FuY2VsCisgIDxpZGxlPi0wICAgICAgIDNkTi4xICAgMTZ1cyA6IGxvY2tfaHJ0aW1lcl9iYXNlLmlzcmEuMTggPC1ocnRpbWVyX3RyeV90b19jYW5jZWwKKyAgPGlkbGU+LTAgICAgICAgM2ROLjEgICAxNnVzIDogX3Jhd19zcGluX2xvY2tfaXJxc2F2ZSA8LWxvY2tfaHJ0aW1lcl9iYXNlLmlzcmEuMTgKKyAgPGlkbGU+LTAgICAgICAgM2ROLjEgICAxNnVzIDogYWRkX3ByZWVtcHRfY291bnQgPC1fcmF3X3NwaW5fbG9ja19pcnFzYXZlCisgIDxpZGxlPi0wICAgICAgIDNkTi4yICAgMTd1cyA6IF9fcmVtb3ZlX2hydGltZXIgPC1yZW1vdmVfaHJ0aW1lci5wYXJ0LjE2CisgIDxpZGxlPi0wICAgICAgIDNkTi4yICAgMTd1cyA6IGhydGltZXJfZm9yY2VfcmVwcm9ncmFtIDwtX19yZW1vdmVfaHJ0aW1lcgorICA8aWRsZT4tMCAgICAgICAzZE4uMiAgIDE3dXMgOiB0aWNrX3Byb2dyYW1fZXZlbnQgPC1ocnRpbWVyX2ZvcmNlX3JlcHJvZ3JhbQorICA8aWRsZT4tMCAgICAgICAzZE4uMiAgIDE4dXMgOiBjbG9ja2V2ZW50c19wcm9ncmFtX2V2ZW50IDwtdGlja19wcm9ncmFtX2V2ZW50CisgIDxpZGxlPi0wICAgICAgIDNkTi4yICAgMTh1cyA6IGt0aW1lX2dldCA8LWNsb2NrZXZlbnRzX3Byb2dyYW1fZXZlbnQKKyAgPGlkbGU+LTAgICAgICAgM2ROLjIgICAxOHVzIDogbGFwaWNfbmV4dF9ldmVudCA8LWNsb2NrZXZlbnRzX3Byb2dyYW1fZXZlbnQKKyAgPGlkbGU+LTAgICAgICAgM2ROLjIgICAxOXVzIDogX3Jhd19zcGluX3VubG9ja19pcnFyZXN0b3JlIDwtaHJ0aW1lcl90cnlfdG9fY2FuY2VsCisgIDxpZGxlPi0wICAgICAgIDNkTi4yICAgMTl1cyA6IHN1Yl9wcmVlbXB0X2NvdW50IDwtX3Jhd19zcGluX3VubG9ja19pcnFyZXN0b3JlCisgIDxpZGxlPi0wICAgICAgIDNkTi4xICAgMTl1cyA6IGhydGltZXJfZm9yd2FyZCA8LXRpY2tfbm9oel9pZGxlX2V4aXQKKyAgPGlkbGU+LTAgICAgICAgM2ROLjEgICAyMHVzIDoga3RpbWVfYWRkX3NhZmUgPC1ocnRpbWVyX2ZvcndhcmQKKyAgPGlkbGU+LTAgICAgICAgM2ROLjEgICAyMHVzIDoga3RpbWVfYWRkX3NhZmUgPC1ocnRpbWVyX2ZvcndhcmQKKyAgPGlkbGU+LTAgICAgICAgM2ROLjEgICAyMHVzIDogaHJ0aW1lcl9zdGFydF9yYW5nZV9ucyA8LWhydGltZXJfc3RhcnRfZXhwaXJlcy5jb25zdHByb3AuMTEKKyAgPGlkbGU+LTAgICAgICAgM2ROLjEgICAyMHVzIDogX19ocnRpbWVyX3N0YXJ0X3JhbmdlX25zIDwtaHJ0aW1lcl9zdGFydF9yYW5nZV9ucworICA8aWRsZT4tMCAgICAgICAzZE4uMSAgIDIxdXMgOiBsb2NrX2hydGltZXJfYmFzZS5pc3JhLjE4IDwtX19ocnRpbWVyX3N0YXJ0X3JhbmdlX25zCisgIDxpZGxlPi0wICAgICAgIDNkTi4xICAgMjF1cyA6IF9yYXdfc3Bpbl9sb2NrX2lycXNhdmUgPC1sb2NrX2hydGltZXJfYmFzZS5pc3JhLjE4CisgIDxpZGxlPi0wICAgICAgIDNkTi4xICAgMjF1cyA6IGFkZF9wcmVlbXB0X2NvdW50IDwtX3Jhd19zcGluX2xvY2tfaXJxc2F2ZQorICA8aWRsZT4tMCAgICAgICAzZE4uMiAgIDIydXMgOiBrdGltZV9hZGRfc2FmZSA8LV9faHJ0aW1lcl9zdGFydF9yYW5nZV9ucworICA8aWRsZT4tMCAgICAgICAzZE4uMiAgIDIydXMgOiBlbnF1ZXVlX2hydGltZXIgPC1fX2hydGltZXJfc3RhcnRfcmFuZ2VfbnMKKyAgPGlkbGU+LTAgICAgICAgM2ROLjIgICAyMnVzIDogdGlja19wcm9ncmFtX2V2ZW50IDwtX19ocnRpbWVyX3N0YXJ0X3JhbmdlX25zCisgIDxpZGxlPi0wICAgICAgIDNkTi4yICAgMjN1cyA6IGNsb2NrZXZlbnRzX3Byb2dyYW1fZXZlbnQgPC10aWNrX3Byb2dyYW1fZXZlbnQKKyAgPGlkbGU+LTAgICAgICAgM2ROLjIgICAyM3VzIDoga3RpbWVfZ2V0IDwtY2xvY2tldmVudHNfcHJvZ3JhbV9ldmVudAorICA8aWRsZT4tMCAgICAgICAzZE4uMiAgIDIzdXMgOiBsYXBpY19uZXh0X2V2ZW50IDwtY2xvY2tldmVudHNfcHJvZ3JhbV9ldmVudAorICA8aWRsZT4tMCAgICAgICAzZE4uMiAgIDI0dXMgOiBfcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUgPC1fX2hydGltZXJfc3RhcnRfcmFuZ2VfbnMKKyAgPGlkbGU+LTAgICAgICAgM2ROLjIgICAyNHVzIDogc3ViX3ByZWVtcHRfY291bnQgPC1fcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUKKyAgPGlkbGU+LTAgICAgICAgM2ROLjEgICAyNHVzIDogYWNjb3VudF9pZGxlX3RpY2tzIDwtdGlja19ub2h6X2lkbGVfZXhpdAorICA8aWRsZT4tMCAgICAgICAzZE4uMSAgIDI0dXMgOiBhY2NvdW50X2lkbGVfdGltZSA8LWFjY291bnRfaWRsZV90aWNrcworICA8aWRsZT4tMCAgICAgICAzLk4uMSAgIDI1dXMgOiBzdWJfcHJlZW1wdF9jb3VudCA8LWNwdV9pZGxlCisgIDxpZGxlPi0wICAgICAgIDMuTi4uICAgMjV1cyA6IHNjaGVkdWxlIDwtY3B1X2lkbGUKKyAgPGlkbGU+LTAgICAgICAgMy5OLi4gICAyNXVzIDogX19zY2hlZHVsZSA8LXByZWVtcHRfc2NoZWR1bGUKKyAgPGlkbGU+LTAgICAgICAgMy5OLi4gICAyNnVzIDogYWRkX3ByZWVtcHRfY291bnQgPC1fX3NjaGVkdWxlCisgIDxpZGxlPi0wICAgICAgIDMuTi4xICAgMjZ1cyA6IHJjdV9ub3RlX2NvbnRleHRfc3dpdGNoIDwtX19zY2hlZHVsZQorICA8aWRsZT4tMCAgICAgICAzLk4uMSAgIDI2dXMgOiByY3Vfc2NoZWRfcXMgPC1yY3Vfbm90ZV9jb250ZXh0X3N3aXRjaAorICA8aWRsZT4tMCAgICAgICAzZE4uMSAgIDI3dXMgOiByY3VfcHJlZW1wdF9xcyA8LXJjdV9ub3RlX2NvbnRleHRfc3dpdGNoCisgIDxpZGxlPi0wICAgICAgIDMuTi4xICAgMjd1cyA6IF9yYXdfc3Bpbl9sb2NrX2lycSA8LV9fc2NoZWR1bGUKKyAgPGlkbGU+LTAgICAgICAgM2ROLjEgICAyN3VzIDogYWRkX3ByZWVtcHRfY291bnQgPC1fcmF3X3NwaW5fbG9ja19pcnEKKyAgPGlkbGU+LTAgICAgICAgM2ROLjIgICAyOHVzIDogcHV0X3ByZXZfdGFza19pZGxlIDwtX19zY2hlZHVsZQorICA8aWRsZT4tMCAgICAgICAzZE4uMiAgIDI4dXMgOiBwaWNrX25leHRfdGFza19zdG9wIDwtcGlja19uZXh0X3Rhc2sKKyAgPGlkbGU+LTAgICAgICAgM2ROLjIgICAyOHVzIDogcGlja19uZXh0X3Rhc2tfcnQgPC1waWNrX25leHRfdGFzaworICA8aWRsZT4tMCAgICAgICAzZE4uMiAgIDI5dXMgOiBkZXF1ZXVlX3B1c2hhYmxlX3Rhc2sgPC1waWNrX25leHRfdGFza19ydAorICA8aWRsZT4tMCAgICAgICAzZC4uMyAgIDI5dXMgOiBfX3NjaGVkdWxlIDwtcHJlZW1wdF9zY2hlZHVsZQorICA8aWRsZT4tMCAgICAgICAzZC4uMyAgIDMwdXMgOiAgICAgIDA6MTIwOlIgPT0+IFswMDNdICAyNDQ4OiA5NDpSIHNsZWVwCisKK1RoaXMgaXNuJ3QgdGhhdCBiaWcgb2YgYSB0cmFjZSwgZXZlbiB3aXRoIGZ1bmN0aW9uIHRyYWNpbmcgZW5hYmxlZCwKK3NvIEkgaW5jbHVkZWQgdGhlIGVudGlyZSB0cmFjZS4KKworVGhlIGludGVycnVwdCB3ZW50IG9mZiB3aGlsZSB3aGVuIHRoZSBzeXN0ZW0gd2FzIGlkbGUuIFNvbWV3aGVyZQorYmVmb3JlIHRhc2tfd29rZW5fcnQoKSB3YXMgY2FsbGVkLCB0aGUgTkVFRF9SRVNDSEVEIGZsYWcgd2FzIHNldCwKK3RoaXMgaXMgaW5kaWNhdGVkIGJ5IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSAnTicgZmxhZy4KKworTGF0ZW5jeSB0cmFjaW5nIGFuZCBldmVudHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBcyBmdW5jdGlvbiB0cmFjaW5nIGNhbiBpbmR1Y2UgYSBtdWNoIGxhcmdlciBsYXRlbmN5LCBidXQgd2l0aG91dAorc2VlaW5nIHdoYXQgaGFwcGVucyB3aXRoaW4gdGhlIGxhdGVuY3kgaXQgaXMgaGFyZCB0byBrbm93IHdoYXQKK2NhdXNlZCBpdC4gVGhlcmUgaXMgYSBtaWRkbGUgZ3JvdW5kLCBhbmQgdGhhdCBpcyB3aXRoIGVuYWJsaW5nCitldmVudHMuCisKKyAjIGVjaG8gMCA+IG9wdGlvbnMvZnVuY3Rpb24tdHJhY2UKKyAjIGVjaG8gd2FrZXVwX3J0ID4gY3VycmVudF90cmFjZXIKKyAjIGVjaG8gMSA+IGV2ZW50cy9lbmFibGUKKyAjIGVjaG8gMSA+IHRyYWNpbmdfb24KKyAjIGVjaG8gMCA+IHRyYWNpbmdfbWF4X2xhdGVuY3kKKyAjIGNocnQgLWYgNSBzbGVlcCAxCisgIyBlY2hvIDAgPiB0cmFjaW5nX29uCisgIyBjYXQgdHJhY2UKKyMgdHJhY2VyOiB3YWtldXBfcnQKKyMKKyMgd2FrZXVwX3J0IGxhdGVuY3kgdHJhY2UgdjEuMS41IG9uIDMuOC4wLXRlc3QrCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGxhdGVuY3k6IDYgdXMsICMxMi8xMiwgQ1BVIzIgfCAoTTpwcmVlbXB0IFZQOjAsIEtQOjAsIFNQOjAgSFA6MCAjUDo0KQorIyAgICAtLS0tLS0tLS0tLS0tLS0tLQorIyAgICB8IHRhc2s6IHNsZWVwLTU4ODIgKHVpZDowIG5pY2U6MCBwb2xpY3k6MSBydF9wcmlvOjUpCisjICAgIC0tLS0tLS0tLS0tLS0tLS0tCisjCisjICAgICAgICAgICAgICAgICAgXy0tLS0tLT0+IENQVSMgICAgICAgICAgICAKKyMgICAgICAgICAgICAgICAgIC8gXy0tLS0tPT4gaXJxcy1vZmYgICAgICAgIAorIyAgICAgICAgICAgICAgICB8IC8gXy0tLS09PiBuZWVkLXJlc2NoZWQgICAgCisjICAgICAgICAgICAgICAgIHx8IC8gXy0tLT0+IGhhcmRpcnEvc29mdGlycSAKKyMgICAgICAgICAgICAgICAgfHx8IC8gXy0tPT4gcHJlZW1wdC1kZXB0aCAgIAorIyAgICAgICAgICAgICAgICB8fHx8IC8gICAgIGRlbGF5ICAgICAgICAgICAgIAorIyAgY21kICAgICBwaWQgICB8fHx8fCB0aW1lICB8ICAgY2FsbGVyICAgICAgCisjICAgICBcICAgLyAgICAgIHx8fHx8ICBcICAgIHwgICAvICAgICAgICAgICAKKyAgPGlkbGU+LTAgICAgICAgMmQuaDQgICAgMHVzIDogICAgICAwOjEyMDpSICAgKyBbMDAyXSAgNTg4MjogOTQ6UiBzbGVlcAorICA8aWRsZT4tMCAgICAgICAyZC5oNCAgICAwdXMgOiB0dHd1X2RvX2FjdGl2YXRlLmNvbnN0cHJvcC44NyA8LXRyeV90b193YWtlX3VwCisgIDxpZGxlPi0wICAgICAgIDJkLmg0ICAgIDF1cyA6IHNjaGVkX3dha2V1cDogY29tbT1zbGVlcCBwaWQ9NTg4MiBwcmlvPTk0IHN1Y2Nlc3M9MSB0YXJnZXRfY3B1PTAwMgorICA8aWRsZT4tMCAgICAgICAyZE5oMiAgICAxdXMgOiBocnRpbWVyX2V4cGlyZV9leGl0OiBocnRpbWVyPWZmZmY4ODAwNzc5NmZlYjgKKyAgPGlkbGU+LTAgICAgICAgMi5OLjIgICAgMnVzIDogcG93ZXJfZW5kOiBjcHVfaWQ9MgorICA8aWRsZT4tMCAgICAgICAyLk4uMiAgICAzdXMgOiBjcHVfaWRsZTogc3RhdGU9NDI5NDk2NzI5NSBjcHVfaWQ9MgorICA8aWRsZT4tMCAgICAgICAyZE4uMyAgICA0dXMgOiBocnRpbWVyX2NhbmNlbDogaHJ0aW1lcj1mZmZmODgwMDdkNTBkNWUwCisgIDxpZGxlPi0wICAgICAgIDJkTi4zICAgIDR1cyA6IGhydGltZXJfc3RhcnQ6IGhydGltZXI9ZmZmZjg4MDA3ZDUwZDVlMCBmdW5jdGlvbj10aWNrX3NjaGVkX3RpbWVyIGV4cGlyZXM9MzQzMTEyMTEwMDAwMDAgc29mdGV4cGlyZXM9MzQzMTEyMTEwMDAwMDAKKyAgPGlkbGU+LTAgICAgICAgMi5OLjIgICAgNXVzIDogcmN1X3V0aWxpemF0aW9uOiBTdGFydCBjb250ZXh0IHN3aXRjaAorICA8aWRsZT4tMCAgICAgICAyLk4uMiAgICA1dXMgOiByY3VfdXRpbGl6YXRpb246IEVuZCBjb250ZXh0IHN3aXRjaAorICA8aWRsZT4tMCAgICAgICAyZC4uMyAgICA2dXMgOiBfX3NjaGVkdWxlIDwtc2NoZWR1bGUKKyAgPGlkbGU+LTAgICAgICAgMmQuLjMgICAgNnVzIDogICAgICAwOjEyMDpSID09PiBbMDAyXSAgNTg4MjogOTQ6UiBzbGVlcAorCisKK2Z1bmN0aW9uCistLS0tLS0tLQorCitUaGlzIHRyYWNlciBpcyB0aGUgZnVuY3Rpb24gdHJhY2VyLiBFbmFibGluZyB0aGUgZnVuY3Rpb24gdHJhY2VyCitjYW4gYmUgZG9uZSBmcm9tIHRoZSBkZWJ1ZyBmaWxlIHN5c3RlbS4gTWFrZSBzdXJlIHRoZQorZnRyYWNlX2VuYWJsZWQgaXMgc2V0OyBvdGhlcndpc2UgdGhpcyB0cmFjZXIgaXMgYSBub3AuCitTZWUgdGhlICJmdHJhY2VfZW5hYmxlZCIgc2VjdGlvbiBiZWxvdy4KKworICMgc3lzY3RsIGtlcm5lbC5mdHJhY2VfZW5hYmxlZD0xCisgIyBlY2hvIGZ1bmN0aW9uID4gY3VycmVudF90cmFjZXIKKyAjIGVjaG8gMSA+IHRyYWNpbmdfb24KKyAjIHVzbGVlcCAxCisgIyBlY2hvIDAgPiB0cmFjaW5nX29uCisgIyBjYXQgdHJhY2UKKyMgdHJhY2VyOiBmdW5jdGlvbgorIworIyBlbnRyaWVzLWluLWJ1ZmZlci9lbnRyaWVzLXdyaXR0ZW46IDI0Nzk5LzI0Nzk5ICAgI1A6NAorIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8tLS0tLT0+IGlycXMtb2ZmCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF8tLS0tPT4gbmVlZC1yZXNjaGVkCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgLyBfLS0tPT4gaGFyZGlycS9zb2Z0aXJxCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IC8gXy0tPT4gcHJlZW1wdC1kZXB0aAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fHwgLyAgICAgZGVsYXkKKyMgICAgICAgICAgIFRBU0stUElEICAgQ1BVIyAgfHx8fCAgICBUSU1FU1RBTVAgIEZVTkNUSU9OCisjICAgICAgICAgICAgICB8IHwgICAgICAgfCAgIHx8fHwgICAgICAgfCAgICAgICAgIHwKKyAgICAgICAgICAgIGJhc2gtMTk5NCAgWzAwMl0gLi4uLiAgMzA4Mi4wNjMwMzA6IG11dGV4X3VubG9jayA8LXJiX3NpbXBsZV93cml0ZQorICAgICAgICAgICAgYmFzaC0xOTk0ICBbMDAyXSAuLi4uICAzMDgyLjA2MzAzMTogX19tdXRleF91bmxvY2tfc2xvd3BhdGggPC1tdXRleF91bmxvY2sKKyAgICAgICAgICAgIGJhc2gtMTk5NCAgWzAwMl0gLi4uLiAgMzA4Mi4wNjMwMzE6IF9fZnNub3RpZnlfcGFyZW50IDwtZnNub3RpZnlfbW9kaWZ5CisgICAgICAgICAgICBiYXNoLTE5OTQgIFswMDJdIC4uLi4gIDMwODIuMDYzMDMyOiBmc25vdGlmeSA8LWZzbm90aWZ5X21vZGlmeQorICAgICAgICAgICAgYmFzaC0xOTk0ICBbMDAyXSAuLi4uICAzMDgyLjA2MzAzMjogX19zcmN1X3JlYWRfbG9jayA8LWZzbm90aWZ5CisgICAgICAgICAgICBiYXNoLTE5OTQgIFswMDJdIC4uLi4gIDMwODIuMDYzMDMyOiBhZGRfcHJlZW1wdF9jb3VudCA8LV9fc3JjdV9yZWFkX2xvY2sKKyAgICAgICAgICAgIGJhc2gtMTk5NCAgWzAwMl0gLi4uMSAgMzA4Mi4wNjMwMzI6IHN1Yl9wcmVlbXB0X2NvdW50IDwtX19zcmN1X3JlYWRfbG9jaworICAgICAgICAgICAgYmFzaC0xOTk0ICBbMDAyXSAuLi4uICAzMDgyLjA2MzAzMzogX19zcmN1X3JlYWRfdW5sb2NrIDwtZnNub3RpZnkKK1suLi5dCisKKworTm90ZTogZnVuY3Rpb24gdHJhY2VyIHVzZXMgcmluZyBidWZmZXJzIHRvIHN0b3JlIHRoZSBhYm92ZQorZW50cmllcy4gVGhlIG5ld2VzdCBkYXRhIG1heSBvdmVyd3JpdGUgdGhlIG9sZGVzdCBkYXRhLgorU29tZXRpbWVzIHVzaW5nIGVjaG8gdG8gc3RvcCB0aGUgdHJhY2UgaXMgbm90IHN1ZmZpY2llbnQgYmVjYXVzZQordGhlIHRyYWNpbmcgY291bGQgaGF2ZSBvdmVyd3JpdHRlbiB0aGUgZGF0YSB0aGF0IHlvdSB3YW50ZWQgdG8KK3JlY29yZC4gRm9yIHRoaXMgcmVhc29uLCBpdCBpcyBzb21ldGltZXMgYmV0dGVyIHRvIGRpc2FibGUKK3RyYWNpbmcgZGlyZWN0bHkgZnJvbSBhIHByb2dyYW0uIFRoaXMgYWxsb3dzIHlvdSB0byBzdG9wIHRoZQordHJhY2luZyBhdCB0aGUgcG9pbnQgdGhhdCB5b3UgaGl0IHRoZSBwYXJ0IHRoYXQgeW91IGFyZQoraW50ZXJlc3RlZCBpbi4gVG8gZGlzYWJsZSB0aGUgdHJhY2luZyBkaXJlY3RseSBmcm9tIGEgQyBwcm9ncmFtLAorc29tZXRoaW5nIGxpa2UgZm9sbG93aW5nIGNvZGUgc25pcHBldCBjYW4gYmUgdXNlZDoKKworaW50IHRyYWNlX2ZkOworWy4uLl0KK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKwlbLi4uXQorCXRyYWNlX2ZkID0gb3Blbih0cmFjaW5nX2ZpbGUoInRyYWNpbmdfb24iKSwgT19XUk9OTFkpOworCVsuLi5dCisJaWYgKGNvbmRpdGlvbl9oaXQoKSkgeworCQl3cml0ZSh0cmFjZV9mZCwgIjAiLCAxKTsKKwl9CisJWy4uLl0KK30KKworCitTaW5nbGUgdGhyZWFkIHRyYWNpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCeSB3cml0aW5nIGludG8gc2V0X2Z0cmFjZV9waWQgeW91IGNhbiB0cmFjZSBhCitzaW5nbGUgdGhyZWFkLiBGb3IgZXhhbXBsZToKKworIyBjYXQgc2V0X2Z0cmFjZV9waWQKK25vIHBpZAorIyBlY2hvIDMxMTEgPiBzZXRfZnRyYWNlX3BpZAorIyBjYXQgc2V0X2Z0cmFjZV9waWQKKzMxMTEKKyMgZWNobyBmdW5jdGlvbiA+IGN1cnJlbnRfdHJhY2VyCisjIGNhdCB0cmFjZSB8IGhlYWQKKyAjIHRyYWNlcjogZnVuY3Rpb24KKyAjCisgIyAgICAgICAgICAgVEFTSy1QSUQgICAgQ1BVIyAgICBUSU1FU1RBTVAgIEZVTkNUSU9OCisgIyAgICAgICAgICAgICAgfCB8ICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwKKyAgICAgeXVtLXVwZGF0ZXNkLTMxMTEgIFswMDNdICAxNjM3LjI1NDY3NjogZmluaXNoX3Rhc2tfc3dpdGNoIDwtdGhyZWFkX3JldHVybgorICAgICB5dW0tdXBkYXRlc2QtMzExMSAgWzAwM10gIDE2MzcuMjU0NjgxOiBocnRpbWVyX2NhbmNlbCA8LXNjaGVkdWxlX2hydGltZW91dF9yYW5nZQorICAgICB5dW0tdXBkYXRlc2QtMzExMSAgWzAwM10gIDE2MzcuMjU0NjgyOiBocnRpbWVyX3RyeV90b19jYW5jZWwgPC1ocnRpbWVyX2NhbmNlbAorICAgICB5dW0tdXBkYXRlc2QtMzExMSAgWzAwM10gIDE2MzcuMjU0NjgzOiBsb2NrX2hydGltZXJfYmFzZSA8LWhydGltZXJfdHJ5X3RvX2NhbmNlbAorICAgICB5dW0tdXBkYXRlc2QtMzExMSAgWzAwM10gIDE2MzcuMjU0Njg1OiBmZ2V0X2xpZ2h0IDwtZG9fc3lzX3BvbGwKKyAgICAgeXVtLXVwZGF0ZXNkLTMxMTEgIFswMDNdICAxNjM3LjI1NDY4NjogcGlwZV9wb2xsIDwtZG9fc3lzX3BvbGwKKyMgZWNobyA+IHNldF9mdHJhY2VfcGlkCisjIGNhdCB0cmFjZSB8aGVhZAorICMgdHJhY2VyOiBmdW5jdGlvbgorICMKKyAjICAgICAgICAgICBUQVNLLVBJRCAgICBDUFUjICAgIFRJTUVTVEFNUCAgRlVOQ1RJT04KKyAjICAgICAgICAgICAgICB8IHwgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfAorICMjIyMjIENQVSAzIGJ1ZmZlciBzdGFydGVkICMjIyMKKyAgICAgeXVtLXVwZGF0ZXNkLTMxMTEgIFswMDNdICAxNzAxLjk1NzY4ODogZnJlZV9wb2xsX2VudHJ5IDwtcG9sbF9mcmVld2FpdAorICAgICB5dW0tdXBkYXRlc2QtMzExMSAgWzAwM10gIDE3MDEuOTU3Njg5OiByZW1vdmVfd2FpdF9xdWV1ZSA8LWZyZWVfcG9sbF9lbnRyeQorICAgICB5dW0tdXBkYXRlc2QtMzExMSAgWzAwM10gIDE3MDEuOTU3NjkxOiBmcHV0IDwtZnJlZV9wb2xsX2VudHJ5CisgICAgIHl1bS11cGRhdGVzZC0zMTExICBbMDAzXSAgMTcwMS45NTc2OTI6IGF1ZGl0X3N5c2NhbGxfZXhpdCA8LXN5c3JldF9hdWRpdAorICAgICB5dW0tdXBkYXRlc2QtMzExMSAgWzAwM10gIDE3MDEuOTU3NjkzOiBwYXRoX3B1dCA8LWF1ZGl0X3N5c2NhbGxfZXhpdAorCitJZiB5b3Ugd2FudCB0byB0cmFjZSBhIGZ1bmN0aW9uIHdoZW4gZXhlY3V0aW5nLCB5b3UgY291bGQgdXNlCitzb21ldGhpbmcgbGlrZSB0aGlzIHNpbXBsZSBwcm9ncmFtOgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNkZWZpbmUgX1NUUih4KSAjeAorI2RlZmluZSBTVFIoeCkgX1NUUih4KQorI2RlZmluZSBNQVhfUEFUSCAyNTYKKworY29uc3QgY2hhciAqZmluZF9kZWJ1Z2ZzKHZvaWQpCit7CisgICAgICAgc3RhdGljIGNoYXIgZGVidWdmc1tNQVhfUEFUSCsxXTsKKyAgICAgICBzdGF0aWMgaW50IGRlYnVnZnNfZm91bmQ7CisgICAgICAgY2hhciB0eXBlWzEwMF07CisgICAgICAgRklMRSAqZnA7CisKKyAgICAgICBpZiAoZGVidWdmc19mb3VuZCkKKyAgICAgICAgICAgICAgIHJldHVybiBkZWJ1Z2ZzOworCisgICAgICAgaWYgKChmcCA9IGZvcGVuKCIvcHJvYy9tb3VudHMiLCJyIikpID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgIHBlcnJvcigiL3Byb2MvbW91bnRzIik7CisgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICB9CisKKyAgICAgICB3aGlsZSAoZnNjYW5mKGZwLCAiJSpzICUiCisgICAgICAgICAgICAgICAgICAgICBTVFIoTUFYX1BBVEgpCisgICAgICAgICAgICAgICAgICAgICAicyAlOTlzICUqcyAlKmQgJSpkXG4iLAorICAgICAgICAgICAgICAgICAgICAgZGVidWdmcywgdHlwZSkgPT0gMikgeworICAgICAgICAgICAgICAgaWYgKHN0cmNtcCh0eXBlLCAiZGVidWdmcyIpID09IDApCisgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgIH0KKyAgICAgICBmY2xvc2UoZnApOworCisgICAgICAgaWYgKHN0cmNtcCh0eXBlLCAiZGVidWdmcyIpICE9IDApIHsKKyAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZGVidWdmcyBub3QgbW91bnRlZCIpOworICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgfQorCisgICAgICAgc3RyY2F0KGRlYnVnZnMsICIvdHJhY2luZy8iKTsKKyAgICAgICBkZWJ1Z2ZzX2ZvdW5kID0gMTsKKworICAgICAgIHJldHVybiBkZWJ1Z2ZzOworfQorCitjb25zdCBjaGFyICp0cmFjaW5nX2ZpbGUoY29uc3QgY2hhciAqZmlsZV9uYW1lKQoreworICAgICAgIHN0YXRpYyBjaGFyIHRyYWNlX2ZpbGVbTUFYX1BBVEgrMV07CisgICAgICAgc25wcmludGYodHJhY2VfZmlsZSwgTUFYX1BBVEgsICIlcy8lcyIsIGZpbmRfZGVidWdmcygpLCBmaWxlX25hbWUpOworICAgICAgIHJldHVybiB0cmFjZV9maWxlOworfQorCitpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgICAgICBpZiAoYXJnYyA8IDEpCisgICAgICAgICAgICAgICAgZXhpdCgtMSk7CisKKyAgICAgICAgaWYgKGZvcmsoKSA+IDApIHsKKyAgICAgICAgICAgICAgICBpbnQgZmQsIGZmZDsKKyAgICAgICAgICAgICAgICBjaGFyIGxpbmVbNjRdOworICAgICAgICAgICAgICAgIGludCBzOworCisgICAgICAgICAgICAgICAgZmZkID0gb3Blbih0cmFjaW5nX2ZpbGUoImN1cnJlbnRfdHJhY2VyIiksIE9fV1JPTkxZKTsKKyAgICAgICAgICAgICAgICBpZiAoZmZkIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4aXQoLTEpOworICAgICAgICAgICAgICAgIHdyaXRlKGZmZCwgIm5vcCIsIDMpOworCisgICAgICAgICAgICAgICAgZmQgPSBvcGVuKHRyYWNpbmdfZmlsZSgic2V0X2Z0cmFjZV9waWQiKSwgT19XUk9OTFkpOworICAgICAgICAgICAgICAgIHMgPSBzcHJpbnRmKGxpbmUsICIlZFxuIiwgZ2V0cGlkKCkpOworICAgICAgICAgICAgICAgIHdyaXRlKGZkLCBsaW5lLCBzKTsKKworICAgICAgICAgICAgICAgIHdyaXRlKGZmZCwgImZ1bmN0aW9uIiwgOCk7CisKKyAgICAgICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICAgICAgY2xvc2UoZmZkKTsKKworICAgICAgICAgICAgICAgIGV4ZWN2cChhcmd2WzFdLCBhcmd2KzEpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIDA7Cit9CisKK09yIHRoaXMgc2ltcGxlIHNjcmlwdCEKKworLS0tLS0tCisjIS9iaW4vYmFzaAorCitkZWJ1Z2ZzPWBzZWQgLW5lICdzL15kZWJ1Z2ZzIFwoLipcKSBkZWJ1Z2ZzLiovXDEvcCcgL3Byb2MvbW91bnRzYAorZWNobyBub3AgPiAkZGVidWdmcy90cmFjaW5nL2N1cnJlbnRfdHJhY2VyCitlY2hvIDAgPiAkZGVidWdmcy90cmFjaW5nL3RyYWNpbmdfb24KK2VjaG8gJCQgPiAkZGVidWdmcy90cmFjaW5nL3NldF9mdHJhY2VfcGlkCitlY2hvIGZ1bmN0aW9uID4gJGRlYnVnZnMvdHJhY2luZy9jdXJyZW50X3RyYWNlcgorZWNobyAxID4gJGRlYnVnZnMvdHJhY2luZy90cmFjaW5nX29uCitleGVjICIkQCIKKy0tLS0tLQorCisKK2Z1bmN0aW9uIGdyYXBoIHRyYWNlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgdHJhY2VyIGlzIHNpbWlsYXIgdG8gdGhlIGZ1bmN0aW9uIHRyYWNlciBleGNlcHQgdGhhdCBpdAorcHJvYmVzIGEgZnVuY3Rpb24gb24gaXRzIGVudHJ5IGFuZCBpdHMgZXhpdC4gVGhpcyBpcyBkb25lIGJ5Cit1c2luZyBhIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBzdGFjayBvZiByZXR1cm4gYWRkcmVzc2VzIGluIGVhY2gKK3Rhc2tfc3RydWN0LiBPbiBmdW5jdGlvbiBlbnRyeSB0aGUgdHJhY2VyIG92ZXJ3cml0ZXMgdGhlIHJldHVybgorYWRkcmVzcyBvZiBlYWNoIGZ1bmN0aW9uIHRyYWNlZCB0byBzZXQgYSBjdXN0b20gcHJvYmUuIFRodXMgdGhlCitvcmlnaW5hbCByZXR1cm4gYWRkcmVzcyBpcyBzdG9yZWQgb24gdGhlIHN0YWNrIG9mIHJldHVybiBhZGRyZXNzCitpbiB0aGUgdGFza19zdHJ1Y3QuCisKK1Byb2Jpbmcgb24gYm90aCBlbmRzIG9mIGEgZnVuY3Rpb24gbGVhZHMgdG8gc3BlY2lhbCBmZWF0dXJlcworc3VjaCBhczoKKworLSBtZWFzdXJlIG9mIGEgZnVuY3Rpb24ncyB0aW1lIGV4ZWN1dGlvbgorLSBoYXZpbmcgYSByZWxpYWJsZSBjYWxsIHN0YWNrIHRvIGRyYXcgZnVuY3Rpb24gY2FsbHMgZ3JhcGgKKworVGhpcyB0cmFjZXIgaXMgdXNlZnVsIGluIHNldmVyYWwgc2l0dWF0aW9uczoKKworLSB5b3Ugd2FudCB0byBmaW5kIHRoZSByZWFzb24gb2YgYSBzdHJhbmdlIGtlcm5lbCBiZWhhdmlvciBhbmQKKyAgbmVlZCB0byBzZWUgd2hhdCBoYXBwZW5zIGluIGRldGFpbCBvbiBhbnkgYXJlYXMgKG9yIHNwZWNpZmljCisgIG9uZXMpLgorCistIHlvdSBhcmUgZXhwZXJpZW5jaW5nIHdlaXJkIGxhdGVuY2llcyBidXQgaXQncyBkaWZmaWN1bHQgdG8KKyAgZmluZCBpdHMgb3JpZ2luLgorCistIHlvdSB3YW50IHRvIGZpbmQgcXVpY2tseSB3aGljaCBwYXRoIGlzIHRha2VuIGJ5IGEgc3BlY2lmaWMKKyAgZnVuY3Rpb24KKworLSB5b3UganVzdCB3YW50IHRvIHBlZWsgaW5zaWRlIGEgd29ya2luZyBrZXJuZWwgYW5kIHdhbnQgdG8gc2VlCisgIHdoYXQgaGFwcGVucyB0aGVyZS4KKworIyB0cmFjZXI6IGZ1bmN0aW9uX2dyYXBoCisjCisjIENQVSAgRFVSQVRJT04gICAgICAgICAgICAgICAgICBGVU5DVElPTiBDQUxMUworIyB8ICAgICB8ICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICB8ICAgfCAgIHwKKworIDApICAgICAgICAgICAgICAgfCAgc3lzX29wZW4oKSB7CisgMCkgICAgICAgICAgICAgICB8ICAgIGRvX3N5c19vcGVuKCkgeworIDApICAgICAgICAgICAgICAgfCAgICAgIGdldG5hbWUoKSB7CisgMCkgICAgICAgICAgICAgICB8ICAgICAgICBrbWVtX2NhY2hlX2FsbG9jKCkgeworIDApICAgMS4zODIgdXMgICAgfCAgICAgICAgICBfX21pZ2h0X3NsZWVwKCk7CisgMCkgICAyLjQ3OCB1cyAgICB8ICAgICAgICB9CisgMCkgICAgICAgICAgICAgICB8ICAgICAgICBzdHJuY3B5X2Zyb21fdXNlcigpIHsKKyAwKSAgICAgICAgICAgICAgIHwgICAgICAgICAgbWlnaHRfZmF1bHQoKSB7CisgMCkgICAxLjM4OSB1cyAgICB8ICAgICAgICAgICAgX19taWdodF9zbGVlcCgpOworIDApICAgMi41NTMgdXMgICAgfCAgICAgICAgICB9CisgMCkgICAzLjgwNyB1cyAgICB8ICAgICAgICB9CisgMCkgICA3Ljg3NiB1cyAgICB8ICAgICAgfQorIDApICAgICAgICAgICAgICAgfCAgICAgIGFsbG9jX2ZkKCkgeworIDApICAgMC42NjggdXMgICAgfCAgICAgICAgX3NwaW5fbG9jaygpOworIDApICAgMC41NzAgdXMgICAgfCAgICAgICAgZXhwYW5kX2ZpbGVzKCk7CisgMCkgICAwLjU4NiB1cyAgICB8ICAgICAgICBfc3Bpbl91bmxvY2soKTsKKworCitUaGVyZSBhcmUgc2V2ZXJhbCBjb2x1bW5zIHRoYXQgY2FuIGJlIGR5bmFtaWNhbGx5CitlbmFibGVkL2Rpc2FibGVkLiBZb3UgY2FuIHVzZSBldmVyeSBjb21iaW5hdGlvbiBvZiBvcHRpb25zIHlvdQord2FudCwgZGVwZW5kaW5nIG9uIHlvdXIgbmVlZHMuCisKKy0gVGhlIGNwdSBudW1iZXIgb24gd2hpY2ggdGhlIGZ1bmN0aW9uIGV4ZWN1dGVkIGlzIGRlZmF1bHQKKyAgZW5hYmxlZC4gIEl0IGlzIHNvbWV0aW1lcyBiZXR0ZXIgdG8gb25seSB0cmFjZSBvbmUgY3B1IChzZWUKKyAgdHJhY2luZ19jcHVfbWFzayBmaWxlKSBvciB5b3UgbWlnaHQgc29tZXRpbWVzIHNlZSB1bm9yZGVyZWQKKyAgZnVuY3Rpb24gY2FsbHMgd2hpbGUgY3B1IHRyYWNpbmcgc3dpdGNoLgorCisJaGlkZTogZWNobyBub2Z1bmNncmFwaC1jcHUgPiB0cmFjZV9vcHRpb25zCisJc2hvdzogZWNobyBmdW5jZ3JhcGgtY3B1ID4gdHJhY2Vfb3B0aW9ucworCistIFRoZSBkdXJhdGlvbiAoZnVuY3Rpb24ncyB0aW1lIG9mIGV4ZWN1dGlvbikgaXMgZGlzcGxheWVkIG9uCisgIHRoZSBjbG9zaW5nIGJyYWNrZXQgbGluZSBvZiBhIGZ1bmN0aW9uIG9yIG9uIHRoZSBzYW1lIGxpbmUKKyAgdGhhbiB0aGUgY3VycmVudCBmdW5jdGlvbiBpbiBjYXNlIG9mIGEgbGVhZiBvbmUuIEl0IGlzIGRlZmF1bHQKKyAgZW5hYmxlZC4KKworCWhpZGU6IGVjaG8gbm9mdW5jZ3JhcGgtZHVyYXRpb24gPiB0cmFjZV9vcHRpb25zCisJc2hvdzogZWNobyBmdW5jZ3JhcGgtZHVyYXRpb24gPiB0cmFjZV9vcHRpb25zCisKKy0gVGhlIG92ZXJoZWFkIGZpZWxkIHByZWNlZGVzIHRoZSBkdXJhdGlvbiBmaWVsZCBpbiBjYXNlIG9mCisgIHJlYWNoZWQgZHVyYXRpb24gdGhyZXNob2xkcy4KKworCWhpZGU6IGVjaG8gbm9mdW5jZ3JhcGgtb3ZlcmhlYWQgPiB0cmFjZV9vcHRpb25zCisJc2hvdzogZWNobyBmdW5jZ3JhcGgtb3ZlcmhlYWQgPiB0cmFjZV9vcHRpb25zCisJZGVwZW5kcyBvbjogZnVuY2dyYXBoLWR1cmF0aW9uCisKKyAgaWU6CisKKyAgMykgIyAxODM3LjcwOSB1cyB8ICAgICAgICAgIH0gLyogX19zd2l0Y2hfdG8gKi8KKyAgMykgICAgICAgICAgICAgICB8ICAgICAgICAgIGZpbmlzaF90YXNrX3N3aXRjaCgpIHsKKyAgMykgICAwLjMxMyB1cyAgICB8ICAgICAgICAgICAgX3Jhd19zcGluX3VubG9ja19pcnEoKTsKKyAgMykgICAzLjE3NyB1cyAgICB8ICAgICAgICAgIH0KKyAgMykgIyAxODg5LjA2MyB1cyB8ICAgICAgICB9IC8qIF9fc2NoZWR1bGUgKi8KKyAgMykgISAxNDAuNDE3IHVzICB8ICAgICAgfSAvKiBfX3NjaGVkdWxlICovCisgIDMpICMgMjAzNC45NDggdXMgfCAgICB9IC8qIHNjaGVkdWxlICovCisgIDMpICogMzM5OTguNTkgdXMgfCAgfSAvKiBzY2hlZHVsZV9wcmVlbXB0X2Rpc2FibGVkICovCisKKyAgWy4uLl0KKworICAxKSAgIDAuMjYwIHVzICAgIHwgICAgICAgICAgICAgIG1zZWNzX3RvX2ppZmZpZXMoKTsKKyAgMSkgICAwLjMxMyB1cyAgICB8ICAgICAgICAgICAgICBfX3JjdV9yZWFkX3VubG9jaygpOworICAxKSArIDYxLjc3MCB1cyAgIHwgICAgICAgICAgICB9CisgIDEpICsgNjQuNDc5IHVzICAgfCAgICAgICAgICB9CisgIDEpICAgMC4zMTMgdXMgICAgfCAgICAgICAgICByY3VfYmhfcXMoKTsKKyAgMSkgICAwLjMxMyB1cyAgICB8ICAgICAgICAgIF9fbG9jYWxfYmhfZW5hYmxlKCk7CisgIDEpICEgMjE3LjI0MCB1cyAgfCAgICAgICAgfQorICAxKSAgIDAuMzY1IHVzICAgIHwgICAgICAgIGlkbGVfY3B1KCk7CisgIDEpICAgICAgICAgICAgICAgfCAgICAgICAgcmN1X2lycV9leGl0KCkgeworICAxKSAgIDAuNDE3IHVzICAgIHwgICAgICAgICAgcmN1X2Vxc19lbnRlcl9jb21tb24uaXNyYS40NygpOworICAxKSAgIDMuMTI1IHVzICAgIHwgICAgICAgIH0KKyAgMSkgISAyMjcuODEyIHVzICB8ICAgICAgfQorICAxKSAhIDQ1Ny4zOTUgdXMgIHwgICAgfQorICAxKSBAIDExOTc2MC4yIHVzIHwgIH0KKworICBbLi4uXQorCisgIDIpICAgICAgICAgICAgICAgfCAgICBoYW5kbGVfSVBJKCkgeworICAxKSAgIDYuOTc5IHVzICAgIHwgICAgICAgICAgICAgICAgICB9CisgIDIpICAgMC40MTcgdXMgICAgfCAgICAgIHNjaGVkdWxlcl9pcGkoKTsKKyAgMSkgICA5Ljc5MSB1cyAgICB8ICAgICAgICAgICAgICAgIH0KKyAgMSkgKyAxMi45MTcgdXMgICB8ICAgICAgICAgICAgICB9CisgIDIpICAgMy40OTAgdXMgICAgfCAgICB9CisgIDEpICsgMTUuNzI5IHVzICAgfCAgICAgICAgICAgIH0KKyAgMSkgKyAxOC41NDIgdXMgICB8ICAgICAgICAgIH0KKyAgMikgJCAzNTk0Mjc0IHVzICB8ICB9CisKKyAgKyBtZWFucyB0aGF0IHRoZSBmdW5jdGlvbiBleGNlZWRlZCAxMCB1c2Vjcy4KKyAgISBtZWFucyB0aGF0IHRoZSBmdW5jdGlvbiBleGNlZWRlZCAxMDAgdXNlY3MuCisgICMgbWVhbnMgdGhhdCB0aGUgZnVuY3Rpb24gZXhjZWVkZWQgMTAwMCB1c2Vjcy4KKyAgKiBtZWFucyB0aGF0IHRoZSBmdW5jdGlvbiBleGNlZWRlZCAxMCBtc2Vjcy4KKyAgQCBtZWFucyB0aGF0IHRoZSBmdW5jdGlvbiBleGNlZWRlZCAxMDAgbXNlY3MuCisgICQgbWVhbnMgdGhhdCB0aGUgZnVuY3Rpb24gZXhjZWVkZWQgMSBzZWMuCisKKworLSBUaGUgdGFzay9waWQgZmllbGQgZGlzcGxheXMgdGhlIHRocmVhZCBjbWRsaW5lIGFuZCBwaWQgd2hpY2gKKyAgZXhlY3V0ZWQgdGhlIGZ1bmN0aW9uLiBJdCBpcyBkZWZhdWx0IGRpc2FibGVkLgorCisJaGlkZTogZWNobyBub2Z1bmNncmFwaC1wcm9jID4gdHJhY2Vfb3B0aW9ucworCXNob3c6IGVjaG8gZnVuY2dyYXBoLXByb2MgPiB0cmFjZV9vcHRpb25zCisKKyAgaWU6CisKKyAgIyB0cmFjZXI6IGZ1bmN0aW9uX2dyYXBoCisgICMKKyAgIyBDUFUgIFRBU0svUElEICAgICAgICBEVVJBVElPTiAgICAgICAgICAgICAgICAgIEZVTkNUSU9OIENBTExTCisgICMgfCAgICB8ICAgIHwgICAgICAgICAgIHwgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgIHwgICB8ICAgfAorICAwKSAgICBzaC00ODAyICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIGRfZnJlZSgpIHsKKyAgMCkgICAgc2gtNDgwMiAgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIGNhbGxfcmN1KCkgeworICAwKSAgICBzaC00ODAyICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBfX2NhbGxfcmN1KCkgeworICAwKSAgICBzaC00ODAyICAgICB8ICAgMC42MTYgdXMgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHJjdV9wcm9jZXNzX2dwX2VuZCgpOworICAwKSAgICBzaC00ODAyICAgICB8ICAgMC41ODYgdXMgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2Zvcl9uZXdfZ3JhY2VfcGVyaW9kKCk7CisgIDApICAgIHNoLTQ4MDIgICAgIHwgICAyLjg5OSB1cyAgICB8ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgMCkgICAgc2gtNDgwMiAgICAgfCAgIDQuMDQwIHVzICAgIHwgICAgICAgICAgICAgICAgICAgIH0KKyAgMCkgICAgc2gtNDgwMiAgICAgfCAgIDUuMTUxIHVzICAgIHwgICAgICAgICAgICAgICAgICB9CisgIDApICAgIHNoLTQ4MDIgICAgIHwgKyA0OS4zNzAgdXMgICB8ICAgICAgICAgICAgICAgIH0KKworCistIFRoZSBhYnNvbHV0ZSB0aW1lIGZpZWxkIGlzIGFuIGFic29sdXRlIHRpbWVzdGFtcCBnaXZlbiBieSB0aGUKKyAgc3lzdGVtIGNsb2NrIHNpbmNlIGl0IHN0YXJ0ZWQuIEEgc25hcHNob3Qgb2YgdGhpcyB0aW1lIGlzCisgIGdpdmVuIG9uIGVhY2ggZW50cnkvZXhpdCBvZiBmdW5jdGlvbnMKKworCWhpZGU6IGVjaG8gbm9mdW5jZ3JhcGgtYWJzdGltZSA+IHRyYWNlX29wdGlvbnMKKwlzaG93OiBlY2hvIGZ1bmNncmFwaC1hYnN0aW1lID4gdHJhY2Vfb3B0aW9ucworCisgIGllOgorCisgICMKKyAgIyAgICAgIFRJTUUgICAgICAgQ1BVICBEVVJBVElPTiAgICAgICAgICAgICAgICAgIEZVTkNUSU9OIENBTExTCisgICMgICAgICAgfCAgICAgICAgIHwgICAgIHwgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgIHwgICB8ICAgfAorICAzNjAuNzc0NTIyIHwgICAxKSAgIDAuNTQxIHVzICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgIDM2MC43NzQ1MjIgfCAgIDEpICAgNC42NjMgdXMgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgIDM2MC43NzQ1MjMgfCAgIDEpICAgMC41NDEgdXMgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3dha2VfdXBfYml0KCk7CisgIDM2MC43NzQ1MjQgfCAgIDEpICAgNi43OTYgdXMgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAzNjAuNzc0NTI0IHwgICAxKSAgIDcuOTUyIHVzICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgIDM2MC43NzQ1MjUgfCAgIDEpICAgOS4wNjMgdXMgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgIDM2MC43NzQ1MjUgfCAgIDEpICAgMC42MTUgdXMgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqb3VybmFsX21hcmtfZGlydHkoKTsKKyAgMzYwLjc3NDUyNyB8ICAgMSkgICAwLjU3OCB1cyAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYnJlbHNlKCk7CisgIDM2MC43NzQ1MjggfCAgIDEpICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWlzZXJmc19wcmVwYXJlX2Zvcl9qb3VybmFsKCkgeworICAzNjAuNzc0NTI4IHwgICAxKSAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmxvY2tfYnVmZmVyKCkgeworICAzNjAuNzc0NTI5IHwgICAxKSAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdha2VfdXBfYml0KCkgeworICAzNjAuNzc0NTI5IHwgICAxKSAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0X3dhaXRxdWV1ZSgpIHsKKyAgMzYwLjc3NDUzMCB8ICAgMSkgICAwLjU5NCB1cyAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19waHlzX2FkZHIoKTsKKworCitUaGUgZnVuY3Rpb24gbmFtZSBpcyBhbHdheXMgZGlzcGxheWVkIGFmdGVyIHRoZSBjbG9zaW5nIGJyYWNrZXQKK2ZvciBhIGZ1bmN0aW9uIGlmIHRoZSBzdGFydCBvZiB0aGF0IGZ1bmN0aW9uIGlzIG5vdCBpbiB0aGUKK3RyYWNlIGJ1ZmZlci4KKworRGlzcGxheSBvZiB0aGUgZnVuY3Rpb24gbmFtZSBhZnRlciB0aGUgY2xvc2luZyBicmFja2V0IG1heSBiZQorZW5hYmxlZCBmb3IgZnVuY3Rpb25zIHdob3NlIHN0YXJ0IGlzIGluIHRoZSB0cmFjZSBidWZmZXIsCithbGxvd2luZyBlYXNpZXIgc2VhcmNoaW5nIHdpdGggZ3JlcCBmb3IgZnVuY3Rpb24gZHVyYXRpb25zLgorSXQgaXMgZGVmYXVsdCBkaXNhYmxlZC4KKworCWhpZGU6IGVjaG8gbm9mdW5jZ3JhcGgtdGFpbCA+IHRyYWNlX29wdGlvbnMKKwlzaG93OiBlY2hvIGZ1bmNncmFwaC10YWlsID4gdHJhY2Vfb3B0aW9ucworCisgIEV4YW1wbGUgd2l0aCBub2Z1bmNncmFwaC10YWlsIChkZWZhdWx0KToKKyAgMCkgICAgICAgICAgICAgICB8ICAgICAgcHV0bmFtZSgpIHsKKyAgMCkgICAgICAgICAgICAgICB8ICAgICAgICBrbWVtX2NhY2hlX2ZyZWUoKSB7CisgIDApICAgMC41MTggdXMgICAgfCAgICAgICAgICBfX3BoeXNfYWRkcigpOworICAwKSAgIDEuNzU3IHVzICAgIHwgICAgICAgIH0KKyAgMCkgICAyLjg2MSB1cyAgICB8ICAgICAgfQorCisgIEV4YW1wbGUgd2l0aCBmdW5jZ3JhcGgtdGFpbDoKKyAgMCkgICAgICAgICAgICAgICB8ICAgICAgcHV0bmFtZSgpIHsKKyAgMCkgICAgICAgICAgICAgICB8ICAgICAgICBrbWVtX2NhY2hlX2ZyZWUoKSB7CisgIDApICAgMC41MTggdXMgICAgfCAgICAgICAgICBfX3BoeXNfYWRkcigpOworICAwKSAgIDEuNzU3IHVzICAgIHwgICAgICAgIH0gLyoga21lbV9jYWNoZV9mcmVlKCkgKi8KKyAgMCkgICAyLjg2MSB1cyAgICB8ICAgICAgfSAvKiBwdXRuYW1lKCkgKi8KKworWW91IGNhbiBwdXQgc29tZSBjb21tZW50cyBvbiBzcGVjaWZpYyBmdW5jdGlvbnMgYnkgdXNpbmcKK3RyYWNlX3ByaW50aygpIEZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBwdXQgYSBjb21tZW50IGluc2lkZQordGhlIF9fbWlnaHRfc2xlZXAoKSBmdW5jdGlvbiwgeW91IGp1c3QgaGF2ZSB0byBpbmNsdWRlCis8bGludXgvZnRyYWNlLmg+IGFuZCBjYWxsIHRyYWNlX3ByaW50aygpIGluc2lkZSBfX21pZ2h0X3NsZWVwKCkKKwordHJhY2VfcHJpbnRrKCJJJ20gYSBjb21tZW50IVxuIikKKword2lsbCBwcm9kdWNlOgorCisgMSkgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIF9fbWlnaHRfc2xlZXAoKSB7CisgMSkgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIC8qIEknbSBhIGNvbW1lbnQhICovCisgMSkgICAxLjQ0OSB1cyAgICB8ICAgICAgICAgICAgIH0KKworCitZb3UgbWlnaHQgZmluZCBvdGhlciB1c2VmdWwgZmVhdHVyZXMgZm9yIHRoaXMgdHJhY2VyIGluIHRoZQorZm9sbG93aW5nICJkeW5hbWljIGZ0cmFjZSIgc2VjdGlvbiBzdWNoIGFzIHRyYWNpbmcgb25seSBzcGVjaWZpYworZnVuY3Rpb25zIG9yIHRhc2tzLgorCitkeW5hbWljIGZ0cmFjZQorLS0tLS0tLS0tLS0tLS0KKworSWYgQ09ORklHX0RZTkFNSUNfRlRSQUNFIGlzIHNldCwgdGhlIHN5c3RlbSB3aWxsIHJ1biB3aXRoCit2aXJ0dWFsbHkgbm8gb3ZlcmhlYWQgd2hlbiBmdW5jdGlvbiB0cmFjaW5nIGlzIGRpc2FibGVkLiBUaGUgd2F5Cit0aGlzIHdvcmtzIGlzIHRoZSBtY291bnQgZnVuY3Rpb24gY2FsbCAocGxhY2VkIGF0IHRoZSBzdGFydCBvZgorZXZlcnkga2VybmVsIGZ1bmN0aW9uLCBwcm9kdWNlZCBieSB0aGUgLXBnIHN3aXRjaCBpbiBnY2MpLAorc3RhcnRzIG9mIHBvaW50aW5nIHRvIGEgc2ltcGxlIHJldHVybi4gKEVuYWJsaW5nIEZUUkFDRSB3aWxsCitpbmNsdWRlIHRoZSAtcGcgc3dpdGNoIGluIHRoZSBjb21waWxpbmcgb2YgdGhlIGtlcm5lbC4pCisKK0F0IGNvbXBpbGUgdGltZSBldmVyeSBDIGZpbGUgb2JqZWN0IGlzIHJ1biB0aHJvdWdoIHRoZQorcmVjb3JkbWNvdW50IHByb2dyYW0gKGxvY2F0ZWQgaW4gdGhlIHNjcmlwdHMgZGlyZWN0b3J5KS4gVGhpcworcHJvZ3JhbSB3aWxsIHBhcnNlIHRoZSBFTEYgaGVhZGVycyBpbiB0aGUgQyBvYmplY3QgdG8gZmluZCBhbGwKK3RoZSBsb2NhdGlvbnMgaW4gdGhlIC50ZXh0IHNlY3Rpb24gdGhhdCBjYWxsIG1jb3VudC4gKE5vdGUsIG9ubHkKK3doaXRlIGxpc3RlZCAudGV4dCBzZWN0aW9ucyBhcmUgcHJvY2Vzc2VkLCBzaW5jZSBwcm9jZXNzaW5nIG90aGVyCitzZWN0aW9ucyBsaWtlIC5pbml0LnRleHQgbWF5IGNhdXNlIHJhY2VzIGR1ZSB0byB0aG9zZSBzZWN0aW9ucworYmVpbmcgZnJlZWQgdW5leHBlY3RlZGx5KS4KKworQSBuZXcgc2VjdGlvbiBjYWxsZWQgIl9fbWNvdW50X2xvYyIgaXMgY3JlYXRlZCB0aGF0IGhvbGRzCityZWZlcmVuY2VzIHRvIGFsbCB0aGUgbWNvdW50IGNhbGwgc2l0ZXMgaW4gdGhlIC50ZXh0IHNlY3Rpb24uCitUaGUgcmVjb3JkbWNvdW50IHByb2dyYW0gcmUtbGlua3MgdGhpcyBzZWN0aW9uIGJhY2sgaW50byB0aGUKK29yaWdpbmFsIG9iamVjdC4gVGhlIGZpbmFsIGxpbmtpbmcgc3RhZ2Ugb2YgdGhlIGtlcm5lbCB3aWxsIGFkZCBhbGwgdGhlc2UKK3JlZmVyZW5jZXMgaW50byBhIHNpbmdsZSB0YWJsZS4KKworT24gYm9vdCB1cCwgYmVmb3JlIFNNUCBpcyBpbml0aWFsaXplZCwgdGhlIGR5bmFtaWMgZnRyYWNlIGNvZGUKK3NjYW5zIHRoaXMgdGFibGUgYW5kIHVwZGF0ZXMgYWxsIHRoZSBsb2NhdGlvbnMgaW50byBub3BzLiBJdAorYWxzbyByZWNvcmRzIHRoZSBsb2NhdGlvbnMsIHdoaWNoIGFyZSBhZGRlZCB0byB0aGUKK2F2YWlsYWJsZV9maWx0ZXJfZnVuY3Rpb25zIGxpc3QuICBNb2R1bGVzIGFyZSBwcm9jZXNzZWQgYXMgdGhleQorYXJlIGxvYWRlZCBhbmQgYmVmb3JlIHRoZXkgYXJlIGV4ZWN1dGVkLiAgV2hlbiBhIG1vZHVsZSBpcwordW5sb2FkZWQsIGl0IGFsc28gcmVtb3ZlcyBpdHMgZnVuY3Rpb25zIGZyb20gdGhlIGZ0cmFjZSBmdW5jdGlvbgorbGlzdC4gVGhpcyBpcyBhdXRvbWF0aWMgaW4gdGhlIG1vZHVsZSB1bmxvYWQgY29kZSwgYW5kIHRoZQorbW9kdWxlIGF1dGhvciBkb2VzIG5vdCBuZWVkIHRvIHdvcnJ5IGFib3V0IGl0LgorCitXaGVuIHRyYWNpbmcgaXMgZW5hYmxlZCwgdGhlIHByb2Nlc3Mgb2YgbW9kaWZ5aW5nIHRoZSBmdW5jdGlvbgordHJhY2Vwb2ludHMgaXMgZGVwZW5kZW50IG9uIGFyY2hpdGVjdHVyZS4gVGhlIG9sZCBtZXRob2QgaXMgdG8gdXNlCitrc3RvcF9tYWNoaW5lIHRvIHByZXZlbnQgcmFjZXMgd2l0aCB0aGUgQ1BVcyBleGVjdXRpbmcgY29kZSBiZWluZworbW9kaWZpZWQgKHdoaWNoIGNhbiBjYXVzZSB0aGUgQ1BVIHRvIGRvIHVuZGVzaXJhYmxlIHRoaW5ncywgZXNwZWNpYWxseQoraWYgdGhlIG1vZGlmaWVkIGNvZGUgY3Jvc3NlcyBjYWNoZSAob3IgcGFnZSkgYm91bmRhcmllcyksIGFuZCB0aGUgbm9wcyBhcmUKK3BhdGNoZWQgYmFjayB0byBjYWxscy4gQnV0IHRoaXMgdGltZSwgdGhleSBkbyBub3QgY2FsbCBtY291bnQKKyh3aGljaCBpcyBqdXN0IGEgZnVuY3Rpb24gc3R1YikuIFRoZXkgbm93IGNhbGwgaW50byB0aGUgZnRyYWNlCitpbmZyYXN0cnVjdHVyZS4KKworVGhlIG5ldyBtZXRob2Qgb2YgbW9kaWZ5aW5nIHRoZSBmdW5jdGlvbiB0cmFjZXBvaW50cyBpcyB0byBwbGFjZQorYSBicmVha3BvaW50IGF0IHRoZSBsb2NhdGlvbiB0byBiZSBtb2RpZmllZCwgc3luYyBhbGwgQ1BVcywgbW9kaWZ5Cit0aGUgcmVzdCBvZiB0aGUgaW5zdHJ1Y3Rpb24gbm90IGNvdmVyZWQgYnkgdGhlIGJyZWFrcG9pbnQuIFN5bmMKK2FsbCBDUFVzIGFnYWluLCBhbmQgdGhlbiByZW1vdmUgdGhlIGJyZWFrcG9pbnQgd2l0aCB0aGUgZmluaXNoZWQKK3ZlcnNpb24gdG8gdGhlIGZ0cmFjZSBjYWxsIHNpdGUuCisKK1NvbWUgYXJjaHMgZG8gbm90IGV2ZW4gbmVlZCB0byBtb25rZXkgYXJvdW5kIHdpdGggdGhlIHN5bmNocm9uaXphdGlvbiwKK2FuZCBjYW4ganVzdCBzbGFwIHRoZSBuZXcgY29kZSBvbiB0b3Agb2YgdGhlIG9sZCB3aXRob3V0IGFueQorcHJvYmxlbXMgd2l0aCBvdGhlciBDUFVzIGV4ZWN1dGluZyBpdCBhdCB0aGUgc2FtZSB0aW1lLgorCitPbmUgc3BlY2lhbCBzaWRlLWVmZmVjdCB0byB0aGUgcmVjb3JkaW5nIG9mIHRoZSBmdW5jdGlvbnMgYmVpbmcKK3RyYWNlZCBpcyB0aGF0IHdlIGNhbiBub3cgc2VsZWN0aXZlbHkgY2hvb3NlIHdoaWNoIGZ1bmN0aW9ucyB3ZQord2lzaCB0byB0cmFjZSBhbmQgd2hpY2ggb25lcyB3ZSB3YW50IHRoZSBtY291bnQgY2FsbHMgdG8gcmVtYWluCithcyBub3BzLgorCitUd28gZmlsZXMgYXJlIHVzZWQsIG9uZSBmb3IgZW5hYmxpbmcgYW5kIG9uZSBmb3IgZGlzYWJsaW5nIHRoZQordHJhY2luZyBvZiBzcGVjaWZpZWQgZnVuY3Rpb25zLiBUaGV5IGFyZToKKworICBzZXRfZnRyYWNlX2ZpbHRlcgorCithbmQKKworICBzZXRfZnRyYWNlX25vdHJhY2UKKworQSBsaXN0IG9mIGF2YWlsYWJsZSBmdW5jdGlvbnMgdGhhdCB5b3UgY2FuIGFkZCB0byB0aGVzZSBmaWxlcyBpcworbGlzdGVkIGluOgorCisgICBhdmFpbGFibGVfZmlsdGVyX2Z1bmN0aW9ucworCisgIyBjYXQgYXZhaWxhYmxlX2ZpbHRlcl9mdW5jdGlvbnMKK3B1dF9wcmV2X3Rhc2tfaWRsZQora21lbV9jYWNoZV9jcmVhdGUKK3BpY2tfbmV4dF90YXNrX3J0CitnZXRfb25saW5lX2NwdXMKK3BpY2tfbmV4dF90YXNrX2ZhaXIKK211dGV4X2xvY2sKK1suLi5dCisKK0lmIEkgYW0gb25seSBpbnRlcmVzdGVkIGluIHN5c19uYW5vc2xlZXAgYW5kIGhydGltZXJfaW50ZXJydXB0OgorCisgIyBlY2hvIHN5c19uYW5vc2xlZXAgaHJ0aW1lcl9pbnRlcnJ1cHQgPiBzZXRfZnRyYWNlX2ZpbHRlcgorICMgZWNobyBmdW5jdGlvbiA+IGN1cnJlbnRfdHJhY2VyCisgIyBlY2hvIDEgPiB0cmFjaW5nX29uCisgIyB1c2xlZXAgMQorICMgZWNobyAwID4gdHJhY2luZ19vbgorICMgY2F0IHRyYWNlCisjIHRyYWNlcjogZnVuY3Rpb24KKyMKKyMgZW50cmllcy1pbi1idWZmZXIvZW50cmllcy13cml0dGVuOiA1LzUgICAjUDo0CisjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy0tLS0tPT4gaXJxcy1vZmYKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gXy0tLS09PiBuZWVkLXJlc2NoZWQKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAvIF8tLS09PiBoYXJkaXJxL3NvZnRpcnEKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgLyBfLS09PiBwcmVlbXB0LWRlcHRoCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8fCAvICAgICBkZWxheQorIyAgICAgICAgICAgVEFTSy1QSUQgICBDUFUjICB8fHx8ICAgIFRJTUVTVEFNUCAgRlVOQ1RJT04KKyMgICAgICAgICAgICAgIHwgfCAgICAgICB8ICAgfHx8fCAgICAgICB8ICAgICAgICAgfAorICAgICAgICAgIHVzbGVlcC0yNjY1ICBbMDAxXSAuLi4uICA0MTg2LjQ3NTM1NTogc3lzX25hbm9zbGVlcCA8LXN5c3RlbV9jYWxsX2Zhc3RwYXRoCisgICAgICAgICAgPGlkbGU+LTAgICAgIFswMDFdIGQuaDEgIDQxODYuNDc1NDA5OiBocnRpbWVyX2ludGVycnVwdCA8LXNtcF9hcGljX3RpbWVyX2ludGVycnVwdAorICAgICAgICAgIHVzbGVlcC0yNjY1ICBbMDAxXSBkLmgxICA0MTg2LjQ3NTQyNjogaHJ0aW1lcl9pbnRlcnJ1cHQgPC1zbXBfYXBpY190aW1lcl9pbnRlcnJ1cHQKKyAgICAgICAgICA8aWRsZT4tMCAgICAgWzAwM10gZC5oMSAgNDE4Ni40NzU0MjY6IGhydGltZXJfaW50ZXJydXB0IDwtc21wX2FwaWNfdGltZXJfaW50ZXJydXB0CisgICAgICAgICAgPGlkbGU+LTAgICAgIFswMDJdIGQuaDEgIDQxODYuNDc1NDI3OiBocnRpbWVyX2ludGVycnVwdCA8LXNtcF9hcGljX3RpbWVyX2ludGVycnVwdAorCitUbyBzZWUgd2hpY2ggZnVuY3Rpb25zIGFyZSBiZWluZyB0cmFjZWQsIHlvdSBjYW4gY2F0IHRoZSBmaWxlOgorCisgIyBjYXQgc2V0X2Z0cmFjZV9maWx0ZXIKK2hydGltZXJfaW50ZXJydXB0CitzeXNfbmFub3NsZWVwCisKKworUGVyaGFwcyB0aGlzIGlzIG5vdCBlbm91Z2guIFRoZSBmaWx0ZXJzIGFsc28gYWxsb3cgc2ltcGxlIHdpbGQKK2NhcmRzLiBPbmx5IHRoZSBmb2xsb3dpbmcgYXJlIGN1cnJlbnRseSBhdmFpbGFibGUKKworICA8bWF0Y2g+KiAgLSB3aWxsIG1hdGNoIGZ1bmN0aW9ucyB0aGF0IGJlZ2luIHdpdGggPG1hdGNoPgorICAqPG1hdGNoPiAgLSB3aWxsIG1hdGNoIGZ1bmN0aW9ucyB0aGF0IGVuZCB3aXRoIDxtYXRjaD4KKyAgKjxtYXRjaD4qIC0gd2lsbCBtYXRjaCBmdW5jdGlvbnMgdGhhdCBoYXZlIDxtYXRjaD4gaW4gaXQKKworVGhlc2UgYXJlIHRoZSBvbmx5IHdpbGQgY2FyZHMgd2hpY2ggYXJlIHN1cHBvcnRlZC4KKworICA8bWF0Y2g+KjxtYXRjaD4gd2lsbCBub3Qgd29yay4KKworTm90ZTogSXQgaXMgYmV0dGVyIHRvIHVzZSBxdW90ZXMgdG8gZW5jbG9zZSB0aGUgd2lsZCBjYXJkcywKKyAgICAgIG90aGVyd2lzZSB0aGUgc2hlbGwgbWF5IGV4cGFuZCB0aGUgcGFyYW1ldGVycyBpbnRvIG5hbWVzCisgICAgICBvZiBmaWxlcyBpbiB0aGUgbG9jYWwgZGlyZWN0b3J5LgorCisgIyBlY2hvICdocnRpbWVyXyonID4gc2V0X2Z0cmFjZV9maWx0ZXIKKworUHJvZHVjZXM6CisKKyMgdHJhY2VyOiBmdW5jdGlvbgorIworIyBlbnRyaWVzLWluLWJ1ZmZlci9lbnRyaWVzLXdyaXR0ZW46IDg5Ny84OTcgICAjUDo0CisjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy0tLS0tPT4gaXJxcy1vZmYKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gXy0tLS09PiBuZWVkLXJlc2NoZWQKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAvIF8tLS09PiBoYXJkaXJxL3NvZnRpcnEKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgLyBfLS09PiBwcmVlbXB0LWRlcHRoCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8fCAvICAgICBkZWxheQorIyAgICAgICAgICAgVEFTSy1QSUQgICBDUFUjICB8fHx8ICAgIFRJTUVTVEFNUCAgRlVOQ1RJT04KKyMgICAgICAgICAgICAgIHwgfCAgICAgICB8ICAgfHx8fCAgICAgICB8ICAgICAgICAgfAorICAgICAgICAgIDxpZGxlPi0wICAgICBbMDAzXSBkTi4xICA0MjI4LjU0NzgwMzogaHJ0aW1lcl9jYW5jZWwgPC10aWNrX25vaHpfaWRsZV9leGl0CisgICAgICAgICAgPGlkbGU+LTAgICAgIFswMDNdIGROLjEgIDQyMjguNTQ3ODA0OiBocnRpbWVyX3RyeV90b19jYW5jZWwgPC1ocnRpbWVyX2NhbmNlbAorICAgICAgICAgIDxpZGxlPi0wICAgICBbMDAzXSBkTi4yICA0MjI4LjU0NzgwNTogaHJ0aW1lcl9mb3JjZV9yZXByb2dyYW0gPC1fX3JlbW92ZV9ocnRpbWVyCisgICAgICAgICAgPGlkbGU+LTAgICAgIFswMDNdIGROLjEgIDQyMjguNTQ3ODA1OiBocnRpbWVyX2ZvcndhcmQgPC10aWNrX25vaHpfaWRsZV9leGl0CisgICAgICAgICAgPGlkbGU+LTAgICAgIFswMDNdIGROLjEgIDQyMjguNTQ3ODA1OiBocnRpbWVyX3N0YXJ0X3JhbmdlX25zIDwtaHJ0aW1lcl9zdGFydF9leHBpcmVzLmNvbnN0cHJvcC4xMQorICAgICAgICAgIDxpZGxlPi0wICAgICBbMDAzXSBkLi4xICA0MjI4LjU0Nzg1ODogaHJ0aW1lcl9nZXRfbmV4dF9ldmVudCA8LWdldF9uZXh0X3RpbWVyX2ludGVycnVwdAorICAgICAgICAgIDxpZGxlPi0wICAgICBbMDAzXSBkLi4xICA0MjI4LjU0Nzg1OTogaHJ0aW1lcl9zdGFydCA8LV9fdGlja19ub2h6X2lkbGVfZW50ZXIKKyAgICAgICAgICA8aWRsZT4tMCAgICAgWzAwM10gZC4uMiAgNDIyOC41NDc4NjA6IGhydGltZXJfZm9yY2VfcmVwcm9ncmFtIDwtX19yZW0KKworTm90aWNlIHRoYXQgd2UgbG9zdCB0aGUgc3lzX25hbm9zbGVlcC4KKworICMgY2F0IHNldF9mdHJhY2VfZmlsdGVyCitocnRpbWVyX3J1bl9xdWV1ZXMKK2hydGltZXJfcnVuX3BlbmRpbmcKK2hydGltZXJfaW5pdAoraHJ0aW1lcl9jYW5jZWwKK2hydGltZXJfdHJ5X3RvX2NhbmNlbAoraHJ0aW1lcl9mb3J3YXJkCitocnRpbWVyX3N0YXJ0CitocnRpbWVyX3JlcHJvZ3JhbQoraHJ0aW1lcl9mb3JjZV9yZXByb2dyYW0KK2hydGltZXJfZ2V0X25leHRfZXZlbnQKK2hydGltZXJfaW50ZXJydXB0CitocnRpbWVyX25hbm9zbGVlcAoraHJ0aW1lcl93YWtldXAKK2hydGltZXJfZ2V0X3JlbWFpbmluZworaHJ0aW1lcl9nZXRfcmVzCitocnRpbWVyX2luaXRfc2xlZXBlcgorCisKK1RoaXMgaXMgYmVjYXVzZSB0aGUgJz4nIGFuZCAnPj4nIGFjdCBqdXN0IGxpa2UgdGhleSBkbyBpbiBiYXNoLgorVG8gcmV3cml0ZSB0aGUgZmlsdGVycywgdXNlICc+JworVG8gYXBwZW5kIHRvIHRoZSBmaWx0ZXJzLCB1c2UgJz4+JworCitUbyBjbGVhciBvdXQgYSBmaWx0ZXIgc28gdGhhdCBhbGwgZnVuY3Rpb25zIHdpbGwgYmUgcmVjb3JkZWQKK2FnYWluOgorCisgIyBlY2hvID4gc2V0X2Z0cmFjZV9maWx0ZXIKKyAjIGNhdCBzZXRfZnRyYWNlX2ZpbHRlcgorICMKKworQWdhaW4sIG5vdyB3ZSB3YW50IHRvIGFwcGVuZC4KKworICMgZWNobyBzeXNfbmFub3NsZWVwID4gc2V0X2Z0cmFjZV9maWx0ZXIKKyAjIGNhdCBzZXRfZnRyYWNlX2ZpbHRlcgorc3lzX25hbm9zbGVlcAorICMgZWNobyAnaHJ0aW1lcl8qJyA+PiBzZXRfZnRyYWNlX2ZpbHRlcgorICMgY2F0IHNldF9mdHJhY2VfZmlsdGVyCitocnRpbWVyX3J1bl9xdWV1ZXMKK2hydGltZXJfcnVuX3BlbmRpbmcKK2hydGltZXJfaW5pdAoraHJ0aW1lcl9jYW5jZWwKK2hydGltZXJfdHJ5X3RvX2NhbmNlbAoraHJ0aW1lcl9mb3J3YXJkCitocnRpbWVyX3N0YXJ0CitocnRpbWVyX3JlcHJvZ3JhbQoraHJ0aW1lcl9mb3JjZV9yZXByb2dyYW0KK2hydGltZXJfZ2V0X25leHRfZXZlbnQKK2hydGltZXJfaW50ZXJydXB0CitzeXNfbmFub3NsZWVwCitocnRpbWVyX25hbm9zbGVlcAoraHJ0aW1lcl93YWtldXAKK2hydGltZXJfZ2V0X3JlbWFpbmluZworaHJ0aW1lcl9nZXRfcmVzCitocnRpbWVyX2luaXRfc2xlZXBlcgorCisKK1RoZSBzZXRfZnRyYWNlX25vdHJhY2UgcHJldmVudHMgdGhvc2UgZnVuY3Rpb25zIGZyb20gYmVpbmcKK3RyYWNlZC4KKworICMgZWNobyAnKnByZWVtcHQqJyAnKmxvY2sqJyA+IHNldF9mdHJhY2Vfbm90cmFjZQorCitQcm9kdWNlczoKKworIyB0cmFjZXI6IGZ1bmN0aW9uCisjCisjIGVudHJpZXMtaW4tYnVmZmVyL2VudHJpZXMtd3JpdHRlbjogMzk2MDgvMzk2MDggICAjUDo0CisjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXy0tLS0tPT4gaXJxcy1vZmYKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gXy0tLS09PiBuZWVkLXJlc2NoZWQKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAvIF8tLS09PiBoYXJkaXJxL3NvZnRpcnEKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgLyBfLS09PiBwcmVlbXB0LWRlcHRoCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8fCAvICAgICBkZWxheQorIyAgICAgICAgICAgVEFTSy1QSUQgICBDUFUjICB8fHx8ICAgIFRJTUVTVEFNUCAgRlVOQ1RJT04KKyMgICAgICAgICAgICAgIHwgfCAgICAgICB8ICAgfHx8fCAgICAgICB8ICAgICAgICAgfAorICAgICAgICAgICAgYmFzaC0xOTk0ICBbMDAwXSAuLi4uICA0MzQyLjMyNDg5NjogZmlsZV9yYV9zdGF0ZV9pbml0IDwtZG9fZGVudHJ5X29wZW4KKyAgICAgICAgICAgIGJhc2gtMTk5NCAgWzAwMF0gLi4uLiAgNDM0Mi4zMjQ4OTc6IG9wZW5fY2hlY2tfb19kaXJlY3QgPC1kb19sYXN0CisgICAgICAgICAgICBiYXNoLTE5OTQgIFswMDBdIC4uLi4gIDQzNDIuMzI0ODk3OiBpbWFfZmlsZV9jaGVjayA8LWRvX2xhc3QKKyAgICAgICAgICAgIGJhc2gtMTk5NCAgWzAwMF0gLi4uLiAgNDM0Mi4zMjQ4OTg6IHByb2Nlc3NfbWVhc3VyZW1lbnQgPC1pbWFfZmlsZV9jaGVjaworICAgICAgICAgICAgYmFzaC0xOTk0ICBbMDAwXSAuLi4uICA0MzQyLjMyNDg5ODogaW1hX2dldF9hY3Rpb24gPC1wcm9jZXNzX21lYXN1cmVtZW50CisgICAgICAgICAgICBiYXNoLTE5OTQgIFswMDBdIC4uLi4gIDQzNDIuMzI0ODk4OiBpbWFfbWF0Y2hfcG9saWN5IDwtaW1hX2dldF9hY3Rpb24KKyAgICAgICAgICAgIGJhc2gtMTk5NCAgWzAwMF0gLi4uLiAgNDM0Mi4zMjQ4OTk6IGRvX3RydW5jYXRlIDwtZG9fbGFzdAorICAgICAgICAgICAgYmFzaC0xOTk0ICBbMDAwXSAuLi4uICA0MzQyLjMyNDg5OTogc2hvdWxkX3JlbW92ZV9zdWlkIDwtZG9fdHJ1bmNhdGUKKyAgICAgICAgICAgIGJhc2gtMTk5NCAgWzAwMF0gLi4uLiAgNDM0Mi4zMjQ4OTk6IG5vdGlmeV9jaGFuZ2UgPC1kb190cnVuY2F0ZQorICAgICAgICAgICAgYmFzaC0xOTk0ICBbMDAwXSAuLi4uICA0MzQyLjMyNDkwMDogY3VycmVudF9mc190aW1lIDwtbm90aWZ5X2NoYW5nZQorICAgICAgICAgICAgYmFzaC0xOTk0ICBbMDAwXSAuLi4uICA0MzQyLjMyNDkwMDogY3VycmVudF9rZXJuZWxfdGltZSA8LWN1cnJlbnRfZnNfdGltZQorICAgICAgICAgICAgYmFzaC0xOTk0ICBbMDAwXSAuLi4uICA0MzQyLjMyNDkwMDogdGltZXNwZWNfdHJ1bmMgPC1jdXJyZW50X2ZzX3RpbWUKKworV2UgY2FuIHNlZSB0aGF0IHRoZXJlJ3Mgbm8gbW9yZSBsb2NrIG9yIHByZWVtcHQgdHJhY2luZy4KKworCitEeW5hbWljIGZ0cmFjZSB3aXRoIHRoZSBmdW5jdGlvbiBncmFwaCB0cmFjZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbHRob3VnaCB3aGF0IGhhcyBiZWVuIGV4cGxhaW5lZCBhYm92ZSBjb25jZXJucyBib3RoIHRoZQorZnVuY3Rpb24gdHJhY2VyIGFuZCB0aGUgZnVuY3Rpb24tZ3JhcGgtdHJhY2VyLCB0aGVyZSBhcmUgc29tZQorc3BlY2lhbCBmZWF0dXJlcyBvbmx5IGF2YWlsYWJsZSBpbiB0aGUgZnVuY3Rpb24tZ3JhcGggdHJhY2VyLgorCitJZiB5b3Ugd2FudCB0byB0cmFjZSBvbmx5IG9uZSBmdW5jdGlvbiBhbmQgYWxsIG9mIGl0cyBjaGlsZHJlbiwKK3lvdSBqdXN0IGhhdmUgdG8gZWNobyBpdHMgbmFtZSBpbnRvIHNldF9ncmFwaF9mdW5jdGlvbjoKKworIGVjaG8gX19kb19mYXVsdCA+IHNldF9ncmFwaF9mdW5jdGlvbgorCit3aWxsIHByb2R1Y2UgdGhlIGZvbGxvd2luZyAiZXhwYW5kZWQiIHRyYWNlIG9mIHRoZSBfX2RvX2ZhdWx0KCkKK2Z1bmN0aW9uOgorCisgMCkgICAgICAgICAgICAgICB8ICBfX2RvX2ZhdWx0KCkgeworIDApICAgICAgICAgICAgICAgfCAgICBmaWxlbWFwX2ZhdWx0KCkgeworIDApICAgICAgICAgICAgICAgfCAgICAgIGZpbmRfbG9ja19wYWdlKCkgeworIDApICAgMC44MDQgdXMgICAgfCAgICAgICAgZmluZF9nZXRfcGFnZSgpOworIDApICAgICAgICAgICAgICAgfCAgICAgICAgX19taWdodF9zbGVlcCgpIHsKKyAwKSAgIDEuMzI5IHVzICAgIHwgICAgICAgIH0KKyAwKSAgIDMuOTA0IHVzICAgIHwgICAgICB9CisgMCkgICA0Ljk3OSB1cyAgICB8ICAgIH0KKyAwKSAgIDAuNjUzIHVzICAgIHwgICAgX3NwaW5fbG9jaygpOworIDApICAgMC41NzggdXMgICAgfCAgICBwYWdlX2FkZF9maWxlX3JtYXAoKTsKKyAwKSAgIDAuNTI1IHVzICAgIHwgICAgbmF0aXZlX3NldF9wdGVfYXQoKTsKKyAwKSAgIDAuNTg1IHVzICAgIHwgICAgX3NwaW5fdW5sb2NrKCk7CisgMCkgICAgICAgICAgICAgICB8ICAgIHVubG9ja19wYWdlKCkgeworIDApICAgMC41NDEgdXMgICAgfCAgICAgIHBhZ2Vfd2FpdHF1ZXVlKCk7CisgMCkgICAwLjYzOSB1cyAgICB8ICAgICAgX193YWtlX3VwX2JpdCgpOworIDApICAgMi43ODYgdXMgICAgfCAgICB9CisgMCkgKyAxNC4yMzcgdXMgICB8ICB9CisgMCkgICAgICAgICAgICAgICB8ICBfX2RvX2ZhdWx0KCkgeworIDApICAgICAgICAgICAgICAgfCAgICBmaWxlbWFwX2ZhdWx0KCkgeworIDApICAgICAgICAgICAgICAgfCAgICAgIGZpbmRfbG9ja19wYWdlKCkgeworIDApICAgMC42OTggdXMgICAgfCAgICAgICAgZmluZF9nZXRfcGFnZSgpOworIDApICAgICAgICAgICAgICAgfCAgICAgICAgX19taWdodF9zbGVlcCgpIHsKKyAwKSAgIDEuNDEyIHVzICAgIHwgICAgICAgIH0KKyAwKSAgIDMuOTUwIHVzICAgIHwgICAgICB9CisgMCkgICA1LjA5OCB1cyAgICB8ICAgIH0KKyAwKSAgIDAuNjMxIHVzICAgIHwgICAgX3NwaW5fbG9jaygpOworIDApICAgMC41NzEgdXMgICAgfCAgICBwYWdlX2FkZF9maWxlX3JtYXAoKTsKKyAwKSAgIDAuNTI2IHVzICAgIHwgICAgbmF0aXZlX3NldF9wdGVfYXQoKTsKKyAwKSAgIDAuNTg2IHVzICAgIHwgICAgX3NwaW5fdW5sb2NrKCk7CisgMCkgICAgICAgICAgICAgICB8ICAgIHVubG9ja19wYWdlKCkgeworIDApICAgMC41MzMgdXMgICAgfCAgICAgIHBhZ2Vfd2FpdHF1ZXVlKCk7CisgMCkgICAwLjYzOCB1cyAgICB8ICAgICAgX193YWtlX3VwX2JpdCgpOworIDApICAgMi43OTMgdXMgICAgfCAgICB9CisgMCkgKyAxNC4wMTIgdXMgICB8ICB9CisKK1lvdSBjYW4gYWxzbyBleHBhbmQgc2V2ZXJhbCBmdW5jdGlvbnMgYXQgb25jZToKKworIGVjaG8gc3lzX29wZW4gPiBzZXRfZ3JhcGhfZnVuY3Rpb24KKyBlY2hvIHN5c19jbG9zZSA+PiBzZXRfZ3JhcGhfZnVuY3Rpb24KKworTm93IGlmIHlvdSB3YW50IHRvIGdvIGJhY2sgdG8gdHJhY2UgYWxsIGZ1bmN0aW9ucyB5b3UgY2FuIGNsZWFyCit0aGlzIHNwZWNpYWwgZmlsdGVyIHZpYToKKworIGVjaG8gPiBzZXRfZ3JhcGhfZnVuY3Rpb24KKworCitmdHJhY2VfZW5hYmxlZAorLS0tLS0tLS0tLS0tLS0KKworTm90ZSwgdGhlIHByb2Mgc3lzY3RsIGZ0cmFjZV9lbmFibGUgaXMgYSBiaWcgb24vb2ZmIHN3aXRjaCBmb3IgdGhlCitmdW5jdGlvbiB0cmFjZXIuIEJ5IGRlZmF1bHQgaXQgaXMgZW5hYmxlZCAod2hlbiBmdW5jdGlvbiB0cmFjaW5nIGlzCitlbmFibGVkIGluIHRoZSBrZXJuZWwpLiBJZiBpdCBpcyBkaXNhYmxlZCwgYWxsIGZ1bmN0aW9uIHRyYWNpbmcgaXMKK2Rpc2FibGVkLiBUaGlzIGluY2x1ZGVzIG5vdCBvbmx5IHRoZSBmdW5jdGlvbiB0cmFjZXJzIGZvciBmdHJhY2UsIGJ1dAorYWxzbyBmb3IgYW55IG90aGVyIHVzZXMgKHBlcmYsIGtwcm9iZXMsIHN0YWNrIHRyYWNpbmcsIHByb2ZpbGluZywgZXRjKS4KKworUGxlYXNlIGRpc2FibGUgdGhpcyB3aXRoIGNhcmUuCisKK1RoaXMgY2FuIGJlIGRpc2FibGUgKGFuZCBlbmFibGVkKSB3aXRoOgorCisgIHN5c2N0bCBrZXJuZWwuZnRyYWNlX2VuYWJsZWQ9MAorICBzeXNjdGwga2VybmVsLmZ0cmFjZV9lbmFibGVkPTEKKworIG9yCisKKyAgZWNobyAwID4gL3Byb2Mvc3lzL2tlcm5lbC9mdHJhY2VfZW5hYmxlZAorICBlY2hvIDEgPiAvcHJvYy9zeXMva2VybmVsL2Z0cmFjZV9lbmFibGVkCisKKworRmlsdGVyIGNvbW1hbmRzCistLS0tLS0tLS0tLS0tLS0KKworQSBmZXcgY29tbWFuZHMgYXJlIHN1cHBvcnRlZCBieSB0aGUgc2V0X2Z0cmFjZV9maWx0ZXIgaW50ZXJmYWNlLgorVHJhY2UgY29tbWFuZHMgaGF2ZSB0aGUgZm9sbG93aW5nIGZvcm1hdDoKKworPGZ1bmN0aW9uPjo8Y29tbWFuZD46PHBhcmFtZXRlcj4KKworVGhlIGZvbGxvd2luZyBjb21tYW5kcyBhcmUgc3VwcG9ydGVkOgorCistIG1vZAorICBUaGlzIGNvbW1hbmQgZW5hYmxlcyBmdW5jdGlvbiBmaWx0ZXJpbmcgcGVyIG1vZHVsZS4gVGhlCisgIHBhcmFtZXRlciBkZWZpbmVzIHRoZSBtb2R1bGUuIEZvciBleGFtcGxlLCBpZiBvbmx5IHRoZSB3cml0ZSoKKyAgZnVuY3Rpb25zIGluIHRoZSBleHQzIG1vZHVsZSBhcmUgZGVzaXJlZCwgcnVuOgorCisgICBlY2hvICd3cml0ZSo6bW9kOmV4dDMnID4gc2V0X2Z0cmFjZV9maWx0ZXIKKworICBUaGlzIGNvbW1hbmQgaW50ZXJhY3RzIHdpdGggdGhlIGZpbHRlciBpbiB0aGUgc2FtZSB3YXkgYXMKKyAgZmlsdGVyaW5nIGJhc2VkIG9uIGZ1bmN0aW9uIG5hbWVzLiBUaHVzLCBhZGRpbmcgbW9yZSBmdW5jdGlvbnMKKyAgaW4gYSBkaWZmZXJlbnQgbW9kdWxlIGlzIGFjY29tcGxpc2hlZCBieSBhcHBlbmRpbmcgKD4+KSB0byB0aGUKKyAgZmlsdGVyIGZpbGUuIFJlbW92ZSBzcGVjaWZpYyBtb2R1bGUgZnVuY3Rpb25zIGJ5IHByZXBlbmRpbmcKKyAgJyEnOgorCisgICBlY2hvICchd3JpdGViYWNrKjptb2Q6ZXh0MycgPj4gc2V0X2Z0cmFjZV9maWx0ZXIKKworICBNb2QgY29tbWFuZCBzdXBwb3J0cyBtb2R1bGUgZ2xvYmJpbmcuIERpc2FibGUgdHJhY2luZyBmb3IgYWxsCisgIGZ1bmN0aW9ucyBleGNlcHQgYSBzcGVjaWZpYyBtb2R1bGU6CisKKyAgIGVjaG8gJyEqOm1vZDohZXh0MycgPj4gc2V0X2Z0cmFjZV9maWx0ZXIKKworICBEaXNhYmxlIHRyYWNpbmcgZm9yIGFsbCBtb2R1bGVzLCBidXQgc3RpbGwgdHJhY2Uga2VybmVsOgorCisgICBlY2hvICchKjptb2Q6KicgPj4gc2V0X2Z0cmFjZV9maWx0ZXIKKworICBFbmFibGUgZmlsdGVyIG9ubHkgZm9yIGtlcm5lbDoKKworICAgZWNobyAnKndyaXRlKjptb2Q6ISonID4+IHNldF9mdHJhY2VfZmlsdGVyCisKKyAgRW5hYmxlIGZpbHRlciBmb3IgbW9kdWxlIGdsb2JiaW5nOgorCisgICBlY2hvICcqd3JpdGUqOm1vZDoqc25kKicgPj4gc2V0X2Z0cmFjZV9maWx0ZXIKKworLSB0cmFjZW9uL3RyYWNlb2ZmCisgIFRoZXNlIGNvbW1hbmRzIHR1cm4gdHJhY2luZyBvbiBhbmQgb2ZmIHdoZW4gdGhlIHNwZWNpZmllZAorICBmdW5jdGlvbnMgYXJlIGhpdC4gVGhlIHBhcmFtZXRlciBkZXRlcm1pbmVzIGhvdyBtYW55IHRpbWVzIHRoZQorICB0cmFjaW5nIHN5c3RlbSBpcyB0dXJuZWQgb24gYW5kIG9mZi4gSWYgdW5zcGVjaWZpZWQsIHRoZXJlIGlzCisgIG5vIGxpbWl0LiBGb3IgZXhhbXBsZSwgdG8gZGlzYWJsZSB0cmFjaW5nIHdoZW4gYSBzY2hlZHVsZSBidWcKKyAgaXMgaGl0IHRoZSBmaXJzdCA1IHRpbWVzLCBydW46CisKKyAgIGVjaG8gJ19fc2NoZWR1bGVfYnVnOnRyYWNlb2ZmOjUnID4gc2V0X2Z0cmFjZV9maWx0ZXIKKworICBUbyBhbHdheXMgZGlzYWJsZSB0cmFjaW5nIHdoZW4gX19zY2hlZHVsZV9idWcgaXMgaGl0OgorCisgICBlY2hvICdfX3NjaGVkdWxlX2J1Zzp0cmFjZW9mZicgPiBzZXRfZnRyYWNlX2ZpbHRlcgorCisgIFRoZXNlIGNvbW1hbmRzIGFyZSBjdW11bGF0aXZlIHdoZXRoZXIgb3Igbm90IHRoZXkgYXJlIGFwcGVuZGVkCisgIHRvIHNldF9mdHJhY2VfZmlsdGVyLiBUbyByZW1vdmUgYSBjb21tYW5kLCBwcmVwZW5kIGl0IGJ5ICchJworICBhbmQgZHJvcCB0aGUgcGFyYW1ldGVyOgorCisgICBlY2hvICchX19zY2hlZHVsZV9idWc6dHJhY2VvZmY6MCcgPiBzZXRfZnRyYWNlX2ZpbHRlcgorCisgICAgVGhlIGFib3ZlIHJlbW92ZXMgdGhlIHRyYWNlb2ZmIGNvbW1hbmQgZm9yIF9fc2NoZWR1bGVfYnVnCisgICAgdGhhdCBoYXZlIGEgY291bnRlci4gVG8gcmVtb3ZlIGNvbW1hbmRzIHdpdGhvdXQgY291bnRlcnM6CisKKyAgIGVjaG8gJyFfX3NjaGVkdWxlX2J1Zzp0cmFjZW9mZicgPiBzZXRfZnRyYWNlX2ZpbHRlcgorCistIHNuYXBzaG90CisgIFdpbGwgY2F1c2UgYSBzbmFwc2hvdCB0byBiZSB0cmlnZ2VyZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgaGl0LgorCisgICBlY2hvICduYXRpdmVfZmx1c2hfdGxiX290aGVyczpzbmFwc2hvdCcgPiBzZXRfZnRyYWNlX2ZpbHRlcgorCisgIFRvIG9ubHkgc25hcHNob3Qgb25jZToKKworICAgZWNobyAnbmF0aXZlX2ZsdXNoX3RsYl9vdGhlcnM6c25hcHNob3Q6MScgPiBzZXRfZnRyYWNlX2ZpbHRlcgorCisgIFRvIHJlbW92ZSB0aGUgYWJvdmUgY29tbWFuZHM6CisKKyAgIGVjaG8gJyFuYXRpdmVfZmx1c2hfdGxiX290aGVyczpzbmFwc2hvdCcgPiBzZXRfZnRyYWNlX2ZpbHRlcgorICAgZWNobyAnIW5hdGl2ZV9mbHVzaF90bGJfb3RoZXJzOnNuYXBzaG90OjAnID4gc2V0X2Z0cmFjZV9maWx0ZXIKKworLSBlbmFibGVfZXZlbnQvZGlzYWJsZV9ldmVudAorICBUaGVzZSBjb21tYW5kcyBjYW4gZW5hYmxlIG9yIGRpc2FibGUgYSB0cmFjZSBldmVudC4gTm90ZSwgYmVjYXVzZQorICBmdW5jdGlvbiB0cmFjaW5nIGNhbGxiYWNrcyBhcmUgdmVyeSBzZW5zaXRpdmUsIHdoZW4gdGhlc2UgY29tbWFuZHMKKyAgYXJlIHJlZ2lzdGVyZWQsIHRoZSB0cmFjZSBwb2ludCBpcyBhY3RpdmF0ZWQsIGJ1dCBkaXNhYmxlZCBpbgorICBhICJzb2Z0IiBtb2RlLiBUaGF0IGlzLCB0aGUgdHJhY2Vwb2ludCB3aWxsIGJlIGNhbGxlZCwgYnV0CisgIGp1c3Qgd2lsbCBub3QgYmUgdHJhY2VkLiBUaGUgZXZlbnQgdHJhY2Vwb2ludCBzdGF5cyBpbiB0aGlzIG1vZGUKKyAgYXMgbG9uZyBhcyB0aGVyZSdzIGEgY29tbWFuZCB0aGF0IHRyaWdnZXJzIGl0LgorCisgICBlY2hvICd0cnlfdG9fd2FrZV91cDplbmFibGVfZXZlbnQ6c2NoZWQ6c2NoZWRfc3dpdGNoOjInID4gXAorICAgCSBzZXRfZnRyYWNlX2ZpbHRlcgorCisgIFRoZSBmb3JtYXQgaXM6CisKKyAgICA8ZnVuY3Rpb24+OmVuYWJsZV9ldmVudDo8c3lzdGVtPjo8ZXZlbnQ+Wzpjb3VudF0KKyAgICA8ZnVuY3Rpb24+OmRpc2FibGVfZXZlbnQ6PHN5c3RlbT46PGV2ZW50Pls6Y291bnRdCisKKyAgVG8gcmVtb3ZlIHRoZSBldmVudHMgY29tbWFuZHM6CisKKworICAgZWNobyAnIXRyeV90b193YWtlX3VwOmVuYWJsZV9ldmVudDpzY2hlZDpzY2hlZF9zd2l0Y2g6MCcgPiBcCisgICAJIHNldF9mdHJhY2VfZmlsdGVyCisgICBlY2hvICchc2NoZWR1bGU6ZGlzYWJsZV9ldmVudDpzY2hlZDpzY2hlZF9zd2l0Y2gnID4gXAorICAgCSBzZXRfZnRyYWNlX2ZpbHRlcgorCistIGR1bXAKKyAgV2hlbiB0aGUgZnVuY3Rpb24gaXMgaGl0LCBpdCB3aWxsIGR1bXAgdGhlIGNvbnRlbnRzIG9mIHRoZSBmdHJhY2UKKyAgcmluZyBidWZmZXIgdG8gdGhlIGNvbnNvbGUuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBuZWVkIHRvIGRlYnVnCisgIHNvbWV0aGluZywgYW5kIHdhbnQgdG8gZHVtcCB0aGUgdHJhY2Ugd2hlbiBhIGNlcnRhaW4gZnVuY3Rpb24KKyAgaXMgaGl0LiBQZXJoYXBzIGl0cyBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIGJlZm9yZSBhIHRyaXBwbGUKKyAgZmF1bHQgaGFwcGVucyBhbmQgZG9lcyBub3QgYWxsb3cgeW91IHRvIGdldCBhIHJlZ3VsYXIgZHVtcC4KKworLSBjcHVkdW1wCisgIFdoZW4gdGhlIGZ1bmN0aW9uIGlzIGhpdCwgaXQgd2lsbCBkdW1wIHRoZSBjb250ZW50cyBvZiB0aGUgZnRyYWNlCisgIHJpbmcgYnVmZmVyIGZvciB0aGUgY3VycmVudCBDUFUgdG8gdGhlIGNvbnNvbGUuIFVubGlrZSB0aGUgImR1bXAiCisgIGNvbW1hbmQsIGl0IG9ubHkgcHJpbnRzIG91dCB0aGUgY29udGVudHMgb2YgdGhlIHJpbmcgYnVmZmVyIGZvciB0aGUKKyAgQ1BVIHRoYXQgZXhlY3V0ZWQgdGhlIGZ1bmN0aW9uIHRoYXQgdHJpZ2dlcmVkIHRoZSBkdW1wLgorCit0cmFjZV9waXBlCistLS0tLS0tLS0tCisKK1RoZSB0cmFjZV9waXBlIG91dHB1dHMgdGhlIHNhbWUgY29udGVudCBhcyB0aGUgdHJhY2UgZmlsZSwgYnV0Cit0aGUgZWZmZWN0IG9uIHRoZSB0cmFjaW5nIGlzIGRpZmZlcmVudC4gRXZlcnkgcmVhZCBmcm9tCit0cmFjZV9waXBlIGlzIGNvbnN1bWVkLiBUaGlzIG1lYW5zIHRoYXQgc3Vic2VxdWVudCByZWFkcyB3aWxsIGJlCitkaWZmZXJlbnQuIFRoZSB0cmFjZSBpcyBsaXZlLgorCisgIyBlY2hvIGZ1bmN0aW9uID4gY3VycmVudF90cmFjZXIKKyAjIGNhdCB0cmFjZV9waXBlID4gL3RtcC90cmFjZS5vdXQgJgorWzFdIDQxNTMKKyAjIGVjaG8gMSA+IHRyYWNpbmdfb24KKyAjIHVzbGVlcCAxCisgIyBlY2hvIDAgPiB0cmFjaW5nX29uCisgIyBjYXQgdHJhY2UKKyMgdHJhY2VyOiBmdW5jdGlvbgorIworIyBlbnRyaWVzLWluLWJ1ZmZlci9lbnRyaWVzLXdyaXR0ZW46IDAvMCAgICNQOjQKKyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLS0tLS09PiBpcnFzLW9mZgorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfLS0tLT0+IG5lZWQtcmVzY2hlZAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IC8gXy0tLT0+IGhhcmRpcnEvc29mdGlycQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAvIF8tLT0+IHByZWVtcHQtZGVwdGgKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHx8IC8gICAgIGRlbGF5CisjICAgICAgICAgICBUQVNLLVBJRCAgIENQVSMgIHx8fHwgICAgVElNRVNUQU1QICBGVU5DVElPTgorIyAgICAgICAgICAgICAgfCB8ICAgICAgIHwgICB8fHx8ICAgICAgIHwgICAgICAgICB8CisKKyAjCisgIyBjYXQgL3RtcC90cmFjZS5vdXQKKyAgICAgICAgICAgIGJhc2gtMTk5NCAgWzAwMF0gLi4uLiAgNTI4MS41Njg5NjE6IG11dGV4X3VubG9jayA8LXJiX3NpbXBsZV93cml0ZQorICAgICAgICAgICAgYmFzaC0xOTk0ICBbMDAwXSAuLi4uICA1MjgxLjU2ODk2MzogX19tdXRleF91bmxvY2tfc2xvd3BhdGggPC1tdXRleF91bmxvY2sKKyAgICAgICAgICAgIGJhc2gtMTk5NCAgWzAwMF0gLi4uLiAgNTI4MS41Njg5NjM6IF9fZnNub3RpZnlfcGFyZW50IDwtZnNub3RpZnlfbW9kaWZ5CisgICAgICAgICAgICBiYXNoLTE5OTQgIFswMDBdIC4uLi4gIDUyODEuNTY4OTY0OiBmc25vdGlmeSA8LWZzbm90aWZ5X21vZGlmeQorICAgICAgICAgICAgYmFzaC0xOTk0ICBbMDAwXSAuLi4uICA1MjgxLjU2ODk2NDogX19zcmN1X3JlYWRfbG9jayA8LWZzbm90aWZ5CisgICAgICAgICAgICBiYXNoLTE5OTQgIFswMDBdIC4uLi4gIDUyODEuNTY4OTY0OiBhZGRfcHJlZW1wdF9jb3VudCA8LV9fc3JjdV9yZWFkX2xvY2sKKyAgICAgICAgICAgIGJhc2gtMTk5NCAgWzAwMF0gLi4uMSAgNTI4MS41Njg5NjU6IHN1Yl9wcmVlbXB0X2NvdW50IDwtX19zcmN1X3JlYWRfbG9jaworICAgICAgICAgICAgYmFzaC0xOTk0ICBbMDAwXSAuLi4uICA1MjgxLjU2ODk2NTogX19zcmN1X3JlYWRfdW5sb2NrIDwtZnNub3RpZnkKKyAgICAgICAgICAgIGJhc2gtMTk5NCAgWzAwMF0gLi4uLiAgNTI4MS41Njg5Njc6IHN5c19kdXAyIDwtc3lzdGVtX2NhbGxfZmFzdHBhdGgKKworCitOb3RlLCByZWFkaW5nIHRoZSB0cmFjZV9waXBlIGZpbGUgd2lsbCBibG9jayB1bnRpbCBtb3JlIGlucHV0IGlzCithZGRlZC4KKwordHJhY2UgZW50cmllcworLS0tLS0tLS0tLS0tLQorCitIYXZpbmcgdG9vIG11Y2ggb3Igbm90IGVub3VnaCBkYXRhIGNhbiBiZSB0cm91Ymxlc29tZSBpbgorZGlhZ25vc2luZyBhbiBpc3N1ZSBpbiB0aGUga2VybmVsLiBUaGUgZmlsZSBidWZmZXJfc2l6ZV9rYiBpcwordXNlZCB0byBtb2RpZnkgdGhlIHNpemUgb2YgdGhlIGludGVybmFsIHRyYWNlIGJ1ZmZlcnMuIFRoZQorbnVtYmVyIGxpc3RlZCBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgdGhhdCBjYW4gYmUgcmVjb3JkZWQgcGVyCitDUFUuIFRvIGtub3cgdGhlIGZ1bGwgc2l6ZSwgbXVsdGlwbHkgdGhlIG51bWJlciBvZiBwb3NzaWJsZSBDUFVzCit3aXRoIHRoZSBudW1iZXIgb2YgZW50cmllcy4KKworICMgY2F0IGJ1ZmZlcl9zaXplX2tiCisxNDA4ICh1bml0cyBraWxvYnl0ZXMpCisKK09yIHNpbXBseSByZWFkIGJ1ZmZlcl90b3RhbF9zaXplX2tiCisKKyAjIGNhdCBidWZmZXJfdG90YWxfc2l6ZV9rYiAKKzU2MzIKKworVG8gbW9kaWZ5IHRoZSBidWZmZXIsIHNpbXBsZSBlY2hvIGluIGEgbnVtYmVyIChpbiAxMDI0IGJ5dGUgc2VnbWVudHMpLgorCisgIyBlY2hvIDEwMDAwID4gYnVmZmVyX3NpemVfa2IKKyAjIGNhdCBidWZmZXJfc2l6ZV9rYgorMTAwMDAgKHVuaXRzIGtpbG9ieXRlcykKKworSXQgd2lsbCB0cnkgdG8gYWxsb2NhdGUgYXMgbXVjaCBhcyBwb3NzaWJsZS4gSWYgeW91IGFsbG9jYXRlIHRvbworbXVjaCwgaXQgY2FuIGNhdXNlIE91dC1PZi1NZW1vcnkgdG8gdHJpZ2dlci4KKworICMgZWNobyAxMDAwMDAwMDAwMDAwID4gYnVmZmVyX3NpemVfa2IKKy1iYXNoOiBlY2hvOiB3cml0ZSBlcnJvcjogQ2Fubm90IGFsbG9jYXRlIG1lbW9yeQorICMgY2F0IGJ1ZmZlcl9zaXplX2tiCis4NQorCitUaGUgcGVyX2NwdSBidWZmZXJzIGNhbiBiZSBjaGFuZ2VkIGluZGl2aWR1YWxseSBhcyB3ZWxsOgorCisgIyBlY2hvIDEwMDAwID4gcGVyX2NwdS9jcHUwL2J1ZmZlcl9zaXplX2tiCisgIyBlY2hvIDEwMCA+IHBlcl9jcHUvY3B1MS9idWZmZXJfc2l6ZV9rYgorCitXaGVuIHRoZSBwZXJfY3B1IGJ1ZmZlcnMgYXJlIG5vdCB0aGUgc2FtZSwgdGhlIGJ1ZmZlcl9zaXplX2tiCithdCB0aGUgdG9wIGxldmVsIHdpbGwganVzdCBzaG93IGFuIFgKKworICMgY2F0IGJ1ZmZlcl9zaXplX2tiCitYCisKK1RoaXMgaXMgd2hlcmUgdGhlIGJ1ZmZlcl90b3RhbF9zaXplX2tiIGlzIHVzZWZ1bDoKKworICMgY2F0IGJ1ZmZlcl90b3RhbF9zaXplX2tiIAorMTI5MTYKKworV3JpdGluZyB0byB0aGUgdG9wIGxldmVsIGJ1ZmZlcl9zaXplX2tiIHdpbGwgcmVzZXQgYWxsIHRoZSBidWZmZXJzCit0byBiZSB0aGUgc2FtZSBhZ2Fpbi4KKworU25hcHNob3QKKy0tLS0tLS0tCitDT05GSUdfVFJBQ0VSX1NOQVBTSE9UIG1ha2VzIGEgZ2VuZXJpYyBzbmFwc2hvdCBmZWF0dXJlCithdmFpbGFibGUgdG8gYWxsIG5vbiBsYXRlbmN5IHRyYWNlcnMuIChMYXRlbmN5IHRyYWNlcnMgd2hpY2gKK3JlY29yZCBtYXggbGF0ZW5jeSwgc3VjaCBhcyAiaXJxc29mZiIgb3IgIndha2V1cCIsIGNhbid0IHVzZQordGhpcyBmZWF0dXJlLCBzaW5jZSB0aG9zZSBhcmUgYWxyZWFkeSB1c2luZyB0aGUgc25hcHNob3QKK21lY2hhbmlzbSBpbnRlcm5hbGx5LikKKworU25hcHNob3QgcHJlc2VydmVzIGEgY3VycmVudCB0cmFjZSBidWZmZXIgYXQgYSBwYXJ0aWN1bGFyIHBvaW50CitpbiB0aW1lIHdpdGhvdXQgc3RvcHBpbmcgdHJhY2luZy4gRnRyYWNlIHN3YXBzIHRoZSBjdXJyZW50CitidWZmZXIgd2l0aCBhIHNwYXJlIGJ1ZmZlciwgYW5kIHRyYWNpbmcgY29udGludWVzIGluIHRoZSBuZXcKK2N1cnJlbnQgKD1wcmV2aW91cyBzcGFyZSkgYnVmZmVyLgorCitUaGUgZm9sbG93aW5nIGRlYnVnZnMgZmlsZXMgaW4gInRyYWNpbmciIGFyZSByZWxhdGVkIHRvIHRoaXMKK2ZlYXR1cmU6CisKKyAgc25hcHNob3Q6CisKKwlUaGlzIGlzIHVzZWQgdG8gdGFrZSBhIHNuYXBzaG90IGFuZCB0byByZWFkIHRoZSBvdXRwdXQKKwlvZiB0aGUgc25hcHNob3QuIEVjaG8gMSBpbnRvIHRoaXMgZmlsZSB0byBhbGxvY2F0ZSBhCisJc3BhcmUgYnVmZmVyIGFuZCB0byB0YWtlIGEgc25hcHNob3QgKHN3YXApLCB0aGVuIHJlYWQKKwl0aGUgc25hcHNob3QgZnJvbSB0aGlzIGZpbGUgaW4gdGhlIHNhbWUgZm9ybWF0IGFzCisJInRyYWNlIiAoZGVzY3JpYmVkIGFib3ZlIGluIHRoZSBzZWN0aW9uICJUaGUgRmlsZQorCVN5c3RlbSIpLiBCb3RoIHJlYWRzIHNuYXBzaG90IGFuZCB0cmFjaW5nIGFyZSBleGVjdXRhYmxlCisJaW4gcGFyYWxsZWwuIFdoZW4gdGhlIHNwYXJlIGJ1ZmZlciBpcyBhbGxvY2F0ZWQsIGVjaG9pbmcKKwkwIGZyZWVzIGl0LCBhbmQgZWNob2luZyBlbHNlIChwb3NpdGl2ZSkgdmFsdWVzIGNsZWFyIHRoZQorCXNuYXBzaG90IGNvbnRlbnRzLgorCU1vcmUgZGV0YWlscyBhcmUgc2hvd24gaW4gdGhlIHRhYmxlIGJlbG93LgorCisJc3RhdHVzXGlucHV0ICB8ICAgICAwICAgICAgfCAgICAgMSAgICAgIHwgICAgZWxzZSAgICB8CisJLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCisJbm90IGFsbG9jYXRlZCB8KGRvIG5vdGhpbmcpfCBhbGxvYytzd2FwIHwoZG8gbm90aGluZyl8CisJLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCisJYWxsb2NhdGVkICAgICB8ICAgIGZyZWUgICAgfCAgICBzd2FwICAgIHwgICBjbGVhciAgICB8CisJLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCisKK0hlcmUgaXMgYW4gZXhhbXBsZSBvZiB1c2luZyB0aGUgc25hcHNob3QgZmVhdHVyZS4KKworICMgZWNobyAxID4gZXZlbnRzL3NjaGVkL2VuYWJsZQorICMgZWNobyAxID4gc25hcHNob3QKKyAjIGNhdCBzbmFwc2hvdAorIyB0cmFjZXI6IG5vcAorIworIyBlbnRyaWVzLWluLWJ1ZmZlci9lbnRyaWVzLXdyaXR0ZW46IDcxLzcxICAgI1A6OAorIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8tLS0tLT0+IGlycXMtb2ZmCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF8tLS0tPT4gbmVlZC1yZXNjaGVkCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgLyBfLS0tPT4gaGFyZGlycS9zb2Z0aXJxCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IC8gXy0tPT4gcHJlZW1wdC1kZXB0aAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fHwgLyAgICAgZGVsYXkKKyMgICAgICAgICAgIFRBU0stUElEICAgQ1BVIyAgfHx8fCAgICBUSU1FU1RBTVAgIEZVTkNUSU9OCisjICAgICAgICAgICAgICB8IHwgICAgICAgfCAgIHx8fHwgICAgICAgfCAgICAgICAgIHwKKyAgICAgICAgICA8aWRsZT4tMCAgICAgWzAwNV0gZC4uLiAgMjQ0MC42MDM4Mjg6IHNjaGVkX3N3aXRjaDogcHJldl9jb21tPXN3YXBwZXIvNSBwcmV2X3BpZD0wIHByZXZfcHJpbz0xMjAgcHJldl9zdGF0ZT1SID09PiBuZXh0X2NvbW09c25hcHNob3QtdGVzdC0yIG5leHRfcGlkPTIyNDIgbmV4dF9wcmlvPTEyMAorICAgICAgICAgICBzbGVlcC0yMjQyICBbMDA1XSBkLi4uICAyNDQwLjYwMzg0Njogc2NoZWRfc3dpdGNoOiBwcmV2X2NvbW09c25hcHNob3QtdGVzdC0yIHByZXZfcGlkPTIyNDIgcHJldl9wcmlvPTEyMCBwcmV2X3N0YXRlPVIgPT0+IG5leHRfY29tbT1rd29ya2VyLzU6MSBuZXh0X3BpZD02MCBuZXh0X3ByaW89MTIwCitbLi4uXQorICAgICAgICAgIDxpZGxlPi0wICAgICBbMDAyXSBkLi4uICAyNDQwLjcwNzIzMDogc2NoZWRfc3dpdGNoOiBwcmV2X2NvbW09c3dhcHBlci8yIHByZXZfcGlkPTAgcHJldl9wcmlvPTEyMCBwcmV2X3N0YXRlPVIgPT0+IG5leHRfY29tbT1zbmFwc2hvdC10ZXN0LTIgbmV4dF9waWQ9MjIyOSBuZXh0X3ByaW89MTIwCisKKyAjIGNhdCB0cmFjZQorIyB0cmFjZXI6IG5vcAorIworIyBlbnRyaWVzLWluLWJ1ZmZlci9lbnRyaWVzLXdyaXR0ZW46IDc3Lzc3ICAgI1A6OAorIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8tLS0tLT0+IGlycXMtb2ZmCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF8tLS0tPT4gbmVlZC1yZXNjaGVkCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgLyBfLS0tPT4gaGFyZGlycS9zb2Z0aXJxCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IC8gXy0tPT4gcHJlZW1wdC1kZXB0aAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fHwgLyAgICAgZGVsYXkKKyMgICAgICAgICAgIFRBU0stUElEICAgQ1BVIyAgfHx8fCAgICBUSU1FU1RBTVAgIEZVTkNUSU9OCisjICAgICAgICAgICAgICB8IHwgICAgICAgfCAgIHx8fHwgICAgICAgfCAgICAgICAgIHwKKyAgICAgICAgICA8aWRsZT4tMCAgICAgWzAwN10gZC4uLiAgMjQ0MC43MDczOTU6IHNjaGVkX3N3aXRjaDogcHJldl9jb21tPXN3YXBwZXIvNyBwcmV2X3BpZD0wIHByZXZfcHJpbz0xMjAgcHJldl9zdGF0ZT1SID09PiBuZXh0X2NvbW09c25hcHNob3QtdGVzdC0yIG5leHRfcGlkPTIyNDMgbmV4dF9wcmlvPTEyMAorIHNuYXBzaG90LXRlc3QtMi0yMjI5ICBbMDAyXSBkLi4uICAyNDQwLjcwNzQzODogc2NoZWRfc3dpdGNoOiBwcmV2X2NvbW09c25hcHNob3QtdGVzdC0yIHByZXZfcGlkPTIyMjkgcHJldl9wcmlvPTEyMCBwcmV2X3N0YXRlPVMgPT0+IG5leHRfY29tbT1zd2FwcGVyLzIgbmV4dF9waWQ9MCBuZXh0X3ByaW89MTIwCitbLi4uXQorCisKK0lmIHlvdSB0cnkgdG8gdXNlIHRoaXMgc25hcHNob3QgZmVhdHVyZSB3aGVuIGN1cnJlbnQgdHJhY2VyIGlzCitvbmUgb2YgdGhlIGxhdGVuY3kgdHJhY2VycywgeW91IHdpbGwgZ2V0IHRoZSBmb2xsb3dpbmcgcmVzdWx0cy4KKworICMgZWNobyB3YWtldXAgPiBjdXJyZW50X3RyYWNlcgorICMgZWNobyAxID4gc25hcHNob3QKK2Jhc2g6IGVjaG86IHdyaXRlIGVycm9yOiBEZXZpY2Ugb3IgcmVzb3VyY2UgYnVzeQorICMgY2F0IHNuYXBzaG90CitjYXQ6IHNuYXBzaG90OiBEZXZpY2Ugb3IgcmVzb3VyY2UgYnVzeQorCisKK0luc3RhbmNlcworLS0tLS0tLS0tCitJbiB0aGUgZGVidWdmcyB0cmFjaW5nIGRpcmVjdG9yeSBpcyBhIGRpcmVjdG9yeSBjYWxsZWQgImluc3RhbmNlcyIuCitUaGlzIGRpcmVjdG9yeSBjYW4gaGF2ZSBuZXcgZGlyZWN0b3JpZXMgY3JlYXRlZCBpbnNpZGUgb2YgaXQgdXNpbmcKK21rZGlyLCBhbmQgcmVtb3ZpbmcgZGlyZWN0b3JpZXMgd2l0aCBybWRpci4gVGhlIGRpcmVjdG9yeSBjcmVhdGVkCit3aXRoIG1rZGlyIGluIHRoaXMgZGlyZWN0b3J5IHdpbGwgYWxyZWFkeSBjb250YWluIGZpbGVzIGFuZCBvdGhlcgorZGlyZWN0b3JpZXMgYWZ0ZXIgaXQgaXMgY3JlYXRlZC4KKworICMgbWtkaXIgaW5zdGFuY2VzL2ZvbworICMgbHMgaW5zdGFuY2VzL2ZvbworYnVmZmVyX3NpemVfa2IgIGJ1ZmZlcl90b3RhbF9zaXplX2tiICBldmVudHMgIGZyZWVfYnVmZmVyICBwZXJfY3B1CitzZXRfZXZlbnQgIHNuYXBzaG90ICB0cmFjZSAgdHJhY2VfY2xvY2sgIHRyYWNlX21hcmtlciAgdHJhY2Vfb3B0aW9ucwordHJhY2VfcGlwZSAgdHJhY2luZ19vbgorCitBcyB5b3UgY2FuIHNlZSwgdGhlIG5ldyBkaXJlY3RvcnkgbG9va3Mgc2ltaWxhciB0byB0aGUgdHJhY2luZyBkaXJlY3RvcnkKK2l0c2VsZi4gSW4gZmFjdCwgaXQgaXMgdmVyeSBzaW1pbGFyLCBleGNlcHQgdGhhdCB0aGUgYnVmZmVyIGFuZAorZXZlbnRzIGFyZSBhZ25vc3RpYyBmcm9tIHRoZSBtYWluIGRpcmVjdG9yLCBvciBmcm9tIGFueSBvdGhlcgoraW5zdGFuY2VzIHRoYXQgYXJlIGNyZWF0ZWQuCisKK1RoZSBmaWxlcyBpbiB0aGUgbmV3IGRpcmVjdG9yeSB3b3JrIGp1c3QgbGlrZSB0aGUgZmlsZXMgd2l0aCB0aGUKK3NhbWUgbmFtZSBpbiB0aGUgdHJhY2luZyBkaXJlY3RvcnkgZXhjZXB0IHRoZSBidWZmZXIgdGhhdCBpcyB1c2VkCitpcyBhIHNlcGFyYXRlIGFuZCBuZXcgYnVmZmVyLiBUaGUgZmlsZXMgYWZmZWN0IHRoYXQgYnVmZmVyIGJ1dCBkbyBub3QKK2FmZmVjdCB0aGUgbWFpbiBidWZmZXIgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRyYWNlX29wdGlvbnMuIEN1cnJlbnRseSwKK3RoZSB0cmFjZV9vcHRpb25zIGFmZmVjdCBhbGwgaW5zdGFuY2VzIGFuZCB0aGUgdG9wIGxldmVsIGJ1ZmZlcgordGhlIHNhbWUsIGJ1dCB0aGlzIG1heSBjaGFuZ2UgaW4gZnV0dXJlIHJlbGVhc2VzLiBUaGF0IGlzLCBvcHRpb25zCittYXkgYmVjb21lIHNwZWNpZmljIHRvIHRoZSBpbnN0YW5jZSB0aGV5IHJlc2lkZSBpbi4KKworTm90aWNlIHRoYXQgbm9uZSBvZiB0aGUgZnVuY3Rpb24gdHJhY2VyIGZpbGVzIGFyZSB0aGVyZSwgbm9yIGlzCitjdXJyZW50X3RyYWNlciBhbmQgYXZhaWxhYmxlX3RyYWNlcnMuIFRoaXMgaXMgYmVjYXVzZSB0aGUgYnVmZmVycworY2FuIGN1cnJlbnRseSBvbmx5IGhhdmUgZXZlbnRzIGVuYWJsZWQgZm9yIHRoZW0uCisKKyAjIG1rZGlyIGluc3RhbmNlcy9mb28KKyAjIG1rZGlyIGluc3RhbmNlcy9iYXIKKyAjIG1rZGlyIGluc3RhbmNlcy96b290CisgIyBlY2hvIDEwMDAwMCA+IGJ1ZmZlcl9zaXplX2tiCisgIyBlY2hvIDEwMDAgPiBpbnN0YW5jZXMvZm9vL2J1ZmZlcl9zaXplX2tiCisgIyBlY2hvIDUwMDAgPiBpbnN0YW5jZXMvYmFyL3Blcl9jcHUvY3B1MS9idWZmZXJfc2l6ZV9rYgorICMgZWNobyBmdW5jdGlvbiA+IGN1cnJlbnRfdHJhY2UKKyAjIGVjaG8gMSA+IGluc3RhbmNlcy9mb28vZXZlbnRzL3NjaGVkL3NjaGVkX3dha2V1cC9lbmFibGUKKyAjIGVjaG8gMSA+IGluc3RhbmNlcy9mb28vZXZlbnRzL3NjaGVkL3NjaGVkX3dha2V1cF9uZXcvZW5hYmxlCisgIyBlY2hvIDEgPiBpbnN0YW5jZXMvZm9vL2V2ZW50cy9zY2hlZC9zY2hlZF9zd2l0Y2gvZW5hYmxlCisgIyBlY2hvIDEgPiBpbnN0YW5jZXMvYmFyL2V2ZW50cy9pcnEvZW5hYmxlCisgIyBlY2hvIDEgPiBpbnN0YW5jZXMvem9vdC9ldmVudHMvc3lzY2FsbHMvZW5hYmxlCisgIyBjYXQgdHJhY2VfcGlwZQorQ1BVOjIgW0xPU1QgMTE3NDUgRVZFTlRTXQorICAgICAgICAgICAgYmFzaC0yMDQ0ICBbMDAyXSAuLi4uIDEwNTk0LjQ4MTAzMjogX3Jhd19zcGluX2xvY2tfaXJxc2F2ZSA8LWdldF9wYWdlX2Zyb21fZnJlZWxpc3QKKyAgICAgICAgICAgIGJhc2gtMjA0NCAgWzAwMl0gZC4uLiAxMDU5NC40ODEwMzI6IGFkZF9wcmVlbXB0X2NvdW50IDwtX3Jhd19zcGluX2xvY2tfaXJxc2F2ZQorICAgICAgICAgICAgYmFzaC0yMDQ0ICBbMDAyXSBkLi4xIDEwNTk0LjQ4MTAzMjogX19ybXF1ZXVlIDwtZ2V0X3BhZ2VfZnJvbV9mcmVlbGlzdAorICAgICAgICAgICAgYmFzaC0yMDQ0ICBbMDAyXSBkLi4xIDEwNTk0LjQ4MTAzMzogX3Jhd19zcGluX3VubG9jayA8LWdldF9wYWdlX2Zyb21fZnJlZWxpc3QKKyAgICAgICAgICAgIGJhc2gtMjA0NCAgWzAwMl0gZC4uMSAxMDU5NC40ODEwMzM6IHN1Yl9wcmVlbXB0X2NvdW50IDwtX3Jhd19zcGluX3VubG9jaworICAgICAgICAgICAgYmFzaC0yMDQ0ICBbMDAyXSBkLi4uIDEwNTk0LjQ4MTAzMzogZ2V0X3BhZ2VibG9ja19mbGFnc19ncm91cCA8LWdldF9wYWdlYmxvY2tfbWlncmF0ZXR5cGUKKyAgICAgICAgICAgIGJhc2gtMjA0NCAgWzAwMl0gZC4uLiAxMDU5NC40ODEwMzQ6IF9fbW9kX3pvbmVfcGFnZV9zdGF0ZSA8LWdldF9wYWdlX2Zyb21fZnJlZWxpc3QKKyAgICAgICAgICAgIGJhc2gtMjA0NCAgWzAwMl0gZC4uLiAxMDU5NC40ODEwMzQ6IHpvbmVfc3RhdGlzdGljcyA8LWdldF9wYWdlX2Zyb21fZnJlZWxpc3QKKyAgICAgICAgICAgIGJhc2gtMjA0NCAgWzAwMl0gZC4uLiAxMDU5NC40ODEwMzQ6IF9faW5jX3pvbmVfc3RhdGUgPC16b25lX3N0YXRpc3RpY3MKKyAgICAgICAgICAgIGJhc2gtMjA0NCAgWzAwMl0gZC4uLiAxMDU5NC40ODEwMzQ6IF9faW5jX3pvbmVfc3RhdGUgPC16b25lX3N0YXRpc3RpY3MKKyAgICAgICAgICAgIGJhc2gtMjA0NCAgWzAwMl0gLi4uLiAxMDU5NC40ODEwMzU6IGFyY2hfZHVwX3Rhc2tfc3RydWN0IDwtY29weV9wcm9jZXNzCitbLi4uXQorCisgIyBjYXQgaW5zdGFuY2VzL2Zvby90cmFjZV9waXBlCisgICAgICAgICAgICBiYXNoLTE5OTggIFswMDBdIGQuLjQgICAxMzYuNjc2NzU5OiBzY2hlZF93YWtldXA6IGNvbW09a3dvcmtlci8wOjEgcGlkPTU5IHByaW89MTIwIHN1Y2Nlc3M9MSB0YXJnZXRfY3B1PTAwMAorICAgICAgICAgICAgYmFzaC0xOTk4ICBbMDAwXSBkTi40ICAgMTM2LjY3Njc2MDogc2NoZWRfd2FrZXVwOiBjb21tPWJhc2ggcGlkPTE5OTggcHJpbz0xMjAgc3VjY2Vzcz0xIHRhcmdldF9jcHU9MDAwCisgICAgICAgICAgPGlkbGU+LTAgICAgIFswMDNdIGQuaDMgICAxMzYuNjc2OTA2OiBzY2hlZF93YWtldXA6IGNvbW09cmN1X3ByZWVtcHQgcGlkPTkgcHJpbz0xMjAgc3VjY2Vzcz0xIHRhcmdldF9jcHU9MDAzCisgICAgICAgICAgPGlkbGU+LTAgICAgIFswMDNdIGQuLjMgICAxMzYuNjc2OTA5OiBzY2hlZF9zd2l0Y2g6IHByZXZfY29tbT1zd2FwcGVyLzMgcHJldl9waWQ9MCBwcmV2X3ByaW89MTIwIHByZXZfc3RhdGU9UiA9PT4gbmV4dF9jb21tPXJjdV9wcmVlbXB0IG5leHRfcGlkPTkgbmV4dF9wcmlvPTEyMAorICAgICByY3VfcHJlZW1wdC05ICAgICBbMDAzXSBkLi4zICAgMTM2LjY3NjkxNjogc2NoZWRfc3dpdGNoOiBwcmV2X2NvbW09cmN1X3ByZWVtcHQgcHJldl9waWQ9OSBwcmV2X3ByaW89MTIwIHByZXZfc3RhdGU9UyA9PT4gbmV4dF9jb21tPXN3YXBwZXIvMyBuZXh0X3BpZD0wIG5leHRfcHJpbz0xMjAKKyAgICAgICAgICAgIGJhc2gtMTk5OCAgWzAwMF0gZC4uNCAgIDEzNi42NzcwMTQ6IHNjaGVkX3dha2V1cDogY29tbT1rd29ya2VyLzA6MSBwaWQ9NTkgcHJpbz0xMjAgc3VjY2Vzcz0xIHRhcmdldF9jcHU9MDAwCisgICAgICAgICAgICBiYXNoLTE5OTggIFswMDBdIGROLjQgICAxMzYuNjc3MDE2OiBzY2hlZF93YWtldXA6IGNvbW09YmFzaCBwaWQ9MTk5OCBwcmlvPTEyMCBzdWNjZXNzPTEgdGFyZ2V0X2NwdT0wMDAKKyAgICAgICAgICAgIGJhc2gtMTk5OCAgWzAwMF0gZC4uMyAgIDEzNi42NzcwMTg6IHNjaGVkX3N3aXRjaDogcHJldl9jb21tPWJhc2ggcHJldl9waWQ9MTk5OCBwcmV2X3ByaW89MTIwIHByZXZfc3RhdGU9UisgPT0+IG5leHRfY29tbT1rd29ya2VyLzA6MSBuZXh0X3BpZD01OSBuZXh0X3ByaW89MTIwCisgICAgIGt3b3JrZXIvMDoxLTU5ICAgIFswMDBdIGQuLjQgICAxMzYuNjc3MDIyOiBzY2hlZF93YWtldXA6IGNvbW09c3NoZCBwaWQ9MTk5NSBwcmlvPTEyMCBzdWNjZXNzPTEgdGFyZ2V0X2NwdT0wMDEKKyAgICAga3dvcmtlci8wOjEtNTkgICAgWzAwMF0gZC4uMyAgIDEzNi42NzcwMjU6IHNjaGVkX3N3aXRjaDogcHJldl9jb21tPWt3b3JrZXIvMDoxIHByZXZfcGlkPTU5IHByZXZfcHJpbz0xMjAgcHJldl9zdGF0ZT1TID09PiBuZXh0X2NvbW09YmFzaCBuZXh0X3BpZD0xOTk4IG5leHRfcHJpbz0xMjAKK1suLi5dCisKKyAjIGNhdCBpbnN0YW5jZXMvYmFyL3RyYWNlX3BpcGUKKyAgICAgbWlncmF0aW9uLzEtMTQgICAgWzAwMV0gZC5oMyAgIDEzOC43MzI2NzQ6IHNvZnRpcnFfcmFpc2U6IHZlYz0zIFthY3Rpb249TkVUX1JYXQorICAgICAgICAgIDxpZGxlPi0wICAgICBbMDAxXSBkTmgzICAgMTM4LjczMjcyNTogc29mdGlycV9yYWlzZTogdmVjPTMgW2FjdGlvbj1ORVRfUlhdCisgICAgICAgICAgICBiYXNoLTE5OTggIFswMDBdIGQuaDEgICAxMzguNzMzMTAxOiBzb2Z0aXJxX3JhaXNlOiB2ZWM9MSBbYWN0aW9uPVRJTUVSXQorICAgICAgICAgICAgYmFzaC0xOTk4ICBbMDAwXSBkLmgxICAgMTM4LjczMzEwMjogc29mdGlycV9yYWlzZTogdmVjPTkgW2FjdGlvbj1SQ1VdCisgICAgICAgICAgICBiYXNoLTE5OTggIFswMDBdIC4uczIgICAxMzguNzMzMTA1OiBzb2Z0aXJxX2VudHJ5OiB2ZWM9MSBbYWN0aW9uPVRJTUVSXQorICAgICAgICAgICAgYmFzaC0xOTk4ICBbMDAwXSAuLnMyICAgMTM4LjczMzEwNjogc29mdGlycV9leGl0OiB2ZWM9MSBbYWN0aW9uPVRJTUVSXQorICAgICAgICAgICAgYmFzaC0xOTk4ICBbMDAwXSAuLnMyICAgMTM4LjczMzEwNjogc29mdGlycV9lbnRyeTogdmVjPTkgW2FjdGlvbj1SQ1VdCisgICAgICAgICAgICBiYXNoLTE5OTggIFswMDBdIC4uczIgICAxMzguNzMzMTA5OiBzb2Z0aXJxX2V4aXQ6IHZlYz05IFthY3Rpb249UkNVXQorICAgICAgICAgICAgc3NoZC0xOTk1ICBbMDAxXSBkLmgxICAgMTM4LjczMzI3ODogaXJxX2hhbmRsZXJfZW50cnk6IGlycT0yMSBuYW1lPXVoY2lfaGNkOnVzYjQKKyAgICAgICAgICAgIHNzaGQtMTk5NSAgWzAwMV0gZC5oMSAgIDEzOC43MzMyODA6IGlycV9oYW5kbGVyX2V4aXQ6IGlycT0yMSByZXQ9dW5oYW5kbGVkCisgICAgICAgICAgICBzc2hkLTE5OTUgIFswMDFdIGQuaDEgICAxMzguNzMzMjgxOiBpcnFfaGFuZGxlcl9lbnRyeTogaXJxPTIxIG5hbWU9ZXRoMAorICAgICAgICAgICAgc3NoZC0xOTk1ICBbMDAxXSBkLmgxICAgMTM4LjczMzI4MzogaXJxX2hhbmRsZXJfZXhpdDogaXJxPTIxIHJldD1oYW5kbGVkCitbLi4uXQorCisgIyBjYXQgaW5zdGFuY2VzL3pvb3QvdHJhY2UKKyMgdHJhY2VyOiBub3AKKyMKKyMgZW50cmllcy1pbi1idWZmZXIvZW50cmllcy13cml0dGVuOiAxODk5Ni8xODk5NiAgICNQOjQKKyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLS0tLS09PiBpcnFzLW9mZgorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBfLS0tLT0+IG5lZWQtcmVzY2hlZAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IC8gXy0tLT0+IGhhcmRpcnEvc29mdGlycQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAvIF8tLT0+IHByZWVtcHQtZGVwdGgKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHx8IC8gICAgIGRlbGF5CisjICAgICAgICAgICBUQVNLLVBJRCAgIENQVSMgIHx8fHwgICAgVElNRVNUQU1QICBGVU5DVElPTgorIyAgICAgICAgICAgICAgfCB8ICAgICAgIHwgICB8fHx8ICAgICAgIHwgICAgICAgICB8CisgICAgICAgICAgICBiYXNoLTE5OTggIFswMDBdIGQuLi4gICAxNDAuNzMzNTAxOiBzeXNfd3JpdGUgLT4gMHgyCisgICAgICAgICAgICBiYXNoLTE5OTggIFswMDBdIGQuLi4gICAxNDAuNzMzNTA0OiBzeXNfZHVwMihvbGRmZDogYSwgbmV3ZmQ6IDEpCisgICAgICAgICAgICBiYXNoLTE5OTggIFswMDBdIGQuLi4gICAxNDAuNzMzNTA2OiBzeXNfZHVwMiAtPiAweDEKKyAgICAgICAgICAgIGJhc2gtMTk5OCAgWzAwMF0gZC4uLiAgIDE0MC43MzM1MDg6IHN5c19mY250bChmZDogYSwgY21kOiAxLCBhcmc6IDApCisgICAgICAgICAgICBiYXNoLTE5OTggIFswMDBdIGQuLi4gICAxNDAuNzMzNTA5OiBzeXNfZmNudGwgLT4gMHgxCisgICAgICAgICAgICBiYXNoLTE5OTggIFswMDBdIGQuLi4gICAxNDAuNzMzNTEwOiBzeXNfY2xvc2UoZmQ6IGEpCisgICAgICAgICAgICBiYXNoLTE5OTggIFswMDBdIGQuLi4gICAxNDAuNzMzNTEwOiBzeXNfY2xvc2UgLT4gMHgwCisgICAgICAgICAgICBiYXNoLTE5OTggIFswMDBdIGQuLi4gICAxNDAuNzMzNTE0OiBzeXNfcnRfc2lncHJvY21hc2soaG93OiAwLCBuc2V0OiAwLCBvc2V0OiA2ZTI3NjgsIHNpZ3NldHNpemU6IDgpCisgICAgICAgICAgICBiYXNoLTE5OTggIFswMDBdIGQuLi4gICAxNDAuNzMzNTE1OiBzeXNfcnRfc2lncHJvY21hc2sgLT4gMHgwCisgICAgICAgICAgICBiYXNoLTE5OTggIFswMDBdIGQuLi4gICAxNDAuNzMzNTE2OiBzeXNfcnRfc2lnYWN0aW9uKHNpZzogMiwgYWN0OiA3ZmZmNzE4ODQ2ZjAsIG9hY3Q6IDdmZmY3MTg4NDY1MCwgc2lnc2V0c2l6ZTogOCkKKyAgICAgICAgICAgIGJhc2gtMTk5OCAgWzAwMF0gZC4uLiAgIDE0MC43MzM1MTY6IHN5c19ydF9zaWdhY3Rpb24gLT4gMHgwCisKK1lvdSBjYW4gc2VlIHRoYXQgdGhlIHRyYWNlIG9mIHRoZSB0b3AgbW9zdCB0cmFjZSBidWZmZXIgc2hvd3Mgb25seQordGhlIGZ1bmN0aW9uIHRyYWNpbmcuIFRoZSBmb28gaW5zdGFuY2UgZGlzcGxheXMgd2FrZXVwcyBhbmQgdGFzaworc3dpdGNoZXMuCisKK1RvIHJlbW92ZSB0aGUgaW5zdGFuY2VzLCBzaW1wbHkgZGVsZXRlIHRoZWlyIGRpcmVjdG9yaWVzOgorCisgIyBybWRpciBpbnN0YW5jZXMvZm9vCisgIyBybWRpciBpbnN0YW5jZXMvYmFyCisgIyBybWRpciBpbnN0YW5jZXMvem9vdAorCitOb3RlLCBpZiBhIHByb2Nlc3MgaGFzIGEgdHJhY2UgZmlsZSBvcGVuIGluIG9uZSBvZiB0aGUgaW5zdGFuY2UKK2RpcmVjdG9yaWVzLCB0aGUgcm1kaXIgd2lsbCBmYWlsIHdpdGggRUJVU1kuCisKKworU3RhY2sgdHJhY2UKKy0tLS0tLS0tLS0tCitTaW5jZSB0aGUga2VybmVsIGhhcyBhIGZpeGVkIHNpemVkIHN0YWNrLCBpdCBpcyBpbXBvcnRhbnQgbm90IHRvCit3YXN0ZSBpdCBpbiBmdW5jdGlvbnMuIEEga2VybmVsIGRldmVsb3BlciBtdXN0IGJlIGNvbnNjaWVuY2Ugb2YKK3doYXQgdGhleSBhbGxvY2F0ZSBvbiB0aGUgc3RhY2suIElmIHRoZXkgYWRkIHRvbyBtdWNoLCB0aGUgc3lzdGVtCitjYW4gYmUgaW4gZGFuZ2VyIG9mIGEgc3RhY2sgb3ZlcmZsb3csIGFuZCBjb3JydXB0aW9uIHdpbGwgb2NjdXIsCit1c3VhbGx5IGxlYWRpbmcgdG8gYSBzeXN0ZW0gcGFuaWMuCisKK1RoZXJlIGFyZSBzb21lIHRvb2xzIHRoYXQgY2hlY2sgdGhpcywgdXN1YWxseSB3aXRoIGludGVycnVwdHMKK3BlcmlvZGljYWxseSBjaGVja2luZyB1c2FnZS4gQnV0IGlmIHlvdSBjYW4gcGVyZm9ybSBhIGNoZWNrCithdCBldmVyeSBmdW5jdGlvbiBjYWxsIHRoYXQgd2lsbCBiZWNvbWUgdmVyeSB1c2VmdWwuIEFzIGZ0cmFjZSBwcm92aWRlcworYSBmdW5jdGlvbiB0cmFjZXIsIGl0IG1ha2VzIGl0IGNvbnZlbmllbnQgdG8gY2hlY2sgdGhlIHN0YWNrIHNpemUKK2F0IGV2ZXJ5IGZ1bmN0aW9uIGNhbGwuIFRoaXMgaXMgZW5hYmxlZCB2aWEgdGhlIHN0YWNrIHRyYWNlci4KKworQ09ORklHX1NUQUNLX1RSQUNFUiBlbmFibGVzIHRoZSBmdHJhY2Ugc3RhY2sgdHJhY2luZyBmdW5jdGlvbmFsaXR5LgorVG8gZW5hYmxlIGl0LCB3cml0ZSBhICcxJyBpbnRvIC9wcm9jL3N5cy9rZXJuZWwvc3RhY2tfdHJhY2VyX2VuYWJsZWQuCisKKyAjIGVjaG8gMSA+IC9wcm9jL3N5cy9rZXJuZWwvc3RhY2tfdHJhY2VyX2VuYWJsZWQKKworWW91IGNhbiBhbHNvIGVuYWJsZSBpdCBmcm9tIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIHRvIHRyYWNlCit0aGUgc3RhY2sgc2l6ZSBvZiB0aGUga2VybmVsIGR1cmluZyBib290IHVwLCBieSBhZGRpbmcgInN0YWNrdHJhY2UiCit0byB0aGUga2VybmVsIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXIuCisKK0FmdGVyIHJ1bm5pbmcgaXQgZm9yIGEgZmV3IG1pbnV0ZXMsIHRoZSBvdXRwdXQgbG9va3MgbGlrZToKKworICMgY2F0IHN0YWNrX21heF9zaXplCisyOTI4CisKKyAjIGNhdCBzdGFja190cmFjZQorICAgICAgICBEZXB0aCAgICBTaXplICAgTG9jYXRpb24gICAgKDE4IGVudHJpZXMpCisgICAgICAgIC0tLS0tICAgIC0tLS0gICAtLS0tLS0tLQorICAwKSAgICAgMjkyOCAgICAgMjI0ICAgdXBkYXRlX3NkX2xiX3N0YXRzKzB4YmMvMHg0YWMKKyAgMSkgICAgIDI3MDQgICAgIDE2MCAgIGZpbmRfYnVzaWVzdF9ncm91cCsweDMxLzB4MWYxCisgIDIpICAgICAyNTQ0ICAgICAyNTYgICBsb2FkX2JhbGFuY2UrMHhkOS8weDY2MgorICAzKSAgICAgMjI4OCAgICAgIDgwICAgaWRsZV9iYWxhbmNlKzB4YmIvMHgxMzAKKyAgNCkgICAgIDIyMDggICAgIDEyOCAgIF9fc2NoZWR1bGUrMHgyNmUvMHg1YjkKKyAgNSkgICAgIDIwODAgICAgICAxNiAgIHNjaGVkdWxlKzB4NjQvMHg2NgorICA2KSAgICAgMjA2NCAgICAgMTI4ICAgc2NoZWR1bGVfdGltZW91dCsweDM0LzB4ZTAKKyAgNykgICAgIDE5MzYgICAgIDExMiAgIHdhaXRfZm9yX2NvbW1vbisweDk3LzB4ZjEKKyAgOCkgICAgIDE4MjQgICAgICAxNiAgIHdhaXRfZm9yX2NvbXBsZXRpb24rMHgxZC8weDFmCisgIDkpICAgICAxODA4ICAgICAxMjggICBmbHVzaF93b3JrKzB4ZmUvMHgxMTkKKyAxMCkgICAgIDE2ODAgICAgICAxNiAgIHR0eV9mbHVzaF90b19sZGlzYysweDFlLzB4MjAKKyAxMSkgICAgIDE2NjQgICAgICA0OCAgIGlucHV0X2F2YWlsYWJsZV9wKzB4MWQvMHg1YworIDEyKSAgICAgMTYxNiAgICAgIDQ4ICAgbl90dHlfcG9sbCsweDZkLzB4MTM0CisgMTMpICAgICAxNTY4ICAgICAgNjQgICB0dHlfcG9sbCsweDY0LzB4N2YKKyAxNCkgICAgIDE1MDQgICAgIDg4MCAgIGRvX3NlbGVjdCsweDMxZS8weDUxMQorIDE1KSAgICAgIDYyNCAgICAgNDAwICAgY29yZV9zeXNfc2VsZWN0KzB4MTc3LzB4MjE2CisgMTYpICAgICAgMjI0ICAgICAgOTYgICBzeXNfc2VsZWN0KzB4OTEvMHhiOQorIDE3KSAgICAgIDEyOCAgICAgMTI4ICAgc3lzdGVtX2NhbGxfZmFzdHBhdGgrMHgxNi8weDFiCisKK05vdGUsIGlmIC1tZmVudHJ5IGlzIGJlaW5nIHVzZWQgYnkgZ2NjLCBmdW5jdGlvbnMgZ2V0IHRyYWNlZCBiZWZvcmUKK3RoZXkgc2V0IHVwIHRoZSBzdGFjayBmcmFtZS4gVGhpcyBtZWFucyB0aGF0IGxlYWYgbGV2ZWwgZnVuY3Rpb25zCithcmUgbm90IHRlc3RlZCBieSB0aGUgc3RhY2sgdHJhY2VyIHdoZW4gLW1mZW50cnkgaXMgdXNlZC4KKworQ3VycmVudGx5LCAtbWZlbnRyeSBpcyB1c2VkIGJ5IGdjYyA0LjYuMCBhbmQgYWJvdmUgb24geDg2IG9ubHkuCisKKy0tLS0tLS0tLQorCitNb3JlIGRldGFpbHMgY2FuIGJlIGZvdW5kIGluIHRoZSBzb3VyY2UgY29kZSwgaW4gdGhlCitrZXJuZWwvdHJhY2UvKi5jIGZpbGVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90cmFjZS9mdW5jdGlvbi1ncmFwaC1mb2xkLnZpbSBiL0RvY3VtZW50YXRpb24vdHJhY2UvZnVuY3Rpb24tZ3JhcGgtZm9sZC52aW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU0NGI1MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdHJhY2UvZnVuY3Rpb24tZ3JhcGgtZm9sZC52aW0KQEAgLTAsMCArMSw0MiBAQAorIiBFbmFibGUgZm9sZGluZyBmb3IgZnRyYWNlIGZ1bmN0aW9uX2dyYXBoIHRyYWNlcy4KKyIKKyIgVG8gdXNlLCA6c291cmNlIHRoaXMgZmlsZSB3aGlsZSB2aWV3aW5nIGEgZnVuY3Rpb25fZ3JhcGggdHJhY2UsIG9yIHVzZSB2aW0ncworIiAtUyBvcHRpb24gdG8gbG9hZCBmcm9tIHRoZSBjb21tYW5kLWxpbmUgdG9nZXRoZXIgd2l0aCBhIHRyYWNlLiAgWW91IGNhbiB0aGVuCisiIHVzZSB0aGUgdXN1YWwgdmltIGZvbGQgY29tbWFuZHMsIHN1Y2ggYXMgInphIiwgdG8gb3BlbiBhbmQgY2xvc2UgbmVzdGVkCisiIGZ1bmN0aW9ucy4gIFdoaWxlIGNsb3NlZCwgYSBmb2xkIHdpbGwgc2hvdyB0aGUgdG90YWwgdGltZSB0YWtlbiBmb3IgYSBjYWxsLAorIiBhcyB3b3VsZCBub3JtYWxseSBhcHBlYXIgb24gdGhlIGxpbmUgd2l0aCB0aGUgY2xvc2luZyBicmFjZS4gIEZvbGRlZAorIiBmdW5jdGlvbnMgd2lsbCBub3QgaW5jbHVkZSBmaW5pc2hfdGFza19zd2l0Y2goKSwgc28gZm9sZGluZyBzaG91bGQgcmVtYWluCisiIHJlbGF0aXZlbHkgc2FuZSBldmVuIHRocm91Z2ggYSBjb250ZXh0IHN3aXRjaC4KKyIKKyIgTm90ZSB0aGF0IHRoaXMgd2lsbCBhbG1vc3QgY2VydGFpbmx5IG9ubHkgd29yayB3ZWxsIHdpdGggYQorIiBzaW5nbGUtQ1BVIHRyYWNlIChlLmcuIHRyYWNlLWNtZCByZXBvcnQgLS1jcHUgMSkuCisKK2Z1bmN0aW9uISBGdW5jdGlvbkdyYXBoRm9sZEV4cHIobG51bSkKKyAgbGV0IGxpbmUgPSBnZXRsaW5lKGE6bG51bSkKKyAgaWYgbGluZVstMTpdID09ICd7JworICAgIGlmIGxpbmUgPX4gJ2ZpbmlzaF90YXNrX3N3aXRjaCgpIHskJworICAgICAgcmV0dXJuICc+MScKKyAgICBlbmRpZgorICAgIHJldHVybiAnYTEnCisgIGVsc2VpZiBsaW5lWy0xOl0gPT0gJ30nCisgICAgcmV0dXJuICdzMScKKyAgZWxzZQorICAgIHJldHVybiAnPScKKyAgZW5kaWYKK2VuZGZ1bmN0aW9uCisKK2Z1bmN0aW9uISBGdW5jdGlvbkdyYXBoRm9sZFRleHQoKQorICBsZXQgcyA9IHNwbGl0KGdldGxpbmUodjpmb2xkc3RhcnQpLCAnfCcsIDEpCisgIGlmIGdldGxpbmUodjpmb2xkZW5kKzEpID1+ICdmaW5pc2hfdGFza19zd2l0Y2goKSB7JCcKKyAgICBsZXQgc1syXSA9ICcgdGFzayBzd2l0Y2ggICcKKyAgZWxzZQorICAgIGxldCBlID0gc3BsaXQoZ2V0bGluZSh2OmZvbGRlbmQpLCAnfCcsIDEpCisgICAgbGV0IHNbMl0gPSBlWzJdCisgIGVuZGlmCisgIHJldHVybiBqb2luKHMsICd8JykKK2VuZGZ1bmN0aW9uCisKK3NldGxvY2FsIGZvbGRleHByPUZ1bmN0aW9uR3JhcGhGb2xkRXhwcih2OmxudW0pCitzZXRsb2NhbCBmb2xkdGV4dD1GdW5jdGlvbkdyYXBoRm9sZFRleHQoKQorc2V0bG9jYWwgZm9sZGNvbHVtbj0xMgorc2V0bG9jYWwgZm9sZG1ldGhvZD1leHByCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RyYWNlL2ludGVsX3RoLnR4dCBiL0RvY3VtZW50YXRpb24vdHJhY2UvaW50ZWxfdGgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ZmM1YmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3RyYWNlL2ludGVsX3RoLnR4dApAQCAtMCwwICsxLDk5IEBACitJbnRlbChSKSBUcmFjZSBIdWIgKFRIKQorPT09PT09PT09PT09PT09PT09PT09PT0KKworT3ZlcnZpZXcKKy0tLS0tLS0tCisKK0ludGVsKFIpIFRyYWNlIEh1YiAoVEgpIGlzIGEgc2V0IG9mIGhhcmR3YXJlIGJsb2NrcyB0aGF0IHByb2R1Y2UsCitzd2l0Y2ggYW5kIG91dHB1dCB0cmFjZSBkYXRhIGZyb20gbXVsdGlwbGUgaGFyZHdhcmUgYW5kIHNvZnR3YXJlCitzb3VyY2VzIG92ZXIgc2V2ZXJhbCB0eXBlcyBvZiB0cmFjZSBvdXRwdXQgcG9ydHMgZW5jb2RlZCBpbiBTeXN0ZW0KK1RyYWNlIFByb3RvY29sIChNSVBJIFNUUHYyKSBhbmQgaXMgaW50ZW5kZWQgdG8gcGVyZm9ybSBmdWxsIHN5c3RlbQorZGVidWdnaW5nLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgaGFyZHdhcmUsIHNlZSBJbnRlbChSKSBUcmFjZQorSHViIGRldmVsb3BlcidzIG1hbnVhbCBbMV0uCisKK0l0IGNvbnNpc3RzIG9mIHRyYWNlIHNvdXJjZXMsIHRyYWNlIGRlc3RpbmF0aW9ucyAob3V0cHV0cykgYW5kIGEKK3N3aXRjaCAoR2xvYmFsIFRyYWNlIEh1YiwgR1RIKS4gVGhlc2UgZGV2aWNlcyBhcmUgcGxhY2VkIG9uIGEgYnVzIG9mCit0aGVpciBvd24gKCJpbnRlbF90aCIpLCB3aGVyZSB0aGV5IGNhbiBiZSBkaXNjb3ZlcmVkIGFuZCBjb25maWd1cmVkCit2aWEgc3lzZnMgYXR0cmlidXRlcy4KKworQ3VycmVudGx5LCB0aGUgZm9sbG93aW5nIEludGVsIFRIIHN1YmRldmljZXMgKGJsb2NrcykgYXJlIHN1cHBvcnRlZDoKKyAgLSBTb2Z0d2FyZSBUcmFjZSBIdWIgKFNUSCksIHRyYWNlIHNvdXJjZSwgd2hpY2ggaXMgYSBTeXN0ZW0gVHJhY2UKKyAgTW9kdWxlIChTVE0pIGRldmljZSwKKyAgLSBNZW1vcnkgU3RvcmFnZSBVbml0IChNU1UpLCB0cmFjZSBvdXRwdXQsIHdoaWNoIGFsbG93cyBzdG9yaW5nCisgIHRyYWNlIGh1YiBvdXRwdXQgaW4gc3lzdGVtIG1lbW9yeSwKKyAgLSBQYXJhbGxlbCBUcmFjZSBJbnRlcmZhY2Ugb3V0cHV0IChQVEkpLCB0cmFjZSBvdXRwdXQgdG8gYW4gZXh0ZXJuYWwKKyAgZGVidWcgaG9zdCB2aWEgYSBQVEkgcG9ydCwKKyAgLSBHbG9iYWwgVHJhY2UgSHViIChHVEgpLCB3aGljaCBpcyBhIHN3aXRjaCBhbmQgYSBjZW50cmFsIGNvbXBvbmVudAorICBvZiBJbnRlbChSKSBUcmFjZSBIdWIgYXJjaGl0ZWN0dXJlLgorCitDb21tb24gYXR0cmlidXRlcyBmb3Igb3V0cHV0IGRldmljZXMgYXJlIGRlc2NyaWJlZCBpbgorRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaW50ZWxfdGgtb3V0cHV0LWRldmljZXMsIHRoZSBtb3N0Citub3RhYmxlIG9mIHRoZW0gaXMgImFjdGl2ZSIsIHdoaWNoIGVuYWJsZXMgb3IgZGlzYWJsZXMgdHJhY2Ugb3V0cHV0CitpbnRvIHRoYXQgcGFydGljdWxhciBvdXRwdXQgZGV2aWNlLgorCitHVEggYWxsb3dzIGRpcmVjdGluZyBkaWZmZXJlbnQgU1RQIG1hc3RlcnMgaW50byBkaWZmZXJlbnQgb3V0cHV0IHBvcnRzCit2aWEgaXRzICJtYXN0ZXJzIiBhdHRyaWJ1dGUgZ3JvdXAuIE1vcmUgZGV0YWlsZWQgR1RIIGludGVyZmFjZQorZGVzY3JpcHRpb24gaXMgYXQgRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaW50ZWxfdGgtZGV2aWNlcy1ndGguCisKK1NUSCByZWdpc3RlcnMgYW4gc3RtIGNsYXNzIGRldmljZSwgdGhyb3VnaCB3aGljaCBpdCBwcm92aWRlcyBpbnRlcmZhY2UKK3RvIHVzZXJzcGFjZSBhbmQga2VybmVsc3BhY2Ugc29mdHdhcmUgdHJhY2Ugc291cmNlcy4gU2VlCitEb2N1bWVudGF0aW9uL3RyYWNpbmcvc3RtLnR4dCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGF0LgorCitNU1UgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gY29sbGVjdCB0cmFjZSBkYXRhIGludG8gYSBzeXN0ZW0gbWVtb3J5CitidWZmZXIsIHdoaWNoIGNhbiBsYXRlciBvbiBiZSByZWFkIGZyb20gaXRzIGRldmljZSBub2RlcyB2aWEgcmVhZCgpIG9yCittbWFwKCkgaW50ZXJmYWNlLgorCitPbiB0aGUgd2hvbGUsIEludGVsKFIpIFRyYWNlIEh1YiBkb2VzIG5vdCByZXF1aXJlIGFueSBzcGVjaWFsCit1c2Vyc3BhY2Ugc29mdHdhcmUgdG8gZnVuY3Rpb247IGV2ZXJ5dGhpbmcgY2FuIGJlIGNvbmZpZ3VyZWQsIHN0YXJ0ZWQKK2FuZCBjb2xsZWN0ZWQgdmlhIHN5c2ZzIGF0dHJpYnV0ZXMsIGFuZCBkZXZpY2Ugbm9kZXMuCisKK1sxXSBodHRwczovL3NvZnR3YXJlLmludGVsLmNvbS9zaXRlcy9kZWZhdWx0L2ZpbGVzL21hbmFnZWQvZDMvM2MvaW50ZWwtdGgtZGV2ZWxvcGVyLW1hbnVhbC5wZGYKKworQnVzIGFuZCBTdWJkZXZpY2VzCistLS0tLS0tLS0tLS0tLS0tLS0KKworRm9yIGVhY2ggSW50ZWwgVEggZGV2aWNlIGluIHRoZSBzeXN0ZW0gYSBidXMgb2YgaXRzIG93biBpcworY3JlYXRlZCBhbmQgYXNzaWduZWQgYW4gaWQgbnVtYmVyIHRoYXQgcmVmbGVjdHMgdGhlIG9yZGVyIGluIHdoaWNoIFRICitkZXZpY2VzIHdlcmUgZW11bWVyYXRlZC4gQWxsIFRIIHN1YmRldmljZXMgKGRldmljZXMgb24gaW50ZWxfdGggYnVzKQorYmVnaW4gd2l0aCB0aGlzIGlkOiAwLWd0aCwgMC1tc2MwLCAwLW1zYzEsIDAtcHRpLCAwLXN0aCwgd2hpY2ggaXMKK2ZvbGxvd2VkIGJ5IGRldmljZSdzIG5hbWUgYW5kIGFuIG9wdGlvbmFsIGluZGV4LgorCitPdXRwdXQgZGV2aWNlcyBhbHNvIGdldCBhIGRldmljZSBub2RlIGluIC9kZXYvaW50ZWxfdGhOLCB3aGVyZSBOIGlzCit0aGUgSW50ZWwgVEggZGV2aWNlIGlkLiBGb3IgZXhhbXBsZSwgTVNVJ3MgbWVtb3J5IGJ1ZmZlcnMsIHdoZW4KK2FsbG9jYXRlZCwgYXJlIGFjY2Vzc2libGUgdmlhIC9kZXYvaW50ZWxfdGgwL21zY3swLDF9LgorCitRdWljayBleGFtcGxlCistLS0tLS0tLS0tLS0tCisKKyMgZmlndXJlIG91dCB3aGljaCBHVEggcG9ydCBpcyB0aGUgZmlyc3QgbWVtb3J5IGNvbnRyb2xsZXI6CisKKyQgY2F0IC9zeXMvYnVzL2ludGVsX3RoL2RldmljZXMvMC1tc2MwL3BvcnQKKzAKKworIyBsb29rcyBsaWtlIGl0J3MgcG9ydCAwLCBjb25maWd1cmUgbWFzdGVyIDMzIHRvIHNlbmQgZGF0YSB0byBwb3J0IDA6CisKKyQgZWNobyAwID4gL3N5cy9idXMvaW50ZWxfdGgvZGV2aWNlcy8wLWd0aC9tYXN0ZXJzLzMzCisKKyMgYWxsb2NhdGUgYSAyLXdpbmRvd2VkIG11bHRpYmxvY2sgYnVmZmVyIG9uIHRoZSBmaXJzdCBtZW1vcnkKKyMgY29udHJvbGxlciwgZWFjaCB3aXRoIDY0IHBhZ2VzOgorCiskIGVjaG8gbXVsdGkgPiAvc3lzL2J1cy9pbnRlbF90aC9kZXZpY2VzLzAtbXNjMC9tb2RlCiskIGVjaG8gNjQsNjQgPiAvc3lzL2J1cy9pbnRlbF90aC9kZXZpY2VzLzAtbXNjMC9ucl9wYWdlcworCisjIGVuYWJsZSB3cmFwcGluZyBmb3IgdGhpcyBjb250cm9sbGVyLCB0b286CisKKyQgZWNobyAxID4gL3N5cy9idXMvaW50ZWxfdGgvZGV2aWNlcy8wLW1zYzAvd3JhcAorCisjIGFuZCBlbmFibGUgdHJhY2luZyBpbnRvIHRoaXMgcG9ydDoKKworJCBlY2hvIDEgPiAvc3lzL2J1cy9pbnRlbF90aC9kZXZpY2VzLzAtbXNjMC9hY3RpdmUKKworIyAuLiBzZW5kIGRhdGEgdG8gbWFzdGVyIDMzLCBzZWUgc3RtLnR4dCBmb3IgbW9yZSBkZXRhaWxzIC4uCisjIC4uIHdhaXQgZm9yIHRyYWNlcyB0byBwaWxlIHVwIC4uCisjIC4uIGFuZCBzdG9wIHRoZSB0cmFjZToKKworJCBlY2hvIDAgPiAvc3lzL2J1cy9pbnRlbF90aC9kZXZpY2VzLzAtbXNjMC9hY3RpdmUKKworIyBhbmQgbm93IHlvdSBjYW4gY29sbGVjdCB0aGUgdHJhY2UgZnJvbSB0aGUgZGV2aWNlIG5vZGU6CisKKyQgY2F0IC9kZXYvaW50ZWxfdGgwL21zYzAgPiBteV9zdHBfdHJhY2UKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdHJhY2Uva3Byb2JldHJhY2UudHh0IGIvRG9jdW1lbnRhdGlvbi90cmFjZS9rcHJvYmV0cmFjZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY4ZWE1ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdHJhY2Uva3Byb2JldHJhY2UudHh0CkBAIC0wLDAgKzEsMTcyIEBACisgICAgICAgICAgICAgICAgICAgICAgICBLcHJvYmUtYmFzZWQgRXZlbnQgVHJhY2luZworICAgICAgICAgICAgICAgICAgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uIGlzIHdyaXR0ZW4gYnkgTWFzYW1pIEhpcmFtYXRzdQorCisKK092ZXJ2aWV3CistLS0tLS0tLQorVGhlc2UgZXZlbnRzIGFyZSBzaW1pbGFyIHRvIHRyYWNlcG9pbnQgYmFzZWQgZXZlbnRzLiBJbnN0ZWFkIG9mIFRyYWNlcG9pbnQsCit0aGlzIGlzIGJhc2VkIG9uIGtwcm9iZXMgKGtwcm9iZSBhbmQga3JldHByb2JlKS4gU28gaXQgY2FuIHByb2JlIHdoZXJldmVyCitrcHJvYmVzIGNhbiBwcm9iZSAodGhpcyBtZWFucywgYWxsIGZ1bmN0aW9ucyBib2R5IGV4Y2VwdCBmb3IgX19rcHJvYmVzCitmdW5jdGlvbnMpLiBVbmxpa2UgdGhlIFRyYWNlcG9pbnQgYmFzZWQgZXZlbnQsIHRoaXMgY2FuIGJlIGFkZGVkIGFuZCByZW1vdmVkCitkeW5hbWljYWxseSwgb24gdGhlIGZseS4KKworVG8gZW5hYmxlIHRoaXMgZmVhdHVyZSwgYnVpbGQgeW91ciBrZXJuZWwgd2l0aCBDT05GSUdfS1BST0JFX0VWRU5UPXkuCisKK1NpbWlsYXIgdG8gdGhlIGV2ZW50cyB0cmFjZXIsIHRoaXMgZG9lc24ndCBuZWVkIHRvIGJlIGFjdGl2YXRlZCB2aWEKK2N1cnJlbnRfdHJhY2VyLiBJbnN0ZWFkIG9mIHRoYXQsIGFkZCBwcm9iZSBwb2ludHMgdmlhCisvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2twcm9iZV9ldmVudHMsIGFuZCBlbmFibGUgaXQgdmlhCisvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2V2ZW50cy9rcHJvYmVzLzxFVkVOVD4vZW5hYmxlZC4KKworCitTeW5vcHNpcyBvZiBrcHJvYmVfZXZlbnRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIHBbOltHUlAvXUVWRU5UXSBbTU9EOl1TWU1bK29mZnNdfE1FTUFERFIgW0ZFVENIQVJHU10JOiBTZXQgYSBwcm9iZQorICByWzpbR1JQL11FVkVOVF0gW01PRDpdU1lNWyswXSBbRkVUQ0hBUkdTXQkJOiBTZXQgYSByZXR1cm4gcHJvYmUKKyAgLTpbR1JQL11FVkVOVAkJCQkJCTogQ2xlYXIgYSBwcm9iZQorCisgR1JQCQk6IEdyb3VwIG5hbWUuIElmIG9taXR0ZWQsIHVzZSAia3Byb2JlcyIgZm9yIGl0LgorIEVWRU5UCQk6IEV2ZW50IG5hbWUuIElmIG9taXR0ZWQsIHRoZSBldmVudCBuYW1lIGlzIGdlbmVyYXRlZAorCQkgIGJhc2VkIG9uIFNZTStvZmZzIG9yIE1FTUFERFIuCisgTU9ECQk6IE1vZHVsZSBuYW1lIHdoaWNoIGhhcyBnaXZlbiBTWU0uCisgU1lNWytvZmZzXQk6IFN5bWJvbCtvZmZzZXQgd2hlcmUgdGhlIHByb2JlIGlzIGluc2VydGVkLgorIE1FTUFERFIJOiBBZGRyZXNzIHdoZXJlIHRoZSBwcm9iZSBpcyBpbnNlcnRlZC4KKworIEZFVENIQVJHUwk6IEFyZ3VtZW50cy4gRWFjaCBwcm9iZSBjYW4gaGF2ZSB1cCB0byAxMjggYXJncy4KKyAgJVJFRwkJOiBGZXRjaCByZWdpc3RlciBSRUcKKyAgQEFERFIJCTogRmV0Y2ggbWVtb3J5IGF0IEFERFIgKEFERFIgc2hvdWxkIGJlIGluIGtlcm5lbCkKKyAgQFNZTVsrfC1vZmZzXQk6IEZldGNoIG1lbW9yeSBhdCBTWU0gK3wtIG9mZnMgKFNZTSBzaG91bGQgYmUgYSBkYXRhIHN5bWJvbCkKKyAgJHN0YWNrTgk6IEZldGNoIE50aCBlbnRyeSBvZiBzdGFjayAoTiA+PSAwKQorICAkc3RhY2sJOiBGZXRjaCBzdGFjayBhZGRyZXNzLgorICAkcmV0dmFsCTogRmV0Y2ggcmV0dXJuIHZhbHVlLigqKQorICArfC1vZmZzKEZFVENIQVJHKSA6IEZldGNoIG1lbW9yeSBhdCBGRVRDSEFSRyArfC0gb2ZmcyBhZGRyZXNzLigqKikKKyAgTkFNRT1GRVRDSEFSRyA6IFNldCBOQU1FIGFzIHRoZSBhcmd1bWVudCBuYW1lIG9mIEZFVENIQVJHLgorICBGRVRDSEFSRzpUWVBFIDogU2V0IFRZUEUgYXMgdGhlIHR5cGUgb2YgRkVUQ0hBUkcuIEN1cnJlbnRseSwgYmFzaWMgdHlwZXMKKwkJICAodTgvdTE2L3UzMi91NjQvczgvczE2L3MzMi9zNjQpLCAic3RyaW5nIiBhbmQgYml0ZmllbGQKKwkJICBhcmUgc3VwcG9ydGVkLgorCisgICgqKSBvbmx5IGZvciByZXR1cm4gcHJvYmUuCisgICgqKikgdGhpcyBpcyB1c2VmdWwgZm9yIGZldGNoaW5nIGEgZmllbGQgb2YgZGF0YSBzdHJ1Y3R1cmVzLgorCitUeXBlcworLS0tLS0KK1NldmVyYWwgdHlwZXMgYXJlIHN1cHBvcnRlZCBmb3IgZmV0Y2gtYXJncy4gS3Byb2JlIHRyYWNlciB3aWxsIGFjY2VzcyBtZW1vcnkKK2J5IGdpdmVuIHR5cGUuIFByZWZpeCAncycgYW5kICd1JyBtZWFucyB0aG9zZSB0eXBlcyBhcmUgc2lnbmVkIGFuZCB1bnNpZ25lZAorcmVzcGVjdGl2ZWx5LiBUcmFjZWQgYXJndW1lbnRzIGFyZSBzaG93biBpbiBkZWNpbWFsIChzaWduZWQpIG9yIGhleCAodW5zaWduZWQpLgorU3RyaW5nIHR5cGUgaXMgYSBzcGVjaWFsIHR5cGUsIHdoaWNoIGZldGNoZXMgYSAibnVsbC10ZXJtaW5hdGVkIiBzdHJpbmcgZnJvbQora2VybmVsIHNwYWNlLiBUaGlzIG1lYW5zIGl0IHdpbGwgZmFpbCBhbmQgc3RvcmUgTlVMTCBpZiB0aGUgc3RyaW5nIGNvbnRhaW5lcgoraGFzIGJlZW4gcGFnZWQgb3V0LgorQml0ZmllbGQgaXMgYW5vdGhlciBzcGVjaWFsIHR5cGUsIHdoaWNoIHRha2VzIDMgcGFyYW1ldGVycywgYml0LXdpZHRoLCBiaXQtCitvZmZzZXQsIGFuZCBjb250YWluZXItc2l6ZSAodXN1YWxseSAzMikuIFRoZSBzeW50YXggaXM7CisKKyBiPGJpdC13aWR0aD5APGJpdC1vZmZzZXQ+Lzxjb250YWluZXItc2l6ZT4KKworCitQZXItUHJvYmUgRXZlbnQgRmlsdGVyaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUGVyLXByb2JlIGV2ZW50IGZpbHRlcmluZyBmZWF0dXJlIGFsbG93cyB5b3UgdG8gc2V0IGRpZmZlcmVudCBmaWx0ZXIgb24gZWFjaAorcHJvYmUgYW5kIGdpdmVzIHlvdSB3aGF0IGFyZ3VtZW50cyB3aWxsIGJlIHNob3duIGluIHRyYWNlIGJ1ZmZlci4gSWYgYW4gZXZlbnQKK25hbWUgaXMgc3BlY2lmaWVkIHJpZ2h0IGFmdGVyICdwOicgb3IgJ3I6JyBpbiBrcHJvYmVfZXZlbnRzLCBpdCBhZGRzIGFuIGV2ZW50Cit1bmRlciB0cmFjaW5nL2V2ZW50cy9rcHJvYmVzLzxFVkVOVD4sIGF0IHRoZSBkaXJlY3RvcnkgeW91IGNhbiBzZWUgJ2lkJywKKydlbmFibGVkJywgJ2Zvcm1hdCcgYW5kICdmaWx0ZXInLgorCitlbmFibGVkOgorICBZb3UgY2FuIGVuYWJsZS9kaXNhYmxlIHRoZSBwcm9iZSBieSB3cml0aW5nIDEgb3IgMCBvbiBpdC4KKworZm9ybWF0OgorICBUaGlzIHNob3dzIHRoZSBmb3JtYXQgb2YgdGhpcyBwcm9iZSBldmVudC4KKworZmlsdGVyOgorICBZb3UgY2FuIHdyaXRlIGZpbHRlcmluZyBydWxlcyBvZiB0aGlzIGV2ZW50LgorCitpZDoKKyAgVGhpcyBzaG93cyB0aGUgaWQgb2YgdGhpcyBwcm9iZSBldmVudC4KKworCitFdmVudCBQcm9maWxpbmcKKy0tLS0tLS0tLS0tLS0tLQorIFlvdSBjYW4gY2hlY2sgdGhlIHRvdGFsIG51bWJlciBvZiBwcm9iZSBoaXRzIGFuZCBwcm9iZSBtaXNzLWhpdHMgdmlhCisvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2twcm9iZV9wcm9maWxlLgorIFRoZSBmaXJzdCBjb2x1bW4gaXMgZXZlbnQgbmFtZSwgdGhlIHNlY29uZCBpcyB0aGUgbnVtYmVyIG9mIHByb2JlIGhpdHMsCit0aGUgdGhpcmQgaXMgdGhlIG51bWJlciBvZiBwcm9iZSBtaXNzLWhpdHMuCisKKworVXNhZ2UgZXhhbXBsZXMKKy0tLS0tLS0tLS0tLS0tCitUbyBhZGQgYSBwcm9iZSBhcyBhIG5ldyBldmVudCwgd3JpdGUgYSBuZXcgZGVmaW5pdGlvbiB0byBrcHJvYmVfZXZlbnRzCithcyBiZWxvdy4KKworICBlY2hvICdwOm15cHJvYmUgZG9fc3lzX29wZW4gZGZkPSVheCBmaWxlbmFtZT0lZHggZmxhZ3M9JWN4IG1vZGU9KzQoJHN0YWNrKScgPiAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2twcm9iZV9ldmVudHMKKworIFRoaXMgc2V0cyBhIGtwcm9iZSBvbiB0aGUgdG9wIG9mIGRvX3N5c19vcGVuKCkgZnVuY3Rpb24gd2l0aCByZWNvcmRpbmcKKzFzdCB0byA0dGggYXJndW1lbnRzIGFzICJteXByb2JlIiBldmVudC4gTm90ZSwgd2hpY2ggcmVnaXN0ZXIvc3RhY2sgZW50cnkgaXMKK2Fzc2lnbmVkIHRvIGVhY2ggZnVuY3Rpb24gYXJndW1lbnQgZGVwZW5kcyBvbiBhcmNoLXNwZWNpZmljIEFCSS4gSWYgeW91IHVuc3VyZQordGhlIEFCSSwgcGxlYXNlIHRyeSB0byB1c2UgcHJvYmUgc3ViY29tbWFuZCBvZiBwZXJmLXRvb2xzICh5b3UgY2FuIGZpbmQgaXQKK3VuZGVyIHRvb2xzL3BlcmYvKS4KK0FzIHRoaXMgZXhhbXBsZSBzaG93cywgdXNlcnMgY2FuIGNob29zZSBtb3JlIGZhbWlsaWFyIG5hbWVzIGZvciBlYWNoIGFyZ3VtZW50cy4KKworICBlY2hvICdyOm15cmV0cHJvYmUgZG9fc3lzX29wZW4gJHJldHZhbCcgPj4gL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9rcHJvYmVfZXZlbnRzCisKKyBUaGlzIHNldHMgYSBrcmV0cHJvYmUgb24gdGhlIHJldHVybiBwb2ludCBvZiBkb19zeXNfb3BlbigpIGZ1bmN0aW9uIHdpdGgKK3JlY29yZGluZyByZXR1cm4gdmFsdWUgYXMgIm15cmV0cHJvYmUiIGV2ZW50LgorIFlvdSBjYW4gc2VlIHRoZSBmb3JtYXQgb2YgdGhlc2UgZXZlbnRzIHZpYQorL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMva3Byb2Jlcy88RVZFTlQ+L2Zvcm1hdC4KKworICBjYXQgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMva3Byb2Jlcy9teXByb2JlL2Zvcm1hdAorbmFtZTogbXlwcm9iZQorSUQ6IDc4MAorZm9ybWF0OgorICAgICAgICBmaWVsZDp1bnNpZ25lZCBzaG9ydCBjb21tb25fdHlwZTsgICAgICAgb2Zmc2V0OjA7ICAgICAgIHNpemU6Mjsgc2lnbmVkOjA7CisgICAgICAgIGZpZWxkOnVuc2lnbmVkIGNoYXIgY29tbW9uX2ZsYWdzOyAgICAgICBvZmZzZXQ6MjsgICAgICAgc2l6ZToxOyBzaWduZWQ6MDsKKyAgICAgICAgZmllbGQ6dW5zaWduZWQgY2hhciBjb21tb25fcHJlZW1wdF9jb3VudDsgICAgICAgb2Zmc2V0OjM7IHNpemU6MTtzaWduZWQ6MDsKKyAgICAgICAgZmllbGQ6aW50IGNvbW1vbl9waWQ7ICAgb2Zmc2V0OjQ7ICAgICAgIHNpemU6NDsgc2lnbmVkOjE7CisKKyAgICAgICAgZmllbGQ6dW5zaWduZWQgbG9uZyBfX3Byb2JlX2lwOyBvZmZzZXQ6MTI7ICAgICAgc2l6ZTo0OyBzaWduZWQ6MDsKKyAgICAgICAgZmllbGQ6aW50IF9fcHJvYmVfbmFyZ3M7ICAgICAgICBvZmZzZXQ6MTY7ICAgICAgc2l6ZTo0OyBzaWduZWQ6MTsKKyAgICAgICAgZmllbGQ6dW5zaWduZWQgbG9uZyBkZmQ7ICAgICAgICBvZmZzZXQ6MjA7ICAgICAgc2l6ZTo0OyBzaWduZWQ6MDsKKyAgICAgICAgZmllbGQ6dW5zaWduZWQgbG9uZyBmaWxlbmFtZTsgICBvZmZzZXQ6MjQ7ICAgICAgc2l6ZTo0OyBzaWduZWQ6MDsKKyAgICAgICAgZmllbGQ6dW5zaWduZWQgbG9uZyBmbGFnczsgICAgICBvZmZzZXQ6Mjg7ICAgICAgc2l6ZTo0OyBzaWduZWQ6MDsKKyAgICAgICAgZmllbGQ6dW5zaWduZWQgbG9uZyBtb2RlOyAgICAgICBvZmZzZXQ6MzI7ICAgICAgc2l6ZTo0OyBzaWduZWQ6MDsKKworCitwcmludCBmbXQ6ICIoJWx4KSBkZmQ9JWx4IGZpbGVuYW1lPSVseCBmbGFncz0lbHggbW9kZT0lbHgiLCBSRUMtPl9fcHJvYmVfaXAsCitSRUMtPmRmZCwgUkVDLT5maWxlbmFtZSwgUkVDLT5mbGFncywgUkVDLT5tb2RlCisKKyBZb3UgY2FuIHNlZSB0aGF0IHRoZSBldmVudCBoYXMgNCBhcmd1bWVudHMgYXMgaW4gdGhlIGV4cHJlc3Npb25zIHlvdSBzcGVjaWZpZWQuCisKKyAgZWNobyA+IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcva3Byb2JlX2V2ZW50cworCisgVGhpcyBjbGVhcnMgYWxsIHByb2JlIHBvaW50cy4KKworIE9yLAorCisgIGVjaG8gLTpteXByb2JlID4+IGtwcm9iZV9ldmVudHMKKworIFRoaXMgY2xlYXJzIHByb2JlIHBvaW50cyBzZWxlY3RpdmVseS4KKworIFJpZ2h0IGFmdGVyIGRlZmluaXRpb24sIGVhY2ggZXZlbnQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4gRm9yIHRyYWNpbmcgdGhlc2UKK2V2ZW50cywgeW91IG5lZWQgdG8gZW5hYmxlIGl0LgorCisgIGVjaG8gMSA+IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzL2twcm9iZXMvbXlwcm9iZS9lbmFibGUKKyAgZWNobyAxID4gL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMva3Byb2Jlcy9teXJldHByb2JlL2VuYWJsZQorCisgQW5kIHlvdSBjYW4gc2VlIHRoZSB0cmFjZWQgaW5mb3JtYXRpb24gdmlhIC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2UuCisKKyAgY2F0IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2UKKyMgdHJhY2VyOiBub3AKKyMKKyMgICAgICAgICAgIFRBU0stUElEICAgIENQVSMgICAgVElNRVNUQU1QICBGVU5DVElPTgorIyAgICAgICAgICAgICAgfCB8ICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwKKyAgICAgICAgICAgPC4uLj4tMTQ0NyAgWzAwMV0gMTAzODI4Mi4yODY4NzU6IG15cHJvYmU6IChkb19zeXNfb3BlbisweDAvMHhkNikgZGZkPTMgZmlsZW5hbWU9N2ZmZmQxZWM0NDQwIGZsYWdzPTgwMDAgbW9kZT0wCisgICAgICAgICAgIDwuLi4+LTE0NDcgIFswMDFdIDEwMzgyODIuMjg2ODc4OiBteXJldHByb2JlOiAoc3lzX29wZW5hdCsweGMvMHhlIDwtIGRvX3N5c19vcGVuKSAkcmV0dmFsPWZmZmZmZmZmZmZmZmZmZmUKKyAgICAgICAgICAgPC4uLj4tMTQ0NyAgWzAwMV0gMTAzODI4Mi4yODY4ODU6IG15cHJvYmU6IChkb19zeXNfb3BlbisweDAvMHhkNikgZGZkPWZmZmZmZjljIGZpbGVuYW1lPTQwNDEzYyBmbGFncz04MDAwIG1vZGU9MWI2CisgICAgICAgICAgIDwuLi4+LTE0NDcgIFswMDFdIDEwMzgyODIuMjg2OTE1OiBteXJldHByb2JlOiAoc3lzX29wZW4rMHgxYi8weDFkIDwtIGRvX3N5c19vcGVuKSAkcmV0dmFsPTMKKyAgICAgICAgICAgPC4uLj4tMTQ0NyAgWzAwMV0gMTAzODI4Mi4yODY5Njk6IG15cHJvYmU6IChkb19zeXNfb3BlbisweDAvMHhkNikgZGZkPWZmZmZmZjljIGZpbGVuYW1lPTQwNDFjNiBmbGFncz05ODgwMCBtb2RlPTEwCisgICAgICAgICAgIDwuLi4+LTE0NDcgIFswMDFdIDEwMzgyODIuMjg2OTc2OiBteXJldHByb2JlOiAoc3lzX29wZW4rMHgxYi8weDFkIDwtIGRvX3N5c19vcGVuKSAkcmV0dmFsPTMKKworCisgRWFjaCBsaW5lIHNob3dzIHdoZW4gdGhlIGtlcm5lbCBoaXRzIGFuIGV2ZW50LCBhbmQgPC0gU1lNQk9MIG1lYW5zIGtlcm5lbAorcmV0dXJucyBmcm9tIFNZTUJPTChlLmcuICJzeXNfb3BlbisweDFiLzB4MWQgPC0gZG9fc3lzX29wZW4iIG1lYW5zIGtlcm5lbAorcmV0dXJucyBmcm9tIGRvX3N5c19vcGVuIHRvIHN5c19vcGVuKzB4MWIpLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RyYWNlL21taW90cmFjZS50eHQgYi9Eb2N1bWVudGF0aW9uL3RyYWNlL21taW90cmFjZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY0ZTczOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdHJhY2UvbW1pb3RyYWNlLnR4dApAQCAtMCwwICsxLDE2NCBAQAorCQlJbi1rZXJuZWwgbWVtb3J5LW1hcHBlZCBJL08gdHJhY2luZworCisKK0hvbWUgcGFnZSBhbmQgbGlua3MgdG8gb3B0aW9uYWwgdXNlciBzcGFjZSB0b29sczoKKworCWh0dHA6Ly9ub3V2ZWF1LmZyZWVkZXNrdG9wLm9yZy93aWtpL01taW9UcmFjZQorCitNTUlPIHRyYWNpbmcgd2FzIG9yaWdpbmFsbHkgZGV2ZWxvcGVkIGJ5IEludGVsIGFyb3VuZCAyMDAzIGZvciB0aGVpciBGYXVsdAorSW5qZWN0aW9uIFRlc3QgSGFybmVzcy4gSW4gRGVjIDIwMDYgLSBKYW4gMjAwNywgdXNpbmcgdGhlIGNvZGUgZnJvbSBJbnRlbCwKK0plZmYgTXVpemVsYWFyIGNyZWF0ZWQgYSB0b29sIGZvciB0cmFjaW5nIE1NSU8gYWNjZXNzZXMgd2l0aCB0aGUgTm91dmVhdQorcHJvamVjdCBpbiBtaW5kLiBTaW5jZSB0aGVuIG1hbnkgcGVvcGxlIGhhdmUgY29udHJpYnV0ZWQuCisKK01taW90cmFjZSB3YXMgYnVpbHQgZm9yIHJldmVyc2UgZW5naW5lZXJpbmcgYW55IG1lbW9yeS1tYXBwZWQgSU8gZGV2aWNlIHdpdGgKK3RoZSBOb3V2ZWF1IHByb2plY3QgYXMgdGhlIGZpcnN0IHJlYWwgdXNlci4gT25seSB4ODYgYW5kIHg4Nl82NCBhcmNoaXRlY3R1cmVzCithcmUgc3VwcG9ydGVkLgorCitPdXQtb2YtdHJlZSBtbWlvdHJhY2Ugd2FzIG9yaWdpbmFsbHkgbW9kaWZpZWQgZm9yIG1haW5saW5lIGluY2x1c2lvbiBhbmQKK2Z0cmFjZSBmcmFtZXdvcmsgYnkgUGVra2EgUGFhbGFuZW4gPHBxQGlraS5maT4uCisKKworUHJlcGFyYXRpb24KKy0tLS0tLS0tLS0tCisKK01taW90cmFjZSBmZWF0dXJlIGlzIGNvbXBpbGVkIGluIGJ5IHRoZSBDT05GSUdfTU1JT1RSQUNFIG9wdGlvbi4gVHJhY2luZyBpcworZGlzYWJsZWQgYnkgZGVmYXVsdCwgc28gaXQgaXMgc2FmZSB0byBoYXZlIHRoaXMgc2V0IHRvIHllcy4gU01QIHN5c3RlbXMgYXJlCitzdXBwb3J0ZWQsIGJ1dCB0cmFjaW5nIGlzIHVucmVsaWFibGUgYW5kIG1heSBtaXNzIGV2ZW50cyBpZiBtb3JlIHRoYW4gb25lIENQVQoraXMgb24tbGluZSwgdGhlcmVmb3JlIG1taW90cmFjZSB0YWtlcyBhbGwgYnV0IG9uZSBDUFUgb2ZmLWxpbmUgZHVyaW5nIHJ1bi10aW1lCithY3RpdmF0aW9uLiBZb3UgY2FuIHJlLWVuYWJsZSBDUFVzIGJ5IGhhbmQsIGJ1dCB5b3UgaGF2ZSBiZWVuIHdhcm5lZCwgdGhlcmUKK2lzIG5vIHdheSB0byBhdXRvbWF0aWNhbGx5IGRldGVjdCBpZiB5b3UgYXJlIGxvc2luZyBldmVudHMgZHVlIHRvIENQVXMgcmFjaW5nLgorCisKK1VzYWdlIFF1aWNrIFJlZmVyZW5jZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyQgbW91bnQgLXQgZGVidWdmcyBkZWJ1Z2ZzIC9zeXMva2VybmVsL2RlYnVnCiskIGVjaG8gbW1pb3RyYWNlID4gL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9jdXJyZW50X3RyYWNlcgorJCBjYXQgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjZV9waXBlID4gbXlkdW1wLnR4dCAmCitTdGFydCBYIG9yIHdoYXRldmVyLgorJCBlY2hvICJYIGlzIHVwIiA+IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2VfbWFya2VyCiskIGVjaG8gbm9wID4gL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9jdXJyZW50X3RyYWNlcgorQ2hlY2sgZm9yIGxvc3QgZXZlbnRzLgorCisKK1VzYWdlCistLS0tLQorCitNYWtlIHN1cmUgZGVidWdmcyBpcyBtb3VudGVkIHRvIC9zeXMva2VybmVsL2RlYnVnLgorSWYgbm90IChyZXF1aXJlcyByb290IHByaXZpbGVnZXMpOgorJCBtb3VudCAtdCBkZWJ1Z2ZzIGRlYnVnZnMgL3N5cy9rZXJuZWwvZGVidWcKKworQ2hlY2sgdGhhdCB0aGUgZHJpdmVyIHlvdSBhcmUgYWJvdXQgdG8gdHJhY2UgaXMgbm90IGxvYWRlZC4KKworQWN0aXZhdGUgbW1pb3RyYWNlIChyZXF1aXJlcyByb290IHByaXZpbGVnZXMpOgorJCBlY2hvIG1taW90cmFjZSA+IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvY3VycmVudF90cmFjZXIKKworU3RhcnQgc3RvcmluZyB0aGUgdHJhY2U6CiskIGNhdCAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3RyYWNlX3BpcGUgPiBteWR1bXAudHh0ICYKK1RoZSAnY2F0JyBwcm9jZXNzIHNob3VsZCBzdGF5IHJ1bm5pbmcgKHNsZWVwaW5nKSBpbiB0aGUgYmFja2dyb3VuZC4KKworTG9hZCB0aGUgZHJpdmVyIHlvdSB3YW50IHRvIHRyYWNlIGFuZCB1c2UgaXQuIE1taW90cmFjZSB3aWxsIG9ubHkgY2F0Y2ggTU1JTworYWNjZXNzZXMgdG8gYXJlYXMgdGhhdCBhcmUgaW9yZW1hcHBlZCB3aGlsZSBtbWlvdHJhY2UgaXMgYWN0aXZlLgorCitEdXJpbmcgdHJhY2luZyB5b3UgY2FuIHBsYWNlIGNvbW1lbnRzIChtYXJrZXJzKSBpbnRvIHRoZSB0cmFjZSBieQorJCBlY2hvICJYIGlzIHVwIiA+IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2VfbWFya2VyCitUaGlzIG1ha2VzIGl0IGVhc2llciB0byBzZWUgd2hpY2ggcGFydCBvZiB0aGUgKGh1Z2UpIHRyYWNlIGNvcnJlc3BvbmRzIHRvCit3aGljaCBhY3Rpb24uIEl0IGlzIHJlY29tbWVuZGVkIHRvIHBsYWNlIGRlc2NyaXB0aXZlIG1hcmtlcnMgYWJvdXQgd2hhdCB5b3UKK2RvLgorCitTaHV0IGRvd24gbW1pb3RyYWNlIChyZXF1aXJlcyByb290IHByaXZpbGVnZXMpOgorJCBlY2hvIG5vcCA+IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvY3VycmVudF90cmFjZXIKK1RoZSAnY2F0JyBwcm9jZXNzIGV4aXRzLiBJZiBpdCBkb2VzIG5vdCwga2lsbCBpdCBieSBpc3N1aW5nICdmZycgY29tbWFuZCBhbmQKK3ByZXNzaW5nIGN0cmwrYy4KKworQ2hlY2sgdGhhdCBtbWlvdHJhY2UgZGlkIG5vdCBsb3NlIGV2ZW50cyBkdWUgdG8gYSBidWZmZXIgZmlsbGluZyB1cC4gRWl0aGVyCiskIGdyZXAgLWkgbG9zdCBteWR1bXAudHh0Cit3aGljaCB0ZWxscyB5b3UgZXhhY3RseSBob3cgbWFueSBldmVudHMgd2VyZSBsb3N0LCBvciB1c2UKKyQgZG1lc2cKK3RvIHZpZXcgeW91ciBrZXJuZWwgbG9nIGFuZCBsb29rIGZvciAibW1pb3RyYWNlIGhhcyBsb3N0IGV2ZW50cyIgd2FybmluZy4gSWYKK2V2ZW50cyB3ZXJlIGxvc3QsIHRoZSB0cmFjZSBpcyBpbmNvbXBsZXRlLiBZb3Ugc2hvdWxkIGVubGFyZ2UgdGhlIGJ1ZmZlcnMgYW5kCit0cnkgYWdhaW4uIEJ1ZmZlcnMgYXJlIGVubGFyZ2VkIGJ5IGZpcnN0IHNlZWluZyBob3cgbGFyZ2UgdGhlIGN1cnJlbnQgYnVmZmVycworYXJlOgorJCBjYXQgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9idWZmZXJfc2l6ZV9rYgorZ2l2ZXMgeW91IGEgbnVtYmVyLiBBcHByb3hpbWF0ZWx5IGRvdWJsZSB0aGlzIG51bWJlciBhbmQgd3JpdGUgaXQgYmFjaywgZm9yCitpbnN0YW5jZToKKyQgZWNobyAxMjgwMDAgPiAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2J1ZmZlcl9zaXplX2tiCitUaGVuIHN0YXJ0IGFnYWluIGZyb20gdGhlIHRvcC4KKworSWYgeW91IGFyZSBkb2luZyBhIHRyYWNlIGZvciBhIGRyaXZlciBwcm9qZWN0LCBlLmcuIE5vdXZlYXUsIHlvdSBzaG91bGQgYWxzbworZG8gdGhlIGZvbGxvd2luZyBiZWZvcmUgc2VuZGluZyB5b3VyIHJlc3VsdHM6CiskIGxzcGNpIC12dnYgPiBsc3BjaS50eHQKKyQgZG1lc2cgPiBkbWVzZy50eHQKKyQgdGFyIHpjZiBwY2lpZC1uaWNrLW1taW90cmFjZS50YXIuZ3ogbXlkdW1wLnR4dCBsc3BjaS50eHQgZG1lc2cudHh0CithbmQgdGhlbiBzZW5kIHRoZSAudGFyLmd6IGZpbGUuIFRoZSB0cmFjZSBjb21wcmVzc2VzIGNvbnNpZGVyYWJseS4gUmVwbGFjZQorInBjaWlkIiBhbmQgIm5pY2siIHdpdGggdGhlIFBDSSBJRCBvciBtb2RlbCBuYW1lIG9mIHlvdXIgcGllY2Ugb2YgaGFyZHdhcmUKK3VuZGVyIGludmVzdGlnYXRpb24gYW5kIHlvdXIgbmlja25hbWUuCisKKworSG93IE1taW90cmFjZSBXb3JrcworLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBY2Nlc3MgdG8gaGFyZHdhcmUgSU8tbWVtb3J5IGlzIGdhaW5lZCBieSBtYXBwaW5nIGFkZHJlc3NlcyBmcm9tIFBDSSBidXMgYnkKK2NhbGxpbmcgb25lIG9mIHRoZSBpb3JlbWFwXyooKSBmdW5jdGlvbnMuIE1taW90cmFjZSBpcyBob29rZWQgaW50byB0aGUKK19faW9yZW1hcCgpIGZ1bmN0aW9uIGFuZCBnZXRzIGNhbGxlZCB3aGVuZXZlciBhIG1hcHBpbmcgaXMgY3JlYXRlZC4gTWFwcGluZyBpcworYW4gZXZlbnQgdGhhdCBpcyByZWNvcmRlZCBpbnRvIHRoZSB0cmFjZSBsb2cuIE5vdGUgdGhhdCBJU0EgcmFuZ2UgbWFwcGluZ3MKK2FyZSBub3QgY2F1Z2h0LCBzaW5jZSB0aGUgbWFwcGluZyBhbHdheXMgZXhpc3RzIGFuZCBpcyByZXR1cm5lZCBkaXJlY3RseS4KKworTU1JTyBhY2Nlc3NlcyBhcmUgcmVjb3JkZWQgdmlhIHBhZ2UgZmF1bHRzLiBKdXN0IGJlZm9yZSBfX2lvcmVtYXAoKSByZXR1cm5zLAordGhlIG1hcHBlZCBwYWdlcyBhcmUgbWFya2VkIGFzIG5vdCBwcmVzZW50LiBBbnkgYWNjZXNzIHRvIHRoZSBwYWdlcyBjYXVzZXMgYQorZmF1bHQuIFRoZSBwYWdlIGZhdWx0IGhhbmRsZXIgY2FsbHMgbW1pb3RyYWNlIHRvIGhhbmRsZSB0aGUgZmF1bHQuIE1taW90cmFjZQorbWFya3MgdGhlIHBhZ2UgcHJlc2VudCwgc2V0cyBURiBmbGFnIHRvIGFjaGlldmUgc2luZ2xlIHN0ZXBwaW5nIGFuZCBleGl0cyB0aGUKK2ZhdWx0IGhhbmRsZXIuIFRoZSBpbnN0cnVjdGlvbiB0aGF0IGZhdWx0ZWQgaXMgZXhlY3V0ZWQgYW5kIGRlYnVnIHRyYXAgaXMKK2VudGVyZWQuIEhlcmUgbW1pb3RyYWNlIGFnYWluIG1hcmtzIHRoZSBwYWdlIGFzIG5vdCBwcmVzZW50LiBUaGUgaW5zdHJ1Y3Rpb24KK2lzIGRlY29kZWQgdG8gZ2V0IHRoZSB0eXBlIG9mIG9wZXJhdGlvbiAocmVhZC93cml0ZSksIGRhdGEgd2lkdGggYW5kIHRoZSB2YWx1ZQorcmVhZCBvciB3cml0dGVuLiBUaGVzZSBhcmUgc3RvcmVkIHRvIHRoZSB0cmFjZSBsb2cuCisKK1NldHRpbmcgdGhlIHBhZ2UgcHJlc2VudCBpbiB0aGUgcGFnZSBmYXVsdCBoYW5kbGVyIGhhcyBhIHJhY2UgY29uZGl0aW9uIG9uIFNNUAorbWFjaGluZXMuIER1cmluZyB0aGUgc2luZ2xlIHN0ZXBwaW5nIG90aGVyIENQVXMgbWF5IHJ1biBmcmVlbHkgb24gdGhhdCBwYWdlCithbmQgZXZlbnRzIGNhbiBiZSBtaXNzZWQgd2l0aG91dCBhIG5vdGljZS4gUmUtZW5hYmxpbmcgb3RoZXIgQ1BVcyBkdXJpbmcKK3RyYWNpbmcgaXMgZGlzY291cmFnZWQuCisKKworVHJhY2UgTG9nIEZvcm1hdAorLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgcmF3IGxvZyBpcyB0ZXh0IGFuZCBlYXNpbHkgZmlsdGVyZWQgd2l0aCBlLmcuIGdyZXAgYW5kIGF3ay4gT25lIHJlY29yZCBpcworb25lIGxpbmUgaW4gdGhlIGxvZy4gQSByZWNvcmQgc3RhcnRzIHdpdGggYSBrZXl3b3JkLCBmb2xsb3dlZCBieSBrZXl3b3JkLQorZGVwZW5kZW50IGFyZ3VtZW50cy4gQXJndW1lbnRzIGFyZSBzZXBhcmF0ZWQgYnkgYSBzcGFjZSwgb3IgY29udGludWUgdW50aWwgdGhlCitlbmQgb2YgbGluZS4gVGhlIGZvcm1hdCBmb3IgdmVyc2lvbiAyMDA3MDgyNCBpcyBhcyBmb2xsb3dzOgorCitFeHBsYW5hdGlvbglLZXl3b3JkCVNwYWNlLXNlcGFyYXRlZCBhcmd1bWVudHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCityZWFkIGV2ZW50CVIJd2lkdGgsIHRpbWVzdGFtcCwgbWFwIGlkLCBwaHlzaWNhbCwgdmFsdWUsIFBDLCBQSUQKK3dyaXRlIGV2ZW50CVcJd2lkdGgsIHRpbWVzdGFtcCwgbWFwIGlkLCBwaHlzaWNhbCwgdmFsdWUsIFBDLCBQSUQKK2lvcmVtYXAgZXZlbnQJTUFQCXRpbWVzdGFtcCwgbWFwIGlkLCBwaHlzaWNhbCwgdmlydHVhbCwgbGVuZ3RoLCBQQywgUElECitpb3VubWFwIGV2ZW50CVVOTUFQCXRpbWVzdGFtcCwgbWFwIGlkLCBQQywgUElECittYXJrZXIJCU1BUksJdGltZXN0YW1wLCB0ZXh0Cit2ZXJzaW9uCQlWRVJTSU9OCXRoZSBzdHJpbmcgIjIwMDcwODI0IgoraW5mbyBmb3IgcmVhZGVyCUxTUENJCW9uZSBsaW5lIGZyb20gbHNwY2kgLXYKK1BDSSBhZGRyZXNzIG1hcAlQQ0lERVYJc3BhY2Utc2VwYXJhdGVkIC9wcm9jL2J1cy9wY2kvZGV2aWNlcyBkYXRhCit1bmsuIG9wY29kZQlVTktOT1dOCXRpbWVzdGFtcCwgbWFwIGlkLCBwaHlzaWNhbCwgZGF0YSwgUEMsIFBJRAorCitUaW1lc3RhbXAgaXMgaW4gc2Vjb25kcyB3aXRoIGRlY2ltYWxzLiBQaHlzaWNhbCBpcyBhIFBDSSBidXMgYWRkcmVzcywgdmlydHVhbAoraXMgYSBrZXJuZWwgdmlydHVhbCBhZGRyZXNzLiBXaWR0aCBpcyB0aGUgZGF0YSB3aWR0aCBpbiBieXRlcyBhbmQgdmFsdWUgaXMgdGhlCitkYXRhIHZhbHVlLiBNYXAgaWQgaXMgYW4gYXJiaXRyYXJ5IGlkIG51bWJlciBpZGVudGlmeWluZyB0aGUgbWFwcGluZyB0aGF0IHdhcwordXNlZCBpbiBhbiBvcGVyYXRpb24uIFBDIGlzIHRoZSBwcm9ncmFtIGNvdW50ZXIgYW5kIFBJRCBpcyBwcm9jZXNzIGlkLiBQQyBpcworemVybyBpZiBpdCBpcyBub3QgcmVjb3JkZWQuIFBJRCBpcyBhbHdheXMgemVybyBhcyB0cmFjaW5nIE1NSU8gYWNjZXNzZXMKK29yaWdpbmF0aW5nIGluIHVzZXIgc3BhY2UgbWVtb3J5IGlzIG5vdCB5ZXQgc3VwcG9ydGVkLgorCitGb3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcgYXdrIGZpbHRlciB3aWxsIHBhc3MgYWxsIDMyLWJpdCB3cml0ZXMgdGhhdCB0YXJnZXQKK3BoeXNpY2FsIGFkZHJlc3NlcyBpbiB0aGUgcmFuZ2UgWzB4ZmI3M2NlNDAsIDB4ZmI4MDAwMDBbCisKKyQgYXdrICcvVyA0IC8geyBhZHI9c3RydG9udW0oJDUpOyBpZiAoYWRyID49IDB4ZmI3M2NlNDAgJiYKK2FkciA8IDB4ZmI4MDAwMDApIHByaW50OyB9JworCisKK1Rvb2xzIGZvciBEZXZlbG9wZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgdXNlciBzcGFjZSB0b29scyBpbmNsdWRlIHV0aWxpdGllcyBmb3I6CistIHJlcGxhY2luZyBudW1lcmljIGFkZHJlc3NlcyBhbmQgdmFsdWVzIHdpdGggaGFyZHdhcmUgcmVnaXN0ZXIgbmFtZXMKKy0gcmVwbGF5aW5nIE1NSU8gbG9ncywgaS5lLiwgcmUtZXhlY3V0aW5nIHRoZSByZWNvcmRlZCB3cml0ZXMKKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RyYWNlL3Bvc3Rwcm9jZXNzL3RyYWNlLXBhZ2VhbGxvYy1wb3N0cHJvY2Vzcy5wbCBiL0RvY3VtZW50YXRpb24vdHJhY2UvcG9zdHByb2Nlc3MvdHJhY2UtcGFnZWFsbG9jLXBvc3Rwcm9jZXNzLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhMTIwYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3RyYWNlL3Bvc3Rwcm9jZXNzL3RyYWNlLXBhZ2VhbGxvYy1wb3N0cHJvY2Vzcy5wbApAQCAtMCwwICsxLDQxOCBAQAorIyEvdXNyL2Jpbi9wZXJsCisjIFRoaXMgaXMgYSBQT0MgKHByb29mIG9mIGNvbmNlcHQgb3IgcGllY2Ugb2YgY3JhcCwgdGFrZSB5b3VyIHBpY2spIGZvciByZWFkaW5nIHRoZQorIyB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIHRyYWNlIG91dHB1dCByZWxhdGVkIHRvIHBhZ2UgYWxsb2NhdGlvbi4gSXQgbWFrZXMgYW4gYXR0ZW1wdAorIyB0byBleHRyYWN0IHNvbWUgaGlnaC1sZXZlbCBpbmZvcm1hdGlvbiBvbiB3aGF0IGlzIGdvaW5nIG9uLiBUaGUgYWNjdXJhY3kgb2YgdGhlIHBhcnNlcgorIyBtYXkgdmFyeSBjb25zaWRlcmFibHkKKyMKKyMgRXhhbXBsZSB1c2FnZTogdHJhY2UtcGFnZWFsbG9jLXBvc3Rwcm9jZXNzLnBsIDwgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjZV9waXBlCisjIG90aGVyIG9wdGlvbnMKKyMgICAtLXByZXBlbmQtcGFyZW50CVJlcG9ydCBvbiB0aGUgcGFyZW50IHByb2MgYW5kIFBJRAorIyAgIC0tcmVhZC1wcm9jc3RhdAlJZiB0aGUgdHJhY2UgbGFja3MgcHJvY2VzcyBpbmZvLCBnZXQgaXQgZnJvbSAvcHJvYworIyAgIC0taWdub3JlLXBpZAlBZ2dyZWdhdGUgcHJvY2Vzc2VzIG9mIHRoZSBzYW1lIG5hbWUgdG9nZXRoZXIKKyMKKyMgQ29weXJpZ2h0IChjKSBJQk0gQ29ycG9yYXRpb24gMjAwOQorIyBBdXRob3I6IE1lbCBHb3JtYW4gPG1lbEBjc24udWwuaWU+Cit1c2Ugc3RyaWN0OwordXNlIEdldG9wdDo6TG9uZzsKKworIyBUcmFjZXBvaW50IGV2ZW50cwordXNlIGNvbnN0YW50IE1NX1BBR0VfQUxMT0MJCT0+IDE7Cit1c2UgY29uc3RhbnQgTU1fUEFHRV9GUkVFCQk9PiAyOwordXNlIGNvbnN0YW50IE1NX1BBR0VfRlJFRV9CQVRDSEVECT0+IDM7Cit1c2UgY29uc3RhbnQgTU1fUEFHRV9QQ1BVX0RSQUlOCQk9PiA0OwordXNlIGNvbnN0YW50IE1NX1BBR0VfQUxMT0NfWk9ORV9MT0NLRUQJPT4gNTsKK3VzZSBjb25zdGFudCBNTV9QQUdFX0FMTE9DX0VYVEZSQUcJPT4gNjsKK3VzZSBjb25zdGFudCBFVkVOVF9VTktOT1dOCQk9PiA3OworCisjIENvbnN0YW50cyB1c2VkIHRvIHRyYWNrIHN0YXRlCit1c2UgY29uc3RhbnQgU1RBVEVfUENQVV9QQUdFU19EUkFJTkVECT0+IDg7Cit1c2UgY29uc3RhbnQgU1RBVEVfUENQVV9QQUdFU19SRUZJTExFRAk9PiA5OworCisjIEhpZ2gtbGV2ZWwgZXZlbnRzIGV4dHJhcG9sYXRlZCBmcm9tIHRyYWNlcG9pbnRzCit1c2UgY29uc3RhbnQgSElHSF9QQ1BVX0RSQUlOUwkJPT4gMTA7Cit1c2UgY29uc3RhbnQgSElHSF9QQ1BVX1JFRklMTFMJCT0+IDExOwordXNlIGNvbnN0YW50IEhJR0hfRVhUX0ZSQUdNRU5UCQk9PiAxMjsKK3VzZSBjb25zdGFudCBISUdIX0VYVF9GUkFHTUVOVF9TRVZFUkUJPT4gMTM7Cit1c2UgY29uc3RhbnQgSElHSF9FWFRfRlJBR01FTlRfTU9ERVJBVEUJPT4gMTQ7Cit1c2UgY29uc3RhbnQgSElHSF9FWFRfRlJBR01FTlRfQ0hBTkdFRAk9PiAxNTsKKworbXkgJXBlcnByb2Nlc3NwaWQ7CitteSAlcGVycHJvY2VzczsKK215ICRvcHRfaWdub3JlcGlkOworbXkgJG9wdF9yZWFkX3Byb2NzdGF0OworbXkgJG9wdF9wcmVwZW5kX3BhcmVudDsKKworIyBDYXRjaCBzaWdpbnQgYW5kIGV4aXQgb24gcmVxdWVzdAorbXkgJHNpZ2ludF9yZXBvcnQgPSAwOworbXkgJHNpZ2ludF9leGl0ID0gMDsKK215ICRzaWdpbnRfcGVuZGluZyA9IDA7CitteSAkc2lnaW50X3JlY2VpdmVkID0gMDsKK3N1YiBzaWdpbnRfaGFuZGxlciB7CisJbXkgJGN1cnJlbnRfdGltZSA9IHRpbWU7CisJaWYgKCRjdXJyZW50X3RpbWUgLSAyID4gJHNpZ2ludF9yZWNlaXZlZCkgeworCQlwcmludCAiU0lHSU5UIHJlY2VpdmVkLCByZXBvcnQgcGVuZGluZy4gSGl0IGN0cmwtYyBhZ2FpbiB0byBleGl0XG4iOworCQkkc2lnaW50X3JlcG9ydCA9IDE7CisJfSBlbHNlIHsKKwkJaWYgKCEkc2lnaW50X2V4aXQpIHsKKwkJCXByaW50ICJTZWNvbmQgU0lHSU5UIHJlY2VpdmVkIHF1aWNrbHksIGV4aXRpbmdcbiI7CisJCX0KKwkJJHNpZ2ludF9leGl0Kys7CisJfQorCisJaWYgKCRzaWdpbnRfZXhpdCA+IDMpIHsKKwkJcHJpbnQgIk1hbnkgU0lHSU5UcyByZWNlaXZlZCwgZXhpdGluZyBub3cgd2l0aG91dCByZXBvcnRcbiI7CisJCWV4aXQ7CisJfQorCisJJHNpZ2ludF9yZWNlaXZlZCA9ICRjdXJyZW50X3RpbWU7CisJJHNpZ2ludF9wZW5kaW5nID0gMTsKK30KKyRTSUd7SU5UfSA9ICJzaWdpbnRfaGFuZGxlciI7CisKKyMgUGFyc2UgY29tbWFuZCBsaW5lIG9wdGlvbnMKK0dldE9wdGlvbnMoCisJJ2lnbm9yZS1waWQnCSA9PglcJG9wdF9pZ25vcmVwaWQsCisJJ3JlYWQtcHJvY3N0YXQnCSA9PglcJG9wdF9yZWFkX3Byb2NzdGF0LAorCSdwcmVwZW5kLXBhcmVudCcgPT4JXCRvcHRfcHJlcGVuZF9wYXJlbnQsCispOworCisjIERlZmF1bHRzIGZvciBkeW5hbWljYWxseSBkaXNjb3ZlcmVkIHJlZ2V4J3MKK215ICRyZWdleF9mcmFnZGV0YWlsc19kZWZhdWx0ID0gJ3BhZ2U9KFswLTlhLWZdKikgcGZuPShbMC05XSopIGFsbG9jX29yZGVyPShbLTAtOV0qKSBmYWxsYmFja19vcmRlcj0oWy0wLTldKikgcGFnZWJsb2NrX29yZGVyPShbLTAtOV0qKSBhbGxvY19taWdyYXRldHlwZT0oWy0wLTldKikgZmFsbGJhY2tfbWlncmF0ZXR5cGU9KFstMC05XSopIGZyYWdtZW50aW5nPShbLTAtOV0pIGNoYW5nZV9vd25lcnNoaXA9KFstMC05XSknOworCisjIER5YW5pY2FsbHkgZGlzY292ZXJlZCByZWdleAorbXkgJHJlZ2V4X2ZyYWdkZXRhaWxzOworCisjIFN0YXRpYyByZWdleCB1c2VkLiBTcGVjaWZpZWQgbGlrZSB0aGlzIGZvciByZWFkYWJpbGl0eSBhbmQgZm9yIHVzZSB3aXRoIC9vCisjICAgICAgICAgICAgICAgICAgICAgIChwcm9jZXNzX3BpZCkgICAgIChjcHVzICAgICAgKSAgICggdGltZSAgKSAgICh0cG9pbnQgICAgKSAoZGV0YWlscykKK215ICRyZWdleF90cmFjZWV2ZW50ID0gJ1xzKihbYS16QS1aMC05LV0qKVxzKihcW1swLTldKlxdKVxzKihbMC05Ll0qKTpccyooW2EtekEtWl9dKik6XHMqKC4qKSc7CitteSAkcmVnZXhfc3RhdG5hbWUgPSAnWy0wLTldKlxzXCgoLiopXCkuKic7CitteSAkcmVnZXhfc3RhdHBwaWQgPSAnWy0wLTldKlxzXCguKlwpXHNbQS1aYS16XVxzKFswLTldKikuKic7CisKK3N1YiBnZW5lcmF0ZV90cmFjZWV2ZW50X3JlZ2V4IHsKKwlteSAkZXZlbnQgPSBzaGlmdDsKKwlteSAkZGVmYXVsdCA9IHNoaWZ0OworCW15ICRyZWdleDsKKworCSMgUmVhZCB0aGUgZXZlbnQgZm9ybWF0IG9yIHVzZSB0aGUgZGVmYXVsdAorCWlmICghb3BlbiAoRk9STUFULCAiL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMvJGV2ZW50L2Zvcm1hdCIpKSB7CisJCSRyZWdleCA9ICRkZWZhdWx0OworCX0gZWxzZSB7CisJCW15ICRsaW5lOworCQl3aGlsZSAoIWVvZihGT1JNQVQpKSB7CisJCQkkbGluZSA9IDxGT1JNQVQ+OworCQkJaWYgKCRsaW5lID1+IC9ecHJpbnQgZm10OlxzIiguKikiLC4qLykgeworCQkJCSRyZWdleCA9ICQxOworCQkJCSRyZWdleCA9fiBzLyVwL1woWzAtOWEtZl0qXCkvZzsKKwkJCQkkcmVnZXggPX4gcy8lZC9cKFstMC05XSpcKS9nOworCQkJCSRyZWdleCA9fiBzLyVsdS9cKFswLTldKlwpL2c7CisJCQl9CisJCX0KKwl9CisKKwkjIFZlcmlmeSBmaWVsZHMgYXJlIGluIHRoZSByaWdodCBvcmRlcgorCW15ICR0dXBsZTsKKwlmb3JlYWNoICR0dXBsZSAoc3BsaXQgL1xzLywgJHJlZ2V4KSB7CisJCW15ICgka2V5LCAkdmFsdWUpID0gc3BsaXQoLz0vLCAkdHVwbGUpOworCQlteSAkZXhwZWN0ZWQgPSBzaGlmdDsKKwkJaWYgKCRrZXkgbmUgJGV4cGVjdGVkKSB7CisJCQlwcmludCgiV0FSTklORzogRm9ybWF0IG5vdCBhcyBleHBlY3RlZCAnJGtleScgIT0gJyRleHBlY3RlZCciKTsKKwkJCSRyZWdleCA9fiBzLyRrZXk9XCgoLiopXCkvJGtleT0kMS87CisJCX0KKwl9CisKKwlpZiAoZGVmaW5lZCBzaGlmdCkgeworCQlkaWUoIkZld2VyIGZpZWxkcyB0aGFuIGV4cGVjdGVkIGluIGZvcm1hdCIpOworCX0KKworCXJldHVybiAkcmVnZXg7Cit9CiskcmVnZXhfZnJhZ2RldGFpbHMgPSBnZW5lcmF0ZV90cmFjZWV2ZW50X3JlZ2V4KCJrbWVtL21tX3BhZ2VfYWxsb2NfZXh0ZnJhZyIsCisJCQkkcmVnZXhfZnJhZ2RldGFpbHNfZGVmYXVsdCwKKwkJCSJwYWdlIiwgInBmbiIsCisJCQkiYWxsb2Nfb3JkZXIiLCAiZmFsbGJhY2tfb3JkZXIiLCAicGFnZWJsb2NrX29yZGVyIiwKKwkJCSJhbGxvY19taWdyYXRldHlwZSIsICJmYWxsYmFja19taWdyYXRldHlwZSIsCisJCQkiZnJhZ21lbnRpbmciLCAiY2hhbmdlX293bmVyc2hpcCIpOworCitzdWIgcmVhZF9zdGF0bGluZSgkKSB7CisJbXkgJHBpZCA9ICRfWzBdOworCW15ICRzdGF0bGluZTsKKworCWlmIChvcGVuKFNUQVQsICIvcHJvYy8kcGlkL3N0YXQiKSkgeworCQkkc3RhdGxpbmUgPSA8U1RBVD47CisJCWNsb3NlKFNUQVQpOworCX0KKworCWlmICgkc3RhdGxpbmUgZXEgJycpIHsKKwkJJHN0YXRsaW5lID0gIi0xIChVTktOT1dOX1BST0NFU1NfTkFNRSkgUiAwIjsKKwl9CisKKwlyZXR1cm4gJHN0YXRsaW5lOworfQorCitzdWIgZ3Vlc3NfcHJvY2Vzc19waWQoJCQpIHsKKwlteSAkcGlkID0gJF9bMF07CisJbXkgJHN0YXRsaW5lID0gJF9bMV07CisKKwlpZiAoJHBpZCA9PSAwKSB7CisJCXJldHVybiAic3dhcHBlci0wIjsKKwl9CisKKwlpZiAoJHN0YXRsaW5lICF+IC8kcmVnZXhfc3RhdG5hbWUvbykgeworCQlkaWUoIkZhaWxlZCB0byBtYXRoIHN0YXQgbGluZSBmb3IgcHJvY2VzcyBuYW1lIDo6ICRzdGF0bGluZSIpOworCX0KKwlyZXR1cm4gIiQxLSRwaWQiOworfQorCitzdWIgcGFyZW50X2luZm8oJCQpIHsKKwlteSAkcGlkID0gJF9bMF07CisJbXkgJHN0YXRsaW5lID0gJF9bMV07CisJbXkgJHBwaWQ7CisKKwlpZiAoJHBpZCA9PSAwKSB7CisJCXJldHVybiAiTk9QQVJFTlQtMCI7CisJfQorCisJaWYgKCRzdGF0bGluZSAhfiAvJHJlZ2V4X3N0YXRwcGlkL28pIHsKKwkJZGllKCJGYWlsZWQgdG8gbWF0Y2ggc3RhdCBsaW5lIHByb2Nlc3MgcHBpZDo6ICRzdGF0bGluZSIpOworCX0KKworCSMgUmVhZCB0aGUgcHBpZCBzdGF0IGxpbmUKKwkkcHBpZCA9ICQxOworCXJldHVybiBndWVzc19wcm9jZXNzX3BpZCgkcHBpZCwgcmVhZF9zdGF0bGluZSgkcHBpZCkpOworfQorCitzdWIgcHJvY2Vzc19ldmVudHMgeworCW15ICR0cmFjZWV2ZW50OworCW15ICRwcm9jZXNzX3BpZDsKKwlteSAkY3B1czsKKwlteSAkdGltZXN0YW1wOworCW15ICR0cmFjZXBvaW50OworCW15ICRkZXRhaWxzOworCW15ICRzdGF0bGluZTsKKworCSMgUmVhZCBlYWNoIGxpbmUgb2YgdGhlIGV2ZW50IGxvZworRVZFTlRfUFJPQ0VTUzoKKwl3aGlsZSAoJHRyYWNlZXZlbnQgPSA8U1RESU4+KSB7CisJCWlmICgkdHJhY2VldmVudCA9fiAvJHJlZ2V4X3RyYWNlZXZlbnQvbykgeworCQkJJHByb2Nlc3NfcGlkID0gJDE7CisJCQkkdHJhY2Vwb2ludCA9ICQ0OworCisJCQlpZiAoJG9wdF9yZWFkX3Byb2NzdGF0IHx8ICRvcHRfcHJlcGVuZF9wYXJlbnQpIHsKKwkJCQkkcHJvY2Vzc19waWQgPX4gLyguKiktKFswLTldKikkLzsKKwkJCQlteSAkcHJvY2VzcyA9ICQxOworCQkJCW15ICRwaWQgPSAkMjsKKworCQkJCSRzdGF0bGluZSA9IHJlYWRfc3RhdGxpbmUoJHBpZCk7CisKKwkJCQlpZiAoJG9wdF9yZWFkX3Byb2NzdGF0ICYmICRwcm9jZXNzIGVxICcnKSB7CisJCQkJCSRwcm9jZXNzX3BpZCA9IGd1ZXNzX3Byb2Nlc3NfcGlkKCRwaWQsICRzdGF0bGluZSk7CisJCQkJfQorCisJCQkJaWYgKCRvcHRfcHJlcGVuZF9wYXJlbnQpIHsKKwkJCQkJJHByb2Nlc3NfcGlkID0gcGFyZW50X2luZm8oJHBpZCwgJHN0YXRsaW5lKSAuICIgOjogJHByb2Nlc3NfcGlkIjsKKwkJCQl9CisJCQl9CisKKwkJCSMgVW5uZWNlc3NhcnkgaW4gdGhpcyBzY3JpcHQuIFVuY29tbWVudCBpZiByZXF1aXJlZAorCQkJIyAkY3B1cyA9ICQyOworCQkJIyAkdGltZXN0YW1wID0gJDM7CisJCX0gZWxzZSB7CisJCQluZXh0OworCQl9CisKKwkJIyBQZXJsIFN3aXRjaCgpIHN1Y2tzIG1ham9ybHkKKwkJaWYgKCR0cmFjZXBvaW50IGVxICJtbV9wYWdlX2FsbG9jIikgeworCQkJJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e01NX1BBR0VfQUxMT0N9Kys7CisJCX0gZWxzaWYgKCR0cmFjZXBvaW50IGVxICJtbV9wYWdlX2ZyZWUiKSB7CisJCQkkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57TU1fUEFHRV9GUkVFfSsrCisJCX0gZWxzaWYgKCR0cmFjZXBvaW50IGVxICJtbV9wYWdlX2ZyZWVfYmF0Y2hlZCIpIHsKKwkJCSRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntNTV9QQUdFX0ZSRUVfQkFUQ0hFRH0rKzsKKwkJfSBlbHNpZiAoJHRyYWNlcG9pbnQgZXEgIm1tX3BhZ2VfcGNwdV9kcmFpbiIpIHsKKwkJCSRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntNTV9QQUdFX1BDUFVfRFJBSU59Kys7CisJCQkkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57U1RBVEVfUENQVV9QQUdFU19EUkFJTkVEfSsrOworCQl9IGVsc2lmICgkdHJhY2Vwb2ludCBlcSAibW1fcGFnZV9hbGxvY196b25lX2xvY2tlZCIpIHsKKwkJCSRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntNTV9QQUdFX0FMTE9DX1pPTkVfTE9DS0VEfSsrOworCQkJJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e1NUQVRFX1BDUFVfUEFHRVNfUkVGSUxMRUR9Kys7CisJCX0gZWxzaWYgKCR0cmFjZXBvaW50IGVxICJtbV9wYWdlX2FsbG9jX2V4dGZyYWciKSB7CisKKwkJCSMgRXh0cmFjdCB0aGUgZGV0YWlscyBvZiB0aGUgZXZlbnQgbm93CisJCQkkZGV0YWlscyA9ICQ1OworCisJCQlteSAoJHBhZ2UsICRwZm4pOworCQkJbXkgKCRhbGxvY19vcmRlciwgJGZhbGxiYWNrX29yZGVyLCAkcGFnZWJsb2NrX29yZGVyKTsKKwkJCW15ICgkYWxsb2NfbWlncmF0ZXR5cGUsICRmYWxsYmFja19taWdyYXRldHlwZSk7CisJCQlteSAoJGZyYWdtZW50aW5nLCAkY2hhbmdlX293bmVyc2hpcCk7CisKKwkJCWlmICgkZGV0YWlscyAhfiAvJHJlZ2V4X2ZyYWdkZXRhaWxzL28pIHsKKwkJCQlwcmludCAiV0FSTklORzogRmFpbGVkIHRvIHBhcnNlIG1tX3BhZ2VfYWxsb2NfZXh0ZnJhZyBhcyBleHBlY3RlZFxuIjsKKwkJCQluZXh0OworCQkJfQorCisJCQkkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57TU1fUEFHRV9BTExPQ19FWFRGUkFHfSsrOworCQkJJHBhZ2UgPSAkMTsKKwkJCSRwZm4gPSAkMjsKKwkJCSRhbGxvY19vcmRlciA9ICQzOworCQkJJGZhbGxiYWNrX29yZGVyID0gJDQ7CisJCQkkcGFnZWJsb2NrX29yZGVyID0gJDU7CisJCQkkYWxsb2NfbWlncmF0ZXR5cGUgPSAkNjsKKwkJCSRmYWxsYmFja19taWdyYXRldHlwZSA9ICQ3OworCQkJJGZyYWdtZW50aW5nID0gJDg7CisJCQkkY2hhbmdlX293bmVyc2hpcCA9ICQ5OworCisJCQlpZiAoJGZyYWdtZW50aW5nKSB7CisJCQkJJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e0hJR0hfRVhUX0ZSQUd9Kys7CisJCQkJaWYgKCRmYWxsYmFja19vcmRlciA8PSAzKSB7CisJCQkJCSRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntISUdIX0VYVF9GUkFHTUVOVF9TRVZFUkV9Kys7CisJCQkJfSBlbHNlIHsKKwkJCQkJJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e0hJR0hfRVhUX0ZSQUdNRU5UX01PREVSQVRFfSsrOworCQkJCX0KKwkJCX0KKwkJCWlmICgkY2hhbmdlX293bmVyc2hpcCkgeworCQkJCSRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntISUdIX0VYVF9GUkFHTUVOVF9DSEFOR0VEfSsrOworCQkJfQorCQl9IGVsc2UgeworCQkJJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e0VWRU5UX1VOS05PV059Kys7CisJCX0KKworCQkjIENhdGNoIGEgZnVsbCBwY3B1IGRyYWluIGV2ZW50CisJCWlmICgkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57U1RBVEVfUENQVV9QQUdFU19EUkFJTkVEfSAmJgorCQkJCSR0cmFjZXBvaW50IG5lICJtbV9wYWdlX3BjcHVfZHJhaW4iKSB7CisKKwkJCSRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntISUdIX1BDUFVfRFJBSU5TfSsrOworCQkJJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e1NUQVRFX1BDUFVfUEFHRVNfRFJBSU5FRH0gPSAwOworCQl9CisKKwkJIyBDYXRjaCBhIGZ1bGwgcGNwdSByZWZpbGwgZXZlbnQKKwkJaWYgKCRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntTVEFURV9QQ1BVX1BBR0VTX1JFRklMTEVEfSAmJgorCQkJCSR0cmFjZXBvaW50IG5lICJtbV9wYWdlX2FsbG9jX3pvbmVfbG9ja2VkIikgeworCQkJJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e0hJR0hfUENQVV9SRUZJTExTfSsrOworCQkJJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e1NUQVRFX1BDUFVfUEFHRVNfUkVGSUxMRUR9ID0gMDsKKwkJfQorCisJCWlmICgkc2lnaW50X3BlbmRpbmcpIHsKKwkJCWxhc3QgRVZFTlRfUFJPQ0VTUzsKKwkJfQorCX0KK30KKworc3ViIGR1bXBfc3RhdHMgeworCW15ICRoYXNocmVmID0gc2hpZnQ7CisJbXkgJXN0YXRzID0gJSRoYXNocmVmOworCisJIyBEdW1wIHBlci1wcm9jZXNzIHN0YXRzCisJbXkgJHByb2Nlc3NfcGlkOworCW15ICRtYXhfc3RybGVuID0gMDsKKworCSMgR2V0IHRoZSBtYXhpbXVtIHByb2Nlc3MgbmFtZQorCWZvcmVhY2ggJHByb2Nlc3NfcGlkIChrZXlzICVwZXJwcm9jZXNzcGlkKSB7CisJCW15ICRsZW4gPSBsZW5ndGgoJHByb2Nlc3NfcGlkKTsKKwkJaWYgKCRsZW4gPiAkbWF4X3N0cmxlbikgeworCQkJJG1heF9zdHJsZW4gPSAkbGVuOworCQl9CisJfQorCSRtYXhfc3RybGVuICs9IDI7CisKKwlwcmludGYoIlxuIik7CisJcHJpbnRmKCIlLSIgLiAkbWF4X3N0cmxlbiAuICJzICU4cyAlMTBzICAgJThzICU4cyAgICU4cyAlOHMgJThzICAgJThzICU4cyAlOHMgJThzICU4cyAlOHNcbiIsCisJCSJQcm9jZXNzIiwgIlBhZ2VzIiwgICJQYWdlcyIsICAgICAgIlBhZ2VzIiwgIlBhZ2VzIiwgIlBDUFUiLCAgIlBDUFUiLCAgICJQQ1BVIiwgICAgIkZyYWdtZW50IiwgICJGcmFnbWVudCIsICJNaWdUeXBlIiwgIkZyYWdtZW50IiwgIkZyYWdtZW50IiwgIlVua25vd24iKTsKKwlwcmludGYoIiUtIiAuICRtYXhfc3RybGVuIC4gInMgJThzICUxMHMgICAlOHMgJThzICAgJThzICU4cyAlOHMgICAlOHMgJThzICU4cyAlOHMgJThzICU4c1xuIiwKKwkJImRldGFpbHMiLCAiYWxsb2NkIiwgImFsbG9jZCIsICAgICAiZnJlZWQiLCAiZnJlZWQiLCAicGFnZXMiLCAiZHJhaW5zIiwgInJlZmlsbHMiLCAiRmFsbGJhY2siLCAiQ2F1c2luZyIsICAgIkNoYW5nZWQiLCAiU2V2ZXJlIiwgIk1vZGVyYXRlIiwgIiIpOworCisJcHJpbnRmKCIlLSIgLiAkbWF4X3N0cmxlbiAuICJzICU4cyAlMTBzICAgJThzICU4cyAgICU4cyAlOHMgJThzICAgJThzICU4cyAlOHMgJThzICU4cyAlOHNcbiIsCisJCSIiLCAgICAgICAgIiIsICAgICAgICJ1bmRlciBsb2NrIiwgImRpcmVjdCIsICJwYWdldmVjIiwgImRyYWluIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiKTsKKworCWZvcmVhY2ggJHByb2Nlc3NfcGlkIChrZXlzICVzdGF0cykgeworCQkjIER1bXAgZmluYWwgYWdncmVnYXRlcworCQlpZiAoJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntTVEFURV9QQ1BVX1BBR0VTX0RSQUlORUR9KSB7CisJCQkkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e0hJR0hfUENQVV9EUkFJTlN9Kys7CisJCQkkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e1NUQVRFX1BDUFVfUEFHRVNfRFJBSU5FRH0gPSAwOworCQl9CisJCWlmICgkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e1NUQVRFX1BDUFVfUEFHRVNfUkVGSUxMRUR9KSB7CisJCQkkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e0hJR0hfUENQVV9SRUZJTExTfSsrOworCQkJJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntTVEFURV9QQ1BVX1BBR0VTX1JFRklMTEVEfSA9IDA7CisJCX0KKworCQlwcmludGYoIiUtIiAuICRtYXhfc3RybGVuIC4gInMgJThkICUxMGQgICAlOGQgJThkICAgJThkICU4ZCAlOGQgICAlOGQgJThkICU4ZCAlOGQgJThkICU4ZFxuIiwKKwkJCSRwcm9jZXNzX3BpZCwKKwkJCSRzdGF0c3skcHJvY2Vzc19waWR9LT57TU1fUEFHRV9BTExPQ30sCisJCQkkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e01NX1BBR0VfQUxMT0NfWk9ORV9MT0NLRUR9LAorCQkJJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntNTV9QQUdFX0ZSRUV9LAorCQkJJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntNTV9QQUdFX0ZSRUVfQkFUQ0hFRH0sCisJCQkkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e01NX1BBR0VfUENQVV9EUkFJTn0sCisJCQkkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e0hJR0hfUENQVV9EUkFJTlN9LAorCQkJJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntISUdIX1BDUFVfUkVGSUxMU30sCisJCQkkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e01NX1BBR0VfQUxMT0NfRVhURlJBR30sCisJCQkkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e0hJR0hfRVhUX0ZSQUd9LAorCQkJJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntISUdIX0VYVF9GUkFHTUVOVF9DSEFOR0VEfSwKKwkJCSRzdGF0c3skcHJvY2Vzc19waWR9LT57SElHSF9FWFRfRlJBR01FTlRfU0VWRVJFfSwKKwkJCSRzdGF0c3skcHJvY2Vzc19waWR9LT57SElHSF9FWFRfRlJBR01FTlRfTU9ERVJBVEV9LAorCQkJJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntFVkVOVF9VTktOT1dOfSk7CisJfQorfQorCitzdWIgYWdncmVnYXRlX3BlcnByb2Nlc3NwaWQoKSB7CisJbXkgJHByb2Nlc3NfcGlkOworCW15ICRwcm9jZXNzOworCXVuZGVmICVwZXJwcm9jZXNzOworCisJZm9yZWFjaCAkcHJvY2Vzc19waWQgKGtleXMgJXBlcnByb2Nlc3NwaWQpIHsKKwkJJHByb2Nlc3MgPSAkcHJvY2Vzc19waWQ7CisJCSRwcm9jZXNzID1+IHMvLShbMC05XSkqJC8vOworCQlpZiAoJHByb2Nlc3MgZXEgJycpIHsKKwkJCSRwcm9jZXNzID0gIk5PX1BST0NFU1NfTkFNRSI7CisJCX0KKworCQkkcGVycHJvY2Vzc3skcHJvY2Vzc30tPntNTV9QQUdFX0FMTE9DfSArPSAkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57TU1fUEFHRV9BTExPQ307CisJCSRwZXJwcm9jZXNzeyRwcm9jZXNzfS0+e01NX1BBR0VfQUxMT0NfWk9ORV9MT0NLRUR9ICs9ICRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntNTV9QQUdFX0FMTE9DX1pPTkVfTE9DS0VEfTsKKwkJJHBlcnByb2Nlc3N7JHByb2Nlc3N9LT57TU1fUEFHRV9GUkVFfSArPSAkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57TU1fUEFHRV9GUkVFfTsKKwkJJHBlcnByb2Nlc3N7JHByb2Nlc3N9LT57TU1fUEFHRV9GUkVFX0JBVENIRUR9ICs9ICRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntNTV9QQUdFX0ZSRUVfQkFUQ0hFRH07CisJCSRwZXJwcm9jZXNzeyRwcm9jZXNzfS0+e01NX1BBR0VfUENQVV9EUkFJTn0gKz0gJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e01NX1BBR0VfUENQVV9EUkFJTn07CisJCSRwZXJwcm9jZXNzeyRwcm9jZXNzfS0+e0hJR0hfUENQVV9EUkFJTlN9ICs9ICRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntISUdIX1BDUFVfRFJBSU5TfTsKKwkJJHBlcnByb2Nlc3N7JHByb2Nlc3N9LT57SElHSF9QQ1BVX1JFRklMTFN9ICs9ICRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntISUdIX1BDUFVfUkVGSUxMU307CisJCSRwZXJwcm9jZXNzeyRwcm9jZXNzfS0+e01NX1BBR0VfQUxMT0NfRVhURlJBR30gKz0gJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e01NX1BBR0VfQUxMT0NfRVhURlJBR307CisJCSRwZXJwcm9jZXNzeyRwcm9jZXNzfS0+e0hJR0hfRVhUX0ZSQUd9ICs9ICRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntISUdIX0VYVF9GUkFHfTsKKwkJJHBlcnByb2Nlc3N7JHByb2Nlc3N9LT57SElHSF9FWFRfRlJBR01FTlRfQ0hBTkdFRH0gKz0gJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e0hJR0hfRVhUX0ZSQUdNRU5UX0NIQU5HRUR9OworCQkkcGVycHJvY2Vzc3skcHJvY2Vzc30tPntISUdIX0VYVF9GUkFHTUVOVF9TRVZFUkV9ICs9ICRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntISUdIX0VYVF9GUkFHTUVOVF9TRVZFUkV9OworCQkkcGVycHJvY2Vzc3skcHJvY2Vzc30tPntISUdIX0VYVF9GUkFHTUVOVF9NT0RFUkFURX0gKz0gJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e0hJR0hfRVhUX0ZSQUdNRU5UX01PREVSQVRFfTsKKwkJJHBlcnByb2Nlc3N7JHByb2Nlc3N9LT57RVZFTlRfVU5LTk9XTn0gKz0gJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e0VWRU5UX1VOS05PV059OworCX0KK30KKworc3ViIHJlcG9ydCgpIHsKKwlpZiAoISRvcHRfaWdub3JlcGlkKSB7CisJCWR1bXBfc3RhdHMoXCVwZXJwcm9jZXNzcGlkKTsKKwl9IGVsc2UgeworCQlhZ2dyZWdhdGVfcGVycHJvY2Vzc3BpZCgpOworCQlkdW1wX3N0YXRzKFwlcGVycHJvY2Vzcyk7CisJfQorfQorCisjIFByb2Nlc3MgZXZlbnRzIG9yIHNpZ25hbHMgdW50aWwgbmVpdGhlciBpcyBhdmFpbGFibGUKK3N1YiBzaWduYWxfbG9vcCgpIHsKKwlteSAkc2lnaW50X3Byb2Nlc3NlZDsKKwlkbyB7CisJCSRzaWdpbnRfcHJvY2Vzc2VkID0gMDsKKwkJcHJvY2Vzc19ldmVudHMoKTsKKworCQkjIEhhbmRsZSBwZW5kaW5nIHNpZ25hbHMgaWYgYW55CisJCWlmICgkc2lnaW50X3BlbmRpbmcpIHsKKwkJCW15ICRjdXJyZW50X3RpbWUgPSB0aW1lOworCisJCQlpZiAoJHNpZ2ludF9leGl0KSB7CisJCQkJcHJpbnQgIlJlY2VpdmVkIGV4aXQgc2lnbmFsXG4iOworCQkJCSRzaWdpbnRfcGVuZGluZyA9IDA7CisJCQl9CisJCQlpZiAoJHNpZ2ludF9yZXBvcnQpIHsKKwkJCQlpZiAoJGN1cnJlbnRfdGltZSA+PSAkc2lnaW50X3JlY2VpdmVkICsgMikgeworCQkJCQlyZXBvcnQoKTsKKwkJCQkJJHNpZ2ludF9yZXBvcnQgPSAwOworCQkJCQkkc2lnaW50X3BlbmRpbmcgPSAwOworCQkJCQkkc2lnaW50X3Byb2Nlc3NlZCA9IDE7CisJCQkJfQorCQkJfQorCQl9CisJfSB3aGlsZSAoJHNpZ2ludF9wZW5kaW5nIHx8ICRzaWdpbnRfcHJvY2Vzc2VkKTsKK30KKworc2lnbmFsX2xvb3AoKTsKK3JlcG9ydCgpOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90cmFjZS9wb3N0cHJvY2Vzcy90cmFjZS12bXNjYW4tcG9zdHByb2Nlc3MucGwgYi9Eb2N1bWVudGF0aW9uL3RyYWNlL3Bvc3Rwcm9jZXNzL3RyYWNlLXZtc2Nhbi1wb3N0cHJvY2Vzcy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Zjk2MWVmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi90cmFjZS9wb3N0cHJvY2Vzcy90cmFjZS12bXNjYW4tcG9zdHByb2Nlc3MucGwKQEAgLTAsMCArMSw3NTcgQEAKKyMhL3Vzci9iaW4vcGVybAorIyBUaGlzIGlzIGEgUE9DIGZvciByZWFkaW5nIHRoZSB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIHRyYWNlIG91dHB1dCByZWxhdGVkIHRvCisjIHBhZ2UgcmVjbGFpbS4gSXQgbWFrZXMgYW4gYXR0ZW1wdCB0byBleHRyYWN0IHNvbWUgaGlnaC1sZXZlbCBpbmZvcm1hdGlvbiBvbgorIyB3aGF0IGlzIGdvaW5nIG9uLiBUaGUgYWNjdXJhY3kgb2YgdGhlIHBhcnNlciBtYXkgdmFyeQorIworIyBFeGFtcGxlIHVzYWdlOiB0cmFjZS12bXNjYW4tcG9zdHByb2Nlc3MucGwgPCAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3RyYWNlX3BpcGUKKyMgb3RoZXIgb3B0aW9ucworIyAgIC0tcmVhZC1wcm9jc3RhdAlJZiB0aGUgdHJhY2UgbGFja3MgcHJvY2VzcyBpbmZvLCBnZXQgaXQgZnJvbSAvcHJvYworIyAgIC0taWdub3JlLXBpZAlBZ2dyZWdhdGUgcHJvY2Vzc2VzIG9mIHRoZSBzYW1lIG5hbWUgdG9nZXRoZXIKKyMKKyMgQ29weXJpZ2h0IChjKSBJQk0gQ29ycG9yYXRpb24gMjAwOQorIyBBdXRob3I6IE1lbCBHb3JtYW4gPG1lbEBjc24udWwuaWU+Cit1c2Ugc3RyaWN0OwordXNlIEdldG9wdDo6TG9uZzsKKworIyBUcmFjZXBvaW50IGV2ZW50cwordXNlIGNvbnN0YW50IE1NX1ZNU0NBTl9ESVJFQ1RfUkVDTEFJTV9CRUdJTgk9PiAxOwordXNlIGNvbnN0YW50IE1NX1ZNU0NBTl9ESVJFQ1RfUkVDTEFJTV9FTkQJPT4gMjsKK3VzZSBjb25zdGFudCBNTV9WTVNDQU5fS1NXQVBEX1dBS0UJCT0+IDM7Cit1c2UgY29uc3RhbnQgTU1fVk1TQ0FOX0tTV0FQRF9TTEVFUAkJPT4gNDsKK3VzZSBjb25zdGFudCBNTV9WTVNDQU5fTFJVX1NIUklOS19BQ1RJVkUJPT4gNTsKK3VzZSBjb25zdGFudCBNTV9WTVNDQU5fTFJVX1NIUklOS19JTkFDVElWRQk9PiA2OwordXNlIGNvbnN0YW50IE1NX1ZNU0NBTl9MUlVfSVNPTEFURQkJPT4gNzsKK3VzZSBjb25zdGFudCBNTV9WTVNDQU5fV1JJVEVQQUdFX0ZJTEVfU1lOQwk9PiA4OwordXNlIGNvbnN0YW50IE1NX1ZNU0NBTl9XUklURVBBR0VfQU5PTl9TWU5DCT0+IDk7Cit1c2UgY29uc3RhbnQgTU1fVk1TQ0FOX1dSSVRFUEFHRV9GSUxFX0FTWU5DCT0+IDEwOwordXNlIGNvbnN0YW50IE1NX1ZNU0NBTl9XUklURVBBR0VfQU5PTl9BU1lOQwk9PiAxMTsKK3VzZSBjb25zdGFudCBNTV9WTVNDQU5fV1JJVEVQQUdFX0FTWU5DCQk9PiAxMjsKK3VzZSBjb25zdGFudCBFVkVOVF9VTktOT1dOCQkJPT4gMTM7CisKKyMgUGVyLW9yZGVyIGV2ZW50cwordXNlIGNvbnN0YW50IE1NX1ZNU0NBTl9ESVJFQ1RfUkVDTEFJTV9CRUdJTl9QRVJPUkRFUiA9PiAxMTsKK3VzZSBjb25zdGFudCBNTV9WTVNDQU5fV0FLRVVQX0tTV0FQRF9QRVJPUkRFUiAJPT4gMTI7Cit1c2UgY29uc3RhbnQgTU1fVk1TQ0FOX0tTV0FQRF9XQUtFX1BFUk9SREVSCT0+IDEzOwordXNlIGNvbnN0YW50IEhJR0hfS1NXQVBEX1JFV0FLRVVQX1BFUk9SREVSCT0+IDE0OworCisjIENvbnN0YW50cyB1c2VkIHRvIHRyYWNrIHN0YXRlCit1c2UgY29uc3RhbnQgU1RBVEVfRElSRUNUX0JFR0lOIAkJPT4gMTU7Cit1c2UgY29uc3RhbnQgU1RBVEVfRElSRUNUX09SREVSIAkJPT4gMTY7Cit1c2UgY29uc3RhbnQgU1RBVEVfS1NXQVBEX0JFR0lOCQkJPT4gMTc7Cit1c2UgY29uc3RhbnQgU1RBVEVfS1NXQVBEX09SREVSCQkJPT4gMTg7CisKKyMgSGlnaC1sZXZlbCBldmVudHMgZXh0cmFwb2xhdGVkIGZyb20gdHJhY2Vwb2ludHMKK3VzZSBjb25zdGFudCBISUdIX0RJUkVDVF9SRUNMQUlNX0xBVEVOQ1kJPT4gMTk7Cit1c2UgY29uc3RhbnQgSElHSF9LU1dBUERfTEFURU5DWQkJPT4gMjA7Cit1c2UgY29uc3RhbnQgSElHSF9LU1dBUERfUkVXQUtFVVAJCT0+IDIxOwordXNlIGNvbnN0YW50IEhJR0hfTlJfU0NBTk5FRAkJCT0+IDIyOwordXNlIGNvbnN0YW50IEhJR0hfTlJfVEFLRU4JCQk9PiAyMzsKK3VzZSBjb25zdGFudCBISUdIX05SX1JFQ0xBSU1FRAkJCT0+IDI0OwordXNlIGNvbnN0YW50IEhJR0hfTlJfRklMRV9TQ0FOTkVECQk9PiAyNTsKK3VzZSBjb25zdGFudCBISUdIX05SX0FOT05fU0NBTk5FRAkJPT4gMjY7Cit1c2UgY29uc3RhbnQgSElHSF9OUl9GSUxFX1JFQ0xBSU1FRAkJPT4gMjc7Cit1c2UgY29uc3RhbnQgSElHSF9OUl9BTk9OX1JFQ0xBSU1FRAkJPT4gMjg7CisKK215ICVwZXJwcm9jZXNzcGlkOworbXkgJXBlcnByb2Nlc3M7CitteSAlbGFzdF9wcm9jbWFwOworbXkgJG9wdF9pZ25vcmVwaWQ7CitteSAkb3B0X3JlYWRfcHJvY3N0YXQ7CisKK215ICR0b3RhbF93YWtldXBfa3N3YXBkOworbXkgKCR0b3RhbF9kaXJlY3RfcmVjbGFpbSwgJHRvdGFsX2RpcmVjdF9ucl9zY2FubmVkKTsKK215ICgkdG90YWxfZGlyZWN0X25yX2ZpbGVfc2Nhbm5lZCwgJHRvdGFsX2RpcmVjdF9ucl9hbm9uX3NjYW5uZWQpOworbXkgKCR0b3RhbF9kaXJlY3RfbGF0ZW5jeSwgJHRvdGFsX2tzd2FwZF9sYXRlbmN5KTsKK215ICgkdG90YWxfZGlyZWN0X25yX3JlY2xhaW1lZCk7CitteSAoJHRvdGFsX2RpcmVjdF9ucl9maWxlX3JlY2xhaW1lZCwgJHRvdGFsX2RpcmVjdF9ucl9hbm9uX3JlY2xhaW1lZCk7CitteSAoJHRvdGFsX2RpcmVjdF93cml0ZXBhZ2VfZmlsZV9zeW5jLCAkdG90YWxfZGlyZWN0X3dyaXRlcGFnZV9maWxlX2FzeW5jKTsKK215ICgkdG90YWxfZGlyZWN0X3dyaXRlcGFnZV9hbm9uX3N5bmMsICR0b3RhbF9kaXJlY3Rfd3JpdGVwYWdlX2Fub25fYXN5bmMpOworbXkgKCR0b3RhbF9rc3dhcGRfbnJfc2Nhbm5lZCwgJHRvdGFsX2tzd2FwZF93YWtlKTsKK215ICgkdG90YWxfa3N3YXBkX25yX2ZpbGVfc2Nhbm5lZCwgJHRvdGFsX2tzd2FwZF9ucl9hbm9uX3NjYW5uZWQpOworbXkgKCR0b3RhbF9rc3dhcGRfd3JpdGVwYWdlX2ZpbGVfc3luYywgJHRvdGFsX2tzd2FwZF93cml0ZXBhZ2VfZmlsZV9hc3luYyk7CitteSAoJHRvdGFsX2tzd2FwZF93cml0ZXBhZ2VfYW5vbl9zeW5jLCAkdG90YWxfa3N3YXBkX3dyaXRlcGFnZV9hbm9uX2FzeW5jKTsKK215ICgkdG90YWxfa3N3YXBkX25yX3JlY2xhaW1lZCk7CitteSAoJHRvdGFsX2tzd2FwZF9ucl9maWxlX3JlY2xhaW1lZCwgJHRvdGFsX2tzd2FwZF9ucl9hbm9uX3JlY2xhaW1lZCk7CisKKyMgQ2F0Y2ggc2lnaW50IGFuZCBleGl0IG9uIHJlcXVlc3QKK215ICRzaWdpbnRfcmVwb3J0ID0gMDsKK215ICRzaWdpbnRfZXhpdCA9IDA7CitteSAkc2lnaW50X3BlbmRpbmcgPSAwOworbXkgJHNpZ2ludF9yZWNlaXZlZCA9IDA7CitzdWIgc2lnaW50X2hhbmRsZXIgeworCW15ICRjdXJyZW50X3RpbWUgPSB0aW1lOworCWlmICgkY3VycmVudF90aW1lIC0gMiA+ICRzaWdpbnRfcmVjZWl2ZWQpIHsKKwkJcHJpbnQgIlNJR0lOVCByZWNlaXZlZCwgcmVwb3J0IHBlbmRpbmcuIEhpdCBjdHJsLWMgYWdhaW4gdG8gZXhpdFxuIjsKKwkJJHNpZ2ludF9yZXBvcnQgPSAxOworCX0gZWxzZSB7CisJCWlmICghJHNpZ2ludF9leGl0KSB7CisJCQlwcmludCAiU2Vjb25kIFNJR0lOVCByZWNlaXZlZCBxdWlja2x5LCBleGl0aW5nXG4iOworCQl9CisJCSRzaWdpbnRfZXhpdCsrOworCX0KKworCWlmICgkc2lnaW50X2V4aXQgPiAzKSB7CisJCXByaW50ICJNYW55IFNJR0lOVHMgcmVjZWl2ZWQsIGV4aXRpbmcgbm93IHdpdGhvdXQgcmVwb3J0XG4iOworCQlleGl0OworCX0KKworCSRzaWdpbnRfcmVjZWl2ZWQgPSAkY3VycmVudF90aW1lOworCSRzaWdpbnRfcGVuZGluZyA9IDE7Cit9CiskU0lHe0lOVH0gPSAic2lnaW50X2hhbmRsZXIiOworCisjIFBhcnNlIGNvbW1hbmQgbGluZSBvcHRpb25zCitHZXRPcHRpb25zKAorCSdpZ25vcmUtcGlkJwkgPT4JXCRvcHRfaWdub3JlcGlkLAorCSdyZWFkLXByb2NzdGF0JwkgPT4JXCRvcHRfcmVhZF9wcm9jc3RhdCwKKyk7CisKKyMgRGVmYXVsdHMgZm9yIGR5bmFtaWNhbGx5IGRpc2NvdmVyZWQgcmVnZXgncworbXkgJHJlZ2V4X2RpcmVjdF9iZWdpbl9kZWZhdWx0ID0gJ29yZGVyPShbMC05XSopIG1heV93cml0ZXBhZ2U9KFswLTldKikgZ2ZwX2ZsYWdzPShbQS1aX3xdKiknOworbXkgJHJlZ2V4X2RpcmVjdF9lbmRfZGVmYXVsdCA9ICducl9yZWNsYWltZWQ9KFswLTldKiknOworbXkgJHJlZ2V4X2tzd2FwZF93YWtlX2RlZmF1bHQgPSAnbmlkPShbMC05XSopIG9yZGVyPShbMC05XSopJzsKK215ICRyZWdleF9rc3dhcGRfc2xlZXBfZGVmYXVsdCA9ICduaWQ9KFswLTldKiknOworbXkgJHJlZ2V4X3dha2V1cF9rc3dhcGRfZGVmYXVsdCA9ICduaWQ9KFswLTldKikgemlkPShbMC05XSopIG9yZGVyPShbMC05XSopJzsKK215ICRyZWdleF9scnVfaXNvbGF0ZV9kZWZhdWx0ID0gJ2lzb2xhdGVfbW9kZT0oWzAtOV0qKSBvcmRlcj0oWzAtOV0qKSBucl9yZXF1ZXN0ZWQ9KFswLTldKikgbnJfc2Nhbm5lZD0oWzAtOV0qKSBucl90YWtlbj0oWzAtOV0qKSBmaWxlPShbMC05XSopJzsKK215ICRyZWdleF9scnVfc2hyaW5rX2luYWN0aXZlX2RlZmF1bHQgPSAnbmlkPShbMC05XSopIHppZD0oWzAtOV0qKSBucl9zY2FubmVkPShbMC05XSopIG5yX3JlY2xhaW1lZD0oWzAtOV0qKSBwcmlvcml0eT0oWzAtOV0qKSBmbGFncz0oW0EtWl98XSopJzsKK215ICRyZWdleF9scnVfc2hyaW5rX2FjdGl2ZV9kZWZhdWx0ID0gJ2xydT0oW0EtWl9dKikgbnJfc2Nhbm5lZD0oWzAtOV0qKSBucl9yb3RhdGVkPShbMC05XSopIHByaW9yaXR5PShbMC05XSopJzsKK215ICRyZWdleF93cml0ZXBhZ2VfZGVmYXVsdCA9ICdwYWdlPShbMC05YS1mXSopIHBmbj0oWzAtOV0qKSBmbGFncz0oW0EtWl98XSopJzsKKworIyBEeWFuaWNhbGx5IGRpc2NvdmVyZWQgcmVnZXgKK215ICRyZWdleF9kaXJlY3RfYmVnaW47CitteSAkcmVnZXhfZGlyZWN0X2VuZDsKK215ICRyZWdleF9rc3dhcGRfd2FrZTsKK215ICRyZWdleF9rc3dhcGRfc2xlZXA7CitteSAkcmVnZXhfd2FrZXVwX2tzd2FwZDsKK215ICRyZWdleF9scnVfaXNvbGF0ZTsKK215ICRyZWdleF9scnVfc2hyaW5rX2luYWN0aXZlOworbXkgJHJlZ2V4X2xydV9zaHJpbmtfYWN0aXZlOworbXkgJHJlZ2V4X3dyaXRlcGFnZTsKKworIyBTdGF0aWMgcmVnZXggdXNlZC4gU3BlY2lmaWVkIGxpa2UgdGhpcyBmb3IgcmVhZGFiaWxpdHkgYW5kIGZvciB1c2Ugd2l0aCAvbworIyAgICAgICAgICAgICAgICAgICAgICAocHJvY2Vzc19waWQpICAgICAoY3B1cyAgICAgICkgICAoIHRpbWUgICkgICAodHBvaW50ICAgICkgKGRldGFpbHMpCitteSAkcmVnZXhfdHJhY2VldmVudCA9ICdccyooW2EtekEtWjAtOS1dKilccyooXFtbMC05XSpcXSkoXHMqW2RYLl1bTm5wLl1bSGhzLl1bMC05YS1mQS1GLl0qfClccyooWzAtOS5dKik6XHMqKFthLXpBLVpfXSopOlxzKiguKiknOworbXkgJHJlZ2V4X3N0YXRuYW1lID0gJ1stMC05XSpcc1woKC4qKVwpLionOworbXkgJHJlZ2V4X3N0YXRwcGlkID0gJ1stMC05XSpcc1woLipcKVxzW0EtWmEtel1ccyhbMC05XSopLionOworCitzdWIgZ2VuZXJhdGVfdHJhY2VldmVudF9yZWdleCB7CisJbXkgJGV2ZW50ID0gc2hpZnQ7CisJbXkgJGRlZmF1bHQgPSBzaGlmdDsKKwlteSAkcmVnZXg7CisKKwkjIFJlYWQgdGhlIGV2ZW50IGZvcm1hdCBvciB1c2UgdGhlIGRlZmF1bHQKKwlpZiAoIW9wZW4gKEZPUk1BVCwgIi9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzLyRldmVudC9mb3JtYXQiKSkgeworCQlwcmludCgiV0FSTklORzogRXZlbnQgJGV2ZW50IGZvcm1hdCBzdHJpbmcgbm90IGZvdW5kXG4iKTsKKwkJcmV0dXJuICRkZWZhdWx0OworCX0gZWxzZSB7CisJCW15ICRsaW5lOworCQl3aGlsZSAoIWVvZihGT1JNQVQpKSB7CisJCQkkbGluZSA9IDxGT1JNQVQ+OworCQkJJGxpbmUgPX4gcy8sIFJFQy0+LiovLzsKKwkJCWlmICgkbGluZSA9fiAvXnByaW50IGZtdDpccyIoLiopIi4qLykgeworCQkJCSRyZWdleCA9ICQxOworCQkJCSRyZWdleCA9fiBzLyVzL1woWzAtOWEtekEtWnxfXSpcKS9nOworCQkJCSRyZWdleCA9fiBzLyVwL1woWzAtOWEtZl0qXCkvZzsKKwkJCQkkcmVnZXggPX4gcy8lZC9cKFstMC05XSpcKS9nOworCQkJCSRyZWdleCA9fiBzLyVsZC9cKFstMC05XSpcKS9nOworCQkJCSRyZWdleCA9fiBzLyVsdS9cKFswLTldKlwpL2c7CisJCQl9CisJCX0KKwl9CisKKwkjIENhbid0IGhhbmRsZSB0aGUgcHJpbnRfZmxhZ3Mgc3R1ZmYgYnV0IGluIHRoZSBjb250ZXh0IG9mIHRoaXMKKwkjIHNjcmlwdCwgaXQgcmVhbGx5IGRvZXNuJ3QgbWF0dGVyCisJJHJlZ2V4ID1+IHMvXChSRUMuKlwpIFw/IF9fcHJpbnRfZmxhZ3MuKi8vOworCisJIyBWZXJpZnkgZmllbGRzIGFyZSBpbiB0aGUgcmlnaHQgb3JkZXIKKwlteSAkdHVwbGU7CisJZm9yZWFjaCAkdHVwbGUgKHNwbGl0IC9ccy8sICRyZWdleCkgeworCQlteSAoJGtleSwgJHZhbHVlKSA9IHNwbGl0KC89LywgJHR1cGxlKTsKKwkJbXkgJGV4cGVjdGVkID0gc2hpZnQ7CisJCWlmICgka2V5IG5lICRleHBlY3RlZCkgeworCQkJcHJpbnQoIldBUk5JTkc6IEZvcm1hdCBub3QgYXMgZXhwZWN0ZWQgZm9yIGV2ZW50ICRldmVudCAnJGtleScgIT0gJyRleHBlY3RlZCdcbiIpOworCQkJJHJlZ2V4ID1+IHMvJGtleT1cKCguKilcKS8ka2V5PSQxLzsKKwkJfQorCX0KKworCWlmIChkZWZpbmVkIHNoaWZ0KSB7CisJCWRpZSgiRmV3ZXIgZmllbGRzIHRoYW4gZXhwZWN0ZWQgaW4gZm9ybWF0Iik7CisJfQorCisJcmV0dXJuICRyZWdleDsKK30KKworJHJlZ2V4X2RpcmVjdF9iZWdpbiA9IGdlbmVyYXRlX3RyYWNlZXZlbnRfcmVnZXgoCisJCQkidm1zY2FuL21tX3Ztc2Nhbl9kaXJlY3RfcmVjbGFpbV9iZWdpbiIsCisJCQkkcmVnZXhfZGlyZWN0X2JlZ2luX2RlZmF1bHQsCisJCQkib3JkZXIiLCAibWF5X3dyaXRlcGFnZSIsCisJCQkiZ2ZwX2ZsYWdzIik7CiskcmVnZXhfZGlyZWN0X2VuZCA9IGdlbmVyYXRlX3RyYWNlZXZlbnRfcmVnZXgoCisJCQkidm1zY2FuL21tX3Ztc2Nhbl9kaXJlY3RfcmVjbGFpbV9lbmQiLAorCQkJJHJlZ2V4X2RpcmVjdF9lbmRfZGVmYXVsdCwKKwkJCSJucl9yZWNsYWltZWQiKTsKKyRyZWdleF9rc3dhcGRfd2FrZSA9IGdlbmVyYXRlX3RyYWNlZXZlbnRfcmVnZXgoCisJCQkidm1zY2FuL21tX3Ztc2Nhbl9rc3dhcGRfd2FrZSIsCisJCQkkcmVnZXhfa3N3YXBkX3dha2VfZGVmYXVsdCwKKwkJCSJuaWQiLCAib3JkZXIiKTsKKyRyZWdleF9rc3dhcGRfc2xlZXAgPSBnZW5lcmF0ZV90cmFjZWV2ZW50X3JlZ2V4KAorCQkJInZtc2Nhbi9tbV92bXNjYW5fa3N3YXBkX3NsZWVwIiwKKwkJCSRyZWdleF9rc3dhcGRfc2xlZXBfZGVmYXVsdCwKKwkJCSJuaWQiKTsKKyRyZWdleF93YWtldXBfa3N3YXBkID0gZ2VuZXJhdGVfdHJhY2VldmVudF9yZWdleCgKKwkJCSJ2bXNjYW4vbW1fdm1zY2FuX3dha2V1cF9rc3dhcGQiLAorCQkJJHJlZ2V4X3dha2V1cF9rc3dhcGRfZGVmYXVsdCwKKwkJCSJuaWQiLCAiemlkIiwgIm9yZGVyIik7CiskcmVnZXhfbHJ1X2lzb2xhdGUgPSBnZW5lcmF0ZV90cmFjZWV2ZW50X3JlZ2V4KAorCQkJInZtc2Nhbi9tbV92bXNjYW5fbHJ1X2lzb2xhdGUiLAorCQkJJHJlZ2V4X2xydV9pc29sYXRlX2RlZmF1bHQsCisJCQkiaXNvbGF0ZV9tb2RlIiwgIm9yZGVyIiwKKwkJCSJucl9yZXF1ZXN0ZWQiLCAibnJfc2Nhbm5lZCIsICJucl90YWtlbiIsCisJCQkiZmlsZSIpOworJHJlZ2V4X2xydV9zaHJpbmtfaW5hY3RpdmUgPSBnZW5lcmF0ZV90cmFjZWV2ZW50X3JlZ2V4KAorCQkJInZtc2Nhbi9tbV92bXNjYW5fbHJ1X3Nocmlua19pbmFjdGl2ZSIsCisJCQkkcmVnZXhfbHJ1X3Nocmlua19pbmFjdGl2ZV9kZWZhdWx0LAorCQkJIm5pZCIsICJ6aWQiLAorCQkJIm5yX3NjYW5uZWQiLCAibnJfcmVjbGFpbWVkIiwgInByaW9yaXR5IiwKKwkJCSJmbGFncyIpOworJHJlZ2V4X2xydV9zaHJpbmtfYWN0aXZlID0gZ2VuZXJhdGVfdHJhY2VldmVudF9yZWdleCgKKwkJCSJ2bXNjYW4vbW1fdm1zY2FuX2xydV9zaHJpbmtfYWN0aXZlIiwKKwkJCSRyZWdleF9scnVfc2hyaW5rX2FjdGl2ZV9kZWZhdWx0LAorCQkJIm5pZCIsICJ6aWQiLAorCQkJImxydSIsCisJCQkibnJfc2Nhbm5lZCIsICJucl9yb3RhdGVkIiwgInByaW9yaXR5Iik7CiskcmVnZXhfd3JpdGVwYWdlID0gZ2VuZXJhdGVfdHJhY2VldmVudF9yZWdleCgKKwkJCSJ2bXNjYW4vbW1fdm1zY2FuX3dyaXRlcGFnZSIsCisJCQkkcmVnZXhfd3JpdGVwYWdlX2RlZmF1bHQsCisJCQkicGFnZSIsICJwZm4iLCAiZmxhZ3MiKTsKKworc3ViIHJlYWRfc3RhdGxpbmUoJCkgeworCW15ICRwaWQgPSAkX1swXTsKKwlteSAkc3RhdGxpbmU7CisKKwlpZiAob3BlbihTVEFULCAiL3Byb2MvJHBpZC9zdGF0IikpIHsKKwkJJHN0YXRsaW5lID0gPFNUQVQ+OworCQljbG9zZShTVEFUKTsKKwl9CisKKwlpZiAoJHN0YXRsaW5lIGVxICcnKSB7CisJCSRzdGF0bGluZSA9ICItMSAoVU5LTk9XTl9QUk9DRVNTX05BTUUpIFIgMCI7CisJfQorCisJcmV0dXJuICRzdGF0bGluZTsKK30KKworc3ViIGd1ZXNzX3Byb2Nlc3NfcGlkKCQkKSB7CisJbXkgJHBpZCA9ICRfWzBdOworCW15ICRzdGF0bGluZSA9ICRfWzFdOworCisJaWYgKCRwaWQgPT0gMCkgeworCQlyZXR1cm4gInN3YXBwZXItMCI7CisJfQorCisJaWYgKCRzdGF0bGluZSAhfiAvJHJlZ2V4X3N0YXRuYW1lL28pIHsKKwkJZGllKCJGYWlsZWQgdG8gbWF0aCBzdGF0IGxpbmUgZm9yIHByb2Nlc3MgbmFtZSA6OiAkc3RhdGxpbmUiKTsKKwl9CisJcmV0dXJuICIkMS0kcGlkIjsKK30KKworIyBDb252ZXJ0IHNlYy51c2VjIHRpbWVzdGFtcCBmb3JtYXQKK3N1YiB0aW1lc3RhbXBfdG9fbXMoJCkgeworCW15ICR0aW1lc3RhbXAgPSAkX1swXTsKKworCW15ICgkc2VjLCAkdXNlYykgPSBzcGxpdCAoL1wuLywgJHRpbWVzdGFtcCk7CisJcmV0dXJuICgkc2VjICogMTAwMCkgKyAoJHVzZWMgLyAxMDAwKTsKK30KKworc3ViIHByb2Nlc3NfZXZlbnRzIHsKKwlteSAkdHJhY2VldmVudDsKKwlteSAkcHJvY2Vzc19waWQ7CisJbXkgJGNwdXM7CisJbXkgJHRpbWVzdGFtcDsKKwlteSAkdHJhY2Vwb2ludDsKKwlteSAkZGV0YWlsczsKKwlteSAkc3RhdGxpbmU7CisKKwkjIFJlYWQgZWFjaCBsaW5lIG9mIHRoZSBldmVudCBsb2cKK0VWRU5UX1BST0NFU1M6CisJd2hpbGUgKCR0cmFjZWV2ZW50ID0gPFNURElOPikgeworCQlpZiAoJHRyYWNlZXZlbnQgPX4gLyRyZWdleF90cmFjZWV2ZW50L28pIHsKKwkJCSRwcm9jZXNzX3BpZCA9ICQxOworCQkJJHRpbWVzdGFtcCA9ICQ0OworCQkJJHRyYWNlcG9pbnQgPSAkNTsKKworCQkJJHByb2Nlc3NfcGlkID1+IC8oLiopLShbMC05XSopJC87CisJCQlteSAkcHJvY2VzcyA9ICQxOworCQkJbXkgJHBpZCA9ICQyOworCisJCQlpZiAoJHByb2Nlc3MgZXEgIiIpIHsKKwkJCQkkcHJvY2VzcyA9ICRsYXN0X3Byb2NtYXB7JHBpZH07CisJCQkJJHByb2Nlc3NfcGlkID0gIiRwcm9jZXNzLSRwaWQiOworCQkJfQorCQkJJGxhc3RfcHJvY21hcHskcGlkfSA9ICRwcm9jZXNzOworCisJCQlpZiAoJG9wdF9yZWFkX3Byb2NzdGF0KSB7CisJCQkJJHN0YXRsaW5lID0gcmVhZF9zdGF0bGluZSgkcGlkKTsKKwkJCQlpZiAoJG9wdF9yZWFkX3Byb2NzdGF0ICYmICRwcm9jZXNzIGVxICcnKSB7CisJCQkJCSRwcm9jZXNzX3BpZCA9IGd1ZXNzX3Byb2Nlc3NfcGlkKCRwaWQsICRzdGF0bGluZSk7CisJCQkJfQorCQkJfQorCQl9IGVsc2UgeworCQkJbmV4dDsKKwkJfQorCisJCSMgUGVybCBTd2l0Y2goKSBzdWNrcyBtYWpvcmx5CisJCWlmICgkdHJhY2Vwb2ludCBlcSAibW1fdm1zY2FuX2RpcmVjdF9yZWNsYWltX2JlZ2luIikgeworCQkJJHRpbWVzdGFtcCA9IHRpbWVzdGFtcF90b19tcygkdGltZXN0YW1wKTsKKwkJCSRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntNTV9WTVNDQU5fRElSRUNUX1JFQ0xBSU1fQkVHSU59Kys7CisJCQkkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57U1RBVEVfRElSRUNUX0JFR0lOfSA9ICR0aW1lc3RhbXA7CisKKwkJCSRkZXRhaWxzID0gJDY7CisJCQlpZiAoJGRldGFpbHMgIX4gLyRyZWdleF9kaXJlY3RfYmVnaW4vbykgeworCQkJCXByaW50ICJXQVJOSU5HOiBGYWlsZWQgdG8gcGFyc2UgbW1fdm1zY2FuX2RpcmVjdF9yZWNsYWltX2JlZ2luIGFzIGV4cGVjdGVkXG4iOworCQkJCXByaW50ICIgICAgICAgICAkZGV0YWlsc1xuIjsKKwkJCQlwcmludCAiICAgICAgICAgJHJlZ2V4X2RpcmVjdF9iZWdpblxuIjsKKwkJCQluZXh0OworCQkJfQorCQkJbXkgJG9yZGVyID0gJDE7CisJCQkkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57TU1fVk1TQ0FOX0RJUkVDVF9SRUNMQUlNX0JFR0lOX1BFUk9SREVSfVskb3JkZXJdKys7CisJCQkkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57U1RBVEVfRElSRUNUX09SREVSfSA9ICRvcmRlcjsKKwkJfSBlbHNpZiAoJHRyYWNlcG9pbnQgZXEgIm1tX3Ztc2Nhbl9kaXJlY3RfcmVjbGFpbV9lbmQiKSB7CisJCQkjIENvdW50IHRoZSBldmVudCBpdHNlbGYKKwkJCW15ICRpbmRleCA9ICRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntNTV9WTVNDQU5fRElSRUNUX1JFQ0xBSU1fRU5EfTsKKwkJCSRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntNTV9WTVNDQU5fRElSRUNUX1JFQ0xBSU1fRU5EfSsrOworCisJCQkjIFJlY29yZCBob3cgbG9uZyBkaXJlY3QgcmVjbGFpbSB0b29rIHRoaXMgdGltZQorCQkJaWYgKGRlZmluZWQgJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e1NUQVRFX0RJUkVDVF9CRUdJTn0pIHsKKwkJCQkkdGltZXN0YW1wID0gdGltZXN0YW1wX3RvX21zKCR0aW1lc3RhbXApOworCQkJCW15ICRvcmRlciA9ICRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntTVEFURV9ESVJFQ1RfT1JERVJ9OworCQkJCW15ICRsYXRlbmN5ID0gKCR0aW1lc3RhbXAgLSAkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57U1RBVEVfRElSRUNUX0JFR0lOfSk7CisJCQkJJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e0hJR0hfRElSRUNUX1JFQ0xBSU1fTEFURU5DWX1bJGluZGV4XSA9ICIkb3JkZXItJGxhdGVuY3kiOworCQkJfQorCQl9IGVsc2lmICgkdHJhY2Vwb2ludCBlcSAibW1fdm1zY2FuX2tzd2FwZF93YWtlIikgeworCQkJJGRldGFpbHMgPSAkNjsKKwkJCWlmICgkZGV0YWlscyAhfiAvJHJlZ2V4X2tzd2FwZF93YWtlL28pIHsKKwkJCQlwcmludCAiV0FSTklORzogRmFpbGVkIHRvIHBhcnNlIG1tX3Ztc2Nhbl9rc3dhcGRfd2FrZSBhcyBleHBlY3RlZFxuIjsKKwkJCQlwcmludCAiICAgICAgICAgJGRldGFpbHNcbiI7CisJCQkJcHJpbnQgIiAgICAgICAgICRyZWdleF9rc3dhcGRfd2FrZVxuIjsKKwkJCQluZXh0OworCQkJfQorCisJCQlteSAkb3JkZXIgPSAkMjsKKwkJCSRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntTVEFURV9LU1dBUERfT1JERVJ9ID0gJG9yZGVyOworCQkJaWYgKCEkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57U1RBVEVfS1NXQVBEX0JFR0lOfSkgeworCQkJCSR0aW1lc3RhbXAgPSB0aW1lc3RhbXBfdG9fbXMoJHRpbWVzdGFtcCk7CisJCQkJJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e01NX1ZNU0NBTl9LU1dBUERfV0FLRX0rKzsKKwkJCQkkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57U1RBVEVfS1NXQVBEX0JFR0lOfSA9ICR0aW1lc3RhbXA7CisJCQkJJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e01NX1ZNU0NBTl9LU1dBUERfV0FLRV9QRVJPUkRFUn1bJG9yZGVyXSsrOworCQkJfSBlbHNlIHsKKwkJCQkkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57SElHSF9LU1dBUERfUkVXQUtFVVB9Kys7CisJCQkJJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e0hJR0hfS1NXQVBEX1JFV0FLRVVQX1BFUk9SREVSfVskb3JkZXJdKys7CisJCQl9CisJCX0gZWxzaWYgKCR0cmFjZXBvaW50IGVxICJtbV92bXNjYW5fa3N3YXBkX3NsZWVwIikgeworCisJCQkjIENvdW50IHRoZSBldmVudCBpdHNlbGYKKwkJCW15ICRpbmRleCA9ICRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntNTV9WTVNDQU5fS1NXQVBEX1NMRUVQfTsKKwkJCSRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntNTV9WTVNDQU5fS1NXQVBEX1NMRUVQfSsrOworCisJCQkjIFJlY29yZCBob3cgbG9uZyBrc3dhcGQgd2FzIGF3YWtlCisJCQkkdGltZXN0YW1wID0gdGltZXN0YW1wX3RvX21zKCR0aW1lc3RhbXApOworCQkJbXkgJG9yZGVyID0gJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e1NUQVRFX0tTV0FQRF9PUkRFUn07CisJCQlteSAkbGF0ZW5jeSA9ICgkdGltZXN0YW1wIC0gJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e1NUQVRFX0tTV0FQRF9CRUdJTn0pOworCQkJJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e0hJR0hfS1NXQVBEX0xBVEVOQ1l9WyRpbmRleF0gPSAiJG9yZGVyLSRsYXRlbmN5IjsKKwkJCSRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntTVEFURV9LU1dBUERfQkVHSU59ID0gMDsKKwkJfSBlbHNpZiAoJHRyYWNlcG9pbnQgZXEgIm1tX3Ztc2Nhbl93YWtldXBfa3N3YXBkIikgeworCQkJJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e01NX1ZNU0NBTl9XQUtFVVBfS1NXQVBEfSsrOworCisJCQkkZGV0YWlscyA9ICQ2OworCQkJaWYgKCRkZXRhaWxzICF+IC8kcmVnZXhfd2FrZXVwX2tzd2FwZC9vKSB7CisJCQkJcHJpbnQgIldBUk5JTkc6IEZhaWxlZCB0byBwYXJzZSBtbV92bXNjYW5fd2FrZXVwX2tzd2FwZCBhcyBleHBlY3RlZFxuIjsKKwkJCQlwcmludCAiICAgICAgICAgJGRldGFpbHNcbiI7CisJCQkJcHJpbnQgIiAgICAgICAgICRyZWdleF93YWtldXBfa3N3YXBkXG4iOworCQkJCW5leHQ7CisJCQl9CisJCQlteSAkb3JkZXIgPSAkMzsKKwkJCSRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntNTV9WTVNDQU5fV0FLRVVQX0tTV0FQRF9QRVJPUkRFUn1bJG9yZGVyXSsrOworCQl9IGVsc2lmICgkdHJhY2Vwb2ludCBlcSAibW1fdm1zY2FuX2xydV9pc29sYXRlIikgeworCQkJJGRldGFpbHMgPSAkNjsKKwkJCWlmICgkZGV0YWlscyAhfiAvJHJlZ2V4X2xydV9pc29sYXRlL28pIHsKKwkJCQlwcmludCAiV0FSTklORzogRmFpbGVkIHRvIHBhcnNlIG1tX3Ztc2Nhbl9scnVfaXNvbGF0ZSBhcyBleHBlY3RlZFxuIjsKKwkJCQlwcmludCAiICAgICAgICAgJGRldGFpbHNcbiI7CisJCQkJcHJpbnQgIiAgICAgICAgICRyZWdleF9scnVfaXNvbGF0ZS9vXG4iOworCQkJCW5leHQ7CisJCQl9CisJCQlteSAkaXNvbGF0ZV9tb2RlID0gJDE7CisJCQlteSAkbnJfc2Nhbm5lZCA9ICQ0OworCQkJbXkgJGZpbGUgPSAkNjsKKworCQkJIyBUbyBjbG9zZXIgbWF0Y2ggdm1zdGF0IHNjYW5uaW5nIHN0YXRpc3RpY3MsIG9ubHkgY291bnQgaXNvbGF0ZV9ib3RoCisJCQkjIGFuZCBpc29sYXRlX2luYWN0aXZlIGFzIHNjYW5uaW5nLiBpc29sYXRlX2FjdGl2ZSBpcyByb3RhdGlvbgorCQkJIyBpc29sYXRlX2luYWN0aXZlID09IDEKKwkJCSMgaXNvbGF0ZV9hY3RpdmUgICA9PSAyCisJCQkjIGlzb2xhdGVfYm90aCAgICAgPT0gMworCQkJaWYgKCRpc29sYXRlX21vZGUgIT0gMikgeworCQkJCSRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntISUdIX05SX1NDQU5ORUR9ICs9ICRucl9zY2FubmVkOworCQkJCWlmICgkZmlsZSA9PSAxKSB7CisJCQkJCSRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntISUdIX05SX0ZJTEVfU0NBTk5FRH0gKz0gJG5yX3NjYW5uZWQ7CisJCQkJfSBlbHNlIHsKKwkJCQkJJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e0hJR0hfTlJfQU5PTl9TQ0FOTkVEfSArPSAkbnJfc2Nhbm5lZDsKKwkJCQl9CisJCQl9CisJCX0gZWxzaWYgKCR0cmFjZXBvaW50IGVxICJtbV92bXNjYW5fbHJ1X3Nocmlua19pbmFjdGl2ZSIpIHsKKwkJCSRkZXRhaWxzID0gJDY7CisJCQlpZiAoJGRldGFpbHMgIX4gLyRyZWdleF9scnVfc2hyaW5rX2luYWN0aXZlL28pIHsKKwkJCQlwcmludCAiV0FSTklORzogRmFpbGVkIHRvIHBhcnNlIG1tX3Ztc2Nhbl9scnVfc2hyaW5rX2luYWN0aXZlIGFzIGV4cGVjdGVkXG4iOworCQkJCXByaW50ICIgICAgICAgICAkZGV0YWlsc1xuIjsKKwkJCQlwcmludCAiICAgICAgICAgJHJlZ2V4X2xydV9zaHJpbmtfaW5hY3RpdmUvb1xuIjsKKwkJCQluZXh0OworCQkJfQorCisJCQlteSAkbnJfcmVjbGFpbWVkID0gJDQ7CisJCQlteSAkZmxhZ3MgPSAkNjsKKwkJCW15ICRmaWxlID0gMDsKKwkJCWlmICgkZmxhZ3MgPX4gL1JFQ0xBSU1fV0JfRklMRS8pIHsKKwkJCQkkZmlsZSA9IDE7CisJCQl9CisJCQkkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57SElHSF9OUl9SRUNMQUlNRUR9ICs9ICRucl9yZWNsYWltZWQ7CisJCQlpZiAoJGZpbGUpIHsKKwkJCQkkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57SElHSF9OUl9GSUxFX1JFQ0xBSU1FRH0gKz0gJG5yX3JlY2xhaW1lZDsKKwkJCX0gZWxzZSB7CisJCQkJJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e0hJR0hfTlJfQU5PTl9SRUNMQUlNRUR9ICs9ICRucl9yZWNsYWltZWQ7CisJCQl9CisJCX0gZWxzaWYgKCR0cmFjZXBvaW50IGVxICJtbV92bXNjYW5fd3JpdGVwYWdlIikgeworCQkJJGRldGFpbHMgPSAkNjsKKwkJCWlmICgkZGV0YWlscyAhfiAvJHJlZ2V4X3dyaXRlcGFnZS9vKSB7CisJCQkJcHJpbnQgIldBUk5JTkc6IEZhaWxlZCB0byBwYXJzZSBtbV92bXNjYW5fd3JpdGVwYWdlIGFzIGV4cGVjdGVkXG4iOworCQkJCXByaW50ICIgICAgICAgICAkZGV0YWlsc1xuIjsKKwkJCQlwcmludCAiICAgICAgICAgJHJlZ2V4X3dyaXRlcGFnZVxuIjsKKwkJCQluZXh0OworCQkJfQorCisJCQlteSAkZmxhZ3MgPSAkMzsKKwkJCW15ICRmaWxlID0gMDsKKwkJCW15ICRzeW5jX2lvID0gMDsKKwkJCWlmICgkZmxhZ3MgPX4gL1JFQ0xBSU1fV0JfRklMRS8pIHsKKwkJCQkkZmlsZSA9IDE7CisJCQl9CisJCQlpZiAoJGZsYWdzID1+IC9SRUNMQUlNX1dCX1NZTkMvKSB7CisJCQkJJHN5bmNfaW8gPSAxOworCQkJfQorCQkJaWYgKCRzeW5jX2lvKSB7CisJCQkJaWYgKCRmaWxlKSB7CisJCQkJCSRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntNTV9WTVNDQU5fV1JJVEVQQUdFX0ZJTEVfU1lOQ30rKzsKKwkJCQl9IGVsc2UgeworCQkJCQkkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57TU1fVk1TQ0FOX1dSSVRFUEFHRV9BTk9OX1NZTkN9Kys7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQlpZiAoJGZpbGUpIHsKKwkJCQkJJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e01NX1ZNU0NBTl9XUklURVBBR0VfRklMRV9BU1lOQ30rKzsKKwkJCQl9IGVsc2UgeworCQkJCQkkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57TU1fVk1TQ0FOX1dSSVRFUEFHRV9BTk9OX0FTWU5DfSsrOworCQkJCX0KKwkJCX0KKwkJfSBlbHNlIHsKKwkJCSRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntFVkVOVF9VTktOT1dOfSsrOworCQl9CisKKwkJaWYgKCRzaWdpbnRfcGVuZGluZykgeworCQkJbGFzdCBFVkVOVF9QUk9DRVNTOworCQl9CisJfQorfQorCitzdWIgZHVtcF9zdGF0cyB7CisJbXkgJGhhc2hyZWYgPSBzaGlmdDsKKwlteSAlc3RhdHMgPSAlJGhhc2hyZWY7CisKKwkjIER1bXAgcGVyLXByb2Nlc3Mgc3RhdHMKKwlteSAkcHJvY2Vzc19waWQ7CisJbXkgJG1heF9zdHJsZW4gPSAwOworCisJIyBHZXQgdGhlIG1heGltdW0gcHJvY2VzcyBuYW1lCisJZm9yZWFjaCAkcHJvY2Vzc19waWQgKGtleXMgJXBlcnByb2Nlc3NwaWQpIHsKKwkJbXkgJGxlbiA9IGxlbmd0aCgkcHJvY2Vzc19waWQpOworCQlpZiAoJGxlbiA+ICRtYXhfc3RybGVuKSB7CisJCQkkbWF4X3N0cmxlbiA9ICRsZW47CisJCX0KKwl9CisJJG1heF9zdHJsZW4gKz0gMjsKKworCSMgV29yayBvdXQgbGF0ZW5jaWVzCisJcHJpbnRmKCJcbiIpIGlmICEkb3B0X2lnbm9yZXBpZDsKKwlwcmludGYoIlJlY2xhaW0gbGF0ZW5jaWVzIGV4cHJlc3NlZCBhcyBvcmRlci1sYXRlbmN5X2luX21zXG4iKSBpZiAhJG9wdF9pZ25vcmVwaWQ7CisJZm9yZWFjaCAkcHJvY2Vzc19waWQgKGtleXMgJXN0YXRzKSB7CisKKwkJaWYgKCEkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e0hJR0hfRElSRUNUX1JFQ0xBSU1fTEFURU5DWX1bMF0gJiYKKwkJCQkhJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntISUdIX0tTV0FQRF9MQVRFTkNZfVswXSkgeworCQkJbmV4dDsKKwkJfQorCisJCXByaW50ZiAiJS0iIC4gJG1heF9zdHJsZW4gLiAicyAiLCAkcHJvY2Vzc19waWQgaWYgISRvcHRfaWdub3JlcGlkOworCQlteSAkaW5kZXggPSAwOworCQl3aGlsZSAoZGVmaW5lZCAkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e0hJR0hfRElSRUNUX1JFQ0xBSU1fTEFURU5DWX1bJGluZGV4XSB8fAorCQkJZGVmaW5lZCAkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e0hJR0hfS1NXQVBEX0xBVEVOQ1l9WyRpbmRleF0pIHsKKworCQkJaWYgKCRzdGF0c3skcHJvY2Vzc19waWR9LT57SElHSF9ESVJFQ1RfUkVDTEFJTV9MQVRFTkNZfVskaW5kZXhdKSB7CisJCQkJcHJpbnRmKCIlcyAiLCAkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e0hJR0hfRElSRUNUX1JFQ0xBSU1fTEFURU5DWX1bJGluZGV4XSkgaWYgISRvcHRfaWdub3JlcGlkOworCQkJCW15ICgkZHVtbXksICRsYXRlbmN5KSA9IHNwbGl0KC8tLywgJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntISUdIX0RJUkVDVF9SRUNMQUlNX0xBVEVOQ1l9WyRpbmRleF0pOworCQkJCSR0b3RhbF9kaXJlY3RfbGF0ZW5jeSArPSAkbGF0ZW5jeTsKKwkJCX0gZWxzZSB7CisJCQkJcHJpbnRmKCIlcyAiLCAkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e0hJR0hfS1NXQVBEX0xBVEVOQ1l9WyRpbmRleF0pIGlmICEkb3B0X2lnbm9yZXBpZDsKKwkJCQlteSAoJGR1bW15LCAkbGF0ZW5jeSkgPSBzcGxpdCgvLS8sICRzdGF0c3skcHJvY2Vzc19waWR9LT57SElHSF9LU1dBUERfTEFURU5DWX1bJGluZGV4XSk7CisJCQkJJHRvdGFsX2tzd2FwZF9sYXRlbmN5ICs9ICRsYXRlbmN5OworCQkJfQorCQkJJGluZGV4Kys7CisJCX0KKwkJcHJpbnQgIlxuIiBpZiAhJG9wdF9pZ25vcmVwaWQ7CisJfQorCisJIyBQcmludCBvdXQgcHJvY2VzcyBhY3Rpdml0eQorCXByaW50ZigiXG4iKTsKKwlwcmludGYoIiUtIiAuICRtYXhfc3RybGVuIC4gInMgJThzICUxMHMgICAlOHMgJThzICAlOHMgJThzICU4cyAlOHNcbiIsICJQcm9jZXNzIiwgIkRpcmVjdCIsICAiV29rZXVwIiwgIlBhZ2VzIiwgICAiUGFnZXMiLCAgICJQYWdlcyIsICAgIlBhZ2VzIiwgICAgICJUaW1lIik7CisJcHJpbnRmKCIlLSIgLiAkbWF4X3N0cmxlbiAuICJzICU4cyAlMTBzICAgJThzICU4cyAgJThzICU4cyAlOHMgJThzXG4iLCAiZGV0YWlscyIsICJSY2xtcyIsICAgIktzd2FwZCIsICJTY2FubmVkIiwgIlJjbG1lZCIsICAiU3luYy1JTyIsICJBU3luYy1JTyIsICAiU3RhbGxlZCIpOworCWZvcmVhY2ggJHByb2Nlc3NfcGlkIChrZXlzICVzdGF0cykgeworCisJCWlmICghJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntNTV9WTVNDQU5fRElSRUNUX1JFQ0xBSU1fQkVHSU59KSB7CisJCQluZXh0OworCQl9CisKKwkJJHRvdGFsX2RpcmVjdF9yZWNsYWltICs9ICRzdGF0c3skcHJvY2Vzc19waWR9LT57TU1fVk1TQ0FOX0RJUkVDVF9SRUNMQUlNX0JFR0lOfTsKKwkJJHRvdGFsX3dha2V1cF9rc3dhcGQgKz0gJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntNTV9WTVNDQU5fV0FLRVVQX0tTV0FQRH07CisJCSR0b3RhbF9kaXJlY3RfbnJfc2Nhbm5lZCArPSAkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e0hJR0hfTlJfU0NBTk5FRH07CisJCSR0b3RhbF9kaXJlY3RfbnJfZmlsZV9zY2FubmVkICs9ICRzdGF0c3skcHJvY2Vzc19waWR9LT57SElHSF9OUl9GSUxFX1NDQU5ORUR9OworCQkkdG90YWxfZGlyZWN0X25yX2Fub25fc2Nhbm5lZCArPSAkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e0hJR0hfTlJfQU5PTl9TQ0FOTkVEfTsKKwkJJHRvdGFsX2RpcmVjdF9ucl9yZWNsYWltZWQgKz0gJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntISUdIX05SX1JFQ0xBSU1FRH07CisJCSR0b3RhbF9kaXJlY3RfbnJfZmlsZV9yZWNsYWltZWQgKz0gJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntISUdIX05SX0ZJTEVfUkVDTEFJTUVEfTsKKwkJJHRvdGFsX2RpcmVjdF9ucl9hbm9uX3JlY2xhaW1lZCArPSAkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e0hJR0hfTlJfQU5PTl9SRUNMQUlNRUR9OworCQkkdG90YWxfZGlyZWN0X3dyaXRlcGFnZV9maWxlX3N5bmMgKz0gJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntNTV9WTVNDQU5fV1JJVEVQQUdFX0ZJTEVfU1lOQ307CisJCSR0b3RhbF9kaXJlY3Rfd3JpdGVwYWdlX2Fub25fc3luYyArPSAkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e01NX1ZNU0NBTl9XUklURVBBR0VfQU5PTl9TWU5DfTsKKwkJJHRvdGFsX2RpcmVjdF93cml0ZXBhZ2VfZmlsZV9hc3luYyArPSAkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e01NX1ZNU0NBTl9XUklURVBBR0VfRklMRV9BU1lOQ307CisKKwkJJHRvdGFsX2RpcmVjdF93cml0ZXBhZ2VfYW5vbl9hc3luYyArPSAkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e01NX1ZNU0NBTl9XUklURVBBR0VfQU5PTl9BU1lOQ307CisKKwkJbXkgJGluZGV4ID0gMDsKKwkJbXkgJHRoaXNfcmVjbGFpbV9kZWxheSA9IDA7CisJCXdoaWxlIChkZWZpbmVkICRzdGF0c3skcHJvY2Vzc19waWR9LT57SElHSF9ESVJFQ1RfUkVDTEFJTV9MQVRFTkNZfVskaW5kZXhdKSB7CisJCQkgbXkgKCRkdW1teSwgJGxhdGVuY3kpID0gc3BsaXQoLy0vLCAkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e0hJR0hfRElSRUNUX1JFQ0xBSU1fTEFURU5DWX1bJGluZGV4XSk7CisJCQkkdGhpc19yZWNsYWltX2RlbGF5ICs9ICRsYXRlbmN5OworCQkJJGluZGV4Kys7CisJCX0KKworCQlwcmludGYoIiUtIiAuICRtYXhfc3RybGVuIC4gInMgJThkICUxMGQgICAlOHUgJTh1ICAlOHUgJTh1ICU4LjNmIiwKKwkJCSRwcm9jZXNzX3BpZCwKKwkJCSRzdGF0c3skcHJvY2Vzc19waWR9LT57TU1fVk1TQ0FOX0RJUkVDVF9SRUNMQUlNX0JFR0lOfSwKKwkJCSRzdGF0c3skcHJvY2Vzc19waWR9LT57TU1fVk1TQ0FOX1dBS0VVUF9LU1dBUER9LAorCQkJJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntISUdIX05SX1NDQU5ORUR9LAorCQkJJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntISUdIX05SX0ZJTEVfU0NBTk5FRH0sCisJCQkkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e0hJR0hfTlJfQU5PTl9TQ0FOTkVEfSwKKwkJCSRzdGF0c3skcHJvY2Vzc19waWR9LT57SElHSF9OUl9SRUNMQUlNRUR9LAorCQkJJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntISUdIX05SX0ZJTEVfUkVDTEFJTUVEfSwKKwkJCSRzdGF0c3skcHJvY2Vzc19waWR9LT57SElHSF9OUl9BTk9OX1JFQ0xBSU1FRH0sCisJCQkkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e01NX1ZNU0NBTl9XUklURVBBR0VfRklMRV9TWU5DfSArICRzdGF0c3skcHJvY2Vzc19waWR9LT57TU1fVk1TQ0FOX1dSSVRFUEFHRV9BTk9OX1NZTkN9LAorCQkJJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntNTV9WTVNDQU5fV1JJVEVQQUdFX0ZJTEVfQVNZTkN9ICsgJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntNTV9WTVNDQU5fV1JJVEVQQUdFX0FOT05fQVNZTkN9LAorCQkJJHRoaXNfcmVjbGFpbV9kZWxheSAvIDEwMDApOworCisJCWlmICgkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e01NX1ZNU0NBTl9ESVJFQ1RfUkVDTEFJTV9CRUdJTn0pIHsKKwkJCXByaW50ICIgICAgICAiOworCQkJZm9yIChteSAkb3JkZXIgPSAwOyAkb3JkZXIgPCAyMDsgJG9yZGVyKyspIHsKKwkJCQlteSAkY291bnQgPSAkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e01NX1ZNU0NBTl9ESVJFQ1RfUkVDTEFJTV9CRUdJTl9QRVJPUkRFUn1bJG9yZGVyXTsKKwkJCQlpZiAoJGNvdW50ICE9IDApIHsKKwkJCQkJcHJpbnQgImRpcmVjdC0kb3JkZXI9JGNvdW50ICI7CisJCQkJfQorCQkJfQorCQl9CisJCWlmICgkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e01NX1ZNU0NBTl9XQUtFVVBfS1NXQVBEfSkgeworCQkJcHJpbnQgIiAgICAgICI7CisJCQlmb3IgKG15ICRvcmRlciA9IDA7ICRvcmRlciA8IDIwOyAkb3JkZXIrKykgeworCQkJCW15ICRjb3VudCA9ICRzdGF0c3skcHJvY2Vzc19waWR9LT57TU1fVk1TQ0FOX1dBS0VVUF9LU1dBUERfUEVST1JERVJ9WyRvcmRlcl07CisJCQkJaWYgKCRjb3VudCAhPSAwKSB7CisJCQkJCXByaW50ICJ3YWtldXAtJG9yZGVyPSRjb3VudCAiOworCQkJCX0KKwkJCX0KKwkJfQorCisJCXByaW50ICJcbiI7CisJfQorCisJIyBQcmludCBvdXQga3N3YXBkIGFjdGl2aXR5CisJcHJpbnRmKCJcbiIpOworCXByaW50ZigiJS0iIC4gJG1heF9zdHJsZW4gLiAicyAlOHMgJTEwcyAgICU4cyAgICU4cyAlOHMgJThzXG4iLCAiS3N3YXBkIiwgICAiS3N3YXBkIiwgICJPcmRlciIsICAgICAiUGFnZXMiLCAgICJQYWdlcyIsICAgIlBhZ2VzIiwgICJQYWdlcyIpOworCXByaW50ZigiJS0iIC4gJG1heF9zdHJsZW4gLiAicyAlOHMgJTEwcyAgICU4cyAgICU4cyAlOHMgJThzXG4iLCAiSW5zdGFuY2UiLCAiV2FrZXVwcyIsICJSZS13YWtldXAiLCAiU2Nhbm5lZCIsICJSY2xtZWQiLCAgIlN5bmMtSU8iLCAiQVN5bmMtSU8iKTsKKwlmb3JlYWNoICRwcm9jZXNzX3BpZCAoa2V5cyAlc3RhdHMpIHsKKworCQlpZiAoISRzdGF0c3skcHJvY2Vzc19waWR9LT57TU1fVk1TQ0FOX0tTV0FQRF9XQUtFfSkgeworCQkJbmV4dDsKKwkJfQorCisJCSR0b3RhbF9rc3dhcGRfd2FrZSArPSAkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e01NX1ZNU0NBTl9LU1dBUERfV0FLRX07CisJCSR0b3RhbF9rc3dhcGRfbnJfc2Nhbm5lZCArPSAkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e0hJR0hfTlJfU0NBTk5FRH07CisJCSR0b3RhbF9rc3dhcGRfbnJfZmlsZV9zY2FubmVkICs9ICRzdGF0c3skcHJvY2Vzc19waWR9LT57SElHSF9OUl9GSUxFX1NDQU5ORUR9OworCQkkdG90YWxfa3N3YXBkX25yX2Fub25fc2Nhbm5lZCArPSAkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e0hJR0hfTlJfQU5PTl9TQ0FOTkVEfTsKKwkJJHRvdGFsX2tzd2FwZF9ucl9yZWNsYWltZWQgKz0gJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntISUdIX05SX1JFQ0xBSU1FRH07CisJCSR0b3RhbF9rc3dhcGRfbnJfZmlsZV9yZWNsYWltZWQgKz0gJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntISUdIX05SX0ZJTEVfUkVDTEFJTUVEfTsKKwkJJHRvdGFsX2tzd2FwZF9ucl9hbm9uX3JlY2xhaW1lZCArPSAkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e0hJR0hfTlJfQU5PTl9SRUNMQUlNRUR9OworCQkkdG90YWxfa3N3YXBkX3dyaXRlcGFnZV9maWxlX3N5bmMgKz0gJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntNTV9WTVNDQU5fV1JJVEVQQUdFX0ZJTEVfU1lOQ307CisJCSR0b3RhbF9rc3dhcGRfd3JpdGVwYWdlX2Fub25fc3luYyArPSAkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e01NX1ZNU0NBTl9XUklURVBBR0VfQU5PTl9TWU5DfTsKKwkJJHRvdGFsX2tzd2FwZF93cml0ZXBhZ2VfZmlsZV9hc3luYyArPSAkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e01NX1ZNU0NBTl9XUklURVBBR0VfRklMRV9BU1lOQ307CisJCSR0b3RhbF9rc3dhcGRfd3JpdGVwYWdlX2Fub25fYXN5bmMgKz0gJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntNTV9WTVNDQU5fV1JJVEVQQUdFX0FOT05fQVNZTkN9OworCisJCXByaW50ZigiJS0iIC4gJG1heF9zdHJsZW4gLiAicyAlOGQgJTEwZCAgICU4dSAlOHUgICU4aSAlOHUiLAorCQkJJHByb2Nlc3NfcGlkLAorCQkJJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntNTV9WTVNDQU5fS1NXQVBEX1dBS0V9LAorCQkJJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntISUdIX0tTV0FQRF9SRVdBS0VVUH0sCisJCQkkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e0hJR0hfTlJfU0NBTk5FRH0sCisJCQkkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e0hJR0hfTlJfRklMRV9TQ0FOTkVEfSwKKwkJCSRzdGF0c3skcHJvY2Vzc19waWR9LT57SElHSF9OUl9BTk9OX1NDQU5ORUR9LAorCQkJJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntISUdIX05SX1JFQ0xBSU1FRH0sCisJCQkkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e0hJR0hfTlJfRklMRV9SRUNMQUlNRUR9LAorCQkJJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntISUdIX05SX0FOT05fUkVDTEFJTUVEfSwKKwkJCSRzdGF0c3skcHJvY2Vzc19waWR9LT57TU1fVk1TQ0FOX1dSSVRFUEFHRV9GSUxFX1NZTkN9ICsgJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntNTV9WTVNDQU5fV1JJVEVQQUdFX0FOT05fU1lOQ30sCisJCQkkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e01NX1ZNU0NBTl9XUklURVBBR0VfRklMRV9BU1lOQ30gKyAkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e01NX1ZNU0NBTl9XUklURVBBR0VfQU5PTl9BU1lOQ30pOworCisJCWlmICgkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e01NX1ZNU0NBTl9LU1dBUERfV0FLRX0pIHsKKwkJCXByaW50ICIgICAgICAiOworCQkJZm9yIChteSAkb3JkZXIgPSAwOyAkb3JkZXIgPCAyMDsgJG9yZGVyKyspIHsKKwkJCQlteSAkY291bnQgPSAkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e01NX1ZNU0NBTl9LU1dBUERfV0FLRV9QRVJPUkRFUn1bJG9yZGVyXTsKKwkJCQlpZiAoJGNvdW50ICE9IDApIHsKKwkJCQkJcHJpbnQgIndha2UtJG9yZGVyPSRjb3VudCAiOworCQkJCX0KKwkJCX0KKwkJfQorCQlpZiAoJHN0YXRzeyRwcm9jZXNzX3BpZH0tPntISUdIX0tTV0FQRF9SRVdBS0VVUH0pIHsKKwkJCXByaW50ICIgICAgICAiOworCQkJZm9yIChteSAkb3JkZXIgPSAwOyAkb3JkZXIgPCAyMDsgJG9yZGVyKyspIHsKKwkJCQlteSAkY291bnQgPSAkc3RhdHN7JHByb2Nlc3NfcGlkfS0+e0hJR0hfS1NXQVBEX1JFV0FLRVVQX1BFUk9SREVSfVskb3JkZXJdOworCQkJCWlmICgkY291bnQgIT0gMCkgeworCQkJCQlwcmludCAicmV3YWtlLSRvcmRlcj0kY291bnQgIjsKKwkJCQl9CisJCQl9CisJCX0KKwkJcHJpbnRmKCJcbiIpOworCX0KKworCSMgUHJpbnQgb3V0IHN1bW1hcmllcworCSR0b3RhbF9kaXJlY3RfbGF0ZW5jeSAvPSAxMDAwOworCSR0b3RhbF9rc3dhcGRfbGF0ZW5jeSAvPSAxMDAwOworCXByaW50ICJcblN1bW1hcnlcbiI7CisJcHJpbnQgIkRpcmVjdCByZWNsYWltczogICAgIAkJCSR0b3RhbF9kaXJlY3RfcmVjbGFpbVxuIjsKKwlwcmludCAiRGlyZWN0IHJlY2xhaW0gcGFnZXMgc2Nhbm5lZDoJCSR0b3RhbF9kaXJlY3RfbnJfc2Nhbm5lZFxuIjsKKwlwcmludCAiRGlyZWN0IHJlY2xhaW0gZmlsZSBwYWdlcyBzY2FubmVkOgkkdG90YWxfZGlyZWN0X25yX2ZpbGVfc2Nhbm5lZFxuIjsKKwlwcmludCAiRGlyZWN0IHJlY2xhaW0gYW5vbiBwYWdlcyBzY2FubmVkOgkkdG90YWxfZGlyZWN0X25yX2Fub25fc2Nhbm5lZFxuIjsKKwlwcmludCAiRGlyZWN0IHJlY2xhaW0gcGFnZXMgcmVjbGFpbWVkOgkJJHRvdGFsX2RpcmVjdF9ucl9yZWNsYWltZWRcbiI7CisJcHJpbnQgIkRpcmVjdCByZWNsYWltIGZpbGUgcGFnZXMgcmVjbGFpbWVkOgkkdG90YWxfZGlyZWN0X25yX2ZpbGVfcmVjbGFpbWVkXG4iOworCXByaW50ICJEaXJlY3QgcmVjbGFpbSBhbm9uIHBhZ2VzIHJlY2xhaW1lZDoJJHRvdGFsX2RpcmVjdF9ucl9hbm9uX3JlY2xhaW1lZFxuIjsKKwlwcmludCAiRGlyZWN0IHJlY2xhaW0gd3JpdGUgZmlsZSBzeW5jIEkvTzoJJHRvdGFsX2RpcmVjdF93cml0ZXBhZ2VfZmlsZV9zeW5jXG4iOworCXByaW50ICJEaXJlY3QgcmVjbGFpbSB3cml0ZSBhbm9uIHN5bmMgSS9POgkkdG90YWxfZGlyZWN0X3dyaXRlcGFnZV9hbm9uX3N5bmNcbiI7CisJcHJpbnQgIkRpcmVjdCByZWNsYWltIHdyaXRlIGZpbGUgYXN5bmMgSS9POgkkdG90YWxfZGlyZWN0X3dyaXRlcGFnZV9maWxlX2FzeW5jXG4iOworCXByaW50ICJEaXJlY3QgcmVjbGFpbSB3cml0ZSBhbm9uIGFzeW5jIEkvTzoJJHRvdGFsX2RpcmVjdF93cml0ZXBhZ2VfYW5vbl9hc3luY1xuIjsKKwlwcmludCAiV2FrZSBrc3dhcGQgcmVxdWVzdHM6CQkJJHRvdGFsX3dha2V1cF9rc3dhcGRcbiI7CisJcHJpbnRmICJUaW1lIHN0YWxsZWQgZGlyZWN0IHJlY2xhaW06IAkJJS0xLjJmIHNlY29uZHNcbiIsICR0b3RhbF9kaXJlY3RfbGF0ZW5jeTsKKwlwcmludCAiXG4iOworCXByaW50ICJLc3dhcGQgd2FrZXVwczoJCQkJJHRvdGFsX2tzd2FwZF93YWtlXG4iOworCXByaW50ICJLc3dhcGQgcGFnZXMgc2Nhbm5lZDoJCQkkdG90YWxfa3N3YXBkX25yX3NjYW5uZWRcbiI7CisJcHJpbnQgIktzd2FwZCBmaWxlIHBhZ2VzIHNjYW5uZWQ6CQkkdG90YWxfa3N3YXBkX25yX2ZpbGVfc2Nhbm5lZFxuIjsKKwlwcmludCAiS3N3YXBkIGFub24gcGFnZXMgc2Nhbm5lZDoJCSR0b3RhbF9rc3dhcGRfbnJfYW5vbl9zY2FubmVkXG4iOworCXByaW50ICJLc3dhcGQgcGFnZXMgcmVjbGFpbWVkOgkJCSR0b3RhbF9rc3dhcGRfbnJfcmVjbGFpbWVkXG4iOworCXByaW50ICJLc3dhcGQgZmlsZSBwYWdlcyByZWNsYWltZWQ6CQkkdG90YWxfa3N3YXBkX25yX2ZpbGVfcmVjbGFpbWVkXG4iOworCXByaW50ICJLc3dhcGQgYW5vbiBwYWdlcyByZWNsYWltZWQ6CQkkdG90YWxfa3N3YXBkX25yX2Fub25fcmVjbGFpbWVkXG4iOworCXByaW50ICJLc3dhcGQgcmVjbGFpbSB3cml0ZSBmaWxlIHN5bmMgSS9POgkkdG90YWxfa3N3YXBkX3dyaXRlcGFnZV9maWxlX3N5bmNcbiI7CisJcHJpbnQgIktzd2FwZCByZWNsYWltIHdyaXRlIGFub24gc3luYyBJL086CSR0b3RhbF9rc3dhcGRfd3JpdGVwYWdlX2Fub25fc3luY1xuIjsKKwlwcmludCAiS3N3YXBkIHJlY2xhaW0gd3JpdGUgZmlsZSBhc3luYyBJL086CSR0b3RhbF9rc3dhcGRfd3JpdGVwYWdlX2ZpbGVfYXN5bmNcbiI7CisJcHJpbnQgIktzd2FwZCByZWNsYWltIHdyaXRlIGFub24gYXN5bmMgSS9POgkkdG90YWxfa3N3YXBkX3dyaXRlcGFnZV9hbm9uX2FzeW5jXG4iOworCXByaW50ZiAiVGltZSBrc3dhcGQgYXdha2U6CQkJJS0xLjJmIHNlY29uZHNcbiIsICR0b3RhbF9rc3dhcGRfbGF0ZW5jeTsKK30KKworc3ViIGFnZ3JlZ2F0ZV9wZXJwcm9jZXNzcGlkKCkgeworCW15ICRwcm9jZXNzX3BpZDsKKwlteSAkcHJvY2VzczsKKwl1bmRlZiAlcGVycHJvY2VzczsKKworCWZvcmVhY2ggJHByb2Nlc3NfcGlkIChrZXlzICVwZXJwcm9jZXNzcGlkKSB7CisJCSRwcm9jZXNzID0gJHByb2Nlc3NfcGlkOworCQkkcHJvY2VzcyA9fiBzLy0oWzAtOV0pKiQvLzsKKwkJaWYgKCRwcm9jZXNzIGVxICcnKSB7CisJCQkkcHJvY2VzcyA9ICJOT19QUk9DRVNTX05BTUUiOworCQl9CisKKwkJJHBlcnByb2Nlc3N7JHByb2Nlc3N9LT57TU1fVk1TQ0FOX0RJUkVDVF9SRUNMQUlNX0JFR0lOfSArPSAkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57TU1fVk1TQ0FOX0RJUkVDVF9SRUNMQUlNX0JFR0lOfTsKKwkJJHBlcnByb2Nlc3N7JHByb2Nlc3N9LT57TU1fVk1TQ0FOX0tTV0FQRF9XQUtFfSArPSAkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57TU1fVk1TQ0FOX0tTV0FQRF9XQUtFfTsKKwkJJHBlcnByb2Nlc3N7JHByb2Nlc3N9LT57TU1fVk1TQ0FOX1dBS0VVUF9LU1dBUER9ICs9ICRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntNTV9WTVNDQU5fV0FLRVVQX0tTV0FQRH07CisJCSRwZXJwcm9jZXNzeyRwcm9jZXNzfS0+e0hJR0hfS1NXQVBEX1JFV0FLRVVQfSArPSAkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57SElHSF9LU1dBUERfUkVXQUtFVVB9OworCQkkcGVycHJvY2Vzc3skcHJvY2Vzc30tPntISUdIX05SX1NDQU5ORUR9ICs9ICRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntISUdIX05SX1NDQU5ORUR9OworCQkkcGVycHJvY2Vzc3skcHJvY2Vzc30tPntISUdIX05SX0ZJTEVfU0NBTk5FRH0gKz0gJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e0hJR0hfTlJfRklMRV9TQ0FOTkVEfTsKKwkJJHBlcnByb2Nlc3N7JHByb2Nlc3N9LT57SElHSF9OUl9BTk9OX1NDQU5ORUR9ICs9ICRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntISUdIX05SX0FOT05fU0NBTk5FRH07CisJCSRwZXJwcm9jZXNzeyRwcm9jZXNzfS0+e0hJR0hfTlJfUkVDTEFJTUVEfSArPSAkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57SElHSF9OUl9SRUNMQUlNRUR9OworCQkkcGVycHJvY2Vzc3skcHJvY2Vzc30tPntISUdIX05SX0ZJTEVfUkVDTEFJTUVEfSArPSAkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57SElHSF9OUl9GSUxFX1JFQ0xBSU1FRH07CisJCSRwZXJwcm9jZXNzeyRwcm9jZXNzfS0+e0hJR0hfTlJfQU5PTl9SRUNMQUlNRUR9ICs9ICRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntISUdIX05SX0FOT05fUkVDTEFJTUVEfTsKKwkJJHBlcnByb2Nlc3N7JHByb2Nlc3N9LT57TU1fVk1TQ0FOX1dSSVRFUEFHRV9GSUxFX1NZTkN9ICs9ICRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntNTV9WTVNDQU5fV1JJVEVQQUdFX0ZJTEVfU1lOQ307CisJCSRwZXJwcm9jZXNzeyRwcm9jZXNzfS0+e01NX1ZNU0NBTl9XUklURVBBR0VfQU5PTl9TWU5DfSArPSAkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57TU1fVk1TQ0FOX1dSSVRFUEFHRV9BTk9OX1NZTkN9OworCQkkcGVycHJvY2Vzc3skcHJvY2Vzc30tPntNTV9WTVNDQU5fV1JJVEVQQUdFX0ZJTEVfQVNZTkN9ICs9ICRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntNTV9WTVNDQU5fV1JJVEVQQUdFX0ZJTEVfQVNZTkN9OworCQkkcGVycHJvY2Vzc3skcHJvY2Vzc30tPntNTV9WTVNDQU5fV1JJVEVQQUdFX0FOT05fQVNZTkN9ICs9ICRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntNTV9WTVNDQU5fV1JJVEVQQUdFX0FOT05fQVNZTkN9OworCisJCWZvciAobXkgJG9yZGVyID0gMDsgJG9yZGVyIDwgMjA7ICRvcmRlcisrKSB7CisJCQkkcGVycHJvY2Vzc3skcHJvY2Vzc30tPntNTV9WTVNDQU5fRElSRUNUX1JFQ0xBSU1fQkVHSU5fUEVST1JERVJ9WyRvcmRlcl0gKz0gJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e01NX1ZNU0NBTl9ESVJFQ1RfUkVDTEFJTV9CRUdJTl9QRVJPUkRFUn1bJG9yZGVyXTsKKwkJCSRwZXJwcm9jZXNzeyRwcm9jZXNzfS0+e01NX1ZNU0NBTl9XQUtFVVBfS1NXQVBEX1BFUk9SREVSfVskb3JkZXJdICs9ICRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntNTV9WTVNDQU5fV0FLRVVQX0tTV0FQRF9QRVJPUkRFUn1bJG9yZGVyXTsKKwkJCSRwZXJwcm9jZXNzeyRwcm9jZXNzfS0+e01NX1ZNU0NBTl9LU1dBUERfV0FLRV9QRVJPUkRFUn1bJG9yZGVyXSArPSAkcGVycHJvY2Vzc3BpZHskcHJvY2Vzc19waWR9LT57TU1fVk1TQ0FOX0tTV0FQRF9XQUtFX1BFUk9SREVSfVskb3JkZXJdOworCisJCX0KKworCQkjIEFnZ3JlZ2F0ZSBkaXJlY3QgcmVjbGFpbSBsYXRlbmNpZXMKKwkJbXkgJHdyX2luZGV4ID0gJHBlcnByb2Nlc3N7JHByb2Nlc3N9LT57TU1fVk1TQ0FOX0RJUkVDVF9SRUNMQUlNX0VORH07CisJCW15ICRyZF9pbmRleCA9IDA7CisJCXdoaWxlIChkZWZpbmVkICRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntISUdIX0RJUkVDVF9SRUNMQUlNX0xBVEVOQ1l9WyRyZF9pbmRleF0pIHsKKwkJCSRwZXJwcm9jZXNzeyRwcm9jZXNzfS0+e0hJR0hfRElSRUNUX1JFQ0xBSU1fTEFURU5DWX1bJHdyX2luZGV4XSA9ICRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntISUdIX0RJUkVDVF9SRUNMQUlNX0xBVEVOQ1l9WyRyZF9pbmRleF07CisJCQkkcmRfaW5kZXgrKzsKKwkJCSR3cl9pbmRleCsrOworCQl9CisJCSRwZXJwcm9jZXNzeyRwcm9jZXNzfS0+e01NX1ZNU0NBTl9ESVJFQ1RfUkVDTEFJTV9FTkR9ID0gJHdyX2luZGV4OworCisJCSMgQWdncmVnYXRlIGtzd2FwZCBsYXRlbmNpZXMKKwkJbXkgJHdyX2luZGV4ID0gJHBlcnByb2Nlc3N7JHByb2Nlc3N9LT57TU1fVk1TQ0FOX0tTV0FQRF9TTEVFUH07CisJCW15ICRyZF9pbmRleCA9IDA7CisJCXdoaWxlIChkZWZpbmVkICRwZXJwcm9jZXNzcGlkeyRwcm9jZXNzX3BpZH0tPntISUdIX0tTV0FQRF9MQVRFTkNZfVskcmRfaW5kZXhdKSB7CisJCQkkcGVycHJvY2Vzc3skcHJvY2Vzc30tPntISUdIX0tTV0FQRF9MQVRFTkNZfVskd3JfaW5kZXhdID0gJHBlcnByb2Nlc3NwaWR7JHByb2Nlc3NfcGlkfS0+e0hJR0hfS1NXQVBEX0xBVEVOQ1l9WyRyZF9pbmRleF07CisJCQkkcmRfaW5kZXgrKzsKKwkJCSR3cl9pbmRleCsrOworCQl9CisJCSRwZXJwcm9jZXNzeyRwcm9jZXNzfS0+e01NX1ZNU0NBTl9ESVJFQ1RfUkVDTEFJTV9FTkR9ID0gJHdyX2luZGV4OworCX0KK30KKworc3ViIHJlcG9ydCgpIHsKKwlpZiAoISRvcHRfaWdub3JlcGlkKSB7CisJCWR1bXBfc3RhdHMoXCVwZXJwcm9jZXNzcGlkKTsKKwl9IGVsc2UgeworCQlhZ2dyZWdhdGVfcGVycHJvY2Vzc3BpZCgpOworCQlkdW1wX3N0YXRzKFwlcGVycHJvY2Vzcyk7CisJfQorfQorCisjIFByb2Nlc3MgZXZlbnRzIG9yIHNpZ25hbHMgdW50aWwgbmVpdGhlciBpcyBhdmFpbGFibGUKK3N1YiBzaWduYWxfbG9vcCgpIHsKKwlteSAkc2lnaW50X3Byb2Nlc3NlZDsKKwlkbyB7CisJCSRzaWdpbnRfcHJvY2Vzc2VkID0gMDsKKwkJcHJvY2Vzc19ldmVudHMoKTsKKworCQkjIEhhbmRsZSBwZW5kaW5nIHNpZ25hbHMgaWYgYW55CisJCWlmICgkc2lnaW50X3BlbmRpbmcpIHsKKwkJCW15ICRjdXJyZW50X3RpbWUgPSB0aW1lOworCisJCQlpZiAoJHNpZ2ludF9leGl0KSB7CisJCQkJcHJpbnQgIlJlY2VpdmVkIGV4aXQgc2lnbmFsXG4iOworCQkJCSRzaWdpbnRfcGVuZGluZyA9IDA7CisJCQl9CisJCQlpZiAoJHNpZ2ludF9yZXBvcnQpIHsKKwkJCQlpZiAoJGN1cnJlbnRfdGltZSA+PSAkc2lnaW50X3JlY2VpdmVkICsgMikgeworCQkJCQlyZXBvcnQoKTsKKwkJCQkJJHNpZ2ludF9yZXBvcnQgPSAwOworCQkJCQkkc2lnaW50X3BlbmRpbmcgPSAwOworCQkJCQkkc2lnaW50X3Byb2Nlc3NlZCA9IDE7CisJCQkJfQorCQkJfQorCQl9CisJfSB3aGlsZSAoJHNpZ2ludF9wZW5kaW5nIHx8ICRzaWdpbnRfcHJvY2Vzc2VkKTsKK30KKworc2lnbmFsX2xvb3AoKTsKK3JlcG9ydCgpOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90cmFjZS9yaW5nLWJ1ZmZlci1kZXNpZ24udHh0IGIvRG9jdW1lbnRhdGlvbi90cmFjZS9yaW5nLWJ1ZmZlci1kZXNpZ24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNzQ3YjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3RyYWNlL3JpbmctYnVmZmVyLWRlc2lnbi50eHQKQEAgLTAsMCArMSw5NTUgQEAKKwkJTG9ja2xlc3MgUmluZyBCdWZmZXIgRGVzaWduCisJCT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitDb3B5cmlnaHQgMjAwOSBSZWQgSGF0IEluYy4KKyAgIEF1dGhvcjogICBTdGV2ZW4gUm9zdGVkdCA8c3Jvc3RlZHRAcmVkaGF0LmNvbT4KKyAgTGljZW5zZTogICBUaGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLCBWZXJzaW9uIDEuMgorICAgICAgICAgICAgICAgKGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIEdQTCB2MikKK1Jldmlld2VyczogICBNYXRoaWV1IERlc25veWVycywgSHVhbmcgWWluZywgSGlkZXRvc2hpIFNldG8sCisJICAgICBhbmQgRnJlZGVyaWMgV2Vpc2JlY2tlci4KKworCitXcml0dGVuIGZvcjogMi42LjMxCisKK1Rlcm1pbm9sb2d5IHVzZWQgaW4gdGhpcyBEb2N1bWVudAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RhaWwgLSB3aGVyZSBuZXcgd3JpdGVzIGhhcHBlbiBpbiB0aGUgcmluZyBidWZmZXIuCisKK2hlYWQgLSB3aGVyZSBuZXcgcmVhZHMgaGFwcGVuIGluIHRoZSByaW5nIGJ1ZmZlci4KKworcHJvZHVjZXIgLSB0aGUgdGFzayB0aGF0IHdyaXRlcyBpbnRvIHRoZSByaW5nIGJ1ZmZlciAoc2FtZSBhcyB3cml0ZXIpCisKK3dyaXRlciAtIHNhbWUgYXMgcHJvZHVjZXIKKworY29uc3VtZXIgLSB0aGUgdGFzayB0aGF0IHJlYWRzIGZyb20gdGhlIGJ1ZmZlciAoc2FtZSBhcyByZWFkZXIpCisKK3JlYWRlciAtIHNhbWUgYXMgY29uc3VtZXIuCisKK3JlYWRlcl9wYWdlIC0gQSBwYWdlIG91dHNpZGUgdGhlIHJpbmcgYnVmZmVyIHVzZWQgc29sZWx5IChmb3IgdGhlIG1vc3QgcGFydCkKKyAgICBieSB0aGUgcmVhZGVyLgorCitoZWFkX3BhZ2UgLSBhIHBvaW50ZXIgdG8gdGhlIHBhZ2UgdGhhdCB0aGUgcmVhZGVyIHdpbGwgdXNlIG5leHQKKwordGFpbF9wYWdlIC0gYSBwb2ludGVyIHRvIHRoZSBwYWdlIHRoYXQgd2lsbCBiZSB3cml0dGVuIHRvIG5leHQKKworY29tbWl0X3BhZ2UgLSBhIHBvaW50ZXIgdG8gdGhlIHBhZ2Ugd2l0aCB0aGUgbGFzdCBmaW5pc2hlZCBub24tbmVzdGVkIHdyaXRlLgorCitjbXB4Y2hnIC0gaGFyZHdhcmUtYXNzaXN0ZWQgYXRvbWljIHRyYW5zYWN0aW9uIHRoYXQgcGVyZm9ybXMgdGhlIGZvbGxvd2luZzoKKworICAgQSA9IEIgaWZmIHByZXZpb3VzIEEgPT0gQworCisgICBSID0gY21weGNoZyhBLCBDLCBCKSBpcyBzYXlpbmcgdGhhdCB3ZSByZXBsYWNlIEEgd2l0aCBCIGlmIGFuZCBvbmx5IGlmCisgICAgICBjdXJyZW50IEEgaXMgZXF1YWwgdG8gQywgYW5kIHdlIHB1dCB0aGUgb2xkIChjdXJyZW50KSBBIGludG8gUgorCisgICBSIGdldHMgdGhlIHByZXZpb3VzIEEgcmVnYXJkbGVzcyBpZiBBIGlzIHVwZGF0ZWQgd2l0aCBCIG9yIG5vdC4KKworICAgVG8gc2VlIGlmIHRoZSB1cGRhdGUgd2FzIHN1Y2Nlc3NmdWwgYSBjb21wYXJlIG9mIFIgPT0gQyBtYXkgYmUgdXNlZC4KKworVGhlIEdlbmVyaWMgUmluZyBCdWZmZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSByaW5nIGJ1ZmZlciBjYW4gYmUgdXNlZCBpbiBlaXRoZXIgYW4gb3ZlcndyaXRlIG1vZGUgb3IgaW4KK3Byb2R1Y2VyL2NvbnN1bWVyIG1vZGUuCisKK1Byb2R1Y2VyL2NvbnN1bWVyIG1vZGUgaXMgd2hlcmUgaWYgdGhlIHByb2R1Y2VyIHdlcmUgdG8gZmlsbCB1cCB0aGUKK2J1ZmZlciBiZWZvcmUgdGhlIGNvbnN1bWVyIGNvdWxkIGZyZWUgdXAgYW55dGhpbmcsIHRoZSBwcm9kdWNlcgord2lsbCBzdG9wIHdyaXRpbmcgdG8gdGhlIGJ1ZmZlci4gVGhpcyB3aWxsIGxvc2UgbW9zdCByZWNlbnQgZXZlbnRzLgorCitPdmVyd3JpdGUgbW9kZSBpcyB3aGVyZSBpZiB0aGUgcHJvZHVjZXIgd2VyZSB0byBmaWxsIHVwIHRoZSBidWZmZXIKK2JlZm9yZSB0aGUgY29uc3VtZXIgY291bGQgZnJlZSB1cCBhbnl0aGluZywgdGhlIHByb2R1Y2VyIHdpbGwKK292ZXJ3cml0ZSB0aGUgb2xkZXIgZGF0YS4gVGhpcyB3aWxsIGxvc2UgdGhlIG9sZGVzdCBldmVudHMuCisKK05vIHR3byB3cml0ZXJzIGNhbiB3cml0ZSBhdCB0aGUgc2FtZSB0aW1lIChvbiB0aGUgc2FtZSBwZXItY3B1IGJ1ZmZlciksCitidXQgYSB3cml0ZXIgbWF5IGludGVycnVwdCBhbm90aGVyIHdyaXRlciwgYnV0IGl0IG11c3QgZmluaXNoIHdyaXRpbmcKK2JlZm9yZSB0aGUgcHJldmlvdXMgd3JpdGVyIG1heSBjb250aW51ZS4gVGhpcyBpcyB2ZXJ5IGltcG9ydGFudCB0byB0aGUKK2FsZ29yaXRobS4gVGhlIHdyaXRlcnMgYWN0IGxpa2UgYSAic3RhY2siLiBUaGUgd2F5IGludGVycnVwdHMgd29ya3MKK2VuZm9yY2VzIHRoaXMgYmVoYXZpb3IuCisKKworICB3cml0ZXIxIHN0YXJ0CisgICAgIDxwcmVlbXB0ZWQ+IHdyaXRlcjIgc3RhcnQKKyAgICAgICAgIDxwcmVlbXB0ZWQ+IHdyaXRlcjMgc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgIHdyaXRlcjMgZmluaXNoZXMKKyAgICAgICAgICAgICAgICAgd3JpdGVyMiBmaW5pc2hlcworICB3cml0ZXIxIGZpbmlzaGVzCisKK1RoaXMgaXMgdmVyeSBtdWNoIGxpa2UgYSB3cml0ZXIgYmVpbmcgcHJlZW1wdGVkIGJ5IGFuIGludGVycnVwdCBhbmQKK3RoZSBpbnRlcnJ1cHQgZG9pbmcgYSB3cml0ZSBhcyB3ZWxsLgorCitSZWFkZXJzIGNhbiBoYXBwZW4gYXQgYW55IHRpbWUuIEJ1dCBubyB0d28gcmVhZGVycyBtYXkgcnVuIGF0IHRoZQorc2FtZSB0aW1lLCBub3IgY2FuIGEgcmVhZGVyIHByZWVtcHQvaW50ZXJydXB0IGFub3RoZXIgcmVhZGVyLiBBIHJlYWRlcgorY2Fubm90IHByZWVtcHQvaW50ZXJydXB0IGEgd3JpdGVyLCBidXQgaXQgbWF5IHJlYWQvY29uc3VtZSBmcm9tIHRoZQorYnVmZmVyIGF0IHRoZSBzYW1lIHRpbWUgYXMgYSB3cml0ZXIgaXMgd3JpdGluZywgYnV0IHRoZSByZWFkZXIgbXVzdCBiZQorb24gYW5vdGhlciBwcm9jZXNzb3IgdG8gZG8gc28uIEEgcmVhZGVyIG1heSByZWFkIG9uIGl0cyBvd24gcHJvY2Vzc29yCithbmQgY2FuIGJlIHByZWVtcHRlZCBieSBhIHdyaXRlci4KKworQSB3cml0ZXIgY2FuIHByZWVtcHQgYSByZWFkZXIsIGJ1dCBhIHJlYWRlciBjYW5ub3QgcHJlZW1wdCBhIHdyaXRlci4KK0J1dCBhIHJlYWRlciBjYW4gcmVhZCB0aGUgYnVmZmVyIGF0IHRoZSBzYW1lIHRpbWUgKG9uIGFub3RoZXIgcHJvY2Vzc29yKQorYXMgYSB3cml0ZXIuCisKK1RoZSByaW5nIGJ1ZmZlciBpcyBtYWRlIHVwIG9mIGEgbGlzdCBvZiBwYWdlcyBoZWxkIHRvZ2V0aGVyIGJ5IGEgbGlua2VkIGxpc3QuCisKK0F0IGluaXRpYWxpemF0aW9uIGEgcmVhZGVyIHBhZ2UgaXMgYWxsb2NhdGVkIGZvciB0aGUgcmVhZGVyIHRoYXQgaXMgbm90CitwYXJ0IG9mIHRoZSByaW5nIGJ1ZmZlci4KKworVGhlIGhlYWRfcGFnZSwgdGFpbF9wYWdlIGFuZCBjb21taXRfcGFnZSBhcmUgYWxsIGluaXRpYWxpemVkIHRvIHBvaW50Cit0byB0aGUgc2FtZSBwYWdlLgorCitUaGUgcmVhZGVyIHBhZ2UgaXMgaW5pdGlhbGl6ZWQgdG8gaGF2ZSBpdHMgbmV4dCBwb2ludGVyIHBvaW50aW5nIHRvCit0aGUgaGVhZCBwYWdlLCBhbmQgaXRzIHByZXZpb3VzIHBvaW50ZXIgcG9pbnRpbmcgdG8gYSBwYWdlIGJlZm9yZQordGhlIGhlYWQgcGFnZS4KKworVGhlIHJlYWRlciBoYXMgaXRzIG93biBwYWdlIHRvIHVzZS4gQXQgc3RhcnQgdXAgdGltZSwgdGhpcyBwYWdlIGlzCithbGxvY2F0ZWQgYnV0IGlzIG5vdCBhdHRhY2hlZCB0byB0aGUgbGlzdC4gV2hlbiB0aGUgcmVhZGVyIHdhbnRzCit0byByZWFkIGZyb20gdGhlIGJ1ZmZlciwgaWYgaXRzIHBhZ2UgaXMgZW1wdHkgKGxpa2UgaXQgaXMgb24gc3RhcnQtdXApLAoraXQgd2lsbCBzd2FwIGl0cyBwYWdlIHdpdGggdGhlIGhlYWRfcGFnZS4gVGhlIG9sZCByZWFkZXIgcGFnZSB3aWxsCitiZWNvbWUgcGFydCBvZiB0aGUgcmluZyBidWZmZXIgYW5kIHRoZSBoZWFkX3BhZ2Ugd2lsbCBiZSByZW1vdmVkLgorVGhlIHBhZ2UgYWZ0ZXIgdGhlIGluc2VydGVkIHBhZ2UgKG9sZCByZWFkZXJfcGFnZSkgd2lsbCBiZWNvbWUgdGhlCituZXcgaGVhZCBwYWdlLgorCitPbmNlIHRoZSBuZXcgcGFnZSBpcyBnaXZlbiB0byB0aGUgcmVhZGVyLCB0aGUgcmVhZGVyIGNvdWxkIGRvIHdoYXQKK2l0IHdhbnRzIHdpdGggaXQsIGFzIGxvbmcgYXMgYSB3cml0ZXIgaGFzIGxlZnQgdGhhdCBwYWdlLgorCitBIHNhbXBsZSBvZiBob3cgdGhlIHJlYWRlciBwYWdlIGlzIHN3YXBwZWQ6IE5vdGUgdGhpcyBkb2VzIG5vdAorc2hvdyB0aGUgaGVhZCBwYWdlIGluIHRoZSBidWZmZXIsIGl0IGlzIGZvciBkZW1vbnN0cmF0aW5nIGEgc3dhcAorb25seS4KKworICArLS0tLS0tKworICB8cmVhZGVyfCAgICAgICAgICBSSU5HIEJVRkZFUgorICB8cGFnZSAgfAorICArLS0tLS0tKworICAgICAgICAgICAgICAgICAgKy0tLSsgICArLS0tKyAgICstLS0rCisgICAgICAgICAgICAgICAgICB8ICAgfC0tPnwgICB8LS0+fCAgIHwKKyAgICAgICAgICAgICAgICAgIHwgICB8PC0tfCAgIHw8LS18ICAgfAorICAgICAgICAgICAgICAgICAgKy0tLSsgICArLS0tKyAgICstLS0rCisgICAgICAgICAgICAgICAgICAgXiB8ICAgICAgICAgICAgIF4gfAorICAgICAgICAgICAgICAgICAgIHwgKy0tLS0tLS0tLS0tLS0rIHwKKyAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0rCisKKworICArLS0tLS0tKworICB8cmVhZGVyfCAgICAgICAgICBSSU5HIEJVRkZFUgorICB8cGFnZSAgfC0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICstLS0tLS0rICAgICAgICAgICAgICAgICAgIHYKKyAgICB8ICAgICAgICAgICAgICstLS0rICAgKy0tLSsgICArLS0tKworICAgIHwgICAgICAgICAgICAgfCAgIHwtLT58ICAgfC0tPnwgICB8CisgICAgfCAgICAgICAgICAgICB8ICAgfDwtLXwgICB8PC0tfCAgIHw8LSsKKyAgICB8ICAgICAgICAgICAgICstLS0rICAgKy0tLSsgICArLS0tKyAgfAorICAgIHwgICAgICAgICAgICAgIF4gfCAgICAgICAgICAgICBeIHwgICB8CisgICAgfCAgICAgICAgICAgICAgfCArLS0tLS0tLS0tLS0tLSsgfCAgIHwKKyAgICB8ICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0rICAgfAorICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKyAgKy0tLS0tLSsKKyAgfHJlYWRlcnwgICAgICAgICAgUklORyBCVUZGRVIKKyAgfHBhZ2UgIHwtLS0tLS0tLS0tLS0tLS0tLS0tKworICArLS0tLS0tKyA8LS0tLS0tLS0tLS0tLS0tKyB2CisgICAgfCAgXiAgICAgICAgICArLS0tKyAgICstLS0rICAgKy0tLSsKKyAgICB8ICB8ICAgICAgICAgIHwgICB8LS0+fCAgIHwtLT58ICAgfAorICAgIHwgIHwgICAgICAgICAgfCAgIHwgICB8ICAgfDwtLXwgICB8PC0rCisgICAgfCAgfCAgICAgICAgICArLS0tKyAgICstLS0rICAgKy0tLSsgIHwKKyAgICB8ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgICAgXiB8ICAgfAorICAgIHwgIHwgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0rIHwgICB8CisgICAgfCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgIHwKKyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisgICstLS0tLS0rCisgIHxidWZmZXJ8ICAgICAgICAgIFJJTkcgQlVGRkVSCisgIHxwYWdlICB8LS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgKy0tLS0tLSsgPC0tLS0tLS0tLS0tLS0tLSsgdgorICAgIHwgIF4gICAgICAgICAgKy0tLSsgICArLS0tKyAgICstLS0rCisgICAgfCAgfCAgICAgICAgICB8ICAgfCAgIHwgICB8LS0+fCAgIHwKKyAgICB8ICB8ICBOZXcgICAgIHwgICB8ICAgfCAgIHw8LS18ICAgfDwtKworICAgIHwgIHwgUmVhZGVyICAgKy0tLSsgICArLS0tKyAgICstLS0rICB8CisgICAgfCAgfCAgcGFnZSAtLS0tXiAgICAgICAgICAgICAgICAgfCAgIHwKKyAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgfAorICAgIHwgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICB8CisgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworCisKK0l0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIHBhZ2Ugc3dhcHBlZCBpcyB0aGUgY29tbWl0IHBhZ2UgYW5kIHRoZSB0YWlsIHBhZ2UsCitpZiB3aGF0IGlzIGluIHRoZSByaW5nIGJ1ZmZlciBpcyBsZXNzIHRoYW4gd2hhdCBpcyBoZWxkIGluIGEgYnVmZmVyIHBhZ2UuCisKKworICAgICAgICAgIHJlYWRlciBwYWdlICAgIGNvbW1pdCBwYWdlICAgdGFpbCBwYWdlCisgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfAorICAgICAgICAgICAgICB2ICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICArLS0tKyAgICAgICAgICAgfCAgICAgICAgICAgICB8CisgICAgICAgICAgICAgfCAgIHw8LS0tLS0tLS0tLSsgICAgICAgICAgICAgfAorICAgICAgICAgICAgIHwgICB8PC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICB8ICAgfC0tLS0tLSsKKyAgICAgICAgICAgICArLS0tKyAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworPC0tLXwgICB8LS0tPnwgICB8LS0tPnwgICB8LS0tPnwgICB8LS0tPgorLS0tPnwgICB8PC0tLXwgICB8PC0tLXwgICB8PC0tLXwgICB8PC0tLQorICAgICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rCisKK1RoaXMgY2FzZSBpcyBzdGlsbCB2YWxpZCBmb3IgdGhpcyBhbGdvcml0aG0uCitXaGVuIHRoZSB3cml0ZXIgbGVhdmVzIHRoZSBwYWdlLCBpdCBzaW1wbHkgZ29lcyBpbnRvIHRoZSByaW5nIGJ1ZmZlcgorc2luY2UgdGhlIHJlYWRlciBwYWdlIHN0aWxsIHBvaW50cyB0byB0aGUgbmV4dCBsb2NhdGlvbiBpbiB0aGUgcmluZworYnVmZmVyLgorCisKK1RoZSBtYWluIHBvaW50ZXJzOgorCisgIHJlYWRlciBwYWdlIC0gVGhlIHBhZ2UgdXNlZCBzb2xlbHkgYnkgdGhlIHJlYWRlciBhbmQgaXMgbm90IHBhcnQKKyAgICAgICAgICAgICAgICBvZiB0aGUgcmluZyBidWZmZXIgKG1heSBiZSBzd2FwcGVkIGluKQorCisgIGhlYWQgcGFnZSAtIHRoZSBuZXh0IHBhZ2UgaW4gdGhlIHJpbmcgYnVmZmVyIHRoYXQgd2lsbCBiZSBzd2FwcGVkCisgICAgICAgICAgICAgIHdpdGggdGhlIHJlYWRlciBwYWdlLgorCisgIHRhaWwgcGFnZSAtIHRoZSBwYWdlIHdoZXJlIHRoZSBuZXh0IHdyaXRlIHdpbGwgdGFrZSBwbGFjZS4KKworICBjb21taXQgcGFnZSAtIHRoZSBwYWdlIHRoYXQgbGFzdCBmaW5pc2hlZCBhIHdyaXRlLgorCitUaGUgY29tbWl0IHBhZ2Ugb25seSBpcyB1cGRhdGVkIGJ5IHRoZSBvdXRlcm1vc3Qgd3JpdGVyIGluIHRoZQord3JpdGVyIHN0YWNrLiBBIHdyaXRlciB0aGF0IHByZWVtcHRzIGFub3RoZXIgd3JpdGVyIHdpbGwgbm90IG1vdmUgdGhlCitjb21taXQgcGFnZS4KKworV2hlbiBkYXRhIGlzIHdyaXR0ZW4gaW50byB0aGUgcmluZyBidWZmZXIsIGEgcG9zaXRpb24gaXMgcmVzZXJ2ZWQKK2luIHRoZSByaW5nIGJ1ZmZlciBhbmQgcGFzc2VkIGJhY2sgdG8gdGhlIHdyaXRlci4gV2hlbiB0aGUgd3JpdGVyCitpcyBmaW5pc2hlZCB3cml0aW5nIGRhdGEgaW50byB0aGF0IHBvc2l0aW9uLCBpdCBjb21taXRzIHRoZSB3cml0ZS4KKworQW5vdGhlciB3cml0ZSAob3IgYSByZWFkKSBtYXkgdGFrZSBwbGFjZSBhdCBhbnl0aW1lIGR1cmluZyB0aGlzCit0cmFuc2FjdGlvbi4gSWYgYW5vdGhlciB3cml0ZSBoYXBwZW5zIGl0IG11c3QgZmluaXNoIGJlZm9yZSBjb250aW51aW5nCit3aXRoIHRoZSBwcmV2aW91cyB3cml0ZS4KKworCisgICBXcml0ZSByZXNlcnZlOgorCisgICAgICAgQnVmZmVyIHBhZ2UKKyAgICAgICstLS0tLS0tLS0rCisgICAgICB8d3JpdHRlbiAgfAorICAgICAgKy0tLS0tLS0tLSsgIDwtLS0gZ2l2ZW4gYmFjayB0byB3cml0ZXIgKGN1cnJlbnQgY29tbWl0KQorICAgICAgfHJlc2VydmVkIHwKKyAgICAgICstLS0tLS0tLS0rIDwtLS0gdGFpbCBwb2ludGVyCisgICAgICB8IGVtcHR5ICAgfAorICAgICAgKy0tLS0tLS0tLSsKKworICAgV3JpdGUgY29tbWl0OgorCisgICAgICAgQnVmZmVyIHBhZ2UKKyAgICAgICstLS0tLS0tLS0rCisgICAgICB8d3JpdHRlbiAgfAorICAgICAgKy0tLS0tLS0tLSsKKyAgICAgIHx3cml0dGVuICB8CisgICAgICArLS0tLS0tLS0tKyAgPC0tLSBuZXh0IHBvc2l0aW9uIGZvciB3cml0ZSAoY3VycmVudCBjb21taXQpCisgICAgICB8IGVtcHR5ICAgfAorICAgICAgKy0tLS0tLS0tLSsKKworCisgSWYgYSB3cml0ZSBoYXBwZW5zIGFmdGVyIHRoZSBmaXJzdCByZXNlcnZlOgorCisgICAgICAgQnVmZmVyIHBhZ2UKKyAgICAgICstLS0tLS0tLS0rCisgICAgICB8d3JpdHRlbiAgfAorICAgICAgKy0tLS0tLS0tLSsgIDwtLSBjdXJyZW50IGNvbW1pdAorICAgICAgfHJlc2VydmVkIHwKKyAgICAgICstLS0tLS0tLS0rICA8LS0tIGdpdmVuIGJhY2sgdG8gc2Vjb25kIHdyaXRlcgorICAgICAgfHJlc2VydmVkIHwKKyAgICAgICstLS0tLS0tLS0rIDwtLS0gdGFpbCBwb2ludGVyCisKKyAgQWZ0ZXIgc2Vjb25kIHdyaXRlciBjb21taXRzOgorCisKKyAgICAgICBCdWZmZXIgcGFnZQorICAgICAgKy0tLS0tLS0tLSsKKyAgICAgIHx3cml0dGVuICB8CisgICAgICArLS0tLS0tLS0tKyAgPC0tKGxhc3QgZnVsbCBjb21taXQpCisgICAgICB8cmVzZXJ2ZWQgfAorICAgICAgKy0tLS0tLS0tLSsKKyAgICAgIHxwZW5kaW5nICB8CisgICAgICB8Y29tbWl0ICAgfAorICAgICAgKy0tLS0tLS0tLSsgPC0tLSB0YWlsIHBvaW50ZXIKKworICBXaGVuIHRoZSBmaXJzdCB3cml0ZXIgY29tbWl0czoKKworICAgICAgIEJ1ZmZlciBwYWdlCisgICAgICArLS0tLS0tLS0tKworICAgICAgfHdyaXR0ZW4gIHwKKyAgICAgICstLS0tLS0tLS0rCisgICAgICB8d3JpdHRlbiAgfAorICAgICAgKy0tLS0tLS0tLSsKKyAgICAgIHx3cml0dGVuICB8CisgICAgICArLS0tLS0tLS0tKyAgPC0tKGxhc3QgZnVsbCBjb21taXQgYW5kIHRhaWwgcG9pbnRlcikKKworCitUaGUgY29tbWl0IHBvaW50ZXIgcG9pbnRzIHRvIHRoZSBsYXN0IHdyaXRlIGxvY2F0aW9uIHRoYXQgd2FzCitjb21taXR0ZWQgd2l0aG91dCBwcmVlbXB0aW5nIGFub3RoZXIgd3JpdGUuIFdoZW4gYSB3cml0ZSB0aGF0CitwcmVlbXB0ZWQgYW5vdGhlciB3cml0ZSBpcyBjb21taXR0ZWQsIGl0IG9ubHkgYmVjb21lcyBhIHBlbmRpbmcgY29tbWl0CithbmQgd2lsbCBub3QgYmUgYSBmdWxsIGNvbW1pdCB1bnRpbCBhbGwgd3JpdGVzIGhhdmUgYmVlbiBjb21taXR0ZWQuCisKK1RoZSBjb21taXQgcGFnZSBwb2ludHMgdG8gdGhlIHBhZ2UgdGhhdCBoYXMgdGhlIGxhc3QgZnVsbCBjb21taXQuCitUaGUgdGFpbCBwYWdlIHBvaW50cyB0byB0aGUgcGFnZSB3aXRoIHRoZSBsYXN0IHdyaXRlIChiZWZvcmUKK2NvbW1pdHRpbmcpLgorCitUaGUgdGFpbCBwYWdlIGlzIGFsd2F5cyBlcXVhbCB0byBvciBhZnRlciB0aGUgY29tbWl0IHBhZ2UuIEl0IG1heQorYmUgc2V2ZXJhbCBwYWdlcyBhaGVhZC4gSWYgdGhlIHRhaWwgcGFnZSBjYXRjaGVzIHVwIHRvIHRoZSBjb21taXQKK3BhZ2UgdGhlbiBubyBtb3JlIHdyaXRlcyBtYXkgdGFrZSBwbGFjZSAocmVnYXJkbGVzcyBvZiB0aGUgbW9kZQorb2YgdGhlIHJpbmcgYnVmZmVyOiBvdmVyd3JpdGUgYW5kIHByb2R1Y2UvY29uc3VtZXIpLgorCitUaGUgb3JkZXIgb2YgcGFnZXMgaXM6CisKKyBoZWFkIHBhZ2UKKyBjb21taXQgcGFnZQorIHRhaWwgcGFnZQorCitQb3NzaWJsZSBzY2VuYXJpbzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFpbCBwYWdlCisgIGhlYWQgcGFnZSAgICAgICAgIGNvbW1pdCBwYWdlICB8CisgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICB8CisgICAgICB2ICAgICAgICAgICAgICAgICB2ICAgICAgICB2CisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKzwtLS18ICAgfC0tLT58ICAgfC0tLT58ICAgfC0tLT58ICAgfC0tLT4KKy0tLT58ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS0KKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworCitUaGVyZSBpcyBhIHNwZWNpYWwgY2FzZSB0aGF0IHRoZSBoZWFkIHBhZ2UgaXMgYWZ0ZXIgZWl0aGVyIHRoZSBjb21taXQgcGFnZQorYW5kIHBvc3NpYmx5IHRoZSB0YWlsIHBhZ2UuIFRoYXQgaXMgd2hlbiB0aGUgY29tbWl0IChhbmQgdGFpbCkgcGFnZSBoYXMgYmVlbgorc3dhcHBlZCB3aXRoIHRoZSByZWFkZXIgcGFnZS4gVGhpcyBpcyBiZWNhdXNlIHRoZSBoZWFkIHBhZ2UgaXMgYWx3YXlzCitwYXJ0IG9mIHRoZSByaW5nIGJ1ZmZlciwgYnV0IHRoZSByZWFkZXIgcGFnZSBpcyBub3QuIFdoZW5ldmVyIHRoZXJlCitoYXMgYmVlbiBsZXNzIHRoYW4gYSBmdWxsIHBhZ2UgdGhhdCBoYXMgYmVlbiBjb21taXR0ZWQgaW5zaWRlIHRoZSByaW5nIGJ1ZmZlciwKK2FuZCBhIHJlYWRlciBzd2FwcyBvdXQgYSBwYWdlLCBpdCB3aWxsIGJlIHN3YXBwaW5nIG91dCB0aGUgY29tbWl0IHBhZ2UuCisKKworICAgICAgICAgIHJlYWRlciBwYWdlICAgIGNvbW1pdCBwYWdlICAgdGFpbCBwYWdlCisgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfAorICAgICAgICAgICAgICB2ICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICArLS0tKyAgICAgICAgICAgfCAgICAgICAgICAgICB8CisgICAgICAgICAgICAgfCAgIHw8LS0tLS0tLS0tLSsgICAgICAgICAgICAgfAorICAgICAgICAgICAgIHwgICB8PC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICB8ICAgfC0tLS0tLSsKKyAgICAgICAgICAgICArLS0tKyAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworPC0tLXwgICB8LS0tPnwgICB8LS0tPnwgICB8LS0tPnwgICB8LS0tPgorLS0tPnwgICB8PC0tLXwgICB8PC0tLXwgICB8PC0tLXwgICB8PC0tLQorICAgICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rCisgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgIGhlYWQgcGFnZQorCisKK0luIHRoaXMgY2FzZSwgdGhlIGhlYWQgcGFnZSB3aWxsIG5vdCBtb3ZlIHdoZW4gdGhlIHRhaWwgYW5kIGNvbW1pdAorbW92ZSBiYWNrIGludG8gdGhlIHJpbmcgYnVmZmVyLgorCitUaGUgcmVhZGVyIGNhbm5vdCBzd2FwIGEgcGFnZSBpbnRvIHRoZSByaW5nIGJ1ZmZlciBpZiB0aGUgY29tbWl0IHBhZ2UKK2lzIHN0aWxsIG9uIHRoYXQgcGFnZS4gSWYgdGhlIHJlYWQgbWVldHMgdGhlIGxhc3QgY29tbWl0IChyZWFsIGNvbW1pdAorbm90IHBlbmRpbmcgb3IgcmVzZXJ2ZWQpLCB0aGVuIHRoZXJlIGlzIG5vdGhpbmcgbW9yZSB0byByZWFkLgorVGhlIGJ1ZmZlciBpcyBjb25zaWRlcmVkIGVtcHR5IHVudGlsIGFub3RoZXIgZnVsbCBjb21taXQgZmluaXNoZXMuCisKK1doZW4gdGhlIHRhaWwgbWVldHMgdGhlIGhlYWQgcGFnZSwgaWYgdGhlIGJ1ZmZlciBpcyBpbiBvdmVyd3JpdGUgbW9kZSwKK3RoZSBoZWFkIHBhZ2Ugd2lsbCBiZSBwdXNoZWQgYWhlYWQgb25lLiBJZiB0aGUgYnVmZmVyIGlzIGluIHByb2R1Y2VyL2NvbnN1bWVyCittb2RlLCB0aGUgd3JpdGUgd2lsbCBmYWlsLgorCitPdmVyd3JpdGUgbW9kZToKKworICAgICAgICAgICAgdGFpbCBwYWdlCisgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICB2CisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKzwtLS18ICAgfC0tLT58ICAgfC0tLT58ICAgfC0tLT58ICAgfC0tLT4KKy0tLT58ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS0KKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICBoZWFkIHBhZ2UKKworCisgICAgICAgICAgICB0YWlsIHBhZ2UKKyAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgIHYKKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworPC0tLXwgICB8LS0tPnwgICB8LS0tPnwgICB8LS0tPnwgICB8LS0tPgorLS0tPnwgICB8PC0tLXwgICB8PC0tLXwgICB8PC0tLXwgICB8PC0tLQorICAgICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWQgcGFnZQorCisKKyAgICAgICAgICAgICAgICAgICAgdGFpbCBwYWdlCisgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKzwtLS18ICAgfC0tLT58ICAgfC0tLT58ICAgfC0tLT58ICAgfC0tLT4KKy0tLT58ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS0KKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkIHBhZ2UKKworTm90ZSwgdGhlIHJlYWRlciBwYWdlIHdpbGwgc3RpbGwgcG9pbnQgdG8gdGhlIHByZXZpb3VzIGhlYWQgcGFnZS4KK0J1dCB3aGVuIGEgc3dhcCB0YWtlcyBwbGFjZSwgaXQgd2lsbCB1c2UgdGhlIG1vc3QgcmVjZW50IGhlYWQgcGFnZS4KKworCitNYWtpbmcgdGhlIFJpbmcgQnVmZmVyIExvY2tsZXNzOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG1haW4gaWRlYSBiZWhpbmQgdGhlIGxvY2tsZXNzIGFsZ29yaXRobSBpcyB0byBjb21iaW5lIHRoZSBtb3ZpbmcKK29mIHRoZSBoZWFkX3BhZ2UgcG9pbnRlciB3aXRoIHRoZSBzd2FwcGluZyBvZiBwYWdlcyB3aXRoIHRoZSByZWFkZXIuCitTdGF0ZSBmbGFncyBhcmUgcGxhY2VkIGluc2lkZSB0aGUgcG9pbnRlciB0byB0aGUgcGFnZS4gVG8gZG8gdGhpcywKK2VhY2ggcGFnZSBtdXN0IGJlIGFsaWduZWQgaW4gbWVtb3J5IGJ5IDQgYnl0ZXMuIFRoaXMgd2lsbCBhbGxvdyB0aGUgMgorbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiB0aGUgYWRkcmVzcyB0byBiZSB1c2VkIGFzIGZsYWdzLCBzaW5jZQordGhleSB3aWxsIGFsd2F5cyBiZSB6ZXJvIGZvciB0aGUgYWRkcmVzcy4gVG8gZ2V0IHRoZSBhZGRyZXNzLAorc2ltcGx5IG1hc2sgb3V0IHRoZSBmbGFncy4KKworICBNQVNLID0gfjMKKworICBhZGRyZXNzICYgTUFTSworCitUd28gZmxhZ3Mgd2lsbCBiZSBrZXB0IGJ5IHRoZXNlIHR3byBiaXRzOgorCisgICBIRUFERVIgLSB0aGUgcGFnZSBiZWluZyBwb2ludGVkIHRvIGlzIGEgaGVhZCBwYWdlCisKKyAgIFVQREFURSAtIHRoZSBwYWdlIGJlaW5nIHBvaW50ZWQgdG8gaXMgYmVpbmcgdXBkYXRlZCBieSBhIHdyaXRlcgorICAgICAgICAgIGFuZCB3YXMgb3IgaXMgYWJvdXQgdG8gYmUgYSBoZWFkIHBhZ2UuCisKKworICAgICAgICAgIHJlYWRlciBwYWdlCisgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgdgorICAgICAgICAgICAgICstLS0rCisgICAgICAgICAgICAgfCAgIHwtLS0tLS0rCisgICAgICAgICAgICAgKy0tLSsgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKzwtLS18ICAgfC0tLT58ICAgfC1ILT58ICAgfC0tLT58ICAgfC0tLT4KKy0tLT58ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS0KKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworCisKK1RoZSBhYm92ZSBwb2ludGVyICItSC0+IiB3b3VsZCBoYXZlIHRoZSBIRUFERVIgZmxhZyBzZXQuIFRoYXQgaXMKK3RoZSBuZXh0IHBhZ2UgaXMgdGhlIG5leHQgcGFnZSB0byBiZSBzd2FwcGVkIG91dCBieSB0aGUgcmVhZGVyLgorVGhpcyBwb2ludGVyIG1lYW5zIHRoZSBuZXh0IHBhZ2UgaXMgdGhlIGhlYWQgcGFnZS4KKworV2hlbiB0aGUgdGFpbCBwYWdlIG1lZXRzIHRoZSBoZWFkIHBvaW50ZXIsIGl0IHdpbGwgdXNlIGNtcHhjaGcgdG8KK2NoYW5nZSB0aGUgcG9pbnRlciB0byB0aGUgVVBEQVRFIHN0YXRlOgorCisKKyAgICAgICAgICAgIHRhaWwgcGFnZQorICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgdgorICAgICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rCis8LS0tfCAgIHwtLS0+fCAgIHwtSC0+fCAgIHwtLS0+fCAgIHwtLS0+CistLS0+fCAgIHw8LS0tfCAgIHw8LS0tfCAgIHw8LS0tfCAgIHw8LS0tCisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKworICAgICAgICAgICAgdGFpbCBwYWdlCisgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICB2CisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKzwtLS18ICAgfC0tLT58ICAgfC1VLT58ICAgfC0tLT58ICAgfC0tLT4KKy0tLT58ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS0KKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworCisiLVUtPiIgcmVwcmVzZW50cyBhIHBvaW50ZXIgaW4gdGhlIFVQREFURSBzdGF0ZS4KKworQW55IGFjY2VzcyB0byB0aGUgcmVhZGVyIHdpbGwgbmVlZCB0byB0YWtlIHNvbWUgc29ydCBvZiBsb2NrIHRvIHNlcmlhbGl6ZQordGhlIHJlYWRlcnMuIEJ1dCB0aGUgd3JpdGVycyB3aWxsIG5ldmVyIHRha2UgYSBsb2NrIHRvIHdyaXRlIHRvIHRoZQorcmluZyBidWZmZXIuIFRoaXMgbWVhbnMgd2Ugb25seSBuZWVkIHRvIHdvcnJ5IGFib3V0IGEgc2luZ2xlIHJlYWRlciwKK2FuZCB3cml0ZXMgb25seSBwcmVlbXB0IGluICJzdGFjayIgZm9ybWF0aW9uLgorCitXaGVuIHRoZSByZWFkZXIgdHJpZXMgdG8gc3dhcCB0aGUgcGFnZSB3aXRoIHRoZSByaW5nIGJ1ZmZlciwgaXQKK3dpbGwgYWxzbyB1c2UgY21weGNoZy4gSWYgdGhlIGZsYWcgYml0IGluIHRoZSBwb2ludGVyIHRvIHRoZQoraGVhZCBwYWdlIGRvZXMgbm90IGhhdmUgdGhlIEhFQURFUiBmbGFnIHNldCwgdGhlIGNvbXBhcmUgd2lsbCBmYWlsCithbmQgdGhlIHJlYWRlciB3aWxsIG5lZWQgdG8gbG9vayBmb3IgdGhlIG5ldyBoZWFkIHBhZ2UgYW5kIHRyeSBhZ2Fpbi4KK05vdGUsIHRoZSBmbGFncyBVUERBVEUgYW5kIEhFQURFUiBhcmUgbmV2ZXIgc2V0IGF0IHRoZSBzYW1lIHRpbWUuCisKK1RoZSByZWFkZXIgc3dhcHMgdGhlIHJlYWRlciBwYWdlIGFzIGZvbGxvd3M6CisKKyAgKy0tLS0tLSsKKyAgfHJlYWRlcnwgICAgICAgICAgUklORyBCVUZGRVIKKyAgfHBhZ2UgIHwKKyAgKy0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICstLS0rICAgICstLS0rICAgICstLS0rCisgICAgICAgICAgICAgICAgICB8ICAgfC0tLT58ICAgfC0tLT58ICAgfAorICAgICAgICAgICAgICAgICAgfCAgIHw8LS0tfCAgIHw8LS0tfCAgIHwKKyAgICAgICAgICAgICAgICAgICstLS0rICAgICstLS0rICAgICstLS0rCisgICAgICAgICAgICAgICAgICAgXiB8ICAgICAgICAgICAgICAgXiB8CisgICAgICAgICAgICAgICAgICAgfCArLS0tLS0tLS0tLS0tLS0tKyB8CisgICAgICAgICAgICAgICAgICAgKy0tLS0tSC0tLS0tLS0tLS0tLS0rCisKK1RoZSByZWFkZXIgc2V0cyB0aGUgcmVhZGVyIHBhZ2UgbmV4dCBwb2ludGVyIGFzIEhFQURFUiB0byB0aGUgcGFnZSBhZnRlcgordGhlIGhlYWQgcGFnZS4KKworCisgICstLS0tLS0rCisgIHxyZWFkZXJ8ICAgICAgICAgIFJJTkcgQlVGRkVSCisgIHxwYWdlICB8LS0tLS0tLUgtLS0tLS0tLS0tLSsKKyAgKy0tLS0tLSsgICAgICAgICAgICAgICAgICAgdgorICAgIHwgICAgICAgICAgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKyAgICB8ICAgICAgICAgICAgIHwgICB8LS0tPnwgICB8LS0tPnwgICB8CisgICAgfCAgICAgICAgICAgICB8ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtKworICAgIHwgICAgICAgICAgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgIHwKKyAgICB8ICAgICAgICAgICAgICBeIHwgICAgICAgICAgICAgICBeIHwgICB8CisgICAgfCAgICAgICAgICAgICAgfCArLS0tLS0tLS0tLS0tLS0tKyB8ICAgfAorICAgIHwgICAgICAgICAgICAgICstLS0tLUgtLS0tLS0tLS0tLS0tKyAgIHwKKyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKK0l0IGRvZXMgYSBjbXB4Y2hnIHdpdGggdGhlIHBvaW50ZXIgdG8gdGhlIHByZXZpb3VzIGhlYWQgcGFnZSB0byBtYWtlIGl0Citwb2ludCB0byB0aGUgcmVhZGVyIHBhZ2UuIE5vdGUgdGhhdCB0aGUgbmV3IHBvaW50ZXIgZG9lcyBub3QgaGF2ZSB0aGUgSEVBREVSCitmbGFnIHNldC4gIFRoaXMgYWN0aW9uIGF0b21pY2FsbHkgbW92ZXMgdGhlIGhlYWQgcGFnZSBmb3J3YXJkLgorCisgICstLS0tLS0rCisgIHxyZWFkZXJ8ICAgICAgICAgIFJJTkcgQlVGRkVSCisgIHxwYWdlICB8LS0tLS0tLUgtLS0tLS0tLS0tLSsKKyAgKy0tLS0tLSsgICAgICAgICAgICAgICAgICAgdgorICAgIHwgIF4gICAgICAgICAgKy0tLSsgICArLS0tKyAgICstLS0rCisgICAgfCAgfCAgICAgICAgICB8ICAgfC0tPnwgICB8LS0+fCAgIHwKKyAgICB8ICB8ICAgICAgICAgIHwgICB8PC0tfCAgIHw8LS18ICAgfDwtKworICAgIHwgIHwgICAgICAgICAgKy0tLSsgICArLS0tKyAgICstLS0rICB8CisgICAgfCAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgIF4gfCAgIHwKKyAgICB8ICB8ICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tKyB8ICAgfAorICAgIHwgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICB8CisgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworQWZ0ZXIgdGhlIG5ldyBoZWFkIHBhZ2UgaXMgc2V0LCB0aGUgcHJldmlvdXMgcG9pbnRlciBvZiB0aGUgaGVhZCBwYWdlIGlzCit1cGRhdGVkIHRvIHRoZSByZWFkZXIgcGFnZS4KKworICArLS0tLS0tKworICB8cmVhZGVyfCAgICAgICAgICBSSU5HIEJVRkZFUgorICB8cGFnZSAgfC0tLS0tLS1ILS0tLS0tLS0tLS0rCisgICstLS0tLS0rIDwtLS0tLS0tLS0tLS0tLS0rIHYKKyAgICB8ICBeICAgICAgICAgICstLS0rICAgKy0tLSsgICArLS0tKworICAgIHwgIHwgICAgICAgICAgfCAgIHwtLT58ICAgfC0tPnwgICB8CisgICAgfCAgfCAgICAgICAgICB8ICAgfCAgIHwgICB8PC0tfCAgIHw8LSsKKyAgICB8ICB8ICAgICAgICAgICstLS0rICAgKy0tLSsgICArLS0tKyAgfAorICAgIHwgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICBeIHwgICB8CisgICAgfCAgfCAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLSsgfCAgIHwKKyAgICB8ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgfAorICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKyAgKy0tLS0tLSsKKyAgfGJ1ZmZlcnwgICAgICAgICAgUklORyBCVUZGRVIKKyAgfHBhZ2UgIHwtLS0tLS0tSC0tLS0tLS0tLS0tKyAgPC0tLSBOZXcgaGVhZCBwYWdlCisgICstLS0tLS0rIDwtLS0tLS0tLS0tLS0tLS0rIHYKKyAgICB8ICBeICAgICAgICAgICstLS0rICAgKy0tLSsgICArLS0tKworICAgIHwgIHwgICAgICAgICAgfCAgIHwgICB8ICAgfC0tPnwgICB8CisgICAgfCAgfCAgTmV3ICAgICB8ICAgfCAgIHwgICB8PC0tfCAgIHw8LSsKKyAgICB8ICB8IFJlYWRlciAgICstLS0rICAgKy0tLSsgICArLS0tKyAgfAorICAgIHwgIHwgIHBhZ2UgLS0tLV4gICAgICAgICAgICAgICAgIHwgICB8CisgICAgfCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIHwKKyAgICB8ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgfAorICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKK0Fub3RoZXIgaW1wb3J0YW50IHBvaW50OiBUaGUgcGFnZSB0aGF0IHRoZSByZWFkZXIgcGFnZSBwb2ludHMgYmFjayB0bworYnkgaXRzIHByZXZpb3VzIHBvaW50ZXIgKHRoZSBvbmUgdGhhdCBub3cgcG9pbnRzIHRvIHRoZSBuZXcgaGVhZCBwYWdlKQorbmV2ZXIgcG9pbnRzIGJhY2sgdG8gdGhlIHJlYWRlciBwYWdlLiBUaGF0IGlzIGJlY2F1c2UgdGhlIHJlYWRlciBwYWdlIGlzCitub3QgcGFydCBvZiB0aGUgcmluZyBidWZmZXIuIFRyYXZlcnNpbmcgdGhlIHJpbmcgYnVmZmVyIHZpYSB0aGUgbmV4dCBwb2ludGVycword2lsbCBhbHdheXMgc3RheSBpbiB0aGUgcmluZyBidWZmZXIuIFRyYXZlcnNpbmcgdGhlIHJpbmcgYnVmZmVyIHZpYSB0aGUKK3ByZXYgcG9pbnRlcnMgbWF5IG5vdC4KKworTm90ZSwgdGhlIHdheSB0byBkZXRlcm1pbmUgYSByZWFkZXIgcGFnZSBpcyBzaW1wbHkgYnkgZXhhbWluaW5nIHRoZSBwcmV2aW91cworcG9pbnRlciBvZiB0aGUgcGFnZS4gSWYgdGhlIG5leHQgcG9pbnRlciBvZiB0aGUgcHJldmlvdXMgcGFnZSBkb2VzIG5vdAorcG9pbnQgYmFjayB0byB0aGUgb3JpZ2luYWwgcGFnZSwgdGhlbiB0aGUgb3JpZ2luYWwgcGFnZSBpcyBhIHJlYWRlciBwYWdlOgorCisKKyAgICAgICAgICAgICArLS0tLS0tLS0rCisgICAgICAgICAgICAgfCByZWFkZXIgfCAgbmV4dCAgICstLS0tKworICAgICAgICAgICAgIHwgIHBhZ2UgIHwtLS0tLS0tLT58ICAgIHw8PT09PT09IChidWZmZXIgcGFnZSkKKyAgICAgICAgICAgICArLS0tLS0tLS0rICAgICAgICAgKy0tLS0rCisgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCBeCisgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgdiB8IG5leHQKKyAgICAgICAgICAgIHByZXYgfCAgICAgICAgICAgICAgKy0tLS0rCisgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tPnwgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLSsKKworVGhlIHdheSB0aGUgaGVhZCBwYWdlIG1vdmVzIGZvcndhcmQ6CisKK1doZW4gdGhlIHRhaWwgcGFnZSBtZWV0cyB0aGUgaGVhZCBwYWdlIGFuZCB0aGUgYnVmZmVyIGlzIGluIG92ZXJ3cml0ZSBtb2RlCithbmQgbW9yZSB3cml0ZXMgdGFrZSBwbGFjZSwgdGhlIGhlYWQgcGFnZSBtdXN0IGJlIG1vdmVkIGZvcndhcmQgYmVmb3JlIHRoZQord3JpdGVyIG1heSBtb3ZlIHRoZSB0YWlsIHBhZ2UuIFRoZSB3YXkgdGhpcyBpcyBkb25lIGlzIHRoYXQgdGhlIHdyaXRlcgorcGVyZm9ybXMgYSBjbXB4Y2hnIHRvIGNvbnZlcnQgdGhlIHBvaW50ZXIgdG8gdGhlIGhlYWQgcGFnZSBmcm9tIHRoZSBIRUFERVIKK2ZsYWcgdG8gaGF2ZSB0aGUgVVBEQVRFIGZsYWcgc2V0LiBPbmNlIHRoaXMgaXMgZG9uZSwgdGhlIHJlYWRlciB3aWxsCitub3QgYmUgYWJsZSB0byBzd2FwIHRoZSBoZWFkIHBhZ2UgZnJvbSB0aGUgYnVmZmVyLCBub3Igd2lsbCBpdCBiZSBhYmxlIHRvCittb3ZlIHRoZSBoZWFkIHBhZ2UsIHVudGlsIHRoZSB3cml0ZXIgaXMgZmluaXNoZWQgd2l0aCB0aGUgbW92ZS4KKworVGhpcyBlbGltaW5hdGVzIGFueSByYWNlcyB0aGF0IHRoZSByZWFkZXIgY2FuIGhhdmUgb24gdGhlIHdyaXRlci4gVGhlIHJlYWRlcgorbXVzdCBzcGluLCBhbmQgdGhpcyBpcyB3aHkgdGhlIHJlYWRlciBjYW5ub3QgcHJlZW1wdCB0aGUgd3JpdGVyLgorCisgICAgICAgICAgICB0YWlsIHBhZ2UKKyAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgIHYKKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworPC0tLXwgICB8LS0tPnwgICB8LUgtPnwgICB8LS0tPnwgICB8LS0tPgorLS0tPnwgICB8PC0tLXwgICB8PC0tLXwgICB8PC0tLXwgICB8PC0tLQorICAgICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rCisKKyAgICAgICAgICAgIHRhaWwgcGFnZQorICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgdgorICAgICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rCis8LS0tfCAgIHwtLS0+fCAgIHwtVS0+fCAgIHwtLS0+fCAgIHwtLS0+CistLS0+fCAgIHw8LS0tfCAgIHw8LS0tfCAgIHw8LS0tfCAgIHw8LS0tCisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKworVGhlIGZvbGxvd2luZyBwYWdlIHdpbGwgYmUgbWFkZSBpbnRvIHRoZSBuZXcgaGVhZCBwYWdlLgorCisgICAgICAgICAgIHRhaWwgcGFnZQorICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgdgorICAgICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rCis8LS0tfCAgIHwtLS0+fCAgIHwtVS0+fCAgIHwtSC0+fCAgIHwtLS0+CistLS0+fCAgIHw8LS0tfCAgIHw8LS0tfCAgIHw8LS0tfCAgIHw8LS0tCisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKworQWZ0ZXIgdGhlIG5ldyBoZWFkIHBhZ2UgaGFzIGJlZW4gc2V0LCB3ZSBjYW4gc2V0IHRoZSBvbGQgaGVhZCBwYWdlCitwb2ludGVyIGJhY2sgdG8gTk9STUFMLgorCisgICAgICAgICAgIHRhaWwgcGFnZQorICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgdgorICAgICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rCis8LS0tfCAgIHwtLS0+fCAgIHwtLS0+fCAgIHwtSC0+fCAgIHwtLS0+CistLS0+fCAgIHw8LS0tfCAgIHw8LS0tfCAgIHw8LS0tfCAgIHw8LS0tCisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKworQWZ0ZXIgdGhlIGhlYWQgcGFnZSBoYXMgYmVlbiBtb3ZlZCwgdGhlIHRhaWwgcGFnZSBtYXkgbm93IG1vdmUgZm9yd2FyZC4KKworICAgICAgICAgICAgICAgICAgICB0YWlsIHBhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworPC0tLXwgICB8LS0tPnwgICB8LS0tPnwgICB8LUgtPnwgICB8LS0tPgorLS0tPnwgICB8PC0tLXwgICB8PC0tLXwgICB8PC0tLXwgICB8PC0tLQorICAgICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rCisKKworVGhlIGFib3ZlIGFyZSB0aGUgdHJpdmlhbCB1cGRhdGVzLiBOb3cgZm9yIHRoZSBtb3JlIGNvbXBsZXggc2NlbmFyaW9zLgorCisKK0FzIHN0YXRlZCBiZWZvcmUsIGlmIGVub3VnaCB3cml0ZXMgcHJlZW1wdCB0aGUgZmlyc3Qgd3JpdGUsIHRoZQordGFpbCBwYWdlIG1heSBtYWtlIGl0IGFsbCB0aGUgd2F5IGFyb3VuZCB0aGUgYnVmZmVyIGFuZCBtZWV0IHRoZSBjb21taXQKK3BhZ2UuIEF0IHRoaXMgdGltZSwgd2UgbXVzdCBzdGFydCBkcm9wcGluZyB3cml0ZXMgKHVzdWFsbHkgd2l0aCBzb21lIGtpbmQKK29mIHdhcm5pbmcgdG8gdGhlIHVzZXIpLiBCdXQgd2hhdCBoYXBwZW5zIGlmIHRoZSBjb21taXQgd2FzIHN0aWxsIG9uIHRoZQorcmVhZGVyIHBhZ2U/IFRoZSBjb21taXQgcGFnZSBpcyBub3QgcGFydCBvZiB0aGUgcmluZyBidWZmZXIuIFRoZSB0YWlsIHBhZ2UKK211c3QgYWNjb3VudCBmb3IgdGhpcy4KKworCisgICAgICAgICAgcmVhZGVyIHBhZ2UgICAgY29tbWl0IHBhZ2UKKyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICB2ICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgKy0tLSsgICAgICAgICAgIHwKKyAgICAgICAgICAgICB8ICAgfDwtLS0tLS0tLS0tKworICAgICAgICAgICAgIHwgICB8CisgICAgICAgICAgICAgfCAgIHwtLS0tLS0rCisgICAgICAgICAgICAgKy0tLSsgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKzwtLS18ICAgfC0tLT58ICAgfC1ILT58ICAgfC0tLT58ICAgfC0tLT4KKy0tLT58ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS0KKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworICAgICAgICAgICAgICAgXgorICAgICAgICAgICAgICAgfAorICAgICAgICAgICB0YWlsIHBhZ2UKKworSWYgdGhlIHRhaWwgcGFnZSB3ZXJlIHRvIHNpbXBseSBwdXNoIHRoZSBoZWFkIHBhZ2UgZm9yd2FyZCwgdGhlIGNvbW1pdCB3aGVuCitsZWF2aW5nIHRoZSByZWFkZXIgcGFnZSB3b3VsZCBub3QgYmUgcG9pbnRpbmcgdG8gdGhlIGNvcnJlY3QgcGFnZS4KKworVGhlIHNvbHV0aW9uIHRvIHRoaXMgaXMgdG8gdGVzdCBpZiB0aGUgY29tbWl0IHBhZ2UgaXMgb24gdGhlIHJlYWRlciBwYWdlCitiZWZvcmUgcHVzaGluZyB0aGUgaGVhZCBwYWdlLiBJZiBpdCBpcywgdGhlbiBpdCBjYW4gYmUgYXNzdW1lZCB0aGF0IHRoZQordGFpbCBwYWdlIHdyYXBwZWQgdGhlIGJ1ZmZlciwgYW5kIHdlIG11c3QgZHJvcCBuZXcgd3JpdGVzLgorCitUaGlzIGlzIG5vdCBhIHJhY2UgY29uZGl0aW9uLCBiZWNhdXNlIHRoZSBjb21taXQgcGFnZSBjYW4gb25seSBiZSBtb3ZlZAorYnkgdGhlIG91dGVybW9zdCB3cml0ZXIgKHRoZSB3cml0ZXIgdGhhdCB3YXMgcHJlZW1wdGVkKS4KK1RoaXMgbWVhbnMgdGhhdCB0aGUgY29tbWl0IHdpbGwgbm90IG1vdmUgd2hpbGUgYSB3cml0ZXIgaXMgbW92aW5nIHRoZQordGFpbCBwYWdlLiBUaGUgcmVhZGVyIGNhbm5vdCBzd2FwIHRoZSByZWFkZXIgcGFnZSBpZiBpdCBpcyBhbHNvIGJlaW5nCit1c2VkIGFzIHRoZSBjb21taXQgcGFnZS4gVGhlIHJlYWRlciBjYW4gc2ltcGx5IGNoZWNrIHRoYXQgdGhlIGNvbW1pdAoraXMgb2ZmIHRoZSByZWFkZXIgcGFnZS4gT25jZSB0aGUgY29tbWl0IHBhZ2UgbGVhdmVzIHRoZSByZWFkZXIgcGFnZQoraXQgd2lsbCBuZXZlciBnbyBiYWNrIG9uIGl0IHVubGVzcyBhIHJlYWRlciBkb2VzIGFub3RoZXIgc3dhcCB3aXRoIHRoZQorYnVmZmVyIHBhZ2UgdGhhdCBpcyBhbHNvIHRoZSBjb21taXQgcGFnZS4KKworCitOZXN0ZWQgd3JpdGVzCistLS0tLS0tLS0tLS0tCisKK0luIHRoZSBwdXNoaW5nIGZvcndhcmQgb2YgdGhlIHRhaWwgcGFnZSB3ZSBtdXN0IGZpcnN0IHB1c2ggZm9yd2FyZAordGhlIGhlYWQgcGFnZSBpZiB0aGUgaGVhZCBwYWdlIGlzIHRoZSBuZXh0IHBhZ2UuIElmIHRoZSBoZWFkIHBhZ2UKK2lzIG5vdCB0aGUgbmV4dCBwYWdlLCB0aGUgdGFpbCBwYWdlIGlzIHNpbXBseSB1cGRhdGVkIHdpdGggYSBjbXB4Y2hnLgorCitPbmx5IHdyaXRlcnMgbW92ZSB0aGUgdGFpbCBwYWdlLiBUaGlzIG11c3QgYmUgZG9uZSBhdG9taWNhbGx5IHRvIHByb3RlY3QKK2FnYWluc3QgbmVzdGVkIHdyaXRlcnMuCisKKyAgdGVtcF9wYWdlID0gdGFpbF9wYWdlCisgIG5leHRfcGFnZSA9IHRlbXBfcGFnZS0+bmV4dAorICBjbXB4Y2hnKHRhaWxfcGFnZSwgdGVtcF9wYWdlLCBuZXh0X3BhZ2UpCisKK1RoZSBhYm92ZSB3aWxsIHVwZGF0ZSB0aGUgdGFpbCBwYWdlIGlmIGl0IGlzIHN0aWxsIHBvaW50aW5nIHRvIHRoZSBleHBlY3RlZAorcGFnZS4gSWYgdGhpcyBmYWlscywgYSBuZXN0ZWQgd3JpdGUgcHVzaGVkIGl0IGZvcndhcmQsIHRoZSBjdXJyZW50IHdyaXRlCitkb2VzIG5vdCBuZWVkIHRvIHB1c2ggaXQuCisKKworICAgICAgICAgICB0ZW1wIHBhZ2UKKyAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgIHYKKyAgICAgICAgICAgIHRhaWwgcGFnZQorICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgdgorICAgICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rCis8LS0tfCAgIHwtLS0+fCAgIHwtLS0+fCAgIHwtLS0+fCAgIHwtLS0+CistLS0+fCAgIHw8LS0tfCAgIHw8LS0tfCAgIHw8LS0tfCAgIHw8LS0tCisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKworTmVzdGVkIHdyaXRlIGNvbWVzIGluIGFuZCBtb3ZlcyB0aGUgdGFpbCBwYWdlIGZvcndhcmQ6CisKKyAgICAgICAgICAgICAgICAgICAgdGFpbCBwYWdlIChtb3ZlZCBieSBuZXN0ZWQgd3JpdGVyKQorICAgICAgICAgICAgdGVtcCBwYWdlICAgfAorICAgICAgICAgICAgICAgfCAgICAgICAgfAorICAgICAgICAgICAgICAgdiAgICAgICAgdgorICAgICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rCis8LS0tfCAgIHwtLS0+fCAgIHwtLS0+fCAgIHwtLS0+fCAgIHwtLS0+CistLS0+fCAgIHw8LS0tfCAgIHw8LS0tfCAgIHw8LS0tfCAgIHw8LS0tCisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKworVGhlIGFib3ZlIHdvdWxkIGZhaWwgdGhlIGNtcHhjaGcsIGJ1dCBzaW5jZSB0aGUgdGFpbCBwYWdlIGhhcyBhbHJlYWR5CitiZWVuIG1vdmVkIGZvcndhcmQsIHRoZSB3cml0ZXIgd2lsbCBqdXN0IHRyeSBhZ2FpbiB0byByZXNlcnZlIHN0b3JhZ2UKK29uIHRoZSBuZXcgdGFpbCBwYWdlLgorCitCdXQgdGhlIG1vdmluZyBvZiB0aGUgaGVhZCBwYWdlIGlzIGEgYml0IG1vcmUgY29tcGxleC4KKworICAgICAgICAgICAgdGFpbCBwYWdlCisgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICB2CisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKzwtLS18ICAgfC0tLT58ICAgfC1ILT58ICAgfC0tLT58ICAgfC0tLT4KKy0tLT58ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS0KKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworCitUaGUgd3JpdGUgY29udmVydHMgdGhlIGhlYWQgcGFnZSBwb2ludGVyIHRvIFVQREFURS4KKworICAgICAgICAgICAgdGFpbCBwYWdlCisgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICB2CisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKzwtLS18ICAgfC0tLT58ICAgfC1VLT58ICAgfC0tLT58ICAgfC0tLT4KKy0tLT58ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS0KKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworCitCdXQgaWYgYSBuZXN0ZWQgd3JpdGVyIHByZWVtcHRzIGhlcmUsIGl0IHdpbGwgc2VlIHRoYXQgdGhlIG5leHQKK3BhZ2UgaXMgYSBoZWFkIHBhZ2UsIGJ1dCBpdCBpcyBhbHNvIG5lc3RlZC4gSXQgd2lsbCBkZXRlY3QgdGhhdAoraXQgaXMgbmVzdGVkIGFuZCB3aWxsIHNhdmUgdGhhdCBpbmZvcm1hdGlvbi4gVGhlIGRldGVjdGlvbiBpcyB0aGUKK2ZhY3QgdGhhdCBpdCBzZWVzIHRoZSBVUERBVEUgZmxhZyBpbnN0ZWFkIG9mIGEgSEVBREVSIG9yIE5PUk1BTAorcG9pbnRlci4KKworVGhlIG5lc3RlZCB3cml0ZXIgd2lsbCBzZXQgdGhlIG5ldyBoZWFkIHBhZ2UgcG9pbnRlci4KKworICAgICAgICAgICB0YWlsIHBhZ2UKKyAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgIHYKKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworPC0tLXwgICB8LS0tPnwgICB8LVUtPnwgICB8LUgtPnwgICB8LS0tPgorLS0tPnwgICB8PC0tLXwgICB8PC0tLXwgICB8PC0tLXwgICB8PC0tLQorICAgICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rCisKK0J1dCBpdCB3aWxsIG5vdCByZXNldCB0aGUgdXBkYXRlIGJhY2sgdG8gbm9ybWFsLiBPbmx5IHRoZSB3cml0ZXIKK3RoYXQgY29udmVydGVkIGEgcG9pbnRlciBmcm9tIEhFQUQgdG8gVVBEQVRFIHdpbGwgY29udmVydCBpdCBiYWNrCit0byBOT1JNQUwuCisKKyAgICAgICAgICAgICAgICAgICAgdGFpbCBwYWdlCisgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKzwtLS18ICAgfC0tLT58ICAgfC1VLT58ICAgfC1ILT58ICAgfC0tLT4KKy0tLT58ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS0KKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworCitBZnRlciB0aGUgbmVzdGVkIHdyaXRlciBmaW5pc2hlcywgdGhlIG91dGVybW9zdCB3cml0ZXIgd2lsbCBjb252ZXJ0Cit0aGUgVVBEQVRFIHBvaW50ZXIgdG8gTk9STUFMLgorCisKKyAgICAgICAgICAgICAgICAgICAgdGFpbCBwYWdlCisgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKzwtLS18ICAgfC0tLT58ICAgfC0tLT58ICAgfC1ILT58ICAgfC0tLT4KKy0tLT58ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS0KKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworCisKK0l0IGNhbiBiZSBldmVuIG1vcmUgY29tcGxleCBpZiBzZXZlcmFsIG5lc3RlZCB3cml0ZXMgY2FtZSBpbiBhbmQgbW92ZWQKK3RoZSB0YWlsIHBhZ2UgYWhlYWQgc2V2ZXJhbCBwYWdlczoKKworCisoZmlyc3Qgd3JpdGVyKQorCisgICAgICAgICAgICB0YWlsIHBhZ2UKKyAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgIHYKKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworPC0tLXwgICB8LS0tPnwgICB8LUgtPnwgICB8LS0tPnwgICB8LS0tPgorLS0tPnwgICB8PC0tLXwgICB8PC0tLXwgICB8PC0tLXwgICB8PC0tLQorICAgICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rCisKK1RoZSB3cml0ZSBjb252ZXJ0cyB0aGUgaGVhZCBwYWdlIHBvaW50ZXIgdG8gVVBEQVRFLgorCisgICAgICAgICAgICB0YWlsIHBhZ2UKKyAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgIHYKKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworPC0tLXwgICB8LS0tPnwgICB8LVUtPnwgICB8LS0tPnwgICB8LS0tPgorLS0tPnwgICB8PC0tLXwgICB8PC0tLXwgICB8PC0tLXwgICB8PC0tLQorICAgICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rCisKK05leHQgd3JpdGVyIGNvbWVzIGluLCBhbmQgc2VlcyB0aGUgdXBkYXRlIGFuZCBzZXRzIHVwIHRoZSBuZXcKK2hlYWQgcGFnZS4KKworKHNlY29uZCB3cml0ZXIpCisKKyAgICAgICAgICAgdGFpbCBwYWdlCisgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICB2CisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKzwtLS18ICAgfC0tLT58ICAgfC1VLT58ICAgfC1ILT58ICAgfC0tLT4KKy0tLT58ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS0KKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworCitUaGUgbmVzdGVkIHdyaXRlciBtb3ZlcyB0aGUgdGFpbCBwYWdlIGZvcndhcmQuIEJ1dCBkb2VzIG5vdCBzZXQgdGhlIG9sZAordXBkYXRlIHBhZ2UgdG8gTk9STUFMIGJlY2F1c2UgaXQgaXMgbm90IHRoZSBvdXRlcm1vc3Qgd3JpdGVyLgorCisgICAgICAgICAgICAgICAgICAgIHRhaWwgcGFnZQorICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgdgorICAgICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rCis8LS0tfCAgIHwtLS0+fCAgIHwtVS0+fCAgIHwtSC0+fCAgIHwtLS0+CistLS0+fCAgIHw8LS0tfCAgIHw8LS0tfCAgIHw8LS0tfCAgIHw8LS0tCisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKworQW5vdGhlciB3cml0ZXIgcHJlZW1wdHMgYW5kIHNlZXMgdGhlIHBhZ2UgYWZ0ZXIgdGhlIHRhaWwgcGFnZSBpcyBhIGhlYWQgcGFnZS4KK0l0IGNoYW5nZXMgaXQgZnJvbSBIRUFEIHRvIFVQREFURS4KKworKHRoaXJkIHdyaXRlcikKKworICAgICAgICAgICAgICAgICAgICB0YWlsIHBhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworPC0tLXwgICB8LS0tPnwgICB8LVUtPnwgICB8LVUtPnwgICB8LS0tPgorLS0tPnwgICB8PC0tLXwgICB8PC0tLXwgICB8PC0tLXwgICB8PC0tLQorICAgICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rCisKK1RoZSB3cml0ZXIgd2lsbCBtb3ZlIHRoZSBoZWFkIHBhZ2UgZm9yd2FyZDoKKworCisodGhpcmQgd3JpdGVyKQorCisgICAgICAgICAgICAgICAgICAgIHRhaWwgcGFnZQorICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgdgorICAgICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rCis8LS0tfCAgIHwtLS0+fCAgIHwtVS0+fCAgIHwtVS0+fCAgIHwtSC0+CistLS0+fCAgIHw8LS0tfCAgIHw8LS0tfCAgIHw8LS0tfCAgIHw8LS0tCisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKworQnV0IG5vdyB0aGF0IHRoZSB0aGlyZCB3cml0ZXIgZGlkIGNoYW5nZSB0aGUgSEVBRCBmbGFnIHRvIFVQREFURSBpdAord2lsbCBjb252ZXJ0IGl0IHRvIG5vcm1hbDoKKworCisodGhpcmQgd3JpdGVyKQorCisgICAgICAgICAgICAgICAgICAgIHRhaWwgcGFnZQorICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgdgorICAgICstLS0rICAgICstLS0rICAgICstLS0rICAgICstLS0rCis8LS0tfCAgIHwtLS0+fCAgIHwtVS0+fCAgIHwtLS0+fCAgIHwtSC0+CistLS0+fCAgIHw8LS0tfCAgIHw8LS0tfCAgIHw8LS0tfCAgIHw8LS0tCisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKworCitUaGVuIGl0IHdpbGwgbW92ZSB0aGUgdGFpbCBwYWdlLCBhbmQgcmV0dXJuIGJhY2sgdG8gdGhlIHNlY29uZCB3cml0ZXIuCisKKworKHNlY29uZCB3cml0ZXIpCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFpbCBwYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKzwtLS18ICAgfC0tLT58ICAgfC1VLT58ICAgfC0tLT58ICAgfC1ILT4KKy0tLT58ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS0KKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworCisKK1RoZSBzZWNvbmQgd3JpdGVyIHdpbGwgZmFpbCB0byBtb3ZlIHRoZSB0YWlsIHBhZ2UgYmVjYXVzZSBpdCB3YXMgYWxyZWFkeQorbW92ZWQsIHNvIGl0IHdpbGwgdHJ5IGFnYWluIGFuZCBhZGQgaXRzIGRhdGEgdG8gdGhlIG5ldyB0YWlsIHBhZ2UuCitJdCB3aWxsIHJldHVybiB0byB0aGUgZmlyc3Qgd3JpdGVyLgorCisKKyhmaXJzdCB3cml0ZXIpCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFpbCBwYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKzwtLS18ICAgfC0tLT58ICAgfC1VLT58ICAgfC0tLT58ICAgfC1ILT4KKy0tLT58ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS0KKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworCitUaGUgZmlyc3Qgd3JpdGVyIGNhbm5vdCBrbm93IGF0b21pY2FsbHkgaWYgdGhlIHRhaWwgcGFnZSBtb3ZlZAord2hpbGUgaXQgdXBkYXRlcyB0aGUgSEVBRCBwYWdlLiBJdCB3aWxsIHRoZW4gdXBkYXRlIHRoZSBoZWFkIHBhZ2UgdG8KK3doYXQgaXQgdGhpbmtzIGlzIHRoZSBuZXcgaGVhZCBwYWdlLgorCisKKyhmaXJzdCB3cml0ZXIpCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFpbCBwYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKzwtLS18ICAgfC0tLT58ICAgfC1VLT58ICAgfC1ILT58ICAgfC1ILT4KKy0tLT58ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS0KKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworCitTaW5jZSB0aGUgY21weGNoZyByZXR1cm5zIHRoZSBvbGQgdmFsdWUgb2YgdGhlIHBvaW50ZXIgdGhlIGZpcnN0IHdyaXRlcgord2lsbCBzZWUgaXQgc3VjY2VlZGVkIGluIHVwZGF0aW5nIHRoZSBwb2ludGVyIGZyb20gTk9STUFMIHRvIEhFQUQuCitCdXQgYXMgd2UgY2FuIHNlZSwgdGhpcyBpcyBub3QgZ29vZCBlbm91Z2guIEl0IG11c3QgYWxzbyBjaGVjayB0byBzZWUKK2lmIHRoZSB0YWlsIHBhZ2UgaXMgZWl0aGVyIHdoZXJlIGl0IHVzZSB0byBiZSBvciBvbiB0aGUgbmV4dCBwYWdlOgorCisKKyhmaXJzdCB3cml0ZXIpCisKKyAgICAgICAgICAgICAgIEEgICAgICAgIEIgICAgdGFpbCBwYWdlCisgICAgICAgICAgICAgICB8ICAgICAgICB8ICAgICAgICB8CisgICAgICAgICAgICAgICB2ICAgICAgICB2ICAgICAgICB2CisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKzwtLS18ICAgfC0tLT58ICAgfC1VLT58ICAgfC1ILT58ICAgfC1ILT4KKy0tLT58ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS0KKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworCitJZiB0YWlsIHBhZ2UgIT0gQSBhbmQgdGFpbCBwYWdlICE9IEIsIHRoZW4gaXQgbXVzdCByZXNldCB0aGUgcG9pbnRlcgorYmFjayB0byBOT1JNQUwuIFRoZSBmYWN0IHRoYXQgaXQgb25seSBuZWVkcyB0byB3b3JyeSBhYm91dCBuZXN0ZWQKK3dyaXRlcnMgbWVhbnMgdGhhdCBpdCBvbmx5IG5lZWRzIHRvIGNoZWNrIHRoaXMgYWZ0ZXIgc2V0dGluZyB0aGUgSEVBRCBwYWdlLgorCisKKyhmaXJzdCB3cml0ZXIpCisKKyAgICAgICAgICAgICAgIEEgICAgICAgIEIgICAgdGFpbCBwYWdlCisgICAgICAgICAgICAgICB8ICAgICAgICB8ICAgICAgICB8CisgICAgICAgICAgICAgICB2ICAgICAgICB2ICAgICAgICB2CisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKzwtLS18ICAgfC0tLT58ICAgfC1VLT58ICAgfC0tLT58ICAgfC1ILT4KKy0tLT58ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS0KKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworCitOb3cgdGhlIHdyaXRlciBjYW4gdXBkYXRlIHRoZSBoZWFkIHBhZ2UuIFRoaXMgaXMgYWxzbyB3aHkgdGhlIGhlYWQgcGFnZSBtdXN0CityZW1haW4gaW4gVVBEQVRFIGFuZCBvbmx5IHJlc2V0IGJ5IHRoZSBvdXRlcm1vc3Qgd3JpdGVyLiBUaGlzIHByZXZlbnRzCit0aGUgcmVhZGVyIGZyb20gc2VlaW5nIHRoZSBpbmNvcnJlY3QgaGVhZCBwYWdlLgorCisKKyhmaXJzdCB3cml0ZXIpCisKKyAgICAgICAgICAgICAgIEEgICAgICAgIEIgICAgdGFpbCBwYWdlCisgICAgICAgICAgICAgICB8ICAgICAgICB8ICAgICAgICB8CisgICAgICAgICAgICAgICB2ICAgICAgICB2ICAgICAgICB2CisgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsgICAgKy0tLSsKKzwtLS18ICAgfC0tLT58ICAgfC0tLT58ICAgfC0tLT58ICAgfC1ILT4KKy0tLT58ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS18ICAgfDwtLS0KKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKyAgICArLS0tKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RyYWNlL3N0bS50eHQgYi9Eb2N1bWVudGF0aW9uL3RyYWNlL3N0bS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWEwMzVmOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdHJhY2Uvc3RtLnR4dApAQCAtMCwwICsxLDgwIEBACitTeXN0ZW0gVHJhY2UgTW9kdWxlCis9PT09PT09PT09PT09PT09PT09CisKK1N5c3RlbSBUcmFjZSBNb2R1bGUgKFNUTSkgaXMgYSBkZXZpY2UgZGVzY3JpYmVkIGluIE1JUEkgU1RQIHNwZWNzIGFzCitTVFAgdHJhY2Ugc3RyZWFtIGdlbmVyYXRvci4gU1RQIChTeXN0ZW0gVHJhY2UgUHJvdG9jb2wpIGlzIGEgdHJhY2UKK3Byb3RvY29sIG11bHRpcGxleGluZyBkYXRhIGZyb20gbXVsdGlwbGUgdHJhY2Ugc291cmNlcywgZWFjaCBvbmUgb2YKK3doaWNoIGlzIGFzc2lnbmVkIGEgdW5pcXVlIHBhaXIgb2YgbWFzdGVyIGFuZCBjaGFubmVsLiBXaGlsZSBzb21lIG9mCit0aGVzZSBtYXN0ZXJzIGFuZCBjaGFubmVscyBhcmUgc3RhdGljYWxseSBhbGxvY2F0ZWQgdG8gY2VydGFpbgoraGFyZHdhcmUgdHJhY2Ugc291cmNlcywgb3RoZXJzIGFyZSBhdmFpbGFibGUgdG8gc29mdHdhcmUuIFNvZnR3YXJlCit0cmFjZSBzb3VyY2VzIGFyZSB1c3VhbGx5IGZyZWUgdG8gcGljayBmb3IgdGhlbXNlbHZlcyBhbnkKK21hc3Rlci9jaGFubmVsIGNvbWJpbmF0aW9uIGZyb20gdGhpcyBwb29sLgorCitPbiB0aGUgcmVjZWl2aW5nIGVuZCBvZiB0aGlzIFNUUCBzdHJlYW0gKHRoZSBkZWNvZGVyIHNpZGUpLCB0cmFjZQorc291cmNlcyBjYW4gb25seSBiZSBpZGVudGlmaWVkIGJ5IG1hc3Rlci9jaGFubmVsIGNvbWJpbmF0aW9uLCBzbyBpbgorb3JkZXIgZm9yIHRoZSBkZWNvZGVyIHRvIGJlIGFibGUgdG8gbWFrZSBzZW5zZSBvZiB0aGUgdHJhY2UgdGhhdAoraW52b2x2ZXMgbXVsdGlwbGUgdHJhY2Ugc291cmNlcywgaXQgbmVlZHMgdG8gYmUgYWJsZSB0byBtYXAgdGhvc2UKK21hc3Rlci9jaGFubmVsIHBhaXJzIHRvIHRoZSB0cmFjZSBzb3VyY2VzIHRoYXQgaXQgdW5kZXJzdGFuZHMuCisKK0ZvciBpbnN0YW5jZSwgaXQgaXMgaGVscGZ1bCB0byBrbm93IHRoYXQgc3lzbG9nIG1lc3NhZ2VzIGNvbWUgb24KK21hc3RlciA3IGNoYW5uZWwgMTUsIHdoaWxlIGFyYml0cmFyeSB1c2VyIGFwcGxpY2F0aW9ucyBjYW4gdXNlIG1hc3RlcnMKKzQ4IHRvIDYzIGFuZCBjaGFubmVscyAwIHRvIDEyNy4KKworVG8gc29sdmUgdGhpcyBtYXBwaW5nIHByb2JsZW0sIHN0bSBjbGFzcyBwcm92aWRlcyBhIHBvbGljeSBtYW5hZ2VtZW50CittZWNoYW5pc20gdmlhIGNvbmZpZ2ZzLCB0aGF0IGFsbG93cyBkZWZpbmluZyBydWxlcyB0aGF0IG1hcCBzdHJpbmcKK2lkZW50aWZpZXJzIHRvIHJhbmdlcyBvZiBtYXN0ZXJzIGFuZCBjaGFubmVscy4gSWYgdGhlc2UgcnVsZXMgKHBvbGljeSkKK2FyZSBjb25zaXN0ZW50IHdpdGggd2hhdCBkZWNvZGVyIGV4cGVjdHMsIGl0IHdpbGwgYmUgYWJsZSB0byBwcm9wZXJseQorcHJvY2VzcyB0aGUgdHJhY2UgZGF0YS4KKworVGhpcyBwb2xpY3kgaXMgYSB0cmVlIHN0cnVjdHVyZSBjb250YWluaW5nIHJ1bGVzIChwb2xpY3lfbm9kZSkgdGhhdAoraGF2ZSBhIG5hbWUgKHN0cmluZyBpZGVudGlmaWVyKSBhbmQgYSByYW5nZSBvZiBtYXN0ZXJzIGFuZCBjaGFubmVscworYXNzb2NpYXRlZCB3aXRoIGl0LCBsb2NhdGVkIGluICJzdHAtcG9saWN5IiBzdWJzeXN0ZW0gZGlyZWN0b3J5IGluCitjb25maWdmcy4gVGhlIHRvcG1vc3QgZGlyZWN0b3J5J3MgbmFtZSAodGhlIHBvbGljeSkgaXMgZm9ybWF0dGVkIGFzCit0aGUgU1RNIGRldmljZSBuYW1lIHRvIHdoaWNoIHRoaXMgcG9saWN5IGFwcGxpZXMgYW5kIGFuZCBhcmJpdHJhcnkKK3N0cmluZyBpZGVudGlmaWVyIHNlcGFyYXRlZCBieSBhIHN0b3AuIEZyb20gdGhlIGV4YW1sZSBhYm92ZSwgYSBydWxlCittYXkgbG9vayBsaWtlIHRoaXM6CisKKyQgbHMgL2NvbmZpZy9zdHAtcG9saWN5L2R1bW15X3N0bS5teS1wb2xpY3kvdXNlcgorY2hhbm5lbHMgbWFzdGVycworJCBjYXQgL2NvbmZpZy9zdHAtcG9saWN5L2R1bW15X3N0bS5teS1wb2xpY3kvdXNlci9tYXN0ZXJzCis0OCA2MworJCBjYXQgL2NvbmZpZy9zdHAtcG9saWN5L2R1bW15X3N0bS5teS1wb2xpY3kvdXNlci9jaGFubmVscworMCAxMjcKKword2hpY2ggbWVhbnMgdGhhdCB0aGUgbWFzdGVyIGFsbG9jYXRpb24gcG9vbCBmb3IgdGhpcyBydWxlIGNvbnNpc3RzIG9mCittYXN0ZXJzIDQ4IHRocm91Z2ggNjMgYW5kIGNoYW5uZWwgYWxsb2NhdGlvbiBwb29sIGhhcyBjaGFubmVscyAwCit0aHJvdWdoIDEyNyBpbiBpdC4gTm93LCBhbnkgcHJvZHVjZXIgKHRyYWNlIHNvdXJjZSkgaWRlbnRpZnlpbmcgaXRzZWxmCit3aXRoICJ1c2VyIiBpZGVudGlmaWNhdGlvbiBzdHJpbmcgd2lsbCBiZSBhbGxvY2F0ZWQgYSBtYXN0ZXIgYW5kCitjaGFubmVsIGZyb20gd2l0aGluIHRoZXNlIHJhbmdlcy4KKworVGhlc2UgcnVsZXMgY2FuIGJlIG5lc3RlZCwgZm9yIGV4YW1wbGUsIG9uZSBjYW4gZGVmaW5lIGEgcnVsZSAiZHVtbXkiCit1bmRlciAidXNlciIgZGlyZWN0b3J5IGZyb20gdGhlIGV4YW1wbGUgYWJvdmUgYW5kIHRoaXMgbmV3IHJ1bGUgd2lsbAorYmUgdXNlZCBmb3IgdHJhY2Ugc291cmNlcyB3aXRoIHRoZSBpZCBzdHJpbmcgb2YgInVzZXIvZHVtbXkiLgorCitUcmFjZSBzb3VyY2VzIGhhdmUgdG8gb3BlbiB0aGUgc3RtIGNsYXNzIGRldmljZSdzIG5vZGUgYW5kIHdyaXRlIHRoZWlyCit0cmFjZSBkYXRhIGludG8gaXRzIGZpbGUgZGVzY3JpcHRvci4gSW4gb3JkZXIgdG8gaWRlbnRpZnkgdGhlbXNlbHZlcwordG8gdGhlIHBvbGljeSwgdGhleSBuZWVkIHRvIGRvIGEgU1RQX1BPTElDWV9JRF9TRVQgaW9jdGwgb24gdGhpcyBmaWxlCitkZXNjcmlwdG9yIHByb3ZpZGluZyB0aGVpciBpZCBzdHJpbmcuIE90aGVyd2lzZSwgdGhleSB3aWxsIGJlCithdXRvbWF0aWNhbGx5IGFsbG9jYXRlZCBhIG1hc3Rlci9jaGFubmVsIHBhaXIgdXBvbiBmaXJzdCB3cml0ZSB0byB0aGlzCitmaWxlIGRlc2NyaXB0b3IgYWNjb3JkaW5nIHRvIHRoZSAiZGVmYXVsdCIgcnVsZSBvZiB0aGUgcG9saWN5LCBpZiBzdWNoCitleGlzdHMuCisKK1NvbWUgU1RNIGRldmljZXMgbWF5IGFsbG93IGRpcmVjdCBtYXBwaW5nIG9mIHRoZSBjaGFubmVsIG1taW8gcmVnaW9ucwordG8gdXNlcnNwYWNlIGZvciB6ZXJvLWNvcHkgd3JpdGluZy4gT25lIG1hcHBhYmxlIHBhZ2UgKGluIHRlcm1zIG9mCittbXUpIHdpbGwgdXN1YWxseSBjb250YWluIG11bHRpcGxlIGNoYW5uZWxzJyBtbWlvcywgc28gdGhlIHVzZXIgd2lsbAorbmVlZCB0byBhbGxvY2F0ZSB0aGF0IG1hbnkgY2hhbm5lbHMgdG8gdGhlbXNlbHZlcyAodmlhIHRoZQorYWZvcmVtZW50aW9uZWQgaW9jdGwoKSBjYWxsKSB0byBiZSBhYmxlIHRvIGRvIHRoaXMuIFRoYXQgaXMsIGlmIHlvdXIKK3N0bSBkZXZpY2UncyBjaGFubmVsIG1taW8gcmVnaW9uIGlzIDY0IGJ5dGVzIGFuZCBoYXJkd2FyZSBwYWdlIHNpemUgaXMKKzQwOTYgYnl0ZXMsIGFmdGVyIGEgc3VjY2Vzc2Z1bCBTVFBfUE9MSUNZX0lEX1NFVCBpb2N0bCgpIGNhbGwgd2l0aAord2lkdGg9PTY0LCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gbW1hcCgpIG9uZSBwYWdlIG9uIHRoaXMgZmlsZQorZGVzY3JpcHRvciBhbmQgb2J0YWluIGRpcmVjdCBhY2Nlc3MgdG8gYW4gbW1pbyByZWdpb24gZm9yIDY0IGNoYW5uZWxzLgorCitGb3Iga2VybmVsLWJhc2VkIHRyYWNlIHNvdXJjZXMsIHRoZXJlIGlzICJzdG1fc291cmNlIiBkZXZpY2UKK2NsYXNzLiBEZXZpY2VzIG9mIHRoaXMgY2xhc3MgY2FuIGJlIGNvbm5lY3RlZCBhbmQgZGlzY29ubmVjdGVkIHRvL2Zyb20KK3N0bSBkZXZpY2VzIGF0IHJ1bnRpbWUgdmlhIGEgc3lzZnMgYXR0cmlidXRlLgorCitFeGFtcGxlcyBvZiBTVE0gZGV2aWNlcyBhcmUgSW50ZWwoUikgVHJhY2UgSHViIFsxXSBhbmQgQ29yZXNpZ2h0IFNUTQorWzJdLgorCitbMV0gaHR0cHM6Ly9zb2Z0d2FyZS5pbnRlbC5jb20vc2l0ZXMvZGVmYXVsdC9maWxlcy9tYW5hZ2VkL2QzLzNjL2ludGVsLXRoLWRldmVsb3Blci1tYW51YWwucGRmCitbMl0gaHR0cDovL2luZm9jZW50ZXIuYXJtLmNvbS9oZWxwL2luZGV4LmpzcD90b3BpYz0vY29tLmFybS5kb2MuZGRpMDQ0NGIvaW5kZXguaHRtbApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90cmFjZS90cmFjZXBvaW50LWFuYWx5c2lzLnR4dCBiL0RvY3VtZW50YXRpb24vdHJhY2UvdHJhY2Vwb2ludC1hbmFseXNpcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU4Y2M2YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdHJhY2UvdHJhY2Vwb2ludC1hbmFseXNpcy50eHQKQEAgLTAsMCArMSwzMjcgQEAKKwkJTm90ZXMgb24gQW5hbHlzaW5nIEJlaGF2aW91ciBVc2luZyBFdmVudHMgYW5kIFRyYWNlcG9pbnRzCisKKwkJCURvY3VtZW50YXRpb24gd3JpdHRlbiBieSBNZWwgR29ybWFuCisJCVBDTCBpbmZvcm1hdGlvbiBoZWF2aWx5IGJhc2VkIG9uIGVtYWlsIGZyb20gSW5nbyBNb2xuYXIKKworMS4gSW50cm9kdWN0aW9uCis9PT09PT09PT09PT09PT0KKworVHJhY2Vwb2ludHMgKHNlZSBEb2N1bWVudGF0aW9uL3RyYWNlL3RyYWNlcG9pbnRzLnR4dCkgY2FuIGJlIHVzZWQgd2l0aG91dAorY3JlYXRpbmcgY3VzdG9tIGtlcm5lbCBtb2R1bGVzIHRvIHJlZ2lzdGVyIHByb2JlIGZ1bmN0aW9ucyB1c2luZyB0aGUgZXZlbnQKK3RyYWNpbmcgaW5mcmFzdHJ1Y3R1cmUuCisKK1NpbXBsaXN0aWNhbGx5LCB0cmFjZXBvaW50cyByZXByZXNlbnQgaW1wb3J0YW50IGV2ZW50cyB0aGF0IGNhbiBiZQordGFrZW4gaW4gY29uanVuY3Rpb24gd2l0aCBvdGhlciB0cmFjZXBvaW50cyB0byBidWlsZCBhICJCaWcgUGljdHVyZSIgb2YKK3doYXQgaXMgZ29pbmcgb24gd2l0aGluIHRoZSBzeXN0ZW0uIFRoZXJlIGFyZSBhIGxhcmdlIG51bWJlciBvZiBtZXRob2RzIGZvcgorZ2F0aGVyaW5nIGFuZCBpbnRlcnByZXRpbmcgdGhlc2UgZXZlbnRzLiBMYWNraW5nIGFueSBjdXJyZW50IEJlc3QgUHJhY3Rpc2VzLAordGhpcyBkb2N1bWVudCBkZXNjcmliZXMgc29tZSBvZiB0aGUgbWV0aG9kcyB0aGF0IGNhbiBiZSB1c2VkLgorCitUaGlzIGRvY3VtZW50IGFzc3VtZXMgdGhhdCBkZWJ1Z2ZzIGlzIG1vdW50ZWQgb24gL3N5cy9rZXJuZWwvZGVidWcgYW5kIHRoYXQKK3RoZSBhcHByb3ByaWF0ZSB0cmFjaW5nIG9wdGlvbnMgaGF2ZSBiZWVuIGNvbmZpZ3VyZWQgaW50byB0aGUga2VybmVsLiBJdCBpcworYXNzdW1lZCB0aGF0IHRoZSBQQ0wgdG9vbCB0b29scy9wZXJmIGhhcyBiZWVuIGluc3RhbGxlZCBhbmQgaXMgaW4geW91ciBwYXRoLgorCisyLiBMaXN0aW5nIEF2YWlsYWJsZSBFdmVudHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisyLjEgU3RhbmRhcmQgVXRpbGl0aWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FsbCBwb3NzaWJsZSBldmVudHMgYXJlIHZpc2libGUgZnJvbSAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2V2ZW50cy4gU2ltcGx5CitjYWxsaW5nCisKKyAgJCBmaW5kIC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvZXZlbnRzIC10eXBlIGQKKword2lsbCBnaXZlIGEgZmFpciBpbmRpY2F0aW9uIG9mIHRoZSBudW1iZXIgb2YgZXZlbnRzIGF2YWlsYWJsZS4KKworMi4yIFBDTCAoUGVyZm9ybWFuY2UgQ291bnRlcnMgZm9yIExpbnV4KQorLS0tLS0tLQorCitEaXNjb3ZlcnkgYW5kIGVudW1lcmF0aW9uIG9mIGFsbCBjb3VudGVycyBhbmQgZXZlbnRzLCBpbmNsdWRpbmcgdHJhY2Vwb2ludHMsCithcmUgYXZhaWxhYmxlIHdpdGggdGhlIHBlcmYgdG9vbC4gR2V0dGluZyBhIGxpc3Qgb2YgYXZhaWxhYmxlIGV2ZW50cyBpcyBhCitzaW1wbGUgY2FzZSBvZjoKKworICAkIHBlcmYgbGlzdCAyPiYxIHwgZ3JlcCBUcmFjZXBvaW50CisgIGV4dDQ6ZXh0NF9mcmVlX2lub2RlICAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgIGV4dDQ6ZXh0NF9yZXF1ZXN0X2lub2RlICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgIGV4dDQ6ZXh0NF9hbGxvY2F0ZV9pbm9kZSAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgIGV4dDQ6ZXh0NF93cml0ZV9iZWdpbiAgICAgICAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgIGV4dDQ6ZXh0NF9vcmRlcmVkX3dyaXRlX2VuZCAgICAgICAgICAgICAgW1RyYWNlcG9pbnQgZXZlbnRdCisgIFsgLi4uLiByZW1haW5pbmcgb3V0cHV0IHNuaXBwZWQgLi4uLiBdCisKKworMy4gRW5hYmxpbmcgRXZlbnRzCis9PT09PT09PT09PT09PT09PT0KKworMy4xIFN5c3RlbS1XaWRlIEV2ZW50IEVuYWJsaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU2VlIERvY3VtZW50YXRpb24vdHJhY2UvZXZlbnRzLnR4dCBmb3IgYSBwcm9wZXIgZGVzY3JpcHRpb24gb24gaG93IGV2ZW50cworY2FuIGJlIGVuYWJsZWQgc3lzdGVtLXdpZGUuIEEgc2hvcnQgZXhhbXBsZSBvZiBlbmFibGluZyBhbGwgZXZlbnRzIHJlbGF0ZWQKK3RvIHBhZ2UgYWxsb2NhdGlvbiB3b3VsZCBsb29rIHNvbWV0aGluZyBsaWtlOgorCisgICQgZm9yIGkgaW4gYGZpbmQgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMgLW5hbWUgImVuYWJsZSIgfCBncmVwIG1tX2A7IGRvIGVjaG8gMSA+ICRpOyBkb25lCisKKzMuMiBTeXN0ZW0tV2lkZSBFdmVudCBFbmFibGluZyB3aXRoIFN5c3RlbVRhcAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0luIFN5c3RlbVRhcCwgdHJhY2Vwb2ludHMgYXJlIGFjY2Vzc2libGUgdXNpbmcgdGhlIGtlcm5lbC50cmFjZSgpIGZ1bmN0aW9uCitjYWxsLiBUaGUgZm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgdGhhdCByZXBvcnRzIGV2ZXJ5IDUgc2Vjb25kcyB3aGF0IHByb2Nlc3Nlcword2VyZSBhbGxvY2F0aW5nIHRoZSBwYWdlcy4KKworICBnbG9iYWwgcGFnZV9hbGxvY3MKKworICBwcm9iZSBrZXJuZWwudHJhY2UoIm1tX3BhZ2VfYWxsb2MiKSB7CisgIAlwYWdlX2FsbG9jc1tleGVjbmFtZSgpXSsrCisgIH0KKworICBmdW5jdGlvbiBwcmludF9jb3VudCgpIHsKKyAgCXByaW50ZiAoIiUtMjVzICUtc1xuIiwgIiNQYWdlcyBBbGxvY2F0ZWQiLCAiUHJvY2VzcyBOYW1lIikKKyAgCWZvcmVhY2ggKHByb2MgaW4gcGFnZV9hbGxvY3MtKQorICAJCXByaW50ZigiJS0yNWQgJXNcbiIsIHBhZ2VfYWxsb2NzW3Byb2NdLCBwcm9jKQorICAJcHJpbnRmICgiXG4iKQorICAJZGVsZXRlIHBhZ2VfYWxsb2NzCisgIH0KKworICBwcm9iZSB0aW1lci5zKDUpIHsKKyAgICAgICAgICBwcmludF9jb3VudCgpCisgIH0KKworMy4zIFN5c3RlbS1XaWRlIEV2ZW50IEVuYWJsaW5nIHdpdGggUENMCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQnkgc3BlY2lmeWluZyB0aGUgLWEgc3dpdGNoIGFuZCBhbmFseXNpbmcgc2xlZXAsIHRoZSBzeXN0ZW0td2lkZSBldmVudHMKK2ZvciBhIGR1cmF0aW9uIG9mIHRpbWUgY2FuIGJlIGV4YW1pbmVkLgorCisgJCBwZXJmIHN0YXQgLWEgXAorCS1lIGttZW06bW1fcGFnZV9hbGxvYyAtZSBrbWVtOm1tX3BhZ2VfZnJlZSBcCisJLWUga21lbTptbV9wYWdlX2ZyZWVfYmF0Y2hlZCBcCisJc2xlZXAgMTAKKyBQZXJmb3JtYW5jZSBjb3VudGVyIHN0YXRzIGZvciAnc2xlZXAgMTAnOgorCisgICAgICAgICAgIDk2MzAgIGttZW06bW1fcGFnZV9hbGxvYworICAgICAgICAgICAyMTQzICBrbWVtOm1tX3BhZ2VfZnJlZQorICAgICAgICAgICA3NDI0ICBrbWVtOm1tX3BhZ2VfZnJlZV9iYXRjaGVkCisKKyAgIDEwLjAwMjU3Nzc2NCAgc2Vjb25kcyB0aW1lIGVsYXBzZWQKKworU2ltaWxhcmx5LCBvbmUgY291bGQgZXhlY3V0ZSBhIHNoZWxsIGFuZCBleGl0IGl0IGFzIGRlc2lyZWQgdG8gZ2V0IGEgcmVwb3J0CithdCB0aGF0IHBvaW50LgorCiszLjQgTG9jYWwgRXZlbnQgRW5hYmxpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZS50eHQgZGVzY3JpYmVzIGhvdyB0byBlbmFibGUgZXZlbnRzIG9uIGEgcGVyLXRocmVhZAorYmFzaXMgdXNpbmcgc2V0X2Z0cmFjZV9waWQuCisKKzMuNSBMb2NhbCBFdmVudCBFbmFibGVtZW50IHdpdGggUENMCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFdmVudHMgY2FuIGJlIGFjdGl2YXRlZCBhbmQgdHJhY2tlZCBmb3IgdGhlIGR1cmF0aW9uIG9mIGEgcHJvY2VzcyBvbiBhIGxvY2FsCitiYXNpcyB1c2luZyBQQ0wgc3VjaCBhcyBmb2xsb3dzLgorCisgICQgcGVyZiBzdGF0IC1lIGttZW06bW1fcGFnZV9hbGxvYyAtZSBrbWVtOm1tX3BhZ2VfZnJlZSBcCisJCSAtZSBrbWVtOm1tX3BhZ2VfZnJlZV9iYXRjaGVkIC4vaGFja2JlbmNoIDEwCisgIFRpbWU6IDAuOTA5CisKKyAgICBQZXJmb3JtYW5jZSBjb3VudGVyIHN0YXRzIGZvciAnLi9oYWNrYmVuY2ggMTAnOgorCisgICAgICAgICAgMTc4MDMgIGttZW06bW1fcGFnZV9hbGxvYworICAgICAgICAgIDEyMzk4ICBrbWVtOm1tX3BhZ2VfZnJlZQorICAgICAgICAgICA0ODI3ICBrbWVtOm1tX3BhZ2VfZnJlZV9iYXRjaGVkCisKKyAgICAwLjk3MzkxMzM4NyAgc2Vjb25kcyB0aW1lIGVsYXBzZWQKKworNC4gRXZlbnQgRmlsdGVyaW5nCis9PT09PT09PT09PT09PT09PT0KKworRG9jdW1lbnRhdGlvbi90cmFjZS9mdHJhY2UudHh0IGNvdmVycyBpbi1kZXB0aCBob3cgdG8gZmlsdGVyIGV2ZW50cyBpbgorZnRyYWNlLiAgT2J2aW91c2x5IHVzaW5nIGdyZXAgYW5kIGF3ayBvZiB0cmFjZV9waXBlIGlzIGFuIG9wdGlvbiBhcyB3ZWxsCithcyBhbnkgc2NyaXB0IHJlYWRpbmcgdHJhY2VfcGlwZS4KKworNS4gQW5hbHlzaW5nIEV2ZW50IFZhcmlhbmNlcyB3aXRoIFBDTAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBbnkgd29ya2xvYWQgY2FuIGV4aGliaXQgdmFyaWFuY2VzIGJldHdlZW4gcnVucyBhbmQgaXQgY2FuIGJlIGltcG9ydGFudAordG8ga25vdyB3aGF0IHRoZSBzdGFuZGFyZCBkZXZpYXRpb24gaXMuIEJ5IGFuZCBsYXJnZSwgdGhpcyBpcyBsZWZ0IHRvIHRoZQorcGVyZm9ybWFuY2UgYW5hbHlzdCB0byBkbyBpdCBieSBoYW5kLiBJbiB0aGUgZXZlbnQgdGhhdCB0aGUgZGlzY3JldGUgZXZlbnQKK29jY3VycmVuY2VzIGFyZSB1c2VmdWwgdG8gdGhlIHBlcmZvcm1hbmNlIGFuYWx5c3QsIHRoZW4gcGVyZiBjYW4gYmUgdXNlZC4KKworICAkIHBlcmYgc3RhdCAtLXJlcGVhdCA1IC1lIGttZW06bW1fcGFnZV9hbGxvYyAtZSBrbWVtOm1tX3BhZ2VfZnJlZQorCQkJLWUga21lbTptbV9wYWdlX2ZyZWVfYmF0Y2hlZCAuL2hhY2tiZW5jaCAxMAorICBUaW1lOiAwLjg5MAorICBUaW1lOiAwLjg5NQorICBUaW1lOiAwLjkxNQorICBUaW1lOiAxLjAwMQorICBUaW1lOiAwLjg5OQorCisgICBQZXJmb3JtYW5jZSBjb3VudGVyIHN0YXRzIGZvciAnLi9oYWNrYmVuY2ggMTAnICg1IHJ1bnMpOgorCisgICAgICAgICAgMTY2MzAgIGttZW06bW1fcGFnZV9hbGxvYyAgICAgICAgICggKy0gICAzLjU0MiUgKQorICAgICAgICAgIDExNDg2ICBrbWVtOm1tX3BhZ2VfZnJlZQkgICAgKCArLSAgIDQuNzcxJSApCisgICAgICAgICAgIDQ3MzAgIGttZW06bW1fcGFnZV9mcmVlX2JhdGNoZWQgICggKy0gICAyLjMyNSUgKQorCisgICAgMC45ODI2NTMwMDIgIHNlY29uZHMgdGltZSBlbGFwc2VkICAgKCArLSAgIDEuNDQ4JSApCisKK0luIHRoZSBldmVudCB0aGF0IHNvbWUgaGlnaGVyLWxldmVsIGV2ZW50IGlzIHJlcXVpcmVkIHRoYXQgZGVwZW5kcyBvbiBzb21lCithZ2dyZWdhdGlvbiBvZiBkaXNjcmV0ZSBldmVudHMsIHRoZW4gYSBzY3JpcHQgd291bGQgbmVlZCB0byBiZSBkZXZlbG9wZWQuCisKK1VzaW5nIC0tcmVwZWF0LCBpdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHZpZXcgaG93IGV2ZW50cyBhcmUgZmx1Y3R1YXRpbmcgb3ZlcgordGltZSBvbiBhIHN5c3RlbS13aWRlIGJhc2lzIHVzaW5nIC1hIGFuZCBzbGVlcC4KKworICAkIHBlcmYgc3RhdCAtZSBrbWVtOm1tX3BhZ2VfYWxsb2MgLWUga21lbTptbV9wYWdlX2ZyZWUgXAorCQktZSBrbWVtOm1tX3BhZ2VfZnJlZV9iYXRjaGVkIFwKKwkJLWEgLS1yZXBlYXQgMTAgXAorCQlzbGVlcCAxCisgIFBlcmZvcm1hbmNlIGNvdW50ZXIgc3RhdHMgZm9yICdzbGVlcCAxJyAoMTAgcnVucyk6CisKKyAgICAgICAgICAgMTA2NiAga21lbTptbV9wYWdlX2FsbG9jICAgICAgICAgKCArLSAgMjYuMTQ4JSApCisgICAgICAgICAgICAxODIgIGttZW06bW1fcGFnZV9mcmVlICAgICAgICAgICggKy0gICA1LjQ2NCUgKQorICAgICAgICAgICAgODkwICBrbWVtOm1tX3BhZ2VfZnJlZV9iYXRjaGVkICAoICstICAzMC4wNzklICkKKworICAgIDEuMDAyMjUxNzU3ICBzZWNvbmRzIHRpbWUgZWxhcHNlZCAgICggKy0gICAwLjAwNSUgKQorCis2LiBIaWdoZXItTGV2ZWwgQW5hbHlzaXMgd2l0aCBIZWxwZXIgU2NyaXB0cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworV2hlbiBldmVudHMgYXJlIGVuYWJsZWQgdGhlIGV2ZW50cyB0aGF0IGFyZSB0cmlnZ2VyaW5nIGNhbiBiZSByZWFkIGZyb20KKy9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvdHJhY2VfcGlwZSBpbiBodW1hbi1yZWFkYWJsZSBmb3JtYXQgYWx0aG91Z2ggYmluYXJ5CitvcHRpb25zIGV4aXN0IGFzIHdlbGwuIEJ5IHBvc3QtcHJvY2Vzc2luZyB0aGUgb3V0cHV0LCBmdXJ0aGVyIGluZm9ybWF0aW9uIGNhbgorYmUgZ2F0aGVyZWQgb24tbGluZSBhcyBhcHByb3ByaWF0ZS4gRXhhbXBsZXMgb2YgcG9zdC1wcm9jZXNzaW5nIG1pZ2h0IGluY2x1ZGUKKworICBvIFJlYWRpbmcgaW5mb3JtYXRpb24gZnJvbSAvcHJvYyBmb3IgdGhlIFBJRCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQKKyAgbyBEZXJpdmluZyBhIGhpZ2hlci1sZXZlbCBldmVudCBmcm9tIGEgc2VyaWVzIG9mIGxvd2VyLWxldmVsIGV2ZW50cy4KKyAgbyBDYWxjdWxhdGluZyBsYXRlbmNpZXMgYmV0d2VlbiB0d28gZXZlbnRzCisKK0RvY3VtZW50YXRpb24vdHJhY2UvcG9zdHByb2Nlc3MvdHJhY2UtcGFnZWFsbG9jLXBvc3Rwcm9jZXNzLnBsIGlzIGFuIGV4YW1wbGUKK3NjcmlwdCB0aGF0IGNhbiByZWFkIHRyYWNlX3BpcGUgZnJvbSBTVERJTiBvciBhIGNvcHkgb2YgYSB0cmFjZS4gV2hlbiB1c2VkCitvbi1saW5lLCBpdCBjYW4gYmUgaW50ZXJydXB0ZWQgb25jZSB0byBnZW5lcmF0ZSBhIHJlcG9ydCB3aXRob3V0IGV4aXRpbmcKK2FuZCB0d2ljZSB0byBleGl0LgorCitTaW1wbGlzdGljYWxseSwgdGhlIHNjcmlwdCBqdXN0IHJlYWRzIFNURElOIGFuZCBjb3VudHMgdXAgZXZlbnRzIGJ1dCBpdAorYWxzbyBjYW4gZG8gbW9yZSBzdWNoIGFzCisKKyAgbyBEZXJpdmUgaGlnaC1sZXZlbCBldmVudHMgZnJvbSBtYW55IGxvdy1sZXZlbCBldmVudHMuIElmIGEgbnVtYmVyIG9mIHBhZ2VzCisgICAgYXJlIGZyZWVkIHRvIHRoZSBtYWluIGFsbG9jYXRvciBmcm9tIHRoZSBwZXItQ1BVIGxpc3RzLCBpdCByZWNvZ25pc2VzCisgICAgdGhhdCBhcyBvbmUgcGVyLUNQVSBkcmFpbiBldmVuIHRob3VnaCB0aGVyZSBpcyBubyBzcGVjaWZpYyB0cmFjZXBvaW50CisgICAgZm9yIHRoYXQgZXZlbnQKKyAgbyBJdCBjYW4gYWdncmVnYXRlIGJhc2VkIG9uIFBJRCBvciBpbmRpdmlkdWFsIHByb2Nlc3MgbnVtYmVyCisgIG8gSW4gdGhlIGV2ZW50IG1lbW9yeSBpcyBnZXR0aW5nIGV4dGVybmFsbHkgZnJhZ21lbnRlZCwgaXQgcmVwb3J0cworICAgIG9uIHdoZXRoZXIgdGhlIGZyYWdtZW50YXRpb24gZXZlbnQgd2FzIHNldmVyZSBvciBtb2RlcmF0ZS4KKyAgbyBXaGVuIHJlY2VpdmluZyBhbiBldmVudCBhYm91dCBhIFBJRCwgaXQgY2FuIHJlY29yZCB3aG8gdGhlIHBhcmVudCB3YXMgc28KKyAgICB0aGF0IGlmIGxhcmdlIG51bWJlcnMgb2YgZXZlbnRzIGFyZSBjb21pbmcgZnJvbSB2ZXJ5IHNob3J0LWxpdmVkCisgICAgcHJvY2Vzc2VzLCB0aGUgcGFyZW50IHByb2Nlc3MgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIGFsbCB0aGUgaGVscGVycworICAgIGNhbiBiZSBpZGVudGlmaWVkCisKKzcuIExvd2VyLUxldmVsIEFuYWx5c2lzIHdpdGggUENMCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGVyZSBtYXkgYWxzbyBiZSBhIHJlcXVpcmVtZW50IHRvIGlkZW50aWZ5IHdoYXQgZnVuY3Rpb25zIHdpdGhpbiBhIHByb2dyYW0KK3dlcmUgZ2VuZXJhdGluZyBldmVudHMgd2l0aGluIHRoZSBrZXJuZWwuIFRvIGJlZ2luIHRoaXMgc29ydCBvZiBhbmFseXNpcywgdGhlCitkYXRhIG11c3QgYmUgcmVjb3JkZWQuIEF0IHRoZSB0aW1lIG9mIHdyaXRpbmcsIHRoaXMgcmVxdWlyZWQgcm9vdDoKKworICAkIHBlcmYgcmVjb3JkIC1jIDEgXAorCS1lIGttZW06bW1fcGFnZV9hbGxvYyAtZSBrbWVtOm1tX3BhZ2VfZnJlZSBcCisJLWUga21lbTptbV9wYWdlX2ZyZWVfYmF0Y2hlZCBcCisJLi9oYWNrYmVuY2ggMTAKKyAgVGltZTogMC44OTQKKyAgWyBwZXJmIHJlY29yZDogQ2FwdHVyZWQgYW5kIHdyb3RlIDAuNzMzIE1CIHBlcmYuZGF0YSAofjMyMDEwIHNhbXBsZXMpIF0KKworTm90ZSB0aGUgdXNlIG9mICctYyAxJyB0byBzZXQgdGhlIGV2ZW50IHBlcmlvZCB0byBzYW1wbGUuIFRoZSBkZWZhdWx0IHNhbXBsZQorcGVyaW9kIGlzIHF1aXRlIGhpZ2ggdG8gbWluaW1pc2Ugb3ZlcmhlYWQgYnV0IHRoZSBpbmZvcm1hdGlvbiBjb2xsZWN0ZWQgY2FuIGJlCit2ZXJ5IGNvYXJzZSBhcyBhIHJlc3VsdC4KKworVGhpcyByZWNvcmQgb3V0cHV0dGVkIGEgZmlsZSBjYWxsZWQgcGVyZi5kYXRhIHdoaWNoIGNhbiBiZSBhbmFseXNlZCB1c2luZworcGVyZiByZXBvcnQuCisKKyAgJCBwZXJmIHJlcG9ydAorICAjIFNhbXBsZXM6IDMwOTIyCisgICMKKyAgIyBPdmVyaGVhZCAgICBDb21tYW5kICAgICAgICAgICAgICAgICAgICAgU2hhcmVkIE9iamVjdAorICAjIC4uLi4uLi4uICAuLi4uLi4uLi4gIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisgICMKKyAgICAgIDg3LjI3JSAgaGFja2JlbmNoICBbdmRzb10KKyAgICAgICA2Ljg1JSAgaGFja2JlbmNoICAvbGliL2k2ODYvY21vdi9saWJjLTIuOS5zbworICAgICAgIDIuNjIlICBoYWNrYmVuY2ggIC9saWIvbGQtMi45LnNvCisgICAgICAgMS41MiUgICAgICAgcGVyZiAgW3Zkc29dCisgICAgICAgMS4yMiUgIGhhY2tiZW5jaCAgLi9oYWNrYmVuY2gKKyAgICAgICAwLjQ4JSAgaGFja2JlbmNoICBba2VybmVsXQorICAgICAgIDAuMDIlICAgICAgIHBlcmYgIC9saWIvaTY4Ni9jbW92L2xpYmMtMi45LnNvCisgICAgICAgMC4wMSUgICAgICAgcGVyZiAgL3Vzci9iaW4vcGVyZgorICAgICAgIDAuMDElICAgICAgIHBlcmYgIC9saWIvbGQtMi45LnNvCisgICAgICAgMC4wMCUgIGhhY2tiZW5jaCAgL2xpYi9pNjg2L2Ntb3YvbGlicHRocmVhZC0yLjkuc28KKyAgIworICAjIChGb3IgbW9yZSBkZXRhaWxzLCB0cnk6IHBlcmYgcmVwb3J0IC0tc29ydCBjb21tLGRzbyxzeW1ib2wpCisgICMKKworQWNjb3JkaW5nIHRvIHRoaXMsIHRoZSB2YXN0IG1ham9yaXR5IG9mIGV2ZW50cyB0cmlnZ2VyZWQgb24gZXZlbnRzCit3aXRoaW4gdGhlIFZEU08uIFdpdGggc2ltcGxlIGJpbmFyaWVzLCB0aGlzIHdpbGwgb2Z0ZW4gYmUgdGhlIGNhc2Ugc28gbGV0J3MKK3Rha2UgYSBzbGlnaHRseSBkaWZmZXJlbnQgZXhhbXBsZS4gSW4gdGhlIGNvdXJzZSBvZiB3cml0aW5nIHRoaXMsIGl0IHdhcworbm90aWNlZCB0aGF0IFggd2FzIGdlbmVyYXRpbmcgYW4gaW5zYW5lIGFtb3VudCBvZiBwYWdlIGFsbG9jYXRpb25zIHNvIGxldCdzIGxvb2sKK2F0IGl0OgorCisgICQgcGVyZiByZWNvcmQgLWMgMSAtZiBcCisJCS1lIGttZW06bW1fcGFnZV9hbGxvYyAtZSBrbWVtOm1tX3BhZ2VfZnJlZSBcCisJCS1lIGttZW06bW1fcGFnZV9mcmVlX2JhdGNoZWQgXAorCQktcCBgcGlkb2YgWGAKKworVGhpcyB3YXMgaW50ZXJydXB0ZWQgYWZ0ZXIgYSBmZXcgc2Vjb25kcyBhbmQKKworICAkIHBlcmYgcmVwb3J0CisgICMgU2FtcGxlczogMjc2NjYKKyAgIworICAjIE92ZXJoZWFkICBDb21tYW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYXJlZCBPYmplY3QKKyAgIyAuLi4uLi4uLiAgLi4uLi4uLiAgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisgICMKKyAgICAgIDUxLjk1JSAgICAgWG9yZyAgW3Zkc29dCisgICAgICA0Ny45NSUgICAgIFhvcmcgIC9vcHQvZ2Z4LXRlc3QvbGliL2xpYnBpeG1hbi0xLnNvLjAuMTMuMQorICAgICAgIDAuMDklICAgICBYb3JnICAvbGliL2k2ODYvY21vdi9saWJjLTIuOS5zbworICAgICAgIDAuMDElICAgICBYb3JnICBba2VybmVsXQorICAjCisgICMgKEZvciBtb3JlIGRldGFpbHMsIHRyeTogcGVyZiByZXBvcnQgLS1zb3J0IGNvbW0sZHNvLHN5bWJvbCkKKyAgIworCitTbywgYWxtb3N0IGhhbGYgb2YgdGhlIGV2ZW50cyBhcmUgb2NjdXJyaW5nIGluIGEgbGlicmFyeS4gVG8gZ2V0IGFuIGlkZWEgd2hpY2gKK3N5bWJvbDoKKworICAkIHBlcmYgcmVwb3J0IC0tc29ydCBjb21tLGRzbyxzeW1ib2wKKyAgIyBTYW1wbGVzOiAyNzY2NgorICAjCisgICMgT3ZlcmhlYWQgIENvbW1hbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhcmVkIE9iamVjdCAgU3ltYm9sCisgICMgLi4uLi4uLi4gIC4uLi4uLi4gIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiAgLi4uLi4uCisgICMKKyAgICAgIDUxLjk1JSAgICAgWG9yZyAgW3Zkc29dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLl0gMHgwMDAwMDBmZmZmZTQyNAorICAgICAgNDcuOTMlICAgICBYb3JnICAvb3B0L2dmeC10ZXN0L2xpYi9saWJwaXhtYW4tMS5zby4wLjEzLjEgIFsuXSBwaXhtYW5GaWxsc3NlMgorICAgICAgIDAuMDklICAgICBYb3JnICAvbGliL2k2ODYvY21vdi9saWJjLTIuOS5zbyAgICAgICAgICAgICAgIFsuXSBfaW50X21hbGxvYworICAgICAgIDAuMDElICAgICBYb3JnICAvb3B0L2dmeC10ZXN0L2xpYi9saWJwaXhtYW4tMS5zby4wLjEzLjEgIFsuXSBwaXhtYW5fcmVnaW9uMzJfY29weV9mCisgICAgICAgMC4wMSUgICAgIFhvcmcgIFtrZXJuZWxdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2tdIHJlYWRfaHBldAorICAgICAgIDAuMDElICAgICBYb3JnICAvb3B0L2dmeC10ZXN0L2xpYi9saWJwaXhtYW4tMS5zby4wLjEzLjEgIFsuXSBnZXRfZmFzdF9wYXRoCisgICAgICAgMC4wMCUgICAgIFhvcmcgIFtrZXJuZWxdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2tdIGZ0cmFjZV90cmFjZV91c2Vyc3RhY2sKKworVG8gc2VlIHdoZXJlIHdpdGhpbiB0aGUgZnVuY3Rpb24gcGl4bWFuRmlsbHNzZTIgdGhpbmdzIGFyZSBnb2luZyB3cm9uZzoKKworICAkIHBlcmYgYW5ub3RhdGUgcGl4bWFuRmlsbHNzZTIKKyAgWyAuLi4gXQorICAgIDAuMDAgOiAgICAgICAgIDM0ZWViOiAgICAgICAwZiAxOCAwOCAgICAgICAgICAgICAgICBwcmVmZXRjaHQwICglZWF4KQorICAgICAgICAgOiAgICAgIH0KKyAgICAgICAgIDoKKyAgICAgICAgIDogICAgICBleHRlcm4gX19pbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX2dudV9pbmxpbmVfXywgX19hbHdheXNfaW5saW5lX18sIF8KKyAgICAgICAgIDogICAgICBfbW1fc3RvcmVfc2kxMjggKF9fbTEyOGkgKl9fUCwgX19tMTI4aSBfX0IpIDogICAgICB7CisgICAgICAgICA6ICAgICAgICAqX19QID0gX19COworICAgMTIuNDAgOiAgICAgICAgIDM0ZWVlOiAgICAgICA2NiAwZiA3ZiA4MCA0MCBmZiBmZiAgICBtb3ZkcWEgJXhtbTAsLTB4YzAoJWVheCkKKyAgICAwLjAwIDogICAgICAgICAzNGVmNTogICAgICAgZmYKKyAgIDEyLjQwIDogICAgICAgICAzNGVmNjogICAgICAgNjYgMGYgN2YgODAgNTAgZmYgZmYgICAgbW92ZHFhICV4bW0wLC0weGIwKCVlYXgpCisgICAgMC4wMCA6ICAgICAgICAgMzRlZmQ6ICAgICAgIGZmCisgICAxMi4zOSA6ICAgICAgICAgMzRlZmU6ICAgICAgIDY2IDBmIDdmIDgwIDYwIGZmIGZmICAgIG1vdmRxYSAleG1tMCwtMHhhMCglZWF4KQorICAgIDAuMDAgOiAgICAgICAgIDM0ZjA1OiAgICAgICBmZgorICAgMTIuNjcgOiAgICAgICAgIDM0ZjA2OiAgICAgICA2NiAwZiA3ZiA4MCA3MCBmZiBmZiAgICBtb3ZkcWEgJXhtbTAsLTB4OTAoJWVheCkKKyAgICAwLjAwIDogICAgICAgICAzNGYwZDogICAgICAgZmYKKyAgIDEyLjU4IDogICAgICAgICAzNGYwZTogICAgICAgNjYgMGYgN2YgNDAgODAgICAgICAgICAgbW92ZHFhICV4bW0wLC0weDgwKCVlYXgpCisgICAxMi4zMSA6ICAgICAgICAgMzRmMTM6ICAgICAgIDY2IDBmIDdmIDQwIDkwICAgICAgICAgIG1vdmRxYSAleG1tMCwtMHg3MCglZWF4KQorICAgMTIuNDAgOiAgICAgICAgIDM0ZjE4OiAgICAgICA2NiAwZiA3ZiA0MCBhMCAgICAgICAgICBtb3ZkcWEgJXhtbTAsLTB4NjAoJWVheCkKKyAgIDEyLjMxIDogICAgICAgICAzNGYxZDogICAgICAgNjYgMGYgN2YgNDAgYjAgICAgICAgICAgbW92ZHFhICV4bW0wLC0weDUwKCVlYXgpCisKK0F0IGEgZ2xhbmNlLCBpdCBsb29rcyBsaWtlIHRoZSB0aW1lIGlzIGJlaW5nIHNwZW50IGNvcHlpbmcgcGl4bWFwcyB0bwordGhlIGNhcmQuICBGdXJ0aGVyIGludmVzdGlnYXRpb24gd291bGQgYmUgbmVlZGVkIHRvIGRldGVybWluZSB3aHkgcGl4bWFwcworYXJlIGJlaW5nIGNvcGllZCBhcm91bmQgc28gbXVjaCBidXQgYSBzdGFydGluZyBwb2ludCB3b3VsZCBiZSB0byB0YWtlIGFuCithbmNpZW50IGJ1aWxkIG9mIGxpYnBpeG1hcCBvdXQgb2YgdGhlIGxpYnJhcnkgcGF0aCB3aGVyZSBpdCB3YXMgdG90YWxseQorZm9yZ290dGVuIGFib3V0IGZyb20gbW9udGhzIGFnbyEKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdHJhY2UvdHJhY2Vwb2ludHMudHh0IGIvRG9jdW1lbnRhdGlvbi90cmFjZS90cmFjZXBvaW50cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNlZmFjNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdHJhY2UvdHJhY2Vwb2ludHMudHh0CkBAIC0wLDAgKzEsMTQ1IEBACisJICAgICAgICAgICAgIFVzaW5nIHRoZSBMaW51eCBLZXJuZWwgVHJhY2Vwb2ludHMKKworCQkJICAgIE1hdGhpZXUgRGVzbm95ZXJzCisKKworVGhpcyBkb2N1bWVudCBpbnRyb2R1Y2VzIExpbnV4IEtlcm5lbCBUcmFjZXBvaW50cyBhbmQgdGhlaXIgdXNlLiBJdAorcHJvdmlkZXMgZXhhbXBsZXMgb2YgaG93IHRvIGluc2VydCB0cmFjZXBvaW50cyBpbiB0aGUga2VybmVsIGFuZAorY29ubmVjdCBwcm9iZSBmdW5jdGlvbnMgdG8gdGhlbSBhbmQgcHJvdmlkZXMgc29tZSBleGFtcGxlcyBvZiBwcm9iZQorZnVuY3Rpb25zLgorCisKKyogUHVycG9zZSBvZiB0cmFjZXBvaW50cworCitBIHRyYWNlcG9pbnQgcGxhY2VkIGluIGNvZGUgcHJvdmlkZXMgYSBob29rIHRvIGNhbGwgYSBmdW5jdGlvbiAocHJvYmUpCit0aGF0IHlvdSBjYW4gcHJvdmlkZSBhdCBydW50aW1lLiBBIHRyYWNlcG9pbnQgY2FuIGJlICJvbiIgKGEgcHJvYmUgaXMKK2Nvbm5lY3RlZCB0byBpdCkgb3IgIm9mZiIgKG5vIHByb2JlIGlzIGF0dGFjaGVkKS4gV2hlbiBhIHRyYWNlcG9pbnQgaXMKKyJvZmYiIGl0IGhhcyBubyBlZmZlY3QsIGV4Y2VwdCBmb3IgYWRkaW5nIGEgdGlueSB0aW1lIHBlbmFsdHkKKyhjaGVja2luZyBhIGNvbmRpdGlvbiBmb3IgYSBicmFuY2gpIGFuZCBzcGFjZSBwZW5hbHR5IChhZGRpbmcgYSBmZXcKK2J5dGVzIGZvciB0aGUgZnVuY3Rpb24gY2FsbCBhdCB0aGUgZW5kIG9mIHRoZSBpbnN0cnVtZW50ZWQgZnVuY3Rpb24KK2FuZCBhZGRzIGEgZGF0YSBzdHJ1Y3R1cmUgaW4gYSBzZXBhcmF0ZSBzZWN0aW9uKS4gIFdoZW4gYSB0cmFjZXBvaW50CitpcyAib24iLCB0aGUgZnVuY3Rpb24geW91IHByb3ZpZGUgaXMgY2FsbGVkIGVhY2ggdGltZSB0aGUgdHJhY2Vwb2ludAoraXMgZXhlY3V0ZWQsIGluIHRoZSBleGVjdXRpb24gY29udGV4dCBvZiB0aGUgY2FsbGVyLiBXaGVuIHRoZSBmdW5jdGlvbgorcHJvdmlkZWQgZW5kcyBpdHMgZXhlY3V0aW9uLCBpdCByZXR1cm5zIHRvIHRoZSBjYWxsZXIgKGNvbnRpbnVpbmcgZnJvbQordGhlIHRyYWNlcG9pbnQgc2l0ZSkuCisKK1lvdSBjYW4gcHV0IHRyYWNlcG9pbnRzIGF0IGltcG9ydGFudCBsb2NhdGlvbnMgaW4gdGhlIGNvZGUuIFRoZXkgYXJlCitsaWdodHdlaWdodCBob29rcyB0aGF0IGNhbiBwYXNzIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgcGFyYW1ldGVycywKK3doaWNoIHByb3RvdHlwZXMgYXJlIGRlc2NyaWJlZCBpbiBhIHRyYWNlcG9pbnQgZGVjbGFyYXRpb24gcGxhY2VkIGluIGEKK2hlYWRlciBmaWxlLgorCitUaGV5IGNhbiBiZSB1c2VkIGZvciB0cmFjaW5nIGFuZCBwZXJmb3JtYW5jZSBhY2NvdW50aW5nLgorCisKKyogVXNhZ2UKKworVHdvIGVsZW1lbnRzIGFyZSByZXF1aXJlZCBmb3IgdHJhY2Vwb2ludHMgOgorCistIEEgdHJhY2Vwb2ludCBkZWZpbml0aW9uLCBwbGFjZWQgaW4gYSBoZWFkZXIgZmlsZS4KKy0gVGhlIHRyYWNlcG9pbnQgc3RhdGVtZW50LCBpbiBDIGNvZGUuCisKK0luIG9yZGVyIHRvIHVzZSB0cmFjZXBvaW50cywgeW91IHNob3VsZCBpbmNsdWRlIGxpbnV4L3RyYWNlcG9pbnQuaC4KKworSW4gaW5jbHVkZS90cmFjZS9ldmVudHMvc3Vic3lzLmggOgorCisjdW5kZWYgVFJBQ0VfU1lTVEVNCisjZGVmaW5lIFRSQUNFX1NZU1RFTSBzdWJzeXMKKworI2lmICFkZWZpbmVkKF9UUkFDRV9TVUJTWVNfSCkgfHwgZGVmaW5lZChUUkFDRV9IRUFERVJfTVVMVElfUkVBRCkKKyNkZWZpbmUgX1RSQUNFX1NVQlNZU19ICisKKyNpbmNsdWRlIDxsaW51eC90cmFjZXBvaW50Lmg+CisKK0RFQ0xBUkVfVFJBQ0Uoc3Vic3lzX2V2ZW50bmFtZSwKKwlUUF9QUk9UTyhpbnQgZmlyc3RhcmcsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCksCisJVFBfQVJHUyhmaXJzdGFyZywgcCkpOworCisjZW5kaWYgLyogX1RSQUNFX1NVQlNZU19IICovCisKKy8qIFRoaXMgcGFydCBtdXN0IGJlIG91dHNpZGUgcHJvdGVjdGlvbiAqLworI2luY2x1ZGUgPHRyYWNlL2RlZmluZV90cmFjZS5oPgorCitJbiBzdWJzeXMvZmlsZS5jICh3aGVyZSB0aGUgdHJhY2luZyBzdGF0ZW1lbnQgbXVzdCBiZSBhZGRlZCkgOgorCisjaW5jbHVkZSA8dHJhY2UvZXZlbnRzL3N1YnN5cy5oPgorCisjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFMKK0RFRklORV9UUkFDRShzdWJzeXNfZXZlbnRuYW1lKTsKKwordm9pZCBzb21lZmN0KHZvaWQpCit7CisJLi4uCisJdHJhY2Vfc3Vic3lzX2V2ZW50bmFtZShhcmcsIHRhc2spOworCS4uLgorfQorCitXaGVyZSA6CistIHN1YnN5c19ldmVudG5hbWUgaXMgYW4gaWRlbnRpZmllciB1bmlxdWUgdG8geW91ciBldmVudAorICAgIC0gc3Vic3lzIGlzIHRoZSBuYW1lIG9mIHlvdXIgc3Vic3lzdGVtLgorICAgIC0gZXZlbnRuYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBldmVudCB0byB0cmFjZS4KKworLSBUUF9QUk9UTyhpbnQgZmlyc3RhcmcsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcCkgaXMgdGhlIHByb3RvdHlwZSBvZiB0aGUKKyAgZnVuY3Rpb24gY2FsbGVkIGJ5IHRoaXMgdHJhY2Vwb2ludC4KKworLSBUUF9BUkdTKGZpcnN0YXJnLCBwKSBhcmUgdGhlIHBhcmFtZXRlcnMgbmFtZXMsIHNhbWUgYXMgZm91bmQgaW4gdGhlCisgIHByb3RvdHlwZS4KKworLSBpZiB5b3UgdXNlIHRoZSBoZWFkZXIgaW4gbXVsdGlwbGUgc291cmNlIGZpbGVzLCAjZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFMKKyAgc2hvdWxkIGFwcGVhciBvbmx5IGluIG9uZSBzb3VyY2UgZmlsZS4KKworQ29ubmVjdGluZyBhIGZ1bmN0aW9uIChwcm9iZSkgdG8gYSB0cmFjZXBvaW50IGlzIGRvbmUgYnkgcHJvdmlkaW5nIGEKK3Byb2JlIChmdW5jdGlvbiB0byBjYWxsKSBmb3IgdGhlIHNwZWNpZmljIHRyYWNlcG9pbnQgdGhyb3VnaAorcmVnaXN0ZXJfdHJhY2Vfc3Vic3lzX2V2ZW50bmFtZSgpLiAgUmVtb3ZpbmcgYSBwcm9iZSBpcyBkb25lIHRocm91Z2gKK3VucmVnaXN0ZXJfdHJhY2Vfc3Vic3lzX2V2ZW50bmFtZSgpOyBpdCB3aWxsIHJlbW92ZSB0aGUgcHJvYmUuCisKK3RyYWNlcG9pbnRfc3luY2hyb25pemVfdW5yZWdpc3RlcigpIG11c3QgYmUgY2FsbGVkIGJlZm9yZSB0aGUgZW5kIG9mCit0aGUgbW9kdWxlIGV4aXQgZnVuY3Rpb24gdG8gbWFrZSBzdXJlIHRoZXJlIGlzIG5vIGNhbGxlciBsZWZ0IHVzaW5nCit0aGUgcHJvYmUuIFRoaXMsIGFuZCB0aGUgZmFjdCB0aGF0IHByZWVtcHRpb24gaXMgZGlzYWJsZWQgYXJvdW5kIHRoZQorcHJvYmUgY2FsbCwgbWFrZSBzdXJlIHRoYXQgcHJvYmUgcmVtb3ZhbCBhbmQgbW9kdWxlIHVubG9hZCBhcmUgc2FmZS4KKworVGhlIHRyYWNlcG9pbnQgbWVjaGFuaXNtIHN1cHBvcnRzIGluc2VydGluZyBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgdGhlCitzYW1lIHRyYWNlcG9pbnQsIGJ1dCBhIHNpbmdsZSBkZWZpbml0aW9uIG11c3QgYmUgbWFkZSBvZiBhIGdpdmVuCit0cmFjZXBvaW50IG5hbWUgb3ZlciBhbGwgdGhlIGtlcm5lbCB0byBtYWtlIHN1cmUgbm8gdHlwZSBjb25mbGljdCB3aWxsCitvY2N1ci4gTmFtZSBtYW5nbGluZyBvZiB0aGUgdHJhY2Vwb2ludHMgaXMgZG9uZSB1c2luZyB0aGUgcHJvdG90eXBlcwordG8gbWFrZSBzdXJlIHR5cGluZyBpcyBjb3JyZWN0LiBWZXJpZmljYXRpb24gb2YgcHJvYmUgdHlwZSBjb3JyZWN0bmVzcworaXMgZG9uZSBhdCB0aGUgcmVnaXN0cmF0aW9uIHNpdGUgYnkgdGhlIGNvbXBpbGVyLiBUcmFjZXBvaW50cyBjYW4gYmUKK3B1dCBpbiBpbmxpbmUgZnVuY3Rpb25zLCBpbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMsIGFuZCB1bnJvbGxlZCBsb29wcworYXMgd2VsbCBhcyByZWd1bGFyIGZ1bmN0aW9ucy4KKworVGhlIG5hbWluZyBzY2hlbWUgInN1YnN5c19ldmVudCIgaXMgc3VnZ2VzdGVkIGhlcmUgYXMgYSBjb252ZW50aW9uCitpbnRlbmRlZCB0byBsaW1pdCBjb2xsaXNpb25zLiBUcmFjZXBvaW50IG5hbWVzIGFyZSBnbG9iYWwgdG8gdGhlCitrZXJuZWw6IHRoZXkgYXJlIGNvbnNpZGVyZWQgYXMgYmVpbmcgdGhlIHNhbWUgd2hldGhlciB0aGV5IGFyZSBpbiB0aGUKK2NvcmUga2VybmVsIGltYWdlIG9yIGluIG1vZHVsZXMuCisKK0lmIHRoZSB0cmFjZXBvaW50IGhhcyB0byBiZSB1c2VkIGluIGtlcm5lbCBtb2R1bGVzLCBhbgorRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MX0dQTCgpIG9yIEVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTCgpIGNhbiBiZQordXNlZCB0byBleHBvcnQgdGhlIGRlZmluZWQgdHJhY2Vwb2ludHMuCisKK0lmIHlvdSBuZWVkIHRvIGRvIGEgYml0IG9mIHdvcmsgZm9yIGEgdHJhY2Vwb2ludCBwYXJhbWV0ZXIsIGFuZAordGhhdCB3b3JrIGlzIG9ubHkgdXNlZCBmb3IgdGhlIHRyYWNlcG9pbnQsIHRoYXQgd29yayBjYW4gYmUgZW5jYXBzdWxhdGVkCit3aXRoaW4gYW4gaWYgc3RhdGVtZW50IHdpdGggdGhlIGZvbGxvd2luZzoKKworCWlmICh0cmFjZV9mb29fYmFyX2VuYWJsZWQoKSkgeworCQlpbnQgaTsKKwkJaW50IHRvdCA9IDA7CisKKwkJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCisJCQl0b3QgKz0gY2FsY3VsYXRlX251Z2dldHMoKTsKKworCQl0cmFjZV9mb29fYmFyKHRvdCk7CisJfQorCitBbGwgdHJhY2VfPHRyYWNlcG9pbnQ+KCkgY2FsbHMgaGF2ZSBhIG1hdGNoaW5nIHRyYWNlXzx0cmFjZXBvaW50Pl9lbmFibGVkKCkKK2Z1bmN0aW9uIGRlZmluZWQgdGhhdCByZXR1cm5zIHRydWUgaWYgdGhlIHRyYWNlcG9pbnQgaXMgZW5hYmxlZCBhbmQKK2ZhbHNlIG90aGVyd2lzZS4gVGhlIHRyYWNlXzx0cmFjZXBvaW50PigpIHNob3VsZCBhbHdheXMgYmUgd2l0aGluIHRoZQorYmxvY2sgb2YgdGhlIGlmICh0cmFjZV88dHJhY2Vwb2ludD5fZW5hYmxlZCgpKSB0byBwcmV2ZW50IHJhY2VzIGJldHdlZW4KK3RoZSB0cmFjZXBvaW50IGJlaW5nIGVuYWJsZWQgYW5kIHRoZSBjaGVjayBiZWluZyBzZWVuLgorCitUaGUgYWR2YW50YWdlIG9mIHVzaW5nIHRoZSB0cmFjZV88dHJhY2Vwb2ludD5fZW5hYmxlZCgpIGlzIHRoYXQgaXQgdXNlcwordGhlIHN0YXRpY19rZXkgb2YgdGhlIHRyYWNlcG9pbnQgdG8gYWxsb3cgdGhlIGlmIHN0YXRlbWVudCB0byBiZSBpbXBsZW1lbnRlZAord2l0aCBqdW1wIGxhYmVscyBhbmQgYXZvaWQgY29uZGl0aW9uYWwgYnJhbmNoZXMuCisKK05vdGU6IFRoZSBjb252ZW5pZW5jZSBtYWNybyBUUkFDRV9FVkVOVCBwcm92aWRlcyBhbiBhbHRlcm5hdGl2ZSB3YXkgdG8KKyAgICAgIGRlZmluZSB0cmFjZXBvaW50cy4gQ2hlY2sgaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvMzc5OTAzLAorICAgICAgaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvMzgxMDY0IGFuZCBodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8zODMzNjIKKyAgICAgIGZvciBhIHNlcmllcyBvZiBhcnRpY2xlcyB3aXRoIG1vcmUgZGV0YWlscy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdHJhY2UvdXByb2JldHJhY2VyLnR4dCBiL0RvY3VtZW50YXRpb24vdHJhY2UvdXByb2JldHJhY2VyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWNmOWEzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi90cmFjZS91cHJvYmV0cmFjZXIudHh0CkBAIC0wLDAgKzEsMTU5IEBACisgICAgICAgICAgICBVcHJvYmUtdHJhY2VyOiBVcHJvYmUtYmFzZWQgRXZlbnQgVHJhY2luZworICAgICAgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgICAgICAgICBEb2N1bWVudGF0aW9uIHdyaXR0ZW4gYnkgU3Jpa2FyIERyb25hbXJhanUKKworCitPdmVydmlldworLS0tLS0tLS0KK1Vwcm9iZSBiYXNlZCB0cmFjZSBldmVudHMgYXJlIHNpbWlsYXIgdG8ga3Byb2JlIGJhc2VkIHRyYWNlIGV2ZW50cy4KK1RvIGVuYWJsZSB0aGlzIGZlYXR1cmUsIGJ1aWxkIHlvdXIga2VybmVsIHdpdGggQ09ORklHX1VQUk9CRV9FVkVOVD15LgorCitTaW1pbGFyIHRvIHRoZSBrcHJvYmUtZXZlbnQgdHJhY2VyLCB0aGlzIGRvZXNuJ3QgbmVlZCB0byBiZSBhY3RpdmF0ZWQgdmlhCitjdXJyZW50X3RyYWNlci4gSW5zdGVhZCBvZiB0aGF0LCBhZGQgcHJvYmUgcG9pbnRzIHZpYQorL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy91cHJvYmVfZXZlbnRzLCBhbmQgZW5hYmxlIGl0IHZpYQorL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMvdXByb2Jlcy88RVZFTlQ+L2VuYWJsZWQuCisKK0hvd2V2ZXIgdW5saWtlIGtwcm9iZS1ldmVudCB0cmFjZXIsIHRoZSB1cHJvYmUgZXZlbnQgaW50ZXJmYWNlIGV4cGVjdHMgdGhlCit1c2VyIHRvIGNhbGN1bGF0ZSB0aGUgb2Zmc2V0IG9mIHRoZSBwcm9iZXBvaW50IGluIHRoZSBvYmplY3QuCisKK1N5bm9wc2lzIG9mIHVwcm9iZV90cmFjZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgcFs6W0dSUC9dRVZFTlRdIFBBVEg6T0ZGU0VUIFtGRVRDSEFSR1NdIDogU2V0IGEgdXByb2JlCisgIHJbOltHUlAvXUVWRU5UXSBQQVRIOk9GRlNFVCBbRkVUQ0hBUkdTXSA6IFNldCBhIHJldHVybiB1cHJvYmUgKHVyZXRwcm9iZSkKKyAgLTpbR1JQL11FVkVOVCAgICAgICAgICAgICAgICAgICAgICAgICAgIDogQ2xlYXIgdXByb2JlIG9yIHVyZXRwcm9iZSBldmVudAorCisgIEdSUCAgICAgICAgICAgOiBHcm91cCBuYW1lLiBJZiBvbWl0dGVkLCAidXByb2JlcyIgaXMgdGhlIGRlZmF1bHQgdmFsdWUuCisgIEVWRU5UICAgICAgICAgOiBFdmVudCBuYW1lLiBJZiBvbWl0dGVkLCB0aGUgZXZlbnQgbmFtZSBpcyBnZW5lcmF0ZWQgYmFzZWQKKyAgICAgICAgICAgICAgICAgIG9uIFBBVEgrT0ZGU0VULgorICBQQVRIICAgICAgICAgIDogUGF0aCB0byBhbiBleGVjdXRhYmxlIG9yIGEgbGlicmFyeS4KKyAgT0ZGU0VUICAgICAgICA6IE9mZnNldCB3aGVyZSB0aGUgcHJvYmUgaXMgaW5zZXJ0ZWQuCisKKyAgRkVUQ0hBUkdTICAgICA6IEFyZ3VtZW50cy4gRWFjaCBwcm9iZSBjYW4gaGF2ZSB1cCB0byAxMjggYXJncy4KKyAgICVSRUcgICAgICAgICA6IEZldGNoIHJlZ2lzdGVyIFJFRworICAgQEFERFIJOiBGZXRjaCBtZW1vcnkgYXQgQUREUiAoQUREUiBzaG91bGQgYmUgaW4gdXNlcnNwYWNlKQorICAgQCtPRkZTRVQJOiBGZXRjaCBtZW1vcnkgYXQgT0ZGU0VUIChPRkZTRVQgZnJvbSBzYW1lIGZpbGUgYXMgUEFUSCkKKyAgICRzdGFja04JOiBGZXRjaCBOdGggZW50cnkgb2Ygc3RhY2sgKE4gPj0gMCkKKyAgICRzdGFjawk6IEZldGNoIHN0YWNrIGFkZHJlc3MuCisgICAkcmV0dmFsCTogRmV0Y2ggcmV0dXJuIHZhbHVlLigqKQorICAgK3wtb2ZmcyhGRVRDSEFSRykgOiBGZXRjaCBtZW1vcnkgYXQgRkVUQ0hBUkcgK3wtIG9mZnMgYWRkcmVzcy4oKiopCisgICBOQU1FPUZFVENIQVJHICAgICA6IFNldCBOQU1FIGFzIHRoZSBhcmd1bWVudCBuYW1lIG9mIEZFVENIQVJHLgorICAgRkVUQ0hBUkc6VFlQRSAgICAgOiBTZXQgVFlQRSBhcyB0aGUgdHlwZSBvZiBGRVRDSEFSRy4gQ3VycmVudGx5LCBiYXNpYyB0eXBlcworCQkgICAgICAgKHU4L3UxNi91MzIvdTY0L3M4L3MxNi9zMzIvczY0KSwgInN0cmluZyIgYW5kIGJpdGZpZWxkCisJCSAgICAgICBhcmUgc3VwcG9ydGVkLgorCisgICgqKSBvbmx5IGZvciByZXR1cm4gcHJvYmUuCisgICgqKikgdGhpcyBpcyB1c2VmdWwgZm9yIGZldGNoaW5nIGEgZmllbGQgb2YgZGF0YSBzdHJ1Y3R1cmVzLgorCitUeXBlcworLS0tLS0KK1NldmVyYWwgdHlwZXMgYXJlIHN1cHBvcnRlZCBmb3IgZmV0Y2gtYXJncy4gVXByb2JlIHRyYWNlciB3aWxsIGFjY2VzcyBtZW1vcnkKK2J5IGdpdmVuIHR5cGUuIFByZWZpeCAncycgYW5kICd1JyBtZWFucyB0aG9zZSB0eXBlcyBhcmUgc2lnbmVkIGFuZCB1bnNpZ25lZAorcmVzcGVjdGl2ZWx5LiBUcmFjZWQgYXJndW1lbnRzIGFyZSBzaG93biBpbiBkZWNpbWFsIChzaWduZWQpIG9yIGhleCAodW5zaWduZWQpLgorU3RyaW5nIHR5cGUgaXMgYSBzcGVjaWFsIHR5cGUsIHdoaWNoIGZldGNoZXMgYSAibnVsbC10ZXJtaW5hdGVkIiBzdHJpbmcgZnJvbQordXNlciBzcGFjZS4KK0JpdGZpZWxkIGlzIGFub3RoZXIgc3BlY2lhbCB0eXBlLCB3aGljaCB0YWtlcyAzIHBhcmFtZXRlcnMsIGJpdC13aWR0aCwgYml0LQorb2Zmc2V0LCBhbmQgY29udGFpbmVyLXNpemUgKHVzdWFsbHkgMzIpLiBUaGUgc3ludGF4IGlzOworCisgYjxiaXQtd2lkdGg+QDxiaXQtb2Zmc2V0Pi88Y29udGFpbmVyLXNpemU+CisKKworRXZlbnQgUHJvZmlsaW5nCistLS0tLS0tLS0tLS0tLS0KK1lvdSBjYW4gY2hlY2sgdGhlIHRvdGFsIG51bWJlciBvZiBwcm9iZSBoaXRzIGFuZCBwcm9iZSBtaXNzLWhpdHMgdmlhCisvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3Vwcm9iZV9wcm9maWxlLgorVGhlIGZpcnN0IGNvbHVtbiBpcyBldmVudCBuYW1lLCB0aGUgc2Vjb25kIGlzIHRoZSBudW1iZXIgb2YgcHJvYmUgaGl0cywKK3RoZSB0aGlyZCBpcyB0aGUgbnVtYmVyIG9mIHByb2JlIG1pc3MtaGl0cy4KKworVXNhZ2UgZXhhbXBsZXMKKy0tLS0tLS0tLS0tLS0tCisgKiBBZGQgYSBwcm9iZSBhcyBhIG5ldyB1cHJvYmUgZXZlbnQsIHdyaXRlIGEgbmV3IGRlZmluaXRpb24gdG8gdXByb2JlX2V2ZW50cworYXMgYmVsb3c6IChzZXRzIGEgdXByb2JlIGF0IGFuIG9mZnNldCBvZiAweDQyNDVjMCBpbiB0aGUgZXhlY3V0YWJsZSAvYmluL2Jhc2gpCisKKyAgICBlY2hvICdwOiAvYmluL2Jhc2g6MHg0MjQ1YzAnID4gL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy91cHJvYmVfZXZlbnRzCisKKyAqIEFkZCBhIHByb2JlIGFzIGEgbmV3IHVyZXRwcm9iZSBldmVudDoKKworICAgIGVjaG8gJ3I6IC9iaW4vYmFzaDoweDQyNDVjMCcgPiAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3Vwcm9iZV9ldmVudHMKKworICogVW5zZXQgcmVnaXN0ZXJlZCBldmVudDoKKworICAgIGVjaG8gJy06YmFzaF8weDQyNDVjMCcgPj4gL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy91cHJvYmVfZXZlbnRzCisKKyAqIFByaW50IG91dCB0aGUgZXZlbnRzIHRoYXQgYXJlIHJlZ2lzdGVyZWQ6CisKKyAgICBjYXQgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy91cHJvYmVfZXZlbnRzCisKKyAqIENsZWFyIGFsbCBldmVudHM6CisKKyAgICBlY2hvID4gL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy91cHJvYmVfZXZlbnRzCisKK0ZvbGxvd2luZyBleGFtcGxlIHNob3dzIGhvdyB0byBkdW1wIHRoZSBpbnN0cnVjdGlvbiBwb2ludGVyIGFuZCAlYXggcmVnaXN0ZXIKK2F0IHRoZSBwcm9iZWQgdGV4dCBhZGRyZXNzLiBQcm9iZSB6ZnJlZSBmdW5jdGlvbiBpbiAvYmluL3pzaDoKKworICAgICMgY2QgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy8KKyAgICAjIGNhdCAvcHJvYy9gcGdyZXAgenNoYC9tYXBzIHwgZ3JlcCAvYmluL3pzaCB8IGdyZXAgci14cAorICAgIDAwNDAwMDAwLTAwNDhhMDAwIHIteHAgMDAwMDAwMDAgMDg6MDMgMTMwOTA0IC9iaW4venNoCisgICAgIyBvYmpkdW1wIC1UIC9iaW4venNoIHwgZ3JlcCAtdyB6ZnJlZQorICAgIDAwMDAwMDAwMDA0NDY0MjAgZyAgICBERiAudGV4dCAgMDAwMDAwMDAwMDAwMDAxMiAgQmFzZSAgICAgICAgemZyZWUKKworICAweDQ2NDIwIGlzIHRoZSBvZmZzZXQgb2YgemZyZWUgaW4gb2JqZWN0IC9iaW4venNoIHRoYXQgaXMgbG9hZGVkIGF0CisgIDB4MDA0MDAwMDAuIEhlbmNlIHRoZSBjb21tYW5kIHRvIHVwcm9iZSB3b3VsZCBiZToKKworICAgICMgZWNobyAncDp6ZnJlZV9lbnRyeSAvYmluL3pzaDoweDQ2NDIwICVpcCAlYXgnID4gdXByb2JlX2V2ZW50cworCisgIEFuZCB0aGUgc2FtZSBmb3IgdGhlIHVyZXRwcm9iZSB3b3VsZCBiZToKKworICAgICMgZWNobyAncjp6ZnJlZV9leGl0IC9iaW4venNoOjB4NDY0MjAgJWlwICVheCcgPj4gdXByb2JlX2V2ZW50cworCitQbGVhc2Ugbm90ZTogVXNlciBoYXMgdG8gZXhwbGljaXRseSBjYWxjdWxhdGUgdGhlIG9mZnNldCBvZiB0aGUgcHJvYmUtcG9pbnQKK2luIHRoZSBvYmplY3QuIFdlIGNhbiBzZWUgdGhlIGV2ZW50cyB0aGF0IGFyZSByZWdpc3RlcmVkIGJ5IGxvb2tpbmcgYXQgdGhlCit1cHJvYmVfZXZlbnRzIGZpbGUuCisKKyAgICAjIGNhdCB1cHJvYmVfZXZlbnRzCisgICAgcDp1cHJvYmVzL3pmcmVlX2VudHJ5IC9iaW4venNoOjB4MDAwNDY0MjAgYXJnMT0laXAgYXJnMj0lYXgKKyAgICByOnVwcm9iZXMvemZyZWVfZXhpdCAvYmluL3pzaDoweDAwMDQ2NDIwIGFyZzE9JWlwIGFyZzI9JWF4CisKK0Zvcm1hdCBvZiBldmVudHMgY2FuIGJlIHNlZW4gYnkgdmlld2luZyB0aGUgZmlsZSBldmVudHMvdXByb2Jlcy96ZnJlZV9lbnRyeS9mb3JtYXQKKworICAgICMgY2F0IGV2ZW50cy91cHJvYmVzL3pmcmVlX2VudHJ5L2Zvcm1hdAorICAgIG5hbWU6IHpmcmVlX2VudHJ5CisgICAgSUQ6IDkyMgorICAgIGZvcm1hdDoKKyAgICAgICAgIGZpZWxkOnVuc2lnbmVkIHNob3J0IGNvbW1vbl90eXBlOyAgICAgICAgIG9mZnNldDowOyAgc2l6ZToyOyBzaWduZWQ6MDsKKyAgICAgICAgIGZpZWxkOnVuc2lnbmVkIGNoYXIgY29tbW9uX2ZsYWdzOyAgICAgICAgIG9mZnNldDoyOyAgc2l6ZToxOyBzaWduZWQ6MDsKKyAgICAgICAgIGZpZWxkOnVuc2lnbmVkIGNoYXIgY29tbW9uX3ByZWVtcHRfY291bnQ7IG9mZnNldDozOyAgc2l6ZToxOyBzaWduZWQ6MDsKKyAgICAgICAgIGZpZWxkOmludCBjb21tb25fcGlkOyAgICAgICAgICAgICAgICAgICAgIG9mZnNldDo0OyAgc2l6ZTo0OyBzaWduZWQ6MTsKKyAgICAgICAgIGZpZWxkOmludCBjb21tb25fcGFkZGluZzsgICAgICAgICAgICAgICAgIG9mZnNldDo4OyAgc2l6ZTo0OyBzaWduZWQ6MTsKKworICAgICAgICAgZmllbGQ6dW5zaWduZWQgbG9uZyBfX3Byb2JlX2lwOyAgICAgICAgICAgb2Zmc2V0OjEyOyBzaXplOjQ7IHNpZ25lZDowOworICAgICAgICAgZmllbGQ6dTMyIGFyZzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OjE2OyBzaXplOjQ7IHNpZ25lZDowOworICAgICAgICAgZmllbGQ6dTMyIGFyZzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OjIwOyBzaXplOjQ7IHNpZ25lZDowOworCisgICAgcHJpbnQgZm10OiAiKCVseCkgYXJnMT0lbHggYXJnMj0lbHgiLCBSRUMtPl9fcHJvYmVfaXAsIFJFQy0+YXJnMSwgUkVDLT5hcmcyCisKK1JpZ2h0IGFmdGVyIGRlZmluaXRpb24sIGVhY2ggZXZlbnQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4gRm9yIHRyYWNpbmcgdGhlc2UKK2V2ZW50cywgeW91IG5lZWQgdG8gZW5hYmxlIGl0IGJ5OgorCisgICAgIyBlY2hvIDEgPiBldmVudHMvdXByb2Jlcy9lbmFibGUKKworTGV0cyBkaXNhYmxlIHRoZSBldmVudCBhZnRlciBzbGVlcGluZyBmb3Igc29tZSB0aW1lLgorCisgICAgIyBzbGVlcCAyMAorICAgICMgZWNobyAwID4gZXZlbnRzL3Vwcm9iZXMvZW5hYmxlCisKK0FuZCB5b3UgY2FuIHNlZSB0aGUgdHJhY2VkIGluZm9ybWF0aW9uIHZpYSAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3RyYWNlLgorCisgICAgIyBjYXQgdHJhY2UKKyAgICAjIHRyYWNlcjogbm9wCisgICAgIworICAgICMgICAgICAgICAgIFRBU0stUElEICAgIENQVSMgICAgVElNRVNUQU1QICBGVU5DVElPTgorICAgICMgICAgICAgICAgICAgIHwgfCAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8CisgICAgICAgICAgICAgICAgIHpzaC0yNDg0MiBbMDA2XSAyNTg1NDQuOTk1NDU2OiB6ZnJlZV9lbnRyeTogKDB4NDQ2NDIwKSBhcmcxPTQ0NjQyMCBhcmcyPTc5CisgICAgICAgICAgICAgICAgIHpzaC0yNDg0MiBbMDA3XSAyNTg1NDUuMDAwMjcwOiB6ZnJlZV9leGl0OiAgKDB4NDQ2NTQwIDwtIDB4NDQ2NDIwKSBhcmcxPTQ0NjU0MCBhcmcyPTAKKyAgICAgICAgICAgICAgICAgenNoLTI0ODQyIFswMDJdIDI1ODU0NS4wNDM5Mjk6IHpmcmVlX2VudHJ5OiAoMHg0NDY0MjApIGFyZzE9NDQ2NDIwIGFyZzI9NzkKKyAgICAgICAgICAgICAgICAgenNoLTI0ODQyIFswMDRdIDI1ODU0Ny4wNDYxMjk6IHpmcmVlX2V4aXQ6ICAoMHg0NDY1NDAgPC0gMHg0NDY0MjApIGFyZzE9NDQ2NTQwIGFyZzI9MAorCitPdXRwdXQgc2hvd3MgdXMgdXByb2JlIHdhcyB0cmlnZ2VyZWQgZm9yIGEgcGlkIDI0ODQyIHdpdGggaXAgYmVpbmcgMHg0NDY0MjAKK2FuZCBjb250ZW50cyBvZiBheCByZWdpc3RlciBiZWluZyA3OS4gQW5kIHVyZXRwcm9iZSB3YXMgdHJpZ2dlcmVkIHdpdGggaXAgYXQKKzB4NDQ2NTQwIHdpdGggY291bnRlcnBhcnQgZnVuY3Rpb24gZW50cnkgYXQgMHg0NDY0MjAuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VuYWxpZ25lZC1tZW1vcnktYWNjZXNzLnR4dCBiL0RvY3VtZW50YXRpb24vdW5hbGlnbmVkLW1lbW9yeS1hY2Nlc3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0NDVkYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3VuYWxpZ25lZC1tZW1vcnktYWNjZXNzLnR4dApAQCAtMCwwICsxLDI2MiBAQAorVU5BTElHTkVEIE1FTU9SWSBBQ0NFU1NFUworPT09PT09PT09PT09PT09PT09PT09PT09PQorCitMaW51eCBydW5zIG9uIGEgd2lkZSB2YXJpZXR5IG9mIGFyY2hpdGVjdHVyZXMgd2hpY2ggaGF2ZSB2YXJ5aW5nIGJlaGF2aW91cgord2hlbiBpdCBjb21lcyB0byBtZW1vcnkgYWNjZXNzLiBUaGlzIGRvY3VtZW50IHByZXNlbnRzIHNvbWUgZGV0YWlscyBhYm91dAordW5hbGlnbmVkIGFjY2Vzc2VzLCB3aHkgeW91IG5lZWQgdG8gd3JpdGUgY29kZSB0aGF0IGRvZXNuJ3QgY2F1c2UgdGhlbSwKK2FuZCBob3cgdG8gd3JpdGUgc3VjaCBjb2RlIQorCisKK1RoZSBkZWZpbml0aW9uIG9mIGFuIHVuYWxpZ25lZCBhY2Nlc3MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVW5hbGlnbmVkIG1lbW9yeSBhY2Nlc3NlcyBvY2N1ciB3aGVuIHlvdSB0cnkgdG8gcmVhZCBOIGJ5dGVzIG9mIGRhdGEgc3RhcnRpbmcKK2Zyb20gYW4gYWRkcmVzcyB0aGF0IGlzIG5vdCBldmVubHkgZGl2aXNpYmxlIGJ5IE4gKGkuZS4gYWRkciAlIE4gIT0gMCkuCitGb3IgZXhhbXBsZSwgcmVhZGluZyA0IGJ5dGVzIG9mIGRhdGEgZnJvbSBhZGRyZXNzIDB4MTAwMDQgaXMgZmluZSwgYnV0CityZWFkaW5nIDQgYnl0ZXMgb2YgZGF0YSBmcm9tIGFkZHJlc3MgMHgxMDAwNSB3b3VsZCBiZSBhbiB1bmFsaWduZWQgbWVtb3J5CithY2Nlc3MuCisKK1RoZSBhYm92ZSBtYXkgc2VlbSBhIGxpdHRsZSB2YWd1ZSwgYXMgbWVtb3J5IGFjY2VzcyBjYW4gaGFwcGVuIGluIGRpZmZlcmVudAord2F5cy4gVGhlIGNvbnRleHQgaGVyZSBpcyBhdCB0aGUgbWFjaGluZSBjb2RlIGxldmVsOiBjZXJ0YWluIGluc3RydWN0aW9ucyByZWFkCitvciB3cml0ZSBhIG51bWJlciBvZiBieXRlcyB0byBvciBmcm9tIG1lbW9yeSAoZS5nLiBtb3ZiLCBtb3Z3LCBtb3ZsIGluIHg4NgorYXNzZW1ibHkpLiBBcyB3aWxsIGJlY29tZSBjbGVhciwgaXQgaXMgcmVsYXRpdmVseSBlYXN5IHRvIHNwb3QgQyBzdGF0ZW1lbnRzCit3aGljaCB3aWxsIGNvbXBpbGUgdG8gbXVsdGlwbGUtYnl0ZSBtZW1vcnkgYWNjZXNzIGluc3RydWN0aW9ucywgbmFtZWx5IHdoZW4KK2RlYWxpbmcgd2l0aCB0eXBlcyBzdWNoIGFzIHUxNiwgdTMyIGFuZCB1NjQuCisKKworTmF0dXJhbCBhbGlnbm1lbnQKKz09PT09PT09PT09PT09PT09CisKK1RoZSBydWxlIG1lbnRpb25lZCBhYm92ZSBmb3JtcyB3aGF0IHdlIHJlZmVyIHRvIGFzIG5hdHVyYWwgYWxpZ25tZW50OgorV2hlbiBhY2Nlc3NpbmcgTiBieXRlcyBvZiBtZW1vcnksIHRoZSBiYXNlIG1lbW9yeSBhZGRyZXNzIG11c3QgYmUgZXZlbmx5CitkaXZpc2libGUgYnkgTiwgaS5lLiBhZGRyICUgTiA9PSAwLgorCitXaGVuIHdyaXRpbmcgY29kZSwgYXNzdW1lIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGhhcyBuYXR1cmFsIGFsaWdubWVudAorcmVxdWlyZW1lbnRzLgorCitJbiByZWFsaXR5LCBvbmx5IGEgZmV3IGFyY2hpdGVjdHVyZXMgcmVxdWlyZSBuYXR1cmFsIGFsaWdubWVudCBvbiBhbGwgc2l6ZXMKK29mIG1lbW9yeSBhY2Nlc3MuIEhvd2V2ZXIsIHdlIG11c3QgY29uc2lkZXIgQUxMIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzOword3JpdGluZyBjb2RlIHRoYXQgc2F0aXNmaWVzIG5hdHVyYWwgYWxpZ25tZW50IHJlcXVpcmVtZW50cyBpcyB0aGUgZWFzaWVzdCB3YXkKK3RvIGFjaGlldmUgZnVsbCBwb3J0YWJpbGl0eS4KKworCitXaHkgdW5hbGlnbmVkIGFjY2VzcyBpcyBiYWQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZWZmZWN0cyBvZiBwZXJmb3JtaW5nIGFuIHVuYWxpZ25lZCBtZW1vcnkgYWNjZXNzIHZhcnkgZnJvbSBhcmNoaXRlY3R1cmUKK3RvIGFyY2hpdGVjdHVyZS4gSXQgd291bGQgYmUgZWFzeSB0byB3cml0ZSBhIHdob2xlIGRvY3VtZW50IG9uIHRoZSBkaWZmZXJlbmNlcworaGVyZTsgYSBzdW1tYXJ5IG9mIHRoZSBjb21tb24gc2NlbmFyaW9zIGlzIHByZXNlbnRlZCBiZWxvdzoKKworIC0gU29tZSBhcmNoaXRlY3R1cmVzIGFyZSBhYmxlIHRvIHBlcmZvcm0gdW5hbGlnbmVkIG1lbW9yeSBhY2Nlc3NlcworICAgdHJhbnNwYXJlbnRseSwgYnV0IHRoZXJlIGlzIHVzdWFsbHkgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBjb3N0LgorIC0gU29tZSBhcmNoaXRlY3R1cmVzIHJhaXNlIHByb2Nlc3NvciBleGNlcHRpb25zIHdoZW4gdW5hbGlnbmVkIGFjY2Vzc2VzCisgICBoYXBwZW4uIFRoZSBleGNlcHRpb24gaGFuZGxlciBpcyBhYmxlIHRvIGNvcnJlY3QgdGhlIHVuYWxpZ25lZCBhY2Nlc3MsCisgICBhdCBzaWduaWZpY2FudCBjb3N0IHRvIHBlcmZvcm1hbmNlLgorIC0gU29tZSBhcmNoaXRlY3R1cmVzIHJhaXNlIHByb2Nlc3NvciBleGNlcHRpb25zIHdoZW4gdW5hbGlnbmVkIGFjY2Vzc2VzCisgICBoYXBwZW4sIGJ1dCB0aGUgZXhjZXB0aW9ucyBkbyBub3QgY29udGFpbiBlbm91Z2ggaW5mb3JtYXRpb24gZm9yIHRoZQorICAgdW5hbGlnbmVkIGFjY2VzcyB0byBiZSBjb3JyZWN0ZWQuCisgLSBTb21lIGFyY2hpdGVjdHVyZXMgYXJlIG5vdCBjYXBhYmxlIG9mIHVuYWxpZ25lZCBtZW1vcnkgYWNjZXNzLCBidXQgd2lsbAorICAgc2lsZW50bHkgcGVyZm9ybSBhIGRpZmZlcmVudCBtZW1vcnkgYWNjZXNzIHRvIHRoZSBvbmUgdGhhdCB3YXMgcmVxdWVzdGVkLAorICAgcmVzdWx0aW5nIGluIGEgc3VidGxlIGNvZGUgYnVnIHRoYXQgaXMgaGFyZCB0byBkZXRlY3QhCisKK0l0IHNob3VsZCBiZSBvYnZpb3VzIGZyb20gdGhlIGFib3ZlIHRoYXQgaWYgeW91ciBjb2RlIGNhdXNlcyB1bmFsaWduZWQKK21lbW9yeSBhY2Nlc3NlcyB0byBoYXBwZW4sIHlvdXIgY29kZSB3aWxsIG5vdCB3b3JrIGNvcnJlY3RseSBvbiBjZXJ0YWluCitwbGF0Zm9ybXMgYW5kIHdpbGwgY2F1c2UgcGVyZm9ybWFuY2UgcHJvYmxlbXMgb24gb3RoZXJzLgorCisKK0NvZGUgdGhhdCBkb2VzIG5vdCBjYXVzZSB1bmFsaWduZWQgYWNjZXNzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBdCBmaXJzdCwgdGhlIGNvbmNlcHRzIGFib3ZlIG1heSBzZWVtIGEgbGl0dGxlIGhhcmQgdG8gcmVsYXRlIHRvIGFjdHVhbAorY29kaW5nIHByYWN0aWNlLiBBZnRlciBhbGwsIHlvdSBkb24ndCBoYXZlIGEgZ3JlYXQgZGVhbCBvZiBjb250cm9sIG92ZXIKK21lbW9yeSBhZGRyZXNzZXMgb2YgY2VydGFpbiB2YXJpYWJsZXMsIGV0Yy4KKworRm9ydHVuYXRlbHkgdGhpbmdzIGFyZSBub3QgdG9vIGNvbXBsZXgsIGFzIGluIG1vc3QgY2FzZXMsIHRoZSBjb21waWxlcgorZW5zdXJlcyB0aGF0IHRoaW5ncyB3aWxsIHdvcmsgZm9yIHlvdS4gRm9yIGV4YW1wbGUsIHRha2UgdGhlIGZvbGxvd2luZworc3RydWN0dXJlOgorCisJc3RydWN0IGZvbyB7CisJCXUxNiBmaWVsZDE7CisJCXUzMiBmaWVsZDI7CisJCXU4IGZpZWxkMzsKKwl9OworCitMZXQgdXMgYXNzdW1lIHRoYXQgYW4gaW5zdGFuY2Ugb2YgdGhlIGFib3ZlIHN0cnVjdHVyZSByZXNpZGVzIGluIG1lbW9yeQorc3RhcnRpbmcgYXQgYWRkcmVzcyAweDEwMDAwLiBXaXRoIGEgYmFzaWMgbGV2ZWwgb2YgdW5kZXJzdGFuZGluZywgaXQgd291bGQKK25vdCBiZSB1bnJlYXNvbmFibGUgdG8gZXhwZWN0IHRoYXQgYWNjZXNzaW5nIGZpZWxkMiB3b3VsZCBjYXVzZSBhbiB1bmFsaWduZWQKK2FjY2Vzcy4gWW91J2QgYmUgZXhwZWN0aW5nIGZpZWxkMiB0byBiZSBsb2NhdGVkIGF0IG9mZnNldCAyIGJ5dGVzIGludG8gdGhlCitzdHJ1Y3R1cmUsIGkuZS4gYWRkcmVzcyAweDEwMDAyLCBidXQgdGhhdCBhZGRyZXNzIGlzIG5vdCBldmVubHkgZGl2aXNpYmxlCitieSA0IChyZW1lbWJlciwgd2UncmUgcmVhZGluZyBhIDQgYnl0ZSB2YWx1ZSBoZXJlKS4KKworRm9ydHVuYXRlbHksIHRoZSBjb21waWxlciB1bmRlcnN0YW5kcyB0aGUgYWxpZ25tZW50IGNvbnN0cmFpbnRzLCBzbyBpbiB0aGUKK2Fib3ZlIGNhc2UgaXQgd291bGQgaW5zZXJ0IDIgYnl0ZXMgb2YgcGFkZGluZyBpbiBiZXR3ZWVuIGZpZWxkMSBhbmQgZmllbGQyLgorVGhlcmVmb3JlLCBmb3Igc3RhbmRhcmQgc3RydWN0dXJlIHR5cGVzIHlvdSBjYW4gYWx3YXlzIHJlbHkgb24gdGhlIGNvbXBpbGVyCit0byBwYWQgc3RydWN0dXJlcyBzbyB0aGF0IGFjY2Vzc2VzIHRvIGZpZWxkcyBhcmUgc3VpdGFibHkgYWxpZ25lZCAoYXNzdW1pbmcKK3lvdSBkbyBub3QgY2FzdCB0aGUgZmllbGQgdG8gYSB0eXBlIG9mIGRpZmZlcmVudCBsZW5ndGgpLgorCitTaW1pbGFybHksIHlvdSBjYW4gYWxzbyByZWx5IG9uIHRoZSBjb21waWxlciB0byBhbGlnbiB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9uCitwYXJhbWV0ZXJzIHRvIGEgbmF0dXJhbGx5IGFsaWduZWQgc2NoZW1lLCBiYXNlZCBvbiB0aGUgc2l6ZSBvZiB0aGUgdHlwZSBvZgordGhlIHZhcmlhYmxlLgorCitBdCB0aGlzIHBvaW50LCBpdCBzaG91bGQgYmUgY2xlYXIgdGhhdCBhY2Nlc3NpbmcgYSBzaW5nbGUgYnl0ZSAodTggb3IgY2hhcikKK3dpbGwgbmV2ZXIgY2F1c2UgYW4gdW5hbGlnbmVkIGFjY2VzcywgYmVjYXVzZSBhbGwgbWVtb3J5IGFkZHJlc3NlcyBhcmUgZXZlbmx5CitkaXZpc2libGUgYnkgb25lLgorCitPbiBhIHJlbGF0ZWQgdG9waWMsIHdpdGggdGhlIGFib3ZlIGNvbnNpZGVyYXRpb25zIGluIG1pbmQgeW91IG1heSBvYnNlcnZlCit0aGF0IHlvdSBjb3VsZCByZW9yZGVyIHRoZSBmaWVsZHMgaW4gdGhlIHN0cnVjdHVyZSBpbiBvcmRlciB0byBwbGFjZSBmaWVsZHMKK3doZXJlIHBhZGRpbmcgd291bGQgb3RoZXJ3aXNlIGJlIGluc2VydGVkLCBhbmQgaGVuY2UgcmVkdWNlIHRoZSBvdmVyYWxsCityZXNpZGVudCBtZW1vcnkgc2l6ZSBvZiBzdHJ1Y3R1cmUgaW5zdGFuY2VzLiBUaGUgb3B0aW1hbCBsYXlvdXQgb2YgdGhlCithYm92ZSBleGFtcGxlIGlzOgorCisJc3RydWN0IGZvbyB7CisJCXUzMiBmaWVsZDI7CisJCXUxNiBmaWVsZDE7CisJCXU4IGZpZWxkMzsKKwl9OworCitGb3IgYSBuYXR1cmFsIGFsaWdubWVudCBzY2hlbWUsIHRoZSBjb21waWxlciB3b3VsZCBvbmx5IGhhdmUgdG8gYWRkIGEgc2luZ2xlCitieXRlIG9mIHBhZGRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgc3RydWN0dXJlLiBUaGlzIHBhZGRpbmcgaXMgYWRkZWQgaW4gb3JkZXIKK3RvIHNhdGlzZnkgYWxpZ25tZW50IGNvbnN0cmFpbnRzIGZvciBhcnJheXMgb2YgdGhlc2Ugc3RydWN0dXJlcy4KKworQW5vdGhlciBwb2ludCB3b3J0aCBtZW50aW9uaW5nIGlzIHRoZSB1c2Ugb2YgX19hdHRyaWJ1dGVfXygocGFja2VkKSkgb24gYQorc3RydWN0dXJlIHR5cGUuIFRoaXMgR0NDLXNwZWNpZmljIGF0dHJpYnV0ZSB0ZWxscyB0aGUgY29tcGlsZXIgbmV2ZXIgdG8KK2luc2VydCBhbnkgcGFkZGluZyB3aXRoaW4gc3RydWN0dXJlcywgdXNlZnVsIHdoZW4geW91IHdhbnQgdG8gdXNlIGEgQyBzdHJ1Y3QKK3RvIHJlcHJlc2VudCBzb21lIGRhdGEgdGhhdCBjb21lcyBpbiBhIGZpeGVkIGFycmFuZ2VtZW50ICdvZmYgdGhlIHdpcmUnLgorCitZb3UgbWlnaHQgYmUgaW5jbGluZWQgdG8gYmVsaWV2ZSB0aGF0IHVzYWdlIG9mIHRoaXMgYXR0cmlidXRlIGNhbiBlYXNpbHkKK2xlYWQgdG8gdW5hbGlnbmVkIGFjY2Vzc2VzIHdoZW4gYWNjZXNzaW5nIGZpZWxkcyB0aGF0IGRvIG5vdCBzYXRpc2Z5CithcmNoaXRlY3R1cmFsIGFsaWdubWVudCByZXF1aXJlbWVudHMuIEhvd2V2ZXIsIGFnYWluLCB0aGUgY29tcGlsZXIgaXMgYXdhcmUKK29mIHRoZSBhbGlnbm1lbnQgY29uc3RyYWludHMgYW5kIHdpbGwgZ2VuZXJhdGUgZXh0cmEgaW5zdHJ1Y3Rpb25zIHRvIHBlcmZvcm0KK3RoZSBtZW1vcnkgYWNjZXNzIGluIGEgd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgdW5hbGlnbmVkIGFjY2Vzcy4gT2YgY291cnNlLAordGhlIGV4dHJhIGluc3RydWN0aW9ucyBvYnZpb3VzbHkgY2F1c2UgYSBsb3NzIGluIHBlcmZvcm1hbmNlIGNvbXBhcmVkIHRvIHRoZQorbm9uLXBhY2tlZCBjYXNlLCBzbyB0aGUgcGFja2VkIGF0dHJpYnV0ZSBzaG91bGQgb25seSBiZSB1c2VkIHdoZW4gYXZvaWRpbmcKK3N0cnVjdHVyZSBwYWRkaW5nIGlzIG9mIGltcG9ydGFuY2UuCisKKworQ29kZSB0aGF0IGNhdXNlcyB1bmFsaWduZWQgYWNjZXNzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworV2l0aCB0aGUgYWJvdmUgaW4gbWluZCwgbGV0J3MgbW92ZSBvbnRvIGEgcmVhbCBsaWZlIGV4YW1wbGUgb2YgYSBmdW5jdGlvbgordGhhdCBjYW4gY2F1c2UgYW4gdW5hbGlnbmVkIG1lbW9yeSBhY2Nlc3MuIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gdGFrZW4KK2Zyb20gaW5jbHVkZS9saW51eC9ldGhlcmRldmljZS5oIGlzIGFuIG9wdGltaXplZCByb3V0aW5lIHRvIGNvbXBhcmUgdHdvCitldGhlcm5ldCBNQUMgYWRkcmVzc2VzIGZvciBlcXVhbGl0eS4KKworYm9vbCBldGhlcl9hZGRyX2VxdWFsKGNvbnN0IHU4ICphZGRyMSwgY29uc3QgdTggKmFkZHIyKQoreworI2lmZGVmIENPTkZJR19IQVZFX0VGRklDSUVOVF9VTkFMSUdORURfQUNDRVNTCisJdTMyIGZvbGQgPSAoKCooY29uc3QgdTMyICopYWRkcjEpIF4gKCooY29uc3QgdTMyICopYWRkcjIpKSB8CisJCSAgICgoKihjb25zdCB1MTYgKikoYWRkcjEgKyA0KSkgXiAoKihjb25zdCB1MTYgKikoYWRkcjIgKyA0KSkpOworCisJcmV0dXJuIGZvbGQgPT0gMDsKKyNlbHNlCisJY29uc3QgdTE2ICphID0gKGNvbnN0IHUxNiAqKWFkZHIxOworCWNvbnN0IHUxNiAqYiA9IChjb25zdCB1MTYgKilhZGRyMjsKKwlyZXR1cm4gKChhWzBdIF4gYlswXSkgfCAoYVsxXSBeIGJbMV0pIHwgKGFbMl0gXiBiWzJdKSkgIT0gMDsKKyNlbmRpZgorfQorCitJbiB0aGUgYWJvdmUgZnVuY3Rpb24sIHdoZW4gdGhlIGhhcmR3YXJlIGhhcyBlZmZpY2llbnQgdW5hbGlnbmVkIGFjY2VzcworY2FwYWJpbGl0eSwgdGhlcmUgaXMgbm8gaXNzdWUgd2l0aCB0aGlzIGNvZGUuICBCdXQgd2hlbiB0aGUgaGFyZHdhcmUgaXNuJ3QKK2FibGUgdG8gYWNjZXNzIG1lbW9yeSBvbiBhcmJpdHJhcnkgYm91bmRhcmllcywgdGhlIHJlZmVyZW5jZSB0byBhWzBdIGNhdXNlcworMiBieXRlcyAoMTYgYml0cykgdG8gYmUgcmVhZCBmcm9tIG1lbW9yeSBzdGFydGluZyBhdCBhZGRyZXNzIGFkZHIxLgorCitUaGluayBhYm91dCB3aGF0IHdvdWxkIGhhcHBlbiBpZiBhZGRyMSB3YXMgYW4gb2RkIGFkZHJlc3Mgc3VjaCBhcyAweDEwMDAzLgorKEhpbnQ6IGl0J2QgYmUgYW4gdW5hbGlnbmVkIGFjY2Vzcy4pCisKK0Rlc3BpdGUgdGhlIHBvdGVudGlhbCB1bmFsaWduZWQgYWNjZXNzIHByb2JsZW1zIHdpdGggdGhlIGFib3ZlIGZ1bmN0aW9uLCBpdAoraXMgaW5jbHVkZWQgaW4gdGhlIGtlcm5lbCBhbnl3YXkgYnV0IGlzIHVuZGVyc3Rvb2QgdG8gb25seSB3b3JrIG5vcm1hbGx5IG9uCisxNi1iaXQtYWxpZ25lZCBhZGRyZXNzZXMuIEl0IGlzIHVwIHRvIHRoZSBjYWxsZXIgdG8gZW5zdXJlIHRoaXMgYWxpZ25tZW50IG9yCitub3QgdXNlIHRoaXMgZnVuY3Rpb24gYXQgYWxsLiBUaGlzIGFsaWdubWVudC11bnNhZmUgZnVuY3Rpb24gaXMgc3RpbGwgdXNlZnVsCithcyBpdCBpcyBhIGRlY2VudCBvcHRpbWl6YXRpb24gZm9yIHRoZSBjYXNlcyB3aGVuIHlvdSBjYW4gZW5zdXJlIGFsaWdubWVudCwKK3doaWNoIGlzIHRydWUgYWxtb3N0IGFsbCBvZiB0aGUgdGltZSBpbiBldGhlcm5ldCBuZXR3b3JraW5nIGNvbnRleHQuCisKKworSGVyZSBpcyBhbm90aGVyIGV4YW1wbGUgb2Ygc29tZSBjb2RlIHRoYXQgY291bGQgY2F1c2UgdW5hbGlnbmVkIGFjY2Vzc2VzOgorCXZvaWQgbXlmdW5jKHU4ICpkYXRhLCB1MzIgdmFsdWUpCisJeworCQlbLi4uXQorCQkqKCh1MzIgKikgZGF0YSkgPSBjcHVfdG9fbGUzMih2YWx1ZSk7CisJCVsuLi5dCisJfQorCitUaGlzIGNvZGUgd2lsbCBjYXVzZSB1bmFsaWduZWQgYWNjZXNzZXMgZXZlcnkgdGltZSB0aGUgZGF0YSBwYXJhbWV0ZXIgcG9pbnRzCit0byBhbiBhZGRyZXNzIHRoYXQgaXMgbm90IGV2ZW5seSBkaXZpc2libGUgYnkgNC4KKworSW4gc3VtbWFyeSwgdGhlIDIgbWFpbiBzY2VuYXJpb3Mgd2hlcmUgeW91IG1heSBydW4gaW50byB1bmFsaWduZWQgYWNjZXNzCitwcm9ibGVtcyBpbnZvbHZlOgorIDEuIENhc3RpbmcgdmFyaWFibGVzIHRvIHR5cGVzIG9mIGRpZmZlcmVudCBsZW5ndGhzCisgMi4gUG9pbnRlciBhcml0aG1ldGljIGZvbGxvd2VkIGJ5IGFjY2VzcyB0byBhdCBsZWFzdCAyIGJ5dGVzIG9mIGRhdGEKKworCitBdm9pZGluZyB1bmFsaWduZWQgYWNjZXNzZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZWFzaWVzdCB3YXkgdG8gYXZvaWQgdW5hbGlnbmVkIGFjY2VzcyBpcyB0byB1c2UgdGhlIGdldF91bmFsaWduZWQoKSBhbmQKK3B1dF91bmFsaWduZWQoKSBtYWNyb3MgcHJvdmlkZWQgYnkgdGhlIDxhc20vdW5hbGlnbmVkLmg+IGhlYWRlciBmaWxlLgorCitHb2luZyBiYWNrIHRvIGFuIGVhcmxpZXIgZXhhbXBsZSBvZiBjb2RlIHRoYXQgcG90ZW50aWFsbHkgY2F1c2VzIHVuYWxpZ25lZAorYWNjZXNzOgorCisJdm9pZCBteWZ1bmModTggKmRhdGEsIHUzMiB2YWx1ZSkKKwl7CisJCVsuLi5dCisJCSooKHUzMiAqKSBkYXRhKSA9IGNwdV90b19sZTMyKHZhbHVlKTsKKwkJWy4uLl0KKwl9CisKK1RvIGF2b2lkIHRoZSB1bmFsaWduZWQgbWVtb3J5IGFjY2VzcywgeW91IHdvdWxkIHJld3JpdGUgaXQgYXMgZm9sbG93czoKKworCXZvaWQgbXlmdW5jKHU4ICpkYXRhLCB1MzIgdmFsdWUpCisJeworCQlbLi4uXQorCQl2YWx1ZSA9IGNwdV90b19sZTMyKHZhbHVlKTsKKwkJcHV0X3VuYWxpZ25lZCh2YWx1ZSwgKHUzMiAqKSBkYXRhKTsKKwkJWy4uLl0KKwl9CisKK1RoZSBnZXRfdW5hbGlnbmVkKCkgbWFjcm8gd29ya3Mgc2ltaWxhcmx5LiBBc3N1bWluZyAnZGF0YScgaXMgYSBwb2ludGVyIHRvCittZW1vcnkgYW5kIHlvdSB3aXNoIHRvIGF2b2lkIHVuYWxpZ25lZCBhY2Nlc3MsIGl0cyB1c2FnZSBpcyBhcyBmb2xsb3dzOgorCisJdTMyIHZhbHVlID0gZ2V0X3VuYWxpZ25lZCgodTMyICopIGRhdGEpOworCitUaGVzZSBtYWNyb3Mgd29yayBmb3IgbWVtb3J5IGFjY2Vzc2VzIG9mIGFueSBsZW5ndGggKG5vdCBqdXN0IDMyIGJpdHMgYXMKK2luIHRoZSBleGFtcGxlcyBhYm92ZSkuIEJlIGF3YXJlIHRoYXQgd2hlbiBjb21wYXJlZCB0byBzdGFuZGFyZCBhY2Nlc3Mgb2YKK2FsaWduZWQgbWVtb3J5LCB1c2luZyB0aGVzZSBtYWNyb3MgdG8gYWNjZXNzIHVuYWxpZ25lZCBtZW1vcnkgY2FuIGJlIGNvc3RseSBpbgordGVybXMgb2YgcGVyZm9ybWFuY2UuCisKK0lmIHVzZSBvZiBzdWNoIG1hY3JvcyBpcyBub3QgY29udmVuaWVudCwgYW5vdGhlciBvcHRpb24gaXMgdG8gdXNlIG1lbWNweSgpLAord2hlcmUgdGhlIHNvdXJjZSBvciBkZXN0aW5hdGlvbiAob3IgYm90aCkgYXJlIG9mIHR5cGUgdTgqIG9yIHVuc2lnbmVkIGNoYXIqLgorRHVlIHRvIHRoZSBieXRlLXdpc2UgbmF0dXJlIG9mIHRoaXMgb3BlcmF0aW9uLCB1bmFsaWduZWQgYWNjZXNzZXMgYXJlIGF2b2lkZWQuCisKKworQWxpZ25tZW50IHZzLiBOZXR3b3JraW5nCis9PT09PT09PT09PT09PT09PT09PT09PT0KKworT24gYXJjaGl0ZWN0dXJlcyB0aGF0IHJlcXVpcmUgYWxpZ25lZCBsb2FkcywgbmV0d29ya2luZyByZXF1aXJlcyB0aGF0IHRoZSBJUAoraGVhZGVyIGlzIGFsaWduZWQgb24gYSBmb3VyLWJ5dGUgYm91bmRhcnkgdG8gb3B0aW1pc2UgdGhlIElQIHN0YWNrLiBGb3IKK3JlZ3VsYXIgZXRoZXJuZXQgaGFyZHdhcmUsIHRoZSBjb25zdGFudCBORVRfSVBfQUxJR04gaXMgdXNlZC4gT24gbW9zdAorYXJjaGl0ZWN0dXJlcyB0aGlzIGNvbnN0YW50IGhhcyB0aGUgdmFsdWUgMiBiZWNhdXNlIHRoZSBub3JtYWwgZXRoZXJuZXQKK2hlYWRlciBpcyAxNCBieXRlcyBsb25nLCBzbyBpbiBvcmRlciB0byBnZXQgcHJvcGVyIGFsaWdubWVudCBvbmUgbmVlZHMgdG8KK0RNQSB0byBhbiBhZGRyZXNzIHdoaWNoIGNhbiBiZSBleHByZXNzZWQgYXMgNCpuICsgMi4gT25lIG5vdGFibGUgZXhjZXB0aW9uCitoZXJlIGlzIHBvd2VycGMgd2hpY2ggZGVmaW5lcyBORVRfSVBfQUxJR04gdG8gMCBiZWNhdXNlIERNQSB0byB1bmFsaWduZWQKK2FkZHJlc3NlcyBjYW4gYmUgdmVyeSBleHBlbnNpdmUgYW5kIGR3YXJmIHRoZSBjb3N0IG9mIHVuYWxpZ25lZCBsb2Fkcy4KKworRm9yIHNvbWUgZXRoZXJuZXQgaGFyZHdhcmUgdGhhdCBjYW5ub3QgRE1BIHRvIHVuYWxpZ25lZCBhZGRyZXNzZXMgbGlrZQorNCpuKzIgb3Igbm9uLWV0aGVybmV0IGhhcmR3YXJlLCB0aGlzIGNhbiBiZSBhIHByb2JsZW0sIGFuZCBpdCBpcyB0aGVuCityZXF1aXJlZCB0byBjb3B5IHRoZSBpbmNvbWluZyBmcmFtZSBpbnRvIGFuIGFsaWduZWQgYnVmZmVyLiBCZWNhdXNlIHRoaXMgaXMKK3VubmVjZXNzYXJ5IG9uIGFyY2hpdGVjdHVyZXMgdGhhdCBjYW4gZG8gdW5hbGlnbmVkIGFjY2Vzc2VzLCB0aGUgY29kZSBjYW4gYmUKK21hZGUgZGVwZW5kZW50IG9uIENPTkZJR19IQVZFX0VGRklDSUVOVF9VTkFMSUdORURfQUNDRVNTIGxpa2Ugc286CisKKyNpZmRlZiBDT05GSUdfSEFWRV9FRkZJQ0lFTlRfVU5BTElHTkVEX0FDQ0VTUworCXNrYiA9IG9yaWdpbmFsIHNrYgorI2Vsc2UKKwlza2IgPSBjb3B5IHNrYgorI2VuZGlmCisKKy0tCitBdXRob3JzOiBEYW5pZWwgRHJha2UgPGRzZEBnZW50b28ub3JnPiwKKyAgICAgICAgIEpvaGFubmVzIEJlcmcgPGpvaGFubmVzQHNpcHNvbHV0aW9ucy5uZXQ+CitXaXRoIGhlbHAgZnJvbTogQWxhbiBDb3gsIEF2dXRvbiBPbHJpY2gsIEhlaWtraSBPcnNpbGEsIEphbiBFbmdlbGhhcmR0LAorS3lsZSBNY01hcnRpbiwgS3lsZSBNb2ZmZXR0LCBSYW5keSBEdW5sYXAsIFJvYmVydCBIYW5jb2NrLCBVbGkgS3VuaXR6LAorVmFkaW0gTG9iYW5vdgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VuaWNvZGUudHh0IGIvRG9jdW1lbnRhdGlvbi91bmljb2RlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTMzZjgxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi91bmljb2RlLnR4dApAQCAtMCwwICsxLDE3NSBAQAorCQkgTGFzdCB1cGRhdGU6IDIwMDUtMDEtMTcsIHZlcnNpb24gMS40CisKK1RoaXMgZmlsZSBpcyBtYWludGFpbmVkIGJ5IEguIFBldGVyIEFudmluIDx1bmljb2RlQGxhbmFuYS5vcmc+IGFzIHBhcnQKK29mIHRoZSBMaW51eCBBc3NpZ25lZCBOYW1lcyBBbmQgTnVtYmVycyBBdXRob3JpdHkgKExBTkFOQSkgcHJvamVjdC4KK1RoZSBjdXJyZW50IHZlcnNpb24gY2FuIGJlIGZvdW5kIGF0OgorCisJICAgIGh0dHA6Ly93d3cubGFuYW5hLm9yZy9kb2NzL3VuaWNvZGUvdW5pY29kZS50eHQKKworCQkgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBMaW51eCBrZXJuZWwgY29kZSBoYXMgYmVlbiByZXdyaXR0ZW4gdG8gdXNlIFVuaWNvZGUgdG8gbWFwCitjaGFyYWN0ZXJzIHRvIGZvbnRzLiAgQnkgZG93bmxvYWRpbmcgYSBzaW5nbGUgVW5pY29kZS10by1mb250IHRhYmxlLAorYm90aCB0aGUgZWlnaHQtYml0IGNoYXJhY3RlciBzZXRzIGFuZCBVVEYtOCBtb2RlIGFyZSBjaGFuZ2VkIHRvIHVzZQordGhlIGZvbnQgYXMgaW5kaWNhdGVkLgorCitUaGlzIGNoYW5nZXMgdGhlIHNlbWFudGljcyBvZiB0aGUgZWlnaHQtYml0IGNoYXJhY3RlciB0YWJsZXMgc3VidGx5LgorVGhlIGZvdXIgY2hhcmFjdGVyIHRhYmxlcyBhcmUgbm93OgorCitNYXAgc3ltYm9sCU1hcCBuYW1lCQkJRXNjYXBlIGNvZGUgKEcwKQorCitMQVQxX01BUAlMYXRpbi0xIChJU08gODg1OS0xKQkJRVNDICggQgorR1JBRl9NQVAJREVDIFZUMTAwIHBzZXVkb2dyYXBoaWNzCUVTQyAoIDAKK0lCTVBDX01BUAlJQk0gY29kZSBwYWdlIDQzNwkJRVNDICggVQorVVNFUl9NQVAJVXNlciBkZWZpbmVkCQkJRVNDICggSworCitJbiBwYXJ0aWN1bGFyLCBFU0MgKCBVIGlzIG5vIGxvbmdlciAic3RyYWlnaHQgdG8gZm9udCIsIHNpbmNlIHRoZSBmb250CittaWdodCBiZSBjb21wbGV0ZWx5IGRpZmZlcmVudCB0aGFuIHRoZSBJQk0gY2hhcmFjdGVyIHNldC4gIFRoaXMKK3Blcm1pdHMgZm9yIGV4YW1wbGUgdGhlIHVzZSBvZiBibG9jayBncmFwaGljcyBldmVuIHdpdGggYSBMYXRpbi0xIGZvbnQKK2xvYWRlZC4KKworTm90ZSB0aGF0IGFsdGhvdWdoIHRoZXNlIGNvZGVzIGFyZSBzaW1pbGFyIHRvIElTTyAyMDIyLCBuZWl0aGVyIHRoZQorY29kZXMgbm9yIHRoZWlyIHVzZXMgbWF0Y2ggSVNPIDIwMjI7IExpbnV4IGhhcyB0d28gOC1iaXQgY29kZXMgKEcwIGFuZAorRzEpLCB3aGVyZWFzIElTTyAyMDIyIGhhcyBmb3VyIDctYml0IGNvZGVzIChHMC1HMykuCisKK0luIGFjY29yZGFuY2Ugd2l0aCB0aGUgVW5pY29kZSBzdGFuZGFyZC9JU08gMTA2NDYgdGhlIHJhbmdlIFUrRjAwMCB0bworVStGOEZGIGhhcyBiZWVuIHJlc2VydmVkIGZvciBPUy13aWRlIGFsbG9jYXRpb24gKHRoZSBVbmljb2RlIFN0YW5kYXJkCityZWZlcnMgdG8gdGhpcyBhcyBhICJDb3Jwb3JhdGUgWm9uZSIsIHNpbmNlIHRoaXMgaXMgaW5hY2N1cmF0ZSBmb3IKK0xpbnV4IHdlIGNhbGwgaXQgdGhlICJMaW51eCBab25lIikuICBVK0YwMDAgd2FzIHBpY2tlZCBhcyB0aGUgc3RhcnRpbmcKK3BvaW50IHNpbmNlIGl0IGxldHMgdGhlIGRpcmVjdC1tYXBwaW5nIGFyZWEgc3RhcnQgb24gYSBsYXJnZSBwb3dlciBvZgordHdvIChpbiBjYXNlIDEwMjQtIG9yIDIwNDgtY2hhcmFjdGVyIGZvbnRzIGV2ZXIgYmVjb21lIG5lY2Vzc2FyeSkuCitUaGlzIGxlYXZlcyBVK0UwMDAgdG8gVStFRkZGIGFzIEVuZCBVc2VyIFpvbmUuCisKK1t2MS4yXTogVGhlIFVuaWNvZGVzIHJhbmdlIGZyb20gVStGMDAwIGFuZCB1cCB0byBVK0Y3RkYgaGF2ZSBiZWVuCitoYXJkLWNvZGVkIHRvIG1hcCBkaXJlY3RseSB0byB0aGUgbG9hZGVkIGZvbnQsIGJ5cGFzc2luZyB0aGUKK3RyYW5zbGF0aW9uIHRhYmxlLiAgVGhlIHVzZXItZGVmaW5lZCBtYXAgbm93IGRlZmF1bHRzIHRvIFUrRjAwMCB0bworVStGMEZGLCBlbXVsYXRpbmcgdGhlIHByZXZpb3VzIGJlaGF2aW91ci4gIEluIHByYWN0aWNlLCB0aGlzIHJhbmdlCittaWdodCBiZSBzaG9ydGVyOyBmb3IgZXhhbXBsZSwgdmdhY29uIGNhbiBvbmx5IGhhbmRsZSAyNTYtY2hhcmFjdGVyCisoVStGMDAwLi5VK0YwRkYpIG9yIDUxMi1jaGFyYWN0ZXIgKFUrRjAwMC4uVStGMUZGKSBmb250cy4KKworCitBY3R1YWwgY2hhcmFjdGVycyBhc3NpZ25lZCBpbiB0aGUgTGludXggWm9uZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW4gYWRkaXRpb24sIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVycyBub3QgcHJlc2VudCBpbiBVbmljb2RlIDEuMS40CitoYXZlIGJlZW4gZGVmaW5lZDsgdGhlc2UgYXJlIHVzZWQgYnkgdGhlIERFQyBWVCBncmFwaGljcyBtYXAuICBbdjEuMl0KK1RISVMgVVNFIElTIE9CU09MRVRFIEFORCBTSE9VTEQgTk8gTE9OR0VSIEJFIFVTRUQ7IFBMRUFTRSBTRUUgQkVMT1cuCisKK1UrRjgwMCBERUMgVlQgR1JBUEhJQ1MgSE9SSVpPTlRBTCBMSU5FIFNDQU4gMQorVStGODAxIERFQyBWVCBHUkFQSElDUyBIT1JJWk9OVEFMIExJTkUgU0NBTiAzCitVK0Y4MDMgREVDIFZUIEdSQVBISUNTIEhPUklaT05UQUwgTElORSBTQ0FOIDcKK1UrRjgwNCBERUMgVlQgR1JBUEhJQ1MgSE9SSVpPTlRBTCBMSU5FIFNDQU4gOQorCitUaGUgREVDIFZUMjIwIHVzZXMgYSA2eDEwIGNoYXJhY3RlciBtYXRyaXgsIGFuZCB0aGVzZSBjaGFyYWN0ZXJzIGZvcm0KK2Egc21vb3RoIHByb2dyZXNzaW9uIGluIHRoZSBERUMgVlQgZ3JhcGhpY3MgY2hhcmFjdGVyIHNldC4gIEkgaGF2ZQorb21pdHRlZCB0aGUgc2NhbiA1IGxpbmUsIHNpbmNlIGl0IGlzIGFsc28gdXNlZCBhcyBhIGJsb2NrLWdyYXBoaWNzCitjaGFyYWN0ZXIsIGFuZCBoZW5jZSBoYXMgYmVlbiBjb2RlZCBhcyBVKzI1MDAgRk9STVMgTElHSFQgSE9SSVpPTlRBTC4KKworW3YxLjNdOiBUaGVzZSBjaGFyYWN0ZXJzIGhhdmUgYmVlbiBvZmZpY2lhbGx5IGFkZGVkIHRvIFVuaWNvZGUgMy4yLjA7Cit0aGV5IGFyZSBhZGRlZCBhdCBVKzIzQkEsIFUrMjNCQiwgVSsyM0JDLCBVKzIzQkQuICBMaW51eCBub3cgdXNlcyB0aGUKK25ldyB2YWx1ZXMuCisKK1t2MS4yXTogVGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzIGhhdmUgYmVlbiBhZGRlZCB0byByZXByZXNlbnQgY29tbW9uCitrZXlib2FyZCBzeW1ib2xzIHRoYXQgYXJlIHVubGlrZWx5IHRvIGV2ZXIgYmUgYWRkZWQgdG8gVW5pY29kZSBwcm9wZXIKK3NpbmNlIHRoZXkgYXJlIGhvcnJpYmx5IHZlbmRvci1zcGVjaWZpYy4gIFRoaXMsIG9mIGNvdXJzZSwgaXMgYW4KK2V4Y2VsbGVudCBleGFtcGxlIG9mIGhvcnJpYmxlIGRlc2lnbi4KKworVStGODEwIEtFWUJPQVJEIFNZTUJPTCBGTFlJTkcgRkxBRworVStGODExIEtFWUJPQVJEIFNZTUJPTCBQVUxMRE9XTiBNRU5VCitVK0Y4MTIgS0VZQk9BUkQgU1lNQk9MIE9QRU4gQVBQTEUKK1UrRjgxMyBLRVlCT0FSRCBTWU1CT0wgU09MSUQgQVBQTEUKKworS2xpbmdvbiBsYW5ndWFnZSBzdXBwb3J0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW4gMTk5NiwgTGludXggd2FzIHRoZSBmaXJzdCBvcGVyYXRpbmcgc3lzdGVtIGluIHRoZSB3b3JsZCB0byBhZGQKK3N1cHBvcnQgZm9yIHRoZSBhcnRpZmljaWFsIGxhbmd1YWdlIEtsaW5nb24sIGNyZWF0ZWQgYnkgTWFyYyBPa3JhbmQKK2ZvciB0aGUgIlN0YXIgVHJlayIgdGVsZXZpc2lvbiBzZXJpZXMuCVRoaXMgZW5jb2Rpbmcgd2FzIGxhdGVyCithZG9wdGVkIGJ5IHRoZSBDb25TY3JpcHQgVW5pY29kZSBSZWdpc3RyeSBhbmQgcHJvcG9zZWQgKGJ1dCB1bHRpbWF0ZWx5CityZWplY3RlZCkgZm9yIGluY2x1c2lvbiBpbiBVbmljb2RlIFBsYW5lIDEuICBUaHVzLCBpdCByZW1haW5zIGFzIGEKK0xpbnV4L0NTVVIgcHJpdmF0ZSBhc3NpZ25tZW50IGluIHRoZSBMaW51eCBab25lLgorCitUaGlzIGVuY29kaW5nIGhhcyBiZWVuIGVuZG9yc2VkIGJ5IHRoZSBLbGluZ29uIExhbmd1YWdlIEluc3RpdHV0ZS4KK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBjb250YWN0IHRoZW0gYXQ6CisKKwlodHRwOi8vd3d3LmtsaS5vcmcvCisKK1NpbmNlIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBiZWdpbm5pbmcgb2YgdGhlIExpbnV4IENaIGhhdmUgYmVlbiBtb3JlCitvZiB0aGUgZGluZ2JhdHMvc3ltYm9scy9mb3JtcyB0eXBlIGFuZCB0aGlzIGlzIGEgbGFuZ3VhZ2UsIEkgaGF2ZQorbG9jYXRlZCBpdCBhdCB0aGUgZW5kLCBvbiBhIDE2LWNlbGwgYm91bmRhcnkgaW4ga2VlcGluZyB3aXRoIHN0YW5kYXJkCitVbmljb2RlIHByYWN0aWNlLgorCitOT1RFOiBUaGlzIHJhbmdlIGlzIG5vdyBvZmZpY2lhbGx5IG1hbmFnZWQgYnkgdGhlIENvblNjcmlwdCBVbmljb2RlCitSZWdpc3RyeS4gIFRoZSBub3JtYXRpdmUgcmVmZXJlbmNlIGlzIGF0OgorCisJaHR0cDovL3d3dy5ldmVydHlwZS5jb20vc3RhbmRhcmRzL2NzdXIva2xpbmdvbi5odG1sCisKK0tsaW5nb24gaGFzIGFuIGFscGhhYmV0IG9mIDI2IGNoYXJhY3RlcnMsIGEgcG9zaXRpb25hbCBudW1lcmljIHdyaXRpbmcKK3N5c3RlbSB3aXRoIDEwIGRpZ2l0cywgYW5kIGlzIHdyaXR0ZW4gbGVmdC10by1yaWdodCwgdG9wLXRvLWJvdHRvbS4KKworU2V2ZXJhbCBnbHlwaCBmb3JtcyBmb3IgdGhlIEtsaW5nb24gYWxwaGFiZXQgaGF2ZSBiZWVuIHByb3Bvc2VkLgorSG93ZXZlciwgc2luY2UgdGhlIHNldCBvZiBzeW1ib2xzIGFwcGVhciB0byBiZSBjb25zaXN0ZW50IHRocm91Z2hvdXQsCit3aXRoIG9ubHkgdGhlIGFjdHVhbCBzaGFwZXMgYmVpbmcgZGlmZmVyZW50LCBpbiBrZWVwaW5nIHdpdGggc3RhbmRhcmQKK1VuaWNvZGUgcHJhY3RpY2UgdGhlc2UgZGlmZmVyZW5jZXMgYXJlIGNvbnNpZGVyZWQgZm9udCB2YXJpYW50cy4KKworVStGOEQwCUtMSU5HT04gTEVUVEVSIEEKK1UrRjhEMQlLTElOR09OIExFVFRFUiBCCitVK0Y4RDIJS0xJTkdPTiBMRVRURVIgQ0gKK1UrRjhEMwlLTElOR09OIExFVFRFUiBECitVK0Y4RDQJS0xJTkdPTiBMRVRURVIgRQorVStGOEQ1CUtMSU5HT04gTEVUVEVSIEdICitVK0Y4RDYJS0xJTkdPTiBMRVRURVIgSAorVStGOEQ3CUtMSU5HT04gTEVUVEVSIEkKK1UrRjhEOAlLTElOR09OIExFVFRFUiBKCitVK0Y4RDkJS0xJTkdPTiBMRVRURVIgTAorVStGOERBCUtMSU5HT04gTEVUVEVSIE0KK1UrRjhEQglLTElOR09OIExFVFRFUiBOCitVK0Y4REMJS0xJTkdPTiBMRVRURVIgTkcKK1UrRjhERAlLTElOR09OIExFVFRFUiBPCitVK0Y4REUJS0xJTkdPTiBMRVRURVIgUAorVStGOERGCUtMSU5HT04gTEVUVEVSIFEKKwktIFdyaXR0ZW4gPHE+IGluIHN0YW5kYXJkIE9rcmFuZCBMYXRpbiB0cmFuc2xpdGVyYXRpb24KK1UrRjhFMAlLTElOR09OIExFVFRFUiBRSAorCS0gV3JpdHRlbiA8UT4gaW4gc3RhbmRhcmQgT2tyYW5kIExhdGluIHRyYW5zbGl0ZXJhdGlvbgorVStGOEUxCUtMSU5HT04gTEVUVEVSIFIKK1UrRjhFMglLTElOR09OIExFVFRFUiBTCitVK0Y4RTMJS0xJTkdPTiBMRVRURVIgVAorVStGOEU0CUtMSU5HT04gTEVUVEVSIFRMSAorVStGOEU1CUtMSU5HT04gTEVUVEVSIFUKK1UrRjhFNglLTElOR09OIExFVFRFUiBWCitVK0Y4RTcJS0xJTkdPTiBMRVRURVIgVworVStGOEU4CUtMSU5HT04gTEVUVEVSIFkKK1UrRjhFOQlLTElOR09OIExFVFRFUiBHTE9UVEFMIFNUT1AKKworVStGOEYwCUtMSU5HT04gRElHSVQgWkVSTworVStGOEYxCUtMSU5HT04gRElHSVQgT05FCitVK0Y4RjIJS0xJTkdPTiBESUdJVCBUV08KK1UrRjhGMwlLTElOR09OIERJR0lUIFRIUkVFCitVK0Y4RjQJS0xJTkdPTiBESUdJVCBGT1VSCitVK0Y4RjUJS0xJTkdPTiBESUdJVCBGSVZFCitVK0Y4RjYJS0xJTkdPTiBESUdJVCBTSVgKK1UrRjhGNwlLTElOR09OIERJR0lUIFNFVkVOCitVK0Y4RjgJS0xJTkdPTiBESUdJVCBFSUdIVAorVStGOEY5CUtMSU5HT04gRElHSVQgTklORQorCitVK0Y4RkQJS0xJTkdPTiBDT01NQQorVStGOEZFCUtMSU5HT04gRlVMTCBTVE9QCitVK0Y4RkYJS0xJTkdPTiBTWU1CT0wgRk9SIEVNUElSRQorCitPdGhlciBGaWN0aW9uYWwgYW5kIEFydGlmaWNpYWwgU2NyaXB0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU2luY2UgdGhlIGFzc2lnbm1lbnQgb2YgdGhlIEtsaW5nb24gTGludXggVW5pY29kZSBibG9jaywgYSByZWdpc3RyeSBvZgorZmljdGlvbmFsIGFuZCBhcnRpZmljaWFsIHNjcmlwdHMgaGFzIGJlZW4gZXN0YWJsaXNoZWQgYnkgSm9obiBDb3dhbgorPGpjb3dhbkByZXV0ZXJzaGVhbHRoLmNvbT4gYW5kIE1pY2hhZWwgRXZlcnNvbiA8ZXZlcnNvbkBldmVydHlwZS5jb20+LgorVGhlIENvblNjcmlwdCBVbmljb2RlIFJlZ2lzdHJ5IGlzIGFjY2Vzc2libGUgYXQ6CisKKwkgIGh0dHA6Ly93d3cuZXZlcnR5cGUuY29tL3N0YW5kYXJkcy9jc3VyLworCitUaGUgcmFuZ2VzIHVzZWQgZmFsbCBhdCB0aGUgbG93IGVuZCBvZiB0aGUgRW5kIFVzZXIgWm9uZSBhbmQgY2FuIGhlbmNlCitub3QgYmUgbm9ybWF0aXZlbHkgYXNzaWduZWQsIGJ1dCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHBlb3BsZSB3aG8KK3dpc2ggdG8gZW5jb2RlIGZpY3Rpb25hbCBzY3JpcHRzIHVzZSB0aGVzZSBjb2RlcywgaW4gdGhlIGludGVyZXN0IG9mCitpbnRlcm9wZXJhYmlsaXR5LiAgRm9yIEtsaW5nb24sIENTVVIgaGFzIGFkb3B0ZWQgdGhlIExpbnV4IGVuY29kaW5nLgorVGhlIENTVVIgcGVvcGxlIGFyZSBkcml2aW5nIGFkZGluZyBUZW5nd2FyIGFuZCBDaXJ0aCBpbnRvIFVuaWNvZGUKK1BsYW5lIDE7IHRoZSBhZGRpdGlvbiBvZiBLbGluZ29uIHRvIFVuaWNvZGUgUGxhbmUgMSBoYXMgYmVlbiByZWplY3RlZAorYW5kIHNvIHRoZSBhYm92ZSBlbmNvZGluZyByZW1haW5zIG9mZmljaWFsLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi91bnNoYXJlLnR4dCBiL0RvY3VtZW50YXRpb24vdW5zaGFyZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2NDM1MQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdW5zaGFyZS50eHQKQEAgLTAsMCArMSwyOTUgQEAKKwordW5zaGFyZSBzeXN0ZW0gY2FsbDoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgbmV3IHN5c3RlbSBjYWxsLCB1bnNoYXJlLiBUaGUgZG9jdW1lbnQKK3Byb3ZpZGVzIGFuIG92ZXJ2aWV3IG9mIHRoZSBmZWF0dXJlLCB3aHkgaXQgaXMgbmVlZGVkLCBob3cgaXQgY2FuCitiZSB1c2VkLCBpdHMgaW50ZXJmYWNlIHNwZWNpZmljYXRpb24sIGRlc2lnbiwgaW1wbGVtZW50YXRpb24gYW5kCitob3cgaXQgY2FuIGJlIHRlc3RlZC4KKworQ2hhbmdlIExvZzoKKy0tLS0tLS0tLS0tCit2ZXJzaW9uIDAuMSAgSW5pdGlhbCBkb2N1bWVudCwgSmFuYWsgRGVzYWkgKGphbmFrQHVzLmlibS5jb20pLCBKYW4gMTEsIDIwMDYKKworQ29udGVudHM6CistLS0tLS0tLS0KKwkxKSBPdmVydmlldworCTIpIEJlbmVmaXRzCisJMykgQ29zdAorCTQpIFJlcXVpcmVtZW50cworCTUpIEZ1bmN0aW9uYWwgU3BlY2lmaWNhdGlvbgorCTYpIEhpZ2ggTGV2ZWwgRGVzaWduCisJNykgTG93IExldmVsIERlc2lnbgorCTgpIFRlc3QgU3BlY2lmaWNhdGlvbgorCTkpIEZ1dHVyZSBXb3JrCisKKzEpIE92ZXJ2aWV3CistLS0tLS0tLS0tLQorTW9zdCBsZWdhY3kgb3BlcmF0aW5nIHN5c3RlbSBrZXJuZWxzIHN1cHBvcnQgYW4gYWJzdHJhY3Rpb24gb2YgdGhyZWFkcworYXMgbXVsdGlwbGUgZXhlY3V0aW9uIGNvbnRleHRzIHdpdGhpbiBhIHByb2Nlc3MuIFRoZXNlIGtlcm5lbHMgcHJvdmlkZQorc3BlY2lhbCByZXNvdXJjZXMgYW5kIG1lY2hhbmlzbXMgdG8gbWFpbnRhaW4gdGhlc2UgInRocmVhZHMiLiBUaGUgTGludXgKK2tlcm5lbCwgaW4gYSBjbGV2ZXIgYW5kIHNpbXBsZSBtYW5uZXIsIGRvZXMgbm90IG1ha2UgZGlzdGluY3Rpb24KK2JldHdlZW4gcHJvY2Vzc2VzIGFuZCAidGhyZWFkcyIuIFRoZSBrZXJuZWwgYWxsb3dzIHByb2Nlc3NlcyB0byBzaGFyZQorcmVzb3VyY2VzIGFuZCB0aHVzIHRoZXkgY2FuIGFjaGlldmUgbGVnYWN5ICJ0aHJlYWRzIiBiZWhhdmlvciB3aXRob3V0CityZXF1aXJpbmcgYWRkaXRpb25hbCBkYXRhIHN0cnVjdHVyZXMgYW5kIG1lY2hhbmlzbXMgaW4gdGhlIGtlcm5lbC4gVGhlCitwb3dlciBvZiBpbXBsZW1lbnRpbmcgdGhyZWFkcyBpbiB0aGlzIG1hbm5lciBjb21lcyBub3Qgb25seSBmcm9tCitpdHMgc2ltcGxpY2l0eSBidXQgYWxzbyBmcm9tIGFsbG93aW5nIGFwcGxpY2F0aW9uIHByb2dyYW1tZXJzIHRvIHdvcmsKK291dHNpZGUgdGhlIGNvbmZpbmVtZW50IG9mIGFsbC1vci1ub3RoaW5nIHNoYXJlZCByZXNvdXJjZXMgb2YgbGVnYWN5Cit0aHJlYWRzLiBPbiBMaW51eCwgYXQgdGhlIHRpbWUgb2YgdGhyZWFkIGNyZWF0aW9uIHVzaW5nIHRoZSBjbG9uZSBzeXN0ZW0KK2NhbGwsIGFwcGxpY2F0aW9ucyBjYW4gc2VsZWN0aXZlbHkgY2hvb3NlIHdoaWNoIHJlc291cmNlcyB0byBzaGFyZQorYmV0d2VlbiB0aHJlYWRzLgorCit1bnNoYXJlIHN5c3RlbSBjYWxsIGFkZHMgYSBwcmltaXRpdmUgdG8gdGhlIExpbnV4IHRocmVhZCBtb2RlbCB0aGF0CithbGxvd3MgdGhyZWFkcyB0byBzZWxlY3RpdmVseSAndW5zaGFyZScgYW55IHJlc291cmNlcyB0aGF0IHdlcmUgYmVpbmcKK3NoYXJlZCBhdCB0aGUgdGltZSBvZiB0aGVpciBjcmVhdGlvbi4gdW5zaGFyZSB3YXMgY29uY2VwdHVhbGl6ZWQgYnkKK0FsIFZpcm8gaW4gdGhlIEF1Z3VzdCBvZiAyMDAwLCBvbiB0aGUgTGludXgtS2VybmVsIG1haWxpbmcgbGlzdCwgYXMgcGFydAorb2YgdGhlIGRpc2N1c3Npb24gb24gUE9TSVggdGhyZWFkcyBvbiBMaW51eC4gIHVuc2hhcmUgYXVnbWVudHMgdGhlCit1c2VmdWxuZXNzIG9mIExpbnV4IHRocmVhZHMgZm9yIGFwcGxpY2F0aW9ucyB0aGF0IHdvdWxkIGxpa2UgdG8gY29udHJvbAorc2hhcmVkIHJlc291cmNlcyB3aXRob3V0IGNyZWF0aW5nIGEgbmV3IHByb2Nlc3MuIHVuc2hhcmUgaXMgYSBuYXR1cmFsCithZGRpdGlvbiB0byB0aGUgc2V0IG9mIGF2YWlsYWJsZSBwcmltaXRpdmVzIG9uIExpbnV4IHRoYXQgaW1wbGVtZW50Cit0aGUgY29uY2VwdCBvZiBwcm9jZXNzL3RocmVhZCBhcyBhIHZpcnR1YWwgbWFjaGluZS4KKworMikgQmVuZWZpdHMKKy0tLS0tLS0tLS0tCit1bnNoYXJlIHdvdWxkIGJlIHVzZWZ1bCB0byBsYXJnZSBhcHBsaWNhdGlvbiBmcmFtZXdvcmtzIHN1Y2ggYXMgUEFNCit3aGVyZSBjcmVhdGluZyBhIG5ldyBwcm9jZXNzIHRvIGNvbnRyb2wgc2hhcmluZy91bnNoYXJpbmcgb2YgcHJvY2VzcworcmVzb3VyY2VzIGlzIG5vdCBwb3NzaWJsZS4gU2luY2UgbmFtZXNwYWNlcyBhcmUgc2hhcmVkIGJ5IGRlZmF1bHQKK3doZW4gY3JlYXRpbmcgYSBuZXcgcHJvY2VzcyB1c2luZyBmb3JrIG9yIGNsb25lLCB1bnNoYXJlIGNhbiBiZW5lZml0CitldmVuIG5vbi10aHJlYWRlZCBhcHBsaWNhdGlvbnMgaWYgdGhleSBoYXZlIGEgbmVlZCB0byBkaXNhc3NvY2lhdGUKK2Zyb20gZGVmYXVsdCBzaGFyZWQgbmFtZXNwYWNlLiBUaGUgZm9sbG93aW5nIGxpc3RzIHR3byB1c2UtY2FzZXMKK3doZXJlIHVuc2hhcmUgY2FuIGJlIHVzZWQuCisKKzIuMSBQZXItc2VjdXJpdHkgY29udGV4dCBuYW1lc3BhY2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordW5zaGFyZSBjYW4gYmUgdXNlZCB0byBpbXBsZW1lbnQgcG9seWluc3RhbnRpYXRlZCBkaXJlY3RvcmllcyB1c2luZwordGhlIGtlcm5lbCdzIHBlci1wcm9jZXNzIG5hbWVzcGFjZSBtZWNoYW5pc20uIFBvbHlpbnN0YW50aWF0ZWQgZGlyZWN0b3JpZXMsCitzdWNoIGFzIHBlci11c2VyIGFuZC9vciBwZXItc2VjdXJpdHkgY29udGV4dCBpbnN0YW5jZSBvZiAvdG1wLCAvdmFyL3RtcCBvcgorcGVyLXNlY3VyaXR5IGNvbnRleHQgaW5zdGFuY2Ugb2YgYSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnksIGlzb2xhdGUgdXNlcgorcHJvY2Vzc2VzIHdoZW4gd29ya2luZyB3aXRoIHRoZXNlIGRpcmVjdG9yaWVzLiBVc2luZyB1bnNoYXJlLCBhIFBBTQorbW9kdWxlIGNhbiBlYXNpbHkgc2V0dXAgYSBwcml2YXRlIG5hbWVzcGFjZSBmb3IgYSB1c2VyIGF0IGxvZ2luLgorUG9seWluc3RhbnRpYXRlZCBkaXJlY3RvcmllcyBhcmUgcmVxdWlyZWQgZm9yIENvbW1vbiBDcml0ZXJpYSBjZXJ0aWZpY2F0aW9uCit3aXRoIExhYmVsZWQgU3lzdGVtIFByb3RlY3Rpb24gUHJvZmlsZSwgaG93ZXZlciwgd2l0aCB0aGUgYXZhaWxhYmlsaXR5CitvZiBzaGFyZWQtdHJlZSBmZWF0dXJlIGluIHRoZSBMaW51eCBrZXJuZWwsIGV2ZW4gcmVndWxhciBMaW51eCBzeXN0ZW1zCitjYW4gYmVuZWZpdCBmcm9tIHNldHRpbmcgdXAgcHJpdmF0ZSBuYW1lc3BhY2VzIGF0IGxvZ2luIGFuZAorcG9seWluc3RhbnRpYXRpbmcgL3RtcCwgL3Zhci90bXAgYW5kIG90aGVyIGRpcmVjdG9yaWVzIGRlZW1lZAorYXBwcm9wcmlhdGUgYnkgc3lzdGVtIGFkbWluaXN0cmF0b3JzLgorCisyLjIgdW5zaGFyaW5nIG9mIHZpcnR1YWwgbWVtb3J5IGFuZC9vciBvcGVuIGZpbGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitDb25zaWRlciBhIGNsaWVudC9zZXJ2ZXIgYXBwbGljYXRpb24gd2hlcmUgdGhlIHNlcnZlciBpcyBwcm9jZXNzaW5nCitjbGllbnQgcmVxdWVzdHMgYnkgY3JlYXRpbmcgcHJvY2Vzc2VzIHRoYXQgc2hhcmUgcmVzb3VyY2VzIHN1Y2ggYXMKK3ZpcnR1YWwgbWVtb3J5IGFuZCBvcGVuIGZpbGVzLiBXaXRob3V0IHVuc2hhcmUsIHRoZSBzZXJ2ZXIgaGFzIHRvCitkZWNpZGUgd2hhdCBuZWVkcyB0byBiZSBzaGFyZWQgYXQgdGhlIHRpbWUgb2YgY3JlYXRpbmcgdGhlIHByb2Nlc3MKK3doaWNoIHNlcnZpY2VzIHRoZSByZXF1ZXN0LiB1bnNoYXJlIGFsbG93cyB0aGUgc2VydmVyIGFuIGFiaWxpdHkgdG8KK2Rpc2Fzc29jaWF0ZSBwYXJ0cyBvZiB0aGUgY29udGV4dCBkdXJpbmcgdGhlIHNlcnZpY2luZyBvZiB0aGUKK3JlcXVlc3QuIEZvciBsYXJnZSBhbmQgY29tcGxleCBtaWRkbGV3YXJlIGFwcGxpY2F0aW9uIGZyYW1ld29ya3MsIHRoaXMKK2FiaWxpdHkgdG8gdW5zaGFyZSBhZnRlciB0aGUgcHJvY2VzcyB3YXMgY3JlYXRlZCBjYW4gYmUgdmVyeQordXNlZnVsLgorCiszKSBDb3N0CistLS0tLS0tCitJbiBvcmRlciB0byBub3QgZHVwbGljYXRlIGNvZGUgYW5kIHRvIGhhbmRsZSB0aGUgZmFjdCB0aGF0IHVuc2hhcmUKK3dvcmtzIG9uIGFuIGFjdGl2ZSB0YXNrIChhcyBvcHBvc2VkIHRvIGNsb25lL2Zvcmsgd29ya2luZyBvbiBhIG5ld2x5CithbGxvY2F0ZWQgaW5hY3RpdmUgdGFzaykgdW5zaGFyZSBoYWQgdG8gbWFrZSBtaW5vciByZW9yZ2FuaXphdGlvbmFsCitjaGFuZ2VzIHRvIGNvcHlfKiBmdW5jdGlvbnMgdXRpbGl6ZWQgYnkgY2xvbmUvZm9yayBzeXN0ZW0gY2FsbC4KK1RoZXJlIGlzIGEgY29zdCBhc3NvY2lhdGVkIHdpdGggYWx0ZXJpbmcgZXhpc3RpbmcsIHdlbGwgdGVzdGVkIGFuZAorc3RhYmxlIGNvZGUgdG8gaW1wbGVtZW50IGEgbmV3IGZlYXR1cmUgdGhhdCBtYXkgbm90IGdldCBleGVyY2lzZWQKK2V4dGVuc2l2ZWx5IGluIHRoZSBiZWdpbm5pbmcuIEhvd2V2ZXIsIHdpdGggcHJvcGVyIGRlc2lnbiBhbmQgY29kZQorcmV2aWV3IG9mIHRoZSBjaGFuZ2VzIGFuZCBjcmVhdGlvbiBvZiBhbiB1bnNoYXJlIHRlc3QgZm9yIHRoZSBMVFAKK3RoZSBiZW5lZml0cyBvZiB0aGlzIG5ldyBmZWF0dXJlIGNhbiBleGNlZWQgaXRzIGNvc3QuCisKKzQpIFJlcXVpcmVtZW50cworLS0tLS0tLS0tLS0tLS0tCit1bnNoYXJlIHJldmVyc2VzIHNoYXJpbmcgdGhhdCB3YXMgZG9uZSB1c2luZyBjbG9uZSgyKSBzeXN0ZW0gY2FsbCwKK3NvIHVuc2hhcmUgc2hvdWxkIGhhdmUgYSBzaW1pbGFyIGludGVyZmFjZSBhcyBjbG9uZSgyKS4gVGhhdCBpcywKK3NpbmNlIGZsYWdzIGluIGNsb25lKGludCBmbGFncywgdm9pZCAqc3RhY2spIHNwZWNpZmllcyB3aGF0IHNob3VsZAorYmUgc2hhcmVkLCBzaW1pbGFyIGZsYWdzIGluIHVuc2hhcmUoaW50IGZsYWdzKSBzaG91bGQgc3BlY2lmeQord2hhdCBzaG91bGQgYmUgdW5zaGFyZWQuIFVuZm9ydHVuYXRlbHksIHRoaXMgbWF5IGFwcGVhciB0byBpbnZlcnQKK3RoZSBtZWFuaW5nIG9mIHRoZSBmbGFncyBmcm9tIHRoZSB3YXkgdGhleSBhcmUgdXNlZCBpbiBjbG9uZSgyKS4KK0hvd2V2ZXIsIHRoZXJlIHdhcyBubyBlYXN5IHNvbHV0aW9uIHRoYXQgd2FzIGxlc3MgY29uZnVzaW5nIGFuZCB0aGF0CithbGxvd2VkIGluY3JlbWVudGFsIGNvbnRleHQgdW5zaGFyaW5nIGluIGZ1dHVyZSB3aXRob3V0IGFuIEFCSSBjaGFuZ2UuCisKK3Vuc2hhcmUgaW50ZXJmYWNlIHNob3VsZCBhY2NvbW1vZGF0ZSBwb3NzaWJsZSBmdXR1cmUgYWRkaXRpb24gb2YKK25ldyBjb250ZXh0IGZsYWdzIHdpdGhvdXQgcmVxdWlyaW5nIGEgcmVidWlsZCBvZiBvbGQgYXBwbGljYXRpb25zLgorSWYgYW5kIHdoZW4gbmV3IGNvbnRleHQgZmxhZ3MgYXJlIGFkZGVkLCB1bnNoYXJlIGRlc2lnbiBzaG91bGQgYWxsb3cKK2luY3JlbWVudGFsIHVuc2hhcmluZyBvZiB0aG9zZSByZXNvdXJjZXMgb24gYW4gYXMgbmVlZGVkIGJhc2lzLgorCis1KSBGdW5jdGlvbmFsIFNwZWNpZmljYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTkFNRQorCXVuc2hhcmUgLSBkaXNhc3NvY2lhdGUgcGFydHMgb2YgdGhlIHByb2Nlc3MgZXhlY3V0aW9uIGNvbnRleHQKKworU1lOT1BTSVMKKwkjaW5jbHVkZSA8c2NoZWQuaD4KKworCWludCB1bnNoYXJlKGludCBmbGFncyk7CisKK0RFU0NSSVBUSU9OCisJdW5zaGFyZSBhbGxvd3MgYSBwcm9jZXNzIHRvIGRpc2Fzc29jaWF0ZSBwYXJ0cyBvZiBpdHMgZXhlY3V0aW9uCisJY29udGV4dCB0aGF0IGFyZSBjdXJyZW50bHkgYmVpbmcgc2hhcmVkIHdpdGggb3RoZXIgcHJvY2Vzc2VzLiBQYXJ0CisJb2YgZXhlY3V0aW9uIGNvbnRleHQsIHN1Y2ggYXMgdGhlIG5hbWVzcGFjZSwgaXMgc2hhcmVkIGJ5IGRlZmF1bHQKKwl3aGVuIGEgbmV3IHByb2Nlc3MgaXMgY3JlYXRlZCB1c2luZyBmb3JrKDIpLCB3aGlsZSBvdGhlciBwYXJ0cywKKwlzdWNoIGFzIHRoZSB2aXJ0dWFsIG1lbW9yeSwgb3BlbiBmaWxlIGRlc2NyaXB0b3JzLCBldGMsIG1heSBiZQorCXNoYXJlZCBieSBleHBsaWNpdCByZXF1ZXN0IHRvIHNoYXJlIHRoZW0gd2hlbiBjcmVhdGluZyBhIHByb2Nlc3MKKwl1c2luZyBjbG9uZSgyKS4KKworCVRoZSBtYWluIHVzZSBvZiB1bnNoYXJlIGlzIHRvIGFsbG93IGEgcHJvY2VzcyB0byBjb250cm9sIGl0cworCXNoYXJlZCBleGVjdXRpb24gY29udGV4dCB3aXRob3V0IGNyZWF0aW5nIGEgbmV3IHByb2Nlc3MuCisKKwlUaGUgZmxhZ3MgYXJndW1lbnQgc3BlY2lmaWVzIG9uZSBvciBiaXR3aXNlLW9yJ2VkIG9mIHNldmVyYWwgb2YKKwl0aGUgZm9sbG93aW5nIGNvbnN0YW50cy4KKworCUNMT05FX0ZTCisJCUlmIENMT05FX0ZTIGlzIHNldCwgZmlsZSBzeXN0ZW0gaW5mb3JtYXRpb24gb2YgdGhlIGNhbGxlcgorCQlpcyBkaXNhc3NvY2lhdGVkIGZyb20gdGhlIHNoYXJlZCBmaWxlIHN5c3RlbSBpbmZvcm1hdGlvbi4KKworCUNMT05FX0ZJTEVTCisJCUlmIENMT05FX0ZJTEVTIGlzIHNldCwgdGhlIGZpbGUgZGVzY3JpcHRvciB0YWJsZSBvZiB0aGUKKwkJY2FsbGVyIGlzIGRpc2Fzc29jaWF0ZWQgZnJvbSB0aGUgc2hhcmVkIGZpbGUgZGVzY3JpcHRvcgorCQl0YWJsZS4KKworCUNMT05FX05FV05TCisJCUlmIENMT05FX05FV05TIGlzIHNldCwgdGhlIG5hbWVzcGFjZSBvZiB0aGUgY2FsbGVyIGlzCisJCWRpc2Fzc29jaWF0ZWQgZnJvbSB0aGUgc2hhcmVkIG5hbWVzcGFjZS4KKworCUNMT05FX1ZNCisJCUlmIENMT05FX1ZNIGlzIHNldCwgdGhlIHZpcnR1YWwgbWVtb3J5IG9mIHRoZSBjYWxsZXIgaXMKKwkJZGlzYXNzb2NpYXRlZCBmcm9tIHRoZSBzaGFyZWQgdmlydHVhbCBtZW1vcnkuCisKK1JFVFVSTiBWQUxVRQorCU9uIHN1Y2Nlc3MsIHplcm8gcmV0dXJuZWQuIE9uIGZhaWx1cmUsIC0xIGlzIHJldHVybmVkIGFuZCBlcnJubyBpcworCitFUlJPUlMKKwlFUEVSTQlDTE9ORV9ORVdOUyB3YXMgc3BlY2lmaWVkIGJ5IGEgbm9uLXJvb3QgcHJvY2VzcyAocHJvY2VzcworCQl3aXRob3V0IENBUF9TWVNfQURNSU4pLgorCisJRU5PTUVNCUNhbm5vdCBhbGxvY2F0ZSBzdWZmaWNpZW50IG1lbW9yeSB0byBjb3B5IHBhcnRzIG9mIGNhbGxlcidzCisJCWNvbnRleHQgdGhhdCBuZWVkIHRvIGJlIHVuc2hhcmVkLgorCisJRUlOVkFMCUludmFsaWQgZmxhZyB3YXMgc3BlY2lmaWVkIGFzIGFuIGFyZ3VtZW50LgorCitDT05GT1JNSU5HIFRPCisJVGhlIHVuc2hhcmUoKSBjYWxsIGlzIExpbnV4LXNwZWNpZmljIGFuZCAgc2hvdWxkICBub3QgYmUgdXNlZAorCWluIHByb2dyYW1zIGludGVuZGVkIHRvIGJlIHBvcnRhYmxlLgorCitTRUUgQUxTTworCWNsb25lKDIpLCBmb3JrKDIpCisKKzYpIEhpZ2ggTGV2ZWwgRGVzaWduCistLS0tLS0tLS0tLS0tLS0tLS0tLQorRGVwZW5kaW5nIG9uIHRoZSBmbGFncyBhcmd1bWVudCwgdGhlIHVuc2hhcmUgc3lzdGVtIGNhbGwgYWxsb2NhdGVzCithcHByb3ByaWF0ZSBwcm9jZXNzIGNvbnRleHQgc3RydWN0dXJlcywgcG9wdWxhdGVzIGl0IHdpdGggdmFsdWVzIGZyb20KK3RoZSBjdXJyZW50IHNoYXJlZCB2ZXJzaW9uLCBhc3NvY2lhdGVzIG5ld2x5IGR1cGxpY2F0ZWQgc3RydWN0dXJlcword2l0aCB0aGUgY3VycmVudCB0YXNrIHN0cnVjdHVyZSBhbmQgcmVsZWFzZXMgY29ycmVzcG9uZGluZyBzaGFyZWQKK3ZlcnNpb25zLiBIZWxwZXIgZnVuY3Rpb25zIG9mIGNsb25lIChjb3B5XyopIGNvdWxkIG5vdCBiZSB1c2VkCitkaXJlY3RseSBieSB1bnNoYXJlIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyB0d28gcmVhc29ucy4KKyAgMSkgY2xvbmUgb3BlcmF0ZXMgb24gYSBuZXdseSBhbGxvY2F0ZWQgbm90LXlldC1hY3RpdmUgdGFzaworICAgICBzdHJ1Y3R1cmUsIHdoZXJlIGFzIHVuc2hhcmUgb3BlcmF0ZXMgb24gdGhlIGN1cnJlbnQgYWN0aXZlCisgICAgIHRhc2suIFRoZXJlZm9yZSB1bnNoYXJlIGhhcyB0byB0YWtlIGFwcHJvcHJpYXRlIHRhc2tfbG9jaygpCisgICAgIGJlZm9yZSBhc3NvY2lhdGluZyBuZXdseSBkdXBsaWNhdGVkIGNvbnRleHQgc3RydWN0dXJlcworICAyKSB1bnNoYXJlIGhhcyB0byBhbGxvY2F0ZSBhbmQgZHVwbGljYXRlIGFsbCBjb250ZXh0IHN0cnVjdHVyZXMKKyAgICAgdGhhdCBhcmUgYmVpbmcgdW5zaGFyZWQsIGJlZm9yZSBhc3NvY2lhdGluZyB0aGVtIHdpdGggdGhlCisgICAgIGN1cnJlbnQgdGFzayBhbmQgcmVsZWFzaW5nIG9sZGVyIHNoYXJlZCBzdHJ1Y3R1cmVzLiBGYWlsdXJlCisgICAgIGRvIHNvIHdpbGwgY3JlYXRlIHJhY2UgY29uZGl0aW9ucyBhbmQvb3Igb29wcyB3aGVuIHRyeWluZworICAgICB0byBiYWNrb3V0IGR1ZSB0byBhbiBlcnJvci4gQ29uc2lkZXIgdGhlIGNhc2Ugb2YgdW5zaGFyaW5nCisgICAgIGJvdGggdmlydHVhbCBtZW1vcnkgYW5kIG5hbWVzcGFjZS4gQWZ0ZXIgc3VjY2Vzc2Z1bGx5IHVuc2hhcmluZworICAgICB2bSwgaWYgdGhlIHN5c3RlbSBjYWxsIGVuY291bnRlcnMgYW4gZXJyb3Igd2hpbGUgYWxsb2NhdGluZworICAgICBuZXcgbmFtZXNwYWNlIHN0cnVjdHVyZSwgdGhlIGVycm9yIHJldHVybiBjb2RlIHdpbGwgaGF2ZSB0bworICAgICByZXZlcnNlIHRoZSB1bnNoYXJpbmcgb2Ygdm0uIEFzIHBhcnQgb2YgdGhlIHJldmVyc2FsIHRoZQorICAgICBzeXN0ZW0gY2FsbCB3aWxsIGhhdmUgdG8gZ28gYmFjayB0byBvbGRlciwgc2hhcmVkLCB2bQorICAgICBzdHJ1Y3R1cmUsIHdoaWNoIG1heSBub3QgZXhpc3QgYW55bW9yZS4KKworVGhlcmVmb3JlIGNvZGUgZnJvbSBjb3B5XyogZnVuY3Rpb25zIHRoYXQgYWxsb2NhdGVkIGFuZCBkdXBsaWNhdGVkCitjdXJyZW50IGNvbnRleHQgc3RydWN0dXJlIHdhcyBtb3ZlZCBpbnRvIG5ldyBkdXBfKiBmdW5jdGlvbnMuIE5vdywKK2NvcHlfKiBmdW5jdGlvbnMgY2FsbCBkdXBfKiBmdW5jdGlvbnMgdG8gYWxsb2NhdGUgYW5kIGR1cGxpY2F0ZQorYXBwcm9wcmlhdGUgY29udGV4dCBzdHJ1Y3R1cmVzIGFuZCB0aGVuIGFzc29jaWF0ZSB0aGVtIHdpdGggdGhlCit0YXNrIHN0cnVjdHVyZSB0aGF0IGlzIGJlaW5nIGNvbnN0cnVjdGVkLiB1bnNoYXJlIHN5c3RlbSBjYWxsIG9uCit0aGUgb3RoZXIgaGFuZCBwZXJmb3JtcyB0aGUgZm9sbG93aW5nOgorICAxKSBDaGVjayBmbGFncyB0byBmb3JjZSBtaXNzaW5nLCBidXQgaW1wbGllZCwgZmxhZ3MKKyAgMikgRm9yIGVhY2ggY29udGV4dCBzdHJ1Y3R1cmUsIGNhbGwgdGhlIGNvcnJlc3BvbmRpbmcgdW5zaGFyZQorICAgICBoZWxwZXIgZnVuY3Rpb24gdG8gYWxsb2NhdGUgYW5kIGR1cGxpY2F0ZSBhIG5ldyBjb250ZXh0CisgICAgIHN0cnVjdHVyZSwgaWYgdGhlIGFwcHJvcHJpYXRlIGJpdCBpcyBzZXQgaW4gdGhlIGZsYWdzIGFyZ3VtZW50LgorICAzKSBJZiB0aGVyZSBpcyBubyBlcnJvciBpbiBhbGxvY2F0aW9uIGFuZCBkdXBsaWNhdGlvbiBhbmQgdGhlcmUKKyAgICAgYXJlIG5ldyBjb250ZXh0IHN0cnVjdHVyZXMgdGhlbiBsb2NrIHRoZSBjdXJyZW50IHRhc2sgc3RydWN0dXJlLAorICAgICBhc3NvY2lhdGUgbmV3IGNvbnRleHQgc3RydWN0dXJlcyB3aXRoIHRoZSBjdXJyZW50IHRhc2sgc3RydWN0dXJlLAorICAgICBhbmQgcmVsZWFzZSB0aGUgbG9jayBvbiB0aGUgY3VycmVudCB0YXNrIHN0cnVjdHVyZS4KKyAgNCkgQXBwcm9wcmlhdGVseSByZWxlYXNlIG9sZGVyLCBzaGFyZWQsIGNvbnRleHQgc3RydWN0dXJlcy4KKworNykgTG93IExldmVsIERlc2lnbgorLS0tLS0tLS0tLS0tLS0tLS0tLQorSW1wbGVtZW50YXRpb24gb2YgdW5zaGFyZSBjYW4gYmUgZ3JvdXBlZCBpbiB0aGUgZm9sbG93aW5nIDQgZGlmZmVyZW50CitpdGVtczoKKyAgYSkgUmVvcmdhbml6YXRpb24gb2YgZXhpc3RpbmcgY29weV8qIGZ1bmN0aW9ucworICBiKSB1bnNoYXJlIHN5c3RlbSBjYWxsIHNlcnZpY2UgZnVuY3Rpb24KKyAgYykgdW5zaGFyZSBoZWxwZXIgZnVuY3Rpb25zIGZvciBlYWNoIGRpZmZlcmVudCBwcm9jZXNzIGNvbnRleHQKKyAgZCkgUmVnaXN0cmF0aW9uIG9mIHN5c3RlbSBjYWxsIG51bWJlciBmb3IgZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMKKworICA3LjEpIFJlb3JnYW5pemF0aW9uIG9mIGNvcHlfKiBmdW5jdGlvbnMKKyAgICAgICBFYWNoIGNvcHkgZnVuY3Rpb24gc3VjaCBhcyBjb3B5X21tLCBjb3B5X25hbWVzcGFjZSwgY29weV9maWxlcywKKyAgICAgICBldGMsIGhhZCByb3VnaGx5IHR3byBjb21wb25lbnRzLiBUaGUgZmlyc3QgY29tcG9uZW50IGFsbG9jYXRlZAorICAgICAgIGFuZCBkdXBsaWNhdGVkIHRoZSBhcHByb3ByaWF0ZSBzdHJ1Y3R1cmUgYW5kIHRoZSBzZWNvbmQgY29tcG9uZW50CisgICAgICAgbGlua2VkIGl0IHRvIHRoZSB0YXNrIHN0cnVjdHVyZSBwYXNzZWQgaW4gYXMgYW4gYXJndW1lbnQgdG8gdGhlIGNvcHkKKyAgICAgICBmdW5jdGlvbi4gVGhlIGZpcnN0IGNvbXBvbmVudCB3YXMgc3BsaXQgaW50byBpdHMgb3duIGZ1bmN0aW9uLgorICAgICAgIFRoZXNlIGR1cF8qIGZ1bmN0aW9ucyBhbGxvY2F0ZWQgYW5kIGR1cGxpY2F0ZWQgdGhlIGFwcHJvcHJpYXRlCisgICAgICAgY29udGV4dCBzdHJ1Y3R1cmUuIFRoZSByZW9yZ2FuaXplZCBjb3B5XyogZnVuY3Rpb25zIGludm9rZWQKKyAgICAgICB0aGVpciBjb3JyZXNwb25kaW5nIGR1cF8qIGZ1bmN0aW9ucyBhbmQgdGhlbiBsaW5rZWQgdGhlIG5ld2x5CisgICAgICAgZHVwbGljYXRlZCBzdHJ1Y3R1cmVzIHRvIHRoZSB0YXNrIHN0cnVjdHVyZSB3aXRoIHdoaWNoIHRoZQorICAgICAgIGNvcHkgZnVuY3Rpb24gd2FzIGNhbGxlZC4KKworICA3LjIpIHVuc2hhcmUgc3lzdGVtIGNhbGwgc2VydmljZSBmdW5jdGlvbgorICAgICAgICogQ2hlY2sgZmxhZ3MKKwkgRm9yY2UgaW1wbGllZCBmbGFncy4gSWYgQ0xPTkVfVEhSRUFEIGlzIHNldCBmb3JjZSBDTE9ORV9WTS4KKwkgSWYgQ0xPTkVfVk0gaXMgc2V0LCBmb3JjZSBDTE9ORV9TSUdIQU5ELiBJZiBDTE9ORV9TSUdIQU5EIGlzCisJIHNldCBhbmQgc2lnbmFscyBhcmUgYWxzbyBiZWluZyBzaGFyZWQsIGZvcmNlIENMT05FX1RIUkVBRC4gSWYKKwkgQ0xPTkVfTkVXTlMgaXMgc2V0LCBmb3JjZSBDTE9ORV9GUy4KKyAgICAgICAqIEZvciBlYWNoIGNvbnRleHQgZmxhZywgaW52b2tlIHRoZSBjb3JyZXNwb25kaW5nIHVuc2hhcmVfKgorCSBoZWxwZXIgcm91dGluZSB3aXRoIGZsYWdzIHBhc3NlZCBpbnRvIHRoZSBzeXN0ZW0gY2FsbCBhbmQgYQorCSByZWZlcmVuY2UgdG8gcG9pbnRlciBwb2ludGluZyB0aGUgbmV3IHVuc2hhcmVkIHN0cnVjdHVyZQorICAgICAgICogSWYgYW55IG5ldyBzdHJ1Y3R1cmVzIGFyZSBjcmVhdGVkIGJ5IHVuc2hhcmVfKiBoZWxwZXIKKwkgZnVuY3Rpb25zLCB0YWtlIHRoZSB0YXNrX2xvY2soKSBvbiB0aGUgY3VycmVudCB0YXNrLAorCSBtb2RpZnkgYXBwcm9wcmlhdGUgY29udGV4dCBwb2ludGVycywgYW5kIHJlbGVhc2UgdGhlCisgICAgICAgICB0YXNrIGxvY2suCisgICAgICAgKiBGb3IgYWxsIG5ld2x5IHVuc2hhcmVkIHN0cnVjdHVyZXMsIHJlbGVhc2UgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgIG9sZGVyLCBzaGFyZWQsIHN0cnVjdHVyZXMuCisKKyAgNy4zKSB1bnNoYXJlXyogaGVscGVyIGZ1bmN0aW9ucworICAgICAgIEZvciB1bnNoYXJlXyogaGVscGVycyBjb3JyZXNwb25kaW5nIHRvIENMT05FX1NZU1ZTRU0sIENMT05FX1NJR0hBTkQsCisgICAgICAgYW5kIENMT05FX1RIUkVBRCwgcmV0dXJuIC1FSU5WQUwgc2luY2UgdGhleSBhcmUgbm90IGltcGxlbWVudGVkIHlldC4KKyAgICAgICBGb3Igb3RoZXJzLCBjaGVjayB0aGUgZmxhZyB2YWx1ZSB0byBzZWUgaWYgdGhlIHVuc2hhcmluZyBpcworICAgICAgIHJlcXVpcmVkIGZvciB0aGF0IHN0cnVjdHVyZS4gSWYgaXQgaXMsIGludm9rZSB0aGUgY29ycmVzcG9uZGluZworICAgICAgIGR1cF8qIGZ1bmN0aW9uIHRvIGFsbG9jYXRlIGFuZCBkdXBsaWNhdGUgdGhlIHN0cnVjdHVyZSBhbmQgcmV0dXJuCisgICAgICAgYSBwb2ludGVyIHRvIGl0LgorCisgIDcuNCkgQXBwcm9wcmlhdGVseSBtb2RpZnkgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGNvZGUgdG8gcmVnaXN0ZXIgdGhlCisgICAgICAgbmV3IHN5c3RlbSBjYWxsLgorCis4KSBUZXN0IFNwZWNpZmljYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIHRlc3QgZm9yIHVuc2hhcmUgc2hvdWxkIHRlc3QgdGhlIGZvbGxvd2luZzoKKyAgMSkgVmFsaWQgZmxhZ3M6IFRlc3QgdG8gY2hlY2sgdGhhdCBjbG9uZSBmbGFncyBmb3Igc2lnbmFsIGFuZAorCXNpZ25hbCBoYW5kbGVycywgZm9yIHdoaWNoIHVuc2hhcmluZyBpcyBub3QgaW1wbGVtZW50ZWQKKwl5ZXQsIHJldHVybiAtRUlOVkFMLgorICAyKSBNaXNzaW5nL2ltcGxpZWQgZmxhZ3M6IFRlc3QgdG8gbWFrZSBzdXJlIHRoYXQgaWYgdW5zaGFyaW5nCisJbmFtZXNwYWNlIHdpdGhvdXQgc3BlY2lmeWluZyB1bnNoYXJpbmcgb2YgZmlsZXN5c3RlbSwgY29ycmVjdGx5CisJdW5zaGFyZXMgYm90aCBuYW1lc3BhY2UgYW5kIGZpbGVzeXN0ZW0gaW5mb3JtYXRpb24uCisgIDMpIEZvciBlYWNoIG9mIHRoZSBmb3VyIChuYW1lc3BhY2UsIGZpbGVzeXN0ZW0sIGZpbGVzIGFuZCB2bSkKKwlzdXBwb3J0ZWQgdW5zaGFyaW5nLCB2ZXJpZnkgdGhhdCB0aGUgc3lzdGVtIGNhbGwgY29ycmVjdGx5CisJdW5zaGFyZXMgdGhlIGFwcHJvcHJpYXRlIHN0cnVjdHVyZS4gVmVyaWZ5IHRoYXQgdW5zaGFyaW5nCisJdGhlbSBpbmRpdmlkdWFsbHkgYXMgd2VsbCBhcyBpbiBjb21iaW5hdGlvbiB3aXRoIGVhY2gKKwlvdGhlciB3b3JrcyBhcyBleHBlY3RlZC4KKyAgNCkgQ29uY3VycmVudCBleGVjdXRpb246IFVzZSBzaGFyZWQgbWVtb3J5IHNlZ21lbnRzIGFuZCBmdXRleCBvbgorCWFuIGFkZHJlc3MgaW4gdGhlIHNobSBzZWdtZW50IHRvIHN5bmNocm9uaXplIGV4ZWN1dGlvbiBvZgorCWFib3V0IDEwIHRocmVhZHMuIEhhdmUgYSBjb3VwbGUgb2YgdGhyZWFkcyBleGVjdXRlIGV4ZWN2ZSwKKwlhIGNvdXBsZSBfZXhpdCBhbmQgdGhlIHJlc3QgdW5zaGFyZSB3aXRoIGRpZmZlcmVudCBjb21iaW5hdGlvbgorCW9mIGZsYWdzLiBWZXJpZnkgdGhhdCB1bnNoYXJpbmcgaXMgcGVyZm9ybWVkIGFzIGV4cGVjdGVkIGFuZAorCXRoYXQgdGhlcmUgYXJlIG5vIG9vcHMgb3IgaGFuZ3MuCisKKzkpIEZ1dHVyZSBXb3JrCistLS0tLS0tLS0tLS0tLQorVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgdW5zaGFyZSBkb2VzIG5vdCBhbGxvdyB1bnNoYXJpbmcgb2YKK3NpZ25hbHMgYW5kIHNpZ25hbCBoYW5kbGVycy4gU2lnbmFscyBhcmUgY29tcGxleCB0byBiZWdpbiB3aXRoIGFuZAordG8gdW5zaGFyZSBzaWduYWxzIGFuZC9vciBzaWduYWwgaGFuZGxlcnMgb2YgYSBjdXJyZW50bHkgcnVubmluZworcHJvY2VzcyBpcyBldmVuIG1vcmUgY29tcGxleC4gSWYgaW4gdGhlIGZ1dHVyZSB0aGVyZSBpcyBhIHNwZWNpZmljCituZWVkIHRvIGFsbG93IHVuc2hhcmluZyBvZiBzaWduYWxzIGFuZC9vciBzaWduYWwgaGFuZGxlcnMsIGl0IGNhbgorYmUgaW5jcmVtZW50YWxseSBhZGRlZCB0byB1bnNoYXJlIHdpdGhvdXQgYWZmZWN0aW5nIGxlZ2FjeQorYXBwbGljYXRpb25zIHVzaW5nIHVuc2hhcmUuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNiL0NSRURJVFMgYi9Eb2N1bWVudGF0aW9uL3VzYi9DUkVESVRTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3YzU5Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3VzYi9DUkVESVRTCkBAIC0wLDAgKzEsMTc1IEBACitDcmVkaXRzIGZvciB0aGUgU2ltcGxlIExpbnV4IFVTQiBEcml2ZXI6CisKK1RoZSBmb2xsb3dpbmcgcGVvcGxlIGhhdmUgY29udHJpYnV0ZWQgdG8gdGhpcyBjb2RlIChpbiBhbHBoYWJldGljYWwKK29yZGVyIGJ5IGxhc3QgbmFtZSkuICBJJ20gc3VyZSB0aGlzIGxpc3Qgc2hvdWxkIGJlIGxvbmdlciwgaXRzCitkaWZmaWN1bHQgdG8gbWFpbnRhaW4sIGFkZCB5b3Vyc2VsZiB3aXRoIGEgcGF0Y2ggaWYgZGVzaXJlZC4KKworICBHZW9yZyBBY2hlciA8YWNoZXJAaW5mb3JtYXRpay50dS1tdWVuY2hlbi5kZT4KKyAgRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgIEFsYW4gQ294IDxhbGFuQGx4b3JndWsudWt1dS5vcmcudWs+CisgIFJhbmR5IER1bmxhcCA8cmFuZHkuZHVubGFwQGludGVsLmNvbT4KKyAgSm9oYW5uZXMgRXJkZmVsdCA8am9oYW5uZXNAZXJkZmVsdC5jb20+CisgIERldGkgRmxpZWdsIDxkZXRpQGZsaWVnbC5kZT4KKyAgaGFtIDxoYW1AdW5zdWF2ZS5jb20+CisgIEJyYWRsZXkgTSBLZXJ5YW4gPGtlcnlhbkBhbmRyZXcuY211LmVkdT4KKyAgR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVnQGtyb2FoLmNvbT4KKyAgUGF2ZWwgTWFjaGVrIDxwYXZlbEBzdXNlLmN6PgorICBQYXVsIE1hY2tlcnJhcyA8cGF1bHVzQGNzLmFudS5lZHUuYXU+CisgIFBldGtvIE1hbmxvbG92IDxwZXRrYW5AZGNlLmJnPgorICBEYXZpZCBFLiBOZWxzb24gPGRuZWxzb25AanVtcC5uZXQ+CisgIFZvanRlY2ggUGF2bGlrIDx2b2p0ZWNoQHN1c2UuY3o+CisgIEJpbGwgUnlkZXIgPGJyeWRlckBzZ2kuY29tPgorICBUaG9tYXMgU2FpbGVyIDxzYWlsZXJAaWZlLmVlLmV0aHouY2g+CisgIEdyZWdvcnkgUC4gU21pdGggPGdyZWdAZWxlY3RyaWNyYWluLmNvbT4KKyAgTGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQGxpbnV4LWZvdW5kYXRpb24ub3JnPgorICBSb21hbiBXZWlzc2dhZXJiZXIgPHdlaXNzZ0B2aWVubmEuYXQ+CisgIDxLYXp1a2kuWWFzdW1hdHN1QGZ1aml4ZXJveC5jby5qcD4KKworU3BlY2lhbCB0aGFua3MgdG86CisKKyAgSW5ha3kgUGVyZXogR29uemFsZXogPGluYWt5QHBlbG9uY2hvLmZpcy51Y20uZXM+IGZvciBzdGFydGluZyB0aGUKKyAgTGludXggVVNCIGRyaXZlciBlZmZvcnQgYW5kIHdyaXRpbmcgbXVjaCBvZiB0aGUgbGFyZ2VyIHV1c2JkIGRyaXZlci4KKyAgTXVjaCBoYXMgYmVlbiBsZWFybmVkIGZyb20gdGhhdCBlZmZvcnQuCisKKyAgVGhlIE5ldEJTRCAmIEZyZWVCU0QgVVNCIGRldmVsb3BlcnMuICBGb3IgYmVpbmcgb24gdGhlIExpbnV4IFVTQiBsaXN0CisgIGFuZCBvZmZlcmluZyBzdWdnZXN0aW9ucyBhbmQgc2hhcmluZyBpbXBsZW1lbnRhdGlvbiBleHBlcmllbmNlcy4KKworQWRkaXRpb25hbCB0aGFua3MgdG8gdGhlIGZvbGxvd2luZyBjb21wYW5pZXMgYW5kIHBlb3BsZSBmb3IgZG9uYXRpb25zCitvZiBoYXJkd2FyZSwgc3VwcG9ydCwgdGltZSBhbmQgZGV2ZWxvcG1lbnQgKHRoaXMgaXMgZnJvbSB0aGUgb3JpZ2luYWwKK1RIQU5LUyBmaWxlIGluIEluYWt5J3MgZHJpdmVyKToKKworICAgICAgICBUaGUgZm9sbG93aW5nIGNvcnBvcmF0aW9ucyBoYXZlIGhlbHBlZCB1cyBpbiB0aGUgZGV2ZWxvcG1lbnQKKyAgICAgICAgb2YgTGludXggVVNCIC8gVVVTQkQ6CisKKwktIDNDb20gR21iSCBmb3IgZG9uYXRpbmcgYSBJU0ROIFBybyBUQSBhbmQgc3VwcG9ydGluZyBtZQorCSAgaW4gdGVjaG5pY2FsIHF1ZXN0aW9ucyBhbmQgd2l0aCB0ZXN0IGVxdWlwbWVudC4gSSdkIG5ldmVyIAorCSAgZXhwZWN0IHN1Y2ggYSBncmVhdCBoZWxwLgorCisgICAgICAgIC0gVVNBUiBTeXN0ZW1zIHByb3ZpZGVkIHVzIHdpdGggb25lIG9mIHRoZWlyIGV4Y2VsbGVudCBVU0IKKyAgICAgICAgICBFdmFsdWF0aW9uIEtpdHMuIEl0IGFsbG93cyB1cyB0byB0ZXN0IHRoZSBMaW51eC1VU0IgZHJpdmVyCisgICAgICAgICAgZm9yIGNvbXBsaWFuY2Ugd2l0aCB0aGUgbGF0ZXN0IFVTQiBzcGVjaWZpY2F0aW9uLiBVU0FSCisgICAgICAgICAgU3lzdGVtcyByZWNvZ25pemVkIHRoZSBpbXBvcnRhbmNlIG9mIGFuIHVwLXRvLWRhdGUgb3BlbgorICAgICAgICAgIE9wZXJhdGluZyBTeXN0ZW0gYW5kIHN1cHBvcnRzIHRoaXMgcHJvamVjdCB3aXRoCisgICAgICAgICAgSGFyZHdhcmUuIFRoYW5rcyEuCisKKyAgICAgICAgLSBUaGFua3MgdG8gSW50ZWwgQ29ycG9yYXRpb24gZm9yIHRoZWlyIHByZWNpb3VzIGhlbHAuCisKKyAgICAgICAgLSBXZSB0ZWFtZWQgdXAgd2l0aCBDaGVycnkgdG8gbWFrZSBMaW51eCB0aGUgZmlyc3QgT1Mgd2l0aAorICAgICAgICAgIGJ1aWx0LWluIFVTQiBzdXBwb3J0LiBDaGVycnkgaXMgb25lIG9mIHRoZSBiaWdnZXN0IGtleWJvYXJkCisgICAgICAgICAgbWFrZXJzIGluIHRoZSB3b3JsZC4KKworICAgICAgICAtIENNRCBUZWNobm9sb2d5LCBJbmMuIHNwb25zb3JlZCB1cyBraW5kbHkgZG9uYXRpbmcgYSBDU0EtNjcwMAorICAgICAgICAgIFBDSS10by1VU0IgQ29udHJvbGxlciBCb2FyZCB0byB0ZXN0IHRoZSBPSENJIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIC0gRHVlIHRvIHRoZWlyIHN1cHBvcnQgdG8gdXMsIEtleXRyb25pYyBjYW4gYmUgc3VyZSB0aGF0IHRoZXkKKyAgICAgICAgICB3aWxsIHNlbGwga2V5Ym9hcmRzIHRvIHNvbWUgb2YgdGhlIDMgbWlsbGlvbiAoYXQgbGVhc3QpCisgICAgICAgICAgTGludXggdXNlcnMuCisKKyAgICAgICAgLSBNYW55IHRoYW5rcyB0byBpbmcgYsO8cm8gaCBkb3JhbiBbaHR0cDovL3d3dy5pYmhkb3Jhbi5jb21dIQorICAgICAgICAgIEl0IHdhcyBhbG1vc3QgaW1wb3NzaWJsZSB0byBnZXQgYSBQQyBiYWNrcGxhdGUgVVNCIGNvbm5lY3RvcgorICAgICAgICAgIGZvciB0aGUgbW90aGVyYm9hcmQgaGVyZSBhdCBFdXJvcGUgKG1pbmUsIGhvbWUtbWFkZSwgd2FzCisgICAgICAgICAgcXVpdGUgbG91c3kgOikuIE5vdyBJIGtub3cgd2hlcmUgdG8gYWNxdWlyZSBuaWNlIFVTQiBzdHVmZiEKKworICAgICAgICAtIEdlbml1cyBHZXJtYW55IGRvbmF0ZWQgYSBVU0IgbW91c2UgdG8gdGVzdCB0aGUgbW91c2UgYm9vdAorICAgICAgICAgIHByb3RvY29sLiBUaGV5J3ZlIGFsc28gZG9uYXRlZCBhIEYtMjMgZGlnaXRhbCBqb3lzdGljayBhbmQgYQorICAgICAgICAgIE5ldE1vdXNlIFByby4gVGhhbmtzISAKKworICAgICAgICAtIEFWTSBHbWJIIEJlcmxpbiBpcyBzdXBwb3J0aW5nIHRoZSBkZXZlbG9wbWVudCBvZiB0aGUgTGludXgKKyAgICAgICAgICBVU0IgZHJpdmVyIGZvciB0aGUgQVZNIElTRE4gQ29udHJvbGxlciBCMSBVU0IuIEFWTSBpcyBhCisgICAgICAgICAgbGVhZGluZyBtYW51ZmFjdHVyZXIgZm9yIGFjdGl2ZSBhbmQgcGFzc2l2ZSBJU0ROIENvbnRyb2xsZXJzCisgICAgICAgICAgYW5kIENBUEkgMi4wLWJhc2VkIHNvZnR3YXJlLiBUaGUgYWN0aXZlIGRlc2lnbiBvZiB0aGUgQVZNIEIxCisgICAgICAgICAgaXMgb3BlbiBmb3IgYWxsIE9TIHBsYXRmb3JtcywgaW5jbHVkaW5nIExpbnV4LgorCisgICAgICAgIC0gVGhhbmtzIHRvIFktRSBEYXRhLCBJbmMuIGZvciBkb25hdGluZyB0aGVpciBGbGFzaEJ1c3Rlci1VCisgICAgICAgICAgVVNCIEZsb3BweSBEaXNrIERyaXZlLCBzbyB3ZSBjb3VsZCB0ZXN0IHRoZSBidWxrIHRyYW5zZmVyCisgICAgICAgICAgY29kZS4KKworICAgICAgICAtIE1hbnkgdGhhbmtzIHRvIExvZ2l0ZWNoIGZvciBjb250cmlidXRpbmcgYSB0aHJlZSBheGlzIFVTQgorICAgICAgICAgIG1vdXNlLiAKKworICAgICAgICAgIExvZ2l0ZWNoIGRlc2lnbnMsIG1hbnVmYWN0dXJlcyBhbmQgbWFya2V0cworICAgICAgICAgIEh1bWFuIEludGVyZmFjZSBEZXZpY2VzLCBoYXZpbmcgYSBsb25nIGhpc3RvcnkgYW5kCisgICAgICAgICAgZXhwZXJpZW5jZSBpbiBtYWtpbmcgZGV2aWNlcyBzdWNoIGFzIGtleWJvYXJkcywgbWljZSwKKyAgICAgICAgICB0cmFja2JhbGxzLCBjYW1lcmFzLCBsb3Vkc3BlYWtlcnMgYW5kIGNvbnRyb2wgZGV2aWNlcyBmb3IKKyAgICAgICAgICBnYW1pbmcgYW5kIHByb2Zlc3Npb25hbCB1c2UuCisKKyAgICAgICAgICBCZWluZyBhIHJlY29nbml6ZWQgdmVuZG9yIGFuZCBzZWxsZXIgZm9yIGFsbCB0aGVzZSBkZXZpY2VzLAorICAgICAgICAgIHRoZXkgaGF2ZSBkb25hdGVkIFVTQiBtaWNlLCBhIGpveXN0aWNrIGFuZCBhIHNjYW5uZXIsIGFzIGEKKyAgICAgICAgICB3YXkgdG8gYWNrbm93bGVkZ2UgdGhlIGltcG9ydGFuY2Ugb2YgTGludXggYW5kIHRvIGFsbG93CisgICAgICAgICAgTG9naXRlY2ggY3VzdG9tZXJzIHRvIGVuam95IHN1cHBvcnQgaW4gdGhlaXIgZmF2b3JpdGUKKyAgICAgICAgICBvcGVyYXRpbmcgc3lzdGVtcyBhbmQgYWxsIExpbnV4IHVzZXJzIHRvIHVzZSBMb2dpdGVjaCBhbmQKKyAgICAgICAgICBvdGhlciBVU0IgaGFyZHdhcmUuCisKKyAgICAgICAgICBMb2dpdGVjaCBpcyBvZmZpY2lhbCBzcG9uc29yIG9mIHRoZSBMaW51eCBDb25mZXJlbmNlIG9uCisgICAgICAgICAgRmViLiAxMXRoIDE5OTkgaW4gVmllbm5hLCB3aGVyZSB3ZSdsbCB3aWxsIHByZXNlbnQgdGhlCisgICAgICAgICAgY3VycmVudCBzdGF0ZSBvZiB0aGUgTGludXggVVNCIGVmZm9ydC4KKworICAgICAgICAtIENBVEMgaGFzIHByb3ZpZGVkIG1lYW5zIHRvIHVuY292ZXIgZGFyayBjb3JuZXJzIG9mIHRoZSBVSENJCisgICAgICAgICAgaW5uZXIgd29ya2luZ3Mgd2l0aCBhIFVTQiBJbnNwZWN0b3IuCisKKyAgICAgICAgLSBUaGFua3MgdG8gRW50cmVnYSBmb3IgcHJvdmlkaW5nIFBDSSB0byBVU0IgY2FyZHMsIGh1YnMgYW5kCisgICAgICAgICAgY29udmVydGVyIHByb2R1Y3RzIGZvciBkZXZlbG9wbWVudC4gCisKKwktIFRoYW5rcyB0byBDb25uZWN0VGVjaCBmb3IgcHJvdmlkaW5nIGEgV2hpdGVIRUFUIHVzYiB0bworCSAgc2VyaWFsIGNvbnZlcnRlciwgYW5kIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgZGV2aWNlIHRvCisJICBhbGxvdyBhIGRyaXZlciB0byBiZSB3cml0dGVuLgorCisJLSBUaGFua3MgdG8gQURNdGVrIGZvciBwcm92aWRpbmcgUGVnYXN1cyBhbmQgUGVnYXN1cyBJSQorCSAgZXZhbHVhdGlvbiBib2FyZHMsIHNwZWNzIGFuZCB2YWx1YWJsZSBhZHZpY2VzIGR1cmluZworCSAgdGhlIGRyaXZlciBkZXZlbG9wbWVudC4KKwkKKyAgICAgICAgQW5kIHRoYW5rcyBnbyB0byAoaGV5ISBpbiBubyBwYXJ0aWN1bGFyIG9yZGVyIDopCisKKyAgICAgICAgLSBPcmVuIFRpcm9zaCA8b3JlbnRpQGhpc2hvbWUubmV0PiwgZm9yIHN0YW5kaW5nIHNvIHBhdGllbnRseQorICAgICAgICAgIGFsbCBteSBkb3VidHMnYm91dCBVU0IgYW5kIGdpdmluZyBsb3RzIG9mIGNvb2wgaWRlYXMuCisKKyAgICAgICAgLSBKb2NoZW4gS2FycmVyIDxrYXJyZXJAd3BmZDI1LnBoeXNpay51bmktd3VlcnpidXJnLmRlPiwgZm9yCisgICAgICAgICAgcG9pbnRpbmcgb3V0IG1vcnRhbCBidWdzIGFuZCBnaXZpbmcgYWR2aWNlLgorCisgICAgICAgIC0gRWRtdW5kIEh1bWVtYmVyZ2VyIDxlZEBhdG5ldC5hdD4sIGZvciBpdCdzIGdyZWF0IHdvcmsgb24KKyAgICAgICAgICBwdWJsaWMgcmVsYXRpb25zaGlwcyBhbmQgZ2VuZXJhbCBtYW5hZ2VtZW50IHN0dWZmIGZvciB0aGUKKyAgICAgICAgICBMaW51eC1VU0IgZWZmb3J0LgorCisgICAgICAgIC0gQWxiZXJ0byBNZW5lZ2F6emkgPGZsYXNoQGZsYXNoLmlvbC5pdD4gaXMgc3RhcnRpbmcgdGhlCisgICAgICAgICAgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIFVVU0JELiBHbyBmb3IgaXQhCisKKyAgICAgICAgLSBSaWMgS2xhcmVuIDxpYV9yaWNAY3MudXR3ZW50ZS5ubD4gZm9yIGRvaW5nIG5pY2UKKyAgICAgICAgICBpbnRyb2R1Y3RvcnkgZG9jdW1lbnRzIChjb21wZXRpbmcgd2l0aCBBbGJlcnRvJ3MgOikuCisKKyAgICAgICAgLSBDaHJpc3RpYW4gR3JvZXNzbGVyIDxjcGdAYWxhZGRpbi5kZT4sIGZvciBpdCdzIGhlbHAgb24gdGhvc2UKKyAgICAgICAgICBpdGNoeSBiaXRzIC4uLiA6KQorCisgICAgICAgIC0gUGF1bCBNYWNLZXJyYXMgZm9yIHBvbGlzaGluZyBPSENJIGFuZCBwdXNoaW5nIG1lIGhhcmRlciBmb3IKKyAgICAgICAgICB0aGUgaU1hYyBzdXBwb3J0LCBnaXZpbmcgaW1wcm92ZW1lbnRzIGFuZCBlbmhhbmNlbWVudHMuCisKKyAgICAgICAgLSBGZXJuYW5kbyBIZXJyZXJhIDxmaGVycmVyYUBldXJpZWxlYy5ldHNpdC51cG0uZXM+IGhhcyB0YWtlbgorICAgICAgICAgIGNoYXJnZSBvZiBjb21wb3NpbmcsIG1haW50YWluaW5nIGFuZCBmZWVkaW5nIHRoZQorICAgICAgICAgIGxvbmctYXdhaXRlZCwgdW5pcXVlIGFuZCBtYXJ2ZWxvdXMgVVVTQkQgRkFRISBUYWRhYWFhISEhCisKKyAgICAgICAgLSBSYXNjYSBHbWVsY2ggPHRocm9uQGdteC5kZT4gaGFzIHJldml2ZWQgdGhlIHJhdyBkcml2ZXIgYW5kCisgICAgICAgICAgcG9pbnRlZCBidWdzLCBhcyB3ZWxsIGFzIHN0YXJ0ZWQgdGhlIHV1c2JkLXV0aWxzIHBhY2thZ2UuCisKKyAgICAgICAgLSBQZXRlciBEZXR0b3JpIDxkZXR0b3JpQG96eS5kZWMuY29tPiBpcyB1bmNvdmVyaW5nIGJ1Z3MgbGlrZQorICAgICAgICAgIGNyYXp5LCBhcyB3ZWxsIGFzIG1ha2luZyBjb29sIHN1Z2dlc3Rpb25zLCBncmVhdCA6KQorCisgICAgICAgIC0gQWxsIHRoZSBGcmVlIFNvZnR3YXJlIGFuZCBMaW51eCBjb21tdW5pdHksIHRoZSBGU0YgJiB0aGUgR05VCisgICAgICAgICAgcHJvamVjdCwgdGhlIE1JVCBYIGNvbnNvcnRpdW0sIHRoZSBUZVggcGVvcGxlIC4uLiBldmVyeW9uZSEKKyAgICAgICAgICBZb3Uga25vdyB3aG8geW91IGFyZSEKKworICAgICAgICAtIEJpZyB0aGFua3MgdG8gUmljaGFyZCBTdGFsbG1hbiBmb3IgY3JlYXRpbmcgRW1hY3MhCisKKyAgICAgICAgLSBUaGUgcGVvcGxlIGF0IHRoZSBsaW51eC11c2IgbWFpbGluZyBsaXN0LCBmb3IgcmVhZGluZyBzbworICAgICAgICAgIG1hbnkgbWVzc2FnZXMgOikgT2ssIG5vIG1vcmUga2lkZGluZzsgZm9yIGFsbCB5b3VyIGFkdmlzZXMhCisKKyAgICAgICAgLSBBbGwgdGhlIHBlb3BsZSBhdCB0aGUgVVNCIEltcGxlbWVudG9ycyBGb3J1bSBmb3IgdGhlaXIKKyAgICAgICAgICBoZWxwIGFuZCBhc3Npc3RhbmNlLgorCisgICAgICAgIC0gTmF0aGFuIE15ZXJzIDxuY21AY2FudHJpcC5vcmc+LCBmb3IgaGlzIGFkdmljZSEgKGhvcGUgeW91CisgICAgICAgICAgbGlrZWQgQ2liZWxlcycgcGFydHkpLgorCisgICAgICAgIC0gTGludXMgVG9ydmFsZHMsIGZvciBzdGFydGluZywgZGV2ZWxvcGluZyBhbmQgbWFuYWdpbmcgTGludXguCisKKyAgICAgICAgLSBNaWtlIFNtaXRoLCBDcmFpZyBLZWl0aGxleSwgVGhpZXJyeSBHaXJvbiBhbmQgSmFuZXQgU2NoYW5rCisgICAgICAgICAgZm9yIGNvbnZpbmNpbmcgbWUgVVNCIFN0YW5kYXJkIGh1YnMgYXJlIG5vdCB0aGF0IHN0YW5kYXJkCisgICAgICAgICAgYW5kIHRoYXQncyBnb29kIHRvIGFsbG93IGZvciB2ZW5kb3Igc3BlY2lmaWMgcXVpcmtzIG9uIHRoZQorICAgICAgICAgIHN0YW5kYXJkIGh1YiBkcml2ZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VzYi9VUkIudHh0IGIvRG9jdW1lbnRhdGlvbi91c2IvVVJCLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGRhMGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi91c2IvVVJCLnR4dApAQCAtMCwwICsxLDI2MSBAQAorUmV2aXNlZDogMjAwMC1EZWMtMDUuCitBZ2FpbjogICAyMDAyLUp1bC0wNgorQWdhaW46ICAgMjAwNS1TZXAtMTkKKworICAgIE5PVEU6CisKKyAgICBUaGUgVVNCIHN1YnN5c3RlbSBub3cgaGFzIGEgc3Vic3RhbnRpYWwgc2VjdGlvbiBpbiAiVGhlIExpbnV4IEtlcm5lbCBBUEkiCisgICAgZ3VpZGUgKGluIERvY3VtZW50YXRpb24vRG9jQm9vayksIGdlbmVyYXRlZCBmcm9tIHRoZSBjdXJyZW50IHNvdXJjZQorICAgIGNvZGUuICBUaGlzIHBhcnRpY3VsYXIgZG9jdW1lbnRhdGlvbiBmaWxlIGlzbid0IHBhcnRpY3VsYXJseSBjdXJyZW50IG9yCisgICAgY29tcGxldGU7IGRvbid0IHJlbHkgb24gaXQgZXhjZXB0IGZvciBhIHF1aWNrIG92ZXJ2aWV3LgorCisKKzEuMS4gQmFzaWMgY29uY2VwdCBvciAnV2hhdCBpcyBhbiBVUkI/JworCitUaGUgYmFzaWMgaWRlYSBvZiB0aGUgbmV3IGRyaXZlciBpcyBtZXNzYWdlIHBhc3NpbmcsIHRoZSBtZXNzYWdlIGl0c2VsZiBpcyAKK2NhbGxlZCBVU0IgUmVxdWVzdCBCbG9jaywgb3IgVVJCIGZvciBzaG9ydC4gCisKKy0gQW4gVVJCIGNvbnNpc3RzIG9mIGFsbCByZWxldmFudCBpbmZvcm1hdGlvbiB0byBleGVjdXRlIGFueSBVU0IgdHJhbnNhY3Rpb24gCisgIGFuZCBkZWxpdmVyIHRoZSBkYXRhIGFuZCBzdGF0dXMgYmFjay4gCisKKy0gRXhlY3V0aW9uIG9mIGFuIFVSQiBpcyBpbmhlcmVudGx5IGFuIGFzeW5jaHJvbm91cyBvcGVyYXRpb24sIGkuZS4gdGhlIAorICB1c2Jfc3VibWl0X3VyYih1cmIpIGNhbGwgcmV0dXJucyBpbW1lZGlhdGVseSBhZnRlciBpdCBoYXMgc3VjY2Vzc2Z1bGx5CisgIHF1ZXVlZCB0aGUgcmVxdWVzdGVkIGFjdGlvbi4KKworLSBUcmFuc2ZlcnMgZm9yIG9uZSBVUkIgY2FuIGJlIGNhbmNlbGVkIHdpdGggdXNiX3VubGlua191cmIodXJiKSBhdCBhbnkgdGltZS4gCisKKy0gRWFjaCBVUkIgaGFzIGEgY29tcGxldGlvbiBoYW5kbGVyLCB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgdGhlIGFjdGlvbgorICBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgY29tcGxldGVkIG9yIGNhbmNlbGVkLiBUaGUgVVJCIGFsc28gY29udGFpbnMgYQorICBjb250ZXh0LXBvaW50ZXIgZm9yIHBhc3NpbmcgaW5mb3JtYXRpb24gdG8gdGhlIGNvbXBsZXRpb24gaGFuZGxlci4KKworLSBFYWNoIGVuZHBvaW50IGZvciBhIGRldmljZSBsb2dpY2FsbHkgc3VwcG9ydHMgYSBxdWV1ZSBvZiByZXF1ZXN0cy4KKyAgWW91IGNhbiBmaWxsIHRoYXQgcXVldWUsIHNvIHRoYXQgdGhlIFVTQiBoYXJkd2FyZSBjYW4gc3RpbGwgdHJhbnNmZXIKKyAgZGF0YSB0byBhbiBlbmRwb2ludCB3aGlsZSB5b3VyIGRyaXZlciBoYW5kbGVzIGNvbXBsZXRpb24gb2YgYW5vdGhlci4KKyAgVGhpcyBtYXhpbWl6ZXMgdXNlIG9mIFVTQiBiYW5kd2lkdGgsIGFuZCBzdXBwb3J0cyBzZWFtbGVzcyBzdHJlYW1pbmcKKyAgb2YgZGF0YSB0byAob3IgZnJvbSkgZGV2aWNlcyB3aGVuIHVzaW5nIHBlcmlvZGljIHRyYW5zZmVyIG1vZGVzLgorCisKKzEuMi4gVGhlIFVSQiBzdHJ1Y3R1cmUKKworU29tZSBvZiB0aGUgZmllbGRzIGluIGFuIFVSQiBhcmU6CisKK3N0cnVjdCB1cmIKK3sKKy8vIChJTikgZGV2aWNlIGFuZCBwaXBlIHNwZWNpZnkgdGhlIGVuZHBvaW50IHF1ZXVlCisJc3RydWN0IHVzYl9kZXZpY2UgKmRldjsgICAgICAgICAvLyBwb2ludGVyIHRvIGFzc29jaWF0ZWQgVVNCIGRldmljZQorCXVuc2lnbmVkIGludCBwaXBlOyAgICAgICAgICAgICAgLy8gZW5kcG9pbnQgaW5mb3JtYXRpb24KKworCXVuc2lnbmVkIGludCB0cmFuc2Zlcl9mbGFnczsgICAgLy8gSVNPX0FTQVAsIFNIT1JUX05PVF9PSywgZXRjLgorCisvLyAoSU4pIGFsbCB1cmJzIG5lZWQgY29tcGxldGlvbiByb3V0aW5lcworCXZvaWQgKmNvbnRleHQ7ICAgICAgICAgICAgICAgICAgLy8gY29udGV4dCBmb3IgY29tcGxldGlvbiByb3V0aW5lCisJdm9pZCAoKmNvbXBsZXRlKShzdHJ1Y3QgdXJiICopOyAvLyBwb2ludGVyIHRvIGNvbXBsZXRpb24gcm91dGluZQorCisvLyAoT1VUKSBzdGF0dXMgYWZ0ZXIgZWFjaCBjb21wbGV0aW9uCisJaW50IHN0YXR1czsgICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm5lZCBzdGF0dXMKKworLy8gKElOKSBidWZmZXIgdXNlZCBmb3IgZGF0YSB0cmFuc2ZlcnMKKwl2b2lkICp0cmFuc2Zlcl9idWZmZXI7ICAgICAgICAgIC8vIGFzc29jaWF0ZWQgZGF0YSBidWZmZXIKKwlpbnQgdHJhbnNmZXJfYnVmZmVyX2xlbmd0aDsgICAgIC8vIGRhdGEgYnVmZmVyIGxlbmd0aAorCWludCBudW1iZXJfb2ZfcGFja2V0czsgICAgICAgICAgLy8gc2l6ZSBvZiBpc29fZnJhbWVfZGVzYworCisvLyAoT1VUKSBzb21ldGltZXMgb25seSBwYXJ0IG9mIENUUkwvQlVMSy9JTlRSIHRyYW5zZmVyX2J1ZmZlciBpcyB1c2VkCisJaW50IGFjdHVhbF9sZW5ndGg7ICAgICAgICAgICAgICAvLyBhY3R1YWwgZGF0YSBidWZmZXIgbGVuZ3RoCisKKy8vIChJTikgc2V0dXAgc3RhZ2UgZm9yIENUUkwgKHBhc3MgYSBzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0KQorCXVuc2lnbmVkIGNoYXIqIHNldHVwX3BhY2tldDsgICAgLy8gc2V0dXAgcGFja2V0IChjb250cm9sIG9ubHkpCisKKy8vIE9ubHkgZm9yIFBFUklPRElDIHRyYW5zZmVycyAoSVNPLCBJTlRFUlJVUFQpCisgICAgLy8gKElOL09VVCkgc3RhcnRfZnJhbWUgaXMgc2V0IHVubGVzcyBJU09fQVNBUCBpc24ndCBzZXQKKwlpbnQgc3RhcnRfZnJhbWU7ICAgICAgICAgICAgICAgIC8vIHN0YXJ0IGZyYW1lCisJaW50IGludGVydmFsOyAgICAgICAgICAgICAgICAgICAvLyBwb2xsaW5nIGludGVydmFsCisKKyAgICAvLyBJU08gb25seTogcGFja2V0cyBhcmUgb25seSAiYmVzdCBlZmZvcnQiOyBlYWNoIGNhbiBoYXZlIGVycm9ycworCWludCBlcnJvcl9jb3VudDsgICAgICAgICAgICAgICAgLy8gbnVtYmVyIG9mIGVycm9ycworCXN0cnVjdCB1c2JfaXNvX3BhY2tldF9kZXNjcmlwdG9yIGlzb19mcmFtZV9kZXNjWzBdOworfTsKKworWW91ciBkcml2ZXIgbXVzdCBjcmVhdGUgdGhlICJwaXBlIiB2YWx1ZSB1c2luZyB2YWx1ZXMgZnJvbSB0aGUgYXBwcm9wcmlhdGUKK2VuZHBvaW50IGRlc2NyaXB0b3IgaW4gYW4gaW50ZXJmYWNlIHRoYXQgaXQncyBjbGFpbWVkLgorCisKKzEuMy4gSG93IHRvIGdldCBhbiBVUkI/CisKK1VSQnMgYXJlIGFsbG9jYXRlZCB3aXRoIHRoZSBmb2xsb3dpbmcgY2FsbAorCisJc3RydWN0IHVyYiAqdXNiX2FsbG9jX3VyYihpbnQgaXNvZnJhbWVzLCBpbnQgbWVtX2ZsYWdzKQorCitSZXR1cm4gdmFsdWUgaXMgYSBwb2ludGVyIHRvIHRoZSBhbGxvY2F0ZWQgVVJCLCAwIGlmIGFsbG9jYXRpb24gZmFpbGVkLgorVGhlIHBhcmFtZXRlciBpc29mcmFtZXMgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgaXNvY2hyb25vdXMgdHJhbnNmZXIgZnJhbWVzCit5b3Ugd2FudCB0byBzY2hlZHVsZS4gRm9yIENUUkwvQlVMSy9JTlQsIHVzZSAwLiAgVGhlIG1lbV9mbGFncyBwYXJhbWV0ZXIKK2hvbGRzIHN0YW5kYXJkIG1lbW9yeSBhbGxvY2F0aW9uIGZsYWdzLCBsZXR0aW5nIHlvdSBjb250cm9sIChhbW9uZyBvdGhlcgordGhpbmdzKSB3aGV0aGVyIHRoZSB1bmRlcmx5aW5nIGNvZGUgbWF5IGJsb2NrIG9yIG5vdC4KKworVG8gZnJlZSBhbiBVUkIsIHVzZQorCisJdm9pZCB1c2JfZnJlZV91cmIoc3RydWN0IHVyYiAqdXJiKQorCitZb3UgbWF5IGZyZWUgYW4gdXJiIHRoYXQgeW91J3ZlIHN1Ym1pdHRlZCwgYnV0IHdoaWNoIGhhc24ndCB5ZXQgYmVlbgorcmV0dXJuZWQgdG8geW91IGluIGEgY29tcGxldGlvbiBjYWxsYmFjay4gIEl0IHdpbGwgYXV0b21hdGljYWxseSBiZQorZGVhbGxvY2F0ZWQgd2hlbiBpdCBpcyBubyBsb25nZXIgaW4gdXNlLgorCisKKzEuNC4gV2hhdCBoYXMgdG8gYmUgZmlsbGVkIGluPworCitEZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdHJhbnNhY3Rpb24sIHRoZXJlIGFyZSBzb21lIGlubGluZSBmdW5jdGlvbnMgCitkZWZpbmVkIGluIDxsaW51eC91c2IuaD4gdG8gc2ltcGxpZnkgdGhlIGluaXRpYWxpemF0aW9uLCBzdWNoIGFzCitmaWxsX2NvbnRyb2xfdXJiKCkgYW5kIGZpbGxfYnVsa191cmIoKS4gIEluIGdlbmVyYWwsIHRoZXkgbmVlZCB0aGUgdXNiCitkZXZpY2UgcG9pbnRlciwgdGhlIHBpcGUgKHVzdWFsIGZvcm1hdCBmcm9tIHVzYi5oKSwgdGhlIHRyYW5zZmVyIGJ1ZmZlciwKK3RoZSBkZXNpcmVkIHRyYW5zZmVyIGxlbmd0aCwgdGhlIGNvbXBsZXRpb24gIGhhbmRsZXIsIGFuZCBpdHMgY29udGV4dC4gCitUYWtlIGEgbG9vayBhdCB0aGUgc29tZSBleGlzdGluZyBkcml2ZXJzIHRvIHNlZSBob3cgdGhleSdyZSB1c2VkLgorCitGbGFnczoKK0ZvciBJU08gdGhlcmUgYXJlIHR3byBzdGFydHVwIGJlaGF2aW9yczogU3BlY2lmaWVkIHN0YXJ0X2ZyYW1lIG9yIEFTQVAuCitGb3IgQVNBUCBzZXQgVVJCX0lTT19BU0FQIGluIHRyYW5zZmVyX2ZsYWdzLgorCitJZiBzaG9ydCBwYWNrZXRzIHNob3VsZCBOT1QgYmUgdG9sZXJhdGVkLCBzZXQgVVJCX1NIT1JUX05PVF9PSyBpbiAKK3RyYW5zZmVyX2ZsYWdzLgorCisKKzEuNS4gSG93IHRvIHN1Ym1pdCBhbiBVUkI/CisKK0p1c3QgY2FsbAorCisJaW50IHVzYl9zdWJtaXRfdXJiKHN0cnVjdCB1cmIgKnVyYiwgaW50IG1lbV9mbGFncykKKworVGhlIG1lbV9mbGFncyBwYXJhbWV0ZXIsIHN1Y2ggYXMgU0xBQl9BVE9NSUMsIGNvbnRyb2xzIG1lbW9yeSBhbGxvY2F0aW9uLAorc3VjaCBhcyB3aGV0aGVyIHRoZSBsb3dlciBsZXZlbHMgbWF5IGJsb2NrIHdoZW4gbWVtb3J5IGlzIHRpZ2h0LgorCitJdCBpbW1lZGlhdGVseSByZXR1cm5zLCBlaXRoZXIgd2l0aCBzdGF0dXMgMCAocmVxdWVzdCBxdWV1ZWQpIG9yIHNvbWUKK2Vycm9yIGNvZGUsIHVzdWFsbHkgY2F1c2VkIGJ5IHRoZSBmb2xsb3dpbmc6CisKKy0gT3V0IG9mIG1lbW9yeSAoLUVOT01FTSkKKy0gVW5wbHVnZ2VkIGRldmljZSAoLUVOT0RFVikKKy0gU3RhbGxlZCBlbmRwb2ludCAoLUVQSVBFKQorLSBUb28gbWFueSBxdWV1ZWQgSVNPIHRyYW5zZmVycyAoLUVBR0FJTikKKy0gVG9vIG1hbnkgcmVxdWVzdGVkIElTTyBmcmFtZXMgKC1FRkJJRykKKy0gSW52YWxpZCBJTlQgaW50ZXJ2YWwgKC1FSU5WQUwpCistIE1vcmUgdGhhbiBvbmUgcGFja2V0IGZvciBJTlQgKC1FSU5WQUwpCisKK0FmdGVyIHN1Ym1pc3Npb24sIHVyYi0+c3RhdHVzIGlzIC1FSU5QUk9HUkVTUzsgaG93ZXZlciwgeW91IHNob3VsZCBuZXZlcgorbG9vayBhdCB0aGF0IHZhbHVlIGV4Y2VwdCBpbiB5b3VyIGNvbXBsZXRpb24gY2FsbGJhY2suCisKK0ZvciBpc29jaHJvbm91cyBlbmRwb2ludHMsIHlvdXIgY29tcGxldGlvbiBoYW5kbGVycyBzaG91bGQgKHJlKXN1Ym1pdAorVVJCcyB0byB0aGUgc2FtZSBlbmRwb2ludCB3aXRoIHRoZSBJU09fQVNBUCBmbGFnLCB1c2luZyBtdWx0aS1idWZmZXJpbmcsCit0byBnZXQgc2VhbWxlc3MgSVNPIHN0cmVhbWluZy4KKworCisxLjYuIEhvdyB0byBjYW5jZWwgYW4gYWxyZWFkeSBydW5uaW5nIFVSQj8KKworVGhlcmUgYXJlIHR3byB3YXlzIHRvIGNhbmNlbCBhbiBVUkIgeW91J3ZlIHN1Ym1pdHRlZCBidXQgd2hpY2ggaGFzbid0CitiZWVuIHJldHVybmVkIHRvIHlvdXIgZHJpdmVyIHlldC4gIEZvciBhbiBhc3luY2hyb25vdXMgY2FuY2VsLCBjYWxsCisKKwlpbnQgdXNiX3VubGlua191cmIoc3RydWN0IHVyYiAqdXJiKQorCitJdCByZW1vdmVzIHRoZSB1cmIgZnJvbSB0aGUgaW50ZXJuYWwgbGlzdCBhbmQgZnJlZXMgYWxsIGFsbG9jYXRlZAorSFcgZGVzY3JpcHRvcnMuIFRoZSBzdGF0dXMgaXMgY2hhbmdlZCB0byByZWZsZWN0IHVubGlua2luZy4gIE5vdGUKK3RoYXQgdGhlIFVSQiB3aWxsIG5vdCBub3JtYWxseSBoYXZlIGZpbmlzaGVkIHdoZW4gdXNiX3VubGlua191cmIoKQorcmV0dXJuczsgeW91IG11c3Qgc3RpbGwgd2FpdCBmb3IgdGhlIGNvbXBsZXRpb24gaGFuZGxlciB0byBiZSBjYWxsZWQuCisKK1RvIGNhbmNlbCBhbiBVUkIgc3luY2hyb25vdXNseSwgY2FsbAorCisJdm9pZCB1c2Jfa2lsbF91cmIoc3RydWN0IHVyYiAqdXJiKQorCitJdCBkb2VzIGV2ZXJ5dGhpbmcgdXNiX3VubGlua191cmIgZG9lcywgYW5kIGluIGFkZGl0aW9uIGl0IHdhaXRzCit1bnRpbCBhZnRlciB0aGUgVVJCIGhhcyBiZWVuIHJldHVybmVkIGFuZCB0aGUgY29tcGxldGlvbiBoYW5kbGVyCitoYXMgZmluaXNoZWQuICBJdCBhbHNvIG1hcmtzIHRoZSBVUkIgYXMgdGVtcG9yYXJpbHkgdW51c2FibGUsIHNvCit0aGF0IGlmIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgb3IgYW55b25lIGVsc2UgdHJpZXMgdG8gcmVzdWJtaXQgaXQKK3RoZXkgd2lsbCBnZXQgYSAtRVBFUk0gZXJyb3IuICBUaHVzIHlvdSBjYW4gYmUgc3VyZSB0aGF0IHdoZW4KK3VzYl9raWxsX3VyYigpIHJldHVybnMsIHRoZSBVUkIgaXMgdG90YWxseSBpZGxlLgorCitUaGVyZSBpcyBhIGxpZmV0aW1lIGlzc3VlIHRvIGNvbnNpZGVyLiAgQW4gVVJCIG1heSBjb21wbGV0ZSBhdCBhbnkKK3RpbWUsIGFuZCB0aGUgY29tcGxldGlvbiBoYW5kbGVyIG1heSBmcmVlIHRoZSBVUkIuICBJZiB0aGlzIGhhcHBlbnMKK3doaWxlIHVzYl91bmxpbmtfdXJiIG9yIHVzYl9raWxsX3VyYiBpcyBydW5uaW5nLCBpdCB3aWxsIGNhdXNlIGEKK21lbW9yeS1hY2Nlc3MgdmlvbGF0aW9uLiAgVGhlIGRyaXZlciBpcyByZXNwb25zaWJsZSBmb3IgYXZvaWRpbmcgdGhpcywKK3doaWNoIG9mdGVuIG1lYW5zIHNvbWUgc29ydCBvZiBsb2NrIHdpbGwgYmUgbmVlZGVkIHRvIHByZXZlbnQgdGhlIFVSQgorZnJvbSBiZWluZyBkZWFsbG9jYXRlZCB3aGlsZSBpdCBpcyBzdGlsbCBpbiB1c2UuCisKK09uIHRoZSBvdGhlciBoYW5kLCBzaW5jZSB1c2JfdW5saW5rX3VyYiBtYXkgZW5kIHVwIGNhbGxpbmcgdGhlCitjb21wbGV0aW9uIGhhbmRsZXIsIHRoZSBoYW5kbGVyIG11c3Qgbm90IHRha2UgYW55IGxvY2sgdGhhdCBpcyBoZWxkCit3aGVuIHVzYl91bmxpbmtfdXJiIGlzIGludm9rZWQuICBUaGUgZ2VuZXJhbCBzb2x1dGlvbiB0byB0aGlzIHByb2JsZW0KK2lzIHRvIGluY3JlbWVudCB0aGUgVVJCJ3MgcmVmZXJlbmNlIGNvdW50IHdoaWxlIGhvbGRpbmcgdGhlIGxvY2ssIHRoZW4KK2Ryb3AgdGhlIGxvY2sgYW5kIGNhbGwgdXNiX3VubGlua191cmIgb3IgdXNiX2tpbGxfdXJiLCBhbmQgdGhlbgorZGVjcmVtZW50IHRoZSBVUkIncyByZWZlcmVuY2UgY291bnQuICBZb3UgaW5jcmVtZW50IHRoZSByZWZlcmVuY2UKK2NvdW50IGJ5IGNhbGxpbmcKKworCXN0cnVjdCB1cmIgKnVzYl9nZXRfdXJiKHN0cnVjdCB1cmIgKnVyYikKKworKGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlOyBpdCBpcyB0aGUgc2FtZSBhcyB0aGUgYXJndW1lbnQpIGFuZAorZGVjcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQgYnkgY2FsbGluZyB1c2JfZnJlZV91cmIuICBPZiBjb3Vyc2UsCitub25lIG9mIHRoaXMgaXMgbmVjZXNzYXJ5IGlmIHRoZXJlJ3Mgbm8gZGFuZ2VyIG9mIHRoZSBVUkIgYmVpbmcgZnJlZWQKK2J5IHRoZSBjb21wbGV0aW9uIGhhbmRsZXIuCisKKworMS43LiBXaGF0IGFib3V0IHRoZSBjb21wbGV0aW9uIGhhbmRsZXI/CisKK1RoZSBoYW5kbGVyIGlzIG9mIHRoZSBmb2xsb3dpbmcgdHlwZToKKworCXR5cGVkZWYgdm9pZCAoKnVzYl9jb21wbGV0ZV90KShzdHJ1Y3QgdXJiICopCisKK0kuZS4sIGl0IGdldHMgdGhlIFVSQiB0aGF0IGNhdXNlZCB0aGUgY29tcGxldGlvbiBjYWxsLiBJbiB0aGUgY29tcGxldGlvbgoraGFuZGxlciwgeW91IHNob3VsZCBoYXZlIGEgbG9vayBhdCB1cmItPnN0YXR1cyB0byBkZXRlY3QgYW55IFVTQiBlcnJvcnMuCitTaW5jZSB0aGUgY29udGV4dCBwYXJhbWV0ZXIgaXMgaW5jbHVkZWQgaW4gdGhlIFVSQiwgeW91IGNhbiBwYXNzCitpbmZvcm1hdGlvbiB0byB0aGUgY29tcGxldGlvbiBoYW5kbGVyLgorCitOb3RlIHRoYXQgZXZlbiB3aGVuIGFuIGVycm9yIChvciB1bmxpbmspIGlzIHJlcG9ydGVkLCBkYXRhIG1heSBoYXZlIGJlZW4KK3RyYW5zZmVycmVkLiAgVGhhdCdzIGJlY2F1c2UgVVNCIHRyYW5zZmVycyBhcmUgcGFja2V0aXplZDsgaXQgbWlnaHQgdGFrZQorc2l4dGVlbiBwYWNrZXRzIHRvIHRyYW5zZmVyIHlvdXIgMUtCeXRlIGJ1ZmZlciwgYW5kIHRlbiBvZiB0aGVtIG1pZ2h0CitoYXZlIHRyYW5zZmVycmVkIHN1Y2Nlc3NmdWxseSBiZWZvcmUgdGhlIGNvbXBsZXRpb24gd2FzIGNhbGxlZC4KKworCitOT1RFOiAgKioqKiogV0FSTklORyAqKioqKgorTkVWRVIgU0xFRVAgSU4gQSBDT01QTEVUSU9OIEhBTkRMRVIuICBUaGVzZSBhcmUgb2Z0ZW4gY2FsbGVkIGluIGF0b21pYworY29udGV4dC4KKworSW4gdGhlIGN1cnJlbnQga2VybmVsLCBjb21wbGV0aW9uIGhhbmRsZXJzIHJ1biB3aXRoIGxvY2FsIGludGVycnVwdHMKK2Rpc2FibGVkLCBidXQgaW4gdGhlIGZ1dHVyZSB0aGlzIHdpbGwgYmUgY2hhbmdlZCwgc28gZG9uJ3QgYXNzdW1lIHRoYXQKK2xvY2FsIElSUXMgYXJlIGFsd2F5cyBkaXNhYmxlZCBpbnNpZGUgY29tcGxldGlvbiBoYW5kbGVycy4KKworMS44LiBIb3cgdG8gZG8gaXNvY2hyb25vdXMgKElTTykgdHJhbnNmZXJzPworCitGb3IgSVNPIHRyYW5zZmVycyB5b3UgaGF2ZSB0byBmaWxsIGEgdXNiX2lzb19wYWNrZXRfZGVzY3JpcHRvciBzdHJ1Y3R1cmUsCithbGxvY2F0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgVVJCIGJ5IHVzYl9hbGxvY191cmIobixtZW1fZmxhZ3MpLCBmb3IgZWFjaAorcGFja2V0IHlvdSB3YW50IHRvIHNjaGVkdWxlLiAgIFlvdSBhbHNvIGhhdmUgdG8gc2V0IHVyYi0+aW50ZXJ2YWwgdG8gc2F5Citob3cgb2Z0ZW4gdG8gbWFrZSB0cmFuc2ZlcnM7IGl0J3Mgb2Z0ZW4gb25lIHBlciBmcmFtZSAod2hpY2ggaXMgb25jZQorZXZlcnkgbWljcm9mcmFtZSBmb3IgaGlnaHNwZWVkIGRldmljZXMpLiAgVGhlIGFjdHVhbCBpbnRlcnZhbCB1c2VkIHdpbGwKK2JlIGEgcG93ZXIgb2YgdHdvIHRoYXQncyBubyBiaWdnZXIgdGhhbiB3aGF0IHlvdSBzcGVjaWZ5LgorCitUaGUgdXNiX3N1Ym1pdF91cmIoKSBjYWxsIG1vZGlmaWVzIHVyYi0+aW50ZXJ2YWwgdG8gdGhlIGltcGxlbWVudGVkIGludGVydmFsCit2YWx1ZSB0aGF0IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgcmVxdWVzdGVkIGludGVydmFsIHZhbHVlLiAgSWYKK0lTT19BU0FQIHNjaGVkdWxpbmcgaXMgdXNlZCwgdXJiLT5zdGFydF9mcmFtZSBpcyBhbHNvIHVwZGF0ZWQuCisKK0ZvciBlYWNoIGVudHJ5IHlvdSBoYXZlIHRvIHNwZWNpZnkgdGhlIGRhdGEgb2Zmc2V0IGZvciB0aGlzIGZyYW1lIChiYXNlIGlzCit0cmFuc2Zlcl9idWZmZXIpLCBhbmQgdGhlIGxlbmd0aCB5b3Ugd2FudCB0byB3cml0ZS9leHBlY3QgdG8gcmVhZC4KK0FmdGVyIGNvbXBsZXRpb24sIGFjdHVhbF9sZW5ndGggY29udGFpbnMgdGhlIGFjdHVhbCB0cmFuc2ZlcnJlZCBsZW5ndGggYW5kIAorc3RhdHVzIGNvbnRhaW5zIHRoZSByZXN1bHRpbmcgc3RhdHVzIGZvciB0aGUgSVNPIHRyYW5zZmVyIGZvciB0aGlzIGZyYW1lLgorSXQgaXMgYWxsb3dlZCB0byBzcGVjaWZ5IGEgdmFyeWluZyBsZW5ndGggZnJvbSBmcmFtZSB0byBmcmFtZSAoZS5nLiBmb3IKK2F1ZGlvIHN5bmNocm9uaXNhdGlvbi9hZGFwdGl2ZSB0cmFuc2ZlciByYXRlcykuIFlvdSBjYW4gYWxzbyB1c2UgdGhlIGxlbmd0aCAKKzAgdG8gb21pdCBvbmUgb3IgbW9yZSBmcmFtZXMgKHN0cmlwaW5nKS4KKworRm9yIHNjaGVkdWxpbmcgeW91IGNhbiBjaG9vc2UgeW91ciBvd24gc3RhcnQgZnJhbWUgb3IgSVNPX0FTQVAuIEFzIGV4cGxhaW5lZAorZWFybGllciwgaWYgeW91IGFsd2F5cyBrZWVwIGF0IGxlYXN0IG9uZSBVUkIgcXVldWVkIGFuZCB5b3VyIGNvbXBsZXRpb24KK2tlZXBzIChyZSlzdWJtaXR0aW5nIGEgbGF0ZXIgVVJCLCB5b3UnbGwgZ2V0IHNtb290aCBJU08gc3RyZWFtaW5nIChpZiB1c2IKK2JhbmR3aWR0aCB1dGlsaXphdGlvbiBhbGxvd3MpLgorCitJZiB5b3Ugc3BlY2lmeSB5b3VyIG93biBzdGFydCBmcmFtZSwgbWFrZSBzdXJlIGl0J3Mgc2V2ZXJhbCBmcmFtZXMgaW4gYWR2YW5jZQorb2YgdGhlIGN1cnJlbnQgZnJhbWUuICBZb3UgbWlnaHQgd2FudCB0aGlzIG1vZGVsIGlmIHlvdSdyZSBzeW5jaHJvbml6aW5nCitJU08gZGF0YSB3aXRoIHNvbWUgb3RoZXIgZXZlbnQgc3RyZWFtLgorCisKKzEuOS4gSG93IHRvIHN0YXJ0IGludGVycnVwdCAoSU5UKSB0cmFuc2ZlcnM/CisKK0ludGVycnVwdCB0cmFuc2ZlcnMsIGxpa2UgaXNvY2hyb25vdXMgdHJhbnNmZXJzLCBhcmUgcGVyaW9kaWMsIGFuZCBoYXBwZW4KK2luIGludGVydmFscyB0aGF0IGFyZSBwb3dlcnMgb2YgdHdvICgxLCAyLCA0IGV0YykgdW5pdHMuICBVbml0cyBhcmUgZnJhbWVzCitmb3IgZnVsbCBhbmQgbG93IHNwZWVkIGRldmljZXMsIGFuZCBtaWNyb2ZyYW1lcyBmb3IgaGlnaCBzcGVlZCBvbmVzLgorVGhlIHVzYl9zdWJtaXRfdXJiKCkgY2FsbCBtb2RpZmllcyB1cmItPmludGVydmFsIHRvIHRoZSBpbXBsZW1lbnRlZCBpbnRlcnZhbAordmFsdWUgdGhhdCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHJlcXVlc3RlZCBpbnRlcnZhbCB2YWx1ZS4KKworSW4gTGludXggMi42LCB1bmxpa2UgZWFybGllciB2ZXJzaW9ucywgaW50ZXJydXB0IFVSQnMgYXJlIG5vdCBhdXRvbWFnaWNhbGx5CityZXN0YXJ0ZWQgd2hlbiB0aGV5IGNvbXBsZXRlLiAgVGhleSBlbmQgd2hlbiB0aGUgY29tcGxldGlvbiBoYW5kbGVyIGlzCitjYWxsZWQsIGp1c3QgbGlrZSBvdGhlciBVUkJzLiAgSWYgeW91IHdhbnQgYW4gaW50ZXJydXB0IFVSQiB0byBiZSByZXN0YXJ0ZWQsCit5b3VyIGNvbXBsZXRpb24gaGFuZGxlciBtdXN0IHJlc3VibWl0IGl0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi91c2IvV1VTQi1EZXNpZ24tb3ZlcnZpZXcudHh0IGIvRG9jdW1lbnRhdGlvbi91c2IvV1VTQi1EZXNpZ24tb3ZlcnZpZXcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkYjQ3NjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3VzYi9XVVNCLURlc2lnbi1vdmVydmlldy50eHQKQEAgLTAsMCArMSw0MzkgQEAKKworTGludXggVVdCICsgV2lyZWxlc3MgVVNCICsgV2lORVQKKworICAgKEMpIDIwMDUtMjAwNiBJbnRlbCBDb3Jwb3JhdGlvbgorICAgSW5ha3kgUGVyZXotR29uemFsZXogPGluYWt5LnBlcmV6LWdvbnphbGV6QGludGVsLmNvbT4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbgorICAgMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCisgICAwMjExMC0xMzAxLCBVU0EuCisKKworUGxlYXNlIHZpc2l0IGh0dHA6Ly9idWdob3N0Lm9yZy90aGV3aWtpL0Rlc2lnbi1vdmVydmlldy50eHQtMS44IGZvcgordXBkYXRlZCBjb250ZW50LgorCisgICAgKiBEZXNpZ24tb3ZlcnZpZXcudHh0LTEuOAorCitUaGlzIGNvZGUgaW1wbGVtZW50cyBhIFVsdHJhIFdpZGUgQmFuZCBzdGFjayBmb3IgTGludXgsIGFzIHdlbGwgYXMKK2RyaXZlcnMgZm9yIHRoZSBVU0IgYmFzZWQgVVdCIHJhZGlvIGNvbnRyb2xsZXJzIGRlZmluZWQgaW4gdGhlCitXaXJlbGVzcyBVU0IgMS4wIHNwZWNpZmljYXRpb24gKGluY2x1ZGluZyBXaXJlbGVzcyBVU0IgaG9zdCBjb250cm9sbGVyCithbmQgYW4gSW50ZWwgV2lORVQgY29udHJvbGxlcikuCisKKyAgIDEuIEludHJvZHVjdGlvbgorICAgICAgICAgMS4gSFdBOiBIb3N0IFdpcmUgYWRhcHRlcnMsIHlvdXIgV2lyZWxlc3MgVVNCIGRvbmdsZQorCisgICAgICAgICAyLiBEV0E6IERldmljZSBXaXJlZCBBZGFwdG9yLCBhIFdpcmVsZXNzIFVTQiBodWIgZm9yIHdpcmVkCisgICAgICAgICAgICBkZXZpY2VzCisgICAgICAgICAzLiBXSENJOiBXaXJlbGVzcyBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlLCB0aGUgUENJIFdVU0IgaG9zdAorICAgICAgICAgICAgYWRhcHRlcgorICAgMi4gVGhlIFVXQiBzdGFjaworICAgICAgICAgMS4gRGV2aWNlcyBhbmQgaG9zdHM6IHRoZSBiYXNpYyBzdHJ1Y3R1cmUKKworICAgICAgICAgMi4gSG9zdCBDb250cm9sbGVyIGxpZmUgY3ljbGUKKworICAgICAgICAgMy4gT24gdGhlIGFpcjogYmVhY29ucyBhbmQgZW51bWVyYXRpbmcgdGhlIHJhZGlvIG5laWdoYm9yaG9vZAorCisgICAgICAgICA0LiBEZXZpY2UgbGlzdHMKKyAgICAgICAgIDUuIEJhbmR3aWR0aCBhbGxvY2F0aW9uCisKKyAgIDMuIFdpcmVsZXNzIFVTQiBIb3N0IENvbnRyb2xsZXIgZHJpdmVycworCisgICA0LiBHbG9zc2FyeQorCisKKyAgICBJbnRyb2R1Y3Rpb24KKworVVdCIGlzIGEgd2lkZS1iYW5kIGNvbW11bmljYXRpb24gcHJvdG9jb2wgdGhhdCBpcyB0byBzZXJ2ZSBhbHNvIGFzIHRoZQorbG93LWxldmVsIHByb3RvY29sIGZvciBvdGhlcnMgKG11Y2ggbGlrZSBUQ1Agc2l0cyBvbiBJUCkuIEN1cnJlbnRseQordGhlc2Ugb3RoZXJzIGFyZSBXaXJlbGVzcyBVU0IgYW5kIFRDUC9JUCwgYnV0IHNlZW1zIEJsdWV0b290aCBhbmQKK0ZpcmV3aXJlLzEzOTQgYXJlIGNvbWluZyBhbG9uZy4KKworVVdCIHVzZXMgYSBiYW5kIGZyb20gcm91Z2hseSAzIHRvIDEwIEdIeiwgdHJhbnNtaXR0aW5nIGF0IGEgbWF4IG9mCit+LTQxZEIgKG9yIDAuMDc0IHVXL01Iei0tZ2VvZ3JhcGh5IHNwZWNpZmljIGRhdGEgaXMgc3RpbGwgYmVpbmcKK25lZ290aWF0ZWQgdy8gcmVndWxhdG9ycywgc28gd2F0Y2ggZm9yIGNoYW5nZXMpLiBUaGF0IGJhbmQgaXMgZGl2aWRlZCBpbgorYSBidW5jaCBvZiB+MS41IEdIeiB3aWRlIGNoYW5uZWxzIChvciBiYW5kIGdyb3VwcykgY29tcG9zZWQgb2YgdGhyZWUKK3N1YmJhbmRzL3N1YmNoYW5uZWxzICg1MjggTUh6IGVhY2gpLiBFYWNoIGNoYW5uZWwgaXMgaW5kZXBlbmRlbnQgb2YgZWFjaAorb3RoZXIsIHNvIHlvdSBjb3VsZCBjb25zaWRlciB0aGVtIGRpZmZlcmVudCAiYnVzc2VzIi4gSW5pdGlhbGx5IHRoaXMKK2RyaXZlciBjb25zaWRlcnMgdGhlbSBhbGwgYSBzaW5nbGUgb25lLgorCitSYWRpbyB0aW1lIGlzIGRpdmlkZWQgaW4gNjU1MzYgdXMgbG9uZyAvc3VwZXJmcmFtZXMvLCBlYWNoIG9uZSBkaXZpZGVkCitpbiAyNTYgMjU2dXMgbG9uZyAvTUFTcy8gKE1lZGlhIEFsbG9jYXRpb24gU2xvdHMpLCB3aGljaCBhcmUgdGhlIGJhc2ljCit0aW1lL21lZGlhIGFsbG9jYXRpb24gdW5pdHMgZm9yIHRyYW5zZmVycmluZyBkYXRhLiBBdCB0aGUgYmVnaW5uaW5nIG9mCitlYWNoIHN1cGVyZnJhbWUgdGhlcmUgaXMgYSBCZWFjb24gUGVyaW9kIChCUCksIHdoZXJlIGV2ZXJ5IGRldmljZQordHJhbnNtaXQgaXRzIGJlYWNvbiBvbiBhIHNpbmdsZSBNQVMuIFRoZSBsZW5ndGggb2YgdGhlIEJQIGRlcGVuZHMgb24gaG93CittYW55IGRldmljZXMgYXJlIHByZXNlbnQgYW5kIHRoZSBsZW5ndGggb2YgdGhlaXIgYmVhY29ucy4KKworRGV2aWNlcyBoYXZlIGEgTUFDIChmaXhlZCwgNDggYml0IGFkZHJlc3MpIGFuZCBhIGRldmljZSAoY2hhbmdlYWJsZSwgMTYKK2JpdCBhZGRyZXNzKSBhbmQgc2VuZCBwZXJpb2RpYyBiZWFjb25zIHRvIGFkdmVydGlzZSB0aGVtc2VsdmVzIGFuZCBwYXNzCitpbmZvIG9uIHdoYXQgdGhleSBhcmUgYW5kIGRvLiBUaGV5IGFkdmVydGlzZSB0aGVpciBjYXBhYmlsaXRpZXMgYW5kIGEKK2J1bmNoIG9mIG90aGVyIHN0dWZmLgorCitUaGUgZGlmZmVyZW50IGxvZ2ljYWwgcGFydHMgb2YgdGhpcyBkcml2ZXIgYXJlOgorCisgICAgKgorCisgICAgICAqVVdCKjogdGhlIFVsdHJhLVdpZGUtQmFuZCBzdGFjayAtLSBtYW5hZ2VzIHRoZSByYWRpbyBhbmQKKyAgICAgIGFzc29jaWF0ZWQgc3BlY3RydW0gdG8gYWxsb3cgZm9yIGRldmljZXMgc2hhcmluZyBpdC4gQWxsb3dzIHRvCisgICAgICBjb250cm9sIGJhbmR3aWR0aCBhc3NpZ25tZW50LCBiZWFjb25pbmcsIHNjYW5uaW5nLCBldGMKKworICAgICoKKworICAgICAgKldVU0IqOiB0aGUgbGF5ZXIgdGhhdCBzaXRzIG9uIHRvcCBvZiBVV0IgdG8gcHJvdmlkZSBXaXJlbGVzcyBVU0IuCisgICAgICBUaGUgV2lyZWxlc3MgVVNCIHNwZWMgZGVmaW5lcyBtZWFucyB0byBjb250cm9sIGEgVVdCIHJhZGlvIGFuZCB0bworICAgICAgZG8gdGhlIGFjdHVhbCBXVVNCLgorCisKKyAgICAgIEhXQTogSG9zdCBXaXJlIGFkYXB0ZXJzLCB5b3VyIFdpcmVsZXNzIFVTQiBkb25nbGUKKworV1VTQiBhbHNvIGRlZmluZXMgYSBkZXZpY2UgY2FsbGVkIGEgSG9zdCBXaXJlIEFkYXB0b3IgKEhXQSksIHdoaWNoIGluCittZXJlIHRlcm1zIGlzIGEgVVNCIGRvbmdsZSB0aGF0IGVuYWJsZXMgeW91ciBQQyB0byBoYXZlIFVXQiBhbmQgV2lyZWxlc3MKK1VTQi4gVGhlIFdpcmVsZXNzIFVTQiBIb3N0IENvbnRyb2xsZXIgaW4gYSBIV0EgbG9va3MgdG8gdGhlIGhvc3QgbGlrZSBhCitbV2lyZWxlc3NdIFVTQiBjb250cm9sbGVyIGNvbm5lY3RlZCB2aWEgVVNCICghKQorCitUaGUgSFdBIGl0c2VsZiBpcyBicm9rZW4gaW4gdHdvIG9yIHRocmVlIG1haW4gaW50ZXJmYWNlczoKKworICAgICoKKworICAgICAgKlJDKjogUmFkaW8gY29udHJvbCAtLSB0aGlzIGltcGxlbWVudHMgYW4gaW50ZXJmYWNlIHRvIHRoZQorICAgICAgVWx0cmEtV2lkZS1CYW5kIHJhZGlvIGNvbnRyb2xsZXIuIFRoZSBkcml2ZXIgZm9yIHRoaXMgaW1wbGVtZW50cyBhCisgICAgICBVU0ItYmFzZWQgVVdCIFJhZGlvIENvbnRyb2xsZXIgdG8gdGhlIFVXQiBzdGFjay4KKworICAgICoKKworICAgICAgKkhDKjogdGhlIHdpcmVsZXNzIFVTQiBob3N0IGNvbnRyb2xsZXIuIEl0IGxvb2tzIGxpa2UgYSBVU0IgaG9zdAorICAgICAgd2hvc2Ugcm9vdCBwb3J0IGlzIHRoZSByYWRpbyBhbmQgdGhlIFdVU0IgZGV2aWNlcyBjb25uZWN0IHRvIGl0LgorICAgICAgVG8gdGhlIHN5c3RlbSBpdCBsb29rcyBsaWtlIGEgc2VwYXJhdGUgVVNCIGhvc3QuIFRoZSBkcml2ZXIgKHdpbGwpCisgICAgICBpbXBsZW1lbnQgYSBVU0IgaG9zdCBjb250cm9sbGVyIChzaW1pbGFyIHRvIFVIQ0ksIE9IQ0kgb3IgRUhDSSkKKyAgICAgIGZvciB3aGljaCB0aGUgcm9vdCBodWIgaXMgdGhlIHJhZGlvLi4uVG8gcmVpdGVyYXRlOiBpdCBpcyBhIFVTQgorICAgICAgY29udHJvbGxlciB0aGF0IGlzIGNvbm5lY3RlZCB2aWEgVVNCIGluc3RlYWQgb2YgUENJLgorCisgICAgKgorCisgICAgICAqV0lORVQqOiBzb21lIEhXIHByb3ZpZGUgYSBXaU5FVCBpbnRlcmZhY2UgKElQIG92ZXIgVVdCKS4gVGhpcworICAgICAgcGFja2FnZSBwcm92aWRlcyBhIGRyaXZlciBmb3IgaXQgKGl0IGxvb2tzIGxpa2UgYSBuZXR3b3JrCisgICAgICBpbnRlcmZhY2UsIHdpbmV0WCkuIFRoZSBkcml2ZXIgZGV0ZWN0cyB3aGVuIHRoZXJlIGlzIGEgbGluayB1cCBmb3IKKyAgICAgIHRoZWlyIHR5cGUgYW5kIGtpY2sgaW50byBnZWFyLgorCisKKyAgICAgIERXQTogRGV2aWNlIFdpcmVkIEFkYXB0b3IsIGEgV2lyZWxlc3MgVVNCIGh1YiBmb3Igd2lyZWQgZGV2aWNlcworCitUaGVzZSBhcmUgdGhlIGNvbXBsZW1lbnQgdG8gSFdBcy4gVGhleSBhcmUgYSBVU0IgaG9zdCBmb3IgY29ubmVjdGluZword2lyZWQgZGV2aWNlcywgYnV0IGl0IGlzIGNvbm5lY3RlZCB0byB5b3VyIFBDIGNvbm5lY3RlZCB2aWEgV2lyZWxlc3MKK1VTQi4gVG8gdGhlIHN5c3RlbSBpdCBsb29rcyBsaWtlIHlldCBhbm90aGVyIFVTQiBob3N0LiBUbyB0aGUgdW50cmFpbmVkCitleWUsIGl0IGxvb2tzIGxpa2UgYSBodWIgdGhhdCBjb25uZWN0cyB1cHN0cmVhbSB3aXJlbGVzc2x5LgorCitXZSBzdGlsbCBvZmZlciBubyBzdXBwb3J0IGZvciB0aGlzOyBob3dldmVyLCBpdCBzaG91bGQgc2hhcmUgYSBsb3Qgb2YKK2NvZGUgd2l0aCB0aGUgSFdBLVJDIGRyaXZlcjsgdGhlcmUgaXMgYSBidW5jaCBvZiBmYWN0b3JpemF0aW9uIHdvcmsgdGhhdAoraGFzIGJlZW4gZG9uZSB0byBzdXBwb3J0IHRoYXQgaW4gdXBjb21pbmcgcmVsZWFzZXMuCisKKworICAgICAgV0hDSTogV2lyZWxlc3MgSG9zdCBDb250cm9sbGVyIEludGVyZmFjZSwgdGhlIFBDSSBXVVNCIGhvc3QgYWRhcHRlcgorCitUaGlzIGlzIHlvdXIgdXN1YWwgUENJIGRldmljZSB0aGF0IGltcGxlbWVudHMgV0hDSS4gU2ltaWxhciBpbiBjb25jZXB0Cit0byBFSENJLCBpdCBhbGxvd3MgeW91ciB3aXJlbGVzcyBVU0IgZGV2aWNlcyAoaW5jbHVkaW5nIERXQXMpIHRvIGNvbm5lY3QKK3RvIHlvdXIgaG9zdCB2aWEgYSBQQ0kgaW50ZXJmYWNlLiBBcyBpbiB0aGUgY2FzZSBvZiB0aGUgSFdBLCBpdCBoYXMgYQorUmFkaW8gQ29udHJvbCBpbnRlcmZhY2UgYW5kIHRoZSBXVVNCIEhvc3QgQ29udHJvbGxlciBpbnRlcmZhY2UgcGVyIHNlLgorCitUaGVyZSBpcyBzdGlsbCBubyBkcml2ZXIgc3VwcG9ydCBmb3IgdGhpcywgYnV0IHdpbGwgYmUgaW4gdXBjb21pbmcKK3JlbGVhc2VzLgorCisKKyAgICBUaGUgVVdCIHN0YWNrCisKK1RoZSBtYWluIG1pc3Npb24gb2YgdGhlIFVXQiBzdGFjayBpcyB0byBrZWVwIGEgdGFsbHkgb2Ygd2hpY2ggZGV2aWNlcworYXJlIGluIHJhZGlvIHByb3hpbWl0eSB0byBhbGxvdyBkcml2ZXJzIHRvIGNvbm5lY3QgdG8gdGhlbS4gQXMgd2VsbCwgaXQKK3Byb3ZpZGVzIGFuIEFQSSBmb3IgY29udHJvbGxpbmcgdGhlIGxvY2FsIHJhZGlvIGNvbnRyb2xsZXJzIChSQ3MgZnJvbQorbm93IG9uKSwgc3VjaCBhcyB0byBzdGFydC9zdG9wIGJlYWNvbmluZywgc2NhbiwgYWxsb2NhdGUgYmFuZHdpZHRoLCBldGMuCisKKworICAgICAgRGV2aWNlcyBhbmQgaG9zdHM6IHRoZSBiYXNpYyBzdHJ1Y3R1cmUKKworVGhlIG1haW4gYnVpbGRpbmcgYmxvY2sgaGVyZSBpcyB0aGUgVVdCIGRldmljZSAoc3RydWN0IHV3Yl9kZXYpLiBGb3IKK2VhY2ggZGV2aWNlIHRoYXQgcG9wcyB1cCBpbiByYWRpbyBwcmVzZW5jZSAoaWU6IHRoZSBVV0IgaG9zdCByZWNlaXZlcyBhCitiZWFjb24gZnJvbSBpdCkgeW91IGdldCBhIHN0cnVjdCB1d2JfZGV2IHRoYXQgd2lsbCBzaG93IHVwIGluCisvc3lzL2J1cy91d2IvZGV2aWNlcy4KKworRm9yIGVhY2ggUkMgdGhhdCBpcyBkZXRlY3RlZCwgYSBuZXcgc3RydWN0IHV3Yl9yYyBhbmQgc3RydWN0IHV3Yl9kZXYgYXJlCitjcmVhdGVkLiBBbiBlbnRyeSBpcyBhbHNvIGNyZWF0ZWQgaW4gL3N5cy9jbGFzcy91d2JfcmMgZm9yIGVhY2ggUkMuCisKK0VhY2ggUkMgZHJpdmVyIGlzIGltcGxlbWVudGVkIGJ5IGEgc2VwYXJhdGUgZHJpdmVyIHRoYXQgcGx1Z3MgaW50byB0aGUKK2ludGVyZmFjZSB0aGF0IHRoZSBVV0Igc3RhY2sgcHJvdmlkZXMgdGhyb3VnaCBhIHN0cnVjdCB1d2JfcmNfb3BzLiBUaGUKK3NwZWMgY3JlYXRvcnMgaGF2ZSBiZWVuIG5pY2UgZW5vdWdoIHRvIG1ha2UgdGhlIG1lc3NhZ2UgZm9ybWF0IHRoZSBzYW1lCitmb3IgSFdBIGFuZCBXSENJIFJDcywgc28gdGhlIGRyaXZlciBpcyByZWFsbHkgYSB2ZXJ5IHRoaW4gdHJhbnNwb3J0IHRoYXQKK21vdmVzIHRoZSByZXF1ZXN0cyBmcm9tIHRoZSBVV0IgQVBJIHRvIHRoZSBkZXZpY2UgWy91d2JfcmNfb3BzLT5jbWQoKS9dCithbmQgc2VuZHMgdGhlIHJlcGxpZXMgYW5kIG5vdGlmaWNhdGlvbnMgYmFjayB0byB0aGUgQVBJCitbL3V3Yl9yY19uZWhfZ3JvaygpL10uIE5vdGlmaWNhdGlvbnMgYXJlIGhhbmRsZWQgdG8gdGhlIFVXQiBkYWVtb24sIHRoYXQKK2lzIGNoYXJ0ZXJlZCwgYW1vbmcgb3RoZXIgdGhpbmdzLCB0byBrZWVwIHRoZSB0YWIgb2YgaG93IHRoZSBVV0IgcmFkaW8KK25laWdoYm9yaG9vZCBsb29rcywgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgZGV2aWNlcyBhcyB0aGV5IHNob3cgdXAgb3IKK2Rpc2FwcGVhci4KKworQ29tbWFuZCBleGVjdXRpb24gaXMgdmVyeSBzaW1wbGU6IGEgY29tbWFuZCBibG9jayBpcyBzZW50IGFuZCBhIGV2ZW50CitibG9jayBvciByZXBseSBpcyBleHBlY3RlZCBiYWNrLiBGb3Igc2VuZGluZy9yZWNlaXZpbmcgY29tbWFuZC9ldmVudHMsIGEKK2hhbmRsZSBjYWxsZWQgL25laC8gKE5vdGlmaWNhdGlvbi9FdmVudCBIYW5kbGUpIGlzIG9wZW5lZCB3aXRoCisvdXdiX3JjX25laF9vcGVuKCkvLgorCitUaGUgSFdBLVJDIChVU0IgZG9uZ2xlKSBkcml2ZXIgKGRyaXZlcnMvdXdiL2h3YS1yYy5jKSBkb2VzIHRoaXMgam9iIGZvcgordGhlIFVTQiBjb25uZWN0ZWQgSFdBLiBFdmVudHVhbGx5LCBkcml2ZXJzL3doY2ktcmMuYyB3aWxsIGRvIHRoZSBzYW1lCitmb3IgdGhlIFBDSSBjb25uZWN0ZWQgV0hDSSBjb250cm9sbGVyLgorCisKKyAgICAgIEhvc3QgQ29udHJvbGxlciBsaWZlIGN5Y2xlCisKK1NvIGxldCdzIHNheSB3ZSBjb25uZWN0IGEgZG9uZ2xlIHRvIHRoZSBzeXN0ZW06IGl0IGlzIGRldGVjdGVkIGFuZAorZmlybXdhcmUgdXBsb2FkZWQgaWYgbmVlZGVkIFtmb3IgSW50ZWwncyBpMTQ4MAorL2RyaXZlcnMvdXdiL3B0Yy91c2IuYzpwdGNfdXNiX3Byb2JlKCkvXSBhbmQgdGhlbiBpdCBpcyByZWVudW1lcmF0ZWQuCitOb3cgd2UgaGF2ZSBhIHJlYWwgSFdBIGRldmljZSBjb25uZWN0ZWQgYW5kCisvZHJpdmVycy91d2IvaHdhLXJjLmM6aHdhcmNfcHJvYmUoKS8gcGlja3MgaXQgdXAsIHRoYXQgd2lsbCBzZXQgdXAgdGhlCitXaXJlLUFkYXB0b3IgZW52aXJvbm1lbnQgYW5kIHRoZW4gc3VjayBpdCBpbnRvIHRoZSBVV0Igc3RhY2sncyB2aXNpb24gb2YKK3RoZSB3b3JsZCBbL2RyaXZlcnMvdXdiL2xjLXJjLmM6dXdiX3JjX2FkZCgpL10uCisKKyAgICAqCisKKyAgICAgIFsqXSBUaGUgc3RhY2sgc2hvdWxkIHB1dCBhIG5ldyBSQyB0byBzY2FuIGZvciBkZXZpY2VzCisgICAgICBbL3V3Yl9yY19zY2FuKCkvXSBzbyBpdCBmaW5kcyB3aGF0J3MgYXZhaWxhYmxlIGFyb3VuZCBhbmQgdHJpZXMgdG8KKyAgICAgIGNvbm5lY3QgdG8gdGhlbSwgYnV0IHRoaXMgaXMgcG9saWN5IHN0dWZmIGFuZCBzaG91bGQgYmUgZHJpdmVuCisgICAgICBmcm9tIHVzZXIgc3BhY2UuIEFzIG9mIG5vdywgdGhlIG9wZXJhdG9yIGlzIGV4cGVjdGVkIHRvIGRvIGl0CisgICAgICBtYW51YWxseTsgc2VlIHRoZSByZWxlYXNlIG5vdGVzIGZvciBkb2N1bWVudGF0aW9uIG9uIHRoZSBwcm9jZWR1cmUuCisKK1doZW4gYSBkb25nbGUgaXMgZGlzY29ubmVjdGVkLCAvZHJpdmVycy91d2IvaHdhLXJjLmM6aHdhcmNfZGlzY29ubmVjdCgpLwordGFrZXMgdGltZSBvZiB0ZWFyaW5nIGV2ZXJ5dGhpbmcgZG93biBzYWZlbHkgKG9yIG5vdC4uLikuCisKKworICAgICAgT24gdGhlIGFpcjogYmVhY29ucyBhbmQgZW51bWVyYXRpbmcgdGhlIHJhZGlvIG5laWdoYm9yaG9vZAorCitTbyBhc3N1bWluZyB3ZSBoYXZlIGRldmljZXMgYW5kIHdlIGhhdmUgYWdyZWVkIGZvciBhIGNoYW5uZWwgdG8gY29ubmVjdAorb24gKGxldCdzIHNheSA5KSwgd2UgcHV0IHRoZSBuZXcgUkMgdG8gYmVhY29uOgorCisgICAgKgorCisgICAgICAgICAgICAkIGVjaG8gOSAwID4gL3N5cy9jbGFzcy91d2JfcmMvdXdiMC9iZWFjb24KKworTm93IGl0IGlzIHZpc2libGUuIElmIHRoZXJlIHdlcmUgb3RoZXIgZGV2aWNlcyBpbiB0aGUgc2FtZSByYWRpbyBjaGFubmVsCithbmQgYmVhY29uIGdyb3VwICh0aGF0J3Mgd2hhdCB0aGUgemVybyBpcyBmb3IpLCB0aGUgZG9uZ2xlJ3MgcmFkaW8KK2NvbnRyb2wgaW50ZXJmYWNlIHdpbGwgc2VuZCBiZWFjb24gbm90aWZpY2F0aW9ucyBvbiBpdHMKK25vdGlmaWNhdGlvbi9ldmVudCBlbmRwb2ludCAoTkVFUCkuIFRoZSBiZWFjb24gbm90aWZpY2F0aW9ucyBhcmUgcGFydCBvZgordGhlIGV2ZW50IHN0cmVhbSB0aGF0IGlzIGZ1bm5lbGVkIGludG8gdGhlIEFQSSB3aXRoCisvZHJpdmVycy91d2IvbmVoLmM6dXdiX3JjX25laF9ncm9rKCkvIGFuZCBkZWxpdmVyZWQgdG8gdGhlIFVXQkQsIHRoZSBVV0IKK2RhZW1vbiB0aHJvdWdoIGEgbm90aWZpY2F0aW9uIGxpc3QuCisKK1VXQkQgd2FrZXMgdXAgYW5kIHNjYW5zIHRoZSBldmVudCBsaXN0OyBmaW5kcyBhIGJlYWNvbiBhbmQgYWRkcyBpdCB0bwordGhlIEJFQUNPTiBDQUNIRSAoL3V3Yl9iZWNhLykuIElmIGhlIHJlY2VpdmVzIGEgbnVtYmVyIG9mIGJlYWNvbnMgZnJvbQordGhlIHNhbWUgZGV2aWNlLCBoZSBjb25zaWRlcnMgaXQgdG8gYmUgJ29uYWlyJyBhbmQgY3JlYXRlcyBhIG5ldyBkZXZpY2UKK1svZHJpdmVycy91d2IvbGMtZGV2LmM6dXdiZF9kZXZfb25haXIoKS9dLiBTaW1pbGFybHksIHdoZW4gbm8gYmVhY29ucworYXJlIHJlY2VpdmVkIGluIHNvbWUgdGltZSwgdGhlIGRldmljZSBpcyBjb25zaWRlcmVkIGdvbmUgYW5kIHdpcGVkIG91dAorW3V3YmQgY2FsbHMgcGVyaW9kaWNhbGx5IC91d2IvYmVhY29uLmM6dXdiX2JlY2FfcHVyZ2UoKS8gdGhhdCB3aWxsIHB1cmdlCit0aGUgYmVhY29uIGNhY2hlIG9mIGRlYWQgZGV2aWNlc10uCisKKworICAgICAgRGV2aWNlIGxpc3RzCisKK0FsbCBVV0IgZGV2aWNlcyBhcmUga2VwdCBpbiB0aGUgbGlzdCBvZiB0aGUgc3RydWN0IGJ1c190eXBlIHV3Yl9idXNfdHlwZS4KKworCisgICAgICBCYW5kd2lkdGggYWxsb2NhdGlvbgorCitUaGUgVVdCIHN0YWNrIG1haW50YWlucyBhIGxvY2FsIGNvcHkgb2YgRFJQIGF2YWlsYWJpbGl0eSB0aHJvdWdoCitwcm9jZXNzaW5nIG9mIGluY29taW5nICpEUlAgQXZhaWxhYmlsaXR5IENoYW5nZSogbm90aWZpY2F0aW9ucy4gVGhpcworbG9jYWwgY29weSBpcyBjdXJyZW50bHkgdXNlZCB0byBwcmVzZW50IHRoZSBjdXJyZW50IGJhbmR3aWR0aAorYXZhaWxhYmlsaXR5IHRvIHRoZSB1c2VyIHRocm91Z2ggdGhlIHN5c2ZzIGZpbGUKKy9zeXMvY2xhc3MvdXdiX3JjL3V3YngvYndfYXZhaWwuIEluIHRoZSBmdXR1cmUgdGhlIGJhbmR3aWR0aAorYXZhaWxhYmlsaXR5IGluZm9ybWF0aW9uIHdpbGwgYmUgdXNlZCBieSB0aGUgYmFuZHdpZHRoIHJlc2VydmF0aW9uCityb3V0aW5lcy4KKworVGhlIGJhbmR3aWR0aCByZXNlcnZhdGlvbiByb3V0aW5lcyBhcmUgaW4gcHJvZ3Jlc3MgYW5kIGFyZSB0aHVzIG5vdAorcHJlc2VudCBpbiB0aGUgY3VycmVudCByZWxlYXNlLiBXaGVuIGNvbXBsZXRlZCB0aGV5IHdpbGwgZW5hYmxlIGEgdXNlcgordG8gaW5pdGlhdGUgRFJQIHJlc2VydmF0aW9uIHJlcXVlc3RzIHRocm91Z2ggaW50ZXJhY3Rpb24gd2l0aCBzeXNmcy4gRFJQCityZXNlcnZhdGlvbiByZXF1ZXN0cyBmcm9tIHJlbW90ZSBVV0IgZGV2aWNlcyB3aWxsIGFsc28gYmUgaGFuZGxlZC4gVGhlCitiYW5kd2lkdGggbWFuYWdlbWVudCBkb25lIGJ5IHRoZSBVV0Igc3RhY2sgd2lsbCBpbmNsdWRlIGNhbGxiYWNrcyB0byB0aGUKK2hpZ2hlciBsYXllcnMgd2lsbCBlbmFibGUgdGhlIGhpZ2hlciBsYXllcnMgdG8gdXNlIHRoZSByZXNlcnZhdGlvbnMgdXBvbgorY29tcGxldGlvbi4gW05vdGU6IFRoZSBiYW5kd2lkdGggcmVzZXJ2YXRpb24gd29yayBpcyBpbiBwcm9ncmVzcyBhbmQKK3N1YmplY3QgdG8gY2hhbmdlLl0KKworCisgICAgV2lyZWxlc3MgVVNCIEhvc3QgQ29udHJvbGxlciBkcml2ZXJzCisKKypXQVJOSU5HKiBUaGlzIHNlY3Rpb24gbmVlZHMgYSBsb3Qgb2Ygd29yayEKKworQXMgZXhwbGFpbmVkIGFib3ZlLCB0aGVyZSBhcmUgdGhyZWUgZGlmZmVyZW50IHR5cGVzIG9mIEhDcyBpbiB0aGUgV1VTQgord29ybGQ6IEhXQS1IQywgRFdBLUhDIGFuZCBXSENJLUhDLgorCitIV0EtSEMgYW5kIERXQS1IQyBzaGFyZSB0aGF0IHRoZXkgYXJlIFdpcmUtQWRhcHRlcnMgKFVTQiBvciBXVVNCCitjb25uZWN0ZWQgY29udHJvbGxlcnMpLCBhbmQgdGhlaXIgdHJhbnNmZXIgbWFuYWdlbWVudCBzeXN0ZW0gaXMgYWxtb3N0CitpZGVudGljYWwuIFNvIGlzIHRoZWlyIG5vdGlmaWNhdGlvbiBkZWxpdmVyeSBzeXN0ZW0uCisKK0hXQS1IQyBhbmQgV0hDSS1IQyBzaGFyZSB0aGF0IHRoZXkgYXJlIGJvdGggV1VTQiBob3N0IGNvbnRyb2xsZXJzLCBzbwordGhleSBoYXZlIHRvIGRlYWwgd2l0aCBXVVNCIGRldmljZSBsaWZlIGN5Y2xlIGFuZCBtYWludGVuYW5jZSwgd2lyZWxlc3MKK3Jvb3QtaHViCisKK0hXQSBleHBvc2VzIGEgSG9zdCBDb250cm9sbGVyIGludGVyZmFjZSAoSFdBLUhDIDB4ZTAvMDIvMDIpLiBUaGlzIGhhcwordGhyZWUgZW5kcG9pbnRzIChOb3RpZmljYXRpb25zLCBEYXRhIFRyYW5zZmVyIEluIGFuZCBEYXRhIFRyYW5zZmVyCitPdXQtLWtub3duIGFzIE5FUCwgRFRJIGFuZCBEVE8gaW4gdGhlIGNvZGUpLgorCitXZSByZXNlcnZlIFVXQiBiYW5kd2lkdGggZm9yIG91ciBXaXJlbGVzcyBVU0IgQ2x1c3RlciwgY3JlYXRlIGEgQ2x1c3RlcgorSUQgYW5kIHRlbGwgdGhlIEhDIHRvIHVzZSBhbGwgdGhhdC4gVGhlbiB3ZSBzdGFydCBpdC4gVGhpcyBtZWFucyB0aGUgSEMKK3N0YXJ0cyBzZW5kaW5nIE1NQ3MuCisKKyAgICAqCisKKyAgICAgIFRoZSBNTUNzIGFyZSBibG9ja3Mgb2YgZGF0YSBkZWZpbmVkIHNvbWV3aGVyZSBpbiB0aGUgV1VTQjEuMCBzcGVjCisgICAgICB0aGF0IGRlZmluZSBhIHN0cmVhbSBpbiB0aGUgVVdCIGNoYW5uZWwgdGltZSBhbGxvY2F0ZWQgZm9yIHNlbmRpbmcKKyAgICAgIFdVU0IgSUVzIChob3N0IHRvIGRldmljZSBjb21tYW5kcy9ub3RpZmljYXRpb25zKSBhbmQgRGV2aWNlCisgICAgICBOb3RpZmljYXRpb25zIChkZXZpY2UgaW5pdGlhdGVkIHRvIGhvc3QpLiBFYWNoIGhvc3QgZGVmaW5lcyBhCisgICAgICB1bmlxdWUgV2lyZWxlc3MgVVNCIGNsdXN0ZXIgdGhyb3VnaCBNTUNzLiBEZXZpY2VzIGNhbiBjb25uZWN0IHRvIGEKKyAgICAgIHNpbmdsZSBjbHVzdGVyIGF0IHRoZSB0aW1lLiBUaGUgSUVzIGFyZSBJbmZvcm1hdGlvbiBFbGVtZW50cywgYW5kCisgICAgICBhbW9uZyB0aGVtIGFyZSB0aGUgYmFuZHdpZHRoIGFsbG9jYXRpb25zIHRoYXQgdGVsbCBlYWNoIGRldmljZQorICAgICAgd2hlbiBjYW4gdGhleSB0cmFuc21pdCBvciByZWNlaXZlLgorCitOb3cgaXQgYWxsIGRlcGVuZHMgb24gZXh0ZXJuYWwgc3RpbXVsaS4KKworKk5ldyBkZXZpY2UgY29ubmVjdGlvbioKKworQSBuZXcgZGV2aWNlIHBvcHMgdXAsIGl0IHNjYW5zIHRoZSByYWRpbyBsb29raW5nIGZvciBNTUNzIHRoYXQgZ2l2ZSBvdXQKK3RoZSBleGlzdGVuY2Ugb2YgV2lyZWxlc3MgVVNCIGNoYW5uZWxzLiBPbmNlIG9uZSAob3IgbW9yZSkgYXJlIGZvdW5kLAorc2VsZWN0cyB3aGljaCBvbmUgdG8gY29ubmVjdCB0by4gU2VuZHMgYSAvRE5fQ29ubmVjdC8gKGRldmljZQorbm90aWZpY2F0aW9uIGNvbm5lY3QpIGR1cmluZyB0aGUgRE5UUyAoRGV2aWNlIE5vdGlmaWNhdGlvbiBUaW1lCitTbG90LS1hbm5vdW5jZWQgaW4gdGhlIE1NQ3MKKworSEMgcGlja3MgdGhlIC9ETl9Db25uZWN0LyBvdXQgKG5lcCBtb2R1bGUgc2VuZHMgdG8gbm90aWYuYyBmb3IgZGVsaXZlcnkKK2ludG8gL2RldmNvbm5lY3QvKS4gVGhpcyBwcm9jZXNzIHN0YXJ0cyB0aGUgYXV0aGVudGljYXRpb24gcHJvY2VzcyBmb3IKK3RoZSBkZXZpY2UuIEZpcnN0IHdlIGFsbG9jYXRlIGEgL2Zha2UgcG9ydC8gYW5kIGFzc2lnbiBhbgordW5hdXRoZW50aWNhdGVkIGFkZHJlc3MgKDEyOCB0byAyNTUtLXdoYXQgd2UgcmVhbGx5IGRvIGlzCisweDgwIHwgZmFrZV9wb3J0X2lkeCkuIFdlIGZpZGRsZSB3aXRoIHRoZSBmYWtlIHBvcnQgc3RhdHVzIGFuZCAvaHViX3dxLworc2VlcyBhIG5ldyBjb25uZWN0aW9uLCBzbyBoZSBtb3ZlcyBvbiB0byBlbmFibGUgdGhlIGZha2UgcG9ydCB3aXRoIGEgcmVzZXQuCisKK1NvIG5vdyB3ZSBhcmUgaW4gdGhlIHJlc2V0IHBhdGggLS0gd2Uga25vdyB3ZSBoYXZlIGEgbm9uLXlldCBlbnVtZXJhdGVkCitkZXZpY2Ugd2l0aCBhbiB1bmF1dGhvcml6ZWQgYWRkcmVzczsgd2UgYXNrIHVzZXIgc3BhY2UgdG8gYXV0aGVudGljYXRlCisoRklYTUU6IG5vdCB5ZXQgZG9uZSwgc2ltaWxhciB0byBibHVldG9vdGggcGFpcmluZyksIHRoZW4gd2UgZG8gdGhlIGtleQorZXhjaGFuZ2UgKEZJWE1FOiBub3QgeWV0IGRvbmUpIGFuZCBpc3N1ZSBhIC9zZXQgYWRkcmVzcyAwLyB0byBicmluZyB0aGUKK2RldmljZSB0byB0aGUgZGVmYXVsdCBzdGF0ZS4gRGV2aWNlIGlzIGF1dGhlbnRpY2F0ZWQuCisKK0Zyb20gaGVyZSwgdGhlIFVTQiBzdGFjayB0YWtlcyBjb250cm9sIHRocm91Z2ggdGhlIHVzYl9oY2Qgb3BzLiBodWJfd3EKK2hhcyBzZWVuIHRoZSBwb3J0IHN0YXR1cyBjaGFuZ2VzLCBhcyB3ZSBoYXZlIGJlZW4gdG9nZ2xpbmcgdGhlbS4gSXQgd2lsbAorc3RhcnQgZW51bWVyYXRpbmcgYW5kIGRvaW5nIHRyYW5zZmVycyB0aHJvdWdoIHVzYl9oY2QtPnVyYl9lbnF1ZXVlKCkgdG8KK3JlYWQgZGVzY3JpcHRvcnMgYW5kIG1vdmUgb3VyIGRhdGEuCisKKypEZXZpY2UgbGlmZSBjeWNsZSBhbmQga2VlcCBhbGl2ZXMqCisKK0V2ZXJ5IHRpbWUgdGhlcmUgaXMgYSBzdWNjZXNzZnVsIHRyYW5zZmVyIHRvL2Zyb20gYSBkZXZpY2UsIHdlIHVwZGF0ZSBhCitwZXItZGV2aWNlIGFjdGl2aXR5IHRpbWVzdGFtcC4gSWYgbm90LCBldmVyeSBub3cgYW5kIHRoZW4gd2UgY2hlY2sgYW5kCitpZiB0aGUgYWN0aXZpdHkgdGltZXN0YW1wIGdldHMgb2xkLCB3ZSBwaW5nIHRoZSBkZXZpY2UgYnkgc2VuZGluZyBpdCBhCitLZWVwIEFsaXZlIElFOyBpdCByZXNwb25kcyB3aXRoIGEgL0ROX0FsaXZlLyBwb25nIGR1cmluZyB0aGUgRE5UUyAodGhpcworYXJyaXZlcyB0byB1cyBhcyBhIG5vdGlmaWNhdGlvbiB0aHJvdWdoCitkZXZjb25uZWN0LmM6d3VzYl9oYW5kbGVfZG5fYWxpdmUoKS4gSWYgYSBkZXZpY2UgdGltZXMgb3V0LCB3ZQorZGlzY29ubmVjdCBpdCBmcm9tIHRoZSBzeXN0ZW0gKGNsZWFuaW5nIHVwIGludGVybmFsIGluZm9ybWF0aW9uIGFuZAordG9nZ2xpbmcgdGhlIGJpdHMgaW4gdGhlIGZha2UgaHViIHBvcnQsIHdoaWNoIGtpY2tzIGh1Yl93cSBpbnRvIHJlbW92aW5nCit0aGUgcmVzdCBvZiB0aGUgc3R1ZmYpLgorCitUaGlzIGlzIGRvbmUgdGhyb3VnaCBkZXZjb25uZWN0Ol9fd3VzYl9jaGVja19kZXZzKCksIHdoaWNoIHdpbGwgc2NhbiB0aGUKK2RldmljZSBsaXN0IGxvb2tpbmcgZm9yIHdob20gbmVlZHMgcmVmcmVzaGluZy4KKworSWYgdGhlIGRldmljZSB3YW50cyB0byBkaXNjb25uZWN0LCBpdCB3aWxsIGVpdGhlciBkaWUgKHVnbHkpIG9yIHNlbmQgYQorL0ROX0Rpc2Nvbm5lY3QvIHRoYXQgd2lsbCBwcm9tcHQgYSBkaXNjb25uZWN0aW9uIGZyb20gdGhlIHN5c3RlbS4KKworKlNlbmRpbmcgYW5kIHJlY2VpdmluZyBkYXRhKgorCitEYXRhIGlzIHNlbnQgYW5kIHJlY2VpdmVkIHRocm91Z2ggL1JlbW90ZSBQaXBlcy8gKHJwaXBlcykuIEFuIHJwaXBlIGlzCisvYWltZWQvIGF0IGFuIGVuZHBvaW50IGluIGEgV1VTQiBkZXZpY2UuIFRoaXMgaXMgdGhlIHNhbWUgZm9yIEhXQXMgYW5kCitEV0FzLgorCitFYWNoIEhDIGhhcyBhIG51bWJlciBvZiBycGlwZXMgYW5kIGJ1ZmZlcnMgdGhhdCBjYW4gYmUgYXNzaWduZWQgdG8gdGhlbTsKK3doZW4gZG9pbmcgYSBkYXRhIHRyYW5zZmVyICh4ZmVyKSwgZmlyc3QgdGhlIHJwaXBlIGhhcyB0byBiZSBhaW1lZCBhbmQKK3ByZXBhcmVkIChidWZmZXJzIGFzc2lnbmVkKSwgdGhlbiB3ZSBjYW4gc3RhcnQgcXVldWVpbmcgcmVxdWVzdHMgZm9yCitkYXRhIGluIG9yIG91dC4KKworRGF0YSBidWZmZXJzIGhhdmUgdG8gYmUgc2VnbWVudGVkIG91dCBiZWZvcmUgc2VuZGluZy0tc28gd2Ugc2VuZCBmaXJzdCBhCitoZWFkZXIgKHNlZ21lbnQgcmVxdWVzdCkgYW5kIHRoZW4gaWYgdGhlcmUgaXMgYW55IGRhdGEsIGEgZGF0YSBidWZmZXIKK2ltbWVkaWF0ZWx5IGFmdGVyIHRvIHRoZSBEVEkgaW50ZXJmYWNlICh5ZXAsIGV2ZW4gdGhlIHJlcXVlc3QpLiBJZiBvdXIKK2J1ZmZlciBpcyBiaWdnZXIgdGhhbiB0aGUgbWF4IHNlZ21lbnQgc2l6ZSwgdGhlbiB3ZSBqdXN0IGRvIG11bHRpcGxlCityZXF1ZXN0cy4KKworW1RoaXMgc3Vja3MsIGJlY2F1c2UgZG9pbmcgVVNCIHNjYXR0ZXIgZ2F0dGVyIGluIExpbnV4IGlzIHJlc291cmNlCitpbnRlbnNpdmUsIGlmIGFueS4uLm5vdCB0aGF0IHRoZSBjdXJyZW50IGFwcHJvYWNoIGlzIG5vdC4gSXQganVzdCBoYXMgdG8KK2JlIGNsZWFuZWQgdXAgYSBsb3QgOildLgorCitJZiByZWFkaW5nLCB3ZSBkb24ndCBzZW5kIGRhdGEgYnVmZmVycywganVzdCB0aGUgc2VnbWVudCBoZWFkZXJzIHNheWluZword2Ugd2FudCB0byByZWFkIHNlZ21lbnRzLgorCitXaGVuIHRoZSB4ZmVyIGlzIGV4ZWN1dGVkLCB3ZSByZWNlaXZlIGEgbm90aWZpY2F0aW9uIHRoYXQgc2F5cyBkYXRhIGlzCityZWFkeSBpbiB0aGUgRFRJIGVuZHBvaW50IChoYW5kbGVkIHRocm91Z2gKK3hmZXIuYzp3YV9oYW5kbGVfbm90aWZfeGZlcigpKS4gSW4gdGhlcmUgd2UgcmVhZCBmcm9tIHRoZSBEVEkgZW5kcG9pbnQgYQorZGVzY3JpcHRvciB0aGF0IGdpdmVzIHVzIHRoZSBzdGF0dXMgb2YgdGhlIHRyYW5zZmVyLCBpdHMgaWRlbnRpZmljYXRpb24KKyhnaXZlbiB3aGVuIHdlIGlzc3VlZCBpdCkgYW5kIHRoZSBzZWdtZW50IG51bWJlci4gSWYgaXQgd2FzIGEgZGF0YSByZWFkLAord2UgaXNzdWUgYW5vdGhlciBVUkIgdG8gcmVhZCBpbnRvIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIgdGhlIGNodW5rIG9mCitkYXRhIGNvbWluZyBvdXQgb2YgdGhlIHJlbW90ZSBlbmRwb2ludC4gRG9uZSwgd2FpdCBmb3IgdGhlIG5leHQgZ3V5LiBUaGUKK2NhbGxiYWNrcyBmb3IgdGhlIFVSQnMgaXNzdWVkIGZyb20gaGVyZSBhcmUgdGhlIG9uZXMgdGhhdCB3aWxsIGRlY2xhcmUKK3RoZSB4ZmVyIGNvbXBsZXRlIGF0IHNvbWUgcG9pbnQgYW5kIGNhbGwgaXRzIGNhbGxiYWNrLgorCitTZWVtcyBzaW1wbGUsIGJ1dCB0aGUgaW1wbGVtZW50YXRpb24gaXMgbm90IHRyaXZpYWwuCisKKyAgICAqCisKKyAgICAgICpXQVJOSU5HKiBPbGQhIQorCitUaGUgbWFpbiB4ZmVyIGRlc2NyaXB0b3IsIHdhX3hmZXIgKGVxdWl2YWxlbnQgdG8gYSBVUkIpIGNvbnRhaW5zIGFuCithcnJheSBvZiBzZWdtZW50cywgdGFsbHlzIG9uIHNlZ21lbnRzIGFuZCBidWZmZXJzIGFuZCBjYWxsYmFjaworaW5mb3JtYXRpb24uIEJ1cmllZCBpbiB0aGVyZSBpcyBhIGxvdCBvZiBVUkJzIGZvciBleGVjdXRpbmcgdGhlIHNlZ21lbnRzCithbmQgYnVmZmVyIHRyYW5zZmVycy4KKworRm9yIE9VVCB4ZmVycywgdGhlcmUgaXMgYW4gYXJyYXkgb2Ygc2VnbWVudHMsIG9uZSBVUkIgZm9yIGVhY2gsIGFub3RoZXIKK29uZSBvZiBidWZmZXIgVVJCLiBXaGVuIHN1Ym1pdHRpbmcsIHdlIHN1Ym1pdCBVUkJzIGZvciBzZWdtZW50IHJlcXVlc3QKKzEsIGJ1ZmZlciAxLCBzZWdtZW50IDIsIGJ1ZmZlciAyLi4uZXRjLiBUaGVuIHdlIHdhaXQgb24gdGhlIERUSSBmb3IgeGZlcgorcmVzdWx0IGRhdGE7IHdoZW4gYWxsIHRoZSBzZWdtZW50cyBhcmUgY29tcGxldGUsIHdlIGNhbGwgdGhlIGNhbGxiYWNrIHRvCitmaW5hbGl6ZSB0aGUgdHJhbnNmZXIuCisKK0ZvciBJTiB4ZmVycywgd2Ugb25seSBpc3N1ZSBVUkJzIGZvciB0aGUgc2VnbWVudHMgd2Ugd2FudCB0byByZWFkIGFuZAordGhlbiB3YWl0IGZvciB0aGUgeGZlciByZXN1bHQgZGF0YS4KKworKlVSQiBtYXBwaW5nIGludG8geGZlcnMqCisKK1RoaXMgaXMgZG9uZSBieSBod2FoY19vcF91cmJfW2VufGRlXXF1ZXVlKCkuIEluIGVucXVldWUoKSB3ZSBhaW0gYW4KK3JwaXBlIHRvIHRoZSBlbmRwb2ludCB3aGVyZSB3ZSBoYXZlIHRvIHRyYW5zbWl0LCBjcmVhdGUgYSB0cmFuc2ZlcgorY29udGV4dCAod2FfeGZlcikgYW5kIHN1Ym1pdCBpdC4gV2hlbiB0aGUgeGZlciBpcyBkb25lLCBvdXIgY2FsbGJhY2sgaXMKK2NhbGxlZCBhbmQgd2UgYXNzaWduIHRoZSBzdGF0dXMgYml0cyBhbmQgcmVsZWFzZSB0aGUgeGZlciByZXNvdXJjZXMuCisKK0luIGRlcXVldWUoKSB3ZSBhcmUgYmFzaWNhbGx5IGNhbmNlbGxpbmcvYWJvcnRpbmcgdGhlIHRyYW5zZmVyLiBXZSBpc3N1ZQorYSB4ZmVyIGFib3J0IHJlcXVlc3QgdG8gdGhlIEhDLCBjYW5jZWwgYWxsIHRoZSBVUkJzIHdlIGhhZCBzdWJtaXR0ZWQKK2FuZCBub3QgeWV0IGRvbmUgYW5kIHdoZW4gYWxsIHRoYXQgaXMgZG9uZSwgdGhlIHhmZXIgY2FsbGJhY2sgd2lsbCBiZQorY2FsbGVkLS10aGlzIHdpbGwgY2FsbCB0aGUgVVJCIGNhbGxiYWNrLgorCisKKyAgICBHbG9zc2FyeQorCisqRFdBKiAtLSBEZXZpY2UgV2lyZSBBZGFwdGVyCisKK1VTQiBob3N0LCB3aXJlZCBmb3IgZG93bnN0cmVhbSBkZXZpY2VzLCB1cHN0cmVhbSBjb25uZWN0cyB3aXJlbGVzc2x5Cit3aXRoIFdpcmVsZXNzIFVTQi4KKworKkVWRU5UKiAtLSBSZXNwb25zZSB0byBhIGNvbW1hbmQgb24gdGhlIE5FRVAKKworKkhXQSogLS0gSG9zdCBXaXJlIEFkYXB0ZXIgLyBVU0IgZG9uZ2xlIGZvciBVV0IgYW5kIFdpcmVsZXNzIFVTQgorCisqTkVIKiAtLSBOb3RpZmljYXRpb24vRXZlbnQgSGFuZGxlCisKK0hhbmRsZS9maWxlIGRlc2NyaXB0b3IgZm9yIHJlY2VpdmluZyBub3RpZmljYXRpb25zIG9yIGV2ZW50cy4gVGhlIFdBCitjb2RlIHJlcXVpcmVzIHlvdSB0byBnZXQgb25lIG9mIHRoaXMgdG8gbGlzdGVuIGZvciBub3RpZmljYXRpb25zIG9yCitldmVudHMgb24gdGhlIE5FRVAuCisKKypORUVQKiAtLSBOb3RpZmljYXRpb24vRXZlbnQgRW5kUG9pbnQKKworU3R1ZmYgcmVsYXRlZCB0byB0aGUgbWFuYWdlbWVudCBvZiB0aGUgZmlyc3QgZW5kcG9pbnQgb2YgYSBIV0EgVVNCCitkb25nbGUgdGhhdCBpcyB1c2VkIHRvIGRlbGl2ZXIgYW4gc3RyZWFtIG9mIGV2ZW50cyBhbmQgbm90aWZpY2F0aW9ucyB0bwordGhlIGhvc3QuCisKKypOT1RJRklDQVRJT04qIC0tIE1lc3NhZ2UgY29taW5nIGluIHRoZSBORUVQIGFzIHJlc3BvbnNlIHRvIHNvbWV0aGluZy4KKworKlJDKiAtLSBSYWRpbyBDb250cm9sCisKK0Rlc2lnbi1vdmVydmlldy50eHQtMS44IChsYXN0IGVkaXRlZCAyMDA2LTExLTA0IDEyOjIyOjI0IGJ5CitJbmFreVBlcmV6R29uemFsZXopCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNiL2FjbS50eHQgYi9Eb2N1bWVudGF0aW9uL3VzYi9hY20udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ZjVjMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3VzYi9hY20udHh0CkBAIC0wLDAgKzEsMTI4IEBACisJCQkgIExpbnV4IEFDTSBkcml2ZXIgdjAuMTYKKwkJIChjKSAxOTk5IFZvanRlY2ggUGF2bGlrIDx2b2p0ZWNoQHN1c2UuY3o+CisJCQkgICAgIFNwb25zb3JlZCBieSBTdVNFCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzAuIERpc2NsYWltZXIKK35+fn5+fn5+fn5+fn4KKyAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKK3VuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlCitTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pCithbnkgbGF0ZXIgdmVyc2lvbi4KKworICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CitXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQorb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorbW9yZSBkZXRhaWxzLgorCisgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCit3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OQorVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKKworICBTaG91bGQgeW91IG5lZWQgdG8gY29udGFjdCBtZSwgdGhlIGF1dGhvciwgeW91IGNhbiBkbyBzbyBlaXRoZXIgYnkgZS1tYWlsCistIG1haWwgeW91ciBtZXNzYWdlIHRvIDx2b2p0ZWNoQHN1c2UuY3o+LCBvciBieSBwYXBlciBtYWlsOiBWb2p0ZWNoIFBhdmxpaywKK1VjaXRlbHNrYSAxNTc2LCBQcmFndWUgOCwgMTgyIDAwIEN6ZWNoIFJlcHVibGljCisKKyAgRm9yIHlvdXIgY29udmVuaWVuY2UsIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgaXMgaW5jbHVkZWQKK2luIHRoZSBwYWNrYWdlOiBTZWUgdGhlIGZpbGUgQ09QWUlORy4KKworMS4gVXNhZ2UKK35+fn5+fn5+CisgIFRoZSBkcml2ZXJzL3VzYi9jbGFzcy9jZGMtYWNtLmMgZHJpdmVycyB3b3JrcyB3aXRoIFVTQiBtb2RlbXMgYW5kIFVTQiBJU0ROIHRlcm1pbmFsCithZGFwdGVycyB0aGF0IGNvbmZvcm0gdG8gdGhlIFVuaXZlcnNhbCBTZXJpYWwgQnVzIENvbW11bmljYXRpb24gRGV2aWNlIENsYXNzCitBYnN0cmFjdCBDb250cm9sIE1vZGVsIChVU0IgQ0RDIEFDTSkgc3BlY2lmaWNhdGlvbi4KKworICBNYW55IG1vZGVtcyBkbywgaGVyZSBpcyBhIGxpc3Qgb2YgdGhvc2UgSSBrbm93IG9mOgorCisJM0NvbSBPZmZpY2VDb25uZWN0IDU2aworCTNDb20gVm9pY2UgRmF4TW9kZW0gUHJvCisJM0NvbSBTcG9ydHN0ZXIKKwlNdWx0aVRlY2ggTXVsdGlNb2RlbSA1NmsKKwlab29tIDI5ODZMIEZheE1vZGVtCisJQ29tcGFxIDU2ayBGYXhNb2RlbQorCUVMU0EgTWljcm9saW5rIDU2aworCisgIEkga25vdyBvZiBvbmUgSVNETiBUQSB0aGF0IGRvZXMgd29yayB3aXRoIHRoZSBhY20gZHJpdmVyOgorCisJM0NvbSBVU1IgSVNETiBQcm8gVEEKKworICBTb21lIGNlbGwgcGhvbmVzIGFsc28gY29ubmVjdCB2aWEgVVNCLiBJIGtub3cgdGhlIGZvbGxvd2luZyBwaG9uZXMgd29yazoKKworCVNvbnlFcmljc3NvbiBLODAwaQorCisgIFVuZm9ydHVuYXRlbHkgbWFueSBtb2RlbXMgYW5kIG1vc3QgSVNETiBUQXMgdXNlIHByb3ByaWV0YXJ5IGludGVyZmFjZXMgYW5kCit0aHVzIHdvbid0IHdvcmsgd2l0aCB0aGlzIGRyaXZlcnMuIENoZWNrIGZvciBBQ00gY29tcGxpYW5jZSBiZWZvcmUgYnV5aW5nLgorCisgIFRvIHVzZSB0aGUgbW9kZW1zIHlvdSBuZWVkIHRoZXNlIG1vZHVsZXMgbG9hZGVkOgorCisJdXNiY29yZS5rbworCXVoY2ktaGNkLmtvIG9oY2ktaGNkLmtvIG9yIGVoY2ktaGNkLmtvCisJY2RjLWFjbS5rbworCisgIEFmdGVyIHRoYXQsIHRoZSBtb2RlbVtzXSBzaG91bGQgYmUgYWNjZXNzaWJsZS4gWW91IHNob3VsZCBiZSBhYmxlIHRvIHVzZQorbWluaWNvbSwgcHBwIGFuZCBtZ2V0dHkgd2l0aCB0aGVtLgorCisyLiBWZXJpZnlpbmcgdGhhdCBpdCB3b3Jrcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAgVGhlIGZpcnN0IHN0ZXAgd291bGQgYmUgdG8gY2hlY2sgL3Byb2MvYnVzL3VzYi9kZXZpY2VzLCBpdCBzaG91bGQgbG9vaworbGlrZSB0aGlzOgorCitUOiAgQnVzPTAxIExldj0wMCBQcm50PTAwIFBvcnQ9MDAgQ250PTAwIERldiM9ICAxIFNwZD0xMiAgTXhDaD0gMgorQjogIEFsbG9jPSAgMC85MDAgdXMgKCAwJSksICNJbnQ9ICAwLCAjSXNvPSAgMAorRDogIFZlcj0gMS4wMCBDbHM9MDkoaHViICApIFN1Yj0wMCBQcm90PTAwIE14UFM9IDggI0NmZ3M9ICAxCitQOiAgVmVuZG9yPTAwMDAgUHJvZElEPTAwMDAgUmV2PSAwLjAwCitTOiAgUHJvZHVjdD1VU0IgVUhDSSBSb290IEh1YgorUzogIFNlcmlhbE51bWJlcj02ODAwCitDOiogI0lmcz0gMSBDZmcjPSAxIEF0cj00MCBNeFB3cj0gIDBtQQorSTogIElmIz0gMCBBbHQ9IDAgI0VQcz0gMSBDbHM9MDkoaHViICApIFN1Yj0wMCBQcm90PTAwIERyaXZlcj1odWIKK0U6ICBBZD04MShJKSBBdHI9MDMoSW50LikgTXhQUz0gICA4IEl2bD0yNTVtcworVDogIEJ1cz0wMSBMZXY9MDEgUHJudD0wMSBQb3J0PTAxIENudD0wMSBEZXYjPSAgMiBTcGQ9MTIgIE14Q2g9IDAKK0Q6ICBWZXI9IDEuMDAgQ2xzPTAyKGNvbW0uKSBTdWI9MDAgUHJvdD0wMCBNeFBTPSA4ICNDZmdzPSAgMgorUDogIFZlbmRvcj0wNGMxIFByb2RJRD0wMDhmIFJldj0gMi4wNworUzogIE1hbnVmYWN0dXJlcj0zQ29tIEluYy4KK1M6ICBQcm9kdWN0PTNDb20gVS5TLiBSb2JvdGljcyBQcm8gSVNETiBUQQorUzogIFNlcmlhbE51bWJlcj1VRlQ1M0E0OUJWVDcKK0M6ICAjSWZzPSAxIENmZyM9IDEgQXRyPTYwIE14UHdyPSAgMG1BCitJOiAgSWYjPSAwIEFsdD0gMCAjRVBzPSAzIENscz1mZih2ZW5kLikgU3ViPWZmIFByb3Q9ZmYgRHJpdmVyPWFjbQorRTogIEFkPTg1KEkpIEF0cj0wMihCdWxrKSBNeFBTPSAgNjQgSXZsPSAgMG1zCitFOiAgQWQ9MDQoTykgQXRyPTAyKEJ1bGspIE14UFM9ICA2NCBJdmw9ICAwbXMKK0U6ICBBZD04MShJKSBBdHI9MDMoSW50LikgTXhQUz0gIDE2IEl2bD0xMjhtcworQzoqICNJZnM9IDIgQ2ZnIz0gMiBBdHI9NjAgTXhQd3I9ICAwbUEKK0k6ICBJZiM9IDAgQWx0PSAwICNFUHM9IDEgQ2xzPTAyKGNvbW0uKSBTdWI9MDIgUHJvdD0wMSBEcml2ZXI9YWNtCitFOiAgQWQ9ODEoSSkgQXRyPTAzKEludC4pIE14UFM9ICAxNiBJdmw9MTI4bXMKK0k6ICBJZiM9IDEgQWx0PSAwICNFUHM9IDIgQ2xzPTBhKGRhdGEgKSBTdWI9MDAgUHJvdD0wMCBEcml2ZXI9YWNtCitFOiAgQWQ9ODUoSSkgQXRyPTAyKEJ1bGspIE14UFM9ICA2NCBJdmw9ICAwbXMKK0U6ICBBZD0wNChPKSBBdHI9MDIoQnVsaykgTXhQUz0gIDY0IEl2bD0gIDBtcworCitUaGUgcHJlc2VuY2Ugb2YgdGhlc2UgdGhyZWUgbGluZXMgKGFuZCB0aGUgQ2xzPSAnY29tbScgYW5kICdkYXRhJyBjbGFzc2VzKQoraXMgaW1wb3J0YW50LCBpdCBtZWFucyBpdCdzIGFuIEFDTSBkZXZpY2UuIFRoZSBEcml2ZXI9YWNtIG1lYW5zIHRoZSBhY20KK2RyaXZlciBpcyB1c2VkIGZvciB0aGUgZGV2aWNlLiBJZiB5b3Ugc2VlIG9ubHkgQ2xzPWZmKHZlbmQuKSB0aGVuIHlvdSdyZSBvdXQKK29mIGx1Y2ssIHlvdSBoYXZlIGEgZGV2aWNlIHdpdGggdmVuZG9yIHNwZWNpZmljLWludGVyZmFjZS4KKworRDogIFZlcj0gMS4wMCBDbHM9MDIoY29tbS4pIFN1Yj0wMCBQcm90PTAwIE14UFM9IDggI0NmZ3M9ICAyCitJOiAgSWYjPSAwIEFsdD0gMCAjRVBzPSAxIENscz0wMihjb21tLikgU3ViPTAyIFByb3Q9MDEgRHJpdmVyPWFjbQorSTogIElmIz0gMSBBbHQ9IDAgI0VQcz0gMiBDbHM9MGEoZGF0YSApIFN1Yj0wMCBQcm90PTAwIERyaXZlcj1hY20KKworSW4gdGhlIHN5c3RlbSBsb2cgeW91IHNob3VsZCBzZWU6CisKK3VzYi5jOiBVU0IgbmV3IGRldmljZSBjb25uZWN0LCBhc3NpZ25lZCBkZXZpY2UgbnVtYmVyIDIKK3VzYi5jOiBrbWFsbG9jIElGIGM3NjkxZmEwLCBudW1pZiAxCit1c2IuYzoga21hbGxvYyBJRiBjN2I1ZjNlMCwgbnVtaWYgMgordXNiLmM6IHNraXBwZWQgNCBjbGFzcy92ZW5kb3Igc3BlY2lmaWMgaW50ZXJmYWNlIGRlc2NyaXB0b3JzCit1c2IuYzogbmV3IGRldmljZSBzdHJpbmdzOiBNZnI9MSwgUHJvZHVjdD0yLCBTZXJpYWxOdW1iZXI9MwordXNiLmM6IFVTQiBkZXZpY2UgbnVtYmVyIDIgZGVmYXVsdCBsYW5ndWFnZSBJRCAweDQwOQorTWFudWZhY3R1cmVyOiAzQ29tIEluYy4KK1Byb2R1Y3Q6IDNDb20gVS5TLiBSb2JvdGljcyBQcm8gSVNETiBUQQorU2VyaWFsTnVtYmVyOiBVRlQ1M0E0OUJWVDcKK2FjbS5jOiBwcm9iaW5nIGNvbmZpZyAxCithY20uYzogcHJvYmluZyBjb25maWcgMgordHR5QUNNMDogVVNCIEFDTSBkZXZpY2UKK2FjbS5jOiBhY21fY29udHJvbF9tc2c6IHJxOiAweDIyIHZhbDogMHgwIGxlbjogMHgwIHJlc3VsdDogMAorYWNtLmM6IGFjbV9jb250cm9sX21zZzogcnE6IDB4MjAgdmFsOiAweDAgbGVuOiAweDcgcmVzdWx0OiA3Cit1c2IuYzogYWNtIGRyaXZlciBjbGFpbWVkIGludGVyZmFjZSBjN2I1ZjNlMAordXNiLmM6IGFjbSBkcml2ZXIgY2xhaW1lZCBpbnRlcmZhY2UgYzdiNWYzZjgKK3VzYi5jOiBhY20gZHJpdmVyIGNsYWltZWQgaW50ZXJmYWNlIGM3NjkxZmEwCisKK0lmIGFsbCB0aGlzIHNlZW1zIHRvIGJlIE9LLCBmaXJlIHVwIG1pbmljb20gYW5kIHNldCBpdCB0byB0YWxrIHRvIHRoZSB0dHlBQ00KK2RldmljZSBhbmQgdHJ5IHR5cGluZyAnYXQnLiBJZiBpdCByZXNwb25kcyB3aXRoICdPSycsIHRoZW4gZXZlcnl0aGluZyBpcword29ya2luZy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNiL2FuY2hvcnMudHh0IGIvRG9jdW1lbnRhdGlvbi91c2IvYW5jaG9ycy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU2YTk5YQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdXNiL2FuY2hvcnMudHh0CkBAIC0wLDAgKzEsNzkgQEAKK1doYXQgaXMgYW5jaG9yPworPT09PT09PT09PT09PT09CisKK0EgVVNCIGRyaXZlciBuZWVkcyB0byBzdXBwb3J0IHNvbWUgY2FsbGJhY2tzIHJlcXVpcmluZworYSBkcml2ZXIgdG8gY2Vhc2UgYWxsIElPIHRvIGFuIGludGVyZmFjZS4gVG8gZG8gc28sIGEKK2RyaXZlciBoYXMgdG8ga2VlcCB0cmFjayBvZiB0aGUgVVJCcyBpdCBoYXMgc3VibWl0dGVkCit0byBrbm93IHRoZXkndmUgYWxsIGNvbXBsZXRlZCBvciB0byBjYWxsIHVzYl9raWxsX3VyYgorZm9yIHRoZW0uIFRoZSBhbmNob3IgaXMgYSBkYXRhIHN0cnVjdHVyZSB0YWtlcyBjYXJlIG9mCitrZWVwaW5nIHRyYWNrIG9mIFVSQnMgYW5kIHByb3ZpZGVzIG1ldGhvZHMgdG8gZGVhbCB3aXRoCittdWx0aXBsZSBVUkJzLgorCitBbGxvY2F0aW9uIGFuZCBJbml0aWFsaXNhdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlcmUncyBubyBBUEkgdG8gYWxsb2NhdGUgYW4gYW5jaG9yLiBJdCBpcyBzaW1wbHkgZGVjbGFyZWQKK2FzIHN0cnVjdCB1c2JfYW5jaG9yLiBpbml0X3VzYl9hbmNob3IoKSBtdXN0IGJlIGNhbGxlZCB0bworaW5pdGlhbGlzZSB0aGUgZGF0YSBzdHJ1Y3R1cmUuCisKK0RlYWxsb2NhdGlvbgorPT09PT09PT09PT09CisKK09uY2UgaXQgaGFzIG5vIG1vcmUgVVJCcyBhc3NvY2lhdGVkIHdpdGggaXQsIHRoZSBhbmNob3IgY2FuIGJlCitmcmVlZCB3aXRoIG5vcm1hbCBtZW1vcnkgbWFuYWdlbWVudCBvcGVyYXRpb25zLgorCitBc3NvY2lhdGlvbiBhbmQgZGlzYXNzb2NpYXRpb24gb2YgVVJCcyB3aXRoIGFuY2hvcnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBbiBhc3NvY2lhdGlvbiBvZiBVUkJzIHRvIGFuIGFuY2hvciBpcyBtYWRlIGJ5IGFuIGV4cGxpY2l0CitjYWxsIHRvIHVzYl9hbmNob3JfdXJiKCkuIFRoZSBhc3NvY2lhdGlvbiBpcyBtYWludGFpbmVkIHVudGlsCithbiBVUkIgaXMgZmluaXNoZWQgYnkgKHN1Y2Nlc3NmdWwpIGNvbXBsZXRpb24uIFRodXMgZGlzYXNzb2NpYXRpb24KK2lzIGF1dG9tYXRpYy4gQSBmdW5jdGlvbiBpcyBwcm92aWRlZCB0byBmb3JjaWJseSBmaW5pc2ggKGtpbGwpCithbGwgVVJCcyBhc3NvY2lhdGVkIHdpdGggYW4gYW5jaG9yLgorRnVydGhlcm1vcmUsIGRpc2Fzc29jaWF0aW9uIGNhbiBiZSBtYWRlIHdpdGggdXNiX3VuYW5jaG9yX3VyYigpCisKK09wZXJhdGlvbnMgb24gbXVsdGl0dWRlcyBvZiBVUkJzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCit1c2Jfa2lsbF9hbmNob3JlZF91cmJzKCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGZ1bmN0aW9uIGtpbGxzIGFsbCBVUkJzIGFzc29jaWF0ZWQgd2l0aCBhbiBhbmNob3IuIFRoZSBVUkJzCithcmUgY2FsbGVkIGluIHRoZSByZXZlcnNlIHRlbXBvcmFsIG9yZGVyIHRoZXkgd2VyZSBzdWJtaXR0ZWQuCitUaGlzIHdheSBubyBkYXRhIGNhbiBiZSByZW9yZGVyZWQuCisKK3VzYl91bmxpbmtfYW5jaG9yZWRfdXJicygpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGZ1bmN0aW9uIHVubGlua3MgYWxsIFVSQnMgYXNzb2NpYXRlZCB3aXRoIGFuIGFuY2hvci4gVGhlIFVSQnMKK2FyZSBwcm9jZXNzZWQgaW4gdGhlIHJldmVyc2UgdGVtcG9yYWwgb3JkZXIgdGhleSB3ZXJlIHN1Ym1pdHRlZC4KK1RoaXMgaXMgc2ltaWxhciB0byB1c2Jfa2lsbF9hbmNob3JlZF91cmJzKCksIGJ1dCBpdCB3aWxsIG5vdCBzbGVlcC4KK1RoZXJlZm9yZSBubyBndWFyYW50ZWUgaXMgbWFkZSB0aGF0IHRoZSBVUkJzIGhhdmUgYmVlbiB1bmxpbmtlZCB3aGVuCit0aGUgY2FsbCByZXR1cm5zLiBUaGV5IG1heSBiZSB1bmxpbmtlZCBsYXRlciBidXQgd2lsbCBiZSB1bmxpbmtlZCBpbgorZmluaXRlIHRpbWUuCisKK3VzYl9zY3V0dGxlX2FuY2hvcmVkX3VyYnMoKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FsbCBVUkJzIG9mIGFuIGFuY2hvciBhcmUgdW5hbmNob3JlZCBlbiBtYXNzZS4KKwordXNiX3dhaXRfYW5jaG9yX2VtcHR5X3RpbWVvdXQoKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGZ1bmN0aW9uIHdhaXRzIGZvciBhbGwgVVJCcyBhc3NvY2lhdGVkIHdpdGggYW4gYW5jaG9yIHRvIGZpbmlzaAorb3IgYSB0aW1lb3V0LCB3aGljaGV2ZXIgY29tZXMgZmlyc3QuIEl0cyByZXR1cm4gdmFsdWUgd2lsbCB0ZWxsIHlvdQord2hldGhlciB0aGUgdGltZW91dCB3YXMgcmVhY2hlZC4KKwordXNiX2FuY2hvcl9lbXB0eSgpCistLS0tLS0tLS0tLS0tLS0tLS0KKworUmV0dXJucyB0cnVlIGlmIG5vIFVSQnMgYXJlIGFzc29jaWF0ZWQgd2l0aCBhbiBhbmNob3IuIExvY2tpbmcKK2lzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eS4KKwordXNiX2dldF9mcm9tX2FuY2hvcigpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmV0dXJucyB0aGUgb2xkZXN0IGFuY2hvcmVkIFVSQiBvZiBhbiBhbmNob3IuIFRoZSBVUkIgaXMgdW5hbmNob3JlZAorYW5kIHJldHVybmVkIHdpdGggYSByZWZlcmVuY2UuIEFzIHlvdSBtYXkgbWl4IFVSQnMgdG8gc2V2ZXJhbAorZGVzdGluYXRpb25zIGluIG9uZSBhbmNob3IgeW91IGhhdmUgbm8gZ3VhcmFudGVlIHRoZSBjaHJvbm9sb2dpY2FsbHkKK2ZpcnN0IHN1Ym1pdHRlZCBVUkIgaXMgcmV0dXJuZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VzYi9hdXRob3JpemF0aW9uLnR4dCBiL0RvY3VtZW50YXRpb24vdXNiL2F1dGhvcml6YXRpb24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3ZTk4NWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3VzYi9hdXRob3JpemF0aW9uLnR4dApAQCAtMCwwICsxLDEyMyBAQAorCitBdXRob3JpemluZyAob3Igbm90KSB5b3VyIFVTQiBkZXZpY2VzIHRvIGNvbm5lY3QgdG8gdGhlIHN5c3RlbQorCisoQykgMjAwNyBJbmFreSBQZXJlei1Hb256YWxleiA8aW5ha3lAbGludXguaW50ZWwuY29tPiBJbnRlbCBDb3Jwb3JhdGlvbgorCitUaGlzIGZlYXR1cmUgYWxsb3dzIHlvdSB0byBjb250cm9sIGlmIGEgVVNCIGRldmljZSBjYW4gYmUgdXNlZCAob3IKK25vdCkgaW4gYSBzeXN0ZW0uIFRoaXMgZmVhdHVyZSB3aWxsIGFsbG93IHlvdSB0byBpbXBsZW1lbnQgYSBsb2NrLWRvd24KK29mIFVTQiBkZXZpY2VzLCBmdWxseSBjb250cm9sbGVkIGJ5IHVzZXIgc3BhY2UuCisKK0FzIG9mIG5vdywgd2hlbiBhIFVTQiBkZXZpY2UgaXMgY29ubmVjdGVkIGl0IGlzIGNvbmZpZ3VyZWQgYW5kCitpdHMgaW50ZXJmYWNlcyBhcmUgaW1tZWRpYXRlbHkgbWFkZSBhdmFpbGFibGUgdG8gdGhlIHVzZXJzLiAgV2l0aCB0aGlzCittb2RpZmljYXRpb24sIG9ubHkgaWYgcm9vdCBhdXRob3JpemVzIHRoZSBkZXZpY2UgdG8gYmUgY29uZmlndXJlZCB3aWxsCit0aGVuIGl0IGJlIHBvc3NpYmxlIHRvIHVzZSBpdC4KKworVXNhZ2U6CisKK0F1dGhvcml6ZSBhIGRldmljZSB0byBjb25uZWN0OgorCiskIGVjaG8gMSA+IC9zeXMvYnVzL3VzYi9kZXZpY2VzL0RFVklDRS9hdXRob3JpemVkCisKK0RlYXV0aG9yaXplIGEgZGV2aWNlOgorCiskIGVjaG8gMCA+IC9zeXMvYnVzL3VzYi9kZXZpY2VzL0RFVklDRS9hdXRob3JpemVkCisKK1NldCBuZXcgZGV2aWNlcyBjb25uZWN0ZWQgdG8gaG9zdFggdG8gYmUgZGVhdXRob3JpemVkIGJ5IGRlZmF1bHQgKGllOgorbG9jayBkb3duKToKKworJCBlY2hvIDAgPiAvc3lzL2J1cy91c2IvZGV2aWNlcy91c2JYL2F1dGhvcml6ZWRfZGVmYXVsdAorCitSZW1vdmUgdGhlIGxvY2sgZG93bjoKKworJCBlY2hvIDEgPiAvc3lzL2J1cy91c2IvZGV2aWNlcy91c2JYL2F1dGhvcml6ZWRfZGVmYXVsdAorCitCeSBkZWZhdWx0LCBXaXJlZCBVU0IgZGV2aWNlcyBhcmUgYXV0aG9yaXplZCBieSBkZWZhdWx0IHRvCitjb25uZWN0LiBXaXJlbGVzcyBVU0IgaG9zdHMgZGVhdXRob3JpemUgYnkgZGVmYXVsdCBhbGwgbmV3IGNvbm5lY3RlZAorZGV2aWNlcyAodGhpcyBpcyBzbyBiZWNhdXNlIHdlIG5lZWQgdG8gZG8gYW4gYXV0aGVudGljYXRpb24gcGhhc2UKK2JlZm9yZSBhdXRob3JpemluZykuCisKKworRXhhbXBsZSBzeXN0ZW0gbG9ja2Rvd24gKGxhbWUpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbWFnaW5lIHlvdSB3YW50IHRvIGltcGxlbWVudCBhIGxvY2tkb3duIHNvIG9ubHkgZGV2aWNlcyBvZiB0eXBlIFhZWgorY2FuIGJlIGNvbm5lY3RlZCAoZm9yIGV4YW1wbGUsIGl0IGlzIGEga2lvc2sgbWFjaGluZSB3aXRoIGEgdmlzaWJsZQorVVNCIHBvcnQpOgorCitib290IHVwCityYy5sb2NhbCAtPgorCisgZm9yIGhvc3QgaW4gL3N5cy9idXMvdXNiL2RldmljZXMvdXNiKgorIGRvCisgICAgZWNobyAwID4gJGhvc3QvYXV0aG9yaXplZF9kZWZhdWx0CisgZG9uZQorCitIb29rdXAgYW4gc2NyaXB0IHRvIHVkZXYsIGZvciBuZXcgVVNCIGRldmljZXMKKworIGlmIGRldmljZV9pc19teV90eXBlICRERVYKKyB0aGVuCisgICBlY2hvIDEgPiAkZGV2aWNlX3BhdGgvYXV0aG9yaXplZAorIGRvbmUKKworCitOb3csIGRldmljZV9pc19teV90eXBlKCkgaXMgd2hlcmUgdGhlIGp1aWNlIGZvciBhIGxvY2tkb3duIGlzLiBKdXN0CitjaGVja2luZyBpZiB0aGUgY2xhc3MsIHR5cGUgYW5kIHByb3RvY29sIG1hdGNoIHNvbWV0aGluZyBpcyB0aGUgd29yc2UKK3NlY3VyaXR5IHZlcmlmaWNhdGlvbiB5b3UgY2FuIG1ha2UgKG9yIHRoZSBiZXN0LCBmb3Igc29tZW9uZSB3aWxsaW5nCit0byBicmVhayBpdCkuIElmIHlvdSBuZWVkIHNvbWV0aGluZyBzZWN1cmUsIHVzZSBjcnlwdG8gYW5kIENlcnRpZmljYXRlCitBdXRoZW50aWNhdGlvbiBvciBzdHVmZiBsaWtlIHRoYXQuIFNvbWV0aGluZyBzaW1wbGUgZm9yIGFuIHN0b3JhZ2Uga2V5Citjb3VsZCBiZToKKworZnVuY3Rpb24gZGV2aWNlX2lzX215X3R5cGUoKQoreworICAgZWNobyAxID4gYXV0aG9yaXplZAkJIyB0ZW1wb3JhcmlseSBhdXRob3JpemUgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogbWFrZSBzdXJlIG5vbmUgY2FuIG1vdW50IGl0CisgICBtb3VudCBERVZJQ0VOT0RFIC9tbnRwb2ludAorICAgc3VtPSQobWQ1c3VtIC9tbnRwb2ludC8uc2lnbmF0dXJlKQorICAgaWYgWyAkc3VtID0gJChjYXQgL2V0Yy9sb2NrZG93bi9rZXlzdW0pIF0KKyAgIHRoZW4KKyAgICAgICAgZWNobyAiV2UgYXJlIGdvb2QsIGNvbm5lY3RlZCIKKyAgICAgICAgdW1vdW50IC9tbnRwb2ludAorICAgICAgICAjIE90aGVyIHN0dWZmIHNvIG90aGVycyBjYW4gdXNlIGl0CisgICBlbHNlCisgICAgICAgIGVjaG8gMCA+IGF1dGhvcml6ZWQKKyAgIGZpCit9CisKKworT2YgY291cnNlLCB0aGlzIGlzIGxhbWUsIHlvdSdkIHdhbnQgdG8gZG8gYSByZWFsIGNlcnRpZmljYXRlCit2ZXJpZmljYXRpb24gc3R1ZmYgd2l0aCBQS0ksIHNvIHlvdSBkb24ndCBkZXBlbmQgb24gYSBzaGFyZWQgc2VjcmV0LAorZXRjLCBidXQgeW91IGdldCB0aGUgaWRlYS4gQW55Ym9keSB3aXRoIGFjY2VzcyB0byBhIGRldmljZSBnYWRnZXQga2l0CitjYW4gZmFrZSBkZXNjcmlwdG9ycyBhbmQgZGV2aWNlIGluZm8uIERvbid0IHRydXN0IHRoYXQuIFlvdSBhcmUKK3dlbGNvbWUuCisKKworSW50ZXJmYWNlIGF1dGhvcml6YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGVyZSBpcyBhIHNpbWlsYXIgYXBwcm9hY2ggdG8gYWxsb3cgb3IgZGVueSBzcGVjaWZpYyBVU0IgaW50ZXJmYWNlcy4KK1RoYXQgYWxsb3dzIHRvIGJsb2NrIG9ubHkgYSBzdWJzZXQgb2YgYW4gVVNCIGRldmljZS4KKworQXV0aG9yaXplIGFuIGludGVyZmFjZToKKyQgZWNobyAxID4gL3N5cy9idXMvdXNiL2RldmljZXMvSU5URVJGQUNFL2F1dGhvcml6ZWQKKworRGVhdXRob3JpemUgYW4gaW50ZXJmYWNlOgorJCBlY2hvIDAgPiAvc3lzL2J1cy91c2IvZGV2aWNlcy9JTlRFUkZBQ0UvYXV0aG9yaXplZAorCitUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgbmV3IGludGVyZmFjZXMKK29uIGEgcGFydGljdWxhciBVU0IgYnVzIGNhbiBiZSBjaGFuZ2VkLCB0b28uCisKK0FsbG93IGludGVyZmFjZXMgcGVyIGRlZmF1bHQ6CiskIGVjaG8gMSA+IC9zeXMvYnVzL3VzYi9kZXZpY2VzL3VzYlgvaW50ZXJmYWNlX2F1dGhvcml6ZWRfZGVmYXVsdAorCitEZW55IGludGVyZmFjZXMgcGVyIGRlZmF1bHQ6CiskIGVjaG8gMCA+IC9zeXMvYnVzL3VzYi9kZXZpY2VzL3VzYlgvaW50ZXJmYWNlX2F1dGhvcml6ZWRfZGVmYXVsdAorCitQZXIgZGVmYXVsdCB0aGUgaW50ZXJmYWNlX2F1dGhvcml6ZWRfZGVmYXVsdCBiaXQgaXMgMS4KK1NvIGFsbCBpbnRlcmZhY2VzIHdvdWxkIGF1dGhvcml6ZWQgcGVyIGRlZmF1bHQuCisKK05vdGU6CitJZiBhIGRlYXV0aG9yaXplZCBpbnRlcmZhY2Ugd2lsbCBiZSBhdXRob3JpemVkIHNvIHRoZSBkcml2ZXIgcHJvYmluZyBtdXN0CitiZSB0cmlnZ2VyZWQgbWFudWFsbHkgYnkgd3JpdGluZyBJTlRFUkZBQ0UgdG8gL3N5cy9idXMvdXNiL2RyaXZlcnNfcHJvYmUKKworRm9yIGRyaXZlcnMgdGhhdCBuZWVkIG11bHRpcGxlIGludGVyZmFjZXMgYWxsIG5lZWRlZCBpbnRlcmZhY2VzIHNob3VsZCBiZQorYXV0aHJvaXplZCBmaXJzdC4gQWZ0ZXIgdGhhdCB0aGUgZHJpdmVycyBzaG91bGQgYmUgcHJvYmVkLgorVGhpcyBhdm9pZHMgc2lkZSBlZmZlY3RzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi91c2IvYnVsay1zdHJlYW1zLnR4dCBiL0RvY3VtZW50YXRpb24vdXNiL2J1bGstc3RyZWFtcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZjMDIwMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdXNiL2J1bGstc3RyZWFtcy50eHQKQEAgLTAsMCArMSw3OCBAQAorQmFja2dyb3VuZAorPT09PT09PT09PQorCitCdWxrIGVuZHBvaW50IHN0cmVhbXMgd2VyZSBhZGRlZCBpbiB0aGUgVVNCIDMuMCBzcGVjaWZpY2F0aW9uLiAgU3RyZWFtcyBhbGxvdyBhCitkZXZpY2UgZHJpdmVyIHRvIG92ZXJsb2FkIGEgYnVsayBlbmRwb2ludCBzbyB0aGF0IG11bHRpcGxlIHRyYW5zZmVycyBjYW4gYmUKK3F1ZXVlZCBhdCBvbmNlLgorCitTdHJlYW1zIGFyZSBkZWZpbmVkIGluIHNlY3Rpb25zIDQuNC42LjQgYW5kIDguMTIuMS40IG9mIHRoZSBVbml2ZXJzYWwgU2VyaWFsIEJ1cworMy4wIHNwZWNpZmljYXRpb24gYXQgaHR0cDovL3d3dy51c2Iub3JnL2RldmVsb3BlcnMvZG9jcy8gIFRoZSBVU0IgQXR0YWNoZWQgU0NTSQorUHJvdG9jb2wsIHdoaWNoIHVzZXMgc3RyZWFtcyB0byBxdWV1ZSBtdWx0aXBsZSBTQ1NJIGNvbW1hbmRzLCBjYW4gYmUgZm91bmQgb24KK3RoZSBUMTAgd2Vic2l0ZSAoaHR0cDovL3QxMC5vcmcvKS4KKworCitEZXZpY2Utc2lkZSBpbXBsaWNhdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitPbmNlIGEgYnVmZmVyIGhhcyBiZWVuIHF1ZXVlZCB0byBhIHN0cmVhbSByaW5nLCB0aGUgZGV2aWNlIGlzIG5vdGlmaWVkICh0aHJvdWdoCithbiBvdXQtb2YtYmFuZCBtZWNoYW5pc20gb24gYW5vdGhlciBlbmRwb2ludCkgdGhhdCBkYXRhIGlzIHJlYWR5IGZvciB0aGF0IHN0cmVhbQorSUQuICBUaGUgZGV2aWNlIHRoZW4gdGVsbHMgdGhlIGhvc3Qgd2hpY2ggInN0cmVhbSIgaXQgd2FudHMgdG8gc3RhcnQuICBUaGUgaG9zdAorY2FuIGFsc28gaW5pdGlhdGUgYSB0cmFuc2ZlciBvbiBhIHN0cmVhbSB3aXRob3V0IHRoZSBkZXZpY2UgYXNraW5nLCBidXQgdGhlCitkZXZpY2UgY2FuIHJlZnVzZSB0aGF0IHRyYW5zZmVyLiAgRGV2aWNlcyBjYW4gc3dpdGNoIGJldHdlZW4gc3RyZWFtcyBhdCBhbnkKK3RpbWUuCisKKworRHJpdmVyIGltcGxpY2F0aW9ucworPT09PT09PT09PT09PT09PT09PQorCitpbnQgdXNiX2FsbG9jX3N0cmVhbXMoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSwKKwkJc3RydWN0IHVzYl9ob3N0X2VuZHBvaW50ICoqZXBzLCB1bnNpZ25lZCBpbnQgbnVtX2VwcywKKwkJdW5zaWduZWQgaW50IG51bV9zdHJlYW1zLCBnZnBfdCBtZW1fZmxhZ3MpOworCitEZXZpY2UgZHJpdmVycyB3aWxsIGNhbGwgdGhpcyBBUEkgdG8gcmVxdWVzdCB0aGF0IHRoZSBob3N0IGNvbnRyb2xsZXIgZHJpdmVyCithbGxvY2F0ZSBtZW1vcnkgc28gdGhlIGRyaXZlciBjYW4gdXNlIHVwIHRvIG51bV9zdHJlYW1zIHN0cmVhbSBJRHMuICBUaGV5IG11c3QKK3Bhc3MgYW4gYXJyYXkgb2YgdXNiX2hvc3RfZW5kcG9pbnRzIHRoYXQgbmVlZCB0byBiZSBzZXR1cCB3aXRoIHNpbWlsYXIgc3RyZWFtCitJRHMuICBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IGEgVUFTUCBkcml2ZXIgd2lsbCBiZSBhYmxlIHRvIHVzZSB0aGUgc2FtZSBzdHJlYW0KK0lEIGZvciB0aGUgYnVsayBJTiBhbmQgT1VUIGVuZHBvaW50cyB1c2VkIGluIGEgQmktZGlyZWN0aW9uYWwgY29tbWFuZCBzZXF1ZW5jZS4KKworVGhlIHJldHVybiB2YWx1ZSBpcyBhbiBlcnJvciBjb25kaXRpb24gKGlmIG9uZSBvZiB0aGUgZW5kcG9pbnRzIGRvZXNuJ3Qgc3VwcG9ydAorc3RyZWFtcywgb3IgdGhlIHhIQ0kgZHJpdmVyIHJhbiBvdXQgb2YgbWVtb3J5KSwgb3IgdGhlIG51bWJlciBvZiBzdHJlYW1zIHRoZQoraG9zdCBjb250cm9sbGVyIGFsbG9jYXRlZCBmb3IgdGhpcyBlbmRwb2ludC4gIFRoZSB4SENJIGhvc3QgY29udHJvbGxlciBoYXJkd2FyZQorZGVjbGFyZXMgaG93IG1hbnkgc3RyZWFtIElEcyBpdCBjYW4gc3VwcG9ydCwgYW5kIGVhY2ggYnVsayBlbmRwb2ludCBvbiBhCitTdXBlclNwZWVkIGRldmljZSB3aWxsIHNheSBob3cgbWFueSBzdHJlYW0gSURzIGl0IGNhbiBoYW5kbGUuICBUaGVyZWZvcmUsCitkcml2ZXJzIHNob3VsZCBiZSBhYmxlIHRvIGRlYWwgd2l0aCBiZWluZyBhbGxvY2F0ZWQgbGVzcyBzdHJlYW0gSURzIHRoYW4gdGhleQorcmVxdWVzdGVkLgorCitEbyBOT1QgY2FsbCB0aGlzIGZ1bmN0aW9uIGlmIHlvdSBoYXZlIFVSQnMgZW5xdWV1ZWQgZm9yIGFueSBvZiB0aGUgZW5kcG9pbnRzCitwYXNzZWQgaW4gYXMgYXJndW1lbnRzLiAgRG8gbm90IGNhbGwgdGhpcyBmdW5jdGlvbiB0byByZXF1ZXN0IGxlc3MgdGhhbiB0d28KK3N0cmVhbXMuCisKK0RyaXZlcnMgd2lsbCBvbmx5IGJlIGFsbG93ZWQgdG8gY2FsbCB0aGlzIEFQSSBvbmNlIGZvciB0aGUgc2FtZSBlbmRwb2ludAord2l0aG91dCBjYWxsaW5nIHVzYl9mcmVlX3N0cmVhbXMoKS4gIFRoaXMgaXMgYSBzaW1wbGlmaWNhdGlvbiBmb3IgdGhlIHhIQ0kgaG9zdAorY29udHJvbGxlciBkcml2ZXIsIGFuZCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuCisKKworUGlja2luZyBuZXcgU3RyZWFtIElEcyB0byB1c2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU3RyZWFtIElEIDAgaXMgcmVzZXJ2ZWQsIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgdG8gY29tbXVuaWNhdGUgd2l0aCBkZXZpY2VzLiAgSWYKK3VzYl9hbGxvY19zdHJlYW1zKCkgcmV0dXJucyB3aXRoIGEgdmFsdWUgb2YgTiwgeW91IG1heSB1c2Ugc3RyZWFtcyAxIHRob3VnaCBOLgorVG8gcXVldWUgYW4gVVJCIGZvciBhIHNwZWNpZmljIHN0cmVhbSwgc2V0IHRoZSB1cmItPnN0cmVhbV9pZCB2YWx1ZS4gIElmIHRoZQorZW5kcG9pbnQgZG9lcyBub3Qgc3VwcG9ydCBzdHJlYW1zLCBhbiBlcnJvciB3aWxsIGJlIHJldHVybmVkLgorCitOb3RlIHRoYXQgbmV3IEFQSSB0byBjaG9vc2UgdGhlIG5leHQgc3RyZWFtIElEIHdpbGwgaGF2ZSB0byBiZSBhZGRlZCBpZiB0aGUgeEhDSQorZHJpdmVyIHN1cHBvcnRzIHNlY29uZGFyeSBzdHJlYW0gSURzLgorCisKK0NsZWFuIHVwCis9PT09PT09PQorCitJZiBhIGRyaXZlciB3aXNoZXMgdG8gc3RvcCB1c2luZyBzdHJlYW1zIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIGRldmljZSwgaXQKK3Nob3VsZCBjYWxsCisKK3ZvaWQgdXNiX2ZyZWVfc3RyZWFtcyhzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLAorCQlzdHJ1Y3QgdXNiX2hvc3RfZW5kcG9pbnQgKiplcHMsIHVuc2lnbmVkIGludCBudW1fZXBzLAorCQlnZnBfdCBtZW1fZmxhZ3MpOworCitBbGwgc3RyZWFtIElEcyB3aWxsIGJlIGRlYWxsb2NhdGVkIHdoZW4gdGhlIGRyaXZlciByZWxlYXNlcyB0aGUgaW50ZXJmYWNlLCB0bworZW5zdXJlIHRoYXQgZHJpdmVycyB0aGF0IGRvbid0IHN1cHBvcnQgc3RyZWFtcyB3aWxsIGJlIGFibGUgdG8gdXNlIHRoZSBlbmRwb2ludC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNiL2NhbGxiYWNrcy50eHQgYi9Eb2N1bWVudGF0aW9uL3VzYi9jYWxsYmFja3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllODU4NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3VzYi9jYWxsYmFja3MudHh0CkBAIC0wLDAgKzEsMTM0IEBACitXaGF0IGNhbGxiYWNrcyB3aWxsIHVzYmNvcmUgZG8/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1VzYmNvcmUgd2lsbCBjYWxsIGludG8gYSBkcml2ZXIgdGhyb3VnaCBjYWxsYmFja3MgZGVmaW5lZCBpbiB0aGUgZHJpdmVyCitzdHJ1Y3R1cmUgYW5kIHRocm91Z2ggdGhlIGNvbXBsZXRpb24gaGFuZGxlciBvZiBVUkJzIGEgZHJpdmVyIHN1Ym1pdHMuCitPbmx5IHRoZSBmb3JtZXIgYXJlIGluIHRoZSBzY29wZSBvZiB0aGlzIGRvY3VtZW50LiBUaGVzZSB0d28ga2luZHMgb2YKK2NhbGxiYWNrcyBhcmUgY29tcGxldGVseSBpbmRlcGVuZGVudCBvZiBlYWNoIG90aGVyLiBJbmZvcm1hdGlvbiBvbiB0aGUKK2NvbXBsZXRpb24gY2FsbGJhY2sgY2FuIGJlIGZvdW5kIGluIERvY3VtZW50YXRpb24vdXNiL1VSQi50eHQuCisKK1RoZSBjYWxsYmFja3MgZGVmaW5lZCBpbiB0aGUgZHJpdmVyIHN0cnVjdHVyZSBhcmU6CisKKzEuIEhvdHBsdWdnaW5nIGNhbGxiYWNrczoKKworICogQHByb2JlOiBDYWxsZWQgdG8gc2VlIGlmIHRoZSBkcml2ZXIgaXMgd2lsbGluZyB0byBtYW5hZ2UgYSBwYXJ0aWN1bGFyCisgKglpbnRlcmZhY2Ugb24gYSBkZXZpY2UuCisgKiBAZGlzY29ubmVjdDogQ2FsbGVkIHdoZW4gdGhlIGludGVyZmFjZSBpcyBubyBsb25nZXIgYWNjZXNzaWJsZSwgdXN1YWxseQorICoJYmVjYXVzZSBpdHMgZGV2aWNlIGhhcyBiZWVuIChvciBpcyBiZWluZykgZGlzY29ubmVjdGVkIG9yIHRoZQorICoJZHJpdmVyIG1vZHVsZSBpcyBiZWluZyB1bmxvYWRlZC4KKworMi4gT2RkIGJhY2tkb29yIHRocm91Z2ggdXNiZnM6CisKKyAqIEBpb2N0bDogVXNlZCBmb3IgZHJpdmVycyB0aGF0IHdhbnQgdG8gdGFsayB0byB1c2Vyc3BhY2UgdGhyb3VnaAorICoJdGhlICJ1c2JmcyIgZmlsZXN5c3RlbS4gIFRoaXMgbGV0cyBkZXZpY2VzIHByb3ZpZGUgd2F5cyB0bworICoJZXhwb3NlIGluZm9ybWF0aW9uIHRvIHVzZXIgc3BhY2UgcmVnYXJkbGVzcyBvZiB3aGVyZSB0aGV5CisgKglkbyAob3IgZG9uJ3QpIHNob3cgdXAgb3RoZXJ3aXNlIGluIHRoZSBmaWxlc3lzdGVtLgorCiszLiBQb3dlciBtYW5hZ2VtZW50IChQTSkgY2FsbGJhY2tzOgorCisgKiBAc3VzcGVuZDogQ2FsbGVkIHdoZW4gdGhlIGRldmljZSBpcyBnb2luZyB0byBiZSBzdXNwZW5kZWQuCisgKiBAcmVzdW1lOiBDYWxsZWQgd2hlbiB0aGUgZGV2aWNlIGlzIGJlaW5nIHJlc3VtZWQuCisgKiBAcmVzZXRfcmVzdW1lOiBDYWxsZWQgd2hlbiB0aGUgc3VzcGVuZGVkIGRldmljZSBoYXMgYmVlbiByZXNldCBpbnN0ZWFkCisgKglvZiBiZWluZyByZXN1bWVkLgorCis0LiBEZXZpY2UgbGV2ZWwgb3BlcmF0aW9uczoKKworICogQHByZV9yZXNldDogQ2FsbGVkIHdoZW4gdGhlIGRldmljZSBpcyBhYm91dCB0byBiZSByZXNldC4KKyAqIEBwb3N0X3Jlc2V0OiBDYWxsZWQgYWZ0ZXIgdGhlIGRldmljZSBoYXMgYmVlbiByZXNldAorCitUaGUgaW9jdGwgaW50ZXJmYWNlICgyKSBzaG91bGQgYmUgdXNlZCBvbmx5IGlmIHlvdSBoYXZlIGEgdmVyeSBnb29kCityZWFzb24uIFN5c2ZzIGlzIHByZWZlcnJlZCB0aGVzZSBkYXlzLiBUaGUgUE0gY2FsbGJhY2tzIGFyZSBjb3ZlcmVkCitzZXBhcmF0ZWx5IGluIERvY3VtZW50YXRpb24vdXNiL3Bvd2VyLW1hbmFnZW1lbnQudHh0LgorCitDYWxsaW5nIGNvbnZlbnRpb25zCis9PT09PT09PT09PT09PT09PT09CisKK0FsbCBjYWxsYmFja3MgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gVGhlcmUncyBubyBuZWVkIGZvciBsb2NraW5nCithZ2FpbnN0IG90aGVyIFVTQiBjYWxsYmFja3MuIEFsbCBjYWxsYmFja3MgYXJlIGNhbGxlZCBmcm9tIGEgdGFzaworY29udGV4dC4gWW91IG1heSBzbGVlcC4gSG93ZXZlciwgaXQgaXMgaW1wb3J0YW50IHRoYXQgYWxsIHNsZWVwcyBoYXZlIGEKK3NtYWxsIGZpeGVkIHVwcGVyIGxpbWl0IGluIHRpbWUuIEluIHBhcnRpY3VsYXIgeW91IG11c3Qgbm90IGNhbGwgb3V0IHRvCit1c2VyIHNwYWNlIGFuZCBhd2FpdCByZXN1bHRzLgorCitIb3RwbHVnZ2luZyBjYWxsYmFja3MKKz09PT09PT09PT09PT09PT09PT09PQorCitUaGVzZSBjYWxsYmFja3MgYXJlIGludGVuZGVkIHRvIGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIGEgZHJpdmVyIHdpdGgKK2FuIGludGVyZmFjZS4gQSBkcml2ZXIncyBib25kIHRvIGFuIGludGVyZmFjZSBpcyBleGNsdXNpdmUuCisKK1RoZSBwcm9iZSgpIGNhbGxiYWNrCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbnQgKCpwcm9iZSkgKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLAorCQljb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpOworCitBY2NlcHQgb3IgZGVjbGluZSBhbiBpbnRlcmZhY2UuIElmIHlvdSBhY2NlcHQgdGhlIGRldmljZSByZXR1cm4gMCwKK290aGVyd2lzZSAtRU5PREVWIG9yIC1FTlhJTy4gT3RoZXIgZXJyb3IgY29kZXMgc2hvdWxkIGJlIHVzZWQgb25seSBpZiBhCitnZW51aW5lIGVycm9yIG9jY3VycmVkIGR1cmluZyBpbml0aWFsaXNhdGlvbiB3aGljaCBwcmV2ZW50ZWQgYSBkcml2ZXIKK2Zyb20gYWNjZXB0aW5nIGEgZGV2aWNlIHRoYXQgd291bGQgZWxzZSBoYXZlIGJlZW4gYWNjZXB0ZWQuCitZb3UgYXJlIHN0cm9uZ2x5IGVuY291cmFnZWQgdG8gdXNlIHVzYmNvcmUncyBmYWNpbGl0eSwKK3VzYl9zZXRfaW50ZmRhdGEoKSwgdG8gYXNzb2NpYXRlIGEgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBhbiBpbnRlcmZhY2UsIHNvCit0aGF0IHlvdSBrbm93IHdoaWNoIGludGVybmFsIHN0YXRlIGFuZCBpZGVudGl0eSB5b3UgYXNzb2NpYXRlIHdpdGggYQorcGFydGljdWxhciBpbnRlcmZhY2UuIFRoZSBkZXZpY2Ugd2lsbCBub3QgYmUgc3VzcGVuZGVkIGFuZCB5b3UgbWF5IGRvIElPCit0byB0aGUgaW50ZXJmYWNlIHlvdSBhcmUgY2FsbGVkIGZvciBhbmQgZW5kcG9pbnQgMCBvZiB0aGUgZGV2aWNlLiBEZXZpY2UKK2luaXRpYWxpc2F0aW9uIHRoYXQgZG9lc24ndCB0YWtlIHRvbyBsb25nIGlzIGEgZ29vZCBpZGVhIGhlcmUuCisKK1RoZSBkaXNjb25uZWN0KCkgY2FsbGJhY2sKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordm9pZCAoKmRpc2Nvbm5lY3QpIChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zik7CisKK1RoaXMgY2FsbGJhY2sgaXMgYSBzaWduYWwgdG8gYnJlYWsgYW55IGNvbm5lY3Rpb24gd2l0aCBhbiBpbnRlcmZhY2UuCitZb3UgYXJlIG5vdCBhbGxvd2VkIGFueSBJTyB0byBhIGRldmljZSBhZnRlciByZXR1cm5pbmcgZnJvbSB0aGlzCitjYWxsYmFjay4gWW91IGFsc28gbWF5IG5vdCBkbyBhbnkgb3RoZXIgb3BlcmF0aW9uIHRoYXQgbWF5IGludGVyZmVyZQord2l0aCBhbm90aGVyIGRyaXZlciBib3VuZCB0aGUgaW50ZXJmYWNlLCBlZy4gYSBwb3dlciBtYW5hZ2VtZW50CitvcGVyYXRpb24uCitJZiB5b3UgYXJlIGNhbGxlZCBkdWUgdG8gYSBwaHlzaWNhbCBkaXNjb25uZWN0aW9uLCBhbGwgeW91ciBVUkJzIHdpbGwgYmUKK2tpbGxlZCBieSB1c2Jjb3JlLiBOb3RlIHRoYXQgaW4gdGhpcyBjYXNlIGRpc2Nvbm5lY3Qgd2lsbCBiZSBjYWxsZWQgc29tZQordGltZSBhZnRlciB0aGUgcGh5c2ljYWwgZGlzY29ubmVjdGlvbi4gVGh1cyB5b3VyIGRyaXZlciBtdXN0IGJlIHByZXBhcmVkCit0byBkZWFsIHdpdGggZmFpbGluZyBJTyBldmVuIHByaW9yIHRvIHRoZSBjYWxsYmFjay4KKworRGV2aWNlIGxldmVsIGNhbGxiYWNrcworPT09PT09PT09PT09PT09PT09PT09PQorCitwcmVfcmVzZXQKKy0tLS0tLS0tLQorCitpbnQgKCpwcmVfcmVzZXQpKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKTsKKworQSBkcml2ZXIgb3IgdXNlciBzcGFjZSBpcyB0cmlnZ2VyaW5nIGEgcmVzZXQgb24gdGhlIGRldmljZSB3aGljaAorY29udGFpbnMgdGhlIGludGVyZmFjZSBwYXNzZWQgYXMgYW4gYXJndW1lbnQuIENlYXNlIElPLCB3YWl0IGZvciBhbGwKK291dHN0YW5kaW5nIFVSQnMgdG8gY29tcGxldGUsIGFuZCBzYXZlIGFueSBkZXZpY2Ugc3RhdGUgeW91IG5lZWQgdG8KK3Jlc3RvcmUuICBObyBtb3JlIFVSQnMgbWF5IGJlIHN1Ym1pdHRlZCB1bnRpbCB0aGUgcG9zdF9yZXNldCBtZXRob2QKK2lzIGNhbGxlZC4KKworSWYgeW91IG5lZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGhlcmUsIHVzZSBHRlBfTk9JTyBvciBHRlBfQVRPTUlDLCBpZiB5b3UKK2FyZSBpbiBhdG9taWMgY29udGV4dC4KKworcG9zdF9yZXNldAorLS0tLS0tLS0tLQorCitpbnQgKCpwb3N0X3Jlc2V0KShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zik7CisKK1RoZSByZXNldCBoYXMgY29tcGxldGVkLiAgUmVzdG9yZSBhbnkgc2F2ZWQgZGV2aWNlIHN0YXRlIGFuZCBiZWdpbgordXNpbmcgdGhlIGRldmljZSBhZ2Fpbi4KKworSWYgeW91IG5lZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGhlcmUsIHVzZSBHRlBfTk9JTyBvciBHRlBfQVRPTUlDLCBpZiB5b3UKK2FyZSBpbiBhdG9taWMgY29udGV4dC4KKworQ2FsbCBzZXF1ZW5jZXMKKz09PT09PT09PT09PT09CisKK05vIGNhbGxiYWNrcyBvdGhlciB0aGFuIHByb2JlIHdpbGwgYmUgaW52b2tlZCBmb3IgYW4gaW50ZXJmYWNlCit0aGF0IGlzbid0IGJvdW5kIHRvIHlvdXIgZHJpdmVyLgorCitQcm9iZSB3aWxsIG5ldmVyIGJlIGNhbGxlZCBmb3IgYW4gaW50ZXJmYWNlIGJvdW5kIHRvIGEgZHJpdmVyLgorSGVuY2UgZm9sbG93aW5nIGEgc3VjY2Vzc2Z1bCBwcm9iZSwgZGlzY29ubmVjdCB3aWxsIGJlIGNhbGxlZAorYmVmb3JlIHRoZXJlIGlzIGFub3RoZXIgcHJvYmUgZm9yIHRoZSBzYW1lIGludGVyZmFjZS4KKworT25jZSB5b3VyIGRyaXZlciBpcyBib3VuZCB0byBhbiBpbnRlcmZhY2UsIGRpc2Nvbm5lY3QgY2FuIGJlCitjYWxsZWQgYXQgYW55IHRpbWUgZXhjZXB0IGluIGJldHdlZW4gcHJlX3Jlc2V0IGFuZCBwb3N0X3Jlc2V0LgorcHJlX3Jlc2V0IGlzIGFsd2F5cyBmb2xsb3dlZCBieSBwb3N0X3Jlc2V0LCBldmVuIGlmIHRoZSByZXNldAorZmFpbGVkIG9yIHRoZSBkZXZpY2UgaGFzIGJlZW4gdW5wbHVnZ2VkLgorCitzdXNwZW5kIGlzIGFsd2F5cyBmb2xsb3dlZCBieSBvbmUgb2Y6IHJlc3VtZSwgcmVzZXRfcmVzdW1lLCBvcgorZGlzY29ubmVjdC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNiL2NoaXBpZGVhLnR4dCBiL0RvY3VtZW50YXRpb24vdXNiL2NoaXBpZGVhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjg0OGMxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi91c2IvY2hpcGlkZWEudHh0CkBAIC0wLDAgKzEsOTIgQEAKKzEuIEhvdyB0byB0ZXN0IE9URyBGU00oSE5QIGFuZCBTUlApCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVG8gc2hvdyBob3cgdG8gZGVtbyBPVEcgSE5QIGFuZCBTUlAgZnVuY3Rpb25zIHZpYSBzeXMgaW5wdXQgZmlsZXMKK3dpdGggMiBGcmVlc2NhbGUgaS5NWDZRIHNhYnJlIFNEIGJvYXJkcy4KKworMS4xIEhvdyB0byBlbmFibGUgT1RHIEZTTSBpbiBtZW51Y29uZmlnCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1NlbGVjdCBDT05GSUdfVVNCX09UR19GU00sIHJlYnVpbGQga2VybmVsIEltYWdlIGFuZCBtb2R1bGVzLgorSWYgeW91IHdhbnQgdG8gY2hlY2sgc29tZSBpbnRlcm5hbCB2YXJpYWJsZXMgZm9yIG90ZyBmc20sCitzZWxlY3QgQ09ORklHX1VTQl9DSElQSURFQV9ERUJVRywgdGhlcmUgYXJlIDIgZmlsZXMgd2hpY2gKK2NhbiBzaG93IG90ZyBmc20gdmFyaWFibGVzIGFuZCBzb21lIGNvbnRyb2xsZXIgcmVnaXN0ZXJzIHZhbHVlOgorY2F0IC9zeXMva2VybmVsL2RlYnVnL2NpX2hkcmMuMC9vdGcKK2NhdCAvc3lzL2tlcm5lbC9kZWJ1Zy9jaV9oZHJjLjAvcmVnaXN0ZXJzCisKKzEuMiBUZXN0IG9wZXJhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKzEpIFBvd2VyIHVwIDIgRnJlZXNjYWxlIGkuTVg2USBzYWJyZSBTRCBib2FyZHMgd2l0aCBnYWRnZXQgY2xhc3MgZHJpdmVyIGxvYWRlZAorICAgKGUuZy4gZ19tYXNzX3N0b3JhZ2UpLgorCisyKSBDb25uZWN0IDIgYm9hcmRzIHdpdGggdXNiIGNhYmxlIHdpdGggb25lIGVuZCBpcyBtaWNybyBBIHBsdWcsIHRoZSBvdGhlciBlbmQKKyAgIGlzIG1pY3JvIEIgcGx1Zy4KKworICAgVGhlIEEtZGV2aWNlKHdpdGggbWljcm8gQSBwbHVnIGluc2VydGVkKSBzaG91bGQgZW51bXJhdGUgQi1kZXZpY2UuCisKKzMpIFJvbGUgc3dpdGNoCisgICBPbiBCLWRldmljZToKKyAgIGVjaG8gMSA+IC9zeXMvYnVzL3BsYXRmb3JtL2RldmljZXMvY2lfaGRyYy4wL2lucHV0cy9iX2J1c19yZXEKKworICAgaWYgSE5QIHBvbGxpbmcgaXMgbm90IHN1cHBvcnRlZCwgYWxzbyBuZWVkOgorICAgT24gQS1kZXZpY2U6CisgICBlY2hvIDAgPiAvc3lzL2J1cy9wbGF0Zm9ybS9kZXZpY2VzL2NpX2hkcmMuMC9pbnB1dHMvYV9idXNfcmVxCisKKyAgIEItZGV2aWNlIHNob3VsZCB0YWtlIGhvc3Qgcm9sZSBhbmQgZW51bXJhdGUgQS1kZXZpY2UuCisKKzQpIEEtZGV2aWNlIHN3aXRjaCBiYWNrIHRvIGhvc3QuCisgICBPbiBCLWRldmljZToKKyAgIGVjaG8gMCA+IC9zeXMvYnVzL3BsYXRmb3JtL2RldmljZXMvY2lfaGRyYy4wL2lucHV0cy9iX2J1c19yZXEKKworICAgQS1kZXZpY2Ugc2hvdWxkIHN3aXRjaCBiYWNrIHRvIGhvc3QgYW5kIGVudW1yYXRlIEItZGV2aWNlLgorCis1KSBSZW1vdmUgQi1kZXZpY2UodW5wbHVnIG1pY3JvIEIgcGx1ZykgYW5kIGluc2VydCBhZ2FpbiBpbiAxMCBzZWNvbmRzLAorICAgQS1kZXZpY2Ugc2hvdWxkIGVudW1yYXRlIEItZGV2aWNlIGFnYWluLgorCis2KSBSZW1vdmUgQi1kZXZpY2UodW5wbHVnIG1pY3JvIEIgcGx1ZykgYW5kIGluc2VydCBhZ2FpbiBhZnRlciAxMCBzZWNvbmRzLAorICAgQS1kZXZpY2Ugc2hvdWxkIE5PVCBlbnVtcmF0ZSBCLWRldmljZS4KKworICAgaWYgQS1kZXZpY2Ugd2FudHMgdG8gdXNlIGJ1czoKKyAgIE9uIEEtZGV2aWNlOgorICAgZWNobyAwID4gL3N5cy9idXMvcGxhdGZvcm0vZGV2aWNlcy9jaV9oZHJjLjAvaW5wdXRzL2FfYnVzX2Ryb3AKKyAgIGVjaG8gMSA+IC9zeXMvYnVzL3BsYXRmb3JtL2RldmljZXMvY2lfaGRyYy4wL2lucHV0cy9hX2J1c19yZXEKKworICAgaWYgQi1kZXZpY2Ugd2FudHMgdG8gdXNlIGJ1czoKKyAgIE9uIEItZGV2aWNlOgorICAgZWNobyAxID4gL3N5cy9idXMvcGxhdGZvcm0vZGV2aWNlcy9jaV9oZHJjLjAvaW5wdXRzL2JfYnVzX3JlcQorCis3KSBBLWRldmljZSBwb3dlciBkb3duIHRoZSBidXMuCisgICBPbiBBLWRldmljZToKKyAgIGVjaG8gMSA+IC9zeXMvYnVzL3BsYXRmb3JtL2RldmljZXMvY2lfaGRyYy4wL2lucHV0cy9hX2J1c19kcm9wCisKKyAgIEEtZGV2aWNlIHNob3VsZCBkaXNjb25uZWN0IHdpdGggQi1kZXZpY2UgYW5kIHBvd2VyIGRvd24gdGhlIGJ1cy4KKworOCkgQi1kZXZpY2UgZG9lcyBkYXRhIHB1bHNlIGZvciBTUlAuCisgICBPbiBCLWRldmljZToKKyAgIGVjaG8gMSA+IC9zeXMvYnVzL3BsYXRmb3JtL2RldmljZXMvY2lfaGRyYy4wL2lucHV0cy9iX2J1c19yZXEKKworICAgQS1kZXZpY2Ugc2hvdWxkIHJlc3VtZSB1c2IgYnVzIGFuZCBlbnVtcmF0ZSBCLWRldmljZS4KKworMS4zIFJlZmVyZW5jZSBkb2N1bWVudAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIk9uLVRoZS1HbyBhbmQgRW1iZWRkZWQgSG9zdCBTdXBwbGVtZW50IHRvIHRoZSBVU0IgUmV2aXNpb24gMi4wIFNwZWNpZmljYXRpb24KK0p1bHkgMjcsIDIwMTIgUmV2aXNpb24gMi4wIHZlcnNpb24gMS4xYSIKKworMi4gSG93IHRvIGVuYWJsZSBVU0IgYXMgc3lzdGVtIHdha2V1cCBzb3VyY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitCZWxvdyBpcyB0aGUgZXhhbXBsZSBmb3IgaG93IHRvIGVuYWJsZSBVU0IgYXMgc3lzdGVtIHdha2V1cCBzb3VyY2UKK2F0IGlteDYgcGxhdGZvcm0uCisKKzIuMSBFbmFibGUgY29yZSdzIHdha2V1cAorZWNobyBlbmFibGVkID4gL3N5cy9idXMvcGxhdGZvcm0vZGV2aWNlcy9jaV9oZHJjLjAvcG93ZXIvd2FrZXVwCisyLjIgRW5hYmxlIGdsdWUgbGF5ZXIncyB3YWtldXAKK2VjaG8gZW5hYmxlZCA+IC9zeXMvYnVzL3BsYXRmb3JtL2RldmljZXMvMjE4NDAwMC51c2IvcG93ZXIvd2FrZXVwCisyLjMgRW5hYmxlIFBIWSdzIHdha2V1cCAob3B0aW9uYWwpCitlY2hvIGVuYWJsZWQgPiAvc3lzL2J1cy9wbGF0Zm9ybS9kZXZpY2VzLzIwYzkwMDAudXNicGh5L3Bvd2VyL3dha2V1cAorMi40IEVuYWJsZSByb290aHViJ3Mgd2FrZXVwCitlY2hvIGVuYWJsZWQgPiAvc3lzL2J1cy91c2IvZGV2aWNlcy91c2IxL3Bvd2VyL3dha2V1cAorMi41IEVuYWJsZSByZWxhdGVkIGRldmljZSdzIHdha2V1cAorZWNobyBlbmFibGVkID4gL3N5cy9idXMvdXNiL2RldmljZXMvMS0xL3Bvd2VyL3dha2V1cAorCitJZiB0aGUgc3lzdGVtIGhhcyBvbmx5IG9uZSB1c2IgcG9ydCwgYW5kIHlvdSB3YW50IHVzYiB3YWtldXAgYXQgdGhpcyBwb3J0LCB5b3UKK2NhbiB1c2UgYmVsb3cgc2NyaXB0IHRvIGVuYWJsZSB1c2Igd2FrZXVwLgorZm9yIGkgaW4gJChmaW5kIC9zeXMgLW5hbWUgd2FrZXVwIHwgZ3JlcCB1c2IpO2RvIGVjaG8gZW5hYmxlZCA+ICRpO2RvbmU7CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNiL2RtYS50eHQgYi9Eb2N1bWVudGF0aW9uL3VzYi9kbWEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NDY1MWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3VzYi9kbWEudHh0CkBAIC0wLDAgKzEsMTMzIEBACitJbiBMaW51eCAyLjUga2VybmVscyAoYW5kIGxhdGVyKSwgVVNCIGRldmljZSBkcml2ZXJzIGhhdmUgYWRkaXRpb25hbCBjb250cm9sCitvdmVyIGhvdyBETUEgbWF5IGJlIHVzZWQgdG8gcGVyZm9ybSBJL08gb3BlcmF0aW9ucy4gIFRoZSBBUElzIGFyZSBkZXRhaWxlZAoraW4gdGhlIGtlcm5lbCB1c2IgcHJvZ3JhbW1pbmcgZ3VpZGUgKGtlcm5lbGRvYywgZnJvbSB0aGUgc291cmNlIGNvZGUpLgorCisKK0FQSSBPVkVSVklFVworCitUaGUgYmlnIHBpY3R1cmUgaXMgdGhhdCBVU0IgZHJpdmVycyBjYW4gY29udGludWUgdG8gaWdub3JlIG1vc3QgRE1BIGlzc3VlcywKK3Rob3VnaCB0aGV5IHN0aWxsIG11c3QgcHJvdmlkZSBETUEtcmVhZHkgYnVmZmVycyAoc2VlCitEb2N1bWVudGF0aW9uL0RNQS1BUEktSE9XVE8udHh0KS4gIFRoYXQncyBob3cgdGhleSd2ZSB3b3JrZWQgdGhyb3VnaAordGhlIDIuNCAoYW5kIGVhcmxpZXIpIGtlcm5lbHMuCisKK09SOiAgdGhleSBjYW4gbm93IGJlIERNQS1hd2FyZS4KKworLSBOZXcgY2FsbHMgZW5hYmxlIERNQS1hd2FyZSBkcml2ZXJzLCBsZXR0aW5nIHRoZW0gYWxsb2NhdGUgZG1hIGJ1ZmZlcnMgYW5kCisgIG1hbmFnZSBkbWEgbWFwcGluZ3MgZm9yIGV4aXN0aW5nIGRtYS1yZWFkeSBidWZmZXJzIChzZWUgYmVsb3cpLgorCistIFVSQnMgaGF2ZSBhbiBhZGRpdGlvbmFsICJ0cmFuc2Zlcl9kbWEiIGZpZWxkLCBhcyB3ZWxsIGFzIGEgdHJhbnNmZXJfZmxhZ3MKKyAgYml0IHNheWluZyBpZiBpdCdzIHZhbGlkLiAgKENvbnRyb2wgcmVxdWVzdHMgYWxzbyBoYXZlICJzZXR1cF9kbWEiLCBidXQKKyAgZHJpdmVycyBtdXN0IG5vdCB1c2UgaXQuKQorCistICJ1c2Jjb3JlIiB3aWxsIG1hcCB0aGlzIERNQSBhZGRyZXNzLCBpZiBhIERNQS1hd2FyZSBkcml2ZXIgZGlkbid0IGRvCisgIGl0IGZpcnN0IGFuZCBzZXQgVVJCX05PX1RSQU5TRkVSX0RNQV9NQVAuICBIQ0RzCisgIGRvbid0IG1hbmFnZSBkbWEgbWFwcGluZ3MgZm9yIFVSQnMuCisKKy0gVGhlcmUncyBhIG5ldyAiZ2VuZXJpYyBETUEgQVBJIiwgcGFydHMgb2Ygd2hpY2ggYXJlIHVzYWJsZSBieSBVU0IgZGV2aWNlCisgIGRyaXZlcnMuICBOZXZlciB1c2UgZG1hX3NldF9tYXNrKCkgb24gYW55IFVTQiBpbnRlcmZhY2Ugb3IgZGV2aWNlOyB0aGF0CisgIHdvdWxkIHBvdGVudGlhbGx5IGJyZWFrIGFsbCBkZXZpY2VzIHNoYXJpbmcgdGhhdCBidXMuCisKKworRUxJTUlOQVRJTkcgQ09QSUVTCisKK0l0J3MgZ29vZCB0byBhdm9pZCBtYWtpbmcgQ1BVcyBjb3B5IGRhdGEgbmVlZGxlc3NseS4gIFRoZSBjb3N0cyBjYW4gYWRkIHVwLAorYW5kIGVmZmVjdHMgbGlrZSBjYWNoZS10cmFzaGluZyBjYW4gaW1wb3NlIHN1YnRsZSBwZW5hbHRpZXMuCisKKy0gSWYgeW91J3JlIGRvaW5nIGxvdHMgb2Ygc21hbGwgZGF0YSB0cmFuc2ZlcnMgZnJvbSB0aGUgc2FtZSBidWZmZXIgYWxsCisgIHRoZSB0aW1lLCB0aGF0IGNhbiByZWFsbHkgYnVybiB1cCByZXNvdXJjZXMgb24gc3lzdGVtcyB3aGljaCB1c2UgYW4KKyAgSU9NTVUgdG8gbWFuYWdlIHRoZSBETUEgbWFwcGluZ3MuICBJdCBjYW4gY29zdCBNVUNIIG1vcmUgdG8gc2V0IHVwIGFuZAorICB0ZWFyIGRvd24gdGhlIElPTU1VIG1hcHBpbmdzIHdpdGggZWFjaCByZXF1ZXN0IHRoYW4gcGVyZm9ybSB0aGUgSS9PIQorCisgIEZvciB0aG9zZSBzcGVjaWZpYyBjYXNlcywgVVNCIGhhcyBwcmltaXRpdmVzIHRvIGFsbG9jYXRlIGxlc3MgZXhwZW5zaXZlCisgIG1lbW9yeS4gIFRoZXkgd29yayBsaWtlIGttYWxsb2MgYW5kIGtmcmVlIHZlcnNpb25zIHRoYXQgZ2l2ZSB5b3UgdGhlIHJpZ2h0CisgIGtpbmQgb2YgYWRkcmVzc2VzIHRvIHN0b3JlIGluIHVyYi0+dHJhbnNmZXJfYnVmZmVyIGFuZCB1cmItPnRyYW5zZmVyX2RtYS4KKyAgWW91J2QgYWxzbyBzZXQgVVJCX05PX1RSQU5TRkVSX0RNQV9NQVAgaW4gdXJiLT50cmFuc2Zlcl9mbGFnczoKKworCXZvaWQgKnVzYl9hbGxvY19jb2hlcmVudCAoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsCisJCWludCBtZW1fZmxhZ3MsIGRtYV9hZGRyX3QgKmRtYSk7CisKKwl2b2lkIHVzYl9mcmVlX2NvaGVyZW50IChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwKKwkJdm9pZCAqYWRkciwgZG1hX2FkZHJfdCBkbWEpOworCisgIE1vc3QgZHJpdmVycyBzaG91bGQgKk5PVCogYmUgdXNpbmcgdGhlc2UgcHJpbWl0aXZlczsgdGhleSBkb24ndCBuZWVkCisgIHRvIHVzZSB0aGlzIHR5cGUgb2YgbWVtb3J5ICgiZG1hLWNvaGVyZW50IiksIGFuZCBtZW1vcnkgcmV0dXJuZWQgZnJvbQorICBrbWFsbG9jKCkgd2lsbCB3b3JrIGp1c3QgZmluZS4KKworICBUaGUgbWVtb3J5IGJ1ZmZlciByZXR1cm5lZCBpcyAiZG1hLWNvaGVyZW50Ijsgc29tZXRpbWVzIHlvdSBtaWdodCBuZWVkIHRvCisgIGZvcmNlIGEgY29uc2lzdGVudCBtZW1vcnkgYWNjZXNzIG9yZGVyaW5nIGJ5IHVzaW5nIG1lbW9yeSBiYXJyaWVycy4gIEl0J3MKKyAgbm90IHVzaW5nIGEgc3RyZWFtaW5nIERNQSBtYXBwaW5nLCBzbyBpdCdzIGdvb2QgZm9yIHNtYWxsIHRyYW5zZmVycyBvbgorICBzeXN0ZW1zIHdoZXJlIHRoZSBJL08gd291bGQgb3RoZXJ3aXNlIHRocmFzaCBhbiBJT01NVSBtYXBwaW5nLiAgKFNlZQorICBEb2N1bWVudGF0aW9uL0RNQS1BUEktSE9XVE8udHh0IGZvciBkZWZpbml0aW9ucyBvZiAiY29oZXJlbnQiIGFuZAorICAic3RyZWFtaW5nIiBETUEgbWFwcGluZ3MuKQorCisgIEFza2luZyBmb3IgMS9OdGggb2YgYSBwYWdlIChhcyB3ZWxsIGFzIGFza2luZyBmb3IgTiBwYWdlcykgaXMgcmVhc29uYWJseQorICBzcGFjZS1lZmZpY2llbnQuCisKKyAgT24gbW9zdCBzeXN0ZW1zIHRoZSBtZW1vcnkgcmV0dXJuZWQgd2lsbCBiZSB1bmNhY2hlZCwgYmVjYXVzZSB0aGUKKyAgc2VtYW50aWNzIG9mIGRtYS1jb2hlcmVudCBtZW1vcnkgcmVxdWlyZSBlaXRoZXIgYnlwYXNzaW5nIENQVSBjYWNoZXMKKyAgb3IgdXNpbmcgY2FjaGUgaGFyZHdhcmUgd2l0aCBidXMtc25vb3Bpbmcgc3VwcG9ydC4gIFdoaWxlIHg4NiBoYXJkd2FyZQorICBoYXMgc3VjaCBidXMtc25vb3BpbmcsIG1hbnkgb3RoZXIgc3lzdGVtcyB1c2Ugc29mdHdhcmUgdG8gZmx1c2ggY2FjaGUKKyAgbGluZXMgdG8gcHJldmVudCBETUEgY29uZmxpY3RzLgorCistIERldmljZXMgb24gc29tZSBFSENJIGNvbnRyb2xsZXJzIGNvdWxkIGhhbmRsZSBETUEgdG8vZnJvbSBoaWdoIG1lbW9yeS4KKworICBVbmZvcnR1bmF0ZWx5LCB0aGUgY3VycmVudCBMaW51eCBETUEgaW5mcmFzdHJ1Y3R1cmUgZG9lc24ndCBoYXZlIGEgc2FuZQorICB3YXkgdG8gZXhwb3NlIHRoZXNlIGNhcGFiaWxpdGllcyAuLi4gYW5kIGluIGFueSBjYXNlLCBISUdITUVNIGlzIG1vc3RseSBhCisgIGRlc2lnbiB3YXJ0IHNwZWNpZmljIHRvIHg4Nl8zMi4gIFNvIHlvdXIgYmVzdCBiZXQgaXMgdG8gZW5zdXJlIHlvdSBuZXZlcgorICBwYXNzIGEgaGlnaG1lbSBidWZmZXIgaW50byBhIFVTQiBkcml2ZXIuICBUaGF0J3MgZWFzeTsgaXQncyB0aGUgZGVmYXVsdAorICBiZWhhdmlvci4gIEp1c3QgZG9uJ3Qgb3ZlcnJpZGUgaXQ7IGUuZy4gd2l0aCBORVRJRl9GX0hJR0hETUEuCisKKyAgVGhpcyBtYXkgZm9yY2UgeW91ciBjYWxsZXJzIHRvIGRvIHNvbWUgYm91bmNlIGJ1ZmZlcmluZywgY29weWluZyBmcm9tCisgIGhpZ2ggbWVtb3J5IHRvICJub3JtYWwiIERNQSBtZW1vcnkuICBJZiB5b3UgY2FuIGNvbWUgdXAgd2l0aCBhIGdvb2Qgd2F5CisgIHRvIGZpeCB0aGlzIGlzc3VlIChmb3IgeDg2XzMyIG1hY2hpbmVzIHdpdGggb3ZlciAxIEdCeXRlIG9mIG1lbW9yeSksCisgIGZlZWwgZnJlZSB0byBzdWJtaXQgcGF0Y2hlcy4KKworCitXT1JLSU5HIFdJVEggRVhJU1RJTkcgQlVGRkVSUworCitFeGlzdGluZyBidWZmZXJzIGFyZW4ndCB1c2FibGUgZm9yIERNQSB3aXRob3V0IGZpcnN0IGJlaW5nIG1hcHBlZCBpbnRvIHRoZQorRE1BIGFkZHJlc3Mgc3BhY2Ugb2YgdGhlIGRldmljZS4gIEhvd2V2ZXIsIG1vc3QgYnVmZmVycyBwYXNzZWQgdG8geW91cgorZHJpdmVyIGNhbiBzYWZlbHkgYmUgdXNlZCB3aXRoIHN1Y2ggRE1BIG1hcHBpbmcuICAoU2VlIHRoZSBmaXJzdCBzZWN0aW9uCitvZiBEb2N1bWVudGF0aW9uL0RNQS1BUEktSE9XVE8udHh0LCB0aXRsZWQgIldoYXQgbWVtb3J5IGlzIERNQS1hYmxlPyIpCisKKy0gV2hlbiB5b3UncmUgdXNpbmcgc2NhdHRlcmxpc3RzLCB5b3UgY2FuIG1hcCBldmVyeXRoaW5nIGF0IG9uY2UuICBPbiBzb21lCisgIHN5c3RlbXMsIHRoaXMga2lja3MgaW4gYW4gSU9NTVUgYW5kIHR1cm5zIHRoZSBzY2F0dGVybGlzdHMgaW50byBzaW5nbGUKKyAgRE1BIHRyYW5zYWN0aW9uczoKKworCWludCB1c2JfYnVmZmVyX21hcF9zZyAoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwgdW5zaWduZWQgcGlwZSwKKwkJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywgaW50IG5lbnRzKTsKKworCXZvaWQgdXNiX2J1ZmZlcl9kbWFzeW5jX3NnIChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1bnNpZ25lZCBwaXBlLAorCQlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnLCBpbnQgbl9od19lbnRzKTsKKworCXZvaWQgdXNiX2J1ZmZlcl91bm1hcF9zZyAoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwgdW5zaWduZWQgcGlwZSwKKwkJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywgaW50IG5faHdfZW50cyk7CisKKyAgSXQncyBwcm9iYWJseSBlYXNpZXIgdG8gdXNlIHRoZSBuZXcgdXNiX3NnXyooKSBjYWxscywgd2hpY2ggZG8gdGhlIERNQQorICBtYXBwaW5nIGFuZCBhcHBseSBvdGhlciB0d2Vha3MgdG8gbWFrZSBzY2F0dGVybGlzdCBpL28gYmUgZmFzdC4KKworLSBTb21lIGRyaXZlcnMgbWF5IHByZWZlciB0byB3b3JrIHdpdGggdGhlIG1vZGVsIHRoYXQgdGhleSdyZSBtYXBwaW5nIGxhcmdlCisgIGJ1ZmZlcnMsIHN5bmNocm9uaXppbmcgdGhlaXIgc2FmZSByZS11c2UuICAoSWYgdGhlcmUncyBubyByZS11c2UsIHRoZW4gbGV0CisgIHVzYmNvcmUgZG8gdGhlIG1hcC91bm1hcC4pICBMYXJnZSBwZXJpb2RpYyB0cmFuc2ZlcnMgbWFrZSBnb29kIGV4YW1wbGVzCisgIGhlcmUsIHNpbmNlIGl0J3MgY2hlYXBlciB0byBqdXN0IHN5bmNocm9uaXplIHRoZSBidWZmZXIgdGhhbiB0byB1bm1hcCBpdAorICBlYWNoIHRpbWUgYW4gdXJiIGNvbXBsZXRlcyBhbmQgdGhlbiByZS1tYXAgaXQgb24gZHVyaW5nIHJlc3VibWlzc2lvbi4KKworICBUaGVzZSBjYWxscyBhbGwgd29yayB3aXRoIGluaXRpYWxpemVkIHVyYnM6ICB1cmItPmRldiwgdXJiLT5waXBlLAorICB1cmItPnRyYW5zZmVyX2J1ZmZlciwgYW5kIHVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aCBtdXN0IGFsbCBiZQorICB2YWxpZCB3aGVuIHRoZXNlIGNhbGxzIGFyZSB1c2VkICh1cmItPnNldHVwX3BhY2tldCBtdXN0IGJlIHZhbGlkIHRvbworICBpZiB1cmIgaXMgYSBjb250cm9sIHJlcXVlc3QpOgorCisJc3RydWN0IHVyYiAqdXNiX2J1ZmZlcl9tYXAgKHN0cnVjdCB1cmIgKnVyYik7CisKKwl2b2lkIHVzYl9idWZmZXJfZG1hc3luYyAoc3RydWN0IHVyYiAqdXJiKTsKKworCXZvaWQgdXNiX2J1ZmZlcl91bm1hcCAoc3RydWN0IHVyYiAqdXJiKTsKKworICBUaGUgY2FsbHMgbWFuYWdlIHVyYi0+dHJhbnNmZXJfZG1hIGZvciB5b3UsIGFuZCBzZXQgVVJCX05PX1RSQU5TRkVSX0RNQV9NQVAKKyAgc28gdGhhdCB1c2Jjb3JlIHdvbid0IG1hcCBvciB1bm1hcCB0aGUgYnVmZmVyLiAgVGhleSBjYW5ub3QgYmUgdXNlZCBmb3IKKyAgc2V0dXBfcGFja2V0IGJ1ZmZlcnMgaW4gY29udHJvbCByZXF1ZXN0cy4KKworTm90ZSB0aGF0IHNldmVyYWwgb2YgdGhvc2UgaW50ZXJmYWNlcyBhcmUgY3VycmVudGx5IGNvbW1lbnRlZCBvdXQsIHNpbmNlCit0aGV5IGRvbid0IGhhdmUgY3VycmVudCB1c2Vycy4gIFNlZSB0aGUgc291cmNlIGNvZGUuICBPdGhlciB0aGFuIHRoZSBkbWFzeW5jCitjYWxscyAod2hlcmUgdGhlIHVuZGVybHlpbmcgRE1BIHByaW1pdGl2ZXMgaGF2ZSBjaGFuZ2VkKSwgbW9zdCBvZiB0aGVtIGNhbgorZWFzaWx5IGJlIGNvbW1lbnRlZCBiYWNrIGluIGlmIHlvdSB3YW50IHRvIHVzZSB0aGVtLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi91c2IvZHdjMy50eHQgYi9Eb2N1bWVudGF0aW9uL3VzYi9kd2MzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDAyYzAxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi91c2IvZHdjMy50eHQKQEAgLTAsMCArMSw0NSBAQAorCisgVE9ETworfn5+fn5+CitQbGVhc2UgcGljayBzb21ldGhpbmcgd2hpbGUgcmVhZGluZyA6KQorCistIENvbnZlcnQgaW50ZXJydXB0IGhhbmRsZXIgdG8gcGVyLWVwLXRocmVhZC1pcnEKKworICBBcyBpdCB0dXJucyBvdXQgc29tZSBEV0MzLWNvbW1hbmRzIH4xbXMgdG8gY29tcGxldGUuIEN1cnJlbnRseSB3ZSBzcGluCisgIHVudGlsIHRoZSBjb21tYW5kIGNvbXBsZXRlcyB3aGljaCBpcyBiYWQuCisKKyAgSW1wbGVtZW50YXRpb24gaWRlYToKKyAgLSBkd2MgY29yZSBpbXBsZW1lbnRzIGEgZGVtdWx0aXBsZXhpbmcgaXJxIGNoaXAgZm9yIGludGVycnVwdHMgcGVyCisgICAgZW5kcG9pbnQuIFRoZSBpbnRlcnJ1cHQgbnVtYmVycyBhcmUgYWxsb2NhdGVkIGR1cmluZyBwcm9iZSBhbmQgYmVsb25nCisgICAgdG8gdGhlIGRldmljZS4gSWYgTVNJIHByb3ZpZGVzIHBlci1lbmRwb2ludCBpbnRlcnJ1cHQgdGhpcyBkdW1teQorICAgIGludGVycnVwdCBjaGlwIGNhbiBiZSByZXBsYWNlZCB3aXRoICJyZWFsIiBpbnRlcnJ1cHRzLgorICAtIGludGVycnVwdHMgYXJlIHJlcXVlc3RlZCAvIGFsbG9jYXRlZCBvbiB1c2JfZXBfZW5hYmxlKCkgYW5kIHJlbW92ZWQgb24KKyAgICB1c2JfZXBfZGlzYWJsZSgpLiBXb3JzdCBjYXNlIGFyZSAzMiBpbnRlcnJ1cHRzLCB0aGUgbG93ZXIgbGltaXQgaXMgdHdvCisgICAgZm9yIGVwMC8xLgorICAtIGR3YzNfc2VuZF9nYWRnZXRfZXBfY21kKCkgd2lsbCBzbGVlcCBpbiB3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoKQorICAgIHVudGlsIHRoZSBjb21tYW5kIGNvbXBsZXRlcy4KKyAgLSB0aGUgaW50ZXJydXB0IGhhbmRsZXIgaXMgc3BsaXQgaW50byB0aGUgZm9sbG93aW5nIHBpZWNlczoKKyAgICAtIHByaW1hcnkgaGFuZGxlciBvZiB0aGUgZGV2aWNlCisgICAgICBnb2VzIHRocm91Z2ggZXZlcnkgZXZlbnQgYW5kIGNhbGxzIGdlbmVyaWNfaGFuZGxlX2lycSgpIGZvciBldmVudAorICAgICAgaXQuIE9uIHJldHVybiBmcm9tIGdlbmVyaWNfaGFuZGxlX2lycSgpIGluIGFja25vd2xlZGdlcyB0aGUgZXZlbnQKKyAgICAgIGNvdW50ZXIgc28gaW50ZXJydXB0IGdvZXMgYXdheSAoZXZlbnR1YWxseSkuCisKKyAgICAtIHRocmVhZGVkIGhhbmRsZXIgb2YgdGhlIGRldmljZQorICAgICAgbm9uZQorCisgICAgLSBwcmltYXJ5IGhhbmRsZXIgb2YgdGhlIEVQLWludGVycnVwdAorICAgICAgcmVhZHMgdGhlIGV2ZW50IGFuZCB0cmllcyB0byBwcm9jZXNzIGl0LiBFdmVyeXRoaW5nIHRoYXQgcmVxdWlyZXMKKyAgICAgIHNsZWVwaW5nIGlzIGhhbmRlZCBvdmVyIHRvIHRoZSBUaHJlYWQuIFRoZSBldmVudCBpcyBzYXZlZCBpbiBhbgorICAgICAgcGVyLWVuZHBvaW50IGRhdGEtc3RydWN0dXJlLgorICAgICAgV2UgcHJvYmFibHkgaGF2ZSB0byBwYXkgYXR0ZW50aW9uIG5vdCB0byBwcm9jZXNzIGV2ZW50cyBvbmNlIHdlCisgICAgICBoYW5kZWQgc29tZXRoaW5nIHRvIHRocmVhZCBzbyB3ZSBkb24ndCBwcm9jZXNzIGV2ZW50IFggcHJpbyBZCisgICAgICB3aGVyZSBYID4gWS4KKworICAgIC0gdGhyZWFkZWQgaGFuZGxlciBvZiB0aGUgRVAtaW50ZXJydXB0CisgICAgICBoYW5kbGVzIHRoZSByZW1haW5pbmcgRVAgd29yayB3aGljaCBtaWdodCBzbGVlcCBzdWNoIGFzIHdhaXRpbmcKKyAgICAgIGZvciBjb21tYW5kIGNvbXBsZXRpb24uCisKKyAgTGF0ZW5jeToKKyAgIFRoZXJlIHNob3VsZCBiZSBubyBpbmNyZWFzZSBpbiBsYXRlbmN5IHNpbmNlIHRoZSBpbnRlcnJ1cHQtdGhyZWFkIGhhcyBhCisgICBoaWdoIHByaW9yaXR5IGFuZCB3aWxsIGJlIHJ1biBiZWZvcmUgYW4gYXZlcmFnZSB0YXNrIGluIHVzZXIgbGFuZAorICAgKGV4Y2VwdCB0aGUgdXNlciBjaGFuZ2VkIHByaW9yaXRpZXMpLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi91c2IvZWhjaS50eHQgYi9Eb2N1bWVudGF0aW9uL3VzYi9laGNpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjBiZDZjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi91c2IvZWhjaS50eHQKQEAgLTAsMCArMSwyMTQgQEAKKzI3LURlYy0yMDAyCisKK1RoZSBFSENJIGRyaXZlciBpcyB1c2VkIHRvIHRhbGsgdG8gaGlnaCBzcGVlZCBVU0IgMi4wIGRldmljZXMgdXNpbmcKK1VTQiAyLjAtY2FwYWJsZSBob3N0IGNvbnRyb2xsZXIgaGFyZHdhcmUuICBUaGUgVVNCIDIuMCBzdGFuZGFyZCBpcworY29tcGF0aWJsZSB3aXRoIHRoZSBVU0IgMS4xIHN0YW5kYXJkLiBJdCBkZWZpbmVzIHRocmVlIHRyYW5zZmVyIHNwZWVkczoKKworICAgIC0gIkhpZ2ggU3BlZWQiIDQ4MCBNYml0L3NlYyAoNjAgTUJ5dGUvc2VjKQorICAgIC0gIkZ1bGwgU3BlZWQiIDEyIE1iaXQvc2VjICgxLjUgTUJ5dGUvc2VjKQorICAgIC0gIkxvdyBTcGVlZCIgMS41IE1iaXQvc2VjCisKK1VTQiAxLjEgb25seSBhZGRyZXNzZWQgZnVsbCBzcGVlZCBhbmQgbG93IHNwZWVkLiAgSGlnaCBzcGVlZCBkZXZpY2VzCitjYW4gYmUgdXNlZCBvbiBVU0IgMS4xIHN5c3RlbXMsIGJ1dCB0aGV5IHNsb3cgZG93biB0byBVU0IgMS4xIHNwZWVkcy4KKworVVNCIDEuMSBkZXZpY2VzIG1heSBhbHNvIGJlIHVzZWQgb24gVVNCIDIuMCBzeXN0ZW1zLiAgV2hlbiBwbHVnZ2VkCitpbnRvIGFuIEVIQ0kgY29udHJvbGxlciwgdGhleSBhcmUgZ2l2ZW4gdG8gYSBVU0IgMS4xICJjb21wYW5pb24iCitjb250cm9sbGVyLCB3aGljaCBpcyBhIE9IQ0kgb3IgVUhDSSBjb250cm9sbGVyIGFzIG5vcm1hbGx5IHVzZWQgd2l0aAorc3VjaCBkZXZpY2VzLiAgV2hlbiBVU0IgMS4xIGRldmljZXMgcGx1ZyBpbnRvIFVTQiAyLjAgaHVicywgdGhleQoraW50ZXJhY3Qgd2l0aCB0aGUgRUhDSSBjb250cm9sbGVyIHRocm91Z2ggYSAiVHJhbnNhY3Rpb24gVHJhbnNsYXRvciIKKyhUVCkgaW4gdGhlIGh1Yiwgd2hpY2ggdHVybnMgbG93IG9yIGZ1bGwgc3BlZWQgdHJhbnNhY3Rpb25zIGludG8KK2hpZ2ggc3BlZWQgInNwbGl0IHRyYW5zYWN0aW9ucyIgdGhhdCBkb24ndCB3YXN0ZSB0cmFuc2ZlciBiYW5kd2lkdGguCisKK0F0IHRoaXMgd3JpdGluZywgdGhpcyBkcml2ZXIgaGFzIGJlZW4gc2VlbiB0byB3b3JrIHdpdGggaW1wbGVtZW50YXRpb25zCitvZiBFSENJIGZyb20gKGluIGFscGhhYmV0aWNhbCBvcmRlcik6ICBJbnRlbCwgTkVDLCBQaGlsaXBzLCBhbmQgVklBLgorT3RoZXIgRUhDSSBpbXBsZW1lbnRhdGlvbnMgYXJlIGJlY29taW5nIGF2YWlsYWJsZSBmcm9tIG90aGVyIHZlbmRvcnM7Cit5b3Ugc2hvdWxkIGV4cGVjdCB0aGlzIGRyaXZlciB0byB3b3JrIHdpdGggdGhlbSB0b28uCisKK1doaWxlIHVzYi1zdG9yYWdlIGRldmljZXMgaGF2ZSBiZWVuIGF2YWlsYWJsZSBzaW5jZSBtaWQtMjAwMSAod29ya2luZworcXVpdGUgc3BlZWRpbHkgb24gdGhlIDIuNCB2ZXJzaW9uIG9mIHRoaXMgZHJpdmVyKSwgaHVicyBoYXZlIG9ubHkKK2JlZW4gYXZhaWxhYmxlIHNpbmNlIGxhdGUgMjAwMSwgYW5kIG90aGVyIGtpbmRzIG9mIGhpZ2ggc3BlZWQgZGV2aWNlcworYXBwZWFyIHRvIGJlIG9uIGhvbGQgdW50aWwgbW9yZSBzeXN0ZW1zIGNvbWUgd2l0aCBVU0IgMi4wIGJ1aWx0LWluLgorU3VjaCBuZXcgc3lzdGVtcyBoYXZlIGJlZW4gYXZhaWxhYmxlIHNpbmNlIGVhcmx5IDIwMDIsIGFuZCBiZWNhbWUgbXVjaAorbW9yZSB0eXBpY2FsIGluIHRoZSBzZWNvbmQgaGFsZiBvZiAyMDAyLgorCitOb3RlIHRoYXQgVVNCIDIuMCBzdXBwb3J0IGludm9sdmVzIG1vcmUgdGhhbiBqdXN0IEVIQ0kuICBJdCByZXF1aXJlcworb3RoZXIgY2hhbmdlcyB0byB0aGUgTGludXgtVVNCIGNvcmUgQVBJcywgaW5jbHVkaW5nIHRoZSBodWIgZHJpdmVyLAorYnV0IHRob3NlIGNoYW5nZXMgaGF2ZW4ndCBuZWVkZWQgdG8gcmVhbGx5IGNoYW5nZSB0aGUgYmFzaWMgInVzYmNvcmUiCitBUElzIGV4cG9zZWQgdG8gVVNCIGRldmljZSBkcml2ZXJzLgorCistIERhdmlkIEJyb3duZWxsCisgIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisKK0ZVTkNUSU9OQUxJVFkKKworVGhpcyBkcml2ZXIgaXMgcmVndWxhcmx5IHRlc3RlZCBvbiB4ODYgaGFyZHdhcmUsIGFuZCBoYXMgYWxzbyBiZWVuCit1c2VkIG9uIFBQQyBoYXJkd2FyZSBzbyBiaWcvbGl0dGxlIGVuZGlhbm5lc3MgaXNzdWVzIHNob3VsZCBiZSBnb25lLgorSXQncyBiZWxpZXZlZCB0byBkbyBhbGwgdGhlIHJpZ2h0IFBDSSBtYWdpYyBzbyB0aGF0IEkvTyB3b3JrcyBldmVuIG9uCitzeXN0ZW1zIHdpdGggaW50ZXJlc3RpbmcgRE1BIG1hcHBpbmcgaXNzdWVzLgorCitUcmFuc2ZlciBUeXBlcworCitBdCB0aGlzIHdyaXRpbmcgdGhlIGRyaXZlciBzaG91bGQgY29tZm9ydGFibHkgaGFuZGxlIGFsbCBjb250cm9sLCBidWxrLAorYW5kIGludGVycnVwdCB0cmFuc2ZlcnMsIGluY2x1ZGluZyByZXF1ZXN0cyB0byBVU0IgMS4xIGRldmljZXMgdGhyb3VnaAordHJhbnNhY3Rpb24gdHJhbnNsYXRvcnMgKFRUcykgaW4gVVNCIDIuMCBodWJzLiAgQnV0IHlvdSBtYXkgZmluZCBidWdzLgorCitIaWdoIFNwZWVkIElzb2Nocm9ub3VzIChJU08pIHRyYW5zZmVyIHN1cHBvcnQgaXMgYWxzbyBmdW5jdGlvbmFsLCBidXQKK2F0IHRoaXMgd3JpdGluZyBubyBMaW51eCBkcml2ZXJzIGhhdmUgYmVlbiB1c2luZyB0aGF0IHN1cHBvcnQuCisKK0Z1bGwgU3BlZWQgSXNvY2hyb25vdXMgdHJhbnNmZXIgc3VwcG9ydCwgdGhyb3VnaCB0cmFuc2FjdGlvbiB0cmFuc2xhdG9ycywKK2lzIG5vdCB5ZXQgYXZhaWxhYmxlLiAgTm90ZSB0aGF0IHNwbGl0IHRyYW5zYWN0aW9uIHN1cHBvcnQgZm9yIElTTwordHJhbnNmZXJzIGNhbid0IHNoYXJlIG11Y2ggY29kZSB3aXRoIHRoZSBjb2RlIGZvciBoaWdoIHNwZWVkIElTTyB0cmFuc2ZlcnMsCitzaW5jZSBFSENJIHJlcHJlc2VudHMgdGhlc2Ugd2l0aCBhIGRpZmZlcmVudCBkYXRhIHN0cnVjdHVyZS4gIFNvIGZvciBub3csCittb3N0IFVTQiBhdWRpbyBhbmQgdmlkZW8gZGV2aWNlcyBjYW4ndCBiZSBjb25uZWN0ZWQgdG8gaGlnaCBzcGVlZCBidXNlcy4KKworRHJpdmVyIEJlaGF2aW9yCisKK1RyYW5zZmVycyBvZiBhbGwgdHlwZXMgY2FuIGJlIHF1ZXVlZC4gIFRoaXMgbWVhbnMgdGhhdCBjb250cm9sIHRyYW5zZmVycworZnJvbSBhIGRyaXZlciBvbiBvbmUgaW50ZXJmYWNlIChvciB0aHJvdWdoIHVzYmZzKSB3b24ndCBpbnRlcmZlcmUgd2l0aAorb25lcyBmcm9tIGFub3RoZXIgZHJpdmVyLCBhbmQgdGhhdCBpbnRlcnJ1cHQgdHJhbnNmZXJzIGNhbiB1c2UgcGVyaW9kcworb2Ygb25lIGZyYW1lIHdpdGhvdXQgcmlza2luZyBkYXRhIGxvc3MgZHVlIHRvIGludGVycnVwdCBwcm9jZXNzaW5nIGNvc3RzLgorCitUaGUgRUhDSSByb290IGh1YiBjb2RlIGhhbmRzIG9mZiBVU0IgMS4xIGRldmljZXMgdG8gaXRzIGNvbXBhbmlvbgorY29udHJvbGxlci4gIFRoaXMgZHJpdmVyIGRvZXNuJ3QgbmVlZCB0byBrbm93IGFueXRoaW5nIGFib3V0IHRob3NlCitkcml2ZXJzOyBhIE9IQ0kgb3IgVUhDSSBkcml2ZXIgdGhhdCB3b3JrcyBhbHJlYWR5IGRvZXNuJ3QgbmVlZCB0byBjaGFuZ2UKK2p1c3QgYmVjYXVzZSB0aGUgRUhDSSBkcml2ZXIgaXMgYWxzbyBwcmVzZW50LgorCitUaGVyZSBhcmUgc29tZSBpc3N1ZXMgd2l0aCBwb3dlciBtYW5hZ2VtZW50OyBzdXNwZW5kL3Jlc3VtZSBkb2Vzbid0CitiZWhhdmUgcXVpdGUgcmlnaHQgYXQgdGhlIG1vbWVudC4KKworQWxzbywgc29tZSBzaG9ydGN1dHMgaGF2ZSBiZWVuIHRha2VuIHdpdGggdGhlIHNjaGVkdWxpbmcgcGVyaW9kaWMKK3RyYW5zYWN0aW9ucyAoaW50ZXJydXB0IGFuZCBpc29jaHJvbm91cyB0cmFuc2ZlcnMpLiAgVGhlc2UgcGxhY2Ugc29tZQorbGltaXRzIG9uIHRoZSBudW1iZXIgb2YgcGVyaW9kaWMgdHJhbnNhY3Rpb25zIHRoYXQgY2FuIGJlIHNjaGVkdWxlZCwKK2FuZCBwcmV2ZW50IHVzZSBvZiBwb2xsaW5nIGludGVydmFscyBvZiBsZXNzIHRoYW4gb25lIGZyYW1lLgorCisKK1VTRSBCWQorCitBc3N1bWluZyB5b3UgaGF2ZSBhbiBFSENJIGNvbnRyb2xsZXIgKG9uIGEgUENJIGNhcmQgb3IgbW90aGVyYm9hcmQpCithbmQgaGF2ZSBjb21waWxlZCB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgbG9hZCB0aGlzIGxpa2U6CisKKyAgICAjIG1vZHByb2JlIGVoY2ktaGNkCisKK2FuZCByZW1vdmUgaXQgYnk6CisKKyAgICAjIHJtbW9kIGVoY2ktaGNkCisKK1lvdSBzaG91bGQgYWxzbyBoYXZlIGEgZHJpdmVyIGZvciBhICJjb21wYW5pb24gY29udHJvbGxlciIsIHN1Y2ggYXMKKyJvaGNpLWhjZCIgIG9yICJ1aGNpLWhjZCIuICBJbiBjYXNlIG9mIGFueSB0cm91YmxlIHdpdGggdGhlIEVIQ0kgZHJpdmVyLAorcmVtb3ZlIGl0cyBtb2R1bGUgYW5kIHRoZW4gdGhlIGRyaXZlciBmb3IgdGhhdCBjb21wYW5pb24gY29udHJvbGxlciB3aWxsCit0YWtlIG92ZXIgKGF0IGxvd2VyIHNwZWVkKSBhbGwgdGhlIGRldmljZXMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgaGFuZGxlZAorYnkgdGhlIEVIQ0kgZHJpdmVyLgorCitNb2R1bGUgcGFyYW1ldGVycyAocGFzcyB0byAibW9kcHJvYmUiKSBpbmNsdWRlOgorCisgICAgbG9nMl9pcnFfdGhyZXNoIChkZWZhdWx0IDApOgorCUxvZzIgb2YgZGVmYXVsdCBpbnRlcnJ1cHQgZGVsYXksIGluIG1pY3JvZnJhbWVzLiAgVGhlIGRlZmF1bHQKKwl2YWx1ZSBpcyAwLCBpbmRpY2F0aW5nIDEgbWljcm9mcmFtZSAoMTI1IHVzZWMpLiAgTWF4aW11bSB2YWx1ZQorCWlzIDYsIGluZGljYXRpbmcgMl42ID0gNjQgbWljcm9mcmFtZXMuICBUaGlzIGNvbnRyb2xzIGhvdyBvZnRlbgorCXRoZSBFSENJIGNvbnRyb2xsZXIgY2FuIGlzc3VlIGludGVycnVwdHMuCisKK0lmIHlvdSdyZSB1c2luZyB0aGlzIGRyaXZlciBvbiBhIDIuNSBrZXJuZWwsIGFuZCB5b3UndmUgZW5hYmxlZCBVU0IKK2RlYnVnZ2luZyBzdXBwb3J0LCB5b3UnbGwgc2VlIHRocmVlIGZpbGVzIGluIHRoZSAic3lzZnMiIGRpcmVjdG9yeSBmb3IKK2FueSBFSENJIGNvbnRyb2xsZXI6CisKKwkiYXN5bmMiIGR1bXBzIHRoZSBhc3luY2hyb25vdXMgc2NoZWR1bGUsIHVzZWQgZm9yIGNvbnRyb2wKKwkJYW5kIGJ1bGsgdHJhbnNmZXJzLiAgU2hvd3MgZWFjaCBhY3RpdmUgcWggYW5kIHRoZSBxdGRzCisJCXBlbmRpbmcsIHVzdWFsbHkgb25lIHF0ZCBwZXIgdXJiLiAgKExvb2sgYXQgaXQgd2l0aAorCQl1c2Itc3RvcmFnZSBkb2luZyBkaXNrIEkvTzsgd2F0Y2ggdGhlIHJlcXVlc3QgcXVldWVzISkKKwkicGVyaW9kaWMiIGR1bXBzIHRoZSBwZXJpb2RpYyBzY2hlZHVsZSwgdXNlZCBmb3IgaW50ZXJydXB0CisJCWFuZCBpc29jaHJvbm91cyB0cmFuc2ZlcnMuICBEb2Vzbid0IHNob3cgcXRkcy4KKwkicmVnaXN0ZXJzIiBzaG93IGNvbnRyb2xsZXIgcmVnaXN0ZXIgc3RhdGUsIGFuZAorCitUaGUgY29udGVudHMgb2YgdGhvc2UgZmlsZXMgY2FuIGhlbHAgaWRlbnRpZnkgZHJpdmVyIHByb2JsZW1zLgorCisKK0RldmljZSBkcml2ZXJzIHNob3VsZG4ndCBjYXJlIHdoZXRoZXIgdGhleSdyZSBydW5uaW5nIG92ZXIgRUhDSSBvciBub3QsCitidXQgdGhleSBtYXkgd2FudCB0byBjaGVjayBmb3IgInVzYl9kZXZpY2UtPnNwZWVkID09IFVTQl9TUEVFRF9ISUdIIi4KK0hpZ2ggc3BlZWQgZGV2aWNlcyBjYW4gZG8gdGhpbmdzIHRoYXQgZnVsbCBzcGVlZCAob3IgbG93IHNwZWVkKSBvbmVzCitjYW4ndCwgc3VjaCBhcyAiaGlnaCBiYW5kd2lkdGgiIHBlcmlvZGljIChpbnRlcnJ1cHQgb3IgSVNPKSB0cmFuc2ZlcnMuCitBbHNvLCBzb21lIHZhbHVlcyBpbiBkZXZpY2UgZGVzY3JpcHRvcnMgKHN1Y2ggYXMgcG9sbGluZyBpbnRlcnZhbHMgZm9yCitwZXJpb2RpYyB0cmFuc2ZlcnMpIHVzZSBkaWZmZXJlbnQgZW5jb2RpbmdzIHdoZW4gb3BlcmF0aW5nIGF0IGhpZ2ggc3BlZWQuCisKK0hvd2V2ZXIsIGRvIG1ha2UgYSBwb2ludCBvZiB0ZXN0aW5nIGRldmljZSBkcml2ZXJzIHRocm91Z2ggVVNCIDIuMCBodWJzLgorVGhvc2UgaHVicyByZXBvcnQgc29tZSBmYWlsdXJlcywgc3VjaCBhcyBkaXNjb25uZWN0aW9ucywgZGlmZmVyZW50bHkgd2hlbgordHJhbnNhY3Rpb24gdHJhbnNsYXRvcnMgYXJlIGluIHVzZTsgc29tZSBkcml2ZXJzIGhhdmUgYmVlbiBzZWVuIHRvIGJlaGF2ZQorYmFkbHkgd2hlbiB0aGV5IHNlZSBkaWZmZXJlbnQgZmF1bHRzIHRoYW4gT0hDSSBvciBVSENJIHJlcG9ydC4KKworCitQRVJGT1JNQU5DRQorCitVU0IgMi4wIHRocm91Z2hwdXQgaXMgZ2F0ZWQgYnkgdHdvIG1haW4gZmFjdG9yczogIGhvdyBmYXN0IHRoZSBob3N0Citjb250cm9sbGVyIGNhbiBwcm9jZXNzIHJlcXVlc3RzLCBhbmQgaG93IGZhc3QgZGV2aWNlcyBjYW4gcmVzcG9uZCB0bwordGhlbS4gIFRoZSA0ODAgTWJpdC9zZWMgInJhdyB0cmFuc2ZlciByYXRlIiBpcyBvYmV5ZWQgYnkgYWxsIGRldmljZXMsCitidXQgYWdncmVnYXRlIHRocm91Z2hwdXQgaXMgYWxzbyBhZmZlY3RlZCBieSBpc3N1ZXMgbGlrZSBkZWxheXMgYmV0d2VlbgoraW5kaXZpZHVhbCBoaWdoIHNwZWVkIHBhY2tldHMsIGRyaXZlciBpbnRlbGxpZ2VuY2UsIGFuZCBvZiBjb3Vyc2UgdGhlCitvdmVyYWxsIHN5c3RlbSBsb2FkLiAgTGF0ZW5jeSBpcyBhbHNvIGEgcGVyZm9ybWFuY2UgY29uY2Vybi4KKworQnVsayB0cmFuc2ZlcnMgYXJlIG1vc3Qgb2Z0ZW4gdXNlZCB3aGVyZSB0aHJvdWdocHV0IGlzIGFuIGlzc3VlLiAgSXQncworZ29vZCB0byBrZWVwIGluIG1pbmQgdGhhdCBidWxrIHRyYW5zZmVycyBhcmUgYWx3YXlzIGluIDUxMiBieXRlIHBhY2tldHMsCithbmQgYXQgbW9zdCAxMyBvZiB0aG9zZSBmaXQgaW50byBvbmUgVVNCIDIuMCBtaWNyb2ZyYW1lLiAgRWlnaHQgVVNCIDIuMAorbWljcm9mcmFtZXMgZml0IGluIGEgVVNCIDEuMSBmcmFtZTsgYSBtaWNyb2ZyYW1lIGlzIDEgbXNlYy84ID0gMTI1IHVzZWMuCisKK1NvIG1vcmUgdGhhbiA1MCBNQnl0ZS9zZWMgaXMgYXZhaWxhYmxlIGZvciBidWxrIHRyYW5zZmVycywgd2hlbiBib3RoCitoYXJkd2FyZSBhbmQgZGV2aWNlIGRyaXZlciBzb2Z0d2FyZSBhbGxvdyBpdC4gIFBlcmlvZGljIHRyYW5zZmVyIG1vZGVzCisoaXNvY2hyb25vdXMgYW5kIGludGVycnVwdCkgYWxsb3cgdGhlIGxhcmdlciBwYWNrZXQgc2l6ZXMgd2hpY2ggbGV0IHlvdQorYXBwcm9hY2ggdGhlIHF1b3RlZCA0ODAgTUJpdC9zZWMgdHJhbnNmZXIgcmF0ZS4KKworSGFyZHdhcmUgUGVyZm9ybWFuY2UKKworQXQgdGhpcyB3cml0aW5nLCBpbmRpdmlkdWFsIFVTQiAyLjAgZGV2aWNlcyB0ZW5kIHRvIG1heCBvdXQgYXQgYXJvdW5kCisyMCBNQnl0ZS9zZWMgdHJhbnNmZXIgcmF0ZXMuICBUaGlzIGlzIG9mIGNvdXJzZSBzdWJqZWN0IHRvIGNoYW5nZTsKK2FuZCBzb21lIGRldmljZXMgbm93IGdvIGZhc3Rlciwgd2hpbGUgb3RoZXJzIGdvIHNsb3dlci4KKworVGhlIGZpcnN0IE5FQyBpbXBsZW1lbnRhdGlvbiBvZiBFSENJIHNlZW1zIHRvIGhhdmUgYSBoYXJkd2FyZSBib3R0bGVuZWNrCithdCBhcm91bmQgMjggTUJ5dGUvc2VjIGFnZ3JlZ2F0ZSB0cmFuc2ZlciByYXRlLiAgV2hpbGUgdGhpcyBpcyBjbGVhcmx5Citlbm91Z2ggZm9yIGEgc2luZ2xlIGRldmljZSBhdCAyMCBNQnl0ZS9zZWMsIHB1dHRpbmcgdGhyZWUgc3VjaCBkZXZpY2VzCitvbnRvIG9uZSBidXMgZG9lcyBub3QgZ2V0IHlvdSA2MCBNQnl0ZS9zZWMuICBUaGUgaXNzdWUgYXBwZWFycyB0byBiZQordGhhdCB0aGUgY29udHJvbGxlciBoYXJkd2FyZSB3b24ndCBkbyBjb25jdXJyZW50IFVTQiBhbmQgUENJIGFjY2VzcywKK3NvIHRoYXQgaXQncyBvbmx5IHRyeWluZyBzaXggKG9yIG1heWJlIHNldmVuKSBVU0IgdHJhbnNhY3Rpb25zIGVhY2gKK21pY3JvZnJhbWUgcmF0aGVyIHRoYW4gdGhpcnRlZW4uICAoU2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgdHJhZGUgb2ZmCitmb3IgYSBwcm9kdWN0IHRoYXQgYmVhdCBhbGwgdGhlIG90aGVycyB0byBtYXJrZXQgYnkgb3ZlciBhIHllYXIhKQorCitJdCdzIGV4cGVjdGVkIHRoYXQgbmV3ZXIgaW1wbGVtZW50YXRpb25zIHdpbGwgYmV0dGVyIHRoaXMsIHRocm93aW5nCittb3JlIHNpbGljb24gcmVhbCBlc3RhdGUgYXQgdGhlIHByb2JsZW0gc28gdGhhdCBuZXcgbW90aGVyYm9hcmQgY2hpcAorc2V0cyB3aWxsIGdldCBjbG9zZXIgdG8gdGhhdCA2MCBNQnl0ZS9zZWMgdGFyZ2V0LiAgVGhhdCBpbmNsdWRlcyBhbgordXBkYXRlZCBpbXBsZW1lbnRhdGlvbiBmcm9tIE5FQywgYXMgd2VsbCBhcyBvdGhlciB2ZW5kb3JzJyBzaWxpY29uLgorCitUaGVyZSdzIGEgbWluaW11bSBsYXRlbmN5IG9mIG9uZSBtaWNyb2ZyYW1lICgxMjUgdXNlYykgZm9yIHRoZSBob3N0Cit0byByZWNlaXZlIGludGVycnVwdHMgZnJvbSB0aGUgRUhDSSBjb250cm9sbGVyIGluZGljYXRpbmcgY29tcGxldGlvbgorb2YgcmVxdWVzdHMuICBUaGF0IGxhdGVuY3kgaXMgdHVuYWJsZTsgdGhlcmUncyBhIG1vZHVsZSBvcHRpb24uICBCeQorZGVmYXVsdCBlaGNpLWhjZCBkcml2ZXIgdXNlcyB0aGUgbWluaW11bSBsYXRlbmN5LCB3aGljaCBtZWFucyB0aGF0IGlmCit5b3UgaXNzdWUgYSBjb250cm9sIG9yIGJ1bGsgcmVxdWVzdCB5b3UgY2FuIG9mdGVuIGV4cGVjdCB0byBsZWFybiB0aGF0CitpdCBjb21wbGV0ZWQgaW4gbGVzcyB0aGFuIDI1MCB1c2VjIChkZXBlbmRpbmcgb24gdHJhbnNmZXIgc2l6ZSkuCisKK1NvZnR3YXJlIFBlcmZvcm1hbmNlCisKK1RvIGdldCBldmVuIDIwIE1CeXRlL3NlYyB0cmFuc2ZlciByYXRlcywgTGludXgtVVNCIGRldmljZSBkcml2ZXJzIHdpbGwKK25lZWQgdG8ga2VlcCB0aGUgRUhDSSBxdWV1ZSBmdWxsLiAgVGhhdCBtZWFucyBpc3N1aW5nIGxhcmdlIHJlcXVlc3RzLAorb3IgdXNpbmcgYnVsayBxdWV1aW5nIGlmIGEgc2VyaWVzIG9mIHNtYWxsIHJlcXVlc3RzIG5lZWRzIHRvIGJlIGlzc3VlZC4KK1doZW4gZHJpdmVycyBkb24ndCBkbyB0aGF0LCB0aGVpciBwZXJmb3JtYW5jZSByZXN1bHRzIHdpbGwgc2hvdyBpdC4KKworSW4gdHlwaWNhbCBzaXR1YXRpb25zLCBhIHVzYl9idWxrX21zZygpIGxvb3Agd3JpdGluZyBvdXQgNCBLQiBjaHVua3MgaXMKK2dvaW5nIHRvIHdhc3RlIG1vcmUgdGhhbiBoYWxmIHRoZSBVU0IgMi4wIGJhbmR3aWR0aC4gIERlbGF5cyBiZXR3ZWVuIHRoZQorSS9PIGNvbXBsZXRpb24gYW5kIHRoZSBkcml2ZXIgaXNzdWluZyB0aGUgbmV4dCByZXF1ZXN0IHdpbGwgdGFrZSBsb25nZXIKK3RoYW4gdGhlIEkvTy4gIElmIHRoYXQgc2FtZSBsb29wIHVzZWQgMTYgS0IgY2h1bmtzLCBpdCdkIGJlIGJldHRlcjsgYQorc2VxdWVuY2Ugb2YgMTI4IEtCIGNodW5rcyB3b3VsZCB3YXN0ZSBhIGxvdCBsZXNzLgorCitCdXQgcmF0aGVyIHRoYW4gZGVwZW5kaW5nIG9uIHN1Y2ggbGFyZ2UgSS9PIGJ1ZmZlcnMgdG8gbWFrZSBzeW5jaHJvbm91cworSS9PIGJlIGVmZmljaWVudCwgaXQncyBiZXR0ZXIgdG8ganVzdCBxdWV1ZSB1cCBzZXZlcmFsIChidWxrKSByZXF1ZXN0cwordG8gdGhlIEhDLCBhbmQgd2FpdCBmb3IgdGhlbSBhbGwgdG8gY29tcGxldGUgKG9yIGJlIGNhbmNlbGVkIG9uIGVycm9yKS4KK1N1Y2ggVVJCIHF1ZXVpbmcgc2hvdWxkIHdvcmsgd2l0aCBhbGwgdGhlIFVTQiAxLjEgSEMgZHJpdmVycyB0b28uCisKK0luIHRoZSBMaW51eCAyLjUga2VybmVscywgbmV3IHVzYl9zZ18qKCkgYXBpIGNhbGxzIGhhdmUgYmVlbiBkZWZpbmVkOyB0aGV5CitxdWV1ZSBhbGwgdGhlIGJ1ZmZlcnMgZnJvbSBhIHNjYXR0ZXJsaXN0LiAgVGhleSBhbHNvIHVzZSBzY2F0dGVybGlzdCBETUEKK21hcHBpbmcgKHdoaWNoIG1pZ2h0IGFwcGx5IGFuIElPTU1VKSBhbmQgSVJRIHJlZHVjdGlvbiwgYWxsIG9mIHdoaWNoIHdpbGwKK2hlbHAgbWFrZSBoaWdoIHNwZWVkIHRyYW5zZmVycyBydW4gYXMgZmFzdCBhcyB0aGV5IGNhbi4KKworCitUQkQ6ICBJbnRlcnJ1cHQgYW5kIElTTyB0cmFuc2ZlciBwZXJmb3JtYW5jZSBpc3N1ZXMuICBUaG9zZSBwZXJpb2RpYwordHJhbnNmZXJzIGFyZSBmdWxseSBzY2hlZHVsZWQsIHNvIHRoZSBtYWluIGlzc3VlIGlzIGxpa2VseSB0byBiZSBob3cKK3RvIHRyaWdnZXIgImhpZ2ggYmFuZHdpZHRoIiBtb2Rlcy4KKworVEJEOiAgTW9yZSB0aGFuIHN0YW5kYXJkIDgwJSBwZXJpb2RpYyBiYW5kd2lkdGggYWxsb2NhdGlvbiBpcyBwb3NzaWJsZQordGhyb3VnaCBzeXNmcyB1ZnJhbWVfcGVyaW9kaWNfbWF4IHBhcmFtZXRlci4gRGVzY3JpYmUgdGhhdC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNiL2Vycm9yLWNvZGVzLnR4dCBiL0RvY3VtZW50YXRpb24vdXNiL2Vycm9yLWNvZGVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzNlYjg0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi91c2IvZXJyb3ItY29kZXMudHh0CkBAIC0wLDAgKzEsMTc1IEBACitSZXZpc2VkOiAyMDA0LU9jdC0yMQorCitUaGlzIGlzIHRoZSBkb2N1bWVudGF0aW9uIG9mIChob3BlZnVsbHkpIGFsbCBwb3NzaWJsZSBlcnJvciBjb2RlcyAoYW5kCit0aGVpciBpbnRlcnByZXRhdGlvbikgdGhhdCBjYW4gYmUgcmV0dXJuZWQgZnJvbSB1c2Jjb3JlLgorCitTb21lIG9mIHRoZW0gYXJlIHJldHVybmVkIGJ5IHRoZSBIb3N0IENvbnRyb2xsZXIgRHJpdmVycyAoSENEcyksIHdoaWNoCitkZXZpY2UgZHJpdmVycyBvbmx5IHNlZSB0aHJvdWdoIHVzYmNvcmUuICBBcyBhIHJ1bGUsIGFsbCB0aGUgSENEcyBzaG91bGQKK2JlaGF2ZSB0aGUgc2FtZSBleGNlcHQgZm9yIHRyYW5zZmVyIHNwZWVkIGRlcGVuZGVudCBiZWhhdmlvcnMgYW5kIHRoZQord2F5IGNlcnRhaW4gZmF1bHRzIGFyZSByZXBvcnRlZC4KKworCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgICAgICAgICAgICBFcnJvciBjb2RlcyByZXR1cm5lZCBieSB1c2Jfc3VibWl0X3VyYiAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK05vbi1VU0Itc3BlY2lmaWM6CisKKzAJCVVSQiBzdWJtaXNzaW9uIHdlbnQgZmluZQorCistRU5PTUVNCQlubyBtZW1vcnkgZm9yIGFsbG9jYXRpb24gb2YgaW50ZXJuYWwgc3RydWN0dXJlcwkKKworVVNCLXNwZWNpZmljOgorCistRUJVU1kJCVRoZSBVUkIgaXMgYWxyZWFkeSBhY3RpdmUuCisKKy1FTk9ERVYJCXNwZWNpZmllZCBVU0ItZGV2aWNlIG9yIGJ1cyBkb2Vzbid0IGV4aXN0CisKKy1FTk9FTlQJCXNwZWNpZmllZCBpbnRlcmZhY2Ugb3IgZW5kcG9pbnQgZG9lcyBub3QgZXhpc3Qgb3IKKwkJaXMgbm90IGVuYWJsZWQKKworLUVOWElPCQlob3N0IGNvbnRyb2xsZXIgZHJpdmVyIGRvZXMgbm90IHN1cHBvcnQgcXVldWluZyBvZiB0aGlzIHR5cGUKKwkJb2YgdXJiLiAgKHRyZWF0IGFzIGEgaG9zdCBjb250cm9sbGVyIGJ1Zy4pCisKKy1FSU5WQUwJCWEpIEludmFsaWQgdHJhbnNmZXIgdHlwZSBzcGVjaWZpZWQgKG9yIG5vdCBzdXBwb3J0ZWQpCisJCWIpIEludmFsaWQgb3IgdW5zdXBwb3J0ZWQgcGVyaW9kaWMgdHJhbnNmZXIgaW50ZXJ2YWwKKwkJYykgSVNPOiBhdHRlbXB0ZWQgdG8gY2hhbmdlIHRyYW5zZmVyIGludGVydmFsCisJCWQpIElTTzogbnVtYmVyX29mX3BhY2tldHMgaXMgPCAwCisJCWUpIHZhcmlvdXMgb3RoZXIgY2FzZXMKKworLUVYREVWCQlJU086IFVSQl9JU09fQVNBUCB3YXNuJ3Qgc3BlY2lmaWVkIGFuZCBhbGwgdGhlIGZyYW1lcworCQl0aGUgVVJCIHdvdWxkIGJlIHNjaGVkdWxlZCBpbiBoYXZlIGFscmVhZHkgZXhwaXJlZC4KKworLUVGQklHCQlIb3N0IGNvbnRyb2xsZXIgZHJpdmVyIGNhbid0IHNjaGVkdWxlIHRoYXQgbWFueSBJU08gZnJhbWVzLgorCistRVBJUEUJCVRoZSBwaXBlIHR5cGUgc3BlY2lmaWVkIGluIHRoZSBVUkIgZG9lc24ndCBtYXRjaCB0aGUKKwkJZW5kcG9pbnQncyBhY3R1YWwgdHlwZS4KKworLUVNU0dTSVpFCShhKSBlbmRwb2ludCBtYXhwYWNrZXQgc2l6ZSBpcyB6ZXJvOyBpdCBpcyBub3QgdXNhYmxlCisJCSAgICBpbiB0aGUgY3VycmVudCBpbnRlcmZhY2UgYWx0c2V0dGluZy4KKwkJKGIpIElTTyBwYWNrZXQgaXMgbGFyZ2VyIHRoYW4gdGhlIGVuZHBvaW50IG1heHBhY2tldC4KKwkJKGMpIHJlcXVlc3RlZCBkYXRhIHRyYW5zZmVyIGxlbmd0aCBpcyBpbnZhbGlkOiBuZWdhdGl2ZQorCQkgICAgb3IgdG9vIGxhcmdlIGZvciB0aGUgaG9zdCBjb250cm9sbGVyLgorCistRU5PU1BDCQlUaGlzIHJlcXVlc3Qgd291bGQgb3ZlcmNvbW1pdCB0aGUgdXNiIGJhbmR3aWR0aCByZXNlcnZlZAorCQlmb3IgcGVyaW9kaWMgdHJhbnNmZXJzIChpbnRlcnJ1cHQsIGlzb2Nocm9ub3VzKS4KKworLUVTSFVURE9XTglUaGUgZGV2aWNlIG9yIGhvc3QgY29udHJvbGxlciBoYXMgYmVlbiBkaXNhYmxlZCBkdWUgdG8gc29tZQorCQlwcm9ibGVtIHRoYXQgY291bGQgbm90IGJlIHdvcmtlZCBhcm91bmQuCisKKy1FUEVSTQkJU3VibWlzc2lvbiBmYWlsZWQgYmVjYXVzZSB1cmItPnJlamVjdCB3YXMgc2V0LgorCistRUhPU1RVTlJFQUNICVVSQiB3YXMgcmVqZWN0ZWQgYmVjYXVzZSB0aGUgZGV2aWNlIGlzIHN1c3BlbmRlZC4KKworLUVOT0VYRUMJQSBjb250cm9sIFVSQiBkb2Vzbid0IGNvbnRhaW4gYSBTZXR1cCBwYWNrZXQuCisKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAgICAgICAgICAgRXJyb3IgY29kZXMgcmV0dXJuZWQgYnkgaW4gdXJiLT5zdGF0dXMgICAgICAgICAgICAgICAqCisqICAgICAgICAgICAgICAgICAgIG9yIGluIGlzb19mcmFtZV9kZXNjW25dLnN0YXR1cyAoZm9yIElTTykgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworVVNCIGRldmljZSBkcml2ZXJzIG1heSBvbmx5IHRlc3QgdXJiIHN0YXR1cyB2YWx1ZXMgaW4gY29tcGxldGlvbiBoYW5kbGVycy4KK1RoaXMgaXMgYmVjYXVzZSBvdGhlcndpc2UgdGhlcmUgd291bGQgYmUgYSByYWNlIGJldHdlZW4gSENEcyB1cGRhdGluZwordGhlc2UgdmFsdWVzIG9uIG9uZSBDUFUsIGFuZCBkZXZpY2UgZHJpdmVycyB0ZXN0aW5nIHRoZW0gb24gYW5vdGhlciBDUFUuCisKK0EgdHJhbnNmZXIncyBhY3R1YWxfbGVuZ3RoIG1heSBiZSBwb3NpdGl2ZSBldmVuIHdoZW4gYW4gZXJyb3IgaGFzIGJlZW4KK3JlcG9ydGVkLiAgVGhhdCdzIGJlY2F1c2UgdHJhbnNmZXJzIG9mdGVuIGludm9sdmUgc2V2ZXJhbCBwYWNrZXRzLCBzbyB0aGF0CitvbmUgb3IgbW9yZSBwYWNrZXRzIGNvdWxkIGZpbmlzaCBiZWZvcmUgYW4gZXJyb3Igc3RvcHMgZnVydGhlciBlbmRwb2ludCBJL08uCisKK0ZvciBpc29jaHJvbm91cyBVUkJzLCB0aGUgdXJiIHN0YXR1cyB2YWx1ZSBpcyBub24temVybyBvbmx5IGlmIHRoZSBVUkIgaXMKK3VubGlua2VkLCB0aGUgZGV2aWNlIGlzIHJlbW92ZWQsIHRoZSBob3N0IGNvbnRyb2xsZXIgaXMgZGlzYWJsZWQsIG9yIHRoZSB0b3RhbAordHJhbnNmZXJyZWQgbGVuZ3RoIGlzIGxlc3MgdGhhbiB0aGUgcmVxdWVzdGVkIGxlbmd0aCBhbmQgdGhlIFVSQl9TSE9SVF9OT1RfT0sKK2ZsYWcgaXMgc2V0LiAgQ29tcGxldGlvbiBoYW5kbGVycyBmb3IgaXNvY2hyb25vdXMgVVJCcyBzaG91bGQgb25seSBzZWUKK3VyYi0+c3RhdHVzIHNldCB0byB6ZXJvLCAtRU5PRU5ULCAtRUNPTk5SRVNFVCwgLUVTSFVURE9XTiwgb3IgLUVSRU1PVEVJTy4KK0luZGl2aWR1YWwgZnJhbWUgZGVzY3JpcHRvciBzdGF0dXMgZmllbGRzIG1heSByZXBvcnQgbW9yZSBzdGF0dXMgY29kZXMuCisKKworMAkJCVRyYW5zZmVyIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKKworLUVOT0VOVAkJCVVSQiB3YXMgc3luY2hyb25vdXNseSB1bmxpbmtlZCBieSB1c2JfdW5saW5rX3VyYgorCistRUlOUFJPR1JFU1MJCVVSQiBzdGlsbCBwZW5kaW5nLCBubyByZXN1bHRzIHlldAorCQkJKFRoYXQgaXMsIGlmIGRyaXZlcnMgc2VlIHRoaXMgaXQncyBhIGJ1Zy4pCisKKy1FUFJPVE8gKCosICoqKQkJYSkgYml0c3R1ZmYgZXJyb3IKKwkJCWIpIG5vIHJlc3BvbnNlIHBhY2tldCByZWNlaXZlZCB3aXRoaW4gdGhlCisJCQkgICBwcmVzY3JpYmVkIGJ1cyB0dXJuLWFyb3VuZCB0aW1lCisJCQljKSB1bmtub3duIFVTQiBlcnJvciAKKworLUVJTFNFUSAoKiwgKiopCQlhKSBDUkMgbWlzbWF0Y2gKKwkJCWIpIG5vIHJlc3BvbnNlIHBhY2tldCByZWNlaXZlZCB3aXRoaW4gdGhlCisJCQkgICBwcmVzY3JpYmVkIGJ1cyB0dXJuLWFyb3VuZCB0aW1lCisJCQljKSB1bmtub3duIFVTQiBlcnJvciAKKworCQkJTm90ZSB0aGF0IG9mdGVuIHRoZSBjb250cm9sbGVyIGhhcmR3YXJlIGRvZXMgbm90CisJCQlkaXN0aW5ndWlzaCBhbW9uZyBjYXNlcyBhKSwgYiksIGFuZCBjKSwgc28gYQorCQkJZHJpdmVyIGNhbm5vdCB0ZWxsIHdoZXRoZXIgdGhlcmUgd2FzIGEgcHJvdG9jb2wKKwkJCWVycm9yLCBhIGZhaWx1cmUgdG8gcmVzcG9uZCAob2Z0ZW4gY2F1c2VkIGJ5CisJCQlkZXZpY2UgZGlzY29ubmVjdCksIG9yIHNvbWUgb3RoZXIgZmF1bHQuCisKKy1FVElNRSAoKiopCQlObyByZXNwb25zZSBwYWNrZXQgcmVjZWl2ZWQgd2l0aGluIHRoZSBwcmVzY3JpYmVkCisJCQlidXMgdHVybi1hcm91bmQgdGltZS4gIFRoaXMgZXJyb3IgbWF5IGluc3RlYWQgYmUKKwkJCXJlcG9ydGVkIGFzIC1FUFJPVE8gb3IgLUVJTFNFUS4KKworLUVUSU1FRE9VVAkJU3luY2hyb25vdXMgVVNCIG1lc3NhZ2UgZnVuY3Rpb25zIHVzZSB0aGlzIGNvZGUKKwkJCXRvIGluZGljYXRlIHRpbWVvdXQgZXhwaXJlZCBiZWZvcmUgdGhlIHRyYW5zZmVyCisJCQljb21wbGV0ZWQsIGFuZCBubyBvdGhlciBlcnJvciB3YXMgcmVwb3J0ZWQgYnkgSEMuCisKKy1FUElQRSAoKiopCQlFbmRwb2ludCBzdGFsbGVkLiAgRm9yIG5vbi1jb250cm9sIGVuZHBvaW50cywKKwkJCXJlc2V0IHRoaXMgc3RhdHVzIHdpdGggdXNiX2NsZWFyX2hhbHQoKS4KKworLUVDT01NCQkJRHVyaW5nIGFuIElOIHRyYW5zZmVyLCB0aGUgaG9zdCBjb250cm9sbGVyCisJCQlyZWNlaXZlZCBkYXRhIGZyb20gYW4gZW5kcG9pbnQgZmFzdGVyIHRoYW4gaXQKKwkJCWNvdWxkIGJlIHdyaXR0ZW4gdG8gc3lzdGVtIG1lbW9yeQorCistRU5PU1IJCQlEdXJpbmcgYW4gT1VUIHRyYW5zZmVyLCB0aGUgaG9zdCBjb250cm9sbGVyCisJCQljb3VsZCBub3QgcmV0cmlldmUgZGF0YSBmcm9tIHN5c3RlbSBtZW1vcnkgZmFzdAorCQkJZW5vdWdoIHRvIGtlZXAgdXAgd2l0aCB0aGUgVVNCIGRhdGEgcmF0ZQorCistRU9WRVJGTE9XICgqKQkJVGhlIGFtb3VudCBvZiBkYXRhIHJldHVybmVkIGJ5IHRoZSBlbmRwb2ludCB3YXMKKwkJCWdyZWF0ZXIgdGhhbiBlaXRoZXIgdGhlIG1heCBwYWNrZXQgc2l6ZSBvZiB0aGUKKwkJCWVuZHBvaW50IG9yIHRoZSByZW1haW5pbmcgYnVmZmVyIHNpemUuICAiQmFiYmxlIi4KKworLUVSRU1PVEVJTwkJVGhlIGRhdGEgcmVhZCBmcm9tIHRoZSBlbmRwb2ludCBkaWQgbm90IGZpbGwgdGhlCisJCQlzcGVjaWZpZWQgYnVmZmVyLCBhbmQgVVJCX1NIT1JUX05PVF9PSyB3YXMgc2V0IGluCisJCQl1cmItPnRyYW5zZmVyX2ZsYWdzLgorCistRU5PREVWCQkJRGV2aWNlIHdhcyByZW1vdmVkLiAgT2Z0ZW4gcHJlY2VkZWQgYnkgYSBidXJzdCBvZgorCQkJb3RoZXIgZXJyb3JzLCBzaW5jZSB0aGUgaHViIGRyaXZlciBkb2Vzbid0IGRldGVjdAorCQkJZGV2aWNlIHJlbW92YWwgZXZlbnRzIGltbWVkaWF0ZWx5LgorCistRVhERVYJCQlJU08gdHJhbnNmZXIgb25seSBwYXJ0aWFsbHkgY29tcGxldGVkCisJCQkob25seSBzZXQgaW4gaXNvX2ZyYW1lX2Rlc2Nbbl0uc3RhdHVzLCBub3QgdXJiLT5zdGF0dXMpCisKKy1FSU5WQUwJCQlJU08gbWFkbmVzcywgaWYgdGhpcyBoYXBwZW5zOiBMb2cgb2ZmIGFuZCBnbyBob21lCisKKy1FQ09OTlJFU0VUCQlVUkIgd2FzIGFzeW5jaHJvbm91c2x5IHVubGlua2VkIGJ5IHVzYl91bmxpbmtfdXJiCisKKy1FU0hVVERPV04JCVRoZSBkZXZpY2Ugb3IgaG9zdCBjb250cm9sbGVyIGhhcyBiZWVuIGRpc2FibGVkIGR1ZQorCQkJdG8gc29tZSBwcm9ibGVtIHRoYXQgY291bGQgbm90IGJlIHdvcmtlZCBhcm91bmQsCisJCQlzdWNoIGFzIGEgcGh5c2ljYWwgZGlzY29ubmVjdC4KKworCisoKikgRXJyb3IgY29kZXMgbGlrZSAtRVBST1RPLCAtRUlMU0VRIGFuZCAtRU9WRVJGTE9XIG5vcm1hbGx5IGluZGljYXRlCitoYXJkd2FyZSBwcm9ibGVtcyBzdWNoIGFzIGJhZCBkZXZpY2VzIChpbmNsdWRpbmcgZmlybXdhcmUpIG9yIGNhYmxlcy4KKworKCoqKSBUaGlzIGlzIGFsc28gb25lIG9mIHNldmVyYWwgY29kZXMgdGhhdCBkaWZmZXJlbnQga2luZHMgb2YgaG9zdAorY29udHJvbGxlciB1c2UgdG8gaW5kaWNhdGUgYSB0cmFuc2ZlciBoYXMgZmFpbGVkIGJlY2F1c2Ugb2YgZGV2aWNlCitkaXNjb25uZWN0LiAgSW4gdGhlIGludGVydmFsIGJlZm9yZSB0aGUgaHViIGRyaXZlciBzdGFydHMgZGlzY29ubmVjdAorcHJvY2Vzc2luZywgZGV2aWNlcyBtYXkgcmVjZWl2ZSBzdWNoIGZhdWx0IHJlcG9ydHMgZm9yIGV2ZXJ5IHJlcXVlc3QuCisKKworCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgICAgICAgRXJyb3IgY29kZXMgcmV0dXJuZWQgYnkgdXNiY29yZS1mdW5jdGlvbnMgICAgICAgICAgICAgICAgICoKKyogICAgICAgICAgIChleHBlY3QgYWxzbyBvdGhlciBzdWJtaXQgYW5kIHRyYW5zZmVyIHN0YXR1cyBjb2RlcykgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCit1c2JfcmVnaXN0ZXIoKToKKy1FSU5WQUwJCQllcnJvciBkdXJpbmcgcmVnaXN0ZXJpbmcgbmV3IGRyaXZlcgorCit1c2JfZ2V0XyovdXNiX3NldF8qKCk6Cit1c2JfY29udHJvbF9tc2coKToKK3VzYl9idWxrX21zZygpOgorLUVUSU1FRE9VVAkJVGltZW91dCBleHBpcmVkIGJlZm9yZSB0aGUgdHJhbnNmZXIgY29tcGxldGVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi91c2IvZnVuY3Rpb25mcy50eHQgYi9Eb2N1bWVudGF0aW9uL3VzYi9mdW5jdGlvbmZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWFhZWEwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi91c2IvZnVuY3Rpb25mcy50eHQKQEAgLTAsMCArMSw2NyBAQAorKkhvdyBGdW5jdGlvbkZTIHdvcmtzKgorCitGcm9tIGtlcm5lbCBwb2ludCBvZiB2aWV3IGl0IGlzIGp1c3QgYSBjb21wb3NpdGUgZnVuY3Rpb24gd2l0aCBzb21lCit1bmlxdWUgYmVoYXZpb3VyLiAgSXQgbWF5IGJlIGFkZGVkIHRvIGFuIFVTQiBjb25maWd1cmF0aW9uIG9ubHkgYWZ0ZXIKK3RoZSB1c2VyIHNwYWNlIGRyaXZlciBoYXMgcmVnaXN0ZXJlZCBieSB3cml0aW5nIGRlc2NyaXB0b3JzIGFuZAorc3RyaW5ncyAodGhlIHVzZXIgc3BhY2UgcHJvZ3JhbSBoYXMgdG8gcHJvdmlkZSB0aGUgc2FtZSBpbmZvcm1hdGlvbgordGhhdCBrZXJuZWwgbGV2ZWwgY29tcG9zaXRlIGZ1bmN0aW9ucyBwcm92aWRlIHdoZW4gdGhleSBhcmUgYWRkZWQgdG8KK3RoZSBjb25maWd1cmF0aW9uKS4KKworVGhpcyBpbiBwYXJ0aWN1bGFyIG1lYW5zIHRoYXQgdGhlIGNvbXBvc2l0ZSBpbml0aWFsaXNhdGlvbiBmdW5jdGlvbnMKK21heSBub3QgYmUgaW4gaW5pdCBzZWN0aW9uIChpZS4gbWF5IG5vdCB1c2UgdGhlIF9faW5pdCB0YWcpLgorCitGcm9tIHVzZXIgc3BhY2UgcG9pbnQgb2YgdmlldyBpdCBpcyBhIGZpbGUgc3lzdGVtIHdoaWNoIHdoZW4KK21vdW50ZWQgcHJvdmlkZXMgYW4gImVwMCIgZmlsZS4gIFVzZXIgc3BhY2UgZHJpdmVyIG5lZWQgdG8KK3dyaXRlIGRlc2NyaXB0b3JzIGFuZCBzdHJpbmdzIHRvIHRoYXQgZmlsZS4gIEl0IGRvZXMgbm90IG5lZWQKK3RvIHdvcnJ5IGFib3V0IGVuZHBvaW50cywgaW50ZXJmYWNlcyBvciBzdHJpbmdzIG51bWJlcnMgYnV0CitzaW1wbHkgcHJvdmlkZSBkZXNjcmlwdG9ycyBzdWNoIGFzIGlmIHRoZSBmdW5jdGlvbiB3YXMgdGhlCitvbmx5IG9uZSAoZW5kcG9pbnRzIGFuZCBzdHJpbmdzIG51bWJlcnMgc3RhcnRpbmcgZnJvbSBvbmUgYW5kCitpbnRlcmZhY2UgbnVtYmVycyBzdGFydGluZyBmcm9tIHplcm8pLiAgVGhlIEZ1bmN0aW9uRlMgY2hhbmdlcwordGhlbSBhcyBuZWVkZWQgYWxzbyBoYW5kbGluZyBzaXR1YXRpb24gd2hlbiBudW1iZXJzIGRpZmZlciBpbgorZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zLgorCitXaGVuIGRlc2NyaXB0b3JzIGFuZCBzdHJpbmdzIGFyZSB3cml0dGVuICJlcCMiIGZpbGVzIGFwcGVhcgorKG9uZSBmb3IgZWFjaCBkZWNsYXJlZCBlbmRwb2ludCkgd2hpY2ggaGFuZGxlIGNvbW11bmljYXRpb24gb24KK2Egc2luZ2xlIGVuZHBvaW50LiAgQWdhaW4sIEZ1bmN0aW9uRlMgdGFrZXMgY2FyZSBvZiB0aGUgcmVhbAorbnVtYmVycyBhbmQgY2hhbmdpbmcgb2YgdGhlIGNvbmZpZ3VyYXRpb24gKHdoaWNoIG1lYW5zIHRoYXQKKyJlcDEiIGZpbGUgbWF5IGJlIHJlYWxseSBtYXBwZWQgdG8gKHNheSkgZW5kcG9pbnQgMyAoYW5kIHdoZW4KK2NvbmZpZ3VyYXRpb24gY2hhbmdlcyB0byAoc2F5KSBlbmRwb2ludCAyKSkuICAiZXAwIiBpcyB1c2VkCitmb3IgcmVjZWl2aW5nIGV2ZW50cyBhbmQgaGFuZGxpbmcgc2V0dXAgcmVxdWVzdHMuCisKK1doZW4gYWxsIGZpbGVzIGFyZSBjbG9zZWQgdGhlIGZ1bmN0aW9uIGRpc2FibGVzIGl0c2VsZi4KKworV2hhdCBJIGFsc28gd2FudCB0byBtZW50aW9uIGlzIHRoYXQgdGhlIEZ1bmN0aW9uRlMgaXMgZGVzaWduZWQgaW4gc3VjaAorYSB3YXkgdGhhdCBpdCBpcyBwb3NzaWJsZSB0byBtb3VudCBpdCBzZXZlcmFsIHRpbWVzIHNvIGluIHRoZSBlbmQKK2EgZ2FkZ2V0IGNvdWxkIHVzZSBzZXZlcmFsIEZ1bmN0aW9uRlMgZnVuY3Rpb25zLiBUaGUgaWRlYSBpcyB0aGF0CitlYWNoIEZ1bmN0aW9uRlMgaW5zdGFuY2UgaXMgaWRlbnRpZmllZCBieSB0aGUgZGV2aWNlIG5hbWUgdXNlZAord2hlbiBtb3VudGluZy4KKworT25lIGNhbiBpbWFnaW5lIGEgZ2FkZ2V0IHRoYXQgaGFzIGFuIEV0aGVybmV0LCBNVFAgYW5kIEhJRCBpbnRlcmZhY2VzCit3aGVyZSB0aGUgbGFzdCB0d28gYXJlIGltcGxlbWVudGVkIHZpYSBGdW5jdGlvbkZTLiAgT24gdXNlciBzcGFjZQorbGV2ZWwgaXQgd291bGQgbG9vayBsaWtlIHRoaXM6CisKKyQgaW5zbW9kIGdfZmZzLmtvIGlkVmVuZG9yPTxJRD4gaVNlcmlhbE51bWJlcj08c3RyaW5nPiBmdW5jdGlvbnM9bXRwLGhpZAorJCBta2RpciAvZGV2L2Zmcy1tdHAgJiYgbW91bnQgLXQgZnVuY3Rpb25mcyBtdHAgL2Rldi9mZnMtbXRwCiskICggY2QgL2Rldi9mZnMtbXRwICYmIG10cC1kYWVtb24gKSAmCiskIG1rZGlyIC9kZXYvZmZzLWhpZCAmJiBtb3VudCAtdCBmdW5jdGlvbmZzIGhpZCAvZGV2L2Zmcy1oaWQKKyQgKCBjZCAvZGV2L2Zmcy1oaWQgJiYgaGlkLWRhZW1vbiApICYKKworT24ga2VybmVsIGxldmVsIHRoZSBnYWRnZXQgY2hlY2tzIGZmc19kYXRhLT5kZXZfbmFtZSB0byBpZGVudGlmeQord2hldGhlciBpdCdzIEZ1bmN0aW9uRlMgZGVzaWduZWQgZm9yIE1UUCAoIm10cCIpIG9yIEhJRCAoImhpZCIpLgorCitJZiBubyAiZnVuY3Rpb25zIiBtb2R1bGUgcGFyYW1ldGVycyBpcyBzdXBwbGllZCwgdGhlIGRyaXZlciBhY2NlcHRzCitqdXN0IG9uZSBmdW5jdGlvbiB3aXRoIGFueSBuYW1lLgorCitXaGVuICJmdW5jdGlvbnMiIG1vZHVsZSBwYXJhbWV0ZXIgaXMgc3VwcGxpZWQsIG9ubHkgZnVuY3Rpb25zCit3aXRoIGxpc3RlZCBuYW1lcyBhcmUgYWNjZXB0ZWQuIEluIHBhcnRpY3VsYXIsIGlmIHRoZSAiZnVuY3Rpb25zIgorcGFyYW1ldGVyJ3MgdmFsdWUgaXMganVzdCBhIG9uZS1lbGVtZW50IGxpc3QsIHRoZW4gdGhlIGJlaGF2aW91cgoraXMgc2ltaWxhciB0byB3aGVuIHRoZXJlIGlzIG5vICJmdW5jdGlvbnMiIGF0IGFsbDsgaG93ZXZlciwKK29ubHkgYSBmdW5jdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBpcyBhY2NlcHRlZC4KKworVGhlIGdhZGdldCBpcyByZWdpc3RlcmVkIG9ubHkgYWZ0ZXIgYWxsIHRoZSBkZWNsYXJlZCBmdW5jdGlvbgorZmlsZXN5c3RlbXMgaGF2ZSBiZWVuIG1vdW50ZWQgYW5kIFVTQiBkZXNjcmlwdG9ycyBvZiBhbGwgZnVuY3Rpb25zCitoYXZlIGJlZW4gd3JpdHRlbiB0byB0aGVpciBlcDAncy4KKworQ29udmVyc2VseSwgdGhlIGdhZGdldCBpcyB1bnJlZ2lzdGVyZWQgYWZ0ZXIgdGhlIGZpcnN0IFVTQiBmdW5jdGlvbgorY2xvc2VzIGl0cyBlbmRwb2ludHMuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNiL2dhZGdldC10ZXN0aW5nLnR4dCBiL0RvY3VtZW50YXRpb24vdXNiL2dhZGdldC10ZXN0aW5nLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjRkM2VmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi91c2IvZ2FkZ2V0LXRlc3RpbmcudHh0CkBAIC0wLDAgKzEsNzcwIEBACitUaGlzIGZpbGUgc3VtbWFyaXplcyBpbmZvcm1hdGlvbiBvbiBiYXNpYyB0ZXN0aW5nIG9mIFVTQiBmdW5jdGlvbnMKK3Byb3ZpZGVkIGJ5IGdhZGdldHMuCisKKzEuIEFDTSBmdW5jdGlvbgorMi4gRUNNIGZ1bmN0aW9uCiszLiBFQ00gc3Vic2V0IGZ1bmN0aW9uCis0LiBFRU0gZnVuY3Rpb24KKzUuIEZGUyBmdW5jdGlvbgorNi4gSElEIGZ1bmN0aW9uCis3LiBMT09QQkFDSyBmdW5jdGlvbgorOC4gTUFTUyBTVE9SQUdFIGZ1bmN0aW9uCis5LiBNSURJIGZ1bmN0aW9uCisxMC4gTkNNIGZ1bmN0aW9uCisxMS4gT0JFWCBmdW5jdGlvbgorMTIuIFBIT05FVCBmdW5jdGlvbgorMTMuIFJORElTIGZ1bmN0aW9uCisxNC4gU0VSSUFMIGZ1bmN0aW9uCisxNS4gU09VUkNFU0lOSyBmdW5jdGlvbgorMTYuIFVBQzEgZnVuY3Rpb24KKzE3LiBVQUMyIGZ1bmN0aW9uCisxOC4gVVZDIGZ1bmN0aW9uCisxOS4gUFJJTlRFUiBmdW5jdGlvbgorCisKKzEuIEFDTSBmdW5jdGlvbgorPT09PT09PT09PT09PT09CisKK1RoZSBmdW5jdGlvbiBpcyBwcm92aWRlZCBieSB1c2JfZl9hY20ua28gbW9kdWxlLgorCitGdW5jdGlvbi1zcGVjaWZpYyBjb25maWdmcyBpbnRlcmZhY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZnVuY3Rpb24gbmFtZSB0byB1c2Ugd2hlbiBjcmVhdGluZyB0aGUgZnVuY3Rpb24gZGlyZWN0b3J5IGlzICJhY20iLgorVGhlIEFDTSBmdW5jdGlvbiBwcm92aWRlcyBqdXN0IG9uZSBhdHRyaWJ1dGUgaW4gaXRzIGZ1bmN0aW9uIGRpcmVjdG9yeToKKworCXBvcnRfbnVtCisKK1RoZSBhdHRyaWJ1dGUgaXMgcmVhZC1vbmx5LgorCitUaGVyZSBjYW4gYmUgYXQgbW9zdCA0IEFDTS9nZW5lcmljIHNlcmlhbC9PQkVYIHBvcnRzIGluIHRoZSBzeXN0ZW0uCisKKworVGVzdGluZyB0aGUgQUNNIGZ1bmN0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT24gdGhlIGhvc3Q6IGNhdCA+IC9kZXYvdHR5QUNNPFg+CitPbiB0aGUgZGV2aWNlIDogY2F0IC9kZXYvdHR5R1M8WT4KKwordGhlbiB0aGUgb3RoZXIgd2F5IHJvdW5kCisKK09uIHRoZSBkZXZpY2U6IGNhdCA+IC9kZXYvdHR5R1M8WT4KK09uIHRoZSBob3N0OiBjYXQgL2Rldi90dHlBQ008WD4KKworMi4gRUNNIGZ1bmN0aW9uCis9PT09PT09PT09PT09PT0KKworVGhlIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGJ5IHVzYl9mX2VjbS5rbyBtb2R1bGUuCisKK0Z1bmN0aW9uLXNwZWNpZmljIGNvbmZpZ2ZzIGludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBmdW5jdGlvbiBuYW1lIHRvIHVzZSB3aGVuIGNyZWF0aW5nIHRoZSBmdW5jdGlvbiBkaXJlY3RvcnkgaXMgImVjbSIuCitUaGUgRUNNIGZ1bmN0aW9uIHByb3ZpZGVzIHRoZXNlIGF0dHJpYnV0ZXMgaW4gaXRzIGZ1bmN0aW9uIGRpcmVjdG9yeToKKworCWlmbmFtZQkJLSBuZXR3b3JrIGRldmljZSBpbnRlcmZhY2UgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhpcworCQkJZnVuY3Rpb24gaW5zdGFuY2UKKwlxbXVsdAkJLSBxdWV1ZSBsZW5ndGggbXVsdGlwbGllciBmb3IgaGlnaCBhbmQgc3VwZXIgc3BlZWQKKwlob3N0X2FkZHIJLSBNQUMgYWRkcmVzcyBvZiBob3N0J3MgZW5kIG9mIHRoaXMKKwkJCUV0aGVybmV0IG92ZXIgVVNCIGxpbmsKKwlkZXZfYWRkcgktIE1BQyBhZGRyZXNzIG9mIGRldmljZSdzIGVuZCBvZiB0aGlzCisJCQlFdGhlcm5ldCBvdmVyIFVTQiBsaW5rCisKK2FuZCBhZnRlciBjcmVhdGluZyB0aGUgZnVuY3Rpb25zL2VjbS48aW5zdGFuY2UgbmFtZT4gdGhleSBjb250YWluIGRlZmF1bHQKK3ZhbHVlczogcW11bHQgaXMgNSwgZGV2X2FkZHIgYW5kIGhvc3RfYWRkciBhcmUgcmFuZG9tbHkgc2VsZWN0ZWQuCitFeGNlcHQgZm9yIGlmbmFtZSB0aGV5IGNhbiBiZSB3cml0dGVuIHRvIHVudGlsIHRoZSBmdW5jdGlvbiBpcyBsaW5rZWQgdG8gYQorY29uZmlndXJhdGlvbi4gVGhlIGlmbmFtZSBpcyByZWFkLW9ubHkgYW5kIGNvbnRhaW5zIHRoZSBuYW1lIG9mIHRoZSBpbnRlcmZhY2UKK3doaWNoIHdhcyBhc3NpZ25lZCBieSB0aGUgbmV0IGNvcmUsIGUuIGcuIHVzYjAuCisKK1Rlc3RpbmcgdGhlIEVDTSBmdW5jdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvbmZpZ3VyZSBJUCBhZGRyZXNzZXMgb2YgdGhlIGRldmljZSBhbmQgdGhlIGhvc3QuIFRoZW46CisKK09uIHRoZSBkZXZpY2U6IHBpbmcgPGhvc3QncyBJUD4KK09uIHRoZSBob3N0OiBwaW5nIDxkZXZpY2UncyBJUD4KKworMy4gRUNNIHN1YnNldCBmdW5jdGlvbgorPT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZnVuY3Rpb24gaXMgcHJvdmlkZWQgYnkgdXNiX2ZfZWNtX3N1YnNldC5rbyBtb2R1bGUuCisKK0Z1bmN0aW9uLXNwZWNpZmljIGNvbmZpZ2ZzIGludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBmdW5jdGlvbiBuYW1lIHRvIHVzZSB3aGVuIGNyZWF0aW5nIHRoZSBmdW5jdGlvbiBkaXJlY3RvcnkgaXMgImdldGgiLgorVGhlIEVDTSBzdWJzZXQgZnVuY3Rpb24gcHJvdmlkZXMgdGhlc2UgYXR0cmlidXRlcyBpbiBpdHMgZnVuY3Rpb24gZGlyZWN0b3J5OgorCisJaWZuYW1lCQktIG5ldHdvcmsgZGV2aWNlIGludGVyZmFjZSBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGlzCisJCQlmdW5jdGlvbiBpbnN0YW5jZQorCXFtdWx0CQktIHF1ZXVlIGxlbmd0aCBtdWx0aXBsaWVyIGZvciBoaWdoIGFuZCBzdXBlciBzcGVlZAorCWhvc3RfYWRkcgktIE1BQyBhZGRyZXNzIG9mIGhvc3QncyBlbmQgb2YgdGhpcworCQkJRXRoZXJuZXQgb3ZlciBVU0IgbGluaworCWRldl9hZGRyCS0gTUFDIGFkZHJlc3Mgb2YgZGV2aWNlJ3MgZW5kIG9mIHRoaXMKKwkJCUV0aGVybmV0IG92ZXIgVVNCIGxpbmsKKworYW5kIGFmdGVyIGNyZWF0aW5nIHRoZSBmdW5jdGlvbnMvZWNtLjxpbnN0YW5jZSBuYW1lPiB0aGV5IGNvbnRhaW4gZGVmYXVsdAordmFsdWVzOiBxbXVsdCBpcyA1LCBkZXZfYWRkciBhbmQgaG9zdF9hZGRyIGFyZSByYW5kb21seSBzZWxlY3RlZC4KK0V4Y2VwdCBmb3IgaWZuYW1lIHRoZXkgY2FuIGJlIHdyaXR0ZW4gdG8gdW50aWwgdGhlIGZ1bmN0aW9uIGlzIGxpbmtlZCB0byBhCitjb25maWd1cmF0aW9uLiBUaGUgaWZuYW1lIGlzIHJlYWQtb25seSBhbmQgY29udGFpbnMgdGhlIG5hbWUgb2YgdGhlIGludGVyZmFjZQord2hpY2ggd2FzIGFzc2lnbmVkIGJ5IHRoZSBuZXQgY29yZSwgZS4gZy4gdXNiMC4KKworVGVzdGluZyB0aGUgRUNNIHN1YnNldCBmdW5jdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb25maWd1cmUgSVAgYWRkcmVzc2VzIG9mIHRoZSBkZXZpY2UgYW5kIHRoZSBob3N0LiBUaGVuOgorCitPbiB0aGUgZGV2aWNlOiBwaW5nIDxob3N0J3MgSVA+CitPbiB0aGUgaG9zdDogcGluZyA8ZGV2aWNlJ3MgSVA+CisKKzQuIEVFTSBmdW5jdGlvbgorPT09PT09PT09PT09PT09CisKK1RoZSBmdW5jdGlvbiBpcyBwcm92aWRlZCBieSB1c2JfZl9lZW0ua28gbW9kdWxlLgorCitGdW5jdGlvbi1zcGVjaWZpYyBjb25maWdmcyBpbnRlcmZhY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZnVuY3Rpb24gbmFtZSB0byB1c2Ugd2hlbiBjcmVhdGluZyB0aGUgZnVuY3Rpb24gZGlyZWN0b3J5IGlzICJlZW0iLgorVGhlIEVFTSBmdW5jdGlvbiBwcm92aWRlcyB0aGVzZSBhdHRyaWJ1dGVzIGluIGl0cyBmdW5jdGlvbiBkaXJlY3Rvcnk6CisKKwlpZm5hbWUJCS0gbmV0d29yayBkZXZpY2UgaW50ZXJmYWNlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMKKwkJCWZ1bmN0aW9uIGluc3RhbmNlCisJcW11bHQJCS0gcXVldWUgbGVuZ3RoIG11bHRpcGxpZXIgZm9yIGhpZ2ggYW5kIHN1cGVyIHNwZWVkCisJaG9zdF9hZGRyCS0gTUFDIGFkZHJlc3Mgb2YgaG9zdCdzIGVuZCBvZiB0aGlzCisJCQlFdGhlcm5ldCBvdmVyIFVTQiBsaW5rCisJZGV2X2FkZHIJLSBNQUMgYWRkcmVzcyBvZiBkZXZpY2UncyBlbmQgb2YgdGhpcworCQkJRXRoZXJuZXQgb3ZlciBVU0IgbGluaworCithbmQgYWZ0ZXIgY3JlYXRpbmcgdGhlIGZ1bmN0aW9ucy9lZW0uPGluc3RhbmNlIG5hbWU+IHRoZXkgY29udGFpbiBkZWZhdWx0Cit2YWx1ZXM6IHFtdWx0IGlzIDUsIGRldl9hZGRyIGFuZCBob3N0X2FkZHIgYXJlIHJhbmRvbWx5IHNlbGVjdGVkLgorRXhjZXB0IGZvciBpZm5hbWUgdGhleSBjYW4gYmUgd3JpdHRlbiB0byB1bnRpbCB0aGUgZnVuY3Rpb24gaXMgbGlua2VkIHRvIGEKK2NvbmZpZ3VyYXRpb24uIFRoZSBpZm5hbWUgaXMgcmVhZC1vbmx5IGFuZCBjb250YWlucyB0aGUgbmFtZSBvZiB0aGUgaW50ZXJmYWNlCit3aGljaCB3YXMgYXNzaWduZWQgYnkgdGhlIG5ldCBjb3JlLCBlLiBnLiB1c2IwLgorCitUZXN0aW5nIHRoZSBFRU0gZnVuY3Rpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDb25maWd1cmUgSVAgYWRkcmVzc2VzIG9mIHRoZSBkZXZpY2UgYW5kIHRoZSBob3N0LiBUaGVuOgorCitPbiB0aGUgZGV2aWNlOiBwaW5nIDxob3N0J3MgSVA+CitPbiB0aGUgaG9zdDogcGluZyA8ZGV2aWNlJ3MgSVA+CisKKzUuIEZGUyBmdW5jdGlvbgorPT09PT09PT09PT09PT09CisKK1RoZSBmdW5jdGlvbiBpcyBwcm92aWRlZCBieSB1c2JfZl9mcy5rbyBtb2R1bGUuCisKK0Z1bmN0aW9uLXNwZWNpZmljIGNvbmZpZ2ZzIGludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBmdW5jdGlvbiBuYW1lIHRvIHVzZSB3aGVuIGNyZWF0aW5nIHRoZSBmdW5jdGlvbiBkaXJlY3RvcnkgaXMgImZmcyIuCitUaGUgZnVuY3Rpb24gZGlyZWN0b3J5IGlzIGludGVudGlvbmFsbHkgZW1wdHkgYW5kIG5vdCBtb2RpZmlhYmxlLgorCitBZnRlciBjcmVhdGluZyB0aGUgZGlyZWN0b3J5IHRoZXJlIGlzIGEgbmV3IGluc3RhbmNlIChhICJkZXZpY2UiKSBvZiBGdW5jdGlvbkZTCithdmFpbGFibGUgaW4gdGhlIHN5c3RlbS4gT25jZSBhICJkZXZpY2UiIGlzIGF2YWlsYWJsZSwgdGhlIHVzZXIgc2hvdWxkIGZvbGxvdwordGhlIHN0YW5kYXJkIHByb2NlZHVyZSBmb3IgdXNpbmcgRnVuY3Rpb25GUyAobW91bnQgaXQsIHJ1biB0aGUgdXNlcnNwYWNlCitwcm9jZXNzIHdoaWNoIGltcGxlbWVudHMgdGhlIGZ1bmN0aW9uIHByb3BlcikuIFRoZSBnYWRnZXQgc2hvdWxkIGJlIGVuYWJsZWQKK2J5IHdyaXRpbmcgYSBzdWl0YWJsZSBzdHJpbmcgdG8gdXNiX2dhZGdldC88Z2FkZ2V0Pi9VREMuCisKK1Rlc3RpbmcgdGhlIEZGUyBmdW5jdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK09uIHRoZSBkZXZpY2U6IHN0YXJ0IHRoZSBmdW5jdGlvbidzIHVzZXJzcGFjZSBkYWVtb24sIGVuYWJsZSB0aGUgZ2FkZ2V0CitPbiB0aGUgaG9zdDogdXNlIHRoZSBVU0IgZnVuY3Rpb24gcHJvdmlkZWQgYnkgdGhlIGRldmljZQorCis2LiBISUQgZnVuY3Rpb24KKz09PT09PT09PT09PT09PQorCitUaGUgZnVuY3Rpb24gaXMgcHJvdmlkZWQgYnkgdXNiX2ZfaGlkLmtvIG1vZHVsZS4KKworRnVuY3Rpb24tc3BlY2lmaWMgY29uZmlnZnMgaW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZ1bmN0aW9uIG5hbWUgdG8gdXNlIHdoZW4gY3JlYXRpbmcgdGhlIGZ1bmN0aW9uIGRpcmVjdG9yeSBpcyAiaGlkIi4KK1RoZSBISUQgZnVuY3Rpb24gcHJvdmlkZXMgdGhlc2UgYXR0cmlidXRlcyBpbiBpdHMgZnVuY3Rpb24gZGlyZWN0b3J5OgorCisJcHJvdG9jb2wJLSBISUQgcHJvdG9jb2wgdG8gdXNlCisJcmVwb3J0X2Rlc2MJLSBkYXRhIHRvIGJlIHVzZWQgaW4gSElEIHJlcG9ydHMsIGV4Y2VwdCBkYXRhCisJCQlwYXNzZWQgd2l0aCAvZGV2L2hpZGc8WD4KKwlyZXBvcnRfbGVuZ3RoCS0gSElEIHJlcG9ydCBsZW5ndGgKKwlzdWJjbGFzcwktIEhJRCBzdWJjbGFzcyB0byB1c2UKKworRm9yIGEga2V5Ym9hcmQgdGhlIHByb3RvY29sIGFuZCB0aGUgc3ViY2xhc3MgYXJlIDEsIHRoZSByZXBvcnRfbGVuZ3RoIGlzIDgsCit3aGlsZSB0aGUgcmVwb3J0X2Rlc2MgaXM6CisKKyQgaGQgbXlfcmVwb3J0X2Rlc2MKKzAwMDAwMDAwICAwNSAwMSAwOSAwNiBhMSAwMSAwNSAwNyAgMTkgZTAgMjkgZTcgMTUgMDAgMjUgMDEgIHwuLi4uLi4uLi4uKS4uLiUufAorMDAwMDAwMTAgIDc1IDAxIDk1IDA4IDgxIDAyIDk1IDAxICA3NSAwOCA4MSAwMyA5NSAwNSA3NSAwMSAgfHUuLi4uLi4udS4uLi4udS58CiswMDAwMDAyMCAgMDUgMDggMTkgMDEgMjkgMDUgOTEgMDIgIDk1IDAxIDc1IDAzIDkxIDAzIDk1IDA2ICB8Li4uLikuLi4uLnUuLi4uLnwKKzAwMDAwMDMwICA3NSAwOCAxNSAwMCAyNSA2NSAwNSAwNyAgMTkgMDAgMjkgNjUgODEgMDAgYzAgICAgIHx1Li4uJWUuLi4uKWUuLi58CiswMDAwMDAzZgorCitTdWNoIGEgc2VxdWVuY2Ugb2YgYnl0ZXMgY2FuIGJlIHN0b3JlZCB0byB0aGUgYXR0cmlidXRlIHdpdGggZWNobzoKKworJCBlY2hvIC1uZSBcXHgwNVxceDAxXFx4MDlcXHgwNlxceGExLi4uLi4KKworVGVzdGluZyB0aGUgSElEIGZ1bmN0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRGV2aWNlOgorLSBjcmVhdGUgdGhlIGdhZGdldAorLSBjb25uZWN0IHRoZSBnYWRnZXQgdG8gYSBob3N0LCBwcmVmZXJhYmx5IG5vdCB0aGUgb25lIHVzZWQKK3RvIGNvbnRyb2wgdGhlIGdhZGdldAorLSBydW4gYSBwcm9ncmFtIHdoaWNoIHdyaXRlcyB0byAvZGV2L2hpZGc8Tj4sIGUuZy4KK2EgdXNlcnNwYWNlIHByb2dyYW0gZm91bmQgaW4gRG9jdW1lbnRhdGlvbi91c2IvZ2FkZ2V0X2hpZC50eHQ6CisKKyQgLi9oaWRfZ2FkZ2V0X3Rlc3QgL2Rldi9oaWRnMCBrZXlib2FyZAorCitIb3N0OgorLSBvYnNlcnZlIHRoZSBrZXlzdHJva2VzIGZyb20gdGhlIGdhZGdldAorCis3LiBMT09QQkFDSyBmdW5jdGlvbgorPT09PT09PT09PT09PT09PT09PT0KKworVGhlIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGJ5IHVzYl9mX3NzX2xiLmtvIG1vZHVsZS4KKworRnVuY3Rpb24tc3BlY2lmaWMgY29uZmlnZnMgaW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZ1bmN0aW9uIG5hbWUgdG8gdXNlIHdoZW4gY3JlYXRpbmcgdGhlIGZ1bmN0aW9uIGRpcmVjdG9yeSBpcyAiTG9vcGJhY2siLgorVGhlIExPT1BCQUNLIGZ1bmN0aW9uIHByb3ZpZGVzIHRoZXNlIGF0dHJpYnV0ZXMgaW4gaXRzIGZ1bmN0aW9uIGRpcmVjdG9yeToKKworCXFsZW4JCS0gZGVwdGggb2YgbG9vcGJhY2sgcXVldWUKKwlidWxrX2J1ZmxlbgktIGJ1ZmZlciBsZW5ndGgKKworVGVzdGluZyB0aGUgTE9PUEJBQ0sgZnVuY3Rpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2RldmljZTogcnVuIHRoZSBnYWRnZXQKK2hvc3Q6IHRlc3QtdXNiICh0b29scy91c2IvdGVzdHVzYi5jKQorCis4LiBNQVNTIFNUT1JBR0UgZnVuY3Rpb24KKz09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZnVuY3Rpb24gaXMgcHJvdmlkZWQgYnkgdXNiX2ZfbWFzc19zdG9yYWdlLmtvIG1vZHVsZS4KKworRnVuY3Rpb24tc3BlY2lmaWMgY29uZmlnZnMgaW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZ1bmN0aW9uIG5hbWUgdG8gdXNlIHdoZW4gY3JlYXRpbmcgdGhlIGZ1bmN0aW9uIGRpcmVjdG9yeSBpcyAibWFzc19zdG9yYWdlIi4KK1RoZSBNQVNTIFNUT1JBR0UgZnVuY3Rpb24gcHJvdmlkZXMgdGhlc2UgYXR0cmlidXRlcyBpbiBpdHMgZGlyZWN0b3J5OgorZmlsZXM6CisKKwlzdGFsbAkJLSBTZXQgdG8gcGVybWl0IGZ1bmN0aW9uIHRvIGhhbHQgYnVsayBlbmRwb2ludHMuCisJCQlEaXNhYmxlZCBvbiBzb21lIFVTQiBkZXZpY2VzIGtub3duIG5vdCB0byB3b3JrCisJCQljb3JyZWN0bHkuIFlvdSBzaG91bGQgc2V0IGl0IHRvIHRydWUuCisJbnVtX2J1ZmZlcnMJLSBOdW1iZXIgb2YgcGlwZWxpbmUgYnVmZmVycy4gVmFsaWQgbnVtYmVycworCQkJYXJlIDIuLjQuIEF2YWlsYWJsZSBvbmx5IGlmCisJCQlDT05GSUdfVVNCX0dBREdFVF9ERUJVR19GSUxFUyBpcyBzZXQuCisKK2FuZCBhIGRlZmF1bHQgbHVuLjAgZGlyZWN0b3J5IGNvcnJlc3BvbmRpbmcgdG8gU0NTSSBMVU4gIzAuCisKK0EgbmV3IGx1biBjYW4gYmUgYWRkZWQgd2l0aCBta2RpcjoKKworJCBta2RpciBmdW5jdGlvbnMvbWFzc19zdG9yYWdlLjAvcGFydGl0aW9uLjUKKworTHVuIG51bWJlcmluZyBkb2VzIG5vdCBoYXZlIHRvIGJlIGNvbnRpbnVvdXMsIGV4Y2VwdCBmb3IgbHVuICMwIHdoaWNoIGlzCitjcmVhdGVkIGJ5IGRlZmF1bHQuIEEgbWF4aW11bSBvZiA4IGx1bnMgY2FuIGJlIHNwZWNpZmllZCBhbmQgdGhleSBhbGwgbXVzdCBiZQorbmFtZWQgZm9sbG93aW5nIHRoZSA8bmFtZT4uPG51bWJlcj4gc2NoZW1lLiBUaGUgbnVtYmVycyBjYW4gYmUgMC4uOC4KK1Byb2JhYmx5IGEgZ29vZCBjb252ZW50aW9uIGlzIHRvIG5hbWUgdGhlIGx1bnMgImx1bi48bnVtYmVyPiIsCithbHRob3VnaCBpdCBpcyBub3QgbWFuZGF0b3J5LgorCitJbiBlYWNoIGx1biBkaXJlY3RvcnkgdGhlcmUgYXJlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlIGZpbGVzOgorCisJZmlsZQkJLSBUaGUgcGF0aCB0byB0aGUgYmFja2luZyBmaWxlIGZvciB0aGUgTFVOLgorCQkJUmVxdWlyZWQgaWYgTFVOIGlzIG5vdCBtYXJrZWQgYXMgcmVtb3ZhYmxlLgorCXJvCQktIEZsYWcgc3BlY2lmeWluZyBhY2Nlc3MgdG8gdGhlIExVTiBzaGFsbCBiZQorCQkJcmVhZC1vbmx5LiBUaGlzIGlzIGltcGxpZWQgaWYgQ0QtUk9NIGVtdWxhdGlvbgorCQkJaXMgZW5hYmxlZCBhcyB3ZWxsIGFzIHdoZW4gaXQgd2FzIGltcG9zc2libGUKKwkJCXRvIG9wZW4gImZpbGVuYW1lIiBpbiBSL1cgbW9kZS4KKwlyZW1vdmFibGUJLSBGbGFnIHNwZWNpZnlpbmcgdGhhdCBMVU4gc2hhbGwgYmUgaW5kaWNhdGVkIGFzCisJCQliZWluZyByZW1vdmFibGUuCisJY2Ryb20JCS0gRmxhZyBzcGVjaWZ5aW5nIHRoYXQgTFVOIHNoYWxsIGJlIHJlcG9ydGVkIGFzCisJCQliZWluZyBhIENELVJPTS4KKwlub2Z1YQkJLSBGbGFnIHNwZWNpZnlpbmcgdGhhdCBGVUEgZmxhZworCQkJaW4gU0NTSSBXUklURSgxMCwxMikKKworVGVzdGluZyB0aGUgTUFTUyBTVE9SQUdFIGZ1bmN0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZGV2aWNlOiBjb25uZWN0IHRoZSBnYWRnZXQsIGVuYWJsZSBpdAoraG9zdDogZG1lc2csIHNlZSB0aGUgVVNCIGRyaXZlcyBhcHBlYXIgKGlmIHN5c3RlbSBjb25maWd1cmVkIHRvIGF1dG9tYXRpY2FsbHkKK21vdW50KQorCis5LiBNSURJIGZ1bmN0aW9uCis9PT09PT09PT09PT09PT09CisKK1RoZSBmdW5jdGlvbiBpcyBwcm92aWRlZCBieSB1c2JfZl9taWRpLmtvIG1vZHVsZS4KKworRnVuY3Rpb24tc3BlY2lmaWMgY29uZmlnZnMgaW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZ1bmN0aW9uIG5hbWUgdG8gdXNlIHdoZW4gY3JlYXRpbmcgdGhlIGZ1bmN0aW9uIGRpcmVjdG9yeSBpcyAibWlkaSIuCitUaGUgTUlESSBmdW5jdGlvbiBwcm92aWRlcyB0aGVzZSBhdHRyaWJ1dGVzIGluIGl0cyBmdW5jdGlvbiBkaXJlY3Rvcnk6CisKKwlidWZsZW4JCS0gTUlESSBidWZmZXIgbGVuZ3RoCisJaWQJCS0gSUQgc3RyaW5nIGZvciB0aGUgVVNCIE1JREkgYWRhcHRlcgorCWluX3BvcnRzCS0gbnVtYmVyIG9mIE1JREkgaW5wdXQgcG9ydHMKKwlpbmRleAkJLSBpbmRleCB2YWx1ZSBmb3IgdGhlIFVTQiBNSURJIGFkYXB0ZXIKKwlvdXRfcG9ydHMJLSBudW1iZXIgb2YgTUlESSBvdXRwdXQgcG9ydHMKKwlxbGVuCQktIFVTQiByZWFkIHJlcXVlc3QgcXVldWUgbGVuZ3RoCisKK1Rlc3RpbmcgdGhlIE1JREkgZnVuY3Rpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgYXJlIHR3byBjYXNlczogcGxheWluZyBhIG1pZCBmcm9tIHRoZSBnYWRnZXQgdG8KK3RoZSBob3N0IGFuZCBwbGF5aW5nIGEgbWlkIGZyb20gdGhlIGhvc3QgdG8gdGhlIGdhZGdldC4KKworMSkgUGxheWluZyBhIG1pZCBmcm9tIHRoZSBnYWRnZXQgdG8gdGhlIGhvc3QKK2hvc3QpCisKKyQgYXJlY29yZG1pZGkgLWwKKyBQb3J0ICAgIENsaWVudCBuYW1lICAgICAgICAgICAgICAgICAgICAgIFBvcnQgbmFtZQorIDE0OjAgICAgTWlkaSBUaHJvdWdoICAgICAgICAgICAgICAgICAgICAgTWlkaSBUaHJvdWdoIFBvcnQtMAorIDI0OjAgICAgTUlESSBHYWRnZXQgICAgICAgICAgICAgICAgICAgICAgTUlESSBHYWRnZXQgTUlESSAxCiskIGFyZWNvcmRtaWRpIC1wIDI0OjAgZnJvbV9nYWRnZXQubWlkCisKK2dhZGdldCkKKworJCBhcGxheW1pZGkgLWwKKyBQb3J0ICAgIENsaWVudCBuYW1lICAgICAgICAgICAgICAgICAgICAgIFBvcnQgbmFtZQorIDIwOjAgICAgZl9taWRpICAgICAgICAgICAgICAgICAgICAgICAgICAgZl9taWRpCisKKyQgYXBsYXltaWRpIC1wIDIwOjAgdG9faG9zdC5taWQKKworMikgUGxheWluZyBhIG1pZCBmcm9tIHRoZSBob3N0IHRvIHRoZSBnYWRnZXQKK2dhZGdldCkKKworJCBhcmVjb3JkbWlkaSAtbAorIFBvcnQgICAgQ2xpZW50IG5hbWUgICAgICAgICAgICAgICAgICAgICAgUG9ydCBuYW1lCisgMjA6MCAgICBmX21pZGkgICAgICAgICAgICAgICAgICAgICAgICAgICBmX21pZGkKKworJCBhcmVjb3JkbWlkaSAtcCAyMDowIGZyb21faG9zdC5taWQKKworaG9zdCkKKworJCBhcGxheW1pZGkgLWwKKyBQb3J0ICAgIENsaWVudCBuYW1lICAgICAgICAgICAgICAgICAgICAgIFBvcnQgbmFtZQorIDE0OjAgICAgTWlkaSBUaHJvdWdoICAgICAgICAgICAgICAgICAgICAgTWlkaSBUaHJvdWdoIFBvcnQtMAorIDI0OjAgICAgTUlESSBHYWRnZXQgICAgICAgICAgICAgICAgICAgICAgTUlESSBHYWRnZXQgTUlESSAxCisKKyQgYXBsYXltaWRpIC1wMjQ6MCB0b19nYWRnZXQubWlkCisKK1RoZSBmcm9tX2dhZGdldC5taWQgc2hvdWxkIHNvdW5kIGlkZW50aWNhbCB0byB0aGUgdG9faG9zdC5taWQuCitUaGUgZnJvbV9ob3N0LmlkIHNob3VsZCBzb3VuZCBpZGVudGljYWwgdG8gdGhlIHRvX2dhZGdldC5taWQuCisKK01JREkgZmlsZXMgY2FuIGJlIHBsYXllZCB0byBzcGVha2Vycy9oZWFkcGhvbmVzIHdpdGggZS5nLiB0aW1pZGl0eSBpbnN0YWxsZWQKKworJCBhcGxheW1pZGkgLWwKKyBQb3J0ICAgIENsaWVudCBuYW1lICAgICAgICAgICAgICAgICAgICAgIFBvcnQgbmFtZQorIDE0OjAgICAgTWlkaSBUaHJvdWdoICAgICAgICAgICAgICAgICAgICAgTWlkaSBUaHJvdWdoIFBvcnQtMAorIDI0OjAgICAgTUlESSBHYWRnZXQgICAgICAgICAgICAgICAgICAgICAgTUlESSBHYWRnZXQgTUlESSAxCisxMjg6MCAgICBUaU1pZGl0eSAgICAgICAgICAgICAgICAgICAgICAgICBUaU1pZGl0eSBwb3J0IDAKKzEyODoxICAgIFRpTWlkaXR5ICAgICAgICAgICAgICAgICAgICAgICAgIFRpTWlkaXR5IHBvcnQgMQorMTI4OjIgICAgVGlNaWRpdHkgICAgICAgICAgICAgICAgICAgICAgICAgVGlNaWRpdHkgcG9ydCAyCisxMjg6MyAgICBUaU1pZGl0eSAgICAgICAgICAgICAgICAgICAgICAgICBUaU1pZGl0eSBwb3J0IDMKKworJCBhcGxheW1pZGkgLXAgMTI4OjAgZmlsZS5taWQKKworTUlESSBwb3J0cyBjYW4gYmUgbG9naWNhbGx5IGNvbm5lY3RlZCB1c2luZyB0aGUgYWNvbm5lY3QgdXRpbGl0eSwgZS5nLjoKKworJCBhY29ubmVjdCAyNDowIDEyODowICMgdHJ5IGl0IG9uIHRoZSBob3N0CisKK0FmdGVyIHRoZSBnYWRnZXQncyBNSURJIHBvcnQgaXMgY29ubmVjdGVkIHRvIHRpbWlkaXR5J3MgTUlESSBwb3J0LAord2hhdGV2ZXIgaXMgcGxheWVkIGF0IHRoZSBnYWRnZXQgc2lkZSB3aXRoIGFwbGF5bWlkaSAtbCBpcyBhdWRpYmxlCitpbiBob3N0J3Mgc3BlYWtlcnMvaGVhZHBob25lcy4KKworMTAuIE5DTSBmdW5jdGlvbgorPT09PT09PT09PT09PT09PQorCitUaGUgZnVuY3Rpb24gaXMgcHJvdmlkZWQgYnkgdXNiX2ZfbmNtLmtvIG1vZHVsZS4KKworRnVuY3Rpb24tc3BlY2lmaWMgY29uZmlnZnMgaW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZ1bmN0aW9uIG5hbWUgdG8gdXNlIHdoZW4gY3JlYXRpbmcgdGhlIGZ1bmN0aW9uIGRpcmVjdG9yeSBpcyAibmNtIi4KK1RoZSBOQ00gZnVuY3Rpb24gcHJvdmlkZXMgdGhlc2UgYXR0cmlidXRlcyBpbiBpdHMgZnVuY3Rpb24gZGlyZWN0b3J5OgorCisJaWZuYW1lCQktIG5ldHdvcmsgZGV2aWNlIGludGVyZmFjZSBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGlzCisJCQlmdW5jdGlvbiBpbnN0YW5jZQorCXFtdWx0CQktIHF1ZXVlIGxlbmd0aCBtdWx0aXBsaWVyIGZvciBoaWdoIGFuZCBzdXBlciBzcGVlZAorCWhvc3RfYWRkcgktIE1BQyBhZGRyZXNzIG9mIGhvc3QncyBlbmQgb2YgdGhpcworCQkJRXRoZXJuZXQgb3ZlciBVU0IgbGluaworCWRldl9hZGRyCS0gTUFDIGFkZHJlc3Mgb2YgZGV2aWNlJ3MgZW5kIG9mIHRoaXMKKwkJCUV0aGVybmV0IG92ZXIgVVNCIGxpbmsKKworYW5kIGFmdGVyIGNyZWF0aW5nIHRoZSBmdW5jdGlvbnMvbmNtLjxpbnN0YW5jZSBuYW1lPiB0aGV5IGNvbnRhaW4gZGVmYXVsdAordmFsdWVzOiBxbXVsdCBpcyA1LCBkZXZfYWRkciBhbmQgaG9zdF9hZGRyIGFyZSByYW5kb21seSBzZWxlY3RlZC4KK0V4Y2VwdCBmb3IgaWZuYW1lIHRoZXkgY2FuIGJlIHdyaXR0ZW4gdG8gdW50aWwgdGhlIGZ1bmN0aW9uIGlzIGxpbmtlZCB0byBhCitjb25maWd1cmF0aW9uLiBUaGUgaWZuYW1lIGlzIHJlYWQtb25seSBhbmQgY29udGFpbnMgdGhlIG5hbWUgb2YgdGhlIGludGVyZmFjZQord2hpY2ggd2FzIGFzc2lnbmVkIGJ5IHRoZSBuZXQgY29yZSwgZS4gZy4gdXNiMC4KKworVGVzdGluZyB0aGUgTkNNIGZ1bmN0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29uZmlndXJlIElQIGFkZHJlc3NlcyBvZiB0aGUgZGV2aWNlIGFuZCB0aGUgaG9zdC4gVGhlbjoKKworT24gdGhlIGRldmljZTogcGluZyA8aG9zdCdzIElQPgorT24gdGhlIGhvc3Q6IHBpbmcgPGRldmljZSdzIElQPgorCisxMS4gT0JFWCBmdW5jdGlvbgorPT09PT09PT09PT09PT09PT0KKworVGhlIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGJ5IHVzYl9mX29iZXgua28gbW9kdWxlLgorCitGdW5jdGlvbi1zcGVjaWZpYyBjb25maWdmcyBpbnRlcmZhY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZnVuY3Rpb24gbmFtZSB0byB1c2Ugd2hlbiBjcmVhdGluZyB0aGUgZnVuY3Rpb24gZGlyZWN0b3J5IGlzICJvYmV4Ii4KK1RoZSBPQkVYIGZ1bmN0aW9uIHByb3ZpZGVzIGp1c3Qgb25lIGF0dHJpYnV0ZSBpbiBpdHMgZnVuY3Rpb24gZGlyZWN0b3J5OgorCisJcG9ydF9udW0KKworVGhlIGF0dHJpYnV0ZSBpcyByZWFkLW9ubHkuCisKK1RoZXJlIGNhbiBiZSBhdCBtb3N0IDQgQUNNL2dlbmVyaWMgc2VyaWFsL09CRVggcG9ydHMgaW4gdGhlIHN5c3RlbS4KKworVGVzdGluZyB0aGUgT0JFWCBmdW5jdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPbiBkZXZpY2U6IHNlcmlhbGQgLWYgL2Rldi90dHlHUzxZPiAtcyAxMDI0CitPbiBob3N0OiBzZXJpYWxjIC12IDx2ZW5kb3JJRD4gLXAgPHByb2R1Y3RJRD4gLWk8aW50ZXJmYWNlIz4gLWExIC1zMTAyNCBcCisgICAgICAgICAgICAgLXQ8b3V0IGVuZHBvaW50IGFkZHI+IC1yPGluIGVuZHBvaW50IGFkZHI+CisKK3doZXJlIHNlcmlhbGQgYW5kIHNlcmlhbGMgYXJlIEZlbGlwZSdzIHV0aWxpdGllcyBmb3VuZCBoZXJlOgorCitodHRwczovL2dpdC5naXRvcmlvdXMub3JnL3VzYi91c2ItdG9vbHMuZ2l0IG1hc3RlcgorCisxMi4gUEhPTkVUIGZ1bmN0aW9uCis9PT09PT09PT09PT09PT09PT09CisKK1RoZSBmdW5jdGlvbiBpcyBwcm92aWRlZCBieSB1c2JfZl9waG9uZXQua28gbW9kdWxlLgorCitGdW5jdGlvbi1zcGVjaWZpYyBjb25maWdmcyBpbnRlcmZhY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZnVuY3Rpb24gbmFtZSB0byB1c2Ugd2hlbiBjcmVhdGluZyB0aGUgZnVuY3Rpb24gZGlyZWN0b3J5IGlzICJwaG9uZXQiLgorVGhlIFBIT05FVCBmdW5jdGlvbiBwcm92aWRlcyBqdXN0IG9uZSBhdHRyaWJ1dGUgaW4gaXRzIGZ1bmN0aW9uIGRpcmVjdG9yeToKKworCWlmbmFtZQkJLSBuZXR3b3JrIGRldmljZSBpbnRlcmZhY2UgbmFtZSBhc3NvY2lhdGVkIHdpdGggdGhpcworCQkJZnVuY3Rpb24gaW5zdGFuY2UKKworVGVzdGluZyB0aGUgUEhPTkVUIGZ1bmN0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSXQgaXMgbm90IHBvc3NpYmxlIHRvIHRlc3QgdGhlIFNPQ0tfU1RSRUFNIHByb3RvY29sIHdpdGhvdXQgYSBzcGVjaWZpYyBwaWVjZQorb2YgaGFyZHdhcmUsIHNvIG9ubHkgU09DS19ER1JBTSBoYXMgYmVlbiB0ZXN0ZWQuIEZvciB0aGUgbGF0dGVyIHRvIHdvcmssCitpbiB0aGUgcGFzdCBJIGhhZCB0byBhcHBseSB0aGUgcGF0Y2ggbWVudGlvbmVkIGhlcmU6CisKK2h0dHA6Ly93d3cuc3Bpbmljcy5uZXQvbGlzdHMvbGludXgtdXNiL21zZzg1Njg5Lmh0bWwKKworVGhlc2UgdG9vbHMgYXJlIHJlcXVpcmVkOgorCitnaXQ6Ly9naXQuZ2l0b3Jpb3VzLm9yZy9tZWVnby1jZWxsdWxhci9waG9uZXQtdXRpbHMuZ2l0CisKK09uIHRoZSBob3N0OgorCiskIC4vcGhvbmV0IC1hIDB4MTAgLWkgdXNicG4wCiskIC4vcG5yb3V0ZSBhZGQgMHg2YyB1c2JwbjAKKyQuL3Bucm91dGUgYWRkIDB4MTAgdXNicG4wCiskIGlmY29uZmlnIHVzYnBuMCB1cAorCitPbiB0aGUgZGV2aWNlOgorCiskIC4vcGhvbmV0IC1hIDB4NmMgLWkgdXBubGluazAKKyQgLi9wbnJvdXRlIGFkZCAweDEwIHVwbmxpbmswCiskIGlmY29uZmlnIHVwbmxpbmswIHVwCisKK1RoZW4gYSB0ZXN0IHByb2dyYW0gY2FuIGJlIHVzZWQ6CisKK2h0dHA6Ly93d3cuc3Bpbmljcy5uZXQvbGlzdHMvbGludXgtdXNiL21zZzg1NjkwLmh0bWwKKworT24gdGhlIGRldmljZToKKworJCAuL3BueG1pdCAtYSAweDZjIC1yCisKK09uIHRoZSBob3N0OgorCiskIC4vcG54bWl0IC1hIDB4MTAgLXMgMHg2YworCitBcyBhIHJlc3VsdCBzb21lIGRhdGEgc2hvdWxkIGJlIHNlbnQgZnJvbSBob3N0IHRvIGRldmljZS4KK1RoZW4gdGhlIG90aGVyIHdheSByb3VuZDoKKworT24gdGhlIGhvc3Q6CisKKyQgLi9wbnhtaXQgLWEgMHgxMCAtcgorCitPbiB0aGUgZGV2aWNlOgorCiskIC4vcG54bWl0IC1hIDB4NmMgLXMgMHgxMAorCisxMy4gUk5ESVMgZnVuY3Rpb24KKz09PT09PT09PT09PT09PT09PQorCitUaGUgZnVuY3Rpb24gaXMgcHJvdmlkZWQgYnkgdXNiX2Zfcm5kaXMua28gbW9kdWxlLgorCitGdW5jdGlvbi1zcGVjaWZpYyBjb25maWdmcyBpbnRlcmZhY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZnVuY3Rpb24gbmFtZSB0byB1c2Ugd2hlbiBjcmVhdGluZyB0aGUgZnVuY3Rpb24gZGlyZWN0b3J5IGlzICJybmRpcyIuCitUaGUgUk5ESVMgZnVuY3Rpb24gcHJvdmlkZXMgdGhlc2UgYXR0cmlidXRlcyBpbiBpdHMgZnVuY3Rpb24gZGlyZWN0b3J5OgorCisJaWZuYW1lCQktIG5ldHdvcmsgZGV2aWNlIGludGVyZmFjZSBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGlzCisJCQlmdW5jdGlvbiBpbnN0YW5jZQorCXFtdWx0CQktIHF1ZXVlIGxlbmd0aCBtdWx0aXBsaWVyIGZvciBoaWdoIGFuZCBzdXBlciBzcGVlZAorCWhvc3RfYWRkcgktIE1BQyBhZGRyZXNzIG9mIGhvc3QncyBlbmQgb2YgdGhpcworCQkJRXRoZXJuZXQgb3ZlciBVU0IgbGluaworCWRldl9hZGRyCS0gTUFDIGFkZHJlc3Mgb2YgZGV2aWNlJ3MgZW5kIG9mIHRoaXMKKwkJCUV0aGVybmV0IG92ZXIgVVNCIGxpbmsKKworYW5kIGFmdGVyIGNyZWF0aW5nIHRoZSBmdW5jdGlvbnMvcm5kaXMuPGluc3RhbmNlIG5hbWU+IHRoZXkgY29udGFpbiBkZWZhdWx0Cit2YWx1ZXM6IHFtdWx0IGlzIDUsIGRldl9hZGRyIGFuZCBob3N0X2FkZHIgYXJlIHJhbmRvbWx5IHNlbGVjdGVkLgorRXhjZXB0IGZvciBpZm5hbWUgdGhleSBjYW4gYmUgd3JpdHRlbiB0byB1bnRpbCB0aGUgZnVuY3Rpb24gaXMgbGlua2VkIHRvIGEKK2NvbmZpZ3VyYXRpb24uIFRoZSBpZm5hbWUgaXMgcmVhZC1vbmx5IGFuZCBjb250YWlucyB0aGUgbmFtZSBvZiB0aGUgaW50ZXJmYWNlCit3aGljaCB3YXMgYXNzaWduZWQgYnkgdGhlIG5ldCBjb3JlLCBlLiBnLiB1c2IwLgorCitUZXN0aW5nIHRoZSBSTkRJUyBmdW5jdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ29uZmlndXJlIElQIGFkZHJlc3NlcyBvZiB0aGUgZGV2aWNlIGFuZCB0aGUgaG9zdC4gVGhlbjoKKworT24gdGhlIGRldmljZTogcGluZyA8aG9zdCdzIElQPgorT24gdGhlIGhvc3Q6IHBpbmcgPGRldmljZSdzIElQPgorCisxNC4gU0VSSUFMIGZ1bmN0aW9uCis9PT09PT09PT09PT09PT09PT09CisKK1RoZSBmdW5jdGlvbiBpcyBwcm92aWRlZCBieSB1c2JfZl9nc2VyLmtvIG1vZHVsZS4KKworRnVuY3Rpb24tc3BlY2lmaWMgY29uZmlnZnMgaW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZ1bmN0aW9uIG5hbWUgdG8gdXNlIHdoZW4gY3JlYXRpbmcgdGhlIGZ1bmN0aW9uIGRpcmVjdG9yeSBpcyAiZ3NlciIuCitUaGUgU0VSSUFMIGZ1bmN0aW9uIHByb3ZpZGVzIGp1c3Qgb25lIGF0dHJpYnV0ZSBpbiBpdHMgZnVuY3Rpb24gZGlyZWN0b3J5OgorCisJcG9ydF9udW0KKworVGhlIGF0dHJpYnV0ZSBpcyByZWFkLW9ubHkuCisKK1RoZXJlIGNhbiBiZSBhdCBtb3N0IDQgQUNNL2dlbmVyaWMgc2VyaWFsL09CRVggcG9ydHMgaW4gdGhlIHN5c3RlbS4KKworVGVzdGluZyB0aGUgU0VSSUFMIGZ1bmN0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT24gaG9zdDogaW5zbW9kIHVzYnNlcmlhbAorCSBlY2hvIFZJRCBQSUQgPi9zeXMvYnVzL3VzYi1zZXJpYWwvZHJpdmVycy9nZW5lcmljL25ld19pZAorT24gaG9zdDogY2F0ID4gL2Rldi90dHlVU0I8WD4KK09uIHRhcmdldDogY2F0IC9kZXYvdHR5R1M8WT4KKwordGhlbiB0aGUgb3RoZXIgd2F5IHJvdW5kCisKK09uIHRhcmdldDogY2F0ID4gL2Rldi90dHlHUzxZPgorT24gaG9zdDogY2F0IC9kZXYvdHR5VVNCPFg+CisKKzE1LiBTT1VSQ0VTSU5LIGZ1bmN0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZnVuY3Rpb24gaXMgcHJvdmlkZWQgYnkgdXNiX2Zfc3NfbGIua28gbW9kdWxlLgorCitGdW5jdGlvbi1zcGVjaWZpYyBjb25maWdmcyBpbnRlcmZhY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZnVuY3Rpb24gbmFtZSB0byB1c2Ugd2hlbiBjcmVhdGluZyB0aGUgZnVuY3Rpb24gZGlyZWN0b3J5IGlzICJTb3VyY2VTaW5rIi4KK1RoZSBTT1VSQ0VTSU5LIGZ1bmN0aW9uIHByb3ZpZGVzIHRoZXNlIGF0dHJpYnV0ZXMgaW4gaXRzIGZ1bmN0aW9uIGRpcmVjdG9yeToKKworCXBhdHRlcm4JCS0gMCAoYWxsIHplcm9zKSwgMSAobW9kNjMpLCAyIChub25lKQorCWlzb2NfaW50ZXJ2YWwJLSAxLi4xNgorCWlzb2NfbWF4cGFja2V0CS0gMCAtIDEwMjMgKGZzKSwgMCAtIDEwMjQgKGhzL3NzKQorCWlzb2NfbXVsdAktIDAuLjIgKGhzL3NzIG9ubHkpCisJaXNvY19tYXhidXJzdAktIDAuLjE1IChzcyBvbmx5KQorCWJ1bGtfYnVmbGVuCS0gYnVmZmVyIGxlbmd0aAorCitUZXN0aW5nIHRoZSBTT1VSQ0VTSU5LIGZ1bmN0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2RldmljZTogcnVuIHRoZSBnYWRnZXQKK2hvc3Q6IHRlc3QtdXNiICh0b29scy91c2IvdGVzdHVzYi5jKQorCisKKzE2LiBVQUMxIGZ1bmN0aW9uCis9PT09PT09PT09PT09PT09PQorCitUaGUgZnVuY3Rpb24gaXMgcHJvdmlkZWQgYnkgdXNiX2ZfdWFjMS5rbyBtb2R1bGUuCisKK0Z1bmN0aW9uLXNwZWNpZmljIGNvbmZpZ2ZzIGludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBmdW5jdGlvbiBuYW1lIHRvIHVzZSB3aGVuIGNyZWF0aW5nIHRoZSBmdW5jdGlvbiBkaXJlY3RvcnkgaXMgInVhYzEiLgorVGhlIHVhYzEgZnVuY3Rpb24gcHJvdmlkZXMgdGhlc2UgYXR0cmlidXRlcyBpbiBpdHMgZnVuY3Rpb24gZGlyZWN0b3J5OgorCisJYXVkaW9fYnVmX3NpemUgLSBhdWRpbyBidWZmZXIgc2l6ZQorCWZuX2NhcCAtIGNhcHR1cmUgcGNtIGRldmljZSBmaWxlIG5hbWUKKwlmbl9jbnRsIC0gY29udHJvbCBkZXZpY2UgZmlsZSBuYW1lCisJZm5fcGxheSAtIHBsYXliYWNrIHBjbSBkZXZpY2UgZmlsZSBuYW1lCisJcmVxX2J1Zl9zaXplIC0gSVNPIE9VVCBlbmRwb2ludCByZXF1ZXN0IGJ1ZmZlciBzaXplCisJcmVxX2NvdW50IC0gSVNPIE9VVCBlbmRwb2ludCByZXF1ZXN0IGNvdW50CisKK1RoZSBhdHRyaWJ1dGVzIGhhdmUgc2FuZSBkZWZhdWx0IHZhbHVlcy4KKworVGVzdGluZyB0aGUgVUFDMSBmdW5jdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitkZXZpY2U6IHJ1biB0aGUgZ2FkZ2V0Citob3N0OiBhcGxheSAtbCAjIHNob3VsZCBsaXN0IG91ciBVU0IgQXVkaW8gR2FkZ2V0CisKKzE3LiBVQUMyIGZ1bmN0aW9uCis9PT09PT09PT09PT09PT09PQorCitUaGUgZnVuY3Rpb24gaXMgcHJvdmlkZWQgYnkgdXNiX2ZfdWFjMi5rbyBtb2R1bGUuCisKK0Z1bmN0aW9uLXNwZWNpZmljIGNvbmZpZ2ZzIGludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBmdW5jdGlvbiBuYW1lIHRvIHVzZSB3aGVuIGNyZWF0aW5nIHRoZSBmdW5jdGlvbiBkaXJlY3RvcnkgaXMgInVhYzIiLgorVGhlIHVhYzIgZnVuY3Rpb24gcHJvdmlkZXMgdGhlc2UgYXR0cmlidXRlcyBpbiBpdHMgZnVuY3Rpb24gZGlyZWN0b3J5OgorCisJY19jaG1hc2sgLSBjYXB0dXJlIGNoYW5uZWwgbWFzaworCWNfc3JhdGUgLSBjYXB0dXJlIHNhbXBsaW5nIHJhdGUKKwljX3NzaXplIC0gY2FwdHVyZSBzYW1wbGUgc2l6ZSAoYnl0ZXMpCisJcF9jaG1hc2sgLSBwbGF5YmFjayBjaGFubmVsIG1hc2sKKwlwX3NyYXRlIC0gcGxheWJhY2sgc2FtcGxpbmcgcmF0ZQorCXBfc3NpemUgLSBwbGF5YmFjayBzYW1wbGUgc2l6ZSAoYnl0ZXMpCisKK1RoZSBhdHRyaWJ1dGVzIGhhdmUgc2FuZSBkZWZhdWx0IHZhbHVlcy4KKworVGVzdGluZyB0aGUgVUFDMiBmdW5jdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitkZXZpY2U6IHJ1biB0aGUgZ2FkZ2V0Citob3N0OiBhcGxheSAtbCAjIHNob3VsZCBsaXN0IG91ciBVU0IgQXVkaW8gR2FkZ2V0CisKK1RoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmVxdWlyZSByZWFsIGhhcmR3YXJlIHN1cHBvcnQsIGl0IGp1c3QKK3NlbmRzIGEgc3RyZWFtIG9mIGF1ZGlvIGRhdGEgdG8vZnJvbSB0aGUgaG9zdC4gSW4gb3JkZXIgdG8KK2FjdHVhbGx5IGhlYXIgc29tZXRoaW5nIGF0IHRoZSBkZXZpY2Ugc2lkZSwgYSBjb21tYW5kIHNpbWlsYXIKK3RvIHRoaXMgbXVzdCBiZSB1c2VkIGF0IHRoZSBkZXZpY2Ugc2lkZToKKworJCBhcmVjb3JkIC1mIGRhdCAtdCB3YXYgLUQgaHc6MiwwIHwgYXBsYXkgLUQgaHc6MCwwICYKKworZS5nLjoKKworJCBhcmVjb3JkIC1mIGRhdCAtdCB3YXYgLUQgaHc6Q0FSRD1VQUMyR2FkZ2V0LERFVj0wIHwgXAorYXBsYXkgLUQgZGVmYXVsdDpDQVJEPU9kcm9pZFUzCisKKzE4LiBVVkMgZnVuY3Rpb24KKz09PT09PT09PT09PT09PT0KKworVGhlIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGJ5IHVzYl9mX3V2Yy5rbyBtb2R1bGUuCisKK0Z1bmN0aW9uLXNwZWNpZmljIGNvbmZpZ2ZzIGludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBmdW5jdGlvbiBuYW1lIHRvIHVzZSB3aGVuIGNyZWF0aW5nIHRoZSBmdW5jdGlvbiBkaXJlY3RvcnkgaXMgInV2YyIuCitUaGUgdXZjIGZ1bmN0aW9uIHByb3ZpZGVzIHRoZXNlIGF0dHJpYnV0ZXMgaW4gaXRzIGZ1bmN0aW9uIGRpcmVjdG9yeToKKworCXN0cmVhbWluZ19pbnRlcnZhbCAtIGludGVydmFsIGZvciBwb2xsaW5nIGVuZHBvaW50IGZvciBkYXRhIHRyYW5zZmVycworCXN0cmVhbWluZ19tYXhidXJzdCAtIGJNYXhCdXJzdCBmb3Igc3VwZXIgc3BlZWQgY29tcGFuaW9uIGRlc2NyaXB0b3IKKwlzdHJlYW1pbmdfbWF4cGFja2V0IC0gbWF4aW11bSBwYWNrZXQgc2l6ZSB0aGlzIGVuZHBvaW50IGlzIGNhcGFibGUgb2YKKwkJCSAgICAgIHNlbmRpbmcgb3IgcmVjZWl2aW5nIHdoZW4gdGhpcyBjb25maWd1cmF0aW9uIGlzCisJCQkgICAgICBzZWxlY3RlZAorCitUaGVyZSBhcmUgYWxzbyAiY29udHJvbCIgYW5kICJzdHJlYW1pbmciIHN1YmRpcmVjdG9yaWVzLCBlYWNoIG9mIHdoaWNoIGNvbnRhaW4KK2EgbnVtYmVyIG9mIHRoZWlyIHN1YmRpcmVjdG9yaWVzLiBUaGVyZSBhcmUgc29tZSBzYW5lIGRlZmF1bHRzIHByb3ZpZGVkLCBidXQKK3RoZSB1c2VyIG11c3QgcHJvdmlkZSB0aGUgZm9sbG93aW5nOgorCisJY29udHJvbCBoZWFkZXIgLSBjcmVhdGUgaW4gY29udHJvbC9oZWFkZXIsIGxpbmsgZnJvbSBjb250cm9sL2NsYXNzL2ZzCisJCQlhbmQvb3IgY29udHJvbC9jbGFzcy9zcworCXN0cmVhbWluZyBoZWFkZXIgLSBjcmVhdGUgaW4gc3RyZWFtaW5nL2hlYWRlciwgbGluayBmcm9tCisJCQlzdHJlYW1pbmcvY2xhc3MvZnMgYW5kL29yIHN0cmVhbWluZy9jbGFzcy9ocyBhbmQvb3IKKwkJCXN0cmVhbWluZy9jbGFzcy9zcworCWZvcm1hdCBkZXNjcmlwdGlvbiAtIGNyZWF0ZSBpbiBzdHJlYW1pbmcvbWpwZWcgYW5kL29yCisJCQlzdHJlYW1pbmcvdW5jb21wcmVzc2VkCisJZnJhbWUgZGVzY3JpcHRpb24gLSBjcmVhdGUgaW4gc3RyZWFtaW5nL21qcGVnLzxmb3JtYXQ+IGFuZC9vciBpbgorCQkJc3RyZWFtaW5nL3VuY29tcHJlc3NlZC88Zm9ybWF0PgorCitFYWNoIGZyYW1lIGRlc2NyaXB0aW9uIGNvbnRhaW5zIGZyYW1lIGludGVydmFsIHNwZWNpZmljYXRpb24sIGFuZCBlYWNoCitzdWNoIHNwZWNpZmljYXRpb24gY29uc2lzdHMgb2YgYSBudW1iZXIgb2YgbGluZXMgd2l0aCBhbiBpbnZlcnZhbCB2YWx1ZQoraW4gZWFjaCBsaW5lLiBUaGUgcnVsZXMgc3RhdGVkIGFib3ZlIGFyZSBiZXN0IGlsbHVzdHJhdGVkIHdpdGggYW4gZXhhbXBsZToKKworIyBta2RpciBmdW5jdGlvbnMvdXZjLnVzYjAvY29udHJvbC9oZWFkZXIvaAorIyBjZCBmdW5jdGlvbnMvdXZjLnVzYjAvY29udHJvbC9oZWFkZXIvaAorIyBsbiAtcyBoZWFkZXIvaCBjbGFzcy9mcworIyBsbiAtcyBoZWFkZXIvaCBjbGFzcy9zcworIyBta2RpciAtcCBmdW5jdGlvbnMvdXZjLnVzYjAvc3RyZWFtaW5nL3VuY29tcHJlc3NlZC91LzM2MHAKKyMgY2F0IDw8RU9GID4gZnVuY3Rpb25zL3V2Yy51c2IwL3N0cmVhbWluZy91bmNvbXByZXNzZWQvdS8zNjBwL2R3RnJhbWVJbnRlcnZhbAorNjY2NjY2CisxMDAwMDAwCis1MDAwMDAwCitFT0YKKyMgY2QgJEdBREdFVF9DT05GSUdGU19ST09UCisjIG1rZGlyIGZ1bmN0aW9ucy91dmMudXNiMC9zdHJlYW1pbmcvaGVhZGVyL2gKKyMgY2QgZnVuY3Rpb25zL3V2Yy51c2IwL3N0cmVhbWluZy9oZWFkZXIvaAorIyBsbiAtcyAuLi8uLi91bmNvbXByZXNzZWQvdQorIyBjZCAuLi8uLi9jbGFzcy9mcworIyBsbiAtcyAuLi8uLi9oZWFkZXIvaAorIyBjZCAuLi8uLi9jbGFzcy9ocworIyBsbiAtcyAuLi8uLi9oZWFkZXIvaAorIyBjZCAuLi8uLi9jbGFzcy9zcworIyBsbiAtcyAuLi8uLi9oZWFkZXIvaAorCisKK1Rlc3RpbmcgdGhlIFVWQyBmdW5jdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2RldmljZTogcnVuIHRoZSBnYWRnZXQsIG1vZHByb2JlIHZpdmlkCisKKyMgdXZjLWdhZGdldCAtdSAvZGV2L3ZpZGVvPHV2YyB2aWRlbyBub2RlICM+IC12IC9kZXYvdmlkZW88dml2aWQgdmlkZW8gbm9kZSAjPgorCit3aGVyZSB1dmMtZ2FkZ2V0IGlzIHRoaXMgcHJvZ3JhbToKK2h0dHA6Ly9naXQuaWRlYXNvbmJvYXJkLm9yZy91dmMtZ2FkZ2V0LmdpdAorCit3aXRoIHRoZXNlIHBhdGNoZXM6CitodHRwOi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2xpbnV4LXVzYi9tc2c5OTIyMC5odG1sCisKK2hvc3Q6IGx1dmN2aWV3IC1mIHl1dgorCisxOS4gUFJJTlRFUiBmdW5jdGlvbgorPT09PT09PT09PT09PT09PT09PT0KKworVGhlIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGJ5IHVzYl9mX3ByaW50ZXIua28gbW9kdWxlLgorCitGdW5jdGlvbi1zcGVjaWZpYyBjb25maWdmcyBpbnRlcmZhY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZnVuY3Rpb24gbmFtZSB0byB1c2Ugd2hlbiBjcmVhdGluZyB0aGUgZnVuY3Rpb24gZGlyZWN0b3J5IGlzICJwcmludGVyIi4KK1RoZSBwcmludGVyIGZ1bmN0aW9uIHByb3ZpZGVzIHRoZXNlIGF0dHJpYnV0ZXMgaW4gaXRzIGZ1bmN0aW9uIGRpcmVjdG9yeToKKworCXBucF9zdHJpbmcJLSBEYXRhIHRvIGJlIHBhc3NlZCB0byB0aGUgaG9zdCBpbiBwbnAgc3RyaW5nCisJcV9sZW4JCS0gTnVtYmVyIG9mIHJlcXVlc3RzIHBlciBlbmRwb2ludAorCitUZXN0aW5nIHRoZSBQUklOVEVSIGZ1bmN0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBtb3N0IGJhc2ljIHRlc3Rpbmc6CisKK2RldmljZTogcnVuIHRoZSBnYWRnZXQKKyMgbHMgLWwgL2RldmljZXMvdmlydHVhbC91c2JfcHJpbnRlcl9nYWRnZXQvCisKK3Nob3VsZCBzaG93IGdfcHJpbnRlcjxudW1iZXI+LgorCitJZiB1ZGV2IGlzIGFjdGl2ZSwgdGhlbiAvZGV2L2dfcHJpbnRlcjxudW1iZXI+IHNob3VsZCBhcHBlYXIgYXV0b21hdGljYWxseS4KKworaG9zdDoKKworSWYgdWRldiBpcyBhY3RpdmUsIHRoZW4gZS5nLiAvZGV2L3VzYi9scDAgc2hvdWxkIGFwcGVhci4KKworaG9zdC0+ZGV2aWNlIHRyYW5zbWlzc2lvbjoKKworZGV2aWNlOgorIyBjYXQgL2Rldi9nX3ByaW50ZXI8bnVtYmVyPgoraG9zdDoKKyMgY2F0ID4gL2Rldi91c2IvbHAwCisKK2RldmljZS0+aG9zdCB0cmFuc21pc3Npb246CisKKyMgY2F0ID4gL2Rldi9nX3ByaW50ZXI8bnVtYmVyPgoraG9zdDoKKyMgY2F0IC9kZXYvdXNiL2xwMAorCitNb3JlIGFkdmFuY2VkIHRlc3RpbmcgY2FuIGJlIGRvbmUgd2l0aCB0aGUgcHJuX2V4YW1wbGUKK2Rlc2NyaWJlZCBpbiBEb2N1bWVudGF0aW9uL3VzYi9nYWRnZXQtcHJpbnRlci50eHQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfY29uZmlnZnMudHh0IGIvRG9jdW1lbnRhdGlvbi91c2IvZ2FkZ2V0X2NvbmZpZ2ZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzVlNTc0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi91c2IvZ2FkZ2V0X2NvbmZpZ2ZzLnR4dApAQCAtMCwwICsxLDM4NCBAQAorCisKKworCisJCUxpbnV4IFVTQiBnYWRnZXQgY29uZmlndXJlZCB0aHJvdWdoIGNvbmZpZ2ZzCisKKworCQkJICAgICAyNXRoIEFwcmlsIDIwMTMKKworCisKKworT3ZlcnZpZXcKKz09PT09PT09CisKK0EgVVNCIExpbnV4IEdhZGdldCBpcyBhIGRldmljZSB3aGljaCBoYXMgYSBVREMgKFVTQiBEZXZpY2UgQ29udHJvbGxlcikgYW5kIGNhbgorYmUgY29ubmVjdGVkIHRvIGEgVVNCIEhvc3QgdG8gZXh0ZW5kIGl0IHdpdGggYWRkaXRpb25hbCBmdW5jdGlvbnMgbGlrZSBhIHNlcmlhbAorcG9ydCBvciBhIG1hc3Mgc3RvcmFnZSBjYXBhYmlsaXR5LgorCitBIGdhZGdldCBpcyBzZWVuIGJ5IGl0cyBob3N0IGFzIGEgc2V0IG9mIGNvbmZpZ3VyYXRpb25zLCBlYWNoIG9mIHdoaWNoIGNvbnRhaW5zCithIG51bWJlciBvZiBpbnRlcmZhY2VzIHdoaWNoLCBmcm9tIHRoZSBnYWRnZXQncyBwZXJzcGVjdGl2ZSwgYXJlIGtub3duIGFzCitmdW5jdGlvbnMsIGVhY2ggZnVuY3Rpb24gcmVwcmVzZW50aW5nIGUuZy4gYSBzZXJpYWwgY29ubmVjdGlvbiBvciBhIFNDU0kgZGlzay4KKworTGludXggcHJvdmlkZXMgYSBudW1iZXIgb2YgZnVuY3Rpb25zIGZvciBnYWRnZXRzIHRvIHVzZS4KKworQ3JlYXRpbmcgYSBnYWRnZXQgbWVhbnMgZGVjaWRpbmcgd2hhdCBjb25maWd1cmF0aW9ucyB0aGVyZSB3aWxsIGJlCithbmQgd2hpY2ggZnVuY3Rpb25zIGVhY2ggY29uZmlndXJhdGlvbiB3aWxsIHByb3ZpZGUuCisKK0NvbmZpZ2ZzIChwbGVhc2Ugc2VlIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvY29uZmlnZnMvKikgbGVuZHMgaXRzZWxmIG5pY2VseQorZm9yIHRoZSBwdXJwb3NlIG9mIHRlbGxpbmcgdGhlIGtlcm5lbCBhYm91dCB0aGUgYWJvdmUgbWVudGlvbmVkIGRlY2lzaW9uLgorVGhpcyBkb2N1bWVudCBpcyBhYm91dCBob3cgdG8gZG8gaXQuCisKK0l0IGFsc28gZGVzY3JpYmVzIGhvdyBjb25maWdmcyBpbnRlZ3JhdGlvbiBpbnRvIGdhZGdldCBpcyBkZXNpZ25lZC4KKworCisKKworUmVxdWlyZW1lbnRzCis9PT09PT09PT09PT0KKworSW4gb3JkZXIgZm9yIHRoaXMgdG8gd29yayBjb25maWdmcyBtdXN0IGJlIGF2YWlsYWJsZSwgc28gQ09ORklHRlNfRlMgbXVzdCBiZQorJ3knIG9yICdtJyBpbiAuY29uZmlnLiBBcyBvZiB0aGlzIHdyaXRpbmcgVVNCX0xJQkNPTVBPU0lURSBzZWxlY3RzIENPTkZJR0ZTX0ZTLgorCisKKworCitVc2FnZQorPT09PT0KKworKFRoZSBvcmlnaW5hbCBwb3N0IGRlc2NyaWJpbmcgdGhlIGZpcnN0IGZ1bmN0aW9uCittYWRlIGF2YWlsYWJsZSB0aHJvdWdoIGNvbmZpZ2ZzIGNhbiBiZSBzZWVuIGhlcmU6CitodHRwOi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2xpbnV4LXVzYi9tc2c3NjM4OC5odG1sKQorCiskIG1vZHByb2JlIGxpYmNvbXBvc2l0ZQorJCBtb3VudCBub25lICRDT05GSUdGU19IT01FIC10IGNvbmZpZ2ZzCisKK3doZXJlIENPTkZJR0ZTX0hPTUUgaXMgdGhlIG1vdW50IHBvaW50IGZvciBjb25maWdmcworCisxLiBDcmVhdGluZyB0aGUgZ2FkZ2V0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRm9yIGVhY2ggZ2FkZ2V0IHRvIGJlIGNyZWF0ZWQgaXRzIGNvcnJlc3BvbmRpbmcgZGlyZWN0b3J5IG11c3QgYmUgY3JlYXRlZDoKKworJCBta2RpciAkQ09ORklHRlNfSE9NRS91c2JfZ2FkZ2V0LzxnYWRnZXQgbmFtZT4KKworZS5nLjoKKworJCBta2RpciAkQ09ORklHRlNfSE9NRS91c2JfZ2FkZ2V0L2cxCisKKy4uLgorLi4uCisuLi4KKworJCBjZCAkQ09ORklHRlNfSE9NRS91c2JfZ2FkZ2V0L2cxCisKK0VhY2ggZ2FkZ2V0IG5lZWRzIHRvIGhhdmUgaXRzIHZlbmRvciBpZCA8VklEPiBhbmQgcHJvZHVjdCBpZCA8UElEPiBzcGVjaWZpZWQ6CisKKyQgZWNobyA8VklEPiA+IGlkVmVuZG9yCiskIGVjaG8gPFBJRD4gPiBpZFByb2R1Y3QKKworQSBnYWRnZXQgYWxzbyBuZWVkcyBpdHMgc2VyaWFsIG51bWJlciwgbWFudWZhY3R1cmVyIGFuZCBwcm9kdWN0IHN0cmluZ3MuCitJbiBvcmRlciB0byBoYXZlIGEgcGxhY2UgdG8gc3RvcmUgdGhlbSwgYSBzdHJpbmdzIHN1YmRpcmVjdG9yeSBtdXN0IGJlIGNyZWF0ZWQKK2ZvciBlYWNoIGxhbmd1YWdlLCBlLmcuOgorCiskIG1rZGlyIHN0cmluZ3MvMHg0MDkKKworVGhlbiB0aGUgc3RyaW5ncyBjYW4gYmUgc3BlY2lmaWVkOgorCiskIGVjaG8gPHNlcmlhbCBudW1iZXI+ID4gc3RyaW5ncy8weDQwOS9zZXJpYWxudW1iZXIKKyQgZWNobyA8bWFudWZhY3R1cmVyPiA+IHN0cmluZ3MvMHg0MDkvbWFudWZhY3R1cmVyCiskIGVjaG8gPHByb2R1Y3Q+ID4gc3RyaW5ncy8weDQwOS9wcm9kdWN0CisKKzIuIENyZWF0aW5nIHRoZSBjb25maWd1cmF0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0VhY2ggZ2FkZ2V0IHdpbGwgY29uc2lzdCBvZiBhIG51bWJlciBvZiBjb25maWd1cmF0aW9ucywgdGhlaXIgY29ycmVzcG9uZGluZworZGlyZWN0b3JpZXMgbXVzdCBiZSBjcmVhdGVkOgorCiskIG1rZGlyIGNvbmZpZ3MvPG5hbWU+LjxudW1iZXI+CisKK3doZXJlIDxuYW1lPiBjYW4gYmUgYW55IHN0cmluZyB3aGljaCBpcyBsZWdhbCBpbiBhIGZpbGVzeXN0ZW0gYW5kIHRoZQorPG51bWJlcj4gaXMgdGhlIGNvbmZpZ3VyYXRpb24ncyBudW1iZXIsIGUuZy46CisKKyQgbWtkaXIgY29uZmlncy9jLjEKKworLi4uCisuLi4KKy4uLgorCitFYWNoIGNvbmZpZ3VyYXRpb24gYWxzbyBuZWVkcyBpdHMgc3RyaW5ncywgc28gYSBzdWJkaXJlY3RvcnkgbXVzdCBiZSBjcmVhdGVkCitmb3IgZWFjaCBsYW5ndWFnZSwgZS5nLjoKKworJCBta2RpciBjb25maWdzL2MuMS9zdHJpbmdzLzB4NDA5CisKK1RoZW4gdGhlIGNvbmZpZ3VyYXRpb24gc3RyaW5nIGNhbiBiZSBzcGVjaWZpZWQ6CisKKyQgZWNobyA8Y29uZmlndXJhdGlvbj4gPiBjb25maWdzL2MuMS9zdHJpbmdzLzB4NDA5L2NvbmZpZ3VyYXRpb24KKworU29tZSBhdHRyaWJ1dGVzIGNhbiBhbHNvIGJlIHNldCBmb3IgYSBjb25maWd1cmF0aW9uLCBlLmcuOgorCiskIGVjaG8gMTIwID4gY29uZmlncy9jLjEvTWF4UG93ZXIKKworMy4gQ3JlYXRpbmcgdGhlIGZ1bmN0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZ2FkZ2V0IHdpbGwgcHJvdmlkZSBzb21lIGZ1bmN0aW9ucywgZm9yIGVhY2ggZnVuY3Rpb24gaXRzIGNvcnJlc3BvbmRpbmcKK2RpcmVjdG9yeSBtdXN0IGJlIGNyZWF0ZWQ6CisKKyQgbWtkaXIgZnVuY3Rpb25zLzxuYW1lPi48aW5zdGFuY2UgbmFtZT4KKword2hlcmUgPG5hbWU+IGNvcnJlc3BvbmRzIHRvIG9uZSBvZiBhbGxvd2VkIGZ1bmN0aW9uIG5hbWVzIGFuZCBpbnN0YW5jZSBuYW1lCitpcyBhbiBhcmJpdHJhcnkgc3RyaW5nIGFsbG93ZWQgaW4gYSBmaWxlc3lzdGVtLCBlLmcuOgorCiskIG1rZGlyIGZ1bmN0aW9ucy9uY20udXNiMCAjIHVzYl9mX25jbS5rbyBnZXRzIGxvYWRlZCB3aXRoIHJlcXVlc3RfbW9kdWxlKCkKKworLi4uCisuLi4KKy4uLgorCitFYWNoIGZ1bmN0aW9uIHByb3ZpZGVzIGl0cyBzcGVjaWZpYyBzZXQgb2YgYXR0cmlidXRlcywgd2l0aCBlaXRoZXIgcmVhZC1vbmx5CitvciByZWFkLXdyaXRlIGFjY2Vzcy4gV2hlcmUgYXBwbGljYWJsZSB0aGV5IG5lZWQgdG8gYmUgd3JpdHRlbiB0byBhcworYXBwcm9wcmlhdGUuCitQbGVhc2UgcmVmZXIgdG8gRG9jdW1lbnRhdGlvbi9BQkkvKi9jb25maWdmcy11c2ItZ2FkZ2V0KiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworNC4gQXNzb2NpYXRpbmcgdGhlIGZ1bmN0aW9ucyB3aXRoIHRoZWlyIGNvbmZpZ3VyYXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQXQgdGhpcyBtb21lbnQgYSBudW1iZXIgb2YgZ2FkZ2V0cyBpcyBjcmVhdGVkLCBlYWNoIG9mIHdoaWNoIGhhcyBhIG51bWJlciBvZgorY29uZmlndXJhdGlvbnMgc3BlY2lmaWVkIGFuZCBhIG51bWJlciBvZiBmdW5jdGlvbnMgYXZhaWxhYmxlLiBXaGF0IHJlbWFpbnMKK2lzIHNwZWNpZnlpbmcgd2hpY2ggZnVuY3Rpb24gaXMgYXZhaWxhYmxlIGluIHdoaWNoIGNvbmZpZ3VyYXRpb24gKHRoZSBzYW1lCitmdW5jdGlvbiBjYW4gYmUgdXNlZCBpbiBtdWx0aXBsZSBjb25maWd1cmF0aW9ucykuIFRoaXMgaXMgYWNoaWV2ZWQgd2l0aAorY3JlYXRpbmcgc3ltYm9saWMgbGlua3M6CisKKyQgbG4gLXMgZnVuY3Rpb25zLzxuYW1lPi48aW5zdGFuY2UgbmFtZT4gY29uZmlncy88bmFtZT4uPG51bWJlcj4KKworZS5nLjoKKworJCBsbiAtcyBmdW5jdGlvbnMvbmNtLnVzYjAgY29uZmlncy9jLjEKKworLi4uCisuLi4KKy4uLgorCis1LiBFbmFibGluZyB0aGUgZ2FkZ2V0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FsbCB0aGUgYWJvdmUgc3RlcHMgc2VydmUgdGhlIHB1cnBvc2Ugb2YgY29tcG9zaW5nIHRoZSBnYWRnZXQgb2YKK2NvbmZpZ3VyYXRpb25zIGFuZCBmdW5jdGlvbnMuCisKK0FuIGV4YW1wbGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBtaWdodCBsb29rIGxpa2UgdGhpczoKKworLgorLi9zdHJpbmdzCisuL3N0cmluZ3MvMHg0MDkKKy4vc3RyaW5ncy8weDQwOS9zZXJpYWxudW1iZXIKKy4vc3RyaW5ncy8weDQwOS9wcm9kdWN0CisuL3N0cmluZ3MvMHg0MDkvbWFudWZhY3R1cmVyCisuL2NvbmZpZ3MKKy4vY29uZmlncy9jLjEKKy4vY29uZmlncy9jLjEvbmNtLnVzYjAgLT4gLi4vLi4vLi4vLi4vdXNiX2dhZGdldC9nMS9mdW5jdGlvbnMvbmNtLnVzYjAKKy4vY29uZmlncy9jLjEvc3RyaW5ncworLi9jb25maWdzL2MuMS9zdHJpbmdzLzB4NDA5CisuL2NvbmZpZ3MvYy4xL3N0cmluZ3MvMHg0MDkvY29uZmlndXJhdGlvbgorLi9jb25maWdzL2MuMS9ibUF0dHJpYnV0ZXMKKy4vY29uZmlncy9jLjEvTWF4UG93ZXIKKy4vZnVuY3Rpb25zCisuL2Z1bmN0aW9ucy9uY20udXNiMAorLi9mdW5jdGlvbnMvbmNtLnVzYjAvaWZuYW1lCisuL2Z1bmN0aW9ucy9uY20udXNiMC9xbXVsdAorLi9mdW5jdGlvbnMvbmNtLnVzYjAvaG9zdF9hZGRyCisuL2Z1bmN0aW9ucy9uY20udXNiMC9kZXZfYWRkcgorLi9VREMKKy4vYmNkVVNCCisuL2JjZERldmljZQorLi9pZFByb2R1Y3QKKy4vaWRWZW5kb3IKKy4vYk1heFBhY2tldFNpemUwCisuL2JEZXZpY2VQcm90b2NvbAorLi9iRGV2aWNlU3ViQ2xhc3MKKy4vYkRldmljZUNsYXNzCisKKworU3VjaCBhIGdhZGdldCBtdXN0IGJlIGZpbmFsbHkgZW5hYmxlZCBzbyB0aGF0IHRoZSBVU0IgaG9zdCBjYW4gZW51bWVyYXRlIGl0LgorSW4gb3JkZXIgdG8gZW5hYmxlIHRoZSBnYWRnZXQgaXQgbXVzdCBiZSBib3VuZCB0byBhIFVEQyAoVVNCIERldmljZSBDb250cm9sbGVyKS4KKworJCBlY2hvIDx1ZGMgbmFtZT4gPiBVREMKKword2hlcmUgPHVkYyBuYW1lPiBpcyBvbmUgb2YgdGhvc2UgZm91bmQgaW4gL3N5cy9jbGFzcy91ZGMvKgorZS5nLjoKKworJCBlY2hvIHMzYy1oc290ZyA+IFVEQworCisKKzYuIERpc2FibGluZyB0aGUgZ2FkZ2V0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiskIGVjaG8gIiIgPiBVREMKKworNy4gQ2xlYW5pbmcgdXAKKy0tLS0tLS0tLS0tLS0tCisKK1JlbW92ZSBmdW5jdGlvbnMgZnJvbSBjb25maWd1cmF0aW9uczoKKworJCBybSBjb25maWdzLzxjb25maWcgbmFtZT4uPG51bWJlcj4vPGZ1bmN0aW9uPgorCit3aGVyZSA8Y29uZmlnIG5hbWU+LjxudW1iZXI+IHNwZWNpZnkgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIDxmdW5jdGlvbj4gaXMKK2Egc3ltbGluayB0byBhIGZ1bmN0aW9uIGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUgY29uZmlndXJhdGlvbiwgZS5nLjoKKworJCBybSBjb25maWdmcy9jLjEvbmNtLnVzYjAKKworLi4uCisuLi4KKy4uLgorCitSZW1vdmUgc3RyaW5ncyBkaXJlY3RvcmllcyBpbiBjb25maWd1cmF0aW9ucworCiskIHJtZGlyIGNvbmZpZ3MvPGNvbmZpZyBuYW1lPi48bnVtYmVyPi9zdHJpbmdzLzxsYW5nPgorCitlLmcuOgorCiskIHJtZGlyIGNvbmZpZ3MvYy4xL3N0cmluZ3MvMHg0MDkKKworLi4uCisuLi4KKy4uLgorCithbmQgcmVtb3ZlIHRoZSBjb25maWd1cmF0aW9ucworCiskIHJtZGlyIGNvbmZpZ3MvPGNvbmZpZyBuYW1lPi48bnVtYmVyPgorCitlLmcuOgorCitybWRpciBjb25maWdzL2MuMQorCisuLi4KKy4uLgorLi4uCisKK1JlbW92ZSBmdW5jdGlvbnMgKGZ1bmN0aW9uIG1vZHVsZXMgYXJlIG5vdCB1bmxvYWRlZCwgdGhvdWdoKQorCiskIHJtZGlyIGZ1bmN0aW9ucy88bmFtZT4uPGluc3RhbmNlIG5hbWU+CisKK2UuZy46CisKKyQgcm1kaXIgZnVuY3Rpb25zL25jbS51c2IwCisKKy4uLgorLi4uCisuLi4KKworUmVtb3ZlIHN0cmluZ3MgZGlyZWN0b3JpZXMgaW4gdGhlIGdhZGdldAorCiskIHJtZGlyIHN0cmluZ3MvPGxhbmc+CisKK2UuZy46CisKKyQgcm1kaXIgc3RyaW5ncy8weDQwOQorCithbmQgZmluYWxseSByZW1vdmUgdGhlIGdhZGdldDoKKworJCBjZCAuLgorJCBybWRpciA8Z2FkZ2V0IG5hbWU+CisKK2UuZy46CisKKyQgcm1kaXIgZzEKKworCisKKworSW1wbGVtZW50YXRpb24gZGVzaWduCis9PT09PT09PT09PT09PT09PT09PT0KKworQmVsb3cgdGhlIGlkZWEgb2YgaG93IGNvbmZpZ2ZzIHdvcmtzIGlzIHByZXNlbnRlZC4KK0luIGNvbmZpZ2ZzIHRoZXJlIGFyZSBpdGVtcyBhbmQgZ3JvdXBzLCBib3RoIHJlcHJlc2VudGVkIGFzIGRpcmVjdG9yaWVzLgorVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhbiBpdGVtIGFuZCBhIGdyb3VwIGlzIHRoYXQgYSBncm91cCBjYW4gY29udGFpbgorb3RoZXIgZ3JvdXBzLiBJbiB0aGUgcGljdHVyZSBiZWxvdyBvbmx5IGFuIGl0ZW0gaXMgc2hvd24uCitCb3RoIGl0ZW1zIGFuZCBncm91cHMgY2FuIGhhdmUgYXR0cmlidXRlcywgd2hpY2ggYXJlIHJlcHJlc2VudGVkIGFzIGZpbGVzLgorVGhlIHVzZXIgY2FuIGNyZWF0ZSBhbmQgcmVtb3ZlIGRpcmVjdG9yaWVzLCBidXQgY2Fubm90IHJlbW92ZSBmaWxlcywKK3doaWNoIGNhbiBiZSByZWFkLW9ubHkgb3IgcmVhZC13cml0ZSwgZGVwZW5kaW5nIG9uIHdoYXQgdGhleSByZXByZXNlbnQuCisKK1RoZSBmaWxlc3lzdGVtIHBhcnQgb2YgY29uZmlnZnMgb3BlcmF0ZXMgb24gY29uZmlnX2l0ZW1zL2dyb3VwcyBhbmQKK2NvbmZpZ2ZzX2F0dHJpYnV0ZXMgd2hpY2ggYXJlIGdlbmVyaWMgYW5kIG9mIHRoZSBzYW1lIHR5cGUgZm9yIGFsbAorY29uZmlndXJlZCBlbGVtZW50cy4gSG93ZXZlciwgdGhleSBhcmUgZW1iZWRkZWQgaW4gdXNhZ2Utc3BlY2lmaWMKK2xhcmdlciBzdHJ1Y3R1cmVzLiBJbiB0aGUgcGljdHVyZSBiZWxvdyB0aGVyZSBpcyBhICJjcyIgd2hpY2ggY29udGFpbnMKK2EgY29uZmlnX2l0ZW0gYW5kIGFuICJzYSIgd2hpY2ggY29udGFpbnMgYSBjb25maWdmc19hdHRyaWJ1dGUuCisKK1RoZSBmaWxlc3lzdGVtIHZpZXcgd291bGQgYmUgbGlrZSB0aGlzOgorCisuLworLi9jcyAgICAgICAgKGRpcmVjdG9yeSkKKyAgIHwKKyAgICstLXNhICAgIChmaWxlKQorICAgfAorICAgLgorICAgLgorICAgLgorCitXaGVuZXZlciBhIHVzZXIgcmVhZHMvd3JpdGVzIHRoZSAic2EiIGZpbGUsIGEgZnVuY3Rpb24gaXMgY2FsbGVkCit3aGljaCBhY2NlcHRzIGEgc3RydWN0IGNvbmZpZ19pdGVtIGFuZCBhIHN0cnVjdCBjb25maWdmc19hdHRyaWJ1dGUuCitJbiB0aGUgc2FpZCBmdW5jdGlvbiB0aGUgImNzIiBhbmQgInNhIiBhcmUgcmV0cmlldmVkIHVzaW5nIHRoZSB3ZWxsCitrbm93biBjb250YWluZXJfb2YgdGVjaG5pcXVlIGFuZCBhbiBhcHByb3ByaWF0ZSBzYSdzIGZ1bmN0aW9uIChzaG93IG9yCitzdG9yZSkgaXMgY2FsbGVkIGFuZCBwYXNzZWQgdGhlICJjcyIgYW5kIGEgY2hhcmFjdGVyIGJ1ZmZlci4gVGhlICJzaG93IgoraXMgZm9yIGRpc3BsYXlpbmcgdGhlIGZpbGUncyBjb250ZW50cyAoY29weSBkYXRhIGZyb20gdGhlIGNzIHRvIHRoZQorYnVmZmVyKSwgd2hpbGUgdGhlICJzdG9yZSIgaXMgZm9yIG1vZGlmeWluZyB0aGUgZmlsZSdzIGNvbnRlbnRzIChjb3B5IGRhdGEKK2Zyb20gdGhlIGJ1ZmZlciB0byB0aGUgY3MpLCBidXQgaXQgaXMgdXAgdG8gdGhlIGltcGxlbWVudGVyIG9mIHRoZQordHdvIGZ1bmN0aW9ucyB0byBkZWNpZGUgd2hhdCB0aGV5IGFjdHVhbGx5IGRvLgorCit0eXBlZGVmIHN0cnVjdCBjb25maWd1cmVkX3N0cnVjdHVyZSBjczsKK3R5cGVkZWYgc3RydWN0IHNwZWNpZmljX2F0dHJpYnV0ZSBzYTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2EKKyAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgIGNzICAgICAgICAgICAgIHwgICgqc2hvdykoY3MgKiwgYnVmZmVyKTsgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tKyAgICB8ICAoKnN0b3JlKShjcyAqLCBidWZmZXIsIGxlbmd0aCk7IHwKK3wgICAgICAgICAgICAgICAgIHwgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICstLS0tLS0tLS0tLS0tKyB8ICAgIHwgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgfAorfCB8IHN0cnVjdCAgICAgIHwtfC0tLS18LS0tLS0tPnxzdHJ1Y3QgICAgICAgICAgICB8ICAgICAgIHwKK3wgfCBjb25maWdfaXRlbSB8IHwgICAgfCAgICAgICB8Y29uZmlnZnNfYXR0cmlidXRlfCAgICAgICB8Cit8ICstLS0tLS0tLS0tLS0tKyB8ICAgIHwgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgfAorfCAgICAgICAgICAgICAgICAgfCAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgZGF0YSB0byBiZSBzZXQgIHwgICAgICAgICAgICAgICAgLgorfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAuCisrLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgIC4KKworVGhlIGZpbGUgbmFtZXMgYXJlIGRlY2lkZWQgYnkgdGhlIGNvbmZpZyBpdGVtL2dyb3VwIGRlc2lnbmVyLCB3aGlsZQordGhlIGRpcmVjdG9yaWVzIGluIGdlbmVyYWwgY2FuIGJlIG5hbWVkIGF0IHdpbGwuIEEgZ3JvdXAgY2FuIGhhdmUKK2EgbnVtYmVyIG9mIGl0cyBkZWZhdWx0IHN1Yi1ncm91cHMgY3JlYXRlZCBhdXRvbWF0aWNhbGx5LgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb25maWdmcyBwbGVhc2Ugc2VlCitEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NvbmZpZ2ZzLyouCisKK1RoZSBjb25jZXB0cyBkZXNjcmliZWQgYWJvdmUgdHJhbnNsYXRlIHRvIFVTQiBnYWRnZXRzIGxpa2UgdGhpczoKKworMS4gQSBnYWRnZXQgaGFzIGl0cyBjb25maWcgZ3JvdXAsIHdoaWNoIGhhcyBzb21lIGF0dHJpYnV0ZXMgKGlkVmVuZG9yLAoraWRQcm9kdWN0IGV0YykgYW5kIGRlZmF1bHQgc3ViLWdyb3VwcyAoY29uZmlncywgZnVuY3Rpb25zLCBzdHJpbmdzKS4KK1dyaXRpbmcgdG8gdGhlIGF0dHJpYnV0ZXMgY2F1c2VzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBzdG9yZWQgaW4KK2FwcHJvcHJpYXRlIGxvY2F0aW9ucy4gSW4gdGhlIGNvbmZpZ3MsIGZ1bmN0aW9ucyBhbmQgc3RyaW5ncyBzdWItZ3JvdXBzCithIHVzZXIgY2FuIGNyZWF0ZSB0aGVpciBzdWItZ3JvdXBzIHRvIHJlcHJlc2VudCBjb25maWd1cmF0aW9ucywgZnVuY3Rpb25zLAorYW5kIGdyb3VwcyBvZiBzdHJpbmdzIGluIGEgZ2l2ZW4gbGFuZ3VhZ2UuCisKKzIuIFRoZSB1c2VyIGNyZWF0ZXMgY29uZmlndXJhdGlvbnMgYW5kIGZ1bmN0aW9ucywgaW4gdGhlIGNvbmZpZ3VyYXRpb25zCitjcmVhdGVzIHN5bWJvbGljIGxpbmtzIHRvIGZ1bmN0aW9ucy4gVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIHdoZW4gdGhlCitnYWRnZXQncyBVREMgYXR0cmlidXRlIGlzIHdyaXR0ZW4gdG8sIHdoaWNoIG1lYW5zIGJpbmRpbmcgdGhlIGdhZGdldAordG8gdGhlIFVEQy4gVGhlIGNvZGUgaW4gZHJpdmVycy91c2IvZ2FkZ2V0L2NvbmZpZ2ZzLmMgaXRlcmF0ZXMgb3ZlcgorYWxsIGNvbmZpZ3VyYXRpb25zLCBhbmQgaW4gZWFjaCBjb25maWd1cmF0aW9uIGl0IGl0ZXJhdGVzIG92ZXIgYWxsCitmdW5jdGlvbnMgYW5kIGJpbmRzIHRoZW0uIFRoaXMgd2F5IHRoZSB3aG9sZSBnYWRnZXQgaXMgYm91bmQuCisKKzMuIFRoZSBmaWxlIGRyaXZlcnMvdXNiL2dhZGdldC9jb25maWdmcy5jIGNvbnRhaW5zIGNvZGUgZm9yCisKKwktIGdhZGdldCdzIGNvbmZpZ19ncm91cAorCS0gZ2FkZ2V0J3MgZGVmYXVsdCBncm91cHMgKGNvbmZpZ3MsIGZ1bmN0aW9ucywgc3RyaW5ncykKKwktIGFzc29jaWF0aW5nIGZ1bmN0aW9ucyB3aXRoIGNvbmZpZ3VyYXRpb25zIChzeW1saW5rcykKKworNC4gRWFjaCBVU0IgZnVuY3Rpb24gbmF0dXJhbGx5IGhhcyBpdHMgb3duIHZpZXcgb2Ygd2hhdCBpdCB3YW50cworY29uZmlndXJlZCwgc28gY29uZmlnX2dyb3VwcyBmb3IgcGFydGljdWxhciBmdW5jdGlvbnMgYXJlIGRlZmluZWQKK2luIHRoZSBmdW5jdGlvbnMgaW1wbGVtZW50YXRpb24gZmlsZXMgZHJpdmVycy91c2IvZ2FkZ2V0L2ZfKi5jLgorCis1LiBGdW5jdGlvbidzIGNvZGUgaXMgd3JpdHRlbiBpbiBzdWNoIGEgd2F5IHRoYXQgaXQgdXNlcworCit1c2JfZ2V0X2Z1bmN0aW9uX2luc3RhbmNlKCksIHdoaWNoLCBpbiB0dXJuLCBjYWxscyByZXF1ZXN0X21vZHVsZS4KK1NvLCBwcm92aWRlZCB0aGF0IG1vZHByb2JlIHdvcmtzLCBtb2R1bGVzIGZvciBwYXJ0aWN1bGFyIGZ1bmN0aW9ucworYXJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5LiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBjb252ZXJzZSBpcyBub3QgdHJ1ZToKK2FmdGVyIGEgZ2FkZ2V0IGlzIGRpc2FibGVkIGFuZCB0b3JuIGRvd24sIHRoZSBtb2R1bGVzIHJlbWFpbiBsb2FkZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfaGlkLnR4dCBiL0RvY3VtZW50YXRpb24vdXNiL2dhZGdldF9oaWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMGZiOGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfaGlkLnR4dApAQCAtMCwwICsxLDQ1MiBAQAorCisJCSAgICAgTGludXggVVNCIEhJRCBnYWRnZXQgZHJpdmVyCisKK0ludHJvZHVjdGlvbgorCisJVGhlIEhJRCBHYWRnZXQgZHJpdmVyIHByb3ZpZGVzIGVtdWxhdGlvbiBvZiBVU0IgSHVtYW4gSW50ZXJmYWNlCisJRGV2aWNlcyAoSElEKS4gVGhlIGJhc2ljIEhJRCBoYW5kbGluZyBpcyBkb25lIGluIHRoZSBrZXJuZWwsCisJYW5kIEhJRCByZXBvcnRzIGNhbiBiZSBzZW50L3JlY2VpdmVkIHRocm91Z2ggSS9PIG9uIHRoZQorCS9kZXYvaGlkZ1ggY2hhcmFjdGVyIGRldmljZXMuCisKKwlGb3IgbW9yZSBkZXRhaWxzIGFib3V0IEhJRCwgc2VlIHRoZSBkZXZlbG9wZXIgcGFnZSBvbgorCWh0dHA6Ly93d3cudXNiLm9yZy9kZXZlbG9wZXJzL2hpZHBhZ2UvCisKK0NvbmZpZ3VyYXRpb24KKworCWdfaGlkIGlzIGEgcGxhdGZvcm0gZHJpdmVyLCBzbyB0byB1c2UgaXQgeW91IG5lZWQgdG8gYWRkCisJc3RydWN0IHBsYXRmb3JtX2RldmljZShzKSB0byB5b3VyIHBsYXRmb3JtIGNvZGUgZGVmaW5pbmcgdGhlCisJSElEIGZ1bmN0aW9uIGRlc2NyaXB0b3JzIHlvdSB3YW50IHRvIHVzZSAtIEUuRy4gc29tZXRoaW5nCisJbGlrZToKKworI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3VzYi9nX2hpZC5oPgorCisvKiBoaWQgZGVzY3JpcHRvciBmb3IgYSBrZXlib2FyZCAqLworc3RhdGljIHN0cnVjdCBoaWRnX2Z1bmNfZGVzY3JpcHRvciBteV9oaWRfZGF0YSA9IHsKKwkuc3ViY2xhc3MJCT0gMCwgLyogTm8gc3ViY2xhc3MgKi8KKwkucHJvdG9jb2wJCT0gMSwgLyogS2V5Ym9hcmQgKi8KKwkucmVwb3J0X2xlbmd0aAkJPSA4LAorCS5yZXBvcnRfZGVzY19sZW5ndGgJPSA2MywKKwkucmVwb3J0X2Rlc2MJCT0geworCQkweDA1LCAweDAxLAkvKiBVU0FHRV9QQUdFIChHZW5lcmljIERlc2t0b3ApCSAgICAgICAgICAqLworCQkweDA5LCAweDA2LAkvKiBVU0FHRSAoS2V5Ym9hcmQpICAgICAgICAgICAgICAgICAgICAgICAqLworCQkweGExLCAweDAxLAkvKiBDT0xMRUNUSU9OIChBcHBsaWNhdGlvbikgICAgICAgICAgICAgICAqLworCQkweDA1LCAweDA3LAkvKiAgIFVTQUdFX1BBR0UgKEtleWJvYXJkKSAgICAgICAgICAgICAgICAqLworCQkweDE5LCAweGUwLAkvKiAgIFVTQUdFX01JTklNVU0gKEtleWJvYXJkIExlZnRDb250cm9sKSAqLworCQkweDI5LCAweGU3LAkvKiAgIFVTQUdFX01BWElNVU0gKEtleWJvYXJkIFJpZ2h0IEdVSSkgICAqLworCQkweDE1LCAweDAwLAkvKiAgIExPR0lDQUxfTUlOSU1VTSAoMCkgICAgICAgICAgICAgICAgICAqLworCQkweDI1LCAweDAxLAkvKiAgIExPR0lDQUxfTUFYSU1VTSAoMSkgICAgICAgICAgICAgICAgICAqLworCQkweDc1LCAweDAxLAkvKiAgIFJFUE9SVF9TSVpFICgxKSAgICAgICAgICAgICAgICAgICAgICAqLworCQkweDk1LCAweDA4LAkvKiAgIFJFUE9SVF9DT1VOVCAoOCkgICAgICAgICAgICAgICAgICAgICAqLworCQkweDgxLCAweDAyLAkvKiAgIElOUFVUIChEYXRhLFZhcixBYnMpICAgICAgICAgICAgICAgICAqLworCQkweDk1LCAweDAxLAkvKiAgIFJFUE9SVF9DT1VOVCAoMSkgICAgICAgICAgICAgICAgICAgICAqLworCQkweDc1LCAweDA4LAkvKiAgIFJFUE9SVF9TSVpFICg4KSAgICAgICAgICAgICAgICAgICAgICAqLworCQkweDgxLCAweDAzLAkvKiAgIElOUFVUIChDbnN0LFZhcixBYnMpICAgICAgICAgICAgICAgICAqLworCQkweDk1LCAweDA1LAkvKiAgIFJFUE9SVF9DT1VOVCAoNSkgICAgICAgICAgICAgICAgICAgICAqLworCQkweDc1LCAweDAxLAkvKiAgIFJFUE9SVF9TSVpFICgxKSAgICAgICAgICAgICAgICAgICAgICAqLworCQkweDA1LCAweDA4LAkvKiAgIFVTQUdFX1BBR0UgKExFRHMpICAgICAgICAgICAgICAgICAgICAqLworCQkweDE5LCAweDAxLAkvKiAgIFVTQUdFX01JTklNVU0gKE51bSBMb2NrKSAgICAgICAgICAgICAqLworCQkweDI5LCAweDA1LAkvKiAgIFVTQUdFX01BWElNVU0gKEthbmEpICAgICAgICAgICAgICAgICAqLworCQkweDkxLCAweDAyLAkvKiAgIE9VVFBVVCAoRGF0YSxWYXIsQWJzKSAgICAgICAgICAgICAgICAqLworCQkweDk1LCAweDAxLAkvKiAgIFJFUE9SVF9DT1VOVCAoMSkgICAgICAgICAgICAgICAgICAgICAqLworCQkweDc1LCAweDAzLAkvKiAgIFJFUE9SVF9TSVpFICgzKSAgICAgICAgICAgICAgICAgICAgICAqLworCQkweDkxLCAweDAzLAkvKiAgIE9VVFBVVCAoQ25zdCxWYXIsQWJzKSAgICAgICAgICAgICAgICAqLworCQkweDk1LCAweDA2LAkvKiAgIFJFUE9SVF9DT1VOVCAoNikgICAgICAgICAgICAgICAgICAgICAqLworCQkweDc1LCAweDA4LAkvKiAgIFJFUE9SVF9TSVpFICg4KSAgICAgICAgICAgICAgICAgICAgICAqLworCQkweDE1LCAweDAwLAkvKiAgIExPR0lDQUxfTUlOSU1VTSAoMCkgICAgICAgICAgICAgICAgICAqLworCQkweDI1LCAweDY1LAkvKiAgIExPR0lDQUxfTUFYSU1VTSAoMTAxKSAgICAgICAgICAgICAgICAqLworCQkweDA1LCAweDA3LAkvKiAgIFVTQUdFX1BBR0UgKEtleWJvYXJkKSAgICAgICAgICAgICAgICAqLworCQkweDE5LCAweDAwLAkvKiAgIFVTQUdFX01JTklNVU0gKFJlc2VydmVkKSAgICAgICAgICAgICAqLworCQkweDI5LCAweDY1LAkvKiAgIFVTQUdFX01BWElNVU0gKEtleWJvYXJkIEFwcGxpY2F0aW9uKSAqLworCQkweDgxLCAweDAwLAkvKiAgIElOUFVUIChEYXRhLEFyeSxBYnMpICAgICAgICAgICAgICAgICAqLworCQkweGMwCQkvKiBFTkRfQ09MTEVDVElPTiAgICAgICAgICAgICAgICAgICAgICAgICAqLworCX0KK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIG15X2hpZCA9IHsKKwkubmFtZQkJCT0gImhpZGciLAorCS5pZAkJCT0gMCwKKwkubnVtX3Jlc291cmNlcwkJPSAwLAorCS5yZXNvdXJjZQkJPSAwLAorCS5kZXYucGxhdGZvcm1fZGF0YQk9ICZteV9oaWRfZGF0YSwKK307CisKKwlZb3UgY2FuIGFkZCBhcyBtYW55IEhJRCBmdW5jdGlvbnMgYXMgeW91IHdhbnQsIG9ubHkgbGltaXRlZCBieQorCXRoZSBhbW91bnQgb2YgaW50ZXJydXB0IGVuZHBvaW50cyB5b3VyIGdhZGdldCBkcml2ZXIgc3VwcG9ydHMuCisKK0NvbmZpZ3VyYXRpb24gd2l0aCBjb25maWdmcworCisJSW5zdGVhZCBvZiBhZGRpbmcgZmFrZSBwbGF0Zm9ybSBkZXZpY2VzIGFuZCBkcml2ZXJzIGluIG9yZGVyIHRvIHBhc3MKKwlzb21lIGRhdGEgdG8gdGhlIGtlcm5lbCwgaWYgSElEIGlzIGEgcGFydCBvZiBhIGdhZGdldCBjb21wb3NlZCB3aXRoCisJY29uZmlnZnMgdGhlIGhpZGdfZnVuY19kZXNjcmlwdG9yLnJlcG9ydF9kZXNjIGlzIHBhc3NlZCB0byB0aGUga2VybmVsCisJYnkgd3JpdGluZyB0aGUgYXBwcm9wcmlhdGUgc3RyZWFtIG9mIGJ5dGVzIHRvIGEgY29uZmlnZnMgYXR0cmlidXRlLgorCitTZW5kIGFuZCByZWNlaXZlIEhJRCByZXBvcnRzCisKKwlISUQgcmVwb3J0cyBjYW4gYmUgc2VudC9yZWNlaXZlZCB1c2luZyByZWFkL3dyaXRlIG9uIHRoZQorCS9kZXYvaGlkZ1ggY2hhcmFjdGVyIGRldmljZXMuIFNlZSBiZWxvdyBmb3IgYW4gZXhhbXBsZSBwcm9ncmFtCisJdG8gZG8gdGhpcy4KKworCWhpZF9nYWRnZXRfdGVzdCBpcyBhIHNtYWxsIGludGVyYWN0aXZlIHByb2dyYW0gdG8gdGVzdCB0aGUgSElECisJZ2FkZ2V0IGRyaXZlci4gVG8gdXNlLCBwb2ludCBpdCBhdCBhIGhpZGcgZGV2aWNlIGFuZCBzZXQgdGhlCisJZGV2aWNlIHR5cGUgKGtleWJvYXJkIC8gbW91c2UgLyBqb3lzdGljaykgLSBFLkcuOgorCisJCSMgaGlkX2dhZGdldF90ZXN0IC9kZXYvaGlkZzAga2V5Ym9hcmQKKworCVlvdSBhcmUgbm93IGluIHRoZSBwcm9tcHQgb2YgaGlkX2dhZGdldF90ZXN0LiBZb3UgY2FuIHR5cGUgYW55CisJY29tYmluYXRpb24gb2Ygb3B0aW9ucyBhbmQgdmFsdWVzLiBBdmFpbGFibGUgb3B0aW9ucyBhbmQKKwl2YWx1ZXMgYXJlIGxpc3RlZCBhdCBwcm9ncmFtIHN0YXJ0LiBJbiBrZXlib2FyZCBtb2RlIHlvdSBjYW4KKwlzZW5kIHVwIHRvIHNpeCB2YWx1ZXMuCisKKwlGb3IgZXhhbXBsZSB0eXBlOiBnIGkgcyB0IHIgLS1sZWZ0LXNoaWZ0CisKKwlIaXQgcmV0dXJuIGFuZCB0aGUgY29ycmVzcG9uZGluZyByZXBvcnQgd2lsbCBiZSBzZW50IGJ5IHRoZQorCUhJRCBnYWRnZXQuCisKKwlBbm90aGVyIGludGVyZXN0aW5nIGV4YW1wbGUgaXMgdGhlIGNhcHMgbG9jayB0ZXN0LiBUeXBlCisJLS1jYXBzLWxvY2sgYW5kIGhpdCByZXR1cm4uIEEgcmVwb3J0IGlzIHRoZW4gc2VudCBieSB0aGUKKwlnYWRnZXQgYW5kIHlvdSBzaG91bGQgcmVjZWl2ZSB0aGUgaG9zdCBhbnN3ZXIsIGNvcnJlc3BvbmRpbmcKKwl0byB0aGUgY2FwcyBsb2NrIExFRCBzdGF0dXMuCisKKwkJLS1jYXBzLWxvY2sKKwkJcmVjdiByZXBvcnQ6MgorCisJV2l0aCB0aGlzIGNvbW1hbmQ6CisKKwkJIyBoaWRfZ2FkZ2V0X3Rlc3QgL2Rldi9oaWRnMSBtb3VzZQorCisJWW91IGNhbiB0ZXN0IHRoZSBtb3VzZSBlbXVsYXRpb24uIFZhbHVlcyBhcmUgdHdvIHNpZ25lZCBudW1iZXJzLgorCisKK1NhbXBsZSBjb2RlCisKKy8qIGhpZF9nYWRnZXRfdGVzdCAqLworCisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworI2RlZmluZSBCVUZfTEVOIDUxMgorCitzdHJ1Y3Qgb3B0aW9ucyB7CisJY29uc3QgY2hhciAgICAqb3B0OworCXVuc2lnbmVkIGNoYXIgdmFsOworfTsKKworc3RhdGljIHN0cnVjdCBvcHRpb25zIGttb2RbXSA9IHsKKwl7Lm9wdCA9ICItLWxlZnQtY3RybCIsCQkudmFsID0gMHgwMX0sCisJey5vcHQgPSAiLS1yaWdodC1jdHJsIiwJCS52YWwgPSAweDEwfSwKKwl7Lm9wdCA9ICItLWxlZnQtc2hpZnQiLAkJLnZhbCA9IDB4MDJ9LAorCXsub3B0ID0gIi0tcmlnaHQtc2hpZnQiLAkudmFsID0gMHgyMH0sCisJey5vcHQgPSAiLS1sZWZ0LWFsdCIsCQkudmFsID0gMHgwNH0sCisJey5vcHQgPSAiLS1yaWdodC1hbHQiLAkJLnZhbCA9IDB4NDB9LAorCXsub3B0ID0gIi0tbGVmdC1tZXRhIiwJCS52YWwgPSAweDA4fSwKKwl7Lm9wdCA9ICItLXJpZ2h0LW1ldGEiLAkJLnZhbCA9IDB4ODB9LAorCXsub3B0ID0gTlVMTH0KK307CisKK3N0YXRpYyBzdHJ1Y3Qgb3B0aW9ucyBrdmFsW10gPSB7CisJey5vcHQgPSAiLS1yZXR1cm4iLAkudmFsID0gMHgyOH0sCisJey5vcHQgPSAiLS1lc2MiLAkudmFsID0gMHgyOX0sCisJey5vcHQgPSAiLS1iY2tzcGMiLAkudmFsID0gMHgyYX0sCisJey5vcHQgPSAiLS10YWIiLAkudmFsID0gMHgyYn0sCisJey5vcHQgPSAiLS1zcGFjZWJhciIsCS52YWwgPSAweDJjfSwKKwl7Lm9wdCA9ICItLWNhcHMtbG9jayIsCS52YWwgPSAweDM5fSwKKwl7Lm9wdCA9ICItLWYxIiwJCS52YWwgPSAweDNhfSwKKwl7Lm9wdCA9ICItLWYyIiwJCS52YWwgPSAweDNifSwKKwl7Lm9wdCA9ICItLWYzIiwJCS52YWwgPSAweDNjfSwKKwl7Lm9wdCA9ICItLWY0IiwJCS52YWwgPSAweDNkfSwKKwl7Lm9wdCA9ICItLWY1IiwJCS52YWwgPSAweDNlfSwKKwl7Lm9wdCA9ICItLWY2IiwJCS52YWwgPSAweDNmfSwKKwl7Lm9wdCA9ICItLWY3IiwJCS52YWwgPSAweDQwfSwKKwl7Lm9wdCA9ICItLWY4IiwJCS52YWwgPSAweDQxfSwKKwl7Lm9wdCA9ICItLWY5IiwJCS52YWwgPSAweDQyfSwKKwl7Lm9wdCA9ICItLWYxMCIsCS52YWwgPSAweDQzfSwKKwl7Lm9wdCA9ICItLWYxMSIsCS52YWwgPSAweDQ0fSwKKwl7Lm9wdCA9ICItLWYxMiIsCS52YWwgPSAweDQ1fSwKKwl7Lm9wdCA9ICItLWluc2VydCIsCS52YWwgPSAweDQ5fSwKKwl7Lm9wdCA9ICItLWhvbWUiLAkudmFsID0gMHg0YX0sCisJey5vcHQgPSAiLS1wYWdldXAiLAkudmFsID0gMHg0Yn0sCisJey5vcHQgPSAiLS1kZWwiLAkudmFsID0gMHg0Y30sCisJey5vcHQgPSAiLS1lbmQiLAkudmFsID0gMHg0ZH0sCisJey5vcHQgPSAiLS1wYWdlZG93biIsCS52YWwgPSAweDRlfSwKKwl7Lm9wdCA9ICItLXJpZ2h0IiwJLnZhbCA9IDB4NGZ9LAorCXsub3B0ID0gIi0tbGVmdCIsCS52YWwgPSAweDUwfSwKKwl7Lm9wdCA9ICItLWRvd24iLAkudmFsID0gMHg1MX0sCisJey5vcHQgPSAiLS1rcC1lbnRlciIsCS52YWwgPSAweDU4fSwKKwl7Lm9wdCA9ICItLXVwIiwJCS52YWwgPSAweDUyfSwKKwl7Lm9wdCA9ICItLW51bS1sb2NrIiwJLnZhbCA9IDB4NTN9LAorCXsub3B0ID0gTlVMTH0KK307CisKK2ludCBrZXlib2FyZF9maWxsX3JlcG9ydChjaGFyIHJlcG9ydFs4XSwgY2hhciBidWZbQlVGX0xFTl0sIGludCAqaG9sZCkKK3sKKwljaGFyICp0b2sgPSBzdHJ0b2soYnVmLCAiICIpOworCWludCBrZXkgPSAwOworCWludCBpID0gMDsKKworCWZvciAoOyB0b2sgIT0gTlVMTDsgdG9rID0gc3RydG9rKE5VTEwsICIgIikpIHsKKworCQlpZiAoc3RyY21wKHRvaywgIi0tcXVpdCIpID09IDApCisJCQlyZXR1cm4gLTE7CisKKwkJaWYgKHN0cmNtcCh0b2ssICItLWhvbGQiKSA9PSAwKSB7CisJCQkqaG9sZCA9IDE7CisJCQljb250aW51ZTsKKwkJfQorCisJCWlmIChrZXkgPCA2KSB7CisJCQlmb3IgKGkgPSAwOyBrdmFsW2ldLm9wdCAhPSBOVUxMOyBpKyspCisJCQkJaWYgKHN0cmNtcCh0b2ssIGt2YWxbaV0ub3B0KSA9PSAwKSB7CisJCQkJCXJlcG9ydFsyICsga2V5KytdID0ga3ZhbFtpXS52YWw7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCWlmIChrdmFsW2ldLm9wdCAhPSBOVUxMKQorCQkJCWNvbnRpbnVlOworCQl9CisKKwkJaWYgKGtleSA8IDYpCisJCQlpZiAoaXNsb3dlcih0b2tbMF0pKSB7CisJCQkJcmVwb3J0WzIgKyBrZXkrK10gPSAodG9rWzBdIC0gKCdhJyAtIDB4MDQpKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQlmb3IgKGkgPSAwOyBrbW9kW2ldLm9wdCAhPSBOVUxMOyBpKyspCisJCQlpZiAoc3RyY21wKHRvaywga21vZFtpXS5vcHQpID09IDApIHsKKwkJCQlyZXBvcnRbMF0gPSByZXBvcnRbMF0gfCBrbW9kW2ldLnZhbDsKKwkJCQlicmVhazsKKwkJCX0KKwkJaWYgKGttb2RbaV0ub3B0ICE9IE5VTEwpCisJCQljb250aW51ZTsKKworCQlpZiAoa2V5IDwgNikKKwkJCWZwcmludGYoc3RkZXJyLCAidW5rbm93biBvcHRpb246ICVzXG4iLCB0b2spOworCX0KKwlyZXR1cm4gODsKK30KKworc3RhdGljIHN0cnVjdCBvcHRpb25zIG1tb2RbXSA9IHsKKwl7Lm9wdCA9ICItLWIxIiwgLnZhbCA9IDB4MDF9LAorCXsub3B0ID0gIi0tYjIiLCAudmFsID0gMHgwMn0sCisJey5vcHQgPSAiLS1iMyIsIC52YWwgPSAweDA0fSwKKwl7Lm9wdCA9IE5VTEx9Cit9OworCitpbnQgbW91c2VfZmlsbF9yZXBvcnQoY2hhciByZXBvcnRbOF0sIGNoYXIgYnVmW0JVRl9MRU5dLCBpbnQgKmhvbGQpCit7CisJY2hhciAqdG9rID0gc3RydG9rKGJ1ZiwgIiAiKTsKKwlpbnQgbXZ0ID0gMDsKKwlpbnQgaSA9IDA7CisJZm9yICg7IHRvayAhPSBOVUxMOyB0b2sgPSBzdHJ0b2soTlVMTCwgIiAiKSkgeworCisJCWlmIChzdHJjbXAodG9rLCAiLS1xdWl0IikgPT0gMCkKKwkJCXJldHVybiAtMTsKKworCQlpZiAoc3RyY21wKHRvaywgIi0taG9sZCIpID09IDApIHsKKwkJCSpob2xkID0gMTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJZm9yIChpID0gMDsgbW1vZFtpXS5vcHQgIT0gTlVMTDsgaSsrKQorCQkJaWYgKHN0cmNtcCh0b2ssIG1tb2RbaV0ub3B0KSA9PSAwKSB7CisJCQkJcmVwb3J0WzBdID0gcmVwb3J0WzBdIHwgbW1vZFtpXS52YWw7CisJCQkJYnJlYWs7CisJCQl9CisJCWlmIChtbW9kW2ldLm9wdCAhPSBOVUxMKQorCQkJY29udGludWU7CisKKwkJaWYgKCEodG9rWzBdID09ICctJyAmJiB0b2tbMV0gPT0gJy0nKSAmJiBtdnQgPCAyKSB7CisJCQllcnJubyA9IDA7CisJCQlyZXBvcnRbMSArIG12dCsrXSA9IChjaGFyKXN0cnRvbCh0b2ssIE5VTEwsIDApOworCQkJaWYgKGVycm5vICE9IDApIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIkJhZCB2YWx1ZTonJXMnXG4iLCB0b2spOworCQkJCXJlcG9ydFsxICsgbXZ0LS1dID0gMDsKKwkJCX0KKwkJCWNvbnRpbnVlOworCQl9CisKKwkJZnByaW50ZihzdGRlcnIsICJ1bmtub3duIG9wdGlvbjogJXNcbiIsIHRvayk7CisJfQorCXJldHVybiAzOworfQorCitzdGF0aWMgc3RydWN0IG9wdGlvbnMgam1vZFtdID0geworCXsub3B0ID0gIi0tYjEiLAkJLnZhbCA9IDB4MTB9LAorCXsub3B0ID0gIi0tYjIiLAkJLnZhbCA9IDB4MjB9LAorCXsub3B0ID0gIi0tYjMiLAkJLnZhbCA9IDB4NDB9LAorCXsub3B0ID0gIi0tYjQiLAkJLnZhbCA9IDB4ODB9LAorCXsub3B0ID0gIi0taGF0MSIsCS52YWwgPSAweDAwfSwKKwl7Lm9wdCA9ICItLWhhdDIiLAkudmFsID0gMHgwMX0sCisJey5vcHQgPSAiLS1oYXQzIiwJLnZhbCA9IDB4MDJ9LAorCXsub3B0ID0gIi0taGF0NCIsCS52YWwgPSAweDAzfSwKKwl7Lm9wdCA9ICItLWhhdG5ldXRyYWwiLAkudmFsID0gMHgwNH0sCisJey5vcHQgPSBOVUxMfQorfTsKKworaW50IGpveXN0aWNrX2ZpbGxfcmVwb3J0KGNoYXIgcmVwb3J0WzhdLCBjaGFyIGJ1ZltCVUZfTEVOXSwgaW50ICpob2xkKQoreworCWNoYXIgKnRvayA9IHN0cnRvayhidWYsICIgIik7CisJaW50IG12dCA9IDA7CisJaW50IGkgPSAwOworCisJKmhvbGQgPSAxOworCisJLyogc2V0IGRlZmF1bHQgaGF0IHBvc2l0aW9uOiBuZXV0cmFsICovCisJcmVwb3J0WzNdID0gMHgwNDsKKworCWZvciAoOyB0b2sgIT0gTlVMTDsgdG9rID0gc3RydG9rKE5VTEwsICIgIikpIHsKKworCQlpZiAoc3RyY21wKHRvaywgIi0tcXVpdCIpID09IDApCisJCQlyZXR1cm4gLTE7CisKKwkJZm9yIChpID0gMDsgam1vZFtpXS5vcHQgIT0gTlVMTDsgaSsrKQorCQkJaWYgKHN0cmNtcCh0b2ssIGptb2RbaV0ub3B0KSA9PSAwKSB7CisJCQkJcmVwb3J0WzNdID0gKHJlcG9ydFszXSAmIDB4RjApIHwgam1vZFtpXS52YWw7CisJCQkJYnJlYWs7CisJCQl9CisJCWlmIChqbW9kW2ldLm9wdCAhPSBOVUxMKQorCQkJY29udGludWU7CisKKwkJaWYgKCEodG9rWzBdID09ICctJyAmJiB0b2tbMV0gPT0gJy0nKSAmJiBtdnQgPCAzKSB7CisJCQllcnJubyA9IDA7CisJCQlyZXBvcnRbbXZ0KytdID0gKGNoYXIpc3RydG9sKHRvaywgTlVMTCwgMCk7CisJCQlpZiAoZXJybm8gIT0gMCkgeworCQkJCWZwcmludGYoc3RkZXJyLCAiQmFkIHZhbHVlOiclcydcbiIsIHRvayk7CisJCQkJcmVwb3J0W212dC0tXSA9IDA7CisJCQl9CisJCQljb250aW51ZTsKKwkJfQorCisJCWZwcmludGYoc3RkZXJyLCAidW5rbm93biBvcHRpb246ICVzXG4iLCB0b2spOworCX0KKwlyZXR1cm4gNDsKK30KKwordm9pZCBwcmludF9vcHRpb25zKGNoYXIgYykKK3sKKwlpbnQgaSA9IDA7CisKKwlpZiAoYyA9PSAnaycpIHsKKwkJcHJpbnRmKCIJa2V5Ym9hcmQgb3B0aW9uczpcbiIKKwkJICAgICAgICIJCS0taG9sZFxuIik7CisJCWZvciAoaSA9IDA7IGttb2RbaV0ub3B0ICE9IE5VTEw7IGkrKykKKwkJCXByaW50ZigiXHRcdCVzXG4iLCBrbW9kW2ldLm9wdCk7CisJCXByaW50ZigiXG4Ja2V5Ym9hcmQgdmFsdWVzOlxuIgorCQkgICAgICAgIgkJW2Etel0gb3JcbiIpOworCQlmb3IgKGkgPSAwOyBrdmFsW2ldLm9wdCAhPSBOVUxMOyBpKyspCisJCQlwcmludGYoIlx0XHQlLThzJXMiLCBrdmFsW2ldLm9wdCwgaSAlIDIgPyAiXG4iIDogIiIpOworCQlwcmludGYoIlxuIik7CisJfSBlbHNlIGlmIChjID09ICdtJykgeworCQlwcmludGYoIgltb3VzZSBvcHRpb25zOlxuIgorCQkgICAgICAgIgkJLS1ob2xkXG4iKTsKKwkJZm9yIChpID0gMDsgbW1vZFtpXS5vcHQgIT0gTlVMTDsgaSsrKQorCQkJcHJpbnRmKCJcdFx0JXNcbiIsIG1tb2RbaV0ub3B0KTsKKwkJcHJpbnRmKCJcbgltb3VzZSB2YWx1ZXM6XG4iCisJCSAgICAgICAiCQlUd28gc2lnbmVkIG51bWJlcnNcbiIKKwkJICAgICAgICItLXF1aXQgdG8gY2xvc2VcbiIpOworCX0gZWxzZSB7CisJCXByaW50ZigiCWpveXN0aWNrIG9wdGlvbnM6XG4iKTsKKwkJZm9yIChpID0gMDsgam1vZFtpXS5vcHQgIT0gTlVMTDsgaSsrKQorCQkJcHJpbnRmKCJcdFx0JXNcbiIsIGptb2RbaV0ub3B0KTsKKwkJcHJpbnRmKCJcbglqb3lzdGljayB2YWx1ZXM6XG4iCisJCSAgICAgICAiCQl0aHJlZSBzaWduZWQgbnVtYmVyc1xuIgorCQkgICAgICAgIi0tcXVpdCB0byBjbG9zZVxuIik7CisJfQorfQorCitpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQoreworCWNvbnN0IGNoYXIgKmZpbGVuYW1lID0gTlVMTDsKKwlpbnQgZmQgPSAwOworCWNoYXIgYnVmW0JVRl9MRU5dOworCWludCBjbWRfbGVuOworCWNoYXIgcmVwb3J0WzhdOworCWludCB0b19zZW5kID0gODsKKwlpbnQgaG9sZCA9IDA7CisJZmRfc2V0IHJmZHM7CisJaW50IHJldHZhbCwgaTsKKworCWlmIChhcmdjIDwgMykgeworCQlmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiAlcyBkZXZuYW1lIG1vdXNlfGtleWJvYXJkfGpveXN0aWNrXG4iLAorCQkJYXJndlswXSk7CisJCXJldHVybiAxOworCX0KKworCWlmIChhcmd2WzJdWzBdICE9ICdrJyAmJiBhcmd2WzJdWzBdICE9ICdtJyAmJiBhcmd2WzJdWzBdICE9ICdqJykKKwkgIHJldHVybiAyOworCisJZmlsZW5hbWUgPSBhcmd2WzFdOworCisJaWYgKChmZCA9IG9wZW4oZmlsZW5hbWUsIE9fUkRXUiwgMDY2NikpID09IC0xKSB7CisJCXBlcnJvcihmaWxlbmFtZSk7CisJCXJldHVybiAzOworCX0KKworCXByaW50X29wdGlvbnMoYXJndlsyXVswXSk7CisKKwl3aGlsZSAoNDIpIHsKKworCQlGRF9aRVJPKCZyZmRzKTsKKwkJRkRfU0VUKFNURElOX0ZJTEVOTywgJnJmZHMpOworCQlGRF9TRVQoZmQsICZyZmRzKTsKKworCQlyZXR2YWwgPSBzZWxlY3QoZmQgKyAxLCAmcmZkcywgTlVMTCwgTlVMTCwgTlVMTCk7CisJCWlmIChyZXR2YWwgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpCisJCQljb250aW51ZTsKKwkJaWYgKHJldHZhbCA8IDApIHsKKwkJCXBlcnJvcigic2VsZWN0KCkiKTsKKwkJCXJldHVybiA0OworCQl9CisKKwkJaWYgKEZEX0lTU0VUKGZkLCAmcmZkcykpIHsKKwkJCWNtZF9sZW4gPSByZWFkKGZkLCBidWYsIEJVRl9MRU4gLSAxKTsKKwkJCXByaW50ZigicmVjdiByZXBvcnQ6Iik7CisJCQlmb3IgKGkgPSAwOyBpIDwgY21kX2xlbjsgaSsrKQorCQkJCXByaW50ZigiICUwMngiLCBidWZbaV0pOworCQkJcHJpbnRmKCJcbiIpOworCQl9CisKKwkJaWYgKEZEX0lTU0VUKFNURElOX0ZJTEVOTywgJnJmZHMpKSB7CisJCQltZW1zZXQocmVwb3J0LCAweDAsIHNpemVvZihyZXBvcnQpKTsKKwkJCWNtZF9sZW4gPSByZWFkKFNURElOX0ZJTEVOTywgYnVmLCBCVUZfTEVOIC0gMSk7CisKKwkJCWlmIChjbWRfbGVuID09IDApCisJCQkJYnJlYWs7CisKKwkJCWJ1ZltjbWRfbGVuIC0gMV0gPSAnXDAnOworCQkJaG9sZCA9IDA7CisKKwkJCW1lbXNldChyZXBvcnQsIDB4MCwgc2l6ZW9mKHJlcG9ydCkpOworCQkJaWYgKGFyZ3ZbMl1bMF0gPT0gJ2snKQorCQkJCXRvX3NlbmQgPSBrZXlib2FyZF9maWxsX3JlcG9ydChyZXBvcnQsIGJ1ZiwgJmhvbGQpOworCQkJZWxzZSBpZiAoYXJndlsyXVswXSA9PSAnbScpCisJCQkJdG9fc2VuZCA9IG1vdXNlX2ZpbGxfcmVwb3J0KHJlcG9ydCwgYnVmLCAmaG9sZCk7CisJCQllbHNlCisJCQkJdG9fc2VuZCA9IGpveXN0aWNrX2ZpbGxfcmVwb3J0KHJlcG9ydCwgYnVmLCAmaG9sZCk7CisKKwkJCWlmICh0b19zZW5kID09IC0xKQorCQkJCWJyZWFrOworCisJCQlpZiAod3JpdGUoZmQsIHJlcG9ydCwgdG9fc2VuZCkgIT0gdG9fc2VuZCkgeworCQkJCXBlcnJvcihmaWxlbmFtZSk7CisJCQkJcmV0dXJuIDU7CisJCQl9CisJCQlpZiAoIWhvbGQpIHsKKwkJCQltZW1zZXQocmVwb3J0LCAweDAsIHNpemVvZihyZXBvcnQpKTsKKwkJCQlpZiAod3JpdGUoZmQsIHJlcG9ydCwgdG9fc2VuZCkgIT0gdG9fc2VuZCkgeworCQkJCQlwZXJyb3IoZmlsZW5hbWUpOworCQkJCQlyZXR1cm4gNjsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisKKwljbG9zZShmZCk7CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfbXVsdGkudHh0IGIvRG9jdW1lbnRhdGlvbi91c2IvZ2FkZ2V0X211bHRpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDY2YTg2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi91c2IvZ2FkZ2V0X211bHRpLnR4dApAQCAtMCwwICsxLDE1MCBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBvcmcgLSotCisKKyogT3ZlcnZpZXcKKworVGhlIE11bHRpZnVuY3Rpb24gQ29tcG9zaXRlIEdhZGdldCAob3IgZ19tdWx0aSkgaXMgYSBjb21wb3NpdGUgZ2FkZ2V0Cit0aGF0IG1ha2VzIGV4dGVuc2l2ZSB1c2Ugb2YgdGhlIGNvbXBvc2l0ZSBmcmFtZXdvcmsgdG8gcHJvdmlkZQorYS4uLiBtdWx0aWZ1bmN0aW9uIGdhZGdldC4KKworSW4gaXQncyBzdGFuZGFyZCBjb25maWd1cmF0aW9uIGl0IHByb3ZpZGVzIGEgc2luZ2xlIFVTQiBjb25maWd1cmF0aW9uCit3aXRoIFJORElTWzFdICh0aGF0IGlzIEV0aGVybmV0KSwgVVNCIENEQ1syXSBBQ00gKHRoYXQgaXMgc2VyaWFsKSBhbmQKK1VTQiBNYXNzIFN0b3JhZ2UgZnVuY3Rpb25zLgorCitBIENEQyBFQ00gKEV0aGVybmV0KSBmdW5jdGlvbiBtYXkgYmUgdHVybmVkIG9uIHZpYSBhIEtjb25maWcgb3B0aW9uCithbmQgUk5ESVMgY2FuIGJlIHR1cm5lZCBvZmYuICBJZiB0aGV5IGFyZSBib3RoIGVuYWJsZWQgdGhlIGdhZGdldCB3aWxsCitoYXZlIHR3byBjb25maWd1cmF0aW9ucyAtLSBvbmUgd2l0aCBSTkRJUyBhbmQgYW5vdGhlciB3aXRoIENEQyBFQ01bM10uCisKK1BsZWFzZSBub3RlIHRoYXQgaWYgeW91IHVzZSBub24tc3RhbmRhcmQgY29uZmlndXJhdGlvbiAodGhhdCBpcyBlbmFibGUKK0NEQyBFQ00pIHlvdSBtYXkgbmVlZCB0byBjaGFuZ2UgdmVuZG9yIGFuZC9vciBwcm9kdWN0IElELgorCisqIEhvc3QgZHJpdmVycworCitUbyBtYWtlIHVzZSBvZiB0aGUgZ2FkZ2V0IG9uZSBuZWVkcyB0byBtYWtlIGl0IHdvcmsgb24gaG9zdCBzaWRlIC0tCit3aXRob3V0IHRoYXQgdGhlcmUncyBubyBob3BlIG9mIGFjaGlldmluZyBhbnl0aGluZyB3aXRoIHRoZSBnYWRnZXQuCitBcyBvbmUgbWlnaHQgZXhwZWN0LCB0aGluZ3Mgb25lIG5lZWQgdG8gZG8gdmVyeSBmcm9tIHN5c3RlbSB0byBzeXN0ZW0uCisKKyoqIExpbnV4IGhvc3QgZHJpdmVycworCitTaW5jZSB0aGUgZ2FkZ2V0IHVzZXMgc3RhbmRhcmQgY29tcG9zaXRlIGZyYW1ld29yayBhbmQgYXBwZWFycyBhcyBzdWNoCit0byBMaW51eCBob3N0IGl0IGRvZXMgbm90IG5lZWQgYW55IGFkZGl0aW9uYWwgZHJpdmVycyBvbiBMaW51eCBob3N0CitzaWRlLiAgQWxsIHRoZSBmdW5jdGlvbnMgYXJlIGhhbmRsZWQgYnkgcmVzcGVjdGl2ZSBkcml2ZXJzIGRldmVsb3BlZAorZm9yIHRoZW0uCisKK1RoaXMgaXMgYWxzbyB0cnVlIGZvciB0d28gY29uZmlndXJhdGlvbiBzZXQtdXAgd2l0aCBSTkRJUworY29uZmlndXJhdGlvbiBiZWluZyB0aGUgZmlyc3Qgb25lLiAgTGludXggaG9zdCB3aWxsIHVzZSB0aGUgc2Vjb25kCitjb25maWd1cmF0aW9uIHdpdGggQ0RDIEVDTSB3aGljaCBzaG91bGQgd29yayBiZXR0ZXIgdW5kZXIgTGludXguCisKKyoqIFdpbmRvd3MgaG9zdCBkcml2ZXJzCisKK0ZvciB0aGUgZ2FkZ2V0IHR3byB3b3JrIHVuZGVyIFdpbmRvd3MgdHdvIGNvbmRpdGlvbnMgaGF2ZSB0byBiZSBtZXQ6CisKKyoqKiBEZXRlY3RpbmcgYXMgY29tcG9zaXRlIGdhZGdldAorCitGaXJzdCBvZiBhbGwsIFdpbmRvd3MgbmVlZCB0byBkZXRlY3QgdGhlIGdhZGdldCBhcyBhbiBVU0IgY29tcG9zaXRlCitnYWRnZXQgd2hpY2ggb24gaXRzIG93biBoYXZlIHNvbWUgY29uZGl0aW9uc1s0XS4gIElmIHRoZXkgYXJlIG1ldCwKK1dpbmRvd3MgbGV0cyBVU0IgR2VuZXJpYyBQYXJlbnQgRHJpdmVyWzVdIGhhbmRsZSB0aGUgZGV2aWNlIHdoaWNoIHRoZW4KK3RyaWVzIHRvIG11Y2ggZHJpdmVycyBmb3IgZWFjaCBpbmRpdmlkdWFsIGludGVyZmFjZSAoc29ydCBvZiwgZG9uJ3QKK2dldCBpbnRvIHRvbyBtYW55IGRldGFpbHMpLgorCitUaGUgZ29vZCBuZXdzIGlzOiB5b3UgZG8gbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgbW9zdCBvZiB0aGUKK2NvbmRpdGlvbnMhCisKK1RoZSBvbmx5IHRoaW5nIHRvIHdvcnJ5IGlzIHRoYXQgdGhlIGdhZGdldCBoYXMgdG8gaGF2ZSBhIHNpbmdsZQorY29uZmlndXJhdGlvbiBzbyBhIGR1YWwgUk5ESVMgYW5kIENEQyBFQ00gZ2FkZ2V0IHdvbid0IHdvcmsgdW5sZXNzIHlvdQorY3JlYXRlIGEgcHJvcGVyIElORiAtLSBhbmQgb2YgY291cnNlLCBpZiB5b3UgZG8gc3VibWl0IGl0IQorCisqKiogSW5zdGFsbGluZyBkcml2ZXJzIGZvciBlYWNoIGZ1bmN0aW9uCisKK1RoZSBvdGhlciwgdHJpY2tpZXIgdGhpbmcgaXMgbWFraW5nIFdpbmRvd3MgaW5zdGFsbCBkcml2ZXJzIGZvciBlYWNoCitpbmRpdmlkdWFsIGZ1bmN0aW9uLgorCitGb3IgbWFzcyBzdG9yYWdlIGl0IGlzIHRyaXZpYWwgc2luY2UgV2luZG93cyBkZXRlY3QgaXQncyBhbiBpbnRlcmZhY2UKK2ltcGxlbWVudGluZyBVU0IgTWFzcyBTdG9yYWdlIGNsYXNzIGFuZCBzZWxlY3RzIGFwcHJvcHJpYXRlIGRyaXZlci4KKworVGhpbmdzIGFyZSBoYXJkZXIgd2l0aCBSRE5JUyBhbmQgQ0RDIEFDTS4KKworKioqKiBSTkRJUworCitUbyBtYWtlIFdpbmRvd3Mgc2VsZWN0IFJORElTIGRyaXZlcnMgZm9yIHRoZSBmaXJzdCBmdW5jdGlvbiBpbiB0aGUKK2dhZGdldCwgb25lIG5lZWRzIHRvIHVzZSB0aGUgW1tmaWxlOmxpbnV4LmluZl1dIGZpbGUgcHJvdmlkZWQgd2l0aCB0aGlzCitkb2N1bWVudC4gIEl0ICJhdHRhY2hlcyIgV2luZG93J3MgUk5ESVMgZHJpdmVyIHRvIHRoZSBmaXJzdCBpbnRlcmZhY2UKK29mIHRoZSBnYWRnZXQuCisKK1BsZWFzZSBub3RlLCB0aGF0IHdoaWxlIHRlc3Rpbmcgd2UgZW5jb3VudGVyZWQgc29tZSBpc3N1ZXNbNl0gd2hlbgorUk5ESVMgd2FzIG5vdCB0aGUgZmlyc3QgaW50ZXJmYWNlLiAgWW91IGRvIG5vdCBuZWVkIHRvIHdvcnJ5IGFidXQgaXQKK3VubGVzcyB5b3UgYXJlIHRyeWluZyB0byBkZXZlbG9wIHlvdXIgb3duIGdhZGdldCBpbiB3aGljaCBjYXNlIHdhdGNoCitvdXQgZm9yIHRoaXMgYnVnLgorCisqKioqIENEQyBBQ00KKworU2ltaWxhcmx5LCBbW2ZpbGU6bGludXgtY2RjLWFjbS5pbmZdXSBpcyBwcm92aWRlZCBmb3IgQ0RDIEFDTS4KKworKioqKiBDdXN0b21pc2luZyB0aGUgZ2FkZ2V0CisKK0lmIHlvdSBpbnRlbmQgdG8gaGFjayB0aGUgZ19tdWx0aSBnYWRnZXQgYmUgYWR2aXNlZCB0aGF0IHJlYXJyYW5naW5nCitmdW5jdGlvbnMgd2lsbCBvYnZpb3VzbHkgY2hhbmdlIGludGVyZmFjZSBudW1iZXJzIGZvciBlYWNoIG9mIHRoZQorZnVuY3Rpb25hbGl0eS4gIEFzIGFuIGVmZmVjdCBwcm92aWRlZCBJTkZzIHdvbid0IHdvcmsgc2luY2UgdGhleSBoYXZlCitpbnRlcmZhY2UgbnVtYmVycyBoYXJkLWNvZGVkIGluIHRoZW0gKGl0J3Mgbm90IGhhcmQgdG8gY2hhbmdlIHRob3NlCit0aG91Z2hbN10pLgorCitUaGlzIGFsc28gbWVhbnMsIHRoYXQgYWZ0ZXIgZXhwZXJpbWVudGluZyB3aXRoIGdfbXVsdGkgYW5kIGNoYW5naW5nCitwcm92aWRlZCBmdW5jdGlvbnMgb25lIHNob3VsZCBjaGFuZ2UgZ2FkZ2V0J3MgdmVuZG9yIGFuZC9vciBwcm9kdWN0IElECitzbyB0aGVyZSB3aWxsIGJlIG5vIGNvbGxpc2lvbiB3aXRoIG90aGVyIGN1c3RvbWlzZWQgZ2FkZ2V0cyBvciB0aGUKK29yaWdpbmFsIGdhZGdldC4KKworRmFpbGluZyB0byBjb21wbHkgbWF5IGNhdXNlIGJyYWluIGRhbWFnZSBhZnRlciB3b25kZXJpbmcgZm9yIGhvdXJzIHdoeQordGhpbmdzIGRvbid0IHdvcmsgYXMgaW50ZW5kZWQgYmVmb3JlIHJlYWxpc2luZyBXaW5kb3dzIGhhdmUgY2FjaGVkCitzb21lIGRyaXZlcnMgaW5mb3JtYXRpb24gKGNoYW5naW5nIFVTQiBwb3J0IG1heSBzb21ldGltZXMgaGVscCBwbHVzCit5b3UgbWlnaHQgdHJ5IHVzaW5nIFVTQkRldmlld1s4XSB0byByZW1vdmUgdGhlIHBoYW50b20gZGV2aWNlKS4KKworKioqKiBJTkYgdGVzdGluZworCitQcm92aWRlZCBJTkYgZmlsZXMgaGF2ZSBiZWVuIHRlc3RlZCBvbiBXaW5kb3dzIFhQIFNQMywgV2luZG93cyBWaXN0YQorYW5kIFdpbmRvd3MgNywgYWxsIDMyLWJpdCB2ZXJzaW9ucy4gIEl0IHNob3VsZCB3b3JrIG9uIDY0LWJpdCB2ZXJzaW9ucworYXMgd2VsbC4gIEl0IG1vc3QgbGlrZWx5IHdvbid0IHdvcmsgb24gV2luZG93cyBwcmlvciB0byBXaW5kb3dzIFhQCitTUDIuCisKKyoqIE90aGVyIHN5c3RlbXMKKworQXQgdGhpcyBtb21lbnQsIGRyaXZlcnMgZm9yIGFueSBvdGhlciBzeXN0ZW1zIGhhdmUgbm90IGJlZW4gdGVzdGVkLgorS25vd2luZyBob3cgTWFjT1MgaXMgYmFzZWQgb24gQlNEIGFuZCBCU0QgaXMgYW4gT3BlbiBTb3VyY2UgaXQgaXMKK2JlbGlldmVkIHRoYXQgaXQgc2hvdWxkIChyZWFkOiAiSSBoYXZlIG5vIGlkZWEgd2hldGhlciBpdCB3aWxsIikgd29yaworb3V0LW9mLXRoZS1ib3guCisKK0ZvciBtb3JlIGV4b3RpYyBzeXN0ZW1zIEkgaGF2ZSBldmVuIGxlc3MgdG8gc2F5Li4uCisKK0FueSB0ZXN0aW5nIGFuZCBkcml2ZXJzICphcmUqICp3ZWxjb21lKiEKKworKiBBdXRob3JzCisKK1RoaXMgZG9jdW1lbnQgaGFzIGJlZW4gd3JpdHRlbiBieSBNaWNoYWwgTmF6YXJld2ljegorKFtbbWFpbHRvOm1pbmE4NkBtaW5hODYuY29tXV0pLiAgSU5GIGZpbGVzIGhhdmUgYmVlbiBoYWNrZWQgd2l0aAorc3VwcG9ydCBvZiBNYXJlayBTenlwcm93c2tpIChbW21haWx0bzptLnN6eXByb3dza2lAc2Ftc3VuZy5jb21dXSkgYW5kCitYaWFvZmFuIENoZW4gKFtbbWFpbHRvOnhpYW9mYW5jQGdtYWlsLmNvbV1dKSBiYXNpbmcgb24gdGhlIE1TIFJORElTCit0ZW1wbGF0ZVs5XSwgTWljcm9jaGlwJ3MgQ0RDIEFDTSBJTkYgZmlsZSBhbmQgRGF2aWQgQnJvd25lbGwncworKFtbbWFpbHRvOmRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXRdXSkgb3JpZ2luYWwgSU5GIGZpbGVzLgorCisqIEZvb3Rub3RlcworCitbMV0gUmVtb3RlIE5ldHdvcmsgRHJpdmVyIEludGVyZmFjZSBTcGVjaWZpY2F0aW9uLAorW1todHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvZWU0ODQ0MTQuYXNweF1dLgorCitbMl0gQ29tbXVuaWNhdGlvbnMgRGV2aWNlIENsYXNzIEFic3RyYWN0IENvbnRyb2wgTW9kZWwsIHNwZWMgZm9yIHRoaXMKK2FuZCBvdGhlciBVU0IgY2xhc3NlcyBjYW4gYmUgZm91bmQgYXQKK1tbaHR0cDovL3d3dy51c2Iub3JnL2RldmVsb3BlcnMvZGV2Y2xhc3NfZG9jcy9dXS4KKworWzNdIENEQyBFdGhlcm5ldCBDb250cm9sIE1vZGVsLgorCitbNF0gW1todHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvZmY1MzcxMDkodj1WUy44NSkuYXNweF1dCisKK1s1XSBbW2h0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9mZjUzOTIzNCh2PVZTLjg1KS5hc3B4XV0KKworWzZdIFRvIHB1dCBpdCBpbiBzb21lIG90aGVyIG5pY2Ugd29yZHMsIFdpbmRvd3MgZmFpbGVkIHRvIHJlc3BvbmQgdG8KK2FueSB1c2VyIGlucHV0LgorCitbN10gWW91IG1heSBmaW5kIFtbaHR0cDovL3d3dy5jeWduYWwub3JnL3ViYi9Gb3J1bTkvSFRNTC8wMDEwNTAuaHRtbF1dCit1c2VmdWwuCisKK1s4XSBodHRwOi8vd3d3Lm5pcnNvZnQubmV0L3V0aWxzL3VzYl9kZXZpY2VzX3ZpZXcuaHRtbAorCitbOV0gW1todHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvZmY1NzA2MjAuYXNweF1dCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfcHJpbnRlci50eHQgYi9Eb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfcHJpbnRlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ5OTViZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdXNiL2dhZGdldF9wcmludGVyLnR4dApAQCAtMCwwICsxLDUxMCBAQAorCisgICAgICAgICAgICAgICAgICAgICAgIExpbnV4IFVTQiBQcmludGVyIEdhZGdldCBEcml2ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA2LzA0LzIwMDcKKworICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMDcgQ3JhaWcgVy4gTmFkbGVyIDxjcmFpZ0BuYWRsZXIudXM+CisKKworCitHRU5FUkFMCis9PT09PT09CisKK1RoaXMgZHJpdmVyIG1heSBiZSB1c2VkIGlmIHlvdSBhcmUgd3JpdGluZyBwcmludGVyIGZpcm13YXJlIHVzaW5nIExpbnV4IGFzCit0aGUgZW1iZWRkZWQgT1MuIFRoaXMgZHJpdmVyIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggdXNpbmcgYSBwcmludGVyIHdpdGgKK3lvdXIgTGludXggaG9zdCBzeXN0ZW0uCisKK1lvdSB3aWxsIG5lZWQgYSBVU0IgZGV2aWNlIGNvbnRyb2xsZXIgYW5kIGEgTGludXggZHJpdmVyIGZvciBpdCB0aGF0IGFjY2VwdHMKK2EgZ2FkZ2V0IC8gImRldmljZSBjbGFzcyIgZHJpdmVyIHVzaW5nIHRoZSBMaW51eCBVU0IgR2FkZ2V0IEFQSS4gQWZ0ZXIgdGhlCitVU0IgZGV2aWNlIGNvbnRyb2xsZXIgZHJpdmVyIGlzIGxvYWRlZCB0aGVuIGxvYWQgdGhlIHByaW50ZXIgZ2FkZ2V0IGRyaXZlci4KK1RoaXMgd2lsbCBwcmVzZW50IGEgcHJpbnRlciBpbnRlcmZhY2UgdG8gdGhlIFVTQiBIb3N0IHRoYXQgeW91ciBVU0IgRGV2aWNlCitwb3J0IGlzIGNvbm5lY3RlZCB0by4KKworVGhpcyBkcml2ZXIgaXMgc3RydWN0dXJlZCBmb3IgcHJpbnRlciBmaXJtd2FyZSB0aGF0IHJ1bnMgaW4gdXNlciBtb2RlLiBUaGUKK3VzZXIgbW9kZSBwcmludGVyIGZpcm13YXJlIHdpbGwgcmVhZCBhbmQgd3JpdGUgZGF0YSBmcm9tIHRoZSBrZXJuZWwgbW9kZQorcHJpbnRlciBnYWRnZXQgZHJpdmVyIHVzaW5nIGEgZGV2aWNlIGZpbGUuIFRoZSBwcmludGVyIHJldHVybnMgYSBwcmludGVyIHN0YXR1cworYnl0ZSB3aGVuIHRoZSBVU0IgSE9TVCBzZW5kcyBhIGRldmljZSByZXF1ZXN0IHRvIGdldCB0aGUgcHJpbnRlciBzdGF0dXMuICBUaGUKK3VzZXIgc3BhY2UgZmlybXdhcmUgY2FuIHJlYWQgb3Igd3JpdGUgdGhpcyBzdGF0dXMgYnl0ZSB1c2luZyBhIGRldmljZSBmaWxlCisvZGV2L2dfcHJpbnRlciAuIEJvdGggYmxvY2tpbmcgYW5kIG5vbi1ibG9ja2luZyByZWFkL3dyaXRlIGNhbGxzIGFyZSBzdXBwb3J0ZWQuCisKKworCisKK0hPV1RPIFVTRSBUSElTIERSSVZFUgorPT09PT09PT09PT09PT09PT09PT09CisKK1RvIGxvYWQgdGhlIFVTQiBkZXZpY2UgY29udHJvbGxlciBkcml2ZXIgYW5kIHRoZSBwcmludGVyIGdhZGdldCBkcml2ZXIuIFRoZQorZm9sbG93aW5nIGV4YW1wbGUgdXNlcyB0aGUgTmV0Y2hpcCAyMjgwIFVTQiBkZXZpY2UgY29udHJvbGxlciBkcml2ZXI6CisKK21vZHByb2JlIG5ldDIyODAKK21vZHByb2JlIGdfcHJpbnRlcgorCisKK1RoZSBmb2xsb3cgY29tbWFuZCBsaW5lIHBhcmFtZXRlciBjYW4gYmUgdXNlZCB3aGVuIGxvYWRpbmcgdGhlIHByaW50ZXIgZ2FkZ2V0CisoZXg6IG1vZHByb2JlIGdfcHJpbnRlciBpZFZlbmRvcj0weDA1MjUgaWRQcm9kdWN0PTB4YTRhOCApOgorCitpZFZlbmRvciAtIFRoaXMgaXMgdGhlIFZlbmRvciBJRCB1c2VkIGluIHRoZSBkZXZpY2UgZGVzY3JpcHRvci4gVGhlIGRlZmF1bHQgaXMKKwl0aGUgTmV0Y2hpcCB2ZW5kb3IgaWQgMHgwNTI1LiBZT1UgTVVTVCBDSEFOR0UgVE8gWU9VUiBPV04gVkVORE9SIElECisJQkVGT1JFIFJFTEVBU0lORyBBIFBST0RVQ1QuIElmIHlvdSBwbGFuIHRvIHJlbGVhc2UgYSBwcm9kdWN0IGFuZCBkb24ndAorCWFscmVhZHkgaGF2ZSBhIFZlbmRvciBJRCBwbGVhc2Ugc2VlIHd3dy51c2Iub3JnIGZvciBkZXRhaWxzIG9uIGhvdyB0bworCWdldCBvbmUuCisKK2lkUHJvZHVjdCAtIFRoaXMgaXMgdGhlIFByb2R1Y3QgSUQgdXNlZCBpbiB0aGUgZGV2aWNlIGRlc2NyaXB0b3IuIFRoZSBkZWZhdWx0CisJaXMgMHhhNGE4LCB5b3Ugc2hvdWxkIGNoYW5nZSB0aGlzIHRvIGFuIElEIHRoYXQncyBub3QgdXNlZCBieSBhbnkgb2YKKwl5b3VyIG90aGVyIFVTQiBwcm9kdWN0cyBpZiB5b3UgaGF2ZSBhbnkuIEl0IHdvdWxkIGJlIGEgZ29vZCBpZGVhIHRvCisJc3RhcnQgbnVtYmVyaW5nIHlvdXIgcHJvZHVjdHMgc3RhcnRpbmcgd2l0aCBzYXkgMHgwMDAxLgorCitiY2REZXZpY2UgLSBUaGlzIGlzIHRoZSB2ZXJzaW9uIG51bWJlciBvZiB5b3VyIHByb2R1Y3QuIEl0IHdvdWxkIGJlIGEgZ29vZCBpZGVhCisJdG8gcHV0IHlvdXIgZmlybXdhcmUgdmVyc2lvbiBoZXJlLgorCitpTWFudWZhY3R1cmVyIC0gQSBzdHJpbmcgY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUgVmVuZG9yLgorCitpUHJvZHVjdCAtIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIFByb2R1Y3QgTmFtZS4KKworaVNlcmlhbE51bSAtIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIFNlcmlhbCBOdW1iZXIuIFRoaXMgc2hvdWxkIGJlIGNoYW5nZWQgZm9yCisJZWFjaCB1bml0IG9mIHlvdXIgcHJvZHVjdC4KKworaVBOUHN0cmluZyAtICBUaGUgUE5QIElEIHN0cmluZyB1c2VkIGZvciB0aGlzIHByaW50ZXIuIFlvdSB3aWxsIHdhbnQgdG8gc2V0CisJZWl0aGVyIG9uIHRoZSBjb21tYW5kIGxpbmUgb3IgaGFyZCBjb2RlIHRoZSBQTlAgSUQgc3RyaW5nIHVzZWQgZm9yCisJeW91ciBwcmludGVyIHByb2R1Y3QuCisKK3FsZW4gLSBUaGUgbnVtYmVyIG9mIDhrIGJ1ZmZlcnMgdG8gdXNlIHBlciBlbmRwb2ludC4gVGhlIGRlZmF1bHQgaXMgMTAsIHlvdQorCXNob3VsZCB0dW5lIHRoaXMgZm9yIHlvdXIgcHJvZHVjdC4gWW91IG1heSBhbHNvIHdhbnQgdG8gdHVuZSB0aGUKKwlzaXplIG9mIGVhY2ggYnVmZmVyIGZvciB5b3VyIHByb2R1Y3QuCisKKworCisKK1VTSU5HIFRIRSBFWEFNUExFIENPREUKKz09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBleGFtcGxlIGNvZGUgdGFsa3MgdG8gc3Rkb3V0LCBpbnN0ZWFkIG9mIGEgcHJpbnQgZW5naW5lLgorCitUbyBjb21waWxlIHRoZSB0ZXN0IGNvZGUgYmVsb3c6CisKKzEpIHNhdmUgaXQgdG8gYSBmaWxlIGNhbGxlZCBwcm5fZXhhbXBsZS5jCisyKSBjb21waWxlIHRoZSBjb2RlIHdpdGggdGhlIGZvbGxvdyBjb21tYW5kOgorCSBnY2MgcHJuX2V4YW1wbGUuYyAtbyBwcm5fZXhhbXBsZQorCisKKworVG8gcmVhZCBwcmludGVyIGRhdGEgZnJvbSB0aGUgaG9zdCB0byBzdGRvdXQ6CisKKwkjIHBybl9leGFtcGxlIC1yZWFkX2RhdGEKKworCitUbyB3cml0ZSBwcmludGVyIGRhdGEgZnJvbSBhIGZpbGUgKGRhdGFfZmlsZSkgdG8gdGhlIGhvc3Q6CisKKwkjIGNhdCBkYXRhX2ZpbGUgfCBwcm5fZXhhbXBsZSAtd3JpdGVfZGF0YQorCisKK1RvIGdldCB0aGUgY3VycmVudCBwcmludGVyIHN0YXR1cyBmb3IgdGhlIGdhZGdldCBkcml2ZXI6CisKKwkjIHBybl9leGFtcGxlIC1nZXRfc3RhdHVzCisKKwlQcmludGVyIHN0YXR1cyBpczoKKwkgICAgIFByaW50ZXIgaXMgTk9UIFNlbGVjdGVkCisJICAgICBQYXBlciBpcyBPdXQKKwkgICAgIFByaW50ZXIgT0sKKworCitUbyBzZXQgcHJpbnRlciB0byBTZWxlY3RlZC9Pbi1saW5lOgorCisJIyBwcm5fZXhhbXBsZSAtc2VsZWN0ZWQKKworCitUbyBzZXQgcHJpbnRlciB0byBOb3QgU2VsZWN0ZWQvT2ZmLWxpbmU6CisKKwkjIHBybl9leGFtcGxlIC1ub3Rfc2VsZWN0ZWQKKworCitUbyBzZXQgcGFwZXIgc3RhdHVzIHRvIHBhcGVyIG91dDoKKworCSMgcHJuX2V4YW1wbGUgLXBhcGVyX291dAorCisKK1RvIHNldCBwYXBlciBzdGF0dXMgdG8gcGFwZXIgbG9hZGVkOgorCisJIyBwcm5fZXhhbXBsZSAtcGFwZXJfbG9hZGVkCisKKworVG8gc2V0IGVycm9yIHN0YXR1cyB0byBwcmludGVyIE9LOgorCisJIyBwcm5fZXhhbXBsZSAtbm9fZXJyb3IKKworCitUbyBzZXQgZXJyb3Igc3RhdHVzIHRvIEVSUk9SOgorCisJIyBwcm5fZXhhbXBsZSAtZXJyb3IKKworCisKKworRVhBTVBMRSBDT0RFCis9PT09PT09PT09PT0KKworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGxpbnV4L3BvbGwuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxsaW51eC91c2IvZ19wcmludGVyLmg+CisKKyNkZWZpbmUgUFJJTlRFUl9GSUxFCQkJIi9kZXYvZ19wcmludGVyIgorI2RlZmluZSBCVUZfU0laRQkJCTUxMgorCisKKy8qCisgKiAndXNhZ2UoKScgLSBTaG93IHByb2dyYW0gdXNhZ2UuCisgKi8KKworc3RhdGljIHZvaWQKK3VzYWdlKGNvbnN0IGNoYXIgKm9wdGlvbikJCS8qIEkgLSBPcHRpb24gc3RyaW5nIG9yIE5VTEwgKi8KK3sKKwlpZiAob3B0aW9uKSB7CisJCWZwcmludGYoc3RkZXJyLCJwcm5fZXhhbXBsZTogVW5rbm93biBvcHRpb24gXCIlc1wiIVxuIiwKKwkJCQlvcHRpb24pOworCX0KKworCWZwdXRzKCJcbiIsIHN0ZGVycik7CisJZnB1dHMoIlVzYWdlOiBwcm5fZXhhbXBsZSAtW29wdGlvbnNdXG4iLCBzdGRlcnIpOworCWZwdXRzKCJPcHRpb25zOlxuIiwgc3RkZXJyKTsKKwlmcHV0cygiXG4iLCBzdGRlcnIpOworCWZwdXRzKCItZ2V0X3N0YXR1cyAgICBHZXQgdGhlIGN1cnJlbnQgcHJpbnRlciBzdGF0dXMuXG4iLCBzdGRlcnIpOworCWZwdXRzKCItc2VsZWN0ZWQgICAgICBTZXQgdGhlIHNlbGVjdGVkIHN0YXR1cyB0byBzZWxlY3RlZC5cbiIsIHN0ZGVycik7CisJZnB1dHMoIi1ub3Rfc2VsZWN0ZWQgIFNldCB0aGUgc2VsZWN0ZWQgc3RhdHVzIHRvIE5PVCBzZWxlY3RlZC5cbiIsCisJCQlzdGRlcnIpOworCWZwdXRzKCItZXJyb3IgICAgICAgICBTZXQgdGhlIGVycm9yIHN0YXR1cyB0byBlcnJvci5cbiIsIHN0ZGVycik7CisJZnB1dHMoIi1ub19lcnJvciAgICAgIFNldCB0aGUgZXJyb3Igc3RhdHVzIHRvIE5PIGVycm9yLlxuIiwgc3RkZXJyKTsKKwlmcHV0cygiLXBhcGVyX291dCAgICAgU2V0IHRoZSBwYXBlciBzdGF0dXMgdG8gcGFwZXIgb3V0LlxuIiwgc3RkZXJyKTsKKwlmcHV0cygiLXBhcGVyX2xvYWRlZCAgU2V0IHRoZSBwYXBlciBzdGF0dXMgdG8gcGFwZXIgbG9hZGVkLlxuIiwKKwkJCXN0ZGVycik7CisJZnB1dHMoIi1yZWFkX2RhdGEgICAgIFJlYWQgcHJpbnRlciBkYXRhIGZyb20gZHJpdmVyLlxuIiwgc3RkZXJyKTsKKwlmcHV0cygiLXdyaXRlX2RhdGEgICAgV3JpdGUgcHJpbnRlciBzYXRhIHRvIGRyaXZlci5cbiIsIHN0ZGVycik7CisJZnB1dHMoIi1OQl9yZWFkX2RhdGEgIChOb24tQmxvY2tpbmcpIFJlYWQgcHJpbnRlciBkYXRhIGZyb20gZHJpdmVyLlxuIiwKKwkJCXN0ZGVycik7CisJZnB1dHMoIlxuXG4iLCBzdGRlcnIpOworCisJZXhpdCgxKTsKK30KKworCitzdGF0aWMgaW50CityZWFkX3ByaW50ZXJfZGF0YSgpCit7CisJc3RydWN0IHBvbGxmZAlmZFsxXTsKKworCS8qIE9wZW4gZGV2aWNlIGZpbGUgZm9yIHByaW50ZXIgZ2FkZ2V0LiAqLworCWZkWzBdLmZkID0gb3BlbihQUklOVEVSX0ZJTEUsIE9fUkRXUik7CisJaWYgKGZkWzBdLmZkIDwgMCkgeworCQlwcmludGYoIkVycm9yICVkIG9wZW5pbmcgJXNcbiIsIGZkWzBdLmZkLCBQUklOVEVSX0ZJTEUpOworCQljbG9zZShmZFswXS5mZCk7CisJCXJldHVybigtMSk7CisJfQorCisJZmRbMF0uZXZlbnRzID0gUE9MTElOIHwgUE9MTFJETk9STTsKKworCXdoaWxlICgxKSB7CisJCXN0YXRpYyBjaGFyIGJ1ZltCVUZfU0laRV07CisJCWludCBieXRlc19yZWFkOworCQlpbnQgcmV0dmFsOworCisJCS8qIFdhaXQgZm9yIHVwIHRvIDEgc2Vjb25kIGZvciBkYXRhLiAqLworCQlyZXR2YWwgPSBwb2xsKGZkLCAxLCAxMDAwKTsKKworCQlpZiAocmV0dmFsICYmIChmZFswXS5yZXZlbnRzICYgUE9MTFJETk9STSkpIHsKKworCQkJLyogUmVhZCBkYXRhIGZyb20gcHJpbnRlciBnYWRnZXQgZHJpdmVyLiAqLworCQkJYnl0ZXNfcmVhZCA9IHJlYWQoZmRbMF0uZmQsIGJ1ZiwgQlVGX1NJWkUpOworCisJCQlpZiAoYnl0ZXNfcmVhZCA8IDApIHsKKwkJCQlwcmludGYoIkVycm9yICVkIHJlYWRpbmcgZnJvbSAlc1xuIiwKKwkJCQkJCWZkWzBdLmZkLCBQUklOVEVSX0ZJTEUpOworCQkJCWNsb3NlKGZkWzBdLmZkKTsKKwkJCQlyZXR1cm4oLTEpOworCQkJfSBlbHNlIGlmIChieXRlc19yZWFkID4gMCkgeworCQkJCS8qIFdyaXRlIGRhdGEgdG8gc3RhbmRhcmQgT1VUUFVUIChzdGRvdXQpLiAqLworCQkJCWZ3cml0ZShidWYsIDEsIGJ5dGVzX3JlYWQsIHN0ZG91dCk7CisJCQkJZmZsdXNoKHN0ZG91dCk7CisJCQl9CisKKwkJfQorCisJfQorCisJLyogQ2xvc2UgdGhlIGRldmljZSBmaWxlLiAqLworCWNsb3NlKGZkWzBdLmZkKTsKKworCXJldHVybiAwOworfQorCisKK3N0YXRpYyBpbnQKK3dyaXRlX3ByaW50ZXJfZGF0YSgpCit7CisJc3RydWN0IHBvbGxmZAlmZFsxXTsKKworCS8qIE9wZW4gZGV2aWNlIGZpbGUgZm9yIHByaW50ZXIgZ2FkZ2V0LiAqLworCWZkWzBdLmZkID0gb3BlbiAoUFJJTlRFUl9GSUxFLCBPX1JEV1IpOworCWlmIChmZFswXS5mZCA8IDApIHsKKwkJcHJpbnRmKCJFcnJvciAlZCBvcGVuaW5nICVzXG4iLCBmZFswXS5mZCwgUFJJTlRFUl9GSUxFKTsKKwkJY2xvc2UoZmRbMF0uZmQpOworCQlyZXR1cm4oLTEpOworCX0KKworCWZkWzBdLmV2ZW50cyA9IFBPTExPVVQgfCBQT0xMV1JOT1JNOworCisJd2hpbGUgKDEpIHsKKwkJaW50IHJldHZhbDsKKwkJc3RhdGljIGNoYXIgYnVmW0JVRl9TSVpFXTsKKwkJLyogUmVhZCBkYXRhIGZyb20gc3RhbmRhcmQgSU5QVVQgKHN0ZGluKS4gKi8KKwkJaW50IGJ5dGVzX3JlYWQgPSBmcmVhZChidWYsIDEsIEJVRl9TSVpFLCBzdGRpbik7CisKKwkJaWYgKCFieXRlc19yZWFkKSB7CisJCQlicmVhazsKKwkJfQorCisJCXdoaWxlIChieXRlc19yZWFkKSB7CisKKwkJCS8qIFdhaXQgZm9yIHVwIHRvIDEgc2Vjb25kIHRvIHNlbnQgZGF0YS4gKi8KKwkJCXJldHZhbCA9IHBvbGwoZmQsIDEsIDEwMDApOworCisJCQkvKiBXcml0ZSBkYXRhIHRvIHByaW50ZXIgZ2FkZ2V0IGRyaXZlci4gKi8KKwkJCWlmIChyZXR2YWwgJiYgKGZkWzBdLnJldmVudHMgJiBQT0xMV1JOT1JNKSkgeworCQkJCXJldHZhbCA9IHdyaXRlKGZkWzBdLmZkLCBidWYsIGJ5dGVzX3JlYWQpOworCQkJCWlmIChyZXR2YWwgPCAwKSB7CisJCQkJCXByaW50ZigiRXJyb3IgJWQgd3JpdGluZyB0byAlc1xuIiwKKwkJCQkJCQlmZFswXS5mZCwKKwkJCQkJCQlQUklOVEVSX0ZJTEUpOworCQkJCQljbG9zZShmZFswXS5mZCk7CisJCQkJCXJldHVybigtMSk7CisJCQkJfSBlbHNlIHsKKwkJCQkJYnl0ZXNfcmVhZCAtPSByZXR2YWw7CisJCQkJfQorCisJCQl9CisKKwkJfQorCisJfQorCisJLyogV2FpdCB1bnRpbCB0aGUgZGF0YSBoYXMgYmVlbiBzZW50LiAqLworCWZzeW5jKGZkWzBdLmZkKTsKKworCS8qIENsb3NlIHRoZSBkZXZpY2UgZmlsZS4gKi8KKwljbG9zZShmZFswXS5mZCk7CisKKwlyZXR1cm4gMDsKK30KKworCitzdGF0aWMgaW50CityZWFkX05CX3ByaW50ZXJfZGF0YSgpCit7CisJaW50CQlmZDsKKwlzdGF0aWMgY2hhcglidWZbQlVGX1NJWkVdOworCWludAkJYnl0ZXNfcmVhZDsKKworCS8qIE9wZW4gZGV2aWNlIGZpbGUgZm9yIHByaW50ZXIgZ2FkZ2V0LiAqLworCWZkID0gb3BlbihQUklOVEVSX0ZJTEUsIE9fUkRXUnxPX05PTkJMT0NLKTsKKwlpZiAoZmQgPCAwKSB7CisJCXByaW50ZigiRXJyb3IgJWQgb3BlbmluZyAlc1xuIiwgZmQsIFBSSU5URVJfRklMRSk7CisJCWNsb3NlKGZkKTsKKwkJcmV0dXJuKC0xKTsKKwl9CisKKwl3aGlsZSAoMSkgeworCQkvKiBSZWFkIGRhdGEgZnJvbSBwcmludGVyIGdhZGdldCBkcml2ZXIuICovCisJCWJ5dGVzX3JlYWQgPSByZWFkKGZkLCBidWYsIEJVRl9TSVpFKTsKKwkJaWYgKGJ5dGVzX3JlYWQgPD0gMCkgeworCQkJYnJlYWs7CisJCX0KKworCQkvKiBXcml0ZSBkYXRhIHRvIHN0YW5kYXJkIE9VVFBVVCAoc3Rkb3V0KS4gKi8KKwkJZndyaXRlKGJ1ZiwgMSwgYnl0ZXNfcmVhZCwgc3Rkb3V0KTsKKwkJZmZsdXNoKHN0ZG91dCk7CisJfQorCisJLyogQ2xvc2UgdGhlIGRldmljZSBmaWxlLiAqLworCWNsb3NlKGZkKTsKKworCXJldHVybiAwOworfQorCisKK3N0YXRpYyBpbnQKK2dldF9wcmludGVyX3N0YXR1cygpCit7CisJaW50CXJldHZhbDsKKwlpbnQJZmQ7CisKKwkvKiBPcGVuIGRldmljZSBmaWxlIGZvciBwcmludGVyIGdhZGdldC4gKi8KKwlmZCA9IG9wZW4oUFJJTlRFUl9GSUxFLCBPX1JEV1IpOworCWlmIChmZCA8IDApIHsKKwkJcHJpbnRmKCJFcnJvciAlZCBvcGVuaW5nICVzXG4iLCBmZCwgUFJJTlRFUl9GSUxFKTsKKwkJY2xvc2UoZmQpOworCQlyZXR1cm4oLTEpOworCX0KKworCS8qIE1ha2UgdGhlIElPQ1RMIGNhbGwuICovCisJcmV0dmFsID0gaW9jdGwoZmQsIEdBREdFVF9HRVRfUFJJTlRFUl9TVEFUVVMpOworCWlmIChyZXR2YWwgPCAwKSB7CisJCWZwcmludGYoc3RkZXJyLCAiRVJST1I6IEZhaWxlZCB0byBzZXQgcHJpbnRlciBzdGF0dXNcbiIpOworCQlyZXR1cm4oLTEpOworCX0KKworCS8qIENsb3NlIHRoZSBkZXZpY2UgZmlsZS4gKi8KKwljbG9zZShmZCk7CisKKwlyZXR1cm4ocmV0dmFsKTsKK30KKworCitzdGF0aWMgaW50CitzZXRfcHJpbnRlcl9zdGF0dXModW5zaWduZWQgY2hhciBidWYsIGludCBjbGVhcl9wcmludGVyX3N0YXR1c19iaXQpCit7CisJaW50CXJldHZhbDsKKwlpbnQJZmQ7CisKKwlyZXR2YWwgPSBnZXRfcHJpbnRlcl9zdGF0dXMoKTsKKwlpZiAocmV0dmFsIDwgMCkgeworCQlmcHJpbnRmKHN0ZGVyciwgIkVSUk9SOiBGYWlsZWQgdG8gZ2V0IHByaW50ZXIgc3RhdHVzXG4iKTsKKwkJcmV0dXJuKC0xKTsKKwl9CisKKwkvKiBPcGVuIGRldmljZSBmaWxlIGZvciBwcmludGVyIGdhZGdldC4gKi8KKwlmZCA9IG9wZW4oUFJJTlRFUl9GSUxFLCBPX1JEV1IpOworCisJaWYgKGZkIDwgMCkgeworCQlwcmludGYoIkVycm9yICVkIG9wZW5pbmcgJXNcbiIsIGZkLCBQUklOVEVSX0ZJTEUpOworCQljbG9zZShmZCk7CisJCXJldHVybigtMSk7CisJfQorCisJaWYgKGNsZWFyX3ByaW50ZXJfc3RhdHVzX2JpdCkgeworCQlyZXR2YWwgJj0gfmJ1ZjsKKwl9IGVsc2UgeworCQlyZXR2YWwgfD0gYnVmOworCX0KKworCS8qIE1ha2UgdGhlIElPQ1RMIGNhbGwuICovCisJaWYgKGlvY3RsKGZkLCBHQURHRVRfU0VUX1BSSU5URVJfU1RBVFVTLCAodW5zaWduZWQgY2hhcilyZXR2YWwpKSB7CisJCWZwcmludGYoc3RkZXJyLCAiRVJST1I6IEZhaWxlZCB0byBzZXQgcHJpbnRlciBzdGF0dXNcbiIpOworCQlyZXR1cm4oLTEpOworCX0KKworCS8qIENsb3NlIHRoZSBkZXZpY2UgZmlsZS4gKi8KKwljbG9zZShmZCk7CisKKwlyZXR1cm4gMDsKK30KKworCitzdGF0aWMgaW50CitkaXNwbGF5X3ByaW50ZXJfc3RhdHVzKCkKK3sKKwljaGFyCXByaW50ZXJfc3RhdHVzOworCisJcHJpbnRlcl9zdGF0dXMgPSBnZXRfcHJpbnRlcl9zdGF0dXMoKTsKKwlpZiAocHJpbnRlcl9zdGF0dXMgPCAwKSB7CisJCWZwcmludGYoc3RkZXJyLCAiRVJST1I6IEZhaWxlZCB0byBnZXQgcHJpbnRlciBzdGF0dXNcbiIpOworCQlyZXR1cm4oLTEpOworCX0KKworCXByaW50ZigiUHJpbnRlciBzdGF0dXMgaXM6XG4iKTsKKwlpZiAocHJpbnRlcl9zdGF0dXMgJiBQUklOVEVSX1NFTEVDVEVEKSB7CisJCXByaW50ZigiICAgICBQcmludGVyIGlzIFNlbGVjdGVkXG4iKTsKKwl9IGVsc2UgeworCQlwcmludGYoIiAgICAgUHJpbnRlciBpcyBOT1QgU2VsZWN0ZWRcbiIpOworCX0KKwlpZiAocHJpbnRlcl9zdGF0dXMgJiBQUklOVEVSX1BBUEVSX0VNUFRZKSB7CisJCXByaW50ZigiICAgICBQYXBlciBpcyBPdXRcbiIpOworCX0gZWxzZSB7CisJCXByaW50ZigiICAgICBQYXBlciBpcyBMb2FkZWRcbiIpOworCX0KKwlpZiAocHJpbnRlcl9zdGF0dXMgJiBQUklOVEVSX05PVF9FUlJPUikgeworCQlwcmludGYoIiAgICAgUHJpbnRlciBPS1xuIik7CisJfSBlbHNlIHsKKwkJcHJpbnRmKCIgICAgIFByaW50ZXIgRVJST1JcbiIpOworCX0KKworCXJldHVybigwKTsKK30KKworCitpbnQKK21haW4oaW50ICBhcmdjLCBjaGFyICphcmd2W10pCit7CisJaW50CWk7CQkvKiBMb29waW5nIHZhciAqLworCWludAlyZXR2YWwgPSAwOworCisJLyogTm8gQXJncyAqLworCWlmIChhcmdjID09IDEpIHsKKwkJdXNhZ2UoMCk7CisJCWV4aXQoMCk7CisJfQorCisJZm9yIChpID0gMTsgaSA8IGFyZ2MgJiYgIXJldHZhbDsgaSArKykgeworCisJCWlmIChhcmd2W2ldWzBdICE9ICctJykgeworCQkJY29udGludWU7CisJCX0KKworCQlpZiAoIXN0cmNtcChhcmd2W2ldLCAiLWdldF9zdGF0dXMiKSkgeworCQkJaWYgKGRpc3BsYXlfcHJpbnRlcl9zdGF0dXMoKSkgeworCQkJCXJldHZhbCA9IDE7CisJCQl9CisKKwkJfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbaV0sICItcGFwZXJfbG9hZGVkIikpIHsKKwkJCWlmIChzZXRfcHJpbnRlcl9zdGF0dXMoUFJJTlRFUl9QQVBFUl9FTVBUWSwgMSkpIHsKKwkJCQlyZXR2YWwgPSAxOworCQkJfQorCisJCX0gZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLXBhcGVyX291dCIpKSB7CisJCQlpZiAoc2V0X3ByaW50ZXJfc3RhdHVzKFBSSU5URVJfUEFQRVJfRU1QVFksIDApKSB7CisJCQkJcmV0dmFsID0gMTsKKwkJCX0KKworCQl9IGVsc2UgaWYgKCFzdHJjbXAoYXJndltpXSwgIi1zZWxlY3RlZCIpKSB7CisJCQlpZiAoc2V0X3ByaW50ZXJfc3RhdHVzKFBSSU5URVJfU0VMRUNURUQsIDApKSB7CisJCQkJcmV0dmFsID0gMTsKKwkJCX0KKworCQl9IGVsc2UgaWYgKCFzdHJjbXAoYXJndltpXSwgIi1ub3Rfc2VsZWN0ZWQiKSkgeworCQkJaWYgKHNldF9wcmludGVyX3N0YXR1cyhQUklOVEVSX1NFTEVDVEVELCAxKSkgeworCQkJCXJldHZhbCA9IDE7CisJCQl9CisKKwkJfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbaV0sICItZXJyb3IiKSkgeworCQkJaWYgKHNldF9wcmludGVyX3N0YXR1cyhQUklOVEVSX05PVF9FUlJPUiwgMSkpIHsKKwkJCQlyZXR2YWwgPSAxOworCQkJfQorCisJCX0gZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLW5vX2Vycm9yIikpIHsKKwkJCWlmIChzZXRfcHJpbnRlcl9zdGF0dXMoUFJJTlRFUl9OT1RfRVJST1IsIDApKSB7CisJCQkJcmV0dmFsID0gMTsKKwkJCX0KKworCQl9IGVsc2UgaWYgKCFzdHJjbXAoYXJndltpXSwgIi1yZWFkX2RhdGEiKSkgeworCQkJaWYgKHJlYWRfcHJpbnRlcl9kYXRhKCkpIHsKKwkJCQlyZXR2YWwgPSAxOworCQkJfQorCisJCX0gZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLXdyaXRlX2RhdGEiKSkgeworCQkJaWYgKHdyaXRlX3ByaW50ZXJfZGF0YSgpKSB7CisJCQkJcmV0dmFsID0gMTsKKwkJCX0KKworCQl9IGVsc2UgaWYgKCFzdHJjbXAoYXJndltpXSwgIi1OQl9yZWFkX2RhdGEiKSkgeworCQkJaWYgKHJlYWRfTkJfcHJpbnRlcl9kYXRhKCkpIHsKKwkJCQlyZXR2YWwgPSAxOworCQkJfQorCisJCX0gZWxzZSB7CisJCQl1c2FnZShhcmd2W2ldKTsKKwkJCXJldHZhbCA9IDE7CisJCX0KKwl9CisKKwlleGl0KHJldHZhbCk7Cit9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfc2VyaWFsLnR4dCBiL0RvY3VtZW50YXRpb24vdXNiL2dhZGdldF9zZXJpYWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiNGE4OGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfc2VyaWFsLnR4dApAQCAtMCwwICsxLDI4NiBAQAorCisgICAgICAgICAgICAgICAgIExpbnV4IEdhZGdldCBTZXJpYWwgRHJpdmVyIHYyLjAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLzIwLzIwMDQKKyAgICAgICAgICAgICAgICAgICh1cGRhdGVkIDgtTWF5LTIwMDggZm9yIHYyLjMpCisKKworTGljZW5zZSBhbmQgRGlzY2xhaW1lcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKK3B1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCit0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCitidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCitMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCitTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorTUEgMDIxMTEtMTMwNyBVU0EuCisKK1RoaXMgZG9jdW1lbnQgYW5kIHRoZSBnYWRnZXQgc2VyaWFsIGRyaXZlciBpdHNlbGYgYXJlCitDb3B5cmlnaHQgKEMpIDIwMDQgYnkgQWwgQm9yY2hlcnMgKGFsYm9yY2hlcnNAc3RlaW5lcnBvaW50LmNvbSkuCisKK0lmIHlvdSBoYXZlIHF1ZXN0aW9ucywgcHJvYmxlbXMsIG9yIHN1Z2dlc3Rpb25zIGZvciB0aGlzIGRyaXZlcgorcGxlYXNlIGNvbnRhY3QgQWwgQm9yY2hlcnMgYXQgYWxib3JjaGVyc0BzdGVpbmVycG9pbnQuY29tLgorCisKK1ByZXJlcXVpc2l0ZXMKKy0tLS0tLS0tLS0tLS0KK1ZlcnNpb25zIG9mIHRoZSBnYWRnZXQgc2VyaWFsIGRyaXZlciBhcmUgYXZhaWxhYmxlIGZvciB0aGUKKzIuNCBMaW51eCBrZXJuZWxzLCBidXQgdGhpcyBkb2N1bWVudCBhc3N1bWVzIHlvdSBhcmUgdXNpbmcKK3ZlcnNpb24gMi4zIG9yIGxhdGVyIG9mIHRoZSBnYWRnZXQgc2VyaWFsIGRyaXZlciBpbiBhIDIuNgorTGludXgga2VybmVsLgorCitUaGlzIGRvY3VtZW50IGFzc3VtZXMgdGhhdCB5b3UgYXJlIGZhbWlsaWFyIHdpdGggTGludXggYW5kCitXaW5kb3dzIGFuZCBrbm93IGhvdyB0byBjb25maWd1cmUgYW5kIGJ1aWxkIExpbnV4IGtlcm5lbHMsIHJ1bgorc3RhbmRhcmQgdXRpbGl0aWVzLCB1c2UgbWluaWNvbSBhbmQgSHlwZXJUZXJtaW5hbCwgYW5kIHdvcmsgd2l0aAorVVNCIGFuZCBzZXJpYWwgZGV2aWNlcy4gIEl0IGFsc28gYXNzdW1lcyB5b3UgY29uZmlndXJlIHRoZSBMaW51eAorZ2FkZ2V0IGFuZCB1c2IgZHJpdmVycyBhcyBtb2R1bGVzLgorCitXaXRoIHZlcnNpb24gMi4zIG9mIHRoZSBkcml2ZXIsIG1ham9yIGFuZCBtaW5vciBkZXZpY2Ugbm9kZXMgYXJlCitubyBsb25nZXIgc3RhdGljYWxseSBkZWZpbmVkLiAgWW91ciBMaW51eCBiYXNlZCBzeXN0ZW0gc2hvdWxkIG1vdW50CitzeXNmcyBpbiAvc3lzLCBhbmQgdXNlICJtZGV2IiAoaW4gQnVzeWJveCkgb3IgInVkZXYiIHRvIG1ha2UgdGhlCisvZGV2IG5vZGVzIG1hdGNoaW5nIHRoZSBzeXNmcyAvc3lzL2NsYXNzL3R0eSBmaWxlcy4KKworCisKK092ZXJ2aWV3CistLS0tLS0tLQorVGhlIGdhZGdldCBzZXJpYWwgZHJpdmVyIGlzIGEgTGludXggVVNCIGdhZGdldCBkcml2ZXIsIGEgVVNCIGRldmljZQorc2lkZSBkcml2ZXIuICBJdCBydW5zIG9uIGEgTGludXggc3lzdGVtIHRoYXQgaGFzIFVTQiBkZXZpY2Ugc2lkZQoraGFyZHdhcmU7IGZvciBleGFtcGxlLCBhIFBEQSwgYW4gZW1iZWRkZWQgTGludXggc3lzdGVtLCBvciBhIFBDCit3aXRoIGEgVVNCIGRldmVsb3BtZW50IGNhcmQuCisKK1RoZSBnYWRnZXQgc2VyaWFsIGRyaXZlciB0YWxrcyBvdmVyIFVTQiB0byBlaXRoZXIgYSBDREMgQUNNIGRyaXZlcgorb3IgYSBnZW5lcmljIFVTQiBzZXJpYWwgZHJpdmVyIHJ1bm5pbmcgb24gYSBob3N0IFBDLgorCisgICBIb3N0CisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICB8IEhvc3QtU2lkZSAgIENEQyBBQ00gICAgICAgVVNCIEhvc3QgICB8CisgIHwgT3BlcmF0aW5nIHwgICBvciAgICAgICAgfCBDb250cm9sbGVyIHwgICBVU0IKKyAgfCBTeXN0ZW0gICAgfCBHZW5lcmljIFVTQiB8IERyaXZlciAgICAgfC0tLS0tLS0tCisgIHwgKExpbnV4IG9yIHwgU2VyaWFsICAgICAgfCBhbmQgICAgICAgIHwgICAgICAgIHwKKyAgfCBXaW5kb3dzKSAgICBEcml2ZXIgICAgICAgIFVTQiBTdGFjayAgfCAgICAgICAgfAorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICBHYWRnZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgICAgICAgfAorICB8IEdhZGdldCAgICAgICAgICAgICAgICAgICBVU0IgUGVyaXBoLiB8ICAgICAgICB8CisgIHwgRGV2aWNlLVNpZGUgfCAgR2FkZ2V0ICB8IENvbnRyb2xsZXIgIHwgICAgICAgIHwKKyAgfCBMaW51eCAgICAgICB8ICBTZXJpYWwgIHwgRHJpdmVyICAgICAgfC0tLS0tLS0tCisgIHwgT3BlcmF0aW5nICAgfCAgRHJpdmVyICB8IGFuZCAgICAgICAgIHwKKyAgfCBTeXN0ZW0gICAgICAgICAgICAgICAgICAgVVNCIFN0YWNrICAgfAorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT24gdGhlIGRldmljZS1zaWRlIExpbnV4IHN5c3RlbSwgdGhlIGdhZGdldCBzZXJpYWwgZHJpdmVyIGxvb2tzCitsaWtlIGEgc2VyaWFsIGRldmljZS4KKworT24gdGhlIGhvc3Qtc2lkZSBzeXN0ZW0sIHRoZSBnYWRnZXQgc2VyaWFsIGRldmljZSBsb29rcyBsaWtlIGEKK0NEQyBBQ00gY29tcGxpYW50IGNsYXNzIGRldmljZSBvciBhIHNpbXBsZSB2ZW5kb3Igc3BlY2lmaWMgZGV2aWNlCit3aXRoIGJ1bGsgaW4gYW5kIGJ1bGsgb3V0IGVuZHBvaW50cywgYW5kIGl0IGlzIHRyZWF0ZWQgc2ltaWxhcmx5Cit0byBvdGhlciBzZXJpYWwgZGV2aWNlcy4KKworVGhlIGhvc3Qgc2lkZSBkcml2ZXIgY2FuIHBvdGVudGlhbGx5IGJlIGFueSBBQ00gY29tcGxpYW50IGRyaXZlcgorb3IgYW55IGRyaXZlciB0aGF0IGNhbiB0YWxrIHRvIGEgZGV2aWNlIHdpdGggYSBzaW1wbGUgYnVsayBpbi9vdXQKK2ludGVyZmFjZS4gIEdhZGdldCBzZXJpYWwgaGFzIGJlZW4gdGVzdGVkIHdpdGggdGhlIExpbnV4IEFDTSBkcml2ZXIsCit0aGUgV2luZG93cyB1c2JzZXIuc3lzIEFDTSBkcml2ZXIsIGFuZCB0aGUgTGludXggVVNCIGdlbmVyaWMgc2VyaWFsCitkcml2ZXIuCisKK1dpdGggdGhlIGdhZGdldCBzZXJpYWwgZHJpdmVyIGFuZCB0aGUgaG9zdCBzaWRlIEFDTSBvciBnZW5lcmljCitzZXJpYWwgZHJpdmVyIHJ1bm5pbmcsIHlvdSBzaG91bGQgYmUgYWJsZSB0byBjb21tdW5pY2F0ZSBiZXR3ZWVuCit0aGUgaG9zdCBhbmQgdGhlIGdhZGdldCBzaWRlIHN5c3RlbXMgYXMgaWYgdGhleSB3ZXJlIGNvbm5lY3RlZCBieSBhCitzZXJpYWwgY2FibGUuCisKK1RoZSBnYWRnZXQgc2VyaWFsIGRyaXZlciBvbmx5IHByb3ZpZGVzIHNpbXBsZSB1bnJlbGlhYmxlIGRhdGEKK2NvbW11bmljYXRpb24uICBJdCBkb2VzIG5vdCB5ZXQgaGFuZGxlIGZsb3cgY29udHJvbCBvciBtYW55IG90aGVyCitmZWF0dXJlcyBvZiBub3JtYWwgc2VyaWFsIGRldmljZXMuCisKKworSW5zdGFsbGluZyB0aGUgR2FkZ2V0IFNlcmlhbCBEcml2ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUbyB1c2UgdGhlIGdhZGdldCBzZXJpYWwgZHJpdmVyIHlvdSBtdXN0IGNvbmZpZ3VyZSB0aGUgTGludXggZ2FkZ2V0CitzaWRlIGtlcm5lbCBmb3IgIlN1cHBvcnQgZm9yIFVTQiBHYWRnZXRzIiwgZm9yIGEgIlVTQiBQZXJpcGhlcmFsCitDb250cm9sbGVyIiAoZm9yIGV4YW1wbGUsIG5ldDIyODApLCBhbmQgZm9yIHRoZSAiU2VyaWFsIEdhZGdldCIKK2RyaXZlci4gIEFsbCB0aGlzIGFyZSBsaXN0ZWQgdW5kZXIgIlVTQiBHYWRnZXQgU3VwcG9ydCIgd2hlbgorY29uZmlndXJpbmcgdGhlIGtlcm5lbC4gIFRoZW4gcmVidWlsZCBhbmQgaW5zdGFsbCB0aGUga2VybmVsIG9yCittb2R1bGVzLgorCitUaGVuIHlvdSBtdXN0IGxvYWQgdGhlIGdhZGdldCBzZXJpYWwgZHJpdmVyLiAgVG8gbG9hZCBpdCBhcyBhbgorQUNNIGRldmljZSAocmVjb21tZW5kZWQgZm9yIGludGVyb3BlcmFiaWxpdHkpLCBkbyB0aGlzOgorCisgIG1vZHByb2JlIGdfc2VyaWFsCisKK1RvIGxvYWQgaXQgYXMgYSB2ZW5kb3Igc3BlY2lmaWMgYnVsayBpbi9vdXQgZGV2aWNlLCBkbyB0aGlzOgorCisgIG1vZHByb2JlIGdfc2VyaWFsIHVzZV9hY209MAorCitUaGlzIHdpbGwgYWxzbyBhdXRvbWF0aWNhbGx5IGxvYWQgdGhlIHVuZGVybHlpbmcgZ2FkZ2V0IHBlcmlwaGVyYWwKK2NvbnRyb2xsZXIgZHJpdmVyLiAgVGhpcyBtdXN0IGJlIGRvbmUgZWFjaCB0aW1lIHlvdSByZWJvb3QgdGhlIGdhZGdldAorc2lkZSBMaW51eCBzeXN0ZW0uICBZb3UgY2FuIGFkZCB0aGlzIHRvIHRoZSBzdGFydCB1cCBzY3JpcHRzLCBpZgorZGVzaXJlZC4KKworWW91ciBzeXN0ZW0gc2hvdWxkIHVzZSBtZGV2IChmcm9tIGJ1c3lib3gpIG9yIHVkZXYgdG8gbWFrZSB0aGUKK2RldmljZSBub2Rlcy4gIEFmdGVyIHRoaXMgZ2FkZ2V0IGRyaXZlciBoYXMgYmVlbiBzZXQgdXAgeW91IHNob3VsZAordGhlbiBzZWUgYSAvZGV2L3R0eUdTMCBub2RlOgorCisgICMgbHMgLWwgL2Rldi90dHlHUzAgfCBjYXQKKyAgY3J3LXJ3LS0tLSAgICAxIHJvb3QgICAgIHJvb3QgICAgIDI1MywgICAwIE1heSAgOCAxNDoxMCAvZGV2L3R0eUdTMAorICAjCisKK05vdGUgdGhhdCB0aGUgbWFqb3IgbnVtYmVyICgyNTMsIGFib3ZlKSBpcyBzeXN0ZW0tc3BlY2lmaWMuICBJZgoreW91IG5lZWQgdG8gY3JlYXRlIC9kZXYgbm9kZXMgYnkgaGFuZCwgdGhlIHJpZ2h0IG51bWJlcnMgdG8gdXNlCit3aWxsIGJlIGluIHRoZSAvc3lzL2NsYXNzL3R0eS90dHlHUzAvZGV2IGZpbGUuCisKK1doZW4geW91IGxpbmsgdGhpcyBnYWRnZXQgZHJpdmVyIGVhcmx5LCBwZXJoYXBzIGV2ZW4gc3RhdGljYWxseSwKK3lvdSBtYXkgd2FudCB0byBzZXQgdXAgYW4gL2V0Yy9pbml0dGFiIGVudHJ5IHRvIHJ1biAiZ2V0dHkiIG9uIGl0LgorVGhlIC9kZXYvdHR5R1MwIGxpbmUgc2hvdWxkIHdvcmsgbGlrZSBtb3N0IGFueSBvdGhlciBzZXJpYWwgcG9ydC4KKworCitJZiBnYWRnZXQgc2VyaWFsIGlzIGxvYWRlZCBhcyBhbiBBQ00gZGV2aWNlIHlvdSB3aWxsIHdhbnQgdG8gdXNlCitlaXRoZXIgdGhlIFdpbmRvd3Mgb3IgTGludXggQUNNIGRyaXZlciBvbiB0aGUgaG9zdCBzaWRlLiAgSWYgZ2FkZ2V0CitzZXJpYWwgaXMgbG9hZGVkIGFzIGEgYnVsayBpbi9vdXQgZGV2aWNlLCB5b3Ugd2lsbCB3YW50IHRvIHVzZSB0aGUKK0xpbnV4IGdlbmVyaWMgc2VyaWFsIGRyaXZlciBvbiB0aGUgaG9zdCBzaWRlLiAgRm9sbG93IHRoZSBhcHByb3ByaWF0ZQoraW5zdHJ1Y3Rpb25zIGJlbG93IHRvIGluc3RhbGwgdGhlIGhvc3Qgc2lkZSBkcml2ZXIuCisKKworSW5zdGFsbGluZyB0aGUgV2luZG93cyBIb3N0IEFDTSBEcml2ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUbyB1c2UgdGhlIFdpbmRvd3MgQUNNIGRyaXZlciB5b3UgbXVzdCBoYXZlIHRoZSAibGludXgtY2RjLWFjbS5pbmYiCitmaWxlIChwcm92aWRlZCBhbG9uZyB0aGlzIGRvY3VtZW50KSB3aGljaCBzdXBwb3J0cyBhbGwgcmVjZW50IHZlcnNpb25zCitvZiBXaW5kb3dzLgorCitXaGVuIHRoZSBnYWRnZXQgc2VyaWFsIGRyaXZlciBpcyBsb2FkZWQgYW5kIHRoZSBVU0IgZGV2aWNlIGNvbm5lY3RlZAordG8gdGhlIFdpbmRvd3MgaG9zdCB3aXRoIGEgVVNCIGNhYmxlLCBXaW5kb3dzIHNob3VsZCByZWNvZ25pemUgdGhlCitnYWRnZXQgc2VyaWFsIGRldmljZSBhbmQgYXNrIGZvciBhIGRyaXZlci4gIFRlbGwgV2luZG93cyB0byBmaW5kIHRoZQorZHJpdmVyIGluIHRoZSBmb2xkZXIgdGhhdCBjb250YWlucyB0aGUgImxpbnV4LWNkYy1hY20uaW5mIiBmaWxlLgorCitGb3IgZXhhbXBsZSwgb24gV2luZG93cyBYUCwgd2hlbiB0aGUgZ2FkZ2V0IHNlcmlhbCBkZXZpY2UgaXMgZmlyc3QKK3BsdWdnZWQgaW4sIHRoZSAiRm91bmQgTmV3IEhhcmR3YXJlIFdpemFyZCIgc3RhcnRzIHVwLiAgU2VsZWN0CisiSW5zdGFsbCBmcm9tIGEgbGlzdCBvciBzcGVjaWZpYyBsb2NhdGlvbiAoQWR2YW5jZWQpIiwgdGhlbiBvbiB0aGUKK25leHQgc2NyZWVuIHNlbGVjdCAiSW5jbHVkZSB0aGlzIGxvY2F0aW9uIGluIHRoZSBzZWFyY2giIGFuZCBlbnRlciB0aGUKK3BhdGggb3IgYnJvd3NlIHRvIHRoZSBmb2xkZXIgY29udGFpbmluZyB0aGUgImxpbnV4LWNkYy1hY20uaW5mIiBmaWxlLgorV2luZG93cyB3aWxsIGNvbXBsYWluIHRoYXQgdGhlIEdhZGdldCBTZXJpYWwgZHJpdmVyIGhhcyBub3QgcGFzc2VkCitXaW5kb3dzIExvZ28gdGVzdGluZywgYnV0IHNlbGVjdCAiQ29udGludWUgYW55d2F5IiBhbmQgZmluaXNoIHRoZQorZHJpdmVyIGluc3RhbGxhdGlvbi4KKworT24gV2luZG93cyBYUCwgaW4gdGhlICJEZXZpY2UgTWFuYWdlciIgKHVuZGVyICJDb250cm9sIFBhbmVsIiwKKyJTeXN0ZW0iLCAiSGFyZHdhcmUiKSBleHBhbmQgdGhlICJQb3J0cyAoQ09NICYgTFBUKSIgZW50cnkgYW5kIHlvdQorc2hvdWxkIHNlZSAiR2FkZ2V0IFNlcmlhbCIgbGlzdGVkIGFzIHRoZSBkcml2ZXIgZm9yIG9uZSBvZiB0aGUgQ09NCitwb3J0cy4KKworVG8gdW5pbnN0YWxsIHRoZSBXaW5kb3dzIFhQIGRyaXZlciBmb3IgIkdhZGdldCBTZXJpYWwiLCByaWdodCBjbGljaworb24gdGhlICJHYWRnZXQgU2VyaWFsIiBlbnRyeSBpbiB0aGUgIkRldmljZSBNYW5hZ2VyIiBhbmQgc2VsZWN0CisiVW5pbnN0YWxsIi4KKworCitJbnN0YWxsaW5nIHRoZSBMaW51eCBIb3N0IEFDTSBEcml2ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVG8gdXNlIHRoZSBMaW51eCBBQ00gZHJpdmVyIHlvdSBtdXN0IGNvbmZpZ3VyZSB0aGUgTGludXggaG9zdCBzaWRlCitrZXJuZWwgZm9yICJTdXBwb3J0IGZvciBIb3N0LXNpZGUgVVNCIiBhbmQgZm9yICJVU0IgTW9kZW0gKENEQyBBQ00pCitzdXBwb3J0Ii4KKworT25jZSB0aGUgZ2FkZ2V0IHNlcmlhbCBkcml2ZXIgaXMgbG9hZGVkIGFuZCB0aGUgVVNCIGRldmljZSBjb25uZWN0ZWQKK3RvIHRoZSBMaW51eCBob3N0IHdpdGggYSBVU0IgY2FibGUsIHRoZSBob3N0IHN5c3RlbSBzaG91bGQgcmVjb2duaXplCit0aGUgZ2FkZ2V0IHNlcmlhbCBkZXZpY2UuICBGb3IgZXhhbXBsZSwgdGhlIGNvbW1hbmQKKworICBjYXQgL3Byb2MvYnVzL3VzYi9kZXZpY2VzCisKK3Nob3VsZCBzaG93IHNvbWV0aGluZyBsaWtlIHRoaXM6CisKK1Q6ICBCdXM9MDEgTGV2PTAxIFBybnQ9MDEgUG9ydD0wMSBDbnQ9MDIgRGV2Iz0gIDUgU3BkPTQ4MCBNeENoPSAwCitEOiAgVmVyPSAyLjAwIENscz0wMihjb21tLikgU3ViPTAwIFByb3Q9MDAgTXhQUz02NCAjQ2Zncz0gIDEKK1A6ICBWZW5kb3I9MDUyNSBQcm9kSUQ9YTRhNyBSZXY9IDIuMDEKK1M6ICBNYW51ZmFjdHVyZXI9TGludXggMi42LjguMSB3aXRoIG5ldDIyODAKK1M6ICBQcm9kdWN0PUdhZGdldCBTZXJpYWwKK1M6ICBTZXJpYWxOdW1iZXI9MAorQzoqICNJZnM9IDIgQ2ZnIz0gMiBBdHI9YzAgTXhQd3I9ICAybUEKK0k6ICBJZiM9IDAgQWx0PSAwICNFUHM9IDEgQ2xzPTAyKGNvbW0uKSBTdWI9MDIgUHJvdD0wMSBEcml2ZXI9YWNtCitFOiAgQWQ9ODMoSSkgQXRyPTAzKEludC4pIE14UFM9ICAgOCBJdmw9MzJtcworSTogIElmIz0gMSBBbHQ9IDAgI0VQcz0gMiBDbHM9MGEoZGF0YSApIFN1Yj0wMCBQcm90PTAwIERyaXZlcj1hY20KK0U6ICBBZD04MShJKSBBdHI9MDIoQnVsaykgTXhQUz0gNTEyIEl2bD0wbXMKK0U6ICBBZD0wMihPKSBBdHI9MDIoQnVsaykgTXhQUz0gNTEyIEl2bD0wbXMKKworSWYgdGhlIGhvc3Qgc2lkZSBMaW51eCBzeXN0ZW0gaXMgY29uZmlndXJlZCBwcm9wZXJseSwgdGhlIEFDTSBkcml2ZXIKK3Nob3VsZCBiZSBsb2FkZWQgYXV0b21hdGljYWxseS4gIFRoZSBjb21tYW5kICJsc21vZCIgc2hvdWxkIHNob3cgdGhlCisiYWNtIiBtb2R1bGUgaXMgbG9hZGVkLgorCisKK0luc3RhbGxpbmcgdGhlIExpbnV4IEhvc3QgR2VuZXJpYyBVU0IgU2VyaWFsIERyaXZlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUbyB1c2UgdGhlIExpbnV4IGdlbmVyaWMgVVNCIHNlcmlhbCBkcml2ZXIgeW91IG11c3QgY29uZmlndXJlIHRoZQorTGludXggaG9zdCBzaWRlIGtlcm5lbCBmb3IgIlN1cHBvcnQgZm9yIEhvc3Qtc2lkZSBVU0IiLCBmb3IgIlVTQgorU2VyaWFsIENvbnZlcnRlciBzdXBwb3J0IiwgYW5kIGZvciB0aGUgIlVTQiBHZW5lcmljIFNlcmlhbCBEcml2ZXIiLgorCitPbmNlIHRoZSBnYWRnZXQgc2VyaWFsIGRyaXZlciBpcyBsb2FkZWQgYW5kIHRoZSBVU0IgZGV2aWNlIGNvbm5lY3RlZAordG8gdGhlIExpbnV4IGhvc3Qgd2l0aCBhIFVTQiBjYWJsZSwgdGhlIGhvc3Qgc3lzdGVtIHNob3VsZCByZWNvZ25pemUKK3RoZSBnYWRnZXQgc2VyaWFsIGRldmljZS4gIEZvciBleGFtcGxlLCB0aGUgY29tbWFuZAorCisgIGNhdCAvcHJvYy9idXMvdXNiL2RldmljZXMKKworc2hvdWxkIHNob3cgc29tZXRoaW5nIGxpa2UgdGhpczoKKworVDogIEJ1cz0wMSBMZXY9MDEgUHJudD0wMSBQb3J0PTAxIENudD0wMiBEZXYjPSAgNiBTcGQ9NDgwIE14Q2g9IDAKK0Q6ICBWZXI9IDIuMDAgQ2xzPWZmKHZlbmQuKSBTdWI9MDAgUHJvdD0wMCBNeFBTPTY0ICNDZmdzPSAgMQorUDogIFZlbmRvcj0wNTI1IFByb2RJRD1hNGE2IFJldj0gMi4wMQorUzogIE1hbnVmYWN0dXJlcj1MaW51eCAyLjYuOC4xIHdpdGggbmV0MjI4MAorUzogIFByb2R1Y3Q9R2FkZ2V0IFNlcmlhbAorUzogIFNlcmlhbE51bWJlcj0wCitDOiogI0lmcz0gMSBDZmcjPSAxIEF0cj1jMCBNeFB3cj0gIDJtQQorSTogIElmIz0gMCBBbHQ9IDAgI0VQcz0gMiBDbHM9MGEoZGF0YSApIFN1Yj0wMCBQcm90PTAwIERyaXZlcj1zZXJpYWwKK0U6ICBBZD04MShJKSBBdHI9MDIoQnVsaykgTXhQUz0gNTEyIEl2bD0wbXMKK0U6ICBBZD0wMihPKSBBdHI9MDIoQnVsaykgTXhQUz0gNTEyIEl2bD0wbXMKKworWW91IG11c3QgbG9hZCB0aGUgdXNic2VyaWFsIGRyaXZlciBhbmQgZXhwbGljaXRseSBzZXQgaXRzIHBhcmFtZXRlcnMKK3RvIGNvbmZpZ3VyZSBpdCB0byByZWNvZ25pemUgdGhlIGdhZGdldCBzZXJpYWwgZGV2aWNlLCBsaWtlIHRoaXM6CisKKyAgZWNobyAweDA1MjUgMHhBNEE2ID4vc3lzL2J1cy91c2Itc2VyaWFsL2RyaXZlcnMvZ2VuZXJpYy9uZXdfaWQKKworVGhlIGxlZ2FjeSB3YXkgaXMgdG8gdXNlIG1vZHVsZSBwYXJhbWV0ZXJzOgorCisgIG1vZHByb2JlIHVzYnNlcmlhbCB2ZW5kb3I9MHgwNTI1IHByb2R1Y3Q9MHhBNEE2CisKK0lmIGV2ZXJ5dGhpbmcgaXMgd29ya2luZywgdXNic2VyaWFsIHdpbGwgcHJpbnQgYSBtZXNzYWdlIGluIHRoZQorc3lzdGVtIGxvZyBzYXlpbmcgc29tZXRoaW5nIGxpa2UgIkdhZGdldCBTZXJpYWwgY29udmVydGVyIG5vdworYXR0YWNoZWQgdG8gdHR5VVNCMCIuCisKKworVGVzdGluZyB3aXRoIE1pbmljb20gb3IgSHlwZXJUZXJtaW5hbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorT25jZSB0aGUgZ2FkZ2V0IHNlcmlhbCBkcml2ZXIgYW5kIHRoZSBob3N0IGRyaXZlciBhcmUgYm90aCBpbnN0YWxsZWQsCithbmQgYSBVU0IgY2FibGUgY29ubmVjdHMgdGhlIGdhZGdldCBkZXZpY2UgdG8gdGhlIGhvc3QsIHlvdSBzaG91bGQKK2JlIGFibGUgdG8gY29tbXVuaWNhdGUgb3ZlciBVU0IgYmV0d2VlbiB0aGUgZ2FkZ2V0IGFuZCBob3N0IHN5c3RlbXMuCitZb3UgY2FuIHVzZSBtaW5pY29tIG9yIEh5cGVyVGVybWluYWwgdG8gdHJ5IHRoaXMgb3V0LgorCitPbiB0aGUgZ2FkZ2V0IHNpZGUgcnVuICJtaW5pY29tIC1zIiB0byBjb25maWd1cmUgYSBuZXcgbWluaWNvbQorc2Vzc2lvbi4gIFVuZGVyICJTZXJpYWwgcG9ydCBzZXR1cCIgc2V0ICIvZGV2L3R0eWdzZXJpYWwiIGFzIHRoZQorIlNlcmlhbCBEZXZpY2UiLiAgU2V0IGJhdWQgcmF0ZSwgZGF0YSBiaXRzLCBwYXJpdHksIGFuZCBzdG9wIGJpdHMsCit0byA5NjAwLCA4LCBub25lLCBhbmQgMS0tdGhlc2Ugc2V0dGluZ3MgbW9zdGx5IGRvIG5vdCBtYXR0ZXIuCitVbmRlciAiTW9kZW0gYW5kIGRpYWxpbmciIGVyYXNlIGFsbCB0aGUgbW9kZW0gYW5kIGRpYWxpbmcgc3RyaW5ncy4KKworT24gYSBMaW51eCBob3N0IHJ1bm5pbmcgdGhlIEFDTSBkcml2ZXIsIGNvbmZpZ3VyZSBtaW5pY29tIHNpbWlsYXJseQorYnV0IHVzZSAiL2Rldi90dHlBQ00wIiBhcyB0aGUgIlNlcmlhbCBEZXZpY2UiLiAgKElmIHlvdSBoYXZlIG90aGVyCitBQ00gZGV2aWNlcyBjb25uZWN0ZWQsIGNoYW5nZSB0aGUgZGV2aWNlIG5hbWUgYXBwcm9wcmlhdGVseS4pCisKK09uIGEgTGludXggaG9zdCBydW5uaW5nIHRoZSBVU0IgZ2VuZXJpYyBzZXJpYWwgZHJpdmVyLCBjb25maWd1cmUKK21pbmljb20gc2ltaWxhcmx5LCBidXQgdXNlICIvZGV2L3R0eVVTQjAiIGFzIHRoZSAiU2VyaWFsIERldmljZSIuCisoSWYgeW91IGhhdmUgb3RoZXIgVVNCIHNlcmlhbCBkZXZpY2VzIGNvbm5lY3RlZCwgY2hhbmdlIHRoZSBkZXZpY2UKK25hbWUgYXBwcm9wcmlhdGVseS4pCisKK09uIGEgV2luZG93cyBob3N0IGNvbmZpZ3VyZSBhIG5ldyBIeXBlclRlcm1pbmFsIHNlc3Npb24gdG8gdXNlIHRoZQorQ09NIHBvcnQgYXNzaWduZWQgdG8gR2FkZ2V0IFNlcmlhbC4gIFRoZSAiUG9ydCBTZXR0aW5ncyIgd2lsbCBiZQorc2V0IGF1dG9tYXRpY2FsbHkgd2hlbiBIeXBlclRlcm1pbmFsIGNvbm5lY3RzIHRvIHRoZSBnYWRnZXQgc2VyaWFsCitkZXZpY2UsIHNvIHlvdSBjYW4gbGVhdmUgdGhlbSBzZXQgdG8gdGhlIGRlZmF1bHQgdmFsdWVzLS10aGVzZQorc2V0dGluZ3MgbW9zdGx5IGRvIG5vdCBtYXR0ZXIuCisKK1dpdGggbWluaWNvbSBjb25maWd1cmVkIGFuZCBydW5uaW5nIG9uIHRoZSBnYWRnZXQgc2lkZSBhbmQgd2l0aAorbWluaWNvbSBvciBIeXBlclRlcm1pbmFsIGNvbmZpZ3VyZWQgYW5kIHJ1bm5pbmcgb24gdGhlIGhvc3Qgc2lkZSwKK3lvdSBzaG91bGQgYmUgYWJsZSB0byBzZW5kIGRhdGEgYmFjayBhbmQgZm9ydGggYmV0d2VlbiB0aGUgZ2FkZ2V0CitzaWRlIGFuZCBob3N0IHNpZGUgc3lzdGVtcy4gIEFueXRoaW5nIHlvdSB0eXBlIG9uIHRoZSB0ZXJtaW5hbAord2luZG93IG9uIHRoZSBnYWRnZXQgc2lkZSBzaG91bGQgYXBwZWFyIGluIHRoZSB0ZXJtaW5hbCB3aW5kb3cgb24KK3RoZSBob3N0IHNpZGUgYW5kIHZpY2UgdmVyc2EuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VzYi9ob3RwbHVnLnR4dCBiL0RvY3VtZW50YXRpb24vdXNiL2hvdHBsdWcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMjQzZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3VzYi9ob3RwbHVnLnR4dApAQCAtMCwwICsxLDE0OCBAQAorTElOVVggSE9UUExVR0dJTkcKKworSW4gaG90cGx1Z2dhYmxlIGJ1c3NlcyBsaWtlIFVTQiAoYW5kIENhcmRidXMgUENJKSwgZW5kLXVzZXJzIHBsdWcgZGV2aWNlcworaW50byB0aGUgYnVzIHdpdGggcG93ZXIgb24uICBJbiBtb3N0IGNhc2VzLCB1c2VycyBleHBlY3QgdGhlIGRldmljZXMgdG8gYmVjb21lCitpbW1lZGlhdGVseSB1c2FibGUuICBUaGF0IG1lYW5zIHRoZSBzeXN0ZW0gbXVzdCBkbyBtYW55IHRoaW5ncywgaW5jbHVkaW5nOgorCisgICAgLSBGaW5kIGEgZHJpdmVyIHRoYXQgY2FuIGhhbmRsZSB0aGUgZGV2aWNlLiAgVGhhdCBtYXkgaW52b2x2ZQorICAgICAgbG9hZGluZyBhIGtlcm5lbCBtb2R1bGU7IG5ld2VyIGRyaXZlcnMgY2FuIHVzZSBtb2R1bGUtaW5pdC10b29scworICAgICAgdG8gcHVibGlzaCB0aGVpciBkZXZpY2UgKGFuZCBjbGFzcykgc3VwcG9ydCB0byB1c2VyIHV0aWxpdGllcy4KKworICAgIC0gQmluZCBhIGRyaXZlciB0byB0aGF0IGRldmljZS4gIEJ1cyBmcmFtZXdvcmtzIGRvIHRoYXQgdXNpbmcgYQorICAgICAgZGV2aWNlIGRyaXZlcidzIHByb2JlKCkgcm91dGluZS4KKworICAgIC0gVGVsbCBvdGhlciBzdWJzeXN0ZW1zIHRvIGNvbmZpZ3VyZSB0aGUgbmV3IGRldmljZS4gIFByaW50CisgICAgICBxdWV1ZXMgbWF5IG5lZWQgdG8gYmUgZW5hYmxlZCwgbmV0d29ya3MgYnJvdWdodCB1cCwgZGlzaworICAgICAgcGFydGl0aW9ucyBtb3VudGVkLCBhbmQgc28gb24uICBJbiBzb21lIGNhc2VzIHRoZXNlIHdpbGwKKyAgICAgIGJlIGRyaXZlci1zcGVjaWZpYyBhY3Rpb25zLgorCitUaGlzIGludm9sdmVzIGEgbWl4IG9mIGtlcm5lbCBtb2RlIGFuZCB1c2VyIG1vZGUgYWN0aW9ucy4gIE1ha2luZyBkZXZpY2VzCitiZSBpbW1lZGlhdGVseSB1c2FibGUgbWVhbnMgdGhhdCBhbnkgdXNlciBtb2RlIGFjdGlvbnMgY2FuJ3Qgd2FpdCBmb3IgYW4KK2FkbWluaXN0cmF0b3IgdG8gZG8gdGhlbTogIHRoZSBrZXJuZWwgbXVzdCB0cmlnZ2VyIHRoZW0sIGVpdGhlciBwYXNzaXZlbHkKKyh0cmlnZ2VyaW5nIHNvbWUgbW9uaXRvcmluZyBkYWVtb24gdG8gaW52b2tlIGEgaGVscGVyIHByb2dyYW0pIG9yCithY3RpdmVseSAoY2FsbGluZyBzdWNoIGEgdXNlciBtb2RlIGhlbHBlciBwcm9ncmFtIGRpcmVjdGx5KS4KKworVGhvc2UgdHJpZ2dlcmVkIGFjdGlvbnMgbXVzdCBzdXBwb3J0IGEgc3lzdGVtJ3MgYWRtaW5pc3RyYXRpdmUgcG9saWNpZXM7CitzdWNoIHByb2dyYW1zIGFyZSBjYWxsZWQgInBvbGljeSBhZ2VudHMiIGhlcmUuICBUeXBpY2FsbHkgdGhleSBpbnZvbHZlCitzaGVsbCBzY3JpcHRzIHRoYXQgZGlzcGF0Y2ggdG8gbW9yZSBmYW1pbGlhciBhZG1pbmlzdHJhdGlvbiB0b29scy4KKworQmVjYXVzZSBzb21lIG9mIHRob3NlIGFjdGlvbnMgcmVseSBvbiBpbmZvcm1hdGlvbiBhYm91dCBkcml2ZXJzIChtZXRhZGF0YSkKK3RoYXQgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBvbmx5IHdoZW4gdGhlIGRyaXZlcnMgYXJlIGR5bmFtaWNhbGx5IGxpbmtlZCwKK3lvdSBnZXQgdGhlIGJlc3QgaG90cGx1Z2dpbmcgd2hlbiB5b3UgY29uZmlndXJlIGEgaGlnaGx5IG1vZHVsYXIgc3lzdGVtLgorCisKK0tFUk5FTCBIT1RQTFVHIEhFTFBFUiAoL3NiaW4vaG90cGx1ZykKKworVGhlcmUgaXMgYSBrZXJuZWwgcGFyYW1ldGVyOiAvcHJvYy9zeXMva2VybmVsL2hvdHBsdWcsIHdoaWNoIG5vcm1hbGx5Citob2xkcyB0aGUgcGF0aG5hbWUgIi9zYmluL2hvdHBsdWciLiAgVGhhdCBwYXJhbWV0ZXIgbmFtZXMgYSBwcm9ncmFtCit3aGljaCB0aGUga2VybmVsIG1heSBpbnZva2UgYXQgdmFyaW91cyB0aW1lcy4KKworVGhlIC9zYmluL2hvdHBsdWcgcHJvZ3JhbSBjYW4gYmUgaW52b2tlZCBieSBhbnkgc3Vic3lzdGVtIGFzIHBhcnQgb2YgaXRzCityZWFjdGlvbiB0byBhIGNvbmZpZ3VyYXRpb24gY2hhbmdlLCBmcm9tIGEgdGhyZWFkIGluIHRoYXQgc3Vic3lzdGVtLgorT25seSBvbmUgcGFyYW1ldGVyIGlzIHJlcXVpcmVkOiB0aGUgbmFtZSBvZiBhIHN1YnN5c3RlbSBiZWluZyBub3RpZmllZCBvZgorc29tZSBrZXJuZWwgZXZlbnQuICBUaGF0IG5hbWUgaXMgdXNlZCBhcyB0aGUgZmlyc3Qga2V5IGZvciBmdXJ0aGVyIGV2ZW50CitkaXNwYXRjaDsgYW55IG90aGVyIGFyZ3VtZW50IGFuZCBlbnZpcm9ubWVudCBwYXJhbWV0ZXJzIGFyZSBzcGVjaWZpZWQgYnkKK3RoZSBzdWJzeXN0ZW0gbWFraW5nIHRoYXQgaW52b2NhdGlvbi4KKworSG90cGx1ZyBzb2Z0d2FyZSBhbmQgb3RoZXIgcmVzb3VyY2VzIGlzIGF2YWlsYWJsZSBhdDoKKworCWh0dHA6Ly9saW51eC1ob3RwbHVnLnNvdXJjZWZvcmdlLm5ldAorCitNYWlsaW5nIGxpc3QgaW5mb3JtYXRpb24gaXMgYWxzbyBhdmFpbGFibGUgYXQgdGhhdCBzaXRlLgorCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworVVNCIFBPTElDWSBBR0VOVAorCitUaGUgVVNCIHN1YnN5c3RlbSBjdXJyZW50bHkgaW52b2tlcyAvc2Jpbi9ob3RwbHVnIHdoZW4gVVNCIGRldmljZXMKK2FyZSBhZGRlZCBvciByZW1vdmVkIGZyb20gc3lzdGVtLiAgVGhlIGludm9jYXRpb24gaXMgZG9uZSBieSB0aGUga2VybmVsCitodWIgd29ya3F1ZXVlIFtodWJfd3FdLCBvciBlbHNlIGFzIHBhcnQgb2Ygcm9vdCBodWIgaW5pdGlhbGl6YXRpb24KKyhkb25lIGJ5IGluaXQsIG1vZHByb2JlLCBrYXBtZCwgZXRjKS4gIEl0cyBzaW5nbGUgY29tbWFuZCBsaW5lIHBhcmFtZXRlcgoraXMgdGhlIHN0cmluZyAidXNiIiwgYW5kIGl0IHBhc3NlcyB0aGVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CisKKyAgICBBQ1RJT04gLi4uICJhZGQiLCAicmVtb3ZlIgorICAgIFBST0RVQ1QgLi4uIFVTQiB2ZW5kb3IsIHByb2R1Y3QsIGFuZCB2ZXJzaW9uIGNvZGVzIChoZXgpCisgICAgVFlQRSAuLi4gZGV2aWNlIGNsYXNzIGNvZGVzIChkZWNpbWFsKQorICAgIElOVEVSRkFDRSAuLi4gaW50ZXJmYWNlIDAgY2xhc3MgY29kZXMgKGRlY2ltYWwpCisKK0lmICJ1c2JkZXZmcyIgaXMgY29uZmlndXJlZCwgREVWSUNFIGFuZCBERVZGUyBhcmUgYWxzbyBwYXNzZWQuICBERVZJQ0UgaXMKK3RoZSBwYXRobmFtZSBvZiB0aGUgZGV2aWNlLCBhbmQgaXMgdXNlZnVsIGZvciBkZXZpY2VzIHdpdGggbXVsdGlwbGUgYW5kL29yCithbHRlcm5hdGUgaW50ZXJmYWNlcyB0aGF0IGNvbXBsaWNhdGUgZHJpdmVyIHNlbGVjdGlvbi4gIEJ5IGRlc2lnbiwgVVNCCitob3RwbHVnZ2luZyBpcyBpbmRlcGVuZGVudCBvZiAidXNiZGV2ZnMiOiAgeW91IGNhbiBkbyBtb3N0IGVzc2VudGlhbCBwYXJ0cworb2YgVVNCIGRldmljZSBzZXR1cCB3aXRob3V0IHVzaW5nIHRoYXQgZmlsZXN5c3RlbSwgYW5kIHdpdGhvdXQgcnVubmluZyBhCit1c2VyIG1vZGUgZGFlbW9uIHRvIGRldGVjdCBjaGFuZ2VzIGluIHN5c3RlbSBjb25maWd1cmF0aW9uLgorCitDdXJyZW50bHkgYXZhaWxhYmxlIHBvbGljeSBhZ2VudCBpbXBsZW1lbnRhdGlvbnMgY2FuIGxvYWQgZHJpdmVycyBmb3IKK21vZHVsZXMsIGFuZCBjYW4gaW52b2tlIGRyaXZlci1zcGVjaWZpYyBzZXR1cCBzY3JpcHRzLiAgVGhlIG5ld2VzdCBvbmVzCitsZXZlcmFnZSBVU0IgbW9kdWxlLWluaXQtdG9vbHMgc3VwcG9ydC4gIExhdGVyIGFnZW50cyBtaWdodCB1bmxvYWQgZHJpdmVycy4KKworCitVU0IgTU9EVVRJTFMgU1VQUE9SVAorCitDdXJyZW50IHZlcnNpb25zIG9mIG1vZHVsZS1pbml0LXRvb2xzIHdpbGwgY3JlYXRlIGEgIm1vZHVsZXMudXNibWFwIiBmaWxlCit3aGljaCBjb250YWlucyB0aGUgZW50cmllcyBmcm9tIGVhY2ggZHJpdmVyJ3MgTU9EVUxFX0RFVklDRV9UQUJMRS4gIFN1Y2gKK2ZpbGVzIGNhbiBiZSB1c2VkIGJ5IHZhcmlvdXMgdXNlciBtb2RlIHBvbGljeSBhZ2VudHMgdG8gbWFrZSBzdXJlIGFsbCB0aGUKK3JpZ2h0IGRyaXZlciBtb2R1bGVzIGdldCBsb2FkZWQsIGVpdGhlciBhdCBib290IHRpbWUgb3IgbGF0ZXIuCisKK1NlZSA8bGludXgvdXNiLmg+IGZvciBmdWxsIGluZm9ybWF0aW9uIGFib3V0IHN1Y2ggdGFibGUgZW50cmllczsgb3IgbG9vaworYXQgZXhpc3RpbmcgZHJpdmVycy4gIEVhY2ggdGFibGUgZW50cnkgZGVzY3JpYmVzIG9uZSBvciBtb3JlIGNyaXRlcmlhIHRvCitiZSB1c2VkIHdoZW4gbWF0Y2hpbmcgYSBkcml2ZXIgdG8gYSBkZXZpY2Ugb3IgY2xhc3Mgb2YgZGV2aWNlcy4gIFRoZQorc3BlY2lmaWMgY3JpdGVyaWEgYXJlIGlkZW50aWZpZWQgYnkgYml0cyBzZXQgaW4gIm1hdGNoX2ZsYWdzIiwgcGFpcmVkCit3aXRoIGZpZWxkIHZhbHVlcy4gIFlvdSBjYW4gY29uc3RydWN0IHRoZSBjcml0ZXJpYSBkaXJlY3RseSwgb3Igd2l0aAorbWFjcm9zIHN1Y2ggYXMgdGhlc2UsIGFuZCB1c2UgZHJpdmVyX2luZm8gdG8gc3RvcmUgbW9yZSBpbmZvcm1hdGlvbi4KKworICAgIFVTQl9ERVZJQ0UgKHZlbmRvcklkLCBwcm9kdWN0SWQpCisJLi4uIG1hdGNoaW5nIGRldmljZXMgd2l0aCBzcGVjaWZpZWQgdmVuZG9yIGFuZCBwcm9kdWN0IGlkcworICAgIFVTQl9ERVZJQ0VfVkVSICh2ZW5kb3JJZCwgcHJvZHVjdElkLCBsbywgaGkpCisJLi4uIGxpa2UgVVNCX0RFVklDRSB3aXRoIGxvIDw9IHByb2R1Y3R2ZXJzaW9uIDw9IGhpCisgICAgVVNCX0lOVEVSRkFDRV9JTkZPIChjbGFzcywgc3ViY2xhc3MsIHByb3RvY29sKQorCS4uLiBtYXRjaGluZyBzcGVjaWZpZWQgaW50ZXJmYWNlIGNsYXNzIGluZm8KKyAgICBVU0JfREVWSUNFX0lORk8gKGNsYXNzLCBzdWJjbGFzcywgcHJvdG9jb2wpCisJLi4uIG1hdGNoaW5nIHNwZWNpZmllZCBkZXZpY2UgY2xhc3MgaW5mbworCitBIHNob3J0IGV4YW1wbGUsIGZvciBhIGRyaXZlciB0aGF0IHN1cHBvcnRzIHNldmVyYWwgc3BlY2lmaWMgVVNCIGRldmljZXMKK2FuZCB0aGVpciBxdWlya3MsIG1pZ2h0IGhhdmUgYSBNT0RVTEVfREVWSUNFX1RBQkxFIGxpa2UgdGhpczoKKworICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCBteWRyaXZlcl9pZF90YWJsZVtdID0geworCXsgVVNCX0RFVklDRSAoMHg5OTk5LCAweGFhYWEpLCBkcml2ZXJfaW5mbzogUVVJUktfWCB9LAorCXsgVVNCX0RFVklDRSAoMHhiYmJiLCAweDg4ODgpLCBkcml2ZXJfaW5mbzogUVVJUktfWXxRVUlSS19aIH0sCisJLi4uCisJeyB9IC8qIGVuZCB3aXRoIGFuIGFsbC16ZXJvZXMgZW50cnkgKi8KKyAgICB9OworICAgIE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBteWRyaXZlcl9pZF90YWJsZSk7CisKK01vc3QgVVNCIGRldmljZSBkcml2ZXJzIHNob3VsZCBwYXNzIHRoZXNlIHRhYmxlcyB0byB0aGUgVVNCIHN1YnN5c3RlbSBhcword2VsbCBhcyB0byB0aGUgbW9kdWxlIG1hbmFnZW1lbnQgc3Vic3lzdGVtLiAgTm90IGFsbCwgdGhvdWdoOiBzb21lIGRyaXZlcgorZnJhbWV3b3JrcyBjb25uZWN0IHVzaW5nIGludGVyZmFjZXMgbGF5ZXJlZCBvdmVyIFVTQiwgYW5kIHNvIHRoZXkgd29uJ3QKK25lZWQgc3VjaCBhICJzdHJ1Y3QgdXNiX2RyaXZlciIuCisKK0RyaXZlcnMgdGhhdCBjb25uZWN0IGRpcmVjdGx5IHRvIHRoZSBVU0Igc3Vic3lzdGVtIHNob3VsZCBiZSBkZWNsYXJlZAorc29tZXRoaW5nIGxpa2UgdGhpczoKKworICAgIHN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBteWRyaXZlciA9IHsKKwkubmFtZQkJPSAibXlkcml2ZXIiLAorCS5pZF90YWJsZQk9IG15ZHJpdmVyX2lkX3RhYmxlLAorCS5wcm9iZQkJPSBteV9wcm9iZSwKKwkuZGlzY29ubmVjdAk9IG15X2Rpc2Nvbm5lY3QsCisKKwkvKgorCWlmIHVzaW5nIHRoZSB1c2IgY2hhcmRldiBmcmFtZXdvcms6CisJICAgIC5taW5vcgkJPSBNWV9VU0JfTUlOT1JfU1RBUlQsCisJICAgIC5mb3BzCQk9IG15X2ZpbGVfb3BzLAorCWlmIGV4cG9zaW5nIGFueSBvcGVyYXRpb25zIHRocm91Z2ggdXNiZGV2ZnM6CisJICAgIC5pb2N0bAkJPSBteV9pb2N0bCwKKwkqLworICAgIH07CisKK1doZW4gdGhlIFVTQiBzdWJzeXN0ZW0ga25vd3MgYWJvdXQgYSBkcml2ZXIncyBkZXZpY2UgSUQgdGFibGUsIGl0J3MgdXNlZCB3aGVuCitjaG9vc2luZyBkcml2ZXJzIHRvIHByb2JlKCkuICBUaGUgdGhyZWFkIGRvaW5nIG5ldyBkZXZpY2UgcHJvY2Vzc2luZyBjaGVja3MKK2RyaXZlcnMnIGRldmljZSBJRCBlbnRyaWVzIGZyb20gdGhlIE1PRFVMRV9ERVZJQ0VfVEFCTEUgYWdhaW5zdCBpbnRlcmZhY2UgYW5kCitkZXZpY2UgZGVzY3JpcHRvcnMgZm9yIHRoZSBkZXZpY2UuICBJdCB3aWxsIG9ubHkgY2FsbCBwcm9iZSgpIGlmIHRoZXJlIGlzIGEKK21hdGNoLCBhbmQgdGhlIHRoaXJkIGFyZ3VtZW50IHRvIHByb2JlKCkgd2lsbCBiZSB0aGUgZW50cnkgdGhhdCBtYXRjaGVkLgorCitJZiB5b3UgZG9uJ3QgcHJvdmlkZSBhbiBpZF90YWJsZSBmb3IgeW91ciBkcml2ZXIsIHRoZW4geW91ciBkcml2ZXIgbWF5IGdldAorcHJvYmVkIGZvciBlYWNoIG5ldyBkZXZpY2U7IHRoZSB0aGlyZCBwYXJhbWV0ZXIgdG8gcHJvYmUoKSB3aWxsIGJlIG51bGwuCisKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi91c2IvaXV1X3Bob2VuaXgudHh0IGIvRG9jdW1lbnRhdGlvbi91c2IvaXV1X3Bob2VuaXgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1ZjA0ODAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3VzYi9pdXVfcGhvZW5peC50eHQKQEAgLTAsMCArMSw4NCBAQAorSW5maW5pdHkgVXNiIFVubGltaXRlZCBSZWFkbWUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0hpIGFsbCwKKworCitUaGlzIG1vZHVsZSBwcm92aWRlIGEgc2VyaWFsIGludGVyZmFjZSB0byB1c2UgeW91cgorSVVVIHVuaXQgaW4gcGhvZW5peCBtb2RlLiBMb2FkaW5nIHRoaXMgbW9kdWxlIHdpbGwKK2JyaW5nIGEgdHR5VVNCWzAteF0gaW50ZXJmYWNlLiBUaGlzIGRyaXZlciBtdXN0IGJlCit1c2VkIGJ5IHlvdXIgZmF2b3JpdGUgYXBwbGljYXRpb24gdG8gcGlsb3QgdGhlIElVVQorCitUaGlzIGRyaXZlciBpcyBzdGlsbCBpbiBiZXRhIHN0YWdlLCBzbyBidWdzIGNhbgorb2NjdXIgYW5kIHlvdXIgc3lzdGVtIG1heSBmcmVlemUuIEFzIGZhciBJIG5vdywKK0kgbmV2ZXIgaGFkIGFueSBwcm9ibGVtIHdpdGggaXQsIGJ1dCBJJ20gbm90IGEgcmVhbAorZ3VydSwgc28gZG9uJ3QgYmxhbWUgbWUgaWYgeW91ciBzeXN0ZW0gaXMgdW5zdGFibGUKKworWW91IGNhbiBwbHVnIG1vcmUgdGhhbiBvbmUgSVVVLiBFdmVyeSB1bml0IHdpbGwKK2hhdmUgaGlzIG93biBkZXZpY2UgZmlsZSgvZGV2L3R0eVVTQjAsL2Rldi90dHlVU0IxLC4uLikKKworCisKK0hvdyB0byB0dW5lIHRoZSByZWFkZXIgc3BlZWQgPworCisgQSBmZXcgcGFyYW1ldGVycyBjYW4gYmUgdXNlZCBhdCBsb2FkIHRpbWUKKyBUbyB1c2UgcGFyYW1ldGVycywganVzdCB1bmxvYWQgdGhlIG1vZHVsZSBpZiBpdCBpcworIGFscmVhZHkgbG9hZGVkIGFuZCB1c2UgbW9kcHJvYmUgaXV1X3Bob2VuaXggcGFyYW09dmFsdWUuCisgSW4gY2FzZSBvZiBwcmVidWlsdCBtb2R1bGUsIHVzZSB0aGUgY29tbWFuZAorIGluc21vZCBpdXVfcGhvZW5peCBwYXJhbT12YWx1ZS4KKworIEV4YW1wbGU6CisKKyBtb2Rwcm9iZSBpdXVfcGhvZW5peCBjbG9ja21vZGU9MworCisgVGhlIHBhcmFtZXRlcnMgYXJlOgorCisgcGFybTogICAgICAgICAgIGNsb2NrbW9kZToxPTNNaHo1NzksMj0zTWh6NjgwLDM9Nk1oeiAoaW50KQorIHBhcm06ICAgICAgICAgICBib29zdDpvdmVyY2xvY2sgYm9vc3QgcGVyY2VudCAxMDAgdG8gNTAwIChpbnQpCisgcGFybTogICAgICAgICAgIGNkbW9kZTpDYXJkIGRldGVjdCBtb2RlIDA9bm9uZSwgMT1DRCwgMj0hQ0QsIDM9RFNSLCA0PSFEU1IsIDU9Q1RTLCA2PSFDVFMsIDc9UklORywgOD0hUklORyAoaW50KQorIHBhcm06ICAgICAgICAgICB4bWFzOnhtYXMgY29sb3IgZW5hYmxlZCBvciBub3QgKGJvb2wpCisgcGFybTogICAgICAgICAgIGRlYnVnOkRlYnVnIGVuYWJsZWQgb3Igbm90IChib29sKQorCistICBjbG9ja21vZGUgd2lsbCBwcm92aWRlIDMgZGlmZmVyZW50IGJhc2Ugc2V0dGluZ3MgY29tbW9ubHkgYWRvcHRlZCBieQorICAgZGlmZmVyZW50IHNvZnR3YXJlOgorIAkxLiAzTWh6NTc5CisJMi4gM01oejY4MAorCTMuIDZNaHoKKworLSAgYm9vc3QgcHJvdmlkZSBhIHdheSB0byBvdmVyY2xvY2sgdGhlIHJlYWRlciAoIG15IGZhdm9yaXRlIDotKSAgKQorICAgRm9yIGV4YW1wbGUgdG8gaGF2ZSBiZXN0IHBlcmZvcm1hbmNlIHRoYW4gYSBzaW1wbGUgY2xvY2ttb2RlPTMsIHRyeSB0aGlzOgorCisgICAgICBtb2Rwcm9iZSBib29zdD0xOTUKKworICAgVGhpcyB3aWxsIHB1dCB0aGUgcmVhZGVyIGluIGEgYmFzZSBvZiAzTWh6NTc5IGJ1dCBib29zdGVkIGEgMTk1ICUgIQorICAgdGhlIHJlYWwgY2xvY2sgd2lsbCBiZSBub3cgOiA2OTc5MDUwIEh6ICggNk1oejk3OSApIGFuZCB3aWxsIGluY3JlYXNlCisgICB0aGUgc3BlZWQgdG8gYSBzY29yZSAxMCB0byAyMCUgYmV0dGVyIHRoYW4gdGhlIHNpbXBsZSBjbG9ja21vZGU9MyAhISEKKworCistICBjZG1vZGUgcGVybWl0IHRvIHNldHVwIHRoZSBzaWduYWwgdXNlZCB0byBpbmZvcm0gdGhlIHVzZXJsYW5kICggaW9jdGwgYW5zd2VyICkKKyAgIGlmIHRoZSBjYXJkIGlzIHByZXNlbnQgb3Igbm90LiBFaWdodCBzaWduYWxzIGFyZSBwb3NzaWJsZS4KKworLSAgeG1hcyBpcyBjb21wbGV0ZWx5IHVzZWxlc3MgZXhjZXB0IGZvciB5b3VyIGV5ZXMuIFRoaXMgaXMgb25lIG9mIG15IGZyaWVuZCB3aG8gd2FzCisgICBzbyBzYWQgdG8gaGF2ZSBhIG5pY2UgZGV2aWNlIGxpa2UgdGhlIGl1dSB3aXRob3V0IHNlZWluZyBhbGwgY29sb3IgcmFuZ2UgYXZhaWxhYmxlLgorICAgU28gSSBoYXZlIGFkZGVkIHRoaXMgb3B0aW9uIHRvIHBlcm1pdCBoaW0gdG8gc2VlIGEgbG90IG9mIGNvbG9yICggZWFjaCBhY3Rpdml0eSBjaGFuZ2UgdGhlIGNvbG9yCisgICBhbmQgdGhlIGZyZXF1ZW5jeSByYW5kb21seSApCisKKy0gIGRlYnVnIHdpbGwgcHJvZHVjZSBhIGxvdCBvZiBkZWJ1Z2dpbmcgbWVzc2FnZXMuLi4KKworCisgTGFzdCBub3RlczoKKworIERvbid0IHdvcnJ5IGFib3V0IHRoZSBzZXJpYWwgc2V0dGluZ3MsIHRoZSBzZXJpYWwgZW11bGF0aW9uCisgaXMgYW4gYWJzdHJhY3Rpb24sIHNvIHVzZSBhbnkgc3BlZWQgb3IgcGFyaXR5IHNldHRpbmcgd2lsbAorIHdvcmsuICggVGhpcyB3aWxsIG5vdCBjaGFuZ2UgYW55dGhpbmcgKS5MYXRlciBJIHdpbGwgcGVyaGFwcworIHVzZSB0aGlzIHNldHRpbmdzIHRvIGRlZHVjZSBkZSBib29zdCBidXQgaXMgdGhhdCBmZWF0dXJlCisgcmVhbGx5IG5lY2Vzc2FyeSA/CisgVGhlIGF1dG9kZXRlY3QgZmVhdHVyZSB1c2VkIGlzIHRoZSBzZXJpYWwgQ0QuIElmIHRoYXQgZG9lc24ndAorIHdvcmsgZm9yIHlvdXIgc29mdHdhcmUsIGRpc2FibGUgZGV0ZWN0aW9uIG1lY2hhbmlzbSBpbiBpdC4KKworCisgSGF2ZSBmdW4gIQorCisgQWxhaW4gRGVncmVmZmUKKworIGVjemVtYShhdCllY3plLmNvbQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi91c2IvbGludXgtY2RjLWFjbS5pbmYgYi9Eb2N1bWVudGF0aW9uL3VzYi9saW51eC1jZGMtYWNtLmluZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGZmYzI3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi91c2IvbGludXgtY2RjLWFjbS5pbmYKQEAgLTAsMCArMSwxMDcgQEAKKzsgV2luZG93cyBVU0IgQ0RDIEFDTSBTZXR1cCBGaWxlCisKKzsgQmFzZWQgb24gSU5GIHRlbXBsYXRlIHdoaWNoIHdhczoKKzsgICAgIENvcHlyaWdodCAoYykgMjAwMCBNaWNyb3NvZnQgQ29ycG9yYXRpb24KKzsgICAgIENvcHlyaWdodCAoYykgMjAwNyBNaWNyb2NoaXAgVGVjaG5vbG9neSBJbmMuCis7IGxpa2VseSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBNTFBMIGFzIGZvdW5kIGF0OgorOyAgICA8aHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9jYzMwMDM4OS5hc3B4I01MUEw+LgorOyBGb3IgdXNlIG9ubHkgb24gV2luZG93cyBvcGVyYXRpbmcgc3lzdGVtcy4KKworW1ZlcnNpb25dCitTaWduYXR1cmU9IiRXaW5kb3dzIE5UJCIKK0NsYXNzPVBvcnRzCitDbGFzc0d1aWQ9ezREMzZFOTc4LUUzMjUtMTFDRS1CRkMxLTA4MDAyQkUxMDMxOH0KK1Byb3ZpZGVyPSVMaW51eCUKK0RyaXZlclZlcj0xMS8xNS8yMDA3LDUuMS4yNjAwLjAKKworW01hbnVmYWN0dXJlcl0KKyVMaW51eCU9RGV2aWNlTGlzdCwgTlRhbWQ2NAorCitbRGVzdGluYXRpb25EaXJzXQorRGVmYXVsdERlc3REaXI9MTIKKworCis7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis7ICBXaW5kb3dzIDIwMDAvWFAvVmlzdGEtMzJiaXQgU2VjdGlvbnMKKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworW0RyaXZlckluc3RhbGwubnRdCitpbmNsdWRlPW1kbWNwcS5pbmYKK0NvcHlGaWxlcz1Ecml2ZXJDb3B5RmlsZXMubnQKK0FkZFJlZz1Ecml2ZXJJbnN0YWxsLm50LkFkZFJlZworCitbRHJpdmVyQ29weUZpbGVzLm50XQordXNic2VyLnN5cywsLDB4MjAKKworW0RyaXZlckluc3RhbGwubnQuQWRkUmVnXQorSEtSLCxEZXZMb2FkZXIsLCpudGtlcm4KK0hLUiwsTlRNUERyaXZlciwsVVNCU0VSLnN5cworSEtSLCxFbnVtUHJvcFBhZ2VzMzIsLCJNc1BvcnRzLmRsbCxTZXJpYWxQb3J0UHJvcFBhZ2VQcm92aWRlciIKKworW0RyaXZlckluc3RhbGwubnQuU2VydmljZXNdCitBZGRTZXJ2aWNlPXVzYnNlciwgMHgwMDAwMDAwMiwgRHJpdmVyU2VydmljZS5udAorCitbRHJpdmVyU2VydmljZS5udF0KK0Rpc3BsYXlOYW1lPSVTRVJWSUNFJQorU2VydmljZVR5cGU9MQorU3RhcnRUeXBlPTMKK0Vycm9yQ29udHJvbD0xCitTZXJ2aWNlQmluYXJ5PSUxMiVcVVNCU0VSLnN5cworCis7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis7ICBWaXN0YS02NGJpdCBTZWN0aW9ucworOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitbRHJpdmVySW5zdGFsbC5OVGFtZDY0XQoraW5jbHVkZT1tZG1jcHEuaW5mCitDb3B5RmlsZXM9RHJpdmVyQ29weUZpbGVzLk5UYW1kNjQKK0FkZFJlZz1Ecml2ZXJJbnN0YWxsLk5UYW1kNjQuQWRkUmVnCisKK1tEcml2ZXJDb3B5RmlsZXMuTlRhbWQ2NF0KK1VTQlNFUi5zeXMsLCwweDIwCisKK1tEcml2ZXJJbnN0YWxsLk5UYW1kNjQuQWRkUmVnXQorSEtSLCxEZXZMb2FkZXIsLCpudGtlcm4KK0hLUiwsTlRNUERyaXZlciwsVVNCU0VSLnN5cworSEtSLCxFbnVtUHJvcFBhZ2VzMzIsLCJNc1BvcnRzLmRsbCxTZXJpYWxQb3J0UHJvcFBhZ2VQcm92aWRlciIKKworW0RyaXZlckluc3RhbGwuTlRhbWQ2NC5TZXJ2aWNlc10KK0FkZFNlcnZpY2U9dXNic2VyLCAweDAwMDAwMDAyLCBEcml2ZXJTZXJ2aWNlLk5UYW1kNjQKKworW0RyaXZlclNlcnZpY2UuTlRhbWQ2NF0KK0Rpc3BsYXlOYW1lPSVTRVJWSUNFJQorU2VydmljZVR5cGU9MQorU3RhcnRUeXBlPTMKK0Vycm9yQ29udHJvbD0xCitTZXJ2aWNlQmluYXJ5PSUxMiVcVVNCU0VSLnN5cworCisKKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzsgIFZlbmRvciBhbmQgUHJvZHVjdCBJRCBEZWZpbml0aW9ucworOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorOyBXaGVuIGRldmVsb3BpbmcgeW91ciBVU0IgZGV2aWNlLCB0aGUgVklEIGFuZCBQSUQgdXNlZCBpbiB0aGUgUEMgc2lkZQorOyBhcHBsaWNhdGlvbiBwcm9ncmFtIGFuZCB0aGUgZmlybXdhcmUgb24gdGhlIG1pY3JvY29udHJvbGxlciBtdXN0IG1hdGNoLgorOyBNb2RpZnkgdGhlIGJlbG93IGxpbmUgdG8gdXNlIHlvdXIgVklEIGFuZCBQSUQuICBVc2UgdGhlIGZvcm1hdCBhcyBzaG93bgorOyBiZWxvdy4KKzsgTm90ZTogT25lIElORiBmaWxlIGNhbiBiZSB1c2VkIGZvciBtdWx0aXBsZSBkZXZpY2VzIHdpdGggZGlmZmVyZW50Cis7ICAgICAgIFZJRCBhbmQgUElEcy4gIEZvciBlYWNoIHN1cHBvcnRlZCBkZXZpY2UsIGFwcGVuZAorOyAgICAgICAiLFVTQlxWSURfeHh4eCZQSURfeXl5eSIgdG8gdGhlIGVuZCBvZiB0aGUgbGluZS4KKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1tTb3VyY2VEaXNrc0ZpbGVzXQorW1NvdXJjZURpc2tzTmFtZXNdCitbRGV2aWNlTGlzdF0KKyVERVNDUklQVElPTiU9RHJpdmVySW5zdGFsbCwgVVNCXFZJRF8wNTI1JlBJRF9BNEE3LCBVU0JcVklEXzFENkImUElEXzAxMDQmTUlfMDIsIFVTQlxWSURfMUQ2QiZQSURfMDEwNiZNSV8wMAorCitbRGV2aWNlTGlzdC5OVGFtZDY0XQorJURFU0NSSVBUSU9OJT1Ecml2ZXJJbnN0YWxsLCBVU0JcVklEXzA1MjUmUElEX0E0QTcsIFVTQlxWSURfMUQ2QiZQSURfMDEwNCZNSV8wMiwgVVNCXFZJRF8xRDZCJlBJRF8wMTA2Jk1JXzAwCisKKworOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorOyAgU3RyaW5nIERlZmluaXRpb25zCis7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis7TW9kaWZ5IHRoZXNlIHN0cmluZ3MgdG8gY3VzdG9taXplIHlvdXIgZGV2aWNlCis7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitbU3RyaW5nc10KK0xpbnV4ICAgICAgICAgICAgICAgPSAiTGludXggRGV2ZWxvcGVyIENvbW11bml0eSIKK0RFU0NSSVBUSU9OICAgICAgICAgPSAiR2FkZ2V0IFNlcmlhbCIKK1NFUlZJQ0UgICAgICAgICAgICAgPSAiVVNCIFJTLTIzMiBFbXVsYXRpb24gRHJpdmVyIgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi91c2IvbGludXguaW5mIGIvRG9jdW1lbnRhdGlvbi91c2IvbGludXguaW5mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmZmE3MTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3VzYi9saW51eC5pbmYKQEAgLTAsMCArMSw2NiBAQAorOyBCYXNlZCBvbiB0ZW1wbGF0ZSBJTkYgZmlsZSBmb3VuZCBhdAorOyAgICA8aHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2ZmNTcwNjIwLmFzcHg+Cis7IHdoaWNoIHdhczoKKzsgICAgQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24KKzsgYW5kIHJlbGVhc2VkIHVuZGVyIHRoZSBNTFBMIGFzIGZvdW5kIGF0OgorOyAgICA8aHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9jYzMwMDM4OS5hc3B4I01MUEw+LgorOyBGb3IgdXNlIG9ubHkgb24gV2luZG93cyBvcGVyYXRpbmcgc3lzdGVtcy4KKworW1ZlcnNpb25dCitTaWduYXR1cmUgICAgICAgICAgID0gIiRXaW5kb3dzIE5UJCIKK0NsYXNzICAgICAgICAgICAgICAgPSBOZXQKK0NsYXNzR1VJRCAgICAgICAgICAgPSB7NGQzNmU5NzItZTMyNS0xMWNlLWJmYzEtMDgwMDJiZTEwMzE4fQorUHJvdmlkZXIgICAgICAgICAgICA9ICVMaW51eCUKK0RyaXZlclZlciAgICAgICAgICAgPSAwNi8yMS8yMDA2LDYuMC42MDAwLjE2Mzg0CisKK1tNYW51ZmFjdHVyZXJdCislTGludXglICAgICAgICAgICAgID0gTGludXhEZXZpY2VzLE5UeDg2LE5UYW1kNjQsTlRpYTY0CisKKzsgRGVjb3JhdGlvbiBmb3IgeDg2IGFyY2hpdGVjdHVyZQorW0xpbnV4RGV2aWNlcy5OVHg4Nl0KKyVMaW51eERldmljZSUgICAgICAgPSBSTkRJUy5OVC41LjEsIFVTQlxWSURfMDUyNSZQSURfYTRhMiwgVVNCXFZJRF8xZDZiJlBJRF8wMTA0Jk1JXzAwCisKKzsgRGVjb3JhdGlvbiBmb3IgeDY0IGFyY2hpdGVjdHVyZQorW0xpbnV4RGV2aWNlcy5OVGFtZDY0XQorJUxpbnV4RGV2aWNlJSAgICAgICA9IFJORElTLk5ULjUuMSwgVVNCXFZJRF8wNTI1JlBJRF9hNGEyLCBVU0JcVklEXzFkNmImUElEXzAxMDQmTUlfMDAKKworOyBEZWNvcmF0aW9uIGZvciBpYTY0IGFyY2hpdGVjdHVyZQorW0xpbnV4RGV2aWNlcy5OVGlhNjRdCislTGludXhEZXZpY2UlICAgICAgID0gUk5ESVMuTlQuNS4xLCBVU0JcVklEXzA1MjUmUElEX2E0YTIsIFVTQlxWSURfMWQ2YiZQSURfMDEwNCZNSV8wMAorCis7QEBAIFRoaXMgaXMgdGhlIGNvbW1vbiBzZXR0aW5nIGZvciBzZXR1cAorW0NvbnRyb2xGbGFnc10KK0V4Y2x1ZGVGcm9tU2VsZWN0PSoKKworOyBEREluc3RhbGwgc2VjdGlvbgorOyBSZWZlcmVuY2VzIHRoZSBpbi1idWlsZCBOZXRybmRpcy5pbmYKK1tSTkRJUy5OVC41LjFdCitDaGFyYWN0ZXJpc3RpY3MgICAgID0gMHg4NCAgIDsgTkNGX1BIWVNJQ0FMICsgTkNGX0hBU19VSQorQnVzVHlwZSAgICAgICAgICAgICA9IDE1Cis7IE5FVkVSIFJFTU9WRSBUSEUgRk9MTE9XSU5HIFJFRkVSRU5DRSBGT1IgTkVUUk5ESVMuSU5GCitpbmNsdWRlICAgICAgICAgICAgID0gbmV0cm5kaXMuaW5mCituZWVkcyAgICAgICAgICAgICAgID0gVXNiX1JuZGlzLm5kaQorQWRkUmVnICAgICAgICAgICAgICA9IFJuZGlzX0FkZFJlZ19WaXN0YQorCis7IERESW5zdGFsLlNlcnZpY2VzIHNlY3Rpb24KK1tSTkRJUy5OVC41LjEuU2VydmljZXNdCitpbmNsdWRlICAgICAgICAgICAgID0gbmV0cm5kaXMuaW5mCituZWVkcyAgICAgICAgICAgICAgID0gVXNiX1JuZGlzLm5kaS5TZXJ2aWNlcworCis7IE9wdGlvbmFsIHJlZ2lzdHJ5IHNldHRpbmdzLiBZb3UgY2FuIG1vZGlmeSBhcyBuZWVkZWQuCitbUk5ESVNfQWRkUmVnX1Zpc3RhXQorSEtSLCBORElccGFyYW1zXFZpc3RhUHJvcGVydHksIFBhcmFtRGVzYywgIDAsICVWaXN0YV9Qcm9wZXJ0eSUKK0hLUiwgTkRJXHBhcmFtc1xWaXN0YVByb3BlcnR5LCB0eXBlLCAgICAgICAwLCAiZWRpdCIKK0hLUiwgTkRJXHBhcmFtc1xWaXN0YVByb3BlcnR5LCBMaW1pdFRleHQsICAwLCAiMTIiCitIS1IsIE5ESVxwYXJhbXNcVmlzdGFQcm9wZXJ0eSwgVXBwZXJDYXNlLCAgMCwgIjEiCitIS1IsIE5ESVxwYXJhbXNcVmlzdGFQcm9wZXJ0eSwgZGVmYXVsdCwgICAgMCwgIiAiCitIS1IsIE5ESVxwYXJhbXNcVmlzdGFQcm9wZXJ0eSwgb3B0aW9uYWwsICAgMCwgIjEiCisKKzsgTm8gc3lzIGNvcHlmaWxlcyAtIHRoZSBzeXMgZmlsZXMgYXJlIGFscmVhZHkgaW4tYnVpbGQKKzsgKHBhcnQgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0pLgorOyBXZSBkbyBub3Qgc3VwcG9ydCBYUCBTUDEtLCAyMDAzIFNQMS0sIE1FLCA5eC4KKworW1N0cmluZ3NdCitMaW51eCAgICAgICAgICAgICAgICAgPSAiTGludXggRGV2ZWxvcGVyIENvbW11bml0eSIKK0xpbnV4RGV2aWNlICAgICAgICAgICA9ICJMaW51eCBVU0IgRXRoZXJuZXQvUk5ESVMgR2FkZ2V0IgorVmlzdGFfUHJvcGVydHkgICAgICAgID0gIk9wdGlvbmFsIFZpc3RhIFByb3BlcnR5IgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi91c2IvbWFzcy1zdG9yYWdlLnR4dCBiL0RvY3VtZW50YXRpb24vdXNiL21hc3Mtc3RvcmFnZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg5ODAzYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdXNiL21hc3Mtc3RvcmFnZS50eHQKQEAgLTAsMCArMSwyMjUgQEAKKyogT3ZlcnZpZXcKKworICBNYXNzIFN0b3JhZ2UgR2FkZ2V0IChvciBNU0cpIGFjdHMgYXMgYSBVU0IgTWFzcyBTdG9yYWdlIGRldmljZSwKKyAgYXBwZWFyaW5nIHRvIHRoZSBob3N0IGFzIGEgZGlzayBvciBhIENELVJPTSBkcml2ZS4gIEl0IHN1cHBvcnRzCisgIG11bHRpcGxlIGxvZ2ljYWwgdW5pdHMgKExVTnMpLiAgQmFja2luZyBzdG9yYWdlIGZvciBlYWNoIExVTiBpcworICBwcm92aWRlZCBieSBhIHJlZ3VsYXIgZmlsZSBvciBhIGJsb2NrIGRldmljZSwgYWNjZXNzIGNhbiBiZSBsaW1pdGVkCisgIHRvIHJlYWQtb25seSwgYW5kIGdhZGdldCBjYW4gaW5kaWNhdGUgdGhhdCBpdCBpcyByZW1vdmFibGUgYW5kL29yCisgIENELVJPTSAodGhlIGxhdHRlciBpbXBsaWVzIHJlYWQtb25seSBhY2Nlc3MpLgorCisgIEl0cyByZXF1aXJlbWVudHMgYXJlIG1vZGVzdDsgb25seSBhIGJ1bGstaW4gYW5kIGEgYnVsay1vdXQgZW5kcG9pbnQKKyAgYXJlIG5lZWRlZC4gIFRoZSBtZW1vcnkgcmVxdWlyZW1lbnQgYW1vdW50cyB0byB0d28gMTZLIGJ1ZmZlcnMuCisgIFN1cHBvcnQgaXMgaW5jbHVkZWQgZm9yIGZ1bGwtc3BlZWQsIGhpZ2gtc3BlZWQgYW5kIFN1cGVyU3BlZWQKKyAgb3BlcmF0aW9uLgorCisgIE5vdGUgdGhhdCB0aGUgZHJpdmVyIGlzIHNsaWdodGx5IG5vbi1wb3J0YWJsZSBpbiB0aGF0IGl0IGFzc3VtZXMKKyAgYSBzaW5nbGUgbWVtb3J5L0RNQSBidWZmZXIgd2lsbCBiZSB1c2FibGUgZm9yIGJ1bGstaW4gYW5kIGJ1bGstb3V0CisgIGVuZHBvaW50cy4gIFdpdGggbW9zdCBkZXZpY2UgY29udHJvbGxlcnMgdGhpcyBpcyBub3QgYW4gaXNzdWUsIGJ1dAorICB0aGVyZSBtYXkgYmUgc29tZSB3aXRoIGhhcmR3YXJlIHJlc3RyaWN0aW9ucyB0aGF0IHByZXZlbnQgYSBidWZmZXIKKyAgZnJvbSBiZWluZyB1c2VkIGJ5IG1vcmUgdGhhbiBvbmUgZW5kcG9pbnQuCisKKyAgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgaG93IHRvIHVzZSB0aGUgZ2FkZ2V0IGZyb20gdXNlciBzcGFjZSwgaXRzCisgIHJlbGF0aW9uIHRvIG1hc3Mgc3RvcmFnZSBmdW5jdGlvbiAob3IgTVNGKSBhbmQgZGlmZmVyZW50IGdhZGdldHMKKyAgdXNpbmcgaXQsIGFuZCBob3cgaXQgZGlmZmVycyBmcm9tIEZpbGUgU3RvcmFnZSBHYWRnZXQgKG9yIEZTRykKKyAgKHdoaWNoIGlzIG5vIGxvbmdlciBpbmNsdWRlZCBpbiBMaW51eCkuICBJdCB3aWxsIHRhbGsgb25seSBicmllZmx5CisgIGFib3V0IGhvdyB0byB1c2UgTVNGIHdpdGhpbiBjb21wb3NpdGUgZ2FkZ2V0cy4KKworKiBNb2R1bGUgcGFyYW1ldGVycworCisgIFRoZSBtYXNzIHN0b3JhZ2UgZ2FkZ2V0IGFjY2VwdHMgdGhlIGZvbGxvd2luZyBtYXNzIHN0b3JhZ2Ugc3BlY2lmaWMKKyAgbW9kdWxlIHBhcmFtZXRlcnM6CisKKyAgLSBmaWxlPWZpbGVuYW1lWyxmaWxlbmFtZS4uLl0KKworICAgIFRoaXMgcGFyYW1ldGVyIGxpc3RzIHBhdGhzIHRvIGZpbGVzIG9yIGJsb2NrIGRldmljZXMgdXNlZCBmb3IKKyAgICBiYWNraW5nIHN0b3JhZ2UgZm9yIGVhY2ggbG9naWNhbCB1bml0LiAgVGhlcmUgbWF5IGJlIGF0IG1vc3QKKyAgICBGU0dfTUFYX0xVTlMgKDgpIExVTnMgc2V0LiAgSWYgbW9yZSBmaWxlcyBhcmUgc3BlY2lmaWVkLCB0aGV5IHdpbGwKKyAgICBiZSBzaWxlbnRseSBpZ25vcmVkLiAgU2VlIGFsc28g4oCcbHVuc+KAnSBwYXJhbWV0ZXIuCisKKyAgICAqQkVXQVJFKiB0aGF0IGlmIGEgZmlsZSBpcyB1c2VkIGFzIGEgYmFja2luZyBzdG9yYWdlLCBpdCBtYXkgbm90CisgICAgYmUgbW9kaWZpZWQgYnkgYW55IG90aGVyIHByb2Nlc3MuICBUaGlzIGlzIGJlY2F1c2UgdGhlIGhvc3QKKyAgICBhc3N1bWVzIHRoZSBkYXRhIGRvZXMgbm90IGNoYW5nZSB3aXRob3V0IGl0cyBrbm93bGVkZ2UuICBJdCBtYXkgYmUKKyAgICByZWFkLCBidXQgKGlmIHRoZSBsb2dpY2FsIHVuaXQgaXMgd3JpdGFibGUpIGR1ZSB0byBidWZmZXJpbmcgb24KKyAgICB0aGUgaG9zdCBzaWRlLCB0aGUgY29udGVudHMgYXJlIG5vdCB3ZWxsIGRlZmluZWQuCisKKyAgICBUaGUgc2l6ZSBvZiB0aGUgbG9naWNhbCB1bml0IHdpbGwgYmUgcm91bmRlZCBkb3duIHRvIGEgZnVsbAorICAgIGxvZ2ljYWwgYmxvY2suICBUaGUgbG9naWNhbCBibG9jayBzaXplIGlzIDIwNDggYnl0ZXMgZm9yIExVTnMKKyAgICBzaW11bGF0aW5nIENELVJPTSwgYmxvY2sgc2l6ZSBvZiB0aGUgZGV2aWNlIGlmIHRoZSBiYWNraW5nIGZpbGUgaXMKKyAgICBhIGJsb2NrIGRldmljZSwgb3IgNTEyIGJ5dGVzIG90aGVyd2lzZS4KKworICAtIHJlbW92YWJsZT1iWyxiLi4uXQorCisgICAgVGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHdoZXRoZXIgZWFjaCBsb2dpY2FsIHVuaXQgc2hvdWxkIGJlCisgICAgcmVtb3ZhYmxlLiAg4oCcYuKAnSBoZXJlIGlzIGVpdGhlciDigJx54oCdLCDigJxZ4oCdIG9yIOKAnDHigJ0gZm9yIHRydWUgb3Ig4oCcbuKAnSwKKyAgICDigJxO4oCdIG9yIOKAnDDigJ0gZm9yIGZhbHNlLgorCisgICAgSWYgdGhpcyBvcHRpb24gaXMgc2V0IGZvciBhIGxvZ2ljYWwgdW5pdCwgZ2FkZ2V0IHdpbGwgYWNjZXB0IGFuCisgICAg4oCcZWplY3TigJ0gU0NTSSByZXF1ZXN0IChTdGFydC9TdG9wIFVuaXQpLiAgV2hlbiBpdCBpcyBzZW50LCB0aGUKKyAgICBiYWNraW5nIGZpbGUgd2lsbCBiZSBjbG9zZWQgdG8gc2ltdWxhdGUgZWplY3Rpb24gYW5kIHRoZSBsb2dpY2FsCisgICAgdW5pdCB3aWxsIG5vdCBiZSBtb3VudGFibGUgYnkgdGhlIGhvc3QgdW50aWwgYSBuZXcgYmFja2luZyBmaWxlIGlzCisgICAgc3BlY2lmaWVkIGJ5IHVzZXJzcGFjZSBvbiB0aGUgZGV2aWNlIChzZWUg4oCcc3lzZnMgZW50cmllc+KAnQorICAgIHNlY3Rpb24pLgorCisgICAgSWYgYSBsb2dpY2FsIHVuaXQgaXMgbm90IHJlbW92YWJsZSAodGhlIGRlZmF1bHQpLCBhIGJhY2tpbmcgZmlsZQorICAgIG11c3QgYmUgc3BlY2lmaWVkIGZvciBpdCB3aXRoIHRoZSDigJxmaWxl4oCdIHBhcmFtZXRlciBhcyB0aGUgbW9kdWxlCisgICAgaXMgbG9hZGVkLiAgVGhlIHNhbWUgYXBwbGllcyBpZiB0aGUgbW9kdWxlIGlzIGJ1aWx0IGluLCBubworICAgIGV4Y2VwdGlvbnMuCisKKyAgICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgZmxhZyBpcyBmYWxzZSwgKkhPV0VWRVIqIGl0IHVzZWQgdG8gYmUKKyAgICB0cnVlLiAgVGhpcyBoYXMgYmVlbiBjaGFuZ2VkIHRvIGJldHRlciBtYXRjaCBGaWxlIFN0b3JhZ2UgR2FkZ2V0CisgICAgYW5kIGJlY2F1c2UgaXQgc2VlbXMgbGlrZSBhIHNhbmVyIGRlZmF1bHQgYWZ0ZXIgYWxsLiAgVGh1cyB0bworICAgIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBrZXJuZWxzLCBpdCdzIGJlc3QgdG8gc3BlY2lmeQorICAgIHRoZSBkZWZhdWx0IHZhbHVlcy4gIEFsc28sIGlmIG9uZSByZWxpZWQgb24gb2xkIGRlZmF1bHQsIGV4cGxpY2l0CisgICAg4oCcbuKAnSBuZWVkcyB0byBiZSBzcGVjaWZpZWQgbm93LgorCisgICAgTm90ZSB0aGF0IOKAnHJlbW92YWJsZeKAnSBtZWFucyB0aGUgbG9naWNhbCB1bml0J3MgbWVkaWEgY2FuIGJlCisgICAgZWplY3RlZCBvciByZW1vdmVkIChhcyBpcyB0cnVlIGZvciBhIENELVJPTSBkcml2ZSBvciBhIGNhcmQKKyAgICByZWFkZXIpLiAgSXQgZG9lcyAqbm90KiBtZWFuIHRoYXQgdGhlIGVudGlyZSBnYWRnZXQgY2FuIGJlCisgICAgdW5wbHVnZ2VkIGZyb20gdGhlIGhvc3Q7IHRoZSBwcm9wZXIgdGVybSBmb3IgdGhhdCBpcworICAgIOKAnGhvdC11bnBsdWdnYWJsZeKAnS4KKworICAtIGNkcm9tPWJbLGIuLi5dCisKKyAgICBUaGlzIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hldGhlciBlYWNoIGxvZ2ljYWwgdW5pdCBzaG91bGQgc2ltdWxhdGUKKyAgICBDRC1ST00uICBUaGUgZGVmYXVsdCBpcyBmYWxzZS4KKworICAtIHJvPWJbLGIuLi5dCisKKyAgICBUaGlzIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hldGhlciBlYWNoIGxvZ2ljYWwgdW5pdCBzaG91bGQgYmUKKyAgICByZXBvcnRlZCBhcyByZWFkIG9ubHkuICBUaGlzIHdpbGwgcHJldmVudCBob3N0IGZyb20gbW9kaWZ5aW5nIHRoZQorICAgIGJhY2tpbmcgZmlsZXMuCisKKyAgICBOb3RlIHRoYXQgaWYgdGhpcyBmbGFnIGZvciBnaXZlbiBsb2dpY2FsIHVuaXQgaXMgZmFsc2UgYnV0IHRoZQorICAgIGJhY2tpbmcgZmlsZSBjb3VsZCBub3QgYmUgb3BlbmVkIGluIHJlYWQvd3JpdGUgbW9kZSwgdGhlIGdhZGdldAorICAgIHdpbGwgZmFsbCBiYWNrIHRvIHJlYWQgb25seSBtb2RlIGFueXdheS4KKworICAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBub24tQ0QtUk9NIGxvZ2ljYWwgdW5pdHMgaXMgZmFsc2U7IGZvcgorICAgIGxvZ2ljYWwgdW5pdHMgc2ltdWxhdGluZyBDRC1ST00gaXQgaXMgZm9yY2VkIHRvIHRydWUuCisKKyAgLSBub2Z1YT1iWyxiLi4uXQorCisgICAgVGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHdoZXRoZXIgRlVBIGZsYWcgc2hvdWxkIGJlIGlnbm9yZWQgaW4gU0NTSQorICAgIFdyaXRlMTAgYW5kIFdyaXRlMTIgY29tbWFuZHMgc2VudCB0byBnaXZlbiBsb2dpY2FsIHVuaXRzLgorCisgICAgTVMgV2luZG93cyBtb3VudHMgcmVtb3ZhYmxlIHN0b3JhZ2UgaW4g4oCcUmVtb3ZhbCBvcHRpbWlzZWQgbW9kZeKAnSBieQorICAgIGRlZmF1bHQuICBBbGwgdGhlIHdyaXRlcyB0byB0aGUgbWVkaWEgYXJlIHN5bmNocm9ub3VzLCB3aGljaCBpcworICAgIGFjaGlldmVkIGJ5IHNldHRpbmcgdGhlIEZVQSAoRm9yY2UgVW5pdCBBY2Nlc3MpIGJpdCBpbiBTQ1NJCisgICAgV3JpdGUoMTAsMTIpIGNvbW1hbmRzLiAgVGhpcyBmb3JjZXMgZWFjaCB3cml0ZSB0byB3YWl0IHVudGlsIHRoZQorICAgIGRhdGEgaGFzIGFjdHVhbGx5IGJlZW4gd3JpdHRlbiBvdXQgYW5kIHByZXZlbnRzIEkvTyByZXF1ZXN0cworICAgIGFnZ3JlZ2F0aW9uIGluIGJsb2NrIGxheWVyIGRyYW1hdGljYWxseSBkZWNyZWFzaW5nIHBlcmZvcm1hbmNlLgorCisgICAgTm90ZSB0aGF0IHRoaXMgbWF5IG1lYW4gdGhhdCBpZiB0aGUgZGV2aWNlIGlzIHBvd2VyZWQgZnJvbSBVU0IgYW5kCisgICAgdGhlIHVzZXIgdW5wbHVncyB0aGUgZGV2aWNlIHdpdGhvdXQgdW5tb3VudGluZyBpdCBmaXJzdCAod2hpY2ggYXQKKyAgICBsZWFzdCBzb21lIFdpbmRvd3MgdXNlcnMgZG8pLCB0aGUgZGF0YSBtYXkgYmUgbG9zdC4KKworICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGZhbHNlLgorCisgIC0gbHVucz1OCisKKyAgICBUaGlzIHBhcmFtZXRlciBzcGVjaWZpZXMgbnVtYmVyIG9mIGxvZ2ljYWwgdW5pdHMgdGhlIGdhZGdldCB3aWxsCisgICAgaGF2ZS4gIEl0IGlzIGxpbWl0ZWQgYnkgRlNHX01BWF9MVU5TICg4KSBhbmQgaGlnaGVyIHZhbHVlIHdpbGwgYmUKKyAgICBjYXBwZWQuCisKKyAgICBJZiB0aGlzIHBhcmFtZXRlciBpcyBwcm92aWRlZCwgYW5kIHRoZSBudW1iZXIgb2YgZmlsZXMgc3BlY2lmaWVkCisgICAgaW4g4oCcZmlsZeKAnSBhcmd1bWVudCBpcyBncmVhdGVyIHRoZW4gdGhlIHZhbHVlIG9mIOKAnGx1bnPigJ0sIGFsbCBleGNlc3MKKyAgICBmaWxlcyB3aWxsIGJlIGlnbm9yZWQuCisKKyAgICBJZiB0aGlzIHBhcmFtZXRlciBpcyBub3QgcHJlc2VudCwgdGhlIG51bWJlciBvZiBsb2dpY2FsIHVuaXRzIHdpbGwKKyAgICBiZSBkZWR1Y2VkIGZyb20gdGhlIG51bWJlciBvZiBmaWxlcyBzcGVjaWZpZWQgaW4gdGhlIOKAnGZpbGXigJ0KKyAgICBwYXJhbWV0ZXIuICBJZiB0aGUgZmlsZSBwYXJhbWV0ZXIgaXMgbWlzc2luZyBhcyB3ZWxsLCBvbmUgaXMKKyAgICBhc3N1bWVkLgorCisgIC0gc3RhbGw9YgorCisgICAgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGdhZGdldCBpcyBhbGxvd2VkIHRvIGhhbHQgYnVsayBlbmRwb2ludHMuCisgICAgVGhlIGRlZmF1bHQgaXMgZGV0ZXJtaW5lZCBhY2NvcmRpbmcgdG8gdGhlIHR5cGUgb2YgVVNCIGRldmljZQorICAgIGNvbnRyb2xsZXIsIGJ1dCB1c3VhbGx5IHRydWUuCisKKyAgSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlLCB0aGUgZ2FkZ2V0IGFsc28gYWNjZXB0cyB0aGUgZm9sbG93aW5nCisgIHBhcmFtZXRlcnMgZGVmaW5lZCBieSB0aGUgY29tcG9zaXRlIGZyYW1ld29yayAodGhleSBhcmUgY29tbW9uIHRvCisgIGFsbCBjb21wb3NpdGUgZ2FkZ2V0cyBzbyBqdXN0IGEgcXVpY2sgbGlzdGluZyk6CisKKyAgLSBpZFZlbmRvciAgICAgIC0tIFVTQiBWZW5kb3IgSUQgKDE2IGJpdCBpbnRlZ2VyKQorICAtIGlkUHJvZHVjdCAgICAgLS0gVVNCIFByb2R1Y3QgSUQgKDE2IGJpdCBpbnRlZ2VyKQorICAtIGJjZERldmljZSAgICAgLS0gVVNCIERldmljZSB2ZXJzaW9uIChCQ0QpICgxNiBiaXQgaW50ZWdlcikKKyAgLSBpTWFudWZhY3R1cmVyIC0tIFVTQiBNYW51ZmFjdHVyZXIgc3RyaW5nIChzdHJpbmcpCisgIC0gaVByb2R1Y3QgICAgICAtLSBVU0IgUHJvZHVjdCBzdHJpbmcgKHN0cmluZykKKyAgLSBpU2VyaWFsTnVtYmVyIC0tIFNlcmlhbE51bWJlciBzdHJpbmcgKHN0aW5nKQorCisqIHN5c2ZzIGVudHJpZXMKKworICBGb3IgZWFjaCBsb2dpY2FsIHVuaXQsIHRoZSBnYWRnZXQgY3JlYXRlcyBhIGRpcmVjdG9yeSBpbiB0aGUgc3lzZnMKKyAgaGllcmFyY2h5LiAgSW5zaWRlIG9mIGl0IHRoZSBmb2xsb3dpbmcgdGhyZWUgZmlsZXMgYXJlIGNyZWF0ZWQ6CisKKyAgLSBmaWxlCisKKyAgICBXaGVuIHJlYWQgaXQgcmV0dXJucyB0aGUgcGF0aCB0byB0aGUgYmFja2luZyBmaWxlIGZvciB0aGUgZ2l2ZW4KKyAgICBsb2dpY2FsIHVuaXQuICBJZiB0aGVyZSBpcyBubyBiYWNraW5nIGZpbGUgKHBvc3NpYmxlIG9ubHkgaWYgdGhlCisgICAgbG9naWNhbCB1bml0IGlzIHJlbW92YWJsZSksIHRoZSBjb250ZW50IGlzIGVtcHR5LgorCisgICAgV2hlbiB3cml0dGVuIGludG8sIGl0IGNoYW5nZXMgdGhlIGJhY2tpbmcgZmlsZSBmb3IgZ2l2ZW4gbG9naWNhbAorICAgIHVuaXQuICBUaGlzIGNoYW5nZSBjYW4gYmUgcGVyZm9ybWVkIGV2ZW4gaWYgZ2l2ZW4gbG9naWNhbCB1bml0IGlzCisgICAgbm90IHNwZWNpZmllZCBhcyByZW1vdmFibGUgKGJ1dCB0aGF0IG1heSBsb29rIHN0cmFuZ2UgdG8gdGhlCisgICAgaG9zdCkuICBJdCBtYXkgZmFpbCwgaG93ZXZlciwgaWYgaG9zdCBkaXNhbGxvd2VkIG1lZGl1bSByZW1vdmFsCisgICAgd2l0aCB0aGUgUHJldmVudC1BbGxvdyBNZWRpdW0gUmVtb3ZhbCBTQ1NJIGNvbW1hbmQuCisKKyAgLSBybworCisgICAgUmVmbGVjdHMgdGhlIHN0YXRlIG9mIHJvIGZsYWcgZm9yIHRoZSBnaXZlbiBsb2dpY2FsIHVuaXQuICBJdCBjYW4KKyAgICBiZSByZWFkIGFueSB0aW1lLCBhbmQgd3JpdHRlbiB0byB3aGVuIHRoZXJlIGlzIG5vIGJhY2tpbmcgZmlsZQorICAgIG9wZW4gZm9yIGdpdmVuIGxvZ2ljYWwgdW5pdC4KKworICAtIG5vZnVhCisKKyAgICBSZWZsZWN0cyB0aGUgc3RhdGUgb2Ygbm9mdWEgZmxhZyBmb3IgZ2l2ZW4gbG9naWNhbCB1bml0LiAgSXQgY2FuCisgICAgYmUgcmVhZCBhbmQgd3JpdHRlbi4KKworICBPdGhlciB0aGVuIHRob3NlLCBhcyB1c3VhbCwgdGhlIHZhbHVlcyBvZiBtb2R1bGUgcGFyYW1ldGVycyBjYW4gYmUKKyAgcmVhZCBmcm9tIC9zeXMvbW9kdWxlL2dfbWFzc19zdG9yYWdlL3BhcmFtZXRlcnMvKiBmaWxlcy4KKworKiBPdGhlciBnYWRnZXRzIHVzaW5nIG1hc3Mgc3RvcmFnZSBmdW5jdGlvbgorCisgIFRoZSBNYXNzIFN0b3JhZ2UgR2FkZ2V0IHVzZXMgdGhlIE1hc3MgU3RvcmFnZSBGdW5jdGlvbiB0byBoYW5kbGUKKyAgbWFzcyBzdG9yYWdlIHByb3RvY29sLiAgQXMgYSBjb21wb3NpdGUgZnVuY3Rpb24sIE1TRiBtYXkgYmUgdXNlZCBieQorICBvdGhlciBnYWRnZXRzIGFzIHdlbGwgKGVnLiBnX211bHRpIGFuZCBhY21fbXMpLgorCisgIEFsbCBvZiB0aGUgaW5mb3JtYXRpb24gaW4gcHJldmlvdXMgc2VjdGlvbnMgYXJlIHZhbGlkIGZvciBvdGhlcgorICBnYWRnZXRzIHVzaW5nIE1TRiwgZXhjZXB0IHRoYXQgc3VwcG9ydCBmb3IgbWFzcyBzdG9yYWdlIHJlbGF0ZWQKKyAgbW9kdWxlIHBhcmFtZXRlcnMgbWF5IGJlIG1pc3NpbmcsIG9yIHRoZSBwYXJhbWV0ZXJzIG1heSBoYXZlCisgIGEgcHJlZml4LiAgVG8gZmlndXJlIG91dCB3aGV0aGVyIGFueSBvZiB0aGlzIGlzIHRydWUgb25lIG5lZWRzIHRvCisgIGNvbnN1bHQgdGhlIGdhZGdldCdzIGRvY3VtZW50YXRpb24gb3IgaXRzIHNvdXJjZSBjb2RlLgorCisgIEZvciBleGFtcGxlcyBvZiBob3cgdG8gaW5jbHVkZSBtYXNzIHN0b3JhZ2UgZnVuY3Rpb24gaW4gZ2FkZ2V0cywgb25lCisgIG1heSB0YWtlIGEgbG9vayBhdCBtYXNzX3N0b3JhZ2UuYywgYWNtX21zLmMgYW5kIG11bHRpLmMgKHNvcnRlZCBieQorICBjb21wbGV4aXR5KS4KKworKiBSZWxhdGlvbiB0byBmaWxlIHN0b3JhZ2UgZ2FkZ2V0CisKKyAgVGhlIE1hc3MgU3RvcmFnZSBGdW5jdGlvbiBhbmQgdGh1cyB0aGUgTWFzcyBTdG9yYWdlIEdhZGdldCBoYXMgYmVlbgorICBiYXNlZCBvbiB0aGUgRmlsZSBTdG9yYWdlIEdhZGdldC4gIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byBpcworICB0aGF0IE1TRyBpcyBhIGNvbXBvc2l0ZSBnYWRnZXQgKGllLiB1c2VzIHRoZSBjb21wb3NpdGUgZnJhbWV3b3JrKQorICB3aGlsZSBmaWxlIHN0b3JhZ2UgZ2FkZ2V0IHdhcyBhIHRyYWRpdGlvbmFsIGdhZGdldC4gIEZyb20gdXNlcnNwYWNlCisgIHBvaW50IG9mIHZpZXcgdGhpcyBkaXN0aW5jdGlvbiBkb2VzIG5vdCByZWFsbHkgbWF0dGVyLCBidXQgZnJvbQorICBrZXJuZWwgaGFja2VyJ3MgcG9pbnQgb2YgdmlldywgdGhpcyBtZWFucyB0aGF0IChpKSBNU0cgZG9lcyBub3QKKyAgZHVwbGljYXRlIGNvZGUgbmVlZGVkIGZvciBoYW5kbGluZyBiYXNpYyBVU0IgcHJvdG9jb2wgY29tbWFuZHMgYW5kCisgIChpaSkgTVNGIGNhbiBiZSB1c2VkIGluIGFueSBvdGhlciBjb21wb3NpdGUgZ2FkZ2V0LgorCisgIEJlY2F1c2Ugb2YgdGhhdCwgRmlsZSBTdG9yYWdlIEdhZGdldCBoYXMgYmVlbiByZW1vdmVkIGluIExpbnV4IDMuOC4KKyAgQWxsIHVzZXJzIG5lZWQgdG8gdHJhbnNpdGlvbiB0byB0aGUgTWFzcyBTdG9yYWdlIEdhZGdldC4gIFRoZSB0d28KKyAgZ2FkZ2V0cyBiZWhhdmUgbW9zdGx5IHRoZSBzYW1lIGZyb20gdGhlIG91dHNpZGUgZXhjZXB0OgorCisgIDEuIEluIEZTRyB0aGUg4oCccmVtb3ZhYmxl4oCdIGFuZCDigJxjZHJvbeKAnSBtb2R1bGUgcGFyYW1ldGVycyBzZXQgdGhlIGZsYWcKKyAgICAgZm9yIGFsbCBsb2dpY2FsIHVuaXRzIHdoZXJlYXMgaW4gTVNHIHRoZXkgYWNjZXB0IGEgbGlzdCBvZiB5L24KKyAgICAgdmFsdWVzIGZvciBlYWNoIGxvZ2ljYWwgdW5pdC4gIElmIG9uZSB1c2VzIG9ubHkgYSBzaW5nbGUgbG9naWNhbAorICAgICB1bml0IHRoaXMgZG9lcyBub3QgbWF0dGVyLCBidXQgaWYgdGhlcmUgYXJlIG1vcmUsIHRoZSB5L24gdmFsdWUKKyAgICAgbmVlZHMgdG8gYmUgcmVwZWF0ZWQgZm9yIGVhY2ggbG9naWNhbCB1bml0LgorCisgIDIuIEZTRydzIOKAnHNlcmlhbOKAnSwg4oCcdmVuZG9y4oCdLCDigJxwcm9kdWN04oCdIGFuZCDigJxyZWxlYXNl4oCdIG1vZHVsZQorICAgICBwYXJhbWV0ZXJzIGFyZSBoYW5kbGVkIGluIE1TRyBieSB0aGUgY29tcG9zaXRlIGxheWVyJ3MgcGFyYW1ldGVycworICAgICBuYW1lZCByZXNwZWN0aXZlbHk6IOKAnGlTZXJpYWxudW1iZXLigJ0sIOKAnGlkVmVuZG9y4oCdLCDigJxpZFByb2R1Y3TigJ0gYW5kCisgICAgIOKAnGJjZERldmljZeKAnS4KKworICAzLiBNU0cgZG9lcyBub3Qgc3VwcG9ydCBGU0cncyB0ZXN0IG1vZGUsIHRodXMg4oCcdHJhbnNwb3J04oCdLAorICAgICDigJxwcm90b2NvbOKAnSBhbmQg4oCcYnVmbGVu4oCdIEZTRydzIG1vZHVsZSBwYXJhbWV0ZXJzIGFyZSBub3QKKyAgICAgc3VwcG9ydGVkLiAgTVNHIGFsd2F5cyB1c2VzIFNDU0kgcHJvdG9jb2wgd2l0aCBidWxrIG9ubHkKKyAgICAgdHJhbnNwb3J0IG1vZGUgYW5kIDE2IEtpQiBidWZmZXJzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi91c2IvbWlzY191c2JzZXZzZWcudHh0IGIvRG9jdW1lbnRhdGlvbi91c2IvbWlzY191c2JzZXZzZWcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNmJlNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3VzYi9taXNjX3VzYnNldnNlZy50eHQKQEAgLTAsMCArMSw0NiBAQAorVVNCIDctU2VnbWVudCBOdW1lcmljIERpc3BsYXkKK01hbnVmYWN0dXJlZCBieSBEZWxjb20gRW5naW5lZXJpbmcKKworRGV2aWNlIEluZm9ybWF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0KK1VTQiBWRU5ET1JfSUQJMHgwZmM1CitVU0IgUFJPRFVDVF9JRAkweDEyMjcKK0JvdGggdGhlIDYgY2hhcmFjdGVyIGFuZCA4IGNoYXJhY3RlciBkaXNwbGF5cyBoYXZlIFBST0RVQ1RfSUQsCithbmQgYWNjb3JkaW5nIHRvIERlbGNvbSBFbmdpbmVlcmluZyBubyBxdWVyeWFibGUgaW5mb3JtYXRpb24KK2NhbiBiZSBvYnRhaW5lZCBmcm9tIHRoZSBkZXZpY2UgdG8gdGVsbCB0aGVtIGFwYXJ0LgorCitEZXZpY2UgTW9kZXMKKy0tLS0tLS0tLS0tLQorQnkgZGVmYXVsdCwgdGhlIGRyaXZlciBhc3N1bWVzIHRoZSBkaXNwbGF5IGlzIG9ubHkgNiBjaGFyYWN0ZXJzCitUaGUgbW9kZSBmb3IgNiBjaGFyYWN0ZXJzIGlzOgorCU1TQiAweDA2OyBMU0IgMHgzZgorRm9yIHRoZSA4IGNoYXJhY3RlciBkaXNwbGF5OgorCU1TQiAweDA4OyBMU0IgMHhmZgorVGhlIGRldmljZSBjYW4gYWNjZXB0ICJ0ZXh0IiBlaXRoZXIgaW4gcmF3LCBoZXgsIG9yIGFzY2lpIHRleHRtb2RlLgorcmF3IGNvbnRyb2xzIGVhY2ggc2VnbWVudCBtYW51YWxseSwKK2hleCBleHBlY3RzIGEgdmFsdWUgYmV0d2VlbiAwLTE1IHBlciBjaGFyYWN0ZXIsCithc2NpaSBleHBlY3RzIGEgdmFsdWUgYmV0d2VlbiAnMCctJzknIGFuZCAnQSctJ0YnLgorVGhlIGRlZmF1bHQgaXMgYXNjaWkuCisKK0RldmljZSBPcGVyYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0KKzEuCVR1cm4gb24gdGhlIGRldmljZToKKwllY2hvIDEgPiAvc3lzL2J1cy91c2IvLi4uL3Bvd2VyZWQKKzIuCVNldCB0aGUgZGV2aWNlJ3MgbW9kZToKKwllY2hvICRtb2RlX21zYiA+IC9zeXMvYnVzL3VzYi8uLi4vbW9kZV9tc2IKKwllY2hvICRtb2RlX2xzYiA+IC9zeXMvYnVzL3VzYi8uLi4vbW9kZV9sc2IKKzMuCVNldCB0aGUgdGV4dG1vZGU6CisJZWNobyAkdGV4dG1vZGUgPiAvc3lzL2J1cy91c2IvLi4uL3RleHRtb2RlCis0LglzZXQgdGhlIHRleHQgKGZvciBleGFtcGxlKToKKwllY2hvICIxMjNBQkMiID4gL3N5cy9idXMvdXNiLy4uLi90ZXh0IChhc2NpaSkKKwllY2hvICJBMUIyIiA+IC9zeXMvYnVzL3VzYi8uLi4vdGV4dCAoYXNjaWkpCisJZWNobyAtbmUgIlx4MDFceDAyXHgwMyIgPiAvc3lzL2J1cy91c2IvLi4uL3RleHQgKGhleCkKKzUuCVNldCB0aGUgZGVjaW1hbCBwbGFjZXMuCisJVGhlIGRldmljZSBoYXMgZWl0aGVyIDYgb3IgOCBkZWNpbWFsIHBvaW50cy4KKwl0byBzZXQgdGhlIG50aCBkZWNpbWFsIHBsYWNlIGNhbGN1bGF0ZSAxMCAqKiBuCisJYW5kIGVjaG8gaXQgaW4gdG8gL3N5cy9idXMvdXNiLy4uLi9kZWNpbWFscworCVRvIHNldCBtdWx0aXBsZSBkZWNpbWFscyBwb2ludHMgc3VtIHVwIGVhY2ggcG93ZXIuCisJRm9yIGV4YW1wbGUsIHRvIHNldCB0aGUgMHRoIGFuZCAzcmQgZGVjaW1hbCBwbGFjZQorCWVjaG8gMTAwMSA+IC9zeXMvYnVzL3VzYi8uLi4vZGVjaW1hbHMKKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VzYi9tdG91Y2h1c2IudHh0IGIvRG9jdW1lbnRhdGlvbi91c2IvbXRvdWNodXNiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTFhZGIyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi91c2IvbXRvdWNodXNiLnR4dApAQCAtMCwwICsxLDcyIEBACitDSEFOR0VTCisKKy0gMC4zIC0gQ3JlYXRlZCBiYXNlZCBvZmYgb2Ygc2Nhbm5lciAmIElOU1RBTEwgZnJvbSB0aGUgb3JpZ2luYWwgdG91Y2hzY3JlZW4KKyAgZHJpdmVyIG9uIGZyZWVjb2RlIChodHRwOi8vZnJlZWNvZGUuY29tL3Byb2plY3RzLzNtdG91Y2hzY3JlZW5kcml2ZXIpCistIEFtZW5kZWQgZm9yIGxpbnV4LTIuNC4xOCwgdGhlbiAyLjQuMTkKKworLSAwLjUgLSBDb21wbGV0ZSByZXdyaXRlIHVzaW5nIExpbnV4IElucHV0IGluIDIuNi4zCisgICBVbmZvcnR1bmF0ZWx5IG5vIGNhbGlicmF0aW9uIHN1cHBvcnQgYXQgdGhpcyB0aW1lCisKKy0gMS40IC0gTXVsdGlwbGUgY2hhbmdlcyB0byBzdXBwb3J0IHRoZSBFWElJIDUwMDBVQyBhbmQgaG91c2UgY2xlYW5pbmcKKyAgIENoYW5nZWQgcmVzZXQgZnJvbSBzdGFuZGFyZCBVU0IgZGV2IHJlc2V0IHRvIHZlbmRvciByZXNldAorICAgQ2hhbmdlZCBkYXRhIHNlbnQgdG8gaG9zdCBmcm9tIGNvbXBlbnNhdGVkIHRvIHJhdyBjb29yZGluYXRlcworICAgRWxpbWluYXRlZCB2ZW5kb3IvcHJvZHVjdCBtb2R1bGUgcGFyYW1zCisgICBQZXJmb3JtZWQgbXVsdGlwbGUgc3VjY2Vzc2Z1bCB0ZXN0cyB3aXRoIGFuIEVYSUktNTAxMFVDCisKK1NVUFBPUlRFRCBIQVJEV0FSRToKKworICAgICAgICBBbGwgY29udHJvbGxlcnMgaGF2ZSB0aGUgVmVuZG9yOiAweDA1OTYgJiBQcm9kdWN0OiAweDAwMDEKKworCisgICAgICAgIENvbnRyb2xsZXIgRGVzY3JpcHRpb24gICAgICAgICAgUGFydCBOdW1iZXIKKyAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgICAgVVNCIENhcGFjaXRpdmUgLSBQZWFybCBDYXNlICAgICAxNC0yMDUgIChEaXNjb250aW51ZWQpCisgICAgICAgIFVTQiBDYXBhY2l0aXZlIC0gQmxhY2sgQ2FzZSAgICAgMTQtMTI0ICAoRGlzY29udGludWVkKQorICAgICAgICBVU0IgQ2FwYWNpdGl2ZSAtIE5vIENhc2UgICAgICAgIDE0LTIwNiAgKERpc2NvbnRpbnVlZCkKKworICAgICAgICBVU0IgQ2FwYWNpdGl2ZSAtIFBlYXJsIENhc2UgICAgIEVYSUktNTAxMFVDCisgICAgICAgIFVTQiBDYXBhY2l0aXZlIC0gQmxhY2sgQ2FzZSAgICAgRVhJSS01MDMwVUMKKyAgICAgICAgVVNCIENhcGFjaXRpdmUgLSBObyBDYXNlICAgICAgICBFWElJLTUwNTBVQworCitEUklWRVIgTk9URVM6CisKK0luc3RhbGxhdGlvbiBpcyBzaW1wbGUsIHlvdSBvbmx5IG5lZWQgdG8gYWRkIExpbnV4IElucHV0LCBMaW51eCBVU0IsIGFuZCB0aGUgCitkcml2ZXIgdG8gdGhlIGtlcm5lbC4gIFRoZSBkcml2ZXIgY2FuIGFsc28gYmUgb3B0aW9uYWxseSBidWlsdCBhcyBhIG1vZHVsZS4KKworVGhpcyBkcml2ZXIgYXBwZWFycyB0byBiZSBvbmUgb2YgcG9zc2libGUgMiBMaW51eCBVU0IgSW5wdXQgVG91Y2hzY3JlZW4KK2RyaXZlcnMuICBBbHRob3VnaCAzTSBwcm9kdWNlcyBhIGJpbmFyeSBvbmx5IGRyaXZlciBhdmFpbGFibGUgZm9yCitkb3dubG9hZCwgSSBwZXJzaXN0IGluIHVwZGF0aW5nIHRoaXMgZHJpdmVyIHNpbmNlIEkgd291bGQgbGlrZSB0byB1c2UgdGhlCit0b3VjaHNjcmVlbiBmb3IgZW1iZWRkZWQgYXBwcyB1c2luZyBRVEVtYmVkZGVkLCBEaXJlY3RGQiwgZXRjLiBTbyBJIGZlZWwgdGhlCitsb2dpY2FsIGNob2ljZSBpcyB0byB1c2UgTGludXggSW5wdXQuCisKK0N1cnJlbnRseSB0aGVyZSBpcyBubyB3YXkgdG8gY2FsaWJyYXRlIHRoZSBkZXZpY2UgdmlhIHRoaXMgZHJpdmVyLiAgRXZlbiBpZgordGhlIGRldmljZSBjb3VsZCBiZSBjYWxpYnJhdGVkLCB0aGUgZHJpdmVyIHB1bGxzIHRvIHJhdyBjb29yZGluYXRlIGRhdGEgZnJvbQordGhlIGNvbnRyb2xsZXIuICBUaGlzIG1lYW5zIGNhbGlicmF0aW9uIG11c3QgYmUgcGVyZm9ybWVkIHdpdGhpbiB0aGUKK3VzZXJzcGFjZS4KKworVGhlIGNvbnRyb2xsZXIgc2NyZWVuIHJlc29sdXRpb24gaXMgbm93IDAgdG8gMTYzODQgZm9yIGJvdGggWCBhbmQgWSByZXBvcnRpbmcKK3RoZSByYXcgdG91Y2ggZGF0YS4gIFRoaXMgaXMgdGhlIHNhbWUgZm9yIHRoZSBvbGQgYW5kIG5ldyBjYXBhY2l0aXZlIFVTQgorY29udHJvbGxlcnMuCisKK1BlcmhhcHMgYXQgc29tZSBwb2ludCBhbiBhYnN0cmFjdCBmdW5jdGlvbiB3aWxsIGJlIHBsYWNlZCBpbnRvIGV2ZGV2IHNvIAorZ2VuZXJpYyBmdW5jdGlvbnMgbGlrZSBjYWxpYnJhdGlvbnMsIHJlc2V0cywgYW5kIHZlbmRvciBpbmZvcm1hdGlvbiBjYW4gYmUgCityZXF1ZXN0ZWQgZnJvbSB0aGUgdXNlcnNwYWNlIChBbmQgdGhlIGRyaXZlcnMgd291bGQgaGFuZGxlIHRoZSB2ZW5kb3Igc3BlY2lmaWMKK3Rhc2tzKS4KKworVE9ETzoKKworSW1wbGVtZW50IGEgY29udHJvbCB1cmIgYWdhaW4gdG8gaGFuZGxlIHJlcXVlc3RzIHRvIGFuZCBmcm9tIHRoZSBkZXZpY2UKK3N1Y2ggYXMgY2FsaWJyYXRpb24sIGV0YyBvbmNlL2lmIGl0IGJlY29tZXMgYXZhaWxhYmxlLgorCitESVNDTEFJTUVSOgorCitJIGFtIG5vdCBhIE1pY3JvVG91Y2gvM00gZW1wbG95ZWUsIG5vciBoYXZlIEkgZXZlciBiZWVuLiAgM00gZG9lcyBub3Qgc3VwcG9ydCAKK3RoaXMgZHJpdmVyISAgSWYgeW91IHdhbnQgdG91Y2ggZHJpdmVycyBvbmx5IHN1cHBvcnRlZCB3aXRoaW4gWCwgcGxlYXNlIGdvIHRvOgorCitodHRwOi8vd3d3LjNtLmNvbS8zTVRvdWNoU3lzdGVtcy8KKworVEhBTktTOgorCitBIGh1Z2UgdGhhbmsgeW91IHRvIDNNIFRvdWNoIFN5c3RlbXMgZm9yIHRoZSBFWElJLTUwMTBVQyBjb250cm9sbGVycyBmb3IKK3Rlc3RpbmchCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VzYi9vaGNpLnR4dCBiL0RvY3VtZW50YXRpb24vdXNiL29oY2kudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5MzIwZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3VzYi9vaGNpLnR4dApAQCAtMCwwICsxLDMyIEBACisyMy1BdWctMjAwMgorCitUaGUgIm9oY2ktaGNkIiBkcml2ZXIgaXMgYSBVU0IgSG9zdCBDb250cm9sbGVyIERyaXZlciAoSENEKSB0aGF0IGlzIGRlcml2ZWQKK2Zyb20gdGhlICJ1c2Itb2hjaSIgZHJpdmVyIGZyb20gdGhlIDIuNCBrZXJuZWwgc2VyaWVzLiAgVGhlICJ1c2Itb2hjaSIgY29kZQord2FzIHdyaXR0ZW4gcHJpbWFyaWx5IGJ5IFJvbWFuIFdlaXNzZ2FlcmJlciA8d2Vpc3NnQHZpZW5uYS5hdD4gYnV0IHdpdGgKK2NvbnRyaWJ1dGlvbnMgZnJvbSBtYW55IG90aGVycyAocmVhZCBpdHMgY29weXJpZ2h0L2xpY2VuY2luZyBoZWFkZXIpLgorCitJdCBzdXBwb3J0cyB0aGUgIk9wZW4gSG9zdCBDb250cm9sbGVyIEludGVyZmFjZSIgKE9IQ0kpLCB3aGljaCBzdGFuZGFyZGl6ZXMKK2hhcmR3YXJlIHJlZ2lzdGVyIHByb3RvY29scyB1c2VkIHRvIHRhbGsgdG8gVVNCIDEuMSBob3N0IGNvbnRyb2xsZXJzLiAgQXMKK2NvbXBhcmVkIHRvIHRoZSBlYXJsaWVyICJVbml2ZXJzYWwgSG9zdCBDb250cm9sbGVyIEludGVyZmFjZSIgKFVIQ0kpIGZyb20KK0ludGVsLCBpdCBwdXNoZXMgbW9yZSBpbnRlbGxpZ2VuY2UgaW50byB0aGUgaGFyZHdhcmUuICBVU0IgMS4xIGNvbnRyb2xsZXJzCitmcm9tIHZlbmRvcnMgb3RoZXIgdGhhbiBJbnRlbCBhbmQgVklBIGdlbmVyYWxseSB1c2UgT0hDSS4KKworQ2hhbmdlcyBzaW5jZSB0aGUgMi40IGtlcm5lbCBpbmNsdWRlCisKKwktIGltcHJvdmVkIHJvYnVzdG5lc3M7IGJ1Z2ZpeGVzOyBhbmQgbGVzcyBvdmVyaGVhZAorCS0gc3VwcG9ydHMgdGhlIHVwZGF0ZWQgYW5kIHNpbXBsaWZpZWQgdXNiY29yZSBBUElzCisJLSBpbnRlcnJ1cHQgdHJhbnNmZXJzIGNhbiBiZSBsYXJnZXIsIGFuZCBjYW4gYmUgcXVldWVkCisJLSBsZXNzIGNvZGUsIGJ5IHVzaW5nIHRoZSB1cHBlciBsZXZlbCAiaGNkIiBmcmFtZXdvcmsKKwktIHN1cHBvcnRzIHNvbWUgbm9uLVBDSSBpbXBsZW1lbnRhdGlvbnMgb2YgT0hDSQorCS0gLi4uIG1vcmUKKworVGhlICJvaGNpLWhjZCIgZHJpdmVyIGhhbmRsZXMgYWxsIFVTQiAxLjEgdHJhbnNmZXIgdHlwZXMuICBUcmFuc2ZlcnMgb2YgYWxsCit0eXBlcyBjYW4gYmUgcXVldWVkLiAgVGhhdCB3YXMgYWxzbyB0cnVlIGluICJ1c2Itb2hjaSIsIGV4Y2VwdCBmb3IgaW50ZXJydXB0Cit0cmFuc2ZlcnMuICBQcmV2aW91c2x5LCB1c2luZyBwZXJpb2RzIG9mIG9uZSBmcmFtZSB3b3VsZCByaXNrIGRhdGEgbG9zcyBkdWUKK3RvIG92ZXJoZWFkIGluIElSUSBwcm9jZXNzaW5nLiAgV2hlbiBpbnRlcnJ1cHQgdHJhbnNmZXJzIGFyZSBxdWV1ZWQsIHRob3NlCityaXNrcyBjYW4gYmUgbWluaW1pemVkIGJ5IG1ha2luZyBzdXJlIHRoZSBoYXJkd2FyZSBhbHdheXMgaGFzIHRyYW5zZmVycyB0bword29yayBvbiB3aGlsZSB0aGUgT1MgaXMgZ2V0dGluZyBhcm91bmQgdG8gdGhlIHJlbGV2YW50IElSUSBwcm9jZXNzaW5nLgorCistIERhdmlkIEJyb3duZWxsCisgIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VzYi9wZXJzaXN0LnR4dCBiL0RvY3VtZW50YXRpb24vdXNiL3BlcnNpc3QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZDcwZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3VzYi9wZXJzaXN0LnR4dApAQCAtMCwwICsxLDE2NSBAQAorCQlVU0IgZGV2aWNlIHBlcnNpc3RlbmNlIGR1cmluZyBzeXN0ZW0gc3VzcGVuZAorCisJCSAgIEFsYW4gU3Rlcm4gPHN0ZXJuQHJvd2xhbmQuaGFydmFyZC5lZHU+CisKKwkJU2VwdGVtYmVyIDIsIDIwMDYgKFVwZGF0ZWQgRmVicnVhcnkgMjUsIDIwMDgpCisKKworCVdoYXQgaXMgdGhlIHByb2JsZW0/CisKK0FjY29yZGluZyB0byB0aGUgVVNCIHNwZWNpZmljYXRpb24sIHdoZW4gYSBVU0IgYnVzIGlzIHN1c3BlbmRlZCB0aGUKK2J1cyBtdXN0IGNvbnRpbnVlIHRvIHN1cHBseSBzdXNwZW5kIGN1cnJlbnQgKGFyb3VuZCAxLTUgbUEpLiAgVGhpcworaXMgc28gdGhhdCBkZXZpY2VzIGNhbiBtYWludGFpbiB0aGVpciBpbnRlcm5hbCBzdGF0ZSBhbmQgaHVicyBjYW4KK2RldGVjdCBjb25uZWN0LWNoYW5nZSBldmVudHMgKGRldmljZXMgYmVpbmcgcGx1Z2dlZCBpbiBvciB1bnBsdWdnZWQpLgorVGhlIHRlY2huaWNhbCB0ZXJtIGlzICJwb3dlciBzZXNzaW9uIi4KKworSWYgYSBVU0IgZGV2aWNlJ3MgcG93ZXIgc2Vzc2lvbiBpcyBpbnRlcnJ1cHRlZCB0aGVuIHRoZSBzeXN0ZW0gaXMKK3JlcXVpcmVkIHRvIGJlaGF2ZSBhcyB0aG91Z2ggdGhlIGRldmljZSBoYXMgYmVlbiB1bnBsdWdnZWQuICBJdCdzIGEKK2NvbnNlcnZhdGl2ZSBhcHByb2FjaDsgaW4gdGhlIGFic2VuY2Ugb2Ygc3VzcGVuZCBjdXJyZW50IHRoZSBjb21wdXRlcgoraGFzIG5vIHdheSB0byBrbm93IHdoYXQgaGFzIGFjdHVhbGx5IGhhcHBlbmVkLiAgUGVyaGFwcyB0aGUgc2FtZQorZGV2aWNlIGlzIHN0aWxsIGF0dGFjaGVkIG9yIHBlcmhhcHMgaXQgd2FzIHJlbW92ZWQgYW5kIGEgZGlmZmVyZW50CitkZXZpY2UgcGx1Z2dlZCBpbnRvIHRoZSBwb3J0LiAgVGhlIHN5c3RlbSBtdXN0IGFzc3VtZSB0aGUgd29yc3QuCisKK0J5IGRlZmF1bHQsIExpbnV4IGJlaGF2ZXMgYWNjb3JkaW5nIHRvIHRoZSBzcGVjLiAgSWYgYSBVU0IgaG9zdAorY29udHJvbGxlciBsb3NlcyBwb3dlciBkdXJpbmcgYSBzeXN0ZW0gc3VzcGVuZCwgdGhlbiB3aGVuIHRoZSBzeXN0ZW0KK3dha2VzIHVwIGFsbCB0aGUgZGV2aWNlcyBhdHRhY2hlZCB0byB0aGF0IGNvbnRyb2xsZXIgYXJlIHRyZWF0ZWQgYXMKK3Rob3VnaCB0aGV5IGhhZCBkaXNjb25uZWN0ZWQuICBUaGlzIGlzIGFsd2F5cyBzYWZlIGFuZCBpdCBpcyB0aGUKKyJvZmZpY2lhbGx5IGNvcnJlY3QiIHRoaW5nIHRvIGRvLgorCitGb3IgbWFueSBzb3J0cyBvZiBkZXZpY2VzIHRoaXMgYmVoYXZpb3IgZG9lc24ndCBtYXR0ZXIgaW4gdGhlIGxlYXN0LgorSWYgdGhlIGtlcm5lbCB3YW50cyB0byBiZWxpZXZlIHRoYXQgeW91ciBVU0Iga2V5Ym9hcmQgd2FzIHVucGx1Z2dlZAord2hpbGUgdGhlIHN5c3RlbSB3YXMgYXNsZWVwIGFuZCBhIG5ldyBrZXlib2FyZCB3YXMgcGx1Z2dlZCBpbiB3aGVuIHRoZQorc3lzdGVtIHdva2UgdXAsIHdobyBjYXJlcz8gIEl0J2xsIHN0aWxsIHdvcmsgdGhlIHNhbWUgd2hlbiB5b3UgdHlwZSBvbgoraXQuCisKK1VuZm9ydHVuYXRlbHkgcHJvYmxlbXMgX2Nhbl8gYXJpc2UsIHBhcnRpY3VsYXJseSB3aXRoIG1hc3Mtc3RvcmFnZQorZGV2aWNlcy4gIFRoZSBlZmZlY3QgaXMgZXhhY3RseSB0aGUgc2FtZSBhcyBpZiB0aGUgZGV2aWNlIHJlYWxseSBoYWQKK2JlZW4gdW5wbHVnZ2VkIHdoaWxlIHRoZSBzeXN0ZW0gd2FzIHN1c3BlbmRlZC4gIElmIHlvdSBoYWQgYSBtb3VudGVkCitmaWxlc3lzdGVtIG9uIHRoZSBkZXZpY2UsIHlvdSdyZSBvdXQgb2YgbHVjayAtLSBldmVyeXRoaW5nIGluIHRoYXQKK2ZpbGVzeXN0ZW0gaXMgbm93IGluYWNjZXNzaWJsZS4gIFRoaXMgaXMgZXNwZWNpYWxseSBhbm5veWluZyBpZiB5b3VyCityb290IGZpbGVzeXN0ZW0gd2FzIGxvY2F0ZWQgb24gdGhlIGRldmljZSwgc2luY2UgeW91ciBzeXN0ZW0gd2lsbAoraW5zdGFudGx5IGNyYXNoLgorCitMb3NzIG9mIHBvd2VyIGlzbid0IHRoZSBvbmx5IG1lY2hhbmlzbSB0byB3b3JyeSBhYm91dC4gIEFueXRoaW5nIHRoYXQKK2ludGVycnVwdHMgYSBwb3dlciBzZXNzaW9uIHdpbGwgaGF2ZSB0aGUgc2FtZSBlZmZlY3QuICBGb3IgZXhhbXBsZSwKK2V2ZW4gdGhvdWdoIHN1c3BlbmQgY3VycmVudCBtYXkgaGF2ZSBiZWVuIG1haW50YWluZWQgd2hpbGUgdGhlIHN5c3RlbQord2FzIGFzbGVlcCwgb24gbWFueSBzeXN0ZW1zIGR1cmluZyB0aGUgaW5pdGlhbCBzdGFnZXMgb2Ygd2FrZXVwIHRoZQorZmlybXdhcmUgKGkuZS4sIHRoZSBCSU9TKSByZXNldHMgdGhlIG1vdGhlcmJvYXJkJ3MgVVNCIGhvc3QKK2NvbnRyb2xsZXJzLiAgUmVzdWx0OiBhbGwgdGhlIHBvd2VyIHNlc3Npb25zIGFyZSBkZXN0cm95ZWQgYW5kIGFnYWluCitpdCdzIGFzIHRob3VnaCB5b3UgaGFkIHVucGx1Z2dlZCBhbGwgdGhlIFVTQiBkZXZpY2VzLiAgWWVzLCBpdCdzCitlbnRpcmVseSB0aGUgQklPUydzIGZhdWx0LCBidXQgdGhhdCBkb2Vzbid0IGRvIF95b3VfIGFueSBnb29kIHVubGVzcworeW91IGNhbiBjb252aW5jZSB0aGUgQklPUyBzdXBwbGllciB0byBmaXggdGhlIHByb2JsZW0gKGxvdHMgb2YgbHVjayEpLgorCitPbiBtYW55IHN5c3RlbXMgdGhlIFVTQiBob3N0IGNvbnRyb2xsZXJzIHdpbGwgZ2V0IHJlc2V0IGFmdGVyIGEKK3N1c3BlbmQtdG8tUkFNLiAgT24gYWxtb3N0IGFsbCBzeXN0ZW1zLCBubyBzdXNwZW5kIGN1cnJlbnQgaXMKK2F2YWlsYWJsZSBkdXJpbmcgaGliZXJuYXRpb24gKGFsc28ga25vd24gYXMgc3dzdXNwIG9yIHN1c3BlbmQtdG8tZGlzaykuCitZb3UgY2FuIGNoZWNrIHRoZSBrZXJuZWwgbG9nIGFmdGVyIHJlc3VtaW5nIHRvIHNlZSBpZiBlaXRoZXIgb2YgdGhlc2UKK2hhcyBoYXBwZW5lZDsgbG9vayBmb3IgbGluZXMgc2F5aW5nICJyb290IGh1YiBsb3N0IHBvd2VyIG9yIHdhcyByZXNldCIuCisKK0luIHByYWN0aWNlLCBwZW9wbGUgYXJlIGZvcmNlZCB0byB1bm1vdW50IGFueSBmaWxlc3lzdGVtcyBvbiBhIFVTQgorZGV2aWNlIGJlZm9yZSBzdXNwZW5kaW5nLiAgSWYgdGhlIHJvb3QgZmlsZXN5c3RlbSBpcyBvbiBhIFVTQiBkZXZpY2UsCit0aGUgc3lzdGVtIGNhbid0IGJlIHN1c3BlbmRlZCBhdCBhbGwuICAoQWxsIHJpZ2h0LCBpdCBfY2FuXyBiZQorc3VzcGVuZGVkIC0tIGJ1dCBpdCB3aWxsIGNyYXNoIGFzIHNvb24gYXMgaXQgd2FrZXMgdXAsIHdoaWNoIGlzbid0CittdWNoIGJldHRlci4pCisKKworCVdoYXQgaXMgdGhlIHNvbHV0aW9uPworCitUaGUga2VybmVsIGluY2x1ZGVzIGEgZmVhdHVyZSBjYWxsZWQgVVNCLXBlcnNpc3QuICBJdCB0cmllcyB0byB3b3JrCithcm91bmQgdGhlc2UgaXNzdWVzIGJ5IGFsbG93aW5nIHRoZSBjb3JlIFVTQiBkZXZpY2UgZGF0YSBzdHJ1Y3R1cmVzIHRvCitwZXJzaXN0IGFjcm9zcyBhIHBvd2VyLXNlc3Npb24gZGlzcnVwdGlvbi4KKworSXQgd29ya3MgbGlrZSB0aGlzLiAgSWYgdGhlIGtlcm5lbCBzZWVzIHRoYXQgYSBVU0IgaG9zdCBjb250cm9sbGVyIGlzCitub3QgaW4gdGhlIGV4cGVjdGVkIHN0YXRlIGR1cmluZyByZXN1bWUgKGkuZS4sIGlmIHRoZSBjb250cm9sbGVyIHdhcworcmVzZXQgb3Igb3RoZXJ3aXNlIGhhZCBsb3N0IHBvd2VyKSB0aGVuIGl0IGFwcGxpZXMgYSBwZXJzaXN0ZW5jZSBjaGVjawordG8gZWFjaCBvZiB0aGUgVVNCIGRldmljZXMgYmVsb3cgdGhhdCBjb250cm9sbGVyIGZvciB3aGljaCB0aGUKKyJwZXJzaXN0IiBhdHRyaWJ1dGUgaXMgc2V0LiAgSXQgZG9lc24ndCB0cnkgdG8gcmVzdW1lIHRoZSBkZXZpY2U7IHRoYXQKK2Nhbid0IHdvcmsgb25jZSB0aGUgcG93ZXIgc2Vzc2lvbiBpcyBnb25lLiAgSW5zdGVhZCBpdCBpc3N1ZXMgYSBVU0IKK3BvcnQgcmVzZXQgYW5kIHRoZW4gcmUtZW51bWVyYXRlcyB0aGUgZGV2aWNlLiAgKFRoaXMgaXMgZXhhY3RseSB0aGUKK3NhbWUgdGhpbmcgdGhhdCBoYXBwZW5zIHdoZW5ldmVyIGEgVVNCIGRldmljZSBpcyByZXNldC4pICBJZiB0aGUKK3JlLWVudW1lcmF0aW9uIHNob3dzIHRoYXQgdGhlIGRldmljZSBub3cgYXR0YWNoZWQgdG8gdGhhdCBwb3J0IGhhcyB0aGUKK3NhbWUgZGVzY3JpcHRvcnMgYXMgYmVmb3JlLCBpbmNsdWRpbmcgdGhlIFZlbmRvciBhbmQgUHJvZHVjdCBJRHMsIHRoZW4KK3RoZSBrZXJuZWwgY29udGludWVzIHRvIHVzZSB0aGUgc2FtZSBkZXZpY2Ugc3RydWN0dXJlLiAgSW4gZWZmZWN0LCB0aGUKK2tlcm5lbCB0cmVhdHMgdGhlIGRldmljZSBhcyB0aG91Z2ggaXQgaGFkIG1lcmVseSBiZWVuIHJlc2V0IGluc3RlYWQgb2YKK3VucGx1Z2dlZC4KKworVGhlIHNhbWUgdGhpbmcgaGFwcGVucyBpZiB0aGUgaG9zdCBjb250cm9sbGVyIGlzIGluIHRoZSBleHBlY3RlZCBzdGF0ZQorYnV0IGEgVVNCIGRldmljZSB3YXMgdW5wbHVnZ2VkIGFuZCB0aGVuIHJlcGx1Z2dlZCwgb3IgaWYgYSBVU0IgZGV2aWNlCitmYWlscyB0byBjYXJyeSBvdXQgYSBub3JtYWwgcmVzdW1lLgorCitJZiBubyBkZXZpY2UgaXMgbm93IGF0dGFjaGVkIHRvIHRoZSBwb3J0LCBvciBpZiB0aGUgZGVzY3JpcHRvcnMgYXJlCitkaWZmZXJlbnQgZnJvbSB3aGF0IHRoZSBrZXJuZWwgcmVtZW1iZXJzLCB0aGVuIHRoZSB0cmVhdG1lbnQgaXMgd2hhdAoreW91IHdvdWxkIGV4cGVjdC4gIFRoZSBrZXJuZWwgZGVzdHJveXMgdGhlIG9sZCBkZXZpY2Ugc3RydWN0dXJlIGFuZAorYmVoYXZlcyBhcyB0aG91Z2ggdGhlIG9sZCBkZXZpY2UgaGFkIGJlZW4gdW5wbHVnZ2VkIGFuZCBhIG5ldyBkZXZpY2UKK3BsdWdnZWQgaW4uCisKK1RoZSBlbmQgcmVzdWx0IGlzIHRoYXQgdGhlIFVTQiBkZXZpY2UgcmVtYWlucyBhdmFpbGFibGUgYW5kIHVzYWJsZS4KK0ZpbGVzeXN0ZW0gbW91bnRzIGFuZCBtZW1vcnkgbWFwcGluZ3MgYXJlIHVuYWZmZWN0ZWQsIGFuZCB0aGUgd29ybGQgaXMKK25vdyBhIGdvb2QgYW5kIGhhcHB5IHBsYWNlLgorCitOb3RlIHRoYXQgdGhlICJVU0ItcGVyc2lzdCIgZmVhdHVyZSB3aWxsIGJlIGFwcGxpZWQgb25seSB0byB0aG9zZQorZGV2aWNlcyBmb3Igd2hpY2ggaXQgaXMgZW5hYmxlZC4gIFlvdSBjYW4gZW5hYmxlIHRoZSBmZWF0dXJlIGJ5IGRvaW5nCisoYXMgcm9vdCk6CisKKwllY2hvIDEgPi9zeXMvYnVzL3VzYi9kZXZpY2VzLy4uLi9wb3dlci9wZXJzaXN0CisKK3doZXJlIHRoZSAiLi4uIiBzaG91bGQgYmUgZmlsbGVkIGluIHRoZSB3aXRoIHRoZSBkZXZpY2UncyBJRC4gIERpc2FibGUKK3RoZSBmZWF0dXJlIGJ5IHdyaXRpbmcgMCBpbnN0ZWFkIG9mIDEuICBGb3IgaHVicyB0aGUgZmVhdHVyZSBpcworYXV0b21hdGljYWxseSBhbmQgcGVybWFuZW50bHkgZW5hYmxlZCBhbmQgdGhlIHBvd2VyL3BlcnNpc3QgZmlsZQorZG9lc24ndCBldmVuIGV4aXN0LCBzbyB5b3Ugb25seSBoYXZlIHRvIHdvcnJ5IGFib3V0IHNldHRpbmcgaXQgZm9yCitkZXZpY2VzIHdoZXJlIGl0IHJlYWxseSBtYXR0ZXJzLgorCisKKwlJcyB0aGlzIHRoZSBiZXN0IHNvbHV0aW9uPworCitQZXJoYXBzIG5vdC4gIEFyZ3VhYmx5LCBrZWVwaW5nIHRyYWNrIG9mIG1vdW50ZWQgZmlsZXN5c3RlbXMgYW5kCittZW1vcnkgbWFwcGluZ3MgYWNyb3NzIGRldmljZSBkaXNjb25uZWN0cyBzaG91bGQgYmUgaGFuZGxlZCBieSBhCitjZW50cmFsaXplZCBMb2dpY2FsIFZvbHVtZSBNYW5hZ2VyLiAgU3VjaCBhIHNvbHV0aW9uIHdvdWxkIGFsbG93IHlvdQordG8gcGx1ZyBpbiBhIFVTQiBmbGFzaCBkZXZpY2UsIGNyZWF0ZSBhIHBlcnNpc3RlbnQgdm9sdW1lIGFzc29jaWF0ZWQKK3dpdGggaXQsIHVucGx1ZyB0aGUgZmxhc2ggZGV2aWNlLCBwbHVnIGl0IGJhY2sgaW4gbGF0ZXIsIGFuZCBzdGlsbAoraGF2ZSB0aGUgc2FtZSBwZXJzaXN0ZW50IHZvbHVtZSBhc3NvY2lhdGVkIHdpdGggdGhlIGRldmljZS4gIEFzIHN1Y2gKK2l0IHdvdWxkIGJlIG1vcmUgZmFyLXJlYWNoaW5nIHRoYW4gVVNCLXBlcnNpc3QuCisKK09uIHRoZSBvdGhlciBoYW5kLCB3cml0aW5nIGEgcGVyc2lzdGVudCB2b2x1bWUgbWFuYWdlciB3b3VsZCBiZSBhIGJpZworam9iIGFuZCB1c2luZyBpdCB3b3VsZCByZXF1aXJlIHNpZ25pZmljYW50IGlucHV0IGZyb20gdGhlIHVzZXIuICBUaGlzCitzb2x1dGlvbiBpcyBtdWNoIHF1aWNrZXIgYW5kIGVhc2llciAtLSBhbmQgaXQgZXhpc3RzIG5vdywgYSBnaWFudAorcG9pbnQgaW4gaXRzIGZhdm9yIQorCitGdXJ0aGVybW9yZSwgdGhlIFVTQi1wZXJzaXN0IGZlYXR1cmUgYXBwbGllcyB0byBfYWxsXyBVU0IgZGV2aWNlcywgbm90CitqdXN0IG1hc3Mtc3RvcmFnZSBkZXZpY2VzLiAgSXQgbWlnaHQgdHVybiBvdXQgdG8gYmUgZXF1YWxseSB1c2VmdWwgZm9yCitvdGhlciBkZXZpY2UgdHlwZXMsIHN1Y2ggYXMgbmV0d29yayBpbnRlcmZhY2VzLgorCisKKwlXQVJOSU5HOiBVU0ItcGVyc2lzdCBjYW4gYmUgZGFuZ2Vyb3VzISEKKworV2hlbiByZWNvdmVyaW5nIGFuIGludGVycnVwdGVkIHBvd2VyIHNlc3Npb24gdGhlIGtlcm5lbCBkb2VzIGl0cyBiZXN0Cit0byBtYWtlIHN1cmUgdGhlIFVTQiBkZXZpY2UgaGFzbid0IGJlZW4gY2hhbmdlZDsgdGhhdCBpcywgdGhlIHNhbWUKK2RldmljZSBpcyBzdGlsbCBwbHVnZ2VkIGludG8gdGhlIHBvcnQgYXMgYmVmb3JlLiAgQnV0IHRoZSBjaGVja3MKK2FyZW4ndCBndWFyYW50ZWVkIHRvIGJlIDEwMCUgYWNjdXJhdGUuCisKK0lmIHlvdSByZXBsYWNlIG9uZSBVU0IgZGV2aWNlIHdpdGggYW5vdGhlciBvZiB0aGUgc2FtZSB0eXBlIChzYW1lCittYW51ZmFjdHVyZXIsIHNhbWUgSURzLCBhbmQgc28gb24pIHRoZXJlJ3MgYW4gZXhjZWxsZW50IGNoYW5jZSB0aGUKK2tlcm5lbCB3b24ndCBkZXRlY3QgdGhlIGNoYW5nZS4gIFRoZSBzZXJpYWwgbnVtYmVyIHN0cmluZyBhbmQgb3RoZXIKK2Rlc2NyaXB0b3JzIGFyZSBjb21wYXJlZCB3aXRoIHRoZSBrZXJuZWwncyBzdG9yZWQgdmFsdWVzLCBidXQgdGhpcworbWlnaHQgbm90IGhlbHAgc2luY2UgbWFudWZhY3R1cmVycyBmcmVxdWVudGx5IG9taXQgc2VyaWFsIG51bWJlcnMKK2VudGlyZWx5IGluIHRoZWlyIGRldmljZXMuCisKK0Z1cnRoZXJtb3JlIGl0J3MgcXVpdGUgcG9zc2libGUgdG8gbGVhdmUgYSBVU0IgZGV2aWNlIGV4YWN0bHkgdGhlIHNhbWUKK3doaWxlIGNoYW5naW5nIGl0cyBtZWRpYS4gIElmIHlvdSByZXBsYWNlIHRoZSBmbGFzaCBtZW1vcnkgY2FyZCBpbiBhCitVU0IgY2FyZCByZWFkZXIgd2hpbGUgdGhlIHN5c3RlbSBpcyBhc2xlZXAsIHRoZSBrZXJuZWwgd2lsbCBoYXZlIG5vCit3YXkgdG8ga25vdyB5b3UgZGlkIGl0LiAgVGhlIGtlcm5lbCB3aWxsIGFzc3VtZSB0aGF0IG5vdGhpbmcgaGFzCitoYXBwZW5lZCBhbmQgd2lsbCBjb250aW51ZSB0byB1c2UgdGhlIHBhcnRpdGlvbiB0YWJsZXMsIGlub2RlcywgYW5kCittZW1vcnkgbWFwcGluZ3MgZm9yIHRoZSBvbGQgY2FyZC4KKworSWYgdGhlIGtlcm5lbCBnZXRzIGZvb2xlZCBpbiB0aGlzIHdheSwgaXQncyBhbG1vc3QgY2VydGFpbiB0byBjYXVzZQorZGF0YSBjb3JydXB0aW9uIGFuZCB0byBjcmFzaCB5b3VyIHN5c3RlbS4gIFlvdSdsbCBoYXZlIG5vIG9uZSB0byBibGFtZQorYnV0IHlvdXJzZWxmLgorCitGb3IgdGhvc2UgZGV2aWNlcyB3aXRoIGF2b2lkX3Jlc2V0X3F1aXJrIGF0dHJpYnV0ZSBiZWluZyBzZXQsIHBlcnNpc3QKK21heWJlIGZhaWwgYmVjYXVzZSB0aGV5IG1heSBtb3JwaCBhZnRlciByZXNldC4KKworWU9VIEhBVkUgQkVFTiBXQVJORUQhICBVU0UgQVQgWU9VUiBPV04gUklTSyEKKworVGhhdCBoYXZpbmcgYmVlbiBzYWlkLCBtb3N0IG9mIHRoZSB0aW1lIHRoZXJlIHNob3VsZG4ndCBiZSBhbnkgdHJvdWJsZQorYXQgYWxsLiAgVGhlIFVTQi1wZXJzaXN0IGZlYXR1cmUgY2FuIGJlIGV4dHJlbWVseSB1c2VmdWwuICBNYWtlIHRoZQorbW9zdCBvZiBpdC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNiL3Bvd2VyLW1hbmFnZW1lbnQudHh0IGIvRG9jdW1lbnRhdGlvbi91c2IvcG93ZXItbWFuYWdlbWVudC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGE5NGZmZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdXNiL3Bvd2VyLW1hbmFnZW1lbnQudHh0CkBAIC0wLDAgKzEsNzcyIEBACisJCQlQb3dlciBNYW5hZ2VtZW50IGZvciBVU0IKKworCQkgQWxhbiBTdGVybiA8c3Rlcm5Acm93bGFuZC5oYXJ2YXJkLmVkdT4KKworCQkgICAgICAgTGFzdC11cGRhdGVkOiBGZWJydWFyeSAyMDE0CisKKworCUNvbnRlbnRzOgorCS0tLS0tLS0tLQorCSogV2hhdCBpcyBQb3dlciBNYW5hZ2VtZW50PworCSogV2hhdCBpcyBSZW1vdGUgV2FrZXVwPworCSogV2hlbiBpcyBhIFVTQiBkZXZpY2UgaWRsZT8KKwkqIEZvcm1zIG9mIGR5bmFtaWMgUE0KKwkqIFRoZSB1c2VyIGludGVyZmFjZSBmb3IgZHluYW1pYyBQTQorCSogQ2hhbmdpbmcgdGhlIGRlZmF1bHQgaWRsZS1kZWxheSB0aW1lCisJKiBXYXJuaW5ncworCSogVGhlIGRyaXZlciBpbnRlcmZhY2UgZm9yIFBvd2VyIE1hbmFnZW1lbnQKKwkqIFRoZSBkcml2ZXIgaW50ZXJmYWNlIGZvciBhdXRvc3VzcGVuZCBhbmQgYXV0b3Jlc3VtZQorCSogT3RoZXIgcGFydHMgb2YgdGhlIGRyaXZlciBpbnRlcmZhY2UKKwkqIE11dHVhbCBleGNsdXNpb24KKwkqIEludGVyYWN0aW9uIGJldHdlZW4gZHluYW1pYyBQTSBhbmQgc3lzdGVtIFBNCisJKiB4SENJIGhhcmR3YXJlIGxpbmsgUE0KKwkqIFVTQiBQb3J0IFBvd2VyIENvbnRyb2wKKwkqIFVzZXIgSW50ZXJmYWNlIGZvciBQb3J0IFBvd2VyIENvbnRyb2wKKwkqIFN1Z2dlc3RlZCBVc2Vyc3BhY2UgUG9ydCBQb3dlciBQb2xpY3kKKworCisJV2hhdCBpcyBQb3dlciBNYW5hZ2VtZW50PworCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUG93ZXIgTWFuYWdlbWVudCAoUE0pIGlzIHRoZSBwcmFjdGljZSBvZiBzYXZpbmcgZW5lcmd5IGJ5IHN1c3BlbmRpbmcKK3BhcnRzIG9mIGEgY29tcHV0ZXIgc3lzdGVtIHdoZW4gdGhleSBhcmVuJ3QgYmVpbmcgdXNlZC4gIFdoaWxlIGEKK2NvbXBvbmVudCBpcyAic3VzcGVuZGVkIiBpdCBpcyBpbiBhIG5vbmZ1bmN0aW9uYWwgbG93LXBvd2VyIHN0YXRlOyBpdAorbWlnaHQgZXZlbiBiZSB0dXJuZWQgb2ZmIGNvbXBsZXRlbHkuICBBIHN1c3BlbmRlZCBjb21wb25lbnQgY2FuIGJlCisicmVzdW1lZCIgKHJldHVybmVkIHRvIGEgZnVuY3Rpb25hbCBmdWxsLXBvd2VyIHN0YXRlKSB3aGVuIHRoZSBrZXJuZWwKK25lZWRzIHRvIHVzZSBpdC4gIChUaGVyZSBhbHNvIGFyZSBmb3JtcyBvZiBQTSBpbiB3aGljaCBjb21wb25lbnRzIGFyZQorcGxhY2VkIGluIGEgbGVzcyBmdW5jdGlvbmFsIGJ1dCBzdGlsbCB1c2FibGUgc3RhdGUgaW5zdGVhZCBvZiBiZWluZworc3VzcGVuZGVkOyBhbiBleGFtcGxlIHdvdWxkIGJlIHJlZHVjaW5nIHRoZSBDUFUncyBjbG9jayByYXRlLiAgVGhpcworZG9jdW1lbnQgd2lsbCBub3QgZGlzY3VzcyB0aG9zZSBvdGhlciBmb3Jtcy4pCisKK1doZW4gdGhlIHBhcnRzIGJlaW5nIHN1c3BlbmRlZCBpbmNsdWRlIHRoZSBDUFUgYW5kIG1vc3Qgb2YgdGhlIHJlc3Qgb2YKK3RoZSBzeXN0ZW0sIHdlIHNwZWFrIG9mIGl0IGFzIGEgInN5c3RlbSBzdXNwZW5kIi4gIFdoZW4gYSBwYXJ0aWN1bGFyCitkZXZpY2UgaXMgdHVybmVkIG9mZiB3aGlsZSB0aGUgc3lzdGVtIGFzIGEgd2hvbGUgcmVtYWlucyBydW5uaW5nLCB3ZQorY2FsbCBpdCBhICJkeW5hbWljIHN1c3BlbmQiIChhbHNvIGtub3duIGFzIGEgInJ1bnRpbWUgc3VzcGVuZCIgb3IKKyJzZWxlY3RpdmUgc3VzcGVuZCIpLiAgVGhpcyBkb2N1bWVudCBjb25jZW50cmF0ZXMgbW9zdGx5IG9uIGhvdworZHluYW1pYyBQTSBpcyBpbXBsZW1lbnRlZCBpbiB0aGUgVVNCIHN1YnN5c3RlbSwgYWx0aG91Z2ggc3lzdGVtIFBNIGlzCitjb3ZlcmVkIHRvIHNvbWUgZXh0ZW50IChzZWUgRG9jdW1lbnRhdGlvbi9wb3dlci8qLnR4dCBmb3IgbW9yZQoraW5mb3JtYXRpb24gYWJvdXQgc3lzdGVtIFBNKS4KKworU3lzdGVtIFBNIHN1cHBvcnQgaXMgcHJlc2VudCBvbmx5IGlmIHRoZSBrZXJuZWwgd2FzIGJ1aWx0IHdpdGggQ09ORklHX1NVU1BFTkQKK29yIENPTkZJR19ISUJFUk5BVElPTiBlbmFibGVkLiAgRHluYW1pYyBQTSBzdXBwb3J0IGZvciBVU0IgaXMgcHJlc2VudCB3aGVuZXZlcgordGhlIGtlcm5lbCB3YXMgYnVpbHQgd2l0aCBDT05GSUdfUE0gZW5hYmxlZC4KKworW0hpc3RvcmljYWxseSwgZHluYW1pYyBQTSBzdXBwb3J0IGZvciBVU0Igd2FzIHByZXNlbnQgb25seSBpZiB0aGUKK2tlcm5lbCBoYWQgYmVlbiBidWlsdCB3aXRoIENPTkZJR19VU0JfU1VTUEVORCBlbmFibGVkICh3aGljaCBkZXBlbmRlZCBvbgorQ09ORklHX1BNX1JVTlRJTUUpLiAgU3RhcnRpbmcgd2l0aCB0aGUgMy4xMCBrZXJuZWwgcmVsZWFzZSwgZHluYW1pYyBQTSBzdXBwb3J0Citmb3IgVVNCIHdhcyBwcmVzZW50IHdoZW5ldmVyIHRoZSBrZXJuZWwgd2FzIGJ1aWx0IHdpdGggQ09ORklHX1BNX1JVTlRJTUUKK2VuYWJsZWQuICBUaGUgQ09ORklHX1VTQl9TVVNQRU5EIG9wdGlvbiBoYWQgYmVlbiBlbGltaW5hdGVkLl0KKworCisJV2hhdCBpcyBSZW1vdGUgV2FrZXVwPworCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2hlbiBhIGRldmljZSBoYXMgYmVlbiBzdXNwZW5kZWQsIGl0IGdlbmVyYWxseSBkb2Vzbid0IHJlc3VtZSB1bnRpbAordGhlIGNvbXB1dGVyIHRlbGxzIGl0IHRvLiAgTGlrZXdpc2UsIGlmIHRoZSBlbnRpcmUgY29tcHV0ZXIgaGFzIGJlZW4KK3N1c3BlbmRlZCwgaXQgZ2VuZXJhbGx5IGRvZXNuJ3QgcmVzdW1lIHVudGlsIHRoZSB1c2VyIHRlbGxzIGl0IHRvLCBzYXkKK2J5IHByZXNzaW5nIGEgcG93ZXIgYnV0dG9uIG9yIG9wZW5pbmcgdGhlIGNvdmVyLgorCitIb3dldmVyIHNvbWUgZGV2aWNlcyBoYXZlIHRoZSBjYXBhYmlsaXR5IG9mIHJlc3VtaW5nIGJ5IHRoZW1zZWx2ZXMsIG9yCithc2tpbmcgdGhlIGtlcm5lbCB0byByZXN1bWUgdGhlbSwgb3IgZXZlbiB0ZWxsaW5nIHRoZSBlbnRpcmUgY29tcHV0ZXIKK3RvIHJlc3VtZS4gIFRoaXMgY2FwYWJpbGl0eSBnb2VzIGJ5IHNldmVyYWwgbmFtZXMgc3VjaCBhcyAiV2FrZSBPbgorTEFOIjsgd2Ugd2lsbCByZWZlciB0byBpdCBnZW5lcmljYWxseSBhcyAicmVtb3RlIHdha2V1cCIuICBXaGVuIGEKK2RldmljZSBpcyBlbmFibGVkIGZvciByZW1vdGUgd2FrZXVwIGFuZCBpdCBpcyBzdXNwZW5kZWQsIGl0IG1heSByZXN1bWUKK2l0c2VsZiAob3Igc2VuZCBhIHJlcXVlc3QgdG8gYmUgcmVzdW1lZCkgaW4gcmVzcG9uc2UgdG8gc29tZSBleHRlcm5hbAorZXZlbnQuICBFeGFtcGxlcyBpbmNsdWRlIGEgc3VzcGVuZGVkIGtleWJvYXJkIHJlc3VtaW5nIHdoZW4gYSBrZXkgaXMKK3ByZXNzZWQsIG9yIGEgc3VzcGVuZGVkIFVTQiBodWIgcmVzdW1pbmcgd2hlbiBhIGRldmljZSBpcyBwbHVnZ2VkIGluLgorCisKKwlXaGVuIGlzIGEgVVNCIGRldmljZSBpZGxlPworCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgZGV2aWNlIGlzIGlkbGUgd2hlbmV2ZXIgdGhlIGtlcm5lbCB0aGlua3MgaXQncyBub3QgYnVzeSBkb2luZworYW55dGhpbmcgaW1wb3J0YW50IGFuZCB0aHVzIGlzIGEgY2FuZGlkYXRlIGZvciBiZWluZyBzdXNwZW5kZWQuICBUaGUKK2V4YWN0IGRlZmluaXRpb24gZGVwZW5kcyBvbiB0aGUgZGV2aWNlJ3MgZHJpdmVyOyBkcml2ZXJzIGFyZSBhbGxvd2VkCit0byBkZWNsYXJlIHRoYXQgYSBkZXZpY2UgaXNuJ3QgaWRsZSBldmVuIHdoZW4gdGhlcmUncyBubyBhY3R1YWwKK2NvbW11bmljYXRpb24gdGFraW5nIHBsYWNlLiAgKEZvciBleGFtcGxlLCBhIGh1YiBpc24ndCBjb25zaWRlcmVkIGlkbGUKK3VubGVzcyBhbGwgdGhlIGRldmljZXMgcGx1Z2dlZCBpbnRvIHRoYXQgaHViIGFyZSBhbHJlYWR5IHN1c3BlbmRlZC4pCitJbiBhZGRpdGlvbiwgYSBkZXZpY2UgaXNuJ3QgY29uc2lkZXJlZCBpZGxlIHNvIGxvbmcgYXMgYSBwcm9ncmFtIGtlZXBzCitpdHMgdXNiZnMgZmlsZSBvcGVuLCB3aGV0aGVyIG9yIG5vdCBhbnkgSS9PIGlzIGdvaW5nIG9uLgorCitJZiBhIFVTQiBkZXZpY2UgaGFzIG5vIGRyaXZlciwgaXRzIHVzYmZzIGZpbGUgaXNuJ3Qgb3BlbiwgYW5kIGl0IGlzbid0CitiZWluZyBhY2Nlc3NlZCB0aHJvdWdoIHN5c2ZzLCB0aGVuIGl0IGRlZmluaXRlbHkgaXMgaWRsZS4KKworCisJRm9ybXMgb2YgZHluYW1pYyBQTQorCS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRHluYW1pYyBzdXNwZW5kcyBvY2N1ciB3aGVuIHRoZSBrZXJuZWwgZGVjaWRlcyB0byBzdXNwZW5kIGFuIGlkbGUKK2RldmljZS4gIFRoaXMgaXMgY2FsbGVkICJhdXRvc3VzcGVuZCIgZm9yIHNob3J0LiAgSW4gZ2VuZXJhbCwgYSBkZXZpY2UKK3dvbid0IGJlIGF1dG9zdXNwZW5kZWQgdW5sZXNzIGl0IGhhcyBiZWVuIGlkbGUgZm9yIHNvbWUgbWluaW11bSBwZXJpb2QKK29mIHRpbWUsIHRoZSBzby1jYWxsZWQgaWRsZS1kZWxheSB0aW1lLgorCitPZiBjb3Vyc2UsIG5vdGhpbmcgdGhlIGtlcm5lbCBkb2VzIG9uIGl0cyBvd24gaW5pdGlhdGl2ZSBzaG91bGQKK3ByZXZlbnQgdGhlIGNvbXB1dGVyIG9yIGl0cyBkZXZpY2VzIGZyb20gd29ya2luZyBwcm9wZXJseS4gIElmIGEKK2RldmljZSBoYXMgYmVlbiBhdXRvc3VzcGVuZGVkIGFuZCBhIHByb2dyYW0gdHJpZXMgdG8gdXNlIGl0LCB0aGUKK2tlcm5lbCB3aWxsIGF1dG9tYXRpY2FsbHkgcmVzdW1lIHRoZSBkZXZpY2UgKGF1dG9yZXN1bWUpLiAgRm9yIHRoZQorc2FtZSByZWFzb24sIGFuIGF1dG9zdXNwZW5kZWQgZGV2aWNlIHdpbGwgdXN1YWxseSBoYXZlIHJlbW90ZSB3YWtldXAKK2VuYWJsZWQsIGlmIHRoZSBkZXZpY2Ugc3VwcG9ydHMgcmVtb3RlIHdha2V1cC4KKworSXQgaXMgd29ydGggbWVudGlvbmluZyB0aGF0IG1hbnkgVVNCIGRyaXZlcnMgZG9uJ3Qgc3VwcG9ydAorYXV0b3N1c3BlbmQuICBJbiBmYWN0LCBhdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcgKExpbnV4IDIuNi4yMykgdGhlCitvbmx5IGRyaXZlcnMgd2hpY2ggZG8gc3VwcG9ydCBpdCBhcmUgdGhlIGh1YiBkcml2ZXIsIGthd2V0aCwgYXNpeCwKK3VzYmxwLCB1c2JsY2QsIGFuZCB1c2Itc2tlbGV0b24gKHdoaWNoIGRvZXNuJ3QgY291bnQpLiAgSWYgYQorbm9uLXN1cHBvcnRpbmcgZHJpdmVyIGlzIGJvdW5kIHRvIGEgZGV2aWNlLCB0aGUgZGV2aWNlIHdvbid0IGJlCithdXRvc3VzcGVuZGVkLiAgSW4gZWZmZWN0LCB0aGUga2VybmVsIHByZXRlbmRzIHRoZSBkZXZpY2UgaXMgbmV2ZXIKK2lkbGUuCisKK1dlIGNhbiBjYXRlZ29yaXplIHBvd2VyIG1hbmFnZW1lbnQgZXZlbnRzIGluIHR3byBicm9hZCBjbGFzc2VzOgorZXh0ZXJuYWwgYW5kIGludGVybmFsLiAgRXh0ZXJuYWwgZXZlbnRzIGFyZSB0aG9zZSB0cmlnZ2VyZWQgYnkgc29tZQorYWdlbnQgb3V0c2lkZSB0aGUgVVNCIHN0YWNrOiBzeXN0ZW0gc3VzcGVuZC9yZXN1bWUgKHRyaWdnZXJlZCBieQordXNlcnNwYWNlKSwgbWFudWFsIGR5bmFtaWMgcmVzdW1lIChhbHNvIHRyaWdnZXJlZCBieSB1c2Vyc3BhY2UpLCBhbmQKK3JlbW90ZSB3YWtldXAgKHRyaWdnZXJlZCBieSB0aGUgZGV2aWNlKS4gIEludGVybmFsIGV2ZW50cyBhcmUgdGhvc2UKK3RyaWdnZXJlZCB3aXRoaW4gdGhlIFVTQiBzdGFjazogYXV0b3N1c3BlbmQgYW5kIGF1dG9yZXN1bWUuICBOb3RlIHRoYXQKK2FsbCBkeW5hbWljIHN1c3BlbmQgZXZlbnRzIGFyZSBpbnRlcm5hbDsgZXh0ZXJuYWwgYWdlbnRzIGFyZSBub3QKK2FsbG93ZWQgdG8gaXNzdWUgZHluYW1pYyBzdXNwZW5kcy4KKworCisJVGhlIHVzZXIgaW50ZXJmYWNlIGZvciBkeW5hbWljIFBNCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSB1c2VyIGludGVyZmFjZSBmb3IgY29udHJvbGxpbmcgZHluYW1pYyBQTSBpcyBsb2NhdGVkIGluIHRoZSBwb3dlci8KK3N1YmRpcmVjdG9yeSBvZiBlYWNoIFVTQiBkZXZpY2UncyBzeXNmcyBkaXJlY3RvcnksIHRoYXQgaXMsIGluCisvc3lzL2J1cy91c2IvZGV2aWNlcy8uLi4vcG93ZXIvIHdoZXJlICIuLi4iIGlzIHRoZSBkZXZpY2UncyBJRC4gIFRoZQorcmVsZXZhbnQgYXR0cmlidXRlIGZpbGVzIGFyZTogd2FrZXVwLCBjb250cm9sLCBhbmQKK2F1dG9zdXNwZW5kX2RlbGF5X21zLiAgKFRoZXJlIG1heSBhbHNvIGJlIGEgZmlsZSBuYW1lZCAibGV2ZWwiOyB0aGlzCitmaWxlIHdhcyBkZXByZWNhdGVkIGFzIG9mIHRoZSAyLjYuMzUga2VybmVsIGFuZCByZXBsYWNlZCBieSB0aGUKKyJjb250cm9sIiBmaWxlLiAgSW4gMi42LjM4IHRoZSAiYXV0b3N1c3BlbmQiIGZpbGUgd2lsbCBiZSBkZXByZWNhdGVkCithbmQgcmVwbGFjZWQgYnkgdGhlICJhdXRvc3VzcGVuZF9kZWxheV9tcyIgZmlsZS4gIFRoZSBvbmx5IGRpZmZlcmVuY2UKK2lzIHRoYXQgdGhlIG5ld2VyIGZpbGUgZXhwcmVzc2VzIHRoZSBkZWxheSBpbiBtaWxsaXNlY29uZHMgd2hlcmVhcyB0aGUKK29sZGVyIGZpbGUgdXNlcyBzZWNvbmRzLiAgQ29uZnVzaW5nbHksIGJvdGggZmlsZXMgYXJlIHByZXNlbnQgaW4gMi42LjM3CitidXQgb25seSAiYXV0b3N1c3BlbmQiIHdvcmtzLikKKworCXBvd2VyL3dha2V1cAorCisJCVRoaXMgZmlsZSBpcyBlbXB0eSBpZiB0aGUgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQKKwkJcmVtb3RlIHdha2V1cC4gIE90aGVyd2lzZSB0aGUgZmlsZSBjb250YWlucyBlaXRoZXIgdGhlCisJCXdvcmQgImVuYWJsZWQiIG9yIHRoZSB3b3JkICJkaXNhYmxlZCIsIGFuZCB5b3UgY2FuCisJCXdyaXRlIHRob3NlIHdvcmRzIHRvIHRoZSBmaWxlLiAgVGhlIHNldHRpbmcgZGV0ZXJtaW5lcworCQl3aGV0aGVyIG9yIG5vdCByZW1vdGUgd2FrZXVwIHdpbGwgYmUgZW5hYmxlZCB3aGVuIHRoZQorCQlkZXZpY2UgaXMgbmV4dCBzdXNwZW5kZWQuICAoSWYgdGhlIHNldHRpbmcgaXMgY2hhbmdlZAorCQl3aGlsZSB0aGUgZGV2aWNlIGlzIHN1c3BlbmRlZCwgdGhlIGNoYW5nZSB3b24ndCB0YWtlCisJCWVmZmVjdCB1bnRpbCB0aGUgZm9sbG93aW5nIHN1c3BlbmQuKQorCisJcG93ZXIvY29udHJvbAorCisJCVRoaXMgZmlsZSBjb250YWlucyBvbmUgb2YgdHdvIHdvcmRzOiAib24iIG9yICJhdXRvIi4KKwkJWW91IGNhbiB3cml0ZSB0aG9zZSB3b3JkcyB0byB0aGUgZmlsZSB0byBjaGFuZ2UgdGhlCisJCWRldmljZSdzIHNldHRpbmcuCisKKwkJIm9uIiBtZWFucyB0aGF0IHRoZSBkZXZpY2Ugc2hvdWxkIGJlIHJlc3VtZWQgYW5kCisJCWF1dG9zdXNwZW5kIGlzIG5vdCBhbGxvd2VkLiAgKE9mIGNvdXJzZSwgc3lzdGVtCisJCXN1c3BlbmRzIGFyZSBzdGlsbCBhbGxvd2VkLikKKworCQkiYXV0byIgaXMgdGhlIG5vcm1hbCBzdGF0ZSBpbiB3aGljaCB0aGUga2VybmVsIGlzCisJCWFsbG93ZWQgdG8gYXV0b3N1c3BlbmQgYW5kIGF1dG9yZXN1bWUgdGhlIGRldmljZS4KKworCQkoSW4ga2VybmVscyB1cCB0byAyLjYuMzIsIHlvdSBjb3VsZCBhbHNvIHNwZWNpZnkKKwkJInN1c3BlbmQiLCBtZWFuaW5nIHRoYXQgdGhlIGRldmljZSBzaG91bGQgcmVtYWluCisJCXN1c3BlbmRlZCBhbmQgYXV0b3Jlc3VtZSB3YXMgbm90IGFsbG93ZWQuICBUaGlzCisJCXNldHRpbmcgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4pCisKKwlwb3dlci9hdXRvc3VzcGVuZF9kZWxheV9tcworCisJCVRoaXMgZmlsZSBjb250YWlucyBhbiBpbnRlZ2VyIHZhbHVlLCB3aGljaCBpcyB0aGUKKwkJbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGUgZGV2aWNlIHNob3VsZCByZW1haW4gaWRsZQorCQliZWZvcmUgdGhlIGtlcm5lbCB3aWxsIGF1dG9zdXNwZW5kIGl0ICh0aGUgaWRsZS1kZWxheQorCQl0aW1lKS4gIFRoZSBkZWZhdWx0IGlzIDIwMDAuICAwIG1lYW5zIHRvIGF1dG9zdXNwZW5kCisJCWFzIHNvb24gYXMgdGhlIGRldmljZSBiZWNvbWVzIGlkbGUsIGFuZCBuZWdhdGl2ZQorCQl2YWx1ZXMgbWVhbiBuZXZlciB0byBhdXRvc3VzcGVuZC4gIFlvdSBjYW4gd3JpdGUgYQorCQludW1iZXIgdG8gdGhlIGZpbGUgdG8gY2hhbmdlIHRoZSBhdXRvc3VzcGVuZAorCQlpZGxlLWRlbGF5IHRpbWUuCisKK1dyaXRpbmcgIi0xIiB0byBwb3dlci9hdXRvc3VzcGVuZF9kZWxheV9tcyBhbmQgd3JpdGluZyAib24iIHRvCitwb3dlci9jb250cm9sIGRvIGVzc2VudGlhbGx5IHRoZSBzYW1lIHRoaW5nIC0tIHRoZXkgYm90aCBwcmV2ZW50IHRoZQorZGV2aWNlIGZyb20gYmVpbmcgYXV0b3N1c3BlbmRlZC4gIFllcywgdGhpcyBpcyBhIHJlZHVuZGFuY3kgaW4gdGhlCitBUEkuCisKKyhJbiAyLjYuMjEgd3JpdGluZyAiMCIgdG8gcG93ZXIvYXV0b3N1c3BlbmQgd291bGQgcHJldmVudCB0aGUgZGV2aWNlCitmcm9tIGJlaW5nIGF1dG9zdXNwZW5kZWQ7IHRoZSBiZWhhdmlvciB3YXMgY2hhbmdlZCBpbiAyLjYuMjIuICBUaGUKK3Bvd2VyL2F1dG9zdXNwZW5kIGF0dHJpYnV0ZSBkaWQgbm90IGV4aXN0IHByaW9yIHRvIDIuNi4yMSwgYW5kIHRoZQorcG93ZXIvbGV2ZWwgYXR0cmlidXRlIGRpZCBub3QgZXhpc3QgcHJpb3IgdG8gMi42LjIyLiAgcG93ZXIvY29udHJvbAord2FzIGFkZGVkIGluIDIuNi4zNCwgYW5kIHBvd2VyL2F1dG9zdXNwZW5kX2RlbGF5X21zIHdhcyBhZGRlZCBpbgorMi42LjM3IGJ1dCBkaWQgbm90IGJlY29tZSBmdW5jdGlvbmFsIHVudGlsIDIuNi4zOC4pCisKKworCUNoYW5naW5nIHRoZSBkZWZhdWx0IGlkbGUtZGVsYXkgdGltZQorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZGVmYXVsdCBhdXRvc3VzcGVuZCBpZGxlLWRlbGF5IHRpbWUgKGluIHNlY29uZHMpIGlzIGNvbnRyb2xsZWQgYnkKK2EgbW9kdWxlIHBhcmFtZXRlciBpbiB1c2Jjb3JlLiAgWW91IGNhbiBzcGVjaWZ5IHRoZSB2YWx1ZSB3aGVuIHVzYmNvcmUKK2lzIGxvYWRlZC4gIEZvciBleGFtcGxlLCB0byBzZXQgaXQgdG8gNSBzZWNvbmRzIGluc3RlYWQgb2YgMiB5b3Ugd291bGQKK2RvOgorCisJbW9kcHJvYmUgdXNiY29yZSBhdXRvc3VzcGVuZD01CisKK0VxdWl2YWxlbnRseSwgeW91IGNvdWxkIGFkZCB0byBhIGNvbmZpZ3VyYXRpb24gZmlsZSBpbiAvZXRjL21vZHByb2JlLmQKK2EgbGluZSBzYXlpbmc6CisKKwlvcHRpb25zIHVzYmNvcmUgYXV0b3N1c3BlbmQ9NQorCitTb21lIGRpc3RyaWJ1dGlvbnMgbG9hZCB0aGUgdXNiY29yZSBtb2R1bGUgdmVyeSBlYXJseSBkdXJpbmcgdGhlIGJvb3QKK3Byb2Nlc3MsIGJ5IG1lYW5zIG9mIGEgcHJvZ3JhbSBvciBzY3JpcHQgcnVubmluZyBmcm9tIGFuIGluaXRyYW1mcworaW1hZ2UuICBUbyBhbHRlciB0aGUgcGFyYW1ldGVyIHZhbHVlIHlvdSB3b3VsZCBoYXZlIHRvIHJlYnVpbGQgdGhhdAoraW1hZ2UuCisKK0lmIHVzYmNvcmUgaXMgY29tcGlsZWQgaW50byB0aGUga2VybmVsIHJhdGhlciB0aGFuIGJ1aWx0IGFzIGEgbG9hZGFibGUKK21vZHVsZSwgeW91IGNhbiBhZGQKKworCXVzYmNvcmUuYXV0b3N1c3BlbmQ9NQorCit0byB0aGUga2VybmVsJ3MgYm9vdCBjb21tYW5kIGxpbmUuCisKK0ZpbmFsbHksIHRoZSBwYXJhbWV0ZXIgdmFsdWUgY2FuIGJlIGNoYW5nZWQgd2hpbGUgdGhlIHN5c3RlbSBpcworcnVubmluZy4gIElmIHlvdSBkbzoKKworCWVjaG8gNSA+L3N5cy9tb2R1bGUvdXNiY29yZS9wYXJhbWV0ZXJzL2F1dG9zdXNwZW5kCisKK3RoZW4gZWFjaCBuZXcgVVNCIGRldmljZSB3aWxsIGhhdmUgaXRzIGF1dG9zdXNwZW5kIGlkbGUtZGVsYXkKK2luaXRpYWxpemVkIHRvIDUuICAoVGhlIGlkbGUtZGVsYXkgdmFsdWVzIGZvciBhbHJlYWR5IGV4aXN0aW5nIGRldmljZXMKK3dpbGwgbm90IGJlIGFmZmVjdGVkLikKKworU2V0dGluZyB0aGUgaW5pdGlhbCBkZWZhdWx0IGlkbGUtZGVsYXkgdG8gLTEgd2lsbCBwcmV2ZW50IGFueQorYXV0b3N1c3BlbmQgb2YgYW55IFVTQiBkZXZpY2UuICBUaGlzIGhhcyB0aGUgYmVuZWZpdCBvZiBhbGxvd2luZyB5b3UKK3RoZW4gdG8gZW5hYmxlIGF1dG9zdXNwZW5kIGZvciBzZWxlY3RlZCBkZXZpY2VzLgorCisKKwlXYXJuaW5ncworCS0tLS0tLS0tCisKK1RoZSBVU0Igc3BlY2lmaWNhdGlvbiBzdGF0ZXMgdGhhdCBhbGwgVVNCIGRldmljZXMgbXVzdCBzdXBwb3J0IHBvd2VyCittYW5hZ2VtZW50LiAgTmV2ZXJ0aGVsZXNzLCB0aGUgc2FkIGZhY3QgaXMgdGhhdCBtYW55IGRldmljZXMgZG8gbm90CitzdXBwb3J0IGl0IHZlcnkgd2VsbC4gIFlvdSBjYW4gc3VzcGVuZCB0aGVtIGFsbCByaWdodCwgYnV0IHdoZW4geW91Cit0cnkgdG8gcmVzdW1lIHRoZW0gdGhleSBkaXNjb25uZWN0IHRoZW1zZWx2ZXMgZnJvbSB0aGUgVVNCIGJ1cyBvcgordGhleSBzdG9wIHdvcmtpbmcgZW50aXJlbHkuICBUaGlzIHNlZW1zIHRvIGJlIGVzcGVjaWFsbHkgcHJldmFsZW50CithbW9uZyBwcmludGVycyBhbmQgc2Nhbm5lcnMsIGJ1dCBwbGVudHkgb2Ygb3RoZXIgdHlwZXMgb2YgZGV2aWNlIGhhdmUKK3RoZSBzYW1lIGRlZmljaWVuY3kuCisKK0ZvciB0aGlzIHJlYXNvbiwgYnkgZGVmYXVsdCB0aGUga2VybmVsIGRpc2FibGVzIGF1dG9zdXNwZW5kICh0aGUKK3Bvd2VyL2NvbnRyb2wgYXR0cmlidXRlIGlzIGluaXRpYWxpemVkIHRvICJvbiIpIGZvciBhbGwgZGV2aWNlcyBvdGhlcgordGhhbiBodWJzLiAgSHVicywgYXQgbGVhc3QsIGFwcGVhciB0byBiZSByZWFzb25hYmx5IHdlbGwtYmVoYXZlZCBpbgordGhpcyByZWdhcmQuCisKKyhJbiAyLjYuMjEgYW5kIDIuNi4yMiB0aGlzIHdhc24ndCB0aGUgY2FzZS4gIEF1dG9zdXNwZW5kIHdhcyBlbmFibGVkCitieSBkZWZhdWx0IGZvciBhbG1vc3QgYWxsIFVTQiBkZXZpY2VzLiAgQSBudW1iZXIgb2YgcGVvcGxlIGV4cGVyaWVuY2VkCitwcm9ibGVtcyBhcyBhIHJlc3VsdC4pCisKK1RoaXMgbWVhbnMgdGhhdCBub24taHViIGRldmljZXMgd29uJ3QgYmUgYXV0b3N1c3BlbmRlZCB1bmxlc3MgdGhlIHVzZXIKK29yIGEgcHJvZ3JhbSBleHBsaWNpdGx5IGVuYWJsZXMgaXQuICBBcyBvZiB0aGlzIHdyaXRpbmcgdGhlcmUgYXJlbid0Cithbnkgd2lkZXNwcmVhZCBwcm9ncmFtcyB3aGljaCB3aWxsIGRvIHRoaXM7IHdlIGhvcGUgdGhhdCBpbiB0aGUgbmVhcgorZnV0dXJlIGRldmljZSBtYW5hZ2VycyBzdWNoIGFzIEhBTCB3aWxsIHRha2Ugb24gdGhpcyBhZGRlZAorcmVzcG9uc2liaWxpdHkuICBJbiB0aGUgbWVhbnRpbWUgeW91IGNhbiBhbHdheXMgY2Fycnkgb3V0IHRoZQorbmVjZXNzYXJ5IG9wZXJhdGlvbnMgYnkgaGFuZCBvciBhZGQgdGhlbSB0byBhIHVkZXYgc2NyaXB0LiAgWW91IGNhbgorYWxzbyBjaGFuZ2UgdGhlIGlkbGUtZGVsYXkgdGltZTsgMiBzZWNvbmRzIGlzIG5vdCB0aGUgYmVzdCBjaG9pY2UgZm9yCitldmVyeSBkZXZpY2UuCisKK0lmIGEgZHJpdmVyIGtub3dzIHRoYXQgaXRzIGRldmljZSBoYXMgcHJvcGVyIHN1c3BlbmQvcmVzdW1lIHN1cHBvcnQsCitpdCBjYW4gZW5hYmxlIGF1dG9zdXNwZW5kIGFsbCBieSBpdHNlbGYuICBGb3IgZXhhbXBsZSwgdGhlIHZpZGVvCitkcml2ZXIgZm9yIGEgbGFwdG9wJ3Mgd2ViY2FtIG1pZ2h0IGRvIHRoaXMgKGluIHJlY2VudCBrZXJuZWxzIHRoZXkKK2RvKSwgc2luY2UgdGhlc2UgZGV2aWNlcyBhcmUgcmFyZWx5IHVzZWQgYW5kIHNvIHNob3VsZCBub3JtYWxseSBiZQorYXV0b3N1c3BlbmRlZC4KKworU29tZXRpbWVzIGl0IHR1cm5zIG91dCB0aGF0IGV2ZW4gd2hlbiBhIGRldmljZSBkb2VzIHdvcmsgb2theSB3aXRoCithdXRvc3VzcGVuZCB0aGVyZSBhcmUgc3RpbGwgcHJvYmxlbXMuICBGb3IgZXhhbXBsZSwgdGhlIHVzYmhpZCBkcml2ZXIsCit3aGljaCBtYW5hZ2VzIGtleWJvYXJkcyBhbmQgbWljZSwgaGFzIGF1dG9zdXNwZW5kIHN1cHBvcnQuICBUZXN0cyB3aXRoCithIG51bWJlciBvZiBrZXlib2FyZHMgc2hvdyB0aGF0IHR5cGluZyBvbiBhIHN1c3BlbmRlZCBrZXlib2FyZCwgd2hpbGUKK2NhdXNpbmcgdGhlIGtleWJvYXJkIHRvIGRvIGEgcmVtb3RlIHdha2V1cCBhbGwgcmlnaHQsIHdpbGwgbm9uZXRoZWxlc3MKK2ZyZXF1ZW50bHkgcmVzdWx0IGluIGxvc3Qga2V5c3Ryb2tlcy4gIFRlc3RzIHdpdGggbWljZSBzaG93IHRoYXQgc29tZQorb2YgdGhlbSB3aWxsIGlzc3VlIGEgcmVtb3RlLXdha2V1cCByZXF1ZXN0IGluIHJlc3BvbnNlIHRvIGJ1dHRvbgorcHJlc3NlcyBidXQgbm90IHRvIG1vdGlvbiwgYW5kIHNvbWUgaW4gcmVzcG9uc2UgdG8gbmVpdGhlci4KKworVGhlIGtlcm5lbCB3aWxsIG5vdCBwcmV2ZW50IHlvdSBmcm9tIGVuYWJsaW5nIGF1dG9zdXNwZW5kIG9uIGRldmljZXMKK3RoYXQgY2FuJ3QgaGFuZGxlIGl0LiAgSXQgaXMgZXZlbiBwb3NzaWJsZSBpbiB0aGVvcnkgdG8gZGFtYWdlIGEKK2RldmljZSBieSBzdXNwZW5kaW5nIGl0IGF0IHRoZSB3cm9uZyB0aW1lLiAgKEhpZ2hseSB1bmxpa2VseSwgYnV0Citwb3NzaWJsZS4pICBUYWtlIGNhcmUuCisKKworCVRoZSBkcml2ZXIgaW50ZXJmYWNlIGZvciBQb3dlciBNYW5hZ2VtZW50CisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHJlcXVpcmVtZW50cyBmb3IgYSBVU0IgZHJpdmVyIHRvIHN1cHBvcnQgZXh0ZXJuYWwgcG93ZXIgbWFuYWdlbWVudAorYXJlIHByZXR0eSBtb2Rlc3Q7IHRoZSBkcml2ZXIgbmVlZCBvbmx5IGRlZmluZQorCisJLnN1c3BlbmQKKwkucmVzdW1lCisJLnJlc2V0X3Jlc3VtZQorCittZXRob2RzIGluIGl0cyB1c2JfZHJpdmVyIHN0cnVjdHVyZSwgYW5kIHRoZSByZXNldF9yZXN1bWUgbWV0aG9kIGlzCitvcHRpb25hbC4gIFRoZSBtZXRob2RzJyBqb2JzIGFyZSBxdWl0ZSBzaW1wbGU6CisKKwlUaGUgc3VzcGVuZCBtZXRob2QgaXMgY2FsbGVkIHRvIHdhcm4gdGhlIGRyaXZlciB0aGF0IHRoZQorCWRldmljZSBpcyBnb2luZyB0byBiZSBzdXNwZW5kZWQuICBJZiB0aGUgZHJpdmVyIHJldHVybnMgYQorCW5lZ2F0aXZlIGVycm9yIGNvZGUsIHRoZSBzdXNwZW5kIHdpbGwgYmUgYWJvcnRlZC4gIE5vcm1hbGx5CisJdGhlIGRyaXZlciB3aWxsIHJldHVybiAwLCBpbiB3aGljaCBjYXNlIGl0IG11c3QgY2FuY2VsIGFsbAorCW91dHN0YW5kaW5nIFVSQnMgKHVzYl9raWxsX3VyYigpKSBhbmQgbm90IHN1Ym1pdCBhbnkgbW9yZS4KKworCVRoZSByZXN1bWUgbWV0aG9kIGlzIGNhbGxlZCB0byB0ZWxsIHRoZSBkcml2ZXIgdGhhdCB0aGUKKwlkZXZpY2UgaGFzIGJlZW4gcmVzdW1lZCBhbmQgdGhlIGRyaXZlciBjYW4gcmV0dXJuIHRvIG5vcm1hbAorCW9wZXJhdGlvbi4gIFVSQnMgbWF5IG9uY2UgbW9yZSBiZSBzdWJtaXR0ZWQuCisKKwlUaGUgcmVzZXRfcmVzdW1lIG1ldGhvZCBpcyBjYWxsZWQgdG8gdGVsbCB0aGUgZHJpdmVyIHRoYXQKKwl0aGUgZGV2aWNlIGhhcyBiZWVuIHJlc3VtZWQgYW5kIGl0IGFsc28gaGFzIGJlZW4gcmVzZXQuCisJVGhlIGRyaXZlciBzaG91bGQgcmVkbyBhbnkgbmVjZXNzYXJ5IGRldmljZSBpbml0aWFsaXphdGlvbiwKKwlzaW5jZSB0aGUgZGV2aWNlIGhhcyBwcm9iYWJseSBsb3N0IG1vc3Qgb3IgYWxsIG9mIGl0cyBzdGF0ZQorCShhbHRob3VnaCB0aGUgaW50ZXJmYWNlcyB3aWxsIGJlIGluIHRoZSBzYW1lIGFsdHNldHRpbmdzIGFzCisJYmVmb3JlIHRoZSBzdXNwZW5kKS4KKworSWYgdGhlIGRldmljZSBpcyBkaXNjb25uZWN0ZWQgb3IgcG93ZXJlZCBkb3duIHdoaWxlIGl0IGlzIHN1c3BlbmRlZCwKK3RoZSBkaXNjb25uZWN0IG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBpbnN0ZWFkIG9mIHRoZSByZXN1bWUgb3IKK3Jlc2V0X3Jlc3VtZSBtZXRob2QuICBUaGlzIGlzIGFsc28gcXVpdGUgbGlrZWx5IHRvIGhhcHBlbiB3aGVuCit3YWtpbmcgdXAgZnJvbSBoaWJlcm5hdGlvbiwgYXMgbWFueSBzeXN0ZW1zIGRvIG5vdCBtYWludGFpbiBzdXNwZW5kCitjdXJyZW50IHRvIHRoZSBVU0IgaG9zdCBjb250cm9sbGVycyBkdXJpbmcgaGliZXJuYXRpb24uICAoSXQncworcG9zc2libGUgdG8gd29yayBhcm91bmQgdGhlIGhpYmVybmF0aW9uLWZvcmNlcy1kaXNjb25uZWN0IHByb2JsZW0gYnkKK3VzaW5nIHRoZSBVU0IgUGVyc2lzdCBmYWNpbGl0eS4pCisKK1RoZSByZXNldF9yZXN1bWUgbWV0aG9kIGlzIHVzZWQgYnkgdGhlIFVTQiBQZXJzaXN0IGZhY2lsaXR5IChzZWUKK0RvY3VtZW50YXRpb24vdXNiL3BlcnNpc3QudHh0KSBhbmQgaXQgY2FuIGFsc28gYmUgdXNlZCB1bmRlciBjZXJ0YWluCitjaXJjdW1zdGFuY2VzIHdoZW4gQ09ORklHX1VTQl9QRVJTSVNUIGlzIG5vdCBlbmFibGVkLiAgQ3VycmVudGx5LCBpZiBhCitkZXZpY2UgaXMgcmVzZXQgZHVyaW5nIGEgcmVzdW1lIGFuZCB0aGUgZHJpdmVyIGRvZXMgbm90IGhhdmUgYQorcmVzZXRfcmVzdW1lIG1ldGhvZCwgdGhlIGRyaXZlciB3b24ndCByZWNlaXZlIGFueSBub3RpZmljYXRpb24gYWJvdXQKK3RoZSByZXN1bWUuICBMYXRlciBrZXJuZWxzIHdpbGwgY2FsbCB0aGUgZHJpdmVyJ3MgZGlzY29ubmVjdCBtZXRob2Q7CisyLjYuMjMgZG9lc24ndCBkbyB0aGlzLgorCitVU0IgZHJpdmVycyBhcmUgYm91bmQgdG8gaW50ZXJmYWNlcywgc28gdGhlaXIgc3VzcGVuZCBhbmQgcmVzdW1lCittZXRob2RzIGdldCBjYWxsZWQgd2hlbiB0aGUgaW50ZXJmYWNlcyBhcmUgc3VzcGVuZGVkIG9yIHJlc3VtZWQuICBJbgorcHJpbmNpcGxlIG9uZSBtaWdodCB3YW50IHRvIHN1c3BlbmQgc29tZSBpbnRlcmZhY2VzIG9uIGEgZGV2aWNlIChpLmUuLAorZm9yY2UgdGhlIGRyaXZlcnMgZm9yIHRob3NlIGludGVyZmFjZSB0byBzdG9wIGFsbCBhY3Rpdml0eSkgd2l0aG91dAorc3VzcGVuZGluZyB0aGUgb3RoZXIgaW50ZXJmYWNlcy4gIFRoZSBVU0IgY29yZSBkb2Vzbid0IGFsbG93IHRoaXM7IGFsbAoraW50ZXJmYWNlcyBhcmUgc3VzcGVuZGVkIHdoZW4gdGhlIGRldmljZSBpdHNlbGYgaXMgc3VzcGVuZGVkIGFuZCBhbGwKK2ludGVyZmFjZXMgYXJlIHJlc3VtZWQgd2hlbiB0aGUgZGV2aWNlIGlzIHJlc3VtZWQuICBJdCBpc24ndCBwb3NzaWJsZQordG8gc3VzcGVuZCBvciByZXN1bWUgc29tZSBidXQgbm90IGFsbCBvZiBhIGRldmljZSdzIGludGVyZmFjZXMuICBUaGUKK2Nsb3Nlc3QgeW91IGNhbiBjb21lIGlzIHRvIHVuYmluZCB0aGUgaW50ZXJmYWNlcycgZHJpdmVycy4KKworCisJVGhlIGRyaXZlciBpbnRlcmZhY2UgZm9yIGF1dG9zdXNwZW5kIGFuZCBhdXRvcmVzdW1lCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RvIHN1cHBvcnQgYXV0b3N1c3BlbmQgYW5kIGF1dG9yZXN1bWUsIGEgZHJpdmVyIHNob3VsZCBpbXBsZW1lbnQgYWxsCit0aHJlZSBvZiB0aGUgbWV0aG9kcyBsaXN0ZWQgYWJvdmUuICBJbiBhZGRpdGlvbiwgYSBkcml2ZXIgaW5kaWNhdGVzCit0aGF0IGl0IHN1cHBvcnRzIGF1dG9zdXNwZW5kIGJ5IHNldHRpbmcgdGhlIC5zdXBwb3J0c19hdXRvc3VzcGVuZCBmbGFnCitpbiBpdHMgdXNiX2RyaXZlciBzdHJ1Y3R1cmUuICBJdCBpcyB0aGVuIHJlc3BvbnNpYmxlIGZvciBpbmZvcm1pbmcgdGhlCitVU0IgY29yZSB3aGVuZXZlciBvbmUgb2YgaXRzIGludGVyZmFjZXMgYmVjb21lcyBidXN5IG9yIGlkbGUuICBUaGUKK2RyaXZlciBkb2VzIHNvIGJ5IGNhbGxpbmcgdGhlc2Ugc2l4IGZ1bmN0aW9uczoKKworCWludCAgdXNiX2F1dG9wbV9nZXRfaW50ZXJmYWNlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKTsKKwl2b2lkIHVzYl9hdXRvcG1fcHV0X2ludGVyZmFjZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zik7CisJaW50ICB1c2JfYXV0b3BtX2dldF9pbnRlcmZhY2VfYXN5bmMoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpOworCXZvaWQgdXNiX2F1dG9wbV9wdXRfaW50ZXJmYWNlX2FzeW5jKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKTsKKwl2b2lkIHVzYl9hdXRvcG1fZ2V0X2ludGVyZmFjZV9ub19yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpOworCXZvaWQgdXNiX2F1dG9wbV9wdXRfaW50ZXJmYWNlX25vX3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpOworCitUaGUgZnVuY3Rpb25zIHdvcmsgYnkgbWFpbnRhaW5pbmcgYSB1c2FnZSBjb3VudGVyIGluIHRoZQordXNiX2ludGVyZmFjZSdzIGVtYmVkZGVkIGRldmljZSBzdHJ1Y3R1cmUuICBXaGVuIHRoZSBjb3VudGVyIGlzID4gMAordGhlbiB0aGUgaW50ZXJmYWNlIGlzIGRlZW1lZCB0byBiZSBidXN5LCBhbmQgdGhlIGtlcm5lbCB3aWxsIG5vdAorYXV0b3N1c3BlbmQgdGhlIGludGVyZmFjZSdzIGRldmljZS4gIFdoZW4gdGhlIHVzYWdlIGNvdW50ZXIgaXMgPSAwCit0aGVuIHRoZSBpbnRlcmZhY2UgaXMgY29uc2lkZXJlZCB0byBiZSBpZGxlLCBhbmQgdGhlIGtlcm5lbCBtYXkKK2F1dG9zdXNwZW5kIHRoZSBkZXZpY2UuCisKK0RyaXZlcnMgbmVlZCBub3QgYmUgY29uY2VybmVkIGFib3V0IGJhbGFuY2luZyBjaGFuZ2VzIHRvIHRoZSB1c2FnZQorY291bnRlcjsgdGhlIFVTQiBjb3JlIHdpbGwgdW5kbyBhbnkgcmVtYWluaW5nICJnZXQicyB3aGVuIGEgZHJpdmVyCitpcyB1bmJvdW5kIGZyb20gaXRzIGludGVyZmFjZS4gIEFzIGEgY29yb2xsYXJ5LCBkcml2ZXJzIG11c3Qgbm90IGNhbGwKK2FueSBvZiB0aGUgdXNiX2F1dG9wbV8qIGZ1bmN0aW9ucyBhZnRlciB0aGVpciBkaXNjb25uZWN0KCkgcm91dGluZSBoYXMKK3JldHVybmVkLgorCitEcml2ZXJzIHVzaW5nIHRoZSBhc3luYyByb3V0aW5lcyBhcmUgcmVzcG9uc2libGUgZm9yIHRoZWlyIG93bgorc3luY2hyb25pemF0aW9uIGFuZCBtdXR1YWwgZXhjbHVzaW9uLgorCisJdXNiX2F1dG9wbV9nZXRfaW50ZXJmYWNlKCkgaW5jcmVtZW50cyB0aGUgdXNhZ2UgY291bnRlciBhbmQKKwlkb2VzIGFuIGF1dG9yZXN1bWUgaWYgdGhlIGRldmljZSBpcyBzdXNwZW5kZWQuICBJZiB0aGUKKwlhdXRvcmVzdW1lIGZhaWxzLCB0aGUgY291bnRlciBpcyBkZWNyZW1lbnRlZCBiYWNrLgorCisJdXNiX2F1dG9wbV9wdXRfaW50ZXJmYWNlKCkgZGVjcmVtZW50cyB0aGUgdXNhZ2UgY291bnRlciBhbmQKKwlhdHRlbXB0cyBhbiBhdXRvc3VzcGVuZCBpZiB0aGUgbmV3IHZhbHVlIGlzID0gMC4KKworCXVzYl9hdXRvcG1fZ2V0X2ludGVyZmFjZV9hc3luYygpIGFuZAorCXVzYl9hdXRvcG1fcHV0X2ludGVyZmFjZV9hc3luYygpIGRvIGFsbW9zdCB0aGUgc2FtZSB0aGluZ3MgYXMKKwl0aGVpciBub24tYXN5bmMgY291bnRlcnBhcnRzLiAgVGhlIGJpZyBkaWZmZXJlbmNlIGlzIHRoYXQgdGhleQorCXVzZSBhIHdvcmtxdWV1ZSB0byBkbyB0aGUgcmVzdW1lIG9yIHN1c3BlbmQgcGFydCBvZiB0aGVpcgorCWpvYnMuICBBcyBhIHJlc3VsdCB0aGV5IGNhbiBiZSBjYWxsZWQgaW4gYW4gYXRvbWljIGNvbnRleHQsCisJc3VjaCBhcyBhbiBVUkIncyBjb21wbGV0aW9uIGhhbmRsZXIsIGJ1dCB3aGVuIHRoZXkgcmV0dXJuIHRoZQorCWRldmljZSB3aWxsIGdlbmVyYWxseSBub3QgeWV0IGJlIGluIHRoZSBkZXNpcmVkIHN0YXRlLgorCisJdXNiX2F1dG9wbV9nZXRfaW50ZXJmYWNlX25vX3Jlc3VtZSgpIGFuZAorCXVzYl9hdXRvcG1fcHV0X2ludGVyZmFjZV9ub19zdXNwZW5kKCkgbWVyZWx5IGluY3JlbWVudCBvcgorCWRlY3JlbWVudCB0aGUgdXNhZ2UgY291bnRlcjsgdGhleSBkbyBub3QgYXR0ZW1wdCB0byBjYXJyeSBvdXQKKwlhbiBhdXRvcmVzdW1lIG9yIGFuIGF1dG9zdXNwZW5kLiAgSGVuY2UgdGhleSBjYW4gYmUgY2FsbGVkIGluCisJYW4gYXRvbWljIGNvbnRleHQuCisKK1RoZSBzaW1wbGVzdCB1c2FnZSBwYXR0ZXJuIGlzIHRoYXQgYSBkcml2ZXIgY2FsbHMKK3VzYl9hdXRvcG1fZ2V0X2ludGVyZmFjZSgpIGluIGl0cyBvcGVuIHJvdXRpbmUgYW5kCit1c2JfYXV0b3BtX3B1dF9pbnRlcmZhY2UoKSBpbiBpdHMgY2xvc2Ugb3IgcmVsZWFzZSByb3V0aW5lLiAgQnV0IG90aGVyCitwYXR0ZXJucyBhcmUgcG9zc2libGUuCisKK1RoZSBhdXRvc3VzcGVuZCBhdHRlbXB0cyBtZW50aW9uZWQgYWJvdmUgd2lsbCBvZnRlbiBmYWlsIGZvciBvbmUKK3JlYXNvbiBvciBhbm90aGVyLiAgRm9yIGV4YW1wbGUsIHRoZSBwb3dlci9jb250cm9sIGF0dHJpYnV0ZSBtaWdodCBiZQorc2V0IHRvICJvbiIsIG9yIGFub3RoZXIgaW50ZXJmYWNlIGluIHRoZSBzYW1lIGRldmljZSBtaWdodCBub3QgYmUKK2lkbGUuICBUaGlzIGlzIHBlcmZlY3RseSBub3JtYWwuICBJZiB0aGUgcmVhc29uIGZvciBmYWlsdXJlIHdhcyB0aGF0Cit0aGUgZGV2aWNlIGhhc24ndCBiZWVuIGlkbGUgZm9yIGxvbmcgZW5vdWdoLCBhIHRpbWVyIGlzIHNjaGVkdWxlZCB0bworY2Fycnkgb3V0IHRoZSBvcGVyYXRpb24gYXV0b21hdGljYWxseSB3aGVuIHRoZSBhdXRvc3VzcGVuZCBpZGxlLWRlbGF5CitoYXMgZXhwaXJlZC4KKworQXV0b3Jlc3VtZSBhdHRlbXB0cyBhbHNvIGNhbiBmYWlsLCBhbHRob3VnaCBmYWlsdXJlIHdvdWxkIG1lYW4gdGhhdAordGhlIGRldmljZSBpcyBubyBsb25nZXIgcHJlc2VudCBvciBvcGVyYXRpbmcgcHJvcGVybHkuICBVbmxpa2UKK2F1dG9zdXNwZW5kLCB0aGVyZSdzIG5vIGlkbGUtZGVsYXkgZm9yIGFuIGF1dG9yZXN1bWUuCisKKworCU90aGVyIHBhcnRzIG9mIHRoZSBkcml2ZXIgaW50ZXJmYWNlCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRHJpdmVycyBjYW4gZW5hYmxlIGF1dG9zdXNwZW5kIGZvciB0aGVpciBkZXZpY2VzIGJ5IGNhbGxpbmcKKworCXVzYl9lbmFibGVfYXV0b3N1c3BlbmQoc3RydWN0IHVzYl9kZXZpY2UgKnVkZXYpOworCitpbiB0aGVpciBwcm9iZSgpIHJvdXRpbmUsIGlmIHRoZXkga25vdyB0aGF0IHRoZSBkZXZpY2UgaXMgY2FwYWJsZSBvZgorc3VzcGVuZGluZyBhbmQgcmVzdW1pbmcgY29ycmVjdGx5LiAgVGhpcyBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8KK3dyaXRpbmcgImF1dG8iIHRvIHRoZSBkZXZpY2UncyBwb3dlci9jb250cm9sIGF0dHJpYnV0ZS4gIExpa2V3aXNlLAorZHJpdmVycyBjYW4gZGlzYWJsZSBhdXRvc3VzcGVuZCBieSBjYWxsaW5nCisKKwl1c2JfZGlzYWJsZV9hdXRvc3VzcGVuZChzdHJ1Y3QgdXNiX2RldmljZSAqdWRldik7CisKK1RoaXMgaXMgZXhhY3RseSB0aGUgc2FtZSBhcyB3cml0aW5nICJvbiIgdG8gdGhlIHBvd2VyL2NvbnRyb2wgYXR0cmlidXRlLgorCitTb21ldGltZXMgYSBkcml2ZXIgbmVlZHMgdG8gbWFrZSBzdXJlIHRoYXQgcmVtb3RlIHdha2V1cCBpcyBlbmFibGVkCitkdXJpbmcgYXV0b3N1c3BlbmQuICBGb3IgZXhhbXBsZSwgdGhlcmUncyBub3QgbXVjaCBwb2ludAorYXV0b3N1c3BlbmRpbmcgYSBrZXlib2FyZCBpZiB0aGUgdXNlciBjYW4ndCBjYXVzZSB0aGUga2V5Ym9hcmQgdG8gZG8gYQorcmVtb3RlIHdha2V1cCBieSB0eXBpbmcgb24gaXQuICBJZiB0aGUgZHJpdmVyIHNldHMKK2ludGYtPm5lZWRzX3JlbW90ZV93YWtldXAgdG8gMSwgdGhlIGtlcm5lbCB3b24ndCBhdXRvc3VzcGVuZCB0aGUKK2RldmljZSBpZiByZW1vdGUgd2FrZXVwIGlzbid0IGF2YWlsYWJsZS4gIChJZiB0aGUgZGV2aWNlIGlzIGFscmVhZHkKK2F1dG9zdXNwZW5kZWQsIHRob3VnaCwgc2V0dGluZyB0aGlzIGZsYWcgd29uJ3QgY2F1c2UgdGhlIGtlcm5lbCB0bworYXV0b3Jlc3VtZSBpdC4gIE5vcm1hbGx5IGEgZHJpdmVyIHdvdWxkIHNldCB0aGlzIGZsYWcgaW4gaXRzIHByb2JlCittZXRob2QsIGF0IHdoaWNoIHRpbWUgdGhlIGRldmljZSBpcyBndWFyYW50ZWVkIG5vdCB0byBiZQorYXV0b3N1c3BlbmRlZC4pCisKK0lmIGEgZHJpdmVyIGRvZXMgaXRzIEkvTyBhc3luY2hyb25vdXNseSBpbiBpbnRlcnJ1cHQgY29udGV4dCwgaXQKK3Nob3VsZCBjYWxsIHVzYl9hdXRvcG1fZ2V0X2ludGVyZmFjZV9hc3luYygpIGJlZm9yZSBzdGFydGluZyBvdXRwdXQgYW5kCit1c2JfYXV0b3BtX3B1dF9pbnRlcmZhY2VfYXN5bmMoKSB3aGVuIHRoZSBvdXRwdXQgcXVldWUgZHJhaW5zLiAgV2hlbgoraXQgcmVjZWl2ZXMgYW4gaW5wdXQgZXZlbnQsIGl0IHNob3VsZCBjYWxsCisKKwl1c2JfbWFya19sYXN0X2J1c3koc3RydWN0IHVzYl9kZXZpY2UgKnVkZXYpOworCitpbiB0aGUgZXZlbnQgaGFuZGxlci4gIFRoaXMgdGVsbHMgdGhlIFBNIGNvcmUgdGhhdCB0aGUgZGV2aWNlIHdhcyBqdXN0CitidXN5IGFuZCB0aGVyZWZvcmUgdGhlIG5leHQgYXV0b3N1c3BlbmQgaWRsZS1kZWxheSBleHBpcmF0aW9uIHNob3VsZAorYmUgcHVzaGVkIGJhY2suICBNYW55IG9mIHRoZSB1c2JfYXV0b3BtXyogcm91dGluZXMgYWxzbyBtYWtlIHRoaXMgY2FsbCwKK3NvIGRyaXZlcnMgbmVlZCB0byB3b3JyeSBvbmx5IHdoZW4gaW50ZXJydXB0LWRyaXZlbiBpbnB1dCBhcnJpdmVzLgorCitBc3luY2hyb25vdXMgb3BlcmF0aW9uIGlzIGFsd2F5cyBzdWJqZWN0IHRvIHJhY2VzLiAgRm9yIGV4YW1wbGUsIGEKK2RyaXZlciBtYXkgY2FsbCB0aGUgdXNiX2F1dG9wbV9nZXRfaW50ZXJmYWNlX2FzeW5jKCkgcm91dGluZSBhdCBhIHRpbWUKK3doZW4gdGhlIGNvcmUgaGFzIGp1c3QgZmluaXNoZWQgZGVjaWRpbmcgdGhlIGRldmljZSBoYXMgYmVlbiBpZGxlIGZvcgorbG9uZyBlbm91Z2ggYnV0IG5vdCB5ZXQgZ290dGVuIGFyb3VuZCB0byBjYWxsaW5nIHRoZSBkcml2ZXIncyBzdXNwZW5kCittZXRob2QuICBUaGUgc3VzcGVuZCBtZXRob2QgbXVzdCBiZSByZXNwb25zaWJsZSBmb3Igc3luY2hyb25pemluZyB3aXRoCit0aGUgSS9PIHJlcXVlc3Qgcm91dGluZSBhbmQgdGhlIFVSQiBjb21wbGV0aW9uIGhhbmRsZXI7IGl0IHNob3VsZAorY2F1c2UgYXV0b3N1c3BlbmRzIHRvIGZhaWwgd2l0aCAtRUJVU1kgaWYgdGhlIGRyaXZlciBuZWVkcyB0byB1c2UgdGhlCitkZXZpY2UuCisKK0V4dGVybmFsIHN1c3BlbmQgY2FsbHMgc2hvdWxkIG5ldmVyIGJlIGFsbG93ZWQgdG8gZmFpbCBpbiB0aGlzIHdheSwKK29ubHkgYXV0b3N1c3BlbmQgY2FsbHMuICBUaGUgZHJpdmVyIGNhbiB0ZWxsIHRoZW0gYXBhcnQgYnkgYXBwbHlpbmcKK3RoZSBQTVNHX0lTX0FVVE8oKSBtYWNybyB0byB0aGUgbWVzc2FnZSBhcmd1bWVudCB0byB0aGUgc3VzcGVuZAorbWV0aG9kOyBpdCB3aWxsIHJldHVybiBUcnVlIGZvciBpbnRlcm5hbCBQTSBldmVudHMgKGF1dG9zdXNwZW5kKSBhbmQKK0ZhbHNlIGZvciBleHRlcm5hbCBQTSBldmVudHMuCisKKworCU11dHVhbCBleGNsdXNpb24KKwktLS0tLS0tLS0tLS0tLS0tCisKK0ZvciBleHRlcm5hbCBldmVudHMgLS0gYnV0IG5vdCBuZWNlc3NhcmlseSBmb3IgYXV0b3N1c3BlbmQgb3IKK2F1dG9yZXN1bWUgLS0gdGhlIGRldmljZSBzZW1hcGhvcmUgKHVkZXYtPmRldi5zZW0pIHdpbGwgYmUgaGVsZCB3aGVuIGEKK3N1c3BlbmQgb3IgcmVzdW1lIG1ldGhvZCBpcyBjYWxsZWQuICBUaGlzIGltcGxpZXMgdGhhdCBleHRlcm5hbAorc3VzcGVuZC9yZXN1bWUgZXZlbnRzIGFyZSBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCBjYWxscyB0byBwcm9iZSwKK2Rpc2Nvbm5lY3QsIHByZV9yZXNldCwgYW5kIHBvc3RfcmVzZXQ7IHRoZSBVU0IgY29yZSBndWFyYW50ZWVzIHRoYXQKK3RoaXMgaXMgdHJ1ZSBvZiBhdXRvc3VzcGVuZC9hdXRvcmVzdW1lIGV2ZW50cyBhcyB3ZWxsLgorCitJZiBhIGRyaXZlciB3YW50cyB0byBibG9jayBhbGwgc3VzcGVuZC9yZXN1bWUgY2FsbHMgZHVyaW5nIHNvbWUKK2NyaXRpY2FsIHNlY3Rpb24sIHRoZSBiZXN0IHdheSBpcyB0byBsb2NrIHRoZSBkZXZpY2UgYW5kIGNhbGwKK3VzYl9hdXRvcG1fZ2V0X2ludGVyZmFjZSgpIChhbmQgZG8gdGhlIHJldmVyc2UgYXQgdGhlIGVuZCBvZiB0aGUKK2NyaXRpY2FsIHNlY3Rpb24pLiAgSG9sZGluZyB0aGUgZGV2aWNlIHNlbWFwaG9yZSB3aWxsIGJsb2NrIGFsbAorZXh0ZXJuYWwgUE0gY2FsbHMsIGFuZCB0aGUgdXNiX2F1dG9wbV9nZXRfaW50ZXJmYWNlKCkgd2lsbCBwcmV2ZW50IGFueQoraW50ZXJuYWwgUE0gY2FsbHMsIGV2ZW4gaWYgaXQgZmFpbHMuICAoRXhlcmNpc2U6IFdoeT8pCisKKworCUludGVyYWN0aW9uIGJldHdlZW4gZHluYW1pYyBQTSBhbmQgc3lzdGVtIFBNCisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRHluYW1pYyBwb3dlciBtYW5hZ2VtZW50IGFuZCBzeXN0ZW0gcG93ZXIgbWFuYWdlbWVudCBjYW4gaW50ZXJhY3QgaW4KK2EgY291cGxlIG9mIHdheXMuCisKK0ZpcnN0bHksIGEgZGV2aWNlIG1heSBhbHJlYWR5IGJlIGF1dG9zdXNwZW5kZWQgd2hlbiBhIHN5c3RlbSBzdXNwZW5kCitvY2N1cnMuICBTaW5jZSBzeXN0ZW0gc3VzcGVuZHMgYXJlIHN1cHBvc2VkIHRvIGJlIGFzIHRyYW5zcGFyZW50IGFzCitwb3NzaWJsZSwgdGhlIGRldmljZSBzaG91bGQgcmVtYWluIHN1c3BlbmRlZCBmb2xsb3dpbmcgdGhlIHN5c3RlbQorcmVzdW1lLiAgQnV0IHRoaXMgdGhlb3J5IG1heSBub3Qgd29yayBvdXQgd2VsbCBpbiBwcmFjdGljZTsgb3ZlciB0aW1lCit0aGUga2VybmVsJ3MgYmVoYXZpb3IgaW4gdGhpcyByZWdhcmQgaGFzIGNoYW5nZWQuICBBcyBvZiAyLjYuMzcgdGhlCitwb2xpY3kgaXMgdG8gcmVzdW1lIGFsbCBkZXZpY2VzIGR1cmluZyBhIHN5c3RlbSByZXN1bWUgYW5kIGxldCB0aGVtCitoYW5kbGUgdGhlaXIgb3duIHJ1bnRpbWUgc3VzcGVuZHMgYWZ0ZXJ3YXJkLgorCitTZWNvbmRseSwgYSBkeW5hbWljIHBvd2VyLW1hbmFnZW1lbnQgZXZlbnQgbWF5IG9jY3VyIGFzIGEgc3lzdGVtCitzdXNwZW5kIGlzIHVuZGVyd2F5LiAgVGhlIHdpbmRvdyBmb3IgdGhpcyBpcyBzaG9ydCwgc2luY2Ugc3lzdGVtCitzdXNwZW5kcyBkb24ndCB0YWtlIGxvbmcgKGEgZmV3IHNlY29uZHMgdXN1YWxseSksIGJ1dCBpdCBjYW4gaGFwcGVuLgorRm9yIGV4YW1wbGUsIGEgc3VzcGVuZGVkIGRldmljZSBtYXkgc2VuZCBhIHJlbW90ZS13YWtldXAgc2lnbmFsIHdoaWxlCit0aGUgc3lzdGVtIGlzIHN1c3BlbmRpbmcuICBUaGUgcmVtb3RlIHdha2V1cCBtYXkgc3VjY2VlZCwgd2hpY2ggd291bGQKK2NhdXNlIHRoZSBzeXN0ZW0gc3VzcGVuZCB0byBhYm9ydC4gIElmIHRoZSByZW1vdGUgd2FrZXVwIGRvZXNuJ3QKK3N1Y2NlZWQsIGl0IG1heSBzdGlsbCByZW1haW4gYWN0aXZlIGFuZCB0aHVzIGNhdXNlIHRoZSBzeXN0ZW0gdG8KK3Jlc3VtZSBhcyBzb29uIGFzIHRoZSBzeXN0ZW0gc3VzcGVuZCBpcyBjb21wbGV0ZS4gIE9yIHRoZSByZW1vdGUKK3dha2V1cCBtYXkgZmFpbCBhbmQgZ2V0IGxvc3QuICBXaGljaCBvdXRjb21lIG9jY3VycyBkZXBlbmRzIG9uIHRpbWluZworYW5kIG9uIHRoZSBoYXJkd2FyZSBhbmQgZmlybXdhcmUgZGVzaWduLgorCisKKwl4SENJIGhhcmR3YXJlIGxpbmsgUE0KKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworeEhDSSBob3N0IGNvbnRyb2xsZXIgcHJvdmlkZXMgaGFyZHdhcmUgbGluayBwb3dlciBtYW5hZ2VtZW50IHRvIHVzYjIuMAorKHhIQ0kgMS4wIGZlYXR1cmUpIGFuZCB1c2IzLjAgZGV2aWNlcyB3aGljaCBzdXBwb3J0IGxpbmsgUE0uIEJ5CitlbmFibGluZyBoYXJkd2FyZSBMUE0sIHRoZSBob3N0IGNhbiBhdXRvbWF0aWNhbGx5IHB1dCB0aGUgZGV2aWNlIGludG8KK2xvd2VyIHBvd2VyIHN0YXRlKEwxIGZvciB1c2IyLjAgZGV2aWNlcywgb3IgVTEvVTIgZm9yIHVzYjMuMCBkZXZpY2VzKSwKK3doaWNoIHN0YXRlIGRldmljZSBjYW4gZW50ZXIgYW5kIHJlc3VtZSB2ZXJ5IHF1aWNrbHkuCisKK1RoZSB1c2VyIGludGVyZmFjZSBmb3IgY29udHJvbGxpbmcgaGFyZHdhcmUgTFBNIGlzIGxvY2F0ZWQgaW4gdGhlCitwb3dlci8gc3ViZGlyZWN0b3J5IG9mIGVhY2ggVVNCIGRldmljZSdzIHN5c2ZzIGRpcmVjdG9yeSwgdGhhdCBpcywgaW4KKy9zeXMvYnVzL3VzYi9kZXZpY2VzLy4uLi9wb3dlci8gd2hlcmUgIi4uLiIgaXMgdGhlIGRldmljZSdzIElELiBUaGUKK3JlbGV2YW50IGF0dHJpYnV0ZSBmaWxlcyBhcmUgdXNiMl9oYXJkd2FyZV9scG0gYW5kIHVzYjNfaGFyZHdhcmVfbHBtLgorCisJcG93ZXIvdXNiMl9oYXJkd2FyZV9scG0KKworCQlXaGVuIGEgVVNCMiBkZXZpY2Ugd2hpY2ggc3VwcG9ydCBMUE0gaXMgcGx1Z2dlZCB0byBhCisJCXhIQ0kgaG9zdCByb290IGh1YiB3aGljaCBzdXBwb3J0IHNvZnR3YXJlIExQTSwgdGhlCisJCWhvc3Qgd2lsbCBydW4gYSBzb2Z0d2FyZSBMUE0gdGVzdCBmb3IgaXQ7IGlmIHRoZSBkZXZpY2UKKwkJZW50ZXJzIEwxIHN0YXRlIGFuZCByZXN1bWUgc3VjY2Vzc2Z1bGx5IGFuZCB0aGUgaG9zdAorCQlzdXBwb3J0cyBVU0IyIGhhcmR3YXJlIExQTSwgdGhpcyBmaWxlIHdpbGwgc2hvdyB1cCBhbmQKKwkJZHJpdmVyIHdpbGwgZW5hYmxlIGhhcmR3YXJlIExQTQlmb3IgdGhlIGRldmljZS4gWW91CisJCWNhbiB3cml0ZSB5L1kvMSBvciBuL04vMCB0byB0aGUgZmlsZSB0bwllbmFibGUvZGlzYWJsZQorCQlVU0IyIGhhcmR3YXJlIExQTSBtYW51YWxseS4gVGhpcyBpcyBmb3IJdGVzdCBwdXJwb3NlIG1haW5seS4KKworCXBvd2VyL3VzYjNfaGFyZHdhcmVfbHBtX3UxCisJcG93ZXIvdXNiM19oYXJkd2FyZV9scG1fdTIKKworCQlXaGVuIGEgVVNCIDMuMCBscG0tY2FwYWJsZSBkZXZpY2UgaXMgcGx1Z2dlZCBpbiB0byBhCisJCXhIQ0kgaG9zdCB3aGljaCBzdXBwb3J0cyBsaW5rIFBNLCBpdCB3aWxsIGNoZWNrIGlmIFUxCisJCWFuZCBVMiBleGl0IGxhdGVuY2llcyBoYXZlIGJlZW4gc2V0IGluIHRoZSBCT1MKKwkJZGVzY3JpcHRvcjsgaWYgdGhlIGNoZWNrIGlzIGlzIHBhc3NlZCBhbmQgdGhlIGhvc3QKKwkJc3VwcG9ydHMgVVNCMyBoYXJkd2FyZSBMUE0sIFVTQjMgaGFyZHdhcmUgTFBNIHdpbGwgYmUKKwkJZW5hYmxlZCBmb3IgdGhlIGRldmljZSBhbmQgdGhlc2UgZmlsZXMgd2lsbCBiZSBjcmVhdGVkLgorCQlUaGUgZmlsZXMgaG9sZCBhIHN0cmluZyB2YWx1ZSAoZW5hYmxlIG9yIGRpc2FibGUpCisJCWluZGljYXRpbmcgd2hldGhlciBvciBub3QgVVNCMyBoYXJkd2FyZSBMUE0gVTEgb3IgVTIKKwkJaXMgZW5hYmxlZCBmb3IgdGhlIGRldmljZS4KKworCVVTQiBQb3J0IFBvd2VyIENvbnRyb2wKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0luIGFkZGl0aW9uIHRvIHN1c3BlbmRpbmcgZW5kcG9pbnQgZGV2aWNlcyBhbmQgZW5hYmxpbmcgaGFyZHdhcmUKK2NvbnRyb2xsZWQgbGluayBwb3dlciBtYW5hZ2VtZW50LCB0aGUgVVNCIHN1YnN5c3RlbSBhbHNvIGhhcyB0aGUKK2NhcGFiaWxpdHkgdG8gZGlzYWJsZSBwb3dlciB0byBwb3J0cyB1bmRlciBzb21lIGNvbmRpdGlvbnMuICBQb3dlciBpcworY29udHJvbGxlZCB0aHJvdWdoIFNldC9DbGVhclBvcnRGZWF0dXJlKFBPUlRfUE9XRVIpIHJlcXVlc3RzIHRvIGEgaHViLgorSW4gdGhlIGNhc2Ugb2YgYSByb290IG9yIHBsYXRmb3JtLWludGVybmFsIGh1YiB0aGUgaG9zdCBjb250cm9sbGVyCitkcml2ZXIgdHJhbnNsYXRlcyBQT1JUX1BPV0VSIHJlcXVlc3RzIGludG8gcGxhdGZvcm0gZmlybXdhcmUgKEFDUEkpCittZXRob2QgY2FsbHMgdG8gc2V0IHRoZSBwb3J0IHBvd2VyIHN0YXRlLiBGb3IgbW9yZSBiYWNrZ3JvdW5kIHNlZSB0aGUKK0xpbnV4IFBsdW1iZXJzIENvbmZlcmVuY2UgMjAxMiBzbGlkZXMgWzFdIGFuZCB2aWRlbyBbMl06CisKK1Vwb24gcmVjZWl2aW5nIGEgQ2xlYXJQb3J0RmVhdHVyZShQT1JUX1BPV0VSKSByZXF1ZXN0IGEgVVNCIHBvcnQgaXMKK2xvZ2ljYWxseSBvZmYsIGFuZCBtYXkgdHJpZ2dlciB0aGUgYWN0dWFsIGxvc3Mgb2YgVkJVUyB0byB0aGUgcG9ydCBbM10uCitWQlVTIG1heSBiZSBtYWludGFpbmVkIGluIHRoZSBjYXNlIHdoZXJlIGEgaHViIGdhbmdzIG11bHRpcGxlIHBvcnRzIGludG8KK2Egc2hhcmVkIHBvd2VyIHdlbGwgY2F1c2luZyBwb3dlciB0byByZW1haW4gdW50aWwgYWxsIHBvcnRzIGluIHRoZSBnYW5nCithcmUgdHVybmVkIG9mZi4gIFZCVVMgbWF5IGFsc28gYmUgbWFpbnRhaW5lZCBieSBodWIgcG9ydHMgY29uZmlndXJlZCBmb3IKK2EgY2hhcmdpbmcgYXBwbGljYXRpb24uICBJbiBhbnkgZXZlbnQgYSBsb2dpY2FsbHkgb2ZmIHBvcnQgd2lsbCBsb3NlCitjb25uZWN0aW9uIHdpdGggaXRzIGRldmljZSwgbm90IHJlc3BvbmQgdG8gaG90cGx1ZyBldmVudHMsIGFuZCBub3QKK3Jlc3BvbmQgdG8gcmVtb3RlIHdha2V1cCBldmVudHMqLgorCitXQVJOSU5HOiB0dXJuaW5nIG9mZiBhIHBvcnQgbWF5IHJlc3VsdCBpbiB0aGUgaW5hYmlsaXR5IHRvIGhvdCBhZGQgYSBkZXZpY2UuCitQbGVhc2Ugc2VlICJVc2VyIEludGVyZmFjZSBmb3IgUG9ydCBQb3dlciBDb250cm9sIiBmb3IgZGV0YWlscy4KKworQXMgZmFyIGFzIHRoZSBlZmZlY3Qgb24gdGhlIGRldmljZSBpdHNlbGYgaXQgaXMgc2ltaWxhciB0byB3aGF0IGEgZGV2aWNlCitnb2VzIHRocm91Z2ggZHVyaW5nIHN5c3RlbSBzdXNwZW5kLCBpLmUuIHRoZSBwb3dlciBzZXNzaW9uIGlzIGxvc3QuICBBbnkKK1VTQiBkZXZpY2Ugb3IgZHJpdmVyIHRoYXQgbWlzYmVoYXZlcyB3aXRoIHN5c3RlbSBzdXNwZW5kIHdpbGwgYmUKK3NpbWlsYXJseSBhZmZlY3RlZCBieSBhIHBvcnQgcG93ZXIgY3ljbGUgZXZlbnQuICBGb3IgdGhpcyByZWFzb24gdGhlCitpbXBsZW1lbnRhdGlvbiBzaGFyZXMgdGhlIHNhbWUgZGV2aWNlIHJlY292ZXJ5IHBhdGggKGFuZCBob25vcnMgdGhlIHNhbWUKK3F1aXJrcykgYXMgdGhlIHN5c3RlbSByZXN1bWUgcGF0aCBmb3IgdGhlIGh1Yi4KKworWzFdOiBodHRwOi8vZGwuZHJvcGJveC5jb20vdS85NjgyMDU3NS9zYXJhaC1zaGFycC1scHQtcG9ydC1wb3dlci1vZmYyLW1pbmkucGRmCitbMl06IGh0dHA6Ly9saW51eHBsdW1iZXJzLnViaWNhc3QudHYvdmlkZW9zL3VzYi1wb3J0LXBvd2VyLW9mZi1rZXJuZWx1c2Vyc3BhY2UtYXBpLworWzNdOiBVU0IgMy4xIFNlY3Rpb24gMTAuMTIKKyogd2FrZXVwIG5vdGU6IGlmIGEgZGV2aWNlIGlzIGNvbmZpZ3VyZWQgdG8gc2VuZCB3YWtldXAgZXZlbnRzIHRoZSBwb3J0CisgIHBvd2VyIGNvbnRyb2wgaW1wbGVtZW50YXRpb24gd2lsbCBibG9jayBwb3dlcm9mZiBhdHRlbXB0cyBvbiB0aGF0CisgIHBvcnQuCisKKworCVVzZXIgSW50ZXJmYWNlIGZvciBQb3J0IFBvd2VyIENvbnRyb2wKKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBwb3J0IHBvd2VyIGNvbnRyb2wgbWVjaGFuaXNtIHVzZXMgdGhlIFBNIHJ1bnRpbWUgc3lzdGVtLiAgUG93ZXJvZmYgaXMKK3JlcXVlc3RlZCBieSBjbGVhcmluZyB0aGUgcG93ZXIvcG1fcW9zX25vX3Bvd2VyX29mZiBmbGFnIG9mIHRoZSBwb3J0IGRldmljZQorKGRlZmF1bHRzIHRvIDEpLiAgSWYgdGhlIHBvcnQgaXMgZGlzY29ubmVjdGVkIGl0IHdpbGwgaW1tZWRpYXRlbHkgcmVjZWl2ZSBhCitDbGVhclBvcnRGZWF0dXJlKFBPUlRfUE9XRVIpIHJlcXVlc3QuICBPdGhlcndpc2UsIGl0IHdpbGwgaG9ub3IgdGhlIHBtIHJ1bnRpbWUKK3J1bGVzIGFuZCByZXF1aXJlIHRoZSBhdHRhY2hlZCBjaGlsZCBkZXZpY2UgYW5kIGFsbCBkZXNjZW5kYW50cyB0byBiZSBzdXNwZW5kZWQuCitUaGlzIG1lY2hhbmlzbSBpcyBkZXBlbmRlbnQgb24gdGhlIGh1YiBhZHZlcnRpc2luZyBwb3J0IHBvd2VyIHN3aXRjaGluZyBpbiBpdHMKK2h1YiBkZXNjcmlwdG9yICh3SHViQ2hhcmFjdGVyaXN0aWNzIGxvZ2ljYWwgcG93ZXIgc3dpdGNoaW5nIG1vZGUgZmllbGQpLgorCitOb3RlLCBzb21lIGludGVyZmFjZSBkZXZpY2VzL2RyaXZlcnMgZG8gbm90IHN1cHBvcnQgYXV0b3N1c3BlbmQuICBVc2Vyc3BhY2UgbWF5CituZWVkIHRvIHVuYmluZCB0aGUgaW50ZXJmYWNlIGRyaXZlcnMgYmVmb3JlIHRoZSB1c2JfZGV2aWNlIHdpbGwgc3VzcGVuZC4gIEFuCit1bmJvdW5kIGludGVyZmFjZSBkZXZpY2UgaXMgc3VzcGVuZGVkIGJ5IGRlZmF1bHQuICBXaGVuIHVuYmluZGluZywgYmUgY2FyZWZ1bAordG8gdW5iaW5kIGludGVyZmFjZSBkcml2ZXJzLCBub3QgdGhlIGRyaXZlciBvZiB0aGUgcGFyZW50IHVzYiBkZXZpY2UuICBBbHNvLAorbGVhdmUgaHViIGludGVyZmFjZSBkcml2ZXJzIGJvdW5kLiAgSWYgdGhlIGRyaXZlciBmb3IgdGhlIHVzYiBkZXZpY2UgKG5vdAoraW50ZXJmYWNlKSBpcyB1bmJvdW5kIHRoZSBrZXJuZWwgaXMgbm8gbG9uZ2VyIGFibGUgdG8gcmVzdW1lIHRoZSBkZXZpY2UuICBJZiBhCitodWIgaW50ZXJmYWNlIGRyaXZlciBpcyB1bmJvdW5kLCBjb250cm9sIG9mIGl0cyBjaGlsZCBwb3J0cyBpcyBsb3N0IGFuZCBhbGwKK2F0dGFjaGVkIGNoaWxkLWRldmljZXMgd2lsbCBkaXNjb25uZWN0LiAgQSBnb29kIHJ1bGUgb2YgdGh1bWIgaXMgdGhhdCBpZiB0aGUKKydkcml2ZXIvbW9kdWxlJyBsaW5rIGZvciBhIGRldmljZSBwb2ludHMgdG8gL3N5cy9tb2R1bGUvdXNiY29yZSB0aGVuIHVuYmluZGluZworaXQgd2lsbCBpbnRlcmZlcmUgd2l0aCBwb3J0IHBvd2VyIGNvbnRyb2wuCisKK0V4YW1wbGUgb2YgdGhlIHJlbGV2YW50IGZpbGVzIGZvciBwb3J0IHBvd2VyIGNvbnRyb2wuICBOb3RlLCBpbiB0aGlzIGV4YW1wbGUKK3RoZXNlIGZpbGVzIGFyZSByZWxhdGl2ZSB0byBhIHVzYiBodWIgZGV2aWNlIChwcmVmaXgpLgorCisgICAgIHByZWZpeD0vc3lzL2RldmljZXMvcGNpMDAwMDowMC8wMDAwOjAwOjE0LjAvdXNiMy8zLTEKKworICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaGVkIGNoaWxkIGRldmljZSArCisgICAgICAgICAgICAgICAgICBodWIgcG9ydCBkZXZpY2UgKyAgICAgICAgIHwKKyAgICAgaHViIGludGVyZmFjZSBkZXZpY2UgKyAgICAgICB8ICAgICAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICB2ICAgICAgIHYgICAgICAgICB2CisgICAgICAgICAgICAgICAgICAkcHJlZml4LzMtMToxLjAvMy0xLXBvcnQxL2RldmljZQorCisgICAgICRwcmVmaXgvMy0xOjEuMC8zLTEtcG9ydDEvcG93ZXIvcG1fcW9zX25vX3Bvd2VyX29mZgorICAgICAkcHJlZml4LzMtMToxLjAvMy0xLXBvcnQxL2RldmljZS9wb3dlci9jb250cm9sCisgICAgICRwcmVmaXgvMy0xOjEuMC8zLTEtcG9ydDEvZGV2aWNlLzMtMS4xOjxpbnRmMD4vZHJpdmVyL3VuYmluZAorICAgICAkcHJlZml4LzMtMToxLjAvMy0xLXBvcnQxL2RldmljZS8zLTEuMTo8aW50ZjE+L2RyaXZlci91bmJpbmQKKyAgICAgLi4uCisgICAgICRwcmVmaXgvMy0xOjEuMC8zLTEtcG9ydDEvZGV2aWNlLzMtMS4xOjxpbnRmTj4vZHJpdmVyL3VuYmluZAorCitJbiBhZGRpdGlvbiB0byB0aGVzZSBmaWxlcyBzb21lIHBvcnRzIG1heSBoYXZlIGEgJ3BlZXInIGxpbmsgdG8gYSBwb3J0IG9uCithbm90aGVyIGh1Yi4gIFRoZSBleHBlY3RhdGlvbiBpcyB0aGF0IGFsbCBzdXBlcnNwZWVkIHBvcnRzIGhhdmUgYQoraGktc3BlZWQgcGVlci4KKworJHByZWZpeC8zLTE6MS4wLzMtMS1wb3J0MS9wZWVyIC0+IC4uLy4uLy4uLy4uL3VzYjIvMi0xLzItMToxLjAvMi0xLXBvcnQxCisuLi8uLi8uLi8uLi91c2IyLzItMS8yLTE6MS4wLzItMS1wb3J0MS9wZWVyIC0+IC4uLy4uLy4uLy4uL3VzYjMvMy0xLzMtMToxLjAvMy0xLXBvcnQxCisKK0Rpc3RpbmN0IGZyb20gJ2NvbXBhbmlvbiBwb3J0cycsIG9yICdlaGNpL3hoY2kgc2hhcmVkIHN3aXRjaG92ZXIgcG9ydHMnCitwZWVyIHBvcnRzIGFyZSBzaW1wbHkgdGhlIGhpLXNwZWVkIGFuZCBzdXBlcnNwZWVkIGludGVyZmFjZSBwaW5zIHRoYXQKK2FyZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIHVzYjMgY29ubmVjdG9yLiAgUGVlciBwb3J0cyBzaGFyZSB0aGUgc2FtZQorYW5jZXN0b3IgWEhDSSBkZXZpY2UuCisKK1doaWxlIGEgc3VwZXJzcGVlZCBwb3J0IGlzIHBvd2VyZWQgb2ZmIGEgZGV2aWNlIG1heSBkb3duZ3JhZGUgaXRzCitjb25uZWN0aW9uIGFuZCBhdHRlbXB0IHRvIGNvbm5lY3QgdG8gdGhlIGhpLXNwZWVkIHBpbnMuICBUaGUKK2ltcGxlbWVudGF0aW9uIHRha2VzIHN0ZXBzIHRvIHByZXZlbnQgdGhpczoKKworMS8gUG9ydCBzdXNwZW5kIGlzIHNlcXVlbmNlZCB0byBndWFyYW50ZWUgdGhhdCBoaS1zcGVlZCBwb3J0cyBhcmUgcG93ZXJlZC1vZmYKKyAgIGJlZm9yZSB0aGVpciBzdXBlcnNwZWVkIHBlZXIgaXMgcGVybWl0dGVkIHRvIHBvd2VyLW9mZi4gIFRoZSBpbXBsaWNhdGlvbiBpcworICAgdGhhdCB0aGUgc2V0dGluZyBwbV9xb3Nfbm9fcG93ZXJfb2ZmIHRvIHplcm8gb24gYSBzdXBlcnNwZWVkIHBvcnQgbWF5IG5vdCBjYXVzZQorICAgdGhlIHBvcnQgdG8gcG93ZXItb2ZmIHVudGlsIGl0cyBoaWdoc3BlZWQgcGVlciBoYXMgZ29uZSB0byBpdHMgcnVudGltZSBzdXNwZW5kCisgICBzdGF0ZS4gIFVzZXJzcGFjZSBtdXN0IHRha2UgY2FyZSB0byBvcmRlciB0aGUgc3VzcGVuc2lvbnMgaWYgaXQgd2FudHMgdG8KKyAgIGd1YXJhbnRlZSB0aGF0IGEgc3VwZXJzcGVlZCBwb3J0IHdpbGwgcG93ZXItb2ZmLgorCisyLyBQb3J0IHJlc3VtZSBpcyBzZXF1ZW5jZWQgdG8gZm9yY2UgYSBzdXBlcnNwZWVkIHBvcnQgdG8gcG93ZXItb24gcHJpb3IgdG8gaXRzCisgICBoaWdoc3BlZWQgcGVlci4KKworMy8gUG9ydCByZXN1bWUgYWx3YXlzIHRyaWdnZXJzIGFuIGF0dGFjaGVkIGNoaWxkIGRldmljZSB0byByZXN1bWUuICBBZnRlciBhCisgICBwb3dlciBzZXNzaW9uIGlzIGxvc3QgdGhlIGRldmljZSBtYXkgaGF2ZSBiZWVuIHJlbW92ZWQsIG9yIG5lZWQgcmVzZXQuCisgICBSZXN1bWluZyB0aGUgY2hpbGQgZGV2aWNlIHdoZW4gdGhlIHBhcmVudCBwb3J0IHJlZ2FpbnMgcG93ZXIgcmVzb2x2ZXMgdGhvc2UKKyAgIHN0YXRlcyBhbmQgY2xhbXBzIHRoZSBtYXhpbXVtIHBvcnQgcG93ZXIgY3ljbGUgZnJlcXVlbmN5IGF0IHRoZSByYXRlIHRoZSBjaGlsZAorICAgZGV2aWNlIGNhbiBzdXNwZW5kIChhdXRvc3VzcGVuZC1kZWxheSkgYW5kIHJlc3VtZSAocmVzZXQtcmVzdW1lIGxhdGVuY3kpLgorCitTeXNmcyBmaWxlcyByZWxldmFudCBmb3IgcG9ydCBwb3dlciBjb250cm9sOgorCTxodWJkZXYtcG9ydFg+L3Bvd2VyL3BtX3Fvc19ub19wb3dlcl9vZmY6CisJCVRoaXMgd3JpdGFibGUgZmxhZyBjb250cm9scyB0aGUgc3RhdGUgb2YgYW4gaWRsZSBwb3J0LgorCQlPbmNlIGFsbCBjaGlsZHJlbiBhbmQgZGVzY2VuZGFudHMgaGF2ZSBzdXNwZW5kZWQgdGhlCisJCXBvcnQgbWF5IHN1c3BlbmQvcG93ZXJvZmYgcHJvdmlkZWQgdGhhdAorCQlwbV9xb3Nfbm9fcG93ZXJfb2ZmIGlzICcwJy4gIElmIHBtX3Fvc19ub19wb3dlcl9vZmYgaXMKKwkJJzEnIHRoZSBwb3J0IHdpbGwgcmVtYWluIGFjdGl2ZS9wb3dlcmVkIHJlZ2FyZGxlc3Mgb2YKKwkJdGhlIHN0YXRzIG9mIGRlc2NlbmRhbnRzLiAgRGVmYXVsdHMgdG8gMS4KKworCTxodWJkZXYtcG9ydFg+L3Bvd2VyL3J1bnRpbWVfc3RhdHVzOgorCQlUaGlzIGZpbGUgcmVmbGVjdHMgd2hldGhlciB0aGUgcG9ydCBpcyAnYWN0aXZlJyAocG93ZXIgaXMgb24pCisJCW9yICdzdXNwZW5kZWQnIChsb2dpY2FsbHkgb2ZmKS4gIFRoZXJlIGlzIG5vIGluZGljYXRpb24gdG8KKwkJdXNlcnNwYWNlIHdoZXRoZXIgVkJVUyBpcyBzdGlsbCBzdXBwbGllZC4KKworCTxodWJkZXYtcG9ydFg+L2Nvbm5lY3RfdHlwZToKKwkJQW4gYWR2aXNvcnkgcmVhZC1vbmx5IGZsYWcgdG8gdXNlcnNwYWNlIGluZGljYXRpbmcgdGhlCisJCWxvY2F0aW9uIGFuZCBjb25uZWN0aW9uIHR5cGUgb2YgdGhlIHBvcnQuICBJdCByZXR1cm5zCisJCW9uZSBvZiBmb3VyIHZhbHVlcyAnaG90cGx1ZycsICdoYXJkd2lyZWQnLCAnbm90IHVzZWQnLAorCQlhbmQgJ3Vua25vd24nLiAgQWxsIHZhbHVlcywgYmVzaWRlcyB1bmtub3duLCBhcmUgc2V0IGJ5CisJCXBsYXRmb3JtIGZpcm13YXJlLgorCisJCSJob3RwbHVnIiBpbmRpY2F0ZXMgYW4gZXh0ZXJuYWxseSBjb25uZWN0YWJsZS92aXNpYmxlCisJCXBvcnQgb24gdGhlIHBsYXRmb3JtLiAgVHlwaWNhbGx5IHVzZXJzcGFjZSB3b3VsZCBjaG9vc2UKKwkJdG8ga2VlcCBzdWNoIGEgcG9ydCBwb3dlcmVkIHRvIGhhbmRsZSBuZXcgZGV2aWNlCisJCWNvbm5lY3Rpb24gZXZlbnRzLgorCisJCSJoYXJkd2lyZWQiIHJlZmVycyB0byBhIHBvcnQgdGhhdCBpcyBub3QgdmlzaWJsZSBidXQKKwkJY29ubmVjdGFibGUuIEV4YW1wbGVzIGFyZSBpbnRlcm5hbCBwb3J0cyBmb3IgVVNCCisJCWJsdWV0b290aCB0aGF0IGNhbiBiZSBkaXNjb25uZWN0ZWQgdmlhIGFuIGV4dGVybmFsCisJCXN3aXRjaCBvciBhIHBvcnQgd2l0aCBhIGhhcmR3aXJlZCBVU0IgY2FtZXJhLiAgSXQgaXMKKwkJZXhwZWN0ZWQgdG8gYmUgc2FmZSB0byBhbGxvdyB0aGVzZSBwb3J0cyB0byBzdXNwZW5kCisJCXByb3ZpZGVkIHBtX3Fvc19ub19wb3dlcl9vZmYgaXMgY29vcmRpbmF0ZWQgd2l0aCBhbnkKKwkJc3dpdGNoIHRoYXQgZ2F0ZXMgY29ubmVjdGlvbnMuICBVc2Vyc3BhY2UgbXVzdCBhcnJhbmdlCisJCWZvciB0aGUgZGV2aWNlIHRvIGJlIGNvbm5lY3RlZCBwcmlvciB0byB0aGUgcG9ydAorCQlwb3dlcmluZyBvZmYsIG9yIHRvIGFjdGl2YXRlIHRoZSBwb3J0IHByaW9yIHRvIGVuYWJsaW5nCisJCWNvbm5lY3Rpb24gdmlhIGEgc3dpdGNoLgorCisJCSJub3QgdXNlZCIgcmVmZXJzIHRvIGFuIGludGVybmFsIHBvcnQgdGhhdCBpcyBleHBlY3RlZAorCQl0byBuZXZlciBoYXZlIGEgZGV2aWNlIGNvbm5lY3RlZCB0byBpdC4gIFRoZXNlIG1heSBiZQorCQllbXB0eSBpbnRlcm5hbCBwb3J0cywgb3IgcG9ydHMgdGhhdCBhcmUgbm90IHBoeXNpY2FsbHkKKwkJZXhwb3NlZCBvbiBhIHBsYXRmb3JtLiAgQ29uc2lkZXJlZCBzYWZlIHRvIGJlCisJCXBvd2VyZWQtb2ZmIGF0IGFsbCB0aW1lcy4KKworCQkidW5rbm93biIgbWVhbnMgcGxhdGZvcm0gZmlybXdhcmUgZG9lcyBub3QgcHJvdmlkZQorCQlpbmZvcm1hdGlvbiBmb3IgdGhpcyBwb3J0LiAgTW9zdCBjb21tb25seSByZWZlcnMgdG8KKwkJZXh0ZXJuYWwgaHViIHBvcnRzIHdoaWNoIHNob3VsZCBiZSBjb25zaWRlcmVkICdob3RwbHVnJworCQlmb3IgcG9saWN5IGRlY2lzaW9ucy4KKworCQlOT1RFMTogc2luY2Ugd2UgYXJlIHJlbHlpbmcgb24gdGhlIEJJT1MgdG8gZ2V0IHRoaXMgQUNQSQorCQlpbmZvcm1hdGlvbiBjb3JyZWN0LCB0aGUgVVNCIHBvcnQgZGVzY3JpcHRpb25zIG1heSBiZQorCQltaXNzaW5nIG9yIHdyb25nLgorCisJCU5PVEUyOiBUYWtlIGNhcmUgaW4gY2xlYXJpbmcgcG1fcW9zX25vX3Bvd2VyX29mZi4gIE9uY2UKKwkJcG93ZXIgaXMgb2ZmIHRoaXMgcG9ydCB3aWxsCisJCW5vdCByZXNwb25kIHRvIG5ldyBjb25uZWN0IGV2ZW50cy4KKworCU9uY2UgYSBjaGlsZCBkZXZpY2UgaXMgYXR0YWNoZWQgYWRkaXRpb25hbCBjb25zdHJhaW50cyBhcmUKKwlhcHBsaWVkIGJlZm9yZSB0aGUgcG9ydCBpcyBhbGxvd2VkIHRvIHBvd2Vyb2ZmLgorCisJPGNoaWxkPi9wb3dlci9jb250cm9sOgorCQlNdXN0IGJlICdhdXRvJywgYW5kIHRoZSBwb3J0IHdpbGwgbm90CisJCXBvd2VyIGRvd24gdW50aWwgPGNoaWxkPi9wb3dlci9ydW50aW1lX3N0YXR1cworCQlyZWZsZWN0cyB0aGUgJ3N1c3BlbmRlZCcgc3RhdGUuICBEZWZhdWx0CisJCXZhbHVlIGlzIGNvbnRyb2xsZWQgYnkgY2hpbGQgZGV2aWNlIGRyaXZlci4KKworCTxjaGlsZD4vcG93ZXIvcGVyc2lzdDoKKwkJVGhpcyBkZWZhdWx0cyB0byAnMScgZm9yIG1vc3QgZGV2aWNlcyBhbmQgaW5kaWNhdGVzIGlmCisJCWtlcm5lbCBjYW4gcGVyc2lzdCB0aGUgZGV2aWNlJ3MgY29uZmlndXJhdGlvbiBhY3Jvc3MgYQorCQlwb3dlciBzZXNzaW9uIGxvc3MgKHN1c3BlbmQgLyBwb3J0LXBvd2VyIGV2ZW50KS4gIFdoZW4KKwkJdGhpcyB2YWx1ZSBpcyAnMCcgKHF1aXJreSBkZXZpY2VzKSwgcG9ydCBwb3dlcm9mZiBpcworCQlkaXNhYmxlZC4KKworCTxjaGlsZD4vZHJpdmVyL3VuYmluZDoKKwkJV2FrZXVwIGNhcGFibGUgZGV2aWNlcyB3aWxsIGJsb2NrIHBvcnQgcG93ZXJvZmYuICBBdAorCQl0aGlzIHRpbWUgdGhlIG9ubHkgbWVjaGFuaXNtIHRvIGNsZWFyIHRoZSB1c2ItaW50ZXJuYWwKKwkJd2FrZXVwLWNhcGFiaWxpdHkgZm9yIGFuIGludGVyZmFjZSBkZXZpY2UgaXMgdG8gdW5iaW5kCisJCWl0cyBkcml2ZXIuCisKK1N1bW1hcnkgb2YgcG93ZXJvZmYgcHJlLXJlcXVpc2l0ZSBzZXR0aW5ncyByZWxhdGl2ZSB0byBhIHBvcnQgZGV2aWNlOgorCisJZWNobyAwID4gcG93ZXIvcG1fcW9zX25vX3Bvd2VyX29mZgorCWVjaG8gMCA+IHBlZXIvcG93ZXIvcG1fcW9zX25vX3Bvd2VyX29mZiAjIGlmIGl0IGV4aXN0cworCWVjaG8gYXV0byA+IHBvd2VyL2NvbnRyb2wgIyB0aGlzIGlzIHRoZSBkZWZhdWx0IHZhbHVlCisJZWNobyBhdXRvID4gPGNoaWxkPi9wb3dlci9jb250cm9sCisJZWNobyAxID4gPGNoaWxkPi9wb3dlci9wZXJzaXN0ICMgdGhpcyBpcyB0aGUgZGVmYXVsdCB2YWx1ZQorCisJU3VnZ2VzdGVkIFVzZXJzcGFjZSBQb3J0IFBvd2VyIFBvbGljeQorCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQXMgbm90ZWQgYWJvdmUgdXNlcnNwYWNlIG5lZWRzIHRvIGJlIGNhcmVmdWwgYW5kIGRlbGliZXJhdGUgYWJvdXQgd2hhdAorcG9ydHMgYXJlIGVuYWJsZWQgZm9yIHBvd2Vyb2ZmLgorCitUaGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIGlzIHRoYXQgYWxsIHBvcnRzIHN0YXJ0IHdpdGgKK3Bvd2VyL3BtX3Fvc19ub19wb3dlcl9vZmYgc2V0IHRvICcxJyBjYXVzaW5nIHBvcnRzIHRvIGFsd2F5cyByZW1haW4KK2FjdGl2ZS4KKworR2l2ZW4gY29uZmlkZW5jZSBpbiB0aGUgcGxhdGZvcm0gZmlybXdhcmUncyBkZXNjcmlwdGlvbiBvZiB0aGUgcG9ydHMKKyhBQ1BJIF9QTEQgcmVjb3JkIGZvciBhIHBvcnQgcG9wdWxhdGVzICdjb25uZWN0X3R5cGUnKSB1c2Vyc3BhY2UgY2FuCitjbGVhciBwbV9xb3Nfbm9fcG93ZXJfb2ZmIGZvciBhbGwgJ25vdCB1c2VkJyBwb3J0cy4gIFRoZSBzYW1lIGNhbiBiZQorZG9uZSBmb3IgJ2hhcmR3aXJlZCcgcG9ydHMgcHJvdmlkZWQgcG93ZXJvZmYgaXMgY29vcmRpbmF0ZWQgd2l0aCBhbnkKK2Nvbm5lY3Rpb24gc3dpdGNoIGZvciB0aGUgcG9ydC4KKworQSBtb3JlIGFnZ3Jlc3NpdmUgdXNlcnNwYWNlIHBvbGljeSBpcyB0byBlbmFibGUgVVNCIHBvcnQgcG93ZXIgb2ZmIGZvcgorYWxsIHBvcnRzIChzZXQgPGh1YmRldi1wb3J0WD4vcG93ZXIvcG1fcW9zX25vX3Bvd2VyX29mZiB0byAnMCcpIHdoZW4KK3NvbWUgZXh0ZXJuYWwgZmFjdG9yIGluZGljYXRlcyB0aGUgdXNlciBoYXMgc3RvcHBlZCBpbnRlcmFjdGluZyB3aXRoIHRoZQorc3lzdGVtLiAgRm9yIGV4YW1wbGUsIGEgZGlzdHJvIG1heSB3YW50IHRvIGVuYWJsZSBwb3dlciBvZmYgYWxsIFVTQgorcG9ydHMgd2hlbiB0aGUgc2NyZWVuIGJsYW5rcywgYW5kIHJlLXBvd2VyIHRoZW0gd2hlbiB0aGUgc2NyZWVuIGJlY29tZXMKK2FjdGl2ZS4gIFNtYXJ0IHBob25lcyBhbmQgdGFibGV0cyBtYXkgd2FudCB0byBwb3dlciBvZmYgVVNCIHBvcnRzIHdoZW4KK3RoZSB1c2VyIHB1c2hlcyB0aGUgcG93ZXIgYnV0dG9uLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi91c2IvcHJvY191c2JfaW5mby50eHQgYi9Eb2N1bWVudGF0aW9uL3VzYi9wcm9jX3VzYl9pbmZvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGJlOTE5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi91c2IvcHJvY191c2JfaW5mby50eHQKQEAgLTAsMCArMSwzOTAgQEAKKy9wcm9jL2J1cy91c2IgZmlsZXN5c3RlbSBvdXRwdXQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyh2ZXJzaW9uIDIwMTAuMDkuMTMpCisKKworVGhlIHVzYmZzIGZpbGVzeXN0ZW0gZm9yIFVTQiBkZXZpY2VzIGlzIHRyYWRpdGlvbmFsbHkgbW91bnRlZCBhdAorL3Byb2MvYnVzL3VzYi4gIEl0IHByb3ZpZGVzIHRoZSAvcHJvYy9idXMvdXNiL2RldmljZXMgZmlsZSwgYXMgd2VsbCBhcwordGhlIC9wcm9jL2J1cy91c2IvQkJCL0RERCBmaWxlcy4KKworSW4gbWFueSBtb2Rlcm4gc3lzdGVtcyB0aGUgdXNiZnMgZmlsZXN5c3RlbSBpc24ndCB1c2VkIGF0IGFsbC4gIEluc3RlYWQKK1VTQiBkZXZpY2Ugbm9kZXMgYXJlIGNyZWF0ZWQgdW5kZXIgL2Rldi91c2IvIG9yIHNvbWVwbGFjZSBzaW1pbGFyLiAgVGhlCisiZGV2aWNlcyIgZmlsZSBpcyBhdmFpbGFibGUgaW4gZGVidWdmcywgdHlwaWNhbGx5IGFzCisvc3lzL2tlcm5lbC9kZWJ1Zy91c2IvZGV2aWNlcy4KKworCisqKk5PVEUqKjogSWYgL3Byb2MvYnVzL3VzYiBhcHBlYXJzIGVtcHR5LCBhbmQgYSBob3N0IGNvbnRyb2xsZXIKKwkgIGRyaXZlciBoYXMgYmVlbiBsaW5rZWQsIHRoZW4geW91IG5lZWQgdG8gbW91bnQgdGhlCisJICBmaWxlc3lzdGVtLiAgSXNzdWUgdGhlIGNvbW1hbmQgKGFzIHJvb3QpOgorCisgICAgICBtb3VudCAtdCB1c2JmcyBub25lIC9wcm9jL2J1cy91c2IKKworCSAgQW4gYWx0ZXJuYXRpdmUgYW5kIG1vcmUgcGVybWFuZW50IG1ldGhvZCB3b3VsZCBiZSB0byBhZGQKKworICAgICAgbm9uZSAgL3Byb2MvYnVzL3VzYiAgdXNiZnMgIGRlZmF1bHRzICAwICAwCisKKwkgIHRvIC9ldGMvZnN0YWIuICBUaGlzIHdpbGwgbW91bnQgdXNiZnMgYXQgZWFjaCByZWJvb3QuCisJICBZb3UgY2FuIHRoZW4gaXNzdWUgYGNhdCAvcHJvYy9idXMvdXNiL2RldmljZXNgIHRvIGV4dHJhY3QKKwkgIFVTQiBkZXZpY2UgaW5mb3JtYXRpb24sIGFuZCB1c2VyIG1vZGUgZHJpdmVycyBjYW4gdXNlIHVzYmZzCisJICB0byBpbnRlcmFjdCB3aXRoIFVTQiBkZXZpY2VzLgorCisJICBUaGVyZSBhcmUgYSBudW1iZXIgb2YgbW91bnQgb3B0aW9ucyBzdXBwb3J0ZWQgYnkgdXNiZnMuCisJICBDb25zdWx0IHRoZSBzb3VyY2UgY29kZSAobGludXgvZHJpdmVycy91c2IvY29yZS9pbm9kZS5jKSBmb3IKKwkgIGluZm9ybWF0aW9uIGFib3V0IHRob3NlIG9wdGlvbnMuCisKKyoqTk9URSoqOiBUaGUgZmlsZXN5c3RlbSBoYXMgYmVlbiByZW5hbWVkIGZyb20gInVzYmRldmZzIiB0bworCSAgInVzYmZzIiwgdG8gcmVkdWNlIGNvbmZ1c2lvbiB3aXRoICJkZXZmcyIuICBZb3UgbWF5CisJICBzdGlsbCBzZWUgcmVmZXJlbmNlcyB0byB0aGUgb2xkZXIgInVzYmRldmZzIiBuYW1lLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBtb3VudGluZyB0aGUgdXNiZnMgZmlsZSBzeXN0ZW0sIHNlZSB0aGUKKyJVU0IgRGV2aWNlIEZpbGVzeXN0ZW0iIHNlY3Rpb24gb2YgdGhlIFVTQiBHdWlkZS4gVGhlIGxhdGVzdCBjb3B5CitvZiB0aGUgVVNCIEd1aWRlIGNhbiBiZSBmb3VuZCBhdCBodHRwOi8vd3d3LmxpbnV4LXVzYi5vcmcvCisKKworVEhFIC9wcm9jL2J1cy91c2IvQkJCL0RERCBGSUxFUzoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitFYWNoIGNvbm5lY3RlZCBVU0IgZGV2aWNlIGhhcyBvbmUgZmlsZS4gIFRoZSBCQkIgaW5kaWNhdGVzIHRoZSBidXMKK251bWJlci4gIFRoZSBEREQgaW5kaWNhdGVzIHRoZSBkZXZpY2UgYWRkcmVzcyBvbiB0aGF0IGJ1cy4gIEJvdGgKK29mIHRoZXNlIG51bWJlcnMgYXJlIGFzc2lnbmVkIHNlcXVlbnRpYWxseSwgYW5kIGNhbiBiZSByZXVzZWQsIHNvCit5b3UgY2FuJ3QgcmVseSBvbiB0aGVtIGZvciBzdGFibGUgYWNjZXNzIHRvIGRldmljZXMuICBGb3IgZXhhbXBsZSwKK2l0J3MgcmVsYXRpdmVseSBjb21tb24gZm9yIGRldmljZXMgdG8gcmUtZW51bWVyYXRlIHdoaWxlIHRoZXkgYXJlCitzdGlsbCBjb25uZWN0ZWQgKHBlcmhhcHMgc29tZW9uZSBqb3N0bGVkIHRoZWlyIHBvd2VyIHN1cHBseSwgaHViLAorb3IgVVNCIGNhYmxlKSwgc28gYSBkZXZpY2UgbWlnaHQgYmUgMDAyLzAyNyB3aGVuIHlvdSBmaXJzdCBjb25uZWN0CitpdCBhbmQgMDAyLzA0OCBzb21ldGltZSBsYXRlci4KKworVGhlc2UgZmlsZXMgY2FuIGJlIHJlYWQgYXMgYmluYXJ5IGRhdGEuICBUaGUgYmluYXJ5IGRhdGEgY29uc2lzdHMKK29mIGZpcnN0IHRoZSBkZXZpY2UgZGVzY3JpcHRvciwgdGhlbiB0aGUgZGVzY3JpcHRvcnMgZm9yIGVhY2gKK2NvbmZpZ3VyYXRpb24gb2YgdGhlIGRldmljZS4gIE11bHRpLWJ5dGUgZmllbGRzIGluIHRoZSBkZXZpY2UgZGVzY3JpcHRvcgorYXJlIGNvbnZlcnRlZCB0byBob3N0IGVuZGlhbm5lc3MgYnkgdGhlIGtlcm5lbC4gIFRoZSBjb25maWd1cmF0aW9uCitkZXNjcmlwdG9ycyBhcmUgaW4gYnVzIGVuZGlhbiBmb3JtYXQhIFRoZSBjb25maWd1cmF0aW9uIGRlc2NyaXB0b3IKK2FyZSB3VG90YWxMZW5ndGggYnl0ZXMgYXBhcnQuIElmIGEgZGV2aWNlIHJldHVybnMgbGVzcyBjb25maWd1cmF0aW9uCitkZXNjcmlwdG9yIGRhdGEgdGhhbiBpbmRpY2F0ZWQgYnkgd1RvdGFsTGVuZ3RoIHRoZXJlIHdpbGwgYmUgYSBob2xlIGluCit0aGUgZmlsZSBmb3IgdGhlIG1pc3NpbmcgYnl0ZXMuICBUaGlzIGluZm9ybWF0aW9uIGlzIGFsc28gc2hvd24KK2luIHRleHQgZm9ybSBieSB0aGUgL3Byb2MvYnVzL3VzYi9kZXZpY2VzIGZpbGUsIGRlc2NyaWJlZCBsYXRlci4KKworVGhlc2UgZmlsZXMgbWF5IGFsc28gYmUgdXNlZCB0byB3cml0ZSB1c2VyLWxldmVsIGRyaXZlcnMgZm9yIHRoZSBVU0IKK2RldmljZXMuICBZb3Ugd291bGQgb3BlbiB0aGUgL3Byb2MvYnVzL3VzYi9CQkIvREREIGZpbGUgcmVhZC93cml0ZSwKK3JlYWQgaXRzIGRlc2NyaXB0b3JzIHRvIG1ha2Ugc3VyZSBpdCdzIHRoZSBkZXZpY2UgeW91IGV4cGVjdCwgYW5kIHRoZW4KK2JpbmQgdG8gYW4gaW50ZXJmYWNlIChvciBwZXJoYXBzIHNldmVyYWwpIHVzaW5nIGFuIGlvY3RsIGNhbGwuICBZb3UKK3dvdWxkIGlzc3VlIG1vcmUgaW9jdGxzIHRvIHRoZSBkZXZpY2UgdG8gY29tbXVuaWNhdGUgdG8gaXQgdXNpbmcKK2NvbnRyb2wsIGJ1bGssIG9yIG90aGVyIGtpbmRzIG9mIFVTQiB0cmFuc2ZlcnMuICBUaGUgSU9DVExzIGFyZQorbGlzdGVkIGluIHRoZSA8bGludXgvdXNiZGV2aWNlX2ZzLmg+IGZpbGUsIGFuZCBhdCB0aGlzIHdyaXRpbmcgdGhlCitzb3VyY2UgY29kZSAobGludXgvZHJpdmVycy91c2IvY29yZS9kZXZpby5jKSBpcyB0aGUgcHJpbWFyeSByZWZlcmVuY2UKK2ZvciBob3cgdG8gYWNjZXNzIGRldmljZXMgdGhyb3VnaCB0aG9zZSBmaWxlcy4KKworTm90ZSB0aGF0IHNpbmNlIGJ5IGRlZmF1bHQgdGhlc2UgQkJCL0RERCBmaWxlcyBhcmUgd3JpdGFibGUgb25seSBieQorcm9vdCwgb25seSByb290IGNhbiB3cml0ZSBzdWNoIHVzZXIgbW9kZSBkcml2ZXJzLiAgWW91IGNhbiBzZWxlY3RpdmVseQorZ3JhbnQgcmVhZC93cml0ZSBwZXJtaXNzaW9ucyB0byBvdGhlciB1c2VycyBieSB1c2luZyAiY2htb2QiLiAgQWxzbywKK3VzYmZzIG1vdW50IG9wdGlvbnMgc3VjaCBhcyAiZGV2bW9kZT0wNjY2IiBtYXkgYmUgaGVscGZ1bC4KKworCisKK1RIRSAvcHJvYy9idXMvdXNiL2RldmljZXMgRklMRToKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0luIC9wcm9jL2J1cy91c2IvZGV2aWNlcywgZWFjaCBkZXZpY2UncyBvdXRwdXQgaGFzIG11bHRpcGxlCitsaW5lcyBvZiBBU0NJSSBvdXRwdXQuCitJIG1hZGUgaXQgQVNDSUkgaW5zdGVhZCBvZiBiaW5hcnkgb24gcHVycG9zZSwgc28gdGhhdCBzb21lb25lCitjYW4gb2J0YWluIHNvbWUgdXNlZnVsIGRhdGEgZnJvbSBpdCB3aXRob3V0IHRoZSB1c2Ugb2YgYW4KK2F1eGlsaWFyeSBwcm9ncmFtLiAgSG93ZXZlciwgd2l0aCBhbiBhdXhpbGlhcnkgcHJvZ3JhbSwgdGhlIG51bWJlcnMKK2luIHRoZSBmaXJzdCA0IGNvbHVtbnMgb2YgZWFjaCAiVDoiIGxpbmUgKHRvcG9sb2d5IGluZm86CitMZXYsIFBybnQsIFBvcnQsIENudCkgY2FuIGJlIHVzZWQgdG8gYnVpbGQgYSBVU0IgdG9wb2xvZ3kgZGlhZ3JhbS4KKworRWFjaCBsaW5lIGlzIHRhZ2dlZCB3aXRoIGEgb25lLWNoYXJhY3RlciBJRCBmb3IgdGhhdCBsaW5lOgorCitUID0gVG9wb2xvZ3kgKGV0Yy4pCitCID0gQmFuZHdpZHRoIChhcHBsaWVzIG9ubHkgdG8gVVNCIGhvc3QgY29udHJvbGxlcnMsIHdoaWNoIGFyZQorICAgIHZpcnR1YWxpemVkIGFzIHJvb3QgaHVicykKK0QgPSBEZXZpY2UgZGVzY3JpcHRvciBpbmZvLgorUCA9IFByb2R1Y3QgSUQgaW5mby4gKGZyb20gRGV2aWNlIGRlc2NyaXB0b3IsIGJ1dCB0aGV5IHdvbid0IGZpdAorICAgIHRvZ2V0aGVyIG9uIG9uZSBsaW5lKQorUyA9IFN0cmluZyBkZXNjcmlwdG9ycy4KK0MgPSBDb25maWd1cmF0aW9uIGRlc2NyaXB0b3IgaW5mby4gKCogPSBhY3RpdmUgY29uZmlndXJhdGlvbikKK0kgPSBJbnRlcmZhY2UgZGVzY3JpcHRvciBpbmZvLgorRSA9IEVuZHBvaW50IGRlc2NyaXB0b3IgaW5mby4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworL3Byb2MvYnVzL3VzYi9kZXZpY2VzIG91dHB1dCBmb3JtYXQ6CisKK0xlZ2VuZDoKKyAgZCA9IGRlY2ltYWwgbnVtYmVyIChtYXkgaGF2ZSBsZWFkaW5nIHNwYWNlcyBvciAwJ3MpCisgIHggPSBoZXhhZGVjaW1hbCBudW1iZXIgKG1heSBoYXZlIGxlYWRpbmcgc3BhY2VzIG9yIDAncykKKyAgcyA9IHN0cmluZworCisKK1RvcG9sb2d5IGluZm86CisKK1Q6ICBCdXM9ZGQgTGV2PWRkIFBybnQ9ZGQgUG9ydD1kZCBDbnQ9ZGQgRGV2Iz1kZGQgU3BkPWRkZGQgTXhDaD1kZAorfCAgIHwgICAgICB8ICAgICAgfCAgICAgICB8ICAgICAgIHwgICAgICB8ICAgICAgICB8ICAgICAgICB8X19NYXhDaGlsZHJlbgorfCAgIHwgICAgICB8ICAgICAgfCAgICAgICB8ICAgICAgIHwgICAgICB8ICAgICAgICB8X19EZXZpY2UgU3BlZWQgaW4gTWJwcworfCAgIHwgICAgICB8ICAgICAgfCAgICAgICB8ICAgICAgIHwgICAgICB8X19EZXZpY2VOdW1iZXIKK3wgICB8ICAgICAgfCAgICAgIHwgICAgICAgfCAgICAgICB8X19Db3VudCBvZiBkZXZpY2VzIGF0IHRoaXMgbGV2ZWwKK3wgICB8ICAgICAgfCAgICAgIHwgICAgICAgfF9fQ29ubmVjdG9yL1BvcnQgb24gUGFyZW50IGZvciB0aGlzIGRldmljZQorfCAgIHwgICAgICB8ICAgICAgfF9fUGFyZW50IERldmljZU51bWJlcgorfCAgIHwgICAgICB8X19MZXZlbCBpbiB0b3BvbG9neSBmb3IgdGhpcyBidXMKK3wgICB8X19CdXMgbnVtYmVyCit8X19Ub3BvbG9neSBpbmZvIHRhZworCisgICAgU3BlZWQgbWF5IGJlOgorICAgIAkxLjUJTWJpdC9zIGZvciBsb3cgc3BlZWQgVVNCCisJMTIJTWJpdC9zIGZvciBmdWxsIHNwZWVkIFVTQgorCTQ4MAlNYml0L3MgZm9yIGhpZ2ggc3BlZWQgVVNCIChhZGRlZCBmb3IgVVNCIDIuMCk7CisJCSAgYWxzbyB1c2VkIGZvciBXaXJlbGVzcyBVU0IsIHdoaWNoIGhhcyBubyBmaXhlZCBzcGVlZAorCTUwMDAJTWJpdC9zIGZvciBTdXBlclNwZWVkIFVTQiAoYWRkZWQgZm9yIFVTQiAzLjApCisKKyAgICBGb3IgcmVhc29ucyBsb3N0IGluIHRoZSBtaXN0cyBvZiB0aW1lLCB0aGUgUG9ydCBudW1iZXIgaXMgYWx3YXlzCisgICAgdG9vIGxvdyBieSAxLiAgRm9yIGV4YW1wbGUsIGEgZGV2aWNlIHBsdWdnZWQgaW50byBwb3J0IDQgd2lsbAorICAgIHNob3cgdXAgd2l0aCAiUG9ydD0wMyIuCisKK0JhbmR3aWR0aCBpbmZvOgorQjogIEFsbG9jPWRkZC9kZGQgdXMgKHh4JSksICNJbnQ9ZGRkLCAjSXNvPWRkZAorfCAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8X19OdW1iZXIgb2YgaXNvY2hyb25vdXMgcmVxdWVzdHMKK3wgICB8ICAgICAgICAgICAgICAgICAgICAgICB8X19OdW1iZXIgb2YgaW50ZXJydXB0IHJlcXVlc3RzCit8ICAgfF9fVG90YWwgQmFuZHdpZHRoIGFsbG9jYXRlZCB0byB0aGlzIGJ1cworfF9fQmFuZHdpZHRoIGluZm8gdGFnCisKKyAgICBCYW5kd2lkdGggYWxsb2NhdGlvbiBpcyBhbiBhcHByb3hpbWF0aW9uIG9mIGhvdyBtdWNoIG9mIG9uZSBmcmFtZQorICAgIChtaWxsaXNlY29uZCkgaXMgaW4gdXNlLiAgSXQgcmVmbGVjdHMgb25seSBwZXJpb2RpYyB0cmFuc2ZlcnMsIHdoaWNoCisgICAgYXJlIHRoZSBvbmx5IHRyYW5zZmVycyB0aGF0IHJlc2VydmUgYmFuZHdpZHRoLiAgQ29udHJvbCBhbmQgYnVsaworICAgIHRyYW5zZmVycyB1c2UgYWxsIG90aGVyIGJhbmR3aWR0aCwgaW5jbHVkaW5nIHJlc2VydmVkIGJhbmR3aWR0aCB0aGF0CisgICAgaXMgbm90IHVzZWQgZm9yIHRyYW5zZmVycyAoc3VjaCBhcyBmb3Igc2hvcnQgcGFja2V0cykuCisKKyAgICBUaGUgcGVyY2VudGFnZSBpcyBob3cgbXVjaCBvZiB0aGUgInJlc2VydmVkIiBiYW5kd2lkdGggaXMgc2NoZWR1bGVkIGJ5CisgICAgdGhvc2UgdHJhbnNmZXJzLiAgRm9yIGEgbG93IG9yIGZ1bGwgc3BlZWQgYnVzIChsb29zZWx5LCAiVVNCIDEuMSIpLAorICAgIDkwJSBvZiB0aGUgYnVzIGJhbmR3aWR0aCBpcyByZXNlcnZlZC4gIEZvciBhIGhpZ2ggc3BlZWQgYnVzIChsb29zZWx5LAorICAgICJVU0IgMi4wIikgODAlIGlzIHJlc2VydmVkLgorCisKK0RldmljZSBkZXNjcmlwdG9yIGluZm8gJiBQcm9kdWN0IElEIGluZm86CisKK0Q6ICBWZXI9eC54eCBDbHM9eHgocykgU3ViPXh4IFByb3Q9eHggTXhQUz1kZCAjQ2Zncz1kZAorUDogIFZlbmRvcj14eHh4IFByb2RJRD14eHh4IFJldj14eC54eAorCit3aGVyZQorRDogIFZlcj14Lnh4IENscz14eChzc3NzcykgU3ViPXh4IFByb3Q9eHggTXhQUz1kZCAjQ2Zncz1kZAorfCAgIHwgICAgICAgIHwgICAgICAgICAgICAgfCAgICAgIHwgICAgICAgfCAgICAgICB8X19OdW1iZXJDb25maWd1cmF0aW9ucworfCAgIHwgICAgICAgIHwgICAgICAgICAgICAgfCAgICAgIHwgICAgICAgfF9fTWF4UGFja2V0U2l6ZSBvZiBEZWZhdWx0IEVuZHBvaW50Cit8ICAgfCAgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgfF9fRGV2aWNlUHJvdG9jb2wKK3wgICB8ICAgICAgICB8ICAgICAgICAgICAgIHxfX0RldmljZVN1YkNsYXNzCit8ICAgfCAgICAgICAgfF9fRGV2aWNlQ2xhc3MKK3wgICB8X19EZXZpY2UgVVNCIHZlcnNpb24KK3xfX0RldmljZSBpbmZvIHRhZyAjMQorCit3aGVyZQorUDogIFZlbmRvcj14eHh4IFByb2RJRD14eHh4IFJldj14eC54eAorfCAgIHwgICAgICAgICAgIHwgICAgICAgICAgIHxfX1Byb2R1Y3QgcmV2aXNpb24gbnVtYmVyCit8ICAgfCAgICAgICAgICAgfF9fUHJvZHVjdCBJRCBjb2RlCit8ICAgfF9fVmVuZG9yIElEIGNvZGUKK3xfX0RldmljZSBpbmZvIHRhZyAjMgorCisKK1N0cmluZyBkZXNjcmlwdG9yIGluZm86CisKK1M6ICBNYW51ZmFjdHVyZXI9c3NzcworfCAgIHxfX01hbnVmYWN0dXJlciBvZiB0aGlzIGRldmljZSBhcyByZWFkIGZyb20gdGhlIGRldmljZS4KK3wgICAgICBGb3IgVVNCIGhvc3QgY29udHJvbGxlciBkcml2ZXJzICh2aXJ0dWFsIHJvb3QgaHVicykgdGhpcyBtYXkKK3wgICAgICBiZSBvbWl0dGVkLCBvciAoZm9yIG5ld2VyIGRyaXZlcnMpIHdpbGwgaWRlbnRpZnkgdGhlIGtlcm5lbAorfCAgICAgIHZlcnNpb24gYW5kIHRoZSBkcml2ZXIgd2hpY2ggcHJvdmlkZXMgdGhpcyBodWIgZW11bGF0aW9uLgorfF9fU3RyaW5nIGluZm8gdGFnCisKK1M6ICBQcm9kdWN0PXNzc3MKK3wgICB8X19Qcm9kdWN0IGRlc2NyaXB0aW9uIG9mIHRoaXMgZGV2aWNlIGFzIHJlYWQgZnJvbSB0aGUgZGV2aWNlLgorfCAgICAgIEZvciBvbGRlciBVU0IgaG9zdCBjb250cm9sbGVyIGRyaXZlcnMgKHZpcnR1YWwgcm9vdCBodWJzKSB0aGlzCit8ICAgICAgaW5kaWNhdGVzIHRoZSBkcml2ZXI7IGZvciBuZXdlciBvbmVzLCBpdCdzIGEgcHJvZHVjdCAoYW5kIHZlbmRvcikKK3wgICAgICBkZXNjcmlwdGlvbiB0aGF0IG9mdGVuIGNvbWVzIGZyb20gdGhlIGtlcm5lbCdzIFBDSSBJRCBkYXRhYmFzZS4KK3xfX1N0cmluZyBpbmZvIHRhZworCitTOiAgU2VyaWFsTnVtYmVyPXNzc3MKK3wgICB8X19TZXJpYWwgTnVtYmVyIG9mIHRoaXMgZGV2aWNlIGFzIHJlYWQgZnJvbSB0aGUgZGV2aWNlLgorfCAgICAgIEZvciBVU0IgaG9zdCBjb250cm9sbGVyIGRyaXZlcnMgKHZpcnR1YWwgcm9vdCBodWJzKSB0aGlzIGlzCit8ICAgICAgc29tZSB1bmlxdWUgSUQsIG5vcm1hbGx5IGEgYnVzIElEIChhZGRyZXNzIG9yIHNsb3QgbmFtZSkgdGhhdAorfCAgICAgIGNhbid0IGJlIHNoYXJlZCB3aXRoIGFueSBvdGhlciBkZXZpY2UuCit8X19TdHJpbmcgaW5mbyB0YWcKKworCisKK0NvbmZpZ3VyYXRpb24gZGVzY3JpcHRvciBpbmZvOgorCitDOiogI0lmcz1kZCBDZmcjPWRkIEF0cj14eCBNUHdyPWRkZG1BCit8IHwgfCAgICAgICB8ICAgICAgIHwgICAgICB8X19NYXhQb3dlciBpbiBtQQorfCB8IHwgICAgICAgfCAgICAgICB8X19BdHRyaWJ1dGVzCit8IHwgfCAgICAgICB8X19Db25maWd1cmF0aW9OdW1iZXIKK3wgfCB8X19OdW1iZXJPZkludGVyZmFjZXMKK3wgfF9fICIqIiBpbmRpY2F0ZXMgdGhlIGFjdGl2ZSBjb25maWd1cmF0aW9uIChvdGhlcnMgYXJlICIgIikKK3xfX0NvbmZpZyBpbmZvIHRhZworCisgICAgVVNCIGRldmljZXMgbWF5IGhhdmUgbXVsdGlwbGUgY29uZmlndXJhdGlvbnMsIGVhY2ggb2Ygd2hpY2ggYWN0CisgICAgcmF0aGVyIGRpZmZlcmVudGx5LiAgRm9yIGV4YW1wbGUsIGEgYnVzLXBvd2VyZWQgY29uZmlndXJhdGlvbgorICAgIG1pZ2h0IGJlIG11Y2ggbGVzcyBjYXBhYmxlIHRoYW4gb25lIHRoYXQgaXMgc2VsZi1wb3dlcmVkLiAgT25seQorICAgIG9uZSBkZXZpY2UgY29uZmlndXJhdGlvbiBjYW4gYmUgYWN0aXZlIGF0IGEgdGltZTsgbW9zdCBkZXZpY2VzCisgICAgaGF2ZSBvbmx5IG9uZSBjb25maWd1cmF0aW9uLgorCisgICAgRWFjaCBjb25maWd1cmF0aW9uIGNvbnNpc3RzIG9mIG9uZSBvciBtb3JlIGludGVyZmFjZXMuICBFYWNoCisgICAgaW50ZXJmYWNlIHNlcnZlcyBhIGRpc3RpbmN0ICJmdW5jdGlvbiIsIHdoaWNoIGlzIHR5cGljYWxseSBib3VuZAorICAgIHRvIGEgZGlmZmVyZW50IFVTQiBkZXZpY2UgZHJpdmVyLiAgT25lIGNvbW1vbiBleGFtcGxlIGlzIGEgVVNCCisgICAgc3BlYWtlciB3aXRoIGFuIGF1ZGlvIGludGVyZmFjZSBmb3IgcGxheWJhY2ssIGFuZCBhIEhJRCBpbnRlcmZhY2UKKyAgICBmb3IgdXNlIHdpdGggc29mdHdhcmUgdm9sdW1lIGNvbnRyb2wuCisKKworSW50ZXJmYWNlIGRlc2NyaXB0b3IgaW5mbyAoY2FuIGJlIG11bHRpcGxlIHBlciBDb25maWcpOgorCitJOiogSWYjPWRkIEFsdD1kZCAjRVBzPWRkIENscz14eChzc3NzcykgU3ViPXh4IFByb3Q9eHggRHJpdmVyPXNzc3MKK3wgfCB8ICAgICAgfCAgICAgIHwgICAgICAgfCAgICAgICAgICAgICB8ICAgICAgfCAgICAgICB8X19Ecml2ZXIgbmFtZQorfCB8IHwgICAgICB8ICAgICAgfCAgICAgICB8ICAgICAgICAgICAgIHwgICAgICB8ICAgICAgICAgIG9yICIobm9uZSkiCit8IHwgfCAgICAgIHwgICAgICB8ICAgICAgIHwgICAgICAgICAgICAgfCAgICAgIHxfX0ludGVyZmFjZVByb3RvY29sCit8IHwgfCAgICAgIHwgICAgICB8ICAgICAgIHwgICAgICAgICAgICAgfF9fSW50ZXJmYWNlU3ViQ2xhc3MKK3wgfCB8ICAgICAgfCAgICAgIHwgICAgICAgfF9fSW50ZXJmYWNlQ2xhc3MKK3wgfCB8ICAgICAgfCAgICAgIHxfX051bWJlck9mRW5kcG9pbnRzCit8IHwgfCAgICAgIHxfX0FsdGVybmF0ZVNldHRpbmdOdW1iZXIKK3wgfCB8X19JbnRlcmZhY2VOdW1iZXIKK3wgfF9fICIqIiBpbmRpY2F0ZXMgdGhlIGFjdGl2ZSBhbHRzZXR0aW5nIChvdGhlcnMgYXJlICIgIikKK3xfX0ludGVyZmFjZSBpbmZvIHRhZworCisgICAgQSBnaXZlbiBpbnRlcmZhY2UgbWF5IGhhdmUgb25lIG9yIG1vcmUgImFsdGVybmF0ZSIgc2V0dGluZ3MuCisgICAgRm9yIGV4YW1wbGUsIGRlZmF1bHQgc2V0dGluZ3MgbWF5IG5vdCB1c2UgbW9yZSB0aGFuIGEgc21hbGwKKyAgICBhbW91bnQgb2YgcGVyaW9kaWMgYmFuZHdpZHRoLiAgVG8gdXNlIHNpZ25pZmljYW50IGZyYWN0aW9ucworICAgIG9mIGJ1cyBiYW5kd2lkdGgsIGRyaXZlcnMgbXVzdCBzZWxlY3QgYSBub24tZGVmYXVsdCBhbHRzZXR0aW5nLgorCisgICAgT25seSBvbmUgc2V0dGluZyBmb3IgYW4gaW50ZXJmYWNlIG1heSBiZSBhY3RpdmUgYXQgYSB0aW1lLCBhbmQKKyAgICBvbmx5IG9uZSBkcml2ZXIgbWF5IGJpbmQgdG8gYW4gaW50ZXJmYWNlIGF0IGEgdGltZS4gIE1vc3QgZGV2aWNlcworICAgIGhhdmUgb25seSBvbmUgYWx0ZXJuYXRlIHNldHRpbmcgcGVyIGludGVyZmFjZS4KKworCitFbmRwb2ludCBkZXNjcmlwdG9yIGluZm8gKGNhbiBiZSBtdWx0aXBsZSBwZXIgSW50ZXJmYWNlKToKKworRTogIEFkPXh4KHMpIEF0cj14eChzc3NzKSBNeFBTPWRkZGQgSXZsPWRkZHNzCit8ICAgfCAgICAgICAgfCAgICAgICAgICAgIHwgICAgICAgICB8X19JbnRlcnZhbCAobWF4KSBiZXR3ZWVuIHRyYW5zZmVycworfCAgIHwgICAgICAgIHwgICAgICAgICAgICB8X19FbmRwb2ludE1heFBhY2tldFNpemUKK3wgICB8ICAgICAgICB8X19BdHRyaWJ1dGVzKEVuZHBvaW50VHlwZSkKK3wgICB8X19FbmRwb2ludEFkZHJlc3MoST1JbixPPU91dCkKK3xfX0VuZHBvaW50IGluZm8gdGFnCisKKyAgICBUaGUgaW50ZXJ2YWwgaXMgbm9uemVybyBmb3IgYWxsIHBlcmlvZGljIChpbnRlcnJ1cHQgb3IgaXNvY2hyb25vdXMpCisgICAgZW5kcG9pbnRzLiAgRm9yIGhpZ2ggc3BlZWQgZW5kcG9pbnRzIHRoZSB0cmFuc2ZlciBpbnRlcnZhbCBtYXkgYmUKKyAgICBtZWFzdXJlZCBpbiBtaWNyb3NlY29uZHMgcmF0aGVyIHRoYW4gbWlsbGlzZWNvbmRzLgorCisgICAgRm9yIGhpZ2ggc3BlZWQgcGVyaW9kaWMgZW5kcG9pbnRzLCB0aGUgIk1heFBhY2tldFNpemUiIHJlZmxlY3RzCisgICAgdGhlIHBlci1taWNyb2ZyYW1lIGRhdGEgdHJhbnNmZXIgc2l6ZS4gIEZvciAiaGlnaCBiYW5kd2lkdGgiCisgICAgZW5kcG9pbnRzLCB0aGF0IGNhbiByZWZsZWN0IHR3byBvciB0aHJlZSBwYWNrZXRzIChmb3IgdXAgdG8KKyAgICAzS0J5dGVzIGV2ZXJ5IDEyNSB1c2VjKSBwZXIgZW5kcG9pbnQuCisKKyAgICBXaXRoIHRoZSBMaW51eC1VU0Igc3RhY2ssIHBlcmlvZGljIGJhbmR3aWR0aCByZXNlcnZhdGlvbnMgdXNlIHRoZQorICAgIHRyYW5zZmVyIGludGVydmFscyBhbmQgc2l6ZXMgcHJvdmlkZWQgYnkgVVJCcywgd2hpY2ggY2FuIGJlIGxlc3MKKyAgICB0aGFuIHRob3NlIGZvdW5kIGluIGVuZHBvaW50IGRlc2NyaXB0b3IuCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCitJZiBhIHVzZXIgb3Igc2NyaXB0IGlzIGludGVyZXN0ZWQgb25seSBpbiBUb3BvbG9neSBpbmZvLCBmb3IKK2V4YW1wbGUsIHVzZSBzb21ldGhpbmcgbGlrZSAiZ3JlcCBeVDogL3Byb2MvYnVzL3VzYi9kZXZpY2VzIgorZm9yIG9ubHkgdGhlIFRvcG9sb2d5IGxpbmVzLiAgQSBjb21tYW5kIGxpa2UKKyJncmVwIC1pIF5bdGRwXTogL3Byb2MvYnVzL3VzYi9kZXZpY2VzIiBjYW4gYmUgdXNlZCB0byBsaXN0Citvbmx5IHRoZSBsaW5lcyB0aGF0IGJlZ2luIHdpdGggdGhlIGNoYXJhY3RlcnMgaW4gc3F1YXJlIGJyYWNrZXRzLAord2hlcmUgdGhlIHZhbGlkIGNoYXJhY3RlcnMgYXJlIFREUENJRS4gIFdpdGggYSBzbGlnaHRseSBtb3JlIGFibGUKK3NjcmlwdCwgaXQgY2FuIGRpc3BsYXkgYW55IHNlbGVjdGVkIGxpbmVzIChmb3IgZXhhbXBsZSwgb25seSBULCBELAorYW5kIFAgbGluZXMpIGFuZCBjaGFuZ2UgdGhlaXIgb3V0cHV0IGZvcm1hdC4gIChUaGUgInByb2N1c2IiCitQZXJsIHNjcmlwdCBpcyB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgaWRlYS4gIEl0IHdpbGwgbGlzdCBvbmx5CitzZWxlY3RlZCBsaW5lcyBbc2VsZWN0ZWQgZnJvbSBUQkRQU0NJRV0gb3IgIkFsbCIgbGluZXMgZnJvbQorL3Byb2MvYnVzL3VzYi9kZXZpY2VzLikKKworVGhlIFRvcG9sb2d5IGxpbmVzIGNhbiBiZSB1c2VkIHRvIGdlbmVyYXRlIGEgZ3JhcGhpYy9waWN0b3JpYWwKK29mIHRoZSBVU0IgZGV2aWNlcyBvbiBhIHN5c3RlbSdzIHJvb3QgaHViLiAgKFNlZSBtb3JlIGJlbG93CitvbiBob3cgdG8gZG8gdGhpcy4pCisKK1RoZSBJbnRlcmZhY2UgbGluZXMgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgZHJpdmVyIGlzCitiZWluZyB1c2VkIGZvciBlYWNoIGRldmljZSwgYW5kIHdoaWNoIGFsdHNldHRpbmcgaXQgYWN0aXZhdGVkLgorCitUaGUgQ29uZmlndXJhdGlvbiBsaW5lcyBjb3VsZCBiZSB1c2VkIHRvIGxpc3QgbWF4aW11bSBwb3dlcgorKGluIG1pbGxpYW1wcykgdGhhdCBhIHN5c3RlbSdzIFVTQiBkZXZpY2VzIGFyZSB1c2luZy4KK0ZvciBleGFtcGxlLCAiZ3JlcCBeQzogL3Byb2MvYnVzL3VzYi9kZXZpY2VzIi4KKworCitIZXJlJ3MgYW4gZXhhbXBsZSwgZnJvbSBhIHN5c3RlbSB3aGljaCBoYXMgYSBVSENJIHJvb3QgaHViLAorYW4gZXh0ZXJuYWwgaHViIGNvbm5lY3RlZCB0byB0aGUgcm9vdCBodWIsIGFuZCBhIG1vdXNlIGFuZAorYSBzZXJpYWwgY29udmVydGVyIGNvbm5lY3RlZCB0byB0aGUgZXh0ZXJuYWwgaHViLgorCitUOiAgQnVzPTAwIExldj0wMCBQcm50PTAwIFBvcnQ9MDAgQ250PTAwIERldiM9ICAxIFNwZD0xMiAgIE14Q2g9IDIKK0I6ICBBbGxvYz0gMjgvOTAwIHVzICggMyUpLCAjSW50PSAgMiwgI0lzbz0gIDAKK0Q6ICBWZXI9IDEuMDAgQ2xzPTA5KGh1YiAgKSBTdWI9MDAgUHJvdD0wMCBNeFBTPSA4ICNDZmdzPSAgMQorUDogIFZlbmRvcj0wMDAwIFByb2RJRD0wMDAwIFJldj0gMC4wMAorUzogIFByb2R1Y3Q9VVNCIFVIQ0kgUm9vdCBIdWIKK1M6ICBTZXJpYWxOdW1iZXI9ZGNlMAorQzoqICNJZnM9IDEgQ2ZnIz0gMSBBdHI9NDAgTXhQd3I9ICAwbUEKK0k6ICBJZiM9IDAgQWx0PSAwICNFUHM9IDEgQ2xzPTA5KGh1YiAgKSBTdWI9MDAgUHJvdD0wMCBEcml2ZXI9aHViCitFOiAgQWQ9ODEoSSkgQXRyPTAzKEludC4pIE14UFM9ICAgOCBJdmw9MjU1bXMKKworVDogIEJ1cz0wMCBMZXY9MDEgUHJudD0wMSBQb3J0PTAwIENudD0wMSBEZXYjPSAgMiBTcGQ9MTIgICBNeENoPSA0CitEOiAgVmVyPSAxLjAwIENscz0wOShodWIgICkgU3ViPTAwIFByb3Q9MDAgTXhQUz0gOCAjQ2Zncz0gIDEKK1A6ICBWZW5kb3I9MDQ1MSBQcm9kSUQ9MTQ0NiBSZXY9IDEuMDAKK0M6KiAjSWZzPSAxIENmZyM9IDEgQXRyPWUwIE14UHdyPTEwMG1BCitJOiAgSWYjPSAwIEFsdD0gMCAjRVBzPSAxIENscz0wOShodWIgICkgU3ViPTAwIFByb3Q9MDAgRHJpdmVyPWh1YgorRTogIEFkPTgxKEkpIEF0cj0wMyhJbnQuKSBNeFBTPSAgIDEgSXZsPTI1NW1zCisKK1Q6ICBCdXM9MDAgTGV2PTAyIFBybnQ9MDIgUG9ydD0wMCBDbnQ9MDEgRGV2Iz0gIDMgU3BkPTEuNSAgTXhDaD0gMAorRDogIFZlcj0gMS4wMCBDbHM9MDAoPmlmYyApIFN1Yj0wMCBQcm90PTAwIE14UFM9IDggI0NmZ3M9ICAxCitQOiAgVmVuZG9yPTA0YjQgUHJvZElEPTAwMDEgUmV2PSAwLjAwCitDOiogI0lmcz0gMSBDZmcjPSAxIEF0cj04MCBNeFB3cj0xMDBtQQorSTogIElmIz0gMCBBbHQ9IDAgI0VQcz0gMSBDbHM9MDMoSElEICApIFN1Yj0wMSBQcm90PTAyIERyaXZlcj1tb3VzZQorRTogIEFkPTgxKEkpIEF0cj0wMyhJbnQuKSBNeFBTPSAgIDMgSXZsPSAxMG1zCisKK1Q6ICBCdXM9MDAgTGV2PTAyIFBybnQ9MDIgUG9ydD0wMiBDbnQ9MDIgRGV2Iz0gIDQgU3BkPTEyICAgTXhDaD0gMAorRDogIFZlcj0gMS4wMCBDbHM9MDAoPmlmYyApIFN1Yj0wMCBQcm90PTAwIE14UFM9IDggI0NmZ3M9ICAxCitQOiAgVmVuZG9yPTA1NjUgUHJvZElEPTAwMDEgUmV2PSAxLjA4CitTOiAgTWFudWZhY3R1cmVyPVBlcmFjb20gTmV0d29ya3MsIEluYy4KK1M6ICBQcm9kdWN0PVBlcmFjb20gVVNCIHRvIFNlcmlhbCBDb252ZXJ0ZXIKK0M6KiAjSWZzPSAxIENmZyM9IDEgQXRyPWEwIE14UHdyPTEwMG1BCitJOiAgSWYjPSAwIEFsdD0gMCAjRVBzPSAzIENscz0wMCg+aWZjICkgU3ViPTAwIFByb3Q9MDAgRHJpdmVyPXNlcmlhbAorRTogIEFkPTgxKEkpIEF0cj0wMihCdWxrKSBNeFBTPSAgNjQgSXZsPSAxNm1zCitFOiAgQWQ9MDEoTykgQXRyPTAyKEJ1bGspIE14UFM9ICAxNiBJdmw9IDE2bXMKK0U6ICBBZD04MihJKSBBdHI9MDMoSW50LikgTXhQUz0gICA4IEl2bD0gIDhtcworCisKK1NlbGVjdGluZyBvbmx5IHRoZSAiVDoiIGFuZCAiSToiIGxpbmVzIGZyb20gdGhpcyAoZm9yIGV4YW1wbGUsIGJ5IHVzaW5nCisicHJvY3VzYiB0aSIpLCB3ZSBoYXZlOgorCitUOiAgQnVzPTAwIExldj0wMCBQcm50PTAwIFBvcnQ9MDAgQ250PTAwIERldiM9ICAxIFNwZD0xMiAgIE14Q2g9IDIKK1Q6ICBCdXM9MDAgTGV2PTAxIFBybnQ9MDEgUG9ydD0wMCBDbnQ9MDEgRGV2Iz0gIDIgU3BkPTEyICAgTXhDaD0gNAorSTogIElmIz0gMCBBbHQ9IDAgI0VQcz0gMSBDbHM9MDkoaHViICApIFN1Yj0wMCBQcm90PTAwIERyaXZlcj1odWIKK1Q6ICBCdXM9MDAgTGV2PTAyIFBybnQ9MDIgUG9ydD0wMCBDbnQ9MDEgRGV2Iz0gIDMgU3BkPTEuNSAgTXhDaD0gMAorSTogIElmIz0gMCBBbHQ9IDAgI0VQcz0gMSBDbHM9MDMoSElEICApIFN1Yj0wMSBQcm90PTAyIERyaXZlcj1tb3VzZQorVDogIEJ1cz0wMCBMZXY9MDIgUHJudD0wMiBQb3J0PTAyIENudD0wMiBEZXYjPSAgNCBTcGQ9MTIgICBNeENoPSAwCitJOiAgSWYjPSAwIEFsdD0gMCAjRVBzPSAzIENscz0wMCg+aWZjICkgU3ViPTAwIFByb3Q9MDAgRHJpdmVyPXNlcmlhbAorCisKK1BoeXNpY2FsbHkgdGhpcyBsb29rcyBsaWtlIChvciBjb3VsZCBiZSBjb252ZXJ0ZWQgdG8pOgorCisgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICB8ICBQQy9yb290X2h1YiAoMTIpfCAgIERldiMgPSAxCisgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLSsgICAobm4pIGlzIE1icHMuCisgICAgTGV2ZWwgMCAgICAgICAgICAgfCAgQ04uMCAgIHwgIENOLjEgIHwgICBbQ04gPSBjb25uZWN0b3IvcG9ydCAjXQorICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8KKyAgICAgICAgICAgICAgICAgICAgICAgICAvCisgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgIExldmVsIDEgICB8IERldiMyOiA0LXBvcnQgaHViICgxMil8CisgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICB8Q04uMCB8Q04uMSB8Q04uMiB8Q04uMyB8CisgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICAgICAgICAgXCAgICAgICAgICAgXF9fX19fX19fX19fX19fX19fX19fCisgICAgICAgICAgICAgICAgIFxfX19fXyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICBcICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tKworICBMZXZlbCAyICAgICAgfCBEZXYjIDM6IG1vdXNlICgxLjUpfCAgICAgIHwgRGV2IyA0OiBzZXJpYWwgKDEyKXwKKyAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKworCitPciwgaW4gYSBtb3JlIHRyZWUtbGlrZSBzdHJ1Y3R1cmUgKHBvcnRzIFtDb25uZWN0b3JzXSB3aXRob3V0Citjb25uZWN0aW9ucyBjb3VsZCBiZSBvbWl0dGVkKToKKworUEM6ICBEZXYjIDEsIHJvb3QgaHViLCAyIHBvcnRzLCAxMiBNYnBzCit8XyBDTi4wOiAgRGV2IyAyLCBodWIsIDQgcG9ydHMsIDEyIE1icHMKKyAgICAgfF8gQ04uMDogIERldiAjMywgbW91c2UsIDEuNSBNYnBzCisgICAgIHxfIENOLjE6CisgICAgIHxfIENOLjI6ICBEZXYgIzQsIHNlcmlhbCwgMTIgTWJwcworICAgICB8XyBDTi4zOgorfF8gQ04uMToKKworCisgICAgICAgICAgICAgICAgICAgICAgICAgIyMjIEVORCAjIyMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNiL3Jpby50eHQgYi9Eb2N1bWVudGF0aW9uL3VzYi9yaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlZTcxNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3VzYi9yaW8udHh0CkBAIC0wLDAgKzEsMTM4IEBACitDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgQnJ1Y2UgVGVuaXNvbgorUG9ydGlvbnMgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIERhdmlkIE5lbHNvbgorVGhhbmtzIHRvIERhdmlkIE5lbHNvbiBmb3IgZ3VpZGFuY2UgYW5kIHRoZSB1c2FnZSBvZiB0aGUgc2Nhbm5lci50eHQKK2FuZCBzY2FubmVyLmMgZmlsZXMgdG8gbW9kZWwgb3VyIGRyaXZlciBhbmQgdGhpcyBpbmZvcm1hdGl2ZSBmaWxlLgorCitNYXIuIDIsIDIwMDAKKworQ0hBTkdFUworCistIEluaXRpYWwgUmV2aXNpb24KKworCitPVkVSVklFVworCitUaGlzIFJFQURNRSB3aWxsIGFkZHJlc3MgaXNzdWVzIHJlZ2FyZGluZyBob3cgdG8gY29uZmlndXJlIHRoZSBrZXJuZWwKK3RvIGFjY2VzcyBhIFJJTyA1MDAgbXAzIHBsYXllci4gIAorQmVmb3JlIEkgZXhwbGFpbiBob3cgdG8gdXNlIHRoaXMgdG8gYWNjZXNzIHRoZSBSaW81MDAgcGxlYXNlIGJlIHdhcm5lZDoKKworVyBBIFIgTiBJIE4gRzoKKy0tLS0tLS0tLS0tLS0tCisKK1BsZWFzZSBub3RlIHRoYXQgdGhpcyBzb2Z0d2FyZSBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudC4gIFRoZSBhdXRob3JzCithcmUgaW4gbm8gd2F5IHJlc3BvbnNpYmxlIGZvciBhbnkgZGFtYWdlIHRoYXQgbWF5IG9jY3VyLCBubyBtYXR0ZXIgaG93CitpbmNvbnNlcXVlbnRpYWwuCisKK0l0IHNlZW1zIHRoYXQgdGhlIFJpbyBoYXMgYSBwcm9ibGVtIHdoZW4gc2VuZGluZyAubXAzIHdpdGggbG93IGJhdHRlcmllcy4KK0kgc3VnZ2VzdCB3aGVuIHRoZSBiYXR0ZXJpZXMgYXJlIGxvdyBhbmQgeW91IHdhbnQgdG8gdHJhbnNmZXIgc3R1ZmYgdGhhdCB5b3UKK3JlcGxhY2UgaXQgd2l0aCBhIGZyZXNoIG9uZS4gSW4gbXkgY2FzZSwgd2hhdCBoYXBwZW5lZCBpcyBJIGxvc3QgdHdvIDE2a2IKK2Jsb2NrcyAodGhleSBhcmUgbm8gbG9uZ2VyIHVzYWJsZSB0byBzdG9yZSBpbmZvcm1hdGlvbiB0byBpdCkuIEJ1dCBJIGRvbid0Citrbm93IGlmIHRoYXQncyBub3JtYWwgb3Igbm90OyBpdCBjb3VsZCBzaW1wbHkgYmUgYSBwcm9ibGVtIHdpdGggdGhlIGZsYXNoIAorbWVtb3J5LgorCitJbiBhbiBleHRyZW1lIGNhc2UsIEkgbGVmdCBteSBSaW8gcGxheWluZyBvdmVybmlnaHQgYW5kIHRoZSBiYXR0ZXJpZXMgd29yZSAKK2Rvd24gdG8gbm90aGluZyBhbmQgYXBwZWFyIHRvIGhhdmUgY29ycnVwdGVkIHRoZSBmbGFzaCBtZW1vcnkuIE15IFJJTyAKK25lZWRlZCB0byBiZSByZXBsYWNlZCBhcyBhIHJlc3VsdC4gIERpYW1vbmQgdGVjaCBzdXBwb3J0IGlzIGF3YXJlIG9mIHRoZSAKK3Byb2JsZW0uICBEbyBOT1QgYWxsb3cgeW91ciBiYXR0ZXJpZXMgdG8gd2VhciBkb3duIHRvIG5vdGhpbmcgYmVmb3JlIAorY2hhbmdpbmcgdGhlbS4gIEl0IGFwcGVhcnMgUklPIDUwMCBmaXJtd2FyZSBkb2VzIG5vdCBoYW5kbGUgbG93IGJhdHRlcnkgCitwb3dlciB3ZWxsIGF0IGFsbC4gCisKK09uIHN5c3RlbXMgd2l0aCBPSENJIGNvbnRyb2xsZXJzLCB0aGUga2VybmVsIE9IQ0kgY29kZSBhcHBlYXJzIHRvIGhhdmUgCitwb3dlciBvbiBwcm9ibGVtcyB3aXRoIHNvbWUgY2hpcHNldHMuICBJZiB5b3UgYXJlIGhhdmluZyBwcm9ibGVtcyAKK2Nvbm5lY3RpbmcgdG8geW91ciBSSU8gNTAwLCB0cnkgdHVybmluZyBpdCBvbiBmaXJzdCBhbmQgdGhlbiBwbHVnZ2luZyBpdCAKK2ludG8gdGhlIFVTQiBjYWJsZS4gIAorCitDb250YWN0IGluZm9ybWF0aW9uOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgVGhlIG1haW4gcGFnZSBmb3IgdGhlIHByb2plY3QgaXMgaG9zdGVkIGF0IHNvdXJjZWZvcmdlLm5ldCBpbiB0aGUgZm9sbG93aW5nCisgICBVUkw6IDxodHRwOi8vcmlvNTAwLnNvdXJjZWZvcmdlLm5ldD4uIFlvdSBjYW4gYWxzbyBnbyB0byB0aGUgcHJvamVjdCdzCisgICBzb3VyY2Vmb3JnZSBob21lIHBhZ2UgYXQ6IDxodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3JpbzUwMC8+LgorICAgVGhlcmUgaXMgYWxzbyBhIG1haWxpbmcgbGlzdDogcmlvNTAwLXVzZXJzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAorCitBdXRob3JzOgorLS0tLS0tLQorCitNb3N0IG9mIHRoZSBjb2RlIHdhcyB3cml0dGVuIGJ5IENlc2FyIE1pcXVlbCA8bWlxdWVsQGRmLnViYS5hcj4uIEtlaXRoIAorQ2xheXRvbiA8a2NsYXl0b25AanBzLm5ldD4gaXMgaW5jaGFyZ2Ugb2YgdGhlIFBQQyBwb3J0IGFuZCBtYWtpbmcgc3VyZQordGhpbmdzIHdvcmsgdGhlcmUuIEJydWNlIFRlbmlzb24gPGJ0ZW5pc29uQGRpYmJzLm5ldD4gaXMgYWRkaW5nIHN1cHBvcnQKK2ZvciAuZm9uIGZpbGVzIGFuZCBhbHNvIGRvZXMgdGVzdGluZy4gVGhlIHByb2dyYW0gd2lsbCBtb3N0bHkgc3VyZSBiZQorcmUtd3JpdHRlbiBhbmQgUGV0ZSBJa3VzeiBhbG9uZyB3aXRoIHRoZSByZXN0IHdpbGwgcmUtZGVzaWduIGl0LiBJIHdvdWxkCithbHNvIGxpa2UgdG8gdGhhbmsgVHJpIE5ndXllbiA8dG1uXzMwMjIwMDBAaG90bWFpbC5jb20+IHdobyBwcm92aWRlZCB1c2UgCit3aXRoIHNvbWUgaW1wb3J0YW50IGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBSaW8uCisKK0FERElUSU9OQUwgSU5GT1JNQVRJT04gYW5kIFVzZXJzcGFjZSB0b29scworCitodHRwOi8vcmlvNTAwLnNvdXJjZWZvcmdlLm5ldC8KKworCitSRVFVSVJFTUVOVFMKKworQSBob3N0IHdpdGggYSBVU0IgcG9ydC4gIElkZWFsbHksIGVpdGhlciBhIFVIQ0kgKEludGVsKSBvciBPSENJCisoQ29tcGFxIGFuZCBvdGhlcnMpIGhhcmR3YXJlIHBvcnQgc2hvdWxkIHdvcmsuCisKK0EgTGludXggZGV2ZWxvcG1lbnQga2VybmVsICgyLjMueCkgd2l0aCBVU0Igc3VwcG9ydCBlbmFibGVkIG9yIGEKK2JhY2twb3J0ZWQgdmVyc2lvbiB0byBsaW51eC0yLjIueC4gIFNlZSBodHRwOi8vd3d3LmxpbnV4LXVzYi5vcmcgZm9yCittb3JlIGluZm9ybWF0aW9uIG9uIGFjY29tcGxpc2hpbmcgdGhpcy4KKworQSBMaW51eCBrZXJuZWwgd2l0aCBSSU8gNTAwIHN1cHBvcnQgZW5hYmxlZC4KKworJ2xzcGNpJyB3aGljaCBpcyBvbmx5IG5lZWRlZCB0byBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgVVNCIGhhcmR3YXJlCithdmFpbGFibGUgaW4geW91ciBtYWNoaW5lLgorCitDT05GSUdVUkFUSU9OCisKK1VzaW5nIGBsc3BjaSAtdmAsIGRldGVybWluZSB0aGUgdHlwZSBvZiBVU0IgaGFyZHdhcmUgYXZhaWxhYmxlLgorCisgIElmIHlvdSBzZWUgc29tZXRoaW5nIGxpa2U6CisKKyAgICBVU0IgQ29udHJvbGxlcjogLi4uLi4uCisgICAgRmxhZ3M6IC4uLi4uCisgICAgSS9PIHBvcnRzIGF0IC4uLi4KKworICBUaGVuIHlvdSBoYXZlIGEgVUhDSSBiYXNlZCBjb250cm9sbGVyLgorCisgIElmIHlvdSBzZWUgc29tZXRoaW5nIGxpa2U6CisKKyAgICAgVVNCIENvbnRyb2xsZXI6IC4uLi4uCisgICAgIEZsYWdzOiAuLi4uCisgICAgIE1lbW9yeSBhdCAuLi4uLgorCisgIFRoZW4geW91IGhhdmUgYSBPSENJIGJhc2VkIGNvbnRyb2xsZXIuCisKK1VzaW5nIGBtYWtlIG1lbnVjb25maWdgIG9yIHlvdXIgcHJlZmVycmVkIG1ldGhvZCBmb3IgY29uZmlndXJpbmcgdGhlCitrZXJuZWwsIHNlbGVjdCAnU3VwcG9ydCBmb3IgVVNCJywgJ09IQ0kvVUhDSScgZGVwZW5kaW5nIG9uIHlvdXIKK2hhcmR3YXJlIChkZXRlcm1pbmVkIGZyb20gdGhlIHN0ZXBzIGFib3ZlKSwgJ1VTQiBEaWFtb25kIFJpbzUwMCBzdXBwb3J0JywgYW5kCisnUHJlbGltaW5hcnkgVVNCIGRldmljZSBmaWxlc3lzdGVtJy4gIENvbXBpbGUgYW5kIGluc3RhbGwgdGhlIG1vZHVsZXMKKyh5b3UgbWF5IG5lZWQgdG8gZXhlY3V0ZSBgZGVwbW9kIC1hYCB0byB1cGRhdGUgdGhlIG1vZHVsZQorZGVwZW5kZW5jaWVzKS4KKworQWRkIGEgZGV2aWNlIGZvciB0aGUgVVNCIHJpbzUwMDoKKyAgYG1rbm9kIC9kZXYvdXNiL3JpbzUwMCBjIDE4MCA2NGAKKworU2V0IGFwcHJvcHJpYXRlIHBlcm1pc3Npb25zIGZvciAvZGV2L3VzYi9yaW81MDAgKGRvbid0IGZvcmdldCBhYm91dAorZ3JvdXAgYW5kIHdvcmxkIHBlcm1pc3Npb25zKS4gIEJvdGggcmVhZCBhbmQgd3JpdGUgcGVybWlzc2lvbnMgYXJlCityZXF1aXJlZCBmb3IgcHJvcGVyIG9wZXJhdGlvbi4KKworTG9hZCB0aGUgYXBwcm9wcmlhdGUgbW9kdWxlcyAoaWYgY29tcGlsZWQgYXMgbW9kdWxlcyk6CisKKyAgT0hDSToKKyAgICBtb2Rwcm9iZSB1c2Jjb3JlCisgICAgbW9kcHJvYmUgdXNiLW9oY2kKKyAgICBtb2Rwcm9iZSByaW81MDAKKworICBVSENJOgorICAgIG1vZHByb2JlIHVzYmNvcmUKKyAgICBtb2Rwcm9iZSB1c2ItdWhjaSAgKG9yIHVoY2kpCisgICAgbW9kcHJvYmUgcmlvNTAwCisKK1RoYXQncyBpdC4gIFRoZSBSaW81MDAgVXRpbHMgYXQ6IGh0dHA6Ly9yaW81MDAuc291cmNlZm9yZ2UubmV0IHNob3VsZAorYmUgYWJsZSB0byBhY2Nlc3MgdGhlIHJpbzUwMC4KKworQlVHUworCitJZiB5b3UgZW5jb3VudGVyIGFueSBwcm9ibGVtcyBmZWVsIGZyZWUgdG8gZHJvcCBtZSBhbiBlbWFpbC4KKworQnJ1Y2UgVGVuaXNvbgorYnRlbmlzb25AZGliYnMubmV0CisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNiL3VzYi1oZWxwLnR4dCBiL0RvY3VtZW50YXRpb24vdXNiL3VzYi1oZWxwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjczY2EyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi91c2IvdXNiLWhlbHAudHh0CkBAIC0wLDAgKzEsMTYgQEAKK3VzYi1oZWxwLnR4dAorMjAwOC1NYXItNworCitGb3IgVVNCIGhlbHAgb3RoZXIgdGhhbiB0aGUgcmVhZG1lIGZpbGVzIHRoYXQgYXJlIGxvY2F0ZWQgaW4KK0RvY3VtZW50YXRpb24vdXNiLyosIHNlZSB0aGUgZm9sbG93aW5nOgorCitMaW51eC1VU0IgcHJvamVjdDogIGh0dHA6Ly93d3cubGludXgtdXNiLm9yZworICBtaXJyb3JzIGF0ICAgICAgICBodHRwOi8vdXNiLmluLnR1bS5kZS9saW51eC11c2IvCisgICAgICAgICBhbmQgICAgICAgIGh0dHA6Ly9pdC5saW51eC11c2Iub3JnCitMaW51eCBVU0IgR3VpZGU6ICAgIGh0dHA6Ly9saW51eC11c2Iuc291cmNlZm9yZ2UubmV0CitMaW51eC1VU0IgZGV2aWNlIG92ZXJ2aWV3ICh3b3JraW5nIGRldmljZXMgYW5kIGRyaXZlcnMpOgorICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LnFiaWsuY2gvdXNiL2RldmljZXMvCisKK1RoZSBMaW51eC1VU0IgbWFpbGluZyBsaXN0IGlzIGF0IGxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5vcmcKKworIyMjCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3VzYi91c2Itc2VyaWFsLnR4dCBiL0RvY3VtZW50YXRpb24vdXNiL3VzYi1zZXJpYWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0OWYzMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3VzYi91c2Itc2VyaWFsLnR4dApAQCAtMCwwICsxLDQ5NSBAQAorSU5UUk9EVUNUSU9OCisKKyAgVGhlIFVTQiBzZXJpYWwgZHJpdmVyIGN1cnJlbnRseSBzdXBwb3J0cyBhIG51bWJlciBvZiBkaWZmZXJlbnQgVVNCIHRvCisgIHNlcmlhbCBjb252ZXJ0ZXIgcHJvZHVjdHMsIGFzIHdlbGwgYXMgc29tZSBkZXZpY2VzIHRoYXQgdXNlIGEgc2VyaWFsCisgIGludGVyZmFjZSBmcm9tIHVzZXJzcGFjZSB0byB0YWxrIHRvIHRoZSBkZXZpY2UuCisKKyAgU2VlIHRoZSBpbmRpdmlkdWFsIHByb2R1Y3Qgc2VjdGlvbiBiZWxvdyBmb3Igc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQKKyAgdGhlIGRpZmZlcmVudCBkZXZpY2VzLgorCisKK0NPTkZJR1VSQVRJT04KKworICBDdXJyZW50bHkgdGhlIGRyaXZlciBjYW4gaGFuZGxlIHVwIHRvIDI1NiBkaWZmZXJlbnQgc2VyaWFsIGludGVyZmFjZXMgYXQKKyAgb25lIHRpbWUuIAorCisgICAgVGhlIG1ham9yIG51bWJlciB0aGF0IHRoZSBkcml2ZXIgdXNlcyBpcyAxODggc28gdG8gdXNlIHRoZSBkcml2ZXIsCisgICAgY3JlYXRlIHRoZSBmb2xsb3dpbmcgbm9kZXM6CisJbWtub2QgL2Rldi90dHlVU0IwIGMgMTg4IDAKKwlta25vZCAvZGV2L3R0eVVTQjEgYyAxODggMQorCW1rbm9kIC9kZXYvdHR5VVNCMiBjIDE4OCAyCisJbWtub2QgL2Rldi90dHlVU0IzIGMgMTg4IDMKKwkJLgorCQkuCisJCS4KKwlta25vZCAvZGV2L3R0eVVTQjI1NCBjIDE4OCAyNTQKKwlta25vZCAvZGV2L3R0eVVTQjI1NSBjIDE4OCAyNTUKKworICBXaGVuIHRoZSBkZXZpY2UgaXMgY29ubmVjdGVkIGFuZCByZWNvZ25pemVkIGJ5IHRoZSBkcml2ZXIsIHRoZSBkcml2ZXIKKyAgd2lsbCBwcmludCB0byB0aGUgc3lzdGVtIGxvZywgd2hpY2ggbm9kZShzKSB0aGUgZGV2aWNlIGhhcyBiZWVuIGJvdW5kCisgIHRvLgorICAKKworU1BFQ0lGSUMgREVWSUNFUyBTVVBQT1JURUQKKworCitDb25uZWN0VGVjaCBXaGl0ZUhFQVQgNCBwb3J0IGNvbnZlcnRlcgorCisgIENvbm5lY3RUZWNoIGhhcyBiZWVuIHZlcnkgZm9ydGhjb21pbmcgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGVpcgorICBkZXZpY2UsIGluY2x1ZGluZyBwcm92aWRpbmcgYSB1bml0IHRvIHRlc3Qgd2l0aC4KKworICBUaGUgZHJpdmVyIGlzIG9mZmljaWFsbHkgc3VwcG9ydGVkIGJ5IENvbm5lY3QgVGVjaCBJbmMuCisgIGh0dHA6Ly93d3cuY29ubmVjdHRlY2guY29tCisKKyAgRm9yIGFueSBxdWVzdGlvbnMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzIGRyaXZlciwgcGxlYXNlIGNvbnRhY3QKKyAgQ29ubmVjdCBUZWNoJ3MgU3VwcG9ydCBEZXBhcnRtZW50IGF0IHN1cHBvcnRAY29ubmVjdHRlY2guY29tCisKKworSGFuZFNwcmluZyBWaXNvciwgUGFsbSBVU0IsIGFuZCBDbGnDqSBVU0IgZHJpdmVyCisKKyAgVGhpcyBkcml2ZXIgd29ya3Mgd2l0aCBhbGwgSGFuZFNwcmluZyBVU0IsIFBhbG0gVVNCLCBhbmQgU29ueSBDbGnDqSBVU0IKKyAgZGV2aWNlcy4KKworICBPbmx5IHdoZW4gdGhlIGRldmljZSB0cmllcyB0byBjb25uZWN0IHRvIHRoZSBob3N0LCB3aWxsIHRoZSBkZXZpY2Ugc2hvdworICB1cCB0byB0aGUgaG9zdCBhcyBhIHZhbGlkIFVTQiBkZXZpY2UuIFdoZW4gdGhpcyBoYXBwZW5zLCB0aGUgZGV2aWNlIGlzCisgIHByb3Blcmx5IGVudW1lcmF0ZWQsIGFzc2lnbmVkIGEgcG9ydCwgYW5kIHRoZW4gY29tbXVuaWNhdGlvbiBfc2hvdWxkXyBiZQorICBwb3NzaWJsZS4gVGhlIGRyaXZlciBjbGVhbnMgdXAgcHJvcGVybHkgd2hlbiB0aGUgZGV2aWNlIGlzIHJlbW92ZWQsIG9yCisgIHRoZSBjb25uZWN0aW9uIGlzIGNhbmNlbGVkIG9uIHRoZSBkZXZpY2UuCisKKyAgTk9URToKKyAgICBUaGlzIG1lYW5zIHRoYXQgaW4gb3JkZXIgdG8gdGFsayB0byB0aGUgZGV2aWNlLCB0aGUgc3luYyBidXR0b24gbXVzdCBiZQorICAgIHByZXNzZWQgQkVGT1JFIHRyeWluZyB0byBnZXQgYW55IHByb2dyYW0gdG8gY29tbXVuaWNhdGUgdG8gdGhlIGRldmljZS4KKyAgICBUaGlzIGdvZXMgYWdhaW5zdCB0aGUgY3VycmVudCBkb2N1bWVudGF0aW9uIGZvciBwaWxvdC14ZmVyIGFuZCBvdGhlcgorICAgIHBhY2thZ2VzLCBidXQgaXMgdGhlIG9ubHkgd2F5IHRoYXQgaXQgd2lsbCB3b3JrIGR1ZSB0byB0aGUgaGFyZHdhcmUKKyAgICBpbiB0aGUgZGV2aWNlLgorICAKKyAgV2hlbiB0aGUgZGV2aWNlIGlzIGNvbm5lY3RlZCwgdHJ5IHRhbGtpbmcgdG8gaXQgb24gdGhlIHNlY29uZCBwb3J0CisgICh0aGlzIGlzIHVzdWFsbHkgL2Rldi90dHlVU0IxIGlmIHlvdSBkbyBub3QgaGF2ZSBhbnkgb3RoZXIgdXNiLXNlcmlhbAorICBkZXZpY2VzIGluIHRoZSBzeXN0ZW0uKSBUaGUgc3lzdGVtIGxvZyBzaG91bGQgdGVsbCB5b3Ugd2hpY2ggcG9ydCBpcworICB0aGUgcG9ydCB0byB1c2UgZm9yIHRoZSBIb3RTeW5jIHRyYW5zZmVyLiBUaGUgIkdlbmVyaWMiIHBvcnQgY2FuIGJlIHVzZWQKKyAgZm9yIG90aGVyIGRldmljZSBjb21tdW5pY2F0aW9uLCBzdWNoIGFzIGEgUFBQIGxpbmsuCisKKyAgRm9yIHNvbWUgU29ueSBDbGnDqSBkZXZpY2VzLCAvZGV2L3R0eVVTQjAgbXVzdCBiZSB1c2VkIHRvIHRhbGsgdG8gdGhlCisgIGRldmljZS4gIFRoaXMgaXMgdHJ1ZSBmb3IgYWxsIE9TIHZlcnNpb24gMy41IGRldmljZXMsIGFuZCBtb3N0IGRldmljZXMKKyAgdGhhdCBoYXZlIGhhZCBhIGZsYXNoIHVwZ3JhZGUgdG8gYSBuZXdlciB2ZXJzaW9uIG9mIHRoZSBPUy4gIFNlZSB0aGUKKyAga2VybmVsIHN5c3RlbSBsb2cgZm9yIGluZm9ybWF0aW9uIG9uIHdoaWNoIGlzIHRoZSBjb3JyZWN0IHBvcnQgdG8gdXNlLgorCisgIElmIGFmdGVyIHByZXNzaW5nIHRoZSBzeW5jIGJ1dHRvbiwgbm90aGluZyBzaG93cyB1cCBpbiB0aGUgc3lzdGVtIGxvZywKKyAgdHJ5IHJlc2V0dGluZyB0aGUgZGV2aWNlLCBmaXJzdCBhIGhvdCByZXNldCwgYW5kIHRoZW4gYSBjb2xkIHJlc2V0IGlmCisgIG5lY2Vzc2FyeS4gIFNvbWUgZGV2aWNlcyBuZWVkIHRoaXMgYmVmb3JlIHRoZXkgY2FuIHRhbGsgdG8gdGhlIFVTQiBwb3J0CisgIHByb3Blcmx5LgorICAKKyAgRGV2aWNlcyB0aGF0IGFyZSBub3QgY29tcGlsZWQgaW50byB0aGUga2VybmVsIGNhbiBiZSBzcGVjaWZpZWQgd2l0aCBtb2R1bGUKKyAgcGFyYW1ldGVycy4gIGUuZy4gbW9kcHJvYmUgdmlzb3IgdmVuZG9yPTB4NTRjIHByb2R1Y3Q9MHg2NgorICAKKyAgVGhlcmUgaXMgYSB3ZWJwYWdlIGFuZCBtYWlsaW5nIGxpc3RzIGZvciB0aGlzIHBvcnRpb24gb2YgdGhlIGRyaXZlciBhdDoKKyAgaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy91c2J2aXNvci8KKworICBGb3IgYW55IHF1ZXN0aW9ucyBvciBwcm9ibGVtcyB3aXRoIHRoaXMgZHJpdmVyLCBwbGVhc2UgY29udGFjdCBHcmVnCisgIEtyb2FoLUhhcnRtYW4gYXQgZ3JlZ0Brcm9haC5jb20KKworCitQb2NrZXRQQyBQREEgRHJpdmVyCisKKyAgVGhpcyBkcml2ZXIgY2FuIGJlIHVzZWQgdG8gY29ubmVjdCB0byBDb21wYXEgaVBBUSwgSFAgSm9ybmFkYSwgQ2FzaW8gRU01MDAKKyAgYW5kIG90aGVyIFBEQXMgcnVubmluZyBXaW5kb3dzIENFIDMuMCBvciBQb2NrZXRQQyAyMDAyIHVzaW5nIGEgVVNCCisgIGNhYmxlL2NyYWRsZS4KKyAgTW9zdCBkZXZpY2VzIHN1cHBvcnRlZCBieSBBY3RpdmVTeW5jIGFyZSBzdXBwb3J0ZWQgb3V0IG9mIHRoZSBib3guCisgIEZvciBvdGhlcnMsIHBsZWFzZSB1c2UgbW9kdWxlIHBhcmFtZXRlcnMgdG8gc3BlY2lmeSB0aGUgcHJvZHVjdCBhbmQgdmVuZG9yCisgIGlkLiBlLmcuIG1vZHByb2JlIGlwYXEgdmVuZG9yPTB4M2YwIHByb2R1Y3Q9MHgxMTI1CisKKyAgVGhlIGRyaXZlciBwcmVzZW50cyBhIHNlcmlhbCBpbnRlcmZhY2UgKHVzdWFsbHkgb24gL2Rldi90dHlVU0IwKSBvdmVyCisgIHdoaWNoIG9uZSBtYXkgcnVuIHBwcCBhbmQgZXN0YWJsaXNoIGEgVENQL0lQIGxpbmsgdG8gdGhlIFBEQS4gT25jZSB0aGlzCisgIGlzIGRvbmUsIHlvdSBjYW4gdHJhbnNmZXIgZmlsZXMsIGJhY2t1cCwgZG93bmxvYWQgZW1haWwgZXRjLiBUaGUgbW9zdAorICBzaWduaWZpY2FudCBhZHZhbnRhZ2Ugb2YgdXNpbmcgVVNCIGlzIHNwZWVkIC0gSSBjYW4gZ2V0IDczIHRvIDExMworICBrYnl0ZXMvc2VjIGZvciBkb3dubG9hZC91cGxvYWQgdG8gbXkgaVBBUS4KKworICBUaGlzIGRyaXZlciBpcyBvbmx5IG9uZSBvZiBhIHNldCBvZiBjb21wb25lbnRzIHJlcXVpcmVkIHRvIHV0aWxpemUKKyAgdGhlIFVTQiBjb25uZWN0aW9uLiBQbGVhc2UgdmlzaXQgaHR0cDovL3N5bmNlLnNvdXJjZWZvcmdlLm5ldCB3aGljaAorICBjb250YWlucyB0aGUgbmVjZXNzYXJ5IHBhY2thZ2VzIGFuZCBhIHNpbXBsZSBzdGVwLWJ5LXN0ZXAgaG93dG8uCisKKyAgT25jZSBjb25uZWN0ZWQsIHlvdSBjYW4gdXNlIFdpbiBDRSBwcm9ncmFtcyBsaWtlIGZ0cFZpZXcsIFBvY2tldCBPdXRsb29rCisgIGZyb20gdGhlIFBEQSBhbmQgeGNlcmRpc3AsIHN5bmNlIHV0aWxpdGllcyBmcm9tIHRoZSBMaW51eCBzaWRlLgorCisgIFRvIHVzZSBQb2NrZXQgSUUsIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGdpdmVuIGF0CisgIGh0dHA6Ly93d3cudGVrZ3VydS5jby51ay9FTTUwMC91c2J0b25ldC5odG0gdG8gYWNoaWV2ZSB0aGUgc2FtZSB0aGluZworICBvbiBXaW45OC4gT21pdCB0aGUgcHJveHkgc2VydmVyIHBhcnQ7IExpbnV4IGlzIHF1aXRlIGNhcGFibGUgb2YgZm9yd2FyZGluZworICBwYWNrZXRzIHVubGlrZSBXaW45OC4gQW5vdGhlciBtb2RpZmljYXRpb24gaXMgcmVxdWlyZWQgYXQgbGVhc3QgZm9yIHRoZQorICBpUEFRIC0gZGlzYWJsZSBhdXRvc3luYyBieSBnb2luZyB0byB0aGUgU3RhcnQvU2V0dGluZ3MvQ29ubmVjdGlvbnMgbWVudQorICBhbmQgdW5jaGVja2luZyB0aGUgIkF1dG9tYXRpY2FsbHkgc3luY2hyb25pemUgLi4uIiBib3guIEdvIHRvCisgIFN0YXJ0L1Byb2dyYW1zL0Nvbm5lY3Rpb25zLCBjb25uZWN0IHRoZSBjYWJsZSBhbmQgc2VsZWN0ICJ1c2JkaWFsIiAob3IKKyAgd2hhdGV2ZXIgeW91IG5hbWVkIHlvdXIgbmV3IFVTQiBjb25uZWN0aW9uKS4gWW91IHNob3VsZCBmaW5hbGx5IHdpbmQKKyAgdXAgd2l0aCBhICJDb25uZWN0ZWQgdG8gdXNiZGlhbCIgd2luZG93IHdpdGggc3RhdHVzIHNob3duIGFzIGNvbm5lY3RlZC4KKyAgTm93IHN0YXJ0IHVwIFBJRSBhbmQgYnJvd3NlIGF3YXkuCisKKyAgSWYgaXQgZG9lc24ndCB3b3JrIGZvciBzb21lIHJlYXNvbiwgbG9hZCBib3RoIHRoZSB1c2JzZXJpYWwgYW5kIGlwYXEgbW9kdWxlCisgIHdpdGggdGhlIG1vZHVsZSBwYXJhbWV0ZXIgImRlYnVnIiBzZXQgdG8gMSBhbmQgZXhhbWluZSB0aGUgc3lzdGVtIGxvZy4KKyAgWW91IGNhbiBhbHNvIHRyeSBzb2Z0LXJlc2V0dGluZyB5b3VyIFBEQSBiZWZvcmUgYXR0ZW1wdGluZyBhIGNvbm5lY3Rpb24uCisKKyAgT3RoZXIgZnVuY3Rpb25hbGl0eSBtYXkgYmUgcG9zc2libGUgZGVwZW5kaW5nIG9uIHlvdXIgUERBLiBBY2NvcmRpbmcgdG8KKyAgV2VzIENpbGxkaGFpcmUgPGJpbGx5Ym9iam9laGVucnlib2JAaG90bWFpbC5jb20+LCB3aXRoIHRoZSBUb3NoaWJhIEU1NzAsCisgIC4uLmlmIHlvdSBib290IGludG8gdGhlIGJvb3Rsb2FkZXIgKGhvbGQgZG93biB0aGUgcG93ZXIgd2hlbiBoaXR0aW5nIHRoZQorICByZXNldCBidXR0b24sIGNvbnRpbnVpbmcgdG8gaG9sZCBvbnRvIHRoZSBwb3dlciB1bnRpbCB0aGUgYm9vdGxvYWRlciBzY3JlZW4KKyAgaXMgZGlzcGxheWVkKSwgdGhlbiBwdXQgaXQgaW4gdGhlIGNyYWRsZSB3aXRoIHRoZSBpcGFxIGRyaXZlciBsb2FkZWQsIG9wZW4KKyAgYSB0ZXJtaW5hbCBvbiAvZGV2L3R0eVVTQjAsIGl0IGdpdmVzIHlvdSBhICJVU0IgUmVmbGFzaCIgdGVybWluYWwsIHdoaWNoIGNhbgorICBiZSB1c2VkIHRvIGZsYXNoIHRoZSBST00sIGFzIHdlbGwgYXMgdGhlIG1pY3JvUCBjb2RlLi4gIHNvIG11Y2ggZm9yIG5lZWRpbmcKKyAgVG9zaGliYSdzICQzNTAgc2VyaWFsIGNhYmxlIGZvciBmbGFzaGluZyEhIDpECisgIE5PVEU6IFRoaXMgaGFzIE5PVCBiZWVuIHRlc3RlZC4gVXNlIGF0IHlvdXIgb3duIHJpc2suCisgCisgIEZvciBhbnkgcXVlc3Rpb25zIG9yIHByb2JsZW1zIHdpdGggdGhlIGRyaXZlciwgcGxlYXNlIGNvbnRhY3QgR2FuZXNoCisgIFZhcmFkYXJhamFuIDxnYW5lc2hAdmVyaXRhcy5jb20+CisKKworS2V5c3BhbiBQREEgU2VyaWFsIEFkYXB0ZXIKKworICBTaW5nbGUgcG9ydCBEQi05IHNlcmlhbCBhZGFwdGVyLCBwdXNoZWQgYXMgYSBQREEgYWRhcHRlciBmb3IgaU1hY3MgKG1vc3RseQorICBzb2xkIGluIE1hY2ludG9zaCBjYXRhbG9ncywgY29tZXMgaW4gYSB0cmFuc2x1Y2VudCB3aGl0ZS9ncmVlbiBkb25nbGUpLgorICBGYWlybHkgc2ltcGxlIGRldmljZS4gRmlybXdhcmUgaXMgaG9tZWJyZXcuCisgIFRoaXMgZHJpdmVyIGFsc28gd29ya3MgZm9yIHRoZSBYaXJjb20vRW50cmVnYSBzaW5nbGUgcG9ydCBzZXJpYWwgYWRhcHRlci4KKworICBDdXJyZW50IHN0YXR1czoKKyAgIFRoaW5ncyB0aGF0IHdvcms6CisgICAgIGJhc2ljIGlucHV0L291dHB1dCAodGVzdGVkIHdpdGggJ2N1JykKKyAgICAgYmxvY2tpbmcgd3JpdGUgd2hlbiBzZXJpYWwgbGluZSBjYW4ndCBrZWVwIHVwCisgICAgIGNoYW5naW5nIGJhdWQgcmF0ZXMgKHVwIHRvIDExNTIwMCkKKyAgICAgZ2V0dGluZy9zZXR0aW5nIG1vZGVtIGNvbnRyb2wgcGlucyAoVElPQ017R0VULFNFVCxCSVMsQklDfSkKKyAgICAgc2VuZGluZyBicmVhayAoYWx0aG91Z2ggZHVyYXRpb24gbG9va3Mgc3VzcGVjdCkKKyAgIFRoaW5ncyB0aGF0IGRvbid0OgorICAgICBkZXZpY2Ugc3RyaW5ncyAoYXMgbG9nZ2VkIGJ5IGtlcm5lbCkgaGF2ZSB0cmFpbGluZyBiaW5hcnkgZ2FyYmFnZQorICAgICBkZXZpY2UgSUQgaXNuJ3QgcmlnaHQsIG1pZ2h0IGNvbGxpZGUgd2l0aCBvdGhlciBLZXlzcGFuIHByb2R1Y3RzCisgICAgIGNoYW5naW5nIGJhdWQgcmF0ZXMgb3VnaHQgdG8gZmx1c2ggdHgvcnggdG8gYXZvaWQgbWFuZ2xlZCBoYWxmIGNoYXJhY3RlcnMKKyAgIEJpZyBUaGluZ3Mgb24gdGhlIHRvZG8gbGlzdDoKKyAgICAgcGFyaXR5LCA3IHZzIDggYml0cyBwZXIgY2hhciwgMSBvciAyIHN0b3AgYml0cworICAgICBIVyBmbG93IGNvbnRyb2wKKyAgICAgbm90IGFsbCBvZiB0aGUgc3RhbmRhcmQgVVNCIGRlc2NyaXB0b3JzIGFyZSBoYW5kbGVkOiBHZXRfU3RhdHVzLCBTZXRfRmVhdHVyZQorICAgICBPX05PTkJMT0NLLCBzZWxlY3QoKQorCisgIEZvciBhbnkgcXVlc3Rpb25zIG9yIHByb2JsZW1zIHdpdGggdGhpcyBkcml2ZXIsIHBsZWFzZSBjb250YWN0IEJyaWFuCisgIFdhcm5lciBhdCB3YXJuZXJAbG90aGFyLmNvbSAKKworCitLZXlzcGFuIFVTQS1zZXJpZXMgU2VyaWFsIEFkYXB0ZXJzCisKKyAgU2luZ2xlLCBEdWFsIGFuZCBRdWFkIHBvcnQgYWRhcHRlcnMgLSBkcml2ZXIgdXNlcyBLZXlzcGFuIHN1cHBsaWVkIAorICBmaXJtd2FyZSBhbmQgaXMgYmVpbmcgZGV2ZWxvcGVkIHdpdGggdGhlaXIgc3VwcG9ydC4KKyAgCisgIEN1cnJlbnQgc3RhdHVzOgorICAgIFRoZSBVU0EtMThYLCBVU0EtMjhYLCBVU0EtMTksIFVTQS0xOVcgYW5kIFVTQS00OVcgYXJlIHN1cHBvcnRlZCBhbmQKKyAgICBoYXZlIGJlZW4gcHJldHR5IHRob3JvdWdobHkgdGVzdGVkIGF0IHZhcmlvdXMgYmF1ZCByYXRlcyB3aXRoIDgtTi0xCisgICAgY2hhcmFjdGVyIHNldHRpbmdzLiAgT3RoZXIgY2hhcmFjdGVyIGxlbmd0aHMgYW5kIHBhcml0eSBzZXR1cHMgYXJlCisgICAgcHJlc2VudGx5IHVudGVzdGVkLgorCisgICAgVGhlIFVTQS0yOCBpc24ndCB5ZXQgc3VwcG9ydGVkIHRob3VnaCBkb2luZyBzbyBzaG91bGQgYmUgcHJldHR5CisgICAgc3RyYWlnaHRmb3J3YXJkLiAgQ29udGFjdCB0aGUgbWFpbnRhaW5lciBpZiB5b3UgcmVxdWlyZSB0aGlzCisgICAgZnVuY3Rpb25hbGl0eS4KKyAgCisgIE1vcmUgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIGF0OgorICAgICAgICBodHRwOi8vd3d3LmNhcm5hdGlvbnNvZnR3YXJlLmNvbS9jYXJuYXRpb24vS2V5c3Bhbi5odG1sCisgICAKKyAgRm9yIGFueSBxdWVzdGlvbnMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzIGRyaXZlciwgcGxlYXNlIGNvbnRhY3QgSHVnaAorICBCbGVtaW5ncyBhdCBodWdoQG1pc2MubnUKKworCitGVERJIFNpbmdsZSBQb3J0IFNlcmlhbCBEcml2ZXIKKworICBUaGlzIGlzIGEgc2luZ2xlIHBvcnQgREItMjUgc2VyaWFsIGFkYXB0ZXIuCisKKyAgRGV2aWNlcyBzdXBwb3J0ZWQgaW5jbHVkZToKKyAgICAgICAgICAgICAgICAtVHJpcE5hdiBUTi0yMDAgVVNCIEdQUworICAgICAgICAgICAgICAgIC1OYXZpcyBFbmdpbmVlcmluZyBCdXJlYXUgQ0gtNDcxMSBVU0IgR1BTCisKKyAgRm9yIGFueSBxdWVzdGlvbnMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzIGRyaXZlciwgcGxlYXNlIGNvbnRhY3QgQmlsbCBSeWRlci4KKworCitaeVhFTCBvbW5pLm5ldCBsY2QgcGx1cyBJU0ROIFRBCisKKyAgVGhpcyBpcyBhbiBJU0ROIFRBLiBQbGVhc2UgcmVwb3J0IGJvdGggc3VjY2Vzc2VzIGFuZCB0cm91YmxlcyB0bworICBhenVtbW9AdG93ZXJ0ZWNoLml0CisKKworQ3lwcmVzcyBNOCBDWTQ2MDEgRmFtaWx5IFNlcmlhbCBEcml2ZXIKKworICBUaGlzIGRyaXZlciB3YXMgaW4gbW9zdCBwYXJ0IGRldmVsb3BlZCBieSBOZWlsICJrb3lhbWEiIFdoZWxjaGVsLiAgSXQKKyAgaGFzIGJlZW4gaW1wcm92ZWQgc2luY2UgdGhhdCBwcmV2aW91cyBmb3JtIHRvIHN1cHBvcnQgZHluYW1pYyBzZXJpYWwKKyAgbGluZSBzZXR0aW5ncyBhbmQgaW1wcm92ZWQgbGluZSBoYW5kbGluZy4gIFRoZSBkcml2ZXIgaXMgZm9yIHRoZSBtb3N0CisgIHBhcnQgc3RhYmxlIGFuZCBoYXMgYmVlbiB0ZXN0ZWQgb24gYW4gc21wIG1hY2hpbmUuIChkdWFsIHAyKQorCisgICAgQ2hpcHNldHMgc3VwcG9ydGVkIHVuZGVyIENZNDYwMSBmYW1pbHk6CisJCisJCUNZN0M2MzcyMywgQ1k3QzYzNzQyLCBDWTdDNjM3NDMsIENZN0M2NDAxMworCisgICAgRGV2aWNlcyBzdXBwb3J0ZWQ6CisKKwkJLURlTG9ybWUncyBVU0IgRWFydGhtYXRlIEdQUyAoU2lSRiBTdGFyIElJIGxwIGFyY2gpCisJCS1DeXByZXNzIEhJRC0+Q09NIFJTMjMyIGFkYXB0ZXIKKwkKKwkJTm90ZTogQ3lwcmVzcyBTZW1pY29uZHVjdG9yIGNsYWltcyBubyBhZmZpbGlhdGlvbiB3aXRoIHRoZQorCQkJaGlkLT5jb20gZGV2aWNlLgorCisJTW9zdCBkZXZpY2VzIHVzaW5nIGNoaXBzZXRzIHVuZGVyIHRoZSBDWTQ2MDEgZmFtaWx5IHNob3VsZAorICAgICB3b3JrIHdpdGggdGhlIGRyaXZlci4gIEFzIGxvbmcgYXMgdGhleSBzdGF5IHRydWUgdG8gdGhlIENZNDYwMQorICAgICB1c2JzZXJpYWwgc3BlY2lmaWNhdGlvbi4KKworICAgIFRlY2huaWNhbCBub3RlczoKKworICAgICAgICBUaGUgRWFydGhtYXRlIHN0YXJ0cyBvdXQgYXQgNDgwMCA4TjEgYnkgZGVmYXVsdC4uLiB0aGUgZHJpdmVyIHdpbGwKKwl1cG9uIHN0YXJ0IGluaXQgdG8gdGhpcyBzZXR0aW5nLiAgdXNic2VyaWFsIGNvcmUgcHJvdmlkZXMgdGhlIHJlc3QKKwlvZiB0aGUgdGVybWlvcyBzZXR0aW5ncywgYWxvbmcgd2l0aCBzb21lIGN1c3RvbSB0ZXJtaW9zIHNvIHRoYXQgdGhlCisJb3V0cHV0IGlzIGluIHByb3BlciBmb3JtYXQgYW5kIHBhcnNhYmxlLgorCQorCVRoZSBkZXZpY2UgY2FuIGJlIHB1dCBpbnRvIHNpcmYgbW9kZSBieSBpc3N1aW5nIE5NRUEgY29tbWFuZDoKKwkJJFBTUkYxMDAsPHByb3RvY29sPiw8YmF1ZD4sPGRhdGFiaXRzPiw8c3RvcGJpdHM+LDxwYXJpdHk+KkNIRUNLU1VNCisJCSRQU1JGMTAwLDAsOTYwMCw4LDEsMCowQworCisJCUl0IHNob3VsZCB0aGVuIGJlIHN1ZmZpY2llbnQgdG8gY2hhbmdlIHRoZSBwb3J0IHRlcm1pb3MgdG8gbWF0Y2ggdGhpcworCQl0byBiZWdpbiBjb21tdW5pY2F0aW5nLgorCisJQXMgZmFyIGFzIEkgY2FuIHRlbGwgaXQgc3VwcG9ydHMgcHJldHR5IG11Y2ggZXZlcnkgc2lyZiBjb21tYW5kIGFzCisJZG9jdW1lbnRlZCBvbmxpbmUgYXZhaWxhYmxlIHdpdGggZmlybXdhcmUgMi4zMSwgd2l0aCBzb21lIHVua25vd24KKwltZXNzYWdlIGlkcy4KKworCVRoZSBoaWQtPmNvbSBhZGFwdGVyIGNhbiBydW4gYXQgYSBtYXhpbXVtIGJhdWQgb2YgMTE1MjAwYnBzLiAgUGxlYXNlIG5vdGUKKwl0aGF0IHRoZSBkZXZpY2UgaGFzIHRyb3VibGUgb3IgaXMgaW5jYXBhYmxlIG9mIHJhaXNpbmcgbGluZSB2b2x0YWdlIHByb3Blcmx5LgorCUl0IHdpbGwgYmUgZmluZSB3aXRoIG51bGwgbW9kZW0gbGlua3MsIGFzIGxvbmcgYXMgeW91IGRvIG5vdCB0cnkgdG8gbGluayB0d28KKwl0b2dldGhlciB3aXRob3V0IGhhY2tpbmcgdGhlIGFkYXB0ZXIgdG8gc2V0IHRoZSBsaW5lIGhpZ2guCisKKwlUaGUgZHJpdmVyIGlzIHNtcCBzYWZlLiAgUGVyZm9ybWFuY2Ugd2l0aCB0aGUgZHJpdmVyIGlzIHJhdGhlciBsb3cgd2hlbiB1c2luZworCWl0IGZvciB0cmFuc2ZlcnJpbmcgZmlsZXMuICBUaGlzIGlzIGJlaW5nIHdvcmtlZCBvbiwgYnV0IEkgd291bGQgYmUgd2lsbGluZyB0bworCWFjY2VwdCBwYXRjaGVzLiAgQW4gdXJiIHF1ZXVlIG9yIHBhY2tldCBidWZmZXIgd291bGQgbGlrZWx5IGZpdCB0aGUgYmlsbCBoZXJlLgorCisJSWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucywgcHJvYmxlbXMsIHBhdGNoZXMsIGZlYXR1cmUgcmVxdWVzdHMsIGV0Yy4geW91IGNhbgorCWNvbnRhY3QgbWUgaGVyZSB2aWEgZW1haWw6CisJCQkJCWRpZ25vbWVAZ21haWwuY29tCisJCSh5b3VyIHByb2JsZW1zL3BhdGNoZXMgY2FuIGFsdGVybmF0ZWx5IGJlIHN1Ym1pdHRlZCB0byB1c2ItZGV2ZWwpCisKKworRGlnaSBBY2NlbGVQb3J0IERyaXZlcgorCisgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBEaWdpIEFjY2VsZVBvcnQgVVNCIDIgYW5kIDQgZGV2aWNlcywgMiBwb3J0CisgIChwbHVzIGEgcGFyYWxsZWwgcG9ydCkgYW5kIDQgcG9ydCBVU0Igc2VyaWFsIGNvbnZlcnRlcnMuICBUaGUgZHJpdmVyCisgIGRvZXMgTk9UIHlldCBzdXBwb3J0IHRoZSBEaWdpIEFjY2VsZVBvcnQgVVNCIDguCisKKyAgVGhpcyBkcml2ZXIgd29ya3MgdW5kZXIgU01QIHdpdGggdGhlIHVzYi11aGNpIGRyaXZlci4gIEl0IGRvZXMgbm90CisgIHdvcmsgdW5kZXIgU01QIHdpdGggdGhlIHVoY2kgZHJpdmVyLgorCisgIFRoZSBkcml2ZXIgaXMgZ2VuZXJhbGx5IHdvcmtpbmcsIHRob3VnaCB3ZSBzdGlsbCBoYXZlIGEgZmV3IG1vcmUgaW9jdGxzCisgIHRvIGltcGxlbWVudCBhbmQgZmluYWwgdGVzdGluZyBhbmQgZGVidWdnaW5nIHRvIGRvLiAgVGhlIHBhcmFsbGVsIHBvcnQKKyAgb24gdGhlIFVTQiAyIGlzIHN1cHBvcnRlZCBhcyBhIHNlcmlhbCB0byBwYXJhbGxlbCBjb252ZXJ0ZXI7IGluIG90aGVyCisgIHdvcmRzLCBpdCBhcHBlYXJzIGFzIGFub3RoZXIgVVNCIHNlcmlhbCBwb3J0IG9uIExpbnV4LCBldmVuIHRob3VnaAorICBwaHlzaWNhbGx5IGl0IGlzIHJlYWxseSBhIHBhcmFsbGVsIHBvcnQuICBUaGUgRGlnaSBBY2NlbGVwb3J0IFVTQiA4CisgIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLgorCisgIFBsZWFzZSBjb250YWN0IFBldGVyIEJlcmdlciAocGJlcmdlckBicmltc29uLmNvbSkgb3IgQWwgQm9yY2hlcnMKKyAgKGFsYm9yY2hlcnNAc3RlaW5lcnBvaW50LmNvbSkgZm9yIHF1ZXN0aW9ucyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKKyAgZHJpdmVyLgorCisKK0JlbGtpbiBVU0IgU2VyaWFsIEFkYXB0ZXIgRjVVMTAzCisKKyAgU2luZ2xlIHBvcnQgREItOS9QUy0yIHNlcmlhbCBhZGFwdGVyIGZyb20gQmVsa2luIHdpdGggZmlybXdhcmUgYnkgZVRFSyBMYWJzLgorICBUaGUgUGVyYWNvbSBzaW5nbGUgcG9ydCBzZXJpYWwgYWRhcHRlciBhbHNvIHdvcmtzIHdpdGggdGhpcyBkcml2ZXIsIGFzCisgIHdlbGwgYXMgdGhlIEdvSHVicyBhZGFwdGVyLgorCisgIEN1cnJlbnQgc3RhdHVzOgorICAgIFRoZSBmb2xsb3dpbmcgaGF2ZSBiZWVuIHRlc3RlZCBhbmQgd29yazoKKyAgICAgIEJhdWQgcmF0ZSAgICAzMDAtMjMwNDAwICAgICAgICAgICAgICAgCisgICAgICBEYXRhIGJpdHMgICAgNS04CisgICAgICBTdG9wIGJpdHMgICAgMS0yCisgICAgICBQYXJpdHkgICAgICAgTixFLE8sTSxTCisgICAgICBIYW5kc2hha2UgICAgTm9uZSwgU29mdHdhcmUgKFhPTi9YT0ZGKSwgSGFyZHdhcmUgKENUU1JUUyxDVFNEVFIpKgorICAgICAgQnJlYWsgICAgICAgIFNldCBhbmQgY2xlYXIKKyAgICAgIExpbmUgY29udHJvbCBJbnB1dC9PdXRwdXQgcXVlcnkgYW5kIGNvbnRyb2wgKioKKworICAgICAgKiAgSGFyZHdhcmUgaW5wdXQgZmxvdyBjb250cm9sIGlzIG9ubHkgZW5hYmxlZCBmb3IgZmlybXdhcmUKKyAgICAgICAgIGxldmVscyBhYm92ZSAyLjA2LiAgUmVhZCBzb3VyY2UgY29kZSBjb21tZW50cyBkZXNjcmliaW5nIEJlbGtpbgorICAgICAgICAgZmlybXdhcmUgZXJyYXRhLiAgSGFyZHdhcmUgb3V0cHV0IGZsb3cgY29udHJvbCBpcyB3b3JraW5nIGZvciBhbGwKKyAgICAgICAgIGZpcm13YXJlIHZlcnNpb25zLgorICAgICAgKiogUXVlcmllcyBvZiBpbnB1dHMgKENUUyxEU1IsQ0QsUkkpIHNob3cgdGhlIGxhc3QKKyAgICAgICAgIHJlcG9ydGVkIHN0YXRlLiAgUXVlcmllcyBvZiBvdXRwdXRzIChEVFIsUlRTKSBzaG93IHRoZSBsYXN0CisgICAgICAgICByZXF1ZXN0ZWQgc3RhdGUgYW5kIG1heSBub3QgcmVmbGVjdCBjdXJyZW50IHN0YXRlIGFzIHNldCBieQorICAgICAgICAgYXV0b21hdGljIGhhcmR3YXJlIGZsb3cgY29udHJvbC4KKworICBUTyBETyBMaXN0OgorICAgIC0tIEFkZCB0cnVlIG1vZGVtIGNvbnRyb2wgbGluZSBxdWVyeSBjYXBhYmlsaXR5LiAgQ3VycmVudGx5IHRyYWNrcyB0aGUKKyAgICAgICBzdGF0ZXMgcmVwb3J0ZWQgYnkgdGhlIGludGVycnVwdCBhbmQgdGhlIHN0YXRlcyByZXF1ZXN0ZWQuCisgICAgLS0gQWRkIGVycm9yIHJlcG9ydGluZyBiYWNrIHRvIGFwcGxpY2F0aW9uIGZvciBVQVJUIGVycm9yIGNvbmRpdGlvbnMuCisgICAgLS0gQWRkIHN1cHBvcnQgZm9yIGZsdXNoIGlvY3Rscy4KKyAgICAtLSBBZGQgZXZlcnl0aGluZyBlbHNlIHRoYXQgaXMgbWlzc2luZyA6KQorCisgIEZvciBhbnkgcXVlc3Rpb25zIG9yIHByb2JsZW1zIHdpdGggdGhpcyBkcml2ZXIsIHBsZWFzZSBjb250YWN0IFdpbGxpYW0KKyAgR3JlYXRob3VzZSBhdCB3Z3JlYXRob3VzZUBzbXZhLmNvbQorCisKK0VtcGVnIGVtcGVnLWNhciBNYXJrIEkvSUkgRHJpdmVyCisKKyAgVGhpcyBpcyBhbiBleHBlcmltZW50YWwgZHJpdmVyIHRvIHByb3ZpZGUgY29ubmVjdGl2aXR5IHN1cHBvcnQgZm9yIHRoZQorICBjbGllbnQgc3luY2hyb25pemF0aW9uIHRvb2xzIGZvciBhbiBFbXBlZyBlbXBlZy1jYXIgbXAzIHBsYXllci4KKworICBUaXBzOgorICAgICogRG9uJ3QgZm9yZ2V0IHRvIGNyZWF0ZSB0aGUgZGV2aWNlIG5vZGVzIGZvciB0dHlVU0J7MCwxLDIsLi4ufQorICAgICogbW9kcHJvYmUgZW1wZWcgKG1vZHByb2JlIGlzIHlvdXIgZnJpZW5kKQorICAgICogZW1wdG9vbCAtLXVzYiAvZGV2L3R0eVVTQjAgKG9yIHdoYXRldmVyIHlvdSBuYW1lZCB5b3VyIGRldmljZSBub2RlKQorCisgIEZvciBhbnkgcXVlc3Rpb25zIG9yIHByb2JsZW1zIHdpdGggdGhpcyBkcml2ZXIsIHBsZWFzZSBjb250YWN0IEdhcnkKKyAgQnJ1YmFrZXIgYXQgeGF2eWVyQGl4Lm5ldGNvbS5jb20KKworCitNQ1QgVVNCIFNpbmdsZSBQb3J0IFNlcmlhbCBBZGFwdGVyIFUyMzIKKworICBUaGlzIGRyaXZlciBpcyBmb3IgdGhlIE1DVCBVU0ItUlMyMzIgQ29udmVydGVyICgyNSBwaW4sIE1vZGVsIE5vLgorICBVMjMyLVAyNSkgZnJvbSBNYWdpYyBDb250cm9sIFRlY2hub2xvZ3kgQ29ycC4gKHRoZXJlIGlzIGFsc28gYSA5IHBpbgorICBNb2RlbCBOby4gVTIzMi1QOSkuIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBkZXZpY2UgY2FuIGJlIGZvdW5kIGF0CisgIHRoZSBtYW51ZmFjdHVyZXIncyB3ZWItc2l0ZTogaHR0cDovL3d3dy5tY3QuY29tLnR3LgorCisgIFRoZSBkcml2ZXIgaXMgZ2VuZXJhbGx5IHdvcmtpbmcsIHRob3VnaCBpdCBzdGlsbCBuZWVkcyBzb21lIG1vcmUgdGVzdGluZy4KKyAgSXQgaXMgZGVyaXZlZCBmcm9tIHRoZSBCZWxraW4gVVNCIFNlcmlhbCBBZGFwdGVyIEY1VTEwMyBkcml2ZXIgYW5kIGl0cworICBUT0RPIGxpc3QgaXMgdmFsaWQgZm9yIHRoaXMgZHJpdmVyIGFzIHdlbGwuCisKKyAgVGhpcyBkcml2ZXIgaGFzIGFsc28gYmVlbiBmb3VuZCB0byB3b3JrIGZvciBvdGhlciBwcm9kdWN0cywgd2hpY2ggaGF2ZQorICB0aGUgc2FtZSBWZW5kb3IgSUQgYnV0IGRpZmZlcmVudCBQcm9kdWN0IElEcy4gU2l0ZWNvbSdzIFUyMzItUDI1IHNlcmlhbAorICBjb252ZXJ0ZXIgdXNlcyBQcm9kdWN0IElEIDB4MjMwIGFuZCBWZW5kb3IgSUQgMHg3MTEgYW5kIHdvcmtzIHdpdGggdGhpcworICBkcml2ZXIuIEFsc28sIEQtTGluaydzIERVLUgzU1AgVVNCIEJBWSBhbHNvIHdvcmtzIHdpdGggdGhpcyBkcml2ZXIuCisKKyAgRm9yIGFueSBxdWVzdGlvbnMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzIGRyaXZlciwgcGxlYXNlIGNvbnRhY3QgV29sZmdhbmcKKyAgR3JhbmRlZ2dlciBhdCB3b2xmZ2FuZ0BjZXMuY2gKKworCitJbnNpZGUgT3V0IE5ldHdvcmtzIEVkZ2Vwb3J0IERyaXZlcgorCisgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIGFsbCBkZXZpY2VzIG1hZGUgYnkgSW5zaWRlIE91dCBOZXR3b3Jrcywgc3BlY2lmaWNhbGx5CisgIHRoZSBmb2xsb3dpbmcgbW9kZWxzOgorICAgICAgIEVkZ2Vwb3J0LzQKKyAgICAgICBSYXBpZHBvcnQvNAorICAgICAgIEVkZ2Vwb3J0LzR0CisgICAgICAgRWRnZXBvcnQvMgorICAgICAgIEVkZ2Vwb3J0LzRpCisgICAgICAgRWRnZXBvcnQvMmkKKyAgICAgICBFZGdlcG9ydC80MjEKKyAgICAgICBFZGdlcG9ydC8yMQorICAgICAgIEVkZ2Vwb3J0LzgKKyAgICAgICBFZGdlcG9ydC84IER1YWwKKyAgICAgICBFZGdlcG9ydC8yRDgKKyAgICAgICBFZGdlcG9ydC80RDgKKyAgICAgICBFZGdlcG9ydC84aQorICAgICAgIEVkZ2Vwb3J0LzIgRElOCisgICAgICAgRWRnZXBvcnQvNCBESU4KKyAgICAgICBFZGdlcG9ydC8xNiBEdWFsCisKKyAgRm9yIGFueSBxdWVzdGlvbnMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzIGRyaXZlciwgcGxlYXNlIGNvbnRhY3QgR3JlZworICBLcm9haC1IYXJ0bWFuIGF0IGdyZWdAa3JvYWguY29tCisKKworUkVJTkVSIFNDVCBjeWJlckphY2sgcGlucGFkL2UtY29tIFVTQiBjaGlwY2FyZCByZWFkZXIKKyAgIAorICBJbnRlcmZhY2UgdG8gSVNPIDc4MTYgY29tcGF0aWJsZSBjb250YWN0YmFzZWQgY2hpcGNhcmRzLCBlLmcuIEdTTSBTSU1zLgorICAKKyAgQ3VycmVudCBzdGF0dXM6CisgICAgVGhpcyBpcyB0aGUga2VybmVsIHBhcnQgb2YgdGhlIGRyaXZlciBmb3IgdGhpcyBVU0IgY2FyZCByZWFkZXIuCisgICAgVGhlcmUgaXMgYWxzbyBhIHVzZXIgcGFydCBmb3IgYSBDVC1BUEkgZHJpdmVyIGF2YWlsYWJsZS4gQSBzaXRlCisgICAgZm9yIGRvd25sb2FkaW5nIGlzIFRCQS4gRm9yIG5vdywgeW91IGNhbiByZXF1ZXN0IGl0IGZyb20gdGhlCisgICAgbWFpbnRhaW5lciAobGludXgtdXNiQHNpaS5saSkuCisKKyAgRm9yIGFueSBxdWVzdGlvbnMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzIGRyaXZlciwgcGxlYXNlIGNvbnRhY3QKKyAgbGludXgtdXNiQHNpaS5saQorCisKK1Byb2xpZmljIFBMMjMwMyBEcml2ZXIKKworICBUaGlzIGRyaXZlciBzdXBwb3J0cyBhbnkgZGV2aWNlIHRoYXQgaGFzIHRoZSBQTDIzMDMgY2hpcCBmcm9tIFByb2xpZmljCisgIGluIGl0LiAgVGhpcyBpbmNsdWRlcyBhIG51bWJlciBvZiBzaW5nbGUgcG9ydCBVU0IgdG8gc2VyaWFsIGNvbnZlcnRlcnMsCisgIG1vcmUgdGhhbiA3MCUgb2YgVVNCIEdQUyBkZXZpY2VzIChpbiAyMDEwKSwgYW5kIHNvbWUgVVNCIFVQU2VzLiBEZXZpY2VzCisgIGZyb20gQXRlbiAodGhlIFVDLTIzMikgYW5kIElPLURhdGEgd29yayB3aXRoIHRoaXMgZHJpdmVyLCBhcyBkb2VzCisgIHRoZSBEQ1UtMTEgbW9iaWxlLXBob25lIGNhYmxlLgorCisgIEZvciBhbnkgcXVlc3Rpb25zIG9yIHByb2JsZW1zIHdpdGggdGhpcyBkcml2ZXIsIHBsZWFzZSBjb250YWN0IEdyZWcKKyAgS3JvYWgtSGFydG1hbiBhdCBncmVnQGtyb2FoLmNvbQorICAKKworS0w1S1VTQjEwNSBjaGlwc2V0IC8gUGFsbUNvbm5lY3QgVVNCIHNpbmdsZS1wb3J0IGFkYXB0ZXIKKyAgCitDdXJyZW50IHN0YXR1czoKKyAgVGhlIGRyaXZlciB3YXMgcHV0IHRvZ2V0aGVyIGJ5IGxvb2tpbmcgYXQgdGhlIHVzYiBidXMgdHJhbnNhY3Rpb25zCisgIGRvbmUgYnkgUGFsbSdzIGRyaXZlciB1bmRlciBXaW5kb3dzLCBzbyBhIGxvdCBvZiBmdW5jdGlvbmFsaXR5IGlzCisgIHN0aWxsIG1pc3NpbmcuICBOb3RhYmx5LCBzZXJpYWwgaW9jdGxzIGFyZSBzb21ldGltZXMgZmFrZWQgb3Igbm90IHlldAorICBpbXBsZW1lbnRlZC4gIFN1cHBvcnQgZm9yIGZpbmRpbmcgb3V0IGFib3V0IERTUiBhbmQgQ1RTIGxpbmUgc3RhdHVzIGlzCisgIGhvd2V2ZXIgaW1wbGVtZW50ZWQgKHRob3VnaCBub3QgbmljZWx5KSwgc28geW91ciBmYXZvcml0ZSBhdXRvcGlsb3QoMSkKKyAgYW5kIHBpbG90LW1hbmFnZXIgLWRhZW1vbiBjYWxscyB3aWxsIHdvcmsuICBCYXVkIHJhdGVzIHVwIHRvIDExNTIwMAorICBhcmUgc3VwcG9ydGVkLCBidXQgaGFuZHNoYWtpbmcgKHNvZnR3YXJlIG9yIGhhcmR3YXJlKSBpcyBub3QsIHdoaWNoIGlzCisgIHdoeSBpdCBpcyB3aXNlIHRvIGN1dCBkb3duIG9uIHRoZSByYXRlIHVzZWQgaXMgd2lzZSBmb3IgbGFyZ2UKKyAgdHJhbnNmZXJzIHVudGlsIHRoaXMgaXMgc2V0dGxlZC4KKyAgCitPcHRpb25zIHN1cHBvcnRlZDoKKyAgSWYgdGhpcyBkcml2ZXIgaXMgY29tcGlsZWQgYXMgYSBtb2R1bGUgeW91IGNhbiBwYXNzIHRoZSBmb2xsb3dpbmcKKyAgb3B0aW9ucyB0byBpdDoKKyAgZGVidWcJCQktIGV4dHJhIHZlcmJvc2UgZGVidWdnaW5nIGluZm8KKyAgCQkJICAoZGVmYXVsdDogMDsgbm9uemVybyBlbmFibGVzKQorICB1c2VfbG93bGF0ZW5jeQktIHVzZSBsb3dfbGF0ZW5jeSBmbGFnIHRvIHNwZWVkIHVwIHR0eSBsYXllcgorCQkJICB3aGVuIHJlYWRpbmcgZnJvbSB0aGUgZGV2aWNlLgorCQkJICAoZGVmYXVsdDogMDsgbm9uemVybyBlbmFibGVzKQorCisgIFNlZSBodHRwOi8vd3d3LnV1aGF1cy5kZS9saW51eC9wYWxtY29ubmVjdC5odG1sIGZvciB1cC10by1kYXRlCisgIGluZm9ybWF0aW9uIG9uIHRoaXMgZHJpdmVyLgorCitXaW5jaGlwaGVhZCBDSDM0MSBEcml2ZXIKKworICBUaGlzIGRyaXZlciBpcyBmb3IgdGhlIFdpbmNoaXBoZWFkIENIMzQxIFVTQi1SUzIzMiBDb252ZXJ0ZXIuIFRoaXMgY2hpcAorICBhbHNvIGltcGxlbWVudHMgYW4gSUVFRSAxMjg0IHBhcmFsbGVsIHBvcnQsIEkyQyBhbmQgU1BJLCBidXQgdGhhdCBpcyBub3QKKyAgc3VwcG9ydGVkIGJ5IHRoZSBkcml2ZXIuIFRoZSBwcm90b2NvbCB3YXMgYW5hbHl6ZWQgZnJvbSB0aGUgYmVoYXZpb3VyCisgIG9mIHRoZSBXaW5kb3dzIGRyaXZlciwgbm8gZGF0YXNoZWV0IGlzIGF2YWlsYWJsZSBhdCBwcmVzZW50LgorICBUaGUgbWFudWZhY3R1cmVyJ3Mgd2Vic2l0ZTogaHR0cDovL3d3dy53aW5jaGlwaGVhZC5jb20vLgorICBGb3IgYW55IHF1ZXN0aW9ucyBvciBwcm9ibGVtcyB3aXRoIHRoaXMgZHJpdmVyLCBwbGVhc2UgY29udGFjdAorICBmcmFua0BraW5nc3dvb2QtY29uc3VsdGluZy5jby51ay4KKworTW9zY2hpcCBNQ1M3NzIwLCBNQ1M3NzE1IGRyaXZlcgorCisgIFRoZXNlIGNoaXBzIGFyZSBwcmVzZW50IGluIGRldmljZXMgc29sZCBieSB2YXJpb3VzIG1hbnVmYWN0dXJlcnMsIHN1Y2ggYXMgU3liYQorICBhbmQgQ2FibGVzIFVubGltaXRlZC4gIFRoZXJlIG1heSBiZSBvdGhlcnMuICBUaGUgNzcyMCBwcm92aWRlcyB0d28gc2VyaWFsCisgIHBvcnRzLCBhbmQgdGhlIDc3MTUgcHJvdmlkZXMgb25lIHNlcmlhbCBhbmQgb25lIHN0YW5kYXJkIFBDIHBhcmFsbGVsIHBvcnQuCisgIFN1cHBvcnQgZm9yIHRoZSA3NzE1J3MgcGFyYWxsZWwgcG9ydCBpcyBlbmFibGVkIGJ5IGEgc2VwYXJhdGUgb3B0aW9uLCB3aGljaAorICB3aWxsIG5vdCBhcHBlYXIgdW5sZXNzIHBhcmFsbGVsIHBvcnQgc3VwcG9ydCBpcyBmaXJzdCBlbmFibGVkIGF0IHRoZSB0b3AtbGV2ZWwKKyAgb2YgdGhlIERldmljZSBEcml2ZXJzIGNvbmZpZyBtZW51LiAgQ3VycmVudGx5IG9ubHkgY29tcGF0aWJpbGl0eSBtb2RlIGlzCisgIHN1cHBvcnRlZCBvbiB0aGUgcGFyYWxsZWwgcG9ydCAobm8gRUNQL0VQUCkuCisKKyAgVE9ETzoKKyAgICAtIEltcGxlbWVudCBFQ1AvRVBQIG1vZGVzIGZvciB0aGUgcGFyYWxsZWwgcG9ydC4KKyAgICAtIEJhdWQgcmF0ZXMgaGlnaGVyIHRoYW4gMTE1MjAwIGFyZSBjdXJyZW50bHkgYnJva2VuLgorICAgIC0gRGV2aWNlcyB3aXRoIGEgc2luZ2xlIHNlcmlhbCBwb3J0IGJhc2VkIG9uIHRoZSBNb3NjaGlwIE1DUzc3MDMgbWF5IHdvcmsKKyAgICAgIHdpdGggdGhpcyBkcml2ZXIgd2l0aCBhIHNpbXBsZSBhZGRpdGlvbiB0byB0aGUgdXNiX2RldmljZV9pZCB0YWJsZS4gIEkKKyAgICAgIGRvbid0IGhhdmUgb25lIG9mIHRoZXNlIGRldmljZXMsIHNvIEkgY2FuJ3Qgc2F5IGZvciBzdXJlLgorCitHZW5lcmljIFNlcmlhbCBkcml2ZXIKKworICBJZiB5b3VyIGRldmljZSBpcyBub3Qgb25lIG9mIHRoZSBhYm92ZSBsaXN0ZWQgZGV2aWNlcywgY29tcGF0aWJsZSB3aXRoCisgIHRoZSBhYm92ZSBtb2RlbHMsIHlvdSBjYW4gdHJ5IG91dCB0aGUgImdlbmVyaWMiIGludGVyZmFjZS4gVGhpcworICBpbnRlcmZhY2UgZG9lcyBub3QgcHJvdmlkZSBhbnkgdHlwZSBvZiBjb250cm9sIG1lc3NhZ2VzIHNlbnQgdG8gdGhlCisgIGRldmljZSwgYW5kIGRvZXMgbm90IHN1cHBvcnQgYW55IGtpbmQgb2YgZGV2aWNlIGZsb3cgY29udHJvbC4gQWxsIHRoYXQKKyAgaXMgcmVxdWlyZWQgb2YgeW91ciBkZXZpY2UgaXMgdGhhdCBpdCBoYXMgYXQgbGVhc3Qgb25lIGJ1bGsgaW4gZW5kcG9pbnQsCisgIG9yIG9uZSBidWxrIG91dCBlbmRwb2ludC4gCisKKyAgVG8gZW5hYmxlIHRoZSBnZW5lcmljIGRyaXZlciB0byByZWNvZ25pemUgeW91ciBkZXZpY2UsIHByb3ZpZGUKKwllY2hvIDx2aWQ+IDxwaWQ+ID4vc3lzL2J1cy91c2Itc2VyaWFsL2RyaXZlcnMvZ2VuZXJpYy9uZXdfaWQKKyAgd2hlcmUgdGhlIDx2aWQ+IGFuZCA8cGlkPiBpcyByZXBsYWNlZCB3aXRoIHRoZSBoZXggcmVwcmVzZW50YXRpb24gb2YgeW91cgorICBkZXZpY2UncyB2ZW5kb3IgaWQgYW5kIHByb2R1Y3QgaWQuCisgIElmIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgYXMgYSBtb2R1bGUgeW91IGNhbiBhbHNvIHByb3ZpZGUgb25lIGlkIHdoZW4KKyAgbG9hZGluZyB0aGUgbW9kdWxlCisJaW5zbW9kIHVzYnNlcmlhbCB2ZW5kb3I9MHgjIyMjIHByb2R1Y3Q9MHgjIyMjCisKKyAgVGhpcyBkcml2ZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHVzZWQgdG8gY29ubmVjdCB0byB0aGUgTmV0Q2hpcCBVU0IKKyAgZGV2ZWxvcG1lbnQgYm9hcmQsIHByb3ZpZGluZyBhIHdheSB0byBkZXZlbG9wIFVTQiBmaXJtd2FyZSB3aXRob3V0CisgIGhhdmluZyB0byB3cml0ZSBhIGN1c3RvbSBkcml2ZXIuCisKKyAgRm9yIGFueSBxdWVzdGlvbnMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzIGRyaXZlciwgcGxlYXNlIGNvbnRhY3QgR3JlZworICBLcm9haC1IYXJ0bWFuIGF0IGdyZWdAa3JvYWguY29tCisKKworQ09OVEFDVDoKKworICBJZiBhbnlvbmUgaGFzIGFueSBwcm9ibGVtcyB1c2luZyB0aGVzZSBkcml2ZXJzLCB3aXRoIGFueSBvZiB0aGUgYWJvdmUKKyAgc3BlY2lmaWVkIHByb2R1Y3RzLCBwbGVhc2UgY29udGFjdCB0aGUgc3BlY2lmaWMgZHJpdmVyJ3MgYXV0aG9yIGxpc3RlZAorICBhYm92ZSwgb3Igam9pbiB0aGUgTGludXgtVVNCIG1haWxpbmcgbGlzdCAoaW5mb3JtYXRpb24gb24gam9pbmluZyB0aGUKKyAgbWFpbGluZyBsaXN0LCBhcyB3ZWxsIGFzIGEgbGluayB0byBpdHMgc2VhcmNoYWJsZSBhcmNoaXZlIGlzIGF0CisgIGh0dHA6Ly93d3cubGludXgtdXNiLm9yZy8gKQorCisKK0dyZWcgS3JvYWgtSGFydG1hbgorZ3JlZ0Brcm9haC5jb20KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNiL3VzYm1vbi50eHQgYi9Eb2N1bWVudGF0aW9uL3VzYi91c2Jtb24udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4NDI1ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3VzYi91c2Jtb24udHh0CkBAIC0wLDAgKzEsMzU1IEBACisqIEludHJvZHVjdGlvbgorCitUaGUgbmFtZSAidXNibW9uIiBpbiBsb3dlcmNhc2UgcmVmZXJzIHRvIGEgZmFjaWxpdHkgaW4ga2VybmVsIHdoaWNoIGlzCit1c2VkIHRvIGNvbGxlY3QgdHJhY2VzIG9mIEkvTyBvbiB0aGUgVVNCIGJ1cy4gVGhpcyBmdW5jdGlvbiBpcyBhbmFsb2dvdXMKK3RvIGEgcGFja2V0IHNvY2tldCB1c2VkIGJ5IG5ldHdvcmsgbW9uaXRvcmluZyB0b29scyBzdWNoIGFzIHRjcGR1bXAoMSkKK29yIEV0aGVyZWFsLiBTaW1pbGFybHksIGl0IGlzIGV4cGVjdGVkIHRoYXQgYSB0b29sIHN1Y2ggYXMgdXNiZHVtcCBvcgorVVNCTW9uICh3aXRoIHVwcGVyY2FzZSBsZXR0ZXJzKSBpcyB1c2VkIHRvIGV4YW1pbmUgcmF3IHRyYWNlcyBwcm9kdWNlZAorYnkgdXNibW9uLgorCitUaGUgdXNibW9uIHJlcG9ydHMgcmVxdWVzdHMgbWFkZSBieSBwZXJpcGhlcmFsLXNwZWNpZmljIGRyaXZlcnMgdG8gSG9zdAorQ29udHJvbGxlciBEcml2ZXJzIChIQ0QpLiBTbywgaWYgSENEIGlzIGJ1Z2d5LCB0aGUgdHJhY2VzIHJlcG9ydGVkIGJ5Cit1c2Jtb24gbWF5IG5vdCBjb3JyZXNwb25kIHRvIGJ1cyB0cmFuc2FjdGlvbnMgcHJlY2lzZWx5LiBUaGlzIGlzIHRoZSBzYW1lCitzaXR1YXRpb24gYXMgd2l0aCB0Y3BkdW1wLgorCitUd28gQVBJcyBhcmUgY3VycmVudGx5IGltcGxlbWVudGVkOiAidGV4dCIgYW5kICJiaW5hcnkiLiBUaGUgYmluYXJ5IEFQSQoraXMgYXZhaWxhYmxlIHRocm91Z2ggYSBjaGFyYWN0ZXIgZGV2aWNlIGluIC9kZXYgbmFtZXNwYWNlIGFuZCBpcyBhbiBBQkkuCitUaGUgdGV4dCBBUEkgaXMgZGVwcmVjYXRlZCBzaW5jZSAyLjYuMzUsIGJ1dCBhdmFpbGFibGUgZm9yIGNvbnZlbmllbmNlLgorCisqIEhvdyB0byB1c2UgdXNibW9uIHRvIGNvbGxlY3QgcmF3IHRleHQgdHJhY2VzCisKK1VubGlrZSB0aGUgcGFja2V0IHNvY2tldCwgdXNibW9uIGhhcyBhbiBpbnRlcmZhY2Ugd2hpY2ggcHJvdmlkZXMgdHJhY2VzCitpbiBhIHRleHQgZm9ybWF0LiBUaGlzIGlzIHVzZWQgZm9yIHR3byBwdXJwb3Nlcy4gRmlyc3QsIGl0IHNlcnZlcyBhcyBhCitjb21tb24gdHJhY2UgZXhjaGFuZ2UgZm9ybWF0IGZvciB0b29scyB3aGlsZSBtb3JlIHNvcGhpc3RpY2F0ZWQgZm9ybWF0cworYXJlIGZpbmFsaXplZC4gU2Vjb25kLCBodW1hbnMgY2FuIHJlYWQgaXQgaW4gY2FzZSB0b29scyBhcmUgbm90IGF2YWlsYWJsZS4KKworVG8gY29sbGVjdCBhIHJhdyB0ZXh0IHRyYWNlLCBleGVjdXRlIGZvbGxvd2luZyBzdGVwcy4KKworMS4gUHJlcGFyZQorCitNb3VudCBkZWJ1Z2ZzIChpdCBoYXMgdG8gYmUgZW5hYmxlZCBpbiB5b3VyIGtlcm5lbCBjb25maWd1cmF0aW9uKSwgYW5kCitsb2FkIHRoZSB1c2Jtb24gbW9kdWxlIChpZiBidWlsdCBhcyBtb2R1bGUpLiBUaGUgc2Vjb25kIHN0ZXAgaXMgc2tpcHBlZAoraWYgdXNibW9uIGlzIGJ1aWx0IGludG8gdGhlIGtlcm5lbC4KKworIyBtb3VudCAtdCBkZWJ1Z2ZzIG5vbmVfZGVidWdzIC9zeXMva2VybmVsL2RlYnVnCisjIG1vZHByb2JlIHVzYm1vbgorIworCitWZXJpZnkgdGhhdCBidXMgc29ja2V0cyBhcmUgcHJlc2VudC4KKworIyBscyAvc3lzL2tlcm5lbC9kZWJ1Zy91c2IvdXNibW9uCiswcyAgMHUgIDFzICAxdCAgMXUgIDJzICAydCAgMnUgIDNzICAzdCAgM3UgIDRzICA0dCAgNHUKKyMKKworTm93IHlvdSBjYW4gY2hvb3NlIHRvIGVpdGhlciB1c2UgdGhlIHNvY2tldCAnMHUnICh0byBjYXB0dXJlIHBhY2tldHMgb24gYWxsCitidXNlcyksIGFuZCBza2lwIHRvIHN0ZXAgIzMsIG9yIGZpbmQgdGhlIGJ1cyB1c2VkIGJ5IHlvdXIgZGV2aWNlIHdpdGggc3RlcCAjMi4KK1RoaXMgYWxsb3dzIHRvIGZpbHRlciBhd2F5IGFubm95aW5nIGRldmljZXMgdGhhdCB0YWxrIGNvbnRpbnVvdXNseS4KKworMi4gRmluZCB3aGljaCBidXMgY29ubmVjdHMgdG8gdGhlIGRlc2lyZWQgZGV2aWNlCisKK1J1biAiY2F0IC9zeXMva2VybmVsL2RlYnVnL3VzYi9kZXZpY2VzIiwgYW5kIGZpbmQgdGhlIFQtbGluZSB3aGljaCBjb3JyZXNwb25kcwordG8gdGhlIGRldmljZS4gVXN1YWxseSB5b3UgZG8gaXQgYnkgbG9va2luZyBmb3IgdGhlIHZlbmRvciBzdHJpbmcuIElmIHlvdSBoYXZlCittYW55IHNpbWlsYXIgZGV2aWNlcywgdW5wbHVnIG9uZSBhbmQgY29tcGFyZSB0aGUgdHdvCisvc3lzL2tlcm5lbC9kZWJ1Zy91c2IvZGV2aWNlcyBvdXRwdXRzLiBUaGUgVC1saW5lIHdpbGwgaGF2ZSBhIGJ1cyBudW1iZXIuCitFeGFtcGxlOgorCitUOiAgQnVzPTAzIExldj0wMSBQcm50PTAxIFBvcnQ9MDAgQ250PTAxIERldiM9ICAyIFNwZD0xMiAgTXhDaD0gMAorRDogIFZlcj0gMS4xMCBDbHM9MDAoPmlmYyApIFN1Yj0wMCBQcm90PTAwIE14UFM9IDggI0NmZ3M9ICAxCitQOiAgVmVuZG9yPTA1NTcgUHJvZElEPTIwMDQgUmV2PSAxLjAwCitTOiAgTWFudWZhY3R1cmVyPUFURU4KK1M6ICBQcm9kdWN0PVVDMTAwS00gVjIuMDAKKworIkJ1cz0wMyIgbWVhbnMgaXQncyBidXMgMy4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBsb29rIGF0IHRoZSBvdXRwdXQgZnJvbQorImxzdXNiIiBhbmQgZ2V0IHRoZSBidXMgbnVtYmVyIGZyb20gdGhlIGFwcHJvcHJpYXRlIGxpbmUuIEV4YW1wbGU6CisKK0J1cyAwMDMgRGV2aWNlIDAwMjogSUQgMDU1NzoyMDA0IEFURU4gVUMxMDBLTSBWMi4wMAorCiszLiBTdGFydCAnY2F0JworCisjIGNhdCAvc3lzL2tlcm5lbC9kZWJ1Zy91c2IvdXNibW9uLzN1ID4gL3RtcC8xLm1vbi5vdXQKKwordG8gbGlzdGVuIG9uIGEgc2luZ2xlIGJ1cywgb3RoZXJ3aXNlLCB0byBsaXN0ZW4gb24gYWxsIGJ1c2VzLCB0eXBlOgorCisjIGNhdCAvc3lzL2tlcm5lbC9kZWJ1Zy91c2IvdXNibW9uLzB1ID4gL3RtcC8xLm1vbi5vdXQKKworVGhpcyBwcm9jZXNzIHdpbGwgcmVhZCB1bnRpbCBpdCBpcyBraWxsZWQuIE5hdHVyYWxseSwgdGhlIG91dHB1dCBjYW4gYmUKK3JlZGlyZWN0ZWQgdG8gYSBkZXNpcmFibGUgbG9jYXRpb24uIFRoaXMgaXMgcHJlZmVycmVkLCBiZWNhdXNlIGl0IGlzIGdvaW5nCit0byBiZSBxdWl0ZSBsb25nLgorCis0LiBQZXJmb3JtIHRoZSBkZXNpcmVkIG9wZXJhdGlvbiBvbiB0aGUgVVNCIGJ1cworCitUaGlzIGlzIHdoZXJlIHlvdSBkbyBzb21ldGhpbmcgdGhhdCBjcmVhdGVzIHRoZSB0cmFmZmljOiBwbHVnIGluIGEgZmxhc2gga2V5LAorY29weSBmaWxlcywgY29udHJvbCBhIHdlYmNhbSwgZXRjLgorCis1LiBLaWxsIGNhdAorCitVc3VhbGx5IGl0J3MgZG9uZSB3aXRoIGEga2V5Ym9hcmQgaW50ZXJydXB0IChDb250cm9sLUMpLgorCitBdCB0aGlzIHBvaW50IHRoZSBvdXRwdXQgZmlsZSAoL3RtcC8xLm1vbi5vdXQgaW4gdGhpcyBleGFtcGxlKSBjYW4gYmUgc2F2ZWQsCitzZW50IGJ5IGUtbWFpbCwgb3IgaW5zcGVjdGVkIHdpdGggYSB0ZXh0IGVkaXRvci4gSW4gdGhlIGxhc3QgY2FzZSBtYWtlIHN1cmUKK3RoYXQgdGhlIGZpbGUgc2l6ZSBpcyBub3QgZXhjZXNzaXZlIGZvciB5b3VyIGZhdm91cml0ZSBlZGl0b3IuCisKKyogUmF3IHRleHQgZGF0YSBmb3JtYXQKKworVHdvIGZvcm1hdHMgYXJlIHN1cHBvcnRlZCBjdXJyZW50bHk6IHRoZSBvcmlnaW5hbCwgb3IgJzF0JyBmb3JtYXQsIGFuZAordGhlICcxdScgZm9ybWF0LiBUaGUgJzF0JyBmb3JtYXQgaXMgZGVwcmVjYXRlZCBpbiBrZXJuZWwgMi42LjIxLiBUaGUgJzF1JworZm9ybWF0IGFkZHMgYSBmZXcgZmllbGRzLCBzdWNoIGFzIElTTyBmcmFtZSBkZXNjcmlwdG9ycywgaW50ZXJ2YWwsIGV0Yy4KK0l0IHByb2R1Y2VzIHNsaWdodGx5IGxvbmdlciBsaW5lcywgYnV0IG90aGVyd2lzZSBpcyBhIHBlcmZlY3Qgc3VwZXJzZXQKK29mICcxdCcgZm9ybWF0LgorCitJZiBpdCBpcyBkZXNpcmVkIHRvIHJlY29nbml6ZSBvbmUgZnJvbSB0aGUgb3RoZXIgaW4gYSBwcm9ncmFtLCBsb29rIGF0IHRoZQorImFkZHJlc3MiIHdvcmQgKHNlZSBiZWxvdyksIHdoZXJlICcxdScgZm9ybWF0IGFkZHMgYSBidXMgbnVtYmVyLiBJZiAyIGNvbG9ucworYXJlIHByZXNlbnQsIGl0J3MgdGhlICcxdCcgZm9ybWF0LCBvdGhlcndpc2UgJzF1Jy4KKworQW55IHRleHQgZm9ybWF0IGRhdGEgY29uc2lzdHMgb2YgYSBzdHJlYW0gb2YgZXZlbnRzLCBzdWNoIGFzIFVSQiBzdWJtaXNzaW9uLAorVVJCIGNhbGxiYWNrLCBzdWJtaXNzaW9uIGVycm9yLiBFdmVyeSBldmVudCBpcyBhIHRleHQgbGluZSwgd2hpY2ggY29uc2lzdHMKK29mIHdoaXRlc3BhY2Ugc2VwYXJhdGVkIHdvcmRzLiBUaGUgbnVtYmVyIG9yIHBvc2l0aW9uIG9mIHdvcmRzIG1heSBkZXBlbmQKK29uIHRoZSBldmVudCB0eXBlLCBidXQgdGhlcmUgaXMgYSBzZXQgb2Ygd29yZHMsIGNvbW1vbiBmb3IgYWxsIHR5cGVzLgorCitIZXJlIGlzIHRoZSBsaXN0IG9mIHdvcmRzLCBmcm9tIGxlZnQgdG8gcmlnaHQ6CisKKy0gVVJCIFRhZy4gVGhpcyBpcyB1c2VkIHRvIGlkZW50aWZ5IFVSQnMsIGFuZCBpcyBub3JtYWxseSBhbiBpbi1rZXJuZWwgYWRkcmVzcworICBvZiB0aGUgVVJCIHN0cnVjdHVyZSBpbiBoZXhhZGVjaW1hbCwgYnV0IGNhbiBiZSBhIHNlcXVlbmNlIG51bWJlciBvciBhbnkKKyAgb3RoZXIgdW5pcXVlIHN0cmluZywgd2l0aGluIHJlYXNvbi4KKworLSBUaW1lc3RhbXAgaW4gbWljcm9zZWNvbmRzLCBhIGRlY2ltYWwgbnVtYmVyLiBUaGUgdGltZXN0YW1wJ3MgcmVzb2x1dGlvbgorICBkZXBlbmRzIG9uIGF2YWlsYWJsZSBjbG9jaywgYW5kIHNvIGl0IGNhbiBiZSBtdWNoIHdvcnNlIHRoYW4gYSBtaWNyb3NlY29uZAorICAoaWYgdGhlIGltcGxlbWVudGF0aW9uIHVzZXMgamlmZmllcywgZm9yIGV4YW1wbGUpLgorCistIEV2ZW50IFR5cGUuIFRoaXMgdHlwZSByZWZlcnMgdG8gdGhlIGZvcm1hdCBvZiB0aGUgZXZlbnQsIG5vdCBVUkIgdHlwZS4KKyAgQXZhaWxhYmxlIHR5cGVzIGFyZTogUyAtIHN1Ym1pc3Npb24sIEMgLSBjYWxsYmFjaywgRSAtIHN1Ym1pc3Npb24gZXJyb3IuCisKKy0gIkFkZHJlc3MiIHdvcmQgKGZvcm1lcmx5IGEgInBpcGUiKS4gSXQgY29uc2lzdHMgb2YgZm91ciBmaWVsZHMsIHNlcGFyYXRlZCBieQorICBjb2xvbnM6IFVSQiB0eXBlIGFuZCBkaXJlY3Rpb24sIEJ1cyBudW1iZXIsIERldmljZSBhZGRyZXNzLCBFbmRwb2ludCBudW1iZXIuCisgIFR5cGUgYW5kIGRpcmVjdGlvbiBhcmUgZW5jb2RlZCB3aXRoIHR3byBieXRlcyBpbiB0aGUgZm9sbG93aW5nIG1hbm5lcjoKKyAgICBDaSBDbyAgIENvbnRyb2wgaW5wdXQgYW5kIG91dHB1dAorICAgIFppIFpvICAgSXNvY2hyb25vdXMgaW5wdXQgYW5kIG91dHB1dAorICAgIElpIElvICAgSW50ZXJydXB0IGlucHV0IGFuZCBvdXRwdXQKKyAgICBCaSBCbyAgIEJ1bGsgaW5wdXQgYW5kIG91dHB1dAorICBCdXMgbnVtYmVyLCBEZXZpY2UgYWRkcmVzcywgYW5kIEVuZHBvaW50IGFyZSBkZWNpbWFsIG51bWJlcnMsIGJ1dCB0aGV5IG1heQorICBoYXZlIGxlYWRpbmcgemVyb3MsIGZvciB0aGUgc2FrZSBvZiBodW1hbiByZWFkZXJzLgorCistIFVSQiBTdGF0dXMgd29yZC4gVGhpcyBpcyBlaXRoZXIgYSBsZXR0ZXIsIG9yIHNldmVyYWwgbnVtYmVycyBzZXBhcmF0ZWQKKyAgYnkgY29sb25zOiBVUkIgc3RhdHVzLCBpbnRlcnZhbCwgc3RhcnQgZnJhbWUsIGFuZCBlcnJvciBjb3VudC4gVW5saWtlIHRoZQorICAiYWRkcmVzcyIgd29yZCwgYWxsIGZpZWxkcyBzYXZlIHRoZSBzdGF0dXMgYXJlIG9wdGlvbmFsLiBJbnRlcnZhbCBpcyBwcmludGVkCisgIG9ubHkgZm9yIGludGVycnVwdCBhbmQgaXNvY2hyb25vdXMgVVJCcy4gU3RhcnQgZnJhbWUgaXMgcHJpbnRlZCBvbmx5IGZvcgorICBpc29jaHJvbm91cyBVUkJzLiBFcnJvciBjb3VudCBpcyBwcmludGVkIG9ubHkgZm9yIGlzb2Nocm9ub3VzIGNhbGxiYWNrCisgIGV2ZW50cy4KKworICBUaGUgc3RhdHVzIGZpZWxkIGlzIGEgZGVjaW1hbCBudW1iZXIsIHNvbWV0aW1lcyBuZWdhdGl2ZSwgd2hpY2ggcmVwcmVzZW50cworICBhICJzdGF0dXMiIGZpZWxkIG9mIHRoZSBVUkIuIFRoaXMgZmllbGQgbWFrZXMgbm8gc2Vuc2UgZm9yIHN1Ym1pc3Npb25zLCBidXQKKyAgaXMgcHJlc2VudCBhbnl3YXkgdG8gaGVscCBzY3JpcHRzIHdpdGggcGFyc2luZy4gV2hlbiBhbiBlcnJvciBvY2N1cnMsIHRoZQorICBmaWVsZCBjb250YWlucyB0aGUgZXJyb3IgY29kZS4KKworICBJbiBjYXNlIG9mIGEgc3VibWlzc2lvbiBvZiBhIENvbnRyb2wgcGFja2V0LCB0aGlzIGZpZWxkIGNvbnRhaW5zIGEgU2V0dXAgVGFnCisgIGluc3RlYWQgb2YgYW4gZ3JvdXAgb2YgbnVtYmVycy4gSXQgaXMgZWFzeSB0byB0ZWxsIHdoZXRoZXIgdGhlIFNldHVwIFRhZyBpcworICBwcmVzZW50IGJlY2F1c2UgaXQgaXMgbmV2ZXIgYSBudW1iZXIuIFRodXMgaWYgc2NyaXB0cyBmaW5kIGEgc2V0IG9mIG51bWJlcnMKKyAgaW4gdGhpcyB3b3JkLCB0aGV5IHByb2NlZWQgdG8gcmVhZCBEYXRhIExlbmd0aCAoZXhjZXB0IGZvciBpc29jaHJvbm91cyBVUkJzKS4KKyAgSWYgdGhleSBmaW5kIHNvbWV0aGluZyBlbHNlLCBsaWtlIGEgbGV0dGVyLCB0aGV5IHJlYWQgdGhlIHNldHVwIHBhY2tldCBiZWZvcmUKKyAgcmVhZGluZyB0aGUgRGF0YSBMZW5ndGggb3IgaXNvY2hyb25vdXMgZGVzY3JpcHRvcnMuCisKKy0gU2V0dXAgcGFja2V0LCBpZiBwcmVzZW50LCBjb25zaXN0cyBvZiA1IHdvcmRzOiBvbmUgb2YgZWFjaCBmb3IgYm1SZXF1ZXN0VHlwZSwKKyAgYlJlcXVlc3QsIHdWYWx1ZSwgd0luZGV4LCB3TGVuZ3RoLCBhcyBzcGVjaWZpZWQgYnkgdGhlIFVTQiBTcGVjaWZpY2F0aW9uIDIuMC4KKyAgVGhlc2Ugd29yZHMgYXJlIHNhZmUgdG8gZGVjb2RlIGlmIFNldHVwIFRhZyB3YXMgJ3MnLiBPdGhlcndpc2UsIHRoZSBzZXR1cAorICBwYWNrZXQgd2FzIHByZXNlbnQsIGJ1dCBub3QgY2FwdHVyZWQsIGFuZCB0aGUgZmllbGRzIGNvbnRhaW4gZmlsbGVyLgorCistIE51bWJlciBvZiBpc29jaHJvbm91cyBmcmFtZSBkZXNjcmlwdG9ycyBhbmQgZGVzY3JpcHRvcnMgdGhlbXNlbHZlcy4KKyAgSWYgYW4gSXNvY2hyb25vdXMgdHJhbnNmZXIgZXZlbnQgaGFzIGEgc2V0IG9mIGRlc2NyaXB0b3JzLCBhIHRvdGFsIG51bWJlcgorICBvZiB0aGVtIGluIGFuIFVSQiBpcyBwcmludGVkIGZpcnN0LCB0aGVuIGEgd29yZCBwZXIgZGVzY3JpcHRvciwgdXAgdG8gYQorICB0b3RhbCBvZiA1LiBUaGUgd29yZCBjb25zaXN0cyBvZiAzIGNvbG9uLXNlcGFyYXRlZCBkZWNpbWFsIG51bWJlcnMgZm9yCisgIHN0YXR1cywgb2Zmc2V0LCBhbmQgbGVuZ3RoIHJlc3BlY3RpdmVseS4gRm9yIHN1Ym1pc3Npb25zLCBpbml0aWFsIGxlbmd0aAorICBpcyByZXBvcnRlZC4gRm9yIGNhbGxiYWNrcywgYWN0dWFsIGxlbmd0aCBpcyByZXBvcnRlZC4KKworLSBEYXRhIExlbmd0aC4gRm9yIHN1Ym1pc3Npb25zLCB0aGlzIGlzIHRoZSByZXF1ZXN0ZWQgbGVuZ3RoLiBGb3IgY2FsbGJhY2tzLAorICB0aGlzIGlzIHRoZSBhY3R1YWwgbGVuZ3RoLgorCistIERhdGEgdGFnLiBUaGUgdXNibW9uIG1heSBub3QgYWx3YXlzIGNhcHR1cmUgZGF0YSwgZXZlbiBpZiBsZW5ndGggaXMgbm9uemVyby4KKyAgVGhlIGRhdGEgd29yZHMgYXJlIHByZXNlbnQgb25seSBpZiB0aGlzIHRhZyBpcyAnPScuCisKKy0gRGF0YSB3b3JkcyBmb2xsb3csIGluIGJpZyBlbmRpYW4gaGV4YWRlY2ltYWwgZm9ybWF0LiBOb3RpY2UgdGhhdCB0aGV5IGFyZQorICBub3QgbWFjaGluZSB3b3JkcywgYnV0IHJlYWxseSBqdXN0IGEgYnl0ZSBzdHJlYW0gc3BsaXQgaW50byB3b3JkcyB0byBtYWtlCisgIGl0IGVhc2llciB0byByZWFkLiBUaHVzLCB0aGUgbGFzdCB3b3JkIG1heSBjb250YWluIGZyb20gb25lIHRvIGZvdXIgYnl0ZXMuCisgIFRoZSBsZW5ndGggb2YgY29sbGVjdGVkIGRhdGEgaXMgbGltaXRlZCBhbmQgY2FuIGJlIGxlc3MgdGhhbiB0aGUgZGF0YSBsZW5ndGgKKyAgcmVwb3J0ZWQgaW4gdGhlIERhdGEgTGVuZ3RoIHdvcmQuIEluIHRoZSBjYXNlIG9mIGFuIElzb2Nocm9ub3VzIGlucHV0IChaaSkKKyAgY29tcGxldGlvbiB3aGVyZSB0aGUgcmVjZWl2ZWQgZGF0YSBpcyBzcGFyc2UgaW4gdGhlIGJ1ZmZlciwgdGhlIGxlbmd0aCBvZgorICB0aGUgY29sbGVjdGVkIGRhdGEgY2FuIGJlIGdyZWF0ZXIgdGhhbiB0aGUgRGF0YSBMZW5ndGggdmFsdWUgKGJlY2F1c2UgRGF0YQorICBMZW5ndGggY291bnRzIG9ubHkgdGhlIGJ5dGVzIHRoYXQgd2VyZSByZWNlaXZlZCB3aGVyZWFzIHRoZSBEYXRhIHdvcmRzCisgIGNvbnRhaW4gdGhlIGVudGlyZSB0cmFuc2ZlciBidWZmZXIpLgorCitFeGFtcGxlczoKKworQW4gaW5wdXQgY29udHJvbCB0cmFuc2ZlciB0byBnZXQgYSBwb3J0IHN0YXR1cy4KKworZDVlYTg5YTAgMzU3NTkxNDU1NSBTIENpOjE6MDAxOjAgcyBhMyAwMCAwMDAwIDAwMDMgMDAwNCA0IDwKK2Q1ZWE4OWEwIDM1NzU5MTQ1NjAgQyBDaToxOjAwMTowIDAgNCA9IDAxMDUwMDAwCisKK0FuIG91dHB1dCBidWxrIHRyYW5zZmVyIHRvIHNlbmQgYSBTQ1NJIGNvbW1hbmQgMHgyOCAoUkVBRF8xMCkgaW4gYSAzMS1ieXRlCitCdWxrIHdyYXBwZXIgdG8gYSBzdG9yYWdlIGRldmljZSBhdCBhZGRyZXNzIDU6CisKK2RkNjVmMGU4IDQxMjgzNzk3NTIgUyBCbzoxOjAwNToyIC0xMTUgMzEgPSA1NTUzNDI0MyBhZDAwMDAwMCAwMDgwMDAwMCA4MDAxMGEyOCAyMDAwMDAwMCAyMDAwMDA0MCAwMDAwMDAwMCAwMDAwMDAKK2RkNjVmMGU4IDQxMjgzNzk4MDggQyBCbzoxOjAwNToyIDAgMzEgPgorCisqIFJhdyBiaW5hcnkgZm9ybWF0IGFuZCBBUEkKKworVGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIG9mIHRoZSBBUEkgaXMgYWJvdXQgdGhlIHNhbWUgYXMgdGhlIG9uZSBhYm92ZSwKK29ubHkgdGhlIGV2ZW50cyBhcmUgZGVsaXZlcmVkIGluIGJpbmFyeSBmb3JtYXQuIEVhY2ggZXZlbnQgaXMgc2VudCBpbgordGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgKGl0cyBuYW1lIGlzIG1hZGUgdXAsIHNvIHRoYXQgd2UgY2FuIHJlZmVyIHRvIGl0KToKKworc3RydWN0IHVzYm1vbl9wYWNrZXQgeworCXU2NCBpZDsJCQkvKiAgMDogVVJCIElEIC0gZnJvbSBzdWJtaXNzaW9uIHRvIGNhbGxiYWNrICovCisJdW5zaWduZWQgY2hhciB0eXBlOwkvKiAgODogU2FtZSBhcyB0ZXh0OyBleHRlbnNpYmxlLiAqLworCXVuc2lnbmVkIGNoYXIgeGZlcl90eXBlOyAvKiAgICBJU08gKDApLCBJbnRyLCBDb250cm9sLCBCdWxrICgzKSAqLworCXVuc2lnbmVkIGNoYXIgZXBudW07CS8qICAgICBFbmRwb2ludCBudW1iZXIgYW5kIHRyYW5zZmVyIGRpcmVjdGlvbiAqLworCXVuc2lnbmVkIGNoYXIgZGV2bnVtOwkvKiAgICAgRGV2aWNlIGFkZHJlc3MgKi8KKwl1MTYgYnVzbnVtOwkJLyogMTI6IEJ1cyBudW1iZXIgKi8KKwljaGFyIGZsYWdfc2V0dXA7CS8qIDE0OiBTYW1lIGFzIHRleHQgKi8KKwljaGFyIGZsYWdfZGF0YTsJCS8qIDE1OiBTYW1lIGFzIHRleHQ7IEJpbmFyeSB6ZXJvIGlzIE9LLiAqLworCXM2NCB0c19zZWM7CQkvKiAxNjogZ2V0dGltZW9mZGF5ICovCisJczMyIHRzX3VzZWM7CQkvKiAyNDogZ2V0dGltZW9mZGF5ICovCisJaW50IHN0YXR1czsJCS8qIDI4OiAqLworCXVuc2lnbmVkIGludCBsZW5ndGg7CS8qIDMyOiBMZW5ndGggb2YgZGF0YSAoc3VibWl0dGVkIG9yIGFjdHVhbCkgKi8KKwl1bnNpZ25lZCBpbnQgbGVuX2NhcDsJLyogMzY6IERlbGl2ZXJlZCBsZW5ndGggKi8KKwl1bmlvbiB7CQkJLyogNDA6ICovCisJCXVuc2lnbmVkIGNoYXIgc2V0dXBbU0VUVVBfTEVOXTsJLyogT25seSBmb3IgQ29udHJvbCBTLXR5cGUgKi8KKwkJc3RydWN0IGlzb19yZWMgewkJLyogT25seSBmb3IgSVNPICovCisJCQlpbnQgZXJyb3JfY291bnQ7CisJCQlpbnQgbnVtZGVzYzsKKwkJfSBpc287CisJfSBzOworCWludCBpbnRlcnZhbDsJCS8qIDQ4OiBPbmx5IGZvciBJbnRlcnJ1cHQgYW5kIElTTyAqLworCWludCBzdGFydF9mcmFtZTsJLyogNTI6IEZvciBJU08gKi8KKwl1bnNpZ25lZCBpbnQgeGZlcl9mbGFnczsgLyogNTY6IGNvcHkgb2YgVVJCJ3MgdHJhbnNmZXJfZmxhZ3MgKi8KKwl1bnNpZ25lZCBpbnQgbmRlc2M7CS8qIDYwOiBBY3R1YWwgbnVtYmVyIG9mIElTTyBkZXNjcmlwdG9ycyAqLworfTsJCQkJLyogNjQgdG90YWwgbGVuZ3RoICovCisKK1RoZXNlIGV2ZW50cyBjYW4gYmUgcmVjZWl2ZWQgZnJvbSBhIGNoYXJhY3RlciBkZXZpY2UgYnkgcmVhZGluZyB3aXRoIHJlYWQoMiksCit3aXRoIGFuIGlvY3RsKDIpLCBvciBieSBhY2Nlc3NpbmcgdGhlIGJ1ZmZlciB3aXRoIG1tYXAuIEhvd2V2ZXIsIHJlYWQoMikKK29ubHkgcmV0dXJucyBmaXJzdCA0OCBieXRlcyBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLgorCitUaGUgY2hhcmFjdGVyIGRldmljZSBpcyB1c3VhbGx5IGNhbGxlZCAvZGV2L3VzYm1vbk4sIHdoZXJlIE4gaXMgdGhlIFVTQiBidXMKK251bWJlci4gTnVtYmVyIHplcm8gKC9kZXYvdXNibW9uMCkgaXMgc3BlY2lhbCBhbmQgbWVhbnMgImFsbCBidXNlcyIuCitOb3RlIHRoYXQgc3BlY2lmaWMgbmFtaW5nIHBvbGljeSBpcyBzZXQgYnkgeW91ciBMaW51eCBkaXN0cmlidXRpb24uCisKK0lmIHlvdSBjcmVhdGUgL2Rldi91c2Jtb24wIGJ5IGhhbmQsIG1ha2Ugc3VyZSB0aGF0IGl0IGlzIG93bmVkIGJ5IHJvb3QKK2FuZCBoYXMgbW9kZSAwNjAwLiBPdGhlcndpc2UsIHVucHJpdmlsZWdlZCB1c2VycyB3aWxsIGJlIGFibGUgdG8gc25vb3AKK2tleWJvYXJkIHRyYWZmaWMuCisKK1RoZSBmb2xsb3dpbmcgaW9jdGwgY2FsbHMgYXJlIGF2YWlsYWJsZSwgd2l0aCBNT05fSU9DX01BR0lDIDB4OTI6CisKKyBNT05fSU9DUV9VUkJfTEVOLCBkZWZpbmVkIGFzIF9JTyhNT05fSU9DX01BR0lDLCAxKQorCitUaGlzIGNhbGwgcmV0dXJucyB0aGUgbGVuZ3RoIG9mIGRhdGEgaW4gdGhlIG5leHQgZXZlbnQuIE5vdGUgdGhhdCBtYWpvcml0eSBvZgorZXZlbnRzIGNvbnRhaW4gbm8gZGF0YSwgc28gaWYgdGhpcyBjYWxsIHJldHVybnMgemVybywgaXQgZG9lcyBub3QgbWVhbiB0aGF0CitubyBldmVudHMgYXJlIGF2YWlsYWJsZS4KKworIE1PTl9JT0NHX1NUQVRTLCBkZWZpbmVkIGFzIF9JT1IoTU9OX0lPQ19NQUdJQywgMywgc3RydWN0IG1vbl9iaW5fc3RhdHMpCisKK1RoZSBhcmd1bWVudCBpcyBhIHBvaW50ZXIgdG8gdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6CisKK3N0cnVjdCBtb25fYmluX3N0YXRzIHsKKwl1MzIgcXVldWVkOworCXUzMiBkcm9wcGVkOworfTsKKworVGhlIG1lbWJlciAicXVldWVkIiByZWZlcnMgdG8gdGhlIG51bWJlciBvZiBldmVudHMgY3VycmVudGx5IHF1ZXVlZCBpbiB0aGUKK2J1ZmZlciAoYW5kIG5vdCB0byB0aGUgbnVtYmVyIG9mIGV2ZW50cyBwcm9jZXNzZWQgc2luY2UgdGhlIGxhc3QgcmVzZXQpLgorCitUaGUgbWVtYmVyICJkcm9wcGVkIiBpcyB0aGUgbnVtYmVyIG9mIGV2ZW50cyBsb3N0IHNpbmNlIHRoZSBsYXN0IGNhbGwKK3RvIE1PTl9JT0NHX1NUQVRTLgorCisgTU9OX0lPQ1RfUklOR19TSVpFLCBkZWZpbmVkIGFzIF9JTyhNT05fSU9DX01BR0lDLCA0KQorCitUaGlzIGNhbGwgc2V0cyB0aGUgYnVmZmVyIHNpemUuIFRoZSBhcmd1bWVudCBpcyB0aGUgc2l6ZSBpbiBieXRlcy4KK1RoZSBzaXplIG1heSBiZSByb3VuZGVkIGRvd24gdG8gdGhlIG5leHQgY2h1bmsgKG9yIHBhZ2UpLiBJZiB0aGUgcmVxdWVzdGVkCitzaXplIGlzIG91dCBvZiBbdW5zcGVjaWZpZWRdIGJvdW5kcyBmb3IgdGhpcyBrZXJuZWwsIHRoZSBjYWxsIGZhaWxzIHdpdGgKKy1FSU5WQUwuCisKKyBNT05fSU9DUV9SSU5HX1NJWkUsIGRlZmluZWQgYXMgX0lPKE1PTl9JT0NfTUFHSUMsIDUpCisKK1RoaXMgY2FsbCByZXR1cm5zIHRoZSBjdXJyZW50IHNpemUgb2YgdGhlIGJ1ZmZlciBpbiBieXRlcy4KKworIE1PTl9JT0NYX0dFVCwgZGVmaW5lZCBhcyBfSU9XKE1PTl9JT0NfTUFHSUMsIDYsIHN0cnVjdCBtb25fZ2V0X2FyZykKKyBNT05fSU9DWF9HRVRYLCBkZWZpbmVkIGFzIF9JT1coTU9OX0lPQ19NQUdJQywgMTAsIHN0cnVjdCBtb25fZ2V0X2FyZykKKworVGhlc2UgY2FsbHMgd2FpdCBmb3IgZXZlbnRzIHRvIGFycml2ZSBpZiBub25lIHdlcmUgaW4gdGhlIGtlcm5lbCBidWZmZXIsCit0aGVuIHJldHVybiB0aGUgZmlyc3QgZXZlbnQuIFRoZSBhcmd1bWVudCBpcyBhIHBvaW50ZXIgdG8gdGhlIGZvbGxvd2luZworc3RydWN0dXJlOgorCitzdHJ1Y3QgbW9uX2dldF9hcmcgeworCXN0cnVjdCB1c2Jtb25fcGFja2V0ICpoZHI7CisJdm9pZCAqZGF0YTsKKwlzaXplX3QgYWxsb2M7CQkvKiBMZW5ndGggb2YgZGF0YSAoY2FuIGJlIHplcm8pICovCit9OworCitCZWZvcmUgdGhlIGNhbGwsIGhkciwgZGF0YSwgYW5kIGFsbG9jIHNob3VsZCBiZSBmaWxsZWQuIFVwb24gcmV0dXJuLCB0aGUgYXJlYQorcG9pbnRlZCBieSBoZHIgY29udGFpbnMgdGhlIG5leHQgZXZlbnQgc3RydWN0dXJlLCBhbmQgdGhlIGRhdGEgYnVmZmVyIGNvbnRhaW5zCit0aGUgZGF0YSwgaWYgYW55LiBUaGUgZXZlbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBrZXJuZWwgYnVmZmVyLgorCitUaGUgTU9OX0lPQ1hfR0VUIGNvcGllcyA0OCBieXRlcyB0byBoZHIgYXJlYSwgTU9OX0lPQ1hfR0VUWCBjb3BpZXMgNjQgYnl0ZXMuCisKKyBNT05fSU9DWF9NRkVUQ0gsIGRlZmluZWQgYXMgX0lPV1IoTU9OX0lPQ19NQUdJQywgNywgc3RydWN0IG1vbl9tZmV0Y2hfYXJnKQorCitUaGlzIGlvY3RsIGlzIHByaW1hcmlseSB1c2VkIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGFjY2Vzc2VzIHRoZSBidWZmZXIKK3dpdGggbW1hcCgyKS4gSXRzIGFyZ3VtZW50IGlzIGEgcG9pbnRlciB0byB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKKworc3RydWN0IG1vbl9tZmV0Y2hfYXJnIHsKKwl1aW50MzJfdCAqb2ZmdmVjOwkvKiBWZWN0b3Igb2YgZXZlbnRzIGZldGNoZWQgKi8KKwl1aW50MzJfdCBuZmV0Y2g7CS8qIE51bWJlciBvZiBldmVudHMgdG8gZmV0Y2ggKG91dDogZmV0Y2hlZCkgKi8KKwl1aW50MzJfdCBuZmx1c2g7CS8qIE51bWJlciBvZiBldmVudHMgdG8gZmx1c2ggKi8KK307CisKK1RoZSBpb2N0bCBvcGVyYXRlcyBpbiAzIHN0YWdlcy4KKworRmlyc3QsIGl0IHJlbW92ZXMgYW5kIGRpc2NhcmRzIHVwIHRvIG5mbHVzaCBldmVudHMgZnJvbSB0aGUga2VybmVsIGJ1ZmZlci4KK1RoZSBhY3R1YWwgbnVtYmVyIG9mIGV2ZW50cyBkaXNjYXJkZWQgaXMgcmV0dXJuZWQgaW4gbmZsdXNoLgorCitTZWNvbmQsIGl0IHdhaXRzIGZvciBhbiBldmVudCB0byBiZSBwcmVzZW50IGluIHRoZSBidWZmZXIsIHVubGVzcyB0aGUgcHNldWRvLQorZGV2aWNlIGlzIG9wZW4gd2l0aCBPX05PTkJMT0NLLgorCitUaGlyZCwgaXQgZXh0cmFjdHMgdXAgdG8gbmZldGNoIG9mZnNldHMgaW50byB0aGUgbW1hcCBidWZmZXIsIGFuZCBzdG9yZXMKK3RoZW0gaW50byB0aGUgb2ZmdmVjLiBUaGUgYWN0dWFsIG51bWJlciBvZiBldmVudCBvZmZzZXRzIGlzIHN0b3JlZCBpbnRvCit0aGUgbmZldGNoLgorCisgTU9OX0lPQ0hfTUZMVVNILCBkZWZpbmVkIGFzIF9JTyhNT05fSU9DX01BR0lDLCA4KQorCitUaGlzIGNhbGwgcmVtb3ZlcyBhIG51bWJlciBvZiBldmVudHMgZnJvbSB0aGUga2VybmVsIGJ1ZmZlci4gSXRzIGFyZ3VtZW50CitpcyB0aGUgbnVtYmVyIG9mIGV2ZW50cyB0byByZW1vdmUuIElmIHRoZSBidWZmZXIgY29udGFpbnMgZmV3ZXIgZXZlbnRzCit0aGFuIHJlcXVlc3RlZCwgYWxsIGV2ZW50cyBwcmVzZW50IGFyZSByZW1vdmVkLCBhbmQgbm8gZXJyb3IgaXMgcmVwb3J0ZWQuCitUaGlzIHdvcmtzIHdoZW4gbm8gZXZlbnRzIGFyZSBhdmFpbGFibGUgdG9vLgorCisgRklPTkJJTworCitUaGUgaW9jdGwgRklPTkJJTyBtYXkgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIGZ1dHVyZSwgaWYgdGhlcmUncyBhIG5lZWQuCisKK0luIGFkZGl0aW9uIHRvIGlvY3RsKDIpIGFuZCByZWFkKDIpLCB0aGUgc3BlY2lhbCBmaWxlIG9mIGJpbmFyeSBBUEkgY2FuCitiZSBwb2xsZWQgd2l0aCBzZWxlY3QoMikgYW5kIHBvbGwoMikuIEJ1dCBsc2VlaygyKSBkb2VzIG5vdCB3b3JrLgorCisqIE1lbW9yeS1tYXBwZWQgYWNjZXNzIG9mIHRoZSBrZXJuZWwgYnVmZmVyIGZvciB0aGUgYmluYXJ5IEFQSQorCitUaGUgYmFzaWMgaWRlYSBpcyBzaW1wbGU6CisKK1RvIHByZXBhcmUsIG1hcCB0aGUgYnVmZmVyIGJ5IGdldHRpbmcgdGhlIGN1cnJlbnQgc2l6ZSwgdGhlbiB1c2luZyBtbWFwKDIpLgorVGhlbiwgZXhlY3V0ZSBhIGxvb3Agc2ltaWxhciB0byB0aGUgb25lIHdyaXR0ZW4gaW4gcHNldWRvLWNvZGUgYmVsb3c6CisKKyAgIHN0cnVjdCBtb25fbWZldGNoX2FyZyBmZXRjaDsKKyAgIHN0cnVjdCB1c2Jtb25fcGFja2V0ICpoZHI7CisgICBpbnQgbmZsdXNoID0gMDsKKyAgIGZvciAoOzspIHsKKyAgICAgIGZldGNoLm9mZnZlYyA9IHZlYzsgLy8gSGFzIE4gMzItYml0IHdvcmRzCisgICAgICBmZXRjaC5uZmV0Y2ggPSBOOyAgIC8vIE9yIGxlc3MgdGhhbiBOCisgICAgICBmZXRjaC5uZmx1c2ggPSBuZmx1c2g7CisgICAgICBpb2N0bChmZCwgTU9OX0lPQ1hfTUZFVENILCAmZmV0Y2gpOyAgIC8vIFByb2Nlc3MgZXJyb3JzLCB0b28KKyAgICAgIG5mbHVzaCA9IGZldGNoLm5mZXRjaDsgICAgICAgLy8gVGhpcyBtYW55IHBhY2tldHMgdG8gZmx1c2ggd2hlbiBkb25lCisgICAgICBmb3IgKGkgPSAwOyBpIDwgbmZsdXNoOyBpKyspIHsKKyAgICAgICAgIGhkciA9IChzdHJ1Y3QgdWJzbW9uX3BhY2tldCAqKSAmbW1hcF9hcmVhW3ZlY1tpXV07CisgICAgICAgICBpZiAoaGRyLT50eXBlID09ICdAJykgICAgIC8vIEZpbGxlciBwYWNrZXQKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgY2FkZHJfdCBkYXRhID0gJm1tYXBfYXJlYVt2ZWNbaV1dICsgNjQ7CisgICAgICAgICBwcm9jZXNzX3BhY2tldChoZHIsIGRhdGEpOworICAgICAgfQorICAgfQorCitUaHVzLCB0aGUgbWFpbiBpZGVhIGlzIHRvIGV4ZWN1dGUgb25seSBvbmUgaW9jdGwgcGVyIE4gZXZlbnRzLgorCitBbHRob3VnaCB0aGUgYnVmZmVyIGlzIGNpcmN1bGFyLCB0aGUgcmV0dXJuZWQgaGVhZGVycyBhbmQgZGF0YSBkbyBub3QgY3Jvc3MKK3RoZSBlbmQgb2YgdGhlIGJ1ZmZlciwgc28gdGhlIGFib3ZlIHBzZXVkby1jb2RlIGRvZXMgbm90IG5lZWQgYW55IGdhdGhlcmluZy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNiL3d1c2ItY2JhZiBiL0RvY3VtZW50YXRpb24vdXNiL3d1c2ItY2JhZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjNkNDNlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi91c2Ivd3VzYi1jYmFmCkBAIC0wLDAgKzEsMTMwIEBACisjISAvYmluL2Jhc2gKKyMKKworc2V0IC1lCisKK3Byb2duYW1lPSQoYmFzZW5hbWUgJDApCitmdW5jdGlvbiBoZWxwCit7CisgICAgY2F0IDw8RU9GCitVc2FnZTogJHByb2duYW1lIENPTU1BTkQgREVWSUNFcyBbQVJHU10KKworQ29tbWFuZCBmb3IgbWFuaXB1bGF0aW5nIHRoZSBwYWlyaW5nL2F1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzIG9mIGEKK1dpcmVsZXNzIFVTQiBkZXZpY2UgdGhhdCBzdXBwb3J0cyB3aXJlZC1tb2RlIENhYmxlLUJhc2VkLUFzc29jaWF0aW9uLgorCitXb3JrcyBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSB3dXNiLWNiYS5rbyBkcml2ZXIgZnJvbSBodHRwOi8vbGludXh1d2Iub3JnLgorCisKK0RFVklDRQorCisgc3lzZnMgcGF0aCB0byB0aGUgZGV2aWNlIHRvIGF1dGhlbnRpY2F0ZTsgZm9yIGV4YW1wbGUsIGJvdGggdGhpcworIGd1eXMgYXJlIHRoZSBzYW1lOgorCisgL3N5cy9kZXZpY2VzL3BjaTAwMDA6MDAvMDAwMDowMDoxZC43L3VzYjEvMS00LzEtNC40LzEtNC40OjEuMQorIC9zeXMvYnVzL3VzYi9kcml2ZXJzL3d1c2ItY2JhZi8xLTQuNDoxLjEKKworQ09NTUFORC9BUkdTIGFyZQorCisgc3RhcnQKKworICAgU3RhcnQgYSBXVVNCIGhvc3QgY29udHJvbGxlciAoYnkgc2V0dGluZyB1cCBhIENISUQpCisKKyBzZXQtY2hpZCBERVZJQ0UgSE9TVC1DSElEIEhPU1QtQkFOREdST1VQIEhPU1QtTkFNRQorCisgICBTZXRzIGhvc3QgaW5mb3JtYXRpb24gaW4gdGhlIGRldmljZTsgYWZ0ZXIgdGhpcyB5b3UgY2FuIGNhbGwgdGhlCisgICBnZXQtY2RpZCB0byBzZWUgaG93IGRvZXMgdGhpcyBkZXZpY2UgcmVwb3J0IGl0c2VsZiB0byB1cy4KKworIGdldC1jZGlkIERFVklDRQorCisgICBHZXQgdGhlIGRldmljZSBJRCBhc3NvY2lhdGVkIHRvIHRoZSBIT1NULUNISUQgd2Ugc2VudCB3aXRoCisgICAnc2V0LWNoaWQnLiBXZSBtaWdodCBub3Qga25vdyBhYm91dCBpdC4KKworIHNldC1jYyBERVZJQ0UKKworICAgSWYgd2UgYWxsb3cgdGhlIGRldmljZSB0byBjb25uZWN0LCBzZXQgYSByYW5kb20gbmV3IENESUQgYW5kIENLCisgICAoY29ubmVjdGlvbiBrZXkpLiBEZXZpY2Ugc2F2ZXMgdGhlbSBmb3IgdGhlIG5leHQgdGltZSBpdCB3YW50cyB0bworICAgY29ubmVjdCB3aXJlbGVzcy4gV2Ugc2F2ZSB0aGVtIGZvciB0aGF0IG5leHQgdGltZSBhbHNvIHNvIHdlIGNhbgorICAgYXV0aGVudGljYXRlIHRoZSBkZXZpY2UgKHdoZW4gd2Ugc2VlIHRoZSBDRElEIGhlIHVzZXMgdG8gaWQKKyAgIGl0c2VsZikgYW5kIHRoZSBDSyB0byBjcnlwdG8gdGFsayB0byBpdC4KKworQ0hJRCBpcyBhbHdheXMgMTYgaGV4IGJ5dGVzIGluICdYWCBZWSBaWi4uLicgZm9ybQorQkFOREdST1VQIGlzIGFsbW9zdCBhbHdheXMgMDAwMQorCitFeGFtcGxlczoKKworICBZb3UgY2FuIGRlZmF1bHQgbW9zdCBhcmd1bWVudHMgdG8gJycgdG8gZ2V0IGEgc2FuZSB2YWx1ZToKKworICAkICRwcm9nbmFtZSBzZXQtY2hpZCAnJyAnJyAnJyAiTXkgaG9zdCBuYW1lIgorCisgIEEgZnVsbCBzZXF1ZW5jZToKKworICAkICRwcm9nbmFtZSBzZXQtY2hpZCAnJyAnJyAnJyAiTXkgaG9zdCBuYW1lIgorICAkICRwcm9nbmFtZSBnZXQtY2RpZCAnJworICAkICRwcm9nbmFtZSBzZXQtY2MgJycKKworRU9GCit9CisKKworIyBEZWZhdWx0cworIyBGSVhNRTogQ0hJRCBzaG91bGQgY29tZSBmcm9tIGEgZGF0YWJhc2UgOiksIGJhbmQgZ3JvdXAgZnJvbSB0aGUgaG9zdAoraG9zdF9DSElEPSIwMCAxMSAyMiAzMyA0NCA1NSA2NiA3NyA4OCA5OSBhYSBiYiBjYyBkZCBlZSBmZiIKK2hvc3RfYmFuZF9ncm91cD0iMDAwMSIKK2hvc3RfbmFtZT0kKGhvc3RuYW1lKQorCitkZXZzPSIkKGVjaG8gL3N5cy9idXMvdXNiL2RyaXZlcnMvd3VzYi1jYmFmL1swLTldKikiCitoZGV2cz0iJChmb3IgaCBpbiAvc3lzL2NsYXNzL3V3Yl9yYy8qL3d1c2JoYzsgZG8gcmVhZGxpbmsgLWYgJGg7IGRvbmUpIgorCityZXN1bHQ9MAorY2FzZSAkMSBpbgorICAgIHN0YXJ0KQorICAgICAgICBmb3IgZGV2IGluICR7MjotJGhkZXZzfQorICAgICAgICAgIGRvCisgICAgICAgICAgZWNobyAkaG9zdF9DSElEID4gJGRldi93dXNiX2NoaWQKKyAgICAgICAgICBlY2hvIEk6IHN0YXJ0ZWQgaG9zdCAkKGJhc2VuYW1lICRkZXYpID4mMgorICAgICAgICBkb25lCisgICAgICAgIDs7CisgICAgc3RvcCkKKyAgICAgICAgZm9yIGRldiBpbiAkezI6LSRoZGV2c30KKyAgICAgICAgICBkbworICAgICAgICAgIGVjaG8gMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgPiAkZGV2L3d1c2JfY2hpZAorICAgICAgICAgIGVjaG8gSTogc3RvcHBlZCBob3N0ICQoYmFzZW5hbWUgJGRldikgPiYyCisgICAgICAgIGRvbmUKKyAgICAgICAgOzsKKyAgICBzZXQtY2hpZCkKKyAgICAgICAgc2hpZnQKKyAgICAgICAgZm9yIGRldiBpbiAkezI6LSRkZXZzfTsgZG8KKyAgICAgICAgICAgIGVjaG8gIiR7NDotJGhvc3RfbmFtZX0iID4gJGRldi93dXNiX2hvc3RfbmFtZQorICAgICAgICAgICAgZWNobyAiJHszOi0kaG9zdF9iYW5kX2dyb3VwfSIgPiAkZGV2L3d1c2JfaG9zdF9iYW5kX2dyb3VwcworICAgICAgICAgICAgZWNobyAkezI6LSRob3N0X0NISUR9ID4gJGRldi93dXNiX2NoaWQKKyAgICAgICAgZG9uZQorICAgICAgICA7OworICAgIGdldC1jZGlkKQorICAgICAgICBmb3IgZGV2IGluICR7MjotJGRldnN9CisgICAgICAgICAgZG8KKyAgICAgICAgICBjYXQgJGRldi93dXNiX2NkaWQKKyAgICAgICAgZG9uZQorICAgICAgICA7OworICAgIHNldC1jYykKKyAgICAgICAgZm9yIGRldiBpbiAkezI6LSRkZXZzfTsgZG8KKyAgICAgICAgICAgIHNoaWZ0CisgICAgICAgICAgICBDRElEPSIkKGhlYWQgLS1ieXRlcz0xNiAvZGV2L3VyYW5kb20gIHwgb2QgLXR4MSAtQW4pIgorICAgICAgICAgICAgQ0s9IiQoaGVhZCAtLWJ5dGVzPTE2IC9kZXYvdXJhbmRvbSAgfCBvZCAtdHgxIC1BbikiCisgICAgICAgICAgICBlY2hvICIkQ0RJRCIgPiAkZGV2L3d1c2JfY2RpZAorICAgICAgICAgICAgZWNobyAiJENLIiA+ICRkZXYvd3VzYl9jaworCisgICAgICAgICAgICBlY2hvIEk6IENDIHNldCA+JjIKKyAgICAgICAgICAgIGVjaG8gIkNISUQ6ICQoY2F0ICRkZXYvd3VzYl9jaGlkKSIKKyAgICAgICAgICAgIGVjaG8gIkNESUQ6JENESUQiCisgICAgICAgICAgICBlY2hvICJDSzogICRDSyIKKyAgICAgICAgZG9uZQorICAgICAgICA7OworICAgIGhlbHB8aHwtLWhlbHB8LWgpCisgICAgICAgIGhlbHAKKyAgICAgICAgOzsKKyAgICAqKQorICAgICAgICBlY2hvICJFOiBVbmtub3duIHVzYWdlIiAxPiYyCisgICAgICAgIGhlbHAgMT4mMgorICAgICAgICByZXN1bHQ9MQorZXNhYworZXhpdCAkcmVzdWx0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZEU08vLmdpdGlnbm9yZSBiL0RvY3VtZW50YXRpb24vdkRTTy8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzM2JmOWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZEU08vLmdpdGlnbm9yZQpAQCAtMCwwICsxLDIgQEAKK3Zkc29fdGVzdAordmRzb19zdGFuZGFsb25lX3Rlc3RfeDg2CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZEU08vTWFrZWZpbGUgYi9Eb2N1bWVudGF0aW9uL3ZEU08vTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEyZTk4NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdkRTTy9NYWtlZmlsZQpAQCAtMCwwICsxLDE3IEBACitpZm5kZWYgQ1JPU1NfQ09NUElMRQorIyB2ZHNvX3Rlc3Qgd29uJ3QgYnVpbGQgZm9yIGdsaWJjIDwgMi4xNiwgc28gZGlzYWJsZSBpdAorIyBob3N0cHJvZ3MteSA6PSB2ZHNvX3Rlc3QKK2hvc3Rwcm9ncy0kKENPTkZJR19YODYpIDo9IHZkc29fc3RhbmRhbG9uZV90ZXN0X3g4NgordmRzb19zdGFuZGFsb25lX3Rlc3RfeDg2LW9ianMgOj0gdmRzb19zdGFuZGFsb25lX3Rlc3RfeDg2Lm8gcGFyc2VfdmRzby5vCit2ZHNvX3Rlc3Qtb2JqcyA6PSBwYXJzZV92ZHNvLm8gdmRzb190ZXN0Lm8KKworIyBUZWxsIGtidWlsZCB0byBhbHdheXMgYnVpbGQgdGhlIHByb2dyYW1zCithbHdheXMgOj0gJChob3N0cHJvZ3MteSkKKworSE9TVENGTEFHUyA6PSAtSSQob2JqdHJlZSkvdXNyL2luY2x1ZGUgLXN0ZD1nbnU5OQorSE9TVENGTEFHU192ZHNvX3N0YW5kYWxvbmVfdGVzdF94ODYubyA6PSAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIC1mbm8tc3RhY2stcHJvdGVjdG9yCitIT1NUTE9BRExJQkVTX3Zkc29fc3RhbmRhbG9uZV90ZXN0X3g4NiA6PSAtbm9zdGRsaWIKK2lmZXEgKCQoQ09ORklHX1g4Nl8zMikseSkKK0hPU1RMT0FETElCRVNfdmRzb19zdGFuZGFsb25lX3Rlc3RfeDg2ICs9IC1sZ2NjX3MKK2VuZGlmCitlbmRpZgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92RFNPL3BhcnNlX3Zkc28uYyBiL0RvY3VtZW50YXRpb24vdkRTTy9wYXJzZV92ZHNvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRiYjRiOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdkRTTy9wYXJzZV92ZHNvLmMKQEAgLTAsMCArMSwyNjkgQEAKKy8qCisgKiBwYXJzZV92ZHNvLmM6IExpbnV4IHJlZmVyZW5jZSB2RFNPIHBhcnNlcgorICogV3JpdHRlbiBieSBBbmRyZXcgTHV0b21pcnNraSwgMjAxMS0yMDE0LgorICoKKyAqIFRoaXMgY29kZSBpcyBtZWFudCB0byBiZSBsaW5rZWQgaW4gdG8gdmFyaW91cyBwcm9ncmFtcyB0aGF0IHJ1biBvbiBMaW51eC4KKyAqIEFzIHN1Y2gsIGl0IGlzIGF2YWlsYWJsZSB3aXRoIGFzIGZldyByZXN0cmljdGlvbnMgYXMgcG9zc2libGUuICBUaGlzIGZpbGUKKyAqIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBDcmVhdGl2ZSBDb21tb25zIFplcm8gTGljZW5zZSwgdmVyc2lvbiAxLjAsCisgKiBhdmFpbGFibGUgYXQgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wL2xlZ2FsY29kZQorICoKKyAqIFRoZSB2RFNPIGlzIGEgcmVndWxhciBFTEYgRFNPIHRoYXQgdGhlIGtlcm5lbCBtYXBzIGludG8gdXNlciBzcGFjZSB3aGVuCisgKiBpdCBzdGFydHMgYSBwcm9ncmFtLiAgSXQgd29ya3MgZXF1YWxseSB3ZWxsIGluIHN0YXRpY2FsbHkgYW5kIGR5bmFtaWNhbGx5CisgKiBsaW5rZWQgYmluYXJpZXMuCisgKgorICogVGhpcyBjb2RlIGlzIHRlc3RlZCBvbiB4ODYuICBJbiBwcmluY2lwbGUgaXQgc2hvdWxkIHdvcmsgb24gYW55CisgKiBhcmNoaXRlY3R1cmUgdGhhdCBoYXMgYSB2RFNPLgorICovCisKKyNpbmNsdWRlIDxzdGRib29sLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8ZWxmLmg+CisKKy8qCisgKiBUbyB1c2UgdGhpcyB2RFNPIHBhcnNlciwgZmlyc3QgY2FsbCBvbmUgb2YgdGhlIHZkc29faW5pdF8qIGZ1bmN0aW9ucy4KKyAqIElmIHlvdSd2ZSBhbHJlYWR5IHBhcnNlZCBhdXh2LCB0aGVuIHBhc3MgdGhlIHZhbHVlIG9mIEFUX1NZU0lORk9fRUhEUgorICogdG8gdmRzb19pbml0X2Zyb21fc3lzaW5mb19laGRyLiAgT3RoZXJ3aXNlIHBhc3MgYXV4diB0byB2ZHNvX2luaXRfZnJvbV9hdXh2LgorICogVGhlbiBjYWxsIHZkc29fc3ltIGZvciBlYWNoIHN5bWJvbCB5b3Ugd2FudC4gIEZvciBleGFtcGxlLCB0byBsb29rIHVwCisgKiBnZXR0aW1lb2ZkYXkgb24geDg2XzY0LCB1c2U6CisgKgorICogICAgIDxzb21lIHBvaW50ZXI+ID0gdmRzb19zeW0oIkxJTlVYXzIuNiIsICJnZXR0aW1lb2ZkYXkiKTsKKyAqIG9yCisgKiAgICAgPHNvbWUgcG9pbnRlcj4gPSB2ZHNvX3N5bSgiTElOVVhfMi42IiwgIl9fdmRzb19nZXR0aW1lb2ZkYXkiKTsKKyAqCisgKiB2ZHNvX3N5bSB3aWxsIHJldHVybiAwIGlmIHRoZSBzeW1ib2wgZG9lc24ndCBleGlzdCBvciBpZiB0aGUgaW5pdCBmdW5jdGlvbgorICogZmFpbGVkIG9yIHdhcyBub3QgY2FsbGVkLiAgdmRzb19zeW0gaXMgYSBsaXR0bGUgc2xvdywgc28gaXRzIHJldHVybiB2YWx1ZQorICogc2hvdWxkIGJlIGNhY2hlZC4KKyAqCisgKiB2ZHNvX3N5bSBpcyB0aHJlYWRzYWZlOyB0aGUgaW5pdCBmdW5jdGlvbnMgYXJlIG5vdC4KKyAqCisgKiBUaGVzZSBhcmUgdGhlIHByb3RvdHlwZXM6CisgKi8KK2V4dGVybiB2b2lkIHZkc29faW5pdF9mcm9tX2F1eHYodm9pZCAqYXV4dik7CitleHRlcm4gdm9pZCB2ZHNvX2luaXRfZnJvbV9zeXNpbmZvX2VoZHIodWludHB0cl90IGJhc2UpOworZXh0ZXJuIHZvaWQgKnZkc29fc3ltKGNvbnN0IGNoYXIgKnZlcnNpb24sIGNvbnN0IGNoYXIgKm5hbWUpOworCisKKy8qIEFuZCBoZXJlJ3MgdGhlIGNvZGUuICovCisjaWZuZGVmIEVMRl9CSVRTCisjIGlmIFVMT05HX01BWCA+IDB4ZmZmZmZmZmZVTAorIyAgZGVmaW5lIEVMRl9CSVRTIDY0CisjIGVsc2UKKyMgIGRlZmluZSBFTEZfQklUUyAzMgorIyBlbmRpZgorI2VuZGlmCisKKyNkZWZpbmUgRUxGX0JJVFNfWEZPUk0yKGJpdHMsIHgpIEVsZiMjYml0cyMjXyMjeAorI2RlZmluZSBFTEZfQklUU19YRk9STShiaXRzLCB4KSBFTEZfQklUU19YRk9STTIoYml0cywgeCkKKyNkZWZpbmUgRUxGKHgpIEVMRl9CSVRTX1hGT1JNKEVMRl9CSVRTLCB4KQorCitzdGF0aWMgc3RydWN0IHZkc29faW5mbworeworCWJvb2wgdmFsaWQ7CisKKwkvKiBMb2FkIGluZm9ybWF0aW9uICovCisJdWludHB0cl90IGxvYWRfYWRkcjsKKwl1aW50cHRyX3QgbG9hZF9vZmZzZXQ7ICAvKiBsb2FkX2FkZHIgLSByZWNvcmRlZCB2YWRkciAqLworCisJLyogU3ltYm9sIHRhYmxlICovCisJRUxGKFN5bSkgKnN5bXRhYjsKKwljb25zdCBjaGFyICpzeW1zdHJpbmdzOworCUVMRihXb3JkKSAqYnVja2V0LCAqY2hhaW47CisJRUxGKFdvcmQpIG5idWNrZXQsIG5jaGFpbjsKKworCS8qIFZlcnNpb24gdGFibGUgKi8KKwlFTEYoVmVyc3ltKSAqdmVyc3ltOworCUVMRihWZXJkZWYpICp2ZXJkZWY7Cit9IHZkc29faW5mbzsKKworLyogU3RyYWlnaHQgZnJvbSB0aGUgRUxGIHNwZWNpZmljYXRpb24uICovCitzdGF0aWMgdW5zaWduZWQgbG9uZyBlbGZfaGFzaChjb25zdCB1bnNpZ25lZCBjaGFyICpuYW1lKQoreworCXVuc2lnbmVkIGxvbmcgaCA9IDAsIGc7CisJd2hpbGUgKCpuYW1lKQorCXsKKwkJaCA9IChoIDw8IDQpICsgKm5hbWUrKzsKKwkJaWYgKGcgPSBoICYgMHhmMDAwMDAwMCkKKwkJCWggXj0gZyA+PiAyNDsKKwkJaCAmPSB+ZzsKKwl9CisJcmV0dXJuIGg7Cit9CisKK3ZvaWQgdmRzb19pbml0X2Zyb21fc3lzaW5mb19laGRyKHVpbnRwdHJfdCBiYXNlKQoreworCXNpemVfdCBpOworCWJvb2wgZm91bmRfdmFkZHIgPSBmYWxzZTsKKworCXZkc29faW5mby52YWxpZCA9IGZhbHNlOworCisJdmRzb19pbmZvLmxvYWRfYWRkciA9IGJhc2U7CisKKwlFTEYoRWhkcikgKmhkciA9IChFTEYoRWhkcikqKWJhc2U7CisJaWYgKGhkci0+ZV9pZGVudFtFSV9DTEFTU10gIT0KKwkgICAgKEVMRl9CSVRTID09IDMyID8gRUxGQ0xBU1MzMiA6IEVMRkNMQVNTNjQpKSB7CisJCXJldHVybjsgIC8qIFdyb25nIEVMRiBjbGFzcyAtLSBjaGVjayBFTEZfQklUUyAqLworCX0KKworCUVMRihQaGRyKSAqcHQgPSAoRUxGKFBoZHIpKikodmRzb19pbmZvLmxvYWRfYWRkciArIGhkci0+ZV9waG9mZik7CisJRUxGKER5bikgKmR5biA9IDA7CisKKwkvKgorCSAqIFdlIG5lZWQgdHdvIHRoaW5ncyBmcm9tIHRoZSBzZWdtZW50IHRhYmxlOiB0aGUgbG9hZCBvZmZzZXQKKwkgKiBhbmQgdGhlIGR5bmFtaWMgdGFibGUuCisJICovCisJZm9yIChpID0gMDsgaSA8IGhkci0+ZV9waG51bTsgaSsrKQorCXsKKwkJaWYgKHB0W2ldLnBfdHlwZSA9PSBQVF9MT0FEICYmICFmb3VuZF92YWRkcikgeworCQkJZm91bmRfdmFkZHIgPSB0cnVlOworCQkJdmRzb19pbmZvLmxvYWRfb2Zmc2V0ID0JYmFzZQorCQkJCSsgKHVpbnRwdHJfdClwdFtpXS5wX29mZnNldAorCQkJCS0gKHVpbnRwdHJfdClwdFtpXS5wX3ZhZGRyOworCQl9IGVsc2UgaWYgKHB0W2ldLnBfdHlwZSA9PSBQVF9EWU5BTUlDKSB7CisJCQlkeW4gPSAoRUxGKER5bikqKShiYXNlICsgcHRbaV0ucF9vZmZzZXQpOworCQl9CisJfQorCisJaWYgKCFmb3VuZF92YWRkciB8fCAhZHluKQorCQlyZXR1cm47ICAvKiBGYWlsZWQgKi8KKworCS8qCisJICogRmlzaCBvdXQgdGhlIHVzZWZ1bCBiaXRzIG9mIHRoZSBkeW5hbWljIHRhYmxlLgorCSAqLworCUVMRihXb3JkKSAqaGFzaCA9IDA7CisJdmRzb19pbmZvLnN5bXN0cmluZ3MgPSAwOworCXZkc29faW5mby5zeW10YWIgPSAwOworCXZkc29faW5mby52ZXJzeW0gPSAwOworCXZkc29faW5mby52ZXJkZWYgPSAwOworCWZvciAoaSA9IDA7IGR5bltpXS5kX3RhZyAhPSBEVF9OVUxMOyBpKyspIHsKKwkJc3dpdGNoIChkeW5baV0uZF90YWcpIHsKKwkJY2FzZSBEVF9TVFJUQUI6CisJCQl2ZHNvX2luZm8uc3ltc3RyaW5ncyA9IChjb25zdCBjaGFyICopCisJCQkJKCh1aW50cHRyX3QpZHluW2ldLmRfdW4uZF9wdHIKKwkJCQkgKyB2ZHNvX2luZm8ubG9hZF9vZmZzZXQpOworCQkJYnJlYWs7CisJCWNhc2UgRFRfU1lNVEFCOgorCQkJdmRzb19pbmZvLnN5bXRhYiA9IChFTEYoU3ltKSAqKQorCQkJCSgodWludHB0cl90KWR5bltpXS5kX3VuLmRfcHRyCisJCQkJICsgdmRzb19pbmZvLmxvYWRfb2Zmc2V0KTsKKwkJCWJyZWFrOworCQljYXNlIERUX0hBU0g6CisJCQloYXNoID0gKEVMRihXb3JkKSAqKQorCQkJCSgodWludHB0cl90KWR5bltpXS5kX3VuLmRfcHRyCisJCQkJICsgdmRzb19pbmZvLmxvYWRfb2Zmc2V0KTsKKwkJCWJyZWFrOworCQljYXNlIERUX1ZFUlNZTToKKwkJCXZkc29faW5mby52ZXJzeW0gPSAoRUxGKFZlcnN5bSkgKikKKwkJCQkoKHVpbnRwdHJfdClkeW5baV0uZF91bi5kX3B0cgorCQkJCSArIHZkc29faW5mby5sb2FkX29mZnNldCk7CisJCQlicmVhazsKKwkJY2FzZSBEVF9WRVJERUY6CisJCQl2ZHNvX2luZm8udmVyZGVmID0gKEVMRihWZXJkZWYpICopCisJCQkJKCh1aW50cHRyX3QpZHluW2ldLmRfdW4uZF9wdHIKKwkJCQkgKyB2ZHNvX2luZm8ubG9hZF9vZmZzZXQpOworCQkJYnJlYWs7CisJCX0KKwl9CisJaWYgKCF2ZHNvX2luZm8uc3ltc3RyaW5ncyB8fCAhdmRzb19pbmZvLnN5bXRhYiB8fCAhaGFzaCkKKwkJcmV0dXJuOyAgLyogRmFpbGVkICovCisKKwlpZiAoIXZkc29faW5mby52ZXJkZWYpCisJCXZkc29faW5mby52ZXJzeW0gPSAwOworCisJLyogUGFyc2UgdGhlIGhhc2ggdGFibGUgaGVhZGVyLiAqLworCXZkc29faW5mby5uYnVja2V0ID0gaGFzaFswXTsKKwl2ZHNvX2luZm8ubmNoYWluID0gaGFzaFsxXTsKKwl2ZHNvX2luZm8uYnVja2V0ID0gJmhhc2hbMl07CisJdmRzb19pbmZvLmNoYWluID0gJmhhc2hbdmRzb19pbmZvLm5idWNrZXQgKyAyXTsKKworCS8qIFRoYXQncyBhbGwgd2UgbmVlZC4gKi8KKwl2ZHNvX2luZm8udmFsaWQgPSB0cnVlOworfQorCitzdGF0aWMgYm9vbCB2ZHNvX21hdGNoX3ZlcnNpb24oRUxGKFZlcnN5bSkgdmVyLAorCQkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIEVMRihXb3JkKSBoYXNoKQoreworCS8qCisJICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiB0byBjaGVjayBpZiB0aGUgdmVyc2lvbiBpbmRleGVkIGJ5CisJICogdmVyIG1hdGNoZXMgbmFtZSAod2hpY2ggaGFzaGVzIHRvIGhhc2gpLgorCSAqCisJICogVGhlIHZlcnNpb24gZGVmaW5pdGlvbiB0YWJsZSBpcyBhIG1lc3MsIGFuZCBJIGRvbid0IGtub3cgaG93CisJICogdG8gZG8gdGhpcyBpbiBiZXR0ZXIgdGhhbiBsaW5lYXIgdGltZSB3aXRob3V0IGFsbG9jYXRpbmcgbWVtb3J5CisJICogdG8gYnVpbGQgYW4gaW5kZXguICBJIGFsc28gZG9uJ3Qga25vdyB3aHkgdGhlIHRhYmxlIGhhcworCSAqIHZhcmlhYmxlIHNpemUgZW50cmllcyBpbiB0aGUgZmlyc3QgcGxhY2UuCisJICoKKwkgKiBGb3IgYWRkZWQgZnVuLCBJIGNhbid0IGZpbmQgYSBjb21wcmVoZW5zaWJsZSBzcGVjaWZpY2F0aW9uIG9mIGhvdworCSAqIHRvIHBhcnNlIGFsbCB0aGUgd2VpcmQgZmxhZ3MgaW4gdGhlIHRhYmxlLgorCSAqCisJICogU28gSSBqdXN0IHBhcnNlIHRoZSB3aG9sZSB0YWJsZSBldmVyeSB0aW1lLgorCSAqLworCisJLyogRmlyc3Qgc3RlcDogZmluZCB0aGUgdmVyc2lvbiBkZWZpbml0aW9uICovCisJdmVyICY9IDB4N2ZmZjsgIC8qIEFwcGFyZW50bHkgYml0IDE1IG1lYW5zICJoaWRkZW4iICovCisJRUxGKFZlcmRlZikgKmRlZiA9IHZkc29faW5mby52ZXJkZWY7CisJd2hpbGUodHJ1ZSkgeworCQlpZiAoKGRlZi0+dmRfZmxhZ3MgJiBWRVJfRkxHX0JBU0UpID09IDAKKwkJICAgICYmIChkZWYtPnZkX25keCAmIDB4N2ZmZikgPT0gdmVyKQorCQkJYnJlYWs7CisKKwkJaWYgKGRlZi0+dmRfbmV4dCA9PSAwKQorCQkJcmV0dXJuIGZhbHNlOyAgLyogTm8gZGVmaW5pdGlvbi4gKi8KKworCQlkZWYgPSAoRUxGKFZlcmRlZikgKikoKGNoYXIgKilkZWYgKyBkZWYtPnZkX25leHQpOworCX0KKworCS8qIE5vdyBmaWd1cmUgb3V0IHdoZXRoZXIgaXQgbWF0Y2hlcy4gKi8KKwlFTEYoVmVyZGF1eCkgKmF1eCA9IChFTEYoVmVyZGF1eCkqKSgoY2hhciAqKWRlZiArIGRlZi0+dmRfYXV4KTsKKwlyZXR1cm4gZGVmLT52ZF9oYXNoID09IGhhc2gKKwkJJiYgIXN0cmNtcChuYW1lLCB2ZHNvX2luZm8uc3ltc3RyaW5ncyArIGF1eC0+dmRhX25hbWUpOworfQorCit2b2lkICp2ZHNvX3N5bShjb25zdCBjaGFyICp2ZXJzaW9uLCBjb25zdCBjaGFyICpuYW1lKQoreworCXVuc2lnbmVkIGxvbmcgdmVyX2hhc2g7CisJaWYgKCF2ZHNvX2luZm8udmFsaWQpCisJCXJldHVybiAwOworCisJdmVyX2hhc2ggPSBlbGZfaGFzaCh2ZXJzaW9uKTsKKwlFTEYoV29yZCkgY2hhaW4gPSB2ZHNvX2luZm8uYnVja2V0W2VsZl9oYXNoKG5hbWUpICUgdmRzb19pbmZvLm5idWNrZXRdOworCisJZm9yICg7IGNoYWluICE9IFNUTl9VTkRFRjsgY2hhaW4gPSB2ZHNvX2luZm8uY2hhaW5bY2hhaW5dKSB7CisJCUVMRihTeW0pICpzeW0gPSAmdmRzb19pbmZvLnN5bXRhYltjaGFpbl07CisKKwkJLyogQ2hlY2sgZm9yIGEgZGVmaW5lZCBnbG9iYWwgb3Igd2VhayBmdW5jdGlvbiB3LyByaWdodCBuYW1lLiAqLworCQlpZiAoRUxGNjRfU1RfVFlQRShzeW0tPnN0X2luZm8pICE9IFNUVF9GVU5DKQorCQkJY29udGludWU7CisJCWlmIChFTEY2NF9TVF9CSU5EKHN5bS0+c3RfaW5mbykgIT0gU1RCX0dMT0JBTCAmJgorCQkgICAgRUxGNjRfU1RfQklORChzeW0tPnN0X2luZm8pICE9IFNUQl9XRUFLKQorCQkJY29udGludWU7CisJCWlmIChzeW0tPnN0X3NobmR4ID09IFNITl9VTkRFRikKKwkJCWNvbnRpbnVlOworCQlpZiAoc3RyY21wKG5hbWUsIHZkc29faW5mby5zeW1zdHJpbmdzICsgc3ltLT5zdF9uYW1lKSkKKwkJCWNvbnRpbnVlOworCisJCS8qIENoZWNrIHN5bWJvbCB2ZXJzaW9uLiAqLworCQlpZiAodmRzb19pbmZvLnZlcnN5bQorCQkgICAgJiYgIXZkc29fbWF0Y2hfdmVyc2lvbih2ZHNvX2luZm8udmVyc3ltW2NoYWluXSwKKwkJCQkJICAgdmVyc2lvbiwgdmVyX2hhc2gpKQorCQkJY29udGludWU7CisKKwkJcmV0dXJuICh2b2lkICopKHZkc29faW5mby5sb2FkX29mZnNldCArIHN5bS0+c3RfdmFsdWUpOworCX0KKworCXJldHVybiAwOworfQorCit2b2lkIHZkc29faW5pdF9mcm9tX2F1eHYodm9pZCAqYXV4dikKK3sKKwlFTEYoYXV4dl90KSAqZWxmX2F1eHYgPSBhdXh2OworCWZvciAoaW50IGkgPSAwOyBlbGZfYXV4dltpXS5hX3R5cGUgIT0gQVRfTlVMTDsgaSsrKQorCXsKKwkJaWYgKGVsZl9hdXh2W2ldLmFfdHlwZSA9PSBBVF9TWVNJTkZPX0VIRFIpIHsKKwkJCXZkc29faW5pdF9mcm9tX3N5c2luZm9fZWhkcihlbGZfYXV4dltpXS5hX3VuLmFfdmFsKTsKKwkJCXJldHVybjsKKwkJfQorCX0KKworCXZkc29faW5mby52YWxpZCA9IGZhbHNlOworfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92RFNPL3Zkc29fc3RhbmRhbG9uZV90ZXN0X3g4Ni5jIGIvRG9jdW1lbnRhdGlvbi92RFNPL3Zkc29fc3RhbmRhbG9uZV90ZXN0X3g4Ni5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzYjBlYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZEU08vdmRzb19zdGFuZGFsb25lX3Rlc3RfeDg2LmMKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiB2ZHNvX3Rlc3QuYzogU2FtcGxlIGNvZGUgdG8gdGVzdCBwYXJzZV92ZHNvLmMgb24geDg2CisgKiBDb3B5cmlnaHQgKGMpIDIwMTEtMjAxNCBBbmR5IEx1dG9taXJza2kKKyAqIFN1YmplY3QgdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIKKyAqCisgKiBZb3UgY2FuIGFtdXNlIHlvdXJzZWxmIGJ5IGNvbXBpbGluZyB3aXRoOgorICogZ2NjIC1zdGQ9Z251OTkgLW5vc3RkbGliCisgKiAgICAgLU9zIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLWZsdG8gLWxnY2NfcworICogICAgICB2ZHNvX3N0YW5kYWxvbmVfdGVzdF94ODYuYyBwYXJzZV92ZHNvLmMKKyAqIHRvIGdlbmVyYXRlIGEgc21hbGwgYmluYXJ5LiAgT24geDg2XzY0LCB5b3UgY2FuIG9taXQgLWxnY2NfcworICogaWYgeW91IHdhbnQgdGhlIGJpbmFyeSB0byBiZSBjb21wbGV0ZWx5IHN0YW5kYWxvbmUuCisgKi8KKworI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworZXh0ZXJuIHZvaWQgKnZkc29fc3ltKGNvbnN0IGNoYXIgKnZlcnNpb24sIGNvbnN0IGNoYXIgKm5hbWUpOworZXh0ZXJuIHZvaWQgdmRzb19pbml0X2Zyb21fc3lzaW5mb19laGRyKHVpbnRwdHJfdCBiYXNlKTsKK2V4dGVybiB2b2lkIHZkc29faW5pdF9mcm9tX2F1eHYodm9pZCAqYXV4dik7CisKKy8qIFdlIG5lZWQgYSBsaWJjIGZ1bmN0aW9ucy4uLiAqLworaW50IHN0cmNtcChjb25zdCBjaGFyICphLCBjb25zdCBjaGFyICpiKQoreworCS8qIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgYnVnZ3k6IGl0IG5ldmVyIHJldHVybnMgLTEuICovCisJd2hpbGUgKCphIHx8ICpiKSB7CisJCWlmICgqYSAhPSAqYikKKwkJCXJldHVybiAxOworCQlpZiAoKmEgPT0gMCB8fCAqYiA9PSAwKQorCQkJcmV0dXJuIDE7CisJCWErKzsKKwkJYisrOworCX0KKworCXJldHVybiAwOworfQorCisvKiAuLi5hbmQgdHdvIHN5c2NhbGxzLiAgVGhpcyBpcyB4ODYtc3BlY2lmaWMuICovCitzdGF0aWMgaW5saW5lIGxvbmcgeDg2X3N5c2NhbGwzKGxvbmcgbnIsIGxvbmcgYTAsIGxvbmcgYTEsIGxvbmcgYTIpCit7CisJbG9uZyByZXQ7CisjaWZkZWYgX194ODZfNjRfXworCWFzbSB2b2xhdGlsZSAoInN5c2NhbGwiIDogIj1hIiAocmV0KSA6ICJhIiAobnIpLAorCQkgICAgICAiRCIgKGEwKSwgIlMiIChhMSksICJkIiAoYTIpIDoKKwkJICAgICAgImNjIiwgIm1lbW9yeSIsICJyY3giLAorCQkgICAgICAicjgiLCAicjkiLCAicjEwIiwgInIxMSIgKTsKKyNlbHNlCisJYXNtIHZvbGF0aWxlICgiaW50ICQweDgwIiA6ICI9YSIgKHJldCkgOiAiYSIgKG5yKSwKKwkJICAgICAgImIiIChhMCksICJjIiAoYTEpLCAiZCIgKGEyKSA6CisJCSAgICAgICJjYyIsICJtZW1vcnkiICk7CisjZW5kaWYKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW5saW5lIGxvbmcgbGludXhfd3JpdGUoaW50IGZkLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKQoreworCXJldHVybiB4ODZfc3lzY2FsbDMoX19OUl93cml0ZSwgZmQsIChsb25nKWRhdGEsIChsb25nKWxlbik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBsaW51eF9leGl0KGludCBjb2RlKQoreworCXg4Nl9zeXNjYWxsMyhfX05SX2V4aXQsIGNvZGUsIDAsIDApOworfQorCit2b2lkIHRvX2Jhc2UxMChjaGFyICpsYXN0ZGlnLCB0aW1lX3QgbikKK3sKKwl3aGlsZSAobikgeworCQkqbGFzdGRpZyA9IChuICUgMTApICsgJzAnOworCQluIC89IDEwOworCQlsYXN0ZGlnLS07CisJfQorfQorCitfX2F0dHJpYnV0ZV9fKChleHRlcm5hbGx5X3Zpc2libGUpKSB2b2lkIGNfbWFpbih2b2lkICoqc3RhY2spCit7CisJLyogUGFyc2UgdGhlIHN0YWNrICovCisJbG9uZyBhcmdjID0gKGxvbmcpKnN0YWNrOworCXN0YWNrICs9IGFyZ2MgKyAyOworCisJLyogTm93IHdlJ3JlIHBvaW50aW5nIGF0IHRoZSBlbnZpcm9ubWVudC4gIFNraXAgaXQuICovCisJd2hpbGUoKnN0YWNrKQorCQlzdGFjaysrOworCXN0YWNrKys7CisKKwkvKiBOb3cgd2UncmUgcG9pbnRpbmcgYXQgYXV4di4gIEluaXRpYWxpemUgdGhlIHZEU08gcGFyc2VyLiAqLworCXZkc29faW5pdF9mcm9tX2F1eHYoKHZvaWQgKilzdGFjayk7CisKKwkvKiBGaW5kIGdldHRpbWVvZmRheS4gKi8KKwl0eXBlZGVmIGxvbmcgKCpndG9kX3QpKHN0cnVjdCB0aW1ldmFsICp0diwgc3RydWN0IHRpbWV6b25lICp0eik7CisJZ3RvZF90IGd0b2QgPSAoZ3RvZF90KXZkc29fc3ltKCJMSU5VWF8yLjYiLCAiX192ZHNvX2dldHRpbWVvZmRheSIpOworCisJaWYgKCFndG9kKQorCQlsaW51eF9leGl0KDEpOworCisJc3RydWN0IHRpbWV2YWwgdHY7CisJbG9uZyByZXQgPSBndG9kKCZ0diwgMCk7CisKKwlpZiAocmV0ID09IDApIHsKKwkJY2hhciBidWZbXSA9ICJUaGUgdGltZSBpcyAgICAgICAgICAgICAgICAgICAgIC4wMDAwMDBcbiI7CisJCXRvX2Jhc2UxMChidWYgKyAzMSwgdHYudHZfc2VjKTsKKwkJdG9fYmFzZTEwKGJ1ZiArIDM4LCB0di50dl91c2VjKTsKKwkJbGludXhfd3JpdGUoMSwgYnVmLCBzaXplb2YoYnVmKSAtIDEpOworCX0gZWxzZSB7CisJCWxpbnV4X2V4aXQocmV0KTsKKwl9CisKKwlsaW51eF9leGl0KDApOworfQorCisvKgorICogVGhpcyBpcyB0aGUgcmVhbCBlbnRyeSBwb2ludC4gIEl0IHBhc3NlcyB0aGUgaW5pdGlhbCBzdGFjayBpbnRvCisgKiB0aGUgQyBlbnRyeSBwb2ludC4KKyAqLworYXNtICgKKwkiLnRleHRcbiIKKwkiLmdsb2JhbCBfc3RhcnRcbiIKKwkiLnR5cGUgX3N0YXJ0LEBmdW5jdGlvblxuIgorCSJfc3RhcnQ6XG5cdCIKKyNpZmRlZiBfX3g4Nl82NF9fCisJIm1vdiAlcnNwLCVyZGlcblx0IgorCSJqbXAgY19tYWluIgorI2Vsc2UKKwkicHVzaCAlZXNwXG5cdCIKKwkiY2FsbCBjX21haW5cblx0IgorCSJpbnQgJDMiCisjZW5kaWYKKwkpOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92RFNPL3Zkc29fdGVzdC5jIGIvRG9jdW1lbnRhdGlvbi92RFNPL3Zkc29fdGVzdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkYWViN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZEU08vdmRzb190ZXN0LmMKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIHZkc29fdGVzdC5jOiBTYW1wbGUgY29kZSB0byB0ZXN0IHBhcnNlX3Zkc28uYworICogQ29weXJpZ2h0IChjKSAyMDE0IEFuZHkgTHV0b21pcnNraQorICogU3ViamVjdCB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMgorICoKKyAqIENvbXBpbGUgd2l0aDoKKyAqIGdjYyAtc3RkPWdudTk5IHZkc29fdGVzdC5jIHBhcnNlX3Zkc28uYworICoKKyAqIFRlc3RlZCBvbiB4ODYsIDMyLWJpdCBhbmQgNjQtYml0LiAgSXQgbWF5IHdvcmsgb24gb3RoZXIgYXJjaGl0ZWN0dXJlcywgdG9vLgorICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxlbGYuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy9hdXh2Lmg+CisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKworZXh0ZXJuIHZvaWQgKnZkc29fc3ltKGNvbnN0IGNoYXIgKnZlcnNpb24sIGNvbnN0IGNoYXIgKm5hbWUpOworZXh0ZXJuIHZvaWQgdmRzb19pbml0X2Zyb21fc3lzaW5mb19laGRyKHVpbnRwdHJfdCBiYXNlKTsKK2V4dGVybiB2b2lkIHZkc29faW5pdF9mcm9tX2F1eHYodm9pZCAqYXV4dik7CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwl1bnNpZ25lZCBsb25nIHN5c2luZm9fZWhkciA9IGdldGF1eHZhbChBVF9TWVNJTkZPX0VIRFIpOworCWlmICghc3lzaW5mb19laGRyKSB7CisJCXByaW50ZigiQVRfU1lTSU5GT19FSERSIGlzIG5vdCBwcmVzZW50IVxuIik7CisJCXJldHVybiAwOworCX0KKworCXZkc29faW5pdF9mcm9tX3N5c2luZm9fZWhkcihnZXRhdXh2YWwoQVRfU1lTSU5GT19FSERSKSk7CisKKwkvKiBGaW5kIGdldHRpbWVvZmRheS4gKi8KKwl0eXBlZGVmIGxvbmcgKCpndG9kX3QpKHN0cnVjdCB0aW1ldmFsICp0diwgc3RydWN0IHRpbWV6b25lICp0eik7CisJZ3RvZF90IGd0b2QgPSAoZ3RvZF90KXZkc29fc3ltKCJMSU5VWF8yLjYiLCAiX192ZHNvX2dldHRpbWVvZmRheSIpOworCisJaWYgKCFndG9kKSB7CisJCXByaW50ZigiQ291bGQgbm90IGZpbmQgX192ZHNvX2dldHRpbWVvZmRheVxuIik7CisJCXJldHVybiAxOworCX0KKworCXN0cnVjdCB0aW1ldmFsIHR2OworCWxvbmcgcmV0ID0gZ3RvZCgmdHYsIDApOworCisJaWYgKHJldCA9PSAwKSB7CisJCXByaW50ZigiVGhlIHRpbWUgaXMgJWxsZC4lMDZsbGRcbiIsCisJCSAgICAgICAobG9uZyBsb25nKXR2LnR2X3NlYywgKGxvbmcgbG9uZyl0di50dl91c2VjKTsKKwl9IGVsc2UgeworCQlwcmludGYoIl9fdmRzb19nZXR0aW1lb2ZkYXkgZmFpbGVkXG4iKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmZpby50eHQgYi9Eb2N1bWVudGF0aW9uL3ZmaW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkZDNmZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZmaW8udHh0CkBAIC0wLDAgKzEsNTE0IEBACitWRklPIC0gIlZpcnR1YWwgRnVuY3Rpb24gSS9PIlsxXQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTWFueSBtb2Rlcm4gc3lzdGVtIG5vdyBwcm92aWRlIERNQSBhbmQgaW50ZXJydXB0IHJlbWFwcGluZyBmYWNpbGl0aWVzCit0byBoZWxwIGVuc3VyZSBJL08gZGV2aWNlcyBiZWhhdmUgd2l0aGluIHRoZSBib3VuZGFyaWVzIHRoZXkndmUgYmVlbgorYWxsb3R0ZWQuICBUaGlzIGluY2x1ZGVzIHg4NiBoYXJkd2FyZSB3aXRoIEFNRC1WaSBhbmQgSW50ZWwgVlQtZCwKK1BPV0VSIHN5c3RlbXMgd2l0aCBQYXJ0aXRpb25hYmxlIEVuZHBvaW50cyAoUEVzKSBhbmQgZW1iZWRkZWQgUG93ZXJQQworc3lzdGVtcyBzdWNoIGFzIEZyZWVzY2FsZSBQQU1VLiAgVGhlIFZGSU8gZHJpdmVyIGlzIGFuIElPTU1VL2RldmljZQorYWdub3N0aWMgZnJhbWV3b3JrIGZvciBleHBvc2luZyBkaXJlY3QgZGV2aWNlIGFjY2VzcyB0byB1c2Vyc3BhY2UsIGluCithIHNlY3VyZSwgSU9NTVUgcHJvdGVjdGVkIGVudmlyb25tZW50LiAgSW4gb3RoZXIgd29yZHMsIHRoaXMgYWxsb3dzCitzYWZlWzJdLCBub24tcHJpdmlsZWdlZCwgdXNlcnNwYWNlIGRyaXZlcnMuCisKK1doeSBkbyB3ZSB3YW50IHRoYXQ/ICBWaXJ0dWFsIG1hY2hpbmVzIG9mdGVuIG1ha2UgdXNlIG9mIGRpcmVjdCBkZXZpY2UKK2FjY2VzcyAoImRldmljZSBhc3NpZ25tZW50Iikgd2hlbiBjb25maWd1cmVkIGZvciB0aGUgaGlnaGVzdCBwb3NzaWJsZQorSS9PIHBlcmZvcm1hbmNlLiAgRnJvbSBhIGRldmljZSBhbmQgaG9zdCBwZXJzcGVjdGl2ZSwgdGhpcyBzaW1wbHkKK3R1cm5zIHRoZSBWTSBpbnRvIGEgdXNlcnNwYWNlIGRyaXZlciwgd2l0aCB0aGUgYmVuZWZpdHMgb2YKK3NpZ25pZmljYW50bHkgcmVkdWNlZCBsYXRlbmN5LCBoaWdoZXIgYmFuZHdpZHRoLCBhbmQgZGlyZWN0IHVzZSBvZgorYmFyZS1tZXRhbCBkZXZpY2UgZHJpdmVyc1szXS4KKworU29tZSBhcHBsaWNhdGlvbnMsIHBhcnRpY3VsYXJseSBpbiB0aGUgaGlnaCBwZXJmb3JtYW5jZSBjb21wdXRpbmcKK2ZpZWxkLCBhbHNvIGJlbmVmaXQgZnJvbSBsb3ctb3ZlcmhlYWQsIGRpcmVjdCBkZXZpY2UgYWNjZXNzIGZyb20KK3VzZXJzcGFjZS4gIEV4YW1wbGVzIGluY2x1ZGUgbmV0d29yayBhZGFwdGVycyAob2Z0ZW4gbm9uLVRDUC9JUCBiYXNlZCkKK2FuZCBjb21wdXRlIGFjY2VsZXJhdG9ycy4gIFByaW9yIHRvIFZGSU8sIHRoZXNlIGRyaXZlcnMgaGFkIHRvIGVpdGhlcgorZ28gdGhyb3VnaCB0aGUgZnVsbCBkZXZlbG9wbWVudCBjeWNsZSB0byBiZWNvbWUgcHJvcGVyIHVwc3RyZWFtCitkcml2ZXIsIGJlIG1haW50YWluZWQgb3V0IG9mIHRyZWUsIG9yIG1ha2UgdXNlIG9mIHRoZSBVSU8gZnJhbWV3b3JrLAord2hpY2ggaGFzIG5vIG5vdGlvbiBvZiBJT01NVSBwcm90ZWN0aW9uLCBsaW1pdGVkIGludGVycnVwdCBzdXBwb3J0LAorYW5kIHJlcXVpcmVzIHJvb3QgcHJpdmlsZWdlcyB0byBhY2Nlc3MgdGhpbmdzIGxpa2UgUENJIGNvbmZpZ3VyYXRpb24KK3NwYWNlLgorCitUaGUgVkZJTyBkcml2ZXIgZnJhbWV3b3JrIGludGVuZHMgdG8gdW5pZnkgdGhlc2UsIHJlcGxhY2luZyBib3RoIHRoZQorS1ZNIFBDSSBzcGVjaWZpYyBkZXZpY2UgYXNzaWdubWVudCBjb2RlIGFzIHdlbGwgYXMgcHJvdmlkZSBhIG1vcmUKK3NlY3VyZSwgbW9yZSBmZWF0dXJlZnVsIHVzZXJzcGFjZSBkcml2ZXIgZW52aXJvbm1lbnQgdGhhbiBVSU8uCisKK0dyb3VwcywgRGV2aWNlcywgYW5kIElPTU1VcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEZXZpY2VzIGFyZSB0aGUgbWFpbiB0YXJnZXQgb2YgYW55IEkvTyBkcml2ZXIuICBEZXZpY2VzIHR5cGljYWxseQorY3JlYXRlIGEgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlIG1hZGUgdXAgb2YgSS9PIGFjY2VzcywgaW50ZXJydXB0cywKK2FuZCBETUEuICBXaXRob3V0IGdvaW5nIGludG8gdGhlIGRldGFpbHMgb2YgZWFjaCBvZiB0aGVzZSwgRE1BIGlzCitieSBmYXIgdGhlIG1vc3QgY3JpdGljYWwgYXNwZWN0IGZvciBtYWludGFpbmluZyBhIHNlY3VyZSBlbnZpcm9ubWVudAorYXMgYWxsb3dpbmcgYSBkZXZpY2UgcmVhZC13cml0ZSBhY2Nlc3MgdG8gc3lzdGVtIG1lbW9yeSBpbXBvc2VzIHRoZQorZ3JlYXRlc3QgcmlzayB0byB0aGUgb3ZlcmFsbCBzeXN0ZW0gaW50ZWdyaXR5LgorCitUbyBoZWxwIG1pdGlnYXRlIHRoaXMgcmlzaywgbWFueSBtb2Rlcm4gSU9NTVVzIG5vdyBpbmNvcnBvcmF0ZQoraXNvbGF0aW9uIHByb3BlcnRpZXMgaW50byB3aGF0IHdhcywgaW4gbWFueSBjYXNlcywgYW4gaW50ZXJmYWNlIG9ubHkKK21lYW50IGZvciB0cmFuc2xhdGlvbiAoaWUuIHNvbHZpbmcgdGhlIGFkZHJlc3NpbmcgcHJvYmxlbXMgb2YgZGV2aWNlcword2l0aCBsaW1pdGVkIGFkZHJlc3Mgc3BhY2VzKS4gIFdpdGggdGhpcywgZGV2aWNlcyBjYW4gbm93IGJlIGlzb2xhdGVkCitmcm9tIGVhY2ggb3RoZXIgYW5kIGZyb20gYXJiaXRyYXJ5IG1lbW9yeSBhY2Nlc3MsIHRodXMgYWxsb3dpbmcKK3RoaW5ncyBsaWtlIHNlY3VyZSBkaXJlY3QgYXNzaWdubWVudCBvZiBkZXZpY2VzIGludG8gdmlydHVhbCBtYWNoaW5lcy4KKworVGhpcyBpc29sYXRpb24gaXMgbm90IGFsd2F5cyBhdCB0aGUgZ3JhbnVsYXJpdHkgb2YgYSBzaW5nbGUgZGV2aWNlCit0aG91Z2guICBFdmVuIHdoZW4gYW4gSU9NTVUgaXMgY2FwYWJsZSBvZiB0aGlzLCBwcm9wZXJ0aWVzIG9mIGRldmljZXMsCitpbnRlcmNvbm5lY3RzLCBhbmQgSU9NTVUgdG9wb2xvZ2llcyBjYW4gZWFjaCByZWR1Y2UgdGhpcyBpc29sYXRpb24uCitGb3IgaW5zdGFuY2UsIGFuIGluZGl2aWR1YWwgZGV2aWNlIG1heSBiZSBwYXJ0IG9mIGEgbGFyZ2VyIG11bHRpLQorZnVuY3Rpb24gZW5jbG9zdXJlLiAgV2hpbGUgdGhlIElPTU1VIG1heSBiZSBhYmxlIHRvIGRpc3Rpbmd1aXNoCitiZXR3ZWVuIGRldmljZXMgd2l0aGluIHRoZSBlbmNsb3N1cmUsIHRoZSBlbmNsb3N1cmUgbWF5IG5vdCByZXF1aXJlCit0cmFuc2FjdGlvbnMgYmV0d2VlbiBkZXZpY2VzIHRvIHJlYWNoIHRoZSBJT01NVS4gIEV4YW1wbGVzIG9mIHRoaXMKK2NvdWxkIGJlIGFueXRoaW5nIGZyb20gYSBtdWx0aS1mdW5jdGlvbiBQQ0kgZGV2aWNlIHdpdGggYmFja2Rvb3JzCitiZXR3ZWVuIGZ1bmN0aW9ucyB0byBhIG5vbi1QQ0ktQUNTIChBY2Nlc3MgQ29udHJvbCBTZXJ2aWNlcykgY2FwYWJsZQorYnJpZGdlIGFsbG93aW5nIHJlZGlyZWN0aW9uIHdpdGhvdXQgcmVhY2hpbmcgdGhlIElPTU1VLiAgVG9wb2xvZ3kKK2NhbiBhbHNvIHBsYXkgYSBmYWN0b3IgaW4gdGVybXMgb2YgaGlkaW5nIGRldmljZXMuICBBIFBDSWUtdG8tUENJCiticmlkZ2UgbWFza3MgdGhlIGRldmljZXMgYmVoaW5kIGl0LCBtYWtpbmcgdHJhbnNhY3Rpb24gYXBwZWFyIGFzIGlmCitmcm9tIHRoZSBicmlkZ2UgaXRzZWxmLiAgT2J2aW91c2x5IElPTU1VIGRlc2lnbiBwbGF5cyBhIG1ham9yIGZhY3RvcgorYXMgd2VsbC4KKworVGhlcmVmb3JlLCB3aGlsZSBmb3IgdGhlIG1vc3QgcGFydCBhbiBJT01NVSBtYXkgaGF2ZSBkZXZpY2UgbGV2ZWwKK2dyYW51bGFyaXR5LCBhbnkgc3lzdGVtIGlzIHN1c2NlcHRpYmxlIHRvIHJlZHVjZWQgZ3JhbnVsYXJpdHkuICBUaGUKK0lPTU1VIEFQSSB0aGVyZWZvcmUgc3VwcG9ydHMgYSBub3Rpb24gb2YgSU9NTVUgZ3JvdXBzLiAgQSBncm91cCBpcworYSBzZXQgb2YgZGV2aWNlcyB3aGljaCBpcyBpc29sYXRhYmxlIGZyb20gYWxsIG90aGVyIGRldmljZXMgaW4gdGhlCitzeXN0ZW0uICBHcm91cHMgYXJlIHRoZXJlZm9yZSB0aGUgdW5pdCBvZiBvd25lcnNoaXAgdXNlZCBieSBWRklPLgorCitXaGlsZSB0aGUgZ3JvdXAgaXMgdGhlIG1pbmltdW0gZ3JhbnVsYXJpdHkgdGhhdCBtdXN0IGJlIHVzZWQgdG8KK2Vuc3VyZSBzZWN1cmUgdXNlciBhY2Nlc3MsIGl0J3Mgbm90IG5lY2Vzc2FyaWx5IHRoZSBwcmVmZXJyZWQKK2dyYW51bGFyaXR5LiAgSW4gSU9NTVVzIHdoaWNoIG1ha2UgdXNlIG9mIHBhZ2UgdGFibGVzLCBpdCBtYXkgYmUKK3Bvc3NpYmxlIHRvIHNoYXJlIGEgc2V0IG9mIHBhZ2UgdGFibGVzIGJldHdlZW4gZGlmZmVyZW50IGdyb3VwcywKK3JlZHVjaW5nIHRoZSBvdmVyaGVhZCBib3RoIHRvIHRoZSBwbGF0Zm9ybSAocmVkdWNlZCBUTEIgdGhyYXNoaW5nLAorcmVkdWNlZCBkdXBsaWNhdGUgcGFnZSB0YWJsZXMpLCBhbmQgdG8gdGhlIHVzZXIgKHByb2dyYW1taW5nIG9ubHkKK2Egc2luZ2xlIHNldCBvZiB0cmFuc2xhdGlvbnMpLiAgRm9yIHRoaXMgcmVhc29uLCBWRklPIG1ha2VzIHVzZSBvZgorYSBjb250YWluZXIgY2xhc3MsIHdoaWNoIG1heSBob2xkIG9uZSBvciBtb3JlIGdyb3Vwcy4gIEEgY29udGFpbmVyCitpcyBjcmVhdGVkIGJ5IHNpbXBseSBvcGVuaW5nIHRoZSAvZGV2L3ZmaW8vdmZpbyBjaGFyYWN0ZXIgZGV2aWNlLgorCitPbiBpdHMgb3duLCB0aGUgY29udGFpbmVyIHByb3ZpZGVzIGxpdHRsZSBmdW5jdGlvbmFsaXR5LCB3aXRoIGFsbAorYnV0IGEgY291cGxlIHZlcnNpb24gYW5kIGV4dGVuc2lvbiBxdWVyeSBpbnRlcmZhY2VzIGxvY2tlZCBhd2F5LgorVGhlIHVzZXIgbmVlZHMgdG8gYWRkIGEgZ3JvdXAgaW50byB0aGUgY29udGFpbmVyIGZvciB0aGUgbmV4dCBsZXZlbAorb2YgZnVuY3Rpb25hbGl0eS4gIFRvIGRvIHRoaXMsIHRoZSB1c2VyIGZpcnN0IG5lZWRzIHRvIGlkZW50aWZ5IHRoZQorZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXNpcmVkIGRldmljZS4gIFRoaXMgY2FuIGJlIGRvbmUgdXNpbmcKK3RoZSBzeXNmcyBsaW5rcyBkZXNjcmliZWQgaW4gdGhlIGV4YW1wbGUgYmVsb3cuICBCeSB1bmJpbmRpbmcgdGhlCitkZXZpY2UgZnJvbSB0aGUgaG9zdCBkcml2ZXIgYW5kIGJpbmRpbmcgaXQgdG8gYSBWRklPIGRyaXZlciwgYSBuZXcKK1ZGSU8gZ3JvdXAgd2lsbCBhcHBlYXIgZm9yIHRoZSBncm91cCBhcyAvZGV2L3ZmaW8vJEdST1VQLCB3aGVyZQorJEdST1VQIGlzIHRoZSBJT01NVSBncm91cCBudW1iZXIgb2Ygd2hpY2ggdGhlIGRldmljZSBpcyBhIG1lbWJlci4KK0lmIHRoZSBJT01NVSBncm91cCBjb250YWlucyBtdWx0aXBsZSBkZXZpY2VzLCBlYWNoIHdpbGwgbmVlZCB0bworYmUgYm91bmQgdG8gYSBWRklPIGRyaXZlciBiZWZvcmUgb3BlcmF0aW9ucyBvbiB0aGUgVkZJTyBncm91cAorYXJlIGFsbG93ZWQgKGl0J3MgYWxzbyBzdWZmaWNpZW50IHRvIG9ubHkgdW5iaW5kIHRoZSBkZXZpY2UgZnJvbQoraG9zdCBkcml2ZXJzIGlmIGEgVkZJTyBkcml2ZXIgaXMgdW5hdmFpbGFibGU7IHRoaXMgd2lsbCBtYWtlIHRoZQorZ3JvdXAgYXZhaWxhYmxlLCBidXQgbm90IHRoYXQgcGFydGljdWxhciBkZXZpY2UpLiAgVEJEIC0gaW50ZXJmYWNlCitmb3IgZGlzYWJsaW5nIGRyaXZlciBwcm9iaW5nL2xvY2tpbmcgYSBkZXZpY2UuCisKK09uY2UgdGhlIGdyb3VwIGlzIHJlYWR5LCBpdCBtYXkgYmUgYWRkZWQgdG8gdGhlIGNvbnRhaW5lciBieSBvcGVuaW5nCit0aGUgVkZJTyBncm91cCBjaGFyYWN0ZXIgZGV2aWNlICgvZGV2L3ZmaW8vJEdST1VQKSBhbmQgdXNpbmcgdGhlCitWRklPX0dST1VQX1NFVF9DT05UQUlORVIgaW9jdGwsIHBhc3NpbmcgdGhlIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUKK3ByZXZpb3VzbHkgb3BlbmVkIGNvbnRhaW5lciBmaWxlLiAgSWYgZGVzaXJlZCBhbmQgaWYgdGhlIElPTU1VIGRyaXZlcgorc3VwcG9ydHMgc2hhcmluZyB0aGUgSU9NTVUgY29udGV4dCBiZXR3ZWVuIGdyb3VwcywgbXVsdGlwbGUgZ3JvdXBzIG1heQorYmUgc2V0IHRvIHRoZSBzYW1lIGNvbnRhaW5lci4gIElmIGEgZ3JvdXAgZmFpbHMgdG8gc2V0IHRvIGEgY29udGFpbmVyCit3aXRoIGV4aXN0aW5nIGdyb3VwcywgYSBuZXcgZW1wdHkgY29udGFpbmVyIHdpbGwgbmVlZCB0byBiZSB1c2VkCitpbnN0ZWFkLgorCitXaXRoIGEgZ3JvdXAgKG9yIGdyb3VwcykgYXR0YWNoZWQgdG8gYSBjb250YWluZXIsIHRoZSByZW1haW5pbmcKK2lvY3RscyBiZWNvbWUgYXZhaWxhYmxlLCBlbmFibGluZyBhY2Nlc3MgdG8gdGhlIFZGSU8gSU9NTVUgaW50ZXJmYWNlcy4KK0FkZGl0aW9uYWxseSwgaXQgbm93IGJlY29tZXMgcG9zc2libGUgdG8gZ2V0IGZpbGUgZGVzY3JpcHRvcnMgZm9yIGVhY2gKK2RldmljZSB3aXRoaW4gYSBncm91cCB1c2luZyBhbiBpb2N0bCBvbiB0aGUgVkZJTyBncm91cCBmaWxlIGRlc2NyaXB0b3IuCisKK1RoZSBWRklPIGRldmljZSBBUEkgaW5jbHVkZXMgaW9jdGxzIGZvciBkZXNjcmliaW5nIHRoZSBkZXZpY2UsIHRoZSBJL08KK3JlZ2lvbnMgYW5kIHRoZWlyIHJlYWQvd3JpdGUvbW1hcCBvZmZzZXRzIG9uIHRoZSBkZXZpY2UgZGVzY3JpcHRvciwgYXMKK3dlbGwgYXMgbWVjaGFuaXNtcyBmb3IgZGVzY3JpYmluZyBhbmQgcmVnaXN0ZXJpbmcgaW50ZXJydXB0Citub3RpZmljYXRpb25zLgorCitWRklPIFVzYWdlIEV4YW1wbGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQXNzdW1lIHVzZXIgd2FudHMgdG8gYWNjZXNzIFBDSSBkZXZpY2UgMDAwMDowNjowZC4wCisKKyQgcmVhZGxpbmsgL3N5cy9idXMvcGNpL2RldmljZXMvMDAwMDowNjowZC4wL2lvbW11X2dyb3VwCisuLi8uLi8uLi8uLi9rZXJuZWwvaW9tbXVfZ3JvdXBzLzI2CisKK1RoaXMgZGV2aWNlIGlzIHRoZXJlZm9yZSBpbiBJT01NVSBncm91cCAyNi4gIFRoaXMgZGV2aWNlIGlzIG9uIHRoZQorcGNpIGJ1cywgdGhlcmVmb3JlIHRoZSB1c2VyIHdpbGwgbWFrZSB1c2Ugb2YgdmZpby1wY2kgdG8gbWFuYWdlIHRoZQorZ3JvdXA6CisKKyMgbW9kcHJvYmUgdmZpby1wY2kKKworQmluZGluZyB0aGlzIGRldmljZSB0byB0aGUgdmZpby1wY2kgZHJpdmVyIGNyZWF0ZXMgdGhlIFZGSU8gZ3JvdXAKK2NoYXJhY3RlciBkZXZpY2VzIGZvciB0aGlzIGdyb3VwOgorCiskIGxzcGNpIC1uIC1zIDAwMDA6MDY6MGQuMAorMDY6MGQuMCAwNDAxOiAxMTAyOjAwMDIgKHJldiAwOCkKKyMgZWNobyAwMDAwOjA2OjBkLjAgPiAvc3lzL2J1cy9wY2kvZGV2aWNlcy8wMDAwOjA2OjBkLjAvZHJpdmVyL3VuYmluZAorIyBlY2hvIDExMDIgMDAwMiA+IC9zeXMvYnVzL3BjaS9kcml2ZXJzL3ZmaW8tcGNpL25ld19pZAorCitOb3cgd2UgbmVlZCB0byBsb29rIGF0IHdoYXQgb3RoZXIgZGV2aWNlcyBhcmUgaW4gdGhlIGdyb3VwIHRvIGZyZWUKK2l0IGZvciB1c2UgYnkgVkZJTzoKKworJCBscyAtbCAvc3lzL2J1cy9wY2kvZGV2aWNlcy8wMDAwOjA2OjBkLjAvaW9tbXVfZ3JvdXAvZGV2aWNlcwordG90YWwgMAorbHJ3eHJ3eHJ3eC4gMSByb290IHJvb3QgMCBBcHIgMjMgMTY6MTMgMDAwMDowMDoxZS4wIC0+CisJLi4vLi4vLi4vLi4vZGV2aWNlcy9wY2kwMDAwOjAwLzAwMDA6MDA6MWUuMAorbHJ3eHJ3eHJ3eC4gMSByb290IHJvb3QgMCBBcHIgMjMgMTY6MTMgMDAwMDowNjowZC4wIC0+CisJLi4vLi4vLi4vLi4vZGV2aWNlcy9wY2kwMDAwOjAwLzAwMDA6MDA6MWUuMC8wMDAwOjA2OjBkLjAKK2xyd3hyd3hyd3guIDEgcm9vdCByb290IDAgQXByIDIzIDE2OjEzIDAwMDA6MDY6MGQuMSAtPgorCS4uLy4uLy4uLy4uL2RldmljZXMvcGNpMDAwMDowMC8wMDAwOjAwOjFlLjAvMDAwMDowNjowZC4xCisKK1RoaXMgZGV2aWNlIGlzIGJlaGluZCBhIFBDSWUtdG8tUENJIGJyaWRnZVs0XSwgdGhlcmVmb3JlIHdlIGFsc28KK25lZWQgdG8gYWRkIGRldmljZSAwMDAwOjA2OjBkLjEgdG8gdGhlIGdyb3VwIGZvbGxvd2luZyB0aGUgc2FtZQorcHJvY2VkdXJlIGFzIGFib3ZlLiAgRGV2aWNlIDAwMDA6MDA6MWUuMCBpcyBhIGJyaWRnZSB0aGF0IGRvZXMKK25vdCBjdXJyZW50bHkgaGF2ZSBhIGhvc3QgZHJpdmVyLCB0aGVyZWZvcmUgaXQncyBub3QgcmVxdWlyZWQgdG8KK2JpbmQgdGhpcyBkZXZpY2UgdG8gdGhlIHZmaW8tcGNpIGRyaXZlciAodmZpby1wY2kgZG9lcyBub3QgY3VycmVudGx5CitzdXBwb3J0IFBDSSBicmlkZ2VzKS4KKworVGhlIGZpbmFsIHN0ZXAgaXMgdG8gcHJvdmlkZSB0aGUgdXNlciB3aXRoIGFjY2VzcyB0byB0aGUgZ3JvdXAgaWYKK3VucHJpdmlsZWdlZCBvcGVyYXRpb24gaXMgZGVzaXJlZCAobm90ZSB0aGF0IC9kZXYvdmZpby92ZmlvIHByb3ZpZGVzCitubyBjYXBhYmlsaXRpZXMgb24gaXRzIG93biBhbmQgaXMgdGhlcmVmb3JlIGV4cGVjdGVkIHRvIGJlIHNldCB0bworbW9kZSAwNjY2IGJ5IHRoZSBzeXN0ZW0pLgorCisjIGNob3duIHVzZXI6dXNlciAvZGV2L3ZmaW8vMjYKKworVGhlIHVzZXIgbm93IGhhcyBmdWxsIGFjY2VzcyB0byBhbGwgdGhlIGRldmljZXMgYW5kIHRoZSBpb21tdSBmb3IgdGhpcworZ3JvdXAgYW5kIGNhbiBhY2Nlc3MgdGhlbSBhcyBmb2xsb3dzOgorCisJaW50IGNvbnRhaW5lciwgZ3JvdXAsIGRldmljZSwgaTsKKwlzdHJ1Y3QgdmZpb19ncm91cF9zdGF0dXMgZ3JvdXBfc3RhdHVzID0KKwkJCQkJeyAuYXJnc3ogPSBzaXplb2YoZ3JvdXBfc3RhdHVzKSB9OworCXN0cnVjdCB2ZmlvX2lvbW11X3R5cGUxX2luZm8gaW9tbXVfaW5mbyA9IHsgLmFyZ3N6ID0gc2l6ZW9mKGlvbW11X2luZm8pIH07CisJc3RydWN0IHZmaW9faW9tbXVfdHlwZTFfZG1hX21hcCBkbWFfbWFwID0geyAuYXJnc3ogPSBzaXplb2YoZG1hX21hcCkgfTsKKwlzdHJ1Y3QgdmZpb19kZXZpY2VfaW5mbyBkZXZpY2VfaW5mbyA9IHsgLmFyZ3N6ID0gc2l6ZW9mKGRldmljZV9pbmZvKSB9OworCisJLyogQ3JlYXRlIGEgbmV3IGNvbnRhaW5lciAqLworCWNvbnRhaW5lciA9IG9wZW4oIi9kZXYvdmZpby92ZmlvIiwgT19SRFdSKTsKKworCWlmIChpb2N0bChjb250YWluZXIsIFZGSU9fR0VUX0FQSV9WRVJTSU9OKSAhPSBWRklPX0FQSV9WRVJTSU9OKQorCQkvKiBVbmtub3duIEFQSSB2ZXJzaW9uICovCisKKwlpZiAoIWlvY3RsKGNvbnRhaW5lciwgVkZJT19DSEVDS19FWFRFTlNJT04sIFZGSU9fVFlQRTFfSU9NTVUpKQorCQkvKiBEb2Vzbid0IHN1cHBvcnQgdGhlIElPTU1VIGRyaXZlciB3ZSB3YW50LiAqLworCisJLyogT3BlbiB0aGUgZ3JvdXAgKi8KKwlncm91cCA9IG9wZW4oIi9kZXYvdmZpby8yNiIsIE9fUkRXUik7CisKKwkvKiBUZXN0IHRoZSBncm91cCBpcyB2aWFibGUgYW5kIGF2YWlsYWJsZSAqLworCWlvY3RsKGdyb3VwLCBWRklPX0dST1VQX0dFVF9TVEFUVVMsICZncm91cF9zdGF0dXMpOworCisJaWYgKCEoZ3JvdXBfc3RhdHVzLmZsYWdzICYgVkZJT19HUk9VUF9GTEFHU19WSUFCTEUpKQorCQkvKiBHcm91cCBpcyBub3QgdmlhYmxlIChpZSwgbm90IGFsbCBkZXZpY2VzIGJvdW5kIGZvciB2ZmlvKSAqLworCisJLyogQWRkIHRoZSBncm91cCB0byB0aGUgY29udGFpbmVyICovCisJaW9jdGwoZ3JvdXAsIFZGSU9fR1JPVVBfU0VUX0NPTlRBSU5FUiwgJmNvbnRhaW5lcik7CisKKwkvKiBFbmFibGUgdGhlIElPTU1VIG1vZGVsIHdlIHdhbnQgKi8KKwlpb2N0bChjb250YWluZXIsIFZGSU9fU0VUX0lPTU1VLCBWRklPX1RZUEUxX0lPTU1VKTsKKworCS8qIEdldCBhZGRpdGlvbiBJT01NVSBpbmZvICovCisJaW9jdGwoY29udGFpbmVyLCBWRklPX0lPTU1VX0dFVF9JTkZPLCAmaW9tbXVfaW5mbyk7CisKKwkvKiBBbGxvY2F0ZSBzb21lIHNwYWNlIGFuZCBzZXR1cCBhIERNQSBtYXBwaW5nICovCisJZG1hX21hcC52YWRkciA9IG1tYXAoMCwgMTAyNCAqIDEwMjQsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCisJCQkgICAgIE1BUF9QUklWQVRFIHwgTUFQX0FOT05ZTU9VUywgMCwgMCk7CisJZG1hX21hcC5zaXplID0gMTAyNCAqIDEwMjQ7CisJZG1hX21hcC5pb3ZhID0gMDsgLyogMU1CIHN0YXJ0aW5nIGF0IDB4MCBmcm9tIGRldmljZSB2aWV3ICovCisJZG1hX21hcC5mbGFncyA9IFZGSU9fRE1BX01BUF9GTEFHX1JFQUQgfCBWRklPX0RNQV9NQVBfRkxBR19XUklURTsKKworCWlvY3RsKGNvbnRhaW5lciwgVkZJT19JT01NVV9NQVBfRE1BLCAmZG1hX21hcCk7CisKKwkvKiBHZXQgYSBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBkZXZpY2UgKi8KKwlkZXZpY2UgPSBpb2N0bChncm91cCwgVkZJT19HUk9VUF9HRVRfREVWSUNFX0ZELCAiMDAwMDowNjowZC4wIik7CisKKwkvKiBUZXN0IGFuZCBzZXR1cCB0aGUgZGV2aWNlICovCisJaW9jdGwoZGV2aWNlLCBWRklPX0RFVklDRV9HRVRfSU5GTywgJmRldmljZV9pbmZvKTsKKworCWZvciAoaSA9IDA7IGkgPCBkZXZpY2VfaW5mby5udW1fcmVnaW9uczsgaSsrKSB7CisJCXN0cnVjdCB2ZmlvX3JlZ2lvbl9pbmZvIHJlZyA9IHsgLmFyZ3N6ID0gc2l6ZW9mKHJlZykgfTsKKworCQlyZWcuaW5kZXggPSBpOworCisJCWlvY3RsKGRldmljZSwgVkZJT19ERVZJQ0VfR0VUX1JFR0lPTl9JTkZPLCAmcmVnKTsKKworCQkvKiBTZXR1cCBtYXBwaW5ncy4uLiByZWFkL3dyaXRlIG9mZnNldHMsIG1tYXBzCisJCSAqIEZvciBQQ0kgZGV2aWNlcywgY29uZmlnIHNwYWNlIGlzIGEgcmVnaW9uICovCisJfQorCisJZm9yIChpID0gMDsgaSA8IGRldmljZV9pbmZvLm51bV9pcnFzOyBpKyspIHsKKwkJc3RydWN0IHZmaW9faXJxX2luZm8gaXJxID0geyAuYXJnc3ogPSBzaXplb2YoaXJxKSB9OworCisJCWlycS5pbmRleCA9IGk7CisKKwkJaW9jdGwoZGV2aWNlLCBWRklPX0RFVklDRV9HRVRfSVJRX0lORk8sICZpcnEpOworCisJCS8qIFNldHVwIElSUXMuLi4gZXZlbnRmZHMsIFZGSU9fREVWSUNFX1NFVF9JUlFTICovCisJfQorCisJLyogR3JhdHVpdG91cyBkZXZpY2UgcmVzZXQgYW5kIGdvLi4uICovCisJaW9jdGwoZGV2aWNlLCBWRklPX0RFVklDRV9SRVNFVCk7CisKK1ZGSU8gVXNlciBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUGxlYXNlIHNlZSBpbmNsdWRlL2xpbnV4L3ZmaW8uaCBmb3IgY29tcGxldGUgQVBJIGRvY3VtZW50YXRpb24uCisKK1ZGSU8gYnVzIGRyaXZlciBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVkZJTyBidXMgZHJpdmVycywgc3VjaCBhcyB2ZmlvLXBjaSBtYWtlIHVzZSBvZiBvbmx5IGEgZmV3IGludGVyZmFjZXMKK2ludG8gVkZJTyBjb3JlLiAgV2hlbiBkZXZpY2VzIGFyZSBib3VuZCBhbmQgdW5ib3VuZCB0byB0aGUgZHJpdmVyLAordGhlIGRyaXZlciBzaG91bGQgY2FsbCB2ZmlvX2FkZF9ncm91cF9kZXYoKSBhbmQgdmZpb19kZWxfZ3JvdXBfZGV2KCkKK3Jlc3BlY3RpdmVseToKKworZXh0ZXJuIGludCB2ZmlvX2FkZF9ncm91cF9kZXYoc3RydWN0IGlvbW11X2dyb3VwICppb21tdV9ncm91cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgKm9wcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRldmljZV9kYXRhKTsKKworZXh0ZXJuIHZvaWQgKnZmaW9fZGVsX2dyb3VwX2RldihzdHJ1Y3QgZGV2aWNlICpkZXYpOworCit2ZmlvX2FkZF9ncm91cF9kZXYoKSBpbmRpY2F0ZXMgdG8gdGhlIGNvcmUgdG8gYmVnaW4gdHJhY2tpbmcgdGhlCitzcGVjaWZpZWQgaW9tbXVfZ3JvdXAgYW5kIHJlZ2lzdGVyIHRoZSBzcGVjaWZpZWQgZGV2IGFzIG93bmVkIGJ5CithIFZGSU8gYnVzIGRyaXZlci4gIFRoZSBkcml2ZXIgcHJvdmlkZXMgYW4gb3BzIHN0cnVjdHVyZSBmb3IgY2FsbGJhY2tzCitzaW1pbGFyIHRvIGEgZmlsZSBvcGVyYXRpb25zIHN0cnVjdHVyZToKKworc3RydWN0IHZmaW9fZGV2aWNlX29wcyB7CisJaW50CSgqb3Blbikodm9pZCAqZGV2aWNlX2RhdGEpOworCXZvaWQJKCpyZWxlYXNlKSh2b2lkICpkZXZpY2VfZGF0YSk7CisJc3NpemVfdAkoKnJlYWQpKHZvaWQgKmRldmljZV9kYXRhLCBjaGFyIF9fdXNlciAqYnVmLAorCQkJc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpOworCXNzaXplX3QJKCp3cml0ZSkodm9pZCAqZGV2aWNlX2RhdGEsIGNvbnN0IGNoYXIgX191c2VyICpidWYsCisJCQkgc2l6ZV90IHNpemUsIGxvZmZfdCAqcHBvcyk7CisJbG9uZwkoKmlvY3RsKSh2b2lkICpkZXZpY2VfZGF0YSwgdW5zaWduZWQgaW50IGNtZCwKKwkJCSB1bnNpZ25lZCBsb25nIGFyZyk7CisJaW50CSgqbW1hcCkodm9pZCAqZGV2aWNlX2RhdGEsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsKK307CisKK0VhY2ggZnVuY3Rpb24gaXMgcGFzc2VkIHRoZSBkZXZpY2VfZGF0YSB0aGF0IHdhcyBvcmlnaW5hbGx5IHJlZ2lzdGVyZWQKK2luIHRoZSB2ZmlvX2FkZF9ncm91cF9kZXYoKSBjYWxsIGFib3ZlLiAgVGhpcyBhbGxvd3MgdGhlIGJ1cyBkcml2ZXIKK2FuIGVhc3kgcGxhY2UgdG8gc3RvcmUgaXRzIG9wYXF1ZSwgcHJpdmF0ZSBkYXRhLiAgVGhlIG9wZW4vcmVsZWFzZQorY2FsbGJhY2tzIGFyZSBpc3N1ZWQgd2hlbiBhIG5ldyBmaWxlIGRlc2NyaXB0b3IgaXMgY3JlYXRlZCBmb3IgYQorZGV2aWNlICh2aWEgVkZJT19HUk9VUF9HRVRfREVWSUNFX0ZEKS4gIFRoZSBpb2N0bCBpbnRlcmZhY2UgcHJvdmlkZXMKK2EgZGlyZWN0IHBhc3MgdGhyb3VnaCBmb3IgVkZJT19ERVZJQ0VfKiBpb2N0bHMuICBUaGUgcmVhZC93cml0ZS9tbWFwCitpbnRlcmZhY2VzIGltcGxlbWVudCB0aGUgZGV2aWNlIHJlZ2lvbiBhY2Nlc3MgZGVmaW5lZCBieSB0aGUgZGV2aWNlJ3MKK293biBWRklPX0RFVklDRV9HRVRfUkVHSU9OX0lORk8gaW9jdGwuCisKKworUFBDNjQgc1BBUFIgaW1wbGVtZW50YXRpb24gbm90ZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGltcGxlbWVudGF0aW9uIGhhcyBzb21lIHNwZWNpZmljczoKKworMSkgT24gb2xkZXIgc3lzdGVtcyAoUE9XRVI3IHdpdGggUDVJT0MyL0lPREExKSBvbmx5IG9uZSBJT01NVSBncm91cCBwZXIKK2NvbnRhaW5lciBpcyBzdXBwb3J0ZWQgYXMgYW4gSU9NTVUgdGFibGUgaXMgYWxsb2NhdGVkIGF0IHRoZSBib290IHRpbWUsCitvbmUgdGFibGUgcGVyIGEgSU9NTVUgZ3JvdXAgd2hpY2ggaXMgYSBQYXJ0aXRpb25hYmxlIEVuZHBvaW50IChQRSkKKyhQRSBpcyBvZnRlbiBhIFBDSSBkb21haW4gYnV0IG5vdCBhbHdheXMpLgorTmV3ZXIgc3lzdGVtcyAoUE9XRVI4IHdpdGggSU9EQTIpIGhhdmUgaW1wcm92ZWQgaGFyZHdhcmUgZGVzaWduIHdoaWNoIGFsbG93cwordG8gcmVtb3ZlIHRoaXMgbGltaXRhdGlvbiBhbmQgaGF2ZSBtdWx0aXBsZSBJT01NVSBncm91cHMgcGVyIGEgVkZJTyBjb250YWluZXIuCisKKzIpIFRoZSBoYXJkd2FyZSBzdXBwb3J0cyBzbyBjYWxsZWQgRE1BIHdpbmRvd3MgLSB0aGUgUENJIGFkZHJlc3MgcmFuZ2UKK3dpdGhpbiB3aGljaCBETUEgdHJhbnNmZXIgaXMgYWxsb3dlZCwgYW55IGF0dGVtcHQgdG8gYWNjZXNzIGFkZHJlc3Mgc3BhY2UKK291dCBvZiB0aGUgd2luZG93IGxlYWRzIHRvIHRoZSB3aG9sZSBQRSBpc29sYXRpb24uCisKKzMpIFBQQzY0IGd1ZXN0cyBhcmUgcGFyYXZpcnR1YWxpemVkIGJ1dCBub3QgZnVsbHkgZW11bGF0ZWQuIFRoZXJlIGlzIGFuIEFQSQordG8gbWFwL3VubWFwIHBhZ2VzIGZvciBETUEsIGFuZCBpdCBub3JtYWxseSBtYXBzIDEuLjMyIHBhZ2VzIHBlciBjYWxsIGFuZAorY3VycmVudGx5IHRoZXJlIGlzIG5vIHdheSB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBjYWxscy4gSW4gb3JkZXIgdG8gbWFrZSB0aGluZ3MKK2Zhc3RlciwgdGhlIG1hcC91bm1hcCBoYW5kbGluZyBoYXMgYmVlbiBpbXBsZW1lbnRlZCBpbiByZWFsIG1vZGUgd2hpY2ggcHJvdmlkZXMKK2FuIGV4Y2VsbGVudCBwZXJmb3JtYW5jZSB3aGljaCBoYXMgbGltaXRhdGlvbnMgc3VjaCBhcyBpbmFiaWxpdHkgdG8gZG8KK2xvY2tlZCBwYWdlcyBhY2NvdW50aW5nIGluIHJlYWwgdGltZS4KKworNCkgQWNjb3JkaW5nIHRvIHNQQVBSIHNwZWNpZmljYXRpb24sIEEgUGFydGl0aW9uYWJsZSBFbmRwb2ludCAoUEUpIGlzIGFuIEkvTworc3VidHJlZSB0aGF0IGNhbiBiZSB0cmVhdGVkIGFzIGEgdW5pdCBmb3IgdGhlIHB1cnBvc2VzIG9mIHBhcnRpdGlvbmluZyBhbmQKK2Vycm9yIHJlY292ZXJ5LiBBIFBFIG1heSBiZSBhIHNpbmdsZSBvciBtdWx0aS1mdW5jdGlvbiBJT0EgKElPIEFkYXB0ZXIpLCBhCitmdW5jdGlvbiBvZiBhIG11bHRpLWZ1bmN0aW9uIElPQSwgb3IgbXVsdGlwbGUgSU9BcyAocG9zc2libHkgaW5jbHVkaW5nIHN3aXRjaAorYW5kIGJyaWRnZSBzdHJ1Y3R1cmVzIGFib3ZlIHRoZSBtdWx0aXBsZSBJT0FzKS4gUFBDNjQgZ3Vlc3RzIGRldGVjdCBQQ0kgZXJyb3JzCithbmQgcmVjb3ZlciBmcm9tIHRoZW0gdmlhIEVFSCBSVEFTIHNlcnZpY2VzLCB3aGljaCB3b3JrcyBvbiB0aGUgYmFzaXMgb2YKK2FkZGl0aW9uYWwgaW9jdGwgY29tbWFuZHMuCisKK1NvIDQgYWRkaXRpb25hbCBpb2N0bHMgaGF2ZSBiZWVuIGFkZGVkOgorCisJVkZJT19JT01NVV9TUEFQUl9UQ0VfR0VUX0lORk8gLSByZXR1cm5zIHRoZSBzaXplIGFuZCB0aGUgc3RhcnQKKwkJb2YgdGhlIERNQSB3aW5kb3cgb24gdGhlIFBDSSBidXMuCisKKwlWRklPX0lPTU1VX0VOQUJMRSAtIGVuYWJsZXMgdGhlIGNvbnRhaW5lci4gVGhlIGxvY2tlZCBwYWdlcyBhY2NvdW50aW5nCisJCWlzIGRvbmUgYXQgdGhpcyBwb2ludC4gVGhpcyBsZXRzIHVzZXIgZmlyc3QgdG8ga25vdyB3aGF0CisJCXRoZSBETUEgd2luZG93IGlzIGFuZCBhZGp1c3QgcmxpbWl0IGJlZm9yZSBkb2luZyBhbnkgcmVhbCBqb2IuCisKKwlWRklPX0lPTU1VX0RJU0FCTEUgLSBkaXNhYmxlcyB0aGUgY29udGFpbmVyLgorCisJVkZJT19FRUhfUEVfT1AgLSBwcm92aWRlcyBhbiBBUEkgZm9yIEVFSCBzZXR1cCwgZXJyb3IgZGV0ZWN0aW9uIGFuZCByZWNvdmVyeS4KKworVGhlIGNvZGUgZmxvdyBmcm9tIHRoZSBleGFtcGxlIGFib3ZlIHNob3VsZCBiZSBzbGlnaHRseSBjaGFuZ2VkOgorCisJc3RydWN0IHZmaW9fZWVoX3BlX29wIHBlX29wID0geyAuYXJnc3ogPSBzaXplb2YocGVfb3ApLCAuZmxhZ3MgPSAwIH07CisKKwkuLi4uLgorCS8qIEFkZCB0aGUgZ3JvdXAgdG8gdGhlIGNvbnRhaW5lciAqLworCWlvY3RsKGdyb3VwLCBWRklPX0dST1VQX1NFVF9DT05UQUlORVIsICZjb250YWluZXIpOworCisJLyogRW5hYmxlIHRoZSBJT01NVSBtb2RlbCB3ZSB3YW50ICovCisJaW9jdGwoY29udGFpbmVyLCBWRklPX1NFVF9JT01NVSwgVkZJT19TUEFQUl9UQ0VfSU9NTVUpCisKKwkvKiBHZXQgYWRkaXRpb24gc1BBUFIgSU9NTVUgaW5mbyAqLworCXZmaW9faW9tbXVfc3BhcHJfdGNlX2luZm8gc3BhcHJfaW9tbXVfaW5mbzsKKwlpb2N0bChjb250YWluZXIsIFZGSU9fSU9NTVVfU1BBUFJfVENFX0dFVF9JTkZPLCAmc3BhcHJfaW9tbXVfaW5mbyk7CisKKwlpZiAoaW9jdGwoY29udGFpbmVyLCBWRklPX0lPTU1VX0VOQUJMRSkpCisJCS8qIENhbm5vdCBlbmFibGUgY29udGFpbmVyLCBtYXkgYmUgbG93IHJsaW1pdCAqLworCisJLyogQWxsb2NhdGUgc29tZSBzcGFjZSBhbmQgc2V0dXAgYSBETUEgbWFwcGluZyAqLworCWRtYV9tYXAudmFkZHIgPSBtbWFwKDAsIDEwMjQgKiAxMDI0LCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAorCQkJICAgICBNQVBfUFJJVkFURSB8IE1BUF9BTk9OWU1PVVMsIDAsIDApOworCisJZG1hX21hcC5zaXplID0gMTAyNCAqIDEwMjQ7CisJZG1hX21hcC5pb3ZhID0gMDsgLyogMU1CIHN0YXJ0aW5nIGF0IDB4MCBmcm9tIGRldmljZSB2aWV3ICovCisJZG1hX21hcC5mbGFncyA9IFZGSU9fRE1BX01BUF9GTEFHX1JFQUQgfCBWRklPX0RNQV9NQVBfRkxBR19XUklURTsKKworCS8qIENoZWNrIGhlcmUgaXMgLmlvdmEvLnNpemUgYXJlIHdpdGhpbiBETUEgd2luZG93IGZyb20gc3BhcHJfaW9tbXVfaW5mbyAqLworCWlvY3RsKGNvbnRhaW5lciwgVkZJT19JT01NVV9NQVBfRE1BLCAmZG1hX21hcCk7CisKKwkvKiBHZXQgYSBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBkZXZpY2UgKi8KKwlkZXZpY2UgPSBpb2N0bChncm91cCwgVkZJT19HUk9VUF9HRVRfREVWSUNFX0ZELCAiMDAwMDowNjowZC4wIik7CisKKwkuLi4uCisKKwkvKiBHcmF0dWl0b3VzIGRldmljZSByZXNldCBhbmQgZ28uLi4gKi8KKwlpb2N0bChkZXZpY2UsIFZGSU9fREVWSUNFX1JFU0VUKTsKKworCS8qIE1ha2Ugc3VyZSBFRUggaXMgc3VwcG9ydGVkICovCisJaW9jdGwoY29udGFpbmVyLCBWRklPX0NIRUNLX0VYVEVOU0lPTiwgVkZJT19FRUgpOworCisJLyogRW5hYmxlIHRoZSBFRUggZnVuY3Rpb25hbGl0eSBvbiB0aGUgZGV2aWNlICovCisJcGVfb3Aub3AgPSBWRklPX0VFSF9QRV9FTkFCTEU7CisJaW9jdGwoY29udGFpbmVyLCBWRklPX0VFSF9QRV9PUCwgJnBlX29wKTsKKworCS8qIFlvdSdyZSBzdWdnZXN0ZWQgdG8gY3JlYXRlIGFkZGl0aW9uYWwgZGF0YSBzdHJ1Y3QgdG8gcmVwcmVzZW50CisJICogUEUsIGFuZCBwdXQgY2hpbGQgZGV2aWNlcyBiZWxvbmdpbmcgdG8gc2FtZSBJT01NVSBncm91cCB0byB0aGUKKwkgKiBQRSBpbnN0YW5jZSBmb3IgbGF0ZXIgcmVmZXJlbmNlLgorCSAqLworCisJLyogQ2hlY2sgdGhlIFBFJ3Mgc3RhdGUgYW5kIG1ha2Ugc3VyZSBpdCdzIGluIGZ1bmN0aW9uYWwgc3RhdGUgKi8KKwlwZV9vcC5vcCA9IFZGSU9fRUVIX1BFX0dFVF9TVEFURTsKKwlpb2N0bChjb250YWluZXIsIFZGSU9fRUVIX1BFX09QLCAmcGVfb3ApOworCisJLyogU2F2ZSBkZXZpY2Ugc3RhdGUgdXNpbmcgcGNpX3NhdmVfc3RhdGUoKS4KKwkgKiBFRUggc2hvdWxkIGJlIGVuYWJsZWQgb24gdGhlIHNwZWNpZmllZCBkZXZpY2UuCisJICovCisKKwkuLi4uCisKKwkvKiBJbmplY3QgRUVIIGVycm9yLCB3aGljaCBpcyBleHBlY3RlZCB0byBiZSBjYXVzZWQgYnkgMzItYml0cworCSAqIGNvbmZpZyBsb2FkLgorCSAqLworCXBlX29wLm9wID0gVkZJT19FRUhfUEVfSU5KRUNUX0VSUjsKKwlwZV9vcC5lcnIudHlwZSA9IEVFSF9FUlJfVFlQRV8zMjsKKwlwZV9vcC5lcnIuZnVuYyA9IEVFSF9FUlJfRlVOQ19MRF9DRkdfQUREUjsKKwlwZV9vcC5lcnIuYWRkciA9IDB1bDsKKwlwZV9vcC5lcnIubWFzayA9IDB1bDsKKwlpb2N0bChjb250YWluZXIsIFZGSU9fRUVIX1BFX09QLCAmcGVfb3ApOworCisJLi4uLgorCisJLyogV2hlbiAweEZGJ3MgcmV0dXJuZWQgZnJvbSByZWFkaW5nIFBDSSBjb25maWcgc3BhY2Ugb3IgSU8gQkFScworCSAqIG9mIHRoZSBQQ0kgZGV2aWNlLiBDaGVjayB0aGUgUEUncyBzdGF0ZSB0byBzZWUgaWYgdGhhdCBoYXMgYmVlbgorCSAqIGZyb3plbi4KKwkgKi8KKwlpb2N0bChjb250YWluZXIsIFZGSU9fRUVIX1BFX09QLCAmcGVfb3ApOworCisJLyogV2FpdGluZyBmb3IgcGVuZGluZyBQQ0kgdHJhbnNhY3Rpb25zIHRvIGJlIGNvbXBsZXRlZCBhbmQgZG9uJ3QKKwkgKiBwcm9kdWNlIGFueSBtb3JlIFBDSSB0cmFmZmljIGZyb20vdG8gdGhlIGFmZmVjdGVkIFBFIHVudGlsCisJICogcmVjb3ZlcnkgaXMgZmluaXNoZWQuCisJICovCisKKwkvKiBFbmFibGUgSU8gZm9yIHRoZSBhZmZlY3RlZCBQRSBhbmQgY29sbGVjdCBsb2dzLiBVc3VhbGx5LCB0aGUKKwkgKiBzdGFuZGFyZCBwYXJ0IG9mIFBDSSBjb25maWcgc3BhY2UsIEFFUiByZWdpc3RlcnMgYXJlIGR1bXBlZAorCSAqIGFzIGxvZ3MgZm9yIGZ1cnRoZXIgYW5hbHlzaXMuCisJICovCisJcGVfb3Aub3AgPSBWRklPX0VFSF9QRV9VTkZSRUVaRV9JTzsKKwlpb2N0bChjb250YWluZXIsIFZGSU9fRUVIX1BFX09QLCAmcGVfb3ApOworCisJLyoKKwkgKiBJc3N1ZSBQRSByZXNldDogaG90IG9yIGZ1bmRhbWVudGFsIHJlc2V0LiBVc3VhbGx5LCBob3QgcmVzZXQKKwkgKiBpcyBlbm91Z2guIEhvd2V2ZXIsIHRoZSBmaXJtd2FyZSBvZiBzb21lIFBDSSBhZGFwdGVycyB3b3VsZAorCSAqIHJlcXVpcmUgZnVuZGFtZW50YWwgcmVzZXQuCisJICovCisJcGVfb3Aub3AgPSBWRklPX0VFSF9QRV9SRVNFVF9IT1Q7CisJaW9jdGwoY29udGFpbmVyLCBWRklPX0VFSF9QRV9PUCwgJnBlX29wKTsKKwlwZV9vcC5vcCA9IFZGSU9fRUVIX1BFX1JFU0VUX0RFQUNUSVZBVEU7CisJaW9jdGwoY29udGFpbmVyLCBWRklPX0VFSF9QRV9PUCwgJnBlX29wKTsKKworCS8qIENvbmZpZ3VyZSB0aGUgUENJIGJyaWRnZXMgZm9yIHRoZSBhZmZlY3RlZCBQRSAqLworCXBlX29wLm9wID0gVkZJT19FRUhfUEVfQ09ORklHVVJFOworCWlvY3RsKGNvbnRhaW5lciwgVkZJT19FRUhfUEVfT1AsICZwZV9vcCk7CisKKwkvKiBSZXN0b3JlZCBzdGF0ZSB3ZSBzYXZlZCBhdCBpbml0aWFsaXphdGlvbiB0aW1lLiBwY2lfcmVzdG9yZV9zdGF0ZSgpCisJICogaXMgZ29vZCBlbm91Z2ggYXMgYW4gZXhhbXBsZS4KKwkgKi8KKworCS8qIEhvcGVmdWxseSwgZXJyb3IgaXMgcmVjb3ZlcmVkIHN1Y2Nlc3NmdWxseS4gTm93LCB5b3UgY2FuIHJlc3VtZSB0bworCSAqIHN0YXJ0IFBDSSB0cmFmZmljIHRvL2Zyb20gdGhlIGFmZmVjdGVkIFBFLgorCSAqLworCisJLi4uLgorCis1KSBUaGVyZSBpcyB2MiBvZiBTUEFQUiBUQ0UgSU9NTVUuIEl0IGRlcHJlY2F0ZXMgVkZJT19JT01NVV9FTkFCTEUvCitWRklPX0lPTU1VX0RJU0FCTEUgYW5kIGltcGxlbWVudHMgMiBuZXcgaW9jdGxzOgorVkZJT19JT01NVV9TUEFQUl9SRUdJU1RFUl9NRU1PUlkgYW5kIFZGSU9fSU9NTVVfU1BBUFJfVU5SRUdJU1RFUl9NRU1PUlkKKyh3aGljaCBhcmUgdW5zdXBwb3J0ZWQgaW4gdjEgSU9NTVUpLgorCitQUEM2NCBwYXJhdmlydHVhbGl6ZWQgZ3Vlc3RzIGdlbmVyYXRlIGEgbG90IG9mIG1hcC91bm1hcCByZXF1ZXN0cywKK2FuZCB0aGUgaGFuZGxpbmcgb2YgdGhvc2UgaW5jbHVkZXMgcGlubmluZy91bnBpbm5pbmcgcGFnZXMgYW5kIHVwZGF0aW5nCittbTo6bG9ja2VkX3ZtIGNvdW50ZXIgdG8gbWFrZSBzdXJlIHdlIGRvIG5vdCBleGNlZWQgdGhlIHJsaW1pdC4KK1RoZSB2MiBJT01NVSBzcGxpdHMgYWNjb3VudGluZyBhbmQgcGlubmluZyBpbnRvIHNlcGFyYXRlIG9wZXJhdGlvbnM6CisKKy0gVkZJT19JT01NVV9TUEFQUl9SRUdJU1RFUl9NRU1PUlkvVkZJT19JT01NVV9TUEFQUl9VTlJFR0lTVEVSX01FTU9SWSBpb2N0bHMKK3JlY2VpdmUgYSB1c2VyIHNwYWNlIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIGJsb2NrIHRvIGJlIHBpbm5lZC4KK0Jpc2VjdGluZyBpcyBub3Qgc3VwcG9ydGVkIGFuZCBWRklPX0lPTU1VX1VOUkVHSVNURVJfTUVNT1JZIGlzIGV4cGVjdGVkIHRvCitiZSBjYWxsZWQgd2l0aCB0aGUgZXhhY3QgYWRkcmVzcyBhbmQgc2l6ZSB1c2VkIGZvciByZWdpc3RlcmluZwordGhlIG1lbW9yeSBibG9jay4gVGhlIHVzZXJzcGFjZSBpcyBub3QgZXhwZWN0ZWQgdG8gY2FsbCB0aGVzZSBvZnRlbi4KK1RoZSByYW5nZXMgYXJlIHN0b3JlZCBpbiBhIGxpbmtlZCBsaXN0IGluIGEgVkZJTyBjb250YWluZXIuCisKKy0gVkZJT19JT01NVV9NQVBfRE1BL1ZGSU9fSU9NTVVfVU5NQVBfRE1BIGlvY3RscyBvbmx5IHVwZGF0ZSB0aGUgYWN0dWFsCitJT01NVSB0YWJsZSBhbmQgZG8gbm90IGRvIHBpbm5pbmc7IGluc3RlYWQgdGhlc2UgY2hlY2sgdGhhdCB0aGUgdXNlcnNwYWNlCithZGRyZXNzIGlzIGZyb20gcHJlLXJlZ2lzdGVyZWQgcmFuZ2UuCisKK1RoaXMgc2VwYXJhdGlvbiBoZWxwcyBpbiBvcHRpbWl6aW5nIERNQSBmb3IgZ3Vlc3RzLgorCis2KSBzUEFQUiBzcGVjaWZpY2F0aW9uIGFsbG93cyBndWVzdHMgdG8gaGF2ZSBhbiBhZGRpdGlvbmFsIERNQSB3aW5kb3cocykgb24KK2EgUENJIGJ1cyB3aXRoIGEgdmFyaWFibGUgcGFnZSBzaXplLiBUd28gaW9jdGxzIGhhdmUgYmVlbiBhZGRlZCB0byBzdXBwb3J0Cit0aGlzOiBWRklPX0lPTU1VX1NQQVBSX1RDRV9DUkVBVEUgYW5kIFZGSU9fSU9NTVVfU1BBUFJfVENFX1JFTU9WRS4KK1RoZSBwbGF0Zm9ybSBoYXMgdG8gc3VwcG9ydCB0aGUgZnVuY3Rpb25hbGl0eSBvciBlcnJvciB3aWxsIGJlIHJldHVybmVkIHRvCit0aGUgdXNlcnNwYWNlLiBUaGUgZXhpc3RpbmcgaGFyZHdhcmUgc3VwcG9ydHMgdXAgdG8gMiBETUEgd2luZG93cywgb25lIGlzCisyR0IgbG9uZywgdXNlcyA0SyBwYWdlcyBhbmQgY2FsbGVkICJkZWZhdWx0IDMyYml0IHdpbmRvdyI7IHRoZSBvdGhlciBjYW4KK2JlIGFzIGJpZyBhcyBlbnRpcmUgUkFNLCB1c2UgZGlmZmVyZW50IHBhZ2Ugc2l6ZSwgaXQgaXMgb3B0aW9uYWwgLSBndWVzdHMKK2NyZWF0ZSB0aG9zZSBpbiBydW4tdGltZSBpZiB0aGUgZ3Vlc3QgZHJpdmVyIHN1cHBvcnRzIDY0Yml0IERNQS4KKworVkZJT19JT01NVV9TUEFQUl9UQ0VfQ1JFQVRFIHJlY2VpdmVzIGEgcGFnZSBzaGlmdCwgYSBETUEgd2luZG93IHNpemUgYW5kCithIG51bWJlciBvZiBUQ0UgdGFibGUgbGV2ZWxzIChpZiBhIFRDRSB0YWJsZSBpcyBnb2luZyB0byBiZSBiaWcgZW5vdWdoIGFuZAordGhlIGtlcm5lbCBtYXkgbm90IGJlIGFibGUgdG8gYWxsb2NhdGUgZW5vdWdoIG9mIHBoeXNpY2FsbHkgY29udGlndW91cyBtZW1vcnkpLgorSXQgY3JlYXRlcyBhIG5ldyB3aW5kb3cgaW4gdGhlIGF2YWlsYWJsZSBzbG90IGFuZCByZXR1cm5zIHRoZSBidXMgYWRkcmVzcyB3aGVyZQordGhlIG5ldyB3aW5kb3cgc3RhcnRzLiBEdWUgdG8gaGFyZHdhcmUgbGltaXRhdGlvbiwgdGhlIHVzZXIgc3BhY2UgY2Fubm90IGNob29zZQordGhlIGxvY2F0aW9uIG9mIERNQSB3aW5kb3dzLgorCitWRklPX0lPTU1VX1NQQVBSX1RDRV9SRU1PVkUgcmVjZWl2ZXMgdGhlIGJ1cyBzdGFydCBhZGRyZXNzIG9mIHRoZSB3aW5kb3cKK2FuZCByZW1vdmVzIGl0LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1sxXSBWRklPIHdhcyBvcmlnaW5hbGx5IGFuIGFjcm9ueW0gZm9yICJWaXJ0dWFsIEZ1bmN0aW9uIEkvTyIgaW4gaXRzCitpbml0aWFsIGltcGxlbWVudGF0aW9uIGJ5IFRvbSBMeW9uIHdoaWxlIGFzIENpc2NvLiAgV2UndmUgc2luY2UKK291dGdyb3duIHRoZSBhY3JvbnltLCBidXQgaXQncyBjYXRjaHkuCisKK1syXSAic2FmZSIgYWxzbyBkZXBlbmRzIHVwb24gYSBkZXZpY2UgYmVpbmcgIndlbGwgYmVoYXZlZCIuICBJdCdzCitwb3NzaWJsZSBmb3IgbXVsdGktZnVuY3Rpb24gZGV2aWNlcyB0byBoYXZlIGJhY2tkb29ycyBiZXR3ZWVuCitmdW5jdGlvbnMgYW5kIGV2ZW4gZm9yIHNpbmdsZSBmdW5jdGlvbiBkZXZpY2VzIHRvIGhhdmUgYWx0ZXJuYXRpdmUKK2FjY2VzcyB0byB0aGluZ3MgbGlrZSBQQ0kgY29uZmlnIHNwYWNlIHRocm91Z2ggTU1JTyByZWdpc3RlcnMuICBUbworZ3VhcmQgYWdhaW5zdCB0aGUgZm9ybWVyIHdlIGNhbiBpbmNsdWRlIGFkZGl0aW9uYWwgcHJlY2F1dGlvbnMgaW4gdGhlCitJT01NVSBkcml2ZXIgdG8gZ3JvdXAgbXVsdGktZnVuY3Rpb24gUENJIGRldmljZXMgdG9nZXRoZXIKKyhpb21tdT1ncm91cF9tZikuICBUaGUgbGF0dGVyIHdlIGNhbid0IHByZXZlbnQsIGJ1dCB0aGUgSU9NTVUgc2hvdWxkCitzdGlsbCBwcm92aWRlIGlzb2xhdGlvbi4gIEZvciBQQ0ksIFNSLUlPViBWaXJ0dWFsIEZ1bmN0aW9ucyBhcmUgdGhlCitiZXN0IGluZGljYXRvciBvZiAid2VsbCBiZWhhdmVkIiwgYXMgdGhlc2UgYXJlIGRlc2lnbmVkIGZvcgordmlydHVhbGl6YXRpb24gdXNhZ2UgbW9kZWxzLgorCitbM10gQXMgYWx3YXlzIHRoZXJlIGFyZSB0cmFkZS1vZmZzIHRvIHZpcnR1YWwgbWFjaGluZSBkZXZpY2UKK2Fzc2lnbm1lbnQgdGhhdCBhcmUgYmV5b25kIHRoZSBzY29wZSBvZiBWRklPLiAgSXQncyBleHBlY3RlZCB0aGF0CitmdXR1cmUgSU9NTVUgdGVjaG5vbG9naWVzIHdpbGwgcmVkdWNlIHNvbWUsIGJ1dCBtYXliZSBub3QgYWxsLCBvZgordGhlc2UgdHJhZGUtb2Zmcy4KKworWzRdIEluIHRoaXMgY2FzZSB0aGUgZGV2aWNlIGlzIGJlbG93IGEgUENJIGJyaWRnZSwgc28gdHJhbnNhY3Rpb25zCitmcm9tIGVpdGhlciBmdW5jdGlvbiBvZiB0aGUgZGV2aWNlIGFyZSBpbmRpc3Rpbmd1aXNoYWJsZSB0byB0aGUgaW9tbXU6CisKKy1bMDAwMDowMF0tKy0xZS4wLVswNl0tLSstMGQuMAorICAgICAgICAgICAgICAgICAgICAgICAgXC0wZC4xCisKKzAwOjFlLjAgUENJIGJyaWRnZTogSW50ZWwgQ29ycG9yYXRpb24gODI4MDEgUENJIEJyaWRnZSAocmV2IDkwKQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92Z2FhcmJpdGVyLnR4dCBiL0RvY3VtZW50YXRpb24vdmdhYXJiaXRlci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE0NDIzZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmdhYXJiaXRlci50eHQKQEAgLTAsMCArMSwxOTIgQEAKKworVkdBIEFyYml0ZXIKKz09PT09PT09PT09CisKK0dyYXBoaWMgZGV2aWNlcyBhcmUgYWNjZXNzZWQgdGhyb3VnaCByYW5nZXMgaW4gSS9PIG9yIG1lbW9yeSBzcGFjZS4gV2hpbGUgbW9zdAorbW9kZXJuIGRldmljZXMgYWxsb3cgcmVsb2NhdGlvbiBvZiBzdWNoIHJhbmdlcywgc29tZSAiTGVnYWN5IiBWR0EgZGV2aWNlcworaW1wbGVtZW50ZWQgb24gUENJIHdpbGwgdHlwaWNhbGx5IGhhdmUgdGhlIHNhbWUgImhhcmQtZGVjb2RlZCIgYWRkcmVzc2VzIGFzCit0aGV5IGRpZCBvbiBJU0EuIEZvciBtb3JlIGRldGFpbHMgc2VlICJQQ0kgQnVzIEJpbmRpbmcgdG8gSUVFRSBTdGQgMTI3NS0xOTk0CitTdGFuZGFyZCBmb3IgQm9vdCAoSW5pdGlhbGl6YXRpb24gQ29uZmlndXJhdGlvbikgRmlybXdhcmUgUmV2aXNpb24gMi4xIgorU2VjdGlvbiA3LCBMZWdhY3kgRGV2aWNlcy4KKworVGhlIFJlc291cmNlIEFjY2VzcyBDb250cm9sIChSQUMpIG1vZHVsZSBpbnNpZGUgdGhlIFggc2VydmVyIFswXSBleGlzdGVkIGZvcgordGhlIGxlZ2FjeSBWR0EgYXJiaXRyYXRpb24gdGFzayAoYmVzaWRlcyBvdGhlciBidXMgbWFuYWdlbWVudCB0YXNrcykgd2hlbiBtb3JlCit0aGFuIG9uZSBsZWdhY3kgZGV2aWNlIGNvLWV4aXN0cyBvbiB0aGUgc2FtZSBtYWNoaW5lLiBCdXQgdGhlIHByb2JsZW0gaGFwcGVucword2hlbiB0aGVzZSBkZXZpY2VzIGFyZSB0cnlpbmcgdG8gYmUgYWNjZXNzZWQgYnkgZGlmZmVyZW50IHVzZXJzcGFjZSBjbGllbnRzCisoZS5nLiB0d28gc2VydmVyIGluIHBhcmFsbGVsKS4gVGhlaXIgYWRkcmVzcyBhc3NpZ25tZW50cyBjb25mbGljdC4gTW9yZW92ZXIsCitpZGVhbGx5LCBiZWluZyBhIHVzZXJzcGFjZSBhcHBsaWNhdGlvbiwgaXQgaXMgbm90IHRoZSByb2xlIG9mIHRoZSBYIHNlcnZlciB0bworY29udHJvbCBidXMgcmVzb3VyY2VzLiBUaGVyZWZvcmUgYW4gYXJiaXRyYXRpb24gc2NoZW1lIG91dHNpZGUgb2YgdGhlIFggc2VydmVyCitpcyBuZWVkZWQgdG8gY29udHJvbCB0aGUgc2hhcmluZyBvZiB0aGVzZSByZXNvdXJjZXMuIFRoaXMgZG9jdW1lbnQgaW50cm9kdWNlcwordGhlIG9wZXJhdGlvbiBvZiB0aGUgVkdBIGFyYml0ZXIgaW1wbGVtZW50ZWQgZm9yIHRoZSBMaW51eCBrZXJuZWwuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSS4gIERldGFpbHMgYW5kIFRoZW9yeSBvZiBPcGVyYXRpb24KKyAgICAgICAgSS4xIHZnYWFyYgorICAgICAgICBJLjIgbGlicGNpYWNjZXNzCisgICAgICAgIEkuMyB4Zjg2VkdBQXJiaXRlciAoWCBzZXJ2ZXIgaW1wbGVtZW50YXRpb24pCitJSS4gQ3JlZGl0cworSUlJLlJlZmVyZW5jZXMKKworCitJLiBEZXRhaWxzIGFuZCBUaGVvcnkgb2YgT3BlcmF0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0kuMSB2Z2FhcmIKKy0tLS0tLS0tLS0KKworVGhlIHZnYWFyYiBpcyBhIG1vZHVsZSBvZiB0aGUgTGludXggS2VybmVsLiBXaGVuIGl0IGlzIGluaXRpYWxseSBsb2FkZWQsIGl0CitzY2FucyBhbGwgUENJIGRldmljZXMgYW5kIGFkZHMgdGhlIFZHQSBvbmVzIGluc2lkZSB0aGUgYXJiaXRyYXRpb24uIFRoZQorYXJiaXRlciB0aGVuIGVuYWJsZXMvZGlzYWJsZXMgdGhlIGRlY29kaW5nIG9uIGRpZmZlcmVudCBkZXZpY2VzIG9mIHRoZSBWR0EKK2xlZ2FjeSBpbnN0cnVjdGlvbnMuIERldmljZXMgd2hpY2ggZG8gbm90IHdhbnQvbmVlZCB0byB1c2UgdGhlIGFyYml0ZXIgbWF5CitleHBsaWNpdGx5IHRlbGwgaXQgYnkgY2FsbGluZyB2Z2Ffc2V0X2xlZ2FjeV9kZWNvZGluZygpLgorCitUaGUga2VybmVsIGV4cG9ydHMgYSBjaGFyIGRldmljZSBpbnRlcmZhY2UgKC9kZXYvdmdhX2FyYml0ZXIpIHRvIHRoZSBjbGllbnRzLAord2hpY2ggaGFzIHRoZSBmb2xsb3dpbmcgc2VtYW50aWNzOgorCisgb3BlbiAgICAgICA6IG9wZW4gdXNlciBpbnN0YW5jZSBvZiB0aGUgYXJiaXRlci4gQnkgZGVmYXVsdCwgaXQncyBhdHRhY2hlZCB0bworICAgICAgICAgICAgICB0aGUgZGVmYXVsdCBWR0EgZGV2aWNlIG9mIHRoZSBzeXN0ZW0uCisKKyBjbG9zZSAgICAgIDogY2xvc2UgdXNlciBpbnN0YW5jZS4gUmVsZWFzZSBsb2NrcyBtYWRlIGJ5IHRoZSB1c2VyCisKKyByZWFkICAgICAgIDogcmV0dXJuIGEgc3RyaW5nIGluZGljYXRpbmcgdGhlIHN0YXR1cyBvZiB0aGUgdGFyZ2V0IGxpa2U6CisKKyAgICAgICAgICAgICAgIjxjYXJkX0lEPixkZWNvZGVzPTxpb19zdGF0ZT4sb3ducz08aW9fc3RhdGU+LGxvY2tzPTxpb19zdGF0ZT4gKGljLG1jKSIKKworICAgICAgICAgICAgICBBbiBJTyBzdGF0ZSBzdHJpbmcgaXMgb2YgdGhlIGZvcm0ge2lvLG1lbSxpbyttZW0sbm9uZX0sIG1jIGFuZAorICAgICAgICAgICAgICBpYyBhcmUgcmVzcGVjdGl2ZWx5IG1lbSBhbmQgaW8gbG9jayBjb3VudHMgKGZvciBkZWJ1Z2dpbmcvCisgICAgICAgICAgICAgIGRpYWdub3N0aWMgb25seSkuICJkZWNvZGVzIiBpbmRpY2F0ZSB3aGF0IHRoZSBjYXJkIGN1cnJlbnRseQorICAgICAgICAgICAgICBkZWNvZGVzLCAib3ducyIgaW5kaWNhdGVzIHdoYXQgaXMgY3VycmVudGx5IGVuYWJsZWQgb24gaXQsIGFuZAorICAgICAgICAgICAgICAibG9ja3MiIGluZGljYXRlcyB3aGF0IGlzIGxvY2tlZCBieSB0aGlzIGNhcmQuIElmIHRoZSBjYXJkIGlzCisgICAgICAgICAgICAgIHVucGx1Z2dlZCwgd2UgZ2V0ICJpbnZhbGlkIiB0aGVuIGZvciBjYXJkX0lEIGFuZCBhbiAtRU5PREVWCisgICAgICAgICAgICAgIGVycm9yIGlzIHJldHVybmVkIGZvciBhbnkgY29tbWFuZCB1bnRpbCBhIG5ldyBjYXJkIGlzIHRhcmdldGVkLgorCisKKyB3cml0ZSAgICAgICA6IHdyaXRlIGEgY29tbWFuZCB0byB0aGUgYXJiaXRlci4gTGlzdCBvZiBjb21tYW5kczoKKworICB0YXJnZXQgPGNhcmRfSUQ+ICAgOiBzd2l0Y2ggdGFyZ2V0IHRvIGNhcmQgPGNhcmRfSUQ+IChzZWUgYmVsb3cpCisgIGxvY2sgPGlvX3N0YXRlPiAgICA6IGFjcXVpcmVzIGxvY2tzIG9uIHRhcmdldCAoIm5vbmUiIGlzIGFuIGludmFsaWQgaW9fc3RhdGUpCisgIHRyeWxvY2sgPGlvX3N0YXRlPiA6IG5vbi1ibG9ja2luZyBhY3F1aXJlIGxvY2tzIG9uIHRhcmdldCAocmV0dXJucyBFQlVTWSBpZgorICAgICAgICAgICAgICAgICAgICAgICB1bnN1Y2Nlc3NmdWwpCisgIHVubG9jayA8aW9fc3RhdGU+ICA6IHJlbGVhc2UgbG9ja3Mgb24gdGFyZ2V0CisgIHVubG9jayBhbGwgICAgICAgICA6IHJlbGVhc2UgYWxsIGxvY2tzIG9uIHRhcmdldCBoZWxkIGJ5IHRoaXMgdXNlciAobm90CisgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGVkIHlldCkKKyAgZGVjb2RlcyA8aW9fc3RhdGU+IDogc2V0IHRoZSBsZWdhY3kgZGVjb2RpbmcgYXR0cmlidXRlcyBmb3IgdGhlIGNhcmQKKworICBwb2xsICAgICAgICAgICAgICAgOiBldmVudCBpZiBzb21ldGhpbmcgY2hhbmdlcyBvbiBhbnkgY2FyZCAobm90IGp1c3QgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCkKKworICBjYXJkX0lEIGlzIG9mIHRoZSBmb3JtICJQQ0k6ZG9tYWluOmJ1czpkZXYuZm4iLiBJdCBjYW4gYmUgc2V0IHRvICJkZWZhdWx0IgorICB0byBnbyBiYWNrIHRvIHRoZSBzeXN0ZW0gZGVmYXVsdCBjYXJkIChUT0RPOiBub3QgaW1wbGVtZW50ZWQgeWV0KS4gQ3VycmVudGx5LAorICBvbmx5IFBDSSBpcyBzdXBwb3J0ZWQgYXMgYSBwcmVmaXgsIGJ1dCB0aGUgdXNlcmxhbmQgQVBJIG1heSBzdXBwb3J0IG90aGVyIGJ1cworICB0eXBlcyBpbiB0aGUgZnV0dXJlLCBldmVuIGlmIHRoZSBjdXJyZW50IGtlcm5lbCBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0LgorCitOb3RlIGFib3V0IGxvY2tzOgorCitUaGUgZHJpdmVyIGtlZXBzIHRyYWNrIG9mIHdoaWNoIHVzZXIgaGFzIHdoaWNoIGxvY2tzIG9uIHdoaWNoIGNhcmQuIEl0CitzdXBwb3J0cyBzdGFja2luZywgbGlrZSB0aGUga2VybmVsIG9uZS4gVGhpcyBjb21wbGV4aWZpZXMgdGhlIGltcGxlbWVudGF0aW9uCithIGJpdCwgYnV0IG1ha2VzIHRoZSBhcmJpdGVyIG1vcmUgdG9sZXJhbnQgdG8gdXNlciBzcGFjZSBwcm9ibGVtcyBhbmQgYWJsZQordG8gcHJvcGVybHkgY2xlYW51cCBpbiBhbGwgY2FzZXMgd2hlbiBhIHByb2Nlc3MgZGllcy4KK0N1cnJlbnRseSwgYSBtYXggb2YgMTYgY2FyZHMgY2FuIGhhdmUgbG9ja3Mgc2ltdWx0YW5lb3VzbHkgaXNzdWVkIGZyb20KK3VzZXIgc3BhY2UgZm9yIGEgZ2l2ZW4gdXNlciAoZmlsZSBkZXNjcmlwdG9yIGluc3RhbmNlKSBvZiB0aGUgYXJiaXRlci4KKworSW4gdGhlIGNhc2Ugb2YgZGV2aWNlcyBob3Qte3VuLH1wbHVnZ2VkLCB0aGVyZSBpcyBhIGhvb2sgLSBwY2lfbm90aWZ5KCkgLSB0bworbm90aWZ5IHRoZW0gYmVpbmcgYWRkZWQvcmVtb3ZlZCBpbiB0aGUgc3lzdGVtIGFuZCBhdXRvbWF0aWNhbGx5IGFkZGVkL3JlbW92ZWQKK2luIHRoZSBhcmJpdGVyLgorCitUaGVyZSBpcyBhbHNvIGFuIGluLWtlcm5lbCBBUEkgb2YgdGhlIGFyYml0ZXIgaW4gY2FzZSBEUk0sIHZnYWNvbiwgb3Igb3RoZXIKK2RyaXZlcnMgd2FudCB0byB1c2UgaXQuCisKKworSS4yIGxpYnBjaWFjY2VzcworLS0tLS0tLS0tLS0tLS0tLQorCitUbyB1c2UgdGhlIHZnYSBhcmJpdGVyIGNoYXIgZGV2aWNlIGl0IHdhcyBpbXBsZW1lbnRlZCBhbiBBUEkgaW5zaWRlIHRoZQorbGlicGNpYWNjZXNzIGxpYnJhcnkuIE9uZSBmaWVsZCB3YXMgYWRkZWQgdG8gc3RydWN0IHBjaV9kZXZpY2UgKGVhY2ggZGV2aWNlCitvbiB0aGUgc3lzdGVtKToKKworICAgIC8qIHRoZSB0eXBlIG9mIHJlc291cmNlIGRlY29kZWQgYnkgdGhlIGRldmljZSAqLworICAgIGludCB2Z2FhcmJfcnNyYzsKKworQmVzaWRlcyBpdCwgaW4gcGNpX3N5c3RlbSB3ZXJlIGFkZGVkOgorCisgICAgaW50IHZnYWFyYl9mZDsKKyAgICBpbnQgdmdhX2NvdW50OworICAgIHN0cnVjdCBwY2lfZGV2aWNlICp2Z2FfdGFyZ2V0OworICAgIHN0cnVjdCBwY2lfZGV2aWNlICp2Z2FfZGVmYXVsdF9kZXY7CisKKworVGhlIHZnYV9jb3VudCBpcyB1c2VkIHRvIHRyYWNrIGhvdyBtYW55IGNhcmRzIGFyZSBiZWluZyBhcmJpdHJhdGVkLCBzbyBmb3IKK2luc3RhbmNlLCBpZiB0aGVyZSBpcyBvbmx5IG9uZSBjYXJkLCB0aGVuIGl0IGNhbiBjb21wbGV0ZWx5IGVzY2FwZSBhcmJpdHJhdGlvbi4KKworCitUaGVzZSBmdW5jdGlvbnMgYmVsb3cgYWNxdWlyZSBWR0EgcmVzb3VyY2VzIGZvciB0aGUgZ2l2ZW4gY2FyZCBhbmQgbWFyayB0aG9zZQorcmVzb3VyY2VzIGFzIGxvY2tlZC4gSWYgdGhlIHJlc291cmNlcyByZXF1ZXN0ZWQgYXJlICJub3JtYWwiIChhbmQgbm90IGxlZ2FjeSkKK3Jlc291cmNlcywgdGhlIGFyYml0ZXIgd2lsbCBmaXJzdCBjaGVjayB3aGV0aGVyIHRoZSBjYXJkIGlzIGRvaW5nIGxlZ2FjeQorZGVjb2RpbmcgZm9yIHRoYXQgdHlwZSBvZiByZXNvdXJjZS4gSWYgeWVzLCB0aGUgbG9jayBpcyAiY29udmVydGVkIiBpbnRvIGEKK2xlZ2FjeSByZXNvdXJjZSBsb2NrLiBUaGUgYXJiaXRlciB3aWxsIGZpcnN0IGxvb2sgZm9yIGFsbCBWR0EgY2FyZHMgdGhhdAorbWlnaHQgY29uZmxpY3QgYW5kIGRpc2FibGUgdGhlaXIgSU9zIGFuZC9vciBNZW1vcnkgYWNjZXNzLCBpbmNsdWRpbmcgVkdBCitmb3J3YXJkaW5nIG9uIFAyUCBicmlkZ2VzIGlmIG5lY2Vzc2FyeSwgc28gdGhhdCB0aGUgcmVxdWVzdGVkIHJlc291cmNlcyBjYW4KK2JlIHVzZWQuIFRoZW4sIHRoZSBjYXJkIGlzIG1hcmtlZCBhcyBsb2NraW5nIHRoZXNlIHJlc291cmNlcyBhbmQgdGhlIElPIGFuZC9vcgorTWVtb3J5IGFjY2VzcyBpcyBlbmFibGVkIG9uIHRoZSBjYXJkIChpbmNsdWRpbmcgVkdBIGZvcndhcmRpbmcgb24gcGFyZW50CitQMlAgYnJpZGdlcyBpZiBhbnkpLiBJbiB0aGUgY2FzZSBvZiB2Z2FfYXJiX2xvY2soKSwgdGhlIGZ1bmN0aW9uIHdpbGwgYmxvY2sKK2lmIHNvbWUgY29uZmxpY3RpbmcgY2FyZCBpcyBhbHJlYWR5IGxvY2tpbmcgb25lIG9mIHRoZSByZXF1aXJlZCByZXNvdXJjZXMgKG9yCithbnkgcmVzb3VyY2Ugb24gYSBkaWZmZXJlbnQgYnVzIHNlZ21lbnQsIHNpbmNlIFAyUCBicmlkZ2VzIGRvbid0IGRpZmZlcmVudGlhdGUKK1ZHQSBtZW1vcnkgYW5kIElPIGFmYWlrKS4gSWYgdGhlIGNhcmQgYWxyZWFkeSBvd25zIHRoZSByZXNvdXJjZXMsIHRoZSBmdW5jdGlvbgorc3VjY2VlZHMuICB2Z2FfYXJiX3RyeWxvY2soKSB3aWxsIHJldHVybiAoLUVCVVNZKSBpbnN0ZWFkIG9mIGJsb2NraW5nLiBOZXN0ZWQKK2NhbGxzIGFyZSBzdXBwb3J0ZWQgKGEgcGVyLXJlc291cmNlIGNvdW50ZXIgaXMgbWFpbnRhaW5lZCkuCisKKworU2V0IHRoZSB0YXJnZXQgZGV2aWNlIG9mIHRoaXMgY2xpZW50LgorICAgIGludCAgcGNpX2RldmljZV92Z2FhcmJfc2V0X3RhcmdldCAgIChzdHJ1Y3QgcGNpX2RldmljZSAqZGV2KTsKKworCitGb3IgaW5zdGFuY2UsIGluIHg4NiBpZiB0d28gZGV2aWNlcyBvbiB0aGUgc2FtZSBidXMgd2FudCB0byBsb2NrIGRpZmZlcmVudAorcmVzb3VyY2VzLCBib3RoIHdpbGwgc3VjY2VlZCAobG9jaykuIElmIGRldmljZXMgYXJlIGluIGRpZmZlcmVudCBidXNlcyBhbmQKK3RyeWluZyB0byBsb2NrIGRpZmZlcmVudCByZXNvdXJjZXMsIG9ubHkgdGhlIGZpcnN0IHdobyB0cmllZCBzdWNjZWVkcy4KKyAgICBpbnQgIHBjaV9kZXZpY2VfdmdhYXJiX2xvY2sgICAgICAgICAodm9pZCk7CisgICAgaW50ICBwY2lfZGV2aWNlX3ZnYWFyYl90cnlsb2NrICAgICAgKHZvaWQpOworCitVbmxvY2sgcmVzb3VyY2VzIG9mIGRldmljZS4KKyAgICBpbnQgIHBjaV9kZXZpY2VfdmdhYXJiX3VubG9jayAgICAgICAodm9pZCk7CisKK0luZGljYXRlcyB0byB0aGUgYXJiaXRlciBpZiB0aGUgY2FyZCBkZWNvZGVzIGxlZ2FjeSBWR0EgSU9zLCBsZWdhY3kgVkdBCitNZW1vcnksIGJvdGgsIG9yIG5vbmUuIEFsbCBjYXJkcyBkZWZhdWx0IHRvIGJvdGgsIHRoZSBjYXJkIGRyaXZlciAoZmJkZXYgZm9yCitleGFtcGxlKSBzaG91bGQgdGVsbCB0aGUgYXJiaXRlciBpZiBpdCBoYXMgZGlzYWJsZWQgbGVnYWN5IGRlY29kaW5nLCBzbyB0aGUKK2NhcmQgY2FuIGJlIGxlZnQgb3V0IG9mIHRoZSBhcmJpdHJhdGlvbiBwcm9jZXNzIChhbmQgY2FuIGJlIHNhZmUgdG8gdGFrZQoraW50ZXJydXB0cyBhdCBhbnkgdGltZS4KKyAgICBpbnQgIHBjaV9kZXZpY2VfdmdhYXJiX2RlY29kZXMgICAgICAoaW50IG5ld192Z2FhcmJfcnNyYyk7CisKK0Nvbm5lY3RzIHRvIHRoZSBhcmJpdGVyIGRldmljZSwgYWxsb2NhdGVzIHRoZSBzdHJ1Y3QKKyAgICBpbnQgIHBjaV9kZXZpY2VfdmdhYXJiX2luaXQgICAgICAgICAodm9pZCk7CisKK0Nsb3NlIHRoZSBjb25uZWN0aW9uCisgICAgdm9pZCBwY2lfZGV2aWNlX3ZnYWFyYl9maW5pICAgICAgICAgKHZvaWQpOworCisKK0kuMyB4Zjg2VkdBQXJiaXRlciAoWCBzZXJ2ZXIgaW1wbGVtZW50YXRpb24pCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisoVE9ETykKKworWCBzZXJ2ZXIgYmFzaWNhbGx5IHdyYXBzIGFsbCB0aGUgZnVuY3Rpb25zIHRoYXQgdG91Y2ggVkdBIHJlZ2lzdGVycyBzb21laG93LgorCisKK0lJLiBDcmVkaXRzCis9PT09PT09PT09PQorCitCZW5qYW1pbiBIZXJyZW5zY2htaWR0IChJQk0/KSBzdGFydGVkIHRoaXMgd29yayB3aGVuIGhlIGRpc2N1c3NlZCBzdWNoIGRlc2lnbgord2l0aCB0aGUgWG9yZyBjb21tdW5pdHkgaW4gMjAwNSBbMSwgMl0uIEluIHRoZSBlbmQgb2YgMjAwNywgUGF1bG8gWmFub25pIGFuZAorVGlhZ28gVmlnbmF0dGkgKGJvdGggb2YgQzNTTC9GZWRlcmFsIFVuaXZlcnNpdHkgb2YgUGFyYW7DoSkgcHJvY2VlZGVkIGhpcyB3b3JrCitlbmhhbmNpbmcgdGhlIGtlcm5lbCBjb2RlIHRvIGFkYXB0IGFzIGEga2VybmVsIG1vZHVsZSBhbmQgYWxzbyBkaWQgdGhlCitpbXBsZW1lbnRhdGlvbiBvZiB0aGUgdXNlciBzcGFjZSBzaWRlIFszXS4gTm93ICgyMDA5KSBUaWFnbyBWaWduYXR0aSBhbmQgRGF2ZQorQWlybGllIGZpbmFsbHkgcHV0IHRoaXMgd29yayBpbiBzaGFwZSBhbmQgcXVldWVkIHRvIEplc3NlIEJhcm5lcycgUENJIHRyZWUuCisKKworSUlJLiBSZWZlcmVuY2VzCis9PT09PT09PT09PT09PQorCitbMF0gaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL3hvcmcveHNlcnZlci9jb21taXQvP2lkPTRiNDI0NDhhMjM4OGQ0MGYyNTc3NzRmYmZmZGNjYWVhODdiZDAzNDcKK1sxXSBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmVzL3hvcmcvMjAwNS1NYXJjaC8wMDY2NjMuaHRtbAorWzJdIGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZXMveG9yZy8yMDA1LU1hcmNoLzAwNjc0NS5odG1sCitbM10gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy94b3JnLzIwMDctT2N0b2Jlci8wMjk1MDcuaHRtbApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlby1vdXRwdXQudHh0IGIvRG9jdW1lbnRhdGlvbi92aWRlby1vdXRwdXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MTcwMTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvLW91dHB1dC50eHQKQEAgLTAsMCArMSwzNCBAQAorCisJCVZpZGVvIE91dHB1dCBTd2l0Y2hlciBDb250cm9sCisJCX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJCTIwMDYgbHVtaW5nLnl1QGludGVsLmNvbQorCitUaGUgb3V0cHV0IHN5c2ZzIGNsYXNzIGRyaXZlciBwcm92aWRlcyBhbiBhYnN0cmFjdCB2aWRlbyBvdXRwdXQgbGF5ZXIgdGhhdAorY2FuIGJlIHVzZWQgdG8gaG9vayBwbGF0Zm9ybSBzcGVjaWZpYyBtZXRob2RzIHRvIGVuYWJsZS9kaXNhYmxlIHZpZGVvIG91dHB1dAorZGV2aWNlIHRocm91Z2ggY29tbW9uIHN5c2ZzIGludGVyZmFjZS4gRm9yIGV4YW1wbGUsIG9uIG15IElCTSBUaGlua1BhZCBUNDIKK2xhcHRvcCwgVGhlIEFDUEkgdmlkZW8gZHJpdmVyIHJlZ2lzdGVyZWQgaXRzIG91dHB1dCBkZXZpY2VzIGFuZCByZWFkL3dyaXRlCittZXRob2QgZm9yICdzdGF0ZScgd2l0aCBvdXRwdXQgc3lzZnMgY2xhc3MuIFRoZSB1c2VyIGludGVyZmFjZSB1bmRlciBzeXNmcyBpczoKKworbGludXg6L3N5cy9jbGFzcy92aWRlb19vdXRwdXQgIyB0cmVlIC4KKy4KK3wtLSBDUlQwCit8ICAgfC0tIGRldmljZSAtPiAuLi8uLi8uLi9kZXZpY2VzL3BjaTAwMDA6MDAvMDAwMDowMDowMS4wCit8ICAgfC0tIHN0YXRlCit8ICAgfC0tIHN1YnN5c3RlbSAtPiAuLi8uLi8uLi9jbGFzcy92aWRlb19vdXRwdXQKK3wgICBgLS0gdWV2ZW50Cit8LS0gRFZJMAorfCAgIHwtLSBkZXZpY2UgLT4gLi4vLi4vLi4vZGV2aWNlcy9wY2kwMDAwOjAwLzAwMDA6MDA6MDEuMAorfCAgIHwtLSBzdGF0ZQorfCAgIHwtLSBzdWJzeXN0ZW0gLT4gLi4vLi4vLi4vY2xhc3MvdmlkZW9fb3V0cHV0Cit8ICAgYC0tIHVldmVudAorfC0tIExDRDAKK3wgICB8LS0gZGV2aWNlIC0+IC4uLy4uLy4uL2RldmljZXMvcGNpMDAwMDowMC8wMDAwOjAwOjAxLjAKK3wgICB8LS0gc3RhdGUKK3wgICB8LS0gc3Vic3lzdGVtIC0+IC4uLy4uLy4uL2NsYXNzL3ZpZGVvX291dHB1dAorfCAgIGAtLSB1ZXZlbnQKK2AtLSBUVjAKKyAgIHwtLSBkZXZpY2UgLT4gLi4vLi4vLi4vZGV2aWNlcy9wY2kwMDAwOjAwLzAwMDA6MDA6MDEuMAorICAgfC0tIHN0YXRlCisgICB8LS0gc3Vic3lzdGVtIC0+IC4uLy4uLy4uL2NsYXNzL3ZpZGVvX291dHB1dAorICAgYC0tIHVldmVudAorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4LzRDQ3MudHh0IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC80Q0NzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTI0MWFmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC80Q0NzLnR4dApAQCAtMCwwICsxLDMyIEBACitHdWlkZWxpbmVzIGZvciBMaW51eDRMaW51eCBwaXhlbCBmb3JtYXQgNENDcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworR3VpZGVsaW5lcyBmb3IgVmlkZW80TGludXggNENDIGNvZGVzIGRlZmluZWQgdXNpbmcgdjRsMl9mb3VyY2MoKSBhcmUKK3NwZWNpZmllZCBpbiB0aGlzIGRvY3VtZW50LiBGaXJzdCBvZiB0aGUgY2hhcmFjdGVycyBkZWZpbmVzIHRoZSBuYXR1cmUgb2YKK3RoZSBwaXhlbCBmb3JtYXQsIGNvbXByZXNzaW9uIGFuZCBjb2xvdXIgc3BhY2UuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUKK290aGVyIHRocmVlIGNoYXJhY3RlcnMgZGVwZW5kcyBvbiB0aGUgZmlyc3Qgb25lLgorCitFeGlzdGluZyA0Q0NzIG1heSBub3Qgb2JleSB0aGVzZSBndWlkZWxpbmVzLgorCitGb3JtYXRzCis9PT09PT09CisKK1JhdyBiYXllcgorLS0tLS0tLS0tCisKK1RoZSBmb2xsb3dpbmcgZmlyc3QgY2hhcmFjdGVycyBhcmUgdXNlZCBieSByYXcgYmF5ZXIgZm9ybWF0czoKKworCUI6IHJhdyBiYXllciwgdW5jb21wcmVzc2VkCisJYjogcmF3IGJheWVyLCBEUENNIGNvbXByZXNzZWQKKwlhOiBBLWxhdyBjb21wcmVzc2VkCisJdTogdS1sYXcgY29tcHJlc3NlZAorCisybmQgY2hhcmFjdGVyOiBwaXhlbCBvcmRlcgorCUI6IEJHR1IKKwlHOiBHQlJHCisJZzogR1JCRworCVI6IFJHR0IKKworM3JkIGNoYXJhY3RlcjogdW5jb21wcmVzc2VkIGJpdHMtcGVyLXBpeGVsIDAtLTksIEEtLQorCis0dGggY2hhcmFjdGVyOiBjb21wcmVzc2VkIGJpdHMtcGVyLXBpeGVsIDAtLTksIEEtLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9BUEkuaHRtbCBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQVBJLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU2ZjhlZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQVBJLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIGxhbmc9ImVuIiB4bWw6bGFuZz0iZW4iPgorIDxoZWFkPgorICA8bWV0YSBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1JU08tODg1OS0yIiBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIC8+CisgIDx0aXRsZT5WNEwgQVBJPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+CisgIDxoMT5WaWRlbyBGb3IgTGludXggQVBJczwvaDE+CisgIDx0YWJsZSBib3JkZXI9IjAiPgorICAgPHRyPgorICAgIDx0ZD4KKyAgICAgPGEgaHJlZj0iaHR0cDovL2xpbnV4dHYub3JnL2Rvd25sb2Fkcy9sZWdhY3kvdmlkZW80bGludXgvQVBJL1Y0TDFfQVBJLmh0bWwiPlY0TCBvcmlnaW5hbCBBUEk8L2E+CisgICAgPC90ZD4KKyAgICA8dGQ+CisgICAgIE9ic29sZXRlZCBieSBWNEwyIEFQSQorICAgIDwvdGQ+CisgICA8L3RyPgorICAgPHRyPgorICAgIDx0ZD4KKyAgICAgPGEgaHJlZj0iaHR0cDovL3Y0bDJzcGVjLmJ5dGVzZXgub3JnL3NwZWMtc2luZ2xlL3Y0bDIuaHRtbCI+VjRMMiBBUEk8L2E+CisgICAgPC90ZD4KKyAgICA8dGQ+U2hvdWxkIGJlIHVzZWQgZm9yIG5ldyBwcm9qZWN0cworICAgIDwvdGQ+CisgICA8L3RyPgorICA8L3RhYmxlPgorIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQ0FSRExJU1QuYXUwODI4IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9DQVJETElTVC5hdTA4MjgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVhMjFkZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQ0FSRExJU1QuYXUwODI4CkBAIC0wLDAgKzEsNiBAQAorICAwIC0+IFVua25vd24gYm9hcmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGF1MDgyOCkKKyAgMSAtPiBIYXVwcGF1Z2UgSFZSOTUwUSAgICAgICAgICAgICAgICAgICAgICAgIChhdTA4MjgpICAgICAgICBbMjA0MDo3MjAwLDIwNDA6NzIxMCwyMDQwOjcyMTcsMjA0MDo3MjFiLDIwNDA6NzIxZSwyMDQwOjcyMWYsMjA0MDo3MjgwLDBmZDk6MDAwOCwyMDQwOjcyNjAsMjA0MDo3MjEzLDIwNDA6NzI3MF0KKyAgMiAtPiBIYXVwcGF1Z2UgSFZSODUwICAgICAgICAgICAgICAgICAgICAgICAgIChhdTA4MjgpICAgICAgICBbMjA0MDo3MjQwXQorICAzIC0+IERWaUNPIEZ1c2lvbkhEVFYgVVNCICAgICAgICAgICAgICAgICAgICAgKGF1MDgyOCkgICAgICAgIFswZmU5OmQ2MjBdCisgIDQgLT4gSGF1cHBhdWdlIEhWUjk1MFEgcmV2IHh4RjggICAgICAgICAgICAgICAoYXUwODI4KSAgICAgICAgWzIwNDA6NzIwMSwyMDQwOjcyMTEsMjA0MDo3MjgxXQorICA1IC0+IEhhdXBwYXVnZSBXb29kYnVyeSAgICAgICAgICAgICAgICAgICAgICAgKGF1MDgyOCkgICAgICAgIFswNWUxOjA0ODAsMjA0MDo4MjAwXQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9DQVJETElTVC5idHR2IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9DQVJETElTVC5idHR2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwOTJjMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0NBUkRMSVNULmJ0dHYKQEAgLTAsMCArMSwxNjcgQEAKKyAgMCAtPiAgKioqIFVOS05PV04vR0VORVJJQyAqKioKKyAgMSAtPiBNSVJPIFBDVFYKKyAgMiAtPiBIYXVwcGF1Z2UgKGJ0ODQ4KQorICAzIC0+IFNUQiwgR2F0ZXdheSBQL04gNjAwMDY5OSAoYnQ4NDgpCisgIDQgLT4gSW50ZWwgQ3JlYXRlIGFuZCBTaGFyZSBQQ0kvIFNtYXJ0IFZpZGVvIFJlY29yZGVyIElJSQorICA1IC0+IERpYW1vbmQgRFRWMjAwMAorICA2IC0+IEFWZXJNZWRpYSBUVlBob25lCisgIDcgLT4gTUFUUklYLVZpc2lvbiBNVi1EZWx0YQorICA4IC0+IExpZmV2aWV3IEZseVZpZGVvIElJIChCdDg0OCkgTFIyNiAvIE1BWEkgVFYgVmlkZW8gUENJMiBMUjI2CisgIDkgLT4gSU1TL0lYbWljcm8gVHVyYm9UVgorIDEwIC0+IEhhdXBwYXVnZSAoYnQ4NzgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMDA3MDoxM2ViLDAwNzA6MzkwMCwyNjM2OjEwYjRdCisgMTEgLT4gTUlSTyBQQ1RWIHBybworIDEyIC0+IEFEUyBUZWNobm9sb2dpZXMgQ2hhbm5lbCBTdXJmZXIgVFYgKGJ0ODQ4KQorIDEzIC0+IEFWZXJNZWRpYSBUVkNhcHR1cmUgOTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTQ2MTowMDAyLDE0NjE6MDAwNCwxNDYxOjAzMDBdCisgMTQgLT4gQWltc2xhYiBWaWRlbyBIaWdod2F5IFh0cmVtZSAoVkhYKQorIDE1IC0+IFpvbHRyaXggVFYtTWF4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYTFhMDphMGZjXQorIDE2IC0+IFByb2xpbmsgUGl4ZWx2aWV3IFBsYXlUViAoYnQ4NzgpCisgMTcgLT4gTGVhZHRlayBXaW5WaWV3IDYwMQorIDE4IC0+IEFWRUMgSW50ZXJjYXB0dXJlCisgMTkgLT4gTGlmZXZpZXcgRmx5VmlkZW8gSUkgRVogL0ZseUtpdCBMUjM4IEJ0ODQ4IChjYXB0dXJlIG9ubHkpCisgMjAgLT4gQ0VJIFJhZmZsZXMgQ2FyZAorIDIxIC0+IExpZmV2aWV3IEZseVZpZGVvIDk4LyBMdWNreSBTdGFyIEltYWdlIFdvcmxkIENvbmZlcmVuY2VUViBMUjUwCisgMjIgLT4gQXNrZXkgQ1BIMDUwLyBQaG9lYmUgVHYgTWFzdGVyICsgRk0gICAgICAgICAgICAgICAgIFsxNGZmOjMwMDJdCisgMjMgLT4gTW9kdWxhciBUZWNobm9sb2d5IE1NMjAxL01NMjAyL01NMjA1L01NMjEwL01NMjE1IFBDVFYsIGJ0ODc4IFsxNGM3OjAxMDFdCisgMjQgLT4gQXNrZXkgQ1BIMDVYLzA2WCAoYnQ4NzgpIFttYW55IHZlbmRvcnNdICAgICAgICAgICAgIFsxNDRmOjMwMDIsMTQ0ZjozMDA1LDE0NGY6NTAwMCwxNGZmOjMwMDBdCisgMjUgLT4gVGVycmF0ZWMgVGVycmFUVisgVmVyc2lvbiAxLjAgKEJ0ODQ4KS8gVGVycmEgVFZhbHVlIFZlcnNpb24gMS4wLyBWb2JpcyBUVi1Cb29zdGFyCisgMjYgLT4gSGF1cHBhdWdlIFdpbkNhbSBuZXdlciAoYnQ4NzgpCisgMjcgLT4gTGlmZXZpZXcgRmx5VmlkZW8gOTgvIE1BWEkgVFYgVmlkZW8gUENJMiBMUjUwCisgMjggLT4gVGVycmF0ZWMgVGVycmFUVisgVmVyc2lvbiAxLjEgKGJ0ODc4KSAgICAgICAgICAgICAgIFsxNTNiOjExMjcsMTg1MjoxODUyXQorIDI5IC0+IEltYWdlbmF0aW9uIFBYQzIwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTI5NToyMDBhXQorIDMwIC0+IExpZmV2aWV3IEZseVZpZGVvIDk4IExSNTAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMWY3ZjoxODUwXQorIDMxIC0+IEZvcm1hYyBpUHJvVFYsIEZvcm1hYyBQcm9UViBJIChidDg0OCkKKyAzMiAtPiBJbnRlbCBDcmVhdGUgYW5kIFNoYXJlIFBDSS8gU21hcnQgVmlkZW8gUmVjb3JkZXIgSUlJCisgMzMgLT4gVGVycmF0ZWMgVGVycmFUVmFsdWUgVmVyc2lvbiBCdDg3OCAgICAgICAgICAgICAgICAgIFsxNTNiOjExMTcsMTUzYjoxMTE4LDE1M2I6MTExOSwxNTNiOjExMWEsMTUzYjoxMTM0LDE1M2I6NTAxOF0KKyAzNCAtPiBMZWFkdGVrIFdpbkZhc3QgMjAwMC8gV2luRmFzdCAyMDAwIFhQICAgICAgICAgICAgICAgWzEwN2Q6NjYwNiwxMDdkOjY2MDksNjYwNjoyMTdkLGY2ZmY6ZmZmNl0KKyAzNSAtPiBMaWZldmlldyBGbHlWaWRlbyA5OCBMUjUwIC8gQ2hyb25vcyBWaWRlbyBTaHV0dGxlIElJIFsxODUxOjE4NTAsMTg1MTphMDUwXQorIDM2IC0+IExpZmV2aWV3IEZseVZpZGVvIDk4Rk0gTFI1MCAvIFR5cGhvb24gVFZpZXcgVFYvRk0gVHVuZXIgWzE4NTI6MTg1Ml0KKyAzNyAtPiBQcm9saW5rIFBpeGVsVmlldyBQbGF5VFYgcHJvCisgMzggLT4gQXNrZXkgQ1BIMDZYIFRWaWV3OTkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxNDRmOjMwMDAsMTQ0ZjphMDA1LGEwNGY6YTBmY10KKyAzOSAtPiBQaW5uYWNsZSBQQ1RWIFN0dWRpby9SYXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgWzExYmQ6MDAxMixiZDExOjEyMDAsYmQxMTpmZjAwLDExYmQ6ZmYxMl0KKyA0MCAtPiBTVEIgVFYgUENJIEZNLCBHYXRld2F5IFAvTiA2MDAwNzA0IChidDg3OCksIDNEZnggVm9vZG9vVFYgMTAwIFsxMGI0OjI2MzYsMTBiNDoyNjQ1LDEyMWE6MzA2MF0KKyA0MSAtPiBBVmVyTWVkaWEgVFZQaG9uZSA5OCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzE0NjE6MDAwMSwxNDYxOjAwMDNdCisgNDIgLT4gUHJvVmlkZW8gUFY5NTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthYTBjOjE0NmNdCisgNDMgLT4gTGl0dGxlIE9uQWlyIFRWCisgNDQgLT4gU2lnbWEgVFZJSS1GTQorIDQ1IC0+IE1BVFJJWC1WaXNpb24gTVYtRGVsdGEgMgorIDQ2IC0+IFpvbHRyaXggR2VuaWUgVFYvRk0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTViMDo0MDAwLDE1YjA6NDAwYSwxNWIwOjQwMGQsMTViMDo0MDEwLDE1YjA6NDAxNl0KKyA0NyAtPiBUZXJyYXRlYyBUVi9SYWRpbysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzE1M2I6MTEyM10KKyA0OCAtPiBBc2tleSBDUEgwM3gvIER5bmFsaW5rIE1hZ2ljIFRWaWV3CisgNDkgLT4gSU9EQVRBIEdWLUJDVFYzL1BDSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMGZjOjQwMjBdCisgNTAgLT4gUHJvbGluayBQVi1CVDg3OFArNEUgLyBQaXhlbFZpZXcgUGxheVRWIFBBSyAvIExlbmNvIE1YVFYtOTU3OCBDUAorIDUxIC0+IEVhZ2xlIFdpcmVsZXNzIENhcHJpY29ybjIgKGJ0ODc4QSkKKyA1MiAtPiBQaW5uYWNsZSBQQ1RWIFN0dWRpbyBQcm8KKyA1MyAtPiBUeXBob29uIFRWaWV3IFJEUyArIEZNIFN0ZXJlbyAvIEtOQzEgVFYgU3RhdGlvbiBSRFMKKyA1NCAtPiBMaWZldmlldyBGbHlWaWRlbyAyMDAwIC9GbHlWaWRlbyBBMi8gTGlmZXRlYyBMVCA5NDE1IFRWIFtMUjkwXQorIDU1IC0+IEFza2V5IENQSDAzMS8gQkVTVEJVWSBFYXN5IFRWCisgNTYgLT4gTGlmZXZpZXcgRmx5VmlkZW8gOThGTSBMUjUwICAgICAgICAgICAgICAgICAgICAgICAgIFthMDUxOjQxYTBdCisgNTcgLT4gR3JhbmRUZWMgJ0dyYW5kIFZpZGVvIENhcHR1cmUnIChCdDg0OCkgICAgICAgICAgICAgIFs0MzQ0OjQxNDJdCisgNTggLT4gQXNrZXkgQ1BIMDYwLyBQaG9lYmUgVFYgTWFzdGVyIE9ubHkgKE5vIEZNKQorIDU5IC0+IEFza2V5IENQSDAzeCBUViBDYXB0dXJlcgorIDYwIC0+IE1vZHVsYXIgVGVjaG5vbG9neSBNTTEwMFBDVFYKKyA2MSAtPiBBRyBFbGVjdHJvbmljcyBHTVYxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzE1Y2I6MDEwMV0KKyA2MiAtPiBBc2tleSBDUEgwNjEvIEJFU1RCVVkgRWFzeSBUViAoYnQ4NzgpCisgNjMgLT4gQVRJIFRWLVdvbmRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAyOjAwMDFdCisgNjQgLT4gQVRJIFRWLVdvbmRlciBWRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAyOjAwMDNdCisgNjUgLT4gTGlmZXZpZXcgRmx5VmlkZW8gMjAwMFMgTFI5MAorIDY2IC0+IFRlcnJhdGVjIFRWYWx1ZVJhZGlvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTUzYjoxMTM1LDE1M2I6ZmYzYl0KKyA2NyAtPiBJT0RBVEEgR1YtQkNUVjQvUENJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwZmM6NDA1MF0KKyA2OCAtPiAzRGZ4IFZvb2Rvb1RWIEZNIChFdXJvKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwYjQ6MjYzN10KKyA2OSAtPiBBY3RpdmUgSW1hZ2luZyBBSU1NUworIDcwIC0+IFByb2xpbmsgUGl4ZWx2aWV3IFBWLUJUODc4UCsgKFJldi40Qyw4RSkKKyA3MSAtPiBMaWZldmlldyBGbHlWaWRlbyA5OEVaIChjYXB0dXJlIG9ubHkpIExSNTEgICAgICAgICAgWzE4NTE6MTg1MV0KKyA3MiAtPiBQcm9saW5rIFBpeGVsdmlldyBQVi1CVDg3OFArOUIgKFBsYXlUViBQcm8gcmV2LjlCIEZNK05JQ0FNKSBbMTU1NDo0MDExXQorIDczIC0+IFNlbnNvcmF5IDMxMS82MTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbNjAwMDowMzExLDYwMDA6MDYxMV0KKyA3NCAtPiBSZW1vdGVWaXNpb24gTVggKFJWNjA1KQorIDc1IC0+IFBvd2VyY29sb3IgTVRWODc4LyBNVFY4NzhSLyBNVFY4NzhGCisgNzYgLT4gQ2Fub3B1cyBXaW5EVlIgUENJIChDT01QQVEgUHJlc2FyaW8gMzUyNEpQLCA1MTEySlApIFswZTExOjAwNzldCisgNzcgLT4gR3JhbmRUZWMgTXVsdGkgQ2FwdHVyZSBDYXJkIChCdDg3OCkKKyA3OCAtPiBKZXR3YXkgVFYvQ2FwdHVyZSBKVy1UVjg3OC1GQkssIEt3b3JsZCBLVy1UVjg3OFJGICAgWzBhMDE6MTdkZV0KKyA3OSAtPiBEU1AgRGVzaWduIFRDVklERU8KKyA4MCAtPiBIYXVwcGF1Z2UgV2luVFYgUFZSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAwNzA6NDUwMF0KKyA4MSAtPiBJT0RBVEEgR1YtQkNUVjUvUENJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwZmM6NDA3MCwxMGZjOmQwMThdCisgODIgLT4gT3NwcmV5IDEwMC8xNTAgKDg3OCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswMDcwOmZmMDBdCisgODMgLT4gT3NwcmV5IDEwMC8xNTAgKDg0OCkKKyA4NCAtPiBPc3ByZXkgMTAxICg4NDgpCisgODUgLT4gT3NwcmV5IDEwMS8xNTEKKyA4NiAtPiBPc3ByZXkgMTAxLzE1MSB3LyBzdmlkCisgODcgLT4gT3NwcmV5IDIwMC8yMDEvMjUwLzI1MQorIDg4IC0+IE9zcHJleSAyMDAvMjUwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMDA3MDpmZjAxXQorIDg5IC0+IE9zcHJleSAyMTAvMjIwLzIzMAorIDkwIC0+IE9zcHJleSA1MDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMDA3MDpmZjAyXQorIDkxIC0+IE9zcHJleSA1NDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMDA3MDpmZjA0XQorIDkyIC0+IE9zcHJleSAyMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMDA3MDpmZjAzXQorIDkzIC0+IElEUyBFYWdsZQorIDk0IC0+IFBpbm5hY2xlIFBDVFYgU2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTFiZDowMDFjXQorIDk1IC0+IEZvcm1hYyBQcm9UViBJSSAoYnQ4NzgpCisgOTYgLT4gTWFjaFRWCisgOTcgLT4gRXVyZXN5cyBQaWNvbG8KKyA5OCAtPiBQcm9WaWRlbyBQVjE1MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FhMDA6MTQ2MCxhYTAxOjE0NjEsYWEwMjoxNDYyLGFhMDM6MTQ2MyxhYTA0OjE0NjQsYWEwNToxNDY1LGFhMDY6MTQ2NixhYTA3OjE0NjddCisgOTkgLT4gQUQtVFZLNTAzCisxMDAgLT4gSGVyY3VsZXMgU21hcnQgVFYgU3RlcmVvCisxMDEgLT4gUGFjZSBUViAmIFJhZGlvIENhcmQKKzEwMiAtPiBJVkMtMjAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAwMDA6YTE1NSwwMDAxOmExNTUsMDAwMjphMTU1LDAwMDM6YTE1NSwwMTAwOmExNTUsMDEwMTphMTU1LDAxMDI6YTE1NSwwMTAzOmExNTUsMDgwMDphMTU1LDA4MDE6YTE1NSwwODAyOmExNTUsMDgwMzphMTU1XQorMTAzIC0+IEdyYW5kIFgtR3VhcmQgLyBUcnVzdCA4MTRQQ0kgICAgICAgICAgICAgICAgICAgICAgICBbMDMwNDowMTAyXQorMTA0IC0+IE5lYnVsYSBFbGVjdHJvbmljcyBEaWdpVFYgICAgICAgICAgICAgICAgICAgICAgICAgICBbMDA3MTowMTAxXQorMTA1IC0+IFByb1ZpZGVvIFBWMTQzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWEwMDoxNDMwLGFhMDA6MTQzMSxhYTAwOjE0MzIsYWEwMDoxNDMzLGFhMDM6MTQzM10KKzEwNiAtPiBQSFlURUMgVkQtMDA5LVgxIFZELTAxMSBNaW5pRElOIChidDg3OCkKKzEwNyAtPiBQSFlURUMgVkQtMDA5LVgxIFZELTAxMSBDb21iaSAoYnQ4NzgpCisxMDggLT4gUEhZVEVDIFZELTAwOSBNaW5pRElOIChidDg3OCkKKzEwOSAtPiBQSFlURUMgVkQtMDA5IENvbWJpIChidDg3OCkKKzExMCAtPiBJVkMtMTAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZmMDA6YTEzMl0KKzExMSAtPiBJVkMtMTIwRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZmMDA6YTE4MixmZjAxOmExODIsZmYwMjphMTgyLGZmMDM6YTE4MixmZjA0OmExODIsZmYwNTphMTgyLGZmMDY6YTE4MixmZjA3OmExODIsZmYwODphMTgyLGZmMDk6YTE4MixmZjBhOmExODIsZmYwYjphMTgyLGZmMGM6YTE4MixmZjBkOmExODIsZmYwZTphMTgyLGZmMGY6YTE4Ml0KKzExMiAtPiBwY0hEVFYgSEQtMjAwMCBUViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzcwNjM6MjAwMF0KKzExMyAtPiBUd2luaGFuIERTVCArIGNsb25lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzExYmQ6MDAyNiwxODIyOjAwMDEsMjcwZjpmYzAwLDE4MjI6MDAyNl0KKzExNCAtPiBXaW5mYXN0IFZDMTAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwN2Q6NjYwN10KKzExNSAtPiBUZXBwcm8gVEVWLTU2MC9JbnRlclZpc2lvbiBJVi01NjAKKzExNiAtPiBTSU1VUyBHVkMxMTAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FhNmE6ODJiMl0KKzExNyAtPiBOR1MgTkdTVFYrCisxMTggLT4gTE1MQlQ0CisxMTkgLT4gVGVrcmFtIE0yMDUgUFJPCisxMjAgLT4gQ29uY2VwdHJvbmljIENPTlRWRk1pCisxMjEgLT4gRXVyZXN5cyBQaWNvbG8gVGV0cmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxODA1OjAxMDUsMTgwNTowMTA2LDE4MDU6MDEwNywxODA1OjAxMDhdCisxMjIgLT4gU3Bpcml0IFRWIFR1bmVyCisxMjMgLT4gQVZlck1lZGlhIEFWZXJUViBEVkItVCA3NzEgICAgICAgICAgICAgICAgICAgICAgICAgIFsxNDYxOjA3NzFdCisxMjQgLT4gQXZlck1lZGlhIEF2ZXJUViBEVkItVCA3NjEgICAgICAgICAgICAgICAgICAgICAgICAgIFsxNDYxOjA3NjFdCisxMjUgLT4gTUFUUklYIFZpc2lvbiBTaWdtYS1TUQorMTI2IC0+IE1BVFJJWCBWaXNpb24gU2lnbWEtU0xDCisxMjcgLT4gQVBBQyBWaWV3Y29tcCA4NzgoQU1BWCkKKzEyOCAtPiBEVmlDTyBGdXNpb25IRFRWIERWQi1UIExpdGUgICAgICAgICAgICAgICAgICAgICAgICAgWzE4YWM6ZGIxMCwxOGFjOmRiMTFdCisxMjkgLT4gVi1HZWFyIE15VkNECisxMzAgLT4gU3VwZXIgVFYgVHVuZXIKKzEzMSAtPiBUaWJldCBTeXN0ZW1zICdQcm9ncmVzcyBEVlInIENTMTYKKzEzMiAtPiBLb2RpY29tIDQ0MDBSIChtYXN0ZXIpCisxMzMgLT4gS29kaWNvbSA0NDAwUiAoc2xhdmUpCisxMzQgLT4gQWRsaW5rIFJUVjI0CisxMzUgLT4gRFZpQ08gRnVzaW9uSERUViA1IExpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxOGFjOmQ1MDBdCisxMzYgLT4gQWNvcnAgWTg3OEYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs5NTExOjE1NDBdCisxMzcgLT4gQ29uY2VwdHJvbmljIENUVkZNaSB2MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswMzZlOjEwOWVdCisxMzggLT4gUHJvbGluayBQaXhlbHZpZXcgUFYtQlQ4NzhQKyAoUmV2LjJFKQorMTM5IC0+IFByb2xpbmsgUGl4ZWxWaWV3IFBsYXlUViBNUEVHMiBQVi1NNDkwMAorMTQwIC0+IE9zcHJleSA0NDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMDA3MDpmZjA3XQorMTQxIC0+IEFzb3VuZCBTa3lleWUgUENUVgorMTQyIC0+IFNhYnJlbnQgVFYtRk0gKGJ0dHYgdmVyc2lvbikKKzE0MyAtPiBIYXVwcGF1Z2UgSW1wYWN0VkNCIChidDg3OCkgICAgICAgICAgICAgICAgICAgICAgICAgWzAwNzA6MTNlYl0KKzE0NCAtPiBNYWdpY1RWCisxNDUgLT4gU1NBSSBTZWN1cml0eSBWaWRlbyBJbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgIFs0MTQ5OjUzNTNdCisxNDYgLT4gU1NBSSBVbHRyYXNvdW5kIFZpZGVvIEludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgIFs0MTRhOjUzNTNdCisxNDcgLT4gVm9vZG9vVFYgMjAwIChVU0EpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMjFhOjMwMDBdCisxNDggLT4gRFZpQ08gRnVzaW9uSERUViAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYmMwOmQyMDBdCisxNDkgLT4gVHlwaG9vbiBUVi1UdW5lciBQQ0kgKDUwNjg0KQorMTUwIC0+IEdlb3Zpc2lvbiBHVi02MDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMDA4YTo3NjNjXQorMTUxIC0+IEtvenVtaSBLVFYtMDFDCisxNTIgLT4gRW5jb3JlIEVOTCBUVi1GTS0yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDAwOjE4MDFdCisxNTMgLT4gUEhZVEVDIFZELTAxMiAoYnQ4NzgpCisxNTQgLT4gUEhZVEVDIFZELTAxMi1YMSAoYnQ4NzgpCisxNTUgLT4gUEhZVEVDIFZELTAxMi1YMiAoYnQ4NzgpCisxNTYgLT4gSVZDRS04Nzg0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswMDAwOmYwNTAsMDAwMTpmMDUwLDAwMDI6ZjA1MCwwMDAzOmYwNTBdCisxNTcgLT4gR2VvdmlzaW9uIEdWLTgwMChTKSAobWFzdGVyKSAgICAgICAgICAgICAgICAgICAgICAgIFs4MDBhOjc2M2RdCisxNTggLT4gR2VvdmlzaW9uIEdWLTgwMChTKSAoc2xhdmUpICAgICAgICAgICAgICAgICAgICAgICAgIFs4MDBiOjc2M2QsODAwYzo3NjNkLDgwMGQ6NzYzZF0KKzE1OSAtPiBQcm9WaWRlbyBQVjE4MyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzE4MzA6MTU0MCwxODMxOjE1NDAsMTgzMjoxNTQwLDE4MzM6MTU0MCwxODM0OjE1NDAsMTgzNToxNTQwLDE4MzY6MTU0MCwxODM3OjE1NDBdCisxNjAgLT4gVG9uZ3dlaSBWaWRlbyBUZWNobm9sb2d5IFRELTMxMTYgICAgICAgICAgICAgICAgICAgIFtmMjAwOjMxMTZdCisxNjEgLT4gQXBvc29uaWMgVy1EVlIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswMjc5OjAyMjhdCisxNjIgLT4gQWRsaW5rIE1QRzI0CisxNjMgLT4gQnQ4NDggQ2FwdHVyZSAxNE1IegorMTY0IC0+IEN5YmVyVmlzaW9uIENWMDYgKFNWKQorMTY1IC0+IEt3b3JsZCBWLVN0cmVhbSBYcGVydCBUViBQVlI4NzgKKzE2NiAtPiBQQ0ktODYwNFBXCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0NBUkRMSVNULmN4MjM4ODUgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0NBUkRMSVNULmN4MjM4ODUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRhNGNmYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQ0FSRExJU1QuY3gyMzg4NQpAQCAtMCwwICsxLDU0IEBACisgIDAgLT4gVU5LTk9XTi9HRU5FUklDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswMDcwOjM0MDBdCisgIDEgLT4gSGF1cHBhdWdlIFdpblRWLUhWUjE4MDBscCAgICAgICAgICAgICAgICAgICAgICAgICAgIFswMDcwOjc2MDBdCisgIDIgLT4gSGF1cHBhdWdlIFdpblRWLUhWUjE4MDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswMDcwOjc4MDAsMDA3MDo3ODAxLDAwNzA6NzgwOV0KKyAgMyAtPiBIYXVwcGF1Z2UgV2luVFYtSFZSMTI1MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAwNzA6NzkxMV0KKyAgNCAtPiBEVmlDTyBGdXNpb25IRFRWNSBFeHByZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgWzE4YWM6ZDUwMF0KKyAgNSAtPiBIYXVwcGF1Z2UgV2luVFYtSFZSMTUwMFEgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAwNzA6Nzc5MCwwMDcwOjc3OTddCisgIDYgLT4gSGF1cHBhdWdlIFdpblRWLUhWUjE1MDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswMDcwOjc3MTAsMDA3MDo3NzE3XQorICA3IC0+IEhhdXBwYXVnZSBXaW5UVi1IVlIxMjAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMDA3MDo3MWQxLDAwNzA6NzFkM10KKyAgOCAtPiBIYXVwcGF1Z2UgV2luVFYtSFZSMTcwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAwNzA6ODEwMV0KKyAgOSAtPiBIYXVwcGF1Z2UgV2luVFYtSFZSMTQwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAwNzA6ODAxMF0KKyAxMCAtPiBEVmlDTyBGdXNpb25IRFRWNyBEdWFsIEV4cHJlc3MgICAgICAgICAgICAgICAgICAgICAgWzE4YWM6ZDYxOF0KKyAxMSAtPiBEVmlDTyBGdXNpb25IRFRWIERWQi1UIER1YWwgRXhwcmVzcyAgICAgICAgICAgICAgICAgWzE4YWM6ZGI3OF0KKyAxMiAtPiBMZWFkdGVrIFdpbmZhc3QgUHhEVlIzMjAwIEggICAgICAgICAgICAgICAgICAgICAgICAgWzEwN2Q6NjY4MV0KKyAxMyAtPiBDb21wcm8gVmlkZW9NYXRlIEU2NTBGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzE4NWI6ZTgwMF0KKyAxNCAtPiBUdXJib1NpZ2h0IFRCUyA2OTIwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzY5MjA6ODg4OF0KKyAxNSAtPiBUZVZpaSBTNDcwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Q0NzA6OTAyMl0KKyAxNiAtPiBEVkJXb3JsZCBEVkItUzIgMjAwNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAwMDE6MjAwNV0KKyAxNyAtPiBOZXRVUCBEdWFsIERWQi1TMiBDSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzFiNTU6MmEyY10KKyAxOCAtPiBIYXVwcGF1Z2UgV2luVFYtSFZSMTI3MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAwNzA6MjIxMV0KKyAxOSAtPiBIYXVwcGF1Z2UgV2luVFYtSFZSMTI3NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAwNzA6MjIxNSwwMDcwOjIyMWQsMDA3MDoyMmYyXQorIDIwIC0+IEhhdXBwYXVnZSBXaW5UVi1IVlIxMjU1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMDA3MDoyMjUxLDAwNzA6MjJmMV0KKyAyMSAtPiBIYXVwcGF1Z2UgV2luVFYtSFZSMTIxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAwNzA6MjI5MSwwMDcwOjIyOTUsMDA3MDoyMjk5LDAwNzA6MjI5ZCwwMDcwOjIyZjAsMDA3MDoyMmYzLDAwNzA6MjJmNCwwMDcwOjIyZjVdCisgMjIgLT4gTXlnaWNhIFg4NTA2IERNQi1USCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxNGYxOjg2NTFdCisgMjMgLT4gTWFnaWMtUHJvIFByb0hEVFYgRXh0cmVtZSAyICAgICAgICAgICAgICAgICAgICAgICAgIFsxNGYxOjg2NTddCisgMjQgLT4gSGF1cHBhdWdlIFdpblRWLUhWUjE4NTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswMDcwOjg1NDFdCisgMjUgLT4gQ29tcHJvIFZpZGVvTWF0ZSBFODAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxODU4OmU4MDBdCisgMjYgLT4gSGF1cHBhdWdlIFdpblRWLUhWUjEyOTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswMDcwOjg1NTFdCisgMjcgLT4gTXlnaWNhIFg4NTU4IFBSTyBETUItVEggICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxNGYxOjg1NzhdCisgMjggLT4gTEVBRFRFSyBXaW5GYXN0IFB4VFYxMjAwICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDdkOjZmMjJdCisgMjkgLT4gR29UVmlldyBYNSAzRCBIeWJyaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs1NjU0OjIzOTBdCisgMzAgLT4gTmV0VVAgRHVhbCBEVkItVC9DLUNJIFJGICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxYjU1OmUyZTRdCisgMzEgLT4gTGVhZHRlayBXaW5mYXN0IFB4RFZSMzIwMCBIIFhDNDAwMCAgICAgICAgICAgICAgICAgIFsxMDdkOjZmMzldCisgMzIgLT4gTVBYLTg4NQorIDMzIC0+IE15Z2ljYSBYODUwMi9YODUwNyBJU0RCLVQgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTRmMTo4NTAyXQorIDM0IC0+IFRlcnJhVGVjIENpbmVyZ3kgVCBQQ0llIER1YWwgICAgICAgICAgICAgICAgICAgICAgICBbMTUzYjoxMTdlXQorIDM1IC0+IFRlVmlpIFM0NzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZDQ3MTo5MDIyXQorIDM2IC0+IEhhdXBwYXVnZSBXaW5UVi1IVlIxMjU1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMDA3MDoyMjU5XQorIDM3IC0+IFByb2YgUmV2b2x1dGlvbiBEVkItUzIgODAwMCAgICAgICAgICAgICAgICAgICAgICAgICBbODAwMDozMDM0XQorIDM4IC0+IEhhdXBwYXVnZSBXaW5UVi1IVlI0NDAwL0hWUjU1MDAgICAgICAgICAgICAgICAgICAgICBbMDA3MDpjMTA4LDAwNzA6YzEzOCwwMDcwOmMxZjhdCisgMzkgLT4gQVZlclRWIEh5YnJpZCBFeHByZXNzIFNsaW0gSEM4MVIgICAgICAgICAgICAgICAgICAgIFsxNDYxOmQ5MzldCisgNDAgLT4gVHVyYm9TaWdodCBUQlMgNjk4MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs2OTgxOjg4ODhdCisgNDEgLT4gVHVyYm9TaWdodCBUQlMgNjk4MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs2OTgwOjg4ODhdCisgNDIgLT4gTGVhZHRlayBXaW5mYXN0IFB4UFZSMjIwMCAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDdkOjZmMjFdCisgNDMgLT4gSGF1cHBhdWdlIEltcGFjdFZDQi1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswMDcwOjcxMzNdCisgNDQgLT4gRFZpQ08gRnVzaW9uSERUViBEVkItVCBEdWFsIEV4cHJlc3MyICAgICAgICAgICAgICAgIFsxOGFjOmRiOThdCisgNDUgLT4gRFZCU2t5IFQ5NTgwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs0MjU0Ojk1ODBdCisgNDYgLT4gRFZCU2t5IFQ5ODBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs0MjU0Ojk4MGNdCisgNDcgLT4gRFZCU2t5IFM5NTBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs0MjU0Ojk1MGNdCisgNDggLT4gVGVjaG5vdHJlbmQgVFQtYnVkZ2V0IENUMi00NTAwIENJICAgICAgICAgICAgICAgICAgIFsxM2MyOjMwMTNdCisgNDkgLT4gRFZCU2t5IFM5NTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs0MjU0OjA5NTBdCisgNTAgLT4gRFZCU2t5IFM5NTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs0MjU0OjA5NTJdCisgNTEgLT4gRFZCU2t5IFQ5ODIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs0MjU0OjA5ODJdCisgNTIgLT4gSGF1cHBhdWdlIFdpblRWLUhWUjU1MjUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswMDcwOmYwMzhdCisgNTMgLT4gSGF1cHBhdWdlIFdpblRWIFN0YXJidXJzdCAgICAgICAgICAgICAgICAgICAgICAgICAgIFswMDcwOmMxMmFdCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0NBUkRMSVNULmN4ODggYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0NBUkRMSVNULmN4ODgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE0YjNmOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQ0FSRExJU1QuY3g4OApAQCAtMCwwICsxLDkxIEBACisgIDAgLT4gVU5LTk9XTi9HRU5FUklDCisgIDEgLT4gSGF1cHBhdWdlIFdpblRWIDM0eHh4IG1vZGVscyAgICAgICAgICAgICAgICAgICAgICAgIFswMDcwOjM0MDAsMDA3MDozNDAxXQorICAyIC0+IEdESSBCbGFjayBHb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTRjNzowMTA2LDE0Yzc6MDEwN10KKyAgMyAtPiBQaXhlbFZpZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzE1NTQ6NDgxMV0KKyAgNCAtPiBBVEkgVFYgV29uZGVyIFBybyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMDI6MDBmOCwxMDAyOjAwZjldCisgIDUgLT4gTGVhZHRlayBXaW5mYXN0IDIwMDBYUCBFeHBlcnQgICAgICAgICAgICAgICAgICAgICAgIFsxMDdkOjY2MTEsMTA3ZDo2NjEzXQorICA2IC0+IEF2ZXJUViBTdHVkaW8gMzAzIChNMTI2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTQ2MTowMDBiXQorICA3IC0+IE1TSSBUVi1Abnl3aGVyZSBNYXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTQ2Mjo4NjA2XQorICA4IC0+IExlYWR0ZWsgV2luZmFzdCBEVjIwMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTA3ZDo2NjIwLDEwN2Q6NjYyMV0KKyAgOSAtPiBMZWFkdGVrIFBWUiAyMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwN2Q6NjYzYiwxMDdkOjY2M2MsMTA3ZDo2NjMyLDEwN2Q6NjYzMCwxMDdkOjY2MzgsMTA3ZDo2NjMxLDEwN2Q6NjYzNywxMDdkOjY2M2RdCisgMTAgLT4gSU9EQVRBIEdWLVZDUDMvUENJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMGZjOmQwMDNdCisgMTEgLT4gUHJvbGluayBQbGF5VFYgUFZSCisgMTIgLT4gQVNVUyBQVlItNDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDQzOjQ4MjMsMTQ2MTpjMTExXQorIDEzIC0+IE1TSSBUVi1Abnl3aGVyZQorIDE0IC0+IEtXb3JsZC9WU3RyZWFtIFhQZXJ0IERWQi1UICAgICAgICAgICAgICAgICAgICAgICAgICBbMTdkZTowOGE2XQorIDE1IC0+IERWaUNPIEZ1c2lvbkhEVFYgRFZCLVQxICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMThhYzpkYjAwXQorIDE2IC0+IEtXb3JsZCBMVFY4ODNSRgorIDE3IC0+IERWaUNPIEZ1c2lvbkhEVFYgMyBHb2xkLVEgICAgICAgICAgICAgICAgICAgICAgICAgICBbMThhYzpkODEwLDE4YWM6ZDgwMF0KKyAxOCAtPiBIYXVwcGF1Z2UgTm92YS1UIERWQi1UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAwNzA6OTAwMiwwMDcwOjkwMDEsMDA3MDo5MDAwXQorIDE5IC0+IENvbmV4YW50IERWQi1UIHJlZmVyZW5jZSBkZXNpZ24gICAgICAgICAgICAgICAgICAgICBbMTRmMTowMTg3XQorIDIwIC0+IFByb3ZpZGVvIFBWMjU5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTU0MDoyNTgwXQorIDIxIC0+IERWaUNPIEZ1c2lvbkhEVFYgRFZCLVQgUGx1cyAgICAgICAgICAgICAgICAgICAgICAgICBbMThhYzpkYjEwLDE4YWM6ZGIxMV0KKyAyMiAtPiBwY0hEVFYgSEQzMDAwIEhEVFYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzcwNjM6MzAwMF0KKyAyMyAtPiBkaWdpdGFsbm93IEROVFYgTGl2ZSEgRFZCLVQgICAgICAgICAgICAgICAgICAgICAgICAgWzE3ZGU6YThhNl0KKyAyNCAtPiBIYXVwcGF1Z2UgV2luVFYgMjh4eHggKFJvc2x5bikgbW9kZWxzICAgICAgICAgICAgICAgWzAwNzA6MjgwMV0KKyAyNSAtPiBEaWdpdGFsLUxvZ2ljIE1JQ1JPU1BBQ0UgRW50ZXJ0YWlubWVudCBDZW50ZXIgKE1FQykgWzE0ZjE6MDM0Ml0KKyAyNiAtPiBJT0RBVEEgR1YvQkNUVjdFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwZmM6ZDAzNV0KKyAyNyAtPiBQaXhlbFZpZXcgUGxheVRWIFVsdHJhIFBybyAoU3RlcmVvKQorIDI4IC0+IERWaUNPIEZ1c2lvbkhEVFYgMyBHb2xkLVQgICAgICAgICAgICAgICAgICAgICAgICAgICBbMThhYzpkODIwXQorIDI5IC0+IEFEUyBUZWNoIEluc3RhbnQgVFYgRFZCLVQgUENJICAgICAgICAgICAgICAgICAgICAgICBbMTQyMTowMzM0XQorIDMwIC0+IFRlcnJhVGVjIENpbmVyZ3kgMTQwMCBEVkItVCAgICAgICAgICAgICAgICAgICAgICAgICBbMTUzYjoxMTY2XQorIDMxIC0+IERWaUNPIEZ1c2lvbkhEVFYgNSBHb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMThhYzpkNTAwXQorIDMyIC0+IEF2ZXJNZWRpYSBVbHRyYVRWIE1lZGlhIENlbnRlciBQQ0kgNTUwICAgICAgICAgICAgICBbMTQ2MTo4MDExXQorIDMzIC0+IEt3b3JsZCBWLVN0cmVhbSBYcGVydCBEVkQKKyAzNCAtPiBBVEkgSERUViBXb25kZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwMDI6YTEwMV0KKyAzNSAtPiBXaW5GYXN0IERUVjEwMDAtVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwN2Q6NjY1Zl0KKyAzNiAtPiBBVmVyVFYgMzAzIChNMTI2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzE0NjE6MDAwYV0KKyAzNyAtPiBIYXVwcGF1Z2UgTm92YS1TLVBsdXMgRFZCLVMgICAgICAgICAgICAgICAgICAgICAgICAgWzAwNzA6OTIwMSwwMDcwOjkyMDJdCisgMzggLT4gSGF1cHBhdWdlIE5vdmEtU0UyIERWQi1TICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswMDcwOjkyMDBdCisgMzkgLT4gS1dvcmxkIERWQi1TIDEwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxN2RlOjA4YjIsMTQyMTowMzQxXQorIDQwIC0+IEhhdXBwYXVnZSBXaW5UVi1IVlIxMTAwIERWQi1UL0h5YnJpZCAgICAgICAgICAgICAgICBbMDA3MDo5NDAwLDAwNzA6OTQwMl0KKyA0MSAtPiBIYXVwcGF1Z2UgV2luVFYtSFZSMTEwMCBEVkItVC9IeWJyaWQgKExvdyBQcm9maWxlKSAgWzAwNzA6OTgwMCwwMDcwOjk4MDJdCisgNDIgLT4gZGlnaXRhbG5vdyBETlRWIExpdmUhIERWQi1UIFBybyAgICAgICAgICAgICAgICAgICAgIFsxODIyOjAwMjUsMTgyMjowMDE5XQorIDQzIC0+IEtXb3JsZC9WU3RyZWFtIFhQZXJ0IERWQi1UIHdpdGggY3gyMjcwMiAgICAgICAgICAgICBbMTdkZTowOGExLDEyYWI6MjMwMF0KKyA0NCAtPiBEVmlDTyBGdXNpb25IRFRWIERWQi1UIER1YWwgRGlnaXRhbCAgICAgICAgICAgICAgICAgWzE4YWM6ZGI1MCwxOGFjOmRiNTRdCisgNDUgLT4gS1dvcmxkIEhhcmR3YXJlTXBlZ1RWIFhQZXJ0ICAgICAgICAgICAgICAgICAgICAgICAgIFsxN2RlOjA4NDAsMTQyMTowMzA1XQorIDQ2IC0+IERWaUNPIEZ1c2lvbkhEVFYgRFZCLVQgSHlicmlkICAgICAgICAgICAgICAgICAgICAgICBbMThhYzpkYjQwLDE4YWM6ZGI0NF0KKyA0NyAtPiBwY0hEVFYgSEQ1NTAwIEhEVFYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzcwNjM6NTUwMF0KKyA0OCAtPiBLd29ybGQgTUNFIDIwMCBEZWx1eGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzE3ZGU6MDg0MV0KKyA0OSAtPiBQaXhlbFZpZXcgUGxheVRWIFA3MDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzE1NTQ6NDgxM10KKyA1MCAtPiBOUEcgVGVjaCBSZWFsIFRWIEZNIFRvcCAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgWzE0ZjE6MDg0Ml0KKyA1MSAtPiBXaW5GYXN0IERUVjIwMDAgSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwN2Q6NjY1ZV0KKyA1MiAtPiBHZW5pYXRlY2ggRFZCLVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzE0ZjE6MDA4NF0KKyA1MyAtPiBIYXVwcGF1Z2UgV2luVFYtSFZSMzAwMCBUcmlNb2RlIEFuYWxvZy9EVkItUy9EVkItVCAgWzAwNzA6MTQwNCwwMDcwOjE0MDAsMDA3MDoxNDAxLDAwNzA6MTQwMl0KKyA1NCAtPiBOb3J3b29kIE1pY3JvIFRWIFR1bmVyCisgNTUgLT4gU2hlbnpoZW4gVHVuZ3N0ZW4gQWdlcyBUZWNoIFRFLURUVi0yNTAgLyBTd2FubiBPRU0gIFtjMTgwOmM5ODBdCisgNTYgLT4gSGF1cHBhdWdlIFdpblRWLUhWUjEzMDAgRFZCLVQvSHlicmlkIE1QRUcgRW5jb2RlciAgIFswMDcwOjk2MDAsMDA3MDo5NjAxLDAwNzA6OTYwMl0KKyA1NyAtPiBBRFMgVGVjaCBJbnN0YW50IFZpZGVvIFBDSSAgICAgICAgICAgICAgICAgICAgICAgICAgWzE0MjE6MDM5MF0KKyA1OCAtPiBQaW5uYWNsZSBQQ1RWIEhEIDgwMGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzExYmQ6MDA1MV0KKyA1OSAtPiBEVmlDTyBGdXNpb25IRFRWIDUgUENJIG5hbm8gICAgICAgICAgICAgICAgICAgICAgICAgWzE4YWM6ZDUzMF0KKyA2MCAtPiBQaW5uYWNsZSBIeWJyaWQgUENUViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEyYWI6MTc4OF0KKyA2MSAtPiBMZWFkdGVrIFRWMjAwMCBYUCBHbG9iYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEwN2Q6NmYxOCwxMDdkOjY2MTgsMTA3ZDo2NjE5XQorIDYyIC0+IFBvd2VyQ29sb3IgUkEzMzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTRmMTplYTNkXQorIDYzIC0+IEdlbmlhdGVjaCBYODAwMC1NVCBEVkJUICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTRmMTo4ODUyXQorIDY0IC0+IERWaUNPIEZ1c2lvbkhEVFYgRFZCLVQgUFJPICAgICAgICAgICAgICAgICAgICAgICAgICBbMThhYzpkYjMwXQorIDY1IC0+IERWaUNPIEZ1c2lvbkhEVFYgNyBHb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMThhYzpkNjEwXQorIDY2IC0+IFByb2xpbmsgUGl4ZWx2aWV3IE1QRUcgODAwMEdUICAgICAgICAgICAgICAgICAgICAgICBbMTU1NDo0OTM1XQorIDY3IC0+IEt3b3JsZCBQbHVzVFYgSEQgUENJIDEyMCAoQVRTQyAxMjApICAgICAgICAgICAgICAgICBbMTdkZTowOGMxXQorIDY4IC0+IEhhdXBwYXVnZSBXaW5UVi1IVlI0MDAwIERWQi1TL1MyL1QvSHlicmlkICAgICAgICAgICBbMDA3MDo2OTAwLDAwNzA6NjkwNCwwMDcwOjY5MDJdCisgNjkgLT4gSGF1cHBhdWdlIFdpblRWLUhWUjQwMDAoTGl0ZSkgRFZCLVMvUzIgICAgICAgICAgICAgIFswMDcwOjY5MDUsMDA3MDo2OTA2XQorIDcwIC0+IFRlVmlpIFM0NjAgRFZCLVMvUzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZDQ2MDo5MDIyXQorIDcxIC0+IE9taWNvbSBTUzQgRFZCLVMvUzIgUENJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQTA0NDoyMDExXQorIDcyIC0+IFRCUyA4OTIwIERWQi1TL1MyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbODkyMDo4ODg4XQorIDczIC0+IFRlVmlpIFM0MjAgRFZCLVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZDQyMDo5MDIyXQorIDc0IC0+IFByb2xpbmsgUGl4ZWx2aWV3IEdsb2JhbCBFeHRyZW1lICAgICAgICAgICAgICAgICAgICBbMTU1NDo0OTc2XQorIDc1IC0+IFBST0YgNzMwMCBEVkItUy9TMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQjAzMzozMDMzXQorIDc2IC0+IFNBVFRSQURFIFNUNDIwMCBEVkItUy9TMiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYjIwMDo0MjAwXQorIDc3IC0+IFRCUyA4OTEwIERWQi1TICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbODkxMDo4ODg4XQorIDc4IC0+IFByb2YgNjIwMCBEVkItUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYjAyMjozMDIyXQorIDc5IC0+IFRlcnJhdGVjIENpbmVyZ3kgSFQgUENJIE1LSUkgICAgICAgICAgICAgICAgICAgICAgICBbMTUzYjoxMTc3XQorIDgwIC0+IEhhdXBwYXVnZSBXaW5UVi1JUiBPbmx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMDA3MDo5MjkwXQorIDgxIC0+IExlYWR0ZWsgV2luRmFzdCBEVFYxODAwIEh5YnJpZCAgICAgICAgICAgICAgICAgICAgICBbMTA3ZDo2NjU0XQorIDgyIC0+IFdpbkZhc3QgRFRWMjAwMCBIIHJldi4gSiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTA3ZDo2ZjJiXQorIDgzIC0+IFByb2YgNzMwMSBEVkItUy9TMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYjAzNDozMDM0XQorIDg0IC0+IFNhbXN1bmcgU01UIDcwMjAgRFZCLVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMThhYzpkYzAwLDE4YWM6ZGNjZF0KKyA4NSAtPiBUd2luaGFuIFZQLTEwMjcgRFZCLVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzE4MjI6MDAyM10KKyA4NiAtPiBUZVZpaSBTNDY0IERWQi1TL1MyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Q0NjQ6OTAyMl0KKyA4NyAtPiBMZWFkdGVrIFdpbkZhc3QgRFRWMjAwMCBIIFBMVVMgICAgICAgICAgICAgICAgICAgICAgWzEwN2Q6NmY0Ml0KKyA4OCAtPiBMZWFkdGVrIFdpbkZhc3QgRFRWMTgwMCBIIChYQzQwMDApICAgICAgICAgICAgICAgICAgWzEwN2Q6NmYzOF0KKyA4OSAtPiBMZWFkdGVrIFRWMjAwMCBYUCBHbG9iYWwgKFNDNDEwMCkgICAgICAgICAgICAgICAgICAgWzEwN2Q6NmYzNl0KKyA5MCAtPiBMZWFkdGVrIFRWMjAwMCBYUCBHbG9iYWwgKFhDNDEwMCkgICAgICAgICAgICAgICAgICAgWzEwN2Q6NmY0M10KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQ0FSRExJU1QuZW0yOHh4IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9DQVJETElTVC5lbTI4eHgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU1N2NlNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQ0FSRExJU1QuZW0yOHh4CkBAIC0wLDAgKzEsOTggQEAKKyAgMCAtPiBVbmtub3duIEVNMjgwMCB2aWRlbyBncmFiYmVyICAgICAgICAgICAgIChlbTI4MDApICAgICAgICBbZWIxYToyODAwXQorICAxIC0+IFVua25vd24gRU0yNzUwLzI4eHggdmlkZW8gZ3JhYmJlciAgICAgICAgKGVtMjgyMC9lbTI4NDApIFtlYjFhOjI3MTAsZWIxYToyODIwLGViMWE6MjgyMSxlYjFhOjI4NjAsZWIxYToyODYxLGViMWE6Mjg2MixlYjFhOjI4NjMsZWIxYToyODcwLGViMWE6Mjg4MSxlYjFhOjI4ODMsZWIxYToyODY4LGViMWE6Mjg3NV0KKyAgMiAtPiBUZXJyYXRlYyBDaW5lcmd5IDI1MCBVU0IgICAgICAgICAgICAgICAgIChlbTI4MjAvZW0yODQwKSBbMGNjZDowMDM2XQorICAzIC0+IFBpbm5hY2xlIFBDVFYgVVNCIDIgICAgICAgICAgICAgICAgICAgICAgKGVtMjgyMC9lbTI4NDApIFsyMzA0OjAyMDhdCisgIDQgLT4gSGF1cHBhdWdlIFdpblRWIFVTQiAyICAgICAgICAgICAgICAgICAgICAoZW0yODIwL2VtMjg0MCkgWzIwNDA6NDIwMCwyMDQwOjQyMDFdCisgIDUgLT4gTVNJIFZPWCBVU0IgMi4wICAgICAgICAgICAgICAgICAgICAgICAgICAoZW0yODIwL2VtMjg0MCkKKyAgNiAtPiBUZXJyYXRlYyBDaW5lcmd5IDIwMCBVU0IgICAgICAgICAgICAgICAgIChlbTI4MDApCisgIDcgLT4gTGVhZHRlayBXaW5mYXN0IFVTQiBJSSAgICAgICAgICAgICAgICAgICAoZW0yODAwKSAgICAgICAgWzA0MTM6NjAyM10KKyAgOCAtPiBLd29ybGQgVVNCMjgwMCAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbTI4MDApCisgIDkgLT4gUGlubmFjbGUgRGF6emxlIERWQyA5MC8xMDAvMTAxLzEwNyAvIEthaXNlciBCYWFzIFZpZGVvIHRvIERWRCBtYWtlciAgKGVtMjgyMC9lbTI4NDApIFsxYjgwOmUzMDIsMWI4MDplMzA0LDIzMDQ6MDIwNywyMzA0OjAyMWEsMDkzYjphMDAzXQorIDEwIC0+IEhhdXBwYXVnZSBXaW5UViBIVlIgOTAwICAgICAgICAgICAgICAgICAgKGVtMjg4MCkgICAgICAgIFsyMDQwOjY1MDBdCisgMTEgLT4gVGVycmF0ZWMgSHlicmlkIFhTICAgICAgICAgICAgICAgICAgICAgICAoZW0yODgwKQorIDEyIC0+IEt3b3JsZCBQVlIgVFYgMjgwMCBSRiAgICAgICAgICAgICAgICAgICAgKGVtMjgyMC9lbTI4NDApCisgMTMgLT4gVGVycmF0ZWMgUHJvZGlneSBYUyAgICAgICAgICAgICAgICAgICAgICAoZW0yODgwKQorIDE0IC0+IFNJSUcgQVZUdW5lci1QVlIgLyBQaXhlbHZpZXcgUHJvbGluayBQbGF5VFYgVVNCIDIuMCAoZW0yODIwL2VtMjg0MCkKKyAxNSAtPiBWLUdlYXIgUG9ja2V0VFYgICAgICAgICAgICAgICAgICAgICAgICAgIChlbTI4MDApCisgMTYgLT4gSGF1cHBhdWdlIFdpblRWIEhWUiA5NTAgICAgICAgICAgICAgICAgICAoZW0yODgzKSAgICAgICAgWzIwNDA6NjUxMywyMDQwOjY1MTcsMjA0MDo2NTFiXQorIDE3IC0+IFBpbm5hY2xlIFBDVFYgSEQgUHJvIFN0aWNrICAgICAgICAgICAgICAgKGVtMjg4MCkgICAgICAgIFsyMzA0OjAyMjddCisgMTggLT4gSGF1cHBhdWdlIFdpblRWIEhWUiA5MDAgKFIyKSAgICAgICAgICAgICAoZW0yODgwKSAgICAgICAgWzIwNDA6NjUwMl0KKyAxOSAtPiBFTTI4NjAvU0FBNzExWCBSZWZlcmVuY2UgRGVzaWduICAgICAgICAgIChlbTI4NjApCisgMjAgLT4gQU1EIEFUSSBUViBXb25kZXIgSEQgNjAwICAgICAgICAgICAgICAgICAoZW0yODgwKSAgICAgICAgWzA0Mzg6YjAwMl0KKyAyMSAtPiBlTVBJQSBUZWNobm9sb2d5LCBJbmMuIEdyYWJCZWVYKyBWaWRlbyBFbmNvZGVyIChlbTI4MDApICAgICAgICBbZWIxYToyODAxXQorIDIyIC0+IEVNMjcxMC9FTTI3NTAvRU0yNzUxIHdlYmNhbSBncmFiYmVyICAgICAgKGVtMjc1MCkgICAgICAgIFtlYjFhOjI3NTAsZWIxYToyNzUxXQorIDIzIC0+IEh1YXFpIERMQ1ctMTMwICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtMjc1MCkKKyAyNCAtPiBELUxpbmsgRFVCLVQyMTAgVFYgVHVuZXIgICAgICAgICAgICAgICAgIChlbTI4MjAvZW0yODQwKSBbMjAwMTpmMTEyXQorIDI1IC0+IEdhZG1laSBVVFYzMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtMjgyMC9lbTI4NDApCisgMjYgLT4gSGVyY3VsZXMgU21hcnQgVFYgVVNCIDIuMCAgICAgICAgICAgICAgICAoZW0yODIwL2VtMjg0MCkKKyAyNyAtPiBQaW5uYWNsZSBQQ1RWIFVTQiAyIChQaGlsaXBzIEZNMTIxNk1FKSAgIChlbTI4MjAvZW0yODQwKQorIDI4IC0+IExlYWR0ZWsgV2luZmFzdCBVU0IgSUkgRGVsdXhlICAgICAgICAgICAgKGVtMjgyMC9lbTI4NDApCisgMjkgLT4gRU0yODYwL1RWUDUxNTAgUmVmZXJlbmNlIERlc2lnbiAgICAgICAgICAoZW0yODYwKQorIDMwIC0+IFZpZGVvbG9neSAyMEsxNFhVU0IgVVNCMi4wICAgICAgICAgICAgICAgKGVtMjgyMC9lbTI4NDApCisgMzEgLT4gVXNiZ2VhciBWRDIwNHY5ICAgICAgICAgICAgICAgICAgICAgICAgICAoZW0yODIxKQorIDMyIC0+IFN1cGVyY29tcCBVU0IgMi4wIFRWICAgICAgICAgICAgICAgICAgICAgKGVtMjgyMSkKKyAzMyAtPiBFbGdhdG8gVmlkZW8gQ2FwdHVyZSAgICAgICAgICAgICAgICAgICAgIChlbTI4NjApICAgICAgICBbMGZkOTowMDMzXQorIDM0IC0+IFRlcnJhdGVjIENpbmVyZ3kgQSBIeWJyaWQgWFMgICAgICAgICAgICAgKGVtMjg2MCkgICAgICAgIFswY2NkOjAwNGZdCisgMzUgLT4gVHlwaG9vbiBEVkQgTWFrZXIgICAgICAgICAgICAgICAgICAgICAgICAoZW0yODYwKQorIDM2IC0+IE5ldEdNQkggQ2FtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtMjg2MCkKKyAzNyAtPiBHYWRtZWkgVVRWMzMwICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbTI4NjApICAgICAgICBbZWIxYTo1MGE2XQorIDM4IC0+IFlha3VtbyBNb3ZpZU1peGVyICAgICAgICAgICAgICAgICAgICAgICAgKGVtMjg2MSkKKyAzOSAtPiBLV29ybGQgUFZSVFYgMzAwVSAgICAgICAgICAgICAgICAgICAgICAgIChlbTI4NjEpICAgICAgICBbZWIxYTplMzAwXQorIDQwIC0+IFBsZXh0b3IgQ29udmVydFggUFgtVFYxMDBVICAgICAgICAgICAgICAgKGVtMjg2MSkgICAgICAgIFswOTNiOmEwMDVdCisgNDEgLT4gS3dvcmxkIDM1MCBVIERWQi1UICAgICAgICAgICAgICAgICAgICAgICAoZW0yODcwKSAgICAgICAgW2ViMWE6ZTM1MF0KKyA0MiAtPiBLd29ybGQgMzU1IFUgRFZCLVQgICAgICAgICAgICAgICAgICAgICAgIChlbTI4NzApICAgICAgICBbZWIxYTplMzU1LGViMWE6ZTM1NyxlYjFhOmUzNTldCisgNDMgLT4gVGVycmF0ZWMgQ2luZXJneSBUIFhTICAgICAgICAgICAgICAgICAgICAoZW0yODcwKSAgICAgICAgWzBjY2Q6MDA0M10KKyA0NCAtPiBUZXJyYXRlYyBDaW5lcmd5IFQgWFMgKE1UMjA2MCkgICAgICAgICAgIChlbTI4NzApCisgNDUgLT4gUGlubmFjbGUgUENUViBEVkItVCAgICAgICAgICAgICAgICAgICAgICAoZW0yODcwKQorIDQ2IC0+IENvbXBybywgVmlkZW9NYXRlIFUzICAgICAgICAgICAgICAgICAgICAgKGVtMjg3MCkgICAgICAgIFsxODViOjI4NzBdCisgNDcgLT4gS1dvcmxkIERWQi1UIDMwNVUgICAgICAgICAgICAgICAgICAgICAgICAoZW0yODgwKSAgICAgICAgW2ViMWE6ZTMwNV0KKyA0OCAtPiBLV29ybGQgRFZCLVQgMzEwVSAgICAgICAgICAgICAgICAgICAgICAgIChlbTI4ODApCisgNDkgLT4gTVNJIERpZ2lWb3ggQS9EICAgICAgICAgICAgICAgICAgICAgICAgICAoZW0yODgwKSAgICAgICAgW2ViMWE6ZTMxMF0KKyA1MCAtPiBNU0kgRGlnaVZveCBBL0QgSUkgICAgICAgICAgICAgICAgICAgICAgIChlbTI4ODApICAgICAgICBbZWIxYTplMzIwXQorIDUxIC0+IFRlcnJhdGVjIEh5YnJpZCBYUyBTZWNhbSAgICAgICAgICAgICAgICAgKGVtMjg4MCkgICAgICAgIFswY2NkOjAwNGNdCisgNTIgLT4gRE5UIERBMiBIeWJyaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW0yODgxKQorIDUzIC0+IFBpbm5hY2xlIEh5YnJpZCBQcm8gICAgICAgICAgICAgICAgICAgICAgKGVtMjg4MSkKKyA1NCAtPiBLd29ybGQgVlMtRFZCLVQgMzIzVVIgICAgICAgICAgICAgICAgICAgIChlbTI4ODIpICAgICAgICBbZWIxYTplMzIzXQorIDU1IC0+IFRlcnJhdGVjIENpbm5lcmd5IEh5YnJpZCBUIFVTQiBYUyAoZW0yODgyKSAoZW0yODgyKSAgICAgICAgWzBjY2Q6MDA1ZSwwY2NkOjAwNDJdCisgNTYgLT4gUGlubmFjbGUgSHlicmlkIFBybyAoMzMwZSkgICAgICAgICAgICAgICAoZW0yODgyKSAgICAgICAgWzIzMDQ6MDIyNl0KKyA1NyAtPiBLd29ybGQgUGx1c1RWIEhEIEh5YnJpZCAzMzAgICAgICAgICAgICAgIChlbTI4ODMpICAgICAgICBbZWIxYTphMzE2XQorIDU4IC0+IENvbXBybyBWaWRlb01hdGUgRm9yWW91L1N0ZXJlbyAgICAgICAgICAgKGVtMjgyMC9lbTI4NDApIFsxODViOjIwNDFdCisgNTkgLT4gUGlubmFjbGUgUENUViBIRCBNaW5pICAgICAgICAgICAgICAgICAgICAoZW0yODc0KSAgICAgICAgWzIzMDQ6MDIzZl0KKyA2MCAtPiBIYXVwcGF1Z2UgV2luVFYgSFZSIDg1MCAgICAgICAgICAgICAgICAgIChlbTI4ODMpICAgICAgICBbMjA0MDo2NTFmXQorIDYxIC0+IFBpeGVsdmlldyBQbGF5VFYgQm94IDQgVVNCIDIuMCAgICAgICAgICAgKGVtMjgyMC9lbTI4NDApCisgNjIgLT4gR2FkbWVpIFRWUjIwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW0yODIwL2VtMjg0MCkKKyA2MyAtPiBLYWlvbXkgVFZuUEMgVTIgICAgICAgICAgICAgICAgICAgICAgICAgIChlbTI4NjApICAgICAgICBbZWIxYTplMzAzXQorIDY0IC0+IEVhc3kgQ2FwIENhcHR1cmUgREMtNjAgICAgICAgICAgICAgICAgICAgKGVtMjg2MCkgICAgICAgIFsxYjgwOmUzMDldCisgNjUgLT4gSU8tREFUQSBHVi1NVlAvU1ogICAgICAgICAgICAgICAgICAgICAgICAoZW0yODIwL2VtMjg0MCkgWzA0YmI6MDUxNV0KKyA2NiAtPiBFbXBpcmUgZHVhbCBUViAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbTI4ODApCisgNjcgLT4gVGVycmF0ZWMgR3JhYmJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAoZW0yODYwKSAgICAgICAgWzBjY2Q6MDA5NiwwY2NkOjEwQUZdCisgNjggLT4gVGVycmF0ZWMgQVYzNTAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW0yODYwKSAgICAgICAgWzBjY2Q6MDA4NF0KKyA2OSAtPiBLV29ybGQgQVRTQyAzMTVVIEhEVFYgVFYgQm94ICAgICAgICAgICAgIChlbTI4ODIpICAgICAgICBbZWIxYTphMzEzXQorIDcwIC0+IEV2Z2EgaW5EdHViZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtMjg4MikKKyA3MSAtPiBTaWx2ZXJjcmVzdCBXZWJjYW0gMS4zbXBpeCAgICAgICAgICAgICAgIChlbTI4MjAvZW0yODQwKQorIDcyIC0+IEdhZG1laSBVVFYzMzArICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtMjg2MSkKKyA3MyAtPiBSZWRkbyBEVkItQyBVU0IgVFYgQm94ICAgICAgICAgICAgICAgICAgIChlbTI4NzApCisgNzQgLT4gQWN0aW9ubWFzdGVyL0xpblhjZWwvRGlnaXR1cyBWQzIxMUEgICAgICAoZW0yODAwKQorIDc1IC0+IERpa29tIERLMzAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtMjg4MikKKyA3NiAtPiBLV29ybGQgUGx1c1RWIDM0MFUgb3IgVUI0MzUtUSAoQVRTQykgICAgIChlbTI4NzApICAgICAgICBbMWI4MDphMzQwXQorIDc3IC0+IEVNMjg3NCBMZWFkZXJzaGlwIElTREJUICAgICAgICAgICAgICAgICAgKGVtMjg3NCkKKyA3OCAtPiBQQ1RWIG5hbm9TdGljayBUMiAyOTBlICAgICAgICAgICAgICAgICAgIChlbTI4MTc0KQorIDc5IC0+IFRlcnJhdGVjIENpbmVyZ3kgSDUgICAgICAgICAgICAgICAgICAgICAgKGVtMjg4NCkgICAgICAgIFtlYjFhOjI4ODUsMGNjZDoxMGEyLDBjY2Q6MTBhZCwwY2NkOjEwYjZdCisgODAgLT4gUENUViBEVkItUzIgU3RpY2sgKDQ2MGUpICAgICAgICAgICAgICAgICAoZW0yODE3NCkKKyA4MSAtPiBIYXVwcGF1Z2UgV2luVFYgSFZSIDkzMEMgICAgICAgICAgICAgICAgIChlbTI4ODQpICAgICAgICBbMjA0MDoxNjA1XQorIDgyIC0+IFRlcnJhdGVjIENpbmVyZ3kgSFRDIFN0aWNrICAgICAgICAgICAgICAgKGVtMjg4NCkgICAgICAgIFswY2NkOjAwYjJdCisgODMgLT4gSG9uZXN0ZWNoIFZpZGJveCBOVzAzICAgICAgICAgICAgICAgICAgICAoZW0yODYwKSAgICAgICAgW2ViMWE6NTAwNl0KKyA4NCAtPiBNYXhNZWRpYSBVQjQyNS1UQyAgICAgICAgICAgICAgICAgICAgICAgIChlbTI4NzQpICAgICAgICBbMWI4MDplNDI1XQorIDg1IC0+IFBDVFYgUXVhdHJvU3RpY2sgKDUxMGUpICAgICAgICAgICAgICAgICAgKGVtMjg4NCkgICAgICAgIFsyMzA0OjAyNDJdCisgODYgLT4gUENUViBRdWF0cm9TdGljayBuYW5vICg1MjBlKSAgICAgICAgICAgICAoZW0yODg0KSAgICAgICAgWzIwMTM6MDI1MV0KKyA4NyAtPiBUZXJyYXRlYyBDaW5lcmd5IEhUQyBVU0IgWFMgICAgICAgICAgICAgIChlbTI4ODQpICAgICAgICBbMGNjZDowMDhlLDBjY2Q6MDBhY10KKyA4OCAtPiBDMyBUZWNoIERpZ2l0YWwgRHVvIEhEVFYvU0RUViBVU0IgICAgICAgIChlbTI4ODQpICAgICAgICBbMWI4MDplNzU1XQorIDg5IC0+IERlbG9jayA2MTk1OSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVtMjg3NCkgICAgICAgIFsxYjgwOmUxY2NdCisgOTAgLT4gS1dvcmxkIFVTQiBBVFNDIFRWIFN0aWNrIFVCNDM1LVEgVjIgICAgICAoZW0yODc0KSAgICAgICAgWzFiODA6ZTM0Nl0KKyA5MSAtPiBTcGVlZExpbmsgVmljaW91cyBBbmQgRGV2aW5lIExhcGxhY2Ugd2ViY2FtIChlbTI3NjUpICAgICAgICBbMWFlNzo5MDAzLDFhZTc6OTAwNF0KKyA5MiAtPiBQQ1RWIERWQi1TMiBTdGljayAoNDYxZSkgICAgICAgICAgICAgICAgIChlbTI4MTc4KQorIDkzIC0+IEtXb3JsZCBVU0IgQVRTQyBUViBTdGljayBVQjQzNS1RIFYzICAgICAgKGVtMjg3NCkgICAgICAgIFsxYjgwOmUzNGNdCisgOTQgLT4gUENUViB0cmlwbGVTdGljayAoMjkyZSkgICAgICAgICAgICAgICAgICAoZW0yODE3OCkKKyA5NSAtPiBMZWFkdGVrIFZDMTAwICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbTI4NjEpICAgICAgICBbMDQxMzo2ZjA3XQorIDk2IC0+IFRlcnJhdGVjIENpbmVyZ3kgVDIgU3RpY2sgSEQgICAgICAgICAgICAgKGVtMjgxNzgpCisgOTcgLT4gRWxnYXRvIEV5ZVRWIEh5YnJpZCAyMDA4IElOVCAgICAgICAgICAgICAoZW0yODg0KSAgICAgICAgWzBmZDk6MDAxOF0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQ0FSRExJU1QuaXZ0diBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQ0FSRExJU1QuaXZ0dgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDE5ZTI3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9DQVJETElTVC5pdnR2CkBAIC0wLDAgKzEsMjQgQEAKKyAxIC0+IEhhdXBwYXVnZSBXaW5UViBQVlItMjUwCisgMiAtPiBIYXVwcGF1Z2UgV2luVFYgUFZSLTM1MAorIDMgLT4gSGF1cHBhdWdlIFdpblRWIFBWUi0xNTAgb3IgUFZSLTUwMAorIDQgLT4gQVZlck1lZGlhIE0xNzkgCQkJCVsxNDYxOmEzY2UsMTQ2MTphM2NmXQorIDUgLT4gWXVhbiBNUEc2MDAvS3Vyb3V0b3NoaWtvdSBpVFZDMTYtU1RWTFAgCVsxMmFiOmZmZjMsMTJhYjpmZmZmXQorIDYgLT4gWXVhbiBNUEcxNjAvS3Vyb3V0b3NoaWtvdSBpVFZDMTUtU1RWTFAgCVsxMmFiOjAwMDAsMTBmYzo0MGEwXQorIDcgLT4gWXVhbiBQRzYwMC9EaWFtb25kTU0gUFZSLTU1MCAJCVtmZjkyOjAwNzAsZmZhYjowNjAwXQorIDggLT4gQWRhcHRlYyBBVkMtMjQxMCAJCQkJWzkwMDU6MDA5M10KKyA5IC0+IEFkYXB0ZWMgQVZDLTIwMTAgCQkJCVs5MDA1OjAwOTJdCisxMCAtPiBOQUdBU0UgVFJBTlNHRUFSIDUwMDBUViAJCQlbMTQ2MTpiZmZmXQorMTEgLT4gQU9wZW4gVkEyMDAwTUFYLVNUTjYgCQkJWzAwMDA6ZmY1Zl0KKzEyIC0+IFlVQU4gTVBHNjAwR1IvS3Vyb3V0b3NoaWtvdSBDWDIzNDE2R1lDLVNUVkxQIFsxMmFiOjA2MDAsZmJhYjowNjAwLDExNTQ6MDUyM10KKzEzIC0+IEkvTyBEYXRhIEdWLU1WUC9SWCAJCQlbMTBmYzpkMDFlLDEwZmM6ZDAzOCwxMGZjOmQwMzldCisxNCAtPiBJL08gRGF0YSBHVi1NVlAvUlgyRSAJCQlbMTBmYzpkMDI1XQorMTUgLT4gR09UVklFVyBQQ0kgRFZEIChwYXJ0aWFsIHN1cHBvcnQgb25seSkgCVsxMmFiOjA2MDBdCisxNiAtPiBHT1RWSUVXIFBDSSBEVkQyIERlbHV4ZSAJCQlbZmZhYzowNjAwXQorMTcgLT4gWXVhbiBNUEM2MjIgCQkJCVtmZjAxOmQ5OThdCisxOCAtPiBEaWdpdGFsIENvd2JveSBEQ1QtTVRWUDEgCQkJWzE0NjE6YmZmZl0KKzE5IC0+IFl1YW4gUEc2MDBWMi9Hb3RWaWV3IFBDSSBEVkQgTGl0ZSAJW2ZmYWI6MDYwMCxmZmFkOjA2MDBdCisyMCAtPiBDbHViM0QgWkFQLVRWMXgwMQkJCQlbZmZhYjowNjAwXQorMjEgLT4gQXZlclRWIE1DRSAxMTYgUGx1cwkJCVsxNDYxOmM0MzldCisyMiAtPiBBU1VTIEZhbGNvbjIJCQkJWzEwNDM6NGI2NiwxMDQzOjQ2MmUsMTA0Mzo0YjJlXQorMjMgLT4gQXZlck1lZGlhIFBWUi0xNTAgUGx1cwkJCVsxNDYxOmMwMzVdCisyNCAtPiBBdmVyTWVkaWEgRVpNYWtlciBQQ0kgRGVsdXhlCQlbMTQ2MTpjMDNmXQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9DQVJETElTVC5zYWE3MTM0IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9DQVJETElTVC5zYWE3MTM0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MjEwMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0NBUkRMSVNULnNhYTcxMzQKQEAgLTAsMCArMSwxOTYgQEAKKyAgMCAtPiBVTktOT1dOL0dFTkVSSUMKKyAgMSAtPiBQcm90ZXVzIFBybyBbcGhpbGlwcyByZWZlcmVuY2UgZGVzaWduXSAgIFsxMTMxOjIwMDEsMTEzMToyMDAxXQorICAyIC0+IExpZmVWaWV3IEZseVZJREVPMzAwMCAgICAgICAgICAgICAgICAgICAgWzUxNjg6MDEzOCw0ZTQyOjAxMzhdCisgIDMgLT4gTGlmZVZpZXcvVHlwaG9vbiBGbHlWSURFTzIwMDAgICAgICAgICAgICBbNTE2ODowMTM4LDRlNDI6MDEzOF0KKyAgNCAtPiBFTVBSRVNTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMTMxOjY3NTJdCisgIDUgLT4gU0tOZXQgTW9uc3RlciBUViAgICAgICAgICAgICAgICAgICAgICAgICBbMTEzMTo0ZTg1XQorICA2IC0+IFRldmlvbiBNRCA5NzE3CisgIDcgLT4gS05DIE9uZSBUVi1TdGF0aW9uIFJEUyAvIFR5cGhvb24gVFYgVHVuZXIgUkRTIFsxMTMxOmZlMDEsMTg5NDpmZTAxXQorICA4IC0+IFRlcnJhdGVjIENpbmVyZ3kgNDAwIFRWICAgICAgICAgICAgICAgICAgWzE1M2I6MTE0Ml0KKyAgOSAtPiBNZWRpb24gNTA0NAorIDEwIC0+IEt3b3JsZC9LdXJvdXRvU2hpa291IFNBQTcxMzAtVFZQQ0kKKyAxMSAtPiBUZXJyYXRlYyBDaW5lcmd5IDYwMCBUViAgICAgICAgICAgICAgICAgIFsxNTNiOjExNDNdCisgMTIgLT4gTWVkaW9uIDcxMzQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTZiZTowMDAzLDE2YmU6NTAwMF0KKyAxMyAtPiBUeXBob29uIFRWK1JhZGlvIDkwMDMxCisgMTQgLT4gRUxTQSBFWC1WSVNJT04gMzAwVFYgICAgICAgICAgICAgICAgICAgICBbMTA0ODoyMjZiXQorIDE1IC0+IEVMU0EgRVgtVklTSU9OIDUwMFRWICAgICAgICAgICAgICAgICAgICAgWzEwNDg6MjI2YV0KKyAxNiAtPiBBU1VTIFRWLUZNIDcxMzQgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDQzOjQ4NDIsMTA0Mzo0ODMwLDEwNDM6NDg0MF0KKyAxNyAtPiBBT1BFTiBWQTEwMDAgUE9XRVIgICAgICAgICAgICAgICAgICAgICAgIFsxMTMxOjcxMzNdCisgMTggLT4gQk1LIE1QRVggTm8gVHVuZXIKKyAxOSAtPiBDb21wcm8gVmlkZW9NYXRlIFRWICAgICAgICAgICAgICAgICAgICAgIFsxODViOmMxMDBdCisgMjAgLT4gTWF0cm94IENyb25vc1BsdXMgICAgICAgICAgICAgICAgICAgICAgICBbMTAyQjo0OGQwXQorIDIxIC0+IDEwTU9PTlMgUENJIFRWIENBUFRVUkUgQ0FSRCAgICAgICAgICAgICAgWzExMzE6MjAwMV0KKyAyMiAtPiBBdmVyTWVkaWEgTTE1NiAvIE1lZGlvbiAyODE5ICAgICAgICAgICAgIFsxNDYxOmE3MGJdCisgMjMgLT4gQk1LIE1QRVggVHVuZXIKKyAyNCAtPiBLTkMgT25lIFRWLVN0YXRpb24gRFZSICAgICAgICAgICAgICAgICAgIFsxODk0OmEwMDZdCisgMjUgLT4gQVNVUyBUVi1GTSA3MTMzICAgICAgICAgICAgICAgICAgICAgICAgICBbMTA0Mzo0ODQzXQorIDI2IC0+IFBpbm5hY2xlIFBDVFYgU3RlcmVvIChzYWE3MTM0KSAgICAgICAgICAgWzExYmQ6MDAyYl0KKyAyNyAtPiBNYW5saSBNdWNoVFYgTS1UVjAwMgorIDI4IC0+IE1hbmxpIE11Y2hUViBNLVRWMDAxCisgMjkgLT4gTmFnYXNlIFNhbmd5byBUcmFuc0dlYXIgMzAwMFRWICAgICAgICAgICBbMTQ2MTowNTBjXQorIDMwIC0+IEVsaXRlZ3JvdXAgRUNTIFRWUDNYUCBGTTEyMTYgVHVuZXIgQ2FyZChQQUwtQkcsRk0pICBbMTAxOTo0Y2I0XQorIDMxIC0+IEVsaXRlZ3JvdXAgRUNTIFRWUDNYUCBGTTEyMzYgVHVuZXIgQ2FyZCAoTlRTQyxGTSkgWzEwMTk6NGNiNV0KKyAzMiAtPiBBVkFDUyBTbWFydFRWCisgMzMgLT4gQVZlck1lZGlhIERWRCBFWk1ha2VyICAgICAgICAgICAgICAgICAgICBbMTQ2MToxMGZmXQorIDM0IC0+IE5vdmFsIFByaW1lIFRWIDcxMzMKKyAzNSAtPiBBdmVyTWVkaWEgQXZlclRWIFN0dWRpbyAzMDUgICAgICAgICAgICAgIFsxNDYxOjIxMTVdCisgMzYgLT4gVVBNT1NUIFBVUlBMRSBUViAgICAgICAgICAgICAgICAgICAgICAgICBbMTJhYjowODAwXQorIDM3IC0+IEl0ZW1zIE11Y2hUViBQbHVzIC8gSVQtMDA1CisgMzggLT4gVGVycmF0ZWMgQ2luZXJneSAyMDAgVFYgICAgICAgICAgICAgICAgICBbMTUzYjoxMTUyXQorIDM5IC0+IExpZmVWaWV3IEZseVRWIFBsYXRpbnVtIE1pbmkgICAgICAgICAgICAgWzUxNjg6MDIxMiw0ZTQyOjAyMTIsNTE2OToxNTAyXQorIDQwIC0+IENvbXBybyBWaWRlb01hdGUgVFYgUFZSL0ZNICAgICAgICAgICAgICAgWzE4NWI6YzEwMF0KKyA0MSAtPiBDb21wcm8gVmlkZW9NYXRlIFRWIEdvbGQrICAgICAgICAgICAgICAgIFsxODViOmMxMDBdCisgNDIgLT4gU2FicmVudCBTQlQtVFZGTSAoc2FhNzEzMCkKKyA0MyAtPiA6Wm9saWQgWHBlcnQgVFY3MTM0CisgNDQgLT4gRW1waXJlIFBDSSBUVi1SYWRpbyBMRQorIDQ1IC0+IEF2ZXJtZWRpYSBBVmVyVFYgU3R1ZGlvIDMwNyAgICAgICAgICAgICAgWzE0NjE6OTcxNV0KKyA0NiAtPiBBVmVyTWVkaWEgQ2FyZGJ1cyBUVi9SYWRpbyAoRTUwMCkgICAgICAgIFsxNDYxOmQ2ZWVdCisgNDcgLT4gVGVycmF0ZWMgQ2luZXJneSA0MDAgbW9iaWxlICAgICAgICAgICAgICBbMTUzYjoxMTYyXQorIDQ4IC0+IFRlcnJhdGVjIENpbmVyZ3kgNjAwIFRWIE1LMyAgICAgICAgICAgICAgWzE1M2I6MTE1OF0KKyA0OSAtPiBDb21wcm8gVmlkZW9NYXRlIEdvbGQrIFBhbCAgICAgICAgICAgICAgIFsxODViOmMyMDBdCisgNTAgLT4gUGlubmFjbGUgUENUViAzMDBpIERWQi1UICsgUEFMICAgICAgICAgICBbMTFiZDowMDJkXQorIDUxIC0+IFByb1ZpZGVvIFBWOTUyICAgICAgICAgICAgICAgICAgICAgICAgICAgWzE1NDA6OTUyNF0KKyA1MiAtPiBBdmVyTWVkaWEgQXZlclRWLzMwNSAgICAgICAgICAgICAgICAgICAgIFsxNDYxOjIxMDhdCisgNTMgLT4gQVNVUyBUVi1GTSA3MTM1ICAgICAgICAgICAgICAgICAgICAgICAgICBbMTA0Mzo0ODQ1XQorIDU0IC0+IExpZmVWaWV3IEZseVRWIFBsYXRpbnVtIEZNIC8gR29sZCAgICAgICAgWzUxNjg6MDIxNCw1MTY4OjUyMTQsMTQ4OTowMjE0LDUxNjg6MDMwNF0KKyA1NSAtPiBMaWZlVmlldyBGbHlEVkItVCBEVU8gLyBNU0kgVFZAbnl3aGVyZSBEdW8gWzUxNjg6MDMwNiw0RTQyOjAzMDZdCisgNTYgLT4gQXZlcm1lZGlhIEFWZXJUViAzMDcgICAgICAgICAgICAgICAgICAgICBbMTQ2MTphNzBhXQorIDU3IC0+IEF2ZXJtZWRpYSBBVmVyVFYgR08gMDA3IEZNICAgICAgICAgICAgICAgWzE0NjE6ZjMxZl0KKyA1OCAtPiBBRFMgVGVjaCBJbnN0YW50IFRWIChzYWE3MTM1KSAgICAgICAgICAgIFsxNDIxOjAzNTAsMTQyMTowMzUxLDE0MjE6MDM3MCwxNDIxOjEzNzBdCisgNTkgLT4gS3dvcmxkL1RldmlvbiBWLVN0cmVhbSBYcGVydCBUViBQVlI3MTM0CisgNjAgLT4gTGlmZVZpZXcvVHlwaG9vbi9HZW5pdXMgRmx5RFZCLVQgRHVvIENhcmRidXMgWzUxNjg6MDUwMiw0ZTQyOjA1MDIsMTQ4OTowNTAyXQorIDYxIC0+IFBoaWxpcHMgVE9VR0ggRFZCLVQgcmVmZXJlbmNlIGRlc2lnbiAgICAgWzExMzE6MjAwNF0KKyA2MiAtPiBDb21wcm8gVmlkZW9NYXRlIFRWIEdvbGQrSUkKKyA2MyAtPiBLd29ybGQgWHBlcnQgVFYgUFZSNzEzNAorIDY0IC0+IEZseVRWIG1pbmkgQXN1cyBEaWdpbWF0cml4ICAgICAgICAgICAgICAgWzEwNDM6MDIxMF0KKyA2NSAtPiBWLVN0cmVhbSBTdHVkaW8gVFYgVGVybWluYXRvcgorIDY2IC0+IFl1YW4gVFVOLTkwMCAoc2FhNzEzNSkKKyA2NyAtPiBCZWhvbGRlciBCZWhvbGRUViA0MDkgRk0gICAgICAgICAgICAgICAgIFswMDAwOjQwOTFdCisgNjggLT4gR29UVmlldyA3MTM1IFBDSSAgICAgICAgICAgICAgICAgICAgICAgICBbNTQ1Njo3MTM1XQorIDY5IC0+IFBoaWxpcHMgRVVST1BBIFYzIHJlZmVyZW5jZSBkZXNpZ24gICAgICAgWzExMzE6MjAwNF0KKyA3MCAtPiBDb21wcm8gVmlkZW9tYXRlIERWQi1UMzAwICAgICAgICAgICAgICAgIFsxODViOmM5MDBdCisgNzEgLT4gQ29tcHJvIFZpZGVvbWF0ZSBEVkItVDIwMCAgICAgICAgICAgICAgICBbMTg1YjpjOTAxXQorIDcyIC0+IFJURCBFbWJlZGRlZCBUZWNobm9sb2dpZXMgVkZHNzM1MCAgICAgICAgWzE0MzU6NzM1MF0KKyA3MyAtPiBSVEQgRW1iZWRkZWQgVGVjaG5vbG9naWVzIFZGRzczMzAgICAgICAgIFsxNDM1OjczMzBdCisgNzQgLT4gTGlmZVZpZXcgRmx5VFYgUGxhdGludW0gTWluaTIgICAgICAgICAgICBbMTRjMDoxMjEyXQorIDc1IC0+IEFWZXJNZWRpYSBBVmVyVFZIRCBNQ0UgQTE4MCAgICAgICAgICAgICAgWzE0NjE6MTA0NF0KKyA3NiAtPiBTS05ldCBNb25zdGVyVFYgTW9iaWxlICAgICAgICAgICAgICAgICAgIFsxMTMxOjRlZTldCisgNzcgLT4gUGlubmFjbGUgUENUViA0MGkvNTBpLzExMGkgKHNhYTcxMzMpICAgICBbMTFiZDowMDJlXQorIDc4IC0+IEFTVVNUZUsgUDcxMzEgRHVhbCAgICAgICAgICAgICAgICAgICAgICAgWzEwNDM6NDg2Ml0KKyA3OSAtPiBTZWRuYS9NdWNoVFYgUEMgVFYgQ2FyZGJ1cyBUVi9SYWRpbyAoSVRPMjUgUmV2OjJCKQorIDgwIC0+IEFTVVMgRGlnaW1hdHJpeCBUViAgICAgICAgICAgICAgICAgICAgICAgWzEwNDM6MDIxMF0KKyA4MSAtPiBQaGlsaXBzIFRpZ2VyIHJlZmVyZW5jZSBkZXNpZ24gICAgICAgICAgIFsxMTMxOjIwMThdCisgODIgLT4gTVNJIFRWQEFueXdoZXJlIHBsdXMgICAgICAgICAgICAgICAgICAgICBbMTQ2Mjo2MjMxLDE0NjI6ODYyNF0KKyA4MyAtPiBUZXJyYXRlYyBDaW5lcmd5IDI1MCBQQ0kgVFYgICAgICAgICAgICAgIFsxNTNiOjExNjBdCisgODQgLT4gTGlmZVZpZXcgRmx5RFZCIFRyaW8gICAgICAgICAgICAgICAgICAgICBbNTE2ODowMzE5XQorIDg1IC0+IEF2ZXJUViBEVkItVCA3NzcgICAgICAgICAgICAgICAgICAgICAgICAgWzE0NjE6MmMwNSwxNDYxOjJjMDVdCisgODYgLT4gTGlmZVZpZXcgRmx5RFZCLVQgLyBHZW5pdXMgVmlkZW9Xb25kZXIgRFZCLVQgWzUxNjg6MDMwMSwxNDg5OjAzMDFdCisgODcgLT4gQURTIEluc3RhbnQgVFYgRHVvIENhcmRidXMgUFRWMzMxICAgICAgICBbMDMzMToxNDIxXQorIDg4IC0+IFRldmlvbi9LV29ybGQgRFZCLVQgMjIwUkYgICAgICAgICAgICAgICAgWzE3ZGU6NzIwMV0KKyA4OSAtPiBFTFNBIEVYLVZJU0lPTiA3MDBUViAgICAgICAgICAgICAgICAgICAgIFsxMDQ4OjIyNmNdCisgOTAgLT4gS3dvcmxkIEFUU0MxMTAvMTE1ICAgICAgICAgICAgICAgICAgICAgICBbMTdkZTo3MzUwLDE3ZGU6NzM1Ml0KKyA5MSAtPiBBVmVyTWVkaWEgQTE2OSBCICAgICAgICAgICAgICAgICAgICAgICAgIFsxNDYxOjczNjBdCisgOTIgLT4gQVZlck1lZGlhIEExNjkgQjEgICAgICAgICAgICAgICAgICAgICAgICBbMTQ2MTo2MzYwXQorIDkzIC0+IE1lZGlvbiA3MTM0IEJyaWRnZSAjMiAgICAgICAgICAgICAgICAgICAgWzE2YmU6MDAwNV0KKyA5NCAtPiBMaWZlVmlldyBGbHlEVkItVCBIeWJyaWQgQ2FyZGJ1cy9NU0kgVFYgQG55d2hlcmUgQS9EIE5CIFs1MTY4OjMzMDYsNTE2ODozNTAyLDUxNjg6MzMwNyw0ZTQyOjM1MDJdCisgOTUgLT4gTGlmZVZpZXcgRmx5VklERU8zMDAwIChOVFNDKSAgICAgICAgICAgICBbNTE2OTowMTM4XQorIDk2IC0+IE1lZGlvbiBNZDg4MDAgUXVhZHJvICAgICAgICAgICAgICAgICAgICAgWzE2YmU6MDAwNywxNmJlOjAwMDgsMTZiZTowMDBkXQorIDk3IC0+IExpZmVWaWV3IEZseURWQi1TIC9BY29ycCBUVjEzNERTICAgICAgICAgWzUxNjg6MDMwMCw0ZTQyOjAzMDBdCisgOTggLT4gUHJvdGV1cyBQcm8gMjMwOSAgICAgICAgICAgICAgICAgICAgICAgICBbMDkxOToyMDAzXQorIDk5IC0+IEFWZXJNZWRpYSBUViBIeWJyaWQgQTE2QVIgICAgICAgICAgICAgICAgWzE0NjE6MmMwMF0KKzEwMCAtPiBBc3VzIEV1cm9wYTIgT0VNICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDQzOjQ4NjBdCisxMDEgLT4gUGlubmFjbGUgUENUViAzMTBpICAgICAgICAgICAgICAgICAgICAgICBbMTFiZDowMDJmXQorMTAyIC0+IEF2ZXJtZWRpYSBBVmVyVFYgU3R1ZGlvIDUwNyAgICAgICAgICAgICAgWzE0NjE6OTcxNV0KKzEwMyAtPiBDb21wcm8gVmlkZW9tYXRlIERWQi1UMjAwQQorMTA0IC0+IEhhdXBwYXVnZSBXaW5UVi1IVlIxMTEwIERWQi1UL0h5YnJpZCAgICAgWzAwNzA6NjcwMCwwMDcwOjY3MDEsMDA3MDo2NzAyLDAwNzA6NjcwMywwMDcwOjY3MDQsMDA3MDo2NzA1XQorMTA1IC0+IFRlcnJhdGVjIENpbmVyZ3kgSFQgUENNQ0lBICAgICAgICAgICAgICAgWzE1M2I6MTE3Ml0KKzEwNiAtPiBFbmNvcmUgRU5MVFYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMTMxOjIzNDIsMTEzMToyMzQxLDMwMTY6MjM0NF0KKzEwNyAtPiBFbmNvcmUgRU5MVFYtRk0gICAgICAgICAgICAgICAgICAgICAgICAgIFsxMTMxOjIzMGZdCisxMDggLT4gVGVycmF0ZWMgQ2luZXJneSBIVCBQQ0kgICAgICAgICAgICAgICAgICBbMTUzYjoxMTc1XQorMTA5IC0+IFBoaWxpcHMgVGlnZXIgLSBTIFJlZmVyZW5jZSBkZXNpZ24KKzExMCAtPiBBdmVybWVkaWEgTTEwMiAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxNDYxOmYzMWVdCisxMTEgLT4gQVNVUyBQNzEzMSA0ODcxICAgICAgICAgICAgICAgICAgICAgICAgICBbMTA0Mzo0ODcxXQorMTEyIC0+IEFTVVNUZUsgUDcxMzEgSHlicmlkICAgICAgICAgICAgICAgICAgICAgWzEwNDM6NDg3Nl0KKzExMyAtPiBFbGl0ZWdyb3VwIEVDUyBUVlAzWFAgRk0xMjQ2IFR1bmVyIENhcmQgKFBBTCxGTSkgWzEwMTk6NGNiNl0KKzExNCAtPiBLV29ybGQgRFZCLVQgMjEwICAgICAgICAgICAgICAgICAgICAgICAgIFsxN2RlOjcyNTBdCisxMTUgLT4gU2FicmVudCBQQ01DSUEgVFYtUENCMDUgICAgICAgICAgICAgICAgICBbMDkxOToyMDAzXQorMTE2IC0+IDEwTU9PTlMgVE0zMDAgVFYgQ2FyZCAgICAgICAgICAgICAgICAgICAgWzExMzE6MjMwNF0KKzExNyAtPiBBdmVybWVkaWEgU3VwZXIgMDA3ICAgICAgICAgICAgICAgICAgICAgIFsxNDYxOmYwMWRdCisxMTggLT4gQmVob2xkZXIgQmVob2xkVFYgNDAxICAgICAgICAgICAgICAgICAgICBbMDAwMDo0MDE2XQorMTE5IC0+IEJlaG9sZGVyIEJlaG9sZFRWIDQwMyAgICAgICAgICAgICAgICAgICAgWzAwMDA6NDAzNl0KKzEyMCAtPiBCZWhvbGRlciBCZWhvbGRUViA0MDMgRk0gICAgICAgICAgICAgICAgIFswMDAwOjQwMzddCisxMjEgLT4gQmVob2xkZXIgQmVob2xkVFYgNDA1ICAgICAgICAgICAgICAgICAgICBbMDAwMDo0MDUwXQorMTIyIC0+IEJlaG9sZGVyIEJlaG9sZFRWIDQwNSBGTSAgICAgICAgICAgICAgICAgWzAwMDA6NDA1MV0KKzEyMyAtPiBCZWhvbGRlciBCZWhvbGRUViA0MDcgICAgICAgICAgICAgICAgICAgIFswMDAwOjQwNzBdCisxMjQgLT4gQmVob2xkZXIgQmVob2xkVFYgNDA3IEZNICAgICAgICAgICAgICAgICBbMDAwMDo0MDcxXQorMTI1IC0+IEJlaG9sZGVyIEJlaG9sZFRWIDQwOSAgICAgICAgICAgICAgICAgICAgWzAwMDA6NDA5MF0KKzEyNiAtPiBCZWhvbGRlciBCZWhvbGRUViA1MDUgRk0gICAgICAgICAgICAgICAgIFs1YWNlOjUwNTBdCisxMjcgLT4gQmVob2xkZXIgQmVob2xkVFYgNTA3IEZNIC8gQmVob2xkVFYgNTA5IEZNIFs1YWNlOjUwNzAsNWFjZTo1MDkwXQorMTI4IC0+IEJlaG9sZGVyIEJlaG9sZFRWIENvbHVtYnVzIFRWL0ZNICAgICAgICAgWzAwMDA6NTIwMV0KKzEyOSAtPiBCZWhvbGRlciBCZWhvbGRUViA2MDcgRk0gICAgICAgICAgICAgICAgIFs1YWNlOjYwNzBdCisxMzAgLT4gQmVob2xkZXIgQmVob2xkVFYgTTYgICAgICAgICAgICAgICAgICAgICBbNWFjZTo2MTkwXQorMTMxIC0+IFR3aW5oYW4gSHlicmlkIERUVi1EVkIgMzA1NiBQQ0kgICAgICAgICAgWzE4MjI6MDAyMl0KKzEzMiAtPiBHZW5pdXMgVFZHTyBBTTExTUNFCisxMzMgLT4gTlhQIFNuYWtlIERWQi1TIHJlZmVyZW5jZSBkZXNpZ24KKzEzNCAtPiBNZWRpb24vQ3JlYXRpeCBDVFg5NTMgSHlicmlkICAgICAgICAgICAgIFsxNmJlOjAwMTBdCisxMzUgLT4gTVNJIFRWQG55d2hlcmUgQS9EIHYxLjEgICAgICAgICAgICAgICAgICBbMTQ2Mjo4NjI1XQorMTM2IC0+IEFWZXJNZWRpYSBDYXJkYnVzIFRWL1JhZGlvIChFNTA2UikgICAgICAgWzE0NjE6ZjQzNl0KKzEzNyAtPiBBVmVyTWVkaWEgSHlicmlkIFRWL1JhZGlvIChBMTZEKSAgICAgICAgIFsxNDYxOmY5MzZdCisxMzggLT4gQXZlcm1lZGlhIE0xMTUgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTQ2MTphODM2XQorMTM5IC0+IENvbXBybyBWaWRlb01hdGUgVDc1MCAgICAgICAgICAgICAgICAgICAgWzE4NWI6YzkwMF0KKzE0MCAtPiBBdmVybWVkaWEgRFZCLVMgUHJvIEE3MDAgICAgICAgICAgICAgICAgIFsxNDYxOmE3YTFdCisxNDEgLT4gQXZlcm1lZGlhIERWQi1TIEh5YnJpZCtGTSBBNzAwICAgICAgICAgICBbMTQ2MTphN2EyXQorMTQyIC0+IEJlaG9sZGVyIEJlaG9sZFRWIEg2ICAgICAgICAgICAgICAgICAgICAgWzVhY2U6NjI5MF0KKzE0MyAtPiBCZWhvbGRlciBCZWhvbGRUViBNNjMgICAgICAgICAgICAgICAgICAgIFs1YWNlOjYxOTFdCisxNDQgLT4gQmVob2xkZXIgQmVob2xkVFYgTTYgRXh0cmEgICAgICAgICAgICAgICBbNWFjZTo2MTkzXQorMTQ1IC0+IEFWZXJNZWRpYSBNaW5pUENJIERWQi1UIEh5YnJpZCBNMTAzICAgICAgWzE0NjE6ZjYzNiwxNDYxOmY3MzZdCisxNDYgLT4gQVNVU1RlSyBQNzEzMSBBbmFsb2cKKzE0NyAtPiBBc3VzIFRpZ2VyIDNpbjEgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMDQzOjQ4NzhdCisxNDggLT4gRW5jb3JlIEVOTFRWLUZNIHY1LjMgICAgICAgICAgICAgICAgICAgICBbMWE3ZjoyMDA4XQorMTQ5IC0+IEF2ZXJtZWRpYSBQQ0kgcHVyZSBhbmFsb2cgKE0xMzVBKSAgICAgICAgWzE0NjE6ZjExZF0KKzE1MCAtPiBab2dpcyBSZWFsIEFuZ2VsIDIyMAorMTUxIC0+IEFEUyBUZWNoIEluc3RhbnQgSERUViAgICAgICAgICAgICAgICAgICAgWzE0MjE6MDM4MF0KKzE1MiAtPiBBc3VzIFRpZ2VyIFJldjoxLjAwICAgICAgICAgICAgICAgICAgICAgIFsxMDQzOjQ4NTddCisxNTMgLT4gS3dvcmxkIFBsdXMgVFYgQW5hbG9nIExpdGUgUENJICAgICAgICAgICBbMTdkZTo3MTI4XQorMTU0IC0+IEF2ZXJtZWRpYSBBVmVyVFYgR08gMDA3IEZNIFBsdXMgICAgICAgICAgWzE0NjE6ZjMxZF0KKzE1NSAtPiBIYXVwcGF1Z2UgV2luVFYtSFZSMTE1MCBBVFNDL1FBTS1IeWJyaWQgIFswMDcwOjY3MDYsMDA3MDo2NzA4XQorMTU2IC0+IEhhdXBwYXVnZSBXaW5UVi1IVlIxMTIwIERWQi1UL0h5YnJpZCAgICAgWzAwNzA6NjcwNywwMDcwOjY3MDksMDA3MDo2NzBhXQorMTU3IC0+IEF2ZXJtZWRpYSBBVmVyVFYgU3R1ZGlvIDUwN1VBICAgICAgICAgICAgWzE0NjE6YTExYl0KKzE1OCAtPiBBVmVyTWVkaWEgQ2FyZGJ1cyBUVi9SYWRpbyAoRTUwMVIpICAgICAgIFsxNDYxOmI3ZTldCisxNTkgLT4gQmVob2xkZXIgQmVob2xkVFYgNTA1IFJEUyAgICAgICAgICAgICAgICBbMDAwMDo1MDVCXQorMTYwIC0+IEJlaG9sZGVyIEJlaG9sZFRWIDUwNyBSRFMgICAgICAgICAgICAgICAgWzAwMDA6NTA3MV0KKzE2MSAtPiBCZWhvbGRlciBCZWhvbGRUViA1MDcgUkRTICAgICAgICAgICAgICAgIFswMDAwOjUwN0JdCisxNjIgLT4gQmVob2xkZXIgQmVob2xkVFYgNjA3IEZNICAgICAgICAgICAgICAgICBbNWFjZTo2MDcxXQorMTYzIC0+IEJlaG9sZGVyIEJlaG9sZFRWIDYwOSBGTSAgICAgICAgICAgICAgICAgWzVhY2U6NjA5MF0KKzE2NCAtPiBCZWhvbGRlciBCZWhvbGRUViA2MDkgRk0gICAgICAgICAgICAgICAgIFs1YWNlOjYwOTFdCisxNjUgLT4gQmVob2xkZXIgQmVob2xkVFYgNjA3IFJEUyAgICAgICAgICAgICAgICBbNWFjZTo2MDcyXQorMTY2IC0+IEJlaG9sZGVyIEJlaG9sZFRWIDYwNyBSRFMgICAgICAgICAgICAgICAgWzVhY2U6NjA3M10KKzE2NyAtPiBCZWhvbGRlciBCZWhvbGRUViA2MDkgUkRTICAgICAgICAgICAgICAgIFs1YWNlOjYwOTJdCisxNjggLT4gQmVob2xkZXIgQmVob2xkVFYgNjA5IFJEUyAgICAgICAgICAgICAgICBbNWFjZTo2MDkzXQorMTY5IC0+IENvbXBybyBWaWRlb01hdGUgUzM1MC9TMzAwICAgICAgICAgICAgICAgWzE4NWI6YzkwMF0KKzE3MCAtPiBBdmVyTWVkaWEgQXZlclRWIFN0dWRpbyA1MDUgICAgICAgICAgICAgIFsxNDYxOmExMTVdCisxNzEgLT4gQmVob2xkZXIgQmVob2xkVFYgWDcgICAgICAgICAgICAgICAgICAgICBbNWFjZTo3NTk1XQorMTcyIC0+IFJvdmVyTWVkaWEgVFYgTGluayBQcm8gRk0gICAgICAgICAgICAgICAgWzE5ZDE6MDEzOF0KKzE3MyAtPiBab2xpZCBIeWJyaWQgVFYgVHVuZXIgUENJICAgICAgICAgICAgICAgIFsxMTMxOjIwMDRdCisxNzQgLT4gQXN1cyBFdXJvcGEgSHlicmlkIE9FTSAgICAgICAgICAgICAgICAgICBbMTA0Mzo0ODQ3XQorMTc1IC0+IExlYWR0ZWsgV2luZmFzdCBEVFYxMDAwUyAgICAgICAgICAgICAgICAgWzEwN2Q6NjY1NV0KKzE3NiAtPiBCZWhvbGRlciBCZWhvbGRUViA1MDUgUkRTICAgICAgICAgICAgICAgIFswMDAwOjUwNTFdCisxNzcgLT4gSGF3ZWxsIEhXLTQwNE03CisxNzggLT4gQmVob2xkZXIgQmVob2xkVFYgSDcgICAgICAgICAgICAgICAgICAgICBbNWFjZTo3MTkwXQorMTc5IC0+IEJlaG9sZGVyIEJlaG9sZFRWIEE3ICAgICAgICAgICAgICAgICAgICAgWzVhY2U6NzA5MF0KKzE4MCAtPiBBdmVybWVkaWEgUENJIE03MzNBICAgICAgICAgICAgICAgICAgICAgIFsxNDYxOjQxNTUsMTQ2MTo0MjU1XQorMTgxIC0+IFRlY2hvVHJlbmQgVFQtYnVkZ2V0IFQtMzAwMCAgICAgICAgICAgICAgWzEzYzI6MjgwNF0KKzE4MiAtPiBLd29ybGQgUENJIFNCVFZEL0lTREItVCBGdWxsLVNlZyBIeWJyaWQgIFsxN2RlOmIxMzZdCisxODMgLT4gQ29tcHJvIFZpZGVvTWF0ZSBWaXN0YSBNMUYgICAgICAgICAgICAgICBbMTg1YjpjOTAwXQorMTg0IC0+IEVuY29yZSBFTkxUVi1GTSAzICAgICAgICAgICAgICAgICAgICAgICAgWzFhN2Y6MjEwOF0KKzE4NSAtPiBNYWdpY1BybyBQcm9IRFRWIFBybzIgRE1CLVRIL0h5YnJpZCAgICAgIFsxN2RlOmQxMzZdCisxODYgLT4gQmVob2xkZXIgQmVob2xkVFYgNTAxICAgICAgICAgICAgICAgICAgICBbNWFjZTo1MDEwXQorMTg3IC0+IEJlaG9sZGVyIEJlaG9sZFRWIDUwMyBGTSAgICAgICAgICAgICAgICAgWzVhY2U6NTAzMF0KKzE4OCAtPiBTZW5zb3JheSA4MTEvOTExICAgICAgICAgICAgICAgICAgICAgICAgIFs2MDAwOjA4MTEsNjAwMDowOTExXQorMTg5IC0+IEt3b3JsZCBQQzE1MC1VICAgICAgICAgICAgICAgICAgICAgICAgICAgWzE3ZGU6YTEzNF0KKzE5MCAtPiBBc3VzIE15IENpbmVtYSBQUzMtMTAwICAgICAgICAgICAgICAgICAgIFsxMDQzOjQ4Y2RdCisxOTEgLT4gSGF3ZWxsIEhXLTkwMDRWMQorMTkyIC0+IEF2ZXJNZWRpYSBBdmVyVFYgU2F0ZWxsaXRlIEh5YnJpZCtGTSBBNzA2IFsxNDYxOjIwNTVdCisxOTMgLT4gV0lTIFZveWFnZXIgb3IgY29tcGF0aWJsZSAgICAgICAgICAgICAgICBbMTkwNTo3MDA3XQorMTk0IC0+IEF2ZXJNZWRpYSBBdmVyVFYvNTA1ICAgICAgICAgICAgICAgICAgICAgWzE0NjE6YTEwYV0KKzE5NSAtPiBMZWFkdGVrIFdpbmZhc3QgVFYyMTAwIEZNICAgICAgICAgICAgICAgIFsxMDdkOjZmM2FdCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0NBUkRMSVNULnNhYTcxNjQgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0NBUkRMSVNULnNhYTcxNjQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmViMDU3MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQ0FSRExJU1Quc2FhNzE2NApAQCAtMCwwICsxLDE0IEBACisgIDAgLT4gVW5rbm93bgorICAxIC0+IEdlbmVyaWMgUmV2MgorICAyIC0+IEdlbmVyaWMgUmV2MworICAzIC0+IEhhdXBwYXVnZSBXaW5UVi1IVlIyMjUwICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMDA3MDo4ODgwLDAwNzA6ODgxMF0KKyAgNCAtPiBIYXVwcGF1Z2UgV2luVFYtSFZSMjIwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAwNzA6ODk4MF0KKyAgNSAtPiBIYXVwcGF1Z2UgV2luVFYtSFZSMjIwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAwNzA6ODkwMF0KKyAgNiAtPiBIYXVwcGF1Z2UgV2luVFYtSFZSMjIwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAwNzA6ODkwMV0KKyAgNyAtPiBIYXVwcGF1Z2UgV2luVFYtSFZSMjI1MCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAwNzA6ODg5MSwwMDcwOjg4NTFdCisgIDggLT4gSGF1cHBhdWdlIFdpblRWLUhWUjIyNTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswMDcwOjg4QTFdCisgIDkgLT4gSGF1cHBhdWdlIFdpblRWLUhWUjIyMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswMDcwOjg5NDBdCisgMTAgLT4gSGF1cHBhdWdlIFdpblRWLUhWUjIyMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswMDcwOjg5NTNdCisgMTEgLT4gSGF1cHBhdWdlIFdpblRWLUhWUjIyNTUocHJvdG8pCisgMTIgLT4gSGF1cHBhdWdlIFdpblRWLUhWUjIyNTUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswMDcwOmYxMTFdCisgMTMgLT4gSGF1cHBhdWdlIFdpblRWLUhWUjIyMDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswMDcwOmYxMjMsMDA3MDpmMTIwXQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9DQVJETElTVC50bTYwMDAgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0NBUkRMSVNULnRtNjAwMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWVkY2U0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9DQVJETElTVC50bTYwMDAKQEAgLTAsMCArMSwxNiBAQAorICAxIC0+IEdlbmVyaWMgdG01NjAwIGJvYXJkICAgICAgICAgICAgICAgICAgICh0bTU2MDApICAgICAgICAgIFs2MDAwOjAwMDFdCisgIDIgLT4gR2VuZXJpYyB0bTYwMDAgYm9hcmQgICAgICAgICAgICAgICAgICAgKHRtNjAwMCkgICAgICAgICAgWzYwMDA6MDAwMV0KKyAgMyAtPiBHZW5lcmljIHRtNjAxMCBib2FyZCAgICAgICAgICAgICAgICAgICAodG02MDEwKSAgICAgICAgICBbNjAwMDowMDAyXQorICA0IC0+IDEwTW9vbnMgVVQ4MjEgICAgICAgICAgICAgICAgICAgICAgICAgICh0bTU2MDApICAgICAgICAgIFs2MDAwOjAwMDFdCisgIDUgLT4gMTBNb29ucyBVVDMzMCAgICAgICAgICAgICAgICAgICAgICAgICAgKHRtNTYwMCkKKyAgNiAtPiBBRFNUZWNoIER1YWwgVFYgICAgICAgICAgICAgICAgICAgICAgICAodG02MDAwKSAgICAgICAgICBbMDZlMTpmMzMyXQorICA3IC0+IEZyZWVDb20gYW5kIHNpbWlsYXIgICAgICAgICAgICAgICAgICAgICh0bTYwMDApICAgICAgICAgIFsxNGFhOjA2MjBdCisgIDggLT4gQURTVGVjaCBNaW5pIER1YWwgVFYgICAgICAgICAgICAgICAgICAgKHRtNjAwMCkgICAgICAgICAgWzA2ZTE6YjMzOV0KKyAgOSAtPiBIYXVwcGF1Z2UgV2luVFYgSFZSLTkwMEgvVVNCMiBTdGljayAgICAodG02MDEwKSAgICAgICAgICBbMjA0MDo2NjAwLDIwNDA6NjYwMSwyMDQwOjY2MTAsMjA0MDo2NjExXQorIDEwIC0+IEJlaG9sZGVyIFdhbmRlciAgICAgICAgICAgICAgICAgICAgICAgICh0bTYwMTApICAgICAgICAgIFs2MDAwOmRlYzBdCisgMTEgLT4gQmVob2xkZXIgVm95YWdlciAgICAgICAgICAgICAgICAgICAgICAgKHRtNjAxMCkgICAgICAgICAgWzYwMDA6ZGVjMV0KKyAxMiAtPiBUZXJyYVRlYyBDaW5lcmd5IEh5YnJpZCBYRS9DaW5lcmd5IEh5YnJpZCBTdGljayAodG02MDEwKSBbMGNjZDowMDg2LDBjY2Q6MDBhNV0KKyAxMyAtPiBUd2luSGFuIFRVNTAxICAgICAgICAgICAgICAgICAgICAgICAgICAodG02MDEwKSAgICAgICAgICBbMTNkMzozMjQwLDEzZDM6MzI0MSwxM2QzOjMyNDMsMTNkMzozMjY0XQorIDE0IC0+IEJlaG9sZGVyIFdhbmRlciBMaXRlICAgICAgICAgICAgICAgICAgICh0bTYwMTApICAgICAgICAgIFs2MDAwOmRlYzJdCisgMTUgLT4gQmVob2xkZXIgVm95YWdlciBMaXRlICAgICAgICAgICAgICAgICAgKHRtNjAxMCkgICAgICAgICAgWzYwMDA6ZGVjM10KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9DQVJETElTVC50dW5lciBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQ0FSRExJU1QudHVuZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM4ODYyMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQ0FSRExJU1QudHVuZXIKQEAgLTAsMCArMSw5MSBAQAordHVuZXI9MCAtIFRlbWljIFBBTCAoNDAwMiBGSDUpCit0dW5lcj0xIC0gUGhpbGlwcyBQQUxfSSAoRkkxMjQ2IGFuZCBjb21wYXRpYmxlcykKK3R1bmVyPTIgLSBQaGlsaXBzIE5UU0MgKEZJMTIzNixGTTEyMzYgYW5kIGNvbXBhdGlibGVzKQordHVuZXI9MyAtIFBoaWxpcHMgKFNFQ0FNK1BBTF9CRykgKEZJMTIxNk1GLCBGTTEyMTZNRiwgRlIxMjE2TUYpCit0dW5lcj00IC0gTm9UdW5lcgordHVuZXI9NSAtIFBoaWxpcHMgUEFMX0JHIChGSTEyMTYgYW5kIGNvbXBhdGlibGVzKQordHVuZXI9NiAtIFRlbWljIE5UU0MgKDQwMzIgRlk1KQordHVuZXI9NyAtIFRlbWljIFBBTF9JICg0MDYyIEZZNSkKK3R1bmVyPTggLSBUZW1pYyBOVFNDICg0MDM2IEZZNSkKK3R1bmVyPTkgLSBBbHBzIEhTQkgxCit0dW5lcj0xMCAtIEFscHMgVFNCRTEKK3R1bmVyPTExIC0gQWxwcyBUU0JCNQordHVuZXI9MTIgLSBBbHBzIFRTQkU1Cit0dW5lcj0xMyAtIEFscHMgVFNCQzUKK3R1bmVyPTE0IC0gVGVtaWMgUEFMX0JHICg0MDA2Rkg1KQordHVuZXI9MTUgLSBBbHBzIFRTQ0g2Cit0dW5lcj0xNiAtIFRlbWljIFBBTF9ESyAoNDAxNiBGWTUpCit0dW5lcj0xNyAtIFBoaWxpcHMgTlRTQ19NIChNSzIpCit0dW5lcj0xOCAtIFRlbWljIFBBTF9JICg0MDY2IEZZNSkKK3R1bmVyPTE5IC0gVGVtaWMgUEFMKiBhdXRvICg0MDA2IEZONSkKK3R1bmVyPTIwIC0gVGVtaWMgUEFMX0JHICg0MDA5IEZSNSkgb3IgUEFMX0kgKDQwNjkgRlI1KQordHVuZXI9MjEgLSBUZW1pYyBOVFNDICg0MDM5IEZSNSkKK3R1bmVyPTIyIC0gVGVtaWMgUEFML1NFQ0FNIG11bHRpICg0MDQ2IEZNNSkKK3R1bmVyPTIzIC0gUGhpbGlwcyBQQUxfREsgKEZJMTI1NiBhbmQgY29tcGF0aWJsZXMpCit0dW5lcj0yNCAtIFBoaWxpcHMgUEFML1NFQ0FNIG11bHRpIChGUTEyMTZNRSkKK3R1bmVyPTI1IC0gTEcgUEFMX0krRk0gKFRBUEMtSTAwMUQpCit0dW5lcj0yNiAtIExHIFBBTF9JIChUQVBDLUk3MDFEKQordHVuZXI9MjcgLSBMRyBOVFNDK0ZNIChUUEk4TlNSMDFGKQordHVuZXI9MjggLSBMRyBQQUxfQkcrRk0gKFRQSThQU0IwMUQpCit0dW5lcj0yOSAtIExHIFBBTF9CRyAoVFBJOFBTQjExRCkKK3R1bmVyPTMwIC0gVGVtaWMgUEFMKiBhdXRvICsgRk0gKDQwMDkgRk41KQordHVuZXI9MzEgLSBTSEFSUCBOVFNDX0pQICgyVTVKRjU1NDApCit0dW5lcj0zMiAtIFNhbXN1bmcgUEFMIFRDUE05MDkxUEQyNwordHVuZXI9MzMgLSBNVDIweHggdW5pdmVyc2FsCit0dW5lcj0zNCAtIFRlbWljIFBBTF9CRyAoNDEwNiBGSDUpCit0dW5lcj0zNSAtIFRlbWljIFBBTF9ESy9TRUNBTV9MICg0MDEyIEZZNSkKK3R1bmVyPTM2IC0gVGVtaWMgTlRTQyAoNDEzNiBGWTUpCit0dW5lcj0zNyAtIExHIFBBTCAobmV3ZXIgVEFQQyBzZXJpZXMpCit0dW5lcj0zOCAtIFBoaWxpcHMgUEFML1NFQ0FNIG11bHRpIChGTTEyMTZNRSBNSzMpCit0dW5lcj0zOSAtIExHIE5UU0MgKG5ld2VyIFRBUEMgc2VyaWVzKQordHVuZXI9NDAgLSBISVRBQ0hJIFY3LUoxODBBVAordHVuZXI9NDEgLSBQaGlsaXBzIFBBTF9NSyAoRkkxMjE2IE1LKQordHVuZXI9NDIgLSBQaGlsaXBzIEZDVjEyMzZEIEFUU0MvTlRTQyBkdWFsIGluCit0dW5lcj00MyAtIFBoaWxpcHMgTlRTQyBNSzMgKEZNMTIzNk1LMyBvciBGTTEyMzYvRikKK3R1bmVyPTQ0IC0gUGhpbGlwcyA0IGluIDEgKEFUSSBUViBXb25kZXIgUHJvL0NvbmV4YW50KQordHVuZXI9NDUgLSBNaWNyb3R1bmUgNDA0OSBGTTUKK3R1bmVyPTQ2IC0gUGFuYXNvbmljIFZQMjdzL0VOR0U0MzI0RAordHVuZXI9NDcgLSBMRyBOVFNDIChUQVBFIHNlcmllcykKK3R1bmVyPTQ4IC0gVGVubmEgVE5GIDg4MzEgQkdGRikKK3R1bmVyPTQ5IC0gTWljcm90dW5lIDQwNDIgRkk1IEFUU0MvTlRTQyBkdWFsIGluCit0dW5lcj01MCAtIFRDTCAyMDAyTgordHVuZXI9NTEgLSBQaGlsaXBzIFBBTC9TRUNBTV9EIChGTSAxMjU2IEktSDMpCit0dW5lcj01MiAtIFRob21zb24gRFRUIDc2MTAgKEFUU0MvTlRTQykKK3R1bmVyPTUzIC0gUGhpbGlwcyBGUTEyODYKK3R1bmVyPTU0IC0gUGhpbGlwcy9OWFAgVERBIDgyOTAvODI5NSArIDgyNzUvODI3NUEvMTgyNzEKK3R1bmVyPTU1IC0gVENMIDIwMDJNQgordHVuZXI9NTYgLSBQaGlsaXBzIFBBTC9TRUNBTSBtdWx0aSAoRlExMjE2QU1FIE1LNCkKK3R1bmVyPTU3IC0gUGhpbGlwcyBGUTEyMzZBIE1LNAordHVuZXI9NTggLSBZbWVjIFRWaXNpb24gVFZGLTg1MzFNRi84ODMxTUYvODczMU1GCit0dW5lcj01OSAtIFltZWMgVFZpc2lvbiBUVkYtNTUzM01GCit0dW5lcj02MCAtIFRob21zb24gRFRUIDc2MVggKEFUU0MvTlRTQykKK3R1bmVyPTYxIC0gVGVuYSBUTkY5NTMzLUQvSUYvVE5GOTUzMy1CL0RGCit0dW5lcj02MiAtIFBoaWxpcHMgVEVBNTc2N0hOIEZNIFJhZGlvCit0dW5lcj02MyAtIFBoaWxpcHMgRk1EMTIxNk1FIE1LMyBIeWJyaWQgVHVuZXIKK3R1bmVyPTY0IC0gTEcgVERWUy1IMDZ4RgordHVuZXI9NjUgLSBZbWVjIFRWRjY2VDUtQi9ERkYKK3R1bmVyPTY2IC0gTEcgVEFMTiBzZXJpZXMKK3R1bmVyPTY3IC0gUGhpbGlwcyBURDEzMTYgSHlicmlkIFR1bmVyCit0dW5lcj02OCAtIFBoaWxpcHMgVFVWMTIzNkQgQVRTQy9OVFNDIGR1YWwgaW4KK3R1bmVyPTY5IC0gVGVuYSBUTkYgNTMzNSBhbmQgc2ltaWxhciBtb2RlbHMKK3R1bmVyPTcwIC0gU2Ftc3VuZyBUQ1BOIDIxMjFQMzBBCit0dW5lcj03MSAtIFhjZWl2ZSB4YzIwMjgveGMzMDI4IHR1bmVyCit0dW5lcj03MiAtIFRob21zb24gRkU2NjAwCit0dW5lcj03MyAtIFNhbXN1bmcgVENQRyA2MTIxUDMwQQordHVuZXI9NzUgLSBQaGlsaXBzIFRFQTU3NjEgRk0gUmFkaW8KK3R1bmVyPTc2IC0gWGNlaXZlIDUwMDAgdHVuZXIKK3R1bmVyPTc3IC0gVENMIHR1bmVyIE1GMDJHSVAtNU4tRQordHVuZXI9NzggLSBQaGlsaXBzIEZNRDEyMTZNRVggTUszIEh5YnJpZCBUdW5lcgordHVuZXI9NzkgLSBQaGlsaXBzIFBBTC9TRUNBTSBtdWx0aSAoRk0xMjE2IE1LNSkKK3R1bmVyPTgwIC0gUGhpbGlwcyBGUTEyMTZMTUUgTUszIFBBTC9TRUNBTSB3L2FjdGl2ZSBsb29wdGhyb3VnaAordHVuZXI9ODEgLSBQYXJ0c25pYyAoRGFld29vKSBQVEktNU5GMDUKK3R1bmVyPTgyIC0gUGhpbGlwcyBDVTEyMTZMCit0dW5lcj04MyAtIE5YUCBUREExODI3MQordHVuZXI9ODQgLSBTb255IEJURi1QeG4wMVoKK3R1bmVyPTg1IC0gUGhpbGlwcyBGUTEyMzYgTUs1Cit0dW5lcj04NiAtIFRlbmEgVE5GNTMzNyBNRkQKK3R1bmVyPTg3IC0gWGNlaXZlIDQwMDAgdHVuZXIKK3R1bmVyPTg4IC0gWGNlaXZlIDUwMDBDIHR1bmVyCit0dW5lcj04OSAtIFNvbnkgQlRGLVBHNDcyWiBQQUwvU0VDQU0KK3R1bmVyPTkwIC0gU29ueSBCVEYtUEs0NjdaIE5UU0MtTS1KUAordHVuZXI9OTEgLSBTb255IEJURi1QQjQ2M1ogTlRTQy1NCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0NBUkRMSVNULnVzYnZpc2lvbiBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvQ0FSRExJU1QudXNidmlzaW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmZDFhZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L0NBUkRMSVNULnVzYnZpc2lvbgpAQCAtMCwwICsxLDY3IEBACisgIDAgLT4gWGFuYm9vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzBhNmY6MDQwMF0KKyAgMSAtPiBCZWxraW4gVVNCIFZpZGVvQnVzIElJIEFkYXB0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICBbMDUwZDowMTA2XQorICAyIC0+IEJlbGtpbiBDb21wb25lbnRzIFVTQiBWaWRlb0J1cyAgICAgICAgICAgICAgICAgICAgICAgICAgIFswNTBkOjAyMDddCisgIDMgLT4gQmVsa2luIFVTQiBWaWRlb0J1cyBJSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzA1MGQ6MDIwOF0KKyAgNCAtPiBlY2hvRlggSW50ZXJWaWV3IExpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMDU3MTowMDAyXQorICA1IC0+IFVTQkdlYXIgVVNCRy1WMSByZXNwLiBIQU1BIFVTQiAgICAgICAgICAgICAgICAgICAgICAgICAgIFswNTczOjAwMDNdCisgIDYgLT4gRC1MaW5rIFYxMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzA1NzM6MDQwMF0KKyAgNyAtPiBYMTAgVVNCIENhbWVyYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMDU3MzoyMDAwXQorICA4IC0+IEhhdXBwYXVnZSBXaW5UViBVU0IgTGl2ZSAoUEFMIEIvRykgICAgICAgICAgICAgICAgICAgICAgIFswNTczOjJkMDBdCisgIDkgLT4gSGF1cHBhdWdlIFdpblRWIFVTQiBMaXZlIFBybyAoTlRTQyBNL04pICAgICAgICAgICAgICAgICAgWzA1NzM6MmQwMV0KKyAxMCAtPiBab3JhbiBDby4gUE1EIChOb2dhdGVjaCkgQVYtZ3JhYmJlciBNYW5oYXR0YW4gICAgICAgICAgICBbMDU3MzoyMTAxXQorIDExIC0+IE5vZ2F0ZWNoIFVTQi1UViAoTlRTQykgRk0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswNTczOjQxMDBdCisgMTIgLT4gUE5ZIFVTQi1UViAoTlRTQykgRk0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzA1NzM6NDExMF0KKyAxMyAtPiBQaXhlbFZpZXcgUGxheVR2LVVTQiBQUk8gKFBBTCkgRk0gICAgICAgICAgICAgICAgICAgICAgICBbMDU3Mzo0NDUwXQorIDE0IC0+IFpUViBaVC03MjEgMi40R0h6IFVTQiBBL1YgUmVjZWl2ZXIgICAgICAgICAgICAgICAgICAgICAgIFswNTczOjQ1NTBdCisgMTUgLT4gSGF1cHBhdWdlIFdpblRWIFVTQiAoTlRTQyBNL04pICAgICAgICAgICAgICAgICAgICAgICAgICAgWzA1NzM6NGQwMF0KKyAxNiAtPiBIYXVwcGF1Z2UgV2luVFYgVVNCIChQQUwgQi9HKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMDU3Mzo0ZDAxXQorIDE3IC0+IEhhdXBwYXVnZSBXaW5UViBVU0IgKFBBTCBJKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswNTczOjRkMDJdCisgMTggLT4gSGF1cHBhdWdlIFdpblRWIFVTQiAoUEFML1NFQ0FNIEwpICAgICAgICAgICAgICAgICAgICAgICAgWzA1NzM6NGQwM10KKyAxOSAtPiBIYXVwcGF1Z2UgV2luVFYgVVNCIChQQUwgRC9LKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMDU3Mzo0ZDA0XQorIDIwIC0+IEhhdXBwYXVnZSBXaW5UViBVU0IgKE5UU0MgRk0pICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswNTczOjRkMTBdCisgMjEgLT4gSGF1cHBhdWdlIFdpblRWIFVTQiAoUEFMIEIvRyBGTSkgICAgICAgICAgICAgICAgICAgICAgICAgWzA1NzM6NGQxMV0KKyAyMiAtPiBIYXVwcGF1Z2UgV2luVFYgVVNCIChQQUwgSSBGTSkgICAgICAgICAgICAgICAgICAgICAgICAgICBbMDU3Mzo0ZDEyXQorIDIzIC0+IEhhdXBwYXVnZSBXaW5UViBVU0IgKFBBTCBEL0sgRk0pICAgICAgICAgICAgICAgICAgICAgICAgIFswNTczOjRkMTRdCisgMjQgLT4gSGF1cHBhdWdlIFdpblRWIFVTQiBQcm8gKE5UU0MgTS9OKSAgICAgICAgICAgICAgICAgICAgICAgWzA1NzM6NGQyYV0KKyAyNSAtPiBIYXVwcGF1Z2UgV2luVFYgVVNCIFBybyAoTlRTQyBNL04pIFYyICAgICAgICAgICAgICAgICAgICBbMDU3Mzo0ZDJiXQorIDI2IC0+IEhhdXBwYXVnZSBXaW5UViBVU0IgUHJvIChQQUwvU0VDQU0gQi9HL0kvRC9LL0wpICAgICAgICAgIFswNTczOjRkMmNdCisgMjcgLT4gSGF1cHBhdWdlIFdpblRWIFVTQiBQcm8gKE5UU0MgTS9OKSBWMyAgICAgICAgICAgICAgICAgICAgWzA1NzM6NGQyMF0KKyAyOCAtPiBIYXVwcGF1Z2UgV2luVFYgVVNCIFBybyAoUEFMIEIvRykgICAgICAgICAgICAgICAgICAgICAgICBbMDU3Mzo0ZDIxXQorIDI5IC0+IEhhdXBwYXVnZSBXaW5UViBVU0IgUHJvIChQQUwgSSkgICAgICAgICAgICAgICAgICAgICAgICAgIFswNTczOjRkMjJdCisgMzAgLT4gSGF1cHBhdWdlIFdpblRWIFVTQiBQcm8gKFBBTC9TRUNBTSBMKSAgICAgICAgICAgICAgICAgICAgWzA1NzM6NGQyM10KKyAzMSAtPiBIYXVwcGF1Z2UgV2luVFYgVVNCIFBybyAoUEFMIEQvSykgICAgICAgICAgICAgICAgICAgICAgICBbMDU3Mzo0ZDI0XQorIDMyIC0+IEhhdXBwYXVnZSBXaW5UViBVU0IgUHJvIChQQUwvU0VDQU0gQkdESy9JL0wpICAgICAgICAgICAgIFswNTczOjRkMjVdCisgMzMgLT4gSGF1cHBhdWdlIFdpblRWIFVTQiBQcm8gKFBBTC9TRUNBTSBCR0RLL0kvTCkgVjIgICAgICAgICAgWzA1NzM6NGQyNl0KKyAzNCAtPiBIYXVwcGF1Z2UgV2luVFYgVVNCIFBybyAoUEFMIEIvRykgVjIgICAgICAgICAgICAgICAgICAgICBbMDU3Mzo0ZDI3XQorIDM1IC0+IEhhdXBwYXVnZSBXaW5UViBVU0IgUHJvIChQQUwgQi9HLEQvSykgICAgICAgICAgICAgICAgICAgIFswNTczOjRkMjhdCisgMzYgLT4gSGF1cHBhdWdlIFdpblRWIFVTQiBQcm8gKFBBTCBJLEQvSykgICAgICAgICAgICAgICAgICAgICAgWzA1NzM6NGQyOV0KKyAzNyAtPiBIYXVwcGF1Z2UgV2luVFYgVVNCIFBybyAoTlRTQyBNL04gRk0pICAgICAgICAgICAgICAgICAgICBbMDU3Mzo0ZDMwXQorIDM4IC0+IEhhdXBwYXVnZSBXaW5UViBVU0IgUHJvIChQQUwgQi9HIEZNKSAgICAgICAgICAgICAgICAgICAgIFswNTczOjRkMzFdCisgMzkgLT4gSGF1cHBhdWdlIFdpblRWIFVTQiBQcm8gKFBBTCBJIEZNKSAgICAgICAgICAgICAgICAgICAgICAgWzA1NzM6NGQzMl0KKyA0MCAtPiBIYXVwcGF1Z2UgV2luVFYgVVNCIFBybyAoUEFMIEQvSyBGTSkgICAgICAgICAgICAgICAgICAgICBbMDU3Mzo0ZDM0XQorIDQxIC0+IEhhdXBwYXVnZSBXaW5UViBVU0IgUHJvIChUZW1pYyBQQUwvU0VDQU0gQi9HL0kvRC9LL0wgRk0pIFswNTczOjRkMzVdCisgNDIgLT4gSGF1cHBhdWdlIFdpblRWIFVTQiBQcm8gKFRlbWljIFBBTCBCL0cgRk0pICAgICAgICAgICAgICAgWzA1NzM6NGQzNl0KKyA0MyAtPiBIYXVwcGF1Z2UgV2luVFYgVVNCIFBybyAoUEFML1NFQ0FNIEIvRy9JL0QvSy9MIEZNKSAgICAgICBbMDU3Mzo0ZDM3XQorIDQ0IC0+IEhhdXBwYXVnZSBXaW5UViBVU0IgUHJvIChOVFNDIE0vTiBGTSkgVjIgICAgICAgICAgICAgICAgIFswNTczOjRkMzhdCisgNDUgLT4gQ2FtdGVsIFRlY2hub2xvZ3kgVVNCIFRWIEdlbmllIFBybyBGTSBNb2RlbCBUVkIzMzAgICAgICAgWzA3Njg6MDAwNl0KKyA0NiAtPiBEaWdpdGFsIFZpZGVvIENyZWF0b3IgSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMDdkMDowMDAxXQorIDQ3IC0+IEdsb2JhbCBWaWxsYWdlIEdWLTAwNyAoTlRTQykgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswN2QwOjAwMDJdCisgNDggLT4gRGF6emxlIEZ1c2lvbiBNb2RlbCBEVkMtNTAgUmV2IDEgKE5UU0MpICAgICAgICAgICAgICAgICAgWzA3ZDA6MDAwM10KKyA0OSAtPiBEYXp6bGUgRnVzaW9uIE1vZGVsIERWQy04MCBSZXYgMSAoUEFMKSAgICAgICAgICAgICAgICAgICBbMDdkMDowMDA0XQorIDUwIC0+IERhenpsZSBGdXNpb24gTW9kZWwgRFZDLTkwIFJldiAxIChTRUNBTSkgICAgICAgICAgICAgICAgIFswN2QwOjAwMDVdCisgNTEgLT4gRXNrYXBlIExhYnMgTXlUVjJHbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzA3Zjg6OTEwNF0KKyA1MiAtPiBQaW5uYWNsZSBTdHVkaW8gUENUViBVU0IgKFBBTCkgICAgICAgICAgICAgICAgICAgICAgICAgICBbMjMwNDowMTBkXQorIDUzIC0+IFBpbm5hY2xlIFN0dWRpbyBQQ1RWIFVTQiAoU0VDQU0pICAgICAgICAgICAgICAgICAgICAgICAgIFsyMzA0OjAxMDldCisgNTQgLT4gUGlubmFjbGUgU3R1ZGlvIFBDVFYgVVNCIChQQUwpIEZNICAgICAgICAgICAgICAgICAgICAgICAgWzIzMDQ6MDExMF0KKyA1NSAtPiBNaXJvIFBDVFYgVVNCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMjMwNDowMTExXQorIDU2IC0+IFBpbm5hY2xlIFN0dWRpbyBQQ1RWIFVTQiAoTlRTQykgRk0gICAgICAgICAgICAgICAgICAgICAgIFsyMzA0OjAxMTJdCisgNTcgLT4gUGlubmFjbGUgU3R1ZGlvIFBDVFYgVVNCIChQQUwpIEZNIFYyICAgICAgICAgICAgICAgICAgICAgWzIzMDQ6MDIxMF0KKyA1OCAtPiBQaW5uYWNsZSBTdHVkaW8gUENUViBVU0IgKE5UU0MpIEZNIFYyICAgICAgICAgICAgICAgICAgICBbMjMwNDowMjEyXQorIDU5IC0+IFBpbm5hY2xlIFN0dWRpbyBQQ1RWIFVTQiAoUEFMKSBGTSBWMyAgICAgICAgICAgICAgICAgICAgIFsyMzA0OjAyMTRdCisgNjAgLT4gUGlubmFjbGUgU3R1ZGlvIExpbnggVmlkZW8gaW5wdXQgY2FibGUgKE5UU0MpICAgICAgICAgICAgWzIzMDQ6MDMwMF0KKyA2MSAtPiBQaW5uYWNsZSBTdHVkaW8gTGlueCBWaWRlbyBpbnB1dCBjYWJsZSAoUEFMKSAgICAgICAgICAgICBbMjMwNDowMzAxXQorIDYyIC0+IFBpbm5hY2xlIFBDVFYgQnVuZ2VlIFVTQiAoUEFMKSBGTSAgICAgICAgICAgICAgICAgICAgICAgIFsyMzA0OjA0MTldCisgNjMgLT4gSGF1cHBhdWdlIFdpblR2LVVTQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzI0MDA6NDIwMF0KKyA2NCAtPiBQaW5uYWNsZSBTdHVkaW8gUENUViBVU0IgKE5UU0MpIEZNIFYzICAgICAgICAgICAgICAgICAgICBbMjMwNDowMTEzXQorIDY1IC0+IE5vZ2F0ZWNoIFVTQiBNaWNyb0NhbSBOVFNDIChOVjMwMDBOKSAgICAgICAgICAgICAgICAgICAgIFswNTczOjMwMDBdCisgNjYgLT4gTm9nYXRlY2ggVVNCIE1pY3JvQ2FtIFBBTCAoTlYzMDAxUCkgICAgICAgICAgICAgICAgICAgICAgWzA1NzM6MzAwMV0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvTWFrZWZpbGUgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1YTM1MWQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L01ha2VmaWxlCkBAIC0wLDAgKzEgQEAKK29iai0kKENPTkZJR19WSURFT19QQ0lfU0tFTEVUT04pIDo9IHY0bDItcGNpLXNrZWxldG9uLm8KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvUkVBRE1FLmNwaWEyIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9SRUFETUUuY3BpYTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhlNzQyZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvUkVBRE1FLmNwaWEyCkBAIC0wLDAgKzEsMTMwIEBACiskSWQ6IFJFQURNRSx2IDEuNyAyMDA1LzA4LzI5IDIzOjM5OjU3IHNiZXJ0aW4gRXhwICQKKworMS4gSW50cm9kdWN0aW9uCisKKwlUaGlzIGlzIGEgZHJpdmVyIGZvciBTVE1pY3JvZWxlY3Ryb25pY3MncyBDUGlBMiAoc2Vjb25kIGdlbmVyYXRpb24KK0NvbG91ciBQcm9jZXNzb3IgSW50ZXJmYWNlIEFTSUMpIGJhc2VkIGNhbWVyYXMuIFRoaXMgY2FtZXJhIG91dHB1dHMgYW4gTUpQRUcKK3N0cmVhbSBhdCB1cCB0byB2Z2Egc2l6ZS4gSXQgaW1wbGVtZW50cyB0aGUgVmlkZW80TGludXggaW50ZXJmYWNlIGFzIG11Y2ggYXMKK3Bvc3NpYmxlLiAgU2luY2UgdGhlIFY0TCBpbnRlcmZhY2UgZG9lcyBub3Qgc3VwcG9ydCBjb21wcmVzc2VkIGZvcm1hdHMsIG9ubHkKK2FuIG1qcGVnIGVuYWJsZWQgYXBwbGljYXRpb24gY2FuIGJlIHVzZWQgd2l0aCB0aGUgY2FtZXJhLiBXZSBoYXZlIG1vZGlmaWVkIHRoZQorZ3FjYW0gYXBwbGljYXRpb24gdG8gdmlldyB0aGlzIHN0cmVhbS4KKworCVRoZSBkcml2ZXIgaXMgaW1wbGVtZW50ZWQgYXMgdHdvIGtlcm5lbCBtb2R1bGVzLiBUaGUgY3BpYTIgbW9kdWxlCitjb250YWlucyB0aGUgY2FtZXJhIGZ1bmN0aW9ucyBhbmQgdGhlIFY0TCBpbnRlcmZhY2UuICBUaGUgY3BpYTJfdXNiIG1vZHVsZQorY29udGFpbnMgdXNiIHNwZWNpZmljIGZ1bmN0aW9ucy4gIFRoZSBtYWluIHJlYXNvbiBmb3IgdGhpcyB3YXMgdGhlIHNpemUgb2YgdGhlCittb2R1bGUgd2FzIGdldHRpbmcgb3V0IG9mIGhhbmQsIHNvIEkgc2VwYXJhdGVkIHRoZW0uICBJdCBpcyBub3QgbGlrZWx5IHRoYXQKK3RoZXJlIHdpbGwgYmUgYSBwYXJhbGxlbCBwb3J0IHZlcnNpb24uCisKK0ZFQVRVUkVTOgorICAgLSBTdXBwb3J0cyBjYW1lcmFzIHdpdGggdGhlIFZpc2lvbiBzdHY2NDEwIChDSUYpIGFuZCBzdHY2NTAwIChWR0EpIGNtb3MKKyAgICAgc2Vuc29ycy4gSSBvbmx5IGhhdmUgdGhlIHZnYSBzZW5zb3IsIHNvIGNhbid0IHRlc3QgdGhlIG90aGVyLgorICAgLSBJbWFnZSBmb3JtYXRzOiBWR0EsIFFWR0EsIENJRiwgUUNJRiwgYW5kIGEgbnVtYmVyIG9mIHNpemVzIGluIGJldHdlZW4uCisgICAgIFZHQSBhbmQgUVZHQSBhcmUgdGhlIG5hdGl2ZSBpbWFnZSBzaXplcyBmb3IgdGhlIFZHQSBjYW1lcmEuIENJRiBpcyBkb25lCisgICAgIGluIHRoZSBjb3Byb2Nlc3NvciBieSBzY2FsaW5nIFFWR0EuICBBbGwgb3RoZXIgc2l6ZXMgYXJlIGRvbmUgYnkgY2xpcHBpbmcuCisgICAtIFBhbGV0dGU6IFlDckNiLCBjb21wcmVzc2VkIHdpdGggTUpQRUcuCisgICAtIFNvbWUgY29tcHJlc3Npb24gcGFyYW1ldGVycyBhcmUgc2V0dGFibGUuCisgICAtIFNlbnNvciBmcmFtZXJhdGUgaXMgYWRqdXN0YWJsZSAodXAgdG8gMzAgZnBzIENJRiwgMTUgZnBzIFZHQSkuCisgICAtIEFkanVzdCBicmlnaHRuZXNzLCBjb2xvciwgY29udHJhc3Qgd2hpbGUgc3RyZWFtaW5nLgorICAgLSBGbGlja2VyIGNvbnRyb2wgc2V0dGFibGUgZm9yIDUwIG9yIDYwIEh6IG1haW5zIGZyZXF1ZW5jeS4KKworMi4gTWFraW5nIGFuZCBpbnN0YWxsaW5nIHRoZSBzdHY2NzIgZHJpdmVyIG1vZHVsZXM6CisKKwlSZXF1aXJlbWVudHM6CisJLS0tLS0tLS0tLS0tLQorCVRoaXMgc2hvdWxkIHdvcmsgd2l0aCAyLjQgKDIuNC4yMyBhbmQgbGF0ZXIpIGFuZCAyLjYga2VybmVscywgYnV0IGhhcworb25seSBiZWVuIHRlc3RlZCBvbiAyLjYuICBWaWRlbzRMaW51eCBtdXN0IGJlIGVpdGhlciBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgb3IKK2F2YWlsYWJsZSBhcyBhIG1vZHVsZS4gIFZpZGVvNExpbnV4MiBpcyBhdXRvbWF0aWNhbGx5IGRldGVjdGVkIGFuZCBtYWRlCithdmFpbGFibGUgYXQgY29tcGlsZSB0aW1lLgorCisJQ29tcGlsaW5nOgorCS0tLS0tLS0tLS0KKwlBcyByb290LCBkbyBhIG1ha2UgaW5zdGFsbC4gIFRoaXMgd2lsbCBjb21waWxlIGFuZCBpbnN0YWxsIHRoZSBtb2R1bGVzCitpbnRvIHRoZSBtZWRpYS92aWRlbyBkaXJlY3RvcnkgaW4gdGhlIG1vZHVsZSB0cmVlLiBGb3IgMi40IGtlcm5lbHMsIHVzZQorTWFrZWZpbGVfMi40IChha2EgZG8gbWFrZSAtZiBNYWtlZmlsZV8yLjQgaW5zdGFsbCkuCisKKwlTZXR1cDoKKwktLS0tLS0KKwlVc2UgJ21vZHByb2JlIGNwaWEyJyB0byBsb2FkIGFuZCAnbW9kcHJvYmUgLXIgY3BpYTInIHRvIHVubG9hZC4gVGhpcworbWF5IGJlIGRvbmUgYXV0b21hdGljYWxseSBieSB5b3VyIGRpc3RyaWJ1dGlvbi4KKworMy4gRHJpdmVyIG9wdGlvbnMKKworCU9wdGlvbgkJRGVzY3JpcHRpb24KKwktLS0tLS0JCS0tLS0tLS0tLS0tCisJdmlkZW9fbnIJdmlkZW8gZGV2aWNlIHRvIHJlZ2lzdGVyICgwPS9kZXYvdmlkZW8wLCBldGMpCisJCQlyYW5nZSAtMSB0byA2NC4gIGRlZmF1bHQgaXMgLTEgKGZpcnN0IGF2YWlsYWJsZSkKKwkJCUlmIHlvdSBoYXZlIG1vcmUgdGhhbiAxIGNhbWVyYSwgdGhpcyBNVVNUIGJlIC0xLgorCWJ1ZmZlcl9zaXplCVNpemUgZm9yIGVhY2ggZnJhbWUgYnVmZmVyIGluIGJ5dGVzIChkZWZhdWx0IDY4aykKKwludW1fYnVmZmVycwlOdW1iZXIgb2YgZnJhbWUgYnVmZmVycyAoMS0zMiwgZGVmYXVsdCAzKQorCWFsdGVybmF0ZQlVU0IgQWx0ZXJuYXRlICgyLTcsIGRlZmF1bHQgNykKKwlmbGlja2VyX2ZyZXEJRnJlcXVlbmN5IGZvciBmbGlja2VyIHJlZHVjdGlvbig1MCBvciA2MCwgZGVmYXVsdCA2MCkKKwlmbGlja2VyX21vZGUJMCB0byBkaXNhYmxlLCBvciAxIHRvIGVuYWJsZSBmbGlja2VyIHJlZHVjdGlvbi4KKwkJCShkZWZhdWx0IDApLiBUaGlzIGlzIG9ubHkgZWZmZWN0aXZlIGlmIHRoZSBjYW1lcmEKKwkJCXVzZXMgYSBzdHYwNjcyIGNvcHJvY2Vzc29yLgorCisJU2V0dGluZyB0aGUgb3B0aW9uczoKKwktLS0tLS0tLS0tLS0tLS0tLS0tLQorCUlmIHlvdSBhcmUgdXNpbmcgbW9kdWxlcywgZWRpdCAvZXRjL21vZHVsZXMuY29uZiBhbmQgYWRkIGFuIG9wdGlvbnMKK2xpbmUgbGlrZSB0aGlzOgorCW9wdGlvbnMgY3BpYTIgbnVtX2J1ZmZlcnM9MyBidWZmZXJfc2l6ZT02NTUzNQorCisJSWYgdGhlIGRyaXZlciBpcyBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwsIGF0IGJvb3QgdGltZSBzcGVjaWZ5IHRoZW0KK2xpa2UgdGhpczoKKwljcGlhMi5udW1fYnVmZmVycz0zIGNwaWEyLmJ1ZmZlcl9zaXplPTY1NTM1CisKKwlXaGF0IGJ1ZmZlciBzaXplIHNob3VsZCBJIHVzZT8KKwktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlUaGUgbWF4aW11bSBpbWFnZSBzaXplIGRlcGVuZHMgb24gdGhlIGFsdGVybmF0ZSB5b3UgY2hvb3NlLCBhbmQgdGhlCitmcmFtZSByYXRlIGFjaGlldmVkIGJ5IHRoZSBjYW1lcmEuICBJZiB0aGUgY29tcHJlc3Npb24gZW5naW5lIGlzIGFibGUgdG8KK2tlZXAgdXAgd2l0aCB0aGUgZnJhbWUgcmF0ZSwgdGhlIG1heGltdW0gaW1hZ2Ugc2l6ZSBpcyBnaXZlbiBieSB0aGUgdGFibGUKK2JlbG93LgorCVRoZSBjb21wcmVzc2lvbiBlbmdpbmUgc3RhcnRzIG91dCBhdCBtYXhpbXVtIGNvbXByZXNzaW9uLCBhbmQgd2lsbAoraW5jcmVhc2UgaW1hZ2UgcXVhbGl0eSB1bnRpbCBpdCBpcyBjbG9zZSB0byB0aGUgc2l6ZSBpbiB0aGUgdGFibGUuICBBcyBsb25nCithcyB0aGUgY29tcHJlc3Npb24gZW5naW5lIGNhbiBrZWVwIHVwIHdpdGggdGhlIGZyYW1lIHJhdGUsIGFmdGVyIGEgc2hvcnQgdGltZQordGhlIGltYWdlcyB3aWxsIGFsbCBiZSBhYm91dCB0aGUgc2l6ZSBpbiB0aGUgdGFibGUsIHJlZ2FyZGxlc3Mgb2YgcmVzb2x1dGlvbi4KKwlBdCBsb3cgYWx0ZXJuYXRlIHNldHRpbmdzLCB0aGUgY29tcHJlc3Npb24gZW5naW5lIG1heSBub3QgYmUgYWJsZSB0bworY29tcHJlc3MgdGhlIGltYWdlIGVub3VnaCBhbmQgd2lsbCByZWR1Y2UgdGhlIGZyYW1lIHJhdGUgYnkgcHJvZHVjaW5nIGxhcmdlcgoraW1hZ2VzLgorCVRoZSBkZWZhdWx0IG9mIDY4ayBzaG91bGQgYmUgZ29vZCBmb3IgbW9zdCB1c2Vycy4gIFRoaXMgd2lsbCBoYW5kbGUKK2FueSBhbHRlcm5hdGUgYXQgZnJhbWUgcmF0ZXMgZG93biB0byAxNWZwcy4gIEZvciBsb3dlciBmcmFtZSByYXRlcywgaXQgbWF5CitiZSBuZWNlc3NhcnkgdG8gaW5jcmVhc2UgdGhlIGJ1ZmZlciBzaXplIHRvIGF2b2lkIGhhdmluZyBmcmFtZXMgZHJvcHBlZCBkdWUKK3RvIGluc3VmZmljaWVudCBzcGFjZS4KKworCQkJICAgICBJbWFnZSBzaXplKGJ5dGVzKQorCUFsdGVybmF0ZSAgYnl0ZXMvbXMgICAxNWZwcyAgICAzMGZwcworCSAgICAyICAgICAgICAgMTI4ICAgICAgODUzMyAgICAgNDI2NworCSAgICAzICAgICAgICAgMzg0ICAgICAyNTYwMCAgICAxMjgwMAorCSAgICA0ICAgICAgICAgNjQwICAgICA0MjY2NyAgICAyMTMzMworCSAgICA1ICAgICAgICAgNzY4ICAgICA1MTIwMCAgICAyNTYwMAorCSAgICA2ICAgICAgICAgODk2ICAgICA1OTczMyAgICAyOTg2NworCSAgICA3ICAgICAgICAxMDIzICAgICA2ODIwMCAgICAzNDEwMAorCisJSG93IG1hbnkgYnVmZmVycyBzaG91bGQgSSB1c2U/CisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJRm9yIG5vcm1hbCBzdHJlYW1pbmcsIDMgc2hvdWxkIGdpdmUgdGhlIGJlc3QgcmVzdWx0cy4gIFdpdGggb25seSAyLAoraXQgaXMgcG9zc2libGUgZm9yIHRoZSBjYW1lcmEgdG8gZmluaXNoIHNlbmRpbmcgb25lIGltYWdlIGp1c3QgYWZ0ZXIgYQorcHJvZ3JhbSBoYXMgc3RhcnRlZCByZWFkaW5nIHRoZSBvdGhlci4gIElmIHRoaXMgaGFwcGVucywgdGhlIGRyaXZlciBtdXN0IGRyb3AKK2EgZnJhbWUuICBUaGUgZXhjZXB0aW9uIHRvIHRoaXMgaXMgaWYgeW91IGhhdmUgYSBoZWF2aWx5IGxvYWRlZCBtYWNoaW5lLiAgSW4KK3RoaXMgY2FzZSB1c2UgMiBidWZmZXJzLiAgWW91IGFyZSBwcm9iYWJseSBub3QgcmVhZGluZyBhdCB0aGUgZnVsbCBmcmFtZSByYXRlLgorSWYgdGhlIGNhbWVyYSBjYW4gc2VuZCBtdWx0aXBsZSBpbWFnZXMgYmVmb3JlIGEgcmVhZCBmaW5pc2hlcywgaXQgY291bGQKK292ZXJ3cml0ZSB0aGUgdGhpcmQgYnVmZmVyIGJlZm9yZSB0aGUgcmVhZCBmaW5pc2hlcywgbGVhZGluZyB0byBhIGNvcnJ1cHQKK2ltYWdlLiAgU2luZ2xlIGFuZCBkb3VibGUgYnVmZmVyaW5nIGhhdmUgZXh0cmEgY2hlY2tzIHRvIGF2b2lkIG92ZXJ3cml0aW5nLgorCis0LiBVc2luZyB0aGUgY2FtZXJhCisKKwlXZSBhcmUgcHJvdmlkaW5nIGEgbW9kaWZpZWQgZ3FjYW0gYXBwbGljYXRpb24gdG8gdmlldyB0aGUgb3V0cHV0LiBJbgorb3JkZXIgdG8gYXZvaWQgY29uZnVzaW9uLCBoZXJlIGl0IGlzIGNhbGxlZCBtdmlldy4gIFRoZXJlIGlzIGFsc28gdGhlIHF4NXZpZXcKK3Byb2dyYW0gd2hpY2ggY2FuIGFsc28gY29udHJvbCB0aGUgbGlnaHRzIG9uIHRoZSBxeDUgbWljcm9zY29wZS4gTUpQRUcgVG9vbHMKKyhodHRwOi8vbWpwZWcuc291cmNlZm9yZ2UubmV0KSBjYW4gYWxzbyBiZSB1c2VkIHRvIHJlY29yZCBmcm9tIHRoZSBjYW1lcmEuCisKKzUuIE5vdGVzIHRvIGRldmVsb3BlcnM6CisKKyAgIC0gVGhpcyBpcyBhIGRyaXZlciB2ZXJzaW9uIHN0cmlwcGVkIG9mIHRoZSAyLjQgYmFjayBjb21wYXRpYmlsaXR5CisgICAgIGFuZCBvbGQgTUpQRUcgaW9jdGwgQVBJLiBTZWUgY3BpYTIuc2YubmV0IGZvciAyLjQgc3VwcG9ydC4KKworNi4gVGhhbmtzOgorCisgICAtIFBldGVyIFByZWdsZXIgPFBldGVyX1ByZWdsZXJAZW1haWwuY29tPiwKKyAgICAgU2NvdHQgSi4gQmVydGluIDxzY290dGJlcnRpbkB5YWhvby5jb20+LCBhbmQKKyAgICAgSmFybCBUb3RsYW5kIDxKYXJsLlRvdGxhbmRAYmRjLm5vPiBmb3IgdGhlIG9yaWdpbmFsIGNwaWEgZHJpdmVyLCB3aGljaAorICAgICB0aGlzIG9uZSB3YXMgbW9kZWxsZWQgZnJvbS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvUkVBRE1FLmN4ODggYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L1JFQURNRS5jeDg4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZmFlMjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L1JFQURNRS5jeDg4CkBAIC0wLDAgKzEsNjcgQEAKK2N4ODgwMCByZWxlYXNlIG5vdGVzCis9PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGlzIGEgdjRsMiBkZXZpY2UgZHJpdmVyIGZvciB0aGUgY3gyMzg4eCBjaGlwLgorCisKK2N1cnJlbnQgc3RhdHVzCis9PT09PT09PT09PT09PQorCit2aWRlbworCS0gQmFzaWNhbGx5IHdvcmtzLgorCS0gRm9yIG5vdywgb25seSBjYXB0dXJlIGFuZCByZWFkKCkuIE92ZXJsYXkgaXNuJ3Qgc3VwcG9ydGVkLgorCithdWRpbworCS0gVGhlIGNoaXAgc3BlY3MgZm9yIHRoZSBvbi1jaGlwIFRWIHNvdW5kIGRlY29kZXIgYXJlIG5leHQKKwkgIHRvIHVzZWxlc3MgOi0vCisJLSBOZXZlcmxlc3MgdGhlIGJ1aWx0aW4gVFYgc291bmQgZGVjb2RlciBzdGFydHMgd29ya2luZyBub3csCisJICBhdCBsZWFzdCBmb3Igc29tZSBzdGFuZGFyZHMuCisJICBGT1IgQU5ZIFJFUE9SVFMgT04gVEhJUyBQTEVBU0UgTUVOVElPTiBUSEUgVFYgTk9STSBZT1UgQVJFCisJICBVU0lORy4KKwktIE1vc3QgdHVuZXIgY2hpcHMgZG8gcHJvdmlkZSBtb25vIHNvdW5kLCB3aGljaCBtYXkgb3IgbWF5IG5vdAorCSAgYmUgdXNlYWJsZSBkZXBlbmRpbmcgb24gdGhlIGJvYXJkIGRlc2lnbi4gIFdpdGggdGhlIEhhdXBwYXVnZQorCSAgY2FyZHMgaXQgd29ya3MsIHNvIHRoZXJlIGlzIG1vbm8gc291bmQgYXZhaWxhYmxlIGFzIGZhbGxiYWNrLgorCS0gYXVkaW8gZGF0YSBkbWEgKGkuZS4gcmVjb3JkaW5nIHdpdGhvdXQgbG9vcGJhY2sgY2FibGUgdG8gdGhlCisJICBzb3VuZCBjYXJkKSBpcyBzdXBwb3J0ZWQgdmlhIGN4ODgtYWxzYS4KKwordmJpCisJLSBDb2RlIHByZXNlbnQuIFdvcmtzIGZvciBOVFNDIGNsb3NlZCBjYXB0aW9uLiBQQUwgYW5kIG90aGVyCisJICBUViBub3JtcyBtYXkgb3IgbWF5IG5vdCB3b3JrLgorCisKK2hvdyB0byBhZGQgc3VwcG9ydCBmb3IgbmV3IGNhcmRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZHJpdmVyIG5lZWRzIHNvbWUgY29uZmlnIGluZm8gZm9yIHRoZSBUViBjYXJkcy4gIFRoaXMgc3R1ZmYgaXMgaW4KK2N4ODgtY2FyZHMuYy4gIElmIHRoZSBkcml2ZXIgZG9lc24ndCB3b3JrIHdlbGwgeW91IGxpa2VseSBuZWVkIGEgbmV3CitlbnRyeSBmb3IgeW91ciBjYXJkIGluIHRoYXQgZmlsZS4gIENoZWNrIHRoZSBrZXJuZWwgbG9nICh1c2luZyBkbWVzZykKK3RvIHNlZSB3aGVuZXZlciB0aGUgZHJpdmVyIGtub3dzIHlvdXIgY2FyZCBvciBub3QuICBUaGVyZSBpcyBhIGxpbmUKK2xpa2UgdGhpcyBvbmU6CisKKwljeDg4MDBbMF06IHN1YnN5c3RlbTogMDA3MDozNDAwLCBib2FyZDogSGF1cHBhdWdlIFdpblRWIFwKKwkJMzR4eHggbW9kZWxzIFtjYXJkPTEsYXV0b2RldGVjdGVkXQorCitJZiB5b3VyIGNhcmQgaXMgbGlzdGVkIGFzICJib2FyZDogVU5LTk9XTi9HRU5FUklDIiBpdCBpcyB1bmtub3duIHRvCit0aGUgZHJpdmVyLiAgV2hhdCB0byBkbyB0aGVuPworCisgKDEpIFRyeSB1cGdyYWRpbmcgdG8gdGhlIGxhdGVzdCBzbmFwc2hvdCwgbWF5YmUgaXQgaGFzIGJlZW4gYWRkZWQKKyAgICAgbWVhbndoaWxlLgorICgyKSBZb3UgY2FuIHRyeSB0byBjcmVhdGUgYSBuZXcgZW50cnkgeW91cnNlbGYsIGhhdmUgYSBsb29rIGF0CisgICAgIGN4ODgtY2FyZHMuYy4gIElmIHRoYXQgd29ya2VkLCBtYWlsIG1lIHlvdXIgY2hhbmdlcyBhcyB1bmlmaWVkCisgICAgIGRpZmYgKCJkaWZmIC11IikuCisgKDMpIE9yIHlvdSBjYW4gbWFpbCBtZSB0aGUgY29uZmlnIGluZm9ybWF0aW9uLiAgSSBuZWVkIGF0IGxlYXN0IHRoZQorICAgICBmb2xsb3dpbmcgaW5mb3JtYXRpb25zIHRvIGFkZCB0aGUgY2FyZDoKKworICAgICAqIHRoZSBQQ0kgU3Vic3lzdGVtIElEICgiMDA3MDozNDAwIiBmcm9tIHRoZSBsaW5lIGFib3ZlLAorICAgICAgICJsc3BjaSAtdiIgb3V0cHV0IGlzIGZpbmUgdG9vKS4KKyAgICAgKiB0aGUgdHVuZXIgdHlwZSB1c2VkIGJ5IHRoZSBjYXJkLiAgWW91IGNhbiB0cnkgdG8gZmluZCBvbmUgYnkKKyAgICAgICB0cmlhbC1hbmQtZXJyb3IgdXNpbmcgdGhlIHR1bmVyPTxuPiBpbnNtb2Qgb3B0aW9uLiAgSWYgeW91CisgICAgICAga25vdyB3aGljaCBvbmUgdGhlIGNhcmQgaGFzIHlvdSBjYW4gYWxzbyBoYXZlIGEgbG9vayBhdCB0aGUKKyAgICAgICBsaXN0IGluIENBUkRMSVNULnR1bmVyCisKK0hhdmUgZnVuLAorCisgIEdlcmQKKworLS0KK0dlcmQgS25vcnIgPGtyYXhlbEBieXRlc2V4Lm9yZz4gW1N1U0UgTGFic10KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvUkVBRE1FLmRhdmluY2ktdnBiZSBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvUkVBRE1FLmRhdmluY2ktdnBiZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzlhMjk3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9SRUFETUUuZGF2aW5jaS12cGJlCkBAIC0wLDAgKzEsOTMgQEAKKworICAgICAgICAgICAgICAgIFZQQkUgVjRMMiBkcml2ZXIgZGVzaWduCisgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgRmlsZSBwYXJ0aXRpb25pbmcKKyAtLS0tLS0tLS0tLS0tLS0tLQorIFY0TDIgZGlzcGxheSBkZXZpY2UgZHJpdmVyCisgICAgICAgICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2RhdmluY2kvdnBiZV9kaXNwbGF5LmMKKyAgICAgICAgIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vZGF2aW5jaS92cGJlX2Rpc3BsYXkuaAorCisgVlBCRSBkaXNwbGF5IGNvbnRyb2xsZXIKKyAgICAgICAgIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vZGF2aW5jaS92cGJlLmMKKyAgICAgICAgIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vZGF2aW5jaS92cGJlLmgKKworIFZQQkUgdmVuYyBzdWIgZGV2aWNlIGRyaXZlcgorICAgICAgICAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9kYXZpbmNpL3ZwYmVfdmVuYy5jCisgICAgICAgICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2RhdmluY2kvdnBiZV92ZW5jLmgKKyAgICAgICAgIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vZGF2aW5jaS92cGJlX3ZlbmNfcmVncy5oCisKKyBWUEJFIG9zZCBkcml2ZXIKKyAgICAgICAgIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vZGF2aW5jaS92cGJlX29zZC5jCisgICAgICAgICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2RhdmluY2kvdnBiZV9vc2QuaAorICAgICAgICAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9kYXZpbmNpL3ZwYmVfb3NkX3JlZ3MuaAorCisgRnVuY3Rpb25hbCBwYXJ0aXRpb25pbmcKKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgQ29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZyAoaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIGxpc3QgdW5kZXIgZmlsZQorIHBhcnRpdGlvbmluZyk6LQorCisgMS4gVjRMMiBkaXNwbGF5IGRyaXZlcgorICAgIEltcGxlbWVudHMgY3JlYXRpb24gb2YgdmlkZW8yIGFuZCB2aWRlbzMgZGV2aWNlIG5vZGVzIGFuZAorICAgIHByb3ZpZGVzIHY0bDIgZGV2aWNlIGludGVyZmFjZSB0byBtYW5hZ2UgVklEMCBhbmQgVklEMSBsYXllcnMuCisKKyAyLiBEaXNwbGF5IGNvbnRyb2xsZXIKKyAgICBMb2FkcyB1cCBWRU5DLCBPU0QgYW5kIGV4dGVybmFsIGVuY29kZXJzIHN1Y2ggYXMgdGhzODIwMC4gSXQgcHJvdmlkZXMKKyAgICBhIHNldCBvZiBBUEkgY2FsbHMgdG8gVjRMMiBkcml2ZXJzIHRvIHNldCB0aGUgb3V0cHV0L3N0YW5kYXJkcworICAgIGluIHRoZSBWRU5DIG9yIGV4dGVybmFsIHN1YiBkZXZpY2VzLiBJdCBhbHNvIHByb3ZpZGVzCisgICAgYSBkZXZpY2Ugb2JqZWN0IHRvIGFjY2VzcyB0aGUgc2VydmljZXMgZnJvbSBPU0Qgc3ViZGV2aWNlCisgICAgdXNpbmcgc3ViIGRldmljZSBvcHMuIFRoZSBjb25uZWN0aW9uIG9mIGV4dGVybmFsIGVuY29kZXJzIHRvIFZFTkMgTENECisgICAgY29udHJvbGxlciBwb3J0IGlzIGRvbmUgYXQgaW5pdCB0aW1lIGJhc2VkIG9uIGRlZmF1bHQgb3V0cHV0IGFuZCBzdGFuZGFyZAorICAgIHNlbGVjdGlvbiBvciBhdCBydW4gdGltZSB3aGVuIGFwcGxpY2F0aW9uIGNoYW5nZSB0aGUgb3V0cHV0IHRocm91Z2gKKyAgICBWNEwyIElPQ1RMcy4KKworICAgIFdoZW4gY29ubmVjdGVkIHRvIGFuIGV4dGVybmFsIGVuY29kZXIsIHZwYmUgY29udHJvbGxlciBpcyBhbHNvIHJlc3BvbnNpYmxlCisgICAgZm9yIHNldHRpbmcgdXAgdGhlIGludGVyZmFjZSBiZXR3ZWVuIFZFTkMgYW5kIGV4dGVybmFsIGVuY29kZXJzIGJhc2VkIG9uCisgICAgYm9hcmQgc3BlY2lmaWMgc2V0dGluZ3MgKHNwZWNpZmllZCBpbiBib2FyZC14eHgtZXZtLmMpLiBUaGlzIGFsbG93cworICAgIGludGVyZmFjaW5nIGV4dGVybmFsIGVuY29kZXJzIHN1Y2ggYXMgdGhzODIwMC4gVGhlIHNldHVwX2lmX2NvbmZpZygpCisgICAgaXMgaW1wbGVtZW50ZWQgZm9yIHRoaXMgYXMgd2VsbCBhcyBjb25maWd1cmVfdmVuYygpIChwYXJ0IG9mIHRoZSBuZXh0IHBhdGNoKQorICAgIEFQSSB0byBzZXQgdGltaW5ncyBpbiBWRU5DIGZvciBhIHNwZWNpZmljIGRpc3BsYXkgcmVzb2x1dGlvbi4gQXMgb2YgdGhpcworICAgIHBhdGNoIHNlcmllcywgdGhlIGludGVyY29ubmVjdGlvbiBhbmQgZW5hYmxpbmcgYW5kIHNldHRpbmcgb2YgdGhlIGV4dGVybmFsCisgICAgZW5jb2RlcnMgaXMgbm90IHByZXNlbnQsIGFuZCB3b3VsZCBiZSBhIHBhcnQgb2YgdGhlIG5leHQgcGF0Y2ggc2VyaWVzLgorCisgMy4gVkVOQyBzdWJkZXZpY2UgbW9kdWxlCisgICAgUmVzcG9uc2libGUgZm9yIHNldHRpbmcgb3V0cHV0cyBwcm92aWRlZCB0aHJvdWdoIGludGVybmFsIERBQ3MgYW5kIGFsc28KKyAgICBzZXR0aW5nIHRpbWluZ3MgYXQgTENEIGNvbnRyb2xsZXIgcG9ydCB3aGVuIGV4dGVybmFsIGVuY29kZXJzIGFyZSBjb25uZWN0ZWQKKyAgICBhdCB0aGUgcG9ydCBvciBMQ0QgcGFuZWwgdGltaW5ncyByZXF1aXJlZC4gV2hlbiBleHRlcm5hbCBlbmNvZGVyL0xDRCBwYW5lbAorICAgIGlzIGNvbm5lY3RlZCwgdGhlIHRpbWluZ3MgZm9yIGEgc3BlY2lmaWMgc3RhbmRhcmQvcHJlc2V0IGlzIHJldHJpZXZlZCBmcm9tCisgICAgdGhlIGJvYXJkIHNwZWNpZmljIHRhYmxlIGFuZCB0aGUgdmFsdWVzIGFyZSB1c2VkIHRvIHNldCB0aGUgdGltaW5ncyBpbgorICAgIHZlbmMgdXNpbmcgbm9uLXN0YW5kYXJkIHRpbWluZyBtb2RlLgorCisgICAgU3VwcG9ydCBMQ0QgUGFuZWwgZGlzcGxheXMgdXNpbmcgdGhlIFZFTkMuIEZvciBleGFtcGxlIHRvIHN1cHBvcnQgYSBMb2dpYworICAgIFBEIGRpc3BsYXksIGl0IHJlcXVpcmVzIHNldHRpbmcgdXAgdGhlIExDRCBjb250cm9sbGVyIHBvcnQgd2l0aCBhIHNldCBvZgorICAgIHRpbWluZ3MgZm9yIHRoZSByZXNvbHV0aW9uIHN1cHBvcnRlZCBhbmQgc2V0dGluZyB0aGUgZG90IGNsb2NrLiBTbyB3ZSBjb3VsZAorICAgIGFkZCB0aGUgYXZhaWxhYmxlIG91dHB1dHMgYXMgYSBib2FyZCBzcGVjaWZpYyBlbnRyeSAoaS5lIGFkZCB0aGUgIkxvZ2ljUEQiCisgICAgb3V0cHV0IG5hbWUgdG8gYm9hcmQteHh4LWV2bS5jKS4gQSB0YWJsZSBvZiB0aW1pbmdzIGZvciB2YXJpb3VzIExDRHMKKyAgICBzdXBwb3J0ZWQgY2FuIGJlIG1haW50YWluZWQgaW4gdGhlIGJvYXJkIHNwZWNpZmljIHNldHVwIGZpbGUgdG8gc3VwcG9ydAorICAgIHZhcmlvdXMgTENEIGRpc3BsYXlzLkFzIG9mIHRoaXMgcGF0Y2ggYSBiYXNpYyBkcml2ZXIgaXMgcHJlc2VudCwgYW5kIHRoaXMKKyAgICBzdXBwb3J0IGZvciBleHRlcm5hbCBlbmNvZGVycyBhbmQgZGlzcGxheXMgZm9ybXMgYSBwYXJ0IG9mIHRoZSBuZXh0CisgICAgcGF0Y2ggc2VyaWVzLgorCisgNC4gT1NEIG1vZHVsZQorICAgIE9TRCBtb2R1bGUgaW1wbGVtZW50cyBhbGwgT1NEIGxheWVyIG1hbmFnZW1lbnQgYW5kIGhhcmR3YXJlIHNwZWNpZmljCisgICAgZmVhdHVyZXMuIFRoZSBWUEJFIG1vZHVsZSBpbnRlcmFjdHMgd2l0aCB0aGUgT1NEIGZvciBlbmFibGluZyBhbmQKKyAgICBkaXNhYmxpbmcgYXBwcm9wcmlhdGUgZmVhdHVyZXMgb2YgdGhlIE9TRC4KKworIEN1cnJlbnQgc3RhdHVzOi0KKworIEEgZnVsbHkgZnVuY3Rpb25hbCB3b3JraW5nIHZlcnNpb24gb2YgdGhlIFY0TDIgZHJpdmVyIGlzIGF2YWlsYWJsZS4gVGhpcworIGRyaXZlciBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCBOVFNDIGFuZCBQQUwgc3RhbmRhcmRzIGFuZCBidWZmZXIgc3RyZWFtaW5nLgorCisgRm9sbG93aW5nIGFyZSBUQkRzLgorCisgdnBiZSBkaXNwbGF5IGNvbnRyb2xsZXIKKyAgICAtIEFkZCBzdXBwb3J0IGZvciBleHRlcm5hbCBlbmNvZGVycy4KKyAgICAtIGFkZCBzdXBwb3J0IGZvciBzZWxlY3RpbmcgZXh0ZXJuYWwgZW5jb2RlciBhcyBkZWZhdWx0IGF0IHByb2JlIHRpbWUuCisKKyB2cGJlIHZlbmMgc3ViIGRldmljZQorICAgIC0gYWRkIHRpbWluZ3MgZm9yIHN1cHBvcnRpbmcgdGhzODIwMAorICAgIC0gYWRkIHN1cHBvcnQgZm9yIExvZ2ljUEQgTENELgorCisgRkIgZHJpdmVycworICAgIC0gQWRkIHN1cHBvcnQgZm9yIGZiZGV2IGRyaXZlcnMuLSBSZWFkeSBhbmQgcGFydCBvZiBzdWJzZXF1ZW50IHBhdGNoZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L1JFQURNRS5pciBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvUkVBRE1FLmlyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkYTQ3YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L1JFQURNRS5pcgpAQCAtMCwwICsxLDcyIEBACisKK2luZnJhcmVkIHJlbW90ZSBjb250cm9sIHN1cHBvcnQgaW4gdmlkZW80bGludXggZHJpdmVycworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworYmFzaWNzCistLS0tLS0KKworQ3VycmVudCB2ZXJzaW9ucyB1c2UgdGhlIGxpbnV4IGlucHV0IGxheWVyIHRvIHN1cHBvcnQgaW5mcmFyZWQKK3JlbW90ZSBjb250cm9scy4gIEkgc3VnZ2VzdCB0byBkb3dubG9hZCBteSBpbnB1dCBsYXllciB0b29scworZnJvbSBodHRwOi8vYnl0ZXNleC5vcmcvc25hcHNob3QvaW5wdXQtPGRhdGU+LnRhci5negorCitNb2R1bGVzIHlvdSBoYXZlIHRvIGxvYWQ6CisKKyAgc2FhNzEzNAlzdGF0aWNhbGx5IGJ1aWx0IGluLCBpLmUuIGp1c3QgdGhlIGRyaXZlciA6KQorICBidHR2CQlpci1rYmQtZ3BpbyBvciBpci1rYmQtaTJjIGRlcGVuZGluZyBvbiB5b3VyCisJCWNhcmQuCisKK2lyLWtiZC1ncGlvIGFuZCBpci1rYmQtaTJjIGRvbid0IHN1cHBvcnQgYWxsIGNhcmRzIGxpcmMgc3VwcG9ydHMKKyh5ZXQpLCBtYWlubHkgZm9yIHRoZSByZWFzb24gdGhhdCB0aGUgY29kZSBvZiBsaXJjX2kyYyBhbmQgbGlyY19ncGlvCit3YXMgdmVyeSBjb25mdXNpbmcgYW5kIEkgZGVjaWRlZCB0byBiYXNpY2FsbHkgc3RhcnQgb3ZlciBmcm9tIHNjcmF0Y2guCitGZWVsIGZyZWUgdG8gY29udGFjdCBtZSBpbiBjYXNlIG9mIHRyb3VibGUuICBOb3RlIHRoYXQgdGhlIGlyLWtiZC0qCittb2R1bGVzIHdvcmsgb24gMi42Lngga2VybmVscyBvbmx5IHRocm91Z2ggLi4uCisKKworaG93IGl0IHdvcmtzCistLS0tLS0tLS0tLS0KKworVGhlIG1vZHVsZXMgcmVnaXN0ZXIgdGhlIHJlbW90ZSBhcyBrZXlib2FyZCB3aXRoaW4gdGhlIGxpbnV4IGlucHV0CitsYXllciwgaS5lLiB5b3UnbGwgc2VlIHRoZSBrZXlzIG9mIHRoZSByZW1vdGUgYXMgbm9ybWFsIGtleSBzdHJva2VzCisoaWYgQ09ORklHX0lOUFVUX0tFWUJPQVJEIGlzIGVuYWJsZWQpLgorCitVc2luZyB0aGUgZXZlbnQgZGV2aWNlcyAoQ09ORklHX0lOUFVUX0VWREVWKSBpdCBpcyBwb3NzaWJsZSBmb3IKK2FwcGxpY2F0aW9ucyB0byBhY2Nlc3MgdGhlIHJlbW90ZSB2aWEgL2Rldi9pbnB1dC9ldmVudDxuPiBkZXZpY2VzLgorWW91IG1pZ2h0IGhhdmUgdG8gY3JlYXRlIHRoZSBzcGVjaWFsIGZpbGVzIHVzaW5nICIvc2Jpbi9NQUtFREVWCitpbnB1dCIuICBUaGUgaW5wdXQgbGF5ZXIgdG9vbHMgbWVudGlvbmVkIGFib3ZlIHVzZSB0aGUgZXZlbnQgZGV2aWNlLgorCitUaGUgaW5wdXQgbGF5ZXIgdG9vbHMgYXJlIG5pY2UgZm9yIHRyb3VibGUgc2hvb3RpbmcsIGkuZS4gdG8gY2hlY2sKK3doZW5ldmVyIHRoZSBpbnB1dCBkZXZpY2UgaXMgcmVhbGx5IHByZXNlbnQsIHdoaWNoIG9mIHRoZSBkZXZpY2VzIGl0CitpcywgY2hlY2sgd2hlbmV2ZXIgcHJlc3Npbmcga2V5cyBvbiB0aGUgcmVtb3RlIGFjdHVhbGx5IGdlbmVyYXRlcworZXZlbnRzIGFuZCB0aGUgbGlrZS4gIFlvdSBjYW4gYWxzbyB1c2UgdGhlIGtiZCB1dGlsaXR5IHRvIGNoYW5nZSB0aGUKK2tleW1hcHMgKDIuNi54IGtlcm5lbHMgb25seSB0aHJvdWdoKS4KKworCit1c2luZyB3aXRoIGxpcmNkCis9PT09PT09PT09PT09PT09CisKK1RoZSBjdnMgdmVyc2lvbiBvZiB0aGUgbGlyY2QgZGFlbW9uIHN1cHBvcnRzIHJlYWRpbmcgZXZlbnRzIGZyb20gdGhlCitsaW51eCBpbnB1dCBsYXllciAodmlhIGV2ZW50IGRldmljZSkuICBUaGUgaW5wdXQgbGF5ZXIgdG9vbHMgdGFyYmFsbAorY29tZXMgd2l0aCBhIGxpcmNkIGNvbmZpZyBmaWxlLgorCisKK3VzaW5nIHdpdGhvdXQgbGlyY2QKKz09PT09PT09PT09PT09PT09PT0KKworWEZyZWU4NiBsaWtlbHkgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gcmVjb2duaXNlIHRoZSByZW1vdGUga2V5cy4gIE9uY2UgSQorc2ltcGx5IHRyaWVkIHRvIGNvbmZpZ3VyZSBvbmUgb2YgdGhlIG11bHRpbWVkaWEga2V5Ym9hcmRzIGFzIGlucHV0CitkZXZpY2UsIHdoaWNoIGhhZCB0aGUgZWZmZWN0IHRoYXQgWEZyZWU4NiByZWNvZ25pc2VkIHNvbWUgb2YgdGhlIGtleXMKK29mIG15IHJlbW90ZSBjb250cm9sIGFuZCBwYXNzZWQgdm9sdW1lIHVwL2Rvd24ga2V5IHByZXNzZXMgYXMKK1hGODZBdWRpb1JhaXNlVm9sdW1lIGFuZCBYRjg2QXVkaW9Mb3dlclZvbHVtZSBrZXkgZXZlbnRzIHRvIHRoZSBYMTEKK2NsaWVudHMuCisKK0l0IGxpa2VseSBpcyBwb3NzaWJsZSB0byBtYWtlIHRoYXQgZmx5IHdpdGggYSBuaWNlIHhrYiBjb25maWcgZmlsZSwKK0kga25vdyBuZXh0IHRvIG5vdGhpbmcgYWJvdXQgdGhhdCB0aHJvdWdoLgorCisKK0hhdmUgZnVuLAorCisgIEdlcmQKKworLS0KK0dlcmQgS25vcnIgPGtyYXhlbEBieXRlc2V4Lm9yZz4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvUkVBRE1FLml2dHYgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L1JFQURNRS5pdnR2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NzliNWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L1JFQURNRS5pdnR2CkBAIC0wLDAgKzEsMTg2IEBACisKK2l2dHYgcmVsZWFzZSBub3RlcworPT09PT09PT09PT09PT09PT09CisKK1RoaXMgaXMgYSB2NGwyIGRldmljZSBkcml2ZXIgZm9yIHRoZSBDb25leGFudCBjeDIzNDE1LzYgTVBFRyBlbmNvZGVyL2RlY29kZXIuCitUaGUgY3gyMzQxNSBjYW4gZG8gYm90aCBlbmNvZGluZyBhbmQgZGVjb2RpbmcsIHRoZSBjeDIzNDE2IGNhbiBvbmx5IGRvIE1QRUcKK2VuY29kaW5nLiBDdXJyZW50bHkgdGhlIG9ubHkgY2FyZCBmZWF0dXJpbmcgZnVsbCBkZWNvZGluZyBzdXBwb3J0IGlzIHRoZQorSGF1cHBhdWdlIFBWUi0zNTAuCisKK05PVEU6IHRoaXMgZHJpdmVyIHJlcXVpcmVzIHRoZSBsYXRlc3QgZW5jb2RlciBmaXJtd2FyZSAodmVyc2lvbiAyLjA2LjAzOSwgc2l6ZQorMzc2ODM2IGJ5dGVzKS4gR2V0IHRoZSBmaXJtd2FyZSBmcm9tIGhlcmU6CisKK2h0dHA6Ly9kbC5pdnR2ZHJpdmVyLm9yZy9pdnR2L2Zpcm13YXJlLworCitOT1RFOiAnbm9ybWFsJyBUViBhcHBsaWNhdGlvbnMgZG8gbm90IHdvcmsgd2l0aCB0aGlzIGRyaXZlciwgeW91IG5lZWQKK2FuIGFwcGxpY2F0aW9uIHRoYXQgY2FuIGhhbmRsZSBNUEVHIGlucHV0IHN1Y2ggYXMgbXBsYXllciwgeGluZSwgTXl0aFRWLAorZXRjLgorCitUaGUgcHJpbWFyeSBnb2FsIG9mIHRoZSBJVlRWIHByb2plY3QgaXMgdG8gcHJvdmlkZSBhICJjbGVhbiByb29tIiBMaW51eAorT3BlbiBTb3VyY2UgZHJpdmVyIGltcGxlbWVudGF0aW9uIGZvciB2aWRlbyBjYXB0dXJlIGNhcmRzIGJhc2VkIG9uIHRoZQoraUNvbXByZXNzaW9uIGlUVkMxNSBvciBDb25leGFudCBDWDIzNDE1L0NYMjM0MTYgTVBFRyBDb2RlYy4KKworRmVhdHVyZXM6CisgKiBIYXJkd2FyZSBtcGVnMiBjYXB0dXJlIG9mIGJyb2FkY2FzdCB2aWRlbyAoYW5kIHNvdW5kKSB2aWEgdGhlIHR1bmVyIG9yCisgICBTLVZpZGVvL0NvbXBvc2l0ZSBhbmQgYXVkaW8gbGluZS1pbi4KKyAqIEhhcmR3YXJlIG1wZWcyIGNhcHR1cmUgb2YgRk0gcmFkaW8gd2hlcmUgaGFyZHdhcmUgc3VwcG9ydCBleGlzdHMKKyAqIFN1cHBvcnRzIE5UU0MsIFBBTCwgU0VDQU0gd2l0aCBzdGVyZW8gc291bmQKKyAqIFN1cHBvcnRzIFNBUCBhbmQgYmlsaW5ndWFsIHRyYW5zbWlzc2lvbnMuCisgKiBTdXBwb3J0cyByYXcgVkJJIChjbG9zZWQgY2FwdGlvbnMgYW5kIHRlbGV0ZXh0KS4KKyAqIFN1cHBvcnRzIHNsaWNlZCBWQkkgKGNsb3NlZCBjYXB0aW9ucyBhbmQgdGVsZXRleHQpIGFuZCBpcyBhYmxlIHRvIGluc2VydAorICAgdGhpcyBpbnRvIHRoZSBjYXB0dXJlZCBNUEVHIHN0cmVhbS4KKyAqIFN1cHBvcnRzIHJhdyBZVVYgYW5kIFBDTSBpbnB1dC4KKworQWRkaXRpb25hbCBmZWF0dXJlcyBmb3IgdGhlIFBWUi0zNTAgKENYMjM0MTUgYmFzZWQpOgorICogUHJvdmlkZXMgaGFyZHdhcmUgbXBlZzIgcGxheWJhY2sKKyAqIFByb3ZpZGVzIGNvbXByZWhlbnNpdmUgT1NEIChPbiBTY3JlZW4gRGlzcGxheTogaWUuIGdyYXBoaWNzIG92ZXJsYXlpbmcgdGhlCisgICB2aWRlbyBzaWduYWwpCisgKiBQcm92aWRlcyBhIGZyYW1lYnVmZmVyIChhbGxvd2luZyBYIGFwcGxpY2F0aW9ucyB0byBhcHBlYXIgb24gdGhlIHZpZGVvCisgICBkZXZpY2UpCisgKiBTdXBwb3J0cyByYXcgWVVWIG91dHB1dC4KKworSU1QT1JUQU5UOiBJbiBjYXNlIG9mIHByb2JsZW1zIGZpcnN0IHJlYWQgdGhpcyBwYWdlOgorCSAgIGh0dHA6Ly93d3cuaXZ0dmRyaXZlci5vcmcvaW5kZXgucGhwL1Ryb3VibGVzaG9vdGluZworCitTZWUgYWxzbzoKKworSG9tZXBhZ2UgKyBXaWtpCitodHRwOi8vd3d3Lml2dHZkcml2ZXIub3JnCisKK0lSQworaXJjOi8vaXJjLmZyZWVub2RlLm5ldC9pdnR2LWRldgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RldmljZXMKKz09PT09PT0KKworQSBtYXhpbXVtIG9mIDEyIGl2dHYgYm9hcmRzIGFyZSBhbGxvd2VkIGF0IHRoZSBtb21lbnQuCisKK0NhcmRzIHRoYXQgZG9uJ3QgaGF2ZSBhIHZpZGVvIG91dHB1dCBjYXBhYmlsaXR5IChpLmUuIG5vbiBQVlIzNTAgY2FyZHMpCitsYWNrIHRoZSB2Ymk4LCB2YmkxNiwgdmlkZW8xNiBhbmQgdmlkZW80OCBkZXZpY2VzLiBUaGV5IGFsc28gZG8gbm90CitzdXBwb3J0IHRoZSBmcmFtZWJ1ZmZlciBkZXZpY2UgL2Rldi9mYnggZm9yIE9TRC4KKworVGhlIHJhZGlvMCBkZXZpY2UgbWF5IG9yIG1heSBub3QgYmUgcHJlc2VudCwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlCitjYXJkIGhhcyBhIHJhZGlvIHR1bmVyIG9yIG5vdC4KKworSGVyZSBpcyBhIGxpc3Qgb2YgdGhlIGJhc2UgdjRsIGRldmljZXM6CitjcnctcnctLS0tICAgIDEgcm9vdCAgICAgdmlkZW8gICAgIDgxLCAgIDAgSnVuIDE5IDIyOjIyIC9kZXYvdmlkZW8wCitjcnctcnctLS0tICAgIDEgcm9vdCAgICAgdmlkZW8gICAgIDgxLCAgMTYgSnVuIDE5IDIyOjIyIC9kZXYvdmlkZW8xNgorY3J3LXJ3LS0tLSAgICAxIHJvb3QgICAgIHZpZGVvICAgICA4MSwgIDI0IEp1biAxOSAyMjoyMiAvZGV2L3ZpZGVvMjQKK2Nydy1ydy0tLS0gICAgMSByb290ICAgICB2aWRlbyAgICAgODEsICAzMiBKdW4gMTkgMjI6MjIgL2Rldi92aWRlbzMyCitjcnctcnctLS0tICAgIDEgcm9vdCAgICAgdmlkZW8gICAgIDgxLCAgNDggSnVuIDE5IDIyOjIyIC9kZXYvdmlkZW80OAorY3J3LXJ3LS0tLSAgICAxIHJvb3QgICAgIHZpZGVvICAgICA4MSwgIDY0IEp1biAxOSAyMjoyMiAvZGV2L3JhZGlvMAorY3J3LXJ3LS0tLSAgICAxIHJvb3QgICAgIHZpZGVvICAgICA4MSwgMjI0IEp1biAxOSAyMjoyMiAvZGV2L3ZiaTAKK2Nydy1ydy0tLS0gICAgMSByb290ICAgICB2aWRlbyAgICAgODEsIDIyOCBKdW4gMTkgMjI6MjIgL2Rldi92Ymk4CitjcnctcnctLS0tICAgIDEgcm9vdCAgICAgdmlkZW8gICAgIDgxLCAyMzIgSnVuIDE5IDIyOjIyIC9kZXYvdmJpMTYKKworQmFzZSBkZXZpY2VzCis9PT09PT09PT09PT0KKworRm9yIGV2ZXJ5IGV4dHJhIGNhcmQgeW91IGhhdmUgdGhlIG51bWJlcnMgaW5jcmVhc2VkIGJ5IG9uZS4gRm9yIGV4YW1wbGUsCisvZGV2L3ZpZGVvMCBpcyBsaXN0ZWQgYXMgdGhlICdiYXNlJyBlbmNvZGluZyBjYXB0dXJlIGRldmljZSBzbyB3ZSBoYXZlOgorCisgL2Rldi92aWRlbzAgIGlzIHRoZSBlbmNvZGluZyBjYXB0dXJlIGRldmljZSBmb3IgdGhlIGZpcnN0IGNhcmQgKGNhcmQgMCkKKyAvZGV2L3ZpZGVvMSAgaXMgdGhlIGVuY29kaW5nIGNhcHR1cmUgZGV2aWNlIGZvciB0aGUgc2Vjb25kIGNhcmQgKGNhcmQgMSkKKyAvZGV2L3ZpZGVvMiAgaXMgdGhlIGVuY29kaW5nIGNhcHR1cmUgZGV2aWNlIGZvciB0aGUgdGhpcmQgY2FyZCAoY2FyZCAyKQorCitOb3RlIHRoYXQgaWYgdGhlIGZpcnN0IGNhcmQgZG9lc24ndCBoYXZlIGEgZmVhdHVyZSAoZWcgbm8gZGVjb2Rlciwgc28gbm8KK3ZpZGVvMTYsIHRoZSBzZWNvbmQgY2FyZCB3aWxsIHN0aWxsIHVzZSB2aWRlbzE3LiBUaGUgc2ltcGxlIHJ1bGUgaXMgJ2FkZAordGhlIGNhcmQgbnVtYmVyIHRvIHRoZSBiYXNlIGRldmljZSBudW1iZXInLiBJZiB5b3UgaGF2ZSBvdGhlciBjYXB0dXJlCitjYXJkcyAoZS5nLiBXaW5UViBQQ0kpIHRoYXQgYXJlIGRldGVjdGVkIGZpcnN0LCB0aGVuIHlvdSBoYXZlIHRvIHRlbGwKK3RoZSBpdnR2IG1vZHVsZSBhYm91dCBpdCBzbyB0aGF0IGl0IHdpbGwgc3RhcnQgY291bnRpbmcgYXQgMSAob3IgMiwgb3IKK3doYXRldmVyKS4gT3RoZXJ3aXNlIHRoZSBkZXZpY2UgbnVtYmVycyBjYW4gZ2V0IGNvbmZ1c2luZy4gVGhlIGl2dHYKKydpdnR2X2ZpcnN0X21pbm9yJyBtb2R1bGUgb3B0aW9uIGNhbiBiZSB1c2VkIGZvciB0aGF0LgorCisKKy9kZXYvdmlkZW8wCitUaGUgZW5jb2RpbmcgY2FwdHVyZSBkZXZpY2UocykuCitSZWFkLW9ubHkuCisKK1JlYWRpbmcgZnJvbSB0aGlzIGRldmljZSBnZXRzIHlvdSB0aGUgTVBFRzEvMiBwcm9ncmFtIHN0cmVhbS4KK0V4YW1wbGU6CisKK2NhdCAvZGV2L3ZpZGVvMCA+IG15Lm1wZyAoeW91IG5lZWQgdG8gaGl0IGN0cmwtYyB0byBleGl0KQorCisKKy9kZXYvdmlkZW8xNgorVGhlIGRlY29kZXIgb3V0cHV0IGRldmljZShzKQorV3JpdGUtb25seS4gT25seSBwcmVzZW50IGlmIHRoZSBNUEVHIGRlY29kZXIgKGkuZS4gQ1gyMzQxNSkgZXhpc3RzLgorCitBbiBtcGVnMiBzdHJlYW0gc2VudCB0byB0aGlzIGRldmljZSB3aWxsIGFwcGVhciBvbiB0aGUgc2VsZWN0ZWQgdmlkZW8KK2Rpc3BsYXksIGF1ZGlvIHdpbGwgYXBwZWFyIG9uIHRoZSBsaW5lLW91dC9hdWRpbyBvdXQuICBJdCBpcyBvbmx5CithdmFpbGFibGUgZm9yIGNhcmRzIHRoYXQgc3VwcG9ydCB2aWRlbyBvdXQuIEV4YW1wbGU6CisKK2NhdCBteS5tcGcgPi9kZXYvdmlkZW8xNgorCisKKy9kZXYvdmlkZW8yNAorVGhlIHJhdyBhdWRpbyBjYXB0dXJlIGRldmljZShzKS4KK1JlYWQtb25seQorCitUaGUgcmF3IGF1ZGlvIFBDTSBzdGVyZW8gc3RyZWFtIGZyb20gdGhlIGN1cnJlbnRseSBzZWxlY3RlZAordHVuZXIgb3IgYXVkaW8gbGluZS1pbi4gIFJlYWRpbmcgZnJvbSB0aGlzIGRldmljZSByZXN1bHRzIGluIGEgcmF3Cisoc2lnbmVkIDE2IGJpdCBMaXR0bGUgRW5kaWFuLCA0ODAwMCBIeiwgc3RlcmVvIHBjbSkgY2FwdHVyZS4KK1RoaXMgZGV2aWNlIG9ubHkgY2FwdHVyZXMgYXVkaW8uIFRoaXMgc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IGFuIEFMU0EKK2RldmljZSBpbiB0aGUgZnV0dXJlLgorTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGNvcnJlc3BvbmRpbmcgcmF3IGF1ZGlvIG91dHB1dCBkZXZpY2UsIHRoaXMgaXMKK25vdCBzdXBwb3J0ZWQgaW4gdGhlIGRlY29kZXIgZmlybXdhcmUuCisKKworL2Rldi92aWRlbzMyCitUaGUgcmF3IHZpZGVvIGNhcHR1cmUgZGV2aWNlKHMpCitSZWFkLW9ubHkKKworVGhlIHJhdyBZVVYgdmlkZW8gb3V0cHV0IGZyb20gdGhlIGN1cnJlbnQgdmlkZW8gaW5wdXQuIFRoZSBZVVYgZm9ybWF0CitpcyBub24tc3RhbmRhcmQgKFY0TDJfUElYX0ZNVF9ITTEyKS4KKworTm90ZSB0aGF0IHRoZSBZVVYgYW5kIFBDTSBzdHJlYW1zIGFyZSBub3Qgc3luY2hyb25pemVkLCBzbyB0aGV5IGFyZSBvZgorbGltaXRlZCB1c2UuCisKKworL2Rldi92aWRlbzQ4CitUaGUgcmF3IHZpZGVvIGRpc3BsYXkgZGV2aWNlKHMpCitXcml0ZS1vbmx5LiBPbmx5IHByZXNlbnQgaWYgdGhlIE1QRUcgZGVjb2RlciAoaS5lLiBDWDIzNDE1KSBleGlzdHMuCisKK1dyaXRlcyBhIFlVViBzdHJlYW0gdG8gdGhlIGRlY29kZXIgb2YgdGhlIGNhcmQuCisKKworL2Rldi9yYWRpbzAKK1RoZSByYWRpbyB0dW5lciBkZXZpY2UocykKK0Nhbm5vdCBiZSByZWFkIG9yIHdyaXR0ZW4uCisKK1VzZWQgdG8gZW5hYmxlIHRoZSByYWRpbyB0dW5lciBhbmQgdHVuZSB0byBhIGZyZXF1ZW5jeS4gWW91IGNhbm5vdAorcmVhZCBvciB3cml0ZSBhdWRpbyBzdHJlYW1zIHdpdGggdGhpcyBkZXZpY2UuICBPbmNlIHlvdSB1c2UgdGhpcworZGV2aWNlIHRvIHR1bmUgdGhlIHJhZGlvLCB1c2UgL2Rldi92aWRlbzI0IHRvIHJlYWQgdGhlIHJhdyBwY20gc3RyZWFtCitvciAvZGV2L3ZpZGVvMCB0byBnZXQgYW4gbXBlZzIgc3RyZWFtIHdpdGggYmxhY2sgdmlkZW8uCisKKworL2Rldi92YmkwCitUaGUgJ3ZlcnRpY2FsIGJsYW5rIGludGVydmFsJyAoVGVsZXRleHQsIENDLCBXU1MgZXRjKSBjYXB0dXJlIGRldmljZShzKQorUmVhZC1vbmx5CisKK0NhcHR1cmVzIHRoZSByYXcgKG9yIHNsaWNlZCkgdmlkZW8gZGF0YSBzZW50IGR1cmluZyB0aGUgVmVydGljYWwgQmxhbmsKK0ludGVydmFsLiBUaGlzIGRhdGEgaXMgdXNlZCB0byBlbmNvZGUgdGVsZXRleHQsIGNsb3NlZCBjYXB0aW9ucywgVlBTLAord2lkZXNjcmVlbiBzaWduYWxsaW5nLCBlbGVjdHJvbmljIHByb2dyYW0gZ3VpZGUgaW5mb3JtYXRpb24sIGFuZCBvdGhlcgorc2VydmljZXMuCisKKworL2Rldi92Ymk4CitQcm9jZXNzZWQgdmJpIGZlZWRiYWNrIGRldmljZShzKQorUmVhZC1vbmx5LiBPbmx5IHByZXNlbnQgaWYgdGhlIE1QRUcgZGVjb2RlciAoaS5lLiBDWDIzNDE1KSBleGlzdHMuCisKK1RoZSBzbGljZWQgVkJJIGRhdGEgZW1iZWRkZWQgaW4gYW4gTVBFRyBzdHJlYW0gaXMgcmVwcm9kdWNlZCBvbiB0aGlzCitkZXZpY2UuIFNvIHdoaWxlIHBsYXlpbmcgYmFjayBhIHJlY29yZGluZyBvbiAvZGV2L3ZpZGVvMTYsIHlvdSBjYW4KK3JlYWQgdGhlIGVtYmVkZGVkIFZCSSBkYXRhIGZyb20gL2Rldi92Ymk4LgorCisKKy9kZXYvdmJpMTYKK1RoZSB2YmkgJ2Rpc3BsYXknIGRldmljZShzKQorV3JpdGUtb25seS4gT25seSBwcmVzZW50IGlmIHRoZSBNUEVHIGRlY29kZXIgKGkuZS4gQ1gyMzQxNSkgZXhpc3RzLgorCitDYW4gYmUgdXNlZCB0byBzZW5kIHNsaWNlZCBWQkkgZGF0YSB0byB0aGUgdmlkZW8tb3V0IGNvbm5lY3Rvci4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0hhbnMgVmVya3VpbCA8aHZlcmt1aWxAeHM0YWxsLm5sPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9SRUFETUUucHZydXNiMiBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvUkVBRE1FLnB2cnVzYjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjEzN2I1OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvUkVBRE1FLnB2cnVzYjIKQEAgLTAsMCArMSwyMTIgQEAKKworJElkJAorTWlrZSBJc2VseSA8aXNlbHlAcG9ib3guY29tPgorCisJCQkgICAgcHZydXNiMiBkcml2ZXIKKworQmFja2dyb3VuZDoKKworICBUaGlzIGRyaXZlciBpcyBpbnRlbmRlZCBmb3IgdGhlICJIYXVwcGF1Z2UgV2luVFYgUFZSIFVTQiAyLjAiLCB3aGljaAorICBpcyBhIFVTQiAyLjAgaG9zdGVkIFRWIFR1bmVyLiAgVGhpcyBkcml2ZXIgaXMgYSB3b3JrIGluIHByb2dyZXNzLgorICBJdHMgaGlzdG9yeSBzdGFydGVkIHdpdGggdGhlIHJldmVyc2UtZW5naW5lZXJpbmcgZWZmb3J0IGJ5IEJqw7ZybgorICBEYW5pZWxzc29uIDxwdnJ1c2IyQGRheC5udT4gd2hvc2Ugd2ViIHBhZ2UgY2FuIGJlIGZvdW5kIGhlcmU6CisKKyAgICBodHRwOi8vcHZydXNiMi5kYXgubnUvCisKKyAgRnJvbSB0aGVyZSBBdXJlbGllbiBBbGxlYXVtZSA8c2x0c0BmcmVlLmZyPiBiZWdhbiBhbiBlZmZvcnQgdG8KKyAgY3JlYXRlIGEgdmlkZW80bGludXggY29tcGF0aWJsZSBkcml2ZXIuICBJIGJlZ2FuIHdpdGggQXVyZWxpZW4ncworICBsYXN0IGtub3duIHNuYXBzaG90IGFuZCBldm9sdmVkIHRoZSBkcml2ZXIgdG8gdGhlIHN0YXRlIGl0IGlzIGluCisgIGhlcmUuCisKKyAgTW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGRyaXZlciBjYW4gYmUgZm91bmQgYXQ6CisKKyAgICBodHRwOi8vd3d3LmlzZWx5Lm5ldC9wdnJ1c2IyLmh0bWwKKworCisgIFRoaXMgZHJpdmVyIGhhcyBhIHN0cm9uZyBzZXBhcmF0aW9uIG9mIGxheWVycy4gIFRoZXkgYXJlIHZlcnkKKyAgcm91Z2hseToKKworICAxYS4gTG93IGxldmVsIHdpcmUtcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gd2l0aCB0aGUgZGV2aWNlLgorCisgIDFiLiBJMkMgYWRhcHRvciBpbXBsZW1lbnRhdGlvbiBhbmQgY29ycmVzcG9uZGluZyBJMkMgY2xpZW50IGRyaXZlcnMKKyAgICAgIGltcGxlbWVudGVkIGVsc2V3aGVyZSBpbiBWNEwuCisKKyAgMWMuIEhpZ2ggbGV2ZWwgaGFyZHdhcmUgZHJpdmVyIGltcGxlbWVudGF0aW9uIHdoaWNoIGNvb3JkaW5hdGVzIGFsbAorICAgICAgYWN0aXZpdGllcyB0aGF0IGVuc3VyZSBjb3JyZWN0IG9wZXJhdGlvbiBvZiB0aGUgZGV2aWNlLgorCisgIDIuICBBICJjb250ZXh0IiBsYXllciB3aGljaCBtYW5hZ2VzIGluc3RhbmNpbmcgb2YgZHJpdmVyLCBzZXR1cCwKKyAgICAgIHRlYXItZG93biwgYXJiaXRyYXRpb24sIGFuZCBpbnRlcmFjdGlvbiB3aXRoIGhpZ2ggbGV2ZWwKKyAgICAgIGludGVyZmFjZXMgYXBwcm9wcmlhdGVseSBhcyBkZXZpY2VzIGFyZSBob3RwbHVnZ2VkIGluIHRoZQorICAgICAgc3lzdGVtLgorCisgIDMuICBIaWdoIGxldmVsIGludGVyZmFjZXMgd2hpY2ggZ2x1ZSB0aGUgZHJpdmVyIHRvIHZhcmlvdXMgcHVibGlzaGVkCisgICAgICBMaW51eCBBUElzIChWNEwsIHN5c2ZzLCBtYXliZSBEVkIgaW4gdGhlIGZ1dHVyZSkuCisKKyAgVGhlIG1vc3QgaW1wb3J0YW50IHNoZWFyaW5nIGxheWVyIGlzIGJldHdlZW4gdGhlIHRvcCAyIGxheWVycy4gIEEKKyAgbG90IG9mIHdvcmsgd2VudCBpbnRvIHRoZSBkcml2ZXIgdG8gZW5zdXJlIHRoYXQgYW55IGtpbmQgb2YKKyAgY29uY2VpdmFibGUgQVBJIGNhbiBiZSBsYWlkIG9uIHRvcCBvZiB0aGUgY29yZSBkcml2ZXIuICAoWWVzLCB0aGUKKyAgZHJpdmVyIGludGVybmFsbHkgbGV2ZXJhZ2VzIFY0TCB0byBkbyBpdHMgd29yayBidXQgdGhhdCByZWFsbHkgaGFzCisgIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgQVBJIHB1Ymxpc2hlZCBieSB0aGUgZHJpdmVyIHRvIHRoZSBvdXRzaWRlCisgIHdvcmxkLikgIFRoZSBhcmNoaXRlY3R1cmUgYWxsb3dzIGZvciBkaWZmZXJlbnQgQVBJcyB0bworICBzaW11bHRhbmVvdXNseSBhY2Nlc3MgdGhlIGRyaXZlci4gIEkgaGF2ZSBhIHN0cm9uZyBzZW5zZSBvZiBmYWlybmVzcworICBhYm91dCBBUElzIGFuZCBhbHNvIGZlZWwgdGhhdCBpdCBpcyBhIGdvb2QgZGVzaWduIHByaW5jaXBsZSB0byBrZWVwCisgIGltcGxlbWVudGF0aW9uIGFuZCBpbnRlcmZhY2UgaXNvbGF0ZWQgZnJvbSBlYWNoIG90aGVyLiAgVGh1cyB3aGlsZQorICByaWdodCBub3cgdGhlIFY0TCBoaWdoIGxldmVsIGludGVyZmFjZSBpcyB0aGUgbW9zdCBjb21wbGV0ZSwgdGhlCisgIHN5c2ZzIGhpZ2ggbGV2ZWwgaW50ZXJmYWNlIHdpbGwgd29yayBlcXVhbGx5IHdlbGwgZm9yIHNpbWlsYXIKKyAgZnVuY3Rpb25zLCBhbmQgdGhlcmUncyBubyByZWFzb24gSSBzZWUgcmlnaHQgbm93IHdoeSBpdCBzaG91bGRuJ3QgYmUKKyAgcG9zc2libGUgdG8gcHJvZHVjZSBhIERWQiBoaWdoIGxldmVsIGludGVyZmFjZSB0aGF0IGNhbiBzaXQgcmlnaHQKKyAgYWxvbmdzaWRlIFY0TC4KKworICBOT1RFOiBDb21wbGV0ZSBkb2N1bWVudGF0aW9uIG9uIHRoZSBwdnJ1c2IyIGRyaXZlciBpcyBjb250YWluZWQgaW4KKyAgdGhlIGh0bWwgZmlsZXMgd2l0aGluIHRoZSBkb2MgZGlyZWN0b3J5OyB0aGVzZSBhcmUgZXhhY3RseSB0aGUgc2FtZQorICBhcyB3aGF0IGlzIG9uIHRoZSB3ZWIgc2l0ZSBhdCB0aGUgdGltZS4gIEJyb3dzZSB0aG9zZSBmaWxlcworICAoZXNwZWNpYWxseSB0aGUgRkFRKSBiZWZvcmUgYXNraW5nIHF1ZXN0aW9ucy4KKworCitCdWlsZGluZworCisgIFRvIGJ1aWxkIHRoZXNlIG1vZHVsZXMgZXNzZW50aWFsbHkgYW1vdW50cyB0byBqdXN0IHJ1bm5pbmcgIk1ha2UiLAorICBidXQgeW91IG5lZWQgdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSBuZWFyYnkgYW5kIHlvdSB3aWxsIGxpa2VseSBhbHNvCisgIHdhbnQgdG8gc2V0IGEgZmV3IGNvbnRyb2xsaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyBmaXJzdCBpbiBvcmRlcgorICB0byBsaW5rIHRoaW5ncyB1cCB3aXRoIHRoYXQgc291cmNlIHRyZWUuICBQbGVhc2Ugc2VlIHRoZSBNYWtlZmlsZQorICBoZXJlIGZvciBjb21tZW50cyB0aGF0IGV4cGxhaW4gaG93IHRvIGRvIHRoYXQuCisKKworU291cmNlIGZpbGUgbGlzdCAvIGZ1bmN0aW9uYWwgb3ZlcnZpZXc6CisKKyAgKE5vdGU6IFRoZSB0ZXJtICJtb2R1bGUiIHVzZWQgYmVsb3cgZ2VuZXJhbGx5IHJlZmVycyB0byBsb29zZWx5CisgIGRlZmluZWQgZnVuY3Rpb25hbCB1bml0cyB3aXRoaW4gdGhlIHB2cnVzYjIgZHJpdmVyIGFuZCBiZWFycyBubworICByZWxhdGlvbiB0byB0aGUgTGludXgga2VybmVsJ3MgY29uY2VwdCBvZiBhIGxvYWRhYmxlIG1vZHVsZS4pCisKKyAgcHZydXNiMi1hdWRpby5bY2hdIC0gVGhpcyBpcyBnbHVlIGxvZ2ljIHRoYXQgcmVzaWRlcyBiZXR3ZWVuIHRoaXMKKyAgICBkcml2ZXIgYW5kIHRoZSBtc3AzNDAwLmtvIEkyQyBjbGllbnQgZHJpdmVyICh3aGljaCBpcyBmb3VuZAorICAgIGVsc2V3aGVyZSBpbiBWNEwpLgorCisgIHB2cnVzYjItY29udGV4dC5bY2hdIC0gVGhpcyBtb2R1bGUgaW1wbGVtZW50cyB0aGUgY29udGV4dCBmb3IgYW4KKyAgICBpbnN0YW5jZSBvZiB0aGUgZHJpdmVyLiAgRXZlcnl0aGluZyBlbHNlIGV2ZW50dWFsbHkgdGllcyBiYWNrIHRvCisgICAgb3IgaXMgb3RoZXJ3aXNlIGluc3RhbmNlZCB3aXRoaW4gdGhlIGRhdGEgc3RydWN0dXJlcyBpbXBsZW1lbnRlZAorICAgIGhlcmUuICBIb3RwbHVnZ2luZyBpcyB1bHRpbWF0ZWx5IGNvb3JkaW5hdGVkIGhlcmUuICBBbGwgaGlnaCBsZXZlbAorICAgIGludGVyZmFjZXMgdGllIGludG8gdGhlIGRyaXZlciB0aHJvdWdoIHRoaXMgbW9kdWxlLiAgVGhpcyBtb2R1bGUKKyAgICBoZWxwcyBhcmJpdHJhdGUgZWFjaCBpbnRlcmZhY2UncyBhY2Nlc3MgdG8gdGhlIGFjdHVhbCBkcml2ZXIgY29yZSwKKyAgICBhbmQgaXMgZGVzaWduZWQgdG8gYWxsb3cgY29uY3VycmVudCBhY2Nlc3MgdGhyb3VnaCBtdWx0aXBsZQorICAgIGluc3RhbmNlcyBvZiBtdWx0aXBsZSBpbnRlcmZhY2VzICh0aHVzIHlvdSBjYW4gZm9yIGV4YW1wbGUgY2hhbmdlCisgICAgdGhlIHR1bmVyJ3MgZnJlcXVlbmN5IHRocm91Z2ggc3lzZnMgd2hpbGUgc2ltdWx0YW5lb3VzbHkgc3RyZWFtaW5nCisgICAgdmlkZW8gdGhyb3VnaCBWNEwgb3V0IHRvIGFuIGluc3RhbmNlIG9mIG1wbGF5ZXIpLgorCisgIHB2cnVzYjItZGVidWcuaCAtIFRoaXMgaGVhZGVyIGRlZmluZXMgYSBwcmludGsoKSB3cmFwcGVyIGFuZCBhIG1hc2sKKyAgICBvZiBkZWJ1Z2dpbmcgYml0IGRlZmluaXRpb25zIGZvciB0aGUgdmFyaW91cyBraW5kcyBvZiBkZWJ1ZworICAgIG1lc3NhZ2VzIHRoYXQgY2FuIGJlIGVuYWJsZWQgd2l0aGluIHRoZSBkcml2ZXIuCisKKyAgcHZydXNiMi1kZWJ1Z2lmYy5bY2hdIC0gVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBhIGNydWRlIGNvbW1hbmQgbGluZQorICAgIG9yaWVudGVkIGRlYnVnIGludGVyZmFjZSBpbnRvIHRoZSBkcml2ZXIuICBBc2lkZSBmcm9tIGJlaW5nIHBhcnQKKyAgICBvZiB0aGUgcHJvY2VzcyBmb3IgaW1wbGVtZW50aW5nIG1hbnVhbCBmaXJtd2FyZSBleHRyYWN0aW9uIChzZWUKKyAgICB0aGUgcHZydXNiMiB3ZWIgc2l0ZSBtZW50aW9uZWQgZWFybGllciksIHByb2JhYmx5IEknbSB0aGUgb25seSBvbmUKKyAgICB3aG8gaGFzIGV2ZXIgdXNlZCB0aGlzLiAgSXQgaXMgbWFpbmx5IGEgZGVidWdnaW5nIGFpZC4KKworICBwdnJ1c2IyLWVlcHJvbS5bY2hdIC0gVGhpcyBpcyBnbHVlIGxvZ2ljIHRoYXQgcmVzaWRlcyBiZXR3ZWVuIHRoaXMKKyAgICBkcml2ZXIgdGhlIHR2ZWVwcm9tLmtvIG1vZHVsZSwgd2hpY2ggaXMgaXRzZWxmIGltcGxlbWVudGVkCisgICAgZWxzZXdoZXJlIGluIFY0TC4KKworICBwdnJ1c2IyLWVuY29kZXIuW2NoXSAtIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgYWxsIHByb3RvY29sIG5lZWRlZCB0bworICAgIGludGVyYWN0IHdpdGggdGhlIENvbmV4YW50IG1wZWcyIGVuY29kZXIgY2hpcCB3aXRoaW4gdGhlIHB2cnVzYjIKKyAgICBkZXZpY2UuICBJdCBpcyBhIGNydWRlIGVjaG8gb2YgY29ycmVzcG9uZGluZyBsb2dpYyBpbiBpdnR2LAorICAgIGhvd2V2ZXIgdGhlIGRlc2lnbiBnb2FscyAoc3RyaWN0IGlzb2xhdGlvbikgYW5kIHBoeXNpY2FsIGxheWVyCisgICAgKHByb3h5IHRocm91Z2ggVVNCIGluc3RlYWQgb2YgUENJKSBhcmUgZW5vdWdoIGRpZmZlcmVudCB0aGF0IHRoaXMKKyAgICBpbXBsZW1lbnRhdGlvbiBoYWQgdG8gYmUgY29tcGxldGVseSBkaWZmZXJlbnQuCisKKyAgcHZydXNiMi1oZHctaW50ZXJuYWwuaCAtIFRoaXMgaGVhZGVyIGRlZmluZXMgdGhlIGNvcmUgZGF0YSBzdHJ1Y3R1cmUKKyAgICBpbiB0aGUgZHJpdmVyIHVzZWQgdG8gdHJhY2sgQUxMIGludGVybmFsIHN0YXRlIHJlbGF0ZWQgdG8gY29udHJvbAorICAgIG9mIHRoZSBoYXJkd2FyZS4gIE5vYm9keSBvdXRzaWRlIG9mIHRoZSBjb3JlIGhhcmR3YXJlLWhhbmRsaW5nCisgICAgbW9kdWxlcyBzaG91bGQgaGF2ZSBhbnkgYnVzaW5lc3MgdXNpbmcgdGhpcyBoZWFkZXIuICBBbGwgZXh0ZXJuYWwKKyAgICBhY2Nlc3MgdG8gdGhlIGRyaXZlciBzaG91bGQgYmUgdGhyb3VnaCBvbmUgb2YgdGhlIGhpZ2ggbGV2ZWwKKyAgICBpbnRlcmZhY2VzIChlLmcuIFY0TCwgc3lzZnMsIGV0YyksIGFuZCBpbiBmYWN0IGV2ZW4gdGhvc2UgaGlnaAorICAgIGxldmVsIGludGVyZmFjZXMgYXJlIHJlc3RyaWN0ZWQgdG8gdGhlIEFQSSBkZWZpbmVkIGluCisgICAgcHZydXNiMi1oZHcuaCBhbmQgTk9UIHRoaXMgaGVhZGVyLgorCisgIHB2cnVzYjItaGR3LmggLSBUaGlzIGhlYWRlciBkZWZpbmVzIHRoZSBmdWxsIGludGVybmFsIEFQSSBmb3IKKyAgICBjb250cm9sbGluZyB0aGUgaGFyZHdhcmUuICBIaWdoIGxldmVsIGludGVyZmFjZXMgKGUuZy4gVjRMLCBzeXNmcykKKyAgICB3aWxsIHdvcmsgdGhyb3VnaCBoZXJlLgorCisgIHB2cnVzYjItaGR3LmMgLSBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGFsbCB0aGUgdmFyaW91cyBiaXRzIG9mIGxvZ2ljCisgICAgdGhhdCBoYW5kbGUgb3ZlcmFsbCBjb250cm9sIG9mIGEgc3BlY2lmaWMgcHZydXNiMiBkZXZpY2UuCisgICAgKFBvbGljeSwgaW5zdGFudGlhdGlvbiwgYW5kIGFyYml0cmF0aW9uIG9mIHB2cnVzYjIgZGV2aWNlcyBmYWxsCisgICAgd2l0aGluIHRoZSBqdXJpc2RpY3Rpb24gb2YgcHZydXNiLWNvbnRleHQgbm90IGhlcmUpLgorCisgIHB2cnVzYjItaTJjLWNoaXBzLSouYyAtIFRoZXNlIG1vZHVsZXMgaW1wbGVtZW50IHRoZSBnbHVlIGxvZ2ljIHRvCisgICAgdGllIHRvZ2V0aGVyIGFuZCBjb25maWd1cmUgdmFyaW91cyBJMkMgbW9kdWxlcyBhcyB0aGV5IGF0dGFjaCB0bworICAgIHRoZSBJMkMgYnVzLiAgVGhlcmUgYXJlIHR3byB2ZXJzaW9ucyBvZiB0aGlzIGZpbGUuICBUaGUgInY0bDIiCisgICAgdmVyc2lvbiBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGluLXRyZWUgYWxvbmdzaWRlIFY0TCwgd2hlcmUgd2UKKyAgICBpbXBsZW1lbnQganVzdCB0aGUgbG9naWMgdGhhdCBtYWtlcyBzZW5zZSBmb3IgYSBwdXJlIFY0TAorICAgIGVudmlyb25tZW50LiAgVGhlICJhbGwiIHZlcnNpb24gaXMgaW50ZW5kZWQgZm9yIHVzZSBvdXRzaWRlIG9mCisgICAgVjRMLCB3aGVyZSB3ZSBtaWdodCBlbmNvdW50ZXIgb3RoZXIgcG9zc2libHkgImNoYWxsZW5naW5nIiBtb2R1bGVzCisgICAgZnJvbSBpdnR2IG9yIG9sZGVyIGtlcm5lbCBzbmFwc2hvdHMgKG9yIGV2ZW4gdGhlIHN1cHBvcnQgbW9kdWxlcworICAgIGluIHRoZSBzdGFuZGFsb25lIHNuYXBzaG90KS4KKworICBwdnJ1c2IyLWkyYy1jbWQtdjRsMS5bY2hdIC0gVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBnZW5lcmljIFY0TDEKKyAgICBjb21wYXRpYmxlIGNvbW1hbmRzIHRvIHRoZSBJMkMgbW9kdWxlcy4gIEl0IGlzIGhlcmUgd2hlcmUgc3RhdGUKKyAgICBjaGFuZ2VzIGluc2lkZSB0aGUgcHZydXNiMiBkcml2ZXIgYXJlIHRyYW5zbGF0ZWQgaW50byBWNEwxCisgICAgY29tbWFuZHMgdGhhdCBhcmUgaW4gdHVybiBzZW5kIHRvIHRoZSB2YXJpb3VzIEkyQyBtb2R1bGVzLgorCisgIHB2cnVzYjItaTJjLWNtZC12NGwyLltjaF0gLSBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGdlbmVyaWMgVjRMMgorICAgIGNvbXBhdGlibGUgY29tbWFuZHMgdG8gdGhlIEkyQyBtb2R1bGVzLiAgSXQgaXMgaGVyZSB3aGVyZSBzdGF0ZQorICAgIGNoYW5nZXMgaW5zaWRlIHRoZSBwdnJ1c2IyIGRyaXZlciBhcmUgdHJhbnNsYXRlZCBpbnRvIFY0TDIKKyAgICBjb21tYW5kcyB0aGF0IGFyZSBpbiB0dXJuIHNlbmQgdG8gdGhlIHZhcmlvdXMgSTJDIG1vZHVsZXMuCisKKyAgcHZydXNiMi1pMmMtY29yZS5bY2hdIC0gVGhpcyBtb2R1bGUgcHJvdmlkZXMgYW4gaW1wbGVtZW50YXRpb24gb2YgYQorICAgIGtlcm5lbC1mcmllbmRseSBJMkMgYWRhcHRvciBkcml2ZXIsIHRocm91Z2ggd2hpY2ggb3RoZXIgZXh0ZXJuYWwKKyAgICBJMkMgY2xpZW50IGRyaXZlcnMgKGUuZy4gbXNwMzQwMCwgdHVuZXIsIGxpcmMpIG1heSBjb25uZWN0IGFuZAorICAgIG9wZXJhdGUgY29ycmVzcG9uZGluZyBjaGlwcyB3aXRoaW4gdGhlIHB2cnVzYjIgZGV2aWNlLiAgSXQgaXMKKyAgICB0aHJvdWdoIGhlcmUgdGhhdCBvdGhlciBWNEwgbW9kdWxlcyBjYW4gcmVhY2ggaW50byB0aGlzIGRyaXZlciB0bworICAgIG9wZXJhdGUgc3BlY2lmaWMgcGllY2VzIChhbmQgdGhvc2UgbW9kdWxlcyBhcmUgaW4gdHVybiBkcml2ZW4gYnkKKyAgICBnbHVlIGxvZ2ljIHdoaWNoIGlzIGNvb3JkaW5hdGVkIGJ5IHB2cnVzYjItaGR3LCBkb2xlZCBvdXQgYnkKKyAgICBwdnJ1c2IyLWNvbnRleHQsIGFuZCB0aGVuIHVsdGltYXRlbHkgbWFkZSBhdmFpbGFibGUgdG8gdXNlcnMKKyAgICB0aHJvdWdoIG9uZSBvZiB0aGUgaGlnaCBsZXZlbCBpbnRlcmZhY2VzKS4KKworICBwdnJ1c2IyLWlvLltjaF0gLSBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGEgdmVyeSBsb3cgbGV2ZWwgcmluZyBvZgorICAgIHRyYW5zZmVyIGJ1ZmZlcnMsIHJlcXVpcmVkIGluIG9yZGVyIHRvIHN0cmVhbSBkYXRhIGZyb20gdGhlCisgICAgZGV2aWNlLiAgVGhpcyBtb2R1bGUgaXMgKnZlcnkqIGxvdyBsZXZlbC4gIEl0IG9ubHkgb3BlcmF0ZXMgdGhlCisgICAgYnVmZmVycyBhbmQgbWFrZXMgbm8gYXR0ZW1wdCB0byBkZWZpbmUgYW55IHBvbGljeSBvciBtZWNoYW5pc20gZm9yCisgICAgaG93IHN1Y2ggYnVmZmVycyBtaWdodCBiZSB1c2VkLgorCisgIHB2cnVzYjItaW9yZWFkLltjaF0gLSBUaGlzIG1vZHVsZSBsYXllcnMgb24gdG9wIG9mIHB2cnVzYjItaW8uW2NoXQorICAgIHRvIHByb3ZpZGUgYSBzdHJlYW1pbmcgQVBJIHVzYWJsZSBieSBhIHJlYWQoKSBzeXN0ZW0gY2FsbCBzdHlsZSBvZgorICAgIEkvTy4gIFJpZ2h0IG5vdyB0aGlzIGlzIHRoZSBvbmx5IGxheWVyIG9uIHRvcCBvZiBwdnJ1c2IyLWlvLltjaF0sCisgICAgaG93ZXZlciB0aGUgdW5kZXJseWluZyBhcmNoaXRlY3R1cmUgaGVyZSB3YXMgaW50ZW5kZWQgdG8gYWxsb3cgZm9yCisgICAgb3RoZXIgc3R5bGVzIG9mIEkvTyB0byBiZSBpbXBsZW1lbnRlZCB3aXRoIGFkZGl0aW9uYWwgbW9kdWxlcywgbGlrZQorICAgIG1tYXAoKSdlZCBidWZmZXJzIG9yIHNvbWV0aGluZyBldmVuIG1vcmUgZXhvdGljLgorCisgIHB2cnVzYjItbWFpbi5jIC0gVGhpcyBpcyB0aGUgdG9wIGxldmVsIG9mIHRoZSBkcml2ZXIuICBNb2R1bGUgbGV2ZWwKKyAgICBhbmQgVVNCIGNvcmUgZW50cnkgcG9pbnRzIGFyZSBoZXJlLiAgVGhpcyBpcyBvdXIgIm1haW4iLgorCisgIHB2cnVzYjItc3lzZnMuW2NoXSAtIFRoaXMgaXMgdGhlIGhpZ2ggbGV2ZWwgaW50ZXJmYWNlIHdoaWNoIHRpZXMgdGhlCisgICAgcHZydXNiMiBkcml2ZXIgaW50byBzeXNmcy4gIFRocm91Z2ggdGhpcyBpbnRlcmZhY2UgeW91IGNhbiBkbworICAgIGV2ZXJ5dGhpbmcgd2l0aCB0aGUgZHJpdmVyIGV4Y2VwdCBhY3R1YWxseSBzdHJlYW0gZGF0YS4KKworICBwdnJ1c2IyLXR1bmVyLltjaF0gLSBUaGlzIGlzIGdsdWUgbG9naWMgdGhhdCByZXNpZGVzIGJldHdlZW4gdGhpcworICAgIGRyaXZlciBhbmQgdGhlIHR1bmVyLmtvIEkyQyBjbGllbnQgZHJpdmVyICh3aGljaCBpcyBmb3VuZAorICAgIGVsc2V3aGVyZSBpbiBWNEwpLgorCisgIHB2cnVzYjItdXRpbC5oIC0gVGhpcyBoZWFkZXIgZGVmaW5lcyBzb21lIGNvbW1vbiBtYWNyb3MgdXNlZAorICAgIHRocm91Z2hvdXQgdGhlIGRyaXZlci4gIFRoZXNlIG1hY3JvcyBhcmUgbm90IHJlYWxseSBzcGVjaWZpYyB0bworICAgIHRoZSBkcml2ZXIsIGJ1dCB0aGV5IGhhZCB0byBnbyBzb21ld2hlcmUuCisKKyAgcHZydXNiMi12NGwyLltjaF0gLSBUaGlzIGlzIHRoZSBoaWdoIGxldmVsIGludGVyZmFjZSB3aGljaCB0aWVzIHRoZQorICAgIHB2cnVzYjIgZHJpdmVyIGludG8gdmlkZW80bGludXguICBJdCBpcyB0aHJvdWdoIGhlcmUgdGhhdCBWNEwKKyAgICBhcHBsaWNhdGlvbnMgY2FuIG9wZW4gYW5kIG9wZXJhdGUgdGhlIGRyaXZlciBpbiB0aGUgdXN1YWwgVjRMCisgICAgd2F5cy4gIE5vdGUgdGhhdCAqKkFMTCoqIFY0TCBmdW5jdGlvbmFsaXR5IGlzIHB1Ymxpc2hlZCBvbmx5CisgICAgdGhyb3VnaCBoZXJlIGFuZCBub3doZXJlIGVsc2UuCisKKyAgcHZydXNiMi12aWRlby0qLltjaF0gLSBUaGlzIGlzIGdsdWUgbG9naWMgdGhhdCByZXNpZGVzIGJldHdlZW4gdGhpcworICAgIGRyaXZlciBhbmQgdGhlIHNhYTcxMXgua28gSTJDIGNsaWVudCBkcml2ZXIgKHdoaWNoIGlzIGZvdW5kCisgICAgZWxzZXdoZXJlIGluIFY0TCkuICBOb3RlIHRoYXQgc2FhNzExeC5rbyB1c2VkIHRvIGJlIGtub3duIGFzCisgICAgc2FhNzExNS5rbyBpbiBpdnR2LiAgVGhlcmUgYXJlIHR3byB2ZXJzaW9ucyBvZiB0aGlzOyBvbmUgaXMKKyAgICBzZWxlY3RlZCBkZXBlbmRpbmcgb24gdGhlIHBhcnRpY3VsYXIgc2FhNzExWzV4XS5rbyB0aGF0IGlzIGZvdW5kLgorCisgIHB2cnVzYjIuaCAtIFRoaXMgaGVhZGVyIGNvbnRhaW5zIGNvbXBpbGUgdGltZSB0dW5hYmxlIHBhcmFtZXRlcnMKKyAgICAoYW5kIGF0IHRoZSBtb21lbnQgdGhlIGRyaXZlciBoYXMgdmVyeSBsaXR0bGUgdGhhdCBuZWVkcyB0byBiZQorICAgIHR1bmVkKS4KKworCisgIC1NaWtlIElzZWx5CisgIGlzZWx5QHBvYm94LmNvbQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L1JFQURNRS5zYWE3MTM0IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9SRUFETUUuc2FhNzEzNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTExZjA4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9SRUFETUUuc2FhNzEzNApAQCAtMCwwICsxLDgyIEBACisKKworV2hhdCBpcyBpdD8KKz09PT09PT09PT09CisKK1RoaXMgaXMgYSB2NGwyL29zcyBkZXZpY2UgZHJpdmVyIGZvciBzYWE3MTMwLzMzLzM0LzM1IGJhc2VkIGNhcHR1cmUgLyBUVgorYm9hcmRzLiAgU2VlIGh0dHA6Ly93d3cuc2VtaWNvbmR1Y3RvcnMucGhpbGlwcy5jb20vcGlwL3NhYTcxMzRobCBmb3IgYQorZGVzY3JpcHRpb24uCisKKworU3RhdHVzCis9PT09PT0KKworQWxtb3N0IGV2ZXJ5dGhpbmcgaXMgd29ya2luZy4gIHZpZGVvLCBzb3VuZCwgdHVuZXIsIHJhZGlvLCBtcGVnIHRzLCAuLi4KKworQXMgd2l0aCBidHR2LCBjYXJkLXNwZWNpZmljIHR3ZWFrcyBhcmUgbmVlZGVkLiAgQ2hlY2sgQ0FSRExJU1QgZm9yIGEKK2xpc3Qgb2Yga25vd24gVFYgY2FyZHMgYW5kIHNhYTcxMzQtY2FyZHMuYyBmb3IgdGhlIGRyaXZlcnMgY2FyZAorY29uZmlndXJhdGlvbiBpbmZvLgorCisKK0J1aWxkCis9PT09PQorCitQaWNrIHVwIHZpZGVvZGV2ICsgdjRsMiBwYXRjaGVzIGZyb20gaHR0cDovL2J5dGVzZXgub3JnL3BhdGNoZXMvLgorQ29uZmlndXJlLCBidWlsZCwgaW5zdGFsbCArIGJvb3QgdGhlIG5ldyBrZXJuZWwuICBZb3UnbGwgbmVlZCBhdCBsZWFzdAordGhlc2UgY29uZmlnIG9wdGlvbnM6CisKKwlDT05GSUdfSTJDPW0KKwlDT05GSUdfVklERU9fREVWPW0KKworVHlwZSAibWFrZSIgdG8gYnVpbGQgdGhlIGRyaXZlciBub3cuICAibWFrZSBpbnN0YWxsIiBpbnN0YWxscyB0aGUKK2RyaXZlci4gICJtb2Rwcm9iZSBzYWE3MTM0IiBzaG91bGQgbG9hZCBpdC4gIERlcGVuZGluZyBvbiB0aGUgY2FyZCB5b3UKK21pZ2h0IGhhdmUgdG8gcGFzcyBjYXJkPTxucj4gYXMgaW5zbW9kIG9wdGlvbiwgY2hlY2sgQ0FSRExJU1QgZm9yCit2YWxpZCBjaG9pY2VzLgorCisKK0NoYW5nZXMgLyBGaXhlcworPT09PT09PT09PT09PT09CisKK1BsZWFzZSBtYWlsIG1lIHVuaWZpZWQgZGlmZnMgKCJkaWZmIC11Iikgd2l0aCB5b3VyIGNoYW5nZXMsIGFuZCBkb24ndAorZm9yZ2V0IHRvIHRlbGwgbWUgd2hhdCBpdCBjaGFuZ2VzIC8gd2hpY2ggcHJvYmxlbSBpdCBmaXhlcyAvIHdoYXRldmVyCitpdCBpcyBnb29kIGZvciAuLi4KKworCitLbm93biBQcm9ibGVtcworPT09PT09PT09PT09PT0KKworKiBUaGUgdHVuZXIgZm9yIHRoZSBmbHl2aWRlb3MgaXNuJ3QgZGV0ZWN0ZWQgYXV0b21hdGljYWxseSBhbmQgdGhlCisgIGRlZmF1bHQgbWlnaHQgbm90IHdvcmsgZm9yIHlvdSBkZXBlbmRpbmcgb24gd2hpY2ggdmVyc2lvbiB5b3UgaGF2ZS4KKyAgVGhlcmUgaXMgYSB0dW5lcj0gaW5zbW9kIG9wdGlvbiB0byBvdmVycmlkZSB0aGUgZHJpdmVyJ3MgZGVmYXVsdC4KKworQ2FyZCBWYXJpYXRpb25zOgorPT09PT09PT09PT09PT09PQorCitDYXJkcyBjYW4gdXNlIGVpdGhlciBvZiB0aGVzZSB0d28gY3J5c3RhbHMgKHh0YWwpOgorIC0gMzIuMTEgTUh6IC0+IC5hdWRpb19jbG9jaz0weDE4N2RlNworIC0gMjQuNTc2TUh6IC0+IC5hdWRpb19jbG9jaz0weDIwMDAwMAorKHh0YWwgKiAuYXVkaW9fY2xvY2sgPSA1MTUzOTYwMCkKKworU29tZSBkZXRhaWxzIGFib3V0IDMwLzM0LzM1OgorCisgLSBzYWE3MTMwIC0gbG93LXByaWNlIGNoaXAsIGRvZXNuJ3QgaGF2ZSBtdXRlLCB0aGF0IGlzIHdoeSBhbGwgdGhvc2UKKyBjYXJkcyBzaG91bGQgaGF2ZSAubXV0ZSBmaWVsZCBkZWZpbmVkIGluIHRoZWlyIHR1bmVyIHN0cnVjdHVyZS4KKworIC0gc2FhNzEzNCAtIHVzdWFsIGNoaXAKKworIC0gc2FhNzEzMy8zNSAtIHNhYTcxMzUgaXMgcHJvYmFibHkgYSBtYXJrZXRpbmcgZGVjaXNpb24sIHNpbmNlIGFsbCB0aG9zZQorIGNoaXBzIGlkZW50aWZpZXMgaXRzZWxmIGFzIDMzIG9uIHBjaS4KKworQ3JlZGl0cworPT09PT09PQorCithbmRyZXcuc3RldmVuc0BwaGlsaXBzLmNvbSArIHdlcm5lci5sZWViQHBoaWxpcHMuY29tIGZvciBwcm92aWRpbmcKK3NhYTcxMzQgaGFyZHdhcmUgc3BlY3MgYW5kIHNhbXBsZSBib2FyZC4KKworCitIYXZlIGZ1biwKKworICBHZXJkCisKKy0tCitHZXJkIEtub3JyIDxrcmF4ZWxAYnl0ZXNleC5vcmc+IFtTdVNFIExhYnNdCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L1pvcmFuIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9ab3JhbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWE5MTFmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9ab3JhbgpAQCAtMCwwICsxLDUxMCBAQAorRnJlcXVlbnRseSBBc2tlZCBRdWVzdGlvbnM6Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KK3N1YmplY3Q6IHVuaWZpZWQgem9yYW4gZHJpdmVyICh6cjM2MHg3LCB6b3JhbiwgYnV6LCBkYzEwKCspLCBkYzMwKCspLCBsbWwzMykKK3dlYnNpdGU6IGh0dHA6Ly9tanBlZy5zb3VyY2Vmb3JnZS5uZXQvZHJpdmVyLXpvcmFuLworCisxLiBXaGF0IGNhcmRzIGFyZSBzdXBwb3J0ZWQKKzEuMSBXaGF0IHRoZSBUViBkZWNvZGVyIGNhbiBkbyBhbiB3aGF0IG5vdAorMS4yIFdoYXQgdGhlIFRWIGVuY29kZXIgY2FuIGRvIGFuIHdoYXQgbm90CisyLiBIb3cgZG8gSSBnZXQgdGhpcyBkYW1uIHRoaW5nIHRvIHdvcmsKKzMuIFdoYXQgbWFpbmJvYXJkIHNob3VsZCBJIHVzZSAob3Igd2h5IGRvZXNuJ3QgbXkgY2FyZCB3b3JrKQorNC4gUHJvZ3JhbW1pbmcgaW50ZXJmYWNlCis1LiBBcHBsaWNhdGlvbnMKKzYuIENvbmNlcm5pbmcgYnVmZmVyIHNpemVzLCBxdWFsaXR5LCBvdXRwdXQgc2l6ZSBldGMuCis3LiBJdCBoYW5ncy9jcmFzaGVzL2ZhaWxzL3doYXRldmVycyEgSGVscCEKKzguIE1haW50YWluZXJzL0NvbnRhY3RpbmcKKzkuIExpY2Vuc2UKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzEuIFdoYXQgY2FyZHMgYXJlIHN1cHBvcnRlZAorCitJb21lZ2EgQnV6LCBMaW51eCBNZWRpYSBMYWJzIExNTDMzL0xNTDMzUjEwLCBQaW5uYWNsZS9NaXJvCitEQzEwL0RDMTArL0RDMzAvREMzMCsgYW5kIHJlbGF0ZWQgYm9hcmRzIChhdmFpbGFibGUgdW5kZXIgdmFyaW91cyBuYW1lcykuCisKK0lvbWVnYSBCdXo6CisqIFpvcmFuIHpyMzYwNjcgUENJIGNvbnRyb2xsZXIKKyogWm9yYW4genIzNjA2MCBNSlBFRyBjb2RlYworKiBQaGlsaXBzIHNhYTcxMTEgVFYgZGVjb2RlcgorKiBQaGlsaXBzIHNhYTcxODUgVFYgZW5jb2RlcgorRHJpdmVycyB0byB1c2U6IHZpZGVvZGV2LCBpMmMtY29yZSwgaTJjLWFsZ28tYml0LAorCQl2aWRlb2NvZGVjLCBzYWE3MTExLCBzYWE3MTg1LCB6cjM2MDYwLCB6cjM2MDY3CitJbnB1dHMvb3V0cHV0czogQ29tcG9zaXRlIGFuZCBTLXZpZGVvCitOb3JtczogUEFMLCBTRUNBTSAoNzIweDU3NiBAIDI1IGZwcyksIE5UU0MgKDcyMHg0ODAgQCAyOS45NyBmcHMpCitDYXJkIG51bWJlcjogNworCitBdmVyTWVkaWEgNiBFeWVzIEFWUzZFWUVTOgorKiBab3JhbiB6cjM2MDY3IFBDSSBjb250cm9sbGVyCisqIFpvcmFuIHpyMzYwNjAgTUpQRUcgY29kZWMKKyogU2Ftc3VuZyBrczAxMjcgVFYgZGVjb2RlcgorKiBDb25leGFudCBidDg2NiAgVFYgZW5jb2RlcgorRHJpdmVycyB0byB1c2U6IHZpZGVvZGV2LCBpMmMtY29yZSwgaTJjLWFsZ28tYml0LAorCQl2aWRlb2NvZGVjLCBrczAxMjcsIGJ0ODY2LCB6cjM2MDYwLCB6cjM2MDY3CitJbnB1dHMvb3V0cHV0czogU2l4IHBoeXNpY2FsIGlucHV0cy4gMS02IGFyZSBjb21wb3NpdGUsCisJCTEtMiwgMy00LCA1LTYgZG91YmxlcyBhcyBTLXZpZGVvLAorCQkxLTMgdHJpcGxlcyBhcyBjb21wb25lbnQuCisJCU9uZSBjb21wb3NpdGUgb3V0cHV0LgorTm9ybXM6IFBBTCwgU0VDQU0gKDcyMHg1NzYgQCAyNSBmcHMpLCBOVFNDICg3MjB4NDgwIEAgMjkuOTcgZnBzKQorQ2FyZCBudW1iZXI6IDgKK05vdCBhdXRvZGV0ZWN0ZWQsIGNhcmQ9OCBpcyBuZWNlc3NhcnkuCisKK0xpbnV4IE1lZGlhIExhYnMgTE1MMzM6CisqIFpvcmFuIHpyMzYwNjcgUENJIGNvbnRyb2xsZXIKKyogWm9yYW4genIzNjA2MCBNSlBFRyBjb2RlYworKiBCcm9va3RyZWUgYnQ4MTkgVFYgZGVjb2RlcgorKiBCcm9va3RyZWUgYnQ4NTYgVFYgZW5jb2RlcgorRHJpdmVycyB0byB1c2U6IHZpZGVvZGV2LCBpMmMtY29yZSwgaTJjLWFsZ28tYml0LAorCQl2aWRlb2NvZGVjLCBidDgxOSwgYnQ4NTYsIHpyMzYwNjAsIHpyMzYwNjcKK0lucHV0cy9vdXRwdXRzOiBDb21wb3NpdGUgYW5kIFMtdmlkZW8KK05vcm1zOiBQQUwgKDcyMHg1NzYgQCAyNSBmcHMpLCBOVFNDICg3MjB4NDgwIEAgMjkuOTcgZnBzKQorQ2FyZCBudW1iZXI6IDUKKworTGludXggTWVkaWEgTGFicyBMTUwzM1IxMDoKKyogWm9yYW4genIzNjA2NyBQQ0kgY29udHJvbGxlcgorKiBab3JhbiB6cjM2MDYwIE1KUEVHIGNvZGVjCisqIFBoaWxpcHMgc2FhNzExNCBUViBkZWNvZGVyCisqIEFuYWxvZyBEZXZpY2VzIGFkdjcxNzAgVFYgZW5jb2RlcgorRHJpdmVycyB0byB1c2U6IHZpZGVvZGV2LCBpMmMtY29yZSwgaTJjLWFsZ28tYml0LAorCQl2aWRlb2NvZGVjLCBzYWE3MTE0LCBhZHY3MTcwLCB6cjM2MDYwLCB6cjM2MDY3CitJbnB1dHMvb3V0cHV0czogQ29tcG9zaXRlIGFuZCBTLXZpZGVvCitOb3JtczogUEFMICg3MjB4NTc2IEAgMjUgZnBzKSwgTlRTQyAoNzIweDQ4MCBAIDI5Ljk3IGZwcykKK0NhcmQgbnVtYmVyOiA2CisKK1Bpbm5hY2xlL01pcm8gREMxMChuZXcpOgorKiBab3JhbiB6cjM2MDU3IFBDSSBjb250cm9sbGVyCisqIFpvcmFuIHpyMzYwNjAgTUpQRUcgY29kZWMKKyogUGhpbGlwcyBzYWE3MTEwYSBUViBkZWNvZGVyCisqIEFuYWxvZyBEZXZpY2VzIGFkdjcxNzYgVFYgZW5jb2RlcgorRHJpdmVycyB0byB1c2U6IHZpZGVvZGV2LCBpMmMtY29yZSwgaTJjLWFsZ28tYml0LAorCQl2aWRlb2NvZGVjLCBzYWE3MTEwLCBhZHY3MTc1LCB6cjM2MDYwLCB6cjM2MDY3CitJbnB1dHMvb3V0cHV0czogQ29tcG9zaXRlLCBTLXZpZGVvIGFuZCBJbnRlcm5hbAorTm9ybXM6IFBBTCwgU0VDQU0gKDc2OHg1NzYgQCAyNSBmcHMpLCBOVFNDICg2NDB4NDgwIEAgMjkuOTcgZnBzKQorQ2FyZCBudW1iZXI6IDEKKworUGlubmFjbGUvTWlybyBEQzEwKzoKKyogWm9yYW4genIzNjA2NyBQQ0kgY29udHJvbGxlcgorKiBab3JhbiB6cjM2MDYwIE1KUEVHIGNvZGVjCisqIFBoaWxpcHMgc2FhNzExMGEgVFYgZGVjb2RlcgorKiBBbmFsb2cgRGV2aWNlcyBhZHY3MTc2IFRWIGVuY29kZXIKK0RyaXZlcnMgdG8gdXNlOiB2aWRlb2RldiwgaTJjLWNvcmUsIGkyYy1hbGdvLWJpdCwKKwkJdmlkZW9jb2RlYywgc2E3MTEwLCBhZHY3MTc1LCB6cjM2MDYwLCB6cjM2MDY3CitJbnB1dHMvb3V0cHV0czogQ29tcG9zaXRlLCBTLXZpZGVvIGFuZCBJbnRlcm5hbAorTm9ybXM6IFBBTCwgU0VDQU0gKDc2OHg1NzYgQCAyNSBmcHMpLCBOVFNDICg2NDB4NDgwIEAgMjkuOTcgZnBzKQorQ2FyZCBudW1iZXI6IDIKKworUGlubmFjbGUvTWlybyBEQzEwKG9sZCk6ICoKKyogWm9yYW4genIzNjA1NyBQQ0kgY29udHJvbGxlcgorKiBab3JhbiB6cjM2MDUwIE1KUEVHIGNvZGVjCisqIFpvcmFuIHpyMzYwMTYgVmlkZW8gRnJvbnQgRW5kIG9yIEZ1amkgbWQwMjExIFZpZGVvIEZyb250IEVuZCAoY2xvbmU/KQorKiBNaWNyb25hcyB2cHgzMjIwYSBUViBkZWNvZGVyCisqIG1zZTMwMDAgVFYgZW5jb2RlciBvciBBbmFsb2cgRGV2aWNlcyBhZHY3MTc2IFRWIGVuY29kZXIgKgorRHJpdmVycyB0byB1c2U6IHZpZGVvZGV2LCBpMmMtY29yZSwgaTJjLWFsZ28tYml0LAorCQl2aWRlb2NvZGVjLCB2cHgzMjIwLCBtc2UzMDAwL2FkdjcxNzUsIHpyMzYwNTAsIHpyMzYwMTYsIHpyMzYwNjcKK0lucHV0cy9vdXRwdXRzOiBDb21wb3NpdGUsIFMtdmlkZW8gYW5kIEludGVybmFsCitOb3JtczogUEFMLCBTRUNBTSAoNzY4eDU3NiBAIDI1IGZwcyksIE5UU0MgKDY0MHg0ODAgQCAyOS45NyBmcHMpCitDYXJkIG51bWJlcjogMAorCitQaW5uYWNsZS9NaXJvIERDMzA6ICoKKyogWm9yYW4genIzNjA1NyBQQ0kgY29udHJvbGxlcgorKiBab3JhbiB6cjM2MDUwIE1KUEVHIGNvZGVjCisqIFpvcmFuIHpyMzYwMTYgVmlkZW8gRnJvbnQgRW5kCisqIE1pY3JvbmFzIHZweDMyMjVkL3ZweDMyMjBhL3ZweDMyMTZiIFRWIGRlY29kZXIKKyogQW5hbG9nIERldmljZXMgYWR2NzE3NiBUViBlbmNvZGVyCitEcml2ZXJzIHRvIHVzZTogdmlkZW9kZXYsIGkyYy1jb3JlLCBpMmMtYWxnby1iaXQsCisJCXZpZGVvY29kZWMsIHZweDMyMjAvdnB4MzIyNCwgYWR2NzE3NSwgenIzNjA1MCwgenIzNjAxNiwgenIzNjA2NworSW5wdXRzL291dHB1dHM6IENvbXBvc2l0ZSwgUy12aWRlbyBhbmQgSW50ZXJuYWwKK05vcm1zOiBQQUwsIFNFQ0FNICg3Njh4NTc2IEAgMjUgZnBzKSwgTlRTQyAoNjQweDQ4MCBAIDI5Ljk3IGZwcykKK0NhcmQgbnVtYmVyOiAzCisKK1Bpbm5hY2xlL01pcm8gREMzMCs6ICoKKyogWm9yYW4genIzNjA2NyBQQ0kgY29udHJvbGxlcgorKiBab3JhbiB6cjM2MDUwIE1KUEVHIGNvZGVjCisqIFpvcmFuIHpyMzYwMTYgVmlkZW8gRnJvbnQgRW5kCisqIE1pY3JvbmFzIHZweDMyMjVkL3ZweDMyMjBhL3ZweDMyMTZiIFRWIGRlY29kZXIKKyogQW5hbG9nIERldmljZXMgYWR2NzE3NiBUViBlbmNvZGVyCitEcml2ZXJzIHRvIHVzZTogdmlkZW9kZXYsIGkyYy1jb3JlLCBpMmMtYWxnby1iaXQsCisJCXZpZGVvY29kZWMsIHZweDMyMjAvdnB4MzIyNCwgYWR2NzE3NSwgenIzNjA1MCwgenIzNjAxNSwgenIzNjA2NworSW5wdXRzL291dHB1dHM6IENvbXBvc2l0ZSwgUy12aWRlbyBhbmQgSW50ZXJuYWwKK05vcm1zOiBQQUwsIFNFQ0FNICg3Njh4NTc2IEAgMjUgZnBzKSwgTlRTQyAoNjQweDQ4MCBAIDI5Ljk3IGZwcykKK0NhcmQgbnVtYmVyOiA0CisKK05vdGU6IE5vIG1vZHVsZSBmb3IgdGhlIG1zZTMwMDAgaXMgYXZhaWxhYmxlIHlldAorTm90ZTogTm8gbW9kdWxlIGZvciB0aGUgdnB4MzIyNCBpcyBhdmFpbGFibGUgeWV0CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisxLjEgV2hhdCB0aGUgVFYgZGVjb2RlciBjYW4gZG8gYW4gd2hhdCBub3QKKworVGhlIGJlc3Qga25vdyBUViBzdGFuZGFyZHMgYXJlIE5UU0MvUEFML1NFQ0FNLiBidXQgZm9yIGRlY29kaW5nIGEgZnJhbWUgdGhhdAoraW5mb3JtYXRpb24gaXMgbm90IGVub3VnaC4gVGhlcmUgYXJlIHNldmVyYWwgZm9ybWF0cyBvZiB0aGUgVFYgc3RhbmRhcmRzLgorQW5kIG5vdCBldmVyeSBUViBkZWNvZGVyIGlzIGFibGUgdG8gaGFuZGxlIGV2ZXJ5IGZvcm1hdC4gQWxzbyB0aGUgZXZlcnkKK2NvbWJpbmF0aW9uIGlzIHN1cHBvcnRlZCBieSB0aGUgZHJpdmVyLiBUaGVyZSBhcmUgY3VycmVudGx5IDExIGRpZmZlcmVudAordHYgYnJvYWRjYXN0IGZvcm1hdHMgYWxsIGF2ZXIgdGhlIHdvcmxkLgorCitUaGUgQ0NJUiBkZWZpbmVzIHBhcmFtZXRlcnMgbmVlZGVkIGZvciBicm9hZGNhc3RpbmcgdGhlIHNpZ25hbC4KK1RoZSBDQ0lSIGhhcyBkZWZpbmVkIGRpZmZlcmVudCBzdGFuZGFyZHM6IEEsQixELEUsRixHLEQsSCxJLEssSzEsTCxNLE4sLi4uCitUaGUgQ0NJUiBzYXlzIG5vdCBtdWNoIGFib3V0IHRoZSBjb2xvcnN5c3RlbSB1c2VkICEhIQorQW5kIHRhbGtpbmcgYWJvdXQgYSBjb2xvcnN5c3RlbSBzYXlzIG5vdCB0byBtdWNoIGFib3V0IGhvdyBpdCBpcyBicm9hZGNhc3QuCisKK1RoZSBDQ0lSIHN0YW5kYXJkcyBBLEUsRiBhcmUgbm90IHVzZWQgYW55IG1vcmUuCisKK1doZW4geW91IHNwZWFrIGFib3V0IE5UU0MsIHlvdSB1c3VhbGx5IG1lYW4gdGhlIHN0YW5kYXJkOiBDQ0lSIC0gTSB1c2luZwordGhlIE5UU0MgY29sb3JzeXN0ZW0gd2hpY2ggaXMgdXNlZCBpbiB0aGUgVVNBLCBKYXBhbiwgTWV4aWNvLCBDYW5hZGEKK2FuZCBhIGZldyBvdGhlcnMuCisKK1doZW4geW91IHRhbGsgYWJvdXQgUEFMLCB5b3UgdXN1YWxseSBtZWFuOiBDQ0lSIC0gQi9HIHVzaW5nIHRoZSBQQUwKK2NvbG9yc3lzdGVtIHdoaWNoIGlzIHVzZWQgaW4gbWFueSBDb3VudHJpZXMuCisKK1doZW4geW91IHRhbGsgYWJvdXQgU0VDQU0sIHlvdSBtZWFuOiBDQ0lSIC0gTCB1c2luZyB0aGUgU0VDQU0gQ29sb3JzeXN0ZW0KK3doaWNoIGlzIHVzZWQgaW4gRnJhbmNlLCBhbmQgYSBmZXcgb3RoZXJzLgorCitUaGVyZSB0aGUgb3RoZXIgdmVyc2lvbiBvZiBTRUNBTSwgQ0NJUiAtIEQvSyBpcyB1c2VkIGluIEJ1bGdhcmlhLCBDaGluYSwKK1Nsb3Zha2FpLCBIdW5nYXJ5LCBLb3JlYSAoUmVwLiksIFBvbGFuZCwgUnVtYW5pYSBhbmQgYSBvdGhlcnMuCisKK1RoZSBDQ0lSIC0gSCB1c2VzIHRoZSBQQUwgY29sb3JzeXN0ZW0gKHNvbWV0aW1lcyBTRUNBTSkgYW5kIGlzIHVzZWQgaW4KK0VneXB0LCBMaWJ5YSwgU3JpIExhbmthLCBTeXJhaW4gQXJhYi4gUmVwLgorCitUaGUgQ0NJUiAtIEkgdXNlcyB0aGUgUEFMIGNvbG9yc3lzdGVtLCBhbmQgaXMgdXNlZCBpbiBHcmVhdCBCcml0YWluLCBIb25nIEtvbmcsCitJcmVsYW5kLCBOaWdlcmlhLCBTb3V0aCBBZnJpY2EuCisKK1RoZSBDQ0lSIC0gTiB1c2VzIHRoZSBQQUwgY29sb3JzeXN0ZW0gYW5kIFBBTCBmcmFtZSBzaXplIGJ1dCB0aGUgTlRTQyBmcmFtZXJhdGUsCithbmQgaXMgdXNlZCBpbiBBcmdlbnRpbmlhLCBVcnVndWF5LCBhbiBhIGZldyBvdGhlcnMKKworV2UgZG8gbm90IHRhbGsgYWJvdXQgaG93IHRoZSBhdWRpbyBpcyBicm9hZGNhc3QgIQorCitBIHJhdGhlciBnb29kIHNpdGVzIGFib3V0IHRoZSBUViBzdGFuZGFyZHMgYXJlOgoraHR0cDovL3d3dy5zb255LmpwL3N1cHBvcnQvCitodHRwOi8vaW5mby5lbGVjdHJvbmljd2Vya3N0YXR0LmRlL2JlcmVpY2hlL2Zlcm5zZWh0ZWNobmlrL2ZyZXF1ZW56ZW5fdW5kX25vcm1lbi9GZXJuc2Vobm9ybWVuLworYW5kIGh0dHA6Ly93d3cuY2FibC5jb20vcmVzdGF1cmFudC9jaGFubmVsLmh0bWwKKworT3RoZXIgd2VpcmQgdGhpbmdzIGFyb3VuZDogTlRTQyA0LjQzIGlzIGEgbW9kaWZpY2F0ZWQgTlRTQywgd2hpY2ggaXMgbWFpbmx5Cit1c2VkIGluIFBBTCBWQ1IncyB0aGF0IGFyZSBhYmxlIHRvIHBsYXkgYmFjayBOVFNDLiBQQUwgNjAgc2VlbXMgdG8gYmUgdGhlIHNhbWUKK2FzIE5UU0MgNC40MyAuIFRoZSBEYXRhc2hlZXRzIGFsc28gdGFsayBhYm91dCBOVFNDIDQ0LCBJdCBzZWVtcyBhcyBpZiBpdCB3b3VsZAorYmUgdGhlIHNhbWUgYXMgTlRTQyA0LjQzLgorTlRTQyBDb21icyBzZWVtcyB0byBiZSBhIGRlY29kZXIgbW9kZSB3aGVyZSB0aGUgZGVjb2RlciB1c2VzIGEgY29tYiBmaWx0ZXIKK3RvIHNwbGl0IGNvbWEgYW5kIGx1bWEgaW5zdGVhZCBvZiBhIERlbGF5IGxpbmUuCisKK0J1dCBJIGRpZCBub3QgZGVmaWFudGx5IGZpbmQgb3V0IHdoYXQgTlRTQyBDb21iIGlzLgorCitQaGlsaXBzIHNhYTcxMTEgVFYgZGVjb2Rlcgord2FzIGludHJvZHVjZWQgaW4gMTk5NywgaXMgdXNlZCBpbiB0aGUgQlVaIGFuZAorY2FuIGhhbmRsZTogUEFMIEIvRy9IL0ksIFBBTCBOLCBQQUwgTSwgTlRTQyBNLCBOVFNDIE4sIE5UU0MgNC40MyBhbmQgU0VDQU0KKworUGhpbGlwcyBzYWE3MTEwYSBUViBkZWNvZGVyCit3YXMgaW50cm9kdWNlZCBpbiAxOTk1LCBpcyB1c2VkIGluIHRoZSBQaW5uYWNsZS9NaXJvIERDMTAobmV3KSwgREMxMCsgYW5kCitjYW4gaGFuZGxlOiBQQUwgQi9HLCBOVFNDIE0gYW5kIFNFQ0FNCisKK1BoaWxpcHMgc2FhNzExNCBUViBkZWNvZGVyCit3YXMgaW50cm9kdWNlZCBpbiAyMDAwLCBpcyB1c2VkIGluIHRoZSBMTUwzM1IxMCBhbmQKK2NhbiBoYW5kbGU6IFBBTCBCL0cvRC9IL0kvTiwgUEFMIE4sIFBBTCBNLCBOVFNDIE0sIE5UU0MgNC40MyBhbmQgU0VDQU0KKworQnJvb2t0cmVlIGJ0ODE5IFRWIGRlY29kZXIKK3dhcyBpbnRyb2R1Y2VkIGluIDE5OTYsIGFuZCBpcyB1c2VkIGluIHRoZSBMTUwzMyBhbmQKK2NhbiBoYW5kbGU6IFBBTCBCL0QvRy9IL0ksIE5UU0MgTQorCitNaWNyb25hcyB2cHgzMjIwYSBUViBkZWNvZGVyCit3YXMgaW50cm9kdWNlZCBpbiAxOTk2LCBpcyB1c2VkIGluIHRoZSBEQzMwIGFuZCBEQzMwKyBhbmQKK2NhbiBoYW5kbGU6IFBBTCBCL0cvSC9JLCBQQUwgTiwgUEFMIE0sIE5UU0MgTSwgTlRTQyA0NCwgUEFMIDYwLCBTRUNBTSxOVFNDIENvbWIKKworU2Ftc3VuZyBrczAxMjcgVFYgZGVjb2RlcgoraXMgdXNlZCBpbiB0aGUgQVZTNkVZRVMgY2FyZCBhbmQKK2NhbiBoYW5kbGU6IE5UU0MtTS9OLzQ0LCBQQUwtTS9OL0IvRy9IL0kvRC9LL0wgYW5kIFNFQ0FNCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisxLjIgV2hhdCB0aGUgVFYgZW5jb2RlciBjYW4gZG8gYW4gd2hhdCBub3QKKworVGhlIFRWIGVuY29kZXIgYXJlIGRvaW5nIHRoZSAic2FtZSIgYXMgdGhlIGRlY29kZXIsIGJ1dCBpbiB0aGUgb2RlciBkaXJlY3Rpb24uCitZb3UgZmVlZCB0aGVtIGRpZ2l0YWwgZGF0YSBhbmQgdGhlIGdlbmVyYXRlIGEgQ29tcG9zaXRlIG9yIFNWSFMgc2lnbmFsLgorRm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb2xvcnN5c3RlbXMgYW5kIFRWIG5vcm0gdGFrZSBhIGxvb2sgaW4gdGhlCitUViBkZWNvZGVyIHNlY3Rpb24uCisKK1BoaWxpcHMgc2FhNzE4NSBUViBFbmNvZGVyCit3YXMgaW50cm9kdWNlZCBpbiAxOTk2LCBpcyB1c2VkIGluIHRoZSBCVVoKK2NhbiBnZW5lcmF0ZTogUEFMIEIvRywgTlRTQyBNCisKK0Jyb29rdHJlZSBidDg1NiBUViBFbmNvZGVyCit3YXMgaW50cm9kdWNlZCBpbiAxOTk0LCBpcyB1c2VkIGluIHRoZSBMTUwzMworY2FuIGdlbmVyYXRlOiBQQUwgQi9EL0cvSC9JL04sIFBBTCBNLCBOVFNDIE0sIFBBTC1OIChBcmdlbnRpbmEpCisKK0FuYWxvZyBEZXZpY2VzIGFkdjcxNzAgVFYgRW5jb2Rlcgord2FzIGludHJvZHVjZWQgaW4gMjAwMCwgaXMgdXNlZCBpbiB0aGUgTE1MMzAwUjEwCitjYW4gZ2VuZXJhdGU6IFBBTCBCL0QvRy9IL0kvTiwgUEFMIE0sIE5UU0MgTSwgUEFMIDYwCisKK0FuYWxvZyBEZXZpY2VzIGFkdjcxNzUgVFYgRW5jb2Rlcgord2FzIGludHJvZHVjZWQgaW4gMTk5NiwgaXMgdXNlZCBpbiB0aGUgREMxMCwgREMxMCssIERDMTAgb2xkLCBEQzMwLCBEQzMwKworY2FuIGdlbmVyYXRlOiBQQUwgQi9EL0cvSC9JL04sIFBBTCBNLCBOVFNDIE0KKworSVRUIG1zZTMwMDAgVFYgZW5jb2Rlcgord2FzIGludHJvZHVjZWQgaW4gMTk5MSwgaXMgdXNlZCBpbiB0aGUgREMxMCBvbGQKK2NhbiBnZW5lcmF0ZTogUEFMICwgTlRTQyAsIFNFQ0FNCisKK0NvbmV4YW50IGJ0ODY2IFRWIGVuY29kZXIKK2lzIHVzZWQgaW4gQVZTNkVZRVMsIGFuZAorY2FuIGdlbmVyYXRlOiBOVFNDL1BBTCwgUEFMwq1NLCBQQUzCrU4KKworVGhlIGFkdjcxN3gsIHNob3VsZCBiZSBhYmxlIHRvIHByb2R1Y2UgUEFMIE4uIEJ1dCB5b3UgZmluZCBub3RoaW5nIFBBTCBOCitzcGVjaWZpYyBpbiB0aGUgcmVnaXN0ZXJzLiBTZWVtIHRoYXQgeW91IGhhdmUgdG8gcmV1c2UgYSBvdGhlciBzdGFuZGFyZAordG8gZ2VuZXJhdGUgUEFMIE4sIG1heWJlIGl0IHdvdWxkIHdvcmsgaWYgeW91IHVzZSB0aGUgUEFMIE0gc2V0dGluZ3MuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzIuIEhvdyBkbyBJIGdldCB0aGlzIGRhbW4gdGhpbmcgdG8gd29yaworCitMb2FkIHpyMzYwNjcuby4gSWYgaXQgY2FuJ3QgYXV0b2RldGVjdCB5b3VyIGNhcmQsIHVzZSB0aGUgY2FyZD1YIGluc21vZAorb3B0aW9uIHdpdGggWCBiZWluZyB0aGUgY2FyZCBudW1iZXIgYXMgZ2l2ZW4gaW4gdGhlIHByZXZpb3VzIHNlY3Rpb24uCitUbyBoYXZlIG1vcmUgdGhhbiBvbmUgY2FyZCwgdXNlIGNhcmQ9WDFbLFgyWyxYMyxbWDRbLi5dXV1dCisKK1RvIGF1dG9tYXRlIHRoaXMsIGFkZCB0aGUgZm9sbG93aW5nIHRvIHlvdXIgL2V0Yy9tb2Rwcm9iZS5kL3pvcmFuLmNvbmY6CisKK29wdGlvbnMgenIzNjA2NyBjYXJkPVgxWyxYMlssWDNbLFg0Wy4uXV1dXQorYWxpYXMgY2hhci1tYWpvci04MS0wIHpyMzYwNjcKKworT25lIHRoaW5nIHRvIGtlZXAgaW4gbWluZCBpcyB0aGF0IHRoaXMgZG9lc24ndCBsb2FkIHpyMzYwNjcubyBpdHNlbGYgeWV0LiBJdAoranVzdCBhdXRvbWF0ZXMgbG9hZGluZy4gSWYgeW91IHN0YXJ0IHVzaW5nIHhhd3R2LCB0aGUgZGV2aWNlIHdvbid0IGxvYWQgb24KK3NvbWUgc3lzdGVtcywgc2luY2UgeW91J3JlIHRyeWluZyB0byBsb2FkIG1vZHVsZXMgYXMgYSB1c2VyLCB3aGljaCBpcyBub3QKK2FsbG93ZWQgKCJwZXJtaXNzaW9uIGRlbmllZCIpLiBBIHF1aWNrIHdvcmthcm91bmQgaXMgdG8gYWRkICdMb2FkICJ2NGwiJyB0bworWEY4NkNvbmZpZy00IHdoZW4geW91IHVzZSBYIGJ5IGRlZmF1bHQsIG9yIHRvIHJ1biAndjRsLWNvbmYgLWMgPGRldmljZT4nIGluCitvbmUgb2YgeW91ciBzdGFydHVwIHNjcmlwdHMgKG5vcm1hbGx5IHJjLmxvY2FsKSBpZiB5b3UgZG9uJ3QgdXNlIFguIEJvdGgKK21ha2Ugc3VyZSB0aGF0IHRoZSBtb2R1bGVzIGFyZSBsb2FkZWQgb24gc3RhcnR1cCwgdW5kZXIgdGhlIHJvb3QgYWNjb3VudC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzMuIFdoYXQgbWFpbmJvYXJkIHNob3VsZCBJIHVzZSAob3Igd2h5IGRvZXNuJ3QgbXkgY2FyZCB3b3JrKQorCis8aW5zZXJ0IGxvdXN5IGRpc2NsYWltZXIgaGVyZT4uIEluIHNob3J0OiBnb29kPVNpUy9JbnRlbCwgYmFkPVZJQS4KKworRXhwZXJpZW5jZSB0ZWxscyB1cyB0aGF0IHBlb3BsZSB3aXRoIGEgQnV6LCBvbiBhdmVyYWdlLCBoYXZlIG1vcmUgcHJvYmxlbXMKK3RoYW4gdXNlcnMgd2l0aCBhIERDMTArL0xNTDMzLiBBbHNvLCBpdCB0ZWxscyB1cyB0aGF0IHBlb3BsZSBvd25pbmcgYSBWSUEtCitiYXNlZCBtYWluYm9hcmQgKGt0WFhYLCBNVlAzKSBoYXZlIG1vcmUgcHJvYmxlbXMgdGhhbiB1c2VycyB3aXRoIGEgbWFpbmJvYXJkCitiYXNlZCBvbiBhIGRpZmZlcmVudCBjaGlwc2V0LiBIZXJlJ3Mgc29tZSBub3RlcyBmcm9tIEFuZHJldyBTdGV2ZW5zOgorLS0KK0hlcmUncyBteSBleHBlcmllbmNlIG9mIHVzaW5nIExNTDMzIGFuZCBCdXogb24gdmFyaW91cyBtb3RoZXJib2FyZHM6CisKK1ZJQSBNVlAzCisJRm9yZ2V0IGl0LiBQb2ludGxlc3MuIERvZXNuJ3Qgd29yay4KK0ludGVsIDQzMEZYIChQZW50aXVtIDIwMCkKKwlMTUwzMyBwZXJmZWN0LCBCdXogdG9sZXJhYmxlICgzIG9yIDQgZnJhbWVzIGRyb3BwZWQgcGVyIG1vdmllKQorSW50ZWwgNDQwQlggKGVhcmx5IHN0ZXBwaW5nKQorCUxNTDMzIHRvbGVyYWJsZS4gQnV6IHN0YXJ0aW5nIHRvIGdldCBhbm5veWluZyAoNi0xMCBmcmFtZXMvaG91cikKK0ludGVsIDQ0MEJYIChsYXRlIHN0ZXBwaW5nKQorCUJ1eiB0b2xlcmFibGUsIExNTDMgYWxtb3N0IHBlcmZlY3QgKG9jY2FzaW9uYWwgc2luZ2xlIGZyYW1lIGRyb3BzKQorU2lTNzM1CisJTE1MMzMgcGVyZmVjdCwgQnV6IHRvbGVyYWJsZS4KK1ZJQSBLVDEzMygqKQorCUxNTDMzIHN0YXJ0aW5nIHRvIGdldCBhbm5veWluZywgQnV6IHBvb3IgZW5vdWdoIHRoYXQgSSBoYXZlIHVwLgorCitCb3RoIDQ0MEJYIGJvYXJkcyB3ZXJlIGR1YWwgQ1BVIHZlcnNpb25zLgorLS0KK0Jlcm5oYXJkIFByYXNjaGluZ2VyIGxhdGVyIGFkZGVkOgorLS0KK0FNRCA3NTEKKwlCdXogcGVyZmVjdC10b2xlcmFibGUKK0FNRCA3NjAKKwlCdXogcGVyZmVjdC10b2xlcmFibGUKKy0tCitJbiBnZW5lcmFsLCBwZW9wbGUgb24gdGhlIHVzZXIgbWFpbGluZ2xpc3Qgd29uJ3QgZ2l2ZSB5b3UgbXVjaCBvZiBhIGNoYW5jZQoraWYgeW91IGhhdmUgYSBWSUEtYmFzZWQgbW90aGVyYm9hcmQuIFRoZXkgbWF5IGJlIGNoZWFwLCBidXQgc29tZXRpbWVzLCB5b3UnZAorcmF0aGVyIHdhbnQgdG8gc3BlbmQgc29tZSBtb3JlIG1vbmV5IG9uIGJldHRlciBib2FyZHMuIEluIGdlbmVyYWwsIFZJQQorbWFpbmJvYXJkJ3MgSURFL1BDSSBwZXJmb3JtYW5jZSB3aWxsIGFsc28gc3VjayBiYWRseSBjb21wYXJlZCB0byBvdGhlcnMuCitZb3UnbGwgbm90aWNlZCB0aGUgREMxMCsvREMzMCsgYXJlbid0IG1lbnRpb25lZCBhbnl3aGVyZSBpbiB0aGUgb3ZlcnZpZXcuCitCYXNpY2FsbHksIHlvdSBjYW4gYXNzdW1lIHRoYXQgaWYgdGhlIEJ1eiB3b3JrcywgdGhlIExNTDMzIHdpbGwgd29yayB0b28uIElmCit0aGUgTE1MMzMgd29ya3MsIHRoZSBEQzEwKy9EQzMwKyB3aWxsIHdvcmsgdG9vLiBUaGV5J3JlIG1vc3QgdG9sZXJhbnQgdG8KK2RpZmZlcmVudCBtYWluYm9hcmQgY2hpcHNldHMgZnJvbSBhbGwgb2YgdGhlIHN1cHBvcnRlZCBjYXJkcy4KKworSWYgeW91IGV4cGVyaWVuY2UgdGltZW91dHMgZHVyaW5nIGNhcHR1cmUsIGJ1eSBhIGJldHRlciBtYWluYm9hcmQgb3IgbG93ZXIKK3RoZSBxdWFsaXR5L2J1ZmZlcnNpemUgZHVyaW5nIGNhcHR1cmUgKHNlZSAnQ29uY2VybmluZyBidWZmZXIgc2l6ZXMsIHF1YWxpdHksCitvdXRwdXQgc2l6ZSBldGMuJykuIElmIGl0IGhhbmdzLCB0aGVyZSdzIGxpdHRsZSB3ZSBjYW4gZG8gYXMgb2Ygbm93LiBDaGVjaworeW91ciBJUlFzIGFuZCBtYWtlIHN1cmUgdGhlIGNhcmQgaGFzIGl0cyBvd24gaW50ZXJydXB0cy4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzQuIFByb2dyYW1taW5nIGludGVyZmFjZQorCitUaGlzIGRyaXZlciBjb25mb3JtcyB0byB2aWRlbzRsaW51eDIuIFN1cHBvcnQgZm9yIFY0TDEgYW5kIGZvciB0aGUgY3VzdG9tCit6b3JhbiBpb2N0bHMgaGFzIGJlZW4gcmVtb3ZlZCBpbiBrZXJuZWwgMi42LjM4LgorCitGb3IgcHJvZ3JhbW1pbmcgZXhhbXBsZSwgcGxlYXNlLCBsb29rIGF0IGxhdnJlYy5jIGFuZCBsYXZwbGF5LmMgY29kZSBpbgordGhlIE1KUEVHLXRvb2xzIChodHRwOi8vbWpwZWcuc2YubmV0LykuCisKK0FkZGl0aW9uYWwgbm90ZXMgZm9yIHNvZnR3YXJlIGRldmVsb3BlcnM6CisKKyAgIFRoZSBkcml2ZXIgcmV0dXJucyBtYXh3aWR0aCBhbmQgbWF4aGVpZ2h0IHBhcmFtZXRlcnMgYWNjb3JkaW5nIHRvCisgICB0aGUgY3VycmVudCBUViBzdGFuZGFyZCAobm9ybSkuIFRoZXJlZm9yZSwgdGhlIHNvZnR3YXJlIHdoaWNoCisgICBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgZHJpdmVyIGFuZCAiYXNrcyIgZm9yIHRoZXNlIHBhcmFtZXRlcnMgc2hvdWxkCisgICBmaXJzdCBzZXQgdGhlIGNvcnJlY3Qgbm9ybS4gV2VsbCwgaXQgc2VlbXMgbG9naWNhbGx5IGNvcnJlY3Q6IFRWCisgICBzdGFuZGFyZCBpcyAibW9yZSBjb25zdGFudCIgZm9yIGN1cnJlbnQgY291bnRyeSB0aGFuIGdlb21ldHJ5CisgICBzZXR0aW5ncyBvZiBhIHZhcmlldHkgb2YgVFYgY2FwdHVyZSBjYXJkcyB3aGljaCBtYXkgd29yayBpbiBJVFUgb3IKKyAgIHNxdWFyZSBwaXhlbCBmb3JtYXQuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCis1LiBBcHBsaWNhdGlvbnMKKworQXBwbGljYXRpb25zIGtub3duIHRvIHdvcmsgd2l0aCB0aGlzIGRyaXZlcjoKKworVFYgdmlld2luZzoKKyogeGF3dHYKKyoga3dpbnR2CisqIHByb2JhYmx5IGFueSBUViBhcHBsaWNhdGlvbiB0aGF0IHN1cHBvcnRzIHZpZGVvNGxpbnV4IG9yIHZpZGVvNGxpbnV4Mi4KKworTUpQRUcgY2FwdHVyZS9wbGF5YmFjazoKKyogbWpwZWd0b29scy9sYXZ0b29scyAob3IgTGludXggVmlkZW8gU3R1ZGlvKQorKiBnc3RyZWFtZXIKKyogbXBsYXllcgorCitHZW5lcmFsIHJhdyBjYXB0dXJlOgorKiB4YXd0dgorKiBnc3RyZWFtZXIKKyogcHJvYmFibHkgYW55IGFwcGxpY2F0aW9uIHRoYXQgc3VwcG9ydHMgdmlkZW80bGludXggb3IgdmlkZW80bGludXgyCisKK1ZpZGVvIGVkaXRpbmc6CisqIENpbmVsZXJyYQorKiBNYWluQWN0b3IKKyogbWpwZWd0b29scyAob3IgTGludXggVmlkZW8gU3R1ZGlvKQorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworNi4gQ29uY2VybmluZyBidWZmZXIgc2l6ZXMsIHF1YWxpdHksIG91dHB1dCBzaXplIGV0Yy4KKworVGhlIHpyMzYwNjAgY2FuIGRvIDE6MiBKUEVHIGNvbXByZXNzaW9uLiBUaGlzIGlzIHJlYWxseSB0aGUgdGhlb3JldGljYWwKK21heGltdW0gdGhhdCB0aGUgY2hpcHNldCBjYW4gcmVhY2guIFRoZSBkcml2ZXIgY2FuLCBob3dldmVyLCBsaW1pdCBjb21wcmVzc2lvbgordG8gYSBtYXhpbXVtIChzaXplKSBvZiAxOjQuIFRoZSByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCBzb21lIGNhcmRzIChlLmcuIEJ1eikKK2Nhbid0IGhhbmRsZSAxOjIgY29tcHJlc3Npb24gd2l0aG91dCBzdG9wcGluZyBjYXB0dXJlIGFmdGVyIG9ubHkgYSBmZXcgbWludXRlcy4KK1dpdGggMTo0LCBpdCdsbCBtb3N0bHkgd29yay4gSWYgeW91IGhhdmUgYSBCdXosIHVzZSAnbG93X2JpdHJhdGU9MScgdG8gZ28gaW50bworMTo0IG1heC4gY29tcHJlc3Npb24gbW9kZS4KKworMTAwJSBKUEVHIHF1YWxpdHkgaXMgdGh1cyAxOjIgY29tcHJlc3Npb24gaW4gcHJhY3RpY2UuIFNvIGZvciBhIGZ1bGwgUEFMIGZyYW1lCisoc2l6ZSA3MjB4NTc2KS4gVGhlIEpQRUcgZmllbGRzIGFyZSBzdG9yZWQgaW4gWVVZMiBmb3JtYXQsIHNvIHRoZSBzaXplIG9mIHRoZQorZmllbGRzIGFyZSA3MjB4Mjg4eDE2LzIgYml0cy9maWVsZCAoMiBmaWVsZHMvZnJhbWUpID0gMjA3MzYwIGJ5dGVzL2ZpZWxkIHggMiA9Cis0MTQ3MjAgYnl0ZXMvZnJhbWUgKGFkZCBzb21lIG1vcmUgYnl0ZXMgZm9yIGhlYWRlcnMgYW5kIERIVCAoaHVmZm1hbikvRFFUCisocXVhbnRpemF0aW9uKSB0YWJsZXMsIGFuZCB5b3UnbGwgZ2V0IHRvIHNvbWV0aGluZyBsaWtlIDUxMmtCIHBlciBmcmFtZSBmb3IKKzE6MiBjb21wcmVzc2lvbi4gRm9yIDE6NCBjb21wcmVzc2lvbiwgeW91J2QgaGF2ZSBmcmFtZXMgb2YgaGFsZiB0aGlzIHNpemUuCisKK1NvbWUgYWRkaXRpb25hbCBleHBsYW5hdGlvbiBieSBNYXJ0aW4gU2FtdWVsc3Nvbiwgd2hpY2ggYWxzbyBleHBsYWlucyB0aGUKK2ltcG9ydGFuY2Ugb2YgYnVmZmVyIHNpemVzOgorLS0KKz4gSG1tLCBJIGRvIG5vdCB0aGluayBpdCBpcyByZWFsbHkgdGhhdCB3YXkuIFdpdGggdGhlIGN1cnJlbnQgKGRvd25sb2FkZWQKKz4gYXQgMTg6MDAgTW9uZGF5KSBkcml2ZXIgSSBnZXQgdGhhdCBvdXRwdXQgc2l6ZXMgZm9yIDEwIHNlYzoKKz4gLXEgNTAgLWIgMTI4IDogMjQuMjgzLjMzMiBCeXRlcworPiAtcSA1MCAtYiAyNTYgOiA0OC40NDIuMzY4Cis+IC1xIDI1IC1iIDEyOCA6IDI0LjY1NS45OTIKKz4gLXEgMjUgLWIgMjU2IDogMjUuODU5LjgyMAorCitJIHdva2UgdXAsIGFuZCBjYW4ndCBnbyB0byBzbGVlcCBhZ2Fpbi4gSSdsbCBraWxsIHNvbWUgdGltZSBleHBsYWluaW5nIHdoeQordGhpcyBkb2Vzbid0IGxvb2sgc3RyYW5nZSB0byBtZS4KKworTGV0J3MgZG8gc29tZSBtYXRoIHVzaW5nIGEgd2lkdGggb2YgNzA0IHBpeGVscy4gSSdtIG5vdCBzdXJlIHdoZXRoZXIgdGhlIEJ1egorYWN0dWFsbHkgdXNlIHRoYXQgbnVtYmVyIG9yIG5vdCwgYnV0IHRoYXQncyBub3QgdG9vIGltcG9ydGFudCByaWdodCBub3cuCisKKzcwNHgyODggcGl4ZWxzLCBvbmUgZmllbGQsIGlzIDIwMjc1MiBwaXhlbHMuIERpdmlkZWQgYnkgNjQgcGl4ZWxzIHBlciBibG9jazsKKzMxNjggYmxvY2tzIHBlciBmaWVsZC4gRWFjaCBwaXhlbCBjb25zaXN0IG9mIHR3byBieXRlczsgMTI4IGJ5dGVzIHBlciBibG9jazsKKzEwMjQgYml0cyBwZXIgYmxvY2suIDEwMCUgaW4gdGhlIG5ldyBkcml2ZXIgbWVhbiAxOjIgY29tcHJlc3Npb247IHRoZSBtYXhpbXVtCitvdXRwdXQgYmVjb21lcyA1MTIgYml0cyBwZXIgYmxvY2suIEFjdHVhbGx5IDUxMCwgYnV0IDUxMiBpcyBzaW1wbGVyIHRvIHVzZQorZm9yIGNhbGN1bGF0aW9ucy4KKworTGV0J3Mgc2F5IHRoYXQgd2Ugc3BlY2lmeSBkMXE1MC4gV2UgdGh1cyB3YW50IDI1NiBiaXRzIHBlciBibG9jazsgdGltZXMgMzE2OAorYmVjb21lcyA4MTEwMDggYml0czsgMTAxMzc2IGJ5dGVzIHBlciBmaWVsZC4gV2UncmUgdGFsa2luZyByYXcgYml0cyBhbmQgYnl0ZXMKK2hlcmUsIHNvIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55IGZhbmN5IGNvcnJlY3Rpb25zIGZvciBiaXRzLXBlci1waXhlbCBvciBzdWNoCit0aGluZ3MuIDEwMTM3NiBieXRlcyBwZXIgZmllbGQuCisKK2QxIHZpZGVvIGNvbnRhaW5zIHR3byBmaWVsZHMgcGVyIGZyYW1lLiBUaG9zZSBzdW0gdXAgdG8gMjAyNzUyIGJ5dGVzIHBlcgorZnJhbWUsIGFuZCBvbmUgb2YgdGhvc2UgZnJhbWVzIGdvZXMgaW50byBlYWNoIGJ1ZmZlci4KKworQnV0IHdhaXQgYSBzZWNvbmQhIC1iMTI4IGdpdmVzIDEyOGtCIGJ1ZmZlcnMhIEl0J3Mgbm90IHBvc3NpYmxlIHRvIGNyYW0KKzIwMjc1MiBieXRlcyBvZiBKUEVHIGRhdGEgaW50byAxMjhrQiEKKworVGhpcyBpcyB3aGF0IHRoZSBkcml2ZXIgbm90aWNlIGFuZCBhdXRvbWF0aWNhbGx5IGNvbXBlbnNhdGUgZm9yIGluIHlvdXIKK2V4YW1wbGVzLiBMZXQncyBkbyBzb21lIG1hdGggdXNpbmcgdGhpcyBpbmZvcm1hdGlvbjoKKworMTI4a0IgaXMgMTMxMDcyIGJ5dGVzLiBJbiB0aGlzIGJ1ZmZlciwgd2Ugd2FudCB0byBzdG9yZSB0d28gZmllbGRzLCB3aGljaAorbGVhdmVzIDY1NTM2IGJ5dGVzIGZvciBlYWNoIGZpZWxkLiBVc2luZyAzMTY4IGJsb2NrcyBwZXIgZmllbGQsIHdlIGdldAorMjAuNjg2ODY4NjguLi4gYXZhaWxhYmxlIGJ5dGVzIHBlciBibG9jazsgMTY1IGJpdHMuIFdlIGNhbid0IGFsbG93IHRoZQorcmVxdWVzdCBmb3IgMjU2IGJpdHMgcGVyIGJsb2NrIHdoZW4gdGhlcmUncyBvbmx5IDE2NSBiaXRzIGF2YWlsYWJsZSEgVGhlIC1xNTAKK29wdGlvbiBpcyBzaWxlbnRseSBvdmVycmlkZGVuLCBhbmQgdGhlIC1iMTI4IG9wdGlvbiB0YWtlcyBwcmVjZWRlbmNlLCBsZWF2aW5nCit1cyB3aXRoIHRoZSBlcXVpdmFsZW5jZSBvZiAtcTMyLgorCitUaGlzIGdpdmVzIHVzIGEgZGF0YSByYXRlIG9mIDE2NSBiaXRzIHBlciBibG9jaywgd2hpY2gsIHRpbWVzIDMxNjgsIHN1bXMgdXAKK3RvIDY1MzQwIGJ5dGVzIHBlciBmaWVsZCwgb3V0IG9mIHRoZSBhbGxvd2VkIDY1NTM2LiBUaGUgY3VycmVudCBkcml2ZXIgaGFzCithbm90aGVyIGxldmVsIG9mIHJhdGUgbGltaXRpbmc7IGl0IHdvbid0IGFjY2VwdCAtcSB2YWx1ZXMgdGhhdCBmaWxsIG1vcmUgdGhhbgorNi84IG9mIHRoZSBzcGVjaWZpZWQgYnVmZmVycy4gKEknbSBub3Qgc3VyZSB3aHkuICJQbGF5aW5nIGl0IHNhZmUiIHNlZW0gdG8gYmUKK2Egc2FmZSBiZXQuIFBlcnNvbmFsbHksIEkgdGhpbmsgSSB3b3VsZCBoYXZlIGxvd2VyZWQgcmVxdWVzdGVkLWJpdHMtcGVyLWJsb2NrCitieSBvbmUsIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQuKSBXZSBjYW4ndCB1c2UgMTY1IGJpdHMgcGVyIGJsb2NrLCBidXQgaGF2ZSB0bworbG93ZXIgaXQgYWdhaW4sIHRvIDYvOCBvZiB0aGUgYXZhaWxhYmxlIGJ1ZmZlciBzcGFjZTogV2UgZW5kIHVwIHdpdGggMTI0IGJpdHMKK3BlciBibG9jaywgdGhlIGVxdWl2YWxlbmNlIG9mIC1xMjQuIFdpdGggMTI4a0IgYnVmZmVycywgeW91IGNhbid0IHVzZSBncmVhdGVyCit0aGFuIC1xMjQgYXQgLWQxLiAoQW5kIFBBTCwgYW5kIDcwNCBwaXhlbHMgd2lkdGguLi4pCisKK1RoZSB0aGlyZCBleGFtcGxlIGlzIGxpbWl0ZWQgdG8gLXEyNCB0aHJvdWdoIHRoZSBzYW1lIHByb2Nlc3MuIFRoZSBzZWNvbmQKK2V4YW1wbGUsIHVzaW5nIHZlcnkgc2ltaWxhciBjYWxjdWxhdGlvbnMsIGlzIGxpbWl0ZWQgdG8gLXE0OC4gVGhlIG9ubHkKK2V4YW1wbGUgdGhhdCBhY3R1YWxseSBncmFiIGF0IHRoZSBzcGVjaWZpZWQgLXEgdmFsdWUgaXMgdGhlIGxhc3Qgb25lLCB3aGljaAoraXMgY2xlYXJseSB2aXNpYmxlLCBsb29raW5nIGF0IHRoZSBmaWxlIHNpemUuCistLQorCitDb25jbHVzaW9uOiB0aGUgcXVhbGl0eSBvZiB0aGUgcmVzdWx0aW5nIG1vdmllIGRlcGVuZHMgb24gYnVmZmVyIHNpemUsIHF1YWxpdHksCit3aGV0aGVyIG9yIG5vdCB5b3UgdXNlICdsb3dfYml0cmF0ZT0xJyBhcyBpbnNtb2Qgb3B0aW9uIGZvciB0aGUgenIzNjA2MC5jCittb2R1bGUgdG8gZG8gMTo0IGluc3RlYWQgb2YgMToyIGNvbXByZXNzaW9uLCBldGMuCisKK0lmIHlvdSBleHBlcmllbmNlIHRpbWVvdXRzLCBsb3dlcmluZyB0aGUgcXVhbGl0eS9idWZmZXJzaXplIG9yIHVzaW5nCisnbG93X2JpdHJhdGU9MSBhcyBpbnNtb2Qgb3B0aW9uIGZvciB6cjM2MDYwLm8gbWlnaHQgYWN0dWFsbHkgaGVscCwgYXMgaXMKK3Byb3ZlbiBieSB0aGUgQnV6LgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworNy4gSXQgaGFuZ3MvY3Jhc2hlcy9mYWlscy93aGF0ZXZlcnMhIEhlbHAhCisKK01ha2Ugc3VyZSB0aGF0IHRoZSBjYXJkIGhhcyBpdHMgb3duIGludGVycnVwdHMgKHNlZSAvcHJvYy9pbnRlcnJ1cHRzKSwgY2hlY2sKK3RoZSBvdXRwdXQgb2YgZG1lc2cgYXQgaGlnaCB2ZXJib3NpdHkgKGxvYWQgenIzNjA2Ny5vIHdpdGggZGVidWc9MiwKK2xvYWQgYWxsIG90aGVyIG1vZHVsZXMgd2l0aCBkZWJ1Zz0xKS4gQ2hlY2sgdGhhdCB5b3VyIG1haW5ib2FyZCBpcyBmYXZvcmFibGUKKyhzZWUgcXVlc3Rpb24gMikgYW5kIGlmIG5vdCwgdGVzdCB0aGUgY2FyZCBpbiBhbm90aGVyIGNvbXB1dGVyLiBBbHNvIHNlZSB0aGUKK25vdGVzIGdpdmVuIGluIHF1ZXN0aW9uIDMgYW5kIHRyeSBsb3dlcmluZyBxdWFsaXR5L2J1ZmZlcnNpemUvY2FwdHVyZXNpemUKK2lmIHJlY29yZGluZyBmYWlscyBhZnRlciBhIHBlcmlvZCBvZiB0aW1lLgorCitJZiBhbGwgdGhpcyBkb2Vzbid0IGhlbHAsIGdpdmUgYSBjbGVhciBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvYmxlbSBpbmNsdWRpbmcKK2RldGFpbGVkIGhhcmR3YXJlIGluZm9ybWF0aW9uIChtZW1vcnkrYnJhbmQsIG1haW5ib2FyZCtjaGlwc2V0K2JyYW5kLCB3aGljaAorTUpQRUcgY2FyZCwgcHJvY2Vzc29yLCBvdGhlciBQQ0kgY2FyZHMgdGhhdCBtaWdodCBiZSBvZiBpbnRlcmVzdCksIGdpdmUgdGhlCitzeXN0ZW0gUG5QIGluZm9ybWF0aW9uICgvcHJvYy9pbnRlcnJ1cHRzLCAvcHJvYy9kbWEsIC9wcm9jL2RldmljZXMpLCBhbmQgZ2l2ZQordGhlIGtlcm5lbCB2ZXJzaW9uLCBkcml2ZXIgdmVyc2lvbiwgZ2xpYmMgdmVyc2lvbiwgZ2NjIHZlcnNpb24gYW5kIGFueSBvdGhlcgoraW5mb3JtYXRpb24gdGhhdCBtaWdodCBwb3NzaWJseSBiZSBvZiBpbnRlcmVzdC4gQWxzbyBwcm92aWRlIHRoZSBkbWVzZyBvdXRwdXQKK2F0IGhpZ2ggdmVyYm9zaXR5LiBTZWUgJ0NvbnRhY3RpbmcnIG9uIGhvdyB0byBjb250YWN0IHRoZSBkZXZlbG9wZXJzLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworOC4gTWFpbnRhaW5lcnMvQ29udGFjdGluZworCitUaGUgZHJpdmVyIGlzIGN1cnJlbnRseSBtYWludGFpbmVkIGJ5IExhdXJlbnQgUGluY2hhcnQgYW5kIFJvbmFsZCBCdWx0amUKKyg8bGF1cmVudC5waW5jaGFydEBza3luZXQuYmU+IGFuZCA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PikuIEZvciBidWcKK3JlcG9ydHMgb3IgcXVlc3Rpb25zLCBwbGVhc2UgY29udGFjdCB0aGUgbWFpbGluZ2xpc3QgaW5zdGVhZCBvZiB0aGUgZGV2ZWxvcGVycworaW5kaXZpZHVhbGx5LiBGb3IgdXNlciBxdWVzdGlvbnMgKGkuZS4gYnVnIHJlcG9ydHMgb3IgaG93LXRvIHF1ZXN0aW9ucyksIHNlbmQKK2FuIGVtYWlsIHRvIDxtanBlZy11c2Vyc0BsaXN0cy5zZi5uZXQ+LCBmb3IgZGV2ZWxvcGVycyAoaS5lLiBpZiB5b3Ugd2FudCB0bworaGVscCBwcm9ncmFtbWluZyksIHNlbmQgYW4gZW1haWwgdG8gPG1qcGVnLWRldmVsb3BlckBsaXN0cy5zZi5uZXQ+LiBTZWUKK2h0dHA6Ly93d3cuc2YubmV0L3Byb2plY3RzL21qcGVnLyBmb3Igc3Vic2NyaXB0aW9uIGluZm9ybWF0aW9uLgorCitGb3IgYnVnIHJlcG9ydHMsIGJlIHN1cmUgdG8gaW5jbHVkZSBhbGwgdGhlIGluZm9ybWF0aW9uIGFzIGRlc2NyaWJlZCBpbgordGhlIHNlY3Rpb24gJ0l0IGhhbmdzL2NyYXNoZXMvZmFpbHMvd2hhdGV2ZXJzISBIZWxwIScuIFBsZWFzZSBtYWtlIHN1cmUKK3lvdSdyZSB1c2luZyB0aGUgbGF0ZXN0IHZlcnNpb24gKGh0dHA6Ly9tanBlZy5zZi5uZXQvZHJpdmVyLXpvcmFuLykuCisKK1ByZXZpb3VzIG1haW50YWluZXJzL2RldmVsb3BlcnMgb2YgdGhpcyBkcml2ZXIgaW5jbHVkZSBTZXJndWVpIE1pcmlkb25vdgorPG1pcnNldkBjaWNlc2UubXg+LCBXb2xmZ2FuZyBTY2hlcnIgPHNjaGVyckBuZXQ0eW91Lm5ldD4sIERhdmUgUGVya3MKKzxkcGVya3NAaWJtLm5ldD4gYW5kIFJhaW5lciBKb2hhbm5pIDxSYWluZXJASm9oYW5uaS5kZT4uCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorCis5LiBMaWNlbnNlCisKK1RoaXMgZHJpdmVyIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KKworICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorCitTZWUgaHR0cDovL3d3dy5nbnUub3JnLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9DT05UUklCVVRPUlMgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvQ09OVFJJQlVUT1JTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViNDFiMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvQ09OVFJJQlVUT1JTCkBAIC0wLDAgKzEsMjUgQEAKK0NvbnRyaWJ1dG9ycyB0byBidHR2OgorCitNaWNoYWVsIENodSA8bW1jaHVAcG9ib3guY29tPgorICBBdmVyTWVkaWEgZml4IGFuZCBtb3JlIGZsZXhpYmxlIGNhcmQgcmVjb2duaXRpb24KKworQWxhbiBDb3ggPGFsYW5AbHhvcmd1ay51a3V1Lm9yZy51az4KKyAgVmlkZW80TGludXggaW50ZXJmYWNlIGFuZCAyLjEueCBrZXJuZWwgYWRhcHRhdGlvbgorCitDaHJpcyBLbGVpdHNjaAorICBIYXJkd2FyZSBJMkMKKworR2VyZCBLbm9yciA8a3JheGVsQGNzLnR1LWJlcmxpbi5kZT4KKyAgUmFkaW8gY2FyZCAoSVRUIHNvdW5kIHByb2Nlc3NvcikKKworYmlnZm9vdCA8YmlnZm9vdEBuZXQtd2F5Lm5ldD4KK1JhZ25hciBIb2psYW5kIEVzcGlub3NhIDxyYWduYXJAbWFjdWxhLm5ldD4KKyAgQ29uZmVyZW5jZVRWIGNhcmQKKworCisrIG1hbnkgbW9yZSAocGxlYXNlIG1haWwgbWUgaWYgeW91IGFyZSBtaXNzaW5nIGluIHRoaXMgbGlzdCBhbmQgd291bGQKKwkgICAgIGxpa2UgdG8gYmUgbWVudGlvbmVkKQorCisKKworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvQ2FyZHMgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvQ2FyZHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThmYjZlMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9DYXJkcwpAQCAtMCwwICsxLDk2MCBAQAorCitHdW50aGVyIE1heWVyJ3MgYnR0diBjYXJkIGdhbGxlcnkgKGdyYXBoaWNhbCB2ZXJzaW9uIG9mIHRoaXMgdGV4dCBmaWxlIDotKQoraXMgYXZhaWxhYmxlIGF0OiBodHRwOi8vd3d3LmJ0dHYtZ2FsbGVyeS5kZS8KKworCitTdXBwb3J0ZWQgY2FyZHM6CitCdDg0OC9CdDg0OGEvQnQ4NDkvQnQ4NzgvQnQ4NzkgY2FyZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbGwgY2FyZHMgd2l0aCBCdDg0OC9CdDg0OGEvQnQ4NDkvQnQ4NzgvQnQ4NzkgYW5kIG5vcm1hbAorQ29tcG9zaXRlL1MtVkhTIGlucHV0cyBhcmUgc3VwcG9ydGVkLiAgVGVsZXRleHQgYW5kIEludGVyY2FzdCBzdXBwb3J0CisoUEFMIG9ubHkpIGZvciBBTEwgY2FyZHMgdmlhIFZCSSBzYW1wbGUgZGVjb2RpbmcgaW4gc29mdHdhcmUuCisKK1NvbWUgY2FyZHMgd2l0aCBhZGRpdGlvbmFsIG11bHRpcGxleGluZyBvZiBpbnB1dHMgb3Igb3RoZXIgYWRkaXRpb25hbAorZmFuY3kgY2hpcHMgYXJlIG9ubHkgcGFydGlhbGx5IHN1cHBvcnRlZCAodW5sZXNzIHNwZWNpZmljYXRpb25zIGJ5IHRoZQorY2FyZCBtYW51ZmFjdHVyZXIgYXJlIGdpdmVuKS4gIFdoZW4gYSBjYXJkIGlzIGxpc3RlZCBoZXJlIGl0IGlzbid0CituZWNlc3NhcmlseSBmdWxseSBzdXBwb3J0ZWQuCisKK0FsbCBvdGhlciBjYXJkcyBvbmx5IGRpZmZlciBieSBhZGRpdGlvbmFsIGNvbXBvbmVudHMgYXMgdHVuZXJzLCBzb3VuZAorZGVjb2RlcnMsIEVFUFJPTXMsIHRlbGV0ZXh0IGRlY29kZXJzIC4uLgorCisKK1Vuc3VwcG9ydGVkIENhcmRzOgorLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NhcmRzIHdpdGggWm9yYW4gKFpSKSBvciBQaGlsaXBzIChTQUEpIG9yIElTQSBhcmUgbm90IHN1cHBvcnRlZCBieQordGhpcyBkcml2ZXIuCisKKworTUFUUklYIFZpc2lvbgorLS0tLS0tLS0tLS0tLQorCitNVi1EZWx0YQorLSBCdDg0OEEKKy0gNCBDb21wb3NpdGUgaW5wdXRzLCAxIFMtVkhTIGlucHV0IChzaGFyZWQgd2l0aCA0dGggY29tcG9zaXRlKQorLSBFRVBST00KKworaHR0cDovL3d3dy5tYXRyaXgtdmlzaW9uLmRlLworCitUaGlzIGNhcmQgaGFzIG5vIHR1bmVyIGJ1dCBzdXBwb3J0cyBhbGwgNCBjb21wb3NpdGUgKDEgc2hhcmVkIHdpdGggYW4KK1MtVkhTIGlucHV0KSBvZiB0aGUgQnQ4NDhBLgorVmVyeSBuaWNlIGNhcmQgaWYgeW91IG9ubHkgaGF2ZSBzYXRlbGxpdGUgVFYgYnV0IHNldmVyYWwgdHVuZXJzIGNvbm5lY3RlZAordG8gdGhlIGNhcmQgdmlhIGNvbXBvc2l0ZS4KKworTWFueSB0aGFua3MgdG8gTWF0cml4LVZpc2lvbiBmb3IgZ2l2aW5nIHVzIDIgY2FyZHMgZm9yIGZyZWUgd2hpY2ggbWFkZQorQnQ4NDhhL0J0ODQ5IHNpbmdsZSBjcnlzdGFsIG9wZXJhdGlvbiBzdXBwb3J0IHBvc3NpYmxlISEhCisKKworCitNaXJvL1Bpbm5hY2xlIFBDVFYKKy0tLS0tLS0tLS0tLS0tLS0tLQorCistIEJ0ODQ4CisgIHNvbWUgKGFsbD8/KSBjb21lIHdpdGggMiBjcnlzdGFscyBmb3IgUEFML1NFQ0FNIGFuZCBOVFNDCistIFBBTCwgU0VDQU0gb3IgTlRTQyBUViB0dW5lciAoUGhpbGlwcyBvciBURU1JQykKKy0gTVNQMzR4eCBzb3VuZCBkZWNvZGVyIG9uIGFkZCBvbiBib2FyZAorICBkZWNvZGVyIGlzIHN1cHBvcnRlZCBidXQgQUZBSUsgZG9lcyBub3QgeWV0IHdvcmsKKyAgKG90aGVyIHNvdW5kIE1VWCBzZXR0aW5nIGluIEdQSU8gcG9ydCBuZWVkZWQ/Pz8gc29tZWJvZHkgd2hvIGZpeGVkIHRoaXM/Pz8pCistIDEgdHVuZXIsIDEgY29tcG9zaXRlIGFuZCAxIFMtVkhTIGlucHV0CistIHR1bmVyIHR5cGUgaXMgYXV0b2RldGVjdGVkCisKK2h0dHA6Ly93d3cubWlyby5kZS8KK2h0dHA6Ly93d3cubWlyby5jb20vCisKKworTWFueSB0aGFua3MgZm9yIHRoZSBmcmVlIGNhcmQgd2hpY2ggbWFkZSBmaXJzdCBOVFNDIHN1cHBvcnQgcG9zc2libGUgYmFjaworaW4gMTk5NyEKKworCitIYXVwcGF1Z2UgV2luL1RWIHBjaQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgYXJlIG1hbnkgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZSBIYXVwcGF1Z2UgY2FyZHMgd2l0aCBkaWZmZXJlbnQKK3R1bmVycyAoVFYrUmFkaW8gLi4uKSwgdGVsZXRleHQgZGVjb2RlcnMuCitOb3RlIHRoYXQgZXZlbiBjYXJkcyB3aXRoIHNhbWUgbW9kZWwgbnVtYmVycyBoYXZlIChkZXBlbmRpbmcgb24gdGhlIHJldmlzaW9uKQorZGlmZmVyZW50IGNoaXBzIG9uIGl0LgorCistIEJ0ODQ4IChhbmQgb3RoZXJzIGJ1dCBhbHdheXMgaW4gMiBjcnlzdGFsIG9wZXJhdGlvbj8/PykKKyAgbmV3ZXIgY2FyZHMgaGF2ZSBhIEJ0ODc4CistIFBBTCwgU0VDQU0sIE5UU0Mgb3IgdHVuZXIgd2l0aCBvciB3aXRob3V0IFJhZGlvIHN1cHBvcnQKKworZS5nLjoKKyAgUEFMOgorICBUREE1NzM3OiBWSEYsIGh5cGVyYmFuZCBhbmQgVUhGIG1peGVyL29zY2lsbGF0b3IgZm9yIFRWIGFuZCBWQ1IgMy1iYW5kIHR1bmVycworICBUU0E1NTIyOiAxLjQgR0h6IEkyQy1idXMgY29udHJvbGxlZCBzeW50aGVzaXplciwgSTJDIDB4YzItMHhjMworCisgIE5UU0M6CisgIFREQTU3MzE6IFZIRiwgaHlwZXJiYW5kIGFuZCBVSEYgbWl4ZXIvb3NjaWxsYXRvciBmb3IgVFYgYW5kIFZDUiAzLWJhbmQgdHVuZXJzCisgIFRTQTU1MTg6IG5vIGRhdGFzaGVldCBhdmFpbGFibGUgb24gUGhpbGlwcyBzaXRlCistIFBoaWxpcHMgU0FBNTI0NiBvciBTQUE1Mjg0ICggb3Igbm8pIFRlbGV0ZXh0IGRlY29kZXIgY2hpcAorICB3aXRoIGJ1ZmZlciBSQU0gKGUuZy4gV2luYm9uZCBXMjQyNTdBUy0zNTogMzJLeDggQ01PUyBzdGF0aWMgUkFNKQorICBTQUE1MjQ2IChJMkMgMHgyMikgaXMgc3VwcG9ydGVkCistIDI1NiBieXRlcyBFRVBST006IE1pY3JvY2hpcCAyNExDMDJCIG9yIFBoaWxpcHMgODU4MkUyWQorICB3aXRoIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24KKyAgSTJDIGFkZHJlc3MgMHhhMCAoMjRMQzAyQiBhbHNvIHJlc3BvbmRzIHRvIDB4YTItMHhhZikKKy0gMSB0dW5lciwgMSBjb21wb3NpdGUgYW5kIChkZXBlbmRpbmcgb24gbW9kZWwpIDEgUy1WSFMgaW5wdXQKKy0gMTQwNTJCOiBtdXggZm9yIHNlbGVjdGlvbiBvZiBzb3VuZCBzb3VyY2UKKy0gc291bmQgZGVjb2RlcjogVERBOTgwMCwgTVNQMzR4eCAoc3RlcmVvIGNhcmRzKQorCisKK0Fza2V5IENQSC1TZXJpZXMKKy0tLS0tLS0tLS0tLS0tLS0KK0RldmVsb3BlZCBieSBUZWxTaWduYWwoPyksIE9FTWVkIGJ5IG1hbnkgdmVuZG9ycyAoVHlwaG9vbiwgQW51YmlzLCBEeW5hbGluaykKKworICBDYXJkIHNlcmllczoKKyAgICBDUEgwMXg6IEJUODQ4IGNhcHR1cmUgb25seQorICAgIENQSDAzeDogQlQ4NDgKKyAgICBDUEgwNXg6IEJUODc4IHdpdGggRk0KKyAgICBDUEgwNng6IEJUODc4ICh3L28gRk0pCisgICAgQ1BIMDd4OiBCVDg3OCBjYXB0dXJlIG9ubHkKKworICBUViBzdGFuZGFyZHM6CisgICAgIENQSDB4MDogTlRTQy1NL00KKyAgICAgQ1BIMHgxOiBQQUwtQi9HCisgICAgIENQSDB4MjogUEFMLUkvSQorICAgICBDUEgweDM6IFBBTC1EL0sKKyAgICAgQ1BIMHg0OiBTRUNBTS1ML0wKKyAgICAgQ1BIMHg1OiBTRUNBTS1CL0cKKyAgICAgQ1BIMHg2OiBTRUNBTS1EL0sKKyAgICAgQ1BIMHg3OiBQQUwtTi9OCisgICAgIENQSDB4ODogUEFMLUIvSAorICAgICBDUEgweDk6IFBBTC1NL00KKworICBDUEgwM3ggd2FzIG9mdGVuIHNvbGQgYXMgIlRWIGNhcHR1cmVyIi4KKworICBJZGVudGlmeWluZzoKKyAgMSkgODc4IGNhcmRzIGNhbiBiZSBpZGVudGlmaWVkIGJ5IFBDSSBTdWJzeXN0ZW0tSUQ6CisgICAgICAxNDRmOjMwMDAgPSBDUEgwNngKKyAgICAgIDE0NEY6MzAwMiA9IENQSDA1eCB3LyBGTQorICAgICAgMTQ0RjozMDA1ID0gQ1BIMDZ4X0xDICh3L28gcmVtb3RlIGNvbnRyb2wpCisgIDEpIFRoZSBjYXJkcyBoYXZlIGEgc3RpY2tlciB3aXRoICJDUEgiLW1vZGVsIG9uIHRoZSBiYWNrLgorICAyKSBUaGVzZSBjYXJkcyBoYXZlIGEgbnVtYmVyIHByaW50ZWQgb24gdGhlIFBDQiBqdXN0IGFib3ZlIHRoZSB0dW5lciBtZXRhbCBib3g6CisgICAgICAiODAtQ1AyMDAwMzAwLXgiID0gQ1BIMDNYCisgICAgICAiODAtQ1AyMDAwNTAwLXgiID0gQ1BIMDVYCisgICAgICAiODAtQ1AyMDAwNjAwLXgiID0gQ1BIMDZYIC8gQ1BIMDZ4X0xDCisKKyAgQXNrZXkgc2VsbHMgdGhlc2UgY2FyZHMgYXMgIk1hZ2ljIFRWaWV3IHNlcmllcyIsIEJyYW5kICJNYWdpY1hwcmVzcyIuCisgIE90aGVyIE9FTSBvZnRlbiBjYWxsIHRoZXNlICJUdmlldyIsICJUVmlldzk5IiBvciBlbHNlLgorCitMaWZldmlldyBGbHl2aWRlbyBTZXJpZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFRoZSBuYW1pbmcgb2YgdGhlc2Ugc2VyaWVzIGRpZmZlcnMgaW4gdGltZSBhbmQgc3BhY2UuCisKKyAgSWRlbnRpZnlpbmc6CisgIDEpIFNvbWUgbW9kZWxzIGNhbiBiZSBpZGVudGlmaWVkIGJ5IFBDSSBzdWJzeXN0ZW0gSUQ6CisgICAgICAxODUyOjE4NTIgPSBGbHl2aWRlbyA5OCBGTQorICAgICAgMTg1MToxODUwID0gRmx5dmlkZW8gOTgKKyAgICAgIDE4NTE6MTg1MSA9IEZseXZpZGVvIDk4IEVaIChjYXB0dXJlIG9ubHkpCisgIDIpIFRoZXJlIGlzIGEgcHJpbnQgb24gdGhlIFBDQjoKKyAgICAgIExSMjUgICAgICAgPSBGbHl2aWRlbyAoWm9yYW4gWlIzNjEyMCwgU0FBNzExMEEpCisgICAgICBMUjI2IFJldi5OID0gRmx5dmlkZW8gSUkgKEJ0ODQ4KQorCSAgIFJldi5PID0gRmx5dmlkZW8gSUkgKEJ0ODc4KQorICAgICAgTFIzNyBSZXYuQyA9IEZseXZpZGVvIEVaIChDYXB0dXJlIG9ubHksIFpSMzYxMjAgKyBTQUE3MTEwKQorICAgICAgTFIzOCBSZXYuQTE9IEZseXZpZGVvIElJIEVaIChCdDg0OCBjYXB0dXJlIG9ubHkpCisgICAgICBMUjUwIFJldi5RID0gRmx5dmlkZW8gOTggKHcvZWVwcm9tIGFuZCBQQ0kgc3Vic3lzdGVtIElEKQorCSAgIFJldi5XID0gRmx5dmlkZW8gOTggKG5vIGVlcHJvbSkKKyAgICAgIExSNTEgUmV2LkUgPSBGbHl2aWRlbyA5OCBFWiAoY2FwdHVyZSBvbmx5KQorICAgICAgTFI5MCAgICAgICA9IEZseXZpZGVvIDIwMDAgKEJ0ODc4KQorCQkgICBGbHl2aWRlbyAyMDAwUyAoQnQ4NzgpIHcvU3RlcmVvIFRWIChQYWNrYWdlIGluY2wuIExSOTEgZGF1Z2h0ZXJib2FyZCkKKyAgICAgIExSOTEgICAgICAgPSBTdGVyZW8gZGF1Z2h0ZXIgY2FyZCBmb3IgTFI5MAorICAgICAgTFI5NyAgICAgICA9IEZseXZpZGVvIERWQlMKKyAgICAgIExSOTkgUmV2LkUgPSBMb3cgcHJvZmlsZSBjYXJkIGZvciBPRU0gaW50ZWdyYXRpb24gKG9ubHkgaW50ZXJuYWwgYXVkaW8hKSBidDg3OAorICAgICAgTFIxMzYJID0gRmx5dmlkZW8gMjEwMC8zMTAwIChMb3cgcHJvZmlsZSwgU0FBNzEzMC9TQUE3MTM0KQorICAgICAgTFIxMzcgICAgICA9IEZseXZpZGVvIERWMjAwMC9EVjMwMDAgKFNBQTcxMzAvU0FBNzEzNCArIElFRUUxMzk0KQorICAgICAgTFIxMzggUmV2LkM9IEZseXZpZGVvIDIwMDAgKFNBQTcxMzApCisJCW9yIEZseXZpZGVvIDMwMDAgKFNBQTcxMzQpIHcvU3RlcmVvIFRWCisJCSAgIFRoZXNlIGV4aXN0IGluIHZhcmlhdGlvbnMgdy9GTSBhbmQgdy9SZW1vdGUgc29tZXRpbWVzIGRlbm90ZWQKKwkJICAgYnkgc3VmZml4ZXMgIkZNIiBhbmQgIlIiLgorICAzKSBZb3UgaGF2ZSBhIGxhcHRvcCAobWluaVBDSSBjYXJkKToKKyAgICAgIFByb2R1Y3QgICAgPSBGbHlUViBQbGF0aW51bSBNaW5pCisgICAgICBNb2RlbC9DaGlwID0gTFIyMTIvc2FhNzEzNQorCisgICAgICBMaWZldmlldy5jb20udHcgc3RhdGVzIChGZWIuIDIwMDIpOgorICAgICAgIlRoZSBGbHlWaWRlbzIwMDAgYW5kIEZseVZpZGVvMjAwMHMgcHJvZHVjdCBuYW1lIGhhdmUgcmVuYW1lZCB0byBGbHlWaWRlbzk4LiIKKyAgICAgIFRoZWlyIEJ0OHg4IGNhcmRzIGFyZSBsaXN0ZWQgYXMgZGlzY29udGludWVkLgorICAgICAgRmx5dmlkZW8gMjAwMFMgd2FzIHByb2JhYmx5IHNvbGQgYXMgRmx5dmlkZW8gMzAwMCBpbiBzb21lIGNvbnRyaWVzKEV1cm9wZT8pLgorICAgICAgVGhlIG5ldyBGbHl2aWRlbyAyMDAwLzMwMDAgYXJlIFNBQTcxMzAvU0FBNzEzNCBiYXNlZC4KKworICAiRmx5dmlkZW8gSUkiIGhhZCBiZWVuIHRoZSBuYW1lIGZvciB0aGUgODQ4IGNhcmRzLCBub3dhZGF5cyAoaW4gR2VybWFueSkKKyAgdGhpcyBuYW1lIGlzIHJlLXVzZWQgZm9yIExSNTAgUmV2LlcuCisgIFRoZSBMaWZldmlldyB3ZWJzaXRlIG1lbnRpb25lZCBGbHl2aWRlbyBJSUkgYXQgc29tZSB0aW1lLCBidXQgc3VjaCBhIGNhcmQKKyAgaGFzIG5vdCB5ZXQgYmVlbiBzZWVuIChwZXJoYXBzIGl0IHdhcyB0aGUgZ2VybWFuIG5hbWUgZm9yIExSOTAgW3N0ZXJlb10pLgorICBUaGVzZSBjYXJkcyBhcmUgc29sZCBieSBtYW55IE9FTXMgdG9vLgorCisgIEZseVZpZGVvIEEyIChFbHRhIDg2ODApPSBMUjkwIFJldi5GICh3L1JlbW90ZSwgdy9vIEZNLCBzdGVyZW8gVFYgYnkgdGRhOTgyMSkge0dlcm1hbnl9CisgIExpZmV2aWV3IDMwMDAgKEVsdGEgODY4MSkgYXMgc29sZCBieSBQbHVzKEFwcmlsIDIwMDIpLCBHZXJtYW55ID0gTFIxMzggdy8gc2FhNzEzNAorCisKK1R5cGhvb24gVFYgY2FyZCBzZXJpZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBUaGVzZSBjYW4gYmUgQ1BILCBGbHl2aWRlbywgUGl4ZWx2aWV3IG9yIEtOQzEgc2VyaWVzLgorICBUeXBob29uIGlzIHRoZSBicmFuZCBvZiBBbnViaXMuCisgIE1vZGVsIDUwNjgwIGdvdCByZS11c2VkLCBzb21lIG1vZGVsIG5vLiBoYWQgZGlmZmVyZW50IGNvbnRlbnRzIG92ZXIgdGltZS4KKworICBNb2RlbHM6CisgIDUwNjgwICJUViBUdW5lciBQQ0kgUGFsIEJHIihvbGQscmVkIHBhY2thZ2UpPWNhbiBiZSBDUEgwM3goYnQ4NDgpIG9yIENQSDA2eChidDg3OCkKKyAgNTA2ODAgIlRWIFR1bmVyIFBhbCBCRyIgKGJsdWUgcGFja2FnZSk9IFBpeGVsdmlldyBQVi1CVDg3OFArIChSZXYgOUIpCisgIDUwNjgxICJUViBUdW5lciBQQ0kgUGFsIEkiICh2YXJpYW50IG9mIDUwNjgwKQorICA1MDY4MiAiVFZpZXcgVFYvRk0gVHVuZXIgUGFsIEJHIiAgICAgICA9IEZseXZpZGVvIDk4Rk0gKExSNTAgUmV2LlEpCisJIE5vdGU6IFRoZSBwYWNrYWdlIGhhcyBhIHBpY3R1cmUgb2YgQ1BIMDV4ICh3aGljaCB3b3VsZCBiZSBhIHJlYWwgVFZpZXcpCisgIDUwNjgzICJUViBUdW5lciBQQ0kgU0VDQU0iICh2YXJpYW50IG9mIDUwNjgwKQorICA1MDY4NCAiVFYgVHVuZXIgUGFsIEJHIiAgICAgICAgICAgICAgICA9IFBpeGVsdmlldyA4NzhUVihSZXYuM0QpCisgIDUwNjg2ICJUViBUdW5lciIgICAgICAgICAgICAgICAgICAgICAgID0gS05DMSBUViBTdGF0aW9uCisgIDUwNjg3ICJUViBUdW5lciBzdGVyZW8iICAgICAgICAgICAgICAgID0gS05DMSBUViBTdGF0aW9uIHBybworICA1MDY4OCAiVFYgVHVuZXIgUkRTIiAoYmxhY2sgcGFja2FnZSkgICA9IEtOQzEgVFYgU3RhdGlvbiBSRFMKKyAgNTA2ODkgIFRWIFNBVCBEVkItUyBDQVJEIENJIFBDSSAoU0FBNzE0NkFILCBTVTEyNzg/KSA9ICJLTkMxIFRWIFN0YXRpb24gRFZCLVMiCisgIDUwNjkyICJUVi9GTSBUdW5lciIgKHNtYWxsIFBDQikKKyAgNTA2OTQgIFRWIFRVTkVSIENBUkQgUkRTIChQSElMSVBTIENISVBTRVQgU0FBNzEzNEhMKQorICA1MDY5NiAgVFYgVFVORVIgU1RFUkVPIChQSElMSVBTIENISVBTRVQgU0FBNzEzNEhMLCBNSzNNRSBUdW5lcikKKyAgNTA4MDQgIFBDLVNBVCBUVi9BdWRpbyBLYXJ0ZSA9IFRlY2huaS1QQy1TYXQgKFpPUkFOIDM2MTIwUFFDLCBUdW5lcjpBbHBzKQorICA1MDg2NiAgVFZJRVcgU0FUIFJFQ0VJVkVSK0FEUgorICA1MDg2OCAiVFYvRk0gVHVuZXIgUGFsIEkiICh2YXJpYW50IG9mIDUwNjgyKQorICA1MDk5OSAiVFYvRk0gVHVuZXIgU2VjYW0iICh2YXJpYW50IG9mIDUwNjgyKQorCisKK0d1aWxsZW1vdAorLS0tLS0tLS0tCisgIE1heGktVFYgUENJIChaUjM2MTIwKQorICBNYXhpIFRWIFZpZGVvIDIgPSBMUjUwIFJldi5RIChGSTEyMTZNRiwgUEFMIEJHK1NFQ0FNKQorICBNYXhpIFRWIFZpZGVvIDMgPSBDUEgwNjQgKFBBTCBCRyArIFNFQ0FNKQorCitNZW50b3IKKy0tLS0tLQorICBNZW50b3IgVFYgY2FyZCAoIjU1LTg3OFRWLVUxIikgPSBQaXhlbHZpZXcgODc4VFYoUmV2LjNGKSAody9GTSB3L1JlbW90ZSkKKworUHJvbGluaworLS0tLS0tLQorICAgVFYgY2FyZHM6CisgICBQaXhlbFZpZXcgUGxheSBUViBwcm8gLSAoTW9kZWw6IFBWLUJUODc4UCsgUkVWIDhFKQorICAgUGl4ZWxWaWV3IFBsYXkgVFYgcHJvIC0gKE1vZGVsOiBQVi1CVDg3OFArIFJFViA5RCkKKyAgIFBpeGVsVmlldyBQbGF5IFRWIHBybyAtIChNb2RlbDogUFYtQlQ4NzhQKyBSRVYgNEMgLyA4RCAvIDEwQSApCisgICBQaXhlbFZpZXcgUGxheSBUViAtIChNb2RlbDogUFYtQlQ4NDhQKykKKyAgIDg3OFRWIC0gKE1vZGVsOiBQVi1CVDg3OFRWKQorCisgICBNdWx0aW1lZGlhIFRWIHBhY2thZ2VzIChjYXJkICsgc29mdHdhcmUgcGFjayk6CisgICBQaXhlbFZpZXcgUGxheSBUViBUaGVhdGVyIC0gKE1vZGVsOiBQVi1NNDIwMCkgPSAgUGl4ZWxWaWV3IFBsYXkgVFYgcHJvICsgU29mdHdhcmUKKyAgIFBpeGVsVmlldyBQbGF5IFRWIFBBSyAtICAgICAoTW9kZWw6IFBWLUJUODc4UCsgUkVWIDRFKQorICAgUGl4ZWxWaWV3IFBsYXkgVFYvVkNSIC0gICAgIChNb2RlbDogUFYtTTMyMDAgUkVWIDRDIC8gOEQgLyAxMEEgKQorICAgUGl4ZWxWaWV3IFN0dWRpbyBQQUsgLSAgICAgIChNb2RlbDogICAgTTIyMDAgUkVWIDRDIC8gOEQgLyAxMEEgKQorICAgUGl4ZWxWaWV3IFBvd2VyU3R1ZGlvIFBBSyAtIChNb2RlbDogUFYtTTM2MDAgUkVWIDRFKQorICAgUGl4ZWxWaWV3IERpZ2l0YWxWQ1IgUEFLIC0gIChNb2RlbDogUFYtTTI0MDAgUkVWIDRDIC8gOEQgLyAxMEEgKQorCisgICBQaXhlbFZpZXcgUGxheVRWIFBBSyBJSSAoVFYvRk0gY2FyZCArIHVzYiBjYW1lcmEpICBQVi1NMzgwMAorICAgUGl4ZWxWaWV3IFBsYXlUViBYUCBQVi1NNDcwMCxQVi1NNDcwMCh3L0ZNKQorICAgUGl4ZWxWaWV3IFBsYXlUViBEVlIgUFYtTTQ2MDAgIHBhY2thZ2UgY29udGVudHM6UGl4ZWxWaWV3IFBsYXlUViBwcm8sIHdpbmR2ciAmIHZpZGVvTWFpbCBzL3cKKworICAgRnVydGhlciBDYXJkczoKKyAgIFBWLUJUODc4UCtyZXYuOUIgKFBsYXkgVFYgUHJvLCBvcHQuIHcvRk0gdy9OSUNBTSkKKyAgIFBWLUJUODc4UCtyZXYuMkYKKyAgIFBWLUJUODc4UCBSZXYuMUQgKGJ0ODc4LCBjYXB0dXJlIG9ubHkpCisKKyAgIFhDYXB0dXJlIFBWLUNYODgxUCAoY3gyMzg4MSkKKyAgIFBsYXlUViBIRCBQVi1DWDg4MVBMKywgUFYtQ1g4ODFQTCsody9GTSkgKGN4MjM4ODEpCisKKyAgIERUVjMwMDAgUFYtRFRWMzAwMFArIERWQi1TIENJID0gVHdpbmhhbiBWUC0xMDMwCisgICBEVFYyMDAwIERWQi1TID0gVHdpbmhhbiBWUC0xMDIwCisKKyAgIFZpZGVvIENvbmZlcmVuY2luZzoKKyAgIFBpeGVsVmlldyBNZWV0aW5nIFBBSyAtIChNb2RlbDogUFYtQlQ4NzhQKQorICAgUGl4ZWxWaWV3IE1lZXRpbmcgUEFLIExpdGUgLSAoTW9kZWw6IFBWLUJUODc4UCkKKyAgIFBpeGVsVmlldyBNZWV0aW5nIFBBSyBwbHVzIC0gKE1vZGVsOiBQVi1CVDg3OFArcmV2IDRDLzhELzEwQSkKKyAgIFBpeGVsVmlldyBDYXB0dXJlIC0gKE1vZGVsOiBQVi1CVDg0OFApCisKKyAgIFBpeGVsVmlldyBQbGF5VFYgVVNCIHBybworICAgTW9kZWwgTm8uIFBWLU5UMTAwNCssIFBWLU5UMTAwNCsgKHcvRk0pID0gTlQxMDA0IFVTQiBkZWNvZGVyIGNoaXAgKyBTQUE3MTEzIHZpZGVvIGRlY29kZXIgY2hpcAorCitEeW5hbGluaworLS0tLS0tLS0KKyAgIFRoZXNlIGFyZSBDUEggc2VyaWVzLgorCitQaG9lYmVtaWNybworLS0tLS0tLS0tLS0KKyAgIFRWIE1hc3RlciAgICA9IENQSDAzMCBvciBDUEgwNjAKKyAgIFRWIE1hc3RlciBGTSA9IENQSDA1MAorCitHZW5pdXMvS3llCistLS0tLS0tLS0tCisgICBWaWRlbyBXb25kZXIvR2VuaXVzIEludGVybmV0IFZpZGVvIEtpdCA9IExSMzcgUmV2LkMKKyAgIFZpZGVvIFdvbmRlciBQcm8gSUkgKDg0OCBvciA4NzgpID0gTFIyNgorCitUZWtyYW0KKy0tLS0tLQorICAgVmlkZW9DYXAgQzIwNSAoQnQ4NDgpCisgICBWaWRlb0NhcCBDMjEwICh6cjM2MTIwICtQaGlsaXBzKQorICAgQ2FwdHVyZVRWIE0yMDAgKElTQSkKKyAgIENhcHR1cmVUViBNMjA1IChCdDg0OCkKKworTHVja3kgU3RhcgorLS0tLS0tLS0tLQorICAgSW1hZ2UgV29ybGQgQ29uZmVyZW5jZSBUViA9IExSNTAgUmV2LiBRCisKK0xlYWR0ZWsKKy0tLS0tLS0KKyAgIFdpblZpZXcgNjAxIChCdDg0OCkKKyAgIFdpblZpZXcgNjEwIChab3JhbikKKyAgIFdpbkZhc3QyMDAwCisgICBXaW5GYXN0MjAwMCBYUAorCitLTkMgT25lCistLS0tLS0tCisgICBUVi1TdGF0aW9uCisgICBUVi1TdGF0aW9uIFNFICgrU29mdHdhcmUgQnVuZGxlKQorICAgVFYtU3RhdGlvbiBwcm8gKCtUViBzdGVyZW8pCisgICBUVi1TdGF0aW9uIEZNICgrUmFkaW8pCisgICBUVi1TdGF0aW9uIFJEUyAoK1JEUykKKyAgIFRWIFN0YXRpb24gU0FUIChhbmFsb2cgc2F0ZWxsaXRlKQorICAgVFYtU3RhdGlvbiBEVkItUworCisgICBuZXdlciBDYXJkcyBoYXZlIHNhYTcxMzQsIGJ1dCBtb2RlbCBuYW1lIHN0YXllZCB0aGUgc2FtZT8KKworUHJvdmlkZW8KKy0tLS0tLS0tCisgIFBWOTUxIG9yIFBWLTk1MSAoYWxzbyBhcmUgc29sZCBhczoKKyAgIEJvZWRlciBUVi1GTSBWaWRlbyBDYXB0dXJlIENhcmQKKyAgIFRpdGFubWVkaWEgU3VwZXJ2aXNpb24gVFYtMjQwMAorICAgUHJvdmlkZW8gUFY5NTEgVEYKKyAgIDNEZU1vbiBQVjk1MQorICAgTWVkaWFGb3J0ZSBUVi1WaXNpb24gUFY5NTEKKyAgIFlva28gUFY5NTEKKyAgIFZpdmFuY28gVHVuZXIgQ2FyZCBQQ0kgQXJ0Li1Oci46IDY4NDA0CisgICkgbm93IG5hbWVkIFBWLTk1MVQKKworICBTdXJ2ZWlsbGFuY2UgU2VyaWVzCisgIFBWLTE0MQorICBQVi0xNDMKKyAgUFYtMTQ3CisgIFBWLTE0OCAoY2FwdHVyZSBvbmx5KQorICBQVi0xNTAKKyAgUFYtMTUxCisKKyAgVFYtRk0gVHVuZXIgU2VyaWVzCisgIFBWLTk1MVREViAodHYgdHVuZXIgKyAxMzk0KQorICBQVi05NTFUL1RGCisgIFBWLTk1MVBUL1RGCisgIFBWLTk1NlQvVEYgTG93IFByb2ZpbGUKKyAgUFYtOTExCisKK0hpZ2hzY3JlZW4KKy0tLS0tLS0tLS0KKyAgIFRWIEthcnRlID0gTFI1MCBSZXYuUworICAgVFYtQm9vc3RhciA9IFRlcnJhdGVjIFRlcnJhIFRWKyBWZXJzaW9uIDEuMCAoQnQ4NDgsIHRkYTk4MjEpICJjZWIxMDUucGNiIgorCitab2x0cml4CistLS0tLS0tCisgICBGYWNlIHRvIEZhY2UgQ2FwdHVyZSAoQnQ4NDggY2FwdHVyZSBvbmx5KSAoUENCICJWUC0yODQ4IikKKyAgIEZhY2UgVG8gRmFjZSBUViBNQVggKEJ0ODQ4KSAoUENCICJWUC04NDgyIFJldjEuMyIpCisgICBHZW5pZSBUViAoQnQ4NzgpIChQQ0IgIlZQLTg3OTAgUmV2IDIuMSIpCisgICBHZW5pZSBXb25kZXIgUHJvCisKK0FWZXJNZWRpYQorLS0tLS0tLS0tCisgICBBVmVyIEZ1blRWIExpdGUgKElTQSwgQVYzMDAxIGNoaXBzZXQpICAiTTEwMS5DIgorICAgQVZlclRWCisgICBBVmVyVFYgU3RlcmVvCisgICBBVmVyVFYgU3R1ZGlvICh3L0ZNKQorICAgQVZlck1lZGlhIFRWOTggd2l0aCBSZW1vdGUKKyAgIEFWZXJNZWRpYSBUVi9GTTk4IFN0ZXJlbworICAgQVZlck1lZGlhIFRWQ0FNOTgKKyAgIFRWQ2FwdHVyZSAoQnQ4NDgpCisgICBUVlBob25lIChCdDg0OCkKKyAgIFRWQ2FwdHVyZTk4ICg9IkFWZXJNZWRpYSBUVjk4IiBpbiBVU0EpIChCdDg3OCkKKyAgIFRWUGhvbmU5OCAoQnQ4NzgsIHcvRk0pCisKKyAgIFBDQiAgICAgIFBDSS1JRCAgICAgIE1vZGVsLU5hbWUgICAgICBFZXByb20gIFR1bmVyICBTb3VuZCAgICBDb3VudHJ5CisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgTTEwMS5DICAgSVNBICEKKyAgIE0xMDgtQiAgICAgIEJ0ODQ4ICAgICAgICAgICAgICAgICAgICAgLS0gICAgIEZSMTIzNgkJIFVTICAgKDIpLCgzKQorICAgTTFBOC1BICAgICAgQnQ4NDggICAgQVZlciBUVi1QaG9uZSAgICAgICAgICAgRk0xMjE2ICAtLQorICAgTTE2OC1UICAgMTQ2MTowMDAzICAgQVZlclRWIFN0dWRpbyAgIDQ4OjE3ICAgRk0xMjE2IFREQTk4NDBUICBEICAgICgxKSB3L0ZNIHcvUmVtb3RlCisgICBNMTY4LVUgICAxNDYxOjAwMDQgICBUVkNhcHR1cmU5OCAgICAgNDA6MTEgICBGSTEyMTYgICAtLSAgICAgIEQgICAgdy9SZW1vdGUKKyAgIE0xNjhJSS1CIDE0NjE6MDAwMyAgIE1lZGlvbiBNRDk1OTIgICA0ODoxNiAgIEZNMTIxNiBUREE5ODczSCAgRCAgICB3L0ZNCisKKyAgICgxKSBEYXVnaHRlcmJvYXJkIE1CNjgtQSB3aXRoIFREQTk4MjBUIGFuZCBUREE5ODQwVAorICAgKDIpIFNvbnkgTkU0MVMgc29sZGVyZWQgKHN0ZXJlbyBzb3VuZD8pCisgICAoMykgRGF1Z2h0ZXJib2FyZCBNMTE4LUEgdy8gcGljIDE2YzU0IGFuZCA0IE1IeiBxdWFydHoKKworICAgVVMgc2l0ZSBoYXMgZGlmZmVyZW50IGRyaXZlcnMgZm9yIChhcyBvZiAwOS8yMDAyKToKKyAgIEVaIENhcHR1cmUvSW50ZXJDYW0gUENJIChCVC04NDggY2hpcCkKKyAgIEVaIENhcHR1cmUvSW50ZXJDYW0gUENJIChCVC04NzggY2hpcCkKKyAgIFRWLVBob25lIChCVC04NDggY2hpcCkKKyAgIFRWOTggKEJULTg0OCBjaGlwKQorICAgVFY5OCBXaXRoIFJlbW90ZSAoQlQtODQ4IGNoaXApCisgICBUVjk4IChCVC04NzggY2hpcCkKKyAgIFRWOTggV2l0aCBSZW1vdGUgKEJULTg3OCkKKyAgIFRWL0ZNOTggKEJULTg3OCBjaGlwKQorICAgQVZlclRWCisgICBBdmVyVFYgU3RlcmVvCisgICBBVmVyVFYgU3R1ZGlvCisKKyAgIERFIGhhdCBkaXZlcnNlIFRyZWliZXIgZnVlciBkaWVzZSBNb2RlbGxlIChTdGFuZCAwOS8yMDAyKToKKyAgIFRWUGhvbmUgKDg0OCkgbWl0IFBoaWxpcHMgdHVuZXIgRlIxMlg2ICh3LyBGTSByYWRpbykKKyAgIFRWUGhvbmUgKDg0OCkgbWl0IFBoaWxpcHMgdHVuZXIgRk0xMlg2ICh3LyBGTSByYWRpbykKKyAgIFRWQ2FwdHVyZSAoODQ4KSB3L1BoaWxpcHMgdHVuZXIgRkkxMlg2CisgICBUVkNhcHR1cmUgKDg0OCkgbm9uLVBoaWxpcHMgdHVuZXIKKyAgIFRWQ2FwdHVyZTk4IChCdDg3OCkKKyAgIFRWUGhvbmU5OCAoQnQ4NzgpCisgICBBVmVyVFYgdW5kIFRWQ2FwdHVyZTk4IHcvVkNSIChCdCA4NzgpCisgICBBVmVyVFZTdHVkaW8gdW5kIFRWUGhvbmU5OCB3L1ZDUiAoQnQ4NzgpCisgICBBVmVyVFYgR08gU2VyaWUgKEtlaW4gU1ZpZGVvIElucHV0KQorICAgQVZlclRWOTggKEJULTg3OCBjaGlwKQorICAgQVZlclRWOTggbWl0IEZlcm5iZWRpZW51bmcgKEJULTg3OCBjaGlwKQorICAgQVZlclRWL0ZNOTggKEJULTg3OCBjaGlwKQorCisgICBWRE9tYXRlICh3d3cuYXZlcm0uY29tLmNuKSA9IE0xNjhVID8KKworQWltc2xhYgorLS0tLS0tLQorICAgVmlkZW8gSGlnaHdheSBvciAiVmlkZW8gSGlnaHdheSBUUjIwMCIgKElTQSkKKyAgIFZpZGVvIEhpZ2h3YXkgWHRyZW1lIChha2EgIlZIWCIpIChCdDg0OCwgRk0gdy8gVEVBNTc1NykKKworSVhNaWNybyAoZm9ybWVyOiBJTVM9SW50ZWdyYXRlZCBNaWNybyBTb2x1dGlvbnMpCistLS0tLS0tCisgICBJWFRWIEJUODQ4ICg9VHVyYm9UVikKKyAgIElYVFYgQlQ4NzgKKyAgIElNUyBUdXJib1RWIChCdDg0OCkKKworTGlmZXRlYy9NZWRpb24vVGV2aW9uL0FsZGkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBMVDkzMDYvTUQ5MzA2ID0gQ1BIMDYxCisgICBMVDk0MTUvTUQ5NDE1ID0gTFI5MCBSZXYuRiBvciBSZXYuRworCSAgTUQ5NTkyID0gQXZlcm1lZGlhIFRWcGhvbmU5OCAoUENJX0lEPTE0NjE6MDAwMyksIFBDQi1SZXY9TTE2OElJLUIgKHcvVERBOTg3M0gpCisJICBNRDk3MTcgPSBLTkMgT25lIChSZXYgRDQsIHNhYTcxMzQsIEZNMTIxNiBNSzIgdHVuZXIpCisJICBNRDUwNDQgPSBLTkMgT25lIChSZXYgRDQsIHNhYTcxMzQsIEZNMTIxNk1FIE1LMyB0dW5lcikKKworTW9kdWxhciBUZWNobm9sb2dpZXMgKHd3dy5tb2R1bGFydGVjaC5jb20pIFVLCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIE1NMTAwIFBDVFYgKEJ0ODQ4KQorICAgTU0yMDEgUENUViAoQnQ4NzgsIEJ0ODMyKSB3LyBRdWFydHpzaWdodCBjYW1lcmEKKyAgIE1NMjAyIFBDVFYgKEJ0ODc4LCBCdDgzMiwgdGRhOTg3NCkKKyAgIE1NMjA1IFBDVFYgKEJ0ODc4KQorICAgTU0yMTAgUENUViAoQnQ4NzgpIChHYWxheHkgVFYsIEdhbGF4eW1lZGlhID8pCisKK1RlcnJhdGVjCistLS0tLS0tLQorICAgVGVycmEgVFYrIFZlcnNpb24gMS4wIChCdDg0OCksICJjZWIxMDUuUENCIiBwcmludGVkIG9uIHRoZSBQQ0IsIFREQTk4MjEKKyAgIFRlcnJhIFRWKyBWZXJzaW9uIDEuMSAoQnQ4NzgpLCAiTFI3NCBSZXYuRSIgcHJpbnRlZCBvbiB0aGUgUENCLCBUREE5ODIxCisgICBUZXJyYSBUVmFsdWVSYWRpbywgICAgICAgICAgICAgIkxSMTAyIFJldi5DIiBwcmludGVkIG9uIHRoZSBQQ0IKKyAgIFRlcnJhIFRWL1JhZGlvKyBWZXJzaW9uIDEuMCwgICAiODAtQ1AyODMwMTAwLTAiIFRUVFYzIHByaW50ZWQgb24gdGhlIFBDQiwKKwkJCQkgICAgICJDUEgwMTAtRTgzIiBvbiB0aGUgYmFjaywgU0FBNjU4OFQsIFREQTk4NzNICisgICBUZXJyYSBUVmFsdWUgVmVyc2lvbiBCVDg3OCwgICAgIjgwLUNQMjgzMDExMC0wIFRUVFY0IiBwcmludGVkIG9uIHRoZSBQQ0IsCisJCQkJICAgICAiQ1BIMDExLUQ4MyIgb24gYmFjaworICAgVGVycmEgVFZhbHVlIFZlcnNpb24gMS4wICAgICAgICJjZWIxMDUuUENCIiAocmVhbGx5IGlkZW50aWNhbCB0byBUZXJyYSBUVisgVmVyc2lvbiAxLjApCisgICBUZXJyYSBUVmFsdWUgTmV3IFJldmlzaW9uCSAgIkxSMTAyIFJlYy5DIgorICAgVGVycmEgQWN0aXZlIFJhZGlvIFVwZ3JhZGUgKHRlYTU3NTdoLCBzYWE2NTg4dCkKKworICAgTFI3NCBpcyBhIG5ld2VyIFBDQiByZXZpc2lvbiBvZiBjZWIxMDUgKGJvdGggaW5jbC4gY29ubmVjdG9yIGZvciBBY3RpdmUgUmFkaW8gVXBncmFkZSkKKworICAgQ2luZXJneSA0MDAgKHNhYTcxMzQpLCAiRTg3NyAxMShTKSIsICJQTTgyMDA5MkQiIHByaW50ZWQgb24gUENCCisgICBDaW5lcmd5IDYwMCAoc2FhNzEzNCkKKworVGVjaG5pc2F0CistLS0tLS0tLS0KKyAgIERpc2NvcyBBRFIgUEMtS2FydGUgSVNBIChubyBUViEpCisgICBEaXNjb3MgQURSIFBDLUthcnRlIFBDSSAocHJvYmFibHkgbm8gVFY/KQorICAgVGVjaG5pLVBDLVNhdCAoU2F0LiBhbmFsb2cpCisJIFJldiAxLjIgKHpyMzYxMjAsIHZweDMyMjAsIHN0djAwMzAsIHNhYTUyNDYsIEJTSkUzLTQ5NEEpCisgICBNZWRpYWZvY3VzIEkgKHpyMzYxMjAvenIzNjEyNSwgZHJwMzUxMCwgU2F0LiBhbmFsb2cgKyBBRFIgUmFkaW8pCisgICBNZWRpYWZvY3VzIElJIChzYWE3MTQ2LCBTYXQuIGFuYWxvZykKKwkgU2F0QURSIFJldiAyLjEgKHNhYTcxNDZhLCBzYWE3MTEzaCwgc3R2MDA1NmEsIG1zcDM0MDBjLCBkcnAzNTEwYSwgQlNLRTMtMzA3QSkKKyAgIFNreVN0YXIgMSBEVkIgIChBVjcxMTApID0gVGVjaG5vdHJlbmQgUHJlbWl1bQorICAgU2t5U3RhciAyIERWQiAgKEIyQzIpICg9U2t5MlBDKQorCitTaWVtZW5zCistLS0tLS0tCisgICBNdWx0aW1lZGlhIGVYdGVuc2lvbiBCb2FyZCAoTVhCKSAoU0FBNzE0NiwgU0FBNzExMSkKKworUG93ZXJjb2xvcgorLS0tLS0tLS0tLQorICAgTVRWODc4CisgICAgICAgUGFja2FnZSBjb21lcyB3aXRoIGRpZmZlcmVudCBjb250ZW50czoKKyAgICAgICBhKSBwY2IgIk1UVjg3OCIgKENBUkQ9NzUpCisgICAgICAgYikgUGl4ZWx2aWV3IFJldi4gNF8KKyAgIE1UVjg3OFIgdy9SZW1vdGUgQ29udHJvbAorICAgTVRWODc4RiB3L1JlbW90ZSBDb250cm9sIHcvRk0gcmFkaW8KKworUGlubmFjbGUKKy0tLS0tLS0tCisgICBNaXJvdmlkZW8gUENUViAoQnQ4NDgpCisgICBNaXJvdmlkZW8gUENUViBTRSAoQnQ4NDgpCisgICBNaXJvdmlkZW8gUENUViBQcm8gKEJ0ODQ4ICsgRGF1Z2h0ZXJib2FyZCBmb3IgVFYgU3RlcmVvIGFuZCBGTSkKKyAgIFN0dWRpbyBQQ1RWIFJhdmUgKEJ0ODQ4IFZlcnNpb24gPSBNaXJvdmlkZW8gUENUVikKKyAgIFN0dWRpbyBQQ1RWIFJhdmUgKEJ0ODc4IHBhY2thZ2Ugdy9vIGluZnJhcmVkKQorICAgU3R1ZGlvIFBDVFYgICAgICAoQnQ4NzgpCisgICBTdHVkaW8gUENUViBQcm8gIChCdDg3OCBzdGVyZW8gdy8gRk0pCisgICBQaW5uYWNsZSBQQ1RWICAgIChCdDg3OCwgTVQyMDMyKQorICAgUGlubmFjbGUgUENUViBQcm8gKEJ0ODc4LCBNVDIwMzIpCisgICBQaW5uY2FsZSBQQ1RWIFNhdCAoYnQ4NzhhLCBITTE4MjEvMTIyMSkgWyJDb25leGFudCBDWDI0MTEwIHdpdGggQ1gyNDEwOCB0dW5lciwgYWthIEhNMTIyMS9ITTE4MTEiXQorICAgUGlubmFjbGUgUENUViBTYXQgWEUKKworICAgTShKKVBFRyBjYXB0dXJlIGFuZCBwbGF5YmFjazoKKyAgIERDMSsgKElTQSkKKyAgIERDMTAgICh6cjM2MDU3LCAgICAgenIzNjA2MCwgICAgICBzYWE3MTEwLCBhZHY3MTc2KQorICAgREMxMCsgKHpyMzYwNjcsICAgICB6cjM2MDYwLCAgICAgIHNhYTcxMTAsIGFkdjcxNzYpCisgICBEQzIwICAocWwxNngyNGIsenIzNjA1MCwgenIzNjAxNiwgc2FhNzExMCwgc2FhNzE4NyAuLi4pCisgICBEQzMwICAoenIzNjA1NywgenIzNjA1MCwgenIzNjAxNiwgdnB4MzIyMCwgYWR2NzE3NiwgYWQxODQzLCB0ZWE2NDE1LCBtaXJvIEZTVDk3QTEpCisgICBEQzMwKyAoenIzNjA2NywgenIzNjA1MCwgenIzNjAxNiwgdnB4MzIyMCwgYWR2NzE3NikKKyAgIERDNTAgICh6cjM2MDY3LCB6cjM2MDUwLCB6cjM2MDE2LCBzYWE3MTEyLCBhZHY3MTc2ICgyIHBjcy4/KSwgYWQxODQzLCBtaXJvIEZTVDk3QTEsIExhdHRpY2UgPz8/KQorCitMZW5jbworLS0tLS0KKyAgIE1YUi05NTY1ICg9VGVjaG5pc2F0IE1lZGlhZm9jdXM/KQorICAgTVhSLTk1NzEgKEJ0ODQ4KSAoPUNQSDAzMT8pCisgICBNWFItOTU3NQorICAgTVhSLTk1NzcgKEJ0ODc4KSAoPVByb2xpbmsgODc4VFYgUmV2LjN4KQorICAgTVhUVi05NTc4Q1AgKEJ0ODc4KSAoPSBQcm9saW5rIFBWLUJUODc4UCs0RSkKKworSW9tZWdhCistLS0tLS0KKyAgIEJ1eiAoenIzNjA2NywgenIzNjA2MCwgc2FhNzExMSwgc2FhNzE4NSkKKworTE1MCistLS0KKyAgIExNTDMzICh6cjM2MDY3LCB6cjM2MDYwLCBidDgxOSwgYnQ4NTYpCisKK0dyYW5kdGVjCistLS0tLS0tLQorICAgR3JhbmQgVmlkZW8gQ2FwdHVyZSAoQnQ4NDgpCisgICBNdWx0aSBDYXB0dXJlIENhcmQgIChCdDg3OCkKKworS291dGVjaAorLS0tLS0tLQorICAgS1ctNjA2IChCdDg0OCkKKyAgIEtXLTYwNyAoQnQ4NDggY2FwdHVyZSBvbmx5KQorICAgS1ctNjA2UlNGCisgICBLVy02MDdBIChjYXB0dXJlIG9ubHkpCisgICBLVy02MDggKFpvcmFuIGNhcHR1cmUgb25seSkKKworSU9EQVRBIChqcCkKKy0tLS0tLQorICAgR1YtQkNUVi9QQ0kKKyAgIEdWLUJDVFYyL1BDSQorICAgR1YtQkNUVjMvUENJCisgICBHVi1CQ1RWNC9QQ0kKKyAgIEdWLVZDUC9QQ0kgKGNhcHR1cmUgb25seSkKKyAgIEdWLVZDUDIvUENJIChjYXB0dXJlIG9ubHkpCisKK0Nhbm9wdXMgKGpwKQorLS0tLS0tLQorICAgV2luRFZSCT0gS3dvcmxkICJLVy1UVkw4NzhSRiIKKword3d3LnNpZ21hY29tLmNvLmtyCistLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFNpZ21hIEN5YmVyIFRWIElJCisKK3d3dy5zYXNlbS5jby5rcgorLS0tLS0tLS0tLS0tLS0tCisgICBMaXR0ZSBPbkFpciBUVgorCitoYW1hCistLS0tCisgICBUVi9SYWRpby1UdW5lciBDYXJkLCBQQ0kgKE1vZGVsIDQ0Njc3KSA9IENQSDA1MQorCitTaWdtYSBEZXNpZ25zCistLS0tLS0tLS0tLS0tCisgICBIb2xseXdvb2QgcGx1cyAoZW04MzAwLCBlbTkwMTAsIGFkdjcxNzUpLCAoUENCICJNMzQwLTEwIikgTVBFRyBEVkQgZGVjb2RlcgorCitGb3JtYWMKKy0tLS0tLQorICAgaVByb1RWIChDYXJkIGZvciBpTWFjIE1lenphbmluZSBzbG90LCBCdDg0OCtTQ1NJKQorICAgUHJvVFYgKEJ0ODQ4KQorICAgUHJvVFYgSUkgPSBQcm9UViBTdGVyZW8gKEJ0ODc4KSBbInN0ZXJlbyIgbWVhbnMgRk0gc3RlcmVvLCB0diBpcyBzdGlsbCBtb25vXQorCitBVEkKKy0tLQorICAgVFYtV29uZGVyCisgICBUVi1Xb25kZXIgVkUKKworRGlhbW9uZCBNdWx0aW1lZGlhCistLS0tLS0tLS0tLS0tLS0tLS0KKyAgIERUVjIwMDAgKEJ0ODQ4LCB0ZGE5ODc1KQorCitBb3BlbgorLS0tLS0KKyAgIFZBMTAwMCBQbHVzICh3LyBTdGVyZW8pCisgICBWQTEwMDAgTGl0ZQorICAgVkExMDAwICg9TFI5MCkKKworSW50ZWwKKy0tLS0tCisgICBTbWFydCBWaWRlbyBSZWNvcmRlciAoSVNBIGZ1bGwtbGVuZ3RoKQorICAgU21hcnQgVmlkZW8gUmVjb3JkZXIgcHJvIChJU0EgaGFsZi1sZW5ndGgpCisgICBTbWFydCBWaWRlbyBSZWNvcmRlciBJSUkgKEJ0ODQ4KQorCitTVEIKKy0tLQorICAgU1RCIEdhdGV3YXkgNjAwMDcwNCAoYnQ4NzgpCisgICBTVEIgR2F0ZXdheSA2MDAwNjk5IChidDg0OCkKKyAgIFNUQiBHYXRld2F5IDYwMDA0MDIgKGJ0ODQ4KQorICAgU1RCIFRWMTMwIFBDSQorCitWaWRlb2xvZ2ljCistLS0tLS0tLS0tCisgICBDYXB0aXZhdG9yIFByby9UViAoSVNBPykKKyAgIENhcHRpdmF0b3IgUENJL1ZDIChCdDg0OCBidW5kbGVkIHdpdGggY2FtZXJhKSAoY2FwdHVyZSBvbmx5KQorCitUZWNobm90cmVuZAorLS0tLS0tLS0tLS0tCisgICBUVC1TQVQgUENJIChQQ0IgIlNhdC1QQ0kgUmV2LjoxLjMuMSI7IHpyMzYxMjUsIHZweDMyMjVkLCBzdGMwMDU2YSwgVHVuZXI6QlNLRTYtMTU1QQorICAgVFQtRFZCLVNhdAorICAgIHJldmlzaW9ucyAxLjEsIDEuMywgMS41LCAxLjYgYW5kIDIuMQorICAgIFRoaXMgY2FyZCBpcyBzb2xkIGFzIE9FTSBmcm9tOgorCVNpZW1lbnMgRFZCLXMgQ2FyZAorCUhhdXBwYXVnZSBXaW5UViBEVkItUworCVRlY2huaXNhdCBTa3lTdGFyIDEgRFZCCisJR2FsYXhpcyBEVkIgU2F0CisgICAgTm93IHRoaXMgY2FyZCBpcyBjYWxsZWQgVFQtUENsaW5lIFByZW1pdW0gRmFtaWx5CisgICBUVC1CdWRnZXQgKHNhYTcxNDYsIGJzcnU2LTcwMWEpCisgICAgVGhpcyBjYXJkIGlzIHNvbGQgYXMgT0VNIGZyb206CisJSGF1cHBhdWdlIFdpblRWIE5vdmEKKwlTYXRlbGNvIFN0YW5kYXJkIFBDSSAoRFZCLVMpCisgICBUVC1EVkItQyBQQ0kKKworVGVsZXMKKy0tLS0tCisgICBEVkItcyAoUmV2LiAyLjIsIEJTUlYyLTMwMUEsIGRhdGEgb25seT8pCisKK1JlbW90ZSBWaXNpb24KKy0tLS0tLS0tLS0tLS0KKyAgIE1YIFJWNjA1IChCdDg0OCBjYXB0dXJlIG9ubHkpCisKK0JvZWRlcgorLS0tLS0tCisgICBQQyBDaGF0Q2FtIChNb2RlbCA2ODI1MikgKEJ0ODQ4IGNhcHR1cmUgb25seSkKKyAgIFR2L0ZtIENhcHR1cmUgQ2FyZCAgKE1vZGVsIDY4NDA0KSA9IFBWOTUxCisKK01lZGlhLVN1cmZlciAgKGVzYy1rYXRocmVpbi5kZSkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFNhdC1TdXJmZXIgKElTQSkKKyAgIFNhdC1TdXJmZXIgUENJID0gVGVjaG5pLVBDLVNhdAorICAgQ2FibGUtU3VyZmVyIDEKKyAgIENhYmxlLVN1cmZlciAyCisgICBDYWJsZS1TdXJmZXIgUENJICh6cjM2MTIwKQorICAgQXVkaW8tU3VyZmVyIChJU0EgUmFkaW8gY2FyZCkKKworSmV0d2F5ICh3d3cuamV0d2F5LmNvbS50dykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBKVy1UViA4NzhNCisgICBKVy1UViA4NzggID0gS1dvcmxkIEtXLVRWODc4UkYKKworR2FsYXhpcworLS0tLS0tLQorICAgR2FsYXhpcyBEVkIgQ2FyZCBTIENJCisgICBHYWxheGlzIERWQiBDYXJkIEMgQ0kKKyAgIEdhbGF4aXMgRFZCIENhcmQgUworICAgR2FsYXhpcyBEVkIgQ2FyZCBDCisgICBHYWxheGlzIHBsdWcuaW4gUyBbbmV1ZXIgTmFtZTogR2FsYXhpcyBEVkIgQ2FyZCBTIENJCisKK0hhdXBwYXVnZQorLS0tLS0tLS0tCisgICBtYW55IG1hbnkgV2luVFYgbW9kZWxzIC4uLgorICAgV2luVFYgRFZCcyA9IFRlY2hub3RyZW5kIFByZW1pdW0gMS4zCisgICBXaW5UViBOT1ZBID0gVGVjaG5vdHJlbmQgQnVkZ2V0IDEuMSAiUy1EVkIgREFUQSIKKyAgIFdpblRWIE5PVkEtQ0kgIlNEVkJBQ0kiCisgICBXaW5UViBOb3ZhIFVTQiAoPVRlY2hub3RyZW5kIFVTQiAxLjApCisgICBXaW5UVi1OZXh1cy1zICg9VGVjaG5vdHJlbmQgUHJlbWl1bSAyLjEgb3IgMi4yKQorICAgV2luVFYgUFZSCisgICBXaW5UViBQVlIgMjUwCisgICBXaW5UViBQVlIgNDUwCisKKyAgVVMgbW9kZWxzCisgIDk5MCBXaW5UVi1QVlItMzUwICgyNDlVU0QpIChpVFZDMTUgY2hpcHNldCArIHJhZGlvKQorICA5ODAgV2luVFYtUFZSLTI1MCAoMTQ5VVNEKSAoaVRWQzE1IGNoaXBzZXQpCisgIDg4MCBXaW5UVi1QVlItUENJICgxOTlVU0QpIChLRklSIGNoaXBzZXQgKyBidDg3OCkKKyAgODgxIFdpblRWLVBWUi1VU0IKKyAgMTkwIFdpblRWLUdPCisgIDE5MSBXaW5UVi1HTy1GTQorICA0MDQgV2luVFYKKyAgNDAxIFdpblRWLXJhZGlvCisgIDQ5NSBXaW5UVi1UaGVhdGVyCisgIDYwMiBXaW5UVi1VU0IKKyAgNjIxIFdpblRWLVVTQi1GTQorICA2MDAgVVNCLUxpdmUKKyAgNjk4IFdpblRWLUhECisgIDY5NyBXaW5UVi1ECisgIDU2NCBXaW5UVi1OZXh1cy1TCisKKyAgRGV1dHNjaGUgTW9kZWxsZQorICA2MDMgV2luVFYgR08KKyAgNzE5IFdpblRWIFByaW1pby1GTQorICA3MTggV2luVFYgUENJLUZNCisgIDQ5NyBXaW5UViBUaGVhdGVyCisgIDU2OSBXaW5UViBVU0IKKyAgNTY4IFdpblRWIFVTQi1GTQorICA4ODIgV2luVFYgUFZSCisgIDk4MSBXaW5UViBQVlIgMjUwCisgIDg5MSBXaW5UVi1QVlItVVNCCisgIDU0MSBXaW5UViBOb3ZhCisgIDQ4OCBXaW5UViBOb3ZhLUNpCisgIDU2NCBXaW5UVi1OZXh1cy1zCisgIDcyNyBXaW5UVi1EVkItYworICA1NDUgQ29tbW9uIEludGVyZmFjZQorICA4OTggV2luVFYtTm92YS1VU0IKKworICBVSyBtb2RlbHMKKyAgNjA3IFdpblRWIEdvCisgIDY5Myw3OTMgV2luVFYgUHJpbWlvIEZNCisgIDY0Nyw3NDcgV2luVFYgUENJIEZNCisgIDQ5OCBXaW5UViBUaGVhdGVyCisgIDg4MyBXaW5UViBQVlIKKyAgODkzIFdpblRWIFBWUiBVU0IgIChEdXBsaWNhdGUgZW50cnkpCisgIDU2NiBXaW5UViBVU0IgKFVLKQorICA1NzMgV2luVFYgVVNCIEZNCisgIDQyOSBJbXBhY3QgVkNCIChidDg0OCkKKyAgNjAwIFVTQiBMaXZlIChWaWRlby1JbiAxeCBDb21wLCAxeFNWSFMpCisgIDU0MiBXaW5UViBOb3ZhCisgIDcxNyBXaW5UViBEVkItUworICA5MDkgTm92YS10IFBDSQorICA4OTMgTm92YS10IFVTQiAgIChEdXBsaWNhdGUgZW50cnkpCisgIDgwMiBNeVRWCisgIDgwNCBNeVZpZXcKKyAgODA5IE15VmlkZW8KKyAgODcyIE15VFYyR28gRk0KKworCisgIDU0NiBXaW5UViBOb3ZhLVMgQ0kKKyAgNTQzIFdpblRWIE5vdmEKKyAgOTA3IE5vdmEtUyBVU0IKKyAgOTA4IE5vdmEtVCBVU0IKKyAgNzE3IFdpblRWIE5leHVzLVMKKyAgMTU3IERFQzMwMDAtcyBTdGFuZGFsb25lICsgVVNCCisKKyAgU3BhaW4KKyAgNjg1IFdpblRWLUdvCisgIDY5MCBXaW5UVi1QcmltaW9GTQorICA0MTYgV2luVFYtUENJIE5pY2FtIEVzdGVyZW8KKyAgNjc3IFdpblRWLVBDSS1GTQorICA2OTkgV2luVFYtVGhlYXRlcgorICA2ODMgV2luVFYtVVNCCisgIDY3OCBXaW5UVi1VU0ItRk0KKyAgOTgzIFdpblRWLVBWUi0yNTAKKyAgODgzIFdpblRWLVBWUi1QQ0kKKyAgOTkzIFdpblRWLVBWUi0zNTAKKyAgODkzIFdpblRWLVBWUi1VU0IKKyAgNzI4IFdpblRWLURWQi1DIFBDSQorICA4MzIgTXlUVjJHbworICA4NjkgTXlUVjJHby1GTQorICA4MDUgTXlWaWRlbyAoVVNCKQorCisKK01hdHJpeC1WaXNpb24KKy0tLS0tLS0tLS0tLS0KKyAgIE1BVFJJWC1WaXNpb24gTVYtRGVsdGEKKyAgIE1BVFJJWC1WaXNpb24gTVYtRGVsdGEgMgorICAgTVZzaWdtYS1TTEMgKEJ0ODQ4KQorCitDb25jZXB0cm9uaWMgKC5uZXQpCistLS0tLS0tLS0tLS0KKyAgIFRWQ09OIEZNLCAgVFYgY2FyZCB3LyBGTSA9IENQSDA1eAorICAgVFZDT04gPSBDUEgwNngKKworQmVzdERhdGEKKy0tLS0tLS0tCisgICBIQ0MxMDAgPSBWQ0MxMDByZXYxICsgY2FtZXJhCisgICBWQ0MxMDAgcmV2MSAoYnQ4NDgpCisgICBWQ0MxMDAgcmV2MiAoYnQ4NzgpCisKK0dhbGxhbnQgICh3d3cuZ2FsbGFudGNvbS5jb20pIHd3dy5taW50b24uY29tLnR3CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgSW50ZXJ2aXNpb24gSVYtNTEwIChjYXB0dXJlIG9ubHkgYnQ4eDgpCisgICBJbnRlcnZpc2lvbiBJVi01NTAgKGJ0OHg4KQorICAgSW50ZXJ2aXNpb24gSVYtMTAwICh6b3JhbikKKyAgIEludGVydmlzaW9uIElWLTEwMDAgKGJ0OHg4KQorCitBc29uaWMgKHd3dy5hc29uaWMuY29tLmNuKSAod2Vic2l0ZSBkb3duKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFNreUV5ZSB0diA4NzgKKworSG9vbnRlY2gKKy0tLS0tLS0tCisgICA4NzhUVi9GTQorCitUZXBwcm8gKHd3dy5pdGN0ZXBwcm8uY29tLnR3KQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIElUQyBQQ0lUViAoQ2FyZCBWZXIgMS4wKSAiVGVwcHJvIFRWMS9UVkZNMSBDYXJkIgorICAgSVRDIFBDSVRWIChDYXJkIFZlciAyLjApCisgICBJVEMgUENJVFYgKENhcmQgVmVyIDMuMCkgPSAiUFYtQlQ4NzhQKyAoUkVWLjlEKSIKKyAgIElUQyBQQ0lUViAoQ2FyZCBWZXIgNC4wKQorICAgVEVQUFJPIElWLTU1MCAoRm9yIEJUODQ4IE1haW4gQ2hpcCkKKyAgIElUQyBEU1RUViAoYnQ4NzgsIHNhdGVsbGl0ZSkKKyAgIElUQyBWaWRlb01ha2VyIChzYWE3MTQ2LCBTdHJlYW1NYWNoaW5lIHNtMjExMCwgdHZ0dW5lcikgIlBWLVNNMjIxMFArIChSRVY6MUMpIgorCitLd29ybGQgKHd3dy5rd29ybGQuY29tLnR3KQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgUEMgVFYgU3RhdGlvbgorICAgS1dPUkxEIEtXLVRWODc4UiAgVFYgKG5vIHJhZGlvKQorICAgS1dPUkxEIEtXLVRWODc4UkYgVFYgKHcvIHJhZGlvKQorCisgICBLV09STEQgS1ctVFZMODc4UkYgKGxvdyBwcm9maWxlKQorCisgICBLV09STEQgS1ctVFY3MTNYUkYgKHNhYTcxMzQpCisKKworICBNUEVHIFRWIFN0YXRpb24gKHNhbWUgY2FyZHMgYXMgYWJvdmUgcGx1cyBXaW5EVlIgU29mdHdhcmUgTVBFRyBlbi9kZWNvZGVyKQorICAgS1dPUkxEIEtXLVRWODc4UiAtUHJvICAgVFYgKG5vIFJhZGlvKQorICAgS1dPUkxEIEtXLVRWODc4UkYtUHJvICAgVFYgKHcvIFJhZGlvKQorICAgS1dPUkxEIEtXLVRWODc4UiAtVWx0cmEgVFYgKG5vIFJhZGlvKQorICAgS1dPUkxEIEtXLVRWODc4UkYtVWx0cmEgVFYgKHcvIFJhZGlvKQorCisKKworSlRULyBKdXN0eSBDb3JwLihodHRwOi8vd3d3Lmp0dC5uZS5qcC8pCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIEpUVC0wMiAoSlRUIFRWKSAiVFYgd2F0Y2htYXRlIHBybyIgKGJ0ODQ4KQorCitBRFMgd3d3LmFkc3RlY2guY29tCistLS0tLS0tLS0tLS0tLS0tLS0tCisgICBDaGFubmVsIFN1cmZlciBUViAoIENIWC05NTAgKQorICAgQ2hhbm5lbCBTdXJmZXIgVFYrRk0gKCBDSFgtOTYwRk0gKQorCitBVkVDIHd3dy5wcm9jaGlwcy5jb20KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgQVZFQyBJbnRlcmNhcHR1cmUgKGJ0ODQ4LCB0ZWE2MzIwKQorCitOb0JyYW5kCistLS0tLS0tCisgICBUViBFeGNlbCA9IEF1c3RyYWxpYW4gTmFtZSBmb3IgIlBWLUJUODc4UCsgOEUiIG9yICI4NzhUViBSZXYuM18iCisKK01hY2ggd3d3Lm1hY2hzcGVlZC5jb20KKy0tLS0KKyAgIE1hY2ggVFYgODc4CisKK0VsaW5lIHd3dy5lbGluZS1uZXQuY29tLworLS0tLS0KKyAgIEVsaW5lIFZpc2lvbiBUVk1hc3RlciAvIFRWTWFzdGVyIEZNIChFTFYtVFZNLyBFTFYtVFZNLUZNKSA9IExSMjYgIChidDg3OCkKKyAgIEVsaW5lIFZpc2lvbiBUVk1hc3Rlci0yMDAwIChFTFYtVFZNLTIwMDAsIEVMVi1UVk0tMjAwMC1GTSk9IExSMTM4IChzYWE3MTN4KQorCitTcGlyaXQgCistLS0tLS0KKyAgIFNwaXJpdCBUViBUdW5lci9WaWRlbyBDYXB0dXJlIENhcmQgKGJ0ODQ4KQorCitCb3NlciB3d3cuYm9zZXIuY29tLnR3CistLS0tLQorICAgSFMtODc4IE1pbmkgUENJIENhcHR1cmUgQWRkLW9uIENhcmQKKyAgIEhTLTg3OSBNaW5pIFBDSSAzRCBBdWRpbyBhbmQgQ2FwdHVyZSBBZGQtb24gQ2FyZCAody8gRVMxOTM4IFNvbG8tMSkKKworU2F0ZWxjbyB3d3cuY2l0eWNvbS1nbWJoLmRlLCB3d3cuc2F0ZWxjby5kZQorLS0tLS0tLQorICAgVFYtRk0gPUtOQzEgc2FhNzEzNAorICAgU3RhbmRhcmQgUENJIChEVkItUykgPSBUZWNobm90cmVuZCBCdWRnZXQKKyAgIFN0YW5kYXJkIFBDSSAoRFZCLVMpIHcvIENJCisgICBTYXRlbGNvIEhpZ2hlbmQgUENJIChEVkItUykgPSBUZWNobm90cmVuZCBQcmVtaXVtCisKKworU2Vuc29yYXkgd3d3LnNlbnNvcmF5LmNvbQorLS0tLS0tLS0KKyAgIFNlbnNvcmF5IDMxMSAoUEMvMTA0IGJ1cykKKyAgIFNlbnNvcmF5IDYxMSAoUENJKQorCitDRUkgKENoYXJ0ZXJlZCBFbGVjdHJvbmljcyBJbmR1c3RyaWVzIFB0ZSBMdGQgW0NFSV0gW0ZDQyBJRCBIQlldKQorLS0tCisgIFRWIFR1bmVyICAtICBIQlktMzNBLVJBRkZMRVMgIEJyb29rdHJlZSBCdDg0OEtQRiArIFBoaWxpcHMKKyAgVFYgVHVuZXIgTUc5OTEwICAtICBIQlkzM0EtVFZPICBDRUkgKyBQaGlsaXBzIFNBQTcxMTAgKyBPS0kgTTU0ODI2MiArIFNUIFNUVjg0MzhDVgorICBQcmltZXRpbWUgVFYgKElTQSkKKyAgIGFjcXVpcmVkIGJ5IFNpbmdhcG9yZSBUZWNobm9sb2dpZXMKKyAgIG5vdyBvcGVyYXRpbmcgYXMgQ2hhcnRlcmVkIFNlbWljb25kdWN0b3IgTWFudWZhY3R1cmluZworICAgTWFudWZhY3R1cmVyIG9mIHZpZGVvIGNhcmRzIGlzIGxpc3RlZCBhczoKKyAgIENvZ2VudCBFbGVjdHJvbmljcyBJbmR1c3RyaWVzIFtDRUldCisKK0FJVGVjaAorLS0tLS0tCisgICBXYXZld2F0Y2hlciBUViAoSVNBKQorICAgQUlUZWNoIFdhdmVXYXRjaGVyIFRWLVBDSSA9IGNhbiBiZSBMUjI2IChCdDg0OCkgb3IgTFI1MCAoQlQ4NzgpCisgICBXYXZlV2F0Y2hlciBUVlItMjAyIFRWL0ZNIFJhZGlvIENhcmQgKElTQSkKKworTUFYUk9OCistLS0tLS0KKyAgIE1heHJvbiBNYXhUVi9GTSBSYWRpbyAoS1ctVFY4NzgtRk5UKSA9IEt3b3JsZCBvciBKVy1UVjg3OC1GQksKKword3d3Lmlkcy1pbWFnaW5nLmRlCistLS0tLS0tLS0tLS0tLS0tLS0KKyAgIEZhbGNvbiBTZXJpZXMgKGNhcHR1cmUgb25seSkKKyBJbiBVU0E6IGh0dHA6Ly93d3cudGhlaW1hZ2luZ3NvdXJjZS5jb20vCisgICBERkcvTEMxCisKK3d3dy5za25ldC13ZWIuY28uanAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFNLbmV0IE1vbnN0ZXIgVFYgKHNhYTcxMzQpCisKK0EtTWF4IHd3dy5hbWF4aGsuY29tIChDb2xvcm1heCwgQW1heCwgTmFwYSkKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIEFQQUMgVmlld2NvbXAgODc4CisKK0N5YmVydGFpbm1lbnQKKy0tLS0tLS0tLS0tLS0KKyAgIEN5YmVyTWFpbCBBViBWaWRlbyBFbWFpbCBLaXQgdy8gUENJIENhcHR1cmUgQ2FyZCAoY2FwdHVyZSBvbmx5KQorICAgQ3liZXJNYWlsIFh0cmVtZQorICBUaGVzZSBhcmUgRmx5dmlkZW8KKworVkNSIChodHRwOi8vd3d3LnZjcmluYy5jb20vKQorLS0tCisgIFZpZGVvIENhdGNoZXIgMTYKKworVHdpbmhhbgorLS0tLS0tLQorICAgRFNUIENhcmQvRFNULUlQIChidDg3OCwgdHdpbmhhbiBhc2ljKSBWUC0xMDIwCisgICAgU29sZCBhczoKKyAgICAgS1dvcmxkIERWQlMgU2F0ZWxsaXRlIFRWLUNhcmQKKyAgICAgUG93ZXJjb2xvciBEU1RWIFNhdGVsbGl0ZSBUdW5lciBDYXJkCisgICAgIFByb2xpbmsgUGl4ZWx2aWV3IERUVjIwMDAKKyAgICAgUHJvdmlkZW8gUFYtOTExIERpZ2l0YWwgU2F0ZWxsaXRlIFRWIFR1bmVyIENhcmQgV2l0aCBDb21tb24gSW50ZXJmYWNlID8KKyAgIERTVC1DSSBDYXJkIChEVkIgU2F0ZWxsaXRlKSBWUC0xMDMwCisgICBEQ1QgQ2FyZCAoRFZCIGNhYmxlKQorCitNU0kKKy0tLQorICAgIE1TSSBUVkBueXdoZXJlIFR1bmVyIENhcmQgKE1TLTg4NzYpIChDWDIzODgxLzg4MykgTm90IEJ0ODc4IGNvbXBhdGlibGUuCisgICAgTVMtODQwMSBEVkItUworCitGb2N1cyB3d3cuZm9jdXNpbmZvLmNvbQorLS0tLS0KKyAgICBJblZpZGVvIFBDSSAoYnQ4NzgpCisKK1NkaXNpbGsgd3d3LnNkaXNpbGsuY29tLworLS0tLS0tLQorICAgIFNESSBTaWxrIDEwMAorICAgIFNESSBTaWxrIDIwMCBTREkgSW5wdXQgQ2FyZAorCit3d3cuZXVyZXN5cy5jb20KKyAgICBQSUNPTE8gc2VyaWVzCisKK1BNQy9QYWNlCit3d3cucGFjZWNvbS5jby51ayB3ZWJzaXRlIGNsb3NlZAorCitNZXJjdXJ5IHd3dy5rb2JpYW4uY29tIChVSyBhbmQgRlIpCisgICAgTFI1MAorICAgIExSMTM4UkJHLVJ4ICA9PSBMUjEzOAorCitURUMgc291bmQgKHBhY2thZ2UgYW5kIG1hbnVhbHMgZG9uJ3QgaGF2ZSBhbnkgb3RoZXIgbWFudWZhY3R1cmVyIGluZm8pIFRlY1NvdW5kCisgICAgVGhvdWdoIGVkdWNhdGVkIGdvb2dsaW5nIGZvdW5kOiB3d3cudGVjaG1ha2Vycy5jb20KKyAgICBUVi1NYXRlID0gWm9sdHJpeCBWUC04NDgyCisKK0xvcmVuemVuIHd3dy5sb3Jlbnplbi5kZQorLS0tLS0tLS0KKyAgICAgU0wgRFZCLVMgUENJID0gVGVjaG5vdHJlbmQgQnVkZ2V0IFBDSSAoc3UxMjc4IG9yIGJzcnUgdmVyc2lvbikKKworT3JpZ28gKC51aykgd3d3Lm9yaWdvMjAwMC5jb20KKyAgICAgUEMgVFYgQ2FyZCA9IExSNTAKKworSS9PIE1hZ2ljIHd3dy5pb21hZ2ljLmNvbQorLS0tLS0tLS0tCisgICAgUEMgUFZSIC0gRGVza3RvcCBUViBQZXJzb25hbCBWaWRlbyBSZWNvcmRlciBEUi1QQ1RWMTAwID0gUGlubmFjbGUgUk9CMkQtNTEwMDk0NjQgNC4wICsgQ3liZXJsaW5rIFBvd2VyVkNSIElJCisKK0Fyb3dhbmEKKy0tLS0tLS0KKyAgICBUVi1LYXJ0ZSAvIFBvc28gUG93ZXIgVFYgKD8pID0gWm9sdHJpeCBWUC04NDgyICg/KQorCitpVFZDMTUgYm9hcmRzOgorLS0tLS0tLS0tLS0tLQora3Vyb3V0b3NoaWtvdS5jb20gSVRWQzE1Cit5dWFuLmNvbSBNUEcxNjAgUENJIFRWIChJbnRlcm5hbCBQQ0kgTVBFRzIgZW5jb2RlciBjYXJkIHBsdXMgVFYtdHVuZXIpCisKK0FzdXMgd3d3LmFzdXNjb20uY29tCisgICBBc3VzIFRWIFR1bmVyIENhcmQgODgwIE5UU0MgKGxvdyBwcm9maWxlLCBjeDIzODgwKQorICAgQXN1cyBUViAoc2FhNzEzNCkKKworSG9vbnRlY2gKKy0tLS0tLS0tCitodHRwOi8vd3d3Lmhvb250ZWNoLmRlLworICAgSEFSVCBWaXNpb24gODQ4IChILUFSVCBWaXNpb24gODQ4KQorICAgSEFSVCBWaXNpb24gODc4IChILUFydCBWaXNpb24gODc4KQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L0lDcyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9JQ3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjExMzE1ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9JQ3MKQEAgLTAsMCArMSwzNyBAQAorYWxsIGJvYXJkczoKKworQnJvb2t0cmVlIEJ0ODQ4Lzg0OEEvODQ5Lzg3OC84Nzk6IHZpZGVvIGNhcHR1cmUgY2hpcAorCisKKworTWlybyBQQ1RWOgorCitQaGlsaXBzIG9yIFRlbWljIFR1bmVyCisKKworCitIYXVwcGF1Z2UgV2luL1RWIHBjaSAodmVyc2lvbiA0MDUpOgorCitNaWNyb2NoaXAgMjRMQzAyQiBvcgorUGhpbGlwcyA4NTgyRTJZOiAyNTYgQnl0ZSBFRVBST00gd2l0aCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uCisJCSBJMkMgMHhhMC0weGExLCAoMjRMQzAyQiBhbHNvIHJlc3BvbmRzIHRvIDB4YTItMHhhZikKK1BoaWxpcHMgU0FBNTI0NkFHUC9FOiBWaWRlb3RleHQgZGVjb2RlciBjaGlwLCBJMkMgMHgyMi0weDIzCitUREE5ODAwOiBzb3VuZCBkZWNvZGVyCitXaW5ib25kIFcyNDI1N0FTLTM1OiAzMkt4OCBDTU9TIHN0YXRpYyBSQU0gKFZpZGVvdGV4dCBidWZmZXIgbWVtKQorMTQwNTJCOiBhbmFsb2cgc3dpdGNoIGZvciBzZWxlY3Rpb24gb2Ygc291bmQgc291cmNlCisKK1BBTDoKK1REQTU3Mzc6IFZIRiwgaHlwZXJiYW5kIGFuZCBVSEYgbWl4ZXIvb3NjaWxsYXRvciBmb3IgVFYgYW5kIFZDUiAzLWJhbmQgdHVuZXJzCitUU0E1NTIyOiAxLjQgR0h6IEkyQy1idXMgY29udHJvbGxlZCBzeW50aGVzaXplciwgSTJDIDB4YzItMHhjMworCitOVFNDOgorVERBNTczMTogVkhGLCBoeXBlcmJhbmQgYW5kIFVIRiBtaXhlci9vc2NpbGxhdG9yIGZvciBUViBhbmQgVkNSIDMtYmFuZCB0dW5lcnMKK1RTQTU1MTg6IG5vIGRhdGFzaGVldCBhdmFpbGFibGUgb24gUGhpbGlwcyBzaXRlCisKKworCitTVEIgVFYgcGNpOgorCis/Pz8KK2lmIHlvdSB3YW50IGJldHRlciBzdXBwb3J0IGZvciBTVEIgY2FyZHMgc2VuZCBtZSBpbmZvIQorTG9vayBhdCB0aGUgYm9hcmQhIFdoYXQgY2hpcHMgYXJlIG9uIGl0PwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L0luc21vZC1vcHRpb25zIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L0luc21vZC1vcHRpb25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0YzA2NWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvSW5zbW9kLW9wdGlvbnMKQEAgLTAsMCArMSwxNzIgQEAKKworTm90ZTogIm1vZGluZm8gPG1vZHVsZT4iIHByaW50cyB2YXJpb3VzIGluZm9ybWF0aW9uIGFib3V0IGEga2VybmVsCittb2R1bGUsIGFtb25nIHRoZW0gYSBjb21wbGV0ZSBhbmQgdXAtdG8tZGF0ZSBsaXN0IG9mIGluc21vZCBvcHRpb25zLgorVGhpcyBsaXN0IHRlbmRzIHRvIGJlIG91dGRhdGVkIGJlY2F1c2UgaXQgaXMgdXBkYXRlZCBtYW51YWxseSAuLi4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworYnR0di5vCisJdGhlIGJ0ODQ4Lzg3OCAoZ3JhYmJlciBjaGlwKSBkcml2ZXIKKworCWluc21vZCBhcmdzOgorCQljYXJkPW4JCWNhcmQgdHlwZSwgc2VlIENBUkRMSVNUIGZvciBhIGxpc3QuCisJCXR1bmVyPW4JCXR1bmVyIHR5cGUsIHNlZSBDQVJETElTVCBmb3IgYSBsaXN0LgorCQlyYWRpbz0wLzEJY2FyZCBzdXBwb3J0cyByYWRpbworCQlwbGw9MC8xLzIJcGxsIHNldHRpbmdzCisJCQkwOiBkb24ndCB1c2UgUExMCisJCQkxOiAyOCBNSHogY3J5c3RhbCBpbnN0YWxsZWQKKwkJCTI6IDM1IE1IeiBjcnlzdGFsIGluc3RhbGxlZAorCisJCXRyaXRvbjE9MC8xICAgICBmb3IgVHJpdG9uMSAoK290aGVycykgY29tcGF0aWJpbGl0eQorCQl2c2Z4PTAvMQl5ZXQgYW5vdGhlciBjaGlwc2V0IGJ1ZyBjb21wYXRpYmlsaXR5IGJpdAorCQkJCXNlZSBSRUFETUUucXVpcmtzIGZvciBkZXRhaWxzIG9uIHRoZXNlIHR3by4KKworCQliaWdlbmRpYW49bglTZXQgdGhlIGVuZGlhbm5lc3Mgb2YgdGhlIGdmeCBmcmFtZWJ1ZmZlci4KKwkJCQlEZWZhdWx0IGlzIG5hdGl2ZSBlbmRpYW4uCisJCWZpZWxkbnI9MC8xCUNvdW50IGZpZWxkcy4gIFNvbWUgVFYgZGVzY3JhbWJsaW5nIHNvZnR3YXJlCisJCQkJbmVlZHMgdGhpcywgZm9yIG90aGVycyBpdCBvbmx5IGdlbmVyYXRlcworCQkJCTUwIHVzZWxlc3MgSVJRcy9zZWMuICBkZWZhdWx0IGlzIDAgKG9mZikuCisJCWF1dG9sb2FkPTAvMQlhdXRvbG9hZCBoZWxwZXIgbW9kdWxlcyAodHVuZXIsIGF1ZGlvKS4KKwkJCQlkZWZhdWx0IGlzIDEgKG9uKS4KKwkJYnR0dl92ZXJib3NlPTAvMS8yICB2ZXJib3NlIGxldmVsIChhdCBpbnNtb2QgdGltZSwgd2hpbGUKKwkJCQlsb29raW5nIGF0IHRoZSBoYXJkd2FyZSkuICBkZWZhdWx0IGlzIDEuCisJCWJ0dHZfZGVidWc9MC8xCWRlYnVnIG1lc3NhZ2VzIChmb3IgY2FwdHVyZSkuCisJCQkJZGVmYXVsdCBpcyAwIChvZmYpLgorCQlpcnFfZGVidWc9MC8xCWlycSBoYW5kbGVyIGRlYnVnIG1lc3NhZ2VzLgorCQkJCWRlZmF1bHQgaXMgMCAob2ZmKS4KKwkJZ2J1ZmZlcnM9Mi0zMgludW1iZXIgb2YgY2FwdHVyZSBidWZmZXJzIGZvciBtbWFwJ2VkIGNhcHR1cmUuCisJCQkJZGVmYXVsdCBpcyA0LgorCQlnYnVmc2l6ZT0Jc2l6ZSBvZiBjYXB0dXJlIGJ1ZmZlcnMuIGRlZmF1bHQgYW5kCisJCQkJbWF4aW11bSB2YWx1ZSBpcyAweDIwODAwMCAofjJNQikKKwkJbm9fb3ZlcmxheT0wCUVuYWJsZSBvdmVybGF5IG9uIGJyb2tlbiBoYXJkd2FyZS4gIFRoZXJlCisJCQkJYXJlIHNvbWUgY2hpcHNldHMgKFNJUyBmb3IgZXhhbXBsZSkgd2hpY2gKKwkJCQlhcmUga25vd24gdG8gaGF2ZSBwcm9ibGVtcyB3aXRoIHRoZSBQQ0kgRE1BCisJCQkJcHVzaCB1c2VkIGJ5IGJ0dHYuICBidHR2IHdpbGwgZGlzYWJsZSBvdmVybGF5CisJCQkJYnkgZGVmYXVsdCBvbiB0aGlzIGhhcmR3YXJlIHRvIGF2b2lkIGNyYXNoZXMuCisJCQkJV2l0aCB0aGlzIGluc21vZCBvcHRpb24geW91IGNhbiBvdmVycmlkZSB0aGlzLgorCQlub19vdmVybGF5PTEJRGlzYWJsZSBvdmVybGF5LiBJdCBzaG91bGQgYmUgdXNlZCBieSBicm9rZW4KKwkJCQloYXJkd2FyZSB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBQQ0kyUENJIGRpcmVjdAorCQkJCXRyYW5zZmVycy4KKwkJYXV0b211dGU9MC8xCUF1dG9tYXRpY2FsbHkgbXV0ZXMgdGhlIHNvdW5kIGlmIHRoZXJlIGlzCisJCQkJbm8gVFYgc2lnbmFsLCBvbiBieSBkZWZhdWx0LiAgWW91IG1pZ2h0IHRyeQorCQkJCXRvIGRpc2FibGUgdGhpcyBpZiB5b3UgaGF2ZSBiYWQgaW5wdXQgc2lnbmFsCisJCQkJcXVhbGl0eSB3aGljaCBsZWFkaW5nIHRvIHVud2FudGVkIHNvdW5kCisJCQkJZHJvcG91dHMuCisJCWNocm9tYV9hZ2M9MC8xCUFHQyBvZiBjaHJvbWEgc2lnbmFsLCBvZmYgYnkgZGVmYXVsdC4KKwkJYWRjX2NydXNoPTAvMQlMdW1pbmFuY2UgQURDIGNydXNoLCBvbiBieSBkZWZhdWx0LgorCQlpMmNfdWRlbGF5PSAgICAgQWxsb3cgcmVkdWNlIEkyQyBzcGVlZC4gRGVmYXVsdCBpcyA1IHVzZWNzCisJCQkJKG1lYW5pbmcgNjYsNjcgS2JwcykuIFRoZSBkZWZhdWx0IGlzIHRoZQorCQkJCW1heGltdW0gc3VwcG9ydGVkIHNwZWVkIGJ5IGtlcm5lbCBiaXRiYW5nCisJCQkJYWxnb3JpdGhtLiBZb3UgbWF5IHVzZSBsb3dlciBudW1iZXJzLCBpZiBJMkMKKwkJCQltZXNzYWdlcyBhcmUgbG9zdCAoMTYgaXMga25vd24gdG8gd29yayBvbgorCQkJCWFsbCBzdXBwb3J0ZWQgY2FyZHMpLgorCisJCWJ0dHZfZ3Bpbz0wLzEKKwkJZ3Bpb21hc2s9CisJCWF1ZGlvYWxsPQorCQlhdWRpb211eD0KKwkJCQlTZWUgU291bmQtRkFRIGZvciBhIGRldGFpbGVkIGRlc2NyaXB0aW9uLgorCisJcmVtYXAsIGNhcmQsIHJhZGlvIGFuZCBwbGwgYWNjZXB0IHVwIHRvIGZvdXIgY29tbWEtc2VwYXJhdGVkIGFyZ3VtZW50cworCShmb3IgbXVsdGlwbGUgYm9hcmRzKS4KKwordHVuZXIubworCVRoZSB0dW5lciBkcml2ZXIuICBZb3UgbmVlZCB0aGlzIHVubGVzcyB5b3Ugd2FudCB0byB1c2Ugb25seQorCXdpdGggYSBjYW1lcmEgb3IgZXh0ZXJuYWwgdHVuZXIgLi4uCisKKwlpbnNtb2QgYXJnczoKKwkJZGVidWc9MQkJcHJpbnQgc29tZSBkZWJ1ZyBpbmZvIHRvIHRoZSBzeXNsb2cKKwkJdHlwZT1uCQl0eXBlIG9mIHRoZSB0dW5lciBjaGlwLiBuIGFzIGZvbGxvd3M6CisJCQkJc2VlIENBUkRMSVNUIGZvciBhIGNvbXBsZXRlIGxpc3QuCisJCXBhbD1bYmRnaWxdCXNlbGVjdCBQQUwgdmFyaWFudCAodXNlZCBmb3Igc29tZSB0dW5lcnMKKwkJCQlvbmx5LCBpbXBvcnRhbnQgZm9yIHRoZSBhdWRpbyBjYXJyaWVyKS4KKwordHZhdWRpby5vCisJbmV3LCBleHBlcmltZW50YWwgbW9kdWxlIHdoaWNoIGlzIHN1cHBvcnRlZCB0byBwcm92aWRlIGEgc2luZ2xlCisJZHJpdmVyIGZvciBhbGwgc2ltcGxlIGkyYyBhdWRpbyBjb250cm9sIGNoaXBzICh0ZGEvdGVhKikuCisKKwlpbnNtb2QgYXJnczoKKwkJdGRhODQyNSAgPSAxCWVuYWJsZS9kaXNhYmxlIHRoZSBzdXBwb3J0IGZvciB0aGUKKwkJdGRhOTg0MCAgPSAxCXZhcmlvdXMgY2hpcHMuCisJCXRkYTk4NTAgID0gMQlUaGUgdGVhNjMwMCBjYW4ndCBiZSBhdXRvZGV0ZWN0ZWQgYW5kIGlzCisJCXRkYTk4NTUgID0gMQl0aGVyZWZvcmUgb2ZmIGJ5IGRlZmF1bHQsIGlmIHlvdSBoYXZlCisJCXRkYTk4NzMgID0gMQl0aGlzIG9uZSBvbiB5b3VyIGNhcmQgKFNUQiB1c2VzIHRoZXNlKQorCQl0ZGE5ODc0YSA9IDEJeW91IGhhdmUgdG8gZW5hYmxlIGl0IGV4cGxpY2l0bHkuCisJCXRlYTYzMDAgID0gMAlUaGUgdHdvIHRkYTk4NXggY2hpcHMgdXNlIHRoZSBzYW1lIGkyYworCQl0ZWE2NDIwICA9IDEJYWRkcmVzcyBhbmQgY2FuJ3QgYmUgZGlzdHVyZ2lzaGVkIGZyb20KKwkJcGljMTZjNTQgPSAxCWVhY2ggb3RoZXIsIHlvdSBtaWdodCBoYXZlIHRvIGRpc2FibGUKKwkJCQl0aGUgd3Jvbmcgb25lLgorCQlkZWJ1ZyA9IDEJcHJpbnQgZGVidWcgbWVzc2FnZXMKKworCWluc21vZCBhcmdzIGZvciB0ZGE5ODc0YToKKwkJdGRhOTg3NGFfU0lGPTEvMglzZWxlY3Qgc291bmQgSUYgaW5wdXQgcGluICgxIG9yIDIpCisJCQkJCShkZWZhdWx0IGlzIHBpbiAxKQorCQl0ZGE5ODc0YV9BTVNFTD0wLzEJYXV0by1tdXRlIHNlbGVjdCBmb3IgTklDQU0gKGRlZmF1bHQ9MCkKKwkJCQkJUGxlYXNlIHJlYWQgbm90ZSAzIGJlbG93IQorCQl0ZGE5ODc0YV9TVEQ9bgkJc2VsZWN0IFRWIHNvdW5kIHN0YW5kYXJkICgwLi44KToKKwkJCQkJMCAtIEEyLCBCL0cKKwkJCQkJMSAtIEEyLCBNIChLb3JlYSkKKwkJCQkJMiAtIEEyLCBEL0sgKDEpCisJCQkJCTMgLSBBMiwgRC9LICgyKQorCQkJCQk0IC0gQTIsIEQvSyAoMykKKwkJCQkJNSAtIE5JQ0FNLCBJCisJCQkJCTYgLSBOSUNBTSwgQi9HCisJCQkJCTcgLSBOSUNBTSwgRC9LIChkZWZhdWx0KQorCQkJCQk4IC0gTklDQU0sIEwKKworCU5vdGUgMTogdGRhOTg3NGEgc3VwcG9ydHMgYm90aCB0ZGE5ODc0aCAob2xkKSBhbmQgdGRhOTg3NGEgKG5ldykgY2hpcHMuCisJTm90ZSAyOiB0ZGE5ODc0aC9hIGFuZCB0ZGE5ODc1ICh3aGljaCBpcyBzdXBwb3J0ZWQgc2VwYXJhdGVseSBieQorCXRkYTk4NzUubykgdXNlIHRoZSBzYW1lIGkyYyBhZGRyZXNzIHNvIGJvdGggbW9kdWxlcyBzaG91bGQgbm90IGJlCisJdXNlZCBhdCB0aGUgc2FtZSB0aW1lLgorCU5vdGUgMzogVXNpbmcgdGRhOTg3NGFfQU1TRUwgb3B0aW9uIGRlcGVuZHMgb24geW91ciBUViBjYXJkIGRlc2lnbiEKKwkJQU1TRUw9MDogYXV0by1tdXRlIHdpbGwgc3dpdGNoIGJldHdlZW4gTklDQU0gc291bmQKKwkJCSBhbmQgdGhlIHNvdW5kIG9uIDFzdCBjYXJyaWVyIChpLmUuIEZNIG1vbm8gb3IgQU0pLgorCQlBTVNFTD0xOiBhdXRvLW11dGUgd2lsbCBzd2l0Y2ggYmV0d2VlbiBOSUNBTSBzb3VuZAorCQkJIGFuZCB0aGUgYW5hbG9nIG1vbm8gaW5wdXQgKE1PTk9JTiBwaW4pLgorCUlmIHRkYTk4NzRhIGRlY29kZXIgb24geW91ciBjYXJkIGhhcyBNT05PSU4gcGluIG5vdCBjb25uZWN0ZWQsIHRoZW4KKwl1c2Ugb25seSB0ZGE5ODc0X0FNU0VMPTAgb3IgZG9uJ3Qgc3BlY2lmeSB0aGlzIG9wdGlvbiBhdCBhbGwuCisJRm9yIGV4YW1wbGU6CisJICBjYXJkPTY1IChGbHlWaWRlbyAyMDAwUykgLSBzZXQgQU1TRUw9MSBvciBBTVNFTD0wCisJICBjYXJkPTcyIChQcm9saW5rIFBWLUJUODc4UCByZXYuOUIpIC0gc2V0IEFNU0VMPTAgb25seQorCittc3AzNDAwLm8KKwlUaGUgZHJpdmVyIGZvciB0aGUgbXNwMzR4eCBzb3VuZCBwcm9jZXNzb3IgY2hpcHMuIElmIHlvdSBoYXZlIGEKKwlzdGVyZW8gY2FyZCwgeW91IHByb2JhYmx5IHdhbnQgdG8gaW5zbW9kIHRoaXMgb25lLgorCisJaW5zbW9kIGFyZ3M6CisJCWRlYnVnPTEvMglwcmludCBzb21lIGRlYnVnIGluZm8gdG8gdGhlIHN5c2xvZywKKwkJCQkyIGlzIG1vcmUgdmVyYm9zZS4KKwkJc2ltcGxlPTEJVXNlIHRoZSAic2hvcnQgcHJvZ3JhbW1pbmciIG1ldGhvZC4gIE5ld2VyCisJCQkJbXNwMzR4eCB2ZXJzaW9ucyBzdXBwb3J0IHRoaXMuICBZb3UgbmVlZCB0aGlzCisJCQkJZm9yIGRieCBzdGVyZW8uICBEZWZhdWx0IGlzIG9uIGlmIHN1cHBvcnRlZCBieQorCQkJCXRoZSBjaGlwLgorCQlvbmNlPTEJCURvbid0IGNoZWNrIHRoZSBUVi1zdGF0aW9ucyBBdWRpbyBtb2RlCisJCQkJZXZlcnkgZmV3IHNlY29uZHMsIGJ1dCBvbmx5IG9uY2UgYWZ0ZXIKKwkJCQljaGFubmVsIHN3aXRjaGVzLgorCQlhbXNvdW5kPTEJQXVkaW8gY2FycmllciBpcyBBTS9OSUNBTSBhdCA2LjUgTWh6LiAgVGhpcworCQkJCXNob3VsZCBpbXByb3ZlIHRoaW5ncyBmb3IgZnJlbmNoIHBlb3BsZSwgdGhlCisJCQkJY2FycmllciBhdXRvc2NhbiBzZWVtcyB0byB3b3JrIHdpdGggRk0gb25seS4uLgorCit0ZWE2MzAwLm8gLSBPQlNPTEVURSAodXNlIHR2YXVkaW8gaW5zdGVhZCkKKwlUaGUgZHJpdmVyIGZvciB0aGUgdGVhNjMwMCBmYWRlciBjaGlwLiAgSWYgeW91IGhhdmUgYSBzdGVyZW8KKwljYXJkIGFuZCB0aGUgbXNwMzQwMC5vIGRvZXNuJ3Qgd29yaywgeW91IG1pZ2h0IHdhbnQgdG8gdHJ5IHRoaXMKKwlvbmUuICBUaGlzIGNoaXAgaXMgc2VlbiBvbiBtb3N0IFNUQiBUVi9GTSBjYXJkcyAodXN1YWxseSBmcm9tCisJR2F0ZXdheSBPRU0gc29sZCBzdXJwbHVzIG9uIGF1Y3Rpb24gc2l0ZXMpLgorCisJaW5zbW9kIGFyZ3M6CisJCWRlYnVnPTEJCXByaW50IHNvbWUgZGVidWcgaW5mbyB0byB0aGUgc3lzbG9nLgorCit0ZGE4NDI1Lm8gLSBPQlNPTEVURSAodXNlIHR2YXVkaW8gaW5zdGVhZCkKKwlUaGUgZHJpdmVyIGZvciB0aGUgdGRhODQyNSBmYWRlciBjaGlwLiAgVGhpcyBkcml2ZXIgdXNlZCB0byBiZQorCXBhcnQgb2YgYnR0di5jLCBzbyBpZiB5b3VyIHNvdW5kIHVzZWQgdG8gd29yayBidXQgZG9lcyBub3QKKwlhbnltb3JlLCB0cnkgbG9hZGluZyB0aGlzIG1vZHVsZS4KKworCWluc21vZCBhcmdzOgorCQlkZWJ1Zz0xCQlwcmludCBzb21lIGRlYnVnIGluZm8gdG8gdGhlIHN5c2xvZy4KKwordGRhOTg1eC5vIC0gT0JTT0xFVEUgKHVzZSB0dmF1ZGlvIGluc3RlYWQpCisJVGhlIGRyaXZlciBmb3IgdGhlIHRkYTk4NTAvNTUgYXVkaW8gY2hpcHMuCisKKwlpbnNtb2QgYXJnczoKKwkJZGVidWc9MQkJcHJpbnQgc29tZSBkZWJ1ZyBpbmZvIHRvIHRoZSBzeXNsb2cuCisJCWNoaXA9OTg1MC85ODU1CXNldCB0aGUgY2hpcCB0eXBlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L01BS0VERVYgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvTUFLRURFVgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTNjMGNkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L01BS0VERVYKQEAgLTAsMCArMSwyNyBAQAorIyEvYmluL2Jhc2gKKworZnVuY3Rpb24gbWFrZWRldiAoKSB7CisKKwlmb3IgZGV2IGluIDAgMSAyIDM7IGRvCisJCWVjaG8gIi9kZXYvJDEkZGV2OiBjaGFyIDgxICRbICQyICsgJGRldiBdIgorCQlybSAtZiAvZGV2LyQxJGRldgorCQlta25vZCAvZGV2LyQxJGRldiBjIDgxICRbICQyICsgJGRldiBdCisJCWNobW9kIDY2NiAvZGV2LyQxJGRldgorCWRvbmUKKworCSMgc3ltbGluayBmb3IgZGVmYXVsdCBkZXZpY2UKKwlybSAtZiAvZGV2LyQxCisJbG4gLXMgL2Rldi8kezF9MCAvZGV2LyQxCit9CisKKyMgc2VlIGh0dHA6Ly9saW51eC5ieXRlc2V4Lm9yZy92NGwyL0FQSS5odG1sCisKK2VjaG8gIioqKiBuZXcgZGV2aWNlIG5hbWVzICoqKiIKK21ha2VkZXYgdmlkZW8gMAorbWFrZWRldiByYWRpbyA2NAorbWFrZWRldiB2YmkgMjI0CisKKyNlY2hvICIqKiogb2xkIGRldmljZSBuYW1lcyAoZm9yIGNvbXBhdGliaWxpdHkgb25seSkgKioqIgorI21ha2VkZXYgYnR0diAwCisjbWFrZWRldiBidHR2LWZtIDY0CisjbWFrZWRldiBidHR2LXZiaSAyMjQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9Nb2Rwcm9iZS5jb25mIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L01vZHByb2JlLmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVmMTQ2NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9Nb2Rwcm9iZS5jb25mCkBAIC0wLDAgKzEsMTEgQEAKKyMgaTJjCithbGlhcyBjaGFyLW1ham9yLTg5CWkyYy1kZXYKK29wdGlvbnMgaTJjLWNvcmUJaTJjX2RlYnVnPTEKK29wdGlvbnMgaTJjLWFsZ28tYml0CWJpdF90ZXN0PTEKKworIyBidHR2CithbGlhcyBjaGFyLW1ham9yLTgxCXZpZGVvZGV2CithbGlhcyBjaGFyLW1ham9yLTgxLTAJYnR0dgorb3B0aW9ucwlidHR2CQljYXJkPTIgcmFkaW89MQorb3B0aW9ucwl0dW5lcgkJZGVidWc9MQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvTW9kdWxlcy5jb25mIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L01vZHVsZXMuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjI1OGZhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L01vZHVsZXMuY29uZgpAQCAtMCwwICsxLDE0IEBACisjIEZvciBtb2Rlcm4ga2VybmVscyAoMi42IG9yIGFib3ZlKSwgdGhpcyBiZWxvbmdzIGluIC9ldGMvbW9kcHJvYmUuZC8qLmNvbmYKKyMgRm9yIGZvciAyLjQga2VybmVscyBvciBlYXJsaWVyLCB0aGlzIGJlbG9uZ3MgaW4gL2V0Yy9tb2R1bGVzLmNvbmYuCisKKyMgaTJjCithbGlhcyBjaGFyLW1ham9yLTg5CWkyYy1kZXYKK29wdGlvbnMgaTJjLWNvcmUJaTJjX2RlYnVnPTEKK29wdGlvbnMgaTJjLWFsZ28tYml0CWJpdF90ZXN0PTEKKworIyBidHR2CithbGlhcyBjaGFyLW1ham9yLTgxCXZpZGVvZGV2CithbGlhcyBjaGFyLW1ham9yLTgxLTAJYnR0dgorb3B0aW9ucwlidHR2CQljYXJkPTIgcmFkaW89MQorb3B0aW9ucwl0dW5lcgkJZGVidWc9MQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvUFJPQkxFTVMgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvUFJPQkxFTVMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI4YjAwNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9QUk9CTEVNUwpAQCAtMCwwICsxLDYyIEBACistIFN0YXJ0IGNhcHR1cmluZyBieSBwcmVzc2luZyAiYyIgb3IgYnkgc2VsZWN0aW5nIGl0IHZpYSBhIG1lbnUhCisKKy0gU3RhcnQgY2FwdHVyaW5nIGJ5IHByZXNzaW5nICJjIiBvciBieSBzZWxlY3RpbmcgaXQgdmlhIGEgbWVudSEhIQorCistIFRoZSBtZW1vcnkgb2Ygc29tZSBTMyBjYXJkcyBpcyBub3QgcmVjb2duaXplZCByaWdodDoKKworICBGaXJzdCBvZiBhbGwsIGlmIHlvdSBhcmUgbm90IHVzaW5nIFhGcmVlLTMuMiBvciBuZXdlciwgdXBncmFkZSBBVCBMRUFTVCB0bworICBYRnJlZS0zLjJBISBUaGlzIHNvbHZlZCB0aGUgcHJvYmxlbSBmb3IgbW9zdCBwZW9wbGUuCisKKyAgU3RhcnQgdXAgWDExIGxpa2UgdGhpczogIlhGODZfUzMgLXByb2Jlb25seSIgYW5kIHdyaXRlIGRvd24gd2hlcmUgdGhlCisgIGxpbmVhciBmcmFtZSBidWZmZXIgaXMuCisgIElmIGl0IGlzIGRpZmZlcmVudCB0byB0aGUgYWRkcmVzcyBmb3VuZCBieSBidHR2IGluc3RhbGwgYnR0diBsaWtlIHRoaXM6CisgICJpbnNtb2QgYnR0diB2aWRtZW09MHhmYjAiCisgIGlmIHRoZSBsaW5lYXIgZnJhbWUgYnVmZmVyIGlzIGF0IDB4ZmIwMDAwMDAgKGkuZS4gb21pdCB0aGUgbGFzdCA1IHplcm9zISkKKworICBTb21lIFMzIGNhcmRzIGV2ZW4gdGFrZSB1cCA2NE1CIG9mIG1lbW9yeSBidXQgb25seSByZXBvcnQgMzJNQiB0byB0aGUgQklPUy4KKyAgSWYgdGhpcyA2NE1CIGFyZWEgb3ZlcmxhcHMgdGhlIElPIG1lbW9yeSBvZiB0aGUgQnQ4NDggeW91IGFsc28gaGF2ZSB0bworICByZW1hcCB0aGlzLiBFLmcuOiBpbnNtb2QgYnR0diB2aWRtZW09MHhmYjAgcmVtYXA9MHhmYTAKKworICBJZiB0aGUgdmlkZW8gbWVtb3J5IGlzIGZvdW5kIGF0IHRoZSByaWdodCBwbGFjZSBhbmQgdGhlcmUgYXJlIG5vIGFkZHJlc3MKKyAgY29uZmxpY3RzIGJ1dCBzdGlsbCBubyBwaWN0dXJlIChvciB0aGUgY29tcHV0ZXIgZXZlbiBjcmFzaGVzKSwKKyAgdHJ5IGRpc2FibGluZyBmZWF0dXJlcyBvZiB5b3VyIFBDSSBjaGlwc2V0IGluIHRoZSBCSU9TIHNldHVwLgorCisgIEZyYW5rIEthcGFobmtlIDxmcmFua0BrYXBhaG5rZS5wcmltYS5ydWhyLmRlPiBhbHNvIHJlcG9ydGVkIHRoYXQgcHJvYmxlbXMKKyAgd2l0aCBoaXMgUzMgODY4IHdlbnQgYXdheSB3aGVuIGhlIHVwZ3JhZGVkIHRvIFhGcmVlIDMuMi4KKworCistIEkgc3RpbGwgb25seSBnZXQgYSBibGFjayBwaWN0dXJlIHdpdGggbXkgUzMgY2FyZCEKKworICBFdmVuIHdpdGggWEZyZWUtMy4yQSBzb21lIHBlb3BsZSBoYXZlIHByb2JsZW1zIHdpdGggdGhlaXIgUzMgY2FyZHMKKyAgKG1vc3RseSB3aXRoIFRyaW8gNjQgYnV0IGFsc28gd2l0aCBzb21lIG90aGVycykKKyAgR2V0IHRoZSBmcmVlIGRlbW8gdmVyc2lvbiBvZiBBY2NlbGVyYXRlZCBYIGZyb20gd3d3LnhpbnNpZGUuY29tIGFuZCB0cnkKKyAgYnR0diB3aXRoIGl0LiBidHR2IHNlZW1zIHRvIHdvcmsgd2l0aCBtb3N0IFMzIGNhcmRzIHdpdGggQWNjZWxlcmF0ZWQgWC4KKworICBTaW5jZSBJIGRvIG5vdCBrbm93IG11Y2ggKGJldHRlciBtYWtlIHRoYXQgYWxtb3N0IG5vdGhpbmcpIGFib3V0IFZHQSBjYXJkCisgIHByb2dyYW1taW5nIEkgZG8gbm90IGtub3cgdGhlIHJlYXNvbiBmb3IgdGhpcy4KKyAgTG9va3MgbGlrZSBYRnJlZSBkb2VzIHNvbWV0aGluZyBkaWZmZXJlbnQgd2hlbiBzZXR0aW5nIHVwIHRoZSB2aWRlbyBtZW1vcnk/CisgIE1heWJlIHNvbWVib2R5IGNhbiBlbmxpZ2h0ZW4gbWU/CisgIFdvdWxkIGJlIG5pY2UgaWYgc29tZWJvZHkgY291bGQgZ2V0IHRoaXMgdG8gd29yayB3aXRoIFhGcmVlIHNpbmNlCisgIEFjY2VsZXJhdGVkIFggY29zdHMgbW9yZSB0aGFuIHNvbWUgb2YgdGhlIGdyYWJiZXIgY2FyZHMgLi4uCisKKyAgQmV0dGVyIGxpbmVhciBmcmFtZSBidWZmZXIgc3VwcG9ydCBmb3IgUzMgY2FyZHMgd2lsbCBwcm9iYWJseSBiZSBpbgorICBYRnJlZSA0LjAuCisKKy0gR3JhYmJpbmcgaXMgbm90IHN3aXRjaGVkIG9mZiB3aGVuIGNoYW5naW5nIGNvbnNvbGVzIHdpdGggWEZyZWUuCisgIFRoYXQncyBiZWNhdXNlIFhGcmVlIGFuZCBzb21lIEFjY2VsZXJhdGVkWCB2ZXJzaW9ucyBkbyBub3Qgc2VuZCB1bm1hcAorICBldmVudHMuCisKKy0gU29tZSBwb3B1cCB3aW5kb3dzIChlLmcuIG9mIHRoZSB3aW5kb3cgbWFuYWdlcikgYXJlIG5vdCByZWZyZXNoZWQuCisKKyAgRGlzYWJsZSBiYWNraW5nIHN0b3JlIGJ5IHN0YXJ0aW5nIFggd2l0aCB0aGUgb3B0aW9uICItYnMiCisKKy0gV2hlbiB1c2luZyAzMiBicHAgaW4gWEZyZWUgb3IgMjQrOGJwcCBtb2RlIGluIEFjY2VsWCAzLjEgdGhlIHN5c3RlbQorICBjYW4gc29tZXRpbWVzIGxvY2sgdXAgaWYgeW91IHVzZSBtb3JlIHRoYW4gMSBidDg0OCBjYXJkIGF0IHRoZSBzYW1lIHRpbWUuCisgIFlvdSB3aWxsIGFsd2F5cyBnZXQgcGl4ZWwgZXJyb3JzIHdoZW4gZS5nLiB1c2luZyBtb3JlIHRoYW4gMSBjYXJkIGluIGZ1bGwKKyAgc2NyZWVuIG1vZGUuIE1heWJlIHdlIG5lZWQgc29tZXRoaW5nIGZhc3RlciB0aGFuIHRoZSBQQ0kgYnVzIC4uLgorCisKKy0gU29tZSBTMyBjYXJkcyBhbmQgdGhlIE1hdHJveCBNeXN0aXF1ZSB3aWxsIHByb2R1Y2UgcGl4ZWwgZXJyb3JzIHdpdGgKKyAgZnVsbCByZXNvbHV0aW9uIGluIDMyLWJpdCBtb2RlLgorCistIFNvbWUgdmlkZW8gY2FyZHMgaGF2ZSBwcm9ibGVtcyB3aXRoIEFjY2VsZXJhdGVkIFggNC4xCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvUkVBRE1FIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2JmNGZiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1JFQURNRQpAQCAtMCwwICsxLDkwIEBACisKK1JlbGVhc2Ugbm90ZXMgZm9yIGJ0dHYKKz09PT09PT09PT09PT09PT09PT09PT0KKworWW91J2xsIG5lZWQgYXQgbGVhc3QgdGhlc2UgY29uZmlnIG9wdGlvbnMgZm9yIGJ0dHY6CisJQ09ORklHX0kyQz1tCisJQ09ORklHX0kyQ19BTEdPQklUPW0KKwlDT05GSUdfVklERU9fREVWPW0KKworVGhlIGxhdGVzdCBidHR2IHZlcnNpb24gaXMgYXZhaWxhYmxlIGZyb20gaHR0cDovL2J5dGVzZXgub3JnL2J0dHYvCisKKworTWFrZSBidHR2IHdvcmsgd2l0aCB5b3VyIGNhcmQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0p1c3QgdHJ5ICJtb2Rwcm9iZSBidHR2IiBhbmQgc2VlIGlmIHRoYXQgd29ya3MuCisKK0lmIGl0IGRvZXNuJ3QgYnR0diBsaWtlbHkgY291bGQgbm90IGF1dG9kZXRlY3QgeW91ciBjYXJkIGFuZCBuZWVkcyBzb21lCitpbnNtb2Qgb3B0aW9ucy4gIFRoZSBtb3N0IGltcG9ydGFudCBpbnNtb2Qgb3B0aW9uIGZvciBidHR2IGlzICJjYXJkPW4iCit0byBzZWxlY3QgdGhlIGNvcnJlY3QgY2FyZCB0eXBlLiAgSWYgeW91IGdldCB2aWRlbyBidXQgbm8gc291bmQgeW91J3ZlCit2ZXJ5IGxpa2VseSBzcGVjaWZpZWQgdGhlIHdyb25nIChvciBubykgY2FyZCB0eXBlLiAgQSBsaXN0IG9mIHN1cHBvcnRlZAorY2FyZHMgaXMgaW4gQ0FSRExJU1QuYnR0dgorCitJZiBidHR2IHRha2VzIHZlcnkgbG9uZyB0byBsb2FkIChoYXBwZW5zIHNvbWV0aW1lcyB3aXRoIHRoZSBjaGVhcAorY2FyZHMgd2hpY2ggaGF2ZSBubyB0dW5lciksIHRyeSBhZGRpbmcgdGhpcyB0byB5b3VyIG1vZHVsZXMuY29uZjoKKwlvcHRpb25zIGkyYy1hbGdvLWJpdCBiaXRfdGVzdD0xCisKK0ZvciB0aGUgV2luVFYvUFZSIHlvdSBuZWVkIG9uZSBmaXJtd2FyZSBmaWxlIGZyb20gdGhlIGRyaXZlciBDRDoKK2hjd2FtYy5yYmYuICBUaGUgZmlsZSBpcyBpbiB0aGUgcHZyNDV4eHguZXhlIGFyY2hpdmUgKHNlbGYtZXh0cmFjdGluZworemlwIGZpbGUsIHVuemlwIGNhbiB1bnBhY2sgaXQpLiAgUHV0IGl0IGludG8gdGhlIC9ldGMvcHZyIGRpcmVjdG9yeSBvcgordXNlIHRoZSBmaXJtX2FsdGVyYT08cGF0aD4gaW5zbW9kIG9wdGlvbiB0byBwb2ludCB0aGUgZHJpdmVyIHRvIHRoZQorbG9jYXRpb24gb2YgdGhlIGZpbGUuCisKK0lmIHlvdXIgY2FyZCBpc24ndCBsaXN0ZWQgaW4gQ0FSRExJU1QuYnR0diBvciBpZiB5b3UgaGF2ZSB0cm91YmxlIG1ha2luZworYXVkaW8gd29yaywgeW91IHNob3VsZCByZWFkIHRoZSBTb3VuZC1GQVEuCisKKworQXV0b2RldGVjdGluZyBjYXJkcworLS0tLS0tLS0tLS0tLS0tLS0tLQorCitidHR2IHVzZXMgdGhlIFBDSSBTdWJzeXN0ZW0gSUQgdG8gYXV0b2RldGVjdCB0aGUgY2FyZCB0eXBlLiAgbHNwY2kgbGlzdHMKK3RoZSBTdWJzeXN0ZW0gSUQgaW4gdGhlIHNlY29uZCBsaW5lLCBsb29rcyBsaWtlIHRoaXM6CisKKzAwOjBhLjAgTXVsdGltZWRpYSB2aWRlbyBjb250cm9sbGVyOiBCcm9va3RyZWUgQ29ycG9yYXRpb24gQnQ4NzggKHJldiAwMikKKwlTdWJzeXN0ZW06IEhhdXBwYXVnZSBjb21wdXRlciB3b3JrcyBJbmMuIFdpblRWL0dPCisJRmxhZ3M6IGJ1cyBtYXN0ZXIsIG1lZGl1bSBkZXZzZWwsIGxhdGVuY3kgMzIsIElSUSA1CisJTWVtb3J5IGF0IGUyMDAwMDAwICgzMi1iaXQsIHByZWZldGNoYWJsZSkgW3NpemU9NEtdCisKK29ubHkgYnQ4NzgtYmFzZWQgY2FyZHMgY2FuIGhhdmUgYSBzdWJzeXN0ZW0gSUQgKHdoaWNoIGRvZXMgbm90IG1lYW4KK3RoYXQgZXZlcnkgY2FyZCByZWFsbHkgaGFzIG9uZSkuICBidDg0OCBjYXJkcyBjYW4ndCBoYXZlIGEgU3Vic3lzdGVtCitJRCBhbmQgdGhlcmVmb3JlIGNhbid0IGJlIGF1dG9kZXRlY3RlZC4gIFRoZXJlIGlzIGEgbGlzdCB3aXRoIHRoZSBJRCdzCitpbiBidHR2LWNhcmRzLmMgKGluIGNhc2UgeW91IGFyZSBpbnRyZXN0ZWQgb3Igd2FudCB0byBtYWlsIHBhdGNoZXMKK3dpdGggdXBkYXRlcykuCisKKworU3RpbGwgZG9lc24ndCB3b3JrPworLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJIGRvIE5PVCBoYXZlIGEgbGFiIHdpdGggMzArIGRpZmZlcmVudCBncmFiYmVyIGJvYXJkcyBhbmQgYQorUEFML05UU0MvU0VDQU0gdGVzdCBzaWduYWwgZ2VuZXJhdG9yIGF0IGhvbWUsIHNvIEkgb2Z0ZW4gY2FuJ3QKK3JlcHJvZHVjZSB5b3VyIHByb2JsZW1zLiAgVGhpcyBtYWtlcyBkZWJ1Z2dpbmcgdmVyeSBkaWZmaWN1bHQgZm9yIG1lLgorSWYgeW91IGhhdmUgc29tZSBrbm93bGVkZ2UgYW5kIHNwYXJlIHRpbWUsIHBsZWFzZSB0cnkgdG8gZml4IHRoaXMKK3lvdXJzZWxmIChwYXRjaGVzIHZlcnkgd2VsY29tZSBvZiBjb3Vyc2UuLi4pICBZb3Uga25vdzogVGhlIGxpbnV4CitzbG9nYW4gaXMgIkRvIGl0IHlvdXJzZWxmIi4KKworVGhlcmUgaXMgYSBtYWlsaW5nIGxpc3Q6IGxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworaHR0cDovL3ZnZXIua2VybmVsLm9yZy92Z2VyLWxpc3RzLmh0bWwjbGludXgtbWVkaWEKKworSWYgeW91IGhhdmUgdHJvdWJsZSB3aXRoIHNvbWUgc3BlY2lmaWMgVFYgY2FyZCwgdHJ5IHRvIGFzayB0aGVyZQoraW5zdGVhZCBvZiBtYWlsaW5nIG1lIGRpcmVjdGx5LiAgVGhlIGNoYW5jZSB0aGF0IHNvbWVvbmUgd2l0aCB0aGUKK3NhbWUgY2FyZCBsaXN0ZW5zIHRoZXJlIGlzIG11Y2ggaGlnaGVyLi4uCisKK0ZvciBwcm9ibGVtcyB3aXRoIHNvdW5kOiAgVGhlcmUgYXJlIGEgbG90IG9mIGRpZmZlcmVudCBzeXN0ZW1zIHVzZWQKK2ZvciBUViBzb3VuZCBhbGwgb3ZlciB0aGUgd29ybGQuICBBbmQgdGhlcmUgYXJlIGFsc28gZGlmZmVyZW50IGNoaXBzCit3aGljaCBkZWNvZGUgdGhlIGF1ZGlvIHNpZ25hbC4gIFJlcG9ydHMgYWJvdXQgc291bmQgcHJvYmxlbXMgKCJzdGVyZW8KK2RvZXMnbnQgd29yayIpIGFyZSBwcmV0dHkgdXNlbGVzcyB1bmxlc3MgeW91IGluY2x1ZGUgc29tZSBkZXRhaWxzCithYm91dCB5b3VyIGhhcmR3YXJlIGFuZCB0aGUgVFYgc291bmQgc2NoZW1lIHVzZWQgaW4geW91ciBjb3VudHJ5IChvcgorYXQgbGVhc3QgdGhlIGNvdW50cnkgeW91IGFyZSBsaXZpbmcgaW4pLgorCisKK0ZpbmFsbHk6IElmIHlvdSBtYWlsIHNvbWUgcGF0Y2hlcyBmb3IgYnR0diBhcm91bmQgdGhlIHdvcmxkICh0bworbGludXgta2VybmVsL0FsYW4vTGludXMvLi4uKSwgcGxlYXNlIENjOiBtZS4KKworCitIYXZlIGZ1biB3aXRoIGJ0dHYsCisKKyAgR2VyZAorCistLQorR2VyZCBLbm9yciA8a3JheGVsQGJ5dGVzZXgub3JnPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1JFQURNRS5XSU5WSUVXIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1JFQURNRS5XSU5WSUVXCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MWNmMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvUkVBRE1FLldJTlZJRVcKQEAgLTAsMCArMSwzMyBAQAorCitTdXBwb3J0IGZvciB0aGUgTGVhZHRlayBXaW5WaWV3IDYwMSBUVi9GTSBieSBKb24gVG9tYnMgPGpvbkBndGUuZXNpLnVzLmVzPgorCitUaGlzIGNhcmQgaXMgYmFzaWNhbGx5IHRoZSBzYW1lIGFzIGFsbCB0aGUgcmVzdCAoQnQ0ODRBLCBQaGlsaXBzIHR1bmVyKSwKK3RoZSBtYWluIGRpZmZlcmVuY2UgaXMgdGhhdCB0aGV5IGhhdmUgYXR0YWNoZWQgYSBwcm9ncmFtbWFibGUgYXR0ZW51YXRvciB0byAzCitHUElPIGxpbmVzIGluIG9yZGVyIHRvIGdpdmUgc29tZSB2b2x1bWUgY29udHJvbC4gVGhleSBoYXZlIGFsc28gc3R1Y2sgYW4KK2luZnJhLXJlZCByZW1vdGUgY29udHJvbCBkZWNvZGVkIG9uIHRoZSBib2FyZCwgSSB3aWxsIGFkZCBzdXBwb3J0IGZvciB0aGlzCit3aGVuIEkgZ2V0IHRpbWUgKGl0IHNpbXBsZSBnZW5lcmF0ZXMgYW4gaW50ZXJydXB0IGZvciBlYWNoIGtleSBwcmVzcywgd2l0aAordGhlIGtleSBjb2RlIGlzIHBsYWNlZCBpbiB0aGUgR1BJTyBwb3J0KS4KKworSSBkb24ndCB5ZXQgaGF2ZSBhbnkgYXBwbGljYXRpb24gdG8gdGVzdCB0aGUgcmFkaW8gc3VwcG9ydC4gVGhlIHR1bmVyCitmcmVxdWVuY3kgc2V0dGluZyBzaG91bGQgd29yayBidXQgaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgYXVkaW8gbXVsdGlwbGV4ZXIKK2lzIHdyb25nLiBJZiBpdCBkb2Vzbid0IHdvcmssIHNlbmQgbWUgZW1haWwuCisKKworLSBObyBUaGFua3MgdG8gTGVhZHRlayB0aGV5IHJlZnVzZWQgdG8gYW5zd2VyIGFueSBxdWVzdGlvbnMgYWJvdXQgdGhlaXIKK2hhcmR3YXJlLiBUaGUgZHJpdmVyIHdhcyB3cml0dGVuIGJ5IHZpc3VhbCBpbnNwZWN0aW9uIG9mIHRoZSBjYXJkLiBJZiB5b3UKK3VzZSB0aGlzIGRyaXZlciwgc2VuZCBhbiBlbWFpbCBpbnN1bHQgdG8gdGhlbSwgYW5kIHRlbGwgdGhlbSB5b3Ugd29uJ3QKK2NvbnRpbnVlIGJ1eWluZyB0aGVpciBoYXJkd2FyZSB1bmxlc3MgdGhleSBzdXBwb3J0IExpbnV4LgorCistIExpdHRsZSB0aGFua3MgdG8gUHJpbmNldG9uIFRlY2hub2xvZ3kgQ29ycCAoaHR0cDovL3d3dy5wcmluY2V0b24uY29tLnR3KQord2hvIG1ha2UgdGhlIGF1ZGlvIGF0dGVudWF0b3IuIFRoZWlyIHB1YmxpY2x5IGF2YWlsYWJsZSBkYXRhLXNoZWV0IGF2YWlsYWJsZQorb24gdGhlaXIgd2ViIHNpdGUgZG9lc24ndCBpbmNsdWRlIHRoZSBjaGlwIHByb2dyYW1taW5nIGluZm9ybWF0aW9uISBIaWRkZW4KK29uIHRoZWlyIHNlcnZlciBhcmUgdGhlIGZ1bGwgZGF0YS1zaGVldHMsIGJ1dCBkb24ndCBhc2sgaG93IEkgZm91bmQgaXQuCisKK1RvIHVzZSB0aGUgZHJpdmVyIEkgdXNlIHRoZSBmb2xsb3dpbmcgb3B0aW9ucywgdGhlIHR1bmVyIGFuZCBwbGwgc2V0dGluZ3MgbWlnaHQKK2JlIGRpZmZlcmVudCBpbiB5b3VyIGNvdW50cnkKKworaW5zbW9kIHZpZGVvZGV2CitpbnNtb2QgaTJjIHNjYW49MSBpMmNfZGVidWc9MCB2ZXJib3NlPTAKK2luc21vZCB0dW5lciB0eXBlPTEgZGVidWc9MAoraW5zbW9kIGJ0dHYgIHBsbD0xIHJhZGlvPTEgY2FyZD0xNworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvUkVBRE1FLmZyZWV6ZSBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9SRUFETUUuZnJlZXplCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlZGRmYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvUkVBRE1FLmZyZWV6ZQpAQCAtMCwwICsxLDc0IEBACisKK0lmIHRoZSBib3ggZnJlZXplcyBoYXJkIHdpdGggYnR0diAuLi4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSXQgbWlnaHQgYmUgYSBidHR2IGRyaXZlciBidWcuICBJdCBhbHNvIG1pZ2h0IGJlIGJhZCBoYXJkd2FyZS4gIEl0IGFsc28KK21pZ2h0IGJlIHNvbWV0aGluZyBlbHNlIC4uLgorCitKdXN0IG1haWxpbmcgbWUgImJ0dHYgZnJlZXplcyIgaXNuJ3QgZ29pbmcgdG8gaGVscCBtdWNoLiAgVGhpcyBSRUFETUUKK2hhcyBhIGZldyBoaW50cyBob3cgeW91IGNhbiBoZWxwIHRvIHBpbiBkb3duIHRoZSBwcm9ibGVtLgorCisKK2J0dHYgYnVncworLS0tLS0tLS0tCisKK0lmIHNvbWUgdmVyc2lvbiB3b3JrcyBhbmQgYW5vdGhlciBkb2Vzbid0IGl0IGlzIGxpa2VseSB0byBiZSBhIGRyaXZlcgorYnVnLiAgSXQgaXMgdmVyeSBoZWxwZnVsIGlmIHlvdSBjYW4gdGVsbCB3aGVyZSBleGFjdGx5IGl0IGJyb2tlCisoaS5lLiB0aGUgbGFzdCB3b3JraW5nIGFuZCB0aGUgZmlyc3QgYnJva2VuIHZlcnNpb24pLgorCitXaXRoIGEgaGFyZCBmcmVlemUgeW91IHByb2JhYmx5IGRvZXNuJ3QgZmluZCBhbnl0aGluZyBpbiB0aGUgbG9nZmlsZXMuCitUaGUgb25seSB3YXkgdG8gY2FwdHVyZSBhbnkga2VybmVsIG1lc3NhZ2VzIGlzIHRvIGhvb2sgdXAgYSBzZXJpYWwKK2NvbnNvbGUgYW5kIGxldCBzb21lIHRlcm1pbmFsIGFwcGxpY2F0aW9uIGxvZyB0aGUgbWVzc2FnZXMuICAvbWUgdXNlcworc2NyZWVuLiAgU2VlIERvY3VtZW50YXRpb24vc2VyaWFsLWNvbnNvbGUudHh0IGZvciBkZXRhaWxzIG9uIHNldHRpbmcKK3VwIGEgc2VyaWFsIGNvbnNvbGUuCisKK1JlYWQgRG9jdW1lbnRhdGlvbi9vb3BzLXRyYWNpbmcudHh0IHRvIGxlYXJuIGhvdyB0byBnZXQgYW55IHVzZWZ1bAoraW5mb3JtYXRpb24gb3V0IG9mIGEgcmVnaXN0ZXIrc3RhY2sgZHVtcCBwcmludGVkIGJ5IHRoZSBrZXJuZWwgb24KK3Byb3RlY3Rpb24gZmF1bHRzIChzby1jYWxsZWQgImtlcm5lbCBvb3BzIikuCisKK0lmIHlvdSBydW4gaW50byBzb21lIGtpbmQgb2YgZGVhZGxvY2ssIHlvdSBjYW4gdHJ5IHRvIGR1bXAgYSBjYWxsIHRyYWNlCitmb3IgZWFjaCBwcm9jZXNzIHVzaW5nIHN5c3JxLXQgKHNlZSBEb2N1bWVudGF0aW9uL3N5c3JxLnR4dCkuCitUaGlzIHdheSBpdCBpcyBwb3NzaWJsZSB0byBmaWd1cmUgd2hlcmUgKmV4YWN0bHkqIHNvbWUgcHJvY2VzcyBpbiAiRCIKK3N0YXRlIGlzIHN0dWNrLgorCitJJ3ZlIHNlZW4gcmVwb3J0cyB0aGF0IGJ0dHYgMC43LnggY3Jhc2hlcyB3aGVyZWFzIDAuOC54IHdvcmtzIHJvY2sgc29saWQKK2ZvciBzb21lIHBlb3BsZS4gIFRodXMgcHJvYmFibHkgYSBzbWFsbCBidWdsZXQgbGVmdCBzb21ld2hlcmUgaW4gYnR0dgorMC43LnguICBJIGhhdmUgbm8gaWRlYSB3aGVyZSBleGFjdGx5LCBpdCB3b3JrcyBzdGFibGUgZm9yIG1lIGFuZCBhIGxvdCBvZgorb3RoZXIgcGVvcGxlLiAgQnV0IGluIGNhc2UgeW91IGhhdmUgcHJvYmxlbXMgd2l0aCB0aGUgMC43LnggdmVyc2lvbnMgeW91CitjYW4gZ2l2ZSAwLjgueCBhIHRyeSAuLi4KKworCitoYXJkd2FyZSBidWdzCistLS0tLS0tLS0tLS0tCisKK1NvbWUgaGFyZHdhcmUgY2FuJ3QgZGVhbCB3aXRoIFBDSS1QQ0kgdHJhbnNmZXJzIChpLmUuIGdyYWJiZXIgPT4gdmdhKS4KK1NvbWV0aW1lcyBwcm9ibGVtcyBzaG93IHVwIHdpdGggYnR0diBqdXN0IGJlY2F1c2Ugb2YgdGhlIGhpZ2ggbG9hZCBvbgordGhlIFBDSSBidXMuIFRoZSBidDg0OC84NzggY2hpcHMgaGF2ZSBhIGZldyB3b3JrYXJvdW5kcyBmb3Iga25vd24KK2luY29tcGF0aWJpbGl0aWVzLCBzZWUgUkVBRE1FLnF1aXJrcy4KKworU29tZSBmb2xrcyByZXBvcnQgdGhhdCBpbmNyZWFzaW5nIHRoZSBwY2kgbGF0ZW5jeSBoZWxwcyB0b28sCithbHRocm91Z2h0IEknbSBub3Qgc3VyZSB3aGVuZXZlciB0aGlzIHJlYWxseSBmaXhlcyB0aGUgcHJvYmxlbXMgb3IKK29ubHkgbWFrZXMgaXQgbGVzcyBsaWtlbHkgdG8gaGFwcGVuLiAgQm90aCBidHR2IGFuZCBidGF1ZGlvIGhhdmUgYQoraW5zbW9kIG9wdGlvbiB0byBzZXQgdGhlIFBDSSBsYXRlbmN5IG9mIHRoZSBkZXZpY2UuCisKK1NvbWUgbWFpbmJvYXJkIGhhdmUgcHJvYmxlbXMgdG8gZGVhbCBjb3JyZWN0bHkgd2l0aCBtdWx0aXBsZSBkZXZpY2VzCitkb2luZyBETUEgYXQgdGhlIHNhbWUgdGltZS4gIGJ0dHYgKyBpZGUgc2VlbXMgdG8gY2F1c2UgdGhpcyBzb21ldGltZXMsCitpZiB0aGlzIGlzIHRoZSBjYXNlIHlvdSBsaWtlbHkgc2VlIGZyZWV6ZXMgb25seSB3aXRoIHZpZGVvIGFuZCBoYXJkIGRpc2sKK2FjY2VzcyBhdCB0aGUgc2FtZSB0aW1lLiAgVXBkYXRpbmcgdGhlIElERSBkcml2ZXIgdG8gZ2V0IHRoZSBsYXRlc3QgYW5kCitncmVhdGVzdCB3b3JrYXJvdW5kcyBmb3IgaGFyZHdhcmUgYnVncyBtaWdodCBmaXggdGhlc2UgcHJvYmxlbXMuCisKKworb3RoZXIKKy0tLS0tCisKK0lmIHlvdSB1c2Ugc29tZSBiaW5hcnktb25seSB5dW5rIChsaWtlIG52aWRpYSBtb2R1bGUpIHRyeSB0byByZXByb2R1Y2UKK3RoZSBwcm9ibGVtIHdpdGhvdXQuCisKK0lSUSBzaGFyaW5nIGlzIGtub3duIHRvIGNhdXNlIHByb2JsZW1zIGluIHNvbWUgY2FzZXMuICBJdCB3b3JrcyBqdXN0CitmaW5lIGluIHRoZW9yeSBhbmQgbWFueSBjb25maWd1cmF0aW9ucy4gIE5ldmVybGVzcyBpdCBtaWdodCBiZSB3b3J0aCBhCit0cnkgdG8gc2h1ZmZsZSBhcm91bmQgdGhlIFBDSSBjYXJkcyB0byBnaXZlIGJ0dHYgYW5vdGhlciBJUlEgb3IgbWFrZQoraXQgc2hhcmUgdGhlIElSUSB3aXRoIHNvbWUgb3RoZXIgcGllY2Ugb2YgaGFyZHdhcmUuICBJUlEgc2hhcmluZyB3aXRoCitWR0EgY2FyZHMgc2VlbXMgdG8gY2F1c2UgdHJvdWJsZSBzb21ldGltZXMuICBJJ3ZlIGFsc28gc2VlbiBmdW5ueQorZWZmZWN0cyB3aXRoIGJ0dHYgc2hhcmluZyB0aGUgSVJRIHdpdGggdGhlIEFDUEkgYnJpZGdlIChhbmQKK2FwY2ktZW5hYmxlZCBrZXJuZWwpLgorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvUkVBRE1FLnF1aXJrcyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9SRUFETUUucXVpcmtzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyZTAzOTIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvUkVBRE1FLnF1aXJrcwpAQCAtMCwwICsxLDgzIEBACisKK0JlbG93IGlzIHdoYXQgdGhlIGJ0ODc4IGRhdGEgYm9vayBzYXlzIGFib3V0IHRoZSBQQ0kgYnVnIGNvbXBhdGliaWxpdHkKK21vZGVzIG9mIHRoZSBidDg3OCBjaGlwLgorCitUaGUgdHJpdG9uMSBpbnNtb2Qgb3B0aW9uIHNldHMgdGhlIEVOX1RCRlggYml0IGluIHRoZSBjb250cm9sIHJlZ2lzdGVyLgorVGhlIHZzZnggaW5zbW9kIG9wdGlvbiBkb2VzIHRoZSBzYW1lIGZvciBFTl9WU0ZYIGJpdC4gIElmIHlvdSBoYXZlCitzdGFiaWxpdHkgcHJvYmxlbXMgeW91IGNhbiB0cnkgaWYgb25lIG9mIHRoZXNlIG9wdGlvbnMgbWFrZXMgeW91ciBib3gKK3dvcmsgc29saWQuCisKK2RyaXZlcnMvcGNpL3F1aXJrcy5jIGtub3dzIGFib3V0IHRoZXNlIGlzc3VlcywgdGhpcyB3YXkgdGhlc2UgYml0cyBhcmUKK2VuYWJsZWQgYXV0b21hZ2ljYWxseSBmb3Iga25vd24tYnVnZ3kgY2hpcHNldHMgKGxvb2sgYXQgdGhlIGtlcm5lbAorbWVzc2FnZXMsIGJ0dHYgdGVsbHMgeW91KS4KKworSFRILAorCisgIEdlcmQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBjdXQgaGVyZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOb3JtYWwgUENJIE1vZGUKKy0tLS0tLS0tLS0tLS0tLQorCitUaGUgUENJIFJFUSBzaWduYWwgaXMgdGhlIGxvZ2ljYWwtb3Igb2YgdGhlIGluY29taW5nIGZ1bmN0aW9uIHJlcXVlc3RzLgorVGhlIGludGVyLW5hbCBHTlRbMDoxXSBzaWduYWxzIGFyZSBnYXRlZCBhc3luY2hyb25vdXNseSB3aXRoIEdOVCBhbmQKK2RlbXVsdGlwbGV4ZWQgYnkgdGhlIGF1ZGlvIHJlcXVlc3Qgc2lnbmFsLiBUaHVzIHRoZSBhcmJpdGVyIGRlZmF1bHRzIHRvCit0aGUgdmlkZW8gZnVuY3Rpb24gYXQgcG93ZXItdXAgYW5kIHBhcmtzIHRoZXJlIGR1cmluZyBubyByZXF1ZXN0cyBmb3IKK2J1cyBhY2Nlc3MuIFRoaXMgaXMgZGVzaXJhYmxlIHNpbmNlIHRoZSB2aWRlbyB3aWxsIHJlcXVlc3QgdGhlIGJ1cyBtb3JlCitvZnRlbi4gSG93ZXZlciwgdGhlIGF1ZGlvIHdpbGwgaGF2ZSBoaWdoZXN0IGJ1cyBhY2Nlc3MgcHJpb3JpdHkuIFRodXMKK3RoZSBhdWRpbyB3aWxsIGhhdmUgZmlyc3QgYWNjZXNzIHRvIHRoZSBidXMgZXZlbiB3aGVuIGlzc3VpbmcgYSByZXF1ZXN0CithZnRlciB0aGUgdmlkZW8gcmVxdWVzdCBidXQgYmVmb3JlIHRoZSBQQ0kgZXh0ZXJuYWwgYXJiaXRlciBoYXMgZ3JhbnRlZAorYWNjZXNzIHRvIHRoZSBCdDg3OS4gTmVpdGhlciBmdW5jdGlvbiBjYW4gcHJlZW1wdCB0aGUgb3RoZXIgb25jZSBvbiB0aGUKK2J1cy4gVGhlIGR1cmF0aW9uIHRvIGVtcHR5IHRoZSBlbnRpcmUgdmlkZW8gUENJIEZJRk8gb250byB0aGUgUENJIGJ1cyBpcwordmVyeSBzaG9ydCBjb21wYXJlZCB0byB0aGUgYnVzIGFjY2VzcyBsYXRlbmN5IHRoZSBhdWRpbyBQQ0kgRklGTyBjYW4KK3RvbGVyYXRlLgorCisKKzQzMEZYIENvbXBhdGliaWxpdHkgTW9kZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doZW4gdXNpbmcgdGhlIDQzMEZYIFBDSSwgdGhlIGZvbGxvd2luZyBydWxlcyB3aWxsIGVuc3VyZQorY29tcGF0aWJpbGl0eToKKworICgxKSBEZWFzc2VydCBSRVEgYXQgdGhlIHNhbWUgdGltZSBhcyBhc3NlcnRpbmcgRlJBTUUuCisgKDIpIERvIG5vdCByZWFzc2VydCBSRVEgdG8gcmVxdWVzdCBhbm90aGVyIGJ1cyB0cmFuc2FjdGlvbiB1bnRpbCBhZnRlcgorICAgICBmaW5pc2gtaW5nIHRoZSBwcmV2aW91cyB0cmFuc2FjdGlvbi4KKworU2luY2UgdGhlIGluZGl2aWR1YWwgYnVzIG1hc3RlcnMgZG8gbm90IGhhdmUgZGlyZWN0IGNvbnRyb2wgb2YgUkVRLCBhCitzaW1wbGUgbG9naWNhbC1vciBvZiB2aWRlbyBhbmQgYXVkaW8gcmVxdWVzdHMgd291bGQgdmlvbGF0ZSB0aGUgcnVsZXMuCitUaHVzLCBib3RoIHRoZSBhcmJpdGVyIGFuZCB0aGUgaW5pdGlhdG9yIGNvbnRhaW4gNDMwRlggY29tcGF0aWJpbGl0eQorbW9kZSBsb2dpYy4gVG8gZW5hYmxlIDQzMEZYIG1vZGUsIHNldCB0aGUgRU5fVEJGWCBiaXQgYXMgaW5kaWNhdGVkIGluCitEZXZpY2UgQ29udHJvbCBSZWdpc3RlciBvbiBwYWdlIDEwNC4KKworV2hlbiBFTl9UQkZYIGlzIGVuYWJsZWQsIHRoZSBhcmJpdGVyIGVuc3VyZXMgdGhhdCB0aGUgdHdvIGNvbXBhdGliaWxpdHkKK3J1bGVzIGFyZSBzYXRpc2ZpZWQuIEJlZm9yZSBHTlQgaXMgYXNzZXJ0ZWQgYnkgdGhlIFBDSSBhcmJpdGVyLCB0aGlzCitpbnRlcm5hbCBhcmJpdGVyIG1heSBzdGlsbCBsb2dpY2FsLW9yIHRoZSB0d28gcmVxdWVzdHMuIEhvd2V2ZXIsIG9uY2UKK3RoZSBHTlQgaXMgaXNzdWVkLCB0aGlzIGFyYml0ZXIgbXVzdCBsb2NrIGluIGl0cyBkZWNpc2lvbiBhbmQgbm93IHJvdXRlCitvbmx5IHRoZSBncmFudGVkIHJlcXVlc3QgdG8gdGhlIFJFUSBwaW4uIFRoZSBhcmJpdGVyIGRlY2lzaW9uIGxvY2sKK2hhcHBlbnMgcmVnYXJkbGVzcyBvZiB0aGUgc3RhdGUgb2YgRlJBTUUgYmVjYXVzZSBpdCBkb2VzIG5vdCBrbm93IHdoZW4KK0ZSQU1FIHdpbGwgYmUgYXNzZXJ0ZWQgKHR5cGljYWxseSAtIGVhY2ggaW5pdGlhdG9yIHdpbGwgYXNzZXJ0IEZSQU1FIG9uCit0aGUgY3ljbGUgZm9sbG93aW5nIEdOVCkuIFdoZW4gRlJBTUUgaXMgYXNzZXJ0ZWQsIGl0IGlzIHRoZSBpbml0aWF0b3IgcworcmVzcG9uc2liaWxpdHkgdG8gcmVtb3ZlIGl0cyByZXF1ZXN0IGF0IHRoZSBzYW1lIHRpbWUuIEl0IGlzIHRoZQorYXJiaXRlcnMgcmVzcG9uc2liaWxpdHkgdG8gYWxsb3cgdGhpcyByZXF1ZXN0IHRvIGZsb3cgdGhyb3VnaCB0byBSRVEgYW5kCitub3QgYWxsb3cgdGhlIG90aGVyIHJlcXVlc3QgdG8gaG9sZCBSRVEgYXNzZXJ0ZWQuIFRoZSBkZWNpc2lvbiBsb2NrIG1heQorYmUgcmVtb3ZlZCBhdCB0aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlvbjogZm9yIGV4YW1wbGUsIHdoZW4gdGhlIGJ1cyBpcworaWRsZSAoRlJBTUUgYW5kIElSRFkpLiBUaGUgYXJiaXRlciBkZWNpc2lvbiBtYXkgdGhlbiBjb250aW51ZQorYXN5bmNocm9ub3VzbHkgdW50aWwgR05UIGlzIGFnYWluIGFzc2VydGVkLgorCisKK0ludGVyZmFjaW5nIHdpdGggTm9uLVBDSSAyLjEgQ29tcGxpYW50IENvcmUgTG9naWMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSBzbWFsbCBwZXJjZW50YWdlIG9mIGNvcmUgbG9naWMgZGV2aWNlcyBtYXkgc3RhcnQgYSBidXMgdHJhbnNhY3Rpb24KK2R1cmluZyB0aGUgc2FtZSBjeWNsZSB0aGF0IEdOVCBpcyBkZS1hc3NlcnRlZC4gVGhpcyBpcyBub24gUENJIDIuMQorY29tcGxpYW50LiBUbyBlbnN1cmUgY29tcGF0aWJpbGl0eSB3aGVuIHVzaW5nIFBDcyB3aXRoIHRoZXNlIFBDSQorY29udHJvbGxlcnMsIHRoZSBFTl9WU0ZYIGJpdCBtdXN0IGJlIGVuYWJsZWQgKHJlZmVyIHRvIERldmljZSBDb250cm9sCitSZWdpc3RlciBvbiBwYWdlIDEwNCkuIFdoZW4gaW4gdGhpcyBtb2RlLCB0aGUgYXJiaXRlciBkb2VzIG5vdCBwYXNzIEdOVAordG8gdGhlIGludGVybmFsIGZ1bmN0aW9ucyB1bmxlc3MgUkVRIGlzIGFzc2VydGVkLiBUaGlzIHByZXZlbnRzIGEgYnVzCit0cmFuc2FjdGlvbiBmcm9tIHN0YXJ0aW5nIHRoZSBzYW1lIGN5Y2xlIGFzIEdOVCBpcyBkZS1hc3NlcnRlZC4gVGhpcworYWxzbyBoYXMgdGhlIHNpZGUgZWZmZWN0IG9mIG5vdCBiZWluZyBhYmxlIHRvIHRha2UgYWR2YW50YWdlIG9mIGJ1cworcGFya2luZywgdGh1cyBsb3dlcmluZyBhcmJpdHJhdGlvbiBwZXJmb3JtYW5jZS4gVGhlIEJ0ODc5IGRyaXZlcnMgbXVzdAorcXVlcnkgZm9yIHRoZXNlIG5vbi1jb21wbGlhbnQgZGV2aWNlcywgYW5kIHNldCB0aGUgRU5fVlNGWCBiaXQgb25seSBpZgorcmVxdWlyZWQuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9Tb3VuZC1GQVEgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvU291bmQtRkFRCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzZjFkNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvU291bmQtRkFRCkBAIC0wLDAgKzEsMTQ4IEBACisKK2J0dHYgYW5kIHNvdW5kIG1pbmkgaG93dG8KKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlcmUgYXJlIGEgbG90IG9mIGRpZmZlcmVudCBidDg0OC84NDkvODc4Lzg3OSBiYXNlZCBib2FyZHMgYXZhaWxhYmxlLgorTWFraW5nIHZpZGVvIHdvcmsgb2Z0ZW4gaXMgbm90IGEgYmlnIGRlYWwsIGJlY2F1c2UgdGhpcyBpcyBoYW5kbGVkCitjb21wbGV0ZWx5IGJ5IHRoZSBidDh4eCBjaGlwLCB3aGljaCBpcyBjb21tb24gb24gYWxsIGJvYXJkcy4gIEJ1dAorc291bmQgaXMgaGFuZGxlZCBpbiBzbGlnaHRseSBkaWZmZXJlbnQgd2F5cyBvbiBlYWNoIGJvYXJkLgorCitUbyBoYW5kbGUgdGhlIGdyYWJiZXIgYm9hcmRzIGNvcnJlY3RseSwgdGhlcmUgaXMgYSBhcnJheSB0dmNhcmRzW10gaW4KK2J0dHYtY2FyZHMuYywgd2hpY2ggaG9sZHMgdGhlIGluZm9ybWF0aW9uIHJlcXVpcmVkIGZvciBlYWNoIGJvYXJkLgorU291bmQgd2lsbCB3b3JrIG9ubHksIGlmIHRoZSBjb3JyZWN0IGVudHJ5IGlzIHVzZWQgKGZvciB2aWRlbyBpdCBvZnRlbgorbWFrZXMgbm8gZGlmZmVyZW5jZSkuICBUaGUgYnR0diBkcml2ZXIgcHJpbnRzIGEgbGluZSB0byB0aGUga2VybmVsCitsb2csIHRlbGxpbmcgd2hpY2ggY2FyZCB0eXBlIGlzIHVzZWQuICBMaWtlIHRoaXMgb25lOgorCisJYnR0djA6IG1vZGVsOiBCVDg0OChIYXVwcGF1Z2Ugb2xkKSBbYXV0b2RldGVjdGVkXQorCitZb3Ugc2hvdWxkIHZlcmlmeSB0aGlzIGlzIGNvcnJlY3QuICBJZiBpdCBpc24ndCwgeW91IGhhdmUgdG8gcGFzcyB0aGUKK2NvcnJlY3QgYm9hcmQgdHlwZSBhcyBpbnNtb2QgYXJndW1lbnQsICJpbnNtb2QgYnR0diBjYXJkPTIiIGZvcgorZXhhbXBsZS4gIFRoZSBmaWxlIENBUkRMSVNUIGhhcyBhIGxpc3Qgb2YgdmFsaWQgYXJndW1lbnRzIGZvciBjYXJkLgorSWYgeW91ciBjYXJkIGlzbid0IGxpc3RlZCB0aGVyZSwgeW91IG1pZ2h0IGNoZWNrIHRoZSBzb3VyY2UgY29kZSBmb3IKK25ldyBlbnRyaWVzIHdoaWNoIGFyZSBub3QgbGlzdGVkIHlldC4gIElmIHRoZXJlIGlzbid0IG9uZSBmb3IgeW91cgorY2FyZCwgeW91IGNhbiBjaGVjayBpZiBvbmUgb2YgdGhlIGV4aXN0aW5nIGVudHJpZXMgZG9lcyB3b3JrIGZvciB5b3UKKyhqdXN0IHRyaWFsIGFuZCBlcnJvci4uLikuCisKK1NvbWUgYm9hcmRzIGhhdmUgYW4gZXh0cmEgcHJvY2Vzc29yIGZvciBzb3VuZCB0byBkbyBzdGVyZW8gZGVjb2RpbmcKK2FuZCBvdGhlciBuaWNlIGZlYXR1cmVzLiAgVGhlIG1zcDM0eHggY2hpcHMgYXJlIHVzZWQgYnkgSGF1cHBhdWdlIGZvcgorZXhhbXBsZS4gIElmIHlvdXIgYm9hcmQgaGFzIG9uZSwgeW91IG1pZ2h0IGhhdmUgdG8gbG9hZCBhIGhlbHBlcgorbW9kdWxlIGxpa2UgbXNwMzQwMC5vIHRvIG1ha2Ugc291bmQgd29yay4gIElmIHRoZXJlIGlzbid0IG9uZSBmb3IgdGhlCitjaGlwIHVzZWQgb24geW91ciBib2FyZDogIEJhZCBsdWNrLiAgU3RhcnQgd3JpdGluZyBhIG5ldyBvbmUuICBXZWxsLAoreW91IG1pZ2h0IHdhbnQgdG8gY2hlY2sgdGhlIHZpZGVvNGxpbnV4IG1haWxpbmcgbGlzdCBhcmNoaXZlIGZpcnN0Li4uCisKK09mIGNvdXJzZSB5b3UgbmVlZCBhIGNvcnJlY3RseSBpbnN0YWxsZWQgc291bmRjYXJkIHVubGVzcyB5b3UgaGF2ZSB0aGUKK3NwZWFrZXJzIGNvbm5lY3RlZCBkaXJlY3RseSB0byB0aGUgZ3JhYmJlciBib2FyZC4gIEhpbnQ6IGNoZWNrIHRoZQorbWl4ZXIgc2V0dGluZ3MgdG9vLiAgQUxTQSBmb3IgZXhhbXBsZSBoYXMgZXZlcnl0aGluZyBtdXRlZCBieSBkZWZhdWx0LgorCisKK0hvdyBzb3VuZCB3b3JrcyBpbiBkZXRhaWwKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworU3RpbGwgZG9lc24ndCB3b3JrPyAgTG9va3MgbGlrZSBzb21lIGRyaXZlciBoYWNraW5nIGlzIHJlcXVpcmVkLgorQmVsb3cgaXMgYSBkby1pdC15b3Vyc2VsZiBkZXNjcmlwdGlvbiBmb3IgeW91LgorCitUaGUgYnQ4eHggY2hpcHMgaGF2ZSAzMiBnZW5lcmFsIHB1cnBvc2UgcGlucywgYW5kIHJlZ2lzdGVycyB0byBjb250cm9sCit0aGVzZSBwaW5zLiAgT25lIHJlZ2lzdGVyIGlzIHRoZSBvdXRwdXQgZW5hYmxlIHJlZ2lzdGVyCisoQlQ4NDhfR1BJT19PVVRfRU4pLCBpdCBzYXlzIHdoaWNoIHBpbnMgYXJlIGFjdGl2ZWx5IGRyaXZlbiBieSB0aGUKK2J0ODQ4IGNoaXAuICBBbm90aGVyIG9uZSBpcyB0aGUgZGF0YSByZWdpc3RlciAoQlQ4NDhfR1BJT19EQVRBKSwgd2hlcmUKK3lvdSBjYW4gZ2V0L3NldCB0aGUgc3RhdHVzIGlmIHRoZXNlIHBpbnMuICBUaGV5IGNhbiBiZSB1c2VkIGZvciBpbnB1dAorYW5kIG91dHB1dC4KKworTW9zdCBncmFiYmVyIGJvYXJkIHZlbmRvcnMgdXNlIHRoZXNlIHBpbnMgdG8gY29udHJvbCBhbiBleHRlcm5hbCBjaGlwCit3aGljaCBkb2VzIHRoZSBzb3VuZCByb3V0aW5nLiAgQnV0IGV2ZXJ5IGJvYXJkIGlzIGEgbGl0dGxlIGRpZmZlcmVudC4KK1RoZXNlIHBpbnMgYXJlIGFsc28gdXNlZCBieSBzb21lIGNvbXBhbmllcyB0byBkcml2ZSByZW1vdGUgY29udHJvbAorcmVjZWl2ZXIgY2hpcHMuICBTb21lIGJvYXJkcyB1c2UgdGhlIGkyYyBidXMgaW5zdGVhZCBvZiB0aGUgZ3BpbyBwaW5zCit0byBjb25uZWN0IHRoZSBtdXggY2hpcC4KKworQXMgbWVudGlvbmVkIGFib3ZlLCB0aGVyZSBpcyBhIGFycmF5IHdoaWNoIGhvbGRzIHRoZSByZXF1aXJlZAoraW5mb3JtYXRpb25zIGZvciBlYWNoIGtub3duIGJvYXJkLiAgWW91IGJhc2ljYWxseSBoYXZlIHRvIGNyZWF0ZSBhIG5ldworbGluZSBmb3IgeW91ciBib2FyZC4gIFRoZSBpbXBvcnRhbnQgZmllbGRzIGFyZSB0aGVzZSB0d286CisKK3N0cnVjdCB0dmNhcmQKK3sKKwlbIC4uLiBdCisJdTMyIGdwaW9tYXNrOworCXUzMiBhdWRpb211eFs2XTsgLyogVHVuZXIsIFJhZGlvLCBleHRlcm5hbCwgaW50ZXJuYWwsIG11dGUsIHN0ZXJlbyAqLworfTsKKworZ3Bpb21hc2sgc3BlY2lmaWVzIHdoaWNoIHBpbnMgYXJlIHVzZWQgdG8gY29udHJvbCB0aGUgYXVkaW8gbXV4IGNoaXAuCitUaGUgY29ycmVzcG9uZGluZyBiaXRzIGluIHRoZSBvdXRwdXQgZW5hYmxlIHJlZ2lzdGVyCisoQlQ4NDhfR1BJT19PVVRfRU4pIHdpbGwgYmUgc2V0IGFzIHRoZXNlIHBpbnMgbXVzdCBiZSBkcml2ZW4gYnkgdGhlCitidDg0OCBjaGlwLgorCitUaGUgYXVkaW9tdXhbXSBhcnJheSBob2xkcyB0aGUgZGF0YSB2YWx1ZXMgZm9yIHRoZSBkaWZmZXJlbnQgaW5wdXRzCisoaS5lLiB3aGljaCBwaW5zIG11c3QgYmUgaGlnaC9sb3cgZm9yIHR1bmVyL211dGUvLi4uKS4gIFRoaXMgd2lsbCBiZQord3JpdHRlbiB0byB0aGUgZGF0YSByZWdpc3RlciAoQlQ4NDhfR1BJT19EQVRBKSB0byBzd2l0Y2ggdGhlIGF1ZGlvCittdXguCisKKworV2hhdCB5b3UgaGF2ZSB0byBkbyBpcyBmaWd1cmUgb3V0IHRoZSBjb3JyZWN0IHZhbHVlcyBmb3IgZ3Bpb21hc2sgYW5kCit0aGUgYXVkaW9tdXggYXJyYXkuICBJZiB5b3UgaGF2ZSBXaW5kb3dzIGFuZCB0aGUgZHJpdmVycyBmb3VyIHlvdXIKK2NhcmQgaW5zdGFsbGVkLCB5b3UgbWlnaHQgdG8gY2hlY2sgb3V0IGlmIHlvdSBjYW4gcmVhZCB0aGVzZSByZWdpc3RlcnMKK3ZhbHVlcyB1c2VkIGJ5IHRoZSB3aW5kb3dzIGRyaXZlci4gIEEgdG9vbCB0byBkbyB0aGlzIGlzIGF2YWlsYWJsZQorZnJvbSBmdHA6Ly90ZWxlcHJlc2VuY2UuZG1lbS5zdHJhdGguYWMudWsvcHViL2J0ODQ4L3dpbnV0aWwsIGJ1dCBpdAorZG9lcydudCB3b3JrIHdpdGggYnQ4NzggYm9hcmRzIGFjY29yZGluZyB0byBzb21lIHJlcG9ydHMgSSByZWNlaXZlZC4KK0Fub3RoZXIgb25lIHdpdGggYnQ4Nzggc3VwcG9ydCBpcyBhdmFpbGFibGUgZnJvbQoraHR0cDovL2J0d2luY2FwLnNvdXJjZWZvcmdlLm5ldC9GaWxlcy9idHNweTIuMDAuemlwCisKK1lvdSBtaWdodCBhbHNvIGRpZyBhcm91bmQgaW4gdGhlICouaW5pIGZpbGVzIG9mIHRoZSBXaW5kb3dzIGFwcGxpY2F0aW9ucy4KK1lvdSBjYW4gaGF2ZSBhIGxvb2sgYXQgdGhlIGJvYXJkIHRvIHNlZSB3aGljaCBvZiB0aGUgZ3BpbyBwaW5zIGFyZQorY29ubmVjdGVkIGF0IGFsbCBhbmQgdGhlbiBzdGFydCB0cmlhbC1hbmQtZXJyb3IgLi4uCisKKworU3RhcnRpbmcgd2l0aCByZWxlYXNlIDAuNy40MSBidHR2IGhhcyBhIG51bWJlciBvZiBpbnNtb2Qgb3B0aW9ucyB0bworbWFrZSB0aGUgZ3BpbyBkZWJ1Z2dpbmcgZWFzaWVyOgorCitidHR2X2dwaW89MC8xCQllbmFibGUvZGlzYWJsZSBncGlvIGRlYnVnIG1lc3NhZ2VzCitncGlvbWFzaz1uCQlzZXQgdGhlIGdwaW9tYXNrIHZhbHVlCithdWRpb211eD1pLGosLi4uCXNldCB0aGUgdmFsdWVzIG9mIHRoZSBhdWRpb211eCBhcnJheQorYXVkaW9hbGw9YQkJc2V0IHRoZSB2YWx1ZXMgb2YgdGhlIGF1ZGlvbXV4IGFycmF5IChvbmUKKwkJCXZhbHVlIGZvciBhbGwgYXJyYXkgZWxlbWVudHMsIHVzZWZ1bCB0byBjaGVjaworCQkJb3V0IHdoaWNoIGVmZmVjdCB0aGUgcGFydGljdWxhciB2YWx1ZSBoYXMpLgorCitUaGUgbWVzc2FnZXMgcHJpbnRlZCB3aXRoIGJ0dHZfZ3Bpbz0xIGxvb2sgbGlrZSB0aGlzOgorCisJYnR0djA6IGdwaW86IGVuPTAwMDAwMDI3LCBvdXQ9MDAwMDAwMjQgaW49MDBmZmZmZDggW2F1ZGlvOiBvZmZdCisKK2VuICA9CW91dHB1dCBfZW5fYWJsZSByZWdpc3RlciAoQlQ4NDhfR1BJT19PVVRfRU4pCitvdXQgPQlfb3V0X3B1dCBiaXRzIG9mIHRoZSBkYXRhIHJlZ2lzdGVyIChCVDg0OF9HUElPX0RBVEEpLAorCWkuZS4gQlQ4NDhfR1BJT19EQVRBICYgQlQ4NDhfR1BJT19PVVRfRU4KK2luICA9IAlfaW5fcHV0IGJpdHMgb2YgdGhlIGRhdGEgcmVnaXN0ZXIsCisJaS5lLiBCVDg0OF9HUElPX0RBVEEgJiB+QlQ4NDhfR1BJT19PVVRfRU4KKworCisKK090aGVyIGVsZW1lbnRzIG9mIHRoZSB0dmNhcmRzIGFycmF5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJZiB5b3UgYXJlIHRyeWluZyB0byBtYWtlIGEgbmV3IGNhcmQgd29yayB5b3UgbWlnaHQgZmluZCBpdCB1c2VmdWwgdG8KK2tub3cgd2hhdCB0aGUgb3RoZXIgZWxlbWVudHMgaW4gdGhlIHR2Y2FyZHMgYXJyYXkgYXJlIGdvb2QgZm9yOgorCit2aWRlb19pbnB1dHMgICAgLSAjIG9mIHZpZGVvIGlucHV0cyB0aGUgY2FyZCBoYXMKK2F1ZGlvX2lucHV0cyAgICAtIGhpc3RvcmljYWwgY3J1ZnQsIG5vdCB1c2VkIGFueSBtb3JlLgordHVuZXIgICAgICAgICAgIC0gd2hpY2ggaW5wdXQgaXMgdGhlIHR1bmVyCitzdmhzICAgICAgICAgICAgLSB3aGljaCBpbnB1dCBpcyBzdmhzIChhbGwgb3RoZXJzIGFyZSBsYWJlbGVkIGNvbXBvc2l0ZSkKK211eHNlbCAgICAgICAgICAtIHZpZGVvIG11eCwgaW5wdXQtPnJlZ2lzdGVydmFsdWUgbWFwcGluZworcGxsICAgICAgICAgICAgIC0gc2FtZSBhcyBwbGw9IGluc21vZCBvcHRpb24KK3R1bmVyX3R5cGUgICAgICAtIHNhbWUgYXMgdHVuZXI9IGluc21vZCBvcHRpb24KKypfbW9kdWxlbmFtZSAgICAtIGhpbnQgd2hlbmV2ZXIgc29tZSBjYXJkIG5lZWRzIHRoaXMgb3IgdGhhdCBhdWRpbworCQkgIG1vZHVsZSBsb2FkZWQgdG8gd29yayBwcm9wZXJseS4KK2hhc19yYWRpbwktIHdoZW5ldmVyIHRoaXMgVFYgY2FyZCBoYXMgYSByYWRpbyB0dW5lci4KK25vX21zcDM0eHgJLSAiMSIgZGlzYWJsZXMgbG9hZGluZyBvZiBtc3AzNDAwLm8gbW9kdWxlCitub190ZGE5ODc1CS0gIjEiIGRpc2FibGVzIGxvYWRpbmcgb2YgdGRhOTg3NS5vIG1vZHVsZQorbmVlZHNfdHZhdWRpbwktIHNldCB0byAiMSIgdG8gbG9hZCB0dmF1ZGlvLm8gbW9kdWxlCisKK0lmIHNvbWUgY29uZmlnIGl0ZW0gaXMgc3BlY2lmaWVkIGJvdGggZnJvbSB0aGUgdHZjYXJkcyBhcnJheSBhbmQgYXMKK2luc21vZCBvcHRpb24sIHRoZSBpbnNtb2Qgb3B0aW9uIHRha2VzIHByZWNlZGVuY2UuCisKKworCitHb29kIGx1Y2ssCisKKyAgR2VyZAorCisKK1BTOiBJZiB5b3UgaGF2ZSBhIG5ldyB3b3JraW5nIGVudHJ5LCBtYWlsIGl0IHRvIG1lLgorCistLQorR2VyZCBLbm9yciA8a3JheGVsQGJ5dGVzZXgub3JnPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1NwZWNzIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1NwZWNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzMjQ2NmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvU3BlY3MKQEAgLTAsMCArMSwzIEBACitQaGlsaXBzCQlodHRwOi8vd3d3LlNlbWljb25kdWN0b3JzLkNPTS9waXAvCitDb25leGFudAlodHRwOi8vd3d3LmNvbmV4YW50LmNvbS8KK01pY3JvbmFzCWh0dHA6Ly93d3cubWljcm9uYXMuY29tL2VuL2hvbWUvaW5kZXguaHRtbApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1RIQU5LUyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9USEFOS1MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTUwYWE3OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9USEFOS1MKQEAgLTAsMCArMSwyNCBAQAorTWFueSB0aGFua3MgdG86CisKKy0gTWFya3VzIFNjaHJvZWRlciA8c2Nocm9lZG1AdW5pLWR1ZXNzZWxkb3JmLmRlPiBmb3IgaW5mb3JtYXRpb24gb24gdGhlIEJ0ODQ4CisgIGFuZCB0dW5lciBwcm9ncmFtbWluZyBhbmQgaGlzIGNvbnRyb2wgcHJvZ3JhbSB4dHZjLgorCistIE1hcnRpbiBCdWNrIDxtYXJ0aW4tMi5idWNrQHN0dWRlbnQudW5pLXVsbS5kZT4gZm9yIGhpcyBncmVhdCBWaWRlb3RleHQKKyAgcGFja2FnZS4KKworLSBHZXJkIEtub3JyIDxrcmF4ZWxAY3MudHUtYmVybGluLmRlPiBmb3IgdGhlIE1TUDM0MDAgc3VwcG9ydCBhbmQgdGhlIG1vZHVsYXIKKyAgSTJDLCB0dW5lciwgLi4uIHN1cHBvcnQuCisKKworLSBNQVRSSVggVmlzaW9uIGZvciBnaXZpbmcgdXMgMiBjYXJkcyBmb3IgZnJlZSwgd2hpY2ggbWFkZSBzdXBwb3J0IG9mCisgIHNpbmdsZSBjcnlzdGFsIG9wZXJhdGlvbiBwb3NzaWJsZS4KKworLSBNSVJPIGZvciBwcm92aWRpbmcgYSBmcmVlIFBDVFYgY2FyZCBhbmQgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlCisgIGNvbXBvbmVudHMgb24gdGhlaXIgY2FyZHMuIChFLmcuIGhvdyB0aGUgdHVuZXIgdHlwZSBpcyBkZXRlY3RlZCkKKyAgV2l0aG91dCB0aGVpciBjYXJkIEkgY291bGQgbm90IGhhdmUgZGVidWdnZWQgdGhlIE5UU0MgbW9kZS4KKworLSBIYXVwcGF1Z2UgZm9yIHRlbGxpbmcgaG93IHRoZSBzb3VuZCBpbnB1dCBpcyBzZWxlY3RlZCBhbmQgd2hhdCBjb21wb25lbnRzCisgIHRoZXkgZG8gYW5kIHdpbGwgdXNlIG9uIHRoZWlyIHJhZGlvIGNhcmRzLgorICBBbHNvIG1hbnkgdGhhbmtzIGZvciBmYXhpbmcgbWUgdGhlIEZNMTIxNiBkYXRhIHNoZWV0LgorCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9UdW5lcnMgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvVHVuZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhMzcxZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvVHVuZXJzCkBAIC0wLDAgKzEsMTE1IEBACisxKSBUdW5lciBQcm9ncmFtbWluZworPT09PT09PT09PT09PT09PT09PT0KK1RoZXJlIGFyZSBzb21lIGZsYXZvcnMgb2YgVHVuZXIgcHJvZ3JhbW1pbmcgQVBJcy4KK1RoZXNlIGRpZmZlciBtYWlubHkgYnkgdGhlIGJhbmRzd2l0Y2ggYnl0ZS4KKworICAgIEw9IExHX0FQSSAgICAgICAoVkhGX0xPPTB4MDEsIFZIRl9IST0weDAyLCBVSEY9MHgwOCwgcmFkaW89MHgwNCkKKyAgICBQPSBQSElMSVBTX0FQSSAgKFZIRl9MTz0weEEwLCBWSEZfSEk9MHg5MCwgVUhGPTB4MzAsIHJhZGlvPTB4MDQpCisgICAgVD0gVEVNSUNfQVBJICAgIChWSEZfTE89MHgwMiwgVkhGX0hJPTB4MDQsIFVIRj0weDAxKQorICAgIEE9IEFMUFNfQVBJICAgICAoVkhGX0xPPTB4MTQsIFZIRl9IST0weDEyLCBVSEY9MHgxMSkKKyAgICBNPSBQSElMSVBTX01LMyAgKFZIRl9MTz0weDAxLCBWSEZfSEk9MHgwMiwgVUhGPTB4MDQsIHJhZGlvPTB4MTkpCisKKzIpIFR1bmVyIE1hbnVmYWN0dXJlcnMKKz09PT09PT09PT09PT09PT09PT09PT0KKworU0FNU1VORyBUdW5lciBpZGVudGlmaWNhdGlvbjogKGUuZy4gVENQTTkwOTFQRDI3KQorICBUQ1AgW0FCQ0pMTU5RXSA5MFs4OV1bMTI1XSBbRFBdIFtBQ0RdIDI3IFtBQkNEXQorIFtBQkNKTE1OUV06CisgICBBPSBCRytESworICAgQj0gQkcKKyAgIEM9IEkrREsKKyAgIEo9IE5UU0MtSmFwYW4KKyAgIEw9IFNlY2FtIExMCisgICBNPSBCRytJK0RLCisgICBOPSBOVFNDCisgICBRPSBCRytJK0RLK0xMCisgWzg5XTogPworIFsxMjVdOgorICAgMjogTm8gRk0KKyAgIDU6IFdpdGggRk0KKyBbRFBdOgorICAgRD0gTlRTQworICAgUD0gUEFMCisgW0FDRF06CisgICBBPSBGLWNvbm5lY3RvcgorICAgQz0gUGhvbm8gY29ubmVjdG9yCisgICBEPSBEaW4gSmFjaworIFtBQkNEXToKKyAgIDMtd2lyZS9JMkMgdHVuaW5nLCAyLWJhbmQvMy1iYW5kCisKKyBUaGVzZSBUdW5lcnMgYXJlIFBISUxJUFNfQVBJIGNvbXBhdGlibGUuCisKK1BoaWxpcHMgVHVuZXIgaWRlbnRpZmljYXRpb246IChlLmcuIEZNMTIxNk1GKQorICBGW0lSTVFdMTJbMTM0NV02e01GfE1FfE1QfQorICBGW0lSTVFdOgorICAgRkkxMng2OiBUdW5lciBTZXJpZXMKKyAgIEZSMTJ4NjogVHVuZXIgKyBSYWRpbyBJRgorICAgRk0xMng2OiBUdW5lciArIEZNCisgICBGUTEyeDY6IHNwZWNpYWwKKyAgIEZNUjEyeDY6IHNwZWNpYWwKKyAgIFREMTV4eDogRGlnaXRhbCBUdW5lciBBVFNDCisgIDEyWzEzNDVdNjoKKyAgIDEyMTY6IFBBTCBCRworICAgMTIzNjogTlRTQworICAgMTI0NjogUEFMIEkKKyAgIDEyNTY6IFBhbCBESworICB7TUZ8TUV8TVB9CisgICBNRjogQkcgTEwgdy8gU2VjYW0gKE11bHRpIEZyYW5jZSkKKyAgIE1FOiBCRyBESyBJIExMICAgKE11bHRpIEV1cm9wZSkKKyAgIE1QOiBCRyBESyBJICAgICAgKE11bHRpIFBBTCkKKyAgIE1SOiBCRyBESyBNICg/KQorICAgTUc6IEJHIERLSSBNICg/KQorICBNSzIgc2VyaWVzIFBISUxJUFNfQVBJLCBtb3N0IHR1bmVycyBhcmUgY29tcGF0aWJsZSB0byB0aGlzIG9uZSAhCisgIE1LMyBzZXJpZXMgaW50cm9kdWNlZCBpbiAyMDAyIHcvIFBISUxJUFNfTUszX0FQSQorCitUZW1pYyBUdW5lciBpZGVudGlmaWNhdGlvbjogKC5lLmcgNDAwNkZINSkKKyAgIDRbMDFdWzAxMzZdWzI2OV1GW0hZTlJdNQorICAgIDQweDI6IFR1bmVyICg1Vi8zM1YpLCBURU1JQ19BUEkuCisgICAgNDB4NjogVHVuZXIgNVYKKyAgICA0MXh4OiBUdW5lciBjb21wYWN0CisgICAgNDB4OTogVHVuZXIrRk0gY29tcGFjdAorICAgWzAxMzZdCisgICAgeHgweDogUEFMIEJHCisgICAgeHgxeDogUGFsIERLLCBTZWNhbSBMTAorICAgIHh4M3g6IE5UU0MKKyAgICB4eDZ4OiBQQUwgSQorICAgRltIWU5SXTUKKyAgICBGSDU6IFBhbCBCRworICAgIEZZNTogb3RoZXJzCisgICAgRk41OiBtdWx0aXN0YW5kYXJkCisgICAgRlI1OiB3LyBGTSByYWRpbworICAgM1ggeHh4eDogb3JkZXIgbnVtYmVyIHdpdGggc3BlY2lmaWMgY29ubmVjdG9yCisgIE5vdGU6IE9ubHkgNDB4MiBzZXJpZXMgaGFzIFRFTUlDX0FQSSwgYWxsIG5ld2VyIHR1bmVycyBoYXZlIFBISUxJUFNfQVBJLgorCitMRyBJbm5vdGVrIFR1bmVyOgorICBUUEk4TlNSMTEgOiBOVFNDIEovTSAgICAoVFBJOE5TUjAxIHcvRk0pICAoUCwyMTAvNDk3KQorICBUUEk4UFNCMTEgOiBQQUwgQi9HICAgICAoVFBJOFBTQjAxIHcvRk0pICAoUCwxNzAvNDUwKQorICBUQVBDLUk3MDEgOiBQQUwgSSAgICAgICAoVEFQQy1JMDAxIHcvRk0pICAoUCwxNzAvNDUwKQorICBUUEk4UFNCMTIgOiBQQUwgRC9LK0IvRyAoVFBJOFBTQjAyIHcvRk0pICAoUCwxNzAvNDUwKQorICBUQVBDLUg3MDFQOiBOVFNDX0pQICAgICAoVEFQQy1IMDAxUCB3L0ZNKSAoTCwxNzAvNDUwKQorICBUQVBDLUc3MDFQOiBQQUwgQi9HICAgICAoVEFQQy1HMDAxUCB3L0ZNKSAoTCwxNzAvNDUwKQorICBUQVBDLVc3MDFQOiBQQUwgSSAgICAgICAoVEFQQy1XMDAxUCB3L0ZNKSAoTCwxNzAvNDUwKQorICBUQVBDLVE3MDNQOiBQQUwgRC9LICAgICAoVEFQQy1RMDAxUCB3L0ZNKSAoTCwxNzAvNDUwKQorICBUQVBDLVE3MDRQOiBQQUwgRC9LK0kgICAoTCwxNzAvNDUwKQorICBUQVBDLUc3MDJQOiBQQUwgRC9LK0IvRyAoTCwxNzAvNDUwKQorCisgIFRBREMtSDAwMkY6IE5UU0MgKEwsMTc1LzQxMD87IDItQiwgQy1XKzExLCBXKzEyLTY5KQorICBUQURDLU0yMDFEOiBQQUwgRC9LK0IvRytJIChMLDE0My80MjUpICAoc291bmQgY29udHJvbCBhdCBJMkMgYWRkcmVzcyAweGM4KQorICBUQURDLVQwMDNGOiBOVFNDIFRhaXdhbiAgKEwsMTc1LzQxMD87IDItQiwgQy1XKzExLCBXKzEyLTY5KQorICBTdWZmaXg6CisgICAgUD0gU3RhbmRhcmQgcGhvbm8gZmVtYWxlIHNvY2tldAorICAgIEQ9IElFQyBmZW1hbGUgc29ja2V0CisgICAgRj0gRi1jb25uZWN0b3IKKworT3RoZXIgVHVuZXJzOgorVENMMjAwMk1CLTEgOiBQQUwgQkcgKyBESyAgICAgICA9VFVORVJfTEdfUEFMX05FV19UQVBDCitUQ0wyMDAyTUItMUY6IFBBTCBCRyArIERLIHcvRk0gID1QSElMSVBTX1BBTAorVENMMjAwMk1JLTIgOiBQQUwgSQkJPSA/PworCitBTFBTIFR1bmVyczoKKyAgIE1vc3QgYXJlIExHX0FQSSBjb21wYXRpYmxlCisgICBUU0NINiBoYXMgQUxQU19BUEkgKFRTQ0g1ID8pCisgICBUU0JFMSBoYXMgZXh0cmEgQVBJIDA1LDAyLDA4IENvbnRyb2xfYnl0ZT0weENCIFNvdXJjZTooMSkKKworTGl0LgorKDEpIGNvbmV4YW50MTAwMDI5Yi1QQ0ktRGVjb2Rlci1BcHBsaWNhdGlvbk5vdGUucGRmCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2NhZmVfY2NpYyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvY2FmZV9jY2ljCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4ODIxMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2NhZmVfY2NpYwpAQCAtMCwwICsxLDU0IEBACisiY2FmZV9jY2ljIiBpcyBhIGRyaXZlciBmb3IgdGhlIE1hcnZlbGwgODhBTFAwMSAiY2FmZSIgQ01PUyBjYW1lcmEKK2NvbnRyb2xsZXIuICBUaGlzIGlzIHRoZSBjb250cm9sbGVyIGZvdW5kIGluIGZpcnN0LWdlbmVyYXRpb24gT0xQQyBzeXN0ZW1zLAorYW5kIHRoaXMgZHJpdmVyIHdhcyB3cml0dGVuIHdpdGggc3VwcG9ydCBmcm9tIHRoZSBPTFBDIHByb2plY3QuCisKK0N1cnJlbnQgc3RhdHVzOiB0aGUgY29yZSBkcml2ZXIgd29ya3MuICBJdCBjYW4gZ2VuZXJhdGUgZGF0YSBpbiBZVVY0MjIsCitSR0I1NjUsIGFuZCBSR0I0NDQgZm9ybWF0cy4gIChBbnlib2R5IGxvb2tpbmcgYXQgdGhlIGNvZGUgd2lsbCBzZWUgUkdCMzIgYXMKK3dlbGwsIGJ1dCB0aGF0IGlzIGEgZGVidWdnaW5nIGFpZCB3aGljaCB3aWxsIGJlIHJlbW92ZWQgc2hvcnRseSkuICBWR0EgYW5kCitRVkdBIG1vZGVzIHdvcms7IENJRiBpcyB0aGVyZSBidXQgdGhlIGNvbG9ycyByZW1haW4gZnVua3kuICBPbmx5IHRoZSBPVjc2NzAKK3NlbnNvciBpcyBrbm93biB0byB3b3JrIHdpdGggdGhpcyBjb250cm9sbGVyIGF0IHRoaXMgdGltZS4KKworVG8gdHJ5IGl0IG91dDogZWl0aGVyIG9mIHRoZXNlIGNvbW1hbmRzIHdpbGwgd29yazoKKworICAgICBtcGxheWVyIHR2Oi8vIC10diBkcml2ZXI9djRsMjp3aWR0aD02NDA6aGVpZ2h0PTQ4MCAtbm9zb3VuZAorICAgICBtcGxheWVyIHR2Oi8vIC10diBkcml2ZXI9djRsMjp3aWR0aD02NDA6aGVpZ2h0PTQ4MDpvdXRmbXQ9YmdyMTYgLW5vc291bmQKKworVGhlICJ4YXd0diIgdXRpbGl0eSBhbHNvIHdvcmtzOyBncWNhbSBkb2VzIG5vdCwgZm9yIHVua25vd24gcmVhc29ucy4KKworVGhlcmUgYXJlIGEgZmV3IGxvYWQtdGltZSBvcHRpb25zLCBtb3N0IG9mIHdoaWNoIGNhbiBiZSBjaGFuZ2VkIGFmdGVyCitsb2FkaW5nIHZpYSBzeXNmcyBhcyB3ZWxsOgorCisgLSBhbGxvY19idWZzX2F0X2xvYWQ6ICBOb3JtYWxseSwgdGhlIGRyaXZlciB3aWxsIG5vdCBhbGxvY2F0ZSBhbnkgRE1BCisgICBidWZmZXJzIHVudGlsIHRoZSB0aW1lIGNvbWVzIHRvIHRyYW5zZmVyIGRhdGEuICBJZiB0aGlzIG9wdGlvbiBpcyBzZXQsCisgICB0aGVuIHdvcnN0LWNhc2Utc2l6ZWQgYnVmZmVycyB3aWxsIGJlIGFsbG9jYXRlZCBhdCBtb2R1bGUgbG9hZCB0aW1lLgorICAgVGhpcyBvcHRpb24gbmFpbHMgZG93biB0aGUgbWVtb3J5IGZvciB0aGUgbGlmZSBvZiB0aGUgbW9kdWxlLCBidXQKKyAgIHBlcmhhcHMgZGVjcmVhc2VzIHRoZSBjaGFuY2VzIG9mIGFuIGFsbG9jYXRpb24gZmFpbHVyZSBsYXRlciBvbi4KKworIC0gZG1hX2J1Zl9zaXplOiBUaGUgc2l6ZSBvZiBETUEgYnVmZmVycyB0byBhbGxvY2F0ZS4gIE5vdGUgdGhhdCB0aGlzCisgICBvcHRpb24gaXMgb25seSBjb25zdWx0ZWQgZm9yIGxvYWQtdGltZSBhbGxvY2F0aW9uOyB3aGVuIGJ1ZmZlcnMgYXJlCisgICBhbGxvY2F0ZWQgYXQgcnVuIHRpbWUsIHRoZXkgd2lsbCBiZSBzaXplZCBhcHByb3ByaWF0ZWx5IGZvciB0aGUgY3VycmVudAorICAgY2FtZXJhIHNldHRpbmdzLgorCisgLSBuX2RtYV9idWZzOiBUaGUgY29udHJvbGxlciBjYW4gY3ljbGUgdGhyb3VnaCBlaXRoZXIgdHdvIG9yIHRocmVlIERNQQorICAgYnVmZmVycy4gIE5vcm1hbGx5LCB0aGUgZHJpdmVyIHRyaWVzIHRvIHVzZSB0aHJlZSBidWZmZXJzOyBvbiBmYXN0ZXIKKyAgIHN5c3RlbXMsIGhvd2V2ZXIsIGl0IHdpbGwgd29yayB3ZWxsIHdpdGggb25seSB0d28uCisKKyAtIG1pbl9idWZmZXJzOiBUaGUgbWluaW11bSBudW1iZXIgb2Ygc3RyZWFtaW5nIEkvTyBidWZmZXJzIHRoYXQgdGhlIGRyaXZlcgorICAgd2lsbCBjb25zZW50IHRvIHdvcmsgd2l0aC4gIERlZmF1bHQgaXMgb25lLCBidXQsIG9uIHNsb3dlciBzeXN0ZW1zLAorICAgYmV0dGVyIGJlaGF2aW9yIHdpdGggbXBsYXllciBjYW4gYmUgYWNoaWV2ZWQgYnkgc2V0dGluZyB0byBhIGhpZ2hlcgorICAgdmFsdWUgKGxpa2Ugc2l4KS4KKworIC0gbWF4X2J1ZmZlcnM6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdHJlYW1pbmcgSS9PIGJ1ZmZlcnM7IGRlZmF1bHQgaXMKKyAgIHRlbi4gIFRoYXQgbnVtYmVyIHdhcyBjYXJlZnVsbHkgcGlja2VkIG91dCBvZiBhIGhhdCBhbmQgc2hvdWxkIG5vdCBiZQorICAgYXNzdW1lZCB0byBhY3R1YWxseSBtZWFuIG11Y2ggb2YgYW55dGhpbmcuCisKKyAtIGZsaXA6IElmIHRoaXMgYm9vbGVhbiBwYXJhbWV0ZXIgaXMgc2V0LCB0aGUgc2Vuc29yIHdpbGwgYmUgaW5zdHJ1Y3RlZCB0bworICAgaW52ZXJ0IHRoZSB2aWRlbyBpbWFnZS4gIFdoZXRoZXIgaXQgbWFrZXMgc2Vuc2UgaXMgZGV0ZXJtaW5lZCBieSBob3cKKyAgIHlvdXIgcGFydGljdWxhciBjYW1lcmEgaXMgbW91bnRlZC4KKworV29yayBpcyBvbmdvaW5nIHdpdGggdGhpcyBkcml2ZXIsIHN0YXkgdHVuZWQuCisKK2pvbgorCitKb25hdGhhbiBDb3JiZXQKK2NvcmJldEBsd24ubmV0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2NwaWEyX292ZXJ2aWV3LnR4dCBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvY3BpYTJfb3ZlcnZpZXcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkNmFkYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2NwaWEyX292ZXJ2aWV3LnR4dApAQCAtMCwwICsxLDM4IEBACisJCQlQcm9ncmFtbWVyJ3MgVmlldyBvZiBDcGlhMgorCitDcGlhMiBpcyB0aGUgc2Vjb25kIGdlbmVyYXRpb24gdmlkZW8gY29wcm9jZXNzb3IgZnJvbSBWTFNJIFZpc2lvbiBMdGQgKG5vdyBhCitkaXZpc2lvbiBvZiBTVCBNaWNyb2VsZWN0cm9uaWNzKS4gIFRoZXJlIGFyZSB0d28gdmVyc2lvbnMuICBUaGUgZmlyc3QgaXMgdGhlCitTVFYwNjcyLCB3aGljaCBpcyBjYXBhYmxlIG9mIHVwIHRvIDMwIGZyYW1lcyBwZXIgc2Vjb25kIChmcHMpIGluIGZyYW1lIHNpemVzCit1cCB0byBDSUYsIGFuZCAxNSBmcHMgZm9yIFZHQSBmcmFtZXMuICBUaGUgU1RWMDY3NiBpcyBhbiBpbXByb3ZlZCB2ZXJzaW9uLAord2hpY2ggY2FuIGhhbmRsZSB1cCB0byAzMCBmcHMgVkdBLiAgQm90aCBjb3Byb2Nlc3NvcnMgY2FuIGJlIGF0dGFjaGVkIHRvIHR3bworQ01PUyBzZW5zb3JzIC0gdGhlIHZ2bDY0MTAgQ0lGIHNlbnNvciBhbmQgdGhlIHZ2bDY1MDAgVkdBIHNlbnNvci4gIFRoZXNlIHdpbGwKK2JlIHJlZmVycmVkIHRvIGFzIHRoZSA0MTAgYW5kIHRoZSA1MDAgc2Vuc29ycywgb3IgdGhlIENJRiBhbmQgVkdBIHNlbnNvcnMuCisKK1RoZSB0d28gY2hpcHNldHMgb3BlcmF0ZSBhbG1vc3QgaWRlbnRpY2FsbHkuICBUaGUgY29yZSBpcyBhbiA4MDUxIHByb2Nlc3NvciwKK3J1bm5pbmcgdHdvIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBmaXJtd2FyZS4gIFRoZSA2NzIgcnVucyB0aGUgVlA0IHZpZGVvCitwcm9jZXNzb3IgY29kZSwgdGhlIDY3NiBydW5zIFZQNS4gIFRoZXJlIGFyZSBhIGZldyBkaWZmZXJlbmNlcyBpbiByZWdpc3RlcgorbWFwcGluZ3MgZm9yIHRoZSB0d28gY2hpcHMuICBJbiB0aGVzZSBjYXNlcywgdGhlIHN5bWJvbHMgZGVmaW5lZCBpbiB0aGUKK2hlYWRlciBmaWxlcyBhcmUgbWFya2VkIHdpdGggVlA0IG9yIFZQNSBhcyBwYXJ0IG9mIHRoZSBzeW1ib2wgbmFtZS4KKworVGhlIGNhbWVyYXMgYXBwZWFyIGV4dGVybmFsbHkgYXMgdGhyZWUgc2V0cyBvZiByZWdpc3RlcnMuIFNldHRpbmcgcmVnaXN0ZXIKK3ZhbHVlcyBpcyB0aGUgb25seSB3YXkgdG8gY29udHJvbCB0aGUgY2FtZXJhLiAgU29tZSBzZXR0aW5ncyBhcmUKK2ludGVyZGVwZW5kYW50LCBzdWNoIGFzIHRoZSBzZXF1ZW5jZSByZXF1aXJlZCB0byBwb3dlciB1cCB0aGUgY2FtZXJhLiBJIHdpbGwKK3RyeSB0byBtYWtlIG5vdGUgb2YgYWxsIG9mIHRoZXNlIGNhc2VzLgorCitUaGUgcmVnaXN0ZXIgc2V0cyBhcmUgY2FsbGVkIGJsb2Nrcy4gIEJsb2NrIDAgaXMgdGhlIHN5c3RlbSBibG9jay4gIFRoaXMKK3NlY3Rpb24gaXMgYWx3YXlzIHBvd2VyZWQgb24gd2hlbiB0aGUgY2FtZXJhIGlzIHBsdWdnZWQgaW4uICBJdCBjb250YWlucworcmVnaXN0ZXJzIHRoYXQgY29udHJvbCBob3VzZWtlZXBpbmcgZnVuY3Rpb25zIHN1Y2ggYXMgcG93ZXJpbmcgdXAgdGhlIHZpZGVvCitwcm9jZXNzb3IuICBUaGUgdmlkZW8gcHJvY2Vzc29yIGlzIHRoZSBWUCBibG9jay4gIFRoZXNlIHJlZ2lzdGVycyBjb250cm9sCitob3cgdGhlIHZpZGVvIGZyb20gdGhlIHNlbnNvciBpcyBwcm9jZXNzZWQuICBFeGFtcGxlcyBhcmUgdGltaW5nIHJlZ2lzdGVycywKK3VzZXIgbW9kZSAodmdhLCBxdmdhKSwgc2NhbGluZywgY3JvcHBpbmcsIGZyYW1lcmF0ZXMsIGFuZCBzbyBvbi4gIFRoZSBsYXN0CitibG9jayBpcyB0aGUgdmlkZW8gY29tcHJlc3NvciAoVkMpLiAgVGhlIHZpZGVvIHN0cmVhbSBzZW50IGZyb20gdGhlIGNhbWVyYSBpcworY29tcHJlc3NlZCBhcyBNb3Rpb24gSlBFRyAoSlBFR0EpLiAgVGhlIFZDIGNvbnRyb2xzIGFsbCBvZiB0aGUgY29tcHJlc3Npb24KK3BhcmFtZXRlcnMuICBMb29raW5nIGF0IHRoZSBmaWxlIGNwaWEyX3JlZ2lzdGVycy5oLCB5b3UgY2FuIGdldCBhIGZ1bGwgdmlldworb2YgdGhlc2UgcmVnaXN0ZXJzIGFuZCB0aGUgcG9zc2libGUgdmFsdWVzIGZvciBtb3N0IG9mIHRoZW0uCisKK09uZSBvciBtb3JlIHJlZ2lzdGVycyBjYW4gYmUgc2V0IG9yIHJlYWQgYnkgc2VuZGluZyBhIHVzYiBjb250cm9sIG1lc3NhZ2UgdG8KK3RoZSBjYW1lcmEuICBUaGVyZSBhcmUgdGhyZWUgbW9kZXMgZm9yIHRoaXMuICBCbG9jayBtb2RlIHJlcXVlc3RzIGEgbnVtYmVyCitvZiBjb250aWd1b3VzIHJlZ2lzdGVycy4gIFJhbmRvbSBtb2RlIHJlYWRzIG9yIHdyaXRlcyByYW5kb20gcmVnaXN0ZXJzIHdpdGgKK2EgdHVwbGUgc3RydWN0dXJlIGNvbnRhaW5pbmcgYWRkcmVzcy92YWx1ZSBwYWlycy4gIFRoZSByZXBlYXQgbW9kZSBpcyBvbmx5Cit1c2VkIGJ5IFZQNCB0byBsb2FkIGEgZmlybXdhcmUgcGF0Y2guICBJdCBjb250YWlucyBhIHN0YXJ0aW5nIGFkZHJlc3MgYW5kCithIHNlcXVlbmNlIG9mIGJ5dGVzIHRvIGJlIHdyaXR0ZW4gaW50byBhIGdwaW8gcG9ydC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvY3gxOC50eHQgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2N4MTgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2NTJjMGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2N4MTgudHh0CkBAIC0wLDAgKzEsMzAgQEAKK1NvbWUgbm90ZXMgcmVnYXJkaW5nIHRoZSBjeDE4IGRyaXZlciBmb3IgdGhlIENvbmV4YW50IENYMjM0MTggTVBFRworZW5jb2RlciBjaGlwOgorCisxKSBDdXJyZW50bHkgc3VwcG9ydGVkIGFyZToKKworCS0gSGF1cHBhdWdlIEhWUi0xNjAwCisJLSBDb21wcm8gVmlkZW9NYXRlIEg5MDAKKwktIFl1YW4gTVBDNzE4CisJLSBDb25leGFudCBSYXB0b3IgUEFML1NFQ0FNIGRldmtpdAorCisyKSBTb21lIHBlb3BsZSBoYXZlIHByb2JsZW1zIGdldHRpbmcgdGhlIGkyYyBidXMgdG8gd29yay4KKyAgIFRoZSBzeW1wdG9tIGlzIHRoYXQgdGhlIGVlcHJvbSBjYW5ub3QgYmUgcmVhZCBhbmQgdGhlIGNhcmQgaXMKKyAgIHVudXNhYmxlLiBUaGlzIGlzIHByb2JhYmx5IGZpeGVkLCBidXQgaWYgeW91IGhhdmUgcHJvYmxlbXMKKyAgIHRoZW4gcG9zdCB0byB0aGUgdmlkZW80bGludXggb3IgaXZ0di11c2VycyBtYWlsaW5nIGxpc3QuCisKKzMpIFZCSSAocmF3IG9yIHNsaWNlZCkgaGFzIG5vdCB5ZXQgYmVlbiBpbXBsZW1lbnRlZC4KKworNCkgTVBFRyBpbmRleGluZyBpcyBub3QgeWV0IGltcGxlbWVudGVkLgorCis1KSBUaGUgZHJpdmVyIGlzIHN0aWxsIGEgYml0IHJvdWdoIGFyb3VuZCB0aGUgZWRnZXMsIHRoaXMgc2hvdWxkCisgICBpbXByb3ZlIG92ZXIgdGltZS4KKworCitGaXJtd2FyZToKKworWW91IGNhbiBvYnRhaW4gdGhlIGZpcm13YXJlIGZpbGVzIGhlcmU6CisKK2h0dHA6Ly9kbC5pdnR2ZHJpdmVyLm9yZy9pdnR2L2Zpcm13YXJlL2N4MTgtZmlybXdhcmUudGFyLmd6CisKK1VudGFyIGFuZCBjb3B5IHRoZSAuZncgZmlsZXMgdG8geW91ciBmaXJtd2FyZSBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2N4MjM0MXgvUkVBRE1FLmhtMTIgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2N4MjM0MXgvUkVBRE1FLmhtMTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM2MTQ4ZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvY3gyMzQxeC9SRUFETUUuaG0xMgpAQCAtMCwwICsxLDEyMCBAQAorVGhlIGN4MjM0MTYgY2FuIHByb2R1Y2UgKGFuZCB0aGUgY3gyMzQxNSBjYW4gYWxzbyByZWFkKSByYXcgWVVWIG91dHB1dC4gVGhlCitmb3JtYXQgb2YgYSBZVVYgZnJhbWUgaXMgc3BlY2lmaWMgdG8gdGhpcyBjaGlwIGFuZCBpcyBjYWxsZWQgSE0xMi4gJ0hNJyBzdGFuZHMKK2ZvciAnSGF1cHBhdWdlIE1hY3JvYmxvY2snLCB3aGljaCBpcyBhIG1pc25vbWVyIGFzICdDb25leGFudCBNYWNyb2Jsb2NrJyB3b3VsZAorYmUgbW9yZSBhY2N1cmF0ZS4KKworVGhlIGZvcm1hdCBpcyBZVVYgNDoyOjAgd2hpY2ggdXNlcyAxIFkgYnl0ZSBwZXIgcGl4ZWwgYW5kIDEgVSBhbmQgViBieXRlIHBlcgorZm91ciBwaXhlbHMuCisKK1RoZSBkYXRhIGlzIGVuY29kZWQgYXMgdHdvIG1hY3JvYmxvY2sgcGxhbmVzLCB0aGUgZmlyc3QgY29udGFpbmluZyB0aGUgWQordmFsdWVzLCB0aGUgc2Vjb25kIGNvbnRhaW5pbmcgVVYgbWFjcm9ibG9ja3MuCisKK1RoZSBZIHBsYW5lIGlzIGRpdmlkZWQgaW50byBibG9ja3Mgb2YgMTZ4MTYgcGl4ZWxzIGZyb20gbGVmdCB0byByaWdodAorYW5kIGZyb20gdG9wIHRvIGJvdHRvbS4gRWFjaCBibG9jayBpcyB0cmFuc21pdHRlZCBpbiB0dXJuLCBsaW5lLWJ5LWxpbmUuCisKK1NvIHRoZSBmaXJzdCAxNiBieXRlcyBhcmUgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHRvcC1sZWZ0IGJsb2NrLCB0aGUKK3NlY29uZCAxNiBieXRlcyBhcmUgdGhlIHNlY29uZCBsaW5lIG9mIHRoZSB0b3AtbGVmdCBibG9jaywgZXRjLiBBZnRlcgordHJhbnNtaXR0aW5nIHRoaXMgYmxvY2sgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIGJsb2NrIG9uIHRoZSByaWdodCB0byB0aGUKK2ZpcnN0IGJsb2NrIGlzIHRyYW5zbWl0dGVkLCBldGMuCisKK1RoZSBVViBwbGFuZSBpcyBkaXZpZGVkIGludG8gYmxvY2tzIG9mIDE2eDggVVYgdmFsdWVzIGdvaW5nIGZyb20gbGVmdAordG8gcmlnaHQsIHRvcCB0byBib3R0b20uIEVhY2ggYmxvY2sgaXMgdHJhbnNtaXR0ZWQgaW4gdHVybiwgbGluZS1ieS1saW5lLgorCitTbyB0aGUgZmlyc3QgMTYgYnl0ZXMgYXJlIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSB0b3AtbGVmdCBibG9jayBhbmQKK2NvbnRhaW4gOCBVViB2YWx1ZSBwYWlycyAoMTYgYnl0ZXMgaW4gdG90YWwpLiBUaGUgc2Vjb25kIDE2IGJ5dGVzIGFyZSB0aGUKK3NlY29uZCBsaW5lIG9mIDggVVYgcGFpcnMgb2YgdGhlIHRvcC1sZWZ0IGJsb2NrLCBldGMuIEFmdGVyIHRyYW5zbWl0dGluZwordGhpcyBibG9jayB0aGUgZmlyc3QgbGluZSBvZiB0aGUgYmxvY2sgb24gdGhlIHJpZ2h0IHRvIHRoZSBmaXJzdCBibG9jayBpcwordHJhbnNtaXR0ZWQsIGV0Yy4KKworVGhlIGNvZGUgYmVsb3cgaXMgZ2l2ZW4gYXMgYW4gZXhhbXBsZSBvbiBob3cgdG8gY29udmVydCBITTEyIHRvIHNlcGFyYXRlCitZLCBVIGFuZCBWIHBsYW5lcy4gVGhpcyBjb2RlIGFzc3VtZXMgZnJhbWVzIG9mIDcyMHg1NzYgKFBBTCkgcGl4ZWxzLgorCitUaGUgd2lkdGggb2YgYSBmcmFtZSBpcyBhbHdheXMgNzIwIHBpeGVscywgcmVnYXJkbGVzcyBvZiB0aGUgYWN0dWFsIHNwZWNpZmllZAord2lkdGguCisKK0lmIHRoZSBoZWlnaHQgaXMgbm90IGEgbXVsdGlwbGUgb2YgMzIgbGluZXMsIHRoZW4gdGhlIGNhcHR1cmVkIHZpZGVvIGlzCittaXNzaW5nIG1hY3JvYmxvY2tzIGF0IHRoZSBlbmQgYW5kIGlzIHVudXNhYmxlLiBTbyB0aGUgaGVpZ2h0IG11c3QgYmUgYQorbXVsdGlwbGUgb2YgMzIuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCitzdGF0aWMgdW5zaWduZWQgY2hhciBmcmFtZVs1NzYqNzIwKjMvMl07CitzdGF0aWMgdW5zaWduZWQgY2hhciBmcmFtZXlbNTc2KjcyMF07CitzdGF0aWMgdW5zaWduZWQgY2hhciBmcmFtZXVbNTc2KjcyMCAvIDRdOworc3RhdGljIHVuc2lnbmVkIGNoYXIgZnJhbWV2WzU3Nio3MjAgLyA0XTsKKworc3RhdGljIHZvaWQgZGVfbWFjcm9feSh1bnNpZ25lZCBjaGFyKiBkc3QsIHVuc2lnbmVkIGNoYXIgKnNyYywgaW50IGRzdHJpZGUsIGludCB3LCBpbnQgaCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgeSwgeCwgaTsKKworICAgIC8vIGRlc2NyYW1ibGUgWSBwbGFuZQorICAgIC8vIGRzdHJpZGUgPSA3MjAgPSB3CisgICAgLy8gVGhlIFkgcGxhbmUgaXMgZGl2aWRlZCBpbnRvIGJsb2NrcyBvZiAxNngxNiBwaXhlbHMKKyAgICAvLyBFYWNoIGJsb2NrIGluIHRyYW5zbWl0dGVkIGluIHR1cm4sIGxpbmUtYnktbGluZS4KKyAgICBmb3IgKHkgPSAwOyB5IDwgaDsgeSArPSAxNikgeworCWZvciAoeCA9IDA7IHggPCB3OyB4ICs9IDE2KSB7CisJICAgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7CisJCW1lbWNweShkc3QgKyB4ICsgKHkgKyBpKSAqIGRzdHJpZGUsIHNyYywgMTYpOworCQlzcmMgKz0gMTY7CisJICAgIH0KKwl9CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBkZV9tYWNyb191dih1bnNpZ25lZCBjaGFyICpkc3R1LCB1bnNpZ25lZCBjaGFyICpkc3R2LCB1bnNpZ25lZCBjaGFyICpzcmMsIGludCBkc3RyaWRlLCBpbnQgdywgaW50IGgpCit7CisgICAgdW5zaWduZWQgaW50IHksIHgsIGk7CisKKyAgICAvLyBkZXNjcmFtYmxlIFUvViBwbGFuZQorICAgIC8vIGRzdHJpZGUgPSA3MjAgLyAyID0gdworICAgIC8vIFRoZSBVL1YgdmFsdWVzIGFyZSBpbnRlcmxhY2VkIChVVlVWLi4uKS4KKyAgICAvLyBBZ2FpbiwgdGhlIFVWIHBsYW5lIGlzIGRpdmlkZWQgaW50byBibG9ja3Mgb2YgMTZ4MTYgVVYgdmFsdWVzLgorICAgIC8vIEVhY2ggYmxvY2sgaW4gdHJhbnNtaXR0ZWQgaW4gdHVybiwgbGluZS1ieS1saW5lLgorICAgIGZvciAoeSA9IDA7IHkgPCBoOyB5ICs9IDE2KSB7CisJZm9yICh4ID0gMDsgeCA8IHc7IHggKz0gOCkgeworCSAgICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgeworCQlpbnQgaWR4ID0geCArICh5ICsgaSkgKiBkc3RyaWRlOworCisJCWRzdHVbaWR4KzBdID0gc3JjWzBdOyAgZHN0dltpZHgrMF0gPSBzcmNbMV07CisJCWRzdHVbaWR4KzFdID0gc3JjWzJdOyAgZHN0dltpZHgrMV0gPSBzcmNbM107CisJCWRzdHVbaWR4KzJdID0gc3JjWzRdOyAgZHN0dltpZHgrMl0gPSBzcmNbNV07CisJCWRzdHVbaWR4KzNdID0gc3JjWzZdOyAgZHN0dltpZHgrM10gPSBzcmNbN107CisJCWRzdHVbaWR4KzRdID0gc3JjWzhdOyAgZHN0dltpZHgrNF0gPSBzcmNbOV07CisJCWRzdHVbaWR4KzVdID0gc3JjWzEwXTsgZHN0dltpZHgrNV0gPSBzcmNbMTFdOworCQlkc3R1W2lkeCs2XSA9IHNyY1sxMl07IGRzdHZbaWR4KzZdID0gc3JjWzEzXTsKKwkJZHN0dVtpZHgrN10gPSBzcmNbMTRdOyBkc3R2W2lkeCs3XSA9IHNyY1sxNV07CisJCXNyYyArPSAxNjsKKwkgICAgfQorCX0KKyAgICB9Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIEZJTEUgKmZpbjsKKyAgICBpbnQgaTsKKworICAgIGlmIChhcmdjID09IDEpIGZpbiA9IHN0ZGluOworICAgIGVsc2UgZmluID0gZm9wZW4oYXJndlsxXSwgInIiKTsKKworICAgIGlmIChmaW4gPT0gTlVMTCkgeworCWZwcmludGYoc3RkZXJyLCAiY2Fubm90IG9wZW4gaW5wdXRcbiIpOworCWV4aXQoLTEpOworICAgIH0KKyAgICB3aGlsZSAoZnJlYWQoZnJhbWUsIHNpemVvZihmcmFtZSksIDEsIGZpbikgPT0gMSkgeworCWRlX21hY3JvX3koZnJhbWV5LCBmcmFtZSwgNzIwLCA3MjAsIDU3Nik7CisJZGVfbWFjcm9fdXYoZnJhbWV1LCBmcmFtZXYsIGZyYW1lICsgNzIwICogNTc2LCA3MjAgLyAyLCA3MjAgLyAyLCA1NzYgLyAyKTsKKwlmd3JpdGUoZnJhbWV5LCBzaXplb2YoZnJhbWV5KSwgMSwgc3Rkb3V0KTsKKwlmd3JpdGUoZnJhbWV2LCBzaXplb2YoZnJhbWV2KSwgMSwgc3Rkb3V0KTsKKwlmd3JpdGUoZnJhbWV1LCBzaXplb2YoZnJhbWV1KSwgMSwgc3Rkb3V0KTsKKyAgICB9CisgICAgZmNsb3NlKGZpbik7CisgICAgcmV0dXJuIDA7Cit9CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2N4MjM0MXgvUkVBRE1FLnZiaSBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvY3gyMzQxeC9SRUFETUUudmJpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MDdjZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2N4MjM0MXgvUkVBRE1FLnZiaQpAQCAtMCwwICsxLDQ1IEBACisKK0Zvcm1hdCBvZiBlbWJlZGRlZCBWNEwyX01QRUdfU1RSRUFNX1ZCSV9GTVRfSVZUViBWQkkgZGF0YQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBWNEwyX01QRUdfU1RSRUFNX1ZCSV9GTVRfSVZUViBmb3JtYXQgb2YgdGhlIFZCSSBkYXRhCitlbWJlZGRlZCBpbiBhbiBNUEVHLTIgcHJvZ3JhbSBzdHJlYW0uIFRoaXMgZm9ybWF0IGlzIGluIHBhcnQgZGljdGF0ZWQgYnkgc29tZQoraGFyZHdhcmUgbGltaXRhdGlvbnMgb2YgdGhlIGl2dHYgZHJpdmVyICh0aGUgZHJpdmVyIGZvciB0aGUgQ29uZXhhbnQgY3gyMzQxNS82CitjaGlwcyksIGluIHBhcnRpY3VsYXIgYSBtYXhpbXVtIHNpemUgZm9yIHRoZSBWQkkgZGF0YS4gQW55dGhpbmcgbG9uZ2VyIGlzIGN1dAorb2ZmIHdoZW4gdGhlIE1QRUcgc3RyZWFtIGlzIHBsYXllZCBiYWNrIHRocm91Z2ggdGhlIGN4MjM0MTUuCisKK1RoZSBhZHZhbnRhZ2Ugb2YgdGhpcyBmb3JtYXQgaXMgaXQgaXMgdmVyeSBjb21wYWN0IGFuZCB0aGF0IGFsbCBWQkkgZGF0YSBmb3IKK2FsbCBsaW5lcyBjYW4gYmUgc3RvcmVkIHdoaWxlIHN0aWxsIGZpdHRpbmcgd2l0aGluIHRoZSBtYXhpbXVtIGFsbG93ZWQgc2l6ZS4KKworVGhlIHN0cmVhbSBJRCBvZiB0aGUgVkJJIGRhdGEgaXMgMHhCRC4gVGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgZW1iZWRkZWQgZGF0YSBpcworNCArIDQzICogMzYsIHdoaWNoIGlzIDQgYnl0ZXMgZm9yIGEgaGVhZGVyIGFuZCAyICogMTggVkJJIGxpbmVzIHdpdGggYSAxIGJ5dGUKK2hlYWRlciBhbmQgYSA0MiBieXRlcyBwYXlsb2FkIGVhY2guIEFueXRoaW5nIGJleW9uZCB0aGlzIGxpbWl0IGlzIGN1dCBvZmYgYnkKK3RoZSBjeDIzNDE1LzYgZmlybXdhcmUuIEJlc2lkZXMgdGhlIGRhdGEgZm9yIHRoZSBWQkkgbGluZXMgd2UgYWxzbyBuZWVkIDM2IGJpdHMKK2ZvciBhIGJpdG1hc2sgZGV0ZXJtaW5pbmcgd2hpY2ggbGluZXMgYXJlIGNhcHR1cmVkIGFuZCA0IGJ5dGVzIGZvciBhIG1hZ2ljIGNvb2tpZSwKK3NpZ25pZnlpbmcgdGhhdCB0aGlzIGRhdGEgcGFja2FnZSBjb250YWlucyBWNEwyX01QRUdfU1RSRUFNX1ZCSV9GTVRfSVZUViBWQkkgZGF0YS4KK0lmIGFsbCBsaW5lcyBhcmUgdXNlZCwgdGhlbiB0aGVyZSBpcyBubyBsb25nZXIgcm9vbSBmb3IgdGhlIGJpdG1hc2suIFRvIHNvbHZlIHRoaXMKK3R3byBkaWZmZXJlbnQgbWFnaWMgbnVtYmVycyB3ZXJlIGludHJvZHVjZWQ6CisKKydpdHYwJzogQWZ0ZXIgdGhpcyBtYWdpYyBudW1iZXIgdHdvIHVuc2lnbmVkIGxvbmdzIGZvbGxvdy4gQml0cyAwLTE3IG9mIHRoZSBmaXJzdAordW5zaWduZWQgbG9uZyBkZW5vdGUgd2hpY2ggbGluZXMgb2YgdGhlIGZpcnN0IGZpZWxkIGFyZSBjYXB0dXJlZC4gQml0cyAxOC0zMSBvZgordGhlIGZpcnN0IHVuc2lnbmVkIGxvbmcgYW5kIGJpdHMgMC0zIG9mIHRoZSBzZWNvbmQgdW5zaWduZWQgbG9uZyBhcmUgdXNlZCBmb3IgdGhlCitzZWNvbmQgZmllbGQuCisKKydJVFYwJzogVGhpcyBtYWdpYyBudW1iZXIgYXNzdW1lcyBhbGwgVkJJIGxpbmVzIGFyZSBjYXB0dXJlZCwgaS5lLiBpdCBpbXBsaWNpdGx5CitpbXBsaWVzIHRoYXQgdGhlIGJpdG1hc2tzIGFyZSAweGZmZmZmZmZmIGFuZCAweGYuCisKK0FmdGVyIHRoZXNlIG1hZ2ljIGNvb2tpZXMgKGFuZCB0aGUgOCBieXRlIGJpdG1hc2sgaW4gY2FzZSBvZiBjb29raWUgJ2l0djAnKSB0aGUKK2NhcHR1cmVkIFZCSSBsaW5lcyBzdGFydDoKKworRm9yIGVhY2ggbGluZSB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgNCBiaXRzIG9mIHRoZSBmaXJzdCBieXRlIGNvbnRhaW4gdGhlIGRhdGEgdHlwZS4KK1Bvc3NpYmxlIHZhbHVlcyBhcmUgc2hvd24gaW4gdGhlIHRhYmxlIGJlbG93LiBUaGUgcGF5bG9hZCBpcyBpbiB0aGUgZm9sbG93aW5nIDQyCitieXRlcy4KKworSGVyZSBpcyB0aGUgbGlzdCBvZiBwb3NzaWJsZSBkYXRhIHR5cGVzOgorCisjZGVmaW5lIElWVFZfU0xJQ0VEX1RZUEVfVEVMRVRFWFQgICAgICAgMHgxICAgICAvLyBUZWxldGV4dCAodXNlcyBsaW5lcyA2LTIyIGZvciBQQUwpCisjZGVmaW5lIElWVFZfU0xJQ0VEX1RZUEVfQ0MgICAgICAgICAgICAgMHg0ICAgICAvLyBDbG9zZWQgQ2FwdGlvbnMgKGxpbmUgMjEgTlRTQykKKyNkZWZpbmUgSVZUVl9TTElDRURfVFlQRV9XU1MgICAgICAgICAgICAweDUgICAgIC8vIFdpZGUgU2NyZWVuIFNpZ25hbCAobGluZSAyMyBQQUwpCisjZGVmaW5lIElWVFZfU0xJQ0VEX1RZUEVfVlBTICAgICAgICAgICAgMHg3ICAgICAvLyBWaWRlbyBQcm9ncmFtbWluZyBTeXN0ZW0gKFBBTCkgKGxpbmUgMTYpCisKK0hhbnMgVmVya3VpbCA8aHZlcmt1aWxAeHM0YWxsLm5sPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9jeDIzNDF4L2Z3LWNhbGxpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9jeDIzNDF4L2Z3LWNhbGxpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMjExODEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2N4MjM0MXgvZnctY2FsbGluZy50eHQKQEAgLTAsMCArMSw2OSBAQAorVGhpcyBwYWdlIGRlc2NyaWJlcyBob3cgdG8gbWFrZSBjYWxscyB0byB0aGUgZmlybXdhcmUgYXBpLgorCitIb3cgdG8gY2FsbAorPT09PT09PT09PT0KKworVGhlIHByZWZlcnJlZCBjYWxsaW5nIGNvbnZlbnRpb24gaXMga25vd24gYXMgdGhlIGZpcm13YXJlIG1haWxib3guIFRoZQorbWFpbGJveGVzIGFyZSBiYXNpY2FsbHkgYSBmaXhlZCBsZW5ndGggYXJyYXkgdGhhdCBzZXJ2ZXMgYXMgdGhlIGNhbGwtc3RhY2suCisKK0Zpcm13YXJlIG1haWxib3hlcyBjYW4gYmUgbG9jYXRlZCBieSBzZWFyY2hpbmcgdGhlIGVuY29kZXIgYW5kIGRlY29kZXIgbWVtb3J5Citmb3IgYSAxNiBieXRlIHNpZ25hdHVyZS4gVGhhdCBzaWduYXR1cmUgd2lsbCBiZSBsb2NhdGVkIG9uIGEgMjU2LWJ5dGUgYm91bmRhcnkuCisKK1NpZ25hdHVyZToKKzB4NzgsIDB4NTYsIDB4MzQsIDB4MTIsIDB4MTIsIDB4NzgsIDB4NTYsIDB4MzQsCisweDM0LCAweDEyLCAweDc4LCAweDU2LCAweDU2LCAweDM0LCAweDEyLCAweDc4CisKK1RoZSBmaXJtd2FyZSBpbXBsZW1lbnRzIDIwIG1haWxib3hlcyBvZiAyMCAzMi1iaXQgd29yZHMuIFRoZSBmaXJzdCAxMCBhcmUKK3Jlc2VydmVkIGZvciBBUEkgY2FsbHMuIFRoZSBzZWNvbmQgMTAgYXJlIHVzZWQgYnkgdGhlIGZpcm13YXJlIGZvciBldmVudAorbm90aWZpY2F0aW9uLgorCisgIEluZGV4ICBOYW1lCisgIC0tLS0tICAtLS0tCisgIDAgICAgICBGbGFncworICAxICAgICAgQ29tbWFuZAorICAyICAgICAgUmV0dXJuIHZhbHVlCisgIDMgICAgICBUaW1lb3V0CisgIDQtMTkgICBQYXJhbWV0ZXIvUmVzdWx0CisKKworVGhlIGZsYWdzIGFyZSBkZWZpbmVkIGluIHRoZSBmb2xsb3dpbmcgdGFibGUuIFRoZSBkaXJlY3Rpb24gaXMgZnJvbSB0aGUKK3BlcnNwZWN0aXZlIG9mIHRoZSBmaXJtd2FyZS4KKworICBCaXQgIERpcmVjdGlvbiAgUHVycG9zZQorICAtLS0gIC0tLS0tLS0tLSAgLS0tLS0tLQorICAyICAgIE8gICAgICAgICAgRmlybXdhcmUgaGFzIHByb2Nlc3NlZCB0aGUgY29tbWFuZC4KKyAgMSAgICBJICAgICAgICAgIERyaXZlciBoYXMgZmluaXNoZWQgc2V0dGluZyB0aGUgcGFyYW1ldGVycy4KKyAgMCAgICBJICAgICAgICAgIERyaXZlciBpcyB1c2luZyB0aGlzIG1haWxib3guCisKKworVGhlIGNvbW1hbmQgaXMgYSAzMi1iaXQgZW51bWVyYXRvci4gVGhlIEFQSSBzcGVjaWZpY3MgbWF5IGJlIGZvdW5kIGluIHRoZQorZnctKi1hcGkudHh0IGRvY3VtZW50cy4KKworVGhlIHJldHVybiB2YWx1ZSBpcyBhIDMyLWJpdCBlbnVtZXJhdG9yLiBPbmx5IHR3byB2YWx1ZXMgYXJlIGN1cnJlbnRseSBkZWZpbmVkOgorMD1zdWNjZXNzIGFuZCAtMT1jb21tYW5kIHVuZGVmaW5lZC4KKworVGhlcmUgYXJlIDE2IHBhcmFtZXRlcnMvcmVzdWx0cyAzMi1iaXQgZmllbGRzLiBUaGUgZHJpdmVyIHBvcHVsYXRlcyB0aGVzZSBmaWVsZHMKK3dpdGggdmFsdWVzIGZvciBhbGwgdGhlIHBhcmFtZXRlcnMgcmVxdWlyZWQgYnkgdGhlIGNhbGwuIFRoZSBkcml2ZXIgb3ZlcndyaXRlcwordGhlc2UgZmllbGRzIHdpdGggcmVzdWx0IHZhbHVlcyByZXR1cm5lZCBieSB0aGUgY2FsbC4gVGhlIEFQSSBzcGVjaWZpY3MgbWF5IGJlCitmb3VuZCBpbiB0aGUgZnctKi1hcGkudHh0IGRvY3VtZW50cy4KKworVGhlIHRpbWVvdXQgdmFsdWUgcHJvdGVjdHMgdGhlIGNhcmQgZnJvbSBhIGh1bmcgZHJpdmVyIHRocmVhZC4gSWYgdGhlIGRyaXZlcgorZG9lc24ndCBoYW5kbGUgdGhlIGNvbXBsZXRlZCBjYWxsIHdpdGhpbiB0aGUgdGltZW91dCBzcGVjaWZpZWQsIHRoZSBmaXJtd2FyZQord2lsbCByZXNldCB0aGF0IG1haWxib3guCisKK1RvIG1ha2UgYW4gQVBJIGNhbGwsIHRoZSBkcml2ZXIgaXRlcmF0ZXMgb3ZlciBlYWNoIG1haWxib3ggbG9va2luZyBmb3IgdGhlCitmaXJzdCBvbmUgYXZhaWxhYmxlIChiaXQgMCBoYXMgYmVlbiBjbGVhcmVkKS4gVGhlIGRyaXZlciBzZXRzIHRoYXQgYml0LCBmaWxscworaW4gdGhlIGNvbW1hbmQgZW51bWVyYXRvciwgdGhlIHRpbWVvdXQgdmFsdWUgYW5kIGFueSByZXF1aXJlZCBwYXJhbWV0ZXJzLiBUaGUKK2RyaXZlciB0aGVuIHNldHMgdGhlIHBhcmFtZXRlciByZWFkeSBiaXQgKGJpdCAxKS4gVGhlIGZpcm13YXJlIHNjYW5zIHRoZQorbWFpbGJveGVzIGZvciBwZW5kaW5nIGNvbW1hbmRzLCBwcm9jZXNzZXMgdGhlbSwgc2V0cyB0aGUgcmVzdWx0IGNvZGUsIHBvcHVsYXRlcwordGhlIHJlc3VsdCB2YWx1ZSBhcnJheSB3aXRoIHRoYXQgY2FsbCdzIHJldHVybiB2YWx1ZXMgYW5kIHNldHMgdGhlIGNhbGwKK2NvbXBsZXRlIGJpdCAoYml0IDIpLiBPbmNlIGJpdCAyIGlzIHNldCwgdGhlIGRyaXZlciBzaG91bGQgcmV0cmlldmUgdGhlIHJlc3VsdHMKK2FuZCBjbGVhciBhbGwgdGhlIGZsYWdzLiBJZiB0aGUgZHJpdmVyIGRvZXMgbm90IHBlcmZvcm0gdGhpcyB0YXNrIHdpdGhpbiB0aGUKK3RpbWUgc2V0IGluIHRoZSB0aW1lb3V0IHJlZ2lzdGVyLCB0aGUgZmlybXdhcmUgd2lsbCByZXNldCB0aGF0IG1haWxib3guCisKK0V2ZW50IG5vdGlmaWNhdGlvbnMgYXJlIHNlbnQgZnJvbSB0aGUgZmlybXdhcmUgdG8gdGhlIGhvc3QuIFRoZSBob3N0IHRlbGxzIHRoZQorZmlybXdhcmUgd2hpY2ggZXZlbnRzIGl0IGlzIGludGVyZXN0ZWQgaW4gdmlhIGFuIEFQSSBjYWxsLiBUaGF0IGNhbGwgdGVsbHMgdGhlCitmaXJtd2FyZSB3aGljaCBub3RpZmljYXRpb24gbWFpbGJveCB0byB1c2UuIFRoZSBmaXJtd2FyZSBzaWduYWxzIHRoZSBob3N0IHZpYQorYW4gaW50ZXJydXB0LiBPbmx5IHRoZSAxNiBSZXN1bHRzIGZpZWxkcyBhcmUgdXNlZCwgdGhlIEZsYWdzLCBDb21tYW5kLCBSZXR1cm4KK3ZhbHVlIGFuZCBUaW1lb3V0IHdvcmRzIGFyZSBub3QgdXNlZC4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9jeDIzNDF4L2Z3LWRlY29kZXItYXBpLnR4dCBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvY3gyMzQxeC9mdy1kZWNvZGVyLWFwaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMzMTdiNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvY3gyMzQxeC9mdy1kZWNvZGVyLWFwaS50eHQKQEAgLTAsMCArMSwyOTcgQEAKK0RlY29kZXIgZmlybXdhcmUgQVBJIGRlc2NyaXB0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitOb3RlOiB0aGlzIEFQSSBpcyBwYXJ0IG9mIHRoZSBkZWNvZGVyIGZpcm13YXJlLCBzbyBpdCdzIGN4MjM0MTUgb25seS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0RFQ19QSU5HX0ZXCitFbnVtIAkwLzB4MDAKK0Rlc2NyaXB0aW9uCisJVGhpcyBBUEkgY2FsbCBkb2VzIG5vdGhpbmcuIEl0IG1heSBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSBmaXJtd2FyZQorCWlzIHJlc3BvbmRpbmcuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9ERUNfU1RBUlRfUExBWUJBQ0sKK0VudW0gCTEvMHgwMQorRGVzY3JpcHRpb24KKwlCZWdpbiBvciByZXN1bWUgcGxheWJhY2suCitQYXJhbVswXQorCTAgYmFzZWQgZnJhbWUgbnVtYmVyIGluIEdPUCB0byBiZWdpbiBwbGF5YmFjayBmcm9tLgorUGFyYW1bMV0KKwlTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBtdXRlZCBhdWRpbyBmcmFtZXMgdG8gcGxheSBiZWZvcmUgbm9ybWFsCisJYXVkaW8gcmVzdW1lcy4gKFRoaXMgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBmaXJtd2FyZSwgbGVhdmUgYXQgMCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0RFQ19TVE9QX1BMQVlCQUNLCitFbnVtIAkyLzB4MDIKK0Rlc2NyaXB0aW9uCisJRW5kcyBwbGF5YmFjayBhbmQgY2xlYXJzIGFsbCBkZWNvZGVyIGJ1ZmZlcnMuIElmIFBUUyBpcyBub3QgemVybywKKwlwbGF5YmFjayBzdG9wcyBhdCBzcGVjaWZpZWQgUFRTLgorUGFyYW1bMF0KKwlEaXNwbGF5IDA9bGFzdCBmcmFtZSwgMT1ibGFjaworCU5vdGU6IHRoaXMgdGFrZXMgZWZmZWN0IGltbWVkaWF0ZWx5LCBzbyBpZiB5b3Ugd2FudCB0byB3YWl0IGZvciBhIFBUUywKKwl0aGVuIHVzZSAnMCcsIG90aGVyd2lzZSB0aGUgc2NyZWVuIGdvZXMgdG8gYmxhY2sgYXQgb25jZS4KKwlZb3UgY2FuIGNhbGwgdGhpcyBsYXRlciAoZXZlbiBpZiB0aGVyZSBpcyBubyBwbGF5YmFjaykgd2l0aCBhIDEgdmFsdWUKKwl0byBzZXQgdGhlIHNjcmVlbiB0byBibGFjay4KK1BhcmFtWzFdCisJUFRTIGxvdworUGFyYW1bMl0KKwlQVFMgaGlnaAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfREVDX1NFVF9QTEFZQkFDS19TUEVFRAorRW51bSAJMy8weDAzCitEZXNjcmlwdGlvbgorCVBsYXliYWNrIHN0cmVhbSBhdCBzcGVlZCBvdGhlciB0aGFuIG5vcm1hbC4gVGhlcmUgYXJlIHR3byBtb2RlcyBvZgorCW9wZXJhdGlvbjoKKwkgICAgU21vb3RoOiBob3N0IHRyYW5zZmVycyBlbnRpcmUgc3RyZWFtIGFuZCBmaXJtd2FyZSBkcm9wcyB1bnVzZWQKKwkJICAgIGZyYW1lcy4KKwkgICAgQ29hcnNlOiBob3N0IGRyb3BzIGZyYW1lcyBiYXNlZCBvbiBpbmRleGluZyBhcyByZXF1aXJlZCB0byBhY2hpZXZlCisJCSAgICBkZXNpcmVkIHNwZWVkLgorUGFyYW1bMF0KKwlCaXRtYXA6CisJICAgIDA6NyAgMCBub3JtYWwKKwkJIDEgZmFzdCBvbmx5ICIxLjUgdGltZXMiCisJCSBuIG5YIGZhc3QsIDEvblggc2xvdworCSAgICAzMCAgIEZyYW1lZHJvcDoKKwkJICAgICAnMCcgZHVyaW5nIDEuNSB0aW1lcyBwbGF5LCBldmVyeSBvdGhlciBCIGZyYW1lIGlzIGRyb3BwZWQKKwkJICAgICAnMScgZHVyaW5nIDEuNSB0aW1lcyBwbGF5LCBzdHJlYW0gaXMgdW5jaGFuZ2VkIChiaXRyYXRlCisJCQkgbXVzdCBub3QgZXhjZWVkIDhtYnBzKQorCSAgICAzMSAgIFNwZWVkOgorCQkgICAgICcwJyBzbG93CisJCSAgICAgJzEnIGZhc3QKKwlOb3RlOiBuIGlzIGxpbWl0ZWQgdG8gMi4gQW55dGhpbmcgaGlnaGVyIGRvZXMgbm90IHJlc3VsdCBpbgorCWZhc3RlciBwbGF5YmFjay4gSW5zdGVhZCB0aGUgaG9zdCBzaG91bGQgc3RhcnQgZHJvcHBpbmcgZnJhbWVzLgorUGFyYW1bMV0KKwlEaXJlY3Rpb246IDA9Zm9yd2FyZCwgMT1yZXZlcnNlCisJTm90ZTogdG8gbWFrZSByZXZlcnNlIHBsYXliYWNrIHdvcmsgeW91IGhhdmUgdG8gd3JpdGUgZnVsbCBHT1BzIGluCisJcmV2ZXJzZSBvcmRlci4KK1BhcmFtWzJdCisJUGljdHVyZSBtYXNrOgorCSAgICAxPUkgZnJhbWVzCisJICAgIDM9SSwgUCBmcmFtZXMKKwkgICAgNz1JLCBQLCBCIGZyYW1lcworUGFyYW1bM10KKwlCIGZyYW1lcyBwZXIgR09QIChmb3IgcmV2ZXJzZSBwbGF5IG9ubHkpCisJTm90ZTogZm9yIHJldmVyc2UgcGxheWJhY2sgdGhlIFBpY3R1cmUgTWFzayBzaG91bGQgYmUgc2V0IHRvIEkgb3IgSSwgUC4KKwlBZGRpbmcgQiBmcmFtZXMgdG8gdGhlIG1hc2sgd2lsbCByZXN1bHQgaW4gY29ycnVwdCB2aWRlby4gVGhpcyBmaWVsZAorCWhhcyB0byBiZSBzZXQgdG8gdGhlIGNvcnJlY3QgdmFsdWUgaW4gb3JkZXIgdG8ga2VlcCB0aGUgdGltaW5nIGNvcnJlY3QuCitQYXJhbVs0XQorCU11dGUgYXVkaW86IDA9ZGlzYWJsZSwgMT1lbmFibGUKK1BhcmFtWzVdCisJRGlzcGxheSAwPWZyYW1lLCAxPWZpZWxkCitQYXJhbVs2XQorCVNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIG11dGVkIGF1ZGlvIGZyYW1lcyB0byBwbGF5IGJlZm9yZSBub3JtYWwgYXVkaW8KKwlyZXN1bWVzLiAoTm90IGltcGxlbWVudGVkIGluIHRoZSBmaXJtd2FyZSwgbGVhdmUgYXQgMCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0RFQ19TVEVQX1ZJREVPCitFbnVtIAk1LzB4MDUKK0Rlc2NyaXB0aW9uCisJRWFjaCBjYWxsIHRvIHRoaXMgQVBJIHN0ZXBzIHRoZSBwbGF5YmFjayB0byB0aGUgbmV4dCB1bml0IGRlZmluZWQgYmVsb3cKKwlpbiB0aGUgY3VycmVudCBwbGF5YmFjayBkaXJlY3Rpb24uCitQYXJhbVswXQorCTA9ZnJhbWUsIDE9dG9wIGZpZWxkLCAyPWJvdHRvbSBmaWVsZAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfREVDX1NFVF9ETUFfQkxPQ0tfU0laRQorRW51bSAJOC8weDA4CitEZXNjcmlwdGlvbgorCVNldCBETUEgdHJhbnNmZXIgYmxvY2sgc2l6ZS4gQ291bnRlcnBhcnQgdG8gQVBJIDB4QzkKK1BhcmFtWzBdCisJRE1BIHRyYW5zZmVyIGJsb2NrIHNpemUgaW4gYnl0ZXMuIEEgZGlmZmVyZW50IHNpemUgbWF5IGJlIHNwZWNpZmllZAorCXdoZW4gaXNzdWluZyB0aGUgRE1BIHRyYW5zZmVyIGNvbW1hbmQuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9ERUNfR0VUX1hGRVJfSU5GTworRW51bSAJOS8weDA5CitEZXNjcmlwdGlvbgorCVRoaXMgQVBJIGNhbGwgbWF5IGJlIHVzZWQgdG8gZGV0ZWN0IGFuIGVuZCBvZiBzdHJlYW0gY29uZGl0aW9uLgorUmVzdWx0WzBdCisJU3RyZWFtIHR5cGUKK1Jlc3VsdFsxXQorCUFkZHJlc3Mgb2Zmc2V0CitSZXN1bHRbMl0KKwlNYXhpbXVtIGJ5dGVzIHRvIHRyYW5zZmVyCitSZXN1bHRbM10KKwlCdWZmZXIgZnVsbG5lc3MKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0RFQ19HRVRfRE1BX1NUQVRVUworRW51bSAJMTAvMHgwQQorRGVzY3JpcHRpb24KKwlTdGF0dXMgb2YgdGhlIGxhc3QgRE1BIHRyYW5zZmVyCitSZXN1bHRbMF0KKwlCaXQgMSBzZXQgbWVhbnMgdHJhbnNmZXIgY29tcGxldGUKKwlCaXQgMiBzZXQgbWVhbnMgRE1BIGVycm9yCisJQml0IDMgc2V0IG1lYW5zIGxpbmtlZCBsaXN0IGVycm9yCitSZXN1bHRbMV0KKwlETUEgdHlwZTogMD1NUEVHLCAxPU9TRCwgMj1ZVVYKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0RFQ19TQ0hFRF9ETUFfRlJPTV9IT1NUCitFbnVtIAkxMS8weDBCCitEZXNjcmlwdGlvbgorCVNldHVwIERNQSBmcm9tIGhvc3Qgb3BlcmF0aW9uLiBDb3VudGVycGFydCB0byBBUEkgMHhDQworUGFyYW1bMF0KKwlNZW1vcnkgYWRkcmVzcyBvZiBsaW5rIGxpc3QKK1BhcmFtWzFdCisJVG90YWwgIyBvZiBieXRlcyB0byB0cmFuc2ZlcgorUGFyYW1bMl0KKwlETUEgdHlwZSAoMD1NUEVHLCAxPU9TRCwgMj1ZVVYpCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9ERUNfUEFVU0VfUExBWUJBQ0sKK0VudW0gCTEzLzB4MEQKK0Rlc2NyaXB0aW9uCisJRnJlZXplIHBsYXliYWNrIGltbWVkaWF0ZWx5LiBJbiB0aGlzIG1vZGUsIHdoZW4gaW50ZXJuYWwgYnVmZmVycyBhcmUKKwlmdWxsLCBubyBtb3JlIGRhdGEgd2lsbCBiZSBhY2NlcHRlZCBhbmQgZGF0YSByZXF1ZXN0IElSUXMgd2lsbCBiZQorCW1hc2tlZC4KK1BhcmFtWzBdCisJRGlzcGxheTogMD1sYXN0IGZyYW1lLCAxPWJsYWNrCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9ERUNfSEFMVF9GVworRW51bSAJMTQvMHgwRQorRGVzY3JpcHRpb24KKwlUaGUgZmlybXdhcmUgaXMgaGFsdGVkIGFuZCBubyBmdXJ0aGVyIEFQSSBjYWxscyBhcmUgc2VydmljZWQgdW50aWwKKwl0aGUgZmlybXdhcmUgaXMgdXBsb2FkZWQgYWdhaW4uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9ERUNfU0VUX1NUQU5EQVJECitFbnVtIAkxNi8weDEwCitEZXNjcmlwdGlvbgorCVNlbGVjdHMgZGlzcGxheSBzdGFuZGFyZAorUGFyYW1bMF0KKwkwPU5UU0MsIDE9UEFMCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9ERUNfR0VUX1ZFUlNJT04KK0VudW0gCTE3LzB4MTEKK0Rlc2NyaXB0aW9uCisJUmV0dXJucyBkZWNvZGVyIGZpcm13YXJlIHZlcnNpb24gaW5mb3JtYXRpb24KK1Jlc3VsdFswXQorCVZlcnNpb24gYml0bWFzazoKKwkgICAgQml0cyAgMDoxNSBidWlsZAorCSAgICBCaXRzIDE2OjIzIG1pbm9yCisJICAgIEJpdHMgMjQ6MzEgbWFqb3IKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0RFQ19TRVRfU1RSRUFNX0lOUFVUCitFbnVtIAkyMC8weDE0CitEZXNjcmlwdGlvbgorCVNlbGVjdCBkZWNvZGVyIHN0cmVhbSBpbnB1dCBwb3J0CitQYXJhbVswXQorCTA9bWVtb3J5IChkZWZhdWx0KSwgMT1zdHJlYW1pbmcKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0RFQ19HRVRfVElNSU5HX0lORk8KK0VudW0gCTIxLzB4MTUKK0Rlc2NyaXB0aW9uCisJUmV0dXJucyB0aW1pbmcgaW5mb3JtYXRpb24gZnJvbSBzdGFydCBvZiBwbGF5YmFjaworUmVzdWx0WzBdCisJRnJhbWUgY291bnQgYnkgZGVjb2RlIG9yZGVyCitSZXN1bHRbMV0KKwlWaWRlbyBQVFMgYml0cyAwOjMxIGJ5IGRpc3BsYXkgb3JkZXIKK1Jlc3VsdFsyXQorCVZpZGVvIFBUUyBiaXQgMzIgYnkgZGlzcGxheSBvcmRlcgorUmVzdWx0WzNdCisJU0NSIGJpdHMgMDozMSBieSBkaXNwbGF5IG9yZGVyCitSZXN1bHRbNF0KKwlTQ1IgYml0IDMyIGJ5IGRpc3BsYXkgb3JkZXIKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0RFQ19TRVRfQVVESU9fTU9ERQorRW51bSAJMjIvMHgxNgorRGVzY3JpcHRpb24KKwlTZWxlY3QgYXVkaW8gbW9kZQorUGFyYW1bMF0KKwlEdWFsIG1vbm8gbW9kZSBhY3Rpb24KKwkgICAgMD1TdGVyZW8sIDE9TGVmdCwgMj1SaWdodCwgMz1Nb25vLCA0PVN3YXAsIC0xPVVuY2hhbmdlZAorUGFyYW1bMV0KKwlTdGVyZW8gbW9kZSBhY3Rpb246CisJICAgIDA9U3RlcmVvLCAxPUxlZnQsIDI9UmlnaHQsIDM9TW9ubywgND1Td2FwLCAtMT1VbmNoYW5nZWQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0RFQ19TRVRfRVZFTlRfTk9USUZJQ0FUSU9OCitFbnVtIAkyMy8weDE3CitEZXNjcmlwdGlvbgorCVNldHVwIGZpcm13YXJlIHRvIG5vdGlmeSB0aGUgaG9zdCBhYm91dCBhIHBhcnRpY3VsYXIgZXZlbnQuCisJQ291bnRlcnBhcnQgdG8gQVBJIDB4RDUKK1BhcmFtWzBdCisJRXZlbnQ6IDA9QXVkaW8gbW9kZSBjaGFuZ2UgYmV0d2VlbiBtb25vLCAoam9pbnQpIHN0ZXJlbyBhbmQgZHVhbCBjaGFubmVsLgorCUV2ZW50OiAzPURlY29kZXIgc3RhcnRlZAorCUV2ZW50OiA0PVVua25vd246IGdvZXMgb2ZmIDEwLTE1IHRpbWVzIHBlciBzZWNvbmQgd2hpbGUgZGVjb2RpbmcuCisJRXZlbnQ6IDU9U29tZSBzeW5jIGV2ZW50OiBnb2VzIG9mZiBvbmNlIHBlciBmcmFtZS4KK1BhcmFtWzFdCisJTm90aWZpY2F0aW9uIDA9ZGlzYWJsZWQsIDE9ZW5hYmxlZAorUGFyYW1bMl0KKwlJbnRlcnJ1cHQgYml0CitQYXJhbVszXQorCU1haWxib3ggc2xvdCwgLTEgaWYgbm8gbWFpbGJveCByZXF1aXJlZC4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0RFQ19TRVRfRElTUExBWV9CVUZGRVJTCitFbnVtIAkyNC8weDE4CitEZXNjcmlwdGlvbgorCU51bWJlciBvZiBkaXNwbGF5IGJ1ZmZlcnMuIFRvIGRlY29kZSBhbGwgZnJhbWVzIGluIHJldmVyc2UgcGxheWJhY2sgeW91CisJbXVzdCB1c2UgbmluZSBidWZmZXJzLgorUGFyYW1bMF0KKwkwPXNpeCBidWZmZXJzLCAxPW5pbmUgYnVmZmVycworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfREVDX0VYVFJBQ1RfVkJJCitFbnVtIAkyNS8weDE5CitEZXNjcmlwdGlvbgorCUV4dHJhY3RzIFZCSSBkYXRhCitQYXJhbVswXQorCTA9ZXh0cmFjdCBmcm9tIGV4dGVuc2lvbiAmIHVzZXIgZGF0YSwgMT1leHRyYWN0IGZyb20gcHJpdmF0ZSBwYWNrZXRzCitSZXN1bHRbMF0KKwlWQkkgdGFibGUgbG9jYXRpb24KK1Jlc3VsdFsxXQorCVZCSSB0YWJsZSBzaXplCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9ERUNfU0VUX0RFQ09ERVJfU09VUkNFCitFbnVtIAkyNi8weDFBCitEZXNjcmlwdGlvbgorCVNlbGVjdHMgZGVjb2RlciBzb3VyY2UuIEVuc3VyZSB0aGF0IHRoZSBwYXJhbWV0ZXJzIHBhc3NlZCB0byB0aGlzCisJQVBJIG1hdGNoIHRoZSBlbmNvZGVyIHNldHRpbmdzLgorUGFyYW1bMF0KKwlNb2RlOiAwPU1QRUcgZnJvbSBob3N0LCAxPVlVViBmcm9tIGVuY29kZXIsIDI9WVVWIGZyb20gaG9zdAorUGFyYW1bMV0KKwlZVVYgcGljdHVyZSB3aWR0aAorUGFyYW1bMl0KKwlZVVYgcGljdHVyZSBoZWlnaHQKK1BhcmFtWzNdCisJQml0bWFwOiBzZWUgUGFyYW1bMF0gb2YgQVBJIDB4QkQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0RFQ19TRVRfUFJFQlVGRkVSSU5HCitFbnVtIAkzMC8weDFFCitEZXNjcmlwdGlvbgorCURlY29kZXIgcHJlYnVmZmVyaW5nLCB3aGVuIGVuYWJsZWQgdXAgdG8gMTI4S0IgYXJlIGJ1ZmZlcmVkIGZvcgorCXN0cmVhbXMgPDhtcGJzIG9yIDY0MEtCIGZvciBzdHJlYW1zID44bWJwcworUGFyYW1bMF0KKwkwPW9mZiwgMT1vbgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9jeDIzNDF4L2Z3LWRlY29kZXItcmVncy50eHQgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2N4MjM0MXgvZnctZGVjb2Rlci1yZWdzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjUyYzhmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9jeDIzNDF4L2Z3LWRlY29kZXItcmVncy50eHQKQEAgLTAsMCArMSw4MTcgQEAKK1BWUjM1MCBWaWRlbyBkZWNvZGVyIHJlZ2lzdGVycyAweDAyMDAyODAwIC0+IDB4MDIwMDJCMDAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBsaXN0IGhhcyBiZWVuIHdvcmtlZCBvdXQgdGhyb3VnaCB0cmlhbCBhbmQgZXJyb3IuIFRoZXJlIHdpbGwgYmUgbWlzdGFrZXMKK2FuZCBvbWlzc2lvbnMuIFNvbWUgcmVnaXN0ZXJzIGhhdmUgbm8gb2J2aW91cyBlZmZlY3Qgc28gaXQncyBoYXJkIHRvIHNheSB3aGF0Cit0aGV5IGRvLCB3aGlsZSBvdGhlcnMgaW50ZXJhY3Qgd2l0aCBlYWNoIG90aGVyLCBvciByZXF1aXJlIGEgY2VydGFpbiBsb2FkCitzZXF1ZW5jZS4gSG9yaXpvbnRhbCBmaWx0ZXIgc2V0dXAgaXMgb25lIGV4YW1wbGUsIHdpdGggc2l4IHJlZ2lzdGVycyB3b3JraW5nCitpbiB1bmlzb24gYW5kIHJlcXVpcmluZyBhIGNlcnRhaW4gbG9hZCBzZXF1ZW5jZSB0byBjb3JyZWN0bHkgY29uZmlndXJlLiBUaGUKK2luZGV4ZWQgY29sb3VyIHBhbGV0dGUgaXMgbXVjaCBlYXNpZXIgdG8gc2V0IGF0IGp1c3QgdHdvIHJlZ2lzdGVycywgYnV0IGFnYWluCitpdCByZXF1aXJlcyBhIGNlcnRhaW4gbG9hZCBzZXF1ZW5jZS4KKworU29tZSByZWdpc3RlcnMgYXJlIGZ1c3N5IGFib3V0IHdoYXQgdGhleSBhcmUgc2V0IHRvLiBMb2FkIGluIGEgYmFkIHZhbHVlICYgdGhlCitkZWNvZGVyIHdpbGwgZmFpbC4gQSBmaXJtd2FyZSByZWxvYWQgd2lsbCBvZnRlbiByZWNvdmVyLCBidXQgc29tZXRpbWVzIGEgcmVzZXQKK2lzIHJlcXVpcmVkLiBGb3IgcmVnaXN0ZXJzIGNvbnRhaW5pbmcgc2l6ZSBpbmZvcm1hdGlvbiwgc2V0dGluZyB0aGVtIHRvIDAgaXMKK2dlbmVyYWxseSBhIGJhZCBpZGVhLiBGb3Igb3RoZXIgY29udHJvbCByZWdpc3RlcnMgaS5lLiAyODc4LCB5b3UnbGwgb25seSBmaW5kCitvdXQgd2hhdCB2YWx1ZXMgYXJlIGJhZCB3aGVuIGl0IGhhbmdzLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjgwMAorICAgICAgYml0IDAKKwlEZWNvZGVyIGVuYWJsZQorCSAgMCA9IGRpc2FibGUKKwkgIDEgPSBlbmFibGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyODA0CisgICAgICBiaXRzIDA6MzEKKwlEZWNvZGVyIGhvcml6b250YWwgWSBhbGlhcyByZWdpc3RlciAxCistLS0tLS0tLS0tLS0tLS0KKzI4MDgKKyAgICAgIGJpdHMgMDozMQorCURlY29kZXIgaG9yaXpvbnRhbCBZIGFsaWFzIHJlZ2lzdGVyIDIKKy0tLS0tLS0tLS0tLS0tLQorMjgwQworICAgICAgYml0cyAwOjMxCisJRGVjb2RlciBob3Jpem9udGFsIFkgYWxpYXMgcmVnaXN0ZXIgMworLS0tLS0tLS0tLS0tLS0tCisyODEwCisgICAgICBiaXRzIDA6MzEKKwlEZWNvZGVyIGhvcml6b250YWwgWSBhbGlhcyByZWdpc3RlciA0CistLS0tLS0tLS0tLS0tLS0KKzI4MTQKKyAgICAgIGJpdHMgMDozMQorCURlY29kZXIgaG9yaXpvbnRhbCBZIGFsaWFzIHJlZ2lzdGVyIDUKKy0tLS0tLS0tLS0tLS0tLQorMjgxOAorICAgICAgYml0cyAwOjMxCisJRGVjb2RlciBob3Jpem9udGFsIFkgYWxpYXMgdHJpZ2dlcgorCisgICAgIFRoZXNlIHNpeCByZWdpc3RlcnMgY29udHJvbCB0aGUgaG9yaXpvbnRhbCBhbGlhc2luZyBmaWx0ZXIgZm9yIHRoZSBZIHBsYW5lLgorICAgICBUaGUgZmlyc3QgZml2ZSByZWdpc3RlcnMgbXVzdCBhbGwgYmUgbG9hZGVkIGJlZm9yZSBhY2Nlc3NpbmcgdGhlIHRyaWdnZXIKKyAgICAgKDI4MTgpLCBhcyB0aGlzIHJlZ2lzdGVyIGFjdHVhbGx5IGNsb2NrcyB0aGUgZGF0YSB0aHJvdWdoIGZvciB0aGUgZmlyc3QKKyAgICAgZml2ZS4KKworICAgICBUbyBjb3JyZWN0bHkgcHJvZ3JhbSBzZXQgdGhlIGZpbHRlciwgdGhpcyB3aG9sZSBwcm9jZWR1cmUgbXVzdCBiZSBkb25lIDE2CisgICAgIHRpbWVzLiBUaGUgYWN0dWFsIHJlZ2lzdGVyIGNvbnRlbnRzIGFyZSBjb3BpZWQgZnJvbSBhIGxvb2t1cC10YWJsZSBpbiB0aGUKKyAgICAgZmlybXdhcmUgd2hpY2ggY29udGFpbnMgNCBkaWZmZXJlbnQgZmlsdGVyIHNldHRpbmdzLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjgxQworICAgICAgYml0cyAwOjMxCisJRGVjb2RlciBob3Jpem9udGFsIFVWIGFsaWFzIHJlZ2lzdGVyIDEKKy0tLS0tLS0tLS0tLS0tLQorMjgyMAorICAgICAgYml0cyAwOjMxCisJRGVjb2RlciBob3Jpem9udGFsIFVWIGFsaWFzIHJlZ2lzdGVyIDIKKy0tLS0tLS0tLS0tLS0tLQorMjgyNAorICAgICAgYml0cyAwOjMxCisJRGVjb2RlciBob3Jpem9udGFsIFVWIGFsaWFzIHJlZ2lzdGVyIDMKKy0tLS0tLS0tLS0tLS0tLQorMjgyOAorICAgICAgYml0cyAwOjMxCisJRGVjb2RlciBob3Jpem9udGFsIFVWIGFsaWFzIHJlZ2lzdGVyIDQKKy0tLS0tLS0tLS0tLS0tLQorMjgyQworICAgICAgYml0cyAwOjMxCisJRGVjb2RlciBob3Jpem9udGFsIFVWIGFsaWFzIHJlZ2lzdGVyIDUKKy0tLS0tLS0tLS0tLS0tLQorMjgzMAorICAgICAgYml0cyAwOjMxCisJRGVjb2RlciBob3Jpem9udGFsIFVWIGFsaWFzIHRyaWdnZXIKKworICAgICBUaGVzZSBzaXggcmVnaXN0ZXJzIGNvbnRyb2wgdGhlIGhvcml6b250YWwgYWxpYXNpbmcgZm9yIHRoZSBVViBwbGFuZS4KKyAgICAgT3BlcmF0aW9uIGlzIHRoZSBzYW1lIGFzIHRoZSBZIGZpbHRlciwgd2l0aCAyODMwIGJlaW5nIHRoZSB0cmlnZ2VyCisgICAgIHJlZ2lzdGVyLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjgzNAorICAgICAgYml0cyAwOjE1CisJRGVjb2RlciBZIHNvdXJjZSB3aWR0aCBpbiBwaXhlbHMKKworICAgICAgYml0cyAxNjozMQorCURlY29kZXIgWSBkZXN0aW5hdGlvbiB3aWR0aCBpbiBwaXhlbHMKKy0tLS0tLS0tLS0tLS0tLQorMjgzOAorICAgICAgYml0cyAwOjE1CisJRGVjb2RlciBVViBzb3VyY2Ugd2lkdGggaW4gcGl4ZWxzCisKKyAgICAgIGJpdHMgMTY6MzEKKwlEZWNvZGVyIFVWIGRlc3RpbmF0aW9uIHdpZHRoIGluIHBpeGVscworCisgICAgIE5PVEU6IEZvciBib3RoIHJlZ2lzdGVycywgdGhlIHJlc3VsdGluZyBpbWFnZSBtdXN0IGJlIGZ1bGx5IHZpc2libGUgb24KKyAgICAgc2NyZWVuLiBJZiB0aGUgaW1hZ2UgZXhjZWVkcyB0aGUgcmlnaHQgZWRnZSBib3RoIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uCisgICAgIHNpemUgbXVzdCBiZSBhZGp1c3RlZCB0byByZWZsZWN0IHRoZSB2aXNpYmxlIHBvcnRpb24uIEZvciB0aGUgc291cmNlIHdpZHRoLAorICAgICB5b3UgbXVzdCB0YWtlIGludG8gYWNjb3VudCB0aGUgc2NhbGluZyB3aGVuIGNhbGN1bGF0aW5nIHRoZSBuZXcgdmFsdWUuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisyODNDCisgICAgICBiaXRzIDA6MzEKKwlEZWNvZGVyIFkgaG9yaXpvbnRhbCBzY2FsaW5nCisJCSAgICBOb3JtYWxseSA9IFJlZyAyODU0ID4+IDIKKy0tLS0tLS0tLS0tLS0tLQorMjg0MAorICAgICAgYml0cyAwOjMxCisJRGVjb2RlciA/PyB1bmtub3duIC0gaG9yaXpvbnRhbCBzY2FsaW5nCisJICBVc3VhbGx5IDB4MDAwODA1MTQKKy0tLS0tLS0tLS0tLS0tLQorMjg0NAorICAgICAgYml0cyAwOjMxCisJRGVjb2RlciBVViBob3Jpem9udGFsIHNjYWxpbmcKKwkgIE5vcm1hbGx5ID0gUmVnIDI4NTQgPj4gMgorLS0tLS0tLS0tLS0tLS0tCisyODQ4CisgICAgICBiaXRzIDA6MzEKKwlEZWNvZGVyID8/IHVua25vd24gLSBob3Jpem9udGFsIHNjYWxpbmcKKwkgIFVzdWFsbHkgMHgwMDEwMDUxNAorLS0tLS0tLS0tLS0tLS0tCisyODRDCisgICAgICBiaXRzIDA6MzEKKwlEZWNvZGVyID8/IHVua25vd24gLSBZIHBsYW5lCisJICBVc3VhbGx5IDB4MDAyMDAwMjAKKy0tLS0tLS0tLS0tLS0tLQorMjg1MAorICAgICAgYml0cyAwOjMxCisJRGVjb2RlciA/PyB1bmtub3duIC0gVVYgcGxhbmUKKwkgIFVzdWFsbHkgMHgwMDIwMDAyMAorLS0tLS0tLS0tLS0tLS0tCisyODU0CisgICAgICBiaXRzIDA6MzEKKwlEZWNvZGVyICdtYXN0ZXInIHZhbHVlIGZvciBob3Jpem9udGFsIHNjYWxpbmcKKy0tLS0tLS0tLS0tLS0tLQorMjg1OAorICAgICAgYml0cyAwOjMxCisJRGVjb2RlciA/PyB1bmtub3duCisJICBVc3VhbGx5IDAKKy0tLS0tLS0tLS0tLS0tLQorMjg1QworICAgICAgYml0cyAwOjMxCisJRGVjb2RlciA/PyB1bmtub3duCisJICBOb3JtYWxseSA9IFJlZyAyODU0ID4+IDEKKy0tLS0tLS0tLS0tLS0tLQorMjg2MAorICAgICAgYml0cyAwOjMxCisJRGVjb2RlciA/PyB1bmtub3duCisJICBVc3VhbGx5IDAKKy0tLS0tLS0tLS0tLS0tLQorMjg2NAorICAgICAgYml0cyAwOjMxCisJRGVjb2RlciA/PyB1bmtub3duCisJICBOb3JtYWxseSA9IFJlZyAyODU0ID4+IDEKKy0tLS0tLS0tLS0tLS0tLQorMjg2OAorICAgICAgYml0cyAwOjMxCisJRGVjb2RlciA/PyB1bmtub3duCisJICBVc3VhbGx5IDAKKworICAgICBNb3N0IG9mIHRoZXNlIHJlZ2lzdGVycyBlaXRoZXIgY29udHJvbCBob3Jpem9udGFsIHNjYWxpbmcsIG9yIGFwcGVhciBsaW5rZWQKKyAgICAgdG8gaXQgaW4gc29tZSB3YXkuIFJlZ2lzdGVyIDI4NTQgY29udGFpbnMgdGhlICdtYXN0ZXInIHZhbHVlICYgdGhlIG90aGVyCisgICAgIHJlZ2lzdGVycyBjYW4gYmUgY2FsY3VsYXRlZCBmcm9tIHRoYXQgb25lLiBZb3UgbXVzdCBhbHNvIHJlbWVtYmVyIHRvCisgICAgIGNvcnJlY3RseSBzZXQgdGhlIGRpdmlkZXIgaW4gUmVnIDI4NzQuCisKKyAgICAgVG8gZW5sYXJnZToKKwkgICAgIFJlZyAyODU0ID0gKHNvdXJjZV93aWR0aCAqIDB4MDAyMDAwMDApIC8gZGVzdGluYXRpb25fd2lkdGgKKwkgICAgIFJlZyAyODc0ID0gTm8gZGl2aWRlCisKKyAgICAgVG8gcmVkdWNlIGZyb20gZnVsbCBzaXplIGRvd24gdG8gaGFsZiBzaXplOgorCSAgICAgUmVnIDI4NTQgPSAoc291cmNlX3dpZHRoLzIgKiAweDAwMjAwMDAwKSAvIGRlc3RpbmF0aW9uIHdpZHRoCisJICAgICBSZWcgMjg3NCA9IERpdmlkZSBieSAyCisKKyAgICAgVG8gcmVkdWNlIGZyb20gaGFsZiBzaXplIGRvd24gdG8gcXVhcnRlciBzaXplOgorCSAgICAgUmVnIDI4NTQgPSAoc291cmNlX3dpZHRoLzQgKiAweDAwMjAwMDAwKSAvIGRlc3RpbmF0aW9uIHdpZHRoCisJICAgICBSZWcgMjg3NCA9IERpdmlkZSBieSA0CisKKyAgICAgVGhlIHJlc3VsdCBpcyBhbHdheXMgcm91bmRlZCB1cC4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzI4NkMKKyAgICAgIGJpdHMgMDoxNQorCURlY29kZXIgaG9yaXpvbnRhbCBZIGJ1ZmZlciBvZmZzZXQKKworICAgICAgYml0cyAxNTozMQorCURlY29kZXIgaG9yaXpvbnRhbCBVViBidWZmZXIgb2Zmc2V0CisKKyAgICAgT2Zmc2V0IGludG8gdGhlIHZpZGVvIGltYWdlIGJ1ZmZlci4gSWYgdGhlIG9mZnNldCBpcyBncmFkdWFsbHkgaW5jcmVtZW50ZWQsCisgICAgIHRoZSBvbiBzY3JlZW4gaW1hZ2Ugd2lsbCBtb3ZlIGxlZnQgJiB3cmFwIGFyb3VuZCBoaWdoZXIgdXAgb24gdGhlIHJpZ2h0LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjg3MAorICAgICAgYml0cyAwOjE1CisJRGVjb2RlciBob3Jpem9udGFsIFkgb3V0cHV0IG9mZnNldAorCisgICAgICBiaXRzIDE2OjMxCisJRGVjb2RlciBob3Jpem9udGFsIFVWIG91dHB1dCBvZmZzZXQKKworICAgICBPZmZzZXRzIHRoZSBhY3R1YWwgdmlkZW8gb3V0cHV0LiBDb250cm9scyBvdXRwdXQgYWxpZ25tZW50IG9mIHRoZSBZICYgVVYKKyAgICAgcGxhbmVzLiBUaGUgaGlnaGVyIHRoZSB2YWx1ZSwgdGhlIGdyZWF0ZXIgdGhlIHNoaWZ0IHRvIHRoZSBsZWZ0LiBVc2UKKyAgICAgcmVnIDI4OTAgdG8gbW92ZSB0aGUgaW1hZ2UgcmlnaHQuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyODc0CisgICAgICBiaXRzIDA6MQorCURlY29kZXIgaG9yaXpvbnRhbCBZIG91dHB1dCBzaXplIGRpdmlkZXIKKwkgIDAwID0gTm8gZGl2aWRlCisJICAwMSA9IERpdmlkZSBieSAyCisJICAxMCA9IERpdmlkZSBieSAzCisKKyAgICAgIGJpdHMgNDo1CisJRGVjb2RlciBob3Jpem9udGFsIFVWIG91dHB1dCBzaXplIGRpdmlkZXIKKwkgIDAwID0gTm8gZGl2aWRlCisJICAwMSA9IERpdmlkZSBieSAyCisJICAxMCA9IERpdmlkZSBieSAzCisKKyAgICAgIGJpdCA4CisJRGVjb2RlciA/PyB1bmtub3duCisJICAwID0gTm9ybWFsCisJICAxID0gQWZmZWN0cyB2aWRlbyBvdXRwdXQgbGV2ZWxzCisKKyAgICAgIGJpdCAxNgorCURlY29kZXIgPz8gdW5rbm93bgorCSAgMCA9IE5vcm1hbAorCSAgMSA9IERpc2FibGUgaG9yaXpvbnRhbCBmaWx0ZXIKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzI4NzgKKyAgICAgIGJpdCAwCisJPz8gdW5rbm93bgorCisgICAgICBiaXQgMQorCW9zZCBvbi9vZmYKKwkgIDAgPSBvc2Qgb2ZmCisJICAxID0gb3NkIG9uCisKKyAgICAgIGJpdCAyCisJRGVjb2RlciArIG9zZCB2aWRlbyB0aW1pbmcKKwkgIDAgPSBOVFNDCisJICAxID0gUEFMCisKKyAgICAgIGJpdHMgMzo0CisJPz8gdW5rbm93bgorCisgICAgICBiaXQgNQorCURlY29kZXIgKyBvc2QKKwkgIFN3YXBzIHVwcGVyICYgbG93ZXIgZmllbGRzCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyODdDCisgICAgICBiaXRzIDA6MTAKKwlEZWNvZGVyICYgb3NkID8/IHVua25vd24KKwkgIE1vdmVzIGVudGlyZSBzY3JlZW4gaG9yaXpvbnRhbGx5LiBTdGFydHMgYXQgMHgwMDUgd2l0aCB0aGUgc2NyZWVuCisJICBzaGlmdGVkIGhlYXZpbHkgdG8gdGhlIHJpZ2h0LiBJbmNyZW1lbnRpbmcgaW4gc3RlcHMgb2YgMHgwMDQgd2lsbAorCSAgZ3JhZHVhbGx5IHNoaWZ0IHRoZSBzY3JlZW4gdG8gdGhlIGxlZnQuCisKKyAgICAgIGJpdHMgMTE6MzEKKwk/PyB1bmtub3duCisKKyAgICAgTm9ybWFsbHkgY29udGVudHMgYXJlIDB4MDAxMDExMTEgKE5UU0MpIG9yIDB4MTAxMDExMWQgKFBBTCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzI4ODAgIC0tLS0tLS0tICAgID8/IHVua25vd24KKzI4ODQgIC0tLS0tLS0tICAgID8/IHVua25vd24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyODg4CisgICAgICBiaXQgMAorCURlY29kZXIgKyBvc2QgPz8gdW5rbm93bgorCSAgMCA9IE5vcm1hbAorCSAgMSA9IE1pc2FsaWduZWQgZmllbGRzIChDb3JyZWN0YWJsZSB0aHJvdWdoIDI4OUMgJiAyOEE0KQorCisgICAgICBiaXQgNAorCT8/IHVua25vd24KKworICAgICAgYml0IDgKKwk/PyB1bmtub3duCisKKyAgICAgV2FybmluZzogQmFkIHZhbHVlcyB3aWxsIHJlcXVpcmUgYSBmaXJtd2FyZSByZWxvYWQgdG8gcmVjb3Zlci4KKwkJIEtub3duIHRvIGJlIGJhZCBhcmUgMHgwMDAsMHgwMTEsMHgxMDAsMHgxMTEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyODhDCisgICAgICBiaXRzIDA6MTUKKwlvc2QgPz8gdW5rbm93bgorCSAgQXBwZWFycyB0byBhZmZlY3QgdGhlIG9zZCBwb3NpdGlvbiBzdGFiaWxpdHkuIFRoZSBoaWdoZXIgdGhlIHZhbHVlIHRoZQorCSAgbW9yZSB1bnN0YWJsZSBpdCBiZWNvbWVzLiBEZWNvZGVyIG91dHB1dCByZW1haW5zIHN0YWJsZS4KKworICAgICAgYml0cyAxNjozMQorCW9zZCA/PyB1bmtub3duCisJICBTYW1lIGFzIGJpdHMgMDoxNQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjg5MAorICAgICAgYml0cyAwOjExCisJRGVjb2RlciBvdXRwdXQgaG9yaXpvbnRhbCBvZmZzZXQuCisKKyAgICAgSG9yaXpvbnRhbCBvZmZzZXQgbW92ZXMgdGhlIHZpZGVvIGltYWdlIHJpZ2h0LiBBIHNtYWxsIGxlZnQgc2hpZnQgaXMKKyAgICAgcG9zc2libGUsIGJ1dCBpdCdzIGJldHRlciB0byB1c2UgcmVnIDI4NzAgZm9yIHRoYXQgZHVlIHRvIGl0cyBncmVhdGVyCisgICAgIHJhbmdlLgorCisgICAgIE5PVEU6IFZpZGVvIGNvcnJ1cHRpb24gd2lsbCBvY2N1ciBpZiB2aWRlbyB3aW5kb3cgaXMgc2hpZnRlZCBvZmYgdGhlIHJpZ2h0CisgICAgIGVkZ2UuIFRvIGF2b2lkIHRoaXMgcmVhZCB0aGUgbm90ZXMgZm9yIDI4MzQgJiAyODM4LgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzI4OTQKKyAgICAgIGJpdHMgMDoyMworCURlY29kZXIgb3V0cHV0IHZpZGVvIHN1cnJvdW5kIGNvbG91ci4KKworICAgICBDb250YWlucyB0aGUgY29sb3VyIChpbiB5dXYpIHVzZWQgdG8gZmlsbCB0aGUgc2NyZWVuIHdoZW4gdGhlIHZpZGVvIGlzCisgICAgIHJ1bm5pbmcgaW4gYSB3aW5kb3cuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjg5OAorICAgICAgYml0cyAwOjIzCisJRGVjb2RlciB2aWRlbyB3aW5kb3cgY29sb3VyCisJICBDb250YWlucyB0aGUgY29sb3VyIChpbiB5dXYpIHVzZWQgdG8gZmlsbCB0aGUgdmlkZW8gd2luZG93IHdoZW4gdGhlCisJICB2aWRlbyBpcyB0dXJuZWQgb2ZmLgorCisgICAgICBiaXQgMjQKKwlEZWNvZGVyIHZpZGVvIG91dHB1dAorCSAgMCA9IFZpZGVvIG9uCisJICAxID0gVmlkZW8gb2ZmCisKKyAgICAgIGJpdCAyOAorCURlY29kZXIgcGxhbmUgb3JkZXIKKwkgIDAgPSBZLFVWCisJICAxID0gVVYsWQorCisgICAgICBiaXQgMjkKKwlEZWNvZGVyIHNlY29uZCBwbGFuZSBieXRlIG9yZGVyCisJICAwID0gTm9ybWFsIChVVikKKwkgIDEgPSBTd2FwcGVkIChWVSkKKworICAgICBJbiBub3JtYWwgdXNhZ2UsIHRoZSBmaXJzdCBwbGFuZSBpcyBZICYgdGhlIHNlY29uZCBwbGFuZSBpcyBVVi4gVGhvdWdoIHRoZQorICAgICBvcmRlciBvZiB0aGUgcGxhbmVzIGNhbiBiZSBzd2FwcGVkLCBvbmx5IHRoZSBieXRlIG9yZGVyIG9mIHRoZSBzZWNvbmQgcGxhbmUKKyAgICAgY2FuIGJlIHN3YXBwZWQuIFRoaXMgaXNuJ3QgbXVjaCB1c2UgZm9yIHRoZSBZIHBsYW5lLCBidXQgY2FuIGJlIHVzZWZ1bCBmb3IKKyAgICAgdGhlIFVWIHBsYW5lLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjg5QworICAgICAgYml0cyAwOjE1CisJRGVjb2RlciB2ZXJ0aWNhbCBmaWVsZCBvZmZzZXQgMQorCisgICAgICBiaXRzIDE2OjMxCisJRGVjb2RlciB2ZXJ0aWNhbCBmaWVsZCBvZmZzZXQgMgorCisgICAgIENvbnRyb2xzIGZpZWxkIG91dHB1dCB2ZXJ0aWNhbCBhbGlnbm1lbnQuIFRoZSBoaWdoZXIgdGhlIG51bWJlciwgdGhlIGxvd2VyCisgICAgIHRoZSBpbWFnZSBvbiBzY3JlZW4uIEtub3duIHN0YXJ0aW5nIHZhbHVlcyBhcmUgMHgwMTFFMDAxNyAoTlRTQykgJgorICAgICAweDAxNTAwMDE3IChQQUwpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjhBMAorICAgICAgYml0cyAwOjE1CisJRGVjb2RlciAmIG9zZCB3aWR0aCBpbiBwaXhlbHMKKworICAgICAgYml0cyAxNjozMQorCURlY29kZXIgJiBvc2QgaGVpZ2h0IGluIHBpeGVscworCisgICAgIEFsbCBvdXRwdXQgZnJvbSB0aGUgZGVjb2RlciAmIG9zZCBhcmUgZGlzYWJsZWQgYmV5b25kIHRoaXMgYXJlYS4gRGVjb2RlcgorICAgICBvdXRwdXQgd2lsbCBzaW1wbHkgZ28gYmxhY2sgb3V0c2lkZSBvZiB0aGlzIHJlZ2lvbi4gSWYgdGhlIG9zZCB0cmllcyB0bworICAgICBleGNlZWQgdGhpcyBhcmVhIGl0IHdpbGwgYmVjb21lIGNvcnJ1cHQuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjhBNAorICAgICAgYml0cyAwOjExCisJb3NkIGxlZnQgc2hpZnQuCisKKyAgICAgSGFzIGEgcmFuZ2Ugb2YgMHg3NzAtPjB4N0ZGLiBXaXRoIHRoZSBleGNlcHRpb24gb2YgMCwgYW55IHZhbHVlIG91dHNpZGUgb2YKKyAgICAgdGhpcyByYW5nZSBjb3JydXB0cyB0aGUgb3NkLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzI4QTgKKyAgICAgIGJpdHMgMDoxNQorCW9zZCB2ZXJ0aWNhbCBmaWVsZCBvZmZzZXQgMQorCisgICAgICBiaXRzIDE2OjMxCisJb3NkIHZlcnRpY2FsIGZpZWxkIG9mZnNldCAyCisKKyAgICAgQ29udHJvbHMgZmllbGQgb3V0cHV0IHZlcnRpY2FsIGFsaWdubWVudC4gVGhlIGhpZ2hlciB0aGUgbnVtYmVyLCB0aGUgbG93ZXIKKyAgICAgdGhlIGltYWdlIG9uIHNjcmVlbi4gS25vd24gc3RhcnRpbmcgdmFsdWVzIGFyZSAweDAxMUUwMDE3IChOVFNDKSAmCisgICAgIDB4MDE1MDAwMTcgKFBBTCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyOEFDICAtLS0tLS0tLSAgICA/PyB1bmtub3duCisgfAorIFYKKzI4QkMgIC0tLS0tLS0tICAgID8/IHVua25vd24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyOEMwCisgICAgICBiaXQgMAorCUN1cnJlbnQgb3V0cHV0IGZpZWxkCisJICAwID0gZmlyc3QgZmllbGQKKwkgIDEgPSBzZWNvbmQgZmllbGQKKworICAgICAgYml0cyAxNjozMQorCUN1cnJlbnQgc2NhbmxpbmUKKwkgIFRoZSBzY2FubGluZSBjb3VudHMgZnJvbSB0aGUgdG9wIGxpbmUgb2YgdGhlIGZpcnN0IGZpZWxkCisJICB0aHJvdWdoIHRvIHRoZSBsYXN0IGxpbmUgb2YgdGhlIHNlY29uZCBmaWVsZC4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyOEM0ICAtLS0tLS0tLSAgICA/PyB1bmtub3duCisgfAorIFYKKzI4RjggIC0tLS0tLS0tICAgID8/IHVua25vd24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyOEZDCisgICAgICBiaXQgMAorCT8/IHVua25vd24KKwkgIDAgPSBOb3JtYWwKKwkgIDEgPSBCcmVha3MgZGVjb2RlciAmIG9zZCBvdXRwdXQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyOTAwCisgICAgICBiaXRzIDA6MzEKKwlEZWNvZGVyIHZlcnRpY2FsIFkgYWxpYXMgcmVnaXN0ZXIgMQorLS0tLS0tLS0tLS0tLS0tCisyOTA0CisgICAgICBiaXRzIDA6MzEKKwlEZWNvZGVyIHZlcnRpY2FsIFkgYWxpYXMgcmVnaXN0ZXIgMgorLS0tLS0tLS0tLS0tLS0tCisyOTA4CisgICAgICBiaXRzIDA6MzEKKwlEZWNvZGVyIHZlcnRpY2FsIFkgYWxpYXMgdHJpZ2dlcgorCisgICAgIFRoZXNlIHRocmVlIHJlZ2lzdGVycyBjb250cm9sIHRoZSB2ZXJ0aWNhbCBhbGlhc2luZyBmaWx0ZXIgZm9yIHRoZSBZIHBsYW5lLgorICAgICBPcGVyYXRpb24gaXMgc2ltaWxhciB0byB0aGUgaG9yaXpvbnRhbCBZIGZpbHRlciAoMjgwNCkuIFRoZSBvbmx5IHJlYWwKKyAgICAgZGlmZmVyZW5jZSBpcyB0aGF0IHRoZXJlIGFyZSBvbmx5IHR3byByZWdpc3RlcnMgdG8gc2V0IGJlZm9yZSBhY2Nlc3NpbmcKKyAgICAgdGhlIHRyaWdnZXIgcmVnaXN0ZXIgKDI5MDgpLiBBcyBmb3IgdGhlIGhvcml6b250YWwgZmlsdGVyLCB0aGUgdmFsdWVzIGFyZQorICAgICB0YWtlbiBmcm9tIGEgbG9va3VwIHRhYmxlIGluIHRoZSBmaXJtd2FyZSwgYW5kIHRoZSBwcm9jZWR1cmUgbXVzdCBiZQorICAgICByZXBlYXRlZCAxNiB0aW1lcyB0byBmdWxseSBwcm9ncmFtIHRoZSBmaWx0ZXIuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjkwQworICAgICAgYml0cyAwOjMxCisJRGVjb2RlciB2ZXJ0aWNhbCBVViBhbGlhcyByZWdpc3RlciAxCistLS0tLS0tLS0tLS0tLS0KKzI5MTAKKyAgICAgIGJpdHMgMDozMQorCURlY29kZXIgdmVydGljYWwgVVYgYWxpYXMgcmVnaXN0ZXIgMgorLS0tLS0tLS0tLS0tLS0tCisyOTE0CisgICAgICBiaXRzIDA6MzEKKwlEZWNvZGVyIHZlcnRpY2FsIFVWIGFsaWFzIHRyaWdnZXIKKworICAgICBUaGVzZSB0aHJlZSByZWdpc3RlcnMgY29udHJvbCB0aGUgdmVydGljYWwgYWxpYXNpbmcgZmlsdGVyIGZvciB0aGUgVVYKKyAgICAgcGxhbmUuIE9wZXJhdGlvbiBpcyB0aGUgc2FtZSBhcyB0aGUgWSBmaWx0ZXIsIHdpdGggMjkxNCBiZWluZyB0aGUgdHJpZ2dlci4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyOTE4CisgICAgICBiaXRzIDA6MTUKKwlEZWNvZGVyIFkgc291cmNlIGhlaWdodCBpbiBwaXhlbHMKKworICAgICAgYml0cyAxNjozMQorCURlY29kZXIgWSBkZXN0aW5hdGlvbiBoZWlnaHQgaW4gcGl4ZWxzCistLS0tLS0tLS0tLS0tLS0KKzI5MUMKKyAgICAgIGJpdHMgMDoxNQorCURlY29kZXIgVVYgc291cmNlIGhlaWdodCBpbiBwaXhlbHMgZGl2aWRlZCBieSAyCisKKyAgICAgIGJpdHMgMTY6MzEKKwlEZWNvZGVyIFVWIGRlc3RpbmF0aW9uIGhlaWdodCBpbiBwaXhlbHMKKworICAgICBOT1RFOiBGb3IgYm90aCByZWdpc3RlcnMsIHRoZSByZXN1bHRpbmcgaW1hZ2UgbXVzdCBiZSBmdWxseSB2aXNpYmxlIG9uCisgICAgIHNjcmVlbi4gSWYgdGhlIGltYWdlIGV4Y2VlZHMgdGhlIGJvdHRvbSBlZGdlIGJvdGggdGhlIHNvdXJjZSBhbmQKKyAgICAgZGVzdGluYXRpb24gc2l6ZSBtdXN0IGJlIGFkanVzdGVkIHRvIHJlZmxlY3QgdGhlIHZpc2libGUgcG9ydGlvbi4gRm9yIHRoZQorICAgICBzb3VyY2UgaGVpZ2h0LCB5b3UgbXVzdCB0YWtlIGludG8gYWNjb3VudCB0aGUgc2NhbGluZyB3aGVuIGNhbGN1bGF0aW5nIHRoZQorICAgICBuZXcgdmFsdWUuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjkyMAorICAgICAgYml0cyAwOjMxCisJRGVjb2RlciBZIHZlcnRpY2FsIHNjYWxpbmcKKwkgIE5vcm1hbGx5ID0gUmVnIDI5MzAgPj4gMgorLS0tLS0tLS0tLS0tLS0tCisyOTI0CisgICAgICBiaXRzIDA6MzEKKwlEZWNvZGVyIFkgdmVydGljYWwgc2NhbGluZworCSAgTm9ybWFsbHkgPSBSZWcgMjkyMCArIDB4NTE0CistLS0tLS0tLS0tLS0tLS0KKzI5MjgKKyAgICAgIGJpdHMgMDozMQorCURlY29kZXIgVVYgdmVydGljYWwgc2NhbGluZworCSAgV2hlbiBlbmxhcmdpbmcgPSBSZWcgMjkzMCA+PiAyCisJICBXaGVuIHJlZHVjaW5nID0gUmVnIDI5MzAgPj4gMworLS0tLS0tLS0tLS0tLS0tCisyOTJDCisgICAgICBiaXRzIDA6MzEKKwlEZWNvZGVyIFVWIHZlcnRpY2FsIHNjYWxpbmcKKwkgIE5vcm1hbGx5ID0gUmVnIDI5MjggKyAweDUxNAorLS0tLS0tLS0tLS0tLS0tCisyOTMwCisgICAgICBiaXRzIDA6MzEKKwlEZWNvZGVyICdtYXN0ZXInIHZhbHVlIGZvciB2ZXJ0aWNhbCBzY2FsaW5nCistLS0tLS0tLS0tLS0tLS0KKzI5MzQKKyAgICAgIGJpdHMgMDozMQorCURlY29kZXIgPz8gdW5rbm93biAtIFkgdmVydGljYWwgc2NhbGluZworLS0tLS0tLS0tLS0tLS0tCisyOTM4CisgICAgICBiaXRzIDA6MzEKKwlEZWNvZGVyIFkgdmVydGljYWwgc2NhbGluZworCSAgTm9ybWFsbHkgPSBSZWcgMjkzMAorLS0tLS0tLS0tLS0tLS0tCisyOTNDCisgICAgICBiaXRzIDA6MzEKKwlEZWNvZGVyID8/IHVua25vd24gLSBZIHZlcnRpY2FsIHNjYWxpbmcKKy0tLS0tLS0tLS0tLS0tLQorMjk0MAorICAgICAgYml0cyAwOjMxCisJRGVjb2RlciBVViB2ZXJ0aWNhbCBzY2FsaW5nCisJICBXaGVuIGVubGFyZ2luZyA9IFJlZyAyOTMwID4+IDEKKwkgIFdoZW4gcmVkdWNpbmcgPSBSZWcgMjkzMAorLS0tLS0tLS0tLS0tLS0tCisyOTQ0CisgICAgICBiaXRzIDA6MzEKKwlEZWNvZGVyID8/IHVua25vd24gLSBVViB2ZXJ0aWNhbCBzY2FsaW5nCistLS0tLS0tLS0tLS0tLS0KKzI5NDgKKyAgICAgIGJpdHMgMDozMQorCURlY29kZXIgVVYgdmVydGljYWwgc2NhbGluZworCSAgTm9ybWFsbHkgPSBSZWcgMjk0MAorLS0tLS0tLS0tLS0tLS0tCisyOTRDCisgICAgICBiaXRzIDA6MzEKKwlEZWNvZGVyID8/IHVua25vd24gLSBVViB2ZXJ0aWNhbCBzY2FsaW5nCisKKyAgICAgTW9zdCBvZiB0aGVzZSByZWdpc3RlcnMgZWl0aGVyIGNvbnRyb2wgdmVydGljYWwgc2NhbGluZywgb3IgYXBwZWFyIGxpbmtlZAorICAgICB0byBpdCBpbiBzb21lIHdheS4gUmVnaXN0ZXIgMjkzMCBjb250YWlucyB0aGUgJ21hc3RlcicgdmFsdWUgJiBhbGwgb3RoZXIKKyAgICAgcmVnaXN0ZXJzIGNhbiBiZSBjYWxjdWxhdGVkIGZyb20gdGhhdCBvbmUuIFlvdSBtdXN0IGFsc28gcmVtZW1iZXIgdG8KKyAgICAgY29ycmVjdGx5IHNldCB0aGUgZGl2aWRlciBpbiBSZWcgMjk2QworCisgICAgIFRvIGVubGFyZ2U6CisJICAgICBSZWcgMjkzMCA9IChzb3VyY2VfaGVpZ2h0ICogMHgwMDIwMDAwMCkgLyBkZXN0aW5hdGlvbl9oZWlnaHQKKwkgICAgIFJlZyAyOTZDID0gTm8gZGl2aWRlCisKKyAgICAgVG8gcmVkdWNlIGZyb20gZnVsbCBzaXplIGRvd24gdG8gaGFsZiBzaXplOgorCSAgICAgUmVnIDI5MzAgPSAoc291cmNlX2hlaWdodC8yICogMHgwMDIwMDAwMCkgLyBkZXN0aW5hdGlvbiBoZWlnaHQKKwkgICAgIFJlZyAyOTZDID0gRGl2aWRlIGJ5IDIKKworICAgICAgVG8gcmVkdWNlIGZyb20gaGFsZiBkb3duIHRvIHF1YXJ0ZXIuCisJICAgICBSZWcgMjkzMCA9IChzb3VyY2VfaGVpZ2h0LzQgKiAweDAwMjAwMDAwKSAvIGRlc3RpbmF0aW9uIGhlaWdodAorCSAgICAgUmVnIDI5NkMgPSBEaXZpZGUgYnkgNAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjk1MAorICAgICAgYml0cyAwOjE1CisJRGVjb2RlciBZIGxpbmUgaW5kZXggaW50byBkaXNwbGF5IGJ1ZmZlciwgZmlyc3QgZmllbGQKKworICAgICAgYml0cyAxNjozMQorCURlY29kZXIgWSB2ZXJ0aWNhbCBsaW5lIHNraXAsIGZpcnN0IGZpZWxkCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjk1NAorICAgICAgYml0cyAwOjE1CisJRGVjb2RlciBZIGxpbmUgaW5kZXggaW50byBkaXNwbGF5IGJ1ZmZlciwgc2Vjb25kIGZpZWxkCisKKyAgICAgIGJpdHMgMTY6MzEKKwlEZWNvZGVyIFkgdmVydGljYWwgbGluZSBza2lwLCBzZWNvbmQgZmllbGQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyOTU4CisgICAgICBiaXRzIDA6MTUKKwlEZWNvZGVyIFVWIGxpbmUgaW5kZXggaW50byBkaXNwbGF5IGJ1ZmZlciwgZmlyc3QgZmllbGQKKworICAgICAgYml0cyAxNjozMQorCURlY29kZXIgVVYgdmVydGljYWwgbGluZSBza2lwLCBmaXJzdCBmaWVsZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzI5NUMKKyAgICAgIGJpdHMgMDoxNQorCURlY29kZXIgVVYgbGluZSBpbmRleCBpbnRvIGRpc3BsYXkgYnVmZmVyLCBzZWNvbmQgZmllbGQKKworICAgICAgYml0cyAxNjozMQorCURlY29kZXIgVVYgdmVydGljYWwgbGluZSBza2lwLCBzZWNvbmQgZmllbGQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyOTYwCisgICAgICBiaXRzIDA6MTUKKwlEZWNvZGVyIGRlc3RpbmF0aW9uIGhlaWdodCBtaW51cyAxCisKKyAgICAgIGJpdHMgMTY6MzEKKwlEZWNvZGVyIGRlc3RpbmF0aW9uIGhlaWdodCBkaXZpZGVkIGJ5IDIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyOTY0CisgICAgICBiaXRzIDA6MTUKKwlEZWNvZGVyIFkgdmVydGljYWwgb2Zmc2V0LCBzZWNvbmQgZmllbGQKKworICAgICAgYml0cyAxNjozMQorCURlY29kZXIgWSB2ZXJ0aWNhbCBvZmZzZXQsIGZpcnN0IGZpZWxkCisKKyAgICAgVGhlc2UgdHdvIHJlZ2lzdGVycyBzaGlmdCB0aGUgWSBwbGFuZSB1cC4gVGhlIGhpZ2hlciB0aGUgbnVtYmVyLCB0aGUKKyAgICAgZ3JlYXRlciB0aGUgc2hpZnQuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMjk2OAorICAgICAgYml0cyAwOjE1CisJRGVjb2RlciBVViB2ZXJ0aWNhbCBvZmZzZXQsIHNlY29uZCBmaWVsZAorCisgICAgICBiaXRzIDE2OjMxCisJRGVjb2RlciBVViB2ZXJ0aWNhbCBvZmZzZXQsIGZpcnN0IGZpZWxkCisKKyAgICAgVGhlc2UgdHdvIHJlZ2lzdGVycyBzaGlmdCB0aGUgVVYgcGxhbmUgdXAuIFRoZSBoaWdoZXIgdGhlIG51bWJlciwgdGhlCisgICAgIGdyZWF0ZXIgdGhlIHNoaWZ0LgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzI5NkMKKyAgICAgIGJpdHMgMDoxCisJRGVjb2RlciB2ZXJ0aWNhbCBZIG91dHB1dCBzaXplIGRpdmlkZXIKKwkgIDAwID0gTm8gZGl2aWRlCisJICAwMSA9IERpdmlkZSBieSAyCisJICAxMCA9IERpdmlkZSBieSA0CisKKyAgICAgIGJpdHMgODo5CisJRGVjb2RlciB2ZXJ0aWNhbCBVViBvdXRwdXQgc2l6ZSBkaXZpZGVyCisJICAwMCA9IE5vIGRpdmlkZQorCSAgMDEgPSBEaXZpZGUgYnkgMgorCSAgMTAgPSBEaXZpZGUgYnkgNAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzI5NzAKKyAgICAgIGJpdCAwCisJRGVjb2RlciA/PyB1bmtub3duCisJICAwID0gTm9ybWFsCisJICAxID0gQWZmZWN0IHZpZGVvIG91dHB1dCBsZXZlbHMKKworICAgICAgYml0IDE2CisJRGVjb2RlciA/PyB1bmtub3duCisJICAwID0gTm9ybWFsCisJICAxID0gRGlzYWJsZSB2ZXJ0aWNhbCBmaWx0ZXIKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzI5NzQgIC0tLS0tLS0tICAgPz8gdW5rbm93bgorIHwKKyBWCisyOUVGICAtLS0tLS0tLSAgID8/IHVua25vd24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyQTAwCisgICAgICBiaXRzIDA6MgorCW9zZCBjb2xvdXIgbW9kZQorCSAgMDAwID0gOCBiaXQgaW5kZXhlZAorCSAgMDAxID0gMTYgYml0ICg1NjUpCisJICAwMTAgPSAxNSBiaXQgKDU1NSkKKwkgIDAxMSA9IDEyIGJpdCAoNDQ0KQorCSAgMTAwID0gMzIgYml0ICg4ODg4KQorCisgICAgICBiaXRzIDQ6NQorCW9zZCBkaXNwbGF5IGJwcAorCSAgMDEgPSA4IGJpdAorCSAgMTAgPSAxNiBiaXQKKwkgIDExID0gMzIgYml0CisKKyAgICAgIGJpdCA4CisJb3NkIGdsb2JhbCBhbHBoYQorCSAgMCA9IE9mZgorCSAgMSA9IE9uCisKKyAgICAgIGJpdCA5CisJb3NkIGxvY2FsIGFscGhhCisJICAwID0gT2ZmCisJICAxID0gT24KKworICAgICAgYml0IDEwCisJb3NkIGNvbG91ciBrZXkKKwkgIDAgPSBPZmYKKwkgIDEgPSBPbgorCisgICAgICBiaXQgMTEKKwlvc2QgPz8gdW5rbm93bgorCSAgTXVzdCBiZSAxCisKKyAgICAgIGJpdCAxMworCW9zZCBjb2xvdXIgc3BhY2UKKwkgIDAgPSBBUkdCCisJICAxID0gQVlWVQorCisgICAgICBiaXRzIDE2OjMxCisJb3NkID8/IHVua25vd24KKwkgIE11c3QgYmUgMHgwMDFCIChzb21lIGtpbmQgb2YgYnVmZmVyIHBvaW50ZXIgPykKKworICAgICBXaGVuIHRoZSBiaXRzLXBlci1waXhlbCBpcyBzZXQgdG8gOCwgdGhlIGNvbG91ciBtb2RlIGlzIGlnbm9yZWQgYW5kCisgICAgIGFzc3VtZWQgdG8gYmUgOCBiaXQgaW5kZXhlZC4gRm9yIDE2ICYgMzIgYml0cy1wZXItcGl4ZWwgdGhlIGNvbG91ciBkZXB0aAorICAgICBpcyBob25vdXJlZCwgYW5kIHdoZW4gdXNpbmcgYSBjb2xvdXIgZGVwdGggdGhhdCByZXF1aXJlcyBmZXdlciBieXRlcyB0aGFuCisgICAgIGFsbG9jYXRlZCB0aGUgZXh0cmEgYnl0ZXMgYXJlIHVzZWQgYXMgcGFkZGluZy4gU28gZm9yIGEgMzIgYnBwIHdpdGggOCBiaXQKKyAgICAgaW5kZXggY29sb3VyLCB0aGVyZSBhcmUgMyBwYWRkaW5nIGJ5dGVzIHBlciBwaXhlbC4gSXQncyBhbHNvIHBvc3NpYmxlIHRvCisgICAgIHNlbGVjdCAxNmJwcCB3aXRoIGEgMzIgYml0IGNvbG91ciBtb2RlLiBUaGlzIHJlc3VsdHMgaW4gdGhlIHBpeGVsIHdpZHRoCisgICAgIGJlaW5nIGRvdWJsZWQsIGJ1dCB0aGUgY29sb3Iga2V5IHdpbGwgbm90IHdvcmsgYXMgZXhwZWN0ZWQgaW4gdGhpcyBtb2RlLgorCisgICAgIENvbG91ciBrZXkgaXMgYXMgaXQgc3VnZ2VzdHMuIFlvdSBkZXNpZ25hdGUgYSBjb2xvdXIgd2hpY2ggd2lsbCBiZWNvbWUKKyAgICAgY29tcGxldGVseSB0cmFuc3BhcmVudC4gV2hlbiB1c2luZyA1NjUsIDU1NSBvciA0NDQgY29sb3VyIG1vZGVzLCB0aGUKKyAgICAgY29sb3VyIGtleSBpcyBhbHdheXMgMTYgYml0cyB3aWRlLiBUaGUgY29sb3VyIHRvIGtleSBvbiBpcyBzZXQgaW4gUmVnIDJBMTguCisKKyAgICAgTG9jYWwgYWxwaGEgd29ya3MgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHRoZSBjb2xvdXIgbW9kZS4gRm9yIDMyYnBwICYgOAorICAgICBiaXQgaW5kZXhlZCwgbG9jYWwgYWxwaGEgaXMgYSBwZXItcGl4ZWwgMjU2IHN0ZXAgdHJhbnNwYXJlbmN5LCB3aXRoIDAgYmVpbmcKKyAgICAgdHJhbnNwYXJlbnQgYW5kIDI1NSBiZWluZyBzb2xpZC4gRm9yIHRoZSAxNmJwcCBtb2RlcyA1NTUgJiA0NDQsIHRoZSB1bnVzZWQKKyAgICAgYml0KHMpIGFjdCBhcyBhIHNpbXBsZSB0cmFuc3BhcmVuY3kgc3dpdGNoLCB3aXRoIDAgYmVpbmcgc29saWQgJiAxIGJlaW5nCisgICAgIGZ1bGx5IHRyYW5zcGFyZW50LiBUaGVyZSBpcyBubyBsb2NhbCBhbHBoYSBzdXBwb3J0IGZvciAxNmJpdCA1NjUuCisKKyAgICAgR2xvYmFsIGFscGhhIGlzIGEgMjU2IHN0ZXAgdHJhbnNwYXJlbmN5IHRoYXQgYXBwbGllcyB0byB0aGUgZW50aXJlIG9zZCwKKyAgICAgd2l0aCAwIGJlaW5nIHRyYW5zcGFyZW50ICYgMjU1IGJlaW5nIHNvbGlkLgorCisgICAgIEl0J3MgcG9zc2libGUgdG8gY29tYmluZSBjb2xvdXIga2V5LCBsb2NhbCBhbHBoYSAmIGdsb2JhbCBhbHBoYS4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyQTA0CisgICAgICBiaXRzIDA6MTUKKwlvc2QgeCBjb29yZCBmb3IgbGVmdCBlZGdlCisKKyAgICAgIGJpdHMgMTY6MzEKKwlvc2QgeSBjb29yZCBmb3IgdG9wIGVkZ2UKKy0tLS0tLS0tLS0tLS0tLQorMkEwOAorICAgICAgYml0cyAwOjE1CisJb3NkIHggY29vcmQgZm9yIHJpZ2h0IGVkZ2UKKworICAgICAgYml0cyAxNjozMQorCW9zZCB5IGNvb3JkIGZvciBib3R0b20gZWRnZQorCisgICAgIEZvciBib3RoIHJlZ2lzdGVycywgKDAsMCkgPSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIGRpc3BsYXkgYXJlYS4gVGhlc2UKKyAgICAgcmVnaXN0ZXJzIGRvIG5vdCBjb250cm9sIHRoZSBvc2Qgc2l6ZSwgb25seSB3aGVyZSBpdCdzIHBvc2l0aW9uZWQgJiBob3cKKyAgICAgbXVjaCBpcyB2aXNpYmxlLiBUaGUgdmlzaWJsZSBvc2QgYXJlYSBjYW5ub3QgZXhjZWVkIHRoZSByaWdodCBlZGdlIG9mIHRoZQorICAgICBkaXNwbGF5LCBvdGhlcndpc2UgdGhlIG9zZCB3aWxsIGJlY29tZSBjb3JydXB0LiBTZWUgcmVnIDJBMTAgZm9yCisgICAgIHNldHRpbmcgb3NkIHdpZHRoLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzJBMEMKKyAgICAgIGJpdHMgMDozMQorCW9zZCBidWZmZXIgaW5kZXgKKworICAgICBBbiBpbmRleCBpbnRvIHRoZSBvc2QgYnVmZmVyLiBTbG93bHkgaW5jcmVtZW50aW5nIHRoaXMgbW92ZXMgdGhlIG9zZCBsZWZ0LAorICAgICB3cmFwcGluZyBhcm91bmQgb250byB0aGUgcmlnaHQgZWRnZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzJBMTAKKyAgICAgIGJpdHMgMDoxMQorCW9zZCBidWZmZXIgMzIgYml0IHdvcmQgd2lkdGgKKworICAgICBDb250YWlucyB0aGUgd2lkdGggb2YgdGhlIG9zZCBtZWFzdXJlZCBpbiAzMiBiaXQgd29yZHMuIFRoaXMgbWVhbnMgdGhhdCBhbGwKKyAgICAgY29sb3VyIG1vZGVzIGFyZSByZXN0cmljdGVkIHRvIGEgYnl0ZSB3aWR0aCB3aGljaCBpcyBkaXZpc2libGUgYnkgNC4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyQTE0CisgICAgICBiaXRzIDA6MTUKKwlvc2QgaGVpZ2h0IGluIHBpeGVscworCisgICAgICBiaXRzIDE2OjMyCisJb3NkIGxpbmUgaW5kZXggaW50byBidWZmZXIKKwkgIG9zZCB3aWxsIHN0YXJ0IGRpc3BsYXlpbmcgZnJvbSB0aGlzIGxpbmUuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMkExOAorICAgICAgYml0cyAwOjMxCisJb3NkIGNvbG91ciBrZXkKKworICAgICBDb250YWlucyB0aGUgY29sb3VyIHZhbHVlIHdoaWNoIHdpbGwgYmUgdHJhbnNwYXJlbnQuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMkExQworICAgICAgYml0cyAwOjcKKwlvc2QgZ2xvYmFsIGFscGhhCisKKyAgICAgQ29udGFpbnMgdGhlIGdsb2JhbCBhbHBoYSB2YWx1ZSAoZXF1aXYgaXZ0dmZiY3RsIC0tYWxwaGEgWFgpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMkEyMCAgLS0tLS0tLS0gICAgPz8gdW5rbm93bgorIHwKKyBWCisyQTJDICAtLS0tLS0tLSAgICA/PyB1bmtub3duCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMkEzMAorICAgICAgYml0cyAwOjcKKwlvc2QgY29sb3VyIHRvIGNoYW5nZSBpbiBpbmRleGVkIHBhbGV0dGUKKy0tLS0tLS0tLS0tLS0tLQorMkEzNAorICAgICAgYml0cyAwOjMxCisJb3NkIGNvbG91ciBmb3IgaW5kZXhlZCBwYWxldHRlCisKKyAgICAgVG8gc2V0IHRoZSBuZXcgcGFsZXR0ZSwgZmlyc3QgbG9hZCB0aGUgaW5kZXggb2YgdGhlIGNvbG91ciB0byBjaGFuZ2UgaW50bworICAgICAyQTMwLCB0aGVuIGxvYWQgdGhlIG5ldyBjb2xvdXIgaW50byAyQTM0LiBUaGUgZnVsbCBwYWxldHRlIGlzIDI1NiBjb2xvdXJzLAorICAgICBzbyB0aGUgaW5kZXggcmFuZ2UgaXMgMHgwMC0weEZGCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMkEzOCAgLS0tLS0tLS0gICAgPz8gdW5rbm93bgorMkEzQyAgLS0tLS0tLS0gICAgPz8gdW5rbm93bgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzJBNDAKKyAgICAgIGJpdHMgMDozMQorCW9zZCA/PyB1bmtub3duCisKKyAgICAgQWZmZWN0cyBvdmVyYWxsIGJyaWdodG5lc3MsIHdyYXBwaW5nIGFyb3VuZCB0byBibGFjaworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzJBNDQKKyAgICAgIGJpdHMgMDozMQorCW9zZCA/PyB1bmtub3duCisKKyAgICAgR3JlZW4gdGludAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzJBNDgKKyAgICAgIGJpdHMgMDozMQorCW9zZCA/PyB1bmtub3duCisKKyAgICAgUmVkIHRpbnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyQTRDCisgICAgICBiaXRzIDA6MzEKKwlvc2QgPz8gdW5rbm93bgorCisgICAgIEFmZmVjdHMgb3ZlcmFsbCBicmlnaHRuZXNzLCB3cmFwcGluZyBhcm91bmQgdG8gYmxhY2sKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisyQTUwCisgICAgICBiaXRzIDA6MzEKKwlvc2QgPz8gdW5rbm93bgorCisgICAgIENvbG91ciBzaGlmdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzJBNTQKKyAgICAgIGJpdHMgMDozMQorCW9zZCA/PyB1bmtub3duCisKKyAgICAgQ29sb3VyIHNoaWZ0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMkE1OCAgLS0tLS0tLS0gICAgPz8gdW5rbm93bgorIHwKKyBWCisyQUZDICAtLS0tLS0tLSAgICA/PyB1bmtub3duCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMkIwMAorICAgICAgYml0IDAKKwlvc2QgZmlsdGVyIGNvbnRyb2wKKwkgIDAgPSBmaWx0ZXIgb2ZmCisJICAxID0gZmlsdGVyIG9uCisKKyAgICAgIGJpdHMgMTo0CisJb3NkID8/IHVua25vd24KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwordjAuNCAtIDEyIE1hcmNoIDIwMDcgLSBJYW4gQXJtc3Ryb25nIChpYW5AaWFybXN0LmRlbW9uLmNvLnVrKQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2N4MjM0MXgvZnctZG1hLnR4dCBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvY3gyMzQxeC9mdy1kbWEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlNTJiNmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2N4MjM0MXgvZnctZG1hLnR4dApAQCAtMCwwICsxLDk2IEBACitUaGlzIHBhZ2UgZGVzY3JpYmVzIHRoZSBzdHJ1Y3R1cmVzIGFuZCBwcm9jZWR1cmVzIHVzZWQgYnkgdGhlIGN4MjM0MXggRE1BCitlbmdpbmUuCisKK0ludHJvZHVjdGlvbgorPT09PT09PT09PT09CisKK1RoZSBjeDIzNDF4IFBDSSBpbnRlcmZhY2UgaXMgYnVzbWFzdGVyIGNhcGFibGUuIFRoaXMgbWVhbnMgaXQgaGFzIGEgRE1BCitlbmdpbmUgdG8gZWZmaWNpZW50bHkgdHJhbnNmZXIgbGFyZ2Ugdm9sdW1lcyBvZiBkYXRhIGJldHdlZW4gdGhlIGNhcmQgYW5kIG1haW4KK21lbW9yeSB3aXRob3V0IHJlcXVpcmluZyBoZWxwIGZyb20gYSBDUFUuIExpa2UgbW9zdCBoYXJkd2FyZSwgaXQgbXVzdCBvcGVyYXRlCitvbiBjb250aWd1b3VzIHBoeXNpY2FsIG1lbW9yeS4gVGhpcyBpcyBkaWZmaWN1bHQgdG8gY29tZSBieSBpbiBsYXJnZSBxdWFudGl0aWVzCitvbiB2aXJ0dWFsIG1lbW9yeSBtYWNoaW5lcy4KKworVGhlcmVmb3JlLCBpdCBhbHNvIHN1cHBvcnRzIGEgdGVjaG5pcXVlIGNhbGxlZCAic2NhdHRlci1nYXRoZXIiLiBUaGUgY2FyZCBjYW4KK3RyYW5zZmVyIG11bHRpcGxlIGJ1ZmZlcnMgaW4gb25lIG9wZXJhdGlvbi4gSW5zdGVhZCBvZiBhbGxvY2F0aW5nIG9uZSBsYXJnZQorY29udGlndW91cyBidWZmZXIsIHRoZSBkcml2ZXIgY2FuIGFsbG9jYXRlIHNldmVyYWwgc21hbGxlciBidWZmZXJzLgorCitJbiBwcmFjdGljZSwgSSd2ZSBzZWVuIHRoZSBhdmVyYWdlIHRyYW5zZmVyIHRvIGJlIHJvdWdobHkgODBLLCBidXQgdHJhbnNmZXJzCithYm92ZSAxMjhLIHdlcmUgbm90IHVuY29tbW9uLCBwYXJ0aWN1bGFybHkgYXQgc3RhcnR1cC4gVGhlIDEyOEsgZmlndXJlIGlzCitpbXBvcnRhbnQsIGJlY2F1c2UgdGhhdCBpcyB0aGUgbGFyZ2VzdCBibG9jayB0aGF0IHRoZSBrZXJuZWwgY2FuIG5vcm1hbGx5CithbGxvY2F0ZS4gRXZlbiBzdGlsbCwgMTI4SyBibG9ja3MgYXJlIGhhcmQgdG8gY29tZSBieSwgc28gdGhlIGRyaXZlciB3cml0ZXIgaXMKK3VyZ2VkIHRvIGNob29zZSBhIHNtYWxsZXIgYmxvY2sgc2l6ZSBhbmQgbGVhcm4gdGhlIHNjYXR0ZXItZ2F0aGVyIHRlY2huaXF1ZS4KKworTWFpbGJveCAjMTAgaXMgcmVzZXJ2ZWQgZm9yIERNQSB0cmFuc2ZlciBpbmZvcm1hdGlvbi4KKworTm90ZTogdGhlIGhhcmR3YXJlIGV4cGVjdHMgbGl0dGxlLWVuZGlhbiBkYXRhICgnaW50ZWwgZm9ybWF0JykuCisKK0Zsb3cKKz09PT0KKworVGhpcyBzZWN0aW9uIGRlc2NyaWJlcywgaW4gZ2VuZXJhbCwgdGhlIG9yZGVyIG9mIGV2ZW50cyB3aGVuIGhhbmRsaW5nIERNQQordHJhbnNmZXJzLiBEZXRhaWxlZCBpbmZvcm1hdGlvbiBmb2xsb3dzIHRoaXMgc2VjdGlvbi4KKworLSBUaGUgY2FyZCByYWlzZXMgdGhlIEVuY29kZXIgaW50ZXJydXB0LgorLSBUaGUgZHJpdmVyIHJlYWRzIHRoZSB0cmFuc2ZlciB0eXBlLCBvZmZzZXQgYW5kIHNpemUgZnJvbSBNYWlsYm94ICMxMC4KKy0gVGhlIGRyaXZlciBjb25zdHJ1Y3RzIHRoZSBzY2F0dGVyLWdhdGhlciBhcnJheSBmcm9tIGVub3VnaCBmcmVlIGRtYSBidWZmZXJzCisgIHRvIGNvdmVyIHRoZSBzaXplLgorLSBUaGUgZHJpdmVyIHNjaGVkdWxlcyB0aGUgRE1BIHRyYW5zZmVyIHZpYSB0aGUgU2NoZWR1bGVETUF0b0hvc3QgQVBJIGNhbGwuCistIFRoZSBjYXJkIHJhaXNlcyB0aGUgRE1BIENvbXBsZXRlIGludGVycnVwdC4KKy0gVGhlIGRyaXZlciBjaGVja3MgdGhlIERNQSBzdGF0dXMgcmVnaXN0ZXIgZm9yIGFueSBlcnJvcnMuCistIFRoZSBkcml2ZXIgcG9zdC1wcm9jZXNzZXMgdGhlIG5ld2x5IHRyYW5zZmVycmVkIGJ1ZmZlcnMuCisKK05PVEUhIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIEVuY29kZXIgYW5kIERNQSBDb21wbGV0ZSBpbnRlcnJ1cHRzIGdldCByYWlzZWQKK3NpbXVsdGFuZW91c2x5LiAoRW5kIG9mIHRoZSBsYXN0LCBzdGFydCBvZiB0aGUgbmV4dCwgZXRjLikKKworTWFpbGJveCAjMTAKKz09PT09PT09PT09CisKK1RoZSBGbGFncywgQ29tbWFuZCwgUmV0dXJuIFZhbHVlIGFuZCBUaW1lb3V0IGZpZWxkcyBhcmUgaWdub3JlZC4KKworTmFtZTogICAgICAgTWFpbGJveCAjMTAKK1Jlc3VsdHNbMF06IFR5cGU6IDA6IE1QRUcuCitSZXN1bHRzWzFdOiBPZmZzZXQ6IFRoZSBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgY2FyZCdzIG1lbW9yeSBzcGFjZS4KK1Jlc3VsdHNbMl06IFNpemU6IFRoZSBleGFjdCBudW1iZXIgb2YgYnl0ZXMgdG8gdHJhbnNmZXIuCisKK015IHNwZWN1bGF0aW9uIGlzIHRoYXQgc2luY2UgdGhlIFN0YXJ0Q2FwdHVyZSBBUEkgaGFzIGEgY2FwdHVyZSB0eXBlIG9mICJSQVciCithdmFpbGFibGUsIHRoYXQgdGhlIHR5cGUgZmllbGQgd2lsbCBoYXZlIG90aGVyIHZhbHVlcyB0aGF0IGNvcnJlc3BvbmQgdG8gWVVWCithbmQgUENNIGRhdGEuCisKK1NjYXR0ZXItR2F0aGVyIEFycmF5Cis9PT09PT09PT09PT09PT09PT09PQorCitUaGUgc2NhdHRlci1nYXRoZXIgYXJyYXkgaXMgYSBjb250aWd1b3VzbHkgYWxsb2NhdGVkIGJsb2NrIG9mIG1lbW9yeSB0aGF0Cit0ZWxscyB0aGUgY2FyZCB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBvZiBlYWNoIGRhdGEtYmxvY2sgdG8gdHJhbnNmZXIuCitDYXJkICJhZGRyZXNzZXMiIGFyZSBkZXJpdmVkIGZyb20gdGhlIG9mZnNldCBzdXBwbGllZCBieSBNYWlsYm94ICMxMC4gSG9zdAorYWRkcmVzc2VzIGFyZSB0aGUgcGh5c2ljYWwgbWVtb3J5IGxvY2F0aW9uIG9mIHRoZSB0YXJnZXQgRE1BIGJ1ZmZlci4KKworRWFjaCBTLUcgYXJyYXkgZWxlbWVudCBpcyBhIHN0cnVjdCBvZiB0aHJlZSAzMi1iaXQgd29yZHMuIFRoZSBmaXJzdCB3b3JkIGlzCit0aGUgc291cmNlIGFkZHJlc3MsIHRoZSBzZWNvbmQgaXMgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MuIEJvdGggdGFrZSB1cCB0aGUKK2VudGlyZSAzMiBiaXRzLiBUaGUgbG93ZXN0IDE4IGJpdHMgb2YgdGhlIHRoaXJkIHdvcmQgaXMgdGhlIHRyYW5zZmVyIGJ5dGUKK2NvdW50LiBUaGUgaGlnaC1iaXQgb2YgdGhlIHRoaXJkIHdvcmQgaXMgdGhlICJsYXN0IiBmbGFnLiBUaGUgbGFzdC1mbGFnIHRlbGxzCit0aGUgY2FyZCB0byByYWlzZSB0aGUgRE1BX0RPTkUgaW50ZXJydXB0LiBGcm9tIGhhcmQgcGVyc29uYWwgZXhwZXJpZW5jZSwgaWYKK3lvdSBmb3JnZXQgdG8gc2V0IHRoaXMgYml0LCB0aGUgY2FyZCB3aWxsIHN0aWxsICJ3b3JrIiBidXQgdGhlIHN0cmVhbSB3aWxsCittb3N0IGxpa2VseSBnZXQgY29ycnVwdGVkLgorCitUaGUgdHJhbnNmZXIgY291bnQgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDI1Ni4gVGhlcmVmb3JlLCB0aGUgZHJpdmVyIHdpbGwgbmVlZAordG8gdHJhY2sgaG93IG11Y2ggZGF0YSBpbiB0aGUgdGFyZ2V0IGJ1ZmZlciBpcyB2YWxpZCBhbmQgZGVhbCB3aXRoIGl0CithY2NvcmRpbmdseS4KKworQXJyYXkgRWxlbWVudDoKKworLSAzMi1iaXQgU291cmNlIEFkZHJlc3MKKy0gMzItYml0IERlc3RpbmF0aW9uIEFkZHJlc3MKKy0gMTQtYml0IHJlc2VydmVkIChoaWdoIGJpdCBpcyB0aGUgbGFzdCBmbGFnKQorLSAxOC1iaXQgYnl0ZSBjb3VudAorCitETUEgVHJhbnNmZXIgU3RhdHVzCis9PT09PT09PT09PT09PT09PT09CisKK1JlZ2lzdGVyIDB4MDAwNCBob2xkcyB0aGUgRE1BIFRyYW5zZmVyIFN0YXR1czoKKworQml0CiswICAgcmVhZCBjb21wbGV0ZWQKKzEgICB3cml0ZSBjb21wbGV0ZWQKKzIgICBETUEgcmVhZCBlcnJvcgorMyAgIERNQSB3cml0ZSBlcnJvcgorNCAgIFNjYXR0ZXItR2F0aGVyIGFycmF5IGVycm9yCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2N4MjM0MXgvZnctZW5jb2Rlci1hcGkudHh0IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9jeDIzNDF4L2Z3LWVuY29kZXItYXBpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTI3YWYyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9jeDIzNDF4L2Z3LWVuY29kZXItYXBpLnR4dApAQCAtMCwwICsxLDcwOSBAQAorRW5jb2RlciBmaXJtd2FyZSBBUEkgZGVzY3JpcHRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9FTkNfUElOR19GVworRW51bSAJMTI4LzB4ODAKK0Rlc2NyaXB0aW9uCisJRG9lcyBub3RoaW5nLiBDYW4gYmUgdXNlZCB0byBjaGVjayBpZiB0aGUgZmlybXdhcmUgaXMgcmVzcG9uZGluZy4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0VOQ19TVEFSVF9DQVBUVVJFCitFbnVtIAkxMjkvMHg4MQorRGVzY3JpcHRpb24KKwlDb21tZW5jZXMgdGhlIGNhcHR1cmUgb2YgdmlkZW8sIGF1ZGlvIGFuZC9vciBWQkkgZGF0YS4gQWxsIGVuY29kaW5nCisJcGFyYW1ldGVycyBtdXN0IGJlIGluaXRpYWxpemVkIHByaW9yIHRvIHRoaXMgQVBJIGNhbGwuIENhcHR1cmVzIGZyYW1lcworCWNvbnRpbnVvdXNseSBvciB1bnRpbCBhIHByZWRlZmluZWQgbnVtYmVyIG9mIGZyYW1lcyBoYXZlIGJlZW4gY2FwdHVyZWQuCitQYXJhbVswXQorCUNhcHR1cmUgc3RyZWFtIHR5cGU6CisJICAgIDA9TVBFRworCSAgICAxPVJhdworCSAgICAyPVJhdyBwYXNzdGhyb3VnaAorCSAgICAzPVZCSQorCitQYXJhbVsxXQorCUJpdG1hc2s6CisJICAgIEJpdCAwIHdoZW4gc2V0LCBjYXB0dXJlcyBZVVYKKwkgICAgQml0IDEgd2hlbiBzZXQsIGNhcHR1cmVzIFBDTSBhdWRpbworCSAgICBCaXQgMiB3aGVuIHNldCwgY2FwdHVyZXMgVkJJIChzYW1lIGFzIHBhcmFtWzBdPTMpCisJICAgIEJpdCAzIHdoZW4gc2V0LCB0aGUgY2FwdHVyZSBkZXN0aW5hdGlvbiBpcyB0aGUgZGVjb2RlcgorCQkoc2FtZSBhcyBwYXJhbVswXT0yKQorCSAgICBCaXQgNCB3aGVuIHNldCwgdGhlIGNhcHR1cmUgZGVzdGluYXRpb24gaXMgdGhlIGhvc3QKKwlOb3RlOiB0aGlzIHBhcmFtZXRlciBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIFJBVyBjYXB0dXJlIHR5cGUuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9FTkNfU1RPUF9DQVBUVVJFCitFbnVtIAkxMzAvMHg4MgorRGVzY3JpcHRpb24KKwlFbmRzIGEgY2FwdHVyZSBpbiBwcm9ncmVzcworUGFyYW1bMF0KKwkwPXN0b3AgYXQgZW5kIG9mIEdPUCAoZ2VuZXJhdGVzIElSUSkKKwkxPXN0b3AgaW1tZWRpYXRlIChubyBJUlEpCitQYXJhbVsxXQorCVN0cmVhbSB0eXBlIHRvIHN0b3AsIHNlZSBwYXJhbVswXSBvZiBBUEkgMHg4MQorUGFyYW1bMl0KKwlTdWJ0eXBlLCBzZWUgcGFyYW1bMV0gb2YgQVBJIDB4ODEKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0VOQ19TRVRfQVVESU9fSUQKK0VudW0gCTEzNy8weDg5CitEZXNjcmlwdGlvbgorCUFzc2lnbnMgdGhlIHRyYW5zcG9ydCBzdHJlYW0gSUQgb2YgdGhlIGVuY29kZWQgYXVkaW8gc3RyZWFtCitQYXJhbVswXQorCUF1ZGlvIFN0cmVhbSBJRAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfRU5DX1NFVF9WSURFT19JRAorRW51bSAJMTM5LzB4OEIKK0Rlc2NyaXB0aW9uCisJU2V0IHZpZGVvIHRyYW5zcG9ydCBzdHJlYW0gSUQKK1BhcmFtWzBdCisJVmlkZW8gc3RyZWFtIElECisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9FTkNfU0VUX1BDUl9JRAorRW51bSAJMTQxLzB4OEQKK0Rlc2NyaXB0aW9uCisJQXNzaWducyB0aGUgdHJhbnNwb3J0IHN0cmVhbSBJRCBmb3IgUENSIHBhY2tldHMKK1BhcmFtWzBdCisJUENSIFN0cmVhbSBJRAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfRU5DX1NFVF9GUkFNRV9SQVRFCitFbnVtIAkxNDMvMHg4RgorRGVzY3JpcHRpb24KKwlTZXQgdmlkZW8gZnJhbWVzIHBlciBzZWNvbmQuIENoYW5nZSBvY2N1cnMgYXQgc3RhcnQgb2YgbmV3IEdPUC4KK1BhcmFtWzBdCisJMD0zMGZwcworCTE9MjVmcHMKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0VOQ19TRVRfRlJBTUVfU0laRQorRW51bSAJMTQ1LzB4OTEKK0Rlc2NyaXB0aW9uCisJU2VsZWN0IHZpZGVvIHN0cmVhbSBlbmNvZGluZyByZXNvbHV0aW9uLgorUGFyYW1bMF0KKwlIZWlnaHQgaW4gbGluZXMuIERlZmF1bHQgNDgwCitQYXJhbVsxXQorCVdpZHRoIGluIHBpeGVscy4gRGVmYXVsdCA3MjAKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0VOQ19TRVRfQklUX1JBVEUKK0VudW0gCTE0OS8weDk1CitEZXNjcmlwdGlvbgorCUFzc2lnbiBhdmVyYWdlIHZpZGVvIHN0cmVhbSBiaXRyYXRlLiBOb3RlIG9uIHRoZSBsYXN0IHRocmVlIHBhcmFtczoKKwlQYXJhbVszXSBhbmQgWzRdIHNlZW0gdG8gYmUgYWx3YXlzIDAsIHBhcmFtIFs1XSBkb2Vzbid0IHNlZW0gdG8gYmUgdXNlZC4KK1BhcmFtWzBdCisJMD12YXJpYWJsZSBiaXRyYXRlLCAxPWNvbnN0YW50IGJpdHJhdGUKK1BhcmFtWzFdCisJYml0cmF0ZSBpbiBiaXRzIHBlciBzZWNvbmQKK1BhcmFtWzJdCisJcGVhayBiaXRyYXRlIGluIGJpdHMgcGVyIHNlY29uZCwgZGl2aWRlZCBieSA0MDAKK1BhcmFtWzNdCisJTXV4IGJpdHJhdGUgaW4gYml0cyBwZXIgc2Vjb25kLCBkaXZpZGVkIGJ5IDQwMC4gTWF5IGJlIDAgKGRlZmF1bHQpLgorUGFyYW1bNF0KKwlSYXRlIENvbnRyb2wgVkJSIFBhZGRpbmcKK1BhcmFtWzVdCisJVkJWIEJ1ZmZlciB1c2VkIGJ5IGVuY29kZXIKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0VOQ19TRVRfR09QX1BST1BFUlRJRVMKK0VudW0gCTE1MS8weDk3CitEZXNjcmlwdGlvbgorCVNldHVwIHRoZSBHT1Agc3RydWN0dXJlCitQYXJhbVswXQorCUdPUCBzaXplIChtYXhpbXVtIGlzIDM0KQorUGFyYW1bMV0KKwlOdW1iZXIgb2YgQiBmcmFtZXMgYmV0d2VlbiB0aGUgSSBhbmQgUCBmcmFtZSwgcGx1cyAxLgorCUZvciBleGFtcGxlOiBJQkJQQkJQQkJQQkIgLS0+IEdPUCBzaXplOiAxMiwgbnVtYmVyIG9mIEIgZnJhbWVzOiAyKzEgPSAzCisJTm90ZSB0aGF0IEdPUCBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAoQi1mcmFtZXMgKyAxKS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0VOQ19TRVRfQVNQRUNUX1JBVElPCitFbnVtIAkxNTMvMHg5OQorRGVzY3JpcHRpb24KKwlTZXRzIHRoZSBlbmNvZGluZyBhc3BlY3QgcmF0aW8uIENoYW5nZXMgaW4gdGhlIGFzcGVjdCByYXRpbyB0YWtlIGVmZmVjdAorCWF0IHRoZSBzdGFydCBvZiB0aGUgbmV4dCBHT1AuCitQYXJhbVswXQorCScwMDAwJyBmb3JiaWRkZW4KKwknMDAwMScgMToxIHNxdWFyZQorCScwMDEwJyA0OjMKKwknMDAxMScgMTY6OQorCScwMTAwJyAyLjIxOjEKKwknMDEwMScgcmVzZXJ2ZWQKKwkgLi4uLgorCScxMTExJyByZXNlcnZlZAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfRU5DX1NFVF9ETlJfRklMVEVSX01PREUKK0VudW0gCTE1NS8weDlCCitEZXNjcmlwdGlvbgorCUFzc2lnbiBEeW5hbWljIE5vaXNlIFJlZHVjdGlvbiBvcGVyYXRpbmcgbW9kZQorUGFyYW1bMF0KKwlCaXQwOiBTcGF0aWFsIGZpbHRlciwgc2V0PWF1dG8sIGNsZWFyPW1hbnVhbAorCUJpdDE6IFRlbXBvcmFsIGZpbHRlciwgc2V0PWF1dG8sIGNsZWFyPW1hbnVhbAorUGFyYW1bMV0KKwlNZWRpYW4gZmlsdGVyOgorCSAgICAwPURpc2FibGVkCisJICAgIDE9SG9yaXpvbnRhbAorCSAgICAyPVZlcnRpY2FsCisJICAgIDM9SG9yaXovVmVydAorCSAgICA0PURpYWdvbmFsCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9FTkNfU0VUX0ROUl9GSUxURVJfUFJPUFMKK0VudW0gCTE1Ny8weDlECitEZXNjcmlwdGlvbgorCVRoZXNlIER5bmFtaWMgTm9pc2UgUmVkdWN0aW9uIGZpbHRlciB2YWx1ZXMgYXJlIG9ubHkgbWVhbmluZ2Z1bCB3aGVuCisJdGhlIHJlc3BlY3RpdmUgZmlsdGVyIGlzIHNldCB0byAibWFudWFsIiAoU2VlIEFQSSAweDlCKQorUGFyYW1bMF0KKwlTcGF0aWFsIGZpbHRlcjogZGVmYXVsdCAwLCByYW5nZSAwOjE1CitQYXJhbVsxXQorCVRlbXBvcmFsIGZpbHRlcjogZGVmYXVsdCAwLCByYW5nZSAwOjMxCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9FTkNfU0VUX0NPUklOR19MRVZFTFMKK0VudW0gCTE1OS8weDlGCitEZXNjcmlwdGlvbgorCUFzc2lnbiBEeW5hbWljIE5vaXNlIFJlZHVjdGlvbiBtZWRpYW4gZmlsdGVyIHByb3BlcnRpZXMuCitQYXJhbVswXQorCVRocmVzaG9sZCBhYm92ZSB3aGljaCB0aGUgbHVtaW5hbmNlIG1lZGlhbiBmaWx0ZXIgaXMgZW5hYmxlZC4KKwlEZWZhdWx0OiAwLCByYW5nZSAwOjI1NQorUGFyYW1bMV0KKwlUaHJlc2hvbGQgYmVsb3cgd2hpY2ggdGhlIGx1bWluYW5jZSBtZWRpYW4gZmlsdGVyIGlzIGVuYWJsZWQuCisJRGVmYXVsdDogMjU1LCByYW5nZSAwOjI1NQorUGFyYW1bMl0KKwlUaHJlc2hvbGQgYWJvdmUgd2hpY2ggdGhlIGNocm9taW5hbmNlIG1lZGlhbiBmaWx0ZXIgaXMgZW5hYmxlZC4KKwlEZWZhdWx0OiAwLCByYW5nZSAwOjI1NQorUGFyYW1bM10KKwlUaHJlc2hvbGQgYmVsb3cgd2hpY2ggdGhlIGNocm9taW5hbmNlIG1lZGlhbiBmaWx0ZXIgaXMgZW5hYmxlZC4KKwlEZWZhdWx0OiAyNTUsIHJhbmdlIDA6MjU1CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9FTkNfU0VUX1NQQVRJQUxfRklMVEVSX1RZUEUKK0VudW0gCTE2MS8weEExCitEZXNjcmlwdGlvbgorCUFzc2lnbiBzcGF0aWFsIHByZWZpbHRlciBwYXJhbWV0ZXJzCitQYXJhbVswXQorCUx1bWluYW5jZSBmaWx0ZXIKKwkgICAgMD1PZmYKKwkgICAgMT0xRCBIb3Jpem9udGFsCisJICAgIDI9MUQgVmVydGljYWwKKwkgICAgMz0yRCBIL1YgU2VwYXJhYmxlIChkZWZhdWx0KQorCSAgICA0PTJEIFN5bW1ldHJpYyBub24tc2VwYXJhYmxlCitQYXJhbVsxXQorCUNocm9taW5hbmNlIGZpbHRlcgorCSAgICAwPU9mZgorCSAgICAxPTFEIEhvcml6b250YWwgKGRlZmF1bHQpCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9FTkNfU0VUX1ZCSV9MSU5FCitFbnVtIAkxODMvMHhCNworRGVzY3JpcHRpb24KKwlTZWxlY3RzIFZCSSBsaW5lIG51bWJlci4KK1BhcmFtWzBdCisJQml0cyAwOjQgCWxpbmUgbnVtYmVyCisJQml0ICAzMQkJMD10b3BfZmllbGQsIDE9Ym90dG9tX2ZpZWxkCisJQml0cyAwOjMxIAlhbGwgc2V0IHNwZWNpZmllcyAiYWxsIGxpbmVzIgorUGFyYW1bMV0KKwlWQkkgbGluZSBpbmZvcm1hdGlvbiBmZWF0dXJlczogMD1kaXNhYmxlZCwgMT1lbmFibGVkCitQYXJhbVsyXQorCVNsaWNpbmc6IDA9Tm9uZSwgMT1DbG9zZWQgQ2FwdGlvbgorCUFsbW9zdCBjZXJ0YWlubHkgbm90IGltcGxlbWVudGVkLiBTZXQgdG8gMC4KK1BhcmFtWzNdCisJTHVtaW5hbmNlIHNhbXBsZXMgaW4gdGhpcyBsaW5lLgorCUFsbW9zdCBjZXJ0YWlubHkgbm90IGltcGxlbWVudGVkLiBTZXQgdG8gMC4KK1BhcmFtWzRdCisJQ2hyb21pbmFuY2Ugc2FtcGxlcyBpbiB0aGlzIGxpbmUKKwlBbG1vc3QgY2VydGFpbmx5IG5vdCBpbXBsZW1lbnRlZC4gU2V0IHRvIDAuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9FTkNfU0VUX1NUUkVBTV9UWVBFCitFbnVtIAkxODUvMHhCOQorRGVzY3JpcHRpb24KKwlBc3NpZ24gc3RyZWFtIHR5cGUKKwlOb3RlOiBUcmFuc3BvcnQgc3RyZWFtIGlzIG5vdCB3b3JraW5nIGluIHJlY2VudCBmaXJtd2FyZXMuCisJQW5kIGluIG9sZGVyIGZpcm13YXJlcyB0aGUgdGltZXN0YW1wcyBpbiB0aGUgVFMgc2VlbSB0byBiZQorCXVucmVsaWFibGUuCitQYXJhbVswXQorCSAwPVByb2dyYW0gc3RyZWFtCisJIDE9VHJhbnNwb3J0IHN0cmVhbQorCSAyPU1QRUcxIHN0cmVhbQorCSAzPVBFUyBBL1Ygc3RyZWFtCisJIDU9UEVTIFZpZGVvIHN0cmVhbQorCSA3PVBFUyBBdWRpbyBzdHJlYW0KKwkxMD1EVkQgc3RyZWFtCisJMTE9VkNEIHN0cmVhbQorCTEyPVNWQ0Qgc3RyZWFtCisJMTM9RFZEX1MxIHN0cmVhbQorCTE0PURWRF9TMiBzdHJlYW0KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0VOQ19TRVRfT1VUUFVUX1BPUlQKK0VudW0gCTE4Ny8weEJCCitEZXNjcmlwdGlvbgorCUFzc2lnbiBzdHJlYW0gb3V0cHV0IHBvcnQuIE5vcm1hbGx5IDAgd2hlbiB0aGUgZGF0YSBpcyBjb3BpZWQgdGhyb3VnaAorCXRoZSBQQ0kgYnVzIChETUEpLCBhbmQgMSB3aGVuIHRoZSBkYXRhIGlzIHN0cmVhbWVkIHRvIGFub3RoZXIgY2hpcAorCShwdnJ1c2IgYW5kIGN4ODgtYmxhY2tiaXJkKS4KK1BhcmFtWzBdCisJMD1NZW1vcnkgKGRlZmF1bHQpCisJMT1TdHJlYW1pbmcKKwkyPVNlcmlhbAorUGFyYW1bMV0KKwlVbmtub3duLCBidXQgbGVhdmluZyB0aGlzIHRvIDAgc2VlbXMgdG8gd29yayBiZXN0LiBJbmRpY2F0aW9ucyBhcmUgdGhhdAorCXRoaXMgbWlnaHQgaGF2ZSB0byBkbyB3aXRoIFVTQiBzdXBwb3J0LCBhbHRob3VnaCBwYXNzaW5nIGFueXRoaW5nIGJ1dCAwCisJb25seSBicmVha3MgdGhpbmdzLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfRU5DX1NFVF9BVURJT19QUk9QRVJUSUVTCitFbnVtIAkxODkvMHhCRAorRGVzY3JpcHRpb24KKwlTZXQgYXVkaW8gc3RyZWFtIHByb3BlcnRpZXMsIG1heSBiZSBjYWxsZWQgd2hpbGUgZW5jb2RpbmcgaXMgaW4gcHJvZ3Jlc3MuCisJTm90ZTogYWxsIGJpdGZpZWxkcyBhcmUgY29uc2lzdGVudCB3aXRoIElTTzExMTcyIGRvY3VtZW50YXRpb24gZXhjZXB0CisJYml0cyAyOjMgd2hpY2ggSVNPIGRvY3MgZGVmaW5lIGFzOgorCQknMTEnIExheWVyIEkKKwkJJzEwJyBMYXllciBJSQorCQknMDEnIExheWVyIElJSQorCQknMDAnIFVuZGVmaW5lZAorCVRoaXMgZGlzY3JlcGFuY3kgbWF5IGluZGljYXRlIGEgcG9zc2libGUgZXJyb3IgaW4gdGhlIGRvY3VtZW50YXRpb24uCisJVGVzdGluZyBpbmRpY2F0ZWQgdGhhdCBvbmx5IExheWVyIElJIGlzIGFjdHVhbGx5IHdvcmtpbmcsIGFuZCB0aGF0CisJdGhlIG1pbmltdW0gYml0cmF0ZSBzaG91bGQgYmUgMTkyIGticHMuCitQYXJhbVswXQorCUJpdG1hc2s6CisJICAgMDoxICAnMDAnIDQ0LjFLaHoKKwkJJzAxJyA0OEtoegorCQknMTAnIDMyS2h6CisJCScxMScgcmVzZXJ2ZWQKKworCSAgIDI6MyAgJzAxJz1MYXllciBJCisJCScxMCc9TGF5ZXIgSUkKKworCSAgIDQ6NyAgQml0cmF0ZToKKwkJICAgICBJbmRleCB8IExheWVyIEkgICAgIHwgTGF5ZXIgSUkKKwkJICAgICAtLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKwkJICAgICcwMDAwJyB8IGZyZWUgZm9ybWF0IHwgZnJlZSBmb3JtYXQKKwkJICAgICcwMDAxJyB8ICAzMiBrYml0L3MgIHwgIDMyIGtiaXQvcworCQkgICAgJzAwMTAnIHwgIDY0IGtiaXQvcyAgfCAgNDgga2JpdC9zCisJCSAgICAnMDAxMScgfCAgOTYga2JpdC9zICB8ICA1NiBrYml0L3MKKwkJICAgICcwMTAwJyB8IDEyOCBrYml0L3MgIHwgIDY0IGtiaXQvcworCQkgICAgJzAxMDEnIHwgMTYwIGtiaXQvcyAgfCAgODAga2JpdC9zCisJCSAgICAnMDExMCcgfCAxOTIga2JpdC9zICB8ICA5NiBrYml0L3MKKwkJICAgICcwMTExJyB8IDIyNCBrYml0L3MgIHwgMTEyIGtiaXQvcworCQkgICAgJzEwMDAnIHwgMjU2IGtiaXQvcyAgfCAxMjgga2JpdC9zCisJCSAgICAnMTAwMScgfCAyODgga2JpdC9zICB8IDE2MCBrYml0L3MKKwkJICAgICcxMDEwJyB8IDMyMCBrYml0L3MgIHwgMTkyIGtiaXQvcworCQkgICAgJzEwMTEnIHwgMzUyIGtiaXQvcyAgfCAyMjQga2JpdC9zCisJCSAgICAnMTEwMCcgfCAzODQga2JpdC9zICB8IDI1NiBrYml0L3MKKwkJICAgICcxMTAxJyB8IDQxNiBrYml0L3MgIHwgMzIwIGtiaXQvcworCQkgICAgJzExMTAnIHwgNDQ4IGtiaXQvcyAgfCAzODQga2JpdC9zCisJCU5vdGU6IEZvciBMYXllciBJSSwgbm90IGFsbCBjb21iaW5hdGlvbnMgb2YgdG90YWwgYml0cmF0ZQorCQlhbmQgbW9kZSBhcmUgYWxsb3dlZC4gU2VlIElTTzExMTcyLTMgMy1Bbm5leCBCLCBUYWJsZSAzLUIuMgorCisJICAgODo5ICAnMDAnPVN0ZXJlbworCQknMDEnPUpvaW50U3RlcmVvCisJCScxMCc9RHVhbAorCQknMTEnPU1vbm8KKwkJTm90ZTogdGhlIGN4MjM0MTUgY2Fubm90IGRlY29kZSBKb2ludCBTdGVyZW8gcHJvcGVybHkuCisKKwkgIDEwOjExIE1vZGUgRXh0ZW5zaW9uIHVzZWQgaW4gam9pbnRfc3RlcmVvIG1vZGUuCisJCUluIExheWVyIEkgYW5kIElJIHRoZXkgaW5kaWNhdGUgd2hpY2ggc3ViYmFuZHMgYXJlIGluCisJCWludGVuc2l0eV9zdGVyZW8uIEFsbCBvdGhlciBzdWJiYW5kcyBhcmUgY29kZWQgaW4gc3RlcmVvLgorCQkgICAgJzAwJyBzdWJiYW5kcyA0LTMxIGluIGludGVuc2l0eV9zdGVyZW8sIGJvdW5kPT00CisJCSAgICAnMDEnIHN1YmJhbmRzIDgtMzEgaW4gaW50ZW5zaXR5X3N0ZXJlbywgYm91bmQ9PTgKKwkJICAgICcxMCcgc3ViYmFuZHMgMTItMzEgaW4gaW50ZW5zaXR5X3N0ZXJlbywgYm91bmQ9PTEyCisJCSAgICAnMTEnIHN1YmJhbmRzIDE2LTMxIGluIGludGVuc2l0eV9zdGVyZW8sIGJvdW5kPT0xNgorCisJICAxMjoxMyBFbXBoYXNpczoKKwkJICAgICcwMCcgTm9uZQorCQkgICAgJzAxJyA1MC8xNXVTCisJCSAgICAnMTAnIHJlc2VydmVkCisJCSAgICAnMTEnIENDSVRUIEouMTcKKworCSAgMTQgCUNSQzoKKwkJICAgICcwJyBvZmYKKwkJICAgICcxJyBvbgorCisJICAxNSAgICBDb3B5cmlnaHQ6CisJCSAgICAnMCcgb2ZmCisJCSAgICAnMScgb24KKworCSAgMTYgICAgR2VuZXJhdGlvbjoKKwkJICAgICcwJyBjb3B5CisJCSAgICAnMScgb3JpZ2luYWwKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0VOQ19IQUxUX0ZXCitFbnVtIAkxOTUvMHhDMworRGVzY3JpcHRpb24KKwlUaGUgZmlybXdhcmUgaXMgaGFsdGVkIGFuZCBubyBmdXJ0aGVyIEFQSSBjYWxscyBhcmUgc2VydmljZWQgdW50aWwgdGhlCisJZmlybXdhcmUgaXMgdXBsb2FkZWQgYWdhaW4uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9FTkNfR0VUX1ZFUlNJT04KK0VudW0gCTE5Ni8weEM0CitEZXNjcmlwdGlvbgorCVJldHVybnMgdGhlIHZlcnNpb24gb2YgdGhlIGVuY29kZXIgZmlybXdhcmUuCitSZXN1bHRbMF0KKwlWZXJzaW9uIGJpdG1hc2s6CisJICAgIEJpdHMgIDA6MTUgYnVpbGQKKwkgICAgQml0cyAxNjoyMyBtaW5vcgorCSAgICBCaXRzIDI0OjMxIG1ham9yCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9FTkNfU0VUX0dPUF9DTE9TVVJFCitFbnVtIAkxOTcvMHhDNQorRGVzY3JpcHRpb24KKwlBc3NpZ25zIHRoZSBHT1Agb3Blbi9jbG9zZSBwcm9wZXJ0eS4KK1BhcmFtWzBdCisJMD1PcGVuCisJMT1DbG9zZWQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0VOQ19HRVRfU0VRX0VORAorRW51bSAJMTk4LzB4QzYKK0Rlc2NyaXB0aW9uCisJT2J0YWlucyB0aGUgc2VxdWVuY2UgZW5kIGNvZGUgb2YgdGhlIGVuY29kZXIncyBidWZmZXIuIFdoZW4gYSBjYXB0dXJlCisJaXMgc3RhcnRlZCBhIG51bWJlciBvZiBpbnRlcnJ1cHRzIGFyZSBzdGlsbCBnZW5lcmF0ZWQsIHRoZSBsYXN0IG9mCisJd2hpY2ggd2lsbCBoYXZlIFJlc3VsdFswXSBzZXQgdG8gMSBhbmQgUmVzdWx0WzFdIHdpbGwgY29udGFpbiB0aGUgc2l6ZQorCW9mIHRoZSBidWZmZXIuCitSZXN1bHRbMF0KKwlTdGF0ZSBvZiB0aGUgdHJhbnNmZXIgKDEgaWYgbGFzdCBidWZmZXIpCitSZXN1bHRbMV0KKwlJZiBSZXN1bHRbMF0gaXMgMSwgdGhpcyBjb250YWlucyB0aGUgc2l6ZSBvZiB0aGUgbGFzdCBidWZmZXIsIHVuZGVmaW5lZAorCW90aGVyd2lzZS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0VOQ19TRVRfUEdNX0lOREVYX0lORk8KK0VudW0gCTE5OS8weEM3CitEZXNjcmlwdGlvbgorCVNldHMgdGhlIFByb2dyYW0gSW5kZXggSW5mb3JtYXRpb24uCisJVGhlIGluZm9ybWF0aW9uIGlzIHN0b3JlZCBhcyBmb2xsb3dzOgorCisJc3RydWN0IGluZm8geworCQl1MzIgbGVuZ3RoOwkJLy8gTGVuZ3RoIG9mIHRoaXMgZnJhbWUKKwkJdTMyIG9mZnNldF9sb3c7CQkvLyBPZmZzZXQgaW4gdGhlIGZpbGUgb2YgdGhlCisJCXUzMiBvZmZzZXRfaGlnaDsJLy8gc3RhcnQgb2YgdGhpcyBmcmFtZQorCQl1MzIgbWFzazE7CQkvLyBCaXRzIDAtMiBhcmUgdGhlIHR5cGUgbWFzazoKKwkJCQkJLy8gMT1JLCAyPVAsIDQ9QgorCQkJCQkvLyAwPUVuZCBvZiBQcm9ncmFtIEluZGV4LCBvdGhlciBmaWVsZHMKKwkJCQkJLy8gICBhcmUgaW52YWxpZC4KKwkJdTMyIHB0czsJCS8vIFRoZSBQVFMgb2YgdGhlIGZyYW1lCisJCXUzMiBtYXNrMjsJCS8vIEJpdCAwIGlzIGJpdCAzMiBvZiB0aGUgcHRzLgorCX07CisJdTMyIHRhYmxlX3B0cjsKKwlzdHJ1Y3QgaW5mbyBpbmRleFs0MDBdOworCisJVGhlIHRhYmxlX3B0ciBpcyB0aGUgZW5jb2RlciBtZW1vcnkgYWRkcmVzcyBpbiB0aGUgdGFibGUgd2VyZQorCSpuZXcqIGVudHJpZXMgd2lsbCBiZSB3cml0dGVuLiBOb3RlIHRoYXQgdGhpcyBpcyBhIHJpbmdidWZmZXIsCisJc28gdGhlIHRhYmxlX3B0ciB3aWxsIHdyYXBhcm91bmQuCitQYXJhbVswXQorCVBpY3R1cmUgTWFzazoKKwkgICAgMD1ObyBpbmRleCBjYXB0dXJlCisJICAgIDE9SSBmcmFtZXMKKwkgICAgMz1JLFAgZnJhbWVzCisJICAgIDc9SSxQLEIgZnJhbWVzCisJKFNlZW1zIHRvIGJlIGlnbm9yZWQsIGl0IGFsd2F5cyBpbmRleGVzIEksIFAgYW5kIEIgZnJhbWVzKQorUGFyYW1bMV0KKwlFbGVtZW50cyByZXF1ZXN0ZWQgKHVwIHRvIDQwMCkKK1Jlc3VsdFswXQorCU9mZnNldCBpbiB0aGUgZW5jb2RlciBtZW1vcnkgb2YgdGhlIHN0YXJ0IG9mIHRoZSB0YWJsZS4KK1Jlc3VsdFsxXQorCU51bWJlciBvZiBhbGxvY2F0ZWQgZWxlbWVudHMgdXAgdG8gYSBtYXhpbXVtIG9mIFBhcmFtWzFdCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9FTkNfU0VUX1ZCSV9DT05GSUcKK0VudW0gCTIwMC8weEM4CitEZXNjcmlwdGlvbgorCUNvbmZpZ3VyZSBWQkkgc2V0dGluZ3MKK1BhcmFtWzBdCisJQml0bWFwOgorCSAgICAwICAgIE1vZGUgJzAnIFNsaWNlZCwgJzEnIFJhdworCSAgICAxOjMgIEluc2VydGlvbjoKKwkJICAgICAnMDAwJyBpbnNlcnQgaW4gZXh0ZW5zaW9uICYgdXNlciBkYXRhCisJCSAgICAgJzAwMScgaW5zZXJ0IGluIHByaXZhdGUgcGFja2V0cworCQkgICAgICcwMTAnIHNlcGFyYXRlIHN0cmVhbSBhbmQgdXNlciBkYXRhCisJCSAgICAgJzExMScgc2VwYXJhdGUgc3RyZWFtIGFuZCBwcml2YXRlIGRhdGEKKwkgICAgODoxNSBTdHJlYW0gSUQgKG5vcm1hbGx5IDB4QkQpCitQYXJhbVsxXQorCUZyYW1lcyBwZXIgaW50ZXJydXB0IChtYXggOCkuIE9ubHkgdmFsaWQgaW4gcmF3IG1vZGUuCitQYXJhbVsyXQorCVRvdGFsIHJhdyBWQkkgZnJhbWVzLiBPbmx5IHZhbGlkIGluIHJhdyBtb2RlLgorUGFyYW1bM10KKwlTdGFydCBjb2RlcworUGFyYW1bNF0KKwlTdG9wIGNvZGVzCitQYXJhbVs1XQorCUxpbmVzIHBlciBmcmFtZQorUGFyYW1bNl0KKwlCeXRlIHBlciBsaW5lCitSZXN1bHRbMF0KKwlPYnNlcnZlZCBmcmFtZXMgcGVyIGludGVycnVwdCBpbiByYXcgbW9kZSBvbmx5LiBSYWdlIDEgdG8gUGFyYW1bMV0KK1Jlc3VsdFsxXQorCU9ic2VydmVkIG51bWJlciBvZiBmcmFtZXMgaW4gcmF3IG1vZGUuIFJhbmdlIDEgdG8gUGFyYW1bMl0KK1Jlc3VsdFsyXQorCU1lbW9yeSBvZmZzZXQgdG8gc3RhcnQgb3IgcmF3IFZCSSBkYXRhCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9FTkNfU0VUX0RNQV9CTE9DS19TSVpFCitFbnVtIAkyMDEvMHhDOQorRGVzY3JpcHRpb24KKwlTZXQgRE1BIHRyYW5zZmVyIGJsb2NrIHNpemUKK1BhcmFtWzBdCisJRE1BIHRyYW5zZmVyIGJsb2NrIHNpemUgaW4gYnl0ZXMgb3IgZnJhbWVzLiBXaGVuIHVuaXQgaXMgYnl0ZXMsCisJc3VwcG9ydGVkIGJsb2NrIHNpemVzIGFyZSAyXjcsIDJeOCBhbmQgMl45IGJ5dGVzLgorUGFyYW1bMV0KKwlVbml0OiAwPWJ5dGVzLCAxPWZyYW1lcworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfRU5DX0dFVF9QUkVWX0RNQV9JTkZPX01CXzEwCitFbnVtIAkyMDIvMHhDQQorRGVzY3JpcHRpb24KKwlSZXR1cm5zIGluZm9ybWF0aW9uIG9uIHRoZSBwcmV2aW91cyBETUEgdHJhbnNmZXIgaW4gY29uanVuY3Rpb24gd2l0aAorCWJpdCAyNyBvZiB0aGUgaW50ZXJydXB0IG1hc2suIFVzZXMgbWFpbGJveCAxMC4KK1Jlc3VsdFswXQorCVR5cGUgb2Ygc3RyZWFtCitSZXN1bHRbMV0KKwlBZGRyZXNzIE9mZnNldAorUmVzdWx0WzJdCisJTWF4aW11bSBzaXplIG9mIHRyYW5zZmVyCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9FTkNfR0VUX1BSRVZfRE1BX0lORk9fTUJfOQorRW51bSAJMjAzLzB4Q0IKK0Rlc2NyaXB0aW9uCisJUmV0dXJucyBpbmZvcm1hdGlvbiBvbiB0aGUgcHJldmlvdXMgRE1BIHRyYW5zZmVyIGluIGNvbmp1bmN0aW9uIHdpdGgKKwliaXQgMjcgb3IgMTggb2YgdGhlIGludGVycnVwdCBtYXNrLiBVc2VzIG1haWxib3ggOS4KK1Jlc3VsdFswXQorCVN0YXR1cyBiaXRzOgorCQkwICAgcmVhZCBjb21wbGV0ZWQKKwkJMSAgIHdyaXRlIGNvbXBsZXRlZAorCQkyICAgRE1BIHJlYWQgZXJyb3IKKwkJMyAgIERNQSB3cml0ZSBlcnJvcgorCQk0ICAgU2NhdHRlci1HYXRoZXIgYXJyYXkgZXJyb3IKK1Jlc3VsdFsxXQorCURNQSB0eXBlCitSZXN1bHRbMl0KKwlQcmVzZW50YXRpb24gVGltZSBTdGFtcCBiaXRzIDAuLjMxCitSZXN1bHRbM10KKwlQcmVzZW50YXRpb24gVGltZSBTdGFtcCBiaXQgMzIKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0VOQ19TQ0hFRF9ETUFfVE9fSE9TVAorRW51bSAJMjA0LzB4Q0MKK0Rlc2NyaXB0aW9uCisJU2V0dXAgRE1BIHRvIGhvc3Qgb3BlcmF0aW9uCitQYXJhbVswXQorCU1lbW9yeSBhZGRyZXNzIG9mIGxpbmsgbGlzdAorUGFyYW1bMV0KKwlMZW5ndGggb2YgbGluayBsaXN0ICh3dGY6IHdoYXQgdW5pdHMgPz8/KQorUGFyYW1bMl0KKwlETUEgdHlwZSAoMD1NUEVHKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfRU5DX0lOSVRJQUxJWkVfSU5QVVQKK0VudW0gCTIwNS8weENECitEZXNjcmlwdGlvbgorCUluaXRpYWxpemVzIHRoZSB2aWRlbyBpbnB1dAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfRU5DX1NFVF9GUkFNRV9EUk9QX1JBVEUKK0VudW0gCTIwOC8weEQwCitEZXNjcmlwdGlvbgorCUZvciBlYWNoIGZyYW1lIGNhcHR1cmVkLCBza2lwIHNwZWNpZmllZCBudW1iZXIgb2YgZnJhbWVzLgorUGFyYW1bMF0KKwlOdW1iZXIgb2YgZnJhbWVzIHRvIHNraXAKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0VOQ19QQVVTRV9FTkNPREVSCitFbnVtIAkyMTAvMHhEMgorRGVzY3JpcHRpb24KKwlEdXJpbmcgYSBwYXVzZSBjb25kaXRpb24sIGFsbCBmcmFtZXMgYXJlIGRyb3BwZWQgaW5zdGVhZCBvZiBiZWluZyBlbmNvZGVkLgorUGFyYW1bMF0KKwkwPVBhdXNlIGVuY29kaW5nCisJMT1Db250aW51ZSBlbmNvZGluZworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfRU5DX1JFRlJFU0hfSU5QVVQKK0VudW0gCTIxMS8weEQzCitEZXNjcmlwdGlvbgorCVJlZnJlc2hlcyB0aGUgdmlkZW8gaW5wdXQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0VOQ19TRVRfQ09QWVJJR0hUCitFbnVtIAkyMTIvMHhENAorRGVzY3JpcHRpb24KKwlTZXRzIHN0cmVhbSBjb3B5cmlnaHQgcHJvcGVydHkKK1BhcmFtWzBdCisJMD1TdHJlYW0gaXMgbm90IGNvcHlyaWdodGVkCisJMT1TdHJlYW0gaXMgY29weXJpZ2h0ZWQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX0VOQ19TRVRfRVZFTlRfTk9USUZJQ0FUSU9OCitFbnVtIAkyMTMvMHhENQorRGVzY3JpcHRpb24KKwlTZXR1cCBmaXJtd2FyZSB0byBub3RpZnkgdGhlIGhvc3QgYWJvdXQgYSBwYXJ0aWN1bGFyIGV2ZW50LiBIb3N0IG11c3QKKwl1bm1hc2sgdGhlIGludGVycnVwdCBiaXQuCitQYXJhbVswXQorCUV2ZW50ICgwPXJlZnJlc2ggZW5jb2RlciBpbnB1dCkKK1BhcmFtWzFdCisJTm90aWZpY2F0aW9uIDA9ZGlzYWJsZWQgMT1lbmFibGVkCitQYXJhbVsyXQorCUludGVycnVwdCBiaXQKK1BhcmFtWzNdCisJTWFpbGJveCBzbG90LCAtMSBpZiBubyBtYWlsYm94IHJlcXVpcmVkLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfRU5DX1NFVF9OVU1fVlNZTkNfTElORVMKK0VudW0gCTIxNC8weEQ2CitEZXNjcmlwdGlvbgorCURlcGVuZGluZyBvbiB0aGUgYW5hbG9nIHZpZGVvIGRlY29kZXIgdXNlZCwgdGhpcyBhc3NpZ25zIHRoZSBudW1iZXIKKwlvZiBsaW5lcyBmb3IgZmllbGQgMSBhbmQgMi4KK1BhcmFtWzBdCisJRmllbGQgMSBudW1iZXIgb2YgbGluZXM6CisJICAgIDB4MDBFRiBmb3IgU0FBNzExNAorCSAgICAweDAwRjAgZm9yIFNBQTcxMTUKKwkgICAgMHgwMTA1IGZvciBNaWNyb25hcworUGFyYW1bMV0KKwlGaWVsZCAyIG51bWJlciBvZiBsaW5lczoKKwkgICAgMHgwMEVGIGZvciBTQUE3MTE0CisJICAgIDB4MDBGMCBmb3IgU0FBNzExNQorCSAgICAweDAxMDYgZm9yIE1pY3JvbmFzCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9FTkNfU0VUX1BMQUNFSE9MREVSCitFbnVtIAkyMTUvMHhENworRGVzY3JpcHRpb24KKwlQcm92aWRlcyBhIG1lY2hhbmlzbSBvZiBpbnNlcnRpbmcgY3VzdG9tIHVzZXIgZGF0YSBpbiB0aGUgTVBFRyBzdHJlYW0uCitQYXJhbVswXQorCTA9ZXh0ZW5zaW9uICYgdXNlciBkYXRhCisJMT1wcml2YXRlIHBhY2tldCB3aXRoIHN0cmVhbSBJRCAweEJECitQYXJhbVsxXQorCVJhdGUgYXQgd2hpY2ggdG8gaW5zZXJ0IGRhdGEsIGluIHVuaXRzIG9mIGZyYW1lcyAoZm9yIHByaXZhdGUgcGFja2V0KQorCW9yIEdPUHMgKGZvciBleHQuICYgdXNlciBkYXRhKQorUGFyYW1bMl0KKwlOdW1iZXIgb2YgZGF0YSBEV09SRHMgKGJlbG93KSB0byBpbnNlcnQKK1BhcmFtWzNdCisJQ3VzdG9tIGRhdGEgMAorUGFyYW1bNF0KKwlDdXN0b20gZGF0YSAxCitQYXJhbVs1XQorCUN1c3RvbSBkYXRhIDIKK1BhcmFtWzZdCisJQ3VzdG9tIGRhdGEgMworUGFyYW1bN10KKwlDdXN0b20gZGF0YSA0CitQYXJhbVs4XQorCUN1c3RvbSBkYXRhIDUKK1BhcmFtWzldCisJQ3VzdG9tIGRhdGEgNgorUGFyYW1bMTBdCisJQ3VzdG9tIGRhdGEgNworUGFyYW1bMTFdCisJQ3VzdG9tIGRhdGEgOAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfRU5DX01VVEVfVklERU8KK0VudW0gCTIxNy8weEQ5CitEZXNjcmlwdGlvbgorCVZpZGVvIG11dGluZworUGFyYW1bMF0KKwlCaXQgdXNhZ2U6CisJIDAgICAgCScwJz12aWRlbyBub3QgbXV0ZWQKKwkJJzEnPXZpZGVvIG11dGVkLCBjcmVhdGVzIGZyYW1lcyB3aXRoIHRoZSBZVVYgY29sb3IgZGVmaW5lZCBiZWxvdworCSAxOjcgIAlVbnVzZWQKKwkgODoxNSAJViBjaHJvbWluYW5jZSBpbmZvcm1hdGlvbgorCTE2OjIzIAlVIGNocm9taW5hbmNlIGluZm9ybWF0aW9uCisJMjQ6MzEgCVkgbHVtaW5hbmNlIGluZm9ybWF0aW9uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9FTkNfTVVURV9BVURJTworRW51bSAJMjE4LzB4REEKK0Rlc2NyaXB0aW9uCisJQXVkaW8gbXV0aW5nCitQYXJhbVswXQorCTA9YXVkaW8gbm90IG11dGVkCisJMT1hdWRpbyBtdXRlZCAocHJvZHVjZXMgc2lsZW50IG1wZWcgYXVkaW8gc3RyZWFtKQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfRU5DX1NFVF9WRVJUX0NST1BfTElORQorRW51bSAJMjE5LzB4REIKK0Rlc2NyaXB0aW9uCisJU29tZXRoaW5nIHRvIGRvIHdpdGggJ1ZlcnRpY2FsIENyb3AgTGluZScKK1BhcmFtWzBdCisJSWYgc2FhNzExNCBhbmQgcmF3IFZCSSBjYXB0dXJlIGFuZCA2MCBIeiwgdGhlbiBzZXQgdG8gMTAwMDEuCisJRWxzZSAwLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfRU5DX01JU0MKK0VudW0gCTIyMC8weERDCitEZXNjcmlwdGlvbgorCU1pc2NlbGxhbmVvdXMgYWN0aW9ucy4gTm90IGtub3duIGZvciAxMDAlIHdoYXQgaXQgZG9lcy4gSXQncyByZWFsbHkgYQorCXNvcnQgb2YgaW9jdGwgY2FsbC4gVGhlIGZpcnN0IHBhcmFtZXRlciBpcyBhIGNvbW1hbmQgbnVtYmVyLCB0aGUgc2Vjb25kCisJdGhlIHZhbHVlLgorUGFyYW1bMF0KKwlDb21tYW5kIG51bWJlcjoKKwkgMT1zZXQgaW5pdGlhbCBTQ1IgdmFsdWUgd2hlbiBzdGFydGluZyBlbmNvZGluZyAod29ya3MpLgorCSAyPXNldCBxdWFsaXR5IG1vZGUgKGFwcGFyZW50bHkgc29tZSB0ZXN0IHNldHRpbmcpLgorCSAzPXNldHVwIGFkdmFuY2VkIFZJTSBwcm90ZWN0aW9uIGhhbmRsaW5nLgorCSAgIEFsd2F5cyAxIGZvciB0aGUgY3gyMzQxNiBhbmQgMCBmb3IgY3gyMzQxNS4KKwkgND1nZW5lcmF0ZSBEVkQgY29tcGF0aWJsZSBQVFMgdGltZXN0YW1wcworCSA1PVVTQiBmbHVzaCBtb2RlCisJIDY9c29tZXRoaW5nIHRvIGRvIHdpdGggdGhlIHF1YW50aXphdGlvbiBtYXRyaXgKKwkgNz1zZXQgbmF2aWdhdGlvbiBwYWNrIGluc2VydGlvbiBmb3IgRFZEOiBhZGRzIDB4YmYgKHByaXZhdGUgc3RyZWFtIDIpCisJICAgcGFja2V0cyB0byB0aGUgTVBFRy4gVGhlIHNpemUgb2YgdGhlc2UgcGFja2V0cyBpcyAyMDQ4IGJ5dGVzIChpbmNsdWRpbmcKKwkgICB0aGUgaGVhZGVyIG9mIDYgYnl0ZXM6IDB4MDAwMDAxYmYgKyBsZW5ndGgpLiBUaGUgcGF5bG9hZCBpcyB6ZXJvZWQgYW5kCisJICAgaXQgaXMgdXAgdG8gdGhlIGFwcGxpY2F0aW9uIHRvIGZpbGwgdGhlbSBpbi4gVGhlc2UgcGFja2V0cyBhcmUgYXBwYXJlbnRseQorCSAgIGluc2VydGVkIGV2ZXJ5IGZvdXIgZnJhbWVzLgorCSA4PWVuYWJsZSBzY2VuZSBjaGFuZ2UgZGV0ZWN0aW9uIChzZWVtcyB0byBiZSBhIGZhaWx1cmUpCisJIDk9c2V0IGhpc3RvcnkgcGFyYW1ldGVycyBvZiB0aGUgdmlkZW8gaW5wdXQgbW9kdWxlCisJMTA9c2V0IGlucHV0IGZpZWxkIG9yZGVyIG9mIFZJTQorCTExPXNldCBxdWFudGl6YXRpb24gbWF0cml4CisJMTI9cmVzZXQgYXVkaW8gaW50ZXJmYWNlIGFmdGVyIGNoYW5uZWwgY2hhbmdlIG9yIGlucHV0IHN3aXRjaCAoaGFzIG5vIGFyZ3VtZW50KS4KKwkgICBOZWVkZWQgZm9yIHRoZSBjeDI1ODR4LCBub3QgbmVlZGVkIGZvciB0aGUgbXNweDR4eCwgYnV0IGl0IGRvZXNuJ3Qgc2VlbSB0bworCSAgIGRvIGFueSBoYXJtIGNhbGxpbmcgaXQgcmVnYXJkbGVzcy4KKwkxMz1zZXQgYXVkaW8gdm9sdW1lIGRlbGF5CisJMTQ9c2V0IGF1ZGlvIGRlbGF5CisKK1BhcmFtWzFdCisJQ29tbWFuZCB2YWx1ZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvY3gyMzQxeC9mdy1tZW1vcnkudHh0IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9jeDIzNDF4L2Z3LW1lbW9yeS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ3MzZmZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvY3gyMzQxeC9mdy1tZW1vcnkudHh0CkBAIC0wLDAgKzEsMTM5IEBACitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgY3gyMzQxeCBtZW1vcnkgbWFwIGFuZCBkb2N1bWVudHMgc29tZSBvZiB0aGUgcmVnaXN0ZXIKK3NwYWNlLgorCitOb3RlOiB0aGUgbWVtb3J5IGxvbmcgd29yZHMgYXJlIGxpdHRsZS1lbmRpYW4gKCdpbnRlbCBmb3JtYXQnKS4KKworV2FybmluZyEgVGhpcyBpbmZvcm1hdGlvbiB3YXMgZmlndXJlZCBvdXQgZnJvbSBzZWFyY2hpbmcgdGhyb3VnaCB0aGUgbWVtb3J5IGFuZAorcmVnaXN0ZXJzLCB0aGlzIGluZm9ybWF0aW9uIG1heSBub3QgYmUgY29ycmVjdCBhbmQgaXMgY2VydGFpbmx5IG5vdCBjb21wbGV0ZSwgYW5kCit3YXMgbm90IGRlcml2ZWQgZnJvbSBhbnl0aGluZyBtb3JlIHRoYW4gc2VhcmNoaW5nIHRocm91Z2ggdGhlIG1lbW9yeSBzcGFjZSB3aXRoCitjb21tYW5kcyBsaWtlOgorCisJaXZ0dmN0bCAtTyBtaW49MHgwMjAwMDAwMCxtYXg9MHgwMjAwMDBmZgorCitTbyB0YWtlIHRoaXMgYXMgaXMsIEknbSBhbHdheXMgc2VhcmNoaW5nIGZvciBtb3JlIHN0dWZmLCBpdCdzIGEgbGFyZ2UKK3JlZ2lzdGVyIHNwYWNlIDotKS4KKworTWVtb3J5IE1hcAorPT09PT09PT09PQorCitUaGUgY3gyMzQxeCBleHBvc2VzIGl0cyBlbnRpcmUgNjRNIG1lbW9yeSBzcGFjZSB0byB0aGUgUENJIGhvc3QgdmlhIHRoZSBQQ0kgQkFSMAorKEJhc2UgQWRkcmVzcyBSZWdpc3RlciAwKS4gVGhlIGFkZHJlc3NlcyBoZXJlIGFyZSBvZmZzZXRzIHJlbGF0aXZlIHRvIHRoZQorYWRkcmVzcyBoZWxkIGluIEJBUjAuCisKKzB4MDAwMDAwMDAtMHgwMGZmZmZmZiBFbmNvZGVyIG1lbW9yeSBzcGFjZQorMHgwMDAwMDAwMC0weDAwMDNmZmZmIEVuY29kZS5yb20KKyAgICAgID8/Py0/Pz8gICAgICAgICBNUEVHIGJ1ZmZlcihzKQorICAgICAgPz8/LT8/PyAgICAgICAgIFJhdyB2aWRlbyBjYXB0dXJlIGJ1ZmZlcihzKQorICAgICAgPz8/LT8/PyAgICAgICAgIFJhdyBhdWRpbyBjYXB0dXJlIGJ1ZmZlcihzKQorICAgICAgPz8/LT8/PyAgICAgICAgIERpc3BsYXkgYnVmZmVycyAoNiBvciA5KQorCisweDAxMDAwMDAwLTB4MDFmZmZmZmYgRGVjb2RlciBtZW1vcnkgc3BhY2UKKzB4MDEwMDAwMDAtMHgwMTAzZmZmZiBEZWNvZGUucm9tCisgICAgICA/Pz8tPz8/ICAgICAgICAgTVBFRyBidWZmZXJzKHMpCisweDAxMTRiMDAwLTB4MDExNWFmZmYgQXVkaW8ucm9tIChkZXByZWNhdGVkPykKKworMHgwMjAwMDAwMC0weDAyMDBmZmZmIFJlZ2lzdGVyIFNwYWNlCisKK1JlZ2lzdGVycworPT09PT09PT09CisKK1RoZSByZWdpc3RlcnMgb2NjdXB5IHRoZSA2NGsgc3BhY2Ugc3RhcnRpbmcgYXQgdGhlIDB4MDIwMDAwMDAgb2Zmc2V0IGZyb20gQkFSMC4KK0FsbCBvZiB0aGVzZSByZWdpc3RlcnMgYXJlIDMyIGJpdHMgd2lkZS4KKworRE1BIFJlZ2lzdGVycyAweDAwMC0weGZmOgorCisgMHgwMCAtIENvbnRyb2w6CisJMD1yZXNldC9jYW5jZWwsIDE9cmVhZCwgMj13cml0ZSwgND1zdG9wCisgMHgwNCAtIERNQSBzdGF0dXM6CisJMT1yZWFkIGJ1c3ksIDI9d3JpdGUgYnVzeSwgND1yZWFkIGVycm9yLCA4PXdyaXRlIGVycm9yLCAxNj1saW5rIGxpc3QgZXJyb3IKKyAweDA4IC0gcGNpIERNQSBwb2ludGVyIGZvciByZWFkIGxpbmsgbGlzdAorIDB4MGMgLSBwY2kgRE1BIHBvaW50ZXIgZm9yIHdyaXRlIGxpbmsgbGlzdAorIDB4MTAgLSByZWFkL3dyaXRlIERNQSBlbmFibGU6CisJMT1yZWFkIGVuYWJsZSwgMj13cml0ZSBlbmFibGUKKyAweDE0IC0gYWx3YXlzIDB4ZmZmZmZmZmYsIGlmIHNldCBhbnkgbG93ZXIgaW5zdGFiaWxpdHkgb2NjdXJzLCAweDAwIGNyYXNoZXMKKyAweDE4IC0gPz8KKyAweDFjIC0gYWx3YXlzIDB4MjAgb3IgMzIsIHNtYWxsZXIgdmFsdWVzIHNsb3cgZG93biBETUEgdHJhbnNhY3Rpb25zCisgMHgyMCAtIGFsd2F5cyB2YWx1ZSBvZiAweDc4MGEwMTBhCisgMHgyNC0weDNjIC0gdXN1YWxseSBqdXN0IHJhbmRvbSB2YWx1ZXM/Pz8KKyAweDQwIC0gSW50ZXJydXB0IHN0YXR1cworIDB4NDQgLSBXcml0ZSBhIGJpdCBoZXJlIGFuZCBzaG93cyB1cCBpbiBJbnRlcnJ1cHQgc3RhdHVzIDB4NDAKKyAweDQ4IC0gSW50ZXJydXB0IE1hc2sKKyAweDRDIC0gYWx3YXlzIHZhbHVlIG9mIDB4ZmZmZGZmZmYsCisJaWYgY2hhbmdlZCB0byAweGZmZmZmZmZmIERNQSB3cml0ZSBpbnRlcnJ1cHRzIGJyZWFrLgorIDB4NTAgLSBhbHdheXMgMHhmZmZmZmZmZgorIDB4NTQgLSBhbHdheXMgMHhmZmZmZmZmZiAoMHg0YywgMHg1MCwgMHg1NCBzZWVtIGxpa2UgaW50ZXJydXB0IG1hc2tzLCBhcmUKKwkzIHByb2Nlc3NvcnMgb24gY2hpcCwgSmF2YSBvbmVzLCBWUFUsIFNQVSwgQVBVLCBtYXliZSB0aGVzZSBhcmUgdGhlCisJaW50ZXJydXB0IG1hc2tzPz8/KS4KKyAweDYwLTB4N0MgLSByYW5kb20gdmFsdWVzCisgMHg4MCAtIGZpcnN0IHdyaXRlIGxpbmtlZCBsaXN0IHJlZywgZm9yIEVuY29kZXIgTWVtb3J5IGFkZHIKKyAweDg0IC0gZmlyc3Qgd3JpdGUgbGlua2VkIGxpc3QgcmVnLCBmb3IgcGNpIG1lbW9yeSBhZGRyCisgMHg4OCAtIGZpcnN0IHdyaXRlIGxpbmtlZCBsaXN0IHJlZywgZm9yIGxlbmd0aCBvZiBidWZmZXIgaW4gbWVtb3J5IGFkZHIKKwkofDB4ODAwMDAwMDAgb3IgdGhpcyBmb3IgbGFzdCBsaW5rKQorIDB4OGMtMHhkYyAtIHJlc3Qgb2Ygd3JpdGUgbGlua2VkIGxpc3QgcmVnLCA4IHNldHMgb2YgMyB0b3RhbCwgRE1BIGdvZXMgaGVyZQorCWZyb20gbGlua2VkIGxpc3QgYWRkciBpbiByZWcgMHgwYywgZmlybXdhcmUgbXVzdCBwdXNoIHRocm91Z2ggb3IKKwlzb21ldGhpbmcuCisgMHhlMCAtIGZpcnN0IChhbmQgb25seSkgcmVhZCBsaW5rZWQgbGlzdCByZWcsIGZvciBwY2kgbWVtb3J5IGFkZHIKKyAweGU0IC0gZmlyc3QgKGFuZCBvbmx5KSByZWFkIGxpbmtlZCBsaXN0IHJlZywgZm9yIERlY29kZXIgbWVtb3J5IGFkZHIKKyAweGU4IC0gZmlyc3QgKGFuZCBvbmx5KSByZWFkIGxpbmtlZCBsaXN0IHJlZywgZm9yIGxlbmd0aCBvZiBidWZmZXIKKyAweGVjLTB4ZmYgLSBOb3RoaW5nIHNlZW1zIHRvIGJlIGluIHRoZXNlIHJlZ2lzdGVycywgMHhlYy1mNCBhcmUgMHgwMDAwMDAwMC4KKworTWVtb3J5IGxvY2F0aW9ucyBmb3IgRW5jb2RlciBCdWZmZXJzIDB4NzAwLTB4N2ZmOgorCitUaGVzZSByZWdpc3RlcnMgc2hvdyBvZmZzZXRzIG9mIG1lbW9yeSBsb2NhdGlvbnMgcGVydGFpbmluZyB0byBlYWNoCitidWZmZXIgYXJlYSB1c2VkIGZvciBlbmNvZGluZywgaGF2ZSB0byBzaGlmdCB0aGVtIGJ5IDw8MSBmaXJzdC4KKworMHgwN0Y4OiBFbmNvZGVyIFNEUkFNIHJlZnJlc2gKKzB4MDdGQzogRW5jb2RlciBTRFJBTSBwcmUtY2hhcmdlCisKK01lbW9yeSBsb2NhdGlvbnMgZm9yIERlY29kZXIgQnVmZmVycyAweDgwMC0weDhmZjoKKworVGhlc2UgcmVnaXN0ZXJzIHNob3cgb2Zmc2V0cyBvZiBtZW1vcnkgbG9jYXRpb25zIHBlcnRhaW5pbmcgdG8gZWFjaAorYnVmZmVyIGFyZWEgdXNlZCBmb3IgZGVjb2RpbmcsIGhhdmUgdG8gc2hpZnQgdGhlbSBieSA8PDEgZmlyc3QuCisKKzB4MDhGODogRGVjb2RlciBTRFJBTSByZWZyZXNoCisweDA4RkM6IERlY29kZXIgU0RSQU0gcHJlLWNoYXJnZQorCitPdGhlciBtZW1vcnkgbG9jYXRpb25zOgorCisweDI4MDA6IFZpZGVvIERpc3BsYXkgTW9kdWxlIGNvbnRyb2wKKzB4MkQwMDogQU8gKGF1ZGlvIG91dHB1dD8pIGNvbnRyb2wKKzB4MkQyNDogQnl0ZXMgRmx1c2hlZAorMHg3MDAwOiBMU0IgSTJDIHdyaXRlIGNsb2NrIGJpdCAoaW52ZXJ0ZWQpCisweDcwMDQ6IExTQiBJMkMgd3JpdGUgZGF0YSBiaXQgKGludmVydGVkKQorMHg3MDA4OiBMU0IgSTJDIHJlYWQgY2xvY2sgYml0CisweDcwMGM6IExTQiBJMkMgcmVhZCBkYXRhIGJpdAorMHg5MDA4OiBHUElPIGdldCBpbnB1dCBzdGF0ZQorMHg5MDBjOiBHUElPIHNldCBvdXRwdXQgc3RhdGUKKzB4OTAyMDogR1BJTyBkaXJlY3Rpb24gKEJpdDcgKEdQSU8gMC4uNykgLSAwOmlucHV0LCAxOm91dHB1dCkKKzB4OTA1MDogU1BVIGNvbnRyb2wKKzB4OTA1NDogUmVzZXQgSFcgYmxvY2tzCisweDkwNTg6IFZQVSBjb250cm9sCisweEEwMTg6IEJpdDY6IGludGVycnVwdCBwZW5kaW5nPworMHhBMDY0OiBBUFUgY29tbWFuZAorCisKK0ludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGRlZmluaXRpb24gb2YgdGhlIGJpdHMgaW4gdGhlIGludGVycnVwdCBzdGF0dXMgcmVnaXN0ZXIgMHgwMDQwLCBhbmQgdGhlCitpbnRlcnJ1cHQgbWFzayAweDAwNDguIElmIGEgYml0IGlzIGNsZWFyZWQgaW4gdGhlIG1hc2ssIHRoZW4gd2Ugd2FudCBvdXIgSVNSIHRvCitleGVjdXRlLgorCitCaXQKKzMxIEVuY29kZXIgU3RhcnQgQ2FwdHVyZQorMzAgRW5jb2RlciBFT1MKKzI5IEVuY29kZXIgVkJJIGNhcHR1cmUKKzI4IEVuY29kZXIgVmlkZW8gSW5wdXQgTW9kdWxlIHJlc2V0IGV2ZW50CisyNyBFbmNvZGVyIERNQSBjb21wbGV0ZQorMjQgRGVjb2RlciBhdWRpbyBtb2RlIGNoYW5nZSBkZXRlY3Rpb24gZXZlbnQgKHRocm91Z2ggZXZlbnQgbm90aWZpY2F0aW9uKQorMjIgRGVjb2RlciBkYXRhIHJlcXVlc3QKKzIwIERlY29kZXIgRE1BIGNvbXBsZXRlCisxOSBEZWNvZGVyIFZCSSByZS1pbnNlcnRpb24KKzE4IERlY29kZXIgRE1BIGVyciAobGlua2VkLWxpc3QgYmFkKQorCitNaXNzaW5nCitFbmNvZGVyIEFQSSBjYWxsIGNvbXBsZXRlZAorRGVjb2RlciBBUEkgY2FsbCBjb21wbGV0ZWQKK0VuY29kZXIgQVBJIHBvc3QoPykKK0RlY29kZXIgQVBJIHBvc3QoPykKK0RlY29kZXIgVlRSQUNFIGV2ZW50CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2N4MjM0MXgvZnctb3NkLWFwaS50eHQgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2N4MjM0MXgvZnctb3NkLWFwaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODljNDYwMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvY3gyMzQxeC9mdy1vc2QtYXBpLnR4dApAQCAtMCwwICsxLDM1MCBAQAorT1NEIGZpcm13YXJlIEFQSSBkZXNjcmlwdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitOb3RlOiB0aGlzIEFQSSBpcyBwYXJ0IG9mIHRoZSBkZWNvZGVyIGZpcm13YXJlLCBzbyBpdCdzIGN4MjM0MTUgb25seS4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX09TRF9HRVRfRlJBTUVCVUZGRVIKK0VudW0gCTY1LzB4NDEKK0Rlc2NyaXB0aW9uCisJUmV0dXJuIGJhc2UgYW5kIGxlbmd0aCBvZiBjb250aWd1b3VzIE9TRCBtZW1vcnkuCitSZXN1bHRbMF0KKwlPU0QgYmFzZSBhZGRyZXNzCitSZXN1bHRbMV0KKwlPU0QgbGVuZ3RoCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9PU0RfR0VUX1BJWEVMX0ZPUk1BVAorRW51bSAJNjYvMHg0MgorRGVzY3JpcHRpb24KKwlRdWVyeSBPU0QgZm9ybWF0CitSZXN1bHRbMF0KKwkwPThiaXQgaW5kZXgKKwkxPTE2Yml0IFJHQiA1OjY6NQorCTI9MTZiaXQgQVJHQiAxOjU6NTo1CisJMz0xNmJpdCBBUkdCIDE6NDo0OjQKKwk0PTMyYml0IEFSR0IgODo4Ojg6OAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfT1NEX1NFVF9QSVhFTF9GT1JNQVQKK0VudW0gCTY3LzB4NDMKK0Rlc2NyaXB0aW9uCisJQXNzaWduIHBpeGVsIGZvcm1hdAorUGFyYW1bMF0KKwkwPThiaXQgaW5kZXgKKwkxPTE2Yml0IFJHQiA1OjY6NQorCTI9MTZiaXQgQVJHQiAxOjU6NTo1CisJMz0xNmJpdCBBUkdCIDE6NDo0OjQKKwk0PTMyYml0IEFSR0IgODo4Ojg6OAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfT1NEX0dFVF9TVEFURQorRW51bSAJNjgvMHg0NAorRGVzY3JpcHRpb24KKwlRdWVyeSBPU0Qgc3RhdGUKK1Jlc3VsdFswXQorCUJpdCAgMCAgIDA9b2ZmLCAxPW9uCisJQml0cyAxOjIgYWxwaGEgY29udHJvbAorCUJpdHMgMzo1IHBpeGVsIGZvcm1hdAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfT1NEX1NFVF9TVEFURQorRW51bSAJNjkvMHg0NQorRGVzY3JpcHRpb24KKwlPU0Qgc3dpdGNoCitQYXJhbVswXQorCTA9b2ZmLCAxPW9uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9PU0RfR0VUX09TRF9DT09SRFMKK0VudW0gCTcwLzB4NDYKK0Rlc2NyaXB0aW9uCisJUmV0cmlldmUgY29vcmRpbmF0ZXMgb2YgT1NEIGFyZWEgYmxlbmRlZCB3aXRoIHZpZGVvCitSZXN1bHRbMF0KKwlPU0QgYnVmZmVyIGFkZHJlc3MKK1Jlc3VsdFsxXQorCVN0cmlkZSBpbiBwaXhlbHMKK1Jlc3VsdFsyXQorCUxpbmVzIGluIE9TRCBidWZmZXIKK1Jlc3VsdFszXQorCUhvcml6b250YWwgb2Zmc2V0IGluIGJ1ZmZlcgorUmVzdWx0WzRdCisJVmVydGljYWwgb2Zmc2V0IGluIGJ1ZmZlcgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfT1NEX1NFVF9PU0RfQ09PUkRTCitFbnVtIAk3MS8weDQ3CitEZXNjcmlwdGlvbgorCUFzc2lnbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIE9TRCBhcmVhIHRvIGJsZW5kIHdpdGggdmlkZW8KK1BhcmFtWzBdCisJYnVmZmVyIGFkZHJlc3MKK1BhcmFtWzFdCisJYnVmZmVyIHN0cmlkZSBpbiBwaXhlbHMKK1BhcmFtWzJdCisJbGluZXMgaW4gYnVmZmVyCitQYXJhbVszXQorCWhvcml6b250YWwgb2Zmc2V0CitQYXJhbVs0XQorCXZlcnRpY2FsIG9mZnNldAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfT1NEX0dFVF9TQ1JFRU5fQ09PUkRTCitFbnVtIAk3Mi8weDQ4CitEZXNjcmlwdGlvbgorCVJldHJpZXZlIE9TRCBzY3JlZW4gYXJlYSBjb29yZGluYXRlcworUmVzdWx0WzBdCisJdG9wIGxlZnQgaG9yaXpvbnRhbCBvZmZzZXQKK1Jlc3VsdFsxXQorCXRvcCBsZWZ0IHZlcnRpY2FsIG9mZnNldAorUmVzdWx0WzJdCisJYm90dG9tIHJpZ2h0IGhvcml6b250YWwgb2Zmc2V0CitSZXN1bHRbM10KKwlib3R0b20gcmlnaHQgdmVydGljYWwgb2Zmc2V0CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9PU0RfU0VUX1NDUkVFTl9DT09SRFMKK0VudW0gCTczLzB4NDkKK0Rlc2NyaXB0aW9uCisJQXNzaWduIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgc2NyZWVuIGFyZWEgdG8gYmxlbmQgd2l0aCB2aWRlbworUGFyYW1bMF0KKwl0b3AgbGVmdCBob3Jpem9udGFsIG9mZnNldAorUGFyYW1bMV0KKwl0b3AgbGVmdCB2ZXJ0aWNhbCBvZmZzZXQKK1BhcmFtWzJdCisJYm90dG9tIGxlZnQgaG9yaXpvbnRhbCBvZmZzZXQKK1BhcmFtWzNdCisJYm90dG9tIGxlZnQgdmVydGljYWwgb2Zmc2V0CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9PU0RfR0VUX0dMT0JBTF9BTFBIQQorRW51bSAJNzQvMHg0QQorRGVzY3JpcHRpb24KKwlSZXRyaWV2ZSBPU0QgZ2xvYmFsIGFscGhhCitSZXN1bHRbMF0KKwlnbG9iYWwgYWxwaGE6IDA9b2ZmLCAxPW9uCitSZXN1bHRbMV0KKwliaXRzIDA6NyBnbG9iYWwgYWxwaGEKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX09TRF9TRVRfR0xPQkFMX0FMUEhBCitFbnVtIAk3NS8weDRCCitEZXNjcmlwdGlvbgorCVVwZGF0ZSBnbG9iYWwgYWxwaGEKK1BhcmFtWzBdCisJZ2xvYmFsIGFscGhhOiAwPW9mZiwgMT1vbgorUGFyYW1bMV0KKwlnbG9iYWwgYWxwaGEgKDggYml0cykKK1BhcmFtWzJdCisJbG9jYWwgYWxwaGE6IDA9b24sIDE9b2ZmCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9PU0RfU0VUX0JMRU5EX0NPT1JEUworRW51bSAJNzgvMHg0QworRGVzY3JpcHRpb24KKwlNb3ZlIHN0YXJ0IG9mIGJsZW5kaW5nIGFyZWEgd2l0aGluIGRpc3BsYXkgYnVmZmVyCitQYXJhbVswXQorCWhvcml6b250YWwgb2Zmc2V0IGluIGJ1ZmZlcgorUGFyYW1bMV0KKwl2ZXJ0aWNhbCBvZmZzZXQgaW4gYnVmZmVyCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9PU0RfR0VUX0ZMSUNLRVJfU1RBVEUKK0VudW0gCTc5LzB4NEYKK0Rlc2NyaXB0aW9uCisJUmV0cmlldmUgZmxpY2tlciByZWR1Y3Rpb24gbW9kdWxlIHN0YXRlCitSZXN1bHRbMF0KKwlmbGlja2VyIHN0YXRlOiAwPW9mZiwgMT1vbgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfT1NEX1NFVF9GTElDS0VSX1NUQVRFCitFbnVtIAk4MC8weDUwCitEZXNjcmlwdGlvbgorCVNldCBmbGlja2VyIHJlZHVjdGlvbiBtb2R1bGUgc3RhdGUKK1BhcmFtWzBdCisJU3RhdGU6IDA9b2ZmLCAxPW9uCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9PU0RfQkxUX0NPUFkKK0VudW0gCTgyLzB4NTIKK0Rlc2NyaXB0aW9uCisJQkxUIGNvcHkKK1BhcmFtWzBdCisnMDAwMCcgIHplcm8KKycwMDAxJyB+ZGVzdGluYXRpb24gQU5EIH5zb3VyY2UKKycwMDEwJyB+ZGVzdGluYXRpb24gQU5EICBzb3VyY2UKKycwMDExJyB+ZGVzdGluYXRpb24KKycwMTAwJyAgZGVzdGluYXRpb24gQU5EIH5zb3VyY2UKKycwMTAxJyAgICAgICAgICAgICAgICAgIH5zb3VyY2UKKycwMTEwJyAgZGVzdGluYXRpb24gWE9SICBzb3VyY2UKKycwMTExJyB+ZGVzdGluYXRpb24gT1IgIH5zb3VyY2UKKycxMDAwJyB+ZGVzdGluYXRpb24gQU5EIH5zb3VyY2UKKycxMDAxJyAgZGVzdGluYXRpb24gWE5PUiBzb3VyY2UKKycxMDEwJyAgICAgICAgICAgICAgICAgICBzb3VyY2UKKycxMDExJyB+ZGVzdGluYXRpb24gT1IgICBzb3VyY2UKKycxMTAwJyAgZGVzdGluYXRpb24KKycxMTAxJyAgZGVzdGluYXRpb24gT1IgIH5zb3VyY2UKKycxMTEwJyAgZGVzdGluYXRpb24gT1IgICBzb3VyY2UKKycxMTExJyAgb25lCisKK1BhcmFtWzFdCisJUmVzdWx0aW5nIGFscGhhIGJsZW5kaW5nCisJICAgICcwMScgc291cmNlX2FscGhhCisJICAgICcxMCcgZGVzdGluYXRpb25fYWxwaGEKKwkgICAgJzExJyBzb3VyY2VfYWxwaGEqZGVzdGluYXRpb25fYWxwaGErMQorCQkgKHplcm8gaWYgYm90aCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFscGhhIGFyZSB6ZXJvKQorUGFyYW1bMl0KKwknMDAnIG91dHB1dF9waXhlbCA9IHNvdXJjZV9waXhlbAorCisJJzAxJyBpZiBzb3VyY2VfYWxwaGE9MDoKKwkJIG91dHB1dF9waXhlbCA9IGRlc3RpbmF0aW9uX3BpeGVsCisJICAgICBpZiAyNTYgPiBzb3VyY2VfYWxwaGEgPiAxOgorCQkgb3V0cHV0X3BpeGVsID0gKChzb3VyY2VfYWxwaGEgKyAxKSpzb3VyY2VfcGl4ZWwgKworCQkJCSAoMjU1IC0gc291cmNlX2FscGhhKSpkZXN0aW5hdGlvbl9waXhlbCkvMjU2CisKKwknMTAnIGlmIGRlc3RpbmF0aW9uX2FscGhhPTA6CisJCSBvdXRwdXRfcGl4ZWwgPSBzb3VyY2VfcGl4ZWwKKwkgICAgICBpZiAyNTUgPiBkZXN0aW5hdGlvbl9hbHBoYSA+IDA6CisJCSBvdXRwdXRfcGl4ZWwgPSAoKDI1NSAtIGRlc3RpbmF0aW9uX2FscGhhKSpzb3VyY2VfcGl4ZWwgKworCQkJCSAoZGVzdGluYXRpb25fYWxwaGEgKyAxKSpkZXN0aW5hdGlvbl9waXhlbCkvMjU2CisKKwknMTEnIGlmIHNvdXJjZV9hbHBoYT0wOgorCQkgc291cmNlX3RlbXAgPSAwCisJICAgICBpZiBzb3VyY2VfYWxwaGE9MjU1OgorCQkgc291cmNlX3RlbXAgPSBzb3VyY2VfcGl4ZWwqMjU2CisJICAgICBpZiAyNTUgPiBzb3VyY2VfYWxwaGEgPiAwOgorCQkgc291cmNlX3RlbXAgPSBzb3VyY2VfcGl4ZWwqKHNvdXJjZV9hbHBoYSArIDEpCisJICAgICBpZiBkZXN0aW5hdGlvbl9hbHBoYT0wOgorCQkgZGVzdGluYXRpb25fdGVtcCA9IDAKKwkgICAgIGlmIGRlc3RpbmF0aW9uX2FscGhhPTI1NToKKwkJIGRlc3RpbmF0aW9uX3RlbXAgPSBkZXN0aW5hdGlvbl9waXhlbCoyNTYKKwkgICAgIGlmIDI1NSA+IGRlc3RpbmF0aW9uX2FscGhhID4gMDoKKwkJIGRlc3RpbmF0aW9uX3RlbXAgPSBkZXN0aW5hdGlvbl9waXhlbCooZGVzdGluYXRpb25fYWxwaGEgKyAxKQorCSAgICAgb3V0cHV0X3BpeGVsID0gKHNvdXJjZV90ZW1wICsgZGVzdGluYXRpb25fdGVtcCkvMjU2CitQYXJhbVszXQorCXdpZHRoCitQYXJhbVs0XQorCWhlaWdodAorUGFyYW1bNV0KKwlkZXN0aW5hdGlvbiBwaXhlbCBtYXNrCitQYXJhbVs2XQorCWRlc3RpbmF0aW9uIHJlY3RhbmdsZSBzdGFydCBhZGRyZXNzCitQYXJhbVs3XQorCWRlc3RpbmF0aW9uIHN0cmlkZSBpbiBkd29yZHMKK1BhcmFtWzhdCisJc291cmNlIHN0cmlkZSBpbiBkd29yZHMKK1BhcmFtWzldCisJc291cmNlIHJlY3RhbmdsZSBzdGFydCBhZGRyZXNzCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9PU0RfQkxUX0ZJTEwKK0VudW0gCTgzLzB4NTMKK0Rlc2NyaXB0aW9uCisJQkxUIGZpbGwgY29sb3IKK1BhcmFtWzBdCisJU2FtZSBhcyBQYXJhbVswXSBvbiBBUEkgMHg1MgorUGFyYW1bMV0KKwlTYW1lIGFzIFBhcmFtWzFdIG9uIEFQSSAweDUyCitQYXJhbVsyXQorCVNhbWUgYXMgUGFyYW1bMl0gb24gQVBJIDB4NTIKK1BhcmFtWzNdCisJd2lkdGgKK1BhcmFtWzRdCisJaGVpZ2h0CitQYXJhbVs1XQorCWRlc3RpbmF0aW9uIHBpeGVsIG1hc2sKK1BhcmFtWzZdCisJZGVzdGluYXRpb24gcmVjdGFuZ2xlIHN0YXJ0IGFkZHJlc3MKK1BhcmFtWzddCisJZGVzdGluYXRpb24gc3RyaWRlIGluIGR3b3JkcworUGFyYW1bOF0KKwljb2xvciBmaWxsIHZhbHVlCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9PU0RfQkxUX1RFWFQKK0VudW0gCTg0LzB4NTQKK0Rlc2NyaXB0aW9uCisJQkxUIGZvciA4IGJpdCBhbHBoYSB0ZXh0IHNvdXJjZQorUGFyYW1bMF0KKwlTYW1lIGFzIFBhcmFtWzBdIG9uIEFQSSAweDUyCitQYXJhbVsxXQorCVNhbWUgYXMgUGFyYW1bMV0gb24gQVBJIDB4NTIKK1BhcmFtWzJdCisJU2FtZSBhcyBQYXJhbVsyXSBvbiBBUEkgMHg1MgorUGFyYW1bM10KKwl3aWR0aAorUGFyYW1bNF0KKwloZWlnaHQKK1BhcmFtWzVdCisJZGVzdGluYXRpb24gcGl4ZWwgbWFzaworUGFyYW1bNl0KKwlkZXN0aW5hdGlvbiByZWN0YW5nbGUgc3RhcnQgYWRkcmVzcworUGFyYW1bN10KKwlkZXN0aW5hdGlvbiBzdHJpZGUgaW4gZHdvcmRzCitQYXJhbVs4XQorCXNvdXJjZSBzdHJpZGUgaW4gZHdvcmRzCitQYXJhbVs5XQorCXNvdXJjZSByZWN0YW5nbGUgc3RhcnQgYWRkcmVzcworUGFyYW1bMTBdCisJY29sb3IgZmlsbCB2YWx1ZQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfT1NEX1NFVF9GUkFNRUJVRkZFUl9XSU5ET1cKK0VudW0gCTg2LzB4NTYKK0Rlc2NyaXB0aW9uCisJUG9zaXRpb25zIHRoZSBtYWluIG91dHB1dCB3aW5kb3cgb24gdGhlIHNjcmVlbi4gVGhlIGNvb3JkaW5hdGVzIG11c3QgYmUKKwlzdWNoIHRoYXQgdGhlIGVudGlyZSB3aW5kb3cgZml0cyBvbiB0aGUgc2NyZWVuLgorUGFyYW1bMF0KKwl3aW5kb3cgd2lkdGgKK1BhcmFtWzFdCisJd2luZG93IGhlaWdodAorUGFyYW1bMl0KKwl0b3AgbGVmdCB3aW5kb3cgY29ybmVyIGhvcml6b250YWwgb2Zmc2V0CitQYXJhbVszXQorCXRvcCBsZWZ0IHdpbmRvdyBjb3JuZXIgdmVydGljYWwgb2Zmc2V0CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmFtZSAJQ1gyMzQxWF9PU0RfU0VUX0NIUk9NQV9LRVkKK0VudW0gCTk2LzB4NjAKK0Rlc2NyaXB0aW9uCisJQ2hyb21hIGtleSBzd2l0Y2ggYW5kIGNvbG9yCitQYXJhbVswXQorCXN0YXRlOiAwPW9mZiwgMT1vbgorUGFyYW1bMV0KKwljb2xvcgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hbWUgCUNYMjM0MVhfT1NEX0dFVF9BTFBIQV9DT05URU5UX0lOREVYCitFbnVtIAk5Ny8weDYxCitEZXNjcmlwdGlvbgorCVJldHJpZXZlIGFscGhhIGNvbnRlbnQgaW5kZXgKK1Jlc3VsdFswXQorCWFscGhhIGNvbnRlbnQgaW5kZXgsIFJhbmdlIDA6MTUKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYW1lIAlDWDIzNDFYX09TRF9TRVRfQUxQSEFfQ09OVEVOVF9JTkRFWAorRW51bSAJOTgvMHg2MgorRGVzY3JpcHRpb24KKwlBc3NpZ24gYWxwaGEgY29udGVudCBpbmRleAorUGFyYW1bMF0KKwlhbHBoYSBjb250ZW50IGluZGV4LCByYW5nZSAwOjE1CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2N4MjM0MXgvZnctdXBsb2FkLnR4dCBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvY3gyMzQxeC9mdy11cGxvYWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwYzUwMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2N4MjM0MXgvZnctdXBsb2FkLnR4dApAQCAtMCwwICsxLDQ5IEBACitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyBob3cgdG8gdXBsb2FkIHRoZSBjeDIzNDF4IGZpcm13YXJlIHRvIHRoZSBjYXJkLgorCitIb3cgdG8gZmluZAorPT09PT09PT09PT0KKworU2VlIHRoZSB3ZWIgcGFnZXMgb2YgdGhlIHZhcmlvdXMgcHJvamVjdHMgdGhhdCB1c2VzIHRoaXMgY2hpcCBmb3IgaW5mb3JtYXRpb24KK29uIGhvdyB0byBvYnRhaW4gdGhlIGZpcm13YXJlLgorCitUaGUgZmlybXdhcmUgc3RvcmVkIGluIGEgV2luZG93cyBkcml2ZXIgY2FuIGJlIGRldGVjdGVkIGFzIGZvbGxvd3M6CisKKy0gRWFjaCBmaXJtd2FyZSBpbWFnZSBpcyAyNTZrIGJ5dGVzLgorLSBUaGUgMXN0IDMyLWJpdCB3b3JkIG9mIHRoZSBFbmNvZGVyIGltYWdlIGlzIDB4MDAwMGRhNworLSBUaGUgMXN0IDMyLWJpdCB3b3JkIG9mIHRoZSBEZWNvZGVyIGltYWdlIGlzIDB4MDAwMDNhNworLSBUaGUgMm5kIDMyLWJpdCB3b3JkIG9mIGJvdGggaW1hZ2VzIGlzIDB4YWE1NWJiNjYKKworSG93IHRvIGxvYWQKKz09PT09PT09PT09CisKKy0gSXNzdWUgdGhlIEZXYXBpIGNvbW1hbmQgdG8gc3RvcCB0aGUgZW5jb2RlciBpZiBpdCBpcyBydW5uaW5nLiBXYWl0IGZvciB0aGUKKyAgY29tbWFuZCB0byBjb21wbGV0ZS4KKy0gSXNzdWUgdGhlIEZXYXBpIGNvbW1hbmQgdG8gc3RvcCB0aGUgZGVjb2RlciBpZiBpdCBpcyBydW5uaW5nLiBXYWl0IGZvciB0aGUKKyAgY29tbWFuZCB0byBjb21wbGV0ZS4KKy0gSXNzdWUgdGhlIEkyQyBjb21tYW5kIHRvIHRoZSBkaWdpdGl6ZXIgdG8gc3RvcCBlbWl0dGluZyBWU1lOQyBldmVudHMuCistIElzc3VlIHRoZSBGV2FwaSBjb21tYW5kIHRvIGhhbHQgdGhlIGVuY29kZXIncyBmaXJtd2FyZS4KKy0gU2xlZXAgZm9yIDEwbXMuCistIElzc3VlIHRoZSBGV2FwaSBjb21tYW5kIHRvIGhhbHQgdGhlIGRlY29kZXIncyBmaXJtd2FyZS4KKy0gU2xlZXAgZm9yIDEwbXMuCistIFdyaXRlIDB4MDAwMDAwMDAgdG8gcmVnaXN0ZXIgMHgyODAwIHRvIHN0b3AgdGhlIFZpZGVvIERpc3BsYXkgTW9kdWxlLgorLSBXcml0ZSAweDAwMDAwMDA1IHRvIHJlZ2lzdGVyIDB4MkQwMCB0byBzdG9wIHRoZSBBTyAoYXVkaW8gb3V0cHV0PykuCistIFdyaXRlIDB4MDAwMDAwMDAgdG8gcmVnaXN0ZXIgMHhBMDY0IHRvIHBpbmc/IHRoZSBBUFUuCistIFdyaXRlIDB4RkZGRkZGRkUgdG8gcmVnaXN0ZXIgMHg5MDU4IHRvIHN0b3AgdGhlIFZQVS4KKy0gV3JpdGUgMHhGRkZGRkZGRiB0byByZWdpc3RlciAweDkwNTQgdG8gcmVzZXQgdGhlIEhXIGJsb2Nrcy4KKy0gV3JpdGUgMHgwMDAwMDAwMSB0byByZWdpc3RlciAweDkwNTAgdG8gc3RvcCB0aGUgU1BVLgorLSBTbGVlcCBmb3IgMTBtcy4KKy0gV3JpdGUgMHgwMDAwMDAxQSB0byByZWdpc3RlciAweDA3RkMgdG8gaW5pdCB0aGUgRW5jb2RlciBTRFJBTSdzIHByZS1jaGFyZ2UuCistIFdyaXRlIDB4ODAwMDA2NDAgdG8gcmVnaXN0ZXIgMHgwN0Y4IHRvIGluaXQgdGhlIEVuY29kZXIgU0RSQU0ncyByZWZyZXNoIHRvIDF1cy4KKy0gV3JpdGUgMHgwMDAwMDAxQSB0byByZWdpc3RlciAweDA4RkMgdG8gaW5pdCB0aGUgRGVjb2RlciBTRFJBTSdzIHByZS1jaGFyZ2UuCistIFdyaXRlIDB4ODAwMDA2NDAgdG8gcmVnaXN0ZXIgMHgwOEY4IHRvIGluaXQgdGhlIERlY29kZXIgU0RSQU0ncyByZWZyZXNoIHRvIDF1cy4KKy0gU2xlZXAgZm9yIDUxMm1zLiAoNjAwbXMgaXMgcmVjb21tZW5kZWQpCistIFRyYW5zZmVyIHRoZSBlbmNvZGVyJ3MgZmlybXdhcmUgaW1hZ2UgdG8gb2Zmc2V0IDAgaW4gRW5jb2RlciBtZW1vcnkgc3BhY2UuCistIFRyYW5zZmVyIHRoZSBkZWNvZGVyJ3MgZmlybXdhcmUgaW1hZ2UgdG8gb2Zmc2V0IDAgaW4gRGVjb2RlciBtZW1vcnkgc3BhY2UuCistIFVzZSBhIHJlYWQtbW9kaWZ5LXdyaXRlIG9wZXJhdGlvbiB0byBDbGVhciBiaXQgMCBvZiByZWdpc3RlciAweDkwNTAgdG8KKyAgcmUtZW5hYmxlIHRoZSBTUFUuCistIFNsZWVwIGZvciAxIHNlY29uZC4KKy0gVXNlIGEgcmVhZC1tb2RpZnktd3JpdGUgb3BlcmF0aW9uIHRvIENsZWFyIGJpdHMgMyBhbmQgMCBvZiByZWdpc3RlciAweDkwNTgKKyAgdG8gcmUtZW5hYmxlIHRoZSBWUFUuCistIFNsZWVwIGZvciAxIHNlY29uZC4KKy0gSXNzdWUgc3RhdHVzIEFQSSBjb21tYW5kcyB0byBib3RoIGZpcm13YXJlIGltYWdlcyB0byB2ZXJpZnkuCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvY3g4OC9oYXVwcGF1Z2Utd2ludHYtY3g4OC1pci50eHQgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2N4ODgvaGF1cHBhdWdlLXdpbnR2LWN4ODgtaXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MzI5YTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2N4ODgvaGF1cHBhdWdlLXdpbnR2LWN4ODgtaXIudHh0CkBAIC0wLDAgKzEsNTQgQEAKK1RoZSBjb250cm9scyBmb3IgdGhlIG11eCBhcmUgR1BJTyBbMCwxXSBmb3Igc291cmNlLCBhbmQgR1BJTyAyIGZvciBtdXRpbmcuCisKK0dQSU8wICBHUElPMQorICAwICAgICAgICAwICAgIFRWIEF1ZGlvCisgIDEgICAgICAgIDAgICAgRk0gcmFkaW8KKyAgMCAgICAgICAgMSAgICBMaW5lLUluCisgIDEgICAgICAgIDEgICAgTW9ubyB0dW5lciBieXBhc3Mgb3IgQ0QgcGFzc3RocnUgKHR1bmVyIHNwZWNpZmljKQorCitHUElPIDE2KGkgYmVsaWV2ZSkgaXMgdGllZCB0byB0aGUgSVIgcG9ydCAoaWYgcHJlc2VudCkuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis+RnJvbSB0aGUgZGF0YSBzaGVldDoKKyBSZWdpc3RlciAyNCdoMjAwMDQgIFBDSSBJbnRlcnJ1cHQgU3RhdHVzCisgIGJpdCBbMThdICBJUl9TTVBfSU5UIFNldCB3aGVuIDMyIGlucHV0IHNhbXBsZXMgaGF2ZSBiZWVuIGNvbGxlY3RlZCBvdmVyCisgIGdwaW9bMTZdIHBpbiBpbnRvIEdQX1NBTVBMRSByZWdpc3Rlci4KKworV2hhdCdzIG1pc3NpbmcgZnJvbSB0aGUgZGF0YSBzaGVldDoKKworU2V0dXAgNEtIeiBzYW1wbGluZyByYXRlIChyb3VnaGx5IDJ4IG92ZXJzYW1wbGVkOyBnb29kIGVub3VnaCBmb3Igb3VyIFJDNQorY29tcGF0IHJlbW90ZSkKK3NldCByZWdpc3RlciAweDM1QzA1MCB0byAgMHhhODBhODAKKworZW5hYmxlIHNhbXBsaW5nCitzZXQgcmVnaXN0ZXIgMHgzNUMwNTQgdG8gMHg1CisKK09mIGNvdXJzZSwgZW5hYmxlIHRoZSBJUlEgYml0IDE4IGluIHRoZSBpbnRlcnJ1cHQgbWFzayByZWdpc3RlciAuKGFuZAorcHJvdmlkZSBmb3IgYSBoYW5kbGVyKQorCitHUF9TQU1QTEUgcmVnaXN0ZXIgaXMgYXQgMHgzNUMwNTgKKworQml0cyBhcmUgdGhlbiByaWdodCBzaGlmdGVkIGludG8gdGhlIEdQX1NBTVBMRSByZWdpc3RlciBhdCB0aGUgc3BlY2lmaWVkCityYXRlOyB5b3UgZ2V0IGFuIGludGVycnVwdCB3aGVuIGEgZnVsbCBEV09SRCBpcyByZWNlaXZlZC4KK1lvdSBuZWVkIHRvIHJlY292ZXIgdGhlIGFjdHVhbCBSQzUgYml0cyBvdXQgb2YgdGhlIChvdmVyc2FtcGxlZCkgSVIgc2Vuc29yCitiaXRzLiAoSGludDogbG9vayBmb3IgdGhlIDAvMWFuZCAxLzAgY3Jvc3NpbmdzIG9mIHRoZSBSQzUgYmktcGhhc2UgZGF0YSkgIEFuCithY3R1YWwgcmF3IFJDNSBjb2RlIHdpbGwgc3BhbiAyLTMgRFdPUkRTLCBkZXBlbmRpbmcgb24gdGhlIGFjdHVhbCBhbGlnbm1lbnQuCisKK0knbSBwcmV0dHkgc3VyZSB3aGVuIG5vIElSIHNpZ25hbCBpcyBwcmVzZW50IHRoZSByZWNlaXZlciBpcyBhbHdheXMgaW4gYQorbWFya2luZyBzdGF0ZSgxKTsgYnV0IHN0cmF5IGxpZ2h0LCBldGMgY2FuIGNhdXNlIGludGVybWl0dGVudCBub2lzZSB2YWx1ZXMKK2FzIHdlbGwuICBSZW1lbWJlciwgdGhpcyBpcyBhIGZyZWUgcnVubmluZyBzYW1wbGUgb2YgdGhlIElSIHJlY2VpdmVyIHN0YXRlCitvdmVyIHRpbWUsIHNvIGRvbid0IGFzc3VtZSBhbnkgc2FtcGxlIHN0YXJ0cyBhdCBhbnkgcGFydGljdWxhciBwbGFjZS4KKworaHR0cDovL3d3dy5hdG1lbC5jb20vZHluL3Jlc291cmNlcy9wcm9kX2RvY3VtZW50cy9kb2MyODE3LnBkZgorVGhpcyBkYXRhIHNoZWV0IChnb29nbGUgc2VhcmNoKSBzZWVtcyB0byBoYXZlIGEgbG92ZWx5IGRlc2NyaXB0aW9uIG9mIHRoZQorUkM1IGJhc2ljcworCitodHRwOi8vd3d3Lm5lbnlhLmJlL2Jlb3IvZWxlY3Ryb25pY3MvcmM1Lmh0bSAgYW5kIG1vcmUgZGF0YQorCitodHRwOi8vd3d3LmVlLndhc2hpbmd0b24uZWR1L2NpcmN1aXRfYXJjaGl2ZS90ZXh0L2lyX2RlY29kZS50eHQKK2FuZCBldmVuIGEgcmVmZXJlbmNlIHRvIGhvdyB0byBkZWNvZGUgYSBiaS1waGFzZSBkYXRhIHN0cmVhbS4KKworaHR0cDovL3d3dy54czRhbGwubmwvfnNicC9rbm93bGVkZ2UvaXIvcmM1Lmh0bQorc3RpbGwgbW9yZSBpbmZvCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvZXh0cmFjdF94YzMwMjgucGwgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2V4dHJhY3RfeGMzMDI4LnBsCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQ3ODc3ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2V4dHJhY3RfeGMzMDI4LnBsCkBAIC0wLDAgKzEsMTcxNyBAQAorIyEvdXNyL2Jpbi9wZXJsCisKKyMgQ29weXJpZ2h0IChjKSBNYXVybyBDYXJ2YWxobyBDaGVoYWIgPG1jaGVoYWJAaW5mcmFkZWFkLm9yZz4KKyMgUmVsZWFzZWQgdW5kZXIgR1BMdjIKKyMKKyMgSW4gb3JkZXIgdG8gdXNlLCB5b3UgbmVlZCB0bzoKKyMJMSkgRG93bmxvYWQgdGhlIHdpbmRvd3MgZHJpdmVyIHdpdGggc29tZXRoaW5nIGxpa2U6CisjCVZlcnNpb24gMi40CisjCQl3Z2V0IGh0dHA6Ly93d3cudHdpbmhhbi5jb20vZmlsZXMvQVcvQkRBIFQvMjAwODAzMDNfVjEuMC42LjcuemlwCisjCQlvciB3Z2V0IGh0dHA6Ly93d3cuc3RlZmFucmluZ2VsLmRlL3B1Yi8yMDA4MDMwM19WMS4wLjYuNy56aXAKKyMJVmVyc2lvbiAyLjcKKyMJCXdnZXQgaHR0cDovL3d3dy5zdGV2ZW50b3RoLm5ldC9saW51eC94YzUwMDAvSFZSLTEyeDAtMTR4MC0xN3gwXzFfMjVfMjUyNzFfV0hRTC56aXAKKyMJMikgRXh0cmFjdCB0aGUgZmlsZXMgZnJvbSB0aGUgemlwIGludG8gdGhlIGN1cnJlbnQgZGlyOgorIwkJdW56aXAgLWogMjAwODAzMDNfVjEuMC42LjcuemlwIDIwMDgwMzAzX3YxLjAuNi43L1VEWFRUTTYwMDAuc3lzCisjCQl1bnppcCAtaiBIVlItMTJ4MC0xNHgwLTE3eDBfMV8yNV8yNTI3MV9XSFFMLnppcCBEcml2ZXI4NS9oY3c4NWJkYS5zeXMKKyMJMykgcnVuIHRoZSBzY3JpcHQ6CisjCQkuL2V4dHJhY3RfeGMzMDI4LnBsCisjCTQpIGNvcHkgdGhlIGdlbmVyYXRlZCBmaWxlczoKKyMJCWNwIHhjMzAyOC12MjQuZncgL2xpYi9maXJtd2FyZQorIwkJY3AgeGMzMDI4LXYyNy5mdyAvbGliL2Zpcm13YXJlCisKKyN1c2Ugc3RyaWN0OwordXNlIElPOjpIYW5kbGU7CisKK215ICRkZWJ1Zz0wOworCitzdWIgdmVyaWZ5ICgkJCkKK3sKKwlteSAoJGZpbGVuYW1lLCAkaGFzaCkgPSBAXzsKKwlteSAoJHRlc3RoYXNoKTsKKworCWlmIChzeXN0ZW0oIndoaWNoIG1kNXN1bSA+IC9kZXYvbnVsbCAyPiYxIikpIHsKKwkJZGllICJUaGlzIGZpcm13YXJlIHJlcXVpcmVzIHRoZSBtZDVzdW0gY29tbWFuZCAtIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvY29yZXV0aWxzL1xuIjsKKwl9CisKKwlvcGVuKENNRCwgIm1kNXN1bSAiLiRmaWxlbmFtZS4ifCIpOworCSR0ZXN0aGFzaCA9IDxDTUQ+OworCSR0ZXN0aGFzaCA9fiAvKFthLXpBLVowLTldKikvOworCSR0ZXN0aGFzaCA9ICQxOworCWNsb3NlIENNRDsKKwkJZGllICJIYXNoIG9mIGV4dHJhY3RlZCBmaWxlIGRvZXMgbm90IG1hdGNoIChmb3VuZCAkdGVzdGhhc2gsIGV4cGVjdGVkICRoYXNoIVxuIiBpZiAoJHRlc3RoYXNoIG5lICRoYXNoKTsKK30KKworc3ViIGdldF9odW5rICgkJCkKK3sKKwlteSAoJG9mZnNldCwgJGxlbmd0aCkgPSBAXzsKKwlteSAoJGNodW5rbGVuZ3RoLCAkYnVmLCAkcmNvdW50LCAkb3V0KTsKKworCXN5c3NlZWsoSU5GSUxFLCAkb2Zmc2V0LCBTRUVLX1NFVCk7CisJd2hpbGUgKCRsZW5ndGggPiAwKSB7CisJIyBDYWxjIGNodW5rIHNpemUKKwkJJGNodW5rbGVuZ3RoID0gMjA0ODsKKwkJJGNodW5rbGVuZ3RoID0gJGxlbmd0aCBpZiAoJGNodW5rbGVuZ3RoID4gJGxlbmd0aCk7CisKKwkJJHJjb3VudCA9IHN5c3JlYWQoSU5GSUxFLCAkYnVmLCAkY2h1bmtsZW5ndGgpOworCQlkaWUgIlJhbiBvdXQgb2YgZGF0YVxuIiBpZiAoJHJjb3VudCAhPSAkY2h1bmtsZW5ndGgpOworCQkkb3V0IC49ICRidWY7CisJCSRsZW5ndGggLT0gJHJjb3VudDsKKwl9CisJcmV0dXJuICRvdXQ7Cit9CisKK3N1YiB3cml0ZV9sZTE2KCQpCit7CisJbXkgJHZhbCA9IHNoaWZ0OworCW15ICRtc2IgPSAoJHZhbCA+PiA4KSAmMHhmZjsKKwlteSAkbHNiID0gJHZhbCAmIDB4ZmY7CisKKwlzeXN3cml0ZShPVVRGSUxFLCBjaHIoJGxzYikuY2hyKCRtc2IpKTsKK30KKworc3ViIHdyaXRlX2xlMzIoJCkKK3sKKwlteSAkdmFsID0gc2hpZnQ7CisJbXkgJGwzID0gKCR2YWwgPj4gMjQpICYgMHhmZjsKKwlteSAkbDIgPSAoJHZhbCA+PiAxNikgJiAweGZmOworCW15ICRsMSA9ICgkdmFsID4+IDgpICAmIDB4ZmY7CisJbXkgJGwwID0gJHZhbCAgICAgICAgICYgMHhmZjsKKworCXN5c3dyaXRlKE9VVEZJTEUsIGNocigkbDApLmNocigkbDEpLmNocigkbDIpLmNocigkbDMpKTsKK30KKworc3ViIHdyaXRlX2xlNjQoJCQpCit7CisJbXkgJG1zYl92YWwgPSBzaGlmdDsKKwlteSAkbHNiX3ZhbCA9IHNoaWZ0OworCW15ICRsNyA9ICgkbXNiX3ZhbCA+PiAyNCkgJiAweGZmOworCW15ICRsNiA9ICgkbXNiX3ZhbCA+PiAxNikgJiAweGZmOworCW15ICRsNSA9ICgkbXNiX3ZhbCA+PiA4KSAgJiAweGZmOworCW15ICRsNCA9ICRtc2JfdmFsICAgICAgICAgJiAweGZmOworCisJbXkgJGwzID0gKCRsc2JfdmFsID4+IDI0KSAmIDB4ZmY7CisJbXkgJGwyID0gKCRsc2JfdmFsID4+IDE2KSAmIDB4ZmY7CisJbXkgJGwxID0gKCRsc2JfdmFsID4+IDgpICAmIDB4ZmY7CisJbXkgJGwwID0gJGxzYl92YWwgICAgICAgICAmIDB4ZmY7CisKKwlzeXN3cml0ZShPVVRGSUxFLAorCQkgY2hyKCRsMCkuY2hyKCRsMSkuY2hyKCRsMikuY2hyKCRsMykuCisJCSBjaHIoJGw0KS5jaHIoJGw1KS5jaHIoJGw2KS5jaHIoJGw3KSk7Cit9CisKK3N1YiB3cml0ZV9odW5rKCQkKQoreworCW15ICgkb2Zmc2V0LCAkbGVuZ3RoKSA9IEBfOworCW15ICRvdXQgPSBnZXRfaHVuaygkb2Zmc2V0LCAkbGVuZ3RoKTsKKworCXByaW50ZiAiKGxlbiAlZCkgIiwkbGVuZ3RoIGlmICgkZGVidWcpOworCisJZm9yIChteSAkaT0wOyRpPCRsZW5ndGg7JGkrKykgeworCQlwcmludGYgIiUwMnggIixvcmQoc3Vic3RyKCRvdXQsJGksMSkpIGlmICgkZGVidWcpOworCX0KKwlwcmludGYgIlxuIiBpZiAoJGRlYnVnKTsKKworCXN5c3dyaXRlKE9VVEZJTEUsICRvdXQpOworfQorCitzdWIgd3JpdGVfaHVua19maXhfZW5kaWFuKCQkKQoreworCW15ICgkb2Zmc2V0LCAkbGVuZ3RoKSA9IEBfOworCW15ICRvdXQgPSBnZXRfaHVuaygkb2Zmc2V0LCAkbGVuZ3RoKTsKKworCXByaW50ZiAiKGxlbl9maXggJWQpICIsJGxlbmd0aCBpZiAoJGRlYnVnKTsKKworCWZvciAobXkgJGk9MDskaTwkbGVuZ3RoOyRpKyspIHsKKwkJcHJpbnRmICIlMDJ4ICIsb3JkKHN1YnN0cigkb3V0LCRpLDEpKSBpZiAoJGRlYnVnKTsKKwl9CisJcHJpbnRmICJcbiIgaWYgKCRkZWJ1Zyk7CisKKwlteSAkaT0wOworCXdoaWxlICgkaTwkbGVuZ3RoKSB7CisJCW15ICRzaXplID0gb3JkKHN1YnN0cigkb3V0LCRpLDEpKSoyNTYrb3JkKHN1YnN0cigkb3V0LCRpKzEsMSkpOworCQlzeXN3cml0ZShPVVRGSUxFLCBzdWJzdHIoJG91dCwkaSsxLDEpKTsKKwkJc3lzd3JpdGUoT1VURklMRSwgc3Vic3RyKCRvdXQsJGksMSkpOworCQkkaSs9MjsKKwkJaWYgKCRzaXplPjAgJiYgJHNpemUgPDB4ODAwMCkgeworCQkJZm9yIChteSAkaj0wOyRqPCRzaXplOyRqKyspIHsKKwkJCQlzeXN3cml0ZShPVVRGSUxFLCBzdWJzdHIoJG91dCwkaiskaSwxKSk7CisJCQl9CisJCQkkaSs9JHNpemU7CisJCX0KKwl9Cit9CisKK3N1YiBtYWluX2Zpcm13YXJlXzI0KCQkJCQpCit7CisJbXkgJG91dDsKKwlteSAkaj0wOworCW15ICRvdXRmaWxlID0gc2hpZnQ7CisJbXkgJG5hbWUgICAgPSBzaGlmdDsKKwlteSAkdmVyc2lvbiA9IHNoaWZ0OworCW15ICRucl9kZXNjID0gc2hpZnQ7CisKKwlmb3IgKCRqID0gbGVuZ3RoKCRuYW1lKTsgJGogPDMyOyAkaisrKSB7CisJCSRuYW1lID0gJG5hbWUuY2hyKDApOworCX0KKworCW9wZW4gT1VURklMRSwgIj4kb3V0ZmlsZSI7CisJc3lzd3JpdGUoT1VURklMRSwgJG5hbWUpOworCXdyaXRlX2xlMTYoJHZlcnNpb24pOworCXdyaXRlX2xlMTYoJG5yX2Rlc2MpOworCisJIworCSMgRmlybXdhcmUgMCwgdHlwZTogQkFTRSBGVyAgIEY4TUhaICgweDAwMDAwMDAzKSwgaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogNjYzNQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDAwMyk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMzIoNjYzNSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDI1Nzc1MiwgNjYzNSk7CisKKwkjCisJIyBGaXJtd2FyZSAxLCB0eXBlOiBCQVNFIEZXICAgRjhNSFogTVRTICgweDAwMDAwMDA3KSwgaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogNjYzNQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDAwNyk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMzIoNjYzNSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDI2NDM5MiwgNjYzNSk7CisKKwkjCisJIyBGaXJtd2FyZSAyLCB0eXBlOiBCQVNFIEZXICAgRk0gKDB4MDAwMDA0MDEpLCBpZDogKDAwMDAwMDAwMDAwMDAwMDApLCBzaXplOiA2NTI1CisJIworCisJd3JpdGVfbGUzMigweDAwMDAwNDAxKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUzMig2NTI1KTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oMjcxMDQwLCA2NTI1KTsKKworCSMKKwkjIEZpcm13YXJlIDMsIHR5cGU6IEJBU0UgRlcgICBGTSBJTlBVVDEgKDB4MDAwMDBjMDEpLCBpZDogKDAwMDAwMDAwMDAwMDAwMDApLCBzaXplOiA2NTM5CisJIworCisJd3JpdGVfbGUzMigweDAwMDAwYzAxKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUzMig2NTM5KTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oMjc3NTY4LCA2NTM5KTsKKworCSMKKwkjIEZpcm13YXJlIDQsIHR5cGU6IEJBU0UgRlcgICAoMHgwMDAwMDAwMSksIGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDY2MzMKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDEpOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDY2MzMpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbigyODQxMjAsIDY2MzMpOworCisJIworCSMgRmlybXdhcmUgNSwgdHlwZTogQkFTRSBGVyAgIE1UUyAoMHgwMDAwMDAwNSksIGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDY2MTcKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDUpOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDY2MTcpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbigyOTA3NjAsIDY2MTcpOworCisJIworCSMgRmlybXdhcmUgNiwgdHlwZTogU1REIEZXICAgICgweDAwMDAwMDAwKSwgaWQ6IFBBTC9CRyBBMi9BICgwMDAwMDAwMTAwMDAwMDA3KSwgc2l6ZTogMTYxCisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDEsIDB4MDAwMDAwMDcpOwkjIElECisJd3JpdGVfbGUzMigxNjEpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbigyOTczODQsIDE2MSk7CisKKwkjCisJIyBGaXJtd2FyZSA3LCB0eXBlOiBTVEQgRlcgICAgTVRTICgweDAwMDAwMDA0KSwgaWQ6IFBBTC9CRyBBMi9BICgwMDAwMDAwMTAwMDAwMDA3KSwgc2l6ZTogMTY5CisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDA0KTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDEsIDB4MDAwMDAwMDcpOwkjIElECisJd3JpdGVfbGUzMigxNjkpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbigyOTc1NTIsIDE2OSk7CisKKwkjCisJIyBGaXJtd2FyZSA4LCB0eXBlOiBTVEQgRlcgICAgKDB4MDAwMDAwMDApLCBpZDogUEFML0JHIEEyL0IgKDAwMDAwMDAyMDAwMDAwMDcpLCBzaXplOiAxNjEKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMiwgMHgwMDAwMDAwNyk7CSMgSUQKKwl3cml0ZV9sZTMyKDE2MSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDI5NzcyOCwgMTYxKTsKKworCSMKKwkjIEZpcm13YXJlIDksIHR5cGU6IFNURCBGVyAgICBNVFMgKDB4MDAwMDAwMDQpLCBpZDogUEFML0JHIEEyL0IgKDAwMDAwMDAyMDAwMDAwMDcpLCBzaXplOiAxNjkKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDQpOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMiwgMHgwMDAwMDAwNyk7CSMgSUQKKwl3cml0ZV9sZTMyKDE2OSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDI5Nzg5NiwgMTY5KTsKKworCSMKKwkjIEZpcm13YXJlIDEwLCB0eXBlOiBTVEQgRlcgICAgKDB4MDAwMDAwMDApLCBpZDogUEFML0JHIE5JQ0FNL0EgKDAwMDAwMDA0MDAwMDAwMDcpLCBzaXplOiAxNjEKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwNCwgMHgwMDAwMDAwNyk7CSMgSUQKKwl3cml0ZV9sZTMyKDE2MSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDI5ODA3MiwgMTYxKTsKKworCSMKKwkjIEZpcm13YXJlIDExLCB0eXBlOiBTVEQgRlcgICAgTVRTICgweDAwMDAwMDA0KSwgaWQ6IFBBTC9CRyBOSUNBTS9BICgwMDAwMDAwNDAwMDAwMDA3KSwgc2l6ZTogMTY5CisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDA0KTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDQsIDB4MDAwMDAwMDcpOwkjIElECisJd3JpdGVfbGUzMigxNjkpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbigyOTgyNDAsIDE2OSk7CisKKwkjCisJIyBGaXJtd2FyZSAxMiwgdHlwZTogU1REIEZXICAgICgweDAwMDAwMDAwKSwgaWQ6IFBBTC9CRyBOSUNBTS9CICgwMDAwMDAwODAwMDAwMDA3KSwgc2l6ZTogMTYxCisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDgsIDB4MDAwMDAwMDcpOwkjIElECisJd3JpdGVfbGUzMigxNjEpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbigyOTg0MTYsIDE2MSk7CisKKwkjCisJIyBGaXJtd2FyZSAxMywgdHlwZTogU1REIEZXICAgIE1UUyAoMHgwMDAwMDAwNCksIGlkOiBQQUwvQkcgTklDQU0vQiAoMDAwMDAwMDgwMDAwMDAwNyksIHNpemU6IDE2OQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDAwNCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDA4LCAweDAwMDAwMDA3KTsJIyBJRAorCXdyaXRlX2xlMzIoMTY5KTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oMjk4NTg0LCAxNjkpOworCisJIworCSMgRmlybXdhcmUgMTQsIHR5cGU6IFNURCBGVyAgICAoMHgwMDAwMDAwMCksIGlkOiBQQUwvREsgQTIgKDAwMDAwMDAzMDAwMDAwZTApLCBzaXplOiAxNjEKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMywgMHgwMDAwMDBlMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE2MSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDI5ODc2MCwgMTYxKTsKKworCSMKKwkjIEZpcm13YXJlIDE1LCB0eXBlOiBTVEQgRlcgICAgTVRTICgweDAwMDAwMDA0KSwgaWQ6IFBBTC9ESyBBMiAoMDAwMDAwMDMwMDAwMDBlMCksIHNpemU6IDE2OQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDAwNCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAzLCAweDAwMDAwMGUwKTsJIyBJRAorCXdyaXRlX2xlMzIoMTY5KTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oMjk4OTI4LCAxNjkpOworCisJIworCSMgRmlybXdhcmUgMTYsIHR5cGU6IFNURCBGVyAgICAoMHgwMDAwMDAwMCksIGlkOiBQQUwvREsgTklDQU0gKDAwMDAwMDBjMDAwMDAwZTApLCBzaXplOiAxNjEKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwYywgMHgwMDAwMDBlMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE2MSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDI5OTEwNCwgMTYxKTsKKworCSMKKwkjIEZpcm13YXJlIDE3LCB0eXBlOiBTVEQgRlcgICAgTVRTICgweDAwMDAwMDA0KSwgaWQ6IFBBTC9ESyBOSUNBTSAoMDAwMDAwMGMwMDAwMDBlMCksIHNpemU6IDE2OQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDAwNCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDBjLCAweDAwMDAwMGUwKTsJIyBJRAorCXdyaXRlX2xlMzIoMTY5KTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oMjk5MjcyLCAxNjkpOworCisJIworCSMgRmlybXdhcmUgMTgsIHR5cGU6IFNURCBGVyAgICAoMHgwMDAwMDAwMCksIGlkOiBTRUNBTS9LMSAoMDAwMDAwMDAwMDIwMDAwMCksIHNpemU6IDE2MQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMjAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMzIoMTYxKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oMjk5NDQ4LCAxNjEpOworCisJIworCSMgRmlybXdhcmUgMTksIHR5cGU6IFNURCBGVyAgICBNVFMgKDB4MDAwMDAwMDQpLCBpZDogU0VDQU0vSzEgKDAwMDAwMDAwMDAyMDAwMDApLCBzaXplOiAxNjkKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDQpOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDIwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE2OSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDI5OTYxNiwgMTY5KTsKKworCSMKKwkjIEZpcm13YXJlIDIwLCB0eXBlOiBTVEQgRlcgICAgKDB4MDAwMDAwMDApLCBpZDogU0VDQU0vSzMgKDAwMDAwMDAwMDQwMDAwMDApLCBzaXplOiAxNjEKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwNDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE2MSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDI5OTc5MiwgMTYxKTsKKworCSMKKwkjIEZpcm13YXJlIDIxLCB0eXBlOiBTVEQgRlcgICAgTVRTICgweDAwMDAwMDA0KSwgaWQ6IFNFQ0FNL0szICgwMDAwMDAwMDA0MDAwMDAwKSwgc2l6ZTogMTY5CisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDA0KTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDQwMDAwMDApOwkjIElECisJd3JpdGVfbGUzMigxNjkpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbigyOTk5NjAsIDE2OSk7CisKKwkjCisJIyBGaXJtd2FyZSAyMiwgdHlwZTogU1REIEZXICAgIEQyNjMzIERUVjYgQVRTQyAoMHgwMDAxMDAzMCksIGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDE0OQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAxMDAzMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMzIoMTQ5KTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oMzAwMTM2LCAxNDkpOworCisJIworCSMgRmlybXdhcmUgMjMsIHR5cGU6IFNURCBGVyAgICBEMjYyMCBEVFY2IFFBTSAoMHgwMDAwMDA2OCksIGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDE0OQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDA2OCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMzIoMTQ5KTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oMzAwMjk2LCAxNDkpOworCisJIworCSMgRmlybXdhcmUgMjQsIHR5cGU6IFNURCBGVyAgICBEMjYzMyBEVFY2IFFBTSAoMHgwMDAwMDA3MCksIGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDE0OQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDA3MCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMzIoMTQ5KTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oMzAwNDQ4LCAxNDkpOworCisJIworCSMgRmlybXdhcmUgMjUsIHR5cGU6IFNURCBGVyAgICBEMjYyMCBEVFY3ICgweDAwMDAwMDg4KSwgaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogMTQ5CisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDg4KTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUzMigxNDkpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbigzMDA2MDgsIDE0OSk7CisKKwkjCisJIyBGaXJtd2FyZSAyNiwgdHlwZTogU1REIEZXICAgIEQyNjMzIERUVjcgKDB4MDAwMDAwOTApLCBpZDogKDAwMDAwMDAwMDAwMDAwMDApLCBzaXplOiAxNDkKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwOTApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE0OSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDMwMDc2MCwgMTQ5KTsKKworCSMKKwkjIEZpcm13YXJlIDI3LCB0eXBlOiBTVEQgRlcgICAgRDI2MjAgRFRWNzggKDB4MDAwMDAxMDgpLCBpZDogKDAwMDAwMDAwMDAwMDAwMDApLCBzaXplOiAxNDkKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAxMDgpOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE0OSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDMwMDkyMCwgMTQ5KTsKKworCSMKKwkjIEZpcm13YXJlIDI4LCB0eXBlOiBTVEQgRlcgICAgRDI2MzMgRFRWNzggKDB4MDAwMDAxMTApLCBpZDogKDAwMDAwMDAwMDAwMDAwMDApLCBzaXplOiAxNDkKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAxMTApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE0OSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDMwMTA3MiwgMTQ5KTsKKworCSMKKwkjIEZpcm13YXJlIDI5LCB0eXBlOiBTVEQgRlcgICAgRDI2MjAgRFRWOCAoMHgwMDAwMDIwOCksIGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDE0OQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDIwOCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMzIoMTQ5KTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oMzAxMjMyLCAxNDkpOworCisJIworCSMgRmlybXdhcmUgMzAsIHR5cGU6IFNURCBGVyAgICBEMjYzMyBEVFY4ICgweDAwMDAwMjEwKSwgaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogMTQ5CisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMjEwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUzMigxNDkpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbigzMDEzODQsIDE0OSk7CisKKwkjCisJIyBGaXJtd2FyZSAzMSwgdHlwZTogU1REIEZXICAgIEZNICgweDAwMDAwNDAwKSwgaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogMTM1CisJIworCisJd3JpdGVfbGUzMigweDAwMDAwNDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUzMigxMzUpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbigzMDE1NTQsIDEzNSk7CisKKwkjCisJIyBGaXJtd2FyZSAzMiwgdHlwZTogU1REIEZXICAgICgweDAwMDAwMDAwKSwgaWQ6IFBBTC9JICgwMDAwMDAwMDAwMDAwMDEwKSwgc2l6ZTogMTYxCisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMTApOwkjIElECisJd3JpdGVfbGUzMigxNjEpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbigzMDE2ODgsIDE2MSk7CisKKwkjCisJIyBGaXJtd2FyZSAzMywgdHlwZTogU1REIEZXICAgIE1UUyAoMHgwMDAwMDAwNCksIGlkOiBQQUwvSSAoMDAwMDAwMDAwMDAwMDAxMCksIHNpemU6IDE2OQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDAwNCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDEwKTsJIyBJRAorCXdyaXRlX2xlMzIoMTY5KTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oMzAxODU2LCAxNjkpOworCisJIworCSMgRmlybXdhcmUgMzQsIHR5cGU6IFNURCBGVyAgICAoMHgwMDAwMDAwMCksIGlkOiBTRUNBTS9MIEFNICgwMDAwMDAxMDAwNDAwMDAwKSwgc2l6ZTogMTY5CisJIworCisJIworCSMgRmlybXdhcmUgMzUsIHR5cGU6IFNURCBGVyAgICAoMHgwMDAwMDAwMCksIGlkOiBTRUNBTS9MIE5JQ0FNICgwMDAwMDAwYzAwNDAwMDAwKSwgc2l6ZTogMTYxCisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMGMsIDB4MDA0MDAwMDApOwkjIElECisJd3JpdGVfbGUzMigxNjEpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbigzMDIwMzIsIDE2MSk7CisKKwkjCisJIyBGaXJtd2FyZSAzNiwgdHlwZTogU1REIEZXICAgICgweDAwMDAwMDAwKSwgaWQ6IFNFQ0FNL0xjICgwMDAwMDAwMDAwODAwMDAwKSwgc2l6ZTogMTYxCisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDA4MDAwMDApOwkjIElECisJd3JpdGVfbGUzMigxNjEpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbigzMDIyMDAsIDE2MSk7CisKKwkjCisJIyBGaXJtd2FyZSAzNywgdHlwZTogU1REIEZXICAgICgweDAwMDAwMDAwKSwgaWQ6IE5UU0MvTSBLciAoMDAwMDAwMDAwMDAwODAwMCksIHNpemU6IDE2MQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDA4MDAwKTsJIyBJRAorCXdyaXRlX2xlMzIoMTYxKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oMzAyMzY4LCAxNjEpOworCisJIworCSMgRmlybXdhcmUgMzgsIHR5cGU6IFNURCBGVyAgICBMQ0QgKDB4MDAwMDEwMDApLCBpZDogTlRTQy9NIEtyICgwMDAwMDAwMDAwMDA4MDAwKSwgc2l6ZTogMTYxCisJIworCisJd3JpdGVfbGUzMigweDAwMDAxMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDgwMDApOwkjIElECisJd3JpdGVfbGUzMigxNjEpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbigzMDI1MzYsIDE2MSk7CisKKwkjCisJIyBGaXJtd2FyZSAzOSwgdHlwZTogU1REIEZXICAgIExDRCBOT0dEICgweDAwMDAzMDAwKSwgaWQ6IE5UU0MvTSBLciAoMDAwMDAwMDAwMDAwODAwMCksIHNpemU6IDE2MQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMzAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDA4MDAwKTsJIyBJRAorCXdyaXRlX2xlMzIoMTYxKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oMzAyNzA0LCAxNjEpOworCisJIworCSMgRmlybXdhcmUgNDAsIHR5cGU6IFNURCBGVyAgICBNVFMgKDB4MDAwMDAwMDQpLCBpZDogTlRTQy9NIEtyICgwMDAwMDAwMDAwMDA4MDAwKSwgc2l6ZTogMTY5CisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDA0KTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDgwMDApOwkjIElECisJd3JpdGVfbGUzMigxNjkpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbigzMDI4NzIsIDE2OSk7CisKKwkjCisJIyBGaXJtd2FyZSA0MSwgdHlwZTogU1REIEZXICAgICgweDAwMDAwMDAwKSwgaWQ6IE5UU0MgUEFML00gUEFML04gKDAwMDAwMDAwMDAwMGI3MDApLCBzaXplOiAxNjEKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwYjcwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE2MSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDMwMzA0OCwgMTYxKTsKKworCSMKKwkjIEZpcm13YXJlIDQyLCB0eXBlOiBTVEQgRlcgICAgTENEICgweDAwMDAxMDAwKSwgaWQ6IE5UU0MgUEFML00gUEFML04gKDAwMDAwMDAwMDAwMGI3MDApLCBzaXplOiAxNjEKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDEwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwYjcwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE2MSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDMwMzIxNiwgMTYxKTsKKworCSMKKwkjIEZpcm13YXJlIDQzLCB0eXBlOiBTVEQgRlcgICAgTENEIE5PR0QgKDB4MDAwMDMwMDApLCBpZDogTlRTQyBQQUwvTSBQQUwvTiAoMDAwMDAwMDAwMDAwYjcwMCksIHNpemU6IDE2MQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMzAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDBiNzAwKTsJIyBJRAorCXdyaXRlX2xlMzIoMTYxKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oMzAzMzg0LCAxNjEpOworCisJIworCSMgRmlybXdhcmUgNDQsIHR5cGU6IFNURCBGVyAgICAoMHgwMDAwMDAwMCksIGlkOiBOVFNDL00gSnAgKDAwMDAwMDAwMDAwMDIwMDApLCBzaXplOiAxNjEKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMjAwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE2MSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDMwMzU1MiwgMTYxKTsKKworCSMKKwkjIEZpcm13YXJlIDQ1LCB0eXBlOiBTVEQgRlcgICAgTVRTICgweDAwMDAwMDA0KSwgaWQ6IE5UU0MgUEFML00gUEFML04gKDAwMDAwMDAwMDAwMGI3MDApLCBzaXplOiAxNjkKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDQpOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwYjcwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE2OSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDMwMzcyMCwgMTY5KTsKKworCSMKKwkjIEZpcm13YXJlIDQ2LCB0eXBlOiBTVEQgRlcgICAgTVRTIExDRCAoMHgwMDAwMTAwNCksIGlkOiBOVFNDIFBBTC9NIFBBTC9OICgwMDAwMDAwMDAwMDBiNzAwKSwgc2l6ZTogMTY5CisJIworCisJd3JpdGVfbGUzMigweDAwMDAxMDA0KTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMGI3MDApOwkjIElECisJd3JpdGVfbGUzMigxNjkpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbigzMDM4OTYsIDE2OSk7CisKKwkjCisJIyBGaXJtd2FyZSA0NywgdHlwZTogU1REIEZXICAgIE1UUyBMQ0QgTk9HRCAoMHgwMDAwMzAwNCksIGlkOiBOVFNDIFBBTC9NIFBBTC9OICgwMDAwMDAwMDAwMDBiNzAwKSwgc2l6ZTogMTY5CisJIworCisJd3JpdGVfbGUzMigweDAwMDAzMDA0KTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMGI3MDApOwkjIElECisJd3JpdGVfbGUzMigxNjkpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbigzMDQwNzIsIDE2OSk7CisKKwkjCisJIyBGaXJtd2FyZSA0OCwgdHlwZTogU0NPREUgRlcgIEhBUyBJRiAoMHg2MDAwMDAwMCksIElGID0gMy4yOCBNSHogaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUxNigzMjgwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoMzA5MDQ4LCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNDksIHR5cGU6IFNDT0RFIEZXICBIQVMgSUYgKDB4NjAwMDAwMDApLCBJRiA9IDMuMzAgTUh6IGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDE5MgorCSMKKworIwl3cml0ZV9sZTMyKDB4NjAwMDAwMDApOwkJCSMgVHlwZQorIwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisjCXdyaXRlX2xlMTYoMzMwMCk7CQkJIyBJRgorIwl3cml0ZV9sZTMyKDE5Mik7CQkJIyBTaXplCisjCXdyaXRlX2h1bmsoMzA0NDQwLCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNTAsIHR5cGU6IFNDT0RFIEZXICBIQVMgSUYgKDB4NjAwMDAwMDApLCBJRiA9IDMuNDQgTUh6IGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDE5MgorCSMKKworCXdyaXRlX2xlMzIoMHg2MDAwMDAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMTYoMzQ0MCk7CQkJIyBJRgorCXdyaXRlX2xlMzIoMTkyKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rKDMwOTQzMiwgMTkyKTsKKworCSMKKwkjIEZpcm13YXJlIDUxLCB0eXBlOiBTQ09ERSBGVyAgSEFTIElGICgweDYwMDAwMDAwKSwgSUYgPSAzLjQ2IE1IeiBpZDogKDAwMDAwMDAwMDAwMDAwMDApLCBzaXplOiAxOTIKKwkjCisKKwl3cml0ZV9sZTMyKDB4NjAwMDAwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTE2KDM0NjApOwkJCSMgSUYKKwl3cml0ZV9sZTMyKDE5Mik7CQkJIyBTaXplCisJd3JpdGVfaHVuaygzMDk2MjQsIDE5Mik7CisKKwkjCisJIyBGaXJtd2FyZSA1MiwgdHlwZTogU0NPREUgRlcgIERUVjYgQVRTQyBPUkVOMzYgSEFTIElGICgweDYwMjEwMDIwKSwgSUYgPSAzLjgwIE1IeiBpZDogKDAwMDAwMDAwMDAwMDAwMDApLCBzaXplOiAxOTIKKwkjCisKKwl3cml0ZV9sZTMyKDB4NjAyMTAwMjApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTE2KDM4MDApOwkJCSMgSUYKKwl3cml0ZV9sZTMyKDE5Mik7CQkJIyBTaXplCisJd3JpdGVfaHVuaygzMDY5MzYsIDE5Mik7CisKKwkjCisJIyBGaXJtd2FyZSA1MywgdHlwZTogU0NPREUgRlcgIEhBUyBJRiAoMHg2MDAwMDAwMCksIElGID0gNC4wMCBNSHogaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUxNig0MDAwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoMzA5MjQwLCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNTQsIHR5cGU6IFNDT0RFIEZXICBEVFY2IEFUU0MgVE9ZT1RBMzg4IEhBUyBJRiAoMHg2MDQxMDAyMCksIElGID0gNC4wOCBNSHogaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwNDEwMDIwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUxNig0MDgwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoMzA3MTI4LCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNTUsIHR5cGU6IFNDT0RFIEZXICBIQVMgSUYgKDB4NjAwMDAwMDApLCBJRiA9IDQuMjAgTUh6IGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDE5MgorCSMKKworCXdyaXRlX2xlMzIoMHg2MDAwMDAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMTYoNDIwMCk7CQkJIyBJRgorCXdyaXRlX2xlMzIoMTkyKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rKDMwODg1NiwgMTkyKTsKKworCSMKKwkjIEZpcm13YXJlIDU2LCB0eXBlOiBTQ09ERSBGVyAgTU9OTyBIQVMgSUYgKDB4NjAwMDgwMDApLCBJRiA9IDQuMzIgTUh6IGlkOiBOVFNDL00gS3IgKDAwMDAwMDAwMDAwMDgwMDApLCBzaXplOiAxOTIKKwkjCisKKwl3cml0ZV9sZTMyKDB4NjAwMDgwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwODAwMCk7CSMgSUQKKwl3cml0ZV9sZTE2KDQzMjApOwkJCSMgSUYKKwl3cml0ZV9sZTMyKDE5Mik7CQkJIyBTaXplCisJd3JpdGVfaHVuaygzMDUyMDgsIDE5Mik7CisKKwkjCisJIyBGaXJtd2FyZSA1NywgdHlwZTogU0NPREUgRlcgIEhBUyBJRiAoMHg2MDAwMDAwMCksIElGID0gNC40NSBNSHogaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUxNig0NDUwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoMzA5ODE2LCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNTgsIHR5cGU6IFNDT0RFIEZXICBNVFMgTENEIE5PR0QgTU9OTyBJRiBIQVMgSUYgKDB4NjAwMmIwMDQpLCBJRiA9IDQuNTAgTUh6IGlkOiBOVFNDIFBBTC9NIFBBTC9OICgwMDAwMDAwMDAwMDBiNzAwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMDJiMDA0KTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMGI3MDApOwkjIElECisJd3JpdGVfbGUxNig0NTAwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoMzA0ODI0LCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNTksIHR5cGU6IFNDT0RFIEZXICBMQ0QgTk9HRCBJRiBIQVMgSUYgKDB4NjAwMjMwMDApLCBJRiA9IDQuNjAgTUh6IGlkOiBOVFNDL00gS3IgKDAwMDAwMDAwMDAwMDgwMDApLCBzaXplOiAxOTIKKwkjCisKKwl3cml0ZV9sZTMyKDB4NjAwMjMwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwODAwMCk7CSMgSUQKKwl3cml0ZV9sZTE2KDQ2MDApOwkJCSMgSUYKKwl3cml0ZV9sZTMyKDE5Mik7CQkJIyBTaXplCisJd3JpdGVfaHVuaygzMDUwMTYsIDE5Mik7CisKKwkjCisJIyBGaXJtd2FyZSA2MCwgdHlwZTogU0NPREUgRlcgIERUVjYgUUFNIERUVjcgRFRWNzggRFRWOCBaQVJMSU5LNDU2IEhBUyBJRiAoMHg2MjAwMDNlMCksIElGID0gNC43NiBNSHogaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYyMDAwM2UwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUxNig0NzYwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoMzA0NDQwLCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNjEsIHR5cGU6IFNDT0RFIEZXICBIQVMgSUYgKDB4NjAwMDAwMDApLCBJRiA9IDQuOTQgTUh6IGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDE5MgorCSMKKworCXdyaXRlX2xlMzIoMHg2MDAwMDAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMTYoNDk0MCk7CQkJIyBJRgorCXdyaXRlX2xlMzIoMTkyKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rKDMwODY2NCwgMTkyKTsKKworCSMKKwkjIEZpcm13YXJlIDYyLCB0eXBlOiBTQ09ERSBGVyAgSEFTIElGICgweDYwMDAwMDAwKSwgSUYgPSA1LjI2IE1IeiBpZDogKDAwMDAwMDAwMDAwMDAwMDApLCBzaXplOiAxOTIKKwkjCisKKwl3cml0ZV9sZTMyKDB4NjAwMDAwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTE2KDUyNjApOwkJCSMgSUYKKwl3cml0ZV9sZTMyKDE5Mik7CQkJIyBTaXplCisJd3JpdGVfaHVuaygzMDc3MDQsIDE5Mik7CisKKwkjCisJIyBGaXJtd2FyZSA2MywgdHlwZTogU0NPREUgRlcgIE1PTk8gSEFTIElGICgweDYwMDA4MDAwKSwgSUYgPSA1LjMyIE1IeiBpZDogUEFML0JHIEEyIE5JQ0FNICgwMDAwMDAwZjAwMDAwMDA3KSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMDA4MDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMGYsIDB4MDAwMDAwMDcpOwkjIElECisJd3JpdGVfbGUxNig1MzIwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoMzA3ODk2LCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNjQsIHR5cGU6IFNDT0RFIEZXICBEVFY3IERUVjc4IERUVjggRElCQ09NNTIgQ0hJTkEgSEFTIElGICgweDY1MDAwMzgwKSwgSUYgPSA1LjQwIE1IeiBpZDogKDAwMDAwMDAwMDAwMDAwMDApLCBzaXplOiAxOTIKKwkjCisKKwl3cml0ZV9sZTMyKDB4NjUwMDAzODApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTE2KDU0MDApOwkJCSMgSUYKKwl3cml0ZV9sZTMyKDE5Mik7CQkJIyBTaXplCisJd3JpdGVfaHVuaygzMDQyNDgsIDE5Mik7CisKKwkjCisJIyBGaXJtd2FyZSA2NSwgdHlwZTogU0NPREUgRlcgIERUVjYgQVRTQyBPUkVONTM4IEhBUyBJRiAoMHg2MDExMDAyMCksIElGID0gNS41OCBNSHogaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMTEwMDIwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUxNig1NTgwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoMzA2NzQ0LCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNjYsIHR5cGU6IFNDT0RFIEZXICBIQVMgSUYgKDB4NjAwMDAwMDApLCBJRiA9IDUuNjQgTUh6IGlkOiBQQUwvQkcgQTIgKDAwMDAwMDAzMDAwMDAwMDcpLCBzaXplOiAxOTIKKwkjCisKKwl3cml0ZV9sZTMyKDB4NjAwMDAwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMywgMHgwMDAwMDAwNyk7CSMgSUQKKwl3cml0ZV9sZTE2KDU2NDApOwkJCSMgSUYKKwl3cml0ZV9sZTMyKDE5Mik7CQkJIyBTaXplCisJd3JpdGVfaHVuaygzMDU1OTIsIDE5Mik7CisKKwkjCisJIyBGaXJtd2FyZSA2NywgdHlwZTogU0NPREUgRlcgIEhBUyBJRiAoMHg2MDAwMDAwMCksIElGID0gNS43NCBNSHogaWQ6IFBBTC9CRyBOSUNBTSAoMDAwMDAwMGMwMDAwMDAwNyksIHNpemU6IDE5MgorCSMKKworCXdyaXRlX2xlMzIoMHg2MDAwMDAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDBjLCAweDAwMDAwMDA3KTsJIyBJRAorCXdyaXRlX2xlMTYoNTc0MCk7CQkJIyBJRgorCXdyaXRlX2xlMzIoMTkyKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rKDMwNTc4NCwgMTkyKTsKKworCSMKKwkjIEZpcm13YXJlIDY4LCB0eXBlOiBTQ09ERSBGVyAgSEFTIElGICgweDYwMDAwMDAwKSwgSUYgPSA1LjkwIE1IeiBpZDogKDAwMDAwMDAwMDAwMDAwMDApLCBzaXplOiAxOTIKKwkjCisKKwl3cml0ZV9sZTMyKDB4NjAwMDAwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTE2KDU5MDApOwkJCSMgSUYKKwl3cml0ZV9sZTMyKDE5Mik7CQkJIyBTaXplCisJd3JpdGVfaHVuaygzMDc1MTIsIDE5Mik7CisKKwkjCisJIyBGaXJtd2FyZSA2OSwgdHlwZTogU0NPREUgRlcgIE1PTk8gSEFTIElGICgweDYwMDA4MDAwKSwgSUYgPSA2LjAwIE1IeiBpZDogUEFML0RLIFBBTC9JIFNFQ0FNL0szIFNFQ0FNL0wgU0VDQU0vTGMgTklDQU0gKDAwMDAwMDBjMDRjMDAwZjApLCBzaXplOiAxOTIKKwkjCisKKwl3cml0ZV9sZTMyKDB4NjAwMDgwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwYywgMHgwNGMwMDBmMCk7CSMgSUQKKwl3cml0ZV9sZTE2KDYwMDApOwkJCSMgSUYKKwl3cml0ZV9sZTMyKDE5Mik7CQkJIyBTaXplCisJd3JpdGVfaHVuaygzMDU1NzYsIDE5Mik7CisKKwkjCisJIyBGaXJtd2FyZSA3MCwgdHlwZTogU0NPREUgRlcgIERUVjYgUUFNIEFUU0MgTEc2MCBGNk1IWiBIQVMgSUYgKDB4NjgwNTAwNjApLCBJRiA9IDYuMjAgTUh6IGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDE5MgorCSMKKworCXdyaXRlX2xlMzIoMHg2ODA1MDA2MCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMTYoNjIwMCk7CQkJIyBJRgorCXdyaXRlX2xlMzIoMTkyKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rKDMwNjU1MiwgMTkyKTsKKworCSMKKwkjIEZpcm13YXJlIDcxLCB0eXBlOiBTQ09ERSBGVyAgSEFTIElGICgweDYwMDAwMDAwKSwgSUYgPSA2LjI0IE1IeiBpZDogUEFML0kgKDAwMDAwMDAwMDAwMDAwMTApLCBzaXplOiAxOTIKKwkjCisKKwl3cml0ZV9sZTMyKDB4NjAwMDAwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAxMCk7CSMgSUQKKwl3cml0ZV9sZTE2KDYyNDApOwkJCSMgSUYKKwl3cml0ZV9sZTMyKDE5Mik7CQkJIyBTaXplCisJd3JpdGVfaHVuaygzMDU0MDAsIDE5Mik7CisKKwkjCisJIyBGaXJtd2FyZSA3MiwgdHlwZTogU0NPREUgRlcgIE1PTk8gSEFTIElGICgweDYwMDA4MDAwKSwgSUYgPSA2LjMyIE1IeiBpZDogU0VDQU0vSzEgKDAwMDAwMDAwMDAyMDAwMDApLCBzaXplOiAxOTIKKwkjCisKKwl3cml0ZV9sZTMyKDB4NjAwMDgwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDIwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTE2KDYzMjApOwkJCSMgSUYKKwl3cml0ZV9sZTMyKDE5Mik7CQkJIyBTaXplCisJd3JpdGVfaHVuaygzMDg0NzIsIDE5Mik7CisKKwkjCisJIyBGaXJtd2FyZSA3MywgdHlwZTogU0NPREUgRlcgIEhBUyBJRiAoMHg2MDAwMDAwMCksIElGID0gNi4zNCBNSHogaWQ6IFNFQ0FNL0sxICgwMDAwMDAwMDAwMjAwMDAwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAyMDAwMDApOwkjIElECisJd3JpdGVfbGUxNig2MzQwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoMzA2MzYwLCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNzQsIHR5cGU6IFNDT0RFIEZXICBNT05PIEhBUyBJRiAoMHg2MDAwODAwMCksIElGID0gNi41MCBNSHogaWQ6IFBBTC9ESyBTRUNBTS9LMyBTRUNBTS9MIE5JQ0FNICgwMDAwMDAwYzA0NDAwMGUwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMDA4MDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMGMsIDB4MDQ0MDAwZTApOwkjIElECisJd3JpdGVfbGUxNig2NTAwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoMzA4MjgwLCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNzUsIHR5cGU6IFNDT0RFIEZXICBEVFY2IEFUU0MgQVRJNjM4IEhBUyBJRiAoMHg2MDA5MDAyMCksIElGID0gNi41OCBNSHogaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMDkwMDIwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUxNig2NTgwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoMzA0NjMyLCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNzYsIHR5cGU6IFNDT0RFIEZXICBIQVMgSUYgKDB4NjAwMDAwMDApLCBJRiA9IDYuNjAgTUh6IGlkOiBQQUwvREsgQTIgKDAwMDAwMDAzMDAwMDAwZTApLCBzaXplOiAxOTIKKwkjCisKKwl3cml0ZV9sZTMyKDB4NjAwMDAwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMywgMHgwMDAwMDBlMCk7CSMgSUQKKwl3cml0ZV9sZTE2KDY2MDApOwkJCSMgSUYKKwl3cml0ZV9sZTMyKDE5Mik7CQkJIyBTaXplCisJd3JpdGVfaHVuaygzMDYxNjgsIDE5Mik7CisKKwkjCisJIyBGaXJtd2FyZSA3NywgdHlwZTogU0NPREUgRlcgIE1PTk8gSEFTIElGICgweDYwMDA4MDAwKSwgSUYgPSA2LjY4IE1IeiBpZDogUEFML0RLIEEyICgwMDAwMDAwMzAwMDAwMGUwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMDA4MDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDMsIDB4MDAwMDAwZTApOwkjIElECisJd3JpdGVfbGUxNig2NjgwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoMzA4MDg4LCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNzgsIHR5cGU6IFNDT0RFIEZXICBEVFY2IEFUU0MgVE9ZT1RBNzk0IEhBUyBJRiAoMHg2MDgxMDAyMCksIElGID0gOC4xNCBNSHogaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwODEwMDIwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUxNig4MTQwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoMzA3MzIwLCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNzksIHR5cGU6IFNDT0RFIEZXICBIQVMgSUYgKDB4NjAwMDAwMDApLCBJRiA9IDguMjAgTUh6IGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDE5MgorCSMKKworIwl3cml0ZV9sZTMyKDB4NjAwMDAwMDApOwkJCSMgVHlwZQorIwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisjCXdyaXRlX2xlMTYoODIwMCk7CQkJIyBJRgorIwl3cml0ZV9sZTMyKDE5Mik7CQkJIyBTaXplCisjCXdyaXRlX2h1bmsoMzA4MDg4LCAxOTIpOworfQorCitzdWIgbWFpbl9maXJtd2FyZV8yNygkJCQkKQoreworCW15ICRvdXQ7CisJbXkgJGo9MDsKKwlteSAkb3V0ZmlsZSA9IHNoaWZ0OworCW15ICRuYW1lICAgID0gc2hpZnQ7CisJbXkgJHZlcnNpb24gPSBzaGlmdDsKKwlteSAkbnJfZGVzYyA9IHNoaWZ0OworCisJZm9yICgkaiA9IGxlbmd0aCgkbmFtZSk7ICRqIDwzMjsgJGorKykgeworCQkkbmFtZSA9ICRuYW1lLmNocigwKTsKKwl9CisKKwlvcGVuIE9VVEZJTEUsICI+JG91dGZpbGUiOworCXN5c3dyaXRlKE9VVEZJTEUsICRuYW1lKTsKKwl3cml0ZV9sZTE2KCR2ZXJzaW9uKTsKKwl3cml0ZV9sZTE2KCRucl9kZXNjKTsKKworCSMKKwkjIEZpcm13YXJlIDAsIHR5cGU6IEJBU0UgRlcgICBGOE1IWiAoMHgwMDAwMDAwMyksIGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDg3MTgKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDMpOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDg3MTgpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbig4MTM0MzIsIDg3MTgpOworCisJIworCSMgRmlybXdhcmUgMSwgdHlwZTogQkFTRSBGVyAgIEY4TUhaIE1UUyAoMHgwMDAwMDAwNyksIGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDg3MTIKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDcpOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDg3MTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbig4MjIxNTIsIDg3MTIpOworCisJIworCSMgRmlybXdhcmUgMiwgdHlwZTogQkFTRSBGVyAgIEZNICgweDAwMDAwNDAxKSwgaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogODU2MgorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDQwMSk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMzIoODU2Mik7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDgzMDg3MiwgODU2Mik7CisKKwkjCisJIyBGaXJtd2FyZSAzLCB0eXBlOiBCQVNFIEZXICAgRk0gSU5QVVQxICgweDAwMDAwYzAxKSwgaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogODU3NgorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMGMwMSk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMzIoODU3Nik7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDgzOTQ0MCwgODU3Nik7CisKKwkjCisJIyBGaXJtd2FyZSA0LCB0eXBlOiBCQVNFIEZXICAgKDB4MDAwMDAwMDEpLCBpZDogKDAwMDAwMDAwMDAwMDAwMDApLCBzaXplOiA4NzA2CisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDAxKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUzMig4NzA2KTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oODQ4MDI0LCA4NzA2KTsKKworCSMKKwkjIEZpcm13YXJlIDUsIHR5cGU6IEJBU0UgRlcgICBNVFMgKDB4MDAwMDAwMDUpLCBpZDogKDAwMDAwMDAwMDAwMDAwMDApLCBzaXplOiA4NjgyCisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDA1KTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUzMig4NjgyKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oODU2NzM2LCA4NjgyKTsKKworCSMKKwkjIEZpcm13YXJlIDYsIHR5cGU6IFNURCBGVyAgICAoMHgwMDAwMDAwMCksIGlkOiBQQUwvQkcgQTIvQSAoMDAwMDAwMDEwMDAwMDAwNyksIHNpemU6IDE2MQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAxLCAweDAwMDAwMDA3KTsJIyBJRAorCXdyaXRlX2xlMzIoMTYxKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oODY1NDI0LCAxNjEpOworCisJIworCSMgRmlybXdhcmUgNywgdHlwZTogU1REIEZXICAgIE1UUyAoMHgwMDAwMDAwNCksIGlkOiBQQUwvQkcgQTIvQSAoMDAwMDAwMDEwMDAwMDAwNyksIHNpemU6IDE2OQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDAwNCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAxLCAweDAwMDAwMDA3KTsJIyBJRAorCXdyaXRlX2xlMzIoMTY5KTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oODY1NTkyLCAxNjkpOworCisJIworCSMgRmlybXdhcmUgOCwgdHlwZTogU1REIEZXICAgICgweDAwMDAwMDAwKSwgaWQ6IFBBTC9CRyBBMi9CICgwMDAwMDAwMjAwMDAwMDA3KSwgc2l6ZTogMTYxCisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDIsIDB4MDAwMDAwMDcpOwkjIElECisJd3JpdGVfbGUzMigxNjEpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbig4NjU0MjQsIDE2MSk7CisKKwkjCisJIyBGaXJtd2FyZSA5LCB0eXBlOiBTVEQgRlcgICAgTVRTICgweDAwMDAwMDA0KSwgaWQ6IFBBTC9CRyBBMi9CICgwMDAwMDAwMjAwMDAwMDA3KSwgc2l6ZTogMTY5CisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDA0KTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDIsIDB4MDAwMDAwMDcpOwkjIElECisJd3JpdGVfbGUzMigxNjkpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbig4NjU1OTIsIDE2OSk7CisKKwkjCisJIyBGaXJtd2FyZSAxMCwgdHlwZTogU1REIEZXICAgICgweDAwMDAwMDAwKSwgaWQ6IFBBTC9CRyBOSUNBTS9BICgwMDAwMDAwNDAwMDAwMDA3KSwgc2l6ZTogMTYxCisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDQsIDB4MDAwMDAwMDcpOwkjIElECisJd3JpdGVfbGUzMigxNjEpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbig4NjYxMTIsIDE2MSk7CisKKwkjCisJIyBGaXJtd2FyZSAxMSwgdHlwZTogU1REIEZXICAgIE1UUyAoMHgwMDAwMDAwNCksIGlkOiBQQUwvQkcgTklDQU0vQSAoMDAwMDAwMDQwMDAwMDAwNyksIHNpemU6IDE2OQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDAwNCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDA0LCAweDAwMDAwMDA3KTsJIyBJRAorCXdyaXRlX2xlMzIoMTY5KTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oODY2MjgwLCAxNjkpOworCisJIworCSMgRmlybXdhcmUgMTIsIHR5cGU6IFNURCBGVyAgICAoMHgwMDAwMDAwMCksIGlkOiBQQUwvQkcgTklDQU0vQiAoMDAwMDAwMDgwMDAwMDAwNyksIHNpemU6IDE2MQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDA4LCAweDAwMDAwMDA3KTsJIyBJRAorCXdyaXRlX2xlMzIoMTYxKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oODY2MTEyLCAxNjEpOworCisJIworCSMgRmlybXdhcmUgMTMsIHR5cGU6IFNURCBGVyAgICBNVFMgKDB4MDAwMDAwMDQpLCBpZDogUEFML0JHIE5JQ0FNL0IgKDAwMDAwMDA4MDAwMDAwMDcpLCBzaXplOiAxNjkKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDQpOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwOCwgMHgwMDAwMDAwNyk7CSMgSUQKKwl3cml0ZV9sZTMyKDE2OSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDg2NjI4MCwgMTY5KTsKKworCSMKKwkjIEZpcm13YXJlIDE0LCB0eXBlOiBTVEQgRlcgICAgKDB4MDAwMDAwMDApLCBpZDogUEFML0RLIEEyICgwMDAwMDAwMzAwMDAwMGUwKSwgc2l6ZTogMTYxCisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDMsIDB4MDAwMDAwZTApOwkjIElECisJd3JpdGVfbGUzMigxNjEpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbig4NjY4MDAsIDE2MSk7CisKKwkjCisJIyBGaXJtd2FyZSAxNSwgdHlwZTogU1REIEZXICAgIE1UUyAoMHgwMDAwMDAwNCksIGlkOiBQQUwvREsgQTIgKDAwMDAwMDAzMDAwMDAwZTApLCBzaXplOiAxNjkKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDQpOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMywgMHgwMDAwMDBlMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE2OSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDg2Njk2OCwgMTY5KTsKKworCSMKKwkjIEZpcm13YXJlIDE2LCB0eXBlOiBTVEQgRlcgICAgKDB4MDAwMDAwMDApLCBpZDogUEFML0RLIE5JQ0FNICgwMDAwMDAwYzAwMDAwMGUwKSwgc2l6ZTogMTYxCisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMGMsIDB4MDAwMDAwZTApOwkjIElECisJd3JpdGVfbGUzMigxNjEpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbig4NjcxNDQsIDE2MSk7CisKKwkjCisJIyBGaXJtd2FyZSAxNywgdHlwZTogU1REIEZXICAgIE1UUyAoMHgwMDAwMDAwNCksIGlkOiBQQUwvREsgTklDQU0gKDAwMDAwMDBjMDAwMDAwZTApLCBzaXplOiAxNjkKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDQpOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwYywgMHgwMDAwMDBlMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE2OSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDg2NzMxMiwgMTY5KTsKKworCSMKKwkjIEZpcm13YXJlIDE4LCB0eXBlOiBTVEQgRlcgICAgKDB4MDAwMDAwMDApLCBpZDogU0VDQU0vSzEgKDAwMDAwMDAwMDAyMDAwMDApLCBzaXplOiAxNjEKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDIwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE2MSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDg2NzQ4OCwgMTYxKTsKKworCSMKKwkjIEZpcm13YXJlIDE5LCB0eXBlOiBTVEQgRlcgICAgTVRTICgweDAwMDAwMDA0KSwgaWQ6IFNFQ0FNL0sxICgwMDAwMDAwMDAwMjAwMDAwKSwgc2l6ZTogMTY5CisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDA0KTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAyMDAwMDApOwkjIElECisJd3JpdGVfbGUzMigxNjkpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbig4Njc2NTYsIDE2OSk7CisKKwkjCisJIyBGaXJtd2FyZSAyMCwgdHlwZTogU1REIEZXICAgICgweDAwMDAwMDAwKSwgaWQ6IFNFQ0FNL0szICgwMDAwMDAwMDA0MDAwMDAwKSwgc2l6ZTogMTYxCisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDQwMDAwMDApOwkjIElECisJd3JpdGVfbGUzMigxNjEpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbig4Njc4MzIsIDE2MSk7CisKKwkjCisJIyBGaXJtd2FyZSAyMSwgdHlwZTogU1REIEZXICAgIE1UUyAoMHgwMDAwMDAwNCksIGlkOiBTRUNBTS9LMyAoMDAwMDAwMDAwNDAwMDAwMCksIHNpemU6IDE2OQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDAwNCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDA0MDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMzIoMTY5KTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oODY4MDAwLCAxNjkpOworCisJIworCSMgRmlybXdhcmUgMjIsIHR5cGU6IFNURCBGVyAgICBEMjYzMyBEVFY2IEFUU0MgKDB4MDAwMTAwMzApLCBpZDogKDAwMDAwMDAwMDAwMDAwMDApLCBzaXplOiAxNDkKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMTAwMzApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE0OSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDg2ODE3NiwgMTQ5KTsKKworCSMKKwkjIEZpcm13YXJlIDIzLCB0eXBlOiBTVEQgRlcgICAgRDI2MjAgRFRWNiBRQU0gKDB4MDAwMDAwNjgpLCBpZDogKDAwMDAwMDAwMDAwMDAwMDApLCBzaXplOiAxNDkKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwNjgpOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE0OSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDg2ODMzNiwgMTQ5KTsKKworCSMKKwkjIEZpcm13YXJlIDI0LCB0eXBlOiBTVEQgRlcgICAgRDI2MzMgRFRWNiBRQU0gKDB4MDAwMDAwNzApLCBpZDogKDAwMDAwMDAwMDAwMDAwMDApLCBzaXplOiAxNDkKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwNzApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE0OSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDg2ODQ4OCwgMTQ5KTsKKworCSMKKwkjIEZpcm13YXJlIDI1LCB0eXBlOiBTVEQgRlcgICAgRDI2MjAgRFRWNyAoMHgwMDAwMDA4OCksIGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDE0OQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDA4OCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMzIoMTQ5KTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oODY4NjQ4LCAxNDkpOworCisJIworCSMgRmlybXdhcmUgMjYsIHR5cGU6IFNURCBGVyAgICBEMjYzMyBEVFY3ICgweDAwMDAwMDkwKSwgaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogMTQ5CisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDkwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUzMigxNDkpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbig4Njg4MDAsIDE0OSk7CisKKwkjCisJIyBGaXJtd2FyZSAyNywgdHlwZTogU1REIEZXICAgIEQyNjIwIERUVjc4ICgweDAwMDAwMTA4KSwgaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogMTQ5CisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMTA4KTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUzMigxNDkpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbig4Njg5NjAsIDE0OSk7CisKKwkjCisJIyBGaXJtd2FyZSAyOCwgdHlwZTogU1REIEZXICAgIEQyNjMzIERUVjc4ICgweDAwMDAwMTEwKSwgaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogMTQ5CisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMTEwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUzMigxNDkpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbig4NjkxMTIsIDE0OSk7CisKKwkjCisJIyBGaXJtd2FyZSAyOSwgdHlwZTogU1REIEZXICAgIEQyNjIwIERUVjggKDB4MDAwMDAyMDgpLCBpZDogKDAwMDAwMDAwMDAwMDAwMDApLCBzaXplOiAxNDkKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAyMDgpOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE0OSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDg2ODY0OCwgMTQ5KTsKKworCSMKKwkjIEZpcm13YXJlIDMwLCB0eXBlOiBTVEQgRlcgICAgRDI2MzMgRFRWOCAoMHgwMDAwMDIxMCksIGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDE0OQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDIxMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMzIoMTQ5KTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oODY4ODAwLCAxNDkpOworCisJIworCSMgRmlybXdhcmUgMzEsIHR5cGU6IFNURCBGVyAgICBGTSAoMHgwMDAwMDQwMCksIGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDEzNQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDQwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMzIoMTM1KTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oODY5NTg0LCAxMzUpOworCisJIworCSMgRmlybXdhcmUgMzIsIHR5cGU6IFNURCBGVyAgICAoMHgwMDAwMDAwMCksIGlkOiBQQUwvSSAoMDAwMDAwMDAwMDAwMDAxMCksIHNpemU6IDE2MQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDEwKTsJIyBJRAorCXdyaXRlX2xlMzIoMTYxKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oODY5NzI4LCAxNjEpOworCisJIworCSMgRmlybXdhcmUgMzMsIHR5cGU6IFNURCBGVyAgICBNVFMgKDB4MDAwMDAwMDQpLCBpZDogUEFML0kgKDAwMDAwMDAwMDAwMDAwMTApLCBzaXplOiAxNjkKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDQpOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAxMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE2OSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDg2OTg5NiwgMTY5KTsKKworCSMKKwkjIEZpcm13YXJlIDM0LCB0eXBlOiBTVEQgRlcgICAgKDB4MDAwMDAwMDApLCBpZDogU0VDQU0vTCBBTSAoMDAwMDAwMTAwMDQwMDAwMCksIHNpemU6IDE2OQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDEwLCAweDAwNDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMzIoMTY5KTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oODcwMDcyLCAxNjkpOworCisJIworCSMgRmlybXdhcmUgMzUsIHR5cGU6IFNURCBGVyAgICAoMHgwMDAwMDAwMCksIGlkOiBTRUNBTS9MIE5JQ0FNICgwMDAwMDAwYzAwNDAwMDAwKSwgc2l6ZTogMTYxCisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMGMsIDB4MDA0MDAwMDApOwkjIElECisJd3JpdGVfbGUzMigxNjEpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbig4NzAyNDgsIDE2MSk7CisKKwkjCisJIyBGaXJtd2FyZSAzNiwgdHlwZTogU1REIEZXICAgICgweDAwMDAwMDAwKSwgaWQ6IFNFQ0FNL0xjICgwMDAwMDAwMDAwODAwMDAwKSwgc2l6ZTogMTYxCisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDA4MDAwMDApOwkjIElECisJd3JpdGVfbGUzMigxNjEpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbig4NzA0MTYsIDE2MSk7CisKKwkjCisJIyBGaXJtd2FyZSAzNywgdHlwZTogU1REIEZXICAgICgweDAwMDAwMDAwKSwgaWQ6IE5UU0MvTSBLciAoMDAwMDAwMDAwMDAwODAwMCksIHNpemU6IDE2MQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMDAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDA4MDAwKTsJIyBJRAorCXdyaXRlX2xlMzIoMTYxKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oODcwNTg0LCAxNjEpOworCisJIworCSMgRmlybXdhcmUgMzgsIHR5cGU6IFNURCBGVyAgICBMQ0QgKDB4MDAwMDEwMDApLCBpZDogTlRTQy9NIEtyICgwMDAwMDAwMDAwMDA4MDAwKSwgc2l6ZTogMTYxCisJIworCisJd3JpdGVfbGUzMigweDAwMDAxMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDgwMDApOwkjIElECisJd3JpdGVfbGUzMigxNjEpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbig4NzA3NTIsIDE2MSk7CisKKwkjCisJIyBGaXJtd2FyZSAzOSwgdHlwZTogU1REIEZXICAgIExDRCBOT0dEICgweDAwMDAzMDAwKSwgaWQ6IE5UU0MvTSBLciAoMDAwMDAwMDAwMDAwODAwMCksIHNpemU6IDE2MQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMzAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDA4MDAwKTsJIyBJRAorCXdyaXRlX2xlMzIoMTYxKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oODcwOTIwLCAxNjEpOworCisJIworCSMgRmlybXdhcmUgNDAsIHR5cGU6IFNURCBGVyAgICBNVFMgKDB4MDAwMDAwMDQpLCBpZDogTlRTQy9NIEtyICgwMDAwMDAwMDAwMDA4MDAwKSwgc2l6ZTogMTY5CisJIworCisJd3JpdGVfbGUzMigweDAwMDAwMDA0KTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDgwMDApOwkjIElECisJd3JpdGVfbGUzMigxNjkpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbig4NzEwODgsIDE2OSk7CisKKwkjCisJIyBGaXJtd2FyZSA0MSwgdHlwZTogU1REIEZXICAgICgweDAwMDAwMDAwKSwgaWQ6IE5UU0MgUEFML00gUEFML04gKDAwMDAwMDAwMDAwMGI3MDApLCBzaXplOiAxNjEKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwYjcwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE2MSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDg3MTI2NCwgMTYxKTsKKworCSMKKwkjIEZpcm13YXJlIDQyLCB0eXBlOiBTVEQgRlcgICAgTENEICgweDAwMDAxMDAwKSwgaWQ6IE5UU0MgUEFML00gUEFML04gKDAwMDAwMDAwMDAwMGI3MDApLCBzaXplOiAxNjEKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDEwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwYjcwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE2MSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDg3MTQzMiwgMTYxKTsKKworCSMKKwkjIEZpcm13YXJlIDQzLCB0eXBlOiBTVEQgRlcgICAgTENEIE5PR0QgKDB4MDAwMDMwMDApLCBpZDogTlRTQyBQQUwvTSBQQUwvTiAoMDAwMDAwMDAwMDAwYjcwMCksIHNpemU6IDE2MQorCSMKKworCXdyaXRlX2xlMzIoMHgwMDAwMzAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDBiNzAwKTsJIyBJRAorCXdyaXRlX2xlMzIoMTYxKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rX2ZpeF9lbmRpYW4oODcxNjAwLCAxNjEpOworCisJIworCSMgRmlybXdhcmUgNDQsIHR5cGU6IFNURCBGVyAgICAoMHgwMDAwMDAwMCksIGlkOiBOVFNDL00gSnAgKDAwMDAwMDAwMDAwMDIwMDApLCBzaXplOiAxNjEKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMjAwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE2MSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDg3MTI2NCwgMTYxKTsKKworCSMKKwkjIEZpcm13YXJlIDQ1LCB0eXBlOiBTVEQgRlcgICAgTVRTICgweDAwMDAwMDA0KSwgaWQ6IE5UU0MgUEFML00gUEFML04gKDAwMDAwMDAwMDAwMGI3MDApLCBzaXplOiAxNjkKKwkjCisKKwl3cml0ZV9sZTMyKDB4MDAwMDAwMDQpOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwYjcwMCk7CSMgSUQKKwl3cml0ZV9sZTMyKDE2OSk7CQkJIyBTaXplCisJd3JpdGVfaHVua19maXhfZW5kaWFuKDg3MTkzNiwgMTY5KTsKKworCSMKKwkjIEZpcm13YXJlIDQ2LCB0eXBlOiBTVEQgRlcgICAgTVRTIExDRCAoMHgwMDAwMTAwNCksIGlkOiBOVFNDIFBBTC9NIFBBTC9OICgwMDAwMDAwMDAwMDBiNzAwKSwgc2l6ZTogMTY5CisJIworCisJd3JpdGVfbGUzMigweDAwMDAxMDA0KTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMGI3MDApOwkjIElECisJd3JpdGVfbGUzMigxNjkpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbig4NzIxMTIsIDE2OSk7CisKKwkjCisJIyBGaXJtd2FyZSA0NywgdHlwZTogU1REIEZXICAgIE1UUyBMQ0QgTk9HRCAoMHgwMDAwMzAwNCksIGlkOiBOVFNDIFBBTC9NIFBBTC9OICgwMDAwMDAwMDAwMDBiNzAwKSwgc2l6ZTogMTY5CisJIworCisJd3JpdGVfbGUzMigweDAwMDAzMDA0KTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMGI3MDApOwkjIElECisJd3JpdGVfbGUzMigxNjkpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmtfZml4X2VuZGlhbig4NzIyODgsIDE2OSk7CisKKwkjCisJIyBGaXJtd2FyZSA0OCwgdHlwZTogU0NPREUgRlcgIEhBUyBJRiAoMHg2MDAwMDAwMCksIElGID0gMy4yOCBNSHogaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUxNigzMjgwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoODExODk2LCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNDksIHR5cGU6IFNDT0RFIEZXICBIQVMgSUYgKDB4NjAwMDAwMDApLCBJRiA9IDMuMzAgTUh6IGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDE5MgorCSMKKworCXdyaXRlX2xlMzIoMHg2MDAwMDAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMTYoMzMwMCk7CQkJIyBJRgorCXdyaXRlX2xlMzIoMTkyKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rKDgxMzA0OCwgMTkyKTsKKworCSMKKwkjIEZpcm13YXJlIDUwLCB0eXBlOiBTQ09ERSBGVyAgSEFTIElGICgweDYwMDAwMDAwKSwgSUYgPSAzLjQ0IE1IeiBpZDogKDAwMDAwMDAwMDAwMDAwMDApLCBzaXplOiAxOTIKKwkjCisKKwl3cml0ZV9sZTMyKDB4NjAwMDAwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTE2KDM0NDApOwkJCSMgSUYKKwl3cml0ZV9sZTMyKDE5Mik7CQkJIyBTaXplCisJd3JpdGVfaHVuayg4MTIyODAsIDE5Mik7CisKKwkjCisJIyBGaXJtd2FyZSA1MSwgdHlwZTogU0NPREUgRlcgIEhBUyBJRiAoMHg2MDAwMDAwMCksIElGID0gMy40NiBNSHogaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUxNigzNDYwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoODEyNDcyLCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNTIsIHR5cGU6IFNDT0RFIEZXICBEVFY2IEFUU0MgT1JFTjM2IEhBUyBJRiAoMHg2MDIxMDAyMCksIElGID0gMy44MCBNSHogaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMjEwMDIwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUxNigzODAwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoODA5Nzg0LCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNTMsIHR5cGU6IFNDT0RFIEZXICBIQVMgSUYgKDB4NjAwMDAwMDApLCBJRiA9IDQuMDAgTUh6IGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDE5MgorCSMKKworCXdyaXRlX2xlMzIoMHg2MDAwMDAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMTYoNDAwMCk7CQkJIyBJRgorCXdyaXRlX2xlMzIoMTkyKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rKDgxMjA4OCwgMTkyKTsKKworCSMKKwkjIEZpcm13YXJlIDU0LCB0eXBlOiBTQ09ERSBGVyAgRFRWNiBBVFNDIFRPWU9UQTM4OCBIQVMgSUYgKDB4NjA0MTAwMjApLCBJRiA9IDQuMDggTUh6IGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDE5MgorCSMKKworCXdyaXRlX2xlMzIoMHg2MDQxMDAyMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMTYoNDA4MCk7CQkJIyBJRgorCXdyaXRlX2xlMzIoMTkyKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rKDgwOTk3NiwgMTkyKTsKKworCSMKKwkjIEZpcm13YXJlIDU1LCB0eXBlOiBTQ09ERSBGVyAgSEFTIElGICgweDYwMDAwMDAwKSwgSUYgPSA0LjIwIE1IeiBpZDogKDAwMDAwMDAwMDAwMDAwMDApLCBzaXplOiAxOTIKKwkjCisKKwl3cml0ZV9sZTMyKDB4NjAwMDAwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTE2KDQyMDApOwkJCSMgSUYKKwl3cml0ZV9sZTMyKDE5Mik7CQkJIyBTaXplCisJd3JpdGVfaHVuayg4MTE3MDQsIDE5Mik7CisKKwkjCisJIyBGaXJtd2FyZSA1NiwgdHlwZTogU0NPREUgRlcgIE1PTk8gSEFTIElGICgweDYwMDA4MDAwKSwgSUYgPSA0LjMyIE1IeiBpZDogTlRTQy9NIEtyICgwMDAwMDAwMDAwMDA4MDAwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMDA4MDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDgwMDApOwkjIElECisJd3JpdGVfbGUxNig0MzIwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoODA4MDU2LCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNTcsIHR5cGU6IFNDT0RFIEZXICBIQVMgSUYgKDB4NjAwMDAwMDApLCBJRiA9IDQuNDUgTUh6IGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDE5MgorCSMKKworCXdyaXRlX2xlMzIoMHg2MDAwMDAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMTYoNDQ1MCk7CQkJIyBJRgorCXdyaXRlX2xlMzIoMTkyKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rKDgxMjY2NCwgMTkyKTsKKworCSMKKwkjIEZpcm13YXJlIDU4LCB0eXBlOiBTQ09ERSBGVyAgTVRTIExDRCBOT0dEIE1PTk8gSUYgSEFTIElGICgweDYwMDJiMDA0KSwgSUYgPSA0LjUwIE1IeiBpZDogTlRTQyBQQUwvTSBQQUwvTiAoMDAwMDAwMDAwMDAwYjcwMCksIHNpemU6IDE5MgorCSMKKworCXdyaXRlX2xlMzIoMHg2MDAyYjAwNCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDBiNzAwKTsJIyBJRAorCXdyaXRlX2xlMTYoNDUwMCk7CQkJIyBJRgorCXdyaXRlX2xlMzIoMTkyKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rKDgwNzY3MiwgMTkyKTsKKworCSMKKwkjIEZpcm13YXJlIDU5LCB0eXBlOiBTQ09ERSBGVyAgTENEIE5PR0QgSUYgSEFTIElGICgweDYwMDIzMDAwKSwgSUYgPSA0LjYwIE1IeiBpZDogTlRTQy9NIEtyICgwMDAwMDAwMDAwMDA4MDAwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMDIzMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDgwMDApOwkjIElECisJd3JpdGVfbGUxNig0NjAwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoODA3ODY0LCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNjAsIHR5cGU6IFNDT0RFIEZXICBEVFY2IFFBTSBEVFY3IERUVjc4IERUVjggWkFSTElOSzQ1NiBIQVMgSUYgKDB4NjIwMDAzZTApLCBJRiA9IDQuNzYgTUh6IGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDE5MgorCSMKKworCXdyaXRlX2xlMzIoMHg2MjAwMDNlMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMTYoNDc2MCk7CQkJIyBJRgorCXdyaXRlX2xlMzIoMTkyKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rKDgwNzI4OCwgMTkyKTsKKworCSMKKwkjIEZpcm13YXJlIDYxLCB0eXBlOiBTQ09ERSBGVyAgSEFTIElGICgweDYwMDAwMDAwKSwgSUYgPSA0Ljk0IE1IeiBpZDogKDAwMDAwMDAwMDAwMDAwMDApLCBzaXplOiAxOTIKKwkjCisKKwl3cml0ZV9sZTMyKDB4NjAwMDAwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTE2KDQ5NDApOwkJCSMgSUYKKwl3cml0ZV9sZTMyKDE5Mik7CQkJIyBTaXplCisJd3JpdGVfaHVuayg4MTE1MTIsIDE5Mik7CisKKwkjCisJIyBGaXJtd2FyZSA2MiwgdHlwZTogU0NPREUgRlcgIEhBUyBJRiAoMHg2MDAwMDAwMCksIElGID0gNS4yNiBNSHogaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUxNig1MjYwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoODEwNTUyLCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNjMsIHR5cGU6IFNDT0RFIEZXICBNT05PIEhBUyBJRiAoMHg2MDAwODAwMCksIElGID0gNS4zMiBNSHogaWQ6IFBBTC9CRyBBMiBOSUNBTSAoMDAwMDAwMGYwMDAwMDAwNyksIHNpemU6IDE5MgorCSMKKworCXdyaXRlX2xlMzIoMHg2MDAwODAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDBmLCAweDAwMDAwMDA3KTsJIyBJRAorCXdyaXRlX2xlMTYoNTMyMCk7CQkJIyBJRgorCXdyaXRlX2xlMzIoMTkyKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rKDgxMDc0NCwgMTkyKTsKKworCSMKKwkjIEZpcm13YXJlIDY0LCB0eXBlOiBTQ09ERSBGVyAgRFRWNyBEVFY3OCBEVFY4IERJQkNPTTUyIENISU5BIEhBUyBJRiAoMHg2NTAwMDM4MCksIElGID0gNS40MCBNSHogaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDY1MDAwMzgwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUxNig1NDAwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoODA3MDk2LCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNjUsIHR5cGU6IFNDT0RFIEZXICBEVFY2IEFUU0MgT1JFTjUzOCBIQVMgSUYgKDB4NjAxMTAwMjApLCBJRiA9IDUuNTggTUh6IGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDE5MgorCSMKKworCXdyaXRlX2xlMzIoMHg2MDExMDAyMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMTYoNTU4MCk7CQkJIyBJRgorCXdyaXRlX2xlMzIoMTkyKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rKDgwOTU5MiwgMTkyKTsKKworCSMKKwkjIEZpcm13YXJlIDY2LCB0eXBlOiBTQ09ERSBGVyAgSEFTIElGICgweDYwMDAwMDAwKSwgSUYgPSA1LjY0IE1IeiBpZDogUEFML0JHIEEyICgwMDAwMDAwMzAwMDAwMDA3KSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDMsIDB4MDAwMDAwMDcpOwkjIElECisJd3JpdGVfbGUxNig1NjQwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoODA4NDQwLCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNjcsIHR5cGU6IFNDT0RFIEZXICBIQVMgSUYgKDB4NjAwMDAwMDApLCBJRiA9IDUuNzQgTUh6IGlkOiBQQUwvQkcgTklDQU0gKDAwMDAwMDBjMDAwMDAwMDcpLCBzaXplOiAxOTIKKwkjCisKKwl3cml0ZV9sZTMyKDB4NjAwMDAwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwYywgMHgwMDAwMDAwNyk7CSMgSUQKKwl3cml0ZV9sZTE2KDU3NDApOwkJCSMgSUYKKwl3cml0ZV9sZTMyKDE5Mik7CQkJIyBTaXplCisJd3JpdGVfaHVuayg4MDg2MzIsIDE5Mik7CisKKwkjCisJIyBGaXJtd2FyZSA2OCwgdHlwZTogU0NPREUgRlcgIEhBUyBJRiAoMHg2MDAwMDAwMCksIElGID0gNS45MCBNSHogaWQ6ICgwMDAwMDAwMDAwMDAwMDAwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMDApOwkjIElECisJd3JpdGVfbGUxNig1OTAwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoODEwMzYwLCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNjksIHR5cGU6IFNDT0RFIEZXICBNT05PIEhBUyBJRiAoMHg2MDAwODAwMCksIElGID0gNi4wMCBNSHogaWQ6IFBBTC9ESyBQQUwvSSBTRUNBTS9LMyBTRUNBTS9MIFNFQ0FNL0xjIE5JQ0FNICgwMDAwMDAwYzA0YzAwMGYwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMDA4MDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMGMsIDB4MDRjMDAwZjApOwkjIElECisJd3JpdGVfbGUxNig2MDAwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoODA4ODI0LCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNzAsIHR5cGU6IFNDT0RFIEZXICBEVFY2IFFBTSBBVFNDIExHNjAgRjZNSFogSEFTIElGICgweDY4MDUwMDYwKSwgSUYgPSA2LjIwIE1IeiBpZDogKDAwMDAwMDAwMDAwMDAwMDApLCBzaXplOiAxOTIKKwkjCisKKwl3cml0ZV9sZTMyKDB4NjgwNTAwNjApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTE2KDYyMDApOwkJCSMgSUYKKwl3cml0ZV9sZTMyKDE5Mik7CQkJIyBTaXplCisJd3JpdGVfaHVuayg4MDk0MDAsIDE5Mik7CisKKwkjCisJIyBGaXJtd2FyZSA3MSwgdHlwZTogU0NPREUgRlcgIEhBUyBJRiAoMHg2MDAwMDAwMCksIElGID0gNi4yNCBNSHogaWQ6IFBBTC9JICgwMDAwMDAwMDAwMDAwMDEwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAwMDAwMTApOwkjIElECisJd3JpdGVfbGUxNig2MjQwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoODA4MjQ4LCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNzIsIHR5cGU6IFNDT0RFIEZXICBNT05PIEhBUyBJRiAoMHg2MDAwODAwMCksIElGID0gNi4zMiBNSHogaWQ6IFNFQ0FNL0sxICgwMDAwMDAwMDAwMjAwMDAwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMDA4MDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDAsIDB4MDAyMDAwMDApOwkjIElECisJd3JpdGVfbGUxNig2MzIwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoODExMzIwLCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNzMsIHR5cGU6IFNDT0RFIEZXICBIQVMgSUYgKDB4NjAwMDAwMDApLCBJRiA9IDYuMzQgTUh6IGlkOiBTRUNBTS9LMSAoMDAwMDAwMDAwMDIwMDAwMCksIHNpemU6IDE5MgorCSMKKworCXdyaXRlX2xlMzIoMHg2MDAwMDAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMjAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMTYoNjM0MCk7CQkJIyBJRgorCXdyaXRlX2xlMzIoMTkyKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rKDgwOTIwOCwgMTkyKTsKKworCSMKKwkjIEZpcm13YXJlIDc0LCB0eXBlOiBTQ09ERSBGVyAgTU9OTyBIQVMgSUYgKDB4NjAwMDgwMDApLCBJRiA9IDYuNTAgTUh6IGlkOiBQQUwvREsgU0VDQU0vSzMgU0VDQU0vTCBOSUNBTSAoMDAwMDAwMGMwNDQwMDBlMCksIHNpemU6IDE5MgorCSMKKworCXdyaXRlX2xlMzIoMHg2MDAwODAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDBjLCAweDA0NDAwMGUwKTsJIyBJRAorCXdyaXRlX2xlMTYoNjUwMCk7CQkJIyBJRgorCXdyaXRlX2xlMzIoMTkyKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rKDgxMTEyOCwgMTkyKTsKKworCSMKKwkjIEZpcm13YXJlIDc1LCB0eXBlOiBTQ09ERSBGVyAgRFRWNiBBVFNDIEFUSTYzOCBIQVMgSUYgKDB4NjAwOTAwMjApLCBJRiA9IDYuNTggTUh6IGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDE5MgorCSMKKworCXdyaXRlX2xlMzIoMHg2MDA5MDAyMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMTYoNjU4MCk7CQkJIyBJRgorCXdyaXRlX2xlMzIoMTkyKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rKDgwNzQ4MCwgMTkyKTsKKworCSMKKwkjIEZpcm13YXJlIDc2LCB0eXBlOiBTQ09ERSBGVyAgSEFTIElGICgweDYwMDAwMDAwKSwgSUYgPSA2LjYwIE1IeiBpZDogUEFML0RLIEEyICgwMDAwMDAwMzAwMDAwMGUwKSwgc2l6ZTogMTkyCisJIworCisJd3JpdGVfbGUzMigweDYwMDAwMDAwKTsJCQkjIFR5cGUKKwl3cml0ZV9sZTY0KDB4MDAwMDAwMDMsIDB4MDAwMDAwZTApOwkjIElECisJd3JpdGVfbGUxNig2NjAwKTsJCQkjIElGCisJd3JpdGVfbGUzMigxOTIpOwkJCSMgU2l6ZQorCXdyaXRlX2h1bmsoODA5MDE2LCAxOTIpOworCisJIworCSMgRmlybXdhcmUgNzcsIHR5cGU6IFNDT0RFIEZXICBNT05PIEhBUyBJRiAoMHg2MDAwODAwMCksIElGID0gNi42OCBNSHogaWQ6IFBBTC9ESyBBMiAoMDAwMDAwMDMwMDAwMDBlMCksIHNpemU6IDE5MgorCSMKKworCXdyaXRlX2xlMzIoMHg2MDAwODAwMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAzLCAweDAwMDAwMGUwKTsJIyBJRAorCXdyaXRlX2xlMTYoNjY4MCk7CQkJIyBJRgorCXdyaXRlX2xlMzIoMTkyKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rKDgxMDkzNiwgMTkyKTsKKworCSMKKwkjIEZpcm13YXJlIDc4LCB0eXBlOiBTQ09ERSBGVyAgRFRWNiBBVFNDIFRPWU9UQTc5NCBIQVMgSUYgKDB4NjA4MTAwMjApLCBJRiA9IDguMTQgTUh6IGlkOiAoMDAwMDAwMDAwMDAwMDAwMCksIHNpemU6IDE5MgorCSMKKworCXdyaXRlX2xlMzIoMHg2MDgxMDAyMCk7CQkJIyBUeXBlCisJd3JpdGVfbGU2NCgweDAwMDAwMDAwLCAweDAwMDAwMDAwKTsJIyBJRAorCXdyaXRlX2xlMTYoODE0MCk7CQkJIyBJRgorCXdyaXRlX2xlMzIoMTkyKTsJCQkjIFNpemUKKwl3cml0ZV9odW5rKDgxMDE2OCwgMTkyKTsKKworCSMKKwkjIEZpcm13YXJlIDc5LCB0eXBlOiBTQ09ERSBGVyAgSEFTIElGICgweDYwMDAwMDAwKSwgSUYgPSA4LjIwIE1IeiBpZDogKDAwMDAwMDAwMDAwMDAwMDApLCBzaXplOiAxOTIKKwkjCisKKwl3cml0ZV9sZTMyKDB4NjAwMDAwMDApOwkJCSMgVHlwZQorCXdyaXRlX2xlNjQoMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCk7CSMgSUQKKwl3cml0ZV9sZTE2KDgyMDApOwkJCSMgSUYKKwl3cml0ZV9sZTMyKDE5Mik7CQkJIyBTaXplCisJd3JpdGVfaHVuayg4MTI4NTYsIDE5Mik7Cit9CisKKworc3ViIGV4dHJhY3RfZmlybXdhcmUgeworCW15ICRzb3VyY2VmaWxlXzI0ID0gIlVEWFRUTTYwMDAuc3lzIjsKKwlteSAkaGFzaF8yNCA9ICJjYjlkZWI1NTA4YTVlMTUwYWYyODgwZjViMDA2NmQ3OCI7CisJbXkgJG91dGZpbGVfMjQgPSAieGMzMDI4LXYyNC5mdyI7CisJbXkgJG5hbWVfMjQgPSAieGMyMDI4IGZpcm13YXJlIjsKKwlteSAkdmVyc2lvbl8yNCA9IDUxNjsKKwlteSAkbnJfZGVzY18yNCA9IDc3OworCW15ICRvdXQ7CisKKwlteSAkc291cmNlZmlsZV8yNyA9ICJoY3c4NWJkYS5zeXMiOworCW15ICRoYXNoXzI3ID0gIjBlNDRkYmY2M2JiMDE2OWQ1NzQ0NmFlYzIxODgxZmYyIjsKKwlteSAkb3V0ZmlsZV8yNyA9ICJ4YzMwMjgtdjI3LmZ3IjsKKwlteSAkbmFtZV8yNyA9ICJ4YzIwMjggZmlybXdhcmUiOworCW15ICR2ZXJzaW9uXzI3ID0gNTE5OworCW15ICRucl9kZXNjXzI3ID0gODA7CisJbXkgJG91dDsKKworCWlmICgtZSAkc291cmNlZmlsZV8yNCkgeworCQl2ZXJpZnkoJHNvdXJjZWZpbGVfMjQsICRoYXNoXzI0KTsKKworCQlvcGVuIElORklMRSwgIjwkc291cmNlZmlsZV8yNCI7CisJCW1haW5fZmlybXdhcmVfMjQoJG91dGZpbGVfMjQsICRuYW1lXzI0LCAkdmVyc2lvbl8yNCwgJG5yX2Rlc2NfMjQpOworCQljbG9zZSBJTkZJTEU7CisJfQorCisJaWYgKC1lICRzb3VyY2VmaWxlXzI3KSB7CisJCXZlcmlmeSgkc291cmNlZmlsZV8yNywgJGhhc2hfMjcpOworCisJCW9wZW4gSU5GSUxFLCAiPCRzb3VyY2VmaWxlXzI3IjsKKwkJbWFpbl9maXJtd2FyZV8yNygkb3V0ZmlsZV8yNywgJG5hbWVfMjcsICR2ZXJzaW9uXzI3LCAkbnJfZGVzY18yNyk7CisJCWNsb3NlIElORklMRTsKKwl9Cit9CisKK2V4dHJhY3RfZmlybXdhcmU7CitwcmludGYgIkZpcm13YXJlcyBnZW5lcmF0ZWQuXG4iOwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9maW1jLnR4dCBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvZmltYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTBjNmI4YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvZmltYy50eHQKQEAgLTAsMCArMSwxNDggQEAKK1NhbXN1bmcgUzVQL0VYWU5PUzQgRklNQyBkcml2ZXIKKworQ29weXJpZ2h0IChDKSAyMDEyIC0gMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBGSU1DIChGdWxseSBJbnRlcmFjdGl2ZSBNb2JpbGUgQ2FtZXJhKSBkZXZpY2UgYXZhaWxhYmxlIGluIFNhbXN1bmcKK1NvQyBBcHBsaWNhdGlvbiBQcm9jZXNzb3JzIGlzIGFuIGludGVncmF0ZWQgY2FtZXJhIGhvc3QgaW50ZXJmYWNlLCBjb2xvcgorc3BhY2UgY29udmVydGVyLCBpbWFnZSByZXNpemVyIGFuZCByb3RhdG9yLiAgSXQncyBhbHNvIGNhcGFibGUgb2YgY2FwdHVyaW5nCitkYXRhIGZyb20gTENEIGNvbnRyb2xsZXIgKEZJTUQpIHRocm91Z2ggdGhlIFNvQyBpbnRlcm5hbCB3cml0ZWJhY2sgZGF0YQorcGF0aC4gIFRoZXJlIGFyZSBtdWx0aXBsZSBGSU1DIGluc3RhbmNlcyBpbiB0aGUgU29DcyAodXAgdG8gNCksIGhhdmluZworc2xpZ2h0bHkgZGlmZmVyZW50IGNhcGFiaWxpdGllcywgbGlrZSBwaXhlbCBhbGlnbm1lbnQgY29uc3RyYWludHMsIHJvdGF0b3IKK2F2YWlsYWJpbGl0eSwgTENEIHdyaXRlYmFjayBzdXBwb3J0LCBldGMuIFRoZSBkcml2ZXIgaXMgbG9jYXRlZCBhdAorZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9leHlub3M0LWlzIGRpcmVjdG9yeS4KKworMS4gU3VwcG9ydGVkIFNvQ3MKKz09PT09PT09PT09PT09PT09CisKK1M1UEMxMDAgKG1lbS10by1tZW0gb25seSksIFM1UFYyMTAsIEVYWU5PUzQyMTAKKworMi4gU3VwcG9ydGVkIGZlYXR1cmVzCis9PT09PT09PT09PT09PT09PT09PT0KKworIC0gY2FtZXJhIHBhcmFsbGVsIGludGVyZmFjZSBjYXB0dXJlIChJVFUtUi5CVDYwMS81NjUpOworIC0gY2FtZXJhIHNlcmlhbCBpbnRlcmZhY2UgY2FwdHVyZSAoTUlQSS1DU0kyKTsKKyAtIG1lbW9yeS10by1tZW1vcnkgcHJvY2Vzc2luZyAoY29sb3Igc3BhY2UgY29udmVyc2lvbiwgc2NhbGluZywgbWlycm9yCisgICBhbmQgcm90YXRpb24pOworIC0gZHluYW1pYyBwaXBlbGluZSByZS1jb25maWd1cmF0aW9uIGF0IHJ1bnRpbWUgKHJlLWF0dGFjaG1lbnQgb2YgYW55IEZJTUMKKyAgIGluc3RhbmNlIHRvIGFueSBwYXJhbGxlbCB2aWRlbyBpbnB1dCBvciBhbnkgTUlQSS1DU0kgZnJvbnQtZW5kKTsKKyAtIHJ1bnRpbWUgUE0gYW5kIHN5c3RlbSB3aWRlIHN1c3BlbmQvcmVzdW1lCisKK05vdCBjdXJyZW50bHkgc3VwcG9ydGVkOgorIC0gTENEIHdyaXRlYmFjayBpbnB1dAorIC0gcGVyIGZyYW1lIGNsb2NrIGdhdGluZyAobWVtLXRvLW1lbSkKKworMy4gRmlsZXMgcGFydGl0aW9uaW5nCis9PT09PT09PT09PT09PT09PT09PT0KKworLSBtZWRpYSBkZXZpY2UgZHJpdmVyCisgIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vZXh5bm9zNC1pcy9tZWRpYS1kZXYuW2NoXQorCisgLSBjYW1lcmEgY2FwdHVyZSB2aWRlbyBkZXZpY2UgZHJpdmVyCisgIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vZXh5bm9zNC1pcy9maW1jLWNhcHR1cmUuYworCisgLSBNSVBJLUNTSTIgcmVjZWl2ZXIgc3ViZGV2CisgIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vZXh5bm9zNC1pcy9taXBpLWNzaXMuW2NoXQorCisgLSB2aWRlbyBwb3N0LXByb2Nlc3NvciAobWVtLXRvLW1lbSkKKyAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9leHlub3M0LWlzL2ZpbWMtY29yZS5jCisKKyAtIGNvbW1vbiBmaWxlcworICBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2V4eW5vczQtaXMvZmltYy1jb3JlLmgKKyAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9leHlub3M0LWlzL2ZpbWMtcmVnLmgKKyAgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9leHlub3M0LWlzL3JlZ3MtZmltYy5oCisKKzQuIFVzZXIgc3BhY2UgaW50ZXJmYWNlcworPT09PT09PT09PT09PT09PT09PT09PT09CisKKzQuMS4gTWVkaWEgZGV2aWNlIGludGVyZmFjZQorCitUaGUgZHJpdmVyIHN1cHBvcnRzIE1lZGlhIENvbnRyb2xsZXIgQVBJIGFzIGRlZmluZWQgYXQKK2h0dHA6Ly9saW51eHR2Lm9yZy9kb3dubG9hZHMvdjRsLWR2Yi1hcGlzL21lZGlhX2NvbW1vbi5odG1sCitUaGUgbWVkaWEgZGV2aWNlIGRyaXZlciBuYW1lIGlzICJTQU1TVU5HIFM1UCBGSU1DIi4KKworVGhlIHB1cnBvc2Ugb2YgdGhpcyBpbnRlcmZhY2UgaXMgdG8gYWxsb3cgY2hhbmdpbmcgYXNzaWdubWVudCBvZiBGSU1DIGluc3RhbmNlcwordG8gdGhlIFNvQyBwZXJpcGhlcmFsIGNhbWVyYSBpbnB1dCBhdCBydW50aW1lIGFuZCBvcHRpb25hbGx5IHRvIGNvbnRyb2wgaW50ZXJuYWwKK2Nvbm5lY3Rpb25zIG9mIHRoZSBNSVBJLUNTSVMgZGV2aWNlKHMpIHRvIHRoZSBGSU1DIGVudGl0aWVzLgorCitUaGUgbWVkaWEgZGV2aWNlIGludGVyZmFjZSBhbGxvd3MgdG8gY29uZmlndXJlIHRoZSBTb0MgZm9yIGNhcHR1cmluZyBpbWFnZQorZGF0YSBmcm9tIHRoZSBzZW5zb3IgdGhyb3VnaCBtb3JlIHRoYW4gb25lIEZJTUMgaW5zdGFuY2UgKGUuZy4gZm9yIHNpbXVsdGFuZW91cwordmlld2ZpbmRlciBhbmQgc3RpbGwgY2FwdHVyZSBzZXR1cCkuCitSZWNvbmZpZ3VyYXRpb24gaXMgZG9uZSBieSBlbmFibGluZy9kaXNhYmxpbmcgbWVkaWEgbGlua3MgY3JlYXRlZCBieSB0aGUgZHJpdmVyCitkdXJpbmcgaW5pdGlhbGl6YXRpb24uIFRoZSBpbnRlcm5hbCBkZXZpY2UgdG9wb2xvZ3kgY2FuIGJlIGVhc2lseSBkaXNjb3ZlcmVkCit0aHJvdWdoIG1lZGlhIGVudGl0eSBhbmQgbGlua3MgZW51bWVyYXRpb24uCisKKzQuMi4gTWVtb3J5LXRvLW1lbW9yeSB2aWRlbyBub2RlCisKK1Y0TDIgbWVtb3J5LXRvLW1lbW9yeSBpbnRlcmZhY2UgYXQgL2Rldi92aWRlbz8gZGV2aWNlIG5vZGUuICBUaGlzIGlzIHN0YW5kYWxvbmUKK3ZpZGVvIGRldmljZSwgaXQgaGFzIG5vIG1lZGlhIHBhZHMuIEhvd2V2ZXIgcGxlYXNlIG5vdGUgdGhlIG1lbS10by1tZW0gYW5kCitjYXB0dXJlIHZpZGVvIG5vZGUgb3BlcmF0aW9uIG9uIHNhbWUgRklNQyBpbnN0YW5jZSBpcyBub3QgYWxsb3dlZC4gIFRoZSBkcml2ZXIKK2RldGVjdHMgc3VjaCBjYXNlcyBidXQgdGhlIGFwcGxpY2F0aW9ucyBzaG91bGQgcHJldmVudCB0aGVtIHRvIGF2b2lkIGFuCit1bmRlZmluZWQgYmVoYXZpb3VyLgorCis0LjMuIENhcHR1cmUgdmlkZW8gbm9kZQorCitUaGUgZHJpdmVyIHN1cHBvcnRzIFY0TDIgVmlkZW8gQ2FwdHVyZSBJbnRlcmZhY2UgYXMgZGVmaW5lZCBhdDoKK2h0dHA6Ly9saW51eHR2Lm9yZy9kb3dubG9hZHMvdjRsLWR2Yi1hcGlzL2RldmljZXMuaHRtbAorCitBdCB0aGUgY2FwdHVyZSBhbmQgbWVtLXRvLW1lbSB2aWRlbyBub2RlcyBvbmx5IHRoZSBtdWx0aS1wbGFuYXIgQVBJIGlzCitzdXBwb3J0ZWQuIEZvciBtb3JlIGRldGFpbHMgc2VlOgoraHR0cDovL2xpbnV4dHYub3JnL2Rvd25sb2Fkcy92NGwtZHZiLWFwaXMvcGxhbmFyLWFwaXMuaHRtbAorCis0LjQuIENhbWVyYSBjYXB0dXJlIHN1YmRldnMKKworRWFjaCBGSU1DIGluc3RhbmNlIGV4cG9ydHMgYSBzdWItZGV2aWNlIG5vZGUgKC9kZXYvdjRsLXN1YmRldj8pLCBhIHN1Yi1kZXZpY2UKK25vZGUgaXMgYWxzbyBjcmVhdGVkIHBlciBlYWNoIGF2YWlsYWJsZSBhbmQgZW5hYmxlZCBhdCB0aGUgcGxhdGZvcm0gbGV2ZWwKK01JUEktQ1NJIHJlY2VpdmVyIGRldmljZSAoY3VycmVudGx5IHVwIHRvIHR3bykuCisKKzQuNS4gc3lzZnMKKworSW4gb3JkZXIgdG8gZW5hYmxlIG1vcmUgcHJlY2lzZSBjYW1lcmEgcGlwZWxpbmUgY29udHJvbCB0aHJvdWdoIHRoZSBzdWItZGV2aWNlCitBUEkgdGhlIGRyaXZlciBjcmVhdGVzIGEgc3lzZnMgZW50cnkgYXNzb2NpYXRlZCB3aXRoICJzNXAtZmltYy1tZCIgcGxhdGZvcm0KK2RldmljZS4gVGhlIGVudHJ5IHBhdGggaXM6IC9zeXMvcGxhdGZvcm0vZGV2aWNlcy9zNXAtZmltYy1tZC9zdWJkZXZfY29uZl9tb2RlLgorCitJbiB0eXBpY2FsIHVzZSBjYXNlIHRoZXJlIGNvdWxkIGJlIGEgZm9sbG93aW5nIGNhcHR1cmUgcGlwZWxpbmUgY29uZmlndXJhdGlvbjoKK3NlbnNvciBzdWJkZXYgLT4gbWlwaS1jc2kgc3ViZGV2IC0+IGZpbWMgc3ViZGV2IC0+IHZpZGVvIG5vZGUKKworV2hlbiB3ZSBjb25maWd1cmUgdGhlc2UgZGV2aWNlcyB0aHJvdWdoIHN1Yi1kZXZpY2UgQVBJIGF0IHVzZXIgc3BhY2UsIHRoZQorY29uZmlndXJhdGlvbiBmbG93IG11c3QgYmUgZnJvbSBsZWZ0IHRvIHJpZ2h0LCBhbmQgdGhlIHZpZGVvIG5vZGUgaXMKK2NvbmZpZ3VyZWQgYXMgbGFzdCBvbmUuCitXaGVuIHdlIGRvbid0IHVzZSBzdWItZGV2aWNlIHVzZXIgc3BhY2UgQVBJIHRoZSB3aG9sZSBjb25maWd1cmF0aW9uIG9mIGFsbAorZGV2aWNlcyBiZWxvbmdpbmcgdG8gdGhlIHBpcGVsaW5lIGlzIGRvbmUgYXQgdGhlIHZpZGVvIG5vZGUgZHJpdmVyLgorVGhlIHN5c2ZzIGVudHJ5IGFsbG93cyB0byBpbnN0cnVjdCB0aGUgY2FwdHVyZSBub2RlIGRyaXZlciBub3QgdG8gY29uZmlndXJlCit0aGUgc3ViLWRldmljZXMgKGZvcm1hdCwgY3JvcCksIHRvIGF2b2lkIHJlc2V0dGluZyB0aGUgc3ViZGV2cycgY29uZmlndXJhdGlvbgord2hlbiB0aGUgbGFzdCBjb25maWd1cmF0aW9uIHN0ZXBzIGF0IHRoZSB2aWRlbyBub2RlIGlzIHBlcmZvcm1lZC4KKworRm9yIGZ1bGwgc3ViLWRldmljZSBjb250cm9sIHN1cHBvcnQgKHN1YmRldnMgY29uZmlndXJlZCBhdCB1c2VyIHNwYWNlIGJlZm9yZQorc3RhcnRpbmcgc3RyZWFtaW5nKToKKyMgZWNobyAic3ViLWRldiIgPiAvc3lzL3BsYXRmb3JtL2RldmljZXMvczVwLWZpbWMtbWQvc3ViZGV2X2NvbmZfbW9kZQorCitGb3IgVjRMMiB2aWRlbyBub2RlIGNvbnRyb2wgb25seSAoc3ViZGV2cyBjb25maWd1cmVkIGludGVybmFsbHkgYnkgdGhlIGhvc3QKK2RyaXZlcik6CisjIGVjaG8gInZpZC1kZXYiID4gL3N5cy9wbGF0Zm9ybS9kZXZpY2VzL3M1cC1maW1jLW1kL3N1YmRldl9jb25mX21vZGUKK1RoaXMgaXMgYSBkZWZhdWx0IG9wdGlvbi4KKworNS4gRGV2aWNlIG1hcHBpbmcgdG8gdmlkZW8gYW5kIHN1YmRldiBkZXZpY2Ugbm9kZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZXJlIGFyZSBhc3NvY2lhdGVkIHR3byB2aWRlbyBkZXZpY2Ugbm9kZXMgd2l0aCBlYWNoIGRldmljZSBpbnN0YW5jZSBpbgoraGFyZHdhcmUgLSB2aWRlbyBjYXB0dXJlIGFuZCBtZW0tdG8tbWVtIGFuZCBhZGRpdGlvbmFsbHkgYSBzdWJkZXYgbm9kZSBmb3IKK21vcmUgcHJlY2lzZSBGSU1DIGNhcHR1cmUgc3Vic3lzdGVtIGNvbnRyb2wuIEluIGFkZGl0aW9uIGEgc2VwYXJhdGUgdjRsMgorc3ViLWRldmljZSBub2RlIGlzIGNyZWF0ZWQgcGVyIGVhY2ggTUlQSS1DU0lTIGRldmljZS4KKworSG93IHRvIGZpbmQgb3V0IHdoaWNoIC9kZXYvdmlkZW8/IG9yIC9kZXYvdjRsLXN1YmRldj8gaXMgYXNzaWduZWQgdG8gd2hpY2gKK2RldmljZT8KKworWW91IGNhbiBlaXRoZXIgZ3JlcCB0aHJvdWdoIHRoZSBrZXJuZWwgbG9nIHRvIGZpbmQgcmVsZXZhbnQgaW5mb3JtYXRpb24sIGkuZS4KKyMgZG1lc2cgfCBncmVwIC1pIGZpbWMKKyhub3RlIHRoYXQgdWRldiwgaWYgcHJlc2VudCwgbWlnaHQgc3RpbGwgaGF2ZSByZWFycmFuZ2VkIHRoZSB2aWRlbyBub2RlcyksCisKK29yIHJldHJpZXZlIHRoZSBpbmZvcm1hdGlvbiBmcm9tIC9kZXYvbWVkaWE/IHdpdGggaGVscCBvZiB0aGUgbWVkaWEtY3RsIHRvb2w6CisjIG1lZGlhLWN0bCAtcAorCis3LiBCdWlsZAorPT09PT09PT0KKworSWYgdGhlIGRyaXZlciBpcyBidWlsdCBhcyBhIGxvYWRhYmxlIGtlcm5lbCBtb2R1bGUgKENPTkZJR19WSURFT19TQU1TVU5HX1M1UF9GSU1DPW0pCit0d28gbW9kdWxlcyBhcmUgY3JlYXRlZCAoaW4gYWRkaXRpb24gdG8gdGhlIGNvcmUgdjRsMiBtb2R1bGVzKTogczVwLWZpbWMua28gYW5kCitvcHRpb25hbCBzNXAtY3Npcy5rbyAoTUlQSS1DU0kgcmVjZWl2ZXIgc3ViZGV2KS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvZ3NwY2EudHh0IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9nc3BjYS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJiYTgwYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvZ3NwY2EudHh0CkBAIC0wLDAgKzEsNDA4IEBACitMaXN0IG9mIHRoZSB3ZWJjYW1zIGtub3duIGJ5IGdzcGNhLgorCitUaGUgbW9kdWxlcyBhcmU6CisJZ3NwY2FfbWFpbgltYWluIGRyaXZlcgorCWdzcGNhX3h4eHgJc3ViZHJpdmVyIG1vZHVsZSB3aXRoIHh4eHggYXMgZm9sbG93cworCit4eHh4CQl2ZW5kOnByb2QKKy0tLS0KK3NwY2E1MDEJCTAwMDA6MDAwMAlNeXN0RnJvbU9yaSBVbmtub3duIENhbWVyYQorc3BjYTUwOAkJMDEzMDowMTMwCUNsb25lIERpZ2l0YWwgV2ViY2FtIDExMDQzCit6YzN4eAkJMDNmMDoxYjA3CUhQIFByZW1pdW0gU3RhcnRlciBDYW0KK201NjAyCQkwNDAyOjU2MDIJQUxpIFZpZGVvIENhbWVyYSBDb250cm9sbGVyCitzcGNhNTAxCQkwNDBhOjAwMDIJS29kYWsgRFZDLTMyNQorc3BjYTUwMAkJMDQwYTowMzAwCUtvZGFrIEVaMjAwCit6YzN4eAkJMDQxZTowNDFlCUNyZWF0aXZlIFdlYkNhbSBMaXZlIQorb3Y1MTkJCTA0MWU6NDAwMwlWaWRlbyBCbGFzdGVyIFdlYkNhbSBHbyBQbHVzCitzcGNhNTAwCQkwNDFlOjQwMGEJQ3JlYXRpdmUgUEMtQ0FNIDMwMAorc3VucGx1cwkJMDQxZTo0MDBiCUNyZWF0aXZlIFBDLUNBTSA2MDAKK3N1bnBsdXMJCTA0MWU6NDAxMglQQy1DYW0zNTAKK3N1bnBsdXMJCTA0MWU6NDAxMwlDcmVhdGl2ZSBQY2NhbTc1MAoremMzeHgJCTA0MWU6NDAxNwlDcmVhdGl2ZSBXZWJjYW0gTW9iaWxlIFBEMTA5MAorc3BjYTUwOAkJMDQxZTo0MDE4CUNyZWF0aXZlIFdlYmNhbSBWaXN0YSAoUEQxMTAwKQorc3BjYTU2MQkJMDQxZTo0MDFhCUNyZWF0aXZlIFdlYmNhbSBWaXN0YSAoUEQxMTAwKQoremMzeHgJCTA0MWU6NDAxYwlDcmVhdGl2ZSBOWAorc3BjYTUwNQkJMDQxZTo0MDFkCUNyZWF0aXZlIFdlYmNhbSBOWCBVTFRSQQoremMzeHgJCTA0MWU6NDAxZQlDcmVhdGl2ZSBOeCBQcm8KK3pjM3h4CQkwNDFlOjQwMWYJQ3JlYXRpdmUgV2ViY2FtIE5vdGVib29rIFBEMTE3MQorcGFjMjA3CQkwNDFlOjQwMjgJQ3JlYXRpdmUgV2ViY2FtIFZpc3RhIFBsdXMKK3pjM3h4CQkwNDFlOjQwMjkJQ3JlYXRpdmUgV2ViQ2FtIFZpc3RhIFBybworemMzeHgJCTA0MWU6NDAzNAlDcmVhdGl2ZSBJbnN0YW50IFAwNjIwCit6YzN4eAkJMDQxZTo0MDM1CUNyZWF0aXZlIEluc3RhbnQgUDA2MjBECit6YzN4eAkJMDQxZTo0MDM2CUNyZWF0aXZlIExpdmUgIQorc3E5MzB4CQkwNDFlOjQwMzgJQ3JlYXRpdmUgSm95LUlUCit6YzN4eAkJMDQxZTo0MDNhCUNyZWF0aXZlIE54IFBybyAyCitzcGNhNTYxCQkwNDFlOjQwM2IJQ3JlYXRpdmUgV2ViY2FtIFZpc3RhIChWRjAwMTApCitzcTkzMHgJCTA0MWU6NDAzYwlDcmVhdGl2ZSBMaXZlISBVbHRyYQorc3E5MzB4CQkwNDFlOjQwM2QJQ3JlYXRpdmUgTGl2ZSEgVWx0cmEgZm9yIE5vdGVib29rcworc3E5MzB4CQkwNDFlOjQwNDEJQ3JlYXRpdmUgTGl2ZSEgTW90aW9uCit6YzN4eAkJMDQxZTo0MDUxCUNyZWF0aXZlIExpdmUhQ2FtIE5vdGVib29rIFBybyAoVkYwMjUwKQorb3Y1MTkJCTA0MWU6NDA1MglDcmVhdGl2ZSBMaXZlISBWSVNUQSBJTQoremMzeHgJCTA0MWU6NDA1MwlDcmVhdGl2ZSBMaXZlIUNhbSBWaWRlbyBJTQordmMwMzJ4CQkwNDFlOjQwNWIJQ3JlYXRpdmUgTGl2ZSEgQ2FtIE5vdGVib29rIFVsdHJhIChWQzAxMzApCitvdjUxOQkJMDQxZTo0MDVmCUNyZWF0aXZlIExpdmUhIFZJU1RBIFZGMDMzMAorb3Y1MTkJCTA0MWU6NDA2MAlDcmVhdGl2ZSBMaXZlISBWSVNUQSBWRjAzNTAKK292NTE5CQkwNDFlOjQwNjEJQ3JlYXRpdmUgTGl2ZSEgVklTVEEgVkYwNDAwCitvdjUxOQkJMDQxZTo0MDY0CUNyZWF0aXZlIExpdmUhIFZJU1RBIFZGMDQyMAorb3Y1MTkJCTA0MWU6NDA2NwlDcmVhdGl2ZSBMaXZlISBDYW0gVmlkZW8gSU0gKFZGMDM1MCkKK292NTE5CQkwNDFlOjQwNjgJQ3JlYXRpdmUgTGl2ZSEgVklTVEEgVkYwNDcwCitzcGNhNTYxCQkwNDU4OjcwMDQJR2VuaXVzIFZpZGVvQ0FNIEV4cHJlc3MgVjIKK3NuOWMyMDI4CTA0NTg6NzAwNQlHZW5pdXMgU21hcnQgMzAwLCB2ZXJzaW9uIDIKK3N1bnBsdXMJCTA0NTg6NzAwNglHZW5pdXMgRHNjIDEuMyBTbWFydAoremMzeHgJCTA0NTg6NzAwNwlHZW5pdXMgVmlkZW9DYW0gVjIKK3pjM3h4CQkwNDU4OjcwMGMJR2VuaXVzIFZpZGVvQ2FtIFYzCit6YzN4eAkJMDQ1ODo3MDBmCUdlbml1cyBWaWRlb0NhbSBXZWIgVjIKK3Nvbml4agkJMDQ1ODo3MDI1CUdlbml1cyBFeWUgMzExUQorc245YzIweAkJMDQ1ODo3MDI5CUdlbml1cyBMb29rIDMyMHMKK3Nvbml4agkJMDQ1ODo3MDJlCUdlbml1cyBTbGltIDMxMCBOQgorc245YzIweAkJMDQ1ODo3MDQ1CUdlbml1cyBMb29rIDEzMjAgVjIKK3NuOWMyMHgJCTA0NTg6NzA0YQlHZW5pdXMgU2xpbSAxMzIwCitzbjljMjB4CQkwNDU4OjcwNGMJR2VuaXVzIGktTG9vayAxMzIxCitzbjljMjB4CQkwNDVlOjAwZjQJTGlmZUNhbSBWWC02MDAwIChTTjlDMjB4ICsgT1Y5NjUwKQorc29uaXhqCQkwNDVlOjAwZjUJTWljcm9Tb2Z0IFZYMzAwMAorc29uaXhqCQkwNDVlOjAwZjcJTWljcm9Tb2Z0IFZYMTAwMAorb3Y1MTkJCTA0NWU6MDI4YwlNaWNybyRvZnQgeGJveCBjYW0KK3NwY2E1MDgJCTA0NjE6MDgxNQlNaWNybyBJbm5vdmF0aW9uIElDMjAwCitzdW5wbHVzCQkwNDYxOjA4MjEJRnVqaWZpbG0gTVYtMQoremMzeHgJCTA0NjE6MGEwMAlNaWNyb0lubm92YXRpb24gV2ViQ2FtMzIwCitzdHYwNnh4CQkwNDZkOjA4NDAJUXVpY2tDYW0gRXhwcmVzcworc3R2MDZ4eAkJMDQ2ZDowODUwCUxFR08gY2FtIC8gUXVpY2tDYW0gV2ViCitzdHYwNnh4CQkwNDZkOjA4NzAJRGV4eGEgV2ViQ2FtIFVTQgorc3BjYTUwMAkJMDQ2ZDowODkwCUxvZ2l0ZWNoIFF1aWNrQ2FtIHRyYXZlbGVyCit2YzAzMngJCTA0NmQ6MDg5MglMb2dpdGVjaCBPcmJpY2FtCit2YzAzMngJCTA0NmQ6MDg5NglMb2dpdGVjaCBPcmJpY2FtCit2YzAzMngJCTA0NmQ6MDg5NwlMb2dpdGVjaCBRdWlja0NhbSBmb3IgRGVsbCBub3RlYm9va3MKK3pjM3h4CQkwNDZkOjA4OWQJTG9naXRlY2ggUXVpY2tDYW0gRTI1MDAKK3pjM3h4CQkwNDZkOjA4YTAJTG9naXRlY2ggUUMgSU0KK3pjM3h4CQkwNDZkOjA4YTEJTG9naXRlY2ggUUMgSU0gMHgwOEExICtzb3VuZAoremMzeHgJCTA0NmQ6MDhhMglMYWJ0ZWMgV2ViY2FtIFBybworemMzeHgJCTA0NmQ6MDhhMwlMb2dpdGVjaCBRQyBDaGF0Cit6YzN4eAkJMDQ2ZDowOGE2CUxvZ2l0ZWNoIFFDaW0KK3pjM3h4CQkwNDZkOjA4YTcJTG9naXRlY2ggUXVpY2tDYW0gSW1hZ2UKK3pjM3h4CQkwNDZkOjA4YTkJTG9naXRlY2ggTm90ZWJvb2sgRGVsdXhlCit6YzN4eAkJMDQ2ZDowOGFhCUxhYnRlYyBXZWJjYW0gTm90ZWJvb2sKK3pjM3h4CQkwNDZkOjA4YWMJTG9naXRlY2ggUXVpY2tDYW0gQ29vbAoremMzeHgJCTA0NmQ6MDhhZAlMb2dpdGVjaCBRQ0NvbW11bmljYXRlIFNUWAoremMzeHgJCTA0NmQ6MDhhZQlMb2dpdGVjaCBRdWlja0NhbSBmb3IgTm90ZWJvb2tzCit6YzN4eAkJMDQ2ZDowOGFmCUxvZ2l0ZWNoIFF1aWNrQ2FtIENvb2wKK3pjM3h4CQkwNDZkOjA4YjkJTG9naXRlY2ggUXVpY2tDYW0gRXhwcmVzcworemMzeHgJCTA0NmQ6MDhkNwlMb2dpdGVjaCBRQ2FtIFNUWAoremMzeHgJCTA0NmQ6MDhkOQlMb2dpdGVjaCBRdWlja0NhbSBJTS9Db25uZWN0Cit6YzN4eAkJMDQ2ZDowOGQ4CUxvZ2l0ZWNoIE5vdGVib29rIERlbHV4ZQoremMzeHgJCTA0NmQ6MDhkYQlMb2dpdGVjaCBRdWlja0NhbSBNZXNzZW5nZXIKK3pjM3h4CQkwNDZkOjA4ZGQJTG9naXRlY2ggUXVpY2tDYW0gZm9yIE5vdGVib29rcworc3BjYTUwMAkJMDQ2ZDowOTAwCUxvZ2l0ZWNoIEluYy4gQ2xpY2tTbWFydCAzMTAKK3NwY2E1MDAJCTA0NmQ6MDkwMQlMb2dpdGVjaCBJbmMuIENsaWNrU21hcnQgNTEwCitzdW5wbHVzCQkwNDZkOjA5MDUJTG9naXRlY2ggQ2xpY2tTbWFydCA4MjAKK3R2ODUzMgkJMDQ2ZDowOTIwCUxvZ2l0ZWNoIFF1aWNrQ2FtIEV4cHJlc3MKK3R2ODUzMgkJMDQ2ZDowOTIxCUxhYnRlYyBXZWJjYW0KK3NwY2E1NjEJCTA0NmQ6MDkyOAlMb2dpdGVjaCBRQyBFeHByZXNzIEV0Y2gyCitzcGNhNTYxCQkwNDZkOjA5MjkJTGFidGVjIFdlYmNhbSBFbGNoMgorc3BjYTU2MQkJMDQ2ZDowOTJhCUxvZ2l0ZWNoIFFDIGZvciBOb3RlYm9vaworc3BjYTU2MQkJMDQ2ZDowOTJiCUxhYnRlYyBXZWJjYW0gUGx1cworc3BjYTU2MQkJMDQ2ZDowOTJjCUxvZ2l0ZWNoIFFDIGNoYXQgRWxjaDIKK3NwY2E1NjEJCTA0NmQ6MDkyZAlMb2dpdGVjaCBRQyBFbGNoMgorc3BjYTU2MQkJMDQ2ZDowOTJlCUxvZ2l0ZWNoIFFDIEVsY2gyCitzcGNhNTYxCQkwNDZkOjA5MmYJTG9naXRlY2ggUXVpY2tDYW0gRXhwcmVzcyBQbHVzCitzdW5wbHVzCQkwNDZkOjA5NjAJTG9naXRlY2ggQ2xpY2tTbWFydCA0MjAKK253ODB4CQkwNDZkOmQwMDEJTG9naXRlY2ggUXVpY2tDYW0gUHJvIChkYXJrIGZvY3VzIHJpbmcpCitzdW5wbHVzCQkwNDcxOjAzMjIJUGhpbGlwcyBETVZDMTMwMEsKK3pjM3h4CQkwNDcxOjAzMjUJUGhpbGlwcyBTUEMgMjAwIE5DCit6YzN4eAkJMDQ3MTowMzI2CVBoaWxpcHMgU1BDIDMwMCBOQworc29uaXhqCQkwNDcxOjAzMjcJUGhpbGlwcyBTUEMgNjAwIE5DCitzb25peGoJCTA0NzE6MDMyOAlQaGlsaXBzIFNQQyA3MDAgTkMKK3pjM3h4CQkwNDcxOjAzMmQJUGhpbGlwcyBTUEMgMjEwIE5DCit6YzN4eAkJMDQ3MTowMzJlCVBoaWxpcHMgU1BDIDMxNSBOQworc29uaXhqCQkwNDcxOjAzMzAJUGhpbGlwcyBTUEMgNzEwIE5DCitzcGNhNTAxCQkwNDk3OmMwMDEJU21pbGUgSW50ZXJuYXRpb25hbAorc3VucGx1cwkJMDRhNTozMDAzCUJlbnEgREMgMTMwMAorc3VucGx1cwkJMDRhNTozMDA4CUJlbnEgREMgMTUwMAorc3VucGx1cwkJMDRhNTozMDBhCUJlbnEgREMgMzQxMAorc3BjYTUwMAkJMDRhNTozMDBjCUJlbnEgREMgMTAxNgorYmVucQkJMDRhNTozMDM1CUJlbnEgREMgRTMwMAorZmluZXBpeAkJMDRjYjowMTA0CUZ1amlmaWxtIEZpbmVQaXggNDgwMAorZmluZXBpeAkJMDRjYjowMTA5CUZ1amlmaWxtIEZpbmVQaXggQTIwMgorZmluZXBpeAkJMDRjYjowMTBiCUZ1amlmaWxtIEZpbmVQaXggQTIwMworZmluZXBpeAkJMDRjYjowMTBmCUZ1amlmaWxtIEZpbmVQaXggQTIwNAorZmluZXBpeAkJMDRjYjowMTExCUZ1amlmaWxtIEZpbmVQaXggQTIwNQorZmluZXBpeAkJMDRjYjowMTEzCUZ1amlmaWxtIEZpbmVQaXggQTIxMAorZmluZXBpeAkJMDRjYjowMTE1CUZ1amlmaWxtIEZpbmVQaXggQTMwMworZmluZXBpeAkJMDRjYjowMTE3CUZ1amlmaWxtIEZpbmVQaXggQTMxMAorZmluZXBpeAkJMDRjYjowMTE5CUZ1amlmaWxtIEZpbmVQaXggRjQwMQorZmluZXBpeAkJMDRjYjowMTFiCUZ1amlmaWxtIEZpbmVQaXggRjQwMgorZmluZXBpeAkJMDRjYjowMTFkCUZ1amlmaWxtIEZpbmVQaXggRjQxMAorZmluZXBpeAkJMDRjYjowMTIxCUZ1amlmaWxtIEZpbmVQaXggRjYwMQorZmluZXBpeAkJMDRjYjowMTIzCUZ1amlmaWxtIEZpbmVQaXggRjcwMAorZmluZXBpeAkJMDRjYjowMTI1CUZ1amlmaWxtIEZpbmVQaXggTTYwMworZmluZXBpeAkJMDRjYjowMTI3CUZ1amlmaWxtIEZpbmVQaXggUzMwMAorZmluZXBpeAkJMDRjYjowMTI5CUZ1amlmaWxtIEZpbmVQaXggUzMwNAorZmluZXBpeAkJMDRjYjowMTJiCUZ1amlmaWxtIEZpbmVQaXggUzUwMAorZmluZXBpeAkJMDRjYjowMTJkCUZ1amlmaWxtIEZpbmVQaXggUzYwMgorZmluZXBpeAkJMDRjYjowMTJmCUZ1amlmaWxtIEZpbmVQaXggUzcwMAorZmluZXBpeAkJMDRjYjowMTMxCUZ1amlmaWxtIEZpbmVQaXggdW5rbm93biBtb2RlbAorZmluZXBpeAkJMDRjYjowMTNiCUZ1amlmaWxtIEZpbmVQaXggdW5rbm93biBtb2RlbAorZmluZXBpeAkJMDRjYjowMTNkCUZ1amlmaWxtIEZpbmVQaXggdW5rbm93biBtb2RlbAorZmluZXBpeAkJMDRjYjowMTNmCUZ1amlmaWxtIEZpbmVQaXggRjQyMAorc3VucGx1cwkJMDRmMToxMDAxCUpWQyBHQyBBNTAKK3NwY2E1NjEJCTA0ZmM6MDU2MQlGbGV4Y2FtIDEwMAorc3BjYTE1MjgJMDRmYzoxNTI4CVN1bnBsdXMgTUQ4MCBjbG9uZQorc3VucGx1cwkJMDRmYzo1MDBjCVN1bnBsdXMgQ0E1MDBDCitzdW5wbHVzCQkwNGZjOjUwNGEJQWlwdGVrIE1pbmkgUGVuQ2FtIDEuMworc3VucGx1cwkJMDRmYzo1MDRiCU1heGVsbCBNYXhQb2NrZXQgTEUgMS4zCitzdW5wbHVzCQkwNGZjOjUzMzAJRGlnaXRyZXggMjExMAorc3VucGx1cwkJMDRmYzo1MzYwCVN1bnBsdXMgR2VuZXJpYworc3BjYTUwMAkJMDRmYzo3MzMzCVBhbG1QaXhEQzg1CitzdW5wbHVzCQkwNGZjOmZmZmYJUHVyZSBEaWdpdGFsRGFrb3RhCitudzgweAkJMDUwMjpkMDAxCURWQyBWNgorc3BjYTUwMQkJMDUwNjowMGRmCTNDb20gSG9tZUNvbm5lY3QgTGl0ZQorc3VucGx1cwkJMDUyYjoxNTA3CU1lZ2FwaXhlbCA1IFByZXRlYyBEQy0xMDA3CitzdW5wbHVzCQkwNTJiOjE1MTMJTWVnYXBpeCBWNAorc3VucGx1cwkJMDUyYjoxODAzCU1lZ2FJbWFnZSBWSQorbnc4MHgJCTA1MmI6ZDAwMQlFWkNhbSBQcm8gcDM1dQordHY4NTMyCQkwNTQ1OjgwOGIJVmVvIFN0aW5ncmF5Cit0djg1MzIJCTA1NDU6ODMzMwlWZW8gU3RpbmdyYXkKK3N1bnBsdXMJCTA1NDY6MzE1NQlQb2xhcm9pZCBQREMzMDcwCitzdW5wbHVzCQkwNTQ2OjMxOTEJUG9sYXJvaWQgSW9uIDgwCitzdW5wbHVzCQkwNTQ2OjMyNzMJUG9sYXJvaWQgUERDMjAzMAorb3Y1MTkJCTA1NGM6MDE1NAlTb25ueSB0b3k0CitvdjUxOQkJMDU0YzowMTU1CVNvbm55IHRveTUKK2NwaWExCQkwNTUzOjAwMDIJQ1BJQSBDUGlBICh2ZXJzaW9uMSkgYmFzZWQgY2FtZXJhcworemMzeHgJCTA1NWY6YzAwNQlNdXN0ZWsgV2NhbTMwMEEKK3NwY2E1MDAJCTA1NWY6YzIwMAlNdXN0ZWsgR3NtYXJ0IDMwMAorc3VucGx1cwkJMDU1ZjpjMjExCUtvd2EgQnM4ODhlIE1pY3JvY2FtZXJhCitzcGNhNTAwCQkwNTVmOmMyMjAJR3NtYXJ0IE1pbmkKK3N1bnBsdXMJCTA1NWY6YzIzMAlNdXN0ZWsgRGlnaWNhbSAzMzBLCitzdW5wbHVzCQkwNTVmOmMyMzIJTXVzdGVrIE1EQzM1MDAKK3N1bnBsdXMJCTA1NWY6YzM2MAlNdXN0ZWsgRFY0MDAwIE1wZWc0CitzdW5wbHVzCQkwNTVmOmM0MjAJTXVzdGVrIGdTbWFydCBNaW5pIDIKK3N1bnBsdXMJCTA1NWY6YzQzMAlNdXN0ZWsgR3NtYXJ0IExDRCAyCitzdW5wbHVzCQkwNTVmOmM0NDAJTXVzdGVrIERWIDMwMDAKK3N1bnBsdXMJCTA1NWY6YzUyMAlNdXN0ZWsgZ1NtYXJ0IE1pbmkgMworc3VucGx1cwkJMDU1ZjpjNTMwCU11c3RlayBHc21hcnQgTENEIDMKK3N1bnBsdXMJCTA1NWY6YzU0MAlHc21hcnQgRDMwCitzdW5wbHVzCQkwNTVmOmM2MzAJTXVzdGVrIE1EQzQwMDAKK3N1bnBsdXMJCTA1NWY6YzY1MAlNdXN0ZWsgTURDNTUwMFoKK253ODB4CQkwNTVmOmQwMDEJTXVzdGVrIFdjYW0gMzAwIG1pbmkKK3pjM3h4CQkwNTVmOmQwMDMJTXVzdGVrIFdDYW0zMDBBCit6YzN4eAkJMDU1ZjpkMDA0CU11c3RlayBXQ2FtMzAwIEFOCitjb25leAkJMDU3MjowMDQxCUNyZWF0aXZlIE5vdGVib29rIGN4MTE2NDYKK292NTE5CQkwNWE5OjA1MTEJVmlkZW8gQmxhc3RlciBXZWJDYW0gMy9XZWJDYW0gUGx1cywgRC1MaW5rIFVTQiBEaWdpdGFsIFZpZGVvIENhbWVyYQorb3Y1MTkJCTA1YTk6MDUxOAlDcmVhdGl2ZSBXZWJDYW0KK292NTE5CQkwNWE5OjA1MTkJT1Y1MTkgTWljcm9waG9uZQorb3Y1MTkJCTA1YTk6MDUzMAlPbW5pVmlzaW9uCitvdjUzNF85CQkwNWE5OjE1NTAJT21uaVZpc2lvbiBWRUhPIEZpbG1zY2FubmVyCitvdjUxOQkJMDVhOToyODAwCU9tbmlWaXNpb24gU3VwZXJDQU0KK292NTE5CQkwNWE5OjQ1MTkJV2ViY2FtIENsYXNzaWMKK292NTM0XzkJCTA1YTk6ODA2NQlPbW5pVmlzaW9uIHRlc3Qga2l0IG92NTM4K292OTcxMgorb3Y1MTkJCTA1YTk6ODUxOQlPbW5pVmlzaW9uCitvdjUxOQkJMDVhOTphNTExCUQtTGluayBVU0IgRGlnaXRhbCBWaWRlbyBDYW1lcmEKK292NTE5CQkwNWE5OmE1MTgJRC1MaW5rIERTQi1DMzEwIFdlYmNhbQorc3VucGx1cwkJMDVkYToxMDE4CURpZ2l0YWwgRHJlYW0gRW5pZ21hIDEuMworc3RrMDE0CQkwNWUxOjA4OTMJU3ludGVrIERWNDAwMAorZ2w4NjAJCTA1ZTM6MDUwMwlHZW5lc3lzIExvZ2ljIFBDIENhbWVyYQorZ2w4NjAJCTA1ZTM6ZjE5MQlHZW5lc3lzIExvZ2ljIFBDIENhbWVyYQorc3BjYTU2MQkJMDYwYjphMDAxCU1heGVsbCBDb21wYWN0IFBjIFBNMworemMzeHgJCTA2OTg6MjAwMwlDVFggTTczMFYgYnVpbHQgaW4KK3RvcHJvCQkwNmEyOjAwMDMJVFA2ODAwIFBDIENhbWVyYSwgQ21vWCBDWDAzNDIgd2ViY2FtCit0b3BybwkJMDZhMjo2ODEwCUNyZWF0aXZlIFFtYXgKK253ODB4CQkwNmE1OjAwMDAJVHlwaG9vbiBXZWJjYW0gMTAwIFVTQgorbnc4MHgJCTA2YTU6ZDAwMQlEaXZpbyBiYXNlZCB3ZWJjYW1zCitudzgweAkJMDZhNTpkODAwCURpdmlvIENoaWNvbnkgVHdpbmtsZUNhbSwgVHJ1c3QgU3BhY2VDYW0KK3NwY2E1MDAJCTA2YmQ6MDQwNAlBZ2ZhIENMMjAKK3NwY2E1MDAJCTA2YmU6MDgwMAlPcHRpbWVkaWEKK253ODB4CQkwNmJlOmQwMDEJRVpDYW0gUHJvIHAzNXUKK3N1bnBsdXMJCTA2ZDY6MDAzMQlUcnVzdCA2MTAgTENEIFBvd2VyQ0BtIFpvb20KK3NwY2E1MDYJCTA2ZTE6YTE5MAlBRFMgSW5zdGFudCBWQ0QKK292NTM0CQkwNmY4OjMwMDIJSGVyY3VsZXMgQmxvZyBXZWJjYW0KK292NTM0XzkJCTA2Zjg6MzAwMwlIZXJjdWxlcyBEdWFscGl4IEhEIFdlYmxvZworc29uaXhqCQkwNmY4OjMwMDQJSGVyY3VsZXMgQ2xhc3NpYyBTaWx2ZXIKK3Nvbml4agkJMDZmODozMDA4CUhlcmN1bGVzIERlbHV4ZSBPcHRpY2FsIEdsYXNzCitwYWM3MzAyCQkwNmY4OjMwMDkJSGVyY3VsZXMgQ2xhc3NpYyBMaW5rCitwYWM3MzAyCQkwNmY4OjMwMWIJSGVyY3VsZXMgTGluaworbnc4MHgJCTA3Mjg6ZDAwMQlBVmVyTWVkaWEgQ2FtZ3VhcmQKK3NwY2E1MDgJCTA3MzM6MDExMAlWaWV3UXVlc3QgVlExMTAKK3NwY2E1MDEJCTA3MzM6MDQwMQlJbnRlbCBDcmVhdGUgYW5kIFNoYXJlCitzcGNhNTAxCQkwNzMzOjA0MDIJVmlld1F1ZXN0IE0zMThCCitzcGNhNTA1CQkwNzMzOjA0MzAJSW50ZWwgUEMgQ2FtZXJhIFBybworc3VucGx1cwkJMDczMzoxMzExCURpZ2l0YWwgRHJlYW0gRXBzaWxvbiAxLjMKK3N1bnBsdXMJCTA3MzM6MTMxNAlNZXJjdXJ5IDIuMU1FRyBEZWx1eGUgQ2xhc3NpYyBDYW0KK3N1bnBsdXMJCTA3MzM6MjIxMQlKZW5vcHRpayBqZGMgMjEgTENECitzdW5wbHVzCQkwNzMzOjIyMjEJTWVyY3VyeSBEaWdpdGFsIFBybyAzLjFwCitzdW5wbHVzCQkwNzMzOjMyNjEJQ29uY29yZCAzMDQ1IHNwY2E1MzZhCitzdW5wbHVzCQkwNzMzOjMyODEJQ3liZXJwaXggUzU1MFYKK3NwY2E1MDYJCTA3MzQ6MDQzYgkzRGVNb24gVVNCIENhcHR1cmUgYWthCitjcGlhMQkJMDgxMzowMDAxCVFYMyBjYW1lcmEKK292NTE5CQkwODEzOjAwMDIJRHVhbCBNb2RlIFVTQiBDYW1lcmEgUGx1cworc3BjYTUwMAkJMDg0ZDowMDAzCUQtTGluayBEU0MtMzUwCitzcGNhNTAwCQkwOGNhOjAxMDMJQWlwdGVrIFBvY2tldERWCitzdW5wbHVzCQkwOGNhOjAxMDQJQWlwdGVrIFBvY2tldERWSUkgMS4zCitzdW5wbHVzCQkwOGNhOjAxMDYJQWlwdGVrIFBvY2tldCBEVjMxMDArCittcjk3MzEwYQkwOGNhOjAxMTAJVHJ1c3QgU3B5Y0BtIDEwMAorbXI5NzMxMGEJMDhjYTowMTExCUFpcHRlayBQZW5DYW0gVkdBKworc3VucGx1cwkJMDhjYToyMDA4CUFpcHRlayBNaW5pIFBlbkNhbSAyIE0KK3N1bnBsdXMJCTA4Y2E6MjAxMAlBaXB0ZWsgUG9ja2V0Q2FtIDNNCitzdW5wbHVzCQkwOGNhOjIwMTYJQWlwdGVrIFBvY2tldENhbSAyIE1lZ2EKK3N1bnBsdXMJCTA4Y2E6MjAxOAlBaXB0ZWsgUGVuY2FtIFNEIDJNCitzdW5wbHVzCQkwOGNhOjIwMjAJQWlwdGVrIFNsaW0gMzAwMEYKK3N1bnBsdXMJCTA4Y2E6MjAyMglBaXB0ZWsgU2xpbSAzMjAwCitzdW5wbHVzCQkwOGNhOjIwMjQJQWlwdGVrIERWMzUwMCBNcGVnNAorc3VucGx1cwkJMDhjYToyMDI4CUFpcHRlayBQb2NrZXRDYW00TQorc3VucGx1cwkJMDhjYToyMDQwCUFpcHRlayBQb2NrZXREVjQxMDBNCitzdW5wbHVzCQkwOGNhOjIwNDIJQWlwdGVrIFBvY2tldERWNTEwMAorc3VucGx1cwkJMDhjYToyMDUwCU1lZGlvbiBNRCA0MTQzNworc3VucGx1cwkJMDhjYToyMDYwCUFpcHRlayBQb2NrZXREVjUzMDAKK3R2ODUzMgkJMDkyMzowMTBmCUlDTTUzMiBjYW1zCittYXJzCQkwOTNhOjA1MGYJTWFycy1TZW1pIFBjLUNhbWVyYQorbXI5NzMxMGEJMDkzYTowMTBlCUFsbCBrbm93biBDSUYgY2FtcyB3aXRoIHRoaXMgSUQKK21yOTczMTBhCTA5M2E6MDEwZglBbGwga25vd24gVkdBIGNhbXMgd2l0aCB0aGlzIElECitwYWMyMDcJCTA5M2E6MjQ2MAlRdGVjIFdlYmNhbSAxMDAKK3BhYzIwNwkJMDkzYToyNDYxCUhQIFdlYmNhbQorcGFjMjA3CQkwOTNhOjI0NjMJUGhpbGlwcyBTUEMgMjIwIE5DCitwYWMyMDcJCTA5M2E6MjQ2NAlMYWJ0ZWMgV2ViY2FtIDEyMDAKK3BhYzIwNwkJMDkzYToyNDY4CVdlYmNhbSBXQi0xNDAwVAorcGFjMjA3CQkwOTNhOjI0NzAJR2VuaXVzIEdGMTEyCitwYWMyMDcJCTA5M2E6MjQ3MQlHZW5pdXMgVmlkZW9DYW0gZ2UxMTEKK3BhYzIwNwkJMDkzYToyNDcyCUdlbml1cyBWaWRlb0NhbSBnZTExMAorcGFjMjA3CQkwOTNhOjI0NzQJR2VuaXVzIGlMb29rIDExMQorcGFjMjA3CQkwOTNhOjI0NzYJR2VuaXVzIGUtTWVzc2VuZ2VyIDExMgorcGFjNzMxMQkJMDkzYToyNjAwCVBBQzczMTEgVHlwaG9vbgorcGFjNzMxMQkJMDkzYToyNjAxCVBoaWxpcHMgU1BDIDYxMCBOQworcGFjNzMxMQkJMDkzYToyNjAzCVBoaWxpcHMgU1BDIDUwMCBOQworcGFjNzMxMQkJMDkzYToyNjA4CVRydXN0IFdCLTMzMDBwCitwYWM3MzExCQkwOTNhOjI2MGUJR2lnYXdhcmUgVkdBIFBDIENhbWVyYSwgVHJ1c3QgV0ItMzM1MHAsIFNJR01BIGNhbSAyMzUwCitwYWM3MzExCQkwOTNhOjI2MGYJU25ha2VDYW0KK3BhYzczMDIJCTA5M2E6MjYyMAlBcG9sbG8gQUMtOTA1CitwYWM3MzAyCQkwOTNhOjI2MjEJUEFDNzMxeAorcGFjNzMwMgkJMDkzYToyNjIyCUdlbml1cyBFeWUgMzEyCitwYWM3MzAyCQkwOTNhOjI2MjQJUEFDNzMwMgorcGFjNzMwMgkJMDkzYToyNjI1CUdlbml1cyBpU2xpbSAzMTAKK3BhYzczMDIJCTA5M2E6MjYyNglMYWJ0ZWMgMjIwMAorcGFjNzMwMgkJMDkzYToyNjI3CUdlbml1cyBGYWNlQ2FtIDMwMAorcGFjNzMwMgkJMDkzYToyNjI4CUdlbml1cyBpTG9vayAzMDAKK3BhYzczMDIJCTA5M2E6MjYyOQlHZW5pb3VzIGlTbGltIDMwMAorcGFjNzMwMgkJMDkzYToyNjJhCVdlYmNhbSAzMDBrCitwYWM3MzAyCQkwOTNhOjI2MmMJUGhpbGlwcyBTUEMgMjMwIE5DCitqbDIwMDViY2QJMDk3OTowMjI3CVZhcmlvdXMgYnJhbmRzLCAxOSBrbm93biBjYW1lcmFzIHN1cHBvcnRlZAoramVpbGluagkJMDk3OTowMjgwCVNha2FyIDU3Mzc5CitqZWlsaW5qCQkwOTc5OjAyODAJU3BvcnRzY2FtIERWMTUKK3pjM3h4CQkwYWM4OjAzMDIJWi1zdGFyIFZpbWljcm8gemMwMzAyCit2YzAzMngJCTBhYzg6MDMyMQlWaW1pY3JvIGdlbmVyaWMgdmMwMzIxCit2YzAzMngJCTBhYzg6MDMyMwlWaW1pY3JvIFZjMDMyMwordmMwMzJ4CQkwYWM4OjAzMjgJQTRUZWNoIFBLLTEzME1HCit6YzN4eAkJMGFjODozMDFiCVotU3RhciB6YzMwMWIKK3pjM3h4CQkwYWM4OjMwM2IJVmltaWNybyAweDMwM2IKK3pjM3h4CQkwYWM4OjMwNWIJWi1zdGFyIFZpbWljcm8gemMwMzA1YgoremMzeHgJCTBhYzg6MzA3YglQQyBDYW1lcmEgKFpTMDIxMSkKK3ZjMDMyeAkJMGFjODpjMDAxCVNvbnkgZW1iZWRkZWQgdmltaWNybwordmMwMzJ4CQkwYWM4OmMwMDIJU29ueSBlbWJlZGRlZCB2aW1pY3JvCit2YzAzMngJCTBhYzg6YzMwMQlTYW1zdW5nIFExIFVsdHJhIFByZW1pdW0KK3NwY2E1MDgJCTBhZjk6MDAxMAlIYW1hIFVTQiBTaWdodGNhbSAxMDAKK3NwY2E1MDgJCTBhZjk6MDAxMQlIYW1hIFVTQiBTaWdodGNhbSAxMDAKK292NTE5CQkwYjYyOjAwNTkJaUJPVDIgV2ViY2FtCitzb25peGIJCTBjNDU6NjAwMQlHZW5pdXMgVmlkZW9DQU0gTkIKK3Nvbml4YgkJMGM0NTo2MDA1CU1pY3JvZGlhIFN3ZWV4IE1pbmkgV2ViY2FtCitzb25peGIJCTBjNDU6NjAwNwlTb25peCBzbjljMTAxICsgVGFzNTExMEQKK3Nvbml4YgkJMGM0NTo2MDA5CXNwY2FDYW1AMTIwCitzb25peGIJCTBjNDU6NjAwZAlzcGNhQ2FtQDEyMAorc29uaXhiCQkwYzQ1OjYwMTEJTWljcm9kaWEgUEMgQ2FtZXJhIChTTjlDMTAyKQorc29uaXhiCQkwYzQ1OjYwMTkJR2VuZXJpYyBTb25peCBPVjc2MzAKK3Nvbml4YgkJMGM0NTo2MDI0CUdlbmVyaWMgU29uaXggVGFzNTEzMGMKK3Nvbml4YgkJMGM0NTo2MDI1CVhjYW0gU2hhbmdhCitzb25peGIJCTBjNDU6NjAyOAlTb25peCBCdGMgUGMzODAKK3Nvbml4YgkJMGM0NTo2MDI5CXNwY2FDYW1AMTUwCitzb25peGIJCTBjNDU6NjAyYwlHZW5lcmljIFNvbml4IE9WNzYzMAorc29uaXhiCQkwYzQ1OjYwMmQJTElDLTIwMCBMRworc29uaXhiCQkwYzQ1OjYwMmUJR2VuaXVzIFZpZGVvQ2FtIE1lc3Nlbmdlcgorc29uaXhqCQkwYzQ1OjYwNDAJU3BlZWQgTlZDIDM1MEsKK3Nvbml4agkJMGM0NTo2MDdjCVNvbml4IHNuOWMxMDJwIEh2NzEzMVIKK3Nvbml4agkJMGM0NTo2MGMwCVNhbmdoYSBTbjUzNQorc29uaXhqCQkwYzQ1OjYwY2UJVVNCLVBDLUNhbWVyYS0xNjggKFRBTEstNTA2NykKK3Nvbml4agkJMGM0NTo2MGVjCVNOOUMxMDUrTU80MDAwCitzb25peGoJCTBjNDU6NjBmYglTdXJmZXIgTm9OYW1lCitzb25peGoJCTBjNDU6NjBmYwlMRy1MSUMzMDAKK3Nvbml4agkJMGM0NTo2MGZlCU1pY3JvZGlhIEF1ZGlvCitzb25peGoJCTBjNDU6NjEwMAlQQyBDYW1lcmEgKFNOOUMxMjgpCitzb25peGoJCTBjNDU6NjEwMglQQyBDYW1lcmEgKFNOOUMxMjgpCitzb25peGoJCTBjNDU6NjEwYQlQQyBDYW1lcmEgKFNOOUMxMjgpCitzb25peGoJCTBjNDU6NjEwYglQQyBDYW1lcmEgKFNOOUMxMjgpCitzb25peGoJCTBjNDU6NjEwYwlQQyBDYW1lcmEgKFNOOUMxMjgpCitzb25peGoJCTBjNDU6NjEwZQlQQyBDYW1lcmEgKFNOOUMxMjgpCitzb25peGoJCTBjNDU6NjEyOAlNaWNyb2RpYS9Tb25peCBTTlAzMjUKK3Nvbml4agkJMGM0NTo2MTJhCUF2YW50IENhbWVyYQorc29uaXhqCQkwYzQ1OjYxMmIJU3BlZWQtTGluayBSRUZMRUNUMgorc29uaXhqCQkwYzQ1OjYxMmMJVHlwaG9vbiBSYXN5IENhbSAxLjNNUGl4Citzb25peGoJCTBjNDU6NjEzMAlTb25peCBQY2NhbQorc29uaXhqCQkwYzQ1OjYxMzgJU245YzEyMCBNbzQwMDAKK3Nvbml4agkJMGM0NTo2MTNhCU1pY3JvZGlhIFNvbml4IFBDIENhbWVyYQorc29uaXhqCQkwYzQ1OjYxM2IJU3VyZmVyIFNOLTIwNgorc29uaXhqCQkwYzQ1OjYxM2MJU29uaXggUGNjYW0xNjgKK3Nvbml4agkJMGM0NTo2MTQyCUhhbWEgUEMtV2ViY2FtIEFDLTE1MAorc29uaXhqCQkwYzQ1OjYxNDMJU29uaXggUGNjYW0xNjgKK3Nvbml4agkJMGM0NTo2MTQ4CURpZ2l0dXMgREEtNzA4MTEvWlNNQyBVU0IgUEMgQ2FtZXJhIFpTMjExL01pY3JvZGlhCitzb25peGoJCTBjNDU6NjE0YQlGcm9udGVjaCBFLUNjYW0gKEpJTC0yMjI1KQorc245YzIweAkJMGM0NTo2MjQwCVBDIENhbWVyYSAoU045QzIwMSArIE1UOU0wMDEpCitzbjljMjB4CQkwYzQ1OjYyNDIJUEMgQ2FtZXJhIChTTjlDMjAxICsgTVQ5TTExMSkKK3NuOWMyMHgJCTBjNDU6NjI0OAlQQyBDYW1lcmEgKFNOOUMyMDEgKyBPVjk2NTUpCitzbjljMjB4CQkwYzQ1OjYyNGMJUEMgQ2FtZXJhIChTTjlDMjAxICsgTVQ5TTExMikKK3NuOWMyMHgJCTBjNDU6NjI0ZQlQQyBDYW1lcmEgKFNOOUMyMDEgKyBTT0k5NjgpCitzbjljMjB4CQkwYzQ1OjYyNGYJUEMgQ2FtZXJhIChTTjlDMjAxICsgT1Y5NjUwKQorc245YzIweAkJMGM0NTo2MjUxCVBDIENhbWVyYSAoU045QzIwMSArIE9WOTY1MCkKK3NuOWMyMHgJCTBjNDU6NjI1MwlQQyBDYW1lcmEgKFNOOUMyMDEgKyBPVjk2NTApCitzbjljMjB4CQkwYzQ1OjYyNjAJUEMgQ2FtZXJhIChTTjlDMjAxICsgT1Y3NjcwKQorc245YzIweAkJMGM0NTo2MjcwCVBDIENhbWVyYSAoU045QzIwMSArIE1UOVYwMTEvTVQ5VjExMS9NVDlWMTEyKQorc245YzIweAkJMGM0NTo2MjdiCVBDIENhbWVyYSAoU045QzIwMSArIE9WNzY2MCkKK3NuOWMyMHgJCTBjNDU6NjI3YwlQQyBDYW1lcmEgKFNOOUMyMDEgKyBIVjcxMzFSKQorc245YzIweAkJMGM0NTo2MjdmCVBDIENhbWVyYSAoU045QzIwMSArIE9WOTY1MCkKK3NuOWMyMHgJCTBjNDU6NjI4MAlQQyBDYW1lcmEgKFNOOUMyMDIgKyBNVDlNMDAxKQorc245YzIweAkJMGM0NTo2MjgyCVBDIENhbWVyYSAoU045QzIwMiArIE1UOU0xMTEpCitzbjljMjB4CQkwYzQ1OjYyODgJUEMgQ2FtZXJhIChTTjlDMjAyICsgT1Y5NjU1KQorc245YzIweAkJMGM0NTo2MjhjCVBDIENhbWVyYSAoU045QzIwMSArIE1UOU0xMTIpCitzbjljMjB4CQkwYzQ1OjYyOGUJUEMgQ2FtZXJhIChTTjlDMjAyICsgU09JOTY4KQorc245YzIweAkJMGM0NTo2MjhmCVBDIENhbWVyYSAoU045QzIwMiArIE9WOTY1MCkKK3NuOWMyMHgJCTBjNDU6NjJhMAlQQyBDYW1lcmEgKFNOOUMyMDIgKyBPVjc2NzApCitzbjljMjB4CQkwYzQ1OjYyYjAJUEMgQ2FtZXJhIChTTjlDMjAyICsgTVQ5VjAxMS9NVDlWMTExL01UOVYxMTIpCitzbjljMjB4CQkwYzQ1OjYyYjMJUEMgQ2FtZXJhIChTTjlDMjAyICsgT1Y5NjU1KQorc245YzIweAkJMGM0NTo2MmJiCVBDIENhbWVyYSAoU045QzIwMiArIE9WNzY2MCkKK3NuOWMyMHgJCTBjNDU6NjJiYwlQQyBDYW1lcmEgKFNOOUMyMDIgKyBIVjcxMzFSKQorc245YzIwMjgJMGM0NTo4MDAxCVdpbGQgUGxhbmV0IERpZ2l0YWwgU3B5IENhbWVyYQorc245YzIwMjgJMGM0NTo4MDAzCVNha2FyICMxMTE5OSwgIzY2Mzd4LCAjNjc0ODAga2V5Y2hhaW4gY2Ftcworc245YzIwMjgJMGM0NTo4MDA4CU1pbmktU2hvdHogbXMtMzUwCitzbjljMjAyOAkwYzQ1OjgwMGEJVml2aXRhciBWaXZpY2FtIDMzNTBCCitzdW5wbHVzCQkwZDY0OjAzMDMJU3VucGx1cyBGYXNoaW9uQ2FtIERYRworb3Y1MTkJCTBlOTY6YzAwMQlUUlVTVCAzODAgVVNCMiBTUEFDRUNATQorZXRvbXMJCTEwMmM6NjE1MQlRY2FtIFNhbmdoYSBDSUYKK2V0b21zCQkxMDJjOjYyNTEJUWNhbSB4eHh4eHggVkdBCitvdjUxOQkJMTA0Njo5OTY3CVc5OTY3Q0YvVzk5NjhDRiBXZWJDYW0gSUMsIFZpZGVvIEJsYXN0ZXIgV2ViQ2FtIEdvCit6YzN4eAkJMTBmZDowMTI4CVR5cGhvb24gV2Vic2hvdCBJSSBVU0IgMzAwayAweDAxMjgKK3NwY2E1NjEJCTEwZmQ6N2U1MAlGbHlDYW0gVXNiIDEwMAoremMzeHgJCTEwZmQ6ODA1MAlUeXBob29uIFdlYnNob3QgSUkgVVNCIDMwMGsKK292NTM0CQkxNDE1OjIwMDAJU29ueSBIRCBFeWUgZm9yIFBTMyAoU0xFSCAwMDIwMSkKK3BhYzIwNwkJMTQ1ZjowMTNhCVRydXN0IFdCLTEzMDBOCitzbjljMjB4CQkxNDVmOjAxM2QJVHJ1c3QgV0ItMzYwMFIKK3ZjMDMyeAkJMTViODo2MDAxCUhQIDIuMCBNZWdhcGl4ZWwKK3ZjMDMyeAkJMTViODo2MDAyCUhQIDIuMCBNZWdhcGl4ZWwgcno0MDZhYQorc3BjYTUwMQkJMTc3Njo1MDFjCUFyb3dhbmEgMzAwSyBDTU9TIENhbWVyYQordDYxMwkJMTdhMTowMTI4CVRBU0NPUlAgSlBFRyBXZWJjYW0sIE5HUyBDeWNsb3BzCit2YzAzMngJCTE3ZWY6NDgwMglMZW5vdm8gVmMwMzIzK01JMTMxMF9TT0MKK3BhYzIwNwkJMjAwMTpmMTE1CUQtTGluayBEU0ItQzEyMAorc3E5MDVjCQkyNzcwOjkwNTAJRGlzbmV5IHBpeCBtaWNybyAoQ0lGKQorc3E5MDVjCQkyNzcwOjkwNTEJTGVnbyBCaW9uaWNsZQorc3E5MDVjCQkyNzcwOjkwNTIJRGlzbmV5IHBpeCBtaWNybyAyIChWR0EpCitzcTkwNWMJCTI3NzA6OTA1YwlBbGwgMTEga25vd24gY2FtZXJhcyB3aXRoIHRoaXMgSUQKK3NxOTA1CQkyNzcwOjkxMjAJQWxsIDI0IGtub3duIGNhbWVyYXMgd2l0aCB0aGlzIElECitzcTkwNWMJCTI3NzA6OTEzZAlBbGwgNCBrbm93biBjYW1lcmFzIHdpdGggdGhpcyBJRAorc3E5MzB4CQkyNzcwOjkzMGIJU3dlZXggTW90aW9uIFRyYWNraW5nIC8gSS1UZWMgaUNhbSBUcmFjZXIKK3NxOTMweAkJMjc3MDo5MzBjCVRydXN0IFdCLTM1MDBUIC8gTlNHIFJvYmJpZSAyLjAKK3NwY2E1MDAJCTI4OTk6MDEyYwlUb3B0cm8gSW5kdXN0cmlhbAorb3Y1MTkJCTgwMjA6ZWYwNAlvdjUxOQorc3BjYTUwOAkJODA4NjowMTEwCUludGVsIEVhc3kgUEMgQ2FtZXJhCitzcGNhNTAwCQk4MDg2OjA2MzAJSW50ZWwgUG9ja2V0IFBDIENhbWVyYQorc3BjYTUwNgkJOTlmYTo4OTg4CUdyYW5kdGVjIFYuY2FwCitzbjljMjB4CQlhMTY4OjA2MTAJRGluby1MaXRlIERpZ2l0YWwgTWljcm9zY29wZSAoU045QzIwMSArIEhWNzEzMVIpCitzbjljMjB4CQlhMTY4OjA2MTEJRGluby1MaXRlIERpZ2l0YWwgTWljcm9zY29wZSAoU045QzIwMSArIEhWNzEzMVIpCitzbjljMjB4CQlhMTY4OjA2MTMJRGluby1MaXRlIERpZ2l0YWwgTWljcm9zY29wZSAoU045QzIwMSArIEhWNzEzMVIpCitzbjljMjB4CQlhMTY4OjA2MTgJRGluby1MaXRlIERpZ2l0YWwgTWljcm9zY29wZSAoU045QzIwMSArIEhWNzEzMVIpCitzbjljMjB4CQlhMTY4OjA2MTQJRGluby1MaXRlIERpZ2l0YWwgTWljcm9zY29wZSAoU045QzIwMSArIE1UOU0xMTEpCitzbjljMjB4CQlhMTY4OjA2MTUJRGluby1MaXRlIERpZ2l0YWwgTWljcm9zY29wZSAoU045QzIwMSArIE1UOU0xMTEpCitzbjljMjB4CQlhMTY4OjA2MTcJRGluby1MaXRlIERpZ2l0YWwgTWljcm9zY29wZSAoU045QzIwMSArIE1UOU0xMTEpCitzcGNhNTYxCQlhYmNkOmNkZWUJUGV0Y2FtCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2hhdXBwYXVnZS13aW50di1jeDg4LWlyLnR4dCBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvaGF1cHBhdWdlLXdpbnR2LWN4ODgtaXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyZmQzNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2hhdXBwYXVnZS13aW50di1jeDg4LWlyLnR4dApAQCAtMCwwICsxLDU0IEBACitUaGUgY29udHJvbHMgZm9yIHRoZSBtdXggYXJlIEdQSU8gWzAsMV0gZm9yIHNvdXJjZSwgYW5kIEdQSU8gMiBmb3IgbXV0aW5nLgorCitHUElPMCAgR1BJTzEKKyAgMCAgICAgICAgMCAgICBUViBBdWRpbworICAxICAgICAgICAwICAgIEZNIHJhZGlvCisgIDAgICAgICAgIDEgICAgTGluZS1JbgorICAxICAgICAgICAxICAgIE1vbm8gdHVuZXIgYnlwYXNzIG9yIENEIHBhc3N0aHJ1ICh0dW5lciBzcGVjaWZpYykKKworR1BJTyAxNihpIGJlbGlldmUpIGlzIHRpZWQgdG8gdGhlIElSIHBvcnQgKGlmIHByZXNlbnQpLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworPkZyb20gdGhlIGRhdGEgc2hlZXQ6CisgUmVnaXN0ZXIgMjQnaDIwMDA0ICBQQ0kgSW50ZXJydXB0IFN0YXR1cworICBiaXQgWzE4XSAgSVJfU01QX0lOVCBTZXQgd2hlbiAzMiBpbnB1dCBzYW1wbGVzIGhhdmUgYmVlbiBjb2xsZWN0ZWQgb3ZlcgorICBncGlvWzE2XSBwaW4gaW50byBHUF9TQU1QTEUgcmVnaXN0ZXIuCisKK1doYXQncyBtaXNzaW5nIGZyb20gdGhlIGRhdGEgc2hlZXQ6CisKK1NldHVwIDRLSHogc2FtcGxpbmcgcmF0ZSAocm91Z2hseSAyeCBvdmVyc2FtcGxlZDsgZ29vZCBlbm91Z2ggZm9yIG91ciBSQzUKK2NvbXBhdCByZW1vdGUpCitzZXQgcmVnaXN0ZXIgMHgzNUMwNTAgdG8gIDB4YTgwYTgwCisKK2VuYWJsZSBzYW1wbGluZworc2V0IHJlZ2lzdGVyIDB4MzVDMDU0IHRvIDB4NQorCitPZiBjb3Vyc2UsIGVuYWJsZSB0aGUgSVJRIGJpdCAxOCBpbiB0aGUgaW50ZXJydXB0IG1hc2sgcmVnaXN0ZXIgLihhbmQKK3Byb3ZpZGUgZm9yIGEgaGFuZGxlcikKKworR1BfU0FNUExFIHJlZ2lzdGVyIGlzIGF0IDB4MzVDMDU4CisKK0JpdHMgYXJlIHRoZW4gcmlnaHQgc2hpZnRlZCBpbnRvIHRoZSBHUF9TQU1QTEUgcmVnaXN0ZXIgYXQgdGhlIHNwZWNpZmllZAorcmF0ZTsgeW91IGdldCBhbiBpbnRlcnJ1cHQgd2hlbiBhIGZ1bGwgRFdPUkQgaXMgcmVjZWl2ZWQuCitZb3UgbmVlZCB0byByZWNvdmVyIHRoZSBhY3R1YWwgUkM1IGJpdHMgb3V0IG9mIHRoZSAob3ZlcnNhbXBsZWQpIElSIHNlbnNvcgorYml0cy4gKEhpbnQ6IGxvb2sgZm9yIHRoZSAwLzFhbmQgMS8wIGNyb3NzaW5ncyBvZiB0aGUgUkM1IGJpLXBoYXNlIGRhdGEpICBBbgorYWN0dWFsIHJhdyBSQzUgY29kZSB3aWxsIHNwYW4gMi0zIERXT1JEUywgZGVwZW5kaW5nIG9uIHRoZSBhY3R1YWwgYWxpZ25tZW50LgorCitJJ20gcHJldHR5IHN1cmUgd2hlbiBubyBJUiBzaWduYWwgaXMgcHJlc2VudCB0aGUgcmVjZWl2ZXIgaXMgYWx3YXlzIGluIGEKK21hcmtpbmcgc3RhdGUoMSk7IGJ1dCBzdHJheSBsaWdodCwgZXRjIGNhbiBjYXVzZSBpbnRlcm1pdHRlbnQgbm9pc2UgdmFsdWVzCithcyB3ZWxsLiAgUmVtZW1iZXIsIHRoaXMgaXMgYSBmcmVlIHJ1bm5pbmcgc2FtcGxlIG9mIHRoZSBJUiByZWNlaXZlciBzdGF0ZQorb3ZlciB0aW1lLCBzbyBkb24ndCBhc3N1bWUgYW55IHNhbXBsZSBzdGFydHMgYXQgYW55IHBhcnRpY3VsYXIgcGxhY2UuCisKK2h0dHA6Ly93d3cuYXRtZWwuY29tL2R5bi9yZXNvdXJjZXMvcHJvZF9kb2N1bWVudHMvZG9jMjgxNy5wZGYKK1RoaXMgZGF0YSBzaGVldCAoZ29vZ2xlIHNlYXJjaCkgc2VlbXMgdG8gaGF2ZSBhIGxvdmVseSBkZXNjcmlwdGlvbiBvZiB0aGUKK1JDNSBiYXNpY3MKKworaHR0cDovL3d3dy5uZW55YS5iZS9iZW9yL2VsZWN0cm9uaWNzL3JjNS5odG0gYW5kIG1vcmUgZGF0YQorCitodHRwOi8vd3d3LmVlLndhc2hpbmd0b24uZWR1L2NpcmN1aXRfYXJjaGl2ZS90ZXh0L2lyX2RlY29kZS50eHQKK2FuZCBldmVuIGEgcmVmZXJlbmNlIHRvIGhvdyB0byBkZWNvZGUgYSBiaS1waGFzZSBkYXRhIHN0cmVhbS4KKworaHR0cDovL3d3dy54czRhbGwubmwvfnNicC9rbm93bGVkZ2UvaXIvcmM1Lmh0bQorc3RpbGwgbW9yZSBpbmZvCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvbGlmZXZpZXcudHh0IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9saWZldmlldy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVmOWViNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvbGlmZXZpZXcudHh0CkBAIC0wLDAgKzEsNDIgQEAKK2NvbGxlY3RpbmcgZGF0YSBhYm91dCB0aGUgbGlmZXZpZXcgbW9kZWxzIGFuZCB0aGUgY29uZmlnIGNvZGluZyBvbgorZ3BpbyBwaW5zIDAtOSAuLi4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitidDg3ODoKKyBMUjUwIHJldi4gUSAoIlBBUlRTOiA3MDMxNTA1MTE2KSwgVHVuZXIgd3VyZGUgYWxzIE5yLiA1IGVya2FubnQsIEVpbmfDpG5nZQorIFNWaWRlbywgVFYsIENvbXBvc2l0ZSwgQXVkaW8sIFJlbW90ZS4gQ1A5Li4xPTEwMDAwMTAwMSAoMTogMC1PaG0tV2lkZXJzdGFuZAorIGdlZ2VuIEdORCB1bmJlc3TDvGNrdDsgMDogYmVzdMO8Y2t0KQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc2FhNzEzNDoKKwkJLyogTGlmZVZpZXcgRmx5VFYgUGxhdGludW0gRk0gKExSMjE0V0YpICovCisJCS8qICJQZXRlciBNaXNzZWwgPHBldGVyLm1pc3NlbEBvbmxpbmVob21lLmRlPiAqLworCQkubmFtZSAgICAgICAgICAgPSAiTGlmZVZpZXcgRmx5VFYgUGxhdGludW0gRk0iLAorCQkvKiAgICAgIEdQMjcgICAgTURUMjAwNSBQQjQgcGluIDEwICovCisJCS8qICAgICAgR1AyNiAgICBNRFQyMDA1IFBCMyBwaW4gOSAqLworCQkvKiAgICAgIEdQMjUgICAgTURUMjAwNSBQQjIgcGluIDggKi8KKwkJLyogICAgICBHUDIzICAgIE1EVDIwMDUgUEIxIHBpbiA3ICovCisJCS8qICAgICAgR1AyMiAgICBNRFQyMDA1IFBCMCBwaW4gNiAqLworCQkvKiAgICAgIEdQMjEgICAgTURUMjAwNSBQQjUgcGluIDExICovCisJCS8qICAgICAgR1AyMCAgICBNRFQyMDA1IFBCNiBwaW4gMTIgKi8KKwkJLyogICAgICBHUDE5ICAgIE1EVDIwMDUgUEI3IHBpbiAxMyAqLworCQkvKiAgICAgIG5jICAgICAgTURUMjAwNSBQQTMgcGluIDIgKi8KKwkJLyogICAgICBSZW1vdGUgIE1EVDIwMDUgUEEyIHBpbiAxICovCisJCS8qICAgICAgR1AxOCAgICBNRFQyMDA1IFBBMSBwaW4gMTggKi8KKwkJLyogICAgICBuYyAgICAgIE1EVDIwMDUgUEEwIHBpbiAxNyBzdHJhcCBsb3cgKi8KKworCQkvKiAgICAgIEdQMTcgICAgU3RyYXAgIkdQNyI9SGlnaCAqLworCQkvKiAgICAgIEdQMTYgICAgU3RyYXAgIkdQNiI9SGlnaAorCQkJCTA9UmFkaW8gMT1UVgorCQkJCURyaXZlcyBTQTYzMEQgRU5DSDEgYW5kIEhFRjQwNTIgQTEgcGlucworCQkJCXRvIGRvIEZNIHJhZGlvIHRocm91Z2ggU0lGIGlucHV0ICovCisJCS8qICAgICAgR1AxNSAgICBuYyAqLworCQkvKiAgICAgIEdQMTQgICAgbmMgKi8KKwkJLyogICAgICBHUDEzICAgIG5jICovCisJCS8qICAgICAgR1AxMiAgICBTdHJhcCAiR1A1IiA9IEhpZ2ggKi8KKwkJLyogICAgICBHUDExICAgIFN0cmFwICJHUDQiID0gSGlnaCAqLworCQkvKiAgICAgIEdQMTAgICAgU3RyYXAgIkdQMyIgPSBIaWdoICovCisJCS8qICAgICAgR1AwOSAgICBTdHJhcCAiR1AyIiA9IExvdyAqLworCQkvKiAgICAgIEdQMDggICAgU3RyYXAgIkdQMSIgPSBMb3cgKi8KKwkJLyogICAgICBHUDA3LjAwIG5jICovCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L21leWUudHh0IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9tZXllLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDUxMTUyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9tZXllLnR4dApAQCAtMCwwICsxLDEyMyBAQAorVmFpbyBQaWN0dXJlYm9vayBNb3Rpb24gRXllIENhbWVyYSBEcml2ZXIgUmVhZG1lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNCBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgorCUNvcHlyaWdodCAoQykgMjAwMS0yMDAyIEFsY8O0dmUgPHd3dy5hbGNvdmUuY29tPgorCUNvcHlyaWdodCAoQykgMjAwMCBBbmRyZXcgVHJpZGdlbGwgPHRyaWRnZUBzYW1iYS5vcmc+CisKK1RoaXMgZHJpdmVyIGVuYWJsZSB0aGUgdXNlIG9mIHZpZGVvNGxpbnV4IGNvbXBhdGlibGUgYXBwbGljYXRpb25zIHdpdGggdGhlCitNb3Rpb24gRXllIGNhbWVyYS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgdGhlICJTb255IExhcHRvcCBFeHRyYXMiIGRyaXZlciAod2hpY2gKK2NhbiBiZSBmb3VuZCBpbiB0aGUgIk1pc2MgZGV2aWNlcyIgc2VjdGlvbiBvZiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gdXRpbGl0eSkKK3RvIGJlIGNvbXBpbGVkIGFuZCBpbnN0YWxsZWQgKHVzaW5nIGl0cyAiY2FtZXJhPTEiIHBhcmFtZXRlcikuCisKK0l0IGNhbiBkbyBhdCBtYXhpbXVtIDMwIGZwcyBAIDMyMHgyNDAgb3IgMTUgZnBzIEAgNjQweDQ4MC4KKworR3JhYmJpbmcgaXMgc3VwcG9ydGVkIGluIHBhY2tlZCBZVVYgY29sb3JzcGFjZSBvbmx5LgorCitNSlBFRyBoYXJkd2FyZSBncmFiYmluZyBpcyBzdXBwb3J0ZWQgdmlhIGEgcHJpdmF0ZSBBUEkgKHNlZSBiZWxvdykuCisKK0hhcmR3YXJlIHN1cHBvcnRlZDoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlICdzZWNvbmQnIHZlcnNpb24gb2YgdGhlIE1vdGlvbkV5ZSBjYW1lcmEgOikKKworVGhlIGZpcnN0IHZlcnNpb24gd2FzIGNvbm5lY3RlZCBkaXJlY3RseSBvbiB0aGUgdmlkZW8gYnVzIG9mIHRoZSBOZW9tYWdpYwordmlkZW8gY2FyZCBhbmQgaXMgdW5zdXBwb3J0ZWQuCisKK1RoZSBzZWNvbmQgb25lLCBtYWRlIGJ5IEthd2FzYWtpIFN0ZWVsIGlzIGZ1bGx5IHN1cHBvcnRlZCBieSB0aGlzCitkcml2ZXIgKFBDSSB2ZW5kb3IvZGV2aWNlIGlzIDB4MTM2Yi8weGZmMDEpCisKK1RoZSB0aGlyZCBvbmUsIHByZXNlbnQgaW4gcmVjZW50IChtb3JlIG9yIGxlc3MgbGFzdCB5ZWFyKSBQaWN0dXJlYm9va3MKKyhDMU0qIG1vZGVscyksIGlzIG5vdCBzdXBwb3J0ZWQuIFRoZSBtYW51ZmFjdHVyZXIgaGFzIGdpdmVuIHRoZSBzcGVjcwordG8gdGhlIGRldmVsb3BlcnMgdW5kZXIgYSBOREEgKHdoaWNoIGFsbG93cyB0aGUgZGV2ZWxvcG1lbnQgb2YgYSBHUEwKK2RyaXZlciBob3dldmVyKSwgYnV0IHRoaW5ncyBhcmUgbm90IG1vdmluZyB2ZXJ5IGZhc3QgKHNlZQoraHR0cDovL3ItZW5naW5lLnNvdXJjZWZvcmdlLm5ldC8pIChQQ0kgdmVuZG9yL2RldmljZSBpcyAweDEwY2YvMHgyMDExKS4KKworVGhlcmUgaXMgYSBmb3J0aCBtb2RlbCBjb25uZWN0ZWQgb24gdGhlIFVTQiBidXMgaW4gVFIxKiBWYWlvIGxhcHRvcHMuCitUaGlzIGNhbWVyYSBpcyBub3Qgc3VwcG9ydGVkIGF0IGFsbCBieSB0aGUgY3VycmVudCBkcml2ZXIsIGluIGZhY3QKK2xpdHRsZSBpbmZvcm1hdGlvbiBpZiBhbnkgaXMgYXZhaWxhYmxlIGZvciB0aGlzIGNhbWVyYQorKFVTQiB2ZW5kb3IvZGV2aWNlIGlzIDB4MDU0Yy8weDAxMDcpLgorCitEcml2ZXIgb3B0aW9uczoKKy0tLS0tLS0tLS0tLS0tLQorCitTZXZlcmFsIG9wdGlvbnMgY2FuIGJlIHBhc3NlZCB0byB0aGUgbWV5ZSBkcml2ZXIgdXNpbmcgdGhlIHN0YW5kYXJkCittb2R1bGUgYXJndW1lbnQgc3ludGF4ICg8cGFyYW0+PTx2YWx1ZT4gd2hlbiBwYXNzaW5nIHRoZSBvcHRpb24gdG8gdGhlCittb2R1bGUgb3IgbWV5ZS48cGFyYW0+PTx2YWx1ZT4gb24gdGhlIGtlcm5lbCBib290IGxpbmUgd2hlbiBtZXllIGlzCitzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBrZXJuZWwpLiBUaG9zZSBvcHRpb25zIGFyZToKKworCWdidWZmZXJzOgludW1iZXIgb2YgY2FwdHVyZSBidWZmZXJzLCBkZWZhdWx0IGlzIDIgKDMyIG1heCkKKworCWdidWZzaXplOglzaXplIG9mIGVhY2ggY2FwdHVyZSBidWZmZXIsIGRlZmF1bHQgaXMgNjE0NDAwCisKKwl2aWRlb19ucjoJdmlkZW8gZGV2aWNlIHRvIHJlZ2lzdGVyICgwID0gL2Rldi92aWRlbzAsIGV0YykKKworTW9kdWxlIHVzZToKKy0tLS0tLS0tLS0tCisKK0luIG9yZGVyIHRvIGF1dG9tYXRpY2FsbHkgbG9hZCB0aGUgbWV5ZSBtb2R1bGUgb24gdXNlLCB5b3UgY2FuIHB1dCB0aG9zZSBsaW5lcworaW4geW91ciAvZXRjL21vZHByb2JlLmQvbWV5ZS5jb25mIGZpbGU6CisKKwlhbGlhcyBjaGFyLW1ham9yLTgxIHZpZGVvZGV2CisJYWxpYXMgY2hhci1tYWpvci04MS0wIG1leWUKKwlvcHRpb25zIG1leWUgZ2J1ZmZlcnM9MzIKKworVXNhZ2U6CistLS0tLS0KKworCXhhd3R2ID49IDMuNDkgKDxodHRwOi8vYnl0ZXNleC5vcmcveGF3dHYvPikKKwkJZm9yIGRpc3BsYXkgYW5kIHVuY29tcHJlc3NlZCB2aWRlbyBjYXB0dXJlOgorCisJCQl4YXd0diAtYyAvZGV2L3ZpZGVvMCAtZ2VvbWV0cnkgNjQweDQ4MAorCQkJCW9yCisJCQl4YXd0diAtYyAvZGV2L3ZpZGVvMCAtZ2VvbWV0cnkgMzIweDI0MAorCisJbW90aW9uZXllICg8aHR0cDovL3BvcGllcy5uZXQvbWV5ZS8+KQorCQlmb3IgZ2V0dGluZyBwcG0gb3IganBnIHNuYXBzaG90cywgbWpwZWcgdmlkZW8KKworUHJpdmF0ZSBBUEk6CistLS0tLS0tLS0tLS0KKworCVRoZSBkcml2ZXIgc3VwcG9ydHMgZnJhbWUgZ3JhYmJpbmcgd2l0aCB0aGUgdmlkZW80bGludXggQVBJLAorCXNvIGFsbCB2aWRlbzRsaW51eCB0b29scyAobGlrZSB4YXd0dikgc2hvdWxkIHdvcmsgd2l0aCB0aGlzIGRyaXZlci4KKworCUJlc2lkZXMgdGhlIHZpZGVvNGxpbnV4IGludGVyZmFjZSwgdGhlIGRyaXZlciBoYXMgYSBwcml2YXRlIGludGVyZmFjZQorCWZvciBhY2Nlc3NpbmcgdGhlIE1vdGlvbiBFeWUgZXh0ZW5kZWQgcGFyYW1ldGVycyAoY2FtZXJhIHNoYXJwbmVzcywKKwlhZ2MsIHZpZGVvIGZyYW1lcmF0ZSksIHRoZSBzaGFwc2hvdCBhbmQgdGhlIE1KUEVHIGNhcHR1cmUgZmFjaWxpdGllcy4KKworCVRoaXMgaW50ZXJmYWNlIGNvbnNpc3RzIG9mIHNldmVyYWwgaW9jdGxzIChwcm90b3R5cGVzIGFuZCBzdHJ1Y3R1cmVzCisJY2FuIGJlIGZvdW5kIGluIGluY2x1ZGUvbGludXgvbWV5ZS5oKToKKworCU1FWUVJT0NfR19QQVJBTVMKKwlNRVlFSU9DX1NfUEFSQU1TCisJCUdldCBhbmQgc2V0IHRoZSBleHRlbmRlZCBwYXJhbWV0ZXJzIG9mIHRoZSBtb3Rpb24gZXllIGNhbWVyYS4KKwkJVGhlIHVzZXIgc2hvdWxkIGFsd2F5cyBxdWVyeSB0aGUgY3VycmVudCBwYXJhbWV0ZXJzIHdpdGgKKwkJTUVZRUlPQ19HX1BBUkFNUywgY2hhbmdlIHdoYXQgaGUgbGlrZXMgYW5kIHRoZW4gaXNzdWUgdGhlCisJCU1FWUVJT0NfU19QQVJBTVMgY2FsbCAoY2hlY2tpbmcgZm9yIC1FSU5WQUwpLiBUaGUgZXh0ZW5kZWQKKwkJcGFyYW1ldGVycyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBtZXllX3BhcmFtcyBzdHJ1Y3R1cmUuCisKKworCU1FWUVJT0NfUUJVRl9DQVBUCisJCVF1ZXVlIGEgYnVmZmVyIGZvciBjYXB0dXJlICh0aGUgYnVmZmVycyBtdXN0IGhhdmUgYmVlbgorCQlvYnRhaW5lZCB3aXRoIGEgVklESU9DR01CVUYgY2FsbCBhbmQgbW1hcCdlZCBieSB0aGUKKwkJYXBwbGljYXRpb24pLiBUaGUgYXJndW1lbnQgdG8gTUVZRUlPQ19RQlVGX0NBUFQgaXMgdGhlCisJCWJ1ZmZlciBudW1iZXIgdG8gcXVldWUgKG9yIC0xIHRvIGVuZCBjYXB0dXJlKS4gVGhlIGZpcnN0CisJCWNhbGwgdG8gTUVZRUlPQ19RQlVGX0NBUFQgc3RhcnRzIHRoZSBzdHJlYW1pbmcgY2FwdHVyZS4KKworCU1FWUVJT0NfU1lOQworCQlUYWtlcyBhcyBhbiBhcmd1bWVudCB0aGUgYnVmZmVyIG51bWJlciB5b3Ugd2FudCB0byBzeW5jLgorCQlUaGlzIGlvY3RsIGJsb2NrcyB1bnRpbCB0aGUgYnVmZmVyIGlzIGZpbGxlZCBhbmQgcmVhZHkKKwkJZm9yIHRoZSBhcHBsaWNhdGlvbiB0byB1c2UuIEl0IHJldHVybnMgdGhlIGJ1ZmZlciBzaXplLgorCisJTUVZRUlPQ19TVElMTENBUFQKKwlNRVlFSU9DX1NUSUxMSkNBUFQKKwkJVGFrZXMgYSBzbmFwc2hvdCBpbiBhbiB1bmNvbXByZXNzZWQgb3IgY29tcHJlc3NlZCBqcGVnIGZvcm1hdC4KKwkJVGhpcyBpb2N0bCBibG9ja3MgdW50aWwgdGhlIHNuYXBzaG90IGlzIGRvbmUgYW5kIHJldHVybnMgKGZvcgorCQlqcGVnIHNuYXBzaG90KSB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UuIFRoZSBpbWFnZSBkYXRhIGlzCisJCWF2YWlsYWJsZSBmcm9tIHRoZSBmaXJzdCBtbWFwJ2VkIGJ1ZmZlci4KKworCUxvb2sgYXQgdGhlICdtb3Rpb25leWUnIGFwcGxpY2F0aW9uIGNvZGUgZm9yIGFuIGFjdHVhbCBleGFtcGxlLgorCitCdWdzIC8gVG9kbzoKKy0tLS0tLS0tLS0tLQorCisJLSAnbW90aW9uZXllJyBzdGlsbCB1c2VzIHRoZSBtZXllIHByaXZhdGUgdjRsMSBBUEkgZXh0ZW5zaW9ucy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvbm90LWluLWN4MjM4OHgtZGF0YXNoZWV0LnR4dCBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvbm90LWluLWN4MjM4OHgtZGF0YXNoZWV0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGJmZTc0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9ub3QtaW4tY3gyMzg4eC1kYXRhc2hlZXQudHh0CkBAIC0wLDAgKzEsNDEgQEAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorTU9fT1VUUFVUX0ZPUk1BVCAoMHgzMTAxNjQpCisKKyAgUHJldmlvdXMgZGVmYXVsdCBmcm9tIERTY2FsZXI6IDB4MWMxZjAwMDgKKyAgRGlnaXQgODogMzEtMjgKKyAgMjg6IFBSRVZSRU1PRCA9IDEKKworICBEaWdpdCA3OiAyNy0yNCAoMHhjID0gMTIgPSBiMTEwMCApCisgIDI3OiBDT01CQUxUID0gMQorICAyNjogUEFMX0lOVl9QSEFTRQorICAgIChEU2NhbGVyIGFwcGFyZW50bHkgc2V0IHRoaXMgdG8gMSwgcmVzdWx0ZWQgaW4gc3Vja3kgcGljdHVyZSkKKworICBEaWdpdHMgNiw1OiAyMy0xNgorICAyNS0xNjogQ09NQl9SQU5HRSA9IDB4MWYgW2RlZmF1bHRdICg5IGJpdHMgLT4gbWF4IDUxMikKKworICBEaWdpdCA0OiAxNS0xMgorICAxNTogRElTSUZYID0gMAorICAxNDogSU5WQ0JGID0gMAorICAxMzogRElTQURBUFQgPSAwCisgIDEyOiBOQVJST1dBREFQVCA9IDAKKworICBEaWdpdCAzOiAxMS04CisgIDExOiBGT1JDRTJICisgIDEwOiBGT1JDRVJFTUQKKyAgOTogTkNIUk9NQUVOCisgIDg6IE5SRU1PREVOCisKKyAgRGlnaXQgMjogNy00CisgIDctNjogWUNPUkUKKyAgNS00OiBDQ09SRQorCisgIERpZ2l0IDE6IDMtMAorICAzOiBSQU5HRSA9IDEKKyAgMjogSEFDVEVYVAorICAxOiBIU0ZNVAorCisweDQ3IGlzIHRoZSBzeW5jIGJ5dGUgZm9yIE1QRUctMiB0cmFuc3BvcnQgc3RyZWFtIHBhY2tldHMuCitEYXRhc2hlZXQgaW5jb3JyZWN0bHkgc3RhdGVzIHRvIHVzZSA0NyBkZWNpbWFsLiAxODggaXMgdGhlIGxlbmd0aC4KK0FsbCBEVkIgY29tcGxpYW50IGZyb250ZW5kcyBvdXRwdXQgcGFja2V0cyB3aXRoIHRoaXMgc3RhcnQgY29kZS4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L29tYXAzaXNwLnR4dCBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvb21hcDNpc3AudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5YTlmODMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L29tYXAzaXNwLnR4dApAQCAtMCwwICsxLDI3OSBAQAorT01BUCAzIEltYWdlIFNpZ25hbCBQcm9jZXNzb3IgKElTUCkgZHJpdmVyCisKK0NvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbgorQ29weXJpZ2h0IChDKSAyMDA5IFRleGFzIEluc3RydW1lbnRzLCBJbmMuCisKK0NvbnRhY3RzOiBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+CisJICBTYWthcmkgQWlsdXMgPHNha2FyaS5haWx1c0Bpa2kuZmk+CisJICBEYXZpZCBDb2hlbiA8ZGFjb2hlbkBnbWFpbC5jb20+CisKKworSW50cm9kdWN0aW9uCis9PT09PT09PT09PT0KKworVGhpcyBmaWxlIGRvY3VtZW50cyB0aGUgVGV4YXMgSW5zdHJ1bWVudHMgT01BUCAzIEltYWdlIFNpZ25hbCBQcm9jZXNzb3IgKElTUCkKK2RyaXZlciBsb2NhdGVkIHVuZGVyIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vb21hcDNpc3AuIFRoZSBvcmlnaW5hbCBkcml2ZXIgd2FzCit3cml0dGVuIGJ5IFRleGFzIEluc3RydW1lbnRzIGJ1dCBzaW5jZSB0aGF0IGl0IGhhcyBiZWVuIHJld3JpdHRlbiAodHdpY2UpIGF0CitOb2tpYS4KKworVGhlIGRyaXZlciBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgdXNlZCBvbiB0aGUgZm9sbG93aW5nIHZlcnNpb25zIG9mIE9NQVAgMzoKKworCTM0MzAKKwkzNTMwCisJMzYzMAorCitUaGUgZHJpdmVyIGltcGxlbWVudHMgVjRMMiwgTWVkaWEgY29udHJvbGxlciBhbmQgdjRsMl9zdWJkZXYgaW50ZXJmYWNlcy4KK1NlbnNvciwgbGVucyBhbmQgZmxhc2ggZHJpdmVycyB1c2luZyB0aGUgdjRsMl9zdWJkZXYgaW50ZXJmYWNlIGluIHRoZSBrZXJuZWwKK2FyZSBzdXBwb3J0ZWQuCisKKworU3BsaXQgdG8gc3ViZGV2cworPT09PT09PT09PT09PT09PQorCitUaGUgT01BUCAzIElTUCBpcyBzcGxpdCBpbnRvIFY0TDIgc3ViZGV2cywgZWFjaCBvZiB0aGUgYmxvY2tzIGluc2lkZSB0aGUgSVNQCitoYXZpbmcgb25lIHN1YmRldiB0byByZXByZXNlbnQgaXQuIEVhY2ggb2YgdGhlIHN1YmRldnMgcHJvdmlkZSBhIFY0TDIgc3ViZGV2CitpbnRlcmZhY2UgdG8gdXNlcnNwYWNlLgorCisJT01BUDMgSVNQIENDUDIKKwlPTUFQMyBJU1AgQ1NJMmEKKwlPTUFQMyBJU1AgQ0NEQworCU9NQVAzIElTUCBwcmV2aWV3CisJT01BUDMgSVNQIHJlc2l6ZXIKKwlPTUFQMyBJU1AgQUVXQgorCU9NQVAzIElTUCBBRgorCU9NQVAzIElTUCBoaXN0b2dyYW0KKworRWFjaCBwb3NzaWJsZSBsaW5rIGluIHRoZSBJU1AgaXMgbW9kZWxsZWQgYnkgYSBsaW5rIGluIHRoZSBNZWRpYSBjb250cm9sbGVyCitpbnRlcmZhY2UuIEZvciBhbiBleGFtcGxlIHByb2dyYW0gc2VlIFsyXS4KKworCitDb250cm9sbGluZyB0aGUgT01BUCAzIElTUAorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW4gZ2VuZXJhbCwgdGhlIHNldHRpbmdzIGdpdmVuIHRvIHRoZSBPTUFQIDMgSVNQIHRha2UgZWZmZWN0IGF0IHRoZSBiZWdpbm5pbmcKK29mIHRoZSBmb2xsb3dpbmcgZnJhbWUuIFRoaXMgaXMgZG9uZSB3aGVuIHRoZSBtb2R1bGUgYmVjb21lcyBpZGxlIGR1cmluZyB0aGUKK3ZlcnRpY2FsIGJsYW5raW5nIHBlcmlvZCBvbiB0aGUgc2Vuc29yLiBJbiBtZW1vcnktdG8tbWVtb3J5IG9wZXJhdGlvbiB0aGUgcGlwZQoraXMgcnVuIG9uZSBmcmFtZSBhdCBhIHRpbWUuIEFwcGx5aW5nIHRoZSBzZXR0aW5ncyBpcyBkb25lIGJldHdlZW4gdGhlIGZyYW1lcy4KKworQWxsIHRoZSBibG9ja3MgaW4gdGhlIElTUCwgZXhjbHVkaW5nIHRoZSBDU0ktMiBhbmQgcG9zc2libHkgdGhlIENDUDIgcmVjZWl2ZXIsCitpbnNpc3Qgb24gcmVjZWl2aW5nIGNvbXBsZXRlIGZyYW1lcy4gU2Vuc29ycyBtdXN0IHRodXMgbmV2ZXIgc2VuZCB0aGUgSVNQCitwYXJ0aWFsIGZyYW1lcy4KKworQXV0b2lkbGUgZG9lcyBoYXZlIGlzc3VlcyB3aXRoIHNvbWUgSVNQIGJsb2NrcyBvbiB0aGUgMzQzMCwgYXQgbGVhc3QuCitBdXRvaWRsZSBpcyBvbmx5IGVuYWJsZWQgb24gMzYzMCB3aGVuIHRoZSBvbWFwM2lzcCBtb2R1bGUgcGFyYW1ldGVyIGF1dG9pZGxlCitpcyBub24temVyby4KKworCitFdmVudHMKKz09PT09PQorCitUaGUgT01BUCAzIElTUCBkcml2ZXIgZG9lcyBzdXBwb3J0IHRoZSBWNEwyIGV2ZW50IGludGVyZmFjZSBvbiBDQ0RDIGFuZAorc3RhdGlzdGljcyAoQUVXQiwgQUYgYW5kIGhpc3RvZ3JhbSkgc3ViZGV2cy4KKworVGhlIENDREMgc3ViZGV2IHByb2R1Y2VzIFY0TDJfRVZFTlRfRlJBTUVfU1lOQyB0eXBlIGV2ZW50IG9uIEhTX1ZTCitpbnRlcnJ1cHQgd2hpY2ggaXMgdXNlZCB0byBzaWduYWwgZnJhbWUgc3RhcnQuIEVhcmxpZXIgdmVyc2lvbiBvZiB0aGlzCitkcml2ZXIgdXNlZCBWNEwyX0VWRU5UX09NQVAzSVNQX0hTX1ZTIGZvciB0aGlzIHB1cnBvc2UuIFRoZSBldmVudCBpcwordHJpZ2dlcmVkIGV4YWN0bHkgd2hlbiB0aGUgcmVjZXB0aW9uIG9mIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBmcmFtZSBzdGFydHMKK2luIHRoZSBDQ0RDIG1vZHVsZS4gVGhlIGV2ZW50IGNhbiBiZSBzdWJzY3JpYmVkIG9uIHRoZSBDQ0RDIHN1YmRldi4KKworKFdoZW4gdXNpbmcgcGFyYWxsZWwgaW50ZXJmYWNlIG9uZSBtdXN0IHBheSBhY2NvdW50IHRvIGNvcnJlY3QgY29uZmlndXJhdGlvbgorb2YgdGhlIFZTIHNpZ25hbCBwb2xhcml0eS4gVGhpcyBpcyBhdXRvbWF0aWNhbGx5IGNvcnJlY3Qgd2hlbiB1c2luZyB0aGUgc2VyaWFsCityZWNlaXZlcnMuKQorCitFYWNoIG9mIHRoZSBzdGF0aXN0aWNzIHN1YmRldnMgaXMgYWJsZSB0byBwcm9kdWNlIGV2ZW50cy4gQW4gZXZlbnQgaXMKK2dlbmVyYXRlZCB3aGVuZXZlciBhIHN0YXRpc3RpY3MgYnVmZmVyIGNhbiBiZSBkZXF1ZXVlZCBieSBhIHVzZXIgc3BhY2UKK2FwcGxpY2F0aW9uIHVzaW5nIHRoZSBWSURJT0NfT01BUDNJU1BfU1RBVF9SRVEgSU9DVEwuIFRoZSBldmVudHMgYXZhaWxhYmxlCithcmU6CisKKwlWNEwyX0VWRU5UX09NQVAzSVNQX0FFV0IKKwlWNEwyX0VWRU5UX09NQVAzSVNQX0FGCisJVjRMMl9FVkVOVF9PTUFQM0lTUF9ISVNUCisKK1RoZSB0eXBlIG9mIHRoZSBldmVudCBkYXRhIGlzIHN0cnVjdCBvbWFwM2lzcF9zdGF0X2V2ZW50X3N0YXR1cyBmb3IgdGhlc2UKK2lvY3Rscy4gSWYgdGhlcmUgaXMgYW4gZXJyb3IgY2FsY3VsYXRpbmcgdGhlIHN0YXRpc3RpY3MsIHRoZXJlIHdpbGwgYmUgYW4KK2V2ZW50IGFzIHVzdWFsLCBidXQgbm8gcmVsYXRlZCBzdGF0aXN0aWNzIGJ1ZmZlci4gSW4gdGhpcyBjYXNlCitvbWFwM2lzcF9zdGF0X2V2ZW50X3N0YXR1cy5idWZfZXJyIGlzIHNldCB0byBub24temVyby4KKworCitQcml2YXRlIElPQ1RMcworPT09PT09PT09PT09PT0KKworVGhlIE9NQVAgMyBJU1AgZHJpdmVyIHN1cHBvcnRzIHN0YW5kYXJkIFY0TDIgSU9DVExzIGFuZCBjb250cm9scyB3aGVyZQorcG9zc2libGUgYW5kIHByYWN0aWNhbC4gTXVjaCBvZiB0aGUgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHRoZSBJU1AsIGhvd2V2ZXIsCitkb2VzIG5vdCBmYWxsIHVuZGVyIHRoZSBzdGFuZGFyZCBJT0NUTHMgLS0tIGdhbW1hIHRhYmxlcyBhbmQgY29uZmlndXJhdGlvbiBvZgorc3RhdGlzdGljcyBjb2xsZWN0aW9uIGFyZSBleGFtcGxlcyBvZiBzdWNoLgorCitJbiBnZW5lcmFsLCB0aGVyZSBpcyBhIHByaXZhdGUgaW9jdGwgZm9yIGNvbmZpZ3VyaW5nIGVhY2ggb2YgdGhlIGJsb2NrcworY29udGFpbmluZyBoYXJkd2FyZS1kZXBlbmRlbnQgZnVuY3Rpb25zLgorCitUaGUgZm9sbG93aW5nIHByaXZhdGUgSU9DVExzIGFyZSBzdXBwb3J0ZWQ6CisKKwlWSURJT0NfT01BUDNJU1BfQ0NEQ19DRkcKKwlWSURJT0NfT01BUDNJU1BfUFJWX0NGRworCVZJRElPQ19PTUFQM0lTUF9BRVdCX0NGRworCVZJRElPQ19PTUFQM0lTUF9ISVNUX0NGRworCVZJRElPQ19PTUFQM0lTUF9BRl9DRkcKKwlWSURJT0NfT01BUDNJU1BfU1RBVF9SRVEKKwlWSURJT0NfT01BUDNJU1BfU1RBVF9FTgorCitUaGUgcGFyYW1ldGVyIHN0cnVjdHVyZXMgdXNlZCBieSB0aGVzZSBpb2N0bHMgYXJlIGRlc2NyaWJlZCBpbgoraW5jbHVkZS9saW51eC9vbWFwM2lzcC5oLiBUaGUgZGV0YWlsZWQgZnVuY3Rpb25zIG9mIHRoZSBJU1AgaXRzZWxmIHJlbGF0ZWQgdG8KK2EgZ2l2ZW4gSVNQIGJsb2NrIGlzIGRlc2NyaWJlZCBpbiB0aGUgVGVjaG5pY2FsIFJlZmVyZW5jZSBNYW51YWxzIChUUk1zKSAtLS0KK3NlZSB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudCBmb3IgdGhvc2UuCisKK1doaWxlIGl0IGlzIHBvc3NpYmxlIHRvIHVzZSB0aGUgSVNQIGRyaXZlciB3aXRob3V0IGFueSB1c2Ugb2YgdGhlc2UgcHJpdmF0ZQorSU9DVExzIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBvYnRhaW4gb3B0aW1hbCBpbWFnZSBxdWFsaXR5IHRoaXMgd2F5LiBUaGUgQUVXQiwKK0FGIGFuZCBoaXN0b2dyYW0gbW9kdWxlcyBjYW5ub3QgYmUgdXNlZCB3aXRob3V0IGNvbmZpZ3VyaW5nIHRoZW0gdXNpbmcgdGhlCithcHByb3ByaWF0ZSBwcml2YXRlIElPQ1RMcy4KKworCitDQ0RDIGFuZCBwcmV2aWV3IGJsb2NrIElPQ1RMcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIFZJRElPQ19PTUFQM0lTUF9DQ0RDX0NGRyBhbmQgVklESU9DX09NQVAzSVNQX1BSVl9DRkcgSU9DVExzIGFyZSB1c2VkIHRvCitjb25maWd1cmUsIGVuYWJsZSBhbmQgZGlzYWJsZSBmdW5jdGlvbnMgaW4gdGhlIENDREMgYW5kIHByZXZpZXcgYmxvY2tzLAorcmVzcGVjdGl2ZWx5LiBCb3RoIElPQ1RMcyBjb250cm9sIHNldmVyYWwgZnVuY3Rpb25zIGluIHRoZSBibG9ja3MgdGhleQorY29udHJvbC4gVklESU9DX09NQVAzSVNQX0NDRENfQ0ZHIElPQ1RMIGFjY2VwdHMgYSBwb2ludGVyIHRvIHN0cnVjdAorb21hcDNpc3BfY2NkY191cGRhdGVfY29uZmlnIGFzIGl0cyBhcmd1bWVudC4gU2ltaWxhcmx5IFZJRElPQ19PTUFQM0lTUF9QUlZfQ0ZHCithY2NlcHRzIGEgcG9pbnRlciB0byBzdHJ1Y3Qgb21hcDNpc3BfcHJldl91cGRhdGVfY29uZmlnLiBUaGUgZGVmaW5pdGlvbiBvZgorYm90aCBzdHJ1Y3R1cmVzIGlzIGF2YWlsYWJsZSBpbiBbMV0uCisKK1RoZSB1cGRhdGUgZmllbGQgaW4gdGhlIHN0cnVjdHVyZXMgdGVsbHMgd2hldGhlciB0byB1cGRhdGUgdGhlIGNvbmZpZ3VyYXRpb24KK2ZvciB0aGUgc3BlY2lmaWMgZnVuY3Rpb24gYW5kIHRoZSBmbGFnIHRlbGxzIHdoZXRoZXIgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlCitmdW5jdGlvbi4KKworVGhlIHVwZGF0ZSBhbmQgZmxhZyBiaXQgbWFza3MgYWNjZXB0IHRoZSBmb2xsb3dpbmcgdmFsdWVzLiBFYWNoIHNlcGFyYXRlCitmdW5jdGlvbnMgaW4gdGhlIENDREMgYW5kIHByZXZpZXcgYmxvY2tzIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGZsYWcgKGVpdGhlcgorZGlzYWJsZSBvciBlbmFibGU7IHBhcnQgb2YgdGhlIGZsYWcgZmllbGQgaW4gdGhlIHN0cnVjdHVyZSkgYW5kIGEgcG9pbnRlciB0bworY29uZmlndXJhdGlvbiBkYXRhIGZvciB0aGUgZnVuY3Rpb24uCisKK1ZhbGlkIHZhbHVlcyBmb3IgdGhlIHVwZGF0ZSBhbmQgZmxhZyBmaWVsZHMgYXJlIGxpc3RlZCBoZXJlIGZvcgorVklESU9DX09NQVAzSVNQX0NDRENfQ0ZHLiBWYWx1ZXMgbWF5IGJlIG9yJ2VkIHRvIGNvbmZpZ3VyZSBtb3JlIHRoYW4gb25lCitmdW5jdGlvbiBpbiB0aGUgc2FtZSBJT0NUTCBjYWxsLgorCisgICAgICAgIE9NQVAzSVNQX0NDRENfQUxBVworICAgICAgICBPTUFQM0lTUF9DQ0RDX0xQRgorICAgICAgICBPTUFQM0lTUF9DQ0RDX0JMQ0xBTVAKKyAgICAgICAgT01BUDNJU1BfQ0NEQ19CQ09NUAorICAgICAgICBPTUFQM0lTUF9DQ0RDX0ZQQworICAgICAgICBPTUFQM0lTUF9DQ0RDX0NVTEwKKyAgICAgICAgT01BUDNJU1BfQ0NEQ19DT05GSUdfTFNDCisgICAgICAgIE9NQVAzSVNQX0NDRENfVEJMX0xTQworCitUaGUgY29ycmVzcG9uZGluZyB2YWx1ZXMgZm9yIHRoZSBWSURJT0NfT01BUDNJU1BfUFJWX0NGRyBhcmUgaGVyZToKKworICAgICAgICBPTUFQM0lTUF9QUkVWX0xVTUFFTkgKKyAgICAgICAgT01BUDNJU1BfUFJFVl9JTlZBTEFXCisgICAgICAgIE9NQVAzSVNQX1BSRVZfSFJaX01FRAorICAgICAgICBPTUFQM0lTUF9QUkVWX0NGQQorICAgICAgICBPTUFQM0lTUF9QUkVWX0NIUk9NQV9TVVBQCisgICAgICAgIE9NQVAzSVNQX1BSRVZfV0IKKyAgICAgICAgT01BUDNJU1BfUFJFVl9CTEtBREoKKyAgICAgICAgT01BUDNJU1BfUFJFVl9SR0IyUkdCCisgICAgICAgIE9NQVAzSVNQX1BSRVZfQ09MT1JfQ09OVgorICAgICAgICBPTUFQM0lTUF9QUkVWX1lDX0xJTUlUCisgICAgICAgIE9NQVAzSVNQX1BSRVZfREVGRUNUX0NPUgorICAgICAgICBPTUFQM0lTUF9QUkVWX0dBTU1BQllQQVNTCisgICAgICAgIE9NQVAzSVNQX1BSRVZfRFJLX0ZSTV9DQVBUVVJFCisgICAgICAgIE9NQVAzSVNQX1BSRVZfRFJLX0ZSTV9TVUJUUkFDVAorICAgICAgICBPTUFQM0lTUF9QUkVWX0xFTlNfU0hBRElORworICAgICAgICBPTUFQM0lTUF9QUkVWX05GCisgICAgICAgIE9NQVAzSVNQX1BSRVZfR0FNTUEKKworVGhlIGFzc29jaWF0ZWQgY29uZmlndXJhdGlvbiBwb2ludGVyIGZvciB0aGUgZnVuY3Rpb24gbWF5IG5vdCBiZSBOVUxMIHdoZW4KK2VuYWJsaW5nIHRoZSBmdW5jdGlvbi4gV2hlbiBkaXNhYmxpbmcgYSBmdW5jdGlvbiB0aGUgY29uZmlndXJhdGlvbiBwb2ludGVyIGlzCitpZ25vcmVkLgorCisKK1N0YXRpc3RpYyBibG9ja3MgSU9DVExzCis9PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgc3RhdGlzdGljcyBzdWJkZXZzIGRvIG9mZmVyIG1vcmUgZHluYW1pYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhbiB0aGUKK290aGVyIHN1YmRldnMuIFRoZXkgY2FuIGJlIGVuYWJsZWQsIGRpc2FibGUgYW5kIHJlY29uZmlndXJlZCB3aGVuIHRoZSBwaXBlbGluZQoraXMgaW4gc3RyZWFtaW5nIHN0YXRlLgorCitUaGUgc3RhdGlzdGljcyBibG9ja3MgYWx3YXlzIGdldCB0aGUgaW5wdXQgaW1hZ2UgZGF0YSBmcm9tIHRoZSBDQ0RDIChhcyB0aGUKK2hpc3RvZ3JhbSBtZW1vcnkgcmVhZCBpc24ndCBpbXBsZW1lbnRlZCkuIFRoZSBzdGF0aXN0aWNzIGFyZSBkZXF1ZXVlYWJsZSBieQordGhlIHVzZXIgZnJvbSB0aGUgc3RhdGlzdGljcyBzdWJkZXYgbm9kZXMgdXNpbmcgcHJpdmF0ZSBJT0NUTHMuCisKK1RoZSBwcml2YXRlIElPQ1RMcyBvZmZlcmVkIGJ5IHRoZSBBRVdCLCBBRiBhbmQgaGlzdG9ncmFtIHN1YmRldnMgYXJlIGhlYXZpbHkKK3JlZmxlY3RlZCBieSB0aGUgcmVnaXN0ZXIgbGV2ZWwgaW50ZXJmYWNlIG9mZmVyZWQgYnkgdGhlIElTUCBoYXJkd2FyZS4gVGhlcmUKK2FyZSBhc3BlY3RzIHRoYXQgYXJlIHB1cmVseSByZWxhdGVkIHRvIHRoZSBkcml2ZXIgaW1wbGVtZW50YXRpb24gYW5kIHRoZXNlIGFyZQorZGlzY3Vzc2VkIG5leHQuCisKK1ZJRElPQ19PTUFQM0lTUF9TVEFUX0VOCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIHByaXZhdGUgSU9DVEwgZW5hYmxlcy9kaXNhYmxlcyBhIHN0YXRpc3RpYyBtb2R1bGUuIElmIHRoaXMgcmVxdWVzdCBpcworZG9uZSBiZWZvcmUgc3RyZWFtaW5nLCBpdCB3aWxsIHRha2UgZWZmZWN0IGFzIHNvb24gYXMgdGhlIHBpcGVsaW5lIHN0YXJ0cyB0bworc3RyZWFtLiAgSWYgdGhlIHBpcGVsaW5lIGlzIGFscmVhZHkgc3RyZWFtaW5nLCBpdCB3aWxsIHRha2UgZWZmZWN0IGFzIHNvb24gYXMKK3RoZSBDQ0RDIGJlY29tZXMgaWRsZS4KKworVklESU9DX09NQVAzSVNQX0FFV0JfQ0ZHLCBWSURJT0NfT01BUDNJU1BfSElTVF9DRkcgYW5kIFZJRElPQ19PTUFQM0lTUF9BRl9DRkcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1Rob3NlIElPQ1RMcyBhcmUgdXNlZCB0byBjb25maWd1cmUgdGhlIG1vZHVsZXMuIFRoZXkgcmVxdWlyZSB1c2VyIGFwcGxpY2F0aW9ucwordG8gaGF2ZSBhbiBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgdGhlIGhhcmR3YXJlLiBNb3N0IG9mIHRoZSBmaWVsZHMgZXhwbGFuYXRpb24KK2NhbiBiZSBmb3VuZCBvbiBPTUFQJ3MgVFJNcy4gVGhlIHR3byBmb2xsb3dpbmcgZmllbGRzIGNvbW1vbiB0byBhbGwgdGhlIGFib3ZlCitjb25maWd1cmUgcHJpdmF0ZSBJT0NUTHMgcmVxdWlyZSBleHBsYW5hdGlvbiBmb3IgYmV0dGVyIHVuZGVyc3RhbmRpbmcgYXMgdGhleQorYXJlIG5vdCBwYXJ0IG9mIHRoZSBUUk0uCisKK29tYXAzaXNwX1toM2FfYWYvaDNhX2Fld2IvaGlzdF1fY29uZmlnLmJ1Zl9zaXplOgorCitUaGUgbW9kdWxlcyBoYW5kbGUgdGhlaXIgYnVmZmVycyBpbnRlcm5hbGx5LiBUaGUgbmVjZXNzYXJ5IGJ1ZmZlciBzaXplIGZvciB0aGUKK21vZHVsZSdzIGRhdGEgb3V0cHV0IGRlcGVuZHMgb24gdGhlIHJlcXVlc3RlZCBjb25maWd1cmF0aW9uLiBBbHRob3VnaCB0aGUKK2RyaXZlciBzdXBwb3J0cyByZWNvbmZpZ3VyYXRpb24gd2hpbGUgc3RyZWFtaW5nLCBpdCBkb2VzIG5vdCBzdXBwb3J0IGEKK3JlY29uZmlndXJhdGlvbiB3aGljaCByZXF1aXJlcyBiaWdnZXIgYnVmZmVyIHNpemUgdGhhbiB3aGF0IGlzIGFscmVhZHkKK2ludGVybmFsbHkgYWxsb2NhdGVkIGlmIHRoZSBtb2R1bGUgaXMgZW5hYmxlZC4gSXQgd2lsbCByZXR1cm4gLUVCVVNZIG9uIHRoaXMKK2Nhc2UuIEluIG9yZGVyIHRvIGF2b2lkIHN1Y2ggY29uZGl0aW9uLCBlaXRoZXIgZGlzYWJsZS9yZWNvbmZpZ3VyZS9lbmFibGUgdGhlCittb2R1bGUgb3IgcmVxdWVzdCB0aGUgbmVjZXNzYXJ5IGJ1ZmZlciBzaXplIGR1cmluZyB0aGUgZmlyc3QgY29uZmlndXJhdGlvbgord2hpbGUgdGhlIG1vZHVsZSBpcyBkaXNhYmxlZC4KKworVGhlIGludGVybmFsIGJ1ZmZlciBzaXplIGFsbG9jYXRpb24gY29uc2lkZXJzIHRoZSByZXF1ZXN0ZWQgY29uZmlndXJhdGlvbidzCittaW5pbXVtIGJ1ZmZlciBzaXplIGFuZCB0aGUgdmFsdWUgc2V0IG9uIGJ1Zl9zaXplIGZpZWxkLiBJZiBidWZfc2l6ZSBmaWVsZCBpcworb3V0IG9mIFttaW5pbXVtLCBtYXhpbXVtXSBidWZmZXIgc2l6ZSByYW5nZSwgaXQncyBjbGFtcGVkIHRvIGZpdCBpbiB0aGVyZS4KK1RoZSBkcml2ZXIgdGhlbiBzZWxlY3RzIHRoZSBiaWdnZXN0IHZhbHVlLiBUaGUgY29ycmVjdGVkIGJ1Zl9zaXplIHZhbHVlIGlzCit3cml0dGVuIGJhY2sgdG8gdXNlciBhcHBsaWNhdGlvbi4KKworb21hcDNpc3BfW2gzYV9hZi9oM2FfYWV3Yi9oaXN0XV9jb25maWcuY29uZmlnX2NvdW50ZXI6CisKK0FzIHRoZSBjb25maWd1cmF0aW9uIGRvZXNuJ3QgdGFrZSBlZmZlY3Qgc3luY2hyb25vdXNseSB0byB0aGUgcmVxdWVzdCwgdGhlCitkcml2ZXIgbXVzdCBwcm92aWRlIGEgd2F5IHRvIHRyYWNrIHRoaXMgaW5mb3JtYXRpb24gdG8gcHJvdmlkZSBtb3JlIGFjY3VyYXRlCitkYXRhLiBBZnRlciBhIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWVzdGVkLCB0aGUgY29uZmlnX2NvdW50ZXIgcmV0dXJuZWQgdG8gdXNlcgorc3BhY2UgYXBwbGljYXRpb24gd2lsbCBiZSBhbiB1bmlxdWUgdmFsdWUgYXNzb2NpYXRlZCB0byB0aGF0IHJlcXVlc3QuIFdoZW4KK3VzZXIgYXBwbGljYXRpb24gcmVjZWl2ZXMgYW4gZXZlbnQgZm9yIGJ1ZmZlciBhdmFpbGFiaWxpdHkgb3Igd2hlbiBhIG5ldworYnVmZmVyIGlzIHJlcXVlc3RlZCwgdGhpcyBjb25maWdfY291bnRlciBpcyB1c2VkIHRvIG1hdGNoIGEgYnVmZmVyIGRhdGEgYW5kIGEKK2NvbmZpZ3VyYXRpb24uCisKK1ZJRElPQ19PTUFQM0lTUF9TVEFUX1JFUQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NlbmQgdG8gdXNlciBzcGFjZSB0aGUgb2xkZXN0IGRhdGEgYXZhaWxhYmxlIGluIHRoZSBpbnRlcm5hbCBidWZmZXIgcXVldWUgYW5kCitkaXNjYXJkcyBzdWNoIGJ1ZmZlciBhZnRlcndhcmRzLiBUaGUgZmllbGQgb21hcDNpc3Bfc3RhdF9kYXRhLmZyYW1lX251bWJlcgorbWF0Y2hlcyB3aXRoIHRoZSB2aWRlbyBidWZmZXIncyBmaWVsZF9jb3VudC4KKworCitUZWNobmljYWwgcmVmZXJlbmNlIG1hbnVhbHMgKFRSTXMpIGFuZCBvdGhlciBkb2N1bWVudGF0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK09NQVAgMzQzMCBUUk06Cis8VVJMOmh0dHA6Ly9mb2N1cy50aS5jb20vcGRmcy93dGJ1L09NQVAzNHh4X0VTMy4xLnhfUFVCTElDX1RSTV92Wk0uemlwPgorUmVmZXJlbmNlZCAyMDExLTAzLTA1LgorCitPTUFQIDM1eHggVFJNOgorPFVSTDpodHRwOi8vd3d3LnRpLmNvbS9saXR2L3BkZi9zcHJ1Zjk4bz4gUmVmZXJlbmNlZCAyMDExLTAzLTA1LgorCitPTUFQIDM2MzAgVFJNOgorPFVSTDpodHRwOi8vZm9jdXMudGkuY29tL3BkZnMvd3RidS9PTUFQMzZ4eF9FUzEueF9QVUJMSUNfVFJNX3ZRLnppcD4KK1JlZmVyZW5jZWQgMjAxMS0wMy0wNS4KKworRE0gMzczMCBUUk06Cis8VVJMOmh0dHA6Ly93d3cudGkuY29tL2xpdHYvcGRmL3NwcnVnbjRoPiBSZWZlcmVuY2VkIDIwMTEtMDMtMDYuCisKKworUmVmZXJlbmNlcworPT09PT09PT09PQorCitbMV0gaW5jbHVkZS9saW51eC9vbWFwM2lzcC5oCisKK1syXSBodHRwOi8vZ2l0LmlkZWFzb25ib2FyZC5vcmcvP3A9bWVkaWEtY3RsLmdpdDthPXN1bW1hcnkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvb21hcDRfY2FtZXJhLnR4dCBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvb21hcDRfY2FtZXJhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWQ5YjQwCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9vbWFwNF9jYW1lcmEudHh0CkBAIC0wLDAgKzEsNjAgQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9NQVA0IElTUyBEcml2ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PT09PT09PT09PT09PT0KKworSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0KKworVGhlIE9NQVA0NFhYIGZhbWlseSBvZiBjaGlwcyBjb250YWlucyB0aGUgSW1hZ2luZyBTdWJTeXN0ZW0gKGEuay5hLiBJU1MpLAorV2hpY2ggY29udGFpbnMgc2V2ZXJhbCBjb21wb25lbnRzIHRoYXQgY2FuIGJlIGNhdGVnb3JpemVkIGluIDMgYmlnIGdyb3VwczoKKworLSBJbnRlcmZhY2VzICgyIEludGVyZmFjZXM6IENTSTItQSAmIENTSTItQi9DQ1AyKQorLSBJU1AgKEltYWdlIFNpZ25hbCBQcm9jZXNzb3IpCistIFNJTUNPUCAoU3RpbGwgSW1hZ2UgQ29wcm9jZXNzb3IpCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgbG9vayBpbiBbMV0gZm9yIGxhdGVzdCB2ZXJzaW9uIG9mOgorCSJPTUFQNDQzMCBNdWx0aW1lZGlhIERldmljZSBTaWxpY29uIFJldmlzaW9uIDIueCIKKworQXMgb2YgUmV2aXNpb24gQUIsIHRoZSBJU1MgaXMgZGVzY3JpYmVkIGluIGRldGFpbCBpbiBzZWN0aW9uIDguCisKK1RoaXMgZHJpdmVyIGlzIHN1cHBvcnRpbmcgX29ubHlfIHRoZSBDU0kyLUEvQiBpbnRlcmZhY2VzIGZvciBub3cuCisKK0l0IG1ha2VzIHVzZSBvZiB0aGUgTWVkaWEgQ29udHJvbGxlciBmcmFtZXdvcmsgWzJdLCBhbmQgaW5oZXJpdGVkIG1vc3Qgb2YgdGhlCitjb2RlIGZyb20gT01BUDMgSVNQIGRyaXZlciAoZm91bmQgdW5kZXIgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9vbWFwM2lzcC8qKSwKK2V4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgbmVlZCBhbiBJT01NVSBub3cgZm9yIElTUyBidWZmZXJzIG1lbW9yeSBtYXBwaW5nLgorCitTdXBwb3J0cyB1c2FnZSBvZiBNTUFQIGJ1ZmZlcnMgb25seSAoZm9yIG5vdykuCisKK1Rlc3RlZCBwbGF0Zm9ybXMKKy0tLS0tLS0tLS0tLS0tLS0KKworLSBPTUFQNDQzMFNEUCwgdy8gRVMyLjEgR1AgJiBTRVZNNDQzMC1DQU0tVjEtMCAoQ29udGFpbnMgSU1YMDYwICYgT1Y1NjQwLCBpbgorICB3aGljaCBvbmx5IHRoZSBsYXN0IG9uZSBpcyBzdXBwb3J0ZWQsIG91dHB1dHRpbmcgWVVWNDIyIGZyYW1lcykuCisKKy0gVEkgQmxhemUgTURQLCB3LyBPTUFQNDQzMCBFUzIuMiBFTVUgKENvbnRhaW5zIDEgSU1YMDYwICYgMiBPVjU2NTAgc2Vuc29ycywgaW4KKyAgd2hpY2ggb25seSB0aGUgT1Y1NjUwIGFyZSBzdXBwb3J0ZWQsIG91dHB1dHRpbmcgUkFXMTAgZnJhbWVzKS4KKworLSBQYW5kYUJvYXJkLCBSZXYuIEEyLCB3LyBPTUFQNDQzMCBFUzIuMSBHUCAmIE9WIGFkYXB0ZXIgYm9hcmQsIHRlc3RlZCB3aXRoCisgIGZvbGxvd2luZyBzZW5zb3JzOgorICAqIE9WNTY0MAorICAqIE9WNTY1MAorCistIFRlc3RlZCBvbiBtYWlubGluZSBrZXJuZWw6CisKKwlodHRwOi8vZ2l0Lmtlcm5lbC5vcmcvP3A9bGludXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC0yLjYuZ2l0O2E9c3VtbWFyeQorCisgIFRhZzogdjMuMyAoY29tbWl0IGMxNmZhNGYyYWQxOTkwOGE0N2M2M2Q4ZmE0MzZhMTE3ODQzOGM3ZTcpCisKK0ZpbGUgbGlzdAorLS0tLS0tLS0tCitkcml2ZXJzL3N0YWdpbmcvbWVkaWEvb21hcDRpc3MvCitpbmNsdWRlL21lZGlhL29tYXA0aXNzLmgKKworUmVmZXJlbmNlcworLS0tLS0tLS0tLQorCitbMV0gaHR0cDovL2ZvY3VzLnRpLmNvbS9nZW5lcmFsL2RvY3Mvd3RidS93dGJ1ZG9jdW1lbnRjZW50ZXIudHNwP25hdmlnYXRpb25JZD0xMjAzNyZ0ZW1wbGF0ZUlkPTYxMjMjNjIKK1syXSBodHRwOi8vbHduLm5ldC9BcnRpY2xlcy80MjA0ODUvCitbM10gaHR0cDovL3d3dy5zcGluaWNzLm5ldC9saXN0cy9saW51eC1tZWRpYS9tc2c0NDM3MC5odG1sCistLQorQXV0aG9yOiBTZXJnaW8gQWd1aXJyZSA8c2VyZ2lvLmEuYWd1aXJyZUBnbWFpbC5jb20+CitDb3B5cmlnaHQgKEMpIDIwMTIsIFRleGFzIEluc3RydW1lbnRzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3B4YV9jYW1lcmEudHh0IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9weGFfY2FtZXJhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWVkMTU3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9weGFfY2FtZXJhLnR4dApAQCAtMCwwICsxLDE3NCBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFhBLUNhbWVyYSBIb3N0IERyaXZlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT09PT09PT09PT09PT09PT09PT09PQorCitDb25zdHJhaW50cworLS0tLS0tLS0tLS0KKyAgYSkgSW1hZ2Ugc2l6ZSBmb3IgWVVWNDIyUCBmb3JtYXQKKyAgICAgQWxsIFlVVjQyMlAgaW1hZ2VzIGFyZSBlbmZvcmNlZCB0byBoYXZlIHdpZHRoIHggaGVpZ2h0ICUgMTYgPSAwLgorICAgICBUaGlzIGlzIGR1ZSB0byBETUEgY29uc3RyYWludHMsIHdoaWNoIHRyYW5zZmVycyBvbmx5IHBsYW5lcyBvZiA4IGJ5dGUKKyAgICAgbXVsdGlwbGVzLgorCisKK0dsb2JhbCB2aWRlbyB3b3JrZmxvdworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIGEpIFFDSSBzdG9wcGVkCisgICAgIEluaXRpYWx5LCB0aGUgUUNJIGludGVyZmFjZSBpcyBzdG9wcGVkLgorICAgICBXaGVuIGEgYnVmZmVyIGlzIHF1ZXVlZCAocHhhX3ZpZGVvYnVmX29wcy0+YnVmX3F1ZXVlKSwgdGhlIFFDSSBzdGFydHMuCisKKyAgYikgUUNJIHN0YXJ0ZWQKKyAgICAgTW9yZSBidWZmZXJzIGNhbiBiZSBxdWV1ZWQgd2hpbGUgdGhlIFFDSSBpcyBzdGFydGVkIHdpdGhvdXQgaGFsdGluZyB0aGUKKyAgICAgY2FwdHVyZS4gIFRoZSBuZXcgYnVmZmVycyBhcmUgImFwcGVuZGVkIiBhdCB0aGUgdGFpbCBvZiB0aGUgRE1BIGNoYWluLCBhbmQKKyAgICAgc21vb3RobHkgY2FwdHVyZWQgb25lIGZyYW1lIGFmdGVyIHRoZSBvdGhlci4KKworICAgICBPbmNlIGEgYnVmZmVyIGlzIGZpbGxlZCBpbiB0aGUgUUNJIGludGVyZmFjZSwgaXQgaXMgbWFya2VkIGFzICJET05FIiBhbmQKKyAgICAgcmVtb3ZlZCBmcm9tIHRoZSBhY3RpdmUgYnVmZmVycyBsaXN0LiBJdCBjYW4gYmUgdGhlbiByZXF1ZXVkIG9yIGRlcXVldWVkIGJ5CisgICAgIHVzZXJsYW5kIGFwcGxpY2F0aW9uLgorCisgICAgIE9uY2UgdGhlIGxhc3QgYnVmZmVyIGlzIGZpbGxlZCBpbiwgdGhlIFFDSSBpbnRlcmZhY2Ugc3RvcHMuCisKKyAgYykgQ2FwdHVyZSBnbG9iYWwgZmluaXRlIHN0YXRlIG1hY2hpbmUgc2NoZW1hCisKKyAgICAgICstLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLSsgICstLS0tKworICAgICAgfCBEUSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFEgfCAgfCBEUSB8CisgICAgICB8ICAgIHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICB2ICB8ICAgIHYKKyAgICArLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICB8ICAgU1RPUCAgICB8ICAgICAgICAgICAgICAgICAgICAgfCBXYWl0IGZvciBjYXB0dXJlIHN0YXJ0IHwKKyAgICArLS0tLS0tLS0tLS0rICAgICAgICAgUSAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKystPiB8IFFDSTogc3RvcCB8IC0tLS0tLS0tLS0tLS0tLS0tLT4gfCBRQ0k6IHJ1biAgICAgICAgICAgICAgIHwgPC0tLS0tLS0tLS0tLSsKK3wgICB8IERNQTogc3RvcCB8ICAgICAgICAgICAgICAgICAgICAgfCBETUE6IHN0b3AgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwKK3wgICArLS0tLS0tLS0tLS0rICAgICAgICAgICAgICstLS0tLT4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAvICAgICAgICAgICAgICstLS0rICArLS0tLSsgICB8ICAgICAgICAgICAgICAgICAgIHwKK3xjYXB0dXJlIGxpc3QgZW1wdHkgICAgICAgIC8gICAgICAgICAgICAgIHwgUSB8ICB8IERRIHwgICB8IFFDSSBJcnEgRU9GICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgLyAgICAgICAgICAgICAgIHwgICB2ICB8ICAgIHYgICB2ICAgICAgICAgICAgICAgICAgIHwKK3wgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgIHwKK3wgICB8IERNQSBob3RsaW5rIG1pc3NlZCB8ICAgICAgICAgICAgIHwgICAgQ2FwdHVyZSBydW5uaW5nICAgfCAgICAgICAgICAgICAgIHwKK3wgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgIHwKK3wgICB8IFFDSTogcnVuICAgICAgICAgICB8ICAgICArLS0tLS0+IHwgUUNJOiBydW4gICAgICAgICAgICAgfCA8LSsgICAgICAgICAgIHwKK3wgICB8IERNQTogc3RvcCAgICAgICAgICB8ICAgIC8gICAgICAgIHwgRE1BOiBydW4gICAgICAgICAgICAgfCAgIHwgICAgICAgICAgIHwKK3wgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgLyAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgIHwgT3RoZXIgICAgIHwKK3wgICAgIF4gICAgICAgICAgICAgICAgICAgICAvRE1BIHN0aWxsICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgY2hhbm5lbHMgIHwKK3wgICAgIHwgY2FwdHVyZSBsaXN0ICAgICAgIC8gIHJ1bm5pbmcgICAgICAgICAgICAgfCBETUEgSXJxIEVuZCAgIHwgbm90ICAgICAgIHwKK3wgICAgIHwgbm90IGVtcHR5ICAgICAgICAgLyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgZmluaXNoZWQgIHwKK3wgICAgIHwgICAgICAgICAgICAgICAgICAvICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgICAgIHwgeWV0ICAgICAgIHwKK3wgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgIHwgICAgICAgICAgIHwKK3wgICB8ICBWaWRlb2J1ZiByZWxlYXNlZCAgIHwgICAgICAgICAgIHwgIENoYW5uZWwgY29tcGxldGVkICAgfCAgIHwgICAgICAgICAgIHwKK3wgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgIHwgICAgICAgICAgIHwKKystLSB8IFFDSTogcnVuICAgICAgICAgICAgIHwgICAgICAgICAgIHwgUUNJOiBydW4gICAgICAgICAgICAgfCAtLSsgICAgICAgICAgIHwKKyAgICB8IERNQTogcnVuICAgICAgICAgICAgIHwgICAgICAgICAgIHwgRE1BOiBydW4gICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwKKyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgLyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgIHwgICAgICAgICAgbm8gb3ZlcnJ1biAvICAgICAgICAgICAgfCBvdmVycnVuICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIC8gICAgICAgICAgICAgdiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgLyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgIHwKKyAgICB8ICBGcmFtZSBjb21wbGV0ZWQgICB8ICAgICAgICAvICAgIHwgICAgIEZyYW1lIG92ZXJyYW4gICAgfCAgICAgICAgICAgICAgIHwKKyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDwtLS0tLSsgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyByZXN0YXJ0IGZyYW1lIHwKKyAgICB8IFFDSTogcnVuICAgICAgICAgICB8ICAgICAgICAgICAgIHwgUUNJOiBzdG9wICAgICAgICAgICAgfCAtLS0tLS0tLS0tLS0tLSsKKyAgICB8IERNQTogcnVuICAgICAgICAgICB8ICAgICAgICAgICAgIHwgRE1BOiBzdG9wICAgICAgICAgICAgfAorICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKyAgICBMZWdlbmQ6IC0gZWFjaCBib3ggaXMgYSBGU00gc3RhdGUKKyAgICAgICAgICAgIC0gZWFjaCBhcnJvdyBpcyB0aGUgY29uZGl0aW9uIHRvIHRyYW5zaXRpb24gdG8gYW5vdGhlciBzdGF0ZQorICAgICAgICAgICAgLSBhbiBhcnJvdyB3aXRoIGEgY29tbWVudCBpcyBhIG1hbmRhdG9yeSB0cmFuc2l0aW9uIChubyBjb25kaXRpb24pCisgICAgICAgICAgICAtIGFycm93ICJRIiBtZWFucyA6IGEgYnVmZmVyIHdhcyBlbnF1ZXVlZAorICAgICAgICAgICAgLSBhcnJvdyAiRFEiIG1lYW5zIDogYSBidWZmZXIgd2FzIGRlcXVldWVkCisgICAgICAgICAgICAtICJRQ0k6IHN0b3AiIG1lYW5zIHRoZSBRQ0kgaW50ZXJmYWNlIGlzIG5vdCBlbmFibGVkCisgICAgICAgICAgICAtICJETUE6IHN0b3AiIG1lYW5zIGFsbCAzIERNQSBjaGFubmVscyBhcmUgc3RvcHBlZAorICAgICAgICAgICAgLSAiRE1BOiBydW4iIG1lYW5zIGF0IGxlYXN0IDEgRE1BIGNoYW5uZWwgaXMgc3RpbGwgcnVubmluZworCitETUEgdXNhZ2UKKy0tLS0tLS0tLQorICBhKSBETUEgZmxvdworICAgICAtIGZpcnN0IGJ1ZmZlciBxdWV1ZWQgZm9yIGNhcHR1cmUKKyAgICAgICBPbmNlIGEgZmlyc3QgYnVmZmVyIGlzIHF1ZXVlZCBmb3IgY2FwdHVyZSwgdGhlIFFDSSBpcyBzdGFydGVkLCBidXQgZGF0YQorICAgICAgIHRyYW5zZmVyIGlzIG5vdCBzdGFydGVkLiBPbiAiRW5kIE9mIEZyYW1lIiBpbnRlcnJ1cHQsIHRoZSBpcnEgaGFuZGxlcgorICAgICAgIHN0YXJ0cyB0aGUgRE1BIGNoYWluLgorICAgICAtIGNhcHR1cmUgb2Ygb25lIHZpZGVvYnVmZmVyCisgICAgICAgVGhlIERNQSBjaGFpbiBzdGFydHMgdHJhbnNmZXJyaW5nIGRhdGEgaW50byB2aWRlb2J1ZmZlciBSQU0gcGFnZXMuCisgICAgICAgV2hlbiBhbGwgcGFnZXMgYXJlIHRyYW5zZmVycmVkLCB0aGUgRE1BIGlycSBpcyByYWlzZWQgb24gIkVORElOVFIiIHN0YXR1cworICAgICAtIGZpbmlzaGluZyBvbmUgdmlkZW9idWZmZXIKKyAgICAgICBUaGUgRE1BIGlycSBoYW5kbGVyIG1hcmtzIHRoZSB2aWRlb2J1ZmZlciBhcyAiZG9uZSIsIGFuZCByZW1vdmVzIGl0IGZyb20KKyAgICAgICB0aGUgYWN0aXZlIHJ1bm5pbmcgcXVldWUKKyAgICAgICBNZWFud2hpbGUsIHRoZSBuZXh0IHZpZGVvYnVmZmVyIChpZiB0aGVyZSBpcyBvbmUpLCBpcyB0cmFuc2ZlcnJlZCBieSBETUEKKyAgICAgLSBmaW5pc2hpbmcgdGhlIGxhc3QgdmlkZW9idWZmZXIKKyAgICAgICBPbiB0aGUgRE1BIGlycSBvZiB0aGUgbGFzdCB2aWRlb2J1ZmZlciwgdGhlIFFDSSBpcyBzdG9wcGVkLgorCisgIGIpIERNQSBwcmVwYXJlZCBidWZmZXIgd2lsbCBoYXZlIHRoaXMgc3RydWN0dXJlCisKKyAgICAgKy0tLS0tLS0tLS0tLSstLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgIHwgZGVzYy1zZ1swXSB8IC4uLiB8IGRlc2Mtc2dbbGFzdF0gfCBmaW5pc2hlci9saW5rZXIgfAorICAgICArLS0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKworICAgICBUaGlzIHN0cnVjdHVyZSBpcyBwb2ludGVkIGJ5IGRtYS0+c2dfY3B1LgorICAgICBUaGUgZGVzY3JpcHRvcnMgYXJlIHVzZWQgYXMgZm9sbG93cyA6CisgICAgICAtIGRlc2Mtc2dbaV06IGktdGggZGVzY3JpcHRvciwgdHJhbnNmZXJyaW5nIHRoZSBpLXRoIHNnCisgICAgICAgIGVsZW1lbnQgdG8gdGhlIHZpZGVvIGJ1ZmZlciBzY2F0dGVyIGdhdGhlcgorICAgICAgLSBmaW5pc2hlcjogaGFzIGRkYWRyPURBRERSX1NUT1AsIGRjbWQ9RU5ESVJRRU4KKyAgICAgIC0gbGlua2VyOiBoYXMgZGRhZHI9IGRlc2Mtc2dbMF0gb2YgbmV4dCB2aWRlbyBidWZmZXIsIGRjbWQ9MAorCisgICAgIEZvciB0aGUgbmV4dCBzY2hlbWEsIGxldCdzIGFzc3VtZSBkMD1kZXNjLXNnWzBdIC4uIGROPWRlc2Mtc2dbTl0sCisgICAgICJmIiBzdGFuZHMgZm9yIGZpbmlzaGVyIGFuZCAibCIgZm9yIGxpbmtlci4KKyAgICAgQSB0eXBpY2FsIHJ1bm5pbmcgY2hhaW4gaXMgOgorCisgICAgICAgICBWaWRlb2J1ZmZlciAxICAgICAgICAgVmlkZW9idWZmZXIgMgorICAgICArLS0tLS0tLS0tKy0tLS0rLS0tKyAgKy0tLS0rLS0tLSstLS0tKy0tLSsKKyAgICAgfCBkMCB8IC4uIHwgZE4gfCBsIHwgIHwgZDAgfCAuLiB8IGROIHwgZiB8CisgICAgICstLS0tLS0tLS0rLS0tLSstfC0rICBeLS0tLSstLS0tKy0tLS0rLS0tKworICAgICAgICAgICAgICAgICAgICAgIHwgICAgfAorICAgICAgICAgICAgICAgICAgICAgICstLS0tKworCisgICAgIEFmdGVyIHRoZSBjaGFpbmluZyBpcyBmaW5pc2hlZCwgdGhlIGNoYWluIGxvb2tzIGxpa2UgOgorCisgICAgICAgICBWaWRlb2J1ZmZlciAxICAgICAgICAgVmlkZW9idWZmZXIgMiAgICAgICAgIFZpZGVvYnVmZmVyIDMKKyAgICAgKy0tLS0tLS0tLSstLS0tKy0tLSsgICstLS0tKy0tLS0rLS0tLSstLS0rICArLS0tLSstLS0tKy0tLS0rLS0tKworICAgICB8IGQwIHwgLi4gfCBkTiB8IGwgfCAgfCBkMCB8IC4uIHwgZE4gfCBsIHwgIHwgZDAgfCAuLiB8IGROIHwgZiB8CisgICAgICstLS0tLS0tLS0rLS0tLSstfC0rICBeLS0tLSstLS0tKy0tLS0rLXwtKyAgXi0tLS0rLS0tLSstLS0tKy0tLSsKKyAgICAgICAgICAgICAgICAgICAgICB8ICAgIHwgICAgICAgICAgICAgICAgfCAgICB8CisgICAgICAgICAgICAgICAgICAgICAgKy0tLS0rICAgICAgICAgICAgICAgICstLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19saW5rCisKKyAgYykgRE1BIGhvdCBjaGFpbmluZyB0aW1lc2xpY2UgaXNzdWUKKworICAgICBBcyBETUEgY2hhaW5pbmcgaXMgZG9uZSB3aGlsZSBETUEgX2lzXyBydW5uaW5nLCB0aGUgbGlua2luZyBtYXkgYmUgZG9uZQorICAgICB3aGlsZSB0aGUgRE1BIGp1bXBzIGZyb20gb25lIFZpZGVvYnVmZmVyIHRvIGFub3RoZXIuIE9uIHRoZSBzY2hlbWEsIHRoYXQKKyAgICAgd291bGQgYmUgYSBwcm9ibGVtIGlmIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgaXMgZW5jb3VudGVyZWQgOgorCisgICAgICAtIERNQSBjaGFpbiBpcyBWaWRlb2J1ZmZlcjEgKyBWaWRlb2J1ZmZlcjIKKyAgICAgIC0gcHhhX3ZpZGVvYnVmX3F1ZXVlKCkgaXMgY2FsbGVkIHRvIHF1ZXVlIFZpZGVvYnVmZmVyMworICAgICAgLSBETUEgY29udHJvbGxlciBmaW5pc2hlcyBWaWRlb2J1ZmZlcjIsIGFuZCBETUEgc3RvcHMKKyAgICAgID0+CisgICAgICAgICBWaWRlb2J1ZmZlciAxICAgICAgICAgVmlkZW9idWZmZXIgMgorICAgICArLS0tLS0tLS0tKy0tLS0rLS0tKyAgKy0tLS0rLS0tLSstLS0tKy0tLSsKKyAgICAgfCBkMCB8IC4uIHwgZE4gfCBsIHwgIHwgZDAgfCAuLiB8IGROIHwgZiB8CisgICAgICstLS0tLS0tLS0rLS0tLSstfC0rICBeLS0tLSstLS0tKy0tLS0rLV4tKworICAgICAgICAgICAgICAgICAgICAgIHwgICAgfCAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgKy0tLS0rICAgICAgICAgICAgICAgICstLSBETUEgRERBRFIgbG9hZHMgRERBRFJfU1RPUAorCisgICAgICAtIHB4YV9kbWFfYWRkX3RhaWxfYnVmKCkgaXMgY2FsbGVkLCB0aGUgVmlkZW9idWZmZXIyICJmaW5pc2hlciIgaXMKKyAgICAgICAgcmVwbGFjZWQgYnkgYSAibGlua2VyIiB0byBWaWRlb2J1ZmZlcjMgKGNyZWF0aW9uIG9mIG5ld19saW5rKQorICAgICAgLSBweGFfdmlkZW9idWZfcXVldWUoKSBmaW5pc2hlcworICAgICAgLSB0aGUgRE1BIGlycSBoYW5kbGVyIGlzIGNhbGxlZCwgd2hpY2ggdGVybWluYXRlcyBWaWRlb2J1ZmZlcjIKKyAgICAgIC0gVmlkZW9idWZmZXIzIGNhcHR1cmUgaXMgbm90IHNjaGVkdWxlZCBvbiBETUEgY2hhaW4gKGFzIGl0IHN0b3BwZWQgISEhKQorCisgICAgICAgICBWaWRlb2J1ZmZlciAxICAgICAgICAgVmlkZW9idWZmZXIgMiAgICAgICAgIFZpZGVvYnVmZmVyIDMKKyAgICAgKy0tLS0tLS0tLSstLS0tKy0tLSsgICstLS0tKy0tLS0rLS0tLSstLS0rICArLS0tLSstLS0tKy0tLS0rLS0tKworICAgICB8IGQwIHwgLi4gfCBkTiB8IGwgfCAgfCBkMCB8IC4uIHwgZE4gfCBsIHwgIHwgZDAgfCAuLiB8IGROIHwgZiB8CisgICAgICstLS0tLS0tLS0rLS0tLSstfC0rICBeLS0tLSstLS0tKy0tLS0rLXwtKyAgXi0tLS0rLS0tLSstLS0tKy0tLSsKKyAgICAgICAgICAgICAgICAgICAgICB8ICAgIHwgICAgICAgICAgICAgICAgfCAgICB8CisgICAgICAgICAgICAgICAgICAgICAgKy0tLS0rICAgICAgICAgICAgICAgICstLS0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19saW5rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETUEgRERBRFIgc3RpbGwgaXMgRERBRFJfU1RPUAorCisgICAgICAtIHB4YV9jYW1lcmFfY2hlY2tfbGlua19taXNzKCkgaXMgY2FsbGVkCisgICAgICAgIFRoaXMgY2hlY2tzIGlmIHRoZSBETUEgaXMgZmluaXNoZWQgYW5kIGEgYnVmZmVyIGlzIHN0aWxsIG9uIHRoZQorICAgICAgICBwY2Rldi0+Y2FwdHVyZSBsaXN0LiBJZiB0aGF0J3MgdGhlIGNhc2UsIHRoZSBjYXB0dXJlIHdpbGwgYmUgcmVzdGFydGVkLAorICAgICAgICBhbmQgVmlkZW9idWZmZXIzIGlzIHNjaGVkdWxlZCBvbiBETUEgY2hhaW4uCisgICAgICAtIHRoZSBETUEgaXJxIGhhbmRsZXIgZmluaXNoZXMKKworICAgICBOb3RlOiBpZiBETUEgc3RvcHMganVzdCBhZnRlciBweGFfY2FtZXJhX2NoZWNrX2xpbmtfbWlzcygpIHJlYWRzIEREQURSKCkKKyAgICAgdmFsdWUsIHdlIGhhdmUgdGhlIGd1YXJhbnRlZSB0aGF0IHRoZSBETUEgaXJxIGhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmFjaworICAgICB3aGVuIHRoZSBETUEgd2lsbCBmaW5pc2ggdGhlIGJ1ZmZlciwgYW5kIHB4YV9jYW1lcmFfY2hlY2tfbGlua19taXNzKCkgd2lsbAorICAgICBiZSBjYWxsZWQgYWdhaW4sIHRvIHJlc2NoZWR1bGUgVmlkZW9idWZmZXIzLgorCistLQorQXV0aG9yOiBSb2JlcnQgSmFyem1payA8cm9iZXJ0LmphcnptaWtAZnJlZS5mcj4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvcmFkaW90cmFjay50eHQgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3JhZGlvdHJhY2sudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxZjNlZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3JhZGlvdHJhY2sudHh0CkBAIC0wLDAgKzEsMTQ3IEBACitOT1RFUyBPTiBSQURJT1RSQUNLIENBUkQgQ09OVFJPTAorYnkgU3RlcGhlbiBNLiBCZW5vaXQgKGJlbm9pdHNAc2VydmljZXByby5jb20pICBEZWMgMTQsIDE5OTYKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRG9jdW1lbnQgdmVyc2lvbiAxLjAKKworQUNLTk9XTEVER01FTlRTCistLS0tLS0tLS0tLS0tLS0tCitUaGlzIGRvY3VtZW50IHdhcyBtYWRlIGJhc2VkIG9uICdDJyBjb2RlIGZvciBMaW51eCBmcm9tIEdpZGVvbiBsZSBHcmFuZ2UKKyhsZWdyYW5nQGFjdGl2ZS5jby56YSBvciBsZWdyYW5nQGNzLnN1bi5hYy56YSkgaW4gMTk5NCwgYW5kIGVsYWJvcmF0aW9ucyBmcm9tCitGcmFucyBCcmlua21hbiAoYnJpbmttYW5AZXNkLm5sKSBpbiAxOTk2LiAgVGhlIHJlc3VsdHMgcmVwb3J0ZWQgaGVyZSBhcmUgZnJvbQorZXhwZXJpbWVudHMgdGhhdCB0aGUgYXV0aG9yIHBlcmZvcm1lZCBvbiBoaXMgb3duIHNldHVwLCBzbyB5b3VyIG1pbGVhZ2UgbWF5Cit2YXJ5Li4uIEkgbWFrZSBubyBndWFyYW50ZWVzLCBjbGFpbXMgb3Igd2FycmFudGllcyB0byB0aGUgc3VpdGFiaWxpdHkgb3IKK3ZhbGlkaXR5IG9mIHRoaXMgaW5mb3JtYXRpb24uICBObyBvdGhlciBkb2N1bWVudGF0aW9uIG9uIHRoZSBBSU1TCitMYWIgKGh0dHA6Ly93d3cuYWltc2xhYi5jb20vKSBSYWRpb1RyYWNrIGNhcmQgd2FzIG1hZGUgYXZhaWxhYmxlIHRvIHRoZQorYXV0aG9yLiAgVGhpcyBkb2N1bWVudCBpcyBvZmZlcmVkIGluIHRoZSBob3BlcyB0aGF0IGl0IG1pZ2h0IGhlbHAgdXNlcnMgd2hvCit3YW50IHRvIHVzZSB0aGUgUmFkaW9UcmFjayBjYXJkIGluIGFuIGVudmlyb25tZW50IG90aGVyIHRoYW4gTVMgV2luZG93cy4KKworV0hZIFRISVMgRE9DVU1FTlQ/CistLS0tLS0tLS0tLS0tLS0tLS0KK0kgaGF2ZSBhIFJhZGlvVHJhY2sgY2FyZCBmcm9tIGJhY2sgd2hlbiBJIHJhbiBhbiBNUy1XaW5kb3dzIHBsYXRmb3JtLiAgQWZ0ZXIKK2NvbnZlcnRpbmcgdG8gTGludXgsIEkgZm91bmQgR2lkZW9uIGxlIEdyYW5nZSdzIGNvbW1hbmQtbGluZSBzb2Z0d2FyZSBmb3IKK3J1bm5pbmcgdGhlIGNhcmQsIGFuZCBmb3VuZCB0aGF0IGl0IHdhcyBnb29kISAgRnJhbnMgQnJpbmttYW4gbWFkZSBhCitjb21mb3J0YWJsZSBYLXdpbmRvd3MgaW50ZXJmYWNlLCBhbmQgYWRkZWQgYSBzY2FubmluZyBmZWF0dXJlLiAgRm9yIGhhY2sKK3ZhbHVlLCBJIHdhbnRlZCB0byBzZWUgaWYgdGhlIHR1bmVyIGNvdWxkIGJlIHR1bmVkIGJleW9uZCB0aGUgdXN1YWwgRk0gcmFkaW8KK2Jyb2FkY2FzdCBiYW5kLCBzbyBJIGNvdWxkIHBpY2sgdXAgdGhlIGF1ZGlvIGNhcnJpZXJzIGZyb20gTm9ydGggQW1lcmljYW4KK2Jyb2FkY2FzdCBUViBjaGFubmVscywgc2l0dWF0ZWQganVzdCBiZWxvdyBhbmQgYWJvdmUgdGhlIDg3LjAtMTA5LjAgTUh6IHJhbmdlLgorSSBkaWQgbm90IGdldCBtdWNoIHN1Y2Nlc3MsIGJ1dCBJIGxlYXJuZWQgYWJvdXQgcHJvZ3JhbW1pbmcgaW9wb3J0cyB1bmRlcgorTGludXggYW5kIGdhaW5lZCBzb21lIGluc2lnaHRzIGFib3V0IHRoZSBoYXJkd2FyZSBkZXNpZ24gdXNlZCBmb3IgdGhlIGNhcmQuCisKK1NvLCB3aXRob3V0IGZ1cnRoZXIgZGVsYXksIGhlcmUgYXJlIHRoZSBkZXRhaWxzLgorCisKK1BIWVNJQ0FMIERFU0NSSVBUSU9OCistLS0tLS0tLS0tLS0tLS0tLS0tLQorVGhlIFJhZGlvVHJhY2sgY2FyZCBpcyBhbiBJU0EgOC1iaXQgRk0gcmFkaW8gY2FyZC4gIFRoZSByYWRpbyBmcmVxdWVuY3kgKFJGKQoraW5wdXQgaXMgc2ltcGx5IGFuIGFudGVubmEgbGVhZCwgYW5kIHRoZSBvdXRwdXQgaXMgYSBwb3dlciBhdWRpbyBzaWduYWwKK2F2YWlsYWJsZSB0aHJvdWdoIGEgbWluaWF0dXJlIHBob25lIHBsdWcuICBJdHMgUkYgZnJlcXVlbmNpZXMgb2Ygb3BlcmF0aW9uIGFyZQorbW9yZSBvciBsZXNzIGxpbWl0ZWQgZnJvbSA4Ny4wIHRvIDEwOS4wIE1IeiAodGhlIGNvbW1lcmNpYWwgRk0gYnJvYWRjYXN0CitiYW5kKS4gIEFsdGhvdWdoIHRoZSByZWdpc3RlcnMgY2FuIGJlIHByb2dyYW1tZWQgdG8gcmVxdWVzdCBmcmVxdWVuY2llcyBiZXlvbmQKK3RoZXNlIGxpbWl0cywgZXhwZXJpbWVudHMgZGlkIG5vdCBnaXZlIHByb21pc2luZyByZXN1bHRzLiAgVGhlIHZhcmlhYmxlCitmcmVxdWVuY3kgb3NjaWxsYXRvciAoVkZPKSB0aGF0IGRlbW9kdWxhdGVzIHRoZSBpbnRlcm1lZGlhdGUgZnJlcXVlbmN5IChJRikKK3NpZ25hbCBwcm9iYWJseSBoYXMgYSBzbWFsbCByYW5nZSBvZiB1c2VmdWwgZnJlcXVlbmNpZXMsIGFuZCB3cmFwcyBhcm91bmQgb3IKK2dldHMgY2xpcHBlZCBiZXlvbmQgdGhlIGxpbWl0cyBtZW50aW9uZWQgYWJvdmUuCisKKworQ09OVFJPTExJTkcgVEhFIENBUkQgV0lUSCBJT1BPUlQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgUmFkaW9UcmFjayAoYmFzZSkgaW9wb3J0IGlzIGNvbmZpZ3VyYWJsZSBmb3IgMHgzMGMgb3IgMHgyMGMuICBPbmx5IG9uZQoraW9wb3J0IHNlZW1zIHRvIGJlIGludm9sdmVkLiAgVGhlIGlvcG9ydCBkZWNvZGluZyBjaXJjdWl0cnkgbXVzdCBiZSBwcmV0dHkKK3NpbXBsZSwgYXMgaW5kaXZpZHVhbCBpb3BvcnQgYml0cyBhcmUgZGlyZWN0bHkgbWF0Y2hlZCB0byBzcGVjaWZpYyBmdW5jdGlvbnMKKyhvciBibG9ja3MpIG9mIHRoZSByYWRpbyBjYXJkLiAgVGhpcyB3YXksIG1hbnkgZnVuY3Rpb25zIGNhbiBiZSBjaGFuZ2VkIGluCitwYXJhbGxlbCB3aXRoIG9uZSB3cml0ZSB0byB0aGUgaW9wb3J0LiAgVGhlIG9ubHkgZmVlZGJhY2sgYXZhaWxhYmxlIHRocm91Z2gKK3RoZSBpb3BvcnRzIGFwcGVhcnMgdG8gYmUgdGhlICJTdGVyZW8gRGV0ZWN0IiBiaXQuCisKK1RoZSBiaXRzIG9mIHRoZSBpb3BvcnQgYXJlIGFycmFuZ2VkIGFzIGZvbGxvd3M6CisKKyAgTVNiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFNiCisrLS0tLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0rCit8IFZvbEEgfCBWb2xCIHwgPz8/PyB8IFN0ZXJlbyB8IFJhZGlvICB8IFR1bmVBIHwgVHVuZUIgICB8IFR1bmUgICB8Cit8ICAoKykgfCAgKC0pIHwgICAgICB8IERldGVjdCB8IEF1ZGlvICB8IChiaXQpIHwgKGxhdGNoKSB8IFVwZGF0ZSB8Cit8ICAgICAgfCAgICAgIHwgICAgICB8IEVuYWJsZSB8IEVuYWJsZSB8ICAgICAgIHwgICAgICAgICB8IEVuYWJsZSB8CisrLS0tLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0rCisKKworVm9sQSAuIFZvbEIgIFtBQi4uLi4uLl0KKy0tLS0tLS0tLS0tCiswIDAgOiBhdWRpbyBtdXRlCiswIDEgOiB2b2x1bWUgKyAgICAoc29tZSBkZWxheSByZXF1aXJlZCkKKzEgMCA6IHZvbHVtZSAtICAgIChzb21lIGRlbGF5IHJlcXVpcmVkKQorMSAxIDogc3RheSBhdCBwcmVzZW50IHZvbHVtZQorCitTdGVyZW8gRGV0ZWN0IEVuYWJsZSBbLi4uUy4uLi5dCistLS0tLS0tLS0tLS0tLS0tLS0tLQorMCA6IE5vIERldGVjdAorMSA6IERldGVjdAorCisgIFJlc3VsdHMgYXZhaWxhYmxlIGJ5IHJlYWRpbmcgaW9wb3J0ID42MCBtc2VjIGFmdGVyIGxhc3QgcG9ydCB3cml0ZS4KKyAgMHhmZiA9PT4gbm8gc3RlcmVvIGRldGVjdGVkLCAgMHhmZCA9PT4gc3RlcmVvIGRldGVjdGVkLgorCitSYWRpbyB0byBBdWRpbyAocGF0aCkgRW5hYmxlIFsuLi4uUi4uLl0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzAgOiBEaXNhYmxlIHBhdGggKHNpbGVuY2UpCisxIDogRW5hYmxlIHBhdGggIChhdWRpbyBwcm9kdWNlZCkKKworVHVuZUEgLiBUdW5lQiBbLi4uLi5BQi5dCistLS0tLS0tLS0tLS0tCiswIDAgOiAiemVybyIgYml0IHBoYXNlIDEKKzAgMSA6ICJ6ZXJvIiBiaXQgcGhhc2UgMgorCisxIDAgOiAib25lIiBiaXQgcGhhc2UgMQorMSAxIDogIm9uZSIgYml0IHBoYXNlIDIKKworICAyNC1iaXQgY29kZSwgd2hlcmUgYml0cyA9IChmcmVxKjQwKSArIDEwNDg2MTg4LgorICBUaGUgTW9zdCBTaWduaWZpY2FudCAxMSBiaXRzIG11c3QgYmUgMTAxMCB4eHh4IDB4MCB0byBiZSB2YWxpZC4KKyAgVGhlIGJpdHMgYXJlIHNoaWZ0ZWQgaW4gTFNiIGZpcnN0LgorCitUdW5lIFVwZGF0ZSBFbmFibGUgWy4uLi4uLi5UXQorLS0tLS0tLS0tLS0tLS0tLS0tCiswIDogVHVuZXIgaGVsZCBjb25zdGFudAorMSA6IFR1bmVyIHVwZGF0aW5nIGluIHByb2dyZXNzCisKKworUFJPR1JBTU1JTkcgRVhBTVBMRVMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCitEZWZhdWx0OiAgICAgICAgQkFTRSA8LS0gMHhjOCAgKGN1cnJlbnQgdm9sdW1lLCBubyBzdGVyZW8gZGV0ZWN0LAorCQkJCXJhZGlvIGVuYWJsZSwgdHVuZXIgYWRqdXN0IGRpc2FibGUpCisKK0NhcmQgT2ZmOglCQVNFIDwtLSAweDAwICAoYXVkaW8gbXV0ZSwgbm8gc3RlcmVvIGRldGVjdCwKKwkJCQlyYWRpbyBkaXNhYmxlLCB0dW5lciBhZGp1c3QgZGlzYWJsZSkKKworQ2FyZCBPbjoJQkFTRSA8LS0gMHgwMCAgKHNlZSAiQ2FyZCBPZmYiLCBjbGVhcnMgYW55IHVuZmluaXNoZWQgYnVzaW5lc3MpCisJCUJBU0UgPC0tIDB4YzggIChzZWUgIkRlZmF1bHQiKQorCitWb2x1bWUgRG93bjogICAgQkFTRSA8LS0gMHg0OCAgKHZvbHVtZSBkb3duLCBubyBzdGVyZW8gZGV0ZWN0LAorCQkJCXJhZGlvIGVuYWJsZSwgdHVuZXIgYWRqdXN0IGRpc2FibGUpCisJCSogd2FpdCAxMCBtc2VjICoKKwkJQkFTRSA8LS0gMHhjOCAgKHNlZSAiRGVmYXVsdCIpCisKK1ZvbHVtZSBVcDogICAgICBCQVNFIDwtLSAweDg4ICAodm9sdW1lIHVwLCBubyBzdGVyZW8gZGV0ZWN0LAorCQkJCXJhZGlvIGVuYWJsZSwgdHVuZXIgYWRqdXN0IGRpc2FibGUpCisJCSogd2FpdCAxMCBtc2VjICoKKwkJQkFTRSA8LS0gMHhjOCAgKHNlZSAiRGVmYXVsdCIpCisKK0NoZWNrIFN0ZXJlbzogICBCQVNFIDwtLSAweGQ4ICAoY3VycmVudCB2b2x1bWUsIHN0ZXJlbyBkZXRlY3QsCisJCQkJcmFkaW8gZW5hYmxlLCB0dW5lciBhZGp1c3QgZGlzYWJsZSkKKwkJKiB3YWl0IDEwMCBtc2VjICoKKwkJeCA8LS0gQkFTRSAgICAgKHJlYWQgaW9wb3J0KQorCQlCQVNFIDwtLSAweGM4ICAoc2VlICJEZWZhdWx0IikKKworCQl4PTB4ZmYgPT0+ICJub3Qgc3RlcmVvIiwgeD0weGZkID09PiAic3RlcmVvIGRldGVjdGVkIgorCitTZXQgRnJlcXVlbmN5OiAgY29kZSA9IChmcmVxKjQwKSArIDEwNDg2MTg4CisJCWZvcmVhY2ggb2YgdGhlIDI0IGJpdHMgaW4gY29kZSwKKwkJKGZyb20gTGVhc3QgdG8gTW9zdCBTaWduaWZpY2FudCk6CisJCSAgdG8gd3JpdGUgYSAiemVybyIgYml0LAorCQkgICAgQkFTRSA8LS0gMHgwMSAgKGF1ZGlvIG11dGUsIG5vIHN0ZXJlbyBkZXRlY3QsIHJhZGlvCisJCQkJICAgIGRpc2FibGUsICJ6ZXJvIiBiaXQgcGhhc2UgMSwgdHVuZXIgYWRqdXN0KQorCQkgICAgQkFTRSA8LS0gMHgwMyAgKGF1ZGlvIG11dGUsIG5vIHN0ZXJlbyBkZXRlY3QsIHJhZGlvCisJCQkJICAgIGRpc2FibGUsICJ6ZXJvIiBiaXQgcGhhc2UgMiwgdHVuZXIgYWRqdXN0KQorCQkgIHRvIHdyaXRlIGEgIm9uZSIgYml0LAorCQkgICAgQkFTRSA8LS0gMHgwNSAgKGF1ZGlvIG11dGUsIG5vIHN0ZXJlbyBkZXRlY3QsIHJhZGlvCisJCQkJICAgIGRpc2FibGUsICJvbmUiIGJpdCBwaGFzZSAxLCB0dW5lciBhZGp1c3QpCisJCSAgICBCQVNFIDwtLSAweDA3ICAoYXVkaW8gbXV0ZSwgbm8gc3RlcmVvIGRldGVjdCwgcmFkaW8KKwkJCQkgICAgZGlzYWJsZSwgIm9uZSIgYml0IHBoYXNlIDIsIHR1bmVyIGFkanVzdCkKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9zaF9tb2JpbGVfY2V1X2NhbWVyYS50eHQgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3NoX21vYmlsZV9jZXVfY2FtZXJhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTk2Y2U2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9zaF9tb2JpbGVfY2V1X2NhbWVyYS50eHQKQEAgLTAsMCArMSwxMzkgQEAKKwlDcm9wcGluZyBhbmQgU2NhbGluZyBhbGdvcml0aG0sIHVzZWQgaW4gdGhlIHNoX21vYmlsZV9jZXVfY2FtZXJhIGRyaXZlcgorCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1Rlcm1pbm9sb2d5CistLS0tLS0tLS0tLQorCitzZW5zb3Igc2NhbGVzOiBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBzY2FsZXMsIGNvbmZpZ3VyZWQgYnkgdGhlIHNlbnNvciBkcml2ZXIKK2hvc3Qgc2NhbGVzOiAtIi0gaG9zdCBkcml2ZXIKK2NvbWJpbmVkIHNjYWxlczogc2Vuc29yX3NjYWxlICogaG9zdF9zY2FsZQorCisKK0dlbmVyaWMgc2NhbGluZyAvIGNyb3BwaW5nIHNjaGVtZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0xLS0KK3wKKy0yLS0gLVwKK3wgICAgICAtLVwKK3wgICAgICAgICAtLVwKKystNS0tIC4gICAgICAtLSAtMy0tIC1cCit8ICAgICAgYC4uLiAgICAgICAgICAgIC1cCit8ICAgICAgICAgIGAuLi4gLTQtLSAuICAgLSAtNy4uCit8ICAgICAgICAgICAgICAgICAgICAgYC4KK3wgICAgICAgICAgICAgICAgICAgICAgIGAuIC42LS0KK3wKK3wgICAgICAgICAgICAgICAgICAgICAgICAuIC42Jy0KK3wgICAgICAgICAgICAgICAgICAgICAgLsK0Cit8ICAgICAgICAgICAuLi4gLTQnLSAuwrQKK3wgICAgICAgLi4uwrQgICAgICAgICAgICAgLSAtNycuCisrLTUnLSAuwrQgICAgICAgICAgICAgICAtLworfCAgICAgICAgICAgIC0tIC0zJy0gLS8KK3wgICAgICAgICAtLS8KK3wgICAgICAtLS8KKy0yJy0gLS8KK3wKK3wKKy0xJy0KKworSW4gdGhlIGFib3ZlIGNoYXJ0IG1pbnVzZXMgYW5kIHNsYXNoZXMgcmVwcmVzZW50ICJyZWFsIiBkYXRhIGFtb3VudHMsIHBvaW50cyBhbmQKK2FjY2VudHMgcmVwcmVzZW50ICJ1c2VmdWwiIGRhdGEsIGJhc2ljYWxseSwgQ0VVIHNjYWxlZCBhbmQgY3JvcHBlZCBvdXRwdXQsCittYXBwZWQgYmFjayBvbnRvIHRoZSBjbGllbnQncyBzb3VyY2UgcGxhbmUuCisKK1N1Y2ggYSBjb25maWd1cmF0aW9uIGNhbiBiZSBwcm9kdWNlZCBieSB1c2VyIHJlcXVlc3RzOgorCitTX0NST1AobGVmdCAvIHRvcCA9ICg1KSAtICgxKSwgd2lkdGggLyBoZWlnaHQgPSAoNScpIC0gKDUpKQorU19GTVQod2lkdGggLyBoZWlnaHQgPSAoNicpIC0gKDYpKQorCitIZXJlOgorCisoMSkgdG8gKDEnKSAtIHdob2xlIG1heCB3aWR0aCBvciBoZWlnaHQKKygxKSB0byAoMikgIC0gc2Vuc29yIGNyb3BwZWQgbGVmdCBvciB0b3AKKygyKSB0byAoMicpIC0gc2Vuc29yIGNyb3BwZWQgd2lkdGggb3IgaGVpZ2h0CisoMykgdG8gKDMnKSAtIHNlbnNvciBzY2FsZQorKDMpIHRvICg0KSAgLSBDRVUgY3JvcHBlZCBsZWZ0IG9yIHRvcAorKDQpIHRvICg0JykgLSBDRVUgY3JvcHBlZCB3aWR0aCBvciBoZWlnaHQKKyg1KSB0byAoNScpIC0gcmV2ZXJzZSBzZW5zb3Igc2NhbGUgYXBwbGllZCB0byBDRVUgY3JvcHBlZCB3aWR0aCBvciBoZWlnaHQKKygyKSB0byAoNSkgIC0gcmV2ZXJzZSBzZW5zb3Igc2NhbGUgYXBwbGllZCB0byBDRVUgY3JvcHBlZCBsZWZ0IG9yIHRvcAorKDYpIHRvICg2JykgLSBDRVUgc2NhbGUgLSB1c2VyIHdpbmRvdworCisKK1NfRk1UCistLS0tLQorCitEbyBub3QgdG91Y2ggaW5wdXQgcmVjdGFuZ2xlIC0gaXQgaXMgYWxyZWFkeSBvcHRpbWFsLgorCisxLiBDYWxjdWxhdGUgY3VycmVudCBzZW5zb3Igc2NhbGVzOgorCisJc2NhbGVfcyA9ICgoMicpIC0gKDIpKSAvICgoMycpIC0gKDMpKQorCisyLiBDYWxjdWxhdGUgImVmZmVjdGl2ZSIgaW5wdXQgY3JvcCAoc2Vuc29yIHN1YndpbmRvdykgLSBDRVUgY3JvcCBzY2FsZWQgYmFjayBhdAorY3VycmVudCBzZW5zb3Igc2NhbGVzIG9udG8gaW5wdXQgd2luZG93IC0gdGhpcyBpcyB1c2VyIFNfQ1JPUDoKKworCXdpZHRoX3UgPSAoNScpIC0gKDUpID0gKCg0JykgLSAoNCkpICogc2NhbGVfcworCiszLiBDYWxjdWxhdGUgbmV3IGNvbWJpbmVkIHNjYWxlcyBmcm9tICJlZmZlY3RpdmUiIGlucHV0IHdpbmRvdyB0byByZXF1ZXN0ZWQgdXNlcgord2luZG93OgorCisJc2NhbGVfY29tYiA9IHdpZHRoX3UgLyAoKDYnKSAtICg2KSkKKworNC4gQ2FsY3VsYXRlIHNlbnNvciBvdXRwdXQgd2luZG93IGJ5IGFwcGx5aW5nIGNvbWJpbmVkIHNjYWxlcyB0byByZWFsIGlucHV0Cit3aW5kb3c6CisKKwl3aWR0aF9zX291dCA9ICgoNycpIC0gKDcpKSA9ICgoMicpIC0gKDIpKSAvIHNjYWxlX2NvbWIKKworNS4gQXBwbHkgaXRlcmF0aXZlIHNlbnNvciBTX0ZNVCBmb3Igc2Vuc29yIG91dHB1dCB3aW5kb3cuCisKKwlzdWJkZXYtPnZpZGVvX29wcy0+c19mbXQoLndpZHRoID0gd2lkdGhfc19vdXQpCisKKzYuIFJldHJpZXZlIHNlbnNvciBvdXRwdXQgd2luZG93IChnX2ZtdCkKKworNy4gQ2FsY3VsYXRlIG5ldyBzZW5zb3Igc2NhbGVzOgorCisJc2NhbGVfc19uZXcgPSAoKDMnKV9uZXcgLSAoMylfbmV3KSAvICgoMicpIC0gKDIpKQorCis4LiBDYWxjdWxhdGUgbmV3IENFVSBjcm9wIC0gYXBwbHkgc2Vuc29yIHNjYWxlcyB0byBwcmV2aW91c2x5IGNhbGN1bGF0ZWQKKyJlZmZlY3RpdmUiIGNyb3A6CisKKwl3aWR0aF9jZXUgPSAoNCcpX25ldyAtICg0KV9uZXcgPSB3aWR0aF91IC8gc2NhbGVfc19uZXcKKwlsZWZ0X2NldSA9ICg0KV9uZXcgLSAoMylfbmV3ID0gKCg1KSAtICgyKSkgLyBzY2FsZV9zX25ldworCis5LiBVc2UgQ0VVIGNyb3BwaW5nIHRvIGNyb3AgdG8gdGhlIG5ldyB3aW5kb3c6CisKKwljZXVfY3JvcCgud2lkdGggPSB3aWR0aF9jZXUsIC5sZWZ0ID0gbGVmdF9jZXUpCisKKzEwLiBVc2UgQ0VVIHNjYWxpbmcgdG8gc2NhbGUgdG8gdGhlIHJlcXVlc3RlZCB1c2VyIHdpbmRvdzoKKworCXNjYWxlX2NldSA9IHdpZHRoX2NldSAvIHdpZHRoCisKKworU19DUk9QCistLS0tLS0KKworVGhlIEFQSSBhdCBodHRwOi8vdjRsMnNwZWMuYnl0ZXNleC5vcmcvc3BlYy94MTkwNC5odG0gc2F5czoKKworIi4uLnNwZWNpZmljYXRpb24gZG9lcyBub3QgZGVmaW5lIGFuIG9yaWdpbiBvciB1bml0cy4gSG93ZXZlciBieSBjb252ZW50aW9uCitkcml2ZXJzIHNob3VsZCBob3Jpem9udGFsbHkgY291bnQgdW5zY2FsZWQgc2FtcGxlcyByZWxhdGl2ZSB0byAwSC4iCisKK1dlIGNob29zZSB0byBmb2xsb3cgdGhlIGFkdmlzZSBhbmQgaW50ZXJwcmV0IGNyb3BwaW5nIHVuaXRzIGFzIGNsaWVudCBpbnB1dAorcGl4ZWxzLgorCitDcm9wcGluZyBpcyBwZXJmb3JtZWQgaW4gdGhlIGZvbGxvd2luZyA2IHN0ZXBzOgorCisxLiBSZXF1ZXN0IGV4YWN0bHkgdXNlciByZWN0YW5nbGUgZnJvbSB0aGUgc2Vuc29yLgorCisyLiBJZiBzbWFsbGVyIC0gaXRlcmF0ZSB1bnRpbCBhIGxhcmdlciBvbmUgaXMgb2J0YWluZWQuIFJlc3VsdDogc2Vuc29yIGNyb3BwZWQKKyAgIHRvIDIgOiAyJywgdGFyZ2V0IGNyb3AgNSA6IDUnLCBjdXJyZW50IG91dHB1dCBmb3JtYXQgNicgLSA2LgorCiszLiBJbiB0aGUgcHJldmlvdXMgc3RlcCB0aGUgc2Vuc29yIGhhcyB0cmllZCB0byBwcmVzZXJ2ZSBpdHMgb3V0cHV0IGZyYW1lIGFzCisgICBnb29kIGFzIHBvc3NpYmxlLCBidXQgaXQgY291bGQgaGF2ZSBjaGFuZ2VkLiBSZXRyaWV2ZSBpdCBhZ2Fpbi4KKworNC4gU2Vuc29yIHNjYWxlZCB0byAzIDogMycuIFNlbnNvcidzIHNjYWxlIGlzICgyJyAtIDIpIC8gKDMnIC0gMykuIENhbGN1bGF0ZQorICAgaW50ZXJtZWRpYXRlIHdpbmRvdzogNCcgLSA0ID0gKDUnIC0gNSkgKiAoMycgLSAzKSAvICgyJyAtIDIpCisKKzUuIENhbGN1bGF0ZSBhbmQgYXBwbHkgaG9zdCBzY2FsZSA9ICg2JyAtIDYpIC8gKDQnIC0gNCkKKworNi4gQ2FsY3VsYXRlIGFuZCBhcHBseSBob3N0IGNyb3A6IDYgLSA3ID0gKDUgLSAyKSAqICg2JyAtIDYpIC8gKDUnIC0gNSkKKworLS0KK0F1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxnLmxpYWtob3ZldHNraUBnbXguZGU+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3NpNDcweC50eHQgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3NpNDcweC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThjMzI5MgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvc2k0NzB4LnR4dApAQCAtMCwwICsxLDEyOSBAQAorRHJpdmVyIGZvciBVU0IgcmFkaW9zIGZvciB0aGUgU2lsaWNvbiBMYWJzIFNpNDcweCBGTSBSYWRpbyBSZWNlaXZlcnMKKworQ29weXJpZ2h0IChjKSAyMDA5IFRvYmlhcyBMb3JlbnogPHRvYmlhcy5sb3JlbnpAZ214Lm5ldD4KKworCitJbmZvcm1hdGlvbiBmcm9tIFNpbGljb24gTGFicworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1NpbGljb24gTGFib3JhdG9yaWVzIGlzIHRoZSBtYW51ZmFjdHVyZXIgb2YgdGhlIHJhZGlvIElDcywgdGhhdCBub3dhZGF5cyBhcmUgdGhlCittb3N0IG9mdGVuIHVzZWQgcmFkaW8gcmVjZWl2ZXJzIGluIGNlbGwgcGhvbmVzLiBVc3VhbGx5IHRoZXkgYXJlIGNvbm5lY3RlZCB3aXRoCitJMkMuIEJ1dCBTaUxhYnMgYWxzbyBwcm92aWRlcyBhIHJlZmVyZW5jZSBkZXNpZ24sIHdoaWNoIGludGVncmF0ZXMgdGhpcyBJQywKK3RvZ2V0aGVyIHdpdGggYSBzbWFsbCBtaWNyb2NvbnRyb2xsZXIgQzgwNTFGMzIxLCB0byBmb3JtIGEgVVNCIHJhZGlvLgorUGFydCBvZiB0aGlzIHJlZmVyZW5jZSBkZXNpZ24gaXMgYWxzbyBhIHJhZGlvIGFwcGxpY2F0aW9uIGluIGJpbmFyeSBhbmQgc291cmNlCitjb2RlLiBUaGUgc29mdHdhcmUgYWxzbyBjb250YWlucyBhbiBhdXRvbWF0aWMgZmlybXdhcmUgdXBncmFkZSB0byB0aGUgbW9zdAorY3VycmVudCB2ZXJzaW9uLiBJbmZvcm1hdGlvbiBvbiB0aGVzZSBjYW4gYmUgZG93bmxvYWRlZCBoZXJlOgoraHR0cDovL3d3dy5zaWxhYnMuY29tL3VzYnJhZGlvCisKKworU3VwcG9ydGVkIElDcworPT09PT09PT09PT09PQorVGhlIGZvbGxvd2luZyBJQ3MgaGF2ZSBhIHZlcnkgc2ltaWxhciByZWdpc3RlciBzZXQsIHNvIHRoYXQgdGhleSBhcmUgb3Igd2lsbCBiZQorc3VwcG9ydGVkIHNvbWV3aGVuIGJ5IHRoZSBkcml2ZXI6CistIFNpNDcwMDogRk0gcmFkaW8gcmVjZWl2ZXIKKy0gU2k0NzAxOiBGTSByYWRpbyByZWNlaXZlciwgUkRTIFN1cHBvcnQKKy0gU2k0NzAyOiBGTSByYWRpbyByZWNlaXZlcgorLSBTaTQ3MDM6IEZNIHJhZGlvIHJlY2VpdmVyLCBSRFMgU3VwcG9ydAorLSBTaTQ3MDQ6IEZNIHJhZGlvIHJlY2VpdmVyLCBubyBleHRlcm5hbCBhbnRlbm5hIHJlcXVpcmVkCistIFNpNDcwNTogRk0gcmFkaW8gcmVjZWl2ZXIsIG5vIGV4dGVybmFsIGFudGVubmEgcmVxdWlyZWQsIFJEUyBzdXBwb3J0LCBEaWcgSS9PCistIFNpNDcwNjogRW5oYW5jZWQgRk0gUkRTL1RNQyByYWRpbyByZWNlaXZlciwgbm8gZXh0ZXJuYWwgYW50ZW5uYSByZXF1aXJlZCwgUkRTCisJICBTdXBwb3J0CistIFNpNDcwNzogRGVkaWNhdGVkIHdlYXRoZXIgYmFuZCByYWRpbyByZWNlaXZlciB3aXRoIFNBTUUgZGVjb2RlciwgUkRTIFN1cHBvcnQKKy0gU2k0NzA4OiBTbWFsbGVzdCBGTSByZWNlaXZlcnMKKy0gU2k0NzA5OiBTbWFsbGVzdCBGTSByZWNlaXZlcnMsIFJEUyBTdXBwb3J0CitNb3JlIGluZm9ybWF0aW9uIG9uIHRoZXNlIGNhbiBiZSBkb3dubG9hZGVkIGhlcmU6CitodHRwOi8vd3d3LnNpbGFicy5jb20vcHJvZHVjdHMvbWN1L1BhZ2VzL1VTQkZNUmFkaW9SRC5hc3B4CisKKworU3VwcG9ydGVkIFVTQiBkZXZpY2VzCis9PT09PT09PT09PT09PT09PT09PT0KK0N1cnJlbnRseSB0aGUgZm9sbG93aW5nIFVTQiByYWRpb3MgKHZlbmRvcjpwcm9kdWN0KSB3aXRoIHRoZSBTaWxpY29uIExhYnMgc2k0NzB4CitjaGlwcyBhcmUga25vd24gdG8gd29yazoKKy0gMTBjNDo4MThhOiBTaWxpY29uIExhYnMgVVNCIEZNIFJhZGlvIFJlZmVyZW5jZSBEZXNpZ24KKy0gMDZlMTphMTU1OiBBRFMvVGVjaCBGTSBSYWRpbyBSZWNlaXZlciAoZm9ybWVybHkgSW5zdGFudCBGTSBNdXNpYykgKFJEWC0xNTUtRUYpCistIDFiODA6ZDcwMDogS1dvcmxkIFVTQiBGTSBSYWRpbyBTbmFwTXVzaWMgTW9iaWxlIDcwMCAoRk03MDApCistIDEwYzU6ODE5YTogU2FuZWkgRWxlY3RyaWMsIEluYy4gRk0gVVNCIFJhZGlvIChzb2xkIGFzIERlYWxFeHRyZW1lLmNvbSBQQ2VhcikKKworCitTb2Z0d2FyZQorPT09PT09PT0KK1Rlc3RpbmcgaXMgdXN1YWxseSBkb25lIHdpdGggbW9zdCBhcHBsaWNhdGlvbiB1bmRlciBEZWJpYW4vdGVzdGluZzoKKy0gZm10b29scyAtIFV0aWxpdHkgZm9yIG1hbmFnaW5nIEZNIHR1bmVyIGNhcmRzCistIGdub21lcmFkaW8gLSBGTS1yYWRpbyB0dW5lciBmb3IgdGhlIEdOT01FIGRlc2t0b3AKKy0gZ3JhZGlvIC0gR1RLIEZNIHJhZGlvIHR1bmVyCistIGtyYWRpbyAtIENvbWZvcnRhYmxlIFJhZGlvIEFwcGxpY2F0aW9uIGZvciBLREUKKy0gcmFkaW8gLSBuY3Vyc2VzLWJhc2VkIHJhZGlvIGFwcGxpY2F0aW9uCistIG1wbGF5ZXIgLSBUaGUgVWx0aW1hdGUgTW92aWUgUGxheWVyIEZvciBMaW51eAorLSB2NGwyLWN0bCAtIENvbGxlY3Rpb24gb2YgY29tbWFuZCBsaW5lIHZpZGVvNGxpbnV4IHV0aWxpdGllcworRm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlOgordjRsMi1jdGwgLWQgL2Rldi9yYWRpbzAgLS1zZXQtY3RybD12b2x1bWU9MTAsbXV0ZT0wIC0tc2V0LWZyZXE9OTUuMjEgLS1hbGwKKworVGhlcmUgaXMgYWxzbyBhIGxpYnJhcnkgbGlidjRsLCB3aGljaCBjYW4gYmUgdXNlZC4gSXQncyBnb2luZyB0byBoYXZlIGEgZnVuY3Rpb24KK2ZvciBmcmVxdWVuY3kgc2Vla2luZywgZWl0aGVyIGJ5IHVzaW5nIGhhcmR3YXJlIGZ1bmN0aW9uYWxpdHkgYXMgaW4gcmFkaW8tc2k0NzB4CitvciBieSBpbXBsZW1lbnRpbmcgYSBmdW5jdGlvbiBhcyB3ZSBjdXJyZW50bHkgaGF2ZSBpbiBldmVyeSBvZiB0aGUgbWVudGlvbmVkCitwcm9ncmFtcy4gU29tZXdoZW4gdGhlIHJhZGlvIHByb2dyYW1zIHNob3VsZCBtYWtlIHVzZSBvZiBsaWJ2NGwuCisKK0ZvciBwcm9jZXNzaW5nIFJEUyBpbmZvcm1hdGlvbiwgdGhlcmUgaXMgYSBwcm9qZWN0IG9uZ29pbmcgYXQ6CitodHRwOi8vcmRzZC5iZXJsaW9zLmRlLworCitUaGVyZSBpcyBjdXJyZW50bHkgbm8gcHJvamVjdCBmb3IgbWFraW5nIFRNQyBzZW50ZW5jZXMgaHVtYW4gcmVhZGFibGUuCisKKworQXVkaW8gTGlzdGluZworPT09PT09PT09PT09PQorVVNCIEF1ZGlvIGlzIHByb3ZpZGVkIGJ5IHRoZSBBTFNBIHNuZF91c2JfYXVkaW8gbW9kdWxlLiBJdCBpcyByZWNvbW1lbmRlZCB0bworYWxzbyBzZWxlY3QgU05EX1VTQl9BVURJTywgYXMgdGhpcyBpcyByZXF1aXJlZCB0byBnZXQgc291bmQgZnJvbSB0aGUgcmFkaW8uIEZvcgorbGlzdGluZyB5b3UgaGF2ZSB0byByZWRpcmVjdCB0aGUgc291bmQsIGZvciBleGFtcGxlIHVzaW5nIG9uZSBvZiB0aGUgZm9sbG93aW5nCitjb21tYW5kcy4gUGxlYXNlIGFkanVzdCB0aGUgYXVkaW8gZGV2aWNlcyB0byB5b3VyIG5lZWRzICgvZGV2L2RzcCogYW5kIGh3OngseCkuCisKK0lmIHlvdSBqdXN0IHdhbnQgdG8gdGVzdCBhdWRpbyAodmVyeSBwb29yIHF1YWxpdHkpOgorY2F0IC9kZXYvZHNwMSA+IC9kZXYvZHNwCisKK0lmIHlvdSB1c2Ugc294ICsgT1NTIHRyeToKK3NveCAtMiAtLWVuZGlhbiBsaXR0bGUgLXIgOTYwMDAgLXQgb3NzIC9kZXYvZHNwMSAtdCBvc3MgL2Rldi9kc3AKK29yIHVzaW5nIHNveCArIGFsc2E6Citzb3ggLS1lbmRpYW4gbGl0dGxlIC1jIDIgLVMgLXIgOTYwMDAgLXQgYWxzYSBodzoxIC10IGFsc2EgLXIgOTYwMDAgaHc6MAorCitJZiB5b3UgdXNlIGFydHMgdHJ5OgorYXJlY29yZCAtRCBodzoxLDAgLXI5NjAwMCAtYzIgLWYgUzE2X0xFIHwgYXJ0c2RzcCBhcGxheSAtQiAtCisKK0lmIHlvdSB1c2UgbXBsYXllciB0cnk6CittcGxheWVyIC1yYWRpbyBhZGV2aWNlPWh3PTEuMDphcmF0ZT05NjAwMCBcCisJLXJhd2F1ZGlvIHJhdGU9OTYwMDAgXAorCXJhZGlvOi8vPGZyZXF1ZW5jeT4vY2FwdHVyZQorCitNb2R1bGUgUGFyYW1ldGVycworPT09PT09PT09PT09PT09PT0KK0FmdGVyIGxvYWRpbmcgdGhlIG1vZHVsZSwgeW91IHN0aWxsIGhhdmUgYWNjZXNzIHRvIHNvbWUgb2YgdGhlbSBpbiB0aGUgc3lzZnMKK21vdW50IHVuZGVyIC9zeXMvbW9kdWxlL3JhZGlvX3NpNDcweC9wYXJhbWV0ZXJzLiBUaGUgY29udGVudHMgb2YgcmVhZC1vbmx5IGZpbGVzCisoMDQ0NCkgYXJlIG5vdCB1cGRhdGVkLCBldmVuIGlmIHNwYWNlLCBiYW5kIGFuZCBkZSBhcmUgY2hhbmdlZCB1c2luZyBwcml2YXRlCit2aWRlbyBjb250cm9scy4gVGhlIG90aGVycyBhcmUgcnVudGltZSBjaGFuZ2VhYmxlLgorCisKK0Vycm9ycworPT09PT09CitJbmNyZWFzZSB0dW5lX3RpbWVvdXQsIGlmIHlvdSBvZnRlbiBnZXQgLUVJTyBlcnJvcnMuCisKK1doZW4gdGltZWQgb3V0IG9yIGJhbmQgbGltaXQgaXMgcmVhY2hlZCwgaHdfZnJlcV9zZWVrIHJldHVybnMgLUVBR0FJTi4KKworSWYgeW91IGdldCBhbnkgZXJyb3JzIGZyb20gc25kX3VzYl9hdWRpbywgcGxlYXNlIHJlcG9ydCB0aGVtIHRvIHRoZSBBTFNBIHBlb3BsZS4KKworCitPcGVuIElzc3VlcworPT09PT09PT09PT0KK1Y0TCBtaW5vciBkZXZpY2UgYWxsb2NhdGlvbiBhbmQgcGFyYW1ldGVyIHNldHRpbmcgaXMgbm90IHBlcmZlY3QuIEEgc29sdXRpb24gaXMKK2N1cnJlbnRseSB1bmRlciBkaXNjdXNzaW9uLgorCitUaGVyZSBpcyBhbiBVU0IgaW50ZXJmYWNlIGZvciBkb3dubG9hZGluZy91cGxvYWRpbmcgbmV3IGZpcm13YXJlIGltYWdlcy4gU3VwcG9ydAorZm9yIGl0IGNhbiBiZSBpbXBsZW1lbnRlZCB1c2luZyB0aGUgcmVxdWVzdF9maXJtd2FyZSBpbnRlcmZhY2UuCisKK1RoZXJlIGlzIGEgUkRTIGludGVycnVwdCBtb2RlLiBUaGUgZHJpdmVyIGlzIGFscmVhZHkgdXNpbmcgdGhlIHNhbWUgaW50ZXJmYWNlCitmb3IgcG9sbGluZyBSRFMgaW5mb3JtYXRpb24sIGJ1dCBpcyBjdXJyZW50bHkgbm90IHVzaW5nIHRoZSBpbnRlcnJ1cHQgbW9kZS4KKworVGhlcmUgaXMgYSBMRUQgaW50ZXJmYWNlLCB3aGljaCBjYW4gYmUgdXNlZCB0byBvdmVycmlkZSB0aGUgTEVEIGNvbnRyb2wKK3Byb2dyYW1tZWQgaW4gdGhlIGZpcm13YXJlLiBUaGlzIGNhbiBiZSBtYWRlIGF2YWlsYWJsZSB1c2luZyB0aGUgTEVEIHN1cHBvcnQKK2Z1bmN0aW9ucyBpbiB0aGUga2VybmVsLgorCisKK090aGVyIHVzZWZ1bCBpbmZvcm1hdGlvbiBhbmQgbGlua3MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2h0dHA6Ly93d3cuc2lsYWJzLmNvbS91c2JyYWRpbwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9zaTQ3MTMudHh0IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9zaTQ3MTMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlNzM5MmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3NpNDcxMy50eHQKQEAgLTAsMCArMSwxNzYgQEAKK0RyaXZlciBmb3IgSTJDIHJhZGlvcyBmb3IgdGhlIFNpbGljb24gTGFicyBTaTQ3MTMgRk0gUmFkaW8gVHJhbnNtaXR0ZXJzCisKK0NvcHlyaWdodCAoYykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbgorQ29udGFjdDogRWR1YXJkbyBWYWxlbnRpbiA8ZWR1YXJkby52YWxlbnRpbkBub2tpYS5jb20+CisKKworSW5mb3JtYXRpb24gYWJvdXQgdGhlIERldmljZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorVGhpcyBjaGlwIGlzIGEgU2lsaWNvbiBMYWJzIHByb2R1Y3QuIEl0IGlzIGEgSTJDIGRldmljZSwgY3VycmVudGx5IG9uIDB4NjMgYWRkcmVzcy4KK0Jhc2ljYWxseSwgaXQgaGFzIHRyYW5zbWlzc2lvbiBhbmQgc2lnbmFsIG5vaXNlIGxldmVsIG1lYXN1cmVtZW50IGZlYXR1cmVzLgorCitUaGUgU2k0NzEzIGludGVncmF0ZXMgdHJhbnNtaXQgZnVuY3Rpb25zIGZvciBGTSBicm9hZGNhc3Qgc3RlcmVvIHRyYW5zbWlzc2lvbi4KK1RoZSBjaGlwIGFsc28gYWxsb3dzIGludGVncmF0ZWQgcmVjZWl2ZSBwb3dlciBzY2FubmluZyB0byBpZGVudGlmeSBsb3cgc2lnbmFsCitwb3dlciBGTSBjaGFubmVscy4KKworVGhlIGNoaXAgaXMgcHJvZ3JhbW1lZCB1c2luZyBjb21tYW5kcyBhbmQgcmVzcG9uc2VzLiBUaGVyZSBhcmUgYWxzbyBzZXZlcmFsCitwcm9wZXJ0aWVzIHdoaWNoIGNhbiBjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIHRoaXMgY2hpcC4KKworVXNlcnMgbXVzdCBjb21wbHkgd2l0aCBsb2NhbCByZWd1bGF0aW9ucyBvbiByYWRpbyBmcmVxdWVuY3kgKFJGKSB0cmFuc21pc3Npb24uCisKK0RldmljZSBkcml2ZXIgZGVzY3JpcHRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT0KK1RoZXJlIGFyZSB0d28gbW9kdWxlcyB0byBoYW5kbGUgdGhpcyBkZXZpY2UuIE9uZSBpcyBhIEkyQyBkZXZpY2UgZHJpdmVyCithbmQgdGhlIG90aGVyIGlzIGEgcGxhdGZvcm0gZHJpdmVyLgorCitUaGUgSTJDIGRldmljZSBkcml2ZXIgZXhwb3J0cyBhIHY0bDItc3ViZGV2IGludGVyZmFjZSB0byB0aGUga2VybmVsLgorQWxsIHByb3BlcnRpZXMgY2FuIGFsc28gYmUgYWNjZXNzZWQgYnkgdjRsMiBleHRlbmRlZCBjb250cm9scyBpbnRlcmZhY2UsIGJ5Cit1c2luZyB0aGUgdjRsMi1zdWJkZXYgY2FsbHMgKGdfZXh0X2N0cmxzLCBzX2V4dF9jdHJscykuCisKK1RoZSBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyIGV4cG9ydHMgYSB2NGwyIHJhZGlvIGRldmljZSBpbnRlcmZhY2UgdG8gdXNlciBsYW5kLgorU28sIGl0IHVzZXMgdGhlIEkyQyBkZXZpY2UgZHJpdmVyIGFzIGEgc3ViIGRldmljZSBpbiBvcmRlciB0byBzZW5kIHRoZSB1c2VyCitjb21tYW5kcyB0byB0aGUgYWN0dWFsIGRldmljZS4gQmFzaWNhbGx5IGl0IGlzIGEgd3JhcHBlciB0byB0aGUgSTJDIGRldmljZSBkcml2ZXIuCisKK0FwcGxpY2F0aW9ucyBjYW4gdXNlIHY0bDIgcmFkaW8gQVBJIHRvIHNwZWNpZnkgZnJlcXVlbmN5IG9mIG9wZXJhdGlvbiwgbXV0ZSBzdGF0ZSwKK2V0Yy4gQnV0IG1vc3RseSBvZiBpdHMgcHJvcGVydGllcyB3aWxsIGJlIHByZXNlbnQgaW4gdGhlIGV4dGVuZGVkIGNvbnRyb2xzLgorCitXaGVuIHRoZSB2NGwyIG11dGUgcHJvcGVydHkgaXMgc2V0IHRvIDEgKHRydWUpLCB0aGUgZHJpdmVyIHdpbGwgdHVybiB0aGUgY2hpcCBvZmYuCisKK1Byb3BlcnRpZXMgZGVzY3JpcHRpb24KKz09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHByb3BlcnRpZXMgY2FuIGJlIGFjY2Vzc2VkIHVzaW5nIHY0bDIgZXh0ZW5kZWQgY29udHJvbHMuCitIZXJlIGlzIGFuIG91dHB1dCBmcm9tIHY0bDItY3RsIHV0aWw6CisvICMgdjRsMi1jdGwgLWQgL2Rldi9yYWRpbzAgLS1hbGwgLUwKK0RyaXZlciBJbmZvOgorCURyaXZlciBuYW1lICAgOiByYWRpby1zaTQ3MTMKKwlDYXJkIHR5cGUgICAgIDogU2lsaWNvbiBMYWJzIFNpNDcxMyBNb2R1bGF0b3IKKwlCdXMgaW5mbyAgICAgIDoKKwlEcml2ZXIgdmVyc2lvbjogMAorCUNhcGFiaWxpdGllcyAgOiAweDAwMDgwODAwCisJCVJEUyBPdXRwdXQKKwkJTW9kdWxhdG9yCitBdWRpbyBvdXRwdXQ6IDAgKEZNIE1vZHVsYXRvciBBdWRpbyBPdXQpCitGcmVxdWVuY3k6IDE0MDgwMDAgKDg4LjAwMDAwMCBNSHopCitWaWRlbyBTdGFuZGFyZCA9IDB4MDAwMDAwMDAKK01vZHVsYXRvcjoKKwlOYW1lICAgICAgICAgICAgICAgICA6IEZNIE1vZHVsYXRvcgorCUNhcGFiaWxpdGllcyAgICAgICAgIDogNjIuNSBIeiBzdGVyZW8gcmRzCisJRnJlcXVlbmN5IHJhbmdlICAgICAgOiA3Ni4wIE1IeiAtIDEwOC4wIE1IegorCVN1YmNoYW5uZWwgbW9kdWxhdGlvbjogc3RlcmVvK3JkcworCitVc2VyIENvbnRyb2xzCisKKwkJCSAgIG11dGUgKGJvb2wpIDogZGVmYXVsdD0xIHZhbHVlPTAKKworRk0gUmFkaW8gTW9kdWxhdG9yIENvbnRyb2xzCisKKwkgICByZHNfc2lnbmFsX2RldmlhdGlvbiAoaW50KSAgOiBtaW49MCBtYXg9OTAwMDAgc3RlcD0xMCBkZWZhdWx0PTIwMCB2YWx1ZT0yMDAgZmxhZ3M9c2xpZGVyCisJCSByZHNfcHJvZ3JhbV9pZCAoaW50KSAgOiBtaW49MCBtYXg9NjU1MzUgc3RlcD0xIGRlZmF1bHQ9MCB2YWx1ZT0wCisJICAgICAgIHJkc19wcm9ncmFtX3R5cGUgKGludCkgIDogbWluPTAgbWF4PTMxIHN0ZXA9MSBkZWZhdWx0PTAgdmFsdWU9MAorCQkgICAgcmRzX3BzX25hbWUgKHN0cikgIDogbWluPTAgbWF4PTk2IHN0ZXA9OCB2YWx1ZT0nc2k0NzEzICAnCisJCSByZHNfcmFkaW9fdGV4dCAoc3RyKSAgOiBtaW49MCBtYXg9Mzg0IHN0ZXA9MzIgdmFsdWU9JycKKyAgYXVkaW9fbGltaXRlcl9mZWF0dXJlX2VuYWJsZWQgKGJvb2wpIDogZGVmYXVsdD0xIHZhbHVlPTEKKyAgICAgYXVkaW9fbGltaXRlcl9yZWxlYXNlX3RpbWUgKGludCkgIDogbWluPTI1MCBtYXg9MTAyMzkwIHN0ZXA9NTAgZGVmYXVsdD01MDEwIHZhbHVlPTUwMTAgZmxhZ3M9c2xpZGVyCisJYXVkaW9fbGltaXRlcl9kZXZpYXRpb24gKGludCkgIDogbWluPTAgbWF4PTkwMDAwIHN0ZXA9MTAgZGVmYXVsdD02NjI1MCB2YWx1ZT02NjI1MCBmbGFncz1zbGlkZXIKK2F1ZGlvX2NvbXByZXNzaW9uX2ZlYXR1cmVfZW5hYmwgKGJvb2wpIDogZGVmYXVsdD0xIHZhbHVlPTEKKwkgYXVkaW9fY29tcHJlc3Npb25fZ2FpbiAoaW50KSAgOiBtaW49MCBtYXg9MjAgc3RlcD0xIGRlZmF1bHQ9MTUgdmFsdWU9MTUgZmxhZ3M9c2xpZGVyCisgICAgYXVkaW9fY29tcHJlc3Npb25fdGhyZXNob2xkIChpbnQpICA6IG1pbj0tNDAgbWF4PTAgc3RlcD0xIGRlZmF1bHQ9LTQwIHZhbHVlPS00MCBmbGFncz1zbGlkZXIKKyAgYXVkaW9fY29tcHJlc3Npb25fYXR0YWNrX3RpbWUgKGludCkgIDogbWluPTAgbWF4PTUwMDAgc3RlcD01MDAgZGVmYXVsdD0wIHZhbHVlPTAgZmxhZ3M9c2xpZGVyCisgYXVkaW9fY29tcHJlc3Npb25fcmVsZWFzZV90aW1lIChpbnQpICA6IG1pbj0xMDAwMDAgbWF4PTEwMDAwMDAgc3RlcD0xMDAwMDAgZGVmYXVsdD0xMDAwMDAwIHZhbHVlPTEwMDAwMDAgZmxhZ3M9c2xpZGVyCisgICAgIHBpbG90X3RvbmVfZmVhdHVyZV9lbmFibGVkIChib29sKSA6IGRlZmF1bHQ9MSB2YWx1ZT0xCisJICAgcGlsb3RfdG9uZV9kZXZpYXRpb24gKGludCkgIDogbWluPTAgbWF4PTkwMDAwIHN0ZXA9MTAgZGVmYXVsdD02NzUwIHZhbHVlPTY3NTAgZmxhZ3M9c2xpZGVyCisJICAgcGlsb3RfdG9uZV9mcmVxdWVuY3kgKGludCkgIDogbWluPTAgbWF4PTE5MDAwIHN0ZXA9MSBkZWZhdWx0PTE5MDAwIHZhbHVlPTE5MDAwIGZsYWdzPXNsaWRlcgorCSAgcHJlX2VtcGhhc2lzX3NldHRpbmdzIChtZW51KSA6IG1pbj0wIG1heD0yIGRlZmF1bHQ9MSB2YWx1ZT0xCisJICAgICAgIHR1bmVfcG93ZXJfbGV2ZWwgKGludCkgIDogbWluPTAgbWF4PTEyMCBzdGVwPTEgZGVmYXVsdD04OCB2YWx1ZT04OCBmbGFncz1zbGlkZXIKKwkgdHVuZV9hbnRlbm5hX2NhcGFjaXRvciAoaW50KSAgOiBtaW49MCBtYXg9MTkxIHN0ZXA9MSBkZWZhdWx0PTAgdmFsdWU9MTEwIGZsYWdzPXNsaWRlcgorLyAjCisKK0hlcmUgaXMgYSBzdW1tYXJ5IG9mIHRoZW06CisKKyogUGlsb3QgaXMgYW4gYXVkaWJsZSB0b25lIHNlbnQgYnkgdGhlIGRldmljZS4KKworcGlsb3RfZnJlcXVlbmN5IC0gQ29uZmlndXJlcyB0aGUgZnJlcXVlbmN5IG9mIHRoZSBzdGVyZW8gcGlsb3QgdG9uZS4KK3BpbG90X2RldmlhdGlvbiAtIENvbmZpZ3VyZXMgcGlsb3QgdG9uZSBmcmVxdWVuY3kgZGV2aWF0aW9uIGxldmVsLgorcGlsb3RfZW5hYmxlZCAtIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHBpbG90IHRvbmUgZmVhdHVyZS4KKworKiBUaGUgc2k0NzEzIGRldmljZSBpcyBjYXBhYmxlIG9mIGFwcGx5aW5nIGF1ZGlvIGNvbXByZXNzaW9uIHRvIHRoZSB0cmFuc21pdHRlZCBzaWduYWwuCisKK2Fjb21wX2VuYWJsZWQgLSBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBhdWRpbyBkeW5hbWljIHJhbmdlIGNvbnRyb2wgZmVhdHVyZS4KK2Fjb21wX2dhaW4gLSBTZXRzIHRoZSBnYWluIGZvciBhdWRpbyBkeW5hbWljIHJhbmdlIGNvbnRyb2wuCithY29tcF90aHJlc2hvbGQgLSBTZXRzIHRoZSB0aHJlc2hvbGQgbGV2ZWwgZm9yIGF1ZGlvIGR5bmFtaWMgcmFuZ2UgY29udHJvbC4KK2Fjb21wX2F0dGFja190aW1lIC0gU2V0cyB0aGUgYXR0YWNrIHRpbWUgZm9yIGF1ZGlvIGR5bmFtaWMgcmFuZ2UgY29udHJvbC4KK2Fjb21wX3JlbGVhc2VfdGltZSAtIFNldHMgdGhlIHJlbGVhc2UgdGltZSBmb3IgYXVkaW8gZHluYW1pYyByYW5nZSBjb250cm9sLgorCisqIExpbWl0ZXIgc2V0dXBzIGF1ZGlvIGRldmlhdGlvbiBsaW1pdGVyIGZlYXR1cmUuIE9uY2UgYSBvdmVyIGRldmlhdGlvbiBvY2N1cnMsCitpdCBpcyBwb3NzaWJsZSB0byBhZGp1c3QgdGhlIGZyb250LWVuZCBnYWluIG9mIHRoZSBhdWRpbyBpbnB1dCBhbmQgYWx3YXlzCitwcmV2ZW50IG92ZXIgZGV2aWF0aW9uLgorCitsaW1pdGVyX2VuYWJsZWQgLSBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBsaW1pdGVyIGZlYXR1cmUuCitsaW1pdGVyX2RldmlhdGlvbiAtIENvbmZpZ3VyZXMgYXVkaW8gZnJlcXVlbmN5IGRldmlhdGlvbiBsZXZlbC4KK2xpbWl0ZXJfcmVsZWFzZV90aW1lIC0gU2V0cyB0aGUgbGltaXRlciByZWxlYXNlIHRpbWUuCisKKyogVHVuaW5nIHBvd2VyCisKK3Bvd2VyX2xldmVsIC0gU2V0cyB0aGUgb3V0cHV0IHBvd2VyIGxldmVsIGZvciBzaWduYWwgdHJhbnNtaXNzaW9uLgorYW50ZW5uYV9jYXBhY2l0b3IgLSBUaGlzIHNlbGVjdHMgdGhlIHZhbHVlIG9mIGFudGVubmEgdHVuaW5nIGNhcGFjaXRvciBtYW51YWxseQorb3IgYXV0b21hdGljYWxseSBpZiBzZXQgdG8gemVyby4KKworKiBSRFMgcmVsYXRlZAorCityZHNfcHNfbmFtZSAtIFNldHMgdGhlIFJEUyBwcyBuYW1lIGZpZWxkIGZvciB0cmFuc21pc3Npb24uCityZHNfcmFkaW9fdGV4dCAtIFNldHMgdGhlIFJEUyByYWRpbyB0ZXh0IGZvciB0cmFuc21pc3Npb24uCityZHNfcGkgLSBTZXRzIHRoZSBSRFMgUEkgZmllbGQgZm9yIHRyYW5zbWlzc2lvbi4KK3Jkc19wdHkgLSBTZXRzIHRoZSBSRFMgUFRZIGZpZWxkIGZvciB0cmFuc21pc3Npb24uCisKKyogUmVnaW9uIHJlbGF0ZWQKKworcHJlZW1waGFzaXMgLSBzZXRzIHRoZSBwcmVlbXBoYXNpcyB0byBiZSBhcHBsaWVkIGZvciB0cmFuc21pc3Npb24uCisKK1JOTAorPT09CisKK1RoaXMgZGV2aWNlIGFsc28gaGFzIGFuIGludGVyZmFjZSB0byBtZWFzdXJlIHJlY2VpdmVkIG5vaXNlIGxldmVsLiBUbyBkbyB0aGF0LCB5b3Ugc2hvdWxkCitpb2N0bCB0aGUgZGV2aWNlIG5vZGUuIEhlcmUgaXMgYW4gY29kZSBvZiBleGFtcGxlOgorCitpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlzdHJ1Y3Qgc2k0NzEzX3JubCBybmw7CisJaW50IGZkID0gb3BlbigiL2Rldi9yYWRpbzAiLCBPX1JEV1IpOworCWludCBydmFsOworCisJaWYgKGFyZ2MgPCAyKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChmZCA8IDApCisJCXJldHVybiBmZDsKKworCXNzY2FuZihhcmd2WzFdLCAiJWQiLCAmcm5sLmZyZXF1ZW5jeSk7CisKKwlydmFsID0gaW9jdGwoZmQsIFNJNDcxM19JT0NfTUVBU1VSRV9STkwsICZybmwpOworCWlmIChydmFsIDwgMCkKKwkJcmV0dXJuIHJ2YWw7CisKKwlwcmludGYoInJlY2VpdmVkIG5vaXNlIGxldmVsOiAlZFxuIiwgcm5sLnJubCk7CisKKwljbG9zZShmZCk7Cit9CisKK1RoZSBzdHJ1Y3Qgc2k0NzEzX3JubCBhbmQgU0k0NzEzX0lPQ19NRUFTVVJFX1JOTCBhcmUgZGVmaW5lZCB1bmRlcgoraW5jbHVkZS9tZWRpYS9zaTQ3MTMuaC4KKworU3RlcmVvL01vbm8gYW5kIFJEUyBzdWJjaGFubmVscworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgZGV2aWNlIGNhbiBhbHNvIGJlIGNvbmZpZ3VyZWQgdXNpbmcgdGhlIGF2YWlsYWJsZSBzdWIgY2hhbm5lbHMgZm9yCit0cmFuc21pc3Npb24uIFRvIGRvIHRoYXQgdXNlIFMvR19NT0RVTEFUT1IgaW9jdGwgYW5kIGNvbmZpZ3VyZSB0eHN1YmNoYW5zIHByb3Blcmx5LgorUmVmZXIgdG8gdGhlIFY0TDIgQVBJIHNwZWNpZmljYXRpb24gZm9yIHByb3BlciB1c2Ugb2YgdGhpcyBpb2N0bC4KKworVGVzdGluZworPT09PT09PQorVGVzdGluZyBpcyB1c3VhbGx5IGRvbmUgd2l0aCB2NGwyLWN0bCB1dGlsaXR5IGZvciBtYW5hZ2luZyBGTSB0dW5lciBjYXJkcy4KK1RoZSB0b29sIGNhbiBiZSBmb3VuZCBpbiB2NGwtZHZiIHJlcG9zaXRvcnkgdW5kZXIgdjRsMi1hcHBzL3V0aWwgZGlyZWN0b3J5LgorCitFeGFtcGxlIGZvciBzZXR0aW5nIHJkcyBwcyBuYW1lOgorIyB2NGwyLWN0bCAtZCAvZGV2L3JhZGlvMCAtLXNldC1jdHJsPXJkc19wc19uYW1lPSJEdW1teSIKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9zaTQ3NngudHh0IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9zaTQ3NngudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxNjYwNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3NpNDc2eC50eHQKQEAgLTAsMCArMSwxODcgQEAKK1NJNDc2eCBEcml2ZXIgUmVhZG1lCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlDb3B5cmlnaHQgKEMpIDIwMTMgQW5kcmV5IFNtaXJub3YgPGFuZHJldy5zbWlybm92QGdtYWlsLmNvbT4KKworVE9ETyBmb3IgdGhlIGRyaXZlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0gQWNjb3JkaW5nIHRvIHRoZSBTaUxhYnMnIGRhdGFzaGVldCBpdCBpcyBwb3NzaWJsZSB0byB1cGRhdGUgdGhlCisgIGZpcm13YXJlIG9mIHRoZSByYWRpbyBjaGlwIGluIHRoZSBydW4tdGltZSwgdGh1cyBicmluZ2luZyBpdCB0byB0aGUKKyAgbW9zdCByZWNlbnQgdmVyc2lvbi4gVW5mb3J0dW5hdGVseSBJIGNvdWxkbid0IGZpbmQgYW55IG1lbnRpb25pbmcgb2YKKyAgdGhlIHNhaWQgZmlybXdhcmUgdXBkYXRlIGZvciB0aGUgb2xkIGNoaXBzIHRoYXQgSSB0ZXN0ZWQgdGhlIGRyaXZlcgorICBhZ2FpbnN0LCBzbyBmb3IgY2hpcHMgbGlrZSB0aGF0IHRoZSBkcml2ZXIgb25seSBleHBvc2VzIHRoZSBvbGQKKyAgZnVuY3Rpb25hbGl0eS4KKworCitQYXJhbWV0ZXJzIGV4cG9zZWQgb3ZlciBkZWJ1Z2ZzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTSTQ3NnggYWxsb3cgdXNlciB0byBnZXQgbXVsdGlwbGUgY2hhcmFjdGVyaXN0aWNzIHRoYXQgY2FuIGJlIHZlcnkKK3VzZWZ1bCBmb3IgRW9MIHRlc3RpbmcvUkYgcGVyZm9ybWFuY2UgZXN0aW1hdGlvbiwgcGFyYW1ldGVycyB0aGF0IGhhdmUKK3ZlcnkgbGl0dGxlIHRvIGRvIHdpdGggVjRMMiBzdWJzeXN0ZW0uIFN1Y2ggcGFyYW1ldGVycyBhcmUgZXhwb3NlZCB2aWEKK2RlYnVnZnMgYW5kIGNhbiBiZSBhY2Nlc3NlZCB2aWEgcmVndWxhciBmaWxlIEkvTyBvcGVyYXRpb25zLgorCitUaGUgZHJpdmVycyBleHBvc2VzIGZvbGxvd2luZyBmaWxlczoKKworKiAvc3lzL2tlcm5lbC9kZWJ1Zy88ZGV2aWNlLW5hbWU+L2FjZgorICBUaGlzIGZpbGUgY29udGFpbnMgQUNGKEF1dG9tYXRpY2FsbHkgQ29udHJvbGxlZCBGZWF0dXJlcykgc3RhdHVzCisgIGluZm9ybWF0aW9uLiBUaGUgY29udGVudHMgb2YgdGhlIGZpbGUgaXMgYmluYXJ5IGRhdGEgb2YgdGhlCisgIGZvbGxvd2luZyBsYXlvdXQ6CisKKyAgT2Zmc2V0CXwgTmFtZQkJfCBEZXNjcmlwdGlvbgorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAweDAwCQl8IGJsZW5kX2ludAl8IEZsYWcsIHNldCB3aGVuIHN0ZXJlbyBzZXBhcmF0aW9uIGhhcworICAJCXwgIAkJfCBjcm9zc2VkIGJlbG93IHRoZSBibGVuZCB0aHJlc2hvbGQKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgwMQkJfCBoYmxlbmRfaW50CXwgRmxhZywgc2V0IHdoZW4gSGlCbGVuZCBjdXRvZmYKKyAgCQl8IAkJfCBmcmVxdWVuY3kgaXMgbG93ZXIgdGhhbiB0aHJlc2hvbGQKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgwMgkJfCBoaWN1dF9pbnQJfCBGbGFnLCBzZXQgd2hlbiBIaUN1dCBjdXRvZmYKKyAgCQl8IAkJfCBmcmVxdWVuY3kgaXMgbG93ZXIgdGhhbiB0aHJlc2hvbGQKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgwMwkJfCBjaGJ3X2ludAl8IEZsYWcsIHNldCB3aGVuIGNoYW5uZWwgZmlsdGVyCisgIAkJfCAJCXwgYmFuZHdpZHRoIGlzIGxlc3MgdGhhbiB0aHJlc2hvbGQKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgwNAkJfCBzb2Z0bXV0ZV9pbnQJfCBGbGFnIGluZGljYXRpbmcgdGhhdCBzb2Z0bXV0ZQorICAJCXwgCQl8IGF0dGVudWF0aW9uIGhhcyBpbmNyZWFzZWQgYWJvdmUKKwkJfAkJfCBzb2Z0bXV0ZSB0aHJlc2hvbGQKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgwNQkJfCBzbXV0ZQkJfCAwIC0gQXVkaW8gaXMgbm90IHNvZnQgbXV0ZWQKKyAgCQl8IAkJfCAxIC0gQXVkaW8gaXMgc29mdCBtdXRlZAorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAweDA2CQl8IHNtYXR0bgl8IFNvZnQgbXV0ZSBhdHRlbnVhdGlvbiBsZXZlbCBpbiBkQgorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAweDA3CQl8IGNoYncJCXwgQ2hhbm5lbCBmaWx0ZXIgYmFuZHdpZHRoIGluIGtIegorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAweDA4CQl8IGhpY3V0CQl8IEhpQ3V0IGN1dG9mZiBmcmVxdWVuY3kgaW4gdW5pdHMgb2YKKyAgCQl8IAkJfCAxMDBIegorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAweDA5CQl8IGhpYmxlbmQJfCBIaUJsZW5kIGN1dG9mZiBmcmVxdWVuY3kgaW4gdW5pdHMKKyAgCQl8IAkJfCBvZiAxMDAgSHoKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgxMAkJfCBwaWxvdAkJfCAwIC0gU3RlcmVvIHBpbG90IGlzIG5vdCBwcmVzZW50CisgIAkJfCAJCXwgMSAtIFN0ZXJlbyBwaWxvdCBpcyBwcmVzZW50CisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIDB4MTEJCXwgc3RibGVuZAl8IFN0ZXJlbyBibGVuZCBpbiAlCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworKiAvc3lzL2tlcm5lbC9kZWJ1Zy88ZGV2aWNlLW5hbWU+L3Jkc19ibGNrY250CisgIFRoaXMgZmlsZSBjb250YWlucyBzdGF0aXN0aWNzIGFib3V0IFJEUyByZWNlcHRpb25zLiBJdCdzIGJpbmFyeSBkYXRhCisgIGhhcyB0aGUgZm9sbG93aW5nIGxheW91dDoKKworICBPZmZzZXQJfCBOYW1lCQl8IERlc2NyaXB0aW9uCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIDB4MDAJCXwgZXhwZWN0ZWQJfCBOdW1iZXIgb2YgZXhwZWN0ZWQgUkRTIGJsb2NrcworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAweDAyCQl8IHJlY2VpdmVkCXwgTnVtYmVyIG9mIHJlY2VpdmVkIFJEUyBibG9ja3MKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgwNAkJfCB1bmNvcnJlY3RhYmxlCXwgTnVtYmVyIG9mIHVuY29ycmVjdGFibGUgUkRTIGJsb2NrcworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIC9zeXMva2VybmVsL2RlYnVnLzxkZXZpY2UtbmFtZT4vYWdjCisgIFRoaXMgZmlsZSBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBwYXJhbWV0ZXJzIHBlcnRhaW5pbmcgdG8KKyAgQUdDKEF1dG9tYXRpYyBHYWluIENvbnRyb2wpCisKKyAgVGhlIGxheW91dCBpczoKKyAgT2Zmc2V0CXwgTmFtZQkJfCBEZXNjcmlwdGlvbgorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAweDAwCQl8IG14aGkJCXwgMCAtIEZNIE1peGVyIFBEIGhpZ2ggdGhyZXNob2xkIGlzCisgIAkJfCAJCXwgbm90IHRyaXBwZWQKKwkJfAkJfCAxIC0gRk0gTWl4ZXIgUEQgaGlnaCB0aHJlc2hvbGQgaXMKKwkJfAkJfCB0cmlwcGVkCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIDB4MDEJCXwgbXhsbwkJfCBkaXR0byBmb3IgRk0gTWl4ZXIgUEQgbG93CisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIDB4MDIJCXwgbG5haGkJCXwgZGl0dG8gZm9yIEZNIExOQSBQRCBoaWdoCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIDB4MDMJCXwgbG5hbG8JCXwgZGl0dG8gZm9yIEZNIExOQSBQRCBsb3cKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgwNAkJfCBmbWFnYzEJfCBGTUFHQzEgYXR0ZW51YXRvciByZXNpc3RhbmNlCisgIAkJfCAJCXwgKHNlZSBkYXRhc2hlZXQgZm9yIG1vcmUgZGV0YWlsKQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAweDA1CQl8IGZtYWdjMgl8IGRpdHRvIGZvciBGTUFHQzIKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgwNgkJfCBwZ2FnYWluCXwgUEdBIGdhaW4gaW4gZEIKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgwNwkJfCBmbXdibGFuZwl8IEZNL1dCIExOQSBHYWluIGluIGRCCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogL3N5cy9rZXJuZWwvZGVidWcvPGRldmljZS1uYW1lPi9yc3EKKyAgVGhpcyBmaWxlIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHBhcmFtZXRlcnMgcGVydGFpbmluZyB0bworICBSU1EoUmVjZWl2ZWQgU2lnbmFsIFF1YWxpdHkpCisKKyAgVGhlIGxheW91dCBpczoKKyAgT2Zmc2V0CXwgTmFtZQkJfCBEZXNjcmlwdGlvbgorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAweDAwCQl8IG11bHRoaW50CXwgMCAtIG11bHRpcGF0aCB2YWx1ZSBoYXMgbm90IGNyb3NzZWQKKyAgCQl8IAkJfCB0aGUgTXVsdGlwYXRoIGhpZ2ggdGhyZXNob2xkCisJCXwJCXwgMSAtIG11bHRpcGF0aCB2YWx1ZSBoYXMgY3Jvc3NlZAorICAJCXwgCQl8IHRoZSBNdWx0aXBhdGggaGlnaCB0aHJlc2hvbGQKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgwMQkJfCBtdWx0bGludAl8IGRpdHRvIGZvciBNdWx0aXBhdGggbG93IHRocmVzaG9sZAorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAweDAyCQl8IHNucmhpbnQJfCAwIC0gcmVjZWl2ZWQgc2lnbmFsJ3MgU05SIGhhcyBub3QKKyAgCQl8IAkJfCBjcm9zc2VkIGhpZ2ggdGhyZXNob2xkCisJCXwJCXwgMSAtIHJlY2VpdmVkIHNpZ25hbCdzIFNOUiBoYXMKKyAgCQl8IAkJfCBjcm9zc2VkIGhpZ2ggdGhyZXNob2xkCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIDB4MDMJCXwgc25ybGludAl8IGRpdHRvIGZvciBsb3cgdGhyZXNob2xkCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIDB4MDQJCXwgcnNzaWhpbnQJfCBkaXR0byBmb3IgUlNTSSBoaWdoIHRocmVzaG9sZAorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAweDA1CQl8IHJzc2lsaW50CXwgZGl0dG8gZm9yIFJTU0kgbG93IHRocmVzaG9sZAorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAweDA2CQl8IGJsdGYJCXwgRmxhZyBpbmRpY2F0aW5nIGlmIHNlZWsgY29tbWFuZAorICAJCXwgCQl8IHJlYWNoZWQvd3JhcHBlZCBzZWVrIGJhbmQgbGltaXQKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgwNwkJfCBzbnJfcmVhZHkJfCBJbmRpY2F0ZXMgdGhhdCBTTlIgbWV0cmljcyBpcyByZWFkeQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAweDA4CQl8IHJzc2lyZWFkeQl8IGRpdHRvIGZvciBSU1NJIG1ldHJpY3MKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgwOQkJfCBpbmpzaWRlCXwgMCAtIExvdy1zaWRlIGluamVjdGlvbiBpcyBiZWluZyB1c2VkCisgIAkJfCAJCXwgMSAtIEhpZ2gtc2lkZSBpbmplY3Rpb24gaXMgdXNlZAorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAweDEwCQl8IGFmY3JsCQl8IEZsYWcgaW5kaWNhdGluZyBpZiBBRkMgcmFpbHMKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgxMQkJfCB2YWxpZAkJfCBGbGFnIGluZGljYXRpbmcgaWYgY2hhbm5lbCBpcyB2YWxpZAorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAweDEyCQl8IHJlYWRmcmVxCXwgQ3VycmVudCB0dW5lZCBmcmVxdWVuY3kKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgxNAkJfCBmcmVxb2ZmCXwgU2lnbmVkIGZyZXF1ZW5jeSBvZmZzZXQgaW4gdW5pdHMgb2YKKyAgCQl8IAkJfCAycHBtCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIDB4MTUJCXwgcnNzaQkJfCBTaWduZWQgdmFsdWUgb2YgUlNTSSBpbiBkQnVWCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIDB4MTYJCXwgc25yCQl8IFNpZ25lZCBSRiBTTlIgaW4gZEIKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgxNwkJfCBpc3NpCQl8IFNpZ25lZCBJbWFnZSBTdHJlbmd0aCBTaWduYWwKKyAgCQl8IAkJfCBpbmRpY2F0b3IKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgxOAkJfCBsYXNzaQkJfCBTaWduZWQgTG93IHNpZGUgYWRqYWNlbnQgQ2hhbm5lbAorICAJCXwgCQl8IFN0cmVuZ3RoIGluZGljYXRvcgorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAweDE5CQl8IGhhc3NpCQl8IGRpdHRvIGZwciBIaWdoIHNpZGUKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgyMAkJfCBtdWx0CQl8IE11bHRpcGF0aCBpbmRpY2F0b3IKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgyMQkJfCBkZXYJCXwgRnJlcXVlbmN5IGRldmlhdGlvbgorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAweDI0CQl8IGFzc2kJCXwgQWRqYWNlbnQgY2hhbm5lbCBTU0kKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgyNQkJfCB1c24JCXwgVWx0cmFzb25pYyBub2lzZSBpbmRpY2F0b3IKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgyNgkJfCBwaWxvdGRldgl8IFBpbG90IGRldmlhdGlvbiBpbiB1bml0cyBvZiAxMDAgSHoKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgMHgyNwkJfCByZHNkZXYJfCBkaXR0byBmb3IgUkRTCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIDB4MjgJCXwgYXNzaWRldgl8IGRpdHRvIGZvciBBU1NJCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIDB4MjkJCXwgc3Ryb25nZGV2CXwgRnJlcXVlbmN5IGRldmlhdGlvbgorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAweDMwCQl8IHJkc3BpCQl8IFJEUyBQSSBjb2RlCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogL3N5cy9rZXJuZWwvZGVidWcvPGRldmljZS1uYW1lPi9yc3FfcHJpbWFyeQorICBUaGlzIGZpbGUgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgcGFyYW1ldGVycyBwZXJ0YWluaW5nIHRvCisgIFJTUShSZWNlaXZlZCBTaWduYWwgUXVhbGl0eSkgZm9yIHByaW1hcnkgdHVuZXIgb25seS4gTGF5b3V0IGlzIGFzCisgIHRoZSBvbmUgYWJvdmUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3NvYy1jYW1lcmEudHh0IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9zb2MtY2FtZXJhLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGY0MWNmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9zb2MtY2FtZXJhLnR4dApAQCAtMCwwICsxLDE2NCBAQAorCQkJU29jLUNhbWVyYSBTdWJzeXN0ZW0KKwkJCT09PT09PT09PT09PT09PT09PT09CisKK1Rlcm1pbm9sb2d5CistLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIHRlcm1zIGFyZSB1c2VkIGluIHRoaXMgZG9jdW1lbnQ6CisgLSBjYW1lcmEgLyBjYW1lcmEgZGV2aWNlIC8gY2FtZXJhIHNlbnNvciAtIGEgdmlkZW8tY2FtZXJhIHNlbnNvciBjaGlwLCBjYXBhYmxlCisgICBvZiBjb25uZWN0aW5nIHRvIGEgdmFyaWV0eSBvZiBzeXN0ZW1zIGFuZCBpbnRlcmZhY2VzLCB0eXBpY2FsbHkgdXNlcyBpMmMgZm9yCisgICBjb250cm9sIGFuZCBjb25maWd1cmF0aW9uLCBhbmQgYSBwYXJhbGxlbCBvciBhIHNlcmlhbCBidXMgZm9yIGRhdGEuCisgLSBjYW1lcmEgaG9zdCAtIGFuIGludGVyZmFjZSwgdG8gd2hpY2ggYSBjYW1lcmEgaXMgY29ubmVjdGVkLiBUeXBpY2FsbHkgYQorICAgc3BlY2lhbGlzZWQgaW50ZXJmYWNlLCBwcmVzZW50IG9uIG1hbnkgU29DcywgZS5nLiBQWEEyN3ggYW5kIFBYQTN4eCwgU3VwZXJILAorICAgQVZSMzIsIGkuTVgyNywgaS5NWDMxLgorIC0gY2FtZXJhIGhvc3QgYnVzIC0gYSBjb25uZWN0aW9uIGJldHdlZW4gYSBjYW1lcmEgaG9zdCBhbmQgYSBjYW1lcmEuIENhbiBiZQorICAgcGFyYWxsZWwgb3Igc2VyaWFsLCBjb25zaXN0cyBvZiBkYXRhIGFuZCBjb250cm9sIGxpbmVzLCBlLmcuIGNsb2NrLCB2ZXJ0aWNhbAorICAgYW5kIGhvcml6b250YWwgc3luY2hyb25pemF0aW9uIHNpZ25hbHMuCisKK1B1cnBvc2Ugb2YgdGhlIHNvYy1jYW1lcmEgc3Vic3lzdGVtCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgc29jLWNhbWVyYSBzdWJzeXN0ZW0gaW5pdGlhbGx5IHByb3ZpZGVkIGEgdW5pZmllZCBBUEkgYmV0d2VlbiBjYW1lcmEgaG9zdAorZHJpdmVycyBhbmQgY2FtZXJhIHNlbnNvciBkcml2ZXJzLiBMYXRlciB0aGUgc29jLWNhbWVyYSBzZW5zb3IgQVBJIGhhcyBiZWVuCityZXBsYWNlZCB3aXRoIHRoZSBWNEwyIHN0YW5kYXJkIHN1YmRldiBBUEkuIFRoaXMgYWxzbyBtYWRlIGNhbWVyYSBkcml2ZXIgcmUtdXNlCit3aXRoIG5vbi1zb2MtY2FtZXJhIGhvc3RzIHBvc3NpYmxlLiBUaGUgY2FtZXJhIGhvc3QgQVBJIHRvIHRoZSBzb2MtY2FtZXJhIGNvcmUKK2hhcyBiZWVuIHByZXNlcnZlZC4KKworU29jLWNhbWVyYSBpbXBsZW1lbnRzIGEgVjRMMiBpbnRlcmZhY2UgdG8gdGhlIHVzZXIsIGN1cnJlbnRseSBvbmx5IHRoZSAibW1hcCIKK21ldGhvZCBpcyBzdXBwb3J0ZWQgYnkgaG9zdCBkcml2ZXJzLiBIb3dldmVyLCB0aGUgc29jLWNhbWVyYSBjb3JlIGFsc28gcHJvdmlkZXMKK3N1cHBvcnQgZm9yIHRoZSAicmVhZCIgbWV0aG9kLgorCitUaGUgc3Vic3lzdGVtIGhhcyBiZWVuIGRlc2lnbmVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgY2FtZXJhIGhvc3QgaW50ZXJmYWNlcyBhbmQKK211bHRpcGxlIGNhbWVyYXMgcGVyIGludGVyZmFjZSwgYWx0aG91Z2ggbW9zdCBhcHBsaWNhdGlvbnMgaGF2ZSBvbmx5IG9uZSBjYW1lcmEKK3NlbnNvci4KKworRXhpc3RpbmcgZHJpdmVycworLS0tLS0tLS0tLS0tLS0tLQorCitBcyBvZiAzLjcgdGhlcmUgYXJlIHNldmVuIGhvc3QgZHJpdmVycyBpbiB0aGUgbWFpbmxpbmU6IGF0bWVsLWlzaS5jLAorbXgxX2NhbWVyYS5jIChicm9rZW4sIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCksIG14Ml9jYW1lcmEuYywgbXgzX2NhbWVyYS5jLAorb21hcDFfY2FtZXJhLmMsIHB4YV9jYW1lcmEuYywgc2hfbW9iaWxlX2NldV9jYW1lcmEuYywgYW5kIG11bHRpcGxlIHNlbnNvcgorZHJpdmVycyB1bmRlciBkcml2ZXJzL21lZGlhL2kyYy9zb2NfY2FtZXJhLy4KKworQ2FtZXJhIGhvc3QgQVBJCistLS0tLS0tLS0tLS0tLS0KKworQSBob3N0IGNhbWVyYSBkcml2ZXIgaXMgcmVnaXN0ZXJlZCB1c2luZyB0aGUKKworc29jX2NhbWVyYV9ob3N0X3JlZ2lzdGVyKHN0cnVjdCBzb2NfY2FtZXJhX2hvc3QgKik7CisKK2Z1bmN0aW9uLiBUaGUgaG9zdCBvYmplY3QgY2FuIGJlIGluaXRpYWxpemVkIGFzIGZvbGxvd3M6CisKKwlzdHJ1Y3Qgc29jX2NhbWVyYV9ob3N0CSppY2k7CisJaWNpLT5kcnZfbmFtZQkJPSBEUlZfTkFNRTsKKwlpY2ktPm9wcwkJPSAmY2FtZXJhX2hvc3Rfb3BzOworCWljaS0+cHJpdgkJPSBwY2RldjsKKwlpY2ktPnY0bDJfZGV2LmRldgk9ICZwZGV2LT5kZXY7CisJaWNpLT5ucgkJCT0gcGRldi0+aWQ7CisKK0FsbCBjYW1lcmEgaG9zdCBtZXRob2RzIGFyZSBwYXNzZWQgaW4gYSBzdHJ1Y3Qgc29jX2NhbWVyYV9ob3N0X29wczoKKworc3RhdGljIHN0cnVjdCBzb2NfY2FtZXJhX2hvc3Rfb3BzIGNhbWVyYV9ob3N0X29wcyA9IHsKKwkub3duZXIJCT0gVEhJU19NT0RVTEUsCisJLmFkZAkJPSBjYW1lcmFfYWRkX2RldmljZSwKKwkucmVtb3ZlCQk9IGNhbWVyYV9yZW1vdmVfZGV2aWNlLAorCS5zZXRfZm10CT0gY2FtZXJhX3NldF9mbXRfY2FwLAorCS50cnlfZm10CT0gY2FtZXJhX3RyeV9mbXRfY2FwLAorCS5pbml0X3ZpZGVvYnVmMgk9IGNhbWVyYV9pbml0X3ZpZGVvYnVmMiwKKwkucG9sbAkJPSBjYW1lcmFfcG9sbCwKKwkucXVlcnljYXAJPSBjYW1lcmFfcXVlcnljYXAsCisJLnNldF9idXNfcGFyYW0JPSBjYW1lcmFfc2V0X2J1c19wYXJhbSwKKwkvKiBUaGUgcmVzdCBvZiBob3N0IG9wZXJhdGlvbnMgYXJlIG9wdGlvbmFsICovCit9OworCisuYWRkIGFuZCAucmVtb3ZlIG1ldGhvZHMgYXJlIGNhbGxlZCB3aGVuIGEgc2Vuc29yIGlzIGF0dGFjaGVkIHRvIG9yIGRldGFjaGVkCitmcm9tIHRoZSBob3N0LiAuc2V0X2J1c19wYXJhbSBpcyB1c2VkIHRvIGNvbmZpZ3VyZSBwaHlzaWNhbCBjb25uZWN0aW9uCitwYXJhbWV0ZXJzIGJldHdlZW4gdGhlIGhvc3QgYW5kIHRoZSBzZW5zb3IuIC5pbml0X3ZpZGVvYnVmMiBpcyBjYWxsZWQgYnkKK3NvYy1jYW1lcmEgY29yZSB3aGVuIGEgdmlkZW8tZGV2aWNlIGlzIG9wZW5lZCwgdGhlIGhvc3QgZHJpdmVyIHdvdWxkIHR5cGljYWxseQorY2FsbCB2YjJfcXVldWVfaW5pdCgpIGluIHRoaXMgbWV0aG9kLiBGdXJ0aGVyIHZpZGVvLWJ1ZmZlciBtYW5hZ2VtZW50IGlzCitpbXBsZW1lbnRlZCBjb21wbGV0ZWx5IGJ5IHRoZSBzcGVjaWZpYyBjYW1lcmEgaG9zdCBkcml2ZXIuIElmIHRoZSBob3N0IGRyaXZlcgorc3VwcG9ydHMgbm9uLXN0YW5kYXJkIHBpeGVsIGZvcm1hdCBjb252ZXJzaW9uLCBpdCBzaG91bGQgaW1wbGVtZW50IGEKKy5nZXRfZm9ybWF0cyBhbmQsIHBvc3NpYmx5LCBhIC5wdXRfZm9ybWF0cyBvcGVyYXRpb25zLiBTZWUgYmVsb3cgZm9yIG1vcmUKK2RldGFpbHMgYWJvdXQgZm9ybWF0IGNvbnZlcnNpb24uIFRoZSByZXN0IG9mIHRoZSBtZXRob2RzIGFyZSBjYWxsZWQgZnJvbQorcmVzcGVjdGl2ZSBWNEwyIG9wZXJhdGlvbnMuCisKK0NhbWVyYSBBUEkKKy0tLS0tLS0tLS0KKworU2Vuc29yIGRyaXZlcnMgY2FuIHVzZSBzdHJ1Y3Qgc29jX2NhbWVyYV9saW5rLCB0eXBpY2FsbHkgcHJvdmlkZWQgYnkgdGhlCitwbGF0Zm9ybSwgYW5kIHVzZWQgdG8gc3BlY2lmeSB0byB3aGljaCBjYW1lcmEgaG9zdCBidXMgdGhlIHNlbnNvciBpcyBjb25uZWN0ZWQsCithbmQgb3B0aW9uYWxseSBwcm92aWRlIHBsYXRmb3JtIC5wb3dlciBhbmQgLnJlc2V0IG1ldGhvZHMgZm9yIHRoZSBjYW1lcmEuIFRoaXMKK3N0cnVjdCBpcyBwcm92aWRlZCB0byB0aGUgY2FtZXJhIGRyaXZlciB2aWEgdGhlIEkyQyBjbGllbnQgZGV2aWNlIHBsYXRmb3JtIGRhdGEKK2FuZCBjYW4gYmUgb2J0YWluZWQsIHVzaW5nIHRoZSBzb2NfY2FtZXJhX2kyY190b19saW5rKCkgbWFjcm8uIENhcmUgc2hvdWxkIGJlCit0YWtlbiwgd2hlbiB1c2luZyBzb2NfY2FtZXJhX3ZkZXZfdG9fc3ViZGV2KCkgYW5kIHdoZW4gYWNjZXNzaW5nIHN0cnVjdAorc29jX2NhbWVyYV9kZXZpY2UsIHVzaW5nIHY0bDJfZ2V0X3N1YmRldl9ob3N0ZGF0YSgpOiBib3RoIG9ubHkgd29yaywgd2hlbgorcnVubmluZyBvbiBhbiBzb2MtY2FtZXJhIGhvc3QuIFRoZSBhY3R1YWwgY2FtZXJhIGRyaXZlciBvcGVyYXRpb24gaXMgaW1wbGVtZW50ZWQKK3VzaW5nIHRoZSBWNEwyIHN1YmRldiBBUEkuIEFkZGl0aW9uYWxseSBzb2MtY2FtZXJhIGNhbWVyYSBkcml2ZXJzIGNhbiB1c2UKK2F1eGlsaWFyeSBzb2MtY2FtZXJhIGhlbHBlciBmdW5jdGlvbnMgbGlrZSBzb2NfY2FtZXJhX3Bvd2VyX29uKCkgYW5kCitzb2NfY2FtZXJhX3Bvd2VyX29mZigpLCB3aGljaCBzd2l0Y2ggcmVndWxhdG9ycywgcHJvdmlkZWQgYnkgdGhlIHBsYXRmb3JtIGFuZCBjYWxsCitib2FyZC1zcGVjaWZpYyBwb3dlciBzd2l0Y2hpbmcgbWV0aG9kcy4gc29jX2NhbWVyYV9hcHBseV9ib2FyZF9mbGFncygpIHRha2VzCitjYW1lcmEgYnVzIGNvbmZpZ3VyYXRpb24gY2FwYWJpbGl0eSBmbGFncyBhbmQgYXBwbGllcyBhbnkgYm9hcmQgdHJhbnNmb3JtYXRpb25zLAorZS5nLiBzaWduYWwgcG9sYXJpdHkgaW52ZXJzaW9uLiBzb2NfbWJ1c19nZXRfZm10ZGVzYygpIGNhbiBiZSB1c2VkIHRvIG9idGFpbiBhCitwaXhlbCBmb3JtYXQgZGVzY3JpcHRvciwgY29ycmVzcG9uZGluZyB0byBhIGNlcnRhaW4gbWVkaWEtYnVzIHBpeGVsIGZvcm1hdCBjb2RlLgorc29jX2NhbWVyYV9saW1pdF9zaWRlKCkgY2FuIGJlIHVzZWQgdG8gcmVzdHJpY3QgYmVnaW5uaW5nIGFuZCBsZW5ndGggb2YgYSBmcmFtZQorc2lkZSwgYmFzZWQgb24gY2FtZXJhIGNhcGFiaWxpdGllcy4KKworVklESU9DX1NfQ1JPUCBhbmQgVklESU9DX1NfRk1UIGJlaGF2aW91cgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBYm92ZSB1c2VyIGlvY3RscyBtb2RpZnkgaW1hZ2UgZ2VvbWV0cnkgYXMgZm9sbG93czoKKworVklESU9DX1NfQ1JPUDogc2V0cyBsb2NhdGlvbiBhbmQgc2l6ZXMgb2YgdGhlIHNlbnNvciB3aW5kb3cuIFVuaXQgaXMgb25lIHNlbnNvcgorcGl4ZWwuIENoYW5naW5nIHNlbnNvciB3aW5kb3cgc2l6ZXMgcHJlc2VydmVzIGFueSBzY2FsaW5nIGZhY3RvcnMsIHRoZXJlZm9yZQordXNlciB3aW5kb3cgc2l6ZXMgY2hhbmdlIGFzIHdlbGwuCisKK1ZJRElPQ19TX0ZNVDogc2V0cyB1c2VyIHdpbmRvdy4gU2hvdWxkIHByZXNlcnZlIHByZXZpb3VzbHkgc2V0IHNlbnNvciB3aW5kb3cgYXMKK211Y2ggYXMgcG9zc2libGUgYnkgbW9kaWZ5aW5nIHNjYWxpbmcgZmFjdG9ycy4gSWYgdGhlIHNlbnNvciB3aW5kb3cgY2Fubm90IGJlCitwcmVzZXJ2ZWQgcHJlY2lzZWx5LCBpdCBtYXkgYmUgY2hhbmdlZCB0b28uCisKK0luIHNvYy1jYW1lcmEgdGhlcmUgYXJlIHR3byBsb2NhdGlvbnMsIHdoZXJlIHNjYWxpbmcgYW5kIGNyb3BwaW5nIGNhbiB0YWtlCitwbGFjZTogaW4gdGhlIGNhbWVyYSBkcml2ZXIgYW5kIGluIHRoZSBob3N0IGRyaXZlci4gVXNlciBpb2N0bHMgYXJlIGZpcnN0IHBhc3NlZAordG8gdGhlIGhvc3QgZHJpdmVyLCB3aGljaCB0aGVuIGdlbmVyYWxseSBwYXNzZXMgdGhlbSBkb3duIHRvIHRoZSBjYW1lcmEgZHJpdmVyLgorSXQgaXMgbW9yZSBlZmZpY2llbnQgdG8gcGVyZm9ybSBzY2FsaW5nIGFuZCBjcm9wcGluZyBpbiB0aGUgY2FtZXJhIGRyaXZlciB0bworc2F2ZSBjYW1lcmEgYnVzIGJhbmR3aWR0aCBhbmQgbWF4aW1pc2UgdGhlIGZyYW1lcmF0ZS4gSG93ZXZlciwgaWYgdGhlIGNhbWVyYQorZHJpdmVyIGZhaWxlZCB0byBzZXQgdGhlIHJlcXVpcmVkIHBhcmFtZXRlcnMgd2l0aCBzdWZmaWNpZW50IHByZWNpc2lvbiwgdGhlIGhvc3QKK2RyaXZlciBtYXkgZGVjaWRlIHRvIGFsc28gdXNlIGl0cyBvd24gc2NhbGluZyBhbmQgY3JvcHBpbmcgdG8gZnVsZmlsbCB0aGUgdXNlcidzCityZXF1ZXN0LgorCitDYW1lcmEgZHJpdmVycyBhcmUgaW50ZXJmYWNlZCB0byB0aGUgc29jLWNhbWVyYSBjb3JlIGFuZCB0byBob3N0IGRyaXZlcnMgb3ZlcgordGhlIHY0bDItc3ViZGV2IEFQSSwgd2hpY2ggaXMgY29tcGxldGVseSBmdW5jdGlvbmFsLCBpdCBkb2Vzbid0IHBhc3MgYW55IGRhdGEuCitUaGVyZWZvcmUgYWxsIGNhbWVyYSBkcml2ZXJzIHNoYWxsIHJlcGx5IHRvIC5nX2ZtdCgpIHJlcXVlc3RzIHdpdGggdGhlaXIgY3VycmVudAorb3V0cHV0IGdlb21ldHJ5LiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBjb3JyZWN0bHkgY29uZmlndXJlIHRoZSBjYW1lcmEgYnVzLgorLnNfZm10KCkgYW5kIC50cnlfZm10KCkgaGF2ZSB0byBiZSBpbXBsZW1lbnRlZCB0b28uIFNlbnNvciB3aW5kb3cgYW5kIHNjYWxpbmcKK2ZhY3RvcnMgaGF2ZSB0byBiZSBtYWludGFpbmVkIGJ5IGNhbWVyYSBkcml2ZXJzIGludGVybmFsbHkuIEFjY29yZGluZyB0byB0aGUKK1Y0TDIgQVBJIGFsbCBjYXB0dXJlIGRyaXZlcnMgbXVzdCBzdXBwb3J0IHRoZSBWSURJT0NfQ1JPUENBUCBpb2N0bCwgaGVuY2Ugd2UKK3JlbHkgb24gY2FtZXJhIGRyaXZlcnMgaW1wbGVtZW50aW5nIC5jcm9wY2FwKCkuIElmIHRoZSBjYW1lcmEgZHJpdmVyIGRvZXMgbm90CitzdXBwb3J0IGNyb3BwaW5nLCBpdCBtYXkgY2hvb3NlIHRvIG5vdCBpbXBsZW1lbnQgLnNfY3JvcCgpLCBidXQgdG8gZW5hYmxlCitjcm9wcGluZyBzdXBwb3J0IGJ5IHRoZSBjYW1lcmEgaG9zdCBkcml2ZXIgYXQgbGVhc3QgdGhlIC5nX2Nyb3AgbWV0aG9kIG11c3QgYmUKK2ltcGxlbWVudGVkLgorCitVc2VyIHdpbmRvdyBnZW9tZXRyeSBpcyBrZXB0IGluIC51c2VyX3dpZHRoIGFuZCAudXNlcl9oZWlnaHQgZmllbGRzIGluIHN0cnVjdAorc29jX2NhbWVyYV9kZXZpY2UgYW5kIHVzZWQgYnkgdGhlIHNvYy1jYW1lcmEgY29yZSBhbmQgaG9zdCBkcml2ZXJzLiBUaGUgY29yZQordXBkYXRlcyB0aGVzZSBmaWVsZHMgdXBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24gb2YgYSAuc19mbXQoKSBjYWxsLCBidXQgaWYgdGhlc2UKK2ZpZWxkcyBjaGFuZ2UgZWxzZXdoZXJlLCBlLmcuIGR1cmluZyAuc19jcm9wKCkgcHJvY2Vzc2luZywgdGhlIGhvc3QgZHJpdmVyIGlzCityZXNwb25zaWJsZSBmb3IgdXBkYXRpbmcgdGhlbS4KKworRm9ybWF0IGNvbnZlcnNpb24KKy0tLS0tLS0tLS0tLS0tLS0tCisKK1Y0TDIgZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIHBpeGVsIGZvcm1hdHMsIGFzIHRoZXkgYXJlIHN0b3JlZCBpbiBtZW1vcnksIGFuZCBhcwordGhleSBhcmUgdHJhbnNmZXJyZWQgb3ZlciBhIG1lZGlhIGJ1cy4gU29jLWNhbWVyYSBwcm92aWRlcyBzdXBwb3J0IHRvCitjb252ZW5pZW50bHkgbWFuYWdlIHRoZXNlIGZvcm1hdHMuIEEgdGFibGUgb2Ygc3RhbmRhcmQgdHJhbnNmb3JtYXRpb25zIGlzCittYWludGFpbmVkIGJ5IHNvYy1jYW1lcmEgY29yZSwgd2hpY2ggZGVzY3JpYmVzLCB3aGF0IEZPVVJDQyBwaXhlbCBmb3JtYXQgd2lsbAorYmUgb2J0YWluZWQsIGlmIGEgbWVkaWEtYnVzIHBpeGVsIGZvcm1hdCBpcyBzdG9yZWQgaW4gbWVtb3J5IGFjY29yZGluZyB0bworY2VydGFpbiBydWxlcy4gRS5nLiBpZiBNRURJQV9CVVNfRk1UX1lVWVY4XzJYOCBkYXRhIGlzIHNhbXBsZWQgd2l0aCA4IGJpdHMgcGVyCitzYW1wbGUgYW5kIHN0b3JlZCBpbiBtZW1vcnkgaW4gdGhlIGxpdHRsZS1lbmRpYW4gb3JkZXIgd2l0aCBubyBnYXBzIGJldHdlZW4KK2J5dGVzLCBkYXRhIGluIG1lbW9yeSB3aWxsIHJlcHJlc2VudCB0aGUgVjRMMl9QSVhfRk1UX1lVWVYgRk9VUkNDIGZvcm1hdC4gVGhlc2UKK3N0YW5kYXJkIHRyYW5zZm9ybWF0aW9ucyB3aWxsIGJlIHVzZWQgYnkgc29jLWNhbWVyYSBvciBieSBjYW1lcmEgaG9zdCBkcml2ZXJzIHRvCitjb25maWd1cmUgY2FtZXJhIGRyaXZlcnMgdG8gcHJvZHVjZSB0aGUgRk9VUkNDIGZvcm1hdCwgcmVxdWVzdGVkIGJ5IHRoZSB1c2VyLAordXNpbmcgdGhlIFZJRElPQ19TX0ZNVCBpb2N0bCgpLiBBcGFydCBmcm9tIHRob3NlIHN0YW5kYXJkIGZvcm1hdCBjb252ZXJzaW9ucywKK2hvc3QgZHJpdmVycyBjYW4gYWxzbyBwcm92aWRlIHRoZWlyIG93biBjb252ZXJzaW9uIHJ1bGVzIGJ5IGltcGxlbWVudGluZyBhCisuZ2V0X2Zvcm1hdHMgYW5kLCBpZiByZXF1aXJlZCwgYSAucHV0X2Zvcm1hdHMgbWV0aG9kcy4KKworLS0KK0F1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxnLmxpYWtob3ZldHNraUBnbXguZGU+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3V2Y3ZpZGVvLnR4dCBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvdXZjdmlkZW8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1Y2UxOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3V2Y3ZpZGVvLnR4dApAQCAtMCwwICsxLDIzOSBAQAorTGludXggVVNCIFZpZGVvIENsYXNzIChVVkMpIGRyaXZlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIGZpbGUgZG9jdW1lbnRzIHNvbWUgZHJpdmVyLXNwZWNpZmljIGFzcGVjdHMgb2YgdGhlIFVWQyBkcml2ZXIsIHN1Y2ggYXMKK2RyaXZlci1zcGVjaWZpYyBpb2N0bHMgYW5kIGltcGxlbWVudGF0aW9uIG5vdGVzLgorCitRdWVzdGlvbnMgYW5kIHJlbWFya3MgY2FuIGJlIHNlbnQgdG8gdGhlIExpbnV4IFVWQyBkZXZlbG9wbWVudCBtYWlsaW5nIGxpc3QgYXQKK2xpbnV4LXV2Yy1kZXZlbEBsaXN0cy5iZXJsaW9zLmRlLgorCisKK0V4dGVuc2lvbiBVbml0IChYVSkgc3VwcG9ydAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzEuIEludHJvZHVjdGlvbgorCitUaGUgVVZDIHNwZWNpZmljYXRpb24gYWxsb3dzIGZvciB2ZW5kb3Itc3BlY2lmaWMgZXh0ZW5zaW9ucyB0aHJvdWdoIGV4dGVuc2lvbgordW5pdHMgKFhVcykuIFRoZSBMaW51eCBVVkMgZHJpdmVyIHN1cHBvcnRzIGV4dGVuc2lvbiB1bml0IGNvbnRyb2xzIChYVSBjb250cm9scykKK3Rocm91Z2ggdHdvIHNlcGFyYXRlIG1lY2hhbmlzbXM6CisKKyAgLSB0aHJvdWdoIG1hcHBpbmdzIG9mIFhVIGNvbnRyb2xzIHRvIFY0TDIgY29udHJvbHMKKyAgLSB0aHJvdWdoIGEgZHJpdmVyLXNwZWNpZmljIGlvY3RsIGludGVyZmFjZQorCitUaGUgZmlyc3Qgb25lIGFsbG93cyBnZW5lcmljIFY0TDIgYXBwbGljYXRpb25zIHRvIHVzZSBYVSBjb250cm9scyBieSBtYXBwaW5nCitjZXJ0YWluIFhVIGNvbnRyb2xzIG9udG8gVjRMMiBjb250cm9scywgd2hpY2ggdGhlbiBzaG93IHVwIGR1cmluZyBvcmRpbmFyeQorY29udHJvbCBlbnVtZXJhdGlvbi4KKworVGhlIHNlY29uZCBtZWNoYW5pc20gcmVxdWlyZXMgdXZjdmlkZW8tc3BlY2lmaWMga25vd2xlZGdlIGZvciB0aGUgYXBwbGljYXRpb24gdG8KK2FjY2VzcyBYVSBjb250cm9scyBidXQgZXhwb3NlcyB0aGUgZW50aXJlIFVWQyBYVSBjb25jZXB0IHRvIHVzZXIgc3BhY2UgZm9yCittYXhpbXVtIGZsZXhpYmlsaXR5LgorCitCb3RoIG1lY2hhbmlzbXMgY29tcGxlbWVudCBlYWNoIG90aGVyIGFuZCBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGJlbG93LgorCisKKzIuIENvbnRyb2wgbWFwcGluZ3MKKworVGhlIFVWQyBkcml2ZXIgcHJvdmlkZXMgYW4gQVBJIGZvciB1c2VyIHNwYWNlIGFwcGxpY2F0aW9ucyB0byBkZWZpbmUgc28tY2FsbGVkCitjb250cm9sIG1hcHBpbmdzIGF0IHJ1bnRpbWUuIFRoZXNlIGFsbG93IGZvciBpbmRpdmlkdWFsIFhVIGNvbnRyb2xzIG9yIGJ5dGUKK3JhbmdlcyB0aGVyZW9mIHRvIGJlIG1hcHBlZCB0byBuZXcgVjRMMiBjb250cm9scy4gU3VjaCBjb250cm9scyBhcHBlYXIgYW5kCitmdW5jdGlvbiBleGFjdGx5IGxpa2Ugbm9ybWFsIFY0TDIgY29udHJvbHMgKGkuZS4gdGhlIHN0b2NrIGNvbnRyb2xzLCBzdWNoIGFzCiticmlnaHRuZXNzLCBjb250cmFzdCwgZXRjLikuIEhvd2V2ZXIsIHJlYWRpbmcgb3Igd3JpdGluZyBvZiBzdWNoIGEgVjRMMiBjb250cm9scwordHJpZ2dlcnMgYSByZWFkIG9yIHdyaXRlIG9mIHRoZSBhc3NvY2lhdGVkIFhVIGNvbnRyb2wuCisKK1RoZSBpb2N0bCB1c2VkIHRvIGNyZWF0ZSB0aGVzZSBjb250cm9sIG1hcHBpbmdzIGlzIGNhbGxlZCBVVkNJT0NfQ1RSTF9NQVAuCitQcmV2aW91cyBkcml2ZXIgdmVyc2lvbnMgKGJlZm9yZSAwLjIuMCkgcmVxdWlyZWQgYW5vdGhlciBpb2N0bCB0byBiZSB1c2VkCitiZWZvcmVoYW5kIChVVkNJT0NfQ1RSTF9BREQpIHRvIHBhc3MgWFUgY29udHJvbCBpbmZvcm1hdGlvbiB0byB0aGUgVVZDIGRyaXZlci4KK1RoaXMgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBhcyBuZXdlciB1dmN2aWRlbyB2ZXJzaW9ucyBxdWVyeSB0aGUgaW5mb3JtYXRpb24KK2RpcmVjdGx5IGZyb20gdGhlIGRldmljZS4KKworRm9yIGRldGFpbHMgb24gdGhlIFVWQ0lPQ19DVFJMX01BUCBpb2N0bCBwbGVhc2UgcmVmZXIgdG8gdGhlIHNlY3Rpb24gdGl0bGVkCisiSU9DVEwgcmVmZXJlbmNlIiBiZWxvdy4KKworCiszLiBEcml2ZXIgc3BlY2lmaWMgWFUgY29udHJvbCBpbnRlcmZhY2UKKworRm9yIGFwcGxpY2F0aW9ucyB0aGF0IG5lZWQgdG8gYWNjZXNzIFhVIGNvbnRyb2xzIGRpcmVjdGx5LCBlLmcuIGZvciB0ZXN0aW5nCitwdXJwb3NlcywgZmlybXdhcmUgdXBsb2FkLCBvciBhY2Nlc3NpbmcgYmluYXJ5IGNvbnRyb2xzLCBhIHNlY29uZCBtZWNoYW5pc20gdG8KK2FjY2VzcyBYVSBjb250cm9scyBpcyBwcm92aWRlZCBpbiB0aGUgZm9ybSBvZiBhIGRyaXZlci1zcGVjaWZpYyBpb2N0bCwgbmFtZWx5CitVVkNJT0NfQ1RSTF9RVUVSWS4KKworQSBjYWxsIHRvIHRoaXMgaW9jdGwgYWxsb3dzIGFwcGxpY2F0aW9ucyB0byBzZW5kIHF1ZXJpZXMgdG8gdGhlIFVWQyBkcml2ZXIgdGhhdAorZGlyZWN0bHkgbWFwIHRvIHRoZSBsb3ctbGV2ZWwgVVZDIGNvbnRyb2wgcmVxdWVzdHMuCisKK0luIG9yZGVyIHRvIG1ha2Ugc3VjaCBhIHJlcXVlc3QgdGhlIFVWQyB1bml0IElEIG9mIHRoZSBjb250cm9sJ3MgZXh0ZW5zaW9uIHVuaXQKK2FuZCB0aGUgY29udHJvbCBzZWxlY3RvciBuZWVkIHRvIGJlIGtub3duLiBUaGlzIGluZm9ybWF0aW9uIGVpdGhlciBuZWVkcyB0byBiZQoraGFyZGNvZGVkIGluIHRoZSBhcHBsaWNhdGlvbiBvciBxdWVyaWVkIHVzaW5nIG90aGVyIHdheXMgc3VjaCBhcyBieSBwYXJzaW5nIHRoZQorVVZDIGRlc2NyaXB0b3Igb3IsIGlmIGF2YWlsYWJsZSwgdXNpbmcgdGhlIG1lZGlhIGNvbnRyb2xsZXIgQVBJIHRvIGVudW1lcmF0ZSBhCitkZXZpY2UncyBlbnRpdGllcy4KKworVW5sZXNzIHRoZSBjb250cm9sIHNpemUgaXMgYWxyZWFkeSBrbm93biBpdCBpcyBuZWNlc3NhcnkgdG8gZmlyc3QgbWFrZSBhCitVVkNfR0VUX0xFTiByZXF1ZXN0cyBpbiBvcmRlciB0byBiZSBhYmxlIHRvIGFsbG9jYXRlIGEgc3VmZmljaWVudGx5IGxhcmdlIGJ1ZmZlcgorYW5kIHNldCB0aGUgYnVmZmVyIHNpemUgdG8gdGhlIGNvcnJlY3QgdmFsdWUuIFNpbWlsYXJseSwgdG8gZmluZCBvdXQgd2hldGhlcgorVVZDX0dFVF9DVVIgb3IgVVZDX1NFVF9DVVIgYXJlIHZhbGlkIHJlcXVlc3RzIGZvciBhIGdpdmVuIGNvbnRyb2wsIGEKK1VWQ19HRVRfSU5GTyByZXF1ZXN0IHNob3VsZCBiZSBtYWRlLiBUaGUgYml0cyAwIChHRVQgc3VwcG9ydGVkKSBhbmQgMSAoU0VUCitzdXBwb3J0ZWQpIG9mIHRoZSByZXN1bHRpbmcgYnl0ZSBpbmRpY2F0ZSB3aGljaCByZXF1ZXN0cyBhcmUgdmFsaWQuCisKK1dpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSBVVkNJT0NfQ1RSTF9RVUVSWSBpb2N0bCB0aGUgVVZDSU9DX0NUUkxfR0VUIGFuZAorVVZDSU9DX0NUUkxfU0VUIGlvY3RscyBoYXZlIGJlY29tZSBvYnNvbGV0ZSBzaW5jZSB0aGVpciBmdW5jdGlvbmFsaXR5IGlzIGEKK3N1YnNldCBvZiB0aGUgZm9ybWVyIGlvY3RsLiBGb3IgdGhlIHRpbWUgYmVpbmcgdGhleSBhcmUgc3RpbGwgc3VwcG9ydGVkIGJ1dAorYXBwbGljYXRpb24gZGV2ZWxvcGVycyBhcmUgZW5jb3VyYWdlZCB0byB1c2UgVVZDSU9DX0NUUkxfUVVFUlkgaW5zdGVhZC4KKworRm9yIGRldGFpbHMgb24gdGhlIFVWQ0lPQ19DVFJMX1FVRVJZIGlvY3RsIHBsZWFzZSByZWZlciB0byB0aGUgc2VjdGlvbiB0aXRsZWQKKyJJT0NUTCByZWZlcmVuY2UiIGJlbG93LgorCisKKzQuIFNlY3VyaXR5CisKK1RoZSBBUEkgZG9lc24ndCBjdXJyZW50bHkgcHJvdmlkZSBhIGZpbmUtZ3JhaW5lZCBhY2Nlc3MgY29udHJvbCBmYWNpbGl0eS4gVGhlCitVVkNJT0NfQ1RSTF9BREQgYW5kIFVWQ0lPQ19DVFJMX01BUCBpb2N0bHMgcmVxdWlyZSBzdXBlciB1c2VyIHBlcm1pc3Npb25zLgorCitTdWdnZXN0aW9ucyBvbiBob3cgdG8gaW1wcm92ZSB0aGlzIGFyZSB3ZWxjb21lLgorCisKKzUuIERlYnVnZ2luZworCitJbiBvcmRlciB0byBkZWJ1ZyBwcm9ibGVtcyByZWxhdGVkIHRvIFhVIGNvbnRyb2xzIG9yIGNvbnRyb2xzIGluIGdlbmVyYWwgaXQgaXMKK3JlY29tbWVuZGVkIHRvIGVuYWJsZSB0aGUgVVZDX1RSQUNFX0NPTlRST0wgYml0IGluIHRoZSBtb2R1bGUgcGFyYW1ldGVyICd0cmFjZScuCitUaGlzIGNhdXNlcyBleHRyYSBvdXRwdXQgdG8gYmUgd3JpdHRlbiBpbnRvIHRoZSBzeXN0ZW0gbG9nLgorCisKKzYuIElPQ1RMIHJlZmVyZW5jZQorCistLS0tIFVWQ0lPQ19DVFJMX01BUCAtIE1hcCBhIFVWQyBjb250cm9sIHRvIGEgVjRMMiBjb250cm9sIC0tLS0KKworQXJndW1lbnQ6IHN0cnVjdCB1dmNfeHVfY29udHJvbF9tYXBwaW5nCisKK0Rlc2NyaXB0aW9uOgorCVRoaXMgaW9jdGwgY3JlYXRlcyBhIG1hcHBpbmcgYmV0d2VlbiBhIFVWQyBjb250cm9sIG9yIHBhcnQgb2YgYSBVVkMKKwljb250cm9sIGFuZCBhIFY0TDIgY29udHJvbC4gT25jZSBtYXBwaW5ncyBhcmUgZGVmaW5lZCwgdXNlcnNwYWNlCisJYXBwbGljYXRpb25zIGNhbiBhY2Nlc3MgdmVuZG9yLWRlZmluZWQgVVZDIGNvbnRyb2wgdGhyb3VnaCB0aGUgVjRMMgorCWNvbnRyb2wgQVBJLgorCisJVG8gY3JlYXRlIGEgbWFwcGluZywgYXBwbGljYXRpb25zIGZpbGwgdGhlIHV2Y194dV9jb250cm9sX21hcHBpbmcKKwlzdHJ1Y3R1cmUgd2l0aCBpbmZvcm1hdGlvbiBhYm91dCBhbiBleGlzdGluZyBVVkMgY29udHJvbCBkZWZpbmVkIHdpdGgKKwlVVkNJT0NfQ1RSTF9BREQgYW5kIGEgbmV3IFY0TDIgY29udHJvbC4KKworCUEgVVZDIGNvbnRyb2wgY2FuIGJlIG1hcHBlZCB0byBzZXZlcmFsIFY0TDIgY29udHJvbHMuIEZvciBpbnN0YW5jZSwKKwlhIFVWQyBwYW4vdGlsdCBjb250cm9sIGNvdWxkIGJlIG1hcHBlZCB0byBzZXBhcmF0ZSBwYW4gYW5kIHRpbHQgVjRMMgorCWNvbnRyb2xzLiBUaGUgVVZDIGNvbnRyb2wgaXMgZGl2aWRlZCBpbnRvIG5vbiBvdmVybGFwcGluZyBmaWVsZHMgdXNpbmcKKwl0aGUgJ3NpemUnIGFuZCAnb2Zmc2V0JyBmaWVsZHMgYW5kIGFyZSB0aGVuIGluZGVwZW5kZW50bHkgbWFwcGVkIHRvCisJVjRMMiBjb250cm9sLgorCisJRm9yIHNpZ25lZCBpbnRlZ2VyIFY0TDIgY29udHJvbHMgdGhlIGRhdGFfdHlwZSBmaWVsZCBzaG91bGQgYmUgc2V0IHRvCisJVVZDX0NUUkxfREFUQV9UWVBFX1NJR05FRC4gT3RoZXIgdmFsdWVzIGFyZSBjdXJyZW50bHkgaWdub3JlZC4KKworUmV0dXJuIHZhbHVlOgorCU9uIHN1Y2Nlc3MgMCBpcyByZXR1cm5lZC4gT24gZXJyb3IgLTEgaXMgcmV0dXJuZWQgYW5kIGVycm5vIGlzIHNldAorCWFwcHJvcHJpYXRlbHkuCisKKwlFTk9NRU0KKwkJTm90IGVub3VnaCBtZW1vcnkgdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uLgorCUVQRVJNCisJCUluc3VmZmljaWVudCBwcml2aWxlZ2VzIChzdXBlciB1c2VyIHByaXZpbGVnZXMgYXJlIHJlcXVpcmVkKS4KKwlFSU5WQUwKKwkJTm8gc3VjaCBVVkMgY29udHJvbC4KKwlFT1ZFUkZMT1cKKwkJVGhlIHJlcXVlc3RlZCBvZmZzZXQgYW5kIHNpemUgd291bGQgb3ZlcmZsb3cgdGhlIFVWQyBjb250cm9sLgorCUVFWElTVAorCQlNYXBwaW5nIGFscmVhZHkgZXhpc3RzLgorCitEYXRhIHR5cGVzOgorCSogc3RydWN0IHV2Y194dV9jb250cm9sX21hcHBpbmcKKworCV9fdTMyCWlkCQlWNEwyIGNvbnRyb2wgaWRlbnRpZmllcgorCV9fdTgJbmFtZVszMl0JVjRMMiBjb250cm9sIG5hbWUKKwlfX3U4CWVudGl0eVsxNl0JVVZDIGV4dGVuc2lvbiB1bml0IEdVSUQKKwlfX3U4CXNlbGVjdG9yCVVWQyBjb250cm9sIHNlbGVjdG9yCisJX191OAlzaXplCQlWNEwyIGNvbnRyb2wgc2l6ZSAoaW4gYml0cykKKwlfX3U4CW9mZnNldAkJVjRMMiBjb250cm9sIG9mZnNldCAoaW4gYml0cykKKwllbnVtIHY0bDJfY3RybF90eXBlCisJCXY0bDJfdHlwZQlWNEwyIGNvbnRyb2wgdHlwZQorCWVudW0gdXZjX2NvbnRyb2xfZGF0YV90eXBlCisJCWRhdGFfdHlwZQlVVkMgY29udHJvbCBkYXRhIHR5cGUKKwlzdHJ1Y3QgdXZjX21lbnVfaW5mbworCQkqbWVudV9pbmZvCUFycmF5IG9mIG1lbnUgZW50cmllcyAoZm9yIG1lbnUgY29udHJvbHMgb25seSkKKwlfX3UzMgltZW51X2NvdW50CU51bWJlciBvZiBtZW51IGVudHJpZXMgKGZvciBtZW51IGNvbnRyb2xzIG9ubHkpCisKKwkqIHN0cnVjdCB1dmNfbWVudV9pbmZvCisKKwlfX3UzMgl2YWx1ZQkJTWVudSBlbnRyeSB2YWx1ZSB1c2VkIGJ5IHRoZSBkZXZpY2UKKwlfX3U4CW5hbWVbMzJdCU1lbnUgZW50cnkgbmFtZQorCisKKwkqIGVudW0gdXZjX2NvbnRyb2xfZGF0YV90eXBlCisKKwlVVkNfQ1RSTF9EQVRBX1RZUEVfUkFXCQlSYXcgY29udHJvbCAoYnl0ZSBhcnJheSkKKwlVVkNfQ1RSTF9EQVRBX1RZUEVfU0lHTkVECVNpZ25lZCBpbnRlZ2VyCisJVVZDX0NUUkxfREFUQV9UWVBFX1VOU0lHTkVECVVuc2lnbmVkIGludGVnZXIKKwlVVkNfQ1RSTF9EQVRBX1RZUEVfQk9PTEVBTglCb29sZWFuCisJVVZDX0NUUkxfREFUQV9UWVBFX0VOVU0JCUVudW1lcmF0aW9uCisJVVZDX0NUUkxfREFUQV9UWVBFX0JJVE1BU0sJQml0bWFzaworCisKKy0tLS0gVVZDSU9DX0NUUkxfUVVFUlkgLSBRdWVyeSBhIFVWQyBYVSBjb250cm9sIC0tLS0KKworQXJndW1lbnQ6IHN0cnVjdCB1dmNfeHVfY29udHJvbF9xdWVyeQorCitEZXNjcmlwdGlvbjoKKwlUaGlzIGlvY3RsIHF1ZXJpZXMgYSBVVkMgWFUgY29udHJvbCBpZGVudGlmaWVkIGJ5IGl0cyBleHRlbnNpb24gdW5pdCBJRAorCWFuZCBjb250cm9sIHNlbGVjdG9yLgorCisJVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGRpZmZlcmVudCBxdWVyaWVzIGF2YWlsYWJsZSB0aGF0IGNsb3NlbHkKKwljb3JyZXNwb25kIHRvIHRoZSBsb3ctbGV2ZWwgY29udHJvbCByZXF1ZXN0cyBkZXNjcmliZWQgaW4gdGhlIFVWQworCXNwZWNpZmljYXRpb24uIFRoZXNlIHJlcXVlc3RzIGFyZToKKworCVVWQ19HRVRfQ1VSCisJCU9idGFpbiB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgY29udHJvbC4KKwlVVkNfR0VUX01JTgorCQlPYnRhaW4gdGhlIG1pbmltdW0gdmFsdWUgb2YgdGhlIGNvbnRyb2wuCisJVVZDX0dFVF9NQVgKKwkJT2J0YWluIHRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb250cm9sLgorCVVWQ19HRVRfREVGCisJCU9idGFpbiB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgY29udHJvbC4KKwlVVkNfR0VUX1JFUworCQlRdWVyeSB0aGUgcmVzb2x1dGlvbiBvZiB0aGUgY29udHJvbCwgaS5lLiB0aGUgc3RlcCBzaXplIG9mIHRoZQorCQlhbGxvd2VkIGNvbnRyb2wgdmFsdWVzLgorCVVWQ19HRVRfTEVOCisJCVF1ZXJ5IHRoZSBzaXplIG9mIHRoZSBjb250cm9sIGluIGJ5dGVzLgorCVVWQ19HRVRfSU5GTworCQlRdWVyeSB0aGUgY29udHJvbCBpbmZvcm1hdGlvbiBiaXRtYXAsIHdoaWNoIGluZGljYXRlcyB3aGV0aGVyCisJCWdldC9zZXQgcmVxdWVzdHMgYXJlIHN1cHBvcnRlZC4KKwlVVkNfU0VUX0NVUgorCQlVcGRhdGUgdGhlIHZhbHVlIG9mIHRoZSBjb250cm9sLgorCisJQXBwbGljYXRpb25zIG11c3Qgc2V0IHRoZSAnc2l6ZScgZmllbGQgdG8gdGhlIGNvcnJlY3QgbGVuZ3RoIGZvciB0aGUKKwljb250cm9sLiBFeGNlcHRpb25zIGFyZSB0aGUgVVZDX0dFVF9MRU4gYW5kIFVWQ19HRVRfSU5GTyBxdWVyaWVzLCBmb3IKKwl3aGljaCB0aGUgc2l6ZSBtdXN0IGJlIHNldCB0byAyIGFuZCAxLCByZXNwZWN0aXZlbHkuIFRoZSAnZGF0YScgZmllbGQKKwltdXN0IHBvaW50IHRvIGEgdmFsaWQgd3JpdGFibGUgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCB0aGUgaW5kaWNhdGVkCisJbnVtYmVyIG9mIGRhdGEgYnl0ZXMuCisKKwlEYXRhIGlzIGNvcGllZCBkaXJlY3RseSBmcm9tIHRoZSBkZXZpY2Ugd2l0aG91dCBhbnkgZHJpdmVyLXNpZGUKKwlwcm9jZXNzaW5nLiBBcHBsaWNhdGlvbnMgYXJlIHJlc3BvbnNpYmxlIGZvciBkYXRhIGJ1ZmZlciBmb3JtYXR0aW5nLAorCWluY2x1ZGluZyBsaXR0bGUtZW5kaWFuL2JpZy1lbmRpYW4gY29udmVyc2lvbi4gVGhpcyBpcyBwYXJ0aWN1bGFybHkKKwlpbXBvcnRhbnQgZm9yIHRoZSByZXN1bHQgb2YgdGhlIFVWQ19HRVRfTEVOIHJlcXVlc3RzLCB3aGljaCBpcyBhbHdheXMKKwlyZXR1cm5lZCBhcyBhIGxpdHRsZS1lbmRpYW4gMTYtYml0IGludGVnZXIgYnkgdGhlIGRldmljZS4KKworUmV0dXJuIHZhbHVlOgorCU9uIHN1Y2Nlc3MgMCBpcyByZXR1cm5lZC4gT24gZXJyb3IgLTEgaXMgcmV0dXJuZWQgYW5kIGVycm5vIGlzIHNldAorCWFwcHJvcHJpYXRlbHkuCisKKwlFTk9FTlQKKwkJVGhlIGRldmljZSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBnaXZlbiBjb250cm9sIG9yIHRoZSBzcGVjaWZpZWQKKwkJZXh0ZW5zaW9uIHVuaXQgY291bGQgbm90IGJlIGZvdW5kLgorCUVOT0JVRlMKKwkJVGhlIHNwZWNpZmllZCBidWZmZXIgc2l6ZSBpcyBpbmNvcnJlY3QgKHRvbyBiaWcgb3IgdG9vIHNtYWxsKS4KKwlFSU5WQUwKKwkJQW4gaW52YWxpZCByZXF1ZXN0IGNvZGUgd2FzIHBhc3NlZC4KKwlFQkFEUlFDCisJCVRoZSBnaXZlbiByZXF1ZXN0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGdpdmVuIGNvbnRyb2wuCisJRUZBVUxUCisJCVRoZSBkYXRhIHBvaW50ZXIgcmVmZXJlbmNlcyBhbiBpbmFjY2Vzc2libGUgbWVtb3J5IGFyZWEuCisKK0RhdGEgdHlwZXM6CisJKiBzdHJ1Y3QgdXZjX3h1X2NvbnRyb2xfcXVlcnkKKworCV9fdTgJdW5pdAkJRXh0ZW5zaW9uIHVuaXQgSUQKKwlfX3U4CXNlbGVjdG9yCUNvbnRyb2wgc2VsZWN0b3IKKwlfX3U4CXF1ZXJ5CQlSZXF1ZXN0IGNvZGUgdG8gc2VuZCB0byB0aGUgZGV2aWNlCisJX191MTYJc2l6ZQkJQ29udHJvbCBkYXRhIHNpemUgKGluIGJ5dGVzKQorCV9fdTgJKmRhdGEJCUNvbnRyb2wgdmFsdWUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvdjRsMi1jb250cm9scy50eHQgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3Y0bDItY29udHJvbHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1MTdkYjYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3Y0bDItY29udHJvbHMudHh0CkBAIC0wLDAgKzEsNzUyIEBACitJbnRyb2R1Y3Rpb24KKz09PT09PT09PT09PQorCitUaGUgVjRMMiBjb250cm9sIEFQSSBzZWVtcyBzaW1wbGUgZW5vdWdoLCBidXQgcXVpY2tseSBiZWNvbWVzIHZlcnkgaGFyZCB0bworaW1wbGVtZW50IGNvcnJlY3RseSBpbiBkcml2ZXJzLiBCdXQgbXVjaCBvZiB0aGUgY29kZSBuZWVkZWQgdG8gaGFuZGxlIGNvbnRyb2xzCitpcyBhY3R1YWxseSBub3QgZHJpdmVyIHNwZWNpZmljIGFuZCBjYW4gYmUgbW92ZWQgdG8gdGhlIFY0TCBjb3JlIGZyYW1ld29yay4KKworQWZ0ZXIgYWxsLCB0aGUgb25seSBwYXJ0IHRoYXQgYSBkcml2ZXIgZGV2ZWxvcGVyIGlzIGludGVyZXN0ZWQgaW4gaXM6CisKKzEpIEhvdyBkbyBJIGFkZCBhIGNvbnRyb2w/CisyKSBIb3cgZG8gSSBzZXQgdGhlIGNvbnRyb2wncyB2YWx1ZT8gKGkuZS4gc19jdHJsKQorCitBbmQgb2NjYXNpb25hbGx5OgorCiszKSBIb3cgZG8gSSBnZXQgdGhlIGNvbnRyb2wncyB2YWx1ZT8gKGkuZS4gZ192b2xhdGlsZV9jdHJsKQorNCkgSG93IGRvIEkgdmFsaWRhdGUgdGhlIHVzZXIncyBwcm9wb3NlZCBjb250cm9sIHZhbHVlPyAoaS5lLiB0cnlfY3RybCkKKworQWxsIHRoZSByZXN0IGlzIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBkb25lIGNlbnRyYWxseS4KKworVGhlIGNvbnRyb2wgZnJhbWV3b3JrIHdhcyBjcmVhdGVkIGluIG9yZGVyIHRvIGltcGxlbWVudCBhbGwgdGhlIHJ1bGVzIG9mIHRoZQorVjRMMiBzcGVjaWZpY2F0aW9uIHdpdGggcmVzcGVjdCB0byBjb250cm9scyBpbiBhIGNlbnRyYWwgcGxhY2UuIEFuZCB0byBtYWtlCitsaWZlIGFzIGVhc3kgYXMgcG9zc2libGUgZm9yIHRoZSBkcml2ZXIgZGV2ZWxvcGVyLgorCitOb3RlIHRoYXQgdGhlIGNvbnRyb2wgZnJhbWV3b3JrIHJlbGllcyBvbiB0aGUgcHJlc2VuY2Ugb2YgYSBzdHJ1Y3QgdjRsMl9kZXZpY2UKK2ZvciBWNEwyIGRyaXZlcnMgYW5kIHN0cnVjdCB2NGwyX3N1YmRldiBmb3Igc3ViLWRldmljZSBkcml2ZXJzLgorCisKK09iamVjdHMgaW4gdGhlIGZyYW1ld29yaworPT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZXJlIGFyZSB0d28gbWFpbiBvYmplY3RzOgorCitUaGUgdjRsMl9jdHJsIG9iamVjdCBkZXNjcmliZXMgdGhlIGNvbnRyb2wgcHJvcGVydGllcyBhbmQga2VlcHMgdHJhY2sgb2YgdGhlCitjb250cm9sJ3MgdmFsdWUgKGJvdGggdGhlIGN1cnJlbnQgdmFsdWUgYW5kIHRoZSBwcm9wb3NlZCBuZXcgdmFsdWUpLgorCit2NGwyX2N0cmxfaGFuZGxlciBpcyB0aGUgb2JqZWN0IHRoYXQga2VlcHMgdHJhY2sgb2YgY29udHJvbHMuIEl0IG1haW50YWlucyBhCitsaXN0IG9mIHY0bDJfY3RybCBvYmplY3RzIHRoYXQgaXQgb3ducyBhbmQgYW5vdGhlciBsaXN0IG9mIHJlZmVyZW5jZXMgdG8KK2NvbnRyb2xzLCBwb3NzaWJseSB0byBjb250cm9scyBvd25lZCBieSBvdGhlciBoYW5kbGVycy4KKworCitCYXNpYyB1c2FnZSBmb3IgVjRMMiBhbmQgc3ViLWRldmljZSBkcml2ZXJzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzEpIFByZXBhcmUgdGhlIGRyaXZlcjoKKworMS4xKSBBZGQgdGhlIGhhbmRsZXIgdG8geW91ciBkcml2ZXIncyB0b3AtbGV2ZWwgc3RydWN0OgorCisJc3RydWN0IGZvb19kZXYgeworCQkuLi4KKwkJc3RydWN0IHY0bDJfY3RybF9oYW5kbGVyIGN0cmxfaGFuZGxlcjsKKwkJLi4uCisJfTsKKworCXN0cnVjdCBmb29fZGV2ICpmb287CisKKzEuMikgSW5pdGlhbGl6ZSB0aGUgaGFuZGxlcjoKKworCXY0bDJfY3RybF9oYW5kbGVyX2luaXQoJmZvby0+Y3RybF9oYW5kbGVyLCBucl9vZl9jb250cm9scyk7CisKKyAgVGhlIHNlY29uZCBhcmd1bWVudCBpcyBhIGhpbnQgdGVsbGluZyB0aGUgZnVuY3Rpb24gaG93IG1hbnkgY29udHJvbHMgdGhpcworICBoYW5kbGVyIGlzIGV4cGVjdGVkIHRvIGhhbmRsZS4gSXQgd2lsbCBhbGxvY2F0ZSBhIGhhc2h0YWJsZSBiYXNlZCBvbiB0aGlzCisgIGluZm9ybWF0aW9uLiBJdCBpcyBhIGhpbnQgb25seS4KKworMS4zKSBIb29rIHRoZSBjb250cm9sIGhhbmRsZXIgaW50byB0aGUgZHJpdmVyOgorCisxLjMuMSkgRm9yIFY0TDIgZHJpdmVycyBkbyB0aGlzOgorCisJc3RydWN0IGZvb19kZXYgeworCQkuLi4KKwkJc3RydWN0IHY0bDJfZGV2aWNlIHY0bDJfZGV2OworCQkuLi4KKwkJc3RydWN0IHY0bDJfY3RybF9oYW5kbGVyIGN0cmxfaGFuZGxlcjsKKwkJLi4uCisJfTsKKworCWZvby0+djRsMl9kZXYuY3RybF9oYW5kbGVyID0gJmZvby0+Y3RybF9oYW5kbGVyOworCisgIFdoZXJlIGZvby0+djRsMl9kZXYgaXMgb2YgdHlwZSBzdHJ1Y3QgdjRsMl9kZXZpY2UuCisKKyAgRmluYWxseSwgcmVtb3ZlIGFsbCBjb250cm9sIGZ1bmN0aW9ucyBmcm9tIHlvdXIgdjRsMl9pb2N0bF9vcHMgKGlmIGFueSk6CisgIHZpZGlvY19xdWVyeWN0cmwsIHZpZGlvY19xdWVyeV9leHRfY3RybCwgdmlkaW9jX3F1ZXJ5bWVudSwgdmlkaW9jX2dfY3RybCwKKyAgdmlkaW9jX3NfY3RybCwgdmlkaW9jX2dfZXh0X2N0cmxzLCB2aWRpb2NfdHJ5X2V4dF9jdHJscyBhbmQgdmlkaW9jX3NfZXh0X2N0cmxzLgorICBUaG9zZSBhcmUgbm93IG5vIGxvbmdlciBuZWVkZWQuCisKKzEuMy4yKSBGb3Igc3ViLWRldmljZSBkcml2ZXJzIGRvIHRoaXM6CisKKwlzdHJ1Y3QgZm9vX2RldiB7CisJCS4uLgorCQlzdHJ1Y3QgdjRsMl9zdWJkZXYgc2Q7CisJCS4uLgorCQlzdHJ1Y3QgdjRsMl9jdHJsX2hhbmRsZXIgY3RybF9oYW5kbGVyOworCQkuLi4KKwl9OworCisJZm9vLT5zZC5jdHJsX2hhbmRsZXIgPSAmZm9vLT5jdHJsX2hhbmRsZXI7CisKKyAgV2hlcmUgZm9vLT5zZCBpcyBvZiB0eXBlIHN0cnVjdCB2NGwyX3N1YmRldi4KKworICBBbmQgc2V0IGFsbCBjb3JlIGNvbnRyb2wgb3BzIGluIHlvdXIgc3RydWN0IHY0bDJfc3ViZGV2X2NvcmVfb3BzIHRvIHRoZXNlCisgIGhlbHBlcnM6CisKKwkucXVlcnljdHJsID0gdjRsMl9zdWJkZXZfcXVlcnljdHJsLAorCS5xdWVyeW1lbnUgPSB2NGwyX3N1YmRldl9xdWVyeW1lbnUsCisJLmdfY3RybCA9IHY0bDJfc3ViZGV2X2dfY3RybCwKKwkuc19jdHJsID0gdjRsMl9zdWJkZXZfc19jdHJsLAorCS5nX2V4dF9jdHJscyA9IHY0bDJfc3ViZGV2X2dfZXh0X2N0cmxzLAorCS50cnlfZXh0X2N0cmxzID0gdjRsMl9zdWJkZXZfdHJ5X2V4dF9jdHJscywKKwkuc19leHRfY3RybHMgPSB2NGwyX3N1YmRldl9zX2V4dF9jdHJscywKKworICBOb3RlOiB0aGlzIGlzIGEgdGVtcG9yYXJ5IHNvbHV0aW9uIG9ubHkuIE9uY2UgYWxsIFY0TDIgZHJpdmVycyB0aGF0IGRlcGVuZAorICBvbiBzdWJkZXYgZHJpdmVycyBhcmUgY29udmVydGVkIHRvIHRoZSBjb250cm9sIGZyYW1ld29yayB0aGVzZSBoZWxwZXJzIHdpbGwKKyAgbm8gbG9uZ2VyIGJlIG5lZWRlZC4KKworMS40KSBDbGVhbiB1cCB0aGUgaGFuZGxlciBhdCB0aGUgZW5kOgorCisJdjRsMl9jdHJsX2hhbmRsZXJfZnJlZSgmZm9vLT5jdHJsX2hhbmRsZXIpOworCisKKzIpIEFkZCBjb250cm9sczoKKworWW91IGFkZCBub24tbWVudSBjb250cm9scyBieSBjYWxsaW5nIHY0bDJfY3RybF9uZXdfc3RkOgorCisJc3RydWN0IHY0bDJfY3RybCAqdjRsMl9jdHJsX25ld19zdGQoc3RydWN0IHY0bDJfY3RybF9oYW5kbGVyICpoZGwsCisJCQljb25zdCBzdHJ1Y3QgdjRsMl9jdHJsX29wcyAqb3BzLAorCQkJdTMyIGlkLCBzMzIgbWluLCBzMzIgbWF4LCB1MzIgc3RlcCwgczMyIGRlZik7CisKK01lbnUgYW5kIGludGVnZXIgbWVudSBjb250cm9scyBhcmUgYWRkZWQgYnkgY2FsbGluZyB2NGwyX2N0cmxfbmV3X3N0ZF9tZW51OgorCisJc3RydWN0IHY0bDJfY3RybCAqdjRsMl9jdHJsX25ld19zdGRfbWVudShzdHJ1Y3QgdjRsMl9jdHJsX2hhbmRsZXIgKmhkbCwKKwkJCWNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfb3BzICpvcHMsCisJCQl1MzIgaWQsIHMzMiBtYXgsIHMzMiBza2lwX21hc2ssIHMzMiBkZWYpOworCitNZW51IGNvbnRyb2xzIHdpdGggYSBkcml2ZXIgc3BlY2lmaWMgbWVudSBhcmUgYWRkZWQgYnkgY2FsbGluZwordjRsMl9jdHJsX25ld19zdGRfbWVudV9pdGVtczoKKworICAgICAgIHN0cnVjdCB2NGwyX2N0cmwgKnY0bDJfY3RybF9uZXdfc3RkX21lbnVfaXRlbXMoCisgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX2N0cmxfaGFuZGxlciAqaGRsLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdjRsMl9jdHJsX29wcyAqb3BzLCB1MzIgaWQsIHMzMiBtYXgsCisgICAgICAgICAgICAgICAgICAgICAgIHMzMiBza2lwX21hc2ssIHMzMiBkZWYsIGNvbnN0IGNoYXIgKiBjb25zdCAqcW1lbnUpOworCitJbnRlZ2VyIG1lbnUgY29udHJvbHMgd2l0aCBhIGRyaXZlciBzcGVjaWZpYyBtZW51IGNhbiBiZSBhZGRlZCBieSBjYWxsaW5nCit2NGwyX2N0cmxfbmV3X2ludF9tZW51OgorCisJc3RydWN0IHY0bDJfY3RybCAqdjRsMl9jdHJsX25ld19pbnRfbWVudShzdHJ1Y3QgdjRsMl9jdHJsX2hhbmRsZXIgKmhkbCwKKwkJCWNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfb3BzICpvcHMsCisJCQl1MzIgaWQsIHMzMiBtYXgsIHMzMiBkZWYsIGNvbnN0IHM2NCAqcW1lbnVfaW50KTsKKworVGhlc2UgZnVuY3Rpb25zIGFyZSB0eXBpY2FsbHkgY2FsbGVkIHJpZ2h0IGFmdGVyIHRoZSB2NGwyX2N0cmxfaGFuZGxlcl9pbml0OgorCisJc3RhdGljIGNvbnN0IHM2NCBleHBfYmlhc19xbWVudVtdID0geworCSAgICAgICAtMiwgLTEsIDAsIDEsIDIKKwl9OworCXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdGVzdF9wYXR0ZXJuW10gPSB7CisJCSJEaXNhYmxlZCIsCisJCSJWZXJ0aWNhbCBCYXJzIiwKKwkJIlNvbGlkIEJsYWNrIiwKKwkJIlNvbGlkIFdoaXRlIiwKKwl9OworCisJdjRsMl9jdHJsX2hhbmRsZXJfaW5pdCgmZm9vLT5jdHJsX2hhbmRsZXIsIG5yX29mX2NvbnRyb2xzKTsKKwl2NGwyX2N0cmxfbmV3X3N0ZCgmZm9vLT5jdHJsX2hhbmRsZXIsICZmb29fY3RybF9vcHMsCisJCQlWNEwyX0NJRF9CUklHSFRORVNTLCAwLCAyNTUsIDEsIDEyOCk7CisJdjRsMl9jdHJsX25ld19zdGQoJmZvby0+Y3RybF9oYW5kbGVyLCAmZm9vX2N0cmxfb3BzLAorCQkJVjRMMl9DSURfQ09OVFJBU1QsIDAsIDI1NSwgMSwgMTI4KTsKKwl2NGwyX2N0cmxfbmV3X3N0ZF9tZW51KCZmb28tPmN0cmxfaGFuZGxlciwgJmZvb19jdHJsX29wcywKKwkJCVY0TDJfQ0lEX1BPV0VSX0xJTkVfRlJFUVVFTkNZLAorCQkJVjRMMl9DSURfUE9XRVJfTElORV9GUkVRVUVOQ1lfNjBIWiwgMCwKKwkJCVY0TDJfQ0lEX1BPV0VSX0xJTkVfRlJFUVVFTkNZX0RJU0FCTEVEKTsKKwl2NGwyX2N0cmxfbmV3X2ludF9tZW51KCZmb28tPmN0cmxfaGFuZGxlciwgJmZvb19jdHJsX29wcywKKwkJCVY0TDJfQ0lEX0VYUE9TVVJFX0JJQVMsCisJCQlBUlJBWV9TSVpFKGV4cF9iaWFzX3FtZW51KSAtIDEsCisJCQlBUlJBWV9TSVpFKGV4cF9iaWFzX3FtZW51KSAvIDIgLSAxLAorCQkJZXhwX2JpYXNfcW1lbnUpOworCXY0bDJfY3RybF9uZXdfc3RkX21lbnVfaXRlbXMoJmZvby0+Y3RybF9oYW5kbGVyLCAmZm9vX2N0cmxfb3BzLAorCQkJVjRMMl9DSURfVEVTVF9QQVRURVJOLCBBUlJBWV9TSVpFKHRlc3RfcGF0dGVybikgLSAxLCAwLAorCQkJMCwgdGVzdF9wYXR0ZXJuKTsKKwkuLi4KKwlpZiAoZm9vLT5jdHJsX2hhbmRsZXIuZXJyb3IpIHsKKwkJaW50IGVyciA9IGZvby0+Y3RybF9oYW5kbGVyLmVycm9yOworCisJCXY0bDJfY3RybF9oYW5kbGVyX2ZyZWUoJmZvby0+Y3RybF9oYW5kbGVyKTsKKwkJcmV0dXJuIGVycjsKKwl9CisKK1RoZSB2NGwyX2N0cmxfbmV3X3N0ZCBmdW5jdGlvbiByZXR1cm5zIHRoZSB2NGwyX2N0cmwgcG9pbnRlciB0byB0aGUgbmV3Citjb250cm9sLCBidXQgaWYgeW91IGRvIG5vdCBuZWVkIHRvIGFjY2VzcyB0aGUgcG9pbnRlciBvdXRzaWRlIHRoZSBjb250cm9sIG9wcywKK3RoZW4gdGhlcmUgaXMgbm8gbmVlZCB0byBzdG9yZSBpdC4KKworVGhlIHY0bDJfY3RybF9uZXdfc3RkIGZ1bmN0aW9uIHdpbGwgZmlsbCBpbiBtb3N0IGZpZWxkcyBiYXNlZCBvbiB0aGUgY29udHJvbAorSUQgZXhjZXB0IGZvciB0aGUgbWluLCBtYXgsIHN0ZXAgYW5kIGRlZmF1bHQgdmFsdWVzLiBUaGVzZSBhcmUgcGFzc2VkIGluIHRoZQorbGFzdCBmb3VyIGFyZ3VtZW50cy4gVGhlc2UgdmFsdWVzIGFyZSBkcml2ZXIgc3BlY2lmaWMgd2hpbGUgY29udHJvbCBhdHRyaWJ1dGVzCitsaWtlIHR5cGUsIG5hbWUsIGZsYWdzIGFyZSBhbGwgZ2xvYmFsLiBUaGUgY29udHJvbCdzIGN1cnJlbnQgdmFsdWUgd2lsbCBiZSBzZXQKK3RvIHRoZSBkZWZhdWx0IHZhbHVlLgorCitUaGUgdjRsMl9jdHJsX25ld19zdGRfbWVudSBmdW5jdGlvbiBpcyB2ZXJ5IHNpbWlsYXIgYnV0IGl0IGlzIHVzZWQgZm9yIG1lbnUKK2NvbnRyb2xzLiBUaGVyZSBpcyBubyBtaW4gYXJndW1lbnQgc2luY2UgdGhhdCBpcyBhbHdheXMgMCBmb3IgbWVudSBjb250cm9scywKK2FuZCBpbnN0ZWFkIG9mIGEgc3RlcCB0aGVyZSBpcyBhIHNraXBfbWFzayBhcmd1bWVudDogaWYgYml0IFggaXMgMSwgdGhlbiBtZW51CitpdGVtIFggaXMgc2tpcHBlZC4KKworVGhlIHY0bDJfY3RybF9uZXdfaW50X21lbnUgZnVuY3Rpb24gY3JlYXRlcyBhIG5ldyBzdGFuZGFyZCBpbnRlZ2VyIG1lbnUKK2NvbnRyb2wgd2l0aCBkcml2ZXItc3BlY2lmaWMgaXRlbXMgaW4gdGhlIG1lbnUuIEl0IGRpZmZlcnMgZnJvbQordjRsMl9jdHJsX25ld19zdGRfbWVudSBpbiB0aGF0IGl0IGRvZXNuJ3QgaGF2ZSB0aGUgbWFzayBhcmd1bWVudCBhbmQgdGFrZXMKK2FzIHRoZSBsYXN0IGFyZ3VtZW50IGFuIGFycmF5IG9mIHNpZ25lZCA2NC1iaXQgaW50ZWdlcnMgdGhhdCBmb3JtIGFuIGV4YWN0CittZW51IGl0ZW0gbGlzdC4KKworVGhlIHY0bDJfY3RybF9uZXdfc3RkX21lbnVfaXRlbXMgZnVuY3Rpb24gaXMgdmVyeSBzaW1pbGFyIHRvCit2NGwyX2N0cmxfbmV3X3N0ZF9tZW51IGJ1dCB0YWtlcyBhbiBleHRyYSBwYXJhbWV0ZXIgcW1lbnUsIHdoaWNoIGlzIHRoZSBkcml2ZXIKK3NwZWNpZmljIG1lbnUgZm9yIGFuIG90aGVyd2lzZSBzdGFuZGFyZCBtZW51IGNvbnRyb2wuIEEgZ29vZCBleGFtcGxlIGZvciB0aGlzCitjb250cm9sIGlzIHRoZSB0ZXN0IHBhdHRlcm4gY29udHJvbCBmb3IgY2FwdHVyZS9kaXNwbGF5L3NlbnNvcnMgZGV2aWNlcyB0aGF0CitoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIGdlbmVyYXRlIHRlc3QgcGF0dGVybnMuIFRoZXNlIHRlc3QgcGF0dGVybnMgYXJlIGhhcmR3YXJlCitzcGVjaWZpYywgc28gdGhlIGNvbnRlbnRzIG9mIHRoZSBtZW51IHdpbGwgdmFyeSBmcm9tIGRldmljZSB0byBkZXZpY2UuCisKK05vdGUgdGhhdCBpZiBzb21ldGhpbmcgZmFpbHMsIHRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiBOVUxMIG9yIGFuIGVycm9yIGFuZAorc2V0IGN0cmxfaGFuZGxlci0+ZXJyb3IgdG8gdGhlIGVycm9yIGNvZGUuIElmIGN0cmxfaGFuZGxlci0+ZXJyb3Igd2FzIGFscmVhZHkKK3NldCwgdGhlbiBpdCB3aWxsIGp1c3QgcmV0dXJuIGFuZCBkbyBub3RoaW5nLiBUaGlzIGlzIGFsc28gdHJ1ZSBmb3IKK3Y0bDJfY3RybF9oYW5kbGVyX2luaXQgaWYgaXQgY2Fubm90IGFsbG9jYXRlIHRoZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZS4KKworVGhpcyBtYWtlcyBpdCBlYXN5IHRvIGluaXQgdGhlIGhhbmRsZXIgYW5kIGp1c3QgYWRkIGFsbCBjb250cm9scyBhbmQgb25seSBjaGVjawordGhlIGVycm9yIGNvZGUgYXQgdGhlIGVuZC4gU2F2ZXMgYSBsb3Qgb2YgcmVwZXRpdGl2ZSBlcnJvciBjaGVja2luZy4KKworSXQgaXMgcmVjb21tZW5kZWQgdG8gYWRkIGNvbnRyb2xzIGluIGFzY2VuZGluZyBjb250cm9sIElEIG9yZGVyOiBpdCB3aWxsIGJlCithIGJpdCBmYXN0ZXIgdGhhdCB3YXkuCisKKzMpIE9wdGlvbmFsbHkgZm9yY2UgaW5pdGlhbCBjb250cm9sIHNldHVwOgorCisJdjRsMl9jdHJsX2hhbmRsZXJfc2V0dXAoJmZvby0+Y3RybF9oYW5kbGVyKTsKKworVGhpcyB3aWxsIGNhbGwgc19jdHJsIGZvciBhbGwgY29udHJvbHMgdW5jb25kaXRpb25hbGx5LiBFZmZlY3RpdmVseSB0aGlzCitpbml0aWFsaXplcyB0aGUgaGFyZHdhcmUgdG8gdGhlIGRlZmF1bHQgY29udHJvbCB2YWx1ZXMuIEl0IGlzIHJlY29tbWVuZGVkCit0aGF0IHlvdSBkbyB0aGlzIGFzIHRoaXMgZW5zdXJlcyB0aGF0IGJvdGggdGhlIGludGVybmFsIGRhdGEgc3RydWN0dXJlcyBhbmQKK3RoZSBoYXJkd2FyZSBhcmUgaW4gc3luYy4KKworNCkgRmluYWxseTogaW1wbGVtZW50IHRoZSB2NGwyX2N0cmxfb3BzCisKKwlzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfY3RybF9vcHMgZm9vX2N0cmxfb3BzID0geworCQkuc19jdHJsID0gZm9vX3NfY3RybCwKKwl9OworCitVc3VhbGx5IGFsbCB5b3UgbmVlZCBpcyBzX2N0cmw6CisKKwlzdGF0aWMgaW50IGZvb19zX2N0cmwoc3RydWN0IHY0bDJfY3RybCAqY3RybCkKKwl7CisJCXN0cnVjdCBmb28gKnN0YXRlID0gY29udGFpbmVyX29mKGN0cmwtPmhhbmRsZXIsIHN0cnVjdCBmb28sIGN0cmxfaGFuZGxlcik7CisKKwkJc3dpdGNoIChjdHJsLT5pZCkgeworCQljYXNlIFY0TDJfQ0lEX0JSSUdIVE5FU1M6CisJCQl3cml0ZV9yZWcoMHgxMjMsIGN0cmwtPnZhbCk7CisJCQlicmVhazsKKwkJY2FzZSBWNEwyX0NJRF9DT05UUkFTVDoKKwkJCXdyaXRlX3JlZygweDQ1NiwgY3RybC0+dmFsKTsKKwkJCWJyZWFrOworCQl9CisJCXJldHVybiAwOworCX0KKworVGhlIGNvbnRyb2wgb3BzIGFyZSBjYWxsZWQgd2l0aCB0aGUgdjRsMl9jdHJsIHBvaW50ZXIgYXMgYXJndW1lbnQuCitUaGUgbmV3IGNvbnRyb2wgdmFsdWUgaGFzIGFscmVhZHkgYmVlbiB2YWxpZGF0ZWQsIHNvIGFsbCB5b3UgbmVlZCB0byBkbyBpcwordG8gYWN0dWFsbHkgdXBkYXRlIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMuCisKK1lvdSdyZSBkb25lISBBbmQgdGhpcyBpcyBzdWZmaWNpZW50IGZvciBtb3N0IG9mIHRoZSBkcml2ZXJzIHdlIGhhdmUuIE5vIG5lZWQKK3RvIGRvIGFueSB2YWxpZGF0aW9uIG9mIGNvbnRyb2wgdmFsdWVzLCBvciBpbXBsZW1lbnQgUVVFUllDVFJMLCBRVUVSWV9FWFRfQ1RSTAorYW5kIFFVRVJZTUVOVS4gQW5kIEcvU19DVFJMIGFzIHdlbGwgYXMgRy9UUlkvU19FWFRfQ1RSTFMgYXJlIGF1dG9tYXRpY2FsbHkgc3VwcG9ydGVkLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgcmVtYWluZGVyIG9mIHRoaXMgZG9jdW1lbnQgZGVhbHMgd2l0aCBtb3JlIGFkdmFuY2VkIHRvcGljcyBhbmQgc2NlbmFyaW9zLgorSW4gcHJhY3RpY2UgdGhlIGJhc2ljIHVzYWdlIGFzIGRlc2NyaWJlZCBhYm92ZSBpcyBzdWZmaWNpZW50IGZvciBtb3N0IGRyaXZlcnMuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworCitJbmhlcml0aW5nIENvbnRyb2xzCis9PT09PT09PT09PT09PT09PT09CisKK1doZW4gYSBzdWItZGV2aWNlIGlzIHJlZ2lzdGVyZWQgd2l0aCBhIFY0TDIgZHJpdmVyIGJ5IGNhbGxpbmcKK3Y0bDJfZGV2aWNlX3JlZ2lzdGVyX3N1YmRldigpIGFuZCB0aGUgY3RybF9oYW5kbGVyIGZpZWxkcyBvZiBib3RoIHY0bDJfc3ViZGV2CithbmQgdjRsMl9kZXZpY2UgYXJlIHNldCwgdGhlbiB0aGUgY29udHJvbHMgb2YgdGhlIHN1YmRldiB3aWxsIGJlY29tZQorYXV0b21hdGljYWxseSBhdmFpbGFibGUgaW4gdGhlIFY0TDIgZHJpdmVyIGFzIHdlbGwuIElmIHRoZSBzdWJkZXYgZHJpdmVyCitjb250YWlucyBjb250cm9scyB0aGF0IGFscmVhZHkgZXhpc3QgaW4gdGhlIFY0TDIgZHJpdmVyLCB0aGVuIHRob3NlIHdpbGwgYmUKK3NraXBwZWQgKHNvIGEgVjRMMiBkcml2ZXIgY2FuIGFsd2F5cyBvdmVycmlkZSBhIHN1YmRldiBjb250cm9sKS4KKworV2hhdCBoYXBwZW5zIGhlcmUgaXMgdGhhdCB2NGwyX2RldmljZV9yZWdpc3Rlcl9zdWJkZXYoKSBjYWxscwordjRsMl9jdHJsX2FkZF9oYW5kbGVyKCkgYWRkaW5nIHRoZSBjb250cm9scyBvZiB0aGUgc3ViZGV2IHRvIHRoZSBjb250cm9scworb2YgdjRsMl9kZXZpY2UuCisKKworQWNjZXNzaW5nIENvbnRyb2wgVmFsdWVzCis9PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGZvbGxvd2luZyB1bmlvbiBpcyB1c2VkIGluc2lkZSB0aGUgY29udHJvbCBmcmFtZXdvcmsgdG8gYWNjZXNzIGNvbnRyb2wKK3ZhbHVlczoKKwordW5pb24gdjRsMl9jdHJsX3B0ciB7CisJczMyICpwX3MzMjsKKwlzNjQgKnBfczY0OworCWNoYXIgKnBfY2hhcjsKKwl2b2lkICpwOworfTsKKworVGhlIHY0bDJfY3RybCBzdHJ1Y3QgY29udGFpbnMgdGhlc2UgZmllbGRzIHRoYXQgY2FuIGJlIHVzZWQgdG8gYWNjZXNzIGJvdGgKK2N1cnJlbnQgYW5kIG5ldyB2YWx1ZXM6CisKKwlzMzIgdmFsOworCXN0cnVjdCB7CisJCXMzMiB2YWw7CisJfSBjdXI7CisKKworCXVuaW9uIHY0bDJfY3RybF9wdHIgcF9uZXc7CisJdW5pb24gdjRsMl9jdHJsX3B0ciBwX2N1cjsKKworSWYgdGhlIGNvbnRyb2wgaGFzIGEgc2ltcGxlIHMzMiB0eXBlIHR5cGUsIHRoZW46CisKKwkmY3RybC0+dmFsID09IGN0cmwtPnBfbmV3LnBfczMyCisJJmN0cmwtPmN1ci52YWwgPT0gY3RybC0+cF9jdXIucF9zMzIKKworRm9yIGFsbCBvdGhlciB0eXBlcyB1c2UgY3RybC0+cF9jdXIucDxzb21ldGhpbmc+LiBCYXNpY2FsbHkgdGhlIHZhbAorYW5kIGN1ci52YWwgZmllbGRzIGNhbiBiZSBjb25zaWRlcmVkIGFuIGFsaWFzIHNpbmNlIHRoZXNlIGFyZSB1c2VkIHNvIG9mdGVuLgorCitXaXRoaW4gdGhlIGNvbnRyb2wgb3BzIHlvdSBjYW4gZnJlZWx5IHVzZSB0aGVzZS4gVGhlIHZhbCBhbmQgY3VyLnZhbCBzcGVhayBmb3IKK3RoZW1zZWx2ZXMuIFRoZSBwX2NoYXIgcG9pbnRlcnMgcG9pbnQgdG8gY2hhcmFjdGVyIGJ1ZmZlcnMgb2YgbGVuZ3RoCitjdHJsLT5tYXhpbXVtICsgMSwgYW5kIGFyZSBhbHdheXMgMC10ZXJtaW5hdGVkLgorCitVbmxlc3MgdGhlIGNvbnRyb2wgaXMgbWFya2VkIHZvbGF0aWxlIHRoZSBwX2N1ciBmaWVsZCBwb2ludHMgdG8gdGhlIHRoZQorY3VycmVudCBjYWNoZWQgY29udHJvbCB2YWx1ZS4gV2hlbiB5b3UgY3JlYXRlIGEgbmV3IGNvbnRyb2wgdGhpcyB2YWx1ZSBpcyBtYWRlCitpZGVudGljYWwgdG8gdGhlIGRlZmF1bHQgdmFsdWUuIEFmdGVyIGNhbGxpbmcgdjRsMl9jdHJsX2hhbmRsZXJfc2V0dXAoKSB0aGlzCit2YWx1ZSBpcyBwYXNzZWQgdG8gdGhlIGhhcmR3YXJlLiBJdCBpcyBnZW5lcmFsbHkgYSBnb29kIGlkZWEgdG8gY2FsbCB0aGlzCitmdW5jdGlvbi4KKworV2hlbmV2ZXIgYSBuZXcgdmFsdWUgaXMgc2V0IHRoYXQgbmV3IHZhbHVlIGlzIGF1dG9tYXRpY2FsbHkgY2FjaGVkLiBUaGlzIG1lYW5zCit0aGF0IG1vc3QgZHJpdmVycyBkbyBub3QgbmVlZCB0byBpbXBsZW1lbnQgdGhlIGdfdm9sYXRpbGVfY3RybCgpIG9wLiBUaGUKK2V4Y2VwdGlvbiBpcyBmb3IgY29udHJvbHMgdGhhdCByZXR1cm4gYSB2b2xhdGlsZSByZWdpc3RlciBzdWNoIGFzIGEgc2lnbmFsCitzdHJlbmd0aCByZWFkLW91dCB0aGF0IGNoYW5nZXMgY29udGludW91c2x5LiBJbiB0aGF0IGNhc2UgeW91IHdpbGwgbmVlZCB0bworaW1wbGVtZW50IGdfdm9sYXRpbGVfY3RybCBsaWtlIHRoaXM6CisKKwlzdGF0aWMgaW50IGZvb19nX3ZvbGF0aWxlX2N0cmwoc3RydWN0IHY0bDJfY3RybCAqY3RybCkKKwl7CisJCXN3aXRjaCAoY3RybC0+aWQpIHsKKwkJY2FzZSBWNEwyX0NJRF9CUklHSFRORVNTOgorCQkJY3RybC0+dmFsID0gcmVhZF9yZWcoMHgxMjMpOworCQkJYnJlYWs7CisJCX0KKwl9CisKK05vdGUgdGhhdCB5b3UgdXNlIHRoZSAnbmV3IHZhbHVlJyB1bmlvbiBhcyB3ZWxsIGluIGdfdm9sYXRpbGVfY3RybC4gSW4gZ2VuZXJhbAorY29udHJvbHMgdGhhdCBuZWVkIHRvIGltcGxlbWVudCBnX3ZvbGF0aWxlX2N0cmwgYXJlIHJlYWQtb25seSBjb250cm9scy4gSWYgdGhleQorYXJlIG5vdCwgYSBWNEwyX0VWRU5UX0NUUkxfQ0hfVkFMVUUgd2lsbCBub3QgYmUgZ2VuZXJhdGVkIHdoZW4gdGhlIGNvbnRyb2wKK2NoYW5nZXMuCisKK1RvIG1hcmsgYSBjb250cm9sIGFzIHZvbGF0aWxlIHlvdSBoYXZlIHRvIHNldCBWNEwyX0NUUkxfRkxBR19WT0xBVElMRToKKworCWN0cmwgPSB2NGwyX2N0cmxfbmV3X3N0ZCgmc2QtPmN0cmxfaGFuZGxlciwgLi4uKTsKKwlpZiAoY3RybCkKKwkJY3RybC0+ZmxhZ3MgfD0gVjRMMl9DVFJMX0ZMQUdfVk9MQVRJTEU7CisKK0ZvciB0cnkvc19jdHJsIHRoZSBuZXcgdmFsdWVzIChpLmUuIGFzIHBhc3NlZCBieSB0aGUgdXNlcikgYXJlIGZpbGxlZCBpbiBhbmQKK3lvdSBjYW4gbW9kaWZ5IHRoZW0gaW4gdHJ5X2N0cmwgb3Igc2V0IHRoZW0gaW4gc19jdHJsLiBUaGUgJ2N1cicgdW5pb24KK2NvbnRhaW5zIHRoZSBjdXJyZW50IHZhbHVlLCB3aGljaCB5b3UgY2FuIHVzZSAoYnV0IG5vdCBjaGFuZ2UhKSBhcyB3ZWxsLgorCitJZiBzX2N0cmwgcmV0dXJucyAwIChPSyksIHRoZW4gdGhlIGNvbnRyb2wgZnJhbWV3b3JrIHdpbGwgY29weSB0aGUgbmV3IGZpbmFsCit2YWx1ZXMgdG8gdGhlICdjdXInIHVuaW9uLgorCitXaGlsZSBpbiBnX3ZvbGF0aWxlL3MvdHJ5X2N0cmwgeW91IGNhbiBhY2Nlc3MgdGhlIHZhbHVlIG9mIGFsbCBjb250cm9scyBvd25lZAorYnkgdGhlIHNhbWUgaGFuZGxlciBzaW5jZSB0aGUgaGFuZGxlcidzIGxvY2sgaXMgaGVsZC4gSWYgeW91IG5lZWQgdG8gYWNjZXNzCit0aGUgdmFsdWUgb2YgY29udHJvbHMgb3duZWQgYnkgb3RoZXIgaGFuZGxlcnMsIHRoZW4geW91IGhhdmUgdG8gYmUgdmVyeSBjYXJlZnVsCitub3QgdG8gaW50cm9kdWNlIGRlYWRsb2Nrcy4KKworT3V0c2lkZSBvZiB0aGUgY29udHJvbCBvcHMgeW91IGhhdmUgdG8gZ28gdGhyb3VnaCB0byBoZWxwZXIgZnVuY3Rpb25zIHRvIGdldAorb3Igc2V0IGEgc2luZ2xlIGNvbnRyb2wgdmFsdWUgc2FmZWx5IGluIHlvdXIgZHJpdmVyOgorCisJczMyIHY0bDJfY3RybF9nX2N0cmwoc3RydWN0IHY0bDJfY3RybCAqY3RybCk7CisJaW50IHY0bDJfY3RybF9zX2N0cmwoc3RydWN0IHY0bDJfY3RybCAqY3RybCwgczMyIHZhbCk7CisKK1RoZXNlIGZ1bmN0aW9ucyBnbyB0aHJvdWdoIHRoZSBjb250cm9sIGZyYW1ld29yayBqdXN0IGFzIFZJRElPQ19HL1NfQ1RSTCBpb2N0bHMKK2RvLiBEb24ndCB1c2UgdGhlc2UgaW5zaWRlIHRoZSBjb250cm9sIG9wcyBnX3ZvbGF0aWxlL3MvdHJ5X2N0cmwsIHRob3VnaCwgdGhhdAord2lsbCByZXN1bHQgaW4gYSBkZWFkbG9jayBzaW5jZSB0aGVzZSBoZWxwZXJzIGxvY2sgdGhlIGhhbmRsZXIgYXMgd2VsbC4KKworWW91IGNhbiBhbHNvIHRha2UgdGhlIGhhbmRsZXIgbG9jayB5b3Vyc2VsZjoKKworCW11dGV4X2xvY2soJnN0YXRlLT5jdHJsX2hhbmRsZXIubG9jayk7CisJcHJfaW5mbygiU3RyaW5nIHZhbHVlIGlzICclcydcbiIsIGN0cmwxLT5wX2N1ci5wX2NoYXIpOworCXByX2luZm8oIkludGVnZXIgdmFsdWUgaXMgJyVzJ1xuIiwgY3RybDItPmN1ci52YWwpOworCW11dGV4X3VubG9jaygmc3RhdGUtPmN0cmxfaGFuZGxlci5sb2NrKTsKKworCitNZW51IENvbnRyb2xzCis9PT09PT09PT09PT09CisKK1RoZSB2NGwyX2N0cmwgc3RydWN0IGNvbnRhaW5zIHRoaXMgdW5pb246CisKKwl1bmlvbiB7CisJCXUzMiBzdGVwOworCQl1MzIgbWVudV9za2lwX21hc2s7CisJfTsKKworRm9yIG1lbnUgY29udHJvbHMgbWVudV9za2lwX21hc2sgaXMgdXNlZC4gV2hhdCBpdCBkb2VzIGlzIHRoYXQgaXQgYWxsb3dzIHlvdQordG8gZWFzaWx5IGV4Y2x1ZGUgY2VydGFpbiBtZW51IGl0ZW1zLiBUaGlzIGlzIHVzZWQgaW4gdGhlIFZJRElPQ19RVUVSWU1FTlUKK2ltcGxlbWVudGF0aW9uIHdoZXJlIHlvdSBjYW4gcmV0dXJuIC1FSU5WQUwgaWYgYSBjZXJ0YWluIG1lbnUgaXRlbSBpcyBub3QKK3ByZXNlbnQuIE5vdGUgdGhhdCBWSURJT0NfUVVFUllDVFJMIGFsd2F5cyByZXR1cm5zIGEgc3RlcCB2YWx1ZSBvZiAxIGZvcgorbWVudSBjb250cm9scy4KKworQSBnb29kIGV4YW1wbGUgaXMgdGhlIE1QRUcgQXVkaW8gTGF5ZXIgSUkgQml0cmF0ZSBtZW51IGNvbnRyb2wgd2hlcmUgdGhlCittZW51IGlzIGEgbGlzdCBvZiBzdGFuZGFyZGl6ZWQgcG9zc2libGUgYml0cmF0ZXMuIEJ1dCBpbiBwcmFjdGljZSBoYXJkd2FyZQoraW1wbGVtZW50YXRpb25zIHdpbGwgb25seSBzdXBwb3J0IGEgc3Vic2V0IG9mIHRob3NlLiBCeSBzZXR0aW5nIHRoZSBza2lwCittYXNrIHlvdSBjYW4gdGVsbCB0aGUgZnJhbWV3b3JrIHdoaWNoIG1lbnUgaXRlbXMgc2hvdWxkIGJlIHNraXBwZWQuIFNldHRpbmcKK2l0IHRvIDAgbWVhbnMgdGhhdCBhbGwgbWVudSBpdGVtcyBhcmUgc3VwcG9ydGVkLgorCitZb3Ugc2V0IHRoaXMgbWFzayBlaXRoZXIgdGhyb3VnaCB0aGUgdjRsMl9jdHJsX2NvbmZpZyBzdHJ1Y3QgZm9yIGEgY3VzdG9tCitjb250cm9sLCBvciBieSBjYWxsaW5nIHY0bDJfY3RybF9uZXdfc3RkX21lbnUoKS4KKworCitDdXN0b20gQ29udHJvbHMKKz09PT09PT09PT09PT09PQorCitEcml2ZXIgc3BlY2lmaWMgY29udHJvbHMgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgdjRsMl9jdHJsX25ld19jdXN0b20oKToKKworCXN0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9jdHJsX2NvbmZpZyBjdHJsX2ZpbHRlciA9IHsKKwkJLm9wcyA9ICZjdHJsX2N1c3RvbV9vcHMsCisJCS5pZCA9IFY0TDJfQ0lEX01QRUdfQ1gyMzQxWF9WSURFT19TUEFUSUFMX0ZJTFRFUiwKKwkJLm5hbWUgPSAiU3BhdGlhbCBGaWx0ZXIiLAorCQkudHlwZSA9IFY0TDJfQ1RSTF9UWVBFX0lOVEVHRVIsCisJCS5mbGFncyA9IFY0TDJfQ1RSTF9GTEFHX1NMSURFUiwKKwkJLm1heCA9IDE1LAorCQkuc3RlcCA9IDEsCisJfTsKKworCWN0cmwgPSB2NGwyX2N0cmxfbmV3X2N1c3RvbSgmZm9vLT5jdHJsX2hhbmRsZXIsICZjdHJsX2ZpbHRlciwgTlVMTCk7CisKK1RoZSBsYXN0IGFyZ3VtZW50IGlzIHRoZSBwcml2IHBvaW50ZXIgd2hpY2ggY2FuIGJlIHNldCB0byBkcml2ZXItc3BlY2lmaWMKK3ByaXZhdGUgZGF0YS4KKworVGhlIHY0bDJfY3RybF9jb25maWcgc3RydWN0IGFsc28gaGFzIGEgZmllbGQgdG8gc2V0IHRoZSBpc19wcml2YXRlIGZsYWcuCisKK0lmIHRoZSBuYW1lIGZpZWxkIGlzIG5vdCBzZXQsIHRoZW4gdGhlIGZyYW1ld29yayB3aWxsIGFzc3VtZSB0aGlzIGlzIGEgc3RhbmRhcmQKK2NvbnRyb2wgYW5kIHdpbGwgZmlsbCBpbiB0aGUgbmFtZSwgdHlwZSBhbmQgZmxhZ3MgZmllbGRzIGFjY29yZGluZ2x5LgorCisKK0FjdGl2ZSBhbmQgR3JhYmJlZCBDb250cm9scworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0lmIHlvdSBnZXQgbW9yZSBjb21wbGV4IHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBjb250cm9scywgdGhlbiB5b3UgbWF5IGhhdmUgdG8KK2FjdGl2YXRlIGFuZCBkZWFjdGl2YXRlIGNvbnRyb2xzLiBGb3IgZXhhbXBsZSwgaWYgdGhlIENocm9tYSBBR0MgY29udHJvbCBpcworb24sIHRoZW4gdGhlIENocm9tYSBHYWluIGNvbnRyb2wgaXMgaW5hY3RpdmUuIFRoYXQgaXMsIHlvdSBtYXkgc2V0IGl0LCBidXQKK3RoZSB2YWx1ZSB3aWxsIG5vdCBiZSB1c2VkIGJ5IHRoZSBoYXJkd2FyZSBhcyBsb25nIGFzIHRoZSBhdXRvbWF0aWMgZ2FpbgorY29udHJvbCBpcyBvbi4gVHlwaWNhbGx5IHVzZXIgaW50ZXJmYWNlcyBjYW4gZGlzYWJsZSBzdWNoIGlucHV0IGZpZWxkcy4KKworWW91IGNhbiBzZXQgdGhlICdhY3RpdmUnIHN0YXR1cyB1c2luZyB2NGwyX2N0cmxfYWN0aXZhdGUoKS4gQnkgZGVmYXVsdCBhbGwKK2NvbnRyb2xzIGFyZSBhY3RpdmUuIE5vdGUgdGhhdCB0aGUgZnJhbWV3b3JrIGRvZXMgbm90IGNoZWNrIGZvciB0aGlzIGZsYWcuCitJdCBpcyBtZWFudCBwdXJlbHkgZm9yIEdVSXMuIFRoZSBmdW5jdGlvbiBpcyB0eXBpY2FsbHkgY2FsbGVkIGZyb20gd2l0aGluCitzX2N0cmwuCisKK1RoZSBvdGhlciBmbGFnIGlzIHRoZSAnZ3JhYmJlZCcgZmxhZy4gQSBncmFiYmVkIGNvbnRyb2wgbWVhbnMgdGhhdCB5b3UgY2Fubm90CitjaGFuZ2UgaXQgYmVjYXVzZSBpdCBpcyBpbiB1c2UgYnkgc29tZSByZXNvdXJjZS4gVHlwaWNhbCBleGFtcGxlcyBhcmUgTVBFRworYml0cmF0ZSBjb250cm9scyB0aGF0IGNhbm5vdCBiZSBjaGFuZ2VkIHdoaWxlIGNhcHR1cmluZyBpcyBpbiBwcm9ncmVzcy4KKworSWYgYSBjb250cm9sIGlzIHNldCB0byAnZ3JhYmJlZCcgdXNpbmcgdjRsMl9jdHJsX2dyYWIoKSwgdGhlbiB0aGUgZnJhbWV3b3JrCit3aWxsIHJldHVybiAtRUJVU1kgaWYgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIHNldCB0aGlzIGNvbnRyb2wuIFRoZQordjRsMl9jdHJsX2dyYWIoKSBmdW5jdGlvbiBpcyB0eXBpY2FsbHkgY2FsbGVkIGZyb20gdGhlIGRyaXZlciB3aGVuIGl0CitzdGFydHMgb3Igc3RvcHMgc3RyZWFtaW5nLgorCisKK0NvbnRyb2wgQ2x1c3RlcnMKKz09PT09PT09PT09PT09PT0KKworQnkgZGVmYXVsdCBhbGwgY29udHJvbHMgYXJlIGluZGVwZW5kZW50IGZyb20gdGhlIG90aGVycy4gQnV0IGluIG1vcmUKK2NvbXBsZXggc2NlbmFyaW9zIHlvdSBjYW4gZ2V0IGRlcGVuZGVuY2llcyBmcm9tIG9uZSBjb250cm9sIHRvIGFub3RoZXIuCitJbiB0aGF0IGNhc2UgeW91IG5lZWQgdG8gJ2NsdXN0ZXInIHRoZW06CisKKwlzdHJ1Y3QgZm9vIHsKKwkJc3RydWN0IHY0bDJfY3RybF9oYW5kbGVyIGN0cmxfaGFuZGxlcjsKKyNkZWZpbmUgQVVESU9fQ0xfVk9MVU1FICgwKQorI2RlZmluZSBBVURJT19DTF9NVVRFICAgKDEpCisJCXN0cnVjdCB2NGwyX2N0cmwgKmF1ZGlvX2NsdXN0ZXJbMl07CisJCS4uLgorCX07CisKKwlzdGF0ZS0+YXVkaW9fY2x1c3RlcltBVURJT19DTF9WT0xVTUVdID0KKwkJdjRsMl9jdHJsX25ld19zdGQoJnN0YXRlLT5jdHJsX2hhbmRsZXIsIC4uLik7CisJc3RhdGUtPmF1ZGlvX2NsdXN0ZXJbQVVESU9fQ0xfTVVURV0gPQorCQl2NGwyX2N0cmxfbmV3X3N0ZCgmc3RhdGUtPmN0cmxfaGFuZGxlciwgLi4uKTsKKwl2NGwyX2N0cmxfY2x1c3RlcihBUlJBWV9TSVpFKHN0YXRlLT5hdWRpb19jbHVzdGVyKSwgc3RhdGUtPmF1ZGlvX2NsdXN0ZXIpOworCitGcm9tIG5vdyBvbiB3aGVuZXZlciBvbmUgb3IgbW9yZSBvZiB0aGUgY29udHJvbHMgYmVsb25naW5nIHRvIHRoZSBzYW1lCitjbHVzdGVyIGlzIHNldCAob3IgJ2dvdHRlbicsIG9yICd0cmllZCcpLCBvbmx5IHRoZSBjb250cm9sIG9wcyBvZiB0aGUgZmlyc3QKK2NvbnRyb2wgKCd2b2x1bWUnIGluIHRoaXMgZXhhbXBsZSkgaXMgY2FsbGVkLiBZb3UgZWZmZWN0aXZlbHkgY3JlYXRlIGEgbmV3Citjb21wb3NpdGUgY29udHJvbC4gU2ltaWxhciB0byBob3cgYSAnc3RydWN0JyB3b3JrcyBpbiBDLgorCitTbyB3aGVuIHNfY3RybCBpcyBjYWxsZWQgd2l0aCBWNEwyX0NJRF9BVURJT19WT0xVTUUgYXMgYXJndW1lbnQsIHlvdSBzaG91bGQgc2V0CithbGwgdHdvIGNvbnRyb2xzIGJlbG9uZ2luZyB0byB0aGUgYXVkaW9fY2x1c3RlcjoKKworCXN0YXRpYyBpbnQgZm9vX3NfY3RybChzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsKQorCXsKKwkJc3RydWN0IGZvbyAqc3RhdGUgPSBjb250YWluZXJfb2YoY3RybC0+aGFuZGxlciwgc3RydWN0IGZvbywgY3RybF9oYW5kbGVyKTsKKworCQlzd2l0Y2ggKGN0cmwtPmlkKSB7CisJCWNhc2UgVjRMMl9DSURfQVVESU9fVk9MVU1FOiB7CisJCQlzdHJ1Y3QgdjRsMl9jdHJsICptdXRlID0gY3RybC0+Y2x1c3RlcltBVURJT19DTF9NVVRFXTsKKworCQkJd3JpdGVfcmVnKDB4MTIzLCBtdXRlLT52YWwgPyAwIDogY3RybC0+dmFsKTsKKwkJCWJyZWFrOworCQl9CisJCWNhc2UgVjRMMl9DSURfQ09OVFJBU1Q6CisJCQl3cml0ZV9yZWcoMHg0NTYsIGN0cmwtPnZhbCk7CisJCQlicmVhazsKKwkJfQorCQlyZXR1cm4gMDsKKwl9CisKK0luIHRoZSBleGFtcGxlIGFib3ZlIHRoZSBmb2xsb3dpbmcgYXJlIGVxdWl2YWxlbnQgZm9yIHRoZSBWT0xVTUUgY2FzZToKKworCWN0cmwgPT0gY3RybC0+Y2x1c3RlcltBVURJT19DTF9WT0xVTUVdID09IHN0YXRlLT5hdWRpb19jbHVzdGVyW0FVRElPX0NMX1ZPTFVNRV0KKwljdHJsLT5jbHVzdGVyW0FVRElPX0NMX01VVEVdID09IHN0YXRlLT5hdWRpb19jbHVzdGVyW0FVRElPX0NMX01VVEVdCisKK0luIHByYWN0aWNlIHVzaW5nIGNsdXN0ZXIgYXJyYXlzIGxpa2UgdGhpcyBiZWNvbWVzIHZlcnkgdGlyZXNvbWUuIFNvIGluc3RlYWQKK3RoZSBmb2xsb3dpbmcgZXF1aXZhbGVudCBtZXRob2QgaXMgdXNlZDoKKworCXN0cnVjdCB7CisJCS8qIGF1ZGlvIGNsdXN0ZXIgKi8KKwkJc3RydWN0IHY0bDJfY3RybCAqdm9sdW1lOworCQlzdHJ1Y3QgdjRsMl9jdHJsICptdXRlOworCX07CisKK1RoZSBhbm9ueW1vdXMgc3RydWN0IGlzIHVzZWQgdG8gY2xlYXJseSAnY2x1c3RlcicgdGhlc2UgdHdvIGNvbnRyb2wgcG9pbnRlcnMsCitidXQgaXQgc2VydmVzIG5vIG90aGVyIHB1cnBvc2UuIFRoZSBlZmZlY3QgaXMgdGhlIHNhbWUgYXMgY3JlYXRpbmcgYW4KK2FycmF5IHdpdGggdHdvIGNvbnRyb2wgcG9pbnRlcnMuIFNvIHlvdSBjYW4ganVzdCBkbzoKKworCXN0YXRlLT52b2x1bWUgPSB2NGwyX2N0cmxfbmV3X3N0ZCgmc3RhdGUtPmN0cmxfaGFuZGxlciwgLi4uKTsKKwlzdGF0ZS0+bXV0ZSA9IHY0bDJfY3RybF9uZXdfc3RkKCZzdGF0ZS0+Y3RybF9oYW5kbGVyLCAuLi4pOworCXY0bDJfY3RybF9jbHVzdGVyKDIsICZzdGF0ZS0+dm9sdW1lKTsKKworQW5kIGluIGZvb19zX2N0cmwgeW91IGNhbiB1c2UgdGhlc2UgcG9pbnRlcnMgZGlyZWN0bHk6IHN0YXRlLT5tdXRlLT52YWwuCisKK05vdGUgdGhhdCBjb250cm9scyBpbiBhIGNsdXN0ZXIgbWF5IGJlIE5VTEwuIEZvciBleGFtcGxlLCBpZiBmb3Igc29tZQorcmVhc29uIG11dGUgd2FzIG5ldmVyIGFkZGVkIChiZWNhdXNlIHRoZSBoYXJkd2FyZSBkb2Vzbid0IHN1cHBvcnQgdGhhdAorcGFydGljdWxhciBmZWF0dXJlKSwgdGhlbiBtdXRlIHdpbGwgYmUgTlVMTC4gU28gaW4gdGhhdCBjYXNlIHdlIGhhdmUgYQorY2x1c3RlciBvZiAyIGNvbnRyb2xzLCBvZiB3aGljaCBvbmx5IDEgaXMgYWN0dWFsbHkgaW5zdGFudGlhdGVkLiBUaGUKK29ubHkgcmVzdHJpY3Rpb24gaXMgdGhhdCB0aGUgZmlyc3QgY29udHJvbCBvZiB0aGUgY2x1c3RlciBtdXN0IGFsd2F5cyBiZQorcHJlc2VudCwgc2luY2UgdGhhdCBpcyB0aGUgJ21hc3RlcicgY29udHJvbCBvZiB0aGUgY2x1c3Rlci4gVGhlIG1hc3RlcgorY29udHJvbCBpcyB0aGUgb25lIHRoYXQgaWRlbnRpZmllcyB0aGUgY2x1c3RlciBhbmQgdGhhdCBwcm92aWRlcyB0aGUKK3BvaW50ZXIgdG8gdGhlIHY0bDJfY3RybF9vcHMgc3RydWN0IHRoYXQgaXMgdXNlZCBmb3IgdGhhdCBjbHVzdGVyLgorCitPYnZpb3VzbHksIGFsbCBjb250cm9scyBpbiB0aGUgY2x1c3RlciBhcnJheSBtdXN0IGJlIGluaXRpYWxpemVkIHRvIGVpdGhlcgorYSB2YWxpZCBjb250cm9sIG9yIHRvIE5VTEwuCisKK0luIHJhcmUgY2FzZXMgeW91IG1pZ2h0IHdhbnQgdG8ga25vdyB3aGljaCBjb250cm9scyBvZiBhIGNsdXN0ZXIgYWN0dWFsbHkKK3dlcmUgc2V0IGV4cGxpY2l0bHkgYnkgdGhlIHVzZXIuIEZvciB0aGlzIHlvdSBjYW4gY2hlY2sgdGhlICdpc19uZXcnIGZsYWcgb2YKK2VhY2ggY29udHJvbC4gRm9yIGV4YW1wbGUsIGluIHRoZSBjYXNlIG9mIGEgdm9sdW1lL211dGUgY2x1c3RlciB0aGUgJ2lzX25ldycKK2ZsYWcgb2YgdGhlIG11dGUgY29udHJvbCB3b3VsZCBiZSBzZXQgaWYgdGhlIHVzZXIgY2FsbGVkIFZJRElPQ19TX0NUUkwgZm9yCittdXRlIG9ubHkuIElmIHRoZSB1c2VyIHdvdWxkIGNhbGwgVklESU9DX1NfRVhUX0NUUkxTIGZvciBib3RoIG11dGUgYW5kIHZvbHVtZQorY29udHJvbHMsIHRoZW4gdGhlICdpc19uZXcnIGZsYWcgd291bGQgYmUgMSBmb3IgYm90aCBjb250cm9scy4KKworVGhlICdpc19uZXcnIGZsYWcgaXMgYWx3YXlzIDEgd2hlbiBjYWxsZWQgZnJvbSB2NGwyX2N0cmxfaGFuZGxlcl9zZXR1cCgpLgorCisKK0hhbmRsaW5nIGF1dG9nYWluL2dhaW4tdHlwZSBDb250cm9scyB3aXRoIEF1dG8gQ2x1c3RlcnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQSBjb21tb24gdHlwZSBvZiBjb250cm9sIGNsdXN0ZXIgaXMgb25lIHRoYXQgaGFuZGxlcyAnYXV0by1mb28vZm9vJy10eXBlCitjb250cm9scy4gVHlwaWNhbCBleGFtcGxlcyBhcmUgYXV0b2dhaW4vZ2FpbiwgYXV0b2V4cG9zdXJlL2V4cG9zdXJlLAorYXV0b3doaXRlYmFsYW5jZS9yZWQgYmFsYW5jZS9ibHVlIGJhbGFuY2UuIEluIGFsbCBjYXNlcyB5b3UgaGF2ZSBvbmUgY29udHJvbAordGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgYW5vdGhlciBjb250cm9sIGlzIGhhbmRsZWQgYXV0b21hdGljYWxseSBieSB0aGUgaGFyZHdhcmUsCitvciB3aGV0aGVyIGl0IGlzIHVuZGVyIG1hbnVhbCBjb250cm9sIGZyb20gdGhlIHVzZXIuCisKK0lmIHRoZSBjbHVzdGVyIGlzIGluIGF1dG9tYXRpYyBtb2RlLCB0aGVuIHRoZSBtYW51YWwgY29udHJvbHMgc2hvdWxkIGJlCittYXJrZWQgaW5hY3RpdmUgYW5kIHZvbGF0aWxlLiBXaGVuIHRoZSB2b2xhdGlsZSBjb250cm9scyBhcmUgcmVhZCB0aGUKK2dfdm9sYXRpbGVfY3RybCBvcGVyYXRpb24gc2hvdWxkIHJldHVybiB0aGUgdmFsdWUgdGhhdCB0aGUgaGFyZHdhcmUncyBhdXRvbWF0aWMKK21vZGUgc2V0IHVwIGF1dG9tYXRpY2FsbHkuCisKK0lmIHRoZSBjbHVzdGVyIGlzIHB1dCBpbiBtYW51YWwgbW9kZSwgdGhlbiB0aGUgbWFudWFsIGNvbnRyb2xzIHNob3VsZCBiZWNvbWUKK2FjdGl2ZSBhZ2FpbiBhbmQgdGhlIHZvbGF0aWxlIGZsYWcgaXMgY2xlYXJlZCAoc28gZ192b2xhdGlsZV9jdHJsIGlzIG5vIGxvbmdlcgorY2FsbGVkIHdoaWxlIGluIG1hbnVhbCBtb2RlKS4gSW4gYWRkaXRpb24ganVzdCBiZWZvcmUgc3dpdGNoaW5nIHRvIG1hbnVhbCBtb2RlCit0aGUgY3VycmVudCB2YWx1ZXMgYXMgZGV0ZXJtaW5lZCBieSB0aGUgYXV0byBtb2RlIGFyZSBjb3BpZWQgYXMgdGhlIG5ldyBtYW51YWwKK3ZhbHVlcy4KKworRmluYWxseSB0aGUgVjRMMl9DVFJMX0ZMQUdfVVBEQVRFIHNob3VsZCBiZSBzZXQgZm9yIHRoZSBhdXRvIGNvbnRyb2wgc2luY2UKK2NoYW5naW5nIHRoYXQgY29udHJvbCBhZmZlY3RzIHRoZSBjb250cm9sIGZsYWdzIG9mIHRoZSBtYW51YWwgY29udHJvbHMuCisKK0luIG9yZGVyIHRvIHNpbXBsaWZ5IHRoaXMgYSBzcGVjaWFsIHZhcmlhdGlvbiBvZiB2NGwyX2N0cmxfY2x1c3RlciB3YXMKK2ludHJvZHVjZWQ6CisKK3ZvaWQgdjRsMl9jdHJsX2F1dG9fY2x1c3Rlcih1bnNpZ25lZCBuY29udHJvbHMsIHN0cnVjdCB2NGwyX2N0cmwgKipjb250cm9scywKKwkJCXU4IG1hbnVhbF92YWwsIGJvb2wgc2V0X3ZvbGF0aWxlKTsKKworVGhlIGZpcnN0IHR3byBhcmd1bWVudHMgYXJlIGlkZW50aWNhbCB0byB2NGwyX2N0cmxfY2x1c3Rlci4gVGhlIHRoaXJkIGFyZ3VtZW50Cit0ZWxscyB0aGUgZnJhbWV3b3JrIHdoaWNoIHZhbHVlIHN3aXRjaGVzIHRoZSBjbHVzdGVyIGludG8gbWFudWFsIG1vZGUuIFRoZQorbGFzdCBhcmd1bWVudCB3aWxsIG9wdGlvbmFsbHkgc2V0IFY0TDJfQ1RSTF9GTEFHX1ZPTEFUSUxFIGZvciB0aGUgbm9uLWF1dG8gY29udHJvbHMuCitJZiBpdCBpcyBmYWxzZSwgdGhlbiB0aGUgbWFudWFsIGNvbnRyb2xzIGFyZSBuZXZlciB2b2xhdGlsZS4gWW91IHdvdWxkIHR5cGljYWxseQordXNlIHRoYXQgaWYgdGhlIGhhcmR3YXJlIGRvZXMgbm90IGdpdmUgeW91IHRoZSBvcHRpb24gdG8gcmVhZCBiYWNrIHRvIHZhbHVlcyBhcworZGV0ZXJtaW5lZCBieSB0aGUgYXV0byBtb2RlIChlLmcuIGlmIGF1dG9nYWluIGlzIG9uLCB0aGUgaGFyZHdhcmUgZG9lc24ndCBhbGxvdworeW91IHRvIG9idGFpbiB0aGUgY3VycmVudCBnYWluIHZhbHVlKS4KKworVGhlIGZpcnN0IGNvbnRyb2wgb2YgdGhlIGNsdXN0ZXIgaXMgYXNzdW1lZCB0byBiZSB0aGUgJ2F1dG8nIGNvbnRyb2wuCisKK1VzaW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBlbnN1cmUgdGhhdCB5b3UgZG9uJ3QgbmVlZCB0byBoYW5kbGUgYWxsIHRoZSBjb21wbGV4CitmbGFnIGFuZCB2b2xhdGlsZSBoYW5kbGluZy4KKworCitWSURJT0NfTE9HX1NUQVRVUyBTdXBwb3J0Cis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgaW9jdGwgYWxsb3cgeW91IHRvIGR1bXAgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIGEgZHJpdmVyIHRvIHRoZSBrZXJuZWwgbG9nLgorVGhlIHY0bDJfY3RybF9oYW5kbGVyX2xvZ19zdGF0dXMoY3RybF9oYW5kbGVyLCBwcmVmaXgpIGNhbiBiZSB1c2VkIHRvIGR1bXAgdGhlCit2YWx1ZSBvZiB0aGUgY29udHJvbHMgb3duZWQgYnkgdGhlIGdpdmVuIGhhbmRsZXIgdG8gdGhlIGxvZy4gWW91IGNhbiBzdXBwbHkgYQorcHJlZml4IGFzIHdlbGwuIElmIHRoZSBwcmVmaXggZGlkbid0IGVuZCB3aXRoIGEgc3BhY2UsIHRoZW4gJzogJyB3aWxsIGJlIGFkZGVkCitmb3IgeW91LgorCisKK0RpZmZlcmVudCBIYW5kbGVycyBmb3IgRGlmZmVyZW50IFZpZGVvIE5vZGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitVc3VhbGx5IHRoZSBWNEwyIGRyaXZlciBoYXMganVzdCBvbmUgY29udHJvbCBoYW5kbGVyIHRoYXQgaXMgZ2xvYmFsIGZvcgorYWxsIHZpZGVvIG5vZGVzLiBCdXQgeW91IGNhbiBhbHNvIHNwZWNpZnkgZGlmZmVyZW50IGNvbnRyb2wgaGFuZGxlcnMgZm9yCitkaWZmZXJlbnQgdmlkZW8gbm9kZXMuIFlvdSBjYW4gZG8gdGhhdCBieSBtYW51YWxseSBzZXR0aW5nIHRoZSBjdHJsX2hhbmRsZXIKK2ZpZWxkIG9mIHN0cnVjdCB2aWRlb19kZXZpY2UuCisKK1RoYXQgaXMgbm8gcHJvYmxlbSBpZiB0aGVyZSBhcmUgbm8gc3ViZGV2cyBpbnZvbHZlZCBidXQgaWYgdGhlcmUgYXJlLCB0aGVuCit5b3UgbmVlZCB0byBibG9jayB0aGUgYXV0b21hdGljIG1lcmdpbmcgb2Ygc3ViZGV2IGNvbnRyb2xzIHRvIHRoZSBnbG9iYWwKK2NvbnRyb2wgaGFuZGxlci4gWW91IGRvIHRoYXQgYnkgc2ltcGx5IHNldHRpbmcgdGhlIGN0cmxfaGFuZGxlciBmaWVsZCBpbgorc3RydWN0IHY0bDJfZGV2aWNlIHRvIE5VTEwuIE5vdyB2NGwyX2RldmljZV9yZWdpc3Rlcl9zdWJkZXYoKSB3aWxsIG5vIGxvbmdlcgorbWVyZ2Ugc3ViZGV2IGNvbnRyb2xzLgorCitBZnRlciBlYWNoIHN1YmRldiB3YXMgYWRkZWQsIHlvdSB3aWxsIHRoZW4gaGF2ZSB0byBjYWxsIHY0bDJfY3RybF9hZGRfaGFuZGxlcgorbWFudWFsbHkgdG8gYWRkIHRoZSBzdWJkZXYncyBjb250cm9sIGhhbmRsZXIgKHNkLT5jdHJsX2hhbmRsZXIpIHRvIHRoZSBkZXNpcmVkCitjb250cm9sIGhhbmRsZXIuIFRoaXMgY29udHJvbCBoYW5kbGVyIG1heSBiZSBzcGVjaWZpYyB0byB0aGUgdmlkZW9fZGV2aWNlIG9yCitmb3IgYSBzdWJzZXQgb2YgdmlkZW9fZGV2aWNlJ3MuIEZvciBleGFtcGxlOiB0aGUgcmFkaW8gZGV2aWNlIG5vZGVzIG9ubHkgaGF2ZQorYXVkaW8gY29udHJvbHMsIHdoaWxlIHRoZSB2aWRlbyBhbmQgdmJpIGRldmljZSBub2RlcyBzaGFyZSB0aGUgc2FtZSBjb250cm9sCitoYW5kbGVyIGZvciB0aGUgYXVkaW8gYW5kIHZpZGVvIGNvbnRyb2xzLgorCitJZiB5b3Ugd2FudCB0byBoYXZlIG9uZSBoYW5kbGVyIChlLmcuIGZvciBhIHJhZGlvIGRldmljZSBub2RlKSBoYXZlIGEgc3Vic2V0CitvZiBhbm90aGVyIGhhbmRsZXIgKGUuZy4gZm9yIGEgdmlkZW8gZGV2aWNlIG5vZGUpLCB0aGVuIHlvdSBzaG91bGQgZmlyc3QgYWRkCit0aGUgY29udHJvbHMgdG8gdGhlIGZpcnN0IGhhbmRsZXIsIGFkZCB0aGUgb3RoZXIgY29udHJvbHMgdG8gdGhlIHNlY29uZAoraGFuZGxlciBhbmQgZmluYWxseSBhZGQgdGhlIGZpcnN0IGhhbmRsZXIgdG8gdGhlIHNlY29uZC4gRm9yIGV4YW1wbGU6CisKKwl2NGwyX2N0cmxfbmV3X3N0ZCgmcmFkaW9fY3RybF9oYW5kbGVyLCAmcmFkaW9fb3BzLCBWNEwyX0NJRF9BVURJT19WT0xVTUUsIC4uLik7CisJdjRsMl9jdHJsX25ld19zdGQoJnJhZGlvX2N0cmxfaGFuZGxlciwgJnJhZGlvX29wcywgVjRMMl9DSURfQVVESU9fTVVURSwgLi4uKTsKKwl2NGwyX2N0cmxfbmV3X3N0ZCgmdmlkZW9fY3RybF9oYW5kbGVyLCAmdmlkZW9fb3BzLCBWNEwyX0NJRF9CUklHSFRORVNTLCAuLi4pOworCXY0bDJfY3RybF9uZXdfc3RkKCZ2aWRlb19jdHJsX2hhbmRsZXIsICZ2aWRlb19vcHMsIFY0TDJfQ0lEX0NPTlRSQVNULCAuLi4pOworCXY0bDJfY3RybF9hZGRfaGFuZGxlcigmdmlkZW9fY3RybF9oYW5kbGVyLCAmcmFkaW9fY3RybF9oYW5kbGVyLCBOVUxMKTsKKworVGhlIGxhc3QgYXJndW1lbnQgdG8gdjRsMl9jdHJsX2FkZF9oYW5kbGVyKCkgaXMgYSBmaWx0ZXIgZnVuY3Rpb24gdGhhdCBhbGxvd3MKK3lvdSB0byBmaWx0ZXIgd2hpY2ggY29udHJvbHMgd2lsbCBiZSBhZGRlZC4gU2V0IGl0IHRvIE5VTEwgaWYgeW91IHdhbnQgdG8gYWRkCithbGwgY29udHJvbHMuCisKK09yIHlvdSBjYW4gYWRkIHNwZWNpZmljIGNvbnRyb2xzIHRvIGEgaGFuZGxlcjoKKworCXZvbHVtZSA9IHY0bDJfY3RybF9uZXdfc3RkKCZ2aWRlb19jdHJsX2hhbmRsZXIsICZvcHMsIFY0TDJfQ0lEX0FVRElPX1ZPTFVNRSwgLi4uKTsKKwl2NGwyX2N0cmxfbmV3X3N0ZCgmdmlkZW9fY3RybF9oYW5kbGVyLCAmb3BzLCBWNEwyX0NJRF9CUklHSFRORVNTLCAuLi4pOworCXY0bDJfY3RybF9uZXdfc3RkKCZ2aWRlb19jdHJsX2hhbmRsZXIsICZvcHMsIFY0TDJfQ0lEX0NPTlRSQVNULCAuLi4pOworCXY0bDJfY3RybF9hZGRfY3RybCgmcmFkaW9fY3RybF9oYW5kbGVyLCB2b2x1bWUpOworCitXaGF0IHlvdSBzaG91bGQgbm90IGRvIGlzIG1ha2UgdHdvIGlkZW50aWNhbCBjb250cm9scyBmb3IgdHdvIGhhbmRsZXJzLgorRm9yIGV4YW1wbGU6CisKKwl2NGwyX2N0cmxfbmV3X3N0ZCgmcmFkaW9fY3RybF9oYW5kbGVyLCAmcmFkaW9fb3BzLCBWNEwyX0NJRF9BVURJT19NVVRFLCAuLi4pOworCXY0bDJfY3RybF9uZXdfc3RkKCZ2aWRlb19jdHJsX2hhbmRsZXIsICZ2aWRlb19vcHMsIFY0TDJfQ0lEX0FVRElPX01VVEUsIC4uLik7CisKK1RoaXMgd291bGQgYmUgYmFkIHNpbmNlIG11dGluZyB0aGUgcmFkaW8gd291bGQgbm90IGNoYW5nZSB0aGUgdmlkZW8gbXV0ZQorY29udHJvbC4gVGhlIHJ1bGUgaXMgdG8gaGF2ZSBvbmUgY29udHJvbCBmb3IgZWFjaCBoYXJkd2FyZSAna25vYicgdGhhdCB5b3UKK2NhbiB0d2lkZGxlLgorCisKK0ZpbmRpbmcgQ29udHJvbHMKKz09PT09PT09PT09PT09PT0KKworTm9ybWFsbHkgeW91IGhhdmUgY3JlYXRlZCB0aGUgY29udHJvbHMgeW91cnNlbGYgYW5kIHlvdSBjYW4gc3RvcmUgdGhlIHN0cnVjdAordjRsMl9jdHJsIHBvaW50ZXIgaW50byB5b3VyIG93biBzdHJ1Y3QuCisKK0J1dCBzb21ldGltZXMgeW91IG5lZWQgdG8gZmluZCBhIGNvbnRyb2wgZnJvbSBhbm90aGVyIGhhbmRsZXIgdGhhdCB5b3UgZG8KK25vdCBvd24uIEZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSB0byBmaW5kIGEgdm9sdW1lIGNvbnRyb2wgZnJvbSBhIHN1YmRldi4KKworWW91IGNhbiBkbyB0aGF0IGJ5IGNhbGxpbmcgdjRsMl9jdHJsX2ZpbmQ6CisKKwlzdHJ1Y3QgdjRsMl9jdHJsICp2b2x1bWU7CisKKwl2b2x1bWUgPSB2NGwyX2N0cmxfZmluZChzZC0+Y3RybF9oYW5kbGVyLCBWNEwyX0NJRF9BVURJT19WT0xVTUUpOworCitTaW5jZSB2NGwyX2N0cmxfZmluZCB3aWxsIGxvY2sgdGhlIGhhbmRsZXIgeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCB3aGVyZSB5b3UKK3VzZSBpdC4gRm9yIGV4YW1wbGUsIHRoaXMgaXMgbm90IGEgZ29vZCBpZGVhOgorCisJc3RydWN0IHY0bDJfY3RybF9oYW5kbGVyIGN0cmxfaGFuZGxlcjsKKworCXY0bDJfY3RybF9uZXdfc3RkKCZjdHJsX2hhbmRsZXIsICZ2aWRlb19vcHMsIFY0TDJfQ0lEX0JSSUdIVE5FU1MsIC4uLik7CisJdjRsMl9jdHJsX25ld19zdGQoJmN0cmxfaGFuZGxlciwgJnZpZGVvX29wcywgVjRMMl9DSURfQ09OVFJBU1QsIC4uLik7CisKKy4uLmFuZCBpbiB2aWRlb19vcHMuc19jdHJsOgorCisJY2FzZSBWNEwyX0NJRF9CUklHSFRORVNTOgorCQljb250cmFzdCA9IHY0bDJfZmluZF9jdHJsKCZjdHJsX2hhbmRsZXIsIFY0TDJfQ0lEX0NPTlRSQVNUKTsKKwkJLi4uCisKK1doZW4gc19jdHJsIGlzIGNhbGxlZCBieSB0aGUgZnJhbWV3b3JrIHRoZSBjdHJsX2hhbmRsZXIubG9jayBpcyBhbHJlYWR5IHRha2VuLCBzbworYXR0ZW1wdGluZyB0byBmaW5kIGFub3RoZXIgY29udHJvbCBmcm9tIHRoZSBzYW1lIGhhbmRsZXIgd2lsbCBkZWFkbG9jay4KKworSXQgaXMgcmVjb21tZW5kZWQgbm90IHRvIHVzZSB0aGlzIGZ1bmN0aW9uIGZyb20gaW5zaWRlIHRoZSBjb250cm9sIG9wcy4KKworCitJbmhlcml0aW5nIENvbnRyb2xzCis9PT09PT09PT09PT09PT09PT09CisKK1doZW4gb25lIGNvbnRyb2wgaGFuZGxlciBpcyBhZGRlZCB0byBhbm90aGVyIHVzaW5nIHY0bDJfY3RybF9hZGRfaGFuZGxlciwgdGhlbgorYnkgZGVmYXVsdCBhbGwgY29udHJvbHMgZnJvbSBvbmUgYXJlIG1lcmdlZCB0byB0aGUgb3RoZXIuIEJ1dCBhIHN1YmRldiBtaWdodAoraGF2ZSBsb3ctbGV2ZWwgY29udHJvbHMgdGhhdCBtYWtlIHNlbnNlIGZvciBzb21lIGFkdmFuY2VkIGVtYmVkZGVkIHN5c3RlbSwgYnV0Citub3Qgd2hlbiBpdCBpcyB1c2VkIGluIGNvbnN1bWVyLWxldmVsIGhhcmR3YXJlLiBJbiB0aGF0IGNhc2UgeW91IHdhbnQgdG8ga2VlcAordGhvc2UgbG93LWxldmVsIGNvbnRyb2xzIGxvY2FsIHRvIHRoZSBzdWJkZXYuIFlvdSBjYW4gZG8gdGhpcyBieSBzaW1wbHkKK3NldHRpbmcgdGhlICdpc19wcml2YXRlJyBmbGFnIG9mIHRoZSBjb250cm9sIHRvIDE6CisKKwlzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfY3RybF9jb25maWcgY3RybF9wcml2YXRlID0geworCQkub3BzID0gJmN0cmxfY3VzdG9tX29wcywKKwkJLmlkID0gVjRMMl9DSURfLi4uLAorCQkubmFtZSA9ICJTb21lIFByaXZhdGUgQ29udHJvbCIsCisJCS50eXBlID0gVjRMMl9DVFJMX1RZUEVfSU5URUdFUiwKKwkJLm1heCA9IDE1LAorCQkuc3RlcCA9IDEsCisJCS5pc19wcml2YXRlID0gMSwKKwl9OworCisJY3RybCA9IHY0bDJfY3RybF9uZXdfY3VzdG9tKCZmb28tPmN0cmxfaGFuZGxlciwgJmN0cmxfcHJpdmF0ZSwgTlVMTCk7CisKK1RoZXNlIGNvbnRyb2xzIHdpbGwgbm93IGJlIHNraXBwZWQgd2hlbiB2NGwyX2N0cmxfYWRkX2hhbmRsZXIgaXMgY2FsbGVkLgorCisKK1Y0TDJfQ1RSTF9UWVBFX0NUUkxfQ0xBU1MgQ29udHJvbHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQ29udHJvbHMgb2YgdGhpcyB0eXBlIGNhbiBiZSB1c2VkIGJ5IEdVSXMgdG8gZ2V0IHRoZSBuYW1lIG9mIHRoZSBjb250cm9sIGNsYXNzLgorQSBmdWxseSBmZWF0dXJlZCBHVUkgY2FuIG1ha2UgYSBkaWFsb2cgd2l0aCBtdWx0aXBsZSB0YWJzIHdpdGggZWFjaCB0YWIKK2NvbnRhaW5pbmcgdGhlIGNvbnRyb2xzIGJlbG9uZ2luZyB0byBhIHBhcnRpY3VsYXIgY29udHJvbCBjbGFzcy4gVGhlIG5hbWUgb2YKK2VhY2ggdGFiIGNhbiBiZSBmb3VuZCBieSBxdWVyeWluZyBhIHNwZWNpYWwgY29udHJvbCB3aXRoIElEIDxjb250cm9sIGNsYXNzIHwgMT4uCisKK0RyaXZlcnMgZG8gbm90IGhhdmUgdG8gY2FyZSBhYm91dCB0aGlzLiBUaGUgZnJhbWV3b3JrIHdpbGwgYXV0b21hdGljYWxseSBhZGQKK2EgY29udHJvbCBvZiB0aGlzIHR5cGUgd2hlbmV2ZXIgdGhlIGZpcnN0IGNvbnRyb2wgYmVsb25naW5nIHRvIGEgbmV3IGNvbnRyb2wKK2NsYXNzIGlzIGFkZGVkLgorCisKK0FkZGluZyBOb3RpZnkgQ2FsbGJhY2tzCis9PT09PT09PT09PT09PT09PT09PT09PQorCitTb21ldGltZXMgdGhlIHBsYXRmb3JtIG9yIGJyaWRnZSBkcml2ZXIgbmVlZHMgdG8gYmUgbm90aWZpZWQgd2hlbiBhIGNvbnRyb2wKK2Zyb20gYSBzdWItZGV2aWNlIGRyaXZlciBjaGFuZ2VzLiBZb3UgY2FuIHNldCBhIG5vdGlmeSBjYWxsYmFjayBieSBjYWxsaW5nCit0aGlzIGZ1bmN0aW9uOgorCit2b2lkIHY0bDJfY3RybF9ub3RpZnkoc3RydWN0IHY0bDJfY3RybCAqY3RybCwKKwl2b2lkICgqbm90aWZ5KShzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsLCB2b2lkICpwcml2KSwgdm9pZCAqcHJpdik7CisKK1doZW5ldmVyIHRoZSBnaXZlIGNvbnRyb2wgY2hhbmdlcyB2YWx1ZSB0aGUgbm90aWZ5IGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkCit3aXRoIGEgcG9pbnRlciB0byB0aGUgY29udHJvbCBhbmQgdGhlIHByaXYgcG9pbnRlciB0aGF0IHdhcyBwYXNzZWQgd2l0aAordjRsMl9jdHJsX25vdGlmeS4gTm90ZSB0aGF0IHRoZSBjb250cm9sJ3MgaGFuZGxlciBsb2NrIGlzIGhlbGQgd2hlbiB0aGUKK25vdGlmeSBmdW5jdGlvbiBpcyBjYWxsZWQuCisKK1RoZXJlIGNhbiBiZSBvbmx5IG9uZSBub3RpZnkgZnVuY3Rpb24gcGVyIGNvbnRyb2wgaGFuZGxlci4gQW55IGF0dGVtcHQKK3RvIHNldCBhbm90aGVyIG5vdGlmeSBmdW5jdGlvbiB3aWxsIGNhdXNlIGEgV0FSTl9PTi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC92NGwyLWZyYW1ld29yay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVkNWMxOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0CkBAIC0wLDAgKzEsMTE2MCBAQAorT3ZlcnZpZXcgb2YgdGhlIFY0TDIgZHJpdmVyIGZyYW1ld29yaworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIHRleHQgZG9jdW1lbnRzIHRoZSB2YXJpb3VzIHN0cnVjdHVyZXMgcHJvdmlkZWQgYnkgdGhlIFY0TDIgZnJhbWV3b3JrIGFuZAordGhlaXIgcmVsYXRpb25zaGlwcy4KKworCitJbnRyb2R1Y3Rpb24KKy0tLS0tLS0tLS0tLQorCitUaGUgVjRMMiBkcml2ZXJzIHRlbmQgdG8gYmUgdmVyeSBjb21wbGV4IGR1ZSB0byB0aGUgY29tcGxleGl0eSBvZiB0aGUKK2hhcmR3YXJlOiBtb3N0IGRldmljZXMgaGF2ZSBtdWx0aXBsZSBJQ3MsIGV4cG9ydCBtdWx0aXBsZSBkZXZpY2Ugbm9kZXMgaW4KKy9kZXYsIGFuZCBjcmVhdGUgYWxzbyBub24tVjRMMiBkZXZpY2VzIHN1Y2ggYXMgRFZCLCBBTFNBLCBGQiwgSTJDIGFuZCBpbnB1dAorKElSKSBkZXZpY2VzLgorCitFc3BlY2lhbGx5IHRoZSBmYWN0IHRoYXQgVjRMMiBkcml2ZXJzIGhhdmUgdG8gc2V0dXAgc3VwcG9ydGluZyBJQ3MgdG8KK2RvIGF1ZGlvL3ZpZGVvIG11eGluZy9lbmNvZGluZy9kZWNvZGluZyBtYWtlcyBpdCBtb3JlIGNvbXBsZXggdGhhbiBtb3N0LgorVXN1YWxseSB0aGVzZSBJQ3MgYXJlIGNvbm5lY3RlZCB0byB0aGUgbWFpbiBicmlkZ2UgZHJpdmVyIHRocm91Z2ggb25lIG9yCittb3JlIEkyQyBidXNzZXMsIGJ1dCBvdGhlciBidXNzZXMgY2FuIGFsc28gYmUgdXNlZC4gU3VjaCBkZXZpY2VzIGFyZQorY2FsbGVkICdzdWItZGV2aWNlcycuCisKK0ZvciBhIGxvbmcgdGltZSB0aGUgZnJhbWV3b3JrIHdhcyBsaW1pdGVkIHRvIHRoZSB2aWRlb19kZXZpY2Ugc3RydWN0IGZvcgorY3JlYXRpbmcgVjRMIGRldmljZSBub2RlcyBhbmQgdmlkZW9fYnVmIGZvciBoYW5kbGluZyB0aGUgdmlkZW8gYnVmZmVycworKG5vdGUgdGhhdCB0aGlzIGRvY3VtZW50IGRvZXMgbm90IGRpc2N1c3MgdGhlIHZpZGVvX2J1ZiBmcmFtZXdvcmspLgorCitUaGlzIG1lYW50IHRoYXQgYWxsIGRyaXZlcnMgaGFkIHRvIGRvIHRoZSBzZXR1cCBvZiBkZXZpY2UgaW5zdGFuY2VzIGFuZAorY29ubmVjdGluZyB0byBzdWItZGV2aWNlcyB0aGVtc2VsdmVzLiBTb21lIG9mIHRoaXMgaXMgcXVpdGUgY29tcGxpY2F0ZWQKK3RvIGRvIHJpZ2h0IGFuZCBtYW55IGRyaXZlcnMgbmV2ZXIgZGlkIGRvIGl0IGNvcnJlY3RseS4KKworVGhlcmUgaXMgYWxzbyBhIGxvdCBvZiBjb21tb24gY29kZSB0aGF0IGNvdWxkIG5ldmVyIGJlIHJlZmFjdG9yZWQgZHVlIHRvCit0aGUgbGFjayBvZiBhIGZyYW1ld29yay4KKworU28gdGhpcyBmcmFtZXdvcmsgc2V0cyB1cCB0aGUgYmFzaWMgYnVpbGRpbmcgYmxvY2tzIHRoYXQgYWxsIGRyaXZlcnMKK25lZWQgYW5kIHRoaXMgc2FtZSBmcmFtZXdvcmsgc2hvdWxkIG1ha2UgaXQgbXVjaCBlYXNpZXIgdG8gcmVmYWN0b3IKK2NvbW1vbiBjb2RlIGludG8gdXRpbGl0eSBmdW5jdGlvbnMgc2hhcmVkIGJ5IGFsbCBkcml2ZXJzLgorCitBIGdvb2QgZXhhbXBsZSB0byBsb29rIGF0IGFzIGEgcmVmZXJlbmNlIGlzIHRoZSB2NGwyLXBjaS1za2VsZXRvbi5jCitzb3VyY2UgdGhhdCBpcyBhdmFpbGFibGUgaW4gdGhpcyBkaXJlY3RvcnkuIEl0IGlzIGEgc2tlbGV0b24gZHJpdmVyIGZvcgorYSBQQ0kgY2FwdHVyZSBjYXJkLCBhbmQgZGVtb25zdHJhdGVzIGhvdyB0byB1c2UgdGhlIFY0TDIgZHJpdmVyCitmcmFtZXdvcmsuIEl0IGNhbiBiZSB1c2VkIGFzIGEgdGVtcGxhdGUgZm9yIHJlYWwgUENJIHZpZGVvIGNhcHR1cmUgZHJpdmVyLgorCitTdHJ1Y3R1cmUgb2YgYSBkcml2ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbGwgZHJpdmVycyBoYXZlIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOgorCisxKSBBIHN0cnVjdCBmb3IgZWFjaCBkZXZpY2UgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZGV2aWNlIHN0YXRlLgorCisyKSBBIHdheSBvZiBpbml0aWFsaXppbmcgYW5kIGNvbW1hbmRpbmcgc3ViLWRldmljZXMgKGlmIGFueSkuCisKKzMpIENyZWF0aW5nIFY0TDIgZGV2aWNlIG5vZGVzICgvZGV2L3ZpZGVvWCwgL2Rldi92YmlYIGFuZCAvZGV2L3JhZGlvWCkKKyAgIGFuZCBrZWVwaW5nIHRyYWNrIG9mIGRldmljZS1ub2RlIHNwZWNpZmljIGRhdGEuCisKKzQpIEZpbGVoYW5kbGUtc3BlY2lmaWMgc3RydWN0cyBjb250YWluaW5nIHBlci1maWxlaGFuZGxlIGRhdGE7CisKKzUpIHZpZGVvIGJ1ZmZlciBoYW5kbGluZy4KKworVGhpcyBpcyBhIHJvdWdoIHNjaGVtYXRpYyBvZiBob3cgaXQgYWxsIHJlbGF0ZXM6CisKKyAgICBkZXZpY2UgaW5zdGFuY2VzCisgICAgICB8CisgICAgICArLXN1Yi1kZXZpY2UgaW5zdGFuY2VzCisgICAgICB8CisgICAgICBcLVY0TDIgZGV2aWNlIG5vZGVzCisJICB8CisJICBcLWZpbGVoYW5kbGUgaW5zdGFuY2VzCisKKworU3RydWN0dXJlIG9mIHRoZSBmcmFtZXdvcmsKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBmcmFtZXdvcmsgY2xvc2VseSByZXNlbWJsZXMgdGhlIGRyaXZlciBzdHJ1Y3R1cmU6IGl0IGhhcyBhIHY0bDJfZGV2aWNlCitzdHJ1Y3QgZm9yIHRoZSBkZXZpY2UgaW5zdGFuY2UgZGF0YSwgYSB2NGwyX3N1YmRldiBzdHJ1Y3QgdG8gcmVmZXIgdG8KK3N1Yi1kZXZpY2UgaW5zdGFuY2VzLCB0aGUgdmlkZW9fZGV2aWNlIHN0cnVjdCBzdG9yZXMgVjRMMiBkZXZpY2Ugbm9kZSBkYXRhCithbmQgdGhlIHY0bDJfZmggc3RydWN0IGtlZXBzIHRyYWNrIG9mIGZpbGVoYW5kbGUgaW5zdGFuY2VzLgorCitUaGUgVjRMMiBmcmFtZXdvcmsgYWxzbyBvcHRpb25hbGx5IGludGVncmF0ZXMgd2l0aCB0aGUgbWVkaWEgZnJhbWV3b3JrLiBJZiBhCitkcml2ZXIgc2V0cyB0aGUgc3RydWN0IHY0bDJfZGV2aWNlIG1kZXYgZmllbGQsIHN1Yi1kZXZpY2VzIGFuZCB2aWRlbyBub2Rlcword2lsbCBhdXRvbWF0aWNhbGx5IGFwcGVhciBpbiB0aGUgbWVkaWEgZnJhbWV3b3JrIGFzIGVudGl0aWVzLgorCisKK3N0cnVjdCB2NGwyX2RldmljZQorLS0tLS0tLS0tLS0tLS0tLS0tCisKK0VhY2ggZGV2aWNlIGluc3RhbmNlIGlzIHJlcHJlc2VudGVkIGJ5IGEgc3RydWN0IHY0bDJfZGV2aWNlICh2NGwyLWRldmljZS5oKS4KK1Zlcnkgc2ltcGxlIGRldmljZXMgY2FuIGp1c3QgYWxsb2NhdGUgdGhpcyBzdHJ1Y3QsIGJ1dCBtb3N0IG9mIHRoZSB0aW1lIHlvdQord291bGQgZW1iZWQgdGhpcyBzdHJ1Y3QgaW5zaWRlIGEgbGFyZ2VyIHN0cnVjdC4KKworWW91IG11c3QgcmVnaXN0ZXIgdGhlIGRldmljZSBpbnN0YW5jZToKKworCXY0bDJfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHY0bDJfZGV2aWNlICp2NGwyX2Rldik7CisKK1JlZ2lzdHJhdGlvbiB3aWxsIGluaXRpYWxpemUgdGhlIHY0bDJfZGV2aWNlIHN0cnVjdC4gSWYgdGhlIGRldi0+ZHJpdmVyX2RhdGEKK2ZpZWxkIGlzIE5VTEwsIGl0IHdpbGwgYmUgbGlua2VkIHRvIHY0bDJfZGV2LgorCitEcml2ZXJzIHRoYXQgd2FudCBpbnRlZ3JhdGlvbiB3aXRoIHRoZSBtZWRpYSBkZXZpY2UgZnJhbWV3b3JrIG5lZWQgdG8gc2V0CitkZXYtPmRyaXZlcl9kYXRhIG1hbnVhbGx5IHRvIHBvaW50IHRvIHRoZSBkcml2ZXItc3BlY2lmaWMgZGV2aWNlIHN0cnVjdHVyZQordGhhdCBlbWJlZCB0aGUgc3RydWN0IHY0bDJfZGV2aWNlIGluc3RhbmNlLiBUaGlzIGlzIGFjaGlldmVkIGJ5IGEKK2Rldl9zZXRfZHJ2ZGF0YSgpIGNhbGwgYmVmb3JlIHJlZ2lzdGVyaW5nIHRoZSBWNEwyIGRldmljZSBpbnN0YW5jZS4gVGhleSBtdXN0CithbHNvIHNldCB0aGUgc3RydWN0IHY0bDJfZGV2aWNlIG1kZXYgZmllbGQgdG8gcG9pbnQgdG8gYSBwcm9wZXJseSBpbml0aWFsaXplZAorYW5kIHJlZ2lzdGVyZWQgbWVkaWFfZGV2aWNlIGluc3RhbmNlLgorCitJZiB2NGwyX2Rldi0+bmFtZSBpcyBlbXB0eSB0aGVuIGl0IHdpbGwgYmUgc2V0IHRvIGEgdmFsdWUgZGVyaXZlZCBmcm9tIGRldgorKGRyaXZlciBuYW1lIGZvbGxvd2VkIGJ5IHRoZSBidXNfaWQsIHRvIGJlIHByZWNpc2UpLiBJZiB5b3Ugc2V0IGl0IHVwIGJlZm9yZQorY2FsbGluZyB2NGwyX2RldmljZV9yZWdpc3RlciB0aGVuIGl0IHdpbGwgYmUgdW50b3VjaGVkLiBJZiBkZXYgaXMgTlVMTCwgdGhlbgoreW91ICptdXN0KiBzZXR1cCB2NGwyX2Rldi0+bmFtZSBiZWZvcmUgY2FsbGluZyB2NGwyX2RldmljZV9yZWdpc3Rlci4KKworWW91IGNhbiB1c2UgdjRsMl9kZXZpY2Vfc2V0X25hbWUoKSB0byBzZXQgdGhlIG5hbWUgYmFzZWQgb24gYSBkcml2ZXIgbmFtZSBhbmQKK2EgZHJpdmVyLWdsb2JhbCBhdG9taWNfdCBpbnN0YW5jZS4gVGhpcyB3aWxsIGdlbmVyYXRlIG5hbWVzIGxpa2UgaXZ0djAsIGl2dHYxLAorZXRjLiBJZiB0aGUgbmFtZSBlbmRzIHdpdGggYSBkaWdpdCwgdGhlbiBpdCB3aWxsIGluc2VydCBhIGRhc2g6IGN4MTgtMCwKK2N4MTgtMSwgZXRjLiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGluc3RhbmNlIG51bWJlci4KKworVGhlIGZpcnN0ICdkZXYnIGFyZ3VtZW50IGlzIG5vcm1hbGx5IHRoZSBzdHJ1Y3QgZGV2aWNlIHBvaW50ZXIgb2YgYSBwY2lfZGV2LAordXNiX2ludGVyZmFjZSBvciBwbGF0Zm9ybV9kZXZpY2UuIEl0IGlzIHJhcmUgZm9yIGRldiB0byBiZSBOVUxMLCBidXQgaXQgaGFwcGVucword2l0aCBJU0EgZGV2aWNlcyBvciB3aGVuIG9uZSBkZXZpY2UgY3JlYXRlcyBtdWx0aXBsZSBQQ0kgZGV2aWNlcywgdGh1cyBtYWtpbmcKK2l0IGltcG9zc2libGUgdG8gYXNzb2NpYXRlIHY0bDJfZGV2IHdpdGggYSBwYXJ0aWN1bGFyIHBhcmVudC4KKworWW91IGNhbiBhbHNvIHN1cHBseSBhIG5vdGlmeSgpIGNhbGxiYWNrIHRoYXQgY2FuIGJlIGNhbGxlZCBieSBzdWItZGV2aWNlcyB0bworbm90aWZ5IHlvdSBvZiBldmVudHMuIFdoZXRoZXIgeW91IG5lZWQgdG8gc2V0IHRoaXMgZGVwZW5kcyBvbiB0aGUgc3ViLWRldmljZS4KK0FueSBub3RpZmljYXRpb25zIGEgc3ViLWRldmljZSBzdXBwb3J0cyBtdXN0IGJlIGRlZmluZWQgaW4gYSBoZWFkZXIgaW4KK2luY2x1ZGUvbWVkaWEvPHN1YmRldmljZT4uaC4KKworWW91IHVucmVnaXN0ZXIgd2l0aDoKKworCXY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoc3RydWN0IHY0bDJfZGV2aWNlICp2NGwyX2Rldik7CisKK0lmIHRoZSBkZXYtPmRyaXZlcl9kYXRhIGZpZWxkIHBvaW50cyB0byB2NGwyX2RldiwgaXQgd2lsbCBiZSByZXNldCB0byBOVUxMLgorVW5yZWdpc3RlcmluZyB3aWxsIGFsc28gYXV0b21hdGljYWxseSB1bnJlZ2lzdGVyIGFsbCBzdWJkZXZzIGZyb20gdGhlIGRldmljZS4KKworSWYgeW91IGhhdmUgYSBob3RwbHVnZ2FibGUgZGV2aWNlIChlLmcuIGEgVVNCIGRldmljZSksIHRoZW4gd2hlbiBhIGRpc2Nvbm5lY3QKK2hhcHBlbnMgdGhlIHBhcmVudCBkZXZpY2UgYmVjb21lcyBpbnZhbGlkLiBTaW5jZSB2NGwyX2RldmljZSBoYXMgYSBwb2ludGVyIHRvCit0aGF0IHBhcmVudCBkZXZpY2UgaXQgaGFzIHRvIGJlIGNsZWFyZWQgYXMgd2VsbCB0byBtYXJrIHRoYXQgdGhlIHBhcmVudCBpcworZ29uZS4gVG8gZG8gdGhpcyBjYWxsOgorCisJdjRsMl9kZXZpY2VfZGlzY29ubmVjdChzdHJ1Y3QgdjRsMl9kZXZpY2UgKnY0bDJfZGV2KTsKKworVGhpcyBkb2VzICpub3QqIHVucmVnaXN0ZXIgdGhlIHN1YmRldnMsIHNvIHlvdSBzdGlsbCBuZWVkIHRvIGNhbGwgdGhlCit2NGwyX2RldmljZV91bnJlZ2lzdGVyKCkgZnVuY3Rpb24gZm9yIHRoYXQuIElmIHlvdXIgZHJpdmVyIGlzIG5vdCBob3RwbHVnZ2FibGUsCit0aGVuIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2FsbCB2NGwyX2RldmljZV9kaXNjb25uZWN0KCkuCisKK1NvbWV0aW1lcyB5b3UgbmVlZCB0byBpdGVyYXRlIG92ZXIgYWxsIGRldmljZXMgcmVnaXN0ZXJlZCBieSBhIHNwZWNpZmljCitkcml2ZXIuIFRoaXMgaXMgdXN1YWxseSB0aGUgY2FzZSBpZiBtdWx0aXBsZSBkZXZpY2UgZHJpdmVycyB1c2UgdGhlIHNhbWUKK2hhcmR3YXJlLiBFLmcuIHRoZSBpdnR2ZmIgZHJpdmVyIGlzIGEgZnJhbWVidWZmZXIgZHJpdmVyIHRoYXQgdXNlcyB0aGUgaXZ0dgoraGFyZHdhcmUuIFRoZSBzYW1lIGlzIHRydWUgZm9yIGFsc2EgZHJpdmVycyBmb3IgZXhhbXBsZS4KKworWW91IGNhbiBpdGVyYXRlIG92ZXIgYWxsIHJlZ2lzdGVyZWQgZGV2aWNlcyBhcyBmb2xsb3dzOgorCitzdGF0aWMgaW50IGNhbGxiYWNrKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcCkKK3sKKwlzdHJ1Y3QgdjRsMl9kZXZpY2UgKnY0bDJfZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisKKwkvKiB0ZXN0IGlmIHRoaXMgZGV2aWNlIHdhcyBpbml0ZWQgKi8KKwlpZiAodjRsMl9kZXYgPT0gTlVMTCkKKwkJcmV0dXJuIDA7CisJLi4uCisJcmV0dXJuIDA7Cit9CisKK2ludCBpdGVyYXRlKHZvaWQgKnApCit7CisJc3RydWN0IGRldmljZV9kcml2ZXIgKmRydjsKKwlpbnQgZXJyOworCisJLyogRmluZCBkcml2ZXIgJ2l2dHYnIG9uIHRoZSBQQ0kgYnVzLgorCSAgIHBjaV9idXNfdHlwZSBpcyBhIGdsb2JhbC4gRm9yIFVTQiBidXNzZXMgdXNlIHVzYl9idXNfdHlwZS4gKi8KKwlkcnYgPSBkcml2ZXJfZmluZCgiaXZ0diIsICZwY2lfYnVzX3R5cGUpOworCS8qIGl0ZXJhdGUgb3ZlciBhbGwgaXZ0diBkZXZpY2UgaW5zdGFuY2VzICovCisJZXJyID0gZHJpdmVyX2Zvcl9lYWNoX2RldmljZShkcnYsIE5VTEwsIHAsIGNhbGxiYWNrKTsKKwlwdXRfZHJpdmVyKGRydik7CisJcmV0dXJuIGVycjsKK30KKworU29tZXRpbWVzIHlvdSBuZWVkIHRvIGtlZXAgYSBydW5uaW5nIGNvdW50ZXIgb2YgdGhlIGRldmljZSBpbnN0YW5jZS4gVGhpcyBpcworY29tbW9ubHkgdXNlZCB0byBtYXAgYSBkZXZpY2UgaW5zdGFuY2UgdG8gYW4gaW5kZXggb2YgYSBtb2R1bGUgb3B0aW9uIGFycmF5LgorCitUaGUgcmVjb21tZW5kZWQgYXBwcm9hY2ggaXMgYXMgZm9sbG93czoKKworc3RhdGljIGF0b21pY190IGRydl9pbnN0YW5jZSA9IEFUT01JQ19JTklUKDApOworCitzdGF0aWMgaW50IGRydl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9pZCkKK3sKKwkuLi4KKwlzdGF0ZS0+aW5zdGFuY2UgPSBhdG9taWNfaW5jX3JldHVybigmZHJ2X2luc3RhbmNlKSAtIDE7Cit9CisKK0lmIHlvdSBoYXZlIG11bHRpcGxlIGRldmljZSBub2RlcyB0aGVuIGl0IGNhbiBiZSBkaWZmaWN1bHQgdG8ga25vdyB3aGVuIGl0IGlzCitzYWZlIHRvIHVucmVnaXN0ZXIgdjRsMl9kZXZpY2UgZm9yIGhvdHBsdWdnYWJsZSBkZXZpY2VzLiBGb3IgdGhpcyBwdXJwb3NlCit2NGwyX2RldmljZSBoYXMgcmVmY291bnRpbmcgc3VwcG9ydC4gVGhlIHJlZmNvdW50IGlzIGluY3JlYXNlZCB3aGVuZXZlcgordmlkZW9fcmVnaXN0ZXJfZGV2aWNlIGlzIGNhbGxlZCBhbmQgaXQgaXMgZGVjcmVhc2VkIHdoZW5ldmVyIHRoYXQgZGV2aWNlIG5vZGUKK2lzIHJlbGVhc2VkLiBXaGVuIHRoZSByZWZjb3VudCByZWFjaGVzIHplcm8sIHRoZW4gdGhlIHY0bDJfZGV2aWNlIHJlbGVhc2UoKQorY2FsbGJhY2sgaXMgY2FsbGVkLiBZb3UgY2FuIGRvIHlvdXIgZmluYWwgY2xlYW51cCB0aGVyZS4KKworSWYgb3RoZXIgZGV2aWNlIG5vZGVzIChlLmcuIEFMU0EpIGFyZSBjcmVhdGVkLCB0aGVuIHlvdSBjYW4gaW5jcmVhc2UgYW5kCitkZWNyZWFzZSB0aGUgcmVmY291bnQgbWFudWFsbHkgYXMgd2VsbCBieSBjYWxsaW5nOgorCit2b2lkIHY0bDJfZGV2aWNlX2dldChzdHJ1Y3QgdjRsMl9kZXZpY2UgKnY0bDJfZGV2KTsKKworb3I6CisKK2ludCB2NGwyX2RldmljZV9wdXQoc3RydWN0IHY0bDJfZGV2aWNlICp2NGwyX2Rldik7CisKK1NpbmNlIHRoZSBpbml0aWFsIHJlZmNvdW50IGlzIDEgeW91IGFsc28gbmVlZCB0byBjYWxsIHY0bDJfZGV2aWNlX3B1dCBpbiB0aGUKK2Rpc2Nvbm5lY3QoKSBjYWxsYmFjayAoZm9yIFVTQiBkZXZpY2VzKSBvciBpbiB0aGUgcmVtb3ZlKCkgY2FsbGJhY2sgKGZvciBlLmcuCitQQ0kgZGV2aWNlcyksIG90aGVyd2lzZSB0aGUgcmVmY291bnQgd2lsbCBuZXZlciByZWFjaCAwLgorCitzdHJ1Y3QgdjRsMl9zdWJkZXYKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitNYW55IGRyaXZlcnMgbmVlZCB0byBjb21tdW5pY2F0ZSB3aXRoIHN1Yi1kZXZpY2VzLiBUaGVzZSBkZXZpY2VzIGNhbiBkbyBhbGwKK3NvcnQgb2YgdGFza3MsIGJ1dCBtb3N0IGNvbW1vbmx5IHRoZXkgaGFuZGxlIGF1ZGlvIGFuZC9vciB2aWRlbyBtdXhpbmcsCitlbmNvZGluZyBvciBkZWNvZGluZy4gRm9yIHdlYmNhbXMgY29tbW9uIHN1Yi1kZXZpY2VzIGFyZSBzZW5zb3JzIGFuZCBjYW1lcmEKK2NvbnRyb2xsZXJzLgorCitVc3VhbGx5IHRoZXNlIGFyZSBJMkMgZGV2aWNlcywgYnV0IG5vdCBuZWNlc3NhcmlseS4gSW4gb3JkZXIgdG8gcHJvdmlkZSB0aGUKK2RyaXZlciB3aXRoIGEgY29uc2lzdGVudCBpbnRlcmZhY2UgdG8gdGhlc2Ugc3ViLWRldmljZXMgdGhlIHY0bDJfc3ViZGV2IHN0cnVjdAorKHY0bDItc3ViZGV2LmgpIHdhcyBjcmVhdGVkLgorCitFYWNoIHN1Yi1kZXZpY2UgZHJpdmVyIG11c3QgaGF2ZSBhIHY0bDJfc3ViZGV2IHN0cnVjdC4gVGhpcyBzdHJ1Y3QgY2FuIGJlCitzdGFuZC1hbG9uZSBmb3Igc2ltcGxlIHN1Yi1kZXZpY2VzIG9yIGl0IG1pZ2h0IGJlIGVtYmVkZGVkIGluIGEgbGFyZ2VyIHN0cnVjdAoraWYgbW9yZSBzdGF0ZSBpbmZvcm1hdGlvbiBuZWVkcyB0byBiZSBzdG9yZWQuIFVzdWFsbHkgdGhlcmUgaXMgYSBsb3ctbGV2ZWwKK2RldmljZSBzdHJ1Y3QgKGUuZy4gaTJjX2NsaWVudCkgdGhhdCBjb250YWlucyB0aGUgZGV2aWNlIGRhdGEgYXMgc2V0dXAKK2J5IHRoZSBrZXJuZWwuIEl0IGlzIHJlY29tbWVuZGVkIHRvIHN0b3JlIHRoYXQgcG9pbnRlciBpbiB0aGUgcHJpdmF0ZQorZGF0YSBvZiB2NGwyX3N1YmRldiB1c2luZyB2NGwyX3NldF9zdWJkZXZkYXRhKCkuIFRoYXQgbWFrZXMgaXQgZWFzeSB0byBnbworZnJvbSBhIHY0bDJfc3ViZGV2IHRvIHRoZSBhY3R1YWwgbG93LWxldmVsIGJ1cy1zcGVjaWZpYyBkZXZpY2UgZGF0YS4KKworWW91IGFsc28gbmVlZCBhIHdheSB0byBnbyBmcm9tIHRoZSBsb3ctbGV2ZWwgc3RydWN0IHRvIHY0bDJfc3ViZGV2LiBGb3IgdGhlCitjb21tb24gaTJjX2NsaWVudCBzdHJ1Y3QgdGhlIGkyY19zZXRfY2xpZW50ZGF0YSgpIGNhbGwgaXMgdXNlZCB0byBzdG9yZSBhCit2NGwyX3N1YmRldiBwb2ludGVyLCBmb3Igb3RoZXIgYnVzc2VzIHlvdSBtYXkgaGF2ZSB0byB1c2Ugb3RoZXIgbWV0aG9kcy4KKworQnJpZGdlcyBtaWdodCBhbHNvIG5lZWQgdG8gc3RvcmUgcGVyLXN1YmRldiBwcml2YXRlIGRhdGEsIHN1Y2ggYXMgYSBwb2ludGVyIHRvCiticmlkZ2Utc3BlY2lmaWMgcGVyLXN1YmRldiBwcml2YXRlIGRhdGEuIFRoZSB2NGwyX3N1YmRldiBzdHJ1Y3R1cmUgcHJvdmlkZXMKK2hvc3QgcHJpdmF0ZSBkYXRhIGZvciB0aGF0IHB1cnBvc2UgdGhhdCBjYW4gYmUgYWNjZXNzZWQgd2l0aAordjRsMl9nZXRfc3ViZGV2X2hvc3RkYXRhKCkgYW5kIHY0bDJfc2V0X3N1YmRldl9ob3N0ZGF0YSgpLgorCitGcm9tIHRoZSBicmlkZ2UgZHJpdmVyIHBlcnNwZWN0aXZlIHlvdSBsb2FkIHRoZSBzdWItZGV2aWNlIG1vZHVsZSBhbmQgc29tZWhvdworb2J0YWluIHRoZSB2NGwyX3N1YmRldiBwb2ludGVyLiBGb3IgaTJjIGRldmljZXMgdGhpcyBpcyBlYXN5OiB5b3UgY2FsbAoraTJjX2dldF9jbGllbnRkYXRhKCkuIEZvciBvdGhlciBidXNzZXMgc29tZXRoaW5nIHNpbWlsYXIgbmVlZHMgdG8gYmUgZG9uZS4KK0hlbHBlciBmdW5jdGlvbnMgZXhpc3RzIGZvciBzdWItZGV2aWNlcyBvbiBhbiBJMkMgYnVzIHRoYXQgZG8gbW9zdCBvZiB0aGlzCit0cmlja3kgd29yayBmb3IgeW91LgorCitFYWNoIHY0bDJfc3ViZGV2IGNvbnRhaW5zIGZ1bmN0aW9uIHBvaW50ZXJzIHRoYXQgc3ViLWRldmljZSBkcml2ZXJzIGNhbgoraW1wbGVtZW50IChvciBsZWF2ZSBOVUxMIGlmIGl0IGlzIG5vdCBhcHBsaWNhYmxlKS4gU2luY2Ugc3ViLWRldmljZXMgY2FuIGRvCitzbyBtYW55IGRpZmZlcmVudCB0aGluZ3MgYW5kIHlvdSBkbyBub3Qgd2FudCB0byBlbmQgdXAgd2l0aCBhIGh1Z2Ugb3BzIHN0cnVjdAorb2Ygd2hpY2ggb25seSBhIGhhbmRmdWwgb2Ygb3BzIGFyZSBjb21tb25seSBpbXBsZW1lbnRlZCwgdGhlIGZ1bmN0aW9uIHBvaW50ZXJzCithcmUgc29ydGVkIGFjY29yZGluZyB0byBjYXRlZ29yeSBhbmQgZWFjaCBjYXRlZ29yeSBoYXMgaXRzIG93biBvcHMgc3RydWN0LgorCitUaGUgdG9wLWxldmVsIG9wcyBzdHJ1Y3QgY29udGFpbnMgcG9pbnRlcnMgdG8gdGhlIGNhdGVnb3J5IG9wcyBzdHJ1Y3RzLCB3aGljaAorbWF5IGJlIE5VTEwgaWYgdGhlIHN1YmRldiBkcml2ZXIgZG9lcyBub3Qgc3VwcG9ydCBhbnl0aGluZyBmcm9tIHRoYXQgY2F0ZWdvcnkuCisKK0l0IGxvb2tzIGxpa2UgdGhpczoKKworc3RydWN0IHY0bDJfc3ViZGV2X2NvcmVfb3BzIHsKKwlpbnQgKCpsb2dfc3RhdHVzKShzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkKTsKKwlpbnQgKCppbml0KShzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkLCB1MzIgdmFsKTsKKwkuLi4KK307CisKK3N0cnVjdCB2NGwyX3N1YmRldl90dW5lcl9vcHMgeworCS4uLgorfTsKKworc3RydWN0IHY0bDJfc3ViZGV2X2F1ZGlvX29wcyB7CisJLi4uCit9OworCitzdHJ1Y3QgdjRsMl9zdWJkZXZfdmlkZW9fb3BzIHsKKwkuLi4KK307CisKK3N0cnVjdCB2NGwyX3N1YmRldl9wYWRfb3BzIHsKKwkuLi4KK307CisKK3N0cnVjdCB2NGwyX3N1YmRldl9vcHMgeworCWNvbnN0IHN0cnVjdCB2NGwyX3N1YmRldl9jb3JlX29wcyAgKmNvcmU7CisJY29uc3Qgc3RydWN0IHY0bDJfc3ViZGV2X3R1bmVyX29wcyAqdHVuZXI7CisJY29uc3Qgc3RydWN0IHY0bDJfc3ViZGV2X2F1ZGlvX29wcyAqYXVkaW87CisJY29uc3Qgc3RydWN0IHY0bDJfc3ViZGV2X3ZpZGVvX29wcyAqdmlkZW87CisJY29uc3Qgc3RydWN0IHY0bDJfc3ViZGV2X3BhZF9vcHMgKnZpZGVvOworfTsKKworVGhlIGNvcmUgb3BzIGFyZSBjb21tb24gdG8gYWxsIHN1YmRldnMsIHRoZSBvdGhlciBjYXRlZ29yaWVzIGFyZSBpbXBsZW1lbnRlZAorZGVwZW5kaW5nIG9uIHRoZSBzdWItZGV2aWNlLiBFLmcuIGEgdmlkZW8gZGV2aWNlIGlzIHVubGlrZWx5IHRvIHN1cHBvcnQgdGhlCithdWRpbyBvcHMgYW5kIHZpY2UgdmVyc2EuCisKK1RoaXMgc2V0dXAgbGltaXRzIHRoZSBudW1iZXIgb2YgZnVuY3Rpb24gcG9pbnRlcnMgd2hpbGUgc3RpbGwgbWFraW5nIGl0IGVhc3kKK3RvIGFkZCBuZXcgb3BzIGFuZCBjYXRlZ29yaWVzLgorCitBIHN1Yi1kZXZpY2UgZHJpdmVyIGluaXRpYWxpemVzIHRoZSB2NGwyX3N1YmRldiBzdHJ1Y3QgdXNpbmc6CisKKwl2NGwyX3N1YmRldl9pbml0KHNkLCAmb3BzKTsKKworQWZ0ZXJ3YXJkcyB5b3UgbmVlZCB0byBpbml0aWFsaXplIHN1YmRldi0+bmFtZSB3aXRoIGEgdW5pcXVlIG5hbWUgYW5kIHNldCB0aGUKK21vZHVsZSBvd25lci4gVGhpcyBpcyBkb25lIGZvciB5b3UgaWYgeW91IHVzZSB0aGUgaTJjIGhlbHBlciBmdW5jdGlvbnMuCisKK0lmIGludGVncmF0aW9uIHdpdGggdGhlIG1lZGlhIGZyYW1ld29yayBpcyBuZWVkZWQsIHlvdSBtdXN0IGluaXRpYWxpemUgdGhlCittZWRpYV9lbnRpdHkgc3RydWN0IGVtYmVkZGVkIGluIHRoZSB2NGwyX3N1YmRldiBzdHJ1Y3QgKGVudGl0eSBmaWVsZCkgYnkKK2NhbGxpbmcgbWVkaWFfZW50aXR5X2luaXQoKToKKworCXN0cnVjdCBtZWRpYV9wYWQgKnBhZHMgPSAmbXlfc2QtPnBhZHM7CisJaW50IGVycjsKKworCWVyciA9IG1lZGlhX2VudGl0eV9pbml0KCZzZC0+ZW50aXR5LCBucGFkcywgcGFkcywgMCk7CisKK1RoZSBwYWRzIGFycmF5IG11c3QgaGF2ZSBiZWVuIHByZXZpb3VzbHkgaW5pdGlhbGl6ZWQuIFRoZXJlIGlzIG5vIG5lZWQgdG8KK21hbnVhbGx5IHNldCB0aGUgc3RydWN0IG1lZGlhX2VudGl0eSB0eXBlIGFuZCBuYW1lIGZpZWxkcywgYnV0IHRoZSByZXZpc2lvbgorZmllbGQgbXVzdCBiZSBpbml0aWFsaXplZCBpZiBuZWVkZWQuCisKK0EgcmVmZXJlbmNlIHRvIHRoZSBlbnRpdHkgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGFjcXVpcmVkL3JlbGVhc2VkIHdoZW4gdGhlCitzdWJkZXYgZGV2aWNlIG5vZGUgKGlmIGFueSkgaXMgb3BlbmVkL2Nsb3NlZC4KKworRG9uJ3QgZm9yZ2V0IHRvIGNsZWFudXAgdGhlIG1lZGlhIGVudGl0eSBiZWZvcmUgdGhlIHN1Yi1kZXZpY2UgaXMgZGVzdHJveWVkOgorCisJbWVkaWFfZW50aXR5X2NsZWFudXAoJnNkLT5lbnRpdHkpOworCitJZiB0aGUgc3ViZGV2IGRyaXZlciBpbnRlbmRzIHRvIHByb2Nlc3MgdmlkZW8gYW5kIGludGVncmF0ZSB3aXRoIHRoZSBtZWRpYQorZnJhbWV3b3JrLCBpdCBtdXN0IGltcGxlbWVudCBmb3JtYXQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5IHVzaW5nCit2NGwyX3N1YmRldl9wYWRfb3BzIGluc3RlYWQgb2YgdjRsMl9zdWJkZXZfdmlkZW9fb3BzLgorCitJbiB0aGF0IGNhc2UsIHRoZSBzdWJkZXYgZHJpdmVyIG1heSBzZXQgdGhlIGxpbmtfdmFsaWRhdGUgZmllbGQgdG8gcHJvdmlkZQoraXRzIG93biBsaW5rIHZhbGlkYXRpb24gZnVuY3Rpb24uIFRoZSBsaW5rIHZhbGlkYXRpb24gZnVuY3Rpb24gaXMgY2FsbGVkIGZvcgorZXZlcnkgbGluayBpbiB0aGUgcGlwZWxpbmUgd2hlcmUgYm90aCBvZiB0aGUgZW5kcyBvZiB0aGUgbGlua3MgYXJlIFY0TDIKK3N1Yi1kZXZpY2VzLiBUaGUgZHJpdmVyIGlzIHN0aWxsIHJlc3BvbnNpYmxlIGZvciB2YWxpZGF0aW5nIHRoZSBjb3JyZWN0bmVzcworb2YgdGhlIGZvcm1hdCBjb25maWd1cmF0aW9uIGJldHdlZW4gc3ViLWRldmljZXMgYW5kIHZpZGVvIG5vZGVzLgorCitJZiBsaW5rX3ZhbGlkYXRlIG9wIGlzIG5vdCBzZXQsIHRoZSBkZWZhdWx0IGZ1bmN0aW9uCit2NGwyX3N1YmRldl9saW5rX3ZhbGlkYXRlX2RlZmF1bHQoKSBpcyB1c2VkIGluc3RlYWQuIFRoaXMgZnVuY3Rpb24gZW5zdXJlcwordGhhdCB3aWR0aCwgaGVpZ2h0IGFuZCB0aGUgbWVkaWEgYnVzIHBpeGVsIGNvZGUgYXJlIGVxdWFsIG9uIGJvdGggc291cmNlIGFuZAorc2luayBvZiB0aGUgbGluay4gU3ViZGV2IGRyaXZlcnMgYXJlIGFsc28gZnJlZSB0byB1c2UgdGhpcyBmdW5jdGlvbiB0bworcGVyZm9ybSB0aGUgY2hlY2tzIG1lbnRpb25lZCBhYm92ZSBpbiBhZGRpdGlvbiB0byB0aGVpciBvd24gY2hlY2tzLgorCitUaGVyZSBhcmUgY3VycmVudGx5IHR3byB3YXlzIHRvIHJlZ2lzdGVyIHN1YmRldmljZXMgd2l0aCB0aGUgVjRMMiBjb3JlLiBUaGUKK2ZpcnN0ICh0cmFkaXRpb25hbCkgcG9zc2liaWxpdHkgaXMgdG8gaGF2ZSBzdWJkZXZpY2VzIHJlZ2lzdGVyZWQgYnkgYnJpZGdlCitkcml2ZXJzLiBUaGlzIGNhbiBiZSBkb25lIHdoZW4gdGhlIGJyaWRnZSBkcml2ZXIgaGFzIHRoZSBjb21wbGV0ZSBpbmZvcm1hdGlvbgorYWJvdXQgc3ViZGV2aWNlcyBjb25uZWN0ZWQgdG8gaXQgYW5kIGtub3dzIGV4YWN0bHkgd2hlbiB0byByZWdpc3RlciB0aGVtLiBUaGlzCitpcyB0eXBpY2FsbHkgdGhlIGNhc2UgZm9yIGludGVybmFsIHN1YmRldmljZXMsIGxpa2UgdmlkZW8gZGF0YSBwcm9jZXNzaW5nIHVuaXRzCit3aXRoaW4gU29DcyBvciBjb21wbGV4IFBDSShlKSBib2FyZHMsIGNhbWVyYSBzZW5zb3JzIGluIFVTQiBjYW1lcmFzIG9yIGNvbm5lY3RlZAordG8gU29Dcywgd2hpY2ggcGFzcyBpbmZvcm1hdGlvbiBhYm91dCB0aGVtIHRvIGJyaWRnZSBkcml2ZXJzLCB1c3VhbGx5IGluIHRoZWlyCitwbGF0Zm9ybSBkYXRhLgorCitUaGVyZSBhcmUgaG93ZXZlciBhbHNvIHNpdHVhdGlvbnMgd2hlcmUgc3ViZGV2aWNlcyBoYXZlIHRvIGJlIHJlZ2lzdGVyZWQKK2FzeW5jaHJvbm91c2x5IHRvIGJyaWRnZSBkZXZpY2VzLiBBbiBleGFtcGxlIG9mIHN1Y2ggYSBjb25maWd1cmF0aW9uIGlzIGEgRGV2aWNlCitUcmVlIGJhc2VkIHN5c3RlbSB3aGVyZSBpbmZvcm1hdGlvbiBhYm91dCBzdWJkZXZpY2VzIGlzIG1hZGUgYXZhaWxhYmxlIHRvIHRoZQorc3lzdGVtIGluZGVwZW5kZW50bHkgZnJvbSB0aGUgYnJpZGdlIGRldmljZXMsIGUuZy4gd2hlbiBzdWJkZXZpY2VzIGFyZSBkZWZpbmVkCitpbiBEVCBhcyBJMkMgZGV2aWNlIG5vZGVzLiBUaGUgQVBJIHVzZWQgaW4gdGhpcyBzZWNvbmQgY2FzZSBpcyBkZXNjcmliZWQgZnVydGhlcgorYmVsb3cuCisKK1VzaW5nIG9uZSBvciB0aGUgb3RoZXIgcmVnaXN0cmF0aW9uIG1ldGhvZCBvbmx5IGFmZmVjdHMgdGhlIHByb2JpbmcgcHJvY2VzcywgdGhlCitydW4tdGltZSBicmlkZ2Utc3ViZGV2aWNlIGludGVyYWN0aW9uIGlzIGluIGJvdGggY2FzZXMgdGhlIHNhbWUuCisKK0luIHRoZSBzeW5jaHJvbm91cyBjYXNlIGEgZGV2aWNlIChicmlkZ2UpIGRyaXZlciBuZWVkcyB0byByZWdpc3RlciB0aGUKK3Y0bDJfc3ViZGV2IHdpdGggdGhlIHY0bDJfZGV2aWNlOgorCisJaW50IGVyciA9IHY0bDJfZGV2aWNlX3JlZ2lzdGVyX3N1YmRldih2NGwyX2Rldiwgc2QpOworCitUaGlzIGNhbiBmYWlsIGlmIHRoZSBzdWJkZXYgbW9kdWxlIGRpc2FwcGVhcmVkIGJlZm9yZSBpdCBjb3VsZCBiZSByZWdpc3RlcmVkLgorQWZ0ZXIgdGhpcyBmdW5jdGlvbiB3YXMgY2FsbGVkIHN1Y2Nlc3NmdWxseSB0aGUgc3ViZGV2LT5kZXYgZmllbGQgcG9pbnRzIHRvCit0aGUgdjRsMl9kZXZpY2UuCisKK0lmIHRoZSB2NGwyX2RldmljZSBwYXJlbnQgZGV2aWNlIGhhcyBhIG5vbi1OVUxMIG1kZXYgZmllbGQsIHRoZSBzdWItZGV2aWNlCitlbnRpdHkgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVyZWQgd2l0aCB0aGUgbWVkaWEgZGV2aWNlLgorCitZb3UgY2FuIHVucmVnaXN0ZXIgYSBzdWItZGV2aWNlIHVzaW5nOgorCisJdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpOworCitBZnRlcndhcmRzIHRoZSBzdWJkZXYgbW9kdWxlIGNhbiBiZSB1bmxvYWRlZCBhbmQgc2QtPmRldiA9PSBOVUxMLgorCitZb3UgY2FuIGNhbGwgYW4gb3BzIGZ1bmN0aW9uIGVpdGhlciBkaXJlY3RseToKKworCWVyciA9IHNkLT5vcHMtPmNvcmUtPmdfc3RkKHNkLCAmbm9ybSk7CisKK2J1dCBpdCBpcyBiZXR0ZXIgYW5kIGVhc2llciB0byB1c2UgdGhpcyBtYWNybzoKKworCWVyciA9IHY0bDJfc3ViZGV2X2NhbGwoc2QsIGNvcmUsIGdfc3RkLCAmbm9ybSk7CisKK1RoZSBtYWNybyB3aWxsIHRvIHRoZSByaWdodCBOVUxMIHBvaW50ZXIgY2hlY2tzIGFuZCByZXR1cm5zIC1FTk9ERVYgaWYgc3ViZGV2CitpcyBOVUxMLCAtRU5PSU9DVExDTUQgaWYgZWl0aGVyIHN1YmRldi0+Y29yZSBvciBzdWJkZXYtPmNvcmUtPmdfc3RkIGlzCitOVUxMLCBvciB0aGUgYWN0dWFsIHJlc3VsdCBvZiB0aGUgc3ViZGV2LT5vcHMtPmNvcmUtPmdfc3RkIG9wcy4KKworSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjYWxsIGFsbCBvciBhIHN1YnNldCBvZiB0aGUgc3ViLWRldmljZXM6CisKKwl2NGwyX2RldmljZV9jYWxsX2FsbCh2NGwyX2RldiwgMCwgY29yZSwgZ19zdGQsICZub3JtKTsKKworQW55IHN1YmRldiB0aGF0IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcHMgaXMgc2tpcHBlZCBhbmQgZXJyb3IgcmVzdWx0cyBhcmUKK2lnbm9yZWQuIElmIHlvdSB3YW50IHRvIGNoZWNrIGZvciBlcnJvcnMgdXNlIHRoaXM6CisKKwllcnIgPSB2NGwyX2RldmljZV9jYWxsX3VudGlsX2Vycih2NGwyX2RldiwgMCwgY29yZSwgZ19zdGQsICZub3JtKTsKKworQW55IGVycm9yIGV4Y2VwdCAtRU5PSU9DVExDTUQgd2lsbCBleGl0IHRoZSBsb29wIHdpdGggdGhhdCBlcnJvci4gSWYgbm8KK2Vycm9ycyAoZXhjZXB0IC1FTk9JT0NUTENNRCkgb2NjdXJyZWQsIHRoZW4gMCBpcyByZXR1cm5lZC4KKworVGhlIHNlY29uZCBhcmd1bWVudCB0byBib3RoIGNhbGxzIGlzIGEgZ3JvdXAgSUQuIElmIDAsIHRoZW4gYWxsIHN1YmRldnMgYXJlCitjYWxsZWQuIElmIG5vbi16ZXJvLCB0aGVuIG9ubHkgdGhvc2Ugd2hvc2UgZ3JvdXAgSUQgbWF0Y2ggdGhhdCB2YWx1ZSB3aWxsCitiZSBjYWxsZWQuIEJlZm9yZSBhIGJyaWRnZSBkcml2ZXIgcmVnaXN0ZXJzIGEgc3ViZGV2IGl0IGNhbiBzZXQgc2QtPmdycF9pZAordG8gd2hhdGV2ZXIgdmFsdWUgaXQgd2FudHMgKGl0J3MgMCBieSBkZWZhdWx0KS4gVGhpcyB2YWx1ZSBpcyBvd25lZCBieSB0aGUKK2JyaWRnZSBkcml2ZXIgYW5kIHRoZSBzdWItZGV2aWNlIGRyaXZlciB3aWxsIG5ldmVyIG1vZGlmeSBvciB1c2UgaXQuCisKK1RoZSBncm91cCBJRCBnaXZlcyB0aGUgYnJpZGdlIGRyaXZlciBtb3JlIGNvbnRyb2wgaG93IGNhbGxiYWNrcyBhcmUgY2FsbGVkLgorRm9yIGV4YW1wbGUsIHRoZXJlIG1heSBiZSBtdWx0aXBsZSBhdWRpbyBjaGlwcyBvbiBhIGJvYXJkLCBlYWNoIGNhcGFibGUgb2YKK2NoYW5naW5nIHRoZSB2b2x1bWUuIEJ1dCB1c3VhbGx5IG9ubHkgb25lIHdpbGwgYWN0dWFsbHkgYmUgdXNlZCB3aGVuIHRoZQordXNlciB3YW50IHRvIGNoYW5nZSB0aGUgdm9sdW1lLiBZb3UgY2FuIHNldCB0aGUgZ3JvdXAgSUQgZm9yIHRoYXQgc3ViZGV2IHRvCitlLmcuIEFVRElPX0NPTlRST0xMRVIgYW5kIHNwZWNpZnkgdGhhdCBhcyB0aGUgZ3JvdXAgSUQgdmFsdWUgd2hlbiBjYWxsaW5nCit2NGwyX2RldmljZV9jYWxsX2FsbCgpLiBUaGF0IGVuc3VyZXMgdGhhdCBpdCB3aWxsIG9ubHkgZ28gdG8gdGhlIHN1YmRldgordGhhdCBuZWVkcyBpdC4KKworSWYgdGhlIHN1Yi1kZXZpY2UgbmVlZHMgdG8gbm90aWZ5IGl0cyB2NGwyX2RldmljZSBwYXJlbnQgb2YgYW4gZXZlbnQsIHRoZW4KK2l0IGNhbiBjYWxsIHY0bDJfc3ViZGV2X25vdGlmeShzZCwgbm90aWZpY2F0aW9uLCBhcmcpLiBUaGlzIG1hY3JvIGNoZWNrcword2hldGhlciB0aGVyZSBpcyBhIG5vdGlmeSgpIGNhbGxiYWNrIGRlZmluZWQgYW5kIHJldHVybnMgLUVOT0RFViBpZiBub3QuCitPdGhlcndpc2UgdGhlIHJlc3VsdCBvZiB0aGUgbm90aWZ5KCkgY2FsbCBpcyByZXR1cm5lZC4KKworVGhlIGFkdmFudGFnZSBvZiB1c2luZyB2NGwyX3N1YmRldiBpcyB0aGF0IGl0IGlzIGEgZ2VuZXJpYyBzdHJ1Y3QgYW5kIGRvZXMKK25vdCBjb250YWluIGFueSBrbm93bGVkZ2UgYWJvdXQgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUuIFNvIGEgZHJpdmVyIG1pZ2h0Citjb250YWluIHNldmVyYWwgc3ViZGV2cyB0aGF0IHVzZSBhbiBJMkMgYnVzLCBidXQgYWxzbyBhIHN1YmRldiB0aGF0IGlzCitjb250cm9sbGVkIHRocm91Z2ggR1BJTyBwaW5zLiBUaGlzIGRpc3RpbmN0aW9uIGlzIG9ubHkgcmVsZXZhbnQgd2hlbiBzZXR0aW5nCit1cCB0aGUgZGV2aWNlLCBidXQgb25jZSB0aGUgc3ViZGV2IGlzIHJlZ2lzdGVyZWQgaXQgaXMgY29tcGxldGVseSB0cmFuc3BhcmVudC4KKworCitJbiB0aGUgYXN5bmNocm9ub3VzIGNhc2Ugc3ViZGV2aWNlIHByb2JpbmcgY2FuIGJlIGludm9rZWQgaW5kZXBlbmRlbnRseSBvZiB0aGUKK2JyaWRnZSBkcml2ZXIgYXZhaWxhYmlsaXR5LiBUaGUgc3ViZGV2aWNlIGRyaXZlciB0aGVuIGhhcyB0byB2ZXJpZnkgd2hldGhlciBhbGwKK3RoZSByZXF1aXJlbWVudHMgZm9yIGEgc3VjY2Vzc2Z1bCBwcm9iaW5nIGFyZSBzYXRpc2ZpZWQuIFRoaXMgY2FuIGluY2x1ZGUgYQorY2hlY2sgZm9yIGEgbWFzdGVyIGNsb2NrIGF2YWlsYWJpbGl0eS4gSWYgYW55IG9mIHRoZSBjb25kaXRpb25zIGFyZW4ndCBzYXRpc2ZpZWQKK3RoZSBkcml2ZXIgbWlnaHQgZGVjaWRlIHRvIHJldHVybiAtRVBST0JFX0RFRkVSIHRvIHJlcXVlc3QgZnVydGhlciByZXByb2JpbmcKK2F0dGVtcHRzLiBPbmNlIGFsbCBjb25kaXRpb25zIGFyZSBtZXQgdGhlIHN1YmRldmljZSBzaGFsbCBiZSByZWdpc3RlcmVkIHVzaW5nCit0aGUgdjRsMl9hc3luY19yZWdpc3Rlcl9zdWJkZXYoKSBmdW5jdGlvbi4gVW5yZWdpc3RyYXRpb24gaXMgcGVyZm9ybWVkIHVzaW5nCit0aGUgdjRsMl9hc3luY191bnJlZ2lzdGVyX3N1YmRldigpIGNhbGwuIFN1YmRldmljZXMgcmVnaXN0ZXJlZCB0aGlzIHdheSBhcmUKK3N0b3JlZCBpbiBhIGdsb2JhbCBsaXN0IG9mIHN1YmRldmljZXMsIHJlYWR5IHRvIGJlIHBpY2tlZCB1cCBieSBicmlkZ2UgZHJpdmVycy4KKworQnJpZGdlIGRyaXZlcnMgaW4gdHVybiBoYXZlIHRvIHJlZ2lzdGVyIGEgbm90aWZpZXIgb2JqZWN0IHdpdGggYW4gYXJyYXkgb2YKK3N1YmRldmljZSBkZXNjcmlwdG9ycyB0aGF0IHRoZSBicmlkZ2UgZGV2aWNlIG5lZWRzIGZvciBpdHMgb3BlcmF0aW9uLiBUaGlzIGlzCitwZXJmb3JtZWQgdXNpbmcgdGhlIHY0bDJfYXN5bmNfbm90aWZpZXJfcmVnaXN0ZXIoKSBjYWxsLiBUbyB1bnJlZ2lzdGVyIHRoZQorbm90aWZpZXIgdGhlIGRyaXZlciBoYXMgdG8gY2FsbCB2NGwyX2FzeW5jX25vdGlmaWVyX3VucmVnaXN0ZXIoKS4gVGhlIGZvcm1lciBvZgordGhlIHR3byBmdW5jdGlvbnMgdGFrZXMgdHdvIGFyZ3VtZW50czogYSBwb2ludGVyIHRvIHN0cnVjdCB2NGwyX2RldmljZSBhbmQgYQorcG9pbnRlciB0byBzdHJ1Y3QgdjRsMl9hc3luY19ub3RpZmllci4gVGhlIGxhdHRlciBjb250YWlucyBhIHBvaW50ZXIgdG8gYW4gYXJyYXkKK29mIHBvaW50ZXJzIHRvIHN1YmRldmljZSBkZXNjcmlwdG9ycyBvZiB0eXBlIHN0cnVjdCB2NGwyX2FzeW5jX3N1YmRldiB0eXBlLiBUaGUKK1Y0TDIgY29yZSB3aWxsIHRoZW4gdXNlIHRoZXNlIGRlc2NyaXB0b3JzIHRvIG1hdGNoIGFzeW5jaHJvbm91c2x5IHJlZ2lzdGVyZWQKK3N1YmRldmljZXMgdG8gdGhlbS4gSWYgYSBtYXRjaCBpcyBkZXRlY3RlZCB0aGUgLmJvdW5kKCkgbm90aWZpZXIgY2FsbGJhY2sgaXMKK2NhbGxlZC4gQWZ0ZXIgYWxsIHN1YmRldmljZXMgaGF2ZSBiZWVuIGxvY2F0ZWQgdGhlIC5jb21wbGV0ZSgpIGNhbGxiYWNrIGlzCitjYWxsZWQuIFdoZW4gYSBzdWJkZXZpY2UgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzeXN0ZW0gdGhlIC51bmJpbmQoKSBtZXRob2QgaXMKK2NhbGxlZC4gQWxsIHRocmVlIGNhbGxiYWNrcyBhcmUgb3B0aW9uYWwuCisKKworVjRMMiBzdWItZGV2aWNlIHVzZXJzcGFjZSBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Jlc2lkZSBleHBvc2luZyBhIGtlcm5lbCBBUEkgdGhyb3VnaCB0aGUgdjRsMl9zdWJkZXZfb3BzIHN0cnVjdHVyZSwgVjRMMgorc3ViLWRldmljZXMgY2FuIGFsc28gYmUgY29udHJvbGxlZCBkaXJlY3RseSBieSB1c2Vyc3BhY2UgYXBwbGljYXRpb25zLgorCitEZXZpY2Ugbm9kZXMgbmFtZWQgdjRsLXN1YmRldlggY2FuIGJlIGNyZWF0ZWQgaW4gL2RldiB0byBhY2Nlc3Mgc3ViLWRldmljZXMKK2RpcmVjdGx5LiBJZiBhIHN1Yi1kZXZpY2Ugc3VwcG9ydHMgZGlyZWN0IHVzZXJzcGFjZSBjb25maWd1cmF0aW9uIGl0IG11c3Qgc2V0Cit0aGUgVjRMMl9TVUJERVZfRkxfSEFTX0RFVk5PREUgZmxhZyBiZWZvcmUgYmVpbmcgcmVnaXN0ZXJlZC4KKworQWZ0ZXIgcmVnaXN0ZXJpbmcgc3ViLWRldmljZXMsIHRoZSB2NGwyX2RldmljZSBkcml2ZXIgY2FuIGNyZWF0ZSBkZXZpY2Ugbm9kZXMKK2ZvciBhbGwgcmVnaXN0ZXJlZCBzdWItZGV2aWNlcyBtYXJrZWQgd2l0aCBWNEwyX1NVQkRFVl9GTF9IQVNfREVWTk9ERSBieSBjYWxsaW5nCit2NGwyX2RldmljZV9yZWdpc3Rlcl9zdWJkZXZfbm9kZXMoKS4gVGhvc2UgZGV2aWNlIG5vZGVzIHdpbGwgYmUgYXV0b21hdGljYWxseQorcmVtb3ZlZCB3aGVuIHN1Yi1kZXZpY2VzIGFyZSB1bnJlZ2lzdGVyZWQuCisKK1RoZSBkZXZpY2Ugbm9kZSBoYW5kbGVzIGEgc3Vic2V0IG9mIHRoZSBWNEwyIEFQSS4KKworVklESU9DX1FVRVJZQ1RSTAorVklESU9DX1FVRVJZTUVOVQorVklESU9DX0dfQ1RSTAorVklESU9DX1NfQ1RSTAorVklESU9DX0dfRVhUX0NUUkxTCitWSURJT0NfU19FWFRfQ1RSTFMKK1ZJRElPQ19UUllfRVhUX0NUUkxTCisKKwlUaGUgY29udHJvbHMgaW9jdGxzIGFyZSBpZGVudGljYWwgdG8gdGhlIG9uZXMgZGVmaW5lZCBpbiBWNEwyLiBUaGV5CisJYmVoYXZlIGlkZW50aWNhbGx5LCB3aXRoIHRoZSBvbmx5IGV4Y2VwdGlvbiB0aGF0IHRoZXkgZGVhbCBvbmx5IHdpdGgKKwljb250cm9scyBpbXBsZW1lbnRlZCBpbiB0aGUgc3ViLWRldmljZS4gRGVwZW5kaW5nIG9uIHRoZSBkcml2ZXIsIHRob3NlCisJY29udHJvbHMgY2FuIGJlIGFsc28gYmUgYWNjZXNzZWQgdGhyb3VnaCBvbmUgKG9yIHNldmVyYWwpIFY0TDIgZGV2aWNlCisJbm9kZXMuCisKK1ZJRElPQ19EUUVWRU5UCitWSURJT0NfU1VCU0NSSUJFX0VWRU5UCitWSURJT0NfVU5TVUJTQ1JJQkVfRVZFTlQKKworCVRoZSBldmVudHMgaW9jdGxzIGFyZSBpZGVudGljYWwgdG8gdGhlIG9uZXMgZGVmaW5lZCBpbiBWNEwyLiBUaGV5CisJYmVoYXZlIGlkZW50aWNhbGx5LCB3aXRoIHRoZSBvbmx5IGV4Y2VwdGlvbiB0aGF0IHRoZXkgZGVhbCBvbmx5IHdpdGgKKwlldmVudHMgZ2VuZXJhdGVkIGJ5IHRoZSBzdWItZGV2aWNlLiBEZXBlbmRpbmcgb24gdGhlIGRyaXZlciwgdGhvc2UKKwlldmVudHMgY2FuIGFsc28gYmUgcmVwb3J0ZWQgYnkgb25lIChvciBzZXZlcmFsKSBWNEwyIGRldmljZSBub2Rlcy4KKworCVN1Yi1kZXZpY2UgZHJpdmVycyB0aGF0IHdhbnQgdG8gdXNlIGV2ZW50cyBuZWVkIHRvIHNldCB0aGUKKwlWNEwyX1NVQkRFVl9VU0VTX0VWRU5UUyB2NGwyX3N1YmRldjo6ZmxhZ3MgYW5kIGluaXRpYWxpemUKKwl2NGwyX3N1YmRldjo6bmV2ZW50cyB0byBldmVudHMgcXVldWUgZGVwdGggYmVmb3JlIHJlZ2lzdGVyaW5nIHRoZQorCXN1Yi1kZXZpY2UuIEFmdGVyIHJlZ2lzdHJhdGlvbiBldmVudHMgY2FuIGJlIHF1ZXVlZCBhcyB1c3VhbCBvbiB0aGUKKwl2NGwyX3N1YmRldjo6ZGV2bm9kZSBkZXZpY2Ugbm9kZS4KKworCVRvIHByb3Blcmx5IHN1cHBvcnQgZXZlbnRzLCB0aGUgcG9sbCgpIGZpbGUgb3BlcmF0aW9uIGlzIGFsc28KKwlpbXBsZW1lbnRlZC4KKworUHJpdmF0ZSBpb2N0bHMKKworCUFsbCBpb2N0bHMgbm90IGluIHRoZSBhYm92ZSBsaXN0IGFyZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIHN1Yi1kZXZpY2UKKwlkcml2ZXIgdGhyb3VnaCB0aGUgY29yZTo6aW9jdGwgb3BlcmF0aW9uLgorCisKK0kyQyBzdWItZGV2aWNlIGRyaXZlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworU2luY2UgdGhlc2UgZHJpdmVycyBhcmUgc28gY29tbW9uLCBzcGVjaWFsIGhlbHBlciBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB0bworZWFzZSB0aGUgdXNlIG9mIHRoZXNlIGRyaXZlcnMgKHY0bDItY29tbW9uLmgpLgorCitUaGUgcmVjb21tZW5kZWQgbWV0aG9kIG9mIGFkZGluZyB2NGwyX3N1YmRldiBzdXBwb3J0IHRvIGFuIEkyQyBkcml2ZXIgaXMgdG8KK2VtYmVkIHRoZSB2NGwyX3N1YmRldiBzdHJ1Y3QgaW50byB0aGUgc3RhdGUgc3RydWN0IHRoYXQgaXMgY3JlYXRlZCBmb3IgZWFjaAorSTJDIGRldmljZSBpbnN0YW5jZS4gVmVyeSBzaW1wbGUgZGV2aWNlcyBoYXZlIG5vIHN0YXRlIHN0cnVjdCBhbmQgaW4gdGhhdCBjYXNlCit5b3UgY2FuIGp1c3QgY3JlYXRlIGEgdjRsMl9zdWJkZXYgZGlyZWN0bHkuCisKK0EgdHlwaWNhbCBzdGF0ZSBzdHJ1Y3Qgd291bGQgbG9vayBsaWtlIHRoaXMgKHdoZXJlICdjaGlwbmFtZScgaXMgcmVwbGFjZWQgYnkKK3RoZSBuYW1lIG9mIHRoZSBjaGlwKToKKworc3RydWN0IGNoaXBuYW1lX3N0YXRlIHsKKwlzdHJ1Y3QgdjRsMl9zdWJkZXYgc2Q7CisJLi4uICAvKiBhZGRpdGlvbmFsIHN0YXRlIGZpZWxkcyAqLworfTsKKworSW5pdGlhbGl6ZSB0aGUgdjRsMl9zdWJkZXYgc3RydWN0IGFzIGZvbGxvd3M6CisKKwl2NGwyX2kyY19zdWJkZXZfaW5pdCgmc3RhdGUtPnNkLCBjbGllbnQsIHN1YmRldl9vcHMpOworCitUaGlzIGZ1bmN0aW9uIHdpbGwgZmlsbCBpbiBhbGwgdGhlIGZpZWxkcyBvZiB2NGwyX3N1YmRldiBhbmQgZW5zdXJlIHRoYXQgdGhlCit2NGwyX3N1YmRldiBhbmQgaTJjX2NsaWVudCBib3RoIHBvaW50IHRvIG9uZSBhbm90aGVyLgorCitZb3Ugc2hvdWxkIGFsc28gYWRkIGEgaGVscGVyIGlubGluZSBmdW5jdGlvbiB0byBnbyBmcm9tIGEgdjRsMl9zdWJkZXYgcG9pbnRlcgordG8gYSBjaGlwbmFtZV9zdGF0ZSBzdHJ1Y3Q6CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGNoaXBuYW1lX3N0YXRlICp0b19zdGF0ZShzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkKQoreworCXJldHVybiBjb250YWluZXJfb2Yoc2QsIHN0cnVjdCBjaGlwbmFtZV9zdGF0ZSwgc2QpOworfQorCitVc2UgdGhpcyB0byBnbyBmcm9tIHRoZSB2NGwyX3N1YmRldiBzdHJ1Y3QgdG8gdGhlIGkyY19jbGllbnQgc3RydWN0OgorCisJc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IHY0bDJfZ2V0X3N1YmRldmRhdGEoc2QpOworCitBbmQgdGhpcyB0byBnbyBmcm9tIGFuIGkyY19jbGllbnQgdG8gYSB2NGwyX3N1YmRldiBzdHJ1Y3Q6CisKKwlzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CisKK01ha2Ugc3VyZSB0byBjYWxsIHY0bDJfZGV2aWNlX3VucmVnaXN0ZXJfc3ViZGV2KHNkKSB3aGVuIHRoZSByZW1vdmUoKSBjYWxsYmFjaworaXMgY2FsbGVkLiBUaGlzIHdpbGwgdW5yZWdpc3RlciB0aGUgc3ViLWRldmljZSBmcm9tIHRoZSBicmlkZ2UgZHJpdmVyLiBJdCBpcworc2FmZSB0byBjYWxsIHRoaXMgZXZlbiBpZiB0aGUgc3ViLWRldmljZSB3YXMgbmV2ZXIgcmVnaXN0ZXJlZC4KKworWW91IG5lZWQgdG8gZG8gdGhpcyBiZWNhdXNlIHdoZW4gdGhlIGJyaWRnZSBkcml2ZXIgZGVzdHJveXMgdGhlIGkyYyBhZGFwdGVyCit0aGUgcmVtb3ZlKCkgY2FsbGJhY2tzIGFyZSBjYWxsZWQgb2YgdGhlIGkyYyBkZXZpY2VzIG9uIHRoYXQgYWRhcHRlci4KK0FmdGVyIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgdjRsMl9zdWJkZXYgc3RydWN0dXJlcyBhcmUgaW52YWxpZCwgc28gdGhleQoraGF2ZSB0byBiZSB1bnJlZ2lzdGVyZWQgZmlyc3QuIENhbGxpbmcgdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcl9zdWJkZXYoc2QpCitmcm9tIHRoZSByZW1vdmUoKSBjYWxsYmFjayBlbnN1cmVzIHRoYXQgdGhpcyBpcyBhbHdheXMgZG9uZSBjb3JyZWN0bHkuCisKKworVGhlIGJyaWRnZSBkcml2ZXIgYWxzbyBoYXMgc29tZSBoZWxwZXIgZnVuY3Rpb25zIGl0IGNhbiB1c2U6CisKK3N0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSB2NGwyX2kyY19uZXdfc3ViZGV2KHY0bDJfZGV2LCBhZGFwdGVyLAorCSAgICAgICAibW9kdWxlX2ZvbyIsICJjaGlwaWQiLCAweDM2LCBOVUxMKTsKKworVGhpcyBsb2FkcyB0aGUgZ2l2ZW4gbW9kdWxlIChjYW4gYmUgTlVMTCBpZiBubyBtb2R1bGUgbmVlZHMgdG8gYmUgbG9hZGVkKSBhbmQKK2NhbGxzIGkyY19uZXdfZGV2aWNlKCkgd2l0aCB0aGUgZ2l2ZW4gaTJjX2FkYXB0ZXIgYW5kIGNoaXAvYWRkcmVzcyBhcmd1bWVudHMuCitJZiBhbGwgZ29lcyB3ZWxsLCB0aGVuIGl0IHJlZ2lzdGVycyB0aGUgc3ViZGV2IHdpdGggdGhlIHY0bDJfZGV2aWNlLgorCitZb3UgY2FuIGFsc28gdXNlIHRoZSBsYXN0IGFyZ3VtZW50IG9mIHY0bDJfaTJjX25ld19zdWJkZXYoKSB0byBwYXNzIGFuIGFycmF5CitvZiBwb3NzaWJsZSBJMkMgYWRkcmVzc2VzIHRoYXQgaXQgc2hvdWxkIHByb2JlLiBUaGVzZSBwcm9iZSBhZGRyZXNzZXMgYXJlCitvbmx5IHVzZWQgaWYgdGhlIHByZXZpb3VzIGFyZ3VtZW50IGlzIDAuIEEgbm9uLXplcm8gYXJndW1lbnQgbWVhbnMgdGhhdCB5b3UKK2tub3cgdGhlIGV4YWN0IGkyYyBhZGRyZXNzIHNvIGluIHRoYXQgY2FzZSBubyBwcm9iaW5nIHdpbGwgdGFrZSBwbGFjZS4KKworQm90aCBmdW5jdGlvbnMgcmV0dXJuIE5VTEwgaWYgc29tZXRoaW5nIHdlbnQgd3JvbmcuCisKK05vdGUgdGhhdCB0aGUgY2hpcGlkIHlvdSBwYXNzIHRvIHY0bDJfaTJjX25ld19zdWJkZXYoKSBpcyB1c3VhbGx5Cit0aGUgc2FtZSBhcyB0aGUgbW9kdWxlIG5hbWUuIEl0IGFsbG93cyB5b3UgdG8gc3BlY2lmeSBhIGNoaXAgdmFyaWFudCwgZS5nLgorInNhYTcxMTQiIG9yICJzYWE3MTE1Ii4gSW4gZ2VuZXJhbCB0aG91Z2ggdGhlIGkyYyBkcml2ZXIgYXV0b2RldGVjdHMgdGhpcy4KK1RoZSB1c2Ugb2YgY2hpcGlkIGlzIHNvbWV0aGluZyB0aGF0IG5lZWRzIHRvIGJlIGxvb2tlZCBhdCBtb3JlIGNsb3NlbHkgYXQgYQorbGF0ZXIgZGF0ZS4gSXQgZGlmZmVycyBiZXR3ZWVuIGkyYyBkcml2ZXJzIGFuZCBhcyBzdWNoIGNhbiBiZSBjb25mdXNpbmcuCitUbyBzZWUgd2hpY2ggY2hpcCB2YXJpYW50cyBhcmUgc3VwcG9ydGVkIHlvdSBjYW4gbG9vayBpbiB0aGUgaTJjIGRyaXZlciBjb2RlCitmb3IgdGhlIGkyY19kZXZpY2VfaWQgdGFibGUuIFRoaXMgbGlzdHMgYWxsIHRoZSBwb3NzaWJpbGl0aWVzLgorCitUaGVyZSBhcmUgdHdvIG1vcmUgaGVscGVyIGZ1bmN0aW9uczoKKwordjRsMl9pMmNfbmV3X3N1YmRldl9jZmc6IHRoaXMgZnVuY3Rpb24gYWRkcyBuZXcgaXJxIGFuZCBwbGF0Zm9ybV9kYXRhCithcmd1bWVudHMgYW5kIGhhcyBib3RoICdhZGRyJyBhbmQgJ3Byb2JlZF9hZGRycycgYXJndW1lbnRzOiBpZiBhZGRyIGlzIG5vdAorMCB0aGVuIHRoYXQgd2lsbCBiZSB1c2VkIChub24tcHJvYmluZyB2YXJpYW50KSwgb3RoZXJ3aXNlIHRoZSBwcm9iZWRfYWRkcnMKK2FyZSBwcm9iZWQuCisKK0ZvciBleGFtcGxlOiB0aGlzIHdpbGwgcHJvYmUgZm9yIGFkZHJlc3MgMHgxMDoKKworc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IHY0bDJfaTJjX25ld19zdWJkZXZfY2ZnKHY0bDJfZGV2LCBhZGFwdGVyLAorCSAgICAgICAibW9kdWxlX2ZvbyIsICJjaGlwaWQiLCAwLCBOVUxMLCAwLCBJMkNfQUREUlMoMHgxMCkpOworCit2NGwyX2kyY19uZXdfc3ViZGV2X2JvYXJkIHVzZXMgYW4gaTJjX2JvYXJkX2luZm8gc3RydWN0IHdoaWNoIGlzIHBhc3NlZAordG8gdGhlIGkyYyBkcml2ZXIgYW5kIHJlcGxhY2VzIHRoZSBpcnEsIHBsYXRmb3JtX2RhdGEgYW5kIGFkZHIgYXJndW1lbnRzLgorCitJZiB0aGUgc3ViZGV2IHN1cHBvcnRzIHRoZSBzX2NvbmZpZyBjb3JlIG9wcywgdGhlbiB0aGF0IG9wIGlzIGNhbGxlZCB3aXRoCit0aGUgaXJxIGFuZCBwbGF0Zm9ybV9kYXRhIGFyZ3VtZW50cyBhZnRlciB0aGUgc3ViZGV2IHdhcyBzZXR1cC4gVGhlIG9sZGVyCit2NGwyX2kyY19uZXdfKHByb2JlZF8pc3ViZGV2IGZ1bmN0aW9ucyB3aWxsIGNhbGwgc19jb25maWcgYXMgd2VsbCwgYnV0IHdpdGgKK2lycSBzZXQgdG8gMCBhbmQgcGxhdGZvcm1fZGF0YSBzZXQgdG8gTlVMTC4KKworc3RydWN0IHZpZGVvX2RldmljZQorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgYWN0dWFsIGRldmljZSBub2RlcyBpbiB0aGUgL2RldiBkaXJlY3RvcnkgYXJlIGNyZWF0ZWQgdXNpbmcgdGhlCit2aWRlb19kZXZpY2Ugc3RydWN0ICh2NGwyLWRldi5oKS4gVGhpcyBzdHJ1Y3QgY2FuIGVpdGhlciBiZSBhbGxvY2F0ZWQKK2R5bmFtaWNhbGx5IG9yIGVtYmVkZGVkIGluIGEgbGFyZ2VyIHN0cnVjdC4KKworVG8gYWxsb2NhdGUgaXQgZHluYW1pY2FsbHkgdXNlOgorCisJc3RydWN0IHZpZGVvX2RldmljZSAqdmRldiA9IHZpZGVvX2RldmljZV9hbGxvYygpOworCisJaWYgKHZkZXYgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwl2ZGV2LT5yZWxlYXNlID0gdmlkZW9fZGV2aWNlX3JlbGVhc2U7CisKK0lmIHlvdSBlbWJlZCBpdCBpbiBhIGxhcmdlciBzdHJ1Y3QsIHRoZW4geW91IG11c3Qgc2V0IHRoZSByZWxlYXNlKCkKK2NhbGxiYWNrIHRvIHlvdXIgb3duIGZ1bmN0aW9uOgorCisJc3RydWN0IHZpZGVvX2RldmljZSAqdmRldiA9ICZteV92ZGV2LT52ZGV2OworCisJdmRldi0+cmVsZWFzZSA9IG15X3ZkZXZfcmVsZWFzZTsKKworVGhlIHJlbGVhc2UgY2FsbGJhY2sgbXVzdCBiZSBzZXQgYW5kIGl0IGlzIGNhbGxlZCB3aGVuIHRoZSBsYXN0IHVzZXIKK29mIHRoZSB2aWRlbyBkZXZpY2UgZXhpdHMuCisKK1RoZSBkZWZhdWx0IHZpZGVvX2RldmljZV9yZWxlYXNlKCkgY2FsbGJhY2sganVzdCBjYWxscyBrZnJlZSB0byBmcmVlIHRoZQorYWxsb2NhdGVkIG1lbW9yeS4KKworVGhlcmUgaXMgYWxzbyBhIHZpZGVvX2RldmljZV9yZWxlYXNlX2VtcHR5KCkgZnVuY3Rpb24gdGhhdCBkb2VzIG5vdGhpbmcKKyhpcyBlbXB0eSkgYW5kIGNhbiBiZSB1c2VkIGlmIHRoZSBzdHJ1Y3QgaXMgZW1iZWRkZWQgYW5kIHRoZXJlIGlzIG5vdGhpbmcKK3RvIGRvIHdoZW4gaXQgaXMgcmVsZWFzZWQuCisKK1lvdSBzaG91bGQgYWxzbyBzZXQgdGhlc2UgZmllbGRzOgorCistIHY0bDJfZGV2OiBtdXN0IGJlIHNldCB0byB0aGUgdjRsMl9kZXZpY2UgcGFyZW50IGRldmljZS4KKworLSBuYW1lOiBzZXQgdG8gc29tZXRoaW5nIGRlc2NyaXB0aXZlIGFuZCB1bmlxdWUuCisKKy0gdmZsX2Rpcjogc2V0IHRoaXMgdG8gVkZMX0RJUl9SWCBmb3IgY2FwdHVyZSBkZXZpY2VzIChWRkxfRElSX1JYIGhhcyB2YWx1ZSAwLAorICBzbyB0aGlzIGlzIG5vcm1hbGx5IGFscmVhZHkgdGhlIGRlZmF1bHQpLCBzZXQgdG8gVkZMX0RJUl9UWCBmb3Igb3V0cHV0CisgIGRldmljZXMgYW5kIFZGTF9ESVJfTTJNIGZvciBtZW0ybWVtIChjb2RlYykgZGV2aWNlcy4KKworLSBmb3BzOiBzZXQgdG8gdGhlIHY0bDJfZmlsZV9vcGVyYXRpb25zIHN0cnVjdC4KKworLSBpb2N0bF9vcHM6IGlmIHlvdSB1c2UgdGhlIHY0bDJfaW9jdGxfb3BzIHRvIHNpbXBsaWZ5IGlvY3RsIG1haW50ZW5hbmNlCisgIChoaWdobHkgcmVjb21tZW5kZWQgdG8gdXNlIHRoaXMgYW5kIGl0IG1pZ2h0IGJlY29tZSBjb21wdWxzb3J5IGluIHRoZQorICBmdXR1cmUhKSwgdGhlbiBzZXQgdGhpcyB0byB5b3VyIHY0bDJfaW9jdGxfb3BzIHN0cnVjdC4gVGhlIHZmbF90eXBlIGFuZAorICB2ZmxfZGlyIGZpZWxkcyBhcmUgdXNlZCB0byBkaXNhYmxlIG9wcyB0aGF0IGRvIG5vdCBtYXRjaCB0aGUgdHlwZS9kaXIKKyAgY29tYmluYXRpb24uIEUuZy4gVkJJIG9wcyBhcmUgZGlzYWJsZWQgZm9yIG5vbi1WQkkgbm9kZXMsIGFuZCBvdXRwdXQgb3BzCisgIGFyZSBkaXNhYmxlZCBmb3IgYSBjYXB0dXJlIGRldmljZS4gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBwcm92aWRlCisgIGp1c3Qgb25lIHY0bDJfaW9jdGxfb3BzIHN0cnVjdCBmb3IgYm90aCB2YmkgYW5kIHZpZGVvIG5vZGVzLgorCistIGxvY2s6IGxlYXZlIHRvIE5VTEwgaWYgeW91IHdhbnQgdG8gZG8gYWxsIHRoZSBsb2NraW5nIGluIHRoZSBkcml2ZXIuCisgIE90aGVyd2lzZSB5b3UgZ2l2ZSBpdCBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3QgbXV0ZXhfbG9jayBhbmQgYmVmb3JlIHRoZQorICB1bmxvY2tlZF9pb2N0bCBmaWxlIG9wZXJhdGlvbiBpcyBjYWxsZWQgdGhpcyBsb2NrIHdpbGwgYmUgdGFrZW4gYnkgdGhlCisgIGNvcmUgYW5kIHJlbGVhc2VkIGFmdGVyd2FyZHMuIFNlZSB0aGUgbmV4dCBzZWN0aW9uIGZvciBtb3JlIGRldGFpbHMuCisKKy0gcXVldWU6IGEgcG9pbnRlciB0byB0aGUgc3RydWN0IHZiMl9xdWV1ZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBkZXZpY2Ugbm9kZS4KKyAgSWYgcXVldWUgaXMgbm9uLU5VTEwsIGFuZCBxdWV1ZS0+bG9jayBpcyBub24tTlVMTCwgdGhlbiBxdWV1ZS0+bG9jayBpcworICB1c2VkIGZvciB0aGUgcXVldWluZyBpb2N0bHMgKFZJRElPQ19SRVFCVUZTLCBDUkVBVEVfQlVGUywgUUJVRiwgRFFCVUYsCisgIFFVRVJZQlVGLCBQUkVQQVJFX0JVRiwgU1RSRUFNT04gYW5kIFNUUkVBTU9GRikgaW5zdGVhZCBvZiB0aGUgbG9jayBhYm92ZS4KKyAgVGhhdCB3YXkgdGhlIHZiMiBxdWV1aW5nIGZyYW1ld29yayBkb2VzIG5vdCBoYXZlIHRvIHdhaXQgZm9yIG90aGVyIGlvY3Rscy4KKyAgVGhpcyBxdWV1ZSBwb2ludGVyIGlzIGFsc28gdXNlZCBieSB0aGUgdmIyIGhlbHBlciBmdW5jdGlvbnMgdG8gY2hlY2sgZm9yCisgIHF1ZXVpbmcgb3duZXJzaGlwIChpLmUuIGlzIHRoZSBmaWxlaGFuZGxlIGNhbGxpbmcgaXQgYWxsb3dlZCB0byBkbyB0aGUKKyAgb3BlcmF0aW9uKS4KKworLSBwcmlvOiBrZWVwcyB0cmFjayBvZiB0aGUgcHJpb3JpdGllcy4gVXNlZCB0byBpbXBsZW1lbnQgVklESU9DX0cvU19QUklPUklUWS4KKyAgSWYgbGVmdCB0byBOVUxMLCB0aGVuIGl0IHdpbGwgdXNlIHRoZSBzdHJ1Y3QgdjRsMl9wcmlvX3N0YXRlIGluIHY0bDJfZGV2aWNlLgorICBJZiB5b3Ugd2FudCB0byBoYXZlIGEgc2VwYXJhdGUgcHJpb3JpdHkgc3RhdGUgcGVyIChncm91cCBvZikgZGV2aWNlIG5vZGUocyksCisgIHRoZW4geW91IGNhbiBwb2ludCBpdCB0byB5b3VyIG93biBzdHJ1Y3QgdjRsMl9wcmlvX3N0YXRlLgorCistIGRldl9wYXJlbnQ6IHlvdSBvbmx5IHNldCB0aGlzIGlmIHY0bDJfZGV2aWNlIHdhcyByZWdpc3RlcmVkIHdpdGggTlVMTCBhcworICB0aGUgcGFyZW50IGRldmljZSBzdHJ1Y3QuIFRoaXMgb25seSBoYXBwZW5zIGluIGNhc2VzIHdoZXJlIG9uZSBoYXJkd2FyZQorICBkZXZpY2UgaGFzIG11bHRpcGxlIFBDSSBkZXZpY2VzIHRoYXQgYWxsIHNoYXJlIHRoZSBzYW1lIHY0bDJfZGV2aWNlIGNvcmUuCisKKyAgVGhlIGN4ODggZHJpdmVyIGlzIGFuIGV4YW1wbGUgb2YgdGhpczogb25lIGNvcmUgdjRsMl9kZXZpY2Ugc3RydWN0LCBidXQKKyAgaXQgaXMgdXNlZCBieSBib3RoIGEgcmF3IHZpZGVvIFBDSSBkZXZpY2UgKGN4ODgwMCkgYW5kIGEgTVBFRyBQQ0kgZGV2aWNlCisgIChjeDg4MDIpLiBTaW5jZSB0aGUgdjRsMl9kZXZpY2UgY2Fubm90IGJlIGFzc29jaWF0ZWQgd2l0aCB0d28gUENJIGRldmljZXMKKyAgYXQgdGhlIHNhbWUgdGltZSBpdCBpcyBzZXR1cCB3aXRob3V0IGEgcGFyZW50IGRldmljZS4gQnV0IHdoZW4gdGhlIHN0cnVjdAorICB2aWRlb19kZXZpY2UgaXMgaW5pdGlhbGl6ZWQgeW91ICpkbyoga25vdyB3aGljaCBwYXJlbnQgUENJIGRldmljZSB0byB1c2UgYW5kCisgIHNvIHlvdSBzZXQgZGV2X2RldmljZSB0byB0aGUgY29ycmVjdCBQQ0kgZGV2aWNlLgorCitJZiB5b3UgdXNlIHY0bDJfaW9jdGxfb3BzLCB0aGVuIHlvdSBzaG91bGQgc2V0IC51bmxvY2tlZF9pb2N0bCB0byB2aWRlb19pb2N0bDIKK2luIHlvdXIgdjRsMl9maWxlX29wZXJhdGlvbnMgc3RydWN0LgorCitEbyBub3QgdXNlIC5pb2N0bCEgVGhpcyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGdvIGF3YXkgaW4gdGhlIGZ1dHVyZS4KKworSW4gc29tZSBjYXNlcyB5b3Ugd2FudCB0byB0ZWxsIHRoZSBjb3JlIHRoYXQgYSBmdW5jdGlvbiB5b3UgaGFkIHNwZWNpZmllZCBpbgoreW91ciB2NGwyX2lvY3RsX29wcyBzaG91bGQgYmUgaWdub3JlZC4gWW91IGNhbiBtYXJrIHN1Y2ggaW9jdGxzIGJ5IGNhbGxpbmcgdGhpcworZnVuY3Rpb24gYmVmb3JlIHZpZGVvX2RldmljZV9yZWdpc3RlciBpcyBjYWxsZWQ6CisKK3ZvaWQgdjRsMl9kaXNhYmxlX2lvY3RsKHN0cnVjdCB2aWRlb19kZXZpY2UgKnZkZXYsIHVuc2lnbmVkIGludCBjbWQpOworCitUaGlzIHRlbmRzIHRvIGJlIG5lZWRlZCBpZiBiYXNlZCBvbiBleHRlcm5hbCBmYWN0b3JzIChlLmcuIHdoaWNoIGNhcmQgaXMKK2JlaW5nIHVzZWQpIHlvdSB3YW50IHRvIHR1cm5zIG9mZiBjZXJ0YWluIGZlYXR1cmVzIGluIHY0bDJfaW9jdGxfb3BzIHdpdGhvdXQKK2hhdmluZyB0byBtYWtlIGEgbmV3IHN0cnVjdC4KKworVGhlIHY0bDJfZmlsZV9vcGVyYXRpb25zIHN0cnVjdCBpcyBhIHN1YnNldCBvZiBmaWxlX29wZXJhdGlvbnMuIFRoZSBtYWluCitkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIGlub2RlIGFyZ3VtZW50IGlzIG9taXR0ZWQgc2luY2UgaXQgaXMgbmV2ZXIgdXNlZC4KKworSWYgaW50ZWdyYXRpb24gd2l0aCB0aGUgbWVkaWEgZnJhbWV3b3JrIGlzIG5lZWRlZCwgeW91IG11c3QgaW5pdGlhbGl6ZSB0aGUKK21lZGlhX2VudGl0eSBzdHJ1Y3QgZW1iZWRkZWQgaW4gdGhlIHZpZGVvX2RldmljZSBzdHJ1Y3QgKGVudGl0eSBmaWVsZCkgYnkKK2NhbGxpbmcgbWVkaWFfZW50aXR5X2luaXQoKToKKworCXN0cnVjdCBtZWRpYV9wYWQgKnBhZCA9ICZteV92ZGV2LT5wYWQ7CisJaW50IGVycjsKKworCWVyciA9IG1lZGlhX2VudGl0eV9pbml0KCZ2ZGV2LT5lbnRpdHksIDEsIHBhZCwgMCk7CisKK1RoZSBwYWRzIGFycmF5IG11c3QgaGF2ZSBiZWVuIHByZXZpb3VzbHkgaW5pdGlhbGl6ZWQuIFRoZXJlIGlzIG5vIG5lZWQgdG8KK21hbnVhbGx5IHNldCB0aGUgc3RydWN0IG1lZGlhX2VudGl0eSB0eXBlIGFuZCBuYW1lIGZpZWxkcy4KKworQSByZWZlcmVuY2UgdG8gdGhlIGVudGl0eSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgYWNxdWlyZWQvcmVsZWFzZWQgd2hlbiB0aGUKK3ZpZGVvIGRldmljZSBpcyBvcGVuZWQvY2xvc2VkLgorCitpb2N0bHMgYW5kIGxvY2tpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgVjRMIGNvcmUgcHJvdmlkZXMgb3B0aW9uYWwgbG9ja2luZyBzZXJ2aWNlcy4gVGhlIG1haW4gc2VydmljZSBpcyB0aGUKK2xvY2sgZmllbGQgaW4gc3RydWN0IHZpZGVvX2RldmljZSwgd2hpY2ggaXMgYSBwb2ludGVyIHRvIGEgbXV0ZXguIElmIHlvdSBzZXQKK3RoaXMgcG9pbnRlciwgdGhlbiB0aGF0IHdpbGwgYmUgdXNlZCBieSB1bmxvY2tlZF9pb2N0bCB0byBzZXJpYWxpemUgYWxsIGlvY3Rscy4KKworSWYgeW91IGFyZSB1c2luZyB0aGUgdmlkZW9idWYyIGZyYW1ld29yaywgdGhlbiB0aGVyZSBpcyBhIHNlY29uZCBsb2NrIHRoYXQgeW91CitjYW4gc2V0OiB2aWRlb19kZXZpY2UtPnF1ZXVlLT5sb2NrLiBJZiBzZXQsIHRoZW4gdGhpcyBsb2NrIHdpbGwgYmUgdXNlZCBpbnN0ZWFkCitvZiB2aWRlb19kZXZpY2UtPmxvY2sgdG8gc2VyaWFsaXplIGFsbCBxdWV1aW5nIGlvY3RscyAoc2VlIHRoZSBwcmV2aW91cyBzZWN0aW9uCitmb3IgdGhlIGZ1bGwgbGlzdCBvZiB0aG9zZSBpb2N0bHMpLgorCitUaGUgYWR2YW50YWdlIG9mIHVzaW5nIGEgZGlmZmVyZW50IGxvY2sgZm9yIHRoZSBxdWV1aW5nIGlvY3RscyBpcyB0aGF0IGZvciBzb21lCitkcml2ZXJzIChwYXJ0aWN1bGFybHkgVVNCIGRyaXZlcnMpIGNlcnRhaW4gY29tbWFuZHMgc3VjaCBhcyBzZXR0aW5nIGNvbnRyb2xzCitjYW4gdGFrZSBhIGxvbmcgdGltZSwgc28geW91IHdhbnQgdG8gdXNlIGEgc2VwYXJhdGUgbG9jayBmb3IgdGhlIGJ1ZmZlciBxdWV1aW5nCitpb2N0bHMuIFRoYXQgd2F5IHlvdXIgVklESU9DX0RRQlVGIGRvZXNuJ3Qgc3RhbGwgYmVjYXVzZSB0aGUgZHJpdmVyIGlzIGJ1c3kKK2NoYW5naW5nIHRoZSBlLmcuIGV4cG9zdXJlIG9mIHRoZSB3ZWJjYW0uCisKK09mIGNvdXJzZSwgeW91IGNhbiBhbHdheXMgZG8gYWxsIHRoZSBsb2NraW5nIHlvdXJzZWxmIGJ5IGxlYXZpbmcgYm90aCBsb2NrCitwb2ludGVycyBhdCBOVUxMLgorCitJZiB5b3UgdXNlIHRoZSBvbGQgdmlkZW9idWYgdGhlbiB5b3UgbXVzdCBwYXNzIHRoZSB2aWRlb19kZXZpY2UgbG9jayB0byB0aGUKK3ZpZGVvYnVmIHF1ZXVlIGluaXRpYWxpemUgZnVuY3Rpb246IGlmIHZpZGVvYnVmIGhhcyB0byB3YWl0IGZvciBhIGZyYW1lIHRvCithcnJpdmUsIHRoZW4gaXQgd2lsbCB0ZW1wb3JhcmlseSB1bmxvY2sgdGhlIGxvY2sgYW5kIHJlbG9jayBpdCBhZnRlcndhcmRzLiBJZgoreW91ciBkcml2ZXIgYWxzbyB3YWl0cyBpbiB0aGUgY29kZSwgdGhlbiB5b3Ugc2hvdWxkIGRvIHRoZSBzYW1lIHRvIGFsbG93IG90aGVyCitwcm9jZXNzZXMgdG8gYWNjZXNzIHRoZSBkZXZpY2Ugbm9kZSB3aGlsZSB0aGUgZmlyc3QgcHJvY2VzcyBpcyB3YWl0aW5nIGZvcgorc29tZXRoaW5nLgorCitJbiB0aGUgY2FzZSBvZiB2aWRlb2J1ZjIgeW91IHdpbGwgbmVlZCB0byBpbXBsZW1lbnQgdGhlIHdhaXRfcHJlcGFyZSBhbmQKK3dhaXRfZmluaXNoIGNhbGxiYWNrcyB0byB1bmxvY2svbG9jayBpZiBhcHBsaWNhYmxlLiBJZiB5b3UgdXNlIHRoZSBxdWV1ZS0+bG9jaworcG9pbnRlciwgdGhlbiB5b3UgY2FuIHVzZSB0aGUgaGVscGVyIGZ1bmN0aW9ucyB2YjJfb3BzX3dhaXRfcHJlcGFyZS9maW5pc2guCisKK1RoZSBpbXBsZW1lbnRhdGlvbiBvZiBhIGhvdHBsdWcgZGlzY29ubmVjdCBzaG91bGQgYWxzbyB0YWtlIHRoZSBsb2NrIGZyb20KK3ZpZGVvX2RldmljZSBiZWZvcmUgY2FsbGluZyB2NGwyX2RldmljZV9kaXNjb25uZWN0LiBJZiB5b3UgYXJlIGFsc28gdXNpbmcKK3ZpZGVvX2RldmljZS0+cXVldWUtPmxvY2ssIHRoZW4geW91IGhhdmUgdG8gZmlyc3QgbG9jayB2aWRlb19kZXZpY2UtPnF1ZXVlLT5sb2NrCitmb2xsb3dlZCBieSB2aWRlb19kZXZpY2UtPmxvY2suIFRoYXQgd2F5IHlvdSBjYW4gYmUgc3VyZSBubyBpb2N0bCBpcyBydW5uaW5nCit3aGVuIHlvdSBjYWxsIHY0bDJfZGV2aWNlX2Rpc2Nvbm5lY3QuCisKK3ZpZGVvX2RldmljZSByZWdpc3RyYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmV4dCB5b3UgcmVnaXN0ZXIgdGhlIHZpZGVvIGRldmljZTogdGhpcyB3aWxsIGNyZWF0ZSB0aGUgY2hhcmFjdGVyIGRldmljZQorZm9yIHlvdS4KKworCWVyciA9IHZpZGVvX3JlZ2lzdGVyX2RldmljZSh2ZGV2LCBWRkxfVFlQRV9HUkFCQkVSLCAtMSk7CisJaWYgKGVycikgeworCQl2aWRlb19kZXZpY2VfcmVsZWFzZSh2ZGV2KTsgLyogb3Iga2ZyZWUobXlfdmRldik7ICovCisJCXJldHVybiBlcnI7CisJfQorCitJZiB0aGUgdjRsMl9kZXZpY2UgcGFyZW50IGRldmljZSBoYXMgYSBub24tTlVMTCBtZGV2IGZpZWxkLCB0aGUgdmlkZW8gZGV2aWNlCitlbnRpdHkgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHJlZ2lzdGVyZWQgd2l0aCB0aGUgbWVkaWEgZGV2aWNlLgorCitXaGljaCBkZXZpY2UgaXMgcmVnaXN0ZXJlZCBkZXBlbmRzIG9uIHRoZSB0eXBlIGFyZ3VtZW50LiBUaGUgZm9sbG93aW5nCit0eXBlcyBleGlzdDoKKworVkZMX1RZUEVfR1JBQkJFUjogdmlkZW9YIGZvciB2aWRlbyBpbnB1dC9vdXRwdXQgZGV2aWNlcworVkZMX1RZUEVfVkJJOiB2YmlYIGZvciB2ZXJ0aWNhbCBibGFuayBkYXRhIChpLmUuIGNsb3NlZCBjYXB0aW9ucywgdGVsZXRleHQpCitWRkxfVFlQRV9SQURJTzogcmFkaW9YIGZvciByYWRpbyB0dW5lcnMKK1ZGTF9UWVBFX1NEUjogc3dyYWRpb1ggZm9yIFNvZnR3YXJlIERlZmluZWQgUmFkaW8gdHVuZXJzCisKK1RoZSBsYXN0IGFyZ3VtZW50IGdpdmVzIHlvdSBhIGNlcnRhaW4gYW1vdW50IG9mIGNvbnRyb2wgb3ZlciB0aGUgZGV2aWNlCitkZXZpY2Ugbm9kZSBudW1iZXIgdXNlZCAoaS5lLiB0aGUgWCBpbiB2aWRlb1gpLiBOb3JtYWxseSB5b3Ugd2lsbCBwYXNzIC0xCit0byBsZXQgdGhlIHY0bDIgZnJhbWV3b3JrIHBpY2sgdGhlIGZpcnN0IGZyZWUgbnVtYmVyLiBCdXQgc29tZXRpbWVzIHVzZXJzCit3YW50IHRvIHNlbGVjdCBhIHNwZWNpZmljIG5vZGUgbnVtYmVyLiBJdCBpcyBjb21tb24gdGhhdCBkcml2ZXJzIGFsbG93Cit0aGUgdXNlciB0byBzZWxlY3QgYSBzcGVjaWZpYyBkZXZpY2Ugbm9kZSBudW1iZXIgdGhyb3VnaCBhIGRyaXZlciBtb2R1bGUKK29wdGlvbi4gVGhhdCBudW1iZXIgaXMgdGhlbiBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbiBhbmQgdmlkZW9fcmVnaXN0ZXJfZGV2aWNlCit3aWxsIGF0dGVtcHQgdG8gc2VsZWN0IHRoYXQgZGV2aWNlIG5vZGUgbnVtYmVyLiBJZiB0aGF0IG51bWJlciB3YXMgYWxyZWFkeQoraW4gdXNlLCB0aGVuIHRoZSBuZXh0IGZyZWUgZGV2aWNlIG5vZGUgbnVtYmVyIHdpbGwgYmUgc2VsZWN0ZWQgYW5kIGl0Cit3aWxsIHNlbmQgYSB3YXJuaW5nIHRvIHRoZSBrZXJuZWwgbG9nLgorCitBbm90aGVyIHVzZS1jYXNlIGlzIGlmIGEgZHJpdmVyIGNyZWF0ZXMgbWFueSBkZXZpY2VzLiBJbiB0aGF0IGNhc2UgaXQgY2FuCitiZSB1c2VmdWwgdG8gcGxhY2UgZGlmZmVyZW50IHZpZGVvIGRldmljZXMgaW4gc2VwYXJhdGUgcmFuZ2VzLiBGb3IgZXhhbXBsZSwKK3ZpZGVvIGNhcHR1cmUgZGV2aWNlcyBzdGFydCBhdCAwLCB2aWRlbyBvdXRwdXQgZGV2aWNlcyBzdGFydCBhdCAxNi4KK1NvIHlvdSBjYW4gdXNlIHRoZSBsYXN0IGFyZ3VtZW50IHRvIHNwZWNpZnkgYSBtaW5pbXVtIGRldmljZSBub2RlIG51bWJlcgorYW5kIHRoZSB2NGwyIGZyYW1ld29yayB3aWxsIHRyeSB0byBwaWNrIHRoZSBmaXJzdCBmcmVlIG51bWJlciB0aGF0IGlzIGVxdWFsCitvciBoaWdoZXIgdG8gd2hhdCB5b3UgcGFzc2VkLiBJZiB0aGF0IGZhaWxzLCB0aGVuIGl0IHdpbGwganVzdCBwaWNrIHRoZQorZmlyc3QgZnJlZSBudW1iZXIuCisKK1NpbmNlIGluIHRoaXMgY2FzZSB5b3UgZG8gbm90IGNhcmUgYWJvdXQgYSB3YXJuaW5nIGFib3V0IG5vdCBiZWluZyBhYmxlCit0byBzZWxlY3QgdGhlIHNwZWNpZmllZCBkZXZpY2Ugbm9kZSBudW1iZXIsIHlvdSBjYW4gY2FsbCB0aGUgZnVuY3Rpb24KK3ZpZGVvX3JlZ2lzdGVyX2RldmljZV9ub193YXJuKCkgaW5zdGVhZC4KKworV2hlbmV2ZXIgYSBkZXZpY2Ugbm9kZSBpcyBjcmVhdGVkIHNvbWUgYXR0cmlidXRlcyBhcmUgYWxzbyBjcmVhdGVkIGZvciB5b3UuCitJZiB5b3UgbG9vayBpbiAvc3lzL2NsYXNzL3ZpZGVvNGxpbnV4IHlvdSBzZWUgdGhlIGRldmljZXMuIEdvIGludG8gZS5nLgordmlkZW8wIGFuZCB5b3Ugd2lsbCBzZWUgJ25hbWUnLCAnZGV2X2RlYnVnJyBhbmQgJ2luZGV4JyBhdHRyaWJ1dGVzLiBUaGUgJ25hbWUnCithdHRyaWJ1dGUgaXMgdGhlICduYW1lJyBmaWVsZCBvZiB0aGUgdmlkZW9fZGV2aWNlIHN0cnVjdC4gVGhlICdkZXZfZGVidWcnIGF0dHJpYnV0ZQorY2FuIGJlIHVzZWQgdG8gZW5hYmxlIGNvcmUgZGVidWdnaW5nLiBTZWUgdGhlIG5leHQgc2VjdGlvbiBmb3IgbW9yZSBkZXRhaWxlZAoraW5mb3JtYXRpb24gb24gdGhpcy4KKworVGhlICdpbmRleCcgYXR0cmlidXRlIGlzIHRoZSBpbmRleCBvZiB0aGUgZGV2aWNlIG5vZGU6IGZvciBlYWNoIGNhbGwgdG8KK3ZpZGVvX3JlZ2lzdGVyX2RldmljZSgpIHRoZSBpbmRleCBpcyBqdXN0IGluY3JlYXNlZCBieSAxLiBUaGUgZmlyc3QgdmlkZW8KK2RldmljZSBub2RlIHlvdSByZWdpc3RlciBhbHdheXMgc3RhcnRzIHdpdGggaW5kZXggMC4KKworVXNlcnMgY2FuIHNldHVwIHVkZXYgcnVsZXMgdGhhdCB1dGlsaXplIHRoZSBpbmRleCBhdHRyaWJ1dGUgdG8gbWFrZSBmYW5jeQorZGV2aWNlIG5hbWVzIChlLmcuICdtcGVnWCcgZm9yIE1QRUcgdmlkZW8gY2FwdHVyZSBkZXZpY2Ugbm9kZXMpLgorCitBZnRlciB0aGUgZGV2aWNlIHdhcyBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCwgdGhlbiB5b3UgY2FuIHVzZSB0aGVzZSBmaWVsZHM6CisKKy0gdmZsX3R5cGU6IHRoZSBkZXZpY2UgdHlwZSBwYXNzZWQgdG8gdmlkZW9fcmVnaXN0ZXJfZGV2aWNlLgorLSBtaW5vcjogdGhlIGFzc2lnbmVkIGRldmljZSBtaW5vciBudW1iZXIuCistIG51bTogdGhlIGRldmljZSBub2RlIG51bWJlciAoaS5lLiB0aGUgWCBpbiB2aWRlb1gpLgorLSBpbmRleDogdGhlIGRldmljZSBpbmRleCBudW1iZXIuCisKK0lmIHRoZSByZWdpc3RyYXRpb24gZmFpbGVkLCB0aGVuIHlvdSBuZWVkIHRvIGNhbGwgdmlkZW9fZGV2aWNlX3JlbGVhc2UoKQordG8gZnJlZSB0aGUgYWxsb2NhdGVkIHZpZGVvX2RldmljZSBzdHJ1Y3QsIG9yIGZyZWUgeW91ciBvd24gc3RydWN0IGlmIHRoZQordmlkZW9fZGV2aWNlIHdhcyBlbWJlZGRlZCBpbiBpdC4gVGhlIHZkZXYtPnJlbGVhc2UoKSBjYWxsYmFjayB3aWxsIG5ldmVyCitiZSBjYWxsZWQgaWYgdGhlIHJlZ2lzdHJhdGlvbiBmYWlsZWQsIG5vciBzaG91bGQgeW91IGV2ZXIgYXR0ZW1wdCB0bwordW5yZWdpc3RlciB0aGUgZGV2aWNlIGlmIHRoZSByZWdpc3RyYXRpb24gZmFpbGVkLgorCit2aWRlbyBkZXZpY2UgZGVidWdnaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSAnZGV2X2RlYnVnJyBhdHRyaWJ1dGUgdGhhdCBpcyBjcmVhdGVkIGZvciBlYWNoIHZpZGVvLCB2YmksIHJhZGlvIG9yIHN3cmFkaW8KK2RldmljZSBpbiAvc3lzL2NsYXNzL3ZpZGVvNGxpbnV4LzxkZXZYPi8gYWxsb3dzIHlvdSB0byBlbmFibGUgbG9nZ2luZyBvZgorZmlsZSBvcGVyYXRpb25zLgorCitJdCBpcyBhIGJpdG1hc2sgYW5kIHRoZSBmb2xsb3dpbmcgYml0cyBjYW4gYmUgc2V0OgorCisweDAxOiBMb2cgdGhlIGlvY3RsIG5hbWUgYW5kIGVycm9yIGNvZGUuIFZJRElPQ18oRClRQlVGIGlvY3RscyBhcmUgb25seSBsb2dnZWQKKyAgICAgIGlmIGJpdCAweDA4IGlzIGFsc28gc2V0LgorMHgwMjogTG9nIHRoZSBpb2N0bCBuYW1lIGFyZ3VtZW50cyBhbmQgZXJyb3IgY29kZS4gVklESU9DXyhEKVFCVUYgaW9jdGxzIGFyZQorICAgICAgb25seSBsb2dnZWQgaWYgYml0IDB4MDggaXMgYWxzbyBzZXQuCisweDA0OiBMb2cgdGhlIGZpbGUgb3BlcmF0aW9ucyBvcGVuLCByZWxlYXNlLCByZWFkLCB3cml0ZSwgbW1hcCBhbmQKKyAgICAgIGdldF91bm1hcHBlZF9hcmVhLiBUaGUgcmVhZCBhbmQgd3JpdGUgb3BlcmF0aW9ucyBhcmUgb25seSBsb2dnZWQgaWYKKyAgICAgIGJpdCAweDA4IGlzIGFsc28gc2V0LgorMHgwODogTG9nIHRoZSByZWFkIGFuZCB3cml0ZSBmaWxlIG9wZXJhdGlvbnMgYW5kIHRoZSBWSURJT0NfUUJVRiBhbmQKKyAgICAgIFZJRElPQ19EUUJVRiBpb2N0bHMuCisweDEwOiBMb2cgdGhlIHBvbGwgZmlsZSBvcGVyYXRpb24uCisKK3ZpZGVvX2RldmljZSBjbGVhbnVwCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaGVuIHRoZSB2aWRlbyBkZXZpY2Ugbm9kZXMgaGF2ZSB0byBiZSByZW1vdmVkLCBlaXRoZXIgZHVyaW5nIHRoZSB1bmxvYWQKK29mIHRoZSBkcml2ZXIgb3IgYmVjYXVzZSB0aGUgVVNCIGRldmljZSB3YXMgZGlzY29ubmVjdGVkLCB0aGVuIHlvdSBzaG91bGQKK3VucmVnaXN0ZXIgdGhlbToKKworCXZpZGVvX3VucmVnaXN0ZXJfZGV2aWNlKHZkZXYpOworCitUaGlzIHdpbGwgcmVtb3ZlIHRoZSBkZXZpY2Ugbm9kZXMgZnJvbSBzeXNmcyAoY2F1c2luZyB1ZGV2IHRvIHJlbW92ZSB0aGVtCitmcm9tIC9kZXYpLgorCitBZnRlciB2aWRlb191bnJlZ2lzdGVyX2RldmljZSgpIHJldHVybnMgbm8gbmV3IG9wZW5zIGNhbiBiZSBkb25lLiBIb3dldmVyLAoraW4gdGhlIGNhc2Ugb2YgVVNCIGRldmljZXMgc29tZSBhcHBsaWNhdGlvbiBtaWdodCBzdGlsbCBoYXZlIG9uZSBvZiB0aGVzZQorZGV2aWNlIG5vZGVzIG9wZW4uIFNvIGFmdGVyIHRoZSB1bnJlZ2lzdGVyIGFsbCBmaWxlIG9wZXJhdGlvbnMgKGV4Y2VwdAorcmVsZWFzZSwgb2YgY291cnNlKSB3aWxsIHJldHVybiBhbiBlcnJvciBhcyB3ZWxsLgorCitXaGVuIHRoZSBsYXN0IHVzZXIgb2YgdGhlIHZpZGVvIGRldmljZSBub2RlIGV4aXRzLCB0aGVuIHRoZSB2ZGV2LT5yZWxlYXNlKCkKK2NhbGxiYWNrIGlzIGNhbGxlZCBhbmQgeW91IGNhbiBkbyB0aGUgZmluYWwgY2xlYW51cCB0aGVyZS4KKworRG9uJ3QgZm9yZ2V0IHRvIGNsZWFudXAgdGhlIG1lZGlhIGVudGl0eSBhc3NvY2lhdGVkIHdpdGggdGhlIHZpZGVvIGRldmljZSBpZgoraXQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQ6CisKKwltZWRpYV9lbnRpdHlfY2xlYW51cCgmdmRldi0+ZW50aXR5KTsKKworVGhpcyBjYW4gYmUgZG9uZSBmcm9tIHRoZSByZWxlYXNlIGNhbGxiYWNrLgorCisKK3ZpZGVvX2RldmljZSBoZWxwZXIgZnVuY3Rpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGVyZSBhcmUgYSBmZXcgdXNlZnVsIGhlbHBlciBmdW5jdGlvbnM6CisKKy0gZmlsZS92aWRlb19kZXZpY2UgcHJpdmF0ZSBkYXRhCisKK1lvdSBjYW4gc2V0L2dldCBkcml2ZXIgcHJpdmF0ZSBkYXRhIGluIHRoZSB2aWRlb19kZXZpY2Ugc3RydWN0IHVzaW5nOgorCit2b2lkICp2aWRlb19nZXRfZHJ2ZGF0YShzdHJ1Y3QgdmlkZW9fZGV2aWNlICp2ZGV2KTsKK3ZvaWQgdmlkZW9fc2V0X2RydmRhdGEoc3RydWN0IHZpZGVvX2RldmljZSAqdmRldiwgdm9pZCAqZGF0YSk7CisKK05vdGUgdGhhdCB5b3UgY2FuIHNhZmVseSBjYWxsIHZpZGVvX3NldF9kcnZkYXRhKCkgYmVmb3JlIGNhbGxpbmcKK3ZpZGVvX3JlZ2lzdGVyX2RldmljZSgpLgorCitBbmQgdGhpcyBmdW5jdGlvbjoKKworc3RydWN0IHZpZGVvX2RldmljZSAqdmlkZW9fZGV2ZGF0YShzdHJ1Y3QgZmlsZSAqZmlsZSk7CisKK3JldHVybnMgdGhlIHZpZGVvX2RldmljZSBiZWxvbmdpbmcgdG8gdGhlIGZpbGUgc3RydWN0LgorCitUaGUgdmlkZW9fZHJ2ZGF0YSBmdW5jdGlvbiBjb21iaW5lcyB2aWRlb19nZXRfZHJ2ZGF0YSB3aXRoIHZpZGVvX2RldmRhdGE6CisKK3ZvaWQgKnZpZGVvX2RydmRhdGEoc3RydWN0IGZpbGUgKmZpbGUpOworCitZb3UgY2FuIGdvIGZyb20gYSB2aWRlb19kZXZpY2Ugc3RydWN0IHRvIHRoZSB2NGwyX2RldmljZSBzdHJ1Y3QgdXNpbmc6CisKK3N0cnVjdCB2NGwyX2RldmljZSAqdjRsMl9kZXYgPSB2ZGV2LT52NGwyX2RldjsKKworLSBEZXZpY2Ugbm9kZSBuYW1lCisKK1RoZSB2aWRlb19kZXZpY2Ugbm9kZSBrZXJuZWwgbmFtZSBjYW4gYmUgcmV0cmlldmVkIHVzaW5nCisKK2NvbnN0IGNoYXIgKnZpZGVvX2RldmljZV9ub2RlX25hbWUoc3RydWN0IHZpZGVvX2RldmljZSAqdmRldik7CisKK1RoZSBuYW1lIGlzIHVzZWQgYXMgYSBoaW50IGJ5IHVzZXJzcGFjZSB0b29scyBzdWNoIGFzIHVkZXYuIFRoZSBmdW5jdGlvbgorc2hvdWxkIGJlIHVzZWQgd2hlcmUgcG9zc2libGUgaW5zdGVhZCBvZiBhY2Nlc3NpbmcgdGhlIHZpZGVvX2RldmljZTo6bnVtIGFuZAordmlkZW9fZGV2aWNlOjptaW5vciBmaWVsZHMuCisKKwordmlkZW8gYnVmZmVyIGhlbHBlciBmdW5jdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSB2NGwyIGNvcmUgQVBJIHByb3ZpZGVzIGEgc2V0IG9mIHN0YW5kYXJkIG1ldGhvZHMgKGNhbGxlZCAidmlkZW9idWYiKQorZm9yIGRlYWxpbmcgd2l0aCB2aWRlbyBidWZmZXJzLiBUaG9zZSBtZXRob2RzIGFsbG93IGEgZHJpdmVyIHRvIGltcGxlbWVudAorcmVhZCgpLCBtbWFwKCkgYW5kIG92ZXJsYXkoKSBpbiBhIGNvbnNpc3RlbnQgd2F5LiAgVGhlcmUgYXJlIGN1cnJlbnRseQorbWV0aG9kcyBmb3IgdXNpbmcgdmlkZW8gYnVmZmVycyBvbiBkZXZpY2VzIHRoYXQgc3VwcG9ydHMgRE1BIHdpdGgKK3NjYXR0ZXIvZ2F0aGVyIG1ldGhvZCAodmlkZW9idWYtZG1hLXNnKSwgRE1BIHdpdGggbGluZWFyIGFjY2VzcworKHZpZGVvYnVmLWRtYS1jb250aWcpLCBhbmQgdm1hbGxvY2VkIGJ1ZmZlcnMsIG1vc3RseSB1c2VkIG9uIFVTQiBkcml2ZXJzCisodmlkZW9idWYtdm1hbGxvYykuCisKK1BsZWFzZSBzZWUgRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC92aWRlb2J1ZiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cKK3RvIHVzZSB0aGUgdmlkZW9idWYgbGF5ZXIuCisKK3N0cnVjdCB2NGwyX2ZoCistLS0tLS0tLS0tLS0tLQorCitzdHJ1Y3QgdjRsMl9maCBwcm92aWRlcyBhIHdheSB0byBlYXNpbHkga2VlcCBmaWxlIGhhbmRsZSBzcGVjaWZpYyBkYXRhCit0aGF0IGlzIHVzZWQgYnkgdGhlIFY0TDIgZnJhbWV3b3JrLiBOZXcgZHJpdmVycyBtdXN0IHVzZSBzdHJ1Y3QgdjRsMl9maAorc2luY2UgaXQgaXMgYWxzbyB1c2VkIHRvIGltcGxlbWVudCBwcmlvcml0eSBoYW5kbGluZyAoVklESU9DX0cvU19QUklPUklUWSkuCisKK1RoZSB1c2VycyBvZiB2NGwyX2ZoIChpbiB0aGUgVjRMMiBmcmFtZXdvcmssIG5vdCB0aGUgZHJpdmVyKSBrbm93Cit3aGV0aGVyIGEgZHJpdmVyIHVzZXMgdjRsMl9maCBhcyBpdHMgZmlsZS0+cHJpdmF0ZV9kYXRhIHBvaW50ZXIgYnkKK3Rlc3RpbmcgdGhlIFY0TDJfRkxfVVNFU19WNEwyX0ZIIGJpdCBpbiB2aWRlb19kZXZpY2UtPmZsYWdzLiBUaGlzIGJpdCBpcworc2V0IHdoZW5ldmVyIHY0bDJfZmhfaW5pdCgpIGlzIGNhbGxlZC4KKworc3RydWN0IHY0bDJfZmggaXMgYWxsb2NhdGVkIGFzIGEgcGFydCBvZiB0aGUgZHJpdmVyJ3Mgb3duIGZpbGUgaGFuZGxlCitzdHJ1Y3R1cmUgYW5kIGZpbGUtPnByaXZhdGVfZGF0YSBpcyBzZXQgdG8gaXQgaW4gdGhlIGRyaXZlcidzIG9wZW4KK2Z1bmN0aW9uIGJ5IHRoZSBkcml2ZXIuCisKK0luIG1hbnkgY2FzZXMgdGhlIHN0cnVjdCB2NGwyX2ZoIHdpbGwgYmUgZW1iZWRkZWQgaW4gYSBsYXJnZXIgc3RydWN0dXJlLgorSW4gdGhhdCBjYXNlIHlvdSBzaG91bGQgY2FsbCB2NGwyX2ZoX2luaXQrdjRsMl9maF9hZGQgaW4gb3BlbigpIGFuZAordjRsMl9maF9kZWwrdjRsMl9maF9leGl0IGluIHJlbGVhc2UoKS4KKworRHJpdmVycyBjYW4gZXh0cmFjdCB0aGVpciBvd24gZmlsZSBoYW5kbGUgc3RydWN0dXJlIGJ5IHVzaW5nIHRoZSBjb250YWluZXJfb2YKK21hY3JvLiBFeGFtcGxlOgorCitzdHJ1Y3QgbXlfZmggeworCWludCBibGFoOworCXN0cnVjdCB2NGwyX2ZoIGZoOworfTsKKworLi4uCisKK2ludCBteV9vcGVuKHN0cnVjdCBmaWxlICpmaWxlKQoreworCXN0cnVjdCBteV9maCAqbXlfZmg7CisJc3RydWN0IHZpZGVvX2RldmljZSAqdmZkOworCWludCByZXQ7CisKKwkuLi4KKworCW15X2ZoID0ga3phbGxvYyhzaXplb2YoKm15X2ZoKSwgR0ZQX0tFUk5FTCk7CisKKwkuLi4KKworCXY0bDJfZmhfaW5pdCgmbXlfZmgtPmZoLCB2ZmQpOworCisJLi4uCisKKwlmaWxlLT5wcml2YXRlX2RhdGEgPSAmbXlfZmgtPmZoOworCXY0bDJfZmhfYWRkKCZteV9maC0+ZmgpOworCXJldHVybiAwOworfQorCitpbnQgbXlfcmVsZWFzZShzdHJ1Y3QgZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgdjRsMl9maCAqZmggPSBmaWxlLT5wcml2YXRlX2RhdGE7CisJc3RydWN0IG15X2ZoICpteV9maCA9IGNvbnRhaW5lcl9vZihmaCwgc3RydWN0IG15X2ZoLCBmaCk7CisKKwkuLi4KKwl2NGwyX2ZoX2RlbCgmbXlfZmgtPmZoKTsKKwl2NGwyX2ZoX2V4aXQoJm15X2ZoLT5maCk7CisJa2ZyZWUobXlfZmgpOworCXJldHVybiAwOworfQorCitCZWxvdyBpcyBhIHNob3J0IGRlc2NyaXB0aW9uIG9mIHRoZSB2NGwyX2ZoIGZ1bmN0aW9ucyB1c2VkOgorCit2b2lkIHY0bDJfZmhfaW5pdChzdHJ1Y3QgdjRsMl9maCAqZmgsIHN0cnVjdCB2aWRlb19kZXZpY2UgKnZkZXYpCisKKyAgSW5pdGlhbGlzZSB0aGUgZmlsZSBoYW5kbGUuIFRoaXMgKk1VU1QqIGJlIHBlcmZvcm1lZCBpbiB0aGUgZHJpdmVyJ3MKKyAgdjRsMl9maWxlX29wZXJhdGlvbnMtPm9wZW4oKSBoYW5kbGVyLgorCit2b2lkIHY0bDJfZmhfYWRkKHN0cnVjdCB2NGwyX2ZoICpmaCkKKworICBBZGQgYSB2NGwyX2ZoIHRvIHZpZGVvX2RldmljZSBmaWxlIGhhbmRsZSBsaXN0LiBNdXN0IGJlIGNhbGxlZCBvbmNlIHRoZQorICBmaWxlIGhhbmRsZSBpcyBjb21wbGV0ZWx5IGluaXRpYWxpemVkLgorCit2b2lkIHY0bDJfZmhfZGVsKHN0cnVjdCB2NGwyX2ZoICpmaCkKKworICBVbmFzc29jaWF0ZSB0aGUgZmlsZSBoYW5kbGUgZnJvbSB2aWRlb19kZXZpY2UoKS4gVGhlIGZpbGUgaGFuZGxlCisgIGV4aXQgZnVuY3Rpb24gbWF5IG5vdyBiZSBjYWxsZWQuCisKK3ZvaWQgdjRsMl9maF9leGl0KHN0cnVjdCB2NGwyX2ZoICpmaCkKKworICBVbmluaXRpYWxpc2UgdGhlIGZpbGUgaGFuZGxlLiBBZnRlciB1bmluaXRpYWxpc2F0aW9uIHRoZSB2NGwyX2ZoCisgIG1lbW9yeSBjYW4gYmUgZnJlZWQuCisKKworSWYgc3RydWN0IHY0bDJfZmggaXMgbm90IGVtYmVkZGVkLCB0aGVuIHlvdSBjYW4gdXNlIHRoZXNlIGhlbHBlciBmdW5jdGlvbnM6CisKK2ludCB2NGwyX2ZoX29wZW4oc3RydWN0IGZpbGUgKmZpbHApCisKKyAgVGhpcyBhbGxvY2F0ZXMgYSBzdHJ1Y3QgdjRsMl9maCwgaW5pdGlhbGl6ZXMgaXQgYW5kIGFkZHMgaXQgdG8gdGhlIHN0cnVjdAorICB2aWRlb19kZXZpY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWxlIHN0cnVjdC4KKworaW50IHY0bDJfZmhfcmVsZWFzZShzdHJ1Y3QgZmlsZSAqZmlscCkKKworICBUaGlzIGRlbGV0ZXMgaXQgZnJvbSB0aGUgc3RydWN0IHZpZGVvX2RldmljZSBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUKKyAgc3RydWN0LCB1bmluaXRpYWxpc2VkIHRoZSB2NGwyX2ZoIGFuZCBmcmVlcyBpdC4KKworVGhlc2UgdHdvIGZ1bmN0aW9ucyBjYW4gYmUgcGx1Z2dlZCBpbnRvIHRoZSB2NGwyX2ZpbGVfb3BlcmF0aW9uJ3Mgb3BlbigpIGFuZAorcmVsZWFzZSgpIG9wcy4KKworCitTZXZlcmFsIGRyaXZlcnMgbmVlZCB0byBkbyBzb21ldGhpbmcgd2hlbiB0aGUgZmlyc3QgZmlsZSBoYW5kbGUgaXMgb3BlbmVkIGFuZAord2hlbiB0aGUgbGFzdCBmaWxlIGhhbmRsZSBjbG9zZXMuIFR3byBoZWxwZXIgZnVuY3Rpb25zIHdlcmUgYWRkZWQgdG8gY2hlY2sKK3doZXRoZXIgdGhlIHY0bDJfZmggc3RydWN0IGlzIHRoZSBvbmx5IG9wZW4gZmlsZWhhbmRsZSBvZiB0aGUgYXNzb2NpYXRlZAorZGV2aWNlIG5vZGU6CisKK2ludCB2NGwyX2ZoX2lzX3Npbmd1bGFyKHN0cnVjdCB2NGwyX2ZoICpmaCkKKworICBSZXR1cm5zIDEgaWYgdGhlIGZpbGUgaGFuZGxlIGlzIHRoZSBvbmx5IG9wZW4gZmlsZSBoYW5kbGUsIGVsc2UgMC4KKworaW50IHY0bDJfZmhfaXNfc2luZ3VsYXJfZmlsZShzdHJ1Y3QgZmlsZSAqZmlscCkKKworICBTYW1lLCBidXQgaXQgY2FsbHMgdjRsMl9maF9pc19zaW5ndWxhciB3aXRoIGZpbHAtPnByaXZhdGVfZGF0YS4KKworCitWNEwyIGV2ZW50cworLS0tLS0tLS0tLS0KKworVGhlIFY0TDIgZXZlbnRzIHByb3ZpZGUgYSBnZW5lcmljIHdheSB0byBwYXNzIGV2ZW50cyB0byB1c2VyIHNwYWNlLgorVGhlIGRyaXZlciBtdXN0IHVzZSB2NGwyX2ZoIHRvIGJlIGFibGUgdG8gc3VwcG9ydCBWNEwyIGV2ZW50cy4KKworRXZlbnRzIGFyZSBkZWZpbmVkIGJ5IGEgdHlwZSBhbmQgYW4gb3B0aW9uYWwgSUQuIFRoZSBJRCBtYXkgcmVmZXIgdG8gYSBWNEwyCitvYmplY3Qgc3VjaCBhcyBhIGNvbnRyb2wgSUQuIElmIHVudXNlZCwgdGhlbiB0aGUgSUQgaXMgMC4KKworV2hlbiB0aGUgdXNlciBzdWJzY3JpYmVzIHRvIGFuIGV2ZW50IHRoZSBkcml2ZXIgd2lsbCBhbGxvY2F0ZSBhIG51bWJlciBvZgora2V2ZW50IHN0cnVjdHMgZm9yIHRoYXQgZXZlbnQuIFNvIGV2ZXJ5ICh0eXBlLCBJRCkgZXZlbnQgdHVwbGUgd2lsbCBoYXZlCitpdHMgb3duIHNldCBvZiBrZXZlbnQgc3RydWN0cy4gVGhpcyBndWFyYW50ZWVzIHRoYXQgaWYgYSBkcml2ZXIgaXMgZ2VuZXJhdGluZworbG90cyBvZiBldmVudHMgb2Ygb25lIHR5cGUgaW4gYSBzaG9ydCB0aW1lLCB0aGVuIHRoYXQgd2lsbCBub3Qgb3ZlcndyaXRlCitldmVudHMgb2YgYW5vdGhlciB0eXBlLgorCitCdXQgaWYgeW91IGdldCBtb3JlIGV2ZW50cyBvZiBvbmUgdHlwZSB0aGFuIHRoZSBudW1iZXIgb2Yga2V2ZW50cyB0aGF0IHdlcmUKK3Jlc2VydmVkLCB0aGVuIHRoZSBvbGRlc3QgZXZlbnQgd2lsbCBiZSBkcm9wcGVkIGFuZCB0aGUgbmV3IG9uZSBhZGRlZC4KKworRnVydGhlcm1vcmUsIHRoZSBpbnRlcm5hbCBzdHJ1Y3QgdjRsMl9zdWJzY3JpYmVkX2V2ZW50IGhhcyBtZXJnZSgpIGFuZAorcmVwbGFjZSgpIGNhbGxiYWNrcyB3aGljaCBkcml2ZXJzIGNhbiBzZXQuIFRoZXNlIGNhbGxiYWNrcyBhcmUgY2FsbGVkIHdoZW4KK2EgbmV3IGV2ZW50IGlzIHJhaXNlZCBhbmQgdGhlcmUgaXMgbm8gbW9yZSByb29tLiBUaGUgcmVwbGFjZSgpIGNhbGxiYWNrCithbGxvd3MgeW91IHRvIHJlcGxhY2UgdGhlIHBheWxvYWQgb2YgdGhlIG9sZCBldmVudCB3aXRoIHRoYXQgb2YgdGhlIG5ldyBldmVudCwKK21lcmdpbmcgYW55IHJlbGV2YW50IGRhdGEgZnJvbSB0aGUgb2xkIHBheWxvYWQgaW50byB0aGUgbmV3IHBheWxvYWQgdGhhdAorcmVwbGFjZXMgaXQuIEl0IGlzIGNhbGxlZCB3aGVuIHRoaXMgZXZlbnQgdHlwZSBoYXMgb25seSBvbmUga2V2ZW50IHN0cnVjdAorYWxsb2NhdGVkLiBUaGUgbWVyZ2UoKSBjYWxsYmFjayBhbGxvd3MgeW91IHRvIG1lcmdlIHRoZSBvbGRlc3QgZXZlbnQgcGF5bG9hZAoraW50byB0aGF0IG9mIHRoZSBzZWNvbmQtb2xkZXN0IGV2ZW50IHBheWxvYWQuIEl0IGlzIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSB0d28KK29yIG1vcmUga2V2ZW50IHN0cnVjdHMgYWxsb2NhdGVkLgorCitUaGlzIHdheSBubyBzdGF0dXMgaW5mb3JtYXRpb24gaXMgbG9zdCwganVzdCB0aGUgaW50ZXJtZWRpYXRlIHN0ZXBzIGxlYWRpbmcKK3VwIHRvIHRoYXQgc3RhdGUuCisKK0EgZ29vZCBleGFtcGxlIG9mIHRoZXNlIHJlcGxhY2UvbWVyZ2UgY2FsbGJhY2tzIGlzIGluIHY0bDItZXZlbnQuYzoKK2N0cmxzX3JlcGxhY2UoKSBhbmQgY3RybHNfbWVyZ2UoKSBjYWxsYmFja3MgZm9yIHRoZSBjb250cm9sIGV2ZW50LgorCitOb3RlOiB0aGVzZSBjYWxsYmFja3MgY2FuIGJlIGNhbGxlZCBmcm9tIGludGVycnVwdCBjb250ZXh0LCBzbyB0aGV5IG11c3QgYmUKK2Zhc3QuCisKK1VzZWZ1bCBmdW5jdGlvbnM6CisKK3ZvaWQgdjRsMl9ldmVudF9xdWV1ZShzdHJ1Y3QgdmlkZW9fZGV2aWNlICp2ZGV2LCBjb25zdCBzdHJ1Y3QgdjRsMl9ldmVudCAqZXYpCisKKyAgUXVldWUgZXZlbnRzIHRvIHZpZGVvIGRldmljZS4gVGhlIGRyaXZlcidzIG9ubHkgcmVzcG9uc2liaWxpdHkgaXMgdG8gZmlsbAorICBpbiB0aGUgdHlwZSBhbmQgdGhlIGRhdGEgZmllbGRzLiBUaGUgb3RoZXIgZmllbGRzIHdpbGwgYmUgZmlsbGVkIGluIGJ5CisgIFY0TDIuCisKK2ludCB2NGwyX2V2ZW50X3N1YnNjcmliZShzdHJ1Y3QgdjRsMl9maCAqZmgsCisJCQkgc3RydWN0IHY0bDJfZXZlbnRfc3Vic2NyaXB0aW9uICpzdWIsIHVuc2lnbmVkIGVsZW1zLAorCQkJIGNvbnN0IHN0cnVjdCB2NGwyX3N1YnNjcmliZWRfZXZlbnRfb3BzICpvcHMpCisKKyAgVGhlIHZpZGVvX2RldmljZS0+aW9jdGxfb3BzLT52aWRpb2Nfc3Vic2NyaWJlX2V2ZW50IG11c3QgY2hlY2sgdGhlIGRyaXZlcgorICBpcyBhYmxlIHRvIHByb2R1Y2UgZXZlbnRzIHdpdGggc3BlY2lmaWVkIGV2ZW50IGlkLiBUaGVuIGl0IGNhbGxzCisgIHY0bDJfZXZlbnRfc3Vic2NyaWJlKCkgdG8gc3Vic2NyaWJlIHRoZSBldmVudC4KKworICBUaGUgZWxlbXMgYXJndW1lbnQgaXMgdGhlIHNpemUgb2YgdGhlIGV2ZW50IHF1ZXVlIGZvciB0aGlzIGV2ZW50LiBJZiBpdCBpcyAwLAorICB0aGVuIHRoZSBmcmFtZXdvcmsgd2lsbCBmaWxsIGluIGEgZGVmYXVsdCB2YWx1ZSAodGhpcyBkZXBlbmRzIG9uIHRoZSBldmVudAorICB0eXBlKS4KKworICBUaGUgb3BzIGFyZ3VtZW50IGFsbG93cyB0aGUgZHJpdmVyIHRvIHNwZWNpZnkgYSBudW1iZXIgb2YgY2FsbGJhY2tzOgorICAqIGFkZDogICAgIGNhbGxlZCB3aGVuIGEgbmV3IGxpc3RlbmVyIGdldHMgYWRkZWQgKHN1YnNjcmliaW5nIHRvIHRoZSBzYW1lCisgICAgICAgICAgICAgZXZlbnQgdHdpY2Ugd2lsbCBvbmx5IGNhdXNlIHRoaXMgY2FsbGJhY2sgdG8gZ2V0IGNhbGxlZCBvbmNlKQorICAqIGRlbDogICAgIGNhbGxlZCB3aGVuIGEgbGlzdGVuZXIgc3RvcHMgbGlzdGVuaW5nCisgICogcmVwbGFjZTogcmVwbGFjZSBldmVudCAnb2xkJyB3aXRoIGV2ZW50ICduZXcnLgorICAqIG1lcmdlOiAgIG1lcmdlIGV2ZW50ICdvbGQnIGludG8gZXZlbnQgJ25ldycuCisgIEFsbCA0IGNhbGxiYWNrcyBhcmUgb3B0aW9uYWwsIGlmIHlvdSBkb24ndCB3YW50IHRvIHNwZWNpZnkgYW55IGNhbGxiYWNrcworICB0aGUgb3BzIGFyZ3VtZW50IGl0c2VsZiBtYXliZSBOVUxMLgorCitpbnQgdjRsMl9ldmVudF91bnN1YnNjcmliZShzdHJ1Y3QgdjRsMl9maCAqZmgsCisJCQkgICBzdHJ1Y3QgdjRsMl9ldmVudF9zdWJzY3JpcHRpb24gKnN1YikKKworICB2aWRpb2NfdW5zdWJzY3JpYmVfZXZlbnQgaW4gc3RydWN0IHY0bDJfaW9jdGxfb3BzLiBBIGRyaXZlciBtYXkgdXNlCisgIHY0bDJfZXZlbnRfdW5zdWJzY3JpYmUoKSBkaXJlY3RseSB1bmxlc3MgaXQgd2FudHMgdG8gYmUgaW52b2x2ZWQgaW4KKyAgdW5zdWJzY3JpcHRpb24gcHJvY2Vzcy4KKworICBUaGUgc3BlY2lhbCB0eXBlIFY0TDJfRVZFTlRfQUxMIG1heSBiZSB1c2VkIHRvIHVuc3Vic2NyaWJlIGFsbCBldmVudHMuIFRoZQorICBkcml2ZXJzIG1heSB3YW50IHRvIGhhbmRsZSB0aGlzIGluIGEgc3BlY2lhbCB3YXkuCisKK2ludCB2NGwyX2V2ZW50X3BlbmRpbmcoc3RydWN0IHY0bDJfZmggKmZoKQorCisgIFJldHVybnMgdGhlIG51bWJlciBvZiBwZW5kaW5nIGV2ZW50cy4gVXNlZnVsIHdoZW4gaW1wbGVtZW50aW5nIHBvbGwuCisKK0V2ZW50cyBhcmUgZGVsaXZlcmVkIHRvIHVzZXIgc3BhY2UgdGhyb3VnaCB0aGUgcG9sbCBzeXN0ZW0gY2FsbC4gVGhlIGRyaXZlcgorY2FuIHVzZSB2NGwyX2ZoLT53YWl0IChhIHdhaXRfcXVldWVfaGVhZF90KSBhcyB0aGUgYXJndW1lbnQgZm9yIHBvbGxfd2FpdCgpLgorCitUaGVyZSBhcmUgc3RhbmRhcmQgYW5kIHByaXZhdGUgZXZlbnRzLiBOZXcgc3RhbmRhcmQgZXZlbnRzIG11c3QgdXNlIHRoZQorc21hbGxlc3QgYXZhaWxhYmxlIGV2ZW50IHR5cGUuIFRoZSBkcml2ZXJzIG11c3QgYWxsb2NhdGUgdGhlaXIgZXZlbnRzIGZyb20KK3RoZWlyIG93biBjbGFzcyBzdGFydGluZyBmcm9tIGNsYXNzIGJhc2UuIENsYXNzIGJhc2UgaXMKK1Y0TDJfRVZFTlRfUFJJVkFURV9TVEFSVCArIG4gKiAxMDAwIHdoZXJlIG4gaXMgdGhlIGxvd2VzdCBhdmFpbGFibGUgbnVtYmVyLgorVGhlIGZpcnN0IGV2ZW50IHR5cGUgaW4gdGhlIGNsYXNzIGlzIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlLCBzbyB0aGUgZmlyc3QKK2F2YWlsYWJsZSBldmVudCB0eXBlIGlzICdjbGFzcyBiYXNlICsgMScuCisKK0FuIGV4YW1wbGUgb24gaG93IHRoZSBWNEwyIGV2ZW50cyBtYXkgYmUgdXNlZCBjYW4gYmUgZm91bmQgaW4gdGhlIE9NQVAKKzMgSVNQIGRyaXZlciAoZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9vbWFwM2lzcCkuCisKK0Egc3ViZGV2IGNhbiBkaXJlY3RseSBzZW5kIGFuIGV2ZW50IHRvIHRoZSB2NGwyX2RldmljZSBub3RpZnkgZnVuY3Rpb24gd2l0aAorVjRMMl9ERVZJQ0VfTk9USUZZX0VWRU5ULiBUaGlzIGFsbG93cyB0aGUgYnJpZGdlIHRvIG1hcCB0aGUgc3ViZGV2IHRoYXQgc2VuZHMKK3RoZSBldmVudCB0byB0aGUgdmlkZW8gbm9kZShzKSBhc3NvY2lhdGVkIHdpdGggdGhlIHN1YmRldiB0aGF0IG5lZWQgdG8gYmUKK2luZm9ybWVkIGFib3V0IHN1Y2ggYW4gZXZlbnQuCisKK1Y0TDIgY2xvY2tzCistLS0tLS0tLS0tLQorCitNYW55IHN1YmRldmljZXMsIGxpa2UgY2FtZXJhIHNlbnNvcnMsIFRWIGRlY29kZXJzIGFuZCBlbmNvZGVycywgbmVlZCBhIGNsb2NrCitzaWduYWwgdG8gYmUgc3VwcGxpZWQgYnkgdGhlIHN5c3RlbS4gT2Z0ZW4gdGhpcyBjbG9jayBpcyBzdXBwbGllZCBieSB0aGUKK3Jlc3BlY3RpdmUgYnJpZGdlIGRldmljZS4gVGhlIExpbnV4IGtlcm5lbCBwcm92aWRlcyBhIENvbW1vbiBDbG9jayBGcmFtZXdvcmsgZm9yCit0aGlzIHB1cnBvc2UuIEhvd2V2ZXIsIGl0IGlzIG5vdCAoeWV0KSBhdmFpbGFibGUgb24gYWxsIGFyY2hpdGVjdHVyZXMuIEJlc2lkZXMsCit0aGUgbmF0dXJlIG9mIHRoZSBtdWx0aS1mdW5jdGlvbmFsIChjbG9jaywgZGF0YSArIHN5bmNocm9uaXNhdGlvbiwgSTJDIGNvbnRyb2wpCitjb25uZWN0aW9uIG9mIHN1YmRldmljZXMgdG8gdGhlIHN5c3RlbSBtaWdodCBpbXBvc2Ugc3BlY2lhbCByZXF1aXJlbWVudHMgb24gdGhlCitjbG9jayBBUEkgdXNhZ2UuIEUuZy4gVjRMMiBoYXMgdG8gc3VwcG9ydCBjbG9jayBwcm92aWRlciBkcml2ZXIgdW5yZWdpc3RyYXRpb24KK3doaWxlIGEgc3ViZGV2aWNlIGRyaXZlciBpcyBob2xkaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBjbG9jay4gRm9yIHRoZXNlIHJlYXNvbnMKK2EgVjRMMiBjbG9jayBoZWxwZXIgQVBJIGhhcyBiZWVuIGRldmVsb3BlZCBhbmQgaXMgcHJvdmlkZWQgdG8gYnJpZGdlIGFuZAorc3ViZGV2aWNlIGRyaXZlcnMuCisKK1RoZSBBUEkgY29uc2lzdHMgb2YgdHdvIHBhcnRzOiB0d28gZnVuY3Rpb25zIHRvIHJlZ2lzdGVyIGFuZCB1bnJlZ2lzdGVyIGEgVjRMMgorY2xvY2sgc291cmNlOiB2NGwyX2Nsa19yZWdpc3RlcigpIGFuZCB2NGwyX2Nsa191bnJlZ2lzdGVyKCkgYW5kIGNhbGxzIHRvIGNvbnRyb2wKK2EgY2xvY2sgb2JqZWN0LCBzaW1pbGFyIHRvIHRoZSByZXNwZWN0aXZlIGdlbmVyaWMgY2xvY2sgQVBJIGNhbGxzOgordjRsMl9jbGtfZ2V0KCksIHY0bDJfY2xrX3B1dCgpLCB2NGwyX2Nsa19lbmFibGUoKSwgdjRsMl9jbGtfZGlzYWJsZSgpLAordjRsMl9jbGtfZ2V0X3JhdGUoKSwgYW5kIHY0bDJfY2xrX3NldF9yYXRlKCkuIENsb2NrIHN1cHBsaWVycyBoYXZlIHRvIHByb3ZpZGUKK2Nsb2NrIG9wZXJhdGlvbnMgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuIGNsb2NrIHVzZXJzIGludm9rZSByZXNwZWN0aXZlIEFQSQorbWV0aG9kcy4KKworSXQgaXMgZXhwZWN0ZWQgdGhhdCBvbmNlIHRoZSBDQ0YgYmVjb21lcyBhdmFpbGFibGUgb24gYWxsIHJlbGV2YW50CithcmNoaXRlY3R1cmVzIHRoaXMgQVBJIHdpbGwgYmUgcmVtb3ZlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvdjRsMi1wY2ktc2tlbGV0b24uYyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvdjRsMi1wY2ktc2tlbGV0b24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWFlODI4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC92NGwyLXBjaS1za2VsZXRvbi5jCkBAIC0wLDAgKzEsOTI0IEBACisvKgorICogVGhpcyBpcyBhIFY0TDIgUENJIFNrZWxldG9uIERyaXZlci4gSXQgZ2l2ZXMgYW4gaW5pdGlhbCBza2VsZXRvbiBzb3VyY2UKKyAqIGZvciB1c2Ugd2l0aCBvdGhlciBQQ0kgZHJpdmVycy4KKyAqCisgKiBUaGlzIHNrZWxldG9uIFBDSSBkcml2ZXIgYXNzdW1lcyB0aGF0IHRoZSBjYXJkIGhhcyBhbiBTLVZpZGVvIGNvbm5lY3RvciBhcworICogaW5wdXQgMCBhbmQgYW4gSERNSSBjb25uZWN0b3IgYXMgaW5wdXQgMS4KKyAqCisgKiBDb3B5cmlnaHQgMjAxNCBDaXNjbyBTeXN0ZW1zLCBJbmMuIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IG1heSByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKKyAqIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTgorICogQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKKyAqIFNPRlRXQVJFLgorICovCisKKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9rbW9kLmg+CisjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KKyNpbmNsdWRlIDxsaW51eC9wY2kuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC92aWRlb2RldjIuaD4KKyNpbmNsdWRlIDxsaW51eC92NGwyLWR2LXRpbWluZ3MuaD4KKyNpbmNsdWRlIDxtZWRpYS92NGwyLWRldmljZS5oPgorI2luY2x1ZGUgPG1lZGlhL3Y0bDItZGV2Lmg+CisjaW5jbHVkZSA8bWVkaWEvdjRsMi1pb2N0bC5oPgorI2luY2x1ZGUgPG1lZGlhL3Y0bDItZHYtdGltaW5ncy5oPgorI2luY2x1ZGUgPG1lZGlhL3Y0bDItY3RybHMuaD4KKyNpbmNsdWRlIDxtZWRpYS92NGwyLWV2ZW50Lmg+CisjaW5jbHVkZSA8bWVkaWEvdmlkZW9idWYyLXY0bDIuaD4KKyNpbmNsdWRlIDxtZWRpYS92aWRlb2J1ZjItZG1hLWNvbnRpZy5oPgorCitNT0RVTEVfREVTQ1JJUFRJT04oIlY0TDIgUENJIFNrZWxldG9uIERyaXZlciIpOworTU9EVUxFX0FVVEhPUigiSGFucyBWZXJrdWlsIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7CisKKy8qKgorICogc3RydWN0IHNrZWxldG9uIC0gQWxsIGludGVybmFsIGRhdGEgZm9yIG9uZSBpbnN0YW5jZSBvZiBkZXZpY2UKKyAqIEBwZGV2OiBQQ0kgZGV2aWNlCisgKiBAdjRsMl9kZXY6IHRvcC1sZXZlbCB2NGwyIGRldmljZSBzdHJ1Y3QKKyAqIEB2ZGV2OiB2aWRlbyBub2RlIHN0cnVjdHVyZQorICogQGN0cmxfaGFuZGxlcjogY29udHJvbCBoYW5kbGVyIHN0cnVjdHVyZQorICogQGxvY2s6IGlvY3RsIHNlcmlhbGl6YXRpb24gbXV0ZXgKKyAqIEBzdGQ6IGN1cnJlbnQgU0RUViBzdGFuZGFyZAorICogQHRpbWluZ3M6IGN1cnJlbnQgSERUViB0aW1pbmdzCisgKiBAZm9ybWF0OiBjdXJyZW50IHBpeCBmb3JtYXQKKyAqIEBpbnB1dDogY3VycmVudCB2aWRlbyBpbnB1dCAoMCA9IFNEVFYsIDEgPSBIRFRWKQorICogQHF1ZXVlOiB2YjIgdmlkZW8gY2FwdHVyZSBxdWV1ZQorICogQGFsbG9jX2N0eDogdmIyIGNvbnRpZ3VvdXMgRE1BIGNvbnRleHQKKyAqIEBxbG9jazogc3BpbmxvY2sgY29udHJvbGxpbmcgYWNjZXNzIHRvIGJ1Zl9saXN0IGFuZCBzZXF1ZW5jZQorICogQGJ1Zl9saXN0OiBsaXN0IG9mIGJ1ZmZlcnMgcXVldWVkIGZvciBETUEKKyAqIEBzZXF1ZW5jZTogZnJhbWUgc2VxdWVuY2UgY291bnRlcgorICovCitzdHJ1Y3Qgc2tlbGV0b24geworCXN0cnVjdCBwY2lfZGV2ICpwZGV2OworCXN0cnVjdCB2NGwyX2RldmljZSB2NGwyX2RldjsKKwlzdHJ1Y3QgdmlkZW9fZGV2aWNlIHZkZXY7CisJc3RydWN0IHY0bDJfY3RybF9oYW5kbGVyIGN0cmxfaGFuZGxlcjsKKwlzdHJ1Y3QgbXV0ZXggbG9jazsKKwl2NGwyX3N0ZF9pZCBzdGQ7CisJc3RydWN0IHY0bDJfZHZfdGltaW5ncyB0aW1pbmdzOworCXN0cnVjdCB2NGwyX3BpeF9mb3JtYXQgZm9ybWF0OworCXVuc2lnbmVkIGlucHV0OworCisJc3RydWN0IHZiMl9xdWV1ZSBxdWV1ZTsKKwlzdHJ1Y3QgdmIyX2FsbG9jX2N0eCAqYWxsb2NfY3R4OworCisJc3BpbmxvY2tfdCBxbG9jazsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGJ1Zl9saXN0OworCXVuc2lnbmVkIGZpZWxkOworCXVuc2lnbmVkIHNlcXVlbmNlOworfTsKKworc3RydWN0IHNrZWxfYnVmZmVyIHsKKwlzdHJ1Y3QgdmIyX2J1ZmZlciB2YjsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Cit9OworCitzdGF0aWMgaW5saW5lIHN0cnVjdCBza2VsX2J1ZmZlciAqdG9fc2tlbF9idWZmZXIoc3RydWN0IHZiMl9idWZmZXIgKnZiMikKK3sKKwlyZXR1cm4gY29udGFpbmVyX29mKHZiMiwgc3RydWN0IHNrZWxfYnVmZmVyLCB2Yik7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBza2VsZXRvbl9wY2lfdGJsW10gPSB7CisJLyogeyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfLCBQQ0lfREVWSUNFX0lEXykgfSwgKi8KKwl7IDAsIH0KK307CitNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc2tlbGV0b25fcGNpX3RibCk7CisKKy8qCisgKiBIRFRWOiB0aGlzIHN0cnVjdHVyZSBoYXMgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgSERUViByZWNlaXZlci4KKyAqIEl0IGlzIHVzZWQgdG8gY29uc3RyYWluIHRoZSBodWdlIGxpc3Qgb2YgcG9zc2libGUgZm9ybWF0cyBiYXNlZAorICogdXBvbiB0aGUgaGFyZHdhcmUgY2FwYWJpbGl0aWVzLgorICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfZHZfdGltaW5nc19jYXAgc2tlbF90aW1pbmdzX2NhcCA9IHsKKwkudHlwZSA9IFY0TDJfRFZfQlRfNjU2XzExMjAsCisJLyoga2VlcCB0aGlzIGluaXRpYWxpemF0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggR0NDIDwgNC40LjYgKi8KKwkucmVzZXJ2ZWQgPSB7IDAgfSwKKwlWNEwyX0lOSVRfQlRfVElNSU5HUygKKwkJNzIwLCAxOTIwLAkJLyogbWluL21heCB3aWR0aCAqLworCQk0ODAsIDEwODAsCQkvKiBtaW4vbWF4IGhlaWdodCAqLworCQkyNzAwMDAwMCwgNzQyNTAwMDAsCS8qIG1pbi9tYXggcGl4ZWxjbG9jayovCisJCVY0TDJfRFZfQlRfU1REX0NFQTg2MSwJLyogU3VwcG9ydGVkIHN0YW5kYXJkcyAqLworCQkvKiBjYXBhYmlsaXRpZXMgKi8KKwkJVjRMMl9EVl9CVF9DQVBfSU5URVJMQUNFRCB8IFY0TDJfRFZfQlRfQ0FQX1BST0dSRVNTSVZFCisJKQorfTsKKworLyoKKyAqIFN1cHBvcnRlZCBTRFRWIHN0YW5kYXJkcy4gVGhpcyBkb2VzIHRoZSBzYW1lIGpvYiBhcyBza2VsX3RpbWluZ3NfY2FwLCBidXQKKyAqIGZvciBzdGFuZGFyZCBUViBmb3JtYXRzLgorICovCisjZGVmaW5lIFNLRUxfVFZOT1JNUyBWNEwyX1NURF9BTEwKKworLyoKKyAqIEludGVycnVwdCBoYW5kbGVyOiB0eXBpY2FsbHkgaW50ZXJydXB0cyBoYXBwZW4gYWZ0ZXIgYSBuZXcgZnJhbWUgaGFzIGJlZW4KKyAqIGNhcHR1cmVkLiBJdCBpcyB0aGUgam9iIG9mIHRoZSBoYW5kbGVyIHRvIHJlbW92ZSB0aGUgbmV3IGZyYW1lIGZyb20gdGhlCisgKiBpbnRlcm5hbCBsaXN0IGFuZCBnaXZlIGl0IGJhY2sgdG8gdGhlIHZiMiBmcmFtZXdvcmssIHVwZGF0aW5nIHRoZSBzZXF1ZW5jZQorICogY291bnRlciwgZmllbGQgYW5kIHRpbWVzdGFtcCBhdCB0aGUgc2FtZSB0aW1lLgorICovCitzdGF0aWMgaXJxcmV0dXJuX3Qgc2tlbGV0b25faXJxKGludCBpcnEsIHZvaWQgKmRldl9pZCkKK3sKKyNpZmRlZiBUT0RPCisJc3RydWN0IHNrZWxldG9uICpza2VsID0gZGV2X2lkOworCisJLyogaGFuZGxlIGludGVycnVwdCAqLworCisJLyogT25jZSBhIG5ldyBmcmFtZSBoYXMgYmVlbiBjYXB0dXJlZCwgbWFyayBpdCBhcyBkb25lIGxpa2UgdGhpczogKi8KKwlpZiAoY2FwdHVyZWRfbmV3X2ZyYW1lKSB7CisJCS4uLgorCQlzcGluX2xvY2soJnNrZWwtPnFsb2NrKTsKKwkJbGlzdF9kZWwoJm5ld19idWYtPmxpc3QpOworCQlzcGluX3VubG9jaygmc2tlbC0+cWxvY2spOworCQl2NGwyX2dldF90aW1lc3RhbXAoJm5ld19idWYtPnZiLnY0bDJfYnVmLnRpbWVzdGFtcCk7CisJCW5ld19idWYtPnZiLnY0bDJfYnVmLnNlcXVlbmNlID0gc2tlbC0+c2VxdWVuY2UrKzsKKwkJbmV3X2J1Zi0+dmIudjRsMl9idWYuZmllbGQgPSBza2VsLT5maWVsZDsKKwkJaWYgKHNrZWwtPmZvcm1hdC5maWVsZCA9PSBWNEwyX0ZJRUxEX0FMVEVSTkFURSkgeworCQkJaWYgKHNrZWwtPmZpZWxkID09IFY0TDJfRklFTERfQk9UVE9NKQorCQkJCXNrZWwtPmZpZWxkID0gVjRMMl9GSUVMRF9UT1A7CisJCQllbHNlIGlmIChza2VsLT5maWVsZCA9PSBWNEwyX0ZJRUxEX1RPUCkKKwkJCQlza2VsLT5maWVsZCA9IFY0TDJfRklFTERfQk9UVE9NOworCQl9CisJCXZiMl9idWZmZXJfZG9uZSgmbmV3X2J1Zi0+dmIsIFZCMl9CVUZfU1RBVEVfRE9ORSk7CisJfQorI2VuZGlmCisJcmV0dXJuIElSUV9IQU5ETEVEOworfQorCisvKgorICogU2V0dXAgdGhlIGNvbnN0cmFpbnRzIG9mIHRoZSBxdWV1ZTogYmVzaWRlcyBzZXR0aW5nIHRoZSBudW1iZXIgb2YgcGxhbmVzCisgKiBwZXIgYnVmZmVyIGFuZCB0aGUgc2l6ZSBhbmQgYWxsb2NhdGlvbiBjb250ZXh0IG9mIGVhY2ggcGxhbmUsIGl0IGFsc28KKyAqIGNoZWNrcyBpZiBzdWZmaWNpZW50IGJ1ZmZlcnMgaGF2ZSBiZWVuIGFsbG9jYXRlZC4gVXN1YWxseSAzIGlzIGEgZ29vZAorICogbWluaW11bSBudW1iZXI6IG1hbnkgRE1BIGVuZ2luZXMgbmVlZCBhIG1pbmltdW0gb2YgMiBidWZmZXJzIGluIHRoZQorICogcXVldWUgYW5kIHlvdSBuZWVkIHRvIGhhdmUgYW5vdGhlciBhdmFpbGFibGUgZm9yIHVzZXJzcGFjZSBwcm9jZXNzaW5nLgorICovCitzdGF0aWMgaW50IHF1ZXVlX3NldHVwKHN0cnVjdCB2YjJfcXVldWUgKnZxLCBjb25zdCB2b2lkICpwYXJnLAorCQkgICAgICAgdW5zaWduZWQgaW50ICpuYnVmZmVycywgdW5zaWduZWQgaW50ICpucGxhbmVzLAorCQkgICAgICAgdW5zaWduZWQgaW50IHNpemVzW10sIHZvaWQgKmFsbG9jX2N0eHNbXSkKK3sKKwljb25zdCBzdHJ1Y3QgdjRsMl9mb3JtYXQgKmZtdCA9IHBhcmc7CisJc3RydWN0IHNrZWxldG9uICpza2VsID0gdmIyX2dldF9kcnZfcHJpdih2cSk7CisKKwlza2VsLT5maWVsZCA9IHNrZWwtPmZvcm1hdC5maWVsZDsKKwlpZiAoc2tlbC0+ZmllbGQgPT0gVjRMMl9GSUVMRF9BTFRFUk5BVEUpIHsKKwkJLyoKKwkJICogWW91IGNhbm5vdCB1c2UgcmVhZCgpIHdpdGggRklFTERfQUxURVJOQVRFIHNpbmNlIHRoZSBmaWVsZAorCQkgKiBpbmZvcm1hdGlvbiAoVE9QL0JPVFRPTSkgY2Fubm90IGJlIHBhc3NlZCBiYWNrIHRvIHRoZSB1c2VyLgorCQkgKi8KKwkJaWYgKHZiMl9maWxlaW9faXNfYWN0aXZlKHZxKSkKKwkJCXJldHVybiAtRUlOVkFMOworCQlza2VsLT5maWVsZCA9IFY0TDJfRklFTERfVE9QOworCX0KKworCWlmICh2cS0+bnVtX2J1ZmZlcnMgKyAqbmJ1ZmZlcnMgPCAzKQorCQkqbmJ1ZmZlcnMgPSAzIC0gdnEtPm51bV9idWZmZXJzOworCisJaWYgKGZtdCAmJiBmbXQtPmZtdC5waXguc2l6ZWltYWdlIDwgc2tlbC0+Zm9ybWF0LnNpemVpbWFnZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisJKm5wbGFuZXMgPSAxOworCXNpemVzWzBdID0gZm10ID8gZm10LT5mbXQucGl4LnNpemVpbWFnZSA6IHNrZWwtPmZvcm1hdC5zaXplaW1hZ2U7CisJYWxsb2NfY3R4c1swXSA9IHNrZWwtPmFsbG9jX2N0eDsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFByZXBhcmUgdGhlIGJ1ZmZlciBmb3IgcXVldWVpbmcgdG8gdGhlIERNQSBlbmdpbmU6IGNoZWNrIGFuZCBzZXQgdGhlCisgKiBwYXlsb2FkIHNpemUuCisgKi8KK3N0YXRpYyBpbnQgYnVmZmVyX3ByZXBhcmUoc3RydWN0IHZiMl9idWZmZXIgKnZiKQoreworCXN0cnVjdCBza2VsZXRvbiAqc2tlbCA9IHZiMl9nZXRfZHJ2X3ByaXYodmItPnZiMl9xdWV1ZSk7CisJdW5zaWduZWQgbG9uZyBzaXplID0gc2tlbC0+Zm9ybWF0LnNpemVpbWFnZTsKKworCWlmICh2YjJfcGxhbmVfc2l6ZSh2YiwgMCkgPCBzaXplKSB7CisJCWRldl9lcnIoJnNrZWwtPnBkZXYtPmRldiwgImJ1ZmZlciB0b28gc21hbGwgKCVsdSA8ICVsdSlcbiIsCisJCQkgdmIyX3BsYW5lX3NpemUodmIsIDApLCBzaXplKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJdmIyX3NldF9wbGFuZV9wYXlsb2FkKHZiLCAwLCBzaXplKTsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFF1ZXVlIHRoaXMgYnVmZmVyIHRvIHRoZSBETUEgZW5naW5lLgorICovCitzdGF0aWMgdm9pZCBidWZmZXJfcXVldWUoc3RydWN0IHZiMl9idWZmZXIgKnZiKQoreworCXN0cnVjdCBza2VsZXRvbiAqc2tlbCA9IHZiMl9nZXRfZHJ2X3ByaXYodmItPnZiMl9xdWV1ZSk7CisJc3RydWN0IHNrZWxfYnVmZmVyICpidWYgPSB0b19za2VsX2J1ZmZlcih2Yik7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZza2VsLT5xbG9jaywgZmxhZ3MpOworCWxpc3RfYWRkX3RhaWwoJmJ1Zi0+bGlzdCwgJnNrZWwtPmJ1Zl9saXN0KTsKKworCS8qIFRPRE86IFVwZGF0ZSBhbnkgRE1BIHBvaW50ZXJzIGlmIG5lY2Vzc2FyeSAqLworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2tlbC0+cWxvY2ssIGZsYWdzKTsKK30KKworc3RhdGljIHZvaWQgcmV0dXJuX2FsbF9idWZmZXJzKHN0cnVjdCBza2VsZXRvbiAqc2tlbCwKKwkJCSAgICAgICBlbnVtIHZiMl9idWZmZXJfc3RhdGUgc3RhdGUpCit7CisJc3RydWN0IHNrZWxfYnVmZmVyICpidWYsICpub2RlOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmc2tlbC0+cWxvY2ssIGZsYWdzKTsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYnVmLCBub2RlLCAmc2tlbC0+YnVmX2xpc3QsIGxpc3QpIHsKKwkJdmIyX2J1ZmZlcl9kb25lKCZidWYtPnZiLCBzdGF0ZSk7CisJCWxpc3RfZGVsKCZidWYtPmxpc3QpOworCX0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZza2VsLT5xbG9jaywgZmxhZ3MpOworfQorCisvKgorICogU3RhcnQgc3RyZWFtaW5nLiBGaXJzdCBjaGVjayBpZiB0aGUgbWluaW11bSBudW1iZXIgb2YgYnVmZmVycyBoYXZlIGJlZW4KKyAqIHF1ZXVlZC4gSWYgbm90LCB0aGVuIHJldHVybiAtRU5PQlVGUyBhbmQgdGhlIHZiMiBmcmFtZXdvcmsgd2lsbCBjYWxsCisgKiB0aGlzIGZ1bmN0aW9uIGFnYWluIHRoZSBuZXh0IHRpbWUgYSBidWZmZXIgaGFzIGJlZW4gcXVldWVkIHVudGlsIGVub3VnaAorICogYnVmZmVycyBhcmUgYXZhaWxhYmxlIHRvIGFjdHVhbGx5IHN0YXJ0IHRoZSBETUEgZW5naW5lLgorICovCitzdGF0aWMgaW50IHN0YXJ0X3N0cmVhbWluZyhzdHJ1Y3QgdmIyX3F1ZXVlICp2cSwgdW5zaWduZWQgaW50IGNvdW50KQoreworCXN0cnVjdCBza2VsZXRvbiAqc2tlbCA9IHZiMl9nZXRfZHJ2X3ByaXYodnEpOworCWludCByZXQgPSAwOworCisJc2tlbC0+c2VxdWVuY2UgPSAwOworCisJLyogVE9ETzogc3RhcnQgRE1BICovCisKKwlpZiAocmV0KSB7CisJCS8qCisJCSAqIEluIGNhc2Ugb2YgYW4gZXJyb3IsIHJldHVybiBhbGwgYWN0aXZlIGJ1ZmZlcnMgdG8gdGhlCisJCSAqIFFVRVVFRCBzdGF0ZQorCQkgKi8KKwkJcmV0dXJuX2FsbF9idWZmZXJzKHNrZWwsIFZCMl9CVUZfU1RBVEVfUVVFVUVEKTsKKwl9CisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIFN0b3AgdGhlIERNQSBlbmdpbmUuIEFueSByZW1haW5pbmcgYnVmZmVycyBpbiB0aGUgRE1BIHF1ZXVlIGFyZSBkZXF1ZXVlZAorICogYW5kIHBhc3NlZCBvbiB0byB0aGUgdmIyIGZyYW1ld29yayBtYXJrZWQgYXMgU1RBVEVfRVJST1IuCisgKi8KK3N0YXRpYyB2b2lkIHN0b3Bfc3RyZWFtaW5nKHN0cnVjdCB2YjJfcXVldWUgKnZxKQoreworCXN0cnVjdCBza2VsZXRvbiAqc2tlbCA9IHZiMl9nZXRfZHJ2X3ByaXYodnEpOworCisJLyogVE9ETzogc3RvcCBETUEgKi8KKworCS8qIFJlbGVhc2UgYWxsIGFjdGl2ZSBidWZmZXJzICovCisJcmV0dXJuX2FsbF9idWZmZXJzKHNrZWwsIFZCMl9CVUZfU1RBVEVfRVJST1IpOworfQorCisvKgorICogVGhlIHZiMiBxdWV1ZSBvcHMuIE5vdGUgdGhhdCBzaW5jZSBxLT5sb2NrIGlzIHNldCB3ZSBjYW4gdXNlIHRoZSBzdGFuZGFyZAorICogdmIyX29wc193YWl0X3ByZXBhcmUvZmluaXNoIGhlbHBlciBmdW5jdGlvbnMuIElmIHEtPmxvY2sgd291bGQgYmUgTlVMTCwKKyAqIHRoZW4gdGhpcyBkcml2ZXIgd291bGQgaGF2ZSB0byBwcm92aWRlIHRoZXNlIG9wcy4KKyAqLworc3RhdGljIHN0cnVjdCB2YjJfb3BzIHNrZWxfcW9wcyA9IHsKKwkucXVldWVfc2V0dXAJCT0gcXVldWVfc2V0dXAsCisJLmJ1Zl9wcmVwYXJlCQk9IGJ1ZmZlcl9wcmVwYXJlLAorCS5idWZfcXVldWUJCT0gYnVmZmVyX3F1ZXVlLAorCS5zdGFydF9zdHJlYW1pbmcJPSBzdGFydF9zdHJlYW1pbmcsCisJLnN0b3Bfc3RyZWFtaW5nCQk9IHN0b3Bfc3RyZWFtaW5nLAorCS53YWl0X3ByZXBhcmUJCT0gdmIyX29wc193YWl0X3ByZXBhcmUsCisJLndhaXRfZmluaXNoCQk9IHZiMl9vcHNfd2FpdF9maW5pc2gsCit9OworCisvKgorICogUmVxdWlyZWQgaW9jdGwgcXVlcnljYXAuIE5vdGUgdGhhdCB0aGUgdmVyc2lvbiBmaWVsZCBpcyBwcmVmaWxsZWQgd2l0aAorICogdGhlIHZlcnNpb24gb2YgdGhlIGtlcm5lbC4KKyAqLworc3RhdGljIGludCBza2VsZXRvbl9xdWVyeWNhcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwKKwkJCSAgICAgc3RydWN0IHY0bDJfY2FwYWJpbGl0eSAqY2FwKQoreworCXN0cnVjdCBza2VsZXRvbiAqc2tlbCA9IHZpZGVvX2RydmRhdGEoZmlsZSk7CisKKwlzdHJsY3B5KGNhcC0+ZHJpdmVyLCBLQlVJTERfTU9ETkFNRSwgc2l6ZW9mKGNhcC0+ZHJpdmVyKSk7CisJc3RybGNweShjYXAtPmNhcmQsICJWNEwyIFBDSSBTa2VsZXRvbiIsIHNpemVvZihjYXAtPmNhcmQpKTsKKwlzbnByaW50ZihjYXAtPmJ1c19pbmZvLCBzaXplb2YoY2FwLT5idXNfaW5mbyksICJQQ0k6JXMiLAorCQkgcGNpX25hbWUoc2tlbC0+cGRldikpOworCWNhcC0+ZGV2aWNlX2NhcHMgPSBWNEwyX0NBUF9WSURFT19DQVBUVVJFIHwgVjRMMl9DQVBfUkVBRFdSSVRFIHwKKwkJCSAgIFY0TDJfQ0FQX1NUUkVBTUlORzsKKwljYXAtPmNhcGFiaWxpdGllcyA9IGNhcC0+ZGV2aWNlX2NhcHMgfCBWNEwyX0NBUF9ERVZJQ0VfQ0FQUzsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiB0byBjaGVjayBhbmQgY29ycmVjdCBzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0LiBJdCdzIHVzZWQKKyAqIG5vdCBvbmx5IGluIFZJRElPQ19UUlkvU19GTVQsIGJ1dCBhbHNvIGVsc2V3aGVyZSBpZiBjaGFuZ2VzIHRvIHRoZSBTRFRWCisgKiBzdGFuZGFyZCwgSERUViB0aW1pbmdzIG9yIHRoZSB2aWRlbyBpbnB1dCB3b3VsZCByZXF1aXJlIHVwZGF0aW5nIHRoZQorICogY3VycmVudCBmb3JtYXQuCisgKi8KK3N0YXRpYyB2b2lkIHNrZWxldG9uX2ZpbGxfcGl4X2Zvcm1hdChzdHJ1Y3Qgc2tlbGV0b24gKnNrZWwsCisJCQkJICAgICBzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0ICpwaXgpCit7CisJcGl4LT5waXhlbGZvcm1hdCA9IFY0TDJfUElYX0ZNVF9ZVVlWOworCWlmIChza2VsLT5pbnB1dCA9PSAwKSB7CisJCS8qIFMtVmlkZW8gaW5wdXQgKi8KKwkJcGl4LT53aWR0aCA9IDcyMDsKKwkJcGl4LT5oZWlnaHQgPSAoc2tlbC0+c3RkICYgVjRMMl9TVERfNTI1XzYwKSA/IDQ4MCA6IDU3NjsKKwkJcGl4LT5maWVsZCA9IFY0TDJfRklFTERfSU5URVJMQUNFRDsKKwkJcGl4LT5jb2xvcnNwYWNlID0gVjRMMl9DT0xPUlNQQUNFX1NNUFRFMTcwTTsKKwl9IGVsc2UgeworCQkvKiBIRE1JIGlucHV0ICovCisJCXBpeC0+d2lkdGggPSBza2VsLT50aW1pbmdzLmJ0LndpZHRoOworCQlwaXgtPmhlaWdodCA9IHNrZWwtPnRpbWluZ3MuYnQuaGVpZ2h0OworCQlpZiAoc2tlbC0+dGltaW5ncy5idC5pbnRlcmxhY2VkKSB7CisJCQlwaXgtPmZpZWxkID0gVjRMMl9GSUVMRF9BTFRFUk5BVEU7CisJCQlwaXgtPmhlaWdodCAvPSAyOworCQl9IGVsc2UgeworCQkJcGl4LT5maWVsZCA9IFY0TDJfRklFTERfTk9ORTsKKwkJfQorCQlwaXgtPmNvbG9yc3BhY2UgPSBWNEwyX0NPTE9SU1BBQ0VfUkVDNzA5OworCX0KKworCS8qCisJICogVGhlIFlVWVYgZm9ybWF0IGlzIGZvdXIgYnl0ZXMgZm9yIGV2ZXJ5IHR3byBwaXhlbHMsIHNvIGJ5dGVzcGVybGluZQorCSAqIGlzIHdpZHRoICogMi4KKwkgKi8KKwlwaXgtPmJ5dGVzcGVybGluZSA9IHBpeC0+d2lkdGggKiAyOworCXBpeC0+c2l6ZWltYWdlID0gcGl4LT5ieXRlc3BlcmxpbmUgKiBwaXgtPmhlaWdodDsKKwlwaXgtPnByaXYgPSAwOworfQorCitzdGF0aWMgaW50IHNrZWxldG9uX3RyeV9mbXRfdmlkX2NhcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwKKwkJCQkgICAgc3RydWN0IHY0bDJfZm9ybWF0ICpmKQoreworCXN0cnVjdCBza2VsZXRvbiAqc2tlbCA9IHZpZGVvX2RydmRhdGEoZmlsZSk7CisJc3RydWN0IHY0bDJfcGl4X2Zvcm1hdCAqcGl4ID0gJmYtPmZtdC5waXg7CisKKwkvKgorCSAqIER1ZSB0byBoaXN0b3JpY2FsIHJlYXNvbnMgcHJvdmlkaW5nIHRyeV9mbXQgd2l0aCBhbiB1bnN1cHBvcnRlZAorCSAqIHBpeGVsZm9ybWF0IHdpbGwgcmV0dXJuIC1FSU5WQUwgZm9yIHZpZGVvIHJlY2VpdmVycy4gV2ViY2FtIGRyaXZlcnMsCisJICogaG93ZXZlciwgd2lsbCBzaWxlbnRseSBjb3JyZWN0IHRoZSBwaXhlbGZvcm1hdC4gU29tZSB2aWRlbyBjYXB0dXJlCisJICogYXBwbGljYXRpb25zIHJlbHkgb24gdGhpcyBiZWhhdmlvci4uLgorCSAqLworCWlmIChwaXgtPnBpeGVsZm9ybWF0ICE9IFY0TDJfUElYX0ZNVF9ZVVlWKQorCQlyZXR1cm4gLUVJTlZBTDsKKwlza2VsZXRvbl9maWxsX3BpeF9mb3JtYXQoc2tlbCwgcGl4KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBza2VsZXRvbl9zX2ZtdF92aWRfY2FwKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LAorCQkJCSAgc3RydWN0IHY0bDJfZm9ybWF0ICpmKQoreworCXN0cnVjdCBza2VsZXRvbiAqc2tlbCA9IHZpZGVvX2RydmRhdGEoZmlsZSk7CisJaW50IHJldDsKKworCXJldCA9IHNrZWxldG9uX3RyeV9mbXRfdmlkX2NhcChmaWxlLCBwcml2LCBmKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJLyoKKwkgKiBJdCBpcyBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdGhlIGZvcm1hdCB3aGlsZSBidWZmZXJzIGZvciB1c2Ugd2l0aAorCSAqIHN0cmVhbWluZyBoYXZlIGFscmVhZHkgYmVlbiBhbGxvY2F0ZWQuCisJICovCisJaWYgKHZiMl9pc19idXN5KCZza2VsLT5xdWV1ZSkpCisJCXJldHVybiAtRUJVU1k7CisKKwkvKiBUT0RPOiBjaGFuZ2UgZm9ybWF0ICovCisJc2tlbC0+Zm9ybWF0ID0gZi0+Zm10LnBpeDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBza2VsZXRvbl9nX2ZtdF92aWRfY2FwKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LAorCQkJCSAgc3RydWN0IHY0bDJfZm9ybWF0ICpmKQoreworCXN0cnVjdCBza2VsZXRvbiAqc2tlbCA9IHZpZGVvX2RydmRhdGEoZmlsZSk7CisKKwlmLT5mbXQucGl4ID0gc2tlbC0+Zm9ybWF0OworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNrZWxldG9uX2VudW1fZm10X3ZpZF9jYXAoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsCisJCQkJICAgICBzdHJ1Y3QgdjRsMl9mbXRkZXNjICpmKQoreworCWlmIChmLT5pbmRleCAhPSAwKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWYtPnBpeGVsZm9ybWF0ID0gVjRMMl9QSVhfRk1UX1lVWVY7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc2tlbGV0b25fc19zdGQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsIHY0bDJfc3RkX2lkIHN0ZCkKK3sKKwlzdHJ1Y3Qgc2tlbGV0b24gKnNrZWwgPSB2aWRlb19kcnZkYXRhKGZpbGUpOworCisJLyogU19TVEQgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGUgSERNSSBpbnB1dCAqLworCWlmIChza2VsLT5pbnB1dCkKKwkJcmV0dXJuIC1FTk9EQVRBOworCisJLyoKKwkgKiBObyBjaGFuZ2UsIHNvIGp1c3QgcmV0dXJuLiBTb21lIGFwcGxpY2F0aW9ucyBjYWxsIFNfU1REIGFnYWluIGFmdGVyCisJICogdGhlIGJ1ZmZlcnMgZm9yIHN0cmVhbWluZyBoYXZlIGJlZW4gc2V0IHVwLCBzbyB3ZSBoYXZlIHRvIGFsbG93IGZvcgorCSAqIHRoaXMgYmVoYXZpb3IuCisJICovCisJaWYgKHN0ZCA9PSBza2VsLT5zdGQpCisJCXJldHVybiAwOworCisJLyoKKwkgKiBDaGFuZ2luZyB0aGUgc3RhbmRhcmQgaW1wbGllcyBhIGZvcm1hdCBjaGFuZ2UsIHdoaWNoIGlzIG5vdCBhbGxvd2VkCisJICogd2hpbGUgYnVmZmVycyBmb3IgdXNlIHdpdGggc3RyZWFtaW5nIGhhdmUgYWxyZWFkeSBiZWVuIGFsbG9jYXRlZC4KKwkgKi8KKwlpZiAodmIyX2lzX2J1c3koJnNrZWwtPnF1ZXVlKSkKKwkJcmV0dXJuIC1FQlVTWTsKKworCS8qIFRPRE86IGhhbmRsZSBjaGFuZ2luZyBzdGQgKi8KKworCXNrZWwtPnN0ZCA9IHN0ZDsKKworCS8qIFVwZGF0ZSB0aGUgaW50ZXJuYWwgZm9ybWF0ICovCisJc2tlbGV0b25fZmlsbF9waXhfZm9ybWF0KHNrZWwsICZza2VsLT5mb3JtYXQpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNrZWxldG9uX2dfc3RkKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LCB2NGwyX3N0ZF9pZCAqc3RkKQoreworCXN0cnVjdCBza2VsZXRvbiAqc2tlbCA9IHZpZGVvX2RydmRhdGEoZmlsZSk7CisKKwkvKiBHX1NURCBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoZSBIRE1JIGlucHV0ICovCisJaWYgKHNrZWwtPmlucHV0KQorCQlyZXR1cm4gLUVOT0RBVEE7CisKKwkqc3RkID0gc2tlbC0+c3RkOworCXJldHVybiAwOworfQorCisvKgorICogUXVlcnkgdGhlIGN1cnJlbnQgc3RhbmRhcmQgYXMgc2VlbiBieSB0aGUgaGFyZHdhcmUuIFRoaXMgZnVuY3Rpb24gc2hhbGwKKyAqIG5ldmVyIGFjdHVhbGx5IGNoYW5nZSB0aGUgc3RhbmRhcmQsIGl0IGp1c3QgZGV0ZWN0cyBhbmQgcmVwb3J0cy4KKyAqIFRoZSBmcmFtZXdvcmsgd2lsbCBpbml0aWFsbHkgc2V0ICpzdGQgdG8gdHZub3JtcyAoaS5lLiB0aGUgc2V0IG9mCisgKiBzdXBwb3J0ZWQgc3RhbmRhcmRzIGJ5IHRoaXMgaW5wdXQpLCBhbmQgdGhpcyBmdW5jdGlvbiBzaG91bGQganVzdCBBTkQKKyAqIHRoaXMgdmFsdWUuIElmIHRoZXJlIGlzIG5vIHNpZ25hbCwgdGhlbiAqc3RkIHNob3VsZCBiZSBzZXQgdG8gMC4KKyAqLworc3RhdGljIGludCBza2VsZXRvbl9xdWVyeXN0ZChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwgdjRsMl9zdGRfaWQgKnN0ZCkKK3sKKwlzdHJ1Y3Qgc2tlbGV0b24gKnNrZWwgPSB2aWRlb19kcnZkYXRhKGZpbGUpOworCisJLyogUVVFUllfU1REIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhlIEhETUkgaW5wdXQgKi8KKwlpZiAoc2tlbC0+aW5wdXQpCisJCXJldHVybiAtRU5PREFUQTsKKworI2lmZGVmIFRPRE8KKwkvKgorCSAqIFF1ZXJ5IGN1cnJlbnRseSBzZWVuIHN0YW5kYXJkLiBJbml0aWFsIHZhbHVlIG9mICpzdGQgaXMKKwkgKiBWNEwyX1NURF9BTEwuIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGxvb2sgc29tZXRoaW5nIGxpa2UgdGhpczoKKwkgKi8KKwlnZXRfc2lnbmFsX2luZm8oKTsKKwlpZiAobm9fc2lnbmFsKSB7CisJCSpzdGQgPSAwOworCQlyZXR1cm4gMDsKKwl9CisJLyogVXNlIHNpZ25hbCBpbmZvcm1hdGlvbiB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBwb3NzaWJsZSBzdGFuZGFyZHMgKi8KKwlpZiAoc2lnbmFsX2hhc181MjVfbGluZXMpCisJCSpzdGQgJj0gVjRMMl9TVERfNTI1XzYwOworCWVsc2UKKwkJKnN0ZCAmPSBWNEwyX1NURF82MjVfNTA7CisjZW5kaWYKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBza2VsZXRvbl9zX2R2X3RpbWluZ3Moc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKl9maCwKKwkJCQkgc3RydWN0IHY0bDJfZHZfdGltaW5ncyAqdGltaW5ncykKK3sKKwlzdHJ1Y3Qgc2tlbGV0b24gKnNrZWwgPSB2aWRlb19kcnZkYXRhKGZpbGUpOworCisJLyogU19EVl9USU1JTkdTIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhlIFMtVmlkZW8gaW5wdXQgKi8KKwlpZiAoc2tlbC0+aW5wdXQgPT0gMCkKKwkJcmV0dXJuIC1FTk9EQVRBOworCisJLyogUXVpY2sgc2FuaXR5IGNoZWNrICovCisJaWYgKCF2NGwyX3ZhbGlkX2R2X3RpbWluZ3ModGltaW5ncywgJnNrZWxfdGltaW5nc19jYXAsIE5VTEwsIE5VTEwpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIENoZWNrIGlmIHRoZSB0aW1pbmdzIGFyZSBwYXJ0IG9mIHRoZSBDRUEtODYxIHRpbWluZ3MuICovCisJaWYgKCF2NGwyX2ZpbmRfZHZfdGltaW5nc19jYXAodGltaW5ncywgJnNrZWxfdGltaW5nc19jYXAsCisJCQkJICAgICAgMCwgTlVMTCwgTlVMTCkpCisJCXJldHVybiAtRUlOVkFMOworCisJLyogUmV0dXJuIDAgaWYgdGhlIG5ldyB0aW1pbmdzIGFyZSB0aGUgc2FtZSBhcyB0aGUgY3VycmVudCB0aW1pbmdzLiAqLworCWlmICh2NGwyX21hdGNoX2R2X3RpbWluZ3ModGltaW5ncywgJnNrZWwtPnRpbWluZ3MsIDApKQorCQlyZXR1cm4gMDsKKworCS8qCisJICogQ2hhbmdpbmcgdGhlIHRpbWluZ3MgaW1wbGllcyBhIGZvcm1hdCBjaGFuZ2UsIHdoaWNoIGlzIG5vdCBhbGxvd2VkCisJICogd2hpbGUgYnVmZmVycyBmb3IgdXNlIHdpdGggc3RyZWFtaW5nIGhhdmUgYWxyZWFkeSBiZWVuIGFsbG9jYXRlZC4KKwkgKi8KKwlpZiAodmIyX2lzX2J1c3koJnNrZWwtPnF1ZXVlKSkKKwkJcmV0dXJuIC1FQlVTWTsKKworCS8qIFRPRE86IENvbmZpZ3VyZSBuZXcgdGltaW5ncyAqLworCisJLyogU2F2ZSB0aW1pbmdzICovCisJc2tlbC0+dGltaW5ncyA9ICp0aW1pbmdzOworCisJLyogVXBkYXRlIHRoZSBpbnRlcm5hbCBmb3JtYXQgKi8KKwlza2VsZXRvbl9maWxsX3BpeF9mb3JtYXQoc2tlbCwgJnNrZWwtPmZvcm1hdCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc2tlbGV0b25fZ19kdl90aW1pbmdzKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpfZmgsCisJCQkJIHN0cnVjdCB2NGwyX2R2X3RpbWluZ3MgKnRpbWluZ3MpCit7CisJc3RydWN0IHNrZWxldG9uICpza2VsID0gdmlkZW9fZHJ2ZGF0YShmaWxlKTsKKworCS8qIEdfRFZfVElNSU5HUyBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoZSBTLVZpZGVvIGlucHV0ICovCisJaWYgKHNrZWwtPmlucHV0ID09IDApCisJCXJldHVybiAtRU5PREFUQTsKKworCSp0aW1pbmdzID0gc2tlbC0+dGltaW5nczsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBza2VsZXRvbl9lbnVtX2R2X3RpbWluZ3Moc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKl9maCwKKwkJCQkgICAgc3RydWN0IHY0bDJfZW51bV9kdl90aW1pbmdzICp0aW1pbmdzKQoreworCXN0cnVjdCBza2VsZXRvbiAqc2tlbCA9IHZpZGVvX2RydmRhdGEoZmlsZSk7CisKKwkvKiBFTlVNX0RWX1RJTUlOR1MgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGUgUy1WaWRlbyBpbnB1dCAqLworCWlmIChza2VsLT5pbnB1dCA9PSAwKQorCQlyZXR1cm4gLUVOT0RBVEE7CisKKwlyZXR1cm4gdjRsMl9lbnVtX2R2X3RpbWluZ3NfY2FwKHRpbWluZ3MsICZza2VsX3RpbWluZ3NfY2FwLAorCQkJCQlOVUxMLCBOVUxMKTsKK30KKworLyoKKyAqIFF1ZXJ5IHRoZSBjdXJyZW50IHRpbWluZ3MgYXMgc2VlbiBieSB0aGUgaGFyZHdhcmUuIFRoaXMgZnVuY3Rpb24gc2hhbGwKKyAqIG5ldmVyIGFjdHVhbGx5IGNoYW5nZSB0aGUgdGltaW5ncywgaXQganVzdCBkZXRlY3RzIGFuZCByZXBvcnRzLgorICogSWYgbm8gc2lnbmFsIGlzIGRldGVjdGVkLCB0aGVuIHJldHVybiAtRU5PTElOSy4gSWYgdGhlIGhhcmR3YXJlIGNhbm5vdAorICogbG9jayB0byB0aGUgc2lnbmFsLCB0aGVuIHJldHVybiAtRU5PTENLLiBJZiB0aGUgc2lnbmFsIGlzIG91dCBvZiByYW5nZQorICogb2YgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgc3lzdGVtIChlLmcuLCBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSByZWNlaXZlcgorICogY2FuIGxvY2sgYnV0IHRoYXQgdGhlIERNQSBlbmdpbmUgaXQgaXMgY29ubmVjdGVkIHRvIGNhbm5vdCBoYW5kbGUKKyAqIHBpeGVsY2xvY2tzIGFib3ZlIGEgY2VydGFpbiBmcmVxdWVuY3kpLCB0aGVuIC1FUkFOR0UgaXMgcmV0dXJuZWQuCisgKi8KK3N0YXRpYyBpbnQgc2tlbGV0b25fcXVlcnlfZHZfdGltaW5ncyhzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqX2ZoLAorCQkJCSAgICAgc3RydWN0IHY0bDJfZHZfdGltaW5ncyAqdGltaW5ncykKK3sKKwlzdHJ1Y3Qgc2tlbGV0b24gKnNrZWwgPSB2aWRlb19kcnZkYXRhKGZpbGUpOworCisJLyogUVVFUllfRFZfVElNSU5HUyBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoZSBTLVZpZGVvIGlucHV0ICovCisJaWYgKHNrZWwtPmlucHV0ID09IDApCisJCXJldHVybiAtRU5PREFUQTsKKworI2lmZGVmIFRPRE8KKwkvKgorCSAqIFF1ZXJ5IGN1cnJlbnRseSBzZWVuIHRpbWluZ3MuIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGxvb2sKKwkgKiBzb21ldGhpbmcgbGlrZSB0aGlzOgorCSAqLworCWRldGVjdF90aW1pbmdzKCk7CisJaWYgKG5vX3NpZ25hbCkKKwkJcmV0dXJuIC1FTk9MSU5LOworCWlmIChjYW5ub3RfbG9ja190b19zaWduYWwpCisJCXJldHVybiAtRU5PTENLOworCWlmIChzaWduYWxfb3V0X29mX3JhbmdlX29mX2NhcGFiaWxpdGllcykKKwkJcmV0dXJuIC1FUkFOR0U7CisKKwkvKiBVc2VmdWwgZm9yIGRlYnVnZ2luZyAqLworCXY0bDJfcHJpbnRfZHZfdGltaW5ncyhza2VsLT52NGwyX2Rldi5uYW1lLCAicXVlcnlfZHZfdGltaW5nczoiLAorCQkJdGltaW5ncywgdHJ1ZSk7CisjZW5kaWYKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBza2VsZXRvbl9kdl90aW1pbmdzX2NhcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsCisJCQkJICAgc3RydWN0IHY0bDJfZHZfdGltaW5nc19jYXAgKmNhcCkKK3sKKwlzdHJ1Y3Qgc2tlbGV0b24gKnNrZWwgPSB2aWRlb19kcnZkYXRhKGZpbGUpOworCisJLyogRFZfVElNSU5HU19DQVAgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGUgUy1WaWRlbyBpbnB1dCAqLworCWlmIChza2VsLT5pbnB1dCA9PSAwKQorCQlyZXR1cm4gLUVOT0RBVEE7CisJKmNhcCA9IHNrZWxfdGltaW5nc19jYXA7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc2tlbGV0b25fZW51bV9pbnB1dChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwKKwkJCSAgICAgICBzdHJ1Y3QgdjRsMl9pbnB1dCAqaSkKK3sKKwlpZiAoaS0+aW5kZXggPiAxKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWktPnR5cGUgPSBWNEwyX0lOUFVUX1RZUEVfQ0FNRVJBOworCWlmIChpLT5pbmRleCA9PSAwKSB7CisJCWktPnN0ZCA9IFNLRUxfVFZOT1JNUzsKKwkJc3RybGNweShpLT5uYW1lLCAiUy1WaWRlbyIsIHNpemVvZihpLT5uYW1lKSk7CisJCWktPmNhcGFiaWxpdGllcyA9IFY0TDJfSU5fQ0FQX1NURDsKKwl9IGVsc2UgeworCQlpLT5zdGQgPSAwOworCQlzdHJsY3B5KGktPm5hbWUsICJIRE1JIiwgc2l6ZW9mKGktPm5hbWUpKTsKKwkJaS0+Y2FwYWJpbGl0aWVzID0gVjRMMl9JTl9DQVBfRFZfVElNSU5HUzsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc2tlbGV0b25fc19pbnB1dChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwgdW5zaWduZWQgaW50IGkpCit7CisJc3RydWN0IHNrZWxldG9uICpza2VsID0gdmlkZW9fZHJ2ZGF0YShmaWxlKTsKKworCWlmIChpID4gMSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKgorCSAqIENoYW5naW5nIHRoZSBpbnB1dCBpbXBsaWVzIGEgZm9ybWF0IGNoYW5nZSwgd2hpY2ggaXMgbm90IGFsbG93ZWQKKwkgKiB3aGlsZSBidWZmZXJzIGZvciB1c2Ugd2l0aCBzdHJlYW1pbmcgaGF2ZSBhbHJlYWR5IGJlZW4gYWxsb2NhdGVkLgorCSAqLworCWlmICh2YjJfaXNfYnVzeSgmc2tlbC0+cXVldWUpKQorCQlyZXR1cm4gLUVCVVNZOworCisJc2tlbC0+aW5wdXQgPSBpOworCS8qCisJICogVXBkYXRlIHR2bm9ybXMuIFRoZSB0dm5vcm1zIHZhbHVlIGlzIHVzZWQgYnkgdGhlIGNvcmUgdG8gaW1wbGVtZW50CisJICogVklESU9DX0VOVU1TVEQgc28gaXQgaGFzIHRvIGJlIGNvcnJlY3QuIElmIHR2bm9ybXMgPT0gMCwgdGhlbgorCSAqIEVOVU1TVEQgd2lsbCByZXR1cm4gLUVOT0RBVEEuCisJICovCisJc2tlbC0+dmRldi50dm5vcm1zID0gaSA/IDAgOiBTS0VMX1RWTk9STVM7CisKKwkvKiBVcGRhdGUgdGhlIGludGVybmFsIGZvcm1hdCAqLworCXNrZWxldG9uX2ZpbGxfcGl4X2Zvcm1hdChza2VsLCAmc2tlbC0+Zm9ybWF0KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBza2VsZXRvbl9nX2lucHV0KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LCB1bnNpZ25lZCBpbnQgKmkpCit7CisJc3RydWN0IHNrZWxldG9uICpza2VsID0gdmlkZW9fZHJ2ZGF0YShmaWxlKTsKKworCSppID0gc2tlbC0+aW5wdXQ7CisJcmV0dXJuIDA7Cit9CisKKy8qIFRoZSBjb250cm9sIGhhbmRsZXIuICovCitzdGF0aWMgaW50IHNrZWxldG9uX3NfY3RybChzdHJ1Y3QgdjRsMl9jdHJsICpjdHJsKQoreworCS8qc3RydWN0IHNrZWxldG9uICpza2VsID0KKwkJY29udGFpbmVyX29mKGN0cmwtPmhhbmRsZXIsIHN0cnVjdCBza2VsZXRvbiwgY3RybF9oYW5kbGVyKTsqLworCisJc3dpdGNoIChjdHJsLT5pZCkgeworCWNhc2UgVjRMMl9DSURfQlJJR0hUTkVTUzoKKwkJLyogVE9ETzogc2V0IGJyaWdodG5lc3MgdG8gY3RybC0+dmFsICovCisJCWJyZWFrOworCWNhc2UgVjRMMl9DSURfQ09OVFJBU1Q6CisJCS8qIFRPRE86IHNldCBjb250cmFzdCB0byBjdHJsLT52YWwgKi8KKwkJYnJlYWs7CisJY2FzZSBWNEwyX0NJRF9TQVRVUkFUSU9OOgorCQkvKiBUT0RPOiBzZXQgc2F0dXJhdGlvbiB0byBjdHJsLT52YWwgKi8KKwkJYnJlYWs7CisJY2FzZSBWNEwyX0NJRF9IVUU6CisJCS8qIFRPRE86IHNldCBodWUgdG8gY3RybC0+dmFsICovCisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiAtRUlOVkFMOworCX0KKwlyZXR1cm4gMDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJRmlsZSBvcGVyYXRpb25zIGZvciB0aGUgZGV2aWNlCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCitzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfY3RybF9vcHMgc2tlbF9jdHJsX29wcyA9IHsKKwkuc19jdHJsID0gc2tlbGV0b25fc19jdHJsLAorfTsKKworLyoKKyAqIFRoZSBzZXQgb2YgYWxsIHN1cHBvcnRlZCBpb2N0bHMuIE5vdGUgdGhhdCBhbGwgdGhlIHN0cmVhbWluZyBpb2N0bHMKKyAqIHVzZSB0aGUgdmIyIGhlbHBlciBmdW5jdGlvbnMgdGhhdCB0YWtlIGNhcmUgb2YgYWxsIHRoZSBsb2NraW5nIGFuZAorICogdGhhdCBhbHNvIGRvIG93bmVyc2hpcCB0cmFja2luZyAoaS5lLiBvbmx5IHRoZSBmaWxlaGFuZGxlIHRoYXQgcmVxdWVzdGVkCisgKiB0aGUgYnVmZmVycyBjYW4gY2FsbCB0aGUgc3RyZWFtaW5nIGlvY3RscywgYWxsIG90aGVyIGZpbGVoYW5kbGVzIHdpbGwKKyAqIHJlY2VpdmUgLUVCVVNZIGlmIHRoZXkgYXR0ZW1wdCB0byBjYWxsIHRoZSBzYW1lIHN0cmVhbWluZyBpb2N0bHMpLgorICoKKyAqIFRoZSBsYXN0IHRocmVlIGlvY3RscyBhbHNvIHVzZSBzdGFuZGFyZCBoZWxwZXIgZnVuY3Rpb25zOiB0aGVzZSBpbXBsZW1lbnQKKyAqIHN0YW5kYXJkIGJlaGF2aW9yIGZvciBkcml2ZXJzIHdpdGggY29udHJvbHMuCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9pb2N0bF9vcHMgc2tlbF9pb2N0bF9vcHMgPSB7CisJLnZpZGlvY19xdWVyeWNhcCA9IHNrZWxldG9uX3F1ZXJ5Y2FwLAorCS52aWRpb2NfdHJ5X2ZtdF92aWRfY2FwID0gc2tlbGV0b25fdHJ5X2ZtdF92aWRfY2FwLAorCS52aWRpb2Nfc19mbXRfdmlkX2NhcCA9IHNrZWxldG9uX3NfZm10X3ZpZF9jYXAsCisJLnZpZGlvY19nX2ZtdF92aWRfY2FwID0gc2tlbGV0b25fZ19mbXRfdmlkX2NhcCwKKwkudmlkaW9jX2VudW1fZm10X3ZpZF9jYXAgPSBza2VsZXRvbl9lbnVtX2ZtdF92aWRfY2FwLAorCisJLnZpZGlvY19nX3N0ZCA9IHNrZWxldG9uX2dfc3RkLAorCS52aWRpb2Nfc19zdGQgPSBza2VsZXRvbl9zX3N0ZCwKKwkudmlkaW9jX3F1ZXJ5c3RkID0gc2tlbGV0b25fcXVlcnlzdGQsCisKKwkudmlkaW9jX3NfZHZfdGltaW5ncyA9IHNrZWxldG9uX3NfZHZfdGltaW5ncywKKwkudmlkaW9jX2dfZHZfdGltaW5ncyA9IHNrZWxldG9uX2dfZHZfdGltaW5ncywKKwkudmlkaW9jX2VudW1fZHZfdGltaW5ncyA9IHNrZWxldG9uX2VudW1fZHZfdGltaW5ncywKKwkudmlkaW9jX3F1ZXJ5X2R2X3RpbWluZ3MgPSBza2VsZXRvbl9xdWVyeV9kdl90aW1pbmdzLAorCS52aWRpb2NfZHZfdGltaW5nc19jYXAgPSBza2VsZXRvbl9kdl90aW1pbmdzX2NhcCwKKworCS52aWRpb2NfZW51bV9pbnB1dCA9IHNrZWxldG9uX2VudW1faW5wdXQsCisJLnZpZGlvY19nX2lucHV0ID0gc2tlbGV0b25fZ19pbnB1dCwKKwkudmlkaW9jX3NfaW5wdXQgPSBza2VsZXRvbl9zX2lucHV0LAorCisJLnZpZGlvY19yZXFidWZzID0gdmIyX2lvY3RsX3JlcWJ1ZnMsCisJLnZpZGlvY19jcmVhdGVfYnVmcyA9IHZiMl9pb2N0bF9jcmVhdGVfYnVmcywKKwkudmlkaW9jX3F1ZXJ5YnVmID0gdmIyX2lvY3RsX3F1ZXJ5YnVmLAorCS52aWRpb2NfcWJ1ZiA9IHZiMl9pb2N0bF9xYnVmLAorCS52aWRpb2NfZHFidWYgPSB2YjJfaW9jdGxfZHFidWYsCisJLnZpZGlvY19leHBidWYgPSB2YjJfaW9jdGxfZXhwYnVmLAorCS52aWRpb2Nfc3RyZWFtb24gPSB2YjJfaW9jdGxfc3RyZWFtb24sCisJLnZpZGlvY19zdHJlYW1vZmYgPSB2YjJfaW9jdGxfc3RyZWFtb2ZmLAorCisJLnZpZGlvY19sb2dfc3RhdHVzID0gdjRsMl9jdHJsX2xvZ19zdGF0dXMsCisJLnZpZGlvY19zdWJzY3JpYmVfZXZlbnQgPSB2NGwyX2N0cmxfc3Vic2NyaWJlX2V2ZW50LAorCS52aWRpb2NfdW5zdWJzY3JpYmVfZXZlbnQgPSB2NGwyX2V2ZW50X3Vuc3Vic2NyaWJlLAorfTsKKworLyoKKyAqIFRoZSBzZXQgb2YgZmlsZSBvcGVyYXRpb25zLiBOb3RlIHRoYXQgYWxsIHRoZXNlIG9wcyBhcmUgc3RhbmRhcmQgY29yZQorICogaGVscGVyIGZ1bmN0aW9ucy4KKyAqLworc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2ZpbGVfb3BlcmF0aW9ucyBza2VsX2ZvcHMgPSB7CisJLm93bmVyID0gVEhJU19NT0RVTEUsCisJLm9wZW4gPSB2NGwyX2ZoX29wZW4sCisJLnJlbGVhc2UgPSB2YjJfZm9wX3JlbGVhc2UsCisJLnVubG9ja2VkX2lvY3RsID0gdmlkZW9faW9jdGwyLAorCS5yZWFkID0gdmIyX2ZvcF9yZWFkLAorCS5tbWFwID0gdmIyX2ZvcF9tbWFwLAorCS5wb2xsID0gdmIyX2ZvcF9wb2xsLAorfTsKKworLyoKKyAqIFRoZSBpbml0aWFsIHNldHVwIG9mIHRoaXMgZGV2aWNlIGluc3RhbmNlLiBOb3RlIHRoYXQgdGhlIGluaXRpYWwgc3RhdGUgb2YKKyAqIHRoZSBkcml2ZXIgc2hvdWxkIGJlIGNvbXBsZXRlLiBTbyB0aGUgaW5pdGlhbCBmb3JtYXQsIHN0YW5kYXJkLCB0aW1pbmdzCisgKiBhbmQgdmlkZW8gaW5wdXQgc2hvdWxkIGFsbCBiZSBpbml0aWFsaXplZCB0byBzb21lIHJlYXNvbmFibGUgdmFsdWUuCisgKi8KK3N0YXRpYyBpbnQgc2tlbGV0b25fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCit7CisJLyogVGhlIGluaXRpYWwgdGltaW5ncyBhcmUgY2hvc2VuIHRvIGJlIDcyMHA2MC4gKi8KKwlzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfZHZfdGltaW5ncyB0aW1pbmdzX2RlZiA9CisJCVY0TDJfRFZfQlRfQ0VBXzEyODBYNzIwUDYwOworCXN0cnVjdCBza2VsZXRvbiAqc2tlbDsKKwlzdHJ1Y3QgdmlkZW9fZGV2aWNlICp2ZGV2OworCXN0cnVjdCB2NGwyX2N0cmxfaGFuZGxlciAqaGRsOworCXN0cnVjdCB2YjJfcXVldWUgKnE7CisJaW50IHJldDsKKworCS8qIEVuYWJsZSBQQ0kgKi8KKwlyZXQgPSBwY2lfZW5hYmxlX2RldmljZShwZGV2KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCXJldCA9IHBjaV9zZXRfZG1hX21hc2socGRldiwgRE1BX0JJVF9NQVNLKDMyKSk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJubyBzdWl0YWJsZSBETUEgYXZhaWxhYmxlLlxuIik7CisJCWdvdG8gZGlzYWJsZV9wY2k7CisJfQorCisJLyogQWxsb2NhdGUgYSBuZXcgaW5zdGFuY2UgKi8KKwlza2VsID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNpemVvZihzdHJ1Y3Qgc2tlbGV0b24pLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXNrZWwpCisJCXJldHVybiAtRU5PTUVNOworCisJLyogQWxsb2NhdGUgdGhlIGludGVycnVwdCAqLworCXJldCA9IGRldm1fcmVxdWVzdF9pcnEoJnBkZXYtPmRldiwgcGRldi0+aXJxLAorCQkJICAgICAgIHNrZWxldG9uX2lycSwgMCwgS0JVSUxEX01PRE5BTUUsIHNrZWwpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycigmcGRldi0+ZGV2LCAicmVxdWVzdF9pcnEgZmFpbGVkXG4iKTsKKwkJZ290byBkaXNhYmxlX3BjaTsKKwl9CisJc2tlbC0+cGRldiA9IHBkZXY7CisKKwkvKiBGaWxsIGluIHRoZSBpbml0aWFsIGZvcm1hdC1yZWxhdGVkIHNldHRpbmdzICovCisJc2tlbC0+dGltaW5ncyA9IHRpbWluZ3NfZGVmOworCXNrZWwtPnN0ZCA9IFY0TDJfU1REXzYyNV81MDsKKwlza2VsZXRvbl9maWxsX3BpeF9mb3JtYXQoc2tlbCwgJnNrZWwtPmZvcm1hdCk7CisKKwkvKiBJbml0aWFsaXplIHRoZSB0b3AtbGV2ZWwgc3RydWN0dXJlICovCisJcmV0ID0gdjRsMl9kZXZpY2VfcmVnaXN0ZXIoJnBkZXYtPmRldiwgJnNrZWwtPnY0bDJfZGV2KTsKKwlpZiAocmV0KQorCQlnb3RvIGRpc2FibGVfcGNpOworCisJbXV0ZXhfaW5pdCgmc2tlbC0+bG9jayk7CisKKwkvKiBBZGQgdGhlIGNvbnRyb2xzICovCisJaGRsID0gJnNrZWwtPmN0cmxfaGFuZGxlcjsKKwl2NGwyX2N0cmxfaGFuZGxlcl9pbml0KGhkbCwgNCk7CisJdjRsMl9jdHJsX25ld19zdGQoaGRsLCAmc2tlbF9jdHJsX29wcywKKwkJCSAgVjRMMl9DSURfQlJJR0hUTkVTUywgMCwgMjU1LCAxLCAxMjcpOworCXY0bDJfY3RybF9uZXdfc3RkKGhkbCwgJnNrZWxfY3RybF9vcHMsCisJCQkgIFY0TDJfQ0lEX0NPTlRSQVNULCAwLCAyNTUsIDEsIDE2KTsKKwl2NGwyX2N0cmxfbmV3X3N0ZChoZGwsICZza2VsX2N0cmxfb3BzLAorCQkJICBWNEwyX0NJRF9TQVRVUkFUSU9OLCAwLCAyNTUsIDEsIDEyNyk7CisJdjRsMl9jdHJsX25ld19zdGQoaGRsLCAmc2tlbF9jdHJsX29wcywKKwkJCSAgVjRMMl9DSURfSFVFLCAtMTI4LCAxMjcsIDEsIDApOworCWlmIChoZGwtPmVycm9yKSB7CisJCXJldCA9IGhkbC0+ZXJyb3I7CisJCWdvdG8gZnJlZV9oZGw7CisJfQorCXNrZWwtPnY0bDJfZGV2LmN0cmxfaGFuZGxlciA9IGhkbDsKKworCS8qIEluaXRpYWxpemUgdGhlIHZiMiBxdWV1ZSAqLworCXEgPSAmc2tlbC0+cXVldWU7CisJcS0+dHlwZSA9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRTsKKwlxLT5pb19tb2RlcyA9IFZCMl9NTUFQIHwgVkIyX0RNQUJVRiB8IFZCMl9SRUFEOworCXEtPmRydl9wcml2ID0gc2tlbDsKKwlxLT5idWZfc3RydWN0X3NpemUgPSBzaXplb2Yoc3RydWN0IHNrZWxfYnVmZmVyKTsKKwlxLT5vcHMgPSAmc2tlbF9xb3BzOworCXEtPm1lbV9vcHMgPSAmdmIyX2RtYV9jb250aWdfbWVtb3BzOworCXEtPnRpbWVzdGFtcF9mbGFncyA9IFY0TDJfQlVGX0ZMQUdfVElNRVNUQU1QX01PTk9UT05JQzsKKwkvKgorCSAqIEFzc3VtZSB0aGF0IHRoaXMgRE1BIGVuZ2luZSBuZWVkcyB0byBoYXZlIGF0IGxlYXN0IHR3byBidWZmZXJzCisJICogYXZhaWxhYmxlIGJlZm9yZSBpdCBjYW4gYmUgc3RhcnRlZC4gVGhlIHN0YXJ0X3N0cmVhbWluZygpIG9wCisJICogd29uJ3QgYmUgY2FsbGVkIHVudGlsIGF0IGxlYXN0IHRoaXMgbWFueSBidWZmZXJzIGFyZSBxdWV1ZWQgdXAuCisJICovCisJcS0+bWluX2J1ZmZlcnNfbmVlZGVkID0gMjsKKwkvKgorCSAqIFRoZSBzZXJpYWxpemF0aW9uIGxvY2sgZm9yIHRoZSBzdHJlYW1pbmcgaW9jdGxzLiBUaGlzIGlzIHRoZSBzYW1lCisJICogYXMgdGhlIG1haW4gc2VyaWFsaXphdGlvbiBsb2NrLCBidXQgaWYgc29tZSBvZiB0aGUgbm9uLXN0cmVhbWluZworCSAqIGlvY3RscyBjb3VsZCB0YWtlIGEgbG9uZyB0aW1lIHRvIGV4ZWN1dGUsIHRoZW4geW91IG1pZ2h0IHdhbnQgdG8KKwkgKiBoYXZlIGEgZGlmZmVyZW50IGxvY2sgaGVyZSB0byBwcmV2ZW50IFZJRElPQ19EUUJVRiBmcm9tIGJlaW5nCisJICogYmxvY2tlZCB3aGlsZSB3YWl0aW5nIGZvciBhbm90aGVyIGFjdGlvbiB0byBmaW5pc2guIFRoaXMgaXMKKwkgKiBnZW5lcmFsbHkgbm90IG5lZWRlZCBmb3IgUENJIGRldmljZXMsIGJ1dCBVU0IgZGV2aWNlcyB1c3VhbGx5IGRvCisJICogd2FudCBhIHNlcGFyYXRlIGxvY2sgaGVyZS4KKwkgKi8KKwlxLT5sb2NrID0gJnNrZWwtPmxvY2s7CisJLyoKKwkgKiBTaW5jZSB0aGlzIGRyaXZlciBjYW4gb25seSBkbyAzMi1iaXQgRE1BIHdlIG11c3QgbWFrZSBzdXJlIHRoYXQKKwkgKiB0aGUgdmIyIGNvcmUgd2lsbCBhbGxvY2F0ZSB0aGUgYnVmZmVycyBpbiAzMi1iaXQgRE1BIG1lbW9yeS4KKwkgKi8KKwlxLT5nZnBfZmxhZ3MgPSBHRlBfRE1BMzI7CisJcmV0ID0gdmIyX3F1ZXVlX2luaXQocSk7CisJaWYgKHJldCkKKwkJZ290byBmcmVlX2hkbDsKKworCXNrZWwtPmFsbG9jX2N0eCA9IHZiMl9kbWFfY29udGlnX2luaXRfY3R4KCZwZGV2LT5kZXYpOworCWlmIChJU19FUlIoc2tlbC0+YWxsb2NfY3R4KSkgeworCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJDYW4ndCBhbGxvY2F0ZSBidWZmZXIgY29udGV4dCIpOworCQlyZXQgPSBQVFJfRVJSKHNrZWwtPmFsbG9jX2N0eCk7CisJCWdvdG8gZnJlZV9oZGw7CisJfQorCUlOSVRfTElTVF9IRUFEKCZza2VsLT5idWZfbGlzdCk7CisJc3Bpbl9sb2NrX2luaXQoJnNrZWwtPnFsb2NrKTsKKworCS8qIEluaXRpYWxpemUgdGhlIHZpZGVvX2RldmljZSBzdHJ1Y3R1cmUgKi8KKwl2ZGV2ID0gJnNrZWwtPnZkZXY7CisJc3RybGNweSh2ZGV2LT5uYW1lLCBLQlVJTERfTU9ETkFNRSwgc2l6ZW9mKHZkZXYtPm5hbWUpKTsKKwkvKgorCSAqIFRoZXJlIGlzIG5vdGhpbmcgdG8gY2xlYW4gdXAsIHNvIHJlbGVhc2UgaXMgc2V0IHRvIGFuIGVtcHR5IHJlbGVhc2UKKwkgKiBmdW5jdGlvbi4gVGhlIHJlbGVhc2UgY2FsbGJhY2sgbXVzdCBiZSBub24tTlVMTC4KKwkgKi8KKwl2ZGV2LT5yZWxlYXNlID0gdmlkZW9fZGV2aWNlX3JlbGVhc2VfZW1wdHk7CisJdmRldi0+Zm9wcyA9ICZza2VsX2ZvcHMsCisJdmRldi0+aW9jdGxfb3BzID0gJnNrZWxfaW9jdGxfb3BzLAorCS8qCisJICogVGhlIG1haW4gc2VyaWFsaXphdGlvbiBsb2NrLiBBbGwgaW9jdGxzIGFyZSBzZXJpYWxpemVkIGJ5IHRoaXMKKwkgKiBsb2NrLiBFeGNlcHRpb246IGlmIHEtPmxvY2sgaXMgc2V0LCB0aGVuIHRoZSBzdHJlYW1pbmcgaW9jdGxzCisJICogYXJlIHNlcmlhbGl6ZWQgYnkgdGhhdCBzZXBhcmF0ZSBsb2NrLgorCSAqLworCXZkZXYtPmxvY2sgPSAmc2tlbC0+bG9jazsKKwl2ZGV2LT5xdWV1ZSA9IHE7CisJdmRldi0+djRsMl9kZXYgPSAmc2tlbC0+djRsMl9kZXY7CisJLyogU3VwcG9ydGVkIFNEVFYgc3RhbmRhcmRzLCBpZiBhbnkgKi8KKwl2ZGV2LT50dm5vcm1zID0gU0tFTF9UVk5PUk1TOworCXZpZGVvX3NldF9kcnZkYXRhKHZkZXYsIHNrZWwpOworCisJcmV0ID0gdmlkZW9fcmVnaXN0ZXJfZGV2aWNlKHZkZXYsIFZGTF9UWVBFX0dSQUJCRVIsIC0xKTsKKwlpZiAocmV0KQorCQlnb3RvIGZyZWVfY3R4OworCisJZGV2X2luZm8oJnBkZXYtPmRldiwgIlY0TDIgUENJIFNrZWxldG9uIERyaXZlciBsb2FkZWRcbiIpOworCXJldHVybiAwOworCitmcmVlX2N0eDoKKwl2YjJfZG1hX2NvbnRpZ19jbGVhbnVwX2N0eChza2VsLT5hbGxvY19jdHgpOworZnJlZV9oZGw6CisJdjRsMl9jdHJsX2hhbmRsZXJfZnJlZSgmc2tlbC0+Y3RybF9oYW5kbGVyKTsKKwl2NGwyX2RldmljZV91bnJlZ2lzdGVyKCZza2VsLT52NGwyX2Rldik7CitkaXNhYmxlX3BjaToKKwlwY2lfZGlzYWJsZV9kZXZpY2UocGRldik7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgc2tlbGV0b25fcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQoreworCXN0cnVjdCB2NGwyX2RldmljZSAqdjRsMl9kZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7CisJc3RydWN0IHNrZWxldG9uICpza2VsID0gY29udGFpbmVyX29mKHY0bDJfZGV2LCBzdHJ1Y3Qgc2tlbGV0b24sIHY0bDJfZGV2KTsKKworCXZpZGVvX3VucmVnaXN0ZXJfZGV2aWNlKCZza2VsLT52ZGV2KTsKKwl2NGwyX2N0cmxfaGFuZGxlcl9mcmVlKCZza2VsLT5jdHJsX2hhbmRsZXIpOworCXZiMl9kbWFfY29udGlnX2NsZWFudXBfY3R4KHNrZWwtPmFsbG9jX2N0eCk7CisJdjRsMl9kZXZpY2VfdW5yZWdpc3Rlcigmc2tlbC0+djRsMl9kZXYpOworCXBjaV9kaXNhYmxlX2RldmljZShza2VsLT5wZGV2KTsKK30KKworc3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHNrZWxldG9uX2RyaXZlciA9IHsKKwkubmFtZSA9IEtCVUlMRF9NT0ROQU1FLAorCS5wcm9iZSA9IHNrZWxldG9uX3Byb2JlLAorCS5yZW1vdmUgPSBza2VsZXRvbl9yZW1vdmUsCisJLmlkX3RhYmxlID0gc2tlbGV0b25fcGNpX3RibCwKK307CisKK21vZHVsZV9wY2lfZHJpdmVyKHNrZWxldG9uX2RyaXZlcik7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3ZpZGVvYnVmIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC92aWRlb2J1ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmZlOWU5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC92aWRlb2J1ZgpAQCAtMCwwICsxLDM1NSBAQAorQW4gaW50cm9kdWN0aW9uIHRvIHRoZSB2aWRlb2J1ZiBsYXllcgorSm9uYXRoYW4gQ29yYmV0IDxjb3JiZXRAbHduLm5ldD4KK0N1cnJlbnQgYXMgb2YgMi42LjMzCisKK1RoZSB2aWRlb2J1ZiBsYXllciBmdW5jdGlvbnMgYXMgYSBzb3J0IG9mIGdsdWUgbGF5ZXIgYmV0d2VlbiBhIFY0TDIgZHJpdmVyCithbmQgdXNlciBzcGFjZS4gIEl0IGhhbmRsZXMgdGhlIGFsbG9jYXRpb24gYW5kIG1hbmFnZW1lbnQgb2YgYnVmZmVycyBmb3IKK3RoZSBzdG9yYWdlIG9mIHZpZGVvIGZyYW1lcy4gIFRoZXJlIGlzIGEgc2V0IG9mIGZ1bmN0aW9ucyB3aGljaCBjYW4gYmUgdXNlZAordG8gaW1wbGVtZW50IG1hbnkgb2YgdGhlIHN0YW5kYXJkIFBPU0lYIEkvTyBzeXN0ZW0gY2FsbHMsIGluY2x1ZGluZyByZWFkKCksCitwb2xsKCksIGFuZCwgaGFwcGlseSwgbW1hcCgpLiAgQW5vdGhlciBzZXQgb2YgZnVuY3Rpb25zIGNhbiBiZSB1c2VkIHRvCitpbXBsZW1lbnQgdGhlIGJ1bGsgb2YgdGhlIFY0TDIgaW9jdGwoKSBjYWxscyByZWxhdGVkIHRvIHN0cmVhbWluZyBJL08sCitpbmNsdWRpbmcgYnVmZmVyIGFsbG9jYXRpb24sIHF1ZXVlaW5nIGFuZCBkZXF1ZXVlaW5nLCBhbmQgc3RyZWFtaW5nCitjb250cm9sLiAgVXNpbmcgdmlkZW9idWYgaW1wb3NlcyBhIGZldyBkZXNpZ24gZGVjaXNpb25zIG9uIHRoZSBkcml2ZXIKK2F1dGhvciwgYnV0IHRoZSBwYXliYWNrIGNvbWVzIGluIHRoZSBmb3JtIG9mIHJlZHVjZWQgY29kZSBpbiB0aGUgZHJpdmVyIGFuZAorYSBjb25zaXN0ZW50IGltcGxlbWVudGF0aW9uIG9mIHRoZSBWNEwyIHVzZXItc3BhY2UgQVBJLgorCitCdWZmZXIgdHlwZXMKKworTm90IGFsbCB2aWRlbyBkZXZpY2VzIHVzZSB0aGUgc2FtZSBraW5kIG9mIGJ1ZmZlcnMuICBJbiBmYWN0LCB0aGVyZSBhcmUgKGF0CitsZWFzdCkgdGhyZWUgY29tbW9uIHZhcmlhdGlvbnM6CisKKyAtIEJ1ZmZlcnMgd2hpY2ggYXJlIHNjYXR0ZXJlZCBpbiBib3RoIHRoZSBwaHlzaWNhbCBhbmQgKGtlcm5lbCkgdmlydHVhbAorICAgYWRkcmVzcyBzcGFjZXMuICAoQWxtb3N0KSBhbGwgdXNlci1zcGFjZSBidWZmZXJzIGFyZSBsaWtlIHRoaXMsIGJ1dCBpdAorICAgbWFrZXMgZ3JlYXQgc2Vuc2UgdG8gYWxsb2NhdGUga2VybmVsLXNwYWNlIGJ1ZmZlcnMgdGhpcyB3YXkgYXMgd2VsbCB3aGVuCisgICBpdCBpcyBwb3NzaWJsZS4gIFVuZm9ydHVuYXRlbHksIGl0IGlzIG5vdCBhbHdheXMgcG9zc2libGU7IHdvcmtpbmcgd2l0aAorICAgdGhpcyBraW5kIG9mIGJ1ZmZlciBub3JtYWxseSByZXF1aXJlcyBoYXJkd2FyZSB3aGljaCBjYW4gZG8KKyAgIHNjYXR0ZXIvZ2F0aGVyIERNQSBvcGVyYXRpb25zLgorCisgLSBCdWZmZXJzIHdoaWNoIGFyZSBwaHlzaWNhbGx5IHNjYXR0ZXJlZCwgYnV0IHdoaWNoIGFyZSB2aXJ0dWFsbHkKKyAgIGNvbnRpZ3VvdXM7IGJ1ZmZlcnMgYWxsb2NhdGVkIHdpdGggdm1hbGxvYygpLCBpbiBvdGhlciB3b3Jkcy4gIFRoZXNlCisgICBidWZmZXJzIGFyZSBqdXN0IGFzIGhhcmQgdG8gdXNlIGZvciBETUEgb3BlcmF0aW9ucywgYnV0IHRoZXkgY2FuIGJlCisgICB1c2VmdWwgaW4gc2l0dWF0aW9ucyB3aGVyZSBETUEgaXMgbm90IGF2YWlsYWJsZSBidXQgdmlydHVhbGx5LWNvbnRpZ3VvdXMKKyAgIGJ1ZmZlcnMgYXJlIGNvbnZlbmllbnQuCisKKyAtIEJ1ZmZlcnMgd2hpY2ggYXJlIHBoeXNpY2FsbHkgY29udGlndW91cy4gIEFsbG9jYXRpb24gb2YgdGhpcyBraW5kIG9mCisgICBidWZmZXIgY2FuIGJlIHVucmVsaWFibGUgb24gZnJhZ21lbnRlZCBzeXN0ZW1zLCBidXQgc2ltcGxlciBETUEKKyAgIGNvbnRyb2xsZXJzIGNhbm5vdCBkZWFsIHdpdGggYW55dGhpbmcgZWxzZS4KKworVmlkZW9idWYgY2FuIHdvcmsgd2l0aCBhbGwgdGhyZWUgdHlwZXMgb2YgYnVmZmVycywgYnV0IHRoZSBkcml2ZXIgYXV0aG9yCittdXN0IHBpY2sgb25lIGF0IHRoZSBvdXRzZXQgYW5kIGRlc2lnbiB0aGUgZHJpdmVyIGFyb3VuZCB0aGF0IGRlY2lzaW9uLgorCitbSXQncyB3b3J0aCBub3RpbmcgdGhhdCB0aGVyZSdzIGEgZm91cnRoIGtpbmQgb2YgYnVmZmVyOiAib3ZlcmxheSIgYnVmZmVycword2hpY2ggYXJlIGxvY2F0ZWQgd2l0aGluIHRoZSBzeXN0ZW0ncyB2aWRlbyBtZW1vcnkuICBUaGUgb3ZlcmxheQorZnVuY3Rpb25hbGl0eSBpcyBjb25zaWRlcmVkIHRvIGJlIGRlcHJlY2F0ZWQgZm9yIG1vc3QgdXNlLCBidXQgaXQgc3RpbGwKK3Nob3dzIHVwIG9jY2FzaW9uYWxseSBpbiBzeXN0ZW0tb24tY2hpcCBkcml2ZXJzIHdoZXJlIHRoZSBwZXJmb3JtYW5jZQorYmVuZWZpdHMgbWVyaXQgdGhlIHVzZSBvZiB0aGlzIHRlY2huaXF1ZS4gIE92ZXJsYXkgYnVmZmVycyBjYW4gYmUgaGFuZGxlZAorYXMgYSBmb3JtIG9mIHNjYXR0ZXJlZCBidWZmZXIsIGJ1dCB0aGVyZSBhcmUgdmVyeSBmZXcgaW1wbGVtZW50YXRpb25zIGluCit0aGUga2VybmVsIGFuZCBhIGRlc2NyaXB0aW9uIG9mIHRoaXMgdGVjaG5pcXVlIGlzIGN1cnJlbnRseSBiZXlvbmQgdGhlCitzY29wZSBvZiB0aGlzIGRvY3VtZW50Ll0KKworRGF0YSBzdHJ1Y3R1cmVzLCBjYWxsYmFja3MsIGFuZCBpbml0aWFsaXphdGlvbgorCitEZXBlbmRpbmcgb24gd2hpY2ggdHlwZSBvZiBidWZmZXJzIGFyZSBiZWluZyB1c2VkLCB0aGUgZHJpdmVyIHNob3VsZAoraW5jbHVkZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBmaWxlczoKKworICAgIDxtZWRpYS92aWRlb2J1Zi1kbWEtc2cuaD4JCS8qIFBoeXNpY2FsbHkgc2NhdHRlcmVkICovCisgICAgPG1lZGlhL3ZpZGVvYnVmLXZtYWxsb2MuaD4JCS8qIHZtYWxsb2MoKSBidWZmZXJzCSovCisgICAgPG1lZGlhL3ZpZGVvYnVmLWRtYS1jb250aWcuaD4JLyogUGh5c2ljYWxseSBjb250aWd1b3VzICovCisKK1RoZSBkcml2ZXIncyBkYXRhIHN0cnVjdHVyZSBkZXNjcmliaW5nIGEgVjRMMiBkZXZpY2Ugc2hvdWxkIGluY2x1ZGUgYQorc3RydWN0IHZpZGVvYnVmX3F1ZXVlIGluc3RhbmNlIGZvciB0aGUgbWFuYWdlbWVudCBvZiB0aGUgYnVmZmVyIHF1ZXVlLAorYWxvbmcgd2l0aCBhIGxpc3RfaGVhZCBmb3IgdGhlIHF1ZXVlIG9mIGF2YWlsYWJsZSBidWZmZXJzLiAgVGhlcmUgd2lsbCBhbHNvCituZWVkIHRvIGJlIGFuIGludGVycnVwdC1zYWZlIHNwaW5sb2NrIHdoaWNoIGlzIHVzZWQgdG8gcHJvdGVjdCAoYXQgbGVhc3QpCit0aGUgcXVldWUuCisKK1RoZSBuZXh0IHN0ZXAgaXMgdG8gd3JpdGUgZm91ciBzaW1wbGUgY2FsbGJhY2tzIHRvIGhlbHAgdmlkZW9idWYgZGVhbCB3aXRoCit0aGUgbWFuYWdlbWVudCBvZiBidWZmZXJzOgorCisgICAgc3RydWN0IHZpZGVvYnVmX3F1ZXVlX29wcyB7CisJaW50ICgqYnVmX3NldHVwKShzdHJ1Y3QgdmlkZW9idWZfcXVldWUgKnEsCisJCQkgdW5zaWduZWQgaW50ICpjb3VudCwgdW5zaWduZWQgaW50ICpzaXplKTsKKwlpbnQgKCpidWZfcHJlcGFyZSkoc3RydWN0IHZpZGVvYnVmX3F1ZXVlICpxLAorCQkJICAgc3RydWN0IHZpZGVvYnVmX2J1ZmZlciAqdmIsCisJCQkgICBlbnVtIHY0bDJfZmllbGQgZmllbGQpOworCXZvaWQgKCpidWZfcXVldWUpKHN0cnVjdCB2aWRlb2J1Zl9xdWV1ZSAqcSwKKwkJCSAgc3RydWN0IHZpZGVvYnVmX2J1ZmZlciAqdmIpOworCXZvaWQgKCpidWZfcmVsZWFzZSkoc3RydWN0IHZpZGVvYnVmX3F1ZXVlICpxLAorCQkJICAgIHN0cnVjdCB2aWRlb2J1Zl9idWZmZXIgKnZiKTsKKyAgICB9OworCitidWZfc2V0dXAoKSBpcyBjYWxsZWQgZWFybHkgaW4gdGhlIEkvTyBwcm9jZXNzLCB3aGVuIHN0cmVhbWluZyBpcyBiZWluZworaW5pdGlhdGVkOyBpdHMgcHVycG9zZSBpcyB0byB0ZWxsIHZpZGVvYnVmIGFib3V0IHRoZSBJL08gc3RyZWFtLiAgVGhlIGNvdW50CitwYXJhbWV0ZXIgd2lsbCBiZSBhIHN1Z2dlc3RlZCBudW1iZXIgb2YgYnVmZmVycyB0byB1c2U7IHRoZSBkcml2ZXIgc2hvdWxkCitjaGVjayBpdCBmb3IgcmF0aW9uYWxpdHkgYW5kIGFkanVzdCBpdCBpZiBuZWVkIGJlLiAgQXMgYSBwcmFjdGljYWwgcnVsZSwgYQorbWluaW11bSBvZiB0d28gYnVmZmVycyBhcmUgbmVlZGVkIGZvciBwcm9wZXIgc3RyZWFtaW5nLCBhbmQgdGhlcmUgaXMKK3VzdWFsbHkgYSBtYXhpbXVtICh3aGljaCBjYW5ub3QgZXhjZWVkIDMyKSB3aGljaCBtYWtlcyBzZW5zZSBmb3IgZWFjaAorZGV2aWNlLiAgVGhlIHNpemUgcGFyYW1ldGVyIHNob3VsZCBiZSBzZXQgdG8gdGhlIGV4cGVjdGVkIChtYXhpbXVtKSBzaXplCitmb3IgZWFjaCBmcmFtZSBvZiBkYXRhLgorCitFYWNoIGJ1ZmZlciAoaW4gdGhlIGZvcm0gb2YgYSBzdHJ1Y3QgdmlkZW9idWZfYnVmZmVyIHBvaW50ZXIpIHdpbGwgYmUKK3Bhc3NlZCB0byBidWZfcHJlcGFyZSgpLCB3aGljaCBzaG91bGQgc2V0IHRoZSBidWZmZXIncyBzaXplLCB3aWR0aCwgaGVpZ2h0LAorYW5kIGZpZWxkIGZpZWxkcyBwcm9wZXJseS4gIElmIHRoZSBidWZmZXIncyBzdGF0ZSBmaWVsZCBpcworVklERU9CVUZfTkVFRFNfSU5JVCwgdGhlIGRyaXZlciBzaG91bGQgcGFzcyBpdCB0bzoKKworICAgIGludCB2aWRlb2J1Zl9pb2xvY2soc3RydWN0IHZpZGVvYnVmX3F1ZXVlKiBxLCBzdHJ1Y3QgdmlkZW9idWZfYnVmZmVyICp2YiwKKwkJCXN0cnVjdCB2NGwyX2ZyYW1lYnVmZmVyICpmYnVmKTsKKworQW1vbmcgb3RoZXIgdGhpbmdzLCB0aGlzIGNhbGwgd2lsbCB1c3VhbGx5IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGJ1ZmZlci4KK0ZpbmFsbHksIHRoZSBidWZfcHJlcGFyZSgpIGZ1bmN0aW9uIHNob3VsZCBzZXQgdGhlIGJ1ZmZlcidzIHN0YXRlIHRvCitWSURFT0JVRl9QUkVQQVJFRC4KKworV2hlbiBhIGJ1ZmZlciBpcyBxdWV1ZWQgZm9yIEkvTywgaXQgaXMgcGFzc2VkIHRvIGJ1Zl9xdWV1ZSgpLCB3aGljaCBzaG91bGQKK3B1dCBpdCBvbnRvIHRoZSBkcml2ZXIncyBsaXN0IG9mIGF2YWlsYWJsZSBidWZmZXJzIGFuZCBzZXQgaXRzIHN0YXRlIHRvCitWSURFT0JVRl9RVUVVRUQuICBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0aGUgcXVldWUgc3BpbmxvY2sKK2hlbGQ7IGlmIGl0IHRyaWVzIHRvIGFjcXVpcmUgaXQgYXMgd2VsbCB0aGluZ3Mgd2lsbCBjb21lIHRvIGEgc2NyZWVjaGluZworaGFsdC4gIFllcywgdGhpcyBpcyB0aGUgdm9pY2Ugb2YgZXhwZXJpZW5jZS4gIE5vdGUgYWxzbyB0aGF0IHZpZGVvYnVmIG1heQord2FpdCBvbiB0aGUgZmlyc3QgYnVmZmVyIGluIHRoZSBxdWV1ZTsgcGxhY2luZyBvdGhlciBidWZmZXJzIGluIGZyb250IG9mIGl0Citjb3VsZCBhZ2FpbiBndW0gdXAgdGhlIHdvcmtzLiAgU28gdXNlIGxpc3RfYWRkX3RhaWwoKSB0byBlbnF1ZXVlIGJ1ZmZlcnMuCisKK0ZpbmFsbHksIGJ1Zl9yZWxlYXNlKCkgaXMgY2FsbGVkIHdoZW4gYSBidWZmZXIgaXMgbm8gbG9uZ2VyIGludGVuZGVkIHRvIGJlCit1c2VkLiAgVGhlIGRyaXZlciBzaG91bGQgZW5zdXJlIHRoYXQgdGhlcmUgaXMgbm8gSS9PIGFjdGl2ZSBvbiB0aGUgYnVmZmVyLAordGhlbiBwYXNzIGl0IHRvIHRoZSBhcHByb3ByaWF0ZSBmcmVlIHJvdXRpbmUocyk6CisKKyAgICAvKiBTY2F0dGVyL2dhdGhlciBkcml2ZXJzICovCisgICAgaW50IHZpZGVvYnVmX2RtYV91bm1hcChzdHJ1Y3QgdmlkZW9idWZfcXVldWUgKnEsCisJCQkgICBzdHJ1Y3QgdmlkZW9idWZfZG1hYnVmICpkbWEpOworICAgIGludCB2aWRlb2J1Zl9kbWFfZnJlZShzdHJ1Y3QgdmlkZW9idWZfZG1hYnVmICpkbWEpOworCisgICAgLyogdm1hbGxvYyBkcml2ZXJzICovCisgICAgdm9pZCB2aWRlb2J1Zl92bWFsbG9jX2ZyZWUgKHN0cnVjdCB2aWRlb2J1Zl9idWZmZXIgKmJ1Zik7CisKKyAgICAvKiBDb250aWd1b3VzIGRyaXZlcnMgKi8KKyAgICB2b2lkIHZpZGVvYnVmX2RtYV9jb250aWdfZnJlZShzdHJ1Y3QgdmlkZW9idWZfcXVldWUgKnEsCisJCQkJICBzdHJ1Y3QgdmlkZW9idWZfYnVmZmVyICpidWYpOworCitPbmUgd2F5IHRvIGVuc3VyZSB0aGF0IGEgYnVmZmVyIGlzIG5vIGxvbmdlciB1bmRlciBJL08gaXMgdG8gcGFzcyBpdCB0bzoKKworICAgIGludCB2aWRlb2J1Zl93YWl0b24oc3RydWN0IHZpZGVvYnVmX2J1ZmZlciAqdmIsIGludCBub25fYmxvY2tpbmcsIGludCBpbnRyKTsKKworSGVyZSwgdmIgaXMgdGhlIGJ1ZmZlciwgbm9uX2Jsb2NraW5nIGluZGljYXRlcyB3aGV0aGVyIG5vbi1ibG9ja2luZyBJL08KK3Nob3VsZCBiZSB1c2VkIChpdCBzaG91bGQgYmUgemVybyBpbiB0aGUgYnVmX3JlbGVhc2UoKSBjYXNlKSwgYW5kIGludHIKK2NvbnRyb2xzIHdoZXRoZXIgYW4gaW50ZXJydXB0aWJsZSB3YWl0IGlzIHVzZWQuCisKK0ZpbGUgb3BlcmF0aW9ucworCitBdCB0aGlzIHBvaW50LCBtdWNoIG9mIHRoZSB3b3JrIGlzIGRvbmU7IG11Y2ggb2YgdGhlIHJlc3QgaXMgc2xpcHBpbmcKK3ZpZGVvYnVmIGNhbGxzIGludG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBvdGhlciBkcml2ZXIgY2FsbGJhY2tzLiAgVGhlCitmaXJzdCBzdGVwIGlzIGluIHRoZSBvcGVuKCkgZnVuY3Rpb24sIHdoaWNoIG11c3QgaW5pdGlhbGl6ZSB0aGUKK3ZpZGVvYnVmIHF1ZXVlLiAgVGhlIGZ1bmN0aW9uIHRvIHVzZSBkZXBlbmRzIG9uIHRoZSB0eXBlIG9mIGJ1ZmZlciB1c2VkOgorCisgICAgdm9pZCB2aWRlb2J1Zl9xdWV1ZV9zZ19pbml0KHN0cnVjdCB2aWRlb2J1Zl9xdWV1ZSAqcSwKKwkJCQlzdHJ1Y3QgdmlkZW9idWZfcXVldWVfb3BzICpvcHMsCisJCQkJc3RydWN0IGRldmljZSAqZGV2LAorCQkJCXNwaW5sb2NrX3QgKmlycWxvY2ssCisJCQkJZW51bSB2NGwyX2J1Zl90eXBlIHR5cGUsCisJCQkJZW51bSB2NGwyX2ZpZWxkIGZpZWxkLAorCQkJCXVuc2lnbmVkIGludCBtc2l6ZSwKKwkJCQl2b2lkICpwcml2KTsKKworICAgIHZvaWQgdmlkZW9idWZfcXVldWVfdm1hbGxvY19pbml0KHN0cnVjdCB2aWRlb2J1Zl9xdWV1ZSAqcSwKKwkJCQlzdHJ1Y3QgdmlkZW9idWZfcXVldWVfb3BzICpvcHMsCisJCQkJc3RydWN0IGRldmljZSAqZGV2LAorCQkJCXNwaW5sb2NrX3QgKmlycWxvY2ssCisJCQkJZW51bSB2NGwyX2J1Zl90eXBlIHR5cGUsCisJCQkJZW51bSB2NGwyX2ZpZWxkIGZpZWxkLAorCQkJCXVuc2lnbmVkIGludCBtc2l6ZSwKKwkJCQl2b2lkICpwcml2KTsKKworICAgIHZvaWQgdmlkZW9idWZfcXVldWVfZG1hX2NvbnRpZ19pbml0KHN0cnVjdCB2aWRlb2J1Zl9xdWV1ZSAqcSwKKwkJCQkgICAgICAgc3RydWN0IHZpZGVvYnVmX3F1ZXVlX29wcyAqb3BzLAorCQkJCSAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJICAgICAgIHNwaW5sb2NrX3QgKmlycWxvY2ssCisJCQkJICAgICAgIGVudW0gdjRsMl9idWZfdHlwZSB0eXBlLAorCQkJCSAgICAgICBlbnVtIHY0bDJfZmllbGQgZmllbGQsCisJCQkJICAgICAgIHVuc2lnbmVkIGludCBtc2l6ZSwKKwkJCQkgICAgICAgdm9pZCAqcHJpdik7CisKK0luIGVhY2ggY2FzZSwgdGhlIHBhcmFtZXRlcnMgYXJlIHRoZSBzYW1lOiBxIGlzIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUgZm9yIHRoZQorZGV2aWNlLCBvcHMgaXMgdGhlIHNldCBvZiBjYWxsYmFja3MgYXMgZGVzY3JpYmVkIGFib3ZlLCBkZXYgaXMgdGhlIGRldmljZQorc3RydWN0dXJlIGZvciB0aGlzIHZpZGVvIGRldmljZSwgaXJxbG9jayBpcyBhbiBpbnRlcnJ1cHQtc2FmZSBzcGlubG9jayB0bworcHJvdGVjdCBhY2Nlc3MgdG8gdGhlIGRhdGEgc3RydWN0dXJlcywgdHlwZSBpcyB0aGUgYnVmZmVyIHR5cGUgdXNlZCBieSB0aGUKK2RldmljZSAoY2FtZXJhcyB3aWxsIHVzZSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkUsIGZvciBleGFtcGxlKSwgZmllbGQKK2Rlc2NyaWJlcyB3aGljaCBmaWVsZCBpcyBiZWluZyBjYXB0dXJlZCAob2Z0ZW4gVjRMMl9GSUVMRF9OT05FIGZvcgorcHJvZ3Jlc3NpdmUgZGV2aWNlcyksIG1zaXplIGlzIHRoZSBzaXplIG9mIGFueSBjb250YWluaW5nIHN0cnVjdHVyZSB1c2VkCithcm91bmQgc3RydWN0IHZpZGVvYnVmX2J1ZmZlciwgYW5kIHByaXYgaXMgYSBwcml2YXRlIGRhdGEgcG9pbnRlciB3aGljaAorc2hvd3MgdXAgaW4gdGhlIHByaXZfZGF0YSBmaWVsZCBvZiBzdHJ1Y3QgdmlkZW9idWZfcXVldWUuICBOb3RlIHRoYXQgdGhlc2UKK2FyZSB2b2lkIGZ1bmN0aW9ucyB3aGljaCwgZXZpZGVudGx5LCBhcmUgaW1tdW5lIHRvIGZhaWx1cmUuCisKK1Y0TDIgY2FwdHVyZSBkcml2ZXJzIGNhbiBiZSB3cml0dGVuIHRvIHN1cHBvcnQgZWl0aGVyIG9mIHR3byBBUElzOiB0aGUKK3JlYWQoKSBzeXN0ZW0gY2FsbCBhbmQgdGhlIHJhdGhlciBtb3JlIGNvbXBsaWNhdGVkIHN0cmVhbWluZyBtZWNoYW5pc20uICBBcworYSBnZW5lcmFsIHJ1bGUsIGl0IGlzIG5lY2Vzc2FyeSB0byBzdXBwb3J0IGJvdGggdG8gZW5zdXJlIHRoYXQgYWxsCithcHBsaWNhdGlvbnMgaGF2ZSBhIGNoYW5jZSBvZiB3b3JraW5nIHdpdGggdGhlIGRldmljZS4gIFZpZGVvYnVmIG1ha2VzIGl0CitlYXN5IHRvIGRvIHRoYXQgd2l0aCB0aGUgc2FtZSBjb2RlLiAgVG8gaW1wbGVtZW50IHJlYWQoKSwgdGhlIGRyaXZlciBuZWVkCitvbmx5IG1ha2UgYSBjYWxsIHRvIG9uZSBvZjoKKworICAgIHNzaXplX3QgdmlkZW9idWZfcmVhZF9vbmUoc3RydWN0IHZpZGVvYnVmX3F1ZXVlICpxLAorCQkJICAgICAgY2hhciBfX3VzZXIgKmRhdGEsIHNpemVfdCBjb3VudCwKKwkJCSAgICAgIGxvZmZfdCAqcHBvcywgaW50IG5vbmJsb2NraW5nKTsKKworICAgIHNzaXplX3QgdmlkZW9idWZfcmVhZF9zdHJlYW0oc3RydWN0IHZpZGVvYnVmX3F1ZXVlICpxLAorCQkJCSBjaGFyIF9fdXNlciAqZGF0YSwgc2l6ZV90IGNvdW50LAorCQkJCSBsb2ZmX3QgKnBwb3MsIGludCB2YmloYWNrLCBpbnQgbm9uYmxvY2tpbmcpOworCitFaXRoZXIgb25lIG9mIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIHJlYWQgZnJhbWUgZGF0YSBpbnRvIGRhdGEsIHJldHVybmluZyB0aGUKK2Ftb3VudCBhY3R1YWxseSByZWFkOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IHZpZGVvYnVmX3JlYWRfb25lKCkgd2lsbCBvbmx5CityZWFkIGEgc2luZ2xlIGZyYW1lLCB3aGlsZSB2aWRlb2J1Zl9yZWFkX3N0cmVhbSgpIHdpbGwgcmVhZCBtdWx0aXBsZSBmcmFtZXMKK2lmIHRoZXkgYXJlIG5lZWRlZCB0byBzYXRpc2Z5IHRoZSBjb3VudCByZXF1ZXN0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiAgQQordHlwaWNhbCBkcml2ZXIgcmVhZCgpIGltcGxlbWVudGF0aW9uIHdpbGwgc3RhcnQgdGhlIGNhcHR1cmUgZW5naW5lLCBjYWxsCitvbmUgb2YgdGhlIGFib3ZlIGZ1bmN0aW9ucywgdGhlbiBzdG9wIHRoZSBlbmdpbmUgYmVmb3JlIHJldHVybmluZyAodGhvdWdoIGEKK3NtYXJ0ZXIgaW1wbGVtZW50YXRpb24gbWlnaHQgbGVhdmUgdGhlIGVuZ2luZSBydW5uaW5nIGZvciBhIGxpdHRsZSB3aGlsZSBpbgorYW50aWNpcGF0aW9uIG9mIGFub3RoZXIgcmVhZCgpIGNhbGwgaGFwcGVuaW5nIGluIHRoZSBuZWFyIGZ1dHVyZSkuCisKK1RoZSBwb2xsKCkgZnVuY3Rpb24gY2FuIHVzdWFsbHkgYmUgaW1wbGVtZW50ZWQgd2l0aCBhIGRpcmVjdCBjYWxsIHRvOgorCisgICAgdW5zaWduZWQgaW50IHZpZGVvYnVmX3BvbGxfc3RyZWFtKHN0cnVjdCBmaWxlICpmaWxlLAorCQkJCSAgICAgIHN0cnVjdCB2aWRlb2J1Zl9xdWV1ZSAqcSwKKwkJCQkgICAgICBwb2xsX3RhYmxlICp3YWl0KTsKKworTm90ZSB0aGF0IHRoZSBhY3R1YWwgd2FpdCBxdWV1ZSBldmVudHVhbGx5IHVzZWQgd2lsbCBiZSB0aGUgb25lIGFzc29jaWF0ZWQKK3dpdGggdGhlIGZpcnN0IGF2YWlsYWJsZSBidWZmZXIuCisKK1doZW4gc3RyZWFtaW5nIEkvTyBpcyBkb25lIHRvIGtlcm5lbC1zcGFjZSBidWZmZXJzLCB0aGUgZHJpdmVyIG11c3Qgc3VwcG9ydAordGhlIG1tYXAoKSBzeXN0ZW0gY2FsbCB0byBlbmFibGUgdXNlciBzcGFjZSB0byBhY2Nlc3MgdGhlIGRhdGEuICBJbiBtYW55CitWNEwyIGRyaXZlcnMsIHRoZSBvZnRlbi1jb21wbGV4IG1tYXAoKSBpbXBsZW1lbnRhdGlvbiBzaW1wbGlmaWVzIHRvIGEKK3NpbmdsZSBjYWxsIHRvOgorCisgICAgaW50IHZpZGVvYnVmX21tYXBfbWFwcGVyKHN0cnVjdCB2aWRlb2J1Zl9xdWV1ZSAqcSwKKwkJCSAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOworCitFdmVyeXRoaW5nIGVsc2UgaXMgaGFuZGxlZCBieSB0aGUgdmlkZW9idWYgY29kZS4KKworVGhlIHJlbGVhc2UoKSBmdW5jdGlvbiByZXF1aXJlcyB0d28gc2VwYXJhdGUgdmlkZW9idWYgY2FsbHM6CisKKyAgICB2b2lkIHZpZGVvYnVmX3N0b3Aoc3RydWN0IHZpZGVvYnVmX3F1ZXVlICpxKTsKKyAgICBpbnQgdmlkZW9idWZfbW1hcF9mcmVlKHN0cnVjdCB2aWRlb2J1Zl9xdWV1ZSAqcSk7CisKK1RoZSBjYWxsIHRvIHZpZGVvYnVmX3N0b3AoKSB0ZXJtaW5hdGVzIGFueSBJL08gaW4gcHJvZ3Jlc3MgLSB0aG91Z2ggaXQgaXMKK3N0aWxsIHVwIHRvIHRoZSBkcml2ZXIgdG8gc3RvcCB0aGUgY2FwdHVyZSBlbmdpbmUuICBUaGUgY2FsbCB0bwordmlkZW9idWZfbW1hcF9mcmVlKCkgd2lsbCBlbnN1cmUgdGhhdCBhbGwgYnVmZmVycyBoYXZlIGJlZW4gdW5tYXBwZWQ7IGlmCitzbywgdGhleSB3aWxsIGFsbCBiZSBwYXNzZWQgdG8gdGhlIGJ1Zl9yZWxlYXNlKCkgY2FsbGJhY2suICBJZiBidWZmZXJzCityZW1haW4gbWFwcGVkLCB2aWRlb2J1Zl9tbWFwX2ZyZWUoKSByZXR1cm5zIGFuIGVycm9yIGNvZGUgaW5zdGVhZC4gIFRoZQorcHVycG9zZSBpcyBjbGVhcmx5IHRvIGNhdXNlIHRoZSBjbG9zaW5nIG9mIHRoZSBmaWxlIGRlc2NyaXB0b3IgdG8gZmFpbCBpZgorYnVmZmVycyBhcmUgc3RpbGwgbWFwcGVkLCBidXQgZXZlcnkgZHJpdmVyIGluIHRoZSAyLjYuMzIga2VybmVsIGNoZWVyZnVsbHkKK2lnbm9yZXMgaXRzIHJldHVybiB2YWx1ZS4KKworaW9jdGwoKSBvcGVyYXRpb25zCisKK1RoZSBWNEwyIEFQSSBpbmNsdWRlcyBhIHZlcnkgbG9uZyBsaXN0IG9mIGRyaXZlciBjYWxsYmFja3MgdG8gcmVzcG9uZCB0bwordGhlIG1hbnkgaW9jdGwoKSBjb21tYW5kcyBtYWRlIGF2YWlsYWJsZSB0byB1c2VyIHNwYWNlLiAgQSBudW1iZXIgb2YgdGhlc2UKKy0gdGhvc2UgYXNzb2NpYXRlZCB3aXRoIHN0cmVhbWluZyBJL08gLSB0dXJuIGFsbW9zdCBkaXJlY3RseSBpbnRvIHZpZGVvYnVmCitjYWxscy4gIFRoZSByZWxldmFudCBoZWxwZXIgZnVuY3Rpb25zIGFyZToKKworICAgIGludCB2aWRlb2J1Zl9yZXFidWZzKHN0cnVjdCB2aWRlb2J1Zl9xdWV1ZSAqcSwKKwkJCSBzdHJ1Y3QgdjRsMl9yZXF1ZXN0YnVmZmVycyAqcmVxKTsKKyAgICBpbnQgdmlkZW9idWZfcXVlcnlidWYoc3RydWN0IHZpZGVvYnVmX3F1ZXVlICpxLCBzdHJ1Y3QgdjRsMl9idWZmZXIgKmIpOworICAgIGludCB2aWRlb2J1Zl9xYnVmKHN0cnVjdCB2aWRlb2J1Zl9xdWV1ZSAqcSwgc3RydWN0IHY0bDJfYnVmZmVyICpiKTsKKyAgICBpbnQgdmlkZW9idWZfZHFidWYoc3RydWN0IHZpZGVvYnVmX3F1ZXVlICpxLCBzdHJ1Y3QgdjRsMl9idWZmZXIgKmIsCisJCSAgICAgICBpbnQgbm9uYmxvY2tpbmcpOworICAgIGludCB2aWRlb2J1Zl9zdHJlYW1vbihzdHJ1Y3QgdmlkZW9idWZfcXVldWUgKnEpOworICAgIGludCB2aWRlb2J1Zl9zdHJlYW1vZmYoc3RydWN0IHZpZGVvYnVmX3F1ZXVlICpxKTsKKworU28sIGZvciBleGFtcGxlLCBhIFZJRElPQ19SRVFCVUZTIGNhbGwgdHVybnMgaW50byBhIGNhbGwgdG8gdGhlIGRyaXZlcidzCit2aWRpb2NfcmVxYnVmcygpIGNhbGxiYWNrIHdoaWNoLCBpbiB0dXJuLCB1c3VhbGx5IG9ubHkgbmVlZHMgdG8gbG9jYXRlIHRoZQorcHJvcGVyIHN0cnVjdCB2aWRlb2J1Zl9xdWV1ZSBwb2ludGVyIGFuZCBwYXNzIGl0IHRvIHZpZGVvYnVmX3JlcWJ1ZnMoKS4KK1RoZXNlIHN1cHBvcnQgZnVuY3Rpb25zIGNhbiByZXBsYWNlIGEgZ3JlYXQgZGVhbCBvZiBidWZmZXIgbWFuYWdlbWVudAorYm9pbGVycGxhdGUgaW4gYSBsb3Qgb2YgVjRMMiBkcml2ZXJzLgorCitUaGUgdmlkaW9jX3N0cmVhbW9uKCkgYW5kIHZpZGlvY19zdHJlYW1vZmYoKSBmdW5jdGlvbnMgd2lsbCBiZSBhIGJpdCBtb3JlCitjb21wbGV4LCBvZiBjb3Vyc2UsIHNpbmNlIHRoZXkgd2lsbCBhbHNvIG5lZWQgdG8gZGVhbCB3aXRoIHN0YXJ0aW5nIGFuZAorc3RvcHBpbmcgdGhlIGNhcHR1cmUgZW5naW5lLgorCitCdWZmZXIgYWxsb2NhdGlvbgorCitUaHVzIGZhciwgd2UgaGF2ZSB0YWxrZWQgYWJvdXQgYnVmZmVycywgYnV0IGhhdmUgbm90IGxvb2tlZCBhdCBob3cgdGhleSBhcmUKK2FsbG9jYXRlZC4gIFRoZSBzY2F0dGVyL2dhdGhlciBjYXNlIGlzIHRoZSBtb3N0IGNvbXBsZXggb24gdGhpcyBmcm9udC4gIEZvcgorYWxsb2NhdGlvbiwgdGhlIGRyaXZlciBjYW4gbGVhdmUgYnVmZmVyIGFsbG9jYXRpb24gZW50aXJlbHkgdXAgdG8gdGhlCit2aWRlb2J1ZiBsYXllcjsgaW4gdGhpcyBjYXNlLCBidWZmZXJzIHdpbGwgYmUgYWxsb2NhdGVkIGFzIGFub255bW91cwordXNlci1zcGFjZSBwYWdlcyBhbmQgd2lsbCBiZSB2ZXJ5IHNjYXR0ZXJlZCBpbmRlZWQuICBJZiB0aGUgYXBwbGljYXRpb24gaXMKK3VzaW5nIHVzZXItc3BhY2UgYnVmZmVycywgbm8gYWxsb2NhdGlvbiBpcyBuZWVkZWQ7IHRoZSB2aWRlb2J1ZiBsYXllciB3aWxsCit0YWtlIGNhcmUgb2YgY2FsbGluZyBnZXRfdXNlcl9wYWdlcygpIGFuZCBmaWxsaW5nIGluIHRoZSBzY2F0dGVybGlzdCBhcnJheS4KKworSWYgdGhlIGRyaXZlciBuZWVkcyB0byBkbyBpdHMgb3duIG1lbW9yeSBhbGxvY2F0aW9uLCBpdCBzaG91bGQgYmUgZG9uZSBpbgordGhlIHZpZGlvY19yZXFidWZzKCkgZnVuY3Rpb24sICphZnRlciogY2FsbGluZyB2aWRlb2J1Zl9yZXFidWZzKCkuICBUaGUKK2ZpcnN0IHN0ZXAgaXMgYSBjYWxsIHRvOgorCisgICAgc3RydWN0IHZpZGVvYnVmX2RtYWJ1ZiAqdmlkZW9idWZfdG9fZG1hKHN0cnVjdCB2aWRlb2J1Zl9idWZmZXIgKmJ1Zik7CisKK1RoZSByZXR1cm5lZCB2aWRlb2J1Zl9kbWFidWYgc3RydWN0dXJlIChkZWZpbmVkIGluCis8bWVkaWEvdmlkZW9idWYtZG1hLXNnLmg+KSBpbmNsdWRlcyBhIGNvdXBsZSBvZiByZWxldmFudCBmaWVsZHM6CisKKyAgICBzdHJ1Y3Qgc2NhdHRlcmxpc3QgICpzZ2xpc3Q7CisgICAgaW50ICAgICAgICAgICAgICAgICBzZ2xlbjsKKworVGhlIGRyaXZlciBtdXN0IGFsbG9jYXRlIGFuIGFwcHJvcHJpYXRlbHktc2l6ZWQgc2NhdHRlcmxpc3QgYXJyYXkgYW5kCitwb3B1bGF0ZSBpdCB3aXRoIHBvaW50ZXJzIHRvIHRoZSBwaWVjZXMgb2YgdGhlIGFsbG9jYXRlZCBidWZmZXI7IHNnbGVuCitzaG91bGQgYmUgc2V0IHRvIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5LgorCitEcml2ZXJzIHVzaW5nIHRoZSB2bWFsbG9jKCkgbWV0aG9kIG5lZWQgbm90IChhbmQgY2Fubm90KSBjb25jZXJuIHRoZW1zZWx2ZXMKK3dpdGggYnVmZmVyIGFsbG9jYXRpb24gYXQgYWxsOyB2aWRlb2J1ZiB3aWxsIGhhbmRsZSB0aG9zZSBkZXRhaWxzLiAgVGhlCitzYW1lIGlzIG5vcm1hbGx5IHRydWUgb2YgY29udGlndW91cy1ETUEgZHJpdmVycyBhcyB3ZWxsOyB2aWRlb2J1ZiB3aWxsCithbGxvY2F0ZSB0aGUgYnVmZmVycyAod2l0aCBkbWFfYWxsb2NfY29oZXJlbnQoKSkgd2hlbiBpdCBzZWVzIGZpdC4gIFRoYXQKK21lYW5zIHRoYXQgdGhlc2UgZHJpdmVycyBtYXkgYmUgdHJ5aW5nIHRvIGRvIGhpZ2gtb3JkZXIgYWxsb2NhdGlvbnMgYXQgYW55Cit0aW1lLCBhbiBvcGVyYXRpb24gd2hpY2ggaXMgbm90IGFsd2F5cyBndWFyYW50ZWVkIHRvIHdvcmsuICBTb21lIGRyaXZlcnMKK3BsYXkgdHJpY2tzIGJ5IGFsbG9jYXRpbmcgRE1BIHNwYWNlIGF0IHN5c3RlbSBib290IHRpbWU7IHZpZGVvYnVmIGRvZXMgbm90CitjdXJyZW50bHkgcGxheSB3ZWxsIHdpdGggdGhvc2UgZHJpdmVycy4KKworQXMgb2YgMi42LjMxLCBjb250aWd1b3VzLURNQSBkcml2ZXJzIGNhbiB3b3JrIHdpdGggYSB1c2VyLXN1cHBsaWVkIGJ1ZmZlciwKK2FzIGxvbmcgYXMgdGhhdCBidWZmZXIgaXMgcGh5c2ljYWxseSBjb250aWd1b3VzLiAgTm9ybWFsIHVzZXItc3BhY2UKK2FsbG9jYXRpb25zIHdpbGwgbm90IG1lZXQgdGhhdCBjcml0ZXJpb24sIGJ1dCBidWZmZXJzIG9idGFpbmVkIGZyb20gb3RoZXIKK2tlcm5lbCBkcml2ZXJzLCBvciB0aG9zZSBjb250YWluZWQgd2l0aGluIGh1Z2UgcGFnZXMsIHdpbGwgd29yayB3aXRoIHRoZXNlCitkcml2ZXJzLgorCitGaWxsaW5nIHRoZSBidWZmZXJzCisKK1RoZSBmaW5hbCBwYXJ0IG9mIGEgdmlkZW9idWYgaW1wbGVtZW50YXRpb24gaGFzIG5vIGRpcmVjdCBjYWxsYmFjayAtIGl0J3MKK3RoZSBwb3J0aW9uIG9mIHRoZSBjb2RlIHdoaWNoIGFjdHVhbGx5IHB1dHMgZnJhbWUgZGF0YSBpbnRvIHRoZSBidWZmZXJzLAordXN1YWxseSBpbiByZXNwb25zZSB0byBpbnRlcnJ1cHRzIGZyb20gdGhlIGRldmljZS4gIEZvciBhbGwgdHlwZXMgb2YKK2RyaXZlcnMsIHRoaXMgcHJvY2VzcyB3b3JrcyBhcHByb3hpbWF0ZWx5IGFzIGZvbGxvd3M6CisKKyAtIE9idGFpbiB0aGUgbmV4dCBhdmFpbGFibGUgYnVmZmVyIGFuZCBtYWtlIHN1cmUgdGhhdCBzb21lYm9keSBpcyBhY3R1YWxseQorICAgd2FpdGluZyBmb3IgaXQuCisKKyAtIEdldCBhIHBvaW50ZXIgdG8gdGhlIG1lbW9yeSBhbmQgcHV0IHZpZGVvIGRhdGEgdGhlcmUuCisKKyAtIE1hcmsgdGhlIGJ1ZmZlciBhcyBkb25lIGFuZCB3YWtlIHVwIHRoZSBwcm9jZXNzIHdhaXRpbmcgZm9yIGl0LgorCitTdGVwICgxKSBhYm92ZSBpcyBkb25lIGJ5IGxvb2tpbmcgYXQgdGhlIGRyaXZlci1tYW5hZ2VkIGxpc3RfaGVhZCBzdHJ1Y3R1cmUKKy0gdGhlIG9uZSB3aGljaCBpcyBmaWxsZWQgaW4gdGhlIGJ1Zl9xdWV1ZSgpIGNhbGxiYWNrLiAgQmVjYXVzZSBzdGFydGluZwordGhlIGVuZ2luZSBhbmQgZW5xdWV1ZWluZyBidWZmZXJzIGFyZSBkb25lIGluIHNlcGFyYXRlIHN0ZXBzLCBpdCdzIHBvc3NpYmxlCitmb3IgdGhlIGVuZ2luZSB0byBiZSBydW5uaW5nIHdpdGhvdXQgYW55IGJ1ZmZlcnMgYXZhaWxhYmxlIC0gaW4gdGhlCit2bWFsbG9jKCkgY2FzZSBlc3BlY2lhbGx5LiAgU28gdGhlIGRyaXZlciBzaG91bGQgYmUgcHJlcGFyZWQgZm9yIHRoZSBsaXN0Cit0byBiZSBlbXB0eS4gIEl0IGlzIGVxdWFsbHkgcG9zc2libGUgdGhhdCBub2JvZHkgaXMgeWV0IGludGVyZXN0ZWQgaW4gdGhlCitidWZmZXI7IHRoZSBkcml2ZXIgc2hvdWxkIG5vdCByZW1vdmUgaXQgZnJvbSB0aGUgbGlzdCBvciBmaWxsIGl0IHVudGlsIGEKK3Byb2Nlc3MgaXMgd2FpdGluZyBvbiBpdC4gIFRoYXQgdGVzdCBjYW4gYmUgZG9uZSBieSBleGFtaW5pbmcgdGhlIGJ1ZmZlcidzCitkb25lIGZpZWxkIChhIHdhaXRfcXVldWVfaGVhZF90IHN0cnVjdHVyZSkgd2l0aCB3YWl0cXVldWVfYWN0aXZlKCkuCisKK0EgYnVmZmVyJ3Mgc3RhdGUgc2hvdWxkIGJlIHNldCB0byBWSURFT0JVRl9BQ1RJVkUgYmVmb3JlIGJlaW5nIG1hcHBlZCBmb3IKK0RNQTsgdGhhdCBlbnN1cmVzIHRoYXQgdGhlIHZpZGVvYnVmIGxheWVyIHdpbGwgbm90IHRyeSB0byBkbyBhbnl0aGluZyB3aXRoCitpdCB3aGlsZSB0aGUgZGV2aWNlIGlzIHRyYW5zZmVycmluZyBkYXRhLgorCitGb3Igc2NhdHRlci9nYXRoZXIgZHJpdmVycywgdGhlIG5lZWRlZCBtZW1vcnkgcG9pbnRlcnMgd2lsbCBiZSBmb3VuZCBpbiB0aGUKK3NjYXR0ZXJsaXN0IHN0cnVjdHVyZSBkZXNjcmliZWQgYWJvdmUuICBEcml2ZXJzIHVzaW5nIHRoZSB2bWFsbG9jKCkgbWV0aG9kCitjYW4gZ2V0IGEgbWVtb3J5IHBvaW50ZXIgd2l0aDoKKworICAgIHZvaWQgKnZpZGVvYnVmX3RvX3ZtYWxsb2Moc3RydWN0IHZpZGVvYnVmX2J1ZmZlciAqYnVmKTsKKworRm9yIGNvbnRpZ3VvdXMgRE1BIGRyaXZlcnMsIHRoZSBmdW5jdGlvbiB0byB1c2UgaXM6CisKKyAgICBkbWFfYWRkcl90IHZpZGVvYnVmX3RvX2RtYV9jb250aWcoc3RydWN0IHZpZGVvYnVmX2J1ZmZlciAqYnVmKTsKKworVGhlIGNvbnRpZ3VvdXMgRE1BIEFQSSBnb2VzIG91dCBvZiBpdHMgd2F5IHRvIGhpZGUgdGhlIGtlcm5lbC1zcGFjZSBhZGRyZXNzCitvZiB0aGUgRE1BIGJ1ZmZlciBmcm9tIGRyaXZlcnMuCisKK1RoZSBmaW5hbCBzdGVwIGlzIHRvIHNldCB0aGUgc2l6ZSBmaWVsZCBvZiB0aGUgcmVsZXZhbnQgdmlkZW9idWZfYnVmZmVyCitzdHJ1Y3R1cmUgdG8gdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBjYXB0dXJlZCBpbWFnZSwgc2V0IHN0YXRlIHRvCitWSURFT0JVRl9ET05FLCB0aGVuIGNhbGwgd2FrZV91cCgpIG9uIHRoZSBkb25lIHF1ZXVlLiAgQXQgdGhpcyBwb2ludCwgdGhlCitidWZmZXIgaXMgb3duZWQgYnkgdGhlIHZpZGVvYnVmIGxheWVyIGFuZCB0aGUgZHJpdmVyIHNob3VsZCBub3QgdG91Y2ggaXQKK2FnYWluLgorCitEZXZlbG9wZXJzIHdobyBhcmUgaW50ZXJlc3RlZCBpbiBtb3JlIGluZm9ybWF0aW9uIGNhbiBnbyBpbnRvIHRoZSByZWxldmFudAoraGVhZGVyIGZpbGVzOyB0aGVyZSBhcmUgYSBmZXcgbG93LWxldmVsIGZ1bmN0aW9ucyBkZWNsYXJlZCB0aGVyZSB3aGljaCBoYXZlCitub3QgYmVlbiB0YWxrZWQgYWJvdXQgaGVyZS4gIEFsc28gd29ydGh3aGlsZSBpcyB0aGUgdml2aSBkcml2ZXIKKyhkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZpdmkuYyksIHdoaWNoIGlzIG1haW50YWluZWQgYXMgYW4gZXhhbXBsZSBvZiBob3cgVjRMMgorZHJpdmVycyBzaG91bGQgYmUgd3JpdHRlbi4gIFZpdmkgb25seSB1c2VzIHRoZSB2bWFsbG9jKCkgQVBJLCBidXQgaXQncyBnb29kCitlbm91Z2ggdG8gZ2V0IHN0YXJ0ZWQgd2l0aC4gIE5vdGUgYWxzbyB0aGF0IGFsbCBvZiB0aGVzZSBjYWxscyBhcmUgZXhwb3J0ZWQKK0dQTC1vbmx5LCBzbyB0aGV5IHdpbGwgbm90IGJlIGF2YWlsYWJsZSB0byBub24tR1BMIGtlcm5lbCBtb2R1bGVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC92aXZpZC50eHQgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3ZpdmlkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzVkMzc2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC92aXZpZC50eHQKQEAgLTAsMCArMSwxMTM1IEBACit2aXZpZDogVmlydHVhbCBWaWRlbyBUZXN0IERyaXZlcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBkcml2ZXIgZW11bGF0ZXMgdmlkZW80bGludXggaGFyZHdhcmUgb2YgdmFyaW91cyB0eXBlczogdmlkZW8gY2FwdHVyZSwgdmlkZW8KK291dHB1dCwgdmJpIGNhcHR1cmUgYW5kIG91dHB1dCwgcmFkaW8gcmVjZWl2ZXJzIGFuZCB0cmFuc21pdHRlcnMgYW5kIGEgc29mdHdhcmUKK2RlZmluZWQgcmFkaW8gcmVjZWl2ZXIuIEluIGFkZGl0aW9uIGEgc2ltcGxlIGZyYW1lYnVmZmVyIGRldmljZSBpcyBhdmFpbGFibGUgZm9yCit0ZXN0aW5nIGNhcHR1cmUgYW5kIG91dHB1dCBvdmVybGF5cy4KKworVXAgdG8gNjQgdml2aWQgaW5zdGFuY2VzIGNhbiBiZSBjcmVhdGVkLCBlYWNoIHdpdGggdXAgdG8gMTYgaW5wdXRzIGFuZCAxNiBvdXRwdXRzLgorCitFYWNoIGlucHV0IGNhbiBiZSBhIHdlYmNhbSwgVFYgY2FwdHVyZSBkZXZpY2UsIFMtVmlkZW8gY2FwdHVyZSBkZXZpY2Ugb3IgYW4gSERNSQorY2FwdHVyZSBkZXZpY2UuIEVhY2ggb3V0cHV0IGNhbiBiZSBhbiBTLVZpZGVvIG91dHB1dCBkZXZpY2Ugb3IgYW4gSERNSSBvdXRwdXQKK2RldmljZS4KKworVGhlc2UgaW5wdXRzIGFuZCBvdXRwdXRzIGFjdCBleGFjdGx5IGFzIGEgcmVhbCBoYXJkd2FyZSBkZXZpY2Ugd291bGQgYmVoYXZlLiBUaGlzCithbGxvd3MgeW91IHRvIHVzZSB0aGlzIGRyaXZlciBhcyBhIHRlc3QgaW5wdXQgZm9yIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50LCBzaW5jZQoreW91IGNhbiB0ZXN0IHRoZSB2YXJpb3VzIGZlYXR1cmVzIHdpdGhvdXQgcmVxdWlyaW5nIHNwZWNpYWwgaGFyZHdhcmUuCisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBmZWF0dXJlcyBpbXBsZW1lbnRlZCBieSB0aGlzIGRyaXZlcjoKKworLSBTdXBwb3J0IGZvciByZWFkKCkvd3JpdGUoKSwgTU1BUCwgVVNFUlBUUiBhbmQgRE1BQlVGIHN0cmVhbWluZyBJL08uCistIEEgbGFyZ2UgbGlzdCBvZiB0ZXN0IHBhdHRlcm5zIGFuZCB2YXJpYXRpb25zIHRoZXJlb2YKKy0gV29ya2luZyBicmlnaHRuZXNzLCBjb250cmFzdCwgc2F0dXJhdGlvbiBhbmQgaHVlIGNvbnRyb2xzCistIFN1cHBvcnQgZm9yIHRoZSBhbHBoYSBjb2xvciBjb21wb25lbnQKKy0gRnVsbCBjb2xvcnNwYWNlIHN1cHBvcnQsIGluY2x1ZGluZyBsaW1pdGVkL2Z1bGwgUkdCIHJhbmdlCistIEFsbCBwb3NzaWJsZSBjb250cm9sIHR5cGVzIGFyZSBwcmVzZW50CistIFN1cHBvcnQgZm9yIHZhcmlvdXMgcGl4ZWwgYXNwZWN0IHJhdGlvcyBhbmQgdmlkZW8gYXNwZWN0IHJhdGlvcworLSBFcnJvciBpbmplY3Rpb24gdG8gdGVzdCB3aGF0IGhhcHBlbnMgaWYgZXJyb3JzIG9jY3VyCistIFN1cHBvcnRzIGNyb3AvY29tcG9zZS9zY2FsZSBpbiBhbnkgY29tYmluYXRpb24gZm9yIGJvdGggaW5wdXQgYW5kIG91dHB1dAorLSBDYW4gZW11bGF0ZSB1cCB0byA0SyByZXNvbHV0aW9ucworLSBBbGwgRmllbGQgc2V0dGluZ3MgYXJlIHN1cHBvcnRlZCBmb3IgdGVzdGluZyBpbnRlcmxhY2VkIGNhcHR1cmluZworLSBTdXBwb3J0cyBhbGwgc3RhbmRhcmQgWVVWIGFuZCBSR0IgZm9ybWF0cywgaW5jbHVkaW5nIHR3byBtdWx0aXBsYW5hciBZVVYgZm9ybWF0cworLSBSYXcgYW5kIFNsaWNlZCBWQkkgY2FwdHVyZSBhbmQgb3V0cHV0IHN1cHBvcnQKKy0gUmFkaW8gcmVjZWl2ZXIgYW5kIHRyYW5zbWl0dGVyIHN1cHBvcnQsIGluY2x1ZGluZyBSRFMgc3VwcG9ydAorLSBTb2Z0d2FyZSBkZWZpbmVkIHJhZGlvIChTRFIpIHN1cHBvcnQKKy0gQ2FwdHVyZSBhbmQgb3V0cHV0IG92ZXJsYXkgc3VwcG9ydAorCitUaGVzZSBmZWF0dXJlcyB3aWxsIGJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBiZWxvdy4KKworCitUYWJsZSBvZiBDb250ZW50cworLS0tLS0tLS0tLS0tLS0tLS0KKworU2VjdGlvbiAxOiBDb25maWd1cmluZyB0aGUgZHJpdmVyCitTZWN0aW9uIDI6IFZpZGVvIENhcHR1cmUKK1NlY3Rpb24gMi4xOiBXZWJjYW0gSW5wdXQKK1NlY3Rpb24gMi4yOiBUViBhbmQgUy1WaWRlbyBJbnB1dHMKK1NlY3Rpb24gMi4zOiBIRE1JIElucHV0CitTZWN0aW9uIDM6IFZpZGVvIE91dHB1dAorU2VjdGlvbiAzLjE6IFMtVmlkZW8gT3V0cHV0CitTZWN0aW9uIDMuMjogSERNSSBPdXRwdXQKK1NlY3Rpb24gNDogVkJJIENhcHR1cmUKK1NlY3Rpb24gNTogVkJJIE91dHB1dAorU2VjdGlvbiA2OiBSYWRpbyBSZWNlaXZlcgorU2VjdGlvbiA3OiBSYWRpbyBUcmFuc21pdHRlcgorU2VjdGlvbiA4OiBTb2Z0d2FyZSBEZWZpbmVkIFJhZGlvIFJlY2VpdmVyCitTZWN0aW9uIDk6IENvbnRyb2xzCitTZWN0aW9uIDkuMTogVXNlciBDb250cm9scyAtIFRlc3QgQ29udHJvbHMKK1NlY3Rpb24gOS4yOiBVc2VyIENvbnRyb2xzIC0gVmlkZW8gQ2FwdHVyZQorU2VjdGlvbiA5LjM6IFVzZXIgQ29udHJvbHMgLSBBdWRpbworU2VjdGlvbiA5LjQ6IFZpdmlkIENvbnRyb2xzCitTZWN0aW9uIDkuNC4xOiBUZXN0IFBhdHRlcm4gQ29udHJvbHMKK1NlY3Rpb24gOS40LjI6IENhcHR1cmUgRmVhdHVyZSBTZWxlY3Rpb24gQ29udHJvbHMKK1NlY3Rpb24gOS40LjM6IE91dHB1dCBGZWF0dXJlIFNlbGVjdGlvbiBDb250cm9scworU2VjdGlvbiA5LjQuNDogRXJyb3IgSW5qZWN0aW9uIENvbnRyb2xzCitTZWN0aW9uIDkuNC41OiBWQkkgUmF3IENhcHR1cmUgQ29udHJvbHMKK1NlY3Rpb24gOS41OiBEaWdpdGFsIFZpZGVvIENvbnRyb2xzCitTZWN0aW9uIDkuNjogRk0gUmFkaW8gUmVjZWl2ZXIgQ29udHJvbHMKK1NlY3Rpb24gOS43OiBGTSBSYWRpbyBNb2R1bGF0b3IKK1NlY3Rpb24gMTA6IFZpZGVvLCBWQkkgYW5kIFJEUyBMb29waW5nCitTZWN0aW9uIDEwLjE6IFZpZGVvIGFuZCBTbGljZWQgVkJJIGxvb3BpbmcKK1NlY3Rpb24gMTAuMjogUmFkaW8gJiBSRFMgTG9vcGluZworU2VjdGlvbiAxMTogQ3JvcHBpbmcsIENvbXBvc2luZywgU2NhbGluZworU2VjdGlvbiAxMjogRm9ybWF0cworU2VjdGlvbiAxMzogQ2FwdHVyZSBPdmVybGF5CitTZWN0aW9uIDE0OiBPdXRwdXQgT3ZlcmxheQorU2VjdGlvbiAxNTogU29tZSBGdXR1cmUgSW1wcm92ZW1lbnRzCisKKworU2VjdGlvbiAxOiBDb25maWd1cmluZyB0aGUgZHJpdmVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQnkgZGVmYXVsdCB0aGUgZHJpdmVyIHdpbGwgY3JlYXRlIGEgc2luZ2xlIGluc3RhbmNlIHRoYXQgaGFzIGEgdmlkZW8gY2FwdHVyZQorZGV2aWNlIHdpdGggd2ViY2FtLCBUViwgUy1WaWRlbyBhbmQgSERNSSBpbnB1dHMsIGEgdmlkZW8gb3V0cHV0IGRldmljZSB3aXRoCitTLVZpZGVvIGFuZCBIRE1JIG91dHB1dHMsIG9uZSB2YmkgY2FwdHVyZSBkZXZpY2UsIG9uZSB2Ymkgb3V0cHV0IGRldmljZSwgb25lCityYWRpbyByZWNlaXZlciBkZXZpY2UsIG9uZSByYWRpbyB0cmFuc21pdHRlciBkZXZpY2UgYW5kIG9uZSBTRFIgZGV2aWNlLgorCitUaGUgbnVtYmVyIG9mIGluc3RhbmNlcywgZGV2aWNlcywgdmlkZW8gaW5wdXRzIGFuZCBvdXRwdXRzIGFuZCB0aGVpciB0eXBlcyBhcmUKK2FsbCBjb25maWd1cmFibGUgdXNpbmcgdGhlIGZvbGxvd2luZyBtb2R1bGUgb3B0aW9uczoKKworbl9kZXZzOiBudW1iZXIgb2YgZHJpdmVyIGluc3RhbmNlcyB0byBjcmVhdGUuIEJ5IGRlZmF1bHQgc2V0IHRvIDEuIFVwIHRvIDY0CisJaW5zdGFuY2VzIGNhbiBiZSBjcmVhdGVkLgorCitub2RlX3R5cGVzOiB3aGljaCBkZXZpY2VzIHNob3VsZCBlYWNoIGRyaXZlciBpbnN0YW5jZSBjcmVhdGUuIEFuIGFycmF5IG9mCisJaGV4YWRlY2ltYWwgdmFsdWVzLCBvbmUgZm9yIGVhY2ggaW5zdGFuY2UuIFRoZSBkZWZhdWx0IGlzIDB4MWQzZC4KKwlFYWNoIHZhbHVlIGlzIGEgYml0bWFzayB3aXRoIHRoZSBmb2xsb3dpbmcgbWVhbmluZzoKKwkJYml0IDA6IFZpZGVvIENhcHR1cmUgbm9kZQorCQliaXQgMi0zOiBWQkkgQ2FwdHVyZSBub2RlOiAwID0gbm9uZSwgMSA9IHJhdyB2YmksIDIgPSBzbGljZWQgdmJpLCAzID0gYm90aAorCQliaXQgNDogUmFkaW8gUmVjZWl2ZXIgbm9kZQorCQliaXQgNTogU29mdHdhcmUgRGVmaW5lZCBSYWRpbyBSZWNlaXZlciBub2RlCisJCWJpdCA4OiBWaWRlbyBPdXRwdXQgbm9kZQorCQliaXQgMTAtMTE6IFZCSSBPdXRwdXQgbm9kZTogMCA9IG5vbmUsIDEgPSByYXcgdmJpLCAyID0gc2xpY2VkIHZiaSwgMyA9IGJvdGgKKwkJYml0IDEyOiBSYWRpbyBUcmFuc21pdHRlciBub2RlCisJCWJpdCAxNjogRnJhbWVidWZmZXIgZm9yIHRlc3Rpbmcgb3ZlcmxheXMKKworCVNvIHRvIGNyZWF0ZSBmb3VyIGluc3RhbmNlcywgdGhlIGZpcnN0IHR3byB3aXRoIGp1c3Qgb25lIHZpZGVvIGNhcHR1cmUKKwlkZXZpY2UsIHRoZSBzZWNvbmQgdHdvIHdpdGgganVzdCBvbmUgdmlkZW8gb3V0cHV0IGRldmljZSB5b3Ugd291bGQgcGFzcworCXRoZXNlIG1vZHVsZSBvcHRpb25zIHRvIHZpdmlkOgorCisJCW5fZGV2cz00IG5vZGVfdHlwZXM9MHgxLDB4MSwweDEwMCwweDEwMAorCitudW1faW5wdXRzOiB0aGUgbnVtYmVyIG9mIGlucHV0cywgb25lIGZvciBlYWNoIGluc3RhbmNlLiBCeSBkZWZhdWx0IDQgaW5wdXRzCisJYXJlIGNyZWF0ZWQgZm9yIGVhY2ggdmlkZW8gY2FwdHVyZSBkZXZpY2UuIEF0IG1vc3QgMTYgaW5wdXRzIGNhbiBiZSBjcmVhdGVkLAorCWFuZCB0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZS4KKworaW5wdXRfdHlwZXM6IHRoZSBpbnB1dCB0eXBlcyBmb3IgZWFjaCBpbnN0YW5jZSwgdGhlIGRlZmF1bHQgaXMgMHhlNC4gVGhpcyBkZWZpbmVzCisJd2hhdCB0aGUgdHlwZSBvZiBlYWNoIGlucHV0IGlzIHdoZW4gdGhlIGlucHV0cyBhcmUgY3JlYXRlZCBmb3IgZWFjaCBkcml2ZXIKKwlpbnN0YW5jZS4gVGhpcyBpcyBhIGhleGFkZWNpbWFsIHZhbHVlIHdpdGggdXAgdG8gMTYgcGFpcnMgb2YgYml0cywgZWFjaAorCXBhaXIgZ2l2ZXMgdGhlIHR5cGUgYW5kIGJpdHMgMC0xIG1hcCB0byBpbnB1dCAwLCBiaXRzIDItMyBtYXAgdG8gaW5wdXQgMSwKKwkzMC0zMSBtYXAgdG8gaW5wdXQgMTUuIEVhY2ggcGFpciBvZiBiaXRzIGhhcyB0aGUgZm9sbG93aW5nIG1lYW5pbmc6CisKKwkJMDA6IHRoaXMgaXMgYSB3ZWJjYW0gaW5wdXQKKwkJMDE6IHRoaXMgaXMgYSBUViB0dW5lciBpbnB1dAorCQkxMDogdGhpcyBpcyBhbiBTLVZpZGVvIGlucHV0CisJCTExOiB0aGlzIGlzIGFuIEhETUkgaW5wdXQKKworCVNvIHRvIGNyZWF0ZSBhIHZpZGVvIGNhcHR1cmUgZGV2aWNlIHdpdGggOCBpbnB1dHMgd2hlcmUgaW5wdXQgMCBpcyBhIFRWCisJdHVuZXIsIGlucHV0cyAxLTMgYXJlIFMtVmlkZW8gaW5wdXRzIGFuZCBpbnB1dHMgNC03IGFyZSBIRE1JIGlucHV0cyB5b3UKKwl3b3VsZCB1c2UgdGhlIGZvbGxvd2luZyBtb2R1bGUgb3B0aW9uczoKKworCQludW1faW5wdXRzPTggaW5wdXRfdHlwZXM9MHhmZmE5CisKK251bV9vdXRwdXRzOiB0aGUgbnVtYmVyIG9mIG91dHB1dHMsIG9uZSBmb3IgZWFjaCBpbnN0YW5jZS4gQnkgZGVmYXVsdCAyIG91dHB1dHMKKwlhcmUgY3JlYXRlZCBmb3IgZWFjaCB2aWRlbyBvdXRwdXQgZGV2aWNlLiBBdCBtb3N0IDE2IG91dHB1dHMgY2FuIGJlCisJY3JlYXRlZCwgYW5kIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lLgorCitvdXRwdXRfdHlwZXM6IHRoZSBvdXRwdXQgdHlwZXMgZm9yIGVhY2ggaW5zdGFuY2UsIHRoZSBkZWZhdWx0IGlzIDB4MDIuIFRoaXMgZGVmaW5lcworCXdoYXQgdGhlIHR5cGUgb2YgZWFjaCBvdXRwdXQgaXMgd2hlbiB0aGUgb3V0cHV0cyBhcmUgY3JlYXRlZCBmb3IgZWFjaAorCWRyaXZlciBpbnN0YW5jZS4gVGhpcyBpcyBhIGhleGFkZWNpbWFsIHZhbHVlIHdpdGggdXAgdG8gMTYgYml0cywgZWFjaCBiaXQKKwlnaXZlcyB0aGUgdHlwZSBhbmQgYml0IDAgbWFwcyB0byBvdXRwdXQgMCwgYml0IDEgbWFwcyB0byBvdXRwdXQgMSwgYml0CisJMTUgbWFwcyB0byBvdXRwdXQgMTUuIFRoZSBtZWFuaW5nIG9mIGVhY2ggYml0IGlzIGFzIGZvbGxvd3M6CisKKwkJMDogdGhpcyBpcyBhbiBTLVZpZGVvIG91dHB1dAorCQkxOiB0aGlzIGlzIGFuIEhETUkgb3V0cHV0CisKKwlTbyB0byBjcmVhdGUgYSB2aWRlbyBvdXRwdXQgZGV2aWNlIHdpdGggOCBvdXRwdXRzIHdoZXJlIG91dHB1dHMgMC0zIGFyZQorCVMtVmlkZW8gb3V0cHV0cyBhbmQgb3V0cHV0cyA0LTcgYXJlIEhETUkgb3V0cHV0cyB5b3Ugd291bGQgdXNlIHRoZQorCWZvbGxvd2luZyBtb2R1bGUgb3B0aW9uczoKKworCQludW1fb3V0cHV0cz04IG91dHB1dF90eXBlcz0weGYwCisKK3ZpZF9jYXBfbnI6IGdpdmUgdGhlIGRlc2lyZWQgdmlkZW9YIHN0YXJ0IG51bWJlciBmb3IgZWFjaCB2aWRlbyBjYXB0dXJlIGRldmljZS4KKwlUaGUgZGVmYXVsdCBpcyAtMSB3aGljaCB3aWxsIGp1c3QgdGFrZSB0aGUgZmlyc3QgZnJlZSBudW1iZXIuIFRoaXMgYWxsb3dzCisJeW91IHRvIG1hcCBjYXB0dXJlIHZpZGVvIG5vZGVzIHRvIHNwZWNpZmljIHZpZGVvWCBkZXZpY2Ugbm9kZXMuIEV4YW1wbGU6CisKKwkJbl9kZXZzPTQgdmlkX2NhcF9ucj0yLDQsNiw4CisKKwlUaGlzIHdpbGwgYXR0ZW1wdCB0byBhc3NpZ24gL2Rldi92aWRlbzIgZm9yIHRoZSB2aWRlbyBjYXB0dXJlIGRldmljZSBvZgorCXRoZSBmaXJzdCB2aXZpZCBpbnN0YW5jZSwgdmlkZW80IGZvciB0aGUgbmV4dCB1cCB0byB2aWRlbzggZm9yIHRoZSBsYXN0CisJaW5zdGFuY2UuIElmIGl0IGNhbid0IHN1Y2NlZWQsIHRoZW4gaXQgd2lsbCBqdXN0IHRha2UgdGhlIG5leHQgZnJlZQorCW51bWJlci4KKwordmlkX291dF9ucjogZ2l2ZSB0aGUgZGVzaXJlZCB2aWRlb1ggc3RhcnQgbnVtYmVyIGZvciBlYWNoIHZpZGVvIG91dHB1dCBkZXZpY2UuCisgICAgICAgIFRoZSBkZWZhdWx0IGlzIC0xIHdoaWNoIHdpbGwganVzdCB0YWtlIHRoZSBmaXJzdCBmcmVlIG51bWJlci4KKwordmJpX2NhcF9ucjogZ2l2ZSB0aGUgZGVzaXJlZCB2YmlYIHN0YXJ0IG51bWJlciBmb3IgZWFjaCB2YmkgY2FwdHVyZSBkZXZpY2UuCisgICAgICAgIFRoZSBkZWZhdWx0IGlzIC0xIHdoaWNoIHdpbGwganVzdCB0YWtlIHRoZSBmaXJzdCBmcmVlIG51bWJlci4KKwordmJpX291dF9ucjogZ2l2ZSB0aGUgZGVzaXJlZCB2YmlYIHN0YXJ0IG51bWJlciBmb3IgZWFjaCB2Ymkgb3V0cHV0IGRldmljZS4KKyAgICAgICAgVGhlIGRlZmF1bHQgaXMgLTEgd2hpY2ggd2lsbCBqdXN0IHRha2UgdGhlIGZpcnN0IGZyZWUgbnVtYmVyLgorCityYWRpb19yeF9ucjogZ2l2ZSB0aGUgZGVzaXJlZCByYWRpb1ggc3RhcnQgbnVtYmVyIGZvciBlYWNoIHJhZGlvIHJlY2VpdmVyIGRldmljZS4KKyAgICAgICAgVGhlIGRlZmF1bHQgaXMgLTEgd2hpY2ggd2lsbCBqdXN0IHRha2UgdGhlIGZpcnN0IGZyZWUgbnVtYmVyLgorCityYWRpb190eF9ucjogZ2l2ZSB0aGUgZGVzaXJlZCByYWRpb1ggc3RhcnQgbnVtYmVyIGZvciBlYWNoIHJhZGlvIHRyYW5zbWl0dGVyCisJZGV2aWNlLiBUaGUgZGVmYXVsdCBpcyAtMSB3aGljaCB3aWxsIGp1c3QgdGFrZSB0aGUgZmlyc3QgZnJlZSBudW1iZXIuCisKK3Nkcl9jYXBfbnI6IGdpdmUgdGhlIGRlc2lyZWQgc3dyYWRpb1ggc3RhcnQgbnVtYmVyIGZvciBlYWNoIFNEUiBjYXB0dXJlIGRldmljZS4KKyAgICAgICAgVGhlIGRlZmF1bHQgaXMgLTEgd2hpY2ggd2lsbCBqdXN0IHRha2UgdGhlIGZpcnN0IGZyZWUgbnVtYmVyLgorCitjY3NfY2FwX21vZGU6IHNwZWNpZnkgdGhlIGFsbG93ZWQgdmlkZW8gY2FwdHVyZSBjcm9wL2NvbXBvc2Uvc2NhbGluZyBjb21iaW5hdGlvbgorCWZvciBlYWNoIGRyaXZlciBpbnN0YW5jZS4gVmlkZW8gY2FwdHVyZSBkZXZpY2VzIGNhbiBoYXZlIGFueSBjb21iaW5hdGlvbgorCW9mIGNyb3BwaW5nLCBjb21wb3NpbmcgYW5kIHNjYWxpbmcgY2FwYWJpbGl0aWVzIGFuZCB0aGlzIHdpbGwgdGVsbCB0aGUKKwl2aXZpZCBkcml2ZXIgd2hpY2ggb2YgdGhvc2UgaXMgc2hvdWxkIGVtdWxhdGUuIEJ5IGRlZmF1bHQgdGhlIHVzZXIgY2FuCisJc2VsZWN0IHRoaXMgdGhyb3VnaCBjb250cm9scy4KKworCVRoZSB2YWx1ZSBpcyBlaXRoZXIgLTEgKGNvbnRyb2xsZWQgYnkgdGhlIHVzZXIpIG9yIGEgc2V0IG9mIHRocmVlIGJpdHMsCisJZWFjaCBlbmFibGluZyAoMSkgb3IgZGlzYWJsaW5nICgwKSBvbmUgb2YgdGhlIGZlYXR1cmVzOgorCisJCWJpdCAwOiBFbmFibGUgY3JvcCBzdXBwb3J0LiBDcm9wcGluZyB3aWxsIHRha2Ugb25seSBwYXJ0IG9mIHRoZQorCQkgICAgICAgaW5jb21pbmcgcGljdHVyZS4KKwkJYml0IDE6IEVuYWJsZSBjb21wb3NlIHN1cHBvcnQuIENvbXBvc2luZyB3aWxsIGNvcHkgdGhlIGluY29taW5nCisJCSAgICAgICBwaWN0dXJlIGludG8gYSBsYXJnZXIgYnVmZmVyLgorCQliaXQgMjogRW5hYmxlIHNjYWxpbmcgc3VwcG9ydC4gU2NhbGluZyBjYW4gc2NhbGUgdGhlIGluY29taW5nCisJCSAgICAgICBwaWN0dXJlLiBUaGUgc2NhbGVyIG9mIHRoZSB2aXZpZCBkcml2ZXIgY2FuIGVubGFyZ2UgdXAKKwkJICAgICAgIG9yIGRvd24gdG8gZm91ciB0aW1lcyB0aGUgb3JpZ2luYWwgc2l6ZS4gVGhlIHNjYWxlciBpcworCQkgICAgICAgdmVyeSBzaW1wbGUgYW5kIGxvdy1xdWFsaXR5LiBTaW1wbGljaXR5IGFuZCBzcGVlZCB3ZXJlCisJCSAgICAgICBrZXksIG5vdCBxdWFsaXR5LgorCisJTm90ZSB0aGF0IHRoaXMgdmFsdWUgaXMgaWdub3JlZCBieSB3ZWJjYW0gaW5wdXRzOiB0aG9zZSBlbnVtZXJhdGUKKwlkaXNjcmV0ZSBmcmFtZXNpemVzIGFuZCB0aGF0IGlzIGluY29tcGF0aWJsZSB3aXRoIGNyb3BwaW5nLCBjb21wb3NpbmcKKwlvciBzY2FsaW5nLgorCitjY3Nfb3V0X21vZGU6IHNwZWNpZnkgdGhlIGFsbG93ZWQgdmlkZW8gb3V0cHV0IGNyb3AvY29tcG9zZS9zY2FsaW5nIGNvbWJpbmF0aW9uCisJZm9yIGVhY2ggZHJpdmVyIGluc3RhbmNlLiBWaWRlbyBvdXRwdXQgZGV2aWNlcyBjYW4gaGF2ZSBhbnkgY29tYmluYXRpb24KKwlvZiBjcm9wcGluZywgY29tcG9zaW5nIGFuZCBzY2FsaW5nIGNhcGFiaWxpdGllcyBhbmQgdGhpcyB3aWxsIHRlbGwgdGhlCisJdml2aWQgZHJpdmVyIHdoaWNoIG9mIHRob3NlIGlzIHNob3VsZCBlbXVsYXRlLiBCeSBkZWZhdWx0IHRoZSB1c2VyIGNhbgorCXNlbGVjdCB0aGlzIHRocm91Z2ggY29udHJvbHMuCisKKwlUaGUgdmFsdWUgaXMgZWl0aGVyIC0xIChjb250cm9sbGVkIGJ5IHRoZSB1c2VyKSBvciBhIHNldCBvZiB0aHJlZSBiaXRzLAorCWVhY2ggZW5hYmxpbmcgKDEpIG9yIGRpc2FibGluZyAoMCkgb25lIG9mIHRoZSBmZWF0dXJlczoKKworCQliaXQgMDogRW5hYmxlIGNyb3Agc3VwcG9ydC4gQ3JvcHBpbmcgd2lsbCB0YWtlIG9ubHkgcGFydCBvZiB0aGUKKwkJICAgICAgIG91dGdvaW5nIGJ1ZmZlci4KKwkJYml0IDE6IEVuYWJsZSBjb21wb3NlIHN1cHBvcnQuIENvbXBvc2luZyB3aWxsIGNvcHkgdGhlIGluY29taW5nCisJCSAgICAgICBidWZmZXIgaW50byBhIGxhcmdlciBwaWN0dXJlIGZyYW1lLgorCQliaXQgMjogRW5hYmxlIHNjYWxpbmcgc3VwcG9ydC4gU2NhbGluZyBjYW4gc2NhbGUgdGhlIGluY29taW5nCisJCSAgICAgICBidWZmZXIuIFRoZSBzY2FsZXIgb2YgdGhlIHZpdmlkIGRyaXZlciBjYW4gZW5sYXJnZSB1cAorCQkgICAgICAgb3IgZG93biB0byBmb3VyIHRpbWVzIHRoZSBvcmlnaW5hbCBzaXplLiBUaGUgc2NhbGVyIGlzCisJCSAgICAgICB2ZXJ5IHNpbXBsZSBhbmQgbG93LXF1YWxpdHkuIFNpbXBsaWNpdHkgYW5kIHNwZWVkIHdlcmUKKwkJICAgICAgIGtleSwgbm90IHF1YWxpdHkuCisKK211bHRpcGxhbmFyOiBzZWxlY3Qgd2hldGhlciBlYWNoIGRldmljZSBpbnN0YW5jZSBzdXBwb3J0cyBtdWx0aS1wbGFuYXIgZm9ybWF0cywKKwlhbmQgdGh1cyB0aGUgVjRMMiBtdWx0aS1wbGFuYXIgQVBJLiBCeSBkZWZhdWx0IGRldmljZSBpbnN0YW5jZXMgYXJlCisJc2luZ2xlLXBsYW5hci4KKworCVRoaXMgbW9kdWxlIG9wdGlvbiBjYW4gb3ZlcnJpZGUgdGhhdCBmb3IgZWFjaCBpbnN0YW5jZS4gVmFsdWVzIGFyZToKKworCQkxOiB0aGlzIGlzIGEgc2luZ2xlLXBsYW5hciBpbnN0YW5jZS4KKwkJMjogdGhpcyBpcyBhIG11bHRpLXBsYW5hciBpbnN0YW5jZS4KKwordml2aWRfZGVidWc6IGVuYWJsZSBkcml2ZXIgZGVidWdnaW5nIGluZm8KKworbm9fZXJyb3JfaW5qOiBpZiBzZXQgZGlzYWJsZSB0aGUgZXJyb3IgaW5qZWN0aW5nIGNvbnRyb2xzLiBUaGlzIG9wdGlvbiBpcworCW5lZWRlZCBpbiBvcmRlciB0byBydW4gYSB0b29sIGxpa2UgdjRsMi1jb21wbGlhbmNlLiBUb29scyBsaWtlIHRoYXQKKwlleGVyY2lzZSBhbGwgY29udHJvbHMgaW5jbHVkaW5nIGEgY29udHJvbCBsaWtlICdEaXNjb25uZWN0JyB3aGljaAorCWVtdWxhdGVzIGEgVVNCIGRpc2Nvbm5lY3QsIG1ha2luZyB0aGUgZGV2aWNlIGluYWNjZXNzaWJsZSBhbmQgc28KKwlhbGwgdGVzdHMgdGhhdCB2NGwyLWNvbXBsaWFuY2UgaXMgZG9pbmcgd2lsbCBmYWlsIGFmdGVyd2FyZHMuCisKKwlUaGVyZSBtYXkgYmUgb3RoZXIgc2l0dWF0aW9ucyBhcyB3ZWxsIHdoZXJlIHlvdSB3YW50IHRvIGRpc2FibGUgdGhlCisJZXJyb3IgaW5qZWN0aW9uIHN1cHBvcnQgb2Ygdml2aWQuIFdoZW4gdGhpcyBvcHRpb24gaXMgc2V0LCB0aGVuIHRoZQorCWNvbnRyb2xzIHRoYXQgc2VsZWN0IGNyb3AsIGNvbXBvc2UgYW5kIHNjYWxlIGJlaGF2aW9yIGFyZSBhbHNvCisJcmVtb3ZlZC4gVW5sZXNzIG92ZXJyaWRkZW4gYnkgY2NzX2NhcF9tb2RlIGFuZC9vciBjY3Nfb3V0X21vZGUgdGhlCisJd2lsbCBkZWZhdWx0IHRvIGVuYWJsaW5nIGNyb3AsIGNvbXBvc2UgYW5kIHNjYWxpbmcuCisKK1Rha2VuIHRvZ2V0aGVyLCBhbGwgdGhlc2UgbW9kdWxlIG9wdGlvbnMgYWxsb3cgeW91IHRvIHByZWNpc2VseSBjdXN0b21pemUKK3RoZSBkcml2ZXIgYmVoYXZpb3IgYW5kIHRlc3QgeW91ciBhcHBsaWNhdGlvbiB3aXRoIGFsbCBzb3J0cyBvZiBwZXJtdXRhdGlvbnMuCitJdCBpcyBhbHNvIHZlcnkgc3VpdGFibGUgdG8gZW11bGF0ZSBoYXJkd2FyZSB0aGF0IGlzIG5vdCB5ZXQgYXZhaWxhYmxlLCBlLmcuCit3aGVuIGRldmVsb3Bpbmcgc29mdHdhcmUgZm9yIGEgbmV3IHVwY29taW5nIGRldmljZS4KKworCitTZWN0aW9uIDI6IFZpZGVvIENhcHR1cmUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGlzIHByb2JhYmx5IHRoZSBtb3N0IGZyZXF1ZW50bHkgdXNlZCBmZWF0dXJlLiBUaGUgdmlkZW8gY2FwdHVyZSBkZXZpY2UKK2NhbiBiZSBjb25maWd1cmVkIGJ5IHVzaW5nIHRoZSBtb2R1bGUgb3B0aW9ucyBudW1faW5wdXRzLCBpbnB1dF90eXBlcyBhbmQKK2Njc19jYXBfbW9kZSAoc2VlIHNlY3Rpb24gMSBmb3IgbW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbiksIGJ1dCBieSBkZWZhdWx0Citmb3VyIGlucHV0cyBhcmUgY29uZmlndXJlZDogYSB3ZWJjYW0sIGEgVFYgdHVuZXIsIGFuIFMtVmlkZW8gYW5kIGFuIEhETUkKK2lucHV0LCBvbmUgaW5wdXQgZm9yIGVhY2ggaW5wdXQgdHlwZS4gVGhvc2UgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbAorYmVsb3cuCisKK1NwZWNpYWwgYXR0ZW50aW9uIGhhcyBiZWVuIGdpdmVuIHRvIHRoZSByYXRlIGF0IHdoaWNoIG5ldyBmcmFtZXMgYmVjb21lCithdmFpbGFibGUuIFRoZSBqaXR0ZXIgd2lsbCBiZSBhcm91bmQgMSBqaWZmaWUgKHRoYXQgZGVwZW5kcyBvbiB0aGUgSFoKK2NvbmZpZ3VyYXRpb24gb2YgeW91ciBrZXJuZWwsIHNvIHVzdWFsbHkgMS8xMDAsIDEvMjUwIG9yIDEvMTAwMCBvZiBhIHNlY29uZCksCitidXQgdGhlIGxvbmctdGVybSBiZWhhdmlvciBpcyBleGFjdGx5IGZvbGxvd2luZyB0aGUgZnJhbWVyYXRlLiBTbyBhCitmcmFtZXJhdGUgb2YgNTkuOTQgSHogaXMgcmVhbGx5IGRpZmZlcmVudCBmcm9tIDYwIEh6LiBJZiB0aGUgZnJhbWVyYXRlCitleGNlZWRzIHlvdXIga2VybmVsJ3MgSFogdmFsdWUsIHRoZW4geW91IHdpbGwgZ2V0IGRyb3BwZWQgZnJhbWVzLCBidXQgdGhlCitmcmFtZS9maWVsZCBzZXF1ZW5jZSBjb3VudGluZyB3aWxsIGtlZXAgdHJhY2sgb2YgdGhhdCBzbyB0aGUgc2VxdWVuY2UKK2NvdW50IHdpbGwgc2tpcCB3aGVuZXZlciBmcmFtZXMgYXJlIGRyb3BwZWQuCisKKworU2VjdGlvbiAyLjE6IFdlYmNhbSBJbnB1dAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgd2ViY2FtIGlucHV0IHN1cHBvcnRzIHRocmVlIGZyYW1lc2l6ZXM6IDMyMHgxODAsIDY0MHgzNjAgYW5kIDEyODB4NzIwLiBJdAorc3VwcG9ydHMgZnJhbWVzIHBlciBzZWNvbmQgc2V0dGluZ3Mgb2YgMTAsIDE1LCAyNSwgMzAsIDUwIGFuZCA2MCBmcHMuIFdoaWNoIG9uZXMKK2FyZSBhdmFpbGFibGUgZGVwZW5kcyBvbiB0aGUgY2hvc2VuIGZyYW1lc2l6ZTogdGhlIGxhcmdlciB0aGUgZnJhbWVzaXplLCB0aGUKK2xvd2VyIHRoZSBtYXhpbXVtIGZyYW1lcyBwZXIgc2Vjb25kLgorCitUaGUgaW5pdGlhbGx5IHNlbGVjdGVkIGNvbG9yc3BhY2Ugd2hlbiB5b3Ugc3dpdGNoIHRvIHRoZSB3ZWJjYW0gaW5wdXQgd2lsbCBiZQorc1JHQi4KKworCitTZWN0aW9uIDIuMjogVFYgYW5kIFMtVmlkZW8gSW5wdXRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgVFYgYW5kIFMtVmlkZW8gaW5wdXQgaXMgdGhhdCB0aGUgVFYgaGFzIGEKK3R1bmVyLiBPdGhlcndpc2UgdGhleSBiZWhhdmUgaWRlbnRpY2FsbHkuCisKK1RoZXNlIGlucHV0cyBzdXBwb3J0IGF1ZGlvIGlucHV0cyBhcyB3ZWxsOiBvbmUgVFYgYW5kIG9uZSBMaW5lLUluLiBUaGV5Citib3RoIHN1cHBvcnQgYWxsIFRWIHN0YW5kYXJkcy4gSWYgdGhlIHN0YW5kYXJkIGlzIHF1ZXJpZWQsIHRoZW4gdGhlIFZpdmlkCitjb250cm9scyAnU3RhbmRhcmQgU2lnbmFsIE1vZGUnIGFuZCAnU3RhbmRhcmQnIGRldGVybWluZSB3aGF0Cit0aGUgcmVzdWx0IHdpbGwgYmUuCisKK1RoZXNlIGlucHV0cyBzdXBwb3J0IGFsbCBjb21iaW5hdGlvbnMgb2YgdGhlIGZpZWxkIHNldHRpbmcuIFNwZWNpYWwgY2FyZSBoYXMKK2JlZW4gdGFrZW4gdG8gZmFpdGhmdWxseSByZXByb2R1Y2UgaG93IGZpZWxkcyBhcmUgaGFuZGxlZCBmb3IgdGhlIGRpZmZlcmVudAorVFYgc3RhbmRhcmRzLiBUaGlzIGlzIHBhcnRpY3VsYXJseSBub3RpY2FibGUgd2hlbiBnZW5lcmF0aW5nIGEgaG9yaXpvbnRhbGx5Cittb3ZpbmcgaW1hZ2Ugc28gdGhlIHRlbXBvcmFsIGVmZmVjdCBvZiB1c2luZyBpbnRlcmxhY2VkIGZvcm1hdHMgYmVjb21lcyBjbGVhcmx5Cit2aXNpYmxlLiBGb3IgNTAgSHogc3RhbmRhcmRzIHRoZSB0b3AgZmllbGQgaXMgdGhlIG9sZGVzdCBhbmQgdGhlIGJvdHRvbSBmaWVsZAoraXMgdGhlIG5ld2VzdCBpbiB0aW1lLiBGb3IgNjAgSHogc3RhbmRhcmRzIHRoYXQgaXMgcmV2ZXJzZWQ6IHRoZSBib3R0b20gZmllbGQKK2lzIHRoZSBvbGRlc3QgYW5kIHRoZSB0b3AgZmllbGQgaXMgdGhlIG5ld2VzdCBpbiB0aW1lLgorCitXaGVuIHlvdSBzdGFydCBjYXB0dXJpbmcgaW4gVjRMMl9GSUVMRF9BTFRFUk5BVEUgbW9kZSB0aGUgZmlyc3QgYnVmZmVyIHdpbGwKK2NvbnRhaW4gdGhlIHRvcCBmaWVsZCBmb3IgNTAgSHogc3RhbmRhcmRzIGFuZCB0aGUgYm90dG9tIGZpZWxkIGZvciA2MCBIegorc3RhbmRhcmRzLiBUaGlzIGlzIHdoYXQgY2FwdHVyZSBoYXJkd2FyZSBkb2VzIGFzIHdlbGwuCisKK0ZpbmFsbHksIGZvciBQQUwvU0VDQU0gc3RhbmRhcmRzIHRoZSBmaXJzdCBoYWxmIG9mIHRoZSB0b3AgbGluZSBjb250YWlucyBub2lzZS4KK1RoaXMgc2ltdWxhdGVzIHRoZSBXaWRlIFNjcmVlbiBTaWduYWwgdGhhdCBpcyBjb21tb25seSBwbGFjZWQgdGhlcmUuCisKK1RoZSBpbml0aWFsbHkgc2VsZWN0ZWQgY29sb3JzcGFjZSB3aGVuIHlvdSBzd2l0Y2ggdG8gdGhlIFRWIG9yIFMtVmlkZW8gaW5wdXQKK3dpbGwgYmUgU01QVEUtMTcwTS4KKworVGhlIHBpeGVsIGFzcGVjdCByYXRpbyB3aWxsIGRlcGVuZCBvbiB0aGUgVFYgc3RhbmRhcmQuIFRoZSB2aWRlbyBhc3BlY3QgcmF0aW8KK2NhbiBiZSBzZWxlY3RlZCB0aHJvdWdoIHRoZSAnU3RhbmRhcmQgQXNwZWN0IFJhdGlvJyBWaXZpZCBjb250cm9sLgorQ2hvaWNlcyBhcmUgJzR4MycsICcxNng5JyB3aGljaCB3aWxsIGdpdmUgbGV0dGVyYm94ZWQgd2lkZXNjcmVlbiB2aWRlbyBhbmQKKycxNng5IEFub21vcnBoaWMnIHdoaWNoIHdpbGwgZ2l2ZSBmdWxsIHNjcmVlbiBzcXVhc2hlZCBhbmFtb3JwaGljIHdpZGVzY3JlZW4KK3ZpZGVvIHRoYXQgd2lsbCBuZWVkIHRvIGJlIHNjYWxlZCBhY2NvcmRpbmdseS4KKworVGhlIFRWICd0dW5lcicgc3VwcG9ydHMgYSBmcmVxdWVuY3kgcmFuZ2Ugb2YgNDQtOTU4IE1Iei4gQ2hhbm5lbHMgYXJlIGF2YWlsYWJsZQorZXZlcnkgNiBNSHosIHN0YXJ0aW5nIGZyb20gNDkuMjUgTUh6LiBGb3IgZWFjaCBjaGFubmVsIHRoZSBnZW5lcmF0ZWQgaW1hZ2UKK3dpbGwgYmUgaW4gY29sb3IgZm9yIHRoZSArLy0gMC4yNSBNSHogYXJvdW5kIGl0LCBhbmQgaW4gZ3JheXNjYWxlIGZvcgorKy8tIDEgTUh6IGFyb3VuZCB0aGUgY2hhbm5lbC4gQmV5b25kIHRoYXQgaXQgaXMganVzdCBub2lzZS4gVGhlIFZJRElPQ19HX1RVTkVSCitpb2N0bCB3aWxsIHJldHVybiAxMDAlIHNpZ25hbCBzdHJlbmd0aCBmb3IgKy8tIDAuMjUgTUh6IGFuZCA1MCUgZm9yICsvLSAxIE1Iei4KK0l0IHdpbGwgYWxzbyByZXR1cm4gY29ycmVjdCBhZmMgdmFsdWVzIHRvIHNob3cgd2hldGhlciB0aGUgZnJlcXVlbmN5IGlzIHRvbworbG93IG9yIHRvbyBoaWdoLgorCitUaGUgYXVkaW8gc3ViY2hhbm5lbHMgdGhhdCBhcmUgcmV0dXJuZWQgYXJlIE1PTk8gZm9yIHRoZSArLy0gMSBNSHogcmFuZ2UgYXJvdW5kCithIHZhbGlkIGNoYW5uZWwgZnJlcXVlbmN5LiBXaGVuIHRoZSBmcmVxdWVuY3kgaXMgd2l0aGluICsvLSAwLjI1IE1IeiBvZiB0aGUKK2NoYW5uZWwgaXQgd2lsbCByZXR1cm4gZWl0aGVyIE1PTk8sIFNURVJFTywgZWl0aGVyIE1PTk8gfCBTQVAgKGZvciBOVFNDKSBvcgorTEFORzEgfCBMQU5HMiAoZm9yIG90aGVycyksIG9yIFNURVJFTyB8IFNBUC4KKworV2hpY2ggb25lIGlzIHJldHVybmVkIGRlcGVuZHMgb24gdGhlIGNob3NlbiBjaGFubmVsLCBlYWNoIG5leHQgdmFsaWQgY2hhbm5lbAord2lsbCBjeWNsZSB0aHJvdWdoIHRoZSBwb3NzaWJsZSBhdWRpbyBzdWJjaGFubmVsIGNvbWJpbmF0aW9ucy4gVGhpcyBhbGxvd3MKK3lvdSB0byB0ZXN0IHRoZSB2YXJpb3VzIGNvbWJpbmF0aW9ucyBieSBqdXN0IHN3aXRjaGluZyBjaGFubmVscy4uCisKK0ZpbmFsbHksIGZvciB0aGVzZSBpbnB1dHMgdGhlIHY0bDJfdGltZWNvZGUgc3RydWN0IGlzIGZpbGxlZCBpbiBpbiB0aGUKK2RlcXVldWVkIHY0bDJfYnVmZmVyIHN0cnVjdC4KKworCitTZWN0aW9uIDIuMzogSERNSSBJbnB1dAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIEhETUkgaW5wdXRzIHN1cHBvcnRzIGFsbCBDRUEtODYxIGFuZCBETVQgdGltaW5ncywgYm90aCBwcm9ncmVzc2l2ZSBhbmQKK2ludGVybGFjZWQsIGZvciBwaXhlbGNsb2NrIGZyZXF1ZW5jaWVzIGJldHdlZW4gMjUgYW5kIDYwMCBNSHouIFRoZSBmaWVsZAorbW9kZSBmb3IgaW50ZXJsYWNlZCBmb3JtYXRzIGlzIGFsd2F5cyBWNEwyX0ZJRUxEX0FMVEVSTkFURS4gRm9yIEhETUkgdGhlCitmaWVsZCBvcmRlciBpcyBhbHdheXMgdG9wIGZpZWxkIGZpcnN0LCBhbmQgd2hlbiB5b3Ugc3RhcnQgY2FwdHVyaW5nIGFuCitpbnRlcmxhY2VkIGZvcm1hdCB5b3Ugd2lsbCByZWNlaXZlIHRoZSB0b3AgZmllbGQgZmlyc3QuCisKK1RoZSBpbml0aWFsbHkgc2VsZWN0ZWQgY29sb3JzcGFjZSB3aGVuIHlvdSBzd2l0Y2ggdG8gdGhlIEhETUkgaW5wdXQgb3IKK3NlbGVjdCBhbiBIRE1JIHRpbWluZyBpcyBiYXNlZCBvbiB0aGUgZm9ybWF0IHJlc29sdXRpb246IGZvciByZXNvbHV0aW9ucworbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDcyMHg1NzYgdGhlIGNvbG9yc3BhY2UgaXMgc2V0IHRvIFNNUFRFLTE3ME0sIGZvcgorb3RoZXJzIGl0IGlzIHNldCB0byBSRUMtNzA5IChDRUEtODYxIHRpbWluZ3MpIG9yIHNSR0IgKFZFU0EgRE1UIHRpbWluZ3MpLgorCitUaGUgcGl4ZWwgYXNwZWN0IHJhdGlvIHdpbGwgZGVwZW5kIG9uIHRoZSBIRE1JIHRpbWluZzogZm9yIDcyMHg0ODAgaXMgaXQKK3NldCBhcyBmb3IgdGhlIE5UU0MgVFYgc3RhbmRhcmQsIGZvciA3MjB4NTc2IGl0IGlzIHNldCBhcyBmb3IgdGhlIFBBTCBUVgorc3RhbmRhcmQsIGFuZCBmb3IgYWxsIG90aGVycyBhIDE6MSBwaXhlbCBhc3BlY3QgcmF0aW8gaXMgcmV0dXJuZWQuCisKK1RoZSB2aWRlbyBhc3BlY3QgcmF0aW8gY2FuIGJlIHNlbGVjdGVkIHRocm91Z2ggdGhlICdEViBUaW1pbmdzIEFzcGVjdCBSYXRpbycKK1ZpdmlkIGNvbnRyb2wuIENob2ljZXMgYXJlICdTb3VyY2UgV2lkdGggeCBIZWlnaHQnIChqdXN0IHVzZSB0aGUKK3NhbWUgcmF0aW8gYXMgdGhlIGNob3NlbiBmb3JtYXQpLCAnNHgzJyBvciAnMTZ4OScsIGVpdGhlciBvZiB3aGljaCBjYW4KK3Jlc3VsdCBpbiBwaWxsYXJib3hlZCBvciBsZXR0ZXJib3hlZCB2aWRlby4KKworRm9yIEhETUkgaW5wdXRzIGl0IGlzIHBvc3NpYmxlIHRvIHNldCB0aGUgRURJRC4gQnkgZGVmYXVsdCBhIHNpbXBsZSBFRElECitpcyBwcm92aWRlZC4gWW91IGNhbiBvbmx5IHNldCB0aGUgRURJRCBmb3IgSERNSSBpbnB1dHMuIEludGVybmFsbHksIGhvd2V2ZXIsCit0aGUgRURJRCBpcyBzaGFyZWQgYmV0d2VlbiBhbGwgSERNSSBpbnB1dHMuCisKK05vIGludGVycHJldGF0aW9uIGlzIGRvbmUgb2YgdGhlIEVESUQgZGF0YS4KKworCitTZWN0aW9uIDM6IFZpZGVvIE91dHB1dAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHZpZGVvIG91dHB1dCBkZXZpY2UgY2FuIGJlIGNvbmZpZ3VyZWQgYnkgdXNpbmcgdGhlIG1vZHVsZSBvcHRpb25zCitudW1fb3V0cHV0cywgb3V0cHV0X3R5cGVzIGFuZCBjY3Nfb3V0X21vZGUgKHNlZSBzZWN0aW9uIDEgZm9yIG1vcmUgZGV0YWlsZWQKK2luZm9ybWF0aW9uKSwgYnV0IGJ5IGRlZmF1bHQgdHdvIG91dHB1dHMgYXJlIGNvbmZpZ3VyZWQ6IGFuIFMtVmlkZW8gYW5kIGFuCitIRE1JIGlucHV0LCBvbmUgb3V0cHV0IGZvciBlYWNoIG91dHB1dCB0eXBlLiBUaG9zZSBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsCitiZWxvdy4KKworTGlrZSB3aXRoIHZpZGVvIGNhcHR1cmUgdGhlIGZyYW1lcmF0ZSBpcyBhbHNvIGV4YWN0IGluIHRoZSBsb25nIHRlcm0uCisKKworU2VjdGlvbiAzLjE6IFMtVmlkZW8gT3V0cHV0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBvdXRwdXQgc3VwcG9ydHMgYXVkaW8gb3V0cHV0cyBhcyB3ZWxsOiAiTGluZS1PdXQgMSIgYW5kICJMaW5lLU91dCAyIi4KK1RoZSBTLVZpZGVvIG91dHB1dCBzdXBwb3J0cyBhbGwgVFYgc3RhbmRhcmRzLgorCitUaGlzIG91dHB1dCBzdXBwb3J0cyBhbGwgY29tYmluYXRpb25zIG9mIHRoZSBmaWVsZCBzZXR0aW5nLgorCitUaGUgaW5pdGlhbGx5IHNlbGVjdGVkIGNvbG9yc3BhY2Ugd2hlbiB5b3Ugc3dpdGNoIHRvIHRoZSBUViBvciBTLVZpZGVvIGlucHV0Cit3aWxsIGJlIFNNUFRFLTE3ME0uCisKKworU2VjdGlvbiAzLjI6IEhETUkgT3V0cHV0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIEhETUkgb3V0cHV0IHN1cHBvcnRzIGFsbCBDRUEtODYxIGFuZCBETVQgdGltaW5ncywgYm90aCBwcm9ncmVzc2l2ZSBhbmQKK2ludGVybGFjZWQsIGZvciBwaXhlbGNsb2NrIGZyZXF1ZW5jaWVzIGJldHdlZW4gMjUgYW5kIDYwMCBNSHouIFRoZSBmaWVsZAorbW9kZSBmb3IgaW50ZXJsYWNlZCBmb3JtYXRzIGlzIGFsd2F5cyBWNEwyX0ZJRUxEX0FMVEVSTkFURS4KKworVGhlIGluaXRpYWxseSBzZWxlY3RlZCBjb2xvcnNwYWNlIHdoZW4geW91IHN3aXRjaCB0byB0aGUgSERNSSBvdXRwdXQgb3IKK3NlbGVjdCBhbiBIRE1JIHRpbWluZyBpcyBiYXNlZCBvbiB0aGUgZm9ybWF0IHJlc29sdXRpb246IGZvciByZXNvbHV0aW9ucworbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDcyMHg1NzYgdGhlIGNvbG9yc3BhY2UgaXMgc2V0IHRvIFNNUFRFLTE3ME0sIGZvcgorb3RoZXJzIGl0IGlzIHNldCB0byBSRUMtNzA5IChDRUEtODYxIHRpbWluZ3MpIG9yIHNSR0IgKFZFU0EgRE1UIHRpbWluZ3MpLgorCitUaGUgcGl4ZWwgYXNwZWN0IHJhdGlvIHdpbGwgZGVwZW5kIG9uIHRoZSBIRE1JIHRpbWluZzogZm9yIDcyMHg0ODAgaXMgaXQKK3NldCBhcyBmb3IgdGhlIE5UU0MgVFYgc3RhbmRhcmQsIGZvciA3MjB4NTc2IGl0IGlzIHNldCBhcyBmb3IgdGhlIFBBTCBUVgorc3RhbmRhcmQsIGFuZCBmb3IgYWxsIG90aGVycyBhIDE6MSBwaXhlbCBhc3BlY3QgcmF0aW8gaXMgcmV0dXJuZWQuCisKK0FuIEhETUkgb3V0cHV0IGhhcyBhIHZhbGlkIEVESUQgd2hpY2ggY2FuIGJlIG9idGFpbmVkIHRocm91Z2ggVklESU9DX0dfRURJRC4KKworCitTZWN0aW9uIDQ6IFZCSSBDYXB0dXJlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXJlIGFyZSB0aHJlZSB0eXBlcyBvZiBWQkkgY2FwdHVyZSBkZXZpY2VzOiB0aG9zZSB0aGF0IG9ubHkgc3VwcG9ydCByYXcKKyh1bmRlY29kZWQpIFZCSSwgdGhvc2UgdGhhdCBvbmx5IHN1cHBvcnQgc2xpY2VkIChkZWNvZGVkKSBWQkkgYW5kIHRob3NlIHRoYXQKK3N1cHBvcnQgYm90aC4gVGhpcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBub2RlX3R5cGVzIG1vZHVsZSBvcHRpb24uIEluIGFsbAorY2FzZXMgdGhlIGRyaXZlciB3aWxsIGdlbmVyYXRlIHZhbGlkIFZCSSBkYXRhOiBmb3IgNjAgSHogc3RhbmRhcmRzIGl0IHdpbGwKK2dlbmVyYXRlIENsb3NlZCBDYXB0aW9uIGFuZCBYRFMgZGF0YS4gVGhlIGNsb3NlZCBjYXB0aW9uIHN0cmVhbSB3aWxsCithbHRlcm5hdGUgYmV0d2VlbiAiSGVsbG8gd29ybGQhIiBhbmQgIkNsb3NlZCBjYXB0aW9ucyB0ZXN0IiBldmVyeSBzZWNvbmQuCitUaGUgWERTIHN0cmVhbSB3aWxsIGdpdmUgdGhlIGN1cnJlbnQgdGltZSBvbmNlIGEgbWludXRlLiBGb3IgNTAgSHogc3RhbmRhcmRzCitpdCB3aWxsIGdlbmVyYXRlIHRoZSBXaWRlIFNjcmVlbiBTaWduYWwgd2hpY2ggaXMgYmFzZWQgb24gdGhlIGFjdHVhbCBWaWRlbworQXNwZWN0IFJhdGlvIGNvbnRyb2wgc2V0dGluZyBhbmQgdGVsZXRleHQgcGFnZXMgMTAwLTE1OSwgb25lIHBhZ2UgcGVyIGZyYW1lLgorCitUaGUgVkJJIGRldmljZSB3aWxsIG9ubHkgd29yayBmb3IgdGhlIFMtVmlkZW8gYW5kIFRWIGlucHV0cywgaXQgd2lsbCBnaXZlCitiYWNrIGFuIGVycm9yIGlmIHRoZSBjdXJyZW50IGlucHV0IGlzIGEgd2ViY2FtIG9yIEhETUkuCisKKworU2VjdGlvbiA1OiBWQkkgT3V0cHV0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIFZCSSBvdXRwdXQgZGV2aWNlczogdGhvc2UgdGhhdCBvbmx5IHN1cHBvcnQgcmF3CisodW5kZWNvZGVkKSBWQkksIHRob3NlIHRoYXQgb25seSBzdXBwb3J0IHNsaWNlZCAoZGVjb2RlZCkgVkJJIGFuZCB0aG9zZSB0aGF0CitzdXBwb3J0IGJvdGguIFRoaXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgbm9kZV90eXBlcyBtb2R1bGUgb3B0aW9uLgorCitUaGUgc2xpY2VkIFZCSSBvdXRwdXQgc3VwcG9ydHMgdGhlIFdpZGUgU2NyZWVuIFNpZ25hbCBhbmQgdGhlIHRlbGV0ZXh0IHNpZ25hbAorZm9yIDUwIEh6IHN0YW5kYXJkcyBhbmQgQ2xvc2VkIENhcHRpb25pbmcgKyBYRFMgZm9yIDYwIEh6IHN0YW5kYXJkcy4KKworVGhlIFZCSSBkZXZpY2Ugd2lsbCBvbmx5IHdvcmsgZm9yIHRoZSBTLVZpZGVvIG91dHB1dCwgaXQgd2lsbCBnaXZlCitiYWNrIGFuIGVycm9yIGlmIHRoZSBjdXJyZW50IG91dHB1dCBpcyBIRE1JLgorCisKK1NlY3Rpb24gNjogUmFkaW8gUmVjZWl2ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHJhZGlvIHJlY2VpdmVyIGVtdWxhdGVzIGFuIEZNL0FNL1NXIHJlY2VpdmVyLiBUaGUgRk0gYmFuZCBhbHNvIHN1cHBvcnRzIFJEUy4KK1RoZSBmcmVxdWVuY3kgcmFuZ2VzIGFyZToKKworCUZNOiA2NCBNSHogLSAxMDggTUh6CisJQU06IDUyMCBrSHogLSAxNzEwIGtIegorCVNXOiAyMzAwIGtIeiAtIDI2LjEgTUh6CisKK1ZhbGlkIGNoYW5uZWxzIGFyZSBlbXVsYXRlZCBldmVyeSAxIE1IeiBmb3IgRk0gYW5kIGV2ZXJ5IDEwMCBrSHogZm9yIEFNIGFuZCBTVy4KK1RoZSBzaWduYWwgc3RyZW5ndGggZGVjcmVhc2VzIHRoZSBmdXJ0aGVyIHRoZSBmcmVxdWVuY3kgaXMgZnJvbSB0aGUgdmFsaWQKK2ZyZXF1ZW5jeSB1bnRpbCBpdCBiZWNvbWVzIDAlIGF0ICsvLSA1MCBrSHogKEZNKSBvciA1IGtIeiAoQU0vU1cpIGZyb20gdGhlCitpZGVhbCBmcmVxdWVuY3kuIFRoZSBpbml0aWFsIGZyZXF1ZW5jeSB3aGVuIHRoZSBkcml2ZXIgaXMgbG9hZGVkIGlzIHNldCB0bworOTUgTUh6LgorCitUaGUgRk0gcmVjZWl2ZXIgc3VwcG9ydHMgUkRTIGFzIHdlbGwsIGJvdGggdXNpbmcgJ0Jsb2NrIEkvTycgYW5kICdDb250cm9scycKK21vZGVzLiBJbiB0aGUgJ0NvbnRyb2xzJyBtb2RlIHRoZSBSRFMgaW5mb3JtYXRpb24gaXMgc3RvcmVkIGluIHJlYWQtb25seQorY29udHJvbHMuIFRoZXNlIGNvbnRyb2xzIGFyZSB1cGRhdGVkIGV2ZXJ5IHRpbWUgdGhlIGZyZXF1ZW5jeSBpcyBjaGFuZ2VkLAorb3Igd2hlbiB0aGUgdHVuZXIgc3RhdHVzIGlzIHJlcXVlc3RlZC4gVGhlIEJsb2NrIEkvTyBtZXRob2QgdXNlcyB0aGUgcmVhZCgpCitpbnRlcmZhY2UgdG8gcGFzcyB0aGUgUkRTIGJsb2NrcyBvbiB0byB0aGUgYXBwbGljYXRpb24gZm9yIGRlY29kaW5nLgorCitUaGUgUkRTIHNpZ25hbCBpcyAnZGV0ZWN0ZWQnIGZvciArLy0gMTIuNSBrSHogYXJvdW5kIHRoZSBjaGFubmVsIGZyZXF1ZW5jeSwKK2FuZCB0aGUgZnVydGhlciB0aGUgZnJlcXVlbmN5IGlzIGF3YXkgZnJvbSB0aGUgdmFsaWQgZnJlcXVlbmN5IHRoZSBtb3JlIFJEUworZXJyb3JzIGFyZSByYW5kb21seSBpbnRyb2R1Y2VkIGludG8gdGhlIGJsb2NrIEkvTyBzdHJlYW0sIHVwIHRvIDUwJSBvZiBhbGwKK2Jsb2NrcyBpZiB5b3UgYXJlICsvLSAxMi41IGtIeiBmcm9tIHRoZSBjaGFubmVsIGZyZXF1ZW5jeS4gQWxsIGZvdXIgZXJyb3JzCitjYW4gb2NjdXIgaW4gZXF1YWwgcHJvcG9ydGlvbnM6IGJsb2NrcyBtYXJrZWQgJ0NPUlJFQ1RFRCcsIGJsb2NrcyBtYXJrZWQKKydFUlJPUicsIGJsb2NrcyBtYXJrZWQgJ0lOVkFMSUQnIGFuZCBkcm9wcGVkIGJsb2Nrcy4KKworVGhlIGdlbmVyYXRlZCBSRFMgc3RyZWFtIGNvbnRhaW5zIGFsbCB0aGUgc3RhbmRhcmQgZmllbGRzIGNvbnRhaW5lZCBpbiBhCiswQiBncm91cCwgYW5kIGFsc28gcmFkaW8gdGV4dCBhbmQgdGhlIGN1cnJlbnQgdGltZS4KKworVGhlIHJlY2VpdmVyIHN1cHBvcnRzIEhXIGZyZXF1ZW5jeSBzZWVrLCBlaXRoZXIgaW4gQm91bmRlZCBtb2RlLCBXcmFwIEFyb3VuZAorbW9kZSBvciBib3RoLCB3aGljaCBpcyBjb25maWd1cmFibGUgd2l0aCB0aGUgIlJhZGlvIEhXIFNlZWsgTW9kZSIgY29udHJvbC4KKworCitTZWN0aW9uIDc6IFJhZGlvIFRyYW5zbWl0dGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSByYWRpbyB0cmFuc21pdHRlciBlbXVsYXRlcyBhbiBGTS9BTS9TVyB0cmFuc21pdHRlci4gVGhlIEZNIGJhbmQgYWxzbyBzdXBwb3J0cyBSRFMuCitUaGUgZnJlcXVlbmN5IHJhbmdlcyBhcmU6CisKKwlGTTogNjQgTUh6IC0gMTA4IE1IegorCUFNOiA1MjAga0h6IC0gMTcxMCBrSHoKKwlTVzogMjMwMCBrSHogLSAyNi4xIE1IegorCitUaGUgaW5pdGlhbCBmcmVxdWVuY3kgd2hlbiB0aGUgZHJpdmVyIGlzIGxvYWRlZCBpcyA5NS41IE1Iei4KKworVGhlIEZNIHRyYW5zbWl0dGVyIHN1cHBvcnRzIFJEUyBhcyB3ZWxsLCBib3RoIHVzaW5nICdCbG9jayBJL08nIGFuZCAnQ29udHJvbHMnCittb2Rlcy4gSW4gdGhlICdDb250cm9scycgbW9kZSB0aGUgdHJhbnNtaXR0ZWQgUkRTIGluZm9ybWF0aW9uIGlzIGNvbmZpZ3VyZWQKK3VzaW5nIGNvbnRyb2xzLCBhbmQgaW4gJ0Jsb2NrIEkvTycgbW9kZSB0aGUgYmxvY2tzIGFyZSBwYXNzZWQgdG8gdGhlIGRyaXZlcgordXNpbmcgd3JpdGUoKS4KKworCitTZWN0aW9uIDg6IFNvZnR3YXJlIERlZmluZWQgUmFkaW8gUmVjZWl2ZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgU0RSIHJlY2VpdmVyIGhhcyB0aHJlZSBmcmVxdWVuY3kgYmFuZHMgZm9yIHRoZSBBREMgdHVuZXI6CisKKwktIDMwMCBrSHoKKwktIDkwMCBrSHogLSAyODAwIGtIegorCS0gMzIwMCBrSHoKKworVGhlIFJGIHR1bmVyIHN1cHBvcnRzIDUwIE1IeiAtIDIwMDAgTUh6LgorCitUaGUgZ2VuZXJhdGVkIGRhdGEgY29udGFpbnMgdGhlIEluLXBoYXNlIGFuZCBRdWFkcmF0dXJlIGNvbXBvbmVudHMgb2YgYQorMSBrSHogdG9uZSB0aGF0IGhhcyBhbiBhbXBsaXR1ZGUgb2Ygc3FydCgyKS4KKworCitTZWN0aW9uIDk6IENvbnRyb2xzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RpZmZlcmVudCBkZXZpY2VzIHN1cHBvcnQgZGlmZmVyZW50IGNvbnRyb2xzLiBUaGUgc2VjdGlvbnMgYmVsb3cgd2lsbCBkZXNjcmliZQorZWFjaCBjb250cm9sIGFuZCB3aGljaCBkZXZpY2VzIHN1cHBvcnQgdGhlbS4KKworCitTZWN0aW9uIDkuMTogVXNlciBDb250cm9scyAtIFRlc3QgQ29udHJvbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgQnV0dG9uLCBCb29sZWFuLCBJbnRlZ2VyIDMyIEJpdHMsIEludGVnZXIgNjQgQml0cywgTWVudSwgU3RyaW5nLCBCaXRtYXNrIGFuZAorSW50ZWdlciBNZW51IGFyZSBjb250cm9scyB0aGF0IHJlcHJlc2VudCBhbGwgcG9zc2libGUgY29udHJvbCB0eXBlcy4gVGhlIE1lbnUKK2NvbnRyb2wgYW5kIHRoZSBJbnRlZ2VyIE1lbnUgY29udHJvbCBib3RoIGhhdmUgJ2hvbGVzJyBpbiB0aGVpciBtZW51IGxpc3QsCittZWFuaW5nIHRoYXQgb25lIG9yIG1vcmUgbWVudSBpdGVtcyByZXR1cm4gRUlOVkFMIHdoZW4gVklESU9DX1FVRVJZTUVOVSBpcyBjYWxsZWQuCitCb3RoIG1lbnUgY29udHJvbHMgYWxzbyBoYXZlIGEgbm9uLXplcm8gbWluaW11bSBjb250cm9sIHZhbHVlLiAgVGhlc2UgZmVhdHVyZXMKK2FsbG93IHlvdSB0byBjaGVjayBpZiB5b3VyIGFwcGxpY2F0aW9uIGNhbiBoYW5kbGUgc3VjaCB0aGluZ3MgY29ycmVjdGx5LgorVGhlc2UgY29udHJvbHMgYXJlIHN1cHBvcnRlZCBmb3IgZXZlcnkgZGV2aWNlIHR5cGUuCisKKworU2VjdGlvbiA5LjI6IFVzZXIgQ29udHJvbHMgLSBWaWRlbyBDYXB0dXJlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZvbGxvd2luZyBjb250cm9scyBhcmUgc3BlY2lmaWMgdG8gdmlkZW8gY2FwdHVyZS4KKworVGhlIEJyaWdodG5lc3MsIENvbnRyYXN0LCBTYXR1cmF0aW9uIGFuZCBIdWUgY29udHJvbHMgYWN0dWFsbHkgd29yayBhbmQgYXJlCitzdGFuZGFyZC4gVGhlcmUgaXMgb25lIHNwZWNpYWwgZmVhdHVyZSB3aXRoIHRoZSBCcmlnaHRuZXNzIGNvbnRyb2w6IGVhY2gKK3ZpZGVvIGlucHV0IGhhcyBpdHMgb3duIGJyaWdodG5lc3MgdmFsdWUsIHNvIGNoYW5naW5nIGlucHV0IHdpbGwgcmVzdG9yZQordGhlIGJyaWdodG5lc3MgZm9yIHRoYXQgaW5wdXQuIEluIGFkZGl0aW9uLCBlYWNoIHZpZGVvIGlucHV0IHVzZXMgYSBkaWZmZXJlbnQKK2JyaWdodG5lc3MgcmFuZ2UgKG1pbmltdW0gYW5kIG1heGltdW0gY29udHJvbCB2YWx1ZXMpLiBTd2l0Y2hpbmcgaW5wdXRzIHdpbGwKK2NhdXNlIGEgY29udHJvbCBldmVudCB0byBiZSBzZW50IHdpdGggdGhlIFY0TDJfRVZFTlRfQ1RSTF9DSF9SQU5HRSBmbGFnIHNldC4KK1RoaXMgYWxsb3dzIHlvdSB0byB0ZXN0IGNvbnRyb2xzIHRoYXQgY2FuIGNoYW5nZSB0aGVpciByYW5nZS4KKworVGhlICdHYWluLCBBdXRvbWF0aWMnIGFuZCBHYWluIGNvbnRyb2xzIGNhbiBiZSB1c2VkIHRvIHRlc3Qgdm9sYXRpbGUgY29udHJvbHM6CitpZiAnR2FpbiwgQXV0b21hdGljJyBpcyBzZXQsIHRoZW4gdGhlIEdhaW4gY29udHJvbCBpcyB2b2xhdGlsZSBhbmQgY2hhbmdlcworY29uc3RhbnRseS4gSWYgJ0dhaW4sIEF1dG9tYXRpYycgaXMgY2xlYXJlZCwgdGhlbiB0aGUgR2FpbiBjb250cm9sIGlzIGEgbm9ybWFsCitjb250cm9sLgorCitUaGUgJ0hvcml6b250YWwgRmxpcCcgYW5kICdWZXJ0aWNhbCBGbGlwJyBjb250cm9scyBjYW4gYmUgdXNlZCB0byBmbGlwIHRoZQoraW1hZ2UuIFRoZXNlIGNvbWJpbmUgd2l0aCB0aGUgJ1NlbnNvciBGbGlwcGVkIEhvcml6b250YWxseS9WZXJ0aWNhbGx5JyBWaXZpZAorY29udHJvbHMuCisKK1RoZSAnQWxwaGEgQ29tcG9uZW50JyBjb250cm9sIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgYWxwaGEgY29tcG9uZW50IGZvcgorZm9ybWF0cyBjb250YWluaW5nIGFuIGFscGhhIGNoYW5uZWwuCisKKworU2VjdGlvbiA5LjM6IFVzZXIgQ29udHJvbHMgLSBBdWRpbworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIGNvbnRyb2xzIGFyZSBzcGVjaWZpYyB0byB2aWRlbyBjYXB0dXJlIGFuZCBvdXRwdXQgYW5kIHJhZGlvCityZWNlaXZlcnMgYW5kIHRyYW5zbWl0dGVycy4KKworVGhlICdWb2x1bWUnIGFuZCAnTXV0ZScgYXVkaW8gY29udHJvbHMgYXJlIHR5cGljYWwgZm9yIHN1Y2ggZGV2aWNlcyB0bworY29udHJvbCB0aGUgdm9sdW1lIGFuZCBtdXRlIHRoZSBhdWRpby4gVGhleSBkb24ndCBhY3R1YWxseSBkbyBhbnl0aGluZyBpbgordGhlIHZpdmlkIGRyaXZlci4KKworCitTZWN0aW9uIDkuNDogVml2aWQgQ29udHJvbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGVzZSB2aXZpZCBjdXN0b20gY29udHJvbHMgY29udHJvbCB0aGUgaW1hZ2UgZ2VuZXJhdGlvbiwgZXJyb3IgaW5qZWN0aW9uLCBldGMuCisKKworU2VjdGlvbiA5LjQuMTogVGVzdCBQYXR0ZXJuIENvbnRyb2xzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIFRlc3QgUGF0dGVybiBDb250cm9scyBhcmUgYWxsIHNwZWNpZmljIHRvIHZpZGVvIGNhcHR1cmUuCisKK1Rlc3QgUGF0dGVybjogc2VsZWN0cyB3aGljaCB0ZXN0IHBhdHRlcm4gdG8gdXNlLiBVc2UgdGhlIENTQyBDb2xvcmJhciBmb3IKKwl0ZXN0aW5nIGNvbG9yc3BhY2UgY29udmVyc2lvbnM6IHRoZSBjb2xvcnMgdXNlZCBpbiB0aGF0IHRlc3QgcGF0dGVybgorCW1hcCB0byB2YWxpZCBjb2xvcnMgaW4gYWxsIGNvbG9yc3BhY2VzLiBUaGUgY29sb3JzcGFjZSBjb252ZXJzaW9uCisJaXMgZGlzYWJsZWQgZm9yIHRoZSBvdGhlciB0ZXN0IHBhdHRlcm5zLgorCitPU0QgVGV4dCBNb2RlOiBzZWxlY3RzIHdoZXRoZXIgdGhlIHRleHQgc3VwZXJpbXBvc2VkIG9uIHRoZQorCXRlc3QgcGF0dGVybiBzaG91bGQgYmUgc2hvd24sIGFuZCBpZiBzbywgd2hldGhlciBvbmx5IGNvdW50ZXJzIHNob3VsZAorCWJlIGRpc3BsYXllZCBvciB0aGUgZnVsbCB0ZXh0LgorCitIb3Jpem9udGFsIE1vdmVtZW50OiBzZWxlY3RzIHdoZXRoZXIgdGhlIHRlc3QgcGF0dGVybiBzaG91bGQKKwltb3ZlIHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IGFuZCBhdCB3aGF0IHNwZWVkLgorCitWZXJ0aWNhbCBNb3ZlbWVudDogZG9lcyB0aGUgc2FtZSBmb3IgdGhlIHZlcnRpY2FsIGRpcmVjdGlvbi4KKworU2hvdyBCb3JkZXI6IHNob3cgYSB0d28tcGl4ZWwgd2lkZSBib3JkZXIgYXQgdGhlIGVkZ2Ugb2YgdGhlIGFjdHVhbCBpbWFnZSwKKwlleGNsdWRpbmcgbGV0dGVyIG9yIHBpbGxhcmJveGluZy4KKworU2hvdyBTcXVhcmU6IHNob3cgYSBzcXVhcmUgaW4gdGhlIG1pZGRsZSBvZiB0aGUgaW1hZ2UuIElmIHRoZSBpbWFnZSBpcworCWRpc3BsYXllZCB3aXRoIHRoZSBjb3JyZWN0IHBpeGVsIGFuZCBpbWFnZSBhc3BlY3QgcmF0aW8gY29ycmVjdGlvbnMsCisJdGhlbiB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgc3F1YXJlIG9uIHRoZSBtb25pdG9yIHNob3VsZCBiZQorCXRoZSBzYW1lLgorCitJbnNlcnQgU0FWIENvZGUgaW4gSW1hZ2U6IGFkZHMgYSBTQVYgKFN0YXJ0IG9mIEFjdGl2ZSBWaWRlbykgY29kZSB0byB0aGUgaW1hZ2UuCisJVGhpcyBjYW4gYmUgdXNlZCB0byBjaGVjayBpZiBzdWNoIGNvZGVzIGluIHRoZSBpbWFnZSBhcmUgaW5hZHZlcnRlbnRseQorCWludGVycHJldGVkIGluc3RlYWQgb2YgYmVpbmcgaWdub3JlZC4KKworSW5zZXJ0IEVBViBDb2RlIGluIEltYWdlOiBkb2VzIHRoZSBzYW1lIGZvciB0aGUgRUFWIChFbmQgb2YgQWN0aXZlIFZpZGVvKSBjb2RlLgorCisKK1NlY3Rpb24gOS40LjI6IENhcHR1cmUgRmVhdHVyZSBTZWxlY3Rpb24gQ29udHJvbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlc2UgY29udHJvbHMgYXJlIGFsbCBzcGVjaWZpYyB0byB2aWRlbyBjYXB0dXJlLgorCitTZW5zb3IgRmxpcHBlZCBIb3Jpem9udGFsbHk6IHRoZSBpbWFnZSBpcyBmbGlwcGVkIGhvcml6b250YWxseSBhbmQgdGhlCisJVjRMMl9JTl9TVF9IRkxJUCBpbnB1dCBzdGF0dXMgZmxhZyBpcyBzZXQuIFRoaXMgZW11bGF0ZXMgdGhlIGNhc2Ugd2hlcmUKKwlhIHNlbnNvciBpcyBmb3IgZXhhbXBsZSBtb3VudGVkIHVwc2lkZSBkb3duLgorCitTZW5zb3IgRmxpcHBlZCBWZXJ0aWNhbGx5OiB0aGUgaW1hZ2UgaXMgZmxpcHBlZCB2ZXJ0aWNhbGx5IGFuZCB0aGUKKwlWNEwyX0lOX1NUX1ZGTElQIGlucHV0IHN0YXR1cyBmbGFnIGlzIHNldC4gVGhpcyBlbXVsYXRlcyB0aGUgY2FzZSB3aGVyZQorICAgICAgICBhIHNlbnNvciBpcyBmb3IgZXhhbXBsZSBtb3VudGVkIHVwc2lkZSBkb3duLgorCitTdGFuZGFyZCBBc3BlY3QgUmF0aW86IHNlbGVjdHMgaWYgdGhlIGltYWdlIGFzcGVjdCByYXRpbyBhcyB1c2VkIGZvciB0aGUgVFYgb3IKKwlTLVZpZGVvIGlucHV0IHNob3VsZCBiZSA0eDMsIDE2eDkgb3IgYW5hbW9ycGhpYyB3aWRlc2NyZWVuLiBUaGlzIG1heQorCWludHJvZHVjZSBsZXR0ZXJib3hpbmcuCisKK0RWIFRpbWluZ3MgQXNwZWN0IFJhdGlvOiBzZWxlY3RzIGlmIHRoZSBpbWFnZSBhc3BlY3QgcmF0aW8gYXMgdXNlZCBmb3IgdGhlIEhETUkKKwlpbnB1dCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGhlIHNvdXJjZSB3aWR0aCBhbmQgaGVpZ2h0IHJhdGlvLCBvciBpZgorCWl0IHNob3VsZCBiZSA0eDMgb3IgMTZ4OS4gVGhpcyBtYXkgaW50cm9kdWNlIGxldHRlciBvciBwaWxsYXJib3hpbmcuCisKK1RpbWVzdGFtcCBTb3VyY2U6IHNlbGVjdHMgd2hlbiB0aGUgdGltZXN0YW1wIGZvciBlYWNoIGJ1ZmZlciBpcyB0YWtlbi4KKworQ29sb3JzcGFjZTogc2VsZWN0cyB3aGljaCBjb2xvcnNwYWNlIHNob3VsZCBiZSB1c2VkIHdoZW4gZ2VuZXJhdGluZyB0aGUgaW1hZ2UuCisJVGhpcyBvbmx5IGFwcGxpZXMgaWYgdGhlIENTQyBDb2xvcmJhciB0ZXN0IHBhdHRlcm4gaXMgc2VsZWN0ZWQsCisJb3RoZXJ3aXNlIHRoZSB0ZXN0IHBhdHRlcm4gd2lsbCBnbyB0aHJvdWdoIHVuY29udmVydGVkLgorCVRoaXMgYmVoYXZpb3IgaXMgYWxzbyB3aGF0IHlvdSB3YW50LCBzaW5jZSBhIDc1JSBDb2xvcmJhcgorCXNob3VsZCByZWFsbHkgaGF2ZSA3NSUgc2lnbmFsIGludGVuc2l0eSBhbmQgc2hvdWxkIG5vdCBiZSBhZmZlY3RlZAorCWJ5IGNvbG9yc3BhY2UgY29udmVyc2lvbnMuCisKKwlDaGFuZ2luZyB0aGUgY29sb3JzcGFjZSB3aWxsIHJlc3VsdCBpbiB0aGUgVjRMMl9FVkVOVF9TT1VSQ0VfQ0hBTkdFCisJdG8gYmUgc2VudCBzaW5jZSBpdCBlbXVsYXRlcyBhIGRldGVjdGVkIGNvbG9yc3BhY2UgY2hhbmdlLgorCitUcmFuc2ZlciBGdW5jdGlvbjogc2VsZWN0cyB3aGljaCBjb2xvcnNwYWNlIHRyYW5zZmVyIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIHdoZW4KKwlnZW5lcmF0aW5nIGFuIGltYWdlLiBUaGlzIG9ubHkgYXBwbGllcyBpZiB0aGUgQ1NDIENvbG9yYmFyIHRlc3QgcGF0dGVybiBpcworCXNlbGVjdGVkLCBvdGhlcndpc2UgdGhlIHRlc3QgcGF0dGVybiB3aWxsIGdvIHRocm91Z2ggdW5jb252ZXJ0ZWQuCisgICAgICAgIFRoaXMgYmVoYXZpb3IgaXMgYWxzbyB3aGF0IHlvdSB3YW50LCBzaW5jZSBhIDc1JSBDb2xvcmJhcgorICAgICAgICBzaG91bGQgcmVhbGx5IGhhdmUgNzUlIHNpZ25hbCBpbnRlbnNpdHkgYW5kIHNob3VsZCBub3QgYmUgYWZmZWN0ZWQKKyAgICAgICAgYnkgY29sb3JzcGFjZSBjb252ZXJzaW9ucy4KKworCUNoYW5naW5nIHRoZSB0cmFuc2ZlciBmdW5jdGlvbiB3aWxsIHJlc3VsdCBpbiB0aGUgVjRMMl9FVkVOVF9TT1VSQ0VfQ0hBTkdFCisJdG8gYmUgc2VudCBzaW5jZSBpdCBlbXVsYXRlcyBhIGRldGVjdGVkIGNvbG9yc3BhY2UgY2hhbmdlLgorCitZJ0NiQ3IgRW5jb2Rpbmc6IHNlbGVjdHMgd2hpY2ggWSdDYkNyIGVuY29kaW5nIHNob3VsZCBiZSB1c2VkIHdoZW4gZ2VuZXJhdGluZworCWEgWSdDYkNyIGltYWdlLglUaGlzIG9ubHkgYXBwbGllcyBpZiB0aGUgZm9ybWF0IGlzIHNldCB0byBhIFknQ2JDciBmb3JtYXQKKwlhcyBvcHBvc2VkIHRvIGFuIFJHQiBmb3JtYXQuCisKKwlDaGFuZ2luZyB0aGUgWSdDYkNyIGVuY29kaW5nIHdpbGwgcmVzdWx0IGluIHRoZSBWNEwyX0VWRU5UX1NPVVJDRV9DSEFOR0UKKwl0byBiZSBzZW50IHNpbmNlIGl0IGVtdWxhdGVzIGEgZGV0ZWN0ZWQgY29sb3JzcGFjZSBjaGFuZ2UuCisKK1F1YW50aXphdGlvbjogc2VsZWN0cyB3aGljaCBxdWFudGl6YXRpb24gc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBSR0Igb3IgWSdDYkNyCisJZW5jb2Rpbmcgd2hlbiBnZW5lcmF0aW5nIHRoZSB0ZXN0IHBhdHRlcm4uCisKKwlDaGFuZ2luZyB0aGUgcXVhbnRpemF0aW9uIHdpbGwgcmVzdWx0IGluIHRoZSBWNEwyX0VWRU5UX1NPVVJDRV9DSEFOR0UKKwl0byBiZSBzZW50IHNpbmNlIGl0IGVtdWxhdGVzIGEgZGV0ZWN0ZWQgY29sb3JzcGFjZSBjaGFuZ2UuCisKK0xpbWl0ZWQgUkdCIFJhbmdlICgxNi0yMzUpOiBzZWxlY3RzIGlmIHRoZSBSR0IgcmFuZ2Ugb2YgdGhlIEhETUkgc291cmNlIHNob3VsZAorCWJlIGxpbWl0ZWQgb3IgZnVsbCByYW5nZS4gVGhpcyBjb21iaW5lcyB3aXRoIHRoZSBEaWdpdGFsIFZpZGVvICdSeCBSR0IKKwlRdWFudGl6YXRpb24gUmFuZ2UnIGNvbnRyb2wgYW5kIGNhbiBiZSB1c2VkIHRvIHRlc3Qgd2hhdCBoYXBwZW5zIGlmCisJYSBzb3VyY2UgcHJvdmlkZXMgeW91IHdpdGggdGhlIHdyb25nIHF1YW50aXphdGlvbiByYW5nZSBpbmZvcm1hdGlvbi4KKwlTZWUgdGhlIGRlc2NyaXB0aW9uIG9mIHRoYXQgY29udHJvbCBmb3IgbW9yZSBkZXRhaWxzLgorCitBcHBseSBBbHBoYSBUbyBSZWQgT25seTogYXBwbHkgdGhlIGFscGhhIGNoYW5uZWwgYXMgc2V0IGJ5IHRoZSAnQWxwaGEgQ29tcG9uZW50JworCXVzZXIgY29udHJvbCB0byB0aGUgcmVkIGNvbG9yIG9mIHRoZSB0ZXN0IHBhdHRlcm4gb25seS4KKworRW5hYmxlIENhcHR1cmUgQ3JvcHBpbmc6IGVuYWJsZXMgY3JvcCBzdXBwb3J0LiBUaGlzIGNvbnRyb2wgaXMgb25seSBwcmVzZW50IGlmCisJdGhlIGNjc19jYXBfbW9kZSBtb2R1bGUgb3B0aW9uIGlzIHNldCB0byB0aGUgZGVmYXVsdCB2YWx1ZSBvZiAtMSBhbmQgaWYKKwl0aGUgbm9fZXJyb3JfaW5qIG1vZHVsZSBvcHRpb24gaXMgc2V0IHRvIDAgKHRoZSBkZWZhdWx0KS4KKworRW5hYmxlIENhcHR1cmUgQ29tcG9zaW5nOiBlbmFibGVzIGNvbXBvc2luZyBzdXBwb3J0LiBUaGlzIGNvbnRyb2wgaXMgb25seQorCXByZXNlbnQgaWYgdGhlIGNjc19jYXBfbW9kZSBtb2R1bGUgb3B0aW9uIGlzIHNldCB0byB0aGUgZGVmYXVsdCB2YWx1ZSBvZgorCS0xIGFuZCBpZiB0aGUgbm9fZXJyb3JfaW5qIG1vZHVsZSBvcHRpb24gaXMgc2V0IHRvIDAgKHRoZSBkZWZhdWx0KS4KKworRW5hYmxlIENhcHR1cmUgU2NhbGVyOiBlbmFibGVzIHN1cHBvcnQgZm9yIGEgc2NhbGVyIChtYXhpbXVtIDQgdGltZXMgdXBzY2FsaW5nCisJYW5kIGRvd25zY2FsaW5nKS4gVGhpcyBjb250cm9sIGlzIG9ubHkgcHJlc2VudCBpZiB0aGUgY2NzX2NhcF9tb2RlCisJbW9kdWxlIG9wdGlvbiBpcyBzZXQgdG8gdGhlIGRlZmF1bHQgdmFsdWUgb2YgLTEgYW5kIGlmIHRoZSBub19lcnJvcl9pbmoKKwltb2R1bGUgb3B0aW9uIGlzIHNldCB0byAwICh0aGUgZGVmYXVsdCkuCisKK01heGltdW0gRURJRCBCbG9ja3M6IGRldGVybWluZXMgaG93IG1hbnkgRURJRCBibG9ja3MgdGhlIGRyaXZlciBzdXBwb3J0cy4KKwlOb3RlIHRoYXQgdGhlIHZpdmlkIGRyaXZlciBkb2VzIG5vdCBhY3R1YWxseSBpbnRlcnByZXQgbmV3IEVESUQKKwlkYXRhLCBpdCBqdXN0IHN0b3JlcyBpdC4gSXQgYWxsb3dzIGZvciB1cCB0byAyNTYgRURJRCBibG9ja3MKKwl3aGljaCBpcyB0aGUgbWF4aW11bSBzdXBwb3J0ZWQgYnkgdGhlIHN0YW5kYXJkLgorCitGaWxsIFBlcmNlbnRhZ2Ugb2YgRnJhbWU6IGNhbiBiZSB1c2VkIHRvIGRyYXcgb25seSB0aGUgdG9wIFggcGVyY2VudAorCW9mIHRoZSBpbWFnZS4gU2luY2UgZWFjaCBmcmFtZSBoYXMgdG8gYmUgZHJhd24gYnkgdGhlIGRyaXZlciwgdGhpcworCWRlbWFuZHMgYSBsb3Qgb2YgdGhlIENQVS4gRm9yIGxhcmdlIHJlc29sdXRpb25zIHRoaXMgYmVjb21lcworCXByb2JsZW1hdGljLiBCeSBkcmF3aW5nIG9ubHkgcGFydCBvZiB0aGUgaW1hZ2UgdGhpcyBDUFUgbG9hZCBjYW4KKwliZSByZWR1Y2VkLgorCisKK1NlY3Rpb24gOS40LjM6IE91dHB1dCBGZWF0dXJlIFNlbGVjdGlvbiBDb250cm9scworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXNlIGNvbnRyb2xzIGFyZSBhbGwgc3BlY2lmaWMgdG8gdmlkZW8gb3V0cHV0LgorCitFbmFibGUgT3V0cHV0IENyb3BwaW5nOiBlbmFibGVzIGNyb3Agc3VwcG9ydC4gVGhpcyBjb250cm9sIGlzIG9ubHkgcHJlc2VudCBpZgorCXRoZSBjY3Nfb3V0X21vZGUgbW9kdWxlIG9wdGlvbiBpcyBzZXQgdG8gdGhlIGRlZmF1bHQgdmFsdWUgb2YgLTEgYW5kIGlmCisJdGhlIG5vX2Vycm9yX2luaiBtb2R1bGUgb3B0aW9uIGlzIHNldCB0byAwICh0aGUgZGVmYXVsdCkuCisKK0VuYWJsZSBPdXRwdXQgQ29tcG9zaW5nOiBlbmFibGVzIGNvbXBvc2luZyBzdXBwb3J0LiBUaGlzIGNvbnRyb2wgaXMgb25seQorCXByZXNlbnQgaWYgdGhlIGNjc19vdXRfbW9kZSBtb2R1bGUgb3B0aW9uIGlzIHNldCB0byB0aGUgZGVmYXVsdCB2YWx1ZSBvZgorCS0xIGFuZCBpZiB0aGUgbm9fZXJyb3JfaW5qIG1vZHVsZSBvcHRpb24gaXMgc2V0IHRvIDAgKHRoZSBkZWZhdWx0KS4KKworRW5hYmxlIE91dHB1dCBTY2FsZXI6IGVuYWJsZXMgc3VwcG9ydCBmb3IgYSBzY2FsZXIgKG1heGltdW0gNCB0aW1lcyB1cHNjYWxpbmcKKwlhbmQgZG93bnNjYWxpbmcpLiBUaGlzIGNvbnRyb2wgaXMgb25seSBwcmVzZW50IGlmIHRoZSBjY3Nfb3V0X21vZGUKKwltb2R1bGUgb3B0aW9uIGlzIHNldCB0byB0aGUgZGVmYXVsdCB2YWx1ZSBvZiAtMSBhbmQgaWYgdGhlIG5vX2Vycm9yX2luagorCW1vZHVsZSBvcHRpb24gaXMgc2V0IHRvIDAgKHRoZSBkZWZhdWx0KS4KKworCitTZWN0aW9uIDkuNC40OiBFcnJvciBJbmplY3Rpb24gQ29udHJvbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIHR3byBjb250cm9scyBhcmUgb25seSB2YWxpZCBmb3IgdmlkZW8gYW5kIHZiaSBjYXB0dXJlLgorCitTdGFuZGFyZCBTaWduYWwgTW9kZTogc2VsZWN0cyB0aGUgYmVoYXZpb3Igb2YgVklESU9DX1FVRVJZU1REOiB3aGF0IHNob3VsZAorCWl0IHJldHVybj8KKworCUNoYW5naW5nIHRoaXMgY29udHJvbCB3aWxsIHJlc3VsdCBpbiB0aGUgVjRMMl9FVkVOVF9TT1VSQ0VfQ0hBTkdFCisJdG8gYmUgc2VudCBzaW5jZSBpdCBlbXVsYXRlcyBhIGNoYW5nZWQgaW5wdXQgY29uZGl0aW9uIChlLmcuIGEgY2FibGUKKwl3YXMgcGx1Z2dlZCBpbiBvciBvdXQpLgorCitTdGFuZGFyZDogc2VsZWN0cyB0aGUgc3RhbmRhcmQgdGhhdCBWSURJT0NfUVVFUllTVEQgc2hvdWxkIHJldHVybiBpZiB0aGUKKwlwcmV2aW91cyBjb250cm9sIGlzIHNldCB0byAiU2VsZWN0ZWQgU3RhbmRhcmQiLgorCisJQ2hhbmdpbmcgdGhpcyBjb250cm9sIHdpbGwgcmVzdWx0IGluIHRoZSBWNEwyX0VWRU5UX1NPVVJDRV9DSEFOR0UKKwl0byBiZSBzZW50IHNpbmNlIGl0IGVtdWxhdGVzIGEgY2hhbmdlZCBpbnB1dCBzdGFuZGFyZC4KKworCitUaGUgZm9sbG93aW5nIHR3byBjb250cm9scyBhcmUgb25seSB2YWxpZCBmb3IgdmlkZW8gY2FwdHVyZS4KKworRFYgVGltaW5ncyBTaWduYWwgTW9kZTogc2VsZWN0cyB0aGUgYmVoYXZpb3Igb2YgVklESU9DX1FVRVJZX0RWX1RJTUlOR1M6IHdoYXQKKwlzaG91bGQgaXQgcmV0dXJuPworCisJQ2hhbmdpbmcgdGhpcyBjb250cm9sIHdpbGwgcmVzdWx0IGluIHRoZSBWNEwyX0VWRU5UX1NPVVJDRV9DSEFOR0UKKwl0byBiZSBzZW50IHNpbmNlIGl0IGVtdWxhdGVzIGEgY2hhbmdlZCBpbnB1dCBjb25kaXRpb24gKGUuZy4gYSBjYWJsZQorCXdhcyBwbHVnZ2VkIGluIG9yIG91dCkuCisKK0RWIFRpbWluZ3M6IHNlbGVjdHMgdGhlIHRpbWluZ3MgdGhlIFZJRElPQ19RVUVSWV9EVl9USU1JTkdTIHNob3VsZCByZXR1cm4KKwlpZiB0aGUgcHJldmlvdXMgY29udHJvbCBpcyBzZXQgdG8gIlNlbGVjdGVkIERWIFRpbWluZ3MiLgorCisJQ2hhbmdpbmcgdGhpcyBjb250cm9sIHdpbGwgcmVzdWx0IGluIHRoZSBWNEwyX0VWRU5UX1NPVVJDRV9DSEFOR0UKKwl0byBiZSBzZW50IHNpbmNlIGl0IGVtdWxhdGVzIGNoYW5nZWQgaW5wdXQgdGltaW5ncy4KKworCitUaGUgZm9sbG93aW5nIGNvbnRyb2xzIGFyZSBvbmx5IHByZXNlbnQgaWYgdGhlIG5vX2Vycm9yX2luaiBtb2R1bGUgb3B0aW9uCitpcyBzZXQgdG8gMCAodGhlIGRlZmF1bHQpLiBUaGVzZSBjb250cm9scyBhcmUgdmFsaWQgZm9yIHZpZGVvIGFuZCB2YmkKK2NhcHR1cmUgYW5kIG91dHB1dCBzdHJlYW1zIGFuZCBmb3IgdGhlIFNEUiBjYXB0dXJlIGRldmljZSBleGNlcHQgZm9yIHRoZQorRGlzY29ubmVjdCBjb250cm9sIHdoaWNoIGlzIHZhbGlkIGZvciBhbGwgZGV2aWNlcy4KKworV3JhcCBTZXF1ZW5jZSBOdW1iZXI6IHRlc3Qgd2hhdCBoYXBwZW5zIHdoZW4geW91IHdyYXAgdGhlIHNlcXVlbmNlIG51bWJlciBpbgorCXN0cnVjdCB2NGwyX2J1ZmZlciBhcm91bmQuCisKK1dyYXAgVGltZXN0YW1wOiB0ZXN0IHdoYXQgaGFwcGVucyB3aGVuIHlvdSB3cmFwIHRoZSB0aW1lc3RhbXAgaW4gc3RydWN0CisJdjRsMl9idWZmZXIgYXJvdW5kLgorCitQZXJjZW50YWdlIG9mIERyb3BwZWQgQnVmZmVyczogc2V0cyB0aGUgcGVyY2VudGFnZSBvZiBidWZmZXJzIHRoYXQKKwlhcmUgbmV2ZXIgcmV0dXJuZWQgYnkgdGhlIGRyaXZlciAoaS5lLiwgdGhleSBhcmUgZHJvcHBlZCkuCisKK0Rpc2Nvbm5lY3Q6IGVtdWxhdGVzIGEgVVNCIGRpc2Nvbm5lY3QuIFRoZSBkZXZpY2Ugd2lsbCBhY3QgYXMgaWYgaXQgaGFzCisJYmVlbiBkaXNjb25uZWN0ZWQuIE9ubHkgYWZ0ZXIgYWxsIG9wZW4gZmlsZWhhbmRsZXMgdG8gdGhlIGRldmljZQorCW5vZGUgaGF2ZSBiZWVuIGNsb3NlZCB3aWxsIHRoZSBkZXZpY2UgYmVjb21lICdjb25uZWN0ZWQnIGFnYWluLgorCitJbmplY3QgVjRMMl9CVUZfRkxBR19FUlJPUjogd2hlbiBwcmVzc2VkLCB0aGUgbmV4dCBmcmFtZSByZXR1cm5lZCBieQorCXRoZSBkcml2ZXIgd2lsbCBoYXZlIHRoZSBlcnJvciBmbGFnIHNldCAoaS5lLiB0aGUgZnJhbWUgaXMgbWFya2VkCisJY29ycnVwdCkuCisKK0luamVjdCBWSURJT0NfUkVRQlVGUyBFcnJvcjogd2hlbiBwcmVzc2VkLCB0aGUgbmV4dCBSRVFCVUZTIG9yIENSRUFURV9CVUZTCisJaW9jdGwgY2FsbCB3aWxsIGZhaWwgd2l0aCBhbiBlcnJvci4gVG8gYmUgcHJlY2lzZTogdGhlIHZpZGVvYnVmMgorCXF1ZXVlX3NldHVwKCkgb3Agd2lsbCByZXR1cm4gLUVJTlZBTC4KKworSW5qZWN0IFZJRElPQ19RQlVGIEVycm9yOiB3aGVuIHByZXNzZWQsIHRoZSBuZXh0IFZJRElPQ19RQlVGIG9yCisJVklESU9DX1BSRVBBUkVfQlVGRkVSIGlvY3RsIGNhbGwgd2lsbCBmYWlsIHdpdGggYW4gZXJyb3IuIFRvIGJlCisJcHJlY2lzZTogdGhlIHZpZGVvYnVmMiBidWZfcHJlcGFyZSgpIG9wIHdpbGwgcmV0dXJuIC1FSU5WQUwuCisKK0luamVjdCBWSURJT0NfU1RSRUFNT04gRXJyb3I6IHdoZW4gcHJlc3NlZCwgdGhlIG5leHQgVklESU9DX1NUUkVBTU9OIGlvY3RsCisJY2FsbCB3aWxsIGZhaWwgd2l0aCBhbiBlcnJvci4gVG8gYmUgcHJlY2lzZTogdGhlIHZpZGVvYnVmMgorCXN0YXJ0X3N0cmVhbWluZygpIG9wIHdpbGwgcmV0dXJuIC1FSU5WQUwuCisKK0luamVjdCBGYXRhbCBTdHJlYW1pbmcgRXJyb3I6IHdoZW4gcHJlc3NlZCwgdGhlIHN0cmVhbWluZyBjb3JlIHdpbGwgYmUKKwltYXJrZWQgYXMgaGF2aW5nIHN1ZmZlcmVkIGEgZmF0YWwgZXJyb3IsIHRoZSBvbmx5IHdheSB0byByZWNvdmVyCisJZnJvbSB0aGF0IGlzIHRvIHN0b3Agc3RyZWFtaW5nLiBUbyBiZSBwcmVjaXNlOiB0aGUgdmlkZW9idWYyCisJdmIyX3F1ZXVlX2Vycm9yKCkgZnVuY3Rpb24gaXMgY2FsbGVkLgorCisKK1NlY3Rpb24gOS40LjU6IFZCSSBSYXcgQ2FwdHVyZSBDb250cm9scworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ludGVybGFjZWQgVkJJIEZvcm1hdDogaWYgc2V0LCB0aGVuIHRoZSByYXcgVkJJIGRhdGEgd2lsbCBiZSBpbnRlcmxhY2VkIGluc3RlYWQKKwlvZiBwcm92aWRpbmcgaXQgZ3JvdXBlZCBieSBmaWVsZC4KKworCitTZWN0aW9uIDkuNTogRGlnaXRhbCBWaWRlbyBDb250cm9scworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUnggUkdCIFF1YW50aXphdGlvbiBSYW5nZTogc2V0cyB0aGUgUkdCIHF1YW50aXphdGlvbiBkZXRlY3Rpb24gb2YgdGhlIEhETUkKKwlpbnB1dC4gVGhpcyBjb21iaW5lcyB3aXRoIHRoZSBWaXZpZCAnTGltaXRlZCBSR0IgUmFuZ2UgKDE2LTIzNSknCisJY29udHJvbCBhbmQgY2FuIGJlIHVzZWQgdG8gdGVzdCB3aGF0IGhhcHBlbnMgaWYgYSBzb3VyY2UgcHJvdmlkZXMKKwl5b3Ugd2l0aCB0aGUgd3JvbmcgcXVhbnRpemF0aW9uIHJhbmdlIGluZm9ybWF0aW9uLiBUaGlzIGNhbiBiZSB0ZXN0ZWQKKwlieSBzZWxlY3RpbmcgYW4gSERNSSBpbnB1dCwgc2V0dGluZyB0aGlzIGNvbnRyb2wgdG8gRnVsbCBvciBMaW1pdGVkCisJcmFuZ2UgYW5kIHNlbGVjdGluZyB0aGUgb3Bwb3NpdGUgaW4gdGhlICdMaW1pdGVkIFJHQiBSYW5nZSAoMTYtMjM1KScKKwljb250cm9sLiBUaGUgZWZmZWN0IGlzIGVhc3kgdG8gc2VlIGlmIHRoZSAnR3JheSBSYW1wJyB0ZXN0IHBhdHRlcm4KKwlpcyBzZWxlY3RlZC4KKworVHggUkdCIFF1YW50aXphdGlvbiBSYW5nZTogc2V0cyB0aGUgUkdCIHF1YW50aXphdGlvbiBkZXRlY3Rpb24gb2YgdGhlIEhETUkKKwlvdXRwdXQuIEl0IGlzIGN1cnJlbnRseSBub3QgdXNlZCBmb3IgYW55dGhpbmcgaW4gdml2aWQsIGJ1dCBtb3N0IEhETUkKKwl0cmFuc21pdHRlcnMgd291bGQgdHlwaWNhbGx5IGhhdmUgdGhpcyBjb250cm9sLgorCitUcmFuc21pdCBNb2RlOiBzZXRzIHRoZSB0cmFuc21pdCBtb2RlIG9mIHRoZSBIRE1JIG91dHB1dCB0byBIRE1JIG9yIERWSS1ELiBUaGlzCisJYWZmZWN0cyB0aGUgcmVwb3J0ZWQgY29sb3JzcGFjZSBzaW5jZSBEVklfRCBvdXRwdXRzIHdpbGwgYWx3YXlzIHVzZQorCXNSR0IuCisKKworU2VjdGlvbiA5LjY6IEZNIFJhZGlvIFJlY2VpdmVyIENvbnRyb2xzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUkRTIFJlY2VwdGlvbjogc2V0IGlmIHRoZSBSRFMgcmVjZWl2ZXIgc2hvdWxkIGJlIGVuYWJsZWQuCisKK1JEUyBQcm9ncmFtIFR5cGU6CitSRFMgUFMgTmFtZToKK1JEUyBSYWRpbyBUZXh0OgorUkRTIFRyYWZmaWMgQW5ub3VuY2VtZW50OgorUkRTIFRyYWZmaWMgUHJvZ3JhbToKK1JEUyBNdXNpYzogdGhlc2UgYXJlIGFsbCByZWFkLW9ubHkgY29udHJvbHMuIElmIFJEUyBSeCBJL08gTW9kZSBpcyBzZXQgdG8KKwkiQmxvY2sgSS9PIiwgdGhlbiB0aGV5IGFyZSBpbmFjdGl2ZSBhcyB3ZWxsLiBJZiBSRFMgUnggSS9PIE1vZGUgaXMgc2V0CisJdG8gIkNvbnRyb2xzIiwgdGhlbiB0aGVzZSBjb250cm9scyByZXBvcnQgdGhlIHJlY2VpdmVkIFJEUyBkYXRhLiBOb3RlCisJdGhhdCB0aGUgdml2aWQgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBpcyBwcmV0dHkgYmFzaWM6IHRoZXkgYXJlIG9ubHkKKwl1cGRhdGVkIHdoZW4geW91IHNldCBhIG5ldyBmcmVxdWVuY3kgb3Igd2hlbiB5b3UgZ2V0IHRoZSB0dW5lciBzdGF0dXMKKwkoVklESU9DX0dfVFVORVIpLgorCitSYWRpbyBIVyBTZWVrIE1vZGU6IGNhbiBiZSBvbmUgb2YgIkJvdW5kZWQiLCAiV3JhcCBBcm91bmQiIG9yICJCb3RoIi4gVGhpcworCWRldGVybWluZXMgaWYgVklESU9DX1NfSFdfRlJFUV9TRUVLIHdpbGwgYmUgYm91bmRlZCBieSB0aGUgZnJlcXVlbmN5CisJcmFuZ2Ugb3Igd3JhcC1hcm91bmQgb3IgaWYgaXQgaXMgc2VsZWN0YWJsZSBieSB0aGUgdXNlci4KKworUmFkaW8gUHJvZ3JhbW1hYmxlIEhXIFNlZWs6IGlmIHNldCwgdGhlbiB0aGUgdXNlciBjYW4gcHJvdmlkZSB0aGUgbG93ZXIgYW5kCisJdXBwZXIgYm91bmQgb2YgdGhlIEhXIFNlZWsuIE90aGVyd2lzZSB0aGUgZnJlcXVlbmN5IHJhbmdlIGJvdW5kYXJpZXMKKwl3aWxsIGJlIHVzZWQuCisKK0dlbmVyYXRlIFJCRFMgSW5zdGVhZCBvZiBSRFM6IGlmIHNldCwgdGhlbiBnZW5lcmF0ZSBSQkRTICh0aGUgVVMgdmFyaWFudCBvZgorCVJEUykgZGF0YSBpbnN0ZWFkIG9mIFJEUyAoRXVyb3BlYW4tc3R5bGUgUkRTKS4gVGhpcyBhZmZlY3RzIG9ubHkgdGhlCisJUElDT0RFIGFuZCBQVFkgY29kZXMuCisKK1JEUyBSeCBJL08gTW9kZTogdGhpcyBjYW4gYmUgIkJsb2NrIEkvTyIgd2hlcmUgdGhlIFJEUyBibG9ja3MgaGF2ZSB0byBiZSByZWFkKCkKKwlieSB0aGUgYXBwbGljYXRpb24sIG9yICJDb250cm9scyIgd2hlcmUgdGhlIFJEUyBkYXRhIGlzIHByb3ZpZGVkIGJ5CisJdGhlIFJEUyBjb250cm9scyBtZW50aW9uZWQgYWJvdmUuCisKKworU2VjdGlvbiA5Ljc6IEZNIFJhZGlvIE1vZHVsYXRvciBDb250cm9scworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSRFMgUHJvZ3JhbSBJRDoKK1JEUyBQcm9ncmFtIFR5cGU6CitSRFMgUFMgTmFtZToKK1JEUyBSYWRpbyBUZXh0OgorUkRTIFN0ZXJlbzoKK1JEUyBBcnRpZmljaWFsIEhlYWQ6CitSRFMgQ29tcHJlc3NlZDoKK1JEUyBEeW1hbmljIFBUWToKK1JEUyBUcmFmZmljIEFubm91bmNlbWVudDoKK1JEUyBUcmFmZmljIFByb2dyYW06CitSRFMgTXVzaWM6IHRoZXNlIGFyZSBhbGwgY29udHJvbHMgdGhhdCBzZXQgdGhlIFJEUyBkYXRhIHRoYXQgaXMgdHJhbnNtaXR0ZWQgYnkKKwl0aGUgRk0gbW9kdWxhdG9yLgorCitSRFMgVHggSS9PIE1vZGU6IHRoaXMgY2FuIGJlICJCbG9jayBJL08iIHdoZXJlIHRoZSBhcHBsaWNhdGlvbiBoYXMgdG8gdXNlIHdyaXRlKCkKKwl0byBwYXNzIHRoZSBSRFMgYmxvY2tzIHRvIHRoZSBkcml2ZXIsIG9yICJDb250cm9scyIgd2hlcmUgdGhlIFJEUyBkYXRhIGlzCisJcHJvdmlkZWQgYnkgdGhlIFJEUyBjb250cm9scyBtZW50aW9uZWQgYWJvdmUuCisKKworU2VjdGlvbiAxMDogVmlkZW8sIFZCSSBhbmQgUkRTIExvb3BpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSB2aXZpZCBkcml2ZXIgc3VwcG9ydHMgbG9vcGluZyBvZiB2aWRlbyBvdXRwdXQgdG8gdmlkZW8gaW5wdXQsIFZCSSBvdXRwdXQKK3RvIFZCSSBpbnB1dCBhbmQgUkRTIG91dHB1dCB0byBSRFMgaW5wdXQuIEZvciB2aWRlby9WQkkgbG9vcGluZyB0aGlzIGVtdWxhdGVzCithcyBpZiBhIGNhYmxlIHdhcyBob29rZWQgdXAgYmV0d2VlbiB0aGUgb3V0cHV0IGFuZCBpbnB1dCBjb25uZWN0b3IuIFNvIHZpZGVvCithbmQgVkJJIGxvb3BpbmcgaXMgb25seSBzdXBwb3J0ZWQgYmV0d2VlbiBTLVZpZGVvIGFuZCBIRE1JIGlucHV0cyBhbmQgb3V0cHV0cy4KK1ZCSSBpcyBvbmx5IHZhbGlkIGZvciBTLVZpZGVvIGFzIGl0IG1ha2VzIG5vIHNlbnNlIGZvciBIRE1JLgorCitTaW5jZSByYWRpbyBpcyB3aXJlbGVzcyB0aGlzIGxvb3BpbmcgYWx3YXlzIGhhcHBlbnMgaWYgdGhlIHJhZGlvIHJlY2VpdmVyCitmcmVxdWVuY3kgaXMgY2xvc2UgdG8gdGhlIHJhZGlvIHRyYW5zbWl0dGVyIGZyZXF1ZW5jeS4gSW4gdGhhdCBjYXNlIHRoZSByYWRpbwordHJhbnNtaXR0ZXIgd2lsbCAnb3ZlcnJpZGUnIHRoZSBlbXVsYXRlZCByYWRpbyBzdGF0aW9ucy4KKworTG9vcGluZyBpcyBjdXJyZW50bHkgc3VwcG9ydGVkIG9ubHkgYmV0d2VlbiBkZXZpY2VzIGNyZWF0ZWQgYnkgdGhlIHNhbWUKK3ZpdmlkIGRyaXZlciBpbnN0YW5jZS4KKworCitTZWN0aW9uIDEwLjE6IFZpZGVvIGFuZCBTbGljZWQgVkJJIGxvb3BpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgd2F5IHRvIGVuYWJsZSB2aWRlby9WQkkgbG9vcGluZyBpcyBjdXJyZW50bHkgZmFpcmx5IGNydWRlLiBBICdMb29wIFZpZGVvJworY29udHJvbCBpcyBhdmFpbGFibGUgaW4gdGhlICJWaXZpZCIgY29udHJvbCBjbGFzcyBvZiB0aGUgdmlkZW8KK2NhcHR1cmUgYW5kIFZCSSBjYXB0dXJlIGRldmljZXMuIFdoZW4gY2hlY2tlZCB0aGUgdmlkZW8gbG9vcGluZyB3aWxsIGJlIGVuYWJsZWQuCitPbmNlIGVuYWJsZWQgYW55IHZpZGVvIFMtVmlkZW8gb3IgSERNSSBpbnB1dCB3aWxsIHNob3cgYSBzdGF0aWMgdGVzdCBwYXR0ZXJuCit1bnRpbCB0aGUgdmlkZW8gb3V0cHV0IGhhcyBzdGFydGVkLiBBdCB0aGF0IHRpbWUgdGhlIHZpZGVvIG91dHB1dCB3aWxsIGJlCitsb29wZWQgdG8gdGhlIHZpZGVvIGlucHV0IHByb3ZpZGVkIHRoYXQ6CisKKy0gdGhlIGlucHV0IHR5cGUgbWF0Y2hlcyB0aGUgb3V0cHV0IHR5cGUuIFNvIHRoZSBIRE1JIGlucHV0IGNhbm5vdCByZWNlaXZlCisgIHZpZGVvIGZyb20gdGhlIFMtVmlkZW8gb3V0cHV0LgorCistIHRoZSB2aWRlbyByZXNvbHV0aW9uIG9mIHRoZSB2aWRlbyBpbnB1dCBtdXN0IG1hdGNoIHRoYXQgb2YgdGhlIHZpZGVvIG91dHB1dC4KKyAgU28gaXQgaXMgbm90IHBvc3NpYmxlIHRvIGxvb3AgYSA1MCBIeiAoNzIweDU3NikgUy1WaWRlbyBvdXRwdXQgdG8gYSA2MCBIegorICAoNzIweDQ4MCkgUy1WaWRlbyBpbnB1dCwgb3IgYSA3MjBwNjAgSERNSSBvdXRwdXQgdG8gYSAxMDgwcDMwIGlucHV0LgorCistIHRoZSBwaXhlbCBmb3JtYXRzIG11c3QgYmUgaWRlbnRpY2FsIG9uIGJvdGggc2lkZXMuIE90aGVyd2lzZSB0aGUgZHJpdmVyIHdvdWxkCisgIGhhdmUgdG8gZG8gcGl4ZWwgZm9ybWF0IGNvbnZlcnNpb24gYXMgd2VsbCwgYW5kIHRoYXQncyB0YWtpbmcgdGhpbmdzIHRvbyBmYXIuCisKKy0gdGhlIGZpZWxkIHNldHRpbmdzIG11c3QgYmUgaWRlbnRpY2FsIG9uIGJvdGggc2lkZXMuIFNhbWUgcmVhc29uIGFzIGFib3ZlOgorICByZXF1aXJpbmcgdGhlIGRyaXZlciB0byBjb252ZXJ0IGZyb20gb25lIGZpZWxkIGZvcm1hdCB0byBhbm90aGVyIGNvbXBsaWNhdGVkCisgIG1hdHRlcnMgdG9vIG11Y2guIFRoaXMgYWxzbyBwcm9oaWJpdHMgY2FwdHVyaW5nIHdpdGggJ0ZpZWxkIFRvcCcgb3IgJ0ZpZWxkCisgIEJvdHRvbScgd2hlbiB0aGUgb3V0cHV0IHZpZGVvIGlzIHNldCB0byAnRmllbGQgQWx0ZXJuYXRlJy4gVGhpcyBjb21iaW5hdGlvbiwKKyAgd2hpbGUgbGVnYWwsIGJlY2FtZSB0b28gY29tcGxpY2F0ZWQgdG8gc3VwcG9ydC4gQm90aCBzaWRlcyBoYXZlIHRvIGJlICdGaWVsZAorICBBbHRlcm5hdGUnIGZvciB0aGlzIHRvIHdvcmsuIEFsc28gbm90ZSB0aGF0IGZvciB0aGlzIHNwZWNpZmljIGNhc2UgdGhlCisgIHNlcXVlbmNlIGFuZCBmaWVsZCBjb3VudGluZyBpbiBzdHJ1Y3QgdjRsMl9idWZmZXIgb24gdGhlIGNhcHR1cmUgc2lkZSBtYXkgbm90CisgIGJlIDEwMCUgYWNjdXJhdGUuCisKKy0gZmllbGQgc2V0dGluZ3MgVjRMMl9GSUVMRF9TRVFfVEIvQlQgYXJlIG5vdCBzdXBwb3J0ZWQuIFdoaWxlIGl0IGlzIHBvc3NpYmxlIHRvCisgIGltcGxlbWVudCB0aGlzLCBpdCB3b3VsZCBtZWFuIGEgbG90IG9mIHdvcmsgdG8gZ2V0IHRoaXMgcmlnaHQuIFNpbmNlIHRoZXNlCisgIGZpZWxkIHZhbHVlcyBhcmUgcmFyZWx5IHVzZWQgdGhlIGRlY2lzaW9uIHdhcyBtYWRlIG5vdCB0byBpbXBsZW1lbnQgdGhpcyBmb3IKKyAgbm93LgorCistIG9uIHRoZSBpbnB1dCBzaWRlIHRoZSAiU3RhbmRhcmQgU2lnbmFsIE1vZGUiIGZvciB0aGUgUy1WaWRlbyBpbnB1dCBvciB0aGUKKyAgIkRWIFRpbWluZ3MgU2lnbmFsIE1vZGUiIGZvciB0aGUgSERNSSBpbnB1dCBzaG91bGQgYmUgY29uZmlndXJlZCBzbyB0aGF0IGEKKyAgdmFsaWQgc2lnbmFsIGlzIHBhc3NlZCB0byB0aGUgdmlkZW8gaW5wdXQuCisKK1RoZSBmcmFtZXJhdGVzIGRvIG5vdCBoYXZlIHRvIG1hdGNoLCBhbHRob3VnaCB0aGlzIG1pZ2h0IGNoYW5nZSBpbiB0aGUgZnV0dXJlLgorCitCeSBkZWZhdWx0IHlvdSB3aWxsIHNlZSB0aGUgT1NEIHRleHQgc3VwZXJpbXBvc2VkIG9uIHRvcCBvZiB0aGUgbG9vcGVkIHZpZGVvLgorVGhpcyBjYW4gYmUgdHVybmVkIG9mZiBieSBjaGFuZ2luZyB0aGUgIk9TRCBUZXh0IE1vZGUiIGNvbnRyb2wgb2YgdGhlIHZpZGVvCitjYXB0dXJlIGRldmljZS4KKworRm9yIFZCSSBsb29waW5nIHRvIHdvcmsgYWxsIG9mIHRoZSBhYm92ZSBtdXN0IGJlIHZhbGlkIGFuZCBpbiBhZGRpdGlvbiB0aGUgdmJpCitvdXRwdXQgbXVzdCBiZSBjb25maWd1cmVkIGZvciBzbGljZWQgVkJJLiBUaGUgVkJJIGNhcHR1cmUgc2lkZSBjYW4gYmUgY29uZmlndXJlZAorZm9yIGVpdGhlciByYXcgb3Igc2xpY2VkIFZCSS4gTm90ZSB0aGF0IGF0IHRoZSBtb21lbnQgb25seSBDQy9YRFMgKDYwIEh6IGZvcm1hdHMpCithbmQgV1NTICg1MCBIeiBmb3JtYXRzKSBWQkkgZGF0YSBpcyBsb29wZWQuIFRlbGV0ZXh0IFZCSSBkYXRhIGlzIG5vdCBsb29wZWQuCisKKworU2VjdGlvbiAxMC4yOiBSYWRpbyAmIFJEUyBMb29waW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQXMgbWVudGlvbmVkIGluIHNlY3Rpb24gNiB0aGUgcmFkaW8gcmVjZWl2ZXIgZW11bGF0ZXMgc3RhdGlvbnMgYXJlIHJlZ3VsYXIKK2ZyZXF1ZW5jeSBpbnRlcnZhbHMuIERlcGVuZGluZyBvbiB0aGUgZnJlcXVlbmN5IG9mIHRoZSByYWRpbyByZWNlaXZlciBhCitzaWduYWwgc3RyZW5ndGggdmFsdWUgaXMgY2FsY3VsYXRlZCAodGhpcyBpcyByZXR1cm5lZCBieSBWSURJT0NfR19UVU5FUikuCitIb3dldmVyLCBpdCB3aWxsIGFsc28gbG9vayBhdCB0aGUgZnJlcXVlbmN5IHNldCBieSB0aGUgcmFkaW8gdHJhbnNtaXR0ZXIgYW5kCitpZiB0aGF0IHJlc3VsdHMgaW4gYSBoaWdoZXIgc2lnbmFsIHN0cmVuZ3RoIHRoYW4gdGhlIHNldHRpbmdzIG9mIHRoZSByYWRpbwordHJhbnNtaXR0ZXIgd2lsbCBiZSB1c2VkIGFzIGlmIGl0IHdhcyBhIHZhbGlkIHN0YXRpb24uIFRoaXMgYWxzbyBpbmNsdWRlcwordGhlIFJEUyBkYXRhIChpZiBhbnkpIHRoYXQgdGhlIHRyYW5zbWl0dGVyICd0cmFuc21pdHMnLiBUaGlzIGlzIHJlY2VpdmVkCitmYWl0aGZ1bGx5IG9uIHRoZSByZWNlaXZlciBzaWRlLiBOb3RlIHRoYXQgd2hlbiB0aGUgZHJpdmVyIGlzIGxvYWRlZCB0aGUKK2ZyZXF1ZW5jaWVzIG9mIHRoZSByYWRpbyByZWNlaXZlciBhbmQgdHJhbnNtaXR0ZXIgYXJlIG5vdCBpZGVudGljYWwsIHNvCitpbml0aWFsbHkgbm8gbG9vcGluZyB0YWtlcyBwbGFjZS4KKworCitTZWN0aW9uIDExOiBDcm9wcGluZywgQ29tcG9zaW5nLCBTY2FsaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZHJpdmVyIHN1cHBvcnRzIGNyb3BwaW5nLCBjb21wb3NpbmcgYW5kIHNjYWxpbmcgaW4gYW55IGNvbWJpbmF0aW9uLiBOb3JtYWxseQord2hpY2ggZmVhdHVyZXMgYXJlIHN1cHBvcnRlZCBjYW4gYmUgc2VsZWN0ZWQgdGhyb3VnaCB0aGUgVml2aWQgY29udHJvbHMsCitidXQgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byBoYXJkY29kZSBpdCB3aGVuIHRoZSBtb2R1bGUgaXMgbG9hZGVkIHRocm91Z2ggdGhlCitjY3NfY2FwX21vZGUgYW5kIGNjc19vdXRfbW9kZSBtb2R1bGUgb3B0aW9ucy4gU2VlIHNlY3Rpb24gMSBvbiB0aGUgZGV0YWlscyBvZgordGhlc2UgbW9kdWxlIG9wdGlvbnMuCisKK1RoaXMgYWxsb3dzIHlvdSB0byB0ZXN0IHlvdXIgYXBwbGljYXRpb24gZm9yIGFsbCB0aGVzZSB2YXJpYXRpb25zLgorCitOb3RlIHRoYXQgdGhlIHdlYmNhbSBpbnB1dCBuZXZlciBzdXBwb3J0cyBjcm9wcGluZywgY29tcG9zaW5nIG9yIHNjYWxpbmcuIFRoYXQKK29ubHkgYXBwbGllcyB0byB0aGUgVFYvUy1WaWRlby9IRE1JIGlucHV0cyBhbmQgb3V0cHV0cy4gVGhlIHJlYXNvbiBpcyB0aGF0Cit3ZWJjYW1zLCBpbmNsdWRpbmcgdGhpcyB2aXJ0dWFsIGltcGxlbWVudGF0aW9uLCBub3JtYWxseSB1c2UKK1ZJRElPQ19FTlVNX0ZSQU1FU0laRVMgdG8gbGlzdCBhIHNldCBvZiBkaXNjcmV0ZSBmcmFtZXNpemVzIHRoYXQgaXQgc3VwcG9ydHMuCitBbmQgdGhhdCBkb2VzIG5vdCBjb21iaW5lIHdpdGggY3JvcHBpbmcsIGNvbXBvc2luZyBvciBzY2FsaW5nLiBUaGlzIGlzCitwcmltYXJpbHkgYSBsaW1pdGF0aW9uIG9mIHRoZSBWNEwyIEFQSSB3aGljaCBpcyBjYXJlZnVsbHkgcmVwcm9kdWNlZCBoZXJlLgorCitUaGUgbWluaW11bSBhbmQgbWF4aW11bSByZXNvbHV0aW9ucyB0aGF0IHRoZSBzY2FsZXIgY2FuIGFjaGlldmUgYXJlIDE2eDE2IGFuZAorKDQwOTYgKiA0KSB4ICgyMTYwIHggNCksIGJ1dCBpdCBjYW4gb25seSBzY2FsZSB1cCBvciBkb3duIGJ5IGEgZmFjdG9yIG9mIDQgb3IKK2xlc3MuIFNvIGZvciBhIHNvdXJjZSByZXNvbHV0aW9uIG9mIDEyODB4NzIwIHRoZSBtaW5pbXVtIHRoZSBzY2FsZXIgY2FuIGRvIGlzCiszMjB4MTgwIGFuZCB0aGUgbWF4aW11bSBpcyA1MTIweDI4ODAuIFlvdSBjYW4gcGxheSBhcm91bmQgd2l0aCB0aGlzIHVzaW5nIHRoZQorcXY0bDIgdGVzdCB0b29sIGFuZCB5b3Ugd2lsbCBzZWUgdGhlc2UgZGVwZW5kZW5jaWVzLgorCitUaGlzIGRyaXZlciBhbHNvIHN1cHBvcnRzIGxhcmdlciAnYnl0ZXNwZXJsaW5lJyBzZXR0aW5ncywgc29tZXRoaW5nIHRoYXQKK1ZJRElPQ19TX0ZNVCBhbGxvd3MgYnV0IHRoYXQgZmV3IGRyaXZlcnMgaW1wbGVtZW50LgorCitUaGUgc2NhbGVyIGlzIGEgc2ltcGxlIHNjYWxlciB0aGF0IHVzZXMgdGhlIENvYXJzZSBCcmVzZW5oYW0gYWxnb3JpdGhtLiBJdCdzCitkZXNpZ25lZCBmb3Igc3BlZWQgYW5kIHNpbXBsaWNpdHksIG5vdCBxdWFsaXR5LgorCitJZiB0aGUgY29tYmluYXRpb24gb2YgY3JvcCwgY29tcG9zZSBhbmQgc2NhbGluZyBhbGxvd3MgaXQsIHRoZW4gaXQgaXMgcG9zc2libGUKK3RvIGNoYW5nZSBjcm9wIGFuZCBjb21wb3NlIHJlY3RhbmdsZXMgb24gdGhlIGZseS4KKworCitTZWN0aW9uIDEyOiBGb3JtYXRzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBkcml2ZXIgc3VwcG9ydHMgYWxsIHRoZSByZWd1bGFyIHBhY2tlZCBhbmQgcGxhbmFyIDQ6NDo0LCA0OjI6MiBhbmQgNDoyOjAKK1lVWVYgZm9ybWF0cywgOCwgMTYsIDI0IGFuZCAzMiBSR0IgcGFja2VkIGZvcm1hdHMgYW5kIHZhcmlvdXMgbXVsdGlwbGFuYXIKK2Zvcm1hdHMuCisKK1RoZSBhbHBoYSBjb21wb25lbnQgY2FuIGJlIHNldCB0aHJvdWdoIHRoZSAnQWxwaGEgQ29tcG9uZW50JyBVc2VyIGNvbnRyb2wKK2ZvciB0aG9zZSBmb3JtYXRzIHRoYXQgc3VwcG9ydCBpdC4gSWYgdGhlICdBcHBseSBBbHBoYSBUbyBSZWQgT25seScgY29udHJvbAoraXMgc2V0LCB0aGVuIHRoZSBhbHBoYSBjb21wb25lbnQgaXMgb25seSB1c2VkIGZvciB0aGUgY29sb3IgcmVkIGFuZCBzZXQgdG8KKzAgb3RoZXJ3aXNlLgorCitUaGUgZHJpdmVyIGhhcyB0byBiZSBjb25maWd1cmVkIHRvIHN1cHBvcnQgdGhlIG11bHRpcGxhbmFyIGZvcm1hdHMuIEJ5IGRlZmF1bHQKK3RoZSBkcml2ZXIgaW5zdGFuY2VzIGFyZSBzaW5nbGUtcGxhbmFyLiBUaGlzIGNhbiBiZSBjaGFuZ2VkIGJ5IHNldHRpbmcgdGhlCittdWx0aXBsYW5hciBtb2R1bGUgb3B0aW9uLCBzZWUgc2VjdGlvbiAxIGZvciBtb3JlIGRldGFpbHMgb24gdGhhdCBvcHRpb24uCisKK0lmIHRoZSBkcml2ZXIgaW5zdGFuY2UgaXMgdXNpbmcgdGhlIG11bHRpcGxhbmFyIGZvcm1hdHMvQVBJLCB0aGVuIHRoZSBmaXJzdAorc2luZ2xlIHBsYW5hciBmb3JtYXQgKFlVWVYpIGFuZCB0aGUgbXVsdGlwbGFuYXIgTlYxNk0gYW5kIE5WNjFNIGZvcm1hdHMgdGhlCit3aWxsIGhhdmUgYSBwbGFuZSB0aGF0IGhhcyBhIG5vbi16ZXJvIGRhdGFfb2Zmc2V0IG9mIDEyOCBieXRlcy4gSXQgaXMgcmFyZSBmb3IKK2RhdGFfb2Zmc2V0IHRvIGJlIG5vbi16ZXJvLCBzbyB0aGlzIGlzIGEgdXNlZnVsIGZlYXR1cmUgZm9yIHRlc3RpbmcgYXBwbGljYXRpb25zLgorCitWaWRlbyBvdXRwdXQgd2lsbCBhbHNvIGhvbm9yIGFueSBkYXRhX29mZnNldCB0aGF0IHRoZSBhcHBsaWNhdGlvbiBzZXQuCisKKworU2VjdGlvbiAxMzogQ2FwdHVyZSBPdmVybGF5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTm90ZTogY2FwdHVyZSBvdmVybGF5IHN1cHBvcnQgaXMgaW1wbGVtZW50ZWQgcHJpbWFyaWx5IHRvIHRlc3QgdGhlIGV4aXN0aW5nCitWNEwyIGNhcHR1cmUgb3ZlcmxheSBBUEkuIEluIHByYWN0aWNlIGZldyBpZiBhbnkgR1BVcyBzdXBwb3J0IHN1Y2ggb3ZlcmxheXMKK2FueW1vcmUsIGFuZCBuZWl0aGVyIGFyZSB0aGV5IGdlbmVyYWxseSBuZWVkZWQgYW55bW9yZSBzaW5jZSBtb2Rlcm4gaGFyZHdhcmUKK2lzIHNvIG11Y2ggbW9yZSBjYXBhYmxlLiBCeSBzZXR0aW5nIGZsYWcgMHgxMDAwMCBpbiB0aGUgbm9kZV90eXBlcyBtb2R1bGUKK29wdGlvbiB0aGUgdml2aWQgZHJpdmVyIHdpbGwgY3JlYXRlIGEgc2ltcGxlIGZyYW1lYnVmZmVyIGRldmljZSB0aGF0IGNhbiBiZQordXNlZCBmb3IgdGVzdGluZyB0aGlzIEFQSS4gV2hldGhlciB0aGlzIEFQSSBzaG91bGQgYmUgdXNlZCBmb3IgbmV3IGRyaXZlcnMgaXMKK3F1ZXN0aW9uYWJsZS4KKworVGhpcyBkcml2ZXIgaGFzIHN1cHBvcnQgZm9yIGEgZGVzdHJ1Y3RpdmUgY2FwdHVyZSBvdmVybGF5IHdpdGggYml0bWFwIGNsaXBwaW5nCithbmQgbGlzdCBjbGlwcGluZyAodXAgdG8gMTYgcmVjdGFuZ2xlcykgY2FwYWJpbGl0aWVzLiBPdmVybGF5cyBhcmUgbm90CitzdXBwb3J0ZWQgZm9yIG11bHRpcGxhbmFyIGZvcm1hdHMuIEl0IGFsc28gaG9ub3JzIHRoZSBzdHJ1Y3QgdjRsMl93aW5kb3cgZmllbGQKK3NldHRpbmc6IGlmIGl0IGlzIHNldCB0byBGSUVMRF9UT1Agb3IgRklFTERfQk9UVE9NIGFuZCB0aGUgY2FwdHVyZSBzZXR0aW5nIGlzCitGSUVMRF9BTFRFUk5BVEUsIHRoZW4gb25seSB0aGUgdG9wIG9yIGJvdHRvbSBmaWVsZHMgd2lsbCBiZSBjb3BpZWQgdG8gdGhlIG92ZXJsYXkuCisKK1RoZSBvdmVybGF5IG9ubHkgd29ya3MgaWYgeW91IGFyZSBhbHNvIGNhcHR1cmluZyBhdCB0aGF0IHNhbWUgdGltZS4gVGhpcyBpcyBhCit2aXZpZCBsaW1pdGF0aW9uIHNpbmNlIGl0IGNvcGllcyBmcm9tIGEgYnVmZmVyIHRvIHRoZSBvdmVybGF5IGluc3RlYWQgb2YKK2ZpbGxpbmcgdGhlIG92ZXJsYXkgZGlyZWN0bHkuIEFuZCBpZiB5b3UgYXJlIG5vdCBjYXB0dXJpbmcsIHRoZW4gbm8gYnVmZmVycworYXJlIGF2YWlsYWJsZSB0byBmaWxsLgorCitJbiBhZGRpdGlvbiwgdGhlIHBpeGVsZm9ybWF0IG9mIHRoZSBjYXB0dXJlIGZvcm1hdCBhbmQgdGhhdCBvZiB0aGUgZnJhbWVidWZmZXIKK211c3QgYmUgdGhlIHNhbWUgZm9yIHRoZSBvdmVybGF5IHRvIHdvcmsuIE90aGVyd2lzZSBWSURJT0NfT1ZFUkxBWSB3aWxsIHJldHVybgorYW4gZXJyb3IuCisKK0luIG9yZGVyIHRvIHJlYWxseSBzZWUgd2hhdCBpdCBnb2luZyBvbiB5b3Ugd2lsbCBuZWVkIHRvIGNyZWF0ZSB0d28gdml2aWQKK2luc3RhbmNlczogdGhlIGZpcnN0IHdpdGggYSBmcmFtZWJ1ZmZlciBlbmFibGVkLiBZb3UgY29uZmlndXJlIHRoZSBjYXB0dXJlCitvdmVybGF5IG9mIHRoZSBzZWNvbmQgaW5zdGFuY2UgdG8gdXNlIHRoZSBmcmFtZWJ1ZmZlciBvZiB0aGUgZmlyc3QsIHRoZW4KK3lvdSBzdGFydCBjYXB0dXJpbmcgaW4gdGhlIHNlY29uZCBpbnN0YW5jZS4gRm9yIHRoZSBmaXJzdCBpbnN0YW5jZSB5b3Ugc2V0dXAKK3RoZSBvdXRwdXQgb3ZlcmxheSBmb3IgdGhlIHZpZGVvIG91dHB1dCwgdHVybiBvbiB2aWRlbyBsb29waW5nIGFuZCBjYXB0dXJlCit0byBzZWUgdGhlIGJsZW5kZWQgZnJhbWVidWZmZXIgb3ZlcmxheSB0aGF0J3MgYmVpbmcgd3JpdHRlbiB0byBieSB0aGUgc2Vjb25kCitpbnN0YW5jZS4gVGhpcyBzZXR1cCB3b3VsZCByZXF1aXJlIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CisKKwkkIHN1ZG8gbW9kcHJvYmUgdml2aWQgbl9kZXZzPTIgbm9kZV90eXBlcz0weDEwMTAxLDB4MQorCSQgdjRsMi1jdGwgLWQxIC0tZmluZC1mYgorCS9kZXYvZmIxIGlzIHRoZSBmcmFtZWJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggYmFzZSBhZGRyZXNzIDB4MTI4MDAwMDAKKwkkIHN1ZG8gdjRsMi1jdGwgLWQyIC0tc2V0LWZidWYgZmI9MQorCSQgdjRsMi1jdGwgLWQxIC0tc2V0LWZidWYgZmI9MQorCSQgdjRsMi1jdGwgLWQwIC0tc2V0LWZtdC12aWRlbz1waXhlbGZvcm1hdD0nQVIxNScKKwkkIHY0bDItY3RsIC1kMSAtLXNldC1mbXQtdmlkZW8tb3V0PXBpeGVsZm9ybWF0PSdBUjE1JworCSQgdjRsMi1jdGwgLWQyIC0tc2V0LWZtdC12aWRlbz1waXhlbGZvcm1hdD0nQVIxNScKKwkkIHY0bDItY3RsIC1kMCAtaTIKKwkkIHY0bDItY3RsIC1kMiAtaTIKKwkkIHY0bDItY3RsIC1kMiAtYyBob3Jpem9udGFsX21vdmVtZW50PTQKKwkkIHY0bDItY3RsIC1kMSAtLW92ZXJsYXk9MQorCSQgdjRsMi1jdGwgLWQxIC1jIGxvb3BfdmlkZW89MQorCSQgdjRsMi1jdGwgLWQyIC0tc3RyZWFtLW1tYXAgLS1vdmVybGF5PTEKKworQW5kIGZyb20gYW5vdGhlciBjb25zb2xlOgorCisJJCB2NGwyLWN0bCAtZDEgLS1zdHJlYW0tb3V0LW1tYXAKKworQW5kIHlldCBhbm90aGVyIGNvbnNvbGU6CisKKwkkIHF2NGwyCisKK2FuZCBzdGFydCBzdHJlYW1pbmcuCisKK0FzIHlvdSBjYW4gc2VlLCB0aGlzIGlzIG5vdCBmb3IgdGhlIGZhaW50IG9mIGhlYXJ0Li4uCisKKworU2VjdGlvbiAxNDogT3V0cHV0IE92ZXJsYXkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05vdGU6IG91dHB1dCBvdmVybGF5cyBhcmUgcHJpbWFyaWx5IGltcGxlbWVudGVkIGluIG9yZGVyIHRvIHRlc3QgdGhlIGV4aXN0aW5nCitWNEwyIG91dHB1dCBvdmVybGF5IEFQSS4gV2hldGhlciB0aGlzIEFQSSBzaG91bGQgYmUgdXNlZCBmb3IgbmV3IGRyaXZlcnMgaXMKK3F1ZXN0aW9uYWJsZS4KKworVGhpcyBkcml2ZXIgaGFzIHN1cHBvcnQgZm9yIGFuIG91dHB1dCBvdmVybGF5IGFuZCBpcyBjYXBhYmxlIG9mOgorCisJLSBiaXRtYXAgY2xpcHBpbmcsCisJLSBsaXN0IGNsaXBwaW5nICh1cCB0byAxNiByZWN0YW5nbGVzKQorCS0gY2hyb21ha2V5CisJLSBzb3VyY2UgY2hyb21ha2V5CisJLSBnbG9iYWwgYWxwaGEKKwktIGxvY2FsIGFscGhhCisJLSBsb2NhbCBpbnZlcnNlIGFscGhhCisKK091dHB1dCBvdmVybGF5cyBhcmUgbm90IHN1cHBvcnRlZCBmb3IgbXVsdGlwbGFuYXIgZm9ybWF0cy4gSW4gYWRkaXRpb24sIHRoZQorcGl4ZWxmb3JtYXQgb2YgdGhlIGNhcHR1cmUgZm9ybWF0IGFuZCB0aGF0IG9mIHRoZSBmcmFtZWJ1ZmZlciBtdXN0IGJlIHRoZQorc2FtZSBmb3IgdGhlIG92ZXJsYXkgdG8gd29yay4gT3RoZXJ3aXNlIFZJRElPQ19PVkVSTEFZIHdpbGwgcmV0dXJuIGFuIGVycm9yLgorCitPdXRwdXQgb3ZlcmxheXMgb25seSB3b3JrIGlmIHRoZSBkcml2ZXIgaGFzIGJlZW4gY29uZmlndXJlZCB0byBjcmVhdGUgYQorZnJhbWVidWZmZXIgYnkgc2V0dGluZyBmbGFnIDB4MTAwMDAgaW4gdGhlIG5vZGVfdHlwZXMgbW9kdWxlIG9wdGlvbi4gVGhlCitjcmVhdGVkIGZyYW1lYnVmZmVyIGhhcyBhIHNpemUgb2YgNzIweDU3NiBhbmQgc3VwcG9ydHMgQVJHQiAxOjU6NTo1IGFuZAorUkdCIDU6Njo1LgorCitJbiBvcmRlciB0byBzZWUgdGhlIGVmZmVjdHMgb2YgdGhlIHZhcmlvdXMgY2xpcHBpbmcsIGNocm9tYWtleWluZyBvciBhbHBoYQorcHJvY2Vzc2luZyBjYXBhYmlsaXRpZXMgeW91IG5lZWQgdG8gdHVybiBvbiB2aWRlbyBsb29waW5nIGFuZCBzZWUgdGhlIHJlc3VsdHMKK29uIHRoZSBjYXB0dXJlIHNpZGUuIFRoZSB1c2Ugb2YgdGhlIGNsaXBwaW5nLCBjaHJvbWFrZXlpbmcgb3IgYWxwaGEgcHJvY2Vzc2luZworY2FwYWJpbGl0aWVzIHdpbGwgc2xvdyBkb3duIHRoZSB2aWRlbyBsb29wIGNvbnNpZGVyYWJseSBhcyBhIGxvdCBvZiBjaGVja3MgaGF2ZQordG8gYmUgZG9uZSBwZXIgcGl4ZWwuCisKKworU2VjdGlvbiAxNTogU29tZSBGdXR1cmUgSW1wcm92ZW1lbnRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSnVzdCBhcyBhIHJlbWluZGVyIGFuZCBpbiBubyBwYXJ0aWN1bGFyIG9yZGVyOgorCistIEFkZCBhIHZpcnR1YWwgYWxzYSBkcml2ZXIgdG8gdGVzdCBhdWRpbworLSBBZGQgdmlydHVhbCBzdWItZGV2aWNlcyBhbmQgbWVkaWEgY29udHJvbGxlciBzdXBwb3J0CistIFNvbWUgc3VwcG9ydCBmb3IgdGVzdGluZyBjb21wcmVzc2VkIHZpZGVvCistIEFkZCBzdXBwb3J0IHRvIGxvb3AgcmF3IFZCSSBvdXRwdXQgdG8gcmF3IFZCSSBpbnB1dAorLSBBZGQgc3VwcG9ydCB0byBsb29wIHRlbGV0ZXh0IHNsaWNlZCBWQkkgb3V0cHV0IHRvIFZCSSBpbnB1dAorLSBGaXggc2VxdWVuY2UvZmllbGQgbnVtYmVyaW5nIHdoZW4gbG9vcGluZyBvZiB2aWRlbyB3aXRoIGFsdGVybmF0ZSBmaWVsZHMKKy0gQWRkIHN1cHBvcnQgZm9yIFY0TDJfQ0lEX0JHX0NPTE9SIGZvciB2aWRlbyBvdXRwdXRzCistIEFkZCBBUkdCODg4IG92ZXJsYXkgc3VwcG9ydDogYmV0dGVyIHRlc3Rpbmcgb2YgdGhlIGFscGhhIGNoYW5uZWwKKy0gQWRkIGN1c3RvbSBEViB0aW1pbmdzIHN1cHBvcnQKKy0gQWRkIHN1cHBvcnQgZm9yIFY0TDJfRFZfRkxfUkVEVUNFRF9GUFMKKy0gSW1wcm92ZSBwaXhlbCBhc3BlY3Qgc3VwcG9ydCBpbiB0aGUgdHBnIGNvZGUgYnkgcGFzc2luZyBhIHJlYWwgdjRsMl9mcmFjdAorLSBVc2UgcGVyLXF1ZXVlIGxvY2tzIGFuZC9vciBwZXItZGV2aWNlIGxvY2tzIHRvIGltcHJvdmUgdGhyb3VnaHB1dAorLSBBZGQgc3VwcG9ydCB0byBsb29wIGZyb20gYSBzcGVjaWZpYyBvdXRwdXQgdG8gYSBzcGVjaWZpYyBpbnB1dCBhY3Jvc3MKKyAgdml2aWQgaW5zdGFuY2VzCistIFRoZSBTRFIgcmFkaW8gc2hvdWxkIHVzZSB0aGUgc2FtZSAnZnJlcXVlbmNpZXMnIGZvciBzdGF0aW9ucyBhcyB0aGUgbm9ybWFsCisgIHJhZGlvIHJlY2VpdmVyLCBhbmQgZ2l2ZSBiYWNrIG5vaXNlIGlmIHRoZSBmcmVxdWVuY3kgZG9lc24ndCBtYXRjaCB1cCB3aXRoCisgIGEgc3RhdGlvbiBmcmVxdWVuY3kKKy0gTWFrZSBhIHRocmVhZCBmb3IgdGhlIFJEUyBnZW5lcmF0aW9uLCB0aGF0IHdvdWxkIGhlbHAgaW4gcGFydGljdWxhciBmb3IgdGhlCisgICJDb250cm9scyIgUkRTIFJ4IEkvTyBNb2RlIGFzIHRoZSByZWFkLW9ubHkgUkRTIGNvbnRyb2xzIGNvdWxkIGJlIHVwZGF0ZWQKKyAgaW4gcmVhbC10aW1lLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC96cjM2NHh4LnR4dCBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvenIzNjR4eC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk4ZTRkMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvenIzNjR4eC50eHQKQEAgLTAsMCArMSw2OSBAQAorWm9yYW4gMzY0eHggYmFzZWQgVVNCIHdlYmNhbSBtb2R1bGUgdmVyc2lvbiAwLjcyCitzaXRlOiBodHRwOi8vcm95YWxlLnplcmV6by5jb20venIzNjR4eC8KK21haWw6IHJveWFsZUB6ZXJlem8uY29tCisKK2ludHJvZHVjdGlvbjoKK1RoaXMgYnJpbmdzIHN1cHBvcnQgdW5kZXIgTGludXggZm9yIHRoZSBBaXB0ZWsgUG9ja2V0RFYgMzMwMCBpbiB3ZWJjYW0gbW9kZS4KK0lmIHlvdSBqdXN0IHdhbnQgdG8gZ2V0IG9uIHlvdXIgUEMgdGhlIHBpY3R1cmVzIGFuZCBtb3ZpZXMgb24gdGhlIGNhbWVyYSwgeW91IHNob3VsZCB1c2UgdGhlIHVzYi1zdG9yYWdlIG1vZHVsZSBpbnN0ZWFkLgorVGhlIGRyaXZlciB3b3JrcyB3aXRoIHNldmVyYWwgb3RoZXIgY2FtZXJhcyBpbiB3ZWJjYW0gbW9kZSAoc2VlIHRoZSBsaXN0IGJlbG93KS4KK01heWJlIHRoaXMgY29kZSBjYW4gd29yayBmb3Igb3RoZXIgSlBFRy9VU0IgY2FtcyBiYXNlZCBvbiB0aGUgQ29hY2ggY2hpcHMgZnJvbSBab3Jhbj8KK1Bvc3NpYmxlIGNoaXBzZXRzIGFyZSA6IFpSMzY0MzAgKFpSMzY0MzBCR0MpIGFuZCBtYXliZSBaUjM2NDMxLCBaUjM2NDQwLCBaUjM2NDQyLi4uCitZb3UgY2FuIHRyeSB0aGUgZXhwZXJpZW5jZSBjaGFuZ2luZyB0aGUgdmVuZG9yL3Byb2R1Y3QgSUQgdmFsdWVzIChsb29rIGF0IHRoZSBzb3VyY2UgY29kZSkuCitZb3UgY2FuIGdldCB0aGVzZSB2YWx1ZXMgYnkgbG9va2luZyBhdCAvdmFyL2xvZy9tZXNzYWdlcyB3aGVuIHlvdSBwbHVnIHlvdXIgY2FtZXJhLCBvciBieSB0eXBpbmcgOiBjYXQgL3Byb2MvYnVzL3VzYi9kZXZpY2VzLgorSWYgeW91IG1hbmFnZSB0byB1c2UgeW91ciBjYW0gd2l0aCB0aGlzIGNvZGUsIHlvdSBjYW4gc2VuZCBtZSBhIG1haWwgKHJveWFsZUB6ZXJlem8uY29tKSB3aXRoIHRoZSBuYW1lIG9mIHlvdXIgY2FtIGFuZCBhIHBhdGNoIGlmIG5lZWRlZC4KK1RoaXMgaXMgYSBiZXRhIHJlbGVhc2Ugb2YgdGhlIGRyaXZlci4KK1NpbmNlIHZlcnNpb24gMC43MCwgdGhpcyBkcml2ZXIgaXMgb25seSBjb21wYXRpYmxlIHdpdGggVjRMMiBBUEkgYW5kIDIuNi54IGtlcm5lbHMuCitJZiB5b3UgbmVlZCBWNEwxIG9yIDIuNHgga2VybmVscyBzdXBwb3J0LCBwbGVhc2UgdXNlIGFuIG9sZGVyIHZlcnNpb24sIGJ1dCB0aGUgY29kZSBpcyBub3QgbWFpbnRhaW5lZCBhbnltb3JlLgorR29vZCBsdWNrIQorCitpbnN0YWxsOgorSW4gb3JkZXIgdG8gdXNlIHRoaXMgZHJpdmVyLCB5b3UgbXVzdCBjb21waWxlIGl0IHdpdGggeW91ciBrZXJuZWwuCitMb2NhdGlvbjogRGV2aWNlIERyaXZlcnMgLT4gTXVsdGltZWRpYSBkZXZpY2VzIC0+IFZpZGVvIEZvciBMaW51eCAtPiBWaWRlbyBDYXB0dXJlIEFkYXB0ZXJzIC0+IFY0TCBVU0IgZGV2aWNlcworCit1c2FnZToKK21vZHByb2JlIHpyMzY0eHggZGVidWc9WCBtb2RlPVkKKyAtIGRlYnVnICAgICAgOiBzZXQgdG8gMSB0byBlbmFibGUgdmVyYm9zZSBkZWJ1ZyBtZXNzYWdlcworIC0gbW9kZSAgICAgICA6IDAgPSAzMjB4MjQwLCAxID0gMTYweDEyMCwgMiA9IDY0MHg0ODAKK1lvdSBjYW4gdGhlbiB1c2UgdGhlIGNhbWVyYSB3aXRoIFY0TDIgY29tcGF0aWJsZSBhcHBsaWNhdGlvbnMsIGZvciBleGFtcGxlIEVraWdhLgorVG8gY2FwdHVyZSBhIHNpbmdsZSBpbWFnZSwgdHJ5IHRoaXM6IGRkIGlmPS9kZXYvdmlkZW8wIG9mPXRlc3QuanBnIGJzPTFNIGNvdW50PTEKKworbGlua3MgOgoraHR0cDovL214aGFhcmQuZnJlZS5mci8gKHN1cHBvcnQgZm9yIG1hbnkgb3RoZXJzIGNhbXMgaW5jbHVkaW5nIHNvbWUgQWlwdGVrIFBvY2tldERWKQoraHR0cDovL3d3dy5oYXJtd2FsLm5sL3BjY2FtODgwLyAodGhpcyBwcm9qZWN0IGFsc28gc3VwcG9ydHMgY2FtZXJhcyBiYXNlZCBvbiB0aGlzIGNoaXBzZXQpCisKK3N1cHBvcnRlZCBkZXZpY2VzOgorLS0tLS0tICAtLS0tLS0tICAtLS0tLS0tLS0tLSAgICAgLS0tLS0KK1ZlbmRvciAgUHJvZHVjdCAgRGlzdHJpYnV0b3IgICAgIE1vZGVsCistLS0tLS0gIC0tLS0tLS0gIC0tLS0tLS0tLS0tICAgICAtLS0tLQorMHgwOGNhICAweDAxMDkgICBBaXB0ZWsgICAgICAgICAgUG9ja2V0RFYgMzMwMAorMHgwOGNhICAweDAxMDkgICBNYXhlbGwgICAgICAgICAgTWF4Y2FtIFBSTyBEVjMKKzB4MDQxZSAgMHg0MDI0ICAgQ3JlYXRpdmUgICAgICAgIFBDLUNBTSA4ODAKKzB4MGQ2NCAgMHgwMTA4ICAgQWlwdGVrICAgICAgICAgIEZpZGVsaXR5IDMyMDAKKzB4MGQ2NCAgMHgwMTA4ICAgUHJha3RpY2EgICAgICAgIERDWiAxLjMgUworMHgwZDY0ICAweDAxMDggICBHZW5pdXMgICAgICAgICAgRGlnaXRhbCBDYW1lcmEgKD8pCisweDBkNjQgIDB4MDEwOCAgIERYRyBUZWNobm9sb2d5ICBGYXNoaW9uIENhbQorMHgwNTQ2ICAweDMxODcgICBQb2xhcm9pZCAgICAgICAgaU9OIDIzMAorMHgwZDY0ICAweDMxMDggICBQcmFrdGljYSAgICAgICAgRXhha3RhIERDIDIyMDAKKzB4MGQ2NCAgMHgzMTA4ICAgR2VuaXVzICAgICAgICAgIEctU2hvdCBEMjExCisweDA1OTUgIDB4NDM0MyAgIENvbmNvcmQgICAgICAgICBFeWUtUSBEdW8gMTMwMAorMHgwNTk1ICAweDQzNDMgICBDb25jb3JkICAgICAgICAgRXllLVEgRHVvIDIwMDAKKzB4MDU5NSAgMHg0MzQzICAgRnVqaWZpbG0gICAgICAgIEVYLTEwCisweDA1OTUgIDB4NDM0MyAgIFJpY29oICAgICAgICAgICBSREMtNjAwMAorMHgwNTk1ICAweDQzNDMgICBEaWdpdHJleCAgICAgICAgRFNDIDEzMDAKKzB4MDU5NSAgMHg0MzQzICAgRmlyc3RsaW5lICAgICAgIEZEQyAyMDAwCisweDBiYjAgIDB4NTAwZCAgIENvbmNvcmQgICAgICAgICBFeWVRIEdvIFdpcmVsZXNzCisweDBmZWIgIDB4MjAwNCAgIENSUyBFbGVjdHJvbmljICAzLjMgRGlnaXRhbCBDYW1lcmEKKzB4MGZlYiAgMHgyMDA0ICAgUGFja2FyZCBCZWxsICAgIERTQy0zMDAKKzB4MDU1ZiAgMHhiNTAwICAgTXVzdGVrICAgICAgICAgIE1EQyAzMDAwCisweDA4Y2EgIDB4MjA2MiAgIEFpcHRlayAgICAgICAgICBQb2NrZXREViA1NzAwCisweDA1MmIgIDB4MWExOCAgIENoaXBoZWFkICAgICAgICBNZWdhcGl4IFYxMgorMHgwNGM4ICAweDA3MjkgICBLb25pY2EgICAgICAgICAgUmV2aW8gMgorMHgwNGYyICAweGEyMDggICBDcmVhdGl2ZSAgICAgICAgUEMtQ0FNIDg1MAorMHgwNzg0ICAweDAwNDAgICBUcmF2ZWxlciAgICAgICAgU2xpbWxpbmUgWDUKKzB4MDZkNiAgMHgwMDM0ICAgVHJ1c3QgICAgICAgICAgIFBvd2VyY0BtIDc1MAorMHgwYTE3ICAweDAwNjIgICBQZW50YXggICAgICAgICAgT3B0aW8gNTBMCisweDA2ZDYgIDB4MDAzYiAgIFRydXN0ICAgICAgICAgICBQb3dlcmNAbSA5NzBaCisweDBhMTcgIDB4MDA0ZSAgIFBlbnRheCAgICAgICAgICBPcHRpbyA1MAorMHgwNDFlICAweDQwNWQgICBDcmVhdGl2ZSAgICAgICAgRGlWaSBDQU0gNTE2CisweDA4Y2EgIDB4MjEwMiAgIEFpcHRlayAgICAgICAgICBEViBUMzAwCisweDA2ZDYgIDB4MDAzZCAgIFRydXN0ICAgICAgICAgICBQb3dlcmNAbSA5MTBaCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwvMDAtSU5ERVggYi9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwvMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYwZDIzOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlydHVhbC8wMC1JTkRFWApAQCAtMCwwICsxLDExIEBACitWaXJ0dWFsaXphdGlvbiBzdXBwb3J0IGluIHRoZSBMaW51eCBrZXJuZWwuCisKKzAwLUlOREVYCisJLSB0aGlzIGZpbGUuCisKK3BhcmF2aXJ0X29wcy50eHQKKwktIERlc2NyaWJlcyB0aGUgTGludXgga2VybmVsIHB2X29wcyB0byBzdXBwb3J0IGRpZmZlcmVudCBoeXBlcnZpc29ycwora3ZtLworCS0gS2VybmVsIFZpcnR1YWwgTWFjaGluZS4gIFNlZSBhbHNvIGh0dHA6Ly9saW51eC1rdm0ub3JnCit1bWwvCisJLSBVc2VyIE1vZGUgTGludXgsIGJ1aWxkcy9ydW5zIExpbnV4IGtlcm5lbCBhcyBhIHVzZXJzcGFjZSBwcm9ncmFtLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVlOWYyYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vMDAtSU5ERVgKQEAgLTAsMCArMSwyNiBAQAorMDAtSU5ERVgKKwktIHRoaXMgZmlsZS4KK2FwaS50eHQKKwktIEtWTSB1c2Vyc3BhY2UgQVBJLgorY3B1aWQudHh0CisJLSBLVk0tc3BlY2lmaWMgY3B1aWQgbGVhdmVzICh4ODYpLgorZGV2aWNlcy8KKwktIEtWTV9DQVBfREVWSUNFX0NUUkwgdXNlcnNwYWNlIEFQSS4KK2h5cGVyY2FsbHMudHh0CisJLSBLVk0gaHlwZXJjYWxscy4KK2xvY2tpbmcudHh0CisJLSBub3RlcyBvbiBLVk0gbG9ja3MuCittbXUudHh0CisJLSB0aGUgeDg2IGt2bSBzaGFkb3cgbW11LgorbXNyLnR4dAorCS0gS1ZNLXNwZWNpZmljIE1TUnMgKHg4NikuCituZXN0ZWQtdm14LnR4dAorCS0gbm90ZXMgb24gbmVzdGVkIHZpcnR1YWxpemF0aW9uIGZvciBJbnRlbCB4ODYgcHJvY2Vzc29ycy4KK3BwYy1wdi50eHQKKwktIHRoZSBwYXJhdmlydHVhbGl6YXRpb24gaW50ZXJmYWNlIG9uIFBvd2VyUEMuCityZXZpZXctY2hlY2tsaXN0LnR4dAorCS0gcmV2aWV3IGNoZWNrbGlzdCBmb3IgS1ZNIHBhdGNoZXMuCitzMzkwLWRpYWcudHh0CisJLSBEaWFnbm9zZSBoeXBlcmNhbGwgZGVzY3JpcHRpb24gKGZvciBJQk0gUy8zOTApCit0aW1la2VlcGluZy50eHQKKwktIHRpbWVrZWVwaW5nIHZpcnR1YWxpemF0aW9uIGZvciB4ODYtYmFzZWQgYXJjaGl0ZWN0dXJlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vYXBpLnR4dCBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vYXBpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjhhYjRmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9hcGkudHh0CkBAIC0wLDAgKzEsMzY4OCBAQAorVGhlIERlZmluaXRpdmUgS1ZNIChLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lKSBBUEkgRG9jdW1lbnRhdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisxLiBHZW5lcmFsIGRlc2NyaXB0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBrdm0gQVBJIGlzIGEgc2V0IG9mIGlvY3RscyB0aGF0IGFyZSBpc3N1ZWQgdG8gY29udHJvbCB2YXJpb3VzIGFzcGVjdHMKK29mIGEgdmlydHVhbCBtYWNoaW5lLiAgVGhlIGlvY3RscyBiZWxvbmcgdG8gdGhyZWUgY2xhc3NlcworCisgLSBTeXN0ZW0gaW9jdGxzOiBUaGVzZSBxdWVyeSBhbmQgc2V0IGdsb2JhbCBhdHRyaWJ1dGVzIHdoaWNoIGFmZmVjdCB0aGUKKyAgIHdob2xlIGt2bSBzdWJzeXN0ZW0uICBJbiBhZGRpdGlvbiBhIHN5c3RlbSBpb2N0bCBpcyB1c2VkIHRvIGNyZWF0ZQorICAgdmlydHVhbCBtYWNoaW5lcworCisgLSBWTSBpb2N0bHM6IFRoZXNlIHF1ZXJ5IGFuZCBzZXQgYXR0cmlidXRlcyB0aGF0IGFmZmVjdCBhbiBlbnRpcmUgdmlydHVhbAorICAgbWFjaGluZSwgZm9yIGV4YW1wbGUgbWVtb3J5IGxheW91dC4gIEluIGFkZGl0aW9uIGEgVk0gaW9jdGwgaXMgdXNlZCB0bworICAgY3JlYXRlIHZpcnR1YWwgY3B1cyAodmNwdXMpLgorCisgICBPbmx5IHJ1biBWTSBpb2N0bHMgZnJvbSB0aGUgc2FtZSBwcm9jZXNzIChhZGRyZXNzIHNwYWNlKSB0aGF0IHdhcyB1c2VkCisgICB0byBjcmVhdGUgdGhlIFZNLgorCisgLSB2Y3B1IGlvY3RsczogVGhlc2UgcXVlcnkgYW5kIHNldCBhdHRyaWJ1dGVzIHRoYXQgY29udHJvbCB0aGUgb3BlcmF0aW9uCisgICBvZiBhIHNpbmdsZSB2aXJ0dWFsIGNwdS4KKworICAgT25seSBydW4gdmNwdSBpb2N0bHMgZnJvbSB0aGUgc2FtZSB0aHJlYWQgdGhhdCB3YXMgdXNlZCB0byBjcmVhdGUgdGhlCisgICB2Y3B1LgorCisKKzIuIEZpbGUgZGVzY3JpcHRvcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGt2bSBBUEkgaXMgY2VudGVyZWQgYXJvdW5kIGZpbGUgZGVzY3JpcHRvcnMuICBBbiBpbml0aWFsCitvcGVuKCIvZGV2L2t2bSIpIG9idGFpbnMgYSBoYW5kbGUgdG8gdGhlIGt2bSBzdWJzeXN0ZW07IHRoaXMgaGFuZGxlCitjYW4gYmUgdXNlZCB0byBpc3N1ZSBzeXN0ZW0gaW9jdGxzLiAgQSBLVk1fQ1JFQVRFX1ZNIGlvY3RsIG9uIHRoaXMKK2hhbmRsZSB3aWxsIGNyZWF0ZSBhIFZNIGZpbGUgZGVzY3JpcHRvciB3aGljaCBjYW4gYmUgdXNlZCB0byBpc3N1ZSBWTQoraW9jdGxzLiAgQSBLVk1fQ1JFQVRFX1ZDUFUgaW9jdGwgb24gYSBWTSBmZCB3aWxsIGNyZWF0ZSBhIHZpcnR1YWwgY3B1CithbmQgcmV0dXJuIGEgZmlsZSBkZXNjcmlwdG9yIHBvaW50aW5nIHRvIGl0LiAgRmluYWxseSwgaW9jdGxzIG9uIGEgdmNwdQorZmQgY2FuIGJlIHVzZWQgdG8gY29udHJvbCB0aGUgdmNwdSwgaW5jbHVkaW5nIHRoZSBpbXBvcnRhbnQgdGFzayBvZgorYWN0dWFsbHkgcnVubmluZyBndWVzdCBjb2RlLgorCitJbiBnZW5lcmFsIGZpbGUgZGVzY3JpcHRvcnMgY2FuIGJlIG1pZ3JhdGVkIGFtb25nIHByb2Nlc3NlcyBieSBtZWFucworb2YgZm9yaygpIGFuZCB0aGUgU0NNX1JJR0hUUyBmYWNpbGl0eSBvZiB1bml4IGRvbWFpbiBzb2NrZXQuICBUaGVzZQora2luZHMgb2YgdHJpY2tzIGFyZSBleHBsaWNpdGx5IG5vdCBzdXBwb3J0ZWQgYnkga3ZtLiAgV2hpbGUgdGhleSB3aWxsCitub3QgY2F1c2UgaGFybSB0byB0aGUgaG9zdCwgdGhlaXIgYWN0dWFsIGJlaGF2aW9yIGlzIG5vdCBndWFyYW50ZWVkIGJ5Cit0aGUgQVBJLiAgVGhlIG9ubHkgc3VwcG9ydGVkIHVzZSBpcyBvbmUgdmlydHVhbCBtYWNoaW5lIHBlciBwcm9jZXNzLAorYW5kIG9uZSB2Y3B1IHBlciB0aHJlYWQuCisKKworMy4gRXh0ZW5zaW9ucworLS0tLS0tLS0tLS0tLQorCitBcyBvZiBMaW51eCAyLjYuMjIsIHRoZSBLVk0gQUJJIGhhcyBiZWVuIHN0YWJpbGl6ZWQ6IG5vIGJhY2t3YXJkCitpbmNvbXBhdGlibGUgY2hhbmdlIGFyZSBhbGxvd2VkLiAgSG93ZXZlciwgdGhlcmUgaXMgYW4gZXh0ZW5zaW9uCitmYWNpbGl0eSB0aGF0IGFsbG93cyBiYWNrd2FyZC1jb21wYXRpYmxlIGV4dGVuc2lvbnMgdG8gdGhlIEFQSSB0byBiZQorcXVlcmllZCBhbmQgdXNlZC4KKworVGhlIGV4dGVuc2lvbiBtZWNoYW5pc20gaXMgbm90IGJhc2VkIG9uIHRoZSBMaW51eCB2ZXJzaW9uIG51bWJlci4KK0luc3RlYWQsIGt2bSBkZWZpbmVzIGV4dGVuc2lvbiBpZGVudGlmaWVycyBhbmQgYSBmYWNpbGl0eSB0byBxdWVyeQord2hldGhlciBhIHBhcnRpY3VsYXIgZXh0ZW5zaW9uIGlkZW50aWZpZXIgaXMgYXZhaWxhYmxlLiAgSWYgaXQgaXMsIGEKK3NldCBvZiBpb2N0bHMgaXMgYXZhaWxhYmxlIGZvciBhcHBsaWNhdGlvbiB1c2UuCisKKworNC4gQVBJIGRlc2NyaXB0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBpb2N0bHMgdGhhdCBjYW4gYmUgdXNlZCB0byBjb250cm9sIGt2bSBndWVzdHMuCitGb3IgZWFjaCBpb2N0bCwgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBwcm92aWRlZCBhbG9uZyB3aXRoIGEKK2Rlc2NyaXB0aW9uOgorCisgIENhcGFiaWxpdHk6IHdoaWNoIEtWTSBleHRlbnNpb24gcHJvdmlkZXMgdGhpcyBpb2N0bC4gIENhbiBiZSAnYmFzaWMnLAorICAgICAgd2hpY2ggbWVhbnMgdGhhdCBpcyB3aWxsIGJlIHByb3ZpZGVkIGJ5IGFueSBrZXJuZWwgdGhhdCBzdXBwb3J0cworICAgICAgQVBJIHZlcnNpb24gMTIgKHNlZSBzZWN0aW9uIDQuMSksIGEgS1ZNX0NBUF94eXogY29uc3RhbnQsIHdoaWNoCisgICAgICBtZWFucyBhdmFpbGFiaWxpdHkgbmVlZHMgdG8gYmUgY2hlY2tlZCB3aXRoIEtWTV9DSEVDS19FWFRFTlNJT04KKyAgICAgIChzZWUgc2VjdGlvbiA0LjQpLCBvciAnbm9uZScgd2hpY2ggbWVhbnMgdGhhdCB3aGlsZSBub3QgYWxsIGtlcm5lbHMKKyAgICAgIHN1cHBvcnQgdGhpcyBpb2N0bCwgdGhlcmUncyBubyBjYXBhYmlsaXR5IGJpdCB0byBjaGVjayBpdHMKKyAgICAgIGF2YWlsYWJpbGl0eTogZm9yIGtlcm5lbHMgdGhhdCBkb24ndCBzdXBwb3J0IHRoZSBpb2N0bCwKKyAgICAgIHRoZSBpb2N0bCByZXR1cm5zIC1FTk9UVFkuCisKKyAgQXJjaGl0ZWN0dXJlczogd2hpY2ggaW5zdHJ1Y3Rpb24gc2V0IGFyY2hpdGVjdHVyZXMgcHJvdmlkZSB0aGlzIGlvY3RsLgorICAgICAgeDg2IGluY2x1ZGVzIGJvdGggaTM4NiBhbmQgeDg2XzY0LgorCisgIFR5cGU6IHN5c3RlbSwgdm0sIG9yIHZjcHUuCisKKyAgUGFyYW1ldGVyczogd2hhdCBwYXJhbWV0ZXJzIGFyZSBhY2NlcHRlZCBieSB0aGUgaW9jdGwuCisKKyAgUmV0dXJuczogdGhlIHJldHVybiB2YWx1ZS4gIEdlbmVyYWwgZXJyb3IgbnVtYmVycyAoRUJBREYsIEVOT01FTSwgRUlOVkFMKQorICAgICAgYXJlIG5vdCBkZXRhaWxlZCwgYnV0IGVycm9ycyB3aXRoIHNwZWNpZmljIG1lYW5pbmdzIGFyZS4KKworCis0LjEgS1ZNX0dFVF9BUElfVkVSU0lPTgorCitDYXBhYmlsaXR5OiBiYXNpYworQXJjaGl0ZWN0dXJlczogYWxsCitUeXBlOiBzeXN0ZW0gaW9jdGwKK1BhcmFtZXRlcnM6IG5vbmUKK1JldHVybnM6IHRoZSBjb25zdGFudCBLVk1fQVBJX1ZFUlNJT04gKD0xMikKKworVGhpcyBpZGVudGlmaWVzIHRoZSBBUEkgdmVyc2lvbiBhcyB0aGUgc3RhYmxlIGt2bSBBUEkuIEl0IGlzIG5vdAorZXhwZWN0ZWQgdGhhdCB0aGlzIG51bWJlciB3aWxsIGNoYW5nZS4gIEhvd2V2ZXIsIExpbnV4IDIuNi4yMCBhbmQKKzIuNi4yMSByZXBvcnQgZWFybGllciB2ZXJzaW9uczsgdGhlc2UgYXJlIG5vdCBkb2N1bWVudGVkIGFuZCBub3QKK3N1cHBvcnRlZC4gIEFwcGxpY2F0aW9ucyBzaG91bGQgcmVmdXNlIHRvIHJ1biBpZiBLVk1fR0VUX0FQSV9WRVJTSU9OCityZXR1cm5zIGEgdmFsdWUgb3RoZXIgdGhhbiAxMi4gIElmIHRoaXMgY2hlY2sgcGFzc2VzLCBhbGwgaW9jdGxzCitkZXNjcmliZWQgYXMgJ2Jhc2ljJyB3aWxsIGJlIGF2YWlsYWJsZS4KKworCis0LjIgS1ZNX0NSRUFURV9WTQorCitDYXBhYmlsaXR5OiBiYXNpYworQXJjaGl0ZWN0dXJlczogYWxsCitUeXBlOiBzeXN0ZW0gaW9jdGwKK1BhcmFtZXRlcnM6IG1hY2hpbmUgdHlwZSBpZGVudGlmaWVyIChLVk1fVk1fKikKK1JldHVybnM6IGEgVk0gZmQgdGhhdCBjYW4gYmUgdXNlZCB0byBjb250cm9sIHRoZSBuZXcgdmlydHVhbCBtYWNoaW5lLgorCitUaGUgbmV3IFZNIGhhcyBubyB2aXJ0dWFsIGNwdXMgYW5kIG5vIG1lbW9yeS4gIEFuIG1tYXAoKSBvZiBhIFZNIGZkCit3aWxsIGFjY2VzcyB0aGUgdmlydHVhbCBtYWNoaW5lJ3MgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZTsgb2Zmc2V0IHplcm8KK2NvcnJlc3BvbmRzIHRvIGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3MgemVyby4gIFVzZSBvZiBtbWFwKCkgb24gYSBWTSBmZAoraXMgZGlzY291cmFnZWQgaWYgdXNlcnNwYWNlIG1lbW9yeSBhbGxvY2F0aW9uIChLVk1fQ0FQX1VTRVJfTUVNT1JZKSBpcworYXZhaWxhYmxlLgorWW91IG1vc3QgY2VydGFpbmx5IHdhbnQgdG8gdXNlIDAgYXMgbWFjaGluZSB0eXBlLgorCitJbiBvcmRlciB0byBjcmVhdGUgdXNlciBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXMgb24gUzM5MCwgY2hlY2sKK0tWTV9DQVBfUzM5MF9VQ09OVFJPTCBhbmQgdXNlIHRoZSBmbGFnIEtWTV9WTV9TMzkwX1VDT05UUk9MIGFzCitwcml2aWxlZ2VkIHVzZXIgKENBUF9TWVNfQURNSU4pLgorCisKKzQuMyBLVk1fR0VUX01TUl9JTkRFWF9MSVNUCisKK0NhcGFiaWxpdHk6IGJhc2ljCitBcmNoaXRlY3R1cmVzOiB4ODYKK1R5cGU6IHN5c3RlbQorUGFyYW1ldGVyczogc3RydWN0IGt2bV9tc3JfbGlzdCAoaW4vb3V0KQorUmV0dXJuczogMCBvbiBzdWNjZXNzOyAtMSBvbiBlcnJvcgorRXJyb3JzOgorICBFMkJJRzogICAgIHRoZSBtc3IgaW5kZXggbGlzdCBpcyB0byBiZSB0byBmaXQgaW4gdGhlIGFycmF5IHNwZWNpZmllZCBieQorICAgICAgICAgICAgIHRoZSB1c2VyLgorCitzdHJ1Y3Qga3ZtX21zcl9saXN0IHsKKwlfX3UzMiBubXNyczsgLyogbnVtYmVyIG9mIG1zcnMgaW4gZW50cmllcyAqLworCV9fdTMyIGluZGljZXNbMF07Cit9OworCitUaGlzIGlvY3RsIHJldHVybnMgdGhlIGd1ZXN0IG1zcnMgdGhhdCBhcmUgc3VwcG9ydGVkLiAgVGhlIGxpc3QgdmFyaWVzCitieSBrdm0gdmVyc2lvbiBhbmQgaG9zdCBwcm9jZXNzb3IsIGJ1dCBkb2VzIG5vdCBjaGFuZ2Ugb3RoZXJ3aXNlLiAgVGhlCit1c2VyIGZpbGxzIGluIHRoZSBzaXplIG9mIHRoZSBpbmRpY2VzIGFycmF5IGluIG5tc3JzLCBhbmQgaW4gcmV0dXJuCitrdm0gYWRqdXN0cyBubXNycyB0byByZWZsZWN0IHRoZSBhY3R1YWwgbnVtYmVyIG9mIG1zcnMgYW5kIGZpbGxzIGluCit0aGUgaW5kaWNlcyBhcnJheSB3aXRoIHRoZWlyIG51bWJlcnMuCisKK05vdGU6IGlmIGt2bSBpbmRpY2F0ZXMgc3VwcG9ydHMgTUNFIChLVk1fQ0FQX01DRSksIHRoZW4gdGhlIE1DRSBiYW5rIE1TUnMgYXJlCitub3QgcmV0dXJuZWQgaW4gdGhlIE1TUiBsaXN0LCBhcyBkaWZmZXJlbnQgdmNwdXMgY2FuIGhhdmUgYSBkaWZmZXJlbnQgbnVtYmVyCitvZiBiYW5rcywgYXMgc2V0IHZpYSB0aGUgS1ZNX1g4Nl9TRVRVUF9NQ0UgaW9jdGwuCisKKworNC40IEtWTV9DSEVDS19FWFRFTlNJT04KKworQ2FwYWJpbGl0eTogYmFzaWMsIEtWTV9DQVBfQ0hFQ0tfRVhURU5TSU9OX1ZNIGZvciB2bSBpb2N0bAorQXJjaGl0ZWN0dXJlczogYWxsCitUeXBlOiBzeXN0ZW0gaW9jdGwsIHZtIGlvY3RsCitQYXJhbWV0ZXJzOiBleHRlbnNpb24gaWRlbnRpZmllciAoS1ZNX0NBUF8qKQorUmV0dXJuczogMCBpZiB1bnN1cHBvcnRlZDsgMSAob3Igc29tZSBvdGhlciBwb3NpdGl2ZSBpbnRlZ2VyKSBpZiBzdXBwb3J0ZWQKKworVGhlIEFQSSBhbGxvd3MgdGhlIGFwcGxpY2F0aW9uIHRvIHF1ZXJ5IGFib3V0IGV4dGVuc2lvbnMgdG8gdGhlIGNvcmUKK2t2bSBBUEkuICBVc2Vyc3BhY2UgcGFzc2VzIGFuIGV4dGVuc2lvbiBpZGVudGlmaWVyIChhbiBpbnRlZ2VyKSBhbmQKK3JlY2VpdmVzIGFuIGludGVnZXIgdGhhdCBkZXNjcmliZXMgdGhlIGV4dGVuc2lvbiBhdmFpbGFiaWxpdHkuCitHZW5lcmFsbHkgMCBtZWFucyBubyBhbmQgMSBtZWFucyB5ZXMsIGJ1dCBzb21lIGV4dGVuc2lvbnMgbWF5IHJlcG9ydAorYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBpbiB0aGUgaW50ZWdlciByZXR1cm4gdmFsdWUuCisKK0Jhc2VkIG9uIHRoZWlyIGluaXRpYWxpemF0aW9uIGRpZmZlcmVudCBWTXMgbWF5IGhhdmUgZGlmZmVyZW50IGNhcGFiaWxpdGllcy4KK0l0IGlzIHRodXMgZW5jb3VyYWdlZCB0byB1c2UgdGhlIHZtIGlvY3RsIHRvIHF1ZXJ5IGZvciBjYXBhYmlsaXRpZXMgKGF2YWlsYWJsZQord2l0aCBLVk1fQ0FQX0NIRUNLX0VYVEVOU0lPTl9WTSBvbiB0aGUgdm0gZmQpCisKKzQuNSBLVk1fR0VUX1ZDUFVfTU1BUF9TSVpFCisKK0NhcGFiaWxpdHk6IGJhc2ljCitBcmNoaXRlY3R1cmVzOiBhbGwKK1R5cGU6IHN5c3RlbSBpb2N0bAorUGFyYW1ldGVyczogbm9uZQorUmV0dXJuczogc2l6ZSBvZiB2Y3B1IG1tYXAgYXJlYSwgaW4gYnl0ZXMKKworVGhlIEtWTV9SVU4gaW9jdGwgKGNmLikgY29tbXVuaWNhdGVzIHdpdGggdXNlcnNwYWNlIHZpYSBhIHNoYXJlZAorbWVtb3J5IHJlZ2lvbi4gIFRoaXMgaW9jdGwgcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGF0IHJlZ2lvbi4gIFNlZSB0aGUKK0tWTV9SVU4gZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KKworCis0LjYgS1ZNX1NFVF9NRU1PUllfUkVHSU9OCisKK0NhcGFiaWxpdHk6IGJhc2ljCitBcmNoaXRlY3R1cmVzOiBhbGwKK1R5cGU6IHZtIGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX21lbW9yeV9yZWdpb24gKGluKQorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCitUaGlzIGlvY3RsIGlzIG9ic29sZXRlIGFuZCBoYXMgYmVlbiByZW1vdmVkLgorCisKKzQuNyBLVk1fQ1JFQVRFX1ZDUFUKKworQ2FwYWJpbGl0eTogYmFzaWMKK0FyY2hpdGVjdHVyZXM6IGFsbAorVHlwZTogdm0gaW9jdGwKK1BhcmFtZXRlcnM6IHZjcHUgaWQgKGFwaWMgaWQgb24geDg2KQorUmV0dXJuczogdmNwdSBmZCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCitUaGlzIEFQSSBhZGRzIGEgdmNwdSB0byBhIHZpcnR1YWwgbWFjaGluZS4gIFRoZSB2Y3B1IGlkIGlzIGEgc21hbGwgaW50ZWdlcgoraW4gdGhlIHJhbmdlIFswLCBtYXhfdmNwdXMpLgorCitUaGUgcmVjb21tZW5kZWQgbWF4X3ZjcHVzIHZhbHVlIGNhbiBiZSByZXRyaWV2ZWQgdXNpbmcgdGhlIEtWTV9DQVBfTlJfVkNQVVMgb2YKK3RoZSBLVk1fQ0hFQ0tfRVhURU5TSU9OIGlvY3RsKCkgYXQgcnVuLXRpbWUuCitUaGUgbWF4aW11bSBwb3NzaWJsZSB2YWx1ZSBmb3IgbWF4X3ZjcHVzIGNhbiBiZSByZXRyaWV2ZWQgdXNpbmcgdGhlCitLVk1fQ0FQX01BWF9WQ1BVUyBvZiB0aGUgS1ZNX0NIRUNLX0VYVEVOU0lPTiBpb2N0bCgpIGF0IHJ1bi10aW1lLgorCitJZiB0aGUgS1ZNX0NBUF9OUl9WQ1BVUyBkb2VzIG5vdCBleGlzdCwgeW91IHNob3VsZCBhc3N1bWUgdGhhdCBtYXhfdmNwdXMgaXMgNAorY3B1cyBtYXguCitJZiB0aGUgS1ZNX0NBUF9NQVhfVkNQVVMgZG9lcyBub3QgZXhpc3QsIHlvdSBzaG91bGQgYXNzdW1lIHRoYXQgbWF4X3ZjcHVzIGlzCitzYW1lIGFzIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIEtWTV9DQVBfTlJfVkNQVVMuCisKK09uIHBvd2VycGMgdXNpbmcgYm9vazNzX2h2IG1vZGUsIHRoZSB2Y3B1cyBhcmUgbWFwcGVkIG9udG8gdmlydHVhbAordGhyZWFkcyBpbiBvbmUgb3IgbW9yZSB2aXJ0dWFsIENQVSBjb3Jlcy4gIChUaGlzIGlzIGJlY2F1c2UgdGhlCitoYXJkd2FyZSByZXF1aXJlcyBhbGwgdGhlIGhhcmR3YXJlIHRocmVhZHMgaW4gYSBDUFUgY29yZSB0byBiZSBpbiB0aGUKK3NhbWUgcGFydGl0aW9uLikgIFRoZSBLVk1fQ0FQX1BQQ19TTVQgY2FwYWJpbGl0eSBpbmRpY2F0ZXMgdGhlIG51bWJlcgorb2YgdmNwdXMgcGVyIHZpcnR1YWwgY29yZSAodmNvcmUpLiAgVGhlIHZjb3JlIGlkIGlzIG9idGFpbmVkIGJ5CitkaXZpZGluZyB0aGUgdmNwdSBpZCBieSB0aGUgbnVtYmVyIG9mIHZjcHVzIHBlciB2Y29yZS4gIFRoZSB2Y3B1cyBpbiBhCitnaXZlbiB2Y29yZSB3aWxsIGFsd2F5cyBiZSBpbiB0aGUgc2FtZSBwaHlzaWNhbCBjb3JlIGFzIGVhY2ggb3RoZXIKKyh0aG91Z2ggdGhhdCBtaWdodCBiZSBhIGRpZmZlcmVudCBwaHlzaWNhbCBjb3JlIGZyb20gdGltZSB0byB0aW1lKS4KK1VzZXJzcGFjZSBjYW4gY29udHJvbCB0aGUgdGhyZWFkaW5nIChTTVQpIG1vZGUgb2YgdGhlIGd1ZXN0IGJ5IGl0cworYWxsb2NhdGlvbiBvZiB2Y3B1IGlkcy4gIEZvciBleGFtcGxlLCBpZiB1c2Vyc3BhY2Ugd2FudHMKK3NpbmdsZS10aHJlYWRlZCBndWVzdCB2Y3B1cywgaXQgc2hvdWxkIG1ha2UgYWxsIHZjcHUgaWRzIGJlIGEgbXVsdGlwbGUKK29mIHRoZSBudW1iZXIgb2YgdmNwdXMgcGVyIHZjb3JlLgorCitGb3IgdmlydHVhbCBjcHVzIHRoYXQgaGF2ZSBiZWVuIGNyZWF0ZWQgd2l0aCBTMzkwIHVzZXIgY29udHJvbGxlZCB2aXJ0dWFsCittYWNoaW5lcywgdGhlIHJlc3VsdGluZyB2Y3B1IGZkIGNhbiBiZSBtZW1vcnkgbWFwcGVkIGF0IHBhZ2Ugb2Zmc2V0CitLVk1fUzM5MF9TSUVfUEFHRV9PRkZTRVQgaW4gb3JkZXIgdG8gb2J0YWluIGEgbWVtb3J5IG1hcCBvZiB0aGUgdmlydHVhbAorY3B1J3MgaGFyZHdhcmUgY29udHJvbCBibG9jay4KKworCis0LjggS1ZNX0dFVF9ESVJUWV9MT0cgKHZtIGlvY3RsKQorCitDYXBhYmlsaXR5OiBiYXNpYworQXJjaGl0ZWN0dXJlczogeDg2CitUeXBlOiB2bSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9kaXJ0eV9sb2cgKGluL291dCkKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworLyogZm9yIEtWTV9HRVRfRElSVFlfTE9HICovCitzdHJ1Y3Qga3ZtX2RpcnR5X2xvZyB7CisJX191MzIgc2xvdDsKKwlfX3UzMiBwYWRkaW5nOworCXVuaW9uIHsKKwkJdm9pZCBfX3VzZXIgKmRpcnR5X2JpdG1hcDsgLyogb25lIGJpdCBwZXIgcGFnZSAqLworCQlfX3U2NCBwYWRkaW5nOworCX07Cit9OworCitHaXZlbiBhIG1lbW9yeSBzbG90LCByZXR1cm4gYSBiaXRtYXAgY29udGFpbmluZyBhbnkgcGFnZXMgZGlydGllZAorc2luY2UgdGhlIGxhc3QgY2FsbCB0byB0aGlzIGlvY3RsLiAgQml0IDAgaXMgdGhlIGZpcnN0IHBhZ2UgaW4gdGhlCittZW1vcnkgc2xvdC4gIEVuc3VyZSB0aGUgZW50aXJlIHN0cnVjdHVyZSBpcyBjbGVhcmVkIHRvIGF2b2lkIHBhZGRpbmcKK2lzc3Vlcy4KKworSWYgS1ZNX0NBUF9NVUxUSV9BRERSRVNTX1NQQUNFIGlzIGF2YWlsYWJsZSwgYml0cyAxNi0zMSBzcGVjaWZpZXMKK3RoZSBhZGRyZXNzIHNwYWNlIGZvciB3aGljaCB5b3Ugd2FudCB0byByZXR1cm4gdGhlIGRpcnR5IGJpdG1hcC4KK1RoZXkgbXVzdCBiZSBsZXNzIHRoYW4gdGhlIHZhbHVlIHRoYXQgS1ZNX0NIRUNLX0VYVEVOU0lPTiByZXR1cm5zIGZvcgordGhlIEtWTV9DQVBfTVVMVElfQUREUkVTU19TUEFDRSBjYXBhYmlsaXR5LgorCisKKzQuOSBLVk1fU0VUX01FTU9SWV9BTElBUworCitDYXBhYmlsaXR5OiBiYXNpYworQXJjaGl0ZWN0dXJlczogeDg2CitUeXBlOiB2bSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9tZW1vcnlfYWxpYXMgKGluKQorUmV0dXJuczogMCAoc3VjY2VzcyksIC0xIChlcnJvcikKKworVGhpcyBpb2N0bCBpcyBvYnNvbGV0ZSBhbmQgaGFzIGJlZW4gcmVtb3ZlZC4KKworCis0LjEwIEtWTV9SVU4KKworQ2FwYWJpbGl0eTogYmFzaWMKK0FyY2hpdGVjdHVyZXM6IGFsbAorVHlwZTogdmNwdSBpb2N0bAorUGFyYW1ldGVyczogbm9uZQorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorRXJyb3JzOgorICBFSU5UUjogICAgIGFuIHVubWFza2VkIHNpZ25hbCBpcyBwZW5kaW5nCisKK1RoaXMgaW9jdGwgaXMgdXNlZCB0byBydW4gYSBndWVzdCB2aXJ0dWFsIGNwdS4gIFdoaWxlIHRoZXJlIGFyZSBubworZXhwbGljaXQgcGFyYW1ldGVycywgdGhlcmUgaXMgYW4gaW1wbGljaXQgcGFyYW1ldGVyIGJsb2NrIHRoYXQgY2FuIGJlCitvYnRhaW5lZCBieSBtbWFwKClpbmcgdGhlIHZjcHUgZmQgYXQgb2Zmc2V0IDAsIHdpdGggdGhlIHNpemUgZ2l2ZW4gYnkKK0tWTV9HRVRfVkNQVV9NTUFQX1NJWkUuICBUaGUgcGFyYW1ldGVyIGJsb2NrIGlzIGZvcm1hdHRlZCBhcyBhICdzdHJ1Y3QKK2t2bV9ydW4nIChzZWUgYmVsb3cpLgorCisKKzQuMTEgS1ZNX0dFVF9SRUdTCisKK0NhcGFiaWxpdHk6IGJhc2ljCitBcmNoaXRlY3R1cmVzOiBhbGwgZXhjZXB0IEFSTSwgYXJtNjQKK1R5cGU6IHZjcHUgaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1fcmVncyAob3V0KQorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCitSZWFkcyB0aGUgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycyBmcm9tIHRoZSB2Y3B1LgorCisvKiB4ODYgKi8KK3N0cnVjdCBrdm1fcmVncyB7CisJLyogb3V0IChLVk1fR0VUX1JFR1MpIC8gaW4gKEtWTV9TRVRfUkVHUykgKi8KKwlfX3U2NCByYXgsIHJieCwgcmN4LCByZHg7CisJX191NjQgcnNpLCByZGksIHJzcCwgcmJwOworCV9fdTY0IHI4LCAgcjksICByMTAsIHIxMTsKKwlfX3U2NCByMTIsIHIxMywgcjE0LCByMTU7CisJX191NjQgcmlwLCByZmxhZ3M7Cit9OworCisvKiBtaXBzICovCitzdHJ1Y3Qga3ZtX3JlZ3MgeworCS8qIG91dCAoS1ZNX0dFVF9SRUdTKSAvIGluIChLVk1fU0VUX1JFR1MpICovCisJX191NjQgZ3ByWzMyXTsKKwlfX3U2NCBoaTsKKwlfX3U2NCBsbzsKKwlfX3U2NCBwYzsKK307CisKKworNC4xMiBLVk1fU0VUX1JFR1MKKworQ2FwYWJpbGl0eTogYmFzaWMKK0FyY2hpdGVjdHVyZXM6IGFsbCBleGNlcHQgQVJNLCBhcm02NAorVHlwZTogdmNwdSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9yZWdzIChpbikKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworV3JpdGVzIHRoZSBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXJzIGludG8gdGhlIHZjcHUuCisKK1NlZSBLVk1fR0VUX1JFR1MgZm9yIHRoZSBkYXRhIHN0cnVjdHVyZS4KKworCis0LjEzIEtWTV9HRVRfU1JFR1MKKworQ2FwYWJpbGl0eTogYmFzaWMKK0FyY2hpdGVjdHVyZXM6IHg4NiwgcHBjCitUeXBlOiB2Y3B1IGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX3NyZWdzIChvdXQpCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yCisKK1JlYWRzIHNwZWNpYWwgcmVnaXN0ZXJzIGZyb20gdGhlIHZjcHUuCisKKy8qIHg4NiAqLworc3RydWN0IGt2bV9zcmVncyB7CisJc3RydWN0IGt2bV9zZWdtZW50IGNzLCBkcywgZXMsIGZzLCBncywgc3M7CisJc3RydWN0IGt2bV9zZWdtZW50IHRyLCBsZHQ7CisJc3RydWN0IGt2bV9kdGFibGUgZ2R0LCBpZHQ7CisJX191NjQgY3IwLCBjcjIsIGNyMywgY3I0LCBjcjg7CisJX191NjQgZWZlcjsKKwlfX3U2NCBhcGljX2Jhc2U7CisJX191NjQgaW50ZXJydXB0X2JpdG1hcFsoS1ZNX05SX0lOVEVSUlVQVFMgKyA2MykgLyA2NF07Cit9OworCisvKiBwcGMgLS0gc2VlIGFyY2gvcG93ZXJwYy9pbmNsdWRlL3VhcGkvYXNtL2t2bS5oICovCisKK2ludGVycnVwdF9iaXRtYXAgaXMgYSBiaXRtYXAgb2YgcGVuZGluZyBleHRlcm5hbCBpbnRlcnJ1cHRzLiAgQXQgbW9zdAorb25lIGJpdCBtYXkgYmUgc2V0LiAgVGhpcyBpbnRlcnJ1cHQgaGFzIGJlZW4gYWNrbm93bGVkZ2VkIGJ5IHRoZSBBUElDCitidXQgbm90IHlldCBpbmplY3RlZCBpbnRvIHRoZSBjcHUgY29yZS4KKworCis0LjE0IEtWTV9TRVRfU1JFR1MKKworQ2FwYWJpbGl0eTogYmFzaWMKK0FyY2hpdGVjdHVyZXM6IHg4NiwgcHBjCitUeXBlOiB2Y3B1IGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX3NyZWdzIChpbikKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworV3JpdGVzIHNwZWNpYWwgcmVnaXN0ZXJzIGludG8gdGhlIHZjcHUuICBTZWUgS1ZNX0dFVF9TUkVHUyBmb3IgdGhlCitkYXRhIHN0cnVjdHVyZXMuCisKKworNC4xNSBLVk1fVFJBTlNMQVRFCisKK0NhcGFiaWxpdHk6IGJhc2ljCitBcmNoaXRlY3R1cmVzOiB4ODYKK1R5cGU6IHZjcHUgaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1fdHJhbnNsYXRpb24gKGluL291dCkKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworVHJhbnNsYXRlcyBhIHZpcnR1YWwgYWRkcmVzcyBhY2NvcmRpbmcgdG8gdGhlIHZjcHUncyBjdXJyZW50IGFkZHJlc3MKK3RyYW5zbGF0aW9uIG1vZGUuCisKK3N0cnVjdCBrdm1fdHJhbnNsYXRpb24geworCS8qIGluICovCisJX191NjQgbGluZWFyX2FkZHJlc3M7CisKKwkvKiBvdXQgKi8KKwlfX3U2NCBwaHlzaWNhbF9hZGRyZXNzOworCV9fdTggIHZhbGlkOworCV9fdTggIHdyaXRlYWJsZTsKKwlfX3U4ICB1c2VybW9kZTsKKwlfX3U4ICBwYWRbNV07Cit9OworCisKKzQuMTYgS1ZNX0lOVEVSUlVQVAorCitDYXBhYmlsaXR5OiBiYXNpYworQXJjaGl0ZWN0dXJlczogeDg2LCBwcGMsIG1pcHMKK1R5cGU6IHZjcHUgaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1faW50ZXJydXB0IChpbikKK1JldHVybnM6IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgb24gZmFpbHVyZS4KKworUXVldWVzIGEgaGFyZHdhcmUgaW50ZXJydXB0IHZlY3RvciB0byBiZSBpbmplY3RlZC4KKworLyogZm9yIEtWTV9JTlRFUlJVUFQgKi8KK3N0cnVjdCBrdm1faW50ZXJydXB0IHsKKwkvKiBpbiAqLworCV9fdTMyIGlycTsKK307CisKK1g4NjoKKworUmV0dXJuczogMCBvbiBzdWNjZXNzLAorCSAtRUVYSVNUIGlmIGFuIGludGVycnVwdCBpcyBhbHJlYWR5IGVucXVldWVkCisJIC1FSU5WQUwgdGhlIHRoZSBpcnEgbnVtYmVyIGlzIGludmFsaWQKKwkgLUVOWElPIGlmIHRoZSBQSUMgaXMgaW4gdGhlIGtlcm5lbAorCSAtRUZBVUxUIGlmIHRoZSBwb2ludGVyIGlzIGludmFsaWQKKworTm90ZSAnaXJxJyBpcyBhbiBpbnRlcnJ1cHQgdmVjdG9yLCBub3QgYW4gaW50ZXJydXB0IHBpbiBvciBsaW5lLiBUaGlzCitpb2N0bCBpcyB1c2VmdWwgaWYgdGhlIGluLWtlcm5lbCBQSUMgaXMgbm90IHVzZWQuCisKK1BQQzoKKworUXVldWVzIGFuIGV4dGVybmFsIGludGVycnVwdCB0byBiZSBpbmplY3RlZC4gVGhpcyBpb2N0bCBpcyBvdmVybGVhZGVkCit3aXRoIDMgZGlmZmVyZW50IGlycSB2YWx1ZXM6CisKK2EpIEtWTV9JTlRFUlJVUFRfU0VUCisKKyAgVGhpcyBpbmplY3RzIGFuIGVkZ2UgdHlwZSBleHRlcm5hbCBpbnRlcnJ1cHQgaW50byB0aGUgZ3Vlc3Qgb25jZSBpdCdzIHJlYWR5CisgIHRvIHJlY2VpdmUgaW50ZXJydXB0cy4gV2hlbiBpbmplY3RlZCwgdGhlIGludGVycnVwdCBpcyBkb25lLgorCitiKSBLVk1fSU5URVJSVVBUX1VOU0VUCisKKyAgVGhpcyB1bnNldHMgYW55IHBlbmRpbmcgaW50ZXJydXB0LgorCisgIE9ubHkgYXZhaWxhYmxlIHdpdGggS1ZNX0NBUF9QUENfVU5TRVRfSVJRLgorCitjKSBLVk1fSU5URVJSVVBUX1NFVF9MRVZFTAorCisgIFRoaXMgaW5qZWN0cyBhIGxldmVsIHR5cGUgZXh0ZXJuYWwgaW50ZXJydXB0IGludG8gdGhlIGd1ZXN0IGNvbnRleHQuIFRoZQorICBpbnRlcnJ1cHQgc3RheXMgcGVuZGluZyB1bnRpbCBhIHNwZWNpZmljIGlvY3RsIHdpdGggS1ZNX0lOVEVSUlVQVF9VTlNFVAorICBpcyB0cmlnZ2VyZWQuCisKKyAgT25seSBhdmFpbGFibGUgd2l0aCBLVk1fQ0FQX1BQQ19JUlFfTEVWRUwuCisKK05vdGUgdGhhdCBhbnkgdmFsdWUgZm9yICdpcnEnIG90aGVyIHRoYW4gdGhlIG9uZXMgc3RhdGVkIGFib3ZlIGlzIGludmFsaWQKK2FuZCBpbmN1cnMgdW5leHBlY3RlZCBiZWhhdmlvci4KKworTUlQUzoKKworUXVldWVzIGFuIGV4dGVybmFsIGludGVycnVwdCB0byBiZSBpbmplY3RlZCBpbnRvIHRoZSB2aXJ0dWFsIENQVS4gQSBuZWdhdGl2ZQoraW50ZXJydXB0IG51bWJlciBkZXF1ZXVlcyB0aGUgaW50ZXJydXB0LgorCisKKzQuMTcgS1ZNX0RFQlVHX0dVRVNUCisKK0NhcGFiaWxpdHk6IGJhc2ljCitBcmNoaXRlY3R1cmVzOiBub25lCitUeXBlOiB2Y3B1IGlvY3RsCitQYXJhbWV0ZXJzOiBub25lKQorUmV0dXJuczogLTEgb24gZXJyb3IKKworU3VwcG9ydCBmb3IgdGhpcyBoYXMgYmVlbiByZW1vdmVkLiAgVXNlIEtWTV9TRVRfR1VFU1RfREVCVUcgaW5zdGVhZC4KKworCis0LjE4IEtWTV9HRVRfTVNSUworCitDYXBhYmlsaXR5OiBiYXNpYworQXJjaGl0ZWN0dXJlczogeDg2CitUeXBlOiB2Y3B1IGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX21zcnMgKGluL291dCkKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworUmVhZHMgbW9kZWwtc3BlY2lmaWMgcmVnaXN0ZXJzIGZyb20gdGhlIHZjcHUuICBTdXBwb3J0ZWQgbXNyIGluZGljZXMgY2FuCitiZSBvYnRhaW5lZCB1c2luZyBLVk1fR0VUX01TUl9JTkRFWF9MSVNULgorCitzdHJ1Y3Qga3ZtX21zcnMgeworCV9fdTMyIG5tc3JzOyAvKiBudW1iZXIgb2YgbXNycyBpbiBlbnRyaWVzICovCisJX191MzIgcGFkOworCisJc3RydWN0IGt2bV9tc3JfZW50cnkgZW50cmllc1swXTsKK307CisKK3N0cnVjdCBrdm1fbXNyX2VudHJ5IHsKKwlfX3UzMiBpbmRleDsKKwlfX3UzMiByZXNlcnZlZDsKKwlfX3U2NCBkYXRhOworfTsKKworQXBwbGljYXRpb24gY29kZSBzaG91bGQgc2V0IHRoZSAnbm1zcnMnIG1lbWJlciAod2hpY2ggaW5kaWNhdGVzIHRoZQorc2l6ZSBvZiB0aGUgZW50cmllcyBhcnJheSkgYW5kIHRoZSAnaW5kZXgnIG1lbWJlciBvZiBlYWNoIGFycmF5IGVudHJ5Lgora3ZtIHdpbGwgZmlsbCBpbiB0aGUgJ2RhdGEnIG1lbWJlci4KKworCis0LjE5IEtWTV9TRVRfTVNSUworCitDYXBhYmlsaXR5OiBiYXNpYworQXJjaGl0ZWN0dXJlczogeDg2CitUeXBlOiB2Y3B1IGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX21zcnMgKGluKQorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCitXcml0ZXMgbW9kZWwtc3BlY2lmaWMgcmVnaXN0ZXJzIHRvIHRoZSB2Y3B1LiAgU2VlIEtWTV9HRVRfTVNSUyBmb3IgdGhlCitkYXRhIHN0cnVjdHVyZXMuCisKK0FwcGxpY2F0aW9uIGNvZGUgc2hvdWxkIHNldCB0aGUgJ25tc3JzJyBtZW1iZXIgKHdoaWNoIGluZGljYXRlcyB0aGUKK3NpemUgb2YgdGhlIGVudHJpZXMgYXJyYXkpLCBhbmQgdGhlICdpbmRleCcgYW5kICdkYXRhJyBtZW1iZXJzIG9mIGVhY2gKK2FycmF5IGVudHJ5LgorCisKKzQuMjAgS1ZNX1NFVF9DUFVJRAorCitDYXBhYmlsaXR5OiBiYXNpYworQXJjaGl0ZWN0dXJlczogeDg2CitUeXBlOiB2Y3B1IGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX2NwdWlkIChpbikKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworRGVmaW5lcyB0aGUgdmNwdSByZXNwb25zZXMgdG8gdGhlIGNwdWlkIGluc3RydWN0aW9uLiAgQXBwbGljYXRpb25zCitzaG91bGQgdXNlIHRoZSBLVk1fU0VUX0NQVUlEMiBpb2N0bCBpZiBhdmFpbGFibGUuCisKKworc3RydWN0IGt2bV9jcHVpZF9lbnRyeSB7CisJX191MzIgZnVuY3Rpb247CisJX191MzIgZWF4OworCV9fdTMyIGVieDsKKwlfX3UzMiBlY3g7CisJX191MzIgZWR4OworCV9fdTMyIHBhZGRpbmc7Cit9OworCisvKiBmb3IgS1ZNX1NFVF9DUFVJRCAqLworc3RydWN0IGt2bV9jcHVpZCB7CisJX191MzIgbmVudDsKKwlfX3UzMiBwYWRkaW5nOworCXN0cnVjdCBrdm1fY3B1aWRfZW50cnkgZW50cmllc1swXTsKK307CisKKworNC4yMSBLVk1fU0VUX1NJR05BTF9NQVNLCisKK0NhcGFiaWxpdHk6IGJhc2ljCitBcmNoaXRlY3R1cmVzOiBhbGwKK1R5cGU6IHZjcHUgaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1fc2lnbmFsX21hc2sgKGluKQorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCitEZWZpbmVzIHdoaWNoIHNpZ25hbHMgYXJlIGJsb2NrZWQgZHVyaW5nIGV4ZWN1dGlvbiBvZiBLVk1fUlVOLiAgVGhpcworc2lnbmFsIG1hc2sgdGVtcG9yYXJpbHkgb3ZlcnJpZGVzIHRoZSB0aHJlYWRzIHNpZ25hbCBtYXNrLiAgQW55Cit1bmJsb2NrZWQgc2lnbmFsIHJlY2VpdmVkIChleGNlcHQgU0lHS0lMTCBhbmQgU0lHU1RPUCwgd2hpY2ggcmV0YWluCit0aGVpciB0cmFkaXRpb25hbCBiZWhhdmlvdXIpIHdpbGwgY2F1c2UgS1ZNX1JVTiB0byByZXR1cm4gd2l0aCAtRUlOVFIuCisKK05vdGUgdGhlIHNpZ25hbCB3aWxsIG9ubHkgYmUgZGVsaXZlcmVkIGlmIG5vdCBibG9ja2VkIGJ5IHRoZSBvcmlnaW5hbAorc2lnbmFsIG1hc2suCisKKy8qIGZvciBLVk1fU0VUX1NJR05BTF9NQVNLICovCitzdHJ1Y3Qga3ZtX3NpZ25hbF9tYXNrIHsKKwlfX3UzMiBsZW47CisJX191OCAgc2lnc2V0WzBdOworfTsKKworCis0LjIyIEtWTV9HRVRfRlBVCisKK0NhcGFiaWxpdHk6IGJhc2ljCitBcmNoaXRlY3R1cmVzOiB4ODYKK1R5cGU6IHZjcHUgaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1fZnB1IChvdXQpCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yCisKK1JlYWRzIHRoZSBmbG9hdGluZyBwb2ludCBzdGF0ZSBmcm9tIHRoZSB2Y3B1LgorCisvKiBmb3IgS1ZNX0dFVF9GUFUgYW5kIEtWTV9TRVRfRlBVICovCitzdHJ1Y3Qga3ZtX2ZwdSB7CisJX191OCAgZnByWzhdWzE2XTsKKwlfX3UxNiBmY3c7CisJX191MTYgZnN3OworCV9fdTggIGZ0d3g7ICAvKiBpbiBmeHNhdmUgZm9ybWF0ICovCisJX191OCAgcGFkMTsKKwlfX3UxNiBsYXN0X29wY29kZTsKKwlfX3U2NCBsYXN0X2lwOworCV9fdTY0IGxhc3RfZHA7CisJX191OCAgeG1tWzE2XVsxNl07CisJX191MzIgbXhjc3I7CisJX191MzIgcGFkMjsKK307CisKKworNC4yMyBLVk1fU0VUX0ZQVQorCitDYXBhYmlsaXR5OiBiYXNpYworQXJjaGl0ZWN0dXJlczogeDg2CitUeXBlOiB2Y3B1IGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX2ZwdSAoaW4pCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yCisKK1dyaXRlcyB0aGUgZmxvYXRpbmcgcG9pbnQgc3RhdGUgdG8gdGhlIHZjcHUuCisKKy8qIGZvciBLVk1fR0VUX0ZQVSBhbmQgS1ZNX1NFVF9GUFUgKi8KK3N0cnVjdCBrdm1fZnB1IHsKKwlfX3U4ICBmcHJbOF1bMTZdOworCV9fdTE2IGZjdzsKKwlfX3UxNiBmc3c7CisJX191OCAgZnR3eDsgIC8qIGluIGZ4c2F2ZSBmb3JtYXQgKi8KKwlfX3U4ICBwYWQxOworCV9fdTE2IGxhc3Rfb3Bjb2RlOworCV9fdTY0IGxhc3RfaXA7CisJX191NjQgbGFzdF9kcDsKKwlfX3U4ICB4bW1bMTZdWzE2XTsKKwlfX3UzMiBteGNzcjsKKwlfX3UzMiBwYWQyOworfTsKKworCis0LjI0IEtWTV9DUkVBVEVfSVJRQ0hJUAorCitDYXBhYmlsaXR5OiBLVk1fQ0FQX0lSUUNISVAsIEtWTV9DQVBfUzM5MF9JUlFDSElQIChzMzkwKQorQXJjaGl0ZWN0dXJlczogeDg2LCBBUk0sIGFybTY0LCBzMzkwCitUeXBlOiB2bSBpb2N0bAorUGFyYW1ldGVyczogbm9uZQorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCitDcmVhdGVzIGFuIGludGVycnVwdCBjb250cm9sbGVyIG1vZGVsIGluIHRoZSBrZXJuZWwuCitPbiB4ODYsIGNyZWF0ZXMgYSB2aXJ0dWFsIGlvYXBpYywgYSB2aXJ0dWFsIFBJQyAodHdvIFBJQ3MsIG5lc3RlZCksIGFuZCBzZXRzIHVwCitmdXR1cmUgdmNwdXMgdG8gaGF2ZSBhIGxvY2FsIEFQSUMuICBJUlEgcm91dGluZyBmb3IgR1NJcyAwLTE1IGlzIHNldCB0byBib3RoCitQSUMgYW5kIElPQVBJQzsgR1NJIDE2LTIzIG9ubHkgZ28gdG8gdGhlIElPQVBJQy4KK09uIEFSTS9hcm02NCwgYSBHSUN2MiBpcyBjcmVhdGVkLiBBbnkgb3RoZXIgR0lDIHZlcnNpb25zIHJlcXVpcmUgdGhlIHVzYWdlIG9mCitLVk1fQ1JFQVRFX0RFVklDRSwgd2hpY2ggYWxzbyBzdXBwb3J0cyBjcmVhdGluZyBhIEdJQ3YyLiAgVXNpbmcKK0tWTV9DUkVBVEVfREVWSUNFIGlzIHByZWZlcnJlZCBvdmVyIEtWTV9DUkVBVEVfSVJRQ0hJUCBmb3IgR0lDdjIuCitPbiBzMzkwLCBhIGR1bW15IGlycSByb3V0aW5nIHRhYmxlIGlzIGNyZWF0ZWQuCisKK05vdGUgdGhhdCBvbiBzMzkwIHRoZSBLVk1fQ0FQX1MzOTBfSVJRQ0hJUCB2bSBjYXBhYmlsaXR5IG5lZWRzIHRvIGJlIGVuYWJsZWQKK2JlZm9yZSBLVk1fQ1JFQVRFX0lSUUNISVAgY2FuIGJlIHVzZWQuCisKKworNC4yNSBLVk1fSVJRX0xJTkUKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9JUlFDSElQCitBcmNoaXRlY3R1cmVzOiB4ODYsIGFybSwgYXJtNjQKK1R5cGU6IHZtIGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX2lycV9sZXZlbAorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCitTZXRzIHRoZSBsZXZlbCBvZiBhIEdTSSBpbnB1dCB0byB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgbW9kZWwgaW4gdGhlIGtlcm5lbC4KK09uIHNvbWUgYXJjaGl0ZWN0dXJlcyBpdCBpcyByZXF1aXJlZCB0aGF0IGFuIGludGVycnVwdCBjb250cm9sbGVyIG1vZGVsIGhhcworYmVlbiBwcmV2aW91c2x5IGNyZWF0ZWQgd2l0aCBLVk1fQ1JFQVRFX0lSUUNISVAuICBOb3RlIHRoYXQgZWRnZS10cmlnZ2VyZWQKK2ludGVycnVwdHMgcmVxdWlyZSB0aGUgbGV2ZWwgdG8gYmUgc2V0IHRvIDEgYW5kIHRoZW4gYmFjayB0byAwLgorCitPbiByZWFsIGhhcmR3YXJlLCBpbnRlcnJ1cHQgcGlucyBjYW4gYmUgYWN0aXZlLWxvdyBvciBhY3RpdmUtaGlnaC4gIFRoaXMKK2RvZXMgbm90IG1hdHRlciBmb3IgdGhlIGxldmVsIGZpZWxkIG9mIHN0cnVjdCBrdm1faXJxX2xldmVsOiAxIGFsd2F5cworbWVhbnMgYWN0aXZlIChhc3NlcnRlZCksIDAgbWVhbnMgaW5hY3RpdmUgKGRlYXNzZXJ0ZWQpLgorCit4ODYgYWxsb3dzIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHRvIHByb2dyYW0gdGhlIGludGVycnVwdCBwb2xhcml0eQorKGFjdGl2ZS1sb3cvYWN0aXZlLWhpZ2gpIGZvciBsZXZlbC10cmlnZ2VyZWQgaW50ZXJydXB0cywgYW5kIEtWTSB1c2VkCit0byBjb25zaWRlciB0aGUgcG9sYXJpdHkuICBIb3dldmVyLCBkdWUgdG8gYml0cm90IGluIHRoZSBoYW5kbGluZyBvZgorYWN0aXZlLWxvdyBpbnRlcnJ1cHRzLCB0aGUgYWJvdmUgY29udmVudGlvbiBpcyBub3cgdmFsaWQgb24geDg2IHRvby4KK1RoaXMgaXMgc2lnbmFsZWQgYnkgS1ZNX0NBUF9YODZfSU9BUElDX1BPTEFSSVRZX0lHTk9SRUQuICBVc2Vyc3BhY2UKK3Nob3VsZCBub3QgcHJlc2VudCBpbnRlcnJ1cHRzIHRvIHRoZSBndWVzdCBhcyBhY3RpdmUtbG93IHVubGVzcyB0aGlzCitjYXBhYmlsaXR5IGlzIHByZXNlbnQgKG9yIHVubGVzcyBpdCBpcyBub3QgdXNpbmcgdGhlIGluLWtlcm5lbCBpcnFjaGlwLAorb2YgY291cnNlKS4KKworCitBUk0vYXJtNjQgY2FuIHNpZ25hbCBhbiBpbnRlcnJ1cHQgZWl0aGVyIGF0IHRoZSBDUFUgbGV2ZWwsIG9yIGF0IHRoZQoraW4ta2VybmVsIGlycWNoaXAgKEdJQyksIGFuZCBmb3IgaW4ta2VybmVsIGlycWNoaXAgY2FuIHRlbGwgdGhlIEdJQyB0bwordXNlIFBQSXMgZGVzaWduYXRlZCBmb3Igc3BlY2lmaWMgY3B1cy4gIFRoZSBpcnEgZmllbGQgaXMgaW50ZXJwcmV0ZWQKK2xpa2UgdGhpczoKKworIMKgYml0czogIHwgMzEgLi4uIDI0IHwgMjMgIC4uLiAxNiB8IDE1ICAgIC4uLiAgICAwIHwKKyAgZmllbGQ6IHwgaXJxX3R5cGUgIHwgdmNwdV9pbmRleCB8ICAgICBpcnFfaWQgICAgIHwKKworVGhlIGlycV90eXBlIGZpZWxkIGhhcyB0aGUgZm9sbG93aW5nIHZhbHVlczoKKy0gaXJxX3R5cGVbMF06IG91dC1vZi1rZXJuZWwgR0lDOiBpcnFfaWQgMCBpcyBJUlEsIGlycV9pZCAxIGlzIEZJUQorLSBpcnFfdHlwZVsxXTogaW4ta2VybmVsIEdJQzogU1BJLCBpcnFfaWQgYmV0d2VlbiAzMiBhbmQgMTAxOSAoaW5jbC4pCisgICAgICAgICAgICAgICAodGhlIHZjcHVfaW5kZXggZmllbGQgaXMgaWdub3JlZCkKKy0gaXJxX3R5cGVbMl06IGluLWtlcm5lbCBHSUM6IFBQSSwgaXJxX2lkIGJldHdlZW4gMTYgYW5kIDMxIChpbmNsLikKKworKFRoZSBpcnFfaWQgZmllbGQgdGh1cyBjb3JyZXNwb25kcyBuaWNlbHkgdG8gdGhlIElSUSBJRCBpbiB0aGUgQVJNIEdJQyBzcGVjcykKKworSW4gYm90aCBjYXNlcywgbGV2ZWwgaXMgdXNlZCB0byBhc3NlcnQvZGVhc3NlcnQgdGhlIGxpbmUuCisKK3N0cnVjdCBrdm1faXJxX2xldmVsIHsKKwl1bmlvbiB7CisJCV9fdTMyIGlycTsgICAgIC8qIEdTSSAqLworCQlfX3MzMiBzdGF0dXM7ICAvKiBub3QgdXNlZCBmb3IgS1ZNX0lSUV9MRVZFTCAqLworCX07CisJX191MzIgbGV2ZWw7ICAgICAgICAgICAvKiAwIG9yIDEgKi8KK307CisKKworNC4yNiBLVk1fR0VUX0lSUUNISVAKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9JUlFDSElQCitBcmNoaXRlY3R1cmVzOiB4ODYKK1R5cGU6IHZtIGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX2lycWNoaXAgKGluL291dCkKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworUmVhZHMgdGhlIHN0YXRlIG9mIGEga2VybmVsIGludGVycnVwdCBjb250cm9sbGVyIGNyZWF0ZWQgd2l0aAorS1ZNX0NSRUFURV9JUlFDSElQIGludG8gYSBidWZmZXIgcHJvdmlkZWQgYnkgdGhlIGNhbGxlci4KKworc3RydWN0IGt2bV9pcnFjaGlwIHsKKwlfX3UzMiBjaGlwX2lkOyAgLyogMCA9IFBJQzEsIDEgPSBQSUMyLCAyID0gSU9BUElDICovCisJX191MzIgcGFkOworICAgICAgICB1bmlvbiB7CisJCWNoYXIgZHVtbXlbNTEyXTsgIC8qIHJlc2VydmluZyBzcGFjZSAqLworCQlzdHJ1Y3Qga3ZtX3BpY19zdGF0ZSBwaWM7CisJCXN0cnVjdCBrdm1faW9hcGljX3N0YXRlIGlvYXBpYzsKKwl9IGNoaXA7Cit9OworCisKKzQuMjcgS1ZNX1NFVF9JUlFDSElQCisKK0NhcGFiaWxpdHk6IEtWTV9DQVBfSVJRQ0hJUAorQXJjaGl0ZWN0dXJlczogeDg2CitUeXBlOiB2bSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9pcnFjaGlwIChpbikKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworU2V0cyB0aGUgc3RhdGUgb2YgYSBrZXJuZWwgaW50ZXJydXB0IGNvbnRyb2xsZXIgY3JlYXRlZCB3aXRoCitLVk1fQ1JFQVRFX0lSUUNISVAgZnJvbSBhIGJ1ZmZlciBwcm92aWRlZCBieSB0aGUgY2FsbGVyLgorCitzdHJ1Y3Qga3ZtX2lycWNoaXAgeworCV9fdTMyIGNoaXBfaWQ7ICAvKiAwID0gUElDMSwgMSA9IFBJQzIsIDIgPSBJT0FQSUMgKi8KKwlfX3UzMiBwYWQ7CisgICAgICAgIHVuaW9uIHsKKwkJY2hhciBkdW1teVs1MTJdOyAgLyogcmVzZXJ2aW5nIHNwYWNlICovCisJCXN0cnVjdCBrdm1fcGljX3N0YXRlIHBpYzsKKwkJc3RydWN0IGt2bV9pb2FwaWNfc3RhdGUgaW9hcGljOworCX0gY2hpcDsKK307CisKKworNC4yOCBLVk1fWEVOX0hWTV9DT05GSUcKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9YRU5fSFZNCitBcmNoaXRlY3R1cmVzOiB4ODYKK1R5cGU6IHZtIGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX3hlbl9odm1fY29uZmlnIChpbikKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworU2V0cyB0aGUgTVNSIHRoYXQgdGhlIFhlbiBIVk0gZ3Vlc3QgdXNlcyB0byBpbml0aWFsaXplIGl0cyBoeXBlcmNhbGwKK3BhZ2UsIGFuZCBwcm92aWRlcyB0aGUgc3RhcnRpbmcgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgaHlwZXJjYWxsCitibG9icyBpbiB1c2Vyc3BhY2UuICBXaGVuIHRoZSBndWVzdCB3cml0ZXMgdGhlIE1TUiwga3ZtIGNvcGllcyBvbmUKK3BhZ2Ugb2YgYSBibG9iICgzMi0gb3IgNjQtYml0LCBkZXBlbmRpbmcgb24gdGhlIHZjcHUgbW9kZSkgdG8gZ3Vlc3QKK21lbW9yeS4KKworc3RydWN0IGt2bV94ZW5faHZtX2NvbmZpZyB7CisJX191MzIgZmxhZ3M7CisJX191MzIgbXNyOworCV9fdTY0IGJsb2JfYWRkcl8zMjsKKwlfX3U2NCBibG9iX2FkZHJfNjQ7CisJX191OCBibG9iX3NpemVfMzI7CisJX191OCBibG9iX3NpemVfNjQ7CisJX191OCBwYWQyWzMwXTsKK307CisKKworNC4yOSBLVk1fR0VUX0NMT0NLCisKK0NhcGFiaWxpdHk6IEtWTV9DQVBfQURKVVNUX0NMT0NLCitBcmNoaXRlY3R1cmVzOiB4ODYKK1R5cGU6IHZtIGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX2Nsb2NrX2RhdGEgKG91dCkKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworR2V0cyB0aGUgY3VycmVudCB0aW1lc3RhbXAgb2Yga3ZtY2xvY2sgYXMgc2VlbiBieSB0aGUgY3VycmVudCBndWVzdC4gSW4KK2Nvbmp1bmN0aW9uIHdpdGggS1ZNX1NFVF9DTE9DSywgaXQgaXMgdXNlZCB0byBlbnN1cmUgbW9ub3RvbmljaXR5IG9uIHNjZW5hcmlvcworc3VjaCBhcyBtaWdyYXRpb24uCisKK3N0cnVjdCBrdm1fY2xvY2tfZGF0YSB7CisJX191NjQgY2xvY2s7ICAvKiBrdm1jbG9jayBjdXJyZW50IHZhbHVlICovCisJX191MzIgZmxhZ3M7CisJX191MzIgcGFkWzldOworfTsKKworCis0LjMwIEtWTV9TRVRfQ0xPQ0sKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9BREpVU1RfQ0xPQ0sKK0FyY2hpdGVjdHVyZXM6IHg4NgorVHlwZTogdm0gaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1fY2xvY2tfZGF0YSAoaW4pCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yCisKK1NldHMgdGhlIGN1cnJlbnQgdGltZXN0YW1wIG9mIGt2bWNsb2NrIHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWQgaW4gaXRzIHBhcmFtZXRlci4KK0luIGNvbmp1bmN0aW9uIHdpdGggS1ZNX0dFVF9DTE9DSywgaXQgaXMgdXNlZCB0byBlbnN1cmUgbW9ub3RvbmljaXR5IG9uIHNjZW5hcmlvcworc3VjaCBhcyBtaWdyYXRpb24uCisKK3N0cnVjdCBrdm1fY2xvY2tfZGF0YSB7CisJX191NjQgY2xvY2s7ICAvKiBrdm1jbG9jayBjdXJyZW50IHZhbHVlICovCisJX191MzIgZmxhZ3M7CisJX191MzIgcGFkWzldOworfTsKKworCis0LjMxIEtWTV9HRVRfVkNQVV9FVkVOVFMKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9WQ1BVX0VWRU5UUworRXh0ZW5kZWQgYnk6IEtWTV9DQVBfSU5UUl9TSEFET1cKK0FyY2hpdGVjdHVyZXM6IHg4NgorVHlwZTogdm0gaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1fdmNwdV9ldmVudCAob3V0KQorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCitHZXRzIGN1cnJlbnRseSBwZW5kaW5nIGV4Y2VwdGlvbnMsIGludGVycnVwdHMsIGFuZCBOTUlzIGFzIHdlbGwgYXMgcmVsYXRlZAorc3RhdGVzIG9mIHRoZSB2Y3B1LgorCitzdHJ1Y3Qga3ZtX3ZjcHVfZXZlbnRzIHsKKwlzdHJ1Y3QgeworCQlfX3U4IGluamVjdGVkOworCQlfX3U4IG5yOworCQlfX3U4IGhhc19lcnJvcl9jb2RlOworCQlfX3U4IHBhZDsKKwkJX191MzIgZXJyb3JfY29kZTsKKwl9IGV4Y2VwdGlvbjsKKwlzdHJ1Y3QgeworCQlfX3U4IGluamVjdGVkOworCQlfX3U4IG5yOworCQlfX3U4IHNvZnQ7CisJCV9fdTggc2hhZG93OworCX0gaW50ZXJydXB0OworCXN0cnVjdCB7CisJCV9fdTggaW5qZWN0ZWQ7CisJCV9fdTggcGVuZGluZzsKKwkJX191OCBtYXNrZWQ7CisJCV9fdTggcGFkOworCX0gbm1pOworCV9fdTMyIHNpcGlfdmVjdG9yOworCV9fdTMyIGZsYWdzOworCXN0cnVjdCB7CisJCV9fdTggc21tOworCQlfX3U4IHBlbmRpbmc7CisJCV9fdTggc21tX2luc2lkZV9ubWk7CisJCV9fdTggbGF0Y2hlZF9pbml0OworCX0gc21pOworfTsKKworT25seSB0d28gZmllbGRzIGFyZSBkZWZpbmVkIGluIHRoZSBmbGFncyBmaWVsZDoKKworLSBLVk1fVkNQVUVWRU5UX1ZBTElEX1NIQURPVyBtYXkgYmUgc2V0IGluIHRoZSBmbGFncyBmaWVsZCB0byBzaWduYWwgdGhhdAorICBpbnRlcnJ1cHQuc2hhZG93IGNvbnRhaW5zIGEgdmFsaWQgc3RhdGUuCisKKy0gS1ZNX1ZDUFVFVkVOVF9WQUxJRF9TTU0gbWF5IGJlIHNldCBpbiB0aGUgZmxhZ3MgZmllbGQgdG8gc2lnbmFsIHRoYXQKKyAgc21pIGNvbnRhaW5zIGEgdmFsaWQgc3RhdGUuCisKKzQuMzIgS1ZNX1NFVF9WQ1BVX0VWRU5UUworCitDYXBhYmlsaXR5OiBLVk1fQ0FQX1ZDUFVfRVZFTlRTCitFeHRlbmRlZCBieTogS1ZNX0NBUF9JTlRSX1NIQURPVworQXJjaGl0ZWN0dXJlczogeDg2CitUeXBlOiB2bSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV92Y3B1X2V2ZW50IChpbikKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworU2V0IHBlbmRpbmcgZXhjZXB0aW9ucywgaW50ZXJydXB0cywgYW5kIE5NSXMgYXMgd2VsbCBhcyByZWxhdGVkIHN0YXRlcyBvZiB0aGUKK3ZjcHUuCisKK1NlZSBLVk1fR0VUX1ZDUFVfRVZFTlRTIGZvciB0aGUgZGF0YSBzdHJ1Y3R1cmUuCisKK0ZpZWxkcyB0aGF0IG1heSBiZSBtb2RpZmllZCBhc3luY2hyb25vdXNseSBieSBydW5uaW5nIFZDUFVzIGNhbiBiZSBleGNsdWRlZAorZnJvbSB0aGUgdXBkYXRlLiBUaGVzZSBmaWVsZHMgYXJlIG5taS5wZW5kaW5nLCBzaXBpX3ZlY3Rvciwgc21pLnNtbSwKK3NtaS5wZW5kaW5nLiBLZWVwIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgaW4gdGhlIGZsYWdzIGZpZWxkIGNsZWFyZWQgdG8KK3N1cHByZXNzIG92ZXJ3cml0aW5nIHRoZSBjdXJyZW50IGluLWtlcm5lbCBzdGF0ZS4gVGhlIGJpdHMgYXJlOgorCitLVk1fVkNQVUVWRU5UX1ZBTElEX05NSV9QRU5ESU5HIC0gdHJhbnNmZXIgbm1pLnBlbmRpbmcgdG8gdGhlIGtlcm5lbAorS1ZNX1ZDUFVFVkVOVF9WQUxJRF9TSVBJX1ZFQ1RPUiAtIHRyYW5zZmVyIHNpcGlfdmVjdG9yCitLVk1fVkNQVUVWRU5UX1ZBTElEX1NNTSAgICAgICAgIC0gdHJhbnNmZXIgdGhlIHNtaSBzdWItc3RydWN0LgorCitJZiBLVk1fQ0FQX0lOVFJfU0hBRE9XIGlzIGF2YWlsYWJsZSwgS1ZNX1ZDUFVFVkVOVF9WQUxJRF9TSEFET1cgY2FuIGJlIHNldCBpbgordGhlIGZsYWdzIGZpZWxkIHRvIHNpZ25hbCB0aGF0IGludGVycnVwdC5zaGFkb3cgY29udGFpbnMgYSB2YWxpZCBzdGF0ZSBhbmQKK3NoYWxsIGJlIHdyaXR0ZW4gaW50byB0aGUgVkNQVS4KKworS1ZNX1ZDUFVFVkVOVF9WQUxJRF9TTU0gY2FuIG9ubHkgYmUgc2V0IGlmIEtWTV9DQVBfWDg2X1NNTSBpcyBhdmFpbGFibGUuCisKKworNC4zMyBLVk1fR0VUX0RFQlVHUkVHUworCitDYXBhYmlsaXR5OiBLVk1fQ0FQX0RFQlVHUkVHUworQXJjaGl0ZWN0dXJlczogeDg2CitUeXBlOiB2bSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9kZWJ1Z3JlZ3MgKG91dCkKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworUmVhZHMgZGVidWcgcmVnaXN0ZXJzIGZyb20gdGhlIHZjcHUuCisKK3N0cnVjdCBrdm1fZGVidWdyZWdzIHsKKwlfX3U2NCBkYls0XTsKKwlfX3U2NCBkcjY7CisJX191NjQgZHI3OworCV9fdTY0IGZsYWdzOworCV9fdTY0IHJlc2VydmVkWzldOworfTsKKworCis0LjM0IEtWTV9TRVRfREVCVUdSRUdTCisKK0NhcGFiaWxpdHk6IEtWTV9DQVBfREVCVUdSRUdTCitBcmNoaXRlY3R1cmVzOiB4ODYKK1R5cGU6IHZtIGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX2RlYnVncmVncyAoaW4pCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yCisKK1dyaXRlcyBkZWJ1ZyByZWdpc3RlcnMgaW50byB0aGUgdmNwdS4KKworU2VlIEtWTV9HRVRfREVCVUdSRUdTIGZvciB0aGUgZGF0YSBzdHJ1Y3R1cmUuIFRoZSBmbGFncyBmaWVsZCBpcyB1bnVzZWQKK3lldCBhbmQgbXVzdCBiZSBjbGVhcmVkIG9uIGVudHJ5LgorCisKKzQuMzUgS1ZNX1NFVF9VU0VSX01FTU9SWV9SRUdJT04KKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9VU0VSX01FTQorQXJjaGl0ZWN0dXJlczogYWxsCitUeXBlOiB2bSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV91c2Vyc3BhY2VfbWVtb3J5X3JlZ2lvbiAoaW4pCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yCisKK3N0cnVjdCBrdm1fdXNlcnNwYWNlX21lbW9yeV9yZWdpb24geworCV9fdTMyIHNsb3Q7CisJX191MzIgZmxhZ3M7CisJX191NjQgZ3Vlc3RfcGh5c19hZGRyOworCV9fdTY0IG1lbW9yeV9zaXplOyAvKiBieXRlcyAqLworCV9fdTY0IHVzZXJzcGFjZV9hZGRyOyAvKiBzdGFydCBvZiB0aGUgdXNlcnNwYWNlIGFsbG9jYXRlZCBtZW1vcnkgKi8KK307CisKKy8qIGZvciBrdm1fbWVtb3J5X3JlZ2lvbjo6ZmxhZ3MgKi8KKyNkZWZpbmUgS1ZNX01FTV9MT0dfRElSVFlfUEFHRVMJKDFVTCA8PCAwKQorI2RlZmluZSBLVk1fTUVNX1JFQURPTkxZCSgxVUwgPDwgMSkKKworVGhpcyBpb2N0bCBhbGxvd3MgdGhlIHVzZXIgdG8gY3JlYXRlIG9yIG1vZGlmeSBhIGd1ZXN0IHBoeXNpY2FsIG1lbW9yeQorc2xvdC4gIFdoZW4gY2hhbmdpbmcgYW4gZXhpc3Rpbmcgc2xvdCwgaXQgbWF5IGJlIG1vdmVkIGluIHRoZSBndWVzdAorcGh5c2ljYWwgbWVtb3J5IHNwYWNlLCBvciBpdHMgZmxhZ3MgbWF5IGJlIG1vZGlmaWVkLiAgSXQgbWF5IG5vdCBiZQorcmVzaXplZC4gIFNsb3RzIG1heSBub3Qgb3ZlcmxhcCBpbiBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLgorCitJZiBLVk1fQ0FQX01VTFRJX0FERFJFU1NfU1BBQ0UgaXMgYXZhaWxhYmxlLCBiaXRzIDE2LTMxIG9mICJzbG90Igorc3BlY2lmaWVzIHRoZSBhZGRyZXNzIHNwYWNlIHdoaWNoIGlzIGJlaW5nIG1vZGlmaWVkLiAgVGhleSBtdXN0IGJlCitsZXNzIHRoYW4gdGhlIHZhbHVlIHRoYXQgS1ZNX0NIRUNLX0VYVEVOU0lPTiByZXR1cm5zIGZvciB0aGUKK0tWTV9DQVBfTVVMVElfQUREUkVTU19TUEFDRSBjYXBhYmlsaXR5LiAgU2xvdHMgaW4gc2VwYXJhdGUgYWRkcmVzcyBzcGFjZXMKK2FyZSB1bnJlbGF0ZWQ7IHRoZSByZXN0cmljdGlvbiBvbiBvdmVybGFwcGluZyBzbG90cyBvbmx5IGFwcGxpZXMgd2l0aGluCitlYWNoIGFkZHJlc3Mgc3BhY2UuCisKK01lbW9yeSBmb3IgdGhlIHJlZ2lvbiBpcyB0YWtlbiBzdGFydGluZyBhdCB0aGUgYWRkcmVzcyBkZW5vdGVkIGJ5IHRoZQorZmllbGQgdXNlcnNwYWNlX2FkZHIsIHdoaWNoIG11c3QgcG9pbnQgYXQgdXNlciBhZGRyZXNzYWJsZSBtZW1vcnkgZm9yCit0aGUgZW50aXJlIG1lbW9yeSBzbG90IHNpemUuICBBbnkgb2JqZWN0IG1heSBiYWNrIHRoaXMgbWVtb3J5LCBpbmNsdWRpbmcKK2Fub255bW91cyBtZW1vcnksIG9yZGluYXJ5IGZpbGVzLCBhbmQgaHVnZXRsYmZzLgorCitJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHRoZSBsb3dlciAyMSBiaXRzIG9mIGd1ZXN0X3BoeXNfYWRkciBhbmQgdXNlcnNwYWNlX2FkZHIKK2JlIGlkZW50aWNhbC4gIFRoaXMgYWxsb3dzIGxhcmdlIHBhZ2VzIGluIHRoZSBndWVzdCB0byBiZSBiYWNrZWQgYnkgbGFyZ2UKK3BhZ2VzIGluIHRoZSBob3N0LgorCitUaGUgZmxhZ3MgZmllbGQgc3VwcG9ydHMgdHdvIGZsYWdzOiBLVk1fTUVNX0xPR19ESVJUWV9QQUdFUyBhbmQKK0tWTV9NRU1fUkVBRE9OTFkuICBUaGUgZm9ybWVyIGNhbiBiZSBzZXQgdG8gaW5zdHJ1Y3QgS1ZNIHRvIGtlZXAgdHJhY2sgb2YKK3dyaXRlcyB0byBtZW1vcnkgd2l0aGluIHRoZSBzbG90LiAgU2VlIEtWTV9HRVRfRElSVFlfTE9HIGlvY3RsIHRvIGtub3cgaG93IHRvCit1c2UgaXQuICBUaGUgbGF0dGVyIGNhbiBiZSBzZXQsIGlmIEtWTV9DQVBfUkVBRE9OTFlfTUVNIGNhcGFiaWxpdHkgYWxsb3dzIGl0LAordG8gbWFrZSBhIG5ldyBzbG90IHJlYWQtb25seS4gIEluIHRoaXMgY2FzZSwgd3JpdGVzIHRvIHRoaXMgbWVtb3J5IHdpbGwgYmUKK3Bvc3RlZCB0byB1c2Vyc3BhY2UgYXMgS1ZNX0VYSVRfTU1JTyBleGl0cy4KKworV2hlbiB0aGUgS1ZNX0NBUF9TWU5DX01NVSBjYXBhYmlsaXR5IGlzIGF2YWlsYWJsZSwgY2hhbmdlcyBpbiB0aGUgYmFja2luZyBvZgordGhlIG1lbW9yeSByZWdpb24gYXJlIGF1dG9tYXRpY2FsbHkgcmVmbGVjdGVkIGludG8gdGhlIGd1ZXN0LiAgRm9yIGV4YW1wbGUsIGFuCittbWFwKCkgdGhhdCBhZmZlY3RzIHRoZSByZWdpb24gd2lsbCBiZSBtYWRlIHZpc2libGUgaW1tZWRpYXRlbHkuICBBbm90aGVyCitleGFtcGxlIGlzIG1hZHZpc2UoTUFEVl9EUk9QKS4KKworSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoaXMgQVBJIGluc3RlYWQgb2YgdGhlIEtWTV9TRVRfTUVNT1JZX1JFR0lPTiBpb2N0bC4KK1RoZSBLVk1fU0VUX01FTU9SWV9SRUdJT04gZG9lcyBub3QgYWxsb3cgZmluZSBncmFpbmVkIGNvbnRyb2wgb3ZlciBtZW1vcnkKK2FsbG9jYXRpb24gYW5kIGlzIGRlcHJlY2F0ZWQuCisKKworNC4zNiBLVk1fU0VUX1RTU19BRERSCisKK0NhcGFiaWxpdHk6IEtWTV9DQVBfU0VUX1RTU19BRERSCitBcmNoaXRlY3R1cmVzOiB4ODYKK1R5cGU6IHZtIGlvY3RsCitQYXJhbWV0ZXJzOiB1bnNpZ25lZCBsb25nIHRzc19hZGRyZXNzIChpbikKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworVGhpcyBpb2N0bCBkZWZpbmVzIHRoZSBwaHlzaWNhbCBhZGRyZXNzIG9mIGEgdGhyZWUtcGFnZSByZWdpb24gaW4gdGhlIGd1ZXN0CitwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLiAgVGhlIHJlZ2lvbiBtdXN0IGJlIHdpdGhpbiB0aGUgZmlyc3QgNEdCIG9mIHRoZQorZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZSBhbmQgbXVzdCBub3QgY29uZmxpY3Qgd2l0aCBhbnkgbWVtb3J5IHNsb3QKK29yIGFueSBtbWlvIGFkZHJlc3MuICBUaGUgZ3Vlc3QgbWF5IG1hbGZ1bmN0aW9uIGlmIGl0IGFjY2Vzc2VzIHRoaXMgbWVtb3J5CityZWdpb24uCisKK1RoaXMgaW9jdGwgaXMgcmVxdWlyZWQgb24gSW50ZWwtYmFzZWQgaG9zdHMuICBUaGlzIGlzIG5lZWRlZCBvbiBJbnRlbCBoYXJkd2FyZQorYmVjYXVzZSBvZiBhIHF1aXJrIGluIHRoZSB2aXJ0dWFsaXphdGlvbiBpbXBsZW1lbnRhdGlvbiAoc2VlIHRoZSBpbnRlcm5hbHMKK2RvY3VtZW50YXRpb24gd2hlbiBpdCBwb3BzIGludG8gZXhpc3RlbmNlKS4KKworCis0LjM3IEtWTV9FTkFCTEVfQ0FQCisKK0NhcGFiaWxpdHk6IEtWTV9DQVBfRU5BQkxFX0NBUCwgS1ZNX0NBUF9FTkFCTEVfQ0FQX1ZNCitBcmNoaXRlY3R1cmVzOiB4ODYgKG9ubHkgS1ZNX0NBUF9FTkFCTEVfQ0FQX1ZNKSwKKwkgICAgICAgbWlwcyAob25seSBLVk1fQ0FQX0VOQUJMRV9DQVApLCBwcGMsIHMzOTAKK1R5cGU6IHZjcHUgaW9jdGwsIHZtIGlvY3RsICh3aXRoIEtWTV9DQVBfRU5BQkxFX0NBUF9WTSkKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1fZW5hYmxlX2NhcCAoaW4pCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3M7IC0xIG9uIGVycm9yCisKKytOb3QgYWxsIGV4dGVuc2lvbnMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdC4gVXNpbmcgdGhpcyBpb2N0bCB0aGUgYXBwbGljYXRpb24KK2NhbiBlbmFibGUgYW4gZXh0ZW5zaW9uLCBtYWtpbmcgaXQgYXZhaWxhYmxlIHRvIHRoZSBndWVzdC4KKworT24gc3lzdGVtcyB0aGF0IGRvIG5vdCBzdXBwb3J0IHRoaXMgaW9jdGwsIGl0IGFsd2F5cyBmYWlscy4gT24gc3lzdGVtcyB0aGF0CitkbyBzdXBwb3J0IGl0LCBpdCBvbmx5IHdvcmtzIGZvciBleHRlbnNpb25zIHRoYXQgYXJlIHN1cHBvcnRlZCBmb3IgZW5hYmxlbWVudC4KKworVG8gY2hlY2sgaWYgYSBjYXBhYmlsaXR5IGNhbiBiZSBlbmFibGVkLCB0aGUgS1ZNX0NIRUNLX0VYVEVOU0lPTiBpb2N0bCBzaG91bGQKK2JlIHVzZWQuCisKK3N0cnVjdCBrdm1fZW5hYmxlX2NhcCB7CisgICAgICAgLyogaW4gKi8KKyAgICAgICBfX3UzMiBjYXA7CisKK1RoZSBjYXBhYmlsaXR5IHRoYXQgaXMgc3VwcG9zZWQgdG8gZ2V0IGVuYWJsZWQuCisKKyAgICAgICBfX3UzMiBmbGFnczsKKworQSBiaXRmaWVsZCBpbmRpY2F0aW5nIGZ1dHVyZSBlbmhhbmNlbWVudHMuIEhhcyB0byBiZSAwIGZvciBub3cuCisKKyAgICAgICBfX3U2NCBhcmdzWzRdOworCitBcmd1bWVudHMgZm9yIGVuYWJsaW5nIGEgZmVhdHVyZS4gSWYgYSBmZWF0dXJlIG5lZWRzIGluaXRpYWwgdmFsdWVzIHRvCitmdW5jdGlvbiBwcm9wZXJseSwgdGhpcyBpcyB0aGUgcGxhY2UgdG8gcHV0IHRoZW0uCisKKyAgICAgICBfX3U4ICBwYWRbNjRdOworfTsKKworVGhlIHZjcHUgaW9jdGwgc2hvdWxkIGJlIHVzZWQgZm9yIHZjcHUtc3BlY2lmaWMgY2FwYWJpbGl0aWVzLCB0aGUgdm0gaW9jdGwKK2ZvciB2bS13aWRlIGNhcGFiaWxpdGllcy4KKworNC4zOCBLVk1fR0VUX01QX1NUQVRFCisKK0NhcGFiaWxpdHk6IEtWTV9DQVBfTVBfU1RBVEUKK0FyY2hpdGVjdHVyZXM6IHg4NiwgczM5MCwgYXJtLCBhcm02NAorVHlwZTogdmNwdSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9tcF9zdGF0ZSAob3V0KQorUmV0dXJuczogMCBvbiBzdWNjZXNzOyAtMSBvbiBlcnJvcgorCitzdHJ1Y3Qga3ZtX21wX3N0YXRlIHsKKwlfX3UzMiBtcF9zdGF0ZTsKK307CisKK1JldHVybnMgdGhlIHZjcHUncyBjdXJyZW50ICJtdWx0aXByb2Nlc3Npbmcgc3RhdGUiICh0aG91Z2ggYWxzbyB2YWxpZCBvbgordW5pcHJvY2Vzc29yIGd1ZXN0cykuCisKK1Bvc3NpYmxlIHZhbHVlcyBhcmU6CisKKyAtIEtWTV9NUF9TVEFURV9SVU5OQUJMRTogICAgICAgIHRoZSB2Y3B1IGlzIGN1cnJlbnRseSBydW5uaW5nIFt4ODYsYXJtL2FybTY0XQorIC0gS1ZNX01QX1NUQVRFX1VOSU5JVElBTElaRUQ6ICAgdGhlIHZjcHUgaXMgYW4gYXBwbGljYXRpb24gcHJvY2Vzc29yIChBUCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGhhcyBub3QgeWV0IHJlY2VpdmVkIGFuIElOSVQgc2lnbmFsIFt4ODZdCisgLSBLVk1fTVBfU1RBVEVfSU5JVF9SRUNFSVZFRDogICB0aGUgdmNwdSBoYXMgcmVjZWl2ZWQgYW4gSU5JVCBzaWduYWwsIGFuZCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm93IHJlYWR5IGZvciBhIFNJUEkgW3g4Nl0KKyAtIEtWTV9NUF9TVEFURV9IQUxURUQ6ICAgICAgICAgIHRoZSB2Y3B1IGhhcyBleGVjdXRlZCBhIEhMVCBpbnN0cnVjdGlvbiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHdhaXRpbmcgZm9yIGFuIGludGVycnVwdCBbeDg2XQorIC0gS1ZNX01QX1NUQVRFX1NJUElfUkVDRUlWRUQ6ICAgdGhlIHZjcHUgaGFzIGp1c3QgcmVjZWl2ZWQgYSBTSVBJICh2ZWN0b3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2libGUgdmlhIEtWTV9HRVRfVkNQVV9FVkVOVFMpIFt4ODZdCisgLSBLVk1fTVBfU1RBVEVfU1RPUFBFRDogICAgICAgICB0aGUgdmNwdSBpcyBzdG9wcGVkIFtzMzkwLGFybS9hcm02NF0KKyAtIEtWTV9NUF9TVEFURV9DSEVDS19TVE9QOiAgICAgIHRoZSB2Y3B1IGlzIGluIGEgc3BlY2lhbCBlcnJvciBzdGF0ZSBbczM5MF0KKyAtIEtWTV9NUF9TVEFURV9PUEVSQVRJTkc6ICAgICAgIHRoZSB2Y3B1IGlzIG9wZXJhdGluZyAocnVubmluZyBvciBoYWx0ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbczM5MF0KKyAtIEtWTV9NUF9TVEFURV9MT0FEOiAgICAgICAgICAgIHRoZSB2Y3B1IGlzIGluIGEgc3BlY2lhbCBsb2FkL3N0YXJ0dXAgc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzMzkwXQorCitPbiB4ODYsIHRoaXMgaW9jdGwgaXMgb25seSB1c2VmdWwgYWZ0ZXIgS1ZNX0NSRUFURV9JUlFDSElQLiBXaXRob3V0IGFuCitpbi1rZXJuZWwgaXJxY2hpcCwgdGhlIG11bHRpcHJvY2Vzc2luZyBzdGF0ZSBtdXN0IGJlIG1haW50YWluZWQgYnkgdXNlcnNwYWNlIG9uCit0aGVzZSBhcmNoaXRlY3R1cmVzLgorCitGb3IgYXJtL2FybTY0OgorCitUaGUgb25seSBzdGF0ZXMgdGhhdCBhcmUgdmFsaWQgYXJlIEtWTV9NUF9TVEFURV9TVE9QUEVEIGFuZAorS1ZNX01QX1NUQVRFX1JVTk5BQkxFIHdoaWNoIHJlZmxlY3QgaWYgdGhlIHZjcHUgaXMgcGF1c2VkIG9yIG5vdC4KKworNC4zOSBLVk1fU0VUX01QX1NUQVRFCisKK0NhcGFiaWxpdHk6IEtWTV9DQVBfTVBfU1RBVEUKK0FyY2hpdGVjdHVyZXM6IHg4NiwgczM5MCwgYXJtLCBhcm02NAorVHlwZTogdmNwdSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9tcF9zdGF0ZSAoaW4pCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3M7IC0xIG9uIGVycm9yCisKK1NldHMgdGhlIHZjcHUncyBjdXJyZW50ICJtdWx0aXByb2Nlc3Npbmcgc3RhdGUiOyBzZWUgS1ZNX0dFVF9NUF9TVEFURSBmb3IKK2FyZ3VtZW50cy4KKworT24geDg2LCB0aGlzIGlvY3RsIGlzIG9ubHkgdXNlZnVsIGFmdGVyIEtWTV9DUkVBVEVfSVJRQ0hJUC4gV2l0aG91dCBhbgoraW4ta2VybmVsIGlycWNoaXAsIHRoZSBtdWx0aXByb2Nlc3Npbmcgc3RhdGUgbXVzdCBiZSBtYWludGFpbmVkIGJ5IHVzZXJzcGFjZSBvbgordGhlc2UgYXJjaGl0ZWN0dXJlcy4KKworRm9yIGFybS9hcm02NDoKKworVGhlIG9ubHkgc3RhdGVzIHRoYXQgYXJlIHZhbGlkIGFyZSBLVk1fTVBfU1RBVEVfU1RPUFBFRCBhbmQKK0tWTV9NUF9TVEFURV9SVU5OQUJMRSB3aGljaCByZWZsZWN0IGlmIHRoZSB2Y3B1IHNob3VsZCBiZSBwYXVzZWQgb3Igbm90LgorCis0LjQwIEtWTV9TRVRfSURFTlRJVFlfTUFQX0FERFIKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9TRVRfSURFTlRJVFlfTUFQX0FERFIKK0FyY2hpdGVjdHVyZXM6IHg4NgorVHlwZTogdm0gaW9jdGwKK1BhcmFtZXRlcnM6IHVuc2lnbmVkIGxvbmcgaWRlbnRpdHkgKGluKQorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCitUaGlzIGlvY3RsIGRlZmluZXMgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgYSBvbmUtcGFnZSByZWdpb24gaW4gdGhlIGd1ZXN0CitwaHlzaWNhbCBhZGRyZXNzIHNwYWNlLiAgVGhlIHJlZ2lvbiBtdXN0IGJlIHdpdGhpbiB0aGUgZmlyc3QgNEdCIG9mIHRoZQorZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZSBhbmQgbXVzdCBub3QgY29uZmxpY3Qgd2l0aCBhbnkgbWVtb3J5IHNsb3QKK29yIGFueSBtbWlvIGFkZHJlc3MuICBUaGUgZ3Vlc3QgbWF5IG1hbGZ1bmN0aW9uIGlmIGl0IGFjY2Vzc2VzIHRoaXMgbWVtb3J5CityZWdpb24uCisKK1RoaXMgaW9jdGwgaXMgcmVxdWlyZWQgb24gSW50ZWwtYmFzZWQgaG9zdHMuICBUaGlzIGlzIG5lZWRlZCBvbiBJbnRlbCBoYXJkd2FyZQorYmVjYXVzZSBvZiBhIHF1aXJrIGluIHRoZSB2aXJ0dWFsaXphdGlvbiBpbXBsZW1lbnRhdGlvbiAoc2VlIHRoZSBpbnRlcm5hbHMKK2RvY3VtZW50YXRpb24gd2hlbiBpdCBwb3BzIGludG8gZXhpc3RlbmNlKS4KKworCis0LjQxIEtWTV9TRVRfQk9PVF9DUFVfSUQKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9TRVRfQk9PVF9DUFVfSUQKK0FyY2hpdGVjdHVyZXM6IHg4NgorVHlwZTogdm0gaW9jdGwKK1BhcmFtZXRlcnM6IHVuc2lnbmVkIGxvbmcgdmNwdV9pZAorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCitEZWZpbmUgd2hpY2ggdmNwdSBpcyB0aGUgQm9vdHN0cmFwIFByb2Nlc3NvciAoQlNQKS4gIFZhbHVlcyBhcmUgdGhlIHNhbWUKK2FzIHRoZSB2Y3B1IGlkIGluIEtWTV9DUkVBVEVfVkNQVS4gIElmIHRoaXMgaW9jdGwgaXMgbm90IGNhbGxlZCwgdGhlIGRlZmF1bHQKK2lzIHZjcHUgMC4KKworCis0LjQyIEtWTV9HRVRfWFNBVkUKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9YU0FWRQorQXJjaGl0ZWN0dXJlczogeDg2CitUeXBlOiB2Y3B1IGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX3hzYXZlIChvdXQpCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yCisKK3N0cnVjdCBrdm1feHNhdmUgeworCV9fdTMyIHJlZ2lvblsxMDI0XTsKK307CisKK1RoaXMgaW9jdGwgd291bGQgY29weSBjdXJyZW50IHZjcHUncyB4c2F2ZSBzdHJ1Y3QgdG8gdGhlIHVzZXJzcGFjZS4KKworCis0LjQzIEtWTV9TRVRfWFNBVkUKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9YU0FWRQorQXJjaGl0ZWN0dXJlczogeDg2CitUeXBlOiB2Y3B1IGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX3hzYXZlIChpbikKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworc3RydWN0IGt2bV94c2F2ZSB7CisJX191MzIgcmVnaW9uWzEwMjRdOworfTsKKworVGhpcyBpb2N0bCB3b3VsZCBjb3B5IHVzZXJzcGFjZSdzIHhzYXZlIHN0cnVjdCB0byB0aGUga2VybmVsLgorCisKKzQuNDQgS1ZNX0dFVF9YQ1JTCisKK0NhcGFiaWxpdHk6IEtWTV9DQVBfWENSUworQXJjaGl0ZWN0dXJlczogeDg2CitUeXBlOiB2Y3B1IGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX3hjcnMgKG91dCkKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworc3RydWN0IGt2bV94Y3IgeworCV9fdTMyIHhjcjsKKwlfX3UzMiByZXNlcnZlZDsKKwlfX3U2NCB2YWx1ZTsKK307CisKK3N0cnVjdCBrdm1feGNycyB7CisJX191MzIgbnJfeGNyczsKKwlfX3UzMiBmbGFnczsKKwlzdHJ1Y3Qga3ZtX3hjciB4Y3JzW0tWTV9NQVhfWENSU107CisJX191NjQgcGFkZGluZ1sxNl07Cit9OworCitUaGlzIGlvY3RsIHdvdWxkIGNvcHkgY3VycmVudCB2Y3B1J3MgeGNycyB0byB0aGUgdXNlcnNwYWNlLgorCisKKzQuNDUgS1ZNX1NFVF9YQ1JTCisKK0NhcGFiaWxpdHk6IEtWTV9DQVBfWENSUworQXJjaGl0ZWN0dXJlczogeDg2CitUeXBlOiB2Y3B1IGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX3hjcnMgKGluKQorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCitzdHJ1Y3Qga3ZtX3hjciB7CisJX191MzIgeGNyOworCV9fdTMyIHJlc2VydmVkOworCV9fdTY0IHZhbHVlOworfTsKKworc3RydWN0IGt2bV94Y3JzIHsKKwlfX3UzMiBucl94Y3JzOworCV9fdTMyIGZsYWdzOworCXN0cnVjdCBrdm1feGNyIHhjcnNbS1ZNX01BWF9YQ1JTXTsKKwlfX3U2NCBwYWRkaW5nWzE2XTsKK307CisKK1RoaXMgaW9jdGwgd291bGQgc2V0IHZjcHUncyB4Y3IgdG8gdGhlIHZhbHVlIHVzZXJzcGFjZSBzcGVjaWZpZWQuCisKKworNC40NiBLVk1fR0VUX1NVUFBPUlRFRF9DUFVJRAorCitDYXBhYmlsaXR5OiBLVk1fQ0FQX0VYVF9DUFVJRAorQXJjaGl0ZWN0dXJlczogeDg2CitUeXBlOiBzeXN0ZW0gaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1fY3B1aWQyIChpbi9vdXQpCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yCisKK3N0cnVjdCBrdm1fY3B1aWQyIHsKKwlfX3UzMiBuZW50OworCV9fdTMyIHBhZGRpbmc7CisJc3RydWN0IGt2bV9jcHVpZF9lbnRyeTIgZW50cmllc1swXTsKK307CisKKyNkZWZpbmUgS1ZNX0NQVUlEX0ZMQUdfU0lHTklGQ0FOVF9JTkRFWAkJQklUKDApCisjZGVmaW5lIEtWTV9DUFVJRF9GTEFHX1NUQVRFRlVMX0ZVTkMJCUJJVCgxKQorI2RlZmluZSBLVk1fQ1BVSURfRkxBR19TVEFURV9SRUFEX05FWFQJCUJJVCgyKQorCitzdHJ1Y3Qga3ZtX2NwdWlkX2VudHJ5MiB7CisJX191MzIgZnVuY3Rpb247CisJX191MzIgaW5kZXg7CisJX191MzIgZmxhZ3M7CisJX191MzIgZWF4OworCV9fdTMyIGVieDsKKwlfX3UzMiBlY3g7CisJX191MzIgZWR4OworCV9fdTMyIHBhZGRpbmdbM107Cit9OworCitUaGlzIGlvY3RsIHJldHVybnMgeDg2IGNwdWlkIGZlYXR1cmVzIHdoaWNoIGFyZSBzdXBwb3J0ZWQgYnkgYm90aCB0aGUgaGFyZHdhcmUKK2FuZCBrdm0uICBVc2Vyc3BhY2UgY2FuIHVzZSB0aGUgaW5mb3JtYXRpb24gcmV0dXJuZWQgYnkgdGhpcyBpb2N0bCB0bworY29uc3RydWN0IGNwdWlkIGluZm9ybWF0aW9uIChmb3IgS1ZNX1NFVF9DUFVJRDIpIHRoYXQgaXMgY29uc2lzdGVudCB3aXRoCitoYXJkd2FyZSwga2VybmVsLCBhbmQgdXNlcnNwYWNlIGNhcGFiaWxpdGllcywgYW5kIHdpdGggdXNlciByZXF1aXJlbWVudHMgKGZvcgorZXhhbXBsZSwgdGhlIHVzZXIgbWF5IHdpc2ggdG8gY29uc3RyYWluIGNwdWlkIHRvIGVtdWxhdGUgb2xkZXIgaGFyZHdhcmUsCitvciBmb3IgZmVhdHVyZSBjb25zaXN0ZW5jeSBhY3Jvc3MgYSBjbHVzdGVyKS4KKworVXNlcnNwYWNlIGludm9rZXMgS1ZNX0dFVF9TVVBQT1JURURfQ1BVSUQgYnkgcGFzc2luZyBhIGt2bV9jcHVpZDIgc3RydWN0dXJlCit3aXRoIHRoZSAnbmVudCcgZmllbGQgaW5kaWNhdGluZyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIHZhcmlhYmxlLXNpemUKK2FycmF5ICdlbnRyaWVzJy4gIElmIHRoZSBudW1iZXIgb2YgZW50cmllcyBpcyB0b28gbG93IHRvIGRlc2NyaWJlIHRoZSBjcHUKK2NhcGFiaWxpdGllcywgYW4gZXJyb3IgKEUyQklHKSBpcyByZXR1cm5lZC4gIElmIHRoZSBudW1iZXIgaXMgdG9vIGhpZ2gsCit0aGUgJ25lbnQnIGZpZWxkIGlzIGFkanVzdGVkIGFuZCBhbiBlcnJvciAoRU5PTUVNKSBpcyByZXR1cm5lZC4gIElmIHRoZQorbnVtYmVyIGlzIGp1c3QgcmlnaHQsIHRoZSAnbmVudCcgZmllbGQgaXMgYWRqdXN0ZWQgdG8gdGhlIG51bWJlciBvZiB2YWxpZAorZW50cmllcyBpbiB0aGUgJ2VudHJpZXMnIGFycmF5LCB3aGljaCBpcyB0aGVuIGZpbGxlZC4KKworVGhlIGVudHJpZXMgcmV0dXJuZWQgYXJlIHRoZSBob3N0IGNwdWlkIGFzIHJldHVybmVkIGJ5IHRoZSBjcHVpZCBpbnN0cnVjdGlvbiwKK3dpdGggdW5rbm93biBvciB1bnN1cHBvcnRlZCBmZWF0dXJlcyBtYXNrZWQgb3V0LiAgU29tZSBmZWF0dXJlcyAoZm9yIGV4YW1wbGUsCit4MmFwaWMpLCBtYXkgbm90IGJlIHByZXNlbnQgaW4gdGhlIGhvc3QgY3B1LCBidXQgYXJlIGV4cG9zZWQgYnkga3ZtIGlmIGl0IGNhbgorZW11bGF0ZSB0aGVtIGVmZmljaWVudGx5LiBUaGUgZmllbGRzIGluIGVhY2ggZW50cnkgYXJlIGRlZmluZWQgYXMgZm9sbG93czoKKworICBmdW5jdGlvbjogdGhlIGVheCB2YWx1ZSB1c2VkIHRvIG9idGFpbiB0aGUgZW50cnkKKyAgaW5kZXg6IHRoZSBlY3ggdmFsdWUgdXNlZCB0byBvYnRhaW4gdGhlIGVudHJ5IChmb3IgZW50cmllcyB0aGF0IGFyZQorICAgICAgICAgYWZmZWN0ZWQgYnkgZWN4KQorICBmbGFnczogYW4gT1Igb2YgemVybyBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIEtWTV9DUFVJRF9GTEFHX1NJR05JRkNBTlRfSU5ERVg6CisgICAgICAgICAgIGlmIHRoZSBpbmRleCBmaWVsZCBpcyB2YWxpZAorICAgICAgICBLVk1fQ1BVSURfRkxBR19TVEFURUZVTF9GVU5DOgorICAgICAgICAgICBpZiBjcHVpZCBmb3IgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGRpZmZlcmVudCB2YWx1ZXMgZm9yIHN1Y2Nlc3NpdmUKKyAgICAgICAgICAgaW52b2NhdGlvbnM7IHRoZXJlIHdpbGwgYmUgc2V2ZXJhbCBlbnRyaWVzIHdpdGggdGhlIHNhbWUgZnVuY3Rpb24sCisgICAgICAgICAgIGFsbCB3aXRoIHRoaXMgZmxhZyBzZXQKKyAgICAgICAgS1ZNX0NQVUlEX0ZMQUdfU1RBVEVfUkVBRF9ORVhUOgorICAgICAgICAgICBmb3IgS1ZNX0NQVUlEX0ZMQUdfU1RBVEVGVUxfRlVOQyBlbnRyaWVzLCBzZXQgaWYgdGhpcyBlbnRyeSBpcworICAgICAgICAgICB0aGUgZmlyc3QgZW50cnkgdG8gYmUgcmVhZCBieSBhIGNwdQorICAgZWF4LCBlYngsIGVjeCwgZWR4OiB0aGUgdmFsdWVzIHJldHVybmVkIGJ5IHRoZSBjcHVpZCBpbnN0cnVjdGlvbiBmb3IKKyAgICAgICAgIHRoaXMgZnVuY3Rpb24vaW5kZXggY29tYmluYXRpb24KKworVGhlIFRTQyBkZWFkbGluZSB0aW1lciBmZWF0dXJlIChDUFVJRCBsZWFmIDEsIGVjeFsyNF0pIGlzIGFsd2F5cyByZXR1cm5lZAorYXMgZmFsc2UsIHNpbmNlIHRoZSBmZWF0dXJlIGRlcGVuZHMgb24gS1ZNX0NSRUFURV9JUlFDSElQIGZvciBsb2NhbCBBUElDCitzdXBwb3J0LiAgSW5zdGVhZCBpdCBpcyByZXBvcnRlZCB2aWEKKworICBpb2N0bChLVk1fQ0hFQ0tfRVhURU5TSU9OLCBLVk1fQ0FQX1RTQ19ERUFETElORV9USU1FUikKKworaWYgdGhhdCByZXR1cm5zIHRydWUgYW5kIHlvdSB1c2UgS1ZNX0NSRUFURV9JUlFDSElQLCBvciBpZiB5b3UgZW11bGF0ZSB0aGUKK2ZlYXR1cmUgaW4gdXNlcnNwYWNlLCB0aGVuIHlvdSBjYW4gZW5hYmxlIHRoZSBmZWF0dXJlIGZvciBLVk1fU0VUX0NQVUlEMi4KKworCis0LjQ3IEtWTV9QUENfR0VUX1BWSU5GTworCitDYXBhYmlsaXR5OiBLVk1fQ0FQX1BQQ19HRVRfUFZJTkZPCitBcmNoaXRlY3R1cmVzOiBwcGMKK1R5cGU6IHZtIGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX3BwY19wdmluZm8gKG91dCkKK1JldHVybnM6IDAgb24gc3VjY2VzcywgITAgb24gZXJyb3IKKworc3RydWN0IGt2bV9wcGNfcHZpbmZvIHsKKwlfX3UzMiBmbGFnczsKKwlfX3UzMiBoY2FsbFs0XTsKKwlfX3U4ICBwYWRbMTA4XTsKK307CisKK1RoaXMgaW9jdGwgZmV0Y2hlcyBQViBzcGVjaWZpYyBpbmZvcm1hdGlvbiB0aGF0IG5lZWQgdG8gYmUgcGFzc2VkIHRvIHRoZSBndWVzdAordXNpbmcgdGhlIGRldmljZSB0cmVlIG9yIG90aGVyIG1lYW5zIGZyb20gdm0gY29udGV4dC4KKworVGhlIGhjYWxsIGFycmF5IGRlZmluZXMgNCBpbnN0cnVjdGlvbnMgdGhhdCBtYWtlIHVwIGEgaHlwZXJjYWxsLgorCitJZiBhbnkgYWRkaXRpb25hbCBmaWVsZCBnZXRzIGFkZGVkIHRvIHRoaXMgc3RydWN0dXJlIGxhdGVyIG9uLCBhIGJpdCBmb3IgdGhhdAorYWRkaXRpb25hbCBwaWVjZSBvZiBpbmZvcm1hdGlvbiB3aWxsIGJlIHNldCBpbiB0aGUgZmxhZ3MgYml0bWFwLgorCitUaGUgZmxhZ3MgYml0bWFwIGlzIGRlZmluZWQgYXM6CisKKyAgIC8qIHRoZSBob3N0IHN1cHBvcnRzIHRoZSBlUEFQUiBpZGxlIGhjYWxsCisgICAjZGVmaW5lIEtWTV9QUENfUFZJTkZPX0ZMQUdTX0VWX0lETEUgICAoMTw8MCkKKworNC40OCBLVk1fQVNTSUdOX1BDSV9ERVZJQ0UgKGRlcHJlY2F0ZWQpCisKK0NhcGFiaWxpdHk6IG5vbmUKK0FyY2hpdGVjdHVyZXM6IHg4NgorVHlwZTogdm0gaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1fYXNzaWduZWRfcGNpX2RldiAoaW4pCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yCisKK0Fzc2lnbnMgYSBob3N0IFBDSSBkZXZpY2UgdG8gdGhlIFZNLgorCitzdHJ1Y3Qga3ZtX2Fzc2lnbmVkX3BjaV9kZXYgeworCV9fdTMyIGFzc2lnbmVkX2Rldl9pZDsKKwlfX3UzMiBidXNucjsKKwlfX3UzMiBkZXZmbjsKKwlfX3UzMiBmbGFnczsKKwlfX3UzMiBzZWducjsKKwl1bmlvbiB7CisJCV9fdTMyIHJlc2VydmVkWzExXTsKKwl9OworfTsKKworVGhlIFBDSSBkZXZpY2UgaXMgc3BlY2lmaWVkIGJ5IHRoZSB0cmlwbGUgc2VnbnIsIGJ1c25yLCBhbmQgZGV2Zm4uCitJZGVudGlmaWNhdGlvbiBpbiBzdWNjZWVkaW5nIHNlcnZpY2UgcmVxdWVzdHMgaXMgZG9uZSB2aWEgYXNzaWduZWRfZGV2X2lkLiBUaGUKK2ZvbGxvd2luZyBmbGFncyBhcmUgc3BlY2lmaWVkOgorCisvKiBEZXBlbmRzIG9uIEtWTV9DQVBfSU9NTVUgKi8KKyNkZWZpbmUgS1ZNX0RFVl9BU1NJR05fRU5BQkxFX0lPTU1VCSgxIDw8IDApCisvKiBUaGUgZm9sbG93aW5nIHR3byBkZXBlbmQgb24gS1ZNX0NBUF9QQ0lfMl8zICovCisjZGVmaW5lIEtWTV9ERVZfQVNTSUdOX1BDSV8yXzMJCSgxIDw8IDEpCisjZGVmaW5lIEtWTV9ERVZfQVNTSUdOX01BU0tfSU5UWAkoMSA8PCAyKQorCitJZiBLVk1fREVWX0FTU0lHTl9QQ0lfMl8zIGlzIHNldCwgdGhlIGtlcm5lbCB3aWxsIG1hbmFnZSBsZWdhY3kgSU5UeCBpbnRlcnJ1cHRzCit2aWEgdGhlIFBDSS0yLjMtY29tcGxpYW50IGRldmljZS1sZXZlbCBtYXNrLCB0aHVzIGVuYWJsZSBJUlEgc2hhcmluZyB3aXRoIG90aGVyCithc3NpZ25lZCBkZXZpY2VzIG9yIGhvc3QgZGV2aWNlcy4gS1ZNX0RFVl9BU1NJR05fTUFTS19JTlRYIHNwZWNpZmllcyB0aGUKK2d1ZXN0J3MgdmlldyBvbiB0aGUgSU5UeCBtYXNrLCBzZWUgS1ZNX0FTU0lHTl9TRVRfSU5UWF9NQVNLIGZvciBkZXRhaWxzLgorCitUaGUgS1ZNX0RFVl9BU1NJR05fRU5BQkxFX0lPTU1VIGZsYWcgaXMgYSBtYW5kYXRvcnkgb3B0aW9uIHRvIGVuc3VyZQoraXNvbGF0aW9uIG9mIHRoZSBkZXZpY2UuICBVc2FnZXMgbm90IHNwZWNpZnlpbmcgdGhpcyBmbGFnIGFyZSBkZXByZWNhdGVkLgorCitPbmx5IFBDSSBoZWFkZXIgdHlwZSAwIGRldmljZXMgd2l0aCBQQ0kgQkFSIHJlc291cmNlcyBhcmUgc3VwcG9ydGVkIGJ5CitkZXZpY2UgYXNzaWdubWVudC4gIFRoZSB1c2VyIHJlcXVlc3RpbmcgdGhpcyBpb2N0bCBtdXN0IGhhdmUgcmVhZC93cml0ZQorYWNjZXNzIHRvIHRoZSBQQ0kgc3lzZnMgcmVzb3VyY2UgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXZpY2UuCisKK0Vycm9yczoKKyAgRU5PVFRZOiBrZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGlvY3RsCisKKyAgT3RoZXIgZXJyb3IgY29uZGl0aW9ucyBtYXkgYmUgZGVmaW5lZCBieSBpbmRpdmlkdWFsIGRldmljZSB0eXBlcyBvcgorICBoYXZlIHRoZWlyIHN0YW5kYXJkIG1lYW5pbmdzLgorCisKKzQuNDkgS1ZNX0RFQVNTSUdOX1BDSV9ERVZJQ0UgKGRlcHJlY2F0ZWQpCisKK0NhcGFiaWxpdHk6IG5vbmUKK0FyY2hpdGVjdHVyZXM6IHg4NgorVHlwZTogdm0gaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1fYXNzaWduZWRfcGNpX2RldiAoaW4pCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yCisKK0VuZHMgUENJIGRldmljZSBhc3NpZ25tZW50LCByZWxlYXNpbmcgYWxsIGFzc29jaWF0ZWQgcmVzb3VyY2VzLgorCitTZWUgS1ZNX0FTU0lHTl9QQ0lfREVWSUNFIGZvciB0aGUgZGF0YSBzdHJ1Y3R1cmUuIE9ubHkgYXNzaWduZWRfZGV2X2lkIGlzCit1c2VkIGluIGt2bV9hc3NpZ25lZF9wY2lfZGV2IHRvIGlkZW50aWZ5IHRoZSBkZXZpY2UuCisKK0Vycm9yczoKKyAgRU5PVFRZOiBrZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGlvY3RsCisKKyAgT3RoZXIgZXJyb3IgY29uZGl0aW9ucyBtYXkgYmUgZGVmaW5lZCBieSBpbmRpdmlkdWFsIGRldmljZSB0eXBlcyBvcgorICBoYXZlIHRoZWlyIHN0YW5kYXJkIG1lYW5pbmdzLgorCis0LjUwIEtWTV9BU1NJR05fREVWX0lSUSAoZGVwcmVjYXRlZCkKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9BU1NJR05fREVWX0lSUQorQXJjaGl0ZWN0dXJlczogeDg2CitUeXBlOiB2bSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9hc3NpZ25lZF9pcnEgKGluKQorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCitBc3NpZ25zIGFuIElSUSB0byBhIHBhc3NlZC10aHJvdWdoIGRldmljZS4KKworc3RydWN0IGt2bV9hc3NpZ25lZF9pcnEgeworCV9fdTMyIGFzc2lnbmVkX2Rldl9pZDsKKwlfX3UzMiBob3N0X2lycTsgLyogaWdub3JlZCAobGVnYWN5IGZpZWxkKSAqLworCV9fdTMyIGd1ZXN0X2lycTsKKwlfX3UzMiBmbGFnczsKKwl1bmlvbiB7CisJCV9fdTMyIHJlc2VydmVkWzEyXTsKKwl9OworfTsKKworVGhlIGZvbGxvd2luZyBmbGFncyBhcmUgZGVmaW5lZDoKKworI2RlZmluZSBLVk1fREVWX0lSUV9IT1NUX0lOVFggICAgKDEgPDwgMCkKKyNkZWZpbmUgS1ZNX0RFVl9JUlFfSE9TVF9NU0kgICAgICgxIDw8IDEpCisjZGVmaW5lIEtWTV9ERVZfSVJRX0hPU1RfTVNJWCAgICAoMSA8PCAyKQorCisjZGVmaW5lIEtWTV9ERVZfSVJRX0dVRVNUX0lOVFggICAoMSA8PCA4KQorI2RlZmluZSBLVk1fREVWX0lSUV9HVUVTVF9NU0kgICAgKDEgPDwgOSkKKyNkZWZpbmUgS1ZNX0RFVl9JUlFfR1VFU1RfTVNJWCAgICgxIDw8IDEwKQorCitJdCBpcyBub3QgdmFsaWQgdG8gc3BlY2lmeSBtdWx0aXBsZSB0eXBlcyBwZXIgaG9zdCBvciBndWVzdCBJUlEuIEhvd2V2ZXIsIHRoZQorSVJRIHR5cGUgb2YgaG9zdCBhbmQgZ3Vlc3QgY2FuIGRpZmZlciBvciBjYW4gZXZlbiBiZSBudWxsLgorCitFcnJvcnM6CisgIEVOT1RUWToga2VybmVsIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBpb2N0bAorCisgIE90aGVyIGVycm9yIGNvbmRpdGlvbnMgbWF5IGJlIGRlZmluZWQgYnkgaW5kaXZpZHVhbCBkZXZpY2UgdHlwZXMgb3IKKyAgaGF2ZSB0aGVpciBzdGFuZGFyZCBtZWFuaW5ncy4KKworCis0LjUxIEtWTV9ERUFTU0lHTl9ERVZfSVJRIChkZXByZWNhdGVkKQorCitDYXBhYmlsaXR5OiBLVk1fQ0FQX0FTU0lHTl9ERVZfSVJRCitBcmNoaXRlY3R1cmVzOiB4ODYKK1R5cGU6IHZtIGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX2Fzc2lnbmVkX2lycSAoaW4pCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yCisKK0VuZHMgYW4gSVJRIGFzc2lnbm1lbnQgdG8gYSBwYXNzZWQtdGhyb3VnaCBkZXZpY2UuCisKK1NlZSBLVk1fQVNTSUdOX0RFVl9JUlEgZm9yIHRoZSBkYXRhIHN0cnVjdHVyZS4gVGhlIHRhcmdldCBkZXZpY2UgaXMgc3BlY2lmaWVkCitieSBhc3NpZ25lZF9kZXZfaWQsIGZsYWdzIG11c3QgY29ycmVzcG9uZCB0byB0aGUgSVJRIHR5cGUgc3BlY2lmaWVkIG9uCitLVk1fQVNTSUdOX0RFVl9JUlEuIFBhcnRpYWwgZGVhc3NpZ25tZW50IG9mIGhvc3Qgb3IgZ3Vlc3QgSVJRIGlzIGFsbG93ZWQuCisKKworNC41MiBLVk1fU0VUX0dTSV9ST1VUSU5HCisKK0NhcGFiaWxpdHk6IEtWTV9DQVBfSVJRX1JPVVRJTkcKK0FyY2hpdGVjdHVyZXM6IHg4NiBzMzkwCitUeXBlOiB2bSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9pcnFfcm91dGluZyAoaW4pCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yCisKK1NldHMgdGhlIEdTSSByb3V0aW5nIHRhYmxlIGVudHJpZXMsIG92ZXJ3cml0aW5nIGFueSBwcmV2aW91c2x5IHNldCBlbnRyaWVzLgorCitzdHJ1Y3Qga3ZtX2lycV9yb3V0aW5nIHsKKwlfX3UzMiBucjsKKwlfX3UzMiBmbGFnczsKKwlzdHJ1Y3Qga3ZtX2lycV9yb3V0aW5nX2VudHJ5IGVudHJpZXNbMF07Cit9OworCitObyBmbGFncyBhcmUgc3BlY2lmaWVkIHNvIGZhciwgdGhlIGNvcnJlc3BvbmRpbmcgZmllbGQgbXVzdCBiZSBzZXQgdG8gemVyby4KKworc3RydWN0IGt2bV9pcnFfcm91dGluZ19lbnRyeSB7CisJX191MzIgZ3NpOworCV9fdTMyIHR5cGU7CisJX191MzIgZmxhZ3M7CisJX191MzIgcGFkOworCXVuaW9uIHsKKwkJc3RydWN0IGt2bV9pcnFfcm91dGluZ19pcnFjaGlwIGlycWNoaXA7CisJCXN0cnVjdCBrdm1faXJxX3JvdXRpbmdfbXNpIG1zaTsKKwkJc3RydWN0IGt2bV9pcnFfcm91dGluZ19zMzkwX2FkYXB0ZXIgYWRhcHRlcjsKKwkJX191MzIgcGFkWzhdOworCX0gdTsKK307CisKKy8qIGdzaSByb3V0aW5nIGVudHJ5IHR5cGVzICovCisjZGVmaW5lIEtWTV9JUlFfUk9VVElOR19JUlFDSElQIDEKKyNkZWZpbmUgS1ZNX0lSUV9ST1VUSU5HX01TSSAyCisjZGVmaW5lIEtWTV9JUlFfUk9VVElOR19TMzkwX0FEQVBURVIgMworCitObyBmbGFncyBhcmUgc3BlY2lmaWVkIHNvIGZhciwgdGhlIGNvcnJlc3BvbmRpbmcgZmllbGQgbXVzdCBiZSBzZXQgdG8gemVyby4KKworc3RydWN0IGt2bV9pcnFfcm91dGluZ19pcnFjaGlwIHsKKwlfX3UzMiBpcnFjaGlwOworCV9fdTMyIHBpbjsKK307CisKK3N0cnVjdCBrdm1faXJxX3JvdXRpbmdfbXNpIHsKKwlfX3UzMiBhZGRyZXNzX2xvOworCV9fdTMyIGFkZHJlc3NfaGk7CisJX191MzIgZGF0YTsKKwlfX3UzMiBwYWQ7Cit9OworCitzdHJ1Y3Qga3ZtX2lycV9yb3V0aW5nX3MzOTBfYWRhcHRlciB7CisJX191NjQgaW5kX2FkZHI7CisJX191NjQgc3VtbWFyeV9hZGRyOworCV9fdTY0IGluZF9vZmZzZXQ7CisJX191MzIgc3VtbWFyeV9vZmZzZXQ7CisJX191MzIgYWRhcHRlcl9pZDsKK307CisKKworNC41MyBLVk1fQVNTSUdOX1NFVF9NU0lYX05SIChkZXByZWNhdGVkKQorCitDYXBhYmlsaXR5OiBub25lCitBcmNoaXRlY3R1cmVzOiB4ODYKK1R5cGU6IHZtIGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX2Fzc2lnbmVkX21zaXhfbnIgKGluKQorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCitTZXQgdGhlIG51bWJlciBvZiBNU0ktWCBpbnRlcnJ1cHRzIGZvciBhbiBhc3NpZ25lZCBkZXZpY2UuIFRoZSBudW1iZXIgaXMKK3Jlc2V0IGFnYWluIGJ5IHRlcm1pbmF0aW5nIHRoZSBNU0ktWCBhc3NpZ25tZW50IG9mIHRoZSBkZXZpY2UgdmlhCitLVk1fREVBU1NJR05fREVWX0lSUS4gQ2FsbGluZyB0aGlzIHNlcnZpY2UgbW9yZSB0aGFuIG9uY2UgYXQgYW55IGVhcmxpZXIKK3BvaW50IHdpbGwgZmFpbC4KKworc3RydWN0IGt2bV9hc3NpZ25lZF9tc2l4X25yIHsKKwlfX3UzMiBhc3NpZ25lZF9kZXZfaWQ7CisJX191MTYgZW50cnlfbnI7CisJX191MTYgcGFkZGluZzsKK307CisKKyNkZWZpbmUgS1ZNX01BWF9NU0lYX1BFUl9ERVYJCTI1NgorCisKKzQuNTQgS1ZNX0FTU0lHTl9TRVRfTVNJWF9FTlRSWSAoZGVwcmVjYXRlZCkKKworQ2FwYWJpbGl0eTogbm9uZQorQXJjaGl0ZWN0dXJlczogeDg2CitUeXBlOiB2bSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9hc3NpZ25lZF9tc2l4X2VudHJ5IChpbikKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworU3BlY2lmaWVzIHRoZSByb3V0aW5nIG9mIGFuIE1TSS1YIGFzc2lnbmVkIGRldmljZSBpbnRlcnJ1cHQgdG8gYSBHU0kuIFNldHRpbmcKK3RoZSBHU0kgdmVjdG9yIHRvIHplcm8gbWVhbnMgZGlzYWJsaW5nIHRoZSBpbnRlcnJ1cHQuCisKK3N0cnVjdCBrdm1fYXNzaWduZWRfbXNpeF9lbnRyeSB7CisJX191MzIgYXNzaWduZWRfZGV2X2lkOworCV9fdTMyIGdzaTsKKwlfX3UxNiBlbnRyeTsgLyogVGhlIGluZGV4IG9mIGVudHJ5IGluIHRoZSBNU0ktWCB0YWJsZSAqLworCV9fdTE2IHBhZGRpbmdbM107Cit9OworCitFcnJvcnM6CisgIEVOT1RUWToga2VybmVsIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBpb2N0bAorCisgIE90aGVyIGVycm9yIGNvbmRpdGlvbnMgbWF5IGJlIGRlZmluZWQgYnkgaW5kaXZpZHVhbCBkZXZpY2UgdHlwZXMgb3IKKyAgaGF2ZSB0aGVpciBzdGFuZGFyZCBtZWFuaW5ncy4KKworCis0LjU1IEtWTV9TRVRfVFNDX0tIWgorCitDYXBhYmlsaXR5OiBLVk1fQ0FQX1RTQ19DT05UUk9MCitBcmNoaXRlY3R1cmVzOiB4ODYKK1R5cGU6IHZjcHUgaW9jdGwKK1BhcmFtZXRlcnM6IHZpcnR1YWwgdHNjX2toegorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCitTcGVjaWZpZXMgdGhlIHRzYyBmcmVxdWVuY3kgZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmUuIFRoZSB1bml0IG9mIHRoZQorZnJlcXVlbmN5IGlzIEtIei4KKworCis0LjU2IEtWTV9HRVRfVFNDX0tIWgorCitDYXBhYmlsaXR5OiBLVk1fQ0FQX0dFVF9UU0NfS0haCitBcmNoaXRlY3R1cmVzOiB4ODYKK1R5cGU6IHZjcHUgaW9jdGwKK1BhcmFtZXRlcnM6IG5vbmUKK1JldHVybnM6IHZpcnR1YWwgdHNjLWtoeiBvbiBzdWNjZXNzLCBuZWdhdGl2ZSB2YWx1ZSBvbiBlcnJvcgorCitSZXR1cm5zIHRoZSB0c2MgZnJlcXVlbmN5IG9mIHRoZSBndWVzdC4gVGhlIHVuaXQgb2YgdGhlIHJldHVybiB2YWx1ZSBpcworS0h6LiBJZiB0aGUgaG9zdCBoYXMgdW5zdGFibGUgdHNjIHRoaXMgaW9jdGwgcmV0dXJucyAtRUlPIGluc3RlYWQgYXMgYW4KK2Vycm9yLgorCisKKzQuNTcgS1ZNX0dFVF9MQVBJQworCitDYXBhYmlsaXR5OiBLVk1fQ0FQX0lSUUNISVAKK0FyY2hpdGVjdHVyZXM6IHg4NgorVHlwZTogdmNwdSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9sYXBpY19zdGF0ZSAob3V0KQorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCisjZGVmaW5lIEtWTV9BUElDX1JFR19TSVpFIDB4NDAwCitzdHJ1Y3Qga3ZtX2xhcGljX3N0YXRlIHsKKwljaGFyIHJlZ3NbS1ZNX0FQSUNfUkVHX1NJWkVdOworfTsKKworUmVhZHMgdGhlIExvY2FsIEFQSUMgcmVnaXN0ZXJzIGFuZCBjb3BpZXMgdGhlbSBpbnRvIHRoZSBpbnB1dCBhcmd1bWVudC4gIFRoZQorZGF0YSBmb3JtYXQgYW5kIGxheW91dCBhcmUgdGhlIHNhbWUgYXMgZG9jdW1lbnRlZCBpbiB0aGUgYXJjaGl0ZWN0dXJlIG1hbnVhbC4KKworCis0LjU4IEtWTV9TRVRfTEFQSUMKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9JUlFDSElQCitBcmNoaXRlY3R1cmVzOiB4ODYKK1R5cGU6IHZjcHUgaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1fbGFwaWNfc3RhdGUgKGluKQorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCisjZGVmaW5lIEtWTV9BUElDX1JFR19TSVpFIDB4NDAwCitzdHJ1Y3Qga3ZtX2xhcGljX3N0YXRlIHsKKwljaGFyIHJlZ3NbS1ZNX0FQSUNfUkVHX1NJWkVdOworfTsKKworQ29waWVzIHRoZSBpbnB1dCBhcmd1bWVudCBpbnRvIHRoZSBMb2NhbCBBUElDIHJlZ2lzdGVycy4gIFRoZSBkYXRhIGZvcm1hdAorYW5kIGxheW91dCBhcmUgdGhlIHNhbWUgYXMgZG9jdW1lbnRlZCBpbiB0aGUgYXJjaGl0ZWN0dXJlIG1hbnVhbC4KKworCis0LjU5IEtWTV9JT0VWRU5URkQKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9JT0VWRU5URkQKK0FyY2hpdGVjdHVyZXM6IGFsbAorVHlwZTogdm0gaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1faW9ldmVudGZkIChpbikKK1JldHVybnM6IDAgb24gc3VjY2VzcywgITAgb24gZXJyb3IKKworVGhpcyBpb2N0bCBhdHRhY2hlcyBvciBkZXRhY2hlcyBhbiBpb2V2ZW50ZmQgdG8gYSBsZWdhbCBwaW8vbW1pbyBhZGRyZXNzCit3aXRoaW4gdGhlIGd1ZXN0LiAgQSBndWVzdCB3cml0ZSBpbiB0aGUgcmVnaXN0ZXJlZCBhZGRyZXNzIHdpbGwgc2lnbmFsIHRoZQorcHJvdmlkZWQgZXZlbnQgaW5zdGVhZCBvZiB0cmlnZ2VyaW5nIGFuIGV4aXQuCisKK3N0cnVjdCBrdm1faW9ldmVudGZkIHsKKwlfX3U2NCBkYXRhbWF0Y2g7CisJX191NjQgYWRkcjsgICAgICAgIC8qIGxlZ2FsIHBpby9tbWlvIGFkZHJlc3MgKi8KKwlfX3UzMiBsZW47ICAgICAgICAgLyogMCwgMSwgMiwgNCwgb3IgOCBieXRlcyAgICAqLworCV9fczMyIGZkOworCV9fdTMyIGZsYWdzOworCV9fdTggIHBhZFszNl07Cit9OworCitGb3IgdGhlIHNwZWNpYWwgY2FzZSBvZiB2aXJ0aW8tY2N3IGRldmljZXMgb24gczM5MCwgdGhlIGlvZXZlbnQgaXMgbWF0Y2hlZAordG8gYSBzdWJjaGFubmVsL3ZpcnRxdWV1ZSB0dXBsZSBpbnN0ZWFkLgorCitUaGUgZm9sbG93aW5nIGZsYWdzIGFyZSBkZWZpbmVkOgorCisjZGVmaW5lIEtWTV9JT0VWRU5URkRfRkxBR19EQVRBTUFUQ0ggKDEgPDwga3ZtX2lvZXZlbnRmZF9mbGFnX25yX2RhdGFtYXRjaCkKKyNkZWZpbmUgS1ZNX0lPRVZFTlRGRF9GTEFHX1BJTyAgICAgICAoMSA8PCBrdm1faW9ldmVudGZkX2ZsYWdfbnJfcGlvKQorI2RlZmluZSBLVk1fSU9FVkVOVEZEX0ZMQUdfREVBU1NJR04gICgxIDw8IGt2bV9pb2V2ZW50ZmRfZmxhZ19ucl9kZWFzc2lnbikKKyNkZWZpbmUgS1ZNX0lPRVZFTlRGRF9GTEFHX1ZJUlRJT19DQ1dfTk9USUZZIFwKKwkoMSA8PCBrdm1faW9ldmVudGZkX2ZsYWdfbnJfdmlydGlvX2Njd19ub3RpZnkpCisKK0lmIGRhdGFtYXRjaCBmbGFnIGlzIHNldCwgdGhlIGV2ZW50IHdpbGwgYmUgc2lnbmFsZWQgb25seSBpZiB0aGUgd3JpdHRlbiB2YWx1ZQordG8gdGhlIHJlZ2lzdGVyZWQgYWRkcmVzcyBpcyBlcXVhbCB0byBkYXRhbWF0Y2ggaW4gc3RydWN0IGt2bV9pb2V2ZW50ZmQuCisKK0ZvciB2aXJ0aW8tY2N3IGRldmljZXMsIGFkZHIgY29udGFpbnMgdGhlIHN1YmNoYW5uZWwgaWQgYW5kIGRhdGFtYXRjaCB0aGUKK3ZpcnRxdWV1ZSBpbmRleC4KKworV2l0aCBLVk1fQ0FQX0lPRVZFTlRGRF9BTllfTEVOR1RILCBhIHplcm8gbGVuZ3RoIGlvZXZlbnRmZCBpcyBhbGxvd2VkLCBhbmQKK3RoZSBrZXJuZWwgd2lsbCBpZ25vcmUgdGhlIGxlbmd0aCBvZiBndWVzdCB3cml0ZSBhbmQgbWF5IGdldCBhIGZhc3RlciB2bWV4aXQuCitUaGUgc3BlZWR1cCBtYXkgb25seSBhcHBseSB0byBzcGVjaWZpYyBhcmNoaXRlY3R1cmVzLCBidXQgdGhlIGlvZXZlbnRmZCB3aWxsCit3b3JrIGFueXdheS4KKworNC42MCBLVk1fRElSVFlfVExCCisKK0NhcGFiaWxpdHk6IEtWTV9DQVBfU1dfVExCCitBcmNoaXRlY3R1cmVzOiBwcGMKK1R5cGU6IHZjcHUgaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1fZGlydHlfdGxiIChpbikKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworc3RydWN0IGt2bV9kaXJ0eV90bGIgeworCV9fdTY0IGJpdG1hcDsKKwlfX3UzMiBudW1fZGlydHk7Cit9OworCitUaGlzIG11c3QgYmUgY2FsbGVkIHdoZW5ldmVyIHVzZXJzcGFjZSBoYXMgY2hhbmdlZCBhbiBlbnRyeSBpbiB0aGUgc2hhcmVkCitUTEIsIHByaW9yIHRvIGNhbGxpbmcgS1ZNX1JVTiBvbiB0aGUgYXNzb2NpYXRlZCB2Y3B1LgorCitUaGUgImJpdG1hcCIgZmllbGQgaXMgdGhlIHVzZXJzcGFjZSBhZGRyZXNzIG9mIGFuIGFycmF5LiAgVGhpcyBhcnJheQorY29uc2lzdHMgb2YgYSBudW1iZXIgb2YgYml0cywgZXF1YWwgdG8gdGhlIHRvdGFsIG51bWJlciBvZiBUTEIgZW50cmllcyBhcworZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCBzdWNjZXNzZnVsIGNhbGwgdG8gS1ZNX0NPTkZJR19UTEIsIHJvdW5kZWQgdXAgdG8gdGhlCituZWFyZXN0IG11bHRpcGxlIG9mIDY0LgorCitFYWNoIGJpdCBjb3JyZXNwb25kcyB0byBvbmUgVExCIGVudHJ5LCBvcmRlcmVkIHRoZSBzYW1lIGFzIGluIHRoZSBzaGFyZWQgVExCCithcnJheS4KKworVGhlIGFycmF5IGlzIGxpdHRsZS1lbmRpYW46IHRoZSBiaXQgMCBpcyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IG9mIHRoZQorZmlyc3QgYnl0ZSwgYml0IDggaXMgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBvZiB0aGUgc2Vjb25kIGJ5dGUsIGV0Yy4KK1RoaXMgYXZvaWRzIGFueSBjb21wbGljYXRpb25zIHdpdGggZGlmZmVyaW5nIHdvcmQgc2l6ZXMuCisKK1RoZSAibnVtX2RpcnR5IiBmaWVsZCBpcyBhIHBlcmZvcm1hbmNlIGhpbnQgZm9yIEtWTSB0byBkZXRlcm1pbmUgd2hldGhlciBpdAorc2hvdWxkIHNraXAgcHJvY2Vzc2luZyB0aGUgYml0bWFwIGFuZCBqdXN0IGludmFsaWRhdGUgZXZlcnl0aGluZy4gIEl0IG11c3QKK2JlIHNldCB0byB0aGUgbnVtYmVyIG9mIHNldCBiaXRzIGluIHRoZSBiaXRtYXAuCisKKworNC42MSBLVk1fQVNTSUdOX1NFVF9JTlRYX01BU0sgKGRlcHJlY2F0ZWQpCisKK0NhcGFiaWxpdHk6IEtWTV9DQVBfUENJXzJfMworQXJjaGl0ZWN0dXJlczogeDg2CitUeXBlOiB2bSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9hc3NpZ25lZF9wY2lfZGV2IChpbikKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworQWxsb3dzIHVzZXJzcGFjZSB0byBtYXNrIFBDSSBJTlR4IGludGVycnVwdHMgZnJvbSB0aGUgYXNzaWduZWQgZGV2aWNlLiAgVGhlCitrZXJuZWwgd2lsbCBub3QgZGVsaXZlciBJTlR4IGludGVycnVwdHMgdG8gdGhlIGd1ZXN0IGJldHdlZW4gc2V0dGluZyBhbmQKK2NsZWFyaW5nIG9mIEtWTV9BU1NJR05fU0VUX0lOVFhfTUFTSyB2aWEgdGhpcyBpbnRlcmZhY2UuICBUaGlzIGVuYWJsZXMgdXNlIG9mCithbmQgZW11bGF0aW9uIG9mIFBDSSAyLjMgSU5UeCBkaXNhYmxlIGNvbW1hbmQgcmVnaXN0ZXIgYmVoYXZpb3IuCisKK1RoaXMgbWF5IGJlIHVzZWQgZm9yIGJvdGggUENJIDIuMyBkZXZpY2VzIHN1cHBvcnRpbmcgSU5UeCBkaXNhYmxlIG5hdGl2ZWx5IGFuZAorb2xkZXIgZGV2aWNlcyBsYWNraW5nIHRoaXMgc3VwcG9ydC4gVXNlcnNwYWNlIGlzIHJlc3BvbnNpYmxlIGZvciBlbXVsYXRpbmcgdGhlCityZWFkIHZhbHVlIG9mIHRoZSBJTlR4IGRpc2FibGUgYml0IGluIHRoZSBndWVzdCB2aXNpYmxlIFBDSSBjb21tYW5kIHJlZ2lzdGVyLgorV2hlbiBtb2RpZnlpbmcgdGhlIElOVHggZGlzYWJsZSBzdGF0ZSwgdXNlcnNwYWNlIHNob3VsZCBwcmVjZWRlIHVwZGF0aW5nIHRoZQorcGh5c2ljYWwgZGV2aWNlIGNvbW1hbmQgcmVnaXN0ZXIgYnkgY2FsbGluZyB0aGlzIGlvY3RsIHRvIGluZm9ybSB0aGUga2VybmVsIG9mCit0aGUgbmV3IGludGVuZGVkIElOVHggbWFzayBzdGF0ZS4KKworTm90ZSB0aGF0IHRoZSBrZXJuZWwgdXNlcyB0aGUgZGV2aWNlIElOVHggZGlzYWJsZSBiaXQgdG8gaW50ZXJuYWxseSBtYW5hZ2UgdGhlCitkZXZpY2UgaW50ZXJydXB0IHN0YXRlIGZvciBQQ0kgMi4zIGRldmljZXMuICBSZWFkcyBvZiB0aGlzIHJlZ2lzdGVyIG1heQordGhlcmVmb3JlIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgdmFsdWUuICBXcml0ZXMgc2hvdWxkIGFsd2F5cyB1c2UgdGhlIGd1ZXN0CitpbnRlbmRlZCBJTlR4IGRpc2FibGUgdmFsdWUgcmF0aGVyIHRoYW4gYXR0ZW1wdGluZyB0byByZWFkLWNvcHktdXBkYXRlIHRoZQorY3VycmVudCBwaHlzaWNhbCBkZXZpY2Ugc3RhdGUuICBSYWNlcyBiZXR3ZWVuIHVzZXIgYW5kIGtlcm5lbCB1cGRhdGVzIHRvIHRoZQorSU5UeCBkaXNhYmxlIGJpdCBhcmUgaGFuZGxlZCBsYXppbHkgaW4gdGhlIGtlcm5lbC4gIEl0J3MgcG9zc2libGUgdGhlIGRldmljZQorbWF5IGdlbmVyYXRlIHVuaW50ZW5kZWQgaW50ZXJydXB0cywgYnV0IHRoZXkgd2lsbCBub3QgYmUgaW5qZWN0ZWQgaW50byB0aGUKK2d1ZXN0LgorCitTZWUgS1ZNX0FTU0lHTl9ERVZfSVJRIGZvciB0aGUgZGF0YSBzdHJ1Y3R1cmUuICBUaGUgdGFyZ2V0IGRldmljZSBpcyBzcGVjaWZpZWQKK2J5IGFzc2lnbmVkX2Rldl9pZC4gIEluIHRoZSBmbGFncyBmaWVsZCwgb25seSBLVk1fREVWX0FTU0lHTl9NQVNLX0lOVFggaXMKK2V2YWx1YXRlZC4KKworCis0LjYyIEtWTV9DUkVBVEVfU1BBUFJfVENFCisKK0NhcGFiaWxpdHk6IEtWTV9DQVBfU1BBUFJfVENFCitBcmNoaXRlY3R1cmVzOiBwb3dlcnBjCitUeXBlOiB2bSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9jcmVhdGVfc3BhcHJfdGNlIChpbikKK1JldHVybnM6IGZpbGUgZGVzY3JpcHRvciBmb3IgbWFuaXB1bGF0aW5nIHRoZSBjcmVhdGVkIFRDRSB0YWJsZQorCitUaGlzIGNyZWF0ZXMgYSB2aXJ0dWFsIFRDRSAodHJhbnNsYXRpb24gY29udHJvbCBlbnRyeSkgdGFibGUsIHdoaWNoCitpcyBhbiBJT01NVSBmb3IgUEFQUi1zdHlsZSB2aXJ0dWFsIEkvTy4gIEl0IGlzIHVzZWQgdG8gdHJhbnNsYXRlCitsb2dpY2FsIGFkZHJlc3NlcyB1c2VkIGluIHZpcnR1YWwgSS9PIGludG8gZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzc2VzLAorYW5kIHByb3ZpZGVzIGEgc2NhdHRlci9nYXRoZXIgY2FwYWJpbGl0eSBmb3IgUEFQUiB2aXJ0dWFsIEkvTy4KKworLyogZm9yIEtWTV9DQVBfU1BBUFJfVENFICovCitzdHJ1Y3Qga3ZtX2NyZWF0ZV9zcGFwcl90Y2UgeworCV9fdTY0IGxpb2JuOworCV9fdTMyIHdpbmRvd19zaXplOworfTsKKworVGhlIGxpb2JuIGZpZWxkIGdpdmVzIHRoZSBsb2dpY2FsIElPIGJ1cyBudW1iZXIgZm9yIHdoaWNoIHRvIGNyZWF0ZSBhCitUQ0UgdGFibGUuICBUaGUgd2luZG93X3NpemUgZmllbGQgc3BlY2lmaWVzIHRoZSBzaXplIG9mIHRoZSBETUEgd2luZG93Cit3aGljaCB0aGlzIFRDRSB0YWJsZSB3aWxsIHRyYW5zbGF0ZSAtIHRoZSB0YWJsZSB3aWxsIGNvbnRhaW4gb25lIDY0CitiaXQgVENFIGVudHJ5IGZvciBldmVyeSA0a2lCIG9mIHRoZSBETUEgd2luZG93LgorCitXaGVuIHRoZSBndWVzdCBpc3N1ZXMgYW4gSF9QVVRfVENFIGhjYWxsIG9uIGEgbGlvYm4gZm9yIHdoaWNoIGEgVENFCit0YWJsZSBoYXMgYmVlbiBjcmVhdGVkIHVzaW5nIHRoaXMgaW9jdGwoKSwgdGhlIGtlcm5lbCB3aWxsIGhhbmRsZSBpdAoraW4gcmVhbCBtb2RlLCB1cGRhdGluZyB0aGUgVENFIHRhYmxlLiAgSF9QVVRfVENFIGNhbGxzIGZvciBvdGhlcgorbGlvYm5zIHdpbGwgY2F1c2UgYSB2bSBleGl0IGFuZCBtdXN0IGJlIGhhbmRsZWQgYnkgdXNlcnNwYWNlLgorCitUaGUgcmV0dXJuIHZhbHVlIGlzIGEgZmlsZSBkZXNjcmlwdG9yIHdoaWNoIGNhbiBiZSBwYXNzZWQgdG8gbW1hcCgyKQordG8gbWFwIHRoZSBjcmVhdGVkIFRDRSB0YWJsZSBpbnRvIHVzZXJzcGFjZS4gIFRoaXMgbGV0cyB1c2Vyc3BhY2UgcmVhZAordGhlIGVudHJpZXMgd3JpdHRlbiBieSBrZXJuZWwtaGFuZGxlZCBIX1BVVF9UQ0UgY2FsbHMsIGFuZCBhbHNvIGxldHMKK3VzZXJzcGFjZSB1cGRhdGUgdGhlIFRDRSB0YWJsZSBkaXJlY3RseSB3aGljaCBpcyB1c2VmdWwgaW4gc29tZQorY2lyY3Vtc3RhbmNlcy4KKworCis0LjYzIEtWTV9BTExPQ0FURV9STUEKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9QUENfUk1BCitBcmNoaXRlY3R1cmVzOiBwb3dlcnBjCitUeXBlOiB2bSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9hbGxvY2F0ZV9ybWEgKG91dCkKK1JldHVybnM6IGZpbGUgZGVzY3JpcHRvciBmb3IgbWFwcGluZyB0aGUgYWxsb2NhdGVkIFJNQQorCitUaGlzIGFsbG9jYXRlcyBhIFJlYWwgTW9kZSBBcmVhIChSTUEpIGZyb20gdGhlIHBvb2wgYWxsb2NhdGVkIGF0IGJvb3QKK3RpbWUgYnkgdGhlIGtlcm5lbC4gIEFuIFJNQSBpcyBhIHBoeXNpY2FsbHktY29udGlndW91cywgYWxpZ25lZCByZWdpb24KK29mIG1lbW9yeSB1c2VkIG9uIG9sZGVyIFBPV0VSIHByb2Nlc3NvcnMgdG8gcHJvdmlkZSB0aGUgbWVtb3J5IHdoaWNoCit3aWxsIGJlIGFjY2Vzc2VkIGJ5IHJlYWwtbW9kZSAoTU1VIG9mZikgYWNjZXNzZXMgaW4gYSBLVk0gZ3Vlc3QuCitQT1dFUiBwcm9jZXNzb3JzIHN1cHBvcnQgYSBzZXQgb2Ygc2l6ZXMgZm9yIHRoZSBSTUEgdGhhdCB1c3VhbGx5CitpbmNsdWRlcyA2NE1CLCAxMjhNQiwgMjU2TUIgYW5kIHNvbWUgbGFyZ2VyIHBvd2VycyBvZiB0d28uCisKKy8qIGZvciBLVk1fQUxMT0NBVEVfUk1BICovCitzdHJ1Y3Qga3ZtX2FsbG9jYXRlX3JtYSB7CisJX191NjQgcm1hX3NpemU7Cit9OworCitUaGUgcmV0dXJuIHZhbHVlIGlzIGEgZmlsZSBkZXNjcmlwdG9yIHdoaWNoIGNhbiBiZSBwYXNzZWQgdG8gbW1hcCgyKQordG8gbWFwIHRoZSBhbGxvY2F0ZWQgUk1BIGludG8gdXNlcnNwYWNlLiAgVGhlIG1hcHBlZCBhcmVhIGNhbiB0aGVuIGJlCitwYXNzZWQgdG8gdGhlIEtWTV9TRVRfVVNFUl9NRU1PUllfUkVHSU9OIGlvY3RsIHRvIGVzdGFibGlzaCBpdCBhcyB0aGUKK1JNQSBmb3IgYSB2aXJ0dWFsIG1hY2hpbmUuICBUaGUgc2l6ZSBvZiB0aGUgUk1BIGluIGJ5dGVzICh3aGljaCBpcworZml4ZWQgYXQgaG9zdCBrZXJuZWwgYm9vdCB0aW1lKSBpcyByZXR1cm5lZCBpbiB0aGUgcm1hX3NpemUgZmllbGQgb2YKK3RoZSBhcmd1bWVudCBzdHJ1Y3R1cmUuCisKK1RoZSBLVk1fQ0FQX1BQQ19STUEgY2FwYWJpbGl0eSBpcyAxIG9yIDIgaWYgdGhlIEtWTV9BTExPQ0FURV9STUEgaW9jdGwKK2lzIHN1cHBvcnRlZDsgMiBpZiB0aGUgcHJvY2Vzc29yIHJlcXVpcmVzIGFsbCB2aXJ0dWFsIG1hY2hpbmVzIHRvIGhhdmUKK2FuIFJNQSwgb3IgMSBpZiB0aGUgcHJvY2Vzc29yIGNhbiB1c2UgYW4gUk1BIGJ1dCBkb2Vzbid0IHJlcXVpcmUgaXQsCitiZWNhdXNlIGl0IHN1cHBvcnRzIHRoZSBWaXJ0dWFsIFJNQSAoVlJNQSkgZmFjaWxpdHkuCisKKworNC42NCBLVk1fTk1JCisKK0NhcGFiaWxpdHk6IEtWTV9DQVBfVVNFUl9OTUkKK0FyY2hpdGVjdHVyZXM6IHg4NgorVHlwZTogdmNwdSBpb2N0bAorUGFyYW1ldGVyczogbm9uZQorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCitRdWV1ZXMgYW4gTk1JIG9uIHRoZSB0aHJlYWQncyB2Y3B1LiAgTm90ZSB0aGlzIGlzIHdlbGwgZGVmaW5lZCBvbmx5Cit3aGVuIEtWTV9DUkVBVEVfSVJRQ0hJUCBoYXMgbm90IGJlZW4gY2FsbGVkLCBzaW5jZSB0aGlzIGlzIGFuIGludGVyZmFjZQorYmV0d2VlbiB0aGUgdmlydHVhbCBjcHUgY29yZSBhbmQgdmlydHVhbCBsb2NhbCBBUElDLiAgQWZ0ZXIgS1ZNX0NSRUFURV9JUlFDSElQCitoYXMgYmVlbiBjYWxsZWQsIHRoaXMgaW50ZXJmYWNlIGlzIGNvbXBsZXRlbHkgZW11bGF0ZWQgd2l0aGluIHRoZSBrZXJuZWwuCisKK1RvIHVzZSB0aGlzIHRvIGVtdWxhdGUgdGhlIExJTlQxIGlucHV0IHdpdGggS1ZNX0NSRUFURV9JUlFDSElQLCB1c2UgdGhlCitmb2xsb3dpbmcgYWxnb3JpdGhtOgorCisgIC0gcGF1c2UgdGhlIHZjcHUKKyAgLSByZWFkIHRoZSBsb2NhbCBBUElDJ3Mgc3RhdGUgKEtWTV9HRVRfTEFQSUMpCisgIC0gY2hlY2sgd2hldGhlciBjaGFuZ2luZyBMSU5UMSB3aWxsIHF1ZXVlIGFuIE5NSSAoc2VlIHRoZSBMVlQgZW50cnkgZm9yIExJTlQxKQorICAtIGlmIHNvLCBpc3N1ZSBLVk1fTk1JCisgIC0gcmVzdW1lIHRoZSB2Y3B1CisKK1NvbWUgZ3Vlc3RzIGNvbmZpZ3VyZSB0aGUgTElOVDEgTk1JIGlucHV0IHRvIGNhdXNlIGEgcGFuaWMsIGFpZGluZyBpbgorZGVidWdnaW5nLgorCisKKzQuNjUgS1ZNX1MzOTBfVUNBU19NQVAKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9TMzkwX1VDT05UUk9MCitBcmNoaXRlY3R1cmVzOiBzMzkwCitUeXBlOiB2Y3B1IGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX3MzOTBfdWNhc19tYXBwaW5nIChpbikKK1JldHVybnM6IDAgaW4gY2FzZSBvZiBzdWNjZXNzCisKK1RoZSBwYXJhbWV0ZXIgaXMgZGVmaW5lZCBsaWtlIHRoaXM6CisJc3RydWN0IGt2bV9zMzkwX3VjYXNfbWFwcGluZyB7CisJCV9fdTY0IHVzZXJfYWRkcjsKKwkJX191NjQgdmNwdV9hZGRyOworCQlfX3U2NCBsZW5ndGg7CisJfTsKKworVGhpcyBpb2N0bCBtYXBzIHRoZSBtZW1vcnkgYXQgInVzZXJfYWRkciIgd2l0aCB0aGUgbGVuZ3RoICJsZW5ndGgiIHRvCit0aGUgdmNwdSdzIGFkZHJlc3Mgc3BhY2Ugc3RhcnRpbmcgYXQgInZjcHVfYWRkciIuIEFsbCBwYXJhbWV0ZXJzIG5lZWQgdG8KK2JlIGFsaWduZWQgYnkgMSBtZWdhYnl0ZS4KKworCis0LjY2IEtWTV9TMzkwX1VDQVNfVU5NQVAKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9TMzkwX1VDT05UUk9MCitBcmNoaXRlY3R1cmVzOiBzMzkwCitUeXBlOiB2Y3B1IGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX3MzOTBfdWNhc19tYXBwaW5nIChpbikKK1JldHVybnM6IDAgaW4gY2FzZSBvZiBzdWNjZXNzCisKK1RoZSBwYXJhbWV0ZXIgaXMgZGVmaW5lZCBsaWtlIHRoaXM6CisJc3RydWN0IGt2bV9zMzkwX3VjYXNfbWFwcGluZyB7CisJCV9fdTY0IHVzZXJfYWRkcjsKKwkJX191NjQgdmNwdV9hZGRyOworCQlfX3U2NCBsZW5ndGg7CisJfTsKKworVGhpcyBpb2N0bCB1bm1hcHMgdGhlIG1lbW9yeSBpbiB0aGUgdmNwdSdzIGFkZHJlc3Mgc3BhY2Ugc3RhcnRpbmcgYXQKKyJ2Y3B1X2FkZHIiIHdpdGggdGhlIGxlbmd0aCAibGVuZ3RoIi4gVGhlIGZpZWxkICJ1c2VyX2FkZHIiIGlzIGlnbm9yZWQuCitBbGwgcGFyYW1ldGVycyBuZWVkIHRvIGJlIGFsaWduZWQgYnkgMSBtZWdhYnl0ZS4KKworCis0LjY3IEtWTV9TMzkwX1ZDUFVfRkFVTFQKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9TMzkwX1VDT05UUk9MCitBcmNoaXRlY3R1cmVzOiBzMzkwCitUeXBlOiB2Y3B1IGlvY3RsCitQYXJhbWV0ZXJzOiB2Y3B1IGFic29sdXRlIGFkZHJlc3MgKGluKQorUmV0dXJuczogMCBpbiBjYXNlIG9mIHN1Y2Nlc3MKKworVGhpcyBjYWxsIGNyZWF0ZXMgYSBwYWdlIHRhYmxlIGVudHJ5IG9uIHRoZSB2aXJ0dWFsIGNwdSdzIGFkZHJlc3Mgc3BhY2UKKyhmb3IgdXNlciBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXMpIG9yIHRoZSB2aXJ0dWFsIG1hY2hpbmUncyBhZGRyZXNzCitzcGFjZSAoZm9yIHJlZ3VsYXIgdmlydHVhbCBtYWNoaW5lcykuIFRoaXMgb25seSB3b3JrcyBmb3IgbWlub3IgZmF1bHRzLAordGh1cyBpdCdzIHJlY29tbWVuZGVkIHRvIGFjY2VzcyBzdWJqZWN0IG1lbW9yeSBwYWdlIHZpYSB0aGUgdXNlciBwYWdlCit0YWJsZSB1cGZyb250LiBUaGlzIGlzIHVzZWZ1bCB0byBoYW5kbGUgdmFsaWRpdHkgaW50ZXJjZXB0cyBmb3IgdXNlcgorY29udHJvbGxlZCB2aXJ0dWFsIG1hY2hpbmVzIHRvIGZhdWx0IGluIHRoZSB2aXJ0dWFsIGNwdSdzIGxvd2NvcmUgcGFnZXMKK3ByaW9yIHRvIGNhbGxpbmcgdGhlIEtWTV9SVU4gaW9jdGwuCisKKworNC42OCBLVk1fU0VUX09ORV9SRUcKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9PTkVfUkVHCitBcmNoaXRlY3R1cmVzOiBhbGwKK1R5cGU6IHZjcHUgaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1fb25lX3JlZyAoaW4pCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIHZhbHVlIG9uIGZhaWx1cmUKKworc3RydWN0IGt2bV9vbmVfcmVnIHsKKyAgICAgICBfX3U2NCBpZDsKKyAgICAgICBfX3U2NCBhZGRyOworfTsKKworVXNpbmcgdGhpcyBpb2N0bCwgYSBzaW5nbGUgdmNwdSByZWdpc3RlciBjYW4gYmUgc2V0IHRvIGEgc3BlY2lmaWMgdmFsdWUKK2RlZmluZWQgYnkgdXNlciBzcGFjZSB3aXRoIHRoZSBwYXNzZWQgaW4gc3RydWN0IGt2bV9vbmVfcmVnLCB3aGVyZSBpZAorcmVmZXJzIHRvIHRoZSByZWdpc3RlciBpZGVudGlmaWVyIGFzIGRlc2NyaWJlZCBiZWxvdyBhbmQgYWRkciBpcyBhIHBvaW50ZXIKK3RvIGEgdmFyaWFibGUgd2l0aCB0aGUgcmVzcGVjdGl2ZSBzaXplLiBUaGVyZSBjYW4gYmUgYXJjaGl0ZWN0dXJlIGFnbm9zdGljCithbmQgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIHJlZ2lzdGVycy4gRWFjaCBoYXZlIHRoZWlyIG93biByYW5nZSBvZiBvcGVyYXRpb24KK2FuZCB0aGVpciBvd24gY29uc3RhbnRzIGFuZCB3aWR0aC4gVG8ga2VlcCB0cmFjayBvZiB0aGUgaW1wbGVtZW50ZWQKK3JlZ2lzdGVycywgZmluZCBhIGxpc3QgYmVsb3c6CisKKyAgQXJjaCAgfCAgICAgICAgICAgUmVnaXN0ZXIgICAgICAgICAgICB8IFdpZHRoIChiaXRzKQorICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19ISU9SICAgICAgICAgICAgICB8IDY0CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfSUFDMSAgICAgICAgICAgICAgfCA2NAorICBQUEMgICB8IEtWTV9SRUdfUFBDX0lBQzIgICAgICAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19JQUMzICAgICAgICAgICAgICB8IDY0CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfSUFDNCAgICAgICAgICAgICAgfCA2NAorICBQUEMgICB8IEtWTV9SRUdfUFBDX0RBQzEgICAgICAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19EQUMyICAgICAgICAgICAgICB8IDY0CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfREFCUiAgICAgICAgICAgICAgfCA2NAorICBQUEMgICB8IEtWTV9SRUdfUFBDX0RTQ1IgICAgICAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19QVVJSICAgICAgICAgICAgICB8IDY0CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfU1BVUlIgICAgICAgICAgICAgfCA2NAorICBQUEMgICB8IEtWTV9SRUdfUFBDX0RBUiAgICAgICAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19EU0lTUiAgICAgICAgICAgICB8IDMyCisgIFBQQyAgIHwgS1ZNX1JFR19QUENfQU1SICAgICAgICAgICAgICAgfCA2NAorICBQUEMgICB8IEtWTV9SRUdfUFBDX1VBTU9SICAgICAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19NTUNSMCAgICAgICAgICAgICB8IDY0CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfTU1DUjEgICAgICAgICAgICAgfCA2NAorICBQUEMgICB8IEtWTV9SRUdfUFBDX01NQ1JBICAgICAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19NTUNSMiAgICAgICAgICAgICB8IDY0CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfTU1DUlMgICAgICAgICAgICAgfCA2NAorICBQUEMgICB8IEtWTV9SRUdfUFBDX1NJQVIgICAgICAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19TREFSICAgICAgICAgICAgICB8IDY0CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfU0lFUiAgICAgICAgICAgICAgfCA2NAorICBQUEMgICB8IEtWTV9SRUdfUFBDX1BNQzEgICAgICAgICAgICAgIHwgMzIKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19QTUMyICAgICAgICAgICAgICB8IDMyCisgIFBQQyAgIHwgS1ZNX1JFR19QUENfUE1DMyAgICAgICAgICAgICAgfCAzMgorICBQUEMgICB8IEtWTV9SRUdfUFBDX1BNQzQgICAgICAgICAgICAgIHwgMzIKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19QTUM1ICAgICAgICAgICAgICB8IDMyCisgIFBQQyAgIHwgS1ZNX1JFR19QUENfUE1DNiAgICAgICAgICAgICAgfCAzMgorICBQUEMgICB8IEtWTV9SRUdfUFBDX1BNQzcgICAgICAgICAgICAgIHwgMzIKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19QTUM4ICAgICAgICAgICAgICB8IDMyCisgIFBQQyAgIHwgS1ZNX1JFR19QUENfRlBSMCAgICAgICAgICAgICAgfCA2NAorICAgICAgICAgIC4uLgorICBQUEMgICB8IEtWTV9SRUdfUFBDX0ZQUjMxICAgICAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19WUjAgICAgICAgICAgICAgICB8IDEyOAorICAgICAgICAgIC4uLgorICBQUEMgICB8IEtWTV9SRUdfUFBDX1ZSMzEgICAgICAgICAgICAgIHwgMTI4CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfVlNSMCAgICAgICAgICAgICAgfCAxMjgKKyAgICAgICAgICAuLi4KKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19WU1IzMSAgICAgICAgICAgICB8IDEyOAorICBQUEMgICB8IEtWTV9SRUdfUFBDX0ZQU0NSICAgICAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19WU0NSICAgICAgICAgICAgICB8IDMyCisgIFBQQyAgIHwgS1ZNX1JFR19QUENfVlBBX0FERFIgICAgICAgICAgfCA2NAorICBQUEMgICB8IEtWTV9SRUdfUFBDX1ZQQV9TTEIgICAgICAgICAgIHwgMTI4CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfVlBBX0RUTCAgICAgICAgICAgfCAxMjgKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19FUENSICAgICAgICAgICAgICB8IDMyCisgIFBQQyAgIHwgS1ZNX1JFR19QUENfRVBSICAgICAgICAgICAgICAgfCAzMgorICBQUEMgICB8IEtWTV9SRUdfUFBDX1RDUiAgICAgICAgICAgICAgIHwgMzIKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19UU1IgICAgICAgICAgICAgICB8IDMyCisgIFBQQyAgIHwgS1ZNX1JFR19QUENfT1JfVFNSICAgICAgICAgICAgfCAzMgorICBQUEMgICB8IEtWTV9SRUdfUFBDX0NMRUFSX1RTUiAgICAgICAgIHwgMzIKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19NQVMwICAgICAgICAgICAgICB8IDMyCisgIFBQQyAgIHwgS1ZNX1JFR19QUENfTUFTMSAgICAgICAgICAgICAgfCAzMgorICBQUEMgICB8IEtWTV9SRUdfUFBDX01BUzIgICAgICAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19NQVM3XzMgICAgICAgICAgICB8IDY0CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfTUFTNCAgICAgICAgICAgICAgfCAzMgorICBQUEMgICB8IEtWTV9SRUdfUFBDX01BUzYgICAgICAgICAgICAgIHwgMzIKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19NTVVDRkcgICAgICAgICAgICB8IDMyCisgIFBQQyAgIHwgS1ZNX1JFR19QUENfVExCMENGRyAgICAgICAgICAgfCAzMgorICBQUEMgICB8IEtWTV9SRUdfUFBDX1RMQjFDRkcgICAgICAgICAgIHwgMzIKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19UTEIyQ0ZHICAgICAgICAgICB8IDMyCisgIFBQQyAgIHwgS1ZNX1JFR19QUENfVExCM0NGRyAgICAgICAgICAgfCAzMgorICBQUEMgICB8IEtWTV9SRUdfUFBDX1RMQjBQUyAgICAgICAgICAgIHwgMzIKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19UTEIxUFMgICAgICAgICAgICB8IDMyCisgIFBQQyAgIHwgS1ZNX1JFR19QUENfVExCMlBTICAgICAgICAgICAgfCAzMgorICBQUEMgICB8IEtWTV9SRUdfUFBDX1RMQjNQUyAgICAgICAgICAgIHwgMzIKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19FUFRDRkcgICAgICAgICAgICB8IDMyCisgIFBQQyAgIHwgS1ZNX1JFR19QUENfSUNQX1NUQVRFICAgICAgICAgfCA2NAorICBQUEMgICB8IEtWTV9SRUdfUFBDX1RCX09GRlNFVCAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19TUE1DMSAgICAgICAgICAgICB8IDMyCisgIFBQQyAgIHwgS1ZNX1JFR19QUENfU1BNQzIgICAgICAgICAgICAgfCAzMgorICBQUEMgICB8IEtWTV9SRUdfUFBDX0lBTVIgICAgICAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19URkhBUiAgICAgICAgICAgICB8IDY0CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfVEZJQVIgICAgICAgICAgICAgfCA2NAorICBQUEMgICB8IEtWTV9SRUdfUFBDX1RFWEFTUiAgICAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19GU0NSICAgICAgICAgICAgICB8IDY0CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfUFNQQiAgICAgICAgICAgICAgfCAzMgorICBQUEMgICB8IEtWTV9SRUdfUFBDX0VCQkhSICAgICAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19FQkJSUiAgICAgICAgICAgICB8IDY0CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfQkVTQ1IgICAgICAgICAgICAgfCA2NAorICBQUEMgICB8IEtWTV9SRUdfUFBDX1RBUiAgICAgICAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19EUERFUyAgICAgICAgICAgICB8IDY0CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfREFXUiAgICAgICAgICAgICAgfCA2NAorICBQUEMgICB8IEtWTV9SRUdfUFBDX0RBV1JYICAgICAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19DSUFCUiAgICAgICAgICAgICB8IDY0CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfSUMgICAgICAgICAgICAgICAgfCA2NAorICBQUEMgICB8IEtWTV9SRUdfUFBDX1ZUQiAgICAgICAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19DU0lHUiAgICAgICAgICAgICB8IDY0CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfVEFDUiAgICAgICAgICAgICAgfCA2NAorICBQUEMgICB8IEtWTV9SRUdfUFBDX1RDU0NSICAgICAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19QSUQgICAgICAgICAgICAgICB8IDY0CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfQUNPUCAgICAgICAgICAgICAgfCA2NAorICBQUEMgICB8IEtWTV9SRUdfUFBDX1ZSU0FWRSAgICAgICAgICAgIHwgMzIKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19MUENSICAgICAgICAgICAgICB8IDMyCisgIFBQQyAgIHwgS1ZNX1JFR19QUENfTFBDUl82NCAgICAgICAgICAgfCA2NAorICBQUEMgICB8IEtWTV9SRUdfUFBDX1BQUiAgICAgICAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19BUkNIX0NPTVBBVCAgICAgICB8IDMyCisgIFBQQyAgIHwgS1ZNX1JFR19QUENfREFCUlggICAgICAgICAgICAgfCAzMgorICBQUEMgICB8IEtWTV9SRUdfUFBDX1dPUlQgICAgICAgICAgICAgIHwgNjQKKyAgUFBDCXwgS1ZNX1JFR19QUENfU1BSRzkgICAgICAgICAgICAgfCA2NAorICBQUEMJfCBLVk1fUkVHX1BQQ19EQlNSICAgICAgICAgICAgICB8IDMyCisgIFBQQyAgIHwgS1ZNX1JFR19QUENfVE1fR1BSMCAgICAgICAgICAgfCA2NAorICAgICAgICAgIC4uLgorICBQUEMgICB8IEtWTV9SRUdfUFBDX1RNX0dQUjMxICAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19UTV9WU1IwICAgICAgICAgICB8IDEyOAorICAgICAgICAgIC4uLgorICBQUEMgICB8IEtWTV9SRUdfUFBDX1RNX1ZTUjYzICAgICAgICAgIHwgMTI4CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfVE1fQ1IgICAgICAgICAgICAgfCA2NAorICBQUEMgICB8IEtWTV9SRUdfUFBDX1RNX0xSICAgICAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19UTV9DVFIgICAgICAgICAgICB8IDY0CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfVE1fRlBTQ1IgICAgICAgICAgfCA2NAorICBQUEMgICB8IEtWTV9SRUdfUFBDX1RNX0FNUiAgICAgICAgICAgIHwgNjQKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19UTV9QUFIgICAgICAgICAgICB8IDY0CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfVE1fVlJTQVZFICAgICAgICAgfCA2NAorICBQUEMgICB8IEtWTV9SRUdfUFBDX1RNX1ZTQ1IgICAgICAgICAgIHwgMzIKKyAgUFBDICAgfCBLVk1fUkVHX1BQQ19UTV9EU0NSICAgICAgICAgICB8IDY0CisgIFBQQyAgIHwgS1ZNX1JFR19QUENfVE1fVEFSICAgICAgICAgICAgfCA2NAorICBQUEMgICB8IEtWTV9SRUdfUFBDX1RNX1hFUiAgICAgICAgICAgIHwgNjQKKyAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgIE1JUFMgIHwgS1ZNX1JFR19NSVBTX1IwICAgICAgICAgICAgICAgfCA2NAorICAgICAgICAgIC4uLgorICBNSVBTICB8IEtWTV9SRUdfTUlQU19SMzEgICAgICAgICAgICAgIHwgNjQKKyAgTUlQUyAgfCBLVk1fUkVHX01JUFNfSEkgICAgICAgICAgICAgICB8IDY0CisgIE1JUFMgIHwgS1ZNX1JFR19NSVBTX0xPICAgICAgICAgICAgICAgfCA2NAorICBNSVBTICB8IEtWTV9SRUdfTUlQU19QQyAgICAgICAgICAgICAgIHwgNjQKKyAgTUlQUyAgfCBLVk1fUkVHX01JUFNfQ1AwX0lOREVYICAgICAgICB8IDMyCisgIE1JUFMgIHwgS1ZNX1JFR19NSVBTX0NQMF9DT05URVhUICAgICAgfCA2NAorICBNSVBTICB8IEtWTV9SRUdfTUlQU19DUDBfVVNFUkxPQ0FMICAgIHwgNjQKKyAgTUlQUyAgfCBLVk1fUkVHX01JUFNfQ1AwX1BBR0VNQVNLICAgICB8IDMyCisgIE1JUFMgIHwgS1ZNX1JFR19NSVBTX0NQMF9XSVJFRCAgICAgICAgfCAzMgorICBNSVBTICB8IEtWTV9SRUdfTUlQU19DUDBfSFdSRU5BICAgICAgIHwgMzIKKyAgTUlQUyAgfCBLVk1fUkVHX01JUFNfQ1AwX0JBRFZBRERSICAgICB8IDY0CisgIE1JUFMgIHwgS1ZNX1JFR19NSVBTX0NQMF9DT1VOVCAgICAgICAgfCAzMgorICBNSVBTICB8IEtWTV9SRUdfTUlQU19DUDBfRU5UUllISSAgICAgIHwgNjQKKyAgTUlQUyAgfCBLVk1fUkVHX01JUFNfQ1AwX0NPTVBBUkUgICAgICB8IDMyCisgIE1JUFMgIHwgS1ZNX1JFR19NSVBTX0NQMF9TVEFUVVMgICAgICAgfCAzMgorICBNSVBTICB8IEtWTV9SRUdfTUlQU19DUDBfQ0FVU0UgICAgICAgIHwgMzIKKyAgTUlQUyAgfCBLVk1fUkVHX01JUFNfQ1AwX0VQQyAgICAgICAgICB8IDY0CisgIE1JUFMgIHwgS1ZNX1JFR19NSVBTX0NQMF9QUklEICAgICAgICAgfCAzMgorICBNSVBTICB8IEtWTV9SRUdfTUlQU19DUDBfQ09ORklHICAgICAgIHwgMzIKKyAgTUlQUyAgfCBLVk1fUkVHX01JUFNfQ1AwX0NPTkZJRzEgICAgICB8IDMyCisgIE1JUFMgIHwgS1ZNX1JFR19NSVBTX0NQMF9DT05GSUcyICAgICAgfCAzMgorICBNSVBTICB8IEtWTV9SRUdfTUlQU19DUDBfQ09ORklHMyAgICAgIHwgMzIKKyAgTUlQUyAgfCBLVk1fUkVHX01JUFNfQ1AwX0NPTkZJRzQgICAgICB8IDMyCisgIE1JUFMgIHwgS1ZNX1JFR19NSVBTX0NQMF9DT05GSUc1ICAgICAgfCAzMgorICBNSVBTICB8IEtWTV9SRUdfTUlQU19DUDBfQ09ORklHNyAgICAgIHwgMzIKKyAgTUlQUyAgfCBLVk1fUkVHX01JUFNfQ1AwX0VSUk9SRVBDICAgICB8IDY0CisgIE1JUFMgIHwgS1ZNX1JFR19NSVBTX0NPVU5UX0NUTCAgICAgICAgfCA2NAorICBNSVBTICB8IEtWTV9SRUdfTUlQU19DT1VOVF9SRVNVTUUgICAgIHwgNjQKKyAgTUlQUyAgfCBLVk1fUkVHX01JUFNfQ09VTlRfSFogICAgICAgICB8IDY0CisgIE1JUFMgIHwgS1ZNX1JFR19NSVBTX0ZQUl8zMigwLi4zMSkgICAgfCAzMgorICBNSVBTICB8IEtWTV9SRUdfTUlQU19GUFJfNjQoMC4uMzEpICAgIHwgNjQKKyAgTUlQUyAgfCBLVk1fUkVHX01JUFNfVkVDXzEyOCgwLi4zMSkgICB8IDEyOAorICBNSVBTICB8IEtWTV9SRUdfTUlQU19GQ1JfSVIgICAgICAgICAgIHwgMzIKKyAgTUlQUyAgfCBLVk1fUkVHX01JUFNfRkNSX0NTUiAgICAgICAgICB8IDMyCisgIE1JUFMgIHwgS1ZNX1JFR19NSVBTX01TQV9JUiAgICAgICAgICAgfCAzMgorICBNSVBTICB8IEtWTV9SRUdfTUlQU19NU0FfQ1NSICAgICAgICAgIHwgMzIKKworQVJNIHJlZ2lzdGVycyBhcmUgbWFwcGVkIHVzaW5nIHRoZSBsb3dlciAzMiBiaXRzLiAgVGhlIHVwcGVyIDE2IG9mIHRoYXQKK2lzIHRoZSByZWdpc3RlciBncm91cCB0eXBlLCBvciBjb3Byb2Nlc3NvciBudW1iZXI6CisKK0FSTSBjb3JlIHJlZ2lzdGVycyBoYXZlIHRoZSBmb2xsb3dpbmcgaWQgYml0IHBhdHRlcm5zOgorICAweDQwMjAgMDAwMCAwMDEwIDxpbmRleCBpbnRvIHRoZSBrdm1fcmVncyBzdHJ1Y3Q6MTY+CisKK0FSTSAzMi1iaXQgQ1AxNSByZWdpc3RlcnMgaGF2ZSB0aGUgZm9sbG93aW5nIGlkIGJpdCBwYXR0ZXJuczoKKyAgMHg0MDIwIDAwMDAgMDAwRiA8emVybzoxPiA8Y3JuOjQ+IDxjcm06ND4gPG9wYzE6ND4gPG9wYzI6Mz4KKworQVJNIDY0LWJpdCBDUDE1IHJlZ2lzdGVycyBoYXZlIHRoZSBmb2xsb3dpbmcgaWQgYml0IHBhdHRlcm5zOgorICAweDQwMzAgMDAwMCAwMDBGIDx6ZXJvOjE+IDx6ZXJvOjQ+IDxjcm06ND4gPG9wYzE6ND4gPHplcm86Mz4KKworQVJNIENDU0lEUiByZWdpc3RlcnMgYXJlIGRlbXVsdGlwbGV4ZWQgYnkgQ1NTRUxSIHZhbHVlOgorICAweDQwMjAgMDAwMCAwMDExIDAwIDxjc3NlbHI6OD4KKworQVJNIDMyLWJpdCBWRlAgY29udHJvbCByZWdpc3RlcnMgaGF2ZSB0aGUgZm9sbG93aW5nIGlkIGJpdCBwYXR0ZXJuczoKKyAgMHg0MDIwIDAwMDAgMDAxMiAxIDxyZWdubzoxMj4KKworQVJNIDY0LWJpdCBGUCByZWdpc3RlcnMgaGF2ZSB0aGUgZm9sbG93aW5nIGlkIGJpdCBwYXR0ZXJuczoKKyAgMHg0MDMwIDAwMDAgMDAxMiAwIDxyZWdubzoxMj4KKworCithcm02NCByZWdpc3RlcnMgYXJlIG1hcHBlZCB1c2luZyB0aGUgbG93ZXIgMzIgYml0cy4gVGhlIHVwcGVyIDE2IG9mCit0aGF0IGlzIHRoZSByZWdpc3RlciBncm91cCB0eXBlLCBvciBjb3Byb2Nlc3NvciBudW1iZXI6CisKK2FybTY0IGNvcmUvRlAtU0lNRCByZWdpc3RlcnMgaGF2ZSB0aGUgZm9sbG93aW5nIGlkIGJpdCBwYXR0ZXJucy4gTm90ZQordGhhdCB0aGUgc2l6ZSBvZiB0aGUgYWNjZXNzIGlzIHZhcmlhYmxlLCBhcyB0aGUga3ZtX3JlZ3Mgc3RydWN0dXJlCitjb250YWlucyBlbGVtZW50cyByYW5naW5nIGZyb20gMzIgdG8gMTI4IGJpdHMuIFRoZSBpbmRleCBpcyBhIDMyYml0Cit2YWx1ZSBpbiB0aGUga3ZtX3JlZ3Mgc3RydWN0dXJlIHNlZW4gYXMgYSAzMmJpdCBhcnJheS4KKyAgMHg2MHgwIDAwMDAgMDAxMCA8aW5kZXggaW50byB0aGUga3ZtX3JlZ3Mgc3RydWN0OjE2PgorCithcm02NCBDQ1NJRFIgcmVnaXN0ZXJzIGFyZSBkZW11bHRpcGxleGVkIGJ5IENTU0VMUiB2YWx1ZToKKyAgMHg2MDIwIDAwMDAgMDAxMSAwMCA8Y3NzZWxyOjg+CisKK2FybTY0IHN5c3RlbSByZWdpc3RlcnMgaGF2ZSB0aGUgZm9sbG93aW5nIGlkIGJpdCBwYXR0ZXJuczoKKyAgMHg2MDMwIDAwMDAgMDAxMyA8b3AwOjI+IDxvcDE6Mz4gPGNybjo0PiA8Y3JtOjQ+IDxvcDI6Mz4KKworCitNSVBTIHJlZ2lzdGVycyBhcmUgbWFwcGVkIHVzaW5nIHRoZSBsb3dlciAzMiBiaXRzLiAgVGhlIHVwcGVyIDE2IG9mIHRoYXQgaXMKK3RoZSByZWdpc3RlciBncm91cCB0eXBlOgorCitNSVBTIGNvcmUgcmVnaXN0ZXJzIChzZWUgYWJvdmUpIGhhdmUgdGhlIGZvbGxvd2luZyBpZCBiaXQgcGF0dGVybnM6CisgIDB4NzAzMCAwMDAwIDAwMDAgPHJlZzoxNj4KKworTUlQUyBDUDAgcmVnaXN0ZXJzIChzZWUgS1ZNX1JFR19NSVBTX0NQMF8qIGFib3ZlKSBoYXZlIHRoZSBmb2xsb3dpbmcgaWQgYml0CitwYXR0ZXJucyBkZXBlbmRpbmcgb24gd2hldGhlciB0aGV5J3JlIDMyLWJpdCBvciA2NC1iaXQgcmVnaXN0ZXJzOgorICAweDcwMjAgMDAwMCAwMDAxIDAwIDxyZWc6NT4gPHNlbDozPiAgICgzMi1iaXQpCisgIDB4NzAzMCAwMDAwIDAwMDEgMDAgPHJlZzo1PiA8c2VsOjM+ICAgKDY0LWJpdCkKKworTUlQUyBLVk0gY29udHJvbCByZWdpc3RlcnMgKHNlZSBhYm92ZSkgaGF2ZSB0aGUgZm9sbG93aW5nIGlkIGJpdCBwYXR0ZXJuczoKKyAgMHg3MDMwIDAwMDAgMDAwMiA8cmVnOjE2PgorCitNSVBTIEZQVSByZWdpc3RlcnMgKHNlZSBLVk1fUkVHX01JUFNfRlBSX3szMiw2NH0oKSBhYm92ZSkgaGF2ZSB0aGUgZm9sbG93aW5nCitpZCBiaXQgcGF0dGVybnMgZGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mIHRoZSByZWdpc3RlciBiZWluZyBhY2Nlc3NlZC4gVGhleSBhcmUKK2Fsd2F5cyBhY2Nlc3NlZCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgZ3Vlc3QgRlBVIG1vZGUgKFN0YXR1cy5GUiBhbmQKK0NvbmZpZzUuRlJFKSwgaS5lLiBhcyB0aGUgZ3Vlc3Qgd291bGQgc2VlIHRoZW0sIGFuZCB0aGV5IGJlY29tZSB1bnByZWRpY3RhYmxlCitpZiB0aGUgZ3Vlc3QgRlBVIG1vZGUgaXMgY2hhbmdlZC4gTUlQUyBTSU1EIEFyY2hpdGVjdHVyZSAoTVNBKSB2ZWN0b3IKK3JlZ2lzdGVycyAoc2VlIEtWTV9SRUdfTUlQU19WRUNfMTI4KCkgYWJvdmUpIGhhdmUgc2ltaWxhciBwYXR0ZXJucyBhcyB0aGV5CitvdmVybGFwIHRoZSBGUFUgcmVnaXN0ZXJzOgorICAweDcwMjAgMDAwMCAwMDAzIDAwIDwwOjM+IDxyZWc6NT4gKDMyLWJpdCBGUFUgcmVnaXN0ZXJzKQorICAweDcwMzAgMDAwMCAwMDAzIDAwIDwwOjM+IDxyZWc6NT4gKDY0LWJpdCBGUFUgcmVnaXN0ZXJzKQorICAweDcwNDAgMDAwMCAwMDAzIDAwIDwwOjM+IDxyZWc6NT4gKDEyOC1iaXQgTVNBIHZlY3RvciByZWdpc3RlcnMpCisKK01JUFMgRlBVIGNvbnRyb2wgcmVnaXN0ZXJzIChzZWUgS1ZNX1JFR19NSVBTX0ZDUl97SVIsQ1NSfSBhYm92ZSkgaGF2ZSB0aGUKK2ZvbGxvd2luZyBpZCBiaXQgcGF0dGVybnM6CisgIDB4NzAyMCAwMDAwIDAwMDMgMDEgPDA6Mz4gPHJlZzo1PgorCitNSVBTIE1TQSBjb250cm9sIHJlZ2lzdGVycyAoc2VlIEtWTV9SRUdfTUlQU19NU0Ffe0lSLENTUn0gYWJvdmUpIGhhdmUgdGhlCitmb2xsb3dpbmcgaWQgYml0IHBhdHRlcm5zOgorICAweDcwMjAgMDAwMCAwMDAzIDAyIDwwOjM+IDxyZWc6NT4KKworCis0LjY5IEtWTV9HRVRfT05FX1JFRworCitDYXBhYmlsaXR5OiBLVk1fQ0FQX09ORV9SRUcKK0FyY2hpdGVjdHVyZXM6IGFsbAorVHlwZTogdmNwdSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9vbmVfcmVnIChpbiBhbmQgb3V0KQorUmV0dXJuczogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSB2YWx1ZSBvbiBmYWlsdXJlCisKK1RoaXMgaW9jdGwgYWxsb3dzIHRvIHJlY2VpdmUgdGhlIHZhbHVlIG9mIGEgc2luZ2xlIHJlZ2lzdGVyIGltcGxlbWVudGVkCitpbiBhIHZjcHUuIFRoZSByZWdpc3RlciB0byByZWFkIGlzIGluZGljYXRlZCBieSB0aGUgImlkIiBmaWVsZCBvZiB0aGUKK2t2bV9vbmVfcmVnIHN0cnVjdCBwYXNzZWQgaW4uIE9uIHN1Y2Nlc3MsIHRoZSByZWdpc3RlciB2YWx1ZSBjYW4gYmUgZm91bmQKK2F0IHRoZSBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSAiYWRkciIuCisKK1RoZSBsaXN0IG9mIHJlZ2lzdGVycyBhY2Nlc3NpYmxlIHVzaW5nIHRoaXMgaW50ZXJmYWNlIGlzIGlkZW50aWNhbCB0byB0aGUKK2xpc3QgaW4gNC42OC4KKworCis0LjcwIEtWTV9LVk1DTE9DS19DVFJMCisKK0NhcGFiaWxpdHk6IEtWTV9DQVBfS1ZNQ0xPQ0tfQ1RSTAorQXJjaGl0ZWN0dXJlczogQW55IHRoYXQgaW1wbGVtZW50IHB2Y2xvY2tzIChjdXJyZW50bHkgeDg2IG9ubHkpCitUeXBlOiB2Y3B1IGlvY3RsCitQYXJhbWV0ZXJzOiBOb25lCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yCisKK1RoaXMgc2lnbmFscyB0byB0aGUgaG9zdCBrZXJuZWwgdGhhdCB0aGUgc3BlY2lmaWVkIGd1ZXN0IGlzIGJlaW5nIHBhdXNlZCBieQordXNlcnNwYWNlLiAgVGhlIGhvc3Qgd2lsbCBzZXQgYSBmbGFnIGluIHRoZSBwdmNsb2NrIHN0cnVjdHVyZSB0aGF0IGlzIGNoZWNrZWQKK2Zyb20gdGhlIHNvZnQgbG9ja3VwIHdhdGNoZG9nLiAgVGhlIGZsYWcgaXMgcGFydCBvZiB0aGUgcHZjbG9jayBzdHJ1Y3R1cmUgdGhhdAoraXMgc2hhcmVkIGJldHdlZW4gZ3Vlc3QgYW5kIGhvc3QsIHNwZWNpZmljYWxseSB0aGUgc2Vjb25kIGJpdCBvZiB0aGUgZmxhZ3MKK2ZpZWxkIG9mIHRoZSBwdmNsb2NrX3ZjcHVfdGltZV9pbmZvIHN0cnVjdHVyZS4gIEl0IHdpbGwgYmUgc2V0IGV4Y2x1c2l2ZWx5IGJ5Cit0aGUgaG9zdCBhbmQgcmVhZC9jbGVhcmVkIGV4Y2x1c2l2ZWx5IGJ5IHRoZSBndWVzdC4gIFRoZSBndWVzdCBvcGVyYXRpb24gb2YKK2NoZWNraW5nIGFuZCBjbGVhcmluZyB0aGUgZmxhZyBtdXN0IGFuIGF0b21pYyBvcGVyYXRpb24gc28KK2xvYWQtbGluay9zdG9yZS1jb25kaXRpb25hbCwgb3IgZXF1aXZhbGVudCBtdXN0IGJlIHVzZWQuICBUaGVyZSBhcmUgdHdvIGNhc2VzCit3aGVyZSB0aGUgZ3Vlc3Qgd2lsbCBjbGVhciB0aGUgZmxhZzogd2hlbiB0aGUgc29mdCBsb2NrdXAgd2F0Y2hkb2cgdGltZXIgcmVzZXRzCitpdHNlbGYgb3Igd2hlbiBhIHNvZnQgbG9ja3VwIGlzIGRldGVjdGVkLiAgVGhpcyBpb2N0bCBjYW4gYmUgY2FsbGVkIGFueSB0aW1lCithZnRlciBwYXVzaW5nIHRoZSB2Y3B1LCBidXQgYmVmb3JlIGl0IGlzIHJlc3VtZWQuCisKKworNC43MSBLVk1fU0lHTkFMX01TSQorCitDYXBhYmlsaXR5OiBLVk1fQ0FQX1NJR05BTF9NU0kKK0FyY2hpdGVjdHVyZXM6IHg4NgorVHlwZTogdm0gaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1fbXNpIChpbikKK1JldHVybnM6ID4wIG9uIGRlbGl2ZXJ5LCAwIGlmIGd1ZXN0IGJsb2NrZWQgdGhlIE1TSSwgYW5kIC0xIG9uIGVycm9yCisKK0RpcmVjdGx5IGluamVjdCBhIE1TSSBtZXNzYWdlLiBPbmx5IHZhbGlkIHdpdGggaW4ta2VybmVsIGlycWNoaXAgdGhhdCBoYW5kbGVzCitNU0kgbWVzc2FnZXMuCisKK3N0cnVjdCBrdm1fbXNpIHsKKwlfX3UzMiBhZGRyZXNzX2xvOworCV9fdTMyIGFkZHJlc3NfaGk7CisJX191MzIgZGF0YTsKKwlfX3UzMiBmbGFnczsKKwlfX3U4ICBwYWRbMTZdOworfTsKKworTm8gZmxhZ3MgYXJlIGRlZmluZWQgc28gZmFyLiBUaGUgY29ycmVzcG9uZGluZyBmaWVsZCBtdXN0IGJlIDAuCisKKworNC43MSBLVk1fQ1JFQVRFX1BJVDIKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9QSVQyCitBcmNoaXRlY3R1cmVzOiB4ODYKK1R5cGU6IHZtIGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX3BpdF9jb25maWcgKGluKQorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCitDcmVhdGVzIGFuIGluLWtlcm5lbCBkZXZpY2UgbW9kZWwgZm9yIHRoZSBpODI1NCBQSVQuIFRoaXMgY2FsbCBpcyBvbmx5IHZhbGlkCithZnRlciBlbmFibGluZyBpbi1rZXJuZWwgaXJxY2hpcCBzdXBwb3J0IHZpYSBLVk1fQ1JFQVRFX0lSUUNISVAuIFRoZSBmb2xsb3dpbmcKK3BhcmFtZXRlcnMgaGF2ZSB0byBiZSBwYXNzZWQ6CisKK3N0cnVjdCBrdm1fcGl0X2NvbmZpZyB7CisJX191MzIgZmxhZ3M7CisJX191MzIgcGFkWzE1XTsKK307CisKK1ZhbGlkIGZsYWdzIGFyZToKKworI2RlZmluZSBLVk1fUElUX1NQRUFLRVJfRFVNTVkgICAgIDEgLyogZW11bGF0ZSBzcGVha2VyIHBvcnQgc3R1YiAqLworCitQSVQgdGltZXIgaW50ZXJydXB0cyBtYXkgdXNlIGEgcGVyLVZNIGtlcm5lbCB0aHJlYWQgZm9yIGluamVjdGlvbi4gSWYgaXQKK2V4aXN0cywgdGhpcyB0aHJlYWQgd2lsbCBoYXZlIGEgbmFtZSBvZiB0aGUgZm9sbG93aW5nIHBhdHRlcm46CisKK2t2bS1waXQvPG93bmVyLXByb2Nlc3MtcGlkPgorCitXaGVuIHJ1bm5pbmcgYSBndWVzdCB3aXRoIGVsZXZhdGVkIHByaW9yaXRpZXMsIHRoZSBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgb2YKK3RoaXMgdGhyZWFkIG1heSBoYXZlIHRvIGJlIGFkanVzdGVkIGFjY29yZGluZ2x5LgorCitUaGlzIElPQ1RMIHJlcGxhY2VzIHRoZSBvYnNvbGV0ZSBLVk1fQ1JFQVRFX1BJVC4KKworCis0LjcyIEtWTV9HRVRfUElUMgorCitDYXBhYmlsaXR5OiBLVk1fQ0FQX1BJVF9TVEFURTIKK0FyY2hpdGVjdHVyZXM6IHg4NgorVHlwZTogdm0gaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1fcGl0X3N0YXRlMiAob3V0KQorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCitSZXRyaWV2ZXMgdGhlIHN0YXRlIG9mIHRoZSBpbi1rZXJuZWwgUElUIG1vZGVsLiBPbmx5IHZhbGlkIGFmdGVyCitLVk1fQ1JFQVRFX1BJVDIuIFRoZSBzdGF0ZSBpcyByZXR1cm5lZCBpbiB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKKworc3RydWN0IGt2bV9waXRfc3RhdGUyIHsKKwlzdHJ1Y3Qga3ZtX3BpdF9jaGFubmVsX3N0YXRlIGNoYW5uZWxzWzNdOworCV9fdTMyIGZsYWdzOworCV9fdTMyIHJlc2VydmVkWzldOworfTsKKworVmFsaWQgZmxhZ3MgYXJlOgorCisvKiBkaXNhYmxlIFBJVCBpbiBIUEVUIGxlZ2FjeSBtb2RlICovCisjZGVmaW5lIEtWTV9QSVRfRkxBR1NfSFBFVF9MRUdBQ1kgIDB4MDAwMDAwMDEKKworVGhpcyBJT0NUTCByZXBsYWNlcyB0aGUgb2Jzb2xldGUgS1ZNX0dFVF9QSVQuCisKKworNC43MyBLVk1fU0VUX1BJVDIKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9QSVRfU1RBVEUyCitBcmNoaXRlY3R1cmVzOiB4ODYKK1R5cGU6IHZtIGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX3BpdF9zdGF0ZTIgKGluKQorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCitTZXRzIHRoZSBzdGF0ZSBvZiB0aGUgaW4ta2VybmVsIFBJVCBtb2RlbC4gT25seSB2YWxpZCBhZnRlciBLVk1fQ1JFQVRFX1BJVDIuCitTZWUgS1ZNX0dFVF9QSVQyIGZvciBkZXRhaWxzIG9uIHN0cnVjdCBrdm1fcGl0X3N0YXRlMi4KKworVGhpcyBJT0NUTCByZXBsYWNlcyB0aGUgb2Jzb2xldGUgS1ZNX1NFVF9QSVQuCisKKworNC43NCBLVk1fUFBDX0dFVF9TTU1VX0lORk8KKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9QUENfR0VUX1NNTVVfSU5GTworQXJjaGl0ZWN0dXJlczogcG93ZXJwYworVHlwZTogdm0gaW9jdGwKK1BhcmFtZXRlcnM6IE5vbmUKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworVGhpcyBwb3B1bGF0ZXMgYW5kIHJldHVybnMgYSBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgZmVhdHVyZXMgb2YKK3RoZSAiU2VydmVyIiBjbGFzcyBNTVUgZW11bGF0aW9uIHN1cHBvcnRlZCBieSBLVk0uCitUaGlzIGNhbiBpbiB0dXJuIGJlIHVzZWQgYnkgdXNlcnNwYWNlIHRvIGdlbmVyYXRlIHRoZSBhcHByb3ByaWF0ZQorZGV2aWNlLXRyZWUgcHJvcGVydGllcyBmb3IgdGhlIGd1ZXN0IG9wZXJhdGluZyBzeXN0ZW0uCisKK1RoZSBzdHJ1Y3R1cmUgY29udGFpbnMgc29tZSBnbG9iYWwgaW5mb3JtYXRpb24sIGZvbGxvd2VkIGJ5IGFuCithcnJheSBvZiBzdXBwb3J0ZWQgc2VnbWVudCBwYWdlIHNpemVzOgorCisgICAgICBzdHJ1Y3Qga3ZtX3BwY19zbW11X2luZm8geworCSAgICAgX191NjQgZmxhZ3M7CisJICAgICBfX3UzMiBzbGJfc2l6ZTsKKwkgICAgIF9fdTMyIHBhZDsKKwkgICAgIHN0cnVjdCBrdm1fcHBjX29uZV9zZWdfcGFnZV9zaXplIHNwc1tLVk1fUFBDX1BBR0VfU0laRVNfTUFYX1NaXTsKKyAgICAgIH07CisKK1RoZSBzdXBwb3J0ZWQgZmxhZ3MgYXJlOgorCisgICAgLSBLVk1fUFBDX1BBR0VfU0laRVNfUkVBTDoKKyAgICAgICAgV2hlbiB0aGF0IGZsYWcgaXMgc2V0LCBndWVzdCBwYWdlIHNpemVzIG11c3QgImZpdCIgdGhlIGJhY2tpbmcKKyAgICAgICAgc3RvcmUgcGFnZSBzaXplcy4gV2hlbiBub3Qgc2V0LCBhbnkgcGFnZSBzaXplIGluIHRoZSBsaXN0IGNhbgorICAgICAgICBiZSB1c2VkIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZXkgYXJlIGJhY2tlZCBieSB1c2Vyc3BhY2UuCisKKyAgICAtIEtWTV9QUENfMVRfU0VHTUVOVFMKKyAgICAgICAgVGhlIGVtdWxhdGVkIE1NVSBzdXBwb3J0cyAxVCBzZWdtZW50cyBpbiBhZGRpdGlvbiB0byB0aGUKKyAgICAgICAgc3RhbmRhcmQgMjU2TSBvbmVzLgorCitUaGUgInNsYl9zaXplIiBmaWVsZCBpbmRpY2F0ZXMgaG93IG1hbnkgU0xCIGVudHJpZXMgYXJlIHN1cHBvcnRlZAorCitUaGUgInNwcyIgYXJyYXkgY29udGFpbnMgOCBlbnRyaWVzIGluZGljYXRpbmcgdGhlIHN1cHBvcnRlZCBiYXNlCitwYWdlIHNpemVzIGZvciBhIHNlZ21lbnQgaW4gaW5jcmVhc2luZyBvcmRlci4gRWFjaCBlbnRyeSBpcyBkZWZpbmVkCithcyBmb2xsb3c6CisKKyAgIHN0cnVjdCBrdm1fcHBjX29uZV9zZWdfcGFnZV9zaXplIHsKKwlfX3UzMiBwYWdlX3NoaWZ0OwkvKiBCYXNlIHBhZ2Ugc2hpZnQgb2Ygc2VnbWVudCAob3IgMCkgKi8KKwlfX3UzMiBzbGJfZW5jOwkJLyogU0xCIGVuY29kaW5nIGZvciBCb29rUyAqLworCXN0cnVjdCBrdm1fcHBjX29uZV9wYWdlX3NpemUgZW5jW0tWTV9QUENfUEFHRV9TSVpFU19NQVhfU1pdOworICAgfTsKKworQW4gZW50cnkgd2l0aCBhICJwYWdlX3NoaWZ0IiBvZiAwIGlzIHVudXNlZC4gQmVjYXVzZSB0aGUgYXJyYXkgaXMKK29yZ2FuaXplZCBpbiBpbmNyZWFzaW5nIG9yZGVyLCBhIGxvb2t1cCBjYW4gc3RvcCB3aGVuIGVuY291dGVyaW5nCitzdWNoIGFuIGVudHJ5LgorCitUaGUgInNsYl9lbmMiIGZpZWxkIHByb3ZpZGVzIHRoZSBlbmNvZGluZyB0byB1c2UgaW4gdGhlIFNMQiBmb3IgdGhlCitwYWdlIHNpemUuIFRoZSBiaXRzIGFyZSBpbiBwb3NpdGlvbnMgc3VjaCBhcyB0aGUgdmFsdWUgY2FuIGRpcmVjdGx5CitiZSBPUidlZCBpbnRvIHRoZSAidnNpZCIgYXJndW1lbnQgb2YgdGhlIHNsYm10ZSBpbnN0cnVjdGlvbi4KKworVGhlICJlbmMiIGFycmF5IGlzIGEgbGlzdCB3aGljaCBmb3IgZWFjaCBvZiB0aG9zZSBzZWdtZW50IGJhc2UgcGFnZQorc2l6ZSBwcm92aWRlcyB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgYWN0dWFsIHBhZ2Ugc2l6ZXMgKHdoaWNoIGNhbiBiZQorb25seSBsYXJnZXIgb3IgZXF1YWwgdG8gdGhlIGJhc2UgcGFnZSBzaXplKSwgYWxvbmcgd2l0aCB0aGUKK2NvcnJlc3BvbmRpbmcgZW5jb2RpbmcgaW4gdGhlIGhhc2ggUFRFLiBTaW1pbGFybHksIHRoZSBhcnJheSBpcworOCBlbnRyaWVzIHNvcnRlZCBieSBpbmNyZWFzaW5nIHNpemVzIGFuZCBhbiBlbnRyeSB3aXRoIGEgIjAiIHNoaWZ0CitpcyBhbiBlbXB0eSBlbnRyeSBhbmQgYSB0ZXJtaW5hdG9yOgorCisgICBzdHJ1Y3Qga3ZtX3BwY19vbmVfcGFnZV9zaXplIHsKKwlfX3UzMiBwYWdlX3NoaWZ0OwkvKiBQYWdlIHNoaWZ0IChvciAwKSAqLworCV9fdTMyIHB0ZV9lbmM7CQkvKiBFbmNvZGluZyBpbiB0aGUgSFBURSAoPj4xMikgKi8KKyAgIH07CisKK1RoZSAicHRlX2VuYyIgZmllbGQgcHJvdmlkZXMgYSB2YWx1ZSB0aGF0IGNhbiBPUidlZCBpbnRvIHRoZSBoYXNoCitQVEUncyBSUE4gZmllbGQgKGllLCBpdCBuZWVkcyB0byBiZSBzaGlmdGVkIGxlZnQgYnkgMTIgdG8gT1IgaXQKK2ludG8gdGhlIGhhc2ggUFRFIHNlY29uZCBkb3VibGUgd29yZCkuCisKKzQuNzUgS1ZNX0lSUUZECisKK0NhcGFiaWxpdHk6IEtWTV9DQVBfSVJRRkQKK0FyY2hpdGVjdHVyZXM6IHg4NiBzMzkwIGFybSBhcm02NAorVHlwZTogdm0gaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1faXJxZmQgKGluKQorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCitBbGxvd3Mgc2V0dGluZyBhbiBldmVudGZkIHRvIGRpcmVjdGx5IHRyaWdnZXIgYSBndWVzdCBpbnRlcnJ1cHQuCitrdm1faXJxZmQuZmQgc3BlY2lmaWVzIHRoZSBmaWxlIGRlc2NyaXB0b3IgdG8gdXNlIGFzIHRoZSBldmVudGZkIGFuZAora3ZtX2lycWZkLmdzaSBzcGVjaWZpZXMgdGhlIGlycWNoaXAgcGluIHRvZ2dsZWQgYnkgdGhpcyBldmVudC4gIFdoZW4KK2FuIGV2ZW50IGlzIHRyaWdnZXJlZCBvbiB0aGUgZXZlbnRmZCwgYW4gaW50ZXJydXB0IGlzIGluamVjdGVkIGludG8KK3RoZSBndWVzdCB1c2luZyB0aGUgc3BlY2lmaWVkIGdzaSBwaW4uICBUaGUgaXJxZmQgaXMgcmVtb3ZlZCB1c2luZwordGhlIEtWTV9JUlFGRF9GTEFHX0RFQVNTSUdOIGZsYWcsIHNwZWNpZnlpbmcgYm90aCBrdm1faXJxZmQuZmQKK2FuZCBrdm1faXJxZmQuZ3NpLgorCitXaXRoIEtWTV9DQVBfSVJRRkRfUkVTQU1QTEUsIEtWTV9JUlFGRCBzdXBwb3J0cyBhIGRlLWFzc2VydCBhbmQgbm90aWZ5CittZWNoYW5pc20gYWxsb3dpbmcgZW11bGF0aW9uIG9mIGxldmVsLXRyaWdnZXJlZCwgaXJxZmQtYmFzZWQKK2ludGVycnVwdHMuICBXaGVuIEtWTV9JUlFGRF9GTEFHX1JFU0FNUExFIGlzIHNldCB0aGUgdXNlciBtdXN0IHBhc3MgYW4KK2FkZGl0aW9uYWwgZXZlbnRmZCBpbiB0aGUga3ZtX2lycWZkLnJlc2FtcGxlZmQgZmllbGQuICBXaGVuIG9wZXJhdGluZworaW4gcmVzYW1wbGUgbW9kZSwgcG9zdGluZyBvZiBhbiBpbnRlcnJ1cHQgdGhyb3VnaCBrdm1faXJxLmZkIGFzc2VydHMKK3RoZSBzcGVjaWZpZWQgZ3NpIGluIHRoZSBpcnFjaGlwLiAgV2hlbiB0aGUgaXJxY2hpcCBpcyByZXNhbXBsZWQsIHN1Y2gKK2FzIGZyb20gYW4gRU9JLCB0aGUgZ3NpIGlzIGRlLWFzc2VydGVkIGFuZCB0aGUgdXNlciBpcyBub3RpZmllZCB2aWEKK2t2bV9pcnFmZC5yZXNhbXBsZWZkLiAgSXQgaXMgdGhlIHVzZXIncyByZXNwb25zaWJpbGl0eSB0byByZS1xdWV1ZQordGhlIGludGVycnVwdCBpZiB0aGUgZGV2aWNlIG1ha2luZyB1c2Ugb2YgaXQgc3RpbGwgcmVxdWlyZXMgc2VydmljZS4KK05vdGUgdGhhdCBjbG9zaW5nIHRoZSByZXNhbXBsZWZkIGlzIG5vdCBzdWZmaWNpZW50IHRvIGRpc2FibGUgdGhlCitpcnFmZC4gIFRoZSBLVk1fSVJRRkRfRkxBR19SRVNBTVBMRSBpcyBvbmx5IG5lY2Vzc2FyeSBvbiBhc3NpZ25tZW50CithbmQgbmVlZCBub3QgYmUgc3BlY2lmaWVkIHdpdGggS1ZNX0lSUUZEX0ZMQUdfREVBU1NJR04uCisKK09uIEFSTS9BUk02NCwgdGhlIGdzaSBmaWVsZCBpbiB0aGUga3ZtX2lycWZkIHN0cnVjdCBzcGVjaWZpZXMgdGhlIFNoYXJlZAorUGVyaXBoZXJhbCBJbnRlcnJ1cHQgKFNQSSkgaW5kZXgsIHN1Y2ggdGhhdCB0aGUgR0lDIGludGVycnVwdCBJRCBpcworZ2l2ZW4gYnkgZ3NpICsgMzIuCisKKzQuNzYgS1ZNX1BQQ19BTExPQ0FURV9IVEFCCisKK0NhcGFiaWxpdHk6IEtWTV9DQVBfUFBDX0FMTE9DX0hUQUIKK0FyY2hpdGVjdHVyZXM6IHBvd2VycGMKK1R5cGU6IHZtIGlvY3RsCitQYXJhbWV0ZXJzOiBQb2ludGVyIHRvIHUzMiBjb250YWluaW5nIGhhc2ggdGFibGUgb3JkZXIgKGluL291dCkKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworVGhpcyByZXF1ZXN0cyB0aGUgaG9zdCBrZXJuZWwgdG8gYWxsb2NhdGUgYW4gTU1VIGhhc2ggdGFibGUgZm9yIGEKK2d1ZXN0IHVzaW5nIHRoZSBQQVBSIHBhcmF2aXJ0dWFsaXphdGlvbiBpbnRlcmZhY2UuICBUaGlzIG9ubHkgZG9lcworYW55dGhpbmcgaWYgdGhlIGtlcm5lbCBpcyBjb25maWd1cmVkIHRvIHVzZSB0aGUgQm9vayAzUyBIViBzdHlsZSBvZgordmlydHVhbGl6YXRpb24uICBPdGhlcndpc2UgdGhlIGNhcGFiaWxpdHkgZG9lc24ndCBleGlzdCBhbmQgdGhlIGlvY3RsCityZXR1cm5zIGFuIEVOT1RUWSBlcnJvci4gIFRoZSByZXN0IG9mIHRoaXMgZGVzY3JpcHRpb24gYXNzdW1lcyBCb29rIDNTCitIVi4KKworVGhlcmUgbXVzdCBiZSBubyB2Y3B1cyBydW5uaW5nIHdoZW4gdGhpcyBpb2N0bCBpcyBjYWxsZWQ7IGlmIHRoZXJlCithcmUsIGl0IHdpbGwgZG8gbm90aGluZyBhbmQgcmV0dXJuIGFuIEVCVVNZIGVycm9yLgorCitUaGUgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHZhcmlhYmxlCitjb250YWluaW5nIHRoZSBvcmRlciAobG9nIGJhc2UgMikgb2YgdGhlIGRlc2lyZWQgc2l6ZSBvZiB0aGUgaGFzaAordGFibGUsIHdoaWNoIG11c3QgYmUgYmV0d2VlbiAxOCBhbmQgNDYuICBPbiBzdWNjZXNzZnVsIHJldHVybiBmcm9tIHRoZQoraW9jdGwsIGl0IHdpbGwgaGF2ZSBiZWVuIHVwZGF0ZWQgd2l0aCB0aGUgb3JkZXIgb2YgdGhlIGhhc2ggdGFibGUgdGhhdAord2FzIGFsbG9jYXRlZC4KKworSWYgbm8gaGFzaCB0YWJsZSBoYXMgYmVlbiBhbGxvY2F0ZWQgd2hlbiBhbnkgdmNwdSBpcyBhc2tlZCB0byBydW4KKyh3aXRoIHRoZSBLVk1fUlVOIGlvY3RsKSwgdGhlIGhvc3Qga2VybmVsIHdpbGwgYWxsb2NhdGUgYQorZGVmYXVsdC1zaXplZCBoYXNoIHRhYmxlICgxNiBNQikuCisKK0lmIHRoaXMgaW9jdGwgaXMgY2FsbGVkIHdoZW4gYSBoYXNoIHRhYmxlIGhhcyBhbHJlYWR5IGJlZW4gYWxsb2NhdGVkLAordGhlIGtlcm5lbCB3aWxsIGNsZWFyIG91dCB0aGUgZXhpc3RpbmcgaGFzaCB0YWJsZSAoemVybyBhbGwgSFBURXMpIGFuZAorcmV0dXJuIHRoZSBoYXNoIHRhYmxlIG9yZGVyIGluIHRoZSBwYXJhbWV0ZXIuICAoSWYgdGhlIGd1ZXN0IGlzIHVzaW5nCit0aGUgdmlydHVhbGl6ZWQgcmVhbC1tb2RlIGFyZWEgKFZSTUEpIGZhY2lsaXR5LCB0aGUga2VybmVsIHdpbGwKK3JlLWNyZWF0ZSB0aGUgVk1SQSBIUFRFcyBvbiB0aGUgbmV4dCBLVk1fUlVOIG9mIGFueSB2Y3B1LikKKworNC43NyBLVk1fUzM5MF9JTlRFUlJVUFQKKworQ2FwYWJpbGl0eTogYmFzaWMKK0FyY2hpdGVjdHVyZXM6IHMzOTAKK1R5cGU6IHZtIGlvY3RsLCB2Y3B1IGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX3MzOTBfaW50ZXJydXB0IChpbikKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworQWxsb3dzIHRvIGluamVjdCBhbiBpbnRlcnJ1cHQgdG8gdGhlIGd1ZXN0LiBJbnRlcnJ1cHRzIGNhbiBiZSBmbG9hdGluZworKHZtIGlvY3RsKSBvciBwZXIgY3B1ICh2Y3B1IGlvY3RsKSwgZGVwZW5kaW5nIG9uIHRoZSBpbnRlcnJ1cHQgdHlwZS4KKworSW50ZXJydXB0IHBhcmFtZXRlcnMgYXJlIHBhc3NlZCB2aWEga3ZtX3MzOTBfaW50ZXJydXB0OgorCitzdHJ1Y3Qga3ZtX3MzOTBfaW50ZXJydXB0IHsKKwlfX3UzMiB0eXBlOworCV9fdTMyIHBhcm07CisJX191NjQgcGFybTY0OworfTsKKwordHlwZSBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisKK0tWTV9TMzkwX1NJR1BfU1RPUCAodmNwdSkgLSBzaWdwIHN0b3A7IG9wdGlvbmFsIGZsYWdzIGluIHBhcm0KK0tWTV9TMzkwX1BST0dSQU1fSU5UICh2Y3B1KSAtIHByb2dyYW0gY2hlY2s7IGNvZGUgaW4gcGFybQorS1ZNX1MzOTBfU0lHUF9TRVRfUFJFRklYICh2Y3B1KSAtIHNpZ3Agc2V0IHByZWZpeDsgcHJlZml4IGFkZHJlc3MgaW4gcGFybQorS1ZNX1MzOTBfUkVTVEFSVCAodmNwdSkgLSByZXN0YXJ0CitLVk1fUzM5MF9JTlRfQ0xPQ0tfQ09NUCAodmNwdSkgLSBjbG9jayBjb21wYXJhdG9yIGludGVycnVwdAorS1ZNX1MzOTBfSU5UX0NQVV9USU1FUiAodmNwdSkgLSBDUFUgdGltZXIgaW50ZXJydXB0CitLVk1fUzM5MF9JTlRfVklSVElPICh2bSkgLSB2aXJ0aW8gZXh0ZXJuYWwgaW50ZXJydXB0OyBleHRlcm5hbCBpbnRlcnJ1cHQKKwkJCSAgIHBhcmFtZXRlcnMgaW4gcGFybSBhbmQgcGFybTY0CitLVk1fUzM5MF9JTlRfU0VSVklDRSAodm0pIC0gc2NscCBleHRlcm5hbCBpbnRlcnJ1cHQ7IHNjbHAgcGFyYW1ldGVyIGluIHBhcm0KK0tWTV9TMzkwX0lOVF9FTUVSR0VOQ1kgKHZjcHUpIC0gc2lncCBlbWVyZ2VuY3k7IHNvdXJjZSBjcHUgaW4gcGFybQorS1ZNX1MzOTBfSU5UX0VYVEVSTkFMX0NBTEwgKHZjcHUpIC0gc2lncCBleHRlcm5hbCBjYWxsOyBzb3VyY2UgY3B1IGluIHBhcm0KK0tWTV9TMzkwX0lOVF9JTyhhaSxjc3NpZCxzc2lkLHNjaGlkKSAodm0pIC0gY29tcG91bmQgdmFsdWUgdG8gaW5kaWNhdGUgYW4KKyAgICBJL08gaW50ZXJydXB0IChhaSAtIGFkYXB0ZXIgaW50ZXJydXB0OyBjc3NpZCxzc2lkLHNjaGlkIC0gc3ViY2hhbm5lbCk7CisgICAgSS9PIGludGVycnVwdGlvbiBwYXJhbWV0ZXJzIGluIHBhcm0gKHN1YmNoYW5uZWwpIGFuZCBwYXJtNjQgKGludHBhcm0sCisgICAgaW50ZXJydXB0aW9uIHN1YmNsYXNzKQorS1ZNX1MzOTBfTUNISyAodm0sIHZjcHUpIC0gbWFjaGluZSBjaGVjayBpbnRlcnJ1cHQ7IGNyIDE0IGJpdHMgaW4gcGFybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgY2hlY2sgaW50ZXJydXB0IGNvZGUgaW4gcGFybTY0IChub3RlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgY2hlY2tzIG5lZWRpbmcgZnVydGhlciBwYXlsb2FkIGFyZSBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBieSB0aGlzIGlvY3RsKQorCitOb3RlIHRoYXQgdGhlIHZjcHUgaW9jdGwgaXMgYXN5bmNocm9ub3VzIHRvIHZjcHUgZXhlY3V0aW9uLgorCis0Ljc4IEtWTV9QUENfR0VUX0hUQUJfRkQKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9QUENfSFRBQl9GRAorQXJjaGl0ZWN0dXJlczogcG93ZXJwYworVHlwZTogdm0gaW9jdGwKK1BhcmFtZXRlcnM6IFBvaW50ZXIgdG8gc3RydWN0IGt2bV9nZXRfaHRhYl9mZCAoaW4pCitSZXR1cm5zOiBmaWxlIGRlc2NyaXB0b3IgbnVtYmVyICg+PSAwKSBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCitUaGlzIHJldHVybnMgYSBmaWxlIGRlc2NyaXB0b3IgdGhhdCBjYW4gYmUgdXNlZCBlaXRoZXIgdG8gcmVhZCBvdXQgdGhlCitlbnRyaWVzIGluIHRoZSBndWVzdCdzIGhhc2hlZCBwYWdlIHRhYmxlIChIUFQpLCBvciB0byB3cml0ZSBlbnRyaWVzIHRvCitpbml0aWFsaXplIHRoZSBIUFQuICBUaGUgcmV0dXJuZWQgZmQgY2FuIG9ubHkgYmUgd3JpdHRlbiB0byBpZiB0aGUKK0tWTV9HRVRfSFRBQl9XUklURSBiaXQgaXMgc2V0IGluIHRoZSBmbGFncyBmaWVsZCBvZiB0aGUgYXJndW1lbnQsIGFuZAorY2FuIG9ubHkgYmUgcmVhZCBpZiB0aGF0IGJpdCBpcyBjbGVhci4gIFRoZSBhcmd1bWVudCBzdHJ1Y3QgbG9va3MgbGlrZQordGhpczoKKworLyogRm9yIEtWTV9QUENfR0VUX0hUQUJfRkQgKi8KK3N0cnVjdCBrdm1fZ2V0X2h0YWJfZmQgeworCV9fdTY0CWZsYWdzOworCV9fdTY0CXN0YXJ0X2luZGV4OworCV9fdTY0CXJlc2VydmVkWzJdOworfTsKKworLyogVmFsdWVzIGZvciBrdm1fZ2V0X2h0YWJfZmQuZmxhZ3MgKi8KKyNkZWZpbmUgS1ZNX0dFVF9IVEFCX0JPTFRFRF9PTkxZCSgoX191NjQpMHgxKQorI2RlZmluZSBLVk1fR0VUX0hUQUJfV1JJVEUJCSgoX191NjQpMHgyKQorCitUaGUgYHN0YXJ0X2luZGV4JyBmaWVsZCBnaXZlcyB0aGUgaW5kZXggaW4gdGhlIEhQVCBvZiB0aGUgZW50cnkgYXQKK3doaWNoIHRvIHN0YXJ0IHJlYWRpbmcuICBJdCBpcyBpZ25vcmVkIHdoZW4gd3JpdGluZy4KKworUmVhZHMgb24gdGhlIGZkIHdpbGwgaW5pdGlhbGx5IHN1cHBseSBpbmZvcm1hdGlvbiBhYm91dCBhbGwKKyJpbnRlcmVzdGluZyIgSFBUIGVudHJpZXMuICBJbnRlcmVzdGluZyBlbnRyaWVzIGFyZSB0aG9zZSB3aXRoIHRoZQorYm9sdGVkIGJpdCBzZXQsIGlmIHRoZSBLVk1fR0VUX0hUQUJfQk9MVEVEX09OTFkgYml0IGlzIHNldCwgb3RoZXJ3aXNlCithbGwgZW50cmllcy4gIFdoZW4gdGhlIGVuZCBvZiB0aGUgSFBUIGlzIHJlYWNoZWQsIHRoZSByZWFkKCkgd2lsbAorcmV0dXJuLiAgSWYgcmVhZCgpIGlzIGNhbGxlZCBhZ2FpbiBvbiB0aGUgZmQsIGl0IHdpbGwgc3RhcnQgYWdhaW4gZnJvbQordGhlIGJlZ2lubmluZyBvZiB0aGUgSFBULCBidXQgd2lsbCBvbmx5IHJldHVybiBIUFQgZW50cmllcyB0aGF0IGhhdmUKK2NoYW5nZWQgc2luY2UgdGhleSB3ZXJlIGxhc3QgcmVhZC4KKworRGF0YSByZWFkIG9yIHdyaXR0ZW4gaXMgc3RydWN0dXJlZCBhcyBhIGhlYWRlciAoOCBieXRlcykgZm9sbG93ZWQgYnkgYQorc2VyaWVzIG9mIHZhbGlkIEhQVCBlbnRyaWVzICgxNiBieXRlcykgZWFjaC4gIFRoZSBoZWFkZXIgaW5kaWNhdGVzIGhvdworbWFueSB2YWxpZCBIUFQgZW50cmllcyB0aGVyZSBhcmUgYW5kIGhvdyBtYW55IGludmFsaWQgZW50cmllcyBmb2xsb3cKK3RoZSB2YWxpZCBlbnRyaWVzLiAgVGhlIGludmFsaWQgZW50cmllcyBhcmUgbm90IHJlcHJlc2VudGVkIGV4cGxpY2l0bHkKK2luIHRoZSBzdHJlYW0uICBUaGUgaGVhZGVyIGZvcm1hdCBpczoKKworc3RydWN0IGt2bV9nZXRfaHRhYl9oZWFkZXIgeworCV9fdTMyCWluZGV4OworCV9fdTE2CW5fdmFsaWQ7CisJX191MTYJbl9pbnZhbGlkOworfTsKKworV3JpdGVzIHRvIHRoZSBmZCBjcmVhdGUgSFBUIGVudHJpZXMgc3RhcnRpbmcgYXQgdGhlIGluZGV4IGdpdmVuIGluIHRoZQoraGVhZGVyOyBmaXJzdCBgbl92YWxpZCcgdmFsaWQgZW50cmllcyB3aXRoIGNvbnRlbnRzIGZyb20gdGhlIGRhdGEKK3dyaXR0ZW4sIHRoZW4gYG5faW52YWxpZCcgaW52YWxpZCBlbnRyaWVzLCBpbnZhbGlkYXRpbmcgYW55IHByZXZpb3VzbHkKK3ZhbGlkIGVudHJpZXMgZm91bmQuCisKKzQuNzkgS1ZNX0NSRUFURV9ERVZJQ0UKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9ERVZJQ0VfQ1RSTAorVHlwZTogdm0gaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1fY3JlYXRlX2RldmljZSAoaW4vb3V0KQorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorRXJyb3JzOgorICBFTk9ERVY6IFRoZSBkZXZpY2UgdHlwZSBpcyB1bmtub3duIG9yIHVuc3VwcG9ydGVkCisgIEVFWElTVDogRGV2aWNlIGFscmVhZHkgY3JlYXRlZCwgYW5kIHRoaXMgdHlwZSBvZiBkZXZpY2UgbWF5IG5vdAorICAgICAgICAgIGJlIGluc3RhbnRpYXRlZCBtdWx0aXBsZSB0aW1lcworCisgIE90aGVyIGVycm9yIGNvbmRpdGlvbnMgbWF5IGJlIGRlZmluZWQgYnkgaW5kaXZpZHVhbCBkZXZpY2UgdHlwZXMgb3IKKyAgaGF2ZSB0aGVpciBzdGFuZGFyZCBtZWFuaW5ncy4KKworQ3JlYXRlcyBhbiBlbXVsYXRlZCBkZXZpY2UgaW4gdGhlIGtlcm5lbC4gIFRoZSBmaWxlIGRlc2NyaXB0b3IgcmV0dXJuZWQKK2luIGZkIGNhbiBiZSB1c2VkIHdpdGggS1ZNX1NFVC9HRVQvSEFTX0RFVklDRV9BVFRSLgorCitJZiB0aGUgS1ZNX0NSRUFURV9ERVZJQ0VfVEVTVCBmbGFnIGlzIHNldCwgb25seSB0ZXN0IHdoZXRoZXIgdGhlCitkZXZpY2UgdHlwZSBpcyBzdXBwb3J0ZWQgKG5vdCBuZWNlc3NhcmlseSB3aGV0aGVyIGl0IGNhbiBiZSBjcmVhdGVkCitpbiB0aGUgY3VycmVudCB2bSkuCisKK0luZGl2aWR1YWwgZGV2aWNlcyBzaG91bGQgbm90IGRlZmluZSBmbGFncy4gIEF0dHJpYnV0ZXMgc2hvdWxkIGJlIHVzZWQKK2ZvciBzcGVjaWZ5aW5nIGFueSBiZWhhdmlvciB0aGF0IGlzIG5vdCBpbXBsaWVkIGJ5IHRoZSBkZXZpY2UgdHlwZQorbnVtYmVyLgorCitzdHJ1Y3Qga3ZtX2NyZWF0ZV9kZXZpY2UgeworCV9fdTMyCXR5cGU7CS8qIGluOiBLVk1fREVWX1RZUEVfeHh4ICovCisJX191MzIJZmQ7CS8qIG91dDogZGV2aWNlIGhhbmRsZSAqLworCV9fdTMyCWZsYWdzOwkvKiBpbjogS1ZNX0NSRUFURV9ERVZJQ0VfeHh4ICovCit9OworCis0LjgwIEtWTV9TRVRfREVWSUNFX0FUVFIvS1ZNX0dFVF9ERVZJQ0VfQVRUUgorCitDYXBhYmlsaXR5OiBLVk1fQ0FQX0RFVklDRV9DVFJMLCBLVk1fQ0FQX1ZNX0FUVFJJQlVURVMgZm9yIHZtIGRldmljZQorVHlwZTogZGV2aWNlIGlvY3RsLCB2bSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9kZXZpY2VfYXR0cgorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorRXJyb3JzOgorICBFTlhJTzogIFRoZSBncm91cCBvciBhdHRyaWJ1dGUgaXMgdW5rbm93bi91bnN1cHBvcnRlZCBmb3IgdGhpcyBkZXZpY2UKKyAgRVBFUk06ICBUaGUgYXR0cmlidXRlIGNhbm5vdCAoY3VycmVudGx5KSBiZSBhY2Nlc3NlZCB0aGlzIHdheQorICAgICAgICAgIChlLmcuIHJlYWQtb25seSBhdHRyaWJ1dGUsIG9yIGF0dHJpYnV0ZSB0aGF0IG9ubHkgbWFrZXMKKyAgICAgICAgICBzZW5zZSB3aGVuIHRoZSBkZXZpY2UgaXMgaW4gYSBkaWZmZXJlbnQgc3RhdGUpCisKKyAgT3RoZXIgZXJyb3IgY29uZGl0aW9ucyBtYXkgYmUgZGVmaW5lZCBieSBpbmRpdmlkdWFsIGRldmljZSB0eXBlcy4KKworR2V0cy9zZXRzIGEgc3BlY2lmaWVkIHBpZWNlIG9mIGRldmljZSBjb25maWd1cmF0aW9uIGFuZC9vciBzdGF0ZS4gIFRoZQorc2VtYW50aWNzIGFyZSBkZXZpY2Utc3BlY2lmaWMuICBTZWUgaW5kaXZpZHVhbCBkZXZpY2UgZG9jdW1lbnRhdGlvbiBpbgordGhlICJkZXZpY2VzIiBkaXJlY3RvcnkuICBBcyB3aXRoIE9ORV9SRUcsIHRoZSBzaXplIG9mIHRoZSBkYXRhCit0cmFuc2ZlcnJlZCBpcyBkZWZpbmVkIGJ5IHRoZSBwYXJ0aWN1bGFyIGF0dHJpYnV0ZS4KKworc3RydWN0IGt2bV9kZXZpY2VfYXR0ciB7CisJX191MzIJZmxhZ3M7CQkvKiBubyBmbGFncyBjdXJyZW50bHkgZGVmaW5lZCAqLworCV9fdTMyCWdyb3VwOwkJLyogZGV2aWNlLWRlZmluZWQgKi8KKwlfX3U2NAlhdHRyOwkJLyogZ3JvdXAtZGVmaW5lZCAqLworCV9fdTY0CWFkZHI7CQkvKiB1c2Vyc3BhY2UgYWRkcmVzcyBvZiBhdHRyIGRhdGEgKi8KK307CisKKzQuODEgS1ZNX0hBU19ERVZJQ0VfQVRUUgorCitDYXBhYmlsaXR5OiBLVk1fQ0FQX0RFVklDRV9DVFJMLCBLVk1fQ0FQX1ZNX0FUVFJJQlVURVMgZm9yIHZtIGRldmljZQorVHlwZTogZGV2aWNlIGlvY3RsLCB2bSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9kZXZpY2VfYXR0cgorUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorRXJyb3JzOgorICBFTlhJTzogIFRoZSBncm91cCBvciBhdHRyaWJ1dGUgaXMgdW5rbm93bi91bnN1cHBvcnRlZCBmb3IgdGhpcyBkZXZpY2UKKworVGVzdHMgd2hldGhlciBhIGRldmljZSBzdXBwb3J0cyBhIHBhcnRpY3VsYXIgYXR0cmlidXRlLiAgQSBzdWNjZXNzZnVsCityZXR1cm4gaW5kaWNhdGVzIHRoZSBhdHRyaWJ1dGUgaXMgaW1wbGVtZW50ZWQuICBJdCBkb2VzIG5vdCBuZWNlc3NhcmlseQoraW5kaWNhdGUgdGhhdCB0aGUgYXR0cmlidXRlIGNhbiBiZSByZWFkIG9yIHdyaXR0ZW4gaW4gdGhlIGRldmljZSdzCitjdXJyZW50IHN0YXRlLiAgImFkZHIiIGlzIGlnbm9yZWQuCisKKzQuODIgS1ZNX0FSTV9WQ1BVX0lOSVQKKworQ2FwYWJpbGl0eTogYmFzaWMKK0FyY2hpdGVjdHVyZXM6IGFybSwgYXJtNjQKK1R5cGU6IHZjcHUgaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1fdmNwdV9pbml0IChpbikKK1JldHVybnM6IDAgb24gc3VjY2VzczsgLTEgb24gZXJyb3IKK0Vycm9yczoKKyDCoEVJTlZBTDogwqDCoMKgdGhlIHRhcmdldCBpcyB1bmtub3duLCBvciB0aGUgY29tYmluYXRpb24gb2YgZmVhdHVyZXMgaXMgaW52YWxpZC4KKyDCoEVOT0VOVDogwqDCoMKgYSBmZWF0dXJlcyBiaXQgc3BlY2lmaWVkIGlzIHVua25vd24uCisKK1RoaXMgdGVsbHMgS1ZNIHdoYXQgdHlwZSBvZiBDUFUgdG8gcHJlc2VudCB0byB0aGUgZ3Vlc3QsIGFuZCB3aGF0CitvcHRpb25hbCBmZWF0dXJlcyBpdCBzaG91bGQgaGF2ZS4gwqBUaGlzIHdpbGwgY2F1c2UgYSByZXNldCBvZiB0aGUgY3B1CityZWdpc3RlcnMgdG8gdGhlaXIgaW5pdGlhbCB2YWx1ZXMuIMKgSWYgdGhpcyBpcyBub3QgY2FsbGVkLCBLVk1fUlVOIHdpbGwKK3JldHVybiBFTk9FWEVDIGZvciB0aGF0IHZjcHUuCisKK05vdGUgdGhhdCBiZWNhdXNlIHNvbWUgcmVnaXN0ZXJzIHJlZmxlY3QgbWFjaGluZSB0b3BvbG9neSwgYWxsIHZjcHVzCitzaG91bGQgYmUgY3JlYXRlZCBiZWZvcmUgdGhpcyBpb2N0bCBpcyBpbnZva2VkLgorCitVc2Vyc3BhY2UgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiBtdWx0aXBsZSB0aW1lcyBmb3IgYSBnaXZlbiB2Y3B1LCBpbmNsdWRpbmcKK2FmdGVyIHRoZSB2Y3B1IGhhcyBiZWVuIHJ1bi4gVGhpcyB3aWxsIHJlc2V0IHRoZSB2Y3B1IHRvIGl0cyBpbml0aWFsCitzdGF0ZS4gQWxsIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24gYWZ0ZXIgdGhlIGluaXRpYWwgY2FsbCBtdXN0IHVzZSB0aGUgc2FtZQordGFyZ2V0IGFuZCBzYW1lIHNldCBvZiBmZWF0dXJlIGZsYWdzLCBvdGhlcndpc2UgRUlOVkFMIHdpbGwgYmUgcmV0dXJuZWQuCisKK1Bvc3NpYmxlIGZlYXR1cmVzOgorCS0gS1ZNX0FSTV9WQ1BVX1BPV0VSX09GRjogU3RhcnRzIHRoZSBDUFUgaW4gYSBwb3dlci1vZmYgc3RhdGUuCisJICBEZXBlbmRzIG9uIEtWTV9DQVBfQVJNX1BTQ0kuICBJZiBub3Qgc2V0LCB0aGUgQ1BVIHdpbGwgYmUgcG93ZXJlZCBvbgorCSAgYW5kIGV4ZWN1dGUgZ3Vlc3QgY29kZSB3aGVuIEtWTV9SVU4gaXMgY2FsbGVkLgorCS0gS1ZNX0FSTV9WQ1BVX0VMMV8zMkJJVDogU3RhcnRzIHRoZSBDUFUgaW4gYSAzMmJpdCBtb2RlLgorCSAgRGVwZW5kcyBvbiBLVk1fQ0FQX0FSTV9FTDFfMzJCSVQgKGFybTY0IG9ubHkpLgorCS0gS1ZNX0FSTV9WQ1BVX1BTQ0lfMF8yOiBFbXVsYXRlIFBTQ0kgdjAuMiBmb3IgdGhlIENQVS4KKwkgIERlcGVuZHMgb24gS1ZNX0NBUF9BUk1fUFNDSV8wXzIuCisKKworNC44MyBLVk1fQVJNX1BSRUZFUlJFRF9UQVJHRVQKKworQ2FwYWJpbGl0eTogYmFzaWMKK0FyY2hpdGVjdHVyZXM6IGFybSwgYXJtNjQKK1R5cGU6IHZtIGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qgc3RydWN0IGt2bV92Y3B1X2luaXQgKG91dCkKK1JldHVybnM6IDAgb24gc3VjY2VzczsgLTEgb24gZXJyb3IKK0Vycm9yczoKKyAgRU5PREVWOiAgICBubyBwcmVmZXJyZWQgdGFyZ2V0IGF2YWlsYWJsZSBmb3IgdGhlIGhvc3QKKworVGhpcyBxdWVyaWVzIEtWTSBmb3IgcHJlZmVycmVkIENQVSB0YXJnZXQgdHlwZSB3aGljaCBjYW4gYmUgZW11bGF0ZWQKK2J5IEtWTSBvbiB1bmRlcmx5aW5nIGhvc3QuCisKK1RoZSBpb2N0bCByZXR1cm5zIHN0cnVjdCBrdm1fdmNwdV9pbml0IGluc3RhbmNlIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24KK2Fib3V0IHByZWZlcnJlZCBDUFUgdGFyZ2V0IHR5cGUgYW5kIHJlY29tbWVuZGVkIGZlYXR1cmVzIGZvciBpdC4gIFRoZQora3ZtX3ZjcHVfaW5pdC0+ZmVhdHVyZXMgYml0bWFwIHJldHVybmVkIHdpbGwgaGF2ZSBmZWF0dXJlIGJpdHMgc2V0IGlmCit0aGUgcHJlZmVycmVkIHRhcmdldCByZWNvbW1lbmRzIHNldHRpbmcgdGhlc2UgZmVhdHVyZXMsIGJ1dCB0aGlzIGlzCitub3QgbWFuZGF0b3J5LgorCitUaGUgaW5mb3JtYXRpb24gcmV0dXJuZWQgYnkgdGhpcyBpb2N0bCBjYW4gYmUgdXNlZCB0byBwcmVwYXJlIGFuIGluc3RhbmNlCitvZiBzdHJ1Y3Qga3ZtX3ZjcHVfaW5pdCBmb3IgS1ZNX0FSTV9WQ1BVX0lOSVQgaW9jdGwgd2hpY2ggd2lsbCByZXN1bHQgaW4KK2luIFZDUFUgbWF0Y2hpbmcgdW5kZXJseWluZyBob3N0LgorCisKKzQuODQgS1ZNX0dFVF9SRUdfTElTVAorCitDYXBhYmlsaXR5OiBiYXNpYworQXJjaGl0ZWN0dXJlczogYXJtLCBhcm02NCwgbWlwcworVHlwZTogdmNwdSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9yZWdfbGlzdCAoaW4vb3V0KQorUmV0dXJuczogMCBvbiBzdWNjZXNzOyAtMSBvbiBlcnJvcgorRXJyb3JzOgorIMKgRTJCSUc6IMKgwqDCoMKgdGhlIHJlZyBpbmRleCBsaXN0IGlzIHRvbyBiaWcgdG8gZml0IGluIHRoZSBhcnJheSBzcGVjaWZpZWQgYnkKKyDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0aGUgdXNlciAodGhlIG51bWJlciByZXF1aXJlZCB3aWxsIGJlIHdyaXR0ZW4gaW50byBuKS4KKworc3RydWN0IGt2bV9yZWdfbGlzdCB7CisJX191NjQgbjsgLyogbnVtYmVyIG9mIHJlZ2lzdGVycyBpbiByZWdbXSAqLworCV9fdTY0IHJlZ1swXTsKK307CisKK1RoaXMgaW9jdGwgcmV0dXJucyB0aGUgZ3Vlc3QgcmVnaXN0ZXJzIHRoYXQgYXJlIHN1cHBvcnRlZCBmb3IgdGhlCitLVk1fR0VUX09ORV9SRUcvS1ZNX1NFVF9PTkVfUkVHIGNhbGxzLgorCisKKzQuODUgS1ZNX0FSTV9TRVRfREVWSUNFX0FERFIgKGRlcHJlY2F0ZWQpCisKK0NhcGFiaWxpdHk6IEtWTV9DQVBfQVJNX1NFVF9ERVZJQ0VfQUREUgorQXJjaGl0ZWN0dXJlczogYXJtLCBhcm02NAorVHlwZTogdm0gaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1fYXJtX2RldmljZV9hZGRyZXNzIChpbikKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKK0Vycm9yczoKKyAgRU5PREVWOiBUaGUgZGV2aWNlIGlkIGlzIHVua25vd24KKyAgRU5YSU86ICBEZXZpY2Ugbm90IHN1cHBvcnRlZCBvbiBjdXJyZW50IHN5c3RlbQorICBFRVhJU1Q6IEFkZHJlc3MgYWxyZWFkeSBzZXQKKyAgRTJCSUc6ICBBZGRyZXNzIG91dHNpZGUgZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZQorICBFQlVTWTogIEFkZHJlc3Mgb3ZlcmxhcHMgd2l0aCBvdGhlciBkZXZpY2UgcmFuZ2UKKworc3RydWN0IGt2bV9hcm1fZGV2aWNlX2FkZHIgeworCV9fdTY0IGlkOworCV9fdTY0IGFkZHI7Cit9OworCitTcGVjaWZ5IGEgZGV2aWNlIGFkZHJlc3MgaW4gdGhlIGd1ZXN0J3MgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZSB3aGVyZSBndWVzdHMKK2NhbiBhY2Nlc3MgZW11bGF0ZWQgb3IgZGlyZWN0bHkgZXhwb3NlZCBkZXZpY2VzLCB3aGljaCB0aGUgaG9zdCBrZXJuZWwgbmVlZHMKK3RvIGtub3cgYWJvdXQuIFRoZSBpZCBmaWVsZCBpcyBhbiBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgaWRlbnRpZmllciBmb3IgYQorc3BlY2lmaWMgZGV2aWNlLgorCitBUk0vYXJtNjQgZGl2aWRlcyB0aGUgaWQgZmllbGQgaW50byB0d28gcGFydHMsIGEgZGV2aWNlIGlkIGFuZCBhbgorYWRkcmVzcyB0eXBlIGlkIHNwZWNpZmljIHRvIHRoZSBpbmRpdmlkdWFsIGRldmljZS4KKworIMKgYml0czogIHwgNjMgICAgICAgIC4uLiAgICAgICAzMiB8IDMxICAgIC4uLiAgICAxNiB8IDE1ICAgIC4uLiAgICAwIHwKKyAgZmllbGQ6IHwgICAgICAgIDB4MDAwMDAwMDAgICAgICB8ICAgICBkZXZpY2UgaWQgICB8ICBhZGRyIHR5cGUgaWQgIHwKKworQVJNL2FybTY0IGN1cnJlbnRseSBvbmx5IHJlcXVpcmUgdGhpcyB3aGVuIHVzaW5nIHRoZSBpbi1rZXJuZWwgR0lDCitzdXBwb3J0IGZvciB0aGUgaGFyZHdhcmUgVkdJQyBmZWF0dXJlcywgdXNpbmcgS1ZNX0FSTV9ERVZJQ0VfVkdJQ19WMgorYXMgdGhlIGRldmljZSBpZC4gIFdoZW4gc2V0dGluZyB0aGUgYmFzZSBhZGRyZXNzIGZvciB0aGUgZ3Vlc3QncworbWFwcGluZyBvZiB0aGUgVkdJQyB2aXJ0dWFsIENQVSBhbmQgZGlzdHJpYnV0b3IgaW50ZXJmYWNlLCB0aGUgaW9jdGwKK211c3QgYmUgY2FsbGVkIGFmdGVyIGNhbGxpbmcgS1ZNX0NSRUFURV9JUlFDSElQLCBidXQgYmVmb3JlIGNhbGxpbmcKK0tWTV9SVU4gb24gYW55IG9mIHRoZSBWQ1BVcy4gIENhbGxpbmcgdGhpcyBpb2N0bCB0d2ljZSBmb3IgYW55IG9mIHRoZQorYmFzZSBhZGRyZXNzZXMgd2lsbCByZXR1cm4gLUVFWElTVC4KKworTm90ZSwgdGhpcyBJT0NUTCBpcyBkZXByZWNhdGVkIGFuZCB0aGUgbW9yZSBmbGV4aWJsZSBTRVQvR0VUX0RFVklDRV9BVFRSIEFQSQorc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KKworCis0Ljg2IEtWTV9QUENfUlRBU19ERUZJTkVfVE9LRU4KKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9QUENfUlRBUworQXJjaGl0ZWN0dXJlczogcHBjCitUeXBlOiB2bSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9ydGFzX3Rva2VuX2FyZ3MKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworRGVmaW5lcyBhIHRva2VuIHZhbHVlIGZvciBhIFJUQVMgKFJ1biBUaW1lIEFic3RyYWN0aW9uIFNlcnZpY2VzKQorc2VydmljZSBpbiBvcmRlciB0byBhbGxvdyBpdCB0byBiZSBoYW5kbGVkIGluIHRoZSBrZXJuZWwuICBUaGUKK2FyZ3VtZW50IHN0cnVjdCBnaXZlcyB0aGUgbmFtZSBvZiB0aGUgc2VydmljZSwgd2hpY2ggbXVzdCBiZSB0aGUgbmFtZQorb2YgYSBzZXJ2aWNlIHRoYXQgaGFzIGEga2VybmVsLXNpZGUgaW1wbGVtZW50YXRpb24uICBJZiB0aGUgdG9rZW4KK3ZhbHVlIGlzIG5vbi16ZXJvLCBpdCB3aWxsIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGF0IHNlcnZpY2UsIGFuZAorc3Vic2VxdWVudCBSVEFTIGNhbGxzIGJ5IHRoZSBndWVzdCBzcGVjaWZ5aW5nIHRoYXQgdG9rZW4gd2lsbCBiZQoraGFuZGxlZCBieSB0aGUga2VybmVsLiAgSWYgdGhlIHRva2VuIHZhbHVlIGlzIDAsIHRoZW4gYW55IHRva2VuCithc3NvY2lhdGVkIHdpdGggdGhlIHNlcnZpY2Ugd2lsbCBiZSBmb3Jnb3R0ZW4sIGFuZCBzdWJzZXF1ZW50IFJUQVMKK2NhbGxzIGJ5IHRoZSBndWVzdCBmb3IgdGhhdCBzZXJ2aWNlIHdpbGwgYmUgcGFzc2VkIHRvIHVzZXJzcGFjZSB0byBiZQoraGFuZGxlZC4KKworNC44NyBLVk1fU0VUX0dVRVNUX0RFQlVHCisKK0NhcGFiaWxpdHk6IEtWTV9DQVBfU0VUX0dVRVNUX0RFQlVHCitBcmNoaXRlY3R1cmVzOiB4ODYsIHMzOTAsIHBwYywgYXJtNjQKK1R5cGU6IHZjcHUgaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1fZ3Vlc3RfZGVidWcgKGluKQorUmV0dXJuczogMCBvbiBzdWNjZXNzOyAtMSBvbiBlcnJvcgorCitzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnIHsKKyAgICAgICBfX3UzMiBjb250cm9sOworICAgICAgIF9fdTMyIHBhZDsKKyAgICAgICBzdHJ1Y3Qga3ZtX2d1ZXN0X2RlYnVnX2FyY2ggYXJjaDsKK307CisKK1NldCB1cCB0aGUgcHJvY2Vzc29yIHNwZWNpZmljIGRlYnVnIHJlZ2lzdGVycyBhbmQgY29uZmlndXJlIHZjcHUgZm9yCitoYW5kbGluZyBndWVzdCBkZWJ1ZyBldmVudHMuIFRoZXJlIGFyZSB0d28gcGFydHMgdG8gdGhlIHN0cnVjdHVyZSwgdGhlCitmaXJzdCBhIGNvbnRyb2wgYml0ZmllbGQgaW5kaWNhdGVzIHRoZSB0eXBlIG9mIGRlYnVnIGV2ZW50cyB0byBoYW5kbGUKK3doZW4gcnVubmluZy4gQ29tbW9uIGNvbnRyb2wgYml0cyBhcmU6CisKKyAgLSBLVk1fR1VFU1REQkdfRU5BQkxFOiAgICAgICAgZ3Vlc3QgZGVidWdnaW5nIGlzIGVuYWJsZWQKKyAgLSBLVk1fR1VFU1REQkdfU0lOR0xFU1RFUDogICAgdGhlIG5leHQgcnVuIHNob3VsZCBzaW5nbGUtc3RlcAorCitUaGUgdG9wIDE2IGJpdHMgb2YgdGhlIGNvbnRyb2wgZmllbGQgYXJlIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBjb250cm9sCitmbGFncyB3aGljaCBjYW4gaW5jbHVkZSB0aGUgZm9sbG93aW5nOgorCisgIC0gS1ZNX0dVRVNUREJHX1VTRV9TV19CUDogICAgIHVzaW5nIHNvZnR3YXJlIGJyZWFrcG9pbnRzIFt4ODYsIGFybTY0XQorICAtIEtWTV9HVUVTVERCR19VU0VfSFdfQlA6ICAgICB1c2luZyBoYXJkd2FyZSBicmVha3BvaW50cyBbeDg2LCBzMzkwLCBhcm02NF0KKyAgLSBLVk1fR1VFU1REQkdfSU5KRUNUX0RCOiAgICAgaW5qZWN0IERCIHR5cGUgZXhjZXB0aW9uIFt4ODZdCisgIC0gS1ZNX0dVRVNUREJHX0lOSkVDVF9CUDogICAgIGluamVjdCBCUCB0eXBlIGV4Y2VwdGlvbiBbeDg2XQorICAtIEtWTV9HVUVTVERCR19FWElUX1BFTkRJTkc6ICB0cmlnZ2VyIGFuIGltbWVkaWF0ZSBndWVzdCBleGl0IFtzMzkwXQorCitGb3IgZXhhbXBsZSBLVk1fR1VFU1REQkdfVVNFX1NXX0JQIGluZGljYXRlcyB0aGF0IHNvZnR3YXJlIGJyZWFrcG9pbnRzCithcmUgZW5hYmxlZCBpbiBtZW1vcnkgc28gd2UgbmVlZCB0byBlbnN1cmUgYnJlYWtwb2ludCBleGNlcHRpb25zIGFyZQorY29ycmVjdGx5IHRyYXBwZWQgYW5kIHRoZSBLVk0gcnVuIGxvb3AgZXhpdHMgYXQgdGhlIGJyZWFrcG9pbnQgYW5kIG5vdAorcnVubmluZyBvZmYgaW50byB0aGUgbm9ybWFsIGd1ZXN0IHZlY3Rvci4gRm9yIEtWTV9HVUVTVERCR19VU0VfSFdfQlAKK3dlIG5lZWQgdG8gZW5zdXJlIHRoZSBndWVzdCB2Q1BVcyBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgcmVnaXN0ZXJzIGFyZQordXBkYXRlZCB0byB0aGUgY29ycmVjdCAoc3VwcGxpZWQpIHZhbHVlcy4KKworVGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBzdHJ1Y3R1cmUgaXMgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGFuZAordHlwaWNhbGx5IGNvbnRhaW5zIGEgc2V0IG9mIGRlYnVnIHJlZ2lzdGVycy4KKworRm9yIGFybTY0IHRoZSBudW1iZXIgb2YgZGVidWcgcmVnaXN0ZXJzIGlzIGltcGxlbWVudGF0aW9uIGRlZmluZWQgYW5kCitjYW4gYmUgZGV0ZXJtaW5lZCBieSBxdWVyeWluZyB0aGUgS1ZNX0NBUF9HVUVTVF9ERUJVR19IV19CUFMgYW5kCitLVk1fQ0FQX0dVRVNUX0RFQlVHX0hXX1dQUyBjYXBhYmlsaXRpZXMgd2hpY2ggcmV0dXJuIGEgcG9zaXRpdmUgbnVtYmVyCitpbmRpY2F0aW5nIHRoZSBudW1iZXIgb2Ygc3VwcG9ydGVkIHJlZ2lzdGVycy4KKworV2hlbiBkZWJ1ZyBldmVudHMgZXhpdCB0aGUgbWFpbiBydW4gbG9vcCB3aXRoIHRoZSByZWFzb24KK0tWTV9FWElUX0RFQlVHIHdpdGggdGhlIGt2bV9kZWJ1Z19leGl0X2FyY2ggcGFydCBvZiB0aGUga3ZtX3J1bgorc3RydWN0dXJlIGNvbnRhaW5pbmcgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGRlYnVnIGluZm9ybWF0aW9uLgorCis0Ljg4IEtWTV9HRVRfRU1VTEFURURfQ1BVSUQKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9FWFRfRU1VTF9DUFVJRAorQXJjaGl0ZWN0dXJlczogeDg2CitUeXBlOiBzeXN0ZW0gaW9jdGwKK1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1fY3B1aWQyIChpbi9vdXQpCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yCisKK3N0cnVjdCBrdm1fY3B1aWQyIHsKKwlfX3UzMiBuZW50OworCV9fdTMyIGZsYWdzOworCXN0cnVjdCBrdm1fY3B1aWRfZW50cnkyIGVudHJpZXNbMF07Cit9OworCitUaGUgbWVtYmVyICdmbGFncycgaXMgdXNlZCBmb3IgcGFzc2luZyBmbGFncyBmcm9tIHVzZXJzcGFjZS4KKworI2RlZmluZSBLVk1fQ1BVSURfRkxBR19TSUdOSUZDQU5UX0lOREVYCQlCSVQoMCkKKyNkZWZpbmUgS1ZNX0NQVUlEX0ZMQUdfU1RBVEVGVUxfRlVOQwkJQklUKDEpCisjZGVmaW5lIEtWTV9DUFVJRF9GTEFHX1NUQVRFX1JFQURfTkVYVAkJQklUKDIpCisKK3N0cnVjdCBrdm1fY3B1aWRfZW50cnkyIHsKKwlfX3UzMiBmdW5jdGlvbjsKKwlfX3UzMiBpbmRleDsKKwlfX3UzMiBmbGFnczsKKwlfX3UzMiBlYXg7CisJX191MzIgZWJ4OworCV9fdTMyIGVjeDsKKwlfX3UzMiBlZHg7CisJX191MzIgcGFkZGluZ1szXTsKK307CisKK1RoaXMgaW9jdGwgcmV0dXJucyB4ODYgY3B1aWQgZmVhdHVyZXMgd2hpY2ggYXJlIGVtdWxhdGVkIGJ5Citrdm0uVXNlcnNwYWNlIGNhbiB1c2UgdGhlIGluZm9ybWF0aW9uIHJldHVybmVkIGJ5IHRoaXMgaW9jdGwgdG8gcXVlcnkKK3doaWNoIGZlYXR1cmVzIGFyZSBlbXVsYXRlZCBieSBrdm0gaW5zdGVhZCBvZiBiZWluZyBwcmVzZW50IG5hdGl2ZWx5LgorCitVc2Vyc3BhY2UgaW52b2tlcyBLVk1fR0VUX0VNVUxBVEVEX0NQVUlEIGJ5IHBhc3NpbmcgYSBrdm1fY3B1aWQyCitzdHJ1Y3R1cmUgd2l0aCB0aGUgJ25lbnQnIGZpZWxkIGluZGljYXRpbmcgdGhlIG51bWJlciBvZiBlbnRyaWVzIGluCit0aGUgdmFyaWFibGUtc2l6ZSBhcnJheSAnZW50cmllcycuIElmIHRoZSBudW1iZXIgb2YgZW50cmllcyBpcyB0b28gbG93Cit0byBkZXNjcmliZSB0aGUgY3B1IGNhcGFiaWxpdGllcywgYW4gZXJyb3IgKEUyQklHKSBpcyByZXR1cm5lZC4gSWYgdGhlCitudW1iZXIgaXMgdG9vIGhpZ2gsIHRoZSAnbmVudCcgZmllbGQgaXMgYWRqdXN0ZWQgYW5kIGFuIGVycm9yIChFTk9NRU0pCitpcyByZXR1cm5lZC4gSWYgdGhlIG51bWJlciBpcyBqdXN0IHJpZ2h0LCB0aGUgJ25lbnQnIGZpZWxkIGlzIGFkanVzdGVkCit0byB0aGUgbnVtYmVyIG9mIHZhbGlkIGVudHJpZXMgaW4gdGhlICdlbnRyaWVzJyBhcnJheSwgd2hpY2ggaXMgdGhlbgorZmlsbGVkLgorCitUaGUgZW50cmllcyByZXR1cm5lZCBhcmUgdGhlIHNldCBDUFVJRCBiaXRzIG9mIHRoZSByZXNwZWN0aXZlIGZlYXR1cmVzCit3aGljaCBrdm0gZW11bGF0ZXMsIGFzIHJldHVybmVkIGJ5IHRoZSBDUFVJRCBpbnN0cnVjdGlvbiwgd2l0aCB1bmtub3duCitvciB1bnN1cHBvcnRlZCBmZWF0dXJlIGJpdHMgY2xlYXJlZC4KKworRmVhdHVyZXMgbGlrZSB4MmFwaWMsIGZvciBleGFtcGxlLCBtYXkgbm90IGJlIHByZXNlbnQgaW4gdGhlIGhvc3QgY3B1CitidXQgYXJlIGV4cG9zZWQgYnkga3ZtIGluIEtWTV9HRVRfU1VQUE9SVEVEX0NQVUlEIGJlY2F1c2UgdGhleSBjYW4gYmUKK2VtdWxhdGVkIGVmZmljaWVudGx5IGFuZCB0aHVzIG5vdCBpbmNsdWRlZCBoZXJlLgorCitUaGUgZmllbGRzIGluIGVhY2ggZW50cnkgYXJlIGRlZmluZWQgYXMgZm9sbG93czoKKworICBmdW5jdGlvbjogdGhlIGVheCB2YWx1ZSB1c2VkIHRvIG9idGFpbiB0aGUgZW50cnkKKyAgaW5kZXg6IHRoZSBlY3ggdmFsdWUgdXNlZCB0byBvYnRhaW4gdGhlIGVudHJ5IChmb3IgZW50cmllcyB0aGF0IGFyZQorICAgICAgICAgYWZmZWN0ZWQgYnkgZWN4KQorICBmbGFnczogYW4gT1Igb2YgemVybyBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIEtWTV9DUFVJRF9GTEFHX1NJR05JRkNBTlRfSU5ERVg6CisgICAgICAgICAgIGlmIHRoZSBpbmRleCBmaWVsZCBpcyB2YWxpZAorICAgICAgICBLVk1fQ1BVSURfRkxBR19TVEFURUZVTF9GVU5DOgorICAgICAgICAgICBpZiBjcHVpZCBmb3IgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGRpZmZlcmVudCB2YWx1ZXMgZm9yIHN1Y2Nlc3NpdmUKKyAgICAgICAgICAgaW52b2NhdGlvbnM7IHRoZXJlIHdpbGwgYmUgc2V2ZXJhbCBlbnRyaWVzIHdpdGggdGhlIHNhbWUgZnVuY3Rpb24sCisgICAgICAgICAgIGFsbCB3aXRoIHRoaXMgZmxhZyBzZXQKKyAgICAgICAgS1ZNX0NQVUlEX0ZMQUdfU1RBVEVfUkVBRF9ORVhUOgorICAgICAgICAgICBmb3IgS1ZNX0NQVUlEX0ZMQUdfU1RBVEVGVUxfRlVOQyBlbnRyaWVzLCBzZXQgaWYgdGhpcyBlbnRyeSBpcworICAgICAgICAgICB0aGUgZmlyc3QgZW50cnkgdG8gYmUgcmVhZCBieSBhIGNwdQorICAgZWF4LCBlYngsIGVjeCwgZWR4OiB0aGUgdmFsdWVzIHJldHVybmVkIGJ5IHRoZSBjcHVpZCBpbnN0cnVjdGlvbiBmb3IKKyAgICAgICAgIHRoaXMgZnVuY3Rpb24vaW5kZXggY29tYmluYXRpb24KKworNC44OSBLVk1fUzM5MF9NRU1fT1AKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9TMzkwX01FTV9PUAorQXJjaGl0ZWN0dXJlczogczM5MAorVHlwZTogdmNwdSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9zMzkwX21lbV9vcCAoaW4pCitSZXR1cm5zOiA9IDAgb24gc3VjY2VzcywKKyAgICAgICAgIDwgMCBvbiBnZW5lcmljIGVycm9yIChlLmcuIC1FRkFVTFQgb3IgLUVOT01FTSksCisgICAgICAgICA+IDAgaWYgYW4gZXhjZXB0aW9uIG9jY3VycmVkIHdoaWxlIHdhbGtpbmcgdGhlIHBhZ2UgdGFibGVzCisKK1JlYWQgb3Igd3JpdGUgZGF0YSBmcm9tL3RvIHRoZSBsb2dpY2FsICh2aXJ0dWFsKSBtZW1vcnkgb2YgYSBWQ1BVLgorCitQYXJhbWV0ZXJzIGFyZSBzcGVjaWZpZWQgdmlhIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOgorCitzdHJ1Y3Qga3ZtX3MzOTBfbWVtX29wIHsKKwlfX3U2NCBnYWRkcjsJCS8qIHRoZSBndWVzdCBhZGRyZXNzICovCisJX191NjQgZmxhZ3M7CQkvKiBmbGFncyAqLworCV9fdTMyIHNpemU7CQkvKiBhbW91bnQgb2YgYnl0ZXMgKi8KKwlfX3UzMiBvcDsJCS8qIHR5cGUgb2Ygb3BlcmF0aW9uICovCisJX191NjQgYnVmOwkJLyogYnVmZmVyIGluIHVzZXJzcGFjZSAqLworCV9fdTggYXI7CQkvKiB0aGUgYWNjZXNzIHJlZ2lzdGVyIG51bWJlciAqLworCV9fdTggcmVzZXJ2ZWRbMzFdOwkvKiBzaG91bGQgYmUgc2V0IHRvIDAgKi8KK307CisKK1RoZSB0eXBlIG9mIG9wZXJhdGlvbiBpcyBzcGVjaWZpZWQgaW4gdGhlICJvcCIgZmllbGQuIEl0IGlzIGVpdGhlcgorS1ZNX1MzOTBfTUVNT1BfTE9HSUNBTF9SRUFEIGZvciByZWFkaW5nIGZyb20gbG9naWNhbCBtZW1vcnkgc3BhY2Ugb3IKK0tWTV9TMzkwX01FTU9QX0xPR0lDQUxfV1JJVEUgZm9yIHdyaXRpbmcgdG8gbG9naWNhbCBtZW1vcnkgc3BhY2UuIFRoZQorS1ZNX1MzOTBfTUVNT1BfRl9DSEVDS19PTkxZIGZsYWcgY2FuIGJlIHNldCBpbiB0aGUgImZsYWdzIiBmaWVsZCB0byBjaGVjaword2hldGhlciB0aGUgY29ycmVzcG9uZGluZyBtZW1vcnkgYWNjZXNzIHdvdWxkIGNyZWF0ZSBhbiBhY2Nlc3MgZXhjZXB0aW9uCisod2l0aG91dCB0b3VjaGluZyB0aGUgZGF0YSBpbiB0aGUgbWVtb3J5IGF0IHRoZSBkZXN0aW5hdGlvbikuIEluIGNhc2UgYW4KK2FjY2VzcyBleGNlcHRpb24gb2NjdXJyZWQgd2hpbGUgd2Fsa2luZyB0aGUgTU1VIHRhYmxlcyBvZiB0aGUgZ3Vlc3QsIHRoZQoraW9jdGwgcmV0dXJucyBhIHBvc2l0aXZlIGVycm9yIG51bWJlciB0byBpbmRpY2F0ZSB0aGUgdHlwZSBvZiBleGNlcHRpb24uCitUaGlzIGV4Y2VwdGlvbiBpcyBhbHNvIHJhaXNlZCBkaXJlY3RseSBhdCB0aGUgY29ycmVzcG9uZGluZyBWQ1BVIGlmIHRoZQorZmxhZyBLVk1fUzM5MF9NRU1PUF9GX0lOSkVDVF9FWENFUFRJT04gaXMgc2V0IGluIHRoZSAiZmxhZ3MiIGZpZWxkLgorCitUaGUgc3RhcnQgYWRkcmVzcyBvZiB0aGUgbWVtb3J5IHJlZ2lvbiBoYXMgdG8gYmUgc3BlY2lmaWVkIGluIHRoZSAiZ2FkZHIiCitmaWVsZCwgYW5kIHRoZSBsZW5ndGggb2YgdGhlIHJlZ2lvbiBpbiB0aGUgInNpemUiIGZpZWxkLiAiYnVmIiBpcyB0aGUgYnVmZmVyCitzdXBwbGllZCBieSB0aGUgdXNlcnNwYWNlIGFwcGxpY2F0aW9uIHdoZXJlIHRoZSByZWFkIGRhdGEgc2hvdWxkIGJlIHdyaXR0ZW4KK3RvIGZvciBLVk1fUzM5MF9NRU1PUF9MT0dJQ0FMX1JFQUQsIG9yIHdoZXJlIHRoZSBkYXRhIHRoYXQgc2hvdWxkIGJlIHdyaXR0ZW4KK2lzIHN0b3JlZCBmb3IgYSBLVk1fUzM5MF9NRU1PUF9MT0dJQ0FMX1dSSVRFLiAiYnVmIiBpcyB1bnVzZWQgYW5kIGNhbiBiZSBOVUxMCit3aGVuIEtWTV9TMzkwX01FTU9QX0ZfQ0hFQ0tfT05MWSBpcyBzcGVjaWZpZWQuICJhciIgZGVzaWduYXRlcyB0aGUgYWNjZXNzCityZWdpc3RlciBudW1iZXIgdG8gYmUgdXNlZC4KKworVGhlICJyZXNlcnZlZCIgZmllbGQgaXMgbWVhbnQgZm9yIGZ1dHVyZSBleHRlbnNpb25zLiBJdCBpcyBub3QgdXNlZCBieQorS1ZNIHdpdGggdGhlIGN1cnJlbnRseSBkZWZpbmVkIHNldCBvZiBmbGFncy4KKworNC45MCBLVk1fUzM5MF9HRVRfU0tFWVMKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9TMzkwX1NLRVlTCitBcmNoaXRlY3R1cmVzOiBzMzkwCitUeXBlOiB2bSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9zMzkwX3NrZXlzCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIEtWTV9TMzkwX0dFVF9LRVlTX05PTkUgaWYgZ3Vlc3QgaXMgbm90IHVzaW5nIHN0b3JhZ2UKKyAgICAgICAgIGtleXMsIG5lZ2F0aXZlIHZhbHVlIG9uIGVycm9yCisKK1RoaXMgaW9jdGwgaXMgdXNlZCB0byBnZXQgZ3Vlc3Qgc3RvcmFnZSBrZXkgdmFsdWVzIG9uIHRoZSBzMzkwCithcmNoaXRlY3R1cmUuIFRoZSBpb2N0bCB0YWtlcyBwYXJhbWV0ZXJzIHZpYSB0aGUga3ZtX3MzOTBfc2tleXMgc3RydWN0LgorCitzdHJ1Y3Qga3ZtX3MzOTBfc2tleXMgeworCV9fdTY0IHN0YXJ0X2dmbjsKKwlfX3U2NCBjb3VudDsKKwlfX3U2NCBza2V5ZGF0YV9hZGRyOworCV9fdTMyIGZsYWdzOworCV9fdTMyIHJlc2VydmVkWzldOworfTsKKworVGhlIHN0YXJ0X2dmbiBmaWVsZCBpcyB0aGUgbnVtYmVyIG9mIHRoZSBmaXJzdCBndWVzdCBmcmFtZSB3aG9zZSBzdG9yYWdlIGtleXMKK3lvdSB3YW50IHRvIGdldC4KKworVGhlIGNvdW50IGZpZWxkIGlzIHRoZSBudW1iZXIgb2YgY29uc2VjdXRpdmUgZnJhbWVzIChzdGFydGluZyBmcm9tIHN0YXJ0X2dmbikKK3dob3NlIHN0b3JhZ2Uga2V5cyB0byBnZXQuIFRoZSBjb3VudCBmaWVsZCBtdXN0IGJlIGF0IGxlYXN0IDEgYW5kIHRoZSBtYXhpbXVtCithbGxvd2VkIHZhbHVlIGlzIGRlZmluZWQgYXMgS1ZNX1MzOTBfU0tFWVNfQUxMT0NfTUFYLiBWYWx1ZXMgb3V0c2lkZSB0aGlzIHJhbmdlCit3aWxsIGNhdXNlIHRoZSBpb2N0bCB0byByZXR1cm4gLUVJTlZBTC4KKworVGhlIHNrZXlkYXRhX2FkZHIgZmllbGQgaXMgdGhlIGFkZHJlc3MgdG8gYSBidWZmZXIgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgY291bnQKK2J5dGVzLiBUaGlzIGJ1ZmZlciB3aWxsIGJlIGZpbGxlZCB3aXRoIHN0b3JhZ2Uga2V5IGRhdGEgYnkgdGhlIGlvY3RsLgorCis0LjkxIEtWTV9TMzkwX1NFVF9TS0VZUworCitDYXBhYmlsaXR5OiBLVk1fQ0FQX1MzOTBfU0tFWVMKK0FyY2hpdGVjdHVyZXM6IHMzOTAKK1R5cGU6IHZtIGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX3MzOTBfc2tleXMKK1JldHVybnM6IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgdmFsdWUgb24gZXJyb3IKKworVGhpcyBpb2N0bCBpcyB1c2VkIHRvIHNldCBndWVzdCBzdG9yYWdlIGtleSB2YWx1ZXMgb24gdGhlIHMzOTAKK2FyY2hpdGVjdHVyZS4gVGhlIGlvY3RsIHRha2VzIHBhcmFtZXRlcnMgdmlhIHRoZSBrdm1fczM5MF9za2V5cyBzdHJ1Y3QuCitTZWUgc2VjdGlvbiBvbiBLVk1fUzM5MF9HRVRfU0tFWVMgZm9yIHN0cnVjdCBkZWZpbml0aW9uLgorCitUaGUgc3RhcnRfZ2ZuIGZpZWxkIGlzIHRoZSBudW1iZXIgb2YgdGhlIGZpcnN0IGd1ZXN0IGZyYW1lIHdob3NlIHN0b3JhZ2Uga2V5cworeW91IHdhbnQgdG8gc2V0LgorCitUaGUgY291bnQgZmllbGQgaXMgdGhlIG51bWJlciBvZiBjb25zZWN1dGl2ZSBmcmFtZXMgKHN0YXJ0aW5nIGZyb20gc3RhcnRfZ2ZuKQord2hvc2Ugc3RvcmFnZSBrZXlzIHRvIGdldC4gVGhlIGNvdW50IGZpZWxkIG11c3QgYmUgYXQgbGVhc3QgMSBhbmQgdGhlIG1heGltdW0KK2FsbG93ZWQgdmFsdWUgaXMgZGVmaW5lZCBhcyBLVk1fUzM5MF9TS0VZU19BTExPQ19NQVguIFZhbHVlcyBvdXRzaWRlIHRoaXMgcmFuZ2UKK3dpbGwgY2F1c2UgdGhlIGlvY3RsIHRvIHJldHVybiAtRUlOVkFMLgorCitUaGUgc2tleWRhdGFfYWRkciBmaWVsZCBpcyB0aGUgYWRkcmVzcyB0byBhIGJ1ZmZlciBjb250YWluaW5nIGNvdW50IGJ5dGVzIG9mCitzdG9yYWdlIGtleXMuIEVhY2ggYnl0ZSBpbiB0aGUgYnVmZmVyIHdpbGwgYmUgc2V0IGFzIHRoZSBzdG9yYWdlIGtleSBmb3IgYQorc2luZ2xlIGZyYW1lIHN0YXJ0aW5nIGF0IHN0YXJ0X2dmbiBmb3IgY291bnQgZnJhbWVzLgorCitOb3RlOiBJZiBhbnkgYXJjaGl0ZWN0dXJhbGx5IGludmFsaWQga2V5IHZhbHVlIGlzIGZvdW5kIGluIHRoZSBnaXZlbiBkYXRhIHRoZW4KK3RoZSBpb2N0bCB3aWxsIHJldHVybiAtRUlOVkFMLgorCis0LjkyIEtWTV9TMzkwX0lSUQorCitDYXBhYmlsaXR5OiBLVk1fQ0FQX1MzOTBfSU5KRUNUX0lSUQorQXJjaGl0ZWN0dXJlczogczM5MAorVHlwZTogdmNwdSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9zMzkwX2lycSAoaW4pCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yCitFcnJvcnM6CisgIEVJTlZBTDogaW50ZXJydXB0IHR5cGUgaXMgaW52YWxpZAorICAgICAgICAgIHR5cGUgaXMgS1ZNX1MzOTBfU0lHUF9TVE9QIGFuZCBmbGFnIHBhcmFtZXRlciBpcyBpbnZhbGlkIHZhbHVlCisgICAgICAgICAgdHlwZSBpcyBLVk1fUzM5MF9JTlRfRVhURVJOQUxfQ0FMTCBhbmQgY29kZSBpcyBiaWdnZXIKKyAgICAgICAgICAgIHRoYW4gdGhlIG1heGltdW0gb2YgVkNQVXMKKyAgRUJVU1k6ICB0eXBlIGlzIEtWTV9TMzkwX1NJR1BfU0VUX1BSRUZJWCBhbmQgdmNwdSBpcyBub3Qgc3RvcHBlZAorICAgICAgICAgIHR5cGUgaXMgS1ZNX1MzOTBfU0lHUF9TVE9QIGFuZCBhIHN0b3AgaXJxIGlzIGFscmVhZHkgcGVuZGluZworICAgICAgICAgIHR5cGUgaXMgS1ZNX1MzOTBfSU5UX0VYVEVSTkFMX0NBTEwgYW5kIGFuIGV4dGVybmFsIGNhbGwgaW50ZXJydXB0CisgICAgICAgICAgICBpcyBhbHJlYWR5IHBlbmRpbmcKKworQWxsb3dzIHRvIGluamVjdCBhbiBpbnRlcnJ1cHQgdG8gdGhlIGd1ZXN0LgorCitVc2luZyBzdHJ1Y3Qga3ZtX3MzOTBfaXJxIGFzIGEgcGFyYW1ldGVyIGFsbG93cwordG8gaW5qZWN0IGFkZGl0aW9uYWwgcGF5bG9hZCB3aGljaCBpcyBub3QKK3Bvc3NpYmxlIHZpYSBLVk1fUzM5MF9JTlRFUlJVUFQuCisKK0ludGVycnVwdCBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgdmlhIGt2bV9zMzkwX2lycToKKworc3RydWN0IGt2bV9zMzkwX2lycSB7CisJX191NjQgdHlwZTsKKwl1bmlvbiB7CisJCXN0cnVjdCBrdm1fczM5MF9pb19pbmZvIGlvOworCQlzdHJ1Y3Qga3ZtX3MzOTBfZXh0X2luZm8gZXh0OworCQlzdHJ1Y3Qga3ZtX3MzOTBfcGdtX2luZm8gcGdtOworCQlzdHJ1Y3Qga3ZtX3MzOTBfZW1lcmdfaW5mbyBlbWVyZzsKKwkJc3RydWN0IGt2bV9zMzkwX2V4dGNhbGxfaW5mbyBleHRjYWxsOworCQlzdHJ1Y3Qga3ZtX3MzOTBfcHJlZml4X2luZm8gcHJlZml4OworCQlzdHJ1Y3Qga3ZtX3MzOTBfc3RvcF9pbmZvIHN0b3A7CisJCXN0cnVjdCBrdm1fczM5MF9tY2hrX2luZm8gbWNoazsKKwkJY2hhciByZXNlcnZlZFs2NF07CisJfSB1OworfTsKKwordHlwZSBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisKK0tWTV9TMzkwX1NJR1BfU1RPUCAtIHNpZ3Agc3RvcDsgcGFyYW1ldGVyIGluIC5zdG9wCitLVk1fUzM5MF9QUk9HUkFNX0lOVCAtIHByb2dyYW0gY2hlY2s7IHBhcmFtZXRlcnMgaW4gLnBnbQorS1ZNX1MzOTBfU0lHUF9TRVRfUFJFRklYIC0gc2lncCBzZXQgcHJlZml4OyBwYXJhbWV0ZXJzIGluIC5wcmVmaXgKK0tWTV9TMzkwX1JFU1RBUlQgLSByZXN0YXJ0OyBubyBwYXJhbWV0ZXJzCitLVk1fUzM5MF9JTlRfQ0xPQ0tfQ09NUCAtIGNsb2NrIGNvbXBhcmF0b3IgaW50ZXJydXB0OyBubyBwYXJhbWV0ZXJzCitLVk1fUzM5MF9JTlRfQ1BVX1RJTUVSIC0gQ1BVIHRpbWVyIGludGVycnVwdDsgbm8gcGFyYW1ldGVycworS1ZNX1MzOTBfSU5UX0VNRVJHRU5DWSAtIHNpZ3AgZW1lcmdlbmN5OyBwYXJhbWV0ZXJzIGluIC5lbWVyZworS1ZNX1MzOTBfSU5UX0VYVEVSTkFMX0NBTEwgLSBzaWdwIGV4dGVybmFsIGNhbGw7IHBhcmFtZXRlcnMgaW4gLmV4dGNhbGwKK0tWTV9TMzkwX01DSEsgLSBtYWNoaW5lIGNoZWNrIGludGVycnVwdDsgcGFyYW1ldGVycyBpbiAubWNoaworCisKK05vdGUgdGhhdCB0aGUgdmNwdSBpb2N0bCBpcyBhc3luY2hyb25vdXMgdG8gdmNwdSBleGVjdXRpb24uCisKKzQuOTQgS1ZNX1MzOTBfR0VUX0lSUV9TVEFURQorCitDYXBhYmlsaXR5OiBLVk1fQ0FQX1MzOTBfSVJRX1NUQVRFCitBcmNoaXRlY3R1cmVzOiBzMzkwCitUeXBlOiB2Y3B1IGlvY3RsCitQYXJhbWV0ZXJzOiBzdHJ1Y3Qga3ZtX3MzOTBfaXJxX3N0YXRlIChvdXQpCitSZXR1cm5zOiA+PSBudW1iZXIgb2YgYnl0ZXMgY29waWVkIGludG8gYnVmZmVyLAorICAgICAgICAgLUVJTlZBTCBpZiBidWZmZXIgc2l6ZSBpcyAwLAorICAgICAgICAgLUVOT0JVRlMgaWYgYnVmZmVyIHNpemUgaXMgdG9vIHNtYWxsIHRvIGZpdCBhbGwgcGVuZGluZyBpbnRlcnJ1cHRzLAorICAgICAgICAgLUVGQVVMVCBpZiB0aGUgYnVmZmVyIGFkZHJlc3Mgd2FzIGludmFsaWQKKworVGhpcyBpb2N0bCBhbGxvd3MgdXNlcnNwYWNlIHRvIHJldHJpZXZlIHRoZSBjb21wbGV0ZSBzdGF0ZSBvZiBhbGwgY3VycmVudGx5CitwZW5kaW5nIGludGVycnVwdHMgaW4gYSBzaW5nbGUgYnVmZmVyLiBVc2UgY2FzZXMgaW5jbHVkZSBtaWdyYXRpb24KK2FuZCBpbnRyb3NwZWN0aW9uLiBUaGUgcGFyYW1ldGVyIHN0cnVjdHVyZSBjb250YWlucyB0aGUgYWRkcmVzcyBvZiBhCit1c2Vyc3BhY2UgYnVmZmVyIGFuZCBpdHMgbGVuZ3RoOgorCitzdHJ1Y3Qga3ZtX3MzOTBfaXJxX3N0YXRlIHsKKwlfX3U2NCBidWY7CisJX191MzIgZmxhZ3M7CisJX191MzIgbGVuOworCV9fdTMyIHJlc2VydmVkWzRdOworfTsKKworVXNlcnNwYWNlIHBhc3NlcyBpbiB0aGUgYWJvdmUgc3RydWN0IGFuZCBmb3IgZWFjaCBwZW5kaW5nIGludGVycnVwdCBhCitzdHJ1Y3Qga3ZtX3MzOTBfaXJxIGlzIGNvcGllZCB0byB0aGUgcHJvdmlkZWQgYnVmZmVyLgorCitJZiAtRU5PQlVGUyBpcyByZXR1cm5lZCB0aGUgYnVmZmVyIHByb3ZpZGVkIHdhcyB0b28gc21hbGwgYW5kIHVzZXJzcGFjZQorbWF5IHJldHJ5IHdpdGggYSBiaWdnZXIgYnVmZmVyLgorCis0Ljk1IEtWTV9TMzkwX1NFVF9JUlFfU1RBVEUKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9TMzkwX0lSUV9TVEFURQorQXJjaGl0ZWN0dXJlczogczM5MAorVHlwZTogdmNwdSBpb2N0bAorUGFyYW1ldGVyczogc3RydWN0IGt2bV9zMzkwX2lycV9zdGF0ZSAoaW4pCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsCisgICAgICAgICAtRUZBVUxUIGlmIHRoZSBidWZmZXIgYWRkcmVzcyB3YXMgaW52YWxpZCwKKyAgICAgICAgIC1FSU5WQUwgZm9yIGFuIGludmFsaWQgYnVmZmVyIGxlbmd0aCAoc2VlIGJlbG93KSwKKyAgICAgICAgIC1FQlVTWSBpZiB0aGVyZSB3ZXJlIGFscmVhZHkgaW50ZXJydXB0cyBwZW5kaW5nLAorICAgICAgICAgZXJyb3JzIG9jY3VycmluZyB3aGVuIGFjdHVhbGx5IGluamVjdGluZyB0aGUKKyAgICAgICAgICBpbnRlcnJ1cHQuIFNlZSBLVk1fUzM5MF9JUlEuCisKK1RoaXMgaW9jdGwgYWxsb3dzIHVzZXJzcGFjZSB0byBzZXQgdGhlIGNvbXBsZXRlIHN0YXRlIG9mIGFsbCBjcHUtbG9jYWwKK2ludGVycnVwdHMgY3VycmVudGx5IHBlbmRpbmcgZm9yIHRoZSB2Y3B1LiBJdCBpcyBpbnRlbmRlZCBmb3IgcmVzdG9yaW5nCitpbnRlcnJ1cHQgc3RhdGUgYWZ0ZXIgYSBtaWdyYXRpb24uIFRoZSBpbnB1dCBwYXJhbWV0ZXIgaXMgYSB1c2Vyc3BhY2UgYnVmZmVyCitjb250YWluaW5nIGEgc3RydWN0IGt2bV9zMzkwX2lycV9zdGF0ZToKKworc3RydWN0IGt2bV9zMzkwX2lycV9zdGF0ZSB7CisJX191NjQgYnVmOworCV9fdTMyIGxlbjsKKwlfX3UzMiBwYWQ7Cit9OworCitUaGUgdXNlcnNwYWNlIG1lbW9yeSByZWZlcmVuY2VkIGJ5IGJ1ZiBjb250YWlucyBhIHN0cnVjdCBrdm1fczM5MF9pcnEKK2ZvciBlYWNoIGludGVycnVwdCB0byBiZSBpbmplY3RlZCBpbnRvIHRoZSBndWVzdC4KK0lmIG9uZSBvZiB0aGUgaW50ZXJydXB0cyBjb3VsZCBub3QgYmUgaW5qZWN0ZWQgZm9yIHNvbWUgcmVhc29uIHRoZQoraW9jdGwgYWJvcnRzLgorCitsZW4gbXVzdCBiZSBhIG11bHRpcGxlIG9mIHNpemVvZihzdHJ1Y3Qga3ZtX3MzOTBfaXJxKS4gSXQgbXVzdCBiZSA+IDAKK2FuZCBpdCBtdXN0IG5vdCBleGNlZWQgKG1heF92Y3B1cyArIDMyKSAqIHNpemVvZihzdHJ1Y3Qga3ZtX3MzOTBfaXJxKSwKK3doaWNoIGlzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwb3NzaWJseSBwZW5kaW5nIGNwdS1sb2NhbCBpbnRlcnJ1cHRzLgorCis0LjkwIEtWTV9TTUkKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9YODZfU01NCitBcmNoaXRlY3R1cmVzOiB4ODYKK1R5cGU6IHZjcHUgaW9jdGwKK1BhcmFtZXRlcnM6IG5vbmUKK1JldHVybnM6IDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IKKworUXVldWVzIGFuIFNNSSBvbiB0aGUgdGhyZWFkJ3MgdmNwdS4KKworNS4gVGhlIGt2bV9ydW4gc3RydWN0dXJlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQXBwbGljYXRpb24gY29kZSBvYnRhaW5zIGEgcG9pbnRlciB0byB0aGUga3ZtX3J1biBzdHJ1Y3R1cmUgYnkKK21tYXAoKWluZyBhIHZjcHUgZmQuICBGcm9tIHRoYXQgcG9pbnQsIGFwcGxpY2F0aW9uIGNvZGUgY2FuIGNvbnRyb2wKK2V4ZWN1dGlvbiBieSBjaGFuZ2luZyBmaWVsZHMgaW4ga3ZtX3J1biBwcmlvciB0byBjYWxsaW5nIHRoZSBLVk1fUlVOCitpb2N0bCwgYW5kIG9idGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVhc29uIEtWTV9SVU4gcmV0dXJuZWQgYnkKK2xvb2tpbmcgdXAgc3RydWN0dXJlIG1lbWJlcnMuCisKK3N0cnVjdCBrdm1fcnVuIHsKKwkvKiBpbiAqLworCV9fdTggcmVxdWVzdF9pbnRlcnJ1cHRfd2luZG93OworCitSZXF1ZXN0IHRoYXQgS1ZNX1JVTiByZXR1cm4gd2hlbiBpdCBiZWNvbWVzIHBvc3NpYmxlIHRvIGluamVjdCBleHRlcm5hbAoraW50ZXJydXB0cyBpbnRvIHRoZSBndWVzdC4gIFVzZWZ1bCBpbiBjb25qdW5jdGlvbiB3aXRoIEtWTV9JTlRFUlJVUFQuCisKKwlfX3U4IHBhZGRpbmcxWzddOworCisJLyogb3V0ICovCisJX191MzIgZXhpdF9yZWFzb247CisKK1doZW4gS1ZNX1JVTiBoYXMgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5IChyZXR1cm4gdmFsdWUgMCksIHRoaXMgaW5mb3JtcworYXBwbGljYXRpb24gY29kZSB3aHkgS1ZNX1JVTiBoYXMgcmV0dXJuZWQuICBBbGxvd2FibGUgdmFsdWVzIGZvciB0aGlzCitmaWVsZCBhcmUgZGV0YWlsZWQgYmVsb3cuCisKKwlfX3U4IHJlYWR5X2Zvcl9pbnRlcnJ1cHRfaW5qZWN0aW9uOworCitJZiByZXF1ZXN0X2ludGVycnVwdF93aW5kb3cgaGFzIGJlZW4gc3BlY2lmaWVkLCB0aGlzIGZpZWxkIGluZGljYXRlcworYW4gaW50ZXJydXB0IGNhbiBiZSBpbmplY3RlZCBub3cgd2l0aCBLVk1fSU5URVJSVVBULgorCisJX191OCBpZl9mbGFnOworCitUaGUgdmFsdWUgb2YgdGhlIGN1cnJlbnQgaW50ZXJydXB0IGZsYWcuICBPbmx5IHZhbGlkIGlmIGluLWtlcm5lbAorbG9jYWwgQVBJQyBpcyBub3QgdXNlZC4KKworCV9fdTE2IGZsYWdzOworCitNb3JlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmbGFncyBkZXRhaWxpbmcgc3RhdGUgb2YgdGhlIFZDUFUgdGhhdCBtYXkKK2FmZmVjdCB0aGUgZGV2aWNlJ3MgYmVoYXZpb3IuICBUaGUgb25seSBjdXJyZW50bHkgZGVmaW5lZCBmbGFnIGlzCitLVk1fUlVOX1g4Nl9TTU0sIHdoaWNoIGlzIHZhbGlkIG9uIHg4NiBtYWNoaW5lcyBhbmQgaXMgc2V0IGlmIHRoZQorVkNQVSBpcyBpbiBzeXN0ZW0gbWFuYWdlbWVudCBtb2RlLgorCisJLyogaW4gKHByZV9rdm1fcnVuKSwgb3V0IChwb3N0X2t2bV9ydW4pICovCisJX191NjQgY3I4OworCitUaGUgdmFsdWUgb2YgdGhlIGNyOCByZWdpc3Rlci4gIE9ubHkgdmFsaWQgaWYgaW4ta2VybmVsIGxvY2FsIEFQSUMgaXMKK25vdCB1c2VkLiAgQm90aCBpbnB1dCBhbmQgb3V0cHV0LgorCisJX191NjQgYXBpY19iYXNlOworCitUaGUgdmFsdWUgb2YgdGhlIEFQSUMgQkFTRSBtc3IuICBPbmx5IHZhbGlkIGlmIGluLWtlcm5lbCBsb2NhbAorQVBJQyBpcyBub3QgdXNlZC4gIEJvdGggaW5wdXQgYW5kIG91dHB1dC4KKworCXVuaW9uIHsKKwkJLyogS1ZNX0VYSVRfVU5LTk9XTiAqLworCQlzdHJ1Y3QgeworCQkJX191NjQgaGFyZHdhcmVfZXhpdF9yZWFzb247CisJCX0gaHc7CisKK0lmIGV4aXRfcmVhc29uIGlzIEtWTV9FWElUX1VOS05PV04sIHRoZSB2Y3B1IGhhcyBleGl0ZWQgZHVlIHRvIHVua25vd24KK3JlYXNvbnMuICBGdXJ0aGVyIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgaW4KK2hhcmR3YXJlX2V4aXRfcmVhc29uLgorCisJCS8qIEtWTV9FWElUX0ZBSUxfRU5UUlkgKi8KKwkJc3RydWN0IHsKKwkJCV9fdTY0IGhhcmR3YXJlX2VudHJ5X2ZhaWx1cmVfcmVhc29uOworCQl9IGZhaWxfZW50cnk7CisKK0lmIGV4aXRfcmVhc29uIGlzIEtWTV9FWElUX0ZBSUxfRU5UUlksIHRoZSB2Y3B1IGNvdWxkIG5vdCBiZSBydW4gZHVlCit0byB1bmtub3duIHJlYXNvbnMuICBGdXJ0aGVyIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbmZvcm1hdGlvbiBpcworYXZhaWxhYmxlIGluIGhhcmR3YXJlX2VudHJ5X2ZhaWx1cmVfcmVhc29uLgorCisJCS8qIEtWTV9FWElUX0VYQ0VQVElPTiAqLworCQlzdHJ1Y3QgeworCQkJX191MzIgZXhjZXB0aW9uOworCQkJX191MzIgZXJyb3JfY29kZTsKKwkJfSBleDsKKworVW51c2VkLgorCisJCS8qIEtWTV9FWElUX0lPICovCisJCXN0cnVjdCB7CisjZGVmaW5lIEtWTV9FWElUX0lPX0lOICAwCisjZGVmaW5lIEtWTV9FWElUX0lPX09VVCAxCisJCQlfX3U4IGRpcmVjdGlvbjsKKwkJCV9fdTggc2l6ZTsgLyogYnl0ZXMgKi8KKwkJCV9fdTE2IHBvcnQ7CisJCQlfX3UzMiBjb3VudDsKKwkJCV9fdTY0IGRhdGFfb2Zmc2V0OyAvKiByZWxhdGl2ZSB0byBrdm1fcnVuIHN0YXJ0ICovCisJCX0gaW87CisKK0lmIGV4aXRfcmVhc29uIGlzIEtWTV9FWElUX0lPLCB0aGVuIHRoZSB2Y3B1IGhhcworZXhlY3V0ZWQgYSBwb3J0IEkvTyBpbnN0cnVjdGlvbiB3aGljaCBjb3VsZCBub3QgYmUgc2F0aXNmaWVkIGJ5IGt2bS4KK2RhdGFfb2Zmc2V0IGRlc2NyaWJlcyB3aGVyZSB0aGUgZGF0YSBpcyBsb2NhdGVkIChLVk1fRVhJVF9JT19PVVQpIG9yCit3aGVyZSBrdm0gZXhwZWN0cyBhcHBsaWNhdGlvbiBjb2RlIHRvIHBsYWNlIHRoZSBkYXRhIGZvciB0aGUgbmV4dAorS1ZNX1JVTiBpbnZvY2F0aW9uIChLVk1fRVhJVF9JT19JTikuICBEYXRhIGZvcm1hdCBpcyBhIHBhY2tlZCBhcnJheS4KKworCQkvKiBLVk1fRVhJVF9ERUJVRyAqLworCQlzdHJ1Y3QgeworCQkJc3RydWN0IGt2bV9kZWJ1Z19leGl0X2FyY2ggYXJjaDsKKwkJfSBkZWJ1ZzsKKworSWYgdGhlIGV4aXRfcmVhc29uIGlzIEtWTV9FWElUX0RFQlVHLCB0aGVuIGEgdmNwdSBpcyBwcm9jZXNzaW5nIGEgZGVidWcgZXZlbnQKK2ZvciB3aGljaCBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gaXMgcmV0dXJuZWQuCisKKwkJLyogS1ZNX0VYSVRfTU1JTyAqLworCQlzdHJ1Y3QgeworCQkJX191NjQgcGh5c19hZGRyOworCQkJX191OCAgZGF0YVs4XTsKKwkJCV9fdTMyIGxlbjsKKwkJCV9fdTggIGlzX3dyaXRlOworCQl9IG1taW87CisKK0lmIGV4aXRfcmVhc29uIGlzIEtWTV9FWElUX01NSU8sIHRoZW4gdGhlIHZjcHUgaGFzCitleGVjdXRlZCBhIG1lbW9yeS1tYXBwZWQgSS9PIGluc3RydWN0aW9uIHdoaWNoIGNvdWxkIG5vdCBiZSBzYXRpc2ZpZWQKK2J5IGt2bS4gIFRoZSAnZGF0YScgbWVtYmVyIGNvbnRhaW5zIHRoZSB3cml0dGVuIGRhdGEgaWYgJ2lzX3dyaXRlJyBpcwordHJ1ZSwgYW5kIHNob3VsZCBiZSBmaWxsZWQgYnkgYXBwbGljYXRpb24gY29kZSBvdGhlcndpc2UuCisKK1RoZSAnZGF0YScgbWVtYmVyIGNvbnRhaW5zLCBpbiBpdHMgZmlyc3QgJ2xlbicgYnl0ZXMsIHRoZSB2YWx1ZSBhcyBpdCB3b3VsZAorYXBwZWFyIGlmIHRoZSBWQ1BVIHBlcmZvcm1lZCBhIGxvYWQgb3Igc3RvcmUgb2YgdGhlIGFwcHJvcHJpYXRlIHdpZHRoIGRpcmVjdGx5Cit0byB0aGUgYnl0ZSBhcnJheS4KKworTk9URTogRm9yIEtWTV9FWElUX0lPLCBLVk1fRVhJVF9NTUlPLCBLVk1fRVhJVF9PU0ksIEtWTV9FWElUX1BBUFIgYW5kCisgICAgICBLVk1fRVhJVF9FUFIgdGhlIGNvcnJlc3BvbmRpbmcKK29wZXJhdGlvbnMgYXJlIGNvbXBsZXRlIChhbmQgZ3Vlc3Qgc3RhdGUgaXMgY29uc2lzdGVudCkgb25seSBhZnRlciB1c2Vyc3BhY2UKK2hhcyByZS1lbnRlcmVkIHRoZSBrZXJuZWwgd2l0aCBLVk1fUlVOLiAgVGhlIGtlcm5lbCBzaWRlIHdpbGwgZmlyc3QgZmluaXNoCitpbmNvbXBsZXRlIG9wZXJhdGlvbnMgYW5kIHRoZW4gY2hlY2sgZm9yIHBlbmRpbmcgc2lnbmFscy4gIFVzZXJzcGFjZQorY2FuIHJlLWVudGVyIHRoZSBndWVzdCB3aXRoIGFuIHVubWFza2VkIHNpZ25hbCBwZW5kaW5nIHRvIGNvbXBsZXRlCitwZW5kaW5nIG9wZXJhdGlvbnMuCisKKwkJLyogS1ZNX0VYSVRfSFlQRVJDQUxMICovCisJCXN0cnVjdCB7CisJCQlfX3U2NCBucjsKKwkJCV9fdTY0IGFyZ3NbNl07CisJCQlfX3U2NCByZXQ7CisJCQlfX3UzMiBsb25nbW9kZTsKKwkJCV9fdTMyIHBhZDsKKwkJfSBoeXBlcmNhbGw7CisKK1VudXNlZC4gIFRoaXMgd2FzIG9uY2UgdXNlZCBmb3IgJ2h5cGVyY2FsbCB0byB1c2Vyc3BhY2UnLiAgVG8gaW1wbGVtZW50CitzdWNoIGZ1bmN0aW9uYWxpdHksIHVzZSBLVk1fRVhJVF9JTyAoeDg2KSBvciBLVk1fRVhJVF9NTUlPIChhbGwgZXhjZXB0IHMzOTApLgorTm90ZSBLVk1fRVhJVF9JTyBpcyBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIEtWTV9FWElUX01NSU8uCisKKwkJLyogS1ZNX0VYSVRfVFBSX0FDQ0VTUyAqLworCQlzdHJ1Y3QgeworCQkJX191NjQgcmlwOworCQkJX191MzIgaXNfd3JpdGU7CisJCQlfX3UzMiBwYWQ7CisJCX0gdHByX2FjY2VzczsKKworVG8gYmUgZG9jdW1lbnRlZCAoS1ZNX1RQUl9BQ0NFU1NfUkVQT1JUSU5HKS4KKworCQkvKiBLVk1fRVhJVF9TMzkwX1NJRUlDICovCisJCXN0cnVjdCB7CisJCQlfX3U4IGljcHRjb2RlOworCQkJX191NjQgbWFzazsgLyogcHN3IHVwcGVyIGhhbGYgKi8KKwkJCV9fdTY0IGFkZHI7IC8qIHBzdyBsb3dlciBoYWxmICovCisJCQlfX3UxNiBpcGE7CisJCQlfX3UzMiBpcGI7CisJCX0gczM5MF9zaWVpYzsKKworczM5MCBzcGVjaWZpYy4KKworCQkvKiBLVk1fRVhJVF9TMzkwX1JFU0VUICovCisjZGVmaW5lIEtWTV9TMzkwX1JFU0VUX1BPUiAgICAgICAxCisjZGVmaW5lIEtWTV9TMzkwX1JFU0VUX0NMRUFSICAgICAyCisjZGVmaW5lIEtWTV9TMzkwX1JFU0VUX1NVQlNZU1RFTSA0CisjZGVmaW5lIEtWTV9TMzkwX1JFU0VUX0NQVV9JTklUICA4CisjZGVmaW5lIEtWTV9TMzkwX1JFU0VUX0lQTCAgICAgICAxNgorCQlfX3U2NCBzMzkwX3Jlc2V0X2ZsYWdzOworCitzMzkwIHNwZWNpZmljLgorCisJCS8qIEtWTV9FWElUX1MzOTBfVUNPTlRST0wgKi8KKwkJc3RydWN0IHsKKwkJCV9fdTY0IHRyYW5zX2V4Y19jb2RlOworCQkJX191MzIgcGdtX2NvZGU7CisJCX0gczM5MF91Y29udHJvbDsKKworczM5MCBzcGVjaWZpYy4gQSBwYWdlIGZhdWx0IGhhcyBvY2N1cnJlZCBmb3IgYSB1c2VyIGNvbnRyb2xsZWQgdmlydHVhbAorbWFjaGluZSAoS1ZNX1ZNX1MzOTBfVU5DT05UUk9MKSBvbiBpdCdzIGhvc3QgcGFnZSB0YWJsZSB0aGF0IGNhbm5vdCBiZQorcmVzb2x2ZWQgYnkgdGhlIGtlcm5lbC4KK1RoZSBwcm9ncmFtIGNvZGUgYW5kIHRoZSB0cmFuc2xhdGlvbiBleGNlcHRpb24gY29kZSB0aGF0IHdlcmUgcGxhY2VkCitpbiB0aGUgY3B1J3MgbG93Y29yZSBhcmUgcHJlc2VudGVkIGhlcmUgYXMgZGVmaW5lZCBieSB0aGUgeiBBcmNoaXRlY3R1cmUKK1ByaW5jaXBsZXMgb2YgT3BlcmF0aW9uIEJvb2sgaW4gdGhlIENoYXB0ZXIgZm9yIER5bmFtaWMgQWRkcmVzcyBUcmFuc2xhdGlvbgorKERBVCkKKworCQkvKiBLVk1fRVhJVF9EQ1IgKi8KKwkJc3RydWN0IHsKKwkJCV9fdTMyIGRjcm47CisJCQlfX3UzMiBkYXRhOworCQkJX191OCAgaXNfd3JpdGU7CisJCX0gZGNyOworCitEZXByZWNhdGVkIC0gd2FzIHVzZWQgZm9yIDQ0MCBLVk0uCisKKwkJLyogS1ZNX0VYSVRfT1NJICovCisJCXN0cnVjdCB7CisJCQlfX3U2NCBncHJzWzMyXTsKKwkJfSBvc2k7CisKK01PTCB1c2VzIGEgc3BlY2lhbCBoeXBlcmNhbGwgaW50ZXJmYWNlIGl0IGNhbGxzICdPU0knLiBUbyBlbmFibGUgaXQsIHdlIGNhdGNoCitoeXBlcmNhbGxzIGFuZCBleGl0IHdpdGggdGhpcyBleGl0IHN0cnVjdCB0aGF0IGNvbnRhaW5zIGFsbCB0aGUgZ3Vlc3QgZ3Bycy4KKworSWYgZXhpdF9yZWFzb24gaXMgS1ZNX0VYSVRfT1NJLCB0aGVuIHRoZSB2Y3B1IGhhcyB0cmlnZ2VyZWQgc3VjaCBhIGh5cGVyY2FsbC4KK1VzZXJzcGFjZSBjYW4gbm93IGhhbmRsZSB0aGUgaHlwZXJjYWxsIGFuZCB3aGVuIGl0J3MgZG9uZSBtb2RpZnkgdGhlIGdwcnMgYXMKK25lY2Vzc2FyeS4gVXBvbiBndWVzdCBlbnRyeSBhbGwgZ3Vlc3QgR1BScyB3aWxsIHRoZW4gYmUgcmVwbGFjZWQgYnkgdGhlIHZhbHVlcworaW4gdGhpcyBzdHJ1Y3QuCisKKwkJLyogS1ZNX0VYSVRfUEFQUl9IQ0FMTCAqLworCQlzdHJ1Y3QgeworCQkJX191NjQgbnI7CisJCQlfX3U2NCByZXQ7CisJCQlfX3U2NCBhcmdzWzldOworCQl9IHBhcHJfaGNhbGw7CisKK1RoaXMgaXMgdXNlZCBvbiA2NC1iaXQgUG93ZXJQQyB3aGVuIGVtdWxhdGluZyBhIHBTZXJpZXMgcGFydGl0aW9uLAorZS5nLiB3aXRoIHRoZSAncHNlcmllcycgbWFjaGluZSB0eXBlIGluIHFlbXUuICBJdCBvY2N1cnMgd2hlbiB0aGUKK2d1ZXN0IGRvZXMgYSBoeXBlcmNhbGwgdXNpbmcgdGhlICdzYyAxJyBpbnN0cnVjdGlvbi4gIFRoZSAnbnInIGZpZWxkCitjb250YWlucyB0aGUgaHlwZXJjYWxsIG51bWJlciAoZnJvbSB0aGUgZ3Vlc3QgUjMpLCBhbmQgJ2FyZ3MnIGNvbnRhaW5zCit0aGUgYXJndW1lbnRzIChmcm9tIHRoZSBndWVzdCBSNCAtIFIxMikuICBVc2Vyc3BhY2Ugc2hvdWxkIHB1dCB0aGUKK3JldHVybiBjb2RlIGluICdyZXQnIGFuZCBhbnkgZXh0cmEgcmV0dXJuZWQgdmFsdWVzIGluIGFyZ3NbXS4KK1RoZSBwb3NzaWJsZSBoeXBlcmNhbGxzIGFyZSBkZWZpbmVkIGluIHRoZSBQb3dlciBBcmNoaXRlY3R1cmUgUGxhdGZvcm0KK1JlcXVpcmVtZW50cyAoUEFQUikgZG9jdW1lbnQgYXZhaWxhYmxlIGZyb20gd3d3LnBvd2VyLm9yZyAoZnJlZQorZGV2ZWxvcGVyIHJlZ2lzdHJhdGlvbiByZXF1aXJlZCB0byBhY2Nlc3MgaXQpLgorCisJCS8qIEtWTV9FWElUX1MzOTBfVFNDSCAqLworCQlzdHJ1Y3QgeworCQkJX191MTYgc3ViY2hhbm5lbF9pZDsKKwkJCV9fdTE2IHN1YmNoYW5uZWxfbnI7CisJCQlfX3UzMiBpb19pbnRfcGFybTsKKwkJCV9fdTMyIGlvX2ludF93b3JkOworCQkJX191MzIgaXBiOworCQkJX191OCBkZXF1ZXVlZDsKKwkJfSBzMzkwX3RzY2g7CisKK3MzOTAgc3BlY2lmaWMuIFRoaXMgZXhpdCBvY2N1cnMgd2hlbiBLVk1fQ0FQX1MzOTBfQ1NTX1NVUFBPUlQgaGFzIGJlZW4gZW5hYmxlZAorYW5kIFRFU1QgU1VCQ0hBTk5FTCB3YXMgaW50ZXJjZXB0ZWQuIElmIGRlcXVldWVkIGlzIHNldCwgYSBwZW5kaW5nIEkvTworaW50ZXJydXB0IGZvciB0aGUgdGFyZ2V0IHN1YmNoYW5uZWwgaGFzIGJlZW4gZGVxdWV1ZWQgYW5kIHN1YmNoYW5uZWxfaWQsCitzdWJjaGFubmVsX25yLCBpb19pbnRfcGFybSBhbmQgaW9faW50X3dvcmQgY29udGFpbiB0aGUgcGFyYW1ldGVycyBmb3IgdGhhdAoraW50ZXJydXB0LiBpcGIgaXMgbmVlZGVkIGZvciBpbnN0cnVjdGlvbiBwYXJhbWV0ZXIgZGVjb2RpbmcuCisKKwkJLyogS1ZNX0VYSVRfRVBSICovCisJCXN0cnVjdCB7CisJCQlfX3UzMiBlcHI7CisJCX0gZXByOworCitPbiBGU0wgQm9va0UgUG93ZXJQQyBjaGlwcywgdGhlIGludGVycnVwdCBjb250cm9sbGVyIGhhcyBhIGZhc3QgcGF0Y2gKK2ludGVycnVwdCBhY2tub3dsZWRnZSBwYXRoIHRvIHRoZSBjb3JlLiBXaGVuIHRoZSBjb3JlIHN1Y2Nlc3NmdWxseQorZGVsaXZlcnMgYW4gaW50ZXJydXB0LCBpdCBhdXRvbWF0aWNhbGx5IHBvcHVsYXRlcyB0aGUgRVBSIHJlZ2lzdGVyIHdpdGgKK3RoZSBpbnRlcnJ1cHQgdmVjdG9yIG51bWJlciBhbmQgYWNrbm93bGVkZ2VzIHRoZSBpbnRlcnJ1cHQgaW5zaWRlCit0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIuCisKK0luIGNhc2UgdGhlIGludGVycnVwdCBjb250cm9sbGVyIGxpdmVzIGluIHVzZXIgc3BhY2UsIHdlIG5lZWQgdG8gZG8KK3RoZSBpbnRlcnJ1cHQgYWNrbm93bGVkZ2UgY3ljbGUgdGhyb3VnaCBpdCB0byBmZXRjaCB0aGUgbmV4dCB0byBiZQorZGVsaXZlcmVkIGludGVycnVwdCB2ZWN0b3IgdXNpbmcgdGhpcyBleGl0LgorCitJdCBnZXRzIHRyaWdnZXJlZCB3aGVuZXZlciBib3RoIEtWTV9DQVBfUFBDX0VQUiBhcmUgZW5hYmxlZCBhbmQgYW4KK2V4dGVybmFsIGludGVycnVwdCBoYXMganVzdCBiZWVuIGRlbGl2ZXJlZCBpbnRvIHRoZSBndWVzdC4gVXNlciBzcGFjZQorc2hvdWxkIHB1dCB0aGUgYWNrbm93bGVkZ2VkIGludGVycnVwdCB2ZWN0b3IgaW50byB0aGUgJ2VwcicgZmllbGQuCisKKwkJLyogS1ZNX0VYSVRfU1lTVEVNX0VWRU5UICovCisJCXN0cnVjdCB7CisjZGVmaW5lIEtWTV9TWVNURU1fRVZFTlRfU0hVVERPV04gICAgICAgMQorI2RlZmluZSBLVk1fU1lTVEVNX0VWRU5UX1JFU0VUICAgICAgICAgIDIKKyNkZWZpbmUgS1ZNX1NZU1RFTV9FVkVOVF9DUkFTSCAgICAgICAgICAzCisJCQlfX3UzMiB0eXBlOworCQkJX191NjQgZmxhZ3M7CisJCX0gc3lzdGVtX2V2ZW50OworCitJZiBleGl0X3JlYXNvbiBpcyBLVk1fRVhJVF9TWVNURU1fRVZFTlQgdGhlbiB0aGUgdmNwdSBoYXMgdHJpZ2dlcmVkCithIHN5c3RlbS1sZXZlbCBldmVudCB1c2luZyBzb21lIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBtZWNoYW5pc20gKGh5cGVyY2FsbAorb3Igc29tZSBzcGVjaWFsIGluc3RydWN0aW9uKS4gSW4gY2FzZSBvZiBBUk0vQVJNNjQsIHRoaXMgaXMgdHJpZ2dlcmVkIHVzaW5nCitIVkMgaW5zdHJ1Y3Rpb24gYmFzZWQgUFNDSSBjYWxsIGZyb20gdGhlIHZjcHUuIFRoZSAndHlwZScgZmllbGQgZGVzY3JpYmVzCit0aGUgc3lzdGVtLWxldmVsIGV2ZW50IHR5cGUuIFRoZSAnZmxhZ3MnIGZpZWxkIGRlc2NyaWJlcyBhcmNoaXRlY3R1cmUKK3NwZWNpZmljIGZsYWdzIGZvciB0aGUgc3lzdGVtLWxldmVsIGV2ZW50LgorCitWYWxpZCB2YWx1ZXMgZm9yICd0eXBlJyBhcmU6CisgIEtWTV9TWVNURU1fRVZFTlRfU0hVVERPV04gLS0gdGhlIGd1ZXN0IGhhcyByZXF1ZXN0ZWQgYSBzaHV0ZG93biBvZiB0aGUKKyAgIFZNLiBVc2Vyc3BhY2UgaXMgbm90IG9ibGlnZWQgdG8gaG9ub3VyIHRoaXMsIGFuZCBpZiBpdCBkb2VzIGhvbm91cgorICAgdGhpcyBkb2VzIG5vdCBuZWVkIHRvIGRlc3Ryb3kgdGhlIFZNIHN5bmNocm9ub3VzbHkgKGllIGl0IG1heSBjYWxsCisgICBLVk1fUlVOIGFnYWluIGJlZm9yZSBzaHV0ZG93biBmaW5hbGx5IG9jY3VycykuCisgIEtWTV9TWVNURU1fRVZFTlRfUkVTRVQgLS0gdGhlIGd1ZXN0IGhhcyByZXF1ZXN0ZWQgYSByZXNldCBvZiB0aGUgVk0uCisgICBBcyB3aXRoIFNIVVRET1dOLCB1c2Vyc3BhY2UgY2FuIGNob29zZSB0byBpZ25vcmUgdGhlIHJlcXVlc3QsIG9yCisgICB0byBzY2hlZHVsZSB0aGUgcmVzZXQgdG8gb2NjdXIgaW4gdGhlIGZ1dHVyZSBhbmQgbWF5IGNhbGwgS1ZNX1JVTiBhZ2Fpbi4KKyAgS1ZNX1NZU1RFTV9FVkVOVF9DUkFTSCAtLSB0aGUgZ3Vlc3QgY3Jhc2ggb2NjdXJyZWQgYW5kIHRoZSBndWVzdAorICAgaGFzIHJlcXVlc3RlZCBhIGNyYXNoIGNvbmRpdGlvbiBtYWludGVuYW5jZS4gVXNlcnNwYWNlIGNhbiBjaG9vc2UKKyAgIHRvIGlnbm9yZSB0aGUgcmVxdWVzdCwgb3IgdG8gZ2F0aGVyIFZNIG1lbW9yeSBjb3JlIGR1bXAgYW5kL29yCisgICByZXNldC9zaHV0ZG93biBvZiB0aGUgVk0uCisKKwkJLyogS1ZNX0VYSVRfSU9BUElDX0VPSSAqLworCQlzdHJ1Y3QgeworCQkJX191OCB2ZWN0b3I7CisJCX0gZW9pOworCitJbmRpY2F0ZXMgdGhhdCB0aGUgVkNQVSdzIGluLWtlcm5lbCBsb2NhbCBBUElDIHJlY2VpdmVkIGFuIEVPSSBmb3IgYQorbGV2ZWwtdHJpZ2dlcmVkIElPQVBJQyBpbnRlcnJ1cHQuICBUaGlzIGV4aXQgb25seSB0cmlnZ2VycyB3aGVuIHRoZQorSU9BUElDIGlzIGltcGxlbWVudGVkIGluIHVzZXJzcGFjZSAoaS5lLiBLVk1fQ0FQX1NQTElUX0lSUUNISVAgaXMgZW5hYmxlZCk7Cit0aGUgdXNlcnNwYWNlIElPQVBJQyBzaG91bGQgcHJvY2VzcyB0aGUgRU9JIGFuZCByZXRyaWdnZXIgdGhlIGludGVycnVwdCBpZgoraXQgaXMgc3RpbGwgYXNzZXJ0ZWQuICBWZWN0b3IgaXMgdGhlIExBUElDIGludGVycnVwdCB2ZWN0b3IgZm9yIHdoaWNoIHRoZQorRU9JIHdhcyByZWNlaXZlZC4KKworCQkvKiBGaXggdGhlIHNpemUgb2YgdGhlIHVuaW9uLiAqLworCQljaGFyIHBhZGRpbmdbMjU2XTsKKwl9OworCisJLyoKKwkgKiBzaGFyZWQgcmVnaXN0ZXJzIGJldHdlZW4ga3ZtIGFuZCB1c2Vyc3BhY2UuCisJICoga3ZtX3ZhbGlkX3JlZ3Mgc3BlY2lmaWVzIHRoZSByZWdpc3RlciBjbGFzc2VzIHNldCBieSB0aGUgaG9zdAorCSAqIGt2bV9kaXJ0eV9yZWdzIHNwZWNpZmllZCB0aGUgcmVnaXN0ZXIgY2xhc3NlcyBkaXJ0aWVkIGJ5IHVzZXJzcGFjZQorCSAqIHN0cnVjdCBrdm1fc3luY19yZWdzIGlzIGFyY2hpdGVjdHVyZSBzcGVjaWZpYywgYXMgd2VsbCBhcyB0aGUKKwkgKiBiaXRzIGZvciBrdm1fdmFsaWRfcmVncyBhbmQga3ZtX2RpcnR5X3JlZ3MKKwkgKi8KKwlfX3U2NCBrdm1fdmFsaWRfcmVnczsKKwlfX3U2NCBrdm1fZGlydHlfcmVnczsKKwl1bmlvbiB7CisJCXN0cnVjdCBrdm1fc3luY19yZWdzIHJlZ3M7CisJCWNoYXIgcGFkZGluZ1sxMDI0XTsKKwl9IHM7CisKK0lmIEtWTV9DQVBfU1lOQ19SRUdTIGlzIGRlZmluZWQsIHRoZXNlIGZpZWxkcyBhbGxvdyB1c2Vyc3BhY2UgdG8gYWNjZXNzCitjZXJ0YWluIGd1ZXN0IHJlZ2lzdGVycyB3aXRob3V0IGhhdmluZyB0byBjYWxsIFNFVC9HRVRfKlJFR1MuIFRodXMgd2UgY2FuCithdm9pZCBzb21lIHN5c3RlbSBjYWxsIG92ZXJoZWFkIGlmIHVzZXJzcGFjZSBoYXMgdG8gaGFuZGxlIHRoZSBleGl0LgorVXNlcnNwYWNlIGNhbiBxdWVyeSB0aGUgdmFsaWRpdHkgb2YgdGhlIHN0cnVjdHVyZSBieSBjaGVja2luZwora3ZtX3ZhbGlkX3JlZ3MgZm9yIHNwZWNpZmljIGJpdHMuIFRoZXNlIGJpdHMgYXJlIGFyY2hpdGVjdHVyZSBzcGVjaWZpYworYW5kIHVzdWFsbHkgZGVmaW5lIHRoZSB2YWxpZGl0eSBvZiBhIGdyb3VwcyBvZiByZWdpc3RlcnMuIChlLmcuIG9uZSBiaXQKKyBmb3IgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycykKKworUGxlYXNlIG5vdGUgdGhhdCB0aGUga2VybmVsIGlzIGFsbG93ZWQgdG8gdXNlIHRoZSBrdm1fcnVuIHN0cnVjdHVyZSBhcyB0aGUKK3ByaW1hcnkgc3RvcmFnZSBmb3IgY2VydGFpbiByZWdpc3RlciB0eXBlcy4gVGhlcmVmb3JlLCB0aGUga2VybmVsIG1heSB1c2UgdGhlCit2YWx1ZXMgaW4ga3ZtX3J1biBldmVuIGlmIHRoZSBjb3JyZXNwb25kaW5nIGJpdCBpbiBrdm1fZGlydHlfcmVncyBpcyBub3Qgc2V0LgorCit9OworCisKKworNi4gQ2FwYWJpbGl0aWVzIHRoYXQgY2FuIGJlIGVuYWJsZWQgb24gdkNQVXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXJlIGFyZSBjZXJ0YWluIGNhcGFiaWxpdGllcyB0aGF0IGNoYW5nZSB0aGUgYmVoYXZpb3Igb2YgdGhlIHZpcnR1YWwgQ1BVIG9yCit0aGUgdmlydHVhbCBtYWNoaW5lIHdoZW4gZW5hYmxlZC4gVG8gZW5hYmxlIHRoZW0sIHBsZWFzZSBzZWUgc2VjdGlvbiA0LjM3LgorQmVsb3cgeW91IGNhbiBmaW5kIGEgbGlzdCBvZiBjYXBhYmlsaXRpZXMgYW5kIHdoYXQgdGhlaXIgZWZmZWN0IG9uIHRoZSB2Q1BVIG9yCit0aGUgdmlydHVhbCBtYWNoaW5lIGlzIHdoZW4gZW5hYmxpbmcgdGhlbS4KKworVGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBkZXNjcmlwdGlvbjoKKworICBBcmNoaXRlY3R1cmVzOiB3aGljaCBpbnN0cnVjdGlvbiBzZXQgYXJjaGl0ZWN0dXJlcyBwcm92aWRlIHRoaXMgaW9jdGwuCisgICAgICB4ODYgaW5jbHVkZXMgYm90aCBpMzg2IGFuZCB4ODZfNjQuCisKKyAgVGFyZ2V0OiB3aGV0aGVyIHRoaXMgaXMgYSBwZXItdmNwdSBvciBwZXItdm0gY2FwYWJpbGl0eS4KKworICBQYXJhbWV0ZXJzOiB3aGF0IHBhcmFtZXRlcnMgYXJlIGFjY2VwdGVkIGJ5IHRoZSBjYXBhYmlsaXR5LgorCisgIFJldHVybnM6IHRoZSByZXR1cm4gdmFsdWUuICBHZW5lcmFsIGVycm9yIG51bWJlcnMgKEVCQURGLCBFTk9NRU0sIEVJTlZBTCkKKyAgICAgIGFyZSBub3QgZGV0YWlsZWQsIGJ1dCBlcnJvcnMgd2l0aCBzcGVjaWZpYyBtZWFuaW5ncyBhcmUuCisKKworNi4xIEtWTV9DQVBfUFBDX09TSQorCitBcmNoaXRlY3R1cmVzOiBwcGMKK1RhcmdldDogdmNwdQorUGFyYW1ldGVyczogbm9uZQorUmV0dXJuczogMCBvbiBzdWNjZXNzOyAtMSBvbiBlcnJvcgorCitUaGlzIGNhcGFiaWxpdHkgZW5hYmxlcyBpbnRlcmNlcHRpb24gb2YgT1NJIGh5cGVyY2FsbHMgdGhhdCBvdGhlcndpc2Ugd291bGQKK2JlIHRyZWF0ZWQgYXMgbm9ybWFsIHN5c3RlbSBjYWxscyB0byBiZSBpbmplY3RlZCBpbnRvIHRoZSBndWVzdC4gT1NJIGh5cGVyY2FsbHMKK3dlcmUgaW52ZW50ZWQgYnkgTWFjLW9uLUxpbnV4IHRvIGhhdmUgYSBzdGFuZGFyZGl6ZWQgY29tbXVuaWNhdGlvbiBtZWNoYW5pc20KK2JldHdlZW4gdGhlIGd1ZXN0IGFuZCB0aGUgaG9zdC4KKworV2hlbiB0aGlzIGNhcGFiaWxpdHkgaXMgZW5hYmxlZCwgS1ZNX0VYSVRfT1NJIGNhbiBvY2N1ci4KKworCis2LjIgS1ZNX0NBUF9QUENfUEFQUgorCitBcmNoaXRlY3R1cmVzOiBwcGMKK1RhcmdldDogdmNwdQorUGFyYW1ldGVyczogbm9uZQorUmV0dXJuczogMCBvbiBzdWNjZXNzOyAtMSBvbiBlcnJvcgorCitUaGlzIGNhcGFiaWxpdHkgZW5hYmxlcyBpbnRlcmNlcHRpb24gb2YgUEFQUiBoeXBlcmNhbGxzLiBQQVBSIGh5cGVyY2FsbHMgYXJlCitkb25lIHVzaW5nIHRoZSBoeXBlcmNhbGwgaW5zdHJ1Y3Rpb24gInNjIDEiLgorCitJdCBhbHNvIHNldHMgdGhlIGd1ZXN0IHByaXZpbGVnZSBsZXZlbCB0byAic3VwZXJ2aXNvciIgbW9kZS4gVXN1YWxseSB0aGUgZ3Vlc3QKK3J1bnMgaW4gImh5cGVydmlzb3IiIHByaXZpbGVnZSBtb2RlIHdpdGggYSBmZXcgbWlzc2luZyBmZWF0dXJlcy4KKworSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlLCBpdCBjaGFuZ2VzIHRoZSBzZW1hbnRpY3Mgb2YgU0RSMS4gSW4gdGhpcyBtb2RlLCB0aGUKK0hUQUIgYWRkcmVzcyBwYXJ0IG9mIFNEUjEgY29udGFpbnMgYW4gSFZBIGluc3RlYWQgb2YgYSBHUEEsIGFzIFBBUFIga2VlcHMgdGhlCitIVEFCIGludmlzaWJsZSB0byB0aGUgZ3Vlc3QuCisKK1doZW4gdGhpcyBjYXBhYmlsaXR5IGlzIGVuYWJsZWQsIEtWTV9FWElUX1BBUFJfSENBTEwgY2FuIG9jY3VyLgorCisKKzYuMyBLVk1fQ0FQX1NXX1RMQgorCitBcmNoaXRlY3R1cmVzOiBwcGMKK1RhcmdldDogdmNwdQorUGFyYW1ldGVyczogYXJnc1swXSBpcyB0aGUgYWRkcmVzcyBvZiBhIHN0cnVjdCBrdm1fY29uZmlnX3RsYgorUmV0dXJuczogMCBvbiBzdWNjZXNzOyAtMSBvbiBlcnJvcgorCitzdHJ1Y3Qga3ZtX2NvbmZpZ190bGIgeworCV9fdTY0IHBhcmFtczsKKwlfX3U2NCBhcnJheTsKKwlfX3UzMiBtbXVfdHlwZTsKKwlfX3UzMiBhcnJheV9sZW47Cit9OworCitDb25maWd1cmVzIHRoZSB2aXJ0dWFsIENQVSdzIFRMQiBhcnJheSwgZXN0YWJsaXNoaW5nIGEgc2hhcmVkIG1lbW9yeSBhcmVhCitiZXR3ZWVuIHVzZXJzcGFjZSBhbmQgS1ZNLiAgVGhlICJwYXJhbXMiIGFuZCAiYXJyYXkiIGZpZWxkcyBhcmUgdXNlcnNwYWNlCithZGRyZXNzZXMgb2YgbW11LXR5cGUtc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmVzLiAgVGhlICJhcnJheV9sZW4iIGZpZWxkIGlzIGFuCitzYWZldHkgbWVjaGFuaXNtLCBhbmQgc2hvdWxkIGJlIHNldCB0byB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgbWVtb3J5IHRoYXQKK3VzZXJzcGFjZSBoYXMgcmVzZXJ2ZWQgZm9yIHRoZSBhcnJheS4gIEl0IG11c3QgYmUgYXQgbGVhc3QgdGhlIHNpemUgZGljdGF0ZWQKK2J5ICJtbXVfdHlwZSIgYW5kICJwYXJhbXMiLgorCitXaGlsZSBLVk1fUlVOIGlzIGFjdGl2ZSwgdGhlIHNoYXJlZCByZWdpb24gaXMgdW5kZXIgY29udHJvbCBvZiBLVk0uICBJdHMKK2NvbnRlbnRzIGFyZSB1bmRlZmluZWQsIGFuZCBhbnkgbW9kaWZpY2F0aW9uIGJ5IHVzZXJzcGFjZSByZXN1bHRzIGluCitib3VuZGVkbHkgdW5kZWZpbmVkIGJlaGF2aW9yLgorCitPbiByZXR1cm4gZnJvbSBLVk1fUlVOLCB0aGUgc2hhcmVkIHJlZ2lvbiB3aWxsIHJlZmxlY3QgdGhlIGN1cnJlbnQgc3RhdGUgb2YKK3RoZSBndWVzdCdzIFRMQi4gIElmIHVzZXJzcGFjZSBtYWtlcyBhbnkgY2hhbmdlcywgaXQgbXVzdCBjYWxsIEtWTV9ESVJUWV9UTEIKK3RvIHRlbGwgS1ZNIHdoaWNoIGVudHJpZXMgaGF2ZSBiZWVuIGNoYW5nZWQsIHByaW9yIHRvIGNhbGxpbmcgS1ZNX1JVTiBhZ2Fpbgorb24gdGhpcyB2Y3B1LgorCitGb3IgbW11IHR5cGVzIEtWTV9NTVVfRlNMX0JPT0tFX05PSFYgYW5kIEtWTV9NTVVfRlNMX0JPT0tFX0hWOgorIC0gVGhlICJwYXJhbXMiIGZpZWxkIGlzIG9mIHR5cGUgInN0cnVjdCBrdm1fYm9vazNlXzIwNl90bGJfcGFyYW1zIi4KKyAtIFRoZSAiYXJyYXkiIGZpZWxkIHBvaW50cyB0byBhbiBhcnJheSBvZiB0eXBlICJzdHJ1Y3QKKyAgIGt2bV9ib29rM2VfMjA2X3RsYl9lbnRyeSIuCisgLSBUaGUgYXJyYXkgY29uc2lzdHMgb2YgYWxsIGVudHJpZXMgaW4gdGhlIGZpcnN0IFRMQiwgZm9sbG93ZWQgYnkgYWxsCisgICBlbnRyaWVzIGluIHRoZSBzZWNvbmQgVExCLgorIC0gV2l0aGluIGEgVExCLCBlbnRyaWVzIGFyZSBvcmRlcmVkIGZpcnN0IGJ5IGluY3JlYXNpbmcgc2V0IG51bWJlci4gIFdpdGhpbiBhCisgICBzZXQsIGVudHJpZXMgYXJlIG9yZGVyZWQgYnkgd2F5IChpbmNyZWFzaW5nIEVTRUwpLgorIC0gVGhlIGhhc2ggZm9yIGRldGVybWluaW5nIHNldCBudW1iZXIgaW4gVExCMCBpczogKE1BUzIgPj4gMTIpICYgKG51bV9zZXRzIC0gMSkKKyAgIHdoZXJlICJudW1fc2V0cyIgaXMgdGhlIHRsYl9zaXplc1tdIHZhbHVlIGRpdmlkZWQgYnkgdGhlIHRsYl93YXlzW10gdmFsdWUuCisgLSBUaGUgdHNpemUgZmllbGQgb2YgbWFzMSBzaGFsbCBiZSBzZXQgdG8gNEsgb24gVExCMCwgZXZlbiB0aG91Z2ggdGhlCisgICBoYXJkd2FyZSBpZ25vcmVzIHRoaXMgdmFsdWUgZm9yIFRMQjAuCisKKzYuNCBLVk1fQ0FQX1MzOTBfQ1NTX1NVUFBPUlQKKworQXJjaGl0ZWN0dXJlczogczM5MAorVGFyZ2V0OiB2Y3B1CitQYXJhbWV0ZXJzOiBub25lCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3M7IC0xIG9uIGVycm9yCisKK1RoaXMgY2FwYWJpbGl0eSBlbmFibGVzIHN1cHBvcnQgZm9yIGhhbmRsaW5nIG9mIGNoYW5uZWwgSS9PIGluc3RydWN0aW9ucy4KKworVEVTVCBQRU5ESU5HIElOVEVSUlVQVElPTiBhbmQgdGhlIGludGVycnVwdCBwb3J0aW9uIG9mIFRFU1QgU1VCQ0hBTk5FTCBhcmUKK2hhbmRsZWQgaW4ta2VybmVsLCB3aGlsZSB0aGUgb3RoZXIgSS9PIGluc3RydWN0aW9ucyBhcmUgcGFzc2VkIHRvIHVzZXJzcGFjZS4KKworV2hlbiB0aGlzIGNhcGFiaWxpdHkgaXMgZW5hYmxlZCwgS1ZNX0VYSVRfUzM5MF9UU0NIIHdpbGwgb2NjdXIgb24gVEVTVAorU1VCQ0hBTk5FTCBpbnRlcmNlcHRzLgorCitOb3RlIHRoYXQgZXZlbiB0aG91Z2ggdGhpcyBjYXBhYmlsaXR5IGlzIGVuYWJsZWQgcGVyLXZjcHUsIHRoZSBjb21wbGV0ZQordmlydHVhbCBtYWNoaW5lIGlzIGFmZmVjdGVkLgorCis2LjUgS1ZNX0NBUF9QUENfRVBSCisKK0FyY2hpdGVjdHVyZXM6IHBwYworVGFyZ2V0OiB2Y3B1CitQYXJhbWV0ZXJzOiBhcmdzWzBdIGRlZmluZXMgd2hldGhlciB0aGUgcHJveHkgZmFjaWxpdHkgaXMgYWN0aXZlCitSZXR1cm5zOiAwIG9uIHN1Y2Nlc3M7IC0xIG9uIGVycm9yCisKK1RoaXMgY2FwYWJpbGl0eSBlbmFibGVzIG9yIGRpc2FibGVzIHRoZSBkZWxpdmVyeSBvZiBpbnRlcnJ1cHRzIHRocm91Z2ggdGhlCitleHRlcm5hbCBwcm94eSBmYWNpbGl0eS4KKworV2hlbiBlbmFibGVkIChhcmdzWzBdICE9IDApLCBldmVyeSB0aW1lIHRoZSBndWVzdCBnZXRzIGFuIGV4dGVybmFsIGludGVycnVwdAorZGVsaXZlcmVkLCBpdCBhdXRvbWF0aWNhbGx5IGV4aXRzIGludG8gdXNlciBzcGFjZSB3aXRoIGEgS1ZNX0VYSVRfRVBSIGV4aXQKK3RvIHJlY2VpdmUgdGhlIHRvcG1vc3QgaW50ZXJydXB0IHZlY3Rvci4KKworV2hlbiBkaXNhYmxlZCAoYXJnc1swXSA9PSAwKSwgYmVoYXZpb3IgaXMgYXMgaWYgdGhpcyBmYWNpbGl0eSBpcyB1bnN1cHBvcnRlZC4KKworV2hlbiB0aGlzIGNhcGFiaWxpdHkgaXMgZW5hYmxlZCwgS1ZNX0VYSVRfRVBSIGNhbiBvY2N1ci4KKworNi42IEtWTV9DQVBfSVJRX01QSUMKKworQXJjaGl0ZWN0dXJlczogcHBjCitQYXJhbWV0ZXJzOiBhcmdzWzBdIGlzIHRoZSBNUElDIGRldmljZSBmZAorICAgICAgICAgICAgYXJnc1sxXSBpcyB0aGUgTVBJQyBDUFUgbnVtYmVyIGZvciB0aGlzIHZjcHUKKworVGhpcyBjYXBhYmlsaXR5IGNvbm5lY3RzIHRoZSB2Y3B1IHRvIGFuIGluLWtlcm5lbCBNUElDIGRldmljZS4KKworNi43IEtWTV9DQVBfSVJRX1hJQ1MKKworQXJjaGl0ZWN0dXJlczogcHBjCitUYXJnZXQ6IHZjcHUKK1BhcmFtZXRlcnM6IGFyZ3NbMF0gaXMgdGhlIFhJQ1MgZGV2aWNlIGZkCisgICAgICAgICAgICBhcmdzWzFdIGlzIHRoZSBYSUNTIENQVSBudW1iZXIgKHNlcnZlciBJRCkgZm9yIHRoaXMgdmNwdQorCitUaGlzIGNhcGFiaWxpdHkgY29ubmVjdHMgdGhlIHZjcHUgdG8gYW4gaW4ta2VybmVsIFhJQ1MgZGV2aWNlLgorCis2LjggS1ZNX0NBUF9TMzkwX0lSUUNISVAKKworQXJjaGl0ZWN0dXJlczogczM5MAorVGFyZ2V0OiB2bQorUGFyYW1ldGVyczogbm9uZQorCitUaGlzIGNhcGFiaWxpdHkgZW5hYmxlcyB0aGUgaW4ta2VybmVsIGlycWNoaXAgZm9yIHMzOTAuIFBsZWFzZSByZWZlciB0bworIjQuMjQgS1ZNX0NSRUFURV9JUlFDSElQIiBmb3IgZGV0YWlscy4KKworNi45IEtWTV9DQVBfTUlQU19GUFUKKworQXJjaGl0ZWN0dXJlczogbWlwcworVGFyZ2V0OiB2Y3B1CitQYXJhbWV0ZXJzOiBhcmdzWzBdIGlzIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlIChzaG91bGQgYmUgMCkuCisKK1RoaXMgY2FwYWJpbGl0eSBhbGxvd3MgdGhlIHVzZSBvZiB0aGUgaG9zdCBGbG9hdGluZyBQb2ludCBVbml0IGJ5IHRoZSBndWVzdC4gSXQKK2FsbG93cyB0aGUgQ29uZmlnMS5GUCBiaXQgdG8gYmUgc2V0IHRvIGVuYWJsZSB0aGUgRlBVIGluIHRoZSBndWVzdC4gT25jZSB0aGlzIGlzCitkb25lIHRoZSBLVk1fUkVHX01JUFNfRlBSXyogYW5kIEtWTV9SRUdfTUlQU19GQ1JfKiByZWdpc3RlcnMgY2FuIGJlIGFjY2Vzc2VkCisoZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50IGd1ZXN0IEZQVSByZWdpc3RlciBtb2RlKSwgYW5kIHRoZSBTdGF0dXMuRlIsCitDb25maWc1LkZSRSBiaXRzIGFyZSBhY2Nlc3NpYmxlIHZpYSB0aGUgS1ZNIEFQSSBhbmQgYWxzbyBmcm9tIHRoZSBndWVzdCwKK2RlcGVuZGluZyBvbiB0aGVtIGJlaW5nIHN1cHBvcnRlZCBieSB0aGUgRlBVLgorCis2LjEwIEtWTV9DQVBfTUlQU19NU0EKKworQXJjaGl0ZWN0dXJlczogbWlwcworVGFyZ2V0OiB2Y3B1CitQYXJhbWV0ZXJzOiBhcmdzWzBdIGlzIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlIChzaG91bGQgYmUgMCkuCisKK1RoaXMgY2FwYWJpbGl0eSBhbGxvd3MgdGhlIHVzZSBvZiB0aGUgTUlQUyBTSU1EIEFyY2hpdGVjdHVyZSAoTVNBKSBieSB0aGUgZ3Vlc3QuCitJdCBhbGxvd3MgdGhlIENvbmZpZzMuTVNBUCBiaXQgdG8gYmUgc2V0IHRvIGVuYWJsZSB0aGUgdXNlIG9mIE1TQSBieSB0aGUgZ3Vlc3QuCitPbmNlIHRoaXMgaXMgZG9uZSB0aGUgS1ZNX1JFR19NSVBTX1ZFQ18qIGFuZCBLVk1fUkVHX01JUFNfTVNBXyogcmVnaXN0ZXJzIGNhbiBiZQorYWNjZXNzZWQsIGFuZCB0aGUgQ29uZmlnNS5NU0FFbiBiaXQgaXMgYWNjZXNzaWJsZSB2aWEgdGhlIEtWTSBBUEkgYW5kIGFsc28gZnJvbQordGhlIGd1ZXN0LgorCis3LiBDYXBhYmlsaXRpZXMgdGhhdCBjYW4gYmUgZW5hYmxlZCBvbiBWTXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGVyZSBhcmUgY2VydGFpbiBjYXBhYmlsaXRpZXMgdGhhdCBjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIHRoZSB2aXJ0dWFsCittYWNoaW5lIHdoZW4gZW5hYmxlZC4gVG8gZW5hYmxlIHRoZW0sIHBsZWFzZSBzZWUgc2VjdGlvbiA0LjM3LiBCZWxvdworeW91IGNhbiBmaW5kIGEgbGlzdCBvZiBjYXBhYmlsaXRpZXMgYW5kIHdoYXQgdGhlaXIgZWZmZWN0IG9uIHRoZSBWTQoraXMgd2hlbiBlbmFibGluZyB0aGVtLgorCitUaGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGlzIHByb3ZpZGVkIGFsb25nIHdpdGggdGhlIGRlc2NyaXB0aW9uOgorCisgIEFyY2hpdGVjdHVyZXM6IHdoaWNoIGluc3RydWN0aW9uIHNldCBhcmNoaXRlY3R1cmVzIHByb3ZpZGUgdGhpcyBpb2N0bC4KKyAgICAgIHg4NiBpbmNsdWRlcyBib3RoIGkzODYgYW5kIHg4Nl82NC4KKworICBQYXJhbWV0ZXJzOiB3aGF0IHBhcmFtZXRlcnMgYXJlIGFjY2VwdGVkIGJ5IHRoZSBjYXBhYmlsaXR5LgorCisgIFJldHVybnM6IHRoZSByZXR1cm4gdmFsdWUuICBHZW5lcmFsIGVycm9yIG51bWJlcnMgKEVCQURGLCBFTk9NRU0sIEVJTlZBTCkKKyAgICAgIGFyZSBub3QgZGV0YWlsZWQsIGJ1dCBlcnJvcnMgd2l0aCBzcGVjaWZpYyBtZWFuaW5ncyBhcmUuCisKKworNy4xIEtWTV9DQVBfUFBDX0VOQUJMRV9IQ0FMTAorCitBcmNoaXRlY3R1cmVzOiBwcGMKK1BhcmFtZXRlcnM6IGFyZ3NbMF0gaXMgdGhlIHNQQVBSIGhjYWxsIG51bWJlcgorCSAgICBhcmdzWzFdIGlzIDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGUgaW4ta2VybmVsIGhhbmRsaW5nCisKK1RoaXMgY2FwYWJpbGl0eSBjb250cm9scyB3aGV0aGVyIGluZGl2aWR1YWwgc1BBUFIgaHlwZXJjYWxscyAoaGNhbGxzKQorZ2V0IGhhbmRsZWQgYnkgdGhlIGtlcm5lbCBvciBub3QuICBFbmFibGluZyBvciBkaXNhYmxpbmcgaW4ta2VybmVsCitoYW5kbGluZyBvZiBhbiBoY2FsbCBpcyBlZmZlY3RpdmUgYWNyb3NzIHRoZSBWTS4gIE9uIGNyZWF0aW9uLCBhbgoraW5pdGlhbCBzZXQgb2YgaGNhbGxzIGFyZSBlbmFibGVkIGZvciBpbi1rZXJuZWwgaGFuZGxpbmcsIHdoaWNoCitjb25zaXN0cyBvZiB0aG9zZSBoY2FsbHMgZm9yIHdoaWNoIGluLWtlcm5lbCBoYW5kbGVycyB3ZXJlIGltcGxlbWVudGVkCitiZWZvcmUgdGhpcyBjYXBhYmlsaXR5IHdhcyBpbXBsZW1lbnRlZC4gIElmIGRpc2FibGVkLCB0aGUga2VybmVsIHdpbGwKK25vdCB0byBhdHRlbXB0IHRvIGhhbmRsZSB0aGUgaGNhbGwsIGJ1dCB3aWxsIGFsd2F5cyBleGl0IHRvIHVzZXJzcGFjZQordG8gaGFuZGxlIGl0LiAgTm90ZSB0aGF0IGl0IG1heSBub3QgbWFrZSBzZW5zZSB0byBlbmFibGUgc29tZSBhbmQKK2Rpc2FibGUgb3RoZXJzIG9mIGEgZ3JvdXAgb2YgcmVsYXRlZCBoY2FsbHMsIGJ1dCBLVk0gZG9lcyBub3QgcHJldmVudAordXNlcnNwYWNlIGZyb20gZG9pbmcgdGhhdC4KKworSWYgdGhlIGhjYWxsIG51bWJlciBzcGVjaWZpZWQgaXMgbm90IG9uZSB0aGF0IGhhcyBhbiBpbi1rZXJuZWwKK2ltcGxlbWVudGF0aW9uLCB0aGUgS1ZNX0VOQUJMRV9DQVAgaW9jdGwgd2lsbCBmYWlsIHdpdGggYW4gRUlOVkFMCitlcnJvci4KKworNy4yIEtWTV9DQVBfUzM5MF9VU0VSX1NJR1AKKworQXJjaGl0ZWN0dXJlczogczM5MAorUGFyYW1ldGVyczogbm9uZQorCitUaGlzIGNhcGFiaWxpdHkgY29udHJvbHMgd2hpY2ggU0lHUCBvcmRlcnMgd2lsbCBiZSBoYW5kbGVkIGNvbXBsZXRlbHkgaW4gdXNlcgorc3BhY2UuIFdpdGggdGhpcyBjYXBhYmlsaXR5IGVuYWJsZWQsIGFsbCBmYXN0IG9yZGVycyB3aWxsIGJlIGhhbmRsZWQgY29tcGxldGVseQoraW4gdGhlIGtlcm5lbDoKKy0gU0VOU0UKKy0gU0VOU0UgUlVOTklORworLSBFWFRFUk5BTCBDQUxMCistIEVNRVJHRU5DWSBTSUdOQUwKKy0gQ09ORElUSU9OQUwgRU1FUkdFTkNZIFNJR05BTAorCitBbGwgb3RoZXIgb3JkZXJzIHdpbGwgYmUgaGFuZGxlZCBjb21wbGV0ZWx5IGluIHVzZXIgc3BhY2UuCisKK09ubHkgcHJpdmlsZWdlZCBvcGVyYXRpb24gZXhjZXB0aW9ucyB3aWxsIGJlIGNoZWNrZWQgZm9yIGluIHRoZSBrZXJuZWwgKG9yIGV2ZW4KK2luIHRoZSBoYXJkd2FyZSBwcmlvciB0byBpbnRlcmNlcHRpb24pLiBJZiB0aGlzIGNhcGFiaWxpdHkgaXMgbm90IGVuYWJsZWQsIHRoZQorb2xkIHdheSBvZiBoYW5kbGluZyBTSUdQIG9yZGVycyBpcyB1c2VkIChwYXJ0aWFsbHkgaW4ga2VybmVsIGFuZCB1c2VyIHNwYWNlKS4KKworNy4zIEtWTV9DQVBfUzM5MF9WRUNUT1JfUkVHSVNURVJTCisKK0FyY2hpdGVjdHVyZXM6IHMzOTAKK1BhcmFtZXRlcnM6IG5vbmUKK1JldHVybnM6IDAgb24gc3VjY2VzcywgbmVnYXRpdmUgdmFsdWUgb24gZXJyb3IKKworQWxsb3dzIHVzZSBvZiB0aGUgdmVjdG9yIHJlZ2lzdGVycyBpbnRyb2R1Y2VkIHdpdGggejEzIHByb2Nlc3NvciwgYW5kCitwcm92aWRlcyBmb3IgdGhlIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIGhvc3QgYW5kIHVzZXIgc3BhY2UuICBXaWxsCityZXR1cm4gLUVJTlZBTCBpZiB0aGUgbWFjaGluZSBkb2VzIG5vdCBzdXBwb3J0IHZlY3RvcnMuCisKKzcuNCBLVk1fQ0FQX1MzOTBfVVNFUl9TVFNJCisKK0FyY2hpdGVjdHVyZXM6IHMzOTAKK1BhcmFtZXRlcnM6IG5vbmUKKworVGhpcyBjYXBhYmlsaXR5IGFsbG93cyBwb3N0LWhhbmRsZXJzIGZvciB0aGUgU1RTSSBpbnN0cnVjdGlvbi4gQWZ0ZXIKK2luaXRpYWwgaGFuZGxpbmcgaW4gdGhlIGtlcm5lbCwgS1ZNIGV4aXRzIHRvIHVzZXIgc3BhY2Ugd2l0aAorS1ZNX0VYSVRfUzM5MF9TVFNJIHRvIGFsbG93IHVzZXIgc3BhY2UgdG8gaW5zZXJ0IGZ1cnRoZXIgZGF0YS4KKworQmVmb3JlIGV4aXRpbmcgdG8gdXNlcnNwYWNlLCBrdm0gaGFuZGxlcnMgc2hvdWxkIGZpbGwgaW4gczM5MF9zdHNpIGZpZWxkIG9mCit2Y3B1LT5ydW46CitzdHJ1Y3QgeworCV9fdTY0IGFkZHI7CisJX191OCBhcjsKKwlfX3U4IHJlc2VydmVkOworCV9fdTggZmM7CisJX191OCBzZWwxOworCV9fdTE2IHNlbDI7Cit9IHMzOTBfc3RzaTsKKworQGFkZHIgLSBndWVzdCBhZGRyZXNzIG9mIFNUU0kgU1lTSUIKK0BmYyAgIC0gZnVuY3Rpb24gY29kZQorQHNlbDEgLSBzZWxlY3RvciAxCitAc2VsMiAtIHNlbGVjdG9yIDIKK0BhciAgIC0gYWNjZXNzIHJlZ2lzdGVyIG51bWJlcgorCitLVk0gaGFuZGxlcnMgc2hvdWxkIGV4aXQgdG8gdXNlcnNwYWNlIHdpdGggcmMgPSAtRVJFTU9URS4KKworNy41IEtWTV9DQVBfU1BMSVRfSVJRQ0hJUAorCitBcmNoaXRlY3R1cmVzOiB4ODYKK1BhcmFtZXRlcnM6IGFyZ3NbMF0gLSBudW1iZXIgb2Ygcm91dGVzIHJlc2VydmVkIGZvciB1c2Vyc3BhY2UgSU9BUElDcworUmV0dXJuczogMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorCitDcmVhdGUgYSBsb2NhbCBhcGljIGZvciBlYWNoIHByb2Nlc3NvciBpbiB0aGUga2VybmVsLiBUaGlzIGNhbiBiZSB1c2VkCitpbnN0ZWFkIG9mIEtWTV9DUkVBVEVfSVJRQ0hJUCBpZiB0aGUgdXNlcnNwYWNlIFZNTSB3aXNoZXMgdG8gZW11bGF0ZSB0aGUKK0lPQVBJQyBhbmQgUElDIChhbmQgYWxzbyB0aGUgUElULCBldmVuIHRob3VnaCB0aGlzIGhhcyB0byBiZSBlbmFibGVkCitzZXBhcmF0ZWx5KS4KKworVGhpcyBjYXBhYmlsaXR5IGFsc28gZW5hYmxlcyBpbiBrZXJuZWwgcm91dGluZyBvZiBpbnRlcnJ1cHQgcmVxdWVzdHM7Cit3aGVuIEtWTV9DQVBfU1BMSVRfSVJRQ0hJUCBvbmx5IHJvdXRlcyBvZiBLVk1fSVJRX1JPVVRJTkdfTVNJIHR5cGUgYXJlCit1c2VkIGluIHRoZSBJUlEgcm91dGluZyB0YWJsZS4gIFRoZSBmaXJzdCBhcmdzWzBdIE1TSSByb3V0ZXMgYXJlIHJlc2VydmVkCitmb3IgdGhlIElPQVBJQyBwaW5zLiAgV2hlbmV2ZXIgdGhlIExBUElDIHJlY2VpdmVzIGFuIEVPSSBmb3IgdGhlc2Ugcm91dGVzLAorYSBLVk1fRVhJVF9JT0FQSUNfRU9JIHZtZXhpdCB3aWxsIGJlIHJlcG9ydGVkIHRvIHVzZXJzcGFjZS4KKworRmFpbHMgaWYgVkNQVSBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQsIG9yIGlmIHRoZSBpcnFjaGlwIGlzIGFscmVhZHkgaW4gdGhlCitrZXJuZWwgKGkuZS4gS1ZNX0NSRUFURV9JUlFDSElQIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkKS4KKworCis4LiBPdGhlciBjYXBhYmlsaXRpZXMuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgc2VjdGlvbiBsaXN0cyBjYXBhYmlsaXRpZXMgdGhhdCBnaXZlIGluZm9ybWF0aW9uIGFib3V0IG90aGVyCitmZWF0dXJlcyBvZiB0aGUgS1ZNIGltcGxlbWVudGF0aW9uLgorCis4LjEgS1ZNX0NBUF9QUENfSFdSTkcKKworQXJjaGl0ZWN0dXJlczogcHBjCisKK1RoaXMgY2FwYWJpbGl0eSwgaWYgS1ZNX0NIRUNLX0VYVEVOU0lPTiBpbmRpY2F0ZXMgdGhhdCBpdCBpcworYXZhaWxhYmxlLCBtZWFucyB0aGF0IHRoYXQgdGhlIGtlcm5lbCBoYXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlCitIX1JBTkRPTSBoeXBlcmNhbGwgYmFja2VkIGJ5IGEgaGFyZHdhcmUgcmFuZG9tLW51bWJlciBnZW5lcmF0b3IuCitJZiBwcmVzZW50LCB0aGUga2VybmVsIEhfUkFORE9NIGhhbmRsZXIgY2FuIGJlIGVuYWJsZWQgZm9yIGd1ZXN0IHVzZQord2l0aCB0aGUgS1ZNX0NBUF9QUENfRU5BQkxFX0hDQUxMIGNhcGFiaWxpdHkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2FybS92Z2ljLW1hcHBlZC1pcnFzLnR4dCBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vYXJtL3ZnaWMtbWFwcGVkLWlycXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4YmNhMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2FybS92Z2ljLW1hcHBlZC1pcnFzLnR4dApAQCAtMCwwICsxLDE4NyBAQAorS1ZNL0FSTSBWR0lDIEZvcndhcmRlZCBQaHlzaWNhbCBJbnRlcnJ1cHRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIEtWTS9BUk0gY29kZSBpbXBsZW1lbnRzIHNvZnR3YXJlIHN1cHBvcnQgZm9yIHRoZSBBUk0gR2VuZXJpYworSW50ZXJydXB0IENvbnRyb2xsZXIncyAoR0lDJ3MpIGhhcmR3YXJlIHN1cHBvcnQgZm9yIHZpcnR1YWxpemF0aW9uIGJ5CithbGxvd2luZyBzb2Z0d2FyZSB0byBpbmplY3QgdmlydHVhbCBpbnRlcnJ1cHRzIHRvIGEgVk0sIHdoaWNoIHRoZSBndWVzdAorT1Mgc2VlcyBhcyByZWd1bGFyIGludGVycnVwdHMuICBUaGUgY29kZSBpcyBmYW1vdXNseSBrbm93biBhcyB0aGUgVkdJQy4KKworU29tZSBvZiB0aGVzZSB2aXJ0dWFsIGludGVycnVwdHMsIGhvd2V2ZXIsIGNvcnJlc3BvbmQgdG8gcGh5c2ljYWwKK2ludGVycnVwdHMgZnJvbSByZWFsIHBoeXNpY2FsIGRldmljZXMuICBPbmUgZXhhbXBsZSBjb3VsZCBiZSB0aGUKK2FyY2hpdGVjdGVkIHRpbWVyLCB3aGljaCBpdHNlbGYgc3VwcG9ydHMgdmlydHVhbGl6YXRpb24sIGFuZCB0aGVyZWZvcmUKK2xldHMgYSBndWVzdCBPUyBwcm9ncmFtIHRoZSBoYXJkd2FyZSBkZXZpY2UgZGlyZWN0bHkgdG8gcmFpc2UgYW4KK2ludGVycnVwdCBhdCBzb21lIHBvaW50IGluIHRpbWUuICBXaGVuIHN1Y2ggYW4gaW50ZXJydXB0IGlzIHJhaXNlZCwgdGhlCitob3N0IE9TIGluaXRpYWxseSBoYW5kbGVzIHRoZSBpbnRlcnJ1cHQgYW5kIG11c3Qgc29tZWhvdyBzaWduYWwgdGhpcworZXZlbnQgYXMgYSB2aXJ0dWFsIGludGVycnVwdCB0byB0aGUgZ3Vlc3QuICBBbm90aGVyIGV4YW1wbGUgY291bGQgYmUgYQorcGFzc3Rocm91Z2ggZGV2aWNlLCB3aGVyZSB0aGUgcGh5c2ljYWwgaW50ZXJydXB0cyBhcmUgaW5pdGlhbGx5IGhhbmRsZWQKK2J5IHRoZSBob3N0LCBidXQgdGhlIGRldmljZSBkcml2ZXIgZm9yIHRoZSBkZXZpY2UgbGl2ZXMgaW4gdGhlIGd1ZXN0IE9TCithbmQgS1ZNIG11c3QgdGhlcmVmb3JlIHNvbWVob3cgaW5qZWN0IGEgdmlydHVhbCBpbnRlcnJ1cHQgb24gYmVoYWxmIG9mCit0aGUgcGh5c2ljYWwgb25lIHRvIHRoZSBndWVzdCBPUy4KKworVGhlc2UgdmlydHVhbCBpbnRlcnJ1cHRzIGNvcnJlc3BvbmRpbmcgdG8gYSBwaHlzaWNhbCBpbnRlcnJ1cHQgb24gdGhlCitob3N0IGFyZSBjYWxsZWQgZm9yd2FyZGVkIHBoeXNpY2FsIGludGVycnVwdHMsIGJ1dCBhcmUgYWxzbyBzb21ldGltZXMKK3JlZmVycmVkIHRvIGFzICd2aXJ0dWFsaXplZCBwaHlzaWNhbCBpbnRlcnJ1cHRzJyBhbmQgJ21hcHBlZCBpbnRlcnJ1cHRzJy4KKworRm9yd2FyZGVkIHBoeXNpY2FsIGludGVycnVwdHMgYXJlIGhhbmRsZWQgc2xpZ2h0bHkgZGlmZmVyZW50bHkgY29tcGFyZWQKK3RvIHZpcnR1YWwgaW50ZXJydXB0cyBnZW5lcmF0ZWQgcHVyZWx5IGJ5IGEgc29mdHdhcmUgZW11bGF0ZWQgZGV2aWNlLgorCisKK1RoZSBIVyBiaXQKKy0tLS0tLS0tLS0KK1ZpcnR1YWwgaW50ZXJydXB0cyBhcmUgc2lnbmFsbGVkIHRvIHRoZSBndWVzdCBieSBwcm9ncmFtbWluZyB0aGUgTGlzdAorUmVnaXN0ZXJzIChMUnMpIG9uIHRoZSBHSUMgYmVmb3JlIHJ1bm5pbmcgYSBWQ1BVLiAgVGhlIExSIGlzIHByb2dyYW1tZWQKK3dpdGggdGhlIHZpcnR1YWwgSVJRIG51bWJlciBhbmQgdGhlIHN0YXRlIG9mIHRoZSBpbnRlcnJ1cHQgKFBlbmRpbmcsCitBY3RpdmUsIG9yIFBlbmRpbmcrQWN0aXZlKS4gIFdoZW4gdGhlIGd1ZXN0IEFDS3MgYW5kIEVPSXMgYSB2aXJ0dWFsCitpbnRlcnJ1cHQsIHRoZSBMUiBzdGF0ZSBtb3ZlcyBmcm9tIFBlbmRpbmcgdG8gQWN0aXZlLCBhbmQgZmluYWxseSB0bworaW5hY3RpdmUuCisKK1RoZSBMUnMgaW5jbHVkZSBhbiBleHRyYSBiaXQsIGNhbGxlZCB0aGUgSFcgYml0LiAgV2hlbiB0aGlzIGJpdCBpcyBzZXQsCitLVk0gbXVzdCBhbHNvIHByb2dyYW0gYW4gYWRkaXRpb25hbCBmaWVsZCBpbiB0aGUgTFIsIHRoZSBwaHlzaWNhbCBJUlEKK251bWJlciwgdG8gbGluayB0aGUgdmlydHVhbCB3aXRoIHRoZSBwaHlzaWNhbCBJUlEuCisKK1doZW4gdGhlIEhXIGJpdCBpcyBzZXQsIEtWTSBtdXN0IEVJVEhFUiBzZXQgdGhlIFBlbmRpbmcgT1IgdGhlIEFjdGl2ZQorYml0LCBuZXZlciBib3RoIGF0IHRoZSBzYW1lIHRpbWUuCisKK1NldHRpbmcgdGhlIEhXIGJpdCBjYXVzZXMgdGhlIGhhcmR3YXJlIHRvIGRlYWN0aXZhdGUgdGhlIHBoeXNpY2FsCitpbnRlcnJ1cHQgb24gdGhlIHBoeXNpY2FsIGRpc3RyaWJ1dG9yIHdoZW4gdGhlIGd1ZXN0IGRlYWN0aXZhdGVzIHRoZQorY29ycmVzcG9uZGluZyB2aXJ0dWFsIGludGVycnVwdC4KKworCitGb3J3YXJkZWQgUGh5c2ljYWwgSW50ZXJydXB0cyBMaWZlIEN5Y2xlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBzdGF0ZSBvZiBmb3J3YXJkZWQgcGh5c2ljYWwgaW50ZXJydXB0cyBpcyBtYW5hZ2VkIGluIHRoZSBmb2xsb3dpbmcgd2F5OgorCisgIC0gVGhlIHBoeXNpY2FsIGludGVycnVwdCBpcyBhY2tlZCBieSB0aGUgaG9zdCwgYW5kIGJlY29tZXMgYWN0aXZlIG9uCisgICAgdGhlIHBoeXNpY2FsIGRpc3RyaWJ1dG9yICgqKS4KKyAgLSBLVk0gc2V0cyB0aGUgTFIuUGVuZGluZyBiaXQsIGJlY2F1c2UgdGhpcyBpcyB0aGUgb25seSB3YXkgdGhlIEdJQ1YKKyAgICBpbnRlcmZhY2UgaXMgZ29pbmcgdG8gcHJlc2VudCBpdCB0byB0aGUgZ3Vlc3QuCisgIC0gTFIuUGVuZGluZyB3aWxsIHN0YXkgc2V0IGFzIGxvbmcgYXMgdGhlIGd1ZXN0IGhhcyBub3QgYWNrZWQgdGhlIGludGVycnVwdC4KKyAgLSBMUi5QZW5kaW5nIHRyYW5zaXRpb25zIHRvIExSLkFjdGl2ZSBvbiB0aGUgZ3Vlc3QgcmVhZCBvZiB0aGUgSUFSLCBhcworICAgIGV4cGVjdGVkLgorICAtIE9uIGd1ZXN0IEVPSSwgdGhlICpwaHlzaWNhbCBkaXN0cmlidXRvciogYWN0aXZlIGJpdCBnZXRzIGNsZWFyZWQsCisgICAgYnV0IHRoZSBMUi5BY3RpdmUgaXMgbGVmdCB1bnRvdWNoZWQgKHNldCkuCisgIC0gS1ZNIGNsZWFycyB0aGUgTFIgb24gVk0gZXhpdHMgd2hlbiB0aGUgcGh5c2ljYWwgZGlzdHJpYnV0b3IKKyAgICBhY3RpdmUgc3RhdGUgaGFzIGJlZW4gY2xlYXJlZC4KKworKCopOiBUaGUgaG9zdCBoYW5kbGluZyBpcyBzbGlnaHRseSBtb3JlIGNvbXBsaWNhdGVkLiAgRm9yIHNvbWUgZm9yd2FyZGVkCitpbnRlcnJ1cHRzIChzaGFyZWQpLCBLVk0gZGlyZWN0bHkgc2V0cyB0aGUgYWN0aXZlIHN0YXRlIG9uIHRoZSBwaHlzaWNhbAorZGlzdHJpYnV0b3IgYmVmb3JlIGVudGVyaW5nIHRoZSBndWVzdCwgYmVjYXVzZSB0aGUgaW50ZXJydXB0IGlzIG5ldmVyIGFjdHVhbGx5CitoYW5kbGVkIG9uIHRoZSBob3N0IChzZWUgZGV0YWlscyBvbiB0aGUgdGltZXIgYXMgYW4gZXhhbXBsZSBiZWxvdykuICBGb3Igb3RoZXIKK2ZvcndhcmRlZCBpbnRlcnJ1cHRzIChub24tc2hhcmVkKSB0aGUgaG9zdCBkb2VzIG5vdCBkZWFjdGl2YXRlIHRoZSBpbnRlcnJ1cHQKK3doZW4gdGhlIGhvc3QgSVNSIGNvbXBsZXRlcywgYnV0IGxlYXZlcyB0aGUgaW50ZXJydXB0IGFjdGl2ZSB1bnRpbCB0aGUgZ3Vlc3QKK2RlYWN0aXZhdGVzIGl0LiAgTGVhdmluZyB0aGUgaW50ZXJydXB0IGFjdGl2ZSBpcyBhbGxvd2VkLCBiZWNhdXNlIExpbnV4Citjb25maWd1cmVzIHRoZSBwaHlzaWNhbCBHSUMgd2l0aCBFT0lNb2RlPTEsIHdoaWNoIGNhdXNlcyBFT0kgb3BlcmF0aW9ucyB0bworcGVyZm9ybSBhIHByaW9yaXR5IGRyb3AgYWxsb3dpbmcgdGhlIEdJQyB0byByZWNlaXZlIG90aGVyIGludGVycnVwdHMgb2YgdGhlCitkZWZhdWx0IHByaW9yaXR5LgorCisKK0ZvcndhcmRlZCBFZGdlIGFuZCBMZXZlbCBUcmlnZ2VyZWQgUFBJcyBhbmQgU1BJcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitGb3J3YXJkZWQgcGh5c2ljYWwgaW50ZXJydXB0cyBpbmplY3RlZCBzaG91bGQgYWx3YXlzIGJlIGFjdGl2ZSBvbiB0aGUKK3BoeXNpY2FsIGRpc3RyaWJ1dG9yIHdoZW4gaW5qZWN0ZWQgdG8gYSBndWVzdC4KKworTGV2ZWwtdHJpZ2dlcmVkIGludGVycnVwdHMgd2lsbCBrZWVwIHRoZSBpbnRlcnJ1cHQgbGluZSB0byB0aGUgR0lDCithc3NlcnRlZCwgdHlwaWNhbGx5IHVudGlsIHRoZSBndWVzdCBwcm9ncmFtcyB0aGUgZGV2aWNlIHRvIGRlYXNzZXJ0IHRoZQorbGluZS4gIFRoaXMgbWVhbnMgdGhhdCB0aGUgaW50ZXJydXB0IHdpbGwgcmVtYWluIHBlbmRpbmcgb24gdGhlIHBoeXNpY2FsCitkaXN0cmlidXRvciB1bnRpbCB0aGUgZ3Vlc3QgaGFzIHJlcHJvZ3JhbW1lZCB0aGUgZGV2aWNlLiAgU2luY2Ugd2UKK2Fsd2F5cyBydW4gdGhlIFZNIHdpdGggaW50ZXJydXB0cyBlbmFibGVkIG9uIHRoZSBDUFUsIGEgcGVuZGluZworaW50ZXJydXB0IHdpbGwgZXhpdCB0aGUgZ3Vlc3QgYXMgc29vbiBhcyB3ZSBzd2l0Y2ggaW50byB0aGUgZ3Vlc3QsCitwcmV2ZW50aW5nIHRoZSBndWVzdCBmcm9tIGV2ZXIgbWFraW5nIHByb2dyZXNzIGFzIHRoZSBwcm9jZXNzIHJlcGVhdHMKK292ZXIgYW5kIG92ZXIuICBUaGVyZWZvcmUsIHRoZSBhY3RpdmUgc3RhdGUgb24gdGhlIHBoeXNpY2FsIGRpc3RyaWJ1dG9yCittdXN0IGJlIHNldCB3aGVuIGVudGVyaW5nIHRoZSBndWVzdCwgcHJldmVudGluZyB0aGUgR0lDIGZyb20gZm9yd2FyZGluZwordGhlIHBlbmRpbmcgaW50ZXJydXB0IHRvIHRoZSBDUFUuICBBcyBzb29uIGFzIHRoZSBndWVzdCBkZWFjdGl2YXRlcyB0aGUKK2ludGVycnVwdCwgdGhlIHBoeXNpY2FsIGxpbmUgaXMgc2FtcGxlZCBieSB0aGUgaGFyZHdhcmUgYWdhaW4gYW5kIHRoZSBob3N0Cit0YWtlcyBhIG5ldyBpbnRlcnJ1cHQgaWYgYW5kIG9ubHkgaWYgdGhlIHBoeXNpY2FsIGxpbmUgaXMgc3RpbGwgYXNzZXJ0ZWQuCisKK0VkZ2UtdHJpZ2dlcmVkIGludGVycnVwdHMgZG8gbm90IGV4aGliaXQgdGhlIHNhbWUgcHJvYmxlbSB3aXRoCitwcmV2ZW50aW5nIGd1ZXN0IGV4ZWN1dGlvbiB0aGF0IGxldmVsLXRyaWdnZXJlZCBpbnRlcnJ1cHRzIGRvLiAgT25lCitvcHRpb24gaXMgdG8gbm90IHVzZSBIVyBiaXQgYXQgYWxsLCBhbmQgaW5qZWN0IGVkZ2UtdHJpZ2dlcmVkIGludGVycnVwdHMKK2Zyb20gYSBwaHlzaWNhbCBkZXZpY2UgYXMgcHVyZSB2aXJ0dWFsIGludGVycnVwdHMuICBCdXQgdGhhdCB3b3VsZAorcG90ZW50aWFsbHkgc2xvdyBkb3duIGhhbmRsaW5nIG9mIHRoZSBpbnRlcnJ1cHQgaW4gdGhlIGd1ZXN0LCBiZWNhdXNlIGEKK3BoeXNpY2FsIGludGVycnVwdCBvY2N1cnJpbmcgaW4gdGhlIG1pZGRsZSBvZiB0aGUgZ3Vlc3QgSVNSIHdvdWxkCitwcmVlbXB0IHRoZSBndWVzdCBmb3IgdGhlIGhvc3QgdG8gaGFuZGxlIHRoZSBpbnRlcnJ1cHQuICBBZGRpdGlvbmFsbHksCitpZiB5b3UgY29uZmlndXJlIHRoZSBzeXN0ZW0gdG8gaGFuZGxlIGludGVycnVwdHMgb24gYSBzZXBhcmF0ZSBwaHlzaWNhbAorY29yZSBmcm9tIHRoYXQgcnVubmluZyB5b3VyIFZDUFUsIHlvdSBzdGlsbCBoYXZlIHRvIGludGVycnVwdCB0aGUgVkNQVQordG8gcXVldWUgdGhlIHBlbmRpbmcgc3RhdGUgb250byB0aGUgTFIsIGV2ZW4gdGhvdWdoIHRoZSBndWVzdCB3b24ndCB1c2UKK3RoaXMgaW5mb3JtYXRpb24gdW50aWwgdGhlIGd1ZXN0IElTUiBjb21wbGV0ZXMuICBUaGVyZWZvcmUsIHRoZSBIVworYml0IHNob3VsZCBhbHdheXMgYmUgc2V0IGZvciBmb3J3YXJkZWQgZWRnZS10cmlnZ2VyZWQgaW50ZXJydXB0cy4gIFdpdGgKK3RoZSBIVyBiaXQgc2V0LCB0aGUgdmlydHVhbCBpbnRlcnJ1cHQgaXMgaW5qZWN0ZWQgYW5kIGFkZGl0aW9uYWwKK3BoeXNpY2FsIGludGVycnVwdHMgb2NjdXJyaW5nIGJlZm9yZSB0aGUgZ3Vlc3QgZGVhY3RpdmF0ZXMgdGhlIGludGVycnVwdAorc2ltcGx5IG1hcmsgdGhlIHN0YXRlIG9uIHRoZSBwaHlzaWNhbCBkaXN0cmlidXRvciBhcyBQZW5kaW5nK0FjdGl2ZS4gIEFzCitzb29uIGFzIHRoZSBndWVzdCBkZWFjdGl2YXRlcyB0aGUgaW50ZXJydXB0LCB0aGUgaG9zdCB0YWtlcyBhbm90aGVyCitpbnRlcnJ1cHQgaWYgYW5kIG9ubHkgaWYgdGhlcmUgd2FzIGEgcGh5c2ljYWwgaW50ZXJydXB0IGJldHdlZW4gaW5qZWN0aW5nCit0aGUgZm9yd2FyZGVkIGludGVycnVwdCB0byB0aGUgZ3Vlc3QgYW5kIHRoZSBndWVzdCBkZWFjdGl2YXRpbmcgdGhlCitpbnRlcnJ1cHQuCisKK0NvbnNlcXVlbnRseSwgd2hlbmV2ZXIgd2Ugc2NoZWR1bGUgYSBWQ1BVIHdpdGggb25lIG9yIG1vcmUgTFJzIHdpdGggdGhlCitIVyBiaXQgc2V0LCB0aGUgaW50ZXJydXB0IG11c3QgYWxzbyBiZSBhY3RpdmUgb24gdGhlIHBoeXNpY2FsCitkaXN0cmlidXRvci4KKworCitGb3J3YXJkZWQgTFBJcworLS0tLS0tLS0tLS0tLS0KK0xQSXMsIGludHJvZHVjZWQgaW4gR0lDdjMsIGFyZSBhbHdheXMgZWRnZS10cmlnZ2VyZWQgYW5kIGRvIG5vdCBoYXZlIGFuCithY3RpdmUgc3RhdGUuICBUaGV5IGJlY29tZSBwZW5kaW5nIHdoZW4gYSBkZXZpY2Ugc2lnbmFsIHRoZW0sIGFuZCBhcworc29vbiBhcyB0aGV5IGFyZSBhY2tlZCBieSB0aGUgQ1BVLCB0aGV5IGFyZSBpbmFjdGl2ZSBhZ2Fpbi4KKworSXQgdGhlcmVmb3JlIGRvZXNuJ3QgbWFrZSBzZW5zZSwgYW5kIGlzIG5vdCBzdXBwb3J0ZWQsIHRvIHNldCB0aGUgSFcgYml0Citmb3IgcGh5c2ljYWwgTFBJcyB0aGF0IGFyZSBmb3J3YXJkZWQgdG8gYSBWTSBhcyB2aXJ0dWFsIGludGVycnVwdHMsCit0eXBpY2FsbHkgdmlydHVhbCBTUElzLgorCitGb3IgTFBJcywgdGhlcmUgaXMgbm8gb3RoZXIgY2hvaWNlIHRoYW4gdG8gcHJlZW1wdCB0aGUgVkNQVSB0aHJlYWQgaWYKK25lY2Vzc2FyeSwgYW5kIHF1ZXVlIHRoZSBwZW5kaW5nIHN0YXRlIG9udG8gdGhlIExSLgorCisKK1B1dHRpbmcgSXQgVG9nZXRoZXI6IFRoZSBBcmNoaXRlY3RlZCBUaW1lcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgYXJjaGl0ZWN0ZWQgdGltZXIgaXMgYSBkZXZpY2UgdGhhdCBzaWduYWxzIGludGVycnVwdHMgd2l0aCBsZXZlbAordHJpZ2dlcmVkIHNlbWFudGljcy4gIFRoZSB0aW1lciBoYXJkd2FyZSBpcyBkaXJlY3RseSBhY2Nlc3NlZCBieSBWQ1BVcword2hpY2ggcHJvZ3JhbSB0aGUgdGltZXIgdG8gZmlyZSBhdCBzb21lIHBvaW50IGluIHRpbWUuICBFYWNoIFZDUFUgb24gYQorc3lzdGVtIHByb2dyYW1zIHRoZSB0aW1lciB0byBmaXJlIGF0IGRpZmZlcmVudCB0aW1lcywgYW5kIHRoZXJlZm9yZSB0aGUKK2hhcmR3YXJlIGlzIG11bHRpcGxleGVkIGJldHdlZW4gbXVsdGlwbGUgVkNQVXMuICBUaGlzIGlzIGltcGxlbWVudGVkIGJ5Citjb250ZXh0LXN3aXRjaGluZyB0aGUgdGltZXIgc3RhdGUgYWxvbmcgd2l0aCBlYWNoIFZDUFUgdGhyZWFkLgorCitIb3dldmVyLCB0aGlzIG1lYW5zIHRoYXQgYSBzY2VuYXJpbyBsaWtlIHRoZSBmb2xsb3dpbmcgaXMgZW50aXJlbHkKK3Bvc3NpYmxlLCBhbmQgaW4gZmFjdCwgdHlwaWNhbDoKKworMS4gIEtWTSBydW5zIHRoZSBWQ1BVCisyLiAgVGhlIGd1ZXN0IHByb2dyYW1zIHRoZSB0aW1lIHRvIGZpcmUgaW4gVCsxMDAKKzMuICBUaGUgZ3Vlc3QgaXMgaWRsZSBhbmQgY2FsbHMgV0ZJICh3YWl0LWZvci1pbnRlcnJ1cHRzKQorNC4gIFRoZSBoYXJkd2FyZSB0cmFwcyB0byB0aGUgaG9zdAorNS4gIEtWTSBzdG9yZXMgdGhlIHRpbWVyIHN0YXRlIHRvIG1lbW9yeSBhbmQgZGlzYWJsZXMgdGhlIGhhcmR3YXJlIHRpbWVyCis2LiAgS1ZNIHNjaGVkdWxlcyBhIHNvZnQgdGltZXIgdG8gZmlyZSBpbiBUKygxMDAgLSB0aW1lIHNpbmNlIHN0ZXAgMikKKzcuICBLVk0gcHV0cyB0aGUgVkNQVSB0aHJlYWQgdG8gc2xlZXAgKG9uIGEgd2FpdHF1ZXVlKQorOC4gIFRoZSBzb2Z0IHRpbWVyIGZpcmVzLCB3YWtpbmcgdXAgdGhlIFZDUFUgdGhyZWFkCis5LiAgS1ZNIHJlcHJvZ3JhbXMgdGhlIHRpbWVyIGhhcmR3YXJlIHdpdGggdGhlIFZDUFUncyB2YWx1ZXMKKzEwLiBLVk0gbWFya3MgdGhlIHRpbWVyIGludGVycnVwdCBhcyBhY3RpdmUgb24gdGhlIHBoeXNpY2FsIGRpc3RyaWJ1dG9yCisxMS4gS1ZNIGluamVjdHMgYSBmb3J3YXJkZWQgcGh5c2ljYWwgaW50ZXJydXB0IHRvIHRoZSBndWVzdAorMTIuIEtWTSBydW5zIHRoZSBWQ1BVCisKK05vdGljZSB0aGF0IEtWTSBpbmplY3RzIGEgZm9yd2FyZGVkIHBoeXNpY2FsIGludGVycnVwdCBpbiBzdGVwIDExIHdpdGhvdXQKK3RoZSBjb3JyZXNwb25kaW5nIGludGVycnVwdCBoYXZpbmcgYWN0dWFsbHkgZmlyZWQgb24gdGhlIGhvc3QuICBUaGF0IGlzCitleGFjdGx5IHdoeSB3ZSBtYXJrIHRoZSB0aW1lciBpbnRlcnJ1cHQgYXMgYWN0aXZlIGluIHN0ZXAgMTAsIGJlY2F1c2UKK3RoZSBhY3RpdmUgc3RhdGUgb24gdGhlIHBoeXNpY2FsIGRpc3RyaWJ1dG9yIGlzIHBhcnQgb2YgdGhlIHN0YXRlCitiZWxvbmdpbmcgdG8gdGhlIHRpbWVyIGhhcmR3YXJlLCB3aGljaCBpcyBjb250ZXh0LXN3aXRjaGVkIGFsb25nIHdpdGgKK3RoZSBWQ1BVIHRocmVhZC4KKworSWYgdGhlIGd1ZXN0IGRvZXMgbm90IGlkbGUgYmVjYXVzZSBpdCBpcyBidXN5LCB0aGUgZmxvdyBsb29rcyBsaWtlIHRoaXMKK2luc3RlYWQ6CisKKzEuICBLVk0gcnVucyB0aGUgVkNQVQorMi4gIFRoZSBndWVzdCBwcm9ncmFtcyB0aGUgdGltZSB0byBmaXJlIGluIFQrMTAwCis0LiAgQXQgVCsxMDAgdGhlIHRpbWVyIGZpcmVzIGFuZCBhIHBoeXNpY2FsIElSUSBjYXVzZXMgdGhlIFZNIHRvIGV4aXQKKyAgICAobm90ZSB0aGF0IHRoaXMgaW5pdGlhbGx5IG9ubHkgdHJhcHMgdG8gRUwyIGFuZCBkb2VzIG5vdCBydW4gdGhlIGhvc3QgSVNSCisgICAgdW50aWwgS1ZNIGhhcyByZXR1cm5lZCB0byB0aGUgaG9zdCkuCis1LiAgV2l0aCBpbnRlcnJ1cHRzIHN0aWxsIGRpc2FibGVkIG9uIHRoZSBDUFUgY29taW5nIGJhY2sgZnJvbSB0aGUgZ3Vlc3QsIEtWTQorICAgIHN0b3JlcyB0aGUgdmlydHVhbCB0aW1lciBzdGF0ZSB0byBtZW1vcnkgYW5kIGRpc2FibGVzIHRoZSB2aXJ0dWFsIGh3IHRpbWVyLgorNi4gIEtWTSBsb29rcyBhdCB0aGUgdGltZXIgc3RhdGUgKGluIG1lbW9yeSkgYW5kIGluamVjdHMgYSBmb3J3YXJkZWQgcGh5c2ljYWwKKyAgICBpbnRlcnJ1cHQgYmVjYXVzZSBpdCBjb25jbHVkZXMgdGhlIHRpbWVyIGhhcyBleHBpcmVkLgorNy4gIEtWTSBtYXJrcyB0aGUgdGltZXIgaW50ZXJydXB0IGFzIGFjdGl2ZSBvbiB0aGUgcGh5c2ljYWwgZGlzdHJpYnV0b3IKKzcuICBLVk0gZW5hYmxlcyB0aGUgdGltZXIsIGVuYWJsZXMgaW50ZXJydXB0cywgYW5kIHJ1bnMgdGhlIFZDUFUKKworTm90aWNlIHRoYXQgYWdhaW4gdGhlIGZvcndhcmRlZCBwaHlzaWNhbCBpbnRlcnJ1cHQgaXMgaW5qZWN0ZWQgdG8gdGhlCitndWVzdCB3aXRob3V0IGhhdmluZyBhY3R1YWxseSBiZWVuIGhhbmRsZWQgb24gdGhlIGhvc3QuICBJbiB0aGlzIGNhc2UgaXQKK2lzIGJlY2F1c2UgdGhlIHBoeXNpY2FsIGludGVycnVwdCBpcyBuZXZlciBhY3R1YWxseSBzZWVuIGJ5IHRoZSBob3N0IGJlY2F1c2UgdGhlCit0aW1lciBpcyBkaXNhYmxlZCB1cG9uIGd1ZXN0IHJldHVybiwgYW5kIHRoZSB2aXJ0dWFsIGZvcndhcmRlZCBpbnRlcnJ1cHQgaXMKK2luamVjdGVkIG9uIHRoZSBLVk0gZ3Vlc3QgZW50cnkgcGF0aC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vY3B1aWQudHh0IGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9jcHVpZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M2NWZlYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vY3B1aWQudHh0CkBAIC0wLDAgKzEsNjAgQEAKK0tWTSBDUFVJRCBiaXRzCitHbGF1YmVyIENvc3RhIDxnbG9tbWVyQHJlZGhhdC5jb20+LCBSZWQgSGF0IEluYywgMjAxMAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQSBndWVzdCBydW5uaW5nIG9uIGEga3ZtIGhvc3QsIGNhbiBjaGVjayBzb21lIG9mIGl0cyBmZWF0dXJlcyB1c2luZworY3B1aWQuIFRoaXMgaXMgbm90IGFsd2F5cyBndWFyYW50ZWVkIHRvIHdvcmssIHNpbmNlIHVzZXJzcGFjZSBjYW4KK21hc2stb3V0IHNvbWUsIG9yIGV2ZW4gYWxsIEtWTS1yZWxhdGVkIGNwdWlkIGZlYXR1cmVzIGJlZm9yZSBsYXVuY2hpbmcKK2EgZ3Vlc3QuCisKK0tWTSBjcHVpZCBmdW5jdGlvbnMgYXJlOgorCitmdW5jdGlvbjogS1ZNX0NQVUlEX1NJR05BVFVSRSAoMHg0MDAwMDAwMCkKK3JldHVybnMgOiBlYXggPSAweDQwMDAwMDAxLAorICAgICAgICAgIGVieCA9IDB4NGI0ZDU2NGIsCisgICAgICAgICAgZWN4ID0gMHg1NjRiNGQ1NiwKKyAgICAgICAgICBlZHggPSAweDRkLgorTm90ZSB0aGF0IHRoaXMgdmFsdWUgaW4gZWJ4LCBlY3ggYW5kIGVkeCBjb3JyZXNwb25kcyB0byB0aGUgc3RyaW5nICJLVk1LVk1LVk0iLgorVGhlIHZhbHVlIGluIGVheCBjb3JyZXNwb25kcyB0byB0aGUgbWF4aW11bSBjcHVpZCBmdW5jdGlvbiBwcmVzZW50IGluIHRoaXMgbGVhZiwKK2FuZCB3aWxsIGJlIHVwZGF0ZWQgaWYgbW9yZSBmdW5jdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBmdXR1cmUuCitOb3RlIGFsc28gdGhhdCBvbGQgaG9zdHMgc2V0IGVheCB2YWx1ZSB0byAweDAuIFRoaXMgc2hvdWxkCitiZSBpbnRlcnByZXRlZCBhcyBpZiB0aGUgdmFsdWUgd2FzIDB4NDAwMDAwMDEuCitUaGlzIGZ1bmN0aW9uIHF1ZXJpZXMgdGhlIHByZXNlbmNlIG9mIEtWTSBjcHVpZCBsZWFmcy4KKworCitmdW5jdGlvbjogZGVmaW5lIEtWTV9DUFVJRF9GRUFUVVJFUyAoMHg0MDAwMDAwMSkKK3JldHVybnMgOiBlYngsIGVjeCwgZWR4ID0gMAorICAgICAgICAgIGVheCA9IGFuZCBPUidlZCBncm91cCBvZiAoMSA8PCBmbGFnKSwgd2hlcmUgZWFjaCBmbGFncyBpczoKKworCitmbGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHZhbHVlIHx8IG1lYW5pbmcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitLVk1fRkVBVFVSRV9DTE9DS1NPVVJDRSAgICAgICAgICAgIHx8ICAgICAwIHx8IGt2bWNsb2NrIGF2YWlsYWJsZSBhdCBtc3JzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICAgICAgIHx8IDB4MTEgYW5kIDB4MTIuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0tWTV9GRUFUVVJFX05PUF9JT19ERUxBWSAgICAgICAgICAgfHwgICAgIDEgfHwgbm90IG5lY2Vzc2FyeSB0byBwZXJmb3JtIGRlbGF5cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAgICAgICB8fCBvbiBQSU8gb3BlcmF0aW9ucy4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorS1ZNX0ZFQVRVUkVfTU1VX09QICAgICAgICAgICAgICAgICB8fCAgICAgMiB8fCBkZXByZWNhdGVkLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitLVk1fRkVBVFVSRV9DTE9DS1NPVVJDRTIgICAgICAgICAgIHx8ICAgICAzIHx8IGt2bWNsb2NrIGF2YWlsYWJsZSBhdCBtc3JzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICAgICAgIHx8IDB4NGI1NjRkMDAgYW5kIDB4NGI1NjRkMDEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorS1ZNX0ZFQVRVUkVfQVNZTkNfUEYgICAgICAgICAgICAgICB8fCAgICAgNCB8fCBhc3luYyBwZiBjYW4gYmUgZW5hYmxlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAgICAgICB8fCB3cml0aW5nIHRvIG1zciAweDRiNTY0ZDAyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0tWTV9GRUFUVVJFX1NURUFMX1RJTUUgICAgICAgICAgICAgfHwgICAgIDUgfHwgc3RlYWwgdGltZSBjYW4gYmUgZW5hYmxlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAgICAgICB8fCB3cml0aW5nIHRvIG1zciAweDRiNTY0ZDAzLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitLVk1fRkVBVFVSRV9QVl9FT0kgICAgICAgICAgICAgICAgIHx8ICAgICA2IHx8IHBhcmF2aXJ0dWFsaXplZCBlbmQgb2YgaW50ZXJydXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICAgICAgIHx8IGhhbmRsZXIgY2FuIGJlIGVuYWJsZWQgYnkgd3JpdGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAgICAgICB8fCB0byBtc3IgMHg0YjU2NGQwNC4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorS1ZNX0ZFQVRVUkVfUFZfVU5IQUxUICAgICAgICAgICAgICB8fCAgICAgNyB8fCBndWVzdCBjaGVja3MgdGhpcyBmZWF0dXJlIGJpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAgICAgICB8fCBiZWZvcmUgZW5hYmxpbmcgcGFyYXZpcnR1YWxpemVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICAgICAgIHx8IHNwaW5sb2NrIHN1cHBvcnQuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0tWTV9GRUFUVVJFX0NMT0NLU09VUkNFX1NUQUJMRV9CSVQgfHwgICAgMjQgfHwgaG9zdCB3aWxsIHdhcm4gaWYgbm8gZ3Vlc3Qtc2lkZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAgICAgICB8fCBwZXItY3B1IHdhcnBzIGFyZSBleHBlY3RlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAgICAgICB8fCBrdm1jbG9jay4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9kZXZpY2VzL1JFQURNRSBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vZGV2aWNlcy9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRhNjk4MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vZGV2aWNlcy9SRUFETUUKQEAgLTAsMCArMSBAQAorVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgc3BlY2lmaWMgZGV2aWNlIGJpbmRpbmdzIGZvciBLVk1fQ0FQX0RFVklDRV9DVFJMLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9kZXZpY2VzL2FybS12Z2ljLnR4dCBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vZGV2aWNlcy9hcm0tdmdpYy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk1NDFkNAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vZGV2aWNlcy9hcm0tdmdpYy50eHQKQEAgLTAsMCArMSwxMTggQEAKK0FSTSBWaXJ0dWFsIEdlbmVyaWMgSW50ZXJydXB0IENvbnRyb2xsZXIgKFZHSUMpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitEZXZpY2UgdHlwZXMgc3VwcG9ydGVkOgorICBLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjIgICAgIEFSTSBHZW5lcmljIEludGVycnVwdCBDb250cm9sbGVyIHYyLjAKKyAgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1YzICAgICBBUk0gR2VuZXJpYyBJbnRlcnJ1cHQgQ29udHJvbGxlciB2My4wCisKK09ubHkgb25lIFZHSUMgaW5zdGFuY2UgbWF5IGJlIGluc3RhbnRpYXRlZCB0aHJvdWdoIGVpdGhlciB0aGlzIEFQSSBvciB0aGUKK2xlZ2FjeSBLVk1fQ1JFQVRFX0lSUUNISVAgYXBpLiAgVGhlIGNyZWF0ZWQgVkdJQyB3aWxsIGFjdCBhcyB0aGUgVk0gaW50ZXJydXB0Citjb250cm9sbGVyLCByZXF1aXJpbmcgZW11bGF0ZWQgdXNlci1zcGFjZSBkZXZpY2VzIHRvIGluamVjdCBpbnRlcnJ1cHRzIHRvIHRoZQorVkdJQyBpbnN0ZWFkIG9mIGRpcmVjdGx5IHRvIENQVXMuCisKK0NyZWF0aW5nIGEgZ3Vlc3QgR0lDdjMgZGV2aWNlIHJlcXVpcmVzIGEgaG9zdCBHSUN2MyBhcyB3ZWxsLgorR0lDdjMgaW1wbGVtZW50YXRpb25zIHdpdGggaGFyZHdhcmUgY29tcGF0aWJpbGl0eSBzdXBwb3J0IGFsbG93IGEgZ3Vlc3QgR0lDdjIKK2FzIHdlbGwuCisKK0dyb3VwczoKKyAgS1ZNX0RFVl9BUk1fVkdJQ19HUlBfQUREUgorICBBdHRyaWJ1dGVzOgorICAgIEtWTV9WR0lDX1YyX0FERFJfVFlQRV9ESVNUIChydywgNjQtYml0KQorICAgICAgQmFzZSBhZGRyZXNzIGluIHRoZSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlIG9mIHRoZSBHSUMgZGlzdHJpYnV0b3IKKyAgICAgIHJlZ2lzdGVyIG1hcHBpbmdzLiBPbmx5IHZhbGlkIGZvciBLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjIuCisgICAgICBUaGlzIGFkZHJlc3MgbmVlZHMgdG8gYmUgNEsgYWxpZ25lZCBhbmQgdGhlIHJlZ2lvbiBjb3ZlcnMgNCBLQnl0ZS4KKworICAgIEtWTV9WR0lDX1YyX0FERFJfVFlQRV9DUFUgKHJ3LCA2NC1iaXQpCisgICAgICBCYXNlIGFkZHJlc3MgaW4gdGhlIGd1ZXN0IHBoeXNpY2FsIGFkZHJlc3Mgc3BhY2Ugb2YgdGhlIEdJQyB2aXJ0dWFsIGNwdQorICAgICAgaW50ZXJmYWNlIHJlZ2lzdGVyIG1hcHBpbmdzLiBPbmx5IHZhbGlkIGZvciBLVk1fREVWX1RZUEVfQVJNX1ZHSUNfVjIuCisgICAgICBUaGlzIGFkZHJlc3MgbmVlZHMgdG8gYmUgNEsgYWxpZ25lZCBhbmQgdGhlIHJlZ2lvbiBjb3ZlcnMgNCBLQnl0ZS4KKworICAgIEtWTV9WR0lDX1YzX0FERFJfVFlQRV9ESVNUIChydywgNjQtYml0KQorICAgICAgQmFzZSBhZGRyZXNzIGluIHRoZSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlIG9mIHRoZSBHSUN2MyBkaXN0cmlidXRvcgorICAgICAgcmVnaXN0ZXIgbWFwcGluZ3MuIE9ubHkgdmFsaWQgZm9yIEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WMy4KKyAgICAgIFRoaXMgYWRkcmVzcyBuZWVkcyB0byBiZSA2NEsgYWxpZ25lZCBhbmQgdGhlIHJlZ2lvbiBjb3ZlcnMgNjQgS0J5dGUuCisKKyAgICBLVk1fVkdJQ19WM19BRERSX1RZUEVfUkVESVNUIChydywgNjQtYml0KQorICAgICAgQmFzZSBhZGRyZXNzIGluIHRoZSBndWVzdCBwaHlzaWNhbCBhZGRyZXNzIHNwYWNlIG9mIHRoZSBHSUN2MworICAgICAgcmVkaXN0cmlidXRvciByZWdpc3RlciBtYXBwaW5ncy4gVGhlcmUgYXJlIHR3byA2NEsgcGFnZXMgZm9yIGVhY2gKKyAgICAgIFZDUFUgYW5kIGFsbCBvZiB0aGUgcmVkaXN0cmlidXRvciBwYWdlcyBhcmUgY29udGlndW91cy4KKyAgICAgIE9ubHkgdmFsaWQgZm9yIEtWTV9ERVZfVFlQRV9BUk1fVkdJQ19WMy4KKyAgICAgIFRoaXMgYWRkcmVzcyBuZWVkcyB0byBiZSA2NEsgYWxpZ25lZC4KKworCisgIEtWTV9ERVZfQVJNX1ZHSUNfR1JQX0RJU1RfUkVHUworICBBdHRyaWJ1dGVzOgorICAgIFRoZSBhdHRyIGZpZWxkIG9mIGt2bV9kZXZpY2VfYXR0ciBlbmNvZGVzIHR3byB2YWx1ZXM6CisgICAgYml0czogICAgIHwgNjMgICAuLi4uICA0MCB8IDM5IC4uICAzMiAgfCAgMzEgICAuLi4uICAgIDAgfAorICAgIHZhbHVlczogICB8ICAgIHJlc2VydmVkICAgfCB2Y3B1X2luZGV4IHwgICAgICBvZmZzZXQgICAgIHwKKworICAgIEFsbCBkaXN0cmlidXRvciByZWdzIGFyZSAocncsIDMyLWJpdCkKKworICAgIFRoZSBvZmZzZXQgaXMgcmVsYXRpdmUgdG8gdGhlICJEaXN0cmlidXRvciBiYXNlIGFkZHJlc3MiIGFzIGRlZmluZWQgaW4gdGhlCisgICAgR0lDdjIgc3BlY3MuICBHZXR0aW5nIG9yIHNldHRpbmcgc3VjaCBhIHJlZ2lzdGVyIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMKKyAgICByZWFkaW5nIG9yIHdyaXRpbmcgdGhlIHJlZ2lzdGVyIG9uIHRoZSBhY3R1YWwgaGFyZHdhcmUgZnJvbSB0aGUgY3B1IHdob3NlCisgICAgaW5kZXggaXMgc3BlY2lmaWVkIHdpdGggdGhlIHZjcHVfaW5kZXggZmllbGQuICBOb3RlIHRoYXQgbW9zdCBkaXN0cmlidXRvcgorICAgIGZpZWxkcyBhcmUgbm90IGJhbmtlZCwgYnV0IHJldHVybiB0aGUgc2FtZSB2YWx1ZSByZWdhcmRsZXNzIG9mIHRoZQorICAgIHZjcHVfaW5kZXggdXNlZCB0byBhY2Nlc3MgdGhlIHJlZ2lzdGVyLgorICBMaW1pdGF0aW9uczoKKyAgICAtIFByaW9yaXRpZXMgYXJlIG5vdCBpbXBsZW1lbnRlZCwgYW5kIHJlZ2lzdGVycyBhcmUgUkFaL1dJCisgICAgLSBDdXJyZW50bHkgb25seSBpbXBsZW1lbnRlZCBmb3IgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1YyLgorICBFcnJvcnM6CisgICAgLUVOWElPOiBHZXR0aW5nIG9yIHNldHRpbmcgdGhpcyByZWdpc3RlciBpcyBub3QgeWV0IHN1cHBvcnRlZAorICAgIC1FQlVTWTogT25lIG9yIG1vcmUgVkNQVXMgYXJlIHJ1bm5pbmcKKyAgICAtRUlOVkFMOiBJbnZhbGlkIHZjcHVfaW5kZXggc3VwcGxpZWQKKworICBLVk1fREVWX0FSTV9WR0lDX0dSUF9DUFVfUkVHUworICBBdHRyaWJ1dGVzOgorICAgIFRoZSBhdHRyIGZpZWxkIG9mIGt2bV9kZXZpY2VfYXR0ciBlbmNvZGVzIHR3byB2YWx1ZXM6CisgICAgYml0czogICAgIHwgNjMgICAuLi4uICA0MCB8IDM5IC4uICAzMiAgfCAgMzEgICAuLi4uICAgIDAgfAorICAgIHZhbHVlczogICB8ICAgIHJlc2VydmVkICAgfCB2Y3B1X2luZGV4IHwgICAgICBvZmZzZXQgICAgIHwKKworICAgIEFsbCBDUFUgaW50ZXJmYWNlIHJlZ3MgYXJlIChydywgMzItYml0KQorCisgICAgVGhlIG9mZnNldCBzcGVjaWZpZXMgdGhlIG9mZnNldCBmcm9tIHRoZSAiQ1BVIGludGVyZmFjZSBiYXNlIGFkZHJlc3MiIGFzCisgICAgZGVmaW5lZCBpbiB0aGUgR0lDdjIgc3BlY3MuICBHZXR0aW5nIG9yIHNldHRpbmcgc3VjaCBhIHJlZ2lzdGVyIGhhcyB0aGUKKyAgICBzYW1lIGVmZmVjdCBhcyByZWFkaW5nIG9yIHdyaXRpbmcgdGhlIHJlZ2lzdGVyIG9uIHRoZSBhY3R1YWwgaGFyZHdhcmUuCisKKyAgICBUaGUgQWN0aXZlIFByaW9yaXRpZXMgUmVnaXN0ZXJzIEFQUm4gYXJlIGltcGxlbWVudGF0aW9uIGRlZmluZWQsIHNvIHdlIHNldCBhCisgICAgZml4ZWQgZm9ybWF0IGZvciBvdXIgaW1wbGVtZW50YXRpb24gdGhhdCBmaXRzIHdpdGggdGhlIG1vZGVsIG9mIGEgIkdJQ3YyCisgICAgaW1wbGVtZW50YXRpb24gd2l0aG91dCB0aGUgc2VjdXJpdHkgZXh0ZW5zaW9ucyIgd2hpY2ggd2UgcHJlc2VudCB0byB0aGUKKyAgICBndWVzdC4gIFRoaXMgaW50ZXJmYWNlIGFsd2F5cyBleHBvc2VzIGZvdXIgcmVnaXN0ZXIgQVBSWzAtM10gZGVzY3JpYmluZyB0aGUKKyAgICBtYXhpbXVtIHBvc3NpYmxlIDEyOCBwcmVlbXB0aW9uIGxldmVscy4gIFRoZSBzZW1hbnRpY3Mgb2YgdGhlIHJlZ2lzdGVyCisgICAgaW5kaWNhdGUgaWYgYW55IGludGVycnVwdHMgaW4gYSBnaXZlbiBwcmVlbXB0aW9uIGxldmVsIGFyZSBpbiB0aGUgYWN0aXZlCisgICAgc3RhdGUgYnkgc2V0dGluZyB0aGUgY29ycmVzcG9uZGluZyBiaXQuCisKKyAgICBUaHVzLCBwcmVlbXB0aW9uIGxldmVsIFggaGFzIG9uZSBvciBtb3JlIGFjdGl2ZSBpbnRlcnJ1cHRzIGlmIGFuZCBvbmx5IGlmOgorCisgICAgICBBUFJuW1ggbW9kIDMyXSA9PSAwYjEsICB3aGVyZSBuID0gWCAvIDMyCisKKyAgICBCaXRzIGZvciB1bmRlZmluZWQgcHJlZW1wdGlvbiBsZXZlbHMgYXJlIFJBWi9XSS4KKworICBMaW1pdGF0aW9uczoKKyAgICAtIFByaW9yaXRpZXMgYXJlIG5vdCBpbXBsZW1lbnRlZCwgYW5kIHJlZ2lzdGVycyBhcmUgUkFaL1dJCisgICAgLSBDdXJyZW50bHkgb25seSBpbXBsZW1lbnRlZCBmb3IgS1ZNX0RFVl9UWVBFX0FSTV9WR0lDX1YyLgorICBFcnJvcnM6CisgICAgLUVOWElPOiBHZXR0aW5nIG9yIHNldHRpbmcgdGhpcyByZWdpc3RlciBpcyBub3QgeWV0IHN1cHBvcnRlZAorICAgIC1FQlVTWTogT25lIG9yIG1vcmUgVkNQVXMgYXJlIHJ1bm5pbmcKKyAgICAtRUlOVkFMOiBJbnZhbGlkIHZjcHVfaW5kZXggc3VwcGxpZWQKKworICBLVk1fREVWX0FSTV9WR0lDX0dSUF9OUl9JUlFTCisgIEF0dHJpYnV0ZXM6CisgICAgQSB2YWx1ZSBkZXNjcmliaW5nIHRoZSBudW1iZXIgb2YgaW50ZXJydXB0cyAoU0dJLCBQUEkgYW5kIFNQSSkgZm9yCisgICAgdGhpcyBHSUMgaW5zdGFuY2UsIHJhbmdpbmcgZnJvbSA2NCB0byAxMDI0LCBpbiBpbmNyZW1lbnRzIG9mIDMyLgorCisgIEVycm9yczoKKyAgICAtRUlOVkFMOiBWYWx1ZSBzZXQgaXMgb3V0IG9mIHRoZSBleHBlY3RlZCByYW5nZQorICAgIC1FQlVTWTogVmFsdWUgaGFzIGFscmVhZHkgYmUgc2V0LCBvciBHSUMgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZAorICAgICAgICAgICAgd2l0aCBkZWZhdWx0IHZhbHVlcy4KKworICBLVk1fREVWX0FSTV9WR0lDX0dSUF9DVFJMCisgIEF0dHJpYnV0ZXM6CisgICAgS1ZNX0RFVl9BUk1fVkdJQ19DVFJMX0lOSVQKKyAgICAgIHJlcXVlc3QgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBWR0lDLCBubyBhZGRpdGlvbmFsIHBhcmFtZXRlciBpbgorICAgICAga3ZtX2RldmljZV9hdHRyLmFkZHIuCisgIEVycm9yczoKKyAgICAtRU5YSU86IFZHSUMgbm90IHByb3Blcmx5IGNvbmZpZ3VyZWQgYXMgcmVxdWlyZWQgcHJpb3IgdG8gY2FsbGluZworICAgICB0aGlzIGF0dHJpYnV0ZQorICAgIC1FTk9ERVY6IG5vIG9ubGluZSBWQ1BVCisgICAgLUVOT01FTTogbWVtb3J5IHNob3J0YWdlIHdoZW4gYWxsb2NhdGluZyB2Z2ljIGludGVybmFsIGRhdGEKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vZGV2aWNlcy9tcGljLnR4dCBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vZGV2aWNlcy9tcGljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjU3Mzk3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9kZXZpY2VzL21waWMudHh0CkBAIC0wLDAgKzEsNTMgQEAKK01QSUMgaW50ZXJydXB0IGNvbnRyb2xsZXIKKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworRGV2aWNlIHR5cGVzIHN1cHBvcnRlZDoKKyAgS1ZNX0RFVl9UWVBFX0ZTTF9NUElDXzIwICAgICBGcmVlc2NhbGUgTVBJQyB2Mi4wCisgIEtWTV9ERVZfVFlQRV9GU0xfTVBJQ180MiAgICAgRnJlZXNjYWxlIE1QSUMgdjQuMgorCitPbmx5IG9uZSBNUElDIGluc3RhbmNlLCBvZiBhbnkgdHlwZSwgbWF5IGJlIGluc3RhbnRpYXRlZC4gIFRoZSBjcmVhdGVkCitNUElDIHdpbGwgYWN0IGFzIHRoZSBzeXN0ZW0gaW50ZXJydXB0IGNvbnRyb2xsZXIsIGNvbm5lY3RpbmcgdG8gZWFjaAordmNwdSdzIGludGVycnVwdCBpbnB1dHMuCisKK0dyb3VwczoKKyAgS1ZNX0RFVl9NUElDX0dSUF9NSVNDCisgIEF0dHJpYnV0ZXM6CisgICAgS1ZNX0RFVl9NUElDX0JBU0VfQUREUiAocncsIDY0LWJpdCkKKyAgICAgIEJhc2UgYWRkcmVzcyBvZiB0aGUgMjU2IEtpQiBNUElDIHJlZ2lzdGVyIHNwYWNlLiAgTXVzdCBiZQorICAgICAgbmF0dXJhbGx5IGFsaWduZWQuICBBIHZhbHVlIG9mIHplcm8gZGlzYWJsZXMgdGhlIG1hcHBpbmcuCisgICAgICBSZXNldCB2YWx1ZSBpcyB6ZXJvLgorCisgIEtWTV9ERVZfTVBJQ19HUlBfUkVHSVNURVIgKHJ3LCAzMi1iaXQpCisgICAgQWNjZXNzIGFuIE1QSUMgcmVnaXN0ZXIsIGFzIGlmIHRoZSBhY2Nlc3Mgd2VyZSBtYWRlIGZyb20gdGhlIGd1ZXN0LgorICAgICJhdHRyIiBpcyB0aGUgYnl0ZSBvZmZzZXQgaW50byB0aGUgTVBJQyByZWdpc3RlciBzcGFjZS4gIEFjY2Vzc2VzCisgICAgbXVzdCBiZSA0LWJ5dGUgYWxpZ25lZC4KKworICAgIE1TSXMgbWF5IGJlIHNpZ25hbGVkIGJ5IHVzaW5nIHRoaXMgYXR0cmlidXRlIGdyb3VwIHRvIHdyaXRlCisgICAgdG8gdGhlIHJlbGV2YW50IE1TSUlSLgorCisgIEtWTV9ERVZfTVBJQ19HUlBfSVJRX0FDVElWRSAocncsIDMyLWJpdCkKKyAgICBJUlEgaW5wdXQgbGluZSBmb3IgZWFjaCBzdGFuZGFyZCBvcGVucGljIHNvdXJjZS4gIDAgaXMgaW5hY3RpdmUgYW5kIDEKKyAgICBpcyBhY3RpdmUsIHJlZ2FyZGxlc3Mgb2YgaW50ZXJydXB0IHNlbnNlLgorCisgICAgRm9yIGVkZ2UtdHJpZ2dlcmVkIGludGVycnVwdHM6ICBXcml0aW5nIDEgaXMgY29uc2lkZXJlZCBhbiBhY3RpdmF0aW5nCisgICAgZWRnZSwgYW5kIHdyaXRpbmcgMCBpcyBpZ25vcmVkLiAgUmVhZGluZyByZXR1cm5zIDEgaWYgYSBwcmV2aW91c2x5CisgICAgc2lnbmFsZWQgZWRnZSBoYXMgbm90IGJlZW4gYWNrbm93bGVkZ2VkLCBhbmQgMCBvdGhlcndpc2UuCisKKyAgICAiYXR0ciIgaXMgdGhlIElSUSBudW1iZXIuICBJUlEgbnVtYmVycyBmb3Igc3RhbmRhcmQgc291cmNlcyBhcmUgdGhlCisgICAgYnl0ZSBvZmZzZXQgb2YgdGhlIHJlbGV2YW50IElWUFIgZnJvbSBFSVZQUjAsIGRpdmlkZWQgYnkgMzIuCisKK0lSUSBSb3V0aW5nOgorCisgIFRoZSBNUElDIGVtdWxhdGlvbiBzdXBwb3J0cyBJUlEgcm91dGluZy4gT25seSBhIHNpbmdsZSBNUElDIGRldmljZSBjYW4KKyAgYmUgaW5zdGFudGlhdGVkLiBPbmNlIHRoYXQgZGV2aWNlIGhhcyBiZWVuIGNyZWF0ZWQsIGl0J3MgYXZhaWxhYmxlIGFzCisgIGlycWNoaXAgaWQgMC4KKworICBUaGlzIGlycWNoaXAgMCBoYXMgMjU2IGludGVycnVwdCBwaW5zLCB3aGljaCBleHBvc2UgdGhlIGludGVycnVwdHMgaW4KKyAgdGhlIG1haW4gYXJyYXkgb2YgaW50ZXJydXB0IHNvdXJjZXMgKGEuay5hLiAiU1JDIiBpbnRlcnJ1cHRzKS4KKworICBUaGUgbnVtYmVyaW5nIGlzIHRoZSBzYW1lIGFzIHRoZSBNUElDIGRldmljZSB0cmVlIGJpbmRpbmcgLS0gYmFzZWQgb24KKyAgdGhlIHJlZ2lzdGVyIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNvdXJjZXMgYXJyYXksIHdpdGhvdXQKKyAgcmVnYXJkIHRvIGFueSBzdWJkaXZpc2lvbnMgaW4gY2hpcCBkb2N1bWVudGF0aW9uIHN1Y2ggYXMgImludGVybmFsIgorICBvciAiZXh0ZXJuYWwiIGludGVycnVwdHMuCisKKyAgQWNjZXNzIHRvIG5vbi1TUkMgaW50ZXJydXB0cyBpcyBub3QgaW1wbGVtZW50ZWQgdGhyb3VnaCBJUlEgcm91dGluZyBtZWNoYW5pc21zLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9kZXZpY2VzL3MzOTBfZmxpYy50eHQgYi9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2RldmljZXMvczM5MF9mbGljLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWFkOWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9kZXZpY2VzL3MzOTBfZmxpYy50eHQKQEAgLTAsMCArMSw5NCBAQAorRkxJQyAoZmxvYXRpbmcgaW50ZXJydXB0IGNvbnRyb2xsZXIpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRkxJQyBoYW5kbGVzIGZsb2F0aW5nIChub24gcGVyLWNwdSkgaW50ZXJydXB0cywgaS5lLiBJL08sIHNlcnZpY2UgYW5kIHNvbWUKK21hY2hpbmUgY2hlY2sgaW50ZXJydXB0aW9ucy4gQWxsIGludGVycnVwdHMgYXJlIHN0b3JlZCBpbiBhIHBlci12bSBsaXN0IG9mCitwZW5kaW5nIGludGVycnVwdHMuIEZMSUMgcGVyZm9ybXMgb3BlcmF0aW9ucyBvbiB0aGlzIGxpc3QuCisKK09ubHkgb25lIEZMSUMgaW5zdGFuY2UgbWF5IGJlIGluc3RhbnRpYXRlZC4KKworRkxJQyBwcm92aWRlcyBzdXBwb3J0IHRvCistIGFkZCBpbnRlcnJ1cHRzIChLVk1fREVWX0ZMSUNfRU5RVUVVRSkKKy0gaW5zcGVjdCBjdXJyZW50bHkgcGVuZGluZyBpbnRlcnJ1cHRzIChLVk1fRkxJQ19HRVRfQUxMX0lSUVMpCistIHB1cmdlIGFsbCBwZW5kaW5nIGZsb2F0aW5nIGludGVycnVwdHMgKEtWTV9ERVZfRkxJQ19DTEVBUl9JUlFTKQorLSBlbmFibGUvZGlzYWJsZSBmb3IgdGhlIGd1ZXN0IHRyYW5zcGFyZW50IGFzeW5jIHBhZ2UgZmF1bHRzCistIHJlZ2lzdGVyIGFuZCBtb2RpZnkgYWRhcHRlciBpbnRlcnJ1cHQgc291cmNlcyAoS1ZNX0RFVl9GTElDX0FEQVBURVJfKikKKworR3JvdXBzOgorICBLVk1fREVWX0ZMSUNfRU5RVUVVRQorICAgIFBhc3NlcyBhIGJ1ZmZlciBhbmQgbGVuZ3RoIGludG8gdGhlIGtlcm5lbCB3aGljaCBhcmUgdGhlbiBpbmplY3RlZCBpbnRvCisgICAgdGhlIGxpc3Qgb2YgcGVuZGluZyBpbnRlcnJ1cHRzLgorICAgIGF0dHItPmFkZHIgY29udGFpbnMgdGhlIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBhbmQgYXR0ci0+YXR0ciBjb250YWlucworICAgIHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlci4KKyAgICBUaGUgZm9ybWF0IG9mIHRoZSBkYXRhIHN0cnVjdHVyZSBrdm1fczM5MF9pcnEgYXMgaXQgaXMgY29waWVkIGZyb20gdXNlcnNwYWNlCisgICAgaXMgZGVmaW5lZCBpbiB1c3IvaW5jbHVkZS9saW51eC9rdm0uaC4KKworICBLVk1fREVWX0ZMSUNfR0VUX0FMTF9JUlFTCisgICAgQ29waWVzIGFsbCBmbG9hdGluZyBpbnRlcnJ1cHRzIGludG8gYSBidWZmZXIgcHJvdmlkZWQgYnkgdXNlcnNwYWNlLgorICAgIFdoZW4gdGhlIGJ1ZmZlciBpcyB0b28gc21hbGwgaXQgcmV0dXJucyAtRU5PTUVNLCB3aGljaCBpcyB0aGUgaW5kaWNhdGlvbgorICAgIGZvciB1c2Vyc3BhY2UgdG8gdHJ5IGFnYWluIHdpdGggYSBiaWdnZXIgYnVmZmVyLgorICAgIC1FTk9CVUZTIGlzIHJldHVybmVkIHdoZW4gdGhlIGFsbG9jYXRpb24gb2YgYSBrZXJuZWxzcGFjZSBidWZmZXIgaGFzCisgICAgZmFpbGVkLgorICAgIC1FRkFVTFQgaXMgcmV0dXJuZWQgd2hlbiBjb3B5aW5nIGRhdGEgdG8gdXNlcnNwYWNlIGZhaWxlZC4KKyAgICBBbGwgaW50ZXJydXB0cyByZW1haW4gcGVuZGluZywgaS5lLiBhcmUgbm90IGRlbGV0ZWQgZnJvbSB0aGUgbGlzdCBvZgorICAgIGN1cnJlbnRseSBwZW5kaW5nIGludGVycnVwdHMuCisgICAgYXR0ci0+YWRkciBjb250YWlucyB0aGUgdXNlcnNwYWNlIGFkZHJlc3Mgb2YgdGhlIGJ1ZmZlciBpbnRvIHdoaWNoIGFsbAorICAgIGludGVycnVwdCBkYXRhIHdpbGwgYmUgY29waWVkLgorICAgIGF0dHItPmF0dHIgY29udGFpbnMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBpbiBieXRlcy4KKworICBLVk1fREVWX0ZMSUNfQ0xFQVJfSVJRUworICAgIFNpbXBseSBkZWxldGVzIGFsbCBlbGVtZW50cyBmcm9tIHRoZSBsaXN0IG9mIGN1cnJlbnRseSBwZW5kaW5nIGZsb2F0aW5nCisgICAgaW50ZXJydXB0cy4gIE5vIGludGVycnVwdHMgYXJlIGluamVjdGVkIGludG8gdGhlIGd1ZXN0LgorCisgIEtWTV9ERVZfRkxJQ19BUEZfRU5BQkxFCisgICAgRW5hYmxlcyBhc3luYyBwYWdlIGZhdWx0cyBmb3IgdGhlIGd1ZXN0LiBTbyBpbiBjYXNlIG9mIGEgbWFqb3IgcGFnZSBmYXVsdAorICAgIHRoZSBob3N0IGlzIGFsbG93ZWQgdG8gaGFuZGxlIHRoaXMgYXN5bmMgYW5kIGNvbnRpbnVlcyB0aGUgZ3Vlc3QuCisKKyAgS1ZNX0RFVl9GTElDX0FQRl9ESVNBQkxFX1dBSVQKKyAgICBEaXNhYmxlcyBhc3luYyBwYWdlIGZhdWx0cyBmb3IgdGhlIGd1ZXN0IGFuZCB3YWl0cyB1bnRpbCBhbHJlYWR5IHBlbmRpbmcKKyAgICBhc3luYyBwYWdlIGZhdWx0cyBhcmUgZG9uZS4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gdHJpZ2dlciBhIGNvbXBsZXRpb24gaW50ZXJydXB0CisgICAgZm9yIGV2ZXJ5IGluaXQgaW50ZXJydXB0IGJlZm9yZSBtaWdyYXRpbmcgdGhlIGludGVycnVwdCBsaXN0LgorCisgIEtWTV9ERVZfRkxJQ19BREFQVEVSX1JFR0lTVEVSCisgICAgUmVnaXN0ZXIgYW4gSS9PIGFkYXB0ZXIgaW50ZXJydXB0IHNvdXJjZS4gVGFrZXMgYSBrdm1fczM5MF9pb19hZGFwdGVyCisgICAgZGVzY3JpYmluZyB0aGUgYWRhcHRlciB0byByZWdpc3RlcjoKKworc3RydWN0IGt2bV9zMzkwX2lvX2FkYXB0ZXIgeworCV9fdTMyIGlkOworCV9fdTggaXNjOworCV9fdTggbWFza2FibGU7CisJX191OCBzd2FwOworCV9fdTggcGFkOworfTsKKworICAgaWQgY29udGFpbnMgdGhlIHVuaXF1ZSBpZCBmb3IgdGhlIGFkYXB0ZXIsIGlzYyB0aGUgSS9PIGludGVycnVwdGlvbiBzdWJjbGFzcworICAgdG8gdXNlLCBtYXNrYWJsZSB3aGV0aGVyIHRoaXMgYWRhcHRlciBtYXkgYmUgbWFza2VkIChpbnRlcnJ1cHRzIHR1cm5lZCBvZmYpCisgICBhbmQgc3dhcCB3aGV0aGVyIHRoZSBpbmRpY2F0b3JzIG5lZWQgdG8gYmUgYnl0ZSBzd2FwcGVkLgorCisKKyAgS1ZNX0RFVl9GTElDX0FEQVBURVJfTU9ESUZZCisgICAgTW9kaWZpZXMgYXR0cmlidXRlcyBvZiBhbiBleGlzdGluZyBJL08gYWRhcHRlciBpbnRlcnJ1cHQgc291cmNlLiBUYWtlcworICAgIGEga3ZtX3MzOTBfaW9fYWRhcHRlcl9yZXEgc3BlY2lmaXlpbmcgdGhlIGFkYXB0ZXIgYW5kIHRoZSBvcGVyYXRpb246CisKK3N0cnVjdCBrdm1fczM5MF9pb19hZGFwdGVyX3JlcSB7CisJX191MzIgaWQ7CisJX191OCB0eXBlOworCV9fdTggbWFzazsKKwlfX3UxNiBwYWQwOworCV9fdTY0IGFkZHI7Cit9OworCisgICAgaWQgc3BlY2lmaWVzIHRoZSBhZGFwdGVyIGFuZCB0eXBlIHRoZSBvcGVyYXRpb24uIFRoZSBzdXBwb3J0ZWQgb3BlcmF0aW9ucworICAgIGFyZToKKworICAgIEtWTV9TMzkwX0lPX0FEQVBURVJfTUFTSworICAgICAgbWFzayBvciB1bm1hc2sgdGhlIGFkYXB0ZXIsIGFzIHNwZWNpZmllZCBpbiBtYXNrCisKKyAgICBLVk1fUzM5MF9JT19BREFQVEVSX01BUAorICAgICAgcGVyZm9ybSBhIGdtYXAgdHJhbnNsYXRpb24gZm9yIHRoZSBndWVzdCBhZGRyZXNzIHByb3ZpZGVkIGluIGFkZHIsCisgICAgICBwaW4gYSB1c2Vyc3BhY2UgcGFnZSBmb3IgdGhlIHRyYW5zbGF0ZWQgYWRkcmVzcyBhbmQgYWRkIGl0IHRvIHRoZQorICAgICAgbGlzdCBvZiBtYXBwaW5ncworCisgICAgS1ZNX1MzOTBfSU9fQURBUFRFUl9VTk1BUAorICAgICAgcmVsZWFzZSBhIHVzZXJzcGFjZSBwYWdlIGZvciB0aGUgdHJhbnNsYXRlZCBhZGRyZXNzIHNwZWNpZmllZCBpbiBhZGRyCisgICAgICBmcm9tIHRoZSBsaXN0IG9mIG1hcHBpbmdzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2RldmljZXMvdmZpby50eHQgYi9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2RldmljZXMvdmZpby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY1MTc0MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vZGV2aWNlcy92ZmlvLnR4dApAQCAtMCwwICsxLDIyIEBACitWRklPIHZpcnR1YWwgZGV2aWNlCis9PT09PT09PT09PT09PT09PT09CisKK0RldmljZSB0eXBlcyBzdXBwb3J0ZWQ6CisgIEtWTV9ERVZfVFlQRV9WRklPCisKK09ubHkgb25lIFZGSU8gaW5zdGFuY2UgbWF5IGJlIGNyZWF0ZWQgcGVyIFZNLiAgVGhlIGNyZWF0ZWQgZGV2aWNlCit0cmFja3MgVkZJTyBncm91cHMgaW4gdXNlIGJ5IHRoZSBWTSBhbmQgZmVhdHVyZXMgb2YgdGhvc2UgZ3JvdXBzCitpbXBvcnRhbnQgdG8gdGhlIGNvcnJlY3RuZXNzIGFuZCBhY2NlbGVyYXRpb24gb2YgdGhlIFZNLiAgQXMgZ3JvdXBzCithcmUgZW5hYmxlZCBhbmQgZGlzYWJsZWQgZm9yIHVzZSBieSB0aGUgVk0sIEtWTSBzaG91bGQgYmUgdXBkYXRlZAorYWJvdXQgdGhlaXIgcHJlc2VuY2UuICBXaGVuIHJlZ2lzdGVyZWQgd2l0aCBLVk0sIGEgcmVmZXJlbmNlIHRvIHRoZQorVkZJTy1ncm91cCBpcyBoZWxkIGJ5IEtWTS4KKworR3JvdXBzOgorICBLVk1fREVWX1ZGSU9fR1JPVVAKKworS1ZNX0RFVl9WRklPX0dST1VQIGF0dHJpYnV0ZXM6CisgIEtWTV9ERVZfVkZJT19HUk9VUF9BREQ6IEFkZCBhIFZGSU8gZ3JvdXAgdG8gVkZJTy1LVk0gZGV2aWNlIHRyYWNraW5nCisgIEtWTV9ERVZfVkZJT19HUk9VUF9ERUw6IFJlbW92ZSBhIFZGSU8gZ3JvdXAgZnJvbSBWRklPLUtWTSBkZXZpY2UgdHJhY2tpbmcKKworRm9yIGVhY2gsIGt2bV9kZXZpY2VfYXR0ci5hZGRyIHBvaW50cyB0byBhbiBpbnQzMl90IGZpbGUgZGVzY3JpcHRvcgorZm9yIHRoZSBWRklPIGdyb3VwLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9kZXZpY2VzL3ZtLnR4dCBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vZGV2aWNlcy92bS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQwOWQxZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vZGV2aWNlcy92bS50eHQKQEAgLTAsMCArMSw4NSBAQAorR2VuZXJpYyB2bSBpbnRlcmZhY2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgdmlydHVhbCBtYWNoaW5lICJkZXZpY2UiIGFsc28gYWNjZXB0cyB0aGUgaW9jdGxzIEtWTV9TRVRfREVWSUNFX0FUVFIsCitLVk1fR0VUX0RFVklDRV9BVFRSLCBhbmQgS1ZNX0hBU19ERVZJQ0VfQVRUUi4gVGhlIGludGVyZmFjZSB1c2VzIHRoZSBzYW1lCitzdHJ1Y3Qga3ZtX2RldmljZV9hdHRyIGFzIG90aGVyIGRldmljZXMsIGJ1dCB0YXJnZXRzIFZNLXdpZGUgc2V0dGluZ3MKK2FuZCBjb250cm9scy4KKworVGhlIGdyb3VwcyBhbmQgYXR0cmlidXRlcyBwZXIgdmlydHVhbCBtYWNoaW5lLCBpZiBhbnksIGFyZSBhcmNoaXRlY3R1cmUKK3NwZWNpZmljLgorCisxLiBHUk9VUDogS1ZNX1MzOTBfVk1fTUVNX0NUUkwKK0FyY2hpdGVjdHVyZXM6IHMzOTAKKworMS4xLiBBVFRSSUJVVEU6IEtWTV9TMzkwX1ZNX01FTV9FTkFCTEVfQ01NQQorUGFyYW1ldGVyczogbm9uZQorUmV0dXJuczogLUVCVVNZIGlmIGEgdmNwdSBpcyBhbHJlYWR5IGRlZmluZWQsIG90aGVyd2lzZSAwCisKK0VuYWJsZXMgQ29sbGFib3JhdGl2ZSBNZW1vcnkgTWFuYWdlbWVudCBBc3Npc3QgKENNTUEpIGZvciB0aGUgdmlydHVhbCBtYWNoaW5lLgorCisxLjIuIEFUVFJJQlVURTogS1ZNX1MzOTBfVk1fTUVNX0NMUl9DTU1BCitQYXJhbWV0ZXJzOiBub25lCitSZXR1cm5zOiAwCisKK0NsZWFyIHRoZSBDTU1BIHN0YXR1cyBmb3IgYWxsIGd1ZXN0IHBhZ2VzLCBzbyBhbnkgcGFnZXMgdGhlIGd1ZXN0IG1hcmtlZAorYXMgdW51c2VkIGFyZSBhZ2FpbiB1c2VkIGFueSBtYXkgbm90IGJlIHJlY2xhaW1lZCBieSB0aGUgaG9zdC4KKworMS4zLiBBVFRSSUJVVEUgS1ZNX1MzOTBfVk1fTUVNX0xJTUlUX1NJWkUKK1BhcmFtZXRlcnM6IGluIGF0dHItPmFkZHIgdGhlIGFkZHJlc3MgZm9yIHRoZSBuZXcgbGltaXQgb2YgZ3Vlc3QgbWVtb3J5CitSZXR1cm5zOiAtRUZBVUxUIGlmIHRoZSBnaXZlbiBhZGRyZXNzIGlzIG5vdCBhY2Nlc3NpYmxlCisgICAgICAgICAtRUlOVkFMIGlmIHRoZSB2aXJ0dWFsIG1hY2hpbmUgaXMgb2YgdHlwZSBVQ09OVFJPTAorICAgICAgICAgLUUyQklHIGlmIHRoZSBnaXZlbiBndWVzdCBtZW1vcnkgaXMgdG8gYmlnIGZvciB0aGF0IG1hY2hpbmUKKyAgICAgICAgIC1FQlVTWSBpZiBhIHZjcHUgaXMgYWxyZWFkeSBkZWZpbmVkCisgICAgICAgICAtRU5PTUVNIGlmIG5vdCBlbm91Z2ggbWVtb3J5IGlzIGF2YWlsYWJsZSBmb3IgYSBuZXcgc2hhZG93IGd1ZXN0IG1hcHBpbmcKKyAgICAgICAgICAwIG90aGVyd2lzZQorCitBbGxvd3MgdXNlcnNwYWNlIHRvIHF1ZXJ5IHRoZSBhY3R1YWwgbGltaXQgYW5kIHNldCBhIG5ldyBsaW1pdCBmb3IKK3RoZSBtYXhpbXVtIGd1ZXN0IG1lbW9yeSBzaXplLiBUaGUgbGltaXQgd2lsbCBiZSByb3VuZGVkIHVwIHRvCisyMDQ4IE1CLCA0MDk2IEdCLCA4MTkyIFRCIHJlc3BlY3RpdmVseSwgYXMgdGhpcyBsaW1pdCBpcyBnb3Zlcm5lZCBieQordGhlIG51bWJlciBvZiBwYWdlIHRhYmxlIGxldmVscy4KKworMi4gR1JPVVA6IEtWTV9TMzkwX1ZNX0NQVV9NT0RFTAorQXJjaGl0ZWN0dXJlczogczM5MAorCisyLjEuIEFUVFJJQlVURTogS1ZNX1MzOTBfVk1fQ1BVX01BQ0hJTkUgKHIvbykKKworQWxsb3dzIHVzZXIgc3BhY2UgdG8gcmV0cmlldmUgbWFjaGluZSBhbmQga3ZtIHNwZWNpZmljIGNwdSByZWxhdGVkIGluZm9ybWF0aW9uOgorCitzdHJ1Y3Qga3ZtX3MzOTBfdm1fY3B1X21hY2hpbmUgeworICAgICAgIF9fdTY0IGNwdWlkOyAgICAgICAgICAgIyBDUFVJRCBvZiBob3N0CisgICAgICAgX191MzIgaWJjOyAgICAgICAgICAgICAjIElCQyBsZXZlbCByYW5nZSBvZmZlcmVkIGJ5IGhvc3QKKyAgICAgICBfX3U4ICBwYWRbNF07CisgICAgICAgX191NjQgZmFjX21hc2tbMjU2XTsgICAjIHNldCBvZiBjcHUgZmFjaWxpdGllcyBlbmFibGVkIGJ5IEtWTQorICAgICAgIF9fdTY0IGZhY19saXN0WzI1Nl07ICAgIyBzZXQgb2YgY3B1IGZhY2lsaXRpZXMgb2ZmZXJlZCBieSBob3N0Cit9CisKK1BhcmFtZXRlcnM6IGFkZHJlc3Mgb2YgYnVmZmVyIHRvIHN0b3JlIHRoZSBtYWNoaW5lIHJlbGF0ZWQgY3B1IGRhdGEKKyAgICAgICAgICAgIG9mIHR5cGUgc3RydWN0IGt2bV9zMzkwX3ZtX2NwdV9tYWNoaW5lKgorUmV0dXJuczogICAgLUVGQVVMVCBpZiB0aGUgZ2l2ZW4gYWRkcmVzcyBpcyBub3QgYWNjZXNzaWJsZSBmcm9tIGtlcm5lbCBzcGFjZQorCSAgICAtRU5PTUVNIGlmIG5vdCBlbm91Z2ggbWVtb3J5IGlzIGF2YWlsYWJsZSB0byBwcm9jZXNzIHRoZSBpb2N0bAorCSAgICAwIGluIGNhc2Ugb2Ygc3VjY2VzcworCisyLjIuIEFUVFJJQlVURTogS1ZNX1MzOTBfVk1fQ1BVX1BST0NFU1NPUiAoci93KQorCitBbGxvd3MgdXNlciBzcGFjZSB0byByZXRyaWV2ZSBvciByZXF1ZXN0IHRvIGNoYW5nZSBjcHUgcmVsYXRlZCBpbmZvcm1hdGlvbiBmb3IgYSB2Y3B1OgorCitzdHJ1Y3Qga3ZtX3MzOTBfdm1fY3B1X3Byb2Nlc3NvciB7CisgICAgICAgX191NjQgY3B1aWQ7ICAgICAgICAgICAjIENQVUlEIGN1cnJlbnRseSAodG8gYmUpIHVzZWQgYnkgdGhpcyB2Y3B1CisgICAgICAgX191MTYgaWJjOyAgICAgICAgICAgICAjIElCQyBsZXZlbCBjdXJyZW50bHkgKHRvIGJlKSB1c2VkIGJ5IHRoaXMgdmNwdQorICAgICAgIF9fdTggIHBhZFs2XTsKKyAgICAgICBfX3U2NCBmYWNfbGlzdFsyNTZdOyAgICMgc2V0IG9mIGNwdSBmYWNpbGl0aWVzIGN1cnJlbnRseSAodG8gYmUpIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYnkgdGhpcyB2Y3B1Cit9CisKK0tWTSBkb2VzIG5vdCBlbmZvcmNlIG9yIGxpbWl0IHRoZSBjcHUgbW9kZWwgZGF0YSBpbiBhbnkgZm9ybS4gVGFrZSB0aGUgaW5mb3JtYXRpb24KK3JldHJpZXZlZCBieSBtZWFucyBvZiBLVk1fUzM5MF9WTV9DUFVfTUFDSElORSBhcyBoaW50IGZvciByZWFzb25hYmxlIGNvbmZpZ3VyYXRpb24KK3NldHVwcy4gSW5zdHJ1Y3Rpb24gaW50ZXJjZXB0aW9ucyB0cmlnZ2VyZWQgYnkgYWRkaXRpb25hbGx5IHNldCBmYWNpbGl0eSBiaXRzIHRoYXQKK2FyZSBub3QgaGFuZGxlZCBieSBLVk0gbmVlZCB0byBieSBpbWxlbWVudGVkIGluIHRoZSBWTSBkcml2ZXIgY29kZS4KKworUGFyYW1ldGVyczogYWRkcmVzcyBvZiBidWZmZXIgdG8gc3RvcmUvc2V0IHRoZSBwcm9jZXNzb3IgcmVsYXRlZCBjcHUKKwkgICAgZGF0YSBvZiB0eXBlIHN0cnVjdCBrdm1fczM5MF92bV9jcHVfcHJvY2Vzc29yKi4KK1JldHVybnM6ICAgIC1FQlVTWSBpbiBjYXNlIDEgb3IgbW9yZSB2Y3B1cyBhcmUgYWxyZWFkeSBhY3RpdmF0ZWQgKG9ubHkgaW4gd3JpdGUgY2FzZSkKKwkgICAgLUVGQVVMVCBpZiB0aGUgZ2l2ZW4gYWRkcmVzcyBpcyBub3QgYWNjZXNzaWJsZSBmcm9tIGtlcm5lbCBzcGFjZQorCSAgICAtRU5PTUVNIGlmIG5vdCBlbm91Z2ggbWVtb3J5IGlzIGF2YWlsYWJsZSB0byBwcm9jZXNzIHRoZSBpb2N0bAorCSAgICAwIGluIGNhc2Ugb2Ygc3VjY2VzcwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9kZXZpY2VzL3hpY3MudHh0IGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9kZXZpY2VzL3hpY3MudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyODY0OTMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2RldmljZXMveGljcy50eHQKQEAgLTAsMCArMSw2NiBAQAorWElDUyBpbnRlcnJ1cHQgY29udHJvbGxlcgorCitEZXZpY2UgdHlwZSBzdXBwb3J0ZWQ6IEtWTV9ERVZfVFlQRV9YSUNTCisKK0dyb3VwczoKKyAgS1ZNX0RFVl9YSUNTX1NPVVJDRVMKKyAgQXR0cmlidXRlczogT25lIHBlciBpbnRlcnJ1cHQgc291cmNlLCBpbmRleGVkIGJ5IHRoZSBzb3VyY2UgbnVtYmVyLgorCitUaGlzIGRldmljZSBlbXVsYXRlcyB0aGUgWElDUyAoZVh0ZXJuYWwgSW50ZXJydXB0IENvbnRyb2xsZXIKK1NwZWNpZmljYXRpb24pIGRlZmluZWQgaW4gUEFQUi4gIFRoZSBYSUNTIGhhcyBhIHNldCBvZiBpbnRlcnJ1cHQKK3NvdXJjZXMsIGVhY2ggaWRlbnRpZmllZCBieSBhIDIwLWJpdCBzb3VyY2UgbnVtYmVyLCBhbmQgYSBzZXQgb2YKK0ludGVycnVwdCBDb250cm9sIFByZXNlbnRhdGlvbiAoSUNQKSBlbnRpdGllcywgYWxzbyBjYWxsZWQgInNlcnZlcnMiLAorZWFjaCBhc3NvY2lhdGVkIHdpdGggYSB2aXJ0dWFsIENQVS4KKworVGhlIElDUCBlbnRpdGllcyBhcmUgY3JlYXRlZCBieSBlbmFibGluZyB0aGUgS1ZNX0NBUF9JUlFfQVJDSAorY2FwYWJpbGl0eSBmb3IgZWFjaCB2Y3B1LCBzcGVjaWZ5aW5nIEtWTV9DQVBfSVJRX1hJQ1MgaW4gYXJnc1swXSBhbmQKK3RoZSBpbnRlcnJ1cHQgc2VydmVyIG51bWJlciAoaS5lLiB0aGUgdmNwdSBudW1iZXIgZnJvbSB0aGUgWElDUydzCitwb2ludCBvZiB2aWV3KSBpbiBhcmdzWzFdIG9mIHRoZSBrdm1fZW5hYmxlX2NhcCBzdHJ1Y3QuICBFYWNoIElDUCBoYXMKKzY0IGJpdHMgb2Ygc3RhdGUgd2hpY2ggY2FuIGJlIHJlYWQgYW5kIHdyaXR0ZW4gdXNpbmcgdGhlCitLVk1fR0VUX09ORV9SRUcgYW5kIEtWTV9TRVRfT05FX1JFRyBpb2N0bHMgb24gdGhlIHZjcHUuICBUaGUgNjQgYml0CitzdGF0ZSB3b3JkIGhhcyB0aGUgZm9sbG93aW5nIGJpdGZpZWxkcywgc3RhcnRpbmcgYXQgdGhlCitsZWFzdC1zaWduaWZpY2FudCBlbmQgb2YgdGhlIHdvcmQ6CisKKyogVW51c2VkLCAxNiBiaXRzCisKKyogUGVuZGluZyBpbnRlcnJ1cHQgcHJpb3JpdHksIDggYml0cworICBaZXJvIGlzIHRoZSBoaWdoZXN0IHByaW9yaXR5LCAyNTUgbWVhbnMgbm8gaW50ZXJydXB0IGlzIHBlbmRpbmcuCisKKyogUGVuZGluZyBJUEkgKGludGVyLXByb2Nlc3NvciBpbnRlcnJ1cHQpIHByaW9yaXR5LCA4IGJpdHMKKyAgWmVybyBpcyB0aGUgaGlnaGVzdCBwcmlvcml0eSwgMjU1IG1lYW5zIG5vIElQSSBpcyBwZW5kaW5nLgorCisqIFBlbmRpbmcgaW50ZXJydXB0IHNvdXJjZSBudW1iZXIsIDI0IGJpdHMKKyAgWmVybyBtZWFucyBubyBpbnRlcnJ1cHQgcGVuZGluZywgMiBtZWFucyBhbiBJUEkgaXMgcGVuZGluZworCisqIEN1cnJlbnQgcHJvY2Vzc29yIHByaW9yaXR5LCA4IGJpdHMKKyAgWmVybyBpcyB0aGUgaGlnaGVzdCBwcmlvcml0eSwgbWVhbmluZyBubyBpbnRlcnJ1cHRzIGNhbiBiZQorICBkZWxpdmVyZWQsIGFuZCAyNTUgaXMgdGhlIGxvd2VzdCBwcmlvcml0eS4KKworRWFjaCBzb3VyY2UgaGFzIDY0IGJpdHMgb2Ygc3RhdGUgdGhhdCBjYW4gYmUgcmVhZCBhbmQgd3JpdHRlbiB1c2luZwordGhlIEtWTV9HRVRfREVWSUNFX0FUVFIgYW5kIEtWTV9TRVRfREVWSUNFX0FUVFIgaW9jdGxzLCBzcGVjaWZ5aW5nIHRoZQorS1ZNX0RFVl9YSUNTX1NPVVJDRVMgYXR0cmlidXRlIGdyb3VwLCB3aXRoIHRoZSBhdHRyaWJ1dGUgbnVtYmVyIGJlaW5nCit0aGUgaW50ZXJydXB0IHNvdXJjZSBudW1iZXIuICBUaGUgNjQgYml0IHN0YXRlIHdvcmQgaGFzIHRoZSBmb2xsb3dpbmcKK2JpdGZpZWxkcywgc3RhcnRpbmcgZnJvbSB0aGUgbGVhc3Qtc2lnbmlmaWNhbnQgZW5kIG9mIHRoZSB3b3JkOgorCisqIERlc3RpbmF0aW9uIChzZXJ2ZXIgbnVtYmVyKSwgMzIgYml0cworICBUaGlzIHNwZWNpZmllcyB3aGVyZSB0aGUgaW50ZXJydXB0IHNob3VsZCBiZSBzZW50LCBhbmQgaXMgdGhlCisgIGludGVycnVwdCBzZXJ2ZXIgbnVtYmVyIHNwZWNpZmllZCBmb3IgdGhlIGRlc3RpbmF0aW9uIHZjcHUuCisKKyogUHJpb3JpdHksIDggYml0cworICBUaGlzIGlzIHRoZSBwcmlvcml0eSBzcGVjaWZpZWQgZm9yIHRoaXMgaW50ZXJydXB0IHNvdXJjZSwgd2hlcmUgMCBpcworICB0aGUgaGlnaGVzdCBwcmlvcml0eSBhbmQgMjU1IGlzIHRoZSBsb3dlc3QuICBBbiBpbnRlcnJ1cHQgd2l0aCBhCisgIHByaW9yaXR5IG9mIDI1NSB3aWxsIG5ldmVyIGJlIGRlbGl2ZXJlZC4KKworKiBMZXZlbCBzZW5zaXRpdmUgZmxhZywgMSBiaXQKKyAgVGhpcyBiaXQgaXMgMSBmb3IgYSBsZXZlbC1zZW5zaXRpdmUgaW50ZXJydXB0IHNvdXJjZSwgb3IgMCBmb3IKKyAgZWRnZS1zZW5zaXRpdmUgKG9yIE1TSSkuCisKKyogTWFza2VkIGZsYWcsIDEgYml0CisgIFRoaXMgYml0IGlzIHNldCB0byAxIGlmIHRoZSBpbnRlcnJ1cHQgaXMgbWFza2VkIChjYW5ub3QgYmUgZGVsaXZlcmVkCisgIHJlZ2FyZGxlc3Mgb2YgaXRzIHByaW9yaXR5KSwgZm9yIGV4YW1wbGUgYnkgdGhlIGlibSxpbnQtb2ZmIFJUQVMKKyAgY2FsbCwgb3IgMCBpZiBpdCBpcyBub3QgbWFza2VkLgorCisqIFBlbmRpbmcgZmxhZywgMSBiaXQKKyAgVGhpcyBiaXQgaXMgMSBpZiB0aGUgc291cmNlIGhhcyBhIHBlbmRpbmcgaW50ZXJydXB0LCBvdGhlcndpc2UgMC4KKworT25seSBvbmUgWElDUyBpbnN0YW5jZSBtYXkgYmUgY3JlYXRlZCBwZXIgVk0uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2h5cGVyY2FsbHMudHh0IGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9oeXBlcmNhbGxzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGQwNDBlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9oeXBlcmNhbGxzLnR4dApAQCAtMCwwICsxLDgzIEBACitMaW51eCBLVk0gSHlwZXJjYWxsOgorPT09PT09PT09PT09PT09PT09PQorWDg2OgorIEtWTSBIeXBlcmNhbGxzIGhhdmUgYSB0aHJlZS1ieXRlIHNlcXVlbmNlIG9mIGVpdGhlciB0aGUgdm1jYWxsIG9yIHRoZSB2bW1jYWxsCisgaW5zdHJ1Y3Rpb24uIFRoZSBoeXBlcnZpc29yIGNhbiByZXBsYWNlIGl0IHdpdGggaW5zdHJ1Y3Rpb25zIHRoYXQgYXJlCisgZ3VhcmFudGVlZCB0byBiZSBzdXBwb3J0ZWQuCisKKyBVcCB0byBmb3VyIGFyZ3VtZW50cyBtYXkgYmUgcGFzc2VkIGluIHJieCwgcmN4LCByZHgsIGFuZCByc2kgcmVzcGVjdGl2ZWx5LgorIFRoZSBoeXBlcmNhbGwgbnVtYmVyIHNob3VsZCBiZSBwbGFjZWQgaW4gcmF4IGFuZCB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUKKyBwbGFjZWQgaW4gcmF4LiAgTm8gb3RoZXIgcmVnaXN0ZXJzIHdpbGwgYmUgY2xvYmJlcmVkIHVubGVzcyBleHBsaWNpdGx5IHN0YXRlZAorIGJ5IHRoZSBwYXJ0aWN1bGFyIGh5cGVyY2FsbC4KKworUzM5MDoKKyAgUjItUjcgYXJlIHVzZWQgZm9yIHBhcmFtZXRlcnMgMS02LiBJbiBhZGRpdGlvbiwgUjEgaXMgdXNlZCBmb3IgaHlwZXJjYWxsCisgIG51bWJlci4gVGhlIHJldHVybiB2YWx1ZSBpcyB3cml0dGVuIHRvIFIyLgorCisgIFMzOTAgdXNlcyBkaWFnbm9zZSBpbnN0cnVjdGlvbiBhcyBoeXBlcmNhbGwgKDB4NTAwKSBhbG9uZyB3aXRoIGh5cGVyY2FsbAorICBudW1iZXIgaW4gUjEuCisKKyAgRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gb24gdGhlIFMzOTAgZGlhZ25vc2UgY2FsbCBhcyBzdXBwb3J0ZWQgYnkgS1ZNLAorICByZWZlciB0byBEb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL3MzOTAtZGlhZy50eHQuCisKKyBQb3dlclBDOgorICBJdCB1c2VzIFIzLVIxMCBhbmQgaHlwZXJjYWxsIG51bWJlciBpbiBSMTEuIFI0LVIxMSBhcmUgdXNlZCBhcyBvdXRwdXQgcmVnaXN0ZXJzLgorICBSZXR1cm4gdmFsdWUgaXMgcGxhY2VkIGluIFIzLgorCisgIEtWTSBoeXBlcmNhbGxzIHVzZXMgNCBieXRlIG9wY29kZSwgdGhhdCBhcmUgcGF0Y2hlZCB3aXRoICdoeXBlcmNhbGwtaW5zdHJ1Y3Rpb25zJworICBwcm9wZXJ0eSBpbnNpZGUgdGhlIGRldmljZSB0cmVlJ3MgL2h5cGVydmlzb3Igbm9kZS4KKyAgRm9yIG1vcmUgaW5mb3JtYXRpb24gcmVmZXIgdG8gRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9wcGMtcHYudHh0CisKK0tWTSBIeXBlcmNhbGxzIERvY3VtZW50YXRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PQorVGhlIHRlbXBsYXRlIGZvciBlYWNoIGh5cGVyY2FsbCBpczoKKzEuIEh5cGVyY2FsbCBuYW1lLgorMi4gQXJjaGl0ZWN0dXJlKHMpCiszLiBTdGF0dXMgKGRlcHJlY2F0ZWQsIG9ic29sZXRlLCBhY3RpdmUpCis0LiBQdXJwb3NlCisKKzEuIEtWTV9IQ19WQVBJQ19QT0xMX0lSUQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBcmNoaXRlY3R1cmU6IHg4NgorU3RhdHVzOiBhY3RpdmUKK1B1cnBvc2U6IFRyaWdnZXIgZ3Vlc3QgZXhpdCBzbyB0aGF0IHRoZSBob3N0IGNhbiBjaGVjayBmb3IgcGVuZGluZworaW50ZXJydXB0cyBvbiByZWVudHJ5LgorCisyLiBLVk1fSENfTU1VX09QCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FyY2hpdGVjdHVyZTogeDg2CitTdGF0dXM6IGRlcHJlY2F0ZWQuCitQdXJwb3NlOiBTdXBwb3J0IE1NVSBvcGVyYXRpb25zIHN1Y2ggYXMgd3JpdGluZyB0byBQVEUsCitmbHVzaGluZyBUTEIsIHJlbGVhc2UgUFQuCisKKzMuIEtWTV9IQ19GRUFUVVJFUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBcmNoaXRlY3R1cmU6IFBQQworU3RhdHVzOiBhY3RpdmUKK1B1cnBvc2U6IEV4cG9zZSBoeXBlcmNhbGwgYXZhaWxhYmlsaXR5IHRvIHRoZSBndWVzdC4gT24geDg2IHBsYXRmb3JtcywgY3B1aWQKK3VzZWQgdG8gZW51bWVyYXRlIHdoaWNoIGh5cGVyY2FsbHMgYXJlIGF2YWlsYWJsZS4gT24gUFBDLCBlaXRoZXIgZGV2aWNlIHRyZWUKK2Jhc2VkIGxvb2t1cCAoIHdoaWNoIGlzIGFsc28gd2hhdCBFUEFQUiBkaWN0YXRlcykgT1IgS1ZNIHNwZWNpZmljIGVudW1lcmF0aW9uCittZWNoYW5pc20gKHdoaWNoIGlzIHRoaXMgaHlwZXJjYWxsKSBjYW4gYmUgdXNlZC4KKworNC4gS1ZNX0hDX1BQQ19NQVBfTUFHSUNfUEFHRQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBcmNoaXRlY3R1cmU6IFBQQworU3RhdHVzOiBhY3RpdmUKK1B1cnBvc2U6IFRvIGVuYWJsZSBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIGh5cGVydmlzb3IgYW5kIGd1ZXN0IHRoZXJlIGlzIGEKK3NoYXJlZCBwYWdlIHRoYXQgY29udGFpbnMgcGFydHMgb2Ygc3VwZXJ2aXNvciB2aXNpYmxlIHJlZ2lzdGVyIHN0YXRlLgorVGhlIGd1ZXN0IGNhbiBtYXAgdGhpcyBzaGFyZWQgcGFnZSB0byBhY2Nlc3MgaXRzIHN1cGVydmlzb3IgcmVnaXN0ZXIgdGhyb3VnaAorbWVtb3J5IHVzaW5nIHRoaXMgaHlwZXJjYWxsLgorCis1LiBLVk1fSENfS0lDS19DUFUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQXJjaGl0ZWN0dXJlOiB4ODYKK1N0YXR1czogYWN0aXZlCitQdXJwb3NlOiBIeXBlcmNhbGwgdXNlZCB0byB3YWtldXAgYSB2Y3B1IGZyb20gSExUIHN0YXRlCitVc2FnZSBleGFtcGxlIDogQSB2Y3B1IG9mIGEgcGFyYXZpcnR1YWxpemVkIGd1ZXN0IHRoYXQgaXMgYnVzeXdhaXRpbmcgaW4gZ3Vlc3QKK2tlcm5lbCBtb2RlIGZvciBhbiBldmVudCB0byBvY2N1ciAoZXg6IGEgc3BpbmxvY2sgdG8gYmVjb21lIGF2YWlsYWJsZSkgY2FuCitleGVjdXRlIEhMVCBpbnN0cnVjdGlvbiBvbmNlIGl0IGhhcyBidXN5LXdhaXRlZCBmb3IgbW9yZSB0aGFuIGEgdGhyZXNob2xkCit0aW1lLWludGVydmFsLiBFeGVjdXRpb24gb2YgSExUIGluc3RydWN0aW9uIHdvdWxkIGNhdXNlIHRoZSBoeXBlcnZpc29yIHRvIHB1dAordGhlIHZjcHUgdG8gc2xlZXAgdW50aWwgb2NjdXJyZW5jZSBvZiBhbiBhcHByb3ByaWF0ZSBldmVudC4gQW5vdGhlciB2Y3B1IG9mIHRoZQorc2FtZSBndWVzdCBjYW4gd2FrZXVwIHRoZSBzbGVlcGluZyB2Y3B1IGJ5IGlzc3VpbmcgS1ZNX0hDX0tJQ0tfQ1BVIGh5cGVyY2FsbCwKK3NwZWNpZnlpbmcgQVBJQyBJRCAoYTEpIG9mIHRoZSB2Y3B1IHRvIGJlIHdva2VuIHVwLiBBbiBhZGRpdGlvbmFsIGFyZ3VtZW50IChhMCkKK2lzIHVzZWQgaW4gdGhlIGh5cGVyY2FsbCBmb3IgZnV0dXJlIHVzZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vbG9ja2luZy50eHQgYi9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2xvY2tpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5Zjk0YTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2xvY2tpbmcudHh0CkBAIC0wLDAgKzEsMTgwIEBACitLVk0gTG9jayBPdmVydmlldworPT09PT09PT09PT09PT09PT0KKworMS4gQWNxdWlzaXRpb24gT3JkZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKHRvIGJlIHdyaXR0ZW4pCisKKzI6IEV4Y2VwdGlvbgorLS0tLS0tLS0tLS0tCisKK0Zhc3QgcGFnZSBmYXVsdDoKKworRmFzdCBwYWdlIGZhdWx0IGlzIHRoZSBmYXN0IHBhdGggd2hpY2ggZml4ZXMgdGhlIGd1ZXN0IHBhZ2UgZmF1bHQgb3V0IG9mCit0aGUgbW11LWxvY2sgb24geDg2LiBDdXJyZW50bHksIHRoZSBwYWdlIGZhdWx0IGNhbiBiZSBmYXN0IG9ubHkgaWYgdGhlCitzaGFkb3cgcGFnZSB0YWJsZSBpcyBwcmVzZW50IGFuZCBpdCBpcyBjYXVzZWQgYnkgd3JpdGUtcHJvdGVjdCwgdGhhdCBtZWFucword2UganVzdCBuZWVkIGNoYW5nZSB0aGUgVyBiaXQgb2YgdGhlIHNwdGUuCisKK1doYXQgd2UgdXNlIHRvIGF2b2lkIGFsbCB0aGUgcmFjZSBpcyB0aGUgU1BURV9IT1NUX1dSSVRFQUJMRSBiaXQgYW5kCitTUFRFX01NVV9XUklURUFCTEUgYml0IG9uIHRoZSBzcHRlOgorLSBTUFRFX0hPU1RfV1JJVEVBQkxFIG1lYW5zIHRoZSBnZm4gaXMgd3JpdGFibGUgb24gaG9zdC4KKy0gU1BURV9NTVVfV1JJVEVBQkxFIG1lYW5zIHRoZSBnZm4gaXMgd3JpdGFibGUgb24gbW11LiBUaGUgYml0IGlzIHNldCB3aGVuCisgIHRoZSBnZm4gaXMgd3JpdGFibGUgb24gZ3Vlc3QgbW11IGFuZCBpdCBpcyBub3Qgd3JpdGUtcHJvdGVjdGVkIGJ5IHNoYWRvdworICBwYWdlIHdyaXRlLXByb3RlY3Rpb24uCisKK09uIGZhc3QgcGFnZSBmYXVsdCBwYXRoLCB3ZSB3aWxsIHVzZSBjbXB4Y2hnIHRvIGF0b21pY2FsbHkgc2V0IHRoZSBzcHRlIFcKK2JpdCBpZiBzcHRlLlNQVEVfSE9TVF9XUklURUFCTEUgPSAxIGFuZCBzcHRlLlNQVEVfV1JJVEVfUFJPVEVDVCA9IDEsIHRoaXMKK2lzIHNhZmUgYmVjYXVzZSB3aGVuZXZlciBjaGFuZ2luZyB0aGVzZSBiaXRzIGNhbiBiZSBkZXRlY3RlZCBieSBjbXB4Y2hnLgorCitCdXQgd2UgbmVlZCBjYXJlZnVsbHkgY2hlY2sgdGhlc2UgY2FzZXM6CisxKTogVGhlIG1hcHBpbmcgZnJvbSBnZm4gdG8gcGZuCitUaGUgbWFwcGluZyBmcm9tIGdmbiB0byBwZm4gbWF5IGJlIGNoYW5nZWQgc2luY2Ugd2UgY2FuIG9ubHkgZW5zdXJlIHRoZSBwZm4KK2lzIG5vdCBjaGFuZ2VkIGR1cmluZyBjbXB4Y2hnLiBUaGlzIGlzIGEgQUJBIHByb2JsZW0sIGZvciBleGFtcGxlLCBiZWxvdyBjYXNlCit3aWxsIGhhcHBlbjoKKworQXQgdGhlIGJlZ2lubmluZzoKK2dwdGUgPSBnZm4xCitnZm4xIGlzIG1hcHBlZCB0byBwZm4xIG9uIGhvc3QKK3NwdGUgaXMgdGhlIHNoYWRvdyBwYWdlIHRhYmxlIGVudHJ5IGNvcnJlc3BvbmRpbmcgd2l0aCBncHRlIGFuZAorc3B0ZSA9IHBmbjEKKworICAgVkNQVSAwICAgICAgICAgICAgICAgICAgICAgICAgICAgVkNQVTAKK29uIGZhc3QgcGFnZSBmYXVsdCBwYXRoOgorCisgICBvbGRfc3B0ZSA9ICpzcHRlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGZuMSBpcyBzd2FwcGVkIG91dDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwdGUgPSAwOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZm4xIGlzIHJlLWFsbG9jZWQgZm9yIGdmbjIuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwdGUgaXMgY2hhbmdlZCB0byBwb2ludCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ZuMiBieSB0aGUgZ3Vlc3Q6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcHRlID0gcGZuMTsKKworICAgaWYgKGNtcHhjaGcoc3B0ZSwgb2xkX3NwdGUsIG9sZF9zcHRlK1cpCisJbWFya19wYWdlX2RpcnR5KHZjcHUtPmt2bSwgZ2ZuMSkKKyAgICAgICAgICAgICBPT1BTISEhCisKK1dlIGRpcnR5LWxvZyBmb3IgZ2ZuMSwgdGhhdCBtZWFucyBnZm4yIGlzIGxvc3QgaW4gZGlydHktYml0bWFwLgorCitGb3IgZGlyZWN0IHNwLCB3ZSBjYW4gZWFzaWx5IGF2b2lkIGl0IHNpbmNlIHRoZSBzcHRlIG9mIGRpcmVjdCBzcCBpcyBmaXhlZAordG8gZ2ZuLiBGb3IgaW5kaXJlY3Qgc3AsIGJlZm9yZSB3ZSBkbyBjbXB4Y2hnLCB3ZSBjYWxsIGdmbl90b19wZm5fYXRvbWljKCkKK3RvIHBpbiBnZm4gdG8gcGZuLCBiZWNhdXNlIGFmdGVyIGdmbl90b19wZm5fYXRvbWljKCk6CistIFdlIGhhdmUgaGVsZCB0aGUgcmVmY291bnQgb2YgcGZuIHRoYXQgbWVhbnMgdGhlIHBmbiBjYW4gbm90IGJlIGZyZWVkIGFuZAorICBiZSByZXVzZWQgZm9yIGFub3RoZXIgZ2ZuLgorLSBUaGUgcGZuIGlzIHdyaXRhYmxlIHRoYXQgbWVhbnMgaXQgY2FuIG5vdCBiZSBzaGFyZWQgYmV0d2VlbiBkaWZmZXJlbnQgZ2ZucworICBieSBLU00uCisKK1RoZW4sIHdlIGNhbiBlbnN1cmUgdGhlIGRpcnR5IGJpdG1hcHMgaXMgY29ycmVjdGx5IHNldCBmb3IgYSBnZm4uCisKK0N1cnJlbnRseSwgdG8gc2ltcGxpZnkgdGhlIHdob2xlIHRoaW5ncywgd2UgZGlzYWJsZSBmYXN0IHBhZ2UgZmF1bHQgZm9yCitpbmRpcmVjdCBzaGFkb3cgcGFnZS4KKworMik6IERpcnR5IGJpdCB0cmFja2luZworSW4gdGhlIG9yaWdpbiBjb2RlLCB0aGUgc3B0ZSBjYW4gYmUgZmFzdCB1cGRhdGVkIChub24tYXRvbWljYWxseSkgaWYgdGhlCitzcHRlIGlzIHJlYWQtb25seSBhbmQgdGhlIEFjY2Vzc2VkIGJpdCBoYXMgYWxyZWFkeSBiZWVuIHNldCBzaW5jZSB0aGUKK0FjY2Vzc2VkIGJpdCBhbmQgRGlydHkgYml0IGNhbiBub3QgYmUgbG9zdC4KKworQnV0IGl0IGlzIG5vdCB0cnVlIGFmdGVyIGZhc3QgcGFnZSBmYXVsdCBzaW5jZSB0aGUgc3B0ZSBjYW4gYmUgbWFya2VkCit3cml0YWJsZSBiZXR3ZWVuIHJlYWRpbmcgc3B0ZSBhbmQgdXBkYXRpbmcgc3B0ZS4gTGlrZSBiZWxvdyBjYXNlOgorCitBdCB0aGUgYmVnaW5uaW5nOgorc3B0ZS5XID0gMAorc3B0ZS5BY2Nlc3NlZCA9IDEKKworICAgVkNQVSAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkNQVTAKK0luIG1tdV9zcHRlX2NsZWFyX3RyYWNrX2JpdHMoKToKKworICAgb2xkX3NwdGUgPSAqc3B0ZTsKKworICAgLyogJ2lmJyBjb25kaXRpb24gaXMgc2F0aXNmaWVkLiAqLworICAgaWYgKG9sZF9zcHRlLkFjY3NzZWQgPT0gMSAmJgorICAgICAgICBvbGRfc3B0ZS5XID09IDApCisgICAgICBzcHRlID0gMHVsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gZmFzdCBwYWdlIGZhdWx0IHBhdGg6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcHRlLlcgPSAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSB3cml0ZSBvbiB0aGUgc3B0ZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwdGUuRGlydHkgPSAxCisKKworICAgZWxzZQorICAgICAgb2xkX3NwdGUgPSB4Y2hnKHNwdGUsIDB1bGwpCisKKworICAgaWYgKG9sZF9zcHRlLkFjY3NzZWQgPT0gMSkKKyAgICAgIGt2bV9zZXRfcGZuX2FjY2Vzc2VkKHNwdGUucGZuKTsKKyAgIGlmIChvbGRfc3B0ZS5EaXJ0eSA9PSAxKQorICAgICAga3ZtX3NldF9wZm5fZGlydHkoc3B0ZS5wZm4pOworICAgICAgT09QUyEhIQorCitUaGUgRGlydHkgYml0IGlzIGxvc3QgaW4gdGhpcyBjYXNlLgorCitJbiBvcmRlciB0byBhdm9pZCB0aGlzIGtpbmQgb2YgaXNzdWUsIHdlIGFsd2F5cyB0cmVhdCB0aGUgc3B0ZSBhcyAidm9sYXRpbGUiCitpZiBpdCBjYW4gYmUgdXBkYXRlZCBvdXQgb2YgbW11LWxvY2ssIHNlZSBzcHRlX2hhc192b2xhdGlsZV9iaXRzKCksIGl0IG1lYW5zLAordGhlIHNwdGUgaXMgYWx3YXlzIGF0b21pY2FsbHkgdXBkYXRlZCBpbiB0aGlzIGNhc2UuCisKKzMpOiBmbHVzaCB0bGJzIGR1ZSB0byBzcHRlIHVwZGF0ZWQKK0lmIHRoZSBzcHRlIGlzIHVwZGF0ZWQgZnJvbSB3cml0YWJsZSB0byByZWFkb25seSwgd2Ugc2hvdWxkIGZsdXNoIGFsbCBUTEJzLAorb3RoZXJ3aXNlIHJtYXBfd3JpdGVfcHJvdGVjdCB3aWxsIGZpbmQgYSByZWFkLW9ubHkgc3B0ZSwgZXZlbiB0aG91Z2ggdGhlCit3cml0YWJsZSBzcHRlIG1pZ2h0IGJlIGNhY2hlZCBvbiBhIENQVSdzIFRMQi4KKworQXMgbWVudGlvbmVkIGJlZm9yZSwgdGhlIHNwdGUgY2FuIGJlIHVwZGF0ZWQgdG8gd3JpdGFibGUgb3V0IG9mIG1tdS1sb2NrIG9uCitmYXN0IHBhZ2UgZmF1bHQgcGF0aCwgaW4gb3JkZXIgdG8gZWFzaWx5IGF1ZGl0IHRoZSBwYXRoLCB3ZSBzZWUgaWYgVExCcyBuZWVkCitiZSBmbHVzaGVkIGNhdXNlZCBieSB0aGlzIHJlYXNvbiBpbiBtbXVfc3B0ZV91cGRhdGUoKSBzaW5jZSB0aGlzIGlzIGEgY29tbW9uCitmdW5jdGlvbiB0byB1cGRhdGUgc3B0ZSAocHJlc2VudCAtPiBwcmVzZW50KS4KKworU2luY2UgdGhlIHNwdGUgaXMgInZvbGF0aWxlIiBpZiBpdCBjYW4gYmUgdXBkYXRlZCBvdXQgb2YgbW11LWxvY2ssIHdlIGFsd2F5cworYXRvbWljYWxseSB1cGRhdGUgdGhlIHNwdGUsIHRoZSByYWNlIGNhdXNlZCBieSBmYXN0IHBhZ2UgZmF1bHQgY2FuIGJlIGF2b2lkZWQsCitTZWUgdGhlIGNvbW1lbnRzIGluIHNwdGVfaGFzX3ZvbGF0aWxlX2JpdHMoKSBhbmQgbW11X3NwdGVfdXBkYXRlKCkuCisKKzMuIFJlZmVyZW5jZQorLS0tLS0tLS0tLS0tCisKK05hbWU6CQlrdm1fbG9jaworVHlwZToJCXNwaW5sb2NrX3QKK0FyY2g6CQlhbnkKK1Byb3RlY3RzOgktIHZtX2xpc3QKKworTmFtZToJCWt2bV9jb3VudF9sb2NrCitUeXBlOgkJcmF3X3NwaW5sb2NrX3QKK0FyY2g6CQlhbnkKK1Byb3RlY3RzOgktIGhhcmR3YXJlIHZpcnR1YWxpemF0aW9uIGVuYWJsZS9kaXNhYmxlCitDb21tZW50OgkncmF3JyBiZWNhdXNlIGhhcmR3YXJlIGVuYWJsaW5nL2Rpc2FibGluZyBtdXN0IGJlIGF0b21pYyAvd3J0CisJCW1pZ3JhdGlvbi4KKworTmFtZToJCWt2bV9hcmNoOjp0c2Nfd3JpdGVfbG9jaworVHlwZToJCXJhd19zcGlubG9jaworQXJjaDoJCXg4NgorUHJvdGVjdHM6CS0ga3ZtX2FyY2g6OntsYXN0X3RzY193cml0ZSxsYXN0X3RzY19uc2VjLGxhc3RfdHNjX29mZnNldH0KKwkJLSB0c2Mgb2Zmc2V0IGluIHZtY2IKK0NvbW1lbnQ6CSdyYXcnIGJlY2F1c2UgdXBkYXRpbmcgdGhlIHRzYyBvZmZzZXRzIG11c3Qgbm90IGJlIHByZWVtcHRlZC4KKworTmFtZToJCWt2bS0+bW11X2xvY2sKK1R5cGU6CQlzcGlubG9ja190CitBcmNoOgkJYW55CitQcm90ZWN0czoJLXNoYWRvdyBwYWdlL3NoYWRvdyB0bGIgZW50cnkKK0NvbW1lbnQ6CWl0IGlzIGEgc3BpbmxvY2sgc2luY2UgaXQgaXMgdXNlZCBpbiBtbXUgbm90aWZpZXIuCisKK05hbWU6CQlrdm0tPnNyY3UKK1R5cGU6CQlzcmN1IGxvY2sKK0FyY2g6CQlhbnkKK1Byb3RlY3RzOgktIGt2bS0+bWVtc2xvdHMKKwkJLSBrdm0tPmJ1c2VzCitDb21tZW50OglUaGUgc3JjdSByZWFkIGxvY2sgbXVzdCBiZSBoZWxkIHdoaWxlIGFjY2Vzc2luZyBtZW1zbG90cyAoZS5nLgorCQl3aGVuIHVzaW5nIGdmbl90b18qIGZ1bmN0aW9ucykgYW5kIHdoaWxlIGFjY2Vzc2luZyBpbi1rZXJuZWwKKwkJTU1JTy9QSU8gYWRkcmVzcy0+ZGV2aWNlIHN0cnVjdHVyZSBtYXBwaW5nIChrdm0tPmJ1c2VzKS4KKwkJVGhlIHNyY3UgaW5kZXggY2FuIGJlIHN0b3JlZCBpbiBrdm1fdmNwdS0+c3JjdV9pZHggcGVyIHZjcHUKKwkJaWYgaXQgaXMgbmVlZGVkIGJ5IG11bHRpcGxlIGZ1bmN0aW9ucy4KKworTmFtZToJCWJsb2NrZWRfdmNwdV9vbl9jcHVfbG9jaworVHlwZToJCXNwaW5sb2NrX3QKK0FyY2g6CQl4ODYKK1Byb3RlY3RzOglibG9ja2VkX3ZjcHVfb25fY3B1CitDb21tZW50OglUaGlzIGlzIGEgcGVyLUNQVSBsb2NrIGFuZCBpdCBpcyB1c2VkIGZvciBWVC1kIHBvc3RlZC1pbnRlcnJ1cHRzLgorCQlXaGVuIFZULWQgcG9zdGVkLWludGVycnVwdHMgaXMgc3VwcG9ydGVkIGFuZCB0aGUgVk0gaGFzIGFzc2lnbmVkCisJCWRldmljZXMsIHdlIHB1dCB0aGUgYmxvY2tlZCB2Q1BVIG9uIHRoZSBsaXN0IGJsb2NrZWRfdmNwdV9vbl9jcHUKKwkJcHJvdGVjdGVkIGJ5IGJsb2NrZWRfdmNwdV9vbl9jcHVfbG9jaywgd2hlbiBWVC1kIGhhcmR3YXJlIGlzc3VlcworCQl3YWtldXAgbm90aWZpY2F0aW9uIGV2ZW50IHNpbmNlIGV4dGVybmFsIGludGVycnVwdHMgZnJvbSB0aGUKKwkJYXNzaWduZWQgZGV2aWNlcyBoYXBwZW5zLCB3ZSB3aWxsIGZpbmQgdGhlIHZDUFUgb24gdGhlIGxpc3QgdG8KKwkJd2FrZXVwLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9tbXUudHh0IGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9tbXUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2NTM2NDEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL21tdS50eHQKQEAgLTAsMCArMSw0NjUgQEAKK1RoZSB4ODYga3ZtIHNoYWRvdyBtbXUKKz09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIG1tdSAoaW4gYXJjaC94ODYva3ZtLCBmaWxlcyBtbXUuW2NoXSBhbmQgcGFnaW5nX3RtcGwuaCkgaXMgcmVzcG9uc2libGUKK2ZvciBwcmVzZW50aW5nIGEgc3RhbmRhcmQgeDg2IG1tdSB0byB0aGUgZ3Vlc3QsIHdoaWxlIHRyYW5zbGF0aW5nIGd1ZXN0CitwaHlzaWNhbCBhZGRyZXNzZXMgdG8gaG9zdCBwaHlzaWNhbCBhZGRyZXNzZXMuCisKK1RoZSBtbXUgY29kZSBhdHRlbXB0cyB0byBzYXRpc2Z5IHRoZSBmb2xsb3dpbmcgcmVxdWlyZW1lbnRzOgorCistIGNvcnJlY3RuZXNzOiB0aGUgZ3Vlc3Qgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGRldGVybWluZSB0aGF0IGl0IGlzIHJ1bm5pbmcKKyAgICAgICAgICAgICAgIG9uIGFuIGVtdWxhdGVkIG1tdSBleGNlcHQgZm9yIHRpbWluZyAod2UgYXR0ZW1wdCB0byBjb21wbHkKKyAgICAgICAgICAgICAgIHdpdGggdGhlIHNwZWNpZmljYXRpb24sIG5vdCBlbXVsYXRlIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YKKyAgICAgICAgICAgICAgIGEgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbiBzdWNoIGFzIHRsYiBzaXplKQorLSBzZWN1cml0eTogICAgdGhlIGd1ZXN0IG11c3Qgbm90IGJlIGFibGUgdG8gdG91Y2ggaG9zdCBtZW1vcnkgbm90IGFzc2lnbmVkCisgICAgICAgICAgICAgICB0byBpdAorLSBwZXJmb3JtYW5jZTogbWluaW1pemUgdGhlIHBlcmZvcm1hbmNlIHBlbmFsdHkgaW1wb3NlZCBieSB0aGUgbW11CistIHNjYWxpbmc6ICAgICBuZWVkIHRvIHNjYWxlIHRvIGxhcmdlIG1lbW9yeSBhbmQgbGFyZ2UgdmNwdSBndWVzdHMKKy0gaGFyZHdhcmU6ICAgIHN1cHBvcnQgdGhlIGZ1bGwgcmFuZ2Ugb2YgeDg2IHZpcnR1YWxpemF0aW9uIGhhcmR3YXJlCistIGludGVncmF0aW9uOiBMaW51eCBtZW1vcnkgbWFuYWdlbWVudCBjb2RlIG11c3QgYmUgaW4gY29udHJvbCBvZiBndWVzdCBtZW1vcnkKKyAgICAgICAgICAgICAgIHNvIHRoYXQgc3dhcHBpbmcsIHBhZ2UgbWlncmF0aW9uLCBwYWdlIG1lcmdpbmcsIHRyYW5zcGFyZW50CisgICAgICAgICAgICAgICBodWdlcGFnZXMsIGFuZCBzaW1pbGFyIGZlYXR1cmVzIHdvcmsgd2l0aG91dCBjaGFuZ2UKKy0gZGlydHkgdHJhY2tpbmc6IHJlcG9ydCB3cml0ZXMgdG8gZ3Vlc3QgbWVtb3J5IHRvIGVuYWJsZSBsaXZlIG1pZ3JhdGlvbgorICAgICAgICAgICAgICAgYW5kIGZyYW1lYnVmZmVyLWJhc2VkIGRpc3BsYXlzCistIGZvb3RwcmludDogICBrZWVwIHRoZSBhbW91bnQgb2YgcGlubmVkIGtlcm5lbCBtZW1vcnkgbG93IChtb3N0IG1lbW9yeQorICAgICAgICAgICAgICAgc2hvdWxkIGJlIHNocmlua2FibGUpCistIHJlbGlhYmlsaXR5OiAgYXZvaWQgbXVsdGlwYWdlIG9yIEdGUF9BVE9NSUMgYWxsb2NhdGlvbnMKKworQWNyb255bXMKKz09PT09PT09CisKK3BmbiAgIGhvc3QgcGFnZSBmcmFtZSBudW1iZXIKK2hwYSAgIGhvc3QgcGh5c2ljYWwgYWRkcmVzcworaHZhICAgaG9zdCB2aXJ0dWFsIGFkZHJlc3MKK2dmbiAgIGd1ZXN0IGZyYW1lIG51bWJlcgorZ3BhICAgZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzcworZ3ZhICAgZ3Vlc3QgdmlydHVhbCBhZGRyZXNzCituZ3BhICBuZXN0ZWQgZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzcworbmd2YSAgbmVzdGVkIGd1ZXN0IHZpcnR1YWwgYWRkcmVzcworcHRlICAgcGFnZSB0YWJsZSBlbnRyeSAodXNlZCBhbHNvIHRvIHJlZmVyIGdlbmVyaWNhbGx5IHRvIHBhZ2luZyBzdHJ1Y3R1cmUKKyAgICAgIGVudHJpZXMpCitncHRlICBndWVzdCBwdGUgKHJlZmVycmluZyB0byBnZm5zKQorc3B0ZSAgc2hhZG93IHB0ZSAocmVmZXJyaW5nIHRvIHBmbnMpCit0ZHAgICB0d28gZGltZW5zaW9uYWwgcGFnaW5nICh2ZW5kb3IgbmV1dHJhbCB0ZXJtIGZvciBOUFQgYW5kIEVQVCkKKworVmlydHVhbCBhbmQgcmVhbCBoYXJkd2FyZSBzdXBwb3J0ZWQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBtbXUgc3VwcG9ydHMgZmlyc3QtZ2VuZXJhdGlvbiBtbXUgaGFyZHdhcmUsIHdoaWNoIGFsbG93cyBhbiBhdG9taWMgc3dpdGNoCitvZiB0aGUgY3VycmVudCBwYWdpbmcgbW9kZSBhbmQgY3IzIGR1cmluZyBndWVzdCBlbnRyeSwgYXMgd2VsbCBhcwordHdvLWRpbWVuc2lvbmFsIHBhZ2luZyAoQU1EJ3MgTlBUIGFuZCBJbnRlbCdzIEVQVCkuICBUaGUgZW11bGF0ZWQgaGFyZHdhcmUKK2l0IGV4cG9zZXMgaXMgdGhlIHRyYWRpdGlvbmFsIDIvMy80IGxldmVsIHg4NiBtbXUsIHdpdGggc3VwcG9ydCBmb3IgZ2xvYmFsCitwYWdlcywgcGFlLCBwc2UsIHBzZTM2LCBjcjAud3AsIGFuZCAxR0IgcGFnZXMuICBXb3JrIGlzIGluIHByb2dyZXNzIHRvIHN1cHBvcnQKK2V4cG9zaW5nIE5QVCBjYXBhYmxlIGhhcmR3YXJlIG9uIE5QVCBjYXBhYmxlIGhvc3RzLgorCitUcmFuc2xhdGlvbgorPT09PT09PT09PT0KKworVGhlIHByaW1hcnkgam9iIG9mIHRoZSBtbXUgaXMgdG8gcHJvZ3JhbSB0aGUgcHJvY2Vzc29yJ3MgbW11IHRvIHRyYW5zbGF0ZQorYWRkcmVzc2VzIGZvciB0aGUgZ3Vlc3QuICBEaWZmZXJlbnQgdHJhbnNsYXRpb25zIGFyZSByZXF1aXJlZCBhdCBkaWZmZXJlbnQKK3RpbWVzOgorCistIHdoZW4gZ3Vlc3QgcGFnaW5nIGlzIGRpc2FibGVkLCB3ZSB0cmFuc2xhdGUgZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzc2VzIHRvCisgIGhvc3QgcGh5c2ljYWwgYWRkcmVzc2VzIChncGEtPmhwYSkKKy0gd2hlbiBndWVzdCBwYWdpbmcgaXMgZW5hYmxlZCwgd2UgdHJhbnNsYXRlIGd1ZXN0IHZpcnR1YWwgYWRkcmVzc2VzLCB0bworICBndWVzdCBwaHlzaWNhbCBhZGRyZXNzZXMsIHRvIGhvc3QgcGh5c2ljYWwgYWRkcmVzc2VzIChndmEtPmdwYS0+aHBhKQorLSB3aGVuIHRoZSBndWVzdCBsYXVuY2hlcyBhIGd1ZXN0IG9mIGl0cyBvd24sIHdlIHRyYW5zbGF0ZSBuZXN0ZWQgZ3Vlc3QKKyAgdmlydHVhbCBhZGRyZXNzZXMsIHRvIG5lc3RlZCBndWVzdCBwaHlzaWNhbCBhZGRyZXNzZXMsIHRvIGd1ZXN0IHBoeXNpY2FsCisgIGFkZHJlc3NlcywgdG8gaG9zdCBwaHlzaWNhbCBhZGRyZXNzZXMgKG5ndmEtPm5ncGEtPmdwYS0+aHBhKQorCitUaGUgcHJpbWFyeSBjaGFsbGVuZ2UgaXMgdG8gZW5jb2RlIGJldHdlZW4gMSBhbmQgMyB0cmFuc2xhdGlvbnMgaW50byBoYXJkd2FyZQordGhhdCBzdXBwb3J0IG9ubHkgMSAodHJhZGl0aW9uYWwpIGFuZCAyICh0ZHApIHRyYW5zbGF0aW9ucy4gIFdoZW4gdGhlCitudW1iZXIgb2YgcmVxdWlyZWQgdHJhbnNsYXRpb25zIG1hdGNoZXMgdGhlIGhhcmR3YXJlLCB0aGUgbW11IG9wZXJhdGVzIGluCitkaXJlY3QgbW9kZTsgb3RoZXJ3aXNlIGl0IG9wZXJhdGVzIGluIHNoYWRvdyBtb2RlIChzZWUgYmVsb3cpLgorCitNZW1vcnkKKz09PT09PQorCitHdWVzdCBtZW1vcnkgKGdwYSkgaXMgcGFydCBvZiB0aGUgdXNlciBhZGRyZXNzIHNwYWNlIG9mIHRoZSBwcm9jZXNzIHRoYXQgaXMKK3VzaW5nIGt2bS4gIFVzZXJzcGFjZSBkZWZpbmVzIHRoZSB0cmFuc2xhdGlvbiBiZXR3ZWVuIGd1ZXN0IGFkZHJlc3NlcyBhbmQgdXNlcgorYWRkcmVzc2VzIChncGEtPmh2YSk7IG5vdGUgdGhhdCB0d28gZ3BhcyBtYXkgYWxpYXMgdG8gdGhlIHNhbWUgaHZhLCBidXQgbm90Cit2aWNlIHZlcnNhLgorCitUaGVzZSBodmFzIG1heSBiZSBiYWNrZWQgdXNpbmcgYW55IG1ldGhvZCBhdmFpbGFibGUgdG8gdGhlIGhvc3Q6IGFub255bW91cworbWVtb3J5LCBmaWxlIGJhY2tlZCBtZW1vcnksIGFuZCBkZXZpY2UgbWVtb3J5LiAgTWVtb3J5IG1pZ2h0IGJlIHBhZ2VkIGJ5IHRoZQoraG9zdCBhdCBhbnkgdGltZS4KKworRXZlbnRzCis9PT09PT0KKworVGhlIG1tdSBpcyBkcml2ZW4gYnkgZXZlbnRzLCBzb21lIGZyb20gdGhlIGd1ZXN0LCBzb21lIGZyb20gdGhlIGhvc3QuCisKK0d1ZXN0IGdlbmVyYXRlZCBldmVudHM6CistIHdyaXRlcyB0byBjb250cm9sIHJlZ2lzdGVycyAoZXNwZWNpYWxseSBjcjMpCistIGludmxwZy9pbnZscGdhIGluc3RydWN0aW9uIGV4ZWN1dGlvbgorLSBhY2Nlc3MgdG8gbWlzc2luZyBvciBwcm90ZWN0ZWQgdHJhbnNsYXRpb25zCisKK0hvc3QgZ2VuZXJhdGVkIGV2ZW50czoKKy0gY2hhbmdlcyBpbiB0aGUgZ3BhLT5ocGEgdHJhbnNsYXRpb24gKGVpdGhlciB0aHJvdWdoIGdwYS0+aHZhIGNoYW5nZXMgb3IKKyAgdGhyb3VnaCBodmEtPmhwYSBjaGFuZ2VzKQorLSBtZW1vcnkgcHJlc3N1cmUgKHRoZSBzaHJpbmtlcikKKworU2hhZG93IHBhZ2VzCis9PT09PT09PT09PT0KKworVGhlIHByaW5jaXBhbCBkYXRhIHN0cnVjdHVyZSBpcyB0aGUgc2hhZG93IHBhZ2UsICdzdHJ1Y3Qga3ZtX21tdV9wYWdlJy4gIEEKK3NoYWRvdyBwYWdlIGNvbnRhaW5zIDUxMiBzcHRlcywgd2hpY2ggY2FuIGJlIGVpdGhlciBsZWFmIG9yIG5vbmxlYWYgc3B0ZXMuICBBCitzaGFkb3cgcGFnZSBtYXkgY29udGFpbiBhIG1peCBvZiBsZWFmIGFuZCBub25sZWFmIHNwdGVzLgorCitBIG5vbmxlYWYgc3B0ZSBhbGxvd3MgdGhlIGhhcmR3YXJlIG1tdSB0byByZWFjaCB0aGUgbGVhZiBwYWdlcyBhbmQKK2lzIG5vdCByZWxhdGVkIHRvIGEgdHJhbnNsYXRpb24gZGlyZWN0bHkuICBJdCBwb2ludHMgdG8gb3RoZXIgc2hhZG93IHBhZ2VzLgorCitBIGxlYWYgc3B0ZSBjb3JyZXNwb25kcyB0byBlaXRoZXIgb25lIG9yIHR3byB0cmFuc2xhdGlvbnMgZW5jb2RlZCBpbnRvCitvbmUgcGFnaW5nIHN0cnVjdHVyZSBlbnRyeS4gIFRoZXNlIGFyZSBhbHdheXMgdGhlIGxvd2VzdCBsZXZlbCBvZiB0aGUKK3RyYW5zbGF0aW9uIHN0YWNrLCB3aXRoIG9wdGlvbmFsIGhpZ2hlciBsZXZlbCB0cmFuc2xhdGlvbnMgbGVmdCB0byBOUFQvRVBULgorTGVhZiBwdGVzIHBvaW50IGF0IGd1ZXN0IHBhZ2VzLgorCitUaGUgZm9sbG93aW5nIHRhYmxlIHNob3dzIHRyYW5zbGF0aW9ucyBlbmNvZGVkIGJ5IGxlYWYgcHRlcywgd2l0aCBoaWdoZXItbGV2ZWwKK3RyYW5zbGF0aW9ucyBpbiBwYXJlbnRoZXNlczoKKworIE5vbi1uZXN0ZWQgZ3Vlc3RzOgorICBub25wYWdpbmc6ICAgICBncGEtPmhwYQorICBwYWdpbmc6ICAgICAgICBndmEtPmdwYS0+aHBhCisgIHBhZ2luZywgdGRwOiAgIChndmEtPilncGEtPmhwYQorIE5lc3RlZCBndWVzdHM6CisgIG5vbi10ZHA6ICAgICAgIG5ndmEtPmdwYS0+aHBhICAoKikKKyAgdGRwOiAgICAgICAgICAgKG5ndmEtPiluZ3BhLT5ncGEtPmhwYQorCisoKikgdGhlIGd1ZXN0IGh5cGVydmlzb3Igd2lsbCBlbmNvZGUgdGhlIG5ndmEtPmdwYSB0cmFuc2xhdGlvbiBpbnRvIGl0cyBwYWdlCisgICAgdGFibGVzIGlmIG5wdCBpcyBub3QgcHJlc2VudAorCitTaGFkb3cgcGFnZXMgY29udGFpbiB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOgorICByb2xlLmxldmVsOgorICAgIFRoZSBsZXZlbCBpbiB0aGUgc2hhZG93IHBhZ2luZyBoaWVyYXJjaHkgdGhhdCB0aGlzIHNoYWRvdyBwYWdlIGJlbG9uZ3MgdG8uCisgICAgMT00ayBzcHRlcywgMj0yTSBzcHRlcywgMz0xRyBzcHRlcywgZXRjLgorICByb2xlLmRpcmVjdDoKKyAgICBJZiBzZXQsIGxlYWYgc3B0ZXMgcmVhY2hhYmxlIGZyb20gdGhpcyBwYWdlIGFyZSBmb3IgYSBsaW5lYXIgcmFuZ2UuCisgICAgRXhhbXBsZXMgaW5jbHVkZSByZWFsIG1vZGUgdHJhbnNsYXRpb24sIGxhcmdlIGd1ZXN0IHBhZ2VzIGJhY2tlZCBieSBzbWFsbAorICAgIGhvc3QgcGFnZXMsIGFuZCBncGEtPmhwYSB0cmFuc2xhdGlvbnMgd2hlbiBOUFQgb3IgRVBUIGlzIGFjdGl2ZS4KKyAgICBUaGUgbGluZWFyIHJhbmdlIHN0YXJ0cyBhdCAoZ2ZuIDw8IFBBR0VfU0hJRlQpIGFuZCBpdHMgc2l6ZSBpcyBkZXRlcm1pbmVkCisgICAgYnkgcm9sZS5sZXZlbCAoMk1CIGZvciBmaXJzdCBsZXZlbCwgMUdCIGZvciBzZWNvbmQgbGV2ZWwsIDAuNVRCIGZvciB0aGlyZAorICAgIGxldmVsLCAyNTZUQiBmb3IgZm91cnRoIGxldmVsKQorICAgIElmIGNsZWFyLCB0aGlzIHBhZ2UgY29ycmVzcG9uZHMgdG8gYSBndWVzdCBwYWdlIHRhYmxlIGRlbm90ZWQgYnkgdGhlIGdmbgorICAgIGZpZWxkLgorICByb2xlLnF1YWRyYW50OgorICAgIFdoZW4gcm9sZS5jcjRfcGFlPTAsIHRoZSBndWVzdCB1c2VzIDMyLWJpdCBncHRlcyB3aGlsZSB0aGUgaG9zdCB1c2VzIDY0LWJpdAorICAgIHNwdGVzLiAgVGhhdCBtZWFucyBhIGd1ZXN0IHBhZ2UgdGFibGUgY29udGFpbnMgbW9yZSBwdGVzIHRoYW4gdGhlIGhvc3QsCisgICAgc28gbXVsdGlwbGUgc2hhZG93IHBhZ2VzIGFyZSBuZWVkZWQgdG8gc2hhZG93IG9uZSBndWVzdCBwYWdlLgorICAgIEZvciBmaXJzdC1sZXZlbCBzaGFkb3cgcGFnZXMsIHJvbGUucXVhZHJhbnQgY2FuIGJlIDAgb3IgMSBhbmQgZGVub3RlcyB0aGUKKyAgICBmaXJzdCBvciBzZWNvbmQgNTEyLWdwdGUgYmxvY2sgaW4gdGhlIGd1ZXN0IHBhZ2UgdGFibGUuICBGb3Igc2Vjb25kLWxldmVsCisgICAgcGFnZSB0YWJsZXMsIGVhY2ggMzItYml0IGdwdGUgaXMgY29udmVydGVkIHRvIHR3byA2NC1iaXQgc3B0ZXMKKyAgICAoc2luY2UgZWFjaCBmaXJzdC1sZXZlbCBndWVzdCBwYWdlIGlzIHNoYWRvd2VkIGJ5IHR3byBmaXJzdC1sZXZlbAorICAgIHNoYWRvdyBwYWdlcykgc28gcm9sZS5xdWFkcmFudCB0YWtlcyB2YWx1ZXMgaW4gdGhlIHJhbmdlIDAuLjMuICBFYWNoCisgICAgcXVhZHJhbnQgbWFwcyAxR0IgdmlydHVhbCBhZGRyZXNzIHNwYWNlLgorICByb2xlLmFjY2VzczoKKyAgICBJbmhlcml0ZWQgZ3Vlc3QgYWNjZXNzIHBlcm1pc3Npb25zIGluIHRoZSBmb3JtIHV3eC4gIE5vdGUgZXhlY3V0ZQorICAgIHBlcm1pc3Npb24gaXMgcG9zaXRpdmUsIG5vdCBuZWdhdGl2ZS4KKyAgcm9sZS5pbnZhbGlkOgorICAgIFRoZSBwYWdlIGlzIGludmFsaWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4gIEl0IGlzIGEgcm9vdCBwYWdlIHRoYXQgaXMKKyAgICBjdXJyZW50bHkgcGlubmVkIChieSBhIGNwdSBoYXJkd2FyZSByZWdpc3RlciBwb2ludGluZyB0byBpdCk7IG9uY2UgaXQgaXMKKyAgICB1bnBpbm5lZCBpdCB3aWxsIGJlIGRlc3Ryb3llZC4KKyAgcm9sZS5jcjRfcGFlOgorICAgIENvbnRhaW5zIHRoZSB2YWx1ZSBvZiBjcjQucGFlIGZvciB3aGljaCB0aGUgcGFnZSBpcyB2YWxpZCAoZS5nLiB3aGV0aGVyCisgICAgMzItYml0IG9yIDY0LWJpdCBncHRlcyBhcmUgaW4gdXNlKS4KKyAgcm9sZS5ueGU6CisgICAgQ29udGFpbnMgdGhlIHZhbHVlIG9mIGVmZXIubnhlIGZvciB3aGljaCB0aGUgcGFnZSBpcyB2YWxpZC4KKyAgcm9sZS5jcjBfd3A6CisgICAgQ29udGFpbnMgdGhlIHZhbHVlIG9mIGNyMC53cCBmb3Igd2hpY2ggdGhlIHBhZ2UgaXMgdmFsaWQuCisgIHJvbGUuc21lcF9hbmRub3Rfd3A6CisgICAgQ29udGFpbnMgdGhlIHZhbHVlIG9mIGNyNC5zbWVwICYmICFjcjAud3AgZm9yIHdoaWNoIHRoZSBwYWdlIGlzIHZhbGlkCisgICAgKHBhZ2VzIGZvciB3aGljaCB0aGlzIGlzIHRydWUgYXJlIGRpZmZlcmVudCBmcm9tIG90aGVyIHBhZ2VzOyBzZWUgdGhlCisgICAgdHJlYXRtZW50IG9mIGNyMC53cD0wIGJlbG93KS4KKyAgcm9sZS5zbWFwX2FuZG5vdF93cDoKKyAgICBDb250YWlucyB0aGUgdmFsdWUgb2YgY3I0LnNtYXAgJiYgIWNyMC53cCBmb3Igd2hpY2ggdGhlIHBhZ2UgaXMgdmFsaWQKKyAgICAocGFnZXMgZm9yIHdoaWNoIHRoaXMgaXMgdHJ1ZSBhcmUgZGlmZmVyZW50IGZyb20gb3RoZXIgcGFnZXM7IHNlZSB0aGUKKyAgICB0cmVhdG1lbnQgb2YgY3IwLndwPTAgYmVsb3cpLgorICByb2xlLnNtbToKKyAgICBJcyAxIGlmIHRoZSBwYWdlIGlzIHZhbGlkIGluIHN5c3RlbSBtYW5hZ2VtZW50IG1vZGUuICBUaGlzIGZpZWxkCisgICAgZGV0ZXJtaW5lcyB3aGljaCBvZiB0aGUga3ZtX21lbXNsb3RzIGFycmF5IHdhcyB1c2VkIHRvIGJ1aWxkIHRoaXMKKyAgICBzaGFkb3cgcGFnZTsgaXQgaXMgYWxzbyB1c2VkIHRvIGdvIGJhY2sgZnJvbSBhIHN0cnVjdCBrdm1fbW11X3BhZ2UKKyAgICB0byBhIG1lbXNsb3QsIHRocm91Z2ggdGhlIGt2bV9tZW1zbG90c19mb3Jfc3B0ZV9yb2xlIG1hY3JvIGFuZAorICAgIF9fZ2ZuX3RvX21lbXNsb3QuCisgIGdmbjoKKyAgICBFaXRoZXIgdGhlIGd1ZXN0IHBhZ2UgdGFibGUgY29udGFpbmluZyB0aGUgdHJhbnNsYXRpb25zIHNoYWRvd2VkIGJ5IHRoaXMKKyAgICBwYWdlLCBvciB0aGUgYmFzZSBwYWdlIGZyYW1lIGZvciBsaW5lYXIgdHJhbnNsYXRpb25zLiAgU2VlIHJvbGUuZGlyZWN0LgorICBzcHQ6CisgICAgQSBwYWdlZnVsIG9mIDY0LWJpdCBzcHRlcyBjb250YWluaW5nIHRoZSB0cmFuc2xhdGlvbnMgZm9yIHRoaXMgcGFnZS4KKyAgICBBY2Nlc3NlZCBieSBib3RoIGt2bSBhbmQgaGFyZHdhcmUuCisgICAgVGhlIHBhZ2UgcG9pbnRlZCB0byBieSBzcHQgd2lsbCBoYXZlIGl0cyBwYWdlLT5wcml2YXRlIHBvaW50aW5nIGJhY2sKKyAgICBhdCB0aGUgc2hhZG93IHBhZ2Ugc3RydWN0dXJlLgorICAgIHNwdGVzIGluIHNwdCBwb2ludCBlaXRoZXIgYXQgZ3Vlc3QgcGFnZXMsIG9yIGF0IGxvd2VyLWxldmVsIHNoYWRvdyBwYWdlcy4KKyAgICBTcGVjaWZpY2FsbHksIGlmIHNwMSBhbmQgc3AyIGFyZSBzaGFkb3cgcGFnZXMsIHRoZW4gc3AxLT5zcHRbbl0gbWF5IHBvaW50CisgICAgYXQgX19wYShzcDItPnNwdCkuICBzcDIgd2lsbCBwb2ludCBiYWNrIGF0IHNwMSB0aHJvdWdoIHBhcmVudF9wdGUuCisgICAgVGhlIHNwdCBhcnJheSBmb3JtcyBhIERBRyBzdHJ1Y3R1cmUgd2l0aCB0aGUgc2hhZG93IHBhZ2UgYXMgYSBub2RlLCBhbmQKKyAgICBndWVzdCBwYWdlcyBhcyBsZWF2ZXMuCisgIGdmbnM6CisgICAgQW4gYXJyYXkgb2YgNTEyIGd1ZXN0IGZyYW1lIG51bWJlcnMsIG9uZSBmb3IgZWFjaCBwcmVzZW50IHB0ZS4gIFVzZWQgdG8KKyAgICBwZXJmb3JtIGEgcmV2ZXJzZSBtYXAgZnJvbSBhIHB0ZSB0byBhIGdmbi4gV2hlbiByb2xlLmRpcmVjdCBpcyBzZXQsIGFueQorICAgIGVsZW1lbnQgb2YgdGhpcyBhcnJheSBjYW4gYmUgY2FsY3VsYXRlZCBmcm9tIHRoZSBnZm4gZmllbGQgd2hlbiB1c2VkLCBpbgorICAgIHRoaXMgY2FzZSwgdGhlIGFycmF5IG9mIGdmbnMgaXMgbm90IGFsbG9jYXRlZC4gU2VlIHJvbGUuZGlyZWN0IGFuZCBnZm4uCisgIHJvb3RfY291bnQ6CisgICAgQSBjb3VudGVyIGtlZXBpbmcgdHJhY2sgb2YgaG93IG1hbnkgaGFyZHdhcmUgcmVnaXN0ZXJzIChndWVzdCBjcjMgb3IKKyAgICBwZHB0cnMpIGFyZSBub3cgcG9pbnRpbmcgYXQgdGhlIHBhZ2UuICBXaGlsZSB0aGlzIGNvdW50ZXIgaXMgbm9uemVybywgdGhlCisgICAgcGFnZSBjYW5ub3QgYmUgZGVzdHJveWVkLiAgU2VlIHJvbGUuaW52YWxpZC4KKyAgcGFyZW50X3B0ZXM6CisgICAgVGhlIHJldmVyc2UgbWFwcGluZyBmb3IgdGhlIHB0ZS9wdGVzIHBvaW50aW5nIGF0IHRoaXMgcGFnZSdzIHNwdC4gSWYKKyAgICBwYXJlbnRfcHRlcyBiaXQgMCBpcyB6ZXJvLCBvbmx5IG9uZSBzcHRlIHBvaW50cyBhdCB0aGlzIHBhZ2VzIGFuZAorICAgIHBhcmVudF9wdGVzIHBvaW50cyBhdCB0aGlzIHNpbmdsZSBzcHRlLCBvdGhlcndpc2UsIHRoZXJlIGV4aXN0cyBtdWx0aXBsZQorICAgIHNwdGVzIHBvaW50aW5nIGF0IHRoaXMgcGFnZSBhbmQgKHBhcmVudF9wdGVzICYgfjB4MSkgcG9pbnRzIGF0IGEgZGF0YQorICAgIHN0cnVjdHVyZSB3aXRoIGEgbGlzdCBvZiBwYXJlbnRfcHRlcy4KKyAgdW5zeW5jOgorICAgIElmIHRydWUsIHRoZW4gdGhlIHRyYW5zbGF0aW9ucyBpbiB0aGlzIHBhZ2UgbWF5IG5vdCBtYXRjaCB0aGUgZ3Vlc3QncworICAgIHRyYW5zbGF0aW9uLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBzdGF0ZSBvZiB0aGUgdGxiIHdoZW4gYSBwdGUgaXMKKyAgICBjaGFuZ2VkIGJ1dCBiZWZvcmUgdGhlIHRsYiBlbnRyeSBpcyBmbHVzaGVkLiAgQWNjb3JkaW5nbHksIHVuc3luYyBwdGVzCisgICAgYXJlIHN5bmNocm9uaXplZCB3aGVuIHRoZSBndWVzdCBleGVjdXRlcyBpbnZscGcgb3IgZmx1c2hlcyBpdHMgdGxiIGJ5CisgICAgb3RoZXIgbWVhbnMuICBWYWxpZCBmb3IgbGVhZiBwYWdlcy4KKyAgdW5zeW5jX2NoaWxkcmVuOgorICAgIEhvdyBtYW55IHNwdGVzIGluIHRoZSBwYWdlIHBvaW50IGF0IHBhZ2VzIHRoYXQgYXJlIHVuc3luYyAob3IgaGF2ZQorICAgIHVuc3luY2hyb25pemVkIGNoaWxkcmVuKS4KKyAgdW5zeW5jX2NoaWxkX2JpdG1hcDoKKyAgICBBIGJpdG1hcCBpbmRpY2F0aW5nIHdoaWNoIHNwdGVzIGluIHNwdCBwb2ludCAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgYXQKKyAgICBwYWdlcyB0aGF0IG1heSBiZSB1bnN5bmNocm9uaXplZC4gIFVzZWQgdG8gcXVpY2tseSBsb2NhdGUgYWxsIHVuc3ljaHJvbml6ZWQKKyAgICBwYWdlcyByZWFjaGFibGUgZnJvbSBhIGdpdmVuIHBhZ2UuCisgIG1tdV92YWxpZF9nZW46CisgICAgR2VuZXJhdGlvbiBudW1iZXIgb2YgdGhlIHBhZ2UuICBJdCBpcyBjb21wYXJlZCB3aXRoIGt2bS0+YXJjaC5tbXVfdmFsaWRfZ2VuCisgICAgZHVyaW5nIGhhc2ggdGFibGUgbG9va3VwLCBhbmQgdXNlZCB0byBza2lwIGludmFsaWRhdGVkIHNoYWRvdyBwYWdlcyAoc2VlCisgICAgIlphcHBpbmcgYWxsIHBhZ2VzIiBiZWxvdy4pCisgIGNsZWFyX3NwdGVfY291bnQ6CisgICAgT25seSBwcmVzZW50IG9uIDMyLWJpdCBob3N0cywgd2hlcmUgYSA2NC1iaXQgc3B0ZSBjYW5ub3QgYmUgd3JpdHRlbgorICAgIGF0b21pY2FsbHkuICBUaGUgcmVhZGVyIHVzZXMgdGhpcyB3aGlsZSBydW5uaW5nIG91dCBvZiB0aGUgTU1VIGxvY2sKKyAgICB0byBkZXRlY3QgaW4tcHJvZ3Jlc3MgdXBkYXRlcyBhbmQgcmV0cnkgdGhlbSB1bnRpbCB0aGUgd3JpdGVyIGhhcworICAgIGZpbmlzaGVkIHRoZSB3cml0ZS4KKyAgd3JpdGVfZmxvb2RpbmdfY291bnQ6CisgICAgQSBndWVzdCBtYXkgd3JpdGUgdG8gYSBwYWdlIHRhYmxlIG1hbnkgdGltZXMsIGNhdXNpbmcgYSBsb3Qgb2YKKyAgICBlbXVsYXRpb25zIGlmIHRoZSBwYWdlIG5lZWRzIHRvIGJlIHdyaXRlLXByb3RlY3RlZCAoc2VlICJTeW5jaHJvbml6ZWQKKyAgICBhbmQgdW5zeW5jaHJvbml6ZWQgcGFnZXMiIGJlbG93KS4gIExlYWYgcGFnZXMgY2FuIGJlIHVuc3luY2hyb25pemVkCisgICAgc28gdGhhdCB0aGV5IGRvIG5vdCB0cmlnZ2VyIGZyZXF1ZW50IGVtdWxhdGlvbiwgYnV0IHRoaXMgaXMgbm90CisgICAgcG9zc2libGUgZm9yIG5vbi1sZWFmcy4gIFRoaXMgZmllbGQgY291bnRzIHRoZSBudW1iZXIgb2YgZW11bGF0aW9ucworICAgIHNpbmNlIHRoZSBsYXN0IHRpbWUgdGhlIHBhZ2UgdGFibGUgd2FzIGFjdHVhbGx5IHVzZWQ7IGlmIGVtdWxhdGlvbgorICAgIGlzIHRyaWdnZXJlZCB0b28gZnJlcXVlbnRseSBvbiB0aGlzIHBhZ2UsIEtWTSB3aWxsIHVubWFwIHRoZSBwYWdlCisgICAgdG8gYXZvaWQgZW11bGF0aW9uIGluIHRoZSBmdXR1cmUuCisKK1JldmVyc2UgbWFwCis9PT09PT09PT09PQorCitUaGUgbW11IG1haW50YWlucyBhIHJldmVyc2UgbWFwcGluZyB3aGVyZWJ5IGFsbCBwdGVzIG1hcHBpbmcgYSBwYWdlIGNhbiBiZQorcmVhY2hlZCBnaXZlbiBpdHMgZ2ZuLiAgVGhpcyBpcyB1c2VkLCBmb3IgZXhhbXBsZSwgd2hlbiBzd2FwcGluZyBvdXQgYSBwYWdlLgorCitTeW5jaHJvbml6ZWQgYW5kIHVuc3luY2hyb25pemVkIHBhZ2VzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBndWVzdCB1c2VzIHR3byBldmVudHMgdG8gc3luY2hyb25pemUgaXRzIHRsYiBhbmQgcGFnZSB0YWJsZXM6IHRsYiBmbHVzaGVzCithbmQgcGFnZSBpbnZhbGlkYXRpb25zIChpbnZscGcpLgorCitBIHRsYiBmbHVzaCBtZWFucyB0aGF0IHdlIG5lZWQgdG8gc3luY2hyb25pemUgYWxsIHNwdGVzIHJlYWNoYWJsZSBmcm9tIHRoZQorZ3Vlc3QncyBjcjMuICBUaGlzIGlzIGV4cGVuc2l2ZSwgc28gd2Uga2VlcCBhbGwgZ3Vlc3QgcGFnZSB0YWJsZXMgd3JpdGUKK3Byb3RlY3RlZCwgYW5kIHN5bmNocm9uaXplIHNwdGVzIHRvIGdwdGVzIHdoZW4gYSBncHRlIGlzIHdyaXR0ZW4uCisKK0Egc3BlY2lhbCBjYXNlIGlzIHdoZW4gYSBndWVzdCBwYWdlIHRhYmxlIGlzIHJlYWNoYWJsZSBmcm9tIHRoZSBjdXJyZW50CitndWVzdCBjcjMuICBJbiB0aGlzIGNhc2UsIHRoZSBndWVzdCBpcyBvYmxpZ2VkIHRvIGlzc3VlIGFuIGludmxwZyBpbnN0cnVjdGlvbgorYmVmb3JlIHVzaW5nIHRoZSB0cmFuc2xhdGlvbi4gIFdlIHRha2UgYWR2YW50YWdlIG9mIHRoYXQgYnkgcmVtb3Zpbmcgd3JpdGUKK3Byb3RlY3Rpb24gZnJvbSB0aGUgZ3Vlc3QgcGFnZSwgYW5kIGFsbG93aW5nIHRoZSBndWVzdCB0byBtb2RpZnkgaXQgZnJlZWx5LgorV2Ugc3luY2hyb25pemUgbW9kaWZpZWQgZ3B0ZXMgd2hlbiB0aGUgZ3Vlc3QgaW52b2tlcyBpbnZscGcuICBUaGlzIHJlZHVjZXMKK3RoZSBhbW91bnQgb2YgZW11bGF0aW9uIHdlIGhhdmUgdG8gZG8gd2hlbiB0aGUgZ3Vlc3QgbW9kaWZpZXMgbXVsdGlwbGUgZ3B0ZXMsCitvciB3aGVuIHRoZSBhIGd1ZXN0IHBhZ2UgaXMgbm8gbG9uZ2VyIHVzZWQgYXMgYSBwYWdlIHRhYmxlIGFuZCBpcyB1c2VkIGZvcgorcmFuZG9tIGd1ZXN0IGRhdGEuCisKK0FzIGEgc2lkZSBlZmZlY3Qgd2UgaGF2ZSB0byByZXN5bmNocm9uaXplIGFsbCByZWFjaGFibGUgdW5zeW5jaHJvbml6ZWQgc2hhZG93CitwYWdlcyBvbiBhIHRsYiBmbHVzaC4KKworCitSZWFjdGlvbiB0byBldmVudHMKKz09PT09PT09PT09PT09PT09PQorCistIGd1ZXN0IHBhZ2UgZmF1bHQgKG9yIG5wdCBwYWdlIGZhdWx0LCBvciBlcHQgdmlvbGF0aW9uKQorCitUaGlzIGlzIHRoZSBtb3N0IGNvbXBsaWNhdGVkIGV2ZW50LiAgVGhlIGNhdXNlIG9mIGEgcGFnZSBmYXVsdCBjYW4gYmU6CisKKyAgLSBhIHRydWUgZ3Vlc3QgZmF1bHQgKHRoZSBndWVzdCB0cmFuc2xhdGlvbiB3b24ndCBhbGxvdyB0aGUgYWNjZXNzKSAoKikKKyAgLSBhY2Nlc3MgdG8gYSBtaXNzaW5nIHRyYW5zbGF0aW9uCisgIC0gYWNjZXNzIHRvIGEgcHJvdGVjdGVkIHRyYW5zbGF0aW9uCisgICAgLSB3aGVuIGxvZ2dpbmcgZGlydHkgcGFnZXMsIG1lbW9yeSBpcyB3cml0ZSBwcm90ZWN0ZWQKKyAgICAtIHN5bmNocm9uaXplZCBzaGFkb3cgcGFnZXMgYXJlIHdyaXRlIHByb3RlY3RlZCAoKikKKyAgLSBhY2Nlc3MgdG8gdW50cmFuc2xhdGFibGUgbWVtb3J5IChtbWlvKQorCisgICgqKSBub3QgYXBwbGljYWJsZSBpbiBkaXJlY3QgbW9kZQorCitIYW5kbGluZyBhIHBhZ2UgZmF1bHQgaXMgcGVyZm9ybWVkIGFzIGZvbGxvd3M6CisKKyAtIGlmIHRoZSBSU1YgYml0IG9mIHRoZSBlcnJvciBjb2RlIGlzIHNldCwgdGhlIHBhZ2UgZmF1bHQgaXMgY2F1c2VkIGJ5IGd1ZXN0CisgICBhY2Nlc3NpbmcgTU1JTyBhbmQgY2FjaGVkIE1NSU8gaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlLgorICAgLSB3YWxrIHNoYWRvdyBwYWdlIHRhYmxlCisgICAtIGNoZWNrIGZvciB2YWxpZCBnZW5lcmF0aW9uIG51bWJlciBpbiB0aGUgc3B0ZSAoc2VlICJGYXN0IGludmFsaWRhdGlvbiBvZgorICAgICBNTUlPIHNwdGVzIiBiZWxvdykKKyAgIC0gY2FjaGUgdGhlIGluZm9ybWF0aW9uIHRvIHZjcHUtPmFyY2gubW1pb19ndmEsIHZjcHUtPmFyY2guYWNjZXNzIGFuZAorICAgICB2Y3B1LT5hcmNoLm1taW9fZ2ZuLCBhbmQgY2FsbCB0aGUgZW11bGF0b3IKKyAtIElmIGJvdGggUCBiaXQgYW5kIFIvVyBiaXQgb2YgZXJyb3IgY29kZSBhcmUgc2V0LCB0aGlzIGNvdWxkIHBvc3NpYmx5CisgICBiZSBoYW5kbGVkIGFzIGEgImZhc3QgcGFnZSBmYXVsdCIgKGZpeGVkIHdpdGhvdXQgdGFraW5nIHRoZSBNTVUgbG9jaykuICBTZWUKKyAgIHRoZSBkZXNjcmlwdGlvbiBpbiBEb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2xvY2tpbmcudHh0LgorIC0gaWYgbmVlZGVkLCB3YWxrIHRoZSBndWVzdCBwYWdlIHRhYmxlcyB0byBkZXRlcm1pbmUgdGhlIGd1ZXN0IHRyYW5zbGF0aW9uCisgICAoZ3ZhLT5ncGEgb3IgbmdwYS0+Z3BhKQorICAgLSBpZiBwZXJtaXNzaW9ucyBhcmUgaW5zdWZmaWNpZW50LCByZWZsZWN0IHRoZSBmYXVsdCBiYWNrIHRvIHRoZSBndWVzdAorIC0gZGV0ZXJtaW5lIHRoZSBob3N0IHBhZ2UKKyAgIC0gaWYgdGhpcyBpcyBhbiBtbWlvIHJlcXVlc3QsIHRoZXJlIGlzIG5vIGhvc3QgcGFnZTsgY2FjaGUgdGhlIGluZm8gdG8KKyAgICAgdmNwdS0+YXJjaC5tbWlvX2d2YSwgdmNwdS0+YXJjaC5hY2Nlc3MgYW5kIHZjcHUtPmFyY2gubW1pb19nZm4KKyAtIHdhbGsgdGhlIHNoYWRvdyBwYWdlIHRhYmxlIHRvIGZpbmQgdGhlIHNwdGUgZm9yIHRoZSB0cmFuc2xhdGlvbiwKKyAgIGluc3RhbnRpYXRpbmcgbWlzc2luZyBpbnRlcm1lZGlhdGUgcGFnZSB0YWJsZXMgYXMgbmVjZXNzYXJ5CisgICAtIElmIHRoaXMgaXMgYW4gbW1pbyByZXF1ZXN0LCBjYWNoZSB0aGUgbW1pbyBpbmZvIHRvIHRoZSBzcHRlIGFuZCBzZXQgc29tZQorICAgICByZXNlcnZlZCBiaXQgb24gdGhlIHNwdGUgKHNlZSBjYWxsZXJzIG9mIGt2bV9tbXVfc2V0X21taW9fc3B0ZV9tYXNrKQorIC0gdHJ5IHRvIHVuc3luY2hyb25pemUgdGhlIHBhZ2UKKyAgIC0gaWYgc3VjY2Vzc2Z1bCwgd2UgY2FuIGxldCB0aGUgZ3Vlc3QgY29udGludWUgYW5kIG1vZGlmeSB0aGUgZ3B0ZQorIC0gZW11bGF0ZSB0aGUgaW5zdHJ1Y3Rpb24KKyAgIC0gaWYgZmFpbGVkLCB1bnNoYWRvdyB0aGUgcGFnZSBhbmQgbGV0IHRoZSBndWVzdCBjb250aW51ZQorIC0gdXBkYXRlIGFueSB0cmFuc2xhdGlvbnMgdGhhdCB3ZXJlIG1vZGlmaWVkIGJ5IHRoZSBpbnN0cnVjdGlvbgorCitpbnZscGcgaGFuZGxpbmc6CisKKyAgLSB3YWxrIHRoZSBzaGFkb3cgcGFnZSBoaWVyYXJjaHkgYW5kIGRyb3AgYWZmZWN0ZWQgdHJhbnNsYXRpb25zCisgIC0gdHJ5IHRvIHJlaW5zdGFudGlhdGUgdGhlIGluZGljYXRlZCB0cmFuc2xhdGlvbiBpbiB0aGUgaG9wZSB0aGF0IHRoZQorICAgIGd1ZXN0IHdpbGwgdXNlIGl0IGluIHRoZSBuZWFyIGZ1dHVyZQorCitHdWVzdCBjb250cm9sIHJlZ2lzdGVyIHVwZGF0ZXM6CisKKy0gbW92IHRvIGNyMworICAtIGxvb2sgdXAgbmV3IHNoYWRvdyByb290cworICAtIHN5bmNocm9uaXplIG5ld2x5IHJlYWNoYWJsZSBzaGFkb3cgcGFnZXMKKworLSBtb3YgdG8gY3IwL2NyNC9lZmVyCisgIC0gc2V0IHVwIG1tdSBjb250ZXh0IGZvciBuZXcgcGFnaW5nIG1vZGUKKyAgLSBsb29rIHVwIG5ldyBzaGFkb3cgcm9vdHMKKyAgLSBzeW5jaHJvbml6ZSBuZXdseSByZWFjaGFibGUgc2hhZG93IHBhZ2VzCisKK0hvc3QgdHJhbnNsYXRpb24gdXBkYXRlczoKKworICAtIG1tdSBub3RpZmllciBjYWxsZWQgd2l0aCB1cGRhdGVkIGh2YQorICAtIGxvb2sgdXAgYWZmZWN0ZWQgc3B0ZXMgdGhyb3VnaCByZXZlcnNlIG1hcAorICAtIGRyb3AgKG9yIHVwZGF0ZSkgdHJhbnNsYXRpb25zCisKK0VtdWxhdGluZyBjcjAud3AKKz09PT09PT09PT09PT09PT0KKworSWYgdGRwIGlzIG5vdCBlbmFibGVkLCB0aGUgaG9zdCBtdXN0IGtlZXAgY3IwLndwPTEgc28gcGFnZSB3cml0ZSBwcm90ZWN0aW9uCit3b3JrcyBmb3IgdGhlIGd1ZXN0IGtlcm5lbCwgbm90IGd1ZXN0IGd1ZXN0IHVzZXJzcGFjZS4gIFdoZW4gdGhlIGd1ZXN0CitjcjAud3A9MSwgdGhpcyBkb2VzIG5vdCBwcmVzZW50IGEgcHJvYmxlbS4gIEhvd2V2ZXIgd2hlbiB0aGUgZ3Vlc3QgY3IwLndwPTAsCit3ZSBjYW5ub3QgbWFwIHRoZSBwZXJtaXNzaW9ucyBmb3IgZ3B0ZS51PTEsIGdwdGUudz0wIHRvIGFueSBzcHRlICh0aGUKK3NlbWFudGljcyByZXF1aXJlIGFsbG93aW5nIGFueSBndWVzdCBrZXJuZWwgYWNjZXNzIHBsdXMgdXNlciByZWFkIGFjY2VzcykuCisKK1dlIGhhbmRsZSB0aGlzIGJ5IG1hcHBpbmcgdGhlIHBlcm1pc3Npb25zIHRvIHR3byBwb3NzaWJsZSBzcHRlcywgZGVwZW5kaW5nCitvbiBmYXVsdCB0eXBlOgorCistIGtlcm5lbCB3cml0ZSBmYXVsdDogc3B0ZS51PTAsIHNwdGUudz0xIChhbGxvd3MgZnVsbCBrZXJuZWwgYWNjZXNzLAorICBkaXNhbGxvd3MgdXNlciBhY2Nlc3MpCistIHJlYWQgZmF1bHQ6IHNwdGUudT0xLCBzcHRlLnc9MCAoYWxsb3dzIGZ1bGwgcmVhZCBhY2Nlc3MsIGRpc2FsbG93cyBrZXJuZWwKKyAgd3JpdGUgYWNjZXNzKQorCisodXNlciB3cml0ZSBmYXVsdHMgZ2VuZXJhdGUgYSAjUEYpCisKK0luIHRoZSBmaXJzdCBjYXNlIHRoZXJlIGFyZSB0d28gYWRkaXRpb25hbCBjb21wbGljYXRpb25zOgorLSBpZiBDUjQuU01FUCBpcyBlbmFibGVkOiBzaW5jZSB3ZSd2ZSB0dXJuZWQgdGhlIHBhZ2UgaW50byBhIGtlcm5lbCBwYWdlLAorICB0aGUga2VybmVsIG1heSBub3cgZXhlY3V0ZSBpdC4gIFdlIGhhbmRsZSB0aGlzIGJ5IGFsc28gc2V0dGluZyBzcHRlLm54LgorICBJZiB3ZSBnZXQgYSB1c2VyIGZldGNoIG9yIHJlYWQgZmF1bHQsIHdlJ2xsIGNoYW5nZSBzcHRlLnU9MSBhbmQKKyAgc3B0ZS5ueD1ncHRlLm54IGJhY2suICBGb3IgdGhpcyB0byB3b3JrLCBLVk0gZm9yY2VzIEVGRVIuTlggdG8gMSB3aGVuCisgIHNoYWRvdyBwYWdpbmcgaXMgaW4gdXNlLgorLSBpZiBDUjQuU01BUCBpcyBkaXNhYmxlZDogc2luY2UgdGhlIHBhZ2UgaGFzIGJlZW4gY2hhbmdlZCB0byBhIGtlcm5lbAorICBwYWdlLCBpdCBjYW4gbm90IGJlIHJldXNlZCB3aGVuIENSNC5TTUFQIGlzIGVuYWJsZWQuIFdlIHNldAorICBDUjQuU01BUCAmJiAhQ1IwLldQIGludG8gc2hhZG93IHBhZ2UncyByb2xlIHRvIGF2b2lkIHRoaXMgY2FzZS4gTm90ZSwKKyAgaGVyZSB3ZSBkbyBub3QgY2FyZSB0aGUgY2FzZSB0aGF0IENSNC5TTUFQIGlzIGVuYWJsZWQgc2luY2UgS1ZNIHdpbGwKKyAgZGlyZWN0bHkgaW5qZWN0ICNQRiB0byBndWVzdCBkdWUgdG8gZmFpbGVkIHBlcm1pc3Npb24gY2hlY2suCisKK1RvIHByZXZlbnQgYW4gc3B0ZSB0aGF0IHdhcyBjb252ZXJ0ZWQgaW50byBhIGtlcm5lbCBwYWdlIHdpdGggY3IwLndwPTAKK2Zyb20gYmVpbmcgd3JpdHRlbiBieSB0aGUga2VybmVsIGFmdGVyIGNyMC53cCBoYXMgY2hhbmdlZCB0byAxLCB3ZSBtYWtlCit0aGUgdmFsdWUgb2YgY3IwLndwIHBhcnQgb2YgdGhlIHBhZ2Ugcm9sZS4gIFRoaXMgbWVhbnMgdGhhdCBhbiBzcHRlIGNyZWF0ZWQKK3dpdGggb25lIHZhbHVlIG9mIGNyMC53cCBjYW5ub3QgYmUgdXNlZCB3aGVuIGNyMC53cCBoYXMgYSBkaWZmZXJlbnQgdmFsdWUgLQoraXQgd2lsbCBzaW1wbHkgYmUgbWlzc2VkIGJ5IHRoZSBzaGFkb3cgcGFnZSBsb29rdXAgY29kZS4gIEEgc2ltaWxhciBpc3N1ZQorZXhpc3RzIHdoZW4gYW4gc3B0ZSBjcmVhdGVkIHdpdGggY3IwLndwPTAgYW5kIGNyNC5zbWVwPTAgaXMgdXNlZCBhZnRlcgorY2hhbmdpbmcgY3I0LnNtZXAgdG8gMS4gIFRvIGF2b2lkIHRoaXMsIHRoZSB2YWx1ZSBvZiAhY3IwLndwICYmIGNyNC5zbWVwCitpcyBhbHNvIG1hZGUgYSBwYXJ0IG9mIHRoZSBwYWdlIHJvbGUuCisKK0xhcmdlIHBhZ2VzCis9PT09PT09PT09PQorCitUaGUgbW11IHN1cHBvcnRzIGFsbCBjb21iaW5hdGlvbnMgb2YgbGFyZ2UgYW5kIHNtYWxsIGd1ZXN0IGFuZCBob3N0IHBhZ2VzLgorU3VwcG9ydGVkIHBhZ2Ugc2l6ZXMgaW5jbHVkZSA0aywgMk0sIDRNLCBhbmQgMUcuICA0TSBwYWdlcyBhcmUgdHJlYXRlZCBhcwordHdvIHNlcGFyYXRlIDJNIHBhZ2VzLCBvbiBib3RoIGd1ZXN0IGFuZCBob3N0LCBzaW5jZSB0aGUgbW11IGFsd2F5cyB1c2VzIFBBRQorcGFnaW5nLgorCitUbyBpbnN0YW50aWF0ZSBhIGxhcmdlIHNwdGUsIGZvdXIgY29uc3RyYWludHMgbXVzdCBiZSBzYXRpc2ZpZWQ6CisKKy0gdGhlIHNwdGUgbXVzdCBwb2ludCB0byBhIGxhcmdlIGhvc3QgcGFnZQorLSB0aGUgZ3Vlc3QgcHRlIG11c3QgYmUgYSBsYXJnZSBwdGUgb2YgYXQgbGVhc3QgZXF1aXZhbGVudCBzaXplIChpZiB0ZHAgaXMKKyAgZW5hYmxlZCwgdGhlcmUgaXMgbm8gZ3Vlc3QgcHRlIGFuZCB0aGlzIGNvbmRpdGlvbiBpcyBzYXRpc2ZpZWQpCistIGlmIHRoZSBzcHRlIHdpbGwgYmUgd3JpdGVhYmxlLCB0aGUgbGFyZ2UgcGFnZSBmcmFtZSBtYXkgbm90IG92ZXJsYXAgYW55CisgIHdyaXRlLXByb3RlY3RlZCBwYWdlcworLSB0aGUgZ3Vlc3QgcGFnZSBtdXN0IGJlIHdob2xseSBjb250YWluZWQgYnkgYSBzaW5nbGUgbWVtb3J5IHNsb3QKKworVG8gY2hlY2sgdGhlIGxhc3QgdHdvIGNvbmRpdGlvbnMsIHRoZSBtbXUgbWFpbnRhaW5zIGEgLT53cml0ZV9jb3VudCBzZXQgb2YKK2FycmF5cyBmb3IgZWFjaCBtZW1vcnkgc2xvdCBhbmQgbGFyZ2UgcGFnZSBzaXplLiAgRXZlcnkgd3JpdGUgcHJvdGVjdGVkIHBhZ2UKK2NhdXNlcyBpdHMgd3JpdGVfY291bnQgdG8gYmUgaW5jcmVtZW50ZWQsIHRodXMgcHJldmVudGluZyBpbnN0YW50aWF0aW9uIG9mCithIGxhcmdlIHNwdGUuICBUaGUgZnJhbWVzIGF0IHRoZSBlbmQgb2YgYW4gdW5hbGlnbmVkIG1lbW9yeSBzbG90IGhhdmUKK2FydGlmaWNpYWxseSBpbmZsYXRlZCAtPndyaXRlX2NvdW50cyBzbyB0aGV5IGNhbiBuZXZlciBiZSBpbnN0YW50aWF0ZWQuCisKK1phcHBpbmcgYWxsIHBhZ2VzIChwYWdlIGdlbmVyYXRpb24gY291bnQpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGb3IgdGhlIGxhcmdlIG1lbW9yeSBndWVzdHMsIHdhbGtpbmcgYW5kIHphcHBpbmcgYWxsIHBhZ2VzIGlzIHJlYWxseSBzbG93CisoYmVjYXVzZSB0aGVyZSBhcmUgYSBsb3Qgb2YgcGFnZXMpLCBhbmQgYWxzbyBibG9ja3MgbWVtb3J5IGFjY2Vzc2VzIG9mCithbGwgVkNQVXMgYmVjYXVzZSBpdCBuZWVkcyB0byBob2xkIHRoZSBNTVUgbG9jay4KKworVG8gbWFrZSBpdCBiZSBtb3JlIHNjYWxhYmxlLCBrdm0gbWFpbnRhaW5zIGEgZ2xvYmFsIGdlbmVyYXRpb24gbnVtYmVyCit3aGljaCBpcyBzdG9yZWQgaW4ga3ZtLT5hcmNoLm1tdV92YWxpZF9nZW4uICBFdmVyeSBzaGFkb3cgcGFnZSBzdG9yZXMKK3RoZSBjdXJyZW50IGdsb2JhbCBnZW5lcmF0aW9uLW51bWJlciBpbnRvIHNwLT5tbXVfdmFsaWRfZ2VuIHdoZW4gaXQKK2lzIGNyZWF0ZWQuICBQYWdlcyB3aXRoIGEgbWlzbWF0Y2hpbmcgZ2VuZXJhdGlvbiBudW1iZXIgYXJlICJvYnNvbGV0ZSIuCisKK1doZW4gS1ZNIG5lZWQgemFwIGFsbCBzaGFkb3cgcGFnZXMgc3B0ZXMsIGl0IGp1c3Qgc2ltcGx5IGluY3JlYXNlcyB0aGUgZ2xvYmFsCitnZW5lcmF0aW9uLW51bWJlciB0aGVuIHJlbG9hZCByb290IHNoYWRvdyBwYWdlcyBvbiBhbGwgdmNwdXMuICBBcyB0aGUgVkNQVXMKK2NyZWF0ZSBuZXcgc2hhZG93IHBhZ2UgdGFibGVzLCB0aGUgb2xkIHBhZ2VzIGFyZSBub3QgdXNlZCBiZWNhdXNlIG9mIHRoZQorbWlzbWF0Y2hpbmcgZ2VuZXJhdGlvbiBudW1iZXIuCisKK0tWTSB0aGVuIHdhbGtzIHRocm91Z2ggYWxsIHBhZ2VzIGFuZCB6YXBzIG9ic29sZXRlIHBhZ2VzLiAgV2hpbGUgdGhlIHphcAorb3BlcmF0aW9uIG5lZWRzIHRvIHRha2UgdGhlIE1NVSBsb2NrLCB0aGUgbG9jayBjYW4gYmUgcmVsZWFzZWQgcGVyaW9kaWNhbGx5CitzbyB0aGF0IHRoZSBWQ1BVcyBjYW4gbWFrZSBwcm9ncmVzcy4KKworRmFzdCBpbnZhbGlkYXRpb24gb2YgTU1JTyBzcHRlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBcyBtZW50aW9uZWQgaW4gIlJlYWN0aW9uIHRvIGV2ZW50cyIgYWJvdmUsIGt2bSB3aWxsIGNhY2hlIE1NSU8KK2luZm9ybWF0aW9uIGluIGxlYWYgc3B0ZXMuICBXaGVuIGEgbmV3IG1lbXNsb3QgaXMgYWRkZWQgb3IgYW4gZXhpc3RpbmcKK21lbXNsb3QgaXMgY2hhbmdlZCwgdGhpcyBpbmZvcm1hdGlvbiBtYXkgYmVjb21lIHN0YWxlIGFuZCBuZWVkcyB0byBiZQoraW52YWxpZGF0ZWQuICBUaGlzIGFsc28gbmVlZHMgdG8gaG9sZCB0aGUgTU1VIGxvY2sgd2hpbGUgd2Fsa2luZyBhbGwKK3NoYWRvdyBwYWdlcywgYW5kIGlzIG1hZGUgbW9yZSBzY2FsYWJsZSB3aXRoIGEgc2ltaWxhciB0ZWNobmlxdWUuCisKK01NSU8gc3B0ZXMgaGF2ZSBhIGZldyBzcGFyZSBiaXRzLCB3aGljaCBhcmUgdXNlZCB0byBzdG9yZSBhCitnZW5lcmF0aW9uIG51bWJlci4gIFRoZSBnbG9iYWwgZ2VuZXJhdGlvbiBudW1iZXIgaXMgc3RvcmVkIGluCitrdm1fbWVtc2xvdHMoa3ZtKS0+Z2VuZXJhdGlvbiwgYW5kIGluY3JlYXNlZCB3aGVuZXZlciBndWVzdCBtZW1vcnkgaW5mbworY2hhbmdlcy4gIFRoaXMgZ2VuZXJhdGlvbiBudW1iZXIgaXMgZGlzdGluY3QgZnJvbSB0aGUgb25lIGRlc2NyaWJlZCBpbgordGhlIHByZXZpb3VzIHNlY3Rpb24uCisKK1doZW4gS1ZNIGZpbmRzIGFuIE1NSU8gc3B0ZSwgaXQgY2hlY2tzIHRoZSBnZW5lcmF0aW9uIG51bWJlciBvZiB0aGUgc3B0ZS4KK0lmIHRoZSBnZW5lcmF0aW9uIG51bWJlciBvZiB0aGUgc3B0ZSBkb2VzIG5vdCBlcXVhbCB0aGUgZ2xvYmFsIGdlbmVyYXRpb24KK251bWJlciwgaXQgd2lsbCBpZ25vcmUgdGhlIGNhY2hlZCBNTUlPIGluZm9ybWF0aW9uIGFuZCBoYW5kbGUgdGhlIHBhZ2UKK2ZhdWx0IHRocm91Z2ggdGhlIHNsb3cgcGF0aC4KKworU2luY2Ugb25seSAxOSBiaXRzIGFyZSB1c2VkIHRvIHN0b3JlIGdlbmVyYXRpb24tbnVtYmVyIG9uIG1taW8gc3B0ZSwgYWxsCitwYWdlcyBhcmUgemFwcGVkIHdoZW4gdGhlcmUgaXMgYW4gb3ZlcmZsb3cuCisKK1VuZm9ydHVuYXRlbHksIGEgc2luZ2xlIG1lbW9yeSBhY2Nlc3MgbWlnaHQgYWNjZXNzIGt2bV9tZW1zbG90cyhrdm0pIG11bHRpcGxlCit0aW1lcywgdGhlIGxhc3Qgb25lIGhhcHBlbmluZyB3aGVuIHRoZSBnZW5lcmF0aW9uIG51bWJlciBpcyByZXRyaWV2ZWQgYW5kCitzdG9yZWQgaW50byB0aGUgTU1JTyBzcHRlLiAgVGh1cywgdGhlIE1NSU8gc3B0ZSBtaWdodCBiZSBjcmVhdGVkIGJhc2VkIG9uCitvdXQtb2YtZGF0ZSBpbmZvcm1hdGlvbiwgYnV0IHdpdGggYW4gdXAtdG8tZGF0ZSBnZW5lcmF0aW9uIG51bWJlci4KKworVG8gYXZvaWQgdGhpcywgdGhlIGdlbmVyYXRpb24gbnVtYmVyIGlzIGluY3JlbWVudGVkIGFnYWluIGFmdGVyIHN5bmNocm9uaXplX3NyY3UKK3JldHVybnM7IHRodXMsIHRoZSBsb3cgYml0IG9mIGt2bV9tZW1zbG90cyhrdm0pLT5nZW5lcmF0aW9uIGlzIG9ubHkgMSBkdXJpbmcgYQorbWVtc2xvdCB1cGRhdGUsIHdoaWxlIHNvbWUgU1JDVSByZWFkZXJzIG1pZ2h0IGJlIHVzaW5nIHRoZSBvbGQgY29weS4gIFdlIGRvIG5vdAord2FudCB0byB1c2UgYW4gTU1JTyBzcHRlcyBjcmVhdGVkIHdpdGggYW4gb2RkIGdlbmVyYXRpb24gbnVtYmVyLCBhbmQgd2UgY2FuIGRvCit0aGlzIHdpdGhvdXQgbG9zaW5nIGEgYml0IGluIHRoZSBNTUlPIHNwdGUuICBUaGUgbG93IGJpdCBvZiB0aGUgZ2VuZXJhdGlvbgoraXMgbm90IHN0b3JlZCBpbiBNTUlPIHNwdGUsIGFuZCBwcmVzdW1lZCB6ZXJvIHdoZW4gaXQgaXMgZXh0cmFjdGVkIG91dCBvZiB0aGUKK3NwdGUuICBJZiBLVk0gaXMgdW5sdWNreSBhbmQgY3JlYXRlcyBhbiBNTUlPIHNwdGUgd2hpbGUgdGhlIGxvdyBiaXQgaXMgMSwKK3RoZSBuZXh0IGFjY2VzcyB0byB0aGUgc3B0ZSB3aWxsIGFsd2F5cyBiZSBhIGNhY2hlIG1pc3MuCisKKworRnVydGhlciByZWFkaW5nCis9PT09PT09PT09PT09PT0KKworLSBOUFQgcHJlc2VudGF0aW9uIGZyb20gS1ZNIEZvcnVtIDIwMDgKKyAgaHR0cDovL3d3dy5saW51eC1rdm0ub3JnL3dpa2kvaW1hZ2VzL2MvYzgvS3ZtRm9ydW0yMDA4JTI0a2RmMjAwOF8yMS5wZGYKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9tc3IudHh0IGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9tc3IudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhNzFjOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL21zci50eHQKQEAgLTAsMCArMSwyNjYgQEAKK0tWTS1zcGVjaWZpYyBNU1JzLgorR2xhdWJlciBDb3N0YSA8Z2xvbW1lckByZWRoYXQuY29tPiwgUmVkIEhhdCBJbmMsIDIwMTAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0tWTSBtYWtlcyB1c2Ugb2Ygc29tZSBjdXN0b20gTVNScyB0byBzZXJ2aWNlIHNvbWUgcmVxdWVzdHMuCisKK0N1c3RvbSBNU1JzIGhhdmUgYSByYW5nZSByZXNlcnZlZCBmb3IgdGhlbSwgdGhhdCBnb2VzIGZyb20KKzB4NGI1NjRkMDAgdG8gMHg0YjU2NGRmZi4gVGhlcmUgYXJlIE1TUnMgb3V0c2lkZSB0aGlzIGFyZWEsCitidXQgdGhleSBhcmUgZGVwcmVjYXRlZCBhbmQgdGhlaXIgdXNlIGlzIGRpc2NvdXJhZ2VkLgorCitDdXN0b20gTVNSIGxpc3QKKy0tLS0tLS0tCisKK1RoZSBjdXJyZW50IHN1cHBvcnRlZCBDdXN0b20gTVNSIGxpc3QgaXM6CisKK01TUl9LVk1fV0FMTF9DTE9DS19ORVc6ICAgMHg0YjU2NGQwMAorCisJZGF0YTogNC1ieXRlIGFsaWdubWVudCBwaHlzaWNhbCBhZGRyZXNzIG9mIGEgbWVtb3J5IGFyZWEgd2hpY2ggbXVzdCBiZQorCWluIGd1ZXN0IFJBTS4gVGhpcyBtZW1vcnkgaXMgZXhwZWN0ZWQgdG8gaG9sZCBhIGNvcHkgb2YgdGhlIGZvbGxvd2luZworCXN0cnVjdHVyZToKKworCXN0cnVjdCBwdmNsb2NrX3dhbGxfY2xvY2sgeworCQl1MzIgICB2ZXJzaW9uOworCQl1MzIgICBzZWM7CisJCXUzMiAgIG5zZWM7CisJfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSk7CisKKwl3aG9zZSBkYXRhIHdpbGwgYmUgZmlsbGVkIGluIGJ5IHRoZSBoeXBlcnZpc29yLiBUaGUgaHlwZXJ2aXNvciBpcyBvbmx5CisJZ3VhcmFudGVlZCB0byB1cGRhdGUgdGhpcyBkYXRhIGF0IHRoZSBtb21lbnQgb2YgTVNSIHdyaXRlLgorCVVzZXJzIHRoYXQgd2FudCB0byByZWxpYWJseSBxdWVyeSB0aGlzIGluZm9ybWF0aW9uIG1vcmUgdGhhbiBvbmNlIGhhdmUKKwl0byB3cml0ZSBtb3JlIHRoYW4gb25jZSB0byB0aGlzIE1TUi4gRmllbGRzIGhhdmUgdGhlIGZvbGxvd2luZyBtZWFuaW5nczoKKworCQl2ZXJzaW9uOiBndWVzdCBoYXMgdG8gY2hlY2sgdmVyc2lvbiBiZWZvcmUgYW5kIGFmdGVyIGdyYWJiaW5nCisJCXRpbWUgaW5mb3JtYXRpb24gYW5kIGNoZWNrIHRoYXQgdGhleSBhcmUgYm90aCBlcXVhbCBhbmQgZXZlbi4KKwkJQW4gb2RkIHZlcnNpb24gaW5kaWNhdGVzIGFuIGluLXByb2dyZXNzIHVwZGF0ZS4KKworCQlzZWM6IG51bWJlciBvZiBzZWNvbmRzIGZvciB3YWxsY2xvY2sgYXQgdGltZSBvZiBib290LgorCisJCW5zZWM6IG51bWJlciBvZiBuYW5vc2Vjb25kcyBmb3Igd2FsbGNsb2NrIGF0IHRpbWUgb2YgYm9vdC4KKworCUluIG9yZGVyIHRvIGdldCB0aGUgY3VycmVudCB3YWxsY2xvY2sgdGltZSwgdGhlIHN5c3RlbV90aW1lIGZyb20KKwlNU1JfS1ZNX1NZU1RFTV9USU1FX05FVyBuZWVkcyB0byBiZSBhZGRlZC4KKworCU5vdGUgdGhhdCBhbHRob3VnaCBNU1JzIGFyZSBwZXItQ1BVIGVudGl0aWVzLCB0aGUgZWZmZWN0IG9mIHRoaXMKKwlwYXJ0aWN1bGFyIE1TUiBpcyBnbG9iYWwuCisKKwlBdmFpbGFiaWxpdHkgb2YgdGhpcyBNU1IgbXVzdCBiZSBjaGVja2VkIHZpYSBiaXQgMyBpbiAweDQwMDAwMDEgY3B1aWQKKwlsZWFmIHByaW9yIHRvIHVzYWdlLgorCitNU1JfS1ZNX1NZU1RFTV9USU1FX05FVzogIDB4NGI1NjRkMDEKKworCWRhdGE6IDQtYnl0ZSBhbGlnbmVkIHBoeXNpY2FsIGFkZHJlc3Mgb2YgYSBtZW1vcnkgYXJlYSB3aGljaCBtdXN0IGJlIGluCisJZ3Vlc3QgUkFNLCBwbHVzIGFuIGVuYWJsZSBiaXQgaW4gYml0IDAuIFRoaXMgbWVtb3J5IGlzIGV4cGVjdGVkIHRvIGhvbGQKKwlhIGNvcHkgb2YgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6CisKKwlzdHJ1Y3QgcHZjbG9ja192Y3B1X3RpbWVfaW5mbyB7CisJCXUzMiAgIHZlcnNpb247CisJCXUzMiAgIHBhZDA7CisJCXU2NCAgIHRzY190aW1lc3RhbXA7CisJCXU2NCAgIHN5c3RlbV90aW1lOworCQl1MzIgICB0c2NfdG9fc3lzdGVtX211bDsKKwkJczggICAgdHNjX3NoaWZ0OworCQl1OCAgICBmbGFnczsKKwkJdTggICAgcGFkWzJdOworCX0gX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpOyAvKiAzMiBieXRlcyAqLworCisJd2hvc2UgZGF0YSB3aWxsIGJlIGZpbGxlZCBpbiBieSB0aGUgaHlwZXJ2aXNvciBwZXJpb2RpY2FsbHkuIE9ubHkgb25lCisJd3JpdGUsIG9yIHJlZ2lzdHJhdGlvbiwgaXMgbmVlZGVkIGZvciBlYWNoIFZDUFUuIFRoZSBpbnRlcnZhbCBiZXR3ZWVuCisJdXBkYXRlcyBvZiB0aGlzIHN0cnVjdHVyZSBpcyBhcmJpdHJhcnkgYW5kIGltcGxlbWVudGF0aW9uLWRlcGVuZGVudC4KKwlUaGUgaHlwZXJ2aXNvciBtYXkgdXBkYXRlIHRoaXMgc3RydWN0dXJlIGF0IGFueSB0aW1lIGl0IHNlZXMgZml0IHVudGlsCisJYW55dGhpbmcgd2l0aCBiaXQwID09IDAgaXMgd3JpdHRlbiB0byBpdC4KKworCUZpZWxkcyBoYXZlIHRoZSBmb2xsb3dpbmcgbWVhbmluZ3M6CisKKwkJdmVyc2lvbjogZ3Vlc3QgaGFzIHRvIGNoZWNrIHZlcnNpb24gYmVmb3JlIGFuZCBhZnRlciBncmFiYmluZworCQl0aW1lIGluZm9ybWF0aW9uIGFuZCBjaGVjayB0aGF0IHRoZXkgYXJlIGJvdGggZXF1YWwgYW5kIGV2ZW4uCisJCUFuIG9kZCB2ZXJzaW9uIGluZGljYXRlcyBhbiBpbi1wcm9ncmVzcyB1cGRhdGUuCisKKwkJdHNjX3RpbWVzdGFtcDogdGhlIHRzYyB2YWx1ZSBhdCB0aGUgY3VycmVudCBWQ1BVIGF0IHRoZSB0aW1lCisJCW9mIHRoZSB1cGRhdGUgb2YgdGhpcyBzdHJ1Y3R1cmUuIEd1ZXN0cyBjYW4gc3VidHJhY3QgdGhpcyB2YWx1ZQorCQlmcm9tIGN1cnJlbnQgdHNjIHRvIGRlcml2ZSBhIG5vdGlvbiBvZiBlbGFwc2VkIHRpbWUgc2luY2UgdGhlCisJCXN0cnVjdHVyZSB1cGRhdGUuCisKKwkJc3lzdGVtX3RpbWU6IGEgaG9zdCBub3Rpb24gb2YgbW9ub3RvbmljIHRpbWUsIGluY2x1ZGluZyBzbGVlcAorCQl0aW1lIGF0IHRoZSB0aW1lIHRoaXMgc3RydWN0dXJlIHdhcyBsYXN0IHVwZGF0ZWQuIFVuaXQgaXMKKwkJbmFub3NlY29uZHMuCisKKwkJdHNjX3RvX3N5c3RlbV9tdWw6IG11bHRpcGxpZXIgdG8gYmUgdXNlZCB3aGVuIGNvbnZlcnRpbmcKKwkJdHNjLXJlbGF0ZWQgcXVhbnRpdHkgdG8gbmFub3NlY29uZHMKKworCQl0c2Nfc2hpZnQ6IHNoaWZ0IHRvIGJlIHVzZWQgd2hlbiBjb252ZXJ0aW5nIHRzYy1yZWxhdGVkCisJCXF1YW50aXR5IHRvIG5hbm9zZWNvbmRzLiBUaGlzIHNoaWZ0IHdpbGwgZW5zdXJlIHRoYXQKKwkJbXVsdGlwbGljYXRpb24gd2l0aCB0c2NfdG9fc3lzdGVtX211bCBkb2VzIG5vdCBvdmVyZmxvdy4KKwkJQSBwb3NpdGl2ZSB2YWx1ZSBkZW5vdGVzIGEgbGVmdCBzaGlmdCwgYSBuZWdhdGl2ZSB2YWx1ZQorCQlhIHJpZ2h0IHNoaWZ0LgorCisJCVRoZSBjb252ZXJzaW9uIGZyb20gdHNjIHRvIG5hbm9zZWNvbmRzIGludm9sdmVzIGFuIGFkZGl0aW9uYWwKKwkJcmlnaHQgc2hpZnQgYnkgMzIgYml0cy4gV2l0aCB0aGlzIGluZm9ybWF0aW9uLCBndWVzdHMgY2FuCisJCWRlcml2ZSBwZXItQ1BVIHRpbWUgYnkgZG9pbmc6CisKKwkJCXRpbWUgPSAoY3VycmVudF90c2MgLSB0c2NfdGltZXN0YW1wKQorCQkJaWYgKHRzY19zaGlmdCA+PSAwKQorCQkJCXRpbWUgPDw9IHRzY19zaGlmdDsKKwkJCWVsc2UKKwkJCQl0aW1lID4+PSAtdHNjX3NoaWZ0OworCQkJdGltZSA9ICh0aW1lICogdHNjX3RvX3N5c3RlbV9tdWwpID4+IDMyCisJCQl0aW1lID0gdGltZSArIHN5c3RlbV90aW1lCisKKwkJZmxhZ3M6IGJpdHMgaW4gdGhpcyBmaWVsZCBpbmRpY2F0ZSBleHRlbmRlZCBjYXBhYmlsaXRpZXMKKwkJY29vcmRpbmF0ZWQgYmV0d2VlbiB0aGUgZ3Vlc3QgYW5kIHRoZSBoeXBlcnZpc29yLiBBdmFpbGFiaWxpdHkKKwkJb2Ygc3BlY2lmaWMgZmxhZ3MgaGFzIHRvIGJlIGNoZWNrZWQgaW4gMHg0MDAwMDAwMSBjcHVpZCBsZWFmLgorCQlDdXJyZW50IGZsYWdzIGFyZToKKworCQkgZmxhZyBiaXQgICB8IGNwdWlkIGJpdCAgICB8IG1lYW5pbmcKKwkJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQkJICAgIHwJICAgICAgICAgICB8IHRpbWUgbWVhc3VyZXMgdGFrZW4gYWNyb3NzCisJCSAgICAgMCAgICAgIHwJICAgMjQgICAgICB8IG11bHRpcGxlIGNwdXMgYXJlIGd1YXJhbnRlZWQgdG8KKwkJCSAgICB8CQkgICB8IGJlIG1vbm90b25pYworCQktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJCQkgICAgfAkJICAgfCBndWVzdCB2Y3B1IGhhcyBiZWVuIHBhdXNlZCBieQorCQkgICAgIDEJICAgIHwJICBOL0EJICAgfCB0aGUgaG9zdAorCQkJICAgIHwJCSAgIHwgU2VlIDQuNzAgaW4gYXBpLnR4dAorCQktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlBdmFpbGFiaWxpdHkgb2YgdGhpcyBNU1IgbXVzdCBiZSBjaGVja2VkIHZpYSBiaXQgMyBpbiAweDQwMDAwMDEgY3B1aWQKKwlsZWFmIHByaW9yIHRvIHVzYWdlLgorCisKK01TUl9LVk1fV0FMTF9DTE9DSzogIDB4MTEKKworCWRhdGEgYW5kIGZ1bmN0aW9uaW5nOiBzYW1lIGFzIE1TUl9LVk1fV0FMTF9DTE9DS19ORVcuIFVzZSB0aGF0IGluc3RlYWQuCisKKwlUaGlzIE1TUiBmYWxscyBvdXRzaWRlIHRoZSByZXNlcnZlZCBLVk0gcmFuZ2UgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZQorCWZ1dHVyZS4gSXRzIHVzYWdlIGlzIGRlcHJlY2F0ZWQuCisKKwlBdmFpbGFiaWxpdHkgb2YgdGhpcyBNU1IgbXVzdCBiZSBjaGVja2VkIHZpYSBiaXQgMCBpbiAweDQwMDAwMDEgY3B1aWQKKwlsZWFmIHByaW9yIHRvIHVzYWdlLgorCitNU1JfS1ZNX1NZU1RFTV9USU1FOiAweDEyCisKKwlkYXRhIGFuZCBmdW5jdGlvbmluZzogc2FtZSBhcyBNU1JfS1ZNX1NZU1RFTV9USU1FX05FVy4gVXNlIHRoYXQgaW5zdGVhZC4KKworCVRoaXMgTVNSIGZhbGxzIG91dHNpZGUgdGhlIHJlc2VydmVkIEtWTSByYW5nZSBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gdGhlCisJZnV0dXJlLiBJdHMgdXNhZ2UgaXMgZGVwcmVjYXRlZC4KKworCUF2YWlsYWJpbGl0eSBvZiB0aGlzIE1TUiBtdXN0IGJlIGNoZWNrZWQgdmlhIGJpdCAwIGluIDB4NDAwMDAwMSBjcHVpZAorCWxlYWYgcHJpb3IgdG8gdXNhZ2UuCisKKwlUaGUgc3VnZ2VzdGVkIGFsZ29yaXRobSBmb3IgZGV0ZWN0aW5nIGt2bWNsb2NrIHByZXNlbmNlIGlzIHRoZW46CisKKwkJaWYgKCFrdm1fcGFyYV9hdmFpbGFibGUoKSkgICAgLyogcmVmZXIgdG8gY3B1aWQudHh0ICovCisJCQlyZXR1cm4gTk9OX1BSRVNFTlQ7CisKKwkJZmxhZ3MgPSBjcHVpZF9lYXgoMHg0MDAwMDAwMSk7CisJCWlmIChmbGFncyAmIDMpIHsKKwkJCW1zcl9rdm1fc3lzdGVtX3RpbWUgPSBNU1JfS1ZNX1NZU1RFTV9USU1FX05FVzsKKwkJCW1zcl9rdm1fd2FsbF9jbG9jayA9IE1TUl9LVk1fV0FMTF9DTE9DS19ORVc7CisJCQlyZXR1cm4gUFJFU0VOVDsKKwkJfSBlbHNlIGlmIChmbGFncyAmIDApIHsKKwkJCW1zcl9rdm1fc3lzdGVtX3RpbWUgPSBNU1JfS1ZNX1NZU1RFTV9USU1FOworCQkJbXNyX2t2bV93YWxsX2Nsb2NrID0gTVNSX0tWTV9XQUxMX0NMT0NLOworCQkJcmV0dXJuIFBSRVNFTlQ7CisJCX0gZWxzZQorCQkJcmV0dXJuIE5PTl9QUkVTRU5UOworCitNU1JfS1ZNX0FTWU5DX1BGX0VOOiAweDRiNTY0ZDAyCisJZGF0YTogQml0cyA2My02IGhvbGQgNjQtYnl0ZSBhbGlnbmVkIHBoeXNpY2FsIGFkZHJlc3Mgb2YgYQorCTY0IGJ5dGUgbWVtb3J5IGFyZWEgd2hpY2ggbXVzdCBiZSBpbiBndWVzdCBSQU0gYW5kIG11c3QgYmUKKwl6ZXJvZWQuIEJpdHMgNS0yIGFyZSByZXNlcnZlZCBhbmQgc2hvdWxkIGJlIHplcm8uIEJpdCAwIGlzIDEKKwl3aGVuIGFzeW5jaHJvbm91cyBwYWdlIGZhdWx0cyBhcmUgZW5hYmxlZCBvbiB0aGUgdmNwdSAwIHdoZW4KKwlkaXNhYmxlZC4gQml0IDEgaXMgMSBpZiBhc3luY2hyb25vdXMgcGFnZSBmYXVsdHMgY2FuIGJlIGluamVjdGVkCisJd2hlbiB2Y3B1IGlzIGluIGNwbCA9PSAwLgorCisJRmlyc3QgNCBieXRlIG9mIDY0IGJ5dGUgbWVtb3J5IGxvY2F0aW9uIHdpbGwgYmUgd3JpdHRlbiB0byBieQorCXRoZSBoeXBlcnZpc29yIGF0IHRoZSB0aW1lIG9mIGFzeW5jaHJvbm91cyBwYWdlIGZhdWx0IChBUEYpCisJaW5qZWN0aW9uIHRvIGluZGljYXRlIHR5cGUgb2YgYXN5bmNocm9ub3VzIHBhZ2UgZmF1bHQuIFZhbHVlCisJb2YgMSBtZWFucyB0aGF0IHRoZSBwYWdlIHJlZmVycmVkIHRvIGJ5IHRoZSBwYWdlIGZhdWx0IGlzIG5vdAorCXByZXNlbnQuIFZhbHVlIDIgbWVhbnMgdGhhdCB0aGUgcGFnZSBpcyBub3cgYXZhaWxhYmxlLiBEaXNhYmxpbmcKKwlpbnRlcnJ1cHQgaW5oaWJpdHMgQVBGcy4gR3Vlc3QgbXVzdCBub3QgZW5hYmxlIGludGVycnVwdAorCWJlZm9yZSB0aGUgcmVhc29uIGlzIHJlYWQsIG9yIGl0IG1heSBiZSBvdmVyd3JpdHRlbiBieSBhbm90aGVyCisJQVBGLiBTaW5jZSBBUEYgdXNlcyB0aGUgc2FtZSBleGNlcHRpb24gdmVjdG9yIGFzIHJlZ3VsYXIgcGFnZQorCWZhdWx0IGd1ZXN0IG11c3QgcmVzZXQgdGhlIHJlYXNvbiB0byAwIGJlZm9yZSBpdCBkb2VzCisJc29tZXRoaW5nIHRoYXQgY2FuIGdlbmVyYXRlIG5vcm1hbCBwYWdlIGZhdWx0LiAgSWYgZHVyaW5nIHBhZ2UKKwlmYXVsdCBBUEYgcmVhc29uIGlzIDAgaXQgbWVhbnMgdGhhdCB0aGlzIGlzIHJlZ3VsYXIgcGFnZQorCWZhdWx0LgorCisJRHVyaW5nIGRlbGl2ZXJ5IG9mIHR5cGUgMSBBUEYgY3IyIGNvbnRhaW5zIGEgdG9rZW4gdGhhdCB3aWxsCisJYmUgdXNlZCB0byBub3RpZnkgYSBndWVzdCB3aGVuIG1pc3NpbmcgcGFnZSBiZWNvbWVzCisJYXZhaWxhYmxlLiBXaGVuIHBhZ2UgYmVjb21lcyBhdmFpbGFibGUgdHlwZSAyIEFQRiBpcyBzZW50IHdpdGgKKwljcjIgc2V0IHRvIHRoZSB0b2tlbiBhc3NvY2lhdGVkIHdpdGggdGhlIHBhZ2UuIFRoZXJlIGlzIHNwZWNpYWwKKwlraW5kIG9mIHRva2VuIDB4ZmZmZmZmZmYgd2hpY2ggdGVsbHMgdmNwdSB0aGF0IGl0IHNob3VsZCB3YWtlCisJdXAgYWxsIHByb2Nlc3NlcyB3YWl0aW5nIGZvciBBUEZzIGFuZCBubyBpbmRpdmlkdWFsIHR5cGUgMiBBUEZzCisJd2lsbCBiZSBzZW50LgorCisJSWYgQVBGIGlzIGRpc2FibGVkIHdoaWxlIHRoZXJlIGFyZSBvdXRzdGFuZGluZyBBUEZzLCB0aGV5IHdpbGwKKwlub3QgYmUgZGVsaXZlcmVkLgorCisJQ3VycmVudGx5IHR5cGUgMiBBUEYgd2lsbCBiZSBhbHdheXMgZGVsaXZlcmVkIG9uIHRoZSBzYW1lIHZjcHUgYXMKKwl0eXBlIDEgd2FzLCBidXQgZ3Vlc3Qgc2hvdWxkIG5vdCByZWx5IG9uIHRoYXQuCisKK01TUl9LVk1fU1RFQUxfVElNRTogMHg0YjU2NGQwMworCisJZGF0YTogNjQtYnl0ZSBhbGlnbm1lbnQgcGh5c2ljYWwgYWRkcmVzcyBvZiBhIG1lbW9yeSBhcmVhIHdoaWNoIG11c3QgYmUKKwlpbiBndWVzdCBSQU0sIHBsdXMgYW4gZW5hYmxlIGJpdCBpbiBiaXQgMC4gVGhpcyBtZW1vcnkgaXMgZXhwZWN0ZWQgdG8KKwlob2xkIGEgY29weSBvZiB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKKworCXN0cnVjdCBrdm1fc3RlYWxfdGltZSB7CisJCV9fdTY0IHN0ZWFsOworCQlfX3UzMiB2ZXJzaW9uOworCQlfX3UzMiBmbGFnczsKKwkJX191MzIgcGFkWzEyXTsKKwl9CisKKwl3aG9zZSBkYXRhIHdpbGwgYmUgZmlsbGVkIGluIGJ5IHRoZSBoeXBlcnZpc29yIHBlcmlvZGljYWxseS4gT25seSBvbmUKKwl3cml0ZSwgb3IgcmVnaXN0cmF0aW9uLCBpcyBuZWVkZWQgZm9yIGVhY2ggVkNQVS4gVGhlIGludGVydmFsIGJldHdlZW4KKwl1cGRhdGVzIG9mIHRoaXMgc3RydWN0dXJlIGlzIGFyYml0cmFyeSBhbmQgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50LgorCVRoZSBoeXBlcnZpc29yIG1heSB1cGRhdGUgdGhpcyBzdHJ1Y3R1cmUgYXQgYW55IHRpbWUgaXQgc2VlcyBmaXQgdW50aWwKKwlhbnl0aGluZyB3aXRoIGJpdDAgPT0gMCBpcyB3cml0dGVuIHRvIGl0LiBHdWVzdCBpcyByZXF1aXJlZCB0byBtYWtlIHN1cmUKKwl0aGlzIHN0cnVjdHVyZSBpcyBpbml0aWFsaXplZCB0byB6ZXJvLgorCisJRmllbGRzIGhhdmUgdGhlIGZvbGxvd2luZyBtZWFuaW5nczoKKworCQl2ZXJzaW9uOiBhIHNlcXVlbmNlIGNvdW50ZXIuIEluIG90aGVyIHdvcmRzLCBndWVzdCBoYXMgdG8gY2hlY2sKKwkJdGhpcyBmaWVsZCBiZWZvcmUgYW5kIGFmdGVyIGdyYWJiaW5nIHRpbWUgaW5mb3JtYXRpb24gYW5kIG1ha2UKKwkJc3VyZSB0aGV5IGFyZSBib3RoIGVxdWFsIGFuZCBldmVuLiBBbiBvZGQgdmVyc2lvbiBpbmRpY2F0ZXMgYW4KKwkJaW4tcHJvZ3Jlc3MgdXBkYXRlLgorCisJCWZsYWdzOiBBdCB0aGlzIHBvaW50LCBhbHdheXMgemVyby4gTWF5IGJlIHVzZWQgdG8gaW5kaWNhdGUKKwkJY2hhbmdlcyBpbiB0aGlzIHN0cnVjdHVyZSBpbiB0aGUgZnV0dXJlLgorCisJCXN0ZWFsOiB0aGUgYW1vdW50IG9mIHRpbWUgaW4gd2hpY2ggdGhpcyB2Q1BVIGRpZCBub3QgcnVuLCBpbgorCQluYW5vc2Vjb25kcy4gVGltZSBkdXJpbmcgd2hpY2ggdGhlIHZjcHUgaXMgaWRsZSwgd2lsbCBub3QgYmUKKwkJcmVwb3J0ZWQgYXMgc3RlYWwgdGltZS4KKworTVNSX0tWTV9FT0lfRU46IDB4NGI1NjRkMDQKKwlkYXRhOiBCaXQgMCBpcyAxIHdoZW4gUFYgZW5kIG9mIGludGVycnVwdCBpcyBlbmFibGVkIG9uIHRoZSB2Y3B1OyAwCisJd2hlbiBkaXNhYmxlZC4gIEJpdCAxIGlzIHJlc2VydmVkIGFuZCBtdXN0IGJlIHplcm8uICBXaGVuIFBWIGVuZCBvZgorCWludGVycnVwdCBpcyBlbmFibGVkIChiaXQgMCBzZXQpLCBiaXRzIDYzLTIgaG9sZCBhIDQtYnl0ZSBhbGlnbmVkCisJcGh5c2ljYWwgYWRkcmVzcyBvZiBhIDQgYnl0ZSBtZW1vcnkgYXJlYSB3aGljaCBtdXN0IGJlIGluIGd1ZXN0IFJBTSBhbmQKKwltdXN0IGJlIHplcm9lZC4KKworCVRoZSBmaXJzdCwgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IG9mIDQgYnl0ZSBtZW1vcnkgbG9jYXRpb24gd2lsbCBiZQorCXdyaXR0ZW4gdG8gYnkgdGhlIGh5cGVydmlzb3IsIHR5cGljYWxseSBhdCB0aGUgdGltZSBvZiBpbnRlcnJ1cHQKKwlpbmplY3Rpb24uICBWYWx1ZSBvZiAxIG1lYW5zIHRoYXQgZ3Vlc3QgY2FuIHNraXAgd3JpdGluZyBFT0kgdG8gdGhlIGFwaWMKKwkodXNpbmcgTVNSIG9yIE1NSU8gd3JpdGUpOyBpbnN0ZWFkLCBpdCBpcyBzdWZmaWNpZW50IHRvIHNpZ25hbAorCUVPSSBieSBjbGVhcmluZyB0aGUgYml0IGluIGd1ZXN0IG1lbW9yeSAtIHRoaXMgbG9jYXRpb24gd2lsbAorCWxhdGVyIGJlIHBvbGxlZCBieSB0aGUgaHlwZXJ2aXNvci4KKwlWYWx1ZSBvZiAwIG1lYW5zIHRoYXQgdGhlIEVPSSB3cml0ZSBpcyByZXF1aXJlZC4KKworCUl0IGlzIGFsd2F5cyBzYWZlIGZvciB0aGUgZ3Vlc3QgdG8gaWdub3JlIHRoZSBvcHRpbWl6YXRpb24gYW5kIHBlcmZvcm0KKwl0aGUgQVBJQyBFT0kgd3JpdGUgYW55d2F5LgorCisJSHlwZXJ2aXNvciBpcyBndWFyYW50ZWVkIHRvIG9ubHkgbW9kaWZ5IHRoaXMgbGVhc3QKKwlzaWduaWZpY2FudCBiaXQgd2hpbGUgaW4gdGhlIGN1cnJlbnQgVkNQVSBjb250ZXh0LCB0aGlzIG1lYW5zIHRoYXQKKwlndWVzdCBkb2VzIG5vdCBuZWVkIHRvIHVzZSBlaXRoZXIgbG9jayBwcmVmaXggb3IgbWVtb3J5IG9yZGVyaW5nCisJcHJpbWl0aXZlcyB0byBzeW5jaHJvbmlzZSB3aXRoIHRoZSBoeXBlcnZpc29yLgorCisJSG93ZXZlciwgaHlwZXJ2aXNvciBjYW4gc2V0IGFuZCBjbGVhciB0aGlzIG1lbW9yeSBiaXQgYXQgYW55IHRpbWU6CisJdGhlcmVmb3JlIHRvIG1ha2Ugc3VyZSBoeXBlcnZpc29yIGRvZXMgbm90IGludGVycnVwdCB0aGUKKwlndWVzdCBhbmQgY2xlYXIgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBpbiB0aGUgbWVtb3J5IGFyZWEKKwlpbiB0aGUgd2luZG93IGJldHdlZW4gZ3Vlc3QgdGVzdGluZyBpdCB0byBkZXRlY3QKKwl3aGV0aGVyIGl0IGNhbiBza2lwIEVPSSBhcGljIHdyaXRlIGFuZCBiZXR3ZWVuIGd1ZXN0CisJY2xlYXJpbmcgaXQgdG8gc2lnbmFsIEVPSSB0byB0aGUgaHlwZXJ2aXNvciwKKwlndWVzdCBtdXN0IGJvdGggcmVhZCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IGluIHRoZSBtZW1vcnkgYXJlYSBhbmQKKwljbGVhciBpdCB1c2luZyBhIHNpbmdsZSBDUFUgaW5zdHJ1Y3Rpb24sIHN1Y2ggYXMgdGVzdCBhbmQgY2xlYXIsIG9yCisJY29tcGFyZSBhbmQgZXhjaGFuZ2UuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL25lc3RlZC12bXgudHh0IGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9uZXN0ZWQtdm14LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWQ5MzdkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9uZXN0ZWQtdm14LnR4dApAQCAtMCwwICsxLDI1MSBAQAorTmVzdGVkIFZNWAorPT09PT09PT09PQorCitPdmVydmlldworLS0tLS0tLS0tCisKK09uIEludGVsIHByb2Nlc3NvcnMsIEtWTSB1c2VzIEludGVsJ3MgVk1YIChWaXJ0dWFsLU1hY2hpbmUgZVh0ZW5zaW9ucykKK3RvIGVhc2lseSBhbmQgZWZmaWNpZW50bHkgcnVuIGd1ZXN0IG9wZXJhdGluZyBzeXN0ZW1zLiBOb3JtYWxseSwgdGhlc2UgZ3Vlc3RzCisqY2Fubm90KiB0aGVtc2VsdmVzIGJlIGh5cGVydmlzb3JzIHJ1bm5pbmcgdGhlaXIgb3duIGd1ZXN0cywgYmVjYXVzZSBpbiBWTVgsCitndWVzdHMgY2Fubm90IHVzZSBWTVggaW5zdHJ1Y3Rpb25zLgorCitUaGUgIk5lc3RlZCBWTVgiIGZlYXR1cmUgYWRkcyB0aGlzIG1pc3NpbmcgY2FwYWJpbGl0eSAtIG9mIHJ1bm5pbmcgZ3Vlc3QKK2h5cGVydmlzb3JzICh3aGljaCB1c2UgVk1YKSB3aXRoIHRoZWlyIG93biBuZXN0ZWQgZ3Vlc3RzLiBJdCBkb2VzIHNvIGJ5CithbGxvd2luZyBhIGd1ZXN0IHRvIHVzZSBWTVggaW5zdHJ1Y3Rpb25zLCBhbmQgY29ycmVjdGx5IGFuZCBlZmZpY2llbnRseQorZW11bGF0aW5nIHRoZW0gdXNpbmcgdGhlIHNpbmdsZSBsZXZlbCBvZiBWTVggYXZhaWxhYmxlIGluIHRoZSBoYXJkd2FyZS4KKworV2UgZGVzY3JpYmUgaW4gbXVjaCBncmVhdGVyIGRldGFpbCB0aGUgdGhlb3J5IGJlaGluZCB0aGUgbmVzdGVkIFZNWCBmZWF0dXJlLAoraXRzIGltcGxlbWVudGF0aW9uIGFuZCBpdHMgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzLCBpbiB0aGUgT1NESSAyMDEwIHBhcGVyCisiVGhlIFR1cnRsZXMgUHJvamVjdDogRGVzaWduIGFuZCBJbXBsZW1lbnRhdGlvbiBvZiBOZXN0ZWQgVmlydHVhbGl6YXRpb24iLAorYXZhaWxhYmxlIGF0OgorCisJaHR0cDovL3d3dy51c2VuaXgub3JnL2V2ZW50cy9vc2RpMTAvdGVjaC9mdWxsX3BhcGVycy9CZW4tWWVodWRhLnBkZgorCisKK1Rlcm1pbm9sb2d5CistLS0tLS0tLS0tLQorCitTaW5nbGUtbGV2ZWwgdmlydHVhbGl6YXRpb24gaGFzIHR3byBsZXZlbHMgLSB0aGUgaG9zdCAoS1ZNKSBhbmQgdGhlIGd1ZXN0cy4KK0luIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiwgd2UgaGF2ZSB0aHJlZSBsZXZlbHM6IFRoZSBob3N0IChLVk0pLCB3aGljaCB3ZSBjYWxsCitMMCwgdGhlIGd1ZXN0IGh5cGVydmlzb3IsIHdoaWNoIHdlIGNhbGwgTDEsIGFuZCBpdHMgbmVzdGVkIGd1ZXN0LCB3aGljaCB3ZQorY2FsbCBMMi4KKworCitLbm93biBsaW1pdGF0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGN1cnJlbnQgY29kZSBzdXBwb3J0cyBydW5uaW5nIExpbnV4IGd1ZXN0cyB1bmRlciBLVk0gZ3Vlc3RzLgorT25seSA2NC1iaXQgZ3Vlc3QgaHlwZXJ2aXNvcnMgYXJlIHN1cHBvcnRlZC4KKworQWRkaXRpb25hbCBwYXRjaGVzIGZvciBydW5uaW5nIFdpbmRvd3MgdW5kZXIgZ3Vlc3QgS1ZNLCBhbmQgTGludXggdW5kZXIKK2d1ZXN0IFZNd2FyZSBzZXJ2ZXIsIGFuZCBzdXBwb3J0IGZvciBuZXN0ZWQgRVBULCBhcmUgY3VycmVudGx5IHJ1bm5pbmcgaW4KK3RoZSBsYWIsIGFuZCB3aWxsIGJlIHNlbnQgYXMgZm9sbG93LW9uIHBhdGNoc2V0cy4KKworCitSdW5uaW5nIG5lc3RlZCBWTVgKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbmVzdGVkIFZNWCBmZWF0dXJlIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuIEl0IGNhbiBiZSBlbmFibGVkIGJ5IGdpdmluZwordGhlICJuZXN0ZWQ9MSIgb3B0aW9uIHRvIHRoZSBrdm0taW50ZWwgbW9kdWxlLgorCitObyBtb2RpZmljYXRpb25zIGFyZSByZXF1aXJlZCB0byB1c2VyIHNwYWNlIChxZW11KS4gSG93ZXZlciwgcWVtdSdzIGRlZmF1bHQKK2VtdWxhdGVkIENQVSB0eXBlIChxZW11NjQpIGRvZXMgbm90IGxpc3QgdGhlICJWTVgiIENQVSBmZWF0dXJlLCBzbyBpdCBtdXN0IGJlCitleHBsaWNpdGx5IGVuYWJsZWQsIGJ5IGdpdmluZyBxZW11IG9uZSBvZiB0aGUgZm9sbG93aW5nIG9wdGlvbnM6CisKKyAgICAgLWNwdSBob3N0ICAgICAgICAgICAgICAoZW11bGF0ZWQgQ1BVIGhhcyBhbGwgZmVhdHVyZXMgb2YgdGhlIHJlYWwgQ1BVKQorCisgICAgIC1jcHUgcWVtdTY0LCt2bXggICAgICAgKGFkZCBqdXN0IHRoZSB2bXggZmVhdHVyZSB0byBhIG5hbWVkIENQVSB0eXBlKQorCisKK0FCSXMKKy0tLS0KKworTmVzdGVkIFZNWCBhaW1zIHRvIHByZXNlbnQgYSBzdGFuZGFyZCBhbmQgKGV2ZW50dWFsbHkpIGZ1bGx5LWZ1bmN0aW9uYWwgVk1YCitpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGEgZ3Vlc3QgaHlwZXJ2aXNvciB0byB1c2UuIEFzIHN1Y2gsIHRoZSBvZmZpY2lhbAorc3BlY2lmaWNhdGlvbiBvZiB0aGUgQUJJIHRoYXQgaXQgcHJvdmlkZXMgaXMgSW50ZWwncyBWTVggc3BlY2lmaWNhdGlvbiwKK25hbWVseSB2b2x1bWUgM0Igb2YgdGhlaXIgIkludGVsIDY0IGFuZCBJQS0zMiBBcmNoaXRlY3R1cmVzIFNvZnR3YXJlCitEZXZlbG9wZXIncyBNYW51YWwiLiBOb3QgYWxsIG9mIFZNWCdzIGZlYXR1cmVzIGFyZSBjdXJyZW50bHkgZnVsbHkgc3VwcG9ydGVkLAorYnV0IHRoZSBnb2FsIGlzIHRvIGV2ZW50dWFsbHkgc3VwcG9ydCB0aGVtIGFsbCwgc3RhcnRpbmcgd2l0aCB0aGUgVk1YIGZlYXR1cmVzCit3aGljaCBhcmUgdXNlZCBpbiBwcmFjdGljZSBieSBwb3B1bGFyIGh5cGVydmlzb3JzIChLVk0gYW5kIG90aGVycykuCisKK0FzIGEgVk1YIGltcGxlbWVudGF0aW9uLCBuZXN0ZWQgVk1YIHByZXNlbnRzIGEgVk1DUyBzdHJ1Y3R1cmUgdG8gTDEuCitBcyBtYW5kYXRlZCBieSB0aGUgc3BlYywgb3RoZXIgdGhhbiB0aGUgdHdvIGZpZWxkcyByZXZpc2lvbl9pZCBhbmQgYWJvcnQsCit0aGlzIHN0cnVjdHVyZSBpcyAqb3BhcXVlKiB0byBpdHMgdXNlciwgd2hvIGlzIG5vdCBzdXBwb3NlZCB0byBrbm93IG9yIGNhcmUKK2Fib3V0IGl0cyBpbnRlcm5hbCBzdHJ1Y3R1cmUuIFJhdGhlciwgdGhlIHN0cnVjdHVyZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZQorVk1SRUFEIGFuZCBWTVdSSVRFIGluc3RydWN0aW9ucy4KK1N0aWxsLCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLCBLVk0gZGV2ZWxvcGVycyBtaWdodCBiZSBpbnRlcmVzdGVkIHRvIGtub3cgdGhlCitpbnRlcm5hbHMgb2YgdGhpcyBzdHJ1Y3R1cmU7IFRoaXMgaXMgc3RydWN0IHZtY3MxMiBmcm9tIGFyY2gveDg2L2t2bS92bXguYy4KKworVGhlIG5hbWUgInZtY3MxMiIgcmVmZXJzIHRvIHRoZSBWTUNTIHRoYXQgTDEgYnVpbGRzIGZvciBMMi4gSW4gdGhlIGNvZGUgd2UKK2Fsc28gaGF2ZSAidm1jczAxIiwgdGhlIFZNQ1MgdGhhdCBMMCBidWlsdCBmb3IgTDEsIGFuZCAidm1jczAyIiBpcyB0aGUgVk1DUword2hpY2ggTDAgYnVpbGRzIHRvIGFjdHVhbGx5IHJ1biBMMiAtIGhvdyB0aGlzIGlzIGRvbmUgaXMgZXhwbGFpbmVkIGluIHRoZQorYWZvcmVtZW50aW9uZWQgcGFwZXIuCisKK0ZvciBjb252ZW5pZW5jZSwgd2UgcmVwZWF0IHRoZSBjb250ZW50IG9mIHN0cnVjdCB2bWNzMTIgaGVyZS4gSWYgdGhlIGludGVybmFscworb2YgdGhpcyBzdHJ1Y3R1cmUgY2hhbmdlcywgdGhpcyBjYW4gYnJlYWsgbGl2ZSBtaWdyYXRpb24gYWNyb3NzIEtWTSB2ZXJzaW9ucy4KK1ZNQ1MxMl9SRVZJU0lPTiAoZnJvbSB2bXguYykgc2hvdWxkIGJlIGNoYW5nZWQgaWYgc3RydWN0IHZtY3MxMiBvciBpdHMgaW5uZXIKK3N0cnVjdCBzaGFkb3dfdm1jcyBpcyBldmVyIGNoYW5nZWQuCisKKwl0eXBlZGVmIHU2NCBuYXR1cmFsX3dpZHRoOworCXN0cnVjdCBfX3BhY2tlZCB2bWNzMTIgeworCQkvKiBBY2NvcmRpbmcgdG8gdGhlIEludGVsIHNwZWMsIGEgVk1DUyByZWdpb24gbXVzdCBzdGFydCB3aXRoCisJCSAqIHRoZXNlIHR3byB1c2VyLXZpc2libGUgZmllbGRzICovCisJCXUzMiByZXZpc2lvbl9pZDsKKwkJdTMyIGFib3J0OworCisJCXUzMiBsYXVuY2hfc3RhdGU7IC8qIHNldCB0byAwIGJ5IFZNQ0xFQVIsIHRvIDEgYnkgVk1MQVVOQ0ggKi8KKwkJdTMyIHBhZGRpbmdbN107IC8qIHJvb20gZm9yIGZ1dHVyZSBleHBhbnNpb24gKi8KKworCQl1NjQgaW9fYml0bWFwX2E7CisJCXU2NCBpb19iaXRtYXBfYjsKKwkJdTY0IG1zcl9iaXRtYXA7CisJCXU2NCB2bV9leGl0X21zcl9zdG9yZV9hZGRyOworCQl1NjQgdm1fZXhpdF9tc3JfbG9hZF9hZGRyOworCQl1NjQgdm1fZW50cnlfbXNyX2xvYWRfYWRkcjsKKwkJdTY0IHRzY19vZmZzZXQ7CisJCXU2NCB2aXJ0dWFsX2FwaWNfcGFnZV9hZGRyOworCQl1NjQgYXBpY19hY2Nlc3NfYWRkcjsKKwkJdTY0IGVwdF9wb2ludGVyOworCQl1NjQgZ3Vlc3RfcGh5c2ljYWxfYWRkcmVzczsKKwkJdTY0IHZtY3NfbGlua19wb2ludGVyOworCQl1NjQgZ3Vlc3RfaWEzMl9kZWJ1Z2N0bDsKKwkJdTY0IGd1ZXN0X2lhMzJfcGF0OworCQl1NjQgZ3Vlc3RfaWEzMl9lZmVyOworCQl1NjQgZ3Vlc3RfcGRwdHIwOworCQl1NjQgZ3Vlc3RfcGRwdHIxOworCQl1NjQgZ3Vlc3RfcGRwdHIyOworCQl1NjQgZ3Vlc3RfcGRwdHIzOworCQl1NjQgaG9zdF9pYTMyX3BhdDsKKwkJdTY0IGhvc3RfaWEzMl9lZmVyOworCQl1NjQgcGFkZGluZzY0WzhdOyAvKiByb29tIGZvciBmdXR1cmUgZXhwYW5zaW9uICovCisJCW5hdHVyYWxfd2lkdGggY3IwX2d1ZXN0X2hvc3RfbWFzazsKKwkJbmF0dXJhbF93aWR0aCBjcjRfZ3Vlc3RfaG9zdF9tYXNrOworCQluYXR1cmFsX3dpZHRoIGNyMF9yZWFkX3NoYWRvdzsKKwkJbmF0dXJhbF93aWR0aCBjcjRfcmVhZF9zaGFkb3c7CisJCW5hdHVyYWxfd2lkdGggY3IzX3RhcmdldF92YWx1ZTA7CisJCW5hdHVyYWxfd2lkdGggY3IzX3RhcmdldF92YWx1ZTE7CisJCW5hdHVyYWxfd2lkdGggY3IzX3RhcmdldF92YWx1ZTI7CisJCW5hdHVyYWxfd2lkdGggY3IzX3RhcmdldF92YWx1ZTM7CisJCW5hdHVyYWxfd2lkdGggZXhpdF9xdWFsaWZpY2F0aW9uOworCQluYXR1cmFsX3dpZHRoIGd1ZXN0X2xpbmVhcl9hZGRyZXNzOworCQluYXR1cmFsX3dpZHRoIGd1ZXN0X2NyMDsKKwkJbmF0dXJhbF93aWR0aCBndWVzdF9jcjM7CisJCW5hdHVyYWxfd2lkdGggZ3Vlc3RfY3I0OworCQluYXR1cmFsX3dpZHRoIGd1ZXN0X2VzX2Jhc2U7CisJCW5hdHVyYWxfd2lkdGggZ3Vlc3RfY3NfYmFzZTsKKwkJbmF0dXJhbF93aWR0aCBndWVzdF9zc19iYXNlOworCQluYXR1cmFsX3dpZHRoIGd1ZXN0X2RzX2Jhc2U7CisJCW5hdHVyYWxfd2lkdGggZ3Vlc3RfZnNfYmFzZTsKKwkJbmF0dXJhbF93aWR0aCBndWVzdF9nc19iYXNlOworCQluYXR1cmFsX3dpZHRoIGd1ZXN0X2xkdHJfYmFzZTsKKwkJbmF0dXJhbF93aWR0aCBndWVzdF90cl9iYXNlOworCQluYXR1cmFsX3dpZHRoIGd1ZXN0X2dkdHJfYmFzZTsKKwkJbmF0dXJhbF93aWR0aCBndWVzdF9pZHRyX2Jhc2U7CisJCW5hdHVyYWxfd2lkdGggZ3Vlc3RfZHI3OworCQluYXR1cmFsX3dpZHRoIGd1ZXN0X3JzcDsKKwkJbmF0dXJhbF93aWR0aCBndWVzdF9yaXA7CisJCW5hdHVyYWxfd2lkdGggZ3Vlc3RfcmZsYWdzOworCQluYXR1cmFsX3dpZHRoIGd1ZXN0X3BlbmRpbmdfZGJnX2V4Y2VwdGlvbnM7CisJCW5hdHVyYWxfd2lkdGggZ3Vlc3Rfc3lzZW50ZXJfZXNwOworCQluYXR1cmFsX3dpZHRoIGd1ZXN0X3N5c2VudGVyX2VpcDsKKwkJbmF0dXJhbF93aWR0aCBob3N0X2NyMDsKKwkJbmF0dXJhbF93aWR0aCBob3N0X2NyMzsKKwkJbmF0dXJhbF93aWR0aCBob3N0X2NyNDsKKwkJbmF0dXJhbF93aWR0aCBob3N0X2ZzX2Jhc2U7CisJCW5hdHVyYWxfd2lkdGggaG9zdF9nc19iYXNlOworCQluYXR1cmFsX3dpZHRoIGhvc3RfdHJfYmFzZTsKKwkJbmF0dXJhbF93aWR0aCBob3N0X2dkdHJfYmFzZTsKKwkJbmF0dXJhbF93aWR0aCBob3N0X2lkdHJfYmFzZTsKKwkJbmF0dXJhbF93aWR0aCBob3N0X2lhMzJfc3lzZW50ZXJfZXNwOworCQluYXR1cmFsX3dpZHRoIGhvc3RfaWEzMl9zeXNlbnRlcl9laXA7CisJCW5hdHVyYWxfd2lkdGggaG9zdF9yc3A7CisJCW5hdHVyYWxfd2lkdGggaG9zdF9yaXA7CisJCW5hdHVyYWxfd2lkdGggcGFkZGluZ2xbOF07IC8qIHJvb20gZm9yIGZ1dHVyZSBleHBhbnNpb24gKi8KKwkJdTMyIHBpbl9iYXNlZF92bV9leGVjX2NvbnRyb2w7CisJCXUzMiBjcHVfYmFzZWRfdm1fZXhlY19jb250cm9sOworCQl1MzIgZXhjZXB0aW9uX2JpdG1hcDsKKwkJdTMyIHBhZ2VfZmF1bHRfZXJyb3JfY29kZV9tYXNrOworCQl1MzIgcGFnZV9mYXVsdF9lcnJvcl9jb2RlX21hdGNoOworCQl1MzIgY3IzX3RhcmdldF9jb3VudDsKKwkJdTMyIHZtX2V4aXRfY29udHJvbHM7CisJCXUzMiB2bV9leGl0X21zcl9zdG9yZV9jb3VudDsKKwkJdTMyIHZtX2V4aXRfbXNyX2xvYWRfY291bnQ7CisJCXUzMiB2bV9lbnRyeV9jb250cm9sczsKKwkJdTMyIHZtX2VudHJ5X21zcl9sb2FkX2NvdW50OworCQl1MzIgdm1fZW50cnlfaW50cl9pbmZvX2ZpZWxkOworCQl1MzIgdm1fZW50cnlfZXhjZXB0aW9uX2Vycm9yX2NvZGU7CisJCXUzMiB2bV9lbnRyeV9pbnN0cnVjdGlvbl9sZW47CisJCXUzMiB0cHJfdGhyZXNob2xkOworCQl1MzIgc2Vjb25kYXJ5X3ZtX2V4ZWNfY29udHJvbDsKKwkJdTMyIHZtX2luc3RydWN0aW9uX2Vycm9yOworCQl1MzIgdm1fZXhpdF9yZWFzb247CisJCXUzMiB2bV9leGl0X2ludHJfaW5mbzsKKwkJdTMyIHZtX2V4aXRfaW50cl9lcnJvcl9jb2RlOworCQl1MzIgaWR0X3ZlY3RvcmluZ19pbmZvX2ZpZWxkOworCQl1MzIgaWR0X3ZlY3RvcmluZ19lcnJvcl9jb2RlOworCQl1MzIgdm1fZXhpdF9pbnN0cnVjdGlvbl9sZW47CisJCXUzMiB2bXhfaW5zdHJ1Y3Rpb25faW5mbzsKKwkJdTMyIGd1ZXN0X2VzX2xpbWl0OworCQl1MzIgZ3Vlc3RfY3NfbGltaXQ7CisJCXUzMiBndWVzdF9zc19saW1pdDsKKwkJdTMyIGd1ZXN0X2RzX2xpbWl0OworCQl1MzIgZ3Vlc3RfZnNfbGltaXQ7CisJCXUzMiBndWVzdF9nc19saW1pdDsKKwkJdTMyIGd1ZXN0X2xkdHJfbGltaXQ7CisJCXUzMiBndWVzdF90cl9saW1pdDsKKwkJdTMyIGd1ZXN0X2dkdHJfbGltaXQ7CisJCXUzMiBndWVzdF9pZHRyX2xpbWl0OworCQl1MzIgZ3Vlc3RfZXNfYXJfYnl0ZXM7CisJCXUzMiBndWVzdF9jc19hcl9ieXRlczsKKwkJdTMyIGd1ZXN0X3NzX2FyX2J5dGVzOworCQl1MzIgZ3Vlc3RfZHNfYXJfYnl0ZXM7CisJCXUzMiBndWVzdF9mc19hcl9ieXRlczsKKwkJdTMyIGd1ZXN0X2dzX2FyX2J5dGVzOworCQl1MzIgZ3Vlc3RfbGR0cl9hcl9ieXRlczsKKwkJdTMyIGd1ZXN0X3RyX2FyX2J5dGVzOworCQl1MzIgZ3Vlc3RfaW50ZXJydXB0aWJpbGl0eV9pbmZvOworCQl1MzIgZ3Vlc3RfYWN0aXZpdHlfc3RhdGU7CisJCXUzMiBndWVzdF9zeXNlbnRlcl9jczsKKwkJdTMyIGhvc3RfaWEzMl9zeXNlbnRlcl9jczsKKwkJdTMyIHBhZGRpbmczMls4XTsgLyogcm9vbSBmb3IgZnV0dXJlIGV4cGFuc2lvbiAqLworCQl1MTYgdmlydHVhbF9wcm9jZXNzb3JfaWQ7CisJCXUxNiBndWVzdF9lc19zZWxlY3RvcjsKKwkJdTE2IGd1ZXN0X2NzX3NlbGVjdG9yOworCQl1MTYgZ3Vlc3Rfc3Nfc2VsZWN0b3I7CisJCXUxNiBndWVzdF9kc19zZWxlY3RvcjsKKwkJdTE2IGd1ZXN0X2ZzX3NlbGVjdG9yOworCQl1MTYgZ3Vlc3RfZ3Nfc2VsZWN0b3I7CisJCXUxNiBndWVzdF9sZHRyX3NlbGVjdG9yOworCQl1MTYgZ3Vlc3RfdHJfc2VsZWN0b3I7CisJCXUxNiBob3N0X2VzX3NlbGVjdG9yOworCQl1MTYgaG9zdF9jc19zZWxlY3RvcjsKKwkJdTE2IGhvc3Rfc3Nfc2VsZWN0b3I7CisJCXUxNiBob3N0X2RzX3NlbGVjdG9yOworCQl1MTYgaG9zdF9mc19zZWxlY3RvcjsKKwkJdTE2IGhvc3RfZ3Nfc2VsZWN0b3I7CisJCXUxNiBob3N0X3RyX3NlbGVjdG9yOworCX07CisKKworQXV0aG9ycworLS0tLS0tLQorCitUaGVzZSBwYXRjaGVzIHdlcmUgd3JpdHRlbiBieToKKyAgICAgQWJlbCBHb3Jkb24sIGFiZWxnIDxhdD4gaWwuaWJtLmNvbQorICAgICBOYWRhdiBIYXInRWwsIG55aCA8YXQ+IGlsLmlibS5jb20KKyAgICAgT3JpdCBXYXNzZXJtYW4sIG9yaXR3IDxhdD4gaWwuaWJtLmNvbQorICAgICBCZW4tQW1pIFlhc3NvciwgYmVuYW1pIDxhdD4gaWwuaWJtLmNvbQorICAgICBNdWxpIEJlbi1ZZWh1ZGEsIG11bGkgPGF0PiBpbC5pYm0uY29tCisKK1dpdGggY29udHJpYnV0aW9ucyBieToKKyAgICAgQW50aG9ueSBMaWd1b3JpLCBhbGlndW9yaSA8YXQ+IHVzLmlibS5jb20KKyAgICAgTWlrZSBEYXksIG1kZGF5IDxhdD4gdXMuaWJtLmNvbQorICAgICBNaWNoYWVsIEZhY3RvciwgZmFjdG9yIDxhdD4gaWwuaWJtLmNvbQorICAgICBadmkgRHViaXR6a3ksIGR1YmkgPGF0PiBpbC5pYm0uY29tCisKK0FuZCB2YWx1YWJsZSByZXZpZXdzIGJ5OgorICAgICBBdmkgS2l2aXR5LCBhdmkgPGF0PiByZWRoYXQuY29tCisgICAgIEdsZWIgTmF0YXBvdiwgZ2xlYiA8YXQ+IHJlZGhhdC5jb20KKyAgICAgTWFyY2VsbyBUb3NhdHRpLCBtdG9zYXR0aSA8YXQ+IHJlZGhhdC5jb20KKyAgICAgS2V2aW4gVGlhbiwga2V2aW4udGlhbiA8YXQ+IGludGVsLmNvbQorICAgICBhbmQgb3RoZXJzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9wcGMtcHYudHh0IGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9wcGMtcHYudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyNjExNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL3BwYy1wdi50eHQKQEAgLTAsMCArMSwyMTIgQEAKK1RoZSBQUEMgS1ZNIHBhcmF2aXJ0dWFsIGludGVyZmFjZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBiYXNpYyBleGVjdXRpb24gcHJpbmNpcGxlIGJ5IHdoaWNoIEtWTSBvbiBQb3dlclBDIHdvcmtzIGlzIHRvIHJ1biBhbGwga2VybmVsCitzcGFjZSBjb2RlIGluIFBSPTEgd2hpY2ggaXMgdXNlciBzcGFjZS4gVGhpcyB3YXkgd2UgdHJhcCBhbGwgcHJpdmlsZWdlZAoraW5zdHJ1Y3Rpb25zIGFuZCBjYW4gZW11bGF0ZSB0aGVtIGFjY29yZGluZ2x5LgorCitVbmZvcnR1bmF0ZWx5IHRoYXQgaXMgYWxzbyB0aGUgZG93bmZhbGwuIFRoZXJlIGFyZSBxdWl0ZSBzb21lIHByaXZpbGVnZWQKK2luc3RydWN0aW9ucyB0aGF0IG5lZWRsZXNzbHkgcmV0dXJuIHVzIHRvIHRoZSBoeXBlcnZpc29yIGV2ZW4gdGhvdWdoIHRoZXkKK2NvdWxkIGJlIGhhbmRsZWQgZGlmZmVyZW50bHkuCisKK1RoaXMgaXMgd2hhdCB0aGUgUFBDIFBWIGludGVyZmFjZSBoZWxwcyB3aXRoLiBJdCB0YWtlcyBwcml2aWxlZ2VkIGluc3RydWN0aW9ucworYW5kIHRyYW5zZm9ybXMgdGhlbSBpbnRvIHVucHJpdmlsZWdlZCBvbmVzIHdpdGggc29tZSBoZWxwIGZyb20gdGhlIGh5cGVydmlzb3IuCitUaGlzIGN1dHMgZG93biB2aXJ0dWFsaXphdGlvbiBjb3N0cyBieSBhYm91dCA1MCUgb24gc29tZSBvZiBteSBiZW5jaG1hcmtzLgorCitUaGUgY29kZSBmb3IgdGhhdCBpbnRlcmZhY2UgY2FuIGJlIGZvdW5kIGluIGFyY2gvcG93ZXJwYy9rZXJuZWwva3ZtKgorCitRdWVyeWluZyBmb3IgZXhpc3RlbmNlCis9PT09PT09PT09PT09PT09PT09PT09CisKK1RvIGZpbmQgb3V0IGlmIHdlJ3JlIHJ1bm5pbmcgb24gS1ZNIG9yIG5vdCwgd2UgbGV2ZXJhZ2UgdGhlIGRldmljZSB0cmVlLiBXaGVuCitMaW51eCBpcyBydW5uaW5nIG9uIEtWTSwgYSBub2RlIC9oeXBlcnZpc29yIGV4aXN0cy4gVGhhdCBub2RlIGNvbnRhaW5zIGEKK2NvbXBhdGlibGUgcHJvcGVydHkgd2l0aCB0aGUgdmFsdWUgImxpbnV4LGt2bSIuCisKK09uY2UgeW91IGRldGVybWluZWQgeW91J3JlIHJ1bm5pbmcgdW5kZXIgYSBQViBjYXBhYmxlIEtWTSwgeW91IGNhbiBub3cgdXNlCitoeXBlcmNhbGxzIGFzIGRlc2NyaWJlZCBiZWxvdy4KKworS1ZNIGh5cGVyY2FsbHMKKz09PT09PT09PT09PT09CisKK0luc2lkZSB0aGUgZGV2aWNlIHRyZWUncyAvaHlwZXJ2aXNvciBub2RlIHRoZXJlJ3MgYSBwcm9wZXJ0eSBjYWxsZWQKKydoeXBlcmNhbGwtaW5zdHJ1Y3Rpb25zJy4gVGhpcyBwcm9wZXJ0eSBjb250YWlucyBhdCBtb3N0IDQgb3Bjb2RlcyB0aGF0IG1ha2UKK3VwIHRoZSBoeXBlcmNhbGwuIFRvIGNhbGwgYSBoeXBlcmNhbGwsIGp1c3QgY2FsbCB0aGVzZSBpbnN0cnVjdGlvbnMuCisKK1RoZSBwYXJhbWV0ZXJzIGFyZSBhcyBmb2xsb3dzOgorCisJUmVnaXN0ZXIJSU4JCQlPVVQKKworCXIwCQktCQkJdm9sYXRpbGUKKwlyMwkJMXN0IHBhcmFtZXRlcgkJUmV0dXJuIGNvZGUKKwlyNAkJMm5kIHBhcmFtZXRlcgkJMXN0IG91dHB1dCB2YWx1ZQorCXI1CQkzcmQgcGFyYW1ldGVyCQkybmQgb3V0cHV0IHZhbHVlCisJcjYJCTR0aCBwYXJhbWV0ZXIJCTNyZCBvdXRwdXQgdmFsdWUKKwlyNwkJNXRoIHBhcmFtZXRlcgkJNHRoIG91dHB1dCB2YWx1ZQorCXI4CQk2dGggcGFyYW1ldGVyCQk1dGggb3V0cHV0IHZhbHVlCisJcjkJCTd0aCBwYXJhbWV0ZXIJCTZ0aCBvdXRwdXQgdmFsdWUKKwlyMTAJCTh0aCBwYXJhbWV0ZXIJCTd0aCBvdXRwdXQgdmFsdWUKKwlyMTEJCWh5cGVyY2FsbCBudW1iZXIJOHRoIG91dHB1dCB2YWx1ZQorCXIxMgkJLQkJCXZvbGF0aWxlCisKK0h5cGVyY2FsbCBkZWZpbml0aW9ucyBhcmUgc2hhcmVkIGluIGdlbmVyaWMgY29kZSwgc28gdGhlIHNhbWUgaHlwZXJjYWxsIG51bWJlcnMKK2FwcGx5IGZvciB4ODYgYW5kIHBvd2VycGMgYWxpa2Ugd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgZWFjaCBLVk0gaHlwZXJjYWxsCithbHNvIG5lZWRzIHRvIGJlIE9SZWQgd2l0aCB0aGUgS1ZNIHZlbmRvciBjb2RlIHdoaWNoIGlzICg0MiA8PCAxNikuCisKK1JldHVybiBjb2RlcyBjYW4gYmUgYXMgZm9sbG93czoKKworCUNvZGUJCU1lYW5pbmcKKworCTAJCVN1Y2Nlc3MKKwkxMgkJSHlwZXJjYWxsIG5vdCBpbXBsZW1lbnRlZAorCTwwCQlFcnJvcgorCitUaGUgbWFnaWMgcGFnZQorPT09PT09PT09PT09PT0KKworVG8gZW5hYmxlIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgaHlwZXJ2aXNvciBhbmQgZ3Vlc3QgdGhlcmUgaXMgYSBuZXcgc2hhcmVkCitwYWdlIHRoYXQgY29udGFpbnMgcGFydHMgb2Ygc3VwZXJ2aXNvciB2aXNpYmxlIHJlZ2lzdGVyIHN0YXRlLiBUaGUgZ3Vlc3QgY2FuCittYXAgdGhpcyBzaGFyZWQgcGFnZSB1c2luZyB0aGUgS1ZNIGh5cGVyY2FsbCBLVk1fSENfUFBDX01BUF9NQUdJQ19QQUdFLgorCitXaXRoIHRoaXMgaHlwZXJjYWxsIGlzc3VlZCB0aGUgZ3Vlc3QgYWx3YXlzIGdldHMgdGhlIG1hZ2ljIHBhZ2UgbWFwcGVkIGF0IHRoZQorZGVzaXJlZCBsb2NhdGlvbi4gVGhlIGZpcnN0IHBhcmFtZXRlciBpbmRpY2F0ZXMgdGhlIGVmZmVjdGl2ZSBhZGRyZXNzIHdoZW4gdGhlCitNTVUgaXMgZW5hYmxlZC4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgaW5kaWNhdGVzIHRoZSBhZGRyZXNzIGluIHJlYWwgbW9kZSwgaWYKK2FwcGxpY2FibGUgdG8gdGhlIHRhcmdldC4gRm9yIG5vdywgd2UgYWx3YXlzIG1hcCB0aGUgcGFnZSB0byAtNDA5Ni4gVGhpcyB3YXkgd2UKK2NhbiBhY2Nlc3MgaXQgdXNpbmcgYWJzb2x1dGUgbG9hZCBhbmQgc3RvcmUgZnVuY3Rpb25zLiBUaGUgZm9sbG93aW5nCitpbnN0cnVjdGlvbiByZWFkcyB0aGUgZmlyc3QgZmllbGQgb2YgdGhlIG1hZ2ljIHBhZ2U6CisKKwlsZAlyWCwgLTQwOTYoMCkKKworVGhlIGludGVyZmFjZSBpcyBkZXNpZ25lZCB0byBiZSBleHRlbnNpYmxlIHNob3VsZCB0aGVyZSBiZSBuZWVkIGxhdGVyIHRvIGFkZAorYWRkaXRpb25hbCByZWdpc3RlcnMgdG8gdGhlIG1hZ2ljIHBhZ2UuIElmIHlvdSBhZGQgZmllbGRzIHRvIHRoZSBtYWdpYyBwYWdlLAorYWxzbyBkZWZpbmUgYSBuZXcgaHlwZXJjYWxsIGZlYXR1cmUgdG8gaW5kaWNhdGUgdGhhdCB0aGUgaG9zdCBjYW4gZ2l2ZSB5b3UgbW9yZQorcmVnaXN0ZXJzLiBPbmx5IGlmIHRoZSBob3N0IHN1cHBvcnRzIHRoZSBhZGRpdGlvbmFsIGZlYXR1cmVzLCBtYWtlIHVzZSBvZiB0aGVtLgorCitUaGUgbWFnaWMgcGFnZSBsYXlvdXQgaXMgZGVzY3JpYmVkIGJ5IHN0cnVjdCBrdm1fdmNwdV9hcmNoX3NoYXJlZAoraW4gYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmguCisKK01hZ2ljIHBhZ2UgZmVhdHVyZXMKKz09PT09PT09PT09PT09PT09PT0KKworV2hlbiBtYXBwaW5nIHRoZSBtYWdpYyBwYWdlIHVzaW5nIHRoZSBLVk0gaHlwZXJjYWxsIEtWTV9IQ19QUENfTUFQX01BR0lDX1BBR0UsCithIHNlY29uZCByZXR1cm4gdmFsdWUgaXMgcGFzc2VkIHRvIHRoZSBndWVzdC4gVGhpcyBzZWNvbmQgcmV0dXJuIHZhbHVlIGNvbnRhaW5zCithIGJpdG1hcCBvZiBhdmFpbGFibGUgZmVhdHVyZXMgaW5zaWRlIHRoZSBtYWdpYyBwYWdlLgorCitUaGUgZm9sbG93aW5nIGVuaGFuY2VtZW50cyB0byB0aGUgbWFnaWMgcGFnZSBhcmUgY3VycmVudGx5IGF2YWlsYWJsZToKKworICBLVk1fTUFHSUNfRkVBVF9TUgkJTWFwcyBTUiByZWdpc3RlcnMgci93IGluIHRoZSBtYWdpYyBwYWdlCisgIEtWTV9NQUdJQ19GRUFUX01BUzBfVE9fU1BSRzcJTWFwcyBNQVNuLCBFU1IsIFBJUiBhbmQgaGlnaCBTUFJHcworCitGb3IgZW5oYW5jZWQgZmVhdHVyZXMgaW4gdGhlIG1hZ2ljIHBhZ2UsIHBsZWFzZSBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiB0aGUKK2ZlYXR1cmUgYmVmb3JlIHVzaW5nIHRoZW0hCisKK01hZ2ljIHBhZ2UgZmxhZ3MKKz09PT09PT09PT09PT09PT0KKworSW4gYWRkaXRpb24gdG8gZmVhdHVyZXMgdGhhdCBpbmRpY2F0ZSB3aGV0aGVyIGEgaG9zdCBpcyBjYXBhYmxlIG9mIGEgcGFydGljdWxhcgorZmVhdHVyZSB3ZSBhbHNvIGhhdmUgYSBjaGFubmVsIGZvciBhIGd1ZXN0IHRvIHRlbGwgdGhlIGd1ZXN0IHdoZXRoZXIgaXQncyBjYXBhYmxlCitvZiBzb21ldGhpbmcuIFRoaXMgaXMgd2hhdCB3ZSBjYWxsICJmbGFncyIuCisKK0ZsYWdzIGFyZSBwYXNzZWQgdG8gdGhlIGhvc3QgaW4gdGhlIGxvdyAxMiBiaXRzIG9mIHRoZSBFZmZlY3RpdmUgQWRkcmVzcy4KKworVGhlIGZvbGxvd2luZyBmbGFncyBhcmUgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgYSBndWVzdCB0byBleHBvc2U6CisKKyAgTUFHSUNfUEFHRV9GTEFHX05PVF9NQVBQRURfTlggR3Vlc3QgaGFuZGxlcyBOWCBiaXRzIGNvcnJlY3RseSB3cnQgbWFnaWMgcGFnZQorCitNU1IgYml0cworPT09PT09PT0KKworVGhlIE1TUiBjb250YWlucyBiaXRzIHRoYXQgcmVxdWlyZSBoeXBlcnZpc29yIGludGVydmVudGlvbiBhbmQgYml0cyB0aGF0IGRvCitub3QgcmVxdWlyZSBkaXJlY3QgaHlwZXJ2aXNvciBpbnRlcnZlbnRpb24gYmVjYXVzZSB0aGV5IG9ubHkgZ2V0IGludGVycHJldGVkCit3aGVuIGVudGVyaW5nIHRoZSBndWVzdCBvciBkb24ndCBoYXZlIGFueSBpbXBhY3Qgb24gdGhlIGh5cGVydmlzb3IncyBiZWhhdmlvci4KKworVGhlIGZvbGxvd2luZyBiaXRzIGFyZSBzYWZlIHRvIGJlIHNldCBpbnNpZGUgdGhlIGd1ZXN0OgorCisgIE1TUl9FRQorICBNU1JfUkkKKworSWYgYW55IG90aGVyIGJpdCBjaGFuZ2VzIGluIHRoZSBNU1IsIHBsZWFzZSBzdGlsbCB1c2UgbXRtc3IoZCkuCisKK1BhdGNoZWQgaW5zdHJ1Y3Rpb25zCis9PT09PT09PT09PT09PT09PT09PQorCitUaGUgImxkIiBhbmQgInN0ZCIgaW5zdHJ1Y3Rpb25zIGFyZSB0cmFuc2Zvcm1lZCB0byAibHd6IiBhbmQgInN0dyIgaW5zdHJ1Y3Rpb25zCityZXNwZWN0aXZlbHkgb24gMzIgYml0IHN5c3RlbXMgd2l0aCBhbiBhZGRlZCBvZmZzZXQgb2YgNCB0byBhY2NvbW1vZGF0ZSBmb3IgYmlnCitlbmRpYW5uZXNzLgorCitUaGUgZm9sbG93aW5nIGlzIGEgbGlzdCBvZiBtYXBwaW5nIHRoZSBMaW51eCBrZXJuZWwgcGVyZm9ybXMgd2hlbiBydW5uaW5nIGFzCitndWVzdC4gSW1wbGVtZW50aW5nIGFueSBvZiB0aG9zZSBtYXBwaW5ncyBpcyBvcHRpb25hbCwgYXMgdGhlIGluc3RydWN0aW9uIHRyYXBzCithbHNvIGFjdCBvbiB0aGUgc2hhcmVkIHBhZ2UuIFNvIGNhbGxpbmcgcHJpdmlsZWdlZCBpbnN0cnVjdGlvbnMgc3RpbGwgd29ya3MgYXMKK2JlZm9yZS4KKworRnJvbQkJCVRvCis9PT09CQkJPT0KKworbWZtc3IJclgJCWxkCXJYLCBtYWdpY19wYWdlLT5tc3IKK21mc3ByZwlyWCwgMAkJbGQJclgsIG1hZ2ljX3BhZ2UtPnNwcmcwCittZnNwcmcJclgsIDEJCWxkCXJYLCBtYWdpY19wYWdlLT5zcHJnMQorbWZzcHJnCXJYLCAyCQlsZAlyWCwgbWFnaWNfcGFnZS0+c3ByZzIKK21mc3ByZwlyWCwgMwkJbGQJclgsIG1hZ2ljX3BhZ2UtPnNwcmczCittZnNycjAJclgJCWxkCXJYLCBtYWdpY19wYWdlLT5zcnIwCittZnNycjEJclgJCWxkCXJYLCBtYWdpY19wYWdlLT5zcnIxCittZmRhcglyWAkJbGQJclgsIG1hZ2ljX3BhZ2UtPmRhcgorbWZkc2lzcglyWAkJbHd6CXJYLCBtYWdpY19wYWdlLT5kc2lzcgorCittdG1zcglyWAkJc3RkCXJYLCBtYWdpY19wYWdlLT5tc3IKK210c3ByZwkwLCByWAkJc3RkCXJYLCBtYWdpY19wYWdlLT5zcHJnMAorbXRzcHJnCTEsIHJYCQlzdGQJclgsIG1hZ2ljX3BhZ2UtPnNwcmcxCittdHNwcmcJMiwgclgJCXN0ZAlyWCwgbWFnaWNfcGFnZS0+c3ByZzIKK210c3ByZwkzLCByWAkJc3RkCXJYLCBtYWdpY19wYWdlLT5zcHJnMworbXRzcnIwCXJYCQlzdGQJclgsIG1hZ2ljX3BhZ2UtPnNycjAKK210c3JyMQlyWAkJc3RkCXJYLCBtYWdpY19wYWdlLT5zcnIxCittdGRhcglyWAkJc3RkCXJYLCBtYWdpY19wYWdlLT5kYXIKK210ZHNpc3IJclgJCXN0dwlyWCwgbWFnaWNfcGFnZS0+ZHNpc3IKKwordGxic3luYwkJCW5vcAorCittdG1zcmQJclgsIDAJCWIJPHNwZWNpYWwgbXRtc3Igc2VjdGlvbj4KK210bXNyCXJYCQliCTxzcGVjaWFsIG10bXNyIHNlY3Rpb24+CisKK210bXNyZAlyWCwgMQkJYgk8c3BlY2lhbCBtdG1zcmQgc2VjdGlvbj4KKworW0Jvb2szUyBvbmx5XQorbXRzcmluCXJYLCByWQkJYgk8c3BlY2lhbCBtdHNyaW4gc2VjdGlvbj4KKworW0Jvb2tFIG9ubHldCit3cnRlZWkJWzB8MV0JCWIJPHNwZWNpYWwgd3J0ZWVpIHNlY3Rpb24+CisKKworU29tZSBpbnN0cnVjdGlvbnMgcmVxdWlyZSBtb3JlIGxvZ2ljIHRvIGRldGVybWluZSB3aGF0J3MgZ29pbmcgb24gdGhhbiBhIGxvYWQKK29yIHN0b3JlIGluc3RydWN0aW9uIGNhbiBkZWxpdmVyLiBUbyBlbmFibGUgcGF0Y2hpbmcgb2YgdGhvc2UsIHdlIGtlZXAgc29tZQorUkFNIGFyb3VuZCB3aGVyZSB3ZSBjYW4gbGl2ZSB0cmFuc2xhdGUgaW5zdHJ1Y3Rpb25zIHRvLiBXaGF0IGhhcHBlbnMgaXMgdGhlCitmb2xsb3dpbmc6CisKKwkxKSBjb3B5IGVtdWxhdGlvbiBjb2RlIHRvIG1lbW9yeQorCTIpIHBhdGNoIHRoYXQgY29kZSB0byBmaXQgdGhlIGVtdWxhdGVkIGluc3RydWN0aW9uCisJMykgcGF0Y2ggdGhhdCBjb2RlIHRvIHJldHVybiB0byB0aGUgb3JpZ2luYWwgcGMgKyA0CisJNCkgcGF0Y2ggdGhlIG9yaWdpbmFsIGluc3RydWN0aW9uIHRvIGJyYW5jaCB0byB0aGUgbmV3IGNvZGUKKworVGhhdCB3YXkgd2UgY2FuIGluamVjdCBhbiBhcmJpdHJhcnkgYW1vdW50IG9mIGNvZGUgYXMgcmVwbGFjZW1lbnQgZm9yIGEgc2luZ2xlCitpbnN0cnVjdGlvbi4gVGhpcyBhbGxvd3MgdXMgdG8gY2hlY2sgZm9yIHBlbmRpbmcgaW50ZXJydXB0cyB3aGVuIHNldHRpbmcgRUU9MQorZm9yIGV4YW1wbGUuCisKK0h5cGVyY2FsbCBBQklzIGluIEtWTSBvbiBQb3dlclBDCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzEpIEtWTSBoeXBlcmNhbGxzIChlUEFQUikKKworVGhlc2UgYXJlIGVQQVBSIGNvbXBsaWFudCBoeXBlcmNhbGwgaW1wbGVtZW50YXRpb24gKG1lbnRpb25lZCBhYm92ZSkuIEV2ZW4KK2dlbmVyaWMgaHlwZXJjYWxscyBhcmUgaW1wbGVtZW50ZWQgaGVyZSwgbGlrZSB0aGUgZVBBUFIgaWRsZSBoY2FsbC4gVGhlc2UgYXJlCithdmFpbGFibGUgb24gYWxsIHRhcmdldHMuCisKKzIpIFBBUFIgaHlwZXJjYWxscworCitQQVBSIGh5cGVyY2FsbHMgYXJlIG5lZWRlZCB0byBydW4gc2VydmVyIFBvd2VyUEMgUEFQUiBndWVzdHMgKC1NIHBzZXJpZXMgaW4gUUVNVSkuCitUaGVzZSBhcmUgdGhlIHNhbWUgaHlwZXJjYWxscyB0aGF0IHBIeXAsIHRoZSBQT1dFUiBoeXBlcnZpc29yIGltcGxlbWVudHMuIFNvbWUgb2YKK3RoZW0gYXJlIGhhbmRsZWQgaW4gdGhlIGtlcm5lbCwgc29tZSBhcmUgaGFuZGxlZCBpbiB1c2VyIHNwYWNlLiBUaGlzIGlzIG9ubHkKK2F2YWlsYWJsZSBvbiBib29rM3NfNjQuCisKKzMpIE9TSSBoeXBlcmNhbGxzCisKK01hYy1vbi1MaW51eCBpcyBhbm90aGVyIHVzZXIgb2YgS1ZNIG9uIFBvd2VyUEMsIHdoaWNoIGhhcyBpdHMgb3duIGh5cGVyY2FsbCAobG9uZworYmVmb3JlIEtWTSkuIFRoaXMgaXMgc3VwcG9ydGVkIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkuIEFsbCB0aGVzZSBoeXBlcmNhbGxzIGdldAorZm9yd2FyZGVkIHRvIHVzZXIgc3BhY2UuIFRoaXMgaXMgb25seSB1c2VmdWwgb24gYm9vazNzXzMyLCBidXQgY2FuIGJlIHVzZWQgd2l0aAorYm9vazNzXzY0IGFzIHdlbGwuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL3Jldmlldy1jaGVja2xpc3QudHh0IGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9yZXZpZXctY2hlY2tsaXN0LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODUwOTg2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9yZXZpZXctY2hlY2tsaXN0LnR4dApAQCAtMCwwICsxLDM4IEBACitSZXZpZXcgY2hlY2tsaXN0IGZvciBrdm0gcGF0Y2hlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworMS4gIFRoZSBwYXRjaCBtdXN0IGZvbGxvdyBEb2N1bWVudGF0aW9uL0NvZGluZ1N0eWxlIGFuZAorICAgIERvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXMuCisKKzIuICBQYXRjaGVzIHNob3VsZCBiZSBhZ2FpbnN0IGt2bS5naXQgbWFzdGVyIGJyYW5jaC4KKworMy4gIElmIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIGEgbmV3IHVzZXJzcGFjZSBBUEk6CisgICAgLSB0aGUgQVBJIG11c3QgYmUgZG9jdW1lbnRlZCBpbiBEb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2FwaS50eHQKKyAgICAtIHRoZSBBUEkgbXVzdCBiZSBkaXNjb3ZlcmFibGUgdXNpbmcgS1ZNX0NIRUNLX0VYVEVOU0lPTgorCis0LiAgTmV3IHN0YXRlIG11c3QgaW5jbHVkZSBzdXBwb3J0IGZvciBzYXZlL3Jlc3RvcmUuCisKKzUuICBOZXcgZmVhdHVyZXMgbXVzdCBkZWZhdWx0IHRvIG9mZiAodXNlcnNwYWNlIHNob3VsZCBleHBsaWNpdGx5IHJlcXVlc3QgdGhlbSkuCisgICAgUGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzIGNhbiBhbmQgc2hvdWxkIGRlZmF1bHQgdG8gb24uCisKKzYuICBOZXcgY3B1IGZlYXR1cmVzIHNob3VsZCBiZSBleHBvc2VkIHZpYSBLVk1fR0VUX1NVUFBPUlRFRF9DUFVJRDIKKworNy4gIEVtdWxhdG9yIGNoYW5nZXMgc2hvdWxkIGJlIGFjY29tcGFuaWVkIGJ5IHVuaXQgdGVzdHMgZm9yIHFlbXUta3ZtLmdpdAorICAgIGt2bS90ZXN0IGRpcmVjdG9yeS4KKworOC4gIENoYW5nZXMgc2hvdWxkIGJlIHZlbmRvciBuZXV0cmFsIHdoZW4gcG9zc2libGUuICBDaGFuZ2VzIHRvIGNvbW1vbiBjb2RlCisgICAgYXJlIGJldHRlciB0aGFuIGR1cGxpY2F0aW5nIGNoYW5nZXMgdG8gdmVuZG9yIGNvZGUuCisKKzkuICBTaW1pbGFybHksIHByZWZlciBjaGFuZ2VzIHRvIGFyY2ggaW5kZXBlbmRlbnQgY29kZSB0aGFuIHRvIGFyY2ggZGVwZW5kZW50CisgICAgY29kZS4KKworMTAuIFVzZXIva2VybmVsIGludGVyZmFjZXMgYW5kIGd1ZXN0L2hvc3QgaW50ZXJmYWNlcyBtdXN0IGJlIDY0LWJpdCBjbGVhbgorICAgIChhbGwgdmFyaWFibGVzIGFuZCBzaXplcyBuYXR1cmFsbHkgYWxpZ25lZCBvbiA2NC1iaXQ7IHVzZSBzcGVjaWZpYyB0eXBlcworICAgIG9ubHkgLSB1NjQgcmF0aGVyIHRoYW4gdWxvbmcpLgorCisxMS4gTmV3IGd1ZXN0IHZpc2libGUgZmVhdHVyZXMgbXVzdCBlaXRoZXIgYmUgZG9jdW1lbnRlZCBpbiBhIGhhcmR3YXJlIG1hbnVhbAorICAgIG9yIGJlIGFjY29tcGFuaWVkIGJ5IGRvY3VtZW50YXRpb24uCisKKzEyLiBGZWF0dXJlcyBtdXN0IGJlIHJvYnVzdCBhZ2FpbnN0IHJlc2V0IGFuZCBrZXhlYyAtIGZvciBleGFtcGxlLCBzaGFyZWQKKyAgICBob3N0L2d1ZXN0IG1lbW9yeSBtdXN0IGJlIHVuc2hhcmVkIHRvIHByZXZlbnQgdGhlIGhvc3QgZnJvbSB3cml0aW5nIHRvCisgICAgZ3Vlc3QgbWVtb3J5IHRoYXQgdGhlIGd1ZXN0IGhhcyBub3QgcmVzZXJ2ZWQgZm9yIHRoaXMgcHVycG9zZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vczM5MC1kaWFnLnR4dCBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vczM5MC1kaWFnLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGM0OTIxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9zMzkwLWRpYWcudHh0CkBAIC0wLDAgKzEsODIgQEAKK1RoZSBzMzkwIERJQUdOT1NFIGNhbGwgb24gS1ZNCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitLVk0gb24gczM5MCBzdXBwb3J0cyB0aGUgRElBR05PU0UgY2FsbCBmb3IgbWFraW5nIGh5cGVyY2FsbHMsIGJvdGggZm9yCituYXRpdmUgaHlwZXJjYWxscyBhbmQgZm9yIHNlbGVjdGVkIGh5cGVyY2FsbHMgZm91bmQgb24gb3RoZXIgczM5MAoraHlwZXJ2aXNvcnMuCisKK05vdGUgdGhhdCBiaXRzIGFyZSBudW1iZXJlZCBhcyBieSB0aGUgdXN1YWwgczM5MCBjb252ZW50aW9uIChtb3N0IHNpZ25pZmljYW50CitiaXQgb24gdGhlIGxlZnQpLgorCisKK0dlbmVyYWwgcmVtYXJrcworLS0tLS0tLS0tLS0tLS0tCisKK0RJQUdOT1NFIGNhbGxzIGJ5IHRoZSBndWVzdCBjYXVzZSBhIG1hbmRhdG9yeSBpbnRlcmNlcHQuIFRoaXMgaW1wbGllcworYWxsIHN1cHBvcnRlZCBESUFHTk9TRSBjYWxscyBuZWVkIHRvIGJlIGhhbmRsZWQgYnkgZWl0aGVyIEtWTSBvciBpdHMKK3VzZXJzcGFjZS4KKworQWxsIERJQUdOT1NFIGNhbGxzIHN1cHBvcnRlZCBieSBLVk0gdXNlIHRoZSBSUy1hIGZvcm1hdDoKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3wgICc4MycgIHwgUjEgfCBSMyB8IEIyIHwgICAgIEQyICAgICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMCAgICAgICAgOCAgICAxMiAgIDE2ICAgMjAgICAgICAgICAgIDMxCisKK1RoZSBzZWNvbmQtb3BlcmFuZCBhZGRyZXNzIChvYnRhaW5lZCBieSB0aGUgYmFzZS9kaXNwbGFjZW1lbnQgY2FsY3VsYXRpb24pCitpcyBub3QgdXNlZCB0byBhZGRyZXNzIGRhdGEuIEluc3RlYWQsIGJpdHMgNDgtNjMgb2YgdGhpcyBhZGRyZXNzIHNwZWNpZnkKK3RoZSBmdW5jdGlvbiBjb2RlLCBhbmQgYml0cyAwLTQ3IGFyZSBpZ25vcmVkLgorCitUaGUgc3VwcG9ydGVkIERJQUdOT1NFIGZ1bmN0aW9uIGNvZGVzIHZhcnkgYnkgdGhlIHVzZXJzcGFjZSB1c2VkLiBGb3IKK0RJQUdOT1NFIGZ1bmN0aW9uIGNvZGVzIG5vdCBzcGVjaWZpYyB0byBLVk0sIHBsZWFzZSByZWZlciB0byB0aGUKK2RvY3VtZW50YXRpb24gZm9yIHRoZSBzMzkwIGh5cGVydmlzb3JzIGRlZmluaW5nIHRoZW0uCisKKworRElBR05PU0UgZnVuY3Rpb24gY29kZSAnWCc1MDAnIC0gS1ZNIHZpcnRpbyBmdW5jdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHRoZSBmdW5jdGlvbiBjb2RlIHNwZWNpZmllcyAweDUwMCwgdmFyaW91cyB2aXJ0aW8tcmVsYXRlZCBmdW5jdGlvbnMKK2FyZSBwZXJmb3JtZWQuCisKK0dlbmVyYWwgcmVnaXN0ZXIgMSBjb250YWlucyB0aGUgdmlydGlvIHN1YmZ1bmN0aW9uIGNvZGUuIFN1cHBvcnRlZAordmlydGlvIHN1YmZ1bmN0aW9ucyBkZXBlbmQgb24gS1ZNJ3MgdXNlcnNwYWNlLiBHZW5lcmFsbHksIHVzZXJzcGFjZQorcHJvdmlkZXMgZWl0aGVyIHMzOTAtdmlydGlvIChzdWJjb2RlcyAwLTIpIG9yIHZpcnRpby1jY3cgKHN1YmNvZGUgMykuCisKK1Vwb24gY29tcGxldGlvbiBvZiB0aGUgRElBR05PU0UgaW5zdHJ1Y3Rpb24sIGdlbmVyYWwgcmVnaXN0ZXIgMiBjb250YWlucwordGhlIGZ1bmN0aW9uJ3MgcmV0dXJuIGNvZGUsIHdoaWNoIGlzIGVpdGhlciBhIHJldHVybiBjb2RlIG9yIGEgc3ViY29kZQorc3BlY2lmaWMgdmFsdWUuCisKK1N1YmNvZGUgMCAtIHMzOTAtdmlydGlvIG5vdGlmaWNhdGlvbiBhbmQgZWFybHkgY29uc29sZSBwcmludGsKKyAgICBIYW5kbGVkIGJ5IHVzZXJzcGFjZS4KKworU3ViY29kZSAxIC0gczM5MC12aXJ0aW8gcmVzZXQKKyAgICBIYW5kbGVkIGJ5IHVzZXJzcGFjZS4KKworU3ViY29kZSAyIC0gczM5MC12aXJ0aW8gc2V0IHN0YXR1cworICAgIEhhbmRsZWQgYnkgdXNlcnNwYWNlLgorCitTdWJjb2RlIDMgLSB2aXJ0aW8tY2N3IG5vdGlmaWNhdGlvbgorICAgIEhhbmRsZWQgYnkgZWl0aGVyIHVzZXJzcGFjZSBvciBLVk0gKGlvZXZlbnRmZCBjYXNlKS4KKworICAgIEdlbmVyYWwgcmVnaXN0ZXIgMiBjb250YWlucyBhIHN1YmNoYW5uZWwtaWRlbnRpZmljYXRpb24gd29yZCBkZW5vdGluZworICAgIHRoZSBzdWJjaGFubmVsIG9mIHRoZSB2aXJ0aW8tY2N3IHByb3h5IGRldmljZSB0byBiZSBub3RpZmllZC4KKworICAgIEdlbmVyYWwgcmVnaXN0ZXIgMyBjb250YWlucyB0aGUgbnVtYmVyIG9mIHRoZSB2aXJ0cXVldWUgdG8gYmUgbm90aWZpZWQuCisKKyAgICBHZW5lcmFsIHJlZ2lzdGVyIDQgY29udGFpbnMgYSA2NGJpdCBpZGVudGlmaWVyIGZvciBLVk0gdXNhZ2UgKHRoZQorICAgIGt2bV9pb19idXMgY29va2llKS4gSWYgZ2VuZXJhbCByZWdpc3RlciA0IGRvZXMgbm90IGNvbnRhaW4gYSB2YWxpZAorICAgIGlkZW50aWZpZXIsIGl0IGlzIGlnbm9yZWQuCisKKyAgICBBZnRlciBjb21wbGV0aW9uIG9mIHRoZSBESUFHTk9TRSBjYWxsLCBnZW5lcmFsIHJlZ2lzdGVyIDIgbWF5IGNvbnRhaW4KKyAgICBhIDY0Yml0IGlkZW50aWZpZXIgKGluIHRoZSBrdm1faW9fYnVzIGNvb2tpZSBjYXNlKS4KKworICAgIFNlZSBhbHNvIHRoZSB2aXJ0aW8gc3RhbmRhcmQgZm9yIGEgZGlzY3Vzc2lvbiBvZiB0aGlzIGh5cGVyY2FsbC4KKworCitESUFHTk9TRSBmdW5jdGlvbiBjb2RlICdYJzUwMSAtIEtWTSBicmVha3BvaW50CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHRoZSBmdW5jdGlvbiBjb2RlIHNwZWNpZmllcyAweDUwMSwgYnJlYWtwb2ludCBmdW5jdGlvbnMgbWF5IGJlIHBlcmZvcm1lZC4KK1RoaXMgZnVuY3Rpb24gY29kZSBpcyBoYW5kbGVkIGJ5IHVzZXJzcGFjZS4KKworVGhpcyBkaWFnbm9zZSBmdW5jdGlvbiBjb2RlIGhhcyBubyBzdWJmdW5jdGlvbnMgYW5kIHVzZXMgbm8gcGFyYW1ldGVycy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vdGltZWtlZXBpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS90aW1la2VlcGluZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY4MDhhMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vdGltZWtlZXBpbmcudHh0CkBAIC0wLDAgKzEsNjEyIEBACisKKwlUaW1la2VlcGluZyBWaXJ0dWFsaXphdGlvbiBmb3IgWDg2LUJhc2VkIEFyY2hpdGVjdHVyZXMKKworCVphY2hhcnkgQW1zZGVuIDx6YW1zZGVuQHJlZGhhdC5jb20+CisJQ29weXJpZ2h0IChjKSAyMDEwLCBSZWQgSGF0LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworMSkgT3ZlcnZpZXcKKzIpIFRpbWluZyBEZXZpY2VzCiszKSBUU0MgSGFyZHdhcmUKKzQpIFZpcnR1YWxpemF0aW9uIFByb2JsZW1zCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworMSkgT3ZlcnZpZXcKKworT25lIG9mIHRoZSBtb3N0IGNvbXBsaWNhdGVkIHBhcnRzIG9mIHRoZSBYODYgcGxhdGZvcm0sIGFuZCBzcGVjaWZpY2FsbHksCit0aGUgdmlydHVhbGl6YXRpb24gb2YgdGhpcyBwbGF0Zm9ybSBpcyB0aGUgcGxldGhvcmEgb2YgdGltaW5nIGRldmljZXMgYXZhaWxhYmxlCithbmQgdGhlIGNvbXBsZXhpdHkgb2YgZW11bGF0aW5nIHRob3NlIGRldmljZXMuICBJbiBhZGRpdGlvbiwgdmlydHVhbGl6YXRpb24gb2YKK3RpbWUgaW50cm9kdWNlcyBhIG5ldyBzZXQgb2YgY2hhbGxlbmdlcyBiZWNhdXNlIGl0IGludHJvZHVjZXMgYSBtdWx0aXBsZXhlZAorZGl2aXNpb24gb2YgdGltZSBiZXlvbmQgdGhlIGNvbnRyb2wgb2YgdGhlIGd1ZXN0IENQVS4KKworRmlyc3QsIHdlIHdpbGwgZGVzY3JpYmUgdGhlIHZhcmlvdXMgdGltZWtlZXBpbmcgaGFyZHdhcmUgYXZhaWxhYmxlLCB0aGVuCitwcmVzZW50IHNvbWUgb2YgdGhlIHByb2JsZW1zIHdoaWNoIGFyaXNlIGFuZCBzb2x1dGlvbnMgYXZhaWxhYmxlLCBnaXZpbmcKK3NwZWNpZmljIHJlY29tbWVuZGF0aW9ucyBmb3IgY2VydGFpbiBjbGFzc2VzIG9mIEtWTSBndWVzdHMuCisKK1RoZSBwdXJwb3NlIG9mIHRoaXMgZG9jdW1lbnQgaXMgdG8gY29sbGVjdCBkYXRhIGFuZCBpbmZvcm1hdGlvbiByZWxldmFudCB0bwordGltZWtlZXBpbmcgd2hpY2ggbWF5IGJlIGRpZmZpY3VsdCB0byBmaW5kIGVsc2V3aGVyZSwgc3BlY2lmaWNhbGx5LAoraW5mb3JtYXRpb24gcmVsZXZhbnQgdG8gS1ZNIGFuZCBoYXJkd2FyZS1iYXNlZCB2aXJ0dWFsaXphdGlvbi4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisyKSBUaW1pbmcgRGV2aWNlcworCitGaXJzdCB3ZSBkaXNjdXNzIHRoZSBiYXNpYyBoYXJkd2FyZSBkZXZpY2VzIGF2YWlsYWJsZS4gIFRTQyBhbmQgdGhlIHJlbGF0ZWQKK0tWTSBjbG9jayBhcmUgc3BlY2lhbCBlbm91Z2ggdG8gd2FycmFudCBhIGZ1bGwgZXhwb3NpdGlvbiBhbmQgYXJlIGRlc2NyaWJlZCBpbgordGhlIGZvbGxvd2luZyBzZWN0aW9uLgorCisyLjEpIGk4MjU0IC0gUElUCisKK09uZSBvZiB0aGUgZmlyc3QgdGltZXIgZGV2aWNlcyBhdmFpbGFibGUgaXMgdGhlIHByb2dyYW1tYWJsZSBpbnRlcnJ1cHQgdGltZXIsCitvciBQSVQuICBUaGUgUElUIGhhcyBhIGZpeGVkIGZyZXF1ZW5jeSAxLjE5MzE4MiBNSHogYmFzZSBjbG9jayBhbmQgdGhyZWUKK2NoYW5uZWxzIHdoaWNoIGNhbiBiZSBwcm9ncmFtbWVkIHRvIGRlbGl2ZXIgcGVyaW9kaWMgb3Igb25lLXNob3QgaW50ZXJydXB0cy4KK1RoZXNlIHRocmVlIGNoYW5uZWxzIGNhbiBiZSBjb25maWd1cmVkIGluIGRpZmZlcmVudCBtb2RlcyBhbmQgaGF2ZSBpbmRpdmlkdWFsCitjb3VudGVycy4gIENoYW5uZWwgMSBhbmQgMiB3ZXJlIG5vdCBhdmFpbGFibGUgZm9yIGdlbmVyYWwgdXNlIGluIHRoZSBvcmlnaW5hbAorSUJNIFBDLCBhbmQgaGlzdG9yaWNhbGx5IHdlcmUgY29ubmVjdGVkIHRvIGNvbnRyb2wgUkFNIHJlZnJlc2ggYW5kIHRoZSBQQworc3BlYWtlci4gIE5vdyB0aGUgUElUIGlzIHR5cGljYWxseSBpbnRlZ3JhdGVkIGFzIHBhcnQgb2YgYW4gZW11bGF0ZWQgY2hpcHNldAorYW5kIGEgc2VwYXJhdGUgcGh5c2ljYWwgUElUIGlzIG5vdCB1c2VkLgorCitUaGUgUElUIHVzZXMgSS9PIHBvcnRzIDB4NDAgLSAweDQzLiAgQWNjZXNzIHRvIHRoZSAxNi1iaXQgY291bnRlcnMgaXMgZG9uZQordXNpbmcgc2luZ2xlIG9yIG11bHRpcGxlIGJ5dGUgYWNjZXNzIHRvIHRoZSBJL08gcG9ydHMuICBUaGVyZSBhcmUgNiBtb2RlcworYXZhaWxhYmxlLCBidXQgbm90IGFsbCBtb2RlcyBhcmUgYXZhaWxhYmxlIHRvIGFsbCB0aW1lcnMsIGFzIG9ubHkgdGltZXIgMgoraGFzIGEgY29ubmVjdGVkIGdhdGUgaW5wdXQsIHJlcXVpcmVkIGZvciBtb2RlcyAxIGFuZCA1LiAgVGhlIGdhdGUgbGluZSBpcworY29udHJvbGxlZCBieSBwb3J0IDYxaCwgYml0IDAsIGFzIGlsbHVzdHJhdGVkIGluIHRoZSBmb2xsb3dpbmcgZGlhZ3JhbS4KKworIC0tLS0tLS0tLS0tLS0tICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0KK3wgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfAorfCAgMS4xOTMyIE1IeiAgfC0tLS0tLS0tLS0+fCBDTE9DSyAgICAgIE9VVCB8IC0tLS0tLS0tLT4gSVJRIDAKK3wgICAgQ2xvY2sgICAgIHwgICB8ICAgICAgIHwgICAgICAgICAgICAgICAgfAorIC0tLS0tLS0tLS0tLS0tICAgIHwgICAgKy0+fCBHQVRFICBUSU1FUiAwICB8CisgICAgICAgICAgICAgICAgICAgfCAgICAgICAgLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICB8ICAgICAgICAtLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgfCAgICAgICB8ICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICB8LS0tLS0tPnwgQ0xPQ0sgICAgICBPVVQgfCAtLS0tLS0tLS0+IDY2LjMgS0haIERSQU0KKyAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIChha2EgL2Rldi9udWxsKQorICAgICAgICAgICAgICAgICAgIHwgICAgKy0+fCBHQVRFICBUSU1FUiAxICB8CisgICAgICAgICAgICAgICAgICAgfCAgICAgICAgLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICB8ICAgICAgICAtLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgfCAgICAgICB8ICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICB8LS0tLS0tPnwgQ0xPQ0sgICAgICBPVVQgfCAtLS0tLS0tLS0+IFBvcnQgNjFoLCBiaXQgNQorICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICAgICAgfAorUG9ydCA2MWgsIGJpdCAwIC0tLS0tLS0tLS0+fCBHQVRFICBUSU1FUiAyICB8ICAgICAgIFxfLi0tLS0gICBfX19fCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLSAgICAgICAgIF98ICAgICktLXxMUEZ8LS0tU3BlYWtlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gKi0tLS0gICBcX19fLworUG9ydCA2MWgsIGJpdCAxIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLworCitUaGUgdGltZXIgbW9kZXMgYXJlIG5vdyBkZXNjcmliZWQuCisKK01vZGUgMDogU2luZ2xlIFRpbWVvdXQuICAgVGhpcyBpcyBhIG9uZS1zaG90IHNvZnR3YXJlIHRpbWVvdXQgdGhhdCBjb3VudHMgZG93bgorIHdoZW4gdGhlIGdhdGUgaXMgaGlnaCAoYWx3YXlzIHRydWUgZm9yIHRpbWVycyAwIGFuZCAxKS4gIFdoZW4gdGhlIGNvdW50CisgcmVhY2hlcyB6ZXJvLCB0aGUgb3V0cHV0IGdvZXMgaGlnaC4KKworTW9kZSAxOiBUcmlnZ2VyZWQgT25lLXNob3QuICBUaGUgb3V0cHV0IGlzIGluaXRpYWxseSBzZXQgaGlnaC4gIFdoZW4gdGhlIGdhdGUKKyBsaW5lIGlzIHNldCBoaWdoLCBhIGNvdW50ZG93biBpcyBpbml0aWF0ZWQgKHdoaWNoIGRvZXMgbm90IHN0b3AgaWYgdGhlIGdhdGUgaXMKKyBsb3dlcmVkKSwgZHVyaW5nIHdoaWNoIHRoZSBvdXRwdXQgaXMgc2V0IGxvdy4gIFdoZW4gdGhlIGNvdW50IHJlYWNoZXMgemVybywKKyB0aGUgb3V0cHV0IGdvZXMgaGlnaC4KKworTW9kZSAyOiBSYXRlIEdlbmVyYXRvci4gIFRoZSBvdXRwdXQgaXMgaW5pdGlhbGx5IHNldCBoaWdoLiAgV2hlbiB0aGUgY291bnRkb3duCisgcmVhY2hlcyAxLCB0aGUgb3V0cHV0IGdvZXMgbG93IGZvciBvbmUgY291bnQgYW5kIHRoZW4gcmV0dXJucyBoaWdoLiAgVGhlIHZhbHVlCisgaXMgcmVsb2FkZWQgYW5kIHRoZSBjb3VudGRvd24gYXV0b21hdGljYWxseSByZXN1bWVzLiAgSWYgdGhlIGdhdGUgbGluZSBnb2VzCisgbG93LCB0aGUgY291bnQgaXMgaGFsdGVkLiAgSWYgdGhlIG91dHB1dCBpcyBsb3cgd2hlbiB0aGUgZ2F0ZSBpcyBsb3dlcmVkLCB0aGUKKyBvdXRwdXQgYXV0b21hdGljYWxseSBnb2VzIGhpZ2ggKHRoaXMgb25seSBhZmZlY3RzIHRpbWVyIDIpLgorCitNb2RlIDM6IFNxdWFyZSBXYXZlLiAgIFRoaXMgZ2VuZXJhdGVzIGEgaGlnaCAvIGxvdyBzcXVhcmUgd2F2ZS4gIFRoZSBjb3VudAorIGRldGVybWluZXMgdGhlIGxlbmd0aCBvZiB0aGUgcHVsc2UsIHdoaWNoIGFsdGVybmF0ZXMgYmV0d2VlbiBoaWdoIGFuZCBsb3cKKyB3aGVuIHplcm8gaXMgcmVhY2hlZC4gIFRoZSBjb3VudCBvbmx5IHByb2NlZWRzIHdoZW4gZ2F0ZSBpcyBoaWdoIGFuZCBpcworIGF1dG9tYXRpY2FsbHkgcmVsb2FkZWQgb24gcmVhY2hpbmcgemVyby4gIFRoZSBjb3VudCBpcyBkZWNyZW1lbnRlZCB0d2ljZSBhdAorIGVhY2ggY2xvY2sgdG8gZ2VuZXJhdGUgYSBmdWxsIGhpZ2ggLyBsb3cgY3ljbGUgYXQgdGhlIGZ1bGwgcGVyaW9kaWMgcmF0ZS4KKyBJZiB0aGUgY291bnQgaXMgZXZlbiwgdGhlIGNsb2NrIHJlbWFpbnMgaGlnaCBmb3IgTi8yIGNvdW50cyBhbmQgbG93IGZvciBOLzIKKyBjb3VudHM7IGlmIHRoZSBjbG9jayBpcyBvZGQsIHRoZSBjbG9jayBpcyBoaWdoIGZvciAoTisxKS8yIGNvdW50cyBhbmQgbG93CisgZm9yIChOLTEpLzIgY291bnRzLiAgT25seSBldmVuIHZhbHVlcyBhcmUgbGF0Y2hlZCBieSB0aGUgY291bnRlciwgc28gb2RkCisgdmFsdWVzIGFyZSBub3Qgb2JzZXJ2ZWQgd2hlbiByZWFkaW5nLiAgVGhpcyBpcyB0aGUgaW50ZW5kZWQgbW9kZSBmb3IgdGltZXIgMiwKKyB3aGljaCBnZW5lcmF0ZXMgc2luZS1saWtlIHRvbmVzIGJ5IGxvdy1wYXNzIGZpbHRlcmluZyB0aGUgc3F1YXJlIHdhdmUgb3V0cHV0LgorCitNb2RlIDQ6IFNvZnR3YXJlIFN0cm9iZS4gIEFmdGVyIHByb2dyYW1taW5nIHRoaXMgbW9kZSBhbmQgbG9hZGluZyB0aGUgY291bnRlciwKKyB0aGUgb3V0cHV0IHJlbWFpbnMgaGlnaCB1bnRpbCB0aGUgY291bnRlciByZWFjaGVzIHplcm8uICBUaGVuIHRoZSBvdXRwdXQKKyBnb2VzIGxvdyBmb3IgMSBjbG9jayBjeWNsZSBhbmQgcmV0dXJucyBoaWdoLiAgVGhlIGNvdW50ZXIgaXMgbm90IHJlbG9hZGVkLgorIENvdW50aW5nIG9ubHkgb2NjdXJzIHdoZW4gZ2F0ZSBpcyBoaWdoLgorCitNb2RlIDU6IEhhcmR3YXJlIFN0cm9iZS4gIEFmdGVyIHByb2dyYW1taW5nIGFuZCBsb2FkaW5nIHRoZSBjb3VudGVyLCB0aGUKKyBvdXRwdXQgcmVtYWlucyBoaWdoLiAgV2hlbiB0aGUgZ2F0ZSBpcyByYWlzZWQsIGEgY291bnRkb3duIGlzIGluaXRpYXRlZAorICh3aGljaCBkb2VzIG5vdCBzdG9wIGlmIHRoZSBnYXRlIGlzIGxvd2VyZWQpLiAgV2hlbiB0aGUgY291bnRlciByZWFjaGVzIHplcm8sCisgdGhlIG91dHB1dCBnb2VzIGxvdyBmb3IgMSBjbG9jayBjeWNsZSBhbmQgdGhlbiByZXR1cm5zIGhpZ2guICBUaGUgY291bnRlciBpcworIG5vdCByZWxvYWRlZC4KKworSW4gYWRkaXRpb24gdG8gbm9ybWFsIGJpbmFyeSBjb3VudGluZywgdGhlIFBJVCBzdXBwb3J0cyBCQ0QgY291bnRpbmcuICBUaGUKK2NvbW1hbmQgcG9ydCwgMHg0MyBpcyB1c2VkIHRvIHNldCB0aGUgY291bnRlciBhbmQgbW9kZSBmb3IgZWFjaCBvZiB0aGUgdGhyZWUKK3RpbWVycy4KKworUElUIGNvbW1hbmRzLCBpc3N1ZWQgdG8gcG9ydCAweDQzLCB1c2luZyB0aGUgZm9sbG93aW5nIGJpdCBlbmNvZGluZzoKKworQml0IDctNDogQ29tbWFuZCAoU2VlIHRhYmxlIGJlbG93KQorQml0IDMtMTogTW9kZSAoMDAwID0gTW9kZSAwLCAxMDEgPSBNb2RlIDUsIDExWCA9IHVuZGVmaW5lZCkKK0JpdCAwICA6IEJpbmFyeSAoMCkgLyBCQ0QgKDEpCisKK0NvbW1hbmQgdGFibGU6CisKKzAwMDAgLSBMYXRjaCBUaW1lciAwIGNvdW50IGZvciBwb3J0IDB4NDAKKwlzYW1wbGUgYW5kIGhvbGQgdGhlIGNvdW50IHRvIGJlIHJlYWQgaW4gcG9ydCAweDQwOworCWFkZGl0aW9uYWwgY29tbWFuZHMgaWdub3JlZCB1bnRpbCBjb3VudGVyIGlzIHJlYWQ7CisJbW9kZSBiaXRzIGlnbm9yZWQuCisKKzAwMDEgLSBTZXQgVGltZXIgMCBMU0IgbW9kZSBmb3IgcG9ydCAweDQwCisJc2V0IHRpbWVyIHRvIHJlYWQgTFNCIG9ubHkgYW5kIGZvcmNlIE1TQiB0byB6ZXJvOworCW1vZGUgYml0cyBzZXQgdGltZXIgbW9kZQorCiswMDEwIC0gU2V0IFRpbWVyIDAgTVNCIG1vZGUgZm9yIHBvcnQgMHg0MAorCXNldCB0aW1lciB0byByZWFkIE1TQiBvbmx5IGFuZCBmb3JjZSBMU0IgdG8gemVybzsKKwltb2RlIGJpdHMgc2V0IHRpbWVyIG1vZGUKKworMDAxMSAtIFNldCBUaW1lciAwIDE2LWJpdCBtb2RlIGZvciBwb3J0IDB4NDAKKwlzZXQgdGltZXIgdG8gcmVhZCAvIHdyaXRlIExTQiBmaXJzdCwgdGhlbiBNU0I7CisJbW9kZSBiaXRzIHNldCB0aW1lciBtb2RlCisKKzAxMDAgLSBMYXRjaCBUaW1lciAxIGNvdW50IGZvciBwb3J0IDB4NDEgLSBhcyBkZXNjcmliZWQgYWJvdmUKKzAxMDEgLSBTZXQgVGltZXIgMSBMU0IgbW9kZSBmb3IgcG9ydCAweDQxIC0gYXMgZGVzY3JpYmVkIGFib3ZlCiswMTEwIC0gU2V0IFRpbWVyIDEgTVNCIG1vZGUgZm9yIHBvcnQgMHg0MSAtIGFzIGRlc2NyaWJlZCBhYm92ZQorMDExMSAtIFNldCBUaW1lciAxIDE2LWJpdCBtb2RlIGZvciBwb3J0IDB4NDEgLSBhcyBkZXNjcmliZWQgYWJvdmUKKworMTAwMCAtIExhdGNoIFRpbWVyIDIgY291bnQgZm9yIHBvcnQgMHg0MiAtIGFzIGRlc2NyaWJlZCBhYm92ZQorMTAwMSAtIFNldCBUaW1lciAyIExTQiBtb2RlIGZvciBwb3J0IDB4NDIgLSBhcyBkZXNjcmliZWQgYWJvdmUKKzEwMTAgLSBTZXQgVGltZXIgMiBNU0IgbW9kZSBmb3IgcG9ydCAweDQyIC0gYXMgZGVzY3JpYmVkIGFib3ZlCisxMDExIC0gU2V0IFRpbWVyIDIgMTYtYml0IG1vZGUgZm9yIHBvcnQgMHg0MiBhcyBkZXNjcmliZWQgYWJvdmUKKworMTEwMSAtIEdlbmVyYWwgY291bnRlciBsYXRjaAorCUxhdGNoIGNvbWJpbmF0aW9uIG9mIGNvdW50ZXJzIGludG8gY29ycmVzcG9uZGluZyBwb3J0cworCUJpdCAzID0gQ291bnRlciAyCisJQml0IDIgPSBDb3VudGVyIDEKKwlCaXQgMSA9IENvdW50ZXIgMAorCUJpdCAwID0gVW51c2VkCisKKzExMTAgLSBMYXRjaCB0aW1lciBzdGF0dXMKKwlMYXRjaCBjb21iaW5hdGlvbiBvZiBjb3VudGVyIG1vZGUgaW50byBjb3JyZXNwb25kaW5nIHBvcnRzCisJQml0IDMgPSBDb3VudGVyIDIKKwlCaXQgMiA9IENvdW50ZXIgMQorCUJpdCAxID0gQ291bnRlciAwCisKKwlUaGUgb3V0cHV0IG9mIHBvcnRzIDB4NDAtMHg0MiBmb2xsb3dpbmcgdGhpcyBjb21tYW5kIHdpbGwgYmU6CisKKwlCaXQgNyA9IE91dHB1dCBwaW4KKwlCaXQgNiA9IENvdW50IGxvYWRlZCAoMCBpZiB0aW1lciBoYXMgZXhwaXJlZCkKKwlCaXQgNS00ID0gUmVhZCAvIFdyaXRlIG1vZGUKKwkgICAgMDEgPSBNU0Igb25seQorCSAgICAxMCA9IExTQiBvbmx5CisJICAgIDExID0gTFNCIC8gTVNCICgxNi1iaXQpCisJQml0IDMtMSA9IE1vZGUKKwlCaXQgMCA9IEJpbmFyeSAoMCkgLyBCQ0QgbW9kZSAoMSkKKworMi4yKSBSVEMKKworVGhlIHNlY29uZCBkZXZpY2Ugd2hpY2ggd2FzIGF2YWlsYWJsZSBpbiB0aGUgb3JpZ2luYWwgUEMgd2FzIHRoZSBNQzE0NjgxOCByZWFsCit0aW1lIGNsb2NrLiAgVGhlIG9yaWdpbmFsIGRldmljZSBpcyBub3cgb2Jzb2xldGUsIGFuZCB1c3VhbGx5IGVtdWxhdGVkIGJ5IHRoZQorc3lzdGVtIGNoaXBzZXQsIHNvbWV0aW1lcyBieSBhbiBIUEVUIGFuZCBzb21lIGZyYW5rZW5zdGVpbiBJUlEgcm91dGluZy4KKworVGhlIFJUQyBpcyBhY2Nlc3NlZCB0aHJvdWdoIENNT1MgdmFyaWFibGVzLCB3aGljaCB1c2VzIGFuIGluZGV4IHJlZ2lzdGVyIHRvCitjb250cm9sIHdoaWNoIGJ5dGVzIGFyZSByZWFkLiAgU2luY2UgdGhlcmUgaXMgb25seSBvbmUgaW5kZXggcmVnaXN0ZXIsIHJlYWQKK29mIHRoZSBDTU9TIGFuZCByZWFkIG9mIHRoZSBSVEMgcmVxdWlyZSBsb2NrIHByb3RlY3Rpb24gKGluIGFkZGl0aW9uLCBpdCBpcworZGFuZ2Vyb3VzIHRvIGFsbG93IHVzZXJzcGFjZSB1dGlsaXRpZXMgc3VjaCBhcyBod2Nsb2NrIHRvIGhhdmUgZGlyZWN0IFJUQworYWNjZXNzLCBhcyB0aGV5IGNvdWxkIGNvcnJ1cHQga2VybmVsIHJlYWRzIGFuZCB3cml0ZXMgb2YgQ01PUyBtZW1vcnkpLgorCitUaGUgUlRDIGdlbmVyYXRlcyBhbiBpbnRlcnJ1cHQgd2hpY2ggaXMgdXN1YWxseSByb3V0ZWQgdG8gSVJRIDguICBUaGUgaW50ZXJydXB0CitjYW4gZnVuY3Rpb24gYXMgYSBwZXJpb2RpYyB0aW1lciwgYW4gYWRkaXRpb25hbCBvbmNlIGEgZGF5IGFsYXJtLCBhbmQgY2FuIGlzc3VlCitpbnRlcnJ1cHRzIGFmdGVyIGFuIHVwZGF0ZSBvZiB0aGUgQ01PUyByZWdpc3RlcnMgYnkgdGhlIE1DMTQ2ODE4IGlzIGNvbXBsZXRlLgorVGhlIHR5cGUgb2YgaW50ZXJydXB0IGlzIHNpZ25hbGxlZCBpbiB0aGUgUlRDIHN0YXR1cyByZWdpc3RlcnMuCisKK1RoZSBSVEMgd2lsbCB1cGRhdGUgdGhlIGN1cnJlbnQgdGltZSBmaWVsZHMgYnkgYmF0dGVyeSBwb3dlciBldmVuIHdoaWxlIHRoZQorc3lzdGVtIGlzIG9mZi4gIFRoZSBjdXJyZW50IHRpbWUgZmllbGRzIHNob3VsZCBub3QgYmUgcmVhZCB3aGlsZSBhbiB1cGRhdGUgaXMKK2luIHByb2dyZXNzLCBhcyBpbmRpY2F0ZWQgaW4gdGhlIHN0YXR1cyByZWdpc3Rlci4KKworVGhlIGNsb2NrIHVzZXMgYSAzMi43NjhrSHogY3J5c3RhbCwgc28gYml0cyA2LTQgb2YgcmVnaXN0ZXIgQSBzaG91bGQgYmUKK3Byb2dyYW1tZWQgdG8gYSAzMmtIeiBkaXZpZGVyIGlmIHRoZSBSVEMgaXMgdG8gY291bnQgc2Vjb25kcy4KKworVGhpcyBpcyB0aGUgUkFNIG1hcCBvcmlnaW5hbGx5IHVzZWQgZm9yIHRoZSBSVEMvQ01PUzoKKworTG9jYXRpb24gICAgU2l6ZSAgICBEZXNjcmlwdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiswMGggICAgICAgICBieXRlICAgIEN1cnJlbnQgc2Vjb25kIChCQ0QpCiswMWggICAgICAgICBieXRlICAgIFNlY29uZHMgYWxhcm0gKEJDRCkKKzAyaCAgICAgICAgIGJ5dGUgICAgQ3VycmVudCBtaW51dGUgKEJDRCkKKzAzaCAgICAgICAgIGJ5dGUgICAgTWludXRlcyBhbGFybSAoQkNEKQorMDRoICAgICAgICAgYnl0ZSAgICBDdXJyZW50IGhvdXIgKEJDRCkKKzA1aCAgICAgICAgIGJ5dGUgICAgSG91cnMgYWxhcm0gKEJDRCkKKzA2aCAgICAgICAgIGJ5dGUgICAgQ3VycmVudCBkYXkgb2Ygd2VlayAoQkNEKQorMDdoICAgICAgICAgYnl0ZSAgICBDdXJyZW50IGRheSBvZiBtb250aCAoQkNEKQorMDhoICAgICAgICAgYnl0ZSAgICBDdXJyZW50IG1vbnRoIChCQ0QpCiswOWggICAgICAgICBieXRlICAgIEN1cnJlbnQgeWVhciAoQkNEKQorMEFoICAgICAgICAgYnl0ZSAgICBSZWdpc3RlciBBCisgICAgICAgICAgICAgICAgICAgICAgIGJpdCA3ICAgPSBVcGRhdGUgaW4gcHJvZ3Jlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgYml0IDYtNCA9IERpdmlkZXIgZm9yIGNsb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwID0gNC4xOTQgTUh6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAxID0gMS4wNDkgTUh6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDEwID0gMzIga0h6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTBYID0gdGVzdCBtb2RlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMCA9IHJlc2V0IC8gZGlzYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMSA9IHJlc2V0IC8gZGlzYWJsZQorICAgICAgICAgICAgICAgICAgICAgICBiaXQgMy0wID0gUmF0ZSBzZWxlY3Rpb24gZm9yIHBlcmlvZGljIGludGVycnVwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAwMCA9IHBlcmlvZGljIHRpbWVyIGRpc2FibGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAxID0gMy45MDYyNSB1UworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAxMCA9IDcuODEyNSB1UworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAxMSA9IC4xMjIwNzAgbVMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAgPSAuMjQ0MTQxIG1TCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTAxID0gMTI1IG1TCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTEwID0gMjUwIG1TCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExID0gNTAwIG1TCiswQmggICAgICAgICBieXRlICAgIFJlZ2lzdGVyIEIKKyAgICAgICAgICAgICAgICAgICAgICAgYml0IDcgICA9IFJ1biAoMCkgLyBIYWx0ICgxKQorICAgICAgICAgICAgICAgICAgICAgICBiaXQgNiAgID0gUGVyaW9kaWMgaW50ZXJydXB0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICBiaXQgNSAgID0gQWxhcm0gaW50ZXJydXB0IGVuYWJsZQorICAgICAgICAgICAgICAgICAgICAgICBiaXQgNCAgID0gVXBkYXRlLWVuZGVkIGludGVycnVwdCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgYml0IDMgICA9IFNxdWFyZSB3YXZlIGludGVycnVwdCBlbmFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgYml0IDIgICA9IEJDRCBjYWxlbmRhciAoMCkgLyBCaW5hcnkgKDEpCisgICAgICAgICAgICAgICAgICAgICAgIGJpdCAxICAgPSAxMi1ob3VyIG1vZGUgKDApIC8gMjQtaG91ciBtb2RlICgxKQorICAgICAgICAgICAgICAgICAgICAgICBiaXQgMCAgID0gMCAoRFNUIG9mZikgLyAxIChEU1QgZW5hYmxlZCkKK09DaCAgICAgICAgIGJ5dGUgICAgUmVnaXN0ZXIgQyAocmVhZCBvbmx5KQorICAgICAgICAgICAgICAgICAgICAgICBiaXQgNyAgID0gaW50ZXJydXB0IHJlcXVlc3QgZmxhZyAoSVJRRikKKyAgICAgICAgICAgICAgICAgICAgICAgYml0IDYgICA9IHBlcmlvZGljIGludGVycnVwdCBmbGFnIChQRikKKyAgICAgICAgICAgICAgICAgICAgICAgYml0IDUgICA9IGFsYXJtIGludGVycnVwdCBmbGFnIChBRikKKyAgICAgICAgICAgICAgICAgICAgICAgYml0IDQgICA9IHVwZGF0ZSBpbnRlcnJ1cHQgZmxhZyAoVUYpCisgICAgICAgICAgICAgICAgICAgICAgIGJpdCAzLTAgPSByZXNlcnZlZAorT0RoICAgICAgICAgYnl0ZSAgICBSZWdpc3RlciBEIChyZWFkIG9ubHkpCisgICAgICAgICAgICAgICAgICAgICAgIGJpdCA3ICAgPSBSVEMgaGFzIHBvd2VyCisgICAgICAgICAgICAgICAgICAgICAgIGJpdCA2LTAgPSByZXNlcnZlZAorMzJoICAgICAgICAgYnl0ZSAgICBDdXJyZW50IGNlbnR1cnkgQkNEICgqKQorICAoKikgbG9jYXRpb24gdmVuZG9yIHNwZWNpZmljIGFuZCBub3cgZGV0ZXJtaW5lZCBmcm9tIEFDUEkgZ2xvYmFsIHRhYmxlcworCisyLjMpIEFQSUMKKworT24gUGVudGl1bSBhbmQgbGF0ZXIgcHJvY2Vzc29ycywgYW4gb24tYm9hcmQgdGltZXIgaXMgYXZhaWxhYmxlIHRvIGVhY2ggQ1BVCithcyBwYXJ0IG9mIHRoZSBBZHZhbmNlZCBQcm9ncmFtbWFibGUgSW50ZXJydXB0IENvbnRyb2xsZXIuICBUaGUgQVBJQyBpcworYWNjZXNzZWQgdGhyb3VnaCBtZW1vcnktbWFwcGVkIHJlZ2lzdGVycyBhbmQgcHJvdmlkZXMgaW50ZXJydXB0IHNlcnZpY2UgdG8gZWFjaAorQ1BVLCB1c2VkIGZvciBJUElzIGFuZCBsb2NhbCB0aW1lciBpbnRlcnJ1cHRzLgorCitBbHRob3VnaCBpbiB0aGVvcnkgdGhlIEFQSUMgaXMgYSBzYWZlIGFuZCBzdGFibGUgc291cmNlIGZvciBsb2NhbCBpbnRlcnJ1cHRzLAoraW4gcHJhY3RpY2UsIG1hbnkgYnVncyBhbmQgZ2xpdGNoZXMgaGF2ZSBvY2N1cnJlZCBkdWUgdG8gdGhlIHNwZWNpYWwgbmF0dXJlIG9mCit0aGUgQVBJQyBDUFUtbG9jYWwgbWVtb3J5LW1hcHBlZCBoYXJkd2FyZS4gIEJld2FyZSB0aGF0IENQVSBlcnJhdGEgbWF5IGFmZmVjdAordGhlIHVzZSBvZiB0aGUgQVBJQyBhbmQgdGhhdCB3b3JrYXJvdW5kcyBtYXkgYmUgcmVxdWlyZWQuICBJbiBhZGRpdGlvbiwgc29tZSBvZgordGhlc2Ugd29ya2Fyb3VuZHMgcG9zZSB1bmlxdWUgY29uc3RyYWludHMgZm9yIHZpcnR1YWxpemF0aW9uIC0gcmVxdWlyaW5nIGVpdGhlcgorZXh0cmEgb3ZlcmhlYWQgaW5jdXJyZWQgZnJvbSBleHRyYSByZWFkcyBvZiBtZW1vcnktbWFwcGVkIEkvTyBvciBhZGRpdGlvbmFsCitmdW5jdGlvbmFsaXR5IHRoYXQgbWF5IGJlIG1vcmUgY29tcHV0YXRpb25hbGx5IGV4cGVuc2l2ZSB0byBpbXBsZW1lbnQuCisKK1NpbmNlIHRoZSBBUElDIGlzIGRvY3VtZW50ZWQgcXVpdGUgd2VsbCBpbiB0aGUgSW50ZWwgYW5kIEFNRCBtYW51YWxzLCB3ZSB3aWxsCithdm9pZCByZXBldGl0aW9uIG9mIHRoZSBkZXRhaWwgaGVyZS4gIEl0IHNob3VsZCBiZSBwb2ludGVkIG91dCB0aGF0IHRoZSBBUElDCit0aW1lciBpcyBwcm9ncmFtbWVkIHRocm91Z2ggdGhlIExWVCAobG9jYWwgdmVjdG9yIHRpbWVyKSByZWdpc3RlciwgaXMgY2FwYWJsZQorb2Ygb25lLXNob3Qgb3IgcGVyaW9kaWMgb3BlcmF0aW9uLCBhbmQgaXMgYmFzZWQgb24gdGhlIGJ1cyBjbG9jayBkaXZpZGVkIGRvd24KK2J5IHRoZSBwcm9ncmFtbWFibGUgZGl2aWRlciByZWdpc3Rlci4KKworMi40KSBIUEVUCisKK0hQRVQgaXMgcXVpdGUgY29tcGxleCwgYW5kIHdhcyBvcmlnaW5hbGx5IGludGVuZGVkIHRvIHJlcGxhY2UgdGhlIFBJVCAvIFJUQworc3VwcG9ydCBvZiB0aGUgWDg2IFBDLiAgSXQgcmVtYWlucyB0byBiZSBzZWVuIHdoZXRoZXIgdGhhdCB3aWxsIGJlIHRoZSBjYXNlLCBhcwordGhlIGRlIGZhY3RvIHN0YW5kYXJkIG9mIFBDIGhhcmR3YXJlIGlzIHRvIGVtdWxhdGUgdGhlc2Ugb2xkZXIgZGV2aWNlcy4gIFNvbWUKK3N5c3RlbXMgZGVzaWduYXRlZCBhcyBsZWdhY3kgZnJlZSBtYXkgc3VwcG9ydCBvbmx5IHRoZSBIUEVUIGFzIGEgaGFyZHdhcmUgdGltZXIKK2RldmljZS4KKworVGhlIEhQRVQgc3BlYyBpcyByYXRoZXIgbG9vc2UgYW5kIHZhZ3VlLCByZXF1aXJpbmcgYXQgbGVhc3QgMyBoYXJkd2FyZSB0aW1lcnMsCitidXQgYWxsb3dpbmcgaW1wbGVtZW50YXRpb24gZnJlZWRvbSB0byBzdXBwb3J0IG1hbnkgbW9yZS4gIEl0IGFsc28gaW1wb3NlcyBubworZml4ZWQgcmF0ZSBvbiB0aGUgdGltZXIgZnJlcXVlbmN5LCBidXQgZG9lcyBpbXBvc2Ugc29tZSBleHRyZW1hbCB2YWx1ZXMgb24KK2ZyZXF1ZW5jeSwgZXJyb3IgYW5kIHNsZXcuCisKK0luIGdlbmVyYWwsIHRoZSBIUEVUIGlzIHJlY29tbWVuZGVkIGFzIGEgaGlnaCBwcmVjaXNpb24gKGNvbXBhcmVkIHRvIFBJVCAvUlRDKQordGltZSBzb3VyY2Ugd2hpY2ggaXMgaW5kZXBlbmRlbnQgb2YgbG9jYWwgdmFyaWF0aW9uIChhcyB0aGVyZSBpcyBvbmx5IG9uZSBIUEVUCitpbiBhbnkgZ2l2ZW4gc3lzdGVtKS4gIFRoZSBIUEVUIGlzIGFsc28gbWVtb3J5LW1hcHBlZCwgYW5kIGl0cyBwcmVzZW5jZSBpcworaW5kaWNhdGVkIHRocm91Z2ggQUNQSSB0YWJsZXMgYnkgdGhlIEJJT1MuCisKK0RldGFpbGVkIHNwZWNpZmljYXRpb24gb2YgdGhlIEhQRVQgaXMgYmV5b25kIHRoZSBjdXJyZW50IHNjb3BlIG9mIHRoaXMKK2RvY3VtZW50LCBhcyBpdCBpcyBhbHNvIHZlcnkgd2VsbCBkb2N1bWVudGVkIGVsc2V3aGVyZS4KKworMi41KSBPZmZib2FyZCBUaW1lcnMKKworU2V2ZXJhbCBjYXJkcywgYm90aCBwcm9wcmlldGFyeSAod2F0Y2hkb2cgYm9hcmRzKSBhbmQgY29tbW9ucGxhY2UgKGUxMDAwKSBoYXZlCit0aW1pbmcgY2hpcHMgYnVpbHQgaW50byB0aGUgY2FyZHMgd2hpY2ggbWF5IGhhdmUgcmVnaXN0ZXJzIHdoaWNoIGFyZSBhY2Nlc3NpYmxlCit0byBrZXJuZWwgb3IgdXNlciBkcml2ZXJzLiAgVG8gdGhlIGF1dGhvcidzIGtub3dsZWRnZSwgdXNpbmcgdGhlc2UgdG8gZ2VuZXJhdGUKK2EgY2xvY2tzb3VyY2UgZm9yIGEgTGludXggb3Igb3RoZXIga2VybmVsIGhhcyBub3QgeWV0IGJlZW4gYXR0ZW1wdGVkIGFuZCBpcyBpbgorZ2VuZXJhbCBmcm93bmVkIHVwb24gYXMgbm90IHBsYXlpbmcgYnkgdGhlIGFncmVlZCBydWxlcyBvZiB0aGUgZ2FtZS4gIFN1Y2ggYQordGltZXIgZGV2aWNlIHdvdWxkIHJlcXVpcmUgYWRkaXRpb25hbCBzdXBwb3J0IHRvIGJlIHZpcnR1YWxpemVkIHByb3Blcmx5IGFuZCBpcworbm90IGNvbnNpZGVyZWQgaW1wb3J0YW50IGF0IHRoaXMgdGltZSBhcyBubyBrbm93biBvcGVyYXRpbmcgc3lzdGVtIGRvZXMgdGhpcy4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCiszKSBUU0MgSGFyZHdhcmUKKworVGhlIFRTQyBvciB0aW1lIHN0YW1wIGNvdW50ZXIgaXMgcmVsYXRpdmVseSBzaW1wbGUgaW4gdGhlb3J5OyBpdCBjb3VudHMKK2luc3RydWN0aW9uIGN5Y2xlcyBpc3N1ZWQgYnkgdGhlIHByb2Nlc3Nvciwgd2hpY2ggY2FuIGJlIHVzZWQgYXMgYSBtZWFzdXJlIG9mCit0aW1lLiAgSW4gcHJhY3RpY2UsIGR1ZSB0byBhIG51bWJlciBvZiBwcm9ibGVtcywgaXQgaXMgdGhlIG1vc3QgY29tcGxpY2F0ZWQKK3RpbWVrZWVwaW5nIGRldmljZSB0byB1c2UuCisKK1RoZSBUU0MgaXMgcmVwcmVzZW50ZWQgaW50ZXJuYWxseSBhcyBhIDY0LWJpdCBNU1Igd2hpY2ggY2FuIGJlIHJlYWQgd2l0aCB0aGUKK1JETVNSLCBSRFRTQywgb3IgUkRUU0NQICh3aGVuIGF2YWlsYWJsZSkgaW5zdHJ1Y3Rpb25zLiAgSW4gdGhlIHBhc3QsIGhhcmR3YXJlCitsaW1pdGF0aW9ucyBtYWRlIGl0IHBvc3NpYmxlIHRvIHdyaXRlIHRoZSBUU0MsIGJ1dCBnZW5lcmFsbHkgb24gb2xkIGhhcmR3YXJlIGl0Cit3YXMgb25seSBwb3NzaWJsZSB0byB3cml0ZSB0aGUgbG93IDMyLWJpdHMgb2YgdGhlIDY0LWJpdCBjb3VudGVyLCBhbmQgdGhlIHVwcGVyCiszMi1iaXRzIG9mIHRoZSBjb3VudGVyIHdlcmUgY2xlYXJlZC4gIE5vdywgaG93ZXZlciwgb24gSW50ZWwgcHJvY2Vzc29ycyBmYW1pbHkKKzBGaCwgZm9yIG1vZGVscyAzLCA0IGFuZCA2LCBhbmQgZmFtaWx5IDA2aCwgbW9kZWxzIGUgYW5kIGYsIHRoaXMgcmVzdHJpY3Rpb24KK2hhcyBiZWVuIGxpZnRlZCBhbmQgYWxsIDY0LWJpdHMgYXJlIHdyaXRhYmxlLiAgT24gQU1EIHN5c3RlbXMsIHRoZSBhYmlsaXR5IHRvCit3cml0ZSB0aGUgVFNDIE1TUiBpcyBub3QgYW4gYXJjaGl0ZWN0dXJhbCBndWFyYW50ZWUuCisKK1RoZSBUU0MgaXMgYWNjZXNzaWJsZSBmcm9tIENQTC0wIGFuZCBjb25kaXRpb25hbGx5LCBmb3IgQ1BMID4gMCBzb2Z0d2FyZSBieQorbWVhbnMgb2YgdGhlIENSNC5UU0QgYml0LCB3aGljaCB3aGVuIGVuYWJsZWQsIGRpc2FibGVzIENQTCA+IDAgVFNDIGFjY2Vzcy4KKworU29tZSB2ZW5kb3JzIGhhdmUgaW1wbGVtZW50ZWQgYW4gYWRkaXRpb25hbCBpbnN0cnVjdGlvbiwgUkRUU0NQLCB3aGljaCByZXR1cm5zCithdG9taWNhbGx5IG5vdCBqdXN0IHRoZSBUU0MsIGJ1dCBhbiBpbmRpY2F0b3Igd2hpY2ggY29ycmVzcG9uZHMgdG8gdGhlCitwcm9jZXNzb3IgbnVtYmVyLiAgVGhpcyBjYW4gYmUgdXNlZCB0byBpbmRleCBpbnRvIGFuIGFycmF5IG9mIFRTQyB2YXJpYWJsZXMgdG8KK2RldGVybWluZSBvZmZzZXQgaW5mb3JtYXRpb24gaW4gU01QIHN5c3RlbXMgd2hlcmUgVFNDcyBhcmUgbm90IHN5bmNocm9uaXplZC4KK1RoZSBwcmVzZW5jZSBvZiB0aGlzIGluc3RydWN0aW9uIG11c3QgYmUgZGV0ZXJtaW5lZCBieSBjb25zdWx0aW5nIENQVUlEIGZlYXR1cmUKK2JpdHMuCisKK0JvdGggVk1YIGFuZCBTVk0gcHJvdmlkZSBleHRlbnNpb24gZmllbGRzIGluIHRoZSB2aXJ0dWFsaXphdGlvbiBoYXJkd2FyZSB3aGljaAorYWxsb3dzIHRoZSBndWVzdCB2aXNpYmxlIFRTQyB0byBiZSBvZmZzZXQgYnkgYSBjb25zdGFudC4gIE5ld2VyIGltcGxlbWVudGF0aW9ucworcHJvbWlzZSB0byBhbGxvdyB0aGUgVFNDIHRvIGFkZGl0aW9uYWxseSBiZSBzY2FsZWQsIGJ1dCB0aGlzIGhhcmR3YXJlIGlzIG5vdAoreWV0IHdpZGVseSBhdmFpbGFibGUuCisKKzMuMSkgVFNDIHN5bmNocm9uaXphdGlvbgorCitUaGUgVFNDIGlzIGEgQ1BVLWxvY2FsIGNsb2NrIGluIG1vc3QgaW1wbGVtZW50YXRpb25zLiAgVGhpcyBtZWFucywgb24gU01QCitwbGF0Zm9ybXMsIHRoZSBUU0NzIG9mIGRpZmZlcmVudCBDUFVzIG1heSBzdGFydCBhdCBkaWZmZXJlbnQgdGltZXMgZGVwZW5kaW5nCitvbiB3aGVuIHRoZSBDUFVzIGFyZSBwb3dlcmVkIG9uLiAgR2VuZXJhbGx5LCBDUFVzIG9uIHRoZSBzYW1lIGRpZSB3aWxsIHNoYXJlCit0aGUgc2FtZSBjbG9jaywgaG93ZXZlciwgdGhpcyBpcyBub3QgYWx3YXlzIHRoZSBjYXNlLgorCitUaGUgQklPUyBtYXkgYXR0ZW1wdCB0byByZXN5bmNocm9uaXplIHRoZSBUU0NzIGR1cmluZyB0aGUgcG93ZXJvbiBwcm9jZXNzIGFuZAordGhlIG9wZXJhdGluZyBzeXN0ZW0gb3Igb3RoZXIgc3lzdGVtIHNvZnR3YXJlIG1heSBhdHRlbXB0IHRvIGRvIHRoaXMgYXMgd2VsbC4KK1NldmVyYWwgaGFyZHdhcmUgbGltaXRhdGlvbnMgbWFrZSB0aGUgcHJvYmxlbSB3b3JzZSAtIGlmIGl0IGlzIG5vdCBwb3NzaWJsZSB0bword3JpdGUgdGhlIGZ1bGwgNjQtYml0cyBvZiB0aGUgVFNDLCBpdCBtYXkgYmUgaW1wb3NzaWJsZSB0byBtYXRjaCB0aGUgVFNDIGluCituZXdseSBhcnJpdmluZyBDUFVzIHRvIHRoYXQgb2YgdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSwgcmVzdWx0aW5nIGluCit1bnN5bmNocm9uaXplZCBUU0NzLiAgVGhpcyBtYXkgYmUgZG9uZSBieSBCSU9TIG9yIHN5c3RlbSBzb2Z0d2FyZSwgYnV0IGluCitwcmFjdGljZSwgZ2V0dGluZyBhIHBlcmZlY3RseSBzeW5jaHJvbml6ZWQgVFNDIHdpbGwgbm90IGJlIHBvc3NpYmxlIHVubGVzcyBhbGwKK3ZhbHVlcyBhcmUgcmVhZCBmcm9tIHRoZSBzYW1lIGNsb2NrLCB3aGljaCBnZW5lcmFsbHkgb25seSBpcyBwb3NzaWJsZSBvbiBzaW5nbGUKK3NvY2tldCBzeXN0ZW1zIG9yIHRob3NlIHdpdGggc3BlY2lhbCBoYXJkd2FyZSBzdXBwb3J0LgorCiszLjIpIFRTQyBhbmQgQ1BVIGhvdHBsdWcKKworQXMgdG91Y2hlZCBvbiBhbHJlYWR5LCBDUFVzIHdoaWNoIGFycml2ZSBsYXRlciB0aGFuIHRoZSBib290IHRpbWUgb2YgdGhlIHN5c3RlbQorbWF5IG5vdCBoYXZlIGEgVFNDIHZhbHVlIHRoYXQgaXMgc3luY2hyb25pemVkIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4KK0VpdGhlciBzeXN0ZW0gc29mdHdhcmUsIEJJT1MsIG9yIFNNTSBjb2RlIG1heSBhY3R1YWxseSB0cnkgdG8gZXN0YWJsaXNoIHRoZSBUU0MKK3RvIGEgdmFsdWUgbWF0Y2hpbmcgdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSwgYnV0IGEgcGVyZmVjdCBtYXRjaCBpcyB1c3VhbGx5IG5vdAorYSBndWFyYW50ZWUuICBUaGlzIGNhbiBoYXZlIHRoZSBlZmZlY3Qgb2YgYnJpbmdpbmcgYSBzeXN0ZW0gZnJvbSBhIHN0YXRlIHdoZXJlCitUU0MgaXMgc3luY2hyb25pemVkIGJhY2sgdG8gYSBzdGF0ZSB3aGVyZSBUU0Mgc3luY2hyb25pemF0aW9uIGZsYXdzLCBob3dldmVyCitzbWFsbCwgbWF5IGJlIGV4cG9zZWQgdG8gdGhlIE9TIGFuZCBhbnkgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnQuCisKKzMuMykgVFNDIGFuZCBtdWx0aS1zb2NrZXQgLyBOVU1BCisKK011bHRpLXNvY2tldCBzeXN0ZW1zLCBlc3BlY2lhbGx5IGxhcmdlIG11bHRpLXNvY2tldCBzeXN0ZW1zIGFyZSBsaWtlbHkgdG8gaGF2ZQoraW5kaXZpZHVhbCBjbG9ja3NvdXJjZXMgcmF0aGVyIHRoYW4gYSBzaW5nbGUsIHVuaXZlcnNhbGx5IGRpc3RyaWJ1dGVkIGNsb2NrLgorU2luY2UgdGhlc2UgY2xvY2tzIGFyZSBkcml2ZW4gYnkgZGlmZmVyZW50IGNyeXN0YWxzLCB0aGV5IHdpbGwgbm90IGhhdmUKK3BlcmZlY3RseSBtYXRjaGVkIGZyZXF1ZW5jeSwgYW5kIHRlbXBlcmF0dXJlIGFuZCBlbGVjdHJpY2FsIHZhcmlhdGlvbnMgd2lsbAorY2F1c2UgdGhlIENQVSBjbG9ja3MsIGFuZCB0aHVzIHRoZSBUU0NzIHRvIGRyaWZ0IG92ZXIgdGltZS4gIERlcGVuZGluZyBvbiB0aGUKK2V4YWN0IGNsb2NrIGFuZCBidXMgZGVzaWduLCB0aGUgZHJpZnQgbWF5IG9yIG1heSBub3QgYmUgZml4ZWQgaW4gYWJzb2x1dGUKK2Vycm9yLCBhbmQgbWF5IGFjY3VtdWxhdGUgb3ZlciB0aW1lLgorCitJbiBhZGRpdGlvbiwgdmVyeSBsYXJnZSBzeXN0ZW1zIG1heSBkZWxpYmVyYXRlbHkgc2xldyB0aGUgY2xvY2tzIG9mIGluZGl2aWR1YWwKK2NvcmVzLiAgVGhpcyB0ZWNobmlxdWUsIGtub3duIGFzIHNwcmVhZC1zcGVjdHJ1bSBjbG9ja2luZywgcmVkdWNlcyBFTUkgYXQgdGhlCitjbG9jayBmcmVxdWVuY3kgYW5kIGhhcm1vbmljcyBvZiBpdCwgd2hpY2ggbWF5IGJlIHJlcXVpcmVkIHRvIHBhc3MgRkNDCitzdGFuZGFyZHMgZm9yIHRlbGVjb21tdW5pY2F0aW9ucyBhbmQgY29tcHV0ZXIgZXF1aXBtZW50LgorCitJdCBpcyByZWNvbW1lbmRlZCBub3QgdG8gdHJ1c3QgdGhlIFRTQ3MgdG8gcmVtYWluIHN5bmNocm9uaXplZCBvbiBOVU1BIG9yCittdWx0aXBsZSBzb2NrZXQgc3lzdGVtcyBmb3IgdGhlc2UgcmVhc29ucy4KKworMy40KSBUU0MgYW5kIEMtc3RhdGVzCisKK0Mtc3RhdGVzLCBvciBpZGxpbmcgc3RhdGVzIG9mIHRoZSBwcm9jZXNzb3IsIGVzcGVjaWFsbHkgQzFFIGFuZCBkZWVwZXIgc2xlZXAKK3N0YXRlcyBtYXkgYmUgcHJvYmxlbWF0aWMgZm9yIFRTQyBhcyB3ZWxsLiAgVGhlIFRTQyBtYXkgc3RvcCBhZHZhbmNpbmcgaW4gc3VjaAorYSBzdGF0ZSwgcmVzdWx0aW5nIGluIGEgVFNDIHdoaWNoIGlzIGJlaGluZCB0aGF0IG9mIG90aGVyIENQVXMgd2hlbiBleGVjdXRpb24KK2lzIHJlc3VtZWQuICBTdWNoIENQVXMgbXVzdCBiZSBkZXRlY3RlZCBhbmQgZmxhZ2dlZCBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbQorYmFzZWQgb24gQ1BVIGFuZCBjaGlwc2V0IGlkZW50aWZpY2F0aW9ucy4KKworVGhlIFRTQyBpbiBzdWNoIGEgY2FzZSBtYXkgYmUgY29ycmVjdGVkIGJ5IGNhdGNoaW5nIGl0IHVwIHRvIGEga25vd24gZXh0ZXJuYWwKK2Nsb2Nrc291cmNlLgorCiszLjUpIFRTQyBmcmVxdWVuY3kgY2hhbmdlIC8gUC1zdGF0ZXMKKworVG8gbWFrZSB0aGluZ3Mgc2xpZ2h0bHkgbW9yZSBpbnRlcmVzdGluZywgc29tZSBDUFVzIG1heSBjaGFuZ2UgZnJlcXVlbmN5LiAgVGhleQorbWF5IG9yIG1heSBub3QgcnVuIHRoZSBUU0MgYXQgdGhlIHNhbWUgcmF0ZSwgYW5kIGJlY2F1c2UgdGhlIGZyZXF1ZW5jeSBjaGFuZ2UKK21heSBiZSBzdGFnZ2VyZWQgb3Igc2xld2VkLCBhdCBzb21lIHBvaW50cyBpbiB0aW1lLCB0aGUgVFNDIHJhdGUgbWF5IG5vdCBiZQora25vd24gb3RoZXIgdGhhbiBmYWxsaW5nIHdpdGhpbiBhIHJhbmdlIG9mIHZhbHVlcy4gIEluIHRoaXMgY2FzZSwgdGhlIFRTQyB3aWxsCitub3QgYmUgYSBzdGFibGUgdGltZSBzb3VyY2UsIGFuZCBtdXN0IGJlIGNhbGlicmF0ZWQgYWdhaW5zdCBhIGtub3duLCBzdGFibGUsCitleHRlcm5hbCBjbG9jayB0byBiZSBhIHVzYWJsZSBzb3VyY2Ugb2YgdGltZS4KKworV2hldGhlciB0aGUgVFNDIHJ1bnMgYXQgYSBjb25zdGFudCByYXRlIG9yIHNjYWxlcyB3aXRoIHRoZSBQLXN0YXRlIGlzIG1vZGVsCitkZXBlbmRlbnQgYW5kIG11c3QgYmUgZGV0ZXJtaW5lZCBieSBpbnNwZWN0aW5nIENQVUlELCBjaGlwc2V0IG9yIHZlbmRvcgorc3BlY2lmaWMgTVNSIGZpZWxkcy4KKworSW4gYWRkaXRpb24sIHNvbWUgdmVuZG9ycyBoYXZlIGtub3duIGJ1Z3Mgd2hlcmUgdGhlIFAtc3RhdGUgaXMgYWN0dWFsbHkKK2NvbXBlbnNhdGVkIGZvciBwcm9wZXJseSBkdXJpbmcgbm9ybWFsIG9wZXJhdGlvbiwgYnV0IHdoZW4gdGhlIHByb2Nlc3NvciBpcworaW5hY3RpdmUsIHRoZSBQLXN0YXRlIG1heSBiZSByYWlzZWQgdGVtcG9yYXJpbHkgdG8gc2VydmljZSBjYWNoZSBtaXNzZXMgZnJvbQorb3RoZXIgcHJvY2Vzc29ycy4gIEluIHN1Y2ggY2FzZXMsIHRoZSBUU0Mgb24gaGFsdGVkIENQVXMgY291bGQgYWR2YW5jZSBmYXN0ZXIKK3RoYW4gdGhhdCBvZiBub24taGFsdGVkIHByb2Nlc3NvcnMuICBBTUQgVHVyaW9uIHByb2Nlc3NvcnMgYXJlIGtub3duIHRvIGhhdmUKK3RoaXMgcHJvYmxlbS4KKworMy42KSBUU0MgYW5kIFNUUENMSyAvIFQtc3RhdGVzCisKK0V4dGVybmFsIHNpZ25hbHMgZ2l2ZW4gdG8gdGhlIHByb2Nlc3NvciBtYXkgYWxzbyBoYXZlIHRoZSBlZmZlY3Qgb2Ygc3RvcHBpbmcKK3RoZSBUU0MuICBUaGlzIGlzIHR5cGljYWxseSBkb25lIGZvciB0aGVybWFsIGVtZXJnZW5jeSBwb3dlciBjb250cm9sIHRvIHByZXZlbnQKK2FuIG92ZXJoZWF0aW5nIGNvbmRpdGlvbiwgYW5kIHR5cGljYWxseSwgdGhlcmUgaXMgbm8gd2F5IHRvIGRldGVjdCB0aGF0IHRoaXMKK2NvbmRpdGlvbiBoYXMgaGFwcGVuZWQuCisKKzMuNykgVFNDIHZpcnR1YWxpemF0aW9uIC0gVk1YCisKK1ZNWCBwcm92aWRlcyBjb25kaXRpb25hbCB0cmFwcGluZyBvZiBSRFRTQywgUkRNU1IsIFdSTVNSIGFuZCBSRFRTQ1AKK2luc3RydWN0aW9ucywgd2hpY2ggaXMgZW5vdWdoIGZvciBmdWxsIHZpcnR1YWxpemF0aW9uIG9mIFRTQyBpbiBhbnkgbWFubmVyLiAgSW4KK2FkZGl0aW9uLCBWTVggYWxsb3dzIHBhc3NpbmcgdGhyb3VnaCB0aGUgaG9zdCBUU0MgcGx1cyBhbiBhZGRpdGlvbmFsIFRTQ19PRkZTRVQKK2ZpZWxkIHNwZWNpZmllZCBpbiB0aGUgVk1DUy4gIFNwZWNpYWwgaW5zdHJ1Y3Rpb25zIG11c3QgYmUgdXNlZCB0byByZWFkIGFuZAord3JpdGUgdGhlIFZNQ1MgZmllbGQuCisKKzMuOCkgVFNDIHZpcnR1YWxpemF0aW9uIC0gU1ZNCisKK1NWTSBwcm92aWRlcyBjb25kaXRpb25hbCB0cmFwcGluZyBvZiBSRFRTQywgUkRNU1IsIFdSTVNSIGFuZCBSRFRTQ1AKK2luc3RydWN0aW9ucywgd2hpY2ggaXMgZW5vdWdoIGZvciBmdWxsIHZpcnR1YWxpemF0aW9uIG9mIFRTQyBpbiBhbnkgbWFubmVyLiAgSW4KK2FkZGl0aW9uLCBTVk0gYWxsb3dzIHBhc3NpbmcgdGhyb3VnaCB0aGUgaG9zdCBUU0MgcGx1cyBhbiBhZGRpdGlvbmFsIG9mZnNldAorZmllbGQgc3BlY2lmaWVkIGluIHRoZSBTVk0gY29udHJvbCBibG9jay4KKworMy45KSBUU0MgZmVhdHVyZSBiaXRzIGluIExpbnV4CisKK0luIHN1bW1hcnksIHRoZXJlIGlzIG5vIHdheSB0byBndWFyYW50ZWUgdGhlIFRTQyByZW1haW5zIGluIHBlcmZlY3QKK3N5bmNocm9uaXphdGlvbiB1bmxlc3MgaXQgaXMgZXhwbGljaXRseSBndWFyYW50ZWVkIGJ5IHRoZSBhcmNoaXRlY3R1cmUuICBFdmVuCitpZiBzbywgdGhlIFRTQ3MgaW4gbXVsdGktc29ja2V0cyBvciBOVU1BIHN5c3RlbXMgbWF5IHN0aWxsIHJ1biBpbmRlcGVuZGVudGx5CitkZXNwaXRlIGJlaW5nIGxvY2FsbHkgY29uc2lzdGVudC4KKworVGhlIGZvbGxvd2luZyBmZWF0dXJlIGJpdHMgYXJlIHVzZWQgYnkgTGludXggdG8gc2lnbmFsIHZhcmlvdXMgVFNDIGF0dHJpYnV0ZXMsCitidXQgdGhleSBjYW4gb25seSBiZSB0YWtlbiB0byBiZSBtZWFuaW5nZnVsIGZvciBVUCBvciBzaW5nbGUgbm9kZSBzeXN0ZW1zLgorCitYODZfRkVBVFVSRV9UU0MgCQk6IFRoZSBUU0MgaXMgYXZhaWxhYmxlIGluIGhhcmR3YXJlCitYODZfRkVBVFVSRV9SRFRTQ1AJCTogVGhlIFJEVFNDUCBpbnN0cnVjdGlvbiBpcyBhdmFpbGFibGUKK1g4Nl9GRUFUVVJFX0NPTlNUQU5UX1RTQyAJOiBUaGUgVFNDIHJhdGUgaXMgdW5jaGFuZ2VkIHdpdGggUC1zdGF0ZXMKK1g4Nl9GRUFUVVJFX05PTlNUT1BfVFNDCQk6IFRoZSBUU0MgZG9lcyBub3Qgc3RvcCBpbiBDLXN0YXRlcworWDg2X0ZFQVRVUkVfVFNDX1JFTElBQkxFCTogVFNDIHN5bmMgY2hlY2tzIGFyZSBza2lwcGVkIChWTXdhcmUpCisKKzQpIFZpcnR1YWxpemF0aW9uIFByb2JsZW1zCisKK1RpbWVrZWVwaW5nIGlzIGVzcGVjaWFsbHkgcHJvYmxlbWF0aWMgZm9yIHZpcnR1YWxpemF0aW9uIGJlY2F1c2UgYSBudW1iZXIgb2YKK2NoYWxsZW5nZXMgYXJpc2UuICBUaGUgbW9zdCBvYnZpb3VzIHByb2JsZW0gaXMgdGhhdCB0aW1lIGlzIG5vdyBzaGFyZWQgYmV0d2VlbgordGhlIGhvc3QgYW5kLCBwb3RlbnRpYWxseSwgYSBudW1iZXIgb2YgdmlydHVhbCBtYWNoaW5lcy4gIFRodXMgdGhlIHZpcnR1YWwKK29wZXJhdGluZyBzeXN0ZW0gZG9lcyBub3QgcnVuIHdpdGggMTAwJSB1c2FnZSBvZiB0aGUgQ1BVLCBkZXNwaXRlIHRoZSBmYWN0IHRoYXQKK2l0IG1heSB2ZXJ5IHdlbGwgbWFrZSB0aGF0IGFzc3VtcHRpb24uICBJdCBtYXkgZXhwZWN0IGl0IHRvIHJlbWFpbiB0cnVlIHRvIHZlcnkKK2V4YWN0aW5nIGJvdW5kcyB3aGVuIGludGVycnVwdCBzb3VyY2VzIGFyZSBkaXNhYmxlZCwgYnV0IGluIHJlYWxpdHkgb25seSBpdHMKK3ZpcnR1YWwgaW50ZXJydXB0IHNvdXJjZXMgYXJlIGRpc2FibGVkLCBhbmQgdGhlIG1hY2hpbmUgbWF5IHN0aWxsIGJlIHByZWVtcHRlZAorYXQgYW55IHRpbWUuICBUaGlzIGNhdXNlcyBwcm9ibGVtcyBhcyB0aGUgcGFzc2FnZSBvZiByZWFsIHRpbWUsIHRoZSBpbmplY3Rpb24KK29mIG1hY2hpbmUgaW50ZXJydXB0cyBhbmQgdGhlIGFzc29jaWF0ZWQgY2xvY2sgc291cmNlcyBhcmUgbm8gbG9uZ2VyIGNvbXBsZXRlbHkKK3N5bmNocm9uaXplZCB3aXRoIHJlYWwgdGltZS4KKworVGhpcyBzYW1lIHByb2JsZW0gY2FuIG9jY3VyIG9uIG5hdGl2ZSBoYXJkd2FyZSB0byBhIGRlZ3JlZSwgYXMgU01NIG1vZGUgbWF5CitzdGVhbCBjeWNsZXMgZnJvbSB0aGUgbmF0dXJhbGx5IG9uIFg4NiBzeXN0ZW1zIHdoZW4gU01NIG1vZGUgaXMgdXNlZCBieSB0aGUKK0JJT1MsIGJ1dCBub3QgaW4gc3VjaCBhbiBleHRyZW1lIGZhc2hpb24uICBIb3dldmVyLCB0aGUgZmFjdCB0aGF0IFNNTSBtb2RlIG1heQorY2F1c2Ugc2ltaWxhciBwcm9ibGVtcyB0byB2aXJ0dWFsaXphdGlvbiBtYWtlcyBpdCBhIGdvb2QganVzdGlmaWNhdGlvbiBmb3IKK3NvbHZpbmcgbWFueSBvZiB0aGVzZSBwcm9ibGVtcyBvbiBiYXJlIG1ldGFsLgorCis0LjEpIEludGVycnVwdCBjbG9ja2luZworCitPbmUgb2YgdGhlIG1vc3QgaW1tZWRpYXRlIHByb2JsZW1zIHRoYXQgb2NjdXJzIHdpdGggbGVnYWN5IG9wZXJhdGluZyBzeXN0ZW1zCitpcyB0aGF0IHRoZSBzeXN0ZW0gdGltZWtlZXBpbmcgcm91dGluZXMgYXJlIG9mdGVuIGRlc2lnbmVkIHRvIGtlZXAgdHJhY2sgb2YKK3RpbWUgYnkgY291bnRpbmcgcGVyaW9kaWMgaW50ZXJydXB0cy4gIFRoZXNlIGludGVycnVwdHMgbWF5IGNvbWUgZnJvbSB0aGUgUElUCitvciB0aGUgUlRDLCBidXQgdGhlIHByb2JsZW0gaXMgdGhlIHNhbWU6IHRoZSBob3N0IHZpcnR1YWxpemF0aW9uIGVuZ2luZSBtYXkgbm90CitiZSBhYmxlIHRvIGRlbGl2ZXIgdGhlIHByb3BlciBudW1iZXIgb2YgaW50ZXJydXB0cyBwZXIgc2Vjb25kLCBhbmQgc28gZ3Vlc3QKK3RpbWUgbWF5IGZhbGwgYmVoaW5kLiAgVGhpcyBpcyBlc3BlY2lhbGx5IHByb2JsZW1hdGljIGlmIGEgaGlnaCBpbnRlcnJ1cHQgcmF0ZQoraXMgc2VsZWN0ZWQsIHN1Y2ggYXMgMTAwMCBIWiwgd2hpY2ggaXMgdW5mb3J0dW5hdGVseSB0aGUgZGVmYXVsdCBmb3IgbWFueSBMaW51eAorZ3Vlc3RzLgorCitUaGVyZSBhcmUgdGhyZWUgYXBwcm9hY2hlcyB0byBzb2x2aW5nIHRoaXMgcHJvYmxlbTsgZmlyc3QsIGl0IG1heSBiZSBwb3NzaWJsZQordG8gc2ltcGx5IGlnbm9yZSBpdC4gIEd1ZXN0cyB3aGljaCBoYXZlIGEgc2VwYXJhdGUgdGltZSBzb3VyY2UgZm9yIHRyYWNraW5nCisnd2FsbCBjbG9jaycgb3IgJ3JlYWwgdGltZScgbWF5IG5vdCBuZWVkIGFueSBhZGp1c3RtZW50IG9mIHRoZWlyIGludGVycnVwdHMgdG8KK21haW50YWluIHByb3BlciB0aW1lLiAgSWYgdGhpcyBpcyBub3Qgc3VmZmljaWVudCwgaXQgbWF5IGJlIG5lY2Vzc2FyeSB0byBpbmplY3QKK2FkZGl0aW9uYWwgaW50ZXJydXB0cyBpbnRvIHRoZSBndWVzdCBpbiBvcmRlciB0byBpbmNyZWFzZSB0aGUgZWZmZWN0aXZlCitpbnRlcnJ1cHQgcmF0ZS4gIFRoaXMgYXBwcm9hY2ggbGVhZHMgdG8gY29tcGxpY2F0aW9ucyBpbiBleHRyZW1lIGNvbmRpdGlvbnMsCit3aGVyZSBob3N0IGxvYWQgb3IgZ3Vlc3QgbGFnIGlzIHRvbyBtdWNoIHRvIGNvbXBlbnNhdGUgZm9yLCBhbmQgdGh1cyBhbm90aGVyCitzb2x1dGlvbiB0byB0aGUgcHJvYmxlbSBoYXMgcmlzZW46IHRoZSBndWVzdCBtYXkgbmVlZCB0byBiZWNvbWUgYXdhcmUgb2YgbG9zdAordGlja3MgYW5kIGNvbXBlbnNhdGUgZm9yIHRoZW0gaW50ZXJuYWxseS4gIEFsdGhvdWdoIHByb21pc2luZyBpbiB0aGVvcnksIHRoZQoraW1wbGVtZW50YXRpb24gb2YgdGhpcyBwb2xpY3kgaW4gTGludXggaGFzIGJlZW4gZXh0cmVtZWx5IGVycm9yIHByb25lLCBhbmQgYQorbnVtYmVyIG9mIGJ1Z2d5IHZhcmlhbnRzIG9mIGxvc3QgdGljayBjb21wZW5zYXRpb24gYXJlIGRpc3RyaWJ1dGVkIGFjcm9zcworY29tbW9ubHkgdXNlZCBMaW51eCBzeXN0ZW1zLgorCitXaW5kb3dzIHVzZXMgcGVyaW9kaWMgUlRDIGNsb2NraW5nIGFzIGEgbWVhbnMgb2Yga2VlcGluZyB0aW1lIGludGVybmFsbHksIGFuZAordGh1cyByZXF1aXJlcyBpbnRlcnJ1cHQgc2xld2luZyB0byBrZWVwIHByb3BlciB0aW1lLiAgSXQgZG9lcyB1c2UgYSBsb3cgZW5vdWdoCityYXRlIChlZDogaXMgaXQgMTguMiBIej8pIGhvd2V2ZXIgdGhhdCBpdCBoYXMgbm90IHlldCBiZWVuIGEgcHJvYmxlbSBpbgorcHJhY3RpY2UuCisKKzQuMikgVFNDIHNhbXBsaW5nIGFuZCBzZXJpYWxpemF0aW9uCisKK0FzIHRoZSBoaWdoZXN0IHByZWNpc2lvbiB0aW1lIHNvdXJjZSBhdmFpbGFibGUsIHRoZSBjeWNsZSBjb3VudGVyIG9mIHRoZSBDUFUKK2hhcyBhcm91c2VkIG11Y2ggaW50ZXJlc3QgZnJvbSBkZXZlbG9wZXJzLiAgQXMgZXhwbGFpbmVkIGFib3ZlLCB0aGlzIHRpbWVyIGhhcworbWFueSBwcm9ibGVtcyB1bmlxdWUgdG8gaXRzIG5hdHVyZSBhcyBhIGxvY2FsLCBwb3RlbnRpYWxseSB1bnN0YWJsZSBhbmQKK3BvdGVudGlhbGx5IHVuc3luY2hyb25pemVkIHNvdXJjZS4gIE9uZSBpc3N1ZSB3aGljaCBpcyBub3QgdW5pcXVlIHRvIHRoZSBUU0MsCitidXQgaXMgaGlnaGxpZ2h0ZWQgYmVjYXVzZSBvZiBpdHMgdmVyeSBwcmVjaXNlIG5hdHVyZSBpcyBzYW1wbGluZyBkZWxheS4gIEJ5CitkZWZpbml0aW9uLCB0aGUgY291bnRlciwgb25jZSByZWFkIGlzIGFscmVhZHkgb2xkLiAgSG93ZXZlciwgaXQgaXMgYWxzbworcG9zc2libGUgZm9yIHRoZSBjb3VudGVyIHRvIGJlIHJlYWQgYWhlYWQgb2YgdGhlIGFjdHVhbCB1c2Ugb2YgdGhlIHJlc3VsdC4KK1RoaXMgaXMgYSBjb25zZXF1ZW5jZSBvZiB0aGUgc3VwZXJzY2FsYXIgZXhlY3V0aW9uIG9mIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0sCit3aGljaCBtYXkgZXhlY3V0ZSBpbnN0cnVjdGlvbnMgb3V0IG9mIG9yZGVyLiAgU3VjaCBleGVjdXRpb24gaXMgY2FsbGVkCitub24tc2VyaWFsaXplZC4gIEZvcmNpbmcgc2VyaWFsaXplZCBleGVjdXRpb24gaXMgbmVjZXNzYXJ5IGZvciBwcmVjaXNlCittZWFzdXJlbWVudCB3aXRoIHRoZSBUU0MsIGFuZCByZXF1aXJlcyBhIHNlcmlhbGl6aW5nIGluc3RydWN0aW9uLCBzdWNoIGFzIENQVUlECitvciBhbiBNU1IgcmVhZC4KKworU2luY2UgQ1BVSUQgbWF5IGFjdHVhbGx5IGJlIHZpcnR1YWxpemVkIGJ5IGEgdHJhcCBhbmQgZW11bGF0ZSBtZWNoYW5pc20sIHRoaXMKK3NlcmlhbGl6YXRpb24gY2FuIHBvc2UgYSBwZXJmb3JtYW5jZSBpc3N1ZSBmb3IgaGFyZHdhcmUgdmlydHVhbGl6YXRpb24uICBBbgorYWNjdXJhdGUgdGltZSBzdGFtcCBjb3VudGVyIHJlYWRpbmcgbWF5IHRoZXJlZm9yZSBub3QgYWx3YXlzIGJlIGF2YWlsYWJsZSwgYW5kCitpdCBtYXkgYmUgbmVjZXNzYXJ5IGZvciBhbiBpbXBsZW1lbnRhdGlvbiB0byBndWFyZCBhZ2FpbnN0ICJiYWNrd2FyZHMiIHJlYWRzIG9mCit0aGUgVFNDIGFzIHNlZW4gZnJvbSBvdGhlciBDUFVzLCBldmVuIGluIGFuIG90aGVyd2lzZSBwZXJmZWN0bHkgc3luY2hyb25pemVkCitzeXN0ZW0uCisKKzQuMykgVGltZXNwZWMgYWxpYXNpbmcKKworQWRkaXRpb25hbGx5LCB0aGlzIGxhY2sgb2Ygc2VyaWFsaXphdGlvbiBmcm9tIHRoZSBUU0MgcG9zZXMgYW5vdGhlciBjaGFsbGVuZ2UKK3doZW4gdXNpbmcgcmVzdWx0cyBvZiB0aGUgVFNDIHdoZW4gbWVhc3VyZWQgYWdhaW5zdCBhbm90aGVyIHRpbWUgc291cmNlLiAgQXMKK3RoZSBUU0MgaXMgbXVjaCBoaWdoZXIgcHJlY2lzaW9uLCBtYW55IHBvc3NpYmxlIHZhbHVlcyBvZiB0aGUgVFNDIG1heSBiZSByZWFkCit3aGlsZSBhbm90aGVyIGNsb2NrIGlzIHN0aWxsIGV4cHJlc3NpbmcgdGhlIHNhbWUgdmFsdWUuCisKK1RoYXQgaXMsIHlvdSBtYXkgcmVhZCAoVCxUKzEwKSB3aGlsZSBleHRlcm5hbCBjbG9jayBDIG1haW50YWlucyB0aGUgc2FtZSB2YWx1ZS4KK0R1ZSB0byBub24tc2VyaWFsaXplZCByZWFkcywgeW91IG1heSBhY3R1YWxseSBlbmQgdXAgd2l0aCBhIHJhbmdlIHdoaWNoCitmbHVjdHVhdGVzIC0gZnJvbSAoVC0xLi4gVCsxMCkuICBUaHVzLCBhbnkgdGltZSBjYWxjdWxhdGVkIGZyb20gYSBUU0MsIGJ1dAorY2FsaWJyYXRlZCBhZ2FpbnN0IGFuIGV4dGVybmFsIHZhbHVlIG1heSBoYXZlIGEgcmFuZ2Ugb2YgdmFsaWQgdmFsdWVzLgorUmUtY2FsaWJyYXRpbmcgdGhpcyBjb21wdXRhdGlvbiBtYXkgYWN0dWFsbHkgY2F1c2UgdGltZSwgYXMgY29tcHV0ZWQgYWZ0ZXIgdGhlCitjYWxpYnJhdGlvbiwgdG8gZ28gYmFja3dhcmRzLCBjb21wYXJlZCB3aXRoIHRpbWUgY29tcHV0ZWQgYmVmb3JlIHRoZQorY2FsaWJyYXRpb24uCisKK1RoaXMgcHJvYmxlbSBpcyBwYXJ0aWN1bGFybHkgcHJvbm91bmNlZCB3aXRoIGFuIGludGVybmFsIHRpbWUgc291cmNlIGluIExpbnV4LAordGhlIGtlcm5lbCB0aW1lLCB3aGljaCBpcyBleHByZXNzZWQgaW4gdGhlIHRoZW9yZXRpY2FsbHkgaGlnaCByZXNvbHV0aW9uCit0aW1lc3BlYyAtIGJ1dCB3aGljaCBhZHZhbmNlcyBpbiBtdWNoIGxhcmdlciBncmFudWxhcml0eSBpbnRlcnZhbHMsIHNvbWV0aW1lcworYXQgdGhlIHJhdGUgb2YgamlmZmllcywgYW5kIHBvc3NpYmx5IGluIGNhdGNodXAgbW9kZXMsIGF0IGEgbXVjaCBsYXJnZXIgc3RlcC4KKworVGhpcyBhbGlhc2luZyByZXF1aXJlcyBjYXJlIGluIHRoZSBjb21wdXRhdGlvbiBhbmQgcmVjYWxpYnJhdGlvbiBvZiBrdm1jbG9jaworYW5kIGFueSBvdGhlciB2YWx1ZXMgZGVyaXZlZCBmcm9tIFRTQyBjb21wdXRhdGlvbiAoc3VjaCBhcyBUU0MgdmlydHVhbGl6YXRpb24KK2l0c2VsZikuCisKKzQuNCkgTWlncmF0aW9uCisKK01pZ3JhdGlvbiBvZiBhIHZpcnR1YWwgbWFjaGluZSByYWlzZXMgcHJvYmxlbXMgZm9yIHRpbWVrZWVwaW5nIGluIHR3byB3YXlzLgorRmlyc3QsIHRoZSBtaWdyYXRpb24gaXRzZWxmIG1heSB0YWtlIHRpbWUsIGR1cmluZyB3aGljaCBpbnRlcnJ1cHRzIGNhbm5vdCBiZQorZGVsaXZlcmVkLCBhbmQgYWZ0ZXIgd2hpY2gsIHRoZSBndWVzdCB0aW1lIG1heSBuZWVkIHRvIGJlIGNhdWdodCB1cC4gIE5UUCBtYXkKK2JlIGFibGUgdG8gaGVscCB0byBzb21lIGRlZ3JlZSBoZXJlLCBhcyB0aGUgY2xvY2sgY29ycmVjdGlvbiByZXF1aXJlZCBpcwordHlwaWNhbGx5IHNtYWxsIGVub3VnaCB0byBmYWxsIGluIHRoZSBOVFAtY29ycmVjdGFibGUgd2luZG93LgorCitBbiBhZGRpdGlvbmFsIGNvbmNlcm4gaXMgdGhhdCB0aW1lcnMgYmFzZWQgb2ZmIHRoZSBUU0MgKG9yIEhQRVQsIGlmIHRoZSByYXcgYnVzCitjbG9jayBpcyBleHBvc2VkKSBtYXkgbm93IGJlIHJ1bm5pbmcgYXQgZGlmZmVyZW50IHJhdGVzLCByZXF1aXJpbmcgY29tcGVuc2F0aW9uCitpbiBzb21lIHdheSBpbiB0aGUgaHlwZXJ2aXNvciBieSB2aXJ0dWFsaXppbmcgdGhlc2UgdGltZXJzLiAgSW4gYWRkaXRpb24sCittaWdyYXRpbmcgdG8gYSBmYXN0ZXIgbWFjaGluZSBtYXkgcHJlY2x1ZGUgdGhlIHVzZSBvZiBhIHBhc3N0aHJvdWdoIFRTQywgYXMgYQorZmFzdGVyIGNsb2NrIGNhbm5vdCBiZSBtYWRlIHZpc2libGUgdG8gYSBndWVzdCB3aXRob3V0IHRoZSBwb3RlbnRpYWwgb2YgdGltZQorYWR2YW5jaW5nIGZhc3RlciB0aGFuIHVzdWFsLiAgQSBzbG93ZXIgY2xvY2sgaXMgbGVzcyBvZiBhIHByb2JsZW0sIGFzIGl0IGNhbgorYWx3YXlzIGJlIGNhdWdodCB1cCB0byB0aGUgb3JpZ2luYWwgcmF0ZS4gIEtWTSBjbG9jayBhdm9pZHMgdGhlc2UgcHJvYmxlbXMgYnkKK3NpbXBseSBzdG9yaW5nIG11bHRpcGxpZXJzIGFuZCBvZmZzZXRzIGFnYWluc3QgdGhlIFRTQyBmb3IgdGhlIGd1ZXN0IHRvIGNvbnZlcnQKK2JhY2sgaW50byBuYW5vc2Vjb25kIHJlc29sdXRpb24gdmFsdWVzLgorCis0LjUpIFNjaGVkdWxpbmcKKworU2luY2Ugc2NoZWR1bGluZyBtYXkgYmUgYmFzZWQgb24gcHJlY2lzZSB0aW1pbmcgYW5kIGZpcmluZyBvZiBpbnRlcnJ1cHRzLCB0aGUKK3NjaGVkdWxpbmcgYWxnb3JpdGhtcyBvZiBhbiBvcGVyYXRpbmcgc3lzdGVtIG1heSBiZSBhZHZlcnNlbHkgYWZmZWN0ZWQgYnkKK3ZpcnR1YWxpemF0aW9uLiAgSW4gdGhlb3J5LCB0aGUgZWZmZWN0IGlzIHJhbmRvbSBhbmQgc2hvdWxkIGJlIHVuaXZlcnNhbGx5CitkaXN0cmlidXRlZCwgYnV0IGluIGNvbnRyaXZlZCBhcyB3ZWxsIGFzIHJlYWwgc2NlbmFyaW9zIChndWVzdCBkZXZpY2UgYWNjZXNzLAorY2F1c2VzIG9mIHZpcnR1YWxpemF0aW9uIGV4aXRzLCBwb3NzaWJsZSBjb250ZXh0IHN3aXRjaCksIHRoaXMgbWF5IG5vdCBhbHdheXMKK2JlIHRoZSBjYXNlLiAgVGhlIGVmZmVjdCBvZiB0aGlzIGhhcyBub3QgYmVlbiB3ZWxsIHN0dWRpZWQuCisKK0luIGFuIGF0dGVtcHQgdG8gd29yayBhcm91bmQgdGhpcywgc2V2ZXJhbCBpbXBsZW1lbnRhdGlvbnMgaGF2ZSBwcm92aWRlZCBhCitwYXJhdmlydHVhbGl6ZWQgc2NoZWR1bGVyIGNsb2NrLCB3aGljaCByZXZlYWxzIHRoZSB0cnVlIGFtb3VudCBvZiBDUFUgdGltZSBmb3IKK3doaWNoIGEgdmlydHVhbCBtYWNoaW5lIGhhcyBiZWVuIHJ1bm5pbmcuCisKKzQuNikgV2F0Y2hkb2dzCisKK1dhdGNoZG9nIHRpbWVycywgc3VjaCBhcyB0aGUgbG9jayBkZXRlY3RvciBpbiBMaW51eCBtYXkgZmlyZSBhY2NpZGVudGFsbHkgd2hlbgorcnVubmluZyB1bmRlciBoYXJkd2FyZSB2aXJ0dWFsaXphdGlvbiBkdWUgdG8gdGltZXIgaW50ZXJydXB0cyBiZWluZyBkZWxheWVkIG9yCittaXNpbnRlcnByZXRhdGlvbiBvZiB0aGUgcGFzc2FnZSBvZiByZWFsIHRpbWUuICBVc3VhbGx5LCB0aGVzZSB3YXJuaW5ncyBhcmUKK3NwdXJpb3VzIGFuZCBjYW4gYmUgaWdub3JlZCwgYnV0IGluIHNvbWUgY2lyY3Vtc3RhbmNlcyBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvCitkaXNhYmxlIHN1Y2ggZGV0ZWN0aW9uLgorCis0LjcpIERlbGF5cyBhbmQgcHJlY2lzaW9uIHRpbWluZworCitQcmVjaXNlIHRpbWluZyBhbmQgZGVsYXlzIG1heSBub3QgYmUgcG9zc2libGUgaW4gYSB2aXJ0dWFsaXplZCBzeXN0ZW0uICBUaGlzCitjYW4gaGFwcGVuIGlmIHRoZSBzeXN0ZW0gaXMgY29udHJvbGxpbmcgcGh5c2ljYWwgaGFyZHdhcmUsIG9yIGlzc3VlcyBkZWxheXMgdG8KK2NvbXBlbnNhdGUgZm9yIHNsb3dlciBJL08gdG8gYW5kIGZyb20gZGV2aWNlcy4gIFRoZSBmaXJzdCBpc3N1ZSBpcyBub3Qgc29sdmFibGUKK2luIGdlbmVyYWwgZm9yIGEgdmlydHVhbGl6ZWQgc3lzdGVtOyBoYXJkd2FyZSBjb250cm9sIHNvZnR3YXJlIGNhbid0IGJlCithZGVxdWF0ZWx5IHZpcnR1YWxpemVkIHdpdGhvdXQgYSBmdWxsIHJlYWwtdGltZSBvcGVyYXRpbmcgc3lzdGVtLCB3aGljaCB3b3VsZAorcmVxdWlyZSBhbiBSVCBhd2FyZSB2aXJ0dWFsaXphdGlvbiBwbGF0Zm9ybS4KKworVGhlIHNlY29uZCBpc3N1ZSBtYXkgY2F1c2UgcGVyZm9ybWFuY2UgcHJvYmxlbXMsIGJ1dCB0aGlzIGlzIHVubGlrZWx5IHRvIGJlIGEKK3NpZ25pZmljYW50IGlzc3VlLiAgSW4gbWFueSBjYXNlcyB0aGVzZSBkZWxheXMgbWF5IGJlIGVsaW1pbmF0ZWQgdGhyb3VnaAorY29uZmlndXJhdGlvbiBvciBwYXJhdmlydHVhbGl6YXRpb24uCisKKzQuOCkgQ292ZXJ0IGNoYW5uZWxzIGFuZCBsZWFrcworCitJbiBhZGRpdGlvbiB0byB0aGUgYWJvdmUgcHJvYmxlbXMsIHRpbWUgaW5mb3JtYXRpb24gd2lsbCBpbmV2aXRhYmx5IGxlYWsgdG8gdGhlCitndWVzdCBhYm91dCB0aGUgaG9zdCBpbiBhbnl0aGluZyBidXQgYSBwZXJmZWN0IGltcGxlbWVudGF0aW9uIG9mIHZpcnR1YWxpemVkCit0aW1lLiAgVGhpcyBtYXkgYWxsb3cgdGhlIGd1ZXN0IHRvIGluZmVyIHRoZSBwcmVzZW5jZSBvZiBhIGh5cGVydmlzb3IgKGFzIGluIGEKK3JlZC1waWxsIHR5cGUgZGV0ZWN0aW9uKSwgYW5kIGl0IG1heSBhbGxvdyBpbmZvcm1hdGlvbiB0byBsZWFrIGJldHdlZW4gZ3Vlc3RzCitieSB1c2luZyBDUFUgdXRpbGl6YXRpb24gaXRzZWxmIGFzIGEgc2lnbmFsbGluZyBjaGFubmVsLiAgUHJldmVudGluZyBzdWNoCitwcm9ibGVtcyB3b3VsZCByZXF1aXJlIGNvbXBsZXRlbHkgaXNvbGF0ZWQgdmlydHVhbCB0aW1lIHdoaWNoIG1heSBub3QgdHJhY2sKK3JlYWwgdGltZSBhbnkgbG9uZ2VyLiAgVGhpcyBtYXkgYmUgdXNlZnVsIGluIGNlcnRhaW4gc2VjdXJpdHkgb3IgUUEgY29udGV4dHMsCitidXQgaW4gZ2VuZXJhbCBpc24ndCByZWNvbW1lbmRlZCBmb3IgcmVhbC13b3JsZCBkZXBsb3ltZW50IHNjZW5hcmlvcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlydHVhbC9wYXJhdmlydF9vcHMudHh0IGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL3BhcmF2aXJ0X29wcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ4ODFjMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9wYXJhdmlydF9vcHMudHh0CkBAIC0wLDAgKzEsMzIgQEAKK1BhcmF2aXJ0X29wcworPT09PT09PT09PT09CisKK0xpbnV4IHByb3ZpZGVzIHN1cHBvcnQgZm9yIGRpZmZlcmVudCBoeXBlcnZpc29yIHZpcnR1YWxpemF0aW9uIHRlY2hub2xvZ2llcy4KK0hpc3RvcmljYWxseSBkaWZmZXJlbnQgYmluYXJ5IGtlcm5lbHMgd291bGQgYmUgcmVxdWlyZWQgaW4gb3JkZXIgdG8gc3VwcG9ydAorZGlmZmVyZW50IGh5cGVydmlzb3JzLCB0aGlzIHJlc3RyaWN0aW9uIHdhcyByZW1vdmVkIHdpdGggcHZfb3BzLgorTGludXggcHZfb3BzIGlzIGEgdmlydHVhbGl6YXRpb24gQVBJIHdoaWNoIGVuYWJsZXMgc3VwcG9ydCBmb3IgZGlmZmVyZW50CitoeXBlcnZpc29ycy4gSXQgYWxsb3dzIGVhY2ggaHlwZXJ2aXNvciB0byBvdmVycmlkZSBjcml0aWNhbCBvcGVyYXRpb25zIGFuZAorYWxsb3dzIGEgc2luZ2xlIGtlcm5lbCBiaW5hcnkgdG8gcnVuIG9uIGFsbCBzdXBwb3J0ZWQgZXhlY3V0aW9uIGVudmlyb25tZW50cworaW5jbHVkaW5nIG5hdGl2ZSBtYWNoaW5lIC0tIHdpdGhvdXQgYW55IGh5cGVydmlzb3JzLgorCitwdl9vcHMgcHJvdmlkZXMgYSBzZXQgb2YgZnVuY3Rpb24gcG9pbnRlcnMgd2hpY2ggcmVwcmVzZW50IG9wZXJhdGlvbnMKK2NvcnJlc3BvbmRpbmcgdG8gbG93IGxldmVsIGNyaXRpY2FsIGluc3RydWN0aW9ucyBhbmQgaGlnaCBsZXZlbAorZnVuY3Rpb25hbGl0aWVzIGluIHZhcmlvdXMgYXJlYXMuIHB2LW9wcyBhbGxvd3MgZm9yIG9wdGltaXphdGlvbnMgYXQgcnVuCit0aW1lIGJ5IGVuYWJsaW5nIGJpbmFyeSBwYXRjaGluZyBvZiB0aGUgbG93LW9wcyBjcml0aWNhbCBvcGVyYXRpb25zCithdCBib290IHRpbWUuCisKK3B2X29wcyBvcGVyYXRpb25zIGFyZSBjbGFzc2lmaWVkIGludG8gdGhyZWUgY2F0ZWdvcmllczoKKworLSBzaW1wbGUgaW5kaXJlY3QgY2FsbAorICBUaGVzZSBvcGVyYXRpb25zIGNvcnJlc3BvbmQgdG8gaGlnaCBsZXZlbCBmdW5jdGlvbmFsaXR5IHdoZXJlIGl0IGlzCisgIGtub3duIHRoYXQgdGhlIG92ZXJoZWFkIG9mIGluZGlyZWN0IGNhbGwgaXNuJ3QgdmVyeSBpbXBvcnRhbnQuCisKKy0gaW5kaXJlY3QgY2FsbCB3aGljaCBhbGxvd3Mgb3B0aW1pemF0aW9uIHdpdGggYmluYXJ5IHBhdGNoCisgIFVzdWFsbHkgdGhlc2Ugb3BlcmF0aW9ucyBjb3JyZXNwb25kIHRvIGxvdyBsZXZlbCBjcml0aWNhbCBpbnN0cnVjdGlvbnMuIFRoZXkKKyAgYXJlIGNhbGxlZCBmcmVxdWVudGx5IGFuZCBhcmUgcGVyZm9ybWFuY2UgY3JpdGljYWwuIFRoZSBvdmVyaGVhZCBpcworICB2ZXJ5IGltcG9ydGFudC4KKworLSBhIHNldCBvZiBtYWNyb3MgZm9yIGhhbmQgd3JpdHRlbiBhc3NlbWJseSBjb2RlCisgIEhhbmQgd3JpdHRlbiBhc3NlbWJseSBjb2RlcyAoLlMgZmlsZXMpIGFsc28gbmVlZCBwYXJhdmlydHVhbGl6YXRpb24KKyAgYmVjYXVzZSB0aGV5IGluY2x1ZGUgc2Vuc2l0aXZlIGluc3RydWN0aW9ucyBvciBzb21lIG9mIGNvZGUgcGF0aHMgaW4KKyAgdGhlbSBhcmUgdmVyeSBwZXJmb3JtYW5jZSBjcml0aWNhbC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlydHVhbC91bWwvVXNlck1vZGVMaW51eC1IT1dUTy50eHQgYi9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwvdW1sL1VzZXJNb2RlTGludXgtSE9XVE8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MDk5Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwvdW1sL1VzZXJNb2RlTGludXgtSE9XVE8udHh0CkBAIC0wLDAgKzEsNDU4OSBAQAorICBVc2VyIE1vZGUgTGludXggSE9XVE8KKyAgVXNlciBNb2RlIExpbnV4IENvcmUgVGVhbQorICBNb24gTm92IDE4IDE0OjE2OjE2IEVTVCAyMDAyCisKKyAgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIHVzZSBhbmQgYWJ1c2Ugb2YgSmVmZiBEaWtlJ3MgVXNlciBNb2RlCisgIExpbnV4OiBhIHBvcnQgb2YgdGhlIExpbnV4IGtlcm5lbCBhcyBhIG5vcm1hbCBJbnRlbCBMaW51eCBwcm9jZXNzLgorICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisKKyAgVGFibGUgb2YgQ29udGVudHMKKworICAxLiBJbnRyb2R1Y3Rpb24KKworICAgICAxLjEgSG93IGlzIFVzZXIgTW9kZSBMaW51eCBEaWZmZXJlbnQ/CisgICAgIDEuMiBXaHkgV291bGQgSSBXYW50IFVzZXIgTW9kZSBMaW51eD8KKworICAyLiBDb21waWxpbmcgdGhlIGtlcm5lbCBhbmQgbW9kdWxlcworCisgICAgIDIuMSBDb21waWxpbmcgdGhlIGtlcm5lbAorICAgICAyLjIgQ29tcGlsaW5nIGFuZCBpbnN0YWxsaW5nIGtlcm5lbCBtb2R1bGVzCisgICAgIDIuMyBDb21waWxpbmcgYW5kIGluc3RhbGxpbmcgdW1sX3V0aWxpdGllcworCisgIDMuIFJ1bm5pbmcgVU1MIGFuZCBsb2dnaW5nIGluCisKKyAgICAgMy4xIFJ1bm5pbmcgVU1MCisgICAgIDMuMiBMb2dnaW5nIGluCisgICAgIDMuMyBFeGFtcGxlcworCisgIDQuIFVNTCBvbiAyRy8yRyBob3N0cworCisgICAgIDQuMSBJbnRyb2R1Y3Rpb24KKyAgICAgNC4yIFRoZSBwcm9ibGVtCisgICAgIDQuMyBUaGUgc29sdXRpb24KKworICA1LiBTZXR0aW5nIHVwIHNlcmlhbCBsaW5lcyBhbmQgY29uc29sZXMKKworICAgICA1LjEgU3BlY2lmeWluZyB0aGUgZGV2aWNlCisgICAgIDUuMiBTcGVjaWZ5aW5nIHRoZSBjaGFubmVsCisgICAgIDUuMyBFeGFtcGxlcworCisgIDYuIFNldHRpbmcgdXAgdGhlIG5ldHdvcmsKKworICAgICA2LjEgR2VuZXJhbCBzZXR1cAorICAgICA2LjIgVXNlcnNwYWNlIGRhZW1vbnMKKyAgICAgNi4zIFNwZWNpZnlpbmcgZXRoZXJuZXQgYWRkcmVzc2VzCisgICAgIDYuNCBVTUwgaW50ZXJmYWNlIHNldHVwCisgICAgIDYuNSBNdWx0aWNhc3QKKyAgICAgNi42IFRVTi9UQVAgd2l0aCB0aGUgdW1sX25ldCBoZWxwZXIKKyAgICAgNi43IFRVTi9UQVAgd2l0aCBhIHByZWNvbmZpZ3VyZWQgdGFwIGRldmljZQorICAgICA2LjggRXRoZXJ0YXAKKyAgICAgNi45IFRoZSBzd2l0Y2ggZGFlbW9uCisgICAgIDYuMTAgU2xpcAorICAgICA2LjExIFNsaXJwCisgICAgIDYuMTIgcGNhcAorICAgICA2LjEzIFNldHRpbmcgdXAgdGhlIGhvc3QgeW91cnNlbGYKKworICA3LiBTaGFyaW5nIEZpbGVzeXN0ZW1zIGJldHdlZW4gVmlydHVhbCBNYWNoaW5lcworCisgICAgIDcuMSBBIHdhcm5pbmcKKyAgICAgNy4yIFVzaW5nIGxheWVyZWQgYmxvY2sgZGV2aWNlcworICAgICA3LjMgTm90ZSEKKyAgICAgNy40IEFub3RoZXIgd2FybmluZworICAgICA3LjUgdW1sX21vbyA6IE1lcmdpbmcgYSBDT1cgZmlsZSB3aXRoIGl0cyBiYWNraW5nIGZpbGUKKworICA4LiBDcmVhdGluZyBmaWxlc3lzdGVtcworCisgICAgIDguMSBDcmVhdGUgdGhlIGZpbGVzeXN0ZW0gZmlsZQorICAgICA4LjIgQXNzaWduIHRoZSBmaWxlIHRvIGEgVU1MIGRldmljZQorICAgICA4LjMgQ3JlYXRpbmcgYW5kIG1vdW50aW5nIHRoZSBmaWxlc3lzdGVtCisKKyAgOS4gSG9zdCBmaWxlIGFjY2VzcworCisgICAgIDkuMSBVc2luZyBob3N0ZnMKKyAgICAgOS4yIGhvc3RmcyBhcyB0aGUgcm9vdCBmaWxlc3lzdGVtCisgICAgIDkuMyBCdWlsZGluZyBob3N0ZnMKKworICAxMC4gVGhlIE1hbmFnZW1lbnQgQ29uc29sZQorICAgICAxMC4xIHZlcnNpb24KKyAgICAgMTAuMiBoYWx0IGFuZCByZWJvb3QKKyAgICAgMTAuMyBjb25maWcKKyAgICAgMTAuNCByZW1vdmUKKyAgICAgMTAuNSBzeXNycQorICAgICAxMC42IGhlbHAKKyAgICAgMTAuNyBjYWQKKyAgICAgMTAuOCBzdG9wCisgICAgIDEwLjkgZ28KKworICAxMS4gS2VybmVsIGRlYnVnZ2luZworCisgICAgIDExLjEgU3RhcnRpbmcgdGhlIGtlcm5lbCB1bmRlciBnZGIKKyAgICAgMTEuMiBFeGFtaW5pbmcgc2xlZXBpbmcgcHJvY2Vzc2VzCisgICAgIDExLjMgUnVubmluZyBkZGQgb24gVU1MCisgICAgIDExLjQgRGVidWdnaW5nIG1vZHVsZXMKKyAgICAgMTEuNSBBdHRhY2hpbmcgZ2RiIHRvIHRoZSBrZXJuZWwKKyAgICAgMTEuNiBVc2luZyBhbHRlcm5hdGUgZGVidWdnZXJzCisKKyAgMTIuIEtlcm5lbCBkZWJ1Z2dpbmcgZXhhbXBsZXMKKworICAgICAxMi4xIFRoZSBjYXNlIG9mIHRoZSBodW5nIGZzY2sKKyAgICAgMTIuMiBFcGlzb2RlIDI6IFRoZSBjYXNlIG9mIHRoZSBodW5nIGZzY2sKKworICAxMy4gV2hhdCB0byBkbyB3aGVuIFVNTCBkb2Vzbid0IHdvcmsKKworICAgICAxMy4xIFN0cmFuZ2UgY29tcGlsYXRpb24gZXJyb3JzIHdoZW4geW91IGJ1aWxkIGZyb20gc291cmNlCisgICAgIDEzLjIgKG9ic29sZXRlKQorICAgICAxMy4zIEEgdmFyaWV0eSBvZiBwYW5pY3MgYW5kIGhhbmdzIHdpdGggL3RtcCBvbiBhIHJlaXNlcmZzICBmaWxlc3lzdGVtCisgICAgIDEzLjQgVGhlIGNvbXBpbGUgZmFpbHMgd2l0aCBlcnJvcnMgYWJvdXQgY29uZmxpY3RpbmcgdHlwZXMgZm9yICdvcGVuJywgJ2R1cCcsIGFuZCAnd2FpdHBpZCcKKyAgICAgMTMuNSBVTUwgZG9lc24ndCB3b3JrIHdoZW4gL3RtcCBpcyBhbiBORlMgZmlsZXN5c3RlbQorICAgICAxMy42IFVNTCBoYW5ncyBvbiBib290IHdoZW4gY29tcGlsZWQgd2l0aCBncHJvZiBzdXBwb3J0CisgICAgIDEzLjcgc3lzbG9nZCBkaWVzIHdpdGggYSBTSUdURVJNIG9uIHN0YXJ0dXAKKyAgICAgMTMuOCBUVU4vVEFQIG5ldHdvcmtpbmcgZG9lc24ndCB3b3JrIG9uIGEgMi40IGhvc3QKKyAgICAgMTMuOSBZb3UgY2FuIG5ldHdvcmsgdG8gdGhlIGhvc3QgYnV0IG5vdCB0byBvdGhlciBtYWNoaW5lcyBvbiB0aGUgbmV0CisgICAgIDEzLjEwIEkgaGF2ZSBubyByb290IGFuZCBJIHdhbnQgdG8gc2NyZWFtCisgICAgIDEzLjExIFVNTCBidWlsZCBjb25mbGljdCBiZXR3ZWVuIHB0cmFjZS5oIGFuZCB1Y29udGV4dC5oCisgICAgIDEzLjEyIFRoZSBVTUwgQm9nb01pcHMgaXMgZXhhY3RseSBoYWxmIHRoZSBob3N0J3MgQm9nb01pcHMKKyAgICAgMTMuMTMgV2hlbiB5b3UgcnVuIFVNTCwgaXQgaW1tZWRpYXRlbHkgc2VnZmF1bHRzCisgICAgIDEzLjE0IHh0ZXJtcyBhcHBlYXIsIHRoZW4gaW1tZWRpYXRlbHkgZGlzYXBwZWFyCisgICAgIDEzLjE1IEFueSBvdGhlciBwYW5pYywgaGFuZywgb3Igc3RyYW5nZSBiZWhhdmlvcgorCisgIDE0LiBEaWFnbm9zaW5nIFByb2JsZW1zCisKKyAgICAgMTQuMSBDYXNlIDEgOiBOb3JtYWwga2VybmVsIHBhbmljcworICAgICAxNC4yIENhc2UgMiA6IFRyYWNpbmcgdGhyZWFkIHBhbmljcworICAgICAxNC4zIENhc2UgMyA6IFRyYWNpbmcgdGhyZWFkIHBhbmljcyBjYXVzZWQgYnkgb3RoZXIgdGhyZWFkcworICAgICAxNC40IENhc2UgNCA6IEhhbmdzCisKKyAgMTUuIFRoYW5rcworCisgICAgIDE1LjEgQ29kZSBhbmQgRG9jdW1lbnRhdGlvbgorICAgICAxNS4yIEZsdXNoaW5nIG91dCBidWdzCisgICAgIDE1LjMgQnVnbGV0cyBhbmQgY2xlYW4tdXBzCisgICAgIDE1LjQgQ2FzZSBTdHVkaWVzCisgICAgIDE1LjUgT3RoZXIgY29udHJpYnV0aW9ucworCisKKyAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXworCisgIDEuICBJbnRyb2R1Y3Rpb24KKworICBXZWxjb21lIHRvIFVzZXIgTW9kZSBMaW51eC4gIEl0J3MgZ29pbmcgdG8gYmUgZnVuLgorCisKKworICAxLjEuICBIb3cgaXMgVXNlciBNb2RlIExpbnV4IERpZmZlcmVudD8KKworICBOb3JtYWxseSwgdGhlIExpbnV4IEtlcm5lbCB0YWxrcyBzdHJhaWdodCB0byB5b3VyIGhhcmR3YXJlICh2aWRlbworICBjYXJkLCBrZXlib2FyZCwgaGFyZCBkcml2ZXMsIGV0YyksIGFuZCBhbnkgcHJvZ3JhbXMgd2hpY2ggcnVuIGFzayB0aGUKKyAga2VybmVsIHRvIG9wZXJhdGUgdGhlIGhhcmR3YXJlLCBsaWtlIHNvOgorCisKKworICAgICAgICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0rCisgICAgICAgICB8IFByb2Nlc3MgMSB8IFByb2Nlc3MgMiB8IC4uLnwKKyAgICAgICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tKworICAgICAgICAgfCAgICAgICBMaW51eCBLZXJuZWwgICAgICAgICB8CisgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgIHwgICAgICAgICBIYXJkd2FyZSAgICAgICAgICAgfAorICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKworCisKKyAgVGhlIFVzZXIgTW9kZSBMaW51eCBLZXJuZWwgaXMgZGlmZmVyZW50OyBpbnN0ZWFkIG9mIHRhbGtpbmcgdG8gdGhlCisgIGhhcmR3YXJlLCBpdCB0YWxrcyB0byBhIGByZWFsJyBMaW51eCBrZXJuZWwgKGNhbGxlZCB0aGUgYGhvc3Qga2VybmVsJworICBmcm9tIG5vdyBvbiksIGxpa2UgYW55IG90aGVyIHByb2dyYW0uICBQcm9ncmFtcyBjYW4gdGhlbiBydW4gaW5zaWRlCisgIFVzZXItTW9kZSBMaW51eCBhcyBpZiB0aGV5IHdlcmUgcnVubmluZyB1bmRlciBhIG5vcm1hbCBrZXJuZWwsIGxpa2UKKyAgc286CisKKworCisgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgIHwgUHJvY2VzcyAyIHwgLi4ufAorICAgICAgICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgICB8IFByb2Nlc3MgMSB8IFVzZXItTW9kZSBMaW51eHwKKyAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgfCAgICAgICBMaW51eCBLZXJuZWwgICAgICAgICB8CisgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgIHwgICAgICAgICBIYXJkd2FyZSAgICAgICAgICAgfAorICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKworCisKKworICAxLjIuICBXaHkgV291bGQgSSBXYW50IFVzZXIgTW9kZSBMaW51eD8KKworCisgIDEuIElmIFVzZXIgTW9kZSBMaW51eCBjcmFzaGVzLCB5b3VyIGhvc3Qga2VybmVsIGlzIHN0aWxsIGZpbmUuCisKKyAgMi4gWW91IGNhbiBydW4gYSB1c2VybW9kZSBrZXJuZWwgYXMgYSBub24tcm9vdCB1c2VyLgorCisgIDMuIFlvdSBjYW4gZGVidWcgdGhlIFVzZXIgTW9kZSBMaW51eCBsaWtlIGFueSBub3JtYWwgcHJvY2Vzcy4KKworICA0LiBZb3UgY2FuIHJ1biBncHJvZiAocHJvZmlsaW5nKSBhbmQgZ2NvdiAoY292ZXJhZ2UgdGVzdGluZykuCisKKyAgNS4gWW91IGNhbiBwbGF5IHdpdGggeW91ciBrZXJuZWwgd2l0aG91dCBicmVha2luZyB0aGluZ3MuCisKKyAgNi4gWW91IGNhbiB1c2UgaXQgYXMgYSBzYW5kYm94IGZvciB0ZXN0aW5nIG5ldyBhcHBzLgorCisgIDcuIFlvdSBjYW4gdHJ5IG5ldyBkZXZlbG9wbWVudCBrZXJuZWxzIHNhZmVseS4KKworICA4LiBZb3UgY2FuIHJ1biBkaWZmZXJlbnQgZGlzdHJpYnV0aW9ucyBzaW11bHRhbmVvdXNseS4KKworICA5LiBJdCdzIGV4dHJlbWVseSBmdW4uCisKKworCisKKworICAyLiAgQ29tcGlsaW5nIHRoZSBrZXJuZWwgYW5kIG1vZHVsZXMKKworCisKKworICAyLjEuICBDb21waWxpbmcgdGhlIGtlcm5lbAorCisKKyAgQ29tcGlsaW5nIHRoZSB1c2VyIG1vZGUga2VybmVsIGlzIGp1c3QgbGlrZSBjb21waWxpbmcgYW55IG90aGVyCisgIGtlcm5lbC4gIExldCdzIGdvIHRocm91Z2ggdGhlIHN0ZXBzLCB1c2luZyAyLjQuMC1wcmVyZWxlYXNlIChjdXJyZW50CisgIGFzIG9mIHRoaXMgd3JpdGluZykgYXMgYW4gZXhhbXBsZToKKworCisgIDEuIERvd25sb2FkIHRoZSBsYXRlc3QgVU1MIHBhdGNoIGZyb20KKworICAgICB0aGUgZG93bmxvYWQgcGFnZSA8aHR0cDovL3VzZXItbW9kZS1saW51eC5zb3VyY2Vmb3JnZS5uZXQvCisKKyAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUgZmlsZSBpcyB1bWwtcGF0Y2gtMi40LjAtcHJlcmVsZWFzZS5iejIuCisKKworICAyLiBEb3dubG9hZCB0aGUgbWF0Y2hpbmcga2VybmVsIGZyb20geW91ciBmYXZvdXJpdGUga2VybmVsIG1pcnJvciwKKyAgICAgc3VjaCBhczoKKworICAgICBmdHA6Ly9mdHAuY2Eua2VybmVsLm9yZy9wdWIva2VybmVsL3YyLjQvbGludXgtMi40LjAtcHJlcmVsZWFzZS50YXIuYnoyCisgICAgIDxmdHA6Ly9mdHAuY2Eua2VybmVsLm9yZy9wdWIva2VybmVsL3YyLjQvbGludXgtMi40LjAtcHJlcmVsZWFzZS50YXIuYnoyPgorICAgICAuCisKKworICAzLiBNYWtlIGEgZGlyZWN0b3J5IGFuZCB1bnBhY2sgdGhlIGtlcm5lbCBpbnRvIGl0LgorCisKKworICAgICAgIGhvc3QlCisgICAgICAgbWtkaXIgfi91bWwKKworCisKKworCisKKyAgICAgICBob3N0JQorICAgICAgIGNkIH4vdW1sCisKKworCisKKworCisgICAgICAgaG9zdCUKKyAgICAgICB0YXIgLXh6dmYgbGludXgtMi40LjAtcHJlcmVsZWFzZS50YXIuYnoyCisKKworCisKKworCisgIDQuIEFwcGx5IHRoZSBwYXRjaCB1c2luZworCisKKworICAgICAgIGhvc3QlCisgICAgICAgY2Qgfi91bWwvbGludXgKKworCisKKyAgICAgICBob3N0JQorICAgICAgIGJ6Y2F0IHVtbC1wYXRjaC0yLjQuMC1wcmVyZWxlYXNlLmJ6MiB8IHBhdGNoIC1wMQorCisKKworCisKKworICA1LiBSdW4geW91ciBmYXZvcml0ZSBjb25maWc7IGBtYWtlIHhjb25maWcgQVJDSD11bScgaXMgdGhlIG1vc3QKKyAgICAgY29udmVuaWVudC4gIGBtYWtlIGNvbmZpZyBBUkNIPXVtJyBhbmQgJ21ha2UgbWVudWNvbmZpZyBBUkNIPXVtJworICAgICB3aWxsIHdvcmsgYXMgd2VsbC4gIFRoZSBkZWZhdWx0cyB3aWxsIGdpdmUgeW91IGEgdXNlZnVsIGtlcm5lbC4gIElmCisgICAgIHlvdSB3YW50IHRvIGNoYW5nZSBzb21ldGhpbmcsIGdvIGFoZWFkLCBpdCBwcm9iYWJseSB3b24ndCBodXJ0CisgICAgIGFueXRoaW5nLgorCisKKyAgICAgTm90ZTogIElmIHRoZSBob3N0IGlzIGNvbmZpZ3VyZWQgd2l0aCBhIDJHLzJHIGFkZHJlc3Mgc3BhY2Ugc3BsaXQKKyAgICAgcmF0aGVyIHRoYW4gdGhlIHVzdWFsIDNHLzFHIHNwbGl0LCB0aGVuIHRoZSBwYWNrYWdlZCBVTUwgYmluYXJpZXMKKyAgICAgd2lsbCBub3QgcnVuLiAgVGhleSB3aWxsIGltbWVkaWF0ZWx5IHNlZ2ZhdWx0LiAgU2VlIGBgVU1MIG9uIDJHLzJHCisgICAgIGhvc3RzJycgIGZvciB0aGUgc2Nvb3Agb24gcnVubmluZyBVTUwgb24geW91ciBzeXN0ZW0uCisKKworCisgIDYuIEZpbmlzaCB3aXRoIGBtYWtlIGxpbnV4IEFSQ0g9dW0nOiB0aGUgcmVzdWx0IGlzIGEgZmlsZSBjYWxsZWQKKyAgICAgYGxpbnV4JyBpbiB0aGUgdG9wIGRpcmVjdG9yeSBvZiB5b3VyIHNvdXJjZSB0cmVlLgorCisgIE1ha2Ugc3VyZSB0aGF0IHlvdSBkb24ndCBidWlsZCB0aGlzIGtlcm5lbCBpbiAvdXNyL3NyYy9saW51eC4gIE9uIHNvbWUKKyAgZGlzdHJpYnV0aW9ucywgL3Vzci9pbmNsdWRlL2FzbSBpcyBhIGxpbmsgaW50byB0aGlzIHBvb2wuICBUaGUgdXNlci0KKyAgbW9kZSBidWlsZCBjaGFuZ2VzIHRoZSBvdGhlciBlbmQgb2YgdGhhdCBsaW5rLCBhbmQgdGhpbmdzIHRoYXQgaW5jbHVkZQorICA8YXNtL2FueXRoaW5nLmg+IHN0b3AgY29tcGlsaW5nLgorCisgIFRoZSBzb3VyY2VzIGFyZSBhbHNvIGF2YWlsYWJsZSBmcm9tIGN2cyBhdCB0aGUgcHJvamVjdCdzIGN2cyBwYWdlLAorICB3aGljaCBoYXMgZGlyZWN0aW9ucyBvbiBnZXR0aW5nIHRoZSBzb3VyY2VzLiBZb3UgY2FuIGFsc28gYnJvd3NlIHRoZQorICBDVlMgcG9vbCBmcm9tIHRoZXJlLgorCisgIElmIHlvdSBnZXQgdGhlIENWUyBzb3VyY2VzLCB5b3Ugd2lsbCBoYXZlIHRvIGNoZWNrIHRoZW0gb3V0IGludG8gYW4KKyAgZW1wdHkgZGlyZWN0b3J5LiBZb3Ugd2lsbCB0aGVuIGhhdmUgdG8gY29weSBlYWNoIGZpbGUgaW50byB0aGUKKyAgY29ycmVzcG9uZGluZyBkaXJlY3RvcnkgaW4gdGhlIGFwcHJvcHJpYXRlIGtlcm5lbCBwb29sLgorCisgIElmIHlvdSBkb24ndCBoYXZlIHRoZSBsYXRlc3Qga2VybmVsIHBvb2wsIHlvdSBjYW4gZ2V0IHRoZQorICBjb3JyZXNwb25kaW5nIHVzZXItbW9kZSBzb3VyY2VzIHdpdGgKKworCisgICAgICAgaG9zdCUgY3ZzIGNvIC1yIHZfMl8zX3ggbGludXgKKworCisKKworICB3aGVyZSAneCcgaXMgdGhlIHZlcnNpb24gaW4geW91ciBwb29sLiBOb3RlIHRoYXQgeW91IHdpbGwgbm90IGdldCB0aGUKKyAgYnVnIGZpeGVzIGFuZCBlbmhhbmNlbWVudHMgdGhhdCBoYXZlIGdvbmUgaW50byBzdWJzZXF1ZW50IHJlbGVhc2VzLgorCisKKyAgMi4yLiAgQ29tcGlsaW5nIGFuZCBpbnN0YWxsaW5nIGtlcm5lbCBtb2R1bGVzCisKKyAgVU1MIG1vZHVsZXMgYXJlIGJ1aWx0IGluIHRoZSBzYW1lIHdheSBhcyB0aGUgbmF0aXZlIGtlcm5lbCAod2l0aCB0aGUKKyAgZXhjZXB0aW9uIG9mIHRoZSAnQVJDSD11bScgdGhhdCB5b3UgYWx3YXlzIG5lZWQgZm9yIFVNTCk6CisKKworICAgICAgIGhvc3QlIG1ha2UgbW9kdWxlcyBBUkNIPXVtCisKKworCisKKyAgQW55IG1vZHVsZXMgdGhhdCB5b3Ugd2FudCB0byBsb2FkIGludG8gdGhpcyBrZXJuZWwgbmVlZCB0byBiZSBidWlsdCBpbgorICB0aGUgdXNlci1tb2RlIHBvb2wuICBNb2R1bGVzIGZyb20gdGhlIG5hdGl2ZSBrZXJuZWwgd29uJ3Qgd29yay4KKworICBZb3UgY2FuIGluc3RhbGwgdGhlbSBieSB1c2luZyBmdHAgb3Igc29tZXRoaW5nIHRvIGNvcHkgdGhlbSBpbnRvIHRoZQorICB2aXJ0dWFsIG1hY2hpbmUgYW5kIGRyb3BwaW5nIHRoZW0gaW50byAvbGliL21vZHVsZXMvYHVuYW1lIC1yYC4KKworICBZb3UgY2FuIGFsc28gZ2V0IHRoZSBrZXJuZWwgYnVpbGQgcHJvY2VzcyB0byBpbnN0YWxsIHRoZW0gYXMgZm9sbG93czoKKworICAxLiB3aXRoIHRoZSBrZXJuZWwgbm90IGJvb3RlZCwgbW91bnQgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbiB0aGUgdG9wCisgICAgIGxldmVsIG9mIHRoZSBrZXJuZWwgcG9vbDoKKworCisgICAgICAgaG9zdCUgbW91bnQgcm9vdF9mcyBtbnQgLW8gbG9vcAorCisKKworCisKKworICAyLiBydW4KKworCisgICAgICAgaG9zdCUKKyAgICAgICBtYWtlIG1vZHVsZXNfaW5zdGFsbCBJTlNUQUxMX01PRF9QQVRIPWBwd2RgL21udCBBUkNIPXVtCisKKworCisKKworCisgIDMuIHVubW91bnQgdGhlIGZpbGVzeXN0ZW0KKworCisgICAgICAgaG9zdCUgdW1vdW50IG1udAorCisKKworCisKKworICA0LiBib290IHRoZSBrZXJuZWwgb24gaXQKKworCisgIFdoZW4gdGhlIHN5c3RlbSBpcyBib290ZWQsIHlvdSBjYW4gdXNlIGluc21vZCBhcyB1c3VhbCB0byBnZXQgdGhlCisgIG1vZHVsZXMgaW50byB0aGUga2VybmVsLiAgQSBudW1iZXIgb2YgdGhpbmdzIGhhdmUgYmVlbiBsb2FkZWQgaW50byBVTUwKKyAgYXMgbW9kdWxlcywgZXNwZWNpYWxseSBmaWxlc3lzdGVtcyBhbmQgbmV0d29yayBwcm90b2NvbHMgYW5kIGZpbHRlcnMsCisgIHNvIG1vc3Qgc3ltYm9scyB3aGljaCBuZWVkIHRvIGJlIGV4cG9ydGVkIHByb2JhYmx5IGFscmVhZHkgYXJlLgorICBIb3dldmVyLCBpZiB5b3UgZG8gZmluZCBzeW1ib2xzIHRoYXQgbmVlZCBleHBvcnRpbmcsIGxldCAgdXMKKyAgPGh0dHA6Ly91c2VyLW1vZGUtbGludXguc291cmNlZm9yZ2UubmV0Lz4gIGtub3csIGFuZAorICB0aGV5J2xsIGJlICJ0YWtlbiBjYXJlIG9mIi4KKworCisKKyAgMi4zLiAgQ29tcGlsaW5nIGFuZCBpbnN0YWxsaW5nIHVtbF91dGlsaXRpZXMKKworICBNYW55IGZlYXR1cmVzIG9mIHRoZSBVTUwga2VybmVsIHJlcXVpcmUgYSB1c2VyLXNwYWNlIGhlbHBlciBwcm9ncmFtLAorICBzbyBhIHVtbF91dGlsaXRpZXMgcGFja2FnZSBpcyBkaXN0cmlidXRlZCBzZXBhcmF0ZWx5IGZyb20gdGhlIGtlcm5lbAorICBwYXRjaCB3aGljaCBwcm92aWRlcyB0aGVzZSBoZWxwZXJzLiBJbmNsdWRlZCB3aXRoaW4gdGhpcyBpczoKKworICBvICBwb3J0LWhlbHBlciAtIFVzZWQgYnkgY29uc29sZXMgd2hpY2ggY29ubmVjdCB0byB4dGVybXMgb3IgcG9ydHMKKworICBvICB0dW5jdGwgLSBDb25maWd1cmF0aW9uIHRvb2wgdG8gY3JlYXRlIGFuZCBkZWxldGUgdGFwIGRldmljZXMKKworICBvICB1bWxfbmV0IC0gU2V0dWlkIGJpbmFyeSBmb3IgYXV0b21hdGljIHRhcCBkZXZpY2UgY29uZmlndXJhdGlvbgorCisgIG8gIHVtbF9zd2l0Y2ggLSBVc2VyLXNwYWNlIHZpcnR1YWwgc3dpdGNoIHJlcXVpcmVkIGZvciBkYWVtb24KKyAgICAgdHJhbnNwb3J0CisKKyAgICAgVGhlIHVtbF91dGlsaXRpZXMgdHJlZSBpcyBjb21waWxlZCB3aXRoOgorCisKKyAgICAgICBob3N0IworICAgICAgIG1ha2UgJiYgbWFrZSBpbnN0YWxsCisKKworCisKKyAgTm90ZSB0aGF0IFVNTCBrZXJuZWwgcGF0Y2hlcyBtYXkgcmVxdWlyZSBhIHNwZWNpZmljIHZlcnNpb24gb2YgdGhlCisgIHVtbF91dGlsaXRpZXMgZGlzdHJpYnV0aW9uLiBJZiB5b3UgZG9uJ3Qga2VlcCB1cCB3aXRoIHRoZSBtYWlsaW5nCisgIGxpc3RzLCBlbnN1cmUgdGhhdCB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHJlbGVhc2Ugb2YgdW1sX3V0aWxpdGllcyBpZiB5b3UKKyAgYXJlIGV4cGVyaWVuY2luZyBwcm9ibGVtcyB3aXRoIHlvdXIgVU1MIGtlcm5lbCwgcGFydGljdWxhcmx5IHdoZW4KKyAgZGVhbGluZyB3aXRoIGNvbnNvbGVzIG9yIGNvbW1hbmQtbGluZSBzd2l0Y2hlcyB0byB0aGUgaGVscGVyIHByb2dyYW1zCisKKworCisKKworCisKKworICAzLiAgUnVubmluZyBVTUwgYW5kIGxvZ2dpbmcgaW4KKworCisKKyAgMy4xLiAgUnVubmluZyBVTUwKKworICBJdCBydW5zIG9uIDIuMi4xNSBvciBsYXRlciwgYW5kIGFsbCAyLjQga2VybmVscy4KKworCisgIEJvb3RpbmcgVU1MIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gIFNpbXBseSBydW4gJ2xpbnV4JzogaXQgd2lsbCB0cnkgdG8KKyAgbW91bnQgdGhlIGZpbGUgYHJvb3RfZnMnIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIFlvdSBkbyBub3QgbmVlZCB0bworICBydW4gaXQgYXMgcm9vdC4gIElmIHlvdXIgcm9vdCBmaWxlc3lzdGVtIGlzIG5vdCBuYW1lZCBgcm9vdF9mcycsIHRoZW4KKyAgeW91IG5lZWQgdG8gcHV0IGEgYHViZDA9cm9vdF9mc193aGF0ZXZlcicgc3dpdGNoIG9uIHRoZSBsaW51eCBjb21tYW5kCisgIGxpbmUuCisKKworICBZb3Ugd2lsbCBuZWVkIGEgZmlsZXN5c3RlbSB0byBib290IFVNTCBmcm9tLiAgVGhlcmUgYXJlIGEgbnVtYmVyCisgIGF2YWlsYWJsZSBmb3IgZG93bmxvYWQgZnJvbSAgaGVyZSAgPGh0dHA6Ly91c2VyLW1vZGUtCisgIGxpbnV4LnNvdXJjZWZvcmdlLm5ldC8+IC4gIFRoZXJlIGFyZSBhbHNvICBzZXZlcmFsIHRvb2xzCisgIDxodHRwOi8vdXNlci1tb2RlLWxpbnV4LnNvdXJjZWZvcmdlLm5ldC8+ICB3aGljaCBjYW4gYmUKKyAgdXNlZCB0byBnZW5lcmF0ZSBVTUwtY29tcGF0aWJsZSBmaWxlc3lzdGVtIGltYWdlcyBmcm9tIG1lZGlhLgorICBUaGUga2VybmVsIHdpbGwgYm9vdCB1cCBhbmQgcHJlc2VudCB5b3Ugd2l0aCBhIGxvZ2luIHByb21wdC4KKworCisgIE5vdGU6ICBJZiB0aGUgaG9zdCBpcyBjb25maWd1cmVkIHdpdGggYSAyRy8yRyBhZGRyZXNzIHNwYWNlIHNwbGl0CisgIHJhdGhlciB0aGFuIHRoZSB1c3VhbCAzRy8xRyBzcGxpdCwgdGhlbiB0aGUgcGFja2FnZWQgVU1MIGJpbmFyaWVzIHdpbGwKKyAgbm90IHJ1bi4gIFRoZXkgd2lsbCBpbW1lZGlhdGVseSBzZWdmYXVsdC4gIFNlZSBgYFVNTCBvbiAyRy8yRyBob3N0cycnCisgIGZvciB0aGUgc2Nvb3Agb24gcnVubmluZyBVTUwgb24geW91ciBzeXN0ZW0uCisKKworCisgIDMuMi4gIExvZ2dpbmcgaW4KKworCisKKyAgVGhlIHByZXBhY2thZ2VkIGZpbGVzeXN0ZW1zIGhhdmUgYSByb290IGFjY291bnQgd2l0aCBwYXNzd29yZCAncm9vdCcKKyAgYW5kIGEgdXNlciBhY2NvdW50IHdpdGggcGFzc3dvcmQgJ3VzZXInLiAgVGhlIGxvZ2luIGJhbm5lciB3aWxsCisgIGdlbmVyYWxseSB0ZWxsIHlvdSBob3cgdG8gbG9nIGluLiAgU28sIHlvdSBsb2cgaW4gYW5kIHlvdSB3aWxsIGZpbmQKKyAgeW91cnNlbGYgaW5zaWRlIGEgbGl0dGxlIHZpcnR1YWwgbWFjaGluZS4gT3VyIGZpbGVzeXN0ZW1zIGhhdmUgYQorICB2YXJpZXR5IG9mIGNvbW1hbmRzIGFuZCB1dGlsaXRpZXMgaW5zdGFsbGVkIChhbmQgaXQgaXMgZmFpcmx5IGVhc3kgdG8KKyAgYWRkIG1vcmUpLCBzbyB5b3Ugd2lsbCBoYXZlIGEgbG90IG9mIHRvb2xzIHdpdGggd2hpY2ggdG8gcG9rZSBhcm91bmQKKyAgdGhlIHN5c3RlbS4KKworICBUaGVyZSBhcmUgYSBjb3VwbGUgb2Ygb3RoZXIgd2F5cyB0byBsb2cgaW46CisKKyAgbyAgT24gYSB2aXJ0dWFsIGNvbnNvbGUKKworCisKKyAgICAgRWFjaCB2aXJ0dWFsIGNvbnNvbGUgdGhhdCBpcyBjb25maWd1cmVkIChpLmUuIHRoZSBkZXZpY2UgZXhpc3RzIGluCisgICAgIC9kZXYgYW5kIC9ldGMvaW5pdHRhYiBydW5zIGEgZ2V0dHkgb24gaXQpIHdpbGwgY29tZSB1cCBpbiBpdHMgb3duCisgICAgIHh0ZXJtLiAgSWYgeW91IGdldCB0aXJlZCBvZiB0aGUgeHRlcm1zLCByZWFkIGBgU2V0dGluZyB1cCBzZXJpYWwKKyAgICAgbGluZXMgYW5kIGNvbnNvbGVzJycgIHRvIHNlZSBob3cgdG8gYXR0YWNoIHRoZSBjb25zb2xlcyB0bworICAgICBzb21ldGhpbmcgZWxzZSwgbGlrZSBob3N0IHB0eXMuCisKKworCisgIG8gIE92ZXIgdGhlIHNlcmlhbCBsaW5lCisKKworICAgICBJbiB0aGUgYm9vdCBvdXRwdXQsIGZpbmQgYSBsaW5lIHRoYXQgbG9va3MgbGlrZToKKworCisKKyAgICAgICBzZXJpYWwgbGluZSAwIGFzc2lnbmVkIHB0eSAvZGV2L3B0eXAxCisKKworCisKKyAgQXR0YWNoIHlvdXIgZmF2b3JpdGUgdGVybWluYWwgcHJvZ3JhbSB0byB0aGUgY29ycmVzcG9uZGluZyB0dHkuICBJLmUuCisgIGZvciBtaW5pY29tLCB0aGUgY29tbWFuZCB3b3VsZCBiZQorCisKKyAgICAgICBob3N0JSBtaW5pY29tIC1vIC1wIC9kZXYvdHR5cDEKKworCisKKworCisKKyAgbyAgT3ZlciB0aGUgbmV0CisKKworICAgICBJZiB0aGUgbmV0d29yayBpcyBydW5uaW5nLCB0aGVuIHlvdSBjYW4gdGVsbmV0IHRvIHRoZSB2aXJ0dWFsCisgICAgIG1hY2hpbmUgYW5kIGxvZyBpbiB0byBpdC4gIFNlZSBgYFNldHRpbmcgdXAgdGhlIG5ldHdvcmsnJyAgdG8gbGVhcm4KKyAgICAgYWJvdXQgc2V0dGluZyB1cCBhIHZpcnR1YWwgbmV0d29yay4KKworICBXaGVuIHlvdSdyZSBkb25lIHVzaW5nIGl0LCBydW4gaGFsdCwgYW5kIHRoZSBrZXJuZWwgd2lsbCBicmluZyBpdHNlbGYKKyAgZG93biBhbmQgdGhlIHByb2Nlc3Mgd2lsbCBleGl0LgorCisKKyAgMy4zLiAgRXhhbXBsZXMKKworICBIZXJlIGFyZSBzb21lIGV4YW1wbGVzIG9mIFVNTCBpbiBhY3Rpb246CisKKyAgbyAgQSBsb2dpbiBzZXNzaW9uIDxodHRwOi8vdXNlci1tb2RlLWxpbnV4LnNvdXJjZWZvcmdlLm5ldC9sb2dpbi5odG1sPgorCisgIG8gIEEgdmlydHVhbCBuZXR3b3JrIDxodHRwOi8vdXNlci1tb2RlLWxpbnV4LnNvdXJjZWZvcmdlLm5ldC9uZXQuaHRtbD4KKworCisKKworCisKKworICA0LiAgVU1MIG9uIDJHLzJHIGhvc3RzCisKKworCisKKyAgNC4xLiAgSW50cm9kdWN0aW9uCisKKworICBNb3N0IExpbnV4IG1hY2hpbmVzIGFyZSBjb25maWd1cmVkIHNvIHRoYXQgdGhlIGtlcm5lbCBvY2N1cGllcyB0aGUKKyAgdXBwZXIgMUcgKDB4YzAwMDAwMDAgLSAweGZmZmZmZmZmKSBvZiB0aGUgNEcgYWRkcmVzcyBzcGFjZSBhbmQKKyAgcHJvY2Vzc2VzIHVzZSB0aGUgbG93ZXIgM0cgKDB4MDAwMDAwMDAgLSAweGJmZmZmZmZmKS4gIEhvd2V2ZXIsIHNvbWUKKyAgbWFjaGluZSBhcmUgY29uZmlndXJlZCB3aXRoIGEgMkcvMkcgc3BsaXQsIHdpdGggdGhlIGtlcm5lbCBvY2N1cHlpbmcKKyAgdGhlIHVwcGVyIDJHICgweDgwMDAwMDAwIC0gMHhmZmZmZmZmZikgYW5kIHByb2Nlc3NlcyB1c2luZyB0aGUgbG93ZXIKKyAgMkcgKDB4MDAwMDAwMDAgLSAweDdmZmZmZmZmKS4KKworCisKKworICA0LjIuICBUaGUgcHJvYmxlbQorCisKKyAgVGhlIHByZWJ1aWx0IFVNTCBiaW5hcmllcyBvbiB0aGlzIHNpdGUgd2lsbCBub3QgcnVuIG9uIDJHLzJHIGhvc3RzCisgIGJlY2F1c2UgVU1MIG9jY3VwaWVzIHRoZSB1cHBlciAuNUcgb2YgdGhlIDNHIHByb2Nlc3MgYWRkcmVzcyBzcGFjZQorICAoMHhhMDAwMDAwMCAtIDB4YmZmZmZmZmYpLiAgT2J2aW91c2x5LCBvbiAyRy8yRyBob3N0cywgdGhpcyBpcyByaWdodAorICBpbiB0aGUgbWlkZGxlIG9mIHRoZSBrZXJuZWwgYWRkcmVzcyBzcGFjZSwgc28gVU1MIHdvbid0IGV2ZW4gbG9hZCAtIGl0CisgIHdpbGwgaW1tZWRpYXRlbHkgc2VnZmF1bHQuCisKKworCisKKyAgNC4zLiAgVGhlIHNvbHV0aW9uCisKKworICBUaGUgZml4IGZvciB0aGlzIGlzIHRvIHJlYnVpbGQgVU1MIGZyb20gc291cmNlIGFmdGVyIGVuYWJsaW5nCisgIENPTkZJR19IT1NUXzJHXzJHICh1bmRlciAnR2VuZXJhbCBTZXR1cCcpLiAgVGhpcyB3aWxsIGNhdXNlIFVNTCB0bworICBsb2FkIGl0c2VsZiBpbiB0aGUgdG9wIC41RyBvZiB0aGF0IHNtYWxsZXIgcHJvY2VzcyBhZGRyZXNzIHNwYWNlLAorICB3aGVyZSBpdCB3aWxsIHJ1biBmaW5lLiAgU2VlIGBgQ29tcGlsaW5nIHRoZSBrZXJuZWwgYW5kIG1vZHVsZXMnJyAgaWYKKyAgeW91IG5lZWQgaGVscCBidWlsZGluZyBVTUwgZnJvbSBzb3VyY2UuCisKKworCisKKworCisKKworCisKKyAgNS4gIFNldHRpbmcgdXAgc2VyaWFsIGxpbmVzIGFuZCBjb25zb2xlcworCisKKyAgSXQgaXMgcG9zc2libGUgdG8gYXR0YWNoIFVNTCBzZXJpYWwgbGluZXMgYW5kIGNvbnNvbGVzIHRvIG1hbnkgdHlwZXMKKyAgb2YgaG9zdCBJL08gY2hhbm5lbHMgYnkgc3BlY2lmeWluZyB0aGVtIG9uIHRoZSBjb21tYW5kIGxpbmUuCisKKworICBZb3UgY2FuIGF0dGFjaCB0aGVtIHRvIGhvc3QgcHR5cywgdHR5cywgZmlsZSBkZXNjcmlwdG9ycywgYW5kIHBvcnRzLgorICBUaGlzIGFsbG93cyB5b3UgdG8gZG8gdGhpbmdzIGxpa2UKKworICBvICBoYXZlIGEgVU1MIGNvbnNvbGUgYXBwZWFyIG9uIGFuIHVudXNlZCBob3N0IGNvbnNvbGUsCisKKyAgbyAgaG9vayB0d28gdmlydHVhbCBtYWNoaW5lcyB0b2dldGhlciBieSBoYXZpbmcgb25lIGF0dGFjaCB0byBhIHB0eQorICAgICBhbmQgaGF2aW5nIHRoZSBvdGhlciBhdHRhY2ggdG8gdGhlIGNvcnJlc3BvbmRpbmcgdHR5CisKKyAgbyAgbWFrZSBhIHZpcnR1YWwgbWFjaGluZSBhY2Nlc3NpYmxlIGZyb20gdGhlIG5ldCBieSBhdHRhY2hpbmcgYQorICAgICBjb25zb2xlIHRvIGEgcG9ydCBvbiB0aGUgaG9zdC4KKworCisgIFRoZSBnZW5lcmFsIGZvcm1hdCBvZiB0aGUgY29tbWFuZCBsaW5lIG9wdGlvbiBpcyBkZXZpY2U9Y2hhbm5lbC4KKworCisKKyAgNS4xLiAgU3BlY2lmeWluZyB0aGUgZGV2aWNlCisKKyAgRGV2aWNlcyBhcmUgc3BlY2lmaWVkIHdpdGggImNvbiIgb3IgInNzbCIgKGNvbnNvbGUgb3Igc2VyaWFsIGxpbmUsCisgIHJlc3BlY3RpdmVseSksIG9wdGlvbmFsbHkgd2l0aCBhIGRldmljZSBudW1iZXIgaWYgeW91IGFyZSB0YWxraW5nCisgIGFib3V0IGEgc3BlY2lmaWMgZGV2aWNlLgorCisKKyAgVXNpbmcganVzdCAiY29uIiBvciAic3NsIiBkZXNjcmliZXMgYWxsIG9mIHRoZSBjb25zb2xlcyBvciBzZXJpYWwKKyAgbGluZXMuICBJZiB5b3Ugd2FudCB0byB0YWxrIGFib3V0IGNvbnNvbGUgIzMgb3Igc2VyaWFsIGxpbmUgIzEwLCB0aGV5CisgIHdvdWxkIGJlICJjb24zIiBhbmQgInNzbDEwIiwgcmVzcGVjdGl2ZWx5LgorCisKKyAgQSBzcGVjaWZpYyBkZXZpY2UgbmFtZSB3aWxsIG92ZXJyaWRlIGEgbGVzcyBnZW5lcmFsICJjb249IiBvciAic3NsPSIuCisgIFNvLCBmb3IgZXhhbXBsZSwgeW91IGNhbiBhc3NpZ24gYSBwdHkgdG8gZWFjaCBvZiB0aGUgc2VyaWFsIGxpbmVzCisgIGV4Y2VwdCBmb3IgdGhlIGZpcnN0IHR3byBsaWtlIHRoaXM6CisKKworICAgICAgICBzc2w9cHR5IHNzbDA9dHR5Oi9kZXYvdHR5MCBzc2wxPXR0eTovZGV2L3R0eTEKKworCisKKworICBUaGUgc3BlY2lmaWNpdHkgb2YgdGhlIGRldmljZSBuYW1lIGlzIGFsbCB0aGF0IG1hdHRlcnM7IG9yZGVyIG9uIHRoZQorICBjb21tYW5kIGxpbmUgaXMgaXJyZWxldmFudC4KKworCisKKyAgNS4yLiAgU3BlY2lmeWluZyB0aGUgY2hhbm5lbAorCisgIFRoZXJlIGFyZSBhIG51bWJlciBvZiBkaWZmZXJlbnQgdHlwZXMgb2YgY2hhbm5lbHMgdG8gYXR0YWNoIGEgVU1MCisgIGRldmljZSB0bywgZWFjaCB3aXRoIGEgZGlmZmVyZW50IHdheSBvZiBzcGVjaWZ5aW5nIGV4YWN0bHkgd2hhdCB0bworICBhdHRhY2ggdG8uCisKKyAgbyAgcHNldWRvLXRlcm1pbmFscyAtIGRldmljZT1wdHkgcHRzIHRlcm1pbmFscyAtIGRldmljZT1wdHMKKworCisgICAgIFRoaXMgd2lsbCBjYXVzZSBVTUwgdG8gYWxsb2NhdGUgYSBmcmVlIGhvc3QgcHNldWRvLXRlcm1pbmFsIGZvciB0aGUKKyAgICAgZGV2aWNlLiAgVGhlIHRlcm1pbmFsIHRoYXQgaXQgZ290IHdpbGwgYmUgYW5ub3VuY2VkIGluIHRoZSBib290CisgICAgIGxvZy4gIFlvdSBhY2Nlc3MgaXQgYnkgYXR0YWNoaW5nIGEgdGVybWluYWwgcHJvZ3JhbSB0byB0aGUKKyAgICAgY29ycmVzcG9uZGluZyB0dHk6CisKKyAgbyAgc2NyZWVuIC9kZXYvcHRzL24KKworICBvICBzY3JlZW4gL2Rldi90dHl4eAorCisgIG8gIG1pbmljb20gLW8gLXAgL2Rldi90dHl4eCAtIG1pbmljb20gc2VlbXMgbm90IGFibGUgdG8gaGFuZGxlIHB0cworICAgICBkZXZpY2VzCisKKyAgbyAga2VybWl0IC0gc3RhcnQgaXQgdXAsICdvcGVuJyB0aGUgZGV2aWNlLCB0aGVuICdjb25uZWN0JworCisKKworCisKKyAgbyAgdGVybWluYWxzIC0gZGV2aWNlPXR0eTp0dHkgZGV2aWNlIGZpbGUKKworCisgICAgIFRoaXMgd2lsbCBtYWtlIFVNTCBhdHRhY2ggdGhlIGRldmljZSB0byB0aGUgc3BlY2lmaWVkIHR0eSAoaS5lCisKKworICAgICAgICBjb24xPXR0eTovZGV2L3R0eTMKKworCisKKworICB3aWxsIGF0dGFjaCBVTUwncyBjb25zb2xlIDEgdG8gdGhlIGhvc3QncyAvZGV2L3R0eTMpLiAgSWYgdGhlIHR0eSB0aGF0CisgIHlvdSBzcGVjaWZ5IGlzIHRoZSBzbGF2ZSBlbmQgb2YgYSB0dHkvcHR5IHBhaXIsIHNvbWV0aGluZyBlbHNlIG11c3QKKyAgaGF2ZSBhbHJlYWR5IG9wZW5lZCB0aGUgY29ycmVzcG9uZGluZyBwdHkgaW4gb3JkZXIgZm9yIHRoaXMgdG8gd29yay4KKworCisKKworCisgIG8gIHh0ZXJtcyAtIGRldmljZT14dGVybQorCisKKyAgICAgVU1MIHdpbGwgcnVuIGFuIHh0ZXJtIGFuZCB0aGUgZGV2aWNlIHdpbGwgYmUgYXR0YWNoZWQgdG8gaXQuCisKKworCisKKworICBvICBQb3J0IC0gZGV2aWNlPXBvcnQ6cG9ydCBudW1iZXIKKworCisgICAgIFRoaXMgd2lsbCBhdHRhY2ggdGhlIFVNTCBkZXZpY2VzIHRvIHRoZSBzcGVjaWZpZWQgaG9zdCBwb3J0LgorICAgICBBdHRhY2hpbmcgY29uc29sZSAxIHRvIHRoZSBob3N0J3MgcG9ydCA5MDAwIHdvdWxkIGJlIGRvbmUgbGlrZQorICAgICB0aGlzOgorCisKKyAgICAgICAgY29uMT1wb3J0OjkwMDAKKworCisKKworICBBdHRhY2hpbmcgYWxsIHRoZSBzZXJpYWwgbGluZXMgdG8gdGhhdCBwb3J0IHdvdWxkIGJlIGRvbmUgc2ltaWxhcmx5OgorCisKKyAgICAgICAgc3NsPXBvcnQ6OTAwMAorCisKKworCisgIFlvdSBhY2Nlc3MgdGhlc2UgZGV2aWNlcyBieSB0ZWxuZXR0aW5nIHRvIHRoYXQgcG9ydC4gIEVhY2ggYWN0aXZlIHRlbC0KKyAgbmV0IHNlc3Npb24gZ2V0cyBhIGRpZmZlcmVudCBkZXZpY2UuICBJZiB0aGVyZSBhcmUgbW9yZSB0ZWxuZXRzIHRvIGEKKyAgcG9ydCB0aGFuIFVNTCBkZXZpY2VzIGF0dGFjaGVkIHRvIGl0LCB0aGVuIHRoZSBleHRyYSB0ZWxuZXQgc2Vzc2lvbnMKKyAgd2lsbCBibG9jayB1bnRpbCBhbiBleGlzdGluZyB0ZWxuZXQgZGV0YWNoZXMsIG9yIHVudGlsIGFub3RoZXIgZGV2aWNlCisgIGJlY29tZXMgYWN0aXZlIChpLmUuIGJ5IGJlaW5nIGFjdGl2YXRlZCBpbiAvZXRjL2luaXR0YWIpLgorCisgIFRoaXMgY2hhbm5lbCBoYXMgdGhlIGFkdmFudGFnZSB0aGF0IHlvdSBjYW4gYm90aCBhdHRhY2ggbXVsdGlwbGUgVU1MCisgIGRldmljZXMgdG8gaXQgYW5kIGtub3cgaG93IHRvIGFjY2VzcyB0aGVtIHdpdGhvdXQgcmVhZGluZyB0aGUgVU1MIGJvb3QKKyAgbG9nLiAgSXQgaXMgYWxzbyB1bmlxdWUgaW4gYWxsb3dpbmcgYWNjZXNzIHRvIGEgVU1MIGZyb20gcmVtb3RlCisgIG1hY2hpbmVzIHdpdGhvdXQgcmVxdWlyaW5nIHRoYXQgdGhlIFVNTCBiZSBuZXR3b3JrZWQuICBUaGlzIGNvdWxkIGJlCisgIHVzZWZ1bCBpbiBhbGxvd2luZyBwdWJsaWMgYWNjZXNzIHRvIFVNTHMgYmVjYXVzZSB0aGV5IHdvdWxkIGJlCisgIGFjY2Vzc2libGUgZnJvbSB0aGUgbmV0LCBidXQgd291bGRuJ3QgbmVlZCBhbnkga2luZCBvZiBuZXR3b3JrCisgIGZpbHRlcmluZyBvciBhY2Nlc3MgY29udHJvbCBiZWNhdXNlIHRoZXkgd291bGQgaGF2ZSBubyBuZXR3b3JrIGFjY2Vzcy4KKworCisgIElmIHlvdSBhdHRhY2ggdGhlIG1haW4gY29uc29sZSB0byBhIHBvcnRhbCwgdGhlbiB0aGUgVU1MIGJvb3Qgd2lsbAorICBhcHBlYXIgdG8gaGFuZy4gIEluIHJlYWxpdHksIGl0J3Mgd2FpdGluZyBmb3IgYSB0ZWxuZXQgdG8gY29ubmVjdCwgYXQKKyAgd2hpY2ggcG9pbnQgdGhlIGJvb3Qgd2lsbCBwcm9jZWVkLgorCisKKworCisKKyAgbyAgYWxyZWFkeS1leGlzdGluZyBmaWxlIGRlc2NyaXB0b3JzIC0gZGV2aWNlPWZpbGUgZGVzY3JpcHRvcgorCisKKyAgICAgSWYgeW91IHNldCB1cCBhIGZpbGUgZGVzY3JpcHRvciBvbiB0aGUgVU1MIGNvbW1hbmQgbGluZSwgeW91IGNhbgorICAgICBhdHRhY2ggYSBVTUwgZGV2aWNlIHRvIGl0LiAgVGhpcyBpcyBtb3N0IGNvbW1vbmx5IHVzZWQgdG8gcHV0IHRoZQorICAgICBtYWluIGNvbnNvbGUgYmFjayBvbiBzdGRpbiBhbmQgc3Rkb3V0IGFmdGVyIGFzc2lnbmluZyBhbGwgdGhlIG90aGVyCisgICAgIGNvbnNvbGVzIHRvIHNvbWV0aGluZyBlbHNlOgorCisKKyAgICAgICAgY29uMD1mZDowLGZkOjEgY29uPXB0cworCisKKworCisKKworCisKKyAgbyAgTm90aGluZyAtIGRldmljZT1udWxsCisKKworICAgICBUaGlzIGFsbG93cyB0aGUgZGV2aWNlIHRvIGJlIG9wZW5lZCwgaW4gY29udHJhc3QgdG8gJ25vbmUnLCBidXQKKyAgICAgcmVhZHMgd2lsbCBibG9jaywgYW5kIHdyaXRlcyB3aWxsIHN1Y2NlZWQgYW5kIHRoZSBkYXRhIHdpbGwgYmUKKyAgICAgdGhyb3duIG91dC4KKworCisKKworCisgIG8gIE5vbmUgLSBkZXZpY2U9bm9uZQorCisKKyAgICAgVGhpcyBjYXVzZXMgdGhlIGRldmljZSB0byBkaXNhcHBlYXIuCisKKworCisgIFlvdSBjYW4gYWxzbyBzcGVjaWZ5IGRpZmZlcmVudCBpbnB1dCBhbmQgb3V0cHV0IGNoYW5uZWxzIGZvciBhIGRldmljZQorICBieSBwdXR0aW5nIGEgY29tbWEgYmV0d2VlbiB0aGVtOgorCisKKyAgICAgICAgc3NsMz10dHk6L2Rldi90dHkyLHh0ZXJtCisKKworCisKKyAgd2lsbCBjYXVzZSBzZXJpYWwgbGluZSAzIHRvIGFjY2VwdCBpbnB1dCBvbiB0aGUgaG9zdCdzIC9kZXYvdHR5MiBhbmQKKyAgZGlzcGxheSBvdXRwdXQgb24gYW4geHRlcm0uICBUaGF0J3MgYSBzaWxseSBleGFtcGxlIC0gdGhlIG1vc3QgY29tbW9uCisgIHVzZSBvZiB0aGlzIHN5bnRheCBpcyB0byByZWF0dGFjaCB0aGUgbWFpbiBjb25zb2xlIHRvIHN0ZGluIGFuZCBzdGRvdXQKKyAgYXMgc2hvd24gYWJvdmUuCisKKworICBJZiB5b3UgZGVjaWRlIHRvIG1vdmUgdGhlIG1haW4gY29uc29sZSBhd2F5IGZyb20gc3RkaW4vc3Rkb3V0LCB0aGUKKyAgaW5pdGlhbCBib290IG91dHB1dCB3aWxsIGFwcGVhciBpbiB0aGUgdGVybWluYWwgdGhhdCB5b3UncmUgcnVubmluZworICBVTUwgaW4uICBIb3dldmVyLCBvbmNlIHRoZSBjb25zb2xlIGRyaXZlciBoYXMgYmVlbiBvZmZpY2lhbGx5CisgIGluaXRpYWxpemVkLCB0aGVuIHRoZSBib290IG91dHB1dCB3aWxsIHN0YXJ0IGFwcGVhcmluZyB3aGVyZXZlciB5b3UKKyAgc3BlY2lmaWVkIHRoYXQgY29uc29sZSAwIHNob3VsZCBiZS4gIFRoYXQgZGV2aWNlIHdpbGwgcmVjZWl2ZSBhbGwKKyAgc3Vic2VxdWVudCBvdXRwdXQuCisKKworCisgIDUuMy4gIEV4YW1wbGVzCisKKyAgVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGludGVyZXN0aW5nIHRoaW5ncyB5b3UgY2FuIGRvIHdpdGggdGhpcworICBjYXBhYmlsaXR5LgorCisKKyAgRmlyc3QsIHRoaXMgaXMgaG93IHlvdSBnZXQgcmlkIG9mIHRob3NlIGJsZWVkaW5nIGNvbnNvbGUgeHRlcm1zIGJ5CisgIGF0dGFjaGluZyB0aGVtIHRvIGhvc3QgcHR5czoKKworCisgICAgICAgIGNvbj1wdHkgY29uMD1mZDowLGZkOjEKKworCisKKworICBUaGlzIHdpbGwgbWFrZSBhIFVNTCBjb25zb2xlIHRha2Ugb3ZlciBhbiB1bnVzZWQgaG9zdCB2aXJ0dWFsIGNvbnNvbGUsCisgIHNvIHRoYXQgd2hlbiB5b3Ugc3dpdGNoIHRvIGl0LCB5b3Ugd2lsbCBzZWUgdGhlIFVNTCBsb2dpbiBwcm9tcHQKKyAgcmF0aGVyIHRoYW4gdGhlIGhvc3QgbG9naW4gcHJvbXB0OgorCisKKyAgICAgICAgY29uMT10dHk6L2Rldi90dHk2CisKKworCisKKyAgWW91IGNhbiBhdHRhY2ggdHdvIHZpcnR1YWwgbWFjaGluZXMgdG9nZXRoZXIgd2l0aCB3aGF0IGFtb3VudHMgdG8gYQorICBzZXJpYWwgbGluZSBhcyBmb2xsb3dzOgorCisgIFJ1biBvbmUgVU1MIHdpdGggYSBzZXJpYWwgbGluZSBhdHRhY2hlZCB0byBhIHB0eSAtCisKKworICAgICAgICBzc2wxPXB0eQorCisKKworCisgIExvb2sgYXQgdGhlIGJvb3QgbG9nIHRvIHNlZSB3aGF0IHB0eSBpdCBnb3QgKHRoaXMgZXhhbXBsZSB3aWxsIGFzc3VtZQorICB0aGF0IGl0IGdvdCAvZGV2L3B0eXAxKS4KKworICBCb290IHRoZSBvdGhlciBVTUwgd2l0aCBhIHNlcmlhbCBsaW5lIGF0dGFjaGVkIHRvIHRoZSBjb3JyZXNwb25kaW5nCisgIHR0eSAtCisKKworICAgICAgICBzc2wxPXR0eTovZGV2L3R0eXAxCisKKworCisKKyAgTG9nIGluLCBtYWtlIHN1cmUgdGhhdCBpdCBoYXMgbm8gZ2V0dHkgb24gdGhhdCBzZXJpYWwgbGluZSwgYXR0YWNoIGEKKyAgdGVybWluYWwgcHJvZ3JhbSBsaWtlIG1pbmljb20gdG8gaXQsIGFuZCB5b3Ugc2hvdWxkIHNlZSB0aGUgbG9naW4KKyAgcHJvbXB0IG9mIHRoZSBvdGhlciB2aXJ0dWFsIG1hY2hpbmUuCisKKworICA2LiAgU2V0dGluZyB1cCB0aGUgbmV0d29yaworCisKKworICBUaGlzIHBhZ2UgZGVzY3JpYmVzIGhvdyB0byBzZXQgdXAgdGhlIHZhcmlvdXMgdHJhbnNwb3J0cyBhbmQgdG8KKyAgcHJvdmlkZSBhIFVNTCBpbnN0YW5jZSB3aXRoIG5ldHdvcmsgYWNjZXNzIHRvIHRoZSBob3N0LCBvdGhlciBtYWNoaW5lcworICBvbiB0aGUgbG9jYWwgbmV0LCBhbmQgdGhlIHJlc3Qgb2YgdGhlIG5ldC4KKworCisgIEFzIG9mIDIuNC41LCBVTUwgbmV0d29ya2luZyBoYXMgYmVlbiBjb21wbGV0ZWx5IHJlZG9uZSB0byBtYWtlIGl0IG11Y2gKKyAgZWFzaWVyIHRvIHNldCB1cCwgZml4IGJ1Z3MsIGFuZCBhZGQgbmV3IGZlYXR1cmVzLgorCisKKyAgVGhlcmUgaXMgYSBuZXcgaGVscGVyLCB1bWxfbmV0LCB3aGljaCBkb2VzIHRoZSBob3N0IHNldHVwIHRoYXQKKyAgcmVxdWlyZXMgcm9vdCBwcml2aWxlZ2VzLgorCisKKyAgVGhlcmUgYXJlIGN1cnJlbnRseSBmaXZlIHRyYW5zcG9ydCB0eXBlcyBhdmFpbGFibGUgZm9yIGEgVU1MIHZpcnR1YWwKKyAgbWFjaGluZSB0byBleGNoYW5nZSBwYWNrZXRzIHdpdGggb3RoZXIgaG9zdHM6CisKKyAgbyAgZXRoZXJ0YXAKKworICBvICBUVU4vVEFQCisKKyAgbyAgTXVsdGljYXN0CisKKyAgbyAgYSBzd2l0Y2ggZGFlbW9uCisKKyAgbyAgc2xpcAorCisgIG8gIHNsaXJwCisKKyAgbyAgcGNhcAorCisgICAgIFRoZSBUVU4vVEFQLCBldGhlcnRhcCwgc2xpcCwgYW5kIHNsaXJwIHRyYW5zcG9ydHMgYWxsb3cgYSBVTUwKKyAgICAgaW5zdGFuY2UgdG8gZXhjaGFuZ2UgcGFja2V0cyB3aXRoIHRoZSBob3N0LiAgVGhleSBtYXkgYmUgZGlyZWN0ZWQKKyAgICAgdG8gdGhlIGhvc3Qgb3IgdGhlIGhvc3QgbWF5IGp1c3QgYWN0IGFzIGEgcm91dGVyIHRvIHByb3ZpZGUgYWNjZXNzCisgICAgIHRvIG90aGVyIHBoeXNpY2FsIG9yIHZpcnR1YWwgbWFjaGluZXMuCisKKworICBUaGUgcGNhcCB0cmFuc3BvcnQgaXMgYSBzeW50aGV0aWMgcmVhZC1vbmx5IGludGVyZmFjZSwgdXNpbmcgdGhlCisgIGxpYnBjYXAgYmluYXJ5IHRvIGNvbGxlY3QgcGFja2V0cyBmcm9tIGludGVyZmFjZXMgb24gdGhlIGhvc3QgYW5kCisgIGZpbHRlciB0aGVtLiAgVGhpcyBpcyB1c2VmdWwgZm9yIGJ1aWxkaW5nIHByZWNvbmZpZ3VyZWQgdHJhZmZpYworICBtb25pdG9ycyBvciBzbmlmZmVycy4KKworCisgIFRoZSBkYWVtb24gYW5kIG11bHRpY2FzdCB0cmFuc3BvcnRzIHByb3ZpZGUgYSBjb21wbGV0ZWx5IHZpcnR1YWwKKyAgbmV0d29yayB0byBvdGhlciB2aXJ0dWFsIG1hY2hpbmVzLiAgVGhpcyBuZXR3b3JrIGlzIGNvbXBsZXRlbHkKKyAgZGlzY29ubmVjdGVkIGZyb20gdGhlIHBoeXNpY2FsIG5ldHdvcmsgdW5sZXNzIG9uZSBvZiB0aGUgdmlydHVhbAorICBtYWNoaW5lcyBvbiBpdCBpcyBhY3RpbmcgYXMgYSBnYXRld2F5LgorCisKKyAgV2l0aCBzbyBtYW55IGhvc3QgdHJhbnNwb3J0cywgd2hpY2ggb25lIHNob3VsZCB5b3UgdXNlPyAgSGVyZSdzIHdoZW4KKyAgeW91IHNob3VsZCB1c2UgZWFjaCBvbmU6CisKKyAgbyAgZXRoZXJ0YXAgLSBpZiB5b3Ugd2FudCBhY2Nlc3MgdG8gdGhlIGhvc3QgbmV0d29ya2luZyBhbmQgaXQgaXMKKyAgICAgcnVubmluZyAyLjIKKworICBvICBUVU4vVEFQIC0gaWYgeW91IHdhbnQgYWNjZXNzIHRvIHRoZSBob3N0IG5ldHdvcmtpbmcgYW5kIGl0IGlzCisgICAgIHJ1bm5pbmcgMi40LiAgQWxzbywgdGhlIFRVTi9UQVAgdHJhbnNwb3J0IGlzIGFibGUgdG8gdXNlIGEKKyAgICAgcHJlY29uZmlndXJlZCBkZXZpY2UsIGFsbG93aW5nIGl0IHRvIGF2b2lkIHVzaW5nIHRoZSBzZXR1aWQgdW1sX25ldAorICAgICBoZWxwZXIsIHdoaWNoIGlzIGEgc2VjdXJpdHkgYWR2YW50YWdlLgorCisgIG8gIE11bHRpY2FzdCAtIGlmIHlvdSB3YW50IGEgcHVyZWx5IHZpcnR1YWwgbmV0d29yayBhbmQgeW91IGRvbid0IHdhbnQKKyAgICAgdG8gc2V0IHVwIGFueXRoaW5nIGJ1dCB0aGUgVU1MCisKKyAgbyAgYSBzd2l0Y2ggZGFlbW9uIC0gaWYgeW91IHdhbnQgYSBwdXJlbHkgdmlydHVhbCBuZXR3b3JrIGFuZCB5b3UKKyAgICAgZG9uJ3QgbWluZCBydW5uaW5nIHRoZSBkYWVtb24gaW4gb3JkZXIgdG8gZ2V0IHNvbWV3aGF0IGJldHRlcgorICAgICBwZXJmb3JtYW5jZQorCisgIG8gIHNsaXAgLSB0aGVyZSBpcyBubyBwYXJ0aWN1bGFyIHJlYXNvbiB0byBydW4gdGhlIHNsaXAgYmFja2VuZCB1bmxlc3MKKyAgICAgZXRoZXJ0YXAgYW5kIFRVTi9UQVAgYXJlIGp1c3Qgbm90IGF2YWlsYWJsZSBmb3Igc29tZSByZWFzb24KKworICBvICBzbGlycCAtIGlmIHlvdSBkb24ndCBoYXZlIHJvb3QgYWNjZXNzIG9uIHRoZSBob3N0IHRvIHNldHVwCisgICAgIG5ldHdvcmtpbmcsIG9yIGlmIHlvdSBkb24ndCB3YW50IHRvIGFsbG9jYXRlIGFuIElQIHRvIHlvdXIgVU1MCisKKyAgbyAgcGNhcCAtIG5vdCBtdWNoIHVzZSBmb3IgYWN0dWFsIG5ldHdvcmsgY29ubmVjdGl2aXR5LCBidXQgZ3JlYXQgZm9yCisgICAgIG1vbml0b3JpbmcgdHJhZmZpYyBvbiB0aGUgaG9zdAorCisgICAgIEV0aGVydGFwIGlzIGF2YWlsYWJsZSBvbiAyLjQgYW5kIHdvcmtzIGZpbmUuICBUVU4vVEFQIGlzIHByZWZlcnJlZAorICAgICB0byBpdCBiZWNhdXNlIGl0IGhhcyBiZXR0ZXIgcGVyZm9ybWFuY2UgYW5kIGV0aGVydGFwIGlzIG9mZmljaWFsbHkKKyAgICAgY29uc2lkZXJlZCBvYnNvbGV0ZSBpbiAyLjQuICBBbHNvLCB0aGUgcm9vdCBoZWxwZXIgb25seSBuZWVkcyB0bworICAgICBydW4gb2NjYXNpb25hbGx5IGZvciBUVU4vVEFQLCByYXRoZXIgdGhhbiBoYW5kbGluZyBldmVyeSBwYWNrZXQsIGFzCisgICAgIGl0IGRvZXMgd2l0aCBldGhlcnRhcC4gIFRoaXMgaXMgYSBzbGlnaHQgc2VjdXJpdHkgYWR2YW50YWdlIHNpbmNlCisgICAgIGl0IHByb3ZpZGVzIGZld2VyIG9wcG9ydHVuaXRpZXMgZm9yIGEgbmFzdHkgVU1MIHVzZXIgdG8gc29tZWhvdworICAgICBleHBsb2l0IHRoZSBoZWxwZXIncyByb290IHByaXZpbGVnZXMuCisKKworICA2LjEuICBHZW5lcmFsIHNldHVwCisKKyAgRmlyc3QsIHlvdSBtdXN0IGhhdmUgdGhlIHZpcnR1YWwgbmV0d29yayBlbmFibGVkIGluIHlvdXIgVU1MLiAgSWYgYXJlCisgIHJ1bm5pbmcgYSBwcmVidWlsdCBrZXJuZWwgZnJvbSB0aGlzIHNpdGUsIGV2ZXJ5dGhpbmcgaXMgYWxyZWFkeQorICBlbmFibGVkLiAgSWYgeW91IGJ1aWxkIHRoZSBrZXJuZWwgeW91cnNlbGYsIHVuZGVyIHRoZSAiTmV0d29yayBkZXZpY2UKKyAgc3VwcG9ydCIgbWVudSwgZW5hYmxlICJOZXR3b3JrIGRldmljZSBzdXBwb3J0IiwgYW5kIHRoZW4gdGhlIHRocmVlCisgIHRyYW5zcG9ydHMuCisKKworICBUaGUgbmV4dCBzdGVwIGlzIHRvIHByb3ZpZGUgYSBuZXR3b3JrIGRldmljZSB0byB0aGUgdmlydHVhbCBtYWNoaW5lLgorICBUaGlzIGlzIGRvbmUgYnkgZGVzY3JpYmluZyBpdCBvbiB0aGUga2VybmVsIGNvbW1hbmQgbGluZS4KKworICBUaGUgZ2VuZXJhbCBmb3JtYXQgaXMKKworCisgICAgICAgZXRoIDxuPiA9IDx0cmFuc3BvcnQ+ICwgPHRyYW5zcG9ydCBhcmdzPgorCisKKworCisgIEZvciBleGFtcGxlLCBhIHZpcnR1YWwgZXRoZXJuZXQgZGV2aWNlIG1heSBiZSBhdHRhY2hlZCB0byBhIGhvc3QKKyAgZXRoZXJ0YXAgZGV2aWNlIGFzIGZvbGxvd3M6CisKKworICAgICAgIGV0aDA9ZXRoZXJ0YXAsdGFwMCxmZTpmZDowOjA6MDoxLDE5Mi4xNjguMC4yNTQKKworCisKKworICBUaGlzIHNldHMgdXAgZXRoMCBpbnNpZGUgdGhlIHZpcnR1YWwgbWFjaGluZSB0byBhdHRhY2ggaXRzZWxmIHRvIHRoZQorICBob3N0IC9kZXYvdGFwMCwgYXNzaWducyBpdCBhbiBldGhlcm5ldCBhZGRyZXNzLCBhbmQgYXNzaWducyB0aGUgaG9zdAorICB0YXAwIGludGVyZmFjZSBhbiBJUCBhZGRyZXNzLgorCisKKworICBOb3RlIHRoYXQgdGhlIElQIGFkZHJlc3MgeW91IGFzc2lnbiB0byB0aGUgaG9zdCBlbmQgb2YgdGhlIHRhcCBkZXZpY2UKKyAgbXVzdCBiZSBkaWZmZXJlbnQgdGhhbiB0aGUgSVAgeW91IGFzc2lnbiB0byB0aGUgZXRoIGRldmljZSBpbnNpZGUgVU1MLgorICBJZiB5b3UgYXJlIHNob3J0IG9uIElQcyBhbmQgZG9uJ3Qgd2FudCB0byBjb25zdW1lIHR3byBwZXIgVU1MLCB0aGVuCisgIHlvdSBjYW4gcmV1c2UgdGhlIGhvc3QncyBldGggSVAgYWRkcmVzcyBmb3IgdGhlIGhvc3QgZW5kcyBvZiB0aGUgdGFwCisgIGRldmljZXMuICBJbnRlcm5hbGx5LCB0aGUgVU1McyBtdXN0IHN0aWxsIGdldCB1bmlxdWUgSVBzIGZvciB0aGVpciBldGgKKyAgZGV2aWNlcy4gIFlvdSBjYW4gYWxzbyBnaXZlIHRoZSBVTUxzIG5vbi1yb3V0YWJsZSBJUHMgKDE5Mi4xNjgueC54IG9yCisgIDEwLngueC54KSBhbmQgaGF2ZSB0aGUgaG9zdCBtYXNxdWVyYWRlIHRoZW0uICBUaGlzIHdpbGwgbGV0IG91dGdvaW5nCisgIGNvbm5lY3Rpb25zIHdvcmssIGJ1dCBpbmNvbWluZyBjb25uZWN0aW9ucyB3b24ndCB3aXRob3V0IG1vcmUgd29yaywKKyAgc3VjaCBhcyBwb3J0IGZvcndhcmRpbmcgZnJvbSB0aGUgaG9zdC4KKyAgQWxzbyBub3RlIHRoYXQgd2hlbiB5b3UgY29uZmlndXJlIHRoZSBob3N0IHNpZGUgb2YgYW4gaW50ZXJmYWNlLCBpdCBpcworICBvbmx5IGFjdGluZyBhcyBhIGdhdGV3YXkuICBJdCB3aWxsIHJlc3BvbmQgdG8gcGluZ3Mgc2VudCB0byBpdAorICBsb2NhbGx5LCBidXQgaXMgbm90IHVzZWZ1bCB0byBkbyB0aGF0IHNpbmNlIGl0J3MgYSBob3N0IGludGVyZmFjZS4KKyAgWW91IGFyZSBub3QgdGFsa2luZyB0byB0aGUgVU1MIHdoZW4geW91IHBpbmcgdGhhdCBpbnRlcmZhY2UgYW5kIGdldCBhCisgIHJlc3BvbnNlLgorCisKKyAgWW91IGNhbiBhbHNvIGFkZCBkZXZpY2VzIHRvIGEgVU1MIGFuZCByZW1vdmUgdGhlbSBhdCBydW50aW1lLiAgU2VlIHRoZQorICBgYFRoZSBNYW5hZ2VtZW50IENvbnNvbGUnJyAgcGFnZSBmb3IgZGV0YWlscy4KKworCisgIFRoZSBzZWN0aW9ucyBiZWxvdyBkZXNjcmliZSB0aGlzIGluIG1vcmUgZGV0YWlsLgorCisKKyAgT25jZSB5b3UndmUgZGVjaWRlZCBob3cgeW91J3JlIGdvaW5nIHRvIHNldCB1cCB0aGUgZGV2aWNlcywgeW91IGJvb3QKKyAgVU1MLCBsb2cgaW4sIGNvbmZpZ3VyZSB0aGUgVU1MIHNpZGUgb2YgdGhlIGRldmljZXMsIGFuZCBzZXQgdXAgcm91dGVzCisgIHRvIHRoZSBvdXRzaWRlIHdvcmxkLiAgQXQgdGhhdCBwb2ludCwgeW91IHdpbGwgYmUgYWJsZSB0byB0YWxrIHRvIGFueQorICBvdGhlciBtYWNoaW5lcywgcGh5c2ljYWwgb3IgdmlydHVhbCwgb24gdGhlIG5ldC4KKworCisgIElmIGlmY29uZmlnIGluc2lkZSBVTUwgZmFpbHMgYW5kIHRoZSBuZXR3b3JrIHJlZnVzZXMgdG8gY29tZSB1cCwgcnVuCisgIHRlbGwgeW91IHdoYXQgd2VudCB3cm9uZy4KKworCisKKyAgNi4yLiAgVXNlcnNwYWNlIGRhZW1vbnMKKworICBZb3Ugd2lsbCBsaWtlbHkgbmVlZCB0aGUgc2V0dWlkIGhlbHBlciwgb3IgdGhlIHN3aXRjaCBkYWVtb24sIG9yIGJvdGguCisgIFRoZXkgYXJlIGJvdGggaW5zdGFsbGVkIHdpdGggdGhlIFJQTSBhbmQgZGViLCBzbyBpZiB5b3UndmUgaW5zdGFsbGVkCisgIGVpdGhlciwgeW91IGNhbiBza2lwIHRoZSByZXN0IG9mIHRoaXMgc2VjdGlvbi4KKworCisgIElmIG5vdCwgdGhlbiB5b3UgbmVlZCB0byBjaGVjayB0aGVtIG91dCBvZiBDVlMsIGJ1aWxkIHRoZW0sIGFuZAorICBpbnN0YWxsIHRoZW0uICBUaGUgaGVscGVyIGlzIHVtbF9uZXQsIGluIENWUyAvdG9vbHMvdW1sX25ldCwgYW5kIHRoZQorICBkYWVtb24gaXMgdW1sX3N3aXRjaCwgaW4gQ1ZTIC90b29scy91bWxfcm91dGVyLiAgVGhleSBhcmUgYm90aCBidWlsdAorICB3aXRoIGEgcGxhaW4gJ21ha2UnLiAgQm90aCBuZWVkIHRvIGJlIGluc3RhbGxlZCBpbiBhIGRpcmVjdG9yeSB0aGF0J3MKKyAgaW4geW91ciBwYXRoIC0gL3Vzci9iaW4gaXMgcmVjb21tZW5kLiAgT24gdG9wIG9mIHRoYXQsIHVtbF9uZXQgbmVlZHMKKyAgdG8gYmUgc2V0dWlkIHJvb3QuCisKKworCisgIDYuMy4gIFNwZWNpZnlpbmcgZXRoZXJuZXQgYWRkcmVzc2VzCisKKyAgQmVsb3csIHlvdSB3aWxsIHNlZSB0aGF0IHRoZSBUVU4vVEFQLCBldGhlcnRhcCwgYW5kIGRhZW1vbiBpbnRlcmZhY2VzCisgIGFsbG93IHlvdSB0byBzcGVjaWZ5IGhhcmR3YXJlIGFkZHJlc3NlcyBmb3IgdGhlIHZpcnR1YWwgZXRoZXJuZXQKKyAgZGV2aWNlcy4gIFRoaXMgaXMgZ2VuZXJhbGx5IG5vdCBuZWNlc3NhcnkuICBJZiB5b3UgZG9uJ3QgaGF2ZSBhCisgIHNwZWNpZmljIHJlYXNvbiB0byBkbyBpdCwgeW91IHByb2JhYmx5IHNob3VsZG4ndC4gIElmIG9uZSBpcyBub3QKKyAgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUsIHRoZSBkcml2ZXIgd2lsbCBhc3NpZ24gb25lIGJhc2VkIG9uIHRoZQorICBkZXZpY2UgSVAgYWRkcmVzcy4gIEl0IHdpbGwgcHJvdmlkZSB0aGUgYWRkcmVzcyBmZTpmZDpubjpubjpubjpubgorICB3aGVyZSBubi5ubi5ubi5ubiBpcyB0aGUgZGV2aWNlIElQIGFkZHJlc3MuICBUaGlzIGlzIG5lYXJseSBhbHdheXMKKyAgc3VmZmljaWVudCB0byBndWFyYW50ZWUgYSB1bmlxdWUgaGFyZHdhcmUgYWRkcmVzcyBmb3IgdGhlIGRldmljZS4gIEEKKyAgY291cGxlIG9mIGV4Y2VwdGlvbnMgYXJlOgorCisgIG8gIEFub3RoZXIgc2V0IG9mIHZpcnR1YWwgZXRoZXJuZXQgZGV2aWNlcyBhcmUgb24gdGhlIHNhbWUgbmV0d29yayBhbmQKKyAgICAgdGhleSBhcmUgYXNzaWduZWQgaGFyZHdhcmUgYWRkcmVzc2VzIHVzaW5nIGEgZGlmZmVyZW50IHNjaGVtZSB3aGljaAorICAgICBtYXkgY29uZmxpY3Qgd2l0aCB0aGUgVU1MIElQIGFkZHJlc3MtYmFzZWQgc2NoZW1lCisKKyAgbyAgWW91IGFyZW4ndCBnb2luZyB0byB1c2UgdGhlIGRldmljZSBmb3IgSVAgbmV0d29ya2luZywgc28geW91IGRvbid0CisgICAgIGFzc2lnbiB0aGUgZGV2aWNlIGFuIElQIGFkZHJlc3MKKworICAgICBJZiB5b3UgbGV0IHRoZSBkcml2ZXIgcHJvdmlkZSB0aGUgaGFyZHdhcmUgYWRkcmVzcywgeW91IHNob3VsZCBtYWtlCisgICAgIHN1cmUgdGhhdCB0aGUgZGV2aWNlIElQIGFkZHJlc3MgaXMga25vd24gYmVmb3JlIHRoZSBpbnRlcmZhY2UgaXMKKyAgICAgYnJvdWdodCB1cC4gIFNvLCBpbnNpZGUgVU1MLCB0aGlzIHdpbGwgZ3VhcmFudGVlIHRoYXQ6CisKKworCisgIFVNTCMKKyAgaWZjb25maWcgZXRoMCAxOTIuMTY4LjAuMjUwIHVwCisKKworCisKKyAgSWYgeW91IGRlY2lkZSB0byBhc3NpZ24gdGhlIGhhcmR3YXJlIGFkZHJlc3MgeW91cnNlbGYsIG1ha2Ugc3VyZSB0aGF0CisgIHRoZSBmaXJzdCBieXRlIG9mIHRoZSBhZGRyZXNzIGlzIGV2ZW4uICBBZGRyZXNzZXMgd2l0aCBhbiBvZGQgZmlyc3QKKyAgYnl0ZSBhcmUgYnJvYWRjYXN0IGFkZHJlc3Nlcywgd2hpY2ggeW91IGRvbid0IHdhbnQgYXNzaWduZWQgdG8gYQorICBkZXZpY2UuCisKKworCisgIDYuNC4gIFVNTCBpbnRlcmZhY2Ugc2V0dXAKKworICBPbmNlIHRoZSBuZXR3b3JrIGRldmljZXMgaGF2ZSBiZWVuIGRlc2NyaWJlZCBvbiB0aGUgY29tbWFuZCBsaW5lLCB5b3UKKyAgc2hvdWxkIGJvb3QgVU1MIGFuZCBsb2cgaW4uCisKKworICBUaGUgZmlyc3QgdGhpbmcgdG8gZG8gaXMgYnJpbmcgdGhlIGludGVyZmFjZSB1cDoKKworCisgICAgICAgVU1MIyBpZmNvbmZpZyBldGhuIGlwLWFkZHJlc3MgdXAKKworCisKKworICBZb3Ugc2hvdWxkIGJlIGFibGUgdG8gcGluZyB0aGUgaG9zdCBhdCB0aGlzIHBvaW50LgorCisKKyAgVG8gcmVhY2ggdGhlIHJlc3Qgb2YgdGhlIHdvcmxkLCB5b3Ugc2hvdWxkIHNldCBhIGRlZmF1bHQgcm91dGUgdG8gdGhlCisgIGhvc3Q6CisKKworICAgICAgIFVNTCMgcm91dGUgYWRkIGRlZmF1bHQgZ3cgaG9zdCBpcAorCisKKworCisgIEFnYWluLCB3aXRoIGhvc3QgaXAgb2YgMTkyLjE2OC4wLjQ6CisKKworICAgICAgIFVNTCMgcm91dGUgYWRkIGRlZmF1bHQgZ3cgMTkyLjE2OC4wLjQKKworCisKKworICBUaGlzIHBhZ2UgdXNlZCB0byByZWNvbW1lbmQgc2V0dGluZyBhIG5ldHdvcmsgcm91dGUgdG8geW91ciBsb2NhbCBuZXQuCisgIFRoaXMgaXMgd3JvbmcsIGJlY2F1c2UgaXQgd2lsbCBjYXVzZSBVTUwgdG8gdHJ5IHRvIGZpZ3VyZSBvdXQgaGFyZHdhcmUKKyAgYWRkcmVzc2VzIG9mIHRoZSBsb2NhbCBtYWNoaW5lcyBieSBhcnBpbmcgb24gdGhlIGludGVyZmFjZSB0byB0aGUKKyAgaG9zdC4gIFNpbmNlIHRoYXQgaW50ZXJmYWNlIGlzIGJhc2ljYWxseSBhIHNpbmdsZSBzdHJhbmQgb2YgZXRoZXJuZXQKKyAgd2l0aCB0d28gbm9kZXMgb24gaXQgKFVNTCBhbmQgdGhlIGhvc3QpIGFuZCBhcnAgcmVxdWVzdHMgZG9uJ3QgY3Jvc3MKKyAgbmV0d29ya3MsIHRoZXkgd2lsbCBmYWlsIHRvIGVsaWNpdCBhbnkgcmVzcG9uc2VzLiAgU28sIHdoYXQgeW91IHdhbnQKKyAgaXMgZm9yIFVNTCB0byBqdXN0IGJsaW5kbHkgdGhyb3cgYWxsIHBhY2tldHMgYXQgdGhlIGhvc3QgYW5kIGxldCBpdAorICBmaWd1cmUgb3V0IHdoYXQgdG8gZG8gd2l0aCB0aGVtLCB3aGljaCBpcyB3aGF0IGxlYXZpbmcgb3V0IHRoZSBuZXR3b3JrCisgIHJvdXRlIGFuZCBhZGRpbmcgdGhlIGRlZmF1bHQgcm91dGUgZG9lcy4KKworCisgIE5vdGU6IElmIHlvdSBjYW4ndCBjb21tdW5pY2F0ZSB3aXRoIG90aGVyIGhvc3RzIG9uIHlvdXIgcGh5c2ljYWwKKyAgZXRoZXJuZXQsIGl0J3MgcHJvYmFibHkgYmVjYXVzZSBvZiBhIG5ldHdvcmsgcm91dGUgdGhhdCdzCisgIGF1dG9tYXRpY2FsbHkgc2V0IHVwLiAgSWYgeW91IHJ1biAncm91dGUgLW4nIGFuZCBzZWUgYSByb3V0ZSB0aGF0CisgIGxvb2tzIGxpa2UgdGhpczoKKworCisKKworICBEZXN0aW5hdGlvbiAgICAgR2F0ZXdheSAgICAgICAgIEdlbm1hc2sgICAgICAgICBGbGFncyBNZXRyaWMgUmVmICAgIFVzZSBJZmFjZQorICAxOTIuMTY4LjAuMCAgICAgMC4wLjAuMCAgICAgICAgIDI1NS4yNTUuMjU1LjAgICBVICAgICAwICAgICAgMCAgICAgIDAgICBldGgwCisKKworCisKKyAgd2l0aCBhIG1hc2sgdGhhdCdzIG5vdCAyNTUuMjU1LjI1NS4yNTUsIHRoZW4gcmVwbGFjZSBpdCB3aXRoIGEgcm91dGUKKyAgdG8geW91ciBob3N0OgorCisKKyAgICAgICBVTUwjCisgICAgICAgcm91dGUgZGVsIC1uZXQgMTkyLjE2OC4wLjAgZGV2IGV0aDAgbmV0bWFzayAyNTUuMjU1LjI1NS4wCisKKworCisKKworCisgICAgICAgVU1MIworICAgICAgIHJvdXRlIGFkZCAtaG9zdCAxOTIuMTY4LjAuNCBkZXYgZXRoMAorCisKKworCisgIFRoaXMsIHBsdXMgdGhlIGRlZmF1bHQgcm91dGUgdG8gdGhlIGhvc3QsIHdpbGwgYWxsb3cgVU1MIHRvIGV4Y2hhbmdlCisgIHBhY2tldHMgd2l0aCBhbnkgbWFjaGluZSBvbiB5b3VyIGV0aGVybmV0LgorCisKKworICA2LjUuICBNdWx0aWNhc3QKKworICBUaGUgc2ltcGxlc3Qgd2F5IHRvIHNldCB1cCBhIHZpcnR1YWwgbmV0d29yayBiZXR3ZWVuIG11bHRpcGxlIFVNTHMgaXMKKyAgdG8gdXNlIHRoZSBtY2FzdCB0cmFuc3BvcnQuICBUaGlzIHdhcyB3cml0dGVuIGJ5IEhhcmFsZCBXZWx0ZSBhbmQgaXMKKyAgcHJlc2VudCBpbiBVTUwgdmVyc2lvbiAyLjQuNS01dW0gYW5kIGxhdGVyLiAgWW91ciBzeXN0ZW0gbXVzdCBoYXZlCisgIG11bHRpY2FzdCBlbmFibGVkIGluIHRoZSBrZXJuZWwgYW5kIHRoZXJlIG11c3QgYmUgYSBtdWx0aWNhc3QtY2FwYWJsZQorICBuZXR3b3JrIGRldmljZSBvbiB0aGUgaG9zdC4gIE5vcm1hbGx5LCB0aGlzIGlzIGV0aDAsIGJ1dCBpZiB0aGVyZSBpcworICBubyBldGhlcm5ldCBjYXJkIG9uIHRoZSBob3N0LCB0aGVuIHlvdSB3aWxsIGxpa2VseSBnZXQgc3RyYW5nZSBlcnJvcgorICBtZXNzYWdlcyB3aGVuIHlvdSBicmluZyB0aGUgZGV2aWNlIHVwIGluc2lkZSBVTUwuCisKKworICBUbyB1c2UgaXQsIHJ1biB0d28gVU1McyB3aXRoCisKKworICAgICAgICBldGgwPW1jYXN0CisKKworCisKKyAgb24gdGhlaXIgY29tbWFuZCBsaW5lcy4gIExvZyBpbiwgY29uZmlndXJlIHRoZSBldGhlcm5ldCBkZXZpY2UgaW4gZWFjaAorICBtYWNoaW5lIHdpdGggZGlmZmVyZW50IElQIGFkZHJlc3NlczoKKworCisgICAgICAgVU1MMSMgaWZjb25maWcgZXRoMCAxOTIuMTY4LjAuMjU0CisKKworCisKKworCisgICAgICAgVU1MMiMgaWZjb25maWcgZXRoMCAxOTIuMTY4LjAuMjUzCisKKworCisKKyAgYW5kIHRoZXkgc2hvdWxkIGJlIGFibGUgdG8gdGFsayB0byBlYWNoIG90aGVyLgorCisgIFRoZSBmdWxsIHNldCBvZiBjb21tYW5kIGxpbmUgb3B0aW9ucyBmb3IgdGhpcyB0cmFuc3BvcnQgYXJlCisKKworCisgICAgICAgZXRobj1tY2FzdCxldGhlcm5ldCBhZGRyZXNzLG11bHRpY2FzdAorICAgICAgIGFkZHJlc3MsbXVsdGljYXN0IHBvcnQsdHRsCisKKworCisKKyAgSGFyYWxkJ3Mgb3JpZ2luYWwgUkVBRE1FIGlzIGhlcmUgPGh0dHA6Ly91c2VyLW1vZGUtbGludXguc291cmNlLQorICBmb3JnZS5uZXQvPiAgYW5kIGV4cGxhaW5zIHRoZXNlIGluIGRldGFpbCwgYXMgd2VsbCBhcworICBzb21lIG90aGVyIGlzc3Vlcy4KKworICBUaGVyZSBpcyBhbHNvIGEgcmVsYXRlZCBwb2ludC10by1wb2ludCBvbmx5ICJ1Y2FzdCIgdHJhbnNwb3J0LgorICBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdXIgbmV0d29yayBkb2VzIG5vdCBzdXBwb3J0IG11bHRpY2FzdCwgYW5kCisgIGFsbCBuZXR3b3JrIGNvbm5lY3Rpb25zIGFyZSBzaW1wbGUgcG9pbnQgdG8gcG9pbnQgbGlua3MuCisKKyAgVGhlIGZ1bGwgc2V0IG9mIGNvbW1hbmQgbGluZSBvcHRpb25zIGZvciB0aGlzIHRyYW5zcG9ydCBhcmUKKworCisgICAgICAgZXRobj11Y2FzdCxldGhlcm5ldCBhZGRyZXNzLHJlbW90ZSBhZGRyZXNzLGxpc3RlbiBwb3J0LHJlbW90ZSBwb3J0CisKKworCisKKyAgNi42LiAgVFVOL1RBUCB3aXRoIHRoZSB1bWxfbmV0IGhlbHBlcgorCisgIFRVTi9UQVAgaXMgdGhlIHByZWZlcnJlZCBtZWNoYW5pc20gb24gMi40IHRvIGV4Y2hhbmdlIHBhY2tldHMgd2l0aCB0aGUKKyAgaG9zdC4gIFRoZSBUVU4vVEFQIGJhY2tlbmQgaGFzIGJlZW4gaW4gVU1MIHNpbmNlIDIuNC45LTN1bS4KKworCisgIFRoZSBlYXNpZXN0IHdheSB0byBnZXQgdXAgYW5kIHJ1bm5pbmcgaXMgdG8gbGV0IHRoZSBzZXR1aWQgdW1sX25ldAorICBoZWxwZXIgZG8gdGhlIGhvc3Qgc2V0dXAgZm9yIHlvdS4gIFRoaXMgaW52b2x2ZXMgaW5zbW9kLWluZyB0aGUgdHVuLm8KKyAgbW9kdWxlIGlmIG5lY2Vzc2FyeSwgY29uZmlndXJpbmcgdGhlIGRldmljZSwgYW5kIHNldHRpbmcgdXAgSVAKKyAgZm9yd2FyZGluZywgcm91dGluZywgYW5kIHByb3h5IGFycC4gIElmIHlvdSBhcmUgbmV3IHRvIFVNTCBuZXR3b3JraW5nLAorICBkbyB0aGlzIGZpcnN0LiAgSWYgeW91J3JlIGNvbmNlcm5lZCBhYm91dCB0aGUgc2VjdXJpdHkgaW1wbGljYXRpb25zIG9mCisgIHRoZSBzZXR1aWQgaGVscGVyLCB1c2UgaXQgdG8gZ2V0IHVwIGFuZCBydW5uaW5nLCB0aGVuIHJlYWQgdGhlIG5leHQKKyAgc2VjdGlvbiB0byBzZWUgaG93IHRvIGhhdmUgVU1MIHVzZSBhIHByZWNvbmZpZ3VyZWQgdGFwIGRldmljZSwgd2hpY2gKKyAgYXZvaWRzIHRoZSB1c2Ugb2YgdW1sX25ldC4KKworCisgIElmIHlvdSBzcGVjaWZ5IGFuIElQIGFkZHJlc3MgZm9yIHRoZSBob3N0IHNpZGUgb2YgdGhlIGRldmljZSwgdGhlCisgIHVtbF9uZXQgaGVscGVyIHdpbGwgZG8gYWxsIG5lY2Vzc2FyeSBzZXR1cCBvbiB0aGUgaG9zdCAtIHRoZSBvbmx5CisgIHJlcXVpcmVtZW50IGlzIHRoYXQgVFVOL1RBUCBiZSBhdmFpbGFibGUsIGVpdGhlciBidWlsdCBpbiB0byB0aGUgaG9zdAorICBrZXJuZWwgb3IgYXMgdGhlIHR1bi5vIG1vZHVsZS4KKworICBUaGUgZm9ybWF0IG9mIHRoZSBjb21tYW5kIGxpbmUgc3dpdGNoIHRvIGF0dGFjaCBhIGRldmljZSB0byBhIFRVTi9UQVAKKyAgZGV2aWNlIGlzCisKKworICAgICAgIGV0aCA8bj4gPXR1bnRhcCwsLCA8SVAgYWRkcmVzcz4KKworCisKKworICBGb3IgZXhhbXBsZSwgdGhpcyBhcmd1bWVudCB3aWxsIGF0dGFjaCB0aGUgVU1MJ3MgZXRoMCB0byB0aGUgbmV4dAorICBhdmFpbGFibGUgdGFwIGRldmljZSBhbmQgYXNzaWduIGFuIGV0aGVybmV0IGFkZHJlc3MgdG8gaXQgYmFzZWQgb24gaXRzCisgIElQIGFkZHJlc3MKKworCisgICAgICAgZXRoMD10dW50YXAsLCwxOTIuMTY4LjAuMjU0CisKKworCisKKworCisgIE5vdGUgdGhhdCB0aGUgSVAgYWRkcmVzcyB0aGF0IG11c3QgYmUgdXNlZCBmb3IgdGhlIGV0aCBkZXZpY2UgaW5zaWRlCisgIFVNTCBpcyBmaXhlZCBieSB0aGUgcm91dGluZyBhbmQgcHJveHkgYXJwIHRoYXQgaXMgc2V0IHVwIG9uIHRoZQorICBUVU4vVEFQIGRldmljZSBvbiB0aGUgaG9zdC4gIFlvdSBjYW4gdXNlIGEgZGlmZmVyZW50IG9uZSwgYnV0IGl0IHdvbid0CisgIHdvcmsgYmVjYXVzZSByZXBseSBwYWNrZXRzIHdvbid0IHJlYWNoIHRoZSBVTUwuICBUaGlzIGlzIGEgZmVhdHVyZS4KKyAgSXQgcHJldmVudHMgYSBuYXN0eSBVTUwgdXNlciBmcm9tIGRvaW5nIHRoaW5ncyBsaWtlIHNldHRpbmcgdGhlIFVNTCBJUAorICB0byB0aGUgc2FtZSBhcyB0aGUgbmV0d29yaydzIG5hbWVzZXJ2ZXIgb3IgbWFpbCBzZXJ2ZXIuCisKKworICBUaGVyZSBhcmUgYSBjb3VwbGUgcG90ZW50aWFsIHByb2JsZW1zIHdpdGggcnVubmluZyB0aGUgVFVOL1RBUAorICB0cmFuc3BvcnQgb24gYSAyLjQgaG9zdCBrZXJuZWwKKworICBvICBUVU4vVEFQIHNlZW1zIG5vdCB0byB3b3JrIG9uIDIuNC4zIGFuZCBlYXJsaWVyLiAgVXBncmFkZSB0aGUgaG9zdAorICAgICBrZXJuZWwgb3IgdXNlIHRoZSBldGhlcnRhcCB0cmFuc3BvcnQuCisKKyAgbyAgV2l0aCBhbiB1cGdyYWRlZCBrZXJuZWwsIFRVTi9UQVAgbWF5IGZhaWwgd2l0aAorCisKKyAgICAgICBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlCisKKworCisKKyAgVGhpcyBpcyBkdWUgdG8gYSBoZWFkZXIgbWlzbWF0Y2ggYmV0d2VlbiB0aGUgdXBncmFkZWQga2VybmVsIGFuZCB0aGUKKyAga2VybmVsIHRoYXQgd2FzIG9yaWdpbmFsbHkgaW5zdGFsbGVkIG9uIHRoZSBtYWNoaW5lLiAgVGhlIGZpeCBpcyB0bworICBtYWtlIHN1cmUgdGhhdCAvdXNyL3NyYy9saW51eCBwb2ludHMgdG8gdGhlIGhlYWRlcnMgZm9yIHRoZSBydW5uaW5nCisgIGtlcm5lbC4KKworICBUaGVzZSB3ZXJlIHBvaW50ZWQgb3V0IGJ5IFRpbSBSb2JpbnNvbiA8dGltcm8gYXQgdHJrciBkb3QgbmV0PiBpbgorICA8aHR0cDovL3d3dy5nZW9jcmF3bGVyLmNvbS8+IG5hbWU9InRoaXMgdW1sLQorICB1c2VyIHBvc3QiPiAuCisKKworCisgIDYuNy4gIFRVTi9UQVAgd2l0aCBhIHByZWNvbmZpZ3VyZWQgdGFwIGRldmljZQorCisgIElmIHlvdSBwcmVmZXIgbm90IHRvIGhhdmUgVU1MIHVzZSB1bWxfbmV0ICh3aGljaCBpcyBzb21ld2hhdAorICBpbnNlY3VyZSksIHdpdGggVU1MIDIuNC4xNy0xMSwgeW91IGNhbiBzZXQgdXAgYSBUVU4vVEFQIGRldmljZQorICBiZWZvcmVoYW5kLiAgVGhlIHNldHVwIG5lZWRzIHRvIGJlIGRvbmUgYXMgcm9vdCwgYnV0IG9uY2UgdGhhdCdzIGRvbmUsCisgIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHJvb3QgYXNzaXN0YW5jZS4gIFNldHRpbmcgdXAgdGhlIGRldmljZSBpcyBkb25lCisgIGFzIGZvbGxvd3M6CisKKyAgbyAgQ3JlYXRlIHRoZSBkZXZpY2Ugd2l0aCB0dW5jdGwgKGF2YWlsYWJsZSBmcm9tIHRoZSBVTUwgdXRpbGl0aWVzCisgICAgIHRhcmJhbGwpCisKKworCisKKyAgICAgICBob3N0IyAgdHVuY3RsIC11IHVpZAorCisKKworCisgIHdoZXJlIHVpZCBpcyB0aGUgdXNlciBpZCBvciB1c2VybmFtZSB0aGF0IFVNTCB3aWxsIGJlIHJ1biBhcy4gIFRoaXMKKyAgd2lsbCB0ZWxsIHlvdSB3aGF0IGRldmljZSB3YXMgY3JlYXRlZC4KKworICBvICBDb25maWd1cmUgdGhlIGRldmljZSBJUCAoY2hhbmdlIElQIGFkZHJlc3NlcyBhbmQgZGV2aWNlIG5hbWUgdG8KKyAgICAgc3VpdCkKKworCisKKworICAgICAgIGhvc3QjICBpZmNvbmZpZyB0YXAwIDE5Mi4xNjguMC4yNTQgdXAKKworCisKKworCisgIG8gIFNldCB1cCByb3V0aW5nIGFuZCBhcnBpbmcgaWYgZGVzaXJlZCAtIHRoaXMgaXMgbXkgcmVjaXBlLCB0aGVyZSBhcmUKKyAgICAgb3RoZXIgd2F5cyBvZiBkb2luZyB0aGUgc2FtZSB0aGluZworCisKKyAgICAgICBob3N0IworICAgICAgIGJhc2ggLWMgJ2VjaG8gMSA+IC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9mb3J3YXJkJworCisgICAgICAgaG9zdCMKKyAgICAgICByb3V0ZSBhZGQgLWhvc3QgMTkyLjE2OC4wLjI1MyBkZXYgdGFwMAorCisKKworCisKKworICAgICAgIGhvc3QjCisgICAgICAgYmFzaCAtYyAnZWNobyAxID4gL3Byb2Mvc3lzL25ldC9pcHY0L2NvbmYvdGFwMC9wcm94eV9hcnAnCisKKworCisKKworCisgICAgICAgaG9zdCMKKyAgICAgICBhcnAgLURzIDE5Mi4xNjguMC4yNTMgZXRoMCBwdWIKKworCisKKworICBOb3RlIHRoYXQgdGhpcyBtdXN0IGJlIGRvbmUgZXZlcnkgdGltZSB0aGUgaG9zdCBib290cyAtIHRoaXMgY29uZmlndS0KKyAgcmF0aW9uIGlzIG5vdCBzdG9yZWQgYWNyb3NzIGhvc3QgcmVib290cy4gIFNvLCBpdCdzIHByb2JhYmx5IGEgZ29vZAorICBpZGVhIHRvIHN0aWNrIGl0IGluIGFuIHJjIGZpbGUuICBBbiBldmVuIGJldHRlciBpZGVhIHdvdWxkIGJlIGEgbGl0dGxlCisgIHV0aWxpdHkgd2hpY2ggcmVhZHMgdGhlIGluZm9ybWF0aW9uIGZyb20gYSBjb25maWcgZmlsZSBhbmQgc2V0cyB1cAorICBkZXZpY2VzIGF0IGJvb3QgdGltZS4KKworICBvICBSYXRoZXIgdGhhbiB1c2luZyB1cCB0d28gSVBzIGFuZCBBUlBpbmcgZm9yIG9uZSBvZiB0aGVtLCB5b3UgY2FuCisgICAgIGFsc28gcHJvdmlkZSBkaXJlY3QgYWNjZXNzIHRvIHlvdXIgTEFOIGJ5IHRoZSBVTUwgYnkgdXNpbmcgYQorICAgICBicmlkZ2UuCisKKworICAgICAgIGhvc3QjCisgICAgICAgYnJjdGwgYWRkYnIgYnIwCisKKworCisKKworCisgICAgICAgaG9zdCMKKyAgICAgICBpZmNvbmZpZyBldGgwIDAuMC4wLjAgcHJvbWlzYyB1cAorCisKKworCisKKworICAgICAgIGhvc3QjCisgICAgICAgaWZjb25maWcgdGFwMCAwLjAuMC4wIHByb21pc2MgdXAKKworCisKKworCisKKyAgICAgICBob3N0IworICAgICAgIGlmY29uZmlnIGJyMCAxOTIuMTY4LjAuMSBuZXRtYXNrIDI1NS4yNTUuMjU1LjAgdXAKKworCisKKworCisKKworICBob3N0IworICBicmN0bCBzdHAgYnIwIG9mZgorCisKKworCisKKworICAgICAgIGhvc3QjCisgICAgICAgYnJjdGwgc2V0ZmQgYnIwIDEKKworCisKKworCisKKyAgICAgICBob3N0IworICAgICAgIGJyY3RsIHNldGhlbGxvIGJyMCAxCisKKworCisKKworCisgICAgICAgaG9zdCMKKyAgICAgICBicmN0bCBhZGRpZiBicjAgZXRoMAorCisKKworCisKKworICAgICAgIGhvc3QjCisgICAgICAgYnJjdGwgYWRkaWYgYnIwIHRhcDAKKworCisKKworICBOb3RlIHRoYXQgJ2JyMCcgc2hvdWxkIGJlIHNldHVwIHVzaW5nIGlmY29uZmlnIHdpdGggdGhlIGV4aXN0aW5nIElQCisgIGFkZHJlc3Mgb2YgZXRoMCwgYXMgZXRoMCBubyBsb25nZXIgaGFzIGl0cyBvd24gSVAuCisKKyAgbworCisKKyAgICAgQWxzbywgdGhlIC9kZXYvbmV0L3R1biBkZXZpY2UgbXVzdCBiZSB3cml0YWJsZSBieSB0aGUgdXNlciBydW5uaW5nCisgICAgIFVNTCBpbiBvcmRlciBmb3IgdGhlIFVNTCB0byB1c2UgdGhlIGRldmljZSB0aGF0J3MgYmVlbiBjb25maWd1cmVkCisgICAgIGZvciBpdC4gIFRoZSBzaW1wbGVzdCB0aGluZyB0byBkbyBpcworCisKKyAgICAgICBob3N0IyAgY2htb2QgNjY2IC9kZXYvbmV0L3R1bgorCisKKworCisgIE1ha2luZyBpdCB3b3JsZC13cml0YWJsZSBsb29rcyBiYWQsIGJ1dCBpdCBzZWVtcyBub3QgdG8gYmUKKyAgZXhwbG9pdGFibGUgYXMgYSBzZWN1cml0eSBob2xlLiAgSG93ZXZlciwgaXQgZG9lcyBhbGxvdyBhbnlvbmUgdG8gY3JlLQorICBhdGUgdXNlbGVzcyB0YXAgZGV2aWNlcyAodXNlbGVzcyBiZWNhdXNlIHRoZXkgY2FuJ3QgY29uZmlndXJlIHRoZW0pLAorICB3aGljaCBpcyBhIERPUyBhdHRhY2suICBBIHNvbWV3aGF0IG1vcmUgc2VjdXJlIGFsdGVybmF0aXZlIHdvdWxkIHRvIGJlCisgIHRvIGNyZWF0ZSBhIGdyb3VwIGNvbnRhaW5pbmcgYWxsIHRoZSB1c2VycyB3aG8gaGF2ZSBwcmVjb25maWd1cmVkIHRhcAorICBkZXZpY2VzIGFuZCBjaGdycCAvZGV2L25ldC90dW4gdG8gdGhhdCBncm91cCB3aXRoIG1vZGUgNjY0IG9yIDY2MC4KKworCisgIG8gIE9uY2UgdGhlIGRldmljZSBpcyBzZXQgdXAsIHJ1biBVTUwgd2l0aCAnZXRoMD10dW50YXAsZGV2aWNlIG5hbWUnCisgICAgIChpLmUuICdldGgwPXR1bnRhcCx0YXAwJykgb24gdGhlIGNvbW1hbmQgbGluZSAob3IgZG8gaXQgd2l0aCB0aGUKKyAgICAgbWNvbnNvbGUgY29uZmlnIGNvbW1hbmQpLgorCisgIG8gIEJyaW5nIHRoZSBldGggZGV2aWNlIHVwIGluIFVNTCBhbmQgeW91J3JlIGluIGJ1c2luZXNzLgorCisgICAgIElmIHlvdSBkb24ndCB3YW50IHRoYXQgdGFwIGRldmljZSBhbnkgbW9yZSwgeW91IGNhbiBtYWtlIGl0IG5vbi0KKyAgICAgcGVyc2lzdGVudCB3aXRoCisKKworICAgICAgIGhvc3QjICB0dW5jdGwgLWQgdGFwIGRldmljZQorCisKKworCisgIEZpbmFsbHksIHR1bmN0bCBoYXMgYSAtYiAoZm9yIGJyaWVmIG1vZGUpIHN3aXRjaCB3aGljaCBjYXVzZXMgaXQgdG8KKyAgb3V0cHV0IG9ubHkgdGhlIG5hbWUgb2YgdGhlIHRhcCBkZXZpY2UgaXQgY3JlYXRlZC4gIFRoaXMgbWFrZXMgaXQKKyAgc3VpdGFibGUgZm9yIGNhcHR1cmUgYnkgYSBzY3JpcHQ6CisKKworICAgICAgIGhvc3QjICBUQVA9YHR1bmN0bCAtdSAxMDAwIC1iYAorCisKKworCisKKworICA2LjguICBFdGhlcnRhcAorCisgIEV0aGVydGFwIGlzIHRoZSBnZW5lcmFsIG1lY2hhbmlzbSBvbiAyLjIgZm9yIHVzZXJzcGFjZSBwcm9jZXNzZXMgdG8KKyAgZXhjaGFuZ2UgcGFja2V0cyB3aXRoIHRoZSBrZXJuZWwuCisKKworCisgIFRvIHVzZSB0aGlzIHRyYW5zcG9ydCwgeW91IG5lZWQgdG8gZGVzY3JpYmUgdGhlIHZpcnR1YWwgbmV0d29yayBkZXZpY2UKKyAgb24gdGhlIFVNTCBjb21tYW5kIGxpbmUuICBUaGUgZ2VuZXJhbCBmb3JtYXQgZm9yIHRoaXMgaXMKKworCisgICAgICAgZXRoIDxuPiA9ZXRoZXJ0YXAsIDxkZXZpY2U+ICwgPGV0aGVybmV0IGFkZHJlc3M+ICwgPHRhcCBJUCBhZGRyZXNzPgorCisKKworCisgIFNvLCB0aGUgcHJldmlvdXMgZXhhbXBsZQorCisKKyAgICAgICBldGgwPWV0aGVydGFwLHRhcDAsZmU6ZmQ6MDowOjA6MSwxOTIuMTY4LjAuMjU0CisKKworCisKKyAgYXR0YWNoZXMgdGhlIFVNTCBldGgwIGRldmljZSB0byB0aGUgaG9zdCAvZGV2L3RhcDAsIGFzc2lnbnMgaXQgdGhlCisgIGV0aGVybmV0IGFkZHJlc3MgZmU6ZmQ6MDowOjA6MSwgYW5kIGFzc2lnbnMgdGhlIElQIGFkZHJlc3MKKyAgMTkyLjE2OC4wLjI1NCB0byB0aGUgdGFwIGRldmljZS4KKworCisKKyAgVGhlIHRhcCBkZXZpY2UgaXMgbWFuZGF0b3J5LCBidXQgdGhlIG90aGVycyBhcmUgb3B0aW9uYWwuICBJZiB0aGUKKyAgZXRoZXJuZXQgYWRkcmVzcyBpcyBvbWl0dGVkLCBvbmUgd2lsbCBiZSBhc3NpZ25lZCB0byBpdC4KKworCisgIFRoZSBwcmVzZW5jZSBvZiB0aGUgdGFwIElQIGFkZHJlc3Mgd2lsbCBjYXVzZSB0aGUgaGVscGVyIHRvIHJ1biBhbmQgZG8KKyAgd2hhdGV2ZXIgaG9zdCBzZXR1cCBpcyBuZWVkZWQgdG8gYWxsb3cgdGhlIHZpcnR1YWwgbWFjaGluZSB0bworICBjb21tdW5pY2F0ZSB3aXRoIHRoZSBvdXRzaWRlIHdvcmxkLiAgSWYgeW91J3JlIG5vdCBzdXJlIHlvdSBrbm93IHdoYXQKKyAgeW91J3JlIGRvaW5nLCB0aGlzIGlzIHRoZSB3YXkgdG8gZ28uCisKKworICBJZiBpdCBpcyBhYnNlbnQsIHRoZW4geW91IG11c3QgY29uZmlndXJlIHRoZSB0YXAgZGV2aWNlIGFuZCB3aGF0ZXZlcgorICBhcnBpbmcgYW5kIHJvdXRpbmcgeW91IHdpbGwgbmVlZCBvbiB0aGUgaG9zdC4gIEhvd2V2ZXIsIGV2ZW4gaW4gdGhpcworICBjYXNlLCB0aGUgdW1sX25ldCBoZWxwZXIgc3RpbGwgbmVlZHMgdG8gYmUgaW4geW91ciBwYXRoIGFuZCBpdCBtdXN0IGJlCisgIHNldHVpZCByb290IGlmIHlvdSdyZSBub3QgcnVubmluZyBVTUwgYXMgcm9vdC4gIFRoaXMgaXMgYmVjYXVzZSB0aGUKKyAgdGFwIGRldmljZSBkb2Vzbid0IHN1cHBvcnQgU0lHSU8sIHdoaWNoIFVNTCBuZWVkcyBpbiBvcmRlciB0byB1c2UKKyAgc29tZXRoaW5nIGFzIGEgc291cmNlIG9mIGlucHV0LiAgU28sIHRoZSBoZWxwZXIgaXMgdXNlZCBhcyBhCisgIGNvbnZlbmllbnQgYXN5bmNocm9ub3VzIElPIHRocmVhZC4KKworICBJZiB5b3UncmUgdXNpbmcgdGhlIHVtbF9uZXQgaGVscGVyLCB5b3UgY2FuIGlnbm9yZSB0aGUgZm9sbG93aW5nIGhvc3QKKyAgc2V0dXAgLSB1bWxfbmV0IHdpbGwgZG8gaXQgZm9yIHlvdS4gIFlvdSBqdXN0IG5lZWQgdG8gbWFrZSBzdXJlIHlvdQorICBoYXZlIGV0aGVydGFwIGF2YWlsYWJsZSwgZWl0aGVyIGJ1aWx0IGluIHRvIHRoZSBob3N0IGtlcm5lbCBvcgorICBhdmFpbGFibGUgYXMgYSBtb2R1bGUuCisKKworICBJZiB5b3Ugd2FudCB0byBzZXQgdGhpbmdzIHVwIHlvdXJzZWxmLCB5b3UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUKKyAgYXBwcm9wcmlhdGUgL2RldiBlbnRyeSBleGlzdHMuICBJZiBpdCBkb2Vzbid0LCBiZWNvbWUgcm9vdCBhbmQgY3JlYXRlCisgIGl0IGFzIGZvbGxvd3M6CisKKworICAgICAgIG1rbm9kIC9kZXYvdGFwIDxtaW5vcj4gIGMgMzYgIDxtaW5vcj4gICsgMTYKKworCisKKworICBGb3IgZXhhbXBsZSwgdGhpcyBpcyBob3cgdG8gY3JlYXRlIC9kZXYvdGFwMDoKKworCisgICAgICAgbWtub2QgL2Rldi90YXAwIGMgMzYgMCArIDE2CisKKworCisKKyAgWW91IGFsc28gbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaG9zdCBrZXJuZWwgaGFzIGV0aGVydGFwIHN1cHBvcnQuCisgIElmIGV0aGVydGFwIGlzIGVuYWJsZWQgYXMgYSBtb2R1bGUsIHlvdSBhcHBhcmVudGx5IG5lZWQgdG8gaW5zbW9kCisgIGV0aGVydGFwIG9uY2UgZm9yIGVhY2ggZXRoZXJ0YXAgZGV2aWNlIHlvdSB3YW50IHRvIGVuYWJsZS4gIFNvLAorCisKKyAgICAgICBob3N0IworICAgICAgIGluc21vZCBldGhlcnRhcAorCisKKworCisgIHdpbGwgZ2l2ZSB5b3UgdGhlIHRhcDAgaW50ZXJmYWNlLiAgVG8gZ2V0IHRoZSB0YXAxIGludGVyZmFjZSwgeW91IG5lZWQKKyAgdG8gcnVuCisKKworICAgICAgIGhvc3QjCisgICAgICAgaW5zbW9kIGV0aGVydGFwIHVuaXQ9MSAtbyBldGhlcnRhcDEKKworCisKKworCisKKworICA2LjkuICBUaGUgc3dpdGNoIGRhZW1vbgorCisgIE5vdGU6IFRoaXMgaXMgdGhlIGRhZW1vbiBmb3JtZXJseSBrbm93biBhcyB1bWxfcm91dGVyLCBidXQgd2hpY2ggd2FzCisgIHJlbmFtZWQgc28gdGhlIG5ldHdvcmsgd2VlbmllcyBvZiB0aGUgd29ybGQgd291bGQgc3RvcCBncm93bGluZyBhdCBtZS4KKworCisgIFRoZSBzd2l0Y2ggZGFlbW9uLCB1bWxfc3dpdGNoLCBwcm92aWRlcyBhIG1lY2hhbmlzbSBmb3IgY3JlYXRpbmcgYQorICB0b3RhbGx5IHZpcnR1YWwgbmV0d29yay4gIEJ5IGRlZmF1bHQsIGl0IHByb3ZpZGVzIG5vIGNvbm5lY3Rpb24gdG8gdGhlCisgIGhvc3QgbmV0d29yayAoYnV0IHNlZSAtdGFwLCBiZWxvdykuCisKKworICBUaGUgZmlyc3QgdGhpbmcgeW91IG5lZWQgdG8gZG8gaXMgcnVuIHRoZSBkYWVtb24uICBSdW5uaW5nIGl0IHdpdGggbm8KKyAgYXJndW1lbnRzIHdpbGwgbWFrZSBpdCBsaXN0ZW4gb24gYSBkZWZhdWx0IHBhaXIgb2YgdW5peCBkb21haW4KKyAgc29ja2V0cy4KKworCisgIElmIHlvdSB3YW50IGl0IHRvIGxpc3RlbiBvbiBhIGRpZmZlcmVudCBwYWlyIG9mIHNvY2tldHMsIHVzZQorCisKKyAgICAgICAgLXVuaXggY29udHJvbCBzb2NrZXQgZGF0YSBzb2NrZXQKKworCisKKworCisgIElmIHlvdSB3YW50IGl0IHRvIGFjdCBhcyBhIGh1YiByYXRoZXIgdGhhbiBhIHN3aXRjaCwgdXNlCisKKworICAgICAgICAtaHViCisKKworCisKKworICBJZiB5b3Ugd2FudCB0aGUgc3dpdGNoIHRvIGJlIGNvbm5lY3RlZCB0byBob3N0IG5ldHdvcmtpbmcgKGFsbG93aW5nCisgIHRoZSB1bWxzIHRvIGdldCBhY2Nlc3MgdG8gdGhlIG91dHNpZGUgd29ybGQgdGhyb3VnaCB0aGUgaG9zdCksIHVzZQorCisKKyAgICAgICAgLXRhcCB0YXAwCisKKworCisKKworICBOb3RlIHRoYXQgdGhlIHRhcCBkZXZpY2UgbXVzdCBiZSBwcmVjb25maWd1cmVkIChzZWUgIlRVTi9UQVAgd2l0aCBhCisgIHByZWNvbmZpZ3VyZWQgdGFwIGRldmljZSIsIGFib3ZlKS4gIElmIHlvdSdyZSB1c2luZyBhIGRpZmZlcmVudCB0YXAKKyAgZGV2aWNlIHRoYW4gdGFwMCwgc3BlY2lmeSB0aGF0IGluc3RlYWQgb2YgdGFwMC4KKworCisgIHVtbF9zd2l0Y2ggY2FuIGJlIGJhY2tncm91bmRlZCBhcyBmb2xsb3dzCisKKworICAgICAgIGhvc3QlCisgICAgICAgdW1sX3N3aXRjaCBbIG9wdGlvbnMgXSA8IC9kZXYvbnVsbCA+IC9kZXYvbnVsbAorCisKKworCisgIFRoZSByZWFzb24gaXQgZG9lc24ndCBiYWNrZ3JvdW5kIGJ5IGRlZmF1bHQgaXMgdGhhdCBpdCBsaXN0ZW5zIHRvCisgIHN0ZGluIGZvciBFT0YuICBXaGVuIGl0IHNlZXMgdGhhdCwgaXQgZXhpdHMuCisKKworICBUaGUgZ2VuZXJhbCBmb3JtYXQgb2YgdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgc3dpdGNoIGlzCisKKworCisgICAgICAgZXRobj1kYWVtb24sZXRoZXJuZXQgYWRkcmVzcyxzb2NrZXQKKyAgICAgICB0eXBlLGNvbnRyb2wgc29ja2V0LGRhdGEgc29ja2V0CisKKworCisKKyAgWW91IGNhbiBsZWF2ZSBvZmYgZXZlcnl0aGluZyBleGNlcHQgdGhlICdkYWVtb24nLiAgWW91IG9ubHkgbmVlZCB0bworICBzcGVjaWZ5IHRoZSBldGhlcm5ldCBhZGRyZXNzIGlmIHRoZSBvbmUgdGhhdCB3aWxsIGJlIGFzc2lnbmVkIHRvIGl0CisgIGlzbid0IGFjY2VwdGFibGUgZm9yIHNvbWUgcmVhc29uLiAgVGhlIHJlc3Qgb2YgdGhlIGFyZ3VtZW50cyBkZXNjcmliZQorICBob3cgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgZGFlbW9uLiAgWW91IHNob3VsZCBvbmx5IHNwZWNpZnkgdGhlbSBpZgorICB5b3UgdG9sZCB0aGUgZGFlbW9uIHRvIHVzZSBkaWZmZXJlbnQgc29ja2V0cyB0aGFuIHRoZSBkZWZhdWx0LiAgU28sIGlmCisgIHlvdSByYW4gdGhlIGRhZW1vbiB3aXRoIG5vIGFyZ3VtZW50cywgcnVubmluZyB0aGUgVU1MIG9uIHRoZSBzYW1lCisgIG1hY2hpbmUgd2l0aAorICAgICAgIGV0aDA9ZGFlbW9uCisKKworCisKKyAgd2lsbCBjYXVzZSB0aGUgZXRoMCBkcml2ZXIgdG8gYXR0YWNoIGl0c2VsZiB0byB0aGUgZGFlbW9uIGNvcnJlY3RseS4KKworCisKKyAgNi4xMC4gIFNsaXAKKworICBTbGlwIGlzIGFub3RoZXIsIGxlc3MgZ2VuZXJhbCwgbWVjaGFuaXNtIGZvciBhIHByb2Nlc3MgdG8gY29tbXVuaWNhdGUKKyAgd2l0aCB0aGUgaG9zdCBuZXR3b3JraW5nLiAgSW4gY29udHJhc3QgdG8gdGhlIGV0aGVydGFwIGludGVyZmFjZSwKKyAgd2hpY2ggZXhjaGFuZ2VzIGV0aGVybmV0IGZyYW1lcyB3aXRoIHRoZSBob3N0IGFuZCBjYW4gYmUgdXNlZCB0bworICB0cmFuc3BvcnQgYW55IGhpZ2hlci1sZXZlbCBwcm90b2NvbCwgaXQgY2FuIG9ubHkgYmUgdXNlZCB0byB0cmFuc3BvcnQKKyAgSVAuCisKKworICBUaGUgZ2VuZXJhbCBmb3JtYXQgb2YgdGhlIGNvbW1hbmQgbGluZSBzd2l0Y2ggaXMKKworCisKKyAgICAgICBldGhuPXNsaXAsc2xpcCBJUAorCisKKworCisgIFRoZSBzbGlwIElQIGFyZ3VtZW50IGlzIHRoZSBJUCBhZGRyZXNzIHRoYXQgd2lsbCBiZSBhc3NpZ25lZCB0byB0aGUKKyAgaG9zdCBlbmQgb2YgdGhlIHNsaXAgZGV2aWNlLiAgSWYgaXQgaXMgc3BlY2lmaWVkLCB0aGUgaGVscGVyIHdpbGwgcnVuCisgIGFuZCB3aWxsIHNldCB1cCB0aGUgaG9zdCBzbyB0aGF0IHRoZSB2aXJ0dWFsIG1hY2hpbmUgY2FuIHJlYWNoIGl0IGFuZAorICB0aGUgcmVzdCBvZiB0aGUgbmV0d29yay4KKworCisgIFRoZXJlIGFyZSBzb21lIG9kZGl0aWVzIHdpdGggdGhpcyBpbnRlcmZhY2UgdGhhdCB5b3Ugc2hvdWxkIGJlIGF3YXJlCisgIG9mLiAgWW91IHNob3VsZCBvbmx5IHNwZWNpZnkgb25lIHNsaXAgZGV2aWNlIG9uIGEgZ2l2ZW4gdmlydHVhbAorICBtYWNoaW5lLCBhbmQgaXRzIG5hbWUgaW5zaWRlIFVNTCB3aWxsIGJlICd1bW4nLCBub3QgJ2V0aDAnIG9yIHdoYXRldmVyCisgIHlvdSBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4gIFRoZXNlIHByb2JsZW1zIHdpbGwgYmUgZml4ZWQgYXQKKyAgc29tZSBwb2ludC4KKworCisKKyAgNi4xMS4gIFNsaXJwCisKKyAgc2xpcnAgdXNlcyBhbiBleHRlcm5hbCBwcm9ncmFtLCB1c3VhbGx5IC91c3IvYmluL3NsaXJwLCB0byBwcm92aWRlIElQCisgIG9ubHkgbmV0d29ya2luZyBjb25uZWN0aXZpdHkgdGhyb3VnaCB0aGUgaG9zdC4gVGhpcyBpcyBzaW1pbGFyIHRvIElQCisgIG1hc3F1ZXJhZGluZyB3aXRoIGEgZmlyZXdhbGwsIGFsdGhvdWdoIHRoZSB0cmFuc2xhdGlvbiBpcyBwZXJmb3JtZWQgaW4KKyAgdXNlci1zcGFjZSwgcmF0aGVyIHRoYW4gYnkgdGhlIGtlcm5lbC4gIEFzIHNsaXJwIGRvZXMgbm90IHNldCB1cCBhbnkKKyAgaW50ZXJmYWNlcyBvbiB0aGUgaG9zdCwgb3IgY2hhbmdlcyByb3V0aW5nLCBzbGlycCBkb2VzIG5vdCByZXF1aXJlCisgIHJvb3QgYWNjZXNzIG9yIHNldHVpZCBiaW5hcmllcyBvbiB0aGUgaG9zdC4KKworCisgIFRoZSBnZW5lcmFsIGZvcm1hdCBvZiB0aGUgY29tbWFuZCBsaW5lIHN3aXRjaCBmb3Igc2xpcnAgaXM6CisKKworCisgICAgICAgZXRobj1zbGlycCxldGhlcm5ldCBhZGRyZXNzLHNsaXJwIHBhdGgKKworCisKKworICBUaGUgZXRoZXJuZXQgYWRkcmVzcyBpcyBvcHRpb25hbCwgYXMgVU1MIHdpbGwgc2V0IHVwIHRoZSBpbnRlcmZhY2UKKyAgd2l0aCBhbiBldGhlcm5ldCBhZGRyZXNzIGJhc2VkIHVwb24gdGhlIGluaXRpYWwgSVAgYWRkcmVzcyBvZiB0aGUKKyAgaW50ZXJmYWNlLiAgVGhlIHNsaXJwIHBhdGggaXMgZ2VuZXJhbGx5IC91c3IvYmluL3NsaXJwLCBhbHRob3VnaCBpdAorICB3aWxsIGRlcGVuZCBvbiBkaXN0cmlidXRpb24uCisKKworICBUaGUgc2xpcnAgcHJvZ3JhbSBjYW4gaGF2ZSBhIG51bWJlciBvZiBvcHRpb25zIHBhc3NlZCB0byB0aGUgY29tbWFuZAorICBsaW5lIGFuZCB3ZSBjYW4ndCBhZGQgdGhlbSB0byB0aGUgVU1MIGNvbW1hbmQgbGluZSwgYXMgdGhleSB3aWxsIGJlCisgIHBhcnNlZCBpbmNvcnJlY3RseS4gIEluc3RlYWQsIGEgd3JhcHBlciBzaGVsbCBzY3JpcHQgY2FuIGJlIHdyaXR0ZW4gb3IKKyAgdGhlIG9wdGlvbnMgaW5zZXJ0ZWQgaW50byB0aGUgIC8uc2xpcnByYyBmaWxlLiAgTW9yZSBpbmZvcm1hdGlvbiBvbgorICBhbGwgb2YgdGhlIHNsaXJwIG9wdGlvbnMgY2FuIGJlIGZvdW5kIGluIGl0cyBtYW4gcGFnZXMuCisKKworICBUaGUgZXRoMCBpbnRlcmZhY2Ugb24gVU1MIHNob3VsZCBiZSBzZXQgdXAgd2l0aCB0aGUgSVAgMTAuMi4wLjE1LAorICBhbHRob3VnaCB5b3UgY2FuIHVzZSBhbnl0aGluZyBhcyBsb25nIGFzIGl0IGlzIG5vdCB1c2VkIGJ5IGEgbmV0d29yaworICB5b3Ugd2lsbCBiZSBjb25uZWN0aW5nIHRvLiBUaGUgZGVmYXVsdCByb3V0ZSBvbiBVTUwgc2hvdWxkIGJlIHNldCB0bworICB1c2UKKworCisgICAgICAgVU1MIworICAgICAgIHJvdXRlIGFkZCBkZWZhdWx0IGRldiBldGgwCisKKworCisKKyAgc2xpcnAgcHJvdmlkZXMgYSBudW1iZXIgb2YgdXNlZnVsIElQIGFkZHJlc3NlcyB3aGljaCBjYW4gYmUgdXNlZCBieQorICBVTUwsIHN1Y2ggYXMgMTAuMC4yLjMgd2hpY2ggaXMgYW4gYWxpYXMgZm9yIHRoZSBETlMgc2VydmVyIHNwZWNpZmllZAorICBpbiAvZXRjL3Jlc29sdi5jb25mIG9uIHRoZSBob3N0IG9yIHRoZSBJUCBnaXZlbiBpbiB0aGUgJ2Rucycgb3B0aW9uCisgIGZvciBzbGlycC4KKworCisgIEV2ZW4gd2l0aCBhIGJhdWRyYXRlIHNldHRpbmcgaGlnaGVyIHRoYW4gMTE1MjAwLCB0aGUgc2xpcnAgY29ubmVjdGlvbgorICBpcyBsaW1pdGVkIHRvIDExNTIwMC4gSWYgeW91IG5lZWQgaXQgdG8gZ28gZmFzdGVyLCB0aGUgc2xpcnAgYmluYXJ5CisgIG5lZWRzIHRvIGJlIGNvbXBpbGVkIHdpdGggRlVMTF9CT0xUIGRlZmluZWQgaW4gY29uZmlnLmguCisKKworCisgIDYuMTIuICBwY2FwCisKKyAgVGhlIHBjYXAgdHJhbnNwb3J0IGlzIGF0dGFjaGVkIHRvIGEgVU1MIGV0aGVybmV0IGRldmljZSBvbiB0aGUgY29tbWFuZAorICBsaW5lIG9yIHdpdGggdW1sX21jb25zb2xlIHdpdGggdGhlIGZvbGxvd2luZyBzeW50YXg6CisKKworCisgICAgICAgZXRobj1wY2FwLGhvc3QgaW50ZXJmYWNlLGZpbHRlcgorICAgICAgIGV4cHJlc3Npb24sb3B0aW9uMSxvcHRpb24yCisKKworCisKKyAgVGhlIGV4cHJlc3Npb24gYW5kIG9wdGlvbnMgYXJlIG9wdGlvbmFsLgorCisKKyAgVGhlIGludGVyZmFjZSBpcyB3aGF0ZXZlciBuZXR3b3JrIGRldmljZSBvbiB0aGUgaG9zdCB5b3Ugd2FudCB0bworICBzbmlmZi4gIFRoZSBleHByZXNzaW9uIGlzIGEgcGNhcCBmaWx0ZXIgZXhwcmVzc2lvbiwgd2hpY2ggaXMgYWxzbyB3aGF0CisgIHRjcGR1bXAgdXNlcywgc28gaWYgeW91IGtub3cgaG93IHRvIHNwZWNpZnkgdGNwZHVtcCBmaWx0ZXJzLCB5b3Ugd2lsbAorICB1c2UgdGhlIHNhbWUgZXhwcmVzc2lvbnMgaGVyZS4gIFRoZSBvcHRpb25zIGFyZSB1cCB0byB0d28gb2YKKyAgJ3Byb21pc2MnLCBjb250cm9sIHdoZXRoZXIgcGNhcCBwdXRzIHRoZSBob3N0IGludGVyZmFjZSBpbnRvCisgIHByb21pc2N1b3VzIG1vZGUuICdvcHRpbWl6ZScgYW5kICdub29wdGltaXplJyBjb250cm9sIHdoZXRoZXIgdGhlIHBjYXAKKyAgZXhwcmVzc2lvbiBvcHRpbWl6ZXIgaXMgdXNlZC4KKworCisgIEV4YW1wbGU6CisKKworCisgICAgICAgZXRoMD1wY2FwLGV0aDAsdGNwCisKKyAgICAgICBldGgxPXBjYXAsZXRoMCwhdGNwCisKKworCisgIHdpbGwgY2F1c2UgdGhlIFVNTCBldGgwIHRvIGVtaXQgYWxsIHRjcCBwYWNrZXRzIG9uIHRoZSBob3N0IGV0aDAgYW5kCisgIHRoZSBVTUwgZXRoMSB0byBlbWl0IGFsbCBub24tdGNwIHBhY2tldHMgb24gdGhlIGhvc3QgZXRoMC4KKworCisKKyAgNi4xMy4gIFNldHRpbmcgdXAgdGhlIGhvc3QgeW91cnNlbGYKKworICBJZiB5b3UgZG9uJ3Qgc3BlY2lmeSBhbiBhZGRyZXNzIGZvciB0aGUgaG9zdCBzaWRlIG9mIHRoZSBldGhlcnRhcCBvcgorICBzbGlwIGRldmljZSwgVU1MIHdvbid0IGRvIGFueSBzZXR1cCBvbiB0aGUgaG9zdC4gIFNvIHRoaXMgaXMgd2hhdCBpcworICBuZWVkZWQgdG8gZ2V0IHRoaW5ncyB3b3JraW5nICh0aGUgZXhhbXBsZXMgdXNlIGEgaG9zdC1zaWRlIElQIG9mCisgIDE5Mi4xNjguMC4yNTEgYW5kIGEgVU1MLXNpZGUgSVAgb2YgMTkyLjE2OC4wLjI1MCAtIGFkanVzdCB0byBzdWl0IHlvdXIKKyAgb3duIG5ldHdvcmspOgorCisgIG8gIFRoZSBkZXZpY2UgbmVlZHMgdG8gYmUgY29uZmlndXJlZCB3aXRoIGl0cyBJUCBhZGRyZXNzLiAgVGFwIGRldmljZXMKKyAgICAgYXJlIGFsc28gY29uZmlndXJlZCB3aXRoIGFuIG10dSBvZiAxNDg0LiAgU2xpcCBkZXZpY2VzIGFyZQorICAgICBjb25maWd1cmVkIHdpdGggYSBwb2ludC10by1wb2ludCBhZGRyZXNzIHBvaW50aW5nIGF0IHRoZSBVTUwgaXAKKyAgICAgYWRkcmVzcy4KKworCisgICAgICAgaG9zdCMgIGlmY29uZmlnIHRhcDAgYXJwIG10dSAxNDg0IDE5Mi4xNjguMC4yNTEgdXAKKworCisKKworCisKKyAgICAgICBob3N0IworICAgICAgIGlmY29uZmlnIHNsMCAxOTIuMTY4LjAuMjUxIHBvaW50b3BvaW50IDE5Mi4xNjguMC4yNTAgdXAKKworCisKKworCisgIG8gIElmIGEgdGFwIGRldmljZSBpcyBiZWluZyBzZXQgdXAsIGEgcm91dGUgaXMgc2V0IHRvIHRoZSBVTUwgSVAuCisKKworICAgICAgIFVNTCMgcm91dGUgYWRkIC1ob3N0IDE5Mi4xNjguMC4yNTAgZ3cgMTkyLjE2OC4wLjI1MQorCisKKworCisKKyAgbyAgVG8gYWxsb3cgb3RoZXIgaG9zdHMgb24geW91ciBuZXR3b3JrIHRvIHNlZSB0aGUgdmlydHVhbCBtYWNoaW5lLAorICAgICBwcm94eSBhcnAgaXMgc2V0IHVwIGZvciBpdC4KKworCisgICAgICAgaG9zdCMgIGFycCAtRHMgMTkyLjE2OC4wLjI1MCBldGgwIHB1YgorCisKKworCisKKyAgbyAgRmluYWxseSwgdGhlIGhvc3QgaXMgc2V0IHVwIHRvIHJvdXRlIHBhY2tldHMuCisKKworICAgICAgIGhvc3QjICBlY2hvIDEgPiAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfZm9yd2FyZAorCisKKworCisKKworCisKKworCisgIDcuICBTaGFyaW5nIEZpbGVzeXN0ZW1zIGJldHdlZW4gVmlydHVhbCBNYWNoaW5lcworCisKKworCisgIDcuMS4gIEEgd2FybmluZworCisgIERvbid0IGF0dGVtcHQgdG8gc2hhcmUgZmlsZXN5c3RlbXMgc2ltcGx5IGJ5IGJvb3RpbmcgdHdvIFVNTHMgZnJvbSB0aGUKKyAgc2FtZSBmaWxlLiAgVGhhdCdzIHRoZSBzYW1lIHRoaW5nIGFzIGJvb3RpbmcgdHdvIHBoeXNpY2FsIG1hY2hpbmVzCisgIGZyb20gYSBzaGFyZWQgZGlzay4gIEl0IHdpbGwgcmVzdWx0IGluIGZpbGVzeXN0ZW0gY29ycnVwdGlvbi4KKworCisKKyAgNy4yLiAgVXNpbmcgbGF5ZXJlZCBibG9jayBkZXZpY2VzCisKKyAgVGhlIHdheSB0byBzaGFyZSBhIGZpbGVzeXN0ZW0gYmV0d2VlbiB0d28gdmlydHVhbCBtYWNoaW5lcyBpcyB0byB1c2UKKyAgdGhlIGNvcHktb24td3JpdGUgKENPVykgbGF5ZXJpbmcgY2FwYWJpbGl0eSBvZiB0aGUgdWJkIGJsb2NrIGRyaXZlci4KKyAgQXMgb2YgMi40LjYtMnVtLCB0aGUgZHJpdmVyIHN1cHBvcnRzIGxheWVyaW5nIGEgcmVhZC13cml0ZSBwcml2YXRlCisgIGRldmljZSBvdmVyIGEgcmVhZC1vbmx5IHNoYXJlZCBkZXZpY2UuICBBIG1hY2hpbmUncyB3cml0ZXMgYXJlIHN0b3JlZAorICBpbiB0aGUgcHJpdmF0ZSBkZXZpY2UsIHdoaWxlIHJlYWRzIGNvbWUgZnJvbSBlaXRoZXIgZGV2aWNlIC0gdGhlCisgIHByaXZhdGUgb25lIGlmIHRoZSByZXF1ZXN0ZWQgYmxvY2sgaXMgdmFsaWQgaW4gaXQsIHRoZSBzaGFyZWQgb25lIGlmCisgIG5vdC4gIFVzaW5nIHRoaXMgc2NoZW1lLCB0aGUgbWFqb3JpdHkgb2YgZGF0YSB3aGljaCBpcyB1bmNoYW5nZWQgaXMKKyAgc2hhcmVkIGJldHdlZW4gYW4gYXJiaXRyYXJ5IG51bWJlciBvZiB2aXJ0dWFsIG1hY2hpbmVzLCBlYWNoIG9mIHdoaWNoCisgIGhhcyBhIG11Y2ggc21hbGxlciBmaWxlIGNvbnRhaW5pbmcgdGhlIGNoYW5nZXMgdGhhdCBpdCBoYXMgbWFkZS4gIFdpdGgKKyAgYSBsYXJnZSBudW1iZXIgb2YgVU1McyBib290aW5nIGZyb20gYSBsYXJnZSByb290IGZpbGVzeXN0ZW0sIHRoaXMKKyAgbGVhZHMgdG8gYSBodWdlIGRpc2sgc3BhY2Ugc2F2aW5nLiAgSXQgd2lsbCBhbHNvIGhlbHAgcGVyZm9ybWFuY2UsCisgIHNpbmNlIHRoZSBob3N0IHdpbGwgYmUgYWJsZSB0byBjYWNoZSB0aGUgc2hhcmVkIGRhdGEgdXNpbmcgYSBtdWNoCisgIHNtYWxsZXIgYW1vdW50IG9mIG1lbW9yeSwgc28gVU1MIGRpc2sgcmVxdWVzdHMgd2lsbCBiZSBzZXJ2ZWQgZnJvbSB0aGUKKyAgaG9zdCdzIG1lbW9yeSByYXRoZXIgdGhhbiBpdHMgZGlza3MuCisKKworCisKKyAgVG8gYWRkIGEgY29weS1vbi13cml0ZSBsYXllciB0byBhbiBleGlzdGluZyBibG9jayBkZXZpY2UgZmlsZSwgc2ltcGx5CisgIGFkZCB0aGUgbmFtZSBvZiB0aGUgQ09XIGZpbGUgdG8gdGhlIGFwcHJvcHJpYXRlIHViZCBzd2l0Y2g6CisKKworICAgICAgICB1YmQwPXJvb3RfZnNfY293LHJvb3RfZnNfZGViaWFuXzIyCisKKworCisKKyAgd2hlcmUgJ3Jvb3RfZnNfY293JyBpcyB0aGUgcHJpdmF0ZSBDT1cgZmlsZSBhbmQgJ3Jvb3RfZnNfZGViaWFuXzIyJyBpcworICB0aGUgZXhpc3Rpbmcgc2hhcmVkIGZpbGVzeXN0ZW0uICBUaGUgQ09XIGZpbGUgbmVlZCBub3QgZXhpc3QuICBJZiBpdAorICBkb2Vzbid0LCB0aGUgZHJpdmVyIHdpbGwgY3JlYXRlIGFuZCBpbml0aWFsaXplIGl0LiAgT25jZSB0aGUgQ09XIGZpbGUKKyAgaGFzIGJlZW4gaW5pdGlhbGl6ZWQsIGl0IGNhbiBiZSB1c2VkIG9uIGl0cyBvd24gb24gdGhlIGNvbW1hbmQgbGluZToKKworCisgICAgICAgIHViZDA9cm9vdF9mc19jb3cKKworCisKKworICBUaGUgbmFtZSBvZiB0aGUgYmFja2luZyBmaWxlIGlzIHN0b3JlZCBpbiB0aGUgQ09XIGZpbGUgaGVhZGVyLCBzbyBpdAorICB3b3VsZCBiZSByZWR1bmRhbnQgdG8gY29udGludWUgc3BlY2lmeWluZyBpdCBvbiB0aGUgY29tbWFuZCBsaW5lLgorCisKKworICA3LjMuICBOb3RlIQorCisgIFdoZW4gY2hlY2tpbmcgdGhlIHNpemUgb2YgdGhlIENPVyBmaWxlIGluIG9yZGVyIHRvIHNlZSB0aGUgZ29icyBvZgorICBzcGFjZSB0aGF0IHlvdSdyZSBzYXZpbmcsIG1ha2Ugc3VyZSB5b3UgdXNlICdscyAtbHMnIHRvIHNlZSB0aGUgYWN0dWFsCisgIGRpc2sgY29uc3VtcHRpb24gcmF0aGVyIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGUgZmlsZS4gIFRoZSBDT1cgZmlsZSBpcworICBzcGFyc2UsIHNvIHRoZSBsZW5ndGggd2lsbCBiZSB2ZXJ5IGRpZmZlcmVudCBmcm9tIHRoZSBkaXNrIHVzYWdlLgorICBIZXJlIGlzIGEgJ2xzIC1sJyBvZiBhIENPVyBmaWxlIGFuZCBiYWNraW5nIGZpbGUgZnJvbSBvbmUgYm9vdCBhbmQKKyAgc2h1dGRvd246CisgICAgICAgaG9zdCUgbHMgLWwgY293LmRlYmlhbiBkZWJpYW4yLjIKKyAgICAgICAtcnctci0tci0tICAgIDEgamRpa2UgICAgamRpa2UgICAgNDkyNTA0MDY0IEF1ZyAgNiAyMToxNiBjb3cuZGViaWFuCisgICAgICAgLXJ3eHJ3LXJ3LSAgICAxIGpkaWtlICAgIGpkaWtlICAgIDUzNzkxOTQ4OCBBdWcgIDYgMjA6NDIgZGViaWFuMi4yCisKKworCisKKyAgRG9lc24ndCBsb29rIGxpa2UgbXVjaCBzYXZlZCBzcGFjZSwgZG9lcyBpdD8gIFdlbGwsIGhlcmUncyAnbHMgLWxzJzoKKworCisgICAgICAgaG9zdCUgbHMgLWxzIGNvdy5kZWJpYW4gZGViaWFuMi4yCisgICAgICAgICAgODgwIC1ydy1yLS1yLS0gICAgMSBqZGlrZSAgICBqZGlrZSAgICA0OTI1MDQwNjQgQXVnICA2IDIxOjE2IGNvdy5kZWJpYW4KKyAgICAgICA1MjU4MzIgLXJ3eHJ3LXJ3LSAgICAxIGpkaWtlICAgIGpkaWtlICAgIDUzNzkxOTQ4OCBBdWcgIDYgMjA6NDIgZGViaWFuMi4yCisKKworCisKKyAgTm93LCB5b3UgY2FuIHNlZSB0aGF0IHRoZSBDT1cgZmlsZSBoYXMgbGVzcyB0aGFuIGEgbWVnIG9mIGRpc2ssIHJhdGhlcgorICB0aGFuIDQ5MiBtZWcuCisKKworCisgIDcuNC4gIEFub3RoZXIgd2FybmluZworCisgIE9uY2UgYSBmaWxlc3lzdGVtIGlzIGJlaW5nIHVzZWQgYXMgYSByZWFkb25seSBiYWNraW5nIGZpbGUgZm9yIGEgQ09XCisgIGZpbGUsIGRvIG5vdCBib290IGRpcmVjdGx5IGZyb20gaXQgb3IgbW9kaWZ5IGl0IGluIGFueSB3YXkuICBEb2luZyBzbworICB3aWxsIGludmFsaWRhdGUgYW55IENPVyBmaWxlcyB0aGF0IGFyZSB1c2luZyBpdC4gIFRoZSBtdGltZSBhbmQgc2l6ZQorICBvZiB0aGUgYmFja2luZyBmaWxlIGFyZSBzdG9yZWQgaW4gdGhlIENPVyBmaWxlIGhlYWRlciBhdCBpdHMgY3JlYXRpb24sCisgIGFuZCB0aGV5IG11c3QgY29udGludWUgdG8gbWF0Y2guICBJZiB0aGV5IGRvbid0LCB0aGUgZHJpdmVyIHdpbGwKKyAgcmVmdXNlIHRvIHVzZSB0aGUgQ09XIGZpbGUuCisKKworCisKKyAgSWYgeW91IGF0dGVtcHQgdG8gZXZhZGUgdGhpcyByZXN0cmljdGlvbiBieSBjaGFuZ2luZyBlaXRoZXIgdGhlCisgIGJhY2tpbmcgZmlsZSBvciB0aGUgQ09XIGhlYWRlciBieSBoYW5kLCB5b3Ugd2lsbCBnZXQgYSBjb3JydXB0ZWQKKyAgZmlsZXN5c3RlbS4KKworCisKKworICBBbW9uZyBvdGhlciB0aGluZ3MsIHRoaXMgbWVhbnMgdGhhdCB1cGdyYWRpbmcgdGhlIGRpc3RyaWJ1dGlvbiBpbiBhCisgIGJhY2tpbmcgZmlsZSBhbmQgZXhwZWN0aW5nIHRoYXQgYWxsIG9mIHRoZSBDT1cgZmlsZXMgdXNpbmcgaXQgd2lsbCBzZWUKKyAgdGhlIHVwZ3JhZGUgd2lsbCBub3Qgd29yay4KKworCisKKworICA3LjUuICB1bWxfbW9vIDogTWVyZ2luZyBhIENPVyBmaWxlIHdpdGggaXRzIGJhY2tpbmcgZmlsZQorCisgIERlcGVuZGluZyBvbiBob3cgeW91IHVzZSBVTUwgYW5kIENPVyBkZXZpY2VzLCBpdCBtYXkgYmUgYWR2aXNhYmxlIHRvCisgIG1lcmdlIHRoZSBjaGFuZ2VzIGluIHRoZSBDT1cgZmlsZSBpbnRvIHRoZSBiYWNraW5nIGZpbGUgZXZlcnkgb25jZSBpbgorICBhIHdoaWxlLgorCisKKworCisgIFRoZSB1dGlsaXR5IHRoYXQgZG9lcyB0aGlzIGlzIHVtbF9tb28uICBJdHMgdXNhZ2UgaXMKKworCisgICAgICAgaG9zdCUgdW1sX21vbyBDT1cgZmlsZSBuZXcgYmFja2luZyBmaWxlCisKKworCisKKyAgVGhlcmUncyBubyBuZWVkIHRvIHNwZWNpZnkgdGhlIGJhY2tpbmcgZmlsZSBzaW5jZSB0aGF0IGluZm9ybWF0aW9uIGlzCisgIGFscmVhZHkgaW4gdGhlIENPVyBmaWxlIGhlYWRlci4gIElmIHlvdSdyZSBwYXJhbm9pZCwgYm9vdCB0aGUgbmV3CisgIG1lcmdlZCBmaWxlLCBhbmQgaWYgeW91J3JlIGhhcHB5IHdpdGggaXQsIG1vdmUgaXQgb3ZlciB0aGUgb2xkIGJhY2tpbmcKKyAgZmlsZS4KKworCisKKworICB1bWxfbW9vIGNyZWF0ZXMgYSBuZXcgYmFja2luZyBmaWxlIGJ5IGRlZmF1bHQgYXMgYSBzYWZldHkgbWVhc3VyZS4gIEl0CisgIGFsc28gaGFzIGEgZGVzdHJ1Y3RpdmUgbWVyZ2Ugb3B0aW9uIHdoaWNoIHdpbGwgbWVyZ2UgdGhlIENPVyBmaWxlCisgIGRpcmVjdGx5IGludG8gaXRzIGN1cnJlbnQgYmFja2luZyBmaWxlLiAgVGhpcyBpcyByZWFsbHkgb25seSB1c2FibGUKKyAgd2hlbiB0aGUgYmFja2luZyBmaWxlIG9ubHkgaGFzIG9uZSBDT1cgZmlsZSBhc3NvY2lhdGVkIHdpdGggaXQuICBJZgorICB0aGVyZSBhcmUgbXVsdGlwbGUgQ09XcyBhc3NvY2lhdGVkIHdpdGggYSBiYWNraW5nIGZpbGUsIGEgLWQgbWVyZ2Ugb2YKKyAgb25lIG9mIHRoZW0gd2lsbCBpbnZhbGlkYXRlIGFsbCBvZiB0aGUgb3RoZXJzLiAgSG93ZXZlciwgaXQgaXMKKyAgY29udmVuaWVudCBpZiB5b3UncmUgc2hvcnQgb2YgZGlzayBzcGFjZSwgYW5kIGl0IHNob3VsZCBhbHNvIGJlCisgIG5vdGljZWFibHkgZmFzdGVyIHRoYW4gYSBub24tZGVzdHJ1Y3RpdmUgbWVyZ2UuCisKKworCisKKyAgdW1sX21vbyBpcyBpbnN0YWxsZWQgd2l0aCB0aGUgVU1MIGRlYiBhbmQgUlBNLiAgSWYgeW91IGRpZG4ndCBpbnN0YWxsCisgIFVNTCBmcm9tIG9uZSBvZiB0aG9zZSBwYWNrYWdlcywgeW91IGNhbiBhbHNvIGdldCBpdCBmcm9tIHRoZSBVTUwKKyAgdXRpbGl0aWVzIDxodHRwOi8vdXNlci1tb2RlLWxpbnV4LnNvdXJjZWZvcmdlLm5ldC8KKyAgdXRpbGl0aWVzPiAgdGFyIGZpbGUgaW4gdG9vbHMvbW9vLgorCisKKworCisKKworCisKKyAgOC4gIENyZWF0aW5nIGZpbGVzeXN0ZW1zCisKKworICBZb3UgbWF5IHdhbnQgdG8gY3JlYXRlIGFuZCBtb3VudCBuZXcgVU1MIGZpbGVzeXN0ZW1zLCBlaXRoZXIgYmVjYXVzZQorICB5b3VyIHJvb3QgZmlsZXN5c3RlbSBpc24ndCBsYXJnZSBlbm91Z2ggb3IgYmVjYXVzZSB5b3Ugd2FudCB0byB1c2UgYQorICBmaWxlc3lzdGVtIG90aGVyIHRoYW4gZXh0Mi4KKworCisgIFRoaXMgd2FzIHdyaXR0ZW4gb24gdGhlIG9jY2FzaW9uIG9mIHJlaXNlcmZzIGJlaW5nIGluY2x1ZGVkIGluIHRoZQorICAyLjQuMSBrZXJuZWwgcG9vbCwgYW5kIHRoZXJlZm9yZSB0aGUgMi40LjEgVU1MLCBzbyB0aGUgZXhhbXBsZXMgd2lsbAorICB0YWxrIGFib3V0IHJlaXNlcmZzLiAgVGhpcyBpbmZvcm1hdGlvbiBpcyBnZW5lcmljLCBhbmQgdGhlIGV4YW1wbGVzCisgIHNob3VsZCBiZSBlYXN5IHRvIHRyYW5zbGF0ZSB0byB0aGUgZmlsZXN5c3RlbSBvZiB5b3VyIGNob2ljZS4KKworCisgIDguMS4gIENyZWF0ZSB0aGUgZmlsZXN5c3RlbSBmaWxlCisKKyAgZGQgaXMgeW91ciBmcmllbmQuICBBbGwgeW91IG5lZWQgdG8gZG8gaXMgdGVsbCBkZCB0byBjcmVhdGUgYW4gZW1wdHkKKyAgZmlsZSBvZiB0aGUgYXBwcm9wcmlhdGUgc2l6ZS4gIEkgdXN1YWxseSBtYWtlIGl0IHNwYXJzZSB0byBzYXZlIHRpbWUKKyAgYW5kIHRvIGF2b2lkIGFsbG9jYXRpbmcgZGlzayBzcGFjZSB1bnRpbCBpdCdzIGFjdHVhbGx5IHVzZWQuICBGb3IKKyAgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb21tYW5kIHdpbGwgY3JlYXRlIGEgc3BhcnNlIDEwMCBtZWcgZmlsZSBmdWxsCisgIG9mIHplcm9lcy4KKworCisgICAgICAgaG9zdCUKKyAgICAgICBkZCBpZj0vZGV2L3plcm8gb2Y9bmV3X2ZpbGVzeXN0ZW0gc2Vlaz0xMDAgY291bnQ9MSBicz0xTQorCisKKworCisKKworICA4LjIuICBBc3NpZ24gdGhlIGZpbGUgdG8gYSBVTUwgZGV2aWNlCisKKyAgQWRkIGFuIGFyZ3VtZW50IGxpa2UgdGhlIGZvbGxvd2luZyB0byB0aGUgVU1MIGNvbW1hbmQgbGluZToKKworICB1YmQ0PW5ld19maWxlc3lzdGVtCisKKworCisKKyAgbWFraW5nIHN1cmUgdGhhdCB5b3UgdXNlIGFuIHVuYXNzaWduZWQgdWJkIGRldmljZSBudW1iZXIuCisKKworCisgIDguMy4gIENyZWF0aW5nIGFuZCBtb3VudGluZyB0aGUgZmlsZXN5c3RlbQorCisgIE1ha2Ugc3VyZSB0aGF0IHRoZSBmaWxlc3lzdGVtIGlzIGF2YWlsYWJsZSwgZWl0aGVyIGJ5IGJlaW5nIGJ1aWx0IGludG8KKyAgdGhlIGtlcm5lbCwgb3IgYXZhaWxhYmxlIGFzIGEgbW9kdWxlLCB0aGVuIGJvb3QgdXAgVU1MIGFuZCBsb2cgaW4uICBJZgorICB0aGUgcm9vdCBmaWxlc3lzdGVtIGRvZXNuJ3QgaGF2ZSB0aGUgZmlsZXN5c3RlbSB1dGlsaXRpZXMgKG1rZnMsIGZzY2ssCisgIGV0YyksIHRoZW4gZ2V0IHRoZW0gaW50byBVTUwgYnkgd2F5IG9mIHRoZSBuZXQgb3IgaG9zdGZzLgorCisKKyAgTWFrZSB0aGUgbmV3IGZpbGVzeXN0ZW0gb24gdGhlIGRldmljZSBhc3NpZ25lZCB0byB0aGUgbmV3IGZpbGU6CisKKworICAgICAgIGhvc3QjICBta3JlaXNlcmZzIC9kZXYvdWJkLzQKKworCisgICAgICAgPC0tLS0tLS0tLS0tIE1LUkVJU0VSRlN2MiAtLS0tLS0tLS0tLT4KKworICAgICAgIFJlaXNlckZTIHZlcnNpb24gMy42LjI1CisgICAgICAgQmxvY2sgc2l6ZSA0MDk2IGJ5dGVzCisgICAgICAgQmxvY2sgY291bnQgMjU4NTYKKyAgICAgICBVc2VkIGJsb2NrcyA4MjEyCisgICAgICAgICAgICAgICBKb3VybmFsIC0gODE5MiBibG9ja3MgKDE4LTgyMDkpLCBqb3VybmFsIGhlYWRlciBpcyBpbiBibG9jayA4MjEwCisgICAgICAgICAgICAgICBCaXRtYXBzOiAxNworICAgICAgICAgICAgICAgUm9vdCBibG9jayA4MjExCisgICAgICAgSGFzaCBmdW5jdGlvbiAicjUiCisgICAgICAgQVRURU5USU9OOiBBTEwgREFUQSBXSUxMIEJFIExPU1QgT04gJy9kZXYvdWJkLzQnISAoeS9uKXkKKyAgICAgICBqb3VybmFsIHNpemUgODE5MiAoZnJvbSAxOCkKKyAgICAgICBJbml0aWFsaXppbmcgam91cm5hbCAtIDAlLi4uLjIwJS4uLi40MCUuLi4uNjAlLi4uLjgwJS4uLi4xMDAlCisgICAgICAgU3luY2luZy4uZG9uZS4KKworCisKKworICBOb3csIG1vdW50IGl0OgorCisKKyAgICAgICBVTUwjCisgICAgICAgbW91bnQgL2Rldi91YmQvNCAvbW50CisKKworCisKKyAgYW5kIHlvdSdyZSBpbiBidXNpbmVzcy4KKworCisKKworCisKKworCisKKyAgOS4gIEhvc3QgZmlsZSBhY2Nlc3MKKworCisgIElmIHlvdSB3YW50IHRvIGFjY2VzcyBmaWxlcyBvbiB0aGUgaG9zdCBtYWNoaW5lIGZyb20gaW5zaWRlIFVNTCwgeW91CisgIGNhbiB0cmVhdCBpdCBhcyBhIHNlcGFyYXRlIG1hY2hpbmUgYW5kIGVpdGhlciBuZnMgbW91bnQgZGlyZWN0b3JpZXMKKyAgZnJvbSB0aGUgaG9zdCBvciBjb3B5IGZpbGVzIGludG8gdGhlIHZpcnR1YWwgbWFjaGluZSB3aXRoIHNjcCBvciByY3AuCisgIEhvd2V2ZXIsIHNpbmNlIFVNTCBpcyBydW5uaW5nIG9uIHRoZSBob3N0LCBpdCBjYW4gYWNjZXNzIHRob3NlCisgIGZpbGVzIGp1c3QgbGlrZSBhbnkgb3RoZXIgcHJvY2VzcyBhbmQgbWFrZSB0aGVtIGF2YWlsYWJsZSBpbnNpZGUgdGhlCisgIHZpcnR1YWwgbWFjaGluZSB3aXRob3V0IG5lZWRpbmcgdG8gdXNlIHRoZSBuZXR3b3JrLgorCisKKyAgVGhpcyBpcyBub3cgcG9zc2libGUgd2l0aCB0aGUgaG9zdGZzIHZpcnR1YWwgZmlsZXN5c3RlbS4gIFdpdGggaXQsIHlvdQorICBjYW4gbW91bnQgYSBob3N0IGRpcmVjdG9yeSBpbnRvIHRoZSBVTUwgZmlsZXN5c3RlbSBhbmQgYWNjZXNzIHRoZQorICBmaWxlcyBjb250YWluZWQgaW4gaXQganVzdCBhcyB5b3Ugd291bGQgb24gdGhlIGhvc3QuCisKKworICA5LjEuICBVc2luZyBob3N0ZnMKKworICBUbyBiZWdpbiB3aXRoLCBtYWtlIHN1cmUgdGhhdCBob3N0ZnMgaXMgYXZhaWxhYmxlIGluc2lkZSB0aGUgdmlydHVhbAorICBtYWNoaW5lIHdpdGgKKworCisgICAgICAgVU1MIyBjYXQgL3Byb2MvZmlsZXN5c3RlbXMKKworCisKKyAgLiAgaG9zdGZzIHNob3VsZCBiZSBsaXN0ZWQuICBJZiBpdCdzIG5vdCwgZWl0aGVyIHJlYnVpbGQgdGhlIGtlcm5lbAorICB3aXRoIGhvc3RmcyBjb25maWd1cmVkIGludG8gaXQgb3IgbWFrZSBzdXJlIHRoYXQgaG9zdGZzIGlzIGJ1aWx0IGFzIGEKKyAgbW9kdWxlIGFuZCBhdmFpbGFibGUgaW5zaWRlIHRoZSB2aXJ0dWFsIG1hY2hpbmUsIGFuZCBpbnNtb2QgaXQuCisKKworICBOb3cgYWxsIHlvdSBuZWVkIHRvIGRvIGlzIHJ1biBtb3VudDoKKworCisgICAgICAgVU1MIyBtb3VudCBub25lIC9tbnQvaG9zdCAtdCBob3N0ZnMKKworCisKKworICB3aWxsIG1vdW50IHRoZSBob3N0J3MgLyBvbiB0aGUgdmlydHVhbCBtYWNoaW5lJ3MgL21udC9ob3N0LgorCisKKyAgSWYgeW91IGRvbid0IHdhbnQgdG8gbW91bnQgdGhlIGhvc3Qgcm9vdCBkaXJlY3RvcnksIHRoZW4geW91IGNhbgorICBzcGVjaWZ5IGEgc3ViZGlyZWN0b3J5IHRvIG1vdW50IHdpdGggdGhlIC1vIHN3aXRjaCB0byBtb3VudDoKKworCisgICAgICAgVU1MIyBtb3VudCBub25lIC9tbnQvaG9tZSAtdCBob3N0ZnMgLW8gL2hvbWUKKworCisKKworICB3aWxsIG1vdW50IHRoZSBob3N0cydzIC9ob21lIG9uIHRoZSB2aXJ0dWFsIG1hY2hpbmUncyAvbW50L2hvbWUuCisKKworCisgIDkuMi4gIGhvc3RmcyBhcyB0aGUgcm9vdCBmaWxlc3lzdGVtCisKKyAgSXQncyBwb3NzaWJsZSB0byBib290IGZyb20gYSBkaXJlY3RvcnkgaGllcmFyY2h5IG9uIHRoZSBob3N0IHVzaW5nCisgIGhvc3RmcyByYXRoZXIgdGhhbiB1c2luZyB0aGUgc3RhbmRhcmQgZmlsZXN5c3RlbSBpbiBhIGZpbGUuCisKKyAgVG8gc3RhcnQsIHlvdSBuZWVkIHRoYXQgaGllcmFyY2h5LiAgVGhlIGVhc2llc3Qgd2F5IGlzIHRvIGxvb3AgbW91bnQKKyAgYW4gZXhpc3Rpbmcgcm9vdF9mcyBmaWxlOgorCisKKyAgICAgICBob3N0IyAgbW91bnQgcm9vdF9mcyB1bWxfcm9vdF9kaXIgLW8gbG9vcAorCisKKworCisgIFlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgZmlsZXN5c3RlbSB0eXBlIG9mIC8gaW4gZXRjL2ZzdGFiIHRvIGJlCisgICdob3N0ZnMnLCBzbyB0aGF0IGxpbmUgbG9va3MgbGlrZSB0aGlzOgorCisgIC9kZXYvdWJkLzAgICAgICAgLyAgICAgICAgaG9zdGZzICAgICAgZGVmYXVsdHMgICAgICAgICAgMSAgIDEKKworCisKKworICBUaGVuIHlvdSBuZWVkIHRvIGNob3duIHRvIHlvdXJzZWxmIGFsbCB0aGUgZmlsZXMgaW4gdGhhdCBkaXJlY3RvcnkKKyAgdGhhdCBhcmUgb3duZWQgYnkgcm9vdC4gIFRoaXMgd29ya2VkIGZvciBtZToKKworCisgICAgICAgaG9zdCMgIGZpbmQgLiAtdWlkIDAgLWV4ZWMgY2hvd24gamRpa2Uge30gXDsKKworCisKKworICBOZXh0LCBtYWtlIHN1cmUgdGhhdCB5b3VyIFVNTCBrZXJuZWwgaGFzIGhvc3RmcyBjb21waWxlZCBpbiwgbm90IGFzIGEKKyAgbW9kdWxlLiAgVGhlbiBydW4gVU1MIHdpdGggdGhlIGJvb3QgZGV2aWNlIHBvaW50aW5nIGF0IHRoYXQgZGlyZWN0b3J5OgorCisKKyAgICAgICAgdWJkMD0vcGF0aC90by91bWwvcm9vdC9kaXJlY3RvcnkKKworCisKKworICBVTUwgc2hvdWxkIHRoZW4gYm9vdCBhcyBpdCBkb2VzIG5vcm1hbGx5LgorCisKKyAgOS4zLiAgQnVpbGRpbmcgaG9zdGZzCisKKyAgSWYgeW91IG5lZWQgdG8gYnVpbGQgaG9zdGZzIGJlY2F1c2UgaXQncyBub3QgaW4geW91ciBrZXJuZWwsIHlvdSBoYXZlCisgIHR3byBjaG9pY2VzOgorCisKKworICBvICBDb21waWxpbmcgaG9zdGZzIGludG8gdGhlIGtlcm5lbDoKKworCisgICAgIFJlY29uZmlndXJlIHRoZSBrZXJuZWwgYW5kIHNldCB0aGUgJ0hvc3QgZmlsZXN5c3RlbScgb3B0aW9uIHVuZGVyCisKKworICBvICBDb21waWxpbmcgaG9zdGZzIGFzIGEgbW9kdWxlOgorCisKKyAgICAgUmVjb25maWd1cmUgdGhlIGtlcm5lbCBhbmQgc2V0IHRoZSAnSG9zdCBmaWxlc3lzdGVtJyBvcHRpb24gdW5kZXIKKyAgICAgYmUgaW4gYXJjaC91bS9mcy9ob3N0ZnMvaG9zdGZzLm8uICBJbnN0YWxsIHRoYXQgaW4KKyAgICAgL2xpYi9tb2R1bGVzL2B1bmFtZSAtcmAvZnMgaW4gdGhlIHZpcnR1YWwgbWFjaGluZSwgYm9vdCBpdCB1cCwgYW5kCisKKworICAgICAgIFVNTCMgaW5zbW9kIGhvc3RmcworCisKKworCisKKworCisKKworCisKKworICAxMC4gIFRoZSBNYW5hZ2VtZW50IENvbnNvbGUKKworCisKKyAgVGhlIFVNTCBtYW5hZ2VtZW50IGNvbnNvbGUgaXMgYSBsb3ctbGV2ZWwgaW50ZXJmYWNlIHRvIHRoZSBrZXJuZWwsCisgIHNvbWV3aGF0IGxpa2UgdGhlIGkzODYgU3lzUnEgaW50ZXJmYWNlLiAgU2luY2UgdGhlcmUgaXMgYSBmdWxsLWJsb3duCisgIG9wZXJhdGluZyBzeXN0ZW0gdW5kZXIgVU1MLCB0aGVyZSBpcyBtdWNoIGdyZWF0ZXIgZmxleGliaWxpdHkgcG9zc2libGUKKyAgdGhhbiB3aXRoIHRoZSBTeXNScSBtZWNoYW5pc20uCisKKworICBUaGVyZSBhcmUgYSBudW1iZXIgb2YgdGhpbmdzIHlvdSBjYW4gZG8gd2l0aCB0aGUgbWNvbnNvbGUgaW50ZXJmYWNlOgorCisgIG8gIGdldCB0aGUga2VybmVsIHZlcnNpb24KKworICBvICBhZGQgYW5kIHJlbW92ZSBkZXZpY2VzCisKKyAgbyAgaGFsdCBvciByZWJvb3QgdGhlIG1hY2hpbmUKKworICBvICBTZW5kIFN5c1JxIGNvbW1hbmRzCisKKyAgbyAgUGF1c2UgYW5kIHJlc3VtZSB0aGUgVU1MCisKKworICBZb3UgbmVlZCB0aGUgbWNvbnNvbGUgY2xpZW50ICh1bWxfbWNvbnNvbGUpIHdoaWNoIGlzIHByZXNlbnQgaW4gQ1ZTCisgICgvdG9vbHMvbWNvbnNvbGUpIGluIDIuNC41LTl1bSBhbmQgbGF0ZXIsIGFuZCB3aWxsIGJlIGluIHRoZSBSUE0gaW4KKyAgMi40LjYuCisKKworICBZb3UgYWxzbyBuZWVkIENPTkZJR19NQ09OU09MRSAodW5kZXIgJ0dlbmVyYWwgU2V0dXAnKSBlbmFibGVkIGluIFVNTC4KKyAgV2hlbiB5b3UgYm9vdCBVTUwsIHlvdSdsbCBzZWUgYSBsaW5lIGxpa2U6CisKKworICAgICAgIG1jb25zb2xlIGluaXRpYWxpemVkIG9uIC9ob21lL2pkaWtlLy51bWwvdW1sTkozMnlML21jb25zb2xlCisKKworCisKKyAgSWYgeW91IHNwZWNpZnkgYSB1bmlxdWUgbWFjaGluZSBpZCBvbmUgdGhlIFVNTCBjb21tYW5kIGxpbmUsIGkuZS4KKworCisgICAgICAgIHVtaWQ9ZGViaWFuCisKKworCisKKyAgeW91J2xsIHNlZSB0aGlzCisKKworICAgICAgIG1jb25zb2xlIGluaXRpYWxpemVkIG9uIC9ob21lL2pkaWtlLy51bWwvZGViaWFuL21jb25zb2xlCisKKworCisKKyAgVGhhdCBmaWxlIGlzIHRoZSBzb2NrZXQgdGhhdCB1bWxfbWNvbnNvbGUgd2lsbCB1c2UgdG8gY29tbXVuaWNhdGUgd2l0aAorICBVTUwuICBSdW4gaXQgd2l0aCBlaXRoZXIgdGhlIHVtaWQgb3IgdGhlIGZ1bGwgcGF0aCBhcyBpdHMgYXJndW1lbnQ6CisKKworICAgICAgIGhvc3QlIHVtbF9tY29uc29sZSBkZWJpYW4KKworCisKKworICBvcgorCisKKyAgICAgICBob3N0JSB1bWxfbWNvbnNvbGUgL2hvbWUvamRpa2UvLnVtbC9kZWJpYW4vbWNvbnNvbGUKKworCisKKworICBZb3UnbGwgZ2V0IGEgcHJvbXB0LCBhdCB3aGljaCB5b3UgY2FuIHJ1biBvbmUgb2YgdGhlc2UgY29tbWFuZHM6CisKKyAgbyAgdmVyc2lvbgorCisgIG8gIGhhbHQKKworICBvICByZWJvb3QKKworICBvICBjb25maWcKKworICBvICByZW1vdmUKKworICBvICBzeXNycQorCisgIG8gIGhlbHAKKworICBvICBjYWQKKworICBvICBzdG9wCisKKyAgbyAgZ28KKworCisgIDEwLjEuICB2ZXJzaW9uCisKKyAgVGhpcyB0YWtlcyBubyBhcmd1bWVudHMuICBJdCBwcmludHMgdGhlIFVNTCB2ZXJzaW9uLgorCisKKyAgICAgICAobWNvbnNvbGUpICB2ZXJzaW9uCisgICAgICAgT0sgTGludXggdXNlcm1vZGUgMi40LjUtOXVtICMxIFdlZCBKdW4gMjAgMjI6NDc6MDggRURUIDIwMDEgaTY4NgorCisKKworCisgIFRoZXJlIGFyZSBhIGNvdXBsZSBhY3R1YWwgdXNlcyBmb3IgdGhpcy4gIEl0J3MgYSBzaW1wbGUgbm8tb3Agd2hpY2gKKyAgY2FuIGJlIHVzZWQgdG8gY2hlY2sgdGhhdCBhIFVNTCBpcyBydW5uaW5nLiAgSXQncyBhbHNvIGEgd2F5IG9mCisgIHNlbmRpbmcgYW4gaW50ZXJydXB0IHRvIHRoZSBVTUwuICBUaGlzIGlzIHNvbWV0aW1lcyB1c2VmdWwgb24gU01QCisgIGhvc3RzLCB3aGVyZSB0aGVyZSdzIGEgYnVnIHdoaWNoIGNhdXNlcyBzaWduYWxzIHRvIFVNTCB0byBiZSBsb3N0LAorICBvZnRlbiBjYXVzaW5nIGl0IHRvIGFwcGVhciB0byBoYW5nLiAgU2VuZGluZyBzdWNoIGEgVU1MIHRoZSBtY29uc29sZQorICB2ZXJzaW9uIGNvbW1hbmQgaXMgYSBnb29kIHdheSB0byAnd2FrZSBpdCB1cCcgYmVmb3JlIG5ldHdvcmtpbmcgaGFzCisgIGJlZW4gZW5hYmxlZCwgYXMgaXQgZG9lcyBub3QgZG8gYW55dGhpbmcgdG8gdGhlIGZ1bmN0aW9uIG9mIHRoZSBVTUwuCisKKworCisgIDEwLjIuICBoYWx0IGFuZCByZWJvb3QKKworICBUaGVzZSB0YWtlIG5vIGFyZ3VtZW50cy4gIFRoZXkgc2h1dCB0aGUgbWFjaGluZSBkb3duIGltbWVkaWF0ZWx5LCB3aXRoCisgIG5vIHN5bmNpbmcgb2YgZGlza3MgYW5kIG5vIGNsZWFuIHNodXRkb3duIG9mIHVzZXJzcGFjZS4gIFNvLCB0aGV5IGFyZQorICBwcmV0dHkgY2xvc2UgdG8gY3Jhc2hpbmcgdGhlIG1hY2hpbmUuCisKKworICAgICAgIChtY29uc29sZSkgIGhhbHQKKyAgICAgICBPSworCisKKworCisKKworICAxMC4zLiAgY29uZmlnCisKKyAgImNvbmZpZyIgYWRkcyBhIG5ldyBkZXZpY2UgdG8gdGhlIHZpcnR1YWwgbWFjaGluZS4gIEN1cnJlbnRseSB0aGUgdWJkCisgIGFuZCBuZXR3b3JrIGRyaXZlcnMgc3VwcG9ydCB0aGlzLiAgSXQgdGFrZXMgb25lIGFyZ3VtZW50LCB3aGljaCBpcyB0aGUKKyAgZGV2aWNlIHRvIGFkZCwgd2l0aCB0aGUgc2FtZSBzeW50YXggYXMgdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUuCisKKworCisKKyAgKG1jb25zb2xlKQorICBjb25maWcgdWJkMz0vaG9tZS9qZGlrZS9pbmNvbWluZy9yb290cy9yb290X2ZzX2RlYmlhbjIyCisKKyAgT0sKKyAgKG1jb25zb2xlKSAgY29uZmlnIGV0aDE9bWNhc3QKKyAgT0sKKworCisKKworCisKKyAgMTAuNC4gIHJlbW92ZQorCisgICJyZW1vdmUiIGRlbGV0ZXMgYSBkZXZpY2UgZnJvbSB0aGUgc3lzdGVtLiAgSXRzIGFyZ3VtZW50IGlzIGp1c3QgdGhlCisgIG5hbWUgb2YgdGhlIGRldmljZSB0byBiZSByZW1vdmVkLiBUaGUgZGV2aWNlIG11c3QgYmUgaWRsZSBpbiB3aGF0ZXZlcgorICBzZW5zZSB0aGUgZHJpdmVyIGNvbnNpZGVycyBuZWNlc3NhcnkuICBJbiB0aGUgY2FzZSBvZiB0aGUgdWJkIGRyaXZlciwKKyAgdGhlIHJlbW92ZWQgYmxvY2sgZGV2aWNlIG11c3Qgbm90IGJlIG1vdW50ZWQsIHN3YXBwZWQgb24sIG9yIG90aGVyd2lzZQorICBvcGVuLCBhbmQgaW4gdGhlIGNhc2Ugb2YgdGhlIG5ldHdvcmsgZHJpdmVyLCB0aGUgZGV2aWNlIG11c3QgYmUgZG93bi4KKworCisgICAgICAgKG1jb25zb2xlKSAgcmVtb3ZlIHViZDMKKyAgICAgICBPSworICAgICAgIChtY29uc29sZSkgIHJlbW92ZSBldGgxCisgICAgICAgT0sKKworCisKKworCisKKyAgMTAuNS4gIHN5c3JxCisKKyAgVGhpcyB0YWtlcyBvbmUgYXJndW1lbnQsIHdoaWNoIGlzIGEgc2luZ2xlIGxldHRlci4gIEl0IGNhbGxzIHRoZQorICBnZW5lcmljIGtlcm5lbCdzIFN5c1JxIGRyaXZlciwgd2hpY2ggZG9lcyB3aGF0ZXZlciBpcyBjYWxsZWQgZm9yIGJ5CisgIHRoYXQgYXJndW1lbnQuICBTZWUgdGhlIFN5c1JxIGRvY3VtZW50YXRpb24gaW4gRG9jdW1lbnRhdGlvbi9zeXNycS50eHQKKyAgaW4geW91ciBmYXZvcml0ZSBrZXJuZWwgdHJlZSB0byBzZWUgd2hhdCBsZXR0ZXJzIGFyZSB2YWxpZCBhbmQgd2hhdAorICB0aGV5IGRvLgorCisKKworICAxMC42LiAgaGVscAorCisgICJoZWxwIiByZXR1cm5zIGEgc3RyaW5nIGxpc3RpbmcgdGhlIHZhbGlkIGNvbW1hbmRzIGFuZCB3aGF0IGVhY2ggb25lCisgIGRvZXMuCisKKworCisgIDEwLjcuICBjYWQKKworICBUaGlzIGludm9rZXMgdGhlIEN0bC1BbHQtRGVsIGFjdGlvbiBvbiBpbml0LiAgV2hhdCBleGFjdGx5IHRoaXMgZW5kcworICB1cCBkb2luZyBpcyB1cCB0byAvZXRjL2luaXR0YWIuICBOb3JtYWxseSwgaXQgcmVib290cyB0aGUgbWFjaGluZS4KKyAgV2l0aCBVTUwsIHRoaXMgaXMgdXN1YWxseSBub3QgZGVzaXJlZCwgc28gaWYgYSBoYWx0IHdvdWxkIGJlIGJldHRlciwKKyAgdGhlbiBmaW5kIHRoZSBzZWN0aW9uIG9mIGluaXR0YWIgdGhhdCBsb29rcyBsaWtlIHRoaXMKKworCisgICAgICAgIyBXaGF0IHRvIGRvIHdoZW4gQ1RSTC1BTFQtREVMIGlzIHByZXNzZWQuCisgICAgICAgY2E6MTIzNDU6Y3RybGFsdGRlbDovc2Jpbi9zaHV0ZG93biAtdDEgLWEgLXIgbm93CisKKworCisKKyAgYW5kIGNoYW5nZSB0aGUgY29tbWFuZCB0byBoYWx0LgorCisKKworICAxMC44LiAgc3RvcAorCisgIFRoaXMgcHV0cyB0aGUgVU1MIGluIGEgbG9vcCByZWFkaW5nIG1jb25zb2xlIHJlcXVlc3RzIHVudGlsIGEgJ2dvJworICBtY29uc29sZSBjb21tYW5kIGlzIHJlY2VpdmVkLiBUaGlzIGlzIHZlcnkgdXNlZnVsIGZvciBtYWtpbmcgYmFja3VwcworICBvZiBVTUwgZmlsZXN5c3RlbXMsIGFzIHRoZSBVTUwgY2FuIGJlIHN0b3BwZWQsIHRoZW4gc3luY2VkIHZpYSAnc3lzcnEKKyAgcycsIHNvIHRoYXQgZXZlcnl0aGluZyBpcyB3cml0dGVuIHRvIHRoZSBmaWxlc3lzdGVtLiBZb3UgY2FuIHRoZW4gY29weQorICB0aGUgZmlsZXN5c3RlbSBhbmQgdGhlbiBzZW5kIHRoZSBVTUwgJ2dvJyB2aWEgbWNvbnNvbGUuCisKKworICBOb3RlIHRoYXQgYSBVTUwgcnVubmluZyB3aXRoIG1vcmUgdGhhbiBvbmUgQ1BVIHdpbGwgaGF2ZSBwcm9ibGVtcworICBhZnRlciB5b3Ugc2VuZCB0aGUgJ3N0b3AnIGNvbW1hbmQsIGFzIG9ubHkgb25lIENQVSB3aWxsIGJlIGhlbGQgaW4gYQorICBtY29uc29sZSBsb29wIGFuZCBhbGwgb3RoZXJzIHdpbGwgY29udGludWUgYXMgbm9ybWFsLiAgVGhpcyBpcyBhIGJ1ZywKKyAgYW5kIHdpbGwgYmUgZml4ZWQuCisKKworCisgIDEwLjkuICBnbworCisgIFRoaXMgcmVzdW1lcyBhIFVNTCBhZnRlciBiZWluZyBwYXVzZWQgYnkgYSAnc3RvcCcgY29tbWFuZC4gTm90ZSB0aGF0CisgIHdoZW4gdGhlIFVNTCBoYXMgcmVzdW1lZCwgVENQIGNvbm5lY3Rpb25zIG1heSBoYXZlIHRpbWVkIG91dCBhbmQgaWYKKyAgdGhlIFVNTCBpcyBwYXVzZWQgZm9yIGEgbG9uZyBwZXJpb2Qgb2YgdGltZSwgY3JvbmQgbWlnaHQgZ28gYSBsaXR0bGUKKyAgY3JhenksIHJ1bm5pbmcgYWxsIHRoZSBqb2JzIGl0IGRpZG4ndCBkbyBlYXJsaWVyLgorCisKKworCisKKworCisKKyAgMTEuICBLZXJuZWwgZGVidWdnaW5nCisKKworICBOb3RlOiBUaGUgaW50ZXJmYWNlIHRoYXQgbWFrZXMgZGVidWdnaW5nLCBhcyBkZXNjcmliZWQgaGVyZSwgcG9zc2libGUKKyAgaXMgcHJlc2VudCBpbiAyLjQuMC10ZXN0NiBrZXJuZWxzIGFuZCBsYXRlci4KKworCisgIFNpbmNlIHRoZSB1c2VyLW1vZGUga2VybmVsIHJ1bnMgYXMgYSBub3JtYWwgTGludXggcHJvY2VzcywgaXQgaXMKKyAgcG9zc2libGUgdG8gZGVidWcgaXQgd2l0aCBnZGIgYWxtb3N0IGxpa2UgYW55IG90aGVyIHByb2Nlc3MuICBJdCBpcworICBzbGlnaHRseSBkaWZmZXJlbnQgYmVjYXVzZSB0aGUga2VybmVsJ3MgdGhyZWFkcyBhcmUgYWxyZWFkeSBiZWluZworICBwdHJhY2VkIGZvciBzeXN0ZW0gY2FsbCBpbnRlcmNlcHRpb24sIHNvIGdkYiBjYW4ndCBwdHJhY2UgdGhlbS4KKyAgSG93ZXZlciwgYSBtZWNoYW5pc20gaGFzIGJlZW4gYWRkZWQgdG8gd29yayBhcm91bmQgdGhhdCBwcm9ibGVtLgorCisKKyAgSW4gb3JkZXIgdG8gZGVidWcgdGhlIGtlcm5lbCwgeW91IG5lZWQgYnVpbGQgaXQgZnJvbSBzb3VyY2UuICBTZWUKKyAgYGBDb21waWxpbmcgdGhlIGtlcm5lbCBhbmQgbW9kdWxlcycnICBmb3IgaW5mb3JtYXRpb24gb24gZG9pbmcgdGhhdC4KKyAgTWFrZSBzdXJlIHRoYXQgeW91IGVuYWJsZSBDT05GSUdfREVCVUdTWU0gYW5kIENPTkZJR19QVF9QUk9YWSBkdXJpbmcKKyAgdGhlIGNvbmZpZy4gIFRoZXNlIHdpbGwgY29tcGlsZSB0aGUga2VybmVsIHdpdGggLWcsIGFuZCBlbmFibGUgdGhlCisgIHB0cmFjZSBwcm94eSBzbyB0aGF0IGdkYiB3b3JrcyB3aXRoIFVNTCwgcmVzcGVjdGl2ZWx5LgorCisKKworCisgIDExLjEuICBTdGFydGluZyB0aGUga2VybmVsIHVuZGVyIGdkYgorCisgIFlvdSBjYW4gaGF2ZSB0aGUga2VybmVsIHJ1bm5pbmcgdW5kZXIgdGhlIGNvbnRyb2wgb2YgZ2RiIGZyb20gdGhlCisgIGJlZ2lubmluZyBieSBwdXR0aW5nICdkZWJ1Zycgb24gdGhlIGNvbW1hbmQgbGluZS4gIFlvdSB3aWxsIGdldCBhbgorICB4dGVybSB3aXRoIGdkYiBydW5uaW5nIGluc2lkZSBpdC4gIFRoZSBrZXJuZWwgd2lsbCBzZW5kIHNvbWUgY29tbWFuZHMKKyAgdG8gZ2RiIHdoaWNoIHdpbGwgbGVhdmUgaXQgc3RvcHBlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHN0YXJ0X2tlcm5lbC4KKyAgQXQgdGhpcyBwb2ludCwgeW91IGNhbiBnZXQgdGhpbmdzIGdvaW5nIHdpdGggJ25leHQnLCAnc3RlcCcsIG9yCisgICdjb250Jy4KKworCisgIFRoZXJlIGlzIGEgdHJhbnNjcmlwdCBvZiBhIGRlYnVnZ2luZyBzZXNzaW9uICBoZXJlIDxkZWJ1Zy0KKyAgc2Vzc2lvbi5odG1sPiAsIHdpdGggYnJlYWtwb2ludHMgYmVpbmcgc2V0IGluIHRoZSBzY2hlZHVsZXIgYW5kIGluIGFuCisgIGludGVycnVwdCBoYW5kbGVyLgorICAxMS4yLiAgRXhhbWluaW5nIHNsZWVwaW5nIHByb2Nlc3NlcworCisgIE5vdCBldmVyeSBidWcgaXMgZXZpZGVudCBpbiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgcHJvY2Vzcy4gIFNvbWV0aW1lcywKKyAgcHJvY2Vzc2VzIGhhbmcgaW4gdGhlIGtlcm5lbCB3aGVuIHRoZXkgc2hvdWxkbid0IGJlY2F1c2UgdGhleSd2ZQorICBkZWFkbG9ja2VkIG9uIGEgc2VtYXBob3JlIG9yIHNvbWV0aGluZyBzaW1pbGFyLiAgSW4gdGhpcyBjYXNlLCB3aGVuCisgIHlvdSBeQyBnZGIgYW5kIGdldCBhIGJhY2t0cmFjZSwgeW91IHdpbGwgc2VlIHRoZSBpZGxlIHRocmVhZCwgd2hpY2gKKyAgaXNuJ3QgdmVyeSByZWxldmFudC4KKworCisgIFdoYXQgeW91IHdhbnQgaXMgdGhlIHN0YWNrIG9mIHdoYXRldmVyIHByb2Nlc3MgaXMgc2xlZXBpbmcgd2hlbiBpdAorICBzaG91bGRuJ3QgYmUuICBZb3UgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIHByb2Nlc3MgdGhhdCBpcywgd2hpY2ggaXMKKyAgZ2VuZXJhbGx5IGZhaXJseSBlYXN5LiAgVGhlbiB5b3UgbmVlZCB0byBnZXQgaXRzIGhvc3QgcHJvY2VzcyBpZCwKKyAgd2hpY2ggeW91IGNhbiBkbyBlaXRoZXIgYnkgbG9va2luZyBhdCBwcyBvbiB0aGUgaG9zdCBvciBhdAorICB0YXNrLnRocmVhZC5leHRlcm5fcGlkIGluIGdkYi4KKworCisgIE5vdyB3aGF0IHlvdSBkbyBpcyB0aGlzOgorCisgIG8gIGRldGFjaCBmcm9tIHRoZSBjdXJyZW50IHRocmVhZAorCisKKyAgICAgICAoVU1MIGdkYikgIGRldAorCisKKworCisKKyAgbyAgYXR0YWNoIHRvIHRoZSB0aHJlYWQgeW91IGFyZSBpbnRlcmVzdGVkIGluCisKKworICAgICAgIChVTUwgZ2RiKSAgYXR0IDxob3N0IHBpZD4KKworCisKKworCisgIG8gIGxvb2sgYXQgaXRzIHN0YWNrIGFuZCBhbnl0aGluZyBlbHNlIG9mIGludGVyZXN0CisKKworICAgICAgIChVTUwgZ2RiKSAgYnQKKworCisKKworICBOb3RlIHRoYXQgeW91IGNhbid0IGRvIGFueXRoaW5nIGF0IHRoaXMgcG9pbnQgdGhhdCByZXF1aXJlcyB0aGF0IGEKKyAgcHJvY2VzcyBleGVjdXRlLCBlLmcuIGNhbGxpbmcgYSBmdW5jdGlvbgorCisgIG8gIHdoZW4geW91J3JlIGRvbmUgbG9va2luZyBhdCB0aGF0IHByb2Nlc3MsIHJlYXR0YWNoIHRvIHRoZSBjdXJyZW50CisgICAgIHRocmVhZCBhbmQgY29udGludWUgaXQKKworCisgICAgICAgKFVNTCBnZGIpCisgICAgICAgYXR0IDEKKworCisKKworCisKKyAgICAgICAoVU1MIGdkYikKKyAgICAgICBjCisKKworCisKKyAgSGVyZSwgc3BlY2lmeWluZyBhbnkgcGlkIHdoaWNoIGlzIG5vdCB0aGUgcHJvY2VzcyBpZCBvZiBhIFVNTCB0aHJlYWQKKyAgd2lsbCBjYXVzZSBnZGIgdG8gcmVhdHRhY2ggdG8gdGhlIGN1cnJlbnQgdGhyZWFkLiAgSSBjb21tb25seSB1c2UgMSwKKyAgYnV0IGFueSBvdGhlciBpbnZhbGlkIHBpZCB3b3VsZCB3b3JrLgorCisKKworICAxMS4zLiAgUnVubmluZyBkZGQgb24gVU1MCisKKyAgZGRkIHdvcmtzIG9uIFVNTCwgYnV0IHJlcXVpcmVzIGEgc3BlY2lhbCBrbHVkZ2UuICBUaGUgcHJvY2VzcyBnb2VzCisgIGxpa2UgdGhpczoKKworICBvICBTdGFydCBkZGQKKworCisgICAgICAgaG9zdCUgZGRkIGxpbnV4CisKKworCisKKworICBvICBXaXRoIHBzLCBnZXQgdGhlIHBpZCBvZiB0aGUgZ2RiIHRoYXQgZGRkIHN0YXJ0ZWQuICBZb3UgY2FuIGFzayB0aGUKKyAgICAgZ2RiIHRvIHRlbGwgeW91LCBidXQgZm9yIHNvbWUgcmVhc29uIHRoYXQgY29uZnVzZXMgdGhpbmdzIGFuZAorICAgICBjYXVzZXMgYSBoYW5nLgorCisgIG8gIHJ1biBVTUwgd2l0aCAnZGVidWc9cGFyZW50IGdkYi1waWQ9PHBpZD4nIGFkZGVkIHRvIHRoZSBjb21tYW5kIGxpbmUKKyAgICAgLSBpdCB3aWxsIGp1c3Qgc2l0IHRoZXJlIGFmdGVyIHlvdSBoaXQgcmV0dXJuCisKKyAgbyAgdHlwZSAnYXR0IDEnIHRvIHRoZSBkZGQgZ2RiIGFuZCB5b3Ugd2lsbCBzZWUgc29tZXRoaW5nIGxpa2UKKworCisgICAgICAgMHhhMDEzZGM1MSBpbiBfX2tpbGwgKCkKKworCisgICAgICAgKGdkYikKKworCisKKworCisgIG8gIEF0IHRoaXMgcG9pbnQsIHR5cGUgJ2MnLCBVTUwgd2lsbCBib290IHVwLCBhbmQgeW91IGNhbiB1c2UgZGRkIGp1c3QKKyAgICAgYXMgeW91IGRvIG9uIGFueSBvdGhlciBwcm9jZXNzLgorCisKKworICAxMS40LiAgRGVidWdnaW5nIG1vZHVsZXMKKworICBnZGIgaGFzIHN1cHBvcnQgZm9yIGRlYnVnZ2luZyBjb2RlIHdoaWNoIGlzIGR5bmFtaWNhbGx5IGxvYWRlZCBpbnRvCisgIHRoZSBwcm9jZXNzLiAgVGhpcyBzdXBwb3J0IGlzIHdoYXQgaXMgbmVlZGVkIHRvIGRlYnVnIGtlcm5lbCBtb2R1bGVzCisgIHVuZGVyIFVNTC4KKworCisgIFVzaW5nIHRoYXQgc3VwcG9ydCBpcyBzb21ld2hhdCBjb21wbGljYXRlZC4gIFlvdSBoYXZlIHRvIHRlbGwgZ2RiIHdoYXQKKyAgb2JqZWN0IGZpbGUgeW91IGp1c3QgbG9hZGVkIGludG8gVU1MIGFuZCB3aGVyZSBpbiBtZW1vcnkgaXQgaXMuICBUaGVuLAorICBpdCBjYW4gcmVhZCB0aGUgc3ltYm9sIHRhYmxlLCBhbmQgZmlndXJlIG91dCB3aGVyZSBhbGwgdGhlIHN5bWJvbHMgYXJlCisgIGZyb20gdGhlIGxvYWQgYWRkcmVzcyB0aGF0IHlvdSBwcm92aWRlZC4gIEl0IGdldHMgbW9yZSBpbnRlcmVzdGluZworICB3aGVuIHlvdSBsb2FkIHRoZSBtb2R1bGUgYWdhaW4gKGkuZS4gYWZ0ZXIgYW4gcm1tb2QpLiAgWW91IGhhdmUgdG8KKyAgdGVsbCBnZGIgdG8gZm9yZ2V0IGFib3V0IGFsbCBpdHMgc3ltYm9scywgaW5jbHVkaW5nIHRoZSBtYWluIFVNTCBvbmVzCisgIGZvciBzb21lIHJlYXNvbiwgdGhlbiBsb2FkIHRoZW4gYWxsIGJhY2sgaW4gYWdhaW4uCisKKworICBUaGVyZSdzIGFuIGVhc3kgd2F5IGFuZCBhIGhhcmQgd2F5IHRvIGRvIHRoaXMuICBUaGUgZWFzeSB3YXkgaXMgdG8gdXNlCisgIHRoZSB1bWxnZGIgZXhwZWN0IHNjcmlwdCB3cml0dGVuIGJ5IENoYW5kYW4gS3VkaWdlLiAgSXQgYmFzaWNhbGx5CisgIGF1dG9tYXRlcyB0aGUgcHJvY2VzcyBmb3IgeW91LgorCisKKyAgRmlyc3QsIHlvdSBtdXN0IHRlbGwgaXQgd2hlcmUgeW91ciBtb2R1bGVzIGFyZS4gIFRoZXJlIGlzIGEgbGlzdCBpbgorICB0aGUgc2NyaXB0IHRoYXQgbG9va3MgbGlrZSB0aGlzOgorICAgICAgIHNldCBNT0RVTEVfUEFUSFMgeworICAgICAgICJmYXQiICIvdXNyL3NyYy91bWwvbGludXgtMi40LjE4L2ZzL2ZhdC9mYXQubyIKKyAgICAgICAiaXNvZnMiICIvdXNyL3NyYy91bWwvbGludXgtMi40LjE4L2ZzL2lzb2ZzL2lzb2ZzLm8iCisgICAgICAgIm1pbml4IiAiL3Vzci9zcmMvdW1sL2xpbnV4LTIuNC4xOC9mcy9taW5peC9taW5peC5vIgorICAgICAgIH0KKworCisKKworICBZb3UgY2hhbmdlIHRoYXQgdG8gbGlzdCB0aGUgbmFtZXMgYW5kIHBhdGhzIG9mIHRoZSBtb2R1bGVzIHRoYXQgeW91CisgIGFyZSBnb2luZyB0byBkZWJ1Zy4gIFRoZW4geW91IHJ1biBpdCBmcm9tIHRoZSB0b3BsZXZlbCBkaXJlY3Rvcnkgb2YKKyAgeW91ciBVTUwgcG9vbCBhbmQgaXQgYmFzaWNhbGx5IHRlbGxzIHlvdSB3aGF0IHRvIGRvOgorCisKKworCisgICAgICAgICAgICAgICAgICAgKioqKioqKiogR0RCIHBpZCBpcyAyMTkwMyAqKioqKioqKgorICAgICAgIFN0YXJ0IFVNTCBhczogLi9saW51eCA8a2VybmVsIHN3aXRjaGVzPiBkZWJ1ZyBnZGItcGlkPTIxOTAzCisKKworCisgICAgICAgR05VIGdkYiA1LjByaC01IFJlZCBIYXQgTGludXggNy4xCisgICAgICAgQ29weXJpZ2h0IDIwMDEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICAgICAgR0RCIGlzIGZyZWUgc29mdHdhcmUsIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhbmQgeW91IGFyZQorICAgICAgIHdlbGNvbWUgdG8gY2hhbmdlIGl0IGFuZC9vciBkaXN0cmlidXRlIGNvcGllcyBvZiBpdCB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMuCisgICAgICAgVHlwZSAic2hvdyBjb3B5aW5nIiB0byBzZWUgdGhlIGNvbmRpdGlvbnMuCisgICAgICAgVGhlcmUgaXMgYWJzb2x1dGVseSBubyB3YXJyYW50eSBmb3IgR0RCLiAgVHlwZSAic2hvdyB3YXJyYW50eSIgZm9yIGRldGFpbHMuCisgICAgICAgVGhpcyBHREIgd2FzIGNvbmZpZ3VyZWQgYXMgImkzODYtcmVkaGF0LWxpbnV4Ii4uLgorICAgICAgIChnZGIpIGIgc3lzX2luaXRfbW9kdWxlCisgICAgICAgQnJlYWtwb2ludCAxIGF0IDB4YTAwMTE5MjM6IGZpbGUgbW9kdWxlLmMsIGxpbmUgMzQ5LgorICAgICAgIChnZGIpIGF0dCAxCisKKworCisKKyAgQWZ0ZXIgeW91IHJ1biBVTUwgYW5kIGl0IHNpdHMgdGhlcmUgZG9pbmcgbm90aGluZywgeW91IGhpdCByZXR1cm4gYXQKKyAgdGhlICdhdHQgMScgYW5kIGNvbnRpbnVlIGl0OgorCisKKyAgICAgICBBdHRhY2hpbmcgdG8gcHJvZ3JhbTogL2hvbWUvamRpa2UvbGludXgvMi40L3VtLy4vbGludXgsIHByb2Nlc3MgMQorICAgICAgIDB4YTAwZjQyMjEgaW4gX19raWxsICgpCisgICAgICAgKFVNTCBnZGIpICBjCisgICAgICAgQ29udGludWluZy4KKworCisKKworICBBdCB0aGlzIHBvaW50LCB5b3UgZGVidWcgbm9ybWFsbHkuICBXaGVuIHlvdSBpbnNtb2Qgc29tZXRoaW5nLCB0aGUKKyAgZXhwZWN0IG1hZ2ljIHdpbGwga2ljayBpbiBhbmQgeW91J2xsIHNlZSBzb21ldGhpbmcgbGlrZToKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisgICAqKiogTW9kdWxlIGhvc3RmcyBsb2FkZWQgKioqCisgIEJyZWFrcG9pbnQgMSwgc3lzX2luaXRfbW9kdWxlIChuYW1lX3VzZXI9MHg4MDVhYmIwICJob3N0ZnMiLAorICAgICAgbW9kX3VzZXI9MHg4MDcwZTAwKSBhdCBtb2R1bGUuYzozNDkKKyAgMzQ5ICAgICAgICAgICAgIGNoYXIgKm5hbWUsICpuX25hbWUsICpuYW1lX3RtcCA9IE5VTEw7CisgIChVTUwgZ2RiKSAgZmluaXNoCisgIFJ1biB0aWxsIGV4aXQgZnJvbSAjMCAgc3lzX2luaXRfbW9kdWxlIChuYW1lX3VzZXI9MHg4MDVhYmIwICJob3N0ZnMiLAorICAgICAgbW9kX3VzZXI9MHg4MDcwZTAwKSBhdCBtb2R1bGUuYzozNDkKKyAgMHhhMDBlMmUyMyBpbiBleGVjdXRlX3N5c2NhbGwgKHI9MHhhODE0MDI4NCkgYXQgc3lzY2FsbF9rZXJuLmM6NDExCisgIDQxMSAgICAgICAgICAgICBlbHNlIHJlcyA9IEVYRUNVVEVfU1lTQ0FMTChzeXNjYWxsLCByZWdzKTsKKyAgVmFsdWUgcmV0dXJuZWQgaXMgJDEgPSAwCisgIChVTUwgZ2RiKQorICBwL3ggKGludCltb2R1bGVfbGlzdCArIG1vZHVsZV9saXN0LT5zaXplX29mX3N0cnVjdAorCisgICQyID0gMHhhOTAyMTA1NAorICAoVU1MIGdkYikgIHN5bWJvbC1maWxlIC4vbGludXgKKyAgTG9hZCBuZXcgc3ltYm9sIHRhYmxlIGZyb20gIi4vbGludXgiPyAoeSBvciBuKSB5CisgIFJlYWRpbmcgc3ltYm9scyBmcm9tIC4vbGludXguLi4KKyAgZG9uZS4KKyAgKFVNTCBnZGIpCisgIGFkZC1zeW1ib2wtZmlsZSAvaG9tZS9qZGlrZS9saW51eC8yLjQvdW0vYXJjaC91bS9mcy9ob3N0ZnMvaG9zdGZzLm8gMHhhOTAyMTA1NAorCisgIGFkZCBzeW1ib2wgdGFibGUgZnJvbSBmaWxlICIvaG9tZS9qZGlrZS9saW51eC8yLjQvdW0vYXJjaC91bS9mcy9ob3N0ZnMvaG9zdGZzLm8iIGF0CisgICAgICAgICAgLnRleHRfYWRkciA9IDB4YTkwMjEwNTQKKyAgICh5IG9yIG4pIHkKKworICBSZWFkaW5nIHN5bWJvbHMgZnJvbSAvaG9tZS9qZGlrZS9saW51eC8yLjQvdW0vYXJjaC91bS9mcy9ob3N0ZnMvaG9zdGZzLm8uLi4KKyAgZG9uZS4KKyAgKFVNTCBnZGIpICBwICptb2R1bGVfbGlzdAorICAkMSA9IHtzaXplX29mX3N0cnVjdCA9IDg0LCBuZXh0ID0gMHhhMDE3ODcyMCwgbmFtZSA9IDB4YTkwMjJkZTAgImhvc3RmcyIsCisgICAgc2l6ZSA9IDkwMTYsIHVjID0ge3VzZWNvdW50ID0ge2NvdW50ZXIgPSAwfSwgcGFkID0gMH0sIGZsYWdzID0gMSwKKyAgICBuc3ltcyA9IDU3LCBuZGVwcyA9IDAsIHN5bXMgPSAweGE5MDIzMTcwLCBkZXBzID0gMHgwLCByZWZzID0gMHgwLAorICAgIGluaXQgPSAweGE5MDIyMWYwIDxpbml0X2hvc3Rmcz4sIGNsZWFudXAgPSAweGE5MDIyMjJjIDxleGl0X2hvc3Rmcz4sCisgICAgZXhfdGFibGVfc3RhcnQgPSAweDAsIGV4X3RhYmxlX2VuZCA9IDB4MCwgcGVyc2lzdF9zdGFydCA9IDB4MCwKKyAgICBwZXJzaXN0X2VuZCA9IDB4MCwgY2FuX3VubG9hZCA9IDAsIHJ1bnNpemUgPSAwLCBrYWxsc3ltc19zdGFydCA9IDB4MCwKKyAgICBrYWxsc3ltc19lbmQgPSAweDAsCisgICAgYXJjaGRhdGFfc3RhcnQgPSAweDFiODU1IDxBZGRyZXNzIDB4MWI4NTUgb3V0IG9mIGJvdW5kcz4sCisgICAgYXJjaGRhdGFfZW5kID0gMHhlNTg5MDAwMCA8QWRkcmVzcyAweGU1ODkwMDAwIG91dCBvZiBib3VuZHM+LAorICAgIGtlcm5lbF9kYXRhID0gMHhmNjg5YzM1ZCA8QWRkcmVzcyAweGY2ODljMzVkIG91dCBvZiBib3VuZHM+fQorICA+PiBGaW5pc2hlZCBsb2FkaW5nIHN5bWJvbHMgZm9yIGhvc3RmcyAuLi4KKworCisKKworICBUaGF0J3MgdGhlIGVhc3kgd2F5LiAgSXQncyBoaWdobHkgcmVjb21tZW5kZWQuICBUaGUgaGFyZCB3YXkgaXMKKyAgZGVzY3JpYmVkIGJlbG93IGluIGNhc2UgeW91J3JlIGludGVyZXN0ZWQgaW4gd2hhdCdzIGdvaW5nIG9uLgorCisKKyAgQm9vdCB0aGUga2VybmVsIHVuZGVyIHRoZSBkZWJ1Z2dlciBhbmQgbG9hZCB0aGUgbW9kdWxlIHdpdGggaW5zbW9kIG9yCisgIG1vZHByb2JlLiAgV2l0aCBnZGIsIGRvOgorCisKKyAgICAgICAoVU1MIGdkYikgIHAgbW9kdWxlX2xpc3QKKworCisKKworICBUaGlzIGlzIGEgbGlzdCBvZiBtb2R1bGVzIHRoYXQgaGF2ZSBiZWVuIGxvYWRlZCBpbnRvIHRoZSBrZXJuZWwsIHdpdGgKKyAgdGhlIG1vc3QgcmVjZW50bHkgbG9hZGVkIG1vZHVsZSBmaXJzdC4gIE5vcm1hbGx5LCB0aGUgbW9kdWxlIHlvdSB3YW50CisgIGlzIGF0IG1vZHVsZV9saXN0LiAgSWYgaXQncyBub3QsIHdhbGsgZG93biB0aGUgbmV4dCBsaW5rcywgbG9va2luZyBhdAorICB0aGUgbmFtZSBmaWVsZHMgdW50aWwgZmluZCB0aGUgbW9kdWxlIHlvdSB3YW50IHRvIGRlYnVnLiAgVGFrZSB0aGUKKyAgYWRkcmVzcyBvZiB0aGF0IHN0cnVjdHVyZSwgYW5kIGFkZCBtb2R1bGUuc2l6ZV9vZl9zdHJ1Y3QgKHdoaWNoIGluCisgIDIuNC4xMCBrZXJuZWxzIGlzIDk2ICgweDYwKSkgdG8gaXQuICBHZGIgY2FuIG1ha2UgdGhpcyBoYXJkIGFkZGl0aW9uCisgIGZvciB5b3UgOi0pOgorCisKKworICAoVU1MIGdkYikKKyAgcHJpbnRmICIlI3hcbiIsIChpbnQpbW9kdWxlX2xpc3QgbW9kdWxlX2xpc3QtPnNpemVfb2Zfc3RydWN0CisKKworCisKKyAgVGhlIG9mZnNldCBmcm9tIHRoZSBtb2R1bGUgc3RhcnQgb2NjYXNpb25hbGx5IGNoYW5nZXMgKGJlZm9yZSAyLjQuMCwKKyAgaXQgd2FzIG1vZHVsZS5zaXplX29mX3N0cnVjdCArIDQpLCBzbyBpdCdzIGEgZ29vZCBpZGVhIHRvIGNoZWNrIHRoZQorICBpbml0IGFuZCBjbGVhbnVwIGFkZHJlc3NlcyBvbmNlIGluIGEgd2hpbGUsIGFzIGRlc2NyaWJlIGJlbG93LiAgTm93CisgIGRvOgorCisKKyAgICAgICAoVU1MIGdkYikKKyAgICAgICBhZGQtc3ltYm9sLWZpbGUgL3BhdGgvdG8vbW9kdWxlL29uL2hvc3QgdGhhdF9hZGRyZXNzCisKKworCisKKyAgVGVsbCBnZGIgeW91IHJlYWxseSB3YW50IHRvIGRvIGl0LCBhbmQgeW91J3JlIGluIGJ1c2luZXNzLgorCisKKyAgSWYgdGhlcmUncyBhbnkgZG91YnQgdGhhdCB5b3UgZ290IHRoZSBvZmZzZXQgcmlnaHQsIGxpa2UgYnJlYWtwb2ludHMKKyAgYXBwZWFyIG5vdCB0byB3b3JrLCBvciB0aGV5J3JlIGFwcGVhcmluZyBpbiB0aGUgd3JvbmcgcGxhY2UsIHlvdSBjYW4KKyAgY2hlY2sgaXQgYnkgbG9va2luZyBhdCB0aGUgbW9kdWxlIHN0cnVjdHVyZS4gIFRoZSBpbml0IGFuZCBjbGVhbnVwCisgIGZpZWxkcyBzaG91bGQgbG9vayBsaWtlOgorCisKKyAgICAgICBpbml0ID0gMHg1ODgwNjZiMCA8aW5pdF9ob3N0ZnM+LCBjbGVhbnVwID0gMHg1ODgwNjZjMCA8ZXhpdF9ob3N0ZnM+CisKKworCisKKyAgd2l0aCBubyBvZmZzZXRzIG9uIHRoZSBzeW1ib2wgbmFtZXMuICBJZiB0aGUgbmFtZXMgYXJlIHJpZ2h0LCBidXQgdGhleQorICBhcmUgb2Zmc2V0LCB0aGVuIHRoZSBvZmZzZXQgdGVsbHMgeW91IGhvdyBtdWNoIHlvdSBuZWVkIHRvIGFkZCB0byB0aGUKKyAgYWRkcmVzcyB5b3UgZ2F2ZSB0byBhZGQtc3ltYm9sLWZpbGUuCisKKworICBXaGVuIHlvdSB3YW50IHRvIGxvYWQgaW4gYSBuZXcgdmVyc2lvbiBvZiB0aGUgbW9kdWxlLCB5b3UgbmVlZCB0byBnZXQKKyAgZ2RiIHRvIGZvcmdldCBhYm91dCB0aGUgb2xkIG9uZS4gIFRoZSBvbmx5IHdheSBJJ3ZlIGZvdW5kIHRvIGRvIHRoYXQKKyAgaXMgdG8gdGVsbCBnZGIgdG8gZm9yZ2V0IGFib3V0IGFsbCBzeW1ib2xzIHRoYXQgaXQga25vd3MgYWJvdXQ6CisKKworICAgICAgIChVTUwgZ2RiKSAgc3ltYm9sLWZpbGUKKworCisKKworICBUaGVuIHJlbG9hZCB0aGUgc3ltYm9scyBmcm9tIHRoZSBrZXJuZWwgYmluYXJ5OgorCisKKyAgICAgICAoVU1MIGdkYikgIHN5bWJvbC1maWxlIC9wYXRoL3RvL2tlcm5lbAorCisKKworCisgIGFuZCByZXBlYXQgdGhlIHByb2Nlc3MgYWJvdmUuICBZb3UnbGwgYWxzbyBuZWVkIHRvIHJlLWVuYWJsZSBicmVhay0KKyAgcG9pbnRzLiAgVGhleSB3ZXJlIGRpc2FibGVkIHdoZW4geW91IGR1bXBlZCBhbGwgdGhlIHN5bWJvbHMgYmVjYXVzZQorICBnZGIgY291bGRuJ3QgZmlndXJlIG91dCB3aGVyZSB0aGV5IHNob3VsZCBnby4KKworCisKKyAgMTEuNS4gIEF0dGFjaGluZyBnZGIgdG8gdGhlIGtlcm5lbAorCisgIElmIHlvdSBkb24ndCBoYXZlIHRoZSBrZXJuZWwgcnVubmluZyB1bmRlciBnZGIsIHlvdSBjYW4gYXR0YWNoIGdkYiB0bworICBpdCBsYXRlciBieSBzZW5kaW5nIHRoZSB0cmFjaW5nIHRocmVhZCBhIFNJR1VTUjEuICBUaGUgZmlyc3QgbGluZSBvZgorICB0aGUgY29uc29sZSBvdXRwdXQgaWRlbnRpZmllcyBpdHMgcGlkOgorICAgICAgIHRyYWNpbmcgdGhyZWFkIHBpZCA9IDIwMDkzCisKKworCisKKyAgV2hlbiB5b3Ugc2VuZCBpdCB0aGUgc2lnbmFsOgorCisKKyAgICAgICBob3N0JSBraWxsIC1VU1IxIDIwMDkzCisKKworCisKKyAgeW91IHdpbGwgZ2V0IGFuIHh0ZXJtIHdpdGggZ2RiIHJ1bm5pbmcgaW4gaXQuCisKKworICBJZiB5b3UgaGF2ZSB0aGUgbWNvbnNvbGUgY29tcGlsZWQgaW50byBVTUwsIHRoZW4gdGhlIG1jb25zb2xlIGNsaWVudAorICBjYW4gYmUgdXNlZCB0byBzdGFydCBnZGI6CisKKworICAgICAgIChtY29uc29sZSkgIChtY29uc29sZSkgY29uZmlnIGdkYj14dGVybQorCisKKworCisgIHdpbGwgZmlyZSB1cCBhbiB4dGVybSB3aXRoIGdkYiBydW5uaW5nIGluIGl0LgorCisKKworICAxMS42LiAgVXNpbmcgYWx0ZXJuYXRlIGRlYnVnZ2VycworCisgIFVNTCBoYXMgc3VwcG9ydCBmb3IgYXR0YWNoaW5nIHRvIGFuIGFscmVhZHkgcnVubmluZyBkZWJ1Z2dlciByYXRoZXIKKyAgdGhhbiBzdGFydGluZyBnZGIgaXRzZWxmLiAgVGhpcyBpcyBwcmVzZW50IGluIENWUyBhcyBvZiAxNyBBcHIgMjAwMS4KKyAgSSBzZW50IGl0IHRvIEFsYW4gZm9yIGluY2x1c2lvbiBpbiB0aGUgYWMgdHJlZSwgYW5kIGl0IHdpbGwgYmUgaW4gbXkKKyAgMi40LjQgcmVsZWFzZS4KKworCisgIFRoaXMgaXMgdXNlZnVsIHdoZW4gZ2RiIGlzIGEgc3VicHJvY2VzcyBvZiBzb21lIFVJLCBzdWNoIGFzIGVtYWNzIG9yCisgIGRkZC4gIEl0IGNhbiBhbHNvIGJlIHVzZWQgdG8gcnVuIGRlYnVnZ2VycyBvdGhlciB0aGFuIGdkYiBvbiBVTUwuCisgIEJlbG93IGlzIGFuIGV4YW1wbGUgb2YgdXNpbmcgc3RyYWNlIGFzIGFuIGFsdGVybmF0ZSBkZWJ1Z2dlci4KKworCisgIFRvIGRvIHRoaXMsIHlvdSBuZWVkIHRvIGdldCB0aGUgcGlkIG9mIHRoZSBkZWJ1Z2dlciBhbmQgcGFzcyBpdCBpbgorICB3aXRoIHRoZQorCisKKyAgSWYgeW91IGFyZSB1c2luZyBnZGIgdW5kZXIgc29tZSBVSSwgdGhlbiB0ZWxsIGl0IHRvICdhdHQgMScsIGFuZAorICB5b3UnbGwgZmluZCB5b3Vyc2VsZiBhdHRhY2hlZCB0byBVTUwuCisKKworICBJZiB5b3UgYXJlIHVzaW5nIHNvbWV0aGluZyBvdGhlciB0aGFuIGdkYiBhcyB5b3VyIGRlYnVnZ2VyLCB0aGVuCisgIHlvdSdsbCBuZWVkIHRvIGdldCBpdCB0byBkbyB0aGUgZXF1aXZhbGVudCBvZiAnYXR0IDEnIGlmIGl0IGRvZXNuJ3QgZG8KKyAgaXQgYXV0b21hdGljYWxseS4KKworCisgIEFuIGV4YW1wbGUgb2YgYW4gYWx0ZXJuYXRlIGRlYnVnZ2VyIGlzIHN0cmFjZS4gIFlvdSBjYW4gc3RyYWNlIHRoZQorICBhY3R1YWwga2VybmVsIGFzIGZvbGxvd3M6CisKKyAgbyAgUnVuIHRoZSBmb2xsb3dpbmcgaW4gYSBzaGVsbAorCisKKyAgICAgICBob3N0JQorICAgICAgIHNoIC1jICdlY2hvIHBpZD0kJDsgZWNobyAtbiBoaXQgcmV0dXJuOyByZWFkIHg7IGV4ZWMgc3RyYWNlIC1wIDEgLW8gc3RyYWNlLm91dCcKKworCisKKyAgbyAgUnVuIFVNTCB3aXRoICdkZWJ1ZycgYW5kICdnZGItcGlkPTxwaWQ+JyB3aXRoIHRoZSBwaWQgcHJpbnRlZCBvdXQKKyAgICAgYnkgdGhlIHByZXZpb3VzIGNvbW1hbmQKKworICBvICBIaXQgcmV0dXJuIGluIHRoZSBzaGVsbCwgYW5kIFVNTCB3aWxsIHN0YXJ0IHJ1bm5pbmcsIGFuZCBzdHJhY2UKKyAgICAgb3V0cHV0IHdpbGwgc3RhcnQgYWNjdW11bGF0aW5nIGluIHRoZSBvdXRwdXQgZmlsZS4KKworICAgICBOb3RlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBydW5uaW5nCisKKworICAgICAgIGhvc3QlIHN0cmFjZSAuL2xpbnV4CisKKworCisKKyAgVGhhdCB3aWxsIHN0cmFjZSBvbmx5IHRoZSBtYWluIFVNTCB0aHJlYWQsIHRoZSB0cmFjaW5nIHRocmVhZCwgd2hpY2gKKyAgZG9lc24ndCBkbyBhbnkgb2YgdGhlIGFjdHVhbCBrZXJuZWwgd29yay4gIEl0IGp1c3Qgb3ZlcnNlZXMgdGhlIHZpci0KKyAgdHVhbCBtYWNoaW5lLiAgSW4gY29udHJhc3QsIHVzaW5nIHN0cmFjZSBhcyBkZXNjcmliZWQgYWJvdmUgd2lsbCBzaG93CisgIHlvdSB0aGUgbG93LWxldmVsIGFjdGl2aXR5IG9mIHRoZSB2aXJ0dWFsIG1hY2hpbmUuCisKKworCisKKworICAxMi4gIEtlcm5lbCBkZWJ1Z2dpbmcgZXhhbXBsZXMKKworICAxMi4xLiAgVGhlIGNhc2Ugb2YgdGhlIGh1bmcgZnNjaworCisgIFdoZW4gYm9vdGluZyB1cCB0aGUga2VybmVsLCBmc2NrIGZhaWxlZCwgYW5kIGRyb3BwZWQgbWUgaW50byBhIHNoZWxsCisgIHRvIGZpeCB0aGluZ3MgdXAuICBJIHJhbiBmc2NrIC15LCB3aGljaCBodW5nOgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisgIFNldHRpbmcgaG9zdG5hbWUgdW1sICAgICAgICAgICAgICAgICAgICBbIE9LIF0KKyAgQ2hlY2tpbmcgcm9vdCBmaWxlc3lzdGVtCisgIC9kZXYvZmhkMCB3YXMgbm90IGNsZWFubHkgdW5tb3VudGVkLCBjaGVjayBmb3JjZWQuCisgIEVycm9yIHJlYWRpbmcgYmxvY2sgODY4OTQgKEF0dGVtcHQgdG8gcmVhZCBibG9jayBmcm9tIGZpbGVzeXN0ZW0gcmVzdWx0ZWQgaW4gc2hvcnQgcmVhZCkgd2hpbGUgcmVhZGluZyBpbmRpcmVjdCBibG9ja3Mgb2YgaW5vZGUgMTk3ODAuCisKKyAgL2Rldi9maGQwOiBVTkVYUEVDVEVEIElOQ09OU0lTVEVOQ1k7IFJVTiBmc2NrIE1BTlVBTExZLgorICAgICAgICAgIChpLmUuLCB3aXRob3V0IC1hIG9yIC1wIG9wdGlvbnMpCisgIFsgRkFJTEVEIF0KKworICAqKiogQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRoZSBmaWxlIHN5c3RlbSBjaGVjay4KKyAgKioqIERyb3BwaW5nIHlvdSB0byBhIHNoZWxsOyB0aGUgc3lzdGVtIHdpbGwgcmVib290CisgICoqKiB3aGVuIHlvdSBsZWF2ZSB0aGUgc2hlbGwuCisgIEdpdmUgcm9vdCBwYXNzd29yZCBmb3IgbWFpbnRlbmFuY2UKKyAgKG9yIHR5cGUgQ29udHJvbC1EIGZvciBub3JtYWwgc3RhcnR1cCk6CisKKyAgW3Jvb3RAdW1sIC9yb290XSMgZnNjayAteSAvZGV2L2ZoZDAKKyAgZnNjayAteSAvZGV2L2ZoZDAKKyAgUGFyYWxsZWxpemluZyBmc2NrIHZlcnNpb24gMS4xNCAoOS1KYW4tMTk5OSkKKyAgZTJmc2NrIDEuMTQsIDktSmFuLTE5OTkgZm9yIEVYVDIgRlMgMC41YiwgOTUvMDgvMDkKKyAgL2Rldi9maGQwIGNvbnRhaW5zIGEgZmlsZSBzeXN0ZW0gd2l0aCBlcnJvcnMsIGNoZWNrIGZvcmNlZC4KKyAgUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCisgIEVycm9yIHJlYWRpbmcgYmxvY2sgODY4OTQgKEF0dGVtcHQgdG8gcmVhZCBibG9jayBmcm9tIGZpbGVzeXN0ZW0gcmVzdWx0ZWQgaW4gc2hvcnQgcmVhZCkgd2hpbGUgcmVhZGluZyBpbmRpcmVjdCBibG9ja3Mgb2YgaW5vZGUgMTk3ODAuICBJZ25vcmUgZXJyb3I/IHllcworCisgIElub2RlIDE5NzgwLCBpX2Jsb2NrcyBpcyAxNTQ4LCBzaG91bGQgYmUgNTQwLiAgRml4PyB5ZXMKKworICBQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKKyAgRXJyb3IgcmVhZGluZyBibG9jayA0OTQwNSAoQXR0ZW1wdCB0byByZWFkIGJsb2NrIGZyb20gZmlsZXN5c3RlbSByZXN1bHRlZCBpbiBzaG9ydCByZWFkKS4gIElnbm9yZSBlcnJvcj8geWVzCisKKyAgRGlyZWN0b3J5IGlub2RlIDExODU4LCBibG9jayAwLCBvZmZzZXQgMDogZGlyZWN0b3J5IGNvcnJ1cHRlZAorICBTYWx2YWdlPyB5ZXMKKworICBNaXNzaW5nICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgMTE4NTguCisgIEZpeD8geWVzCisKKyAgTWlzc2luZyAnLi4nIGluIGRpcmVjdG9yeSBpbm9kZSAxMTg1OC4KKyAgRml4PyB5ZXMKKworCisKKworCisgIFRoZSBzdGFuZGFyZCBkcmlsbCBpbiB0aGlzIHNvcnQgb2Ygc2l0dWF0aW9uIGlzIHRvIGZpcmUgdXAgZ2RiIG9uIHRoZQorICBzaWduYWwgdGhyZWFkLCB3aGljaCwgaW4gdGhpcyBjYXNlLCB3YXMgcGlkIDE5MzUuICBJbiBhbm90aGVyIHdpbmRvdywKKyAgSSBydW4gZ2RiIGFuZCBhdHRhY2ggcGlkIDE5MzUuCisKKworCisKKyAgICAgICB+L2xpbnV4LzIuMy4yNi91bSAxMDE2OiBnZGIgbGludXgKKyAgICAgICBHTlUgZ2RiIDQuMTcuMC4xMSB3aXRoIExpbnV4IHN1cHBvcnQKKyAgICAgICBDb3B5cmlnaHQgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgICAgICBHREIgaXMgZnJlZSBzb2Z0d2FyZSwgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB5b3UgYXJlCisgICAgICAgd2VsY29tZSB0byBjaGFuZ2UgaXQgYW5kL29yIGRpc3RyaWJ1dGUgY29waWVzIG9mIGl0IHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucy4KKyAgICAgICBUeXBlICJzaG93IGNvcHlpbmciIHRvIHNlZSB0aGUgY29uZGl0aW9ucy4KKyAgICAgICBUaGVyZSBpcyBhYnNvbHV0ZWx5IG5vIHdhcnJhbnR5IGZvciBHREIuICBUeXBlICJzaG93IHdhcnJhbnR5IiBmb3IgZGV0YWlscy4KKyAgICAgICBUaGlzIEdEQiB3YXMgY29uZmlndXJlZCBhcyAiaTM4Ni1yZWRoYXQtbGludXgiLi4uCisKKyAgICAgICAoZ2RiKSBhdHQgMTkzNQorICAgICAgIEF0dGFjaGluZyB0byBwcm9ncmFtIGAvaG9tZS9kaWtlL2xpbnV4LzIuMy4yNi91bS9saW51eCcsIFBpZCAxOTM1CisgICAgICAgMHgxMDA3NTZkOSBpbiBfX3dhaXQ0ICgpCisKKworCisKKworCisgIExldCdzIHNlZSB3aGF0J3MgY3VycmVudGx5IHJ1bm5pbmc6CisKKworCisgICAgICAgKGdkYikgcCBjdXJyZW50X3Rhc2sucGlkCisgICAgICAgJDEgPSAwCisKKworCisKKworICBJdCdzIHRoZSBpZGxlIHRocmVhZCwgd2hpY2ggbWVhbnMgdGhhdCBmc2NrIHdlbnQgdG8gc2xlZXAgZm9yIHNvbWUKKyAgcmVhc29uIGFuZCBuZXZlciB3b2tlIHVwLgorCisKKyAgTGV0J3MgZ3Vlc3MgdGhhdCB0aGUgbGFzdCBwcm9jZXNzIGluIHRoZSBwcm9jZXNzIGxpc3QgaXMgZnNjazoKKworCisKKyAgICAgICAoZ2RiKSBwIGN1cnJlbnRfdGFzay5wcmV2X3Rhc2suY29tbQorICAgICAgICQxMyA9ICJmc2NrLmV4dDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAiCisKKworCisKKworICBJdCBpcywgc28gbGV0J3Mgc2VlIHdoYXQgaXQgdGhpbmtzIGl0J3MgdXAgdG86CisKKworCisgICAgICAgKGdkYikgcCBjdXJyZW50X3Rhc2sucHJldl90YXNrLnRocmVhZAorICAgICAgICQxNCA9IHtleHRlcm5fcGlkID0gMTk4MCwgdHJhY2luZyA9IDAsIHdhbnRfdHJhY2luZyA9IDAsIGZvcmtpbmcgPSAwLAorICAgICAgICAga2VybmVsX3N0YWNrX3BhZ2UgPSAwLCBzaWduYWxfc3RhY2sgPSAxMzQyNjI3ODQwLCBzeXNjYWxsID0ge2lkID0gNCwgYXJncyA9IHsKKyAgICAgICAgICAgICAzLCAxMzQ5NzM0NDAsIDEwMjQsIDAsIDEwMjR9LCBoYXZlX3Jlc3VsdCA9IDAsIHJlc3VsdCA9IDUwNTkwNzIwfSwKKyAgICAgICAgIHJlcXVlc3QgPSB7b3AgPSAyLCB1ID0ge2V4ZWMgPSB7aXAgPSAxMzUwNDY3NTg0LCBzcCA9IDI5NTI3ODk0MjR9LCBmb3JrID0geworICAgICAgICAgICAgICAgcmVncyA9IHsxMzUwNDY3NTg0LCAyOTUyNzg5NDI0LCAwIDxyZXBlYXRzIDE1IHRpbWVzPn0sIHNpZ3N0YWNrID0gMCwKKyAgICAgICAgICAgICAgIHBpZCA9IDB9LCBzd2l0Y2hfdG8gPSAweDUwN2U4MDAwLCB0aHJlYWQgPSB7cHJvYyA9IDB4NTA3ZTgwMDAsCisgICAgICAgICAgICAgICBhcmcgPSAweGFmZmZmZGIwLCBmbGFncyA9IDAsIG5ld19waWQgPSAwfSwgaW5wdXRfcmVxdWVzdCA9IHsKKyAgICAgICAgICAgICAgIG9wID0gMTM1MDQ2NzU4NCwgZmQgPSAtMTM0MjE3Nzg3MiwgcHJvYyA9IDAsIHBpZCA9IDB9fX19CisKKworCisKKworICBUaGUgaW50ZXJlc3RpbmcgdGhpbmdzIGhlcmUgYXJlIHRoZSBmYWN0IHRoYXQgaXRzIC50aHJlYWQuc3lzY2FsbC5pZAorICBpcyBfX05SX3dyaXRlIChzZWUgdGhlIGJpZyBzd2l0Y2ggaW4gYXJjaC91bS9rZXJuZWwvc3lzY2FsbF9rZXJuLmMgb3IKKyAgdGhlIGRlZmluZXMgaW4gaW5jbHVkZS9hc20tdW0vYXJjaC91bmlzdGQuaCksIGFuZCB0aGF0IGl0IG5ldmVyCisgIHJldHVybmVkLiAgQWxzbywgaXRzIC5yZXF1ZXN0Lm9wIGlzIE9QX1NXSVRDSCAoc2VlCisgIGFyY2gvdW0vaW5jbHVkZS91c2VyX3V0aWwuaCkuICBUaGVzZSBtZWFuIHRoYXQgaXQgd2VudCBpbnRvIGEgd3JpdGUsCisgIGFuZCwgZm9yIHNvbWUgcmVhc29uLCBjYWxsZWQgc2NoZWR1bGUoKS4KKworCisgIFRoZSBmYWN0IHRoYXQgaXQgbmV2ZXIgcmV0dXJuZWQgZnJvbSB3cml0ZSBtZWFucyB0aGF0IGl0cyBzdGFjayBzaG91bGQKKyAgYmUgZmFpcmx5IGludGVyZXN0aW5nLiAgSXRzIHBpZCBpcyAxOTgwICgudGhyZWFkLmV4dGVybl9waWQpLiAgVGhhdAorICBwcm9jZXNzIGlzIGJlaW5nIHB0cmFjZWQgYnkgdGhlIHNpZ25hbCB0aHJlYWQsIHNvIGl0IG11c3QgYmUgZGV0YWNoZWQKKyAgYmVmb3JlIGdkYiBjYW4gYXR0YWNoIGl0OgorCisKKworCisKKworCisKKworCisgIChnZGIpIGNhbGwgZGV0YWNoKDE5ODApCisKKyAgUHJvZ3JhbSByZWNlaXZlZCBzaWduYWwgU0lHU0VHViwgU2VnbWVudGF0aW9uIGZhdWx0LgorICA8ZnVuY3Rpb24gY2FsbGVkIGZyb20gZ2RiPgorICBUaGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZCBzdG9wcGVkIHdoaWxlIGluIGEgZnVuY3Rpb24gY2FsbGVkIGZyb20gR0RCLgorICBXaGVuIHRoZSBmdW5jdGlvbiAoZGV0YWNoKSBpcyBkb25lIGV4ZWN1dGluZywgR0RCIHdpbGwgc2lsZW50bHkKKyAgc3RvcCAoaW5zdGVhZCBvZiBjb250aW51aW5nIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGNvbnRhaW5pbmcKKyAgdGhlIGZ1bmN0aW9uIGNhbGwpLgorICAoZ2RiKSBjYWxsIGRldGFjaCgxOTgwKQorICAkMTUgPSAwCisKKworCisKKworICBUaGUgZmlyc3QgZGV0YWNoIHNlZ2ZhdWx0cyBmb3Igc29tZSByZWFzb24sIGFuZCB0aGUgc2Vjb25kIG9uZQorICBzdWNjZWVkcy4KKworCisgIE5vdyBJIGRldGFjaCBmcm9tIHRoZSBzaWduYWwgdGhyZWFkLCBhdHRhY2ggdG8gdGhlIGZzY2sgdGhyZWFkLCBhbmQKKyAgbG9vayBhdCBpdHMgc3RhY2s6CisKKworICAgICAgIChnZGIpIGRldAorICAgICAgIERldGFjaGluZyBmcm9tIHByb2dyYW06IC9ob21lL2Rpa2UvbGludXgvMi4zLjI2L3VtL2xpbnV4IFBpZCAxOTM1CisgICAgICAgKGdkYikgYXR0IDE5ODAKKyAgICAgICBBdHRhY2hpbmcgdG8gcHJvZ3JhbSBgL2hvbWUvZGlrZS9saW51eC8yLjMuMjYvdW0vbGludXgnLCBQaWQgMTk4MAorICAgICAgIDB4MTAwNzA0NTEgaW4gX19raWxsICgpCisgICAgICAgKGdkYikgYnQKKyAgICAgICAjMCAgMHgxMDA3MDQ1MSBpbiBfX2tpbGwgKCkKKyAgICAgICAjMSAgMHgxMDA2OGNjZCBpbiB1c3IxX3BpZCAocGlkPTE5ODApIGF0IHByb2Nlc3MuYzozMAorICAgICAgICMyICAweDEwMDZhMDNmIGluIF9zd2l0Y2hfdG8gKHByZXY9MHg1MDA3MjAwMCwgbmV4dD0weDUwN2U4MDAwKQorICAgICAgICAgICBhdCBwcm9jZXNzX2tlcm4uYzoxNTYKKyAgICAgICAjMyAgMHgxMDA2YTA1MiBpbiBzd2l0Y2hfdG8gKHByZXY9MHg1MDA3MjAwMCwgbmV4dD0weDUwN2U4MDAwLCBsYXN0PTB4NTAwNzIwMDApCisgICAgICAgICAgIGF0IHByb2Nlc3Nfa2Vybi5jOjE2MQorICAgICAgICM0ICAweDEwMDAxZDEyIGluIHNjaGVkdWxlICgpIGF0IGNvcmUuYzo3NzcKKyAgICAgICAjNSAgMHgxMDA2YTc0NCBpbiBfX2Rvd24gKHNlbT0weDUwN2QyNDFjKSBhdCBzZW1hcGhvcmUuYzo3MQorICAgICAgICM2ICAweDEwMDZhYTEwIGluIF9fZG93bl9mYWlsZWQgKCkgYXQgc2VtYXBob3JlLmM6MTU3CisgICAgICAgIzcgIDB4MTAwNmM1ZDggaW4gc2Vndl9oYW5kbGVyIChzYz0weDUwMDZlOTQwKSBhdCB0cmFwX3VzZXIuYzoxNzQKKyAgICAgICAjOCAgMHgxMDA2YzVlYyBpbiBrZXJuX3NlZ3ZfaGFuZGxlciAoc2lnPTExKSBhdCB0cmFwX3VzZXIuYzoxODIKKyAgICAgICAjOSAgPHNpZ25hbCBoYW5kbGVyIGNhbGxlZD4KKyAgICAgICAjMTAgMHgxMDE1NTQwNCBpbiBlcnJubyAoKQorICAgICAgICMxMSAweDEwMDZjMGFhIGluIHNlZ3YgKGFkZHJlc3M9MTM0MjE3OTMyOCwgaXNfd3JpdGU9MikgYXQgdHJhcF9rZXJuLmM6NTAKKyAgICAgICAjMTIgMHgxMDA2YzVkOCBpbiBzZWd2X2hhbmRsZXIgKHNjPTB4NTAwNmVhZjgpIGF0IHRyYXBfdXNlci5jOjE3NAorICAgICAgICMxMyAweDEwMDZjNWVjIGluIGtlcm5fc2Vndl9oYW5kbGVyIChzaWc9MTEpIGF0IHRyYXBfdXNlci5jOjE4MgorICAgICAgICMxNCA8c2lnbmFsIGhhbmRsZXIgY2FsbGVkPgorICAgICAgICMxNSAweGMwZmQgaW4gPz8gKCkKKyAgICAgICAjMTYgMHgxMDAxNjY0NyBpbiBzeXNfd3JpdGUgKGZkPTMsCisgICAgICAgICAgIGJ1Zj0weDgwYjg4MDAgPEFkZHJlc3MgMHg4MGI4ODAwIG91dCBvZiBib3VuZHM+LCBjb3VudD0xMDI0KQorICAgICAgICAgICBhdCByZWFkX3dyaXRlLmM6MTU5CisgICAgICAgIzE3IDB4MTAwNmQ1YjMgaW4gZXhlY3V0ZV9zeXNjYWxsIChzeXNjYWxsPTQsIGFyZ3M9MHg1MDA2ZWYwOCkKKyAgICAgICAgICAgYXQgc3lzY2FsbF9rZXJuLmM6MjU0CisgICAgICAgIzE4IDB4MTAwNmFmODcgaW4gcmVhbGx5X2RvX3N5c2NhbGwgKHNpZz0xMikgYXQgc3lzY2FsbF91c2VyLmM6MzUKKyAgICAgICAjMTkgPHNpZ25hbCBoYW5kbGVyIGNhbGxlZD4KKyAgICAgICAjMjAgMHg0MDBkYzhiMCBpbiA/PyAoKQorCisKKworCisKKyAgVGhlIGludGVyZXN0aW5nIHRoaW5ncyBoZXJlIGFyZSA6CisKKyAgbyAgVGhlcmUgYXJlIHR3byBzZWdmYXVsdHMgb24gdGhpcyBzdGFjayAoZnJhbWVzIDkgYW5kIDE0KQorCisgIG8gIFRoZSBmaXJzdCBmYXVsdGluZyBhZGRyZXNzIChmcmFtZSAxMSkgaXMgMHg1MDAwMDgwMAorCisgIChnZGIpIHAgKHZvaWQgKikxMzQyMTc5MzI4CisgICQxNiA9ICh2b2lkICopIDB4NTAwMDA4MDAKKworCisKKworCisgIFRoZSBpbml0aWFsIGZhdWx0aW5nIGFkZHJlc3MgaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCBpcyBvbiB0aGUgaWRsZQorICB0aHJlYWQncyBzdGFjay4gIEkgaGFkIGJlZW4gc2VlaW5nIHRoZSBpZGxlIHRocmVhZCBzZWdmYXVsdCBmb3Igbm8KKyAgYXBwYXJlbnQgcmVhc29uLCBhbmQgdGhlIGNhdXNlIGxvb2tlZCBsaWtlIHN0YWNrIGNvcnJ1cHRpb24uICBJbiBob3BlcworICBvZiBjYXRjaGluZyB0aGUgY3VscHJpdCBpbiB0aGUgYWN0LCBJIGhhZCB0dXJuZWQgb2ZmIGFsbCBwcm90ZWN0aW9ucworICB0byB0aGF0IHN0YWNrIHdoaWxlIHRoZSBpZGxlIHRocmVhZCB3YXNuJ3QgcnVubmluZy4gIFRoaXMgYXBwYXJlbnRseQorICB0cmlwcGVkIHRoYXQgdHJhcC4KKworCisgIEhvd2V2ZXIsIHRoZSBtb3JlIGltbWVkaWF0ZSBwcm9ibGVtIGlzIHRoYXQgc2Vjb25kIHNlZ2ZhdWx0IGFuZCBJJ20KKyAgZ29pbmcgdG8gY29uY2VudHJhdGUgb24gdGhhdC4gIEZpcnN0LCBJIHdhbnQgdG8gc2VlIHdoZXJlIHRoZSBmYXVsdAorICBoYXBwZW5lZCwgc28gSSBoYXZlIHRvIGdvIGxvb2sgYXQgdGhlIHNpZ2NvbnRlbnQgc3RydWN0IGluIGZyYW1lIDg6CisKKworCisgICAgICAgKGdkYikgdXAKKyAgICAgICAjMSAgMHgxMDA2OGNjZCBpbiB1c3IxX3BpZCAocGlkPTE5ODApIGF0IHByb2Nlc3MuYzozMAorICAgICAgIDMwICAgICAgICBraWxsKHBpZCwgU0lHVVNSMSk7CisgICAgICAgKGdkYikKKyAgICAgICAjMiAgMHgxMDA2YTAzZiBpbiBfc3dpdGNoX3RvIChwcmV2PTB4NTAwNzIwMDAsIG5leHQ9MHg1MDdlODAwMCkKKyAgICAgICAgICAgYXQgcHJvY2Vzc19rZXJuLmM6MTU2CisgICAgICAgMTU2ICAgICAgIHVzcjFfcGlkKGdldHBpZCgpKTsKKyAgICAgICAoZ2RiKQorICAgICAgICMzICAweDEwMDZhMDUyIGluIHN3aXRjaF90byAocHJldj0weDUwMDcyMDAwLCBuZXh0PTB4NTA3ZTgwMDAsIGxhc3Q9MHg1MDA3MjAwMCkKKyAgICAgICAgICAgYXQgcHJvY2Vzc19rZXJuLmM6MTYxCisgICAgICAgMTYxICAgICAgIF9zd2l0Y2hfdG8ocHJldiwgbmV4dCk7CisgICAgICAgKGdkYikKKyAgICAgICAjNCAgMHgxMDAwMWQxMiBpbiBzY2hlZHVsZSAoKSBhdCBjb3JlLmM6Nzc3CisgICAgICAgNzc3ICAgICAgICAgICAgIHN3aXRjaF90byhwcmV2LCBuZXh0LCBwcmV2KTsKKyAgICAgICAoZ2RiKQorICAgICAgICM1ICAweDEwMDZhNzQ0IGluIF9fZG93biAoc2VtPTB4NTA3ZDI0MWMpIGF0IHNlbWFwaG9yZS5jOjcxCisgICAgICAgNzEgICAgICAgICAgICAgICAgICAgICAgc2NoZWR1bGUoKTsKKyAgICAgICAoZ2RiKQorICAgICAgICM2ICAweDEwMDZhYTEwIGluIF9fZG93bl9mYWlsZWQgKCkgYXQgc2VtYXBob3JlLmM6MTU3CisgICAgICAgMTU3ICAgICB9CisgICAgICAgKGdkYikKKyAgICAgICAjNyAgMHgxMDA2YzVkOCBpbiBzZWd2X2hhbmRsZXIgKHNjPTB4NTAwNmU5NDApIGF0IHRyYXBfdXNlci5jOjE3NAorICAgICAgIDE3NCAgICAgICBzZWd2KHNjLT5jcjIsIHNjLT5lcnIgJiAyKTsKKyAgICAgICAoZ2RiKQorICAgICAgICM4ICAweDEwMDZjNWVjIGluIGtlcm5fc2Vndl9oYW5kbGVyIChzaWc9MTEpIGF0IHRyYXBfdXNlci5jOjE4MgorICAgICAgIDE4MiAgICAgICBzZWd2X2hhbmRsZXIoc2MpOworICAgICAgIChnZGIpIHAgKnNjCisgICAgICAgQ2Fubm90IGFjY2VzcyBtZW1vcnkgYXQgYWRkcmVzcyAweDAuCisKKworCisKKyAgVGhhdCdzIG5vdCB2ZXJ5IHVzZWZ1bCwgc28gSSdsbCB0cnkgYSBtb3JlIG1hbnVhbCBtZXRob2Q6CisKKworICAgICAgIChnZGIpIHAgKigoc3RydWN0IHNpZ2NvbnRleHQgKikgKCZzaWcgKyAxKSkKKyAgICAgICAkMTkgPSB7Z3MgPSAwLCBfX2dzaCA9IDAsIGZzID0gMCwgX19mc2ggPSAwLCBlcyA9IDQzLCBfX2VzaCA9IDAsIGRzID0gNDMsCisgICAgICAgICBfX2RzaCA9IDAsIGVkaSA9IDEzNDIxNzkzMjgsIGVzaSA9IDEzNTAzNzg1NDgsIGVicCA9IDEzNDI2MzA0NDAsCisgICAgICAgICBlc3AgPSAxMzQyNjMwNDIwLCBlYnggPSAxMzQ4MTUwNjI0LCBlZHggPSAxMjgwLCBlY3ggPSAwLCBlYXggPSAwLAorICAgICAgICAgdHJhcG5vID0gMTQsIGVyciA9IDQsIGVpcCA9IDI2ODQ4MDk0NSwgY3MgPSAzNSwgX19jc2ggPSAwLCBlZmxhZ3MgPSA2NjExOCwKKyAgICAgICAgIGVzcF9hdF9zaWduYWwgPSAxMzQyNjMwNDIwLCBzcyA9IDQzLCBfX3NzaCA9IDAsIGZwc3RhdGUgPSAweDAsIG9sZG1hc2sgPSAwLAorICAgICAgICAgY3IyID0gMTI4MH0KKworCisKKyAgVGhlIGlwIGlzIGluIGhhbmRsZV9tbV9mYXVsdDoKKworCisgICAgICAgKGdkYikgcCAodm9pZCAqKTI2ODQ4MDk0NQorICAgICAgICQyMCA9ICh2b2lkICopIDB4MTAwMGIxYjEKKyAgICAgICAoZ2RiKSBpIHN5bSAkMjAKKyAgICAgICBoYW5kbGVfbW1fZmF1bHQgKyA1NyBpbiBzZWN0aW9uIC50ZXh0CisKKworCisKKworICBTcGVjaWZpY2FsbHksIGl0J3MgaW4gcHRlX2FsbG9jOgorCisKKyAgICAgICAoZ2RiKSBpIGxpbmUgKiQyMAorICAgICAgIExpbmUgMTI0IG9mICIvaG9tZS9kaWtlL2xpbnV4LzIuMy4yNi91bS9pbmNsdWRlL2FzbS9wZ2FsbG9jLmgiCisgICAgICAgICAgc3RhcnRzIGF0IGFkZHJlc3MgMHgxMDAwYjFiMSA8aGFuZGxlX21tX2ZhdWx0KzU3PgorICAgICAgICAgIGFuZCBlbmRzIGF0IDB4MTAwMGIxYjcgPGhhbmRsZV9tbV9mYXVsdCs2Mz4uCisKKworCisKKworICBUbyBmaW5kIHdoZXJlIGluIGhhbmRsZV9tbV9mYXVsdCB0aGlzIGlzLCBJJ2xsIGp1bXAgZm9yd2FyZCBpbiB0aGUKKyAgY29kZSB1bnRpbCBJIHNlZSBhbiBhZGRyZXNzIGluIHRoYXQgcHJvY2VkdXJlOgorCisKKworICAgICAgIChnZGIpIGkgbGluZSAqMHgxMDAwYjFjMAorICAgICAgIExpbmUgMTI2IG9mICIvaG9tZS9kaWtlL2xpbnV4LzIuMy4yNi91bS9pbmNsdWRlL2FzbS9wZ2FsbG9jLmgiCisgICAgICAgICAgc3RhcnRzIGF0IGFkZHJlc3MgMHgxMDAwYjFiNyA8aGFuZGxlX21tX2ZhdWx0KzYzPgorICAgICAgICAgIGFuZCBlbmRzIGF0IDB4MTAwMGIxYzMgPGhhbmRsZV9tbV9mYXVsdCs3NT4uCisgICAgICAgKGdkYikgaSBsaW5lICoweDEwMDBiMWQwCisgICAgICAgTGluZSAxMzEgb2YgIi9ob21lL2Rpa2UvbGludXgvMi4zLjI2L3VtL2luY2x1ZGUvYXNtL3BnYWxsb2MuaCIKKyAgICAgICAgICBzdGFydHMgYXQgYWRkcmVzcyAweDEwMDBiMWQwIDxoYW5kbGVfbW1fZmF1bHQrODg+CisgICAgICAgICAgYW5kIGVuZHMgYXQgMHgxMDAwYjFkYSA8aGFuZGxlX21tX2ZhdWx0Kzk4Pi4KKyAgICAgICAoZ2RiKSBpIGxpbmUgKjB4MTAwMGIxZTAKKyAgICAgICBMaW5lIDYxIG9mICIvaG9tZS9kaWtlL2xpbnV4LzIuMy4yNi91bS9pbmNsdWRlL2FzbS9wZ2FsbG9jLmgiCisgICAgICAgICAgc3RhcnRzIGF0IGFkZHJlc3MgMHgxMDAwYjFkYSA8aGFuZGxlX21tX2ZhdWx0Kzk4PgorICAgICAgICAgIGFuZCBlbmRzIGF0IDB4MTAwMGIxZTEgPGhhbmRsZV9tbV9mYXVsdCsxMDU+LgorICAgICAgIChnZGIpIGkgbGluZSAqMHgxMDAwYjFmMAorICAgICAgIExpbmUgMTM0IG9mICIvaG9tZS9kaWtlL2xpbnV4LzIuMy4yNi91bS9pbmNsdWRlL2FzbS9wZ2FsbG9jLmgiCisgICAgICAgICAgc3RhcnRzIGF0IGFkZHJlc3MgMHgxMDAwYjFmMCA8aGFuZGxlX21tX2ZhdWx0KzEyMD4KKyAgICAgICAgICBhbmQgZW5kcyBhdCAweDEwMDBiMjAwIDxoYW5kbGVfbW1fZmF1bHQrMTM2Pi4KKyAgICAgICAoZ2RiKSBpIGxpbmUgKjB4MTAwMGIyMDAKKyAgICAgICBMaW5lIDEzNSBvZiAiL2hvbWUvZGlrZS9saW51eC8yLjMuMjYvdW0vaW5jbHVkZS9hc20vcGdhbGxvYy5oIgorICAgICAgICAgIHN0YXJ0cyBhdCBhZGRyZXNzIDB4MTAwMGIyMDAgPGhhbmRsZV9tbV9mYXVsdCsxMzY+CisgICAgICAgICAgYW5kIGVuZHMgYXQgMHgxMDAwYjIwOCA8aGFuZGxlX21tX2ZhdWx0KzE0ND4uCisgICAgICAgKGdkYikgaSBsaW5lICoweDEwMDBiMjEwCisgICAgICAgTGluZSAxMzkgb2YgIi9ob21lL2Rpa2UvbGludXgvMi4zLjI2L3VtL2luY2x1ZGUvYXNtL3BnYWxsb2MuaCIKKyAgICAgICAgICBzdGFydHMgYXQgYWRkcmVzcyAweDEwMDBiMjEwIDxoYW5kbGVfbW1fZmF1bHQrMTUyPgorICAgICAgICAgIGFuZCBlbmRzIGF0IDB4MTAwMGIyMTkgPGhhbmRsZV9tbV9mYXVsdCsxNjE+LgorICAgICAgIChnZGIpIGkgbGluZSAqMHgxMDAwYjIyMAorICAgICAgIExpbmUgMTE2OCBvZiAibWVtb3J5LmMiIHN0YXJ0cyBhdCBhZGRyZXNzIDB4MTAwMGIyMWUgPGhhbmRsZV9tbV9mYXVsdCsxNjY+CisgICAgICAgICAgYW5kIGVuZHMgYXQgMHgxMDAwYjIyMiA8aGFuZGxlX21tX2ZhdWx0KzE3MD4uCisKKworCisKKworICBTb21ldGhpbmcgaXMgYXBwYXJlbnRseSB3cm9uZyB3aXRoIHRoZSBwYWdlIHRhYmxlcyBvciB2bWFfc3RydWN0cywgc28KKyAgbGV0cyBnbyBiYWNrIHRvIGZyYW1lIDExIGFuZCBoYXZlIGEgbG9vayBhdCB0aGVtOgorCisKKworICAjMTEgMHgxMDA2YzBhYSBpbiBzZWd2IChhZGRyZXNzPTEzNDIxNzkzMjgsIGlzX3dyaXRlPTIpIGF0IHRyYXBfa2Vybi5jOjUwCisgIDUwICAgICAgICBoYW5kbGVfbW1fZmF1bHQoY3VycmVudCwgdm1hLCBhZGRyZXNzLCBpc193cml0ZSk7CisgIChnZGIpIGNhbGwgcGdkX29mZnNldF9wcm9jKHZtYS0+dm1fbW0sIGFkZHJlc3MpCisgICQyMiA9IChwZ2RfdCAqKSAweDgwYTU0OGMKKworCisKKworCisgIFRoYXQncyBwcmV0dHkgYm9ndXMuICBQYWdlIHRhYmxlcyBhcmVuJ3Qgc3VwcG9zZWQgdG8gYmUgaW4gcHJvY2VzcworICB0ZXh0IG9yIGRhdGEgYXJlYXMuICBMZXQncyBzZWUgd2hhdCdzIGluIHRoZSB2bWE6CisKKworICAgICAgIChnZGIpIHAgKnZtYQorICAgICAgICQyMyA9IHt2bV9tbSA9IDB4NTA3ZDI0MzQsIHZtX3N0YXJ0ID0gMCwgdm1fZW5kID0gMTM0NTEyNjQwLAorICAgICAgICAgdm1fbmV4dCA9IDB4ODBhNGY4Yywgdm1fcGFnZV9wcm90ID0ge3BncHJvdCA9IDB9LCB2bV9mbGFncyA9IDMxMjAwLAorICAgICAgICAgdm1fYXZsX2hlaWdodCA9IDIwNTgsIHZtX2F2bF9sZWZ0ID0gMHg4MGE4Yzk0LCB2bV9hdmxfcmlnaHQgPSAweDgwZDEwMDAsCisgICAgICAgICB2bV9uZXh0X3NoYXJlID0gMHhhZmZmZmRiMCwgdm1fcHByZXZfc2hhcmUgPSAweGFmZmZmZTYzLAorICAgICAgICAgdm1fb3BzID0gMHhhZmZmZmU3YSwgdm1fcGdvZmYgPSAyOTUyNzg5NjI2LCB2bV9maWxlID0gMHhhZmZmZmZlYywKKyAgICAgICAgIHZtX3ByaXZhdGVfZGF0YSA9IDB4NjJ9CisgICAgICAgKGdkYikgcCAqdm1hLnZtX21tCisgICAgICAgJDI0ID0ge21tYXAgPSAweDUwN2QyNDM0LCBtbWFwX2F2bCA9IDB4MCwgbW1hcF9jYWNoZSA9IDB4ODA0ODAwMCwKKyAgICAgICAgIHBnZCA9IDB4ODBhNGY4YywgbW1fdXNlcnMgPSB7Y291bnRlciA9IDB9LCBtbV9jb3VudCA9IHtjb3VudGVyID0gMTM0OTA0Mjg4fSwKKyAgICAgICAgIG1hcF9jb3VudCA9IDEzNDkwOTA3NiwgbW1hcF9zZW0gPSB7Y291bnQgPSB7Y291bnRlciA9IDEzNTA3Mzc5Mn0sCisgICAgICAgICAgIHNsZWVwZXJzID0gLTEzNDIxNzc4NzIsIHdhaXQgPSB7bG9jayA9IDxvcHRpbWl6ZWQgb3V0IG9yIHplcm8gbGVuZ3RoPiwKKyAgICAgICAgICAgICB0YXNrX2xpc3QgPSB7bmV4dCA9IDB4YWZmZmZlNjMsIHByZXYgPSAweGFmZmZmZTdhfSwKKyAgICAgICAgICAgICBfX21hZ2ljID0gLTEzNDIxNzc2NzAsIF9fY3JlYXRvciA9IC0xMzQyMTc3MzAwfSwgX19tYWdpYyA9IDk4fSwKKyAgICAgICAgIHBhZ2VfdGFibGVfbG9jayA9IHt9LCBjb250ZXh0ID0gMTM4LCBzdGFydF9jb2RlID0gMCwgZW5kX2NvZGUgPSAwLAorICAgICAgICAgc3RhcnRfZGF0YSA9IDAsIGVuZF9kYXRhID0gMCwgc3RhcnRfYnJrID0gMCwgYnJrID0gMCwgc3RhcnRfc3RhY2sgPSAwLAorICAgICAgICAgYXJnX3N0YXJ0ID0gMCwgYXJnX2VuZCA9IDAsIGVudl9zdGFydCA9IDAsIGVudl9lbmQgPSAwLCByc3MgPSAxMzUwMzgxNTM2LAorICAgICAgICAgdG90YWxfdm0gPSAwLCBsb2NrZWRfdm0gPSAwLCBkZWZfZmxhZ3MgPSAwLCBjcHVfdm1fbWFzayA9IDAsIHN3YXBfY250ID0gMCwKKyAgICAgICAgIHN3YXBfYWRkcmVzcyA9IDAsIHNlZ21lbnRzID0gMHgwfQorCisKKworCisKKyAgVGhpcyBhbHNvIHByZXR0eSBib2d1cy4gIFdpdGggYWxsIG9mIHRoZSAweDgweHh4eHggYW5kIDB4YWZmZmZ4eHgKKyAgYWRkcmVzc2VzLCB0aGlzIGlzIGxvb2tpbmcgbGlrZSBhIHN0YWNrIHdhcyBwbG9ua2VkIGRvd24gb24gdG9wIG9mCisgIHRoZXNlIHN0cnVjdHVyZXMuICBNYXliZSBpdCdzIGEgc3RhY2sgb3ZlcmZsb3cgZnJvbSB0aGUgbmV4dCBwYWdlOgorCisKKworICAgICAgIChnZGIpIHAgdm1hCisgICAgICAgJDI1ID0gKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKSAweDUwN2QyNDM0CisKKworCisKKworICBUaGF0J3MgdG93YXJkcyB0aGUgbG93ZXIgcXVhcnRlciBvZiB0aGUgcGFnZSwgc28gdGhhdCB3b3VsZCBoYXZlIHRvCisgIGhhdmUgYmVlbiBwcmV0dHkgaGVhdnkgc3RhY2sgb3ZlcmZsb3c6CisKKworCisKKworCisKKworCisKKworCisKKworICAoZ2RiKSB4LzEwMHggJDI1CisgIDB4NTA3ZDI0MzQ6ICAgICAweDUwN2QyNDM0ICAgICAgMHgwMDAwMDAwMCAgICAgIDB4MDgwNDgwMDAgICAgICAweDA4MGE0ZjhjCisgIDB4NTA3ZDI0NDQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwODBhNzllMCAgICAgIDB4MDgwYThjOTQgICAgICAweDA4MGQxMDAwCisgIDB4NTA3ZDI0NTQ6ICAgICAweGFmZmZmZGIwICAgICAgMHhhZmZmZmU2MyAgICAgIDB4YWZmZmZlN2EgICAgICAweGFmZmZmZTdhCisgIDB4NTA3ZDI0NjQ6ICAgICAweGFmZmZmZmVjICAgICAgMHgwMDAwMDA2MiAgICAgIDB4MDAwMDAwOGEgICAgICAweDAwMDAwMDAwCisgIDB4NTA3ZDI0NzQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwMDAwMDAwMCAgICAgIDB4MDAwMDAwMDAgICAgICAweDAwMDAwMDAwCisgIDB4NTA3ZDI0ODQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwMDAwMDAwMCAgICAgIDB4MDAwMDAwMDAgICAgICAweDAwMDAwMDAwCisgIDB4NTA3ZDI0OTQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwMDAwMDAwMCAgICAgIDB4NTA3ZDJmZTAgICAgICAweDAwMDAwMDAwCisgIDB4NTA3ZDI0YTQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwMDAwMDAwMCAgICAgIDB4MDAwMDAwMDAgICAgICAweDAwMDAwMDAwCisgIDB4NTA3ZDI0YjQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwMDAwMDAwMCAgICAgIDB4MDAwMDAwMDAgICAgICAweDAwMDAwMDAwCisgIDB4NTA3ZDI0YzQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwMDAwMDAwMCAgICAgIDB4MDAwMDAwMDAgICAgICAweDAwMDAwMDAwCisgIDB4NTA3ZDI0ZDQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwMDAwMDAwMCAgICAgIDB4MDAwMDAwMDAgICAgICAweDAwMDAwMDAwCisgIDB4NTA3ZDI0ZTQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwMDAwMDAwMCAgICAgIDB4MDAwMDAwMDAgICAgICAweDAwMDAwMDAwCisgIDB4NTA3ZDI0ZjQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwMDAwMDAwMCAgICAgIDB4MDAwMDAwMDAgICAgICAweDAwMDAwMDAwCisgIDB4NTA3ZDI1MDQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwMDAwMDAwMCAgICAgIDB4MDAwMDAwMDAgICAgICAweDAwMDAwMDAwCisgIDB4NTA3ZDI1MTQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwMDAwMDAwMCAgICAgIDB4MDAwMDAwMDAgICAgICAweDAwMDAwMDAwCisgIDB4NTA3ZDI1MjQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwMDAwMDAwMCAgICAgIDB4MDAwMDAwMDAgICAgICAweDAwMDAwMDAwCisgIDB4NTA3ZDI1MzQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwMDAwMDAwMCAgICAgIDB4NTA3ZDI1ZGMgICAgICAweDAwMDAwMDAwCisgIDB4NTA3ZDI1NDQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwMDAwMDAwMCAgICAgIDB4MDAwMDAwMDAgICAgICAweDAwMDAwMDAwCisgIDB4NTA3ZDI1NTQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwMDAwMDAwMCAgICAgIDB4MDAwMDAwMDAgICAgICAweDAwMDAwMDAwCisgIDB4NTA3ZDI1NjQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwMDAwMDAwMCAgICAgIDB4MDAwMDAwMDAgICAgICAweDAwMDAwMDAwCisgIDB4NTA3ZDI1NzQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwMDAwMDAwMCAgICAgIDB4MDAwMDAwMDAgICAgICAweDAwMDAwMDAwCisgIDB4NTA3ZDI1ODQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwMDAwMDAwMCAgICAgIDB4MDAwMDAwMDAgICAgICAweDAwMDAwMDAwCisgIDB4NTA3ZDI1OTQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwMDAwMDAwMCAgICAgIDB4MDAwMDAwMDAgICAgICAweDAwMDAwMDAwCisgIDB4NTA3ZDI1YTQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwMDAwMDAwMCAgICAgIDB4MDAwMDAwMDAgICAgICAweDAwMDAwMDAwCisgIDB4NTA3ZDI1YjQ6ICAgICAweDAwMDAwMDAwICAgICAgMHgwMDAwMDAwMCAgICAgIDB4MDAwMDAwMDAgICAgICAweDAwMDAwMDAwCisKKworCisKKworICBJdCdzIG5vdCBzdGFjayBvdmVyZmxvdy4gIFRoZSBvbmx5ICJzdGFjay1saWtlIiBwaWVjZSBvZiB0aGlzIGRhdGEgaXMKKyAgdGhlIHZtYV9zdHJ1Y3QgaXRzZWxmLgorCisKKyAgQXQgdGhpcyBwb2ludCwgSSBkb24ndCBzZWUgYW55IGF2ZW51ZXMgdG8gcHVyc3VlLCBzbyBJIGp1c3QgaGF2ZSB0bworICBhZG1pdCB0aGF0IEkgaGF2ZSBubyBpZGVhIHdoYXQncyBnb2luZyBvbi4gIFdoYXQgSSB3aWxsIGRvLCB0aG91Z2gsIGlzCisgIHN0aWNrIGEgdHJhcCBvbiB0aGUgc2VnZmF1bHQgaGFuZGxlciB3aGljaCB3aWxsIHN0b3AgaWYgaXQgc2VlcyBhbnkKKyAgd3JpdGVzIHRvIHRoZSBpZGxlIHRocmVhZCdzIHN0YWNrLiAgVGhhdCB3YXMgdGhlIHRoaW5nIHRoYXQgaGFwcGVuZWQKKyAgZmlyc3QsIGFuZCBpdCBtYXkgYmUgdGhhdCBpZiBJIGNhbiBjYXRjaCBpdCBpbW1lZGlhdGVseSwgd2hhdCdzIGdvaW5nCisgIG9uIHdpbGwgYmUgc29tZXdoYXQgY2xlYXJlci4KKworCisgIDEyLjIuICBFcGlzb2RlIDI6IFRoZSBjYXNlIG9mIHRoZSBodW5nIGZzY2sKKworICBBZnRlciBzZXR0aW5nIGEgdHJhcCBpbiB0aGUgU0VHViBoYW5kbGVyIGZvciBhY2Nlc3NlcyB0byB0aGUgc2lnbmFsCisgIHRocmVhZCdzIHN0YWNrLCBJIHJlcmFuIHRoZSBrZXJuZWwuCisKKworICBmc2NrIGh1bmcgYWdhaW4sIHRoaXMgdGltZSBieSBoaXR0aW5nIHRoZSB0cmFwOgorCisKKworCisKKworCisKKworCisKKworCisKKworCisgIFNldHRpbmcgaG9zdG5hbWUgdW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgT0sgXQorICBDaGVja2luZyByb290IGZpbGVzeXN0ZW0KKyAgL2Rldi9maGQwIGNvbnRhaW5zIGEgZmlsZSBzeXN0ZW0gd2l0aCBlcnJvcnMsIGNoZWNrIGZvcmNlZC4KKyAgRXJyb3IgcmVhZGluZyBibG9jayA4Njg5NCAoQXR0ZW1wdCB0byByZWFkIGJsb2NrIGZyb20gZmlsZXN5c3RlbSByZXN1bHRlZCBpbiBzaG9ydCByZWFkKSB3aGlsZSByZWFkaW5nIGluZGlyZWN0IGJsb2NrcyBvZiBpbm9kZSAxOTc4MC4KKworICAvZGV2L2ZoZDA6IFVORVhQRUNURUQgSU5DT05TSVNURU5DWTsgUlVOIGZzY2sgTUFOVUFMTFkuCisgICAgICAgICAgKGkuZS4sIHdpdGhvdXQgLWEgb3IgLXAgb3B0aW9ucykKKyAgWyBGQUlMRUQgXQorCisgICoqKiBBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgdGhlIGZpbGUgc3lzdGVtIGNoZWNrLgorICAqKiogRHJvcHBpbmcgeW91IHRvIGEgc2hlbGw7IHRoZSBzeXN0ZW0gd2lsbCByZWJvb3QKKyAgKioqIHdoZW4geW91IGxlYXZlIHRoZSBzaGVsbC4KKyAgR2l2ZSByb290IHBhc3N3b3JkIGZvciBtYWludGVuYW5jZQorICAob3IgdHlwZSBDb250cm9sLUQgZm9yIG5vcm1hbCBzdGFydHVwKToKKworICBbcm9vdEB1bWwgL3Jvb3RdIyBmc2NrIC15IC9kZXYvZmhkMAorICBmc2NrIC15IC9kZXYvZmhkMAorICBQYXJhbGxlbGl6aW5nIGZzY2sgdmVyc2lvbiAxLjE0ICg5LUphbi0xOTk5KQorICBlMmZzY2sgMS4xNCwgOS1KYW4tMTk5OSBmb3IgRVhUMiBGUyAwLjViLCA5NS8wOC8wOQorICAvZGV2L2ZoZDAgY29udGFpbnMgYSBmaWxlIHN5c3RlbSB3aXRoIGVycm9ycywgY2hlY2sgZm9yY2VkLgorICBQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKKyAgRXJyb3IgcmVhZGluZyBibG9jayA4Njg5NCAoQXR0ZW1wdCB0byByZWFkIGJsb2NrIGZyb20gZmlsZXN5c3RlbSByZXN1bHRlZCBpbiBzaG9ydCByZWFkKSB3aGlsZSByZWFkaW5nIGluZGlyZWN0IGJsb2NrcyBvZiBpbm9kZSAxOTc4MC4gIElnbm9yZSBlcnJvcj8geWVzCisKKyAgUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCisgIEVycm9yIHJlYWRpbmcgYmxvY2sgNDk0MDUgKEF0dGVtcHQgdG8gcmVhZCBibG9jayBmcm9tIGZpbGVzeXN0ZW0gcmVzdWx0ZWQgaW4gc2hvcnQgcmVhZCkuICBJZ25vcmUgZXJyb3I/IHllcworCisgIERpcmVjdG9yeSBpbm9kZSAxMTg1OCwgYmxvY2sgMCwgb2Zmc2V0IDA6IGRpcmVjdG9yeSBjb3JydXB0ZWQKKyAgU2FsdmFnZT8geWVzCisKKyAgTWlzc2luZyAnLicgaW4gZGlyZWN0b3J5IGlub2RlIDExODU4LgorICBGaXg/IHllcworCisgIE1pc3NpbmcgJy4uJyBpbiBkaXJlY3RvcnkgaW5vZGUgMTE4NTguCisgIEZpeD8geWVzCisKKyAgVW50ZXN0ZWQgKDQxMjcpIFsxMDBmZTQ0Y106IHRyYXBfa2Vybi5jIGxpbmUgMzEKKworCisKKworCisgIEkgbmVlZCB0byBnZXQgdGhlIHNpZ25hbCB0aHJlYWQgdG8gZGV0YWNoIGZyb20gcGlkIDQxMjcgc28gdGhhdCBJIGNhbgorICBhdHRhY2ggdG8gaXQgd2l0aCBnZGIuICBUaGlzIGlzIGRvbmUgYnkgc2VuZGluZyBpdCBhIFNJR1VTUjEsIHdoaWNoIGlzCisgIGNhdWdodCBieSB0aGUgc2lnbmFsIHRocmVhZCwgd2hpY2ggZGV0YWNoZXMgdGhlIHByb2Nlc3M6CisKKworICAgICAgIGtpbGwgLVVTUjEgNDEyNworCisKKworCisKKyAgTm93IEkgY2FuIHJ1biBnZGIgb24gaXQ6CisKKworCisKKworCisKKworCisKKworCisKKyAgfi9saW51eC8yLjMuMjYvdW0gMTAzNDogZ2RiIGxpbnV4CisgIEdOVSBnZGIgNC4xNy4wLjExIHdpdGggTGludXggc3VwcG9ydAorICBDb3B5cmlnaHQgMTk5OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgR0RCIGlzIGZyZWUgc29mdHdhcmUsIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhbmQgeW91IGFyZQorICB3ZWxjb21lIHRvIGNoYW5nZSBpdCBhbmQvb3IgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgaXQgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zLgorICBUeXBlICJzaG93IGNvcHlpbmciIHRvIHNlZSB0aGUgY29uZGl0aW9ucy4KKyAgVGhlcmUgaXMgYWJzb2x1dGVseSBubyB3YXJyYW50eSBmb3IgR0RCLiAgVHlwZSAic2hvdyB3YXJyYW50eSIgZm9yIGRldGFpbHMuCisgIFRoaXMgR0RCIHdhcyBjb25maWd1cmVkIGFzICJpMzg2LXJlZGhhdC1saW51eCIuLi4KKyAgKGdkYikgYXR0IDQxMjcKKyAgQXR0YWNoaW5nIHRvIHByb2dyYW0gYC9ob21lL2Rpa2UvbGludXgvMi4zLjI2L3VtL2xpbnV4JywgUGlkIDQxMjcKKyAgMHgxMDA3NTg5MSBpbiBfX2xpYmNfbmFub3NsZWVwICgpCisKKworCisKKworICBUaGUgYmFja3RyYWNlIHNob3dzIHRoYXQgaXQgd2FzIGluIGEgd3JpdGUgYW5kIHRoYXQgdGhlIGZhdWx0IGFkZHJlc3MKKyAgKGFkZHJlc3MgaW4gZnJhbWUgMykgaXMgMHg1MDAwMDgwMCwgd2hpY2ggaXMgcmlnaHQgaW4gdGhlIG1pZGRsZSBvZgorICB0aGUgc2lnbmFsIHRocmVhZCdzIHN0YWNrIHBhZ2U6CisKKworICAgICAgIChnZGIpIGJ0CisgICAgICAgIzAgIDB4MTAwNzU4OTEgaW4gX19saWJjX25hbm9zbGVlcCAoKQorICAgICAgICMxICAweDEwMDc1ODRkIGluIF9fc2xlZXAgKHNlY29uZHM9MTAwMDAwMCkKKyAgICAgICAgICAgYXQgLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2xlZXAuYzo3OAorICAgICAgICMyICAweDEwMDZjZTlhIGluIHN0b3AgKCkgYXQgdXNlcl91dGlsLmM6MTkxCisgICAgICAgIzMgIDB4MTAwNmJmODggaW4gc2VndiAoYWRkcmVzcz0xMzQyMTc5MzI4LCBpc193cml0ZT0yKSBhdCB0cmFwX2tlcm4uYzozMQorICAgICAgICM0ICAweDEwMDZjNjI4IGluIHNlZ3ZfaGFuZGxlciAoc2M9MHg1MDA2ZWFmOCkgYXQgdHJhcF91c2VyLmM6MTc0CisgICAgICAgIzUgIDB4MTAwNmM2M2MgaW4ga2Vybl9zZWd2X2hhbmRsZXIgKHNpZz0xMSkgYXQgdHJhcF91c2VyLmM6MTgyCisgICAgICAgIzYgIDxzaWduYWwgaGFuZGxlciBjYWxsZWQ+CisgICAgICAgIzcgIDB4YzBmZCBpbiA/PyAoKQorICAgICAgICM4ICAweDEwMDE2NjQ3IGluIHN5c193cml0ZSAoZmQ9MywgYnVmPTB4ODBiODgwMCAiUi4iLCBjb3VudD0xMDI0KQorICAgICAgICAgICBhdCByZWFkX3dyaXRlLmM6MTU5CisgICAgICAgIzkgIDB4MTAwNmQ2MDMgaW4gZXhlY3V0ZV9zeXNjYWxsIChzeXNjYWxsPTQsIGFyZ3M9MHg1MDA2ZWYwOCkKKyAgICAgICAgICAgYXQgc3lzY2FsbF9rZXJuLmM6MjU0CisgICAgICAgIzEwIDB4MTAwNmFmODcgaW4gcmVhbGx5X2RvX3N5c2NhbGwgKHNpZz0xMikgYXQgc3lzY2FsbF91c2VyLmM6MzUKKyAgICAgICAjMTEgPHNpZ25hbCBoYW5kbGVyIGNhbGxlZD4KKyAgICAgICAjMTIgMHg0MDBkYzhiMCBpbiA/PyAoKQorICAgICAgICMxMyA8c2lnbmFsIGhhbmRsZXIgY2FsbGVkPgorICAgICAgICMxNCAweDQwMGRjOGIwIGluID8/ICgpCisgICAgICAgIzE1IDB4ODA1NDVmZCBpbiA/PyAoKQorICAgICAgICMxNiAweDgwNGRhYWUgaW4gPz8gKCkKKyAgICAgICAjMTcgMHg4MDU0MzM0IGluID8/ICgpCisgICAgICAgIzE4IDB4ODA0ZDIzZSBpbiA/PyAoKQorICAgICAgICMxOSAweDgwNDk2MzIgaW4gPz8gKCkKKyAgICAgICAjMjAgMHg4MDQ5MWQyIGluID8/ICgpCisgICAgICAgIzIxIDB4ODA1OTZiNSBpbiA/PyAoKQorICAgICAgIChnZGIpIHAgKHZvaWQgKikxMzQyMTc5MzI4CisgICAgICAgJDMgPSAodm9pZCAqKSAweDUwMDAwODAwCisKKworCisKKworICBHb2luZyB1cCB0aGUgc3RhY2sgdG8gdGhlIHNlZ3ZfaGFuZGxlciBmcmFtZSBhbmQgbG9va2luZyBhdCB3aGVyZSBpbgorICB0aGUgY29kZSB0aGUgYWNjZXNzIGhhcHBlbmVkIHNob3dzIHRoYXQgaXQgaGFwcGVuZWQgbmVhciBsaW5lIDExMCBvZgorICBibG9ja19kZXYuYzoKKworCisKKworCisKKworCisKKyAgKGdkYikgdXAKKyAgIzEgIDB4MTAwNzU4NGQgaW4gX19zbGVlcCAoc2Vjb25kcz0xMDAwMDAwKQorICAgICAgYXQgLi4vc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2xlZXAuYzo3OAorICAuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zbGVlcC5jOjc4OiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5LgorICAoZ2RiKQorICAjMiAgMHgxMDA2Y2U5YSBpbiBzdG9wICgpIGF0IHVzZXJfdXRpbC5jOjE5MQorICAxOTEgICAgICAgd2hpbGUoMSkgc2xlZXAoMTAwMDAwMCk7CisgIChnZGIpCisgICMzICAweDEwMDZiZjg4IGluIHNlZ3YgKGFkZHJlc3M9MTM0MjE3OTMyOCwgaXNfd3JpdGU9MikgYXQgdHJhcF9rZXJuLmM6MzEKKyAgMzEgICAgICAgICAgS0VSTl9VTlRFU1RFRCgpOworICAoZ2RiKQorICAjNCAgMHgxMDA2YzYyOCBpbiBzZWd2X2hhbmRsZXIgKHNjPTB4NTAwNmVhZjgpIGF0IHRyYXBfdXNlci5jOjE3NAorICAxNzQgICAgICAgc2VndihzYy0+Y3IyLCBzYy0+ZXJyICYgMik7CisgIChnZGIpIHAgKnNjCisgICQxID0ge2dzID0gMCwgX19nc2ggPSAwLCBmcyA9IDAsIF9fZnNoID0gMCwgZXMgPSA0MywgX19lc2ggPSAwLCBkcyA9IDQzLAorICAgIF9fZHNoID0gMCwgZWRpID0gMTM0MjE3OTMyOCwgZXNpID0gMTM0OTczNDQwLCBlYnAgPSAxMzQyNjMxNDg0LAorICAgIGVzcCA9IDEzNDI2MzA4NjQsIGVieCA9IDI1NiwgZWR4ID0gMCwgZWN4ID0gMjU2LCBlYXggPSAxMDI0LCB0cmFwbm8gPSAxNCwKKyAgICBlcnIgPSA2LCBlaXAgPSAyNjg1NTA4MzQsIGNzID0gMzUsIF9fY3NoID0gMCwgZWZsYWdzID0gNjYwNzAsCisgICAgZXNwX2F0X3NpZ25hbCA9IDEzNDI2MzA4NjQsIHNzID0gNDMsIF9fc3NoID0gMCwgZnBzdGF0ZSA9IDB4MCwgb2xkbWFzayA9IDAsCisgICAgY3IyID0gMTM0MjE3OTMyOH0KKyAgKGdkYikgcCAodm9pZCAqKTI2ODU1MDgzNAorICAkMiA9ICh2b2lkICopIDB4MTAwMWMyYjIKKyAgKGdkYikgaSBzeW0gJDIKKyAgYmxvY2tfd3JpdGUgKyAxMDkwIGluIHNlY3Rpb24gLnRleHQKKyAgKGdkYikgaSBsaW5lICokMgorICBMaW5lIDIwOSBvZiAiL2hvbWUvZGlrZS9saW51eC8yLjMuMjYvdW0vaW5jbHVkZS9hc20vYXJjaC9zdHJpbmcuaCIKKyAgICAgc3RhcnRzIGF0IGFkZHJlc3MgMHgxMDAxYzJhMSA8YmxvY2tfd3JpdGUrMTA3Mz4KKyAgICAgYW5kIGVuZHMgYXQgMHgxMDAxYzJiZiA8YmxvY2tfd3JpdGUrMTEwMz4uCisgIChnZGIpIGkgbGluZSAqMHgxMDAxYzJjMAorICBMaW5lIDExMCBvZiAiYmxvY2tfZGV2LmMiIHN0YXJ0cyBhdCBhZGRyZXNzIDB4MTAwMWMyYmYgPGJsb2NrX3dyaXRlKzExMDM+CisgICAgIGFuZCBlbmRzIGF0IDB4MTAwMWMyZTMgPGJsb2NrX3dyaXRlKzExMzk+LgorCisKKworCisKKyAgTG9va2luZyBhdCB0aGUgc291cmNlIHNob3dzIHRoYXQgdGhlIGZhdWx0IGhhcHBlbmVkIGR1cmluZyBhIGNhbGwgdG8KKyAgY29weV9mcm9tX3VzZXIgdG8gY29weSB0aGUgZGF0YSBpbnRvIHRoZSBrZXJuZWw6CisKKworICAgICAgIDEwNyAgICAgICAgICAgICBjb3VudCAtPSBjaGFyczsKKyAgICAgICAxMDggICAgICAgICAgICAgY29weV9mcm9tX3VzZXIocCxidWYsY2hhcnMpOworICAgICAgIDEwOSAgICAgICAgICAgICBwICs9IGNoYXJzOworICAgICAgIDExMCAgICAgICAgICAgICBidWYgKz0gY2hhcnM7CisKKworCisKKworICBwIGlzIHRoZSBwb2ludGVyIHdoaWNoIG11c3QgY29udGFpbiAweDUwMDAwODAwLCBzaW5jZSBidWYgY29udGFpbnMKKyAgMHg4MGI4ODAwIChmcmFtZSA4IGFib3ZlKS4gIEl0IGlzIGRlZmluZWQgYXM6CisKKworICAgICAgICAgICAgICAgICAgICAgICBwID0gb2Zmc2V0ICsgYmgtPmJfZGF0YTsKKworCisKKworCisgIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgYmggaXMsIGFuZCBpdCBqdXN0IHNvIGhhcHBlbnMgdGhhdCBiaCBpcworICBwYXNzZWQgYXMgYW4gYXJndW1lbnQgdG8gbWFya19idWZmZXJfdXB0b2RhdGUgYW5kIG1hcmtfYnVmZmVyX2RpcnR5IGEKKyAgZmV3IGxpbmVzIGxhdGVyLCBzbyBJIGRvIGEgbGl0dGxlIGRpc2Fzc2VtYmx5OgorCisKKworCisgIChnZGIpIGRpc2FzIDB4MTAwMWMyYmYgMHgxMDAxYzJlMAorICBEdW1wIG9mIGFzc2VtYmxlciBjb2RlIGZyb20gMHgxMDAxYzJiZiB0byAweDEwMDFjMmQwOgorICAweDEwMDFjMmJmIDxibG9ja193cml0ZSsxMTAzPjogIGFkZGwgICAlZWF4LDB4YyglZWJwKQorICAweDEwMDFjMmMyIDxibG9ja193cml0ZSsxMTA2PjogIG1vdmwgICAweGZmZmZmZGQ0KCVlYnApLCVlZHgKKyAgMHgxMDAxYzJjOCA8YmxvY2tfd3JpdGUrMTExMj46ICBidHNsICAgJDB4MCwweDE4KCVlZHgpCisgIDB4MTAwMWMyY2QgPGJsb2NrX3dyaXRlKzExMTc+OiAgYnRzbCAgICQweDEsMHgxOCglZWR4KQorICAweDEwMDFjMmQyIDxibG9ja193cml0ZSsxMTIyPjogIHNiYmwgICAlZWN4LCVlY3gKKyAgMHgxMDAxYzJkNCA8YmxvY2tfd3JpdGUrMTEyND46ICB0ZXN0bCAgJWVjeCwlZWN4CisgIDB4MTAwMWMyZDYgPGJsb2NrX3dyaXRlKzExMjY+OiAgam5lICAgIDB4MTAwMWMyZTMgPGJsb2NrX3dyaXRlKzExMzk+CisgIDB4MTAwMWMyZDggPGJsb2NrX3dyaXRlKzExMjg+OiAgcHVzaGwgICQweDAKKyAgMHgxMDAxYzJkYSA8YmxvY2tfd3JpdGUrMTEzMD46ICBwdXNobCAgJWVkeAorICAweDEwMDFjMmRiIDxibG9ja193cml0ZSsxMTMxPjogIGNhbGwgICAweDEwMDE4MTljIDxfX21hcmtfYnVmZmVyX2RpcnR5PgorICBFbmQgb2YgYXNzZW1ibGVyIGR1bXAuCisKKworCisKKworICBBdCB0aGF0IHBvaW50LCBiaCBpcyBpbiAlZWR4IChhZGRyZXNzIDB4MTAwMWMyZGEpLCB3aGljaCBpcyBjYWxjdWxhdGVkCisgIGF0IDB4MTAwMWMyYzIgYXMgJWVicCArIDB4ZmZmZmZkZDQsIHNvIEkgZmlndXJlIGV4YWN0bHkgd2hhdCB0aGF0IGlzLAorICB0YWtpbmcgJWVicCBmcm9tIHRoZSBzaWdjb250ZXh0X3N0cnVjdCBhYm92ZToKKworCisgICAgICAgKGdkYikgcCAodm9pZCAqKTEzNDI2MzE0ODQKKyAgICAgICAkNSA9ICh2b2lkICopIDB4NTAwNmVlM2MKKyAgICAgICAoZ2RiKSBwIDB4NTAwNmVlM2MrMHhmZmZmZmRkNAorICAgICAgICQ2ID0gMTM0MjYzMDkyOAorICAgICAgIChnZGIpIHAgKHZvaWQgKikkNgorICAgICAgICQ3ID0gKHZvaWQgKikgMHg1MDA2ZWMxMAorICAgICAgIChnZGIpIHAgKigodm9pZCAqKikkNykKKyAgICAgICAkOCA9ICh2b2lkICopIDB4NTAxMDAyMDAKKworCisKKworCisgIE5vdywgSSBsb29rIGF0IHRoZSBzdHJ1Y3R1cmUgdG8gc2VlIHdoYXQncyBpbiBpdCwgYW5kIHBhcnRpY3VsYXJseSwKKyAgd2hhdCBpdHMgYl9kYXRhIGZpZWxkIGNvbnRhaW5zOgorCisKKyAgICAgICAoZ2RiKSBwICooKHN0cnVjdCBidWZmZXJfaGVhZCAqKTB4NTAxMDAyMDApCisgICAgICAgJDEzID0ge2JfbmV4dCA9IDB4NTAyODkzODAsIGJfYmxvY2tuciA9IDQ5NDA1LCBiX3NpemUgPSAxMDI0LCBiX2xpc3QgPSAwLAorICAgICAgICAgYl9kZXYgPSAxNTg3MiwgYl9jb3VudCA9IHtjb3VudGVyID0gMX0sIGJfcmRldiA9IDE1ODcyLCBiX3N0YXRlID0gMjQsCisgICAgICAgICBiX2ZsdXNodGltZSA9IDAsIGJfbmV4dF9mcmVlID0gMHg1MDEwMDFhMCwgYl9wcmV2X2ZyZWUgPSAweDUwMTAwMjYwLAorICAgICAgICAgYl90aGlzX3BhZ2UgPSAweDUwMTAwMWEwLCBiX3JlcW5leHQgPSAweDAsIGJfcHByZXYgPSAweDUwN2ZjZjU4LAorICAgICAgICAgYl9kYXRhID0gMHg1MDAwMDgwMCAiIiwgYl9wYWdlID0gMHg1MDAwNDAwMCwKKyAgICAgICAgIGJfZW5kX2lvID0gMHgxMDAxN2Y2MCA8ZW5kX2J1ZmZlcl9pb19zeW5jPiwgYl9kZXZfaWQgPSAweDAsCisgICAgICAgICBiX3JzZWN0b3IgPSA5ODgxMCwgYl93YWl0ID0ge2xvY2sgPSA8b3B0aW1pemVkIG91dCBvciB6ZXJvIGxlbmd0aD4sCisgICAgICAgICAgIHRhc2tfbGlzdCA9IHtuZXh0ID0gMHg1MDEwMDI0OCwgcHJldiA9IDB4NTAxMDAyNDh9LCBfX21hZ2ljID0gMTM0MzIyNjQ0OCwKKyAgICAgICAgICAgX19jcmVhdG9yID0gMH0sIGJfa2lvYnVmID0gMHgwfQorCisKKworCisKKyAgVGhlIGJfZGF0YSBmaWVsZCBpcyBpbmRlZWQgMHg1MDAwMDgwMCwgc28gdGhlIHF1ZXN0aW9uIGJlY29tZXMgaG93CisgIHRoYXQgaGFwcGVuZWQuICBUaGUgcmVzdCBvZiB0aGUgc3RydWN0dXJlIGxvb2tzIGZpbmUsIHNvIHRoaXMgcHJvYmFibHkKKyAgaXMgbm90IGEgY2FzZSBvZiBkYXRhIGNvcnJ1cHRpb24uICBJdCBoYXBwZW5lZCBvbiBwdXJwb3NlIHNvbWVob3cuCisKKworICBUaGUgYl9wYWdlIGZpZWxkIGlzIGEgcG9pbnRlciB0byB0aGUgcGFnZV9zdHJ1Y3QgcmVwcmVzZW50aW5nIHRoZQorICAweDUwMDAwMDAwIHBhZ2UuICBMb29raW5nIGF0IGl0IHNob3dzIHRoZSBrZXJuZWwncyBpZGVhIG9mIHRoZSBzdGF0ZQorICBvZiB0aGF0IHBhZ2U6CisKKworCisgIChnZGIpIHAgKiQxMy5iX3BhZ2UKKyAgJDE3ID0ge2xpc3QgPSB7bmV4dCA9IDB4NTAwMDRhNWMsIHByZXYgPSAweDEwMGM1MTc0fSwgbWFwcGluZyA9IDB4MCwKKyAgICBpbmRleCA9IDAsIG5leHRfaGFzaCA9IDB4MCwgY291bnQgPSB7Y291bnRlciA9IDF9LCBmbGFncyA9IDEzMiwgbHJ1ID0geworICAgICAgbmV4dCA9IDB4NTAwMDg0NjAsIHByZXYgPSAweDUwMDE5MzUwfSwgd2FpdCA9IHsKKyAgICAgIGxvY2sgPSA8b3B0aW1pemVkIG91dCBvciB6ZXJvIGxlbmd0aD4sIHRhc2tfbGlzdCA9IHtuZXh0ID0gMHg1MDAwNDAyNCwKKyAgICAgICAgcHJldiA9IDB4NTAwMDQwMjR9LCBfX21hZ2ljID0gMTM0MjE5MzcwOCwgX19jcmVhdG9yID0gMH0sCisgICAgcHByZXZfaGFzaCA9IDB4MCwgYnVmZmVycyA9IDB4NTAxMDAyYzAsIHZpcnR1YWwgPSAxMzQyMTc3MjgwLAorICAgIHpvbmUgPSAweDEwMGM1MTYwfQorCisKKworCisKKyAgU29tZSBzYW5pdHktY2hlY2tpbmc6IHRoZSB2aXJ0dWFsIGZpZWxkIHNob3dzIHRoZSAidmlydHVhbCIgYWRkcmVzcyBvZgorICB0aGlzIHBhZ2UsIHdoaWNoIGluIHRoaXMga2VybmVsIGlzIHRoZSBzYW1lIGFzIGl0cyAicGh5c2ljYWwiIGFkZHJlc3MsCisgIGFuZCB0aGUgcGFnZV9zdHJ1Y3QgaXRzZWxmIHNob3VsZCBiZSBtZW1fbWFwWzBdLCBzaW5jZSBpdCByZXByZXNlbnRzCisgIHRoZSBmaXJzdCBwYWdlIG9mIG1lbW9yeToKKworCisKKyAgICAgICAoZ2RiKSBwICh2b2lkICopMTM0MjE3NzI4MAorICAgICAgICQxOCA9ICh2b2lkICopIDB4NTAwMDAwMDAKKyAgICAgICAoZ2RiKSBwIG1lbV9tYXAKKyAgICAgICAkMTkgPSAobWVtX21hcF90ICopIDB4NTAwMDQwMDAKKworCisKKworCisgIFRoZXNlIGNoZWNrIG91dCBmaW5lLgorCisKKyAgTm93IHRvIGNoZWNrIG91dCB0aGUgcGFnZV9zdHJ1Y3QgaXRzZWxmLiAgSW4gcGFydGljdWxhciwgdGhlIGZsYWdzCisgIGZpZWxkIHNob3dzIHdoZXRoZXIgdGhlIHBhZ2UgaXMgY29uc2lkZXJlZCBmcmVlIG9yIG5vdDoKKworCisgICAgICAgKGdkYikgcCAodm9pZCAqKTEzMgorICAgICAgICQyMSA9ICh2b2lkICopIDB4ODQKKworCisKKworCisgIFRoZSAicmVzZXJ2ZWQiIGJpdCBpcyB0aGUgaGlnaCBiaXQsIHdoaWNoIGlzIGRlZmluaXRlbHkgbm90IHNldCwgc28KKyAgdGhlIGtlcm5lbCBjb25zaWRlcnMgdGhlIHNpZ25hbCBzdGFjayBwYWdlIHRvIGJlIGZyZWUgYW5kIGF2YWlsYWJsZSB0bworICBiZSB1c2VkLgorCisKKyAgQXQgdGhpcyBwb2ludCwgSSBqdW1wIHRvIGNvbmNsdXNpb25zIGFuZCBzdGFydCBsb29raW5nIGF0IG15IGVhcmx5CisgIGJvb3QgY29kZSwgYmVjYXVzZSB0aGF0J3Mgd2hlcmUgdGhhdCBwYWdlIGlzIHN1cHBvc2VkIHRvIGJlIHJlc2VydmVkLgorCisKKyAgSW4gbXkgc2V0dXBfYXJjaCBwcm9jZWR1cmUsIEkgaGF2ZSB0aGUgZm9sbG93aW5nIGNvZGUgd2hpY2ggbG9va3MganVzdAorICBmaW5lOgorCisKKworICAgICAgIGJvb3RtYXBfc2l6ZSA9IGluaXRfYm9vdG1lbShzdGFydF9wZm4sIGVuZF9wZm4gLSBzdGFydF9wZm4pOworICAgICAgIGZyZWVfYm9vdG1lbShfX3BhKGxvd19waHlzbWVtKSArIGJvb3RtYXBfc2l6ZSwgaGlnaF9waHlzbWVtIC0gbG93X3BoeXNtZW0pOworCisKKworCisKKyAgVHdvIHN0YWNrIHBhZ2VzIGhhdmUgYWxyZWFkeSBiZWVuIGFsbG9jYXRlZCwgYW5kIGxvd19waHlzbWVtIHBvaW50cyB0bworICB0aGUgdGhpcmQgcGFnZSwgd2hpY2ggaXMgdGhlIGJlZ2lubmluZyBvZiBmcmVlIG1lbW9yeS4KKyAgVGhlIGluaXRfYm9vdG1lbSBjYWxsIGRlY2xhcmVzIHRoZSBlbnRpcmUgbWVtb3J5IHRvIHRoZSBib290IG1lbW9yeQorICBtYW5hZ2VyLCB3aGljaCBtYXJrcyBpdCBhbGwgcmVzZXJ2ZWQuICBUaGUgZnJlZV9ib290bWVtIGNhbGwgZnJlZXMgdXAKKyAgYWxsIG9mIGl0LCBleGNlcHQgZm9yIHRoZSBmaXJzdCB0d28gcGFnZXMuICBUaGlzIGxvb2tzIGNvcnJlY3QgdG8gbWUuCisKKworICBTbywgSSBkZWNpZGUgdG8gc2VlIGluaXRfYm9vdG1lbSBydW4gYW5kIG1ha2Ugc3VyZSB0aGF0IGl0IGlzIG1hcmtpbmcKKyAgdGhvc2UgZmlyc3QgdHdvIHBhZ2VzIGFzIHJlc2VydmVkLiAgSSBuZXZlciBnZXQgdGhhdCBmYXIuCisKKworICBTdGVwcGluZyBpbnRvIGluaXRfYm9vdG1lbSwgYW5kIGxvb2tpbmcgYXQgYm9vdG1lbV9tYXAgYmVmb3JlIGxvb2tpbmcKKyAgYXQgd2hhdCBpdCBjb250YWlucyBzaG93cyB0aGUgZm9sbG93aW5nOgorCisKKworICAgICAgIChnZGIpIHAgYm9vdG1lbV9tYXAKKyAgICAgICAkMyA9ICh2b2lkICopIDB4NTAwMDAwMDAKKworCisKKworCisgIEFoYSEgIFRoZSBsaWdodCBkYXducy4gIFRoYXQgZmlyc3QgcGFnZSBpcyBkb2luZyBkb3VibGUgZHV0eSBhcyBhCisgIHN0YWNrIGFuZCBhcyB0aGUgYm9vdCBtZW1vcnkgbWFwLiAgVGhlIGxhc3QgdGhpbmcgdGhhdCB0aGUgYm9vdCBtZW1vcnkKKyAgbWFuYWdlciBkb2VzIGlzIHRvIGZyZWUgdGhlIHBhZ2VzIHVzZWQgYnkgaXRzIG1lbW9yeSBtYXAsIHNvIHRoaXMgcGFnZQorICBpcyBnZXR0aW5nIGZyZWVkIGV2ZW4gaXRzIG1hcmtlZCBhcyByZXNlcnZlZC4KKworCisgIFRoZSBmaXggd2FzIHRvIGluaXRpYWxpemUgdGhlIGJvb3QgbWVtb3J5IG1hbmFnZXIgYmVmb3JlIGFsbG9jYXRpbmcKKyAgdGhvc2UgdHdvIHN0YWNrIHBhZ2VzLCBhbmQgdGhlbiBhbGxvY2F0ZSB0aGVtIHRocm91Z2ggdGhlIGJvb3QgbWVtb3J5CisgIG1hbmFnZXIuICBBZnRlciBkb2luZyB0aGlzLCBhbmQgZml4aW5nIGEgY291cGxlIG9mIHN1YnNlcXVlbnQgYnVnbGV0cywKKyAgdGhlIHN0YWNrIGNvcnJ1cHRpb24gcHJvYmxlbSBkaXNhcHBlYXJlZC4KKworCisKKworCisgIDEzLiAgV2hhdCB0byBkbyB3aGVuIFVNTCBkb2Vzbid0IHdvcmsKKworCisKKworICAxMy4xLiAgU3RyYW5nZSBjb21waWxhdGlvbiBlcnJvcnMgd2hlbiB5b3UgYnVpbGQgZnJvbSBzb3VyY2UKKworICBBcyBvZiB0ZXN0MTEsIGl0IGlzIG5lY2Vzc2FyeSB0byBoYXZlICJBUkNIPXVtIiBpbiB0aGUgZW52aXJvbm1lbnQgb3IKKyAgb24gdGhlIG1ha2UgY29tbWFuZCBsaW5lIGZvciBhbGwgc3RlcHMgaW4gYnVpbGRpbmcgVU1MLCBpbmNsdWRpbmcKKyAgY2xlYW4sIGRpc3RjbGVhbiwgb3IgbXJwcm9wZXIsIGNvbmZpZywgbWVudWNvbmZpZywgb3IgeGNvbmZpZywgZGVwLAorICBhbmQgbGludXguICBJZiB5b3UgZm9yZ2V0IGZvciBhbnkgb2YgdGhlbSwgdGhlIGkzODYgYnVpbGQgc2VlbXMgdG8KKyAgY29udGFtaW5hdGUgdGhlIFVNTCBidWlsZC4gIElmIHRoaXMgaGFwcGVucywgc3RhcnQgZnJvbSBzY3JhdGNoIHdpdGgKKworCisgICAgICAgaG9zdCUKKyAgICAgICBtYWtlIG1ycHJvcGVyIEFSQ0g9dW0KKworCisKKworICBhbmQgcmVwZWF0IHRoZSBidWlsZCBwcm9jZXNzIHdpdGggQVJDSD11bSBvbiBhbGwgdGhlIHN0ZXBzLgorCisKKyAgU2VlIGBgQ29tcGlsaW5nIHRoZSBrZXJuZWwgYW5kIG1vZHVsZXMnJyAgZm9yIG1vcmUgZGV0YWlscy4KKworCisgIEFub3RoZXIgY2F1c2Ugb2Ygc3RyYW5nZSBjb21waWxhdGlvbiBlcnJvcnMgaXMgYnVpbGRpbmcgVU1MIGluCisgIC91c3Ivc3JjL2xpbnV4LiAgSWYgeW91IGRvIHRoaXMsIHRoZSBmaXJzdCB0aGluZyB5b3UgbmVlZCB0byBkbyBpcworICBjbGVhbiB1cCB0aGUgbWVzcyB5b3UgbWFkZS4gIFRoZSAvdXNyL3NyYy9saW51eC9hc20gbGluayB3aWxsIG5vdworICBwb2ludCB0byAvdXNyL3NyYy9saW51eC9hc20tdW0uICBNYWtlIGl0IHBvaW50IGJhY2sgdG8KKyAgL3Vzci9zcmMvbGludXgvYXNtLWkzODYuICBUaGVuLCBtb3ZlIHlvdXIgVU1MIHBvb2wgc29tZXBsYWNlIGVsc2UgYW5kCisgIGJ1aWxkIGl0IHRoZXJlLiAgQWxzbyBzZWUgYmVsb3csIHdoZXJlIGEgbW9yZSBzcGVjaWZpYyBzZXQgb2Ygc3ltcHRvbXMKKyAgaXMgZGVzY3JpYmVkLgorCisKKworICAxMy4zLiAgQSB2YXJpZXR5IG9mIHBhbmljcyBhbmQgaGFuZ3Mgd2l0aCAvdG1wIG9uIGEgcmVpc2VyZnMgIGZpbGVzeXMtCisgIHRlbQorCisgIEkgc2F3IHRoaXMgb24gcmVpc2VyZnMgMy41LjIxIGFuZCBpdCBzZWVtcyB0byBiZSBmaXhlZCBpbiAzLjUuMjcuCisgIFBhbmljcyBwcmVjZWRlZCBieQorCisKKyAgICAgICBEZXRhY2hpbmcgcGlkIG5ubm4KKworCisKKyAgYXJlIGRpYWdub3N0aWMgb2YgdGhpcyBwcm9ibGVtLiAgVGhpcyBpcyBhIHJlaXNlcmZzIGJ1ZyB3aGljaCBjYXVzZXMgYQorICB0aHJlYWQgdG8gb2NjYXNpb25hbGx5IHJlYWQgc3RhbGUgZGF0YSBmcm9tIGEgbW1hcHBlZCBwYWdlIHNoYXJlZCB3aXRoCisgIGFub3RoZXIgdGhyZWFkLiAgVGhlIGZpeCBpcyB0byB1cGdyYWRlIHRoZSBmaWxlc3lzdGVtIG9yIHRvIGhhdmUgL3RtcAorICBiZSBhbiBleHQyIGZpbGVzeXN0ZW0uCisKKworCisgIDEzLjQuICBUaGUgY29tcGlsZSBmYWlscyB3aXRoIGVycm9ycyBhYm91dCBjb25mbGljdGluZyB0eXBlcyBmb3IKKyAgJ29wZW4nLCAnZHVwJywgYW5kICd3YWl0cGlkJworCisgIFRoaXMgaGFwcGVucyB3aGVuIHlvdSBidWlsZCBpbiAvdXNyL3NyYy9saW51eC4gIFRoZSBVTUwgYnVpbGQgbWFrZXMKKyAgdGhlIGluY2x1ZGUvYXNtIGxpbmsgcG9pbnQgdG8gaW5jbHVkZS9hc20tdW0uICAvdXNyL2luY2x1ZGUvYXNtIHBvaW50cworICB0byAvdXNyL3NyYy9saW51eC9pbmNsdWRlL2FzbSwgc28gd2hlbiB0aGF0IGxpbmsgZ2V0cyBtb3ZlZCwgZmlsZXMKKyAgd2hpY2ggbmVlZCB0byBpbmNsdWRlIHRoZSBhc20taTM4NiB2ZXJzaW9ucyBvZiBoZWFkZXJzIGdldCB0aGUKKyAgaW5jb21wYXRpYmxlIGFzbS11bSB2ZXJzaW9ucy4gIFRoZSBmaXggaXMgdG8gbW92ZSB0aGUgaW5jbHVkZS9hc20gbGluaworICBiYWNrIHRvIGluY2x1ZGUvYXNtLWkzODYgYW5kIHRvIGRvIFVNTCBidWlsZHMgc29tZXBsYWNlIGVsc2UuCisKKworCisgIDEzLjUuICBVTUwgZG9lc24ndCB3b3JrIHdoZW4gL3RtcCBpcyBhbiBORlMgZmlsZXN5c3RlbQorCisgIFRoaXMgc2VlbXMgdG8gYmUgYSBzaW1pbGFyIHNpdHVhdGlvbiB3aXRoIHRoZSBSZWlzZXJGUyBwcm9ibGVtIGFib3ZlLgorICBTb21lIHZlcnNpb25zIG9mIE5GUyBzZWVtcyBub3QgdG8gaGFuZGxlIG1tYXAgY29ycmVjdGx5LCB3aGljaCBVTUwKKyAgZGVwZW5kcyBvbi4gIFRoZSB3b3JrYXJvdW5kIGlzIGhhdmUgL3RtcCBiZSBhIG5vbi1ORlMgZGlyZWN0b3J5LgorCisKKyAgMTMuNi4gIFVNTCBoYW5ncyBvbiBib290IHdoZW4gY29tcGlsZWQgd2l0aCBncHJvZiBzdXBwb3J0CisKKyAgSWYgeW91IGJ1aWxkIFVNTCB3aXRoIGdwcm9mIHN1cHBvcnQgYW5kLCBlYXJseSBpbiB0aGUgYm9vdCwgaXQgZG9lcworICB0aGlzCisKKworICAgICAgIGtlcm5lbCBCVUcgYXQgcGFnZV9hbGxvYy5jOjEwMCEKKworCisKKworICB5b3UgaGF2ZSBhIGJ1Z2d5IGdjYy4gIFlvdSBjYW4gd29yayBhcm91bmQgdGhlIHByb2JsZW0gYnkgcmVtb3ZpbmcKKyAgVU1fRkFTVENBTEwgZnJvbSBDRkxBR1MgaW4gYXJjaC91bS9NYWtlZmlsZS1pMzg2LiAgVGhpcyB3aWxsIG9wZW4gdXAKKyAgYW5vdGhlciBidWcsIGJ1dCB0aGF0IG9uZSBpcyBmYWlybHkgaGFyZCB0byByZXByb2R1Y2UuCisKKworCisgIDEzLjcuICBzeXNsb2dkIGRpZXMgd2l0aCBhIFNJR1RFUk0gb24gc3RhcnR1cAorCisgIFRoZSBleGFjdCBib290IGVycm9yIGRlcGVuZHMgb24gdGhlIGRpc3RyaWJ1dGlvbiB0aGF0IHlvdSdyZSBib290aW5nLAorICBidXQgRGViaWFuIHByb2R1Y2VzIHRoaXM6CisKKworICAgICAgIC9ldGMvcmMyLmQvUzEwc3lza2xvZ2Q6IGxpbmUgNDk6ICAgIDkzIFRlcm1pbmF0ZWQKKyAgICAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1leGVjIC9zYmluL3N5c2xvZ2QgLS0gJFNZU0xPR0QKKworCisKKworICBUaGlzIGlzIGEgc3lzbG9nZCBidWcuICBUaGVyZSdzIGEgcmFjZSBiZXR3ZWVuIGEgcGFyZW50IHByb2Nlc3MKKyAgaW5zdGFsbGluZyBhIHNpZ25hbCBoYW5kbGVyIGFuZCBpdHMgY2hpbGQgc2VuZGluZyB0aGUgc2lnbmFsLiAgU2VlCisgIHRoaXMgdW1sLWRldmVsIHBvc3QgPGh0dHA6Ly93d3cuZ2VvY3Jhd2xlci5jb20vbGlzdHMvMy9Tb3VyY2UtCisgIEZvcmdlLzcwOS8wLzY2MTI4MDE+ICBmb3IgdGhlIGRldGFpbHMuCisKKworCisgIDEzLjguICBUVU4vVEFQIG5ldHdvcmtpbmcgZG9lc24ndCB3b3JrIG9uIGEgMi40IGhvc3QKKworICBUaGVyZSBhcmUgYSBjb3VwbGUgb2YgcHJvYmxlbXMgd2hpY2ggd2VyZQorICA8aHR0cDovL3d3dy5nZW9jcmF3bGVyLmNvbS9saXN0cy8zL1NvdXJjZUZvcmdlLzU5Ny8wLz4gbmFtZT0icG9pbnRlZAorICBvdXQiPiAgYnkgVGltIFJvYmluc29uIDx0aW1ybyBhdCB0cmtyIGRvdCBuZXQ+CisKKyAgbyAgSXQgZG9lc24ndCB3b3JrIG9uIGhvc3RzIHJ1bm5pbmcgMi40LjcgKG9yIHRoZXJlYWJvdXRzKSBvciBlYXJsaWVyLgorICAgICBUaGUgZml4IGlzIHRvIHVwZ3JhZGUgdG8gc29tZXRoaW5nIG1vcmUgcmVjZW50IGFuZCB0aGVuIHJlYWQgdGhlCisgICAgIG5leHQgaXRlbS4KKworICBvICBJZiB5b3Ugc2VlCisKKworICAgICAgIEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUKKworCisKKyAgd2hlbiB5b3UgYnJpbmcgdXAgdGhlIGRldmljZSBpbnNpZGUgVU1MLCB5b3UgaGF2ZSBhIGhlYWRlciBtaXNtYXRjaAorICBiZXR3ZWVuIHRoZSBvcmlnaW5hbCBrZXJuZWwgYW5kIHRoZSB1cGdyYWRlZCBvbmUuICBNYWtlIC91c3Ivc3JjL2xpbnV4CisgIHBvaW50IGF0IHRoZSBuZXcgaGVhZGVycy4gIFRoaXMgd2lsbCBvbmx5IGJlIGEgcHJvYmxlbSBpZiB5b3UgYnVpbGQKKyAgdW1sX25ldCB5b3Vyc2VsZi4KKworCisKKyAgMTMuOS4gIFlvdSBjYW4gbmV0d29yayB0byB0aGUgaG9zdCBidXQgbm90IHRvIG90aGVyIG1hY2hpbmVzIG9uIHRoZQorICBuZXQKKworICBJZiB5b3UgY2FuIGNvbm5lY3QgdG8gdGhlIGhvc3QsIGFuZCB0aGUgaG9zdCBjYW4gY29ubmVjdCB0byBVTUwsIGJ1dAorICB5b3UgY2Fubm90IGNvbm5lY3QgdG8gYW55IG90aGVyIG1hY2hpbmVzLCB0aGVuIHlvdSBtYXkgbmVlZCB0byBlbmFibGUKKyAgSVAgTWFzcXVlcmFkaW5nIG9uIHRoZSBob3N0LiAgVXN1YWxseSB0aGlzIGlzIG9ubHkgZXhwZXJpZW5jZWQgd2hlbgorICB1c2luZyBwcml2YXRlIElQIGFkZHJlc3NlcyAoMTkyLjE2OC54Lnggb3IgMTAueC54LngpIGZvciBob3N0L1VNTAorICBuZXR3b3JraW5nLCByYXRoZXIgdGhhbiB0aGUgcHVibGljIGFkZHJlc3Mgc3BhY2UgdGhhdCB5b3VyIGhvc3QgaXMKKyAgY29ubmVjdGVkIHRvLiAgVU1MIGRvZXMgbm90IGVuYWJsZSBJUCBNYXNxdWVyYWRpbmcsIHNvIHlvdSB3aWxsIG5lZWQKKyAgdG8gY3JlYXRlIGEgc3RhdGljIHJ1bGUgdG8gZW5hYmxlIGl0OgorCisKKyAgICAgICBob3N0JQorICAgICAgIGlwdGFibGVzIC10IG5hdCAtQSBQT1NUUk9VVElORyAtbyBldGgwIC1qIE1BU1FVRVJBREUKKworCisKKworICBSZXBsYWNlIGV0aDAgd2l0aCB0aGUgaW50ZXJmYWNlIHRoYXQgeW91IHVzZSB0byB0YWxrIHRvIHRoZSByZXN0IG9mCisgIHRoZSB3b3JsZC4KKworCisgIERvY3VtZW50YXRpb24gb24gSVAgTWFzcXVlcmFkaW5nLCBhbmQgU05BVCwgY2FuIGJlIGZvdW5kIGF0CisgIHd3dy5uZXRmaWx0ZXIub3JnICA8aHR0cDovL3d3dy5uZXRmaWx0ZXIub3JnPiAuCisKKworICBJZiB5b3UgY2FuIHJlYWNoIHRoZSBsb2NhbCBuZXQsIGJ1dCBub3QgdGhlIG91dHNpZGUgSW50ZXJuZXQsIHRoZW4KKyAgdGhhdCBpcyB1c3VhbGx5IGEgcm91dGluZyBwcm9ibGVtLiAgVGhlIFVNTCBuZWVkcyBhIGRlZmF1bHQgcm91dGU6CisKKworICAgICAgIFVNTCMKKyAgICAgICByb3V0ZSBhZGQgZGVmYXVsdCBndyBnYXRld2F5IElQCisKKworCisKKyAgVGhlIGdhdGV3YXkgSVAgY2FuIGJlIGFueSBtYWNoaW5lIG9uIHRoZSBsb2NhbCBuZXQgdGhhdCBrbm93cyBob3cgdG8KKyAgcmVhY2ggdGhlIG91dHNpZGUgd29ybGQuICBVc3VhbGx5LCB0aGlzIGlzIHRoZSBob3N0IG9yIHRoZSBsb2NhbCBuZXQtCisgIHdvcmsncyBnYXRld2F5LgorCisKKyAgT2NjYXNpb25hbGx5LCB3ZSBoZWFyIGZyb20gc29tZW9uZSB3aG8gY2FuIHJlYWNoIHNvbWUgbWFjaGluZXMsIGJ1dAorICBub3Qgb3RoZXJzIG9uIHRoZSBzYW1lIG5ldCwgb3Igd2hvIGNhbiByZWFjaCBzb21lIHBvcnRzIG9uIG90aGVyCisgIG1hY2hpbmVzLCBidXQgbm90IG90aGVycy4gIFRoZXNlIGFyZSB1c3VhbGx5IGNhdXNlZCBieSBzdHJhbmdlCisgIGZpcmV3YWxsaW5nIHNvbWV3aGVyZSBiZXR3ZWVuIHRoZSBVTUwgYW5kIHRoZSBvdGhlciBib3guICBZb3UgdHJhY2sKKyAgdGhpcyBkb3duIGJ5IHJ1bm5pbmcgdGNwZHVtcCBvbiBldmVyeSBpbnRlcmZhY2UgdGhlIHBhY2tldHMgdHJhdmVsCisgIG92ZXIgYW5kIHNlZSB3aGVyZSB0aGV5IGRpc2FwcGVhci4gIFdoZW4geW91IGZpbmQgYSBtYWNoaW5lIHRoYXQgdGFrZXMKKyAgdGhlIHBhY2tldHMgaW4sIGJ1dCBkb2VzIG5vdCBzZW5kIHRoZW0gb253YXJkLCB0aGF0J3MgdGhlIGN1bHByaXQuCisKKworCisgIDEzLjEwLiAgSSBoYXZlIG5vIHJvb3QgYW5kIEkgd2FudCB0byBzY3JlYW0KKworICBUaGFua3MgdG8gQmlyZ2l0IFdhaGxpY2ggZm9yIHRlbGxpbmcgbWUgYWJvdXQgdGhpcyBzdHJhbmdlIG9uZS4gIEl0CisgIHR1cm5zIG91dCB0aGF0IHRoZXJlJ3MgYSBsaW1pdCBvZiBzaXggZW52aXJvbm1lbnQgdmFyaWFibGVzIG9uIHRoZQorICBrZXJuZWwgY29tbWFuZCBsaW5lLiAgV2hlbiB0aGF0IGxpbWl0IGlzIHJlYWNoZWQgb3IgZXhjZWVkZWQsIGFyZ3VtZW50CisgIHByb2Nlc3Npbmcgc3RvcHMsIHdoaWNoIG1lYW5zIHRoYXQgdGhlICdyb290PScgYXJndW1lbnQgdGhhdCBVTUwKKyAgdXN1YWxseSBhZGRzIGlzIG5vdCBzZWVuLiAgU28sIHRoZSBmaWxlc3lzdGVtIGhhcyBubyBpZGVhIHdoYXQgdGhlCisgIHJvb3QgZGV2aWNlIGlzLCBzbyBpdCBwYW5pY3MuCisKKworICBUaGUgZml4IGlzIHRvIHB1dCBsZXNzIHN0dWZmIG9uIHRoZSBjb21tYW5kIGxpbmUuICBHbG9tbWluZyBhbGwgeW91cgorICBzZXR1cCB2YXJpYWJsZXMgaW50byBvbmUgaXMgcHJvYmFibHkgdGhlIGJlc3Qgd2F5IHRvIGdvLgorCisKKworICAxMy4xMS4gIFVNTCBidWlsZCBjb25mbGljdCBiZXR3ZWVuIHB0cmFjZS5oIGFuZCB1Y29udGV4dC5oCisKKyAgT24gc29tZSBvbGRlciBzeXN0ZW1zLCAvdXNyL2luY2x1ZGUvYXNtL3B0cmFjZS5oIGFuZAorICAvdXNyL2luY2x1ZGUvc3lzL3Vjb250ZXh0LmggZGVmaW5lIHRoZSBzYW1lIG5hbWVzLiAgU28sIHdoZW4gdGhleSdyZQorICBpbmNsdWRlZCB0b2dldGhlciwgdGhlIGRlZmluZXMgZnJvbSBvbmUgY29tcGxldGVseSBtZXNzIHVwIHRoZSBwYXJzaW5nCisgIG9mIHRoZSBvdGhlciwgcHJvZHVjaW5nIGVycm9ycyBsaWtlOgorICAgICAgIC91c3IvaW5jbHVkZS9zeXMvdWNvbnRleHQuaDo0NzogcGFyc2UgZXJyb3IgYmVmb3JlCisgICAgICAgYDEwJworCisKKworCisgIHBsdXMgYSBwaWxlIG9mIHdhcm5pbmdzLgorCisKKyAgVGhpcyBpcyBhIGxpYmMgYm90Y2gsIHdoaWNoIGhhcyBzaW5jZSBiZWVuIGZpeGVkLCBhbmQgSSBkb24ndCBzZWUgYW55CisgIHdheSBhcm91bmQgaXQgYmVzaWRlcyB1cGdyYWRpbmcuCisKKworCisgIDEzLjEyLiAgVGhlIFVNTCBCb2dvTWlwcyBpcyBleGFjdGx5IGhhbGYgdGhlIGhvc3QncyBCb2dvTWlwcworCisgIE9uIGkzODYga2VybmVscywgdGhlcmUgYXJlIHR3byB3YXlzIG9mIHJ1bm5pbmcgdGhlIGxvb3AgdGhhdCBpcyB1c2VkCisgIHRvIGNhbGN1bGF0ZSB0aGUgQm9nb01pcHMgcmF0aW5nLCB1c2luZyB0aGUgVFNDIGlmIGl0J3MgdGhlcmUgb3IgdXNpbmcKKyAgYSBvbmUtaW5zdHJ1Y3Rpb24gbG9vcC4gIFRoZSBUU0MgcHJvZHVjZXMgdHdpY2UgdGhlIEJvZ29NaXBzIGFzIHRoZQorICBsb29wLiAgVU1MIHVzZXMgdGhlIGxvb3AsIHNpbmNlIGl0IGhhcyBub3RoaW5nIHJlc2VtYmxpbmcgYSBUU0MsIGFuZAorICB3aWxsIGdldCBhbG1vc3QgZXhhY3RseSB0aGUgc2FtZSBCb2dvTWlwcyBhcyBhIGhvc3QgdXNpbmcgdGhlIGxvb3AuCisgIEhvd2V2ZXIsIG9uIGEgaG9zdCB3aXRoIGEgVFNDLCBpdHMgQm9nb01pcHMgd2lsbCBiZSBkb3VibGUgdGhlIGxvb3AKKyAgQm9nb01pcHMsIGFuZCB0aGVyZWZvcmUgZG91YmxlIHRoZSBVTUwgQm9nb01pcHMuCisKKworCisgIDEzLjEzLiAgV2hlbiB5b3UgcnVuIFVNTCwgaXQgaW1tZWRpYXRlbHkgc2VnZmF1bHRzCisKKyAgSWYgdGhlIGhvc3QgaXMgY29uZmlndXJlZCB3aXRoIHRoZSAyRy8yRyBhZGRyZXNzIHNwYWNlIHNwbGl0LCB0aGF0J3MKKyAgd2h5LiAgU2VlIGBgVU1MIG9uIDJHLzJHIGhvc3RzJycgIGZvciB0aGUgZGV0YWlscyBvbiBnZXR0aW5nIFVNTCB0bworICBydW4gb24geW91ciBob3N0LgorCisKKworICAxMy4xNC4gIHh0ZXJtcyBhcHBlYXIsIHRoZW4gaW1tZWRpYXRlbHkgZGlzYXBwZWFyCisKKyAgSWYgeW91J3JlIHJ1bm5pbmcgYW4gdXAgdG8gZGF0ZSBrZXJuZWwgd2l0aCBhbiBvbGQgcmVsZWFzZSBvZgorICB1bWxfdXRpbGl0aWVzLCB0aGUgcG9ydC1oZWxwZXIgcHJvZ3JhbSB3aWxsIG5vdCB3b3JrIHByb3Blcmx5LCBzbworICB4dGVybXMgd2lsbCBleGl0IHN0cmFpZ2h0IGFmdGVyIHRoZXkgYXBwZWFyLiBUaGUgc29sdXRpb24gaXMgdG8KKyAgdXBncmFkZSB0byB0aGUgbGF0ZXN0IHJlbGVhc2Ugb2YgdW1sX3V0aWxpdGllcy4gIFVzdWFsbHkgdGhpcyBwcm9ibGVtCisgIG9jY3VycyB3aGVuIHlvdSBoYXZlIGluc3RhbGxlZCBhIHBhY2thZ2VkIHJlbGVhc2Ugb2YgVU1MIHRoZW4gY29tcGlsZWQKKyAgeW91ciBvd24gZGV2ZWxvcG1lbnQga2VybmVsIHdpdGhvdXQgdXBncmFkaW5nIHRoZSB1bWxfdXRpbGl0aWVzIGZyb20KKyAgdGhlIHNvdXJjZSBkaXN0cmlidXRpb24uCisKKworCisgIDEzLjE1LiAgQW55IG90aGVyIHBhbmljLCBoYW5nLCBvciBzdHJhbmdlIGJlaGF2aW9yCisKKyAgSWYgeW91J3JlIHNlZWluZyB0cnVseSBzdHJhbmdlIGJlaGF2aW9yLCBzdWNoIGFzIGhhbmdzIG9yIHBhbmljcyB0aGF0CisgIGhhcHBlbiBpbiByYW5kb20gcGxhY2VzLCBvciB5b3UgdHJ5IHJ1bm5pbmcgdGhlIGRlYnVnZ2VyIHRvIHNlZSB3aGF0J3MKKyAgaGFwcGVuaW5nIGFuZCBpdCBhY3RzIHN0cmFuZ2VseSwgdGhlbiBpdCBjb3VsZCBiZSBhIHByb2JsZW0gaW4gdGhlCisgIGhvc3Qga2VybmVsLiAgSWYgeW91J3JlIG5vdCBydW5uaW5nIGEgc3RvY2sgTGludXMgb3IgLWFjIGtlcm5lbCwgdGhlbgorICB0cnkgdGhhdC4gIEFuIGVhcmx5IHZlcnNpb24gb2YgdGhlIHByZWVtcHRpb24gcGF0Y2ggYW5kIGEgMi40LjEwIFN1U0UKKyAga2VybmVsIGhhdmUgY2F1c2VkIHZlcnkgc3RyYW5nZSBwcm9ibGVtcyBpbiBVTUwuCisKKworICBPdGhlcndpc2UsIGxldCBtZSBrbm93IGFib3V0IGl0LiAgU2VuZCBhIG1lc3NhZ2UgdG8gb25lIG9mIHRoZSBVTUwKKyAgbWFpbGluZyBsaXN0cyAtIGVpdGhlciB0aGUgZGV2ZWxvcGVyIGxpc3QgLSB1c2VyLW1vZGUtbGludXgtZGV2ZWwgYXQKKyAgbGlzdHMgZG90IHNvdXJjZWZvcmdlIGRvdCBuZXQgKHN1YnNjcmlwdGlvbiBpbmZvKSBvciB0aGUgdXNlciBsaXN0IC0KKyAgdXNlci1tb2RlLWxpbnV4LXVzZXIgYXQgbGlzdHMgZG90IHNvdXJjZWZvcmdlIGRvIG5ldCAoc3Vic2NyaXB0aW9uCisgIGluZm8pLCB3aGljaGV2ZXIgeW91IHByZWZlci4gIERvbid0IGFzc3VtZSB0aGF0IGV2ZXJ5b25lIGtub3dzIGFib3V0CisgIGl0IGFuZCB0aGF0IGEgZml4IGlzIGltbWluZW50LgorCisKKyAgSWYgeW91IHdhbnQgdG8gYmUgc3VwZXItaGVscGZ1bCwgcmVhZCBgYERpYWdub3NpbmcgUHJvYmxlbXMnJyBhbmQKKyAgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgY29udGFpbmVkIHRoZXJlaW4uCisgIDE0LiAgRGlhZ25vc2luZyBQcm9ibGVtcworCisKKyAgSWYgeW91IGdldCBVTUwgdG8gY3Jhc2gsIGhhbmcsIG9yIG90aGVyd2lzZSBtaXNiZWhhdmUsIHlvdSBzaG91bGQKKyAgcmVwb3J0IHRoaXMgb24gb25lIG9mIHRoZSBwcm9qZWN0IG1haWxpbmcgbGlzdHMsIGVpdGhlciB0aGUgZGV2ZWxvcGVyCisgIGxpc3QgLSB1c2VyLW1vZGUtbGludXgtZGV2ZWwgYXQgbGlzdHMgZG90IHNvdXJjZWZvcmdlIGRvdCBuZXQKKyAgKHN1YnNjcmlwdGlvbiBpbmZvKSBvciB0aGUgdXNlciBsaXN0IC0gdXNlci1tb2RlLWxpbnV4LXVzZXIgYXQgbGlzdHMKKyAgZG90IHNvdXJjZWZvcmdlIGRvdCBuZXQgKHN1YnNjcmlwdGlvbiBpbmZvKS4gIFdoZW4geW91IGRvLCBpdCBpcworICBsaWtlbHkgdGhhdCBJIHdpbGwgd2FudCBtb3JlIGluZm9ybWF0aW9uLiAgU28sIGl0IHdvdWxkIGJlIGhlbHBmdWwgdG8KKyAgcmVhZCB0aGUgc3R1ZmYgYmVsb3csIGRvIHdoYXRldmVyIGlzIGFwcGxpY2FibGUgaW4geW91ciBjYXNlLCBhbmQKKyAgcmVwb3J0IHRoZSByZXN1bHRzIHRvIHRoZSBsaXN0LgorCisKKyAgRm9yIGFueSBkaWFnbm9zaXMsIHlvdSdyZSBnb2luZyB0byBuZWVkIHRvIGJ1aWxkIGEgZGVidWdnaW5nIGtlcm5lbC4KKyAgVGhlIGJpbmFyaWVzIGZyb20gdGhpcyBzaXRlIGFyZW4ndCBkZWJ1Z2dhYmxlLiAgSWYgeW91IGhhdmVuJ3QgZG9uZQorICB0aGlzIGJlZm9yZSwgcmVhZCBhYm91dCBgYENvbXBpbGluZyB0aGUga2VybmVsIGFuZCBtb2R1bGVzJycgIGFuZAorICBgYEtlcm5lbCBkZWJ1Z2dpbmcnJyAgVU1MIGZpcnN0LgorCisKKyAgMTQuMS4gIENhc2UgMSA6IE5vcm1hbCBrZXJuZWwgcGFuaWNzCisKKyAgVGhlIG1vc3QgY29tbW9uIGNhc2UgaXMgZm9yIGEgbm9ybWFsIHRocmVhZCB0byBwYW5pYy4gIFRvIGRlYnVnIHRoaXMsCisgIHlvdSB3aWxsIG5lZWQgdG8gcnVuIGl0IHVuZGVyIHRoZSBkZWJ1Z2dlciAoYWRkICdkZWJ1ZycgdG8gdGhlIGNvbW1hbmQKKyAgbGluZSkuICBBbiB4dGVybSB3aWxsIHN0YXJ0IHVwIHdpdGggZ2RiIHJ1bm5pbmcgaW5zaWRlIGl0LiAgQ29udGludWUKKyAgaXQgd2hlbiBpdCBzdG9wcyBpbiBzdGFydF9rZXJuZWwgYW5kIG1ha2UgaXQgY3Jhc2guICBOb3cgXkMgZ2RiIGFuZAorCisKKyAgSWYgdGhlIHBhbmljIHdhcyBhICJLZXJuZWwgbW9kZSBmYXVsdCIsIHRoZW4gdGhlcmUgd2lsbCBiZSBhIHNlZ3YKKyAgZnJhbWUgb24gdGhlIHN0YWNrIGFuZCBJJ20gZ29pbmcgdG8gd2FudCBzb21lIG1vcmUgaW5mb3JtYXRpb24uICBUaGUKKyAgc3RhY2sgbWlnaHQgbG9vayBzb21ldGhpbmcgbGlrZSB0aGlzOgorCisKKyAgICAgICAoVU1MIGdkYikgIGJhY2t0cmFjZQorICAgICAgICMwICAweDEwMDliZjc2IGluIF9fc2lncHJvY21hc2sgKGhvdz0xLCBzZXQ9MHg1ZjM0Nzk0MCwgb3NldD0weDApCisgICAgICAgICAgIGF0IC4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NpZ3Byb2NtYXNrLmM6NDkKKyAgICAgICAjMSAgMHgxMDA5MTQxMSBpbiBjaGFuZ2Vfc2lnIChzaWduYWw9MTAsIG9uPTEpIGF0IHByb2Nlc3MuYzoyMTgKKyAgICAgICAjMiAgMHgxMDA5NDc4NSBpbiB0aW1lcl9oYW5kbGVyIChzaWc9MjYpIGF0IHRpbWVfa2Vybi5jOjMyCisgICAgICAgIzMgIDB4MTAwOWJmMzggaW4gX19yZXN0b3JlICgpCisgICAgICAgICAgIGF0IC4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvc2lnYWN0aW9uLmM6MTI1CisgICAgICAgIzQgIDB4MTAwOTUzNGMgaW4gc2VndiAoYWRkcmVzcz04LCBpcD0yNjg4NDkxNTgsIGlzX3dyaXRlPTIsIGlzX3VzZXI9MCkKKyAgICAgICAgICAgYXQgdHJhcF9rZXJuLmM6NjYKKyAgICAgICAjNSAgMHgxMDA5NWMwNCBpbiBzZWd2X2hhbmRsZXIgKHNpZz0xMSkgYXQgdHJhcF91c2VyLmM6Mjg1CisgICAgICAgIzYgIDB4MTAwOWJmMzggaW4gX19yZXN0b3JlICgpCisKKworCisKKyAgSSdtIGdvaW5nIHRvIHdhbnQgdG8gc2VlIHRoZSBzeW1ib2wgYW5kIGxpbmUgaW5mb3JtYXRpb24gZm9yIHRoZSB2YWx1ZQorICBvZiBpcCBpbiB0aGUgc2VndiBmcmFtZS4gIEluIHRoaXMgY2FzZSwgeW91IHdvdWxkIGRvIHRoZSBmb2xsb3dpbmc6CisKKworICAgICAgIChVTUwgZ2RiKSAgaSBzeW0gMjY4ODQ5MTU4CisKKworCisKKyAgYW5kCisKKworICAgICAgIChVTUwgZ2RiKSAgaSBsaW5lICoyNjg4NDkxNTgKKworCisKKworICBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHRoZSBfX3Jlc3RvcmUgZnJhbWUgcmlnaHQgYWJvdmUgdGhlIHNlZ3ZfaGFuLQorICBkbGVyIGZyYW1lIGlzIGhpZGluZyB0aGUgZnJhbWUgdGhhdCBhY3R1YWxseSBzZWdmYXVsdGVkLiAgU28sIEkgaGF2ZQorICB0byBnZXQgdGhhdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBmYXVsdGluZyBpcC4KKworCisgIDE0LjIuICBDYXNlIDIgOiBUcmFjaW5nIHRocmVhZCBwYW5pY3MKKworICBUaGUgbGVzcyBjb21tb24gYW5kIG1vcmUgcGFpbmZ1bCBjYXNlIGlzIHdoZW4gdGhlIHRyYWNpbmcgdGhyZWFkCisgIHBhbmljcy4gIEluIHRoaXMgY2FzZSwgdGhlIGtlcm5lbCBkZWJ1Z2dlciB3aWxsIGJlIHVzZWxlc3MgYmVjYXVzZSBpdAorICBuZWVkcyBhIGhlYWx0aHkgdHJhY2luZyB0aHJlYWQgaW4gb3JkZXIgdG8gd29yay4gIFRoZSBmaXJzdCB0aGluZyB0bworICBkbyBpcyBnZXQgYSBiYWNrdHJhY2UgZnJvbSB0aGUgdHJhY2luZyB0aHJlYWQuICBUaGlzIGlzIGRvbmUgYnkKKyAgZmlndXJpbmcgb3V0IHdoYXQgaXRzIHBpZCBpcywgZmlyaW5nIHVwIGdkYiwgYW5kIGF0dGFjaGluZyBpdCB0byB0aGF0CisgIHBpZC4gIFlvdSBjYW4gZmlndXJlIG91dCB0aGUgdHJhY2luZyB0aHJlYWQgcGlkIGJ5IGxvb2tpbmcgYXQgdGhlCisgIGZpcnN0IGxpbmUgb2YgdGhlIGNvbnNvbGUgb3V0cHV0LCB3aGljaCB3aWxsIGxvb2sgbGlrZSB0aGlzOgorCisKKyAgICAgICB0cmFjaW5nIHRocmVhZCBwaWQgPSAxNTg1MQorCisKKworCisgIG9yIGJ5IHJ1bm5pbmcgcHMgb24gdGhlIGhvc3QgYW5kIGZpbmRpbmcgdGhlIGxpbmUgdGhhdCBsb29rcyBsaWtlCisgIHRoaXM6CisKKworICAgICAgIGpkaWtlIDE1ODUxIDQuNSAwLjQgMTMyNTY4IDExMDQgcHRzLzAgUyAyMTozNCAwOjA1IC4vbGludXggWyh0cmFjaW5nIHRocmVhZCldCisKKworCisKKyAgSWYgdGhlIHBhbmljIHdhcyAnc2VnZmF1bHQgaW4gc2lnbmFscycsIHRoZW4gZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMKKyAgYWJvdmUgZm9yIGNvbGxlY3RpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxvY2F0aW9uIG9mIHRoZSBzZWcgZmF1bHQuCisKKworICBJZiB0aGUgdHJhY2luZyB0aHJlYWQgZmxha2VkIG91dCBhbGwgYnkgaXRzZWxmLCB0aGVuIHNlbmQgdGhhdAorICBiYWNrdHJhY2UgaW4gYW5kIHdhaXQgZm9yIG91ciBjcmFjayBkZWJ1Z2dpbmcgdGVhbSB0byBmaXggdGhlIHByb2JsZW0uCisKKworICAxNC4zLiAgQ2FzZSAzIDogVHJhY2luZyB0aHJlYWQgcGFuaWNzIGNhdXNlZCBieSBvdGhlciB0aHJlYWRzCisKKyAgSG93ZXZlciwgdGhlcmUgYXJlIGNhc2VzIHdoZXJlIHRoZSBtaXNiZWhhdmlvciBvZiBhbm90aGVyIHRocmVhZAorICBjYXVzZWQgdGhlIHByb2JsZW0uICBUaGUgbW9zdCBjb21tb24gcGFuaWMgb2YgdGhpcyB0eXBlIGlzOgorCisKKyAgICAgICB3YWl0X2Zvcl9zdG9wIGZhaWxlZCB0byB3YWl0IGZvciAgPHBpZD4gIHRvIHN0b3Agd2l0aCAgPHNpZ25hbCBudW1iZXI+CisKKworCisKKyAgSW4gdGhpcyBjYXNlLCB5b3UnbGwgbmVlZCB0byBnZXQgYSBiYWNrdHJhY2UgZnJvbSB0aGUgcHJvY2VzcyBtZW4tCisgIHRpb25lZCBpbiB0aGUgcGFuaWMsIHdoaWNoIGlzIGNvbXBsaWNhdGVkIGJ5IHRoZSBmYWN0IHRoYXQgdGhlIGtlcm5lbAorICBkZWJ1Z2dlciBpcyBkZWZ1bmN0IGFuZCB3aXRob3V0IHNvbWUgZmFuY3kgZm9vdHdvcmssIGFub3RoZXIgZ2RiIGNhbid0CisgIGF0dGFjaCB0byBpdC4gIFNvLCB0aGlzIGlzIGhvdyB0aGUgZmFuY3kgZm9vdHdvcmsgZ29lczoKKworICBJbiBhIHNoZWxsOgorCisKKyAgICAgICBob3N0JSBraWxsIC1TVE9QIHBpZAorCisKKworCisgIFJ1biBnZGIgb24gdGhlIHRyYWNpbmcgdGhyZWFkIGFzIGRlc2NyaWJlZCBpbiBjYXNlIDIgYW5kIGRvOgorCisKKyAgICAgICAoaG9zdCBnZGIpICBjYWxsIGRldGFjaChwaWQpCisKKworICBJZiB5b3UgZ2V0IGEgc2VnZmF1bHQsIGRvIGl0IGFnYWluLiAgSXQgYWx3YXlzIHdvcmtzIHRoZSBzZWNvbmQgdGltZS4KKworICBEZXRhY2ggZnJvbSB0aGUgdHJhY2luZyB0aHJlYWQgYW5kIGF0dGFjaCB0byB0aGF0IG90aGVyIHRocmVhZDoKKworCisgICAgICAgKGhvc3QgZ2RiKSAgZGV0YWNoCisKKworCisKKworCisgICAgICAgKGhvc3QgZ2RiKSAgYXR0YWNoIHBpZAorCisKKworCisgIElmIGdkYiBoYW5ncyB3aGVuIGF0dGFjaGluZyB0byB0aGF0IHByb2Nlc3MsIGdvIGJhY2sgdG8gYSBzaGVsbCBhbmQKKyAgZG86CisKKworICAgICAgIGhvc3QlCisgICAgICAga2lsbCAtQ09OVCBwaWQKKworCisKKworICBBbmQgdGhlbiBnZXQgdGhlIGJhY2t0cmFjZToKKworCisgICAgICAgKGhvc3QgZ2RiKSAgYmFja3RyYWNlCisKKworCisKKworICAxNC40LiAgQ2FzZSA0IDogSGFuZ3MKKworICBIYW5ncyBzZWVtIHRvIGJlIGZhaXJseSByYXJlLCBidXQgdGhleSBzb21ldGltZXMgaGFwcGVuLiAgV2hlbiBhIGhhbmcKKyAgaGFwcGVucywgd2UgbmVlZCBhIGJhY2t0cmFjZSBmcm9tIHRoZSBvZmZlbmRpbmcgcHJvY2Vzcy4gIFJ1biB0aGUKKyAga2VybmVsIGRlYnVnZ2VyIGFzIGRlc2NyaWJlZCBpbiBjYXNlIDEgYW5kIGdldCBhIGJhY2t0cmFjZS4gIElmIHRoZQorICBjdXJyZW50IHByb2Nlc3MgaXMgbm90IHRoZSBpZGxlIHRocmVhZCwgdGhlbiBzZW5kIGluIHRoZSBiYWNrdHJhY2UuCisgIFlvdSBjYW4gdGVsbCB0aGF0IGl0J3MgdGhlIGlkbGUgdGhyZWFkIGlmIHRoZSBzdGFjayBsb29rcyBsaWtlIHRoaXM6CisKKworICAgICAgICMwICAweDEwMGIxNDAxIGluIF9fbGliY19uYW5vc2xlZXAgKCkKKyAgICAgICAjMSAgMHgxMDBhMjg4NSBpbiBpZGxlX3NsZWVwIChzZWNzPTEwKSBhdCB0aW1lLmM6MTIyCisgICAgICAgIzIgIDB4MTAwYTU0NmYgaW4gZG9faWRsZSAoKSBhdCBwcm9jZXNzX2tlcm4uYzo0NDUKKyAgICAgICAjMyAgMHgxMDBhNTUwOCBpbiBjcHVfaWRsZSAoKSBhdCBwcm9jZXNzX2tlcm4uYzo0NzEKKyAgICAgICAjNCAgMHgxMDBlYzE4ZiBpbiBzdGFydF9rZXJuZWwgKCkgYXQgaW5pdC9tYWluLmM6NTkyCisgICAgICAgIzUgIDB4MTAwYTNlMTAgaW4gc3RhcnRfa2VybmVsX3Byb2MgKHVudXNlZD0weDApIGF0IHVtX2FyY2guYzo3MQorICAgICAgICM2ICAweDEwMGEzODNmIGluIHNpZ25hbF90cmFtcCAoYXJnPTB4MTAwYTNkZDgpIGF0IHRyYXBfdXNlci5jOjUwCisKKworCisKKyAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgdGhlbiBzb21lIG90aGVyIHByb2Nlc3MgaXMgYXQgZmF1bHQsIGFuZCB3ZW50IHRvCisgIHNsZWVwIHdoZW4gaXQgc2hvdWxkbid0IGhhdmUuICBSdW4gcHMgb24gdGhlIGhvc3QgYW5kIGZpZ3VyZSBvdXQgd2hpY2gKKyAgcHJvY2VzcyBzaG91bGQgbm90IGhhdmUgZ29uZSB0byBzbGVlcCBhbmQgc3RheWVkIGFzbGVlcC4gIFRoZW4gYXR0YWNoCisgIHRvIGl0IHdpdGggZ2RiIGFuZCBnZXQgYSBiYWNrdHJhY2UgYXMgZGVzY3JpYmVkIGluIGNhc2UgMy4KKworCisKKworCisKKyAgMTUuICBUaGFua3MKKworCisgIEEgbnVtYmVyIG9mIHBlb3BsZSBoYXZlIGhlbHBlZCB0aGlzIHByb2plY3QgaW4gdmFyaW91cyB3YXlzLCBhbmQgdGhpcworICBwYWdlIGdpdmVzIHJlY29nbml0aW9uIHdoZXJlIHJlY29nbml0aW9uIGlzIGR1ZS4KKworCisgIElmIHlvdSdyZSBsaXN0ZWQgaGVyZSBhbmQgeW91IHdvdWxkIHByZWZlciBhIHJlYWwgbGluayBvbiB5b3VyIG5hbWUsCisgIG9yIG5vIGxpbmsgYXQgYWxsLCBpbnN0ZWFkIG9mIHRoZSBkZXNwYW1tZWQgZW1haWwgYWRkcmVzcyBwc2V1ZG8tbGluaywKKyAgbGV0IG1lIGtub3cuCisKKworICBJZiB5b3UncmUgbm90IGxpc3RlZCBoZXJlIGFuZCB5b3UgdGhpbmsgbWF5YmUgeW91IHNob3VsZCBiZSwgcGxlYXNlCisgIGxldCBtZSBrbm93IHRoYXQgYXMgd2VsbC4gIEkgdHJ5IHRvIGdldCBldmVyeW9uZSwgYnV0IHNvbWV0aW1lcyBteQorICBib29ra2VlcGluZyBsYXBzZXMgYW5kIEkgZm9yZ2V0IGFib3V0IGNvbnRyaWJ1dGlvbnMuCisKKworICAxNS4xLiAgQ29kZSBhbmQgRG9jdW1lbnRhdGlvbgorCisgIFJ1c3R5IFJ1c3NlbGwgPHJ1c3R5IGF0IGxpbnV4Y2FyZS5jb20uYXU+ICAtCisKKyAgbyAgd3JvdGUgdGhlICBIT1dUTyA8aHR0cDovL3VzZXItbW9kZS0KKyAgICAgbGludXguc291cmNlZm9yZ2UubmV0L1VzZXJNb2RlTGludXgtSE9XVE8uaHRtbD4KKworICBvICBwcm9kZGVkIG1lIGludG8gbWFraW5nIHRoaXMgcHJvamVjdCBvZmZpY2lhbCBhbmQgcHV0dGluZyBpdCBvbgorICAgICBTb3VyY2VGb3JnZQorCisgIG8gIGNhbWUgdXAgd2l0aCB0aGUgd2F5IGNvb2wgVU1MIGxvZ28gPGh0dHA6Ly91c2VyLW1vZGUtCisgICAgIGxpbnV4LnNvdXJjZWZvcmdlLm5ldC91bWwtc21hbGwucG5nPgorCisgIG8gIHJlZGlkIHRoZSBjb25maWcgcHJvY2VzcworCisKKyAgUGV0ZXIgTW91bGRlciA8cmVpdGVyIGF0IG5ldHNwYWNlLm5ldC5hdT4gIC0gRml4ZWQgbXkgY29uZmlnIGFuZCBidWlsZAorICBwcm9jZXNzZXMsIGFuZCBhZGRlZCBzb21lIHVzZWZ1bCBjb2RlIHRvIHRoZSBibG9jayBkcml2ZXIKKworCisgIEJpbGwgU3RlYXJucyA8d3N0ZWFybnMgYXQgcG9ib3guY29tPiAgLQorCisgIG8gIEhPV1RPIHVwZGF0ZXMKKworICBvICBsb3RzIG9mIGJ1ZyByZXBvcnRzCisKKyAgbyAgbG90cyBvZiB0ZXN0aW5nCisKKyAgbyAgZGVkaWNhdGVkIGEgYm94ICh1bWwuaXN0cy5kYXJ0bW91dGguZWR1KSB0byBzdXBwb3J0IFVNTCBkZXZlbG9wbWVudAorCisgIG8gIHdyb3RlIHRoZSBta3Jvb3RmcyBzY3JpcHQsIHdoaWNoIGFsbG93cyBib290YWJsZSBmaWxlc3lzdGVtcyBvZgorICAgICBSUE0tYmFzZWQgZGlzdHJpYnV0aW9ucyB0byBiZSBjcmFua2VkIG91dAorCisgIG8gIGNyYW5rZWQgb3V0IGEgbGFyZ2UgbnVtYmVyIG9mIGZpbGVzeXN0ZW1zIHdpdGggc2FpZCBzY3JpcHQKKworCisgIEppbSBMZXUgPGpsZXUgYXQgbWluZHNwcmluZy5jb20+ICAtIFdyb3RlIHRoZSB2aXJ0dWFsIGV0aGVybmV0IGRyaXZlcgorICBhbmQgYXNzb2NpYXRlZCB1c2VybW9kZSB0b29scworCisgIExhcnMgQnJpbmtob2ZmIDxodHRwOi8vbGFycy5ub2NyZXcub3JnLz4gIC0gQ29udHJpYnV0ZWQgdGhlIHB0cmFjZQorICBwcm94eSBmcm9tIGhpcyBvd24gIHByb2plY3QgPGh0dHA6Ly9hMzg2Lm5vY3Jldy5vcmcvPiB0byBhbGxvdyBlYXNpZXIKKyAga2VybmVsIGRlYnVnZ2luZworCisKKyAgQW5kcmVhIEFyY2FuZ2VsaSA8YW5kcmVhIGF0IHN1c2UuZGU+ICAtIFJlZGlkIHNvbWUgb2YgdGhlIGVhcmx5IGJvb3QKKyAgY29kZSBzbyB0aGF0IGl0IHdvdWxkIHdvcmsgb24gbWFjaGluZXMgd2l0aCBMYXJnZSBGaWxlIFN1cHBvcnQKKworCisgIENocmlzIEVtZXJzb24gPGh0dHA6Ly93d3cuY2hpYXJrLmdyZWVuZW5kLm9yZy51ay9+Y2VtZXJzb24vPiAgLSBEaWQKKyAgdGhlIGZpcnN0IFVNTCBwb3J0IHRvIExpbnV4L3BwYworCisKKyAgSGFyYWxkIFdlbHRlIDxsYWZvcmdlIGF0IGdudW1vbmtzLm9yZz4gIC0gV3JvdGUgdGhlIG11bHRpY2FzdAorICB0cmFuc3BvcnQgZm9yIHRoZSBuZXR3b3JrIGRyaXZlcgorCisKKyAgSm9yZ2VuIENlZGVybG9mIC0gQWRkZWQgc3BlY2lhbCBmaWxlIHN1cHBvcnQgdG8gaG9zdGZzCisKKworICBHcmVnIExvbm5vbiAgPGdsb25ub24gYXQgcmlkZ2VydW4gZG90IGNvbT4gIC0gQ2hhbmdlZCB0aGUgdWJkIGRyaXZlcgorICB0byBhbGxvdyBpdCB0byBsYXllciBhIENPVyBmaWxlIG9uIGEgc2hhcmVkIHJlYWQtb25seSBmaWxlc3lzdGVtIGFuZAorICB3cm90ZSB0aGUgaW9tZW0gZW11bGF0aW9uIHN1cHBvcnQKKworCisgIEhlbnJpayBOb3Jkc3Ryb20gPGh0dHA6Ly9oZW0ucGFzc2FnZW4uc2UvaG5vLz4gIC0gUHJvdmlkZWQgYSB2YXJpZXR5CisgIG9mIHBhdGNoZXMsIGZpeGVzLCBhbmQgY2x1ZXMKKworCisgIExlbm5lcnQgQnV5dGVuaGVrIC0gQ29udHJpYnV0ZWQgdmFyaW91cyBwYXRjaGVzLCBhIHJld3JpdGUgb2YgdGhlCisgIG5ldHdvcmsgZHJpdmVyLCB0aGUgZmlyc3QgaW1wbGVtZW50YXRpb24gb2YgdGhlIG1jb25zb2xlIGRyaXZlciwgYW5kCisgIGRpZCB0aGUgYnVsayBvZiB0aGUgd29yayBuZWVkZWQgdG8gZ2V0IFNNUCB3b3JraW5nIGFnYWluLgorCisKKyAgWW9uIFVyaWFydGUgLSBGaXhlZCB0aGUgVFVOL1RBUCBuZXR3b3JrIGJhY2tlbmQgd2hpbGUgSSBzbGVwdC4KKworCisgIEFkYW0gSGVhdGggLSBNYWRlIGEgYnVuY2ggb2YgbmljZSBjbGVhbnVwcyB0byB0aGUgaW5pdGlhbGl6YXRpb24gY29kZSwKKyAgcGx1cyB2YXJpb3VzIG90aGVyIHNtYWxsIHBhdGNoZXMuCisKKworICBNYXR0IFppbW1lcm1hbiAtIE1hdHQgdm9sdW50ZWVyZWQgdG8gYmUgdGhlIFVNTCBEZWJpYW4gbWFpbnRhaW5lciBhbmQKKyAgaXMgZG9pbmcgYSByZWFsIG5pY2Ugam9iIG9mIGl0LiAgSGUgYWxzbyBub3RpY2VkIGFuZCBmaXhlZCBhIG51bWJlciBvZgorICBhY3R1YWxseSBhbmQgcG90ZW50aWFsbHkgZXhwbG9pdGFibGUgc2VjdXJpdHkgaG9sZXMgaW4gdW1sX25ldC4gIFBsdXMKKyAgdGhlIG9jY2FzaW9uYWwgcGF0Y2guICBJIGxpa2UgcGF0Y2hlcy4KKworCisgIEphbWVzIE1jTWVjaGFuIC0gSmFtZXMgc2VlbXMgdG8gaGF2ZSB0YWtlbiBvdmVyIG1haW50ZW5hbmNlIG9mIHRoZSB1YmQKKyAgZHJpdmVyIGFuZCBpcyBkb2luZyBhIG5pY2Ugam9iIG9mIGl0LgorCisKKyAgQ2hhbmRhbiBLdWRpZ2UgLSB3cm90ZSB0aGUgdW1sZ2RiIHNjcmlwdCB3aGljaCBhdXRvbWF0ZXMgdGhlIHJlbG9hZGluZworICBvZiBtb2R1bGUgc3ltYm9scy4KKworCisgIFN0ZXZlIFNjaG1pZHRrZSAtIHdyb3RlIHRoZSBVTUwgc2xpcnAgdHJhbnNwb3J0IGFuZCBob3N0YXVkaW8gZHJpdmVycywKKyAgZW5hYmxpbmcgVU1MIHByb2Nlc3NlcyB0byBhY2Nlc3MgYXVkaW8gZGV2aWNlcyBvbiB0aGUgaG9zdC4gSGUgYWxzbworICBzdWJtaXR0ZWQgcGF0Y2hlcyBmb3IgdGhlIHNsaXAgdHJhbnNwb3J0IGFuZCBsb3RzIG9mIG90aGVyIHRoaW5ncy4KKworCisgIERhdmlkIENvdWxzb24gPGh0dHA6Ly9kYXZpZGNvdWxzb24ubmV0PiAgLQorCisgIG8gIFNldCB1cCB0aGUgdXNlcm1vZGVsaW51eC5vcmcgPGh0dHA6Ly91c2VybW9kZWxpbnV4Lm9yZz4gIHNpdGUsCisgICAgIHdoaWNoIGlzIGEgZ3JlYXQgd2F5IG9mIGtlZXBpbmcgdGhlIFVNTCB1c2VyIGNvbW11bml0eSBvbiB0b3Agb2YKKyAgICAgVU1MIGdvaW5ncy1vbi4KKworICBvICBTaXRlIGRvY3VtZW50YXRpb24gYW5kIHVwZGF0ZXMKKworICBvICBOaWZ0eSBsaXR0bGUgVU1MIG1hbmFnZW1lbnQgZGFlbW9uICBVTUxkCisgICAgIDxodHRwOi8vdW1sLm9wZW5jb25zdWx0YW5jeS5jb20vdW1sZC8+CisKKyAgbyAgTG90cyBvZiB0ZXN0aW5nIGFuZCBidWcgcmVwb3J0cworCisKKworCisgIDE1LjIuICBGbHVzaGluZyBvdXQgYnVncworCisKKworICBvICBZdXJpIFB1ZGdvcm9kc2t5CisKKyAgbyAgR2VyYWxkIEJyaXR0b24KKworICBvICBJYW4gV2Vocm1hbgorCisgIG8gIEdvcmQgTGFtYgorCisgIG8gIEV1Z2VuZSBLb29udHoKKworICBvICBKb2huIEguIEhhcnRtYW4KKworICBvICBBbmRlcnMgS2FybHNzb24KKworICBvICBEYW5pZWwgUGhpbGxpcHMKKworICBvICBKb2huIEZyZW1saW4KKworICBvICBSYWluZXIgQnVyZ3N0YWxsZXIKKworICBvICBKYW1lcyBTdGV2ZW5zb24KKworICBvICBNYXR0IENsYXkKKworICBvICBDbGlmZiBKZWZmZXJpZXMKKworICBvICBHZW9mZiBIb2ZmCisKKyAgbyAgTGVubmVydCBCdXl0ZW5oZWsKKworICBvICBBbCBWaXJvCisKKyAgbyAgRnJhbmsgS2xpbmdlbmhvZWZlcgorCisgIG8gIExpdmlvIEJhbGRpbmkgU29hcmVzCisKKyAgbyAgSm9uIEJ1cmdlc3MKKworICBvICBQZXRydSBQYWxlcgorCisgIG8gIFBhdWwKKworICBvICBDaHJpcyBSZWFoYXJkCisKKyAgbyAgU3ZlcmtlciBOaWxzc29uCisKKyAgbyAgR29uZyBTdQorCisgIG8gIGpvaGFuIHZlcnJlcHQKKworICBvICBCam9ybiBFcmlrc3NvbgorCisgIG8gIExvcmVuem8gQWxsZWdydWNjaQorCisgIG8gIE11bGkgQmVuLVllaHVkYQorCisgIG8gIERhdmlkIE1hbnNmaWVsZAorCisgIG8gIEhvd2FyZCBHb2ZmCisKKyAgbyAgTWlrZSBBbmRlcnNvbgorCisgIG8gIEpvaG4gQnlybmUKKworICBvICBTYXBhbiBKLiBCYXRpYQorCisgIG8gIElyaXMgSHVhbmcKKworICBvICBKYW4gSHVkZWMKKworICBvICBWb2x1c3BhCisKKworCisKKyAgMTUuMy4gIEJ1Z2xldHMgYW5kIGNsZWFuLXVwcworCisKKworICBvICBEYXZlIFphcnp5Y2tpCisKKyAgbyAgQWRhbSBMYXp1cgorCisgIG8gIEJvcmlhIEZlaWdpbgorCisgIG8gIEJyaWFuIEouIE11cnJlbGwKKworICBvICBKUworCisgIG8gIFJvbWFuIFppcHBlbAorCisgIG8gIFdpbCBDb29sZXkKKworICBvICBBeWVsZXQgU2hlbWVzaAorCisgIG8gIFdpbGwgRHlzb24KKworICBvICBTdmVya2VyIE5pbHNzb24KKworICBvICBkdm9yYWsKKworICBvICB2Lm5hZ2Egc3Jpbml2YXMKKworICBvICBTaGxvbWkgRmlzaAorCisgIG8gIFJvZ2VyIEJpbm5zCisKKyAgbyAgam9oYW4gdmVycmVwdAorCisgIG8gIE1yQ2h1b2kKKworICBvICBQZXRlciBDbGV2ZQorCisgIG8gIFZpbmNlbnQgR3VmZmVucworCisgIG8gIE5hdGhhbiBTY290dAorCisgIG8gIFBhdHJpY2sgQ2F1bGZpZWxkCisKKyAgbyAgamJlYXJjZQorCisgIG8gIENhdGFsaW4gTWFyaW5hcworCisgIG8gIFNoYW5lIFNwZW5jZXIKKworICBvICBab3UgTWluCisKKworICBvICBSeWFuIEJvZGVyCisKKyAgbyAgTG9yZW56byBDb2xpdHRpCisKKyAgbyAgR3dlbmRhbCBHcmlnbm91CisKKyAgbyAgQW5kcmUnIEJyZWlsZXIKKworICBvICBUc3V0b211IFlhc3VkYQorCisKKworICAxNS40LiAgQ2FzZSBTdHVkaWVzCisKKworICBvICBKb24gV3JpZ2h0CisKKyAgbyAgV2lsbGlhbSBNY0V3YW4KKworICBvICBNaWNoYWVsIFJpY2hhcmRzb24KKworCisKKyAgMTUuNS4gIE90aGVyIGNvbnRyaWJ1dGlvbnMKKworCisgIEJpbGwgQ2FyciA8QmlsbC5DYXJyIGF0IGNvbXBhcS5jb20+ICBtYWRlIHRoZSBSZWQgSGF0IG1rcm9vdGZzIHNjcmlwdAorICB3b3JrIHdpdGggUkggNi4yLgorCisgIE1pY2hhZWwgSmVubmluZ3MgPG1pa2VqZW4gYXQgaGV2YW5ldC5jb20+ICBzZW50IGluIHNvbWUgbWF0ZXJpYWwgd2hpY2gKKyAgaXMgbm93IGdyYWNpbmcgdGhlIHRvcCBvZiB0aGUgIGluZGV4ICBwYWdlIDxodHRwOi8vdXNlci1tb2RlLQorICBsaW51eC5zb3VyY2Vmb3JnZS5uZXQvPiAgb2YgdGhpcyBzaXRlLgorCisgIFNHSSA8aHR0cDovL3d3dy5zZ2kuY29tPiAgKGFuZCBtb3JlIHNwZWNpZmljYWxseSBSYWxmIEJhZWNobGUgPHJhbGYgYXQKKyAgdW5pLWtvYmxlbnouZGU+ICkgZ2F2ZSBtZSBhbiBhY2NvdW50IG9uIG9zcy5zZ2kuY29tCisgIDxodHRwOi8vd3d3Lm9zcy5zZ2kuY29tPiAuICBUaGUgYmFuZHdpZHRoIHRoZXJlIG1hZGUgaXQgcG9zc2libGUgdG8KKyAgcHJvZHVjZSBtb3N0IG9mIHRoZSBmaWxlc3lzdGVtcyBhdmFpbGFibGUgb24gdGhlIHByb2plY3QgZG93bmxvYWQKKyAgcGFnZS4KKworICBMYXVyZW50IEJvbm5hdWQgPExhdXJlbnQuQm9ubmF1ZCBhdCBpbnBnLmZyPiAgdG9vayB0aGUgb2xkIGdyb3R0eQorICBEZWJpYW4gZmlsZXN5c3RlbSB0aGF0IEkndmUgYmVlbiBkaXN0cmlidXRpbmcgYW5kIHVwZGF0ZWQgaXQgdG8gMi4yLgorICBJdCBpcyBub3cgYXZhaWxhYmxlIGJ5IGl0c2VsZiBoZXJlLgorCisgIFJpayB2YW4gUmllbCBnYXZlIG1lIHNvbWUgZnRwIHNwYWNlIG9uIGZ0cC5ubC5saW51eC5vcmcgc28gSSBjYW4gbWFrZQorICByZWxlYXNlcyBldmVuIHdoZW4gU291cmNlZm9yZ2UgaXMgYnJva2VuLgorCisgIFJvZHJpZ28gZGUgQ2FzdHJvIGxvb2tlZCBhdCBteSBicm9rZW4gcHRlIGNvZGUgYW5kIHRvbGQgbWUgd2hhdCB3YXMKKyAgd3Jvbmcgd2l0aCBpdCwgbGV0dGluZyBtZSBmaXggYSBsb25nLXN0YW5kaW5nIChzZXZlcmFsIHdlZWtzKSBhbmQKKyAgc2VyaW91cyBzZXQgb2YgYnVncy4KKworICBDaHJpcyBSZWFoYXJkIGJ1aWx0IGEgc3BlY2lhbGl6ZWQgcm9vdCBmaWxlc3lzdGVtIGZvciBydW5uaW5nIGEgRE5TCisgIHNlcnZlciBqYWlsZWQgaW5zaWRlIFVNTC4gIEl0J3MgYXZhaWxhYmxlIGZyb20gdGhlIGRvd25sb2FkCisgIDxodHRwOi8vdXNlci1tb2RlLWxpbnV4LnNvdXJjZWZvcmdlLm5ldC9kbC1zZi5odG1sPiAgcGFnZSBpbiB0aGUgSmFpbAorICBGaWxlc3lzdGVtcyBzZWN0aW9uLgorCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92bS8uZ2l0aWdub3JlIGIvRG9jdW1lbnRhdGlvbi92bS8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5YjE2NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZtLy5naXRpZ25vcmUKQEAgLTAsMCArMSwyIEBACitwYWdlLXR5cGVzCitzbGFiaW5mbwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92bS8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vdm0vMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE1ZTJhMQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdm0vMDAtSU5ERVgKQEAgLTAsMCArMSw0MiBAQAorMDAtSU5ERVgKKwktIHRoaXMgZmlsZS4KK2FjdGl2ZV9tbS50eHQKKwktIEFuIGV4cGxhbmF0aW9uIGZyb20gTGludXMgYWJvdXQgdHNrLT5hY3RpdmVfbW0gdnMgdHNrLT5tbS4KK2JhbGFuY2UKKwktIHZhcmlvdXMgaW5mb3JtYXRpb24gb24gbWVtb3J5IGJhbGFuY2luZy4KK2NsZWFuY2FjaGUudHh0CisJLSBJbnRybyB0byBjbGVhbmNhY2hlIGFuZCBwYWdlLWdyYW51bGFyaXR5IHZpY3RpbSBjYWNoZS4KK2Zyb250c3dhcC50eHQKKwktIE91dGxpbmUgZnJvbnRzd2FwLCBwYXJ0IG9mIHRoZSB0cmFuc2NlbmRlbnQgbWVtb3J5IGZyb250ZW5kLgoraGlnaG1lbS50eHQKKwktIE91dGxpbmUgb2YgaGlnaG1lbSBhbmQgY29tbW9uIGlzc3Vlcy4KK2h1Z2V0bGJwYWdlLnR4dAorCS0gYSBicmllZiBzdW1tYXJ5IG9mIGh1Z2V0bGJwYWdlIHN1cHBvcnQgaW4gdGhlIExpbnV4IGtlcm5lbC4KK2h3cG9pc29uLnR4dAorCS0gZXhwbGFpbnMgd2hhdCBod3BvaXNvbiBpcworaWRsZV9wYWdlX3RyYWNraW5nLnR4dAorCS0gZGVzY3JpcHRpb24gb2YgdGhlIGlkbGUgcGFnZSB0cmFja2luZyBmZWF0dXJlLgora3NtLnR4dAorCS0gaG93IHRvIHVzZSB0aGUgS2VybmVsIFNhbWVwYWdlIE1lcmdpbmcgZmVhdHVyZS4KK251bWEKKwktIGluZm9ybWF0aW9uIGFib3V0IE5VTUEgc3BlY2lmaWMgY29kZSBpbiB0aGUgTGludXggdm0uCitudW1hX21lbW9yeV9wb2xpY3kudHh0CisJLSBkb2N1bWVudGF0aW9uIG9mIGNvbmNlcHRzIGFuZCBBUElzIG9mIHRoZSAyLjYgbWVtb3J5IHBvbGljeSBzdXBwb3J0Lgorb3ZlcmNvbW1pdC1hY2NvdW50aW5nCisJLSBkZXNjcmlwdGlvbiBvZiB0aGUgTGludXgga2VybmVscyBvdmVyY29tbWl0IGhhbmRsaW5nIG1vZGVzLgorcGFnZV9taWdyYXRpb24KKwktIGRlc2NyaXB0aW9uIG9mIHBhZ2UgbWlncmF0aW9uIGluIE5VTUEgc3lzdGVtcy4KK3BhZ2VtYXAudHh0CisJLSBwYWdlbWFwLCBmcm9tIHRoZSB1c2Vyc3BhY2UgcGVyc3BlY3RpdmUKK3NsdWIudHh0CisJLSBhIHNob3J0IHVzZXJzIGd1aWRlIGZvciBTTFVCLgorc29mdC1kaXJ0eS50eHQKKwktIHNob3J0IGV4cGxhbmF0aW9uIGZvciBzb2Z0LWRpcnR5IFBURXMKK3NwbGl0X3BhZ2VfdGFibGVfbG9jaworCS0gU2VwYXJhdGUgcGVyLXRhYmxlIGxvY2sgdG8gaW1wcm92ZSBzY2FsYWJpbGl0eSBvZiB0aGUgb2xkIHBhZ2VfdGFibGVfbG9jay4KK3RyYW5zaHVnZS50eHQKKwktIFRyYW5zcGFyZW50IEh1Z2VwYWdlIFN1cHBvcnQsIGFsdGVybmF0aXZlIHdheSBvZiB1c2luZyBodWdlcGFnZXMuCit1bmV2aWN0YWJsZS1scnUudHh0CisJLSBVbmV2aWN0YWJsZSBMUlUgaW5mcmFzdHJ1Y3R1cmUKK3pzd2FwLnR4dAorCS0gSW50cm8gdG8gY29tcHJlc3NlZCBjYWNoZSBmb3Igc3dhcCBwYWdlcwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92bS9hY3RpdmVfbW0udHh0IGIvRG9jdW1lbnRhdGlvbi92bS9hY3RpdmVfbW0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiZjQ1ODEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZtL2FjdGl2ZV9tbS50eHQKQEAgLTAsMCArMSw4MyBAQAorTGlzdDogICAgICAgbGludXgta2VybmVsCitTdWJqZWN0OiAgICBSZTogYWN0aXZlX21tCitGcm9tOiAgICAgICBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHMgKCkgdHJhbnNtZXRhICEgY29tPgorRGF0ZTogICAgICAgMTk5OS0wNy0zMCAyMTozNjoyNAorCitDYydkIHRvIGxpbnV4LWtlcm5lbCwgYmVjYXVzZSBJIGRvbid0IHdyaXRlIGV4cGxhbmF0aW9ucyBhbGwgdGhhdCBvZnRlbiwKK2FuZCB3aGVuIEkgZG8gSSBmZWVsIGJldHRlciBhYm91dCBtb3JlIHBlb3BsZSByZWFkaW5nIHRoZW0uCisKK09uIEZyaSwgMzAgSnVsIDE5OTksIERhdmlkIE1vc2JlcmdlciB3cm90ZToKKz4KKz4gSXMgdGhlcmUgYSBicmllZiBkZXNjcmlwdGlvbiBzb21lcGxhY2Ugb24gaG93ICJtbSIgdnMuICJhY3RpdmVfbW0iIGluCis+IHRoZSB0YXNrX3N0cnVjdCBhcmUgc3VwcG9zZWQgdG8gYmUgdXNlZD8gIChNeSBhcG9sb2dpZXMgaWYgdGhpcyB3YXMKKz4gZGlzY3Vzc2VkIG9uIHRoZSBtYWlsaW5nIGxpc3RzLS0tSSBqdXN0IHJldHVybmVkIGZyb20gdmFjYXRpb24gYW5kCis+IHdhc24ndCBhYmxlIHRvIGZvbGxvdyBsaW51eC1rZXJuZWwgZm9yIGEgd2hpbGUpLgorCitCYXNpY2FsbHksIHRoZSBuZXcgc2V0dXAgaXM6CisKKyAtIHdlIGhhdmUgInJlYWwgYWRkcmVzcyBzcGFjZXMiIGFuZCAiYW5vbnltb3VzIGFkZHJlc3Mgc3BhY2VzIi4gVGhlCisgICBkaWZmZXJlbmNlIGlzIHRoYXQgYW4gYW5vbnltb3VzIGFkZHJlc3Mgc3BhY2UgZG9lc24ndCBjYXJlIGFib3V0IHRoZQorICAgdXNlci1sZXZlbCBwYWdlIHRhYmxlcyBhdCBhbGwsIHNvIHdoZW4gd2UgZG8gYSBjb250ZXh0IHN3aXRjaCBpbnRvIGFuCisgICBhbm9ueW1vdXMgYWRkcmVzcyBzcGFjZSB3ZSBqdXN0IGxlYXZlIHRoZSBwcmV2aW91cyBhZGRyZXNzIHNwYWNlCisgICBhY3RpdmUuCisKKyAgIFRoZSBvYnZpb3VzIHVzZSBmb3IgYSAiYW5vbnltb3VzIGFkZHJlc3Mgc3BhY2UiIGlzIGFueSB0aHJlYWQgdGhhdAorICAgZG9lc24ndCBuZWVkIGFueSB1c2VyIG1hcHBpbmdzIC0gYWxsIGtlcm5lbCB0aHJlYWRzIGJhc2ljYWxseSBmYWxsIGludG8KKyAgIHRoaXMgY2F0ZWdvcnksIGJ1dCBldmVuICJyZWFsIiB0aHJlYWRzIGNhbiB0ZW1wb3JhcmlseSBzYXkgdGhhdCBmb3IKKyAgIHNvbWUgYW1vdW50IG9mIHRpbWUgdGhleSBhcmUgbm90IGdvaW5nIHRvIGJlIGludGVyZXN0ZWQgaW4gdXNlciBzcGFjZSwKKyAgIGFuZCB0aGF0IHRoZSBzY2hlZHVsZXIgbWlnaHQgYXMgd2VsbCB0cnkgdG8gYXZvaWQgd2FzdGluZyB0aW1lIG9uCisgICBzd2l0Y2hpbmcgdGhlIFZNIHN0YXRlIGFyb3VuZC4gQ3VycmVudGx5IG9ubHkgdGhlIG9sZC1zdHlsZSBiZGZsdXNoCisgICBzeW5jIGRvZXMgdGhhdC4KKworIC0gInRzay0+bW0iIHBvaW50cyB0byB0aGUgInJlYWwgYWRkcmVzcyBzcGFjZSIuIEZvciBhbiBhbm9ueW1vdXMgcHJvY2VzcywKKyAgIHRzay0+bW0gd2lsbCBiZSBOVUxMLCBmb3IgdGhlIGxvZ2ljYWwgcmVhc29uIHRoYXQgYW4gYW5vbnltb3VzIHByb2Nlc3MKKyAgIHJlYWxseSBkb2Vzbid0IF9oYXZlXyBhIHJlYWwgYWRkcmVzcyBzcGFjZSBhdCBhbGwuCisKKyAtIGhvd2V2ZXIsIHdlIG9idmlvdXNseSBuZWVkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggYWRkcmVzcyBzcGFjZSB3ZQorICAgInN0b2xlIiBmb3Igc3VjaCBhbiBhbm9ueW1vdXMgdXNlci4gRm9yIHRoYXQsIHdlIGhhdmUgInRzay0+YWN0aXZlX21tIiwKKyAgIHdoaWNoIHNob3dzIHdoYXQgdGhlIGN1cnJlbnRseSBhY3RpdmUgYWRkcmVzcyBzcGFjZSBpcy4KKworICAgVGhlIHJ1bGUgaXMgdGhhdCBmb3IgYSBwcm9jZXNzIHdpdGggYSByZWFsIGFkZHJlc3Mgc3BhY2UgKGllIHRzay0+bW0gaXMKKyAgIG5vbi1OVUxMKSB0aGUgYWN0aXZlX21tIG9idmlvdXNseSBhbHdheXMgaGFzIHRvIGJlIHRoZSBzYW1lIGFzIHRoZSByZWFsCisgICBvbmUuCisKKyAgIEZvciBhIGFub255bW91cyBwcm9jZXNzLCB0c2stPm1tID09IE5VTEwsIGFuZCB0c2stPmFjdGl2ZV9tbSBpcyB0aGUKKyAgICJib3Jyb3dlZCIgbW0gd2hpbGUgdGhlIGFub255bW91cyBwcm9jZXNzIGlzIHJ1bm5pbmcuIFdoZW4gdGhlCisgICBhbm9ueW1vdXMgcHJvY2VzcyBnZXRzIHNjaGVkdWxlZCBhd2F5LCB0aGUgYm9ycm93ZWQgYWRkcmVzcyBzcGFjZSBpcworICAgcmV0dXJuZWQgYW5kIGNsZWFyZWQuCisKK1RvIHN1cHBvcnQgYWxsIHRoYXQsIHRoZSAic3RydWN0IG1tX3N0cnVjdCIgbm93IGhhcyB0d28gY291bnRlcnM6IGEKKyJtbV91c2VycyIgY291bnRlciB0aGF0IGlzIGhvdyBtYW55ICJyZWFsIGFkZHJlc3Mgc3BhY2UgdXNlcnMiIHRoZXJlIGFyZSwKK2FuZCBhICJtbV9jb3VudCIgY291bnRlciB0aGF0IGlzIHRoZSBudW1iZXIgb2YgImxhenkiIHVzZXJzIChpZSBhbm9ueW1vdXMKK3VzZXJzKSBwbHVzIG9uZSBpZiB0aGVyZSBhcmUgYW55IHJlYWwgdXNlcnMuCisKK1VzdWFsbHkgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHJlYWwgdXNlciwgYnV0IGl0IGNvdWxkIGJlIHRoYXQgdGhlIHJlYWwKK3VzZXIgZXhpdGVkIG9uIGFub3RoZXIgQ1BVIHdoaWxlIGEgbGF6eSB1c2VyIHdhcyBzdGlsbCBhY3RpdmUsIHNvIHlvdSBkbworYWN0dWFsbHkgZ2V0IGNhc2VzIHdoZXJlIHlvdSBoYXZlIGEgYWRkcmVzcyBzcGFjZSB0aGF0IGlzIF9vbmx5XyB1c2VkIGJ5CitsYXp5IHVzZXJzLiBUaGF0IGlzIG9mdGVuIGEgc2hvcnQtbGl2ZWQgc3RhdGUsIGJlY2F1c2Ugb25jZSB0aGF0IHRocmVhZAorZ2V0cyBzY2hlZHVsZWQgYXdheSBpbiBmYXZvdXIgb2YgYSByZWFsIHRocmVhZCwgdGhlICJ6b21iaWUiIG1tIGdldHMKK3JlbGVhc2VkIGJlY2F1c2UgIm1tX3VzZXJzIiBiZWNvbWVzIHplcm8uCisKK0Fsc28sIGEgbmV3IHJ1bGUgaXMgdGhhdCBfbm9ib2R5XyBldmVyIGhhcyAiaW5pdF9tbSIgYXMgYSByZWFsIE1NIGFueQorbW9yZS4gImluaXRfbW0iIHNob3VsZCBiZSBjb25zaWRlcmVkIGp1c3QgYSAibGF6eSBjb250ZXh0IHdoZW4gbm8gb3RoZXIKK2NvbnRleHQgaXMgYXZhaWxhYmxlIiwgYW5kIGluIGZhY3QgaXQgaXMgbWFpbmx5IHVzZWQganVzdCBhdCBib290dXAgd2hlbgorbm8gcmVhbCBWTSBoYXMgeWV0IGJlZW4gY3JlYXRlZC4gU28gY29kZSB0aGF0IHVzZWQgdG8gY2hlY2sKKworCWlmIChjdXJyZW50LT5tbSA9PSAmaW5pdF9tbSkKKworc2hvdWxkIGdlbmVyYWxseSBqdXN0IGRvCisKKwlpZiAoIWN1cnJlbnQtPm1tKQorCitpbnN0ZWFkICh3aGljaCBtYWtlcyBtb3JlIHNlbnNlIGFueXdheSAtIHRoZSB0ZXN0IGlzIGJhc2ljYWxseSBvbmUgb2YgImRvCit3ZSBoYXZlIGEgdXNlciBjb250ZXh0IiwgYW5kIGlzIGdlbmVyYWxseSBkb25lIGJ5IHRoZSBwYWdlIGZhdWx0IGhhbmRsZXIKK2FuZCB0aGluZ3MgbGlrZSB0aGF0KS4KKworQW55d2F5LCBJIHB1dCBhIHByZS1wYXRjaC0yLjMuMTMtMSBvbiBmdHAua2VybmVsLm9yZyBqdXN0IGEgbW9tZW50IGFnbywKK2JlY2F1c2UgaXQgc2xpZ2h0bHkgY2hhbmdlcyB0aGUgaW50ZXJmYWNlcyB0byBhY2NvbW1vZGF0ZSB0aGUgYWxwaGEgKHdobword291bGQgaGF2ZSB0aG91Z2h0IGl0LCBidXQgdGhlIGFscGhhIGFjdHVhbGx5IGVuZHMgdXAgaGF2aW5nIG9uZSBvZiB0aGUKK3VnbGllc3QgY29udGV4dCBzd2l0Y2ggY29kZXMgLSB1bmxpa2UgdGhlIG90aGVyIGFyY2hpdGVjdHVyZXMgd2hlcmUgdGhlIE1NCithbmQgcmVnaXN0ZXIgc3RhdGUgaXMgc2VwYXJhdGUsIHRoZSBhbHBoYSBQQUxjb2RlIGpvaW5zIHRoZSB0d28sIGFuZCB5b3UKK25lZWQgdG8gc3dpdGNoIGJvdGggdG9nZXRoZXIpLgorCisoRnJvbSBodHRwOi8vbWFyYy5pbmZvLz9sPWxpbnV4LWtlcm5lbCZtPTkzMzM3Mjc4NjAyMjExJnc9MikKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdm0vYmFsYW5jZSBiL0RvY3VtZW50YXRpb24vdm0vYmFsYW5jZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjQ1OTU0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92bS9iYWxhbmNlCkBAIC0wLDAgKzEsOTUgQEAKK1N0YXJ0ZWQgSmFuIDIwMDAgYnkgS2Fub2ogU2FyY2FyIDxrYW5vakBzZ2kuY29tPgorCitNZW1vcnkgYmFsYW5jaW5nIGlzIG5lZWRlZCBmb3IgIV9fR0ZQX0FUT01JQyBhbmQgIV9fR0ZQX0tTV0FQRF9SRUNMQUlNIGFzCit3ZWxsIGFzIGZvciBub24gX19HRlBfSU8gYWxsb2NhdGlvbnMuCisKK1RoZSBmaXJzdCByZWFzb24gd2h5IGEgY2FsbGVyIG1heSBhdm9pZCByZWNsYWltIGlzIHRoYXQgdGhlIGNhbGxlciBjYW4gbm90CitzbGVlcCBkdWUgdG8gaG9sZGluZyBhIHNwaW5sb2NrIG9yIGlzIGluIGludGVycnVwdCBjb250ZXh0LiBUaGUgc2Vjb25kIG1heQorYmUgdGhhdCB0aGUgY2FsbGVyIGlzIHdpbGxpbmcgdG8gZmFpbCB0aGUgYWxsb2NhdGlvbiB3aXRob3V0IGluY3VycmluZyB0aGUKK292ZXJoZWFkIG9mIHBhZ2UgcmVjbGFpbS4gVGhpcyBtYXkgaGFwcGVuIGZvciBvcHBvcnR1bmlzdGljIGhpZ2gtb3JkZXIKK2FsbG9jYXRpb24gcmVxdWVzdHMgdGhhdCBoYXZlIG9yZGVyLTAgZmFsbGJhY2sgb3B0aW9ucy4gSW4gc3VjaCBjYXNlcywKK3RoZSBjYWxsZXIgbWF5IGFsc28gd2lzaCB0byBhdm9pZCB3YWtpbmcga3N3YXBkLgorCitfX0dGUF9JTyBhbGxvY2F0aW9uIHJlcXVlc3RzIGFyZSBtYWRlIHRvIHByZXZlbnQgZmlsZSBzeXN0ZW0gZGVhZGxvY2tzLgorCitJbiB0aGUgYWJzZW5jZSBvZiBub24gc2xlZXBhYmxlIGFsbG9jYXRpb24gcmVxdWVzdHMsIGl0IHNlZW1zIGRldHJpbWVudGFsCit0byBiZSBkb2luZyBiYWxhbmNpbmcuIFBhZ2UgcmVjbGFtYXRpb24gY2FuIGJlIGtpY2tlZCBvZmYgbGF6aWx5LCB0aGF0Citpcywgb25seSB3aGVuIG5lZWRlZCAoYWthIHpvbmUgZnJlZSBtZW1vcnkgaXMgMCksIGluc3RlYWQgb2YgbWFraW5nIGl0CithIHByb2FjdGl2ZSBwcm9jZXNzLgorCitUaGF0IGJlaW5nIHNhaWQsIHRoZSBrZXJuZWwgc2hvdWxkIHRyeSB0byBmdWxmaWxsIHJlcXVlc3RzIGZvciBkaXJlY3QKK21hcHBlZCBwYWdlcyBmcm9tIHRoZSBkaXJlY3QgbWFwcGVkIHBvb2wsIGluc3RlYWQgb2YgZmFsbGluZyBiYWNrIG9uCit0aGUgZG1hIHBvb2wsIHNvIGFzIHRvIGtlZXAgdGhlIGRtYSBwb29sIGZpbGxlZCBmb3IgZG1hIHJlcXVlc3RzIChhdG9taWMKK29yIG5vdCkuIEEgc2ltaWxhciBhcmd1bWVudCBhcHBsaWVzIHRvIGhpZ2htZW0gYW5kIGRpcmVjdCBtYXBwZWQgcGFnZXMuCitPVE9ILCBpZiB0aGVyZSBpcyBhIGxvdCBvZiBmcmVlIGRtYSBwYWdlcywgaXQgaXMgcHJlZmVyYWJsZSB0byBzYXRpc2Z5CityZWd1bGFyIG1lbW9yeSByZXF1ZXN0cyBieSBhbGxvY2F0aW5nIG9uZSBmcm9tIHRoZSBkbWEgcG9vbCwgaW5zdGVhZAorb2YgaW5jdXJyaW5nIHRoZSBvdmVyaGVhZCBvZiByZWd1bGFyIHpvbmUgYmFsYW5jaW5nLgorCitJbiAyLjIsIG1lbW9yeSBiYWxhbmNpbmcvcGFnZSByZWNsYW1hdGlvbiB3b3VsZCBraWNrIG9mZiBvbmx5IHdoZW4gdGhlCitfdG90YWxfIG51bWJlciBvZiBmcmVlIHBhZ2VzIGZlbGwgYmVsb3cgMS82NCB0aCBvZiB0b3RhbCBtZW1vcnkuIFdpdGggdGhlCityaWdodCByYXRpbyBvZiBkbWEgYW5kIHJlZ3VsYXIgbWVtb3J5LCBpdCBpcyBxdWl0ZSBwb3NzaWJsZSB0aGF0IGJhbGFuY2luZword291bGQgbm90IGJlIGRvbmUgZXZlbiB3aGVuIHRoZSBkbWEgem9uZSB3YXMgY29tcGxldGVseSBlbXB0eS4gMi4yIGhhcworYmVlbiBydW5uaW5nIHByb2R1Y3Rpb24gbWFjaGluZXMgb2YgdmFyeWluZyBtZW1vcnkgc2l6ZXMsIGFuZCBzZWVtcyB0byBiZQorZG9pbmcgZmluZSBldmVuIHdpdGggdGhlIHByZXNlbmNlIG9mIHRoaXMgcHJvYmxlbS4gSW4gMi4zLCBkdWUgdG8KK0hJR0hNRU0sIHRoaXMgcHJvYmxlbSBpcyBhZ2dyYXZhdGVkLgorCitJbiAyLjMsIHpvbmUgYmFsYW5jaW5nIGNhbiBiZSBkb25lIGluIG9uZSBvZiB0d28gd2F5czogZGVwZW5kaW5nIG9uIHRoZQorem9uZSBzaXplIChhbmQgcG9zc2libHkgb2YgdGhlIHNpemUgb2YgbG93ZXIgY2xhc3Mgem9uZXMpLCB3ZSBjYW4gZGVjaWRlCithdCBpbml0IHRpbWUgaG93IG1hbnkgZnJlZSBwYWdlcyB3ZSBzaG91bGQgYWltIGZvciB3aGlsZSBiYWxhbmNpbmcgYW55Cit6b25lLiBUaGUgZ29vZCBwYXJ0IGlzLCB3aGlsZSBiYWxhbmNpbmcsIHdlIGRvIG5vdCBuZWVkIHRvIGxvb2sgYXQgc2l6ZXMKK29mIGxvd2VyIGNsYXNzIHpvbmVzLCB0aGUgYmFkIHBhcnQgaXMsIHdlIG1pZ2h0IGRvIHRvbyBmcmVxdWVudCBiYWxhbmNpbmcKK2R1ZSB0byBpZ25vcmluZyBwb3NzaWJseSBsb3dlciB1c2FnZSBpbiB0aGUgbG93ZXIgY2xhc3Mgem9uZXMuIEFsc28sCit3aXRoIGEgc2xpZ2h0IGNoYW5nZSBpbiB0aGUgYWxsb2NhdGlvbiByb3V0aW5lLCBpdCBpcyBwb3NzaWJsZSB0byByZWR1Y2UKK3RoZSBtZW1jbGFzcygpIG1hY3JvIHRvIGJlIGEgc2ltcGxlIGVxdWFsaXR5LgorCitBbm90aGVyIHBvc3NpYmxlIHNvbHV0aW9uIGlzIHRoYXQgd2UgYmFsYW5jZSBvbmx5IHdoZW4gdGhlIGZyZWUgbWVtb3J5CitvZiBhIHpvbmUgX2FuZF8gYWxsIGl0cyBsb3dlciBjbGFzcyB6b25lcyBmYWxscyBiZWxvdyAxLzY0dGggb2YgdGhlCit0b3RhbCBtZW1vcnkgaW4gdGhlIHpvbmUgYW5kIGl0cyBsb3dlciBjbGFzcyB6b25lcy4gVGhpcyBmaXhlcyB0aGUgMi4yCitiYWxhbmNpbmcgcHJvYmxlbSwgYW5kIHN0YXlzIGFzIGNsb3NlIHRvIDIuMiBiZWhhdmlvciBhcyBwb3NzaWJsZS4gQWxzbywKK3RoZSBiYWxhbmNpbmcgYWxnb3JpdGhtIHdvcmtzIHRoZSBzYW1lIHdheSBvbiB0aGUgdmFyaW91cyBhcmNoaXRlY3R1cmVzLAord2hpY2ggaGF2ZSBkaWZmZXJlbnQgbnVtYmVycyBhbmQgdHlwZXMgb2Ygem9uZXMuIElmIHdlIHdhbnRlZCB0byBnZXQKK2ZhbmN5LCB3ZSBjb3VsZCBhc3NpZ24gZGlmZmVyZW50IHdlaWdodHMgdG8gZnJlZSBwYWdlcyBpbiBkaWZmZXJlbnQKK3pvbmVzIGluIHRoZSBmdXR1cmUuCisKK05vdGUgdGhhdCBpZiB0aGUgc2l6ZSBvZiB0aGUgcmVndWxhciB6b25lIGlzIGh1Z2UgY29tcGFyZWQgdG8gZG1hIHpvbmUsCitpdCBiZWNvbWVzIGxlc3Mgc2lnbmlmaWNhbnQgdG8gY29uc2lkZXIgdGhlIGZyZWUgZG1hIHBhZ2VzIHdoaWxlCitkZWNpZGluZyB3aGV0aGVyIHRvIGJhbGFuY2UgdGhlIHJlZ3VsYXIgem9uZS4gVGhlIGZpcnN0IHNvbHV0aW9uCitiZWNvbWVzIG1vcmUgYXR0cmFjdGl2ZSB0aGVuLgorCitUaGUgYXBwZW5kZWQgcGF0Y2ggaW1wbGVtZW50cyB0aGUgc2Vjb25kIHNvbHV0aW9uLiBJdCBhbHNvICJmaXhlcyIgdHdvCitwcm9ibGVtczogZmlyc3QsIGtzd2FwZCBpcyB3b2tlbiB1cCBhcyBpbiAyLjIgb24gbG93IG1lbW9yeSBjb25kaXRpb25zCitmb3Igbm9uLXNsZWVwYWJsZSBhbGxvY2F0aW9ucy4gU2Vjb25kLCB0aGUgSElHSE1FTSB6b25lIGlzIGFsc28gYmFsYW5jZWQsCitzbyBhcyB0byBnaXZlIGEgZmlnaHRpbmcgY2hhbmNlIGZvciByZXBsYWNlX3dpdGhfaGlnaG1lbSgpIHRvIGdldCBhCitISUdITUVNIHBhZ2UsIGFzIHdlbGwgYXMgdG8gZW5zdXJlIHRoYXQgSElHSE1FTSBhbGxvY2F0aW9ucyBkbyBub3QKK2ZhbGwgYmFjayBpbnRvIHJlZ3VsYXIgem9uZS4gVGhpcyBhbHNvIG1ha2VzIHN1cmUgdGhhdCBISUdITUVNIHBhZ2VzCithcmUgbm90IGxlYWtlZCAoZm9yIGV4YW1wbGUsIGluIHNpdHVhdGlvbnMgd2hlcmUgYSBISUdITUVNIHBhZ2UgaXMgaW4gCit0aGUgc3dhcGNhY2hlIGJ1dCBpcyBub3QgYmVpbmcgdXNlZCBieSBhbnlvbmUpCisKK2tzd2FwZCBhbHNvIG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIHpvbmVzIGl0IHNob3VsZCBiYWxhbmNlLiBrc3dhcGQgaXMKK3ByaW1hcmlseSBuZWVkZWQgaW4gYSBzaXR1YXRpb24gd2hlcmUgYmFsYW5jaW5nIGNhbiBub3QgYmUgZG9uZSwgCitwcm9iYWJseSBiZWNhdXNlIGFsbCBhbGxvY2F0aW9uIHJlcXVlc3RzIGFyZSBjb21pbmcgZnJvbSBpbnRyIGNvbnRleHQKK2FuZCBhbGwgcHJvY2VzcyBjb250ZXh0cyBhcmUgc2xlZXBpbmcuIEZvciAyLjMsIGtzd2FwZCBkb2VzIG5vdCByZWFsbHkKK25lZWQgdG8gYmFsYW5jZSB0aGUgaGlnaG1lbSB6b25lLCBzaW5jZSBpbnRyIGNvbnRleHQgZG9lcyBub3QgcmVxdWVzdAoraGlnaG1lbSBwYWdlcy4ga3N3YXBkIGxvb2tzIGF0IHRoZSB6b25lX3dha2Vfa3N3YXBkIGZpZWxkIGluIHRoZSB6b25lCitzdHJ1Y3R1cmUgdG8gZGVjaWRlIHdoZXRoZXIgYSB6b25lIG5lZWRzIGJhbGFuY2luZy4KKworUGFnZSBzdGVhbGluZyBmcm9tIHByb2Nlc3MgbWVtb3J5IGFuZCBzaG0gaXMgZG9uZSBpZiBzdGVhbGluZyB0aGUgcGFnZSB3b3VsZAorYWxsZXZpYXRlIG1lbW9yeSBwcmVzc3VyZSBvbiBhbnkgem9uZSBpbiB0aGUgcGFnZSdzIG5vZGUgdGhhdCBoYXMgZmFsbGVuIGJlbG93CitpdHMgd2F0ZXJtYXJrLgorCit3YXRlbWFya1tXTUFSS19NSU4vV01BUktfTE9XL1dNQVJLX0hJR0hdL2xvd19vbl9tZW1vcnkvem9uZV93YWtlX2tzd2FwZDogVGhlc2UKK2FyZSBwZXItem9uZSBmaWVsZHMsIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZW4gYSB6b25lIG5lZWRzIHRvIGJlIGJhbGFuY2VkLiBXaGVuCit0aGUgbnVtYmVyIG9mIHBhZ2VzIGZhbGxzIGJlbG93IHdhdGVybWFya1tXTUFSS19NSU5dLCB0aGUgaHlzdGVyaWMgZmllbGQKK2xvd19vbl9tZW1vcnkgZ2V0cyBzZXQuIFRoaXMgc3RheXMgc2V0IHRpbGwgdGhlIG51bWJlciBvZiBmcmVlIHBhZ2VzIGJlY29tZXMKK3dhdGVybWFya1tXTUFSS19ISUdIXS4gV2hlbiBsb3dfb25fbWVtb3J5IGlzIHNldCwgcGFnZSBhbGxvY2F0aW9uIHJlcXVlc3RzIHdpbGwKK3RyeSB0byBmcmVlIHNvbWUgcGFnZXMgaW4gdGhlIHpvbmUgKHByb3ZpZGluZyBHRlBfV0FJVCBpcyBzZXQgaW4gdGhlIHJlcXVlc3QpLgorT3J0aG9nb25hbCB0byB0aGlzLCBpcyB0aGUgZGVjaXNpb24gdG8gcG9rZSBrc3dhcGQgdG8gZnJlZSBzb21lIHpvbmUgcGFnZXMuCitUaGF0IGRlY2lzaW9uIGlzIG5vdCBoeXN0ZXJlc2lzIGJhc2VkLCBhbmQgaXMgZG9uZSB3aGVuIHRoZSBudW1iZXIgb2YgZnJlZQorcGFnZXMgaXMgYmVsb3cgd2F0ZXJtYXJrW1dNQVJLX0xPV107IGluIHdoaWNoIGNhc2Ugem9uZV93YWtlX2tzd2FwZCBpcyBhbHNvIHNldC4KKworCisoR29vZCkgSWRlYXMgdGhhdCBJIGhhdmUgaGVhcmQ6CisxLiBEeW5hbWljIGV4cGVyaWVuY2Ugc2hvdWxkIGluZmx1ZW5jZSBiYWxhbmNpbmc6IG51bWJlciBvZiBmYWlsZWQgcmVxdWVzdHMKK2ZvciBhIHpvbmUgY2FuIGJlIHRyYWNrZWQgYW5kIGZlZCBpbnRvIHRoZSBiYWxhbmNpbmcgc2NoZW1lIChqYWx2b0BtYmF5Lm5ldCkKKzIuIEltcGxlbWVudCBhIHJlcGxhY2Vfd2l0aF9oaWdobWVtKCktbGlrZSByZXBsYWNlX3dpdGhfcmVndWxhcigpIHRvIHByZXNlcnZlCitkbWEgcGFnZXMuIChsa2RAdGFudGFsb3BoaWxlLmRlbW9uLmNvLnVrKQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92bS9jbGVhbmNhY2hlLnR4dCBiL0RvY3VtZW50YXRpb24vdm0vY2xlYW5jYWNoZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRiNDlkZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdm0vY2xlYW5jYWNoZS50eHQKQEAgLTAsMCArMSwyNzcgQEAKK01PVElWQVRJT04KKworQ2xlYW5jYWNoZSBpcyBhIG5ldyBvcHRpb25hbCBmZWF0dXJlIHByb3ZpZGVkIGJ5IHRoZSBWRlMgbGF5ZXIgdGhhdAorcG90ZW50aWFsbHkgZHJhbWF0aWNhbGx5IGluY3JlYXNlcyBwYWdlIGNhY2hlIGVmZmVjdGl2ZW5lc3MgZm9yCittYW55IHdvcmtsb2FkcyBpbiBtYW55IGVudmlyb25tZW50cyBhdCBhIG5lZ2xpZ2libGUgY29zdC4KKworQ2xlYW5jYWNoZSBjYW4gYmUgdGhvdWdodCBvZiBhcyBhIHBhZ2UtZ3JhbnVsYXJpdHkgdmljdGltIGNhY2hlIGZvciBjbGVhbgorcGFnZXMgdGhhdCB0aGUga2VybmVsJ3MgcGFnZWZyYW1lIHJlcGxhY2VtZW50IGFsZ29yaXRobSAoUEZSQSkgd291bGQgbGlrZQordG8ga2VlcCBhcm91bmQsIGJ1dCBjYW4ndCBzaW5jZSB0aGVyZSBpc24ndCBlbm91Z2ggbWVtb3J5LiAgU28gd2hlbiB0aGUKK1BGUkEgImV2aWN0cyIgYSBwYWdlLCBpdCBmaXJzdCBhdHRlbXB0cyB0byB1c2UgY2xlYW5jYWNoZSBjb2RlIHRvCitwdXQgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoYXQgcGFnZSBpbnRvICJ0cmFuc2NlbmRlbnQgbWVtb3J5IiwgbWVtb3J5Cit0aGF0IGlzIG5vdCBkaXJlY3RseSBhY2Nlc3NpYmxlIG9yIGFkZHJlc3NhYmxlIGJ5IHRoZSBrZXJuZWwgYW5kIGlzCitvZiB1bmtub3duIGFuZCBwb3NzaWJseSB0aW1lLXZhcnlpbmcgc2l6ZS4KKworTGF0ZXIsIHdoZW4gYSBjbGVhbmNhY2hlLWVuYWJsZWQgZmlsZXN5c3RlbSB3aXNoZXMgdG8gYWNjZXNzIGEgcGFnZQoraW4gYSBmaWxlIG9uIGRpc2ssIGl0IGZpcnN0IGNoZWNrcyBjbGVhbmNhY2hlIHRvIHNlZSBpZiBpdCBhbHJlYWR5Citjb250YWlucyBpdDsgaWYgaXQgZG9lcywgdGhlIHBhZ2Ugb2YgZGF0YSBpcyBjb3BpZWQgaW50byB0aGUga2VybmVsCithbmQgYSBkaXNrIGFjY2VzcyBpcyBhdm9pZGVkLgorCitUcmFuc2NlbmRlbnQgbWVtb3J5ICJkcml2ZXJzIiBmb3IgY2xlYW5jYWNoZSBhcmUgY3VycmVudGx5IGltcGxlbWVudGVkCitpbiBYZW4gKHVzaW5nIGh5cGVydmlzb3IgbWVtb3J5KSBhbmQgemNhY2hlICh1c2luZyBpbi1rZXJuZWwgY29tcHJlc3NlZAorbWVtb3J5KSBhbmQgb3RoZXIgaW1wbGVtZW50YXRpb25zIGFyZSBpbiBkZXZlbG9wbWVudC4KKworRkFRcyBhcmUgaW5jbHVkZWQgYmVsb3cuCisKK0lNUExFTUVOVEFUSU9OIE9WRVJWSUVXCisKK0EgY2xlYW5jYWNoZSAiYmFja2VuZCIgdGhhdCBwcm92aWRlcyB0cmFuc2NlbmRlbnQgbWVtb3J5IHJlZ2lzdGVycyBpdHNlbGYKK3RvIHRoZSBrZXJuZWwncyBjbGVhbmNhY2hlICJmcm9udGVuZCIgYnkgY2FsbGluZyBjbGVhbmNhY2hlX3JlZ2lzdGVyX29wcywKK3Bhc3NpbmcgYSBwb2ludGVyIHRvIGEgY2xlYW5jYWNoZV9vcHMgc3RydWN0dXJlIHdpdGggZnVuY3Mgc2V0IGFwcHJvcHJpYXRlbHkuCitUaGUgZnVuY3Rpb25zIHByb3ZpZGVkIG11c3QgY29uZm9ybSB0byBjZXJ0YWluIHNlbWFudGljcyBhcyBmb2xsb3dzOgorCitNb3N0IGltcG9ydGFudCwgY2xlYW5jYWNoZSBpcyAiZXBoZW1lcmFsIi4gIFBhZ2VzIHdoaWNoIGFyZSBjb3BpZWQgaW50bworY2xlYW5jYWNoZSBoYXZlIGFuIGluZGVmaW5pdGUgbGlmZXRpbWUgd2hpY2ggaXMgY29tcGxldGVseSB1bmtub3dhYmxlCitieSB0aGUga2VybmVsIGFuZCBzbyBtYXkgb3IgbWF5IG5vdCBzdGlsbCBiZSBpbiBjbGVhbmNhY2hlIGF0IGFueSBsYXRlciB0aW1lLgorVGh1cywgYXMgaXRzIG5hbWUgaW1wbGllcywgY2xlYW5jYWNoZSBpcyBub3Qgc3VpdGFibGUgZm9yIGRpcnR5IHBhZ2VzLgorQ2xlYW5jYWNoZSBoYXMgY29tcGxldGUgZGlzY3JldGlvbiBvdmVyIHdoYXQgcGFnZXMgdG8gcHJlc2VydmUgYW5kIHdoYXQKK3BhZ2VzIHRvIGRpc2NhcmQgYW5kIHdoZW4uCisKK01vdW50aW5nIGEgY2xlYW5jYWNoZS1lbmFibGVkIGZpbGVzeXN0ZW0gc2hvdWxkIGNhbGwgImluaXRfZnMiIHRvIG9idGFpbiBhCitwb29sIGlkIHdoaWNoLCBpZiBwb3NpdGl2ZSwgbXVzdCBiZSBzYXZlZCBpbiB0aGUgZmlsZXN5c3RlbSdzIHN1cGVyYmxvY2s7CithIG5lZ2F0aXZlIHJldHVybiB2YWx1ZSBpbmRpY2F0ZXMgZmFpbHVyZS4gIEEgInB1dF9wYWdlIiB3aWxsIGNvcHkgYQorKHByZXN1bWFibHkgYWJvdXQtdG8tYmUtZXZpY3RlZCkgcGFnZSBpbnRvIGNsZWFuY2FjaGUgYW5kIGFzc29jaWF0ZSBpdCB3aXRoCit0aGUgcG9vbCBpZCwgYSBmaWxlIGtleSwgYW5kIGEgcGFnZSBpbmRleCBpbnRvIHRoZSBmaWxlLiAgKFRoZSBjb21iaW5hdGlvbgorb2YgYSBwb29sIGlkLCBhIGZpbGUga2V5LCBhbmQgYW4gaW5kZXggaXMgc29tZXRpbWVzIGNhbGxlZCBhICJoYW5kbGUiLikKK0EgImdldF9wYWdlIiB3aWxsIGNvcHkgdGhlIHBhZ2UsIGlmIGZvdW5kLCBmcm9tIGNsZWFuY2FjaGUgaW50byBrZXJuZWwgbWVtb3J5LgorQW4gImludmFsaWRhdGVfcGFnZSIgd2lsbCBlbnN1cmUgdGhlIHBhZ2Ugbm8gbG9uZ2VyIGlzIHByZXNlbnQgaW4gY2xlYW5jYWNoZTsKK2FuICJpbnZhbGlkYXRlX2lub2RlIiB3aWxsIGludmFsaWRhdGUgYWxsIHBhZ2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkCitmaWxlOyBhbmQsIHdoZW4gYSBmaWxlc3lzdGVtIGlzIHVubW91bnRlZCwgYW4gImludmFsaWRhdGVfZnMiIHdpbGwgaW52YWxpZGF0ZQorYWxsIHBhZ2VzIGluIGFsbCBmaWxlcyBzcGVjaWZpZWQgYnkgdGhlIGdpdmVuIHBvb2wgaWQgYW5kIGFsc28gc3VycmVuZGVyCit0aGUgcG9vbCBpZC4KKworQW4gImluaXRfc2hhcmVkX2ZzIiwgbGlrZSBpbml0X2ZzLCBvYnRhaW5zIGEgcG9vbCBpZCBidXQgdGVsbHMgY2xlYW5jYWNoZQordG8gdHJlYXQgdGhlIHBvb2wgYXMgc2hhcmVkIHVzaW5nIGEgMTI4LWJpdCBVVUlEIGFzIGEga2V5LiAgT24gc3lzdGVtcwordGhhdCBtYXkgcnVuIG11bHRpcGxlIGtlcm5lbHMgKHN1Y2ggYXMgaGFyZCBwYXJ0aXRpb25lZCBvciB2aXJ0dWFsaXplZAorc3lzdGVtcykgdGhhdCBtYXkgc2hhcmUgYSBjbHVzdGVyZWQgZmlsZXN5c3RlbSwgYW5kIHdoZXJlIGNsZWFuY2FjaGUKK21heSBiZSBzaGFyZWQgYW1vbmcgdGhvc2Uga2VybmVscywgY2FsbHMgdG8gaW5pdF9zaGFyZWRfZnMgdGhhdCBzcGVjaWZ5IHRoZQorc2FtZSBVVUlEIHdpbGwgcmVjZWl2ZSB0aGUgc2FtZSBwb29sIGlkLCB0aHVzIGFsbG93aW5nIHRoZSBwYWdlcyB0bworYmUgc2hhcmVkLiAgTm90ZSB0aGF0IGFueSBzZWN1cml0eSByZXF1aXJlbWVudHMgbXVzdCBiZSBpbXBvc2VkIG91dHNpZGUKK29mIHRoZSBrZXJuZWwgKGUuZy4gYnkgInRvb2xzIiB0aGF0IGNvbnRyb2wgY2xlYW5jYWNoZSkuICBPciBhCitjbGVhbmNhY2hlIGltcGxlbWVudGF0aW9uIGNhbiBzaW1wbHkgZGlzYWJsZSBzaGFyZWRfaW5pdCBieSBhbHdheXMKK3JldHVybmluZyBhIG5lZ2F0aXZlIHZhbHVlLgorCitJZiBhIGdldF9wYWdlIGlzIHN1Y2Nlc3NmdWwgb24gYSBub24tc2hhcmVkIHBvb2wsIHRoZSBwYWdlIGlzIGludmFsaWRhdGVkCisodGh1cyBtYWtpbmcgY2xlYW5jYWNoZSBhbiAiZXhjbHVzaXZlIiBjYWNoZSkuICBPbiBhIHNoYXJlZCBwb29sLCB0aGUgcGFnZQoraXMgTk9UIGludmFsaWRhdGVkIG9uIGEgc3VjY2Vzc2Z1bCBnZXRfcGFnZSBzbyB0aGF0IGl0IHJlbWFpbnMgYWNjZXNzaWJsZSB0bworb3RoZXIgc2hhcmVycy4gIFRoZSBrZXJuZWwgaXMgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIGNvaGVyZW5jeSBiZXR3ZWVuCitjbGVhbmNhY2hlIChzaGFyZWQgb3Igbm90KSwgdGhlIHBhZ2UgY2FjaGUsIGFuZCB0aGUgZmlsZXN5c3RlbSwgdXNpbmcKK2NsZWFuY2FjaGUgaW52YWxpZGF0ZSBvcGVyYXRpb25zIGFzIHJlcXVpcmVkLgorCitOb3RlIHRoYXQgY2xlYW5jYWNoZSBtdXN0IGVuZm9yY2UgcHV0LXB1dC1nZXQgY29oZXJlbmN5IGFuZCBnZXQtZ2V0Citjb2hlcmVuY3kuICBGb3IgdGhlIGZvcm1lciwgaWYgdHdvIHB1dHMgYXJlIG1hZGUgdG8gdGhlIHNhbWUgaGFuZGxlIGJ1dAord2l0aCBkaWZmZXJlbnQgZGF0YSwgc2F5IEFBQSBieSB0aGUgZmlyc3QgcHV0IGFuZCBCQkIgYnkgdGhlIHNlY29uZCwgYQorc3Vic2VxdWVudCBnZXQgY2FuIG5ldmVyIHJldHVybiB0aGUgc3RhbGUgZGF0YSAoQUFBKS4gIEZvciBnZXQtZ2V0IGNvaGVyZW5jeSwKK2lmIGEgZ2V0IGZvciBhIGdpdmVuIGhhbmRsZSBmYWlscywgc3Vic2VxdWVudCBnZXRzIGZvciB0aGF0IGhhbmRsZSB3aWxsCituZXZlciBzdWNjZWVkIHVubGVzcyBwcmVjZWRlZCBieSBhIHN1Y2Nlc3NmdWwgcHV0IHdpdGggdGhhdCBoYW5kbGUuCisKK0xhc3QsIGNsZWFuY2FjaGUgcHJvdmlkZXMgbm8gU01QIHNlcmlhbGl6YXRpb24gZ3VhcmFudGVlczsgaWYgdHdvCitkaWZmZXJlbnQgTGludXggdGhyZWFkcyBhcmUgc2ltdWx0YW5lb3VzbHkgcHV0dGluZyBhbmQgaW52YWxpZGF0aW5nIGEgcGFnZQord2l0aCB0aGUgc2FtZSBoYW5kbGUsIHRoZSByZXN1bHRzIGFyZSBpbmRldGVybWluYXRlLiAgQ2FsbGVycyBtdXN0Citsb2NrIHRoZSBwYWdlIHRvIGVuc3VyZSBzZXJpYWwgYmVoYXZpb3IuCisKK0NMRUFOQ0FDSEUgUEVSRk9STUFOQ0UgTUVUUklDUworCitJZiBwcm9wZXJseSBjb25maWd1cmVkLCBtb25pdG9yaW5nIG9mIGNsZWFuY2FjaGUgaXMgZG9uZSB2aWEgZGVidWdmcyBpbgordGhlIC9zeXMva2VybmVsL2RlYnVnL2NsZWFuY2FjaGUgZGlyZWN0b3J5LiAgVGhlIGVmZmVjdGl2ZW5lc3Mgb2YgY2xlYW5jYWNoZQorY2FuIGJlIG1lYXN1cmVkIChhY3Jvc3MgYWxsIGZpbGVzeXN0ZW1zKSB3aXRoOgorCitzdWNjX2dldHMJLSBudW1iZXIgb2YgZ2V0cyB0aGF0IHdlcmUgc3VjY2Vzc2Z1bAorZmFpbGVkX2dldHMJLSBudW1iZXIgb2YgZ2V0cyB0aGF0IGZhaWxlZAorcHV0cwkJLSBudW1iZXIgb2YgcHV0cyBhdHRlbXB0ZWQgKGFsbCAic3VjY2VlZCIpCitpbnZhbGlkYXRlcwktIG51bWJlciBvZiBpbnZhbGlkYXRlcyBhdHRlbXB0ZWQKKworQSBiYWNrZW5kIGltcGxlbWVudGF0aW9uIG1heSBwcm92aWRlIGFkZGl0aW9uYWwgbWV0cmljcy4KKworRkFRCisKKzEpIFdoZXJlJ3MgdGhlIHZhbHVlPyAoQW5kcmV3IE1vcnRvbikKKworQ2xlYW5jYWNoZSBwcm92aWRlcyBhIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIGJlbmVmaXQgdG8gbWFueSB3b3JrbG9hZHMKK2luIG1hbnkgZW52aXJvbm1lbnRzIHdpdGggbmVnbGlnaWJsZSBvdmVyaGVhZCBieSBpbXByb3ZpbmcgdGhlCitlZmZlY3RpdmVuZXNzIG9mIHRoZSBwYWdlY2FjaGUuICBDbGVhbiBwYWdlY2FjaGUgcGFnZXMgYXJlCitzYXZlZCBpbiB0cmFuc2NlbmRlbnQgbWVtb3J5IChSQU0gdGhhdCBpcyBvdGhlcndpc2Ugbm90IGRpcmVjdGx5CithZGRyZXNzYWJsZSB0byB0aGUga2VybmVsKTsgZmV0Y2hpbmcgdGhvc2UgcGFnZXMgbGF0ZXIgYXZvaWRzICJyZWZhdWx0cyIKK2FuZCB0aHVzIGRpc2sgcmVhZHMuCisKK0NsZWFuY2FjaGUgKGFuZCBpdHMgc2lzdGVyIGNvZGUgImZyb250c3dhcCIpIHByb3ZpZGUgaW50ZXJmYWNlcyBmb3IKK3RoaXMgdHJhbnNjZW5kZW50IG1lbW9yeSAoYWthICJ0bWVtIiksIHdoaWNoIGNvbmNlcHR1YWxseSBsaWVzIGJldHdlZW4KK2Zhc3Qga2VybmVsLWRpcmVjdGx5LWFkZHJlc3NhYmxlIFJBTSBhbmQgc2xvd2VyIERNQS9hc3luY2hyb25vdXMgZGV2aWNlcy4KK0Rpc2FsbG93aW5nIGRpcmVjdCBrZXJuZWwgb3IgdXNlcmxhbmQgcmVhZHMvd3JpdGVzIHRvIHRtZW0KK2lzIGlkZWFsIHdoZW4gZGF0YSBpcyB0cmFuc2Zvcm1lZCB0byBhIGRpZmZlcmVudCBmb3JtIGFuZCBzaXplIChzdWNoCithcyB3aXRoIGNvbXByZXNzaW9uKSBvciBzZWNyZXRseSBtb3ZlZCAoYXMgbWlnaHQgYmUgdXNlZnVsIGZvciB3cml0ZS0KK2JhbGFuY2luZyBmb3Igc29tZSBSQU0tbGlrZSBkZXZpY2VzKS4gIEV2aWN0ZWQgcGFnZS1jYWNoZSBwYWdlcyAoYW5kCitzd2FwIHBhZ2VzKSBhcmUgYSBncmVhdCB1c2UgZm9yIHRoaXMga2luZCBvZiBzbG93ZXItdGhhbi1SQU0tYnV0LW11Y2gtCitmYXN0ZXItdGhhbi1kaXNrIHRyYW5zY2VuZGVudCBtZW1vcnksIGFuZCB0aGUgY2xlYW5jYWNoZSAoYW5kIGZyb250c3dhcCkKKyJwYWdlLW9iamVjdC1vcmllbnRlZCIgc3BlY2lmaWNhdGlvbiBwcm92aWRlcyBhIG5pY2Ugd2F5IHRvIHJlYWQgYW5kCit3cml0ZSAtLSBhbmQgaW5kaXJlY3RseSAibmFtZSIgLS0gdGhlIHBhZ2VzLgorCitJbiB0aGUgdmlydHVhbCBjYXNlLCB0aGUgd2hvbGUgcG9pbnQgb2YgdmlydHVhbGl6YXRpb24gaXMgdG8gc3RhdGlzdGljYWxseQorbXVsdGlwbGV4IHBoeXNpY2FsIHJlc291cmNlcyBhY3Jvc3MgdGhlIHZhcnlpbmcgZGVtYW5kcyBvZiBtdWx0aXBsZQordmlydHVhbCBtYWNoaW5lcy4gIFRoaXMgaXMgcmVhbGx5IGhhcmQgdG8gZG8gd2l0aCBSQU0gYW5kIGVmZm9ydHMgdG8KK2RvIGl0IHdlbGwgd2l0aCBubyBrZXJuZWwgY2hhbmdlIGhhdmUgZXNzZW50aWFsbHkgZmFpbGVkIChleGNlcHQgaW4gc29tZQord2VsbC1wdWJsaWNpemVkIHNwZWNpYWwtY2FzZSB3b3JrbG9hZHMpLiAgQ2xlYW5jYWNoZSAtLSBhbmQgZnJvbnRzd2FwIC0tCit3aXRoIGEgZmFpcmx5IHNtYWxsIGltcGFjdCBvbiB0aGUga2VybmVsLCBwcm92aWRlIGEgaHVnZSBhbW91bnQKK29mIGZsZXhpYmlsaXR5IGZvciBtb3JlIGR5bmFtaWMsIGZsZXhpYmxlIFJBTSBtdWx0aXBsZXhpbmcuCitTcGVjaWZpY2FsbHksIHRoZSBYZW4gVHJhbnNjZW5kZW50IE1lbW9yeSBiYWNrZW5kIGFsbG93cyBvdGhlcndpc2UKKyJmYWxsb3ciIGh5cGVydmlzb3Itb3duZWQgUkFNIHRvIG5vdCBvbmx5IGJlICJ0aW1lLXNoYXJlZCIgYmV0d2VlbiBtdWx0aXBsZQordmlydHVhbCBtYWNoaW5lcywgYnV0IHRoZSBwYWdlcyBjYW4gYmUgY29tcHJlc3NlZCBhbmQgZGVkdXBsaWNhdGVkIHRvCitvcHRpbWl6ZSBSQU0gdXRpbGl6YXRpb24uICBBbmQgd2hlbiBndWVzdCBPUydzIGFyZSBpbmR1Y2VkIHRvIHN1cnJlbmRlcgordW5kZXJ1dGlsaXplZCBSQU0gKGUuZy4gd2l0aCAic2VsZi1iYWxsb29uaW5nIiksIHBhZ2UgY2FjaGUgcGFnZXMKK2FyZSB0aGUgZmlyc3QgdG8gZ28sIGFuZCBjbGVhbmNhY2hlIGFsbG93cyB0aG9zZSBwYWdlcyB0byBiZQorc2F2ZWQgYW5kIHJlY2xhaW1lZCBpZiBvdmVyYWxsIGhvc3Qgc3lzdGVtIG1lbW9yeSBjb25kaXRpb25zIGFsbG93LgorCitBbmQgdGhlIGlkZW50aWNhbCBpbnRlcmZhY2UgdXNlZCBmb3IgY2xlYW5jYWNoZSBjYW4gYmUgdXNlZCBpbgorcGh5c2ljYWwgc3lzdGVtcyBhcyB3ZWxsLiAgVGhlIHpjYWNoZSBkcml2ZXIgYWN0cyBhcyBhIG1lbW9yeS1odW5ncnkKK2RldmljZSB0aGF0IHN0b3JlcyBwYWdlcyBvZiBkYXRhIGluIGEgY29tcHJlc3NlZCBzdGF0ZS4gIEFuZAordGhlIHByb3Bvc2VkICJSQU1zdGVyIiBkcml2ZXIgc2hhcmVzIFJBTSBhY3Jvc3MgbXVsdGlwbGUgcGh5c2ljYWwKK3N5c3RlbXMuCisKKzIpIFdoeSBkb2VzIGNsZWFuY2FjaGUgaGF2ZSBpdHMgc3RpY2t5IGZpbmdlcnMgc28gZGVlcCBpbnNpZGUgdGhlCisgICBmaWxlc3lzdGVtcyBhbmQgVkZTPyAoQW5kcmV3IE1vcnRvbiBhbmQgQ2hyaXN0b3BoIEhlbGx3aWcpCisKK1RoZSBjb3JlIGhvb2tzIGZvciBjbGVhbmNhY2hlIGluIFZGUyBhcmUgaW4gbW9zdCBjYXNlcyBhIHNpbmdsZSBsaW5lCithbmQgdGhlIG1pbmltdW0gc2V0IGFyZSBwbGFjZWQgcHJlY2lzZWx5IHdoZXJlIG5lZWRlZCB0byBtYWludGFpbgorY29oZXJlbmN5ICh2aWEgY2xlYW5jYWNoZV9pbnZhbGlkYXRlIG9wZXJhdGlvbnMpIGJldHdlZW4gY2xlYW5jYWNoZSwKK3RoZSBwYWdlIGNhY2hlLCBhbmQgZGlzay4gIEFsbCBob29rcyBjb21waWxlIGludG8gbm90aGluZ25lc3MgaWYKK2NsZWFuY2FjaGUgaXMgY29uZmlnJ2VkIG9mZiBhbmQgdHVybiBpbnRvIGEgZnVuY3Rpb24tcG9pbnRlci0KK2NvbXBhcmUtdG8tTlVMTCBpZiBjb25maWcnZWQgb24gYnV0IG5vIGJhY2tlbmQgY2xhaW1zIHRoZSBvcHMKK2Z1bmN0aW9ucywgb3IgdG8gYSBjb21wYXJlLXN0cnVjdC1lbGVtZW50LXRvLW5lZ2F0aXZlIGlmIGEKK2JhY2tlbmQgY2xhaW1zIHRoZSBvcHMgZnVuY3Rpb25zIGJ1dCBhIGZpbGVzeXN0ZW0gZG9lc24ndCBlbmFibGUKK2NsZWFuY2FjaGUuCisKK1NvbWUgZmlsZXN5c3RlbXMgYXJlIGJ1aWx0IGVudGlyZWx5IG9uIHRvcCBvZiBWRlMgYW5kIHRoZSBob29rcworaW4gVkZTIGFyZSBzdWZmaWNpZW50LCBzbyBkb24ndCByZXF1aXJlIGFuICJpbml0X2ZzIiBob29rOyB0aGUKK2luaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgY2xlYW5jYWNoZSBkaWRuJ3QgcHJvdmlkZSB0aGlzIGhvb2suCitCdXQgZm9yIHNvbWUgZmlsZXN5c3RlbXMgKHN1Y2ggYXMgYnRyZnMpLCB0aGUgVkZTIGhvb2tzIGFyZQoraW5jb21wbGV0ZSBhbmQgb25lIG9yIG1vcmUgaG9va3MgaW4gZnMtc3BlY2lmaWMgY29kZSBhcmUgcmVxdWlyZWQuCitBbmQgZm9yIHNvbWUgb3RoZXIgZmlsZXN5c3RlbXMsIHN1Y2ggYXMgdG1wZnMsIGNsZWFuY2FjaGUgbWF5CitiZSBjb3VudGVycHJvZHVjdGl2ZS4gIFNvIGl0IHNlZW1lZCBwcnVkZW50IHRvIHJlcXVpcmUgYSBmaWxlc3lzdGVtCit0byAib3B0IGluIiB0byB1c2UgY2xlYW5jYWNoZSwgd2hpY2ggcmVxdWlyZXMgYWRkaW5nIGEgaG9vayBpbgorZWFjaCBmaWxlc3lzdGVtLiAgTm90IGFsbCBmaWxlc3lzdGVtcyBhcmUgc3VwcG9ydGVkIGJ5IGNsZWFuY2FjaGUKK29ubHkgYmVjYXVzZSB0aGV5IGhhdmVuJ3QgYmVlbiB0ZXN0ZWQuICBUaGUgZXhpc3Rpbmcgc2V0IHNob3VsZAorYmUgc3VmZmljaWVudCB0byB2YWxpZGF0ZSB0aGUgY29uY2VwdCwgdGhlIG9wdC1pbiBhcHByb2FjaCBtZWFucwordGhhdCB1bnRlc3RlZCBmaWxlc3lzdGVtcyBhcmUgbm90IGFmZmVjdGVkLCBhbmQgdGhlIGhvb2tzIGluIHRoZQorZXhpc3RpbmcgZmlsZXN5c3RlbXMgc2hvdWxkIG1ha2UgaXQgdmVyeSBlYXN5IHRvIGFkZCBtb3JlCitmaWxlc3lzdGVtcyBpbiB0aGUgZnV0dXJlLgorCitUaGUgdG90YWwgaW1wYWN0IG9mIHRoZSBob29rcyB0byBleGlzdGluZyBmcyBhbmQgbW0gZmlsZXMgaXMgb25seQorYWJvdXQgNDAgbGluZXMgYWRkZWQgKG5vdCBjb3VudGluZyBjb21tZW50cyBhbmQgYmxhbmsgbGluZXMpLgorCiszKSBXaHkgbm90IG1ha2UgY2xlYW5jYWNoZSBhc3luY2hyb25vdXMgYW5kIGJhdGNoZWQgc28gaXQgY2FuCisgICBtb3JlIGVhc2lseSBpbnRlcmZhY2Ugd2l0aCByZWFsIGRldmljZXMgd2l0aCBETUEgaW5zdGVhZAorICAgb2YgY29weWluZyBlYWNoIGluZGl2aWR1YWwgcGFnZT8gKE1pbmNoYW4gS2ltKQorCitUaGUgb25lLXBhZ2UtYXQtYS10aW1lIGNvcHkgc2VtYW50aWNzIHNpbXBsaWZpZXMgdGhlIGltcGxlbWVudGF0aW9uCitvbiBib3RoIHRoZSBmcm9udGVuZCBhbmQgYmFja2VuZCBhbmQgYWxzbyBhbGxvd3MgdGhlIGJhY2tlbmQgdG8KK2RvIGZhbmN5IHRoaW5ncyBvbi10aGUtZmx5IGxpa2UgcGFnZSBjb21wcmVzc2lvbiBhbmQKK3BhZ2UgZGVkdXBsaWNhdGlvbi4gIEFuZCBzaW5jZSB0aGUgZGF0YSBpcyAiZ29uZSIgKGNvcGllZCBpbnRvL291dAorb2YgdGhlIHBhZ2VmcmFtZSkgYmVmb3JlIHRoZSBjbGVhbmNhY2hlIGdldC9wdXQgY2FsbCByZXR1cm5zLAorYSBncmVhdCBkZWFsIG9mIHJhY2UgY29uZGl0aW9ucyBhbmQgcG90ZW50aWFsIGNvaGVyZW5jeSBpc3N1ZXMKK2FyZSBhdm9pZGVkLiAgV2hpbGUgdGhlIGludGVyZmFjZSBzZWVtcyBvZGQgZm9yIGEgInJlYWwgZGV2aWNlIgorb3IgZm9yIHJlYWwga2VybmVsLWFkZHJlc3NhYmxlIFJBTSwgaXQgbWFrZXMgcGVyZmVjdCBzZW5zZSBmb3IKK3RyYW5zY2VuZGVudCBtZW1vcnkuCisKKzQpIFdoeSBpcyBub24tc2hhcmVkIGNsZWFuY2FjaGUgImV4Y2x1c2l2ZSI/ICBBbmQgd2hlcmUgaXMgdGhlCisgICBwYWdlICJpbnZhbGlkYXRlZCIgYWZ0ZXIgYSAiZ2V0Ij8gKE1pbmNoYW4gS2ltKQorCitUaGUgbWFpbiByZWFzb24gaXMgdG8gZnJlZSB1cCBzcGFjZSBpbiB0cmFuc2NlbmRlbnQgbWVtb3J5IGFuZAordG8gYXZvaWQgdW5uZWNlc3NhcnkgY2xlYW5jYWNoZV9pbnZhbGlkYXRlIGNhbGxzLiAgSWYgeW91IHdhbnQgaW5jbHVzaXZlLAordGhlIHBhZ2UgY2FuIGJlICJwdXQiIGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0aGUgImdldCIuICBJZgorcHV0LWFmdGVyLWdldCBmb3IgaW5jbHVzaXZlIGJlY29tZXMgY29tbW9uLCB0aGUgaW50ZXJmYWNlIGNvdWxkCitiZSBlYXNpbHkgZXh0ZW5kZWQgdG8gYWRkIGEgImdldF9ub19pbnZhbGlkYXRlIiBjYWxsLgorCitUaGUgaW52YWxpZGF0ZSBpcyBkb25lIGJ5IHRoZSBjbGVhbmNhY2hlIGJhY2tlbmQgaW1wbGVtZW50YXRpb24uCisKKzUpIFdoYXQncyB0aGUgcGVyZm9ybWFuY2UgaW1wYWN0PworCitQZXJmb3JtYW5jZSBhbmFseXNpcyBoYXMgYmVlbiBwcmVzZW50ZWQgYXQgT0xTJzA5IGFuZCBMQ0EnMTAuCitCcmllZmx5LCBwZXJmb3JtYW5jZSBnYWlucyBjYW4gYmUgc2lnbmlmaWNhbnQgb24gbW9zdCB3b3JrbG9hZHMsCitlc3BlY2lhbGx5IHdoZW4gbWVtb3J5IHByZXNzdXJlIGlzIGhpZ2ggKGUuZy4gd2hlbiBSQU0gaXMKK292ZXJjb21taXR0ZWQgaW4gYSB2aXJ0dWFsIHdvcmtsb2FkKTsgYW5kIGJlY2F1c2UgdGhlIGhvb2tzIGFyZQoraW52b2tlZCBwcmltYXJpbHkgaW4gcGxhY2Ugb2Ygb3IgaW4gYWRkaXRpb24gdG8gYSBkaXNrIHJlYWQvd3JpdGUsCitvdmVyaGVhZCBpcyBuZWdsaWdpYmxlIGV2ZW4gaW4gd29yc3QgY2FzZSB3b3JrbG9hZHMuICBCYXNpY2FsbHkKK2NsZWFuY2FjaGUgcmVwbGFjZXMgSS9PIHdpdGggbWVtb3J5LWNvcHktQ1BVLW92ZXJoZWFkOyBvbiBvbGRlcgorc2luZ2xlLWNvcmUgc3lzdGVtcyB3aXRoIHNsb3cgbWVtb3J5LWNvcHkgc3BlZWRzLCBjbGVhbmNhY2hlCitoYXMgbGl0dGxlIHZhbHVlLCBidXQgaW4gbmV3ZXIgbXVsdGljb3JlIG1hY2hpbmVzLCBlc3BlY2lhbGx5Citjb25zb2xpZGF0ZWQvdmlydHVhbGl6ZWQgbWFjaGluZXMsIGl0IGhhcyBncmVhdCB2YWx1ZS4KKworNikgSG93IGRvIEkgYWRkIGNsZWFuY2FjaGUgc3VwcG9ydCBmb3IgZmlsZXN5c3RlbSBYPyAoQm9heiBIYXJyYXNoKQorCitGaWxlc3lzdGVtcyB0aGF0IGFyZSB3ZWxsLWJlaGF2ZWQgYW5kIGNvbmZvcm0gdG8gY2VydGFpbgorcmVzdHJpY3Rpb25zIGNhbiB1dGlsaXplIGNsZWFuY2FjaGUgc2ltcGx5IGJ5IG1ha2luZyBhIGNhbGwgdG8KK2NsZWFuY2FjaGVfaW5pdF9mcyBhdCBtb3VudCB0aW1lLiAgVW51c3VhbCwgbWlzYmVoYXZpbmcsIG9yCitwb29ybHkgbGF5ZXJlZCBmaWxlc3lzdGVtcyBtdXN0IGVpdGhlciBhZGQgYWRkaXRpb25hbCBob29rcworYW5kL29yIHVuZGVyZ28gZXh0ZW5zaXZlIGFkZGl0aW9uYWwgdGVzdGluZy4uLiBvciBzaG91bGQganVzdAorbm90IGVuYWJsZSB0aGUgb3B0aW9uYWwgY2xlYW5jYWNoZS4KKworU29tZSBwb2ludHMgZm9yIGEgZmlsZXN5c3RlbSB0byBjb25zaWRlcjoKKworLSBUaGUgRlMgc2hvdWxkIGJlIGJsb2NrLWRldmljZS1iYXNlZCAoZS5nLiBhIHJhbS1iYXNlZCBGUyBzdWNoCisgIGFzIHRtcGZzIHNob3VsZCBub3QgZW5hYmxlIGNsZWFuY2FjaGUpCistIFRvIGVuc3VyZSBjb2hlcmVuY3kvY29ycmVjdG5lc3MsIHRoZSBGUyBtdXN0IGVuc3VyZSB0aGF0IGFsbAorICBmaWxlIHJlbW92YWwgb3IgdHJ1bmNhdGlvbiBvcGVyYXRpb25zIGVpdGhlciBnbyB0aHJvdWdoIFZGUyBvcgorICBhZGQgaG9va3MgdG8gZG8gdGhlIGVxdWl2YWxlbnQgY2xlYW5jYWNoZSAiaW52YWxpZGF0ZSIgb3BlcmF0aW9ucworLSBUbyBlbnN1cmUgY29oZXJlbmN5L2NvcnJlY3RuZXNzLCBlaXRoZXIgaW5vZGUgbnVtYmVycyBtdXN0CisgIGJlIHVuaXF1ZSBhY3Jvc3MgdGhlIGxpZmV0aW1lIG9mIHRoZSBvbi1kaXNrIGZpbGUgT1IgdGhlCisgIEZTIG11c3QgcHJvdmlkZSBhbiAiZW5jb2RlX2ZoIiBmdW5jdGlvbi4KKy0gVGhlIEZTIG11c3QgY2FsbCB0aGUgVkZTIHN1cGVyYmxvY2sgYWxsb2MgYW5kIGRlYWN0aXZhdGUgcm91dGluZXMKKyAgb3IgYWRkIGhvb2tzIHRvIGRvIHRoZSBlcXVpdmFsZW50IGNsZWFuY2FjaGUgY2FsbHMgZG9uZSB0aGVyZS4KKy0gVG8gbWF4aW1pemUgcGVyZm9ybWFuY2UsIGFsbCBwYWdlcyBmZXRjaGVkIGZyb20gdGhlIEZTIHNob3VsZAorICBnbyB0aHJvdWdoIHRoZSBkb19tcGFnX3JlYWRwYWdlIHJvdXRpbmUgb3IgdGhlIEZTIHNob3VsZCBhZGQKKyAgaG9va3MgdG8gZG8gdGhlIGVxdWl2YWxlbnQgKGNmLiBidHJmcykKKy0gQ3VycmVudGx5LCB0aGUgRlMgYmxvY2tzaXplIG11c3QgYmUgdGhlIHNhbWUgYXMgUEFHRVNJWkUuICBUaGlzCisgIGlzIG5vdCBhbiBhcmNoaXRlY3R1cmFsIHJlc3RyaWN0aW9uLCBidXQgbm8gYmFja2VuZHMgY3VycmVudGx5CisgIHN1cHBvcnQgYW55dGhpbmcgZGlmZmVyZW50LgorLSBBIGNsdXN0ZXJlZCBGUyBzaG91bGQgaW52b2tlIHRoZSAic2hhcmVkX2luaXRfZnMiIGNsZWFuY2FjaGUKKyAgaG9vayB0byBnZXQgYmVzdCBwZXJmb3JtYW5jZSBmb3Igc29tZSBiYWNrZW5kcy4KKworNykgV2h5IG5vdCB1c2UgdGhlIEtWQSBvZiB0aGUgaW5vZGUgYXMgdGhlIGtleT8gKENocmlzdG9waCBIZWxsd2lnKQorCitJZiBjbGVhbmNhY2hlIHdvdWxkIHVzZSB0aGUgaW5vZGUgdmlydHVhbCBhZGRyZXNzIGluc3RlYWQgb2YKK2lub2RlL2ZpbGVoYW5kbGUsIHRoZSBwb29sIGlkIGNvdWxkIGJlIGVsaW1pbmF0ZWQuICBCdXQsIHRoaXMKK3dvbid0IHdvcmsgYmVjYXVzZSBjbGVhbmNhY2hlIHJldGFpbnMgcGFnZWNhY2hlIGRhdGEgcGFnZXMKK3BlcnNpc3RlbnRseSBldmVuIHdoZW4gdGhlIGlub2RlIGhhcyBiZWVuIHBydW5lZCBmcm9tIHRoZQoraW5vZGUgdW51c2VkIGxpc3QsIGFuZCBvbmx5IGludmFsaWRhdGVzIHRoZSBkYXRhIHBhZ2UgaWYgdGhlIGZpbGUKK2dldHMgcmVtb3ZlZC90cnVuY2F0ZWQuICBTbyBpZiBjbGVhbmNhY2hlIHVzZWQgdGhlIGlub2RlIGt2YSwKK3RoZXJlIHdvdWxkIGJlIHBvdGVudGlhbCBjb2hlcmVuY3kgaXNzdWVzIGlmL3doZW4gdGhlIGlub2RlCitrdmEgaXMgcmV1c2VkIGZvciBhIGRpZmZlcmVudCBmaWxlLiAgQWx0ZXJuYXRlbHksIGlmIGNsZWFuY2FjaGUKK2ludmFsaWRhdGVkIHRoZSBwYWdlcyB3aGVuIHRoZSBpbm9kZSBrdmEgd2FzIGZyZWVkLCBtdWNoIG9mIHRoZSB2YWx1ZQorb2YgY2xlYW5jYWNoZSB3b3VsZCBiZSBsb3N0IGJlY2F1c2UgdGhlIGNhY2hlIG9mIHBhZ2VzIGluIGNsZWFuYWNoZQoraXMgcG90ZW50aWFsbHkgbXVjaCBsYXJnZXIgdGhhbiB0aGUga2VybmVsIHBhZ2VjYWNoZSBhbmQgaXMgbW9zdAordXNlZnVsIGlmIHRoZSBwYWdlcyBzdXJ2aXZlIGlub2RlIGNhY2hlIHJlbW92YWwuCisKKzgpIFdoeSBpcyBhIGdsb2JhbCB2YXJpYWJsZSByZXF1aXJlZD8KKworVGhlIGNsZWFuY2FjaGVfZW5hYmxlZCBmbGFnIGlzIGNoZWNrZWQgaW4gYWxsIG9mIHRoZSBmcmVxdWVudGx5LXVzZWQKK2NsZWFuY2FjaGUgaG9va3MuICBUaGUgYWx0ZXJuYXRpdmUgaXMgYSBmdW5jdGlvbiBjYWxsIHRvIGNoZWNrIGEgc3RhdGljCit2YXJpYWJsZS4gU2luY2UgY2xlYW5jYWNoZSBpcyBlbmFibGVkIGR5bmFtaWNhbGx5IGF0IHJ1bnRpbWUsIHN5c3RlbXMKK3RoYXQgZG9uJ3QgZW5hYmxlIGNsZWFuY2FjaGUgd291bGQgc3VmZmVyIHRob3VzYW5kcyAocG9zc2libHkKK3RlbnMtb2YtdGhvdXNhbmRzKSBvZiB1bm5lY2Vzc2FyeSBmdW5jdGlvbiBjYWxscyBwZXIgc2Vjb25kLiAgU28gdGhlCitnbG9iYWwgdmFyaWFibGUgYWxsb3dzIGNsZWFuY2FjaGUgdG8gYmUgZW5hYmxlZCBieSBkZWZhdWx0IGF0IGNvbXBpbGUKK3RpbWUsIGJ1dCBoYXZlIGluc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wYWN0IHdoZW4gY2xlYW5jYWNoZSByZW1haW5zCitkaXNhYmxlZCBhdCBydW50aW1lLgorCis5KSBEb2VzIGNsZWFuYWNoZSB3b3JrIHdpdGggS1ZNPworCitUaGUgbWVtb3J5IG1vZGVsIG9mIEtWTSBpcyBzdWZmaWNpZW50bHkgZGlmZmVyZW50IHRoYXQgYSBjbGVhbmNhY2hlCitiYWNrZW5kIG1heSBoYXZlIGxlc3MgdmFsdWUgZm9yIEtWTS4gIFRoaXMgcmVtYWlucyB0byBiZSB0ZXN0ZWQsCitlc3BlY2lhbGx5IGluIGFuIG92ZXJjb21taXR0ZWQgc3lzdGVtLgorCisxMCkgRG9lcyBjbGVhbmNhY2hlIHdvcmsgaW4gdXNlcnNwYWNlPyAgSXQgc291bmRzIHVzZWZ1bCBmb3IKKyAgIG1lbW9yeSBodW5ncnkgY2FjaGVzIGxpa2Ugd2ViIGJyb3dzZXJzLiAgKEphbWllIExva2llcikKKworTm8gcGxhbnMgeWV0LCB0aG91Z2ggd2UgYWdyZWUgaXQgc291bmRzIHVzZWZ1bCwgYXQgbGVhc3QgZm9yCithcHBzIHRoYXQgYnlwYXNzIHRoZSBwYWdlIGNhY2hlIChlLmcuIE9fRElSRUNUKS4KKworTGFzdCB1cGRhdGVkOiBEYW4gTWFnZW5oZWltZXIsIEFwcmlsIDEzIDIwMTEKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdm0vZnJvbnRzd2FwLnR4dCBiL0RvY3VtZW50YXRpb24vdm0vZnJvbnRzd2FwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzFhMDE5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92bS9mcm9udHN3YXAudHh0CkBAIC0wLDAgKzEsMjc4IEBACitGcm9udHN3YXAgcHJvdmlkZXMgYSAidHJhbnNjZW5kZW50IG1lbW9yeSIgaW50ZXJmYWNlIGZvciBzd2FwIHBhZ2VzLgorSW4gc29tZSBlbnZpcm9ubWVudHMsIGRyYW1hdGljIHBlcmZvcm1hbmNlIHNhdmluZ3MgbWF5IGJlIG9idGFpbmVkIGJlY2F1c2UKK3N3YXBwZWQgcGFnZXMgYXJlIHNhdmVkIGluIFJBTSAob3IgYSBSQU0tbGlrZSBkZXZpY2UpIGluc3RlYWQgb2YgYSBzd2FwIGRpc2suCisKKyhOb3RlLCBmcm9udHN3YXAgLS0gYW5kIGNsZWFuY2FjaGUgKG1lcmdlZCBhdCAzLjApIC0tIGFyZSB0aGUgImZyb250ZW5kcyIKK2FuZCB0aGUgb25seSBuZWNlc3NhcnkgY2hhbmdlcyB0byB0aGUgY29yZSBrZXJuZWwgZm9yIHRyYW5zY2VuZGVudCBtZW1vcnk7CithbGwgb3RoZXIgc3VwcG9ydGluZyBjb2RlIC0tIHRoZSAiYmFja2VuZHMiIC0tIGlzIGltcGxlbWVudGVkIGFzIGRyaXZlcnMuCitTZWUgdGhlIExXTi5uZXQgYXJ0aWNsZSAiVHJhbnNjZW5kZW50IG1lbW9yeSBpbiBhIG51dHNoZWxsIiBmb3IgYSBkZXRhaWxlZAorb3ZlcnZpZXcgb2YgZnJvbnRzd2FwIGFuZCByZWxhdGVkIGtlcm5lbCBwYXJ0czoKK2h0dHBzOi8vbHduLm5ldC9BcnRpY2xlcy80NTQ3OTUvICkKKworRnJvbnRzd2FwIGlzIHNvIG5hbWVkIGJlY2F1c2UgaXQgY2FuIGJlIHRob3VnaHQgb2YgYXMgdGhlIG9wcG9zaXRlIG9mCithICJiYWNraW5nIiBzdG9yZSBmb3IgYSBzd2FwIGRldmljZS4gIFRoZSBzdG9yYWdlIGlzIGFzc3VtZWQgdG8gYmUKK2Egc3luY2hyb25vdXMgY29uY3VycmVuY3ktc2FmZSBwYWdlLW9yaWVudGVkICJwc2V1ZG8tUkFNIGRldmljZSIgY29uZm9ybWluZwordG8gdGhlIHJlcXVpcmVtZW50cyBvZiB0cmFuc2NlbmRlbnQgbWVtb3J5IChzdWNoIGFzIFhlbidzICJ0bWVtIiwgb3IKK2luLWtlcm5lbCBjb21wcmVzc2VkIG1lbW9yeSwgYWthICJ6Y2FjaGUiLCBvciBmdXR1cmUgUkFNLWxpa2UgZGV2aWNlcyk7Cit0aGlzIHBzZXVkby1SQU0gZGV2aWNlIGlzIG5vdCBkaXJlY3RseSBhY2Nlc3NpYmxlIG9yIGFkZHJlc3NhYmxlIGJ5IHRoZQora2VybmVsIGFuZCBpcyBvZiB1bmtub3duIGFuZCBwb3NzaWJseSB0aW1lLXZhcnlpbmcgc2l6ZS4gIFRoZSBkcml2ZXIKK2xpbmtzIGl0c2VsZiB0byBmcm9udHN3YXAgYnkgY2FsbGluZyBmcm9udHN3YXBfcmVnaXN0ZXJfb3BzIHRvIHNldCB0aGUKK2Zyb250c3dhcF9vcHMgZnVuY3MgYXBwcm9wcmlhdGVseSBhbmQgdGhlIGZ1bmN0aW9ucyBpdCBwcm92aWRlcyBtdXN0Citjb25mb3JtIHRvIGNlcnRhaW4gcG9saWNpZXMgYXMgZm9sbG93czoKKworQW4gImluaXQiIHByZXBhcmVzIHRoZSBkZXZpY2UgdG8gcmVjZWl2ZSBmcm9udHN3YXAgcGFnZXMgYXNzb2NpYXRlZAord2l0aCB0aGUgc3BlY2lmaWVkIHN3YXAgZGV2aWNlIG51bWJlciAoYWthICJ0eXBlIikuICBBICJzdG9yZSIgd2lsbAorY29weSB0aGUgcGFnZSB0byB0cmFuc2NlbmRlbnQgbWVtb3J5IGFuZCBhc3NvY2lhdGUgaXQgd2l0aCB0aGUgdHlwZSBhbmQKK29mZnNldCBhc3NvY2lhdGVkIHdpdGggdGhlIHBhZ2UuIEEgImxvYWQiIHdpbGwgY29weSB0aGUgcGFnZSwgaWYgZm91bmQsCitmcm9tIHRyYW5zY2VuZGVudCBtZW1vcnkgaW50byBrZXJuZWwgbWVtb3J5LCBidXQgd2lsbCBOT1QgcmVtb3ZlIHRoZSBwYWdlCitmcm9tIHRyYW5zY2VuZGVudCBtZW1vcnkuICBBbiAiaW52YWxpZGF0ZV9wYWdlIiB3aWxsIHJlbW92ZSB0aGUgcGFnZQorZnJvbSB0cmFuc2NlbmRlbnQgbWVtb3J5IGFuZCBhbiAiaW52YWxpZGF0ZV9hcmVhIiB3aWxsIHJlbW92ZSBBTEwgcGFnZXMKK2Fzc29jaWF0ZWQgd2l0aCB0aGUgc3dhcCB0eXBlIChlLmcuLCBsaWtlIHN3YXBvZmYpIGFuZCBub3RpZnkgdGhlICJkZXZpY2UiCit0byByZWZ1c2UgZnVydGhlciBzdG9yZXMgd2l0aCB0aGF0IHN3YXAgdHlwZS4KKworT25jZSBhIHBhZ2UgaXMgc3VjY2Vzc2Z1bGx5IHN0b3JlZCwgYSBtYXRjaGluZyBsb2FkIG9uIHRoZSBwYWdlIHdpbGwgbm9ybWFsbHkKK3N1Y2NlZWQuICBTbyB3aGVuIHRoZSBrZXJuZWwgZmluZHMgaXRzZWxmIGluIGEgc2l0dWF0aW9uIHdoZXJlIGl0IG5lZWRzCit0byBzd2FwIG91dCBhIHBhZ2UsIGl0IGZpcnN0IGF0dGVtcHRzIHRvIHVzZSBmcm9udHN3YXAuICBJZiB0aGUgc3RvcmUgcmV0dXJucworc3VjY2VzcywgdGhlIGRhdGEgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHNhdmVkIHRvIHRyYW5zY2VuZGVudCBtZW1vcnkgYW5kCithIGRpc2sgd3JpdGUgYW5kLCBpZiB0aGUgZGF0YSBpcyBsYXRlciByZWFkIGJhY2ssIGEgZGlzayByZWFkIGFyZSBhdm9pZGVkLgorSWYgYSBzdG9yZSByZXR1cm5zIGZhaWx1cmUsIHRyYW5zY2VuZGVudCBtZW1vcnkgaGFzIHJlamVjdGVkIHRoZSBkYXRhLCBhbmQgdGhlCitwYWdlIGNhbiBiZSB3cml0dGVuIHRvIHN3YXAgYXMgdXN1YWwuCisKK0lmIGEgYmFja2VuZCBjaG9vc2VzLCBmcm9udHN3YXAgY2FuIGJlIGNvbmZpZ3VyZWQgYXMgYSAid3JpdGV0aHJvdWdoCitjYWNoZSIgYnkgY2FsbGluZyBmcm9udHN3YXBfd3JpdGV0aHJvdWdoKCkuICBJbiB0aGlzIG1vZGUsIHRoZSByZWR1Y3Rpb24KK2luIHN3YXAgZGV2aWNlIHdyaXRlcyBpcyBsb3N0IChhbmQgYWxzbyBhIG5vbi10cml2aWFsIHBlcmZvcm1hbmNlIGFkdmFudGFnZSkKK2luIG9yZGVyIHRvIGFsbG93IHRoZSBiYWNrZW5kIHRvIGFyYml0cmFyaWx5ICJyZWNsYWltIiBzcGFjZSB1c2VkIHRvCitzdG9yZSBmcm9udHN3YXAgcGFnZXMgdG8gbW9yZSBjb21wbGV0ZWx5IG1hbmFnZSBpdHMgbWVtb3J5IHVzYWdlLgorCitOb3RlIHRoYXQgaWYgYSBwYWdlIGlzIHN0b3JlZCBhbmQgdGhlIHBhZ2UgYWxyZWFkeSBleGlzdHMgaW4gdHJhbnNjZW5kZW50IG1lbW9yeQorKGEgImR1cGxpY2F0ZSIgc3RvcmUpLCBlaXRoZXIgdGhlIHN0b3JlIHN1Y2NlZWRzIGFuZCB0aGUgZGF0YSBpcyBvdmVyd3JpdHRlbiwKK29yIHRoZSBzdG9yZSBmYWlscyBBTkQgdGhlIHBhZ2UgaXMgaW52YWxpZGF0ZWQuICBUaGlzIGVuc3VyZXMgc3RhbGUgZGF0YSBtYXkKK25ldmVyIGJlIG9idGFpbmVkIGZyb20gZnJvbnRzd2FwLgorCitJZiBwcm9wZXJseSBjb25maWd1cmVkLCBtb25pdG9yaW5nIG9mIGZyb250c3dhcCBpcyBkb25lIHZpYSBkZWJ1Z2ZzIGluCit0aGUgL3N5cy9rZXJuZWwvZGVidWcvZnJvbnRzd2FwIGRpcmVjdG9yeS4gIFRoZSBlZmZlY3RpdmVuZXNzIG9mCitmcm9udHN3YXAgY2FuIGJlIG1lYXN1cmVkIChhY3Jvc3MgYWxsIHN3YXAgZGV2aWNlcykgd2l0aDoKKworZmFpbGVkX3N0b3JlcwktIGhvdyBtYW55IHN0b3JlIGF0dGVtcHRzIGhhdmUgZmFpbGVkCitsb2FkcwkJLSBob3cgbWFueSBsb2FkcyB3ZXJlIGF0dGVtcHRlZCAoYWxsIHNob3VsZCBzdWNjZWVkKQorc3VjY19zdG9yZXMJLSBob3cgbWFueSBzdG9yZSBhdHRlbXB0cyBoYXZlIHN1Y2NlZWRlZAoraW52YWxpZGF0ZXMJLSBob3cgbWFueSBpbnZhbGlkYXRlcyB3ZXJlIGF0dGVtcHRlZAorCitBIGJhY2tlbmQgaW1wbGVtZW50YXRpb24gbWF5IHByb3ZpZGUgYWRkaXRpb25hbCBtZXRyaWNzLgorCitGQVEKKworMSkgV2hlcmUncyB0aGUgdmFsdWU/CisKK1doZW4gYSB3b3JrbG9hZCBzdGFydHMgc3dhcHBpbmcsIHBlcmZvcm1hbmNlIGZhbGxzIHRocm91Z2ggdGhlIGZsb29yLgorRnJvbnRzd2FwIHNpZ25pZmljYW50bHkgaW5jcmVhc2VzIHBlcmZvcm1hbmNlIGluIG1hbnkgc3VjaCB3b3JrbG9hZHMgYnkKK3Byb3ZpZGluZyBhIGNsZWFuLCBkeW5hbWljIGludGVyZmFjZSB0byByZWFkIGFuZCB3cml0ZSBzd2FwIHBhZ2VzIHRvCisidHJhbnNjZW5kZW50IG1lbW9yeSIgdGhhdCBpcyBvdGhlcndpc2Ugbm90IGRpcmVjdGx5IGFkZHJlc3NhYmxlIHRvIHRoZSBrZXJuZWwuCitUaGlzIGludGVyZmFjZSBpcyBpZGVhbCB3aGVuIGRhdGEgaXMgdHJhbnNmb3JtZWQgdG8gYSBkaWZmZXJlbnQgZm9ybQorYW5kIHNpemUgKHN1Y2ggYXMgd2l0aCBjb21wcmVzc2lvbikgb3Igc2VjcmV0bHkgbW92ZWQgKGFzIG1pZ2h0IGJlCit1c2VmdWwgZm9yIHdyaXRlLWJhbGFuY2luZyBmb3Igc29tZSBSQU0tbGlrZSBkZXZpY2VzKS4gIFN3YXAgcGFnZXMgKGFuZAorZXZpY3RlZCBwYWdlLWNhY2hlIHBhZ2VzKSBhcmUgYSBncmVhdCB1c2UgZm9yIHRoaXMga2luZCBvZiBzbG93ZXItdGhhbi1SQU0tCitidXQtbXVjaC1mYXN0ZXItdGhhbi1kaXNrICJwc2V1ZG8tUkFNIGRldmljZSIgYW5kIHRoZSBmcm9udHN3YXAgKGFuZAorY2xlYW5jYWNoZSkgaW50ZXJmYWNlIHRvIHRyYW5zY2VuZGVudCBtZW1vcnkgcHJvdmlkZXMgYSBuaWNlIHdheSB0byByZWFkCithbmQgd3JpdGUgLS0gYW5kIGluZGlyZWN0bHkgIm5hbWUiIC0tIHRoZSBwYWdlcy4KKworRnJvbnRzd2FwIC0tIGFuZCBjbGVhbmNhY2hlIC0tIHdpdGggYSBmYWlybHkgc21hbGwgaW1wYWN0IG9uIHRoZSBrZXJuZWwsCitwcm92aWRlcyBhIGh1Z2UgYW1vdW50IG9mIGZsZXhpYmlsaXR5IGZvciBtb3JlIGR5bmFtaWMsIGZsZXhpYmxlIFJBTQordXRpbGl6YXRpb24gaW4gdmFyaW91cyBzeXN0ZW0gY29uZmlndXJhdGlvbnM6CisKK0luIHRoZSBzaW5nbGUga2VybmVsIGNhc2UsIGFrYSAiemNhY2hlIiwgcGFnZXMgYXJlIGNvbXByZXNzZWQgYW5kCitzdG9yZWQgaW4gbG9jYWwgbWVtb3J5LCB0aHVzIGluY3JlYXNpbmcgdGhlIHRvdGFsIGFub255bW91cyBwYWdlcwordGhhdCBjYW4gYmUgc2FmZWx5IGtlcHQgaW4gUkFNLiAgWmNhY2hlIGVzc2VudGlhbGx5IHRyYWRlcyBvZmYgQ1BVCitjeWNsZXMgdXNlZCBpbiBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGZvciBiZXR0ZXIgbWVtb3J5IHV0aWxpemF0aW9uLgorQmVuY2htYXJrcyBoYXZlIHNob3duIGxpdHRsZSBvciBubyBpbXBhY3Qgd2hlbiBtZW1vcnkgcHJlc3N1cmUgaXMKK2xvdyB3aGlsZSBwcm92aWRpbmcgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCAoMjUlKykKK29uIHNvbWUgd29ya2xvYWRzIHVuZGVyIGhpZ2ggbWVtb3J5IHByZXNzdXJlLgorCisiUkFNc3RlciIgYnVpbGRzIG9uIHpjYWNoZSBieSBhZGRpbmcgInBlZXItdG8tcGVlciIgdHJhbnNjZW5kZW50IG1lbW9yeQorc3VwcG9ydCBmb3IgY2x1c3RlcmVkIHN5c3RlbXMuICBGcm9udHN3YXAgcGFnZXMgYXJlIGxvY2FsbHkgY29tcHJlc3NlZAorYXMgaW4gemNhY2hlLCBidXQgdGhlbiAicmVtb3RpZmllZCIgdG8gYW5vdGhlciBzeXN0ZW0ncyBSQU0uICBUaGlzCithbGxvd3MgUkFNIHRvIGJlIGR5bmFtaWNhbGx5IGxvYWQtYmFsYW5jZWQgYmFjay1hbmQtZm9ydGggYXMgbmVlZGVkLAoraS5lLiB3aGVuIHN5c3RlbSBBIGlzIG92ZXJjb21taXR0ZWQsIGl0IGNhbiBzd2FwIHRvIHN5c3RlbSBCLCBhbmQKK3ZpY2UgdmVyc2EuICBSQU1zdGVyIGNhbiBhbHNvIGJlIGNvbmZpZ3VyZWQgYXMgYSBtZW1vcnkgc2VydmVyIHNvCittYW55IHNlcnZlcnMgaW4gYSBjbHVzdGVyIGNhbiBzd2FwLCBkeW5hbWljYWxseSBhcyBuZWVkZWQsIHRvIGEgc2luZ2xlCitzZXJ2ZXIgY29uZmlndXJlZCB3aXRoIGEgbGFyZ2UgYW1vdW50IG9mIFJBTS4uLiB3aXRob3V0IHByZS1jb25maWd1cmluZworaG93IG11Y2ggb2YgdGhlIFJBTSBpcyBhdmFpbGFibGUgZm9yIGVhY2ggb2YgdGhlIGNsaWVudHMhCisKK0luIHRoZSB2aXJ0dWFsIGNhc2UsIHRoZSB3aG9sZSBwb2ludCBvZiB2aXJ0dWFsaXphdGlvbiBpcyB0byBzdGF0aXN0aWNhbGx5CittdWx0aXBsZXggcGh5c2ljYWwgcmVzb3VyY2VzIGFjcm9zcyB0aGUgdmFyeWluZyBkZW1hbmRzIG9mIG11bHRpcGxlCit2aXJ0dWFsIG1hY2hpbmVzLiAgVGhpcyBpcyByZWFsbHkgaGFyZCB0byBkbyB3aXRoIFJBTSBhbmQgZWZmb3J0cyB0byBkbworaXQgd2VsbCB3aXRoIG5vIGtlcm5lbCBjaGFuZ2VzIGhhdmUgZXNzZW50aWFsbHkgZmFpbGVkIChleGNlcHQgaW4gc29tZQord2VsbC1wdWJsaWNpemVkIHNwZWNpYWwtY2FzZSB3b3JrbG9hZHMpLgorU3BlY2lmaWNhbGx5LCB0aGUgWGVuIFRyYW5zY2VuZGVudCBNZW1vcnkgYmFja2VuZCBhbGxvd3Mgb3RoZXJ3aXNlCisiZmFsbG93IiBoeXBlcnZpc29yLW93bmVkIFJBTSB0byBub3Qgb25seSBiZSAidGltZS1zaGFyZWQiIGJldHdlZW4gbXVsdGlwbGUKK3ZpcnR1YWwgbWFjaGluZXMsIGJ1dCB0aGUgcGFnZXMgY2FuIGJlIGNvbXByZXNzZWQgYW5kIGRlZHVwbGljYXRlZCB0bworb3B0aW1pemUgUkFNIHV0aWxpemF0aW9uLiAgQW5kIHdoZW4gZ3Vlc3QgT1MncyBhcmUgaW5kdWNlZCB0byBzdXJyZW5kZXIKK3VuZGVydXRpbGl6ZWQgUkFNIChlLmcuIHdpdGggInNlbGZiYWxsb29uaW5nIiksIHN1ZGRlbiB1bmV4cGVjdGVkCittZW1vcnkgcHJlc3N1cmUgbWF5IHJlc3VsdCBpbiBzd2FwcGluZzsgZnJvbnRzd2FwIGFsbG93cyB0aG9zZSBwYWdlcwordG8gYmUgc3dhcHBlZCB0byBhbmQgZnJvbSBoeXBlcnZpc29yIFJBTSAoaWYgb3ZlcmFsbCBob3N0IHN5c3RlbSBtZW1vcnkKK2NvbmRpdGlvbnMgYWxsb3cpLCB0aHVzIG1pdGlnYXRpbmcgdGhlIHBvdGVudGlhbGx5IGF3ZnVsIHBlcmZvcm1hbmNlIGltcGFjdAorb2YgdW5wbGFubmVkIHN3YXBwaW5nLgorCitBIEtWTSBpbXBsZW1lbnRhdGlvbiBpcyB1bmRlcndheSBhbmQgaGFzIGJlZW4gUkZDJ2VkIHRvIGxrbWwuICBBbmQsCit1c2luZyBmcm9udHN3YXAsIGludmVzdGlnYXRpb24gaXMgYWxzbyB1bmRlcndheSBvbiB0aGUgdXNlIG9mIE5WTSBhcworYSBtZW1vcnkgZXh0ZW5zaW9uIHRlY2hub2xvZ3kuCisKKzIpIFN1cmUgdGhlcmUgbWF5IGJlIHBlcmZvcm1hbmNlIGFkdmFudGFnZXMgaW4gc29tZSBzaXR1YXRpb25zLCBidXQKKyAgIHdoYXQncyB0aGUgc3BhY2UvdGltZSBvdmVyaGVhZCBvZiBmcm9udHN3YXA/CisKK0lmIENPTkZJR19GUk9OVFNXQVAgaXMgZGlzYWJsZWQsIGV2ZXJ5IGZyb250c3dhcCBob29rIGNvbXBpbGVzIGludG8KK25vdGhpbmduZXNzIGFuZCB0aGUgb25seSBvdmVyaGVhZCBpcyBhIGZldyBleHRyYSBieXRlcyBwZXIgc3dhcG9uJ2VkCitzd2FwIGRldmljZS4gIElmIENPTkZJR19GUk9OVFNXQVAgaXMgZW5hYmxlZCBidXQgbm8gZnJvbnRzd2FwICJiYWNrZW5kIgorcmVnaXN0ZXJzLCB0aGVyZSBpcyBvbmUgZXh0cmEgZ2xvYmFsIHZhcmlhYmxlIGNvbXBhcmVkIHRvIHplcm8gZm9yCitldmVyeSBzd2FwIHBhZ2UgcmVhZCBvciB3cml0dGVuLiAgSWYgQ09ORklHX0ZST05UU1dBUCBpcyBlbmFibGVkCitBTkQgYSBmcm9udHN3YXAgYmFja2VuZCByZWdpc3RlcnMgQU5EIHRoZSBiYWNrZW5kIGZhaWxzIGV2ZXJ5ICJzdG9yZSIKK3JlcXVlc3QgKGkuZS4gcHJvdmlkZXMgbm8gbWVtb3J5IGRlc3BpdGUgY2xhaW1pbmcgaXQgbWlnaHQpLAorQ1BVIG92ZXJoZWFkIGlzIHN0aWxsIG5lZ2xpZ2libGUgLS0gYW5kIHNpbmNlIGV2ZXJ5IGZyb250c3dhcCBmYWlsCitwcmVjZWRlcyBhIHN3YXAgcGFnZSB3cml0ZS10by1kaXNrLCB0aGUgc3lzdGVtIGlzIGhpZ2hseSBsaWtlbHkKK3RvIGJlIEkvTyBib3VuZCBhbmQgdXNpbmcgYSBzbWFsbCBmcmFjdGlvbiBvZiBhIHBlcmNlbnQgb2YgYSBDUFUKK3dpbGwgYmUgaXJyZWxldmFudCBhbnl3YXkuCisKK0FzIGZvciBzcGFjZSwgaWYgQ09ORklHX0ZST05UU1dBUCBpcyBlbmFibGVkIEFORCBhIGZyb250c3dhcCBiYWNrZW5kCityZWdpc3RlcnMsIG9uZSBiaXQgaXMgYWxsb2NhdGVkIGZvciBldmVyeSBzd2FwIHBhZ2UgZm9yIGV2ZXJ5IHN3YXAKK2RldmljZSB0aGF0IGlzIHN3YXBvbidkLiAgVGhpcyBpcyBhZGRlZCB0byB0aGUgRUlHSFQgYml0cyAod2hpY2gKK3dhcyBzaXh0ZWVuIHVudGlsIGFib3V0IDIuNi4zNCkgdGhhdCB0aGUga2VybmVsIGFscmVhZHkgYWxsb2NhdGVzCitmb3IgZXZlcnkgc3dhcCBwYWdlIGZvciBldmVyeSBzd2FwIGRldmljZSB0aGF0IGlzIHN3YXBvbidkLiAgKEh1Z2gKK0RpY2tpbnMgaGFzIG9ic2VydmVkIHRoYXQgZnJvbnRzd2FwIGNvdWxkIHByb2JhYmx5IHN0ZWFsIG9uZSBvZgordGhlIGV4aXN0aW5nIGVpZ2h0IGJpdHMsIGJ1dCBsZXQncyB3b3JyeSBhYm91dCB0aGF0IG1pbm9yIG9wdGltaXphdGlvbgorbGF0ZXIuKSAgRm9yIHZlcnkgbGFyZ2Ugc3dhcCBkaXNrcyAod2hpY2ggYXJlIHJhcmUpIG9uIGEgc3RhbmRhcmQKKzRLIHBhZ2VzaXplLCB0aGlzIGlzIDFNQiBwZXIgMzJHQiBzd2FwLgorCitXaGVuIHN3YXAgcGFnZXMgYXJlIHN0b3JlZCBpbiB0cmFuc2NlbmRlbnQgbWVtb3J5IGluc3RlYWQgb2Ygd3JpdHRlbgorb3V0IHRvIGRpc2ssIHRoZXJlIGlzIGEgc2lkZSBlZmZlY3QgdGhhdCB0aGlzIG1heSBjcmVhdGUgbW9yZSBtZW1vcnkKK3ByZXNzdXJlIHRoYXQgY2FuIHBvdGVudGlhbGx5IG91dHdlaWdoIHRoZSBvdGhlciBhZHZhbnRhZ2VzLiAgQQorYmFja2VuZCwgc3VjaCBhcyB6Y2FjaGUsIG11c3QgaW1wbGVtZW50IHBvbGljaWVzIHRvIGNhcmVmdWxseSAoYnV0CitkeW5hbWljYWxseSkgbWFuYWdlIG1lbW9yeSBsaW1pdHMgdG8gZW5zdXJlIHRoaXMgZG9lc24ndCBoYXBwZW4uCisKKzMpIE9LLCBob3cgYWJvdXQgYSBxdWljayBvdmVydmlldyBvZiB3aGF0IHRoaXMgZnJvbnRzd2FwIHBhdGNoIGRvZXMKKyAgIGluIHRlcm1zIHRoYXQgYSBrZXJuZWwgaGFja2VyIGNhbiBncm9rPworCitMZXQncyBhc3N1bWUgdGhhdCBhIGZyb250c3dhcCAiYmFja2VuZCIgaGFzIHJlZ2lzdGVyZWQgZHVyaW5nCitrZXJuZWwgaW5pdGlhbGl6YXRpb247IHRoaXMgcmVnaXN0cmF0aW9uIGluZGljYXRlcyB0aGF0IHRoaXMKK2Zyb250c3dhcCBiYWNrZW5kIGhhcyBhY2Nlc3MgdG8gc29tZSAibWVtb3J5IiB0aGF0IGlzIG5vdCBkaXJlY3RseQorYWNjZXNzaWJsZSBieSB0aGUga2VybmVsLiAgRXhhY3RseSBob3cgbXVjaCBtZW1vcnkgaXQgcHJvdmlkZXMgaXMKK2VudGlyZWx5IGR5bmFtaWMgYW5kIHJhbmRvbS4KKworV2hlbmV2ZXIgYSBzd2FwLWRldmljZSBpcyBzd2Fwb24nZCBmcm9udHN3YXBfaW5pdCgpIGlzIGNhbGxlZCwKK3Bhc3NpbmcgdGhlIHN3YXAgZGV2aWNlIG51bWJlciAoYWthICJ0eXBlIikgYXMgYSBwYXJhbWV0ZXIuCitUaGlzIG5vdGlmaWVzIGZyb250c3dhcCB0byBleHBlY3QgYXR0ZW1wdHMgdG8gInN0b3JlIiBzd2FwIHBhZ2VzCithc3NvY2lhdGVkIHdpdGggdGhhdCBudW1iZXIuCisKK1doZW5ldmVyIHRoZSBzd2FwIHN1YnN5c3RlbSBpcyByZWFkeWluZyBhIHBhZ2UgdG8gd3JpdGUgdG8gYSBzd2FwCitkZXZpY2UgKGMuZiBzd2FwX3dyaXRlcGFnZSgpKSwgZnJvbnRzd2FwX3N0b3JlIGlzIGNhbGxlZC4gIEZyb250c3dhcAorY29uc3VsdHMgd2l0aCB0aGUgZnJvbnRzd2FwIGJhY2tlbmQgYW5kIGlmIHRoZSBiYWNrZW5kIHNheXMgaXQgZG9lcyBOT1QKK2hhdmUgcm9vbSwgZnJvbnRzd2FwX3N0b3JlIHJldHVybnMgLTEgYW5kIHRoZSBrZXJuZWwgc3dhcHMgdGhlIHBhZ2UKK3RvIHRoZSBzd2FwIGRldmljZSBhcyBub3JtYWwuICBOb3RlIHRoYXQgdGhlIHJlc3BvbnNlIGZyb20gdGhlIGZyb250c3dhcAorYmFja2VuZCBpcyB1bnByZWRpY3RhYmxlIHRvIHRoZSBrZXJuZWw7IGl0IG1heSBjaG9vc2UgdG8gbmV2ZXIgYWNjZXB0IGEKK3BhZ2UsIGl0IGNvdWxkIGFjY2VwdCBldmVyeSBuaW50aCBwYWdlLCBvciBpdCBtaWdodCBhY2NlcHQgZXZlcnkKK3BhZ2UuICBCdXQgaWYgdGhlIGJhY2tlbmQgZG9lcyBhY2NlcHQgYSBwYWdlLCB0aGUgZGF0YSBmcm9tIHRoZSBwYWdlCitoYXMgYWxyZWFkeSBiZWVuIGNvcGllZCBhbmQgYXNzb2NpYXRlZCB3aXRoIHRoZSB0eXBlIGFuZCBvZmZzZXQsCithbmQgdGhlIGJhY2tlbmQgZ3VhcmFudGVlcyB0aGUgcGVyc2lzdGVuY2Ugb2YgdGhlIGRhdGEuICBJbiB0aGlzIGNhc2UsCitmcm9udHN3YXAgc2V0cyBhIGJpdCBpbiB0aGUgImZyb250c3dhcF9tYXAiIGZvciB0aGUgc3dhcCBkZXZpY2UKK2NvcnJlc3BvbmRpbmcgdG8gdGhlIHBhZ2Ugb2Zmc2V0IG9uIHRoZSBzd2FwIGRldmljZSB0byB3aGljaCBpdCB3b3VsZAorb3RoZXJ3aXNlIGhhdmUgd3JpdHRlbiB0aGUgZGF0YS4KKworV2hlbiB0aGUgc3dhcCBzdWJzeXN0ZW0gbmVlZHMgdG8gc3dhcC1pbiBhIHBhZ2UgKHN3YXBfcmVhZHBhZ2UoKSksCitpdCBmaXJzdCBjYWxscyBmcm9udHN3YXBfbG9hZCgpIHdoaWNoIGNoZWNrcyB0aGUgZnJvbnRzd2FwX21hcCB0bworc2VlIGlmIHRoZSBwYWdlIHdhcyBlYXJsaWVyIGFjY2VwdGVkIGJ5IHRoZSBmcm9udHN3YXAgYmFja2VuZC4gIElmCitpdCB3YXMsIHRoZSBwYWdlIG9mIGRhdGEgaXMgZmlsbGVkIGZyb20gdGhlIGZyb250c3dhcCBiYWNrZW5kIGFuZAordGhlIHN3YXAtaW4gaXMgY29tcGxldGUuICBJZiBub3QsIHRoZSBub3JtYWwgc3dhcC1pbiBjb2RlIGlzCitleGVjdXRlZCB0byBvYnRhaW4gdGhlIHBhZ2Ugb2YgZGF0YSBmcm9tIHRoZSByZWFsIHN3YXAgZGV2aWNlLgorCitTbyBldmVyeSB0aW1lIHRoZSBmcm9udHN3YXAgYmFja2VuZCBhY2NlcHRzIGEgcGFnZSwgYSBzd2FwIGRldmljZSByZWFkCithbmQgKHBvdGVudGlhbGx5KSBhIHN3YXAgZGV2aWNlIHdyaXRlIGFyZSByZXBsYWNlZCBieSBhICJmcm9udHN3YXAgYmFja2VuZAorc3RvcmUiIGFuZCAocG9zc2libHkpIGEgImZyb250c3dhcCBiYWNrZW5kIGxvYWRzIiwgd2hpY2ggYXJlIHByZXN1bWFibHkgbXVjaAorZmFzdGVyLgorCis0KSBDYW4ndCBmcm9udHN3YXAgYmUgY29uZmlndXJlZCBhcyBhICJzcGVjaWFsIiBzd2FwIGRldmljZSB0aGF0IGlzCisgICBqdXN0IGhpZ2hlciBwcmlvcml0eSB0aGFuIGFueSByZWFsIHN3YXAgZGV2aWNlIChlLmcuIGxpa2UgenN3YXAsCisgICBvciBtYXliZSBzd2FwLW92ZXItbmJkL05GUyk/CisKK05vLiAgRmlyc3QsIHRoZSBleGlzdGluZyBzd2FwIHN1YnN5c3RlbSBkb2Vzbid0IGFsbG93IGZvciBhbnkga2luZCBvZgorc3dhcCBoaWVyYXJjaHkuICBQZXJoYXBzIGl0IGNvdWxkIGJlIHJld3JpdHRlbiB0byBhY2NvbW1vZGF0ZSBhIGhpZXJhcmNoeSwKK2J1dCB0aGlzIHdvdWxkIHJlcXVpcmUgZmFpcmx5IGRyYXN0aWMgY2hhbmdlcy4gIEV2ZW4gaWYgaXQgd2VyZQorcmV3cml0dGVuLCB0aGUgZXhpc3Rpbmcgc3dhcCBzdWJzeXN0ZW0gdXNlcyB0aGUgYmxvY2sgSS9PIGxheWVyIHdoaWNoCithc3N1bWVzIGEgc3dhcCBkZXZpY2UgaXMgZml4ZWQgc2l6ZSBhbmQgYW55IHBhZ2UgaW4gaXQgaXMgbGluZWFybHkKK2FkZHJlc3NhYmxlLiAgRnJvbnRzd2FwIGJhcmVseSB0b3VjaGVzIHRoZSBleGlzdGluZyBzd2FwIHN1YnN5c3RlbSwKK2FuZCB3b3JrcyBhcm91bmQgdGhlIGNvbnN0cmFpbnRzIG9mIHRoZSBibG9jayBJL08gc3Vic3lzdGVtIHRvIHByb3ZpZGUKK2EgZ3JlYXQgZGVhbCBvZiBmbGV4aWJpbGl0eSBhbmQgZHluYW1pY2l0eS4KKworRm9yIGV4YW1wbGUsIHRoZSBhY2NlcHRhbmNlIG9mIGFueSBzd2FwIHBhZ2UgYnkgdGhlIGZyb250c3dhcCBiYWNrZW5kIGlzCitlbnRpcmVseSB1bnByZWRpY3RhYmxlLiBUaGlzIGlzIGNyaXRpY2FsIHRvIHRoZSBkZWZpbml0aW9uIG9mIGZyb250c3dhcAorYmFja2VuZHMgYmVjYXVzZSBpdCBncmFudHMgY29tcGxldGVseSBkeW5hbWljIGRpc2NyZXRpb24gdG8gdGhlCitiYWNrZW5kLiAgSW4gemNhY2hlLCBvbmUgY2Fubm90IGtub3cgYSBwcmlvcmkgaG93IGNvbXByZXNzaWJsZSBhIHBhZ2UgaXMuCisiUG9vcmx5IiBjb21wcmVzc2libGUgcGFnZXMgY2FuIGJlIHJlamVjdGVkLCBhbmQgInBvb3JseSIgY2FuIGl0c2VsZiBiZQorZGVmaW5lZCBkeW5hbWljYWxseSBkZXBlbmRpbmcgb24gY3VycmVudCBtZW1vcnkgY29uc3RyYWludHMuCisKK0Z1cnRoZXIsIGZyb250c3dhcCBpcyBlbnRpcmVseSBzeW5jaHJvbm91cyB3aGVyZWFzIGEgcmVhbCBzd2FwCitkZXZpY2UgaXMsIGJ5IGRlZmluaXRpb24sIGFzeW5jaHJvbm91cyBhbmQgdXNlcyBibG9jayBJL08uICBUaGUKK2Jsb2NrIEkvTyBsYXllciBpcyBub3Qgb25seSB1bm5lY2Vzc2FyeSwgYnV0IG1heSBwZXJmb3JtICJvcHRpbWl6YXRpb25zIgordGhhdCBhcmUgaW5hcHByb3ByaWF0ZSBmb3IgYSBSQU0tb3JpZW50ZWQgZGV2aWNlIGluY2x1ZGluZyBkZWxheWluZwordGhlIHdyaXRlIG9mIHNvbWUgcGFnZXMgZm9yIGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIHRpbWUuICBTeW5jaHJvbnkgaXMKK3JlcXVpcmVkIHRvIGVuc3VyZSB0aGUgZHluYW1pY2l0eSBvZiB0aGUgYmFja2VuZCBhbmQgdG8gYXZvaWQgdGhvcm55IHJhY2UKK2NvbmRpdGlvbnMgdGhhdCB3b3VsZCB1bm5lY2Vzc2FyaWx5IGFuZCBncmVhdGx5IGNvbXBsaWNhdGUgZnJvbnRzd2FwCithbmQvb3IgdGhlIGJsb2NrIEkvTyBzdWJzeXN0ZW0uICBUaGF0IHNhaWQsIG9ubHkgdGhlIGluaXRpYWwgInN0b3JlIgorYW5kICJsb2FkIiBvcGVyYXRpb25zIG5lZWQgYmUgc3luY2hyb25vdXMuICBBIHNlcGFyYXRlIGFzeW5jaHJvbm91cyB0aHJlYWQKK2lzIGZyZWUgdG8gbWFuaXB1bGF0ZSB0aGUgcGFnZXMgc3RvcmVkIGJ5IGZyb250c3dhcC4gIEZvciBleGFtcGxlLAordGhlICJyZW1vdGlmaWNhdGlvbiIgdGhyZWFkIGluIFJBTXN0ZXIgdXNlcyBzdGFuZGFyZCBhc3luY2hyb25vdXMKK2tlcm5lbCBzb2NrZXRzIHRvIG1vdmUgY29tcHJlc3NlZCBmcm9udHN3YXAgcGFnZXMgdG8gYSByZW1vdGUgbWFjaGluZS4KK1NpbWlsYXJseSwgYSBLVk0gZ3Vlc3Qtc2lkZSBpbXBsZW1lbnRhdGlvbiBjb3VsZCBkbyBpbi1ndWVzdCBjb21wcmVzc2lvbgorYW5kIHVzZSAiYmF0Y2hlZCIgaHlwZXJjYWxscy4KKworSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgdGhlIGR5bmFtaWNpdHkgYWxsb3dzIHRoZSBoeXBlcnZpc29yCisob3IgaG9zdCBPUykgdG8gZG8gImludGVsbGlnZW50IG92ZXJjb21taXQiLiAgRm9yIGV4YW1wbGUsIGl0IGNhbgorY2hvb3NlIHRvIGFjY2VwdCBwYWdlcyBvbmx5IHVudGlsIGhvc3Qtc3dhcHBpbmcgbWlnaHQgYmUgaW1taW5lbnQsCit0aGVuIGZvcmNlIGd1ZXN0cyB0byBkbyB0aGVpciBvd24gc3dhcHBpbmcuCisKK1RoZXJlIGlzIGEgZG93bnNpZGUgdG8gdGhlIHRyYW5zY2VuZGVudCBtZW1vcnkgc3BlY2lmaWNhdGlvbnMgZm9yCitmcm9udHN3YXA6ICBTaW5jZSBhbnkgInN0b3JlIiBtaWdodCBmYWlsLCB0aGVyZSBtdXN0IGFsd2F5cyBiZSBhIHJlYWwKK3Nsb3Qgb24gYSByZWFsIHN3YXAgZGV2aWNlIHRvIHN3YXAgdGhlIHBhZ2UuICBUaHVzIGZyb250c3dhcCBtdXN0IGJlCitpbXBsZW1lbnRlZCBhcyBhICJzaGFkb3ciIHRvIGV2ZXJ5IHN3YXBvbidkIGRldmljZSB3aXRoIHRoZSBwb3RlbnRpYWwKK2NhcGFiaWxpdHkgb2YgaG9sZGluZyBldmVyeSBwYWdlIHRoYXQgdGhlIHN3YXAgZGV2aWNlIG1pZ2h0IGhhdmUgaGVsZAorYW5kIHRoZSBwb3NzaWJpbGl0eSB0aGF0IGl0IG1pZ2h0IGhvbGQgbm8gcGFnZXMgYXQgYWxsLiAgVGhpcyBtZWFucwordGhhdCBmcm9udHN3YXAgY2Fubm90IGNvbnRhaW4gbW9yZSBwYWdlcyB0aGFuIHRoZSB0b3RhbCBvZiBzd2Fwb24nZAorc3dhcCBkZXZpY2VzLiAgRm9yIGV4YW1wbGUsIGlmIE5PIHN3YXAgZGV2aWNlIGlzIGNvbmZpZ3VyZWQgb24gc29tZQoraW5zdGFsbGF0aW9uLCBmcm9udHN3YXAgaXMgdXNlbGVzcy4gIFN3YXBsZXNzIHBvcnRhYmxlIGRldmljZXMKK2NhbiBzdGlsbCB1c2UgZnJvbnRzd2FwIGJ1dCBhIGJhY2tlbmQgZm9yIHN1Y2ggZGV2aWNlcyBtdXN0IGNvbmZpZ3VyZQorc29tZSBraW5kIG9mICJnaG9zdCIgc3dhcCBkZXZpY2UgYW5kIGVuc3VyZSB0aGF0IGl0IGlzIG5ldmVyIHVzZWQuCisKKzUpIFdoeSB0aGlzIHdlaXJkIGRlZmluaXRpb24gYWJvdXQgImR1cGxpY2F0ZSBzdG9yZXMiPyAgSWYgYSBwYWdlCisgICBoYXMgYmVlbiBwcmV2aW91c2x5IHN1Y2Nlc3NmdWxseSBzdG9yZWQsIGNhbid0IGl0IGFsd2F5cyBiZQorICAgc3VjY2Vzc2Z1bGx5IG92ZXJ3cml0dGVuPworCitOZWFybHkgYWx3YXlzIGl0IGNhbiwgYnV0IG5vLCBzb21ldGltZXMgaXQgY2Fubm90LiAgQ29uc2lkZXIgYW4gZXhhbXBsZQord2hlcmUgZGF0YSBpcyBjb21wcmVzc2VkIGFuZCB0aGUgb3JpZ2luYWwgNEsgcGFnZSBoYXMgYmVlbiBjb21wcmVzc2VkCit0byAxSy4gIE5vdyBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gb3ZlcndyaXRlIHRoZSBwYWdlIHdpdGggZGF0YSB0aGF0CitpcyBub24tY29tcHJlc3NpYmxlIGFuZCBzbyB3b3VsZCB0YWtlIHRoZSBlbnRpcmUgNEsuICBCdXQgdGhlIGJhY2tlbmQKK2hhcyBubyBtb3JlIHNwYWNlLiAgSW4gdGhpcyBjYXNlLCB0aGUgc3RvcmUgbXVzdCBiZSByZWplY3RlZC4gIFdoZW5ldmVyCitmcm9udHN3YXAgcmVqZWN0cyBhIHN0b3JlIHRoYXQgd291bGQgb3ZlcndyaXRlLCBpdCBhbHNvIG11c3QgaW52YWxpZGF0ZQordGhlIG9sZCBkYXRhIGFuZCBlbnN1cmUgdGhhdCBpdCBpcyBubyBsb25nZXIgYWNjZXNzaWJsZS4gIFNpbmNlIHRoZQorc3dhcCBzdWJzeXN0ZW0gdGhlbiB3cml0ZXMgdGhlIG5ldyBkYXRhIHRvIHRoZSByZWFkIHN3YXAgZGV2aWNlLAordGhpcyBpcyB0aGUgY29ycmVjdCBjb3Vyc2Ugb2YgYWN0aW9uIHRvIGVuc3VyZSBjb2hlcmVuY3kuCisKKzYpIFdoYXQgaXMgZnJvbnRzd2FwX3NocmluayBmb3I/CisKK1doZW4gdGhlIChub24tZnJvbnRzd2FwKSBzd2FwIHN1YnN5c3RlbSBzd2FwcyBvdXQgYSBwYWdlIHRvIGEgcmVhbAorc3dhcCBkZXZpY2UsIHRoYXQgcGFnZSBpcyBvbmx5IHRha2luZyB1cCBsb3ctdmFsdWUgcHJlLWFsbG9jYXRlZCBkaXNrCitzcGFjZS4gIEJ1dCBpZiBmcm9udHN3YXAgaGFzIHBsYWNlZCBhIHBhZ2UgaW4gdHJhbnNjZW5kZW50IG1lbW9yeSwgdGhhdAorcGFnZSBtYXkgYmUgdGFraW5nIHVwIHZhbHVhYmxlIHJlYWwgZXN0YXRlLiAgVGhlIGZyb250c3dhcF9zaHJpbmsKK3JvdXRpbmUgYWxsb3dzIGNvZGUgb3V0c2lkZSBvZiB0aGUgc3dhcCBzdWJzeXN0ZW0gdG8gZm9yY2UgcGFnZXMgb3V0CitvZiB0aGUgbWVtb3J5IG1hbmFnZWQgYnkgZnJvbnRzd2FwIGFuZCBiYWNrIGludG8ga2VybmVsLWFkZHJlc3NhYmxlIG1lbW9yeS4KK0ZvciBleGFtcGxlLCBpbiBSQU1zdGVyLCBhICJzdWN0aW9uIGRyaXZlciIgdGhyZWFkIHdpbGwgYXR0ZW1wdAordG8gInJlcGF0cmlhdGUiIHBhZ2VzIHNlbnQgdG8gYSByZW1vdGUgbWFjaGluZSBiYWNrIHRvIHRoZSBsb2NhbCBtYWNoaW5lOwordGhpcyBpcyBkcml2ZW4gdXNpbmcgdGhlIGZyb250c3dhcF9zaHJpbmsgbWVjaGFuaXNtIHdoZW4gbWVtb3J5IHByZXNzdXJlCitzdWJzaWRlcy4KKworNykgV2h5IGRvZXMgdGhlIGZyb250c3dhcCBwYXRjaCBjcmVhdGUgdGhlIG5ldyBpbmNsdWRlIGZpbGUgc3dhcGZpbGUuaD8KKworVGhlIGZyb250c3dhcCBjb2RlIGRlcGVuZHMgb24gc29tZSBzd2FwLXN1YnN5c3RlbS1pbnRlcm5hbCBkYXRhCitzdHJ1Y3R1cmVzIHRoYXQgaGF2ZSwgb3ZlciB0aGUgeWVhcnMsIG1vdmVkIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4KK3N0YXRpYyBhbmQgZ2xvYmFsLiAgVGhpcyBzZWVtZWQgYSByZWFzb25hYmxlIGNvbXByb21pc2U6ICBEZWZpbmUKK3RoZW0gYXMgZ2xvYmFsIGJ1dCBkZWNsYXJlIHRoZW0gaW4gYSBuZXcgaW5jbHVkZSBmaWxlIHRoYXQgaXNuJ3QKK2luY2x1ZGVkIGJ5IHRoZSBsYXJnZSBudW1iZXIgb2Ygc291cmNlIGZpbGVzIHRoYXQgaW5jbHVkZSBzd2FwLmguCisKK0RhbiBNYWdlbmhlaW1lciwgbGFzdCB1cGRhdGVkIEFwcmlsIDksIDIwMTIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdm0vaGlnaG1lbS50eHQgYi9Eb2N1bWVudGF0aW9uL3ZtL2hpZ2htZW0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMjRkMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZtL2hpZ2htZW0udHh0CkBAIC0wLDAgKzEsMTYyIEBACisKKwkJCSAgICAgPT09PT09PT09PT09PT09PT09PT0KKwkJCSAgICAgSElHSCBNRU1PUlkgSEFORExJTkcKKwkJCSAgICAgPT09PT09PT09PT09PT09PT09PT0KKworQnk6IFBldGVyIFppamxzdHJhIDxhLnAuemlqbHN0cmFAY2hlbGxvLm5sPgorCitDb250ZW50czoKKworICgqKSBXaGF0IGlzIGhpZ2ggbWVtb3J5PworCisgKCopIFRlbXBvcmFyeSB2aXJ0dWFsIG1hcHBpbmdzLgorCisgKCopIFVzaW5nIGttYXBfYXRvbWljLgorCisgKCopIENvc3Qgb2YgdGVtcG9yYXJ5IG1hcHBpbmdzLgorCisgKCopIGkzODYgUEFFLgorCisKKz09PT09PT09PT09PT09PT09PT09CitXSEFUIElTIEhJR0ggTUVNT1JZPworPT09PT09PT09PT09PT09PT09PT0KKworSGlnaCBtZW1vcnkgKGhpZ2htZW0pIGlzIHVzZWQgd2hlbiB0aGUgc2l6ZSBvZiBwaHlzaWNhbCBtZW1vcnkgYXBwcm9hY2hlcyBvcgorZXhjZWVkcyB0aGUgbWF4aW11bSBzaXplIG9mIHZpcnR1YWwgbWVtb3J5LiAgQXQgdGhhdCBwb2ludCBpdCBiZWNvbWVzCitpbXBvc3NpYmxlIGZvciB0aGUga2VybmVsIHRvIGtlZXAgYWxsIG9mIHRoZSBhdmFpbGFibGUgcGh5c2ljYWwgbWVtb3J5IG1hcHBlZAorYXQgYWxsIHRpbWVzLiAgVGhpcyBtZWFucyB0aGUga2VybmVsIG5lZWRzIHRvIHN0YXJ0IHVzaW5nIHRlbXBvcmFyeSBtYXBwaW5ncyBvZgordGhlIHBpZWNlcyBvZiBwaHlzaWNhbCBtZW1vcnkgdGhhdCBpdCB3YW50cyB0byBhY2Nlc3MuCisKK1RoZSBwYXJ0IG9mIChwaHlzaWNhbCkgbWVtb3J5IG5vdCBjb3ZlcmVkIGJ5IGEgcGVybWFuZW50IG1hcHBpbmcgaXMgd2hhdCB3ZQorcmVmZXIgdG8gYXMgJ2hpZ2htZW0nLiAgVGhlcmUgYXJlIHZhcmlvdXMgYXJjaGl0ZWN0dXJlIGRlcGVuZGVudCBjb25zdHJhaW50cyBvbgord2hlcmUgZXhhY3RseSB0aGF0IGJvcmRlciBsaWVzLgorCitJbiB0aGUgaTM4NiBhcmNoLCBmb3IgZXhhbXBsZSwgd2UgY2hvb3NlIHRvIG1hcCB0aGUga2VybmVsIGludG8gZXZlcnkgcHJvY2VzcydzCitWTSBzcGFjZSBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gcGF5IHRoZSBmdWxsIFRMQiBpbnZhbGlkYXRpb24gY29zdHMgZm9yCitrZXJuZWwgZW50cnkvZXhpdC4gIFRoaXMgbWVhbnMgdGhlIGF2YWlsYWJsZSB2aXJ0dWFsIG1lbW9yeSBzcGFjZSAoNEdpQiBvbgoraTM4NikgaGFzIHRvIGJlIGRpdmlkZWQgYmV0d2VlbiB1c2VyIGFuZCBrZXJuZWwgc3BhY2UuCisKK1RoZSB0cmFkaXRpb25hbCBzcGxpdCBmb3IgYXJjaGl0ZWN0dXJlcyB1c2luZyB0aGlzIGFwcHJvYWNoIGlzIDM6MSwgM0dpQiBmb3IKK3VzZXJzcGFjZSBhbmQgdGhlIHRvcCAxR2lCIGZvciBrZXJuZWwgc3BhY2U6CisKKwkJKy0tLS0tLS0tKyAweGZmZmZmZmZmCisJCXwgS2VybmVsIHwKKwkJKy0tLS0tLS0tKyAweGMwMDAwMDAwCisJCXwgICAgICAgIHwKKwkJfCBVc2VyICAgfAorCQl8ICAgICAgICB8CisJCSstLS0tLS0tLSsgMHgwMDAwMDAwMAorCitUaGlzIG1lYW5zIHRoYXQgdGhlIGtlcm5lbCBjYW4gYXQgbW9zdCBtYXAgMUdpQiBvZiBwaHlzaWNhbCBtZW1vcnkgYXQgYW55IG9uZQordGltZSwgYnV0IGJlY2F1c2Ugd2UgbmVlZCB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UgZm9yIG90aGVyIHRoaW5ncyAtIGluY2x1ZGluZwordGVtcG9yYXJ5IG1hcHMgdG8gYWNjZXNzIHRoZSByZXN0IG9mIHRoZSBwaHlzaWNhbCBtZW1vcnkgLSB0aGUgYWN0dWFsIGRpcmVjdAorbWFwIHdpbGwgdHlwaWNhbGx5IGJlIGxlc3MgKHVzdWFsbHkgYXJvdW5kIH44OTZNaUIpLgorCitPdGhlciBhcmNoaXRlY3R1cmVzIHRoYXQgaGF2ZSBtbSBjb250ZXh0IHRhZ2dlZCBUTEJzIGNhbiBoYXZlIHNlcGFyYXRlIGtlcm5lbAorYW5kIHVzZXIgbWFwcy4gIFNvbWUgaGFyZHdhcmUgKGxpa2Ugc29tZSBBUk1zKSwgaG93ZXZlciwgaGF2ZSBsaW1pdGVkIHZpcnR1YWwKK3NwYWNlIHdoZW4gdGhleSB1c2UgbW0gY29udGV4dCB0YWdzLgorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09CitURU1QT1JBUlkgVklSVFVBTCBNQVBQSU5HUworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGtlcm5lbCBjb250YWlucyBzZXZlcmFsIHdheXMgb2YgY3JlYXRpbmcgdGVtcG9yYXJ5IG1hcHBpbmdzOgorCisgKCopIHZtYXAoKS4gIFRoaXMgY2FuIGJlIHVzZWQgdG8gbWFrZSBhIGxvbmcgZHVyYXRpb24gbWFwcGluZyBvZiBtdWx0aXBsZQorICAgICBwaHlzaWNhbCBwYWdlcyBpbnRvIGEgY29udGlndW91cyB2aXJ0dWFsIHNwYWNlLiAgSXQgbmVlZHMgZ2xvYmFsCisgICAgIHN5bmNocm9uaXphdGlvbiB0byB1bm1hcC4KKworICgqKSBrbWFwKCkuICBUaGlzIHBlcm1pdHMgYSBzaG9ydCBkdXJhdGlvbiBtYXBwaW5nIG9mIGEgc2luZ2xlIHBhZ2UuICBJdCBuZWVkcworICAgICBnbG9iYWwgc3luY2hyb25pemF0aW9uLCBidXQgaXMgYW1vcnRpemVkIHNvbWV3aGF0LiAgSXQgaXMgYWxzbyBwcm9uZSB0bworICAgICBkZWFkbG9ja3Mgd2hlbiB1c2luZyBpbiBhIG5lc3RlZCBmYXNoaW9uLCBhbmQgc28gaXQgaXMgbm90IHJlY29tbWVuZGVkIGZvcgorICAgICBuZXcgY29kZS4KKworICgqKSBrbWFwX2F0b21pYygpLiAgVGhpcyBwZXJtaXRzIGEgdmVyeSBzaG9ydCBkdXJhdGlvbiBtYXBwaW5nIG9mIGEgc2luZ2xlCisgICAgIHBhZ2UuICBTaW5jZSB0aGUgbWFwcGluZyBpcyByZXN0cmljdGVkIHRvIHRoZSBDUFUgdGhhdCBpc3N1ZWQgaXQsIGl0CisgICAgIHBlcmZvcm1zIHdlbGwsIGJ1dCB0aGUgaXNzdWluZyB0YXNrIGlzIHRoZXJlZm9yZSByZXF1aXJlZCB0byBzdGF5IG9uIHRoYXQKKyAgICAgQ1BVIHVudGlsIGl0IGhhcyBmaW5pc2hlZCwgbGVzdCBzb21lIG90aGVyIHRhc2sgZGlzcGxhY2UgaXRzIG1hcHBpbmdzLgorCisgICAgIGttYXBfYXRvbWljKCkgbWF5IGFsc28gYmUgdXNlZCBieSBpbnRlcnJ1cHQgY29udGV4dHMsIHNpbmNlIGl0IGlzIGRvZXMgbm90CisgICAgIHNsZWVwIGFuZCB0aGUgY2FsbGVyIG1heSBub3Qgc2xlZXAgdW50aWwgYWZ0ZXIga3VubWFwX2F0b21pYygpIGlzIGNhbGxlZC4KKworICAgICBJdCBtYXkgYmUgYXNzdW1lZCB0aGF0IGtbdW5dbWFwX2F0b21pYygpIHdvbid0IGZhaWwuCisKKworPT09PT09PT09PT09PT09PT0KK1VTSU5HIEtNQVBfQVRPTUlDCis9PT09PT09PT09PT09PT09PQorCitXaGVuIGFuZCB3aGVyZSB0byB1c2Uga21hcF9hdG9taWMoKSBpcyBzdHJhaWdodGZvcndhcmQuICBJdCBpcyB1c2VkIHdoZW4gY29kZQord2FudHMgdG8gYWNjZXNzIHRoZSBjb250ZW50cyBvZiBhIHBhZ2UgdGhhdCBtaWdodCBiZSBhbGxvY2F0ZWQgZnJvbSBoaWdoIG1lbW9yeQorKHNlZSBfX0dGUF9ISUdITUVNKSwgZm9yIGV4YW1wbGUgYSBwYWdlIGluIHRoZSBwYWdlY2FjaGUuICBUaGUgQVBJIGhhcyB0d28KK2Z1bmN0aW9ucywgYW5kIHRoZXkgY2FuIGJlIHVzZWQgaW4gYSBtYW5uZXIgc2ltaWxhciB0byB0aGUgZm9sbG93aW5nOgorCisJLyogRmluZCB0aGUgcGFnZSBvZiBpbnRlcmVzdC4gKi8KKwlzdHJ1Y3QgcGFnZSAqcGFnZSA9IGZpbmRfZ2V0X3BhZ2UobWFwcGluZywgb2Zmc2V0KTsKKworCS8qIEdhaW4gYWNjZXNzIHRvIHRoZSBjb250ZW50cyBvZiB0aGF0IHBhZ2UuICovCisJdm9pZCAqdmFkZHIgPSBrbWFwX2F0b21pYyhwYWdlKTsKKworCS8qIERvIHNvbWV0aGluZyB0byB0aGUgY29udGVudHMgb2YgdGhhdCBwYWdlLiAqLworCW1lbXNldCh2YWRkciwgMCwgUEFHRV9TSVpFKTsKKworCS8qIFVubWFwIHRoYXQgcGFnZS4gKi8KKwlrdW5tYXBfYXRvbWljKHZhZGRyKTsKKworTm90ZSB0aGF0IHRoZSBrdW5tYXBfYXRvbWljKCkgY2FsbCB0YWtlcyB0aGUgcmVzdWx0IG9mIHRoZSBrbWFwX2F0b21pYygpIGNhbGwKK25vdCB0aGUgYXJndW1lbnQuCisKK0lmIHlvdSBuZWVkIHRvIG1hcCB0d28gcGFnZXMgYmVjYXVzZSB5b3Ugd2FudCB0byBjb3B5IGZyb20gb25lIHBhZ2UgdG8KK2Fub3RoZXIgeW91IG5lZWQgdG8ga2VlcCB0aGUga21hcF9hdG9taWMgY2FsbHMgc3RyaWN0bHkgbmVzdGVkLCBsaWtlOgorCisJdmFkZHIxID0ga21hcF9hdG9taWMocGFnZTEpOworCXZhZGRyMiA9IGttYXBfYXRvbWljKHBhZ2UyKTsKKworCW1lbWNweSh2YWRkcjEsIHZhZGRyMiwgUEFHRV9TSVpFKTsKKworCWt1bm1hcF9hdG9taWModmFkZHIyKTsKKwlrdW5tYXBfYXRvbWljKHZhZGRyMSk7CisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NPU1QgT0YgVEVNUE9SQVJZIE1BUFBJTkdTCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgY29zdCBvZiBjcmVhdGluZyB0ZW1wb3JhcnkgbWFwcGluZ3MgY2FuIGJlIHF1aXRlIGhpZ2guICBUaGUgYXJjaCBoYXMgdG8KK21hbmlwdWxhdGUgdGhlIGtlcm5lbCdzIHBhZ2UgdGFibGVzLCB0aGUgZGF0YSBUTEIgYW5kL29yIHRoZSBNTVUncyByZWdpc3RlcnMuCisKK0lmIENPTkZJR19ISUdITUVNIGlzIG5vdCBzZXQsIHRoZW4gdGhlIGtlcm5lbCB3aWxsIHRyeSBhbmQgY3JlYXRlIGEgbWFwcGluZworc2ltcGx5IHdpdGggYSBiaXQgb2YgYXJpdGhtZXRpYyB0aGF0IHdpbGwgY29udmVydCB0aGUgcGFnZSBzdHJ1Y3QgYWRkcmVzcyBpbnRvCithIHBvaW50ZXIgdG8gdGhlIHBhZ2UgY29udGVudHMgcmF0aGVyIHRoYW4ganVnZ2xpbmcgbWFwcGluZ3MgYWJvdXQuICBJbiBzdWNoIGEKK2Nhc2UsIHRoZSB1bm1hcCBvcGVyYXRpb24gbWF5IGJlIGEgbnVsbCBvcGVyYXRpb24uCisKK0lmIENPTkZJR19NTVUgaXMgbm90IHNldCwgdGhlbiB0aGVyZSBjYW4gYmUgbm8gdGVtcG9yYXJ5IG1hcHBpbmdzIGFuZCBubworaGlnaG1lbS4gIEluIHN1Y2ggYSBjYXNlLCB0aGUgYXJpdGhtZXRpYyBhcHByb2FjaCB3aWxsIGFsc28gYmUgdXNlZC4KKworCis9PT09PT09PQoraTM4NiBQQUUKKz09PT09PT09CisKK1RoZSBpMzg2IGFyY2gsIHVuZGVyIHNvbWUgY2lyY3Vtc3RhbmNlcywgd2lsbCBwZXJtaXQgeW91IHRvIHN0aWNrIHVwIHRvIDY0R2lCCitvZiBSQU0gaW50byB5b3VyIDMyLWJpdCBtYWNoaW5lLiAgVGhpcyBoYXMgYSBudW1iZXIgb2YgY29uc2VxdWVuY2VzOgorCisgKCopIExpbnV4IG5lZWRzIGEgcGFnZS1mcmFtZSBzdHJ1Y3R1cmUgZm9yIGVhY2ggcGFnZSBpbiB0aGUgc3lzdGVtIGFuZCB0aGUKKyAgICAgcGFnZWZyYW1lcyBuZWVkIHRvIGxpdmUgaW4gdGhlIHBlcm1hbmVudCBtYXBwaW5nLCB3aGljaCBtZWFuczoKKworICgqKSB5b3UgY2FuIGhhdmUgODk2TS9zaXplb2Yoc3RydWN0IHBhZ2UpIHBhZ2UtZnJhbWVzIGF0IG1vc3Q7IHdpdGggc3RydWN0CisgICAgIHBhZ2UgYmVpbmcgMzItYnl0ZXMgdGhhdCB3b3VsZCBlbmQgdXAgYmVpbmcgc29tZXRoaW5nIGluIHRoZSBvcmRlciBvZiAxMTJHCisgICAgIHdvcnRoIG9mIHBhZ2VzOyB0aGUga2VybmVsLCBob3dldmVyLCBuZWVkcyB0byBzdG9yZSBtb3JlIHRoYW4ganVzdAorICAgICBwYWdlLWZyYW1lcyBpbiB0aGF0IG1lbW9yeS4uLgorCisgKCopIFBBRSBtYWtlcyB5b3VyIHBhZ2UgdGFibGVzIGxhcmdlciAtIHdoaWNoIHNsb3dzIHRoZSBzeXN0ZW0gZG93biBhcyBtb3JlCisgICAgIGRhdGEgaGFzIHRvIGJlIGFjY2Vzc2VkIHRvIHRyYXZlcnNlIGluIFRMQiBmaWxscyBhbmQgdGhlIGxpa2UuICBPbmUKKyAgICAgYWR2YW50YWdlIGlzIHRoYXQgUEFFIGhhcyBtb3JlIFBURSBiaXRzIGFuZCBjYW4gcHJvdmlkZSBhZHZhbmNlZCBmZWF0dXJlcworICAgICBsaWtlIE5YIGFuZCBQQVQuCisKK1RoZSBnZW5lcmFsIHJlY29tbWVuZGF0aW9uIGlzIHRoYXQgeW91IGRvbid0IHVzZSBtb3JlIHRoYW4gOEdpQiBvbiBhIDMyLWJpdAorbWFjaGluZSAtIGFsdGhvdWdoIG1vcmUgbWlnaHQgd29yayBmb3IgeW91IGFuZCB5b3VyIHdvcmtsb2FkLCB5b3UncmUgcHJldHR5CittdWNoIG9uIHlvdXIgb3duIC0gZG9uJ3QgZXhwZWN0IGtlcm5lbCBkZXZlbG9wZXJzIHRvIHJlYWxseSBjYXJlIG11Y2ggaWYgdGhpbmdzCitjb21lIGFwYXJ0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92bS9odWdldGxicGFnZS50eHQgYi9Eb2N1bWVudGF0aW9uL3ZtL2h1Z2V0bGJwYWdlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGRkOWI5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92bS9odWdldGxicGFnZS50eHQKQEAgLTAsMCArMSwzNDIgQEAKKworVGhlIGludGVudCBvZiB0aGlzIGZpbGUgaXMgdG8gZ2l2ZSBhIGJyaWVmIHN1bW1hcnkgb2YgaHVnZXRsYnBhZ2Ugc3VwcG9ydCBpbgordGhlIExpbnV4IGtlcm5lbC4gIFRoaXMgc3VwcG9ydCBpcyBidWlsdCBvbiB0b3Agb2YgbXVsdGlwbGUgcGFnZSBzaXplIHN1cHBvcnQKK3RoYXQgaXMgcHJvdmlkZWQgYnkgbW9zdCBtb2Rlcm4gYXJjaGl0ZWN0dXJlcy4gIEZvciBleGFtcGxlLCB4ODYgQ1BVcyBub3JtYWxseQorc3VwcG9ydCA0SyBhbmQgMk0gKDFHIGlmIGFyY2hpdGVjdHVyYWxseSBzdXBwb3J0ZWQpIHBhZ2Ugc2l6ZXMsIGlhNjQKK2FyY2hpdGVjdHVyZSBzdXBwb3J0cyBtdWx0aXBsZSBwYWdlIHNpemVzIDRLLCA4SywgNjRLLCAyNTZLLCAxTSwgNE0sIDE2TSwKKzI1Nk0gYW5kIHBwYzY0IHN1cHBvcnRzIDRLIGFuZCAxNk0uICBBIFRMQiBpcyBhIGNhY2hlIG9mIHZpcnR1YWwtdG8tcGh5c2ljYWwKK3RyYW5zbGF0aW9ucy4gIFR5cGljYWxseSB0aGlzIGlzIGEgdmVyeSBzY2FyY2UgcmVzb3VyY2Ugb24gcHJvY2Vzc29yLgorT3BlcmF0aW5nIHN5c3RlbXMgdHJ5IHRvIG1ha2UgYmVzdCB1c2Ugb2YgbGltaXRlZCBudW1iZXIgb2YgVExCIHJlc291cmNlcy4KK1RoaXMgb3B0aW1pemF0aW9uIGlzIG1vcmUgY3JpdGljYWwgbm93IGFzIGJpZ2dlciBhbmQgYmlnZ2VyIHBoeXNpY2FsIG1lbW9yaWVzCisoc2V2ZXJhbCBHQnMpIGFyZSBtb3JlIHJlYWRpbHkgYXZhaWxhYmxlLgorCitVc2VycyBjYW4gdXNlIHRoZSBodWdlIHBhZ2Ugc3VwcG9ydCBpbiBMaW51eCBrZXJuZWwgYnkgZWl0aGVyIHVzaW5nIHRoZSBtbWFwCitzeXN0ZW0gY2FsbCBvciBzdGFuZGFyZCBTWVNWIHNoYXJlZCBtZW1vcnkgc3lzdGVtIGNhbGxzIChzaG1nZXQsIHNobWF0KS4KKworRmlyc3QgdGhlIExpbnV4IGtlcm5lbCBuZWVkcyB0byBiZSBidWlsdCB3aXRoIHRoZSBDT05GSUdfSFVHRVRMQkZTCisocHJlc2VudCB1bmRlciAiRmlsZSBzeXN0ZW1zIikgYW5kIENPTkZJR19IVUdFVExCX1BBR0UgKHNlbGVjdGVkCithdXRvbWF0aWNhbGx5IHdoZW4gQ09ORklHX0hVR0VUTEJGUyBpcyBzZWxlY3RlZCkgY29uZmlndXJhdGlvbgorb3B0aW9ucy4KKworVGhlIC9wcm9jL21lbWluZm8gZmlsZSBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdG90YWwgbnVtYmVyIG9mCitwZXJzaXN0ZW50IGh1Z2V0bGIgcGFnZXMgaW4gdGhlIGtlcm5lbCdzIGh1Z2UgcGFnZSBwb29sLiAgSXQgYWxzbyBkaXNwbGF5cworaW5mb3JtYXRpb24gYWJvdXQgdGhlIG51bWJlciBvZiBmcmVlLCByZXNlcnZlZCBhbmQgc3VycGx1cyBodWdlIHBhZ2VzIGFuZCB0aGUKK2RlZmF1bHQgaHVnZSBwYWdlIHNpemUuICBUaGUgaHVnZSBwYWdlIHNpemUgaXMgbmVlZGVkIGZvciBnZW5lcmF0aW5nIHRoZQorcHJvcGVyIGFsaWdubWVudCBhbmQgc2l6ZSBvZiB0aGUgYXJndW1lbnRzIHRvIHN5c3RlbSBjYWxscyB0aGF0IG1hcCBodWdlIHBhZ2UKK3JlZ2lvbnMuCisKK1RoZSBvdXRwdXQgb2YgImNhdCAvcHJvYy9tZW1pbmZvIiB3aWxsIGluY2x1ZGUgbGluZXMgbGlrZToKKworLi4uLi4KK0h1Z2VQYWdlc19Ub3RhbDogdnZ2CitIdWdlUGFnZXNfRnJlZTogIHd3dworSHVnZVBhZ2VzX1JzdmQ6ICB4eHgKK0h1Z2VQYWdlc19TdXJwOiAgeXl5CitIdWdlcGFnZXNpemU6ICAgIHp6eiBrQgorCit3aGVyZToKK0h1Z2VQYWdlc19Ub3RhbCBpcyB0aGUgc2l6ZSBvZiB0aGUgcG9vbCBvZiBodWdlIHBhZ2VzLgorSHVnZVBhZ2VzX0ZyZWUgIGlzIHRoZSBudW1iZXIgb2YgaHVnZSBwYWdlcyBpbiB0aGUgcG9vbCB0aGF0IGFyZSBub3QgeWV0CisgICAgICAgICAgICAgICAgYWxsb2NhdGVkLgorSHVnZVBhZ2VzX1JzdmQgIGlzIHNob3J0IGZvciAicmVzZXJ2ZWQsIiBhbmQgaXMgdGhlIG51bWJlciBvZiBodWdlIHBhZ2VzIGZvcgorICAgICAgICAgICAgICAgIHdoaWNoIGEgY29tbWl0bWVudCB0byBhbGxvY2F0ZSBmcm9tIHRoZSBwb29sIGhhcyBiZWVuIG1hZGUsCisgICAgICAgICAgICAgICAgYnV0IG5vIGFsbG9jYXRpb24gaGFzIHlldCBiZWVuIG1hZGUuICBSZXNlcnZlZCBodWdlIHBhZ2VzCisgICAgICAgICAgICAgICAgZ3VhcmFudGVlIHRoYXQgYW4gYXBwbGljYXRpb24gd2lsbCBiZSBhYmxlIHRvIGFsbG9jYXRlIGEKKyAgICAgICAgICAgICAgICBodWdlIHBhZ2UgZnJvbSB0aGUgcG9vbCBvZiBodWdlIHBhZ2VzIGF0IGZhdWx0IHRpbWUuCitIdWdlUGFnZXNfU3VycCAgaXMgc2hvcnQgZm9yICJzdXJwbHVzLCIgYW5kIGlzIHRoZSBudW1iZXIgb2YgaHVnZSBwYWdlcyBpbgorICAgICAgICAgICAgICAgIHRoZSBwb29sIGFib3ZlIHRoZSB2YWx1ZSBpbiAvcHJvYy9zeXMvdm0vbnJfaHVnZXBhZ2VzLiBUaGUKKyAgICAgICAgICAgICAgICBtYXhpbXVtIG51bWJlciBvZiBzdXJwbHVzIGh1Z2UgcGFnZXMgaXMgY29udHJvbGxlZCBieQorICAgICAgICAgICAgICAgIC9wcm9jL3N5cy92bS9ucl9vdmVyY29tbWl0X2h1Z2VwYWdlcy4KKworL3Byb2MvZmlsZXN5c3RlbXMgc2hvdWxkIGFsc28gc2hvdyBhIGZpbGVzeXN0ZW0gb2YgdHlwZSAiaHVnZXRsYmZzIiBjb25maWd1cmVkCitpbiB0aGUga2VybmVsLgorCisvcHJvYy9zeXMvdm0vbnJfaHVnZXBhZ2VzIGluZGljYXRlcyB0aGUgY3VycmVudCBudW1iZXIgb2YgInBlcnNpc3RlbnQiIGh1Z2UKK3BhZ2VzIGluIHRoZSBrZXJuZWwncyBodWdlIHBhZ2UgcG9vbC4gICJQZXJzaXN0ZW50IiBodWdlIHBhZ2VzIHdpbGwgYmUKK3JldHVybmVkIHRvIHRoZSBodWdlIHBhZ2UgcG9vbCB3aGVuIGZyZWVkIGJ5IGEgdGFzay4gIEEgdXNlciB3aXRoIHJvb3QKK3ByaXZpbGVnZXMgY2FuIGR5bmFtaWNhbGx5IGFsbG9jYXRlIG1vcmUgb3IgZnJlZSBzb21lIHBlcnNpc3RlbnQgaHVnZSBwYWdlcworYnkgaW5jcmVhc2luZyBvciBkZWNyZWFzaW5nIHRoZSB2YWx1ZSBvZiAnbnJfaHVnZXBhZ2VzJy4KKworUGFnZXMgdGhhdCBhcmUgdXNlZCBhcyBodWdlIHBhZ2VzIGFyZSByZXNlcnZlZCBpbnNpZGUgdGhlIGtlcm5lbCBhbmQgY2Fubm90CitiZSB1c2VkIGZvciBvdGhlciBwdXJwb3Nlcy4gIEh1Z2UgcGFnZXMgY2Fubm90IGJlIHN3YXBwZWQgb3V0IHVuZGVyCittZW1vcnkgcHJlc3N1cmUuCisKK09uY2UgYSBudW1iZXIgb2YgaHVnZSBwYWdlcyBoYXZlIGJlZW4gcHJlLWFsbG9jYXRlZCB0byB0aGUga2VybmVsIGh1Z2UgcGFnZQorcG9vbCwgYSB1c2VyIHdpdGggYXBwcm9wcmlhdGUgcHJpdmlsZWdlIGNhbiB1c2UgZWl0aGVyIHRoZSBtbWFwIHN5c3RlbSBjYWxsCitvciBzaGFyZWQgbWVtb3J5IHN5c3RlbSBjYWxscyB0byB1c2UgdGhlIGh1Z2UgcGFnZXMuICBTZWUgdGhlIGRpc2N1c3Npb24gb2YKK1VzaW5nIEh1Z2UgUGFnZXMsIGJlbG93LgorCitUaGUgYWRtaW5pc3RyYXRvciBjYW4gYWxsb2NhdGUgcGVyc2lzdGVudCBodWdlIHBhZ2VzIG9uIHRoZSBrZXJuZWwgYm9vdAorY29tbWFuZCBsaW5lIGJ5IHNwZWNpZnlpbmcgdGhlICJodWdlcGFnZXM9TiIgcGFyYW1ldGVyLCB3aGVyZSAnTicgPSB0aGUKK251bWJlciBvZiBodWdlIHBhZ2VzIHJlcXVlc3RlZC4gIFRoaXMgaXMgdGhlIG1vc3QgcmVsaWFibGUgbWV0aG9kIG9mCithbGxvY2F0aW5nIGh1Z2UgcGFnZXMgYXMgbWVtb3J5IGhhcyBub3QgeWV0IGJlY29tZSBmcmFnbWVudGVkLgorCitTb21lIHBsYXRmb3JtcyBzdXBwb3J0IG11bHRpcGxlIGh1Z2UgcGFnZSBzaXplcy4gIFRvIGFsbG9jYXRlIGh1Z2UgcGFnZXMKK29mIGEgc3BlY2lmaWMgc2l6ZSwgb25lIG11c3QgcHJlY2VkZSB0aGUgaHVnZSBwYWdlcyBib290IGNvbW1hbmQgcGFyYW1ldGVycword2l0aCBhIGh1Z2UgcGFnZSBzaXplIHNlbGVjdGlvbiBwYXJhbWV0ZXIgImh1Z2VwYWdlc3o9PHNpemU+Ii4gIDxzaXplPiBtdXN0CitiZSBzcGVjaWZpZWQgaW4gYnl0ZXMgd2l0aCBvcHRpb25hbCBzY2FsZSBzdWZmaXggW2tLbU1nR10uICBUaGUgZGVmYXVsdCBodWdlCitwYWdlIHNpemUgbWF5IGJlIHNlbGVjdGVkIHdpdGggdGhlICJkZWZhdWx0X2h1Z2VwYWdlc3o9PHNpemU+IiBib290IHBhcmFtZXRlci4KKworV2hlbiBtdWx0aXBsZSBodWdlIHBhZ2Ugc2l6ZXMgYXJlIHN1cHBvcnRlZCwgL3Byb2Mvc3lzL3ZtL25yX2h1Z2VwYWdlcworaW5kaWNhdGVzIHRoZSBjdXJyZW50IG51bWJlciBvZiBwcmUtYWxsb2NhdGVkIGh1Z2UgcGFnZXMgb2YgdGhlIGRlZmF1bHQgc2l6ZS4KK1RodXMsIG9uZSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBkeW5hbWljYWxseSBhbGxvY2F0ZS9kZWFsbG9jYXRlCitkZWZhdWx0IHNpemVkIHBlcnNpc3RlbnQgaHVnZSBwYWdlczoKKworCWVjaG8gMjAgPiAvcHJvYy9zeXMvdm0vbnJfaHVnZXBhZ2VzCisKK1RoaXMgY29tbWFuZCB3aWxsIHRyeSB0byBhZGp1c3QgdGhlIG51bWJlciBvZiBkZWZhdWx0IHNpemVkIGh1Z2UgcGFnZXMgaW4gdGhlCitodWdlIHBhZ2UgcG9vbCB0byAyMCwgYWxsb2NhdGluZyBvciBmcmVlaW5nIGh1Z2UgcGFnZXMsIGFzIHJlcXVpcmVkLgorCitPbiBhIE5VTUEgcGxhdGZvcm0sIHRoZSBrZXJuZWwgd2lsbCBhdHRlbXB0IHRvIGRpc3RyaWJ1dGUgdGhlIGh1Z2UgcGFnZSBwb29sCitvdmVyIGFsbCB0aGUgc2V0IG9mIGFsbG93ZWQgbm9kZXMgc3BlY2lmaWVkIGJ5IHRoZSBOVU1BIG1lbW9yeSBwb2xpY3kgb2YgdGhlCit0YXNrIHRoYXQgbW9kaWZpZXMgbnJfaHVnZXBhZ2VzLiAgVGhlIGRlZmF1bHQgZm9yIHRoZSBhbGxvd2VkIG5vZGVzLS13aGVuIHRoZQordGFzayBoYXMgZGVmYXVsdCBtZW1vcnkgcG9saWN5LS1pcyBhbGwgb24tbGluZSBub2RlcyB3aXRoIG1lbW9yeS4gIEFsbG93ZWQKK25vZGVzIHdpdGggaW5zdWZmaWNpZW50IGF2YWlsYWJsZSwgY29udGlndW91cyBtZW1vcnkgZm9yIGEgaHVnZSBwYWdlIHdpbGwgYmUKK3NpbGVudGx5IHNraXBwZWQgd2hlbiBhbGxvY2F0aW5nIHBlcnNpc3RlbnQgaHVnZSBwYWdlcy4gIFNlZSB0aGUgZGlzY3Vzc2lvbgorYmVsb3cgb2YgdGhlIGludGVyYWN0aW9uIG9mIHRhc2sgbWVtb3J5IHBvbGljeSwgY3B1c2V0cyBhbmQgcGVyIG5vZGUgYXR0cmlidXRlcword2l0aCB0aGUgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBvZiBwZXJzaXN0ZW50IGh1Z2UgcGFnZXMuCisKK1RoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgaHVnZSBwYWdlIGFsbG9jYXRpb24gZGVwZW5kcyBvbiB0aGUgYW1vdW50IG9mCitwaHlzaWNhbGx5IGNvbnRpZ3VvdXMgbWVtb3J5IHRoYXQgaXMgcHJlc2VudCBpbiBzeXN0ZW0gYXQgdGhlIHRpbWUgb2YgdGhlCithbGxvY2F0aW9uIGF0dGVtcHQuICBJZiB0aGUga2VybmVsIGlzIHVuYWJsZSB0byBhbGxvY2F0ZSBodWdlIHBhZ2VzIGZyb20KK3NvbWUgbm9kZXMgaW4gYSBOVU1BIHN5c3RlbSwgaXQgd2lsbCBhdHRlbXB0IHRvIG1ha2UgdXAgdGhlIGRpZmZlcmVuY2UgYnkKK2FsbG9jYXRpbmcgZXh0cmEgcGFnZXMgb24gb3RoZXIgbm9kZXMgd2l0aCBzdWZmaWNpZW50IGF2YWlsYWJsZSBjb250aWd1b3VzCittZW1vcnksIGlmIGFueS4KKworU3lzdGVtIGFkbWluaXN0cmF0b3JzIG1heSB3YW50IHRvIHB1dCB0aGlzIGNvbW1hbmQgaW4gb25lIG9mIHRoZSBsb2NhbCByYworaW5pdCBmaWxlcy4gIFRoaXMgd2lsbCBlbmFibGUgdGhlIGtlcm5lbCB0byBhbGxvY2F0ZSBodWdlIHBhZ2VzIGVhcmx5IGluCit0aGUgYm9vdCBwcm9jZXNzIHdoZW4gdGhlIHBvc3NpYmlsaXR5IG9mIGdldHRpbmcgcGh5c2ljYWwgY29udGlndW91cyBwYWdlcworaXMgc3RpbGwgdmVyeSBoaWdoLiAgQWRtaW5pc3RyYXRvcnMgY2FuIHZlcmlmeSB0aGUgbnVtYmVyIG9mIGh1Z2UgcGFnZXMKK2FjdHVhbGx5IGFsbG9jYXRlZCBieSBjaGVja2luZyB0aGUgc3lzY3RsIG9yIG1lbWluZm8uICBUbyBjaGVjayB0aGUgcGVyIG5vZGUKK2Rpc3RyaWJ1dGlvbiBvZiBodWdlIHBhZ2VzIGluIGEgTlVNQSBzeXN0ZW0sIHVzZToKKworCWNhdCAvc3lzL2RldmljZXMvc3lzdGVtL25vZGUvbm9kZSovbWVtaW5mbyB8IGZncmVwIEh1Z2UKKworL3Byb2Mvc3lzL3ZtL25yX292ZXJjb21taXRfaHVnZXBhZ2VzIHNwZWNpZmllcyBob3cgbGFyZ2UgdGhlIHBvb2wgb2YKK2h1Z2UgcGFnZXMgY2FuIGdyb3csIGlmIG1vcmUgaHVnZSBwYWdlcyB0aGFuIC9wcm9jL3N5cy92bS9ucl9odWdlcGFnZXMgYXJlCityZXF1ZXN0ZWQgYnkgYXBwbGljYXRpb25zLiAgV3JpdGluZyBhbnkgbm9uLXplcm8gdmFsdWUgaW50byB0aGlzIGZpbGUKK2luZGljYXRlcyB0aGF0IHRoZSBodWdldGxiIHN1YnN5c3RlbSBpcyBhbGxvd2VkIHRvIHRyeSB0byBvYnRhaW4gdGhhdAorbnVtYmVyIG9mICJzdXJwbHVzIiBodWdlIHBhZ2VzIGZyb20gdGhlIGtlcm5lbCdzIG5vcm1hbCBwYWdlIHBvb2wsIHdoZW4gdGhlCitwZXJzaXN0ZW50IGh1Z2UgcGFnZSBwb29sIGlzIGV4aGF1c3RlZC4gQXMgdGhlc2Ugc3VycGx1cyBodWdlIHBhZ2VzIGJlY29tZQordW51c2VkLCB0aGV5IGFyZSBmcmVlZCBiYWNrIHRvIHRoZSBrZXJuZWwncyBub3JtYWwgcGFnZSBwb29sLgorCitXaGVuIGluY3JlYXNpbmcgdGhlIGh1Z2UgcGFnZSBwb29sIHNpemUgdmlhIG5yX2h1Z2VwYWdlcywgYW55IGV4aXN0aW5nIHN1cnBsdXMKK3BhZ2VzIHdpbGwgZmlyc3QgYmUgcHJvbW90ZWQgdG8gcGVyc2lzdGVudCBodWdlIHBhZ2VzLiAgVGhlbiwgYWRkaXRpb25hbAoraHVnZSBwYWdlcyB3aWxsIGJlIGFsbG9jYXRlZCwgaWYgbmVjZXNzYXJ5IGFuZCBpZiBwb3NzaWJsZSwgdG8gZnVsZmlsbAordGhlIG5ldyBwZXJzaXN0ZW50IGh1Z2UgcGFnZSBwb29sIHNpemUuCisKK1RoZSBhZG1pbmlzdHJhdG9yIG1heSBzaHJpbmsgdGhlIHBvb2wgb2YgcGVyc2lzdGVudCBodWdlIHBhZ2VzIGZvcgordGhlIGRlZmF1bHQgaHVnZSBwYWdlIHNpemUgYnkgc2V0dGluZyB0aGUgbnJfaHVnZXBhZ2VzIHN5c2N0bCB0byBhCitzbWFsbGVyIHZhbHVlLiAgVGhlIGtlcm5lbCB3aWxsIGF0dGVtcHQgdG8gYmFsYW5jZSB0aGUgZnJlZWluZyBvZiBodWdlIHBhZ2VzCithY3Jvc3MgYWxsIG5vZGVzIGluIHRoZSBtZW1vcnkgcG9saWN5IG9mIHRoZSB0YXNrIG1vZGlmeWluZyBucl9odWdlcGFnZXMuCitBbnkgZnJlZSBodWdlIHBhZ2VzIG9uIHRoZSBzZWxlY3RlZCBub2RlcyB3aWxsIGJlIGZyZWVkIGJhY2sgdG8gdGhlIGtlcm5lbCdzCitub3JtYWwgcGFnZSBwb29sLgorCitDYXZlYXQ6IFNocmlua2luZyB0aGUgcGVyc2lzdGVudCBodWdlIHBhZ2UgcG9vbCB2aWEgbnJfaHVnZXBhZ2VzIHN1Y2ggdGhhdAoraXQgYmVjb21lcyBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiBodWdlIHBhZ2VzIGluIHVzZSB3aWxsIGNvbnZlcnQgdGhlIGJhbGFuY2UKK29mIHRoZSBpbi11c2UgaHVnZSBwYWdlcyB0byBzdXJwbHVzIGh1Z2UgcGFnZXMuICBUaGlzIHdpbGwgb2NjdXIgZXZlbiBpZgordGhlIG51bWJlciBvZiBzdXJwbHVzIHBhZ2VzIGl0IHdvdWxkIGV4Y2VlZCB0aGUgb3ZlcmNvbW1pdCB2YWx1ZS4gIEFzIGxvbmcgYXMKK3RoaXMgY29uZGl0aW9uIGhvbGRzLS10aGF0IGlzLCB1bnRpbCBucl9odWdlcGFnZXMrbnJfb3ZlcmNvbW1pdF9odWdlcGFnZXMgaXMKK2luY3JlYXNlZCBzdWZmaWNpZW50bHksIG9yIHRoZSBzdXJwbHVzIGh1Z2UgcGFnZXMgZ28gb3V0IG9mIHVzZSBhbmQgYXJlIGZyZWVkLS0KK25vIG1vcmUgc3VycGx1cyBodWdlIHBhZ2VzIHdpbGwgYmUgYWxsb3dlZCB0byBiZSBhbGxvY2F0ZWQuCisKK1dpdGggc3VwcG9ydCBmb3IgbXVsdGlwbGUgaHVnZSBwYWdlIHBvb2xzIGF0IHJ1bi10aW1lIGF2YWlsYWJsZSwgbXVjaCBvZgordGhlIGh1Z2UgcGFnZSB1c2Vyc3BhY2UgaW50ZXJmYWNlIGluIC9wcm9jL3N5cy92bSBoYXMgYmVlbiBkdXBsaWNhdGVkIGluIHN5c2ZzLgorVGhlIC9wcm9jIGludGVyZmFjZXMgZGlzY3Vzc2VkIGFib3ZlIGhhdmUgYmVlbiByZXRhaW5lZCBmb3IgYmFja3dhcmRzCitjb21wYXRpYmlsaXR5LiBUaGUgcm9vdCBodWdlIHBhZ2UgY29udHJvbCBkaXJlY3RvcnkgaW4gc3lzZnMgaXM6CisKKwkvc3lzL2tlcm5lbC9tbS9odWdlcGFnZXMKKworRm9yIGVhY2ggaHVnZSBwYWdlIHNpemUgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbCwgYSBzdWJkaXJlY3RvcnkKK3dpbGwgZXhpc3QsIG9mIHRoZSBmb3JtOgorCisJaHVnZXBhZ2VzLSR7c2l6ZX1rQgorCitJbnNpZGUgZWFjaCBvZiB0aGVzZSBkaXJlY3RvcmllcywgdGhlIHNhbWUgc2V0IG9mIGZpbGVzIHdpbGwgZXhpc3Q6CisKKwlucl9odWdlcGFnZXMKKwlucl9odWdlcGFnZXNfbWVtcG9saWN5CisJbnJfb3ZlcmNvbW1pdF9odWdlcGFnZXMKKwlmcmVlX2h1Z2VwYWdlcworCXJlc3ZfaHVnZXBhZ2VzCisJc3VycGx1c19odWdlcGFnZXMKKword2hpY2ggZnVuY3Rpb24gYXMgZGVzY3JpYmVkIGFib3ZlIGZvciB0aGUgZGVmYXVsdCBodWdlIHBhZ2Utc2l6ZWQgY2FzZS4KKworCitJbnRlcmFjdGlvbiBvZiBUYXNrIE1lbW9yeSBQb2xpY3kgd2l0aCBIdWdlIFBhZ2UgQWxsb2NhdGlvbi9GcmVlaW5nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1doZXRoZXIgaHVnZSBwYWdlcyBhcmUgYWxsb2NhdGVkIGFuZCBmcmVlZCB2aWEgdGhlIC9wcm9jIGludGVyZmFjZSBvcgordGhlIC9zeXNmcyBpbnRlcmZhY2UgdXNpbmcgdGhlIG5yX2h1Z2VwYWdlc19tZW1wb2xpY3kgYXR0cmlidXRlLCB0aGUgTlVNQQorbm9kZXMgZnJvbSB3aGljaCBodWdlIHBhZ2VzIGFyZSBhbGxvY2F0ZWQgb3IgZnJlZWQgYXJlIGNvbnRyb2xsZWQgYnkgdGhlCitOVU1BIG1lbW9yeSBwb2xpY3kgb2YgdGhlIHRhc2sgdGhhdCBtb2RpZmllcyB0aGUgbnJfaHVnZXBhZ2VzX21lbXBvbGljeQorc3lzY3RsIG9yIGF0dHJpYnV0ZS4gIFdoZW4gdGhlIG5yX2h1Z2VwYWdlcyBhdHRyaWJ1dGUgaXMgdXNlZCwgbWVtcG9saWN5CitpcyBpZ25vcmVkLgorCitUaGUgcmVjb21tZW5kZWQgbWV0aG9kIHRvIGFsbG9jYXRlIG9yIGZyZWUgaHVnZSBwYWdlcyB0by9mcm9tIHRoZSBrZXJuZWwKK2h1Z2UgcGFnZSBwb29sLCB1c2luZyB0aGUgbnJfaHVnZXBhZ2VzIGV4YW1wbGUgYWJvdmUsIGlzOgorCisgICAgbnVtYWN0bCAtLWludGVybGVhdmUgPG5vZGUtbGlzdD4gZWNobyAyMCBcCisJCQkJPi9wcm9jL3N5cy92bS9ucl9odWdlcGFnZXNfbWVtcG9saWN5CisKK29yLCBtb3JlIHN1Y2NpbmN0bHk6CisKKyAgICBudW1hY3RsIC1tIDxub2RlLWxpc3Q+IGVjaG8gMjAgPi9wcm9jL3N5cy92bS9ucl9odWdlcGFnZXNfbWVtcG9saWN5CisKK1RoaXMgd2lsbCBhbGxvY2F0ZSBvciBmcmVlIGFicygyMCAtIG5yX2h1Z2VwYWdlcykgdG8gb3IgZnJvbSB0aGUgbm9kZXMKK3NwZWNpZmllZCBpbiA8bm9kZS1saXN0PiwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgbnVtYmVyIG9mIHBlcnNpc3RlbnQgaHVnZSBwYWdlcworaXMgaW5pdGlhbGx5IGxlc3MgdGhhbiBvciBncmVhdGVyIHRoYW4gMjAsIHJlc3BlY3RpdmVseS4gIE5vIGh1Z2UgcGFnZXMgd2lsbCBiZQorYWxsb2NhdGVkIG5vciBmcmVlZCBvbiBhbnkgbm9kZSBub3QgaW5jbHVkZWQgaW4gdGhlIHNwZWNpZmllZCA8bm9kZS1saXN0Pi4KKworV2hlbiBhZGp1c3RpbmcgdGhlIHBlcnNpc3RlbnQgaHVnZXBhZ2UgY291bnQgdmlhIG5yX2h1Z2VwYWdlc19tZW1wb2xpY3ksIGFueQorbWVtb3J5IHBvbGljeSBtb2RlLS1iaW5kLCBwcmVmZXJyZWQsIGxvY2FsIG9yIGludGVybGVhdmUtLW1heSBiZSB1c2VkLiAgVGhlCityZXN1bHRpbmcgZWZmZWN0IG9uIHBlcnNpc3RlbnQgaHVnZSBwYWdlIGFsbG9jYXRpb24gaXMgYXMgZm9sbG93czoKKworMSkgUmVnYXJkbGVzcyBvZiBtZW1wb2xpY3kgbW9kZSBbc2VlIERvY3VtZW50YXRpb24vdm0vbnVtYV9tZW1vcnlfcG9saWN5LnR4dF0sCisgICBwZXJzaXN0ZW50IGh1Z2UgcGFnZXMgd2lsbCBiZSBkaXN0cmlidXRlZCBhY3Jvc3MgdGhlIG5vZGUgb3Igbm9kZXMKKyAgIHNwZWNpZmllZCBpbiB0aGUgbWVtcG9saWN5IGFzIGlmICJpbnRlcmxlYXZlIiBoYWQgYmVlbiBzcGVjaWZpZWQuCisgICBIb3dldmVyLCBpZiBhIG5vZGUgaW4gdGhlIHBvbGljeSBkb2VzIG5vdCBjb250YWluIHN1ZmZpY2llbnQgY29udGlndW91cworICAgbWVtb3J5IGZvciBhIGh1Z2UgcGFnZSwgdGhlIGFsbG9jYXRpb24gd2lsbCBub3QgImZhbGxiYWNrIiB0byB0aGUgbmVhcmVzdAorICAgbmVpZ2hib3Igbm9kZSB3aXRoIHN1ZmZpY2llbnQgY29udGlndW91cyBtZW1vcnkuICBUbyBkbyB0aGlzIHdvdWxkIGNhdXNlCisgICB1bmRlc2lyYWJsZSBpbWJhbGFuY2UgaW4gdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgaHVnZSBwYWdlIHBvb2wsIG9yCisgICBwb3NzaWJseSwgYWxsb2NhdGlvbiBvZiBwZXJzaXN0ZW50IGh1Z2UgcGFnZXMgb24gbm9kZXMgbm90IGFsbG93ZWQgYnkKKyAgIHRoZSB0YXNrJ3MgbWVtb3J5IHBvbGljeS4KKworMikgT25lIG9yIG1vcmUgbm9kZXMgbWF5IGJlIHNwZWNpZmllZCB3aXRoIHRoZSBiaW5kIG9yIGludGVybGVhdmUgcG9saWN5LgorICAgSWYgbW9yZSB0aGFuIG9uZSBub2RlIGlzIHNwZWNpZmllZCB3aXRoIHRoZSBwcmVmZXJyZWQgcG9saWN5LCBvbmx5IHRoZQorICAgbG93ZXN0IG51bWVyaWMgaWQgd2lsbCBiZSB1c2VkLiAgTG9jYWwgcG9saWN5IHdpbGwgc2VsZWN0IHRoZSBub2RlIHdoZXJlCisgICB0aGUgdGFzayBpcyBydW5uaW5nIGF0IHRoZSB0aW1lIHRoZSBub2Rlc19hbGxvd2VkIG1hc2sgaXMgY29uc3RydWN0ZWQuCisgICBGb3IgbG9jYWwgcG9saWN5IHRvIGJlIGRldGVybWluaXN0aWMsIHRoZSB0YXNrIG11c3QgYmUgYm91bmQgdG8gYSBjcHUgb3IKKyAgIGNwdXMgaW4gYSBzaW5nbGUgbm9kZS4gIE90aGVyd2lzZSwgdGhlIHRhc2sgY291bGQgYmUgbWlncmF0ZWQgdG8gc29tZQorICAgb3RoZXIgbm9kZSBhdCBhbnkgdGltZSBhZnRlciBsYXVuY2ggYW5kIHRoZSByZXN1bHRpbmcgbm9kZSB3aWxsIGJlCisgICBpbmRldGVybWluYXRlLiAgVGh1cywgbG9jYWwgcG9saWN5IGlzIG5vdCB2ZXJ5IHVzZWZ1bCBmb3IgdGhpcyBwdXJwb3NlLgorICAgQW55IG9mIHRoZSBvdGhlciBtZW1wb2xpY3kgbW9kZXMgbWF5IGJlIHVzZWQgdG8gc3BlY2lmeSBhIHNpbmdsZSBub2RlLgorCiszKSBUaGUgbm9kZXMgYWxsb3dlZCBtYXNrIHdpbGwgYmUgZGVyaXZlZCBmcm9tIGFueSBub24tZGVmYXVsdCB0YXNrIG1lbXBvbGljeSwKKyAgIHdoZXRoZXIgdGhpcyBwb2xpY3kgd2FzIHNldCBleHBsaWNpdGx5IGJ5IHRoZSB0YXNrIGl0c2VsZiBvciBvbmUgb2YgaXRzCisgICBhbmNlc3RvcnMsIHN1Y2ggYXMgbnVtYWN0bC4gIFRoaXMgbWVhbnMgdGhhdCBpZiB0aGUgdGFzayBpcyBpbnZva2VkIGZyb20gYQorICAgc2hlbGwgd2l0aCBub24tZGVmYXVsdCBwb2xpY3ksIHRoYXQgcG9saWN5IHdpbGwgYmUgdXNlZC4gIE9uZSBjYW4gc3BlY2lmeSBhCisgICBub2RlIGxpc3Qgb2YgImFsbCIgd2l0aCBudW1hY3RsIC0taW50ZXJsZWF2ZSBvciAtLW1lbWJpbmQgWy1tXSB0byBhY2hpZXZlCisgICBpbnRlcmxlYXZpbmcgb3ZlciBhbGwgbm9kZXMgaW4gdGhlIHN5c3RlbSBvciBjcHVzZXQuCisKKzQpIEFueSB0YXNrIG1lbXBvbGljeSBzcGVjaWZlZC0tZS5nLiwgdXNpbmcgbnVtYWN0bC0td2lsbCBiZSBjb25zdHJhaW5lZCBieQorICAgdGhlIHJlc291cmNlIGxpbWl0cyBvZiBhbnkgY3B1c2V0IGluIHdoaWNoIHRoZSB0YXNrIHJ1bnMuICBUaHVzLCB0aGVyZSB3aWxsCisgICBiZSBubyB3YXkgZm9yIGEgdGFzayB3aXRoIG5vbi1kZWZhdWx0IHBvbGljeSBydW5uaW5nIGluIGEgY3B1c2V0IHdpdGggYQorICAgc3Vic2V0IG9mIHRoZSBzeXN0ZW0gbm9kZXMgdG8gYWxsb2NhdGUgaHVnZSBwYWdlcyBvdXRzaWRlIHRoZSBjcHVzZXQKKyAgIHdpdGhvdXQgZmlyc3QgbW92aW5nIHRvIGEgY3B1c2V0IHRoYXQgY29udGFpbnMgYWxsIG9mIHRoZSBkZXNpcmVkIG5vZGVzLgorCis1KSBCb290LXRpbWUgaHVnZSBwYWdlIGFsbG9jYXRpb24gYXR0ZW1wdHMgdG8gZGlzdHJpYnV0ZSB0aGUgcmVxdWVzdGVkIG51bWJlcgorICAgb2YgaHVnZSBwYWdlcyBvdmVyIGFsbCBvbi1saW5lcyBub2RlcyB3aXRoIG1lbW9yeS4KKworUGVyIE5vZGUgSHVnZXBhZ2VzIEF0dHJpYnV0ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0Egc3Vic2V0IG9mIHRoZSBjb250ZW50cyBvZiB0aGUgcm9vdCBodWdlIHBhZ2UgY29udHJvbCBkaXJlY3RvcnkgaW4gc3lzZnMsCitkZXNjcmliZWQgYWJvdmUsIHdpbGwgYmUgcmVwbGljYXRlZCB1bmRlciBlYWNoIHRoZSBzeXN0ZW0gZGV2aWNlIG9mIGVhY2gKK05VTUEgbm9kZSB3aXRoIG1lbW9yeSBpbjoKKworCS9zeXMvZGV2aWNlcy9zeXN0ZW0vbm9kZS9ub2RlWzAtOV0qL2h1Z2VwYWdlcy8KKworVW5kZXIgdGhpcyBkaXJlY3RvcnksIHRoZSBzdWJkaXJlY3RvcnkgZm9yIGVhY2ggc3VwcG9ydGVkIGh1Z2UgcGFnZSBzaXplCitjb250YWlucyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZSBmaWxlczoKKworCW5yX2h1Z2VwYWdlcworCWZyZWVfaHVnZXBhZ2VzCisJc3VycGx1c19odWdlcGFnZXMKKworVGhlIGZyZWVfJyBhbmQgc3VycGx1c18nIGF0dHJpYnV0ZSBmaWxlcyBhcmUgcmVhZC1vbmx5LiAgVGhleSByZXR1cm4gdGhlIG51bWJlcgorb2YgZnJlZSBhbmQgc3VycGx1cyBbb3ZlcmNvbW1pdHRlZF0gaHVnZSBwYWdlcywgcmVzcGVjdGl2ZWx5LCBvbiB0aGUgcGFyZW50Citub2RlLgorCitUaGUgbnJfaHVnZXBhZ2VzIGF0dHJpYnV0ZSByZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgaHVnZSBwYWdlcyBvbiB0aGUKK3NwZWNpZmllZCBub2RlLiAgV2hlbiB0aGlzIGF0dHJpYnV0ZSBpcyB3cml0dGVuLCB0aGUgbnVtYmVyIG9mIHBlcnNpc3RlbnQgaHVnZQorcGFnZXMgb24gdGhlIHBhcmVudCBub2RlIHdpbGwgYmUgYWRqdXN0ZWQgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZSwgaWYgc3VmZmljaWVudAorcmVzb3VyY2VzIGV4aXN0LCByZWdhcmRsZXNzIG9mIHRoZSB0YXNrJ3MgbWVtcG9saWN5IG9yIGNwdXNldCBjb25zdHJhaW50cy4KKworTm90ZSB0aGF0IHRoZSBudW1iZXIgb2Ygb3ZlcmNvbW1pdCBhbmQgcmVzZXJ2ZSBwYWdlcyByZW1haW4gZ2xvYmFsIHF1YW50aXRpZXMsCithcyB3ZSBkb24ndCBrbm93IHVudGlsIGZhdWx0IHRpbWUsIHdoZW4gdGhlIGZhdWx0aW5nIHRhc2sncyBtZW1wb2xpY3kgaXMKK2FwcGxpZWQsIGZyb20gd2hpY2ggbm9kZSB0aGUgaHVnZSBwYWdlIGFsbG9jYXRpb24gd2lsbCBiZSBhdHRlbXB0ZWQuCisKKworVXNpbmcgSHVnZSBQYWdlcworPT09PT09PT09PT09PT09PQorCitJZiB0aGUgdXNlciBhcHBsaWNhdGlvbnMgYXJlIGdvaW5nIHRvIHJlcXVlc3QgaHVnZSBwYWdlcyB1c2luZyBtbWFwIHN5c3RlbQorY2FsbCwgdGhlbiBpdCBpcyByZXF1aXJlZCB0aGF0IHN5c3RlbSBhZG1pbmlzdHJhdG9yIG1vdW50IGEgZmlsZSBzeXN0ZW0gb2YKK3R5cGUgaHVnZXRsYmZzOgorCisgIG1vdW50IC10IGh1Z2V0bGJmcyBcCisJLW8gdWlkPTx2YWx1ZT4sZ2lkPTx2YWx1ZT4sbW9kZT08dmFsdWU+LHBhZ2VzaXplPTx2YWx1ZT4sc2l6ZT08dmFsdWU+LFwKKwltaW5fc2l6ZT08dmFsdWU+LG5yX2lub2Rlcz08dmFsdWU+IG5vbmUgL21udC9odWdlCisKK1RoaXMgY29tbWFuZCBtb3VudHMgYSAocHNldWRvKSBmaWxlc3lzdGVtIG9mIHR5cGUgaHVnZXRsYmZzIG9uIHRoZSBkaXJlY3RvcnkKKy9tbnQvaHVnZS4gIEFueSBmaWxlcyBjcmVhdGVkIG9uIC9tbnQvaHVnZSB1c2VzIGh1Z2UgcGFnZXMuICBUaGUgdWlkIGFuZCBnaWQKK29wdGlvbnMgc2V0cyB0aGUgb3duZXIgYW5kIGdyb3VwIG9mIHRoZSByb290IG9mIHRoZSBmaWxlIHN5c3RlbS4gIEJ5IGRlZmF1bHQKK3RoZSB1aWQgYW5kIGdpZCBvZiB0aGUgY3VycmVudCBwcm9jZXNzIGFyZSB0YWtlbi4gIFRoZSBtb2RlIG9wdGlvbiBzZXRzIHRoZQorbW9kZSBvZiByb290IG9mIGZpbGUgc3lzdGVtIHRvIHZhbHVlICYgMDE3NzcuICBUaGlzIHZhbHVlIGlzIGdpdmVuIGluIG9jdGFsLgorQnkgZGVmYXVsdCB0aGUgdmFsdWUgMDc1NSBpcyBwaWNrZWQuIElmIHRoZSBwYWx0Zm9ybSBzdXBwb3J0cyBtdWx0aXBsZSBodWdlCitwYWdlIHNpemVzLCB0aGUgcGFnZXNpemUgb3B0aW9uIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhlIGh1Z2UgcGFnZSBzaXplIGFuZAorYXNzb2NpYXRlZCBwb29sLiAgcGFnZXNpemUgaXMgc3BlY2lmaWVkIGluIGJ5dGVzLiAgSWYgcGFnZXNpemUgaXMgbm90IHNwZWNpZmllZAordGhlIHBhbHRmb3JtJ3MgZGVmYXVsdCBodWdlIHBhZ2Ugc2l6ZSBhbmQgYXNzb2NpYXRlZCBwb29sIHdpbGwgYmUgdXNlZC4gVGhlCitzaXplIG9wdGlvbiBzZXRzIHRoZSBtYXhpbXVtIHZhbHVlIG9mIG1lbW9yeSAoaHVnZSBwYWdlcykgYWxsb3dlZCBmb3IgdGhhdAorZmlsZXN5c3RlbSAoL21udC9odWdlKS4gIFRoZSBzaXplIG9wdGlvbiBjYW4gYmUgc3BlY2lmaWVkIGluIGJ5dGVzLCBvciBhcyBhCitwZXJjZW50YWdlIG9mIHRoZSBzcGVjaWZpZWQgaHVnZSBwYWdlIHBvb2wgKG5yX2h1Z2VwYWdlcykuICBUaGUgc2l6ZSBpcworcm91bmRlZCBkb3duIHRvIEhQQUdFX1NJWkUgYm91bmRhcnkuICBUaGUgbWluX3NpemUgb3B0aW9uIHNldHMgdGhlIG1pbmltdW0KK3ZhbHVlIG9mIG1lbW9yeSAoaHVnZSBwYWdlcykgYWxsb3dlZCBmb3IgdGhlIGZpbGVzeXN0ZW0uICBtaW5fc2l6ZSBjYW4gYmUKK3NwZWNpZmllZCBpbiB0aGUgc2FtZSB3YXkgYXMgc2l6ZSwgZWl0aGVyIGJ5dGVzIG9yIGEgcGVyY2VudGFnZSBvZiB0aGUKK2h1Z2UgcGFnZSBwb29sLiAgQXQgbW91bnQgdGltZSwgdGhlIG51bWJlciBvZiBodWdlIHBhZ2VzIHNwZWNpZmllZCBieQorbWluX3NpemUgYXJlIHJlc2VydmVkIGZvciB1c2UgYnkgdGhlIGZpbGVzeXN0ZW0uICBJZiB0aGVyZSBhcmUgbm90IGVub3VnaAorZnJlZSBodWdlIHBhZ2VzIGF2YWlsYWJsZSwgdGhlIG1vdW50IHdpbGwgZmFpbC4gIEFzIGh1Z2UgcGFnZXMgYXJlIGFsbG9jYXRlZAordG8gdGhlIGZpbGVzeXN0ZW0gYW5kIGZyZWVkLCB0aGUgcmVzZXJ2ZSBjb3VudCBpcyBhZGp1c3RlZCBzbyB0aGF0IHRoZSBzdW0KK29mIGFsbG9jYXRlZCBhbmQgcmVzZXJ2ZWQgaHVnZSBwYWdlcyBpcyBhbHdheXMgYXQgbGVhc3QgbWluX3NpemUuICBUaGUgb3B0aW9uCitucl9pbm9kZXMgc2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgaW5vZGVzIHRoYXQgL21udC9odWdlIGNhbiB1c2UuICBJZiB0aGUKK3NpemUsIG1pbl9zaXplIG9yIG5yX2lub2RlcyBvcHRpb24gaXMgbm90IHByb3ZpZGVkIG9uIGNvbW1hbmQgbGluZSB0aGVuCitubyBsaW1pdHMgYXJlIHNldC4gIEZvciBwYWdlc2l6ZSwgc2l6ZSwgbWluX3NpemUgYW5kIG5yX2lub2RlcyBvcHRpb25zLCB5b3UKK2NhbiB1c2UgW0d8Z10vW018bV0vW0t8a10gdG8gcmVwcmVzZW50IGdpZ2EvbWVnYS9raWxvLiBGb3IgZXhhbXBsZSwgc2l6ZT0ySworaGFzIHRoZSBzYW1lIG1lYW5pbmcgYXMgc2l6ZT0yMDQ4LgorCitXaGlsZSByZWFkIHN5c3RlbSBjYWxscyBhcmUgc3VwcG9ydGVkIG9uIGZpbGVzIHRoYXQgcmVzaWRlIG9uIGh1Z2V0bGIKK2ZpbGUgc3lzdGVtcywgd3JpdGUgc3lzdGVtIGNhbGxzIGFyZSBub3QuCisKK1JlZ3VsYXIgY2hvd24sIGNoZ3JwLCBhbmQgY2htb2QgY29tbWFuZHMgKHdpdGggcmlnaHQgcGVybWlzc2lvbnMpIGNvdWxkIGJlCit1c2VkIHRvIGNoYW5nZSB0aGUgZmlsZSBhdHRyaWJ1dGVzIG9uIGh1Z2V0bGJmcy4KKworQWxzbywgaXQgaXMgaW1wb3J0YW50IHRvIG5vdGUgdGhhdCBubyBzdWNoIG1vdW50IGNvbW1hbmQgaXMgcmVxdWlyZWQgaWYKK2FwcGxpY2F0aW9ucyBhcmUgZ29pbmcgdG8gdXNlIG9ubHkgc2htYXQvc2htZ2V0IHN5c3RlbSBjYWxscyBvciBtbWFwIHdpdGgKK01BUF9IVUdFVExCLiAgRm9yIGFuIGV4YW1wbGUgb2YgaG93IHRvIHVzZSBtbWFwIHdpdGggTUFQX0hVR0VUTEIgc2VlIG1hcF9odWdldGxiCitiZWxvdy4KKworVXNlcnMgd2hvIHdpc2ggdG8gdXNlIGh1Z2V0bGIgbWVtb3J5IHZpYSBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgc2hvdWxkIGJlIGEKK21lbWJlciBvZiBhIHN1cHBsZW1lbnRhcnkgZ3JvdXAgYW5kIHN5c3RlbSBhZG1pbiBuZWVkcyB0byBjb25maWd1cmUgdGhhdCBnaWQKK2ludG8gL3Byb2Mvc3lzL3ZtL2h1Z2V0bGJfc2htX2dyb3VwLiAgSXQgaXMgcG9zc2libGUgZm9yIHNhbWUgb3IgZGlmZmVyZW50CithcHBsaWNhdGlvbnMgdG8gdXNlIGFueSBjb21iaW5hdGlvbiBvZiBtbWFwcyBhbmQgc2htKiBjYWxscywgdGhvdWdoIHRoZSBtb3VudCBvZgorZmlsZXN5c3RlbSB3aWxsIGJlIHJlcXVpcmVkIGZvciB1c2luZyBtbWFwIGNhbGxzIHdpdGhvdXQgTUFQX0hVR0VUTEIuCisKK1N5c2NhbGxzIHRoYXQgb3BlcmF0ZSBvbiBtZW1vcnkgYmFja2VkIGJ5IGh1Z2V0bGIgcGFnZXMgb25seSBoYXZlIHRoZWlyIGxlbmd0aHMKK2FsaWduZWQgdG8gdGhlIG5hdGl2ZSBwYWdlIHNpemUgb2YgdGhlIHByb2Nlc3NvcjsgdGhleSB3aWxsIG5vcm1hbGx5IGZhaWwgd2l0aAorZXJybm8gc2V0IHRvIEVJTlZBTCBvciBleGNsdWRlIGh1Z2V0bGIgcGFnZXMgdGhhdCBleHRlbmQgYmV5b25kIHRoZSBsZW5ndGggaWYKK25vdCBodWdlcGFnZSBhbGlnbmVkLiAgRm9yIGV4YW1wbGUsIG11bm1hcCgyKSB3aWxsIGZhaWwgaWYgbWVtb3J5IGlzIGJhY2tlZCBieQorYSBodWdldGxiIHBhZ2UgYW5kIHRoZSBsZW5ndGggaXMgc21hbGxlciB0aGFuIHRoZSBodWdlcGFnZSBzaXplLgorCisKK0V4YW1wbGVzCis9PT09PT09PQorCisxKSBtYXBfaHVnZXRsYjogc2VlIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZtL21hcF9odWdldGxiLmMKKworMikgaHVnZXBhZ2Utc2htOiAgc2VlIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZtL2h1Z2VwYWdlLXNobS5jCisKKzMpIGh1Z2VwYWdlLW1tYXA6ICBzZWUgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdm0vaHVnZXBhZ2UtbW1hcC5jCisKKzQpIFRoZSBsaWJodWdldGxiZnMgKGh0dHBzOi8vZ2l0aHViLmNvbS9saWJodWdldGxiZnMvbGliaHVnZXRsYmZzKSBsaWJyYXJ5CisgICBwcm92aWRlcyBhIHdpZGUgcmFuZ2Ugb2YgdXNlcnNwYWNlIHRvb2xzIHRvIGhlbHAgd2l0aCBodWdlIHBhZ2UgdXNhYmlsaXR5LAorICAgZW52aXJvbm1lbnQgc2V0dXAsIGFuZCBjb250cm9sLgorCitLZXJuZWwgZGV2ZWxvcG1lbnQgcmVncmVzc2lvbiB0ZXN0aW5nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBtb3N0IGNvbXBsZXRlIHNldCBvZiBodWdldGxiIHRlc3RzIGFyZSBpbiB0aGUgbGliaHVnZXRsYmZzIHJlcG9zaXRvcnkuCitJZiB5b3UgbW9kaWZ5IGFueSBodWdldGxiIHJlbGF0ZWQgY29kZSwgdXNlIHRoZSBsaWJodWdldGxiZnMgdGVzdCBzdWl0ZQordG8gY2hlY2sgZm9yIHJlZ3Jlc3Npb25zLiAgSW4gYWRkaXRpb24sIGlmIHlvdSBhZGQgYW55IG5ldyBodWdldGxiCitmdW5jdGlvbmFsaXR5LCBwbGVhc2UgYWRkIGFwcHJvcHJpYXRlIHRlc3RzIHRvIGxpYmh1Z2V0bGJmcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdm0vaHdwb2lzb24udHh0IGIvRG9jdW1lbnRhdGlvbi92bS9od3BvaXNvbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFlODlhOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdm0vaHdwb2lzb24udHh0CkBAIC0wLDAgKzEsMTg3IEBACitXaGF0IGlzIGh3cG9pc29uPworCitVcGNvbWluZyBJbnRlbCBDUFVzIGhhdmUgc3VwcG9ydCBmb3IgcmVjb3ZlcmluZyBmcm9tIHNvbWUgbWVtb3J5IGVycm9ycworKGBgTUNBIHJlY292ZXJ5JycpLiBUaGlzIHJlcXVpcmVzIHRoZSBPUyB0byBkZWNsYXJlIGEgcGFnZSAicG9pc29uZWQiLAora2lsbCB0aGUgcHJvY2Vzc2VzIGFzc29jaWF0ZWQgd2l0aCBpdCBhbmQgYXZvaWQgdXNpbmcgaXQgaW4gdGhlIGZ1dHVyZS4KKworVGhpcyBwYXRjaGtpdCBpbXBsZW1lbnRzIHRoZSBuZWNlc3NhcnkgaW5mcmFzdHJ1Y3R1cmUgaW4gdGhlIFZNLgorCitUbyBxdW90ZSB0aGUgb3ZlcnZpZXcgY29tbWVudDoKKworICogSGlnaCBsZXZlbCBtYWNoaW5lIGNoZWNrIGhhbmRsZXIuIEhhbmRsZXMgcGFnZXMgcmVwb3J0ZWQgYnkgdGhlCisgKiBoYXJkd2FyZSBhcyBiZWluZyBjb3JydXB0ZWQgdXN1YWxseSBkdWUgdG8gYSAyYml0IEVDQyBtZW1vcnkgb3IgY2FjaGUKKyAqIGZhaWx1cmUuCisgKgorICogVGhpcyBmb2N1c3NlcyBvbiBwYWdlcyBkZXRlY3RlZCBhcyBjb3JydXB0ZWQgaW4gdGhlIGJhY2tncm91bmQuCisgKiBXaGVuIHRoZSBjdXJyZW50IENQVSB0cmllcyB0byBjb25zdW1lIGNvcnJ1cHRpb24gdGhlIGN1cnJlbnRseQorICogcnVubmluZyBwcm9jZXNzIGNhbiBqdXN0IGJlIGtpbGxlZCBkaXJlY3RseSBpbnN0ZWFkLiBUaGlzIGltcGxpZXMKKyAqIHRoYXQgaWYgdGhlIGVycm9yIGNhbm5vdCBiZSBoYW5kbGVkIGZvciBzb21lIHJlYXNvbiBpdCdzIHNhZmUgdG8KKyAqIGp1c3QgaWdub3JlIGl0IGJlY2F1c2Ugbm8gY29ycnVwdGlvbiBoYXMgYmVlbiBjb25zdW1lZCB5ZXQuIEluc3RlYWQKKyAqIHdoZW4gdGhhdCBoYXBwZW5zIGFub3RoZXIgbWFjaGluZSBjaGVjayB3aWxsIGhhcHBlbi4KKyAqCisgKiBIYW5kbGVzIHBhZ2UgY2FjaGUgcGFnZXMgaW4gdmFyaW91cyBzdGF0ZXMuIFRoZSB0cmlja3kgcGFydAorICogaGVyZSBpcyB0aGF0IHdlIGNhbiBhY2Nlc3MgYW55IHBhZ2UgYXN5bmNocm9ub3VzIHRvIG90aGVyIFZNCisgKiB1c2VycywgYmVjYXVzZSBtZW1vcnkgZmFpbHVyZXMgY291bGQgaGFwcGVuIGFueXRpbWUgYW5kIGFueXdoZXJlLAorICogcG9zc2libHkgdmlvbGF0aW5nIHNvbWUgb2YgdGhlaXIgYXNzdW1wdGlvbnMuIFRoaXMgaXMgd2h5IHRoaXMgY29kZQorICogaGFzIHRvIGJlIGV4dHJlbWVseSBjYXJlZnVsLiBHZW5lcmFsbHkgaXQgdHJpZXMgdG8gdXNlIG5vcm1hbCBsb2NraW5nCisgKiBydWxlcywgYXMgaW4gZ2V0IHRoZSBzdGFuZGFyZCBsb2NrcywgZXZlbiBpZiB0aGF0IG1lYW5zIHRoZQorICogZXJyb3IgaGFuZGxpbmcgdGFrZXMgcG90ZW50aWFsbHkgYSBsb25nIHRpbWUuCisgKgorICogU29tZSBvZiB0aGUgb3BlcmF0aW9ucyBoZXJlIGFyZSBzb21ld2hhdCBpbmVmZmljaWVudCBhbmQgaGF2ZSBub24KKyAqIGxpbmVhciBhbGdvcml0aG1pYyBjb21wbGV4aXR5LCBiZWNhdXNlIHRoZSBkYXRhIHN0cnVjdHVyZXMgaGF2ZSBub3QKKyAqIGJlZW4gb3B0aW1pemVkIGZvciB0aGlzIGNhc2UuIFRoaXMgaXMgaW4gcGFydGljdWxhciB0aGUgY2FzZQorICogZm9yIHRoZSBtYXBwaW5nIGZyb20gYSB2bWEgdG8gYSBwcm9jZXNzLiBTaW5jZSB0aGlzIGNhc2UgaXMgZXhwZWN0ZWQKKyAqIHRvIGJlIHJhcmUgd2UgaG9wZSB3ZSBjYW4gZ2V0IGF3YXkgd2l0aCB0aGlzLgorCitUaGUgY29kZSBjb25zaXN0cyBvZiBhIHRoZSBoaWdoIGxldmVsIGhhbmRsZXIgaW4gbW0vbWVtb3J5LWZhaWx1cmUuYywKK2EgbmV3IHBhZ2UgcG9pc29uIGJpdCBhbmQgdmFyaW91cyBjaGVja3MgaW4gdGhlIFZNIHRvIGhhbmRsZSBwb2lzb25lZAorcGFnZXMuCisKK1RoZSBtYWluIHRhcmdldCByaWdodCBub3cgaXMgS1ZNIGd1ZXN0cywgYnV0IGl0IHdvcmtzIGZvciBhbGwga2luZHMKK29mIGFwcGxpY2F0aW9ucy4gS1ZNIHN1cHBvcnQgcmVxdWlyZXMgYSByZWNlbnQgcWVtdS1rdm0gcmVsZWFzZS4KKworRm9yIHRoZSBLVk0gdXNlIHRoZXJlIHdhcyBuZWVkIGZvciBhIG5ldyBzaWduYWwgdHlwZSBzbyB0aGF0CitLVk0gY2FuIGluamVjdCB0aGUgbWFjaGluZSBjaGVjayBpbnRvIHRoZSBndWVzdCB3aXRoIHRoZSBwcm9wZXIKK2FkZHJlc3MuIFRoaXMgaW4gdGhlb3J5IGFsbG93cyBvdGhlciBhcHBsaWNhdGlvbnMgdG8gaGFuZGxlCittZW1vcnkgZmFpbHVyZXMgdG9vLiBUaGUgZXhwZWN0aW9uIGlzIHRoYXQgbmVhciBhbGwgYXBwbGljYXRpb25zCit3b24ndCBkbyB0aGF0LCBidXQgc29tZSB2ZXJ5IHNwZWNpYWxpemVkIG9uZXMgbWlnaHQuCisKKy0tLQorCitUaGVyZSBhcmUgdHdvIChhY3R1YWxseSB0aHJlZSkgbW9kaSBtZW1vcnkgZmFpbHVyZSByZWNvdmVyeSBjYW4gYmUgaW46CisKK3ZtLm1lbW9yeV9mYWlsdXJlX3JlY292ZXJ5IHN5c2N0bCBzZXQgdG8gemVybzoKKwlBbGwgbWVtb3J5IGZhaWx1cmVzIGNhdXNlIGEgcGFuaWMuIERvIG5vdCBhdHRlbXB0IHJlY292ZXJ5LgorCShvbiB4ODYgdGhpcyBjYW4gYmUgYWxzbyBhZmZlY3RlZCBieSB0aGUgdG9sZXJhbnQgbGV2ZWwgb2YgdGhlCisJTUNFIHN1YnN5c3RlbSkKKworZWFybHkga2lsbAorCShjYW4gYmUgY29udHJvbGxlZCBnbG9iYWxseSBhbmQgcGVyIHByb2Nlc3MpCisJU2VuZCBTSUdCVVMgdG8gdGhlIGFwcGxpY2F0aW9uIGFzIHNvb24gYXMgdGhlIGVycm9yIGlzIGRldGVjdGVkCisJVGhpcyBhbGxvd3MgYXBwbGljYXRpb25zIHdobyBjYW4gcHJvY2VzcyBtZW1vcnkgZXJyb3JzIGluIGEgZ2VudGxlCisJd2F5IChlLmcuIGRyb3AgYWZmZWN0ZWQgb2JqZWN0KQorCVRoaXMgaXMgdGhlIG1vZGUgdXNlZCBieSBLVk0gcWVtdS4KKworbGF0ZSBraWxsCisJU2VuZCBTSUdCVVMgd2hlbiB0aGUgYXBwbGljYXRpb24gcnVucyBpbnRvIHRoZSBjb3JydXB0ZWQgcGFnZS4KKwlUaGlzIGlzIGJlc3QgZm9yIG1lbW9yeSBlcnJvciB1bmF3YXJlIGFwcGxpY2F0aW9ucyBhbmQgZGVmYXVsdAorCU5vdGUgc29tZSBwYWdlcyBhcmUgYWx3YXlzIGhhbmRsZWQgYXMgbGF0ZSBraWxsLgorCistLS0KKworVXNlciBjb250cm9sOgorCit2bS5tZW1vcnlfZmFpbHVyZV9yZWNvdmVyeQorCVNlZSBzeXNjdGwudHh0CisKK3ZtLm1lbW9yeV9mYWlsdXJlX2Vhcmx5X2tpbGwKKwlFbmFibGUgZWFybHkga2lsbCBtb2RlIGdsb2JhbGx5CisKK1BSX01DRV9LSUxMCisJU2V0IGVhcmx5L2xhdGUga2lsbCBtb2RlL3JldmVydCB0byBzeXN0ZW0gZGVmYXVsdAorCWFyZzE6IFBSX01DRV9LSUxMX0NMRUFSOiBSZXZlcnQgdG8gc3lzdGVtIGRlZmF1bHQKKwlhcmcxOiBQUl9NQ0VfS0lMTF9TRVQ6IGFyZzIgZGVmaW5lcyB0aHJlYWQgc3BlY2lmaWMgbW9kZQorCQlQUl9NQ0VfS0lMTF9FQVJMWTogRWFybHkga2lsbAorCQlQUl9NQ0VfS0lMTF9MQVRFOiAgTGF0ZSBraWxsCisJCVBSX01DRV9LSUxMX0RFRkFVTFQ6IFVzZSBzeXN0ZW0gZ2xvYmFsIGRlZmF1bHQKKwlOb3RlIHRoYXQgaWYgeW91IHdhbnQgdG8gaGF2ZSBhIGRlZGljYXRlZCB0aHJlYWQgd2hpY2ggaGFuZGxlcworCXRoZSBTSUdCVVMoQlVTX01DRUVSUl9BTykgb24gYmVoYWxmIG9mIHRoZSBwcm9jZXNzLCB5b3Ugc2hvdWxkCisJY2FsbCBwcmN0bChQUl9NQ0VfS0lMTF9FQVJMWSkgb24gdGhlIGRlc2lnbmF0ZWQgdGhyZWFkLiBPdGhlcndpc2UsCisJdGhlIFNJR0JVUyBpcyBzZW50IHRvIHRoZSBtYWluIHRocmVhZC4KKworUFJfTUNFX0tJTExfR0VUCisJcmV0dXJuIGN1cnJlbnQgbW9kZQorCisKKy0tLQorCitUZXN0aW5nOgorCittYWR2aXNlKE1BRFZfSFdQT0lTT04sIC4uLi4pCisJKGFzIHJvb3QpCisJUG9pc29uIGEgcGFnZSBpbiB0aGUgcHJvY2VzcyBmb3IgdGVzdGluZworCisKK2h3cG9pc29uLWluamVjdCBtb2R1bGUgdGhyb3VnaCBkZWJ1Z2ZzCisKKy9zeXMvZGVidWcvaHdwb2lzb24vCisKK2NvcnJ1cHQtcGZuCisKK0luamVjdCBod3BvaXNvbiBmYXVsdCBhdCBQRk4gZWNob2VkIGludG8gdGhpcyBmaWxlLiBUaGlzIGRvZXMKK3NvbWUgZWFybHkgZmlsdGVyaW5nIHRvIGF2b2lkIGNvcnJ1cHRlZCB1bmludGVuZGVkIHBhZ2VzIGluIHRlc3Qgc3VpdGVzLgorCit1bnBvaXNvbi1wZm4KKworU29mdHdhcmUtdW5wb2lzb24gcGFnZSBhdCBQRk4gZWNob2VkIGludG8gdGhpcyBmaWxlLiBUaGlzCit3YXkgYSBwYWdlIGNhbiBiZSByZXVzZWQgYWdhaW4uCitUaGlzIG9ubHkgd29ya3MgZm9yIExpbnV4IGluamVjdGVkIGZhaWx1cmVzLCBub3QgZm9yIHJlYWwKK21lbW9yeSBmYWlsdXJlcy4KKworTm90ZSB0aGVzZSBpbmplY3Rpb24gaW50ZXJmYWNlcyBhcmUgbm90IHN0YWJsZSBhbmQgbWlnaHQgY2hhbmdlIGJldHdlZW4KK2tlcm5lbCB2ZXJzaW9ucworCitjb3JydXB0LWZpbHRlci1kZXYtbWFqb3IKK2NvcnJ1cHQtZmlsdGVyLWRldi1taW5vcgorCitPbmx5IGhhbmRsZSBtZW1vcnkgZmFpbHVyZXMgdG8gcGFnZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWxlIHN5c3RlbSBkZWZpbmVkCitieSBibG9jayBkZXZpY2UgbWFqb3IvbWlub3IuICAtMVUgaXMgdGhlIHdpbGRjYXJkIHZhbHVlLgorVGhpcyBzaG91bGQgYmUgb25seSB1c2VkIGZvciB0ZXN0aW5nIHdpdGggYXJ0aWZpY2lhbCBpbmplY3Rpb24uCisKK2NvcnJ1cHQtZmlsdGVyLW1lbWNnCisKK0xpbWl0IGluamVjdGlvbiB0byBwYWdlcyBvd25lZCBieSBtZW1ncm91cC4gU3BlY2lmaWVkIGJ5IGlub2RlIG51bWJlcgorb2YgdGhlIG1lbWNnLgorCitFeGFtcGxlOgorICAgICAgICBta2RpciAvc3lzL2ZzL2Nncm91cC9tZW0vaHdwb2lzb24KKworICAgICAgICB1c2VtZW0gLW0gMTAwIC1zIDEwMDAgJgorICAgICAgICBlY2hvIGBqb2JzIC1wYCA+IC9zeXMvZnMvY2dyb3VwL21lbS9od3BvaXNvbi90YXNrcworCisgICAgICAgIG1lbWNnX2lubz0kKGxzIC1pZCAvc3lzL2ZzL2Nncm91cC9tZW0vaHdwb2lzb24gfCBjdXQgLWYxIC1kJyAnKQorICAgICAgICBlY2hvICRtZW1jZ19pbm8gPiAvZGVidWcvaHdwb2lzb24vY29ycnVwdC1maWx0ZXItbWVtY2cKKworICAgICAgICBwYWdlLXR5cGVzIC1wIGBwaWRvZiBpbml0YCAgIC0taHdwb2lzb24gICMgc2hhbGwgZG8gbm90aGluZworICAgICAgICBwYWdlLXR5cGVzIC1wIGBwaWRvZiB1c2VtZW1gIC0taHdwb2lzb24gICMgcG9pc29uIGl0cyBwYWdlcworCitjb3JydXB0LWZpbHRlci1mbGFncy1tYXNrCitjb3JydXB0LWZpbHRlci1mbGFncy12YWx1ZQorCitXaGVuIHNwZWNpZmllZCwgb25seSBwb2lzb24gcGFnZXMgaWYgKChwYWdlX2ZsYWdzICYgbWFzaykgPT0gdmFsdWUpLgorVGhpcyBhbGxvd3Mgc3RyZXNzIHRlc3Rpbmcgb2YgbWFueSBraW5kcyBvZiBwYWdlcy4gVGhlIHBhZ2VfZmxhZ3MKK2FyZSB0aGUgc2FtZSBhcyBpbiAvcHJvYy9rcGFnZWZsYWdzLiBUaGUgZmxhZyBiaXRzIGFyZSBkZWZpbmVkIGluCitpbmNsdWRlL2xpbnV4L2tlcm5lbC1wYWdlLWZsYWdzLmggYW5kIGRvY3VtZW50ZWQgaW4KK0RvY3VtZW50YXRpb24vdm0vcGFnZW1hcC50eHQKKworQXJjaGl0ZWN0dXJlIHNwZWNpZmljIE1DRSBpbmplY3RvcgorCit4ODYgaGFzIG1jZS1pbmplY3QsIG1jZS10ZXN0CisKK1NvbWUgcG9ydGFibGUgaHdwb2lzb24gdGVzdCBwcm9ncmFtcyBpbiBtY2UtdGVzdCwgc2VlIGJsb3cuCisKKy0tLQorCitSZWZlcmVuY2VzOgorCitodHRwOi8vaGFsb2JhdGVzLmRlL21jZS1sYzA5LTIucGRmCisJT3ZlcnZpZXcgcHJlc2VudGF0aW9uIGZyb20gTGludXhDb24gMDkKKworZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS91dGlscy9jcHUvbWNlL21jZS10ZXN0LmdpdAorCVRlc3Qgc3VpdGUgKGh3cG9pc29uIHNwZWNpZmljIHBvcnRhYmxlIHRlc3RzIGluIHRzcmMpCisKK2dpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vdXRpbHMvY3B1L21jZS9tY2UtaW5qZWN0LmdpdAorCXg4NiBzcGVjaWZpYyBpbmplY3RvcgorCisKKy0tLQorCitMaW1pdGF0aW9uczoKKworLSBOb3QgYWxsIHBhZ2UgdHlwZXMgYXJlIHN1cHBvcnRlZCBhbmQgbmV2ZXIgd2lsbC4gTW9zdCBrZXJuZWwgaW50ZXJuYWwKK29iamVjdHMgY2Fubm90IGJlIHJlY292ZXJlZCwgb25seSBMUlUgcGFnZXMgZm9yIG5vdy4KKy0gUmlnaHQgbm93IGh1Z2VwYWdlIHN1cHBvcnQgaXMgbWlzc2luZy4KKworLS0tCitBbmRpIEtsZWVuLCBPY3QgMjAwOQorCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZtL2lkbGVfcGFnZV90cmFja2luZy50eHQgYi9Eb2N1bWVudGF0aW9uL3ZtL2lkbGVfcGFnZV90cmFja2luZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVkY2MzYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdm0vaWRsZV9wYWdlX3RyYWNraW5nLnR4dApAQCAtMCwwICsxLDk4IEBACitNT1RJVkFUSU9OCisKK1RoZSBpZGxlIHBhZ2UgdHJhY2tpbmcgZmVhdHVyZSBhbGxvd3MgdG8gdHJhY2sgd2hpY2ggbWVtb3J5IHBhZ2VzIGFyZSBiZWluZworYWNjZXNzZWQgYnkgYSB3b3JrbG9hZCBhbmQgd2hpY2ggYXJlIGlkbGUuIFRoaXMgaW5mb3JtYXRpb24gY2FuIGJlIHVzZWZ1bCBmb3IKK2VzdGltYXRpbmcgdGhlIHdvcmtsb2FkJ3Mgd29ya2luZyBzZXQgc2l6ZSwgd2hpY2gsIGluIHR1cm4sIGNhbiBiZSB0YWtlbiBpbnRvCithY2NvdW50IHdoZW4gY29uZmlndXJpbmcgdGhlIHdvcmtsb2FkIHBhcmFtZXRlcnMsIHNldHRpbmcgbWVtb3J5IGNncm91cCBsaW1pdHMsCitvciBkZWNpZGluZyB3aGVyZSB0byBwbGFjZSB0aGUgd29ya2xvYWQgd2l0aGluIGEgY29tcHV0ZSBjbHVzdGVyLgorCitJdCBpcyBlbmFibGVkIGJ5IENPTkZJR19JRExFX1BBR0VfVFJBQ0tJTkc9eS4KKworVVNFUiBBUEkKKworVGhlIGlkbGUgcGFnZSB0cmFja2luZyBBUEkgaXMgbG9jYXRlZCBhdCAvc3lzL2tlcm5lbC9tbS9wYWdlX2lkbGUuIEN1cnJlbnRseSwKK2l0IGNvbnNpc3RzIG9mIHRoZSBvbmx5IHJlYWQtd3JpdGUgZmlsZSwgL3N5cy9rZXJuZWwvbW0vcGFnZV9pZGxlL2JpdG1hcC4KKworVGhlIGZpbGUgaW1wbGVtZW50cyBhIGJpdG1hcCB3aGVyZSBlYWNoIGJpdCBjb3JyZXNwb25kcyB0byBhIG1lbW9yeSBwYWdlLiBUaGUKK2JpdG1hcCBpcyByZXByZXNlbnRlZCBieSBhbiBhcnJheSBvZiA4LWJ5dGUgaW50ZWdlcnMsIGFuZCB0aGUgcGFnZSBhdCBQRk4gI2kgaXMKK21hcHBlZCB0byBiaXQgI2klNjQgb2YgYXJyYXkgZWxlbWVudCAjaS82NCwgYnl0ZSBvcmRlciBpcyBuYXRpdmUuIFdoZW4gYSBiaXQgaXMKK3NldCwgdGhlIGNvcnJlc3BvbmRpbmcgcGFnZSBpcyBpZGxlLgorCitBIHBhZ2UgaXMgY29uc2lkZXJlZCBpZGxlIGlmIGl0IGhhcyBub3QgYmVlbiBhY2Nlc3NlZCBzaW5jZSBpdCB3YXMgbWFya2VkIGlkbGUKKyhmb3IgbW9yZSBkZXRhaWxzIG9uIHdoYXQgImFjY2Vzc2VkIiBhY3R1YWxseSBtZWFucyBzZWUgdGhlIElNUExFTUVOVEFUSU9OCitERVRBSUxTIHNlY3Rpb24pLiBUbyBtYXJrIGEgcGFnZSBpZGxlIG9uZSBoYXMgdG8gc2V0IHRoZSBiaXQgY29ycmVzcG9uZGluZyB0bwordGhlIHBhZ2UgYnkgd3JpdGluZyB0byB0aGUgZmlsZS4gQSB2YWx1ZSB3cml0dGVuIHRvIHRoZSBmaWxlIGlzIE9SLWVkIHdpdGggdGhlCitjdXJyZW50IGJpdG1hcCB2YWx1ZS4KKworT25seSBhY2Nlc3NlcyB0byB1c2VyIG1lbW9yeSBwYWdlcyBhcmUgdHJhY2tlZC4gVGhlc2UgYXJlIHBhZ2VzIG1hcHBlZCB0byBhCitwcm9jZXNzIGFkZHJlc3Mgc3BhY2UsIHBhZ2UgY2FjaGUgYW5kIGJ1ZmZlciBwYWdlcywgc3dhcCBjYWNoZSBwYWdlcy4gRm9yIG90aGVyCitwYWdlIHR5cGVzIChlLmcuIFNMQUIgcGFnZXMpIGFuIGF0dGVtcHQgdG8gbWFyayBhIHBhZ2UgaWRsZSBpcyBzaWxlbnRseSBpZ25vcmVkLAorYW5kIGhlbmNlIHN1Y2ggcGFnZXMgYXJlIG5ldmVyIHJlcG9ydGVkIGlkbGUuCisKK0ZvciBodWdlIHBhZ2VzIHRoZSBpZGxlIGZsYWcgaXMgc2V0IG9ubHkgb24gdGhlIGhlYWQgcGFnZSwgc28gb25lIGhhcyB0byByZWFkCisvcHJvYy9rcGFnZWZsYWdzIGluIG9yZGVyIHRvIGNvcnJlY3RseSBjb3VudCBpZGxlIGh1Z2UgcGFnZXMuCisKK1JlYWRpbmcgZnJvbSBvciB3cml0aW5nIHRvIC9zeXMva2VybmVsL21tL3BhZ2VfaWRsZS9iaXRtYXAgd2lsbCByZXR1cm4KKy1FSU5WQUwgaWYgeW91IGFyZSBub3Qgc3RhcnRpbmcgdGhlIHJlYWQvd3JpdGUgb24gYW4gOC1ieXRlIGJvdW5kYXJ5LCBvcgoraWYgdGhlIHNpemUgb2YgdGhlIHJlYWQvd3JpdGUgaXMgbm90IGEgbXVsdGlwbGUgb2YgOCBieXRlcy4gV3JpdGluZyB0bwordGhpcyBmaWxlIGJleW9uZCBtYXggUEZOIHdpbGwgcmV0dXJuIC1FTlhJTy4KKworVGhhdCBzYWlkLCBpbiBvcmRlciB0byBlc3RpbWF0ZSB0aGUgYW1vdW50IG9mIHBhZ2VzIHRoYXQgYXJlIG5vdCB1c2VkIGJ5IGEKK3dvcmtsb2FkIG9uZSBzaG91bGQ6CisKKyAxLiBNYXJrIGFsbCB0aGUgd29ya2xvYWQncyBwYWdlcyBhcyBpZGxlIGJ5IHNldHRpbmcgY29ycmVzcG9uZGluZyBiaXRzIGluCisgICAgL3N5cy9rZXJuZWwvbW0vcGFnZV9pZGxlL2JpdG1hcC4gVGhlIHBhZ2VzIGNhbiBiZSBmb3VuZCBieSByZWFkaW5nCisgICAgL3Byb2MvcGlkL3BhZ2VtYXAgaWYgdGhlIHdvcmtsb2FkIGlzIHJlcHJlc2VudGVkIGJ5IGEgcHJvY2Vzcywgb3IgYnkKKyAgICBmaWx0ZXJpbmcgb3V0IGFsaWVuIHBhZ2VzIHVzaW5nIC9wcm9jL2twYWdlY2dyb3VwIGluIGNhc2UgdGhlIHdvcmtsb2FkIGlzCisgICAgcGxhY2VkIGluIGEgbWVtb3J5IGNncm91cC4KKworIDIuIFdhaXQgdW50aWwgdGhlIHdvcmtsb2FkIGFjY2Vzc2VzIGl0cyB3b3JraW5nIHNldC4KKworIDMuIFJlYWQgL3N5cy9rZXJuZWwvbW0vcGFnZV9pZGxlL2JpdG1hcCBhbmQgY291bnQgdGhlIG51bWJlciBvZiBiaXRzIHNldC4gSWYKKyAgICBvbmUgd2FudHMgdG8gaWdub3JlIGNlcnRhaW4gdHlwZXMgb2YgcGFnZXMsIGUuZy4gbWxvY2tlZCBwYWdlcyBzaW5jZSB0aGV5CisgICAgYXJlIG5vdCByZWNsYWltYWJsZSwgaGUgb3Igc2hlIGNhbiBmaWx0ZXIgdGhlbSBvdXQgdXNpbmcgL3Byb2Mva3BhZ2VmbGFncy4KKworU2VlIERvY3VtZW50YXRpb24vdm0vcGFnZW1hcC50eHQgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgL3Byb2MvcGlkL3BhZ2VtYXAsCisvcHJvYy9rcGFnZWZsYWdzLCBhbmQgL3Byb2Mva3BhZ2VjZ3JvdXAuCisKK0lNUExFTUVOVEFUSU9OIERFVEFJTFMKKworVGhlIGtlcm5lbCBpbnRlcm5hbGx5IGtlZXBzIHRyYWNrIG9mIGFjY2Vzc2VzIHRvIHVzZXIgbWVtb3J5IHBhZ2VzIGluIG9yZGVyIHRvCityZWNsYWltIHVucmVmZXJlbmNlZCBwYWdlcyBmaXJzdCBvbiBtZW1vcnkgc2hvcnRhZ2UgY29uZGl0aW9ucy4gQSBwYWdlIGlzCitjb25zaWRlcmVkIHJlZmVyZW5jZWQgaWYgaXQgaGFzIGJlZW4gcmVjZW50bHkgYWNjZXNzZWQgdmlhIGEgcHJvY2VzcyBhZGRyZXNzCitzcGFjZSwgaW4gd2hpY2ggY2FzZSBvbmUgb3IgbW9yZSBQVEVzIGl0IGlzIG1hcHBlZCB0byB3aWxsIGhhdmUgdGhlIEFjY2Vzc2VkIGJpdAorc2V0LCBvciBtYXJrZWQgYWNjZXNzZWQgZXhwbGljaXRseSBieSB0aGUga2VybmVsIChzZWUgbWFya19wYWdlX2FjY2Vzc2VkKCkpLiBUaGUKK2xhdHRlciBoYXBwZW5zIHdoZW46CisKKyAtIGEgdXNlcnNwYWNlIHByb2Nlc3MgcmVhZHMgb3Igd3JpdGVzIGEgcGFnZSB1c2luZyBhIHN5c3RlbSBjYWxsIChlLmcuIHJlYWQoMikKKyAgIG9yIHdyaXRlKDIpKQorCisgLSBhIHBhZ2UgdGhhdCBpcyB1c2VkIGZvciBzdG9yaW5nIGZpbGVzeXN0ZW0gYnVmZmVycyBpcyByZWFkIG9yIHdyaXR0ZW4sCisgICBiZWNhdXNlIGEgcHJvY2VzcyBuZWVkcyBmaWxlc3lzdGVtIG1ldGFkYXRhIHN0b3JlZCBpbiBpdCAoZS5nLiBsaXN0cyBhCisgICBkaXJlY3RvcnkgdHJlZSkKKworIC0gYSBwYWdlIGlzIGFjY2Vzc2VkIGJ5IGEgZGV2aWNlIGRyaXZlciB1c2luZyBnZXRfdXNlcl9wYWdlcygpCisKK1doZW4gYSBkaXJ0eSBwYWdlIGlzIHdyaXR0ZW4gdG8gc3dhcCBvciBkaXNrIGFzIGEgcmVzdWx0IG9mIG1lbW9yeSByZWNsYWltIG9yCitleGNlZWRpbmcgdGhlIGRpcnR5IG1lbW9yeSBsaW1pdCwgaXQgaXMgbm90IG1hcmtlZCByZWZlcmVuY2VkLgorCitUaGUgaWRsZSBtZW1vcnkgdHJhY2tpbmcgZmVhdHVyZSBhZGRzIGEgbmV3IHBhZ2UgZmxhZywgdGhlIElkbGUgZmxhZy4gVGhpcyBmbGFnCitpcyBzZXQgbWFudWFsbHksIGJ5IHdyaXRpbmcgdG8gL3N5cy9rZXJuZWwvbW0vcGFnZV9pZGxlL2JpdG1hcCAoc2VlIHRoZSBVU0VSIEFQSQorc2VjdGlvbiksIGFuZCBjbGVhcmVkIGF1dG9tYXRpY2FsbHkgd2hlbmV2ZXIgYSBwYWdlIGlzIHJlZmVyZW5jZWQgYXMgZGVmaW5lZAorYWJvdmUuCisKK1doZW4gYSBwYWdlIGlzIG1hcmtlZCBpZGxlLCB0aGUgQWNjZXNzZWQgYml0IG11c3QgYmUgY2xlYXJlZCBpbiBhbGwgUFRFcyBpdCBpcworbWFwcGVkIHRvLCBvdGhlcndpc2Ugd2Ugd2lsbCBub3QgYmUgYWJsZSB0byBkZXRlY3QgYWNjZXNzZXMgdG8gdGhlIHBhZ2UgY29taW5nCitmcm9tIGEgcHJvY2VzcyBhZGRyZXNzIHNwYWNlLiBUbyBhdm9pZCBpbnRlcmZlcmVuY2Ugd2l0aCB0aGUgcmVjbGFpbWVyLCB3aGljaCwKK2FzIG5vdGVkIGFib3ZlLCB1c2VzIHRoZSBBY2Nlc3NlZCBiaXQgdG8gcHJvbW90ZSBhY3RpdmVseSByZWZlcmVuY2VkIHBhZ2VzLCBvbmUKK21vcmUgcGFnZSBmbGFnIGlzIGludHJvZHVjZWQsIHRoZSBZb3VuZyBmbGFnLiBXaGVuIHRoZSBQVEUgQWNjZXNzZWQgYml0IGlzCitjbGVhcmVkIGFzIGEgcmVzdWx0IG9mIHNldHRpbmcgb3IgdXBkYXRpbmcgYSBwYWdlJ3MgSWRsZSBmbGFnLCB0aGUgWW91bmcgZmxhZworaXMgc2V0IG9uIHRoZSBwYWdlLiBUaGUgcmVjbGFpbWVyIHRyZWF0cyB0aGUgWW91bmcgZmxhZyBhcyBhbiBleHRyYSBQVEUKK0FjY2Vzc2VkIGJpdCBhbmQgdGhlcmVmb3JlIHdpbGwgY29uc2lkZXIgc3VjaCBhIHBhZ2UgYXMgcmVmZXJlbmNlZC4KKworU2luY2UgdGhlIGlkbGUgbWVtb3J5IHRyYWNraW5nIGZlYXR1cmUgaXMgYmFzZWQgb24gdGhlIG1lbW9yeSByZWNsYWltZXIgbG9naWMsCitpdCBvbmx5IHdvcmtzIHdpdGggcGFnZXMgdGhhdCBhcmUgb24gYW4gTFJVIGxpc3QsIG90aGVyIHBhZ2VzIGFyZSBzaWxlbnRseQoraWdub3JlZC4gVGhhdCBtZWFucyBpdCB3aWxsIGlnbm9yZSBhIHVzZXIgbWVtb3J5IHBhZ2UgaWYgaXQgaXMgaXNvbGF0ZWQsIGJ1dAorc2luY2UgdGhlcmUgYXJlIHVzdWFsbHkgbm90IG1hbnkgb2YgdGhlbSwgaXQgc2hvdWxkIG5vdCBhZmZlY3QgdGhlIG92ZXJhbGwKK3Jlc3VsdCBub3RpY2VhYmx5LiBJbiBvcmRlciBub3QgdG8gc3RhbGwgc2Nhbm5pbmcgb2YgdGhlIGlkbGUgcGFnZSBiaXRtYXAsCitsb2NrZWQgcGFnZXMgbWF5IGJlIHNraXBwZWQgdG9vLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92bS9rc20udHh0IGIvRG9jdW1lbnRhdGlvbi92bS9rc20udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNGE4ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZtL2tzbS50eHQKQEAgLTAsMCArMSw5NyBAQAorSG93IHRvIHVzZSB0aGUgS2VybmVsIFNhbWVwYWdlIE1lcmdpbmcgZmVhdHVyZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitLU00gaXMgYSBtZW1vcnktc2F2aW5nIGRlLWR1cGxpY2F0aW9uIGZlYXR1cmUsIGVuYWJsZWQgYnkgQ09ORklHX0tTTT15LAorYWRkZWQgdG8gdGhlIExpbnV4IGtlcm5lbCBpbiAyLjYuMzIuICBTZWUgbW0va3NtLmMgZm9yIGl0cyBpbXBsZW1lbnRhdGlvbiwKK2FuZCBodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8zMDY3MDQvIGFuZCBodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8zMzA1ODkvCisKK1RoZSBLU00gZGFlbW9uIGtzbWQgcGVyaW9kaWNhbGx5IHNjYW5zIHRob3NlIGFyZWFzIG9mIHVzZXIgbWVtb3J5IHdoaWNoCitoYXZlIGJlZW4gcmVnaXN0ZXJlZCB3aXRoIGl0LCBsb29raW5nIGZvciBwYWdlcyBvZiBpZGVudGljYWwgY29udGVudCB3aGljaAorY2FuIGJlIHJlcGxhY2VkIGJ5IGEgc2luZ2xlIHdyaXRlLXByb3RlY3RlZCBwYWdlICh3aGljaCBpcyBhdXRvbWF0aWNhbGx5Citjb3BpZWQgaWYgYSBwcm9jZXNzIGxhdGVyIHdhbnRzIHRvIHVwZGF0ZSBpdHMgY29udGVudCkuCisKK0tTTSB3YXMgb3JpZ2luYWxseSBkZXZlbG9wZWQgZm9yIHVzZSB3aXRoIEtWTSAod2hlcmUgaXQgd2FzIGtub3duIGFzCitLZXJuZWwgU2hhcmVkIE1lbW9yeSksIHRvIGZpdCBtb3JlIHZpcnR1YWwgbWFjaGluZXMgaW50byBwaHlzaWNhbCBtZW1vcnksCitieSBzaGFyaW5nIHRoZSBkYXRhIGNvbW1vbiBiZXR3ZWVuIHRoZW0uICBCdXQgaXQgY2FuIGJlIHVzZWZ1bCB0byBhbnkKK2FwcGxpY2F0aW9uIHdoaWNoIGdlbmVyYXRlcyBtYW55IGluc3RhbmNlcyBvZiB0aGUgc2FtZSBkYXRhLgorCitLU00gb25seSBtZXJnZXMgYW5vbnltb3VzIChwcml2YXRlKSBwYWdlcywgbmV2ZXIgcGFnZWNhY2hlIChmaWxlKSBwYWdlcy4KK0tTTSdzIG1lcmdlZCBwYWdlcyB3ZXJlIG9yaWdpbmFsbHkgbG9ja2VkIGludG8ga2VybmVsIG1lbW9yeSwgYnV0IGNhbiBub3cKK2JlIHN3YXBwZWQgb3V0IGp1c3QgbGlrZSBvdGhlciB1c2VyIHBhZ2VzIChidXQgc2hhcmluZyBpcyBicm9rZW4gd2hlbiB0aGV5CithcmUgc3dhcHBlZCBiYWNrIGluOiBrc21kIG11c3QgcmVkaXNjb3ZlciB0aGVpciBpZGVudGl0eSBhbmQgbWVyZ2UgYWdhaW4pLgorCitLU00gb25seSBvcGVyYXRlcyBvbiB0aG9zZSBhcmVhcyBvZiBhZGRyZXNzIHNwYWNlIHdoaWNoIGFuIGFwcGxpY2F0aW9uCitoYXMgYWR2aXNlZCB0byBiZSBsaWtlbHkgY2FuZGlkYXRlcyBmb3IgbWVyZ2luZywgYnkgdXNpbmcgdGhlIG1hZHZpc2UoMikKK3N5c3RlbSBjYWxsOiBpbnQgbWFkdmlzZShhZGRyLCBsZW5ndGgsIE1BRFZfTUVSR0VBQkxFKS4KKworVGhlIGFwcCBtYXkgY2FsbCBpbnQgbWFkdmlzZShhZGRyLCBsZW5ndGgsIE1BRFZfVU5NRVJHRUFCTEUpIHRvIGNhbmNlbAordGhhdCBhZHZpY2UgYW5kIHJlc3RvcmUgdW5zaGFyZWQgcGFnZXM6IHdoZXJldXBvbiBLU00gdW5tZXJnZXMgd2hhdGV2ZXIKK2l0IG1lcmdlZCBpbiB0aGF0IHJhbmdlLiAgTm90ZTogdGhpcyB1bm1lcmdpbmcgY2FsbCBtYXkgc3VkZGVubHkgcmVxdWlyZQorbW9yZSBtZW1vcnkgdGhhbiBpcyBhdmFpbGFibGUgLSBwb3NzaWJseSBmYWlsaW5nIHdpdGggRUFHQUlOLCBidXQgbW9yZQorcHJvYmFibHkgYXJvdXNpbmcgdGhlIE91dC1PZi1NZW1vcnkga2lsbGVyLgorCitJZiBLU00gaXMgbm90IGNvbmZpZ3VyZWQgaW50byB0aGUgcnVubmluZyBrZXJuZWwsIG1hZHZpc2UgTUFEVl9NRVJHRUFCTEUKK2FuZCBNQURWX1VOTUVSR0VBQkxFIHNpbXBseSBmYWlsIHdpdGggRUlOVkFMLiAgSWYgdGhlIHJ1bm5pbmcga2VybmVsIHdhcworYnVpbHQgd2l0aCBDT05GSUdfS1NNPXksIHRob3NlIGNhbGxzIHdpbGwgbm9ybWFsbHkgc3VjY2VlZDogZXZlbiBpZiB0aGUKK3RoZSBLU00gZGFlbW9uIGlzIG5vdCBjdXJyZW50bHkgcnVubmluZywgTUFEVl9NRVJHRUFCTEUgc3RpbGwgcmVnaXN0ZXJzCit0aGUgcmFuZ2UgZm9yIHdoZW5ldmVyIHRoZSBLU00gZGFlbW9uIGlzIHN0YXJ0ZWQ7IGV2ZW4gaWYgdGhlIHJhbmdlCitjYW5ub3QgY29udGFpbiBhbnkgcGFnZXMgd2hpY2ggS1NNIGNvdWxkIGFjdHVhbGx5IG1lcmdlOyBldmVuIGlmCitNQURWX1VOTUVSR0VBQkxFIGlzIGFwcGxpZWQgdG8gYSByYW5nZSB3aGljaCB3YXMgbmV2ZXIgTUFEVl9NRVJHRUFCTEUuCisKK0xpa2Ugb3RoZXIgbWFkdmlzZSBjYWxscywgdGhleSBhcmUgaW50ZW5kZWQgZm9yIHVzZSBvbiBtYXBwZWQgYXJlYXMgb2YKK3RoZSB1c2VyIGFkZHJlc3Mgc3BhY2U6IHRoZXkgd2lsbCByZXBvcnQgRU5PTUVNIGlmIHRoZSBzcGVjaWZpZWQgcmFuZ2UKK2luY2x1ZGVzIHVubWFwcGVkIGdhcHMgKHRob3VnaCB3b3JraW5nIG9uIHRoZSBpbnRlcnZlbmluZyBtYXBwZWQgYXJlYXMpLAorYW5kIG1pZ2h0IGZhaWwgd2l0aCBFQUdBSU4gaWYgbm90IGVub3VnaCBtZW1vcnkgZm9yIGludGVybmFsIHN0cnVjdHVyZXMuCisKK0FwcGxpY2F0aW9ucyBzaG91bGQgYmUgY29uc2lkZXJhdGUgaW4gdGhlaXIgdXNlIG9mIE1BRFZfTUVSR0VBQkxFLAorcmVzdHJpY3RpbmcgaXRzIHVzZSB0byBhcmVhcyBsaWtlbHkgdG8gYmVuZWZpdC4gIEtTTSdzIHNjYW5zIG1heSB1c2UgYSBsb3QKK29mIHByb2Nlc3NpbmcgcG93ZXI6IHNvbWUgaW5zdGFsbGF0aW9ucyB3aWxsIGRpc2FibGUgS1NNIGZvciB0aGF0IHJlYXNvbi4KKworVGhlIEtTTSBkYWVtb24gaXMgY29udHJvbGxlZCBieSBzeXNmcyBmaWxlcyBpbiAvc3lzL2tlcm5lbC9tbS9rc20vLAorcmVhZGFibGUgYnkgYWxsIGJ1dCB3cml0YWJsZSBvbmx5IGJ5IHJvb3Q6CisKK3BhZ2VzX3RvX3NjYW4gICAgLSBob3cgbWFueSBwcmVzZW50IHBhZ2VzIHRvIHNjYW4gYmVmb3JlIGtzbWQgZ29lcyB0byBzbGVlcAorICAgICAgICAgICAgICAgICAgIGUuZy4gImVjaG8gMTAwID4gL3N5cy9rZXJuZWwvbW0va3NtL3BhZ2VzX3RvX3NjYW4iCisgICAgICAgICAgICAgICAgICAgRGVmYXVsdDogMTAwIChjaG9zZW4gZm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXMpCisKK3NsZWVwX21pbGxpc2VjcyAgLSBob3cgbWFueSBtaWxsaXNlY29uZHMga3NtZCBzaG91bGQgc2xlZXAgYmVmb3JlIG5leHQgc2NhbgorICAgICAgICAgICAgICAgICAgIGUuZy4gImVjaG8gMjAgPiAvc3lzL2tlcm5lbC9tbS9rc20vc2xlZXBfbWlsbGlzZWNzIgorICAgICAgICAgICAgICAgICAgIERlZmF1bHQ6IDIwIChjaG9zZW4gZm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXMpCisKK21lcmdlX2Fjcm9zc19ub2RlcyAtIHNwZWNpZmllcyBpZiBwYWdlcyBmcm9tIGRpZmZlcmVudCBudW1hIG5vZGVzIGNhbiBiZSBtZXJnZWQuCisgICAgICAgICAgICAgICAgICAgV2hlbiBzZXQgdG8gMCwga3NtIG1lcmdlcyBvbmx5IHBhZ2VzIHdoaWNoIHBoeXNpY2FsbHkKKyAgICAgICAgICAgICAgICAgICByZXNpZGUgaW4gdGhlIG1lbW9yeSBhcmVhIG9mIHNhbWUgTlVNQSBub2RlLiBUaGF0IGJyaW5ncworICAgICAgICAgICAgICAgICAgIGxvd2VyIGxhdGVuY3kgdG8gYWNjZXNzIG9mIHNoYXJlZCBwYWdlcy4gU3lzdGVtcyB3aXRoIG1vcmUKKyAgICAgICAgICAgICAgICAgICBub2RlcywgYXQgc2lnbmlmaWNhbnQgTlVNQSBkaXN0YW5jZXMsIGFyZSBsaWtlbHkgdG8gYmVuZWZpdAorICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIGxvd2VyIGxhdGVuY3kgb2Ygc2V0dGluZyAwLiBTbWFsbGVyIHN5c3RlbXMsIHdoaWNoCisgICAgICAgICAgICAgICAgICAgbmVlZCB0byBtaW5pbWl6ZSBtZW1vcnkgdXNhZ2UsIGFyZSBsaWtlbHkgdG8gYmVuZWZpdCBmcm9tCisgICAgICAgICAgICAgICAgICAgdGhlIGdyZWF0ZXIgc2hhcmluZyBvZiBzZXR0aW5nIDEgKGRlZmF1bHQpLiBZb3UgbWF5IHdpc2ggdG8KKyAgICAgICAgICAgICAgICAgICBjb21wYXJlIGhvdyB5b3VyIHN5c3RlbSBwZXJmb3JtcyB1bmRlciBlYWNoIHNldHRpbmcsIGJlZm9yZQorICAgICAgICAgICAgICAgICAgIGRlY2lkaW5nIG9uIHdoaWNoIHRvIHVzZS4gbWVyZ2VfYWNyb3NzX25vZGVzIHNldHRpbmcgY2FuIGJlCisgICAgICAgICAgICAgICAgICAgY2hhbmdlZCBvbmx5IHdoZW4gdGhlcmUgYXJlIG5vIGtzbSBzaGFyZWQgcGFnZXMgaW4gc3lzdGVtOgorICAgICAgICAgICAgICAgICAgIHNldCBydW4gMiB0byB1bm1lcmdlIHBhZ2VzIGZpcnN0LCB0aGVuIHRvIDEgYWZ0ZXIgY2hhbmdpbmcKKyAgICAgICAgICAgICAgICAgICBtZXJnZV9hY3Jvc3Nfbm9kZXMsIHRvIHJlbWVyZ2UgYWNjb3JkaW5nIHRvIHRoZSBuZXcgc2V0dGluZy4KKyAgICAgICAgICAgICAgICAgICBEZWZhdWx0OiAxIChtZXJnaW5nIGFjcm9zcyBub2RlcyBhcyBpbiBlYXJsaWVyIHJlbGVhc2VzKQorCitydW4gICAgICAgICAgICAgIC0gc2V0IDAgdG8gc3RvcCBrc21kIGZyb20gcnVubmluZyBidXQga2VlcCBtZXJnZWQgcGFnZXMsCisgICAgICAgICAgICAgICAgICAgc2V0IDEgdG8gcnVuIGtzbWQgZS5nLiAiZWNobyAxID4gL3N5cy9rZXJuZWwvbW0va3NtL3J1biIsCisgICAgICAgICAgICAgICAgICAgc2V0IDIgdG8gc3RvcCBrc21kIGFuZCB1bm1lcmdlIGFsbCBwYWdlcyBjdXJyZW50bHkgbWVyZ2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBsZWF2ZSBtZXJnZWFibGUgYXJlYXMgcmVnaXN0ZXJlZCBmb3IgbmV4dCBydW4KKyAgICAgICAgICAgICAgICAgICBEZWZhdWx0OiAwIChtdXN0IGJlIGNoYW5nZWQgdG8gMSB0byBhY3RpdmF0ZSBLU00sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IGlmIENPTkZJR19TWVNGUyBpcyBkaXNhYmxlZCkKKworVGhlIGVmZmVjdGl2ZW5lc3Mgb2YgS1NNIGFuZCBNQURWX01FUkdFQUJMRSBpcyBzaG93biBpbiAvc3lzL2tlcm5lbC9tbS9rc20vOgorCitwYWdlc19zaGFyZWQgICAgIC0gaG93IG1hbnkgc2hhcmVkIHBhZ2VzIGFyZSBiZWluZyB1c2VkCitwYWdlc19zaGFyaW5nICAgIC0gaG93IG1hbnkgbW9yZSBzaXRlcyBhcmUgc2hhcmluZyB0aGVtIGkuZS4gaG93IG11Y2ggc2F2ZWQKK3BhZ2VzX3Vuc2hhcmVkICAgLSBob3cgbWFueSBwYWdlcyB1bmlxdWUgYnV0IHJlcGVhdGVkbHkgY2hlY2tlZCBmb3IgbWVyZ2luZworcGFnZXNfdm9sYXRpbGUgICAtIGhvdyBtYW55IHBhZ2VzIGNoYW5naW5nIHRvbyBmYXN0IHRvIGJlIHBsYWNlZCBpbiBhIHRyZWUKK2Z1bGxfc2NhbnMgICAgICAgLSBob3cgbWFueSB0aW1lcyBhbGwgbWVyZ2VhYmxlIGFyZWFzIGhhdmUgYmVlbiBzY2FubmVkCisKK0EgaGlnaCByYXRpbyBvZiBwYWdlc19zaGFyaW5nIHRvIHBhZ2VzX3NoYXJlZCBpbmRpY2F0ZXMgZ29vZCBzaGFyaW5nLCBidXQKK2EgaGlnaCByYXRpbyBvZiBwYWdlc191bnNoYXJlZCB0byBwYWdlc19zaGFyaW5nIGluZGljYXRlcyB3YXN0ZWQgZWZmb3J0LgorcGFnZXNfdm9sYXRpbGUgZW1icmFjZXMgc2V2ZXJhbCBkaWZmZXJlbnQga2luZHMgb2YgYWN0aXZpdHksIGJ1dCBhIGhpZ2gKK3Byb3BvcnRpb24gdGhlcmUgd291bGQgYWxzbyBpbmRpY2F0ZSBwb29yIHVzZSBvZiBtYWR2aXNlIE1BRFZfTUVSR0VBQkxFLgorCitJemlrIEVpZHVzLAorSHVnaCBEaWNraW5zLCAxNyBOb3YgMjAwOQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92bS9udW1hIGIvRG9jdW1lbnRhdGlvbi92bS9udW1hCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZTAxMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZtL251bWEKQEAgLTAsMCArMSwxNDkgQEAKK1N0YXJ0ZWQgTm92IDE5OTkgYnkgS2Fub2ogU2FyY2FyIDxrYW5vakBzZ2kuY29tPgorCitXaGF0IGlzIE5VTUE/CisKK1RoaXMgcXVlc3Rpb24gY2FuIGJlIGFuc3dlcmVkIGZyb20gYSBjb3VwbGUgb2YgcGVyc3BlY3RpdmVzOiAgdGhlCitoYXJkd2FyZSB2aWV3IGFuZCB0aGUgTGludXggc29mdHdhcmUgdmlldy4KKworRnJvbSB0aGUgaGFyZHdhcmUgcGVyc3BlY3RpdmUsIGEgTlVNQSBzeXN0ZW0gaXMgYSBjb21wdXRlciBwbGF0Zm9ybSB0aGF0Citjb21wcmlzZXMgbXVsdGlwbGUgY29tcG9uZW50cyBvciBhc3NlbWJsaWVzIGVhY2ggb2Ygd2hpY2ggbWF5IGNvbnRhaW4gMAorb3IgbW9yZSBDUFVzLCBsb2NhbCBtZW1vcnksIGFuZC9vciBJTyBidXNlcy4gIEZvciBicmV2aXR5IGFuZCB0bworZGlzYW1iaWd1YXRlIHRoZSBoYXJkd2FyZSB2aWV3IG9mIHRoZXNlIHBoeXNpY2FsIGNvbXBvbmVudHMvYXNzZW1ibGllcworZnJvbSB0aGUgc29mdHdhcmUgYWJzdHJhY3Rpb24gdGhlcmVvZiwgd2UnbGwgY2FsbCB0aGUgY29tcG9uZW50cy9hc3NlbWJsaWVzCisnY2VsbHMnIGluIHRoaXMgZG9jdW1lbnQuCisKK0VhY2ggb2YgdGhlICdjZWxscycgbWF5IGJlIHZpZXdlZCBhcyBhbiBTTVAgW3N5bW1ldHJpYyBtdWx0aS1wcm9jZXNzb3JdIHN1YnNldAorb2YgdGhlIHN5c3RlbS0tYWx0aG91Z2ggc29tZSBjb21wb25lbnRzIG5lY2Vzc2FyeSBmb3IgYSBzdGFuZC1hbG9uZSBTTVAgc3lzdGVtCittYXkgbm90IGJlIHBvcHVsYXRlZCBvbiBhbnkgZ2l2ZW4gY2VsbC4gICBUaGUgY2VsbHMgb2YgdGhlIE5VTUEgc3lzdGVtIGFyZQorY29ubmVjdGVkIHRvZ2V0aGVyIHdpdGggc29tZSBzb3J0IG9mIHN5c3RlbSBpbnRlcmNvbm5lY3QtLWUuZy4sIGEgY3Jvc3NiYXIgb3IKK3BvaW50LXRvLXBvaW50IGxpbmsgYXJlIGNvbW1vbiB0eXBlcyBvZiBOVU1BIHN5c3RlbSBpbnRlcmNvbm5lY3RzLiAgQm90aCBvZgordGhlc2UgdHlwZXMgb2YgaW50ZXJjb25uZWN0cyBjYW4gYmUgYWdncmVnYXRlZCB0byBjcmVhdGUgTlVNQSBwbGF0Zm9ybXMgd2l0aAorY2VsbHMgYXQgbXVsdGlwbGUgZGlzdGFuY2VzIGZyb20gb3RoZXIgY2VsbHMuCisKK0ZvciBMaW51eCwgdGhlIE5VTUEgcGxhdGZvcm1zIG9mIGludGVyZXN0IGFyZSBwcmltYXJpbHkgd2hhdCBpcyBrbm93biBhcyBDYWNoZQorQ29oZXJlbnQgTlVNQSBvciBjY05VTUEgc3lzdGVtcy4gICBXaXRoIGNjTlVNQSBzeXN0ZW1zLCBhbGwgbWVtb3J5IGlzIHZpc2libGUKK3RvIGFuZCBhY2Nlc3NpYmxlIGZyb20gYW55IENQVSBhdHRhY2hlZCB0byBhbnkgY2VsbCBhbmQgY2FjaGUgY29oZXJlbmN5CitpcyBoYW5kbGVkIGluIGhhcmR3YXJlIGJ5IHRoZSBwcm9jZXNzb3IgY2FjaGVzIGFuZC9vciB0aGUgc3lzdGVtIGludGVyY29ubmVjdC4KKworTWVtb3J5IGFjY2VzcyB0aW1lIGFuZCBlZmZlY3RpdmUgbWVtb3J5IGJhbmR3aWR0aCB2YXJpZXMgZGVwZW5kaW5nIG9uIGhvdyBmYXIKK2F3YXkgdGhlIGNlbGwgY29udGFpbmluZyB0aGUgQ1BVIG9yIElPIGJ1cyBtYWtpbmcgdGhlIG1lbW9yeSBhY2Nlc3MgaXMgZnJvbSB0aGUKK2NlbGwgY29udGFpbmluZyB0aGUgdGFyZ2V0IG1lbW9yeS4gIEZvciBleGFtcGxlLCBhY2Nlc3MgdG8gbWVtb3J5IGJ5IENQVXMKK2F0dGFjaGVkIHRvIHRoZSBzYW1lIGNlbGwgd2lsbCBleHBlcmllbmNlIGZhc3RlciBhY2Nlc3MgdGltZXMgYW5kIGhpZ2hlcgorYmFuZHdpZHRocyB0aGFuIGFjY2Vzc2VzIHRvIG1lbW9yeSBvbiBvdGhlciwgcmVtb3RlIGNlbGxzLiAgTlVNQSBwbGF0Zm9ybXMKK2NhbiBoYXZlIGNlbGxzIGF0IG11bHRpcGxlIHJlbW90ZSBkaXN0YW5jZXMgZnJvbSBhbnkgZ2l2ZW4gY2VsbC4KKworUGxhdGZvcm0gdmVuZG9ycyBkb24ndCBidWlsZCBOVU1BIHN5c3RlbXMganVzdCB0byBtYWtlIHNvZnR3YXJlIGRldmVsb3BlcnMnCitsaXZlcyBpbnRlcmVzdGluZy4gIFJhdGhlciwgdGhpcyBhcmNoaXRlY3R1cmUgaXMgYSBtZWFucyB0byBwcm92aWRlIHNjYWxhYmxlCittZW1vcnkgYmFuZHdpZHRoLiAgSG93ZXZlciwgdG8gYWNoaWV2ZSBzY2FsYWJsZSBtZW1vcnkgYmFuZHdpZHRoLCBzeXN0ZW0gYW5kCithcHBsaWNhdGlvbiBzb2Z0d2FyZSBtdXN0IGFycmFuZ2UgZm9yIGEgbGFyZ2UgbWFqb3JpdHkgb2YgdGhlIG1lbW9yeSByZWZlcmVuY2VzCitbY2FjaGUgbWlzc2VzXSB0byBiZSB0byAibG9jYWwiIG1lbW9yeS0tbWVtb3J5IG9uIHRoZSBzYW1lIGNlbGwsIGlmIGFueS0tb3IKK3RvIHRoZSBjbG9zZXN0IGNlbGwgd2l0aCBtZW1vcnkuCisKK1RoaXMgbGVhZHMgdG8gdGhlIExpbnV4IHNvZnR3YXJlIHZpZXcgb2YgYSBOVU1BIHN5c3RlbToKKworTGludXggZGl2aWRlcyB0aGUgc3lzdGVtJ3MgaGFyZHdhcmUgcmVzb3VyY2VzIGludG8gbXVsdGlwbGUgc29mdHdhcmUKK2Fic3RyYWN0aW9ucyBjYWxsZWQgIm5vZGVzIi4gIExpbnV4IG1hcHMgdGhlIG5vZGVzIG9udG8gdGhlIHBoeXNpY2FsIGNlbGxzCitvZiB0aGUgaGFyZHdhcmUgcGxhdGZvcm0sIGFic3RyYWN0aW5nIGF3YXkgc29tZSBvZiB0aGUgZGV0YWlscyBmb3Igc29tZQorYXJjaGl0ZWN0dXJlcy4gIEFzIHdpdGggcGh5c2ljYWwgY2VsbHMsIHNvZnR3YXJlIG5vZGVzIG1heSBjb250YWluIDAgb3IgbW9yZQorQ1BVcywgbWVtb3J5IGFuZC9vciBJTyBidXNlcy4gIEFuZCwgYWdhaW4sIG1lbW9yeSBhY2Nlc3NlcyB0byBtZW1vcnkgb24KKyJjbG9zZXIiIG5vZGVzLS1ub2RlcyB0aGF0IG1hcCB0byBjbG9zZXIgY2VsbHMtLXdpbGwgZ2VuZXJhbGx5IGV4cGVyaWVuY2UKK2Zhc3RlciBhY2Nlc3MgdGltZXMgYW5kIGhpZ2hlciBlZmZlY3RpdmUgYmFuZHdpZHRoIHRoYW4gYWNjZXNzZXMgdG8gbW9yZQorcmVtb3RlIGNlbGxzLgorCitGb3Igc29tZSBhcmNoaXRlY3R1cmVzLCBzdWNoIGFzIHg4NiwgTGludXggd2lsbCAiaGlkZSIgYW55IG5vZGUgcmVwcmVzZW50aW5nIGEKK3BoeXNpY2FsIGNlbGwgdGhhdCBoYXMgbm8gbWVtb3J5IGF0dGFjaGVkLCBhbmQgcmVhc3NpZ24gYW55IENQVXMgYXR0YWNoZWQgdG8KK3RoYXQgY2VsbCB0byBhIG5vZGUgcmVwcmVzZW50aW5nIGEgY2VsbCB0aGF0IGRvZXMgaGF2ZSBtZW1vcnkuICBUaHVzLCBvbgordGhlc2UgYXJjaGl0ZWN0dXJlcywgb25lIGNhbm5vdCBhc3N1bWUgdGhhdCBhbGwgQ1BVcyB0aGF0IExpbnV4IGFzc29jaWF0ZXMgd2l0aAorYSBnaXZlbiBub2RlIHdpbGwgc2VlIHRoZSBzYW1lIGxvY2FsIG1lbW9yeSBhY2Nlc3MgdGltZXMgYW5kIGJhbmR3aWR0aC4KKworSW4gYWRkaXRpb24sIGZvciBzb21lIGFyY2hpdGVjdHVyZXMsIGFnYWluIHg4NiBpcyBhbiBleGFtcGxlLCBMaW51eCBzdXBwb3J0cwordGhlIGVtdWxhdGlvbiBvZiBhZGRpdGlvbmFsIG5vZGVzLiAgRm9yIE5VTUEgZW11bGF0aW9uLCBsaW51eCB3aWxsIGNhcnZlIHVwCit0aGUgZXhpc3Rpbmcgbm9kZXMtLW9yIHRoZSBzeXN0ZW0gbWVtb3J5IGZvciBub24tTlVNQSBwbGF0Zm9ybXMtLWludG8gbXVsdGlwbGUKK25vZGVzLiAgRWFjaCBlbXVsYXRlZCBub2RlIHdpbGwgbWFuYWdlIGEgZnJhY3Rpb24gb2YgdGhlIHVuZGVybHlpbmcgY2VsbHMnCitwaHlzaWNhbCBtZW1vcnkuICBOVU1BIGVtbHVhdGlvbiBpcyB1c2VmdWwgZm9yIHRlc3RpbmcgTlVNQSBrZXJuZWwgYW5kCithcHBsaWNhdGlvbiBmZWF0dXJlcyBvbiBub24tTlVNQSBwbGF0Zm9ybXMsIGFuZCBhcyBhIHNvcnQgb2YgbWVtb3J5IHJlc291cmNlCittYW5hZ2VtZW50IG1lY2hhbmlzbSB3aGVuIHVzZWQgdG9nZXRoZXIgd2l0aCBjcHVzZXRzLgorW3NlZSBEb2N1bWVudGF0aW9uL2Nncm91cHMvY3B1c2V0cy50eHRdCisKK0ZvciBlYWNoIG5vZGUgd2l0aCBtZW1vcnksIExpbnV4IGNvbnN0cnVjdHMgYW4gaW5kZXBlbmRlbnQgbWVtb3J5IG1hbmFnZW1lbnQKK3N1YnN5c3RlbSwgY29tcGxldGUgd2l0aCBpdHMgb3duIGZyZWUgcGFnZSBsaXN0cywgaW4tdXNlIHBhZ2UgbGlzdHMsIHVzYWdlCitzdGF0aXN0aWNzIGFuZCBsb2NrcyB0byBtZWRpYXRlIGFjY2Vzcy4gIEluIGFkZGl0aW9uLCBMaW51eCBjb25zdHJ1Y3RzIGZvcgorZWFjaCBtZW1vcnkgem9uZSBbb25lIG9yIG1vcmUgb2YgRE1BLCBETUEzMiwgTk9STUFMLCBISUdIX01FTU9SWSwgTU9WQUJMRV0sCithbiBvcmRlcmVkICJ6b25lbGlzdCIuICBBIHpvbmVsaXN0IHNwZWNpZmllcyB0aGUgem9uZXMvbm9kZXMgdG8gdmlzaXQgd2hlbiBhCitzZWxlY3RlZCB6b25lL25vZGUgY2Fubm90IHNhdGlzZnkgdGhlIGFsbG9jYXRpb24gcmVxdWVzdC4gIFRoaXMgc2l0dWF0aW9uLAord2hlbiBhIHpvbmUgaGFzIG5vIGF2YWlsYWJsZSBtZW1vcnkgdG8gc2F0aXNmeSBhIHJlcXVlc3QsIGlzIGNhbGxlZAorIm92ZXJmbG93IiBvciAiZmFsbGJhY2siLgorCitCZWNhdXNlIHNvbWUgbm9kZXMgY29udGFpbiBtdWx0aXBsZSB6b25lcyBjb250YWluaW5nIGRpZmZlcmVudCB0eXBlcyBvZgorbWVtb3J5LCBMaW51eCBtdXN0IGRlY2lkZSB3aGV0aGVyIHRvIG9yZGVyIHRoZSB6b25lbGlzdHMgc3VjaCB0aGF0IGFsbG9jYXRpb25zCitmYWxsIGJhY2sgdG8gdGhlIHNhbWUgem9uZSB0eXBlIG9uIGEgZGlmZmVyZW50IG5vZGUsIG9yIHRvIGEgZGlmZmVyZW50IHpvbmUKK3R5cGUgb24gdGhlIHNhbWUgbm9kZS4gIFRoaXMgaXMgYW4gaW1wb3J0YW50IGNvbnNpZGVyYXRpb24gYmVjYXVzZSBzb21lIHpvbmVzLAorc3VjaCBhcyBETUEgb3IgRE1BMzIsIHJlcHJlc2VudCByZWxhdGl2ZWx5IHNjYXJjZSByZXNvdXJjZXMuICBMaW51eCBjaG9vc2VzCithIGRlZmF1bHQgem9uZWxpc3Qgb3JkZXIgYmFzZWQgb24gdGhlIHNpemVzIG9mIHRoZSB2YXJpb3VzIHpvbmUgdHlwZXMgcmVsYXRpdmUKK3RvIHRoZSB0b3RhbCBtZW1vcnkgb2YgdGhlIG5vZGUgYW5kIHRoZSB0b3RhbCBtZW1vcnkgb2YgdGhlIHN5c3RlbS4gIFRoZQorZGVmYXVsdCB6b25lbGlzdCBvcmRlciBtYXkgYmUgb3ZlcnJpZGRlbiB1c2luZyB0aGUgbnVtYV96b25lbGlzdF9vcmRlciBrZXJuZWwKK2Jvb3QgcGFyYW1ldGVyIG9yIHN5c2N0bC4gIFtzZWUgRG9jdW1lbnRhdGlvbi9rZXJuZWwtcGFyYW1ldGVycy50eHQgYW5kCitEb2N1bWVudGF0aW9uL3N5c2N0bC92bS50eHRdCisKK0J5IGRlZmF1bHQsIExpbnV4IHdpbGwgYXR0ZW1wdCB0byBzYXRpc2Z5IG1lbW9yeSBhbGxvY2F0aW9uIHJlcXVlc3RzIGZyb20gdGhlCitub2RlIHRvIHdoaWNoIHRoZSBDUFUgdGhhdCBleGVjdXRlcyB0aGUgcmVxdWVzdCBpcyBhc3NpZ25lZC4gIFNwZWNpZmljYWxseSwKK0xpbnV4IHdpbGwgYXR0ZW1wdCB0byBhbGxvY2F0ZSBmcm9tIHRoZSBmaXJzdCBub2RlIGluIHRoZSBhcHByb3ByaWF0ZSB6b25lbGlzdAorZm9yIHRoZSBub2RlIHdoZXJlIHRoZSByZXF1ZXN0IG9yaWdpbmF0ZXMuICBUaGlzIGlzIGNhbGxlZCAibG9jYWwgYWxsb2NhdGlvbi4iCitJZiB0aGUgImxvY2FsIiBub2RlIGNhbm5vdCBzYXRpc2Z5IHRoZSByZXF1ZXN0LCB0aGUga2VybmVsIHdpbGwgZXhhbWluZSBvdGhlcgorbm9kZXMnIHpvbmVzIGluIHRoZSBzZWxlY3RlZCB6b25lbGlzdCBsb29raW5nIGZvciB0aGUgZmlyc3Qgem9uZSBpbiB0aGUgbGlzdAordGhhdCBjYW4gc2F0aXNmeSB0aGUgcmVxdWVzdC4KKworTG9jYWwgYWxsb2NhdGlvbiB3aWxsIHRlbmQgdG8ga2VlcCBzdWJzZXF1ZW50IGFjY2VzcyB0byB0aGUgYWxsb2NhdGVkIG1lbW9yeQorImxvY2FsIiB0byB0aGUgdW5kZXJseWluZyBwaHlzaWNhbCByZXNvdXJjZXMgYW5kIG9mZiB0aGUgc3lzdGVtIGludGVyY29ubmVjdC0tCithcyBsb25nIGFzIHRoZSB0YXNrIG9uIHdob3NlIGJlaGFsZiB0aGUga2VybmVsIGFsbG9jYXRlZCBzb21lIG1lbW9yeSBkb2VzIG5vdAorbGF0ZXIgbWlncmF0ZSBhd2F5IGZyb20gdGhhdCBtZW1vcnkuICBUaGUgTGludXggc2NoZWR1bGVyIGlzIGF3YXJlIG9mIHRoZQorTlVNQSB0b3BvbG9neSBvZiB0aGUgcGxhdGZvcm0tLWVtYm9kaWVkIGluIHRoZSAic2NoZWR1bGluZyBkb21haW5zIiBkYXRhCitzdHJ1Y3R1cmVzIFtzZWUgRG9jdW1lbnRhdGlvbi9zY2hlZHVsZXIvc2NoZWQtZG9tYWlucy50eHRdLS1hbmQgdGhlIHNjaGVkdWxlcgorYXR0ZW1wdHMgdG8gbWluaW1pemUgdGFzayBtaWdyYXRpb24gdG8gZGlzdGFudCBzY2hlZHVsaW5nIGRvbWFpbnMuICBIb3dldmVyLAordGhlIHNjaGVkdWxlciBkb2VzIG5vdCB0YWtlIGEgdGFzaydzIE5VTUEgZm9vdHByaW50IGludG8gYWNjb3VudCBkaXJlY3RseS4KK1RodXMsIHVuZGVyIHN1ZmZpY2llbnQgaW1iYWxhbmNlLCB0YXNrcyBjYW4gbWlncmF0ZSBiZXR3ZWVuIG5vZGVzLCByZW1vdGUKK2Zyb20gdGhlaXIgaW5pdGlhbCBub2RlIGFuZCBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzLgorCitTeXN0ZW0gYWRtaW5pc3RyYXRvcnMgYW5kIGFwcGxpY2F0aW9uIGRlc2lnbmVycyBjYW4gcmVzdHJpY3QgYSB0YXNrJ3MgbWlncmF0aW9uCit0byBpbXByb3ZlIE5VTUEgbG9jYWxpdHkgdXNpbmcgdmFyaW91cyBDUFUgYWZmaW5pdHkgY29tbWFuZCBsaW5lIGludGVyZmFjZXMsCitzdWNoIGFzIHRhc2tzZXQoMSkgYW5kIG51bWFjdGwoMSksIGFuZCBwcm9ncmFtIGludGVyZmFjZXMgc3VjaCBhcworc2NoZWRfc2V0YWZmaW5pdHkoMikuICBGdXJ0aGVyLCBvbmUgY2FuIG1vZGlmeSB0aGUga2VybmVsJ3MgZGVmYXVsdCBsb2NhbAorYWxsb2NhdGlvbiBiZWhhdmlvciB1c2luZyBMaW51eCBOVU1BIG1lbW9yeSBwb2xpY3kuCitbc2VlIERvY3VtZW50YXRpb24vdm0vbnVtYV9tZW1vcnlfcG9saWN5LnR4dC5dCisKK1N5c3RlbSBhZG1pbmlzdHJhdG9ycyBjYW4gcmVzdHJpY3QgdGhlIENQVXMgYW5kIG5vZGVzJyBtZW1vcmllcyB0aGF0IGEgbm9uLQorcHJpdmlsZWdlZCB1c2VyIGNhbiBzcGVjaWZ5IGluIHRoZSBzY2hlZHVsaW5nIG9yIE5VTUEgY29tbWFuZHMgYW5kIGZ1bmN0aW9ucwordXNpbmcgY29udHJvbCBncm91cHMgYW5kIENQVXNldHMuICBbc2VlIERvY3VtZW50YXRpb24vY2dyb3Vwcy9jcHVzZXRzLnR4dF0KKworT24gYXJjaGl0ZWN0dXJlcyB0aGF0IGRvIG5vdCBoaWRlIG1lbW9yeWxlc3Mgbm9kZXMsIExpbnV4IHdpbGwgaW5jbHVkZSBvbmx5Cit6b25lcyBbbm9kZXNdIHdpdGggbWVtb3J5IGluIHRoZSB6b25lbGlzdHMuICBUaGlzIG1lYW5zIHRoYXQgZm9yIGEgbWVtb3J5bGVzcworbm9kZSB0aGUgImxvY2FsIG1lbW9yeSBub2RlIi0tdGhlIG5vZGUgb2YgdGhlIGZpcnN0IHpvbmUgaW4gQ1BVJ3Mgbm9kZSdzCit6b25lbGlzdC0td2lsbCBub3QgYmUgdGhlIG5vZGUgaXRzZWxmLiAgUmF0aGVyLCBpdCB3aWxsIGJlIHRoZSBub2RlIHRoYXQgdGhlCitrZXJuZWwgc2VsZWN0ZWQgYXMgdGhlIG5lYXJlc3Qgbm9kZSB3aXRoIG1lbW9yeSB3aGVuIGl0IGJ1aWx0IHRoZSB6b25lbGlzdHMuCitTbywgZGVmYXVsdCwgbG9jYWwgYWxsb2NhdGlvbnMgd2lsbCBzdWNjZWVkIHdpdGggdGhlIGtlcm5lbCBzdXBwbHlpbmcgdGhlCitjbG9zZXN0IGF2YWlsYWJsZSBtZW1vcnkuICBUaGlzIGlzIGEgY29uc2VxdWVuY2Ugb2YgdGhlIHNhbWUgbWVjaGFuaXNtIHRoYXQKK2FsbG93cyBzdWNoIGFsbG9jYXRpb25zIHRvIGZhbGxiYWNrIHRvIG90aGVyIG5lYXJieSBub2RlcyB3aGVuIGEgbm9kZSB0aGF0Citkb2VzIGNvbnRhaW4gbWVtb3J5IG92ZXJmbG93cy4KKworU29tZSBrZXJuZWwgYWxsb2NhdGlvbnMgZG8gbm90IHdhbnQgb3IgY2Fubm90IHRvbGVyYXRlIHRoaXMgYWxsb2NhdGlvbiBmYWxsYmFjaworYmVoYXZpb3IuICBSYXRoZXIgdGhleSB3YW50IHRvIGJlIHN1cmUgdGhleSBnZXQgbWVtb3J5IGZyb20gdGhlIHNwZWNpZmllZCBub2RlCitvciBnZXQgbm90aWZpZWQgdGhhdCB0aGUgbm9kZSBoYXMgbm8gZnJlZSBtZW1vcnkuICBUaGlzIGlzIHVzdWFsbHkgdGhlIGNhc2Ugd2hlbgorYSBzdWJzeXN0ZW0gYWxsb2NhdGVzIHBlciBDUFUgbWVtb3J5IHJlc291cmNlcywgZm9yIGV4YW1wbGUuCisKK0EgdHlwaWNhbCBtb2RlbCBmb3IgbWFraW5nIHN1Y2ggYW4gYWxsb2NhdGlvbiBpcyB0byBvYnRhaW4gdGhlIG5vZGUgaWQgb2YgdGhlCitub2RlIHRvIHdoaWNoIHRoZSAiY3VycmVudCBDUFUiIGlzIGF0dGFjaGVkIHVzaW5nIG9uZSBvZiB0aGUga2VybmVsJ3MKK251bWFfbm9kZV9pZCgpIG9yIENQVV90b19ub2RlKCkgZnVuY3Rpb25zIGFuZCB0aGVuIHJlcXVlc3QgbWVtb3J5IGZyb20gb25seQordGhlIG5vZGUgaWQgcmV0dXJuZWQuICBXaGVuIHN1Y2ggYW4gYWxsb2NhdGlvbiBmYWlscywgdGhlIHJlcXVlc3Rpbmcgc3Vic3lzdGVtCittYXkgcmV2ZXJ0IHRvIGl0cyBvd24gZmFsbGJhY2sgcGF0aC4gIFRoZSBzbGFiIGtlcm5lbCBtZW1vcnkgYWxsb2NhdG9yIGlzIGFuCitleGFtcGxlIG9mIHRoaXMuICBPciwgdGhlIHN1YnN5c3RlbSBtYXkgY2hvb3NlIHRvIGRpc2FibGUgb3Igbm90IHRvIGVuYWJsZQoraXRzZWxmIG9uIGFsbG9jYXRpb24gZmFpbHVyZS4gIFRoZSBrZXJuZWwgcHJvZmlsaW5nIHN1YnN5c3RlbSBpcyBhbiBleGFtcGxlIG9mCit0aGlzLgorCitJZiB0aGUgYXJjaGl0ZWN0dXJlIHN1cHBvcnRzLS1kb2VzIG5vdCBoaWRlLS1tZW1vcnlsZXNzIG5vZGVzLCB0aGVuIENQVXMKK2F0dGFjaGVkIHRvIG1lbW9yeWxlc3Mgbm9kZXMgd291bGQgYWx3YXlzIGluY3VyIHRoZSBmYWxsYmFjayBwYXRoIG92ZXJoZWFkCitvciBzb21lIHN1YnN5c3RlbXMgd291bGQgZmFpbCB0byBpbml0aWFsaXplIGlmIHRoZXkgYXR0ZW1wdGVkIHRvIGFsbG9jYXRlZAorbWVtb3J5IGV4Y2x1c2l2ZWx5IGZyb20gYSBub2RlIHdpdGhvdXQgbWVtb3J5LiAgVG8gc3VwcG9ydCBzdWNoCithcmNoaXRlY3R1cmVzIHRyYW5zcGFyZW50bHksIGtlcm5lbCBzdWJzeXN0ZW1zIGNhbiB1c2UgdGhlIG51bWFfbWVtX2lkKCkKK29yIGNwdV90b19tZW0oKSBmdW5jdGlvbiB0byBsb2NhdGUgdGhlICJsb2NhbCBtZW1vcnkgbm9kZSIgZm9yIHRoZSBjYWxsaW5nIG9yCitzcGVjaWZpZWQgQ1BVLiAgQWdhaW4sIHRoaXMgaXMgdGhlIHNhbWUgbm9kZSBmcm9tIHdoaWNoIGRlZmF1bHQsIGxvY2FsIHBhZ2UKK2FsbG9jYXRpb25zIHdpbGwgYmUgYXR0ZW1wdGVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92bS9udW1hX21lbW9yeV9wb2xpY3kudHh0IGIvRG9jdW1lbnRhdGlvbi92bS9udW1hX21lbW9yeV9wb2xpY3kudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZGIwNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZtL251bWFfbWVtb3J5X3BvbGljeS50eHQKQEAgLTAsMCArMSw0NTIgQEAKKworV2hhdCBpcyBMaW51eCBNZW1vcnkgUG9saWN5PworCitJbiB0aGUgTGludXgga2VybmVsLCAibWVtb3J5IHBvbGljeSIgZGV0ZXJtaW5lcyBmcm9tIHdoaWNoIG5vZGUgdGhlIGtlcm5lbCB3aWxsCithbGxvY2F0ZSBtZW1vcnkgaW4gYSBOVU1BIHN5c3RlbSBvciBpbiBhbiBlbXVsYXRlZCBOVU1BIHN5c3RlbS4gIExpbnV4IGhhcworc3VwcG9ydGVkIHBsYXRmb3JtcyB3aXRoIE5vbi1Vbmlmb3JtIE1lbW9yeSBBY2Nlc3MgYXJjaGl0ZWN0dXJlcyBzaW5jZSAyLjQuPy4KK1RoZSBjdXJyZW50IG1lbW9yeSBwb2xpY3kgc3VwcG9ydCB3YXMgYWRkZWQgdG8gTGludXggMi42IGFyb3VuZCBNYXkgMjAwNC4gIFRoaXMKK2RvY3VtZW50IGF0dGVtcHRzIHRvIGRlc2NyaWJlIHRoZSBjb25jZXB0cyBhbmQgQVBJcyBvZiB0aGUgMi42IG1lbW9yeSBwb2xpY3kKK3N1cHBvcnQuCisKK01lbW9yeSBwb2xpY2llcyBzaG91bGQgbm90IGJlIGNvbmZ1c2VkIHdpdGggY3B1c2V0cworKERvY3VtZW50YXRpb24vY2dyb3Vwcy9jcHVzZXRzLnR4dCkKK3doaWNoIGlzIGFuIGFkbWluaXN0cmF0aXZlIG1lY2hhbmlzbSBmb3IgcmVzdHJpY3RpbmcgdGhlIG5vZGVzIGZyb20gd2hpY2gKK21lbW9yeSBtYXkgYmUgYWxsb2NhdGVkIGJ5IGEgc2V0IG9mIHByb2Nlc3Nlcy4gTWVtb3J5IHBvbGljaWVzIGFyZSBhCitwcm9ncmFtbWluZyBpbnRlcmZhY2UgdGhhdCBhIE5VTUEtYXdhcmUgYXBwbGljYXRpb24gY2FuIHRha2UgYWR2YW50YWdlIG9mLiAgV2hlbgorYm90aCBjcHVzZXRzIGFuZCBwb2xpY2llcyBhcmUgYXBwbGllZCB0byBhIHRhc2ssIHRoZSByZXN0cmljdGlvbnMgb2YgdGhlIGNwdXNldAordGFrZXMgcHJpb3JpdHkuICBTZWUgIk1FTU9SWSBQT0xJQ0lFUyBBTkQgQ1BVU0VUUyIgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KKworTUVNT1JZIFBPTElDWSBDT05DRVBUUworCitTY29wZSBvZiBNZW1vcnkgUG9saWNpZXMKKworVGhlIExpbnV4IGtlcm5lbCBzdXBwb3J0cyBfc2NvcGVzXyBvZiBtZW1vcnkgcG9saWN5LCBkZXNjcmliZWQgaGVyZSBmcm9tCittb3N0IGdlbmVyYWwgdG8gbW9zdCBzcGVjaWZpYzoKKworICAgIFN5c3RlbSBEZWZhdWx0IFBvbGljeTogIHRoaXMgcG9saWN5IGlzICJoYXJkIGNvZGVkIiBpbnRvIHRoZSBrZXJuZWwuICBJdAorICAgIGlzIHRoZSBwb2xpY3kgdGhhdCBnb3Zlcm5zIGFsbCBwYWdlIGFsbG9jYXRpb25zIHRoYXQgYXJlbid0IGNvbnRyb2xsZWQKKyAgICBieSBvbmUgb2YgdGhlIG1vcmUgc3BlY2lmaWMgcG9saWN5IHNjb3BlcyBkaXNjdXNzZWQgYmVsb3cuICBXaGVuIHRoZQorICAgIHN5c3RlbSBpcyAidXAgYW5kIHJ1bm5pbmciLCB0aGUgc3lzdGVtIGRlZmF1bHQgcG9saWN5IHdpbGwgdXNlICJsb2NhbAorICAgIGFsbG9jYXRpb24iIGRlc2NyaWJlZCBiZWxvdy4gIEhvd2V2ZXIsIGR1cmluZyBib290IHVwLCB0aGUgc3lzdGVtCisgICAgZGVmYXVsdCBwb2xpY3kgd2lsbCBiZSBzZXQgdG8gaW50ZXJsZWF2ZSBhbGxvY2F0aW9ucyBhY3Jvc3MgYWxsIG5vZGVzCisgICAgd2l0aCAic3VmZmljaWVudCIgbWVtb3J5LCBzbyBhcyBub3QgdG8gb3ZlcmxvYWQgdGhlIGluaXRpYWwgYm9vdCBub2RlCisgICAgd2l0aCBib290LXRpbWUgYWxsb2NhdGlvbnMuCisKKyAgICBUYXNrL1Byb2Nlc3MgUG9saWN5OiAgdGhpcyBpcyBhbiBvcHRpb25hbCwgcGVyLXRhc2sgcG9saWN5LiAgV2hlbiBkZWZpbmVkCisgICAgZm9yIGEgc3BlY2lmaWMgdGFzaywgdGhpcyBwb2xpY3kgY29udHJvbHMgYWxsIHBhZ2UgYWxsb2NhdGlvbnMgbWFkZSBieSBvcgorICAgIG9uIGJlaGFsZiBvZiB0aGUgdGFzayB0aGF0IGFyZW4ndCBjb250cm9sbGVkIGJ5IGEgbW9yZSBzcGVjaWZpYyBzY29wZS4KKyAgICBJZiBhIHRhc2sgZG9lcyBub3QgZGVmaW5lIGEgdGFzayBwb2xpY3ksIHRoZW4gYWxsIHBhZ2UgYWxsb2NhdGlvbnMgdGhhdAorICAgIHdvdWxkIGhhdmUgYmVlbiBjb250cm9sbGVkIGJ5IHRoZSB0YXNrIHBvbGljeSAiZmFsbCBiYWNrIiB0byB0aGUgU3lzdGVtCisgICAgRGVmYXVsdCBQb2xpY3kuCisKKwlUaGUgdGFzayBwb2xpY3kgYXBwbGllcyB0byB0aGUgZW50aXJlIGFkZHJlc3Mgc3BhY2Ugb2YgYSB0YXNrLiBUaHVzLAorCWl0IGlzIGluaGVyaXRhYmxlLCBhbmQgaW5kZWVkIGlzIGluaGVyaXRlZCwgYWNyb3NzIGJvdGggZm9yaygpCisJW2Nsb25lKCkgdy9vIHRoZSBDTE9ORV9WTSBmbGFnXSBhbmQgZXhlYyooKS4gIFRoaXMgYWxsb3dzIGEgcGFyZW50IHRhc2sKKwl0byBlc3RhYmxpc2ggdGhlIHRhc2sgcG9saWN5IGZvciBhIGNoaWxkIHRhc2sgZXhlYygpJ2QgZnJvbSBhbgorCWV4ZWN1dGFibGUgaW1hZ2UgdGhhdCBoYXMgbm8gYXdhcmVuZXNzIG9mIG1lbW9yeSBwb2xpY3kuICBTZWUgdGhlCisJTUVNT1JZIFBPTElDWSBBUElTIHNlY3Rpb24sIGJlbG93LCBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIHN5c3RlbSBjYWxsCisJdGhhdCBhIHRhc2sgbWF5IHVzZSB0byBzZXQvY2hhbmdlIGl0cyB0YXNrL3Byb2Nlc3MgcG9saWN5LgorCisJSW4gYSBtdWx0aS10aHJlYWRlZCB0YXNrLCB0YXNrIHBvbGljaWVzIGFwcGx5IG9ubHkgdG8gdGhlIHRocmVhZAorCVtMaW51eCBrZXJuZWwgdGFza10gdGhhdCBpbnN0YWxscyB0aGUgcG9saWN5IGFuZCBhbnkgdGhyZWFkcworCXN1YnNlcXVlbnRseSBjcmVhdGVkIGJ5IHRoYXQgdGhyZWFkLiAgQW55IHNpYmxpbmcgdGhyZWFkcyBleGlzdGluZworCWF0IHRoZSB0aW1lIGEgbmV3IHRhc2sgcG9saWN5IGlzIGluc3RhbGxlZCByZXRhaW4gdGhlaXIgY3VycmVudAorCXBvbGljeS4KKworCUEgdGFzayBwb2xpY3kgYXBwbGllcyBvbmx5IHRvIHBhZ2VzIGFsbG9jYXRlZCBhZnRlciB0aGUgcG9saWN5IGlzCisJaW5zdGFsbGVkLiAgQW55IHBhZ2VzIGFscmVhZHkgZmF1bHRlZCBpbiBieSB0aGUgdGFzayB3aGVuIHRoZSB0YXNrCisJY2hhbmdlcyBpdHMgdGFzayBwb2xpY3kgcmVtYWluIHdoZXJlIHRoZXkgd2VyZSBhbGxvY2F0ZWQgYmFzZWQgb24KKwl0aGUgcG9saWN5IGF0IHRoZSB0aW1lIHRoZXkgd2VyZSBhbGxvY2F0ZWQuCisKKyAgICBWTUEgUG9saWN5OiAgQSAiVk1BIiBvciAiVmlydHVhbCBNZW1vcnkgQXJlYSIgcmVmZXJzIHRvIGEgcmFuZ2Ugb2YgYSB0YXNrJ3MKKyAgICB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UuICBBIHRhc2sgbWF5IGRlZmluZSBhIHNwZWNpZmljIHBvbGljeSBmb3IgYSByYW5nZQorICAgIG9mIGl0cyB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UuICAgU2VlIHRoZSBNRU1PUlkgUE9MSUNJRVMgQVBJUyBzZWN0aW9uLAorICAgIGJlbG93LCBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIG1iaW5kKCkgc3lzdGVtIGNhbGwgdXNlZCB0byBzZXQgYSBWTUEKKyAgICBwb2xpY3kuCisKKyAgICBBIFZNQSBwb2xpY3kgd2lsbCBnb3Zlcm4gdGhlIGFsbG9jYXRpb24gb2YgcGFnZXMgdGhhdCBiYWNrIHRoaXMgcmVnaW9uIG9mCisgICAgdGhlIGFkZHJlc3Mgc3BhY2UuICBBbnkgcmVnaW9ucyBvZiB0aGUgdGFzaydzIGFkZHJlc3Mgc3BhY2UgdGhhdCBkb24ndAorICAgIGhhdmUgYW4gZXhwbGljaXQgVk1BIHBvbGljeSB3aWxsIGZhbGwgYmFjayB0byB0aGUgdGFzayBwb2xpY3ksIHdoaWNoIG1heQorICAgIGl0c2VsZiBmYWxsIGJhY2sgdG8gdGhlIFN5c3RlbSBEZWZhdWx0IFBvbGljeS4KKworICAgIFZNQSBwb2xpY2llcyBoYXZlIGEgZmV3IGNvbXBsaWNhdGluZyBkZXRhaWxzOgorCisJVk1BIHBvbGljeSBhcHBsaWVzIE9OTFkgdG8gYW5vbnltb3VzIHBhZ2VzLiAgVGhlc2UgaW5jbHVkZSBwYWdlcworCWFsbG9jYXRlZCBmb3IgYW5vbnltb3VzIHNlZ21lbnRzLCBzdWNoIGFzIHRoZSB0YXNrIHN0YWNrIGFuZCBoZWFwLCBhbmQKKwlhbnkgcmVnaW9ucyBvZiB0aGUgYWRkcmVzcyBzcGFjZSBtbWFwKCllZCB3aXRoIHRoZSBNQVBfQU5PTllNT1VTIGZsYWcuCisJSWYgYSBWTUEgcG9saWN5IGlzIGFwcGxpZWQgdG8gYSBmaWxlIG1hcHBpbmcsIGl0IHdpbGwgYmUgaWdub3JlZCBpZgorCXRoZSBtYXBwaW5nIHVzZWQgdGhlIE1BUF9TSEFSRUQgZmxhZy4gIElmIHRoZSBmaWxlIG1hcHBpbmcgdXNlZCB0aGUKKwlNQVBfUFJJVkFURSBmbGFnLCB0aGUgVk1BIHBvbGljeSB3aWxsIG9ubHkgYmUgYXBwbGllZCB3aGVuIGFuCisJYW5vbnltb3VzIHBhZ2UgaXMgYWxsb2NhdGVkIG9uIGFuIGF0dGVtcHQgdG8gd3JpdGUgdG8gdGhlIG1hcHBpbmctLQorCWkuZS4sIGF0IENvcHktT24tV3JpdGUuCisKKwlWTUEgcG9saWNpZXMgYXJlIHNoYXJlZCBiZXR3ZWVuIGFsbCB0YXNrcyB0aGF0IHNoYXJlIGEgdmlydHVhbCBhZGRyZXNzCisJc3BhY2UtLWEuay5hLiB0aHJlYWRzLS1pbmRlcGVuZGVudCBvZiB3aGVuIHRoZSBwb2xpY3kgaXMgaW5zdGFsbGVkOyBhbmQKKwl0aGV5IGFyZSBpbmhlcml0ZWQgYWNyb3NzIGZvcmsoKS4gIEhvd2V2ZXIsIGJlY2F1c2UgVk1BIHBvbGljaWVzIHJlZmVyCisJdG8gYSBzcGVjaWZpYyByZWdpb24gb2YgYSB0YXNrJ3MgYWRkcmVzcyBzcGFjZSwgYW5kIGJlY2F1c2UgdGhlIGFkZHJlc3MKKwlzcGFjZSBpcyBkaXNjYXJkZWQgYW5kIHJlY3JlYXRlZCBvbiBleGVjKigpLCBWTUEgcG9saWNpZXMgYXJlIE5PVAorCWluaGVyaXRhYmxlIGFjcm9zcyBleGVjKCkuICBUaHVzLCBvbmx5IE5VTUEtYXdhcmUgYXBwbGljYXRpb25zIG1heQorCXVzZSBWTUEgcG9saWNpZXMuCisKKwlBIHRhc2sgbWF5IGluc3RhbGwgYSBuZXcgVk1BIHBvbGljeSBvbiBhIHN1Yi1yYW5nZSBvZiBhIHByZXZpb3VzbHkKKwltbWFwKCllZCByZWdpb24uICBXaGVuIHRoaXMgaGFwcGVucywgTGludXggc3BsaXRzIHRoZSBleGlzdGluZyB2aXJ0dWFsCisJbWVtb3J5IGFyZWEgaW50byAyIG9yIDMgVk1BcywgZWFjaCB3aXRoIGl0J3Mgb3duIHBvbGljeS4KKworCUJ5IGRlZmF1bHQsIFZNQSBwb2xpY3kgYXBwbGllcyBvbmx5IHRvIHBhZ2VzIGFsbG9jYXRlZCBhZnRlciB0aGUgcG9saWN5CisJaXMgaW5zdGFsbGVkLiAgQW55IHBhZ2VzIGFscmVhZHkgZmF1bHRlZCBpbnRvIHRoZSBWTUEgcmFuZ2UgcmVtYWluCisJd2hlcmUgdGhleSB3ZXJlIGFsbG9jYXRlZCBiYXNlZCBvbiB0aGUgcG9saWN5IGF0IHRoZSB0aW1lIHRoZXkgd2VyZQorCWFsbG9jYXRlZC4gIEhvd2V2ZXIsIHNpbmNlIDIuNi4xNiwgTGludXggc3VwcG9ydHMgcGFnZSBtaWdyYXRpb24gdmlhCisJdGhlIG1iaW5kKCkgc3lzdGVtIGNhbGwsIHNvIHRoYXQgcGFnZSBjb250ZW50cyBjYW4gYmUgbW92ZWQgdG8gbWF0Y2gKKwlhIG5ld2x5IGluc3RhbGxlZCBwb2xpY3kuCisKKyAgICBTaGFyZWQgUG9saWN5OiAgQ29uY2VwdHVhbGx5LCBzaGFyZWQgcG9saWNpZXMgYXBwbHkgdG8gIm1lbW9yeSBvYmplY3RzIgorICAgIG1hcHBlZCBzaGFyZWQgaW50byBvbmUgb3IgbW9yZSB0YXNrcycgZGlzdGluY3QgYWRkcmVzcyBzcGFjZXMuICBBbgorICAgIGFwcGxpY2F0aW9uIGluc3RhbGxzIGEgc2hhcmVkIHBvbGljaWVzIHRoZSBzYW1lIHdheSBhcyBWTUEgcG9saWNpZXMtLXVzaW5nCisgICAgdGhlIG1iaW5kKCkgc3lzdGVtIGNhbGwgc3BlY2lmeWluZyBhIHJhbmdlIG9mIHZpcnR1YWwgYWRkcmVzc2VzIHRoYXQgbWFwCisgICAgdGhlIHNoYXJlZCBvYmplY3QuICBIb3dldmVyLCB1bmxpa2UgVk1BIHBvbGljaWVzLCB3aGljaCBjYW4gYmUgY29uc2lkZXJlZAorICAgIHRvIGJlIGFuIGF0dHJpYnV0ZSBvZiBhIHJhbmdlIG9mIGEgdGFzaydzIGFkZHJlc3Mgc3BhY2UsIHNoYXJlZCBwb2xpY2llcworICAgIGFwcGx5IGRpcmVjdGx5IHRvIHRoZSBzaGFyZWQgb2JqZWN0LiAgVGh1cywgYWxsIHRhc2tzIHRoYXQgYXR0YWNoIHRvIHRoZQorICAgIG9iamVjdCBzaGFyZSB0aGUgcG9saWN5LCBhbmQgYWxsIHBhZ2VzIGFsbG9jYXRlZCBmb3IgdGhlIHNoYXJlZCBvYmplY3QsCisgICAgYnkgYW55IHRhc2ssIHdpbGwgb2JleSB0aGUgc2hhcmVkIHBvbGljeS4KKworCUFzIG9mIDIuNi4yMiwgb25seSBzaGFyZWQgbWVtb3J5IHNlZ21lbnRzLCBjcmVhdGVkIGJ5IHNobWdldCgpIG9yCisJbW1hcChNQVBfQU5PTllNT1VTfE1BUF9TSEFSRUQpLCBzdXBwb3J0IHNoYXJlZCBwb2xpY3kuICBXaGVuIHNoYXJlZAorCXBvbGljeSBzdXBwb3J0IHdhcyBhZGRlZCB0byBMaW51eCwgdGhlIGFzc29jaWF0ZWQgZGF0YSBzdHJ1Y3R1cmVzIHdlcmUKKwlhZGRlZCB0byBodWdldGxiZnMgc2htZW0gc2VnbWVudHMuICBBdCB0aGUgdGltZSwgaHVnZXRsYmZzIGRpZCBub3QKKwlzdXBwb3J0IGFsbG9jYXRpb24gYXQgZmF1bHQgdGltZS0tYS5rLmEgbGF6eSBhbGxvY2F0aW9uLS1zbyBodWdldGxiZnMKKwlzaG1lbSBzZWdtZW50cyB3ZXJlIG5ldmVyICJob29rZWQgdXAiIHRvIHRoZSBzaGFyZWQgcG9saWN5IHN1cHBvcnQuCisJQWx0aG91Z2ggaHVnZXRsYmZzIHNlZ21lbnRzIG5vdyBzdXBwb3J0IGxhenkgYWxsb2NhdGlvbiwgdGhlaXIgc3VwcG9ydAorCWZvciBzaGFyZWQgcG9saWN5IGhhcyBub3QgYmVlbiBjb21wbGV0ZWQuCisKKwlBcyBtZW50aW9uZWQgYWJvdmUgW3JlOiBWTUEgcG9saWNpZXNdLCBhbGxvY2F0aW9ucyBvZiBwYWdlIGNhY2hlCisJcGFnZXMgZm9yIHJlZ3VsYXIgZmlsZXMgbW1hcCgpZWQgd2l0aCBNQVBfU0hBUkVEIGlnbm9yZSBhbnkgVk1BCisJcG9saWN5IGluc3RhbGxlZCBvbiB0aGUgdmlydHVhbCBhZGRyZXNzIHJhbmdlIGJhY2tlZCBieSB0aGUgc2hhcmVkCisJZmlsZSBtYXBwaW5nLiAgUmF0aGVyLCBzaGFyZWQgcGFnZSBjYWNoZSBwYWdlcywgaW5jbHVkaW5nIHBhZ2VzIGJhY2tpbmcKKwlwcml2YXRlIG1hcHBpbmdzIHRoYXQgaGF2ZSBub3QgeWV0IGJlZW4gd3JpdHRlbiBieSB0aGUgdGFzaywgZm9sbG93CisJdGFzayBwb2xpY3ksIGlmIGFueSwgZWxzZSBTeXN0ZW0gRGVmYXVsdCBQb2xpY3kuCisKKwlUaGUgc2hhcmVkIHBvbGljeSBpbmZyYXN0cnVjdHVyZSBzdXBwb3J0cyBkaWZmZXJlbnQgcG9saWNpZXMgb24gc3Vic2V0CisJcmFuZ2VzIG9mIHRoZSBzaGFyZWQgb2JqZWN0LiAgSG93ZXZlciwgTGludXggc3RpbGwgc3BsaXRzIHRoZSBWTUEgb2YKKwl0aGUgdGFzayB0aGF0IGluc3RhbGxzIHRoZSBwb2xpY3kgZm9yIGVhY2ggcmFuZ2Ugb2YgZGlzdGluY3QgcG9saWN5LgorCVRodXMsIGRpZmZlcmVudCB0YXNrcyB0aGF0IGF0dGFjaCB0byBhIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBjYW4gaGF2ZQorCWRpZmZlcmVudCBWTUEgY29uZmlndXJhdGlvbnMgbWFwcGluZyB0aGF0IG9uZSBzaGFyZWQgb2JqZWN0LiAgVGhpcworCWNhbiBiZSBzZWVuIGJ5IGV4YW1pbmluZyB0aGUgL3Byb2MvPHBpZD4vbnVtYV9tYXBzIG9mIHRhc2tzIHNoYXJpbmcKKwlhIHNoYXJlZCBtZW1vcnkgcmVnaW9uLCB3aGVuIG9uZSB0YXNrIGhhcyBpbnN0YWxsZWQgc2hhcmVkIHBvbGljeSBvbgorCW9uZSBvciBtb3JlIHJhbmdlcyBvZiB0aGUgcmVnaW9uLgorCitDb21wb25lbnRzIG9mIE1lbW9yeSBQb2xpY2llcworCisgICAgQSBMaW51eCBtZW1vcnkgcG9saWN5IGNvbnNpc3RzIG9mIGEgIm1vZGUiLCBvcHRpb25hbCBtb2RlIGZsYWdzLCBhbmQgYW4KKyAgICBvcHRpb25hbCBzZXQgb2Ygbm9kZXMuICBUaGUgbW9kZSBkZXRlcm1pbmVzIHRoZSBiZWhhdmlvciBvZiB0aGUgcG9saWN5LAorICAgIHRoZSBvcHRpb25hbCBtb2RlIGZsYWdzIGRldGVybWluZSB0aGUgYmVoYXZpb3Igb2YgdGhlIG1vZGUsIGFuZCB0aGUKKyAgICBvcHRpb25hbCBzZXQgb2Ygbm9kZXMgY2FuIGJlIHZpZXdlZCBhcyB0aGUgYXJndW1lbnRzIHRvIHRoZSBwb2xpY3kKKyAgICBiZWhhdmlvci4KKworICAgSW50ZXJuYWxseSwgbWVtb3J5IHBvbGljaWVzIGFyZSBpbXBsZW1lbnRlZCBieSBhIHJlZmVyZW5jZSBjb3VudGVkCisgICBzdHJ1Y3R1cmUsIHN0cnVjdCBtZW1wb2xpY3kuICBEZXRhaWxzIG9mIHRoaXMgc3RydWN0dXJlIHdpbGwgYmUgZGlzY3Vzc2VkCisgICBpbiBjb250ZXh0LCBiZWxvdywgYXMgcmVxdWlyZWQgdG8gZXhwbGFpbiB0aGUgYmVoYXZpb3IuCisKKyAgIExpbnV4IG1lbW9yeSBwb2xpY3kgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyA0IGJlaGF2aW9yYWwgbW9kZXM6CisKKwlEZWZhdWx0IE1vZGUtLU1QT0xfREVGQVVMVDogIFRoaXMgbW9kZSBpcyBvbmx5IHVzZWQgaW4gdGhlIG1lbW9yeQorCXBvbGljeSBBUElzLiAgSW50ZXJuYWxseSwgTVBPTF9ERUZBVUxUIGlzIGNvbnZlcnRlZCB0byB0aGUgTlVMTAorCW1lbW9yeSBwb2xpY3kgaW4gYWxsIHBvbGljeSBzY29wZXMuICBBbnkgZXhpc3Rpbmcgbm9uLWRlZmF1bHQgcG9saWN5CisJd2lsbCBzaW1wbHkgYmUgcmVtb3ZlZCB3aGVuIE1QT0xfREVGQVVMVCBpcyBzcGVjaWZpZWQuICBBcyBhIHJlc3VsdCwKKwlNUE9MX0RFRkFVTFQgbWVhbnMgImZhbGwgYmFjayB0byB0aGUgbmV4dCBtb3N0IHNwZWNpZmljIHBvbGljeSBzY29wZS4iCisKKwkgICAgRm9yIGV4YW1wbGUsIGEgTlVMTCBvciBkZWZhdWx0IHRhc2sgcG9saWN5IHdpbGwgZmFsbCBiYWNrIHRvIHRoZQorCSAgICBzeXN0ZW0gZGVmYXVsdCBwb2xpY3kuICBBIE5VTEwgb3IgZGVmYXVsdCB2bWEgcG9saWN5IHdpbGwgZmFsbAorCSAgICBiYWNrIHRvIHRoZSB0YXNrIHBvbGljeS4KKworCSAgICBXaGVuIHNwZWNpZmllZCBpbiBvbmUgb2YgdGhlIG1lbW9yeSBwb2xpY3kgQVBJcywgdGhlIERlZmF1bHQgbW9kZQorCSAgICBkb2VzIG5vdCB1c2UgdGhlIG9wdGlvbmFsIHNldCBvZiBub2Rlcy4KKworCSAgICBJdCBpcyBhbiBlcnJvciBmb3IgdGhlIHNldCBvZiBub2RlcyBzcGVjaWZpZWQgZm9yIHRoaXMgcG9saWN5IHRvCisJICAgIGJlIG5vbi1lbXB0eS4KKworCU1QT0xfQklORDogIFRoaXMgbW9kZSBzcGVjaWZpZXMgdGhhdCBtZW1vcnkgbXVzdCBjb21lIGZyb20gdGhlCisJc2V0IG9mIG5vZGVzIHNwZWNpZmllZCBieSB0aGUgcG9saWN5LiAgTWVtb3J5IHdpbGwgYmUgYWxsb2NhdGVkIGZyb20KKwl0aGUgbm9kZSBpbiB0aGUgc2V0IHdpdGggc3VmZmljaWVudCBmcmVlIG1lbW9yeSB0aGF0IGlzIGNsb3Nlc3QgdG8KKwl0aGUgbm9kZSB3aGVyZSB0aGUgYWxsb2NhdGlvbiB0YWtlcyBwbGFjZS4KKworCU1QT0xfUFJFRkVSUkVEOiAgVGhpcyBtb2RlIHNwZWNpZmllcyB0aGF0IHRoZSBhbGxvY2F0aW9uIHNob3VsZCBiZQorCWF0dGVtcHRlZCBmcm9tIHRoZSBzaW5nbGUgbm9kZSBzcGVjaWZpZWQgaW4gdGhlIHBvbGljeS4gIElmIHRoYXQKKwlhbGxvY2F0aW9uIGZhaWxzLCB0aGUga2VybmVsIHdpbGwgc2VhcmNoIG90aGVyIG5vZGVzLCBpbiBvcmRlciBvZgorCWluY3JlYXNpbmcgZGlzdGFuY2UgZnJvbSB0aGUgcHJlZmVycmVkIG5vZGUgYmFzZWQgb24gaW5mb3JtYXRpb24KKwlwcm92aWRlZCBieSB0aGUgcGxhdGZvcm0gZmlybXdhcmUuCisKKwkgICAgSW50ZXJuYWxseSwgdGhlIFByZWZlcnJlZCBwb2xpY3kgdXNlcyBhIHNpbmdsZSBub2RlLS10aGUKKwkgICAgcHJlZmVycmVkX25vZGUgbWVtYmVyIG9mIHN0cnVjdCBtZW1wb2xpY3kuICBXaGVuIHRoZSBpbnRlcm5hbAorCSAgICBtb2RlIGZsYWcgTVBPTF9GX0xPQ0FMIGlzIHNldCwgdGhlIHByZWZlcnJlZF9ub2RlIGlzIGlnbm9yZWQgYW5kCisJICAgIHRoZSBwb2xpY3kgaXMgaW50ZXJwcmV0ZWQgYXMgbG9jYWwgYWxsb2NhdGlvbi4gICJMb2NhbCIgYWxsb2NhdGlvbgorCSAgICBwb2xpY3kgY2FuIGJlIHZpZXdlZCBhcyBhIFByZWZlcnJlZCBwb2xpY3kgdGhhdCBzdGFydHMgYXQgdGhlIG5vZGUKKwkgICAgY29udGFpbmluZyB0aGUgY3B1IHdoZXJlIHRoZSBhbGxvY2F0aW9uIHRha2VzIHBsYWNlLgorCisJICAgIEl0IGlzIHBvc3NpYmxlIGZvciB0aGUgdXNlciB0byBzcGVjaWZ5IHRoYXQgbG9jYWwgYWxsb2NhdGlvbiBpcworCSAgICBhbHdheXMgcHJlZmVycmVkIGJ5IHBhc3NpbmcgYW4gZW1wdHkgbm9kZW1hc2sgd2l0aCB0aGlzIG1vZGUuCisJICAgIElmIGFuIGVtcHR5IG5vZGVtYXNrIGlzIHBhc3NlZCwgdGhlIHBvbGljeSBjYW5ub3QgdXNlIHRoZQorCSAgICBNUE9MX0ZfU1RBVElDX05PREVTIG9yIE1QT0xfRl9SRUxBVElWRV9OT0RFUyBmbGFncyBkZXNjcmliZWQKKwkgICAgYmVsb3cuCisKKwlNUE9MX0lOVEVSTEVBVkVEOiAgVGhpcyBtb2RlIHNwZWNpZmllcyB0aGF0IHBhZ2UgYWxsb2NhdGlvbnMgYmUKKwlpbnRlcmxlYXZlZCwgb24gYSBwYWdlIGdyYW51bGFyaXR5LCBhY3Jvc3MgdGhlIG5vZGVzIHNwZWNpZmllZCBpbgorCXRoZSBwb2xpY3kuICBUaGlzIG1vZGUgYWxzbyBiZWhhdmVzIHNsaWdodGx5IGRpZmZlcmVudGx5LCBiYXNlZCBvbgorCXRoZSBjb250ZXh0IHdoZXJlIGl0IGlzIHVzZWQ6CisKKwkgICAgRm9yIGFsbG9jYXRpb24gb2YgYW5vbnltb3VzIHBhZ2VzIGFuZCBzaGFyZWQgbWVtb3J5IHBhZ2VzLAorCSAgICBJbnRlcmxlYXZlIG1vZGUgaW5kZXhlcyB0aGUgc2V0IG9mIG5vZGVzIHNwZWNpZmllZCBieSB0aGUgcG9saWN5CisJICAgIHVzaW5nIHRoZSBwYWdlIG9mZnNldCBvZiB0aGUgZmF1bHRpbmcgYWRkcmVzcyBpbnRvIHRoZSBzZWdtZW50CisJICAgIFtWTUFdIGNvbnRhaW5pbmcgdGhlIGFkZHJlc3MgbW9kdWxvIHRoZSBudW1iZXIgb2Ygbm9kZXMgc3BlY2lmaWVkCisJICAgIGJ5IHRoZSBwb2xpY3kuICBJdCB0aGVuIGF0dGVtcHRzIHRvIGFsbG9jYXRlIGEgcGFnZSwgc3RhcnRpbmcgYXQKKwkgICAgdGhlIHNlbGVjdGVkIG5vZGUsIGFzIGlmIHRoZSBub2RlIGhhZCBiZWVuIHNwZWNpZmllZCBieSBhIFByZWZlcnJlZAorCSAgICBwb2xpY3kgb3IgaGFkIGJlZW4gc2VsZWN0ZWQgYnkgYSBsb2NhbCBhbGxvY2F0aW9uLiAgVGhhdCBpcywKKwkgICAgYWxsb2NhdGlvbiB3aWxsIGZvbGxvdyB0aGUgcGVyIG5vZGUgem9uZWxpc3QuCisKKwkgICAgRm9yIGFsbG9jYXRpb24gb2YgcGFnZSBjYWNoZSBwYWdlcywgSW50ZXJsZWF2ZSBtb2RlIGluZGV4ZXMgdGhlIHNldAorCSAgICBvZiBub2RlcyBzcGVjaWZpZWQgYnkgdGhlIHBvbGljeSB1c2luZyBhIG5vZGUgY291bnRlciBtYWludGFpbmVkCisJICAgIHBlciB0YXNrLiAgVGhpcyBjb3VudGVyIHdyYXBzIGFyb3VuZCB0byB0aGUgbG93ZXN0IHNwZWNpZmllZCBub2RlCisJICAgIGFmdGVyIGl0IHJlYWNoZXMgdGhlIGhpZ2hlc3Qgc3BlY2lmaWVkIG5vZGUuICBUaGlzIHdpbGwgdGVuZCB0bworCSAgICBzcHJlYWQgdGhlIHBhZ2VzIG91dCBvdmVyIHRoZSBub2RlcyBzcGVjaWZpZWQgYnkgdGhlIHBvbGljeSBiYXNlZAorCSAgICBvbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcmUgYWxsb2NhdGVkLCByYXRoZXIgdGhhbiBiYXNlZCBvbiBhbnkKKwkgICAgcGFnZSBvZmZzZXQgaW50byBhbiBhZGRyZXNzIHJhbmdlIG9yIGZpbGUuICBEdXJpbmcgc3lzdGVtIGJvb3QgdXAsCisJICAgIHRoZSB0ZW1wb3JhcnkgaW50ZXJsZWF2ZWQgc3lzdGVtIGRlZmF1bHQgcG9saWN5IHdvcmtzIGluIHRoaXMKKwkgICAgbW9kZS4KKworICAgTGludXggbWVtb3J5IHBvbGljeSBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIG9wdGlvbmFsIG1vZGUgZmxhZ3M6CisKKwlNUE9MX0ZfU1RBVElDX05PREVTOiAgVGhpcyBmbGFnIHNwZWNpZmllcyB0aGF0IHRoZSBub2RlbWFzayBwYXNzZWQgYnkKKwl0aGUgdXNlciBzaG91bGQgbm90IGJlIHJlbWFwcGVkIGlmIHRoZSB0YXNrIG9yIFZNQSdzIHNldCBvZiBhbGxvd2VkCisJbm9kZXMgY2hhbmdlcyBhZnRlciB0aGUgbWVtb3J5IHBvbGljeSBoYXMgYmVlbiBkZWZpbmVkLgorCisJICAgIFdpdGhvdXQgdGhpcyBmbGFnLCBhbnl0aW1lIGEgbWVtcG9saWN5IGlzIHJlYm91bmQgYmVjYXVzZSBvZiBhCisJICAgIGNoYW5nZSBpbiB0aGUgc2V0IG9mIGFsbG93ZWQgbm9kZXMsIHRoZSBub2RlIChQcmVmZXJyZWQpIG9yCisJICAgIG5vZGVtYXNrIChCaW5kLCBJbnRlcmxlYXZlKSBpcyByZW1hcHBlZCB0byB0aGUgbmV3IHNldCBvZgorCSAgICBhbGxvd2VkIG5vZGVzLiAgVGhpcyBtYXkgcmVzdWx0IGluIG5vZGVzIGJlaW5nIHVzZWQgdGhhdCB3ZXJlCisJICAgIHByZXZpb3VzbHkgdW5kZXNpcmVkLgorCisJICAgIFdpdGggdGhpcyBmbGFnLCBpZiB0aGUgdXNlci1zcGVjaWZpZWQgbm9kZXMgb3ZlcmxhcCB3aXRoIHRoZQorCSAgICBub2RlcyBhbGxvd2VkIGJ5IHRoZSB0YXNrJ3MgY3B1c2V0LCB0aGVuIHRoZSBtZW1vcnkgcG9saWN5IGlzCisJICAgIGFwcGxpZWQgdG8gdGhlaXIgaW50ZXJzZWN0aW9uLiAgSWYgdGhlIHR3byBzZXRzIG9mIG5vZGVzIGRvIG5vdAorCSAgICBvdmVybGFwLCB0aGUgRGVmYXVsdCBwb2xpY3kgaXMgdXNlZC4KKworCSAgICBGb3IgZXhhbXBsZSwgY29uc2lkZXIgYSB0YXNrIHRoYXQgaXMgYXR0YWNoZWQgdG8gYSBjcHVzZXQgd2l0aAorCSAgICBtZW1zIDEtMyB0aGF0IHNldHMgYW4gSW50ZXJsZWF2ZSBwb2xpY3kgb3ZlciB0aGUgc2FtZSBzZXQuICBJZgorCSAgICB0aGUgY3B1c2V0J3MgbWVtcyBjaGFuZ2UgdG8gMy01LCB0aGUgSW50ZXJsZWF2ZSB3aWxsIG5vdyBvY2N1cgorCSAgICBvdmVyIG5vZGVzIDMsIDQsIGFuZCA1LiAgV2l0aCB0aGlzIGZsYWcsIGhvd2V2ZXIsIHNpbmNlIG9ubHkgbm9kZQorCSAgICAzIGlzIGFsbG93ZWQgZnJvbSB0aGUgdXNlcidzIG5vZGVtYXNrLCB0aGUgImludGVybGVhdmUiIG9ubHkKKwkgICAgb2NjdXJzIG92ZXIgdGhhdCBub2RlLiAgSWYgbm8gbm9kZXMgZnJvbSB0aGUgdXNlcidzIG5vZGVtYXNrIGFyZQorCSAgICBub3cgYWxsb3dlZCwgdGhlIERlZmF1bHQgYmVoYXZpb3IgaXMgdXNlZC4KKworCSAgICBNUE9MX0ZfU1RBVElDX05PREVTIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIHRoZQorCSAgICBNUE9MX0ZfUkVMQVRJVkVfTk9ERVMgZmxhZy4gIEl0IGFsc28gY2Fubm90IGJlIHVzZWQgZm9yCisJICAgIE1QT0xfUFJFRkVSUkVEIHBvbGljaWVzIHRoYXQgd2VyZSBjcmVhdGVkIHdpdGggYW4gZW1wdHkgbm9kZW1hc2sKKwkgICAgKGxvY2FsIGFsbG9jYXRpb24pLgorCisJTVBPTF9GX1JFTEFUSVZFX05PREVTOiAgVGhpcyBmbGFnIHNwZWNpZmllcyB0aGF0IHRoZSBub2RlbWFzayBwYXNzZWQKKwlieSB0aGUgdXNlciB3aWxsIGJlIG1hcHBlZCByZWxhdGl2ZSB0byB0aGUgc2V0IG9mIHRoZSB0YXNrIG9yIFZNQSdzCisJc2V0IG9mIGFsbG93ZWQgbm9kZXMuICBUaGUga2VybmVsIHN0b3JlcyB0aGUgdXNlci1wYXNzZWQgbm9kZW1hc2ssCisJYW5kIGlmIHRoZSBhbGxvd2VkIG5vZGVzIGNoYW5nZXMsIHRoZW4gdGhhdCBvcmlnaW5hbCBub2RlbWFzayB3aWxsCisJYmUgcmVtYXBwZWQgcmVsYXRpdmUgdG8gdGhlIG5ldyBzZXQgb2YgYWxsb3dlZCBub2Rlcy4KKworCSAgICBXaXRob3V0IHRoaXMgZmxhZyAoYW5kIHdpdGhvdXQgTVBPTF9GX1NUQVRJQ19OT0RFUyksIGFueXRpbWUgYQorCSAgICBtZW1wb2xpY3kgaXMgcmVib3VuZCBiZWNhdXNlIG9mIGEgY2hhbmdlIGluIHRoZSBzZXQgb2YgYWxsb3dlZAorCSAgICBub2RlcywgdGhlIG5vZGUgKFByZWZlcnJlZCkgb3Igbm9kZW1hc2sgKEJpbmQsIEludGVybGVhdmUpIGlzCisJICAgIHJlbWFwcGVkIHRvIHRoZSBuZXcgc2V0IG9mIGFsbG93ZWQgbm9kZXMuICBUaGF0IHJlbWFwIG1heSBub3QKKwkgICAgcHJlc2VydmUgdGhlIHJlbGF0aXZlIG5hdHVyZSBvZiB0aGUgdXNlcidzIHBhc3NlZCBub2RlbWFzayB0byBpdHMKKwkgICAgc2V0IG9mIGFsbG93ZWQgbm9kZXMgdXBvbiBzdWNjZXNzaXZlIHJlYmluZHM6IGEgbm9kZW1hc2sgb2YKKwkgICAgMSwzLDUgbWF5IGJlIHJlbWFwcGVkIHRvIDctOSBhbmQgdGhlbiB0byAxLTMgaWYgdGhlIHNldCBvZgorCSAgICBhbGxvd2VkIG5vZGVzIGlzIHJlc3RvcmVkIHRvIGl0cyBvcmlnaW5hbCBzdGF0ZS4KKworCSAgICBXaXRoIHRoaXMgZmxhZywgdGhlIHJlbWFwIGlzIGRvbmUgc28gdGhhdCB0aGUgbm9kZSBudW1iZXJzIGZyb20KKwkgICAgdGhlIHVzZXIncyBwYXNzZWQgbm9kZW1hc2sgYXJlIHJlbGF0aXZlIHRvIHRoZSBzZXQgb2YgYWxsb3dlZAorCSAgICBub2Rlcy4gIEluIG90aGVyIHdvcmRzLCBpZiBub2RlcyAwLCAyLCBhbmQgNCBhcmUgc2V0IGluIHRoZSB1c2VyJ3MKKwkgICAgbm9kZW1hc2ssIHRoZSBwb2xpY3kgd2lsbCBiZSBlZmZlY3RlZCBvdmVyIHRoZSBmaXJzdCAoYW5kIGluIHRoZQorCSAgICBCaW5kIG9yIEludGVybGVhdmUgY2FzZSwgdGhlIHRoaXJkIGFuZCBmaWZ0aCkgbm9kZXMgaW4gdGhlIHNldCBvZgorCSAgICBhbGxvd2VkIG5vZGVzLiAgVGhlIG5vZGVtYXNrIHBhc3NlZCBieSB0aGUgdXNlciByZXByZXNlbnRzIG5vZGVzCisJICAgIHJlbGF0aXZlIHRvIHRhc2sgb3IgVk1BJ3Mgc2V0IG9mIGFsbG93ZWQgbm9kZXMuCisKKwkgICAgSWYgdGhlIHVzZXIncyBub2RlbWFzayBpbmNsdWRlcyBub2RlcyB0aGF0IGFyZSBvdXRzaWRlIHRoZSByYW5nZQorCSAgICBvZiB0aGUgbmV3IHNldCBvZiBhbGxvd2VkIG5vZGVzIChmb3IgZXhhbXBsZSwgbm9kZSA1IGlzIHNldCBpbgorCSAgICB0aGUgdXNlcidzIG5vZGVtYXNrIHdoZW4gdGhlIHNldCBvZiBhbGxvd2VkIG5vZGVzIGlzIG9ubHkgMC0zKSwKKwkgICAgdGhlbiB0aGUgcmVtYXAgd3JhcHMgYXJvdW5kIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5vZGVtYXNrIGFuZCwKKwkgICAgaWYgbm90IGFscmVhZHkgc2V0LCBzZXRzIHRoZSBub2RlIGluIHRoZSBtZW1wb2xpY3kgbm9kZW1hc2suCisKKwkgICAgRm9yIGV4YW1wbGUsIGNvbnNpZGVyIGEgdGFzayB0aGF0IGlzIGF0dGFjaGVkIHRvIGEgY3B1c2V0IHdpdGgKKwkgICAgbWVtcyAyLTUgdGhhdCBzZXRzIGFuIEludGVybGVhdmUgcG9saWN5IG92ZXIgdGhlIHNhbWUgc2V0IHdpdGgKKwkgICAgTVBPTF9GX1JFTEFUSVZFX05PREVTLiAgSWYgdGhlIGNwdXNldCdzIG1lbXMgY2hhbmdlIHRvIDMtNywgdGhlCisJICAgIGludGVybGVhdmUgbm93IG9jY3VycyBvdmVyIG5vZGVzIDMsNS03LiAgSWYgdGhlIGNwdXNldCdzIG1lbXMKKwkgICAgdGhlbiBjaGFuZ2UgdG8gMCwyLTMsNSwgdGhlbiB0aGUgaW50ZXJsZWF2ZSBvY2N1cnMgb3ZlciBub2RlcworCSAgICAwLDItMyw1LgorCisJICAgIFRoYW5rcyB0byB0aGUgY29uc2lzdGVudCByZW1hcHBpbmcsIGFwcGxpY2F0aW9ucyBwcmVwYXJpbmcKKwkgICAgbm9kZW1hc2tzIHRvIHNwZWNpZnkgbWVtb3J5IHBvbGljaWVzIHVzaW5nIHRoaXMgZmxhZyBzaG91bGQKKwkgICAgZGlzcmVnYXJkIHRoZWlyIGN1cnJlbnQsIGFjdHVhbCBjcHVzZXQgaW1wb3NlZCBtZW1vcnkgcGxhY2VtZW50CisJICAgIGFuZCBwcmVwYXJlIHRoZSBub2RlbWFzayBhcyBpZiB0aGV5IHdlcmUgYWx3YXlzIGxvY2F0ZWQgb24KKwkgICAgbWVtb3J5IG5vZGVzIDAgdG8gTi0xLCB3aGVyZSBOIGlzIHRoZSBudW1iZXIgb2YgbWVtb3J5IG5vZGVzIHRoZQorCSAgICBwb2xpY3kgaXMgaW50ZW5kZWQgdG8gbWFuYWdlLiAgTGV0IHRoZSBrZXJuZWwgdGhlbiByZW1hcCB0byB0aGUKKwkgICAgc2V0IG9mIG1lbW9yeSBub2RlcyBhbGxvd2VkIGJ5IHRoZSB0YXNrJ3MgY3B1c2V0LCBhcyB0aGF0IG1heQorCSAgICBjaGFuZ2Ugb3ZlciB0aW1lLgorCisJICAgIE1QT0xfRl9SRUxBVElWRV9OT0RFUyBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCB0aGUKKwkgICAgTVBPTF9GX1NUQVRJQ19OT0RFUyBmbGFnLiAgSXQgYWxzbyBjYW5ub3QgYmUgdXNlZCBmb3IKKwkgICAgTVBPTF9QUkVGRVJSRUQgcG9saWNpZXMgdGhhdCB3ZXJlIGNyZWF0ZWQgd2l0aCBhbiBlbXB0eSBub2RlbWFzaworCSAgICAobG9jYWwgYWxsb2NhdGlvbikuCisKK01FTU9SWSBQT0xJQ1kgUkVGRVJFTkNFIENPVU5USU5HCisKK1RvIHJlc29sdmUgdXNlL2ZyZWUgcmFjZXMsIHN0cnVjdCBtZW1wb2xpY3kgY29udGFpbnMgYW4gYXRvbWljIHJlZmVyZW5jZQorY291bnQgZmllbGQuICBJbnRlcm5hbCBpbnRlcmZhY2VzLCBtcG9sX2dldCgpL21wb2xfcHV0KCkgaW5jcmVtZW50IGFuZAorZGVjcmVtZW50IHRoaXMgcmVmZXJlbmNlIGNvdW50LCByZXNwZWN0aXZlbHkuICBtcG9sX3B1dCgpIHdpbGwgb25seSBmcmVlCit0aGUgc3RydWN0dXJlIGJhY2sgdG8gdGhlIG1lbXBvbGljeSBrbWVtIGNhY2hlIHdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudAorZ29lcyB0byB6ZXJvLgorCitXaGVuIGEgbmV3IG1lbW9yeSBwb2xpY3kgaXMgYWxsb2NhdGVkLCBpdHMgcmVmZXJlbmNlIGNvdW50IGlzIGluaXRpYWxpemVkCit0byAnMScsIHJlcHJlc2VudGluZyB0aGUgcmVmZXJlbmNlIGhlbGQgYnkgdGhlIHRhc2sgdGhhdCBpcyBpbnN0YWxsaW5nIHRoZQorbmV3IHBvbGljeS4gIFdoZW4gYSBwb2ludGVyIHRvIGEgbWVtb3J5IHBvbGljeSBzdHJ1Y3R1cmUgaXMgc3RvcmVkIGluIGFub3RoZXIKK3N0cnVjdHVyZSwgYW5vdGhlciByZWZlcmVuY2UgaXMgYWRkZWQsIGFzIHRoZSB0YXNrJ3MgcmVmZXJlbmNlIHdpbGwgYmUgZHJvcHBlZAorb24gY29tcGxldGlvbiBvZiB0aGUgcG9saWN5IGluc3RhbGxhdGlvbi4KKworRHVyaW5nIHJ1bi10aW1lICJ1c2FnZSIgb2YgdGhlIHBvbGljeSwgd2UgYXR0ZW1wdCB0byBtaW5pbWl6ZSBhdG9taWMgb3BlcmF0aW9ucworb24gdGhlIHJlZmVyZW5jZSBjb3VudCwgYXMgdGhpcyBjYW4gbGVhZCB0byBjYWNoZSBsaW5lcyBib3VuY2luZyBiZXR3ZWVuIGNwdXMKK2FuZCBOVU1BIG5vZGVzLiAgIlVzYWdlIiBoZXJlIG1lYW5zIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCisxKSBxdWVyeWluZyBvZiB0aGUgcG9saWN5LCBlaXRoZXIgYnkgdGhlIHRhc2sgaXRzZWxmIFt1c2luZyB0aGUgZ2V0X21lbXBvbGljeSgpCisgICBBUEkgZGlzY3Vzc2VkIGJlbG93XSBvciBieSBhbm90aGVyIHRhc2sgdXNpbmcgdGhlIC9wcm9jLzxwaWQ+L251bWFfbWFwcworICAgaW50ZXJmYWNlLgorCisyKSBleGFtaW5hdGlvbiBvZiB0aGUgcG9saWN5IHRvIGRldGVybWluZSB0aGUgcG9saWN5IG1vZGUgYW5kIGFzc29jaWF0ZWQgbm9kZQorICAgb3Igbm9kZSBsaXN0cywgaWYgYW55LCBmb3IgcGFnZSBhbGxvY2F0aW9uLiAgVGhpcyBpcyBjb25zaWRlcmVkIGEgImhvdAorICAgcGF0aCIuICBOb3RlIHRoYXQgZm9yIE1QT0xfQklORCwgdGhlICJ1c2FnZSIgZXh0ZW5kcyBhY3Jvc3MgdGhlIGVudGlyZQorICAgYWxsb2NhdGlvbiBwcm9jZXNzLCB3aGljaCBtYXkgc2xlZXAgZHVyaW5nIHBhZ2UgcmVjbGFpbWF0aW9uLCBiZWNhdXNlIHRoZQorICAgQklORCBwb2xpY3kgbm9kZW1hc2sgaXMgdXNlZCwgYnkgcmVmZXJlbmNlLCB0byBmaWx0ZXIgaW5lbGlnaWJsZSBub2Rlcy4KKworV2UgY2FuIGF2b2lkIHRha2luZyBhbiBleHRyYSByZWZlcmVuY2UgZHVyaW5nIHRoZSB1c2FnZXMgbGlzdGVkIGFib3ZlIGFzCitmb2xsb3dzOgorCisxKSB3ZSBuZXZlciBuZWVkIHRvIGdldC9mcmVlIHRoZSBzeXN0ZW0gZGVmYXVsdCBwb2xpY3kgYXMgdGhpcyBpcyBuZXZlcgorICAgY2hhbmdlZCBub3IgZnJlZWQsIG9uY2UgdGhlIHN5c3RlbSBpcyB1cCBhbmQgcnVubmluZy4KKworMikgZm9yIHF1ZXJ5aW5nIHRoZSBwb2xpY3ksIHdlIGRvIG5vdCBuZWVkIHRvIHRha2UgYW4gZXh0cmEgcmVmZXJlbmNlIG9uIHRoZQorICAgdGFyZ2V0IHRhc2sncyB0YXNrIHBvbGljeSBub3Igdm1hIHBvbGljaWVzIGJlY2F1c2Ugd2UgYWx3YXlzIGFjcXVpcmUgdGhlCisgICB0YXNrJ3MgbW0ncyBtbWFwX3NlbSBmb3IgcmVhZCBkdXJpbmcgdGhlIHF1ZXJ5LiAgVGhlIHNldF9tZW1wb2xpY3koKSBhbmQKKyAgIG1iaW5kKCkgQVBJcyBbc2VlIGJlbG93XSBhbHdheXMgYWNxdWlyZSB0aGUgbW1hcF9zZW0gZm9yIHdyaXRlIHdoZW4KKyAgIGluc3RhbGxpbmcgb3IgcmVwbGFjaW5nIHRhc2sgb3Igdm1hIHBvbGljaWVzLiAgVGh1cywgdGhlcmUgaXMgbm8gcG9zc2liaWxpdHkKKyAgIG9mIGEgdGFzayBvciB0aHJlYWQgZnJlZWluZyBhIHBvbGljeSB3aGlsZSBhbm90aGVyIHRhc2sgb3IgdGhyZWFkIGlzCisgICBxdWVyeWluZyBpdC4KKworMykgUGFnZSBhbGxvY2F0aW9uIHVzYWdlIG9mIHRhc2sgb3Igdm1hIHBvbGljeSBvY2N1cnMgaW4gdGhlIGZhdWx0IHBhdGggd2hlcmUKKyAgIHdlIGhvbGQgdGhlbSBtbWFwX3NlbSBmb3IgcmVhZC4gIEFnYWluLCBiZWNhdXNlIHJlcGxhY2luZyB0aGUgdGFzayBvciB2bWEKKyAgIHBvbGljeSByZXF1aXJlcyB0aGF0IHRoZSBtbWFwX3NlbSBiZSBoZWxkIGZvciB3cml0ZSwgdGhlIHBvbGljeSBjYW4ndCBiZQorICAgZnJlZWQgb3V0IGZyb20gdW5kZXIgdXMgd2hpbGUgd2UncmUgdXNpbmcgaXQgZm9yIHBhZ2UgYWxsb2NhdGlvbi4KKworNCkgU2hhcmVkIHBvbGljaWVzIHJlcXVpcmUgc3BlY2lhbCBjb25zaWRlcmF0aW9uLiAgT25lIHRhc2sgY2FuIHJlcGxhY2UgYQorICAgc2hhcmVkIG1lbW9yeSBwb2xpY3kgd2hpbGUgYW5vdGhlciB0YXNrLCB3aXRoIGEgZGlzdGluY3QgbW1hcF9zZW0sIGlzCisgICBxdWVyeWluZyBvciBhbGxvY2F0aW5nIGEgcGFnZSBiYXNlZCBvbiB0aGUgcG9saWN5LiAgVG8gcmVzb2x2ZSB0aGlzCisgICBwb3RlbnRpYWwgcmFjZSwgdGhlIHNoYXJlZCBwb2xpY3kgaW5mcmFzdHJ1Y3R1cmUgYWRkcyBhbiBleHRyYSByZWZlcmVuY2UKKyAgIHRvIHRoZSBzaGFyZWQgcG9saWN5IGR1cmluZyBsb29rdXAgd2hpbGUgaG9sZGluZyBhIHNwaW4gbG9jayBvbiB0aGUgc2hhcmVkCisgICBwb2xpY3kgbWFuYWdlbWVudCBzdHJ1Y3R1cmUuICBUaGlzIHJlcXVpcmVzIHRoYXQgd2UgZHJvcCB0aGlzIGV4dHJhCisgICByZWZlcmVuY2Ugd2hlbiB3ZSdyZSBmaW5pc2hlZCAidXNpbmciIHRoZSBwb2xpY3kuICBXZSBtdXN0IGRyb3AgdGhlCisgICBleHRyYSByZWZlcmVuY2Ugb24gc2hhcmVkIHBvbGljaWVzIGluIHRoZSBzYW1lIHF1ZXJ5L2FsbG9jYXRpb24gcGF0aHMKKyAgIHVzZWQgZm9yIG5vbi1zaGFyZWQgcG9saWNpZXMuICBGb3IgdGhpcyByZWFzb24sIHNoYXJlZCBwb2xpY2llcyBhcmUgbWFya2VkCisgICBhcyBzdWNoLCBhbmQgdGhlIGV4dHJhIHJlZmVyZW5jZSBpcyBkcm9wcGVkICJjb25kaXRpb25hbGx5Ii0taS5lLiwgb25seQorICAgZm9yIHNoYXJlZCBwb2xpY2llcy4KKworICAgQmVjYXVzZSBvZiB0aGlzIGV4dHJhIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIGJlY2F1c2Ugd2UgbXVzdCBsb29rdXAKKyAgIHNoYXJlZCBwb2xpY2llcyBpbiBhIHRyZWUgc3RydWN0dXJlIHVuZGVyIHNwaW5sb2NrLCBzaGFyZWQgcG9saWNpZXMgYXJlCisgICBtb3JlIGV4cGVuc2l2ZSB0byB1c2UgaW4gdGhlIHBhZ2UgYWxsb2NhdGlvbiBwYXRoLiAgVGhpcyBpcyBlc3BlY2lhbGx5CisgICB0cnVlIGZvciBzaGFyZWQgcG9saWNpZXMgb24gc2hhcmVkIG1lbW9yeSByZWdpb25zIHNoYXJlZCBieSB0YXNrcyBydW5uaW5nCisgICBvbiBkaWZmZXJlbnQgTlVNQSBub2Rlcy4gIFRoaXMgZXh0cmEgb3ZlcmhlYWQgY2FuIGJlIGF2b2lkZWQgYnkgYWx3YXlzCisgICBmYWxsaW5nIGJhY2sgdG8gdGFzayBvciBzeXN0ZW0gZGVmYXVsdCBwb2xpY3kgZm9yIHNoYXJlZCBtZW1vcnkgcmVnaW9ucywKKyAgIG9yIGJ5IHByZWZhdWx0aW5nIHRoZSBlbnRpcmUgc2hhcmVkIG1lbW9yeSByZWdpb24gaW50byBtZW1vcnkgYW5kIGxvY2tpbmcKKyAgIGl0IGRvd24uICBIb3dldmVyLCB0aGlzIG1pZ2h0IG5vdCBiZSBhcHByb3ByaWF0ZSBmb3IgYWxsIGFwcGxpY2F0aW9ucy4KKworTUVNT1JZIFBPTElDWSBBUElzCisKK0xpbnV4IHN1cHBvcnRzIDMgc3lzdGVtIGNhbGxzIGZvciBjb250cm9sbGluZyBtZW1vcnkgcG9saWN5LiAgVGhlc2UgQVBJUworYWx3YXlzIGFmZmVjdCBvbmx5IHRoZSBjYWxsaW5nIHRhc2ssIHRoZSBjYWxsaW5nIHRhc2sncyBhZGRyZXNzIHNwYWNlLCBvcgorc29tZSBzaGFyZWQgb2JqZWN0IG1hcHBlZCBpbnRvIHRoZSBjYWxsaW5nIHRhc2sncyBhZGRyZXNzIHNwYWNlLgorCisJTm90ZTogIHRoZSBoZWFkZXJzIHRoYXQgZGVmaW5lIHRoZXNlIEFQSXMgYW5kIHRoZSBwYXJhbWV0ZXIgZGF0YSB0eXBlcworCWZvciB1c2VyIHNwYWNlIGFwcGxpY2F0aW9ucyByZXNpZGUgaW4gYSBwYWNrYWdlIHRoYXQgaXMgbm90IHBhcnQgb2YKKwl0aGUgTGludXgga2VybmVsLiAgVGhlIGtlcm5lbCBzeXN0ZW0gY2FsbCBpbnRlcmZhY2VzLCB3aXRoIHRoZSAnc3lzXycKKwlwcmVmaXgsIGFyZSBkZWZpbmVkIGluIDxsaW51eC9zeXNjYWxscy5oPjsgdGhlIG1vZGUgYW5kIGZsYWcKKwlkZWZpbml0aW9ucyBhcmUgZGVmaW5lZCBpbiA8bGludXgvbWVtcG9saWN5Lmg+LgorCitTZXQgW1Rhc2tdIE1lbW9yeSBQb2xpY3k6CisKKwlsb25nIHNldF9tZW1wb2xpY3koaW50IG1vZGUsIGNvbnN0IHVuc2lnbmVkIGxvbmcgKm5tYXNrLAorCQkJCQl1bnNpZ25lZCBsb25nIG1heG5vZGUpOworCisJU2V0J3MgdGhlIGNhbGxpbmcgdGFzaydzICJ0YXNrL3Byb2Nlc3MgbWVtb3J5IHBvbGljeSIgdG8gbW9kZQorCXNwZWNpZmllZCBieSB0aGUgJ21vZGUnIGFyZ3VtZW50IGFuZCB0aGUgc2V0IG9mIG5vZGVzIGRlZmluZWQKKwlieSAnbm1hc2snLiAgJ25tYXNrJyBwb2ludHMgdG8gYSBiaXQgbWFzayBvZiBub2RlIGlkcyBjb250YWluaW5nCisJYXQgbGVhc3QgJ21heG5vZGUnIGlkcy4gIE9wdGlvbmFsIG1vZGUgZmxhZ3MgbWF5IGJlIHBhc3NlZCBieQorCWNvbWJpbmluZyB0aGUgJ21vZGUnIGFyZ3VtZW50IHdpdGggdGhlIGZsYWcgKGZvciBleGFtcGxlOgorCU1QT0xfSU5URVJMRUFWRSB8IE1QT0xfRl9TVEFUSUNfTk9ERVMpLgorCisJU2VlIHRoZSBzZXRfbWVtcG9saWN5KDIpIG1hbiBwYWdlIGZvciBtb3JlIGRldGFpbHMKKworCitHZXQgW1Rhc2tdIE1lbW9yeSBQb2xpY3kgb3IgUmVsYXRlZCBJbmZvcm1hdGlvbgorCisJbG9uZyBnZXRfbWVtcG9saWN5KGludCAqbW9kZSwKKwkJCSAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgKm5tYXNrLCB1bnNpZ25lZCBsb25nIG1heG5vZGUsCisJCQkgICB2b2lkICphZGRyLCBpbnQgZmxhZ3MpOworCisJUXVlcmllcyB0aGUgInRhc2svcHJvY2VzcyBtZW1vcnkgcG9saWN5IiBvZiB0aGUgY2FsbGluZyB0YXNrLCBvcgorCXRoZSBwb2xpY3kgb3IgbG9jYXRpb24gb2YgYSBzcGVjaWZpZWQgdmlydHVhbCBhZGRyZXNzLCBkZXBlbmRpbmcKKwlvbiB0aGUgJ2ZsYWdzJyBhcmd1bWVudC4KKworCVNlZSB0aGUgZ2V0X21lbXBvbGljeSgyKSBtYW4gcGFnZSBmb3IgbW9yZSBkZXRhaWxzCisKKworSW5zdGFsbCBWTUEvU2hhcmVkIFBvbGljeSBmb3IgYSBSYW5nZSBvZiBUYXNrJ3MgQWRkcmVzcyBTcGFjZQorCisJbG9uZyBtYmluZCh2b2lkICpzdGFydCwgdW5zaWduZWQgbG9uZyBsZW4sIGludCBtb2RlLAorCQkgICBjb25zdCB1bnNpZ25lZCBsb25nICpubWFzaywgdW5zaWduZWQgbG9uZyBtYXhub2RlLAorCQkgICB1bnNpZ25lZCBmbGFncyk7CisKKwltYmluZCgpIGluc3RhbGxzIHRoZSBwb2xpY3kgc3BlY2lmaWVkIGJ5IChtb2RlLCBubWFzaywgbWF4bm9kZXMpIGFzCisJYSBWTUEgcG9saWN5IGZvciB0aGUgcmFuZ2Ugb2YgdGhlIGNhbGxpbmcgdGFzaydzIGFkZHJlc3Mgc3BhY2UKKwlzcGVjaWZpZWQgYnkgdGhlICdzdGFydCcgYW5kICdsZW4nIGFyZ3VtZW50cy4gIEFkZGl0aW9uYWwgYWN0aW9ucworCW1heSBiZSByZXF1ZXN0ZWQgdmlhIHRoZSAnZmxhZ3MnIGFyZ3VtZW50LgorCisJU2VlIHRoZSBtYmluZCgyKSBtYW4gcGFnZSBmb3IgbW9yZSBkZXRhaWxzLgorCitNRU1PUlkgUE9MSUNZIENPTU1BTkQgTElORSBJTlRFUkZBQ0UKKworQWx0aG91Z2ggbm90IHN0cmljdGx5IHBhcnQgb2YgdGhlIExpbnV4IGltcGxlbWVudGF0aW9uIG9mIG1lbW9yeSBwb2xpY3ksCithIGNvbW1hbmQgbGluZSB0b29sLCBudW1hY3RsKDgpLCBleGlzdHMgdGhhdCBhbGxvd3Mgb25lIHRvOgorCisrIHNldCB0aGUgdGFzayBwb2xpY3kgZm9yIGEgc3BlY2lmaWVkIHByb2dyYW0gdmlhIHNldF9tZW1wb2xpY3koMiksIGZvcmsoMikgYW5kCisgIGV4ZWMoMikKKworKyBzZXQgdGhlIHNoYXJlZCBwb2xpY3kgZm9yIGEgc2hhcmVkIG1lbW9yeSBzZWdtZW50IHZpYSBtYmluZCgyKQorCitUaGUgbnVtYWN0bCg4KSB0b29sIGlzIHBhY2thZ2VkIHdpdGggdGhlIHJ1bi10aW1lIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkKK2NvbnRhaW5pbmcgdGhlIG1lbW9yeSBwb2xpY3kgc3lzdGVtIGNhbGwgd3JhcHBlcnMuICBTb21lIGRpc3RyaWJ1dGlvbnMKK3BhY2thZ2UgdGhlIGhlYWRlcnMgYW5kIGNvbXBpbGUtdGltZSBsaWJyYXJpZXMgaW4gYSBzZXBhcmF0ZSBkZXZlbG9wbWVudAorcGFja2FnZS4KKworCitNRU1PUlkgUE9MSUNJRVMgQU5EIENQVVNFVFMKKworTWVtb3J5IHBvbGljaWVzIHdvcmsgd2l0aGluIGNwdXNldHMgYXMgZGVzY3JpYmVkIGFib3ZlLiAgRm9yIG1lbW9yeSBwb2xpY2llcwordGhhdCByZXF1aXJlIGEgbm9kZSBvciBzZXQgb2Ygbm9kZXMsIHRoZSBub2RlcyBhcmUgcmVzdHJpY3RlZCB0byB0aGUgc2V0IG9mCitub2RlcyB3aG9zZSBtZW1vcmllcyBhcmUgYWxsb3dlZCBieSB0aGUgY3B1c2V0IGNvbnN0cmFpbnRzLiAgSWYgdGhlIG5vZGVtYXNrCitzcGVjaWZpZWQgZm9yIHRoZSBwb2xpY3kgY29udGFpbnMgbm9kZXMgdGhhdCBhcmUgbm90IGFsbG93ZWQgYnkgdGhlIGNwdXNldCBhbmQKK01QT0xfRl9SRUxBVElWRV9OT0RFUyBpcyBub3QgdXNlZCwgdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgc2V0IG9mIG5vZGVzCitzcGVjaWZpZWQgZm9yIHRoZSBwb2xpY3kgYW5kIHRoZSBzZXQgb2Ygbm9kZXMgd2l0aCBtZW1vcnkgaXMgdXNlZC4gIElmIHRoZQorcmVzdWx0IGlzIHRoZSBlbXB0eSBzZXQsIHRoZSBwb2xpY3kgaXMgY29uc2lkZXJlZCBpbnZhbGlkIGFuZCBjYW5ub3QgYmUKK2luc3RhbGxlZC4gIElmIE1QT0xfRl9SRUxBVElWRV9OT0RFUyBpcyB1c2VkLCB0aGUgcG9saWN5J3Mgbm9kZXMgYXJlIG1hcHBlZAorb250byBhbmQgZm9sZGVkIGludG8gdGhlIHRhc2sncyBzZXQgb2YgYWxsb3dlZCBub2RlcyBhcyBwcmV2aW91c2x5IGRlc2NyaWJlZC4KKworVGhlIGludGVyYWN0aW9uIG9mIG1lbW9yeSBwb2xpY2llcyBhbmQgY3B1c2V0cyBjYW4gYmUgcHJvYmxlbWF0aWMgd2hlbiB0YXNrcworaW4gdHdvIGNwdXNldHMgc2hhcmUgYWNjZXNzIHRvIGEgbWVtb3J5IHJlZ2lvbiwgc3VjaCBhcyBzaGFyZWQgbWVtb3J5IHNlZ21lbnRzCitjcmVhdGVkIGJ5IHNobWdldCgpIG9mIG1tYXAoKSB3aXRoIHRoZSBNQVBfQU5PTllNT1VTIGFuZCBNQVBfU0hBUkVEIGZsYWdzLCBhbmQKK2FueSBvZiB0aGUgdGFza3MgaW5zdGFsbCBzaGFyZWQgcG9saWN5IG9uIHRoZSByZWdpb24sIG9ubHkgbm9kZXMgd2hvc2UKK21lbW9yaWVzIGFyZSBhbGxvd2VkIGluIGJvdGggY3B1c2V0cyBtYXkgYmUgdXNlZCBpbiB0aGUgcG9saWNpZXMuICBPYnRhaW5pbmcKK3RoaXMgaW5mb3JtYXRpb24gcmVxdWlyZXMgInN0ZXBwaW5nIG91dHNpZGUiIHRoZSBtZW1vcnkgcG9saWN5IEFQSXMgdG8gdXNlIHRoZQorY3B1c2V0IGluZm9ybWF0aW9uIGFuZCByZXF1aXJlcyB0aGF0IG9uZSBrbm93IGluIHdoYXQgY3B1c2V0cyBvdGhlciB0YXNrIG1pZ2h0CitiZSBhdHRhY2hpbmcgdG8gdGhlIHNoYXJlZCByZWdpb24uICBGdXJ0aGVybW9yZSwgaWYgdGhlIGNwdXNldHMnIGFsbG93ZWQKK21lbW9yeSBzZXRzIGFyZSBkaXNqb2ludCwgImxvY2FsIiBhbGxvY2F0aW9uIGlzIHRoZSBvbmx5IHZhbGlkIHBvbGljeS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdm0vb3ZlcmNvbW1pdC1hY2NvdW50aW5nIGIvRG9jdW1lbnRhdGlvbi92bS9vdmVyY29tbWl0LWFjY291bnRpbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JmYWFhNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdm0vb3ZlcmNvbW1pdC1hY2NvdW50aW5nCkBAIC0wLDAgKzEsODAgQEAKK1RoZSBMaW51eCBrZXJuZWwgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBvdmVyY29tbWl0IGhhbmRsaW5nIG1vZGVzCisKKzAJLQlIZXVyaXN0aWMgb3ZlcmNvbW1pdCBoYW5kbGluZy4gT2J2aW91cyBvdmVyY29tbWl0cyBvZgorCQlhZGRyZXNzIHNwYWNlIGFyZSByZWZ1c2VkLiBVc2VkIGZvciBhIHR5cGljYWwgc3lzdGVtLiBJdAorCQllbnN1cmVzIGEgc2VyaW91c2x5IHdpbGQgYWxsb2NhdGlvbiBmYWlscyB3aGlsZSBhbGxvd2luZworCQlvdmVyY29tbWl0IHRvIHJlZHVjZSBzd2FwIHVzYWdlLiAgcm9vdCBpcyBhbGxvd2VkIHRvIAorCQlhbGxvY2F0ZSBzbGlnaHRseSBtb3JlIG1lbW9yeSBpbiB0aGlzIG1vZGUuIFRoaXMgaXMgdGhlIAorCQlkZWZhdWx0LgorCisxCS0JQWx3YXlzIG92ZXJjb21taXQuIEFwcHJvcHJpYXRlIGZvciBzb21lIHNjaWVudGlmaWMKKwkJYXBwbGljYXRpb25zLiBDbGFzc2ljIGV4YW1wbGUgaXMgY29kZSB1c2luZyBzcGFyc2UgYXJyYXlzCisJCWFuZCBqdXN0IHJlbHlpbmcgb24gdGhlIHZpcnR1YWwgbWVtb3J5IGNvbnNpc3RpbmcgYWxtb3N0CisJCWVudGlyZWx5IG9mIHplcm8gcGFnZXMuCisKKzIJLQlEb24ndCBvdmVyY29tbWl0LiBUaGUgdG90YWwgYWRkcmVzcyBzcGFjZSBjb21taXQKKwkJZm9yIHRoZSBzeXN0ZW0gaXMgbm90IHBlcm1pdHRlZCB0byBleGNlZWQgc3dhcCArIGEKKwkJY29uZmlndXJhYmxlIGFtb3VudCAoZGVmYXVsdCBpcyA1MCUpIG9mIHBoeXNpY2FsIFJBTS4KKwkJRGVwZW5kaW5nIG9uIHRoZSBhbW91bnQgeW91IHVzZSwgaW4gbW9zdCBzaXR1YXRpb25zCisJCXRoaXMgbWVhbnMgYSBwcm9jZXNzIHdpbGwgbm90IGJlIGtpbGxlZCB3aGlsZSBhY2Nlc3NpbmcKKwkJcGFnZXMgYnV0IHdpbGwgcmVjZWl2ZSBlcnJvcnMgb24gbWVtb3J5IGFsbG9jYXRpb24gYXMKKwkJYXBwcm9wcmlhdGUuCisKKwkJVXNlZnVsIGZvciBhcHBsaWNhdGlvbnMgdGhhdCB3YW50IHRvIGd1YXJhbnRlZSB0aGVpcgorCQltZW1vcnkgYWxsb2NhdGlvbnMgd2lsbCBiZSBhdmFpbGFibGUgaW4gdGhlIGZ1dHVyZQorCQl3aXRob3V0IGhhdmluZyB0byBpbml0aWFsaXplIGV2ZXJ5IHBhZ2UuCisKK1RoZSBvdmVyY29tbWl0IHBvbGljeSBpcyBzZXQgdmlhIHRoZSBzeXNjdGwgYHZtLm92ZXJjb21taXRfbWVtb3J5Jy4KKworVGhlIG92ZXJjb21taXQgYW1vdW50IGNhbiBiZSBzZXQgdmlhIGB2bS5vdmVyY29tbWl0X3JhdGlvJyAocGVyY2VudGFnZSkKK29yIGB2bS5vdmVyY29tbWl0X2tieXRlcycgKGFic29sdXRlIHZhbHVlKS4KKworVGhlIGN1cnJlbnQgb3ZlcmNvbW1pdCBsaW1pdCBhbmQgYW1vdW50IGNvbW1pdHRlZCBhcmUgdmlld2FibGUgaW4KKy9wcm9jL21lbWluZm8gYXMgQ29tbWl0TGltaXQgYW5kIENvbW1pdHRlZF9BUyByZXNwZWN0aXZlbHkuCisKK0dvdGNoYXMKKy0tLS0tLS0KKworVGhlIEMgbGFuZ3VhZ2Ugc3RhY2sgZ3Jvd3RoIGRvZXMgYW4gaW1wbGljaXQgbXJlbWFwLiBJZiB5b3Ugd2FudCBhYnNvbHV0ZQorZ3VhcmFudGVlcyBhbmQgcnVuIGNsb3NlIHRvIHRoZSBlZGdlIHlvdSBNVVNUIG1tYXAgeW91ciBzdGFjayBmb3IgdGhlIAorbGFyZ2VzdCBzaXplIHlvdSB0aGluayB5b3Ugd2lsbCBuZWVkLiBGb3IgdHlwaWNhbCBzdGFjayB1c2FnZSB0aGlzIGRvZXMKK25vdCBtYXR0ZXIgbXVjaCBidXQgaXQncyBhIGNvcm5lciBjYXNlIGlmIHlvdSByZWFsbHkgcmVhbGx5IGNhcmUKKworSW4gbW9kZSAyIHRoZSBNQVBfTk9SRVNFUlZFIGZsYWcgaXMgaWdub3JlZC4gCisKKworSG93IEl0IFdvcmtzCistLS0tLS0tLS0tLS0KKworVGhlIG92ZXJjb21taXQgaXMgYmFzZWQgb24gdGhlIGZvbGxvd2luZyBydWxlcworCitGb3IgYSBmaWxlIGJhY2tlZCBtYXAKKwlTSEFSRUQgb3IgUkVBRC1vbmx5CS0JMCBjb3N0ICh0aGUgZmlsZSBpcyB0aGUgbWFwIG5vdCBzd2FwKQorCVBSSVZBVEUgV1JJVEFCTEUJLQlzaXplIG9mIG1hcHBpbmcgcGVyIGluc3RhbmNlCisKK0ZvciBhbiBhbm9ueW1vdXMgb3IgL2Rldi96ZXJvIG1hcAorCVNIQVJFRAkJCS0Jc2l6ZSBvZiBtYXBwaW5nCisJUFJJVkFURSBSRUFELW9ubHkJLQkwIGNvc3QgKGJ1dCBvZiBsaXR0bGUgdXNlKQorCVBSSVZBVEUgV1JJVEFCTEUJLQlzaXplIG9mIG1hcHBpbmcgcGVyIGluc3RhbmNlCisKK0FkZGl0aW9uYWwgYWNjb3VudGluZworCVBhZ2VzIG1hZGUgd3JpdGFibGUgY29waWVzIGJ5IG1tYXAKKwlzaG1mcyBtZW1vcnkgZHJhd24gZnJvbSB0aGUgc2FtZSBwb29sCisKK1N0YXR1cworLS0tLS0tCisKK28JV2UgYWNjb3VudCBtbWFwIG1lbW9yeSBtYXBwaW5ncworbwlXZSBhY2NvdW50IG1wcm90ZWN0IGNoYW5nZXMgaW4gY29tbWl0CitvCVdlIGFjY291bnQgbXJlbWFwIGNoYW5nZXMgaW4gc2l6ZQorbwlXZSBhY2NvdW50IGJyaworbwlXZSBhY2NvdW50IG11bm1hcAorbwlXZSByZXBvcnQgdGhlIGNvbW1pdCBzdGF0dXMgaW4gL3Byb2MKK28JQWNjb3VudCBhbmQgY2hlY2sgb24gZm9yaworbwlSZXZpZXcgc3RhY2sgaGFuZGxpbmcvYnVpbGRpbmcgb24gZXhlYworbwlTSE1mcyBhY2NvdW50aW5nCitvCUltcGxlbWVudCBhY3R1YWwgbGltaXQgZW5mb3JjZW1lbnQKKworVG8gRG8KKy0tLS0tCitvCUFjY291bnQgcHRyYWNlIHBhZ2VzICh0aGlzIGlzIGhhcmQpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZtL3BhZ2VfbWlncmF0aW9uIGIvRG9jdW1lbnRhdGlvbi92bS9wYWdlX21pZ3JhdGlvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWE1YzA4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92bS9wYWdlX21pZ3JhdGlvbgpAQCAtMCwwICsxLDE0NiBAQAorUGFnZSBtaWdyYXRpb24KKy0tLS0tLS0tLS0tLS0tCisKK1BhZ2UgbWlncmF0aW9uIGFsbG93cyB0aGUgbW92aW5nIG9mIHRoZSBwaHlzaWNhbCBsb2NhdGlvbiBvZiBwYWdlcyBiZXR3ZWVuCitub2RlcyBpbiBhIG51bWEgc3lzdGVtIHdoaWxlIHRoZSBwcm9jZXNzIGlzIHJ1bm5pbmcuIFRoaXMgbWVhbnMgdGhhdCB0aGUKK3ZpcnR1YWwgYWRkcmVzc2VzIHRoYXQgdGhlIHByb2Nlc3Mgc2VlcyBkbyBub3QgY2hhbmdlLiBIb3dldmVyLCB0aGUKK3N5c3RlbSByZWFycmFuZ2VzIHRoZSBwaHlzaWNhbCBsb2NhdGlvbiBvZiB0aG9zZSBwYWdlcy4KKworVGhlIG1haW4gaW50ZW5kIG9mIHBhZ2UgbWlncmF0aW9uIGlzIHRvIHJlZHVjZSB0aGUgbGF0ZW5jeSBvZiBtZW1vcnkgYWNjZXNzCitieSBtb3ZpbmcgcGFnZXMgbmVhciB0byB0aGUgcHJvY2Vzc29yIHdoZXJlIHRoZSBwcm9jZXNzIGFjY2Vzc2luZyB0aGF0IG1lbW9yeQoraXMgcnVubmluZy4KKworUGFnZSBtaWdyYXRpb24gYWxsb3dzIGEgcHJvY2VzcyB0byBtYW51YWxseSByZWxvY2F0ZSB0aGUgbm9kZSBvbiB3aGljaCBpdHMKK3BhZ2VzIGFyZSBsb2NhdGVkIHRocm91Z2ggdGhlIE1GX01PVkUgYW5kIE1GX01PVkVfQUxMIG9wdGlvbnMgd2hpbGUgc2V0dGluZworYSBuZXcgbWVtb3J5IHBvbGljeSB2aWEgbWJpbmQoKS4gVGhlIHBhZ2VzIG9mIHByb2Nlc3MgY2FuIGFsc28gYmUgcmVsb2NhdGVkCitmcm9tIGFub3RoZXIgcHJvY2VzcyB1c2luZyB0aGUgc3lzX21pZ3JhdGVfcGFnZXMoKSBmdW5jdGlvbiBjYWxsLiBUaGUKK21pZ3JhdGVfcGFnZXMgZnVuY3Rpb24gY2FsbCB0YWtlcyB0d28gc2V0cyBvZiBub2RlcyBhbmQgbW92ZXMgcGFnZXMgb2YgYQorcHJvY2VzcyB0aGF0IGFyZSBsb2NhdGVkIG9uIHRoZSBmcm9tIG5vZGVzIHRvIHRoZSBkZXN0aW5hdGlvbiBub2Rlcy4KK1BhZ2UgbWlncmF0aW9uIGZ1bmN0aW9ucyBhcmUgcHJvdmlkZWQgYnkgdGhlIG51bWFjdGwgcGFja2FnZSBieSBBbmRpIEtsZWVuCisoYSB2ZXJzaW9uIGxhdGVyIHRoYW4gMC45LjMgaXMgcmVxdWlyZWQuIEdldCBpdCBmcm9tCitmdHA6Ly9vc3Muc2dpLmNvbS93d3cvcHJvamVjdHMvbGlibnVtYS9kb3dubG9hZC8pLiBudW1hY3RsIHByb3ZpZGVzIGxpYm51bWEKK3doaWNoIHByb3ZpZGVzIGFuIGludGVyZmFjZSBzaW1pbGFyIHRvIG90aGVyIG51bWEgZnVuY3Rpb25hbGl0eSBmb3IgcGFnZQorbWlncmF0aW9uLiAgY2F0IC9wcm9jLzxwaWQ+L251bWFfbWFwcyBhbGxvd3MgYW4gZWFzeSByZXZpZXcgb2Ygd2hlcmUgdGhlCitwYWdlcyBvZiBhIHByb2Nlc3MgYXJlIGxvY2F0ZWQuIFNlZSBhbHNvIHRoZSBudW1hX21hcHMgZG9jdW1lbnRhdGlvbiBpbiB0aGUKK3Byb2MoNSkgbWFuIHBhZ2UuCisKK01hbnVhbCBtaWdyYXRpb24gaXMgdXNlZnVsIGlmIGZvciBleGFtcGxlIHRoZSBzY2hlZHVsZXIgaGFzIHJlbG9jYXRlZAorYSBwcm9jZXNzIHRvIGEgcHJvY2Vzc29yIG9uIGEgZGlzdGFudCBub2RlLiBBIGJhdGNoIHNjaGVkdWxlciBvciBhbgorYWRtaW5pc3RyYXRvciBtYXkgZGV0ZWN0IHRoZSBzaXR1YXRpb24gYW5kIG1vdmUgdGhlIHBhZ2VzIG9mIHRoZSBwcm9jZXNzCituZWFyZXIgdG8gdGhlIG5ldyBwcm9jZXNzb3IuIFRoZSBrZXJuZWwgaXRzZWxmIGRvZXMgb25seSBwcm92aWRlCittYW51YWwgcGFnZSBtaWdyYXRpb24gc3VwcG9ydC4gQXV0b21hdGljIHBhZ2UgbWlncmF0aW9uIG1heSBiZSBpbXBsZW1lbnRlZAordGhyb3VnaCB1c2VyIHNwYWNlIHByb2Nlc3NlcyB0aGF0IG1vdmUgcGFnZXMuIEEgc3BlY2lhbCBmdW5jdGlvbiBjYWxsCisibW92ZV9wYWdlcyIgYWxsb3dzIHRoZSBtb3Zpbmcgb2YgaW5kaXZpZHVhbCBwYWdlcyB3aXRoaW4gYSBwcm9jZXNzLgorQSBOVU1BIHByb2ZpbGVyIG1heSBmLmUuIG9idGFpbiBhIGxvZyBzaG93aW5nIGZyZXF1ZW50IG9mZiBub2RlCithY2Nlc3NlcyBhbmQgbWF5IHVzZSB0aGUgcmVzdWx0IHRvIG1vdmUgcGFnZXMgdG8gbW9yZSBhZHZhbnRhZ2VvdXMKK2xvY2F0aW9ucy4KKworTGFyZ2VyIGluc3RhbGxhdGlvbnMgdXN1YWxseSBwYXJ0aXRpb24gdGhlIHN5c3RlbSB1c2luZyBjcHVzZXRzIGludG8KK3NlY3Rpb25zIG9mIG5vZGVzLiBQYXVsIEphY2tzb24gaGFzIGVxdWlwcGVkIGNwdXNldHMgd2l0aCB0aGUgYWJpbGl0eSB0bworbW92ZSBwYWdlcyB3aGVuIGEgdGFzayBpcyBtb3ZlZCB0byBhbm90aGVyIGNwdXNldCAoU2VlCitEb2N1bWVudGF0aW9uL2Nncm91cHMvY3B1c2V0cy50eHQpLgorQ3B1c2V0cyBhbGxvd3MgdGhlIGF1dG9tYXRpb24gb2YgcHJvY2VzcyBsb2NhbGl0eS4gSWYgYSB0YXNrIGlzIG1vdmVkIHRvCithIG5ldyBjcHVzZXQgdGhlbiBhbHNvIGFsbCBpdHMgcGFnZXMgYXJlIG1vdmVkIHdpdGggaXQgc28gdGhhdCB0aGUKK3BlcmZvcm1hbmNlIG9mIHRoZSBwcm9jZXNzIGRvZXMgbm90IHNpbmsgZHJhbWF0aWNhbGx5LiBBbHNvIHRoZSBwYWdlcworb2YgcHJvY2Vzc2VzIGluIGEgY3B1c2V0IGFyZSBtb3ZlZCBpZiB0aGUgYWxsb3dlZCBtZW1vcnkgbm9kZXMgb2YgYQorY3B1c2V0IGFyZSBjaGFuZ2VkLgorCitQYWdlIG1pZ3JhdGlvbiBhbGxvd3MgdGhlIHByZXNlcnZhdGlvbiBvZiB0aGUgcmVsYXRpdmUgbG9jYXRpb24gb2YgcGFnZXMKK3dpdGhpbiBhIGdyb3VwIG9mIG5vZGVzIGZvciBhbGwgbWlncmF0aW9uIHRlY2huaXF1ZXMgd2hpY2ggd2lsbCBwcmVzZXJ2ZSBhCitwYXJ0aWN1bGFyIG1lbW9yeSBhbGxvY2F0aW9uIHBhdHRlcm4gZ2VuZXJhdGVkIGV2ZW4gYWZ0ZXIgbWlncmF0aW5nIGEKK3Byb2Nlc3MuIFRoaXMgaXMgbmVjZXNzYXJ5IGluIG9yZGVyIHRvIHByZXNlcnZlIHRoZSBtZW1vcnkgbGF0ZW5jaWVzLgorUHJvY2Vzc2VzIHdpbGwgcnVuIHdpdGggc2ltaWxhciBwZXJmb3JtYW5jZSBhZnRlciBtaWdyYXRpb24uCisKK1BhZ2UgbWlncmF0aW9uIG9jY3VycyBpbiBzZXZlcmFsIHN0ZXBzLiBGaXJzdCBhIGhpZ2ggbGV2ZWwKK2Rlc2NyaXB0aW9uIGZvciB0aG9zZSB0cnlpbmcgdG8gdXNlIG1pZ3JhdGVfcGFnZXMoKSBmcm9tIHRoZSBrZXJuZWwKKyhmb3IgdXNlcnNwYWNlIHVzYWdlIHNlZSB0aGUgQW5kaSBLbGVlbidzIG51bWFjdGwgcGFja2FnZSBtZW50aW9uZWQgYWJvdmUpCithbmQgdGhlbiBhIGxvdyBsZXZlbCBkZXNjcmlwdGlvbiBvZiBob3cgdGhlIGxvdyBsZXZlbCBkZXRhaWxzIHdvcmsuCisKK0EuIEluIGtlcm5lbCB1c2Ugb2YgbWlncmF0ZV9wYWdlcygpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisxLiBSZW1vdmUgcGFnZXMgZnJvbSB0aGUgTFJVLgorCisgICBMaXN0cyBvZiBwYWdlcyB0byBiZSBtaWdyYXRlZCBhcmUgZ2VuZXJhdGVkIGJ5IHNjYW5uaW5nIG92ZXIKKyAgIHBhZ2VzIGFuZCBtb3ZpbmcgdGhlbSBpbnRvIGxpc3RzLiBUaGlzIGlzIGRvbmUgYnkKKyAgIGNhbGxpbmcgaXNvbGF0ZV9scnVfcGFnZSgpLgorICAgQ2FsbGluZyBpc29sYXRlX2xydV9wYWdlIGluY3JlYXNlcyB0aGUgcmVmZXJlbmNlcyB0byB0aGUgcGFnZQorICAgc28gdGhhdCBpdCBjYW5ub3QgdmFuaXNoIHdoaWxlIHRoZSBwYWdlIG1pZ3JhdGlvbiBvY2N1cnMuCisgICBJdCBhbHNvIHByZXZlbnRzIHRoZSBzd2FwcGVyIG9yIG90aGVyIHNjYW5zIHRvIGVuY291bnRlcgorICAgdGhlIHBhZ2UuCisKKzIuIFdlIG5lZWQgdG8gaGF2ZSBhIGZ1bmN0aW9uIG9mIHR5cGUgbmV3X3BhZ2VfdCB0aGF0IGNhbiBiZQorICAgcGFzc2VkIHRvIG1pZ3JhdGVfcGFnZXMoKS4gVGhpcyBmdW5jdGlvbiBzaG91bGQgZmlndXJlIG91dAorICAgaG93IHRvIGFsbG9jYXRlIHRoZSBjb3JyZWN0IG5ldyBwYWdlIGdpdmVuIHRoZSBvbGQgcGFnZS4KKworMy4gVGhlIG1pZ3JhdGVfcGFnZXMoKSBmdW5jdGlvbiBpcyBjYWxsZWQgd2hpY2ggYXR0ZW1wdHMKKyAgIHRvIGRvIHRoZSBtaWdyYXRpb24uIEl0IHdpbGwgY2FsbCB0aGUgZnVuY3Rpb24gdG8gYWxsb2NhdGUKKyAgIHRoZSBuZXcgcGFnZSBmb3IgZWFjaCBwYWdlIHRoYXQgaXMgY29uc2lkZXJlZCBmb3IKKyAgIG1vdmluZy4KKworQi4gSG93IG1pZ3JhdGVfcGFnZXMoKSB3b3JrcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCittaWdyYXRlX3BhZ2VzKCkgZG9lcyBzZXZlcmFsIHBhc3NlcyBvdmVyIGl0cyBsaXN0IG9mIHBhZ2VzLiBBIHBhZ2UgaXMgbW92ZWQKK2lmIGFsbCByZWZlcmVuY2VzIHRvIGEgcGFnZSBhcmUgcmVtb3ZhYmxlIGF0IHRoZSB0aW1lLiBUaGUgcGFnZSBoYXMKK2FscmVhZHkgYmVlbiByZW1vdmVkIGZyb20gdGhlIExSVSB2aWEgaXNvbGF0ZV9scnVfcGFnZSgpIGFuZCB0aGUgcmVmY291bnQKK2lzIGluY3JlYXNlZCBzbyB0aGF0IHRoZSBwYWdlIGNhbm5vdCBiZSBmcmVlZCB3aGlsZSBwYWdlIG1pZ3JhdGlvbiBvY2N1cnMuCisKK1N0ZXBzOgorCisxLiBMb2NrIHRoZSBwYWdlIHRvIGJlIG1pZ3JhdGVkCisKKzIuIEluc3VyZSB0aGF0IHdyaXRlYmFjayBpcyBjb21wbGV0ZS4KKworMy4gTG9jayB0aGUgbmV3IHBhZ2UgdGhhdCB3ZSB3YW50IHRvIG1vdmUgdG8uIEl0IGlzIGxvY2tlZCBzbyB0aGF0IGFjY2Vzc2VzIHRvCisgICB0aGlzIChub3QgeWV0IHVwdG9kYXRlKSBwYWdlIGltbWVkaWF0ZWx5IGxvY2sgd2hpbGUgdGhlIG1vdmUgaXMgaW4gcHJvZ3Jlc3MuCisKKzQuIEFsbCB0aGUgcGFnZSB0YWJsZSByZWZlcmVuY2VzIHRvIHRoZSBwYWdlIGFyZSBjb252ZXJ0ZWQgdG8gbWlncmF0aW9uCisgICBlbnRyaWVzLiBUaGlzIGRlY3JlYXNlcyB0aGUgbWFwY291bnQgb2YgYSBwYWdlLiBJZiB0aGUgcmVzdWx0aW5nCisgICBtYXBjb3VudCBpcyBub3QgemVybyB0aGVuIHdlIGRvIG5vdCBtaWdyYXRlIHRoZSBwYWdlLiBBbGwgdXNlciBzcGFjZQorICAgcHJvY2Vzc2VzIHRoYXQgYXR0ZW1wdCB0byBhY2Nlc3MgdGhlIHBhZ2Ugd2lsbCBub3cgd2FpdCBvbiB0aGUgcGFnZSBsb2NrLgorCis1LiBUaGUgcmFkaXggdHJlZSBsb2NrIGlzIHRha2VuLiBUaGlzIHdpbGwgY2F1c2UgYWxsIHByb2Nlc3NlcyB0cnlpbmcKKyAgIHRvIGFjY2VzcyB0aGUgcGFnZSB2aWEgdGhlIG1hcHBpbmcgdG8gYmxvY2sgb24gdGhlIHJhZGl4IHRyZWUgc3BpbmxvY2suCisKKzYuIFRoZSByZWZjb3VudCBvZiB0aGUgcGFnZSBpcyBleGFtaW5lZCBhbmQgd2UgYmFjayBvdXQgaWYgcmVmZXJlbmNlcyByZW1haW4KKyAgIG90aGVyd2lzZSB3ZSBrbm93IHRoYXQgd2UgYXJlIHRoZSBvbmx5IG9uZSByZWZlcmVuY2luZyB0aGlzIHBhZ2UuCisKKzcuIFRoZSByYWRpeCB0cmVlIGlzIGNoZWNrZWQgYW5kIGlmIGl0IGRvZXMgbm90IGNvbnRhaW4gdGhlIHBvaW50ZXIgdG8gdGhpcworICAgcGFnZSB0aGVuIHdlIGJhY2sgb3V0IGJlY2F1c2Ugc29tZW9uZSBlbHNlIG1vZGlmaWVkIHRoZSByYWRpeCB0cmVlLgorCis4LiBUaGUgbmV3IHBhZ2UgaXMgcHJlcHBlZCB3aXRoIHNvbWUgc2V0dGluZ3MgZnJvbSB0aGUgb2xkIHBhZ2Ugc28gdGhhdAorICAgYWNjZXNzZXMgdG8gdGhlIG5ldyBwYWdlIHdpbGwgZGlzY292ZXIgYSBwYWdlIHdpdGggdGhlIGNvcnJlY3Qgc2V0dGluZ3MuCisKKzkuIFRoZSByYWRpeCB0cmVlIGlzIGNoYW5nZWQgdG8gcG9pbnQgdG8gdGhlIG5ldyBwYWdlLgorCisxMC4gVGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgb2xkIHBhZ2UgaXMgZHJvcHBlZCBiZWNhdXNlIHRoZSByYWRpeCB0cmVlCisgICAgcmVmZXJlbmNlIGlzIGdvbmUuIEEgcmVmZXJlbmNlIHRvIHRoZSBuZXcgcGFnZSBpcyBlc3RhYmxpc2hlZCBiZWNhdXNlCisgICAgdGhlIG5ldyBwYWdlIGlzIHJlZmVyZW5jZWQgdG8gYnkgdGhlIHJhZGl4IHRyZWUuCisKKzExLiBUaGUgcmFkaXggdHJlZSBsb2NrIGlzIGRyb3BwZWQuIFdpdGggdGhhdCBsb29rdXBzIGluIHRoZSBtYXBwaW5nCisgICAgYmVjb21lIHBvc3NpYmxlIGFnYWluLiBQcm9jZXNzZXMgd2lsbCBtb3ZlIGZyb20gc3Bpbm5pbmcgb24gdGhlIHRyZWVfbG9jaworICAgIHRvIHNsZWVwaW5nIG9uIHRoZSBsb2NrZWQgbmV3IHBhZ2UuCisKKzEyLiBUaGUgcGFnZSBjb250ZW50cyBhcmUgY29waWVkIHRvIHRoZSBuZXcgcGFnZS4KKworMTMuIFRoZSByZW1haW5pbmcgcGFnZSBmbGFncyBhcmUgY29waWVkIHRvIHRoZSBuZXcgcGFnZS4KKworMTQuIFRoZSBvbGQgcGFnZSBmbGFncyBhcmUgY2xlYXJlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBwYWdlIGRvZXMKKyAgICBub3QgcHJvdmlkZSBhbnkgaW5mb3JtYXRpb24gYW55bW9yZS4KKworMTUuIFF1ZXVlZCB1cCB3cml0ZWJhY2sgb24gdGhlIG5ldyBwYWdlIGlzIHRyaWdnZXJlZC4KKworMTYuIElmIG1pZ3JhdGlvbiBlbnRyaWVzIHdlcmUgcGFnZSB0aGVuIHJlcGxhY2UgdGhlbSB3aXRoIHJlYWwgcHRlcy4gRG9pbmcKKyAgICBzbyB3aWxsIGVuYWJsZSBhY2Nlc3MgZm9yIHVzZXIgc3BhY2UgcHJvY2Vzc2VzIG5vdCBhbHJlYWR5IHdhaXRpbmcgZm9yCisgICAgdGhlIHBhZ2UgbG9jay4KKworMTkuIFRoZSBwYWdlIGxvY2tzIGFyZSBkcm9wcGVkIGZyb20gdGhlIG9sZCBhbmQgbmV3IHBhZ2UuCisgICAgUHJvY2Vzc2VzIHdhaXRpbmcgb24gdGhlIHBhZ2UgbG9jayB3aWxsIHJlZG8gdGhlaXIgcGFnZSBmYXVsdHMKKyAgICBhbmQgd2lsbCByZWFjaCB0aGUgbmV3IHBhZ2UuCisKKzIwLiBUaGUgbmV3IHBhZ2UgaXMgbW92ZWQgdG8gdGhlIExSVSBhbmQgY2FuIGJlIHNjYW5uZWQgYnkgdGhlIHN3YXBwZXIKKyAgICBldGMgYWdhaW4uCisKK0NocmlzdG9waCBMYW1ldGVyLCBNYXkgOCwgMjAwNi4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92bS9wYWdlX293bmVyLnR4dCBiL0RvY3VtZW50YXRpb24vdm0vcGFnZV9vd25lci50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYzY2U5YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdm0vcGFnZV9vd25lci50eHQKQEAgLTAsMCArMSw4MSBAQAorcGFnZSBvd25lcjogVHJhY2tpbmcgYWJvdXQgd2hvIGFsbG9jYXRlZCBlYWNoIHBhZ2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogSW50cm9kdWN0aW9uCisKK3BhZ2Ugb3duZXIgaXMgZm9yIHRoZSB0cmFja2luZyBhYm91dCB3aG8gYWxsb2NhdGVkIGVhY2ggcGFnZS4KK0l0IGNhbiBiZSB1c2VkIHRvIGRlYnVnIG1lbW9yeSBsZWFrIG9yIHRvIGZpbmQgYSBtZW1vcnkgaG9nZ2VyLgorV2hlbiBhbGxvY2F0aW9uIGhhcHBlbnMsIGluZm9ybWF0aW9uIGFib3V0IGFsbG9jYXRpb24gc3VjaCBhcyBjYWxsIHN0YWNrCithbmQgb3JkZXIgb2YgcGFnZXMgaXMgc3RvcmVkIGludG8gY2VydGFpbiBzdG9yYWdlIGZvciBlYWNoIHBhZ2UuCitXaGVuIHdlIG5lZWQgdG8ga25vdyBhYm91dCBzdGF0dXMgb2YgYWxsIHBhZ2VzLCB3ZSBjYW4gZ2V0IGFuZCBhbmFseXplCit0aGlzIGluZm9ybWF0aW9uLgorCitBbHRob3VnaCB3ZSBhbHJlYWR5IGhhdmUgdHJhY2Vwb2ludCBmb3IgdHJhY2luZyBwYWdlIGFsbG9jYXRpb24vZnJlZSwKK3VzaW5nIGl0IGZvciBhbmFseXppbmcgd2hvIGFsbG9jYXRlIGVhY2ggcGFnZSBpcyByYXRoZXIgY29tcGxleC4gV2UgbmVlZAordG8gZW5sYXJnZSB0aGUgdHJhY2UgYnVmZmVyIGZvciBwcmV2ZW50aW5nIG92ZXJsYXBwaW5nIHVudGlsIHVzZXJzcGFjZQorcHJvZ3JhbSBsYXVuY2hlZC4gQW5kLCBsYXVuY2hlZCBwcm9ncmFtIGNvbnRpbnVhbGx5IGR1bXAgb3V0IHRoZSB0cmFjZQorYnVmZmVyIGZvciBsYXRlciBhbmFseXNpcyBhbmQgaXQgd291bGQgY2hhbmdlIHN5c3RlbSBiZWh2aW91ciB3aXRoIG1vcmUKK3Bvc3NpYmlsaXR5IHJhdGhlciB0aGFuIGp1c3Qga2VlcGluZyBpdCBpbiBtZW1vcnksIHNvIGJhZCBmb3IgZGVidWdnaW5nLgorCitwYWdlIG93bmVyIGNhbiBhbHNvIGJlIHVzZWQgZm9yIHZhcmlvdXMgcHVycG9zZXMuIEZvciBleGFtcGxlLCBhY2N1cmF0ZQorZnJhZ21lbnRhdGlvbiBzdGF0aXN0aWNzIGNhbiBiZSBvYnRhaW5lZCB0aHJvdWdoIGdmcCBmbGFnIGluZm9ybWF0aW9uIG9mCitlYWNoIHBhZ2UuIEl0IGlzIGFscmVhZHkgaW1wbGVtZW50ZWQgYW5kIGFjdGl2YXRlZCBpZiBwYWdlIG93bmVyIGlzCitlbmFibGVkLiBPdGhlciB1c2FnZXMgYXJlIG1vcmUgdGhhbiB3ZWxjb21lLgorCitwYWdlIG93bmVyIGlzIGRpc2FibGVkIGluIGRlZmF1bHQuIFNvLCBpZiB5b3UnZCBsaWtlIHRvIHVzZSBpdCwgeW91IG5lZWQKK3RvIGFkZCAicGFnZV9vd25lcj1vbiIgaW50byB5b3VyIGJvb3QgY21kbGluZS4gSWYgdGhlIGtlcm5lbCBpcyBidWlsdAord2l0aCBwYWdlIG93bmVyIGFuZCBwYWdlIG93bmVyIGlzIGRpc2FibGVkIGluIHJ1bnRpbWUgZHVlIHRvIG5vIGVuYWJsaW5nCitib290IG9wdGlvbiwgcnVudGltZSBvdmVyaGVhZCBpcyBtYXJnaW5hbC4gSWYgZGlzYWJsZWQgaW4gcnVudGltZSwgaXQKK2RvZXNuJ3QgcmVxdWlyZSBtZW1vcnkgdG8gc3RvcmUgb3duZXIgaW5mb3JtYXRpb24sIHNvIHRoZXJlIGlzIG5vIHJ1bnRpbWUKK21lbW9yeSBvdmVyaGVhZC4gQW5kLCBwYWdlIG93bmVyIGluc2VydHMganVzdCB0d28gdW5saWtlbHkgYnJhbmNoZXMgaW50bwordGhlIHBhZ2UgYWxsb2NhdG9yIGhvdHBhdGggYW5kIGlmIGl0IHJldHVybnMgZmFsc2UgdGhlbiBhbGxvY2F0aW9uIGlzCitkb25lIGxpa2UgYXMgdGhlIGtlcm5lbCB3aXRob3V0IHBhZ2Ugb3duZXIuIFRoZXNlIHR3byB1bmxpa2VseSBicmFuY2hlcword291bGQgbm90IGFmZmVjdCB0byBhbGxvY2F0aW9uIHBlcmZvcm1hbmNlLiBGb2xsb3dpbmcgaXMgdGhlIGtlcm5lbCdzCitjb2RlIHNpemUgY2hhbmdlIGR1ZSB0byB0aGlzIGZhY2lsaXR5LgorCistIFdpdGhvdXQgcGFnZSBvd25lcgorICAgdGV4dCAgICBkYXRhICAgICBic3MgICAgIGRlYyAgICAgaGV4IGZpbGVuYW1lCisgIDQwNjYyICAgIDE0OTMgICAgIDY0NCAgIDQyNzk5ICAgIGE3MmYgbW0vcGFnZV9hbGxvYy5vCisKKy0gV2l0aCBwYWdlIG93bmVyCisgICB0ZXh0ICAgIGRhdGEgICAgIGJzcyAgICAgZGVjICAgICBoZXggZmlsZW5hbWUKKyAgNDA4OTIgICAgMTQ5MyAgICAgNjQ0ICAgNDMwMjkgICAgYTgxNSBtbS9wYWdlX2FsbG9jLm8KKyAgIDE0MjcgICAgICAyNCAgICAgICA4ICAgIDE0NTkgICAgIDViMyBtbS9wYWdlX2V4dC5vCisgICAyNzIyICAgICAgNTAgICAgICAgMCAgICAyNzcyICAgICBhZDQgbW0vcGFnZV9vd25lci5vCisKK0FsdGhvdWdoLCByb3VnaGx5LCA0IEtCIGNvZGUgaXMgYWRkZWQgaW4gdG90YWwsIHBhZ2VfYWxsb2MubyBpbmNyZWFzZSBieQorMjMwIGJ5dGVzIGFuZCBvbmx5IGhhbGYgb2YgaXQgaXMgaW4gaG90cGF0aC4gQnVpbGRpbmcgdGhlIGtlcm5lbCB3aXRoCitwYWdlIG93bmVyIGFuZCB0dXJuaW5nIGl0IG9uIGlmIG5lZWRlZCB3b3VsZCBiZSBncmVhdCBvcHRpb24gdG8gZGVidWcKK2tlcm5lbCBtZW1vcnkgcHJvYmxlbS4KKworVGhlcmUgaXMgb25lIG5vdGljZSB0aGF0IGlzIGNhdXNlZCBieSBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuIHBhZ2Ugb3duZXIKK3N0b3JlcyBpbmZvcm1hdGlvbiBpbnRvIHRoZSBtZW1vcnkgZnJvbSBzdHJ1Y3QgcGFnZSBleHRlbnNpb24uIFRoaXMgbWVtb3J5CitpcyBpbml0aWFsaXplZCBzb21lIHRpbWUgbGF0ZXIgdGhhbiB0aGF0IHBhZ2UgYWxsb2NhdG9yIHN0YXJ0cyBpbiBzcGFyc2UKK21lbW9yeSBzeXN0ZW0sIHNvLCB1bnRpbCBpbml0aWFsaXphdGlvbiwgbWFueSBwYWdlcyBjYW4gYmUgYWxsb2NhdGVkIGFuZAordGhleSB3b3VsZCBoYXZlIG5vIG93bmVyIGluZm9ybWF0aW9uLiBUbyBmaXggaXQgdXAsIHRoZXNlIGVhcmx5IGFsbG9jYXRlZAorcGFnZXMgYXJlIGludmVzdGlnYXRlZCBhbmQgbWFya2VkIGFzIGFsbG9jYXRlZCBpbiBpbml0aWFsaXphdGlvbiBwaGFzZS4KK0FsdGhvdWdoIGl0IGRvZXNuJ3QgbWVhbiB0aGF0IHRoZXkgaGF2ZSB0aGUgcmlnaHQgb3duZXIgaW5mb3JtYXRpb24sCithdCBsZWFzdCwgd2UgY2FuIHRlbGwgd2hldGhlciB0aGUgcGFnZSBpcyBhbGxvY2F0ZWQgb3Igbm90LAorbW9yZSBhY2N1cmF0ZWx5LiBPbiAyR0IgbWVtb3J5IHg4Ni02NCBWTSBib3gsIDEzMzQzIGVhcmx5IGFsbG9jYXRlZCBwYWdlcworYXJlIGNhdGNoZWQgYW5kIG1hcmtlZCwgYWx0aG91Z2ggdGhleSBhcmUgbW9zdGx5IGFsbG9jYXRlZCBmcm9tIHN0cnVjdAorcGFnZSBleHRlbnNpb24gZmVhdHVyZS4gQW55d2F5LCBhZnRlciB0aGF0LCBubyBwYWdlIGlzIGxlZnQgaW4KK3VuLXRyYWNraW5nIHN0YXRlLgorCisqIFVzYWdlCisKKzEpIEJ1aWxkIHVzZXItc3BhY2UgaGVscGVyCisJY2QgdG9vbHMvdm0KKwltYWtlIHBhZ2Vfb3duZXJfc29ydAorCisyKSBFbmFibGUgcGFnZSBvd25lcgorCUFkZCAicGFnZV9vd25lcj1vbiIgdG8gYm9vdCBjbWRsaW5lLgorCiszKSBEbyB0aGUgam9iIHdoYXQgeW91IHdhbnQgdG8gZGVidWcKKworNCkgQW5hbHl6ZSBpbmZvcm1hdGlvbiBmcm9tIHBhZ2Ugb3duZXIKKwljYXQgL3N5cy9rZXJuZWwvZGVidWcvcGFnZV9vd25lciA+IHBhZ2Vfb3duZXJfZnVsbC50eHQKKwlncmVwIC12IF5QRk4gcGFnZV9vd25lcl9mdWxsLnR4dCA+IHBhZ2Vfb3duZXIudHh0CisJLi9wYWdlX293bmVyX3NvcnQgcGFnZV9vd25lci50eHQgc29ydGVkX3BhZ2Vfb3duZXIudHh0CisKKwlTZWUgdGhlIHJlc3VsdCBhYm91dCB3aG8gYWxsb2NhdGVkIGVhY2ggcGFnZQorCWluIHRoZSBzb3J0ZWRfcGFnZV9vd25lci50eHQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZtL3BhZ2VtYXAudHh0IGIvRG9jdW1lbnRhdGlvbi92bS9wYWdlbWFwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTFlNTU1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92bS9wYWdlbWFwLnR4dApAQCAtMCwwICsxLDE4MyBAQAorcGFnZW1hcCwgZnJvbSB0aGUgdXNlcnNwYWNlIHBlcnNwZWN0aXZlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworcGFnZW1hcCBpcyBhIG5ldyAoYXMgb2YgMi42LjI1KSBzZXQgb2YgaW50ZXJmYWNlcyBpbiB0aGUga2VybmVsIHRoYXQgYWxsb3cKK3VzZXJzcGFjZSBwcm9ncmFtcyB0byBleGFtaW5lIHRoZSBwYWdlIHRhYmxlcyBhbmQgcmVsYXRlZCBpbmZvcm1hdGlvbiBieQorcmVhZGluZyBmaWxlcyBpbiAvcHJvYy4KKworVGhlcmUgYXJlIGZvdXIgY29tcG9uZW50cyB0byBwYWdlbWFwOgorCisgKiAvcHJvYy9waWQvcGFnZW1hcC4gIFRoaXMgZmlsZSBsZXRzIGEgdXNlcnNwYWNlIHByb2Nlc3MgZmluZCBvdXQgd2hpY2gKKyAgIHBoeXNpY2FsIGZyYW1lIGVhY2ggdmlydHVhbCBwYWdlIGlzIG1hcHBlZCB0by4gIEl0IGNvbnRhaW5zIG9uZSA2NC1iaXQKKyAgIHZhbHVlIGZvciBlYWNoIHZpcnR1YWwgcGFnZSwgY29udGFpbmluZyB0aGUgZm9sbG93aW5nIGRhdGEgKGZyb20KKyAgIGZzL3Byb2MvdGFza19tbXUuYywgYWJvdmUgcGFnZW1hcF9yZWFkKToKKworICAgICogQml0cyAwLTU0ICBwYWdlIGZyYW1lIG51bWJlciAoUEZOKSBpZiBwcmVzZW50CisgICAgKiBCaXRzIDAtNCAgIHN3YXAgdHlwZSBpZiBzd2FwcGVkCisgICAgKiBCaXRzIDUtNTQgIHN3YXAgb2Zmc2V0IGlmIHN3YXBwZWQKKyAgICAqIEJpdCAgNTUgICAgcHRlIGlzIHNvZnQtZGlydHkgKHNlZSBEb2N1bWVudGF0aW9uL3ZtL3NvZnQtZGlydHkudHh0KQorICAgICogQml0ICA1NiAgICBwYWdlIGV4Y2x1c2l2ZWx5IG1hcHBlZCAoc2luY2UgNC4yKQorICAgICogQml0cyA1Ny02MCB6ZXJvCisgICAgKiBCaXQgIDYxICAgIHBhZ2UgaXMgZmlsZS1wYWdlIG9yIHNoYXJlZC1hbm9uIChzaW5jZSAzLjUpCisgICAgKiBCaXQgIDYyICAgIHBhZ2Ugc3dhcHBlZAorICAgICogQml0ICA2MyAgICBwYWdlIHByZXNlbnQKKworICAgU2luY2UgTGludXggNC4wIG9ubHkgdXNlcnMgd2l0aCB0aGUgQ0FQX1NZU19BRE1JTiBjYXBhYmlsaXR5IGNhbiBnZXQgUEZOcy4KKyAgIEluIDQuMCBhbmQgNC4xIG9wZW5zIGJ5IHVucHJpdmlsZWdlZCBmYWlsIHdpdGggLUVQRVJNLiAgU3RhcnRpbmcgZnJvbQorICAgNC4yIHRoZSBQRk4gZmllbGQgaXMgemVyb2VkIGlmIHRoZSB1c2VyIGRvZXMgbm90IGhhdmUgQ0FQX1NZU19BRE1JTi4KKyAgIFJlYXNvbjogaW5mb3JtYXRpb24gYWJvdXQgUEZOcyBoZWxwcyBpbiBleHBsb2l0aW5nIFJvd2hhbW1lciB2dWxuZXJhYmlsaXR5LgorCisgICBJZiB0aGUgcGFnZSBpcyBub3QgcHJlc2VudCBidXQgaW4gc3dhcCwgdGhlbiB0aGUgUEZOIGNvbnRhaW5zIGFuCisgICBlbmNvZGluZyBvZiB0aGUgc3dhcCBmaWxlIG51bWJlciBhbmQgdGhlIHBhZ2UncyBvZmZzZXQgaW50byB0aGUKKyAgIHN3YXAuIFVubWFwcGVkIHBhZ2VzIHJldHVybiBhIG51bGwgUEZOLiBUaGlzIGFsbG93cyBkZXRlcm1pbmluZworICAgcHJlY2lzZWx5IHdoaWNoIHBhZ2VzIGFyZSBtYXBwZWQgKG9yIGluIHN3YXApIGFuZCBjb21wYXJpbmcgbWFwcGVkCisgICBwYWdlcyBiZXR3ZWVuIHByb2Nlc3Nlcy4KKworICAgRWZmaWNpZW50IHVzZXJzIG9mIHRoaXMgaW50ZXJmYWNlIHdpbGwgdXNlIC9wcm9jL3BpZC9tYXBzIHRvCisgICBkZXRlcm1pbmUgd2hpY2ggYXJlYXMgb2YgbWVtb3J5IGFyZSBhY3R1YWxseSBtYXBwZWQgYW5kIGxsc2VlayB0bworICAgc2tpcCBvdmVyIHVubWFwcGVkIHJlZ2lvbnMuCisKKyAqIC9wcm9jL2twYWdlY291bnQuICBUaGlzIGZpbGUgY29udGFpbnMgYSA2NC1iaXQgY291bnQgb2YgdGhlIG51bWJlciBvZgorICAgdGltZXMgZWFjaCBwYWdlIGlzIG1hcHBlZCwgaW5kZXhlZCBieSBQRk4uCisKKyAqIC9wcm9jL2twYWdlZmxhZ3MuICBUaGlzIGZpbGUgY29udGFpbnMgYSA2NC1iaXQgc2V0IG9mIGZsYWdzIGZvciBlYWNoCisgICBwYWdlLCBpbmRleGVkIGJ5IFBGTi4KKworICAgVGhlIGZsYWdzIGFyZSAoZnJvbSBmcy9wcm9jL3BhZ2UuYywgYWJvdmUga3BhZ2VmbGFnc19yZWFkKToKKworICAgICAwLiBMT0NLRUQKKyAgICAgMS4gRVJST1IKKyAgICAgMi4gUkVGRVJFTkNFRAorICAgICAzLiBVUFRPREFURQorICAgICA0LiBESVJUWQorICAgICA1LiBMUlUKKyAgICAgNi4gQUNUSVZFCisgICAgIDcuIFNMQUIKKyAgICAgOC4gV1JJVEVCQUNLCisgICAgIDkuIFJFQ0xBSU0KKyAgICAxMC4gQlVERFkKKyAgICAxMS4gTU1BUAorICAgIDEyLiBBTk9OCisgICAgMTMuIFNXQVBDQUNIRQorICAgIDE0LiBTV0FQQkFDS0VECisgICAgMTUuIENPTVBPVU5EX0hFQUQKKyAgICAxNi4gQ09NUE9VTkRfVEFJTAorICAgIDE2LiBIVUdFCisgICAgMTguIFVORVZJQ1RBQkxFCisgICAgMTkuIEhXUE9JU09OCisgICAgMjAuIE5PUEFHRQorICAgIDIxLiBLU00KKyAgICAyMi4gVEhQCisgICAgMjMuIEJBTExPT04KKyAgICAyNC4gWkVST19QQUdFCisgICAgMjUuIElETEUKKworICogL3Byb2Mva3BhZ2VjZ3JvdXAuICBUaGlzIGZpbGUgY29udGFpbnMgYSA2NC1iaXQgaW5vZGUgbnVtYmVyIG9mIHRoZQorICAgbWVtb3J5IGNncm91cCBlYWNoIHBhZ2UgaXMgY2hhcmdlZCB0bywgaW5kZXhlZCBieSBQRk4uIE9ubHkgYXZhaWxhYmxlIHdoZW4KKyAgIENPTkZJR19NRU1DRyBpcyBzZXQuCisKK1Nob3J0IGRlc2NyaXB0aW9ucyB0byB0aGUgcGFnZSBmbGFnczoKKworIDAuIExPQ0tFRAorICAgIHBhZ2UgaXMgYmVpbmcgbG9ja2VkIGZvciBleGNsdXNpdmUgYWNjZXNzLCBlZy4gYnkgdW5kZXJnb2luZyByZWFkL3dyaXRlIElPCisKKyA3LiBTTEFCCisgICAgcGFnZSBpcyBtYW5hZ2VkIGJ5IHRoZSBTTEFCL1NMT0IvU0xVQi9TTFFCIGtlcm5lbCBtZW1vcnkgYWxsb2NhdG9yCisgICAgV2hlbiBjb21wb3VuZCBwYWdlIGlzIHVzZWQsIFNMVUIvU0xRQiB3aWxsIG9ubHkgc2V0IHRoaXMgZmxhZyBvbiB0aGUgaGVhZAorICAgIHBhZ2U7IFNMT0Igd2lsbCBub3QgZmxhZyBpdCBhdCBhbGwuCisKKzEwLiBCVUREWQorICAgIGEgZnJlZSBtZW1vcnkgYmxvY2sgbWFuYWdlZCBieSB0aGUgYnVkZHkgc3lzdGVtIGFsbG9jYXRvcgorICAgIFRoZSBidWRkeSBzeXN0ZW0gb3JnYW5pemVzIGZyZWUgbWVtb3J5IGluIGJsb2NrcyBvZiB2YXJpb3VzIG9yZGVycy4KKyAgICBBbiBvcmRlciBOIGJsb2NrIGhhcyAyXk4gcGh5c2ljYWxseSBjb250aWd1b3VzIHBhZ2VzLCB3aXRoIHRoZSBCVUREWSBmbGFnCisgICAgc2V0IGZvciBhbmQgX29ubHlfIGZvciB0aGUgZmlyc3QgcGFnZS4KKworMTUuIENPTVBPVU5EX0hFQUQKKzE2LiBDT01QT1VORF9UQUlMCisgICAgQSBjb21wb3VuZCBwYWdlIHdpdGggb3JkZXIgTiBjb25zaXN0cyBvZiAyXk4gcGh5c2ljYWxseSBjb250aWd1b3VzIHBhZ2VzLgorICAgIEEgY29tcG91bmQgcGFnZSB3aXRoIG9yZGVyIDIgdGFrZXMgdGhlIGZvcm0gb2YgIkhUVFQiLCB3aGVyZSBIIGRvbmF0ZXMgaXRzCisgICAgaGVhZCBwYWdlIGFuZCBUIGRvbmF0ZXMgaXRzIHRhaWwgcGFnZShzKS4gIFRoZSBtYWpvciBjb25zdW1lcnMgb2YgY29tcG91bmQKKyAgICBwYWdlcyBhcmUgaHVnZVRMQiBwYWdlcyAoRG9jdW1lbnRhdGlvbi92bS9odWdldGxicGFnZS50eHQpLCB0aGUgU0xVQiBldGMuCisgICAgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIHZhcmlvdXMgZGV2aWNlIGRyaXZlcnMuIEhvd2V2ZXIgaW4gdGhpcyBpbnRlcmZhY2UsCisgICAgb25seSBodWdlL2dpZ2EgcGFnZXMgYXJlIG1hZGUgdmlzaWJsZSB0byBlbmQgdXNlcnMuCisxNy4gSFVHRQorICAgIHRoaXMgaXMgYW4gaW50ZWdyYWwgcGFydCBvZiBhIEh1Z2VUTEIgcGFnZQorCisxOS4gSFdQT0lTT04KKyAgICBoYXJkd2FyZSBkZXRlY3RlZCBtZW1vcnkgY29ycnVwdGlvbiBvbiB0aGlzIHBhZ2U6IGRvbid0IHRvdWNoIHRoZSBkYXRhIQorCisyMC4gTk9QQUdFCisgICAgbm8gcGFnZSBmcmFtZSBleGlzdHMgYXQgdGhlIHJlcXVlc3RlZCBhZGRyZXNzCisKKzIxLiBLU00KKyAgICBpZGVudGljYWwgbWVtb3J5IHBhZ2VzIGR5bmFtaWNhbGx5IHNoYXJlZCBiZXR3ZWVuIG9uZSBvciBtb3JlIHByb2Nlc3NlcworCisyMi4gVEhQCisgICAgY29udGlndW91cyBwYWdlcyB3aGljaCBjb25zdHJ1Y3QgdHJhbnNwYXJlbnQgaHVnZXBhZ2VzCisKKzIzLiBCQUxMT09OCisgICAgYmFsbG9vbiBjb21wYWN0aW9uIHBhZ2UKKworMjQuIFpFUk9fUEFHRQorICAgIHplcm8gcGFnZSBmb3IgcGZuX3plcm8gb3IgaHVnZV96ZXJvIHBhZ2UKKworMjUuIElETEUKKyAgICBwYWdlIGhhcyBub3QgYmVlbiBhY2Nlc3NlZCBzaW5jZSBpdCB3YXMgbWFya2VkIGlkbGUgKHNlZQorICAgIERvY3VtZW50YXRpb24vdm0vaWRsZV9wYWdlX3RyYWNraW5nLnR4dCkuIE5vdGUgdGhhdCB0aGlzIGZsYWcgbWF5IGJlCisgICAgc3RhbGUgaW4gY2FzZSB0aGUgcGFnZSB3YXMgYWNjZXNzZWQgdmlhIGEgUFRFLiBUbyBtYWtlIHN1cmUgdGhlIGZsYWcKKyAgICBpcyB1cC10by1kYXRlIG9uZSBoYXMgdG8gcmVhZCAvc3lzL2tlcm5lbC9tbS9wYWdlX2lkbGUvYml0bWFwIGZpcnN0LgorCisgICAgW0lPIHJlbGF0ZWQgcGFnZSBmbGFnc10KKyAxLiBFUlJPUiAgICAgSU8gZXJyb3Igb2NjdXJyZWQKKyAzLiBVUFRPREFURSAgcGFnZSBoYXMgdXAtdG8tZGF0ZSBkYXRhCisgICAgICAgICAgICAgIGllLiBmb3IgZmlsZSBiYWNrZWQgcGFnZTogKGluLW1lbW9yeSBkYXRhIHJldmlzaW9uID49IG9uLWRpc2sgb25lKQorIDQuIERJUlRZICAgICBwYWdlIGhhcyBiZWVuIHdyaXR0ZW4gdG8sIGhlbmNlIGNvbnRhaW5zIG5ldyBkYXRhCisgICAgICAgICAgICAgIGllLiBmb3IgZmlsZSBiYWNrZWQgcGFnZTogKGluLW1lbW9yeSBkYXRhIHJldmlzaW9uID4gIG9uLWRpc2sgb25lKQorIDguIFdSSVRFQkFDSyBwYWdlIGlzIGJlaW5nIHN5bmNlZCB0byBkaXNrCisKKyAgICBbTFJVIHJlbGF0ZWQgcGFnZSBmbGFnc10KKyA1LiBMUlUgICAgICAgICBwYWdlIGlzIGluIG9uZSBvZiB0aGUgTFJVIGxpc3RzCisgNi4gQUNUSVZFICAgICAgcGFnZSBpcyBpbiB0aGUgYWN0aXZlIExSVSBsaXN0CisxOC4gVU5FVklDVEFCTEUgcGFnZSBpcyBpbiB0aGUgdW5ldmljdGFibGUgKG5vbi0pTFJVIGxpc3QKKyAgICAgICAgICAgICAgICBJdCBpcyBzb21laG93IHBpbm5lZCBhbmQgbm90IGEgY2FuZGlkYXRlIGZvciBMUlUgcGFnZSByZWNsYWltcywKKwkJZWcuIHJhbWZzIHBhZ2VzLCBzaG1jdGwoU0hNX0xPQ0spIGFuZCBtbG9jaygpIG1lbW9yeSBzZWdtZW50cworIDIuIFJFRkVSRU5DRUQgIHBhZ2UgaGFzIGJlZW4gcmVmZXJlbmNlZCBzaW5jZSBsYXN0IExSVSBsaXN0IGVucXVldWUvcmVxdWV1ZQorIDkuIFJFQ0xBSU0gICAgIHBhZ2Ugd2lsbCBiZSByZWNsYWltZWQgc29vbiBhZnRlciBpdHMgcGFnZW91dCBJTyBjb21wbGV0ZWQKKzExLiBNTUFQICAgICAgICBhIG1lbW9yeSBtYXBwZWQgcGFnZQorMTIuIEFOT04gICAgICAgIGEgbWVtb3J5IG1hcHBlZCBwYWdlIHRoYXQgaXMgbm90IHBhcnQgb2YgYSBmaWxlCisxMy4gU1dBUENBQ0hFICAgcGFnZSBpcyBtYXBwZWQgdG8gc3dhcCBzcGFjZSwgaWUuIGhhcyBhbiBhc3NvY2lhdGVkIHN3YXAgZW50cnkKKzE0LiBTV0FQQkFDS0VEICBwYWdlIGlzIGJhY2tlZCBieSBzd2FwL1JBTQorCitUaGUgcGFnZS10eXBlcyB0b29sIGluIHRoZSB0b29scy92bSBkaXJlY3RvcnkgY2FuIGJlIHVzZWQgdG8gcXVlcnkgdGhlCithYm92ZSBmbGFncy4KKworVXNpbmcgcGFnZW1hcCB0byBkbyBzb21ldGhpbmcgdXNlZnVsOgorCitUaGUgZ2VuZXJhbCBwcm9jZWR1cmUgZm9yIHVzaW5nIHBhZ2VtYXAgdG8gZmluZCBvdXQgYWJvdXQgYSBwcm9jZXNzJyBtZW1vcnkKK3VzYWdlIGdvZXMgbGlrZSB0aGlzOgorCisgMS4gUmVhZCAvcHJvYy9waWQvbWFwcyB0byBkZXRlcm1pbmUgd2hpY2ggcGFydHMgb2YgdGhlIG1lbW9yeSBzcGFjZSBhcmUKKyAgICBtYXBwZWQgdG8gd2hhdC4KKyAyLiBTZWxlY3QgdGhlIG1hcHMgeW91IGFyZSBpbnRlcmVzdGVkIGluIC0tIGFsbCBvZiB0aGVtLCBvciBhIHBhcnRpY3VsYXIKKyAgICBsaWJyYXJ5LCBvciB0aGUgc3RhY2sgb3IgdGhlIGhlYXAsIGV0Yy4KKyAzLiBPcGVuIC9wcm9jL3BpZC9wYWdlbWFwIGFuZCBzZWVrIHRvIHRoZSBwYWdlcyB5b3Ugd291bGQgbGlrZSB0byBleGFtaW5lLgorIDQuIFJlYWQgYSB1NjQgZm9yIGVhY2ggcGFnZSBmcm9tIHBhZ2VtYXAuCisgNS4gT3BlbiAvcHJvYy9rcGFnZWNvdW50IGFuZC9vciAvcHJvYy9rcGFnZWZsYWdzLiAgRm9yIGVhY2ggUEZOIHlvdSBqdXN0CisgICAgcmVhZCwgc2VlayB0byB0aGF0IGVudHJ5IGluIHRoZSBmaWxlLCBhbmQgcmVhZCB0aGUgZGF0YSB5b3Ugd2FudC4KKworRm9yIGV4YW1wbGUsIHRvIGZpbmQgdGhlICJ1bmlxdWUgc2V0IHNpemUiIChVU1MpLCB3aGljaCBpcyB0aGUgYW1vdW50IG9mCittZW1vcnkgdGhhdCBhIHByb2Nlc3MgaXMgdXNpbmcgdGhhdCBpcyBub3Qgc2hhcmVkIHdpdGggYW55IG90aGVyIHByb2Nlc3MsCit5b3UgY2FuIGdvIHRocm91Z2ggZXZlcnkgbWFwIGluIHRoZSBwcm9jZXNzLCBmaW5kIHRoZSBQRk5zLCBsb29rIHRob3NlIHVwCitpbiBrcGFnZWNvdW50LCBhbmQgdGFsbHkgdXAgdGhlIG51bWJlciBvZiBwYWdlcyB0aGF0IGFyZSBvbmx5IHJlZmVyZW5jZWQKK29uY2UuCisKK090aGVyIG5vdGVzOgorCitSZWFkaW5nIGZyb20gYW55IG9mIHRoZSBmaWxlcyB3aWxsIHJldHVybiAtRUlOVkFMIGlmIHlvdSBhcmUgbm90IHN0YXJ0aW5nCit0aGUgcmVhZCBvbiBhbiA4LWJ5dGUgYm91bmRhcnkgKGUuZy4sIGlmIHlvdSBzb3VnaHQgYW4gb2RkIG51bWJlciBvZiBieXRlcworaW50byB0aGUgZmlsZSksIG9yIGlmIHRoZSBzaXplIG9mIHRoZSByZWFkIGlzIG5vdCBhIG11bHRpcGxlIG9mIDggYnl0ZXMuCisKK0JlZm9yZSBMaW51eCAzLjExIHBhZ2VtYXAgYml0cyA1NS02MCB3ZXJlIHVzZWQgZm9yICJwYWdlLXNoaWZ0IiAod2hpY2ggaXMKK2Fsd2F5cyAxMiBhdCBtb3N0IGFyY2hpdGVjdHVyZXMpLiBTaW5jZSBMaW51eCAzLjExIHRoZWlyIG1lYW5pbmcgY2hhbmdlcworYWZ0ZXIgZmlyc3QgY2xlYXIgb2Ygc29mdC1kaXJ0eSBiaXRzLiBTaW5jZSBMaW51eCA0LjIgdGhleSBhcmUgdXNlZCBmb3IKK2ZsYWdzIHVuY29uZGl0aW9uYWxseS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdm0vcmVtYXBfZmlsZV9wYWdlcy50eHQgYi9Eb2N1bWVudGF0aW9uL3ZtL3JlbWFwX2ZpbGVfcGFnZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2MDkxNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZtL3JlbWFwX2ZpbGVfcGFnZXMudHh0CkBAIC0wLDAgKzEsMjcgQEAKK1RoZSByZW1hcF9maWxlX3BhZ2VzKCkgc3lzdGVtIGNhbGwgaXMgdXNlZCB0byBjcmVhdGUgYSBub25saW5lYXIgbWFwcGluZywKK3RoYXQgaXMsIGEgbWFwcGluZyBpbiB3aGljaCB0aGUgcGFnZXMgb2YgdGhlIGZpbGUgYXJlIG1hcHBlZCBpbnRvIGEKK25vbnNlcXVlbnRpYWwgb3JkZXIgaW4gbWVtb3J5LiBUaGUgYWR2YW50YWdlIG9mIHVzaW5nIHJlbWFwX2ZpbGVfcGFnZXMoKQorb3ZlciB1c2luZyByZXBlYXRlZCBjYWxscyB0byBtbWFwKDIpIGlzIHRoYXQgdGhlIGZvcm1lciBhcHByb2FjaCBkb2VzIG5vdAorcmVxdWlyZSB0aGUga2VybmVsIHRvIGNyZWF0ZSBhZGRpdGlvbmFsIFZNQSAoVmlydHVhbCBNZW1vcnkgQXJlYSkgZGF0YQorc3RydWN0dXJlcy4KKworU3VwcG9ydGluZyBvZiBub25saW5lYXIgbWFwcGluZyByZXF1aXJlcyBzaWduaWZpY2FudCBhbW91bnQgb2Ygbm9uLXRyaXZpYWwKK2NvZGUgaW4ga2VybmVsIHZpcnR1YWwgbWVtb3J5IHN1YnN5c3RlbSBpbmNsdWRpbmcgaG90IHBhdGhzLiBBbHNvIHRvIGdldAorbm9ubGluZWFyIG1hcHBpbmcgd29yayBrZXJuZWwgbmVlZCBhIHdheSB0byBkaXN0aW5ndWlzaCBub3JtYWwgcGFnZSB0YWJsZQorZW50cmllcyBmcm9tIGVudHJpZXMgd2l0aCBmaWxlIG9mZnNldCAocHRlX2ZpbGUpLiBLZXJuZWwgcmVzZXJ2ZXMgZmxhZyBpbgorUFRFIGZvciB0aGlzIHB1cnBvc2UuIFBURSBmbGFncyBhcmUgc2NhcmNlIHJlc291cmNlIGVzcGVjaWFsbHkgb24gc29tZSBDUFUKK2FyY2hpdGVjdHVyZXMuIEl0IHdvdWxkIGJlIG5pY2UgdG8gZnJlZSB1cCB0aGUgZmxhZyBmb3Igb3RoZXIgdXNhZ2UuCisKK0ZvcnR1bmF0ZWx5LCB0aGVyZSBhcmUgbm90IG1hbnkgdXNlcnMgb2YgcmVtYXBfZmlsZV9wYWdlcygpIGluIHRoZSB3aWxkLgorSXQncyBvbmx5IGtub3duIHRoYXQgb25lIGVudGVycHJpc2UgUkRCTVMgaW1wbGVtZW50YXRpb24gdXNlcyB0aGUgc3lzY2FsbAorb24gMzItYml0IHN5c3RlbXMgdG8gbWFwIGZpbGVzIGJpZ2dlciB0aGFuIGNhbiBsaW5lYXJseSBmaXQgaW50byAzMi1iaXQKK3ZpcnR1YWwgYWRkcmVzcyBzcGFjZS4gVGhpcyB1c2UtY2FzZSBpcyBub3QgY3JpdGljYWwgYW55bW9yZSBzaW5jZSA2NC1iaXQKK3N5c3RlbXMgYXJlIHdpZGVseSBhdmFpbGFibGUuCisKK1RoZSBzeXNjYWxsIGlzIGRlcHJlY2F0ZWQgYW5kIHJlcGxhY2VkIGl0IHdpdGggYW4gZW11bGF0aW9uIG5vdy4gVGhlCitlbXVsYXRpb24gY3JlYXRlcyBuZXcgVk1BcyBpbnN0ZWFkIG9mIG5vbmxpbmVhciBtYXBwaW5ncy4gSXQncyBnb2luZyB0bword29yayBzbG93ZXIgZm9yIHJhcmUgdXNlcnMgb2YgcmVtYXBfZmlsZV9wYWdlcygpIGJ1dCBBQkkgaXMgcHJlc2VydmVkLgorCitPbmUgc2lkZSBlZmZlY3Qgb2YgZW11bGF0aW9uIChhcGFydCBmcm9tIHBlcmZvcm1hbmNlKSBpcyB0aGF0IHVzZXIgY2FuIGhpdAordm0ubWF4X21hcF9jb3VudCBsaW1pdCBtb3JlIGVhc2lseSBkdWUgdG8gYWRkaXRpb25hbCBWTUFzLiBTZWUgY29tbWVudCBmb3IKK0RFRkFVTFRfTUFYX01BUF9DT1VOVCBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoZSBsaW1pdC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdm0vc2x1Yi50eHQgYi9Eb2N1bWVudGF0aW9uL3ZtL3NsdWIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5OWQ4ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZtL3NsdWIudHh0CkBAIC0wLDAgKzEsMzQyIEBACitTaG9ydCB1c2VycyBndWlkZSBmb3IgU0xVQgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGJhc2ljIHBoaWxvc29waHkgb2YgU0xVQiBpcyB2ZXJ5IGRpZmZlcmVudCBmcm9tIFNMQUIuIFNMQUIKK3JlcXVpcmVzIHJlYnVpbGRpbmcgdGhlIGtlcm5lbCB0byBhY3RpdmF0ZSBkZWJ1ZyBvcHRpb25zIGZvciBhbGwKK3NsYWIgY2FjaGVzLiBTTFVCIGFsd2F5cyBpbmNsdWRlcyBmdWxsIGRlYnVnZ2luZyBidXQgaXQgaXMgb2ZmIGJ5IGRlZmF1bHQuCitTTFVCIGNhbiBlbmFibGUgZGVidWdnaW5nIG9ubHkgZm9yIHNlbGVjdGVkIHNsYWJzIGluIG9yZGVyIHRvIGF2b2lkCithbiBpbXBhY3Qgb24gb3ZlcmFsbCBzeXN0ZW0gcGVyZm9ybWFuY2Ugd2hpY2ggbWF5IG1ha2UgYSBidWcgbW9yZQorZGlmZmljdWx0IHRvIGZpbmQuCisKK0luIG9yZGVyIHRvIHN3aXRjaCBkZWJ1Z2dpbmcgb24gb25lIGNhbiBhZGQgYSBvcHRpb24gInNsdWJfZGVidWciCit0byB0aGUga2VybmVsIGNvbW1hbmQgbGluZS4gVGhhdCB3aWxsIGVuYWJsZSBmdWxsIGRlYnVnZ2luZyBmb3IKK2FsbCBzbGFicy4KKworVHlwaWNhbGx5IG9uZSB3b3VsZCB0aGVuIHVzZSB0aGUgInNsYWJpbmZvIiBjb21tYW5kIHRvIGdldCBzdGF0aXN0aWNhbAorZGF0YSBhbmQgcGVyZm9ybSBvcGVyYXRpb24gb24gdGhlIHNsYWJzLiBCeSBkZWZhdWx0IHNsYWJpbmZvIG9ubHkgbGlzdHMKK3NsYWJzIHRoYXQgaGF2ZSBkYXRhIGluIHRoZW0uIFNlZSAic2xhYmluZm8gLWgiIGZvciBtb3JlIG9wdGlvbnMgd2hlbgorcnVubmluZyB0aGUgY29tbWFuZC4gc2xhYmluZm8gY2FuIGJlIGNvbXBpbGVkIHdpdGgKKworZ2NjIC1vIHNsYWJpbmZvIHRvb2xzL3ZtL3NsYWJpbmZvLmMKKworU29tZSBvZiB0aGUgbW9kZXMgb2Ygb3BlcmF0aW9uIG9mIHNsYWJpbmZvIHJlcXVpcmUgdGhhdCBzbHViIGRlYnVnZ2luZworYmUgZW5hYmxlZCBvbiB0aGUgY29tbWFuZCBsaW5lLiBGLmUuIG5vIHRyYWNraW5nIGluZm9ybWF0aW9uIHdpbGwgYmUKK2F2YWlsYWJsZSB3aXRob3V0IGRlYnVnZ2luZyBvbiBhbmQgdmFsaWRhdGlvbiBjYW4gb25seSBwYXJ0aWFsbHkKK2JlIHBlcmZvcm1lZCBpZiBkZWJ1Z2dpbmcgd2FzIG5vdCBzd2l0Y2hlZCBvbi4KKworU29tZSBtb3JlIHNvcGhpc3RpY2F0ZWQgdXNlcyBvZiBzbHViX2RlYnVnOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQYXJhbWV0ZXJzIG1heSBiZSBnaXZlbiB0byBzbHViX2RlYnVnLiBJZiBub25lIGlzIHNwZWNpZmllZCB0aGVuIGZ1bGwKK2RlYnVnZ2luZyBpcyBlbmFibGVkLiBGb3JtYXQ6CisKK3NsdWJfZGVidWc9PERlYnVnLU9wdGlvbnM+ICAgICAgIEVuYWJsZSBvcHRpb25zIGZvciBhbGwgc2xhYnMKK3NsdWJfZGVidWc9PERlYnVnLU9wdGlvbnM+LDxzbGFiIG5hbWU+CisJCQkJRW5hYmxlIG9wdGlvbnMgb25seSBmb3Igc2VsZWN0IHNsYWJzCisKK1Bvc3NpYmxlIGRlYnVnIG9wdGlvbnMgYXJlCisJRgkJU2FuaXR5IGNoZWNrcyBvbiAoZW5hYmxlcyBTTEFCX0RFQlVHX0ZSRUUuIFNvcnJ5CisJCQlTTEFCIGxlZ2FjeSBpc3N1ZXMpCisJWgkJUmVkIHpvbmluZworCVAJCVBvaXNvbmluZyAob2JqZWN0IGFuZCBwYWRkaW5nKQorCVUJCVVzZXIgdHJhY2tpbmcgKGZyZWUgYW5kIGFsbG9jKQorCVQJCVRyYWNlIChwbGVhc2Ugb25seSB1c2Ugb24gc2luZ2xlIHNsYWJzKQorCUEJCVRvZ2dsZSBmYWlsc2xhYiBmaWx0ZXIgbWFyayBmb3IgdGhlIGNhY2hlCisJTwkJU3dpdGNoIGRlYnVnZ2luZyBvZmYgZm9yIGNhY2hlcyB0aGF0IHdvdWxkIGhhdmUKKwkJCWNhdXNlZCBoaWdoZXIgbWluaW11bSBzbGFiIG9yZGVycworCS0JCVN3aXRjaCBhbGwgZGVidWdnaW5nIG9mZiAodXNlZnVsIGlmIHRoZSBrZXJuZWwgaXMKKwkJCWNvbmZpZ3VyZWQgd2l0aCBDT05GSUdfU0xVQl9ERUJVR19PTikKKworRi5lLiBpbiBvcmRlciB0byBib290IGp1c3Qgd2l0aCBzYW5pdHkgY2hlY2tzIGFuZCByZWQgem9uaW5nIG9uZSB3b3VsZCBzcGVjaWZ5OgorCisJc2x1Yl9kZWJ1Zz1GWgorCitUcnlpbmcgdG8gZmluZCBhbiBpc3N1ZSBpbiB0aGUgZGVudHJ5IGNhY2hlPyBUcnkKKworCXNsdWJfZGVidWc9LGRlbnRyeQorCit0byBvbmx5IGVuYWJsZSBkZWJ1Z2dpbmcgb24gdGhlIGRlbnRyeSBjYWNoZS4KKworUmVkIHpvbmluZyBhbmQgdHJhY2tpbmcgbWF5IHJlYWxpZ24gdGhlIHNsYWIuICBXZSBjYW4ganVzdCBhcHBseSBzYW5pdHkgY2hlY2tzCit0byB0aGUgZGVudHJ5IGNhY2hlIHdpdGgKKworCXNsdWJfZGVidWc9RixkZW50cnkKKworRGVidWdnaW5nIG9wdGlvbnMgbWF5IHJlcXVpcmUgdGhlIG1pbmltdW0gcG9zc2libGUgc2xhYiBvcmRlciB0byBpbmNyZWFzZSBhcworYSByZXN1bHQgb2Ygc3RvcmluZyB0aGUgbWV0YWRhdGEgKGZvciBleGFtcGxlLCBjYWNoZXMgd2l0aCBQQUdFX1NJWkUgb2JqZWN0CitzaXplcykuICBUaGlzIGhhcyBhIGhpZ2hlciBsaWtsaWhvb2Qgb2YgcmVzdWx0aW5nIGluIHNsYWIgYWxsb2NhdGlvbiBlcnJvcnMKK2luIGxvdyBtZW1vcnkgc2l0dWF0aW9ucyBvciBpZiB0aGVyZSdzIGhpZ2ggZnJhZ21lbnRhdGlvbiBvZiBtZW1vcnkuICBUbworc3dpdGNoIG9mZiBkZWJ1Z2dpbmcgZm9yIHN1Y2ggY2FjaGVzIGJ5IGRlZmF1bHQsIHVzZQorCisJc2x1Yl9kZWJ1Zz1PCisKK0luIGNhc2UgeW91IGZvcmdvdCB0byBlbmFibGUgZGVidWdnaW5nIG9uIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lOiBJdCBpcworcG9zc2libGUgdG8gZW5hYmxlIGRlYnVnZ2luZyBtYW51YWxseSB3aGVuIHRoZSBrZXJuZWwgaXMgdXAuIExvb2sgYXQgdGhlCitjb250ZW50cyBvZjoKKworL3N5cy9rZXJuZWwvc2xhYi88c2xhYiBuYW1lPi8KKworTG9vayBhdCB0aGUgd3JpdGFibGUgZmlsZXMuIFdyaXRpbmcgMSB0byB0aGVtIHdpbGwgZW5hYmxlIHRoZQorY29ycmVzcG9uZGluZyBkZWJ1ZyBvcHRpb24uIEFsbCBvcHRpb25zIGNhbiBiZSBzZXQgb24gYSBzbGFiIHRoYXQgZG9lcworbm90IGNvbnRhaW4gb2JqZWN0cy4gSWYgdGhlIHNsYWIgYWxyZWFkeSBjb250YWlucyBvYmplY3RzIHRoZW4gc2FuaXR5IGNoZWNrcworYW5kIHRyYWNpbmcgbWF5IG9ubHkgYmUgZW5hYmxlZC4gVGhlIG90aGVyIG9wdGlvbnMgbWF5IGNhdXNlIHRoZSByZWFsaWdubWVudAorb2Ygb2JqZWN0cy4KKworQ2FyZWZ1bCB3aXRoIHRyYWNpbmc6IEl0IG1heSBzcGV3IG91dCBsb3RzIG9mIGluZm9ybWF0aW9uIGFuZCBuZXZlciBzdG9wIGlmCit1c2VkIG9uIHRoZSB3cm9uZyBzbGFiLgorCitTbGFiIG1lcmdpbmcKKy0tLS0tLS0tLS0tLQorCitJZiBubyBkZWJ1ZyBvcHRpb25zIGFyZSBzcGVjaWZpZWQgdGhlbiBTTFVCIG1heSBtZXJnZSBzaW1pbGFyIHNsYWJzIHRvZ2V0aGVyCitpbiBvcmRlciB0byByZWR1Y2Ugb3ZlcmhlYWQgYW5kIGluY3JlYXNlIGNhY2hlIGhvdG5lc3Mgb2Ygb2JqZWN0cy4KK3NsYWJpbmZvIC1hIGRpc3BsYXlzIHdoaWNoIHNsYWJzIHdlcmUgbWVyZ2VkIHRvZ2V0aGVyLgorCitTbGFiIHZhbGlkYXRpb24KKy0tLS0tLS0tLS0tLS0tLQorCitTTFVCIGNhbiB2YWxpZGF0ZSBhbGwgb2JqZWN0IGlmIHRoZSBrZXJuZWwgd2FzIGJvb3RlZCB3aXRoIHNsdWJfZGVidWcuIEluCitvcmRlciB0byBkbyBzbyB5b3UgbXVzdCBoYXZlIHRoZSBzbGFiaW5mbyB0b29sLiBUaGVuIHlvdSBjYW4gZG8KKworc2xhYmluZm8gLXYKKword2hpY2ggd2lsbCB0ZXN0IGFsbCBvYmplY3RzLiBPdXRwdXQgd2lsbCBiZSBnZW5lcmF0ZWQgdG8gdGhlIHN5c2xvZy4KKworVGhpcyBhbHNvIHdvcmtzIGluIGEgbW9yZSBsaW1pdGVkIHdheSBpZiBib290IHdhcyB3aXRob3V0IHNsYWIgZGVidWcuCitJbiB0aGF0IGNhc2Ugc2xhYmluZm8gLXYgc2ltcGx5IHRlc3RzIGFsbCByZWFjaGFibGUgb2JqZWN0cy4gVXN1YWxseQordGhlc2UgYXJlIGluIHRoZSBjcHUgc2xhYnMgYW5kIHRoZSBwYXJ0aWFsIHNsYWJzLiBGdWxsIHNsYWJzIGFyZSBub3QKK3RyYWNrZWQgYnkgU0xVQiBpbiBhIG5vbiBkZWJ1ZyBzaXR1YXRpb24uCisKK0dldHRpbmcgbW9yZSBwZXJmb3JtYW5jZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RvIHNvbWUgZGVncmVlIFNMVUIncyBwZXJmb3JtYW5jZSBpcyBsaW1pdGVkIGJ5IHRoZSBuZWVkIHRvIHRha2UgdGhlCitsaXN0X2xvY2sgb25jZSBpbiBhIHdoaWxlIHRvIGRlYWwgd2l0aCBwYXJ0aWFsIHNsYWJzLiBUaGF0IG92ZXJoZWFkIGlzCitnb3Zlcm5lZCBieSB0aGUgb3JkZXIgb2YgdGhlIGFsbG9jYXRpb24gZm9yIGVhY2ggc2xhYi4gVGhlIGFsbG9jYXRpb25zCitjYW4gYmUgaW5mbHVlbmNlZCBieSBrZXJuZWwgcGFyYW1ldGVyczoKKworc2x1Yl9taW5fb2JqZWN0cz14CQkoZGVmYXVsdCA0KQorc2x1Yl9taW5fb3JkZXI9eAkJKGRlZmF1bHQgMCkKK3NsdWJfbWF4X29yZGVyPXgJCShkZWZhdWx0IDMgKFBBR0VfQUxMT0NfQ09TVExZX09SREVSKSkKKworc2x1Yl9taW5fb2JqZWN0cyBhbGxvd3MgdG8gc3BlY2lmeSBob3cgbWFueSBvYmplY3RzIG11c3QgYXQgbGVhc3QgZml0CitpbnRvIG9uZSBzbGFiIGluIG9yZGVyIGZvciB0aGUgYWxsb2NhdGlvbiBvcmRlciB0byBiZSBhY2NlcHRhYmxlLgorSW4gZ2VuZXJhbCBzbHViIHdpbGwgYmUgYWJsZSB0byBwZXJmb3JtIHRoaXMgbnVtYmVyIG9mIGFsbG9jYXRpb25zCitvbiBhIHNsYWIgd2l0aG91dCBjb25zdWx0aW5nIGNlbnRyYWxpemVkIHJlc291cmNlcyAobGlzdF9sb2NrKSB3aGVyZQorY29udGVudGlvbiBtYXkgb2NjdXIuCisKK3NsdWJfbWluX29yZGVyIHNwZWNpZmllcyBhIG1pbmltIG9yZGVyIG9mIHNsYWJzLiBBIHNpbWlsYXIgZWZmZWN0IGxpa2UKK3NsdWJfbWluX29iamVjdHMuCisKK3NsdWJfbWF4X29yZGVyIHNwZWNpZmllZCB0aGUgb3JkZXIgYXQgd2hpY2ggc2x1Yl9taW5fb2JqZWN0cyBzaG91bGQgbm8KK2xvbmdlciBiZSBjaGVja2VkLiBUaGlzIGlzIHVzZWZ1bCB0byBhdm9pZCBTTFVCIHRyeWluZyB0byBnZW5lcmF0ZQorc3VwZXIgbGFyZ2Ugb3JkZXIgcGFnZXMgdG8gZml0IHNsdWJfbWluX29iamVjdHMgb2YgYSBzbGFiIGNhY2hlIHdpdGgKK2xhcmdlIG9iamVjdCBzaXplcyBpbnRvIG9uZSBoaWdoIG9yZGVyIHBhZ2UuIFNldHRpbmcgY29tbWFuZCBsaW5lCitwYXJhbWV0ZXIgZGVidWdfZ3VhcmRwYWdlX21pbm9yZGVyPU4gKE4gPiAwKSwgZm9yY2VzIHNldHRpbmcKK3NsdWJfbWF4X29yZGVyIHRvIDAsIHdoYXQgY2F1c2UgbWluaW11bSBwb3NzaWJsZSBvcmRlciBvZiBzbGFicworYWxsb2NhdGlvbi4KKworU0xVQiBEZWJ1ZyBvdXRwdXQKKy0tLS0tLS0tLS0tLS0tLS0tCisKK0hlcmUgaXMgYSBzYW1wbGUgb2Ygc2x1YiBkZWJ1ZyBvdXRwdXQ6CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitCVUcga21hbGxvYy04OiBSZWR6b25lIG92ZXJ3cml0dGVuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJTkZPOiAweGM5MGY2ZDI4LTB4YzkwZjZkMmIuIEZpcnN0IGJ5dGUgMHgwMCBpbnN0ZWFkIG9mIDB4Y2MKK0lORk86IFNsYWIgMHhjNTI4YzUzMCBmbGFncz0weDQwMDAwMGMzIGludXNlPTYxIGZwPTB4YzkwZjZkNTgKK0lORk86IE9iamVjdCAweGM5MGY2ZDIwIEBvZmZzZXQ9MzM2MCBmcD0weGM5MGY2ZDU4CitJTkZPOiBBbGxvY2F0ZWQgaW4gZ2V0X21vZGFsaWFzKzB4NjEvMHhmNSBhZ2U9NTMgY3B1PTEgcGlkPTU1NAorCitCeXRlcyBiNCAweGM5MGY2ZDEwOiAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNWEgNWEgNWEgNWEgNWEgNWEgNWEgNWEgLi4uLi4uLi5aWlpaWlpaWgorICBPYmplY3QgMHhjOTBmNmQyMDogIDMxIDMwIDMxIDM5IDJlIDMwIDMwIDM1ICAgICAgICAgICAgICAgICAgICAgICAgIDEwMTkuMDA1CisgUmVkem9uZSAweGM5MGY2ZDI4OiAgMDAgY2MgY2MgY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLgorIFBhZGRpbmcgMHhjOTBmNmQ1MDogIDVhIDVhIDVhIDVhIDVhIDVhIDVhIDVhICAgICAgICAgICAgICAgICAgICAgICAgIFpaWlpaWlpaCisKKyAgWzxjMDEwNTIzZD5dIGR1bXBfdHJhY2UrMHg2My8weDFlYgorICBbPGMwMTA1M2RmPl0gc2hvd190cmFjZV9sb2dfbHZsKzB4MWEvMHgyZgorICBbPGMwMTA2MDFkPl0gc2hvd190cmFjZSsweDEyLzB4MTQKKyAgWzxjMDEwNjAzNT5dIGR1bXBfc3RhY2srMHgxNi8weDE4CisgIFs8YzAxN2UwZmE+XSBvYmplY3RfZXJyKzB4MTQzLzB4MTRiCisgIFs8YzAxN2UyY2M+XSBjaGVja19vYmplY3QrMHg2Ni8weDIzNAorICBbPGMwMTdlYjQzPl0gX19zbGFiX2ZyZWUrMHgyMzkvMHgzODQKKyAgWzxjMDE3ZjQ0Nj5dIGtmcmVlKzB4YTYvMHhjNgorICBbPGMwMmUyMzM1Pl0gZ2V0X21vZGFsaWFzKzB4YjkvMHhmNQorICBbPGMwMmUyM2I3Pl0gZG1pX2Rldl91ZXZlbnQrMHgyNy8weDNjCisgIFs8YzAyNzg2NmE+XSBkZXZfdWV2ZW50KzB4MWFkLzB4MWRhCisgIFs8YzAyMDUwMjQ+XSBrb2JqZWN0X3VldmVudF9lbnYrMHgyMGEvMHg0NWIKKyAgWzxjMDIwNTI3Zj5dIGtvYmplY3RfdWV2ZW50KzB4YS8weGYKKyAgWzxjMDI3NzlmMT5dIHN0b3JlX3VldmVudCsweDRmLzB4NTgKKyAgWzxjMDI3NzU4ZT5dIGRldl9hdHRyX3N0b3JlKzB4MjkvMHgyZgorICBbPGMwMWJlYzRmPl0gc3lzZnNfd3JpdGVfZmlsZSsweDE2ZS8weDE5YworICBbPGMwMTgzYmE3Pl0gdmZzX3dyaXRlKzB4ZDEvMHgxNWEKKyAgWzxjMDE4NDFkNz5dIHN5c193cml0ZSsweDNkLzB4NzIKKyAgWzxjMDEwNDExMj5dIHN5c2VudGVyX3Bhc3RfZXNwKzB4NWYvMHg5OQorICBbPGI3ZjdiNDEwPl0gMHhiN2Y3YjQxMAorICA9PT09PT09PT09PT09PT09PT09PT09PQorCitGSVgga21hbGxvYy04OiBSZXN0b3JpbmcgUmVkem9uZSAweGM5MGY2ZDI4LTB4YzkwZjZkMmI9MHhjYworCitJZiBTTFVCIGVuY291bnRlcnMgYSBjb3JydXB0ZWQgb2JqZWN0IChmdWxsIGRldGVjdGlvbiByZXF1aXJlcyB0aGUga2VybmVsCit0byBiZSBib290ZWQgd2l0aCBzbHViX2RlYnVnKSB0aGVuIHRoZSBmb2xsb3dpbmcgb3V0cHV0IHdpbGwgYmUgZHVtcGVkCitpbnRvIHRoZSBzeXNsb2c6CisKKzEuIERlc2NyaXB0aW9uIG9mIHRoZSBwcm9ibGVtIGVuY291bnRlcmVkCisKK1RoaXMgd2lsbCBiZSBhIG1lc3NhZ2UgaW4gdGhlIHN5c3RlbSBsb2cgc3RhcnRpbmcgd2l0aAorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQlVHIDxzbGFiIGNhY2hlIGFmZmVjdGVkPjogPFdoYXQgd2VudCB3cm9uZz4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lORk86IDxjb3JydXB0aW9uIHN0YXJ0Pi08Y29ycnVwdGlvbl9lbmQ+IDxtb3JlIGluZm8+CitJTkZPOiBTbGFiIDxhZGRyZXNzPiA8c2xhYiBpbmZvcm1hdGlvbj4KK0lORk86IE9iamVjdCA8YWRkcmVzcz4gPG9iamVjdCBpbmZvcm1hdGlvbj4KK0lORk86IEFsbG9jYXRlZCBpbiA8a2VybmVsIGZ1bmN0aW9uPiBhZ2U9PGppZmZpZXMgc2luY2UgYWxsb2M+IGNwdT08YWxsb2NhdGVkIGJ5CisJY3B1PiBwaWQ9PHBpZCBvZiB0aGUgcHJvY2Vzcz4KK0lORk86IEZyZWVkIGluIDxrZXJuZWwgZnVuY3Rpb24+IGFnZT08amlmZmllcyBzaW5jZSBmcmVlPiBjcHU9PGZyZWVkIGJ5IGNwdT4KKwkgcGlkPTxwaWQgb2YgdGhlIHByb2Nlc3M+CisKKyhPYmplY3QgYWxsb2NhdGlvbiAvIGZyZWUgaW5mb3JtYXRpb24gaXMgb25seSBhdmFpbGFibGUgaWYgU0xBQl9TVE9SRV9VU0VSIGlzCitzZXQgZm9yIHRoZSBzbGFiLiBzbHViX2RlYnVnIHNldHMgdGhhdCBvcHRpb24pCisKKzIuIFRoZSBvYmplY3QgY29udGVudHMgaWYgYW4gb2JqZWN0IHdhcyBpbnZvbHZlZC4KKworVmFyaW91cyB0eXBlcyBvZiBsaW5lcyBjYW4gZm9sbG93IHRoZSBCVUcgU0xVQiBsaW5lOgorCitCeXRlcyBiNCA8YWRkcmVzcz4gOiA8Ynl0ZXM+CisJU2hvd3MgYSBmZXcgYnl0ZXMgYmVmb3JlIHRoZSBvYmplY3Qgd2hlcmUgdGhlIHByb2JsZW0gd2FzIGRldGVjdGVkLgorCUNhbiBiZSB1c2VmdWwgaWYgdGhlIGNvcnJ1cHRpb24gZG9lcyBub3Qgc3RvcCB3aXRoIHRoZSBzdGFydCBvZiB0aGUKKwlvYmplY3QuCisKK09iamVjdCA8YWRkcmVzcz4gOiA8Ynl0ZXM+CisJVGhlIGJ5dGVzIG9mIHRoZSBvYmplY3QuIElmIHRoZSBvYmplY3QgaXMgaW5hY3RpdmUgdGhlbiB0aGUgYnl0ZXMKKwl0eXBpY2FsbHkgY29udGFpbiBwb2lzb24gdmFsdWVzLiBBbnkgbm9uLXBvaXNvbiB2YWx1ZSBzaG93cyBhCisJY29ycnVwdGlvbiBieSBhIHdyaXRlIGFmdGVyIGZyZWUuCisKK1JlZHpvbmUgPGFkZHJlc3M+IDogPGJ5dGVzPgorCVRoZSBSZWR6b25lIGZvbGxvd2luZyB0aGUgb2JqZWN0LiBUaGUgUmVkem9uZSBpcyB1c2VkIHRvIGRldGVjdAorCXdyaXRlcyBhZnRlciB0aGUgb2JqZWN0LiBBbGwgYnl0ZXMgc2hvdWxkIGFsd2F5cyBoYXZlIHRoZSBzYW1lCisJdmFsdWUuIElmIHRoZXJlIGlzIGFueSBkZXZpYXRpb24gdGhlbiBpdCBpcyBkdWUgdG8gYSB3cml0ZSBhZnRlcgorCXRoZSBvYmplY3QgYm91bmRhcnkuCisKKwkoUmVkem9uZSBpbmZvcm1hdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBpZiBTTEFCX1JFRF9aT05FIGlzIHNldC4KKwlzbHViX2RlYnVnIHNldHMgdGhhdCBvcHRpb24pCisKK1BhZGRpbmcgPGFkZHJlc3M+IDogPGJ5dGVzPgorCVVudXNlZCBkYXRhIHRvIGZpbGwgdXAgdGhlIHNwYWNlIGluIG9yZGVyIHRvIGdldCB0aGUgbmV4dCBvYmplY3QKKwlwcm9wZXJseSBhbGlnbmVkLiBJbiB0aGUgZGVidWcgY2FzZSB3ZSBtYWtlIHN1cmUgdGhhdCB0aGVyZSBhcmUKKwlhdCBsZWFzdCA0IGJ5dGVzIG9mIHBhZGRpbmcuIFRoaXMgYWxsb3dzIHRoZSBkZXRlY3Rpb24gb2Ygd3JpdGVzCisJYmVmb3JlIHRoZSBvYmplY3QuCisKKzMuIEEgc3RhY2tkdW1wCisKK1RoZSBzdGFja2R1bXAgZGVzY3JpYmVzIHRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgZXJyb3Igd2FzIGRldGVjdGVkLiBUaGUgY2F1c2UKK29mIHRoZSBjb3JydXB0aW9uIGlzIG1heSBiZSBtb3JlIGxpa2VseSBmb3VuZCBieSBsb29raW5nIGF0IHRoZSBmdW5jdGlvbiB0aGF0CithbGxvY2F0ZWQgb3IgZnJlZWQgdGhlIG9iamVjdC4KKworNC4gUmVwb3J0IG9uIGhvdyB0aGUgcHJvYmxlbSB3YXMgZGVhbHQgd2l0aCBpbiBvcmRlciB0byBlbnN1cmUgdGhlIGNvbnRpbnVlZAorb3BlcmF0aW9uIG9mIHRoZSBzeXN0ZW0uCisKK1RoZXNlIGFyZSBtZXNzYWdlcyBpbiB0aGUgc3lzdGVtIGxvZyBiZWdpbm5pbmcgd2l0aAorCitGSVggPHNsYWIgY2FjaGUgYWZmZWN0ZWQ+OiA8Y29ycmVjdGl2ZSBhY3Rpb24gdGFrZW4+CisKK0luIHRoZSBhYm92ZSBzYW1wbGUgU0xVQiBmb3VuZCB0aGF0IHRoZSBSZWR6b25lIG9mIGFuIGFjdGl2ZSBvYmplY3QgaGFzCitiZWVuIG92ZXJ3cml0dGVuLiBIZXJlIGEgc3RyaW5nIG9mIDggY2hhcmFjdGVycyB3YXMgd3JpdHRlbiBpbnRvIGEgc2xhYiB0aGF0CitoYXMgdGhlIGxlbmd0aCBvZiA4IGNoYXJhY3RlcnMuIEhvd2V2ZXIsIGEgOCBjaGFyYWN0ZXIgc3RyaW5nIG5lZWRzIGEKK3Rlcm1pbmF0aW5nIDAuIFRoYXQgemVybyBoYXMgb3ZlcndyaXR0ZW4gdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIFJlZHpvbmUgZmllbGQuCitBZnRlciByZXBvcnRpbmcgdGhlIGRldGFpbHMgb2YgdGhlIGlzc3VlIGVuY291bnRlcmVkIHRoZSBGSVggU0xVQiBtZXNzYWdlCit0ZWxscyB1cyB0aGF0IFNMVUIgaGFzIHJlc3RvcmVkIHRoZSBSZWR6b25lIHRvIGl0cyBwcm9wZXIgdmFsdWUgYW5kIHRoZW4KK3N5c3RlbSBvcGVyYXRpb25zIGNvbnRpbnVlLgorCitFbWVyZ2VuY3kgb3BlcmF0aW9uczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitNaW5pbWFsIGRlYnVnZ2luZyAoc2FuaXR5IGNoZWNrcyBhbG9uZSkgY2FuIGJlIGVuYWJsZWQgYnkgYm9vdGluZyB3aXRoCisKKwlzbHViX2RlYnVnPUYKKworVGhpcyB3aWxsIGJlIGdlbmVyYWxseSBiZSBlbm91Z2ggdG8gZW5hYmxlIHRoZSByZXNpbGllbmN5IGZlYXR1cmVzIG9mIHNsdWIKK3doaWNoIHdpbGwga2VlcCB0aGUgc3lzdGVtIHJ1bm5pbmcgZXZlbiBpZiBhIGJhZCBrZXJuZWwgY29tcG9uZW50IHdpbGwKK2tlZXAgY29ycnVwdGluZyBvYmplY3RzLiBUaGlzIG1heSBiZSBpbXBvcnRhbnQgZm9yIHByb2R1Y3Rpb24gc3lzdGVtcy4KK1BlcmZvcm1hbmNlIHdpbGwgYmUgaW1wYWN0ZWQgYnkgdGhlIHNhbml0eSBjaGVja3MgYW5kIHRoZXJlIHdpbGwgYmUgYQorY29udGludWFsIHN0cmVhbSBvZiBlcnJvciBtZXNzYWdlcyB0byB0aGUgc3lzbG9nIGJ1dCBubyBhZGRpdGlvbmFsIG1lbW9yeQord2lsbCBiZSB1c2VkICh1bmxpa2UgZnVsbCBkZWJ1Z2dpbmcpLgorCitObyBndWFyYW50ZWVzLiBUaGUga2VybmVsIGNvbXBvbmVudCBzdGlsbCBuZWVkcyB0byBiZSBmaXhlZC4gUGVyZm9ybWFuY2UKK21heSBiZSBvcHRpbWl6ZWQgZnVydGhlciBieSBsb2NhdGluZyB0aGUgc2xhYiB0aGF0IGV4cGVyaWVuY2VzIGNvcnJ1cHRpb24KK2FuZCBlbmFibGluZyBkZWJ1Z2dpbmcgb25seSBmb3IgdGhhdCBjYWNoZQorCitJLmUuCisKKwlzbHViX2RlYnVnPUYsZGVudHJ5CisKK0lmIHRoZSBjb3JydXB0aW9uIG9jY3VycyBieSB3cml0aW5nIGFmdGVyIHRoZSBlbmQgb2YgdGhlIG9iamVjdCB0aGVuIGl0CittYXkgYmUgYWR2aXNhYmxlIHRvIGVuYWJsZSBhIFJlZHpvbmUgdG8gYXZvaWQgY29ycnVwdGluZyB0aGUgYmVnaW5uaW5nCitvZiBvdGhlciBvYmplY3RzLgorCisJc2x1Yl9kZWJ1Zz1GWixkZW50cnkKKworRXh0ZW5kZWQgc2xhYmluZm8gbW9kZSBhbmQgcGxvdHRpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBzbGFiaW5mbyB0b29sIGhhcyBhIHNwZWNpYWwgJ2V4dGVuZGVkJyAoJy1YJykgbW9kZSB0aGF0IGluY2x1ZGVzOgorIC0gU2xhYmNhY2hlIFRvdGFscworIC0gU2xhYnMgc29ydGVkIGJ5IHNpemUgKHVwIHRvIC1OIDxudW0+IHNsYWJzLCBkZWZhdWx0IDEpCisgLSBTbGFicyBzb3J0ZWQgYnkgbG9zcyAodXAgdG8gLU4gPG51bT4gc2xhYnMsIGRlZmF1bHQgMSkKKworQWRkaXRpb25hbGx5LCBpbiB0aGlzIG1vZGUgc2xhYmluZm8gZG9lcyBub3QgZHluYW1pY2FsbHkgc2NhbGUgc2l6ZXMgKEcvTS9LKQorYW5kIHJlcG9ydHMgZXZlcnl0aGluZyBpbiBieXRlcyAodGhpcyBmdW5jdGlvbmFsaXR5IGlzIGFsc28gYXZhaWxhYmxlIHRvCitvdGhlciBzbGFiaW5mbyBtb2RlcyB2aWEgJy1CJyBvcHRpb24pIHdoaWNoIG1ha2VzIHJlcG9ydGluZyBtb3JlIHByZWNpc2UgYW5kCithY2N1cmF0ZS4gTW9yZW92ZXIsIGluIHNvbWUgc2Vuc2UgdGhlIGAtWCcgbW9kZSBhbHNvIHNpbXBsaWZpZXMgdGhlIGFuYWx5c2lzCitvZiBzbGFicycgYmVoYXZpb3VyLCBiZWNhdXNlIGl0cyBvdXRwdXQgY2FuIGJlIHBsb3R0ZWQgdXNpbmcgdGhlCitzbGFiaW5mby1nbnVwbG90LnNoIHNjcmlwdC4gU28gaXQgcHVzaGVzIHRoZSBhbmFseXNpcyBmcm9tIGxvb2tpbmcgdGhyb3VnaAordGhlIG51bWJlcnMgKHRvbnMgb2YgbnVtYmVycykgdG8gc29tZXRoaW5nIGVhc2llciAtLSB2aXN1YWwgYW5hbHlzaXMuCisKK1RvIGdlbmVyYXRlIHBsb3RzOgorYSkgY29sbGVjdCBzbGFiaW5mbyBleHRlbmRlZCByZWNvcmRzLCBmb3IgZXhhbXBsZToKKworICB3aGlsZSBbIDEgXTsgZG8gc2xhYmluZm8gLVggPj4gRk9PX1NUQVRTOyBzbGVlcCAxOyBkb25lCisKK2IpIHBhc3Mgc3RhdHMgZmlsZSgtcykgdG8gc2xhYmluZm8tZ251cGxvdC5zaCBzY3JpcHQ6CisgIHNsYWJpbmZvLWdudXBsb3Quc2ggRk9PX1NUQVRTIFtGT09fU1RBVFMyIC4uIEZPT19TVEFUU05dCisKK1RoZSBzbGFiaW5mby1nbnVwbG90LnNoIHNjcmlwdCB3aWxsIHByZS1wcm9jZXNzZXMgdGhlIGNvbGxlY3RlZCByZWNvcmRzCithbmQgZ2VuZXJhdGVzIDMgcG5nIGZpbGVzIChhbmQgMyBwcmUtcHJvY2Vzc2luZyBjYWNoZSBmaWxlcykgcGVyIFNUQVRTCitmaWxlOgorIC0gU2xhYmNhY2hlIFRvdGFsczogRk9PX1NUQVRTLXRvdGFscy5wbmcKKyAtIFNsYWJzIHNvcnRlZCBieSBzaXplOiBGT09fU1RBVFMtc2xhYnMtYnktc2l6ZS5wbmcKKyAtIFNsYWJzIHNvcnRlZCBieSBsb3NzOiBGT09fU1RBVFMtc2xhYnMtYnktbG9zcy5wbmcKKworQW5vdGhlciB1c2UgY2FzZSwgd2hlbiBzbGFiaW5mby1nbnVwbG90IGNhbiBiZSB1c2VmdWwsIGlzIHdoZW4geW91IG5lZWQKK3RvIGNvbXBhcmUgc2xhYnMnIGJlaGF2aW91ciAicHJpb3IgdG8iIGFuZCAiYWZ0ZXIiIHNvbWUgY29kZSBtb2RpZmljYXRpb24uCitUbyBoZWxwIHlvdSBvdXQgdGhlcmUsIHNsYWJpbmZvLWdudXBsb3Quc2ggc2NyaXB0IGNhbiAnbWVyZ2UnIHRoZQorYFNsYWJjYWNoZSBUb3RhbHNgIHNlY3Rpb25zIGZyb20gZGlmZmVyZW50IG1lYXN1cmVtZW50cy4gVG8gdmlzdWFsbHkKK2NvbXBhcmUgTiBwbG90czoKKworYSkgQ29sbGVjdCBhcyBtYW55IFNUQVRTMSwgU1RBVFMyLCAuLiBTVEFUU04gZmlsZXMgYXMgeW91IG5lZWQKKyAgd2hpbGUgWyAxIF07IGRvIHNsYWJpbmZvIC1YID4+IFNUQVRTPFg+OyBzbGVlcCAxOyBkb25lCisKK2IpIFByZS1wcm9jZXNzIHRob3NlIFNUQVRTIGZpbGVzCisgIHNsYWJpbmZvLWdudXBsb3Quc2ggU1RBVFMxIFNUQVRTMiAuLiBTVEFUU04KKworYykgRXhlY3V0ZSBzbGFiaW5mby1nbnVwbG90LnNoIGluICctdCcgbW9kZSwgcGFzc2luZyBhbGwgb2YgdGhlCitnZW5lcmF0ZWQgcHJlLXByb2Nlc3NlZCAqLXRvdGFscworICBzbGFiaW5mby1nbnVwbG90LnNoIC10IFNUQVRTMS10b3RhbHMgU1RBVFMyLXRvdGFscyAuLiBTVEFUU04tdG90YWxzCisKK1RoaXMgd2lsbCBwcm9kdWNlIGEgc2luZ2xlIHBsb3QgKHBuZyBmaWxlKS4KKworUGxvdHMsIGV4cGVjdGVkbHksIGNhbiBiZSBsYXJnZSBzbyBzb21lIGZsdWN0dWF0aW9ucyBvciBzbWFsbCBzcGlrZXMKK2NhbiBnbyB1bm5vdGljZWQuIFRvIGRlYWwgd2l0aCB0aGF0LCBgc2xhYmluZm8tZ251cGxvdC5zaCcgaGFzIHR3bworb3B0aW9ucyB0byAnem9vbS1pbicvJ3pvb20tb3V0JzoKKyBhKSAtcyAlZCwlZCAgb3ZlcndyaXRlcyB0aGUgZGVmYXVsdCBpbWFnZSB3aWR0aCBhbmQgaGVpZ2gKKyBiKSAtciAlZCwlZCAgc3BlY2lmaWVzIGEgcmFuZ2Ugb2Ygc2FtcGxlcyB0byB1c2UgKGZvciBleGFtcGxlLAorICAgICAgICAgICAgICBpbiBgc2xhYmluZm8gLVggPj4gRk9PX1NUQVRTOyBzbGVlcCAxOycgY2FzZSwgdXNpbmcKKyAgICAgICAgICAgICAgYSAiLXIgNDAsNjAiIHJhbmdlIHdpbGwgcGxvdCBvbmx5IHNhbXBsZXMgY29sbGVjdGVkCisgICAgICAgICAgICAgIGJldHdlZW4gNDB0aCBhbmQgNjB0aCBzZWNvbmRzKS4KKworQ2hyaXN0b3BoIExhbWV0ZXIsIE1heSAzMCwgMjAwNworU2VyZ2V5IFNlbm96aGF0c2t5LCBPY3RvYmVyIDIzLCAyMDE1CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZtL3NvZnQtZGlydHkudHh0IGIvRG9jdW1lbnRhdGlvbi92bS9zb2Z0LWRpcnR5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTY4NGQxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92bS9zb2Z0LWRpcnR5LnR4dApAQCAtMCwwICsxLDQzIEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU09GVC1ESVJUWSBQVEVzCisKKyAgVGhlIHNvZnQtZGlydHkgaXMgYSBiaXQgb24gYSBQVEUgd2hpY2ggaGVscHMgdG8gdHJhY2sgd2hpY2ggcGFnZXMgYSB0YXNrCit3cml0ZXMgdG8uIEluIG9yZGVyIHRvIGRvIHRoaXMgdHJhY2tpbmcgb25lIHNob3VsZAorCisgIDEuIENsZWFyIHNvZnQtZGlydHkgYml0cyBmcm9tIHRoZSB0YXNrJ3MgUFRFcy4KKworICAgICBUaGlzIGlzIGRvbmUgYnkgd3JpdGluZyAiNCIgaW50byB0aGUgL3Byb2MvUElEL2NsZWFyX3JlZnMgZmlsZSBvZiB0aGUKKyAgICAgdGFzayBpbiBxdWVzdGlvbi4KKworICAyLiBXYWl0IHNvbWUgdGltZS4KKworICAzLiBSZWFkIHNvZnQtZGlydHkgYml0cyBmcm9tIHRoZSBQVEVzLgorCisgICAgIFRoaXMgaXMgZG9uZSBieSByZWFkaW5nIGZyb20gdGhlIC9wcm9jL1BJRC9wYWdlbWFwLiBUaGUgYml0IDU1IG9mIHRoZQorICAgICA2NC1iaXQgcXdvcmQgaXMgdGhlIHNvZnQtZGlydHkgb25lLiBJZiBzZXQsIHRoZSByZXNwZWN0aXZlIFBURSB3YXMKKyAgICAgd3JpdHRlbiB0byBzaW5jZSBzdGVwIDEuCisKKworICBJbnRlcm5hbGx5LCB0byBkbyB0aGlzIHRyYWNraW5nLCB0aGUgd3JpdGFibGUgYml0IGlzIGNsZWFyZWQgZnJvbSBQVEVzCit3aGVuIHRoZSBzb2Z0LWRpcnR5IGJpdCBpcyBjbGVhcmVkLiBTbywgYWZ0ZXIgdGhpcywgd2hlbiB0aGUgdGFzayB0cmllcyB0bworbW9kaWZ5IGEgcGFnZSBhdCBzb21lIHZpcnR1YWwgYWRkcmVzcyB0aGUgI1BGIG9jY3VycyBhbmQgdGhlIGtlcm5lbCBzZXRzCit0aGUgc29mdC1kaXJ0eSBiaXQgb24gdGhlIHJlc3BlY3RpdmUgUFRFLgorCisgIE5vdGUsIHRoYXQgYWx0aG91Z2ggYWxsIHRoZSB0YXNrJ3MgYWRkcmVzcyBzcGFjZSBpcyBtYXJrZWQgYXMgci9vIGFmdGVyIHRoZQorc29mdC1kaXJ0eSBiaXRzIGNsZWFyLCB0aGUgI1BGLXMgdGhhdCBvY2N1ciBhZnRlciB0aGF0IGFyZSBwcm9jZXNzZWQgZmFzdC4KK1RoaXMgaXMgc28sIHNpbmNlIHRoZSBwYWdlcyBhcmUgc3RpbGwgbWFwcGVkIHRvIHBoeXNpY2FsIG1lbW9yeSwgYW5kIHRodXMgYWxsCit0aGUga2VybmVsIGRvZXMgaXMgZmluZHMgdGhpcyBmYWN0IG91dCBhbmQgcHV0cyBib3RoIHdyaXRhYmxlIGFuZCBzb2Z0LWRpcnR5CitiaXRzIG9uIHRoZSBQVEUuCisKKyAgV2hpbGUgaW4gbW9zdCBjYXNlcyB0cmFja2luZyBtZW1vcnkgY2hhbmdlcyBieSAjUEYtcyBpcyBtb3JlIHRoYW4gZW5vdWdoCit0aGVyZSBpcyBzdGlsbCBhIHNjZW5hcmlvIHdoZW4gd2UgY2FuIGxvc2Ugc29mdCBkaXJ0eSBiaXRzIC0tIGEgdGFzawordW5tYXBzIGEgcHJldmlvdXNseSBtYXBwZWQgbWVtb3J5IHJlZ2lvbiBhbmQgdGhlbiBtYXBzIGEgbmV3IG9uZSBhdCBleGFjdGx5Cit0aGUgc2FtZSBwbGFjZS4gV2hlbiB1bm1hcCBpcyBjYWxsZWQsIHRoZSBrZXJuZWwgaW50ZXJuYWxseSBjbGVhcnMgUFRFIHZhbHVlcworaW5jbHVkaW5nIHNvZnQgZGlydHkgYml0cy4gVG8gbm90aWZ5IHVzZXIgc3BhY2UgYXBwbGljYXRpb24gYWJvdXQgc3VjaAorbWVtb3J5IHJlZ2lvbiByZW5ld2FsIHRoZSBrZXJuZWwgYWx3YXlzIG1hcmtzIG5ldyBtZW1vcnkgcmVnaW9ucyAoYW5kCitleHBhbmRlZCByZWdpb25zKSBhcyBzb2Z0IGRpcnR5LgorCisgIFRoaXMgZmVhdHVyZSBpcyBhY3RpdmVseSB1c2VkIGJ5IHRoZSBjaGVja3BvaW50LXJlc3RvcmUgcHJvamVjdC4gWW91CitjYW4gZmluZCBtb3JlIGRldGFpbHMgYWJvdXQgaXQgb24gaHR0cDovL2NyaXUub3JnCisKKworLS0gUGF2ZWwgRW1lbHlhbm92LCBBcHIgOSwgMjAxMwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92bS9zcGxpdF9wYWdlX3RhYmxlX2xvY2sgYi9Eb2N1bWVudGF0aW9uL3ZtL3NwbGl0X3BhZ2VfdGFibGVfbG9jawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Mjg0MmE4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92bS9zcGxpdF9wYWdlX3RhYmxlX2xvY2sKQEAgLTAsMCArMSw5NCBAQAorU3BsaXQgcGFnZSB0YWJsZSBsb2NrCis9PT09PT09PT09PT09PT09PT09PT0KKworT3JpZ2luYWxseSwgbW0tPnBhZ2VfdGFibGVfbG9jayBzcGlubG9jayBwcm90ZWN0ZWQgYWxsIHBhZ2UgdGFibGVzIG9mIHRoZQorbW1fc3RydWN0LiBCdXQgdGhpcyBhcHByb2FjaCBsZWFkcyB0byBwb29yIHBhZ2UgZmF1bHQgc2NhbGFiaWxpdHkgb2YKK211bHRpLXRocmVhZGVkIGFwcGxpY2F0aW9ucyBkdWUgaGlnaCBjb250ZW50aW9uIG9uIHRoZSBsb2NrLiBUbyBpbXByb3ZlCitzY2FsYWJpbGl0eSwgc3BsaXQgcGFnZSB0YWJsZSBsb2NrIHdhcyBpbnRyb2R1Y2VkLgorCitXaXRoIHNwbGl0IHBhZ2UgdGFibGUgbG9jayB3ZSBoYXZlIHNlcGFyYXRlIHBlci10YWJsZSBsb2NrIHRvIHNlcmlhbGl6ZQorYWNjZXNzIHRvIHRoZSB0YWJsZS4gQXQgdGhlIG1vbWVudCB3ZSB1c2Ugc3BsaXQgbG9jayBmb3IgUFRFIGFuZCBQTUQKK3RhYmxlcy4gQWNjZXNzIHRvIGhpZ2hlciBsZXZlbCB0YWJsZXMgcHJvdGVjdGVkIGJ5IG1tLT5wYWdlX3RhYmxlX2xvY2suCisKK1RoZXJlIGFyZSBoZWxwZXJzIHRvIGxvY2svdW5sb2NrIGEgdGFibGUgYW5kIG90aGVyIGFjY2Vzc29yIGZ1bmN0aW9uczoKKyAtIHB0ZV9vZmZzZXRfbWFwX2xvY2soKQorCW1hcHMgcHRlIGFuZCB0YWtlcyBQVEUgdGFibGUgbG9jaywgcmV0dXJucyBwb2ludGVyIHRvIHRoZSB0YWtlbgorCWxvY2s7CisgLSBwdGVfdW5tYXBfdW5sb2NrKCkKKwl1bmxvY2tzIGFuZCB1bm1hcHMgUFRFIHRhYmxlOworIC0gcHRlX2FsbG9jX21hcF9sb2NrKCkKKwlhbGxvY2F0ZXMgUFRFIHRhYmxlIGlmIG5lZWRlZCBhbmQgdGFrZSB0aGUgbG9jaywgcmV0dXJucyBwb2ludGVyCisJdG8gdGFrZW4gbG9jayBvciBOVUxMIGlmIGFsbG9jYXRpb24gZmFpbGVkOworIC0gcHRlX2xvY2twdHIoKQorCXJldHVybnMgcG9pbnRlciB0byBQVEUgdGFibGUgbG9jazsKKyAtIHBtZF9sb2NrKCkKKwl0YWtlcyBQTUQgdGFibGUgbG9jaywgcmV0dXJucyBwb2ludGVyIHRvIHRha2VuIGxvY2s7CisgLSBwbWRfbG9ja3B0cigpCisJcmV0dXJucyBwb2ludGVyIHRvIFBNRCB0YWJsZSBsb2NrOworCitTcGxpdCBwYWdlIHRhYmxlIGxvY2sgZm9yIFBURSB0YWJsZXMgaXMgZW5hYmxlZCBjb21waWxlLXRpbWUgaWYKK0NPTkZJR19TUExJVF9QVExPQ0tfQ1BVUyAodXN1YWxseSA0KSBpcyBsZXNzIG9yIGVxdWFsIHRvIE5SX0NQVVMuCitJZiBzcGxpdCBsb2NrIGlzIGRpc2FibGVkLCBhbGwgdGFibGVzIGd1YWRlZCBieSBtbS0+cGFnZV90YWJsZV9sb2NrLgorCitTcGxpdCBwYWdlIHRhYmxlIGxvY2sgZm9yIFBNRCB0YWJsZXMgaXMgZW5hYmxlZCwgaWYgaXQncyBlbmFibGVkIGZvciBQVEUKK3RhYmxlcyBhbmQgdGhlIGFyY2hpdGVjdHVyZSBzdXBwb3J0cyBpdCAoc2VlIGJlbG93KS4KKworSHVnZXRsYiBhbmQgc3BsaXQgcGFnZSB0YWJsZSBsb2NrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSHVnZXRsYiBjYW4gc3VwcG9ydCBzZXZlcmFsIHBhZ2Ugc2l6ZXMuIFdlIHVzZSBzcGxpdCBsb2NrIG9ubHkgZm9yIFBNRAorbGV2ZWwsIGJ1dCBub3QgZm9yIFBVRC4KKworSHVnZXRsYi1zcGVjaWZpYyBoZWxwZXJzOgorIC0gaHVnZV9wdGVfbG9jaygpCisJdGFrZXMgcG1kIHNwbGl0IGxvY2sgZm9yIFBNRF9TSVpFIHBhZ2UsIG1tLT5wYWdlX3RhYmxlX2xvY2sKKwlvdGhlcndpc2U7CisgLSBodWdlX3B0ZV9sb2NrcHRyKCkKKwlyZXR1cm5zIHBvaW50ZXIgdG8gdGFibGUgbG9jazsKKworU3VwcG9ydCBvZiBzcGxpdCBwYWdlIHRhYmxlIGxvY2sgYnkgYW4gYXJjaGl0ZWN0dXJlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlcmUncyBubyBuZWVkIGluIHNwZWNpYWwgZW5hYmxpbmcgb2YgUFRFIHNwbGl0IHBhZ2UgdGFibGUgbG9jazoKK2V2ZXJ5dGhpbmcgcmVxdWlyZWQgaXMgZG9uZSBieSBwZ3RhYmxlX3BhZ2VfY3RvcigpIGFuZCBwZ3RhYmxlX3BhZ2VfZHRvcigpLAord2hpY2ggbXVzdCBiZSBjYWxsZWQgb24gUFRFIHRhYmxlIGFsbG9jYXRpb24gLyBmcmVlaW5nLgorCitNYWtlIHN1cmUgdGhlIGFyY2hpdGVjdHVyZSBkb2Vzbid0IHVzZSBzbGFiIGFsbG9jYXRvciBmb3IgcGFnZSB0YWJsZQorYWxsb2NhdGlvbjogc2xhYiB1c2VzIHBhZ2UtPnNsYWJfY2FjaGUgZm9yIGl0cyBwYWdlcy4KK1RoaXMgZmllbGQgc2hhcmVzIHN0b3JhZ2Ugd2l0aCBwYWdlLT5wdGwuCisKK1BNRCBzcGxpdCBsb2NrIG9ubHkgbWFrZXMgc2Vuc2UgaWYgeW91IGhhdmUgbW9yZSB0aGFuIHR3byBwYWdlIHRhYmxlCitsZXZlbHMuCisKK1BNRCBzcGxpdCBsb2NrIGVuYWJsaW5nIHJlcXVpcmVzIHBndGFibGVfcG1kX3BhZ2VfY3RvcigpIGNhbGwgb24gUE1EIHRhYmxlCithbGxvY2F0aW9uIGFuZCBwZ3RhYmxlX3BtZF9wYWdlX2R0b3IoKSBvbiBmcmVlaW5nLgorCitBbGxvY2F0aW9uIHVzdWFsbHkgaGFwcGVucyBpbiBwbWRfYWxsb2Nfb25lKCksIGZyZWVpbmcgaW4gcG1kX2ZyZWUoKSBhbmQKK3BtZF9mcmVlX3RsYigpLCBidXQgbWFrZSBzdXJlIHlvdSBjb3ZlciBhbGwgUE1EIHRhYmxlIGFsbG9jYXRpb24gLyBmcmVlaW5nCitwYXRoczogaS5lIFg4Nl9QQUUgcHJlYWxsb2NhdGUgZmV3IFBNRHMgb24gcGdkX2FsbG9jKCkuCisKK1dpdGggZXZlcnl0aGluZyBpbiBwbGFjZSB5b3UgY2FuIHNldCBDT05GSUdfQVJDSF9FTkFCTEVfU1BMSVRfUE1EX1BUTE9DSy4KKworTk9URTogcGd0YWJsZV9wYWdlX2N0b3IoKSBhbmQgcGd0YWJsZV9wbWRfcGFnZV9jdG9yKCkgY2FuIGZhaWwgLS0gaXQgbXVzdAorYmUgaGFuZGxlZCBwcm9wZXJseS4KKworcGFnZS0+cHRsCistLS0tLS0tLS0KKworcGFnZS0+cHRsIGlzIHVzZWQgdG8gYWNjZXNzIHNwbGl0IHBhZ2UgdGFibGUgbG9jaywgd2hlcmUgJ3BhZ2UnIGlzIHN0cnVjdAorcGFnZSBvZiBwYWdlIGNvbnRhaW5pbmcgdGhlIHRhYmxlLiBJdCBzaGFyZXMgc3RvcmFnZSB3aXRoIHBhZ2UtPnByaXZhdGUKKyhhbmQgZmV3IG90aGVyIGZpZWxkcyBpbiB1bmlvbikuCisKK1RvIGF2b2lkIGluY3JlYXNpbmcgc2l6ZSBvZiBzdHJ1Y3QgcGFnZSBhbmQgaGF2ZSBiZXN0IHBlcmZvcm1hbmNlLCB3ZSB1c2UgYQordHJpY2s6CisgLSBpZiBzcGlubG9ja190IGZpdHMgaW50byBsb25nLCB3ZSB1c2UgcGFnZS0+cHRyIGFzIHNwaW5sb2NrLCBzbyB3ZQorICAgY2FuIGF2b2lkIGluZGlyZWN0IGFjY2VzcyBhbmQgc2F2ZSBhIGNhY2hlIGxpbmUuCisgLSBpZiBzaXplIG9mIHNwaW5sb2NrX3QgaXMgYmlnZ2VyIHRoZW4gc2l6ZSBvZiBsb25nLCB3ZSB1c2UgcGFnZS0+cHRsIGFzCisgICBwb2ludGVyIHRvIHNwaW5sb2NrX3QgYW5kIGFsbG9jYXRlIGl0IGR5bmFtaWNhbGx5LiBUaGlzIGFsbG93cyB0byB1c2UKKyAgIHNwbGl0IGxvY2sgd2l0aCBlbmFibGVkIERFQlVHX1NQSU5MT0NLIG9yIERFQlVHX0xPQ0tfQUxMT0MsIGJ1dCBjb3N0cworICAgb25lIG1vcmUgY2FjaGUgbGluZSBmb3IgaW5kaXJlY3QgYWNjZXNzOworCitUaGUgc3BpbmxvY2tfdCBhbGxvY2F0ZWQgaW4gcGd0YWJsZV9wYWdlX2N0b3IoKSBmb3IgUFRFIHRhYmxlIGFuZCBpbgorcGd0YWJsZV9wbWRfcGFnZV9jdG9yKCkgZm9yIFBNRCB0YWJsZS4KKworUGxlYXNlLCBuZXZlciBhY2Nlc3MgcGFnZS0+cHRsIGRpcmVjdGx5IC0tIHVzZSBhcHByb3ByaWF0ZSBoZWxwZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZtL3RyYW5zaHVnZS50eHQgYi9Eb2N1bWVudGF0aW9uL3ZtL3RyYW5zaHVnZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGEyODI2OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdm0vdHJhbnNodWdlLnR4dApAQCAtMCwwICsxLDM5NyBAQAorPSBUcmFuc3BhcmVudCBIdWdlcGFnZSBTdXBwb3J0ID0KKworPT0gT2JqZWN0aXZlID09CisKK1BlcmZvcm1hbmNlIGNyaXRpY2FsIGNvbXB1dGluZyBhcHBsaWNhdGlvbnMgZGVhbGluZyB3aXRoIGxhcmdlIG1lbW9yeQord29ya2luZyBzZXRzIGFyZSBhbHJlYWR5IHJ1bm5pbmcgb24gdG9wIG9mIGxpYmh1Z2V0bGJmcyBhbmQgaW4gdHVybgoraHVnZXRsYmZzLiBUcmFuc3BhcmVudCBIdWdlcGFnZSBTdXBwb3J0IGlzIGFuIGFsdGVybmF0aXZlIG1lYW5zIG9mCit1c2luZyBodWdlIHBhZ2VzIGZvciB0aGUgYmFja2luZyBvZiB2aXJ0dWFsIG1lbW9yeSB3aXRoIGh1Z2UgcGFnZXMKK3RoYXQgc3VwcG9ydHMgdGhlIGF1dG9tYXRpYyBwcm9tb3Rpb24gYW5kIGRlbW90aW9uIG9mIHBhZ2Ugc2l6ZXMgYW5kCit3aXRob3V0IHRoZSBzaG9ydGNvbWluZ3Mgb2YgaHVnZXRsYmZzLgorCitDdXJyZW50bHkgaXQgb25seSB3b3JrcyBmb3IgYW5vbnltb3VzIG1lbW9yeSBtYXBwaW5ncyBidXQgaW4gdGhlCitmdXR1cmUgaXQgY2FuIGV4cGFuZCBvdmVyIHRoZSBwYWdlY2FjaGUgbGF5ZXIgc3RhcnRpbmcgd2l0aCB0bXBmcy4KKworVGhlIHJlYXNvbiBhcHBsaWNhdGlvbnMgYXJlIHJ1bm5pbmcgZmFzdGVyIGlzIGJlY2F1c2Ugb2YgdHdvCitmYWN0b3JzLiBUaGUgZmlyc3QgZmFjdG9yIGlzIGFsbW9zdCBjb21wbGV0ZWx5IGlycmVsZXZhbnQgYW5kIGl0J3Mgbm90CitvZiBzaWduaWZpY2FudCBpbnRlcmVzdCBiZWNhdXNlIGl0J2xsIGFsc28gaGF2ZSB0aGUgZG93bnNpZGUgb2YKK3JlcXVpcmluZyBsYXJnZXIgY2xlYXItcGFnZSBjb3B5LXBhZ2UgaW4gcGFnZSBmYXVsdHMgd2hpY2ggaXMgYQorcG90ZW50aWFsbHkgbmVnYXRpdmUgZWZmZWN0LiBUaGUgZmlyc3QgZmFjdG9yIGNvbnNpc3RzIGluIHRha2luZyBhCitzaW5nbGUgcGFnZSBmYXVsdCBmb3IgZWFjaCAyTSB2aXJ0dWFsIHJlZ2lvbiB0b3VjaGVkIGJ5IHVzZXJsYW5kIChzbworcmVkdWNpbmcgdGhlIGVudGVyL2V4aXQga2VybmVsIGZyZXF1ZW5jeSBieSBhIDUxMiB0aW1lcyBmYWN0b3IpLiBUaGlzCitvbmx5IG1hdHRlcnMgdGhlIGZpcnN0IHRpbWUgdGhlIG1lbW9yeSBpcyBhY2Nlc3NlZCBmb3IgdGhlIGxpZmV0aW1lIG9mCithIG1lbW9yeSBtYXBwaW5nLiBUaGUgc2Vjb25kIGxvbmcgbGFzdGluZyBhbmQgbXVjaCBtb3JlIGltcG9ydGFudAorZmFjdG9yIHdpbGwgYWZmZWN0IGFsbCBzdWJzZXF1ZW50IGFjY2Vzc2VzIHRvIHRoZSBtZW1vcnkgZm9yIHRoZSB3aG9sZQorcnVudGltZSBvZiB0aGUgYXBwbGljYXRpb24uIFRoZSBzZWNvbmQgZmFjdG9yIGNvbnNpc3Qgb2YgdHdvCitjb21wb25lbnRzOiAxKSB0aGUgVExCIG1pc3Mgd2lsbCBydW4gZmFzdGVyIChlc3BlY2lhbGx5IHdpdGgKK3ZpcnR1YWxpemF0aW9uIHVzaW5nIG5lc3RlZCBwYWdldGFibGVzIGJ1dCBhbG1vc3QgYWx3YXlzIGFsc28gb24gYmFyZQorbWV0YWwgd2l0aG91dCB2aXJ0dWFsaXphdGlvbikgYW5kIDIpIGEgc2luZ2xlIFRMQiBlbnRyeSB3aWxsIGJlCittYXBwaW5nIGEgbXVjaCBsYXJnZXIgYW1vdW50IG9mIHZpcnR1YWwgbWVtb3J5IGluIHR1cm4gcmVkdWNpbmcgdGhlCitudW1iZXIgb2YgVExCIG1pc3Nlcy4gV2l0aCB2aXJ0dWFsaXphdGlvbiBhbmQgbmVzdGVkIHBhZ2V0YWJsZXMgdGhlCitUTEIgY2FuIGJlIG1hcHBlZCBvZiBsYXJnZXIgc2l6ZSBvbmx5IGlmIGJvdGggS1ZNIGFuZCB0aGUgTGludXggZ3Vlc3QKK2FyZSB1c2luZyBodWdlcGFnZXMgYnV0IGEgc2lnbmlmaWNhbnQgc3BlZWR1cCBhbHJlYWR5IGhhcHBlbnMgaWYgb25seQorb25lIG9mIHRoZSB0d28gaXMgdXNpbmcgaHVnZXBhZ2VzIGp1c3QgYmVjYXVzZSBvZiB0aGUgZmFjdCB0aGUgVExCCittaXNzIGlzIGdvaW5nIHRvIHJ1biBmYXN0ZXIuCisKKz09IERlc2lnbiA9PQorCistICJncmFjZWZ1bCBmYWxsYmFjayI6IG1tIGNvbXBvbmVudHMgd2hpY2ggZG9uJ3QgaGF2ZSB0cmFuc3BhcmVudAorICBodWdlcGFnZSBrbm93bGVkZ2UgZmFsbCBiYWNrIHRvIGJyZWFraW5nIGEgdHJhbnNwYXJlbnQgaHVnZXBhZ2UgYW5kCisgIHdvcmtpbmcgb24gdGhlIHJlZ3VsYXIgcGFnZXMgYW5kIHRoZWlyIHJlc3BlY3RpdmUgcmVndWxhciBwbWQvcHRlCisgIG1hcHBpbmdzCisKKy0gaWYgYSBodWdlcGFnZSBhbGxvY2F0aW9uIGZhaWxzIGJlY2F1c2Ugb2YgbWVtb3J5IGZyYWdtZW50YXRpb24sCisgIHJlZ3VsYXIgcGFnZXMgc2hvdWxkIGJlIGdyYWNlZnVsbHkgYWxsb2NhdGVkIGluc3RlYWQgYW5kIG1peGVkIGluCisgIHRoZSBzYW1lIHZtYSB3aXRob3V0IGFueSBmYWlsdXJlIG9yIHNpZ25pZmljYW50IGRlbGF5IGFuZCB3aXRob3V0CisgIHVzZXJsYW5kIG5vdGljaW5nCisKKy0gaWYgc29tZSB0YXNrIHF1aXRzIGFuZCBtb3JlIGh1Z2VwYWdlcyBiZWNvbWUgYXZhaWxhYmxlIChlaXRoZXIKKyAgaW1tZWRpYXRlbHkgaW4gdGhlIGJ1ZGR5IG9yIHRocm91Z2ggdGhlIFZNKSwgZ3Vlc3QgcGh5c2ljYWwgbWVtb3J5CisgIGJhY2tlZCBieSByZWd1bGFyIHBhZ2VzIHNob3VsZCBiZSByZWxvY2F0ZWQgb24gaHVnZXBhZ2VzCisgIGF1dG9tYXRpY2FsbHkgKHdpdGgga2h1Z2VwYWdlZCkKKworLSBpdCBkb2Vzbid0IHJlcXVpcmUgbWVtb3J5IHJlc2VydmF0aW9uIGFuZCBpbiB0dXJuIGl0IHVzZXMgaHVnZXBhZ2VzCisgIHdoZW5ldmVyIHBvc3NpYmxlICh0aGUgb25seSBwb3NzaWJsZSByZXNlcnZhdGlvbiBoZXJlIGlzIGtlcm5lbGNvcmU9CisgIHRvIGF2b2lkIHVubW92YWJsZSBwYWdlcyB0byBmcmFnbWVudCBhbGwgdGhlIG1lbW9yeSBidXQgc3VjaCBhIHR3ZWFrCisgIGlzIG5vdCBzcGVjaWZpYyB0byB0cmFuc3BhcmVudCBodWdlcGFnZSBzdXBwb3J0IGFuZCBpdCdzIGEgZ2VuZXJpYworICBmZWF0dXJlIHRoYXQgYXBwbGllcyB0byBhbGwgZHluYW1pYyBoaWdoIG9yZGVyIGFsbG9jYXRpb25zIGluIHRoZQorICBrZXJuZWwpCisKKy0gdGhpcyBpbml0aWFsIHN1cHBvcnQgb25seSBvZmZlcnMgdGhlIGZlYXR1cmUgaW4gdGhlIGFub255bW91cyBtZW1vcnkKKyAgcmVnaW9ucyBidXQgaXQnZCBiZSBpZGVhbCB0byBtb3ZlIGl0IHRvIHRtcGZzIGFuZCB0aGUgcGFnZWNhY2hlCisgIGxhdGVyCisKK1RyYW5zcGFyZW50IEh1Z2VwYWdlIFN1cHBvcnQgbWF4aW1pemVzIHRoZSB1c2VmdWxuZXNzIG9mIGZyZWUgbWVtb3J5CitpZiBjb21wYXJlZCB0byB0aGUgcmVzZXJ2YXRpb24gYXBwcm9hY2ggb2YgaHVnZXRsYmZzIGJ5IGFsbG93aW5nIGFsbAordW51c2VkIG1lbW9yeSB0byBiZSB1c2VkIGFzIGNhY2hlIG9yIG90aGVyIG1vdmFibGUgKG9yIGV2ZW4gdW5tb3ZhYmxlCitlbnRpdGllcykuIEl0IGRvZXNuJ3QgcmVxdWlyZSByZXNlcnZhdGlvbiB0byBwcmV2ZW50IGh1Z2VwYWdlCithbGxvY2F0aW9uIGZhaWx1cmVzIHRvIGJlIG5vdGljZWFibGUgZnJvbSB1c2VybGFuZC4gSXQgYWxsb3dzIHBhZ2luZworYW5kIGFsbCBvdGhlciBhZHZhbmNlZCBWTSBmZWF0dXJlcyB0byBiZSBhdmFpbGFibGUgb24gdGhlCitodWdlcGFnZXMuIEl0IHJlcXVpcmVzIG5vIG1vZGlmaWNhdGlvbnMgZm9yIGFwcGxpY2F0aW9ucyB0byB0YWtlCithZHZhbnRhZ2Ugb2YgaXQuCisKK0FwcGxpY2F0aW9ucyBob3dldmVyIGNhbiBiZSBmdXJ0aGVyIG9wdGltaXplZCB0byB0YWtlIGFkdmFudGFnZSBvZgordGhpcyBmZWF0dXJlLCBsaWtlIGZvciBleGFtcGxlIHRoZXkndmUgYmVlbiBvcHRpbWl6ZWQgYmVmb3JlIHRvIGF2b2lkCithIGZsb29kIG9mIG1tYXAgc3lzdGVtIGNhbGxzIGZvciBldmVyeSBtYWxsb2MoNGspLiBPcHRpbWl6aW5nIHVzZXJsYW5kCitpcyBieSBmYXIgbm90IG1hbmRhdG9yeSBhbmQga2h1Z2VwYWdlZCBhbHJlYWR5IGNhbiB0YWtlIGNhcmUgb2YgbG9uZworbGl2ZWQgcGFnZSBhbGxvY2F0aW9ucyBldmVuIGZvciBodWdlcGFnZSB1bmF3YXJlIGFwcGxpY2F0aW9ucyB0aGF0CitkZWFscyB3aXRoIGxhcmdlIGFtb3VudHMgb2YgbWVtb3J5LgorCitJbiBjZXJ0YWluIGNhc2VzIHdoZW4gaHVnZXBhZ2VzIGFyZSBlbmFibGVkIHN5c3RlbSB3aWRlLCBhcHBsaWNhdGlvbgorbWF5IGVuZCB1cCBhbGxvY2F0aW5nIG1vcmUgbWVtb3J5IHJlc291cmNlcy4gQW4gYXBwbGljYXRpb24gbWF5IG1tYXAgYQorbGFyZ2UgcmVnaW9uIGJ1dCBvbmx5IHRvdWNoIDEgYnl0ZSBvZiBpdCwgaW4gdGhhdCBjYXNlIGEgMk0gcGFnZSBtaWdodAorYmUgYWxsb2NhdGVkIGluc3RlYWQgb2YgYSA0ayBwYWdlIGZvciBubyBnb29kLiBUaGlzIGlzIHdoeSBpdCdzCitwb3NzaWJsZSB0byBkaXNhYmxlIGh1Z2VwYWdlcyBzeXN0ZW0td2lkZSBhbmQgdG8gb25seSBoYXZlIHRoZW0gaW5zaWRlCitNQURWX0hVR0VQQUdFIG1hZHZpc2UgcmVnaW9ucy4KKworRW1iZWRkZWQgc3lzdGVtcyBzaG91bGQgZW5hYmxlIGh1Z2VwYWdlcyBvbmx5IGluc2lkZSBtYWR2aXNlIHJlZ2lvbnMKK3RvIGVsaW1pbmF0ZSBhbnkgcmlzayBvZiB3YXN0aW5nIGFueSBwcmVjaW91cyBieXRlIG9mIG1lbW9yeSBhbmQgdG8KK29ubHkgcnVuIGZhc3Rlci4KKworQXBwbGljYXRpb25zIHRoYXQgZ2V0cyBhIGxvdCBvZiBiZW5lZml0IGZyb20gaHVnZXBhZ2VzIGFuZCB0aGF0IGRvbid0CityaXNrIHRvIGxvc2UgbWVtb3J5IGJ5IHVzaW5nIGh1Z2VwYWdlcywgc2hvdWxkIHVzZQorbWFkdmlzZShNQURWX0hVR0VQQUdFKSBvbiB0aGVpciBjcml0aWNhbCBtbWFwcGVkIHJlZ2lvbnMuCisKKz09IHN5c2ZzID09CisKK1RyYW5zcGFyZW50IEh1Z2VwYWdlIFN1cHBvcnQgY2FuIGJlIGVudGlyZWx5IGRpc2FibGVkIChtb3N0bHkgZm9yCitkZWJ1Z2dpbmcgcHVycG9zZXMpIG9yIG9ubHkgZW5hYmxlZCBpbnNpZGUgTUFEVl9IVUdFUEFHRSByZWdpb25zICh0bworYXZvaWQgdGhlIHJpc2sgb2YgY29uc3VtaW5nIG1vcmUgbWVtb3J5IHJlc291cmNlcykgb3IgZW5hYmxlZCBzeXN0ZW0KK3dpZGUuIFRoaXMgY2FuIGJlIGFjaGlldmVkIHdpdGggb25lIG9mOgorCitlY2hvIGFsd2F5cyA+L3N5cy9rZXJuZWwvbW0vdHJhbnNwYXJlbnRfaHVnZXBhZ2UvZW5hYmxlZAorZWNobyBtYWR2aXNlID4vc3lzL2tlcm5lbC9tbS90cmFuc3BhcmVudF9odWdlcGFnZS9lbmFibGVkCitlY2hvIG5ldmVyID4vc3lzL2tlcm5lbC9tbS90cmFuc3BhcmVudF9odWdlcGFnZS9lbmFibGVkCisKK0l0J3MgYWxzbyBwb3NzaWJsZSB0byBsaW1pdCBkZWZyYWcgZWZmb3J0cyBpbiB0aGUgVk0gdG8gZ2VuZXJhdGUKK2h1Z2VwYWdlcyBpbiBjYXNlIHRoZXkncmUgbm90IGltbWVkaWF0ZWx5IGZyZWUgdG8gbWFkdmlzZSByZWdpb25zIG9yCit0byBuZXZlciB0cnkgdG8gZGVmcmFnIG1lbW9yeSBhbmQgc2ltcGx5IGZhbGxiYWNrIHRvIHJlZ3VsYXIgcGFnZXMKK3VubGVzcyBodWdlcGFnZXMgYXJlIGltbWVkaWF0ZWx5IGF2YWlsYWJsZS4gQ2xlYXJseSBpZiB3ZSBzcGVuZCBDUFUKK3RpbWUgdG8gZGVmcmFnIG1lbW9yeSwgd2Ugd291bGQgZXhwZWN0IHRvIGdhaW4gZXZlbiBtb3JlIGJ5IHRoZSBmYWN0Cit3ZSB1c2UgaHVnZXBhZ2VzIGxhdGVyIGluc3RlYWQgb2YgcmVndWxhciBwYWdlcy4gVGhpcyBpc24ndCBhbHdheXMKK2d1YXJhbnRlZWQsIGJ1dCBpdCBtYXkgYmUgbW9yZSBsaWtlbHkgaW4gY2FzZSB0aGUgYWxsb2NhdGlvbiBpcyBmb3IgYQorTUFEVl9IVUdFUEFHRSByZWdpb24uCisKK2VjaG8gYWx3YXlzID4vc3lzL2tlcm5lbC9tbS90cmFuc3BhcmVudF9odWdlcGFnZS9kZWZyYWcKK2VjaG8gbWFkdmlzZSA+L3N5cy9rZXJuZWwvbW0vdHJhbnNwYXJlbnRfaHVnZXBhZ2UvZGVmcmFnCitlY2hvIG5ldmVyID4vc3lzL2tlcm5lbC9tbS90cmFuc3BhcmVudF9odWdlcGFnZS9kZWZyYWcKKworQnkgZGVmYXVsdCBrZXJuZWwgdHJpZXMgdG8gdXNlIGh1Z2UgemVybyBwYWdlIG9uIHJlYWQgcGFnZSBmYXVsdC4KK0l0J3MgcG9zc2libGUgdG8gZGlzYWJsZSBodWdlIHplcm8gcGFnZSBieSB3cml0aW5nIDAgb3IgZW5hYmxlIGl0CitiYWNrIGJ5IHdyaXRpbmcgMToKKworZWNobyAwID4vc3lzL2tlcm5lbC9tbS90cmFuc3BhcmVudF9odWdlcGFnZS91c2VfemVyb19wYWdlCitlY2hvIDEgPi9zeXMva2VybmVsL21tL3RyYW5zcGFyZW50X2h1Z2VwYWdlL3VzZV96ZXJvX3BhZ2UKKwora2h1Z2VwYWdlZCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc3RhcnRlZCB3aGVuCit0cmFuc3BhcmVudF9odWdlcGFnZS9lbmFibGVkIGlzIHNldCB0byAiYWx3YXlzIiBvciAibWFkdmlzZSwgYW5kIGl0J2xsCitiZSBhdXRvbWF0aWNhbGx5IHNodXRkb3duIGlmIGl0J3Mgc2V0IHRvICJuZXZlciIuCisKK2todWdlcGFnZWQgcnVucyB1c3VhbGx5IGF0IGxvdyBmcmVxdWVuY3kgc28gd2hpbGUgb25lIG1heSBub3Qgd2FudCB0bworaW52b2tlIGRlZnJhZyBhbGdvcml0aG1zIHN5bmNocm9ub3VzbHkgZHVyaW5nIHRoZSBwYWdlIGZhdWx0cywgaXQKK3Nob3VsZCBiZSB3b3J0aCBpbnZva2luZyBkZWZyYWcgYXQgbGVhc3QgaW4ga2h1Z2VwYWdlZC4gSG93ZXZlciBpdCdzCithbHNvIHBvc3NpYmxlIHRvIGRpc2FibGUgZGVmcmFnIGluIGtodWdlcGFnZWQgYnkgd3JpdGluZyAwIG9yIGVuYWJsZQorZGVmcmFnIGluIGtodWdlcGFnZWQgYnkgd3JpdGluZyAxOgorCitlY2hvIDAgPi9zeXMva2VybmVsL21tL3RyYW5zcGFyZW50X2h1Z2VwYWdlL2todWdlcGFnZWQvZGVmcmFnCitlY2hvIDEgPi9zeXMva2VybmVsL21tL3RyYW5zcGFyZW50X2h1Z2VwYWdlL2todWdlcGFnZWQvZGVmcmFnCisKK1lvdSBjYW4gYWxzbyBjb250cm9sIGhvdyBtYW55IHBhZ2VzIGtodWdlcGFnZWQgc2hvdWxkIHNjYW4gYXQgZWFjaAorcGFzczoKKworL3N5cy9rZXJuZWwvbW0vdHJhbnNwYXJlbnRfaHVnZXBhZ2Uva2h1Z2VwYWdlZC9wYWdlc190b19zY2FuCisKK2FuZCBob3cgbWFueSBtaWxsaXNlY29uZHMgdG8gd2FpdCBpbiBraHVnZXBhZ2VkIGJldHdlZW4gZWFjaCBwYXNzICh5b3UKK2NhbiBzZXQgdGhpcyB0byAwIHRvIHJ1biBraHVnZXBhZ2VkIGF0IDEwMCUgdXRpbGl6YXRpb24gb2Ygb25lIGNvcmUpOgorCisvc3lzL2tlcm5lbC9tbS90cmFuc3BhcmVudF9odWdlcGFnZS9raHVnZXBhZ2VkL3NjYW5fc2xlZXBfbWlsbGlzZWNzCisKK2FuZCBob3cgbWFueSBtaWxsaXNlY29uZHMgdG8gd2FpdCBpbiBraHVnZXBhZ2VkIGlmIHRoZXJlJ3MgYW4gaHVnZXBhZ2UKK2FsbG9jYXRpb24gZmFpbHVyZSB0byB0aHJvdHRsZSB0aGUgbmV4dCBhbGxvY2F0aW9uIGF0dGVtcHQuCisKKy9zeXMva2VybmVsL21tL3RyYW5zcGFyZW50X2h1Z2VwYWdlL2todWdlcGFnZWQvYWxsb2Nfc2xlZXBfbWlsbGlzZWNzCisKK1RoZSBraHVnZXBhZ2VkIHByb2dyZXNzIGNhbiBiZSBzZWVuIGluIHRoZSBudW1iZXIgb2YgcGFnZXMgY29sbGFwc2VkOgorCisvc3lzL2tlcm5lbC9tbS90cmFuc3BhcmVudF9odWdlcGFnZS9raHVnZXBhZ2VkL3BhZ2VzX2NvbGxhcHNlZAorCitmb3IgZWFjaCBwYXNzOgorCisvc3lzL2tlcm5lbC9tbS90cmFuc3BhcmVudF9odWdlcGFnZS9raHVnZXBhZ2VkL2Z1bGxfc2NhbnMKKworbWF4X3B0ZXNfbm9uZSBzcGVjaWZpZXMgaG93IG1hbnkgZXh0cmEgc21hbGwgcGFnZXMgKHRoYXQgYXJlCitub3QgYWxyZWFkeSBtYXBwZWQpIGNhbiBiZSBhbGxvY2F0ZWQgd2hlbiBjb2xsYXBzaW5nIGEgZ3JvdXAKK29mIHNtYWxsIHBhZ2VzIGludG8gb25lIGxhcmdlIHBhZ2UuCisKKy9zeXMva2VybmVsL21tL3RyYW5zcGFyZW50X2h1Z2VwYWdlL2todWdlcGFnZWQvbWF4X3B0ZXNfbm9uZQorCitBIGhpZ2hlciB2YWx1ZSBsZWFkcyB0byB1c2UgYWRkaXRpb25hbCBtZW1vcnkgZm9yIHByb2dyYW1zLgorQSBsb3dlciB2YWx1ZSBsZWFkcyB0byBnYWluIGxlc3MgdGhwIHBlcmZvcm1hbmNlLiBWYWx1ZSBvZgorbWF4X3B0ZXNfbm9uZSBjYW4gd2FzdGUgY3B1IHRpbWUgdmVyeSBsaXR0bGUsIHlvdSBjYW4KK2lnbm9yZSBpdC4KKworbWF4X3B0ZXNfc3dhcCBzcGVjaWZpZXMgaG93IG1hbnkgcGFnZXMgY2FuIGJlIGJyb3VnaHQgaW4gZnJvbQorc3dhcCB3aGVuIGNvbGxhcHNpbmcgYSBncm91cCBvZiBwYWdlcyBpbnRvIGEgdHJhbnNwYXJlbnQgaHVnZSBwYWdlLgorCisvc3lzL2tlcm5lbC9tbS90cmFuc3BhcmVudF9odWdlcGFnZS9raHVnZXBhZ2VkL21heF9wdGVzX3N3YXAKKworQSBoaWdoZXIgdmFsdWUgY2FuIGNhdXNlIGV4Y2Vzc2l2ZSBzd2FwIElPIGFuZCB3YXN0ZQorbWVtb3J5LiBBIGxvd2VyIHZhbHVlIGNhbiBwcmV2ZW50IFRIUHMgZnJvbSBiZWluZworY29sbGFwc2VkLCByZXN1bHRpbmcgZmV3ZXIgcGFnZXMgYmVpbmcgY29sbGFwc2VkIGludG8KK1RIUHMsIGFuZCBsb3dlciBtZW1vcnkgYWNjZXNzIHBlcmZvcm1hbmNlLgorCis9PSBCb290IHBhcmFtZXRlciA9PQorCitZb3UgY2FuIGNoYW5nZSB0aGUgc3lzZnMgYm9vdCB0aW1lIGRlZmF1bHRzIG9mIFRyYW5zcGFyZW50IEh1Z2VwYWdlCitTdXBwb3J0IGJ5IHBhc3NpbmcgdGhlIHBhcmFtZXRlciAidHJhbnNwYXJlbnRfaHVnZXBhZ2U9YWx3YXlzIiBvcgorInRyYW5zcGFyZW50X2h1Z2VwYWdlPW1hZHZpc2UiIG9yICJ0cmFuc3BhcmVudF9odWdlcGFnZT1uZXZlciIKKyh3aXRob3V0ICIiKSB0byB0aGUga2VybmVsIGNvbW1hbmQgbGluZS4KKworPT0gTmVlZCBvZiBhcHBsaWNhdGlvbiByZXN0YXJ0ID09CisKK1RoZSB0cmFuc3BhcmVudF9odWdlcGFnZS9lbmFibGVkIHZhbHVlcyBvbmx5IGFmZmVjdCBmdXR1cmUKK2JlaGF2aW9yLiBTbyB0byBtYWtlIHRoZW0gZWZmZWN0aXZlIHlvdSBuZWVkIHRvIHJlc3RhcnQgYW55CithcHBsaWNhdGlvbiB0aGF0IGNvdWxkIGhhdmUgYmVlbiB1c2luZyBodWdlcGFnZXMuIFRoaXMgYWxzbyBhcHBsaWVzIHRvCit0aGUgcmVnaW9ucyByZWdpc3RlcmVkIGluIGtodWdlcGFnZWQuCisKKz09IE1vbml0b3JpbmcgdXNhZ2UgPT0KKworVGhlIG51bWJlciBvZiB0cmFuc3BhcmVudCBodWdlIHBhZ2VzIGN1cnJlbnRseSB1c2VkIGJ5IHRoZSBzeXN0ZW0gaXMKK2F2YWlsYWJsZSBieSByZWFkaW5nIHRoZSBBbm9uSHVnZVBhZ2VzIGZpZWxkIGluIC9wcm9jL21lbWluZm8uIFRvCitpZGVudGlmeSB3aGF0IGFwcGxpY2F0aW9ucyBhcmUgdXNpbmcgdHJhbnNwYXJlbnQgaHVnZSBwYWdlcywgaXQgaXMKK25lY2Vzc2FyeSB0byByZWFkIC9wcm9jL1BJRC9zbWFwcyBhbmQgY291bnQgdGhlIEFub25IdWdlUGFnZXMgZmllbGRzCitmb3IgZWFjaCBtYXBwaW5nLiBOb3RlIHRoYXQgcmVhZGluZyB0aGUgc21hcHMgZmlsZSBpcyBleHBlbnNpdmUgYW5kCityZWFkaW5nIGl0IGZyZXF1ZW50bHkgd2lsbCBpbmN1ciBvdmVyaGVhZC4KKworVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGNvdW50ZXJzIGluIC9wcm9jL3Ztc3RhdCB0aGF0IG1heSBiZSB1c2VkIHRvCittb25pdG9yIGhvdyBzdWNjZXNzZnVsbHkgdGhlIHN5c3RlbSBpcyBwcm92aWRpbmcgaHVnZSBwYWdlcyBmb3IgdXNlLgorCit0aHBfZmF1bHRfYWxsb2MgaXMgaW5jcmVtZW50ZWQgZXZlcnkgdGltZSBhIGh1Z2UgcGFnZSBpcyBzdWNjZXNzZnVsbHkKKwlhbGxvY2F0ZWQgdG8gaGFuZGxlIGEgcGFnZSBmYXVsdC4gVGhpcyBhcHBsaWVzIHRvIGJvdGggdGhlCisJZmlyc3QgdGltZSBhIHBhZ2UgaXMgZmF1bHRlZCBhbmQgZm9yIENPVyBmYXVsdHMuCisKK3RocF9jb2xsYXBzZV9hbGxvYyBpcyBpbmNyZW1lbnRlZCBieSBraHVnZXBhZ2VkIHdoZW4gaXQgaGFzIGZvdW5kCisJYSByYW5nZSBvZiBwYWdlcyB0byBjb2xsYXBzZSBpbnRvIG9uZSBodWdlIHBhZ2UgYW5kIGhhcworCXN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgYSBuZXcgaHVnZSBwYWdlIHRvIHN0b3JlIHRoZSBkYXRhLgorCit0aHBfZmF1bHRfZmFsbGJhY2sgaXMgaW5jcmVtZW50ZWQgaWYgYSBwYWdlIGZhdWx0IGZhaWxzIHRvIGFsbG9jYXRlCisJYSBodWdlIHBhZ2UgYW5kIGluc3RlYWQgZmFsbHMgYmFjayB0byB1c2luZyBzbWFsbCBwYWdlcy4KKwordGhwX2NvbGxhcHNlX2FsbG9jX2ZhaWxlZCBpcyBpbmNyZW1lbnRlZCBpZiBraHVnZXBhZ2VkIGZvdW5kIGEgcmFuZ2UKKwlvZiBwYWdlcyB0aGF0IHNob3VsZCBiZSBjb2xsYXBzZWQgaW50byBvbmUgaHVnZSBwYWdlIGJ1dCBmYWlsZWQKKwl0aGUgYWxsb2NhdGlvbi4KKwordGhwX3NwbGl0IGlzIGluY3JlbWVudGVkIGV2ZXJ5IHRpbWUgYSBodWdlIHBhZ2UgaXMgc3BsaXQgaW50byBiYXNlCisJcGFnZXMuIFRoaXMgY2FuIGhhcHBlbiBmb3IgYSB2YXJpZXR5IG9mIHJlYXNvbnMgYnV0IGEgY29tbW9uCisJcmVhc29uIGlzIHRoYXQgYSBodWdlIHBhZ2UgaXMgb2xkIGFuZCBpcyBiZWluZyByZWNsYWltZWQuCisKK3RocF96ZXJvX3BhZ2VfYWxsb2MgaXMgaW5jcmVtZW50ZWQgZXZlcnkgdGltZSBhIGh1Z2UgemVybyBwYWdlIGlzCisJc3VjY2Vzc2Z1bGx5IGFsbG9jYXRlZC4gSXQgaW5jbHVkZXMgYWxsb2NhdGlvbnMgd2hpY2ggd2hlcmUKKwlkcm9wcGVkIGR1ZSByYWNlIHdpdGggb3RoZXIgYWxsb2NhdGlvbi4gTm90ZSwgaXQgZG9lc24ndCBjb3VudAorCWV2ZXJ5IG1hcCBvZiB0aGUgaHVnZSB6ZXJvIHBhZ2UsIG9ubHkgaXRzIGFsbG9jYXRpb24uCisKK3RocF96ZXJvX3BhZ2VfYWxsb2NfZmFpbGVkIGlzIGluY3JlbWVudGVkIGlmIGtlcm5lbCBmYWlscyB0byBhbGxvY2F0ZQorCWh1Z2UgemVybyBwYWdlIGFuZCBmYWxscyBiYWNrIHRvIHVzaW5nIHNtYWxsIHBhZ2VzLgorCitBcyB0aGUgc3lzdGVtIGFnZXMsIGFsbG9jYXRpbmcgaHVnZSBwYWdlcyBtYXkgYmUgZXhwZW5zaXZlIGFzIHRoZQorc3lzdGVtIHVzZXMgbWVtb3J5IGNvbXBhY3Rpb24gdG8gY29weSBkYXRhIGFyb3VuZCBtZW1vcnkgdG8gZnJlZSBhCitodWdlIHBhZ2UgZm9yIHVzZS4gVGhlcmUgYXJlIHNvbWUgY291bnRlcnMgaW4gL3Byb2Mvdm1zdGF0IHRvIGhlbHAKK21vbml0b3IgdGhpcyBvdmVyaGVhZC4KKworY29tcGFjdF9zdGFsbCBpcyBpbmNyZW1lbnRlZCBldmVyeSB0aW1lIGEgcHJvY2VzcyBzdGFsbHMgdG8gcnVuCisJbWVtb3J5IGNvbXBhY3Rpb24gc28gdGhhdCBhIGh1Z2UgcGFnZSBpcyBmcmVlIGZvciB1c2UuCisKK2NvbXBhY3Rfc3VjY2VzcyBpcyBpbmNyZW1lbnRlZCBpZiB0aGUgc3lzdGVtIGNvbXBhY3RlZCBtZW1vcnkgYW5kCisJZnJlZWQgYSBodWdlIHBhZ2UgZm9yIHVzZS4KKworY29tcGFjdF9mYWlsIGlzIGluY3JlbWVudGVkIGlmIHRoZSBzeXN0ZW0gdHJpZXMgdG8gY29tcGFjdCBtZW1vcnkKKwlidXQgZmFpbGVkLgorCitjb21wYWN0X3BhZ2VzX21vdmVkIGlzIGluY3JlbWVudGVkIGVhY2ggdGltZSBhIHBhZ2UgaXMgbW92ZWQuIElmCisJdGhpcyB2YWx1ZSBpcyBpbmNyZWFzaW5nIHJhcGlkbHksIGl0IGltcGxpZXMgdGhhdCB0aGUgc3lzdGVtCisJaXMgY29weWluZyBhIGxvdCBvZiBkYXRhIHRvIHNhdGlzZnkgdGhlIGh1Z2UgcGFnZSBhbGxvY2F0aW9uLgorCUl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIGNvc3Qgb2YgY29weWluZyBleGNlZWRzIGFueSBzYXZpbmdzCisJZnJvbSByZWR1Y2VkIFRMQiBtaXNzZXMuCisKK2NvbXBhY3RfcGFnZW1pZ3JhdGVfZmFpbGVkIGlzIGluY3JlbWVudGVkIHdoZW4gdGhlIHVuZGVybHlpbmcgbWVjaGFuaXNtCisJZm9yIG1vdmluZyBhIHBhZ2UgZmFpbGVkLgorCitjb21wYWN0X2Jsb2Nrc19tb3ZlZCBpcyBpbmNyZW1lbnRlZCBlYWNoIHRpbWUgbWVtb3J5IGNvbXBhY3Rpb24gZXhhbWluZXMKKwlhIGh1Z2UgcGFnZSBhbGlnbmVkIHJhbmdlIG9mIHBhZ2VzLgorCitJdCBpcyBwb3NzaWJsZSB0byBlc3RhYmxpc2ggaG93IGxvbmcgdGhlIHN0YWxscyB3ZXJlIHVzaW5nIHRoZSBmdW5jdGlvbgordHJhY2VyIHRvIHJlY29yZCBob3cgbG9uZyB3YXMgc3BlbnQgaW4gX19hbGxvY19wYWdlc19ub2RlbWFzayBhbmQKK3VzaW5nIHRoZSBtbV9wYWdlX2FsbG9jIHRyYWNlcG9pbnQgdG8gaWRlbnRpZnkgd2hpY2ggYWxsb2NhdGlvbnMgd2VyZQorZm9yIGh1Z2UgcGFnZXMuCisKKz09IGdldF91c2VyX3BhZ2VzIGFuZCBmb2xsb3dfcGFnZSA9PQorCitnZXRfdXNlcl9wYWdlcyBhbmQgZm9sbG93X3BhZ2UgaWYgcnVuIG9uIGEgaHVnZXBhZ2UsIHdpbGwgcmV0dXJuIHRoZQoraGVhZCBvciB0YWlsIHBhZ2VzIGFzIHVzdWFsIChleGFjdGx5IGFzIHRoZXkgd291bGQgZG8gb24KK2h1Z2V0bGJmcykuIE1vc3QgZ3VwIHVzZXJzIHdpbGwgb25seSBjYXJlIGFib3V0IHRoZSBhY3R1YWwgcGh5c2ljYWwKK2FkZHJlc3Mgb2YgdGhlIHBhZ2UgYW5kIGl0cyB0ZW1wb3JhcnkgcGlubmluZyB0byByZWxlYXNlIGFmdGVyIHRoZSBJL08KK2lzIGNvbXBsZXRlLCBzbyB0aGV5IHdvbid0IGV2ZXIgbm90aWNlIHRoZSBmYWN0IHRoZSBwYWdlIGlzIGh1Z2UuIEJ1dAoraWYgYW55IGRyaXZlciBpcyBnb2luZyB0byBtYW5nbGUgb3ZlciB0aGUgcGFnZSBzdHJ1Y3R1cmUgb2YgdGhlIHRhaWwKK3BhZ2UgKGxpa2UgZm9yIGNoZWNraW5nIHBhZ2UtPm1hcHBpbmcgb3Igb3RoZXIgYml0cyB0aGF0IGFyZSByZWxldmFudAorZm9yIHRoZSBoZWFkIHBhZ2UgYW5kIG5vdCB0aGUgdGFpbCBwYWdlKSwgaXQgc2hvdWxkIGJlIHVwZGF0ZWQgdG8ganVtcAordG8gY2hlY2sgaGVhZCBwYWdlIGluc3RlYWQgKHdoaWxlIHNlcmlhbGl6aW5nIHByb3Blcmx5IGFnYWluc3QKK3NwbGl0X2h1Z2VfcGFnZSgpIHRvIGF2b2lkIHRoZSBoZWFkIGFuZCB0YWlsIHBhZ2VzIHRvIGRpc2FwcGVhciBmcm9tCit1bmRlciBpdCwgc2VlIHRoZSBmdXRleCBjb2RlIHRvIHNlZSBhbiBleGFtcGxlIG9mIHRoYXQsIGh1Z2V0bGJmcyBhbHNvCituZWVkZWQgc3BlY2lhbCBoYW5kbGluZyBpbiBmdXRleCBjb2RlIGZvciBzaW1pbGFyIHJlYXNvbnMpLgorCitOT1RFOiB0aGVzZSBhcmVuJ3QgbmV3IGNvbnN0cmFpbnRzIHRvIHRoZSBHVVAgQVBJLCBhbmQgdGhleSBtYXRjaCB0aGUKK3NhbWUgY29uc3RyYWlucyB0aGF0IGFwcGxpZXMgdG8gaHVnZXRsYmZzIHRvbywgc28gYW55IGRyaXZlciBjYXBhYmxlCitvZiBoYW5kbGluZyBHVVAgb24gaHVnZXRsYmZzIHdpbGwgYWxzbyB3b3JrIGZpbmUgb24gdHJhbnNwYXJlbnQKK2h1Z2VwYWdlIGJhY2tlZCBtYXBwaW5ncy4KKworSW4gY2FzZSB5b3UgY2FuJ3QgaGFuZGxlIGNvbXBvdW5kIHBhZ2VzIGlmIHRoZXkncmUgcmV0dXJuZWQgYnkKK2ZvbGxvd19wYWdlLCB0aGUgRk9MTF9TUExJVCBiaXQgY2FuIGJlIHNwZWNpZmllZCBhcyBwYXJhbWV0ZXIgdG8KK2ZvbGxvd19wYWdlLCBzbyB0aGF0IGl0IHdpbGwgc3BsaXQgdGhlIGh1Z2VwYWdlcyBiZWZvcmUgcmV0dXJuaW5nCit0aGVtLiBNaWdyYXRpb24gZm9yIGV4YW1wbGUgcGFzc2VzIEZPTExfU1BMSVQgYXMgcGFyYW1ldGVyIHRvCitmb2xsb3dfcGFnZSBiZWNhdXNlIGl0J3Mgbm90IGh1Z2VwYWdlIGF3YXJlIGFuZCBpbiBmYWN0IGl0IGNhbid0IHdvcmsKK2F0IGFsbCBvbiBodWdldGxiZnMgKGJ1dCBpdCBpbnN0ZWFkIHdvcmtzIGZpbmUgb24gdHJhbnNwYXJlbnQKK2h1Z2VwYWdlcyB0aGFua3MgdG8gRk9MTF9TUExJVCkuIG1pZ3JhdGlvbiBzaW1wbHkgY2FuJ3QgZGVhbCB3aXRoCitodWdlcGFnZXMgYmVpbmcgcmV0dXJuZWQgKGFzIGl0J3Mgbm90IG9ubHkgY2hlY2tpbmcgdGhlIHBmbiBvZiB0aGUKK3BhZ2UgYW5kIHBpbm5pbmcgaXQgZHVyaW5nIHRoZSBjb3B5IGJ1dCBpdCBwcmV0ZW5kcyB0byBtaWdyYXRlIHRoZQorbWVtb3J5IGluIHJlZ3VsYXIgcGFnZSBzaXplcyBhbmQgd2l0aCByZWd1bGFyIHB0ZS9wbWQgbWFwcGluZ3MpLgorCis9PSBPcHRpbWl6aW5nIHRoZSBhcHBsaWNhdGlvbnMgPT0KKworVG8gYmUgZ3VhcmFudGVlZCB0aGF0IHRoZSBrZXJuZWwgd2lsbCBtYXAgYSAyTSBwYWdlIGltbWVkaWF0ZWx5IGluIGFueQorbWVtb3J5IHJlZ2lvbiwgdGhlIG1tYXAgcmVnaW9uIGhhcyB0byBiZSBodWdlcGFnZSBuYXR1cmFsbHkKK2FsaWduZWQuIHBvc2l4X21lbWFsaWduKCkgY2FuIHByb3ZpZGUgdGhhdCBndWFyYW50ZWUuCisKKz09IEh1Z2V0bGJmcyA9PQorCitZb3UgY2FuIHVzZSBodWdldGxiZnMgb24gYSBrZXJuZWwgdGhhdCBoYXMgdHJhbnNwYXJlbnQgaHVnZXBhZ2UKK3N1cHBvcnQgZW5hYmxlZCBqdXN0IGZpbmUgYXMgYWx3YXlzLiBObyBkaWZmZXJlbmNlIGNhbiBiZSBub3RlZCBpbgoraHVnZXRsYmZzIG90aGVyIHRoYW4gdGhlcmUgd2lsbCBiZSBsZXNzIG92ZXJhbGwgZnJhZ21lbnRhdGlvbi4gQWxsCit1c3VhbCBmZWF0dXJlcyBiZWxvbmdpbmcgdG8gaHVnZXRsYmZzIGFyZSBwcmVzZXJ2ZWQgYW5kCit1bmFmZmVjdGVkLiBsaWJodWdldGxiZnMgd2lsbCBhbHNvIHdvcmsgZmluZSBhcyB1c3VhbC4KKworPT0gR3JhY2VmdWwgZmFsbGJhY2sgPT0KKworQ29kZSB3YWxraW5nIHBhZ2V0YWJsZXMgYnV0IHVud2FyZSBhYm91dCBodWdlIHBtZHMgY2FuIHNpbXBseSBjYWxsCitzcGxpdF9odWdlX3BhZ2VfcG1kKHZtYSwgYWRkciwgcG1kKSB3aGVyZSB0aGUgcG1kIGlzIHRoZSBvbmUgcmV0dXJuZWQgYnkKK3BtZF9vZmZzZXQuIEl0J3MgdHJpdmlhbCB0byBtYWtlIHRoZSBjb2RlIHRyYW5zcGFyZW50IGh1Z2VwYWdlIGF3YXJlCitieSBqdXN0IGdyZXBwaW5nIGZvciAicG1kX29mZnNldCIgYW5kIGFkZGluZyBzcGxpdF9odWdlX3BhZ2VfcG1kIHdoZXJlCittaXNzaW5nIGFmdGVyIHBtZF9vZmZzZXQgcmV0dXJucyB0aGUgcG1kLiBUaGFua3MgdG8gdGhlIGdyYWNlZnVsCitmYWxsYmFjayBkZXNpZ24sIHdpdGggYSBvbmUgbGluZXIgY2hhbmdlLCB5b3UgY2FuIGF2b2lkIHRvIHdyaXRlCitodW5kcmVkIGlmIG5vdCB0aG91c2FuZCBvZiBsaW5lcyBvZiBjb21wbGV4IGNvZGUgdG8gbWFrZSB5b3VyIGNvZGUKK2h1Z2VwYWdlIGF3YXJlLgorCitJZiB5b3UncmUgbm90IHdhbGtpbmcgcGFnZXRhYmxlcyBidXQgeW91IHJ1biBpbnRvIGEgcGh5c2ljYWwgaHVnZXBhZ2UKK2J1dCB5b3UgY2FuJ3QgaGFuZGxlIGl0IG5hdGl2ZWx5IGluIHlvdXIgY29kZSwgeW91IGNhbiBzcGxpdCBpdCBieQorY2FsbGluZyBzcGxpdF9odWdlX3BhZ2UocGFnZSkuIFRoaXMgaXMgd2hhdCB0aGUgTGludXggVk0gZG9lcyBiZWZvcmUKK2l0IHRyaWVzIHRvIHN3YXBvdXQgdGhlIGh1Z2VwYWdlIGZvciBleGFtcGxlLgorCitFeGFtcGxlIHRvIG1ha2UgbXJlbWFwLmMgdHJhbnNwYXJlbnQgaHVnZXBhZ2UgYXdhcmUgd2l0aCBhIG9uZSBsaW5lcgorY2hhbmdlOgorCitkaWZmIC0tZ2l0IGEvbW0vbXJlbWFwLmMgYi9tbS9tcmVtYXAuYworLS0tIGEvbW0vbXJlbWFwLmMKKysrKyBiL21tL21yZW1hcC5jCitAQCAtNDEsNiArNDEsNyBAQCBzdGF0aWMgcG1kX3QgKmdldF9vbGRfcG1kKHN0cnVjdCBtbV9zdHJ1CisJCXJldHVybiBOVUxMOworCisJcG1kID0gcG1kX29mZnNldChwdWQsIGFkZHIpOworKwlzcGxpdF9odWdlX3BhZ2VfcG1kKHZtYSwgYWRkciwgcG1kKTsKKwlpZiAocG1kX25vbmVfb3JfY2xlYXJfYmFkKHBtZCkpCisJCXJldHVybiBOVUxMOworCis9PSBMb2NraW5nIGluIGh1Z2VwYWdlIGF3YXJlIGNvZGUgPT0KKworV2Ugd2FudCBhcyBtdWNoIGNvZGUgYXMgcG9zc2libGUgaHVnZXBhZ2UgYXdhcmUsIGFzIGNhbGxpbmcKK3NwbGl0X2h1Z2VfcGFnZSgpIG9yIHNwbGl0X2h1Z2VfcGFnZV9wbWQoKSBoYXMgYSBjb3N0LgorCitUbyBtYWtlIHBhZ2V0YWJsZSB3YWxrcyBodWdlIHBtZCBhd2FyZSwgYWxsIHlvdSBuZWVkIHRvIGRvIGlzIHRvIGNhbGwKK3BtZF90cmFuc19odWdlKCkgb24gdGhlIHBtZCByZXR1cm5lZCBieSBwbWRfb2Zmc2V0LiBZb3UgbXVzdCBob2xkIHRoZQorbW1hcF9zZW0gaW4gcmVhZCAob3Igd3JpdGUpIG1vZGUgdG8gYmUgc3VyZSBhbiBodWdlIHBtZCBjYW5ub3QgYmUKK2NyZWF0ZWQgZnJvbSB1bmRlciB5b3UgYnkga2h1Z2VwYWdlZCAoa2h1Z2VwYWdlZCBjb2xsYXBzZV9odWdlX3BhZ2UKK3Rha2VzIHRoZSBtbWFwX3NlbSBpbiB3cml0ZSBtb2RlIGluIGFkZGl0aW9uIHRvIHRoZSBhbm9uX3ZtYSBsb2NrKS4gSWYKK3BtZF90cmFuc19odWdlIHJldHVybnMgZmFsc2UsIHlvdSBqdXN0IGZhbGxiYWNrIGluIHRoZSBvbGQgY29kZQorcGF0aHMuIElmIGluc3RlYWQgcG1kX3RyYW5zX2h1Z2UgcmV0dXJucyB0cnVlLCB5b3UgaGF2ZSB0byB0YWtlIHRoZQorbW0tPnBhZ2VfdGFibGVfbG9jayBhbmQgcmUtcnVuIHBtZF90cmFuc19odWdlLiBUYWtpbmcgdGhlCitwYWdlX3RhYmxlX2xvY2sgd2lsbCBwcmV2ZW50IHRoZSBodWdlIHBtZCB0byBiZSBjb252ZXJ0ZWQgaW50byBhCityZWd1bGFyIHBtZCBmcm9tIHVuZGVyIHlvdSAoc3BsaXRfaHVnZV9wYWdlIGNhbiBydW4gaW4gcGFyYWxsZWwgdG8gdGhlCitwYWdldGFibGUgd2FsaykuIElmIHRoZSBzZWNvbmQgcG1kX3RyYW5zX2h1Z2UgcmV0dXJucyBmYWxzZSwgeW91CitzaG91bGQganVzdCBkcm9wIHRoZSBwYWdlX3RhYmxlX2xvY2sgYW5kIGZhbGxiYWNrIHRvIHRoZSBvbGQgY29kZSBhcworYmVmb3JlLiBPdGhlcndpc2UgeW91IHNob3VsZCBydW4gcG1kX3RyYW5zX3NwbGl0dGluZyBvbiB0aGUgcG1kLiBJbgorY2FzZSBwbWRfdHJhbnNfc3BsaXR0aW5nIHJldHVybnMgdHJ1ZSwgaXQgbWVhbnMgc3BsaXRfaHVnZV9wYWdlIGlzCithbHJlYWR5IGluIHRoZSBtaWRkbGUgb2Ygc3BsaXR0aW5nIHRoZSBwYWdlLiBTbyBpZiBwbWRfdHJhbnNfc3BsaXR0aW5nCityZXR1cm5zIHRydWUgaXQncyBlbm91Z2ggdG8gZHJvcCB0aGUgcGFnZV90YWJsZV9sb2NrIGFuZCBjYWxsCit3YWl0X3NwbGl0X2h1Z2VfcGFnZSBhbmQgdGhlbiBmYWxsYmFjayB0aGUgb2xkIGNvZGUgcGF0aHMuIFlvdSBhcmUKK2d1YXJhbnRlZWQgYnkgdGhlIHRpbWUgd2FpdF9zcGxpdF9odWdlX3BhZ2UgcmV0dXJucywgdGhlIHBtZCBpc24ndAoraHVnZSBhbnltb3JlLiBJZiBwbWRfdHJhbnNfc3BsaXR0aW5nIHJldHVybnMgZmFsc2UsIHlvdSBjYW4gcHJvY2VlZCB0bworcHJvY2VzcyB0aGUgaHVnZSBwbWQgYW5kIHRoZSBodWdlcGFnZSBuYXRpdmVseS4gT25jZSBmaW5pc2hlZCB5b3UgY2FuCitkcm9wIHRoZSBwYWdlX3RhYmxlX2xvY2suCisKKz09IGNvbXBvdW5kX2xvY2ssIGdldF91c2VyX3BhZ2VzIGFuZCBwdXRfcGFnZSA9PQorCitzcGxpdF9odWdlX3BhZ2UgaW50ZXJuYWxseSBoYXMgdG8gZGlzdHJpYnV0ZSB0aGUgcmVmY291bnRzIGluIHRoZSBoZWFkCitwYWdlIHRvIHRoZSB0YWlsIHBhZ2VzIGJlZm9yZSBjbGVhcmluZyBhbGwgUEdfaGVhZC90YWlsIGJpdHMgZnJvbSB0aGUKK3BhZ2Ugc3RydWN0dXJlcy4gSXQgY2FuIGRvIHRoYXQgZWFzaWx5IGZvciByZWZjb3VudHMgdGFrZW4gYnkgaHVnZSBwbWQKK21hcHBpbmdzLiBCdXQgdGhlIEdVSSBBUEkgYXMgY3JlYXRlZCBieSBodWdldGxiZnMgKHRoYXQgcmV0dXJucyBoZWFkCithbmQgdGFpbCBwYWdlcyBpZiBydW5uaW5nIGdldF91c2VyX3BhZ2VzIG9uIGFuIGFkZHJlc3MgYmFja2VkIGJ5IGFueQoraHVnZXBhZ2UpLCByZXF1aXJlcyB0aGUgcmVmY291bnQgdG8gYmUgYWNjb3VudGVkIG9uIHRoZSB0YWlsIHBhZ2VzIGFuZAorbm90IG9ubHkgaW4gdGhlIGhlYWQgcGFnZXMsIGlmIHdlIHdhbnQgdG8gYmUgYWJsZSB0byBydW4KK3NwbGl0X2h1Z2VfcGFnZSB3aGlsZSB0aGVyZSBhcmUgZ3VwIHBpbnMgZXN0YWJsaXNoZWQgb24gYW55IHRhaWwKK3BhZ2UuIEZhaWx1cmUgdG8gYmUgYWJsZSB0byBydW4gc3BsaXRfaHVnZV9wYWdlIGlmIHRoZXJlJ3MgYW55IGd1cCBwaW4KK29uIGFueSB0YWlsIHBhZ2UsIHdvdWxkIG1lYW4gaGF2aW5nIHRvIHNwbGl0IGFsbCBodWdlcGFnZXMgdXBmcm9udCBpbgorZ2V0X3VzZXJfcGFnZXMgd2hpY2ggaXMgdW5hY2NlcHRhYmxlIGFzIHRvbyBtYW55IGd1cCB1c2VycyBhcmUKK3BlcmZvcm1hbmNlIGNyaXRpY2FsIGFuZCB0aGV5IG11c3Qgd29yayBuYXRpdmVseSBvbiBodWdlcGFnZXMgbGlrZQordGhleSB3b3JrIG5hdGl2ZWx5IG9uIGh1Z2V0bGJmcyBhbHJlYWR5IChodWdldGxiZnMgaXMgc2ltcGxlciBiZWNhdXNlCitodWdldGxiZnMgcGFnZXMgY2Fubm90IGJlIHNwbGl0IHNvIHRoZXJlIHdvdWxkbid0IGJlIHJlcXVpcmVtZW50IG9mCithY2NvdW50aW5nIHRoZSBwaW5zIG9uIHRoZSB0YWlsIHBhZ2VzIGZvciBodWdldGxiZnMpLiBJZiB3ZSB3b3VsZG4ndAorYWNjb3VudCB0aGUgZ3VwIHJlZmNvdW50cyBvbiB0aGUgdGFpbCBwYWdlcyBkdXJpbmcgZ3VwLCB3ZSB3b24ndCBrbm93Cithbnltb3JlIHdoaWNoIHRhaWwgcGFnZSBpcyBwaW5uZWQgYnkgZ3VwIGFuZCB3aGljaCBpcyBub3Qgd2hpbGUgd2UgcnVuCitzcGxpdF9odWdlX3BhZ2UuIEJ1dCB3ZSBzdGlsbCBoYXZlIHRvIGFkZCB0aGUgZ3VwIHBpbiB0byB0aGUgaGVhZCBwYWdlCit0b28sIHRvIGtub3cgd2hlbiB3ZSBjYW4gZnJlZSB0aGUgY29tcG91bmQgcGFnZSBpbiBjYXNlIGl0J3MgbmV2ZXIKK3NwbGl0IGR1cmluZyBpdHMgbGlmZXRpbWUuIFRoYXQgcmVxdWlyZXMgY2hhbmdpbmcgbm90IGp1c3QKK2dldF9wYWdlLCBidXQgcHV0X3BhZ2UgYXMgd2VsbCBzbyB0aGF0IHdoZW4gcHV0X3BhZ2UgcnVucyBvbiBhIHRhaWwKK3BhZ2UgKGFuZCBvbmx5IG9uIGEgdGFpbCBwYWdlKSBpdCB3aWxsIGZpbmQgaXRzIHJlc3BlY3RpdmUgaGVhZCBwYWdlLAorYW5kIHRoZW4gaXQgd2lsbCBkZWNyZWFzZSB0aGUgaGVhZCBwYWdlIHJlZmNvdW50IGluIGFkZGl0aW9uIHRvIHRoZQordGFpbCBwYWdlIHJlZmNvdW50LiBUbyBvYnRhaW4gYSBoZWFkIHBhZ2UgcmVsaWFibHkgYW5kIHRvIGRlY3JlYXNlIGl0cworcmVmY291bnQgd2l0aG91dCByYWNlIGNvbmRpdGlvbnMsIHB1dF9wYWdlIGhhcyB0byBzZXJpYWxpemUgYWdhaW5zdAorX19zcGxpdF9odWdlX3BhZ2VfcmVmY291bnQgdXNpbmcgYSBzcGVjaWFsIHBlci1wYWdlIGxvY2sgY2FsbGVkCitjb21wb3VuZF9sb2NrLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92bS91bmV2aWN0YWJsZS1scnUudHh0IGIvRG9jdW1lbnRhdGlvbi92bS91bmV2aWN0YWJsZS1scnUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhM2I1MjcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZtL3VuZXZpY3RhYmxlLWxydS50eHQKQEAgLTAsMCArMSw2MTIgQEAKKwkJCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCQkJVU5FVklDVEFCTEUgTFJVIElORlJBU1RSVUNUVVJFCisJCQk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworPT09PT09PT0KK0NPTlRFTlRTCis9PT09PT09PQorCisgKCopIFRoZSBVbmV2aWN0YWJsZSBMUlUKKworICAgICAtIFRoZSB1bmV2aWN0YWJsZSBwYWdlIGxpc3QuCisgICAgIC0gTWVtb3J5IGNvbnRyb2wgZ3JvdXAgaW50ZXJhY3Rpb24uCisgICAgIC0gTWFya2luZyBhZGRyZXNzIHNwYWNlcyB1bmV2aWN0YWJsZS4KKyAgICAgLSBEZXRlY3RpbmcgVW5ldmljdGFibGUgUGFnZXMuCisgICAgIC0gdm1zY2FuJ3MgaGFuZGxpbmcgb2YgdW5ldmljdGFibGUgcGFnZXMuCisKKyAoKikgbWxvY2soKSdkIHBhZ2VzLgorCisgICAgIC0gSGlzdG9yeS4KKyAgICAgLSBCYXNpYyBtYW5hZ2VtZW50LgorICAgICAtIG1sb2NrKCkvbWxvY2thbGwoKSBzeXN0ZW0gY2FsbCBoYW5kbGluZy4KKyAgICAgLSBGaWx0ZXJpbmcgc3BlY2lhbCB2bWFzLgorICAgICAtIG11bmxvY2soKS9tdW5sb2NrYWxsKCkgc3lzdGVtIGNhbGwgaGFuZGxpbmcuCisgICAgIC0gTWlncmF0aW5nIG1sb2NrZWQgcGFnZXMuCisgICAgIC0gQ29tcGFjdGluZyBtbG9ja2VkIHBhZ2VzLgorICAgICAtIG1tYXAoTUFQX0xPQ0tFRCkgc3lzdGVtIGNhbGwgaGFuZGxpbmcuCisgICAgIC0gbXVubWFwKCkvZXhpdCgpL2V4ZWMoKSBzeXN0ZW0gY2FsbCBoYW5kbGluZy4KKyAgICAgLSB0cnlfdG9fdW5tYXAoKS4KKyAgICAgLSB0cnlfdG9fbXVubG9jaygpIHJldmVyc2UgbWFwIHNjYW4uCisgICAgIC0gUGFnZSByZWNsYWltIGluIHNocmlua18qX2xpc3QoKS4KKworCis9PT09PT09PT09PT0KK0lOVFJPRFVDVElPTgorPT09PT09PT09PT09CisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBMaW51eCBtZW1vcnkgbWFuYWdlcidzICJVbmV2aWN0YWJsZSBMUlUiCitpbmZyYXN0cnVjdHVyZSBhbmQgdGhlIHVzZSBvZiB0aGlzIHRvIG1hbmFnZSBzZXZlcmFsIHR5cGVzIG9mICJ1bmV2aWN0YWJsZSIKK3BhZ2VzLgorCitUaGUgZG9jdW1lbnQgYXR0ZW1wdHMgdG8gcHJvdmlkZSB0aGUgb3ZlcmFsbCByYXRpb25hbGUgYmVoaW5kIHRoaXMgbWVjaGFuaXNtCithbmQgdGhlIHJhdGlvbmFsZSBmb3Igc29tZSBvZiB0aGUgZGVzaWduIGRlY2lzaW9ucyB0aGF0IGRyb3ZlIHRoZQoraW1wbGVtZW50YXRpb24uICBUaGUgbGF0dGVyIGRlc2lnbiByYXRpb25hbGUgaXMgZGlzY3Vzc2VkIGluIHRoZSBjb250ZXh0IG9mIGFuCitpbXBsZW1lbnRhdGlvbiBkZXNjcmlwdGlvbi4gIEFkbWl0dGVkbHksIG9uZSBjYW4gb2J0YWluIHRoZSBpbXBsZW1lbnRhdGlvbgorZGV0YWlscyAtIHRoZSAid2hhdCBkb2VzIGl0IGRvPyIgLSBieSByZWFkaW5nIHRoZSBjb2RlLiAgT25lIGhvcGVzIHRoYXQgdGhlCitkZXNjcmlwdGlvbnMgYmVsb3cgYWRkIHZhbHVlIGJ5IHByb3ZpZGUgdGhlIGFuc3dlciB0byAid2h5IGRvZXMgaXQgZG8gdGhhdD8iLgorCisKKz09PT09PT09PT09PT09PT09PT0KK1RIRSBVTkVWSUNUQUJMRSBMUlUKKz09PT09PT09PT09PT09PT09PT0KKworVGhlIFVuZXZpY3RhYmxlIExSVSBmYWNpbGl0eSBhZGRzIGFuIGFkZGl0aW9uYWwgTFJVIGxpc3QgdG8gdHJhY2sgdW5ldmljdGFibGUKK3BhZ2VzIGFuZCB0byBoaWRlIHRoZXNlIHBhZ2VzIGZyb20gdm1zY2FuLiAgVGhpcyBtZWNoYW5pc20gaXMgYmFzZWQgb24gYSBwYXRjaAorYnkgTGFycnkgV29vZG1hbiBvZiBSZWQgSGF0IHRvIGFkZHJlc3Mgc2V2ZXJhbCBzY2FsYWJpbGl0eSBwcm9ibGVtcyB3aXRoIHBhZ2UKK3JlY2xhaW0gaW4gTGludXguICBUaGUgcHJvYmxlbXMgaGF2ZSBiZWVuIG9ic2VydmVkIGF0IGN1c3RvbWVyIHNpdGVzIG9uIGxhcmdlCittZW1vcnkgeDg2XzY0IHN5c3RlbXMuCisKK1RvIGlsbHVzdHJhdGUgdGhpcyB3aXRoIGFuIGV4YW1wbGUsIGEgbm9uLU5VTUEgeDg2XzY0IHBsYXRmb3JtIHdpdGggMTI4R0Igb2YKK21haW4gbWVtb3J5IHdpbGwgaGF2ZSBvdmVyIDMyIG1pbGxpb24gNGsgcGFnZXMgaW4gYSBzaW5nbGUgem9uZS4gIFdoZW4gYSBsYXJnZQorZnJhY3Rpb24gb2YgdGhlc2UgcGFnZXMgYXJlIG5vdCBldmljdGFibGUgZm9yIGFueSByZWFzb24gW3NlZSBiZWxvd10sIHZtc2Nhbgord2lsbCBzcGVuZCBhIGxvdCBvZiB0aW1lIHNjYW5uaW5nIHRoZSBMUlUgbGlzdHMgbG9va2luZyBmb3IgdGhlIHNtYWxsIGZyYWN0aW9uCitvZiBwYWdlcyB0aGF0IGFyZSBldmljdGFibGUuICBUaGlzIGNhbiByZXN1bHQgaW4gYSBzaXR1YXRpb24gd2hlcmUgYWxsIENQVXMgYXJlCitzcGVuZGluZyAxMDAlIG9mIHRoZWlyIHRpbWUgaW4gdm1zY2FuIGZvciBob3VycyBvciBkYXlzIG9uIGVuZCwgd2l0aCB0aGUgc3lzdGVtCitjb21wbGV0ZWx5IHVucmVzcG9uc2l2ZS4KKworVGhlIHVuZXZpY3RhYmxlIGxpc3QgYWRkcmVzc2VzIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyBvZiB1bmV2aWN0YWJsZSBwYWdlczoKKworICgqKSBUaG9zZSBvd25lZCBieSByYW1mcy4KKworICgqKSBUaG9zZSBtYXBwZWQgaW50byBTSE1fTE9DSydkIHNoYXJlZCBtZW1vcnkgcmVnaW9ucy4KKworICgqKSBUaG9zZSBtYXBwZWQgaW50byBWTV9MT0NLRUQgW21sb2NrKCllZF0gVk1Bcy4KKworVGhlIGluZnJhc3RydWN0dXJlIG1heSBhbHNvIGJlIGFibGUgdG8gaGFuZGxlIG90aGVyIGNvbmRpdGlvbnMgdGhhdCBtYWtlIHBhZ2VzCit1bmV2aWN0YWJsZSwgZWl0aGVyIGJ5IGRlZmluaXRpb24gb3IgYnkgY2lyY3Vtc3RhbmNlLCBpbiB0aGUgZnV0dXJlLgorCisKK1RIRSBVTkVWSUNUQUJMRSBQQUdFIExJU1QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIFVuZXZpY3RhYmxlIExSVSBpbmZyYXN0cnVjdHVyZSBjb25zaXN0cyBvZiBhbiBhZGRpdGlvbmFsLCBwZXItem9uZSwgTFJVIGxpc3QKK2NhbGxlZCB0aGUgInVuZXZpY3RhYmxlIiBsaXN0IGFuZCBhbiBhc3NvY2lhdGVkIHBhZ2UgZmxhZywgUEdfdW5ldmljdGFibGUsIHRvCitpbmRpY2F0ZSB0aGF0IHRoZSBwYWdlIGlzIGJlaW5nIG1hbmFnZWQgb24gdGhlIHVuZXZpY3RhYmxlIGxpc3QuCisKK1RoZSBQR191bmV2aWN0YWJsZSBmbGFnIGlzIGFuYWxvZ291cyB0bywgYW5kIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoLCB0aGUKK1BHX2FjdGl2ZSBmbGFnIGluIHRoYXQgaXQgaW5kaWNhdGVzIG9uIHdoaWNoIExSVSBsaXN0IGEgcGFnZSByZXNpZGVzIHdoZW4KK1BHX2xydSBpcyBzZXQuCisKK1RoZSBVbmV2aWN0YWJsZSBMUlUgaW5mcmFzdHJ1Y3R1cmUgbWFpbnRhaW5zIHVuZXZpY3RhYmxlIHBhZ2VzIG9uIGFuIGFkZGl0aW9uYWwKK0xSVSBsaXN0IGZvciBhIGZldyByZWFzb25zOgorCisgKDEpIFdlIGdldCB0byAidHJlYXQgdW5ldmljdGFibGUgcGFnZXMganVzdCBsaWtlIHdlIHRyZWF0IG90aGVyIHBhZ2VzIGluIHRoZQorICAgICBzeXN0ZW0gLSB3aGljaCBtZWFucyB3ZSBnZXQgdG8gdXNlIHRoZSBzYW1lIGNvZGUgdG8gbWFuaXB1bGF0ZSB0aGVtLCB0aGUKKyAgICAgc2FtZSBjb2RlIHRvIGlzb2xhdGUgdGhlbSAoZm9yIG1pZ3JhdGUsIGV0Yy4pLCB0aGUgc2FtZSBjb2RlIHRvIGtlZXAgdHJhY2sKKyAgICAgb2YgdGhlIHN0YXRpc3RpY3MsIGV0Yy4uLiIgW1JpayB2YW4gUmllbF0KKworICgyKSBXZSB3YW50IHRvIGJlIGFibGUgdG8gbWlncmF0ZSB1bmV2aWN0YWJsZSBwYWdlcyBiZXR3ZWVuIG5vZGVzIGZvciBtZW1vcnkKKyAgICAgZGVmcmFnbWVudGF0aW9uLCB3b3JrbG9hZCBtYW5hZ2VtZW50IGFuZCBtZW1vcnkgaG90cGx1Zy4gIFRoZSBsaW51eCBrZXJuZWwKKyAgICAgY2FuIG9ubHkgbWlncmF0ZSBwYWdlcyB0aGF0IGl0IGNhbiBzdWNjZXNzZnVsbHkgaXNvbGF0ZSBmcm9tIHRoZSBMUlUKKyAgICAgbGlzdHMuICBJZiB3ZSB3ZXJlIHRvIG1haW50YWluIHBhZ2VzIGVsc2V3aGVyZSB0aGFuIG9uIGFuIExSVS1saWtlIGxpc3QsCisgICAgIHdoZXJlIHRoZXkgY2FuIGJlIGZvdW5kIGJ5IGlzb2xhdGVfbHJ1X3BhZ2UoKSwgd2Ugd291bGQgcHJldmVudCB0aGVpcgorICAgICBtaWdyYXRpb24sIHVubGVzcyB3ZSByZXdvcmtlZCBtaWdyYXRpb24gY29kZSB0byBmaW5kIHRoZSB1bmV2aWN0YWJsZSBwYWdlcworICAgICBpdHNlbGYuCisKKworVGhlIHVuZXZpY3RhYmxlIGxpc3QgZG9lcyBub3QgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGZpbGUtYmFja2VkIGFuZCBhbm9ueW1vdXMsCitzd2FwLWJhY2tlZCBwYWdlcy4gIFRoaXMgZGlmZmVyZW50aWF0aW9uIGlzIG9ubHkgaW1wb3J0YW50IHdoaWxlIHRoZSBwYWdlcyBhcmUsCitpbiBmYWN0LCBldmljdGFibGUuCisKK1RoZSB1bmV2aWN0YWJsZSBsaXN0IGJlbmVmaXRzIGZyb20gdGhlICJhcnJheWlmaWNhdGlvbiIgb2YgdGhlIHBlci16b25lIExSVQorbGlzdHMgYW5kIHN0YXRpc3RpY3Mgb3JpZ2luYWxseSBwcm9wb3NlZCBhbmQgcG9zdGVkIGJ5IENocmlzdG9waCBMYW1ldGVyLgorCitUaGUgdW5ldmljdGFibGUgbGlzdCBkb2VzIG5vdCB1c2UgdGhlIExSVSBwYWdldmVjIG1lY2hhbmlzbS4gUmF0aGVyLAordW5ldmljdGFibGUgcGFnZXMgYXJlIHBsYWNlZCBkaXJlY3RseSBvbiB0aGUgcGFnZSdzIHpvbmUncyB1bmV2aWN0YWJsZSBsaXN0Cit1bmRlciB0aGUgem9uZSBscnVfbG9jay4gIFRoaXMgYWxsb3dzIHVzIHRvIHByZXZlbnQgdGhlIHN0cmFuZGluZyBvZiBwYWdlcyBvbgordGhlIHVuZXZpY3RhYmxlIGxpc3Qgd2hlbiBvbmUgdGFzayBoYXMgdGhlIHBhZ2UgaXNvbGF0ZWQgZnJvbSB0aGUgTFJVIGFuZCBvdGhlcgordGFza3MgYXJlIGNoYW5naW5nIHRoZSAiZXZpY3RhYmlsaXR5IiBzdGF0ZSBvZiB0aGUgcGFnZS4KKworCitNRU1PUlkgQ09OVFJPTCBHUk9VUCBJTlRFUkFDVElPTgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHVuZXZpY3RhYmxlIExSVSBmYWNpbGl0eSBpbnRlcmFjdHMgd2l0aCB0aGUgbWVtb3J5IGNvbnRyb2wgZ3JvdXAgW2FrYQorbWVtb3J5IGNvbnRyb2xsZXI7IHNlZSBEb2N1bWVudGF0aW9uL2Nncm91cHMvbWVtb3J5LnR4dF0gYnkgZXh0ZW5kaW5nIHRoZQorbHJ1X2xpc3QgZW51bS4KKworVGhlIG1lbW9yeSBjb250cm9sbGVyIGRhdGEgc3RydWN0dXJlIGF1dG9tYXRpY2FsbHkgZ2V0cyBhIHBlci16b25lIHVuZXZpY3RhYmxlCitsaXN0IGFzIGEgcmVzdWx0IG9mIHRoZSAiYXJyYXlpZmljYXRpb24iIG9mIHRoZSBwZXItem9uZSBMUlUgbGlzdHMgKG9uZSBwZXIKK2xydV9saXN0IGVudW0gZWxlbWVudCkuICBUaGUgbWVtb3J5IGNvbnRyb2xsZXIgdHJhY2tzIHRoZSBtb3ZlbWVudCBvZiBwYWdlcyB0bworYW5kIGZyb20gdGhlIHVuZXZpY3RhYmxlIGxpc3QuCisKK1doZW4gYSBtZW1vcnkgY29udHJvbCBncm91cCBjb21lcyB1bmRlciBtZW1vcnkgcHJlc3N1cmUsIHRoZSBjb250cm9sbGVyIHdpbGwKK25vdCBhdHRlbXB0IHRvIHJlY2xhaW0gcGFnZXMgb24gdGhlIHVuZXZpY3RhYmxlIGxpc3QuICBUaGlzIGhhcyBhIGNvdXBsZSBvZgorZWZmZWN0czoKKworICgxKSBCZWNhdXNlIHRoZSBwYWdlcyBhcmUgImhpZGRlbiIgZnJvbSByZWNsYWltIG9uIHRoZSB1bmV2aWN0YWJsZSBsaXN0LCB0aGUKKyAgICAgcmVjbGFpbSBwcm9jZXNzIGNhbiBiZSBtb3JlIGVmZmljaWVudCwgZGVhbGluZyBvbmx5IHdpdGggcGFnZXMgdGhhdCBoYXZlIGEKKyAgICAgY2hhbmNlIG9mIGJlaW5nIHJlY2xhaW1lZC4KKworICgyKSBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdG9vIG1hbnkgb2YgdGhlIHBhZ2VzIGNoYXJnZWQgdG8gdGhlIGNvbnRyb2wgZ3JvdXAKKyAgICAgYXJlIHVuZXZpY3RhYmxlLCB0aGUgZXZpY3RhYmxlIHBvcnRpb24gb2YgdGhlIHdvcmtpbmcgc2V0IG9mIHRoZSB0YXNrcyBpbgorICAgICB0aGUgY29udHJvbCBncm91cCBtYXkgbm90IGZpdCBpbnRvIHRoZSBhdmFpbGFibGUgbWVtb3J5LiAgVGhpcyBjYW4gY2F1c2UKKyAgICAgdGhlIGNvbnRyb2wgZ3JvdXAgdG8gdGhyYXNoIG9yIHRvIE9PTS1raWxsIHRhc2tzLgorCisKK01BUktJTkcgQUREUkVTUyBTUEFDRVMgVU5FVklDVEFCTEUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRm9yIGZhY2lsaXRpZXMgc3VjaCBhcyByYW1mcyBub25lIG9mIHRoZSBwYWdlcyBhdHRhY2hlZCB0byB0aGUgYWRkcmVzcyBzcGFjZQorbWF5IGJlIGV2aWN0ZWQuICBUbyBwcmV2ZW50IGV2aWN0aW9uIG9mIGFueSBzdWNoIHBhZ2VzLCB0aGUgQVNfVU5FVklDVEFCTEUKK2FkZHJlc3Mgc3BhY2UgZmxhZyBpcyBwcm92aWRlZCwgYW5kIHRoaXMgY2FuIGJlIG1hbmlwdWxhdGVkIGJ5IGEgZmlsZXN5c3RlbQordXNpbmcgYSBudW1iZXIgb2Ygd3JhcHBlciBmdW5jdGlvbnM6CisKKyAoKikgdm9pZCBtYXBwaW5nX3NldF91bmV2aWN0YWJsZShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyk7CisKKwlNYXJrIHRoZSBhZGRyZXNzIHNwYWNlIGFzIGJlaW5nIGNvbXBsZXRlbHkgdW5ldmljdGFibGUuCisKKyAoKikgdm9pZCBtYXBwaW5nX2NsZWFyX3VuZXZpY3RhYmxlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKTsKKworCU1hcmsgdGhlIGFkZHJlc3Mgc3BhY2UgYXMgYmVpbmcgZXZpY3RhYmxlLgorCisgKCopIGludCBtYXBwaW5nX3VuZXZpY3RhYmxlKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nKTsKKworCVF1ZXJ5IHRoZSBhZGRyZXNzIHNwYWNlLCBhbmQgcmV0dXJuIHRydWUgaWYgaXQgaXMgY29tcGxldGVseQorCXVuZXZpY3RhYmxlLgorCitUaGVzZSBhcmUgY3VycmVudGx5IHVzZWQgaW4gdHdvIHBsYWNlcyBpbiB0aGUga2VybmVsOgorCisgKDEpIEJ5IHJhbWZzIHRvIG1hcmsgdGhlIGFkZHJlc3Mgc3BhY2VzIG9mIGl0cyBpbm9kZXMgd2hlbiB0aGV5IGFyZSBjcmVhdGVkLAorICAgICBhbmQgdGhpcyBtYXJrIHJlbWFpbnMgZm9yIHRoZSBsaWZlIG9mIHRoZSBpbm9kZS4KKworICgyKSBCeSBTWVNWIFNITSB0byBtYXJrIFNITV9MT0NLJ2QgYWRkcmVzcyBzcGFjZXMgdW50aWwgU0hNX1VOTE9DSyBpcyBjYWxsZWQuCisKKyAgICAgTm90ZSB0aGF0IFNITV9MT0NLIGlzIG5vdCByZXF1aXJlZCB0byBwYWdlIGluIHRoZSBsb2NrZWQgcGFnZXMgaWYgdGhleSdyZQorICAgICBzd2FwcGVkIG91dDsgdGhlIGFwcGxpY2F0aW9uIG11c3QgdG91Y2ggdGhlIHBhZ2VzIG1hbnVhbGx5IGlmIGl0IHdhbnRzIHRvCisgICAgIGVuc3VyZSB0aGV5J3JlIGluIG1lbW9yeS4KKworCitERVRFQ1RJTkcgVU5FVklDVEFCTEUgUEFHRVMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZnVuY3Rpb24gcGFnZV9ldmljdGFibGUoKSBpbiB2bXNjYW4uYyBkZXRlcm1pbmVzIHdoZXRoZXIgYSBwYWdlIGlzCitldmljdGFibGUgb3Igbm90IHVzaW5nIHRoZSBxdWVyeSBmdW5jdGlvbiBvdXRsaW5lZCBhYm92ZSBbc2VlIHNlY3Rpb24gIk1hcmtpbmcKK2FkZHJlc3Mgc3BhY2VzIHVuZXZpY3RhYmxlIl0gdG8gY2hlY2sgdGhlIEFTX1VORVZJQ1RBQkxFIGZsYWcuCisKK0ZvciBhZGRyZXNzIHNwYWNlcyB0aGF0IGFyZSBzbyBtYXJrZWQgYWZ0ZXIgYmVpbmcgcG9wdWxhdGVkIChhcyBTSE0gcmVnaW9ucworbWlnaHQgYmUpLCB0aGUgbG9jayBhY3Rpb24gKGVnOiBTSE1fTE9DSykgY2FuIGJlIGxhenksIGFuZCBuZWVkIG5vdCBwb3B1bGF0ZQordGhlIHBhZ2UgdGFibGVzIGZvciB0aGUgcmVnaW9uIGFzIGRvZXMsIGZvciBleGFtcGxlLCBtbG9jaygpLCBub3IgbmVlZCBpdCBtYWtlCithbnkgc3BlY2lhbCBlZmZvcnQgdG8gcHVzaCBhbnkgcGFnZXMgaW4gdGhlIFNITV9MT0NLJ2QgYXJlYSB0byB0aGUgdW5ldmljdGFibGUKK2xpc3QuICBJbnN0ZWFkLCB2bXNjYW4gd2lsbCBkbyB0aGlzIGlmIGFuZCB3aGVuIGl0IGVuY291bnRlcnMgdGhlIHBhZ2VzIGR1cmluZworYSByZWNsYW1hdGlvbiBzY2FuLgorCitPbiBhbiB1bmxvY2sgYWN0aW9uIChzdWNoIGFzIFNITV9VTkxPQ0spLCB0aGUgdW5sb2NrZXIgKGVnOiBzaG1jdGwoKSkgbXVzdCBzY2FuCit0aGUgcGFnZXMgaW4gdGhlIHJlZ2lvbiBhbmQgInJlc2N1ZSIgdGhlbSBmcm9tIHRoZSB1bmV2aWN0YWJsZSBsaXN0IGlmIG5vIG90aGVyCitjb25kaXRpb24gaXMga2VlcGluZyB0aGVtIHVuZXZpY3RhYmxlLiAgSWYgYW4gdW5ldmljdGFibGUgcmVnaW9uIGlzIGRlc3Ryb3llZCwKK3RoZSBwYWdlcyBhcmUgYWxzbyAicmVzY3VlZCIgZnJvbSB0aGUgdW5ldmljdGFibGUgbGlzdCBpbiB0aGUgcHJvY2VzcyBvZgorZnJlZWluZyB0aGVtLgorCitwYWdlX2V2aWN0YWJsZSgpIGFsc28gY2hlY2tzIGZvciBtbG9ja2VkIHBhZ2VzIGJ5IHRlc3RpbmcgYW4gYWRkaXRpb25hbCBwYWdlCitmbGFnLCBQR19tbG9ja2VkIChhcyB3cmFwcGVkIGJ5IFBhZ2VNbG9ja2VkKCkpLCB3aGljaCBpcyBzZXQgd2hlbiBhIHBhZ2UgaXMKK2ZhdWx0ZWQgaW50byBhIFZNX0xPQ0tFRCB2bWEsIG9yIGZvdW5kIGluIGEgdm1hIGJlaW5nIFZNX0xPQ0tFRC4KKworCitWTVNDQU4nUyBIQU5ETElORyBPRiBVTkVWSUNUQUJMRSBQQUdFUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgdW5ldmljdGFibGUgcGFnZXMgYXJlIGN1bGxlZCBpbiB0aGUgZmF1bHQgcGF0aCwgb3IgbW92ZWQgdG8gdGhlIHVuZXZpY3RhYmxlCitsaXN0IGF0IG1sb2NrKCkgb3IgbW1hcCgpIHRpbWUsIHZtc2NhbiB3aWxsIG5vdCBlbmNvdW50ZXIgdGhlIHBhZ2VzIHVudGlsIHRoZXkKK2hhdmUgYmVjb21lIGV2aWN0YWJsZSBhZ2FpbiAodmlhIG11bmxvY2soKSBmb3IgZXhhbXBsZSkgYW5kIGhhdmUgYmVlbiAicmVzY3VlZCIKK2Zyb20gdGhlIHVuZXZpY3RhYmxlIGxpc3QuICBIb3dldmVyLCB0aGVyZSBtYXkgYmUgc2l0dWF0aW9ucyB3aGVyZSB3ZSBkZWNpZGUsCitmb3IgdGhlIHNha2Ugb2YgZXhwZWRpZW5jeSwgdG8gbGVhdmUgYSB1bmV2aWN0YWJsZSBwYWdlIG9uIG9uZSBvZiB0aGUgcmVndWxhcgorYWN0aXZlL2luYWN0aXZlIExSVSBsaXN0cyBmb3Igdm1zY2FuIHRvIGRlYWwgd2l0aC4gIHZtc2NhbiBjaGVja3MgZm9yIHN1Y2gKK3BhZ2VzIGluIGFsbCBvZiB0aGUgc2hyaW5rX3thY3RpdmV8aW5hY3RpdmV8cGFnZX1fbGlzdCgpIGZ1bmN0aW9ucyBhbmQgd2lsbAorImN1bGwiIHN1Y2ggcGFnZXMgdGhhdCBpdCBlbmNvdW50ZXJzOiB0aGF0IGlzLCBpdCBkaXZlcnRzIHRob3NlIHBhZ2VzIHRvIHRoZQordW5ldmljdGFibGUgbGlzdCBmb3IgdGhlIHpvbmUgYmVpbmcgc2Nhbm5lZC4KKworVGhlcmUgbWF5IGJlIHNpdHVhdGlvbnMgd2hlcmUgYSBwYWdlIGlzIG1hcHBlZCBpbnRvIGEgVk1fTE9DS0VEIFZNQSwgYnV0IHRoZQorcGFnZSBpcyBub3QgbWFya2VkIGFzIFBHX21sb2NrZWQuICBTdWNoIHBhZ2VzIHdpbGwgbWFrZSBpdCBhbGwgdGhlIHdheSB0bworc2hyaW5rX3BhZ2VfbGlzdCgpIHdoZXJlIHRoZXkgd2lsbCBiZSBkZXRlY3RlZCB3aGVuIHZtc2NhbiB3YWxrcyB0aGUgcmV2ZXJzZQorbWFwIGluIHRyeV90b191bm1hcCgpLiAgSWYgdHJ5X3RvX3VubWFwKCkgcmV0dXJucyBTV0FQX01MT0NLLAorc2hyaW5rX3BhZ2VfbGlzdCgpIHdpbGwgY3VsbCB0aGUgcGFnZSBhdCB0aGF0IHBvaW50LgorCitUbyAiY3VsbCIgYW4gdW5ldmljdGFibGUgcGFnZSwgdm1zY2FuIHNpbXBseSBwdXRzIHRoZSBwYWdlIGJhY2sgb24gdGhlIExSVSBsaXN0Cit1c2luZyBwdXRiYWNrX2xydV9wYWdlKCkgLSB0aGUgaW52ZXJzZSBvcGVyYXRpb24gdG8gaXNvbGF0ZV9scnVfcGFnZSgpIC0gYWZ0ZXIKK2Ryb3BwaW5nIHRoZSBwYWdlIGxvY2suICBCZWNhdXNlIHRoZSBjb25kaXRpb24gd2hpY2ggbWFrZXMgdGhlIHBhZ2UgdW5ldmljdGFibGUKK21heSBjaGFuZ2Ugb25jZSB0aGUgcGFnZSBpcyB1bmxvY2tlZCwgcHV0YmFja19scnVfcGFnZSgpIHdpbGwgcmVjaGVjayB0aGUKK3VuZXZpY3RhYmxlIHN0YXRlIG9mIGEgcGFnZSB0aGF0IGl0IHBsYWNlcyBvbiB0aGUgdW5ldmljdGFibGUgbGlzdC4gIElmIHRoZQorcGFnZSBoYXMgYmVjb21lIHVuZXZpY3RhYmxlLCBwdXRiYWNrX2xydV9wYWdlKCkgcmVtb3ZlcyBpdCBmcm9tIHRoZSBsaXN0IGFuZAorcmV0cmllcywgaW5jbHVkaW5nIHRoZSBwYWdlX3VuZXZpY3RhYmxlKCkgdGVzdC4gIEJlY2F1c2Ugc3VjaCBhIHJhY2UgaXMgYSByYXJlCitldmVudCBhbmQgbW92ZW1lbnQgb2YgcGFnZXMgb250byB0aGUgdW5ldmljdGFibGUgbGlzdCBzaG91bGQgYmUgcmFyZSwgdGhlc2UKK2V4dHJhIGV2aWN0YWJpbHR5IGNoZWNrcyBzaG91bGQgbm90IG9jY3VyIGluIHRoZSBtYWpvcml0eSBvZiBjYWxscyB0bworcHV0YmFja19scnVfcGFnZSgpLgorCisKKz09PT09PT09PT09PT0KK01MT0NLRUQgUEFHRVMKKz09PT09PT09PT09PT0KKworVGhlIHVuZXZpY3RhYmxlIHBhZ2UgbGlzdCBpcyBhbHNvIHVzZWZ1bCBmb3IgbWxvY2soKSwgaW4gYWRkaXRpb24gdG8gcmFtZnMgYW5kCitTWVNWIFNITS4gIE5vdGUgdGhhdCBtbG9jaygpIGlzIG9ubHkgYXZhaWxhYmxlIGluIENPTkZJR19NTVU9eSBzaXR1YXRpb25zOyBpbgorTk9NTVUgc2l0dWF0aW9ucywgYWxsIG1hcHBpbmdzIGFyZSBlZmZlY3RpdmVseSBtbG9ja2VkLgorCisKK0hJU1RPUlkKKy0tLS0tLS0KKworVGhlICJVbmV2aWN0YWJsZSBtbG9ja2VkIFBhZ2VzIiBpbmZyYXN0cnVjdHVyZSBpcyBiYXNlZCBvbiB3b3JrIG9yaWdpbmFsbHkKK3Bvc3RlZCBieSBOaWNrIFBpZ2dpbiBpbiBhbiBSRkMgcGF0Y2ggZW50aXRsZWQgIm1tOiBtbG9ja2VkIHBhZ2VzIG9mZiBMUlUiLgorTmljayBwb3N0ZWQgaGlzIHBhdGNoIGFzIGFuIGFsdGVybmF0aXZlIHRvIGEgcGF0Y2ggcG9zdGVkIGJ5IENocmlzdG9waCBMYW1ldGVyCit0byBhY2hpZXZlIHRoZSBzYW1lIG9iamVjdGl2ZTogaGlkaW5nIG1sb2NrZWQgcGFnZXMgZnJvbSB2bXNjYW4uCisKK0luIE5pY2sncyBwYXRjaCwgaGUgdXNlZCBvbmUgb2YgdGhlIHN0cnVjdCBwYWdlIExSVSBsaXN0IGxpbmsgZmllbGRzIGFzIGEgY291bnQKK29mIFZNX0xPQ0tFRCBWTUFzIHRoYXQgbWFwIHRoZSBwYWdlLiAgVGhpcyB1c2Ugb2YgdGhlIGxpbmsgZmllbGQgZm9yIGEgY291bnQKK3ByZXZlbnRlZCB0aGUgbWFuYWdlbWVudCBvZiB0aGUgcGFnZXMgb24gYW4gTFJVIGxpc3QsIGFuZCB0aHVzIG1sb2NrZWQgcGFnZXMKK3dlcmUgbm90IG1pZ3JhdGFibGUgYXMgaXNvbGF0ZV9scnVfcGFnZSgpIGNvdWxkIG5vdCBmaW5kIHRoZW0sIGFuZCB0aGUgTFJVIGxpc3QKK2xpbmsgZmllbGQgd2FzIG5vdCBhdmFpbGFibGUgdG8gdGhlIG1pZ3JhdGlvbiBzdWJzeXN0ZW0uCisKK05pY2sgcmVzb2x2ZWQgdGhpcyBieSBwdXR0aW5nIG1sb2NrZWQgcGFnZXMgYmFjayBvbiB0aGUgbHJ1IGxpc3QgYmVmb3JlCithdHRlbXB0aW5nIHRvIGlzb2xhdGUgdGhlbSwgdGh1cyBhYmFuZG9uaW5nIHRoZSBjb3VudCBvZiBWTV9MT0NLRUQgVk1Bcy4gIFdoZW4KK05pY2sncyBwYXRjaCB3YXMgaW50ZWdyYXRlZCB3aXRoIHRoZSBVbmV2aWN0YWJsZSBMUlUgd29yaywgdGhlIGNvdW50IHdhcworcmVwbGFjZWQgYnkgd2Fsa2luZyB0aGUgcmV2ZXJzZSBtYXAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYW55IFZNX0xPQ0tFRCBWTUFzCittYXBwZWQgdGhlIHBhZ2UuICBNb3JlIG9uIHRoaXMgYmVsb3cuCisKKworQkFTSUMgTUFOQUdFTUVOVAorLS0tLS0tLS0tLS0tLS0tLQorCittbG9ja2VkIHBhZ2VzIC0gcGFnZXMgbWFwcGVkIGludG8gYSBWTV9MT0NLRUQgVk1BIC0gYXJlIGEgY2xhc3Mgb2YgdW5ldmljdGFibGUKK3BhZ2VzLiAgV2hlbiBzdWNoIGEgcGFnZSBoYXMgYmVlbiAibm90aWNlZCIgYnkgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSwKK3RoZSBwYWdlIGlzIG1hcmtlZCB3aXRoIHRoZSBQR19tbG9ja2VkIGZsYWcuICBUaGlzIGNhbiBiZSBtYW5pcHVsYXRlZCB1c2luZyB0aGUKK1BhZ2VNbG9ja2VkKCkgZnVuY3Rpb25zLgorCitBIFBHX21sb2NrZWQgcGFnZSB3aWxsIGJlIHBsYWNlZCBvbiB0aGUgdW5ldmljdGFibGUgbGlzdCB3aGVuIGl0IGlzIGFkZGVkIHRvCit0aGUgTFJVLiAgU3VjaCBwYWdlcyBjYW4gYmUgIm5vdGljZWQiIGJ5IG1lbW9yeSBtYW5hZ2VtZW50IGluIHNldmVyYWwgcGxhY2VzOgorCisgKDEpIGluIHRoZSBtbG9jaygpL21sb2NrYWxsKCkgc3lzdGVtIGNhbGwgaGFuZGxlcnM7CisKKyAoMikgaW4gdGhlIG1tYXAoKSBzeXN0ZW0gY2FsbCBoYW5kbGVyIHdoZW4gbW1hcHBpbmcgYSByZWdpb24gd2l0aCB0aGUKKyAgICAgTUFQX0xPQ0tFRCBmbGFnOworCisgKDMpIG1tYXBwaW5nIGEgcmVnaW9uIGluIGEgdGFzayB0aGF0IGhhcyBjYWxsZWQgbWxvY2thbGwoKSB3aXRoIHRoZSBNQ0xfRlVUVVJFCisgICAgIGZsYWcKKworICg0KSBpbiB0aGUgZmF1bHQgcGF0aCwgaWYgbWxvY2tlZCBwYWdlcyBhcmUgImN1bGxlZCIgaW4gdGhlIGZhdWx0IHBhdGgsCisgICAgIGFuZCB3aGVuIGEgVk1fTE9DS0VEIHN0YWNrIHNlZ21lbnQgaXMgZXhwYW5kZWQ7IG9yCisKKyAoNSkgYXMgbWVudGlvbmVkIGFib3ZlLCBpbiB2bXNjYW46c2hyaW5rX3BhZ2VfbGlzdCgpIHdoZW4gYXR0ZW1wdGluZyB0bworICAgICByZWNsYWltIGEgcGFnZSBpbiBhIFZNX0xPQ0tFRCBWTUEgdmlhIHRyeV90b191bm1hcCgpCisKK2FsbCBvZiB3aGljaCByZXN1bHQgaW4gdGhlIFZNX0xPQ0tFRCBmbGFnIGJlaW5nIHNldCBmb3IgdGhlIFZNQSBpZiBpdCBkb2Vzbid0CithbHJlYWR5IGhhdmUgaXQgc2V0LgorCittbG9ja2VkIHBhZ2VzIGJlY29tZSB1bmxvY2tlZCBhbmQgcmVzY3VlZCBmcm9tIHRoZSB1bmV2aWN0YWJsZSBsaXN0IHdoZW46CisKKyAoMSkgbWFwcGVkIGluIGEgcmFuZ2UgdW5sb2NrZWQgdmlhIHRoZSBtdW5sb2NrKCkvbXVubG9ja2FsbCgpIHN5c3RlbSBjYWxsczsKKworICgyKSBtdW5tYXAoKSdkIG91dCBvZiB0aGUgbGFzdCBWTV9MT0NLRUQgVk1BIHRoYXQgbWFwcyB0aGUgcGFnZSwgaW5jbHVkaW5nCisgICAgIHVubWFwcGluZyBhdCB0YXNrIGV4aXQ7CisKKyAoMykgd2hlbiB0aGUgcGFnZSBpcyB0cnVuY2F0ZWQgZnJvbSB0aGUgbGFzdCBWTV9MT0NLRUQgVk1BIG9mIGFuIG1tYXBwZWQgZmlsZTsKKyAgICAgb3IKKworICg0KSBiZWZvcmUgYSBwYWdlIGlzIENPVydkIGluIGEgVk1fTE9DS0VEIFZNQS4KKworCittbG9jaygpL21sb2NrYWxsKCkgU1lTVEVNIENBTEwgSEFORExJTkcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCb3RoIFtkb19dbWxvY2soKSBhbmQgW2RvX11tbG9ja2FsbCgpIHN5c3RlbSBjYWxsIGhhbmRsZXJzIGNhbGwgbWxvY2tfZml4dXAoKQorZm9yIGVhY2ggVk1BIGluIHRoZSByYW5nZSBzcGVjaWZpZWQgYnkgdGhlIGNhbGwuICBJbiB0aGUgY2FzZSBvZiBtbG9ja2FsbCgpLAordGhpcyBpcyB0aGUgZW50aXJlIGFjdGl2ZSBhZGRyZXNzIHNwYWNlIG9mIHRoZSB0YXNrLiAgTm90ZSB0aGF0IG1sb2NrX2ZpeHVwKCkKK2lzIHVzZWQgZm9yIGJvdGggbWxvY2tpbmcgYW5kIG11bmxvY2tpbmcgYSByYW5nZSBvZiBtZW1vcnkuICBBIGNhbGwgdG8gbWxvY2soKQorYW4gYWxyZWFkeSBWTV9MT0NLRUQgVk1BLCBvciB0byBtdW5sb2NrKCkgYSBWTUEgdGhhdCBpcyBub3QgVk1fTE9DS0VEIGlzCit0cmVhdGVkIGFzIGEgbm8tb3AsIGFuZCBtbG9ja19maXh1cCgpIHNpbXBseSByZXR1cm5zLgorCitJZiB0aGUgVk1BIHBhc3NlcyBzb21lIGZpbHRlcmluZyBhcyBkZXNjcmliZWQgaW4gIkZpbHRlcmluZyBTcGVjaWFsIFZtYXMiCitiZWxvdywgbWxvY2tfZml4dXAoKSB3aWxsIGF0dGVtcHQgdG8gbWVyZ2UgdGhlIFZNQSB3aXRoIGl0cyBuZWlnaGJvcnMgb3Igc3BsaXQKK29mZiBhIHN1YnNldCBvZiB0aGUgVk1BIGlmIHRoZSByYW5nZSBkb2VzIG5vdCBjb3ZlciB0aGUgZW50aXJlIFZNQS4gIE9uY2UgdGhlCitWTUEgaGFzIGJlZW4gbWVyZ2VkIG9yIHNwbGl0IG9yIG5laXRoZXIsIG1sb2NrX2ZpeHVwKCkgd2lsbCBjYWxsCitwb3B1bGF0ZV92bWFfcGFnZV9yYW5nZSgpIHRvIGZhdWx0IGluIHRoZSBwYWdlcyB2aWEgZ2V0X3VzZXJfcGFnZXMoKSBhbmQgdG8KK21hcmsgdGhlIHBhZ2VzIGFzIG1sb2NrZWQgdmlhIG1sb2NrX3ZtYV9wYWdlKCkuCisKK05vdGUgdGhhdCB0aGUgVk1BIGJlaW5nIG1sb2NrZWQgbWlnaHQgYmUgbWFwcGVkIHdpdGggUFJPVF9OT05FLiAgSW4gdGhpcyBjYXNlLAorZ2V0X3VzZXJfcGFnZXMoKSB3aWxsIGJlIHVuYWJsZSB0byBmYXVsdCBpbiB0aGUgcGFnZXMuICBUaGF0J3Mgb2theS4gIElmIHBhZ2VzCitkbyBlbmQgdXAgZ2V0dGluZyBmYXVsdGVkIGludG8gdGhpcyBWTV9MT0NLRUQgVk1BLCB3ZSdsbCBoYW5kbGUgdGhlbSBpbiB0aGUKK2ZhdWx0IHBhdGggb3IgaW4gdm1zY2FuLgorCitBbHNvIG5vdGUgdGhhdCBhIHBhZ2UgcmV0dXJuZWQgYnkgZ2V0X3VzZXJfcGFnZXMoKSBjb3VsZCBiZSB0cnVuY2F0ZWQgb3IKK21pZ3JhdGVkIG91dCBmcm9tIHVuZGVyIHVzLCB3aGlsZSB3ZSdyZSB0cnlpbmcgdG8gbWxvY2sgaXQuICBUbyBkZXRlY3QgdGhpcywKK3BvcHVsYXRlX3ZtYV9wYWdlX3JhbmdlKCkgY2hlY2tzIHBhZ2VfbWFwcGluZygpIGFmdGVyIGFjcXVpcmluZyB0aGUgcGFnZSBsb2NrLgorSWYgdGhlIHBhZ2UgaXMgc3RpbGwgYXNzb2NpYXRlZCB3aXRoIGl0cyBtYXBwaW5nLCB3ZSdsbCBnbyBhaGVhZCBhbmQgY2FsbAorbWxvY2tfdm1hX3BhZ2UoKS4gIElmIHRoZSBtYXBwaW5nIGlzIGdvbmUsIHdlIGp1c3QgdW5sb2NrIHRoZSBwYWdlIGFuZCBtb3ZlIG9uLgorSW4gdGhlIHdvcnN0IGNhc2UsIHRoaXMgd2lsbCByZXN1bHQgaW4gYSBwYWdlIG1hcHBlZCBpbiBhIFZNX0xPQ0tFRCBWTUEKK3JlbWFpbmluZyBvbiBhIG5vcm1hbCBMUlUgbGlzdCB3aXRob3V0IGJlaW5nIFBhZ2VNbG9ja2VkKCkuICBBZ2Fpbiwgdm1zY2FuIHdpbGwKK2RldGVjdCBhbmQgY3VsbCBzdWNoIHBhZ2VzLgorCittbG9ja192bWFfcGFnZSgpIHdpbGwgY2FsbCBUZXN0U2V0UGFnZU1sb2NrZWQoKSBmb3IgZWFjaCBwYWdlIHJldHVybmVkIGJ5CitnZXRfdXNlcl9wYWdlcygpLiAgV2UgdXNlIFRlc3RTZXRQYWdlTWxvY2tlZCgpIGJlY2F1c2UgdGhlIHBhZ2UgbWlnaHQgYWxyZWFkeQorYmUgbWxvY2tlZCBieSBhbm90aGVyIHRhc2svVk1BIGFuZCB3ZSBkb24ndCB3YW50IHRvIGRvIGV4dHJhIHdvcmsuICBXZQorZXNwZWNpYWxseSBkbyBub3Qgd2FudCB0byBjb3VudCBhbiBtbG9ja2VkIHBhZ2UgbW9yZSB0aGFuIG9uY2UgaW4gdGhlCitzdGF0aXN0aWNzLiAgSWYgdGhlIHBhZ2Ugd2FzIGFscmVhZHkgbWxvY2tlZCwgbWxvY2tfdm1hX3BhZ2UoKSBuZWVkIGRvIG5vdGhpbmcKK21vcmUuCisKK0lmIHRoZSBwYWdlIHdhcyBOT1QgYWxyZWFkeSBtbG9ja2VkLCBtbG9ja192bWFfcGFnZSgpIGF0dGVtcHRzIHRvIGlzb2xhdGUgdGhlCitwYWdlIGZyb20gdGhlIExSVSwgYXMgaXQgaXMgbGlrZWx5IG9uIHRoZSBhcHByb3ByaWF0ZSBhY3RpdmUgb3IgaW5hY3RpdmUgbGlzdAorYXQgdGhhdCB0aW1lLiAgSWYgdGhlIGlzb2xhdGVfbHJ1X3BhZ2UoKSBzdWNjZWVkcywgbWxvY2tfdm1hX3BhZ2UoKSB3aWxsIHB1dAorYmFjayB0aGUgcGFnZSAtIGJ5IGNhbGxpbmcgcHV0YmFja19scnVfcGFnZSgpIC0gd2hpY2ggd2lsbCBub3RpY2UgdGhhdCB0aGUgcGFnZQoraXMgbm93IG1sb2NrZWQgYW5kIGRpdmVydCB0aGUgcGFnZSB0byB0aGUgem9uZSdzIHVuZXZpY3RhYmxlIGxpc3QuICBJZgorbWxvY2tfdm1hX3BhZ2UoKSBpcyB1bmFibGUgdG8gaXNvbGF0ZSB0aGUgcGFnZSBmcm9tIHRoZSBMUlUsIHZtc2NhbiB3aWxsIGhhbmRsZQoraXQgbGF0ZXIgaWYgYW5kIHdoZW4gaXQgYXR0ZW1wdHMgdG8gcmVjbGFpbSB0aGUgcGFnZS4KKworCitGSUxURVJJTkcgU1BFQ0lBTCBWTUFTCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK21sb2NrX2ZpeHVwKCkgZmlsdGVycyBzZXZlcmFsIGNsYXNzZXMgb2YgInNwZWNpYWwiIFZNQXM6CisKKzEpIFZNQXMgd2l0aCBWTV9JTyBvciBWTV9QRk5NQVAgc2V0IGFyZSBza2lwcGVkIGVudGlyZWx5LiAgVGhlIHBhZ2VzIGJlaGluZAorICAgdGhlc2UgbWFwcGluZ3MgYXJlIGluaGVyZW50bHkgcGlubmVkLCBzbyB3ZSBkb24ndCBuZWVkIHRvIG1hcmsgdGhlbSBhcworICAgbWxvY2tlZC4gIEluIGFueSBjYXNlLCBtb3N0IG9mIHRoZSBwYWdlcyBoYXZlIG5vIHN0cnVjdCBwYWdlIGluIHdoaWNoIHRvIHNvCisgICBtYXJrIHRoZSBwYWdlLiAgQmVjYXVzZSBvZiB0aGlzLCBnZXRfdXNlcl9wYWdlcygpIHdpbGwgZmFpbCBmb3IgdGhlc2UgVk1BcywKKyAgIHNvIHRoZXJlIGlzIG5vIHNlbnNlIGluIGF0dGVtcHRpbmcgdG8gdmlzaXQgdGhlbS4KKworMikgVk1BcyBtYXBwaW5nIGh1Z2V0bGJmcyBwYWdlIGFyZSBhbHJlYWR5IGVmZmVjdGl2ZWx5IHBpbm5lZCBpbnRvIG1lbW9yeS4gIFdlCisgICBuZWl0aGVyIG5lZWQgbm9yIHdhbnQgdG8gbWxvY2soKSB0aGVzZSBwYWdlcy4gIEhvd2V2ZXIsIHRvIHByZXNlcnZlIHRoZQorICAgcHJpb3IgYmVoYXZpb3Igb2YgbWxvY2soKSAtIGJlZm9yZSB0aGUgdW5ldmljdGFibGUvbWxvY2sgY2hhbmdlcyAtCisgICBtbG9ja19maXh1cCgpIHdpbGwgY2FsbCBtYWtlX3BhZ2VzX3ByZXNlbnQoKSBpbiB0aGUgaHVnZXRsYmZzIFZNQSByYW5nZSB0bworICAgYWxsb2NhdGUgdGhlIGh1Z2UgcGFnZXMgYW5kIHBvcHVsYXRlIHRoZSBwdGVzLgorCiszKSBWTUFzIHdpdGggVk1fRE9OVEVYUEFORCBhcmUgZ2VuZXJhbGx5IHVzZXJzcGFjZSBtYXBwaW5ncyBvZiBrZXJuZWwgcGFnZXMsCisgICBzdWNoIGFzIHRoZSBWRFNPIHBhZ2UsIHJlbGF5IGNoYW5uZWwgcGFnZXMsIGV0Yy4gVGhlc2UgcGFnZXMKKyAgIGFyZSBpbmhlcmVudGx5IHVuZXZpY3RhYmxlIGFuZCBhcmUgbm90IG1hbmFnZWQgb24gdGhlIExSVSBsaXN0cy4KKyAgIG1sb2NrX2ZpeHVwKCkgdHJlYXRzIHRoZXNlIFZNQXMgdGhlIHNhbWUgYXMgaHVnZXRsYmZzIFZNQXMuICBJdCBjYWxscworICAgbWFrZV9wYWdlc19wcmVzZW50KCkgdG8gcG9wdWxhdGUgdGhlIHB0ZXMuCisKK05vdGUgdGhhdCBmb3IgYWxsIG9mIHRoZXNlIHNwZWNpYWwgVk1BcywgbWxvY2tfZml4dXAoKSBkb2VzIG5vdCBzZXQgdGhlCitWTV9MT0NLRUQgZmxhZy4gIFRoZXJlZm9yZSwgd2Ugd29uJ3QgaGF2ZSB0byBkZWFsIHdpdGggdGhlbSBsYXRlciBkdXJpbmcKK211bmxvY2soKSwgbXVubWFwKCkgb3IgdGFzayBleGl0LiAgTmVpdGhlciBkb2VzIG1sb2NrX2ZpeHVwKCkgYWNjb3VudCB0aGVzZQorVk1BcyBhZ2FpbnN0IHRoZSB0YXNrJ3MgImxvY2tlZF92bSIuCisKKworbXVubG9jaygpL211bmxvY2thbGwoKSBTWVNURU0gQ0FMTCBIQU5ETElORworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbXVubG9jaygpIGFuZCBtdW5sb2NrYWxsKCkgc3lzdGVtIGNhbGxzIGFyZSBoYW5kbGVkIGJ5IHRoZSBzYW1lIGZ1bmN0aW9ucyAtCitkb19tbG9ja1thbGxdKCkgLSBhcyB0aGUgbWxvY2soKSBhbmQgbWxvY2thbGwoKSBzeXN0ZW0gY2FsbHMgd2l0aCB0aGUgdW5sb2NrIHZzCitsb2NrIG9wZXJhdGlvbiBpbmRpY2F0ZWQgYnkgYW4gYXJndW1lbnQuICBTbywgdGhlc2Ugc3lzdGVtIGNhbGxzIGFyZSBhbHNvCitoYW5kbGVkIGJ5IG1sb2NrX2ZpeHVwKCkuICBBZ2FpbiwgaWYgY2FsbGVkIGZvciBhbiBhbHJlYWR5IG11bmxvY2tlZCBWTUEsCittbG9ja19maXh1cCgpIHNpbXBseSByZXR1cm5zLiAgQmVjYXVzZSBvZiB0aGUgVk1BIGZpbHRlcmluZyBkaXNjdXNzZWQgYWJvdmUsCitWTV9MT0NLRUQgd2lsbCBub3QgYmUgc2V0IGluIGFueSAic3BlY2lhbCIgVk1Bcy4gIFNvLCB0aGVzZSBWTUFzIHdpbGwgYmUKK2lnbm9yZWQgZm9yIG11bmxvY2suCisKK0lmIHRoZSBWTUEgaXMgVk1fTE9DS0VELCBtbG9ja19maXh1cCgpIGFnYWluIGF0dGVtcHRzIHRvIG1lcmdlIG9yIHNwbGl0IG9mZiB0aGUKK3NwZWNpZmllZCByYW5nZS4gIFRoZSByYW5nZSBpcyB0aGVuIG11bmxvY2tlZCB2aWEgdGhlIGZ1bmN0aW9uCitwb3B1bGF0ZV92bWFfcGFnZV9yYW5nZSgpIC0gdGhlIHNhbWUgZnVuY3Rpb24gdXNlZCB0byBtbG9jayBhIFZNQSByYW5nZSAtCitwYXNzaW5nIGEgZmxhZyB0byBpbmRpY2F0ZSB0aGF0IG11bmxvY2soKSBpcyBiZWluZyBwZXJmb3JtZWQuCisKK0JlY2F1c2UgdGhlIFZNQSBhY2Nlc3MgcHJvdGVjdGlvbnMgY291bGQgaGF2ZSBiZWVuIGNoYW5nZWQgdG8gUFJPVF9OT05FIGFmdGVyCitmYXVsdGluZyBpbiBhbmQgbWxvY2tpbmcgcGFnZXMsIGdldF91c2VyX3BhZ2VzKCkgd2FzIHVucmVsaWFibGUgZm9yIHZpc2l0aW5nCit0aGVzZSBwYWdlcyBmb3IgbXVubG9ja2luZy4gIEJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBsZWF2ZSBwYWdlcyBtbG9ja2VkLAorZ2V0X3VzZXJfcGFnZXMoKSB3YXMgZW5oYW5jZWQgdG8gYWNjZXB0IGEgZmxhZyB0byBpZ25vcmUgdGhlIHBlcm1pc3Npb25zIHdoZW4KK2ZldGNoaW5nIHRoZSBwYWdlcyAtIGFsbCBvZiB3aGljaCBzaG91bGQgYmUgcmVzaWRlbnQgYXMgYSByZXN1bHQgb2YgcHJldmlvdXMKK21sb2NraW5nLgorCitGb3IgbXVubG9jaygpLCBwb3B1bGF0ZV92bWFfcGFnZV9yYW5nZSgpIHVubG9ja3MgaW5kaXZpZHVhbCBwYWdlcyBieSBjYWxsaW5nCittdW5sb2NrX3ZtYV9wYWdlKCkuICBtdW5sb2NrX3ZtYV9wYWdlKCkgdW5jb25kaXRpb25hbGx5IGNsZWFycyB0aGUgUEdfbWxvY2tlZAorZmxhZyB1c2luZyBUZXN0Q2xlYXJQYWdlTWxvY2tlZCgpLiAgQXMgd2l0aCBtbG9ja192bWFfcGFnZSgpLAorbXVubG9ja192bWFfcGFnZSgpIHVzZSB0aGUgVGVzdCpQYWdlTWxvY2tlZCgpIGZ1bmN0aW9uIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZQordGhlIHBhZ2UgbWlnaHQgaGF2ZSBhbHJlYWR5IGJlZW4gdW5sb2NrZWQgYnkgYW5vdGhlciB0YXNrLiAgSWYgdGhlIHBhZ2Ugd2FzCittbG9ja2VkLCBtdW5sb2NrX3ZtYV9wYWdlKCkgdXBkYXRlcyB0aGF0IHpvbmUgc3RhdGlzdGljcyBmb3IgdGhlIG51bWJlciBvZgorbWxvY2tlZCBwYWdlcy4gIE5vdGUsIGhvd2V2ZXIsIHRoYXQgYXQgdGhpcyBwb2ludCB3ZSBoYXZlbid0IGNoZWNrZWQgd2hldGhlcgordGhlIHBhZ2UgaXMgbWFwcGVkIGJ5IG90aGVyIFZNX0xPQ0tFRCBWTUFzLgorCitXZSBjYW4ndCBjYWxsIHRyeV90b19tdW5sb2NrKCksIHRoZSBmdW5jdGlvbiB0aGF0IHdhbGtzIHRoZSByZXZlcnNlIG1hcCB0bworY2hlY2sgZm9yIG90aGVyIFZNX0xPQ0tFRCBWTUFzLCB3aXRob3V0IGZpcnN0IGlzb2xhdGluZyB0aGUgcGFnZSBmcm9tIHRoZSBMUlUuCit0cnlfdG9fbXVubG9jaygpIGlzIGEgdmFyaWFudCBvZiB0cnlfdG9fdW5tYXAoKSBhbmQgdGh1cyByZXF1aXJlcyB0aGF0IHRoZSBwYWdlCitub3QgYmUgb24gYW4gTFJVIGxpc3QgW21vcmUgb24gdGhlc2UgYmVsb3ddLiAgSG93ZXZlciwgdGhlIGNhbGwgdG8KK2lzb2xhdGVfbHJ1X3BhZ2UoKSBjb3VsZCBmYWlsLCBpbiB3aGljaCBjYXNlIHdlIGNvdWxkbid0IHRyeV90b19tdW5sb2NrKCkuICBTbywKK3dlIGdvIGFoZWFkIGFuZCBjbGVhciBQR19tbG9ja2VkIHVwIGZyb250LCBhcyB0aGlzIG1pZ2h0IGJlIHRoZSBvbmx5IGNoYW5jZSB3ZQoraGF2ZS4gIElmIHdlIGNhbiBzdWNjZXNzZnVsbHkgaXNvbGF0ZSB0aGUgcGFnZSwgd2UgZ28gYWhlYWQgYW5kCit0cnlfdG9fbXVubG9jaygpLCB3aGljaCB3aWxsIHJlc3RvcmUgdGhlIFBHX21sb2NrZWQgZmxhZyBhbmQgdXBkYXRlIHRoZSB6b25lCitwYWdlIHN0YXRpc3RpY3MgaWYgaXQgZmluZHMgYW5vdGhlciBWTUEgaG9sZGluZyB0aGUgcGFnZSBtbG9ja2VkLiAgSWYgd2UgZmFpbAordG8gaXNvbGF0ZSB0aGUgcGFnZSwgd2UnbGwgaGF2ZSBsZWZ0IGEgcG90ZW50aWFsbHkgbWxvY2tlZCBwYWdlIG9uIHRoZSBMUlUuCitUaGlzIGlzIGZpbmUsIGJlY2F1c2Ugd2UnbGwgY2F0Y2ggaXQgbGF0ZXIgaWYgYW5kIGlmIHZtc2NhbiB0cmllcyB0byByZWNsYWltCit0aGUgcGFnZS4gIFRoaXMgc2hvdWxkIGJlIHJlbGF0aXZlbHkgcmFyZS4KKworCitNSUdSQVRJTkcgTUxPQ0tFRCBQQUdFUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSBwYWdlIHRoYXQgaXMgYmVpbmcgbWlncmF0ZWQgaGFzIGJlZW4gaXNvbGF0ZWQgZnJvbSB0aGUgTFJVIGxpc3RzIGFuZCBpcyBoZWxkCitsb2NrZWQgYWNyb3NzIHVubWFwcGluZyBvZiB0aGUgcGFnZSwgdXBkYXRpbmcgdGhlIHBhZ2UncyBhZGRyZXNzIHNwYWNlIGVudHJ5CithbmQgY29weWluZyB0aGUgY29udGVudHMgYW5kIHN0YXRlLCB1bnRpbCB0aGUgcGFnZSB0YWJsZSBlbnRyeSBoYXMgYmVlbgorcmVwbGFjZWQgd2l0aCBhbiBlbnRyeSB0aGF0IHJlZmVycyB0byB0aGUgbmV3IHBhZ2UuICBMaW51eCBzdXBwb3J0cyBtaWdyYXRpb24KK29mIG1sb2NrZWQgcGFnZXMgYW5kIG90aGVyIHVuZXZpY3RhYmxlIHBhZ2VzLiAgVGhpcyBpbnZvbHZlcyBzaW1wbHkgbW92aW5nIHRoZQorUEdfbWxvY2tlZCBhbmQgUEdfdW5ldmljdGFibGUgc3RhdGVzIGZyb20gdGhlIG9sZCBwYWdlIHRvIHRoZSBuZXcgcGFnZS4KKworTm90ZSB0aGF0IHBhZ2UgbWlncmF0aW9uIGNhbiByYWNlIHdpdGggbWxvY2tpbmcgb3IgbXVubG9ja2luZyBvZiB0aGUgc2FtZSBwYWdlLgorVGhpcyBoYXMgYmVlbiBkaXNjdXNzZWQgZnJvbSB0aGUgbWxvY2svbXVubG9jayBwZXJzcGVjdGl2ZSBpbiB0aGUgcmVzcGVjdGl2ZQorc2VjdGlvbnMgYWJvdmUuICBCb3RoIHByb2Nlc3NlcyAobWlncmF0aW9uIGFuZCBtW3VuXWxvY2tpbmcpIGhvbGQgdGhlIHBhZ2UKK2xvY2tlZC4gIFRoaXMgcHJvdmlkZXMgdGhlIGZpcnN0IGxldmVsIG9mIHN5bmNocm9uaXphdGlvbi4gIFBhZ2UgbWlncmF0aW9uCit6ZXJvcyBvdXQgdGhlIHBhZ2VfbWFwcGluZyBvZiB0aGUgb2xkIHBhZ2UgYmVmb3JlIHVubG9ja2luZyBpdCwgc28gbVt1bl1sb2NrCitjYW4gc2tpcCB0aGVzZSBwYWdlcyBieSB0ZXN0aW5nIHRoZSBwYWdlIG1hcHBpbmcgdW5kZXIgcGFnZSBsb2NrLgorCitUbyBjb21wbGV0ZSBwYWdlIG1pZ3JhdGlvbiwgd2UgcGxhY2UgdGhlIG5ldyBhbmQgb2xkIHBhZ2VzIGJhY2sgb250byB0aGUgTFJVCithZnRlciBkcm9wcGluZyB0aGUgcGFnZSBsb2NrLiAgVGhlICJ1bm5lZWRlZCIgcGFnZSAtIG9sZCBwYWdlIG9uIHN1Y2Nlc3MsIG5ldworcGFnZSBvbiBmYWlsdXJlIC0gd2lsbCBiZSBmcmVlZCB3aGVuIHRoZSByZWZlcmVuY2UgY291bnQgaGVsZCBieSB0aGUgbWlncmF0aW9uCitwcm9jZXNzIGlzIHJlbGVhc2VkLiAgVG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3Qgc3RyYW5kIHBhZ2VzIG9uIHRoZSB1bmV2aWN0YWJsZQorbGlzdCBiZWNhdXNlIG9mIGEgcmFjZSBiZXR3ZWVuIG11bmxvY2sgYW5kIG1pZ3JhdGlvbiwgcGFnZSBtaWdyYXRpb24gdXNlcyB0aGUKK3B1dGJhY2tfbHJ1X3BhZ2UoKSBmdW5jdGlvbiB0byBhZGQgbWlncmF0ZWQgcGFnZXMgYmFjayB0byB0aGUgTFJVLgorCisKK0NPTVBBQ1RJTkcgTUxPQ0tFRCBQQUdFUworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSB1bmV2aWN0YWJsZSBMUlUgY2FuIGJlIHNjYW5uZWQgZm9yIGNvbXBhY3RhYmxlIHJlZ2lvbnMgYW5kIHRoZSBkZWZhdWx0CitiZWhhdmlvciBpcyB0byBkbyBzby4gIC9wcm9jL3N5cy92bS9jb21wYWN0X3VuZXZpY3RhYmxlX2FsbG93ZWQgY29udHJvbHMKK3RoaXMgYmVoYXZpb3IgKHNlZSBEb2N1bWVudGF0aW9uL3N5c2N0bC92bS50eHQpLiAgT25jZSBzY2FubmluZyBvZiB0aGUKK3VuZXZpY3RhYmxlIExSVSBpcyBlbmFibGVkLCB0aGUgd29yayBvZiBjb21wYWN0aW9uIGlzIG1vc3RseSBoYW5kbGVkIGJ5Cit0aGUgcGFnZSBtaWdyYXRpb24gY29kZSBhbmQgdGhlIHNhbWUgd29yayBmbG93IGFzIGRlc2NyaWJlZCBpbiBNSUdSQVRJTkcKK01MT0NLRUQgUEFHRVMgd2lsbCBhcHBseS4KKworCittbWFwKE1BUF9MT0NLRUQpIFNZU1RFTSBDQUxMIEhBTkRMSU5HCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0luIGFkZGl0aW9uIHRoZSBtbG9jaygpL21sb2NrYWxsKCkgc3lzdGVtIGNhbGxzLCBhbiBhcHBsaWNhdGlvbiBjYW4gcmVxdWVzdAordGhhdCBhIHJlZ2lvbiBvZiBtZW1vcnkgYmUgbWxvY2tlZCBzdXBwbHlpbmcgdGhlIE1BUF9MT0NLRUQgZmxhZyB0byB0aGUgbW1hcCgpCitjYWxsLiBUaGVyZSBpcyBvbmUgaW1wb3J0YW50IGFuZCBzdWJ0bGUgZGlmZmVyZW5jZSBoZXJlLCB0aG91Z2guIG1tYXAoKSArIG1sb2NrKCkKK3dpbGwgZmFpbCBpZiB0aGUgcmFuZ2UgY2Fubm90IGJlIGZhdWx0ZWQgaW4gKGUuZy4gYmVjYXVzZSBtbV9wb3B1bGF0ZSBmYWlscykKK2FuZCByZXR1cm5zIHdpdGggRU5PTUVNIHdoaWxlIG1tYXAoTUFQX0xPQ0tFRCkgd2lsbCBub3QgZmFpbC4gVGhlIG1tYXBlZAorYXJlYSB3aWxsIHN0aWxsIGhhdmUgcHJvcGVydGllcyBvZiB0aGUgbG9ja2VkIGFyZWEgLSBha2EuIHBhZ2VzIHdpbGwgbm90IGdldAorc3dhcHBlZCBvdXQgLSBidXQgbWFqb3IgcGFnZSBmYXVsdHMgdG8gZmF1bHQgbWVtb3J5IGluIG1pZ2h0IHN0aWxsIGhhcHBlbi4KKworRnVydGhlcm1vcmUsIGFueSBtbWFwKCkgY2FsbCBvciBicmsoKSBjYWxsIHRoYXQgZXhwYW5kcyB0aGUgaGVhcCBieSBhCit0YXNrIHRoYXQgaGFzIHByZXZpb3VzbHkgY2FsbGVkIG1sb2NrYWxsKCkgd2l0aCB0aGUgTUNMX0ZVVFVSRSBmbGFnIHdpbGwgcmVzdWx0CitpbiB0aGUgbmV3bHkgbWFwcGVkIG1lbW9yeSBiZWluZyBtbG9ja2VkLiAgQmVmb3JlIHRoZSB1bmV2aWN0YWJsZS9tbG9jaworY2hhbmdlcywgdGhlIGtlcm5lbCBzaW1wbHkgY2FsbGVkIG1ha2VfcGFnZXNfcHJlc2VudCgpIHRvIGFsbG9jYXRlIHBhZ2VzIGFuZAorcG9wdWxhdGUgdGhlIHBhZ2UgdGFibGUuCisKK1RvIG1sb2NrIGEgcmFuZ2Ugb2YgbWVtb3J5IHVuZGVyIHRoZSB1bmV2aWN0YWJsZS9tbG9jayBpbmZyYXN0cnVjdHVyZSwgdGhlCittbWFwKCkgaGFuZGxlciBhbmQgdGFzayBhZGRyZXNzIHNwYWNlIGV4cGFuc2lvbiBmdW5jdGlvbnMgY2FsbAorcG9wdWxhdGVfdm1hX3BhZ2VfcmFuZ2UoKSBzcGVjaWZ5aW5nIHRoZSB2bWEgYW5kIHRoZSBhZGRyZXNzIHJhbmdlIHRvIG1sb2NrLgorCitUaGUgY2FsbGVycyBvZiBwb3B1bGF0ZV92bWFfcGFnZV9yYW5nZSgpIHdpbGwgaGF2ZSBhbHJlYWR5IGFkZGVkIHRoZSBtZW1vcnkgcmFuZ2UKK3RvIGJlIG1sb2NrZWQgdG8gdGhlIHRhc2sncyAibG9ja2VkX3ZtIi4gIFRvIGFjY291bnQgZm9yIGZpbHRlcmVkIFZNQXMsCitwb3B1bGF0ZV92bWFfcGFnZV9yYW5nZSgpIHJldHVybnMgdGhlIG51bWJlciBvZiBwYWdlcyBOT1QgbWxvY2tlZC4gIEFsbCBvZiB0aGUKK2NhbGxlcnMgdGhlbiBzdWJ0cmFjdCBhIG5vbi1uZWdhdGl2ZSByZXR1cm4gdmFsdWUgZnJvbSB0aGUgdGFzaydzIGxvY2tlZF92bS4gIEEKK25lZ2F0aXZlIHJldHVybiB2YWx1ZSByZXByZXNlbnQgYW4gZXJyb3IgLSBmb3IgZXhhbXBsZSwgZnJvbSBnZXRfdXNlcl9wYWdlcygpCithdHRlbXB0aW5nIHRvIGZhdWx0IGluIGEgVk1BIHdpdGggUFJPVF9OT05FIGFjY2Vzcy4gIEluIHRoaXMgY2FzZSwgd2UgbGVhdmUgdGhlCittZW1vcnkgcmFuZ2UgYWNjb3VudGVkIGFzIGxvY2tlZF92bSwgYXMgdGhlIHByb3RlY3Rpb25zIGNvdWxkIGJlIGNoYW5nZWQgbGF0ZXIKK2FuZCBwYWdlcyBhbGxvY2F0ZWQgaW50byB0aGF0IHJlZ2lvbi4KKworCittdW5tYXAoKS9leGl0KCkvZXhlYygpIFNZU1RFTSBDQUxMIEhBTkRMSU5HCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doZW4gdW5tYXBwaW5nIGFuIG1sb2NrZWQgcmVnaW9uIG9mIG1lbW9yeSwgd2hldGhlciBieSBhbiBleHBsaWNpdCBjYWxsIHRvCittdW5tYXAoKSBvciB2aWEgYW4gaW50ZXJuYWwgdW5tYXAgZnJvbSBleGl0KCkgb3IgZXhlYygpIHByb2Nlc3NpbmcsIHdlIG11c3QKK211bmxvY2sgdGhlIHBhZ2VzIGlmIHdlJ3JlIHJlbW92aW5nIHRoZSBsYXN0IFZNX0xPQ0tFRCBWTUEgdGhhdCBtYXBzIHRoZSBwYWdlcy4KK0JlZm9yZSB0aGUgdW5ldmljdGFibGUvbWxvY2sgY2hhbmdlcywgbWxvY2tpbmcgZGlkIG5vdCBtYXJrIHRoZSBwYWdlcyBpbiBhbnkKK3dheSwgc28gdW5tYXBwaW5nIHRoZW0gcmVxdWlyZWQgbm8gcHJvY2Vzc2luZy4KKworVG8gbXVubG9jayBhIHJhbmdlIG9mIG1lbW9yeSB1bmRlciB0aGUgdW5ldmljdGFibGUvbWxvY2sgaW5mcmFzdHJ1Y3R1cmUsIHRoZQorbXVubWFwKCkgaGFuZGxlciBhbmQgdGFzayBhZGRyZXNzIHNwYWNlIGNhbGwgdGVhciBkb3duIGZ1bmN0aW9uCittdW5sb2NrX3ZtYV9wYWdlc19hbGwoKS4gIFRoZSBuYW1lIHJlZmxlY3RzIHRoZSBvYnNlcnZhdGlvbiB0aGF0IG9uZSBhbHdheXMKK3NwZWNpZmllcyB0aGUgZW50aXJlIFZNQSByYW5nZSB3aGVuIG11bmxvY2soKWluZyBkdXJpbmcgdW5tYXAgb2YgYSByZWdpb24uCitCZWNhdXNlIG9mIHRoZSBWTUEgZmlsdGVyaW5nIHdoZW4gbWxvY2tpbmcoKSByZWdpb25zLCBvbmx5ICJub3JtYWwiIFZNQXMgdGhhdAorYWN0dWFsbHkgY29udGFpbiBtbG9ja2VkIHBhZ2VzIHdpbGwgYmUgcGFzc2VkIHRvIG11bmxvY2tfdm1hX3BhZ2VzX2FsbCgpLgorCittdW5sb2NrX3ZtYV9wYWdlc19hbGwoKSBjbGVhcnMgdGhlIFZNX0xPQ0tFRCBWTUEgZmxhZyBhbmQsIGxpa2UgbWxvY2tfZml4dXAoKQorZm9yIHRoZSBtdW5sb2NrIGNhc2UsIGNhbGxzIF9fbXVubG9ja192bWFfcGFnZXNfcmFuZ2UoKSB0byB3YWxrIHRoZSBwYWdlIHRhYmxlCitmb3IgdGhlIFZNQSdzIG1lbW9yeSByYW5nZSBhbmQgbXVubG9ja192bWFfcGFnZSgpIGVhY2ggcmVzaWRlbnQgcGFnZSBtYXBwZWQgYnkKK3RoZSBWTUEuICBUaGlzIGVmZmVjdGl2ZWx5IG11bmxvY2tzIHRoZSBwYWdlLCBvbmx5IGlmIHRoaXMgaXMgdGhlIGxhc3QKK1ZNX0xPQ0tFRCBWTUEgdGhhdCBtYXBzIHRoZSBwYWdlLgorCisKK3RyeV90b191bm1hcCgpCistLS0tLS0tLS0tLS0tLQorCitQYWdlcyBjYW4sIG9mIGNvdXJzZSwgYmUgbWFwcGVkIGludG8gbXVsdGlwbGUgVk1Bcy4gIFNvbWUgb2YgdGhlc2UgVk1BcyBtYXkKK2hhdmUgVk1fTE9DS0VEIGZsYWcgc2V0LiAgSXQgaXMgcG9zc2libGUgZm9yIGEgcGFnZSBtYXBwZWQgaW50byBvbmUgb3IgbW9yZQorVk1fTE9DS0VEIFZNQXMgbm90IHRvIGhhdmUgdGhlIFBHX21sb2NrZWQgZmxhZyBzZXQgYW5kIHRoZXJlZm9yZSByZXNpZGUgb24gb25lCitvZiB0aGUgYWN0aXZlIG9yIGluYWN0aXZlIExSVSBsaXN0cy4gIFRoaXMgY291bGQgaGFwcGVuIGlmLCBmb3IgZXhhbXBsZSwgYSB0YXNrCitpbiB0aGUgcHJvY2VzcyBvZiBtdW5sb2NraW5nIHRoZSBwYWdlIGNvdWxkIG5vdCBpc29sYXRlIHRoZSBwYWdlIGZyb20gdGhlIExSVS4KK0FzIGEgcmVzdWx0LCB2bXNjYW4vc2hyaW5rX3BhZ2VfbGlzdCgpIG1pZ2h0IGVuY291bnRlciBzdWNoIGEgcGFnZSBhcyBkZXNjcmliZWQKK2luIHNlY3Rpb24gInZtc2NhbidzIGhhbmRsaW5nIG9mIHVuZXZpY3RhYmxlIHBhZ2VzIi4gIFRvIGhhbmRsZSB0aGlzIHNpdHVhdGlvbiwKK3RyeV90b191bm1hcCgpIGNoZWNrcyBmb3IgVk1fTE9DS0VEIFZNQXMgd2hpbGUgaXQgaXMgd2Fsa2luZyBhIHBhZ2UncyByZXZlcnNlCittYXAuCisKK3RyeV90b191bm1hcCgpIGlzIGFsd2F5cyBjYWxsZWQsIGJ5IGVpdGhlciB2bXNjYW4gZm9yIHJlY2xhaW0gb3IgZm9yIHBhZ2UKK21pZ3JhdGlvbiwgd2l0aCB0aGUgYXJndW1lbnQgcGFnZSBsb2NrZWQgYW5kIGlzb2xhdGVkIGZyb20gdGhlIExSVS4gIFNlcGFyYXRlCitmdW5jdGlvbnMgaGFuZGxlIGFub255bW91cyBhbmQgbWFwcGVkIGZpbGUgYW5kIEtTTSBwYWdlcywgYXMgdGhlc2UgdHlwZXMgb2YKK3BhZ2VzIGhhdmUgZGlmZmVyZW50IHJldmVyc2UgbWFwIGxvb2t1cCBtZWNoYW5pc21zLCB3aXRoIGRpZmZlcmVudCBsb2NraW5nLgorSW4gZWFjaCBjYXNlLCB3aGV0aGVyIHJtYXBfd2Fsa19hbm9uKCkgb3Igcm1hcF93YWxrX2ZpbGUoKSBvciBybWFwX3dhbGtfa3NtKCksCitpdCB3aWxsIGNhbGwgdHJ5X3RvX3VubWFwX29uZSgpIGZvciBldmVyeSBWTUEgd2hpY2ggbWlnaHQgY29udGFpbiB0aGUgcGFnZS4KKworV2hlbiB0cnlpbmcgdG8gcmVjbGFpbSwgaWYgdHJ5X3RvX3VubWFwX29uZSgpIGZpbmRzIHRoZSBwYWdlIGluIGEgVk1fTE9DS0VECitWTUEsIGl0IHdpbGwgdGhlbiBtbG9jayB0aGUgcGFnZSB2aWEgbWxvY2tfdm1hX3BhZ2UoKSBpbnN0ZWFkIG9mIHVubWFwcGluZyBpdCwKK2FuZCByZXR1cm4gU1dBUF9NTE9DSyB0byBpbmRpY2F0ZSB0aGF0IHRoZSBwYWdlIGlzIHVuZXZpY3RhYmxlOiBhbmQgdGhlIHNjYW4KK3N0b3BzIHRoZXJlLgorCittbG9ja192bWFfcGFnZSgpIGlzIGNhbGxlZCB3aGlsZSBob2xkaW5nIHRoZSBwYWdlIHRhYmxlJ3MgbG9jayAoaW4gYWRkaXRpb24KK3RvIHRoZSBwYWdlIGxvY2ssIGFuZCB0aGUgcm1hcCBsb2NrKTogdG8gc2VyaWFsaXplIGFnYWluc3QgY29uY3VycmVudCBtbG9jayBvcgorbXVubG9jayBvciBtdW5tYXAgc3lzdGVtIGNhbGxzLCBtbSB0ZWFyZG93biAobXVubG9ja192bWFfcGFnZXNfYWxsKSwgcmVjbGFpbSwKK2hvbGVwdW5jaGluZywgYW5kIHRydW5jYXRpb24gb2YgZmlsZSBwYWdlcyBhbmQgdGhlaXIgYW5vbnltb3VzIENPV2VkIHBhZ2VzLgorCisKK3RyeV90b19tdW5sb2NrKCkgUkVWRVJTRSBNQVAgU0NBTgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyBbIV0gVE9ETy9GSVhNRTogYSBiZXR0ZXIgbmFtZSBtaWdodCBiZSBwYWdlX21sb2NrZWQoKSAtIGFuYWxvZ291cyB0byB0aGUKKyAgICAgcGFnZV9yZWZlcmVuY2VkKCkgcmV2ZXJzZSBtYXAgd2Fsa2VyLgorCitXaGVuIG11bmxvY2tfdm1hX3BhZ2UoKSBbc2VlIHNlY3Rpb24gIm11bmxvY2soKS9tdW5sb2NrYWxsKCkgU3lzdGVtIENhbGwKK0hhbmRsaW5nIiBhYm92ZV0gdHJpZXMgdG8gbXVubG9jayBhIHBhZ2UsIGl0IG5lZWRzIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdAordGhlIHBhZ2UgaXMgbWFwcGVkIGJ5IGFueSBWTV9MT0NLRUQgVk1BIHdpdGhvdXQgYWN0dWFsbHkgYXR0ZW1wdGluZyB0byB1bm1hcAorYWxsIFBURXMgZnJvbSB0aGUgcGFnZS4gIEZvciB0aGlzIHB1cnBvc2UsIHRoZSB1bmV2aWN0YWJsZS9tbG9jayBpbmZyYXN0cnVjdHVyZQoraW50cm9kdWNlZCBhIHZhcmlhbnQgb2YgdHJ5X3RvX3VubWFwKCkgY2FsbGVkIHRyeV90b19tdW5sb2NrKCkuCisKK3RyeV90b19tdW5sb2NrKCkgY2FsbHMgdGhlIHNhbWUgZnVuY3Rpb25zIGFzIHRyeV90b191bm1hcCgpIGZvciBhbm9ueW1vdXMgYW5kCittYXBwZWQgZmlsZSBhbmQgS1NNIHBhZ2VzIHdpdGggYSBmbGFnIGFyZ3VtZW50IHNwZWNpZnlpbmcgdW5sb2NrIHZlcnN1cyB1bm1hcAorcHJvY2Vzc2luZy4gIEFnYWluLCB0aGVzZSBmdW5jdGlvbnMgd2FsayB0aGUgcmVzcGVjdGl2ZSByZXZlcnNlIG1hcHMgbG9va2luZworZm9yIFZNX0xPQ0tFRCBWTUFzLiAgV2hlbiBzdWNoIGEgVk1BIGlzIGZvdW5kLCBhcyBpbiB0aGUgdHJ5X3RvX3VubWFwKCkgY2FzZSwKK3RoZSBmdW5jdGlvbnMgbWxvY2sgdGhlIHBhZ2UgdmlhIG1sb2NrX3ZtYV9wYWdlKCkgYW5kIHJldHVybiBTV0FQX01MT0NLLiAgVGhpcwordW5kb2VzIHRoZSBwcmUtY2xlYXJpbmcgb2YgdGhlIHBhZ2UncyBQR19tbG9ja2VkIGRvbmUgYnkgbXVubG9ja192bWFfcGFnZS4KKworTm90ZSB0aGF0IHRyeV90b19tdW5sb2NrKCkncyByZXZlcnNlIG1hcCB3YWxrIG11c3QgdmlzaXQgZXZlcnkgVk1BIGluIGEgcGFnZSdzCityZXZlcnNlIG1hcCB0byBkZXRlcm1pbmUgdGhhdCBhIHBhZ2UgaXMgTk9UIG1hcHBlZCBpbnRvIGFueSBWTV9MT0NLRUQgVk1BLgorSG93ZXZlciwgdGhlIHNjYW4gY2FuIHRlcm1pbmF0ZSB3aGVuIGl0IGVuY291bnRlcnMgYSBWTV9MT0NLRUQgVk1BLgorQWx0aG91Z2ggdHJ5X3RvX211bmxvY2soKSBtaWdodCBiZSBjYWxsZWQgYSBncmVhdCBtYW55IHRpbWVzIHdoZW4gbXVubG9ja2luZyBhCitsYXJnZSByZWdpb24gb3IgdGVhcmluZyBkb3duIGEgbGFyZ2UgYWRkcmVzcyBzcGFjZSB0aGF0IGhhcyBiZWVuIG1sb2NrZWQgdmlhCittbG9ja2FsbCgpLCBvdmVyYWxsIHRoaXMgaXMgYSBmYWlybHkgcmFyZSBldmVudC4KKworCitQQUdFIFJFQ0xBSU0gSU4gc2hyaW5rXypfbGlzdCgpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3Nocmlua19hY3RpdmVfbGlzdCgpIGN1bGxzIGFueSBvYnZpb3VzbHkgdW5ldmljdGFibGUgcGFnZXMgLSBpLmUuCishcGFnZV9ldmljdGFibGUocGFnZSkgLSBkaXZlcnRpbmcgdGhlc2UgdG8gdGhlIHVuZXZpY3RhYmxlIGxpc3QuCitIb3dldmVyLCBzaHJpbmtfYWN0aXZlX2xpc3QoKSBvbmx5IHNlZXMgdW5ldmljdGFibGUgcGFnZXMgdGhhdCBtYWRlIGl0IG9udG8gdGhlCithY3RpdmUvaW5hY3RpdmUgbHJ1IGxpc3RzLiAgTm90ZSB0aGF0IHRoZXNlIHBhZ2VzIGRvIG5vdCBoYXZlIFBhZ2VVbmV2aWN0YWJsZQorc2V0IC0gb3RoZXJ3aXNlIHRoZXkgd291bGQgYmUgb24gdGhlIHVuZXZpY3RhYmxlIGxpc3QgYW5kIHNocmlua19hY3RpdmVfbGlzdAord291bGQgbmV2ZXIgc2VlIHRoZW0uCisKK1NvbWUgZXhhbXBsZXMgb2YgdGhlc2UgdW5ldmljdGFibGUgcGFnZXMgb24gdGhlIExSVSBsaXN0cyBhcmU6CisKKyAoMSkgcmFtZnMgcGFnZXMgdGhhdCBoYXZlIGJlZW4gcGxhY2VkIG9uIHRoZSBMUlUgbGlzdHMgd2hlbiBmaXJzdCBhbGxvY2F0ZWQuCisKKyAoMikgU0hNX0xPQ0snZCBzaGFyZWQgbWVtb3J5IHBhZ2VzLiAgc2htY3RsKFNITV9MT0NLKSBkb2VzIG5vdCBhdHRlbXB0IHRvCisgICAgIGFsbG9jYXRlIG9yIGZhdWx0IGluIHRoZSBwYWdlcyBpbiB0aGUgc2hhcmVkIG1lbW9yeSByZWdpb24uICBUaGlzIGhhcHBlbnMKKyAgICAgd2hlbiBhbiBhcHBsaWNhdGlvbiBhY2Nlc3NlcyB0aGUgcGFnZSB0aGUgZmlyc3QgdGltZSBhZnRlciBTSE1fTE9DSydpbmcKKyAgICAgdGhlIHNlZ21lbnQuCisKKyAoMykgbWxvY2tlZCBwYWdlcyB0aGF0IGNvdWxkIG5vdCBiZSBpc29sYXRlZCBmcm9tIHRoZSBMUlUgYW5kIG1vdmVkIHRvIHRoZQorICAgICB1bmV2aWN0YWJsZSBsaXN0IGluIG1sb2NrX3ZtYV9wYWdlKCkuCisKK3Nocmlua19pbmFjdGl2ZV9saXN0KCkgYWxzbyBkaXZlcnRzIGFueSB1bmV2aWN0YWJsZSBwYWdlcyB0aGF0IGl0IGZpbmRzIG9uIHRoZQoraW5hY3RpdmUgbGlzdHMgdG8gdGhlIGFwcHJvcHJpYXRlIHpvbmUncyB1bmV2aWN0YWJsZSBsaXN0LgorCitzaHJpbmtfaW5hY3RpdmVfbGlzdCgpIHNob3VsZCBvbmx5IHNlZSBTSE1fTE9DSydkIHBhZ2VzIHRoYXQgYmVjYW1lIFNITV9MT0NLJ2QKK2FmdGVyIHNocmlua19hY3RpdmVfbGlzdCgpIGhhZCBtb3ZlZCB0aGVtIHRvIHRoZSBpbmFjdGl2ZSBsaXN0LCBvciBwYWdlcyBtYXBwZWQKK2ludG8gVk1fTE9DS0VEIFZNQXMgdGhhdCBtdW5sb2NrX3ZtYV9wYWdlKCkgY291bGRuJ3QgaXNvbGF0ZSBmcm9tIHRoZSBMUlUgdG8KK3JlY2hlY2sgdmlhIHRyeV90b19tdW5sb2NrKCkuICBzaHJpbmtfaW5hY3RpdmVfbGlzdCgpIHdvbid0IG5vdGljZSB0aGUgbGF0dGVyLAorYnV0IHdpbGwgcGFzcyBvbiB0byBzaHJpbmtfcGFnZV9saXN0KCkuCisKK3Nocmlua19wYWdlX2xpc3QoKSBhZ2FpbiBjdWxscyBvYnZpb3VzbHkgdW5ldmljdGFibGUgcGFnZXMgdGhhdCBpdCBjb3VsZAorZW5jb3VudGVyIGZvciBzaW1pbGFyIHJlYXNvbiB0byBzaHJpbmtfaW5hY3RpdmVfbGlzdCgpLiAgUGFnZXMgbWFwcGVkIGludG8KK1ZNX0xPQ0tFRCBWTUFzIGJ1dCB3aXRob3V0IFBHX21sb2NrZWQgc2V0IHdpbGwgbWFrZSBpdCBhbGwgdGhlIHdheSB0bwordHJ5X3RvX3VubWFwKCkuICBzaHJpbmtfcGFnZV9saXN0KCkgd2lsbCBkaXZlcnQgdGhlbSB0byB0aGUgdW5ldmljdGFibGUgbGlzdAord2hlbiB0cnlfdG9fdW5tYXAoKSByZXR1cm5zIFNXQVBfTUxPQ0ssIGFzIGRpc2N1c3NlZCBhYm92ZS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdm0vdXNlcmZhdWx0ZmQudHh0IGIvRG9jdW1lbnRhdGlvbi92bS91c2VyZmF1bHRmZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBhM2M5NAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdm0vdXNlcmZhdWx0ZmQudHh0CkBAIC0wLDAgKzEsMTQ0IEBACis9IFVzZXJmYXVsdGZkID0KKworPT0gT2JqZWN0aXZlID09CisKK1VzZXJmYXVsdHMgYWxsb3cgdGhlIGltcGxlbWVudGF0aW9uIG9mIG9uLWRlbWFuZCBwYWdpbmcgZnJvbSB1c2VybGFuZAorYW5kIG1vcmUgZ2VuZXJhbGx5IHRoZXkgYWxsb3cgdXNlcmxhbmQgdG8gdGFrZSBjb250cm9sIG9mIHZhcmlvdXMKK21lbW9yeSBwYWdlIGZhdWx0cywgc29tZXRoaW5nIG90aGVyd2lzZSBvbmx5IHRoZSBrZXJuZWwgY29kZSBjb3VsZCBkby4KKworRm9yIGV4YW1wbGUgdXNlcmZhdWx0cyBhbGxvd3MgYSBwcm9wZXIgYW5kIG1vcmUgb3B0aW1hbCBpbXBsZW1lbnRhdGlvbgorb2YgdGhlIFBST1RfTk9ORStTSUdTRUdWIHRyaWNrLgorCis9PSBEZXNpZ24gPT0KKworVXNlcmZhdWx0cyBhcmUgZGVsaXZlcmVkIGFuZCByZXNvbHZlZCB0aHJvdWdoIHRoZSB1c2VyZmF1bHRmZCBzeXNjYWxsLgorCitUaGUgdXNlcmZhdWx0ZmQgKGFzaWRlIGZyb20gcmVnaXN0ZXJpbmcgYW5kIHVucmVnaXN0ZXJpbmcgdmlydHVhbAorbWVtb3J5IHJhbmdlcykgcHJvdmlkZXMgdHdvIHByaW1hcnkgZnVuY3Rpb25hbGl0aWVzOgorCisxKSByZWFkL1BPTExJTiBwcm90b2NvbCB0byBub3RpZnkgYSB1c2VybGFuZCB0aHJlYWQgb2YgdGhlIGZhdWx0cworICAgaGFwcGVuaW5nCisKKzIpIHZhcmlvdXMgVUZGRElPXyogaW9jdGxzIHRoYXQgY2FuIG1hbmFnZSB0aGUgdmlydHVhbCBtZW1vcnkgcmVnaW9ucworICAgcmVnaXN0ZXJlZCBpbiB0aGUgdXNlcmZhdWx0ZmQgdGhhdCBhbGxvd3MgdXNlcmxhbmQgdG8gZWZmaWNpZW50bHkKKyAgIHJlc29sdmUgdGhlIHVzZXJmYXVsdHMgaXQgcmVjZWl2ZXMgdmlhIDEpIG9yIHRvIG1hbmFnZSB0aGUgdmlydHVhbAorICAgbWVtb3J5IGluIHRoZSBiYWNrZ3JvdW5kCisKK1RoZSByZWFsIGFkdmFudGFnZSBvZiB1c2VyZmF1bHRzIGlmIGNvbXBhcmVkIHRvIHJlZ3VsYXIgdmlydHVhbCBtZW1vcnkKK21hbmFnZW1lbnQgb2YgbXJlbWFwL21wcm90ZWN0IGlzIHRoYXQgdGhlIHVzZXJmYXVsdHMgaW4gYWxsIHRoZWlyCitvcGVyYXRpb25zIG5ldmVyIGludm9sdmUgaGVhdnl3ZWlnaHQgc3RydWN0dXJlcyBsaWtlIHZtYXMgKGluIGZhY3QgdGhlCit1c2VyZmF1bHRmZCBydW50aW1lIGxvYWQgbmV2ZXIgdGFrZXMgdGhlIG1tYXBfc2VtIGZvciB3cml0aW5nKS4KKworVm1hcyBhcmUgbm90IHN1aXRhYmxlIGZvciBwYWdlLSAob3IgaHVnZXBhZ2UpIGdyYW51bGFyIGZhdWx0IHRyYWNraW5nCit3aGVuIGRlYWxpbmcgd2l0aCB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzIHRoYXQgY291bGQgc3BhbgorVGVyYWJ5dGVzLiBUb28gbWFueSB2bWFzIHdvdWxkIGJlIG5lZWRlZCBmb3IgdGhhdC4KKworVGhlIHVzZXJmYXVsdGZkIG9uY2Ugb3BlbmVkIGJ5IGludm9raW5nIHRoZSBzeXNjYWxsLCBjYW4gYWxzbyBiZQorcGFzc2VkIHVzaW5nIHVuaXggZG9tYWluIHNvY2tldHMgdG8gYSBtYW5hZ2VyIHByb2Nlc3MsIHNvIHRoZSBzYW1lCittYW5hZ2VyIHByb2Nlc3MgY291bGQgaGFuZGxlIHRoZSB1c2VyZmF1bHRzIG9mIGEgbXVsdGl0dWRlIG9mCitkaWZmZXJlbnQgcHJvY2Vzc2VzIHdpdGhvdXQgdGhlbSBiZWluZyBhd2FyZSBhYm91dCB3aGF0IGlzIGdvaW5nIG9uCisod2VsbCBvZiBjb3Vyc2UgdW5sZXNzIHRoZXkgbGF0ZXIgdHJ5IHRvIHVzZSB0aGUgdXNlcmZhdWx0ZmQKK3RoZW1zZWx2ZXMgb24gdGhlIHNhbWUgcmVnaW9uIHRoZSBtYW5hZ2VyIGlzIGFscmVhZHkgdHJhY2tpbmcsIHdoaWNoCitpcyBhIGNvcm5lciBjYXNlIHRoYXQgd291bGQgY3VycmVudGx5IHJldHVybiAtRUJVU1kpLgorCis9PSBBUEkgPT0KKworV2hlbiBmaXJzdCBvcGVuZWQgdGhlIHVzZXJmYXVsdGZkIG11c3QgYmUgZW5hYmxlZCBpbnZva2luZyB0aGUKK1VGRkRJT19BUEkgaW9jdGwgc3BlY2lmeWluZyBhIHVmZmRpb19hcGkuYXBpIHZhbHVlIHNldCB0byBVRkZEX0FQSSAob3IKK2EgbGF0ZXIgQVBJIHZlcnNpb24pIHdoaWNoIHdpbGwgc3BlY2lmeSB0aGUgcmVhZC9QT0xMSU4gcHJvdG9jb2wKK3VzZXJsYW5kIGludGVuZHMgdG8gc3BlYWsgb24gdGhlIFVGRkQgYW5kIHRoZSB1ZmZkaW9fYXBpLmZlYXR1cmVzCit1c2VybGFuZCByZXF1aXJlcy4gVGhlIFVGRkRJT19BUEkgaW9jdGwgaWYgc3VjY2Vzc2Z1bCAoaS5lLiBpZiB0aGUKK3JlcXVlc3RlZCB1ZmZkaW9fYXBpLmFwaSBpcyBzcG9rZW4gYWxzbyBieSB0aGUgcnVubmluZyBrZXJuZWwgYW5kIHRoZQorcmVxdWVzdGVkIGZlYXR1cmVzIGFyZSBnb2luZyB0byBiZSBlbmFibGVkKSB3aWxsIHJldHVybiBpbnRvCit1ZmZkaW9fYXBpLmZlYXR1cmVzIGFuZCB1ZmZkaW9fYXBpLmlvY3RscyB0d28gNjRiaXQgYml0bWFza3Mgb2YKK3Jlc3BlY3RpdmVseSBhbGwgdGhlIGF2YWlsYWJsZSBmZWF0dXJlcyBvZiB0aGUgcmVhZCgyKSBwcm90b2NvbCBhbmQKK3RoZSBnZW5lcmljIGlvY3RsIGF2YWlsYWJsZS4KKworT25jZSB0aGUgdXNlcmZhdWx0ZmQgaGFzIGJlZW4gZW5hYmxlZCB0aGUgVUZGRElPX1JFR0lTVEVSIGlvY3RsIHNob3VsZAorYmUgaW52b2tlZCAoaWYgcHJlc2VudCBpbiB0aGUgcmV0dXJuZWQgdWZmZGlvX2FwaS5pb2N0bHMgYml0bWFzaykgdG8KK3JlZ2lzdGVyIGEgbWVtb3J5IHJhbmdlIGluIHRoZSB1c2VyZmF1bHRmZCBieSBzZXR0aW5nIHRoZQordWZmZGlvX3JlZ2lzdGVyIHN0cnVjdHVyZSBhY2NvcmRpbmdseS4gVGhlIHVmZmRpb19yZWdpc3Rlci5tb2RlCitiaXRtYXNrIHdpbGwgc3BlY2lmeSB0byB0aGUga2VybmVsIHdoaWNoIGtpbmQgb2YgZmF1bHRzIHRvIHRyYWNrIGZvcgordGhlIHJhbmdlIChVRkZESU9fUkVHSVNURVJfTU9ERV9NSVNTSU5HIHdvdWxkIHRyYWNrIG1pc3NpbmcKK3BhZ2VzKS4gVGhlIFVGRkRJT19SRUdJU1RFUiBpb2N0bCB3aWxsIHJldHVybiB0aGUKK3VmZmRpb19yZWdpc3Rlci5pb2N0bHMgYml0bWFzayBvZiBpb2N0bHMgdGhhdCBhcmUgc3VpdGFibGUgdG8gcmVzb2x2ZQordXNlcmZhdWx0cyBvbiB0aGUgcmFuZ2UgcmVnaXN0ZXJlZC4gTm90IGFsbCBpb2N0bHMgd2lsbCBuZWNlc3NhcmlseSBiZQorc3VwcG9ydGVkIGZvciBhbGwgbWVtb3J5IHR5cGVzIGRlcGVuZGluZyBvbiB0aGUgdW5kZXJseWluZyB2aXJ0dWFsCittZW1vcnkgYmFja2VuZCAoYW5vbnltb3VzIG1lbW9yeSB2cyB0bXBmcyB2cyByZWFsIGZpbGViYWNrZWQKK21hcHBpbmdzKS4KKworVXNlcmxhbmQgY2FuIHVzZSB0aGUgdWZmZGlvX3JlZ2lzdGVyLmlvY3RscyB0byBtYW5hZ2UgdGhlIHZpcnR1YWwKK2FkZHJlc3Mgc3BhY2UgaW4gdGhlIGJhY2tncm91bmQgKHRvIGFkZCBvciBwb3RlbnRpYWxseSBhbHNvIHJlbW92ZQorbWVtb3J5IGZyb20gdGhlIHVzZXJmYXVsdGZkIHJlZ2lzdGVyZWQgcmFuZ2UpLiBUaGlzIG1lYW5zIGEgdXNlcmZhdWx0Citjb3VsZCBiZSB0cmlnZ2VyaW5nIGp1c3QgYmVmb3JlIHVzZXJsYW5kIG1hcHMgaW4gdGhlIGJhY2tncm91bmQgdGhlCit1c2VyLWZhdWx0ZWQgcGFnZS4KKworVGhlIHByaW1hcnkgaW9jdGwgdG8gcmVzb2x2ZSB1c2VyZmF1bHRzIGlzIFVGRkRJT19DT1BZLiBUaGF0CithdG9taWNhbGx5IGNvcGllcyBhIHBhZ2UgaW50byB0aGUgdXNlcmZhdWx0IHJlZ2lzdGVyZWQgcmFuZ2UgYW5kIHdha2VzCit1cCB0aGUgYmxvY2tlZCB1c2VyZmF1bHRzICh1bmxlc3MgdWZmZGlvX2NvcHkubW9kZSAmCitVRkZESU9fQ09QWV9NT0RFX0RPTlRXQUtFIGlzIHNldCkuIE90aGVyIGlvY3RsIHdvcmtzIHNpbWlsYXJseSB0bworVUZGRElPX0NPUFkuIFRoZXkncmUgYXRvbWljIGFzIGluIGd1YXJhbnRlZWluZyB0aGF0IG5vdGhpbmcgY2FuIHNlZSBhbgoraGFsZiBjb3BpZWQgcGFnZSBzaW5jZSBpdCdsbCBrZWVwIHVzZXJmYXVsdGluZyB1bnRpbCB0aGUgY29weSBoYXMKK2ZpbmlzaGVkLgorCis9PSBRRU1VL0tWTSA9PQorCitRRU1VL0tWTSBpcyB1c2luZyB0aGUgdXNlcmZhdWx0ZmQgc3lzY2FsbCB0byBpbXBsZW1lbnQgcG9zdGNvcHkgbGl2ZQorbWlncmF0aW9uLiBQb3N0Y29weSBsaXZlIG1pZ3JhdGlvbiBpcyBvbmUgZm9ybSBvZiBtZW1vcnkKK2V4dGVybmFsaXphdGlvbiBjb25zaXN0aW5nIG9mIGEgdmlydHVhbCBtYWNoaW5lIHJ1bm5pbmcgd2l0aCBwYXJ0IG9yCithbGwgb2YgaXRzIG1lbW9yeSByZXNpZGluZyBvbiBhIGRpZmZlcmVudCBub2RlIGluIHRoZSBjbG91ZC4gVGhlCit1c2VyZmF1bHRmZCBhYnN0cmFjdGlvbiBpcyBnZW5lcmljIGVub3VnaCB0aGF0IG5vdCBhIHNpbmdsZSBsaW5lIG9mCitLVk0ga2VybmVsIGNvZGUgaGFkIHRvIGJlIG1vZGlmaWVkIGluIG9yZGVyIHRvIGFkZCBwb3N0Y29weSBsaXZlCittaWdyYXRpb24gdG8gUUVNVS4KKworR3Vlc3QgYXN5bmMgcGFnZSBmYXVsdHMsIEZPTExfTk9XQUlUIGFuZCBhbGwgb3RoZXIgR1VQIGZlYXR1cmVzIHdvcmsKK2p1c3QgZmluZSBpbiBjb21iaW5hdGlvbiB3aXRoIHVzZXJmYXVsdHMuIFVzZXJmYXVsdHMgdHJpZ2dlciBhc3luYworcGFnZSBmYXVsdHMgaW4gdGhlIGd1ZXN0IHNjaGVkdWxlciBzbyB0aG9zZSBndWVzdCBwcm9jZXNzZXMgdGhhdAorYXJlbid0IHdhaXRpbmcgZm9yIHVzZXJmYXVsdHMgKGkuZS4gbmV0d29yayBib3VuZCkgY2FuIGtlZXAgcnVubmluZyBpbgordGhlIGd1ZXN0IHZjcHVzLgorCitJdCBpcyBnZW5lcmFsbHkgYmVuZWZpY2lhbCB0byBydW4gb25lIHBhc3Mgb2YgcHJlY29weSBsaXZlIG1pZ3JhdGlvbgoranVzdCBiZWZvcmUgc3RhcnRpbmcgcG9zdGNvcHkgbGl2ZSBtaWdyYXRpb24sIGluIG9yZGVyIHRvIGF2b2lkCitnZW5lcmF0aW5nIHVzZXJmYXVsdHMgZm9yIHJlYWRvbmx5IGd1ZXN0IHJlZ2lvbnMuCisKK1RoZSBpbXBsZW1lbnRhdGlvbiBvZiBwb3N0Y29weSBsaXZlIG1pZ3JhdGlvbiBjdXJyZW50bHkgdXNlcyBvbmUKK3NpbmdsZSBiaWRpcmVjdGlvbmFsIHNvY2tldCBidXQgaW4gdGhlIGZ1dHVyZSB0d28gZGlmZmVyZW50IHNvY2tldHMKK3dpbGwgYmUgdXNlZCAodG8gcmVkdWNlIHRoZSBsYXRlbmN5IG9mIHRoZSB1c2VyZmF1bHRzIHRvIHRoZSBtaW5pbXVtCitwb3NzaWJsZSB3aXRob3V0IGhhdmluZyB0byBkZWNyZWFzZSAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3dtZW0pLgorCitUaGUgUUVNVSBpbiB0aGUgc291cmNlIG5vZGUgd3JpdGVzIGFsbCBwYWdlcyB0aGF0IGl0IGtub3dzIGFyZSBtaXNzaW5nCitpbiB0aGUgZGVzdGluYXRpb24gbm9kZSwgaW50byB0aGUgc29ja2V0LCBhbmQgdGhlIG1pZ3JhdGlvbiB0aHJlYWQgb2YKK3RoZSBRRU1VIHJ1bm5pbmcgaW4gdGhlIGRlc3RpbmF0aW9uIG5vZGUgcnVucyBVRkZESU9fQ09QWXxaRVJPUEFHRQoraW9jdGxzIG9uIHRoZSB1c2VyZmF1bHRmZCBpbiBvcmRlciB0byBtYXAgdGhlIHJlY2VpdmVkIHBhZ2VzIGludG8gdGhlCitndWVzdCAoVUZGRElPX1pFUk9DT1BZIGlzIHVzZWQgaWYgdGhlIHNvdXJjZSBwYWdlIHdhcyBhIHplcm8gcGFnZSkuCisKK0EgZGlmZmVyZW50IHBvc3Rjb3B5IHRocmVhZCBpbiB0aGUgZGVzdGluYXRpb24gbm9kZSBsaXN0ZW5zIHdpdGgKK3BvbGwoKSB0byB0aGUgdXNlcmZhdWx0ZmQgaW4gcGFyYWxsZWwuIFdoZW4gYSBQT0xMSU4gZXZlbnQgaXMKK2dlbmVyYXRlZCBhZnRlciBhIHVzZXJmYXVsdCB0cmlnZ2VycywgdGhlIHBvc3Rjb3B5IHRocmVhZCByZWFkKCkgZnJvbQordGhlIHVzZXJmYXVsdGZkIGFuZCByZWNlaXZlcyB0aGUgZmF1bHQgYWRkcmVzcyAob3IgLUVBR0FJTiBpbiBjYXNlIHRoZQordXNlcmZhdWx0IHdhcyBhbHJlYWR5IHJlc29sdmVkIGFuZCB3YWtlbiBieSBhIFVGRkRJT19DT1BZfFpFUk9QQUdFIHJ1bgorYnkgdGhlIHBhcmFsbGVsIFFFTVUgbWlncmF0aW9uIHRocmVhZCkuCisKK0FmdGVyIHRoZSBRRU1VIHBvc3Rjb3B5IHRocmVhZCAocnVubmluZyBpbiB0aGUgZGVzdGluYXRpb24gbm9kZSkgZ2V0cwordGhlIHVzZXJmYXVsdCBhZGRyZXNzIGl0IHdyaXRlcyB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG1pc3NpbmcgcGFnZQoraW50byB0aGUgc29ja2V0LiBUaGUgUUVNVSBzb3VyY2Ugbm9kZSByZWNlaXZlcyB0aGUgaW5mb3JtYXRpb24gYW5kCityb3VnaGx5ICJzZWVrcyIgdG8gdGhhdCBwYWdlIGFkZHJlc3MgYW5kIGNvbnRpbnVlcyBzZW5kaW5nIGFsbAorcmVtYWluaW5nIG1pc3NpbmcgcGFnZXMgZnJvbSB0aGF0IG5ldyBwYWdlIG9mZnNldC4gU29vbiBhZnRlciB0aGF0CisoanVzdCB0aGUgdGltZSB0byBmbHVzaCB0aGUgdGNwX3dtZW0gcXVldWUgdGhyb3VnaCB0aGUgbmV0d29yaykgdGhlCittaWdyYXRpb24gdGhyZWFkIGluIHRoZSBRRU1VIHJ1bm5pbmcgaW4gdGhlIGRlc3RpbmF0aW9uIG5vZGUgd2lsbAorcmVjZWl2ZSB0aGUgcGFnZSB0aGF0IHRyaWdnZXJlZCB0aGUgdXNlcmZhdWx0IGFuZCBpdCdsbCBtYXAgaXQgYXMKK3VzdWFsIHdpdGggdGhlIFVGRkRJT19DT1BZfFpFUk9QQUdFICh3aXRob3V0IGFjdHVhbGx5IGtub3dpbmcgaWYgaXQKK3dhcyBzcG9udGFuZW91c2x5IHNlbnQgYnkgdGhlIHNvdXJjZSBvciBpZiBpdCB3YXMgYW4gdXJnZW50IHBhZ2UKK3JlcXVlc3RlZCB0aHJvdWdoIGFuIHVzZXJmYXVsdCkuCisKK0J5IHRoZSB0aW1lIHRoZSB1c2VyZmF1bHRzIHN0YXJ0LCB0aGUgUUVNVSBpbiB0aGUgZGVzdGluYXRpb24gbm9kZQorZG9lc24ndCBuZWVkIHRvIGtlZXAgYW55IHBlci1wYWdlIHN0YXRlIGJpdG1hcCByZWxhdGl2ZSB0byB0aGUgbGl2ZQorbWlncmF0aW9uIGFyb3VuZCBhbmQgYSBzaW5nbGUgcGVyLXBhZ2UgYml0bWFwIGhhcyB0byBiZSBtYWludGFpbmVkIGluCit0aGUgUUVNVSBydW5uaW5nIGluIHRoZSBzb3VyY2Ugbm9kZSB0byBrbm93IHdoaWNoIHBhZ2VzIGFyZSBzdGlsbAorbWlzc2luZyBpbiB0aGUgZGVzdGluYXRpb24gbm9kZS4gVGhlIGJpdG1hcCBpbiB0aGUgc291cmNlIG5vZGUgaXMKK2NoZWNrZWQgdG8gZmluZCB3aGljaCBtaXNzaW5nIHBhZ2VzIHRvIHNlbmQgaW4gcm91bmQgcm9iaW4gYW5kIHdlIHNlZWsKK292ZXIgaXQgd2hlbiByZWNlaXZpbmcgaW5jb21pbmcgdXNlcmZhdWx0cy4gQWZ0ZXIgc2VuZGluZyBlYWNoIHBhZ2Ugb2YKK2NvdXJzZSB0aGUgYml0bWFwIGlzIHVwZGF0ZWQgYWNjb3JkaW5nbHkuIEl0J3MgYWxzbyB1c2VmdWwgdG8gYXZvaWQKK3NlbmRpbmcgdGhlIHNhbWUgcGFnZSB0d2ljZSAoaW4gY2FzZSB0aGUgdXNlcmZhdWx0IGlzIHJlYWQgYnkgdGhlCitwb3N0Y29weSB0aHJlYWQganVzdCBiZWZvcmUgVUZGRElPX0NPUFl8WkVST1BBR0UgcnVucyBpbiB0aGUgbWlncmF0aW9uCit0aHJlYWQpLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92bS96c21hbGxvYy50eHQgYi9Eb2N1bWVudGF0aW9uL3ZtL3pzbWFsbG9jLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NGVkNjNjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92bS96c21hbGxvYy50eHQKQEAgLTAsMCArMSw3MCBAQAorenNtYWxsb2MKKy0tLS0tLS0tCisKK1RoaXMgYWxsb2NhdG9yIGlzIGRlc2lnbmVkIGZvciB1c2Ugd2l0aCB6cmFtLiBUaHVzLCB0aGUgYWxsb2NhdG9yIGlzCitzdXBwb3NlZCB0byB3b3JrIHdlbGwgdW5kZXIgbG93IG1lbW9yeSBjb25kaXRpb25zLiBJbiBwYXJ0aWN1bGFyLCBpdAorbmV2ZXIgYXR0ZW1wdHMgaGlnaGVyIG9yZGVyIHBhZ2UgYWxsb2NhdGlvbiB3aGljaCBpcyB2ZXJ5IGxpa2VseSB0bworZmFpbCB1bmRlciBtZW1vcnkgcHJlc3N1cmUuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB3ZSBqdXN0IHVzZSBzaW5nbGUKKygwLW9yZGVyKSBwYWdlcywgaXQgd291bGQgc3VmZmVyIGZyb20gdmVyeSBoaWdoIGZyYWdtZW50YXRpb24gLS0KK2FueSBvYmplY3Qgb2Ygc2l6ZSBQQUdFX1NJWkUvMiBvciBsYXJnZXIgd291bGQgb2NjdXB5IGFuIGVudGlyZSBwYWdlLgorVGhpcyB3YXMgb25lIG9mIHRoZSBtYWpvciBpc3N1ZXMgd2l0aCBpdHMgcHJlZGVjZXNzb3IgKHh2bWFsbG9jKS4KKworVG8gb3ZlcmNvbWUgdGhlc2UgaXNzdWVzLCB6c21hbGxvYyBhbGxvY2F0ZXMgYSBidW5jaCBvZiAwLW9yZGVyIHBhZ2VzCithbmQgbGlua3MgdGhlbSB0b2dldGhlciB1c2luZyB2YXJpb3VzICdzdHJ1Y3QgcGFnZScgZmllbGRzLiBUaGVzZSBsaW5rZWQKK3BhZ2VzIGFjdCBhcyBhIHNpbmdsZSBoaWdoZXItb3JkZXIgcGFnZSBpLmUuIGFuIG9iamVjdCBjYW4gc3BhbiAwLW9yZGVyCitwYWdlIGJvdW5kYXJpZXMuIFRoZSBjb2RlIHJlZmVycyB0byB0aGVzZSBsaW5rZWQgcGFnZXMgYXMgYSBzaW5nbGUgZW50aXR5CitjYWxsZWQgenNwYWdlLgorCitGb3Igc2ltcGxpY2l0eSwgenNtYWxsb2MgY2FuIG9ubHkgYWxsb2NhdGUgb2JqZWN0cyBvZiBzaXplIHVwIHRvIFBBR0VfU0laRQorc2luY2UgdGhpcyBzYXRpc2ZpZXMgdGhlIHJlcXVpcmVtZW50cyBvZiBhbGwgaXRzIGN1cnJlbnQgdXNlcnMgKGluIHRoZQord29yc3QgY2FzZSwgcGFnZSBpcyBpbmNvbXByZXNzaWJsZSBhbmQgaXMgdGh1cyBzdG9yZWQgImFzLWlzIiBpLmUuIGluCit1bmNvbXByZXNzZWQgZm9ybSkuIEZvciBhbGxvY2F0aW9uIHJlcXVlc3RzIGxhcmdlciB0aGFuIHRoaXMgc2l6ZSwgZmFpbHVyZQoraXMgcmV0dXJuZWQgKHNlZSB6c19tYWxsb2MpLgorCitBZGRpdGlvbmFsbHksIHpzX21hbGxvYygpIGRvZXMgbm90IHJldHVybiBhIGRlcmVmZXJlbmNlYWJsZSBwb2ludGVyLgorSW5zdGVhZCwgaXQgcmV0dXJucyBhbiBvcGFxdWUgaGFuZGxlICh1bnNpZ25lZCBsb25nKSB3aGljaCBlbmNvZGVzIGFjdHVhbAorbG9jYXRpb24gb2YgdGhlIGFsbG9jYXRlZCBvYmplY3QuIFRoZSByZWFzb24gZm9yIHRoaXMgaW5kaXJlY3Rpb24gaXMgdGhhdAorenNtYWxsb2MgZG9lcyBub3Qga2VlcCB6c3BhZ2VzIHBlcm1hbmVudGx5IG1hcHBlZCBzaW5jZSB0aGF0IHdvdWxkIGNhdXNlCitpc3N1ZXMgb24gMzItYml0IHN5c3RlbXMgd2hlcmUgdGhlIFZBIHJlZ2lvbiBmb3Iga2VybmVsIHNwYWNlIG1hcHBpbmdzCitpcyB2ZXJ5IHNtYWxsLiBTbywgYmVmb3JlIHVzaW5nIHRoZSBhbGxvY2F0aW5nIG1lbW9yeSwgdGhlIG9iamVjdCBoYXMgdG8KK2JlIG1hcHBlZCB1c2luZyB6c19tYXBfb2JqZWN0KCkgdG8gZ2V0IGEgdXNhYmxlIHBvaW50ZXIgYW5kIHN1YnNlcXVlbnRseQordW5tYXBwZWQgdXNpbmcgenNfdW5tYXBfb2JqZWN0KCkuCisKK3N0YXQKKy0tLS0KKworV2l0aCBDT05GSUdfWlNNQUxMT0NfU1RBVCwgd2UgY291bGQgc2VlIHpzbWFsbG9jIGludGVybmFsIGluZm9ybWF0aW9uIHZpYQorL3N5cy9rZXJuZWwvZGVidWcvenNtYWxsb2MvPHVzZXIgbmFtZT4uIEhlcmUgaXMgYSBzYW1wbGUgb2Ygc3RhdCBvdXRwdXQ6CisKKyMgY2F0IC9zeXMva2VybmVsL2RlYnVnL3pzbWFsbG9jL3pyYW0wL2NsYXNzZXMKKworIGNsYXNzICBzaXplIGFsbW9zdF9mdWxsIGFsbW9zdF9lbXB0eSBvYmpfYWxsb2NhdGVkICAgb2JqX3VzZWQgcGFnZXNfdXNlZCBwYWdlc19wZXJfenNwYWdlCisgICAgLi4KKyAgICAuLgorICAgICA5ICAgMTc2ICAgICAgICAgICAwICAgICAgICAgICAgMSAgICAgICAgICAgMTg2ICAgICAgICAxMjkgICAgICAgICAgOCAgICAgICAgICAgICAgICA0CisgICAgMTAgICAxOTIgICAgICAgICAgIDEgICAgICAgICAgICAwICAgICAgICAgIDI4ODAgICAgICAgMjg3MiAgICAgICAgMTM1ICAgICAgICAgICAgICAgIDMKKyAgICAxMSAgIDIwOCAgICAgICAgICAgMCAgICAgICAgICAgIDEgICAgICAgICAgIDgxOSAgICAgICAgNzk1ICAgICAgICAgNDIgICAgICAgICAgICAgICAgMgorICAgIDEyICAgMjI0ICAgICAgICAgICAwICAgICAgICAgICAgMSAgICAgICAgICAgMjE5ICAgICAgICAxNTkgICAgICAgICAxMiAgICAgICAgICAgICAgICA0CisgICAgLi4KKyAgICAuLgorCisKK2NsYXNzOiBpbmRleAorc2l6ZTogb2JqZWN0IHNpemUgenNwYWdlIHN0b3JlcworYWxtb3N0X2VtcHR5OiB0aGUgbnVtYmVyIG9mIFpTX0FMTU9TVF9FTVBUWSB6c3BhZ2VzKHNlZSBiZWxvdykKK2FsbW9zdF9mdWxsOiB0aGUgbnVtYmVyIG9mIFpTX0FMTU9TVF9GVUxMIHpzcGFnZXMoc2VlIGJlbG93KQorb2JqX2FsbG9jYXRlZDogdGhlIG51bWJlciBvZiBvYmplY3RzIGFsbG9jYXRlZAorb2JqX3VzZWQ6IHRoZSBudW1iZXIgb2Ygb2JqZWN0cyBhbGxvY2F0ZWQgdG8gdGhlIHVzZXIKK3BhZ2VzX3VzZWQ6IHRoZSBudW1iZXIgb2YgcGFnZXMgYWxsb2NhdGVkIGZvciB0aGUgY2xhc3MKK3BhZ2VzX3Blcl96c3BhZ2U6IHRoZSBudW1iZXIgb2YgMC1vcmRlciBwYWdlcyB0byBtYWtlIGEgenNwYWdlCisKK1dlIGFzc2lnbiBhIHpzcGFnZSB0byBaU19BTE1PU1RfRU1QVFkgZnVsbG5lc3MgZ3JvdXAgd2hlbjoKKyAgICAgIG4gPD0gTiAvIGYsIHdoZXJlCituID0gbnVtYmVyIG9mIGFsbG9jYXRlZCBvYmplY3RzCitOID0gdG90YWwgbnVtYmVyIG9mIG9iamVjdHMgenNwYWdlIGNhbiBzdG9yZQorZiA9IGZ1bGxuZXNzX3RocmVzaG9sZF9mcmFjKGllLCA0IGF0IHRoZSBtb21lbnQpCisKK1NpbWlsYXJseSwgd2UgYXNzaWduIHpzcGFnZSB0bzoKKyAgICAgIFpTX0FMTU9TVF9GVUxMICB3aGVuIG4gPiBOIC8gZgorICAgICAgWlNfRU1QVFkgICAgICAgIHdoZW4gbiA9PSAwCisgICAgICBaU19GVUxMICAgICAgICAgd2hlbiBuID09IE4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdm0venN3YXAudHh0IGIvRG9jdW1lbnRhdGlvbi92bS96c3dhcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODlmZmY3ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdm0venN3YXAudHh0CkBAIC0wLDAgKzEsMTAyIEBACitPdmVydmlldzoKKworWnN3YXAgaXMgYSBsaWdodHdlaWdodCBjb21wcmVzc2VkIGNhY2hlIGZvciBzd2FwIHBhZ2VzLiBJdCB0YWtlcyBwYWdlcyB0aGF0IGFyZQoraW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgc3dhcHBlZCBvdXQgYW5kIGF0dGVtcHRzIHRvIGNvbXByZXNzIHRoZW0gaW50byBhCitkeW5hbWljYWxseSBhbGxvY2F0ZWQgUkFNLWJhc2VkIG1lbW9yeSBwb29sLiAgenN3YXAgYmFzaWNhbGx5IHRyYWRlcyBDUFUgY3ljbGVzCitmb3IgcG90ZW50aWFsbHkgcmVkdWNlZCBzd2FwIEkvTy7CoCBUaGlzIHRyYWRlLW9mZiBjYW4gYWxzbyByZXN1bHQgaW4gYQorc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgaWYgcmVhZHMgZnJvbSB0aGUgY29tcHJlc3NlZCBjYWNoZSBhcmUKK2Zhc3RlciB0aGFuIHJlYWRzIGZyb20gYSBzd2FwIGRldmljZS4KKworTk9URTogWnN3YXAgaXMgYSBuZXcgZmVhdHVyZSBhcyBvZiB2My4xMSBhbmQgaW50ZXJhY3RzIGhlYXZpbHkgd2l0aCBtZW1vcnkKK3JlY2xhaW0uICBUaGlzIGludGVyYWN0aW9uIGhhcyBub3QgYmVlbiBmdWxseSBleHBsb3JlZCBvbiB0aGUgbGFyZ2Ugc2V0IG9mCitwb3RlbnRpYWwgY29uZmlndXJhdGlvbnMgYW5kIHdvcmtsb2FkcyB0aGF0IGV4aXN0LiAgRm9yIHRoaXMgcmVhc29uLCB6c3dhcAoraXMgYSB3b3JrIGluIHByb2dyZXNzIGFuZCBzaG91bGQgYmUgY29uc2lkZXJlZCBleHBlcmltZW50YWwuCisKK1NvbWUgcG90ZW50aWFsIGJlbmVmaXRzOgorKiBEZXNrdG9wL2xhcHRvcCB1c2VycyB3aXRoIGxpbWl0ZWQgUkFNIGNhcGFjaXRpZXMgY2FuIG1pdGlnYXRlIHRoZQorwqDCoMKgIHBlcmZvcm1hbmNlIGltcGFjdCBvZiBzd2FwcGluZy4KKyogT3ZlcmNvbW1pdHRlZCBndWVzdHMgdGhhdCBzaGFyZSBhIGNvbW1vbiBJL08gcmVzb3VyY2UgY2FuCivCoMKgwqAgZHJhbWF0aWNhbGx5IHJlZHVjZSB0aGVpciBzd2FwIEkvTyBwcmVzc3VyZSwgYXZvaWRpbmcgaGVhdnkgaGFuZGVkIEkvTworICAgIHRocm90dGxpbmcgYnkgdGhlIGh5cGVydmlzb3IuwqBUaGlzIGFsbG93cyBtb3JlIHdvcmsgdG8gZ2V0IGRvbmUgd2l0aCBsZXNzCisgICAgaW1wYWN0IHRvIHRoZSBndWVzdCB3b3JrbG9hZCBhbmQgZ3Vlc3RzIHNoYXJpbmcgdGhlIEkvTyBzdWJzeXN0ZW0KKyogVXNlcnMgd2l0aCBTU0RzIGFzIHN3YXAgZGV2aWNlcyBjYW4gZXh0ZW5kIHRoZSBsaWZlIG9mIHRoZSBkZXZpY2UgYnkKK8KgwqDCoCBkcmFzdGljYWxseSByZWR1Y2luZyBsaWZlLXNob3J0ZW5pbmcgd3JpdGVzLgorCitac3dhcCBldmljdHMgcGFnZXMgZnJvbSBjb21wcmVzc2VkIGNhY2hlIG9uIGFuIExSVSBiYXNpcyB0byB0aGUgYmFja2luZyBzd2FwCitkZXZpY2Ugd2hlbiB0aGUgY29tcHJlc3NlZCBwb29sIHJlYWNoZXMgaXRzIHNpemUgbGltaXQuICBUaGlzIHJlcXVpcmVtZW50IGhhZAorYmVlbiBpZGVudGlmaWVkIGluIHByaW9yIGNvbW11bml0eSBkaXNjdXNzaW9ucy4KKworWnN3YXAgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCBidXQgY2FuIGJlIGVuYWJsZWQgYXQgYm9vdCB0aW1lIGJ5IHNldHRpbmcKK3RoZSAiZW5hYmxlZCIgYXR0cmlidXRlIHRvIDEgYXQgYm9vdCB0aW1lLiBpZTogenN3YXAuZW5hYmxlZD0xLiAgWnN3YXAKK2NhbiBhbHNvIGJlIGVuYWJsZWQgYW5kIGRpc2FibGVkIGF0IHJ1bnRpbWUgdXNpbmcgdGhlIHN5c2ZzIGludGVyZmFjZS4KK0FuIGV4YW1wbGUgY29tbWFuZCB0byBlbmFibGUgenN3YXAgYXQgcnVudGltZSwgYXNzdW1pbmcgc3lzZnMgaXMgbW91bnRlZAorYXQgL3N5cywgaXM6CisKK2VjaG8gMSA+IC9zeXMvbW9kdWxlL3pzd2FwL3BhcmFtZXRlcnMvZW5hYmxlZAorCitXaGVuIHpzd2FwIGlzIGRpc2FibGVkIGF0IHJ1bnRpbWUgaXQgd2lsbCBzdG9wIHN0b3JpbmcgcGFnZXMgdGhhdCBhcmUKK2JlaW5nIHN3YXBwZWQgb3V0LiAgSG93ZXZlciwgaXQgd2lsbCBfbm90XyBpbW1lZGlhdGVseSB3cml0ZSBvdXQgb3IgZmF1bHQKK2JhY2sgaW50byBtZW1vcnkgYWxsIG9mIHRoZSBwYWdlcyBzdG9yZWQgaW4gdGhlIGNvbXByZXNzZWQgcG9vbC4gIFRoZQorcGFnZXMgc3RvcmVkIGluIHpzd2FwIHdpbGwgcmVtYWluIGluIHRoZSBjb21wcmVzc2VkIHBvb2wgdW50aWwgdGhleSBhcmUKK2VpdGhlciBpbnZhbGlkYXRlZCBvciBmYXVsdGVkIGJhY2sgaW50byBtZW1vcnkuICBJbiBvcmRlciB0byBmb3JjZSBhbGwKK3BhZ2VzIG91dCBvZiB0aGUgY29tcHJlc3NlZCBwb29sLCBhIHN3YXBvZmYgb24gdGhlIHN3YXAgZGV2aWNlKHMpIHdpbGwKK2ZhdWx0IGJhY2sgaW50byBtZW1vcnkgYWxsIHN3YXBwZWQgb3V0IHBhZ2VzLCBpbmNsdWRpbmcgdGhvc2UgaW4gdGhlCitjb21wcmVzc2VkIHBvb2wuCisKK0Rlc2lnbjoKKworWnN3YXAgcmVjZWl2ZXMgcGFnZXMgZm9yIGNvbXByZXNzaW9uIHRocm91Z2ggdGhlIEZyb250c3dhcCBBUEkgYW5kIGlzIGFibGUgdG8KK2V2aWN0IHBhZ2VzIGZyb20gaXRzIG93biBjb21wcmVzc2VkIHBvb2wgb24gYW4gTFJVIGJhc2lzIGFuZCB3cml0ZSB0aGVtIGJhY2sgdG8KK3RoZSBiYWNraW5nIHN3YXAgZGV2aWNlIGluIHRoZSBjYXNlIHRoYXQgdGhlIGNvbXByZXNzZWQgcG9vbCBpcyBmdWxsLgorCitac3dhcCBtYWtlcyB1c2Ugb2YgenBvb2wgZm9yIHRoZSBtYW5hZ2luZyB0aGUgY29tcHJlc3NlZCBtZW1vcnkgcG9vbC4gIEVhY2gKK2FsbG9jYXRpb24gaW4genBvb2wgaXMgbm90IGRpcmVjdGx5IGFjY2Vzc2libGUgYnkgYWRkcmVzcy4gIFJhdGhlciwgYSBoYW5kbGUgaXMKK3JldHVybmVkIGJ5IHRoZSBhbGxvY2F0aW9uIHJvdXRpbmUgYW5kIHRoYXQgaGFuZGxlIG11c3QgYmUgbWFwcGVkIGJlZm9yZSBiZWluZworYWNjZXNzZWQuICBUaGUgY29tcHJlc3NlZCBtZW1vcnkgcG9vbCBncm93cyBvbiBkZW1hbmQgYW5kIHNocmlua3MgYXMgY29tcHJlc3NlZAorcGFnZXMgYXJlIGZyZWVkLiAgVGhlIHBvb2wgaXMgbm90IHByZWFsbG9jYXRlZC4gIEJ5IGRlZmF1bHQsIGEgenBvb2wgb2YgdHlwZQoremJ1ZCBpcyBjcmVhdGVkLCBidXQgaXQgY2FuIGJlIHNlbGVjdGVkIGF0IGJvb3QgdGltZSBieSBzZXR0aW5nIHRoZSAienBvb2wiCithdHRyaWJ1dGUsIGUuZy4genN3YXAuenBvb2w9emJ1ZC4gIEl0IGNhbiBhbHNvIGJlIGNoYW5nZWQgYXQgcnVudGltZSB1c2luZyB0aGUKK3N5c2ZzICJ6cG9vbCIgYXR0cmlidXRlLCBlLmcuCisKK2VjaG8gemJ1ZCA+IC9zeXMvbW9kdWxlL3pzd2FwL3BhcmFtZXRlcnMvenBvb2wKKworVGhlIHpidWQgdHlwZSB6cG9vbCBhbGxvY2F0ZXMgZXhhY3RseSAxIHBhZ2UgdG8gc3RvcmUgMiBjb21wcmVzc2VkIHBhZ2VzLCB3aGljaAorbWVhbnMgdGhlIGNvbXByZXNzaW9uIHJhdGlvIHdpbGwgYWx3YXlzIGJlIDI6MSBvciB3b3JzZSAoYmVjYXVzZSBvZiBoYWxmLWZ1bGwKK3pidWQgcGFnZXMpLiAgVGhlIHpzbWFsbG9jIHR5cGUgenBvb2wgaGFzIGEgbW9yZSBjb21wbGV4IGNvbXByZXNzZWQgcGFnZQorc3RvcmFnZSBtZXRob2QsIGFuZCBpdCBjYW4gYWNoaWV2ZSBncmVhdGVyIHN0b3JhZ2UgZGVuc2l0aWVzLiAgSG93ZXZlciwKK3pzbWFsbG9jIGRvZXMgbm90IGltcGxlbWVudCBjb21wcmVzc2VkIHBhZ2UgZXZpY3Rpb24sIHNvIG9uY2UgenN3YXAgZmlsbHMgaXQKK2Nhbm5vdCBldmljdCB0aGUgb2xkZXN0IHBhZ2UsIGl0IGNhbiBvbmx5IHJlamVjdCBuZXcgcGFnZXMuCisKK1doZW4gYSBzd2FwIHBhZ2UgaXMgcGFzc2VkIGZyb20gZnJvbnRzd2FwIHRvIHpzd2FwLCB6c3dhcCBtYWludGFpbnMgYSBtYXBwaW5nCitvZiB0aGUgc3dhcCBlbnRyeSwgYSBjb21iaW5hdGlvbiBvZiB0aGUgc3dhcCB0eXBlIGFuZCBzd2FwIG9mZnNldCwgdG8gdGhlIHpwb29sCitoYW5kbGUgdGhhdCByZWZlcmVuY2VzIHRoYXQgY29tcHJlc3NlZCBzd2FwIHBhZ2UuICBUaGlzIG1hcHBpbmcgaXMgYWNoaWV2ZWQKK3dpdGggYSByZWQtYmxhY2sgdHJlZSBwZXIgc3dhcCB0eXBlLiAgVGhlIHN3YXAgb2Zmc2V0IGlzIHRoZSBzZWFyY2gga2V5IGZvciB0aGUKK3RyZWUgbm9kZXMuCisKK0R1cmluZyBhIHBhZ2UgZmF1bHQgb24gYSBQVEUgdGhhdCBpcyBhIHN3YXAgZW50cnksIGZyb250c3dhcCBjYWxscyB0aGUgenN3YXAKK2xvYWQgZnVuY3Rpb24gdG8gZGVjb21wcmVzcyB0aGUgcGFnZSBpbnRvIHRoZSBwYWdlIGFsbG9jYXRlZCBieSB0aGUgcGFnZSBmYXVsdAoraGFuZGxlci4KKworT25jZSB0aGVyZSBhcmUgbm8gUFRFcyByZWZlcmVuY2luZyBhIHN3YXAgcGFnZSBzdG9yZWQgaW4genN3YXAgKGkuZS4gdGhlIGNvdW50CitpbiB0aGUgc3dhcF9tYXAgZ29lcyB0byAwKSB0aGUgc3dhcCBjb2RlIGNhbGxzIHRoZSB6c3dhcCBpbnZhbGlkYXRlIGZ1bmN0aW9uLAordmlhIGZyb250c3dhcCwgdG8gZnJlZSB0aGUgY29tcHJlc3NlZCBlbnRyeS4KKworWnN3YXAgc2Vla3MgdG8gYmUgc2ltcGxlIGluIGl0cyBwb2xpY2llcy4gIFN5c2ZzIGF0dHJpYnV0ZXMgYWxsb3cgZm9yIG9uZSB1c2VyCitjb250cm9sbGVkIHBvbGljeToKKyogbWF4X3Bvb2xfcGVyY2VudCAtIFRoZSBtYXhpbXVtIHBlcmNlbnRhZ2Ugb2YgbWVtb3J5IHRoYXQgdGhlIGNvbXByZXNzZWQKKyAgICBwb29sIGNhbiBvY2N1cHkuCisKK1RoZSBkZWZhdWx0IGNvbXByZXNzb3IgaXMgbHpvLCBidXQgaXQgY2FuIGJlIHNlbGVjdGVkIGF0IGJvb3QgdGltZSBieSBzZXR0aW5nCit0aGUg4oCcY29tcHJlc3NvcuKAnSBhdHRyaWJ1dGUsIGUuZy4genN3YXAuY29tcHJlc3Nvcj1sem8uICBJdCBjYW4gYWxzbyBiZSBjaGFuZ2VkCithdCBydW50aW1lIHVzaW5nIHRoZSBzeXNmcyAiY29tcHJlc3NvciIgYXR0cmlidXRlLCBlLmcuCisKK2VjaG8gbHpvID4gL3N5cy9tb2R1bGUvenN3YXAvcGFyYW1ldGVycy9jb21wcmVzc29yCisKK1doZW4gdGhlIHpwb29sIGFuZC9vciBjb21wcmVzc29yIHBhcmFtZXRlciBpcyBjaGFuZ2VkIGF0IHJ1bnRpbWUsIGFueSBleGlzdGluZworY29tcHJlc3NlZCBwYWdlcyBhcmUgbm90IG1vZGlmaWVkOyB0aGV5IGFyZSBsZWZ0IGluIHRoZWlyIG93biB6cG9vbC4gIFdoZW4gYQorcmVxdWVzdCBpcyBtYWRlIGZvciBhIHBhZ2UgaW4gYW4gb2xkIHpwb29sLCBpdCBpcyB1bmNvbXByZXNzZWQgdXNpbmcgaXRzCitvcmlnaW5hbCBjb21wcmVzc29yLiAgT25jZSBhbGwgcGFnZXMgYXJlIHJlbW92ZWQgZnJvbSBhbiBvbGQgenBvb2wsIHRoZSB6cG9vbAorYW5kIGl0cyBjb21wcmVzc29yIGFyZSBmcmVlZC4KKworQSBkZWJ1Z2ZzIGludGVyZmFjZSBpcyBwcm92aWRlZCBmb3IgdmFyaW91cyBzdGF0aXN0aWMgYWJvdXQgcG9vbCBzaXplLCBudW1iZXIKK29mIHBhZ2VzIHN0b3JlZCwgYW5kIHZhcmlvdXMgY291bnRlcnMgZm9yIHRoZSByZWFzb25zIHBhZ2VzIGFyZSByZWplY3RlZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdm1lX2FwaS50eHQgYi9Eb2N1bWVudGF0aW9uL3ZtZV9hcGkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhNWI4MjcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZtZV9hcGkudHh0CkBAIC0wLDAgKzEsNDEyIEBACisJCQlWTUUgRGV2aWNlIERyaXZlciBBUEkKKwkJCT09PT09PT09PT09PT09PT09PT09PQorCitEcml2ZXIgcmVnaXN0cmF0aW9uCis9PT09PT09PT09PT09PT09PT09CisKK0FzIHdpdGggb3RoZXIgc3Vic3lzdGVtcyB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCwgVk1FIGRldmljZSBkcml2ZXJzIHJlZ2lzdGVyCit3aXRoIHRoZSBWTUUgc3Vic3lzdGVtLCB0eXBpY2FsbHkgY2FsbGVkIGZyb20gdGhlIGRldmljZXMgaW5pdCByb3V0aW5lLiAgVGhpcyBpcworYWNoaWV2ZWQgdmlhIGEgY2FsbCB0byB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uOgorCisJaW50IHZtZV9yZWdpc3Rlcl9kcml2ZXIgKHN0cnVjdCB2bWVfZHJpdmVyICpkcml2ZXIpOworCitJZiBkcml2ZXIgcmVnaXN0cmF0aW9uIGlzIHN1Y2Nlc3NmdWwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHplcm8sIGlmIGFuIGVycm9yCitvY2N1cnJlZCBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgd2lsbCBiZSByZXR1cm5lZC4KKworQSBwb2ludGVyIHRvIGEgc3RydWN0dXJlIG9mIHR5cGUgJ3ZtZV9kcml2ZXInIG11c3QgYmUgcHJvdmlkZWQgdG8gdGhlCityZWdpc3RyYXRpb24gZnVuY3Rpb24uIFRoZSBzdHJ1Y3R1cmUgaXMgYXMgZm9sbG93czoKKworCXN0cnVjdCB2bWVfZHJpdmVyIHsKKwkJc3RydWN0IGxpc3RfaGVhZCBub2RlOworCQljb25zdCBjaGFyICpuYW1lOworCQlpbnQgKCptYXRjaCkoc3RydWN0IHZtZV9kZXYgKik7CisJCWludCAoKnByb2JlKShzdHJ1Y3Qgdm1lX2RldiAqKTsKKwkJaW50ICgqcmVtb3ZlKShzdHJ1Y3Qgdm1lX2RldiAqKTsKKwkJdm9pZCAoKnNodXRkb3duKSh2b2lkKTsKKwkJc3RydWN0IGRldmljZV9kcml2ZXIgZHJpdmVyOworCQlzdHJ1Y3QgbGlzdF9oZWFkIGRldmljZXM7CisJCXVuc2lnbmVkIGludCBuZGV2OworCX07CisKK0F0IHRoZSBtaW5pbXVtLCB0aGUgJy5uYW1lJywgJy5tYXRjaCcgYW5kICcucHJvYmUnIGVsZW1lbnRzIG9mIHRoaXMgc3RydWN0dXJlCitzaG91bGQgYmUgY29ycmVjdGx5IHNldC4gVGhlICcubmFtZScgZWxlbWVudCBpcyBhIHBvaW50ZXIgdG8gYSBzdHJpbmcgaG9sZGluZwordGhlIGRldmljZSBkcml2ZXIncyBuYW1lLgorCitUaGUgJy5tYXRjaCcgZnVuY3Rpb24gYWxsb3dzIGNvbnRyb2xsaW5nIHRoZSBudW1iZXIgb2YgZGV2aWNlcyB0aGF0IG5lZWQgdG8KK2JlIHJlZ2lzdGVyZWQuIFRoZSBtYXRjaCBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIDEgaWYgYSBkZXZpY2Ugc2hvdWxkIGJlCitwcm9iZWQgYW5kIDAgb3RoZXJ3aXNlLiBUaGlzIGV4YW1wbGUgbWF0Y2ggZnVuY3Rpb24gKGZyb20gdm1lX3VzZXIuYykgbGltaXRzCit0aGUgbnVtYmVyIG9mIGRldmljZXMgcHJvYmVkIHRvIG9uZToKKworCSNkZWZpbmUgVVNFUl9CVVNfTUFYCTEKKwkuLi4KKwlzdGF0aWMgaW50IHZtZV91c2VyX21hdGNoKHN0cnVjdCB2bWVfZGV2ICp2ZGV2KQorCXsKKwkJaWYgKHZkZXYtPmlkLm51bSA+PSBVU0VSX0JVU19NQVgpCisJCQlyZXR1cm4gMDsKKwkJcmV0dXJuIDE7CisJfQorCitUaGUgJy5wcm9iZScgZWxlbWVudCBzaG91bGQgY29udGFpbiBhIHBvaW50ZXIgdG8gdGhlIHByb2JlIHJvdXRpbmUuIFRoZQorcHJvYmUgcm91dGluZSBpcyBwYXNzZWQgYSAnc3RydWN0IHZtZV9kZXYnIHBvaW50ZXIgYXMgYW4gYXJndW1lbnQuIFRoZQorJ3N0cnVjdCB2bWVfZGV2JyBzdHJ1Y3R1cmUgbG9va3MgbGlrZSB0aGUgZm9sbG93aW5nOgorCisJc3RydWN0IHZtZV9kZXYgeworCQlpbnQgbnVtOworCQlzdHJ1Y3Qgdm1lX2JyaWRnZSAqYnJpZGdlOworCQlzdHJ1Y3QgZGV2aWNlIGRldjsKKwkJc3RydWN0IGxpc3RfaGVhZCBkcnZfbGlzdDsKKwkJc3RydWN0IGxpc3RfaGVhZCBicmlkZ2VfbGlzdDsKKwl9OworCitIZXJlLCB0aGUgJ251bScgZmllbGQgcmVmZXJzIHRvIHRoZSBzZXF1ZW50aWFsIGRldmljZSBJRCBmb3IgdGhpcyBzcGVjaWZpYworZHJpdmVyLiBUaGUgYnJpZGdlIG51bWJlciAob3IgYnVzIG51bWJlcikgY2FuIGJlIGFjY2Vzc2VkIHVzaW5nCitkZXYtPmJyaWRnZS0+bnVtLgorCitBIGZ1bmN0aW9uIGlzIGFsc28gcHJvdmlkZWQgdG8gdW5yZWdpc3RlciB0aGUgZHJpdmVyIGZyb20gdGhlIFZNRSBjb3JlIGFuZCBpcwordXN1YWxseSBjYWxsZWQgZnJvbSB0aGUgZGV2aWNlIGRyaXZlcidzIGV4aXQgcm91dGluZToKKworCXZvaWQgdm1lX3VucmVnaXN0ZXJfZHJpdmVyIChzdHJ1Y3Qgdm1lX2RyaXZlciAqZHJpdmVyKTsKKworCitSZXNvdXJjZSBtYW5hZ2VtZW50Cis9PT09PT09PT09PT09PT09PT09CisKK09uY2UgYSBkcml2ZXIgaGFzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgVk1FIGNvcmUgdGhlIHByb3ZpZGVkIG1hdGNoIHJvdXRpbmUgd2lsbAorYmUgY2FsbGVkIHRoZSBudW1iZXIgb2YgdGltZXMgc3BlY2lmaWVkIGR1cmluZyB0aGUgcmVnaXN0cmF0aW9uLiBJZiBhIG1hdGNoCitzdWNjZWVkcywgYSBub24temVybyB2YWx1ZSBzaG91bGQgYmUgcmV0dXJuZWQuIEEgemVybyByZXR1cm4gdmFsdWUgaW5kaWNhdGVzCitmYWlsdXJlLiBGb3IgYWxsIHN1Y2Nlc3NmdWwgbWF0Y2hlcywgdGhlIHByb2JlIHJvdXRpbmUgb2YgdGhlIGNvcnJlc3BvbmRpbmcKK2RyaXZlciBpcyBjYWxsZWQuIFRoZSBwcm9iZSByb3V0aW5lIGlzIHBhc3NlZCBhIHBvaW50ZXIgdG8gdGhlIGRldmljZXMKK2RldmljZSBzdHJ1Y3R1cmUuIFRoaXMgcG9pbnRlciBzaG91bGQgYmUgc2F2ZWQsIGl0IHdpbGwgYmUgcmVxdWlyZWQgZm9yCityZXF1ZXN0aW5nIFZNRSByZXNvdXJjZXMuCisKK1RoZSBkcml2ZXIgY2FuIHJlcXVlc3Qgb3duZXJzaGlwIG9mIG9uZSBvciBtb3JlIG1hc3RlciB3aW5kb3dzLCBzbGF2ZSB3aW5kb3dzCithbmQvb3IgZG1hIGNoYW5uZWxzLiBSYXRoZXIgdGhhbiBhbGxvd2luZyB0aGUgZGV2aWNlIGRyaXZlciB0byByZXF1ZXN0IGEKK3NwZWNpZmljIHdpbmRvdyBvciBETUEgY2hhbm5lbCAod2hpY2ggbWF5IGJlIHVzZWQgYnkgYSBkaWZmZXJlbnQgZHJpdmVyKSB0aGlzCitkcml2ZXIgYWxsb3dzIGEgcmVzb3VyY2UgdG8gYmUgYXNzaWduZWQgYmFzZWQgb24gdGhlIHJlcXVpcmVkIGF0dHJpYnV0ZXMgb2YgdGhlCitkcml2ZXIgaW4gcXVlc3Rpb246CisKKwlzdHJ1Y3Qgdm1lX3Jlc291cmNlICogdm1lX21hc3Rlcl9yZXF1ZXN0KHN0cnVjdCB2bWVfZGV2ICpkZXYsCisJCXUzMiBhc3BhY2UsIHUzMiBjeWNsZSwgdTMyIHdpZHRoKTsKKworCXN0cnVjdCB2bWVfcmVzb3VyY2UgKiB2bWVfc2xhdmVfcmVxdWVzdChzdHJ1Y3Qgdm1lX2RldiAqZGV2LCB1MzIgYXNwYWNlLAorCQl1MzIgY3ljbGUpOworCisJc3RydWN0IHZtZV9yZXNvdXJjZSAqdm1lX2RtYV9yZXF1ZXN0KHN0cnVjdCB2bWVfZGV2ICpkZXYsIHUzMiByb3V0ZSk7CisKK0ZvciBzbGF2ZSB3aW5kb3dzIHRoZXNlIGF0dHJpYnV0ZXMgYXJlIHNwbGl0IGludG8gdGhlIFZNRSBhZGRyZXNzIHNwYWNlcyB0aGF0CituZWVkIHRvIGJlIGFjY2Vzc2VkIGluICdhc3BhY2UnIGFuZCBWTUUgYnVzIGN5Y2xlIHR5cGVzIHJlcXVpcmVkIGluICdjeWNsZScuCitNYXN0ZXIgd2luZG93cyBhZGQgYSBmdXJ0aGVyIHNldCBvZiBhdHRyaWJ1dGVzIGluICd3aWR0aCcgc3BlY2lmeWluZyB0aGUKK3JlcXVpcmVkIGRhdGEgdHJhbnNmZXIgd2lkdGhzLiBUaGVzZSBhdHRyaWJ1dGVzIGFyZSBkZWZpbmVkIGFzIGJpdG1hc2tzIGFuZCBhcworc3VjaCBhbnkgY29tYmluYXRpb24gb2YgdGhlIGF0dHJpYnV0ZXMgY2FuIGJlIHJlcXVlc3RlZCBmb3IgYSBzaW5nbGUgd2luZG93LAordGhlIGNvcmUgd2lsbCBhc3NpZ24gYSB3aW5kb3cgdGhhdCBtZWV0cyB0aGUgcmVxdWlyZW1lbnRzLCByZXR1cm5pbmcgYSBwb2ludGVyCitvZiB0eXBlIHZtZV9yZXNvdXJjZSB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGlkZW50aWZ5IHRoZSBhbGxvY2F0ZWQgcmVzb3VyY2UKK3doZW4gaXQgaXMgdXNlZC4gRm9yIERNQSBjb250cm9sbGVycywgdGhlIHJlcXVlc3QgZnVuY3Rpb24gcmVxdWlyZXMgdGhlCitwb3RlbnRpYWwgZGlyZWN0aW9uIG9mIGFueSB0cmFuc2ZlcnMgdG8gYmUgcHJvdmlkZWQgaW4gdGhlIHJvdXRlIGF0dHJpYnV0ZXMuCitUaGlzIGlzIHR5cGljYWxseSBWTUUtdG8tTUVNIGFuZC9vciBNRU0tdG8tVk1FLCB0aG91Z2ggc29tZSBoYXJkd2FyZSBjYW4KK3N1cHBvcnQgVk1FLXRvLVZNRSBhbmQgTUVNLXRvLU1FTSB0cmFuc2ZlcnMgYXMgd2VsbCBhcyB0ZXN0IHBhdHRlcm4gZ2VuZXJhdGlvbi4KK0lmIGFuIHVuYWxsb2NhdGVkIHdpbmRvdyBmaXR0aW5nIHRoZSByZXF1aXJlbWVudHMgY2FuIG5vdCBiZSBmb3VuZCBhIE5VTEwKK3BvaW50ZXIgd2lsbCBiZSByZXR1cm5lZC4KKworRnVuY3Rpb25zIGFyZSBhbHNvIHByb3ZpZGVkIHRvIGZyZWUgd2luZG93IGFsbG9jYXRpb25zIG9uY2UgdGhleSBhcmUgbm8gbG9uZ2VyCityZXF1aXJlZC4gVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBiZSBwYXNzZWQgdGhlIHBvaW50ZXIgdG8gdGhlIHJlc291cmNlIHByb3ZpZGVkCitkdXJpbmcgcmVzb3VyY2UgYWxsb2NhdGlvbjoKKworCXZvaWQgdm1lX21hc3Rlcl9mcmVlKHN0cnVjdCB2bWVfcmVzb3VyY2UgKnJlcyk7CisKKwl2b2lkIHZtZV9zbGF2ZV9mcmVlKHN0cnVjdCB2bWVfcmVzb3VyY2UgKnJlcyk7CisKKwl2b2lkIHZtZV9kbWFfZnJlZShzdHJ1Y3Qgdm1lX3Jlc291cmNlICpyZXMpOworCisKK01hc3RlciB3aW5kb3dzCis9PT09PT09PT09PT09PQorCitNYXN0ZXIgd2luZG93cyBwcm92aWRlIGFjY2VzcyBmcm9tIHRoZSBsb2NhbCBwcm9jZXNzb3Jbc10gb3V0IG9udG8gdGhlIFZNRSBidXMuCitUaGUgbnVtYmVyIG9mIHdpbmRvd3MgYXZhaWxhYmxlIGFuZCB0aGUgYXZhaWxhYmxlIGFjY2VzcyBtb2RlcyBpcyBkZXBlbmRlbnQgb24KK3RoZSB1bmRlcmx5aW5nIGNoaXBzZXQuIEEgd2luZG93IG11c3QgYmUgY29uZmlndXJlZCBiZWZvcmUgaXQgY2FuIGJlIHVzZWQuCisKKworTWFzdGVyIHdpbmRvdyBjb25maWd1cmF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT25jZSBhIG1hc3RlciB3aW5kb3cgaGFzIGJlZW4gYXNzaWduZWQgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgY2FuIGJlIHVzZWQgdG8KK2NvbmZpZ3VyZSBpdCBhbmQgcmV0cmlldmUgdGhlIGN1cnJlbnQgc2V0dGluZ3M6CisKKwlpbnQgdm1lX21hc3Rlcl9zZXQgKHN0cnVjdCB2bWVfcmVzb3VyY2UgKnJlcywgaW50IGVuYWJsZWQsCisJCXVuc2lnbmVkIGxvbmcgbG9uZyBiYXNlLCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSwgdTMyIGFzcGFjZSwKKwkJdTMyIGN5Y2xlLCB1MzIgd2lkdGgpOworCisJaW50IHZtZV9tYXN0ZXJfZ2V0IChzdHJ1Y3Qgdm1lX3Jlc291cmNlICpyZXMsIGludCAqZW5hYmxlZCwKKwkJdW5zaWduZWQgbG9uZyBsb25nICpiYXNlLCB1bnNpZ25lZCBsb25nIGxvbmcgKnNpemUsIHUzMiAqYXNwYWNlLAorCQl1MzIgKmN5Y2xlLCB1MzIgKndpZHRoKTsKKworVGhlIGFkZHJlc3Mgc3BhY2VzLCB0cmFuc2ZlciB3aWR0aHMgYW5kIGN5Y2xlIHR5cGVzIGFyZSB0aGUgc2FtZSBhcyBkZXNjcmliZWQKK3VuZGVyIHJlc291cmNlIG1hbmFnZW1lbnQsIGhvd2V2ZXIgc29tZSBvZiB0aGUgb3B0aW9ucyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLgorRm9yIGV4YW1wbGUsIG9ubHkgb25lIGFkZHJlc3Mgc3BhY2UgbWF5IGJlIHNwZWNpZmllZC4KKworVGhlc2UgZnVuY3Rpb25zIHJldHVybiAwIG9uIHN1Y2Nlc3Mgb3IgYW4gZXJyb3IgY29kZSBzaG91bGQgdGhlIGNhbGwgZmFpbC4KKworCitNYXN0ZXIgd2luZG93IGFjY2VzcworLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgY2FuIGJlIHVzZWQgdG8gcmVhZCBmcm9tIGFuZCB3cml0ZSB0byBjb25maWd1cmVkIG1hc3Rlcgord2luZG93cy4gVGhlc2UgZnVuY3Rpb25zIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZDoKKworCXNzaXplX3Qgdm1lX21hc3Rlcl9yZWFkKHN0cnVjdCB2bWVfcmVzb3VyY2UgKnJlcywgdm9pZCAqYnVmLAorCQlzaXplX3QgY291bnQsIGxvZmZfdCBvZmZzZXQpOworCisJc3NpemVfdCB2bWVfbWFzdGVyX3dyaXRlKHN0cnVjdCB2bWVfcmVzb3VyY2UgKnJlcywgdm9pZCAqYnVmLAorCQlzaXplX3QgY291bnQsIGxvZmZfdCBvZmZzZXQpOworCitJbiBhZGRpdGlvbiB0byBzaW1wbGUgcmVhZHMgYW5kIHdyaXRlcywgYSBmdW5jdGlvbiBpcyBwcm92aWRlZCB0byBkbyBhCityZWFkLW1vZGlmeS13cml0ZSB0cmFuc2FjdGlvbi4gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBvcmlnaW5hbCB2YWx1ZSBvZiB0aGUKK1ZNRSBidXMgbG9jYXRpb24gOgorCisJdW5zaWduZWQgaW50IHZtZV9tYXN0ZXJfcm13IChzdHJ1Y3Qgdm1lX3Jlc291cmNlICpyZXMsCisJCXVuc2lnbmVkIGludCBtYXNrLCB1bnNpZ25lZCBpbnQgY29tcGFyZSwgdW5zaWduZWQgaW50IHN3YXAsCisJCWxvZmZfdCBvZmZzZXQpOworCitUaGlzIGZ1bmN0aW9ucyBieSByZWFkaW5nIHRoZSBvZmZzZXQsIGFwcGx5aW5nIHRoZSBtYXNrLiBJZiB0aGUgYml0cyBzZWxlY3RlZCBpbgordGhlIG1hc2sgbWF0Y2ggd2l0aCB0aGUgdmFsdWVzIG9mIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgaW4gdGhlIGNvbXBhcmUgZmllbGQsCit0aGUgdmFsdWUgb2Ygc3dhcCBpcyB3cml0dGVuIHRoZSBzcGVjaWZpZWQgb2Zmc2V0LgorCitQYXJ0cyBvZiBhIFZNRSB3aW5kb3cgY2FuIGJlIG1hcHBlZCBpbnRvIHVzZXIgc3BhY2UgbWVtb3J5IHVzaW5nIHRoZSBmb2xsb3dpbmcKK2Z1bmN0aW9uOgorCisJaW50IHZtZV9tYXN0ZXJfbW1hcChzdHJ1Y3Qgdm1lX3Jlc291cmNlICpyZXNvdXJjZSwKKwkJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCisKKworU2xhdmUgd2luZG93cworPT09PT09PT09PT09PQorCitTbGF2ZSB3aW5kb3dzIHByb3ZpZGUgZGV2aWNlcyBvbiB0aGUgVk1FIGJ1cyBhY2Nlc3MgaW50byBtYXBwZWQgcG9ydGlvbnMgb2YgdGhlCitsb2NhbCBtZW1vcnkuIFRoZSBudW1iZXIgb2Ygd2luZG93cyBhdmFpbGFibGUgYW5kIHRoZSBhY2Nlc3MgbW9kZXMgdGhhdCBjYW4gYmUKK3VzZWQgaXMgZGVwZW5kZW50IG9uIHRoZSB1bmRlcmx5aW5nIGNoaXBzZXQuIEEgd2luZG93IG11c3QgYmUgY29uZmlndXJlZCBiZWZvcmUKK2l0IGNhbiBiZSB1c2VkLgorCisKK1NsYXZlIHdpbmRvdyBjb25maWd1cmF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPbmNlIGEgc2xhdmUgd2luZG93IGhhcyBiZWVuIGFzc2lnbmVkIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGNhbiBiZSB1c2VkIHRvCitjb25maWd1cmUgaXQgYW5kIHJldHJpZXZlIHRoZSBjdXJyZW50IHNldHRpbmdzOgorCisJaW50IHZtZV9zbGF2ZV9zZXQgKHN0cnVjdCB2bWVfcmVzb3VyY2UgKnJlcywgaW50IGVuYWJsZWQsCisJCXVuc2lnbmVkIGxvbmcgbG9uZyBiYXNlLCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSwKKwkJZG1hX2FkZHJfdCBtZW0sIHUzMiBhc3BhY2UsIHUzMiBjeWNsZSk7CisKKwlpbnQgdm1lX3NsYXZlX2dldCAoc3RydWN0IHZtZV9yZXNvdXJjZSAqcmVzLCBpbnQgKmVuYWJsZWQsCisJCXVuc2lnbmVkIGxvbmcgbG9uZyAqYmFzZSwgdW5zaWduZWQgbG9uZyBsb25nICpzaXplLAorCQlkbWFfYWRkcl90ICptZW0sIHUzMiAqYXNwYWNlLCB1MzIgKmN5Y2xlKTsKKworVGhlIGFkZHJlc3Mgc3BhY2VzLCB0cmFuc2ZlciB3aWR0aHMgYW5kIGN5Y2xlIHR5cGVzIGFyZSB0aGUgc2FtZSBhcyBkZXNjcmliZWQKK3VuZGVyIHJlc291cmNlIG1hbmFnZW1lbnQsIGhvd2V2ZXIgc29tZSBvZiB0aGUgb3B0aW9ucyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLgorRm9yIGV4YW1wbGUsIG9ubHkgb25lIGFkZHJlc3Mgc3BhY2UgbWF5IGJlIHNwZWNpZmllZC4KKworVGhlc2UgZnVuY3Rpb25zIHJldHVybiAwIG9uIHN1Y2Nlc3Mgb3IgYW4gZXJyb3IgY29kZSBzaG91bGQgdGhlIGNhbGwgZmFpbC4KKworCitTbGF2ZSB3aW5kb3cgYnVmZmVyIGFsbG9jYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGdW5jdGlvbnMgYXJlIHByb3ZpZGVkIHRvIGFsbG93IHRoZSB1c2VyIHRvIGFsbG9jYXRlIGFuZCBmcmVlIGEgY29udGlndW91cworYnVmZmVycyB3aGljaCB3aWxsIGJlIGFjY2Vzc2libGUgYnkgdGhlIFZNRSBicmlkZ2UuIFRoZXNlIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZQordG8gYmUgdXNlZCwgb3RoZXIgbWV0aG9kcyBjYW4gYmUgdXNlZCB0byBhbGxvY2F0ZSBhIGJ1ZmZlciwgdGhvdWdoIGNhcmUgbXVzdCBiZQordGFrZW4gdG8gZW5zdXJlIHRoYXQgdGhleSBhcmUgY29udGlndW91cyBhbmQgYWNjZXNzaWJsZSBieSB0aGUgVk1FIGJyaWRnZToKKworCXZvaWQgKiB2bWVfYWxsb2NfY29uc2lzdGVudChzdHJ1Y3Qgdm1lX3Jlc291cmNlICpyZXMsIHNpemVfdCBzaXplLAorCQlkbWFfYWRkcl90ICptZW0pOworCisJdm9pZCB2bWVfZnJlZV9jb25zaXN0ZW50KHN0cnVjdCB2bWVfcmVzb3VyY2UgKnJlcywgc2l6ZV90IHNpemUsCisJCXZvaWQgKnZpcnQsCWRtYV9hZGRyX3QgbWVtKTsKKworCitTbGF2ZSB3aW5kb3cgYWNjZXNzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1NsYXZlIHdpbmRvd3MgbWFwIGxvY2FsIG1lbW9yeSBvbnRvIHRoZSBWTUUgYnVzLCB0aGUgc3RhbmRhcmQgbWV0aG9kcyBmb3IKK2FjY2Vzc2luZyBtZW1vcnkgc2hvdWxkIGJlIHVzZWQuCisKKworRE1BIGNoYW5uZWxzCis9PT09PT09PT09PT0KKworVGhlIFZNRSBETUEgdHJhbnNmZXIgcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gcnVuIGxpbmstbGlzdCBETUEgdHJhbnNmZXJzLiBUaGUKK0FQSSBpbnRyb2R1Y2VzIHRoZSBjb25jZXB0IG9mIERNQSBsaXN0cy4gRWFjaCBETUEgbGlzdCBpcyBhIGxpbmstbGlzdCB3aGljaCBjYW4KK2JlIHBhc3NlZCB0byBhIERNQSBjb250cm9sbGVyLiBNdWx0aXBsZSBsaXN0cyBjYW4gYmUgY3JlYXRlZCwgZXh0ZW5kZWQsCitleGVjdXRlZCwgcmV1c2VkIGFuZCBkZXN0cm95ZWQuCisKKworTGlzdCBNYW5hZ2VtZW50CistLS0tLS0tLS0tLS0tLS0KKworVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHByb3ZpZGVkIHRvIGNyZWF0ZSBhbmQgZGVzdHJveSBETUEgbGlzdHMuIEV4ZWN1dGlvbgorb2YgYSBsaXN0IHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgZGVzdHJveSB0aGUgbGlzdCwgdGh1cyBlbmFibGluZyBhIGxpc3QgdG8gYmUKK3JldXNlZCBmb3IgcmVwZXRpdGl2ZSB0YXNrczoKKworCXN0cnVjdCB2bWVfZG1hX2xpc3QgKnZtZV9uZXdfZG1hX2xpc3Qoc3RydWN0IHZtZV9yZXNvdXJjZSAqcmVzKTsKKworCWludCB2bWVfZG1hX2xpc3RfZnJlZShzdHJ1Y3Qgdm1lX2RtYV9saXN0ICpsaXN0KTsKKworCitMaXN0IFBvcHVsYXRpb24KKy0tLS0tLS0tLS0tLS0tLQorCitBbiBpdGVtIGNhbiBiZSBhZGRlZCB0byBhIGxpc3QgdXNpbmcgdGhlIGZvbGxvd2luZyBmdW5jdGlvbiAoIHRoZSBzb3VyY2UgYW5kCitkZXN0aW5hdGlvbiBhdHRyaWJ1dGVzIG5lZWQgdG8gYmUgY3JlYXRlZCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCB0aGlzIGlzCitjb3ZlcmVkIHVuZGVyICJUcmFuc2ZlciBBdHRyaWJ1dGVzIik6CisKKwlpbnQgdm1lX2RtYV9saXN0X2FkZChzdHJ1Y3Qgdm1lX2RtYV9saXN0ICpsaXN0LAorCQlzdHJ1Y3Qgdm1lX2RtYV9hdHRyICpzcmMsIHN0cnVjdCB2bWVfZG1hX2F0dHIgKmRlc3QsCisJCXNpemVfdCBjb3VudCk7CisKK05PVEU6CVRoZSBkZXRhaWxlZCBhdHRyaWJ1dGVzIG9mIHRoZSB0cmFuc2ZlcnMgc291cmNlIGFuZCBkZXN0aW5hdGlvbgorCWFyZSBub3QgY2hlY2tlZCB1bnRpbCBhbiBlbnRyeSBpcyBhZGRlZCB0byBhIERNQSBsaXN0LCB0aGUgcmVxdWVzdAorCWZvciBhIERNQSBjaGFubmVsIHB1cmVseSBjaGVja3MgdGhlIGRpcmVjdGlvbnMgaW4gd2hpY2ggdGhlCisJY29udHJvbGxlciBpcyBleHBlY3RlZCB0byB0cmFuc2ZlciBkYXRhLiBBcyBhIHJlc3VsdCBpdCBpcworCXBvc3NpYmxlIGZvciB0aGlzIGNhbGwgdG8gcmV0dXJuIGFuIGVycm9yLCBmb3IgZXhhbXBsZSBpZiB0aGUKKwlzb3VyY2Ugb3IgZGVzdGluYXRpb24gaXMgaW4gYW4gdW5zdXBwb3J0ZWQgVk1FIGFkZHJlc3Mgc3BhY2UuCisKK1RyYW5zZmVyIEF0dHJpYnV0ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGF0dHJpYnV0ZXMgZm9yIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFyZSBoYW5kbGVkIHNlcGFyYXRlbHkgZnJvbSBhZGRpbmcKK2FuIGl0ZW0gdG8gYSBsaXN0LiBUaGlzIGlzIGR1ZSB0byB0aGUgZGl2ZXJzZSBhdHRyaWJ1dGVzIHJlcXVpcmVkIGZvciBlYWNoIHR5cGUKK29mIHNvdXJjZSBhbmQgZGVzdGluYXRpb24uIFRoZXJlIGFyZSBmdW5jdGlvbnMgdG8gY3JlYXRlIGF0dHJpYnV0ZXMgZm9yIFBDSSwgVk1FCithbmQgcGF0dGVybiBzb3VyY2VzIGFuZCBkZXN0aW5hdGlvbnMgKHdoZXJlIGFwcHJvcHJpYXRlKToKKworUGF0dGVybiBzb3VyY2U6CisKKwlzdHJ1Y3Qgdm1lX2RtYV9hdHRyICp2bWVfZG1hX3BhdHRlcm5fYXR0cmlidXRlKHUzMiBwYXR0ZXJuLCB1MzIgdHlwZSk7CisKK1BDSSBzb3VyY2Ugb3IgZGVzdGluYXRpb246CisKKwlzdHJ1Y3Qgdm1lX2RtYV9hdHRyICp2bWVfZG1hX3BjaV9hdHRyaWJ1dGUoZG1hX2FkZHJfdCBtZW0pOworCitWTUUgc291cmNlIG9yIGRlc3RpbmF0aW9uOgorCisJc3RydWN0IHZtZV9kbWFfYXR0ciAqdm1lX2RtYV92bWVfYXR0cmlidXRlKHVuc2lnbmVkIGxvbmcgbG9uZyBiYXNlLAorCQl1MzIgYXNwYWNlLCB1MzIgY3ljbGUsIHUzMiB3aWR0aCk7CisKK1RoZSBmb2xsb3dpbmcgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgdG8gZnJlZSBhbiBhdHRyaWJ1dGU6CisKKwl2b2lkIHZtZV9kbWFfZnJlZV9hdHRyaWJ1dGUoc3RydWN0IHZtZV9kbWFfYXR0ciAqYXR0cik7CisKKworTGlzdCBFeGVjdXRpb24KKy0tLS0tLS0tLS0tLS0tCisKK1RoZSBmb2xsb3dpbmcgZnVuY3Rpb24gcXVldWVzIGEgbGlzdCBmb3IgZXhlY3V0aW9uLiBUaGUgZnVuY3Rpb24gd2lsbCByZXR1cm4KK29uY2UgdGhlIGxpc3QgaGFzIGJlZW4gZXhlY3V0ZWQ6CisKKwlpbnQgdm1lX2RtYV9saXN0X2V4ZWMoc3RydWN0IHZtZV9kbWFfbGlzdCAqbGlzdCk7CisKKworSW50ZXJydXB0cworPT09PT09PT09PQorCitUaGUgVk1FIEFQSSBwcm92aWRlcyBmdW5jdGlvbnMgdG8gYXR0YWNoIGFuZCBkZXRhY2ggY2FsbGJhY2tzIHRvIHNwZWNpZmljIFZNRQorbGV2ZWwgYW5kIHN0YXR1cyBJRCBjb21iaW5hdGlvbnMgYW5kIGZvciB0aGUgZ2VuZXJhdGlvbiBvZiBWTUUgaW50ZXJydXB0cyB3aXRoCitzcGVjaWZpYyBWTUUgbGV2ZWwgYW5kIHN0YXR1cyBJRHMuCisKKworQXR0YWNoaW5nIEludGVycnVwdCBIYW5kbGVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBjYW4gYmUgdXNlZCB0byBhdHRhY2ggYW5kIGZyZWUgYSBzcGVjaWZpYyBWTUUgbGV2ZWwgYW5kCitzdGF0dXMgSUQgY29tYmluYXRpb24uIEFueSBnaXZlbiBjb21iaW5hdGlvbiBjYW4gb25seSBiZSBhc3NpZ25lZCBhIHNpbmdsZQorY2FsbGJhY2sgZnVuY3Rpb24uIEEgdm9pZCBwb2ludGVyIHBhcmFtZXRlciBpcyBwcm92aWRlZCwgdGhlIHZhbHVlIG9mIHdoaWNoIGlzCitwYXNzZWQgdG8gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLCB0aGUgdXNlIG9mIHRoaXMgcG9pbnRlciBpcyB1c2VyIHVuZGVmaW5lZDoKKworCWludCB2bWVfaXJxX3JlcXVlc3Qoc3RydWN0IHZtZV9kZXYgKmRldiwgaW50IGxldmVsLCBpbnQgc3RhdGlkLAorCQl2b2lkICgqY2FsbGJhY2spKGludCwgaW50LCB2b2lkICopLCB2b2lkICpwcml2KTsKKworCXZvaWQgdm1lX2lycV9mcmVlKHN0cnVjdCB2bWVfZGV2ICpkZXYsIGludCBsZXZlbCwgaW50IHN0YXRpZCk7CisKK1RoZSBjYWxsYmFjayBwYXJhbWV0ZXJzIGFyZSBhcyBmb2xsb3dzLiBDYXJlIG11c3QgYmUgdGFrZW4gaW4gd3JpdGluZyBhIGNhbGxiYWNrCitmdW5jdGlvbiwgY2FsbGJhY2sgZnVuY3Rpb25zIHJ1biBpbiBpbnRlcnJ1cHQgY29udGV4dDoKKworCXZvaWQgY2FsbGJhY2soaW50IGxldmVsLCBpbnQgc3RhdGlkLCB2b2lkICpwcml2KTsKKworCitJbnRlcnJ1cHQgR2VuZXJhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSBhIFZNRSBpbnRlcnJ1cHQgYXQgYSBnaXZlbiBWTUUKK2xldmVsIGFuZCBWTUUgc3RhdHVzIElEOgorCisJaW50IHZtZV9pcnFfZ2VuZXJhdGUoc3RydWN0IHZtZV9kZXYgKmRldiwgaW50IGxldmVsLCBpbnQgc3RhdGlkKTsKKworCitMb2NhdGlvbiBtb25pdG9ycworPT09PT09PT09PT09PT09PT0KKworVGhlIFZNRSBBUEkgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbmFsaXR5IHRvIGNvbmZpZ3VyZSB0aGUgbG9jYXRpb24KK21vbml0b3IuCisKKworTG9jYXRpb24gTW9uaXRvciBNYW5hZ2VtZW50CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHByb3ZpZGVkIHRvIHJlcXVlc3QgdGhlIHVzZSBvZiBhIGJsb2NrIG9mIGxvY2F0aW9uCittb25pdG9ycyBhbmQgdG8gZnJlZSB0aGVtIGFmdGVyIHRoZXkgYXJlIG5vIGxvbmdlciByZXF1aXJlZDoKKworCXN0cnVjdCB2bWVfcmVzb3VyY2UgKiB2bWVfbG1fcmVxdWVzdChzdHJ1Y3Qgdm1lX2RldiAqZGV2KTsKKworCXZvaWQgdm1lX2xtX2ZyZWUoc3RydWN0IHZtZV9yZXNvdXJjZSAqIHJlcyk7CisKK0VhY2ggYmxvY2sgbWF5IHByb3ZpZGUgYSBudW1iZXIgb2YgbG9jYXRpb24gbW9uaXRvcnMsIG1vbml0b3JpbmcgYWRqYWNlbnQKK2xvY2F0aW9ucy4gVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgaG93IG1hbnkgbG9jYXRpb25zCithcmUgcHJvdmlkZWQ6CisKKwlpbnQgdm1lX2xtX2NvdW50KHN0cnVjdCB2bWVfcmVzb3VyY2UgKiByZXMpOworCisKK0xvY2F0aW9uIE1vbml0b3IgQ29uZmlndXJhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK09uY2UgYSBiYW5rIG9mIGxvY2F0aW9uIG1vbml0b3JzIGhhcyBiZWVuIGFsbG9jYXRlZCwgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMKK2FyZSBwcm92aWRlZCB0byBjb25maWd1cmUgdGhlIGxvY2F0aW9uIGFuZCBtb2RlIG9mIHRoZSBsb2NhdGlvbiBtb25pdG9yOgorCisJaW50IHZtZV9sbV9zZXQoc3RydWN0IHZtZV9yZXNvdXJjZSAqcmVzLCB1bnNpZ25lZCBsb25nIGxvbmcgYmFzZSwKKwkJdTMyIGFzcGFjZSwgdTMyIGN5Y2xlKTsKKworCWludCB2bWVfbG1fZ2V0KHN0cnVjdCB2bWVfcmVzb3VyY2UgKnJlcywgdW5zaWduZWQgbG9uZyBsb25nICpiYXNlLAorCQl1MzIgKmFzcGFjZSwgdTMyICpjeWNsZSk7CisKKworTG9jYXRpb24gTW9uaXRvciBVc2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFsbG93IGEgY2FsbGJhY2sgdG8gYmUgYXR0YWNoZWQgYW5kIGRldGFjaGVkIGZyb20gZWFjaAorbG9jYXRpb24gbW9uaXRvciBsb2NhdGlvbi4gRWFjaCBsb2NhdGlvbiBtb25pdG9yIGNhbiBtb25pdG9yIGEgbnVtYmVyIG9mCithZGphY2VudCBsb2NhdGlvbnM6CisKKwlpbnQgdm1lX2xtX2F0dGFjaChzdHJ1Y3Qgdm1lX3Jlc291cmNlICpyZXMsIGludCBudW0sCisJCXZvaWQgKCpjYWxsYmFjaykoaW50KSk7CisKKwlpbnQgdm1lX2xtX2RldGFjaChzdHJ1Y3Qgdm1lX3Jlc291cmNlICpyZXMsIGludCBudW0pOworCitUaGUgY2FsbGJhY2sgZnVuY3Rpb24gaXMgZGVjbGFyZWQgYXMgZm9sbG93cy4KKworCXZvaWQgY2FsbGJhY2soaW50IG51bSk7CisKKworU2xvdCBEZXRlY3Rpb24KKz09PT09PT09PT09PT09CisKK1RoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgc2xvdCBJRCBvZiB0aGUgcHJvdmlkZWQgYnJpZGdlLgorCisJaW50IHZtZV9zbG90X251bShzdHJ1Y3Qgdm1lX2RldiAqZGV2KTsKKworCitCdXMgRGV0ZWN0aW9uCis9PT09PT09PT09PT09CisKK1RoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYnVzIElEIG9mIHRoZSBwcm92aWRlZCBicmlkZ2UuCisKKwlpbnQgdm1lX2J1c19udW0oc3RydWN0IHZtZV9kZXYgKmRldik7CisKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92b2xhdGlsZS1jb25zaWRlcmVkLWhhcm1mdWwudHh0IGIvRG9jdW1lbnRhdGlvbi92b2xhdGlsZS1jb25zaWRlcmVkLWhhcm1mdWwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiMGNiMjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZvbGF0aWxlLWNvbnNpZGVyZWQtaGFybWZ1bC50eHQKQEAgLTAsMCArMSwxMTkgQEAKK1doeSB0aGUgInZvbGF0aWxlIiB0eXBlIGNsYXNzIHNob3VsZCBub3QgYmUgdXNlZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0MgcHJvZ3JhbW1lcnMgaGF2ZSBvZnRlbiB0YWtlbiB2b2xhdGlsZSB0byBtZWFuIHRoYXQgdGhlIHZhcmlhYmxlIGNvdWxkIGJlCitjaGFuZ2VkIG91dHNpZGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkIG9mIGV4ZWN1dGlvbjsgYXMgYSByZXN1bHQsIHRoZXkgYXJlCitzb21ldGltZXMgdGVtcHRlZCB0byB1c2UgaXQgaW4ga2VybmVsIGNvZGUgd2hlbiBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzIGFyZQorYmVpbmcgdXNlZC4gIEluIG90aGVyIHdvcmRzLCB0aGV5IGhhdmUgYmVlbiBrbm93biB0byB0cmVhdCB2b2xhdGlsZSB0eXBlcworYXMgYSBzb3J0IG9mIGVhc3kgYXRvbWljIHZhcmlhYmxlLCB3aGljaCB0aGV5IGFyZSBub3QuICBUaGUgdXNlIG9mIHZvbGF0aWxlIGluCitrZXJuZWwgY29kZSBpcyBhbG1vc3QgbmV2ZXIgY29ycmVjdDsgdGhpcyBkb2N1bWVudCBkZXNjcmliZXMgd2h5LgorCitUaGUga2V5IHBvaW50IHRvIHVuZGVyc3RhbmQgd2l0aCByZWdhcmQgdG8gdm9sYXRpbGUgaXMgdGhhdCBpdHMgcHVycG9zZSBpcwordG8gc3VwcHJlc3Mgb3B0aW1pemF0aW9uLCB3aGljaCBpcyBhbG1vc3QgbmV2ZXIgd2hhdCBvbmUgcmVhbGx5IHdhbnRzIHRvCitkby4gIEluIHRoZSBrZXJuZWwsIG9uZSBtdXN0IHByb3RlY3Qgc2hhcmVkIGRhdGEgc3RydWN0dXJlcyBhZ2FpbnN0Cit1bndhbnRlZCBjb25jdXJyZW50IGFjY2Vzcywgd2hpY2ggaXMgdmVyeSBtdWNoIGEgZGlmZmVyZW50IHRhc2suICBUaGUKK3Byb2Nlc3Mgb2YgcHJvdGVjdGluZyBhZ2FpbnN0IHVud2FudGVkIGNvbmN1cnJlbmN5IHdpbGwgYWxzbyBhdm9pZCBhbG1vc3QKK2FsbCBvcHRpbWl6YXRpb24tcmVsYXRlZCBwcm9ibGVtcyBpbiBhIG1vcmUgZWZmaWNpZW50IHdheS4KKworTGlrZSB2b2xhdGlsZSwgdGhlIGtlcm5lbCBwcmltaXRpdmVzIHdoaWNoIG1ha2UgY29uY3VycmVudCBhY2Nlc3MgdG8gZGF0YQorc2FmZSAoc3BpbmxvY2tzLCBtdXRleGVzLCBtZW1vcnkgYmFycmllcnMsIGV0Yy4pIGFyZSBkZXNpZ25lZCB0byBwcmV2ZW50Cit1bndhbnRlZCBvcHRpbWl6YXRpb24uICBJZiB0aGV5IGFyZSBiZWluZyB1c2VkIHByb3Blcmx5LCB0aGVyZSB3aWxsIGJlIG5vCituZWVkIHRvIHVzZSB2b2xhdGlsZSBhcyB3ZWxsLiAgSWYgdm9sYXRpbGUgaXMgc3RpbGwgbmVjZXNzYXJ5LCB0aGVyZSBpcworYWxtb3N0IGNlcnRhaW5seSBhIGJ1ZyBpbiB0aGUgY29kZSBzb21ld2hlcmUuICBJbiBwcm9wZXJseS13cml0dGVuIGtlcm5lbAorY29kZSwgdm9sYXRpbGUgY2FuIG9ubHkgc2VydmUgdG8gc2xvdyB0aGluZ3MgZG93bi4KKworQ29uc2lkZXIgYSB0eXBpY2FsIGJsb2NrIG9mIGtlcm5lbCBjb2RlOgorCisgICAgc3Bpbl9sb2NrKCZ0aGVfbG9jayk7CisgICAgZG9fc29tZXRoaW5nX29uKCZzaGFyZWRfZGF0YSk7CisgICAgZG9fc29tZXRoaW5nX2Vsc2Vfd2l0aCgmc2hhcmVkX2RhdGEpOworICAgIHNwaW5fdW5sb2NrKCZ0aGVfbG9jayk7CisKK0lmIGFsbCB0aGUgY29kZSBmb2xsb3dzIHRoZSBsb2NraW5nIHJ1bGVzLCB0aGUgdmFsdWUgb2Ygc2hhcmVkX2RhdGEgY2Fubm90CitjaGFuZ2UgdW5leHBlY3RlZGx5IHdoaWxlIHRoZV9sb2NrIGlzIGhlbGQuICBBbnkgb3RoZXIgY29kZSB3aGljaCBtaWdodAord2FudCB0byBwbGF5IHdpdGggdGhhdCBkYXRhIHdpbGwgYmUgd2FpdGluZyBvbiB0aGUgbG9jay4gIFRoZSBzcGlubG9jaworcHJpbWl0aXZlcyBhY3QgYXMgbWVtb3J5IGJhcnJpZXJzIC0gdGhleSBhcmUgZXhwbGljaXRseSB3cml0dGVuIHRvIGRvIHNvIC0KK21lYW5pbmcgdGhhdCBkYXRhIGFjY2Vzc2VzIHdpbGwgbm90IGJlIG9wdGltaXplZCBhY3Jvc3MgdGhlbS4gIFNvIHRoZQorY29tcGlsZXIgbWlnaHQgdGhpbmsgaXQga25vd3Mgd2hhdCB3aWxsIGJlIGluIHNoYXJlZF9kYXRhLCBidXQgdGhlCitzcGluX2xvY2soKSBjYWxsLCBzaW5jZSBpdCBhY3RzIGFzIGEgbWVtb3J5IGJhcnJpZXIsIHdpbGwgZm9yY2UgaXQgdG8KK2ZvcmdldCBhbnl0aGluZyBpdCBrbm93cy4gIFRoZXJlIHdpbGwgYmUgbm8gb3B0aW1pemF0aW9uIHByb2JsZW1zIHdpdGgKK2FjY2Vzc2VzIHRvIHRoYXQgZGF0YS4KKworSWYgc2hhcmVkX2RhdGEgd2VyZSBkZWNsYXJlZCB2b2xhdGlsZSwgdGhlIGxvY2tpbmcgd291bGQgc3RpbGwgYmUKK25lY2Vzc2FyeS4gIEJ1dCB0aGUgY29tcGlsZXIgd291bGQgYWxzbyBiZSBwcmV2ZW50ZWQgZnJvbSBvcHRpbWl6aW5nIGFjY2VzcwordG8gc2hhcmVkX2RhdGEgX3dpdGhpbl8gdGhlIGNyaXRpY2FsIHNlY3Rpb24sIHdoZW4gd2Uga25vdyB0aGF0IG5vYm9keSBlbHNlCitjYW4gYmUgd29ya2luZyB3aXRoIGl0LiAgV2hpbGUgdGhlIGxvY2sgaXMgaGVsZCwgc2hhcmVkX2RhdGEgaXMgbm90Cit2b2xhdGlsZS4gIFdoZW4gZGVhbGluZyB3aXRoIHNoYXJlZCBkYXRhLCBwcm9wZXIgbG9ja2luZyBtYWtlcyB2b2xhdGlsZQordW5uZWNlc3NhcnkgLSBhbmQgcG90ZW50aWFsbHkgaGFybWZ1bC4KKworVGhlIHZvbGF0aWxlIHN0b3JhZ2UgY2xhc3Mgd2FzIG9yaWdpbmFsbHkgbWVhbnQgZm9yIG1lbW9yeS1tYXBwZWQgSS9PCityZWdpc3RlcnMuICBXaXRoaW4gdGhlIGtlcm5lbCwgcmVnaXN0ZXIgYWNjZXNzZXMsIHRvbywgc2hvdWxkIGJlIHByb3RlY3RlZAorYnkgbG9ja3MsIGJ1dCBvbmUgYWxzbyBkb2VzIG5vdCB3YW50IHRoZSBjb21waWxlciAib3B0aW1pemluZyIgcmVnaXN0ZXIKK2FjY2Vzc2VzIHdpdGhpbiBhIGNyaXRpY2FsIHNlY3Rpb24uICBCdXQsIHdpdGhpbiB0aGUga2VybmVsLCBJL08gbWVtb3J5CithY2Nlc3NlcyBhcmUgYWx3YXlzIGRvbmUgdGhyb3VnaCBhY2Nlc3NvciBmdW5jdGlvbnM7IGFjY2Vzc2luZyBJL08gbWVtb3J5CitkaXJlY3RseSB0aHJvdWdoIHBvaW50ZXJzIGlzIGZyb3duZWQgdXBvbiBhbmQgZG9lcyBub3Qgd29yayBvbiBhbGwKK2FyY2hpdGVjdHVyZXMuICBUaG9zZSBhY2Nlc3NvcnMgYXJlIHdyaXR0ZW4gdG8gcHJldmVudCB1bndhbnRlZAorb3B0aW1pemF0aW9uLCBzbywgb25jZSBhZ2Fpbiwgdm9sYXRpbGUgaXMgdW5uZWNlc3NhcnkuCisKK0Fub3RoZXIgc2l0dWF0aW9uIHdoZXJlIG9uZSBtaWdodCBiZSB0ZW1wdGVkIHRvIHVzZSB2b2xhdGlsZSBpcword2hlbiB0aGUgcHJvY2Vzc29yIGlzIGJ1c3ktd2FpdGluZyBvbiB0aGUgdmFsdWUgb2YgYSB2YXJpYWJsZS4gIFRoZSByaWdodAord2F5IHRvIHBlcmZvcm0gYSBidXN5IHdhaXQgaXM6CisKKyAgICB3aGlsZSAobXlfdmFyaWFibGUgIT0gd2hhdF9pX3dhbnQpCisgICAgICAgIGNwdV9yZWxheCgpOworCitUaGUgY3B1X3JlbGF4KCkgY2FsbCBjYW4gbG93ZXIgQ1BVIHBvd2VyIGNvbnN1bXB0aW9uIG9yIHlpZWxkIHRvIGEKK2h5cGVydGhyZWFkZWQgdHdpbiBwcm9jZXNzb3I7IGl0IGFsc28gaGFwcGVucyB0byBzZXJ2ZSBhcyBhIGNvbXBpbGVyCitiYXJyaWVyLCBzbywgb25jZSBhZ2Fpbiwgdm9sYXRpbGUgaXMgdW5uZWNlc3NhcnkuICBPZiBjb3Vyc2UsIGJ1c3ktCit3YWl0aW5nIGlzIGdlbmVyYWxseSBhbiBhbnRpLXNvY2lhbCBhY3QgdG8gYmVnaW4gd2l0aC4KKworVGhlcmUgYXJlIHN0aWxsIGEgZmV3IHJhcmUgc2l0dWF0aW9ucyB3aGVyZSB2b2xhdGlsZSBtYWtlcyBzZW5zZSBpbiB0aGUKK2tlcm5lbDoKKworICAtIFRoZSBhYm92ZS1tZW50aW9uZWQgYWNjZXNzb3IgZnVuY3Rpb25zIG1pZ2h0IHVzZSB2b2xhdGlsZSBvbgorICAgIGFyY2hpdGVjdHVyZXMgd2hlcmUgZGlyZWN0IEkvTyBtZW1vcnkgYWNjZXNzIGRvZXMgd29yay4gIEVzc2VudGlhbGx5LAorICAgIGVhY2ggYWNjZXNzb3IgY2FsbCBiZWNvbWVzIGEgbGl0dGxlIGNyaXRpY2FsIHNlY3Rpb24gb24gaXRzIG93biBhbmQKKyAgICBlbnN1cmVzIHRoYXQgdGhlIGFjY2VzcyBoYXBwZW5zIGFzIGV4cGVjdGVkIGJ5IHRoZSBwcm9ncmFtbWVyLgorCisgIC0gSW5saW5lIGFzc2VtYmx5IGNvZGUgd2hpY2ggY2hhbmdlcyBtZW1vcnksIGJ1dCB3aGljaCBoYXMgbm8gb3RoZXIKKyAgICB2aXNpYmxlIHNpZGUgZWZmZWN0cywgcmlza3MgYmVpbmcgZGVsZXRlZCBieSBHQ0MuICBBZGRpbmcgdGhlIHZvbGF0aWxlCisgICAga2V5d29yZCB0byBhc20gc3RhdGVtZW50cyB3aWxsIHByZXZlbnQgdGhpcyByZW1vdmFsLgorCisgIC0gVGhlIGppZmZpZXMgdmFyaWFibGUgaXMgc3BlY2lhbCBpbiB0aGF0IGl0IGNhbiBoYXZlIGEgZGlmZmVyZW50IHZhbHVlCisgICAgZXZlcnkgdGltZSBpdCBpcyByZWZlcmVuY2VkLCBidXQgaXQgY2FuIGJlIHJlYWQgd2l0aG91dCBhbnkgc3BlY2lhbAorICAgIGxvY2tpbmcuICBTbyBqaWZmaWVzIGNhbiBiZSB2b2xhdGlsZSwgYnV0IHRoZSBhZGRpdGlvbiBvZiBvdGhlcgorICAgIHZhcmlhYmxlcyBvZiB0aGlzIHR5cGUgaXMgc3Ryb25nbHkgZnJvd25lZCB1cG9uLiAgSmlmZmllcyBpcyBjb25zaWRlcmVkCisgICAgdG8gYmUgYSAic3R1cGlkIGxlZ2FjeSIgaXNzdWUgKExpbnVzJ3Mgd29yZHMpIGluIHRoaXMgcmVnYXJkOyBmaXhpbmcgaXQKKyAgICB3b3VsZCBiZSBtb3JlIHRyb3VibGUgdGhhbiBpdCBpcyB3b3J0aC4KKworICAtIFBvaW50ZXJzIHRvIGRhdGEgc3RydWN0dXJlcyBpbiBjb2hlcmVudCBtZW1vcnkgd2hpY2ggbWlnaHQgYmUgbW9kaWZpZWQKKyAgICBieSBJL08gZGV2aWNlcyBjYW4sIHNvbWV0aW1lcywgbGVnaXRpbWF0ZWx5IGJlIHZvbGF0aWxlLiAgQSByaW5nIGJ1ZmZlcgorICAgIHVzZWQgYnkgYSBuZXR3b3JrIGFkYXB0ZXIsIHdoZXJlIHRoYXQgYWRhcHRlciBjaGFuZ2VzIHBvaW50ZXJzIHRvCisgICAgaW5kaWNhdGUgd2hpY2ggZGVzY3JpcHRvcnMgaGF2ZSBiZWVuIHByb2Nlc3NlZCwgaXMgYW4gZXhhbXBsZSBvZiB0aGlzCisgICAgdHlwZSBvZiBzaXR1YXRpb24uCisKK0ZvciBtb3N0IGNvZGUsIG5vbmUgb2YgdGhlIGFib3ZlIGp1c3RpZmljYXRpb25zIGZvciB2b2xhdGlsZSBhcHBseS4gIEFzIGEKK3Jlc3VsdCwgdGhlIHVzZSBvZiB2b2xhdGlsZSBpcyBsaWtlbHkgdG8gYmUgc2VlbiBhcyBhIGJ1ZyBhbmQgd2lsbCBicmluZworYWRkaXRpb25hbCBzY3J1dGlueSB0byB0aGUgY29kZS4gIERldmVsb3BlcnMgd2hvIGFyZSB0ZW1wdGVkIHRvIHVzZQordm9sYXRpbGUgc2hvdWxkIHRha2UgYSBzdGVwIGJhY2sgYW5kIHRoaW5rIGFib3V0IHdoYXQgdGhleSBhcmUgdHJ1bHkgdHJ5aW5nCit0byBhY2NvbXBsaXNoLgorCitQYXRjaGVzIHRvIHJlbW92ZSB2b2xhdGlsZSB2YXJpYWJsZXMgYXJlIGdlbmVyYWxseSB3ZWxjb21lIC0gYXMgbG9uZyBhcwordGhleSBjb21lIHdpdGggYSBqdXN0aWZpY2F0aW9uIHdoaWNoIHNob3dzIHRoYXQgdGhlIGNvbmN1cnJlbmN5IGlzc3VlcyBoYXZlCitiZWVuIHByb3Blcmx5IHRob3VnaHQgdGhyb3VnaC4KKworCitOT1RFUworLS0tLS0KKworWzFdIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzIzMzQ4MS8KK1syXSBodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8yMzM0ODIvCisKK0NSRURJVFMKKy0tLS0tLS0KKworT3JpZ2luYWwgaW1wZXR1cyBhbmQgcmVzZWFyY2ggYnkgUmFuZHkgRHVubGFwCitXcml0dGVuIGJ5IEpvbmF0aGFuIENvcmJldAorSW1wcm92ZW1lbnRzIHZpYSBjb21tZW50cyBmcm9tIFNhdHlhbSBTaGFybWEsIEpvaGFubmVzIFN0ZXplbmJhY2gsIEplc3BlcgorCUp1aGwsIEhlaWtraSBPcnNpbGEsIEguIFBldGVyIEFudmluLCBQaGlsaXBwIEhhaG4sIGFuZCBTdGVmYW4KKwlSaWNodGVyLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi93MS8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24vdzEvMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I0OTgwMgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdzEvMDAtSU5ERVgKQEAgLTAsMCArMSwxMCBAQAorMDAtSU5ERVgKKwktIFRoaXMgZmlsZQorc2xhdmVzLworCS0gRHJpdmVycyB0aGF0IHByb3ZpZGUgc3VwcG9ydCBmb3Igc3BlY2lmaWMgZmFtaWx5IGNvZGVzLgorbWFzdGVycy8KKwktIEluZGl2aWR1YWwgY2hpcHMgcHJvdmlkaW5nIDEtd2lyZSBidXNzZXMuCit3MS5nZW5lcmljCisJLSBUaGUgMS13aXJlICh3MSkgYnVzCit3MS5uZXRsaW5rCisJLSBVc2Vyc3BhY2UgY29tbXVuaWNhdGlvbiBwcm90b2NvbCBvdmVyIGNvbm5lY3RvciBbMV0uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3cxL21hc3RlcnMvMDAtSU5ERVggYi9Eb2N1bWVudGF0aW9uL3cxL21hc3RlcnMvMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMzMGNmOQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdzEvbWFzdGVycy8wMC1JTkRFWApAQCAtMCwwICsxLDEyIEBACiswMC1JTkRFWAorCS0gVGhpcyBmaWxlCitkczI0ODIKKwktIFRoZSBNYXhpbS9EYWxsYXMgU2VtaWNvbmR1Y3RvciBEUzI0ODIgcHJvdmlkZXMgMS13aXJlIGJ1c3Nlcy4KK2RzMjQ5MAorCS0gVGhlIE1heGltL0RhbGxhcyBTZW1pY29uZHVjdG9yIERTMjQ5MCBidWlsZHMgVVNCIDwtPiBXMSBicmlkZ2VzLgorbXhjLXcxCisJLSBXMSBtYXN0ZXIgY29udHJvbGxlciBkcml2ZXIgZm91bmQgb24gRnJlZXNjYWxlIE1YMi9NWDMgU29Dcworb21hcC1oZHEKKwktIEhEUS8xLXdpcmUgbW9kdWxlIG9mIFRJIE9NQVAgMjQzMC8zNDMwLgordzEtZ3BpbworCS0gR1BJTyAxLXdpcmUgYnVzIG1hc3RlciBkcml2ZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3cxL21hc3RlcnMvZHMyNDgyIGIvRG9jdW1lbnRhdGlvbi93MS9tYXN0ZXJzL2RzMjQ4MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmY4ZWRhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi93MS9tYXN0ZXJzL2RzMjQ4MgpAQCAtMCwwICsxLDMxIEBACitLZXJuZWwgZHJpdmVyIGRzMjQ4MgorPT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIE1heGltIERTMjQ4Mi0xMDAsIE1heGltIERTMjQ4Mi04MDAKKyAgICBQcmVmaXg6ICdkczI0ODInCisgICAgQWRkcmVzc2VzIHNjYW5uZWQ6IE5vbmUKKyAgICBEYXRhc2hlZXRzOgorICAgICAgICBodHRwOi8vZGF0YXNoZWV0cy5tYXhpbS1pYy5jb20vZW4vZHMvRFMyNDgyLTEwMC5wZGYKKyAgICAgICAgaHR0cDovL2RhdGFzaGVldHMubWF4aW0taWMuY29tL2VuL2RzL0RTMjQ4Mi04MDAucGRmCisKK0F1dGhvcjogQmVuIEdhcmRuZXIgPGJnYXJkbmVyQHdhYnRlYy5jb20+CisKKworRGVzY3JpcHRpb24KKy0tLS0tLS0tLS0tCisKK1RoZSBNYXhpbS9EYWxsYXMgU2VtaWNvbmR1Y3RvciBEUzI0ODIgaXMgYSBJMkMgZGV2aWNlIHRoYXQgcHJvdmlkZXMKK29uZSAoRFMyNDgyLTEwMCkgb3IgZWlnaHQgKERTMjQ4Mi04MDApIDEtd2lyZSBidXNzZXMuCisKKworR2VuZXJhbCBSZW1hcmtzCistLS0tLS0tLS0tLS0tLS0KKworVmFsaWQgYWRkcmVzc2VzIGFyZSAweDE4LCAweDE5LCAweDFhLCBhbmQgMHgxYi4KK0hvd2V2ZXIsIHRoZSBkZXZpY2UgY2Fubm90IGJlIGRldGVjdGVkIHdpdGhvdXQgd3JpdGluZyB0byB0aGUgaTJjIGJ1cywgc28gbm8KK2RldGVjdGlvbiBpcyBkb25lLiBZb3Ugc2hvdWxkIGluc3RhbnRpYXRlIHRoZSBkZXZpY2UgZXhwbGljaXRseS4KKworJCBtb2Rwcm9iZSBkczI0ODIKKyQgZWNobyBkczI0ODIgMHgxOCA+IC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy0wL25ld19kZXZpY2UKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi93MS9tYXN0ZXJzL2RzMjQ5MCBiL0RvY3VtZW50YXRpb24vdzEvbWFzdGVycy9kczI0OTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UwOTExNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdzEvbWFzdGVycy9kczI0OTAKQEAgLTAsMCArMSw2OCBAQAorS2VybmVsIGRyaXZlciBkczI0OTAKKz09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBNYXhpbSBEUzI0OTAgYmFzZWQKKworQXV0aG9yOiBFdmdlbml5IFBvbHlha292IDxqb2hucG9sQDJrYS5taXB0LnJ1PgorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGUgTWF4aW0vRGFsbGFzIFNlbWljb25kdWN0b3IgRFMyNDkwIGlzIGEgY2hpcAord2hpY2ggYWxsb3dzIHRvIGJ1aWxkIFVTQiA8LT4gVzEgYnJpZGdlcy4KKworRFM5NDkwKFIpIGlzIGEgVVNCIDwtPiBXMSBidXMgbWFzdGVyIGRldmljZQord2hpY2ggaGFzIDB4ODEgZmFtaWx5IElEIGludGVncmF0ZWQgY2hpcCBhbmQgRFMyNDkwCitsb3ctbGV2ZWwgb3BlcmF0aW9uYWwgY2hpcC4KKworTm90ZXMgYW5kIGxpbWl0YXRpb25zLgorLSBUaGUgd2VhayBwdWxsdXAgY3VycmVudCBpcyBhIG1pbmltdW0gb2YgMC45bUEgYW5kIG1heGltdW0gb2YgNi4wbUEuCistIFRoZSA1ViBzdHJvbmcgcHVsbHVwIGlzIHN1cHBvcnRlZCB3aXRoIGEgbWluaW11bSBvZiA1LjltQSBhbmQgYQorICBtYXhpbXVtIG9mIDMwLjQgbUEuICAoRnJvbSBEUzI0OTAucGRmKQorLSBUaGUgaGFyZHdhcmUgd2lsbCBkZXRlY3Qgd2hlbiBkZXZpY2VzIGFyZSBhdHRhY2hlZCB0byB0aGUgYnVzIG9uIHRoZQorICBuZXh0IGJ1cyAocmVzZXQ/KSBvcGVyYXRpb24sIGhvd2V2ZXIgb25seSBhIG1lc3NhZ2UgaXMgcHJpbnRlZCBhcworICB0aGUgY29yZSB3MSBjb2RlIGRvZXNuJ3QgbWFrZSB1c2Ugb2YgdGhlIGluZm9ybWF0aW9uLiAgQ29ubmVjdGluZworICBvbmUgZGV2aWNlIHRlbmRzIHRvIGdpdmUgbXVsdGlwbGUgbmV3IGRldmljZSBub3RpZmljYXRpb25zLgorLSBUaGUgbnVtYmVyIG9mIFVTQiBidXMgdHJhbnNhY3Rpb25zIGNvdWxkIGJlIHJlZHVjZWQgaWYgdzFfcmVzZXRfc2VuZAorICB3YXMgYWRkZWQgdG8gdGhlIEFQSS4gIFRoZSBuYW1lIGlzIGp1c3QgYSBzdWdnZXN0aW9uLiAgSXQgd291bGQgdGFrZQorICBhIHdyaXRlIGJ1ZmZlciBhbmQgYSByZWFkIGJ1ZmZlciAoYWxvbmcgd2l0aCBzaXplcykgYXMgYXJndW1lbnRzLgorICBUaGUgZHMyNDkwIGJsb2NrIEkvTyBjb21tYW5kIHN1cHBvcnRzIHJlc2V0LCB3cml0ZSBidWZmZXIsIHJlYWQKKyAgYnVmZmVyLCBhbmQgc3Ryb25nIHB1bGx1cCBhbGwgaW4gb25lIGNvbW1hbmQsIGluc3RlYWQgb2YgdGhlIGN1cnJlbnQKKyAgMSByZXNldCBidXMsIDIgd3JpdGUgdGhlIG1hdGNoIHJvbSBjb21tYW5kIGFuZCBzbGF2ZSByb20gaWQsIDMgYmxvY2sKKyAgd3JpdGUgYW5kIHJlYWQgZGF0YS4gIFRoZSB3cml0ZSBidWZmZXIgbmVlZHMgdG8gaGF2ZSB0aGUgbWF0Y2ggcm9tCisgIGNvbW1hbmQgYW5kIHNsYXZlIHJvbSBpZCBwcmVwZW5kZWQgdG8gdGhlIGZyb250IG9mIHRoZSByZXF1ZXN0ZWQKKyAgd3JpdGUgYnVmZmVyLCBib3RoIG9mIHdoaWNoIGFyZSBrbm93biB0byB0aGUgZHJpdmVyLgorLSBUaGUgaGFyZHdhcmUgc3VwcG9ydHMgbm9ybWFsLCBmbGV4aWJsZSwgYW5kIG92ZXJkcml2ZSBidXMKKyAgY29tbXVuaWNhdGlvbiBzcGVlZHMsIGJ1dCBvbmx5IHRoZSBub3JtYWwgaXMgc3VwcG9ydGVkLgorLSBUaGUgcmVnaXN0ZXJlZCB3MV9idXNfbWFzdGVyIGZ1bmN0aW9ucyBkb24ndCBkZWZpbmUgZXJyb3IKKyAgY29uZGl0aW9ucy4gIElmIGEgYnVzIHNlYXJjaCBpcyBpbiBwcm9ncmVzcyBhbmQgdGhlIGRzMjQ5MCBpcworICByZW1vdmVkIGl0IGNhbiBwcm9kdWNlIGEgZ29vZCBhbW91bnQgb2YgZXJyb3Igb3V0cHV0IGJlZm9yZSB0aGUgYnVzCisgIHNlYXJjaCBmaW5pc2hlcy4KKy0gVGhlIGhhcmR3YXJlIHN1cHBvcnRzIGRldGVjdGluZyBzb21lIGVycm9yIGNvbmRpdGlvbnMsIHN1Y2ggYXMKKyAgc2hvcnQsIGFsYXJtaW5nIHByZXNlbmNlIG9uIHJlc2V0LCBhbmQgbm8gcHJlc2VuY2Ugb24gcmVzZXQsIGJ1dCB0aGUKKyAgZHJpdmVyIGRvZXNuJ3QgcXVlcnkgdGhvc2UgdmFsdWVzLgorLSBUaGUgZHMyNDkwIHNwZWNpZmljYXRpb24gZG9lc24ndCBjb3ZlciBzaG9ydCBidWxrIGluIHJlYWRzIGluCisgIGRldGFpbCwgYnV0IG15IG9ic2VydmF0aW9uIGlzIGlmIGZld2VyIGJ5dGVzIGFyZSByZXF1ZXN0ZWQgdGhhbiBhcmUKKyAgYXZhaWxhYmxlLCB0aGUgYnVsayByZWFkIHdpbGwgcmV0dXJuIGFuIGVycm9yIGFuZCB0aGUgaGFyZHdhcmUgd2lsbAorICBjbGVhciB0aGUgZW50aXJlIGJ1bGsgaW4gYnVmZmVyLiAgSXQgd291bGQgYmUgcG9zc2libGUgdG8gcmVhZCB0aGUKKyAgbWF4aW11bSBidWZmZXIgc2l6ZSB0byBub3QgcnVuIGludG8gdGhpcyBlcnJvciBjb25kaXRpb24sIG9ubHkgZXh0cmEKKyAgYnl0ZXMgaW4gdGhlIGJ1ZmZlciBpcyBhIGxvZ2ljIGVycm9yIGluIHRoZSBkcml2ZXIuICBUaGUgY29kZSBzaG91bGQKKyAgc2hvdWxkIG1hdGNoIHJlYWRzIGFuZCB3cml0ZXMgYXMgd2VsbCBhcyBkYXRhIHNpemVzLiAgUmVhZHMgYW5kCisgIHdyaXRlcyBhcmUgc2VyaWFsaXplZCBhbmQgdGhlIHN0YXR1cyB2ZXJpZmllcyB0aGF0IHRoZSBjaGlwIGlzIGlkbGUKKyAgKGFuZCBkYXRhIGlzIGF2YWlsYWJsZSkgYmVmb3JlIHRoZSByZWFkIGlzIGV4ZWN1dGVkLCBzbyBpdCBzaG91bGQKKyAgbm90IGhhcHBlbi4KKy0gUnVubmluZyB4ODZfNjQgMi42LjI0IFVIQ0kgdW5kZXIgcWVtdSAwLjkuMCB1bmRlciB4ODZfNjQgMi42LjIyLXJjNgorICB3aXRoIGEgT0hDSSBjb250cm9sbGVyLCBkczI0OTAgcnVubmluZyBpbiB0aGUgZ3Vlc3Qgd291bGQgb3BlcmF0ZQorICBub3JtYWxseSB0aGUgZmlyc3QgdGltZSB0aGUgbW9kdWxlIHdhcyBsb2FkZWQgYWZ0ZXIgcWVtdSBhdHRhY2hlZAorICB0aGUgZHMyNDkwIGhhcmR3YXJlLCBidXQgaWYgdGhlIG1vZHVsZSB3YXMgdW5sb2FkZWQsIHRoZW4gcmVsb2FkZWQKKyAgbW9zdCBvZiB0aGUgdGltZSBvbmUgb2YgdGhlIGJ1bGsgb3V0IG9yIGluLCBhbmQgdXN1YWxseSB0aGUgYnVsayBpbgorICB3b3VsZCBmYWlsLiAgcWVtdSBzZXRzIGEgNTBtcyB0aW1lb3V0IGFuZCB0aGUgYnVsayBpbiB3b3VsZCB0aW1lb3V0CisgIGV2ZW4gd2hlbiB0aGUgc3RhdHVzIHNob3dzIGRhdGEgYXZhaWxhYmxlLiAgQSBidWxrIG91dCB3cml0ZSB3b3VsZAorICBzaG93IGEgc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLCBidXQgdGhlIGRzMjQ5MCBzdGF0dXMgcmVnaXN0ZXIgd291bGQKKyAgc2hvdyAwIGJ5dGVzIHdyaXR0ZW4uICBEZXRhY2hpbmcgcWVtdSBmcm9tIHRoZSBkczI0OTAgaGFyZHdhcmUgYW5kCisgIHJlYXR0YWNoaW5nIHdvdWxkIGNsZWFyIHRoZSBwcm9ibGVtLiAgdXNibW9uIG91dHB1dCBpbiB0aGUgZ3Vlc3QgYW5kCisgIGhvc3QgZGlkIG5vdCBleHBsYWluIHRoZSBwcm9ibGVtLiAgTXkgZ3Vlc3MgaXMgYSBidWcgaW4gZWl0aGVyIHFlbXUKKyAgb3IgdGhlIGhvc3QgT1MgYW5kIG1vcmUgbGlrZWx5IHRoZSBob3N0IE9TLgorLS0gMDMtMDYtMjAwOCBEYXZpZCBGcmllcyA8RGF2aWRARnJpZXMubmV0PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi93MS9tYXN0ZXJzL214Yy13MSBiL0RvY3VtZW50YXRpb24vdzEvbWFzdGVycy9teGMtdzEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhiZTFhZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdzEvbWFzdGVycy9teGMtdzEKQEAgLTAsMCArMSwxMiBAQAorS2VybmVsIGRyaXZlciBteGNfdzEKKz09PT09PT09PT09PT09PT09PT09CisKK1N1cHBvcnRlZCBjaGlwczoKKyAgKiBGcmVlc2NhbGUgTVgyNywgTVgzMSBhbmQgcHJvYmFibHkgb3RoZXIgaS5NWCBTb0NzCisgICAgRGF0YXNoZWV0czoKKyAgICAgICAgaHR0cDovL3d3dy5mcmVlc2NhbGUuY29tL2ZpbGVzLzMyYml0L2RvYy9kYXRhX3NoZWV0L01DSU1YMzEucGRmP2Zwc3A9MQorCWh0dHA6Ly9jYWNoZS5mcmVlc2NhbGUuY29tL2ZpbGVzL2RzcC9kb2MvYXJjaGl2ZS9NQ0lNWDI3LnBkZj9mc3JjaD0xJldUX1RZUEU9CisJRGF0YSUyMFNoZWV0cyZXVF9WRU5ET1I9RlJFRVNDQUxFJldUX0ZJTEVfRk9STUFUPXBkZiZXVF9BU1NFVD1Eb2N1bWVudGF0aW9uCisKK0F1dGhvcjogT3JpZ2luYWxseSBiYXNlZCBvbiBGcmVlc2NhbGUgY29kZSwgcHJlcGFyZWQgZm9yIG1haW5saW5lIGJ5CisJU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi93MS9tYXN0ZXJzL29tYXAtaGRxIGIvRG9jdW1lbnRhdGlvbi93MS9tYXN0ZXJzL29tYXAtaGRxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzNDUyMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3cxL21hc3RlcnMvb21hcC1oZHEKQEAgLTAsMCArMSw1MiBAQAorS2VybmVsIGRyaXZlciBmb3Igb21hcCBIRFEvMS13aXJlIG1vZHVsZS4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorPT09PT09PT09PT09PT09PQorCUhEUS8xLXdpcmUgY29udHJvbGxlciBvbiB0aGUgVEkgT01BUCAyNDMwLzM0MzAgcGxhdGZvcm1zLgorCitBIHVzZWZ1bCBsaW5rIGFib3V0IEhEUSBiYXNpY3M6Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitodHRwOi8vZm9jdXMudGkuY29tL2xpdC9hbi9zbHVhNDA4YS9zbHVhNDA4YS5wZGYKKworRGVzY3JpcHRpb246Cis9PT09PT09PT09PT0KK1RoZSBIRFEvMS1XaXJlIG1vZHVsZSBvZiBUSSBPTUFQMjQzMC8zNDMwIHBsYXRmb3JtcyBpbXBsZW1lbnQgdGhlIGhhcmR3YXJlCitwcm90b2NvbCBvZiB0aGUgbWFzdGVyIGZ1bmN0aW9ucyBvZiB0aGUgQmVuY2htYXJrIEhEUSBhbmQgdGhlIERhbGxhcworU2VtaWNvbmR1Y3RvciAxLVdpcmUgcHJvdG9jb2xzLiBUaGVzZSBwcm90b2NvbHMgdXNlIGEgc2luZ2xlIHdpcmUgZm9yCitjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIG1hc3RlciAoSERRLzEtV2lyZSBjb250cm9sbGVyKSBhbmQgdGhlIHNsYXZlCisoSERRLzEtV2lyZSBleHRlcm5hbCBjb21wbGlhbnQgZGV2aWNlKS4KKworQSB0eXBpY2FsIGFwcGxpY2F0aW9uIG9mIHRoZSBIRFEvMS1XaXJlIG1vZHVsZSBpcyB0aGUgY29tbXVuaWNhdGlvbiB3aXRoIGJhdHRlcnkKK21vbml0b3IgKGdhcyBnYXVnZSkgaW50ZWdyYXRlZCBjaXJjdWl0cy4KKworVGhlIGNvbnRyb2xsZXIgc3VwcG9ydHMgb3BlcmF0aW9uIGluIGJvdGggSERRIGFuZCAxLXdpcmUgbW9kZS4gVGhlIGVzc2VudGlhbAorZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBIRFEgYW5kIDEtd2lyZSBtb2RlIGlzIGhvdyB0aGUgc2xhdmUgZGV2aWNlIHJlc3BvbmRzIHRvCitpbml0aWFsaXphdGlvbiBwdWxzZS5JbiBIRFEgbW9kZSwgdGhlIGZpcm13YXJlIGRvZXMgbm90IHJlcXVpcmUgdGhlIGhvc3QgdG8KK2NyZWF0ZSBhbiBpbml0aWFsaXphdGlvbiBwdWxzZSB0byB0aGUgc2xhdmUuSG93ZXZlciwgdGhlIHNsYXZlIGNhbiBiZSByZXNldCBieQordXNpbmcgYW4gaW5pdGlhbGl6YXRpb24gcHVsc2UgKGFsc28gcmVmZXJyZWQgdG8gYXMgYSBicmVhayBwdWxzZSkuVGhlIHNsYXZlCitkb2VzIG5vdCByZXNwb25kIHdpdGggYSBwcmVzZW5jZSBwdWxzZSBhcyBpdCBkb2VzIGluIHRoZSAxLVdpcmUgcHJvdG9jb2wuCisKK1JlbWFya3M6Cis9PT09PT09PQorVGhlIGRyaXZlciAoZHJpdmVycy93MS9tYXN0ZXJzL29tYXBfaGRxLmMpIHN1cHBvcnRzIHRoZSBIRFEgbW9kZSBvZiB0aGUKK2NvbnRyb2xsZXIuIEluIHRoaXMgbW9kZSwgYXMgd2UgY2FuIG5vdCByZWFkIHRoZSBJRCB3aGljaCBvYmV5cyB0aGUgVzEKK3NwZWMoZmFtaWx5OmlkOmNyYyksIGEgbW9kdWxlIHBhcmFtZXRlciBjYW4gYmUgcGFzc2VkIHRvIHRoZSBkcml2ZXIgd2hpY2ggd2lsbAorYmUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIENSQyBhbmQgcGFzcyBiYWNrIGFuIGFwcHJvcHJpYXRlIHNsYXZlIElEIHRvIHRoZSBXMQorY29yZS4KKworQnkgZGVmYXVsdCB0aGUgbWFzdGVyIGRyaXZlciBhbmQgdGhlIEJRIHNsYXZlIGkvZgorZHJpdmVyKGRyaXZlcnMvdzEvc2xhdmVzL3cxX2JxMjcwMDAuYykgc2V0cyB0aGUgSUQgdG8gMS4KK1BsZWFzZSBub3RlIHRvIGxvYWQgYm90aCB0aGUgbW9kdWxlcyB3aXRoIGEgZGlmZmVyZW50IElEIGlmIHJlcXVpcmVkLCBidXQgbm90ZQordGhhdCB0aGUgSUQgdXNlZCBzaG91bGQgYmUgc2FtZSBmb3IgYm90aCBtYXN0ZXIgYW5kIHNsYXZlIGRyaXZlciBsb2FkaW5nLgorCitlLmc6CitpbnNtb2Qgb21hcF9oZHEua28gVzFfSUQ9MgoraW5hbW9kIHcxX2JxMjcwMDAua28gRl9JRD0yCisKK1RoZSBkcml2ZXIgYWxzbyBzdXBwb3J0cyAxLXdpcmUgbW9kZS4gSW4gdGhpcyBtb2RlLCB0aGVyZSBpcyBubyBuZWVkIHRvCitwYXNzIHNsYXZlIElEIGFzIHBhcmFtZXRlci4gVGhlIGRyaXZlciB3aWxsIGF1dG8tZGV0ZWN0IHNsYXZlcyBjb25uZWN0ZWQKK3RvIHRoZSBidXMgdXNpbmcgU0VBUkNIX1JPTSBwcm9jZWR1cmUuIDEtd2lyZSBtb2RlIGNhbiBiZSBzZWxlY3RlZCBieQorc2V0dGluZyAidGksbW9kZSIgcHJvcGVydHkgdG8gIjF3IiBpbiBEVCAoc2VlCitEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdzEvb21hcC1oZHEudHh0IGZvciBtb3JlIGRldGFpbHMpLgorQnkgZGVmYXVsdCBkcml2ZXIgaXMgaW4gSERRIG1vZGUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3cxL21hc3RlcnMvdzEtZ3BpbyBiL0RvY3VtZW50YXRpb24vdzEvbWFzdGVycy93MS1ncGlvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNWQzYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3cxL21hc3RlcnMvdzEtZ3BpbwpAQCAtMCwwICsxLDMzIEBACitLZXJuZWwgZHJpdmVyIHcxLWdwaW8KKz09PT09PT09PT09PT09PT09PT09PQorCitBdXRob3I6IFZpbGxlIFN5cmphbGEgPHN5cmphbGFAc2NpLmZpPgorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitHUElPIDEtd2lyZSBidXMgbWFzdGVyIGRyaXZlci4gVGhlIGRyaXZlciB1c2VzIHRoZSBHUElPIEFQSSB0byBjb250cm9sIHRoZQord2lyZSBhbmQgdGhlIEdQSU8gcGluIGNhbiBiZSBzcGVjaWZpZWQgdXNpbmcgcGxhdGZvcm0gZGF0YS4KKworCitFeGFtcGxlIChtYWNoLWF0OTEpCistLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpbmNsdWRlIDxsaW51eC93MS1ncGlvLmg+CisKK3N0YXRpYyBzdHJ1Y3QgdzFfZ3Bpb19wbGF0Zm9ybV9kYXRhIGZvb193MV9ncGlvX3BkYXRhID0geworCS5waW4JCT0gQVQ5MV9QSU5fUEIyMCwKKwkuaXNfb3Blbl9kcmFpbgk9IDEsCit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSBmb29fdzFfZGV2aWNlID0geworCS5uYW1lCQkJPSAidzEtZ3BpbyIsCisJLmlkCQkJPSAtMSwKKwkuZGV2LnBsYXRmb3JtX2RhdGEJPSAmZm9vX3cxX2dwaW9fcGRhdGEsCit9OworCisuLi4KKwlhdDkxX3NldF9HUElPX3BlcmlwaChmb29fdzFfZ3Bpb19wZGF0YS5waW4sIDEpOworCWF0OTFfc2V0X211bHRpX2RyaXZlKGZvb193MV9ncGlvX3BkYXRhLnBpbiwgMSk7CisJcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyKCZmb29fdzFfZGV2aWNlKTsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdzEvc2xhdmVzLzAwLUlOREVYIGIvRG9jdW1lbnRhdGlvbi93MS9zbGF2ZXMvMDAtSU5ERVgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmUxOGM3MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdzEvc2xhdmVzLzAwLUlOREVYCkBAIC0wLDAgKzEsOCBAQAorMDAtSU5ERVgKKwktIFRoaXMgZmlsZQordzFfdGhlcm0KKwktIFRoZSBNYXhpbS9EYWxsYXMgU2VtaWNvbmR1Y3RvciBkczE4KjIwIHRlbXBlcmF0dXJlIHNlbnNvci4KK3cxX2RzMjQyMworCS0gVGhlIE1heGltL0RhbGxhcyBTZW1pY29uZHVjdG9yIGRzMjQyMyBjb3VudGVyIGRldmljZS4KK3cxX2RzMjhlMDQKKwktIFRoZSBNYXhpbS9EYWxsYXMgU2VtaWNvbmR1Y3RvciBkczI4ZTA0IGVlcHJvbS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdzEvc2xhdmVzL3cxX2RzMjQwNiBiL0RvY3VtZW50YXRpb24vdzEvc2xhdmVzL3cxX2RzMjQwNgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTM3ZmU2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi93MS9zbGF2ZXMvdzFfZHMyNDA2CkBAIC0wLDAgKzEsMjUgQEAKK3cxX2RzMjQwNiBrZXJuZWwgZHJpdmVyCis9PT09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogTWF4aW0gRFMyNDA2IChhbmQgb3RoZXIgZmFtaWx5IDB4MTIpIGFkZHJlc3NhYmxlIHN3aXRjaGVzCisKK0F1dGhvcjogU2NvdHQgQWxmdGVyIDxzY290dEBhbGZ0ZXIudXM+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitUaGUgdzFfZHMyNDA2IGRyaXZlciBhbGxvd3MgY29ubmVjdGVkIGRldmljZXMgdG8gYmUgc3dpdGNoZWQgb24gYW5kIG9mZi4gCitUaGVzZSBjaGlwcyBhbHNvIHByb3ZpZGUgMTI4IGJ5dGVzIG9mIE9UUCBFUFJPTSwgYnV0IHJlYWRpbmcvd3JpdGluZyBpdCBpcworbm90IHN1cHBvcnRlZC4gIEluIFRTT0MtNiBmb3JtLCB0aGUgRFMyNDA2IHByb3ZpZGVzIHR3byBzd2l0Y2ggb3V0cHV0cyBhbmQKK2NhbiBiZSBwcm92aWRlZCB3aXRoIHBvd2VyIG9uIGEgZGVkaWNhdGVkIGlucHV0LiAgSW4gVE8tOTIgZm9ybSwgaXQgcHJvdmlkZXMKK29uZSBvdXRwdXQgYW5kIHVzZXMgcGFyYXNpdGljIHBvd2VyIG9ubHkuCisKK1RoZSBkcml2ZXIgcHJvdmlkZXMgdHdvIHN5c2ZzIGZpbGVzLiAgc3RhdGUgaXMgcmVhZGFibGU7IGl0IGdpdmVzIHRoZQorY3VycmVudCBzdGF0ZSBvZiBlYWNoIHN3aXRjaCwgd2l0aCBQSU8gQSBpbiBiaXQgMCBhbmQgUElPIEIgaW4gYml0IDEuICBUaGUKK2RyaXZlciBPUnMgdGhpcyBzdGF0ZSB3aXRoIDB4MzAsIHNvIHNoZWxsIHNjcmlwdHMgZ2V0IGFuIEFTQ0lJIDAvMS8yLzMgdG8KK3dvcmsgd2l0aC4gIG91dHB1dCBpcyB3cml0YWJsZTsgYml0cyAwIGFuZCAxIGNvbnRyb2wgUElPIEEgYW5kIEIsCityZXNwZWN0aXZlbHkuICBCaXRzIDItNyBhcmUgaWdub3JlZCwgc28gaXQncyBzYWZlIHRvIHdyaXRlIEFTQ0lJIGRhdGEuCisKK0NSQ3MgYXJlIGNoZWNrZWQgb24gcmVhZCBhbmQgd3JpdGUuICBGYWlsZWQgY2hlY2tzIGNhdXNlIGFuIEkvTyBlcnJvciB0byBiZQorcmV0dXJuZWQuICBPbiBhIGZhaWxlZCB3cml0ZSwgdGhlIHN3aXRjaCBzdGF0dXMgaXMgbm90IGNoYW5nZWQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3cxL3NsYXZlcy93MV9kczI0MjMgYi9Eb2N1bWVudGF0aW9uL3cxL3NsYXZlcy93MV9kczI0MjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y5OGI1MAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdzEvc2xhdmVzL3cxX2RzMjQyMwpAQCAtMCwwICsxLDQ3IEBACitLZXJuZWwgZHJpdmVyIHcxX2RzMjQyMworPT09PT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIE1heGltIERTMjQyMyBiYXNlZCBjb3VudGVyIGRldmljZXMuCisKK3N1cHBvcnRlZCBmYW1pbHkgY29kZXM6CisJVzFfVEhFUk1fRFMyNDIzCTB4MUQKKworQXV0aG9yOiBNaWthIExhaXRpbyA8bGFtaWtyQHBpbHBwYS5vcmc+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitTdXBwb3J0IGlzIHByb3ZpZGVkIHRocm91Z2ggdGhlIHN5c2ZzIHcxX3NsYXZlIGZpbGUuIEVhY2ggb3BlbmluZyBhbmQKK3JlYWQgc2VxdWVuY2Ugb2YgdzFfc2xhdmUgZmlsZSBpbml0aWF0ZXMgdGhlIHJlYWQgb2YgY291bnRlcnMgYW5kIHJhbQorYXZhaWxhYmxlIGluIERTMjQyMyBwYWdlcyAxMiAtIDE1LgorCitSZXN1bHQgb2YgZWFjaCBwYWdlIGlzIHByb3ZpZGVkIGFzIGFuIEFTQ0lJIG91dHB1dCB3aGVyZSBlYWNoIGNvdW50ZXIKK3ZhbHVlIGFuZCBhc3NvY2lhdGVkIHJhbSBidWZmZXIgaXMgb3V0cHB1dGVkIHRvIG93biBsaW5lLgorCitFYWNoIGxpbmVzIHdpbGwgY29udGFpbiB0aGUgdmFsdWVzIG9mIDQyIGJ5dGVzIHJlYWQgZnJvbSB0aGUgY291bnRlciBhbmQKK21lbW9yeSBwYWdlIGFsb25nIHRoZSBjcmM9WUVTIG9yIE5PIGZvciBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHJlYWQgb3BlcmF0aW9uCit3YXMgc3VjY2Vzc2Z1bCBhbmQgQ1JDIG1hdGNoZWQuCitJZiB0aGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsLCB0aGVyZSBpcyBhbHNvIGluIHRoZSBlbmQgb2YgZWFjaCBsaW5lCithIGNvdW50ZXIgdmFsdWUgZXhwcmVzc2VkIGFzIGFuIGludGVnZXIgYWZ0ZXIgYz0KKworTWVhbmluZyBvZiA0MiBieXRlcyByZXByZXNlbnRlZCBpcyBmb2xsb3dpbmc6CisgLSAxIGJ5dGUgZnJvbSByYW0gcGFnZQorIC0gNCBieXRlcyBmb3IgdGhlIGNvdW50ZXIgdmFsdWUKKyAtIDQgemVybyBieXRlcworIC0gMiBieXRlcyBmb3IgY3JjMTYgd2hpY2ggd2FzIGNhbGN1bGF0ZWQgZnJvbSB0aGUgZGF0YSByZWFkIHNpbmNlIHRoZSBwcmV2aW91cyBjcmMgYnl0ZXMKKyAtIDMxIHJlbWFpbmluZyBieXRlcyBmcm9tIHRoZSByYW0gcGFnZQorIC0gY3JjPVlFUy9OTyBpbmRpY2F0aW5nIHdoZXRoZXIgcmVhZCB3YXMgb2sgYW5kIGNyYyBtYXRjaGVkCisgLSBjPTxpbnQ+IGN1cnJlbnQgY291bnRlciB2YWx1ZQorCitleGFtcGxlIGZyb20gdGhlIHN1Y2Nlc3NmdWwgcmVhZDoKKzAwIDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDZkIDM4IDAwIGZmIGZmIDAwIDAwIGZlIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIGNyYz1ZRVMgYz0yCiswMCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAwMCBlMCAxZiAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiBjcmM9WUVTIGM9MgorMDAgMjkgYzYgNWQgMTggMDAgMDAgMDAgMDAgMDQgMzcgMDAgZmYgZmYgMDAgMDAgZmYgZmYgMDAgMDAgZmYgZmYgMDAgMDAgZmYgZmYgMDAgMDAgZmYgZmYgMDAgMDAgZmYgZmYgMDAgMDAgZmYgZmYgMDAgMDAgZmYgZmYgY3JjPVlFUyBjPTQwODc5ODc2MQorMDAgMDUgMDAgMDAgMDAgMDAgMDAgMDAgMDAgOGQgMzkgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgY3JjPVlFUyBjPTUKKworZXhhbXBsZSBmcm9tIHRoZSByZWFkIHdpdGggY3JjIGVycm9yczoKKzAwIDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDZkIDM4IDAwIGZmIGZmIDAwIDAwIGZlIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIGNyYz1ZRVMgYz0yCiswMCAwMiAwMCAwMCAyMiAwMCAwMCAwMCAwMCBlMCAxZiAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiBjcmM9Tk8KKzAwIGUxIDYxIDVkIDE5IDAwIDAwIDAwIDAwIGRmIDBiIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIGNyYz1OTworMDAgMDUgMDAgMDAgMjAgMDAgMDAgMDAgMDAgOGQgMzkgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgY3JjPU5PCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3cxL3NsYXZlcy93MV9kczI4ZTA0IGIvRG9jdW1lbnRhdGlvbi93MS9zbGF2ZXMvdzFfZHMyOGUwNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODE5YjY1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi93MS9zbGF2ZXMvdzFfZHMyOGUwNApAQCAtMCwwICsxLDM2IEBACitLZXJuZWwgZHJpdmVyIHcxX2RzMjhlMDQKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitTdXBwb3J0ZWQgY2hpcHM6CisgICogTWF4aW0gRFMyOEUwNC0xMDAgNDA5Ni1CaXQgQWRkcmVzc2FibGUgMS1XaXJlIEVFUFJPTSB3aXRoIFBJTworCitzdXBwb3J0ZWQgZmFtaWx5IGNvZGVzOgorCVcxX0ZBTUlMWV9EUzI4RTA0CTB4MUMKKworQXV0aG9yOiBNYXJrdXMgRnJhbmtlLCA8ZnJhbmtlLm1Ac2ViYWttdC5jb20+IDxmcmFubUBocnoudHUtY2hlbW5pdHouZGU+CisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCitTdXBwb3J0IGlzIHByb3ZpZGVkIHRocm91Z2ggdGhlIHN5c2ZzIGZpbGVzICJlZXByb20iIGFuZCAicGlvIi4gQ1JDIGNoZWNraW5nCitkdXJpbmcgbWVtb3J5IGFjY2Vzc2VzIGNhbiBvcHRpb25hbGx5IGJlIGVuYWJsZWQvZGlzYWJsZWQgdmlhIHRoZSBkZXZpY2UKK2F0dHJpYnV0ZSAiY3JjY2hlY2siLiBUaGUgc3Ryb25nIHB1bGwtdXAgY2FuIG9wdGlvbmFsbHkgYmUgZW5hYmxlZC9kaXNhYmxlZAordmlhIHRoZSBtb2R1bGUgcGFyYW1ldGVyICJ3MV9zdHJvbmdfcHVsbHVwIi4KKworTWVtb3J5IEFjY2VzcworCisJQSByZWFkIG9wZXJhdGlvbiBvbiB0aGUgImVlcHJvbSIgZmlsZSByZWFkcyB0aGUgZ2l2ZW4gYW1vdW50IG9mIGJ5dGVzCisJZnJvbSB0aGUgRUVQUk9NIG9mIHRoZSBEUzI4RTA0LgorCisJQSB3cml0ZSBvcGVyYXRpb24gb24gdGhlICJlZXByb20iIGZpbGUgd3JpdGVzIHRoZSBnaXZlbiBieXRlIHNlcXVlbmNlCisJdG8gdGhlIEVFUFJPTSBvZiB0aGUgRFMyOEUwNC4gSWYgQ1JDIGNoZWNraW5nIG1vZGUgaXMgZW5hYmxlZCBvbmx5CisJZnVsbHkgYWxpZ25lZCBibG9ja3Mgb2YgMzIgYnl0ZXMgd2l0aCB2YWxpZCBDUkMxNiB2YWx1ZXMgKGluIGJ5dGVzIDMwCisJYW5kIDMxKSBhcmUgYWxsb3dlZCB0byBiZSB3cml0dGVuLgorCitQSU8gQWNjZXNzCisKKwlUaGUgMiBQSU9zIG9mIHRoZSBEUzI4RTA0LTEwMCBhcmUgYWNjZXNzaWJsZSB2aWEgdGhlICJwaW8iIHN5c2ZzIGZpbGUuCisKKwlUaGUgY3VycmVudCBzdGF0dXMgb2YgdGhlIFBJTydzIGlzIHJldHVybmVkIGFzIGFuIDggYml0IHZhbHVlLiBCaXQgMC8xCisJcmVwcmVzZW50IHRoZSBzdGF0ZSBvZiBQSU9fMC9QSU9fMS4gQml0cyAyLi43IGRvIG5vdCBjYXJlLiBUaGUgUElPJ3MgYXJlCisJZHJpdmVuIGxvdy1hY3RpdmUsIGkuZS4gdGhlIGRyaXZlciBkZWxpdmVycy9leHBlY3RzIGxvdy1hY3RpdmUgdmFsdWVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi93MS9zbGF2ZXMvdzFfdGhlcm0gYi9Eb2N1bWVudGF0aW9uL3cxL3NsYXZlcy93MV90aGVybQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzQxMWZlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi93MS9zbGF2ZXMvdzFfdGhlcm0KQEAgLTAsMCArMSw1OSBAQAorS2VybmVsIGRyaXZlciB3MV90aGVybQorPT09PT09PT09PT09PT09PT09PT0KKworU3VwcG9ydGVkIGNoaXBzOgorICAqIE1heGltIGRzMTgqMjAgYmFzZWQgdGVtcGVyYXR1cmUgc2Vuc29ycy4KKyAgKiBNYXhpbSBkczE4MjUgYmFzZWQgdGVtcGVyYXR1cmUgc2Vuc29ycy4KKworQXV0aG9yOiBFdmdlbml5IFBvbHlha292IDxqb2hucG9sQDJrYS5taXB0LnJ1PgorCisKK0Rlc2NyaXB0aW9uCistLS0tLS0tLS0tLQorCit3MV90aGVybSBwcm92aWRlcyBiYXNpYyB0ZW1wZXJhdHVyZSBjb252ZXJzaW9uIGZvciBkczE4KjIwIGRldmljZXMsIGFuZCB0aGUKK2RzMjhlYTAwIGRldmljZS4KK3N1cHBvcnRlZCBmYW1pbHkgY29kZXM6CitXMV9USEVSTV9EUzE4UzIwCTB4MTAKK1cxX1RIRVJNX0RTMTgyMgkJMHgyMgorVzFfVEhFUk1fRFMxOEIyMAkweDI4CitXMV9USEVSTV9EUzE4MjUJCTB4M0IKK1cxX1RIRVJNX0RTMjhFQTAwCTB4NDIKKworU3VwcG9ydCBpcyBwcm92aWRlZCB0aHJvdWdoIHRoZSBzeXNmcyB3MV9zbGF2ZSBmaWxlLiAgRWFjaCBvcGVuIGFuZAorcmVhZCBzZXF1ZW5jZSB3aWxsIGluaXRpYXRlIGEgdGVtcGVyYXR1cmUgY29udmVyc2lvbiB0aGVuIHByb3ZpZGUgdHdvCitsaW5lcyBvZiBBU0NJSSBvdXRwdXQuICBUaGUgZmlyc3QgbGluZSBjb250YWlucyB0aGUgbmluZSBoZXggYnl0ZXMKK3JlYWQgYWxvbmcgd2l0aCBhIGNhbGN1bGF0ZWQgY3JjIHZhbHVlIGFuZCBZRVMgb3IgTk8gaWYgaXQgbWF0Y2hlZC4KK0lmIHRoZSBjcmMgbWF0Y2hlZCB0aGUgcmV0dXJuZWQgdmFsdWVzIGFyZSByZXRhaW5lZC4gIFRoZSBzZWNvbmQgbGluZQorZGlzcGxheXMgdGhlIHJldGFpbmVkIHZhbHVlcyBhbG9uZyB3aXRoIGEgdGVtcGVyYXR1cmUgaW4gbWlsbGlkZWdyZWVzCitDZW50aWdyYWRlIGFmdGVyIHQ9LgorCitQYXJhc2l0ZSBwb3dlcmVkIGRldmljZXMgYXJlIGxpbWl0ZWQgdG8gb25lIHNsYXZlIHBlcmZvcm1pbmcgYQordGVtcGVyYXR1cmUgY29udmVyc2lvbiBhdCBhIHRpbWUuICBJZiBub25lIG9mIHRoZSBkZXZpY2VzIGFyZSBwYXJhc2l0ZQorcG93ZXJlZCBpdCB3b3VsZCBiZSBwb3NzaWJsZSB0byBjb252ZXJ0IGFsbCB0aGUgZGV2aWNlcyBhdCB0aGUgc2FtZQordGltZSBhbmQgdGhlbiBnbyBiYWNrIHRvIHJlYWQgaW5kaXZpZHVhbCBzZW5zb3JzLiAgVGhhdCBpc24ndAorY3VycmVudGx5IHN1cHBvcnRlZC4gIFRoZSBkcml2ZXIgYWxzbyBkb2Vzbid0IHN1cHBvcnQgcmVkdWNlZAorcHJlY2lzaW9uICh3aGljaCB3b3VsZCBhbHNvIHJlZHVjZSB0aGUgY29udmVyc2lvbiB0aW1lKS4KKworVGhlIG1vZHVsZSBwYXJhbWV0ZXIgc3Ryb25nX3B1bGx1cCBjYW4gYmUgc2V0IHRvIDAgdG8gZGlzYWJsZSB0aGUKK3N0cm9uZyBwdWxsdXAsIDEgdG8gZW5hYmxlIGF1dG9kZXRlY3Rpb24gb3IgMiB0byBmb3JjZSBzdHJvbmcgcHVsbHVwLgorSW4gY2FzZSBvZiBhdXRvZGV0ZWN0aW9uLCB0aGUgZHJpdmVyIHdpbGwgdXNlIHRoZSAiUkVBRCBQT1dFUiBTVVBQTFkiCitjb21tYW5kIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBwYXJpc3RlIHBvd2VyZWQgZGV2aWNlcyBvbiB0aGUgYnVzLgorSWYgc28sIGl0IHdpbGwgYWN0aXZhdGUgdGhlIG1hc3RlcidzIHN0cm9uZyBwdWxsdXAuCitJbiBjYXNlIHRoZSBkZXRlY3Rpb24gb2YgcGFyYXNpdGUgZGV2aWNlcyB1c2luZyB0aGlzIGNvbW1hbmQgZmFpbHMKKyhzZWVtcyB0byBiZSB0aGUgY2FzZSB3aXRoIHNvbWUgRFMxOFMyMCkgdGhlIHN0cm9uZyBwdWxsdXAgY2FuCitiZSBmb3JjZS1lbmFibGVkLgorSWYgdGhlIHN0cm9uZyBwdWxsdXAgaXMgZW5hYmxlZCwgdGhlIG1hc3RlcidzIHN0cm9uZyBwdWxsdXAgd2lsbCBiZQorZHJpdmVuIHdoZW4gdGhlIGNvbnZlcnNpb24gaXMgdGFraW5nIHBsYWNlLCBwcm92aWRlZCB0aGUgbWFzdGVyIGRyaXZlcgorZG9lcyBzdXBwb3J0IHRoZSBzdHJvbmcgcHVsbHVwIChvciBpdCBmYWxscyBiYWNrIHRvIGEgcHVsbHVwCityZXNpc3RvcikuICBUaGUgRFMxOGIyMCB0ZW1wZXJhdHVyZSBzZW5zb3Igc3BlY2lmaWNhdGlvbiBsaXN0cyBhCittYXhpbXVtIGN1cnJlbnQgZHJhdyBvZiAxLjVtQSBhbmQgdGhhdCBhIDVrIHB1bGx1cCByZXNpc3RvciBpcyBub3QKK3N1ZmZpY2llbnQuICBUaGUgc3Ryb25nIHB1bGx1cCBpcyBkZXNpZ25lZCB0byBwcm92aWRlIHRoZSBhZGRpdGlvbmFsCitjdXJyZW50IHJlcXVpcmVkLgorCitUaGUgRFMyOEVBMDAgcHJvdmlkZXMgYW4gYWRkaXRpb25hbCB0d28gcGlucyBmb3IgaW1wbGVtZW50aW5nIGEgc2VxdWVuY2UKK2RldGVjdGlvbiBhbGdvcml0aG0uICBUaGlzIGZlYXR1cmUgYWxsb3dzIHlvdSB0byBkZXRlcm1pbmUgdGhlIHBoeXNpY2FsCitsb2NhdGlvbiBvZiB0aGUgY2hpcCBpbiB0aGUgMS13aXJlIGJ1cyB3aXRob3V0IG5lZWRpbmcgcHJlLWV4aXN0aW5nCitrbm93bGVkZ2Ugb2YgdGhlIGJ1cyBvcmRlcmluZy4gIFN1cHBvcnQgaXMgcHJvdmlkZWQgdGhyb3VnaCB0aGUgc3lzZnMKK3cxX3NlcSBmaWxlLiAgVGhlIGZpbGUgd2lsbCBjb250YWluIGEgc2luZ2xlIGxpbmUgd2l0aCBhbiBpbnRlZ2VyIHZhbHVlCityZXByZXNlbnRpbmcgdGhlIGRldmljZSBpbmRleCBpbiB0aGUgYnVzIHN0YXJ0aW5nIGF0IDAuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3cxL3cxLmdlbmVyaWMgYi9Eb2N1bWVudGF0aW9uL3cxL3cxLmdlbmVyaWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNmZmFmOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdzEvdzEuZ2VuZXJpYwpAQCAtMCwwICsxLDEyMSBAQAorVGhlIDEtd2lyZSAodzEpIHN1YnN5c3RlbQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgMS13aXJlIGJ1cyBpcyBhIHNpbXBsZSBtYXN0ZXItc2xhdmUgYnVzIHRoYXQgY29tbXVuaWNhdGVzIHZpYSBhIHNpbmdsZQorc2lnbmFsIHdpcmUgKHBsdXMgZ3JvdW5kLCBzbyB0d28gd2lyZXMpLgorCitEZXZpY2VzIGNvbW11bmljYXRlIG9uIHRoZSBidXMgYnkgcHVsbGluZyB0aGUgc2lnbmFsIHRvIGdyb3VuZCB2aWEgYW4gb3BlbgorZHJhaW4gb3V0cHV0IGFuZCBieSBzYW1wbGluZyB0aGUgbG9naWMgbGV2ZWwgb2YgdGhlIHNpZ25hbCBsaW5lLgorCitUaGUgdzEgc3Vic3lzdGVtIHByb3ZpZGVzIHRoZSBmcmFtZXdvcmsgZm9yIG1hbmFnaW5nIHcxIG1hc3RlcnMgYW5kCitjb21tdW5pY2F0aW9uIHdpdGggc2xhdmVzLgorCitBbGwgdzEgc2xhdmUgZGV2aWNlcyBtdXN0IGJlIGNvbm5lY3RlZCB0byBhIHcxIGJ1cyBtYXN0ZXIgZGV2aWNlLgorCitFeGFtcGxlIHcxIG1hc3RlciBkZXZpY2VzOgorICAgIERTOTQ5MCB1c2IgZGV2aWNlCisgICAgVzEtb3Zlci1HUElPCisgICAgRFMyNDgyIChpMmMgdG8gdzEgYnJpZGdlKQorICAgIEVtdWxhdGVkIGRldmljZXMsIHN1Y2ggYXMgYSBSUzIzMiBjb252ZXJ0ZXIsIHBhcmFsbGVsIHBvcnQgYWRhcHRlciwgZXRjCisKKworV2hhdCBkb2VzIHRoZSB3MSBzdWJzeXN0ZW0gZG8/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1doZW4gYSB3MSBtYXN0ZXIgZHJpdmVyIHJlZ2lzdGVycyB3aXRoIHRoZSB3MSBzdWJzeXN0ZW0sIHRoZSBmb2xsb3dpbmcgb2NjdXJzOgorCisgLSBzeXNmcyBlbnRyaWVzIGZvciB0aGF0IHcxIG1hc3RlciBhcmUgY3JlYXRlZAorIC0gdGhlIHcxIGJ1cyBpcyBwZXJpb2RpY2FsbHkgc2VhcmNoZWQgZm9yIG5ldyBzbGF2ZSBkZXZpY2VzCisKK1doZW4gYSBkZXZpY2UgaXMgZm91bmQgb24gdGhlIGJ1cywgdzEgY29yZSB0cmllcyB0byBsb2FkIHRoZSBkcml2ZXIgZm9yIGl0cyBmYW1pbHkKK2FuZCBjaGVjayBpZiBpdCBpcyBsb2FkZWQuIElmIHNvLCB0aGUgZmFtaWx5IGRyaXZlciBpcyBhdHRhY2hlZCB0byB0aGUgc2xhdmUuCitJZiB0aGVyZSBpcyBubyBkcml2ZXIgZm9yIHRoZSBmYW1pbHksIGRlZmF1bHQgb25lIGlzIGFzc2lnbmVkLCB3aGljaCBhbGxvd3MgdG8gcGVyZm9ybQorYWxtb3N0IGFueSBraW5kIG9mIG9wZXJhdGlvbnMuIEVhY2ggbG9naWNhbCBvcGVyYXRpb24gaXMgYSB0cmFuc2FjdGlvbgoraW4gbmF0dXJlLCB3aGljaCBjYW4gY29udGFpbiBzZXZlcmFsICh0d28gb3Igb25lKSBsb3ctbGV2ZWwgb3BlcmF0aW9ucy4KK0xldCdzIHNlZSBob3cgb25lIGNhbiByZWFkIEVFUFJPTSBjb250ZXh0OgorMS4gb25lIG11c3Qgd3JpdGUgY29udHJvbCBidWZmZXIsIGkuZS4gYnVmZmVyIGNvbnRhaW5pbmcgY29tbWFuZCBieXRlCithbmQgdHdvIGJ5dGUgYWRkcmVzcy4gQXQgdGhpcyBzdGVwIGJ1cyBpcyByZXNldCBhbmQgYXBwcm9wcmlhdGUgZGV2aWNlCitpcyBzZWxlY3RlZCB1c2luZyBlaXRoZXIgVzFfU0tJUF9ST00gb3IgVzFfTUFUQ0hfUk9NIGNvbW1hbmQuCitUaGVuIHByb3ZpZGVkIGNvbnRyb2wgYnVmZmVyIGlzIGJlaW5nIHdyaXR0ZW4gdG8gdGhlIHdpcmUuCisyLiByZWFkaW5nLiBUaGlzIHdpbGwgaXNzdWUgcmVhZGluZyBlZXByb20gcmVzcG9uc2UuCisKK0l0IGlzIHBvc3NpYmxlIHRoYXQgYmV0d2VlbiAxLiBhbmQgMi4gdzEgbWFzdGVyIHRocmVhZCB3aWxsIHJlc2V0IGJ1cyBmb3Igc2VhcmNoaW5nCithbmQgc2xhdmUgZGV2aWNlIHdpbGwgYmUgZXZlbiByZW1vdmVkLCBidXQgaW4gdGhpcyBjYXNlIDB4ZmYgd2lsbAorYmUgcmVhZCwgc2luY2Ugbm8gZGV2aWNlIHdhcyBzZWxlY3RlZC4KKworCitXMSBkZXZpY2UgZmFtaWxpZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU2xhdmUgZGV2aWNlcyBhcmUgaGFuZGxlZCBieSBhIGRyaXZlciB3cml0dGVuIGZvciBhIGZhbWlseSBvZiB3MSBkZXZpY2VzLgorCitBIGZhbWlseSBkcml2ZXIgcG9wdWxhdGVzIGEgc3RydWN0IHcxX2ZhbWlseV9vcHMgKHNlZSB3MV9mYW1pbHkuaCkgYW5kCityZWdpc3RlcnMgd2l0aCB0aGUgdzEgc3Vic3lzdGVtLgorCitDdXJyZW50IGZhbWlseSBkcml2ZXJzOgordzFfdGhlcm0gLSAoZHMxOD8yMCB0aGVybWFsIHNlbnNvciBmYW1pbHkgZHJpdmVyKQorICAgIHByb3ZpZGVzIHRlbXBlcmF0dXJlIHJlYWRpbmcgZnVuY3Rpb24gd2hpY2ggaXMgYm91bmQgdG8gLT5yYmluKCkgbWV0aG9kCisgICAgb2YgdGhlIGFib3ZlIHcxX2ZhbWlseV9vcHMgc3RydWN0dXJlLgorCit3MV9zbWVtIC0gZHJpdmVyIGZvciBzaW1wbGUgNjRiaXQgbWVtb3J5IGNlbGwgcHJvdmlkZXMgSUQgcmVhZGluZyBtZXRob2QuCisKK1lvdSBjYW4gY2FsbCBhYm92ZSBtZXRob2RzIGJ5IHJlYWRpbmcgYXBwcm9wcmlhdGUgc3lzZnMgZmlsZXMuCisKKworV2hhdCBkb2VzIGEgdzEgbWFzdGVyIGRyaXZlciBuZWVkIHRvIGltcGxlbWVudD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZHJpdmVyIGZvciB3MSBidXMgbWFzdGVyIG11c3QgcHJvdmlkZSBhdCBtaW5pbXVtIHR3byBmdW5jdGlvbnMuCisKK0VtdWxhdGVkIGRldmljZXMgbXVzdCBwcm92aWRlIHRoZSBhYmlsaXR5IHRvIHNldCB0aGUgb3V0cHV0IHNpZ25hbCBsZXZlbAorKHdyaXRlX2JpdCkgYW5kIHNhbXBsZSB0aGUgc2lnbmFsIGxldmVsIChyZWFkX2JpdCkuCisKK0RldmljZXMgdGhhdCBzdXBwb3J0IHRoZSAxLXdpcmUgbmF0aXZlbHkgbXVzdCBwcm92aWRlIHRoZSBhYmlsaXR5IHRvIHdyaXRlIGFuZAorc2FtcGxlIGEgYml0ICh0b3VjaF9iaXQpIGFuZCByZXNldCB0aGUgYnVzIChyZXNldF9idXMpLgorCitNb3N0IGhhcmR3YXJlIHByb3ZpZGVzIGhpZ2hlci1sZXZlbCBmdW5jdGlvbnMgdGhhdCBvZmZsb2FkIHcxIGhhbmRsaW5nLgorU2VlIHN0cnVjdCB3MV9idXNfbWFzdGVyIGRlZmluaXRpb24gaW4gdzEuaCBmb3IgZGV0YWlscy4KKworCit3MSBtYXN0ZXIgc3lzZnMgaW50ZXJmYWNlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzx4eC14eHh4eHh4eHh4eHh4PiAtIEEgZGlyZWN0b3J5IGZvciBhIGZvdW5kIGRldmljZS4gVGhlIGZvcm1hdCBpcyBmYW1pbHktc2VyaWFsCitidXMgICAgICAgICAgICAgICAgLSAoc3RhbmRhcmQpIHN5bWxpbmsgdG8gdGhlIHcxIGJ1cworZHJpdmVyICAgICAgICAgICAgIC0gKHN0YW5kYXJkKSBzeW1saW5rIHRvIHRoZSB3MSBkcml2ZXIKK3cxX21hc3Rlcl9hZGQgICAgICAtIChydykgbWFudWFsbHkgcmVnaXN0ZXIgYSBzbGF2ZSBkZXZpY2UKK3cxX21hc3Rlcl9hdHRlbXB0cyAtIChybykgdGhlIG51bWJlciBvZiB0aW1lcyBhIHNlYXJjaCB3YXMgYXR0ZW1wdGVkCit3MV9tYXN0ZXJfbWF4X3NsYXZlX2NvdW50CisgICAgICAgICAgICAgICAgICAgLSAocncpIG1heGltdW0gbnVtYmVyIG9mIHNsYXZlcyB0byBzZWFyY2ggZm9yIGF0IGEgdGltZQordzFfbWFzdGVyX25hbWUgICAgIC0gKHJvKSB0aGUgbmFtZSBvZiB0aGUgZGV2aWNlICh3MV9idXNfbWFzdGVyWCkKK3cxX21hc3Rlcl9wdWxsdXAgICAtIChydykgNVYgc3Ryb25nIHB1bGx1cCAwIGVuYWJsZWQsIDEgZGlzYWJsZWQKK3cxX21hc3Rlcl9yZW1vdmUgICAtIChydykgbWFudWFsbHkgcmVtb3ZlIGEgc2xhdmUgZGV2aWNlCit3MV9tYXN0ZXJfc2VhcmNoICAgLSAocncpIHRoZSBudW1iZXIgb2Ygc2VhcmNoZXMgbGVmdCB0byBkbywKKwkJICAgICAtMT1jb250aW51YWwgKGRlZmF1bHQpCit3MV9tYXN0ZXJfc2xhdmVfY291bnQKKyAgICAgICAgICAgICAgICAgICAtIChybykgdGhlIG51bWJlciBvZiBzbGF2ZXMgZm91bmQKK3cxX21hc3Rlcl9zbGF2ZXMgICAtIChybykgdGhlIG5hbWVzIG9mIHRoZSBzbGF2ZXMsIG9uZSBwZXIgbGluZQordzFfbWFzdGVyX3RpbWVvdXQgIC0gKHJvKSB0aGUgZGVsYXkgaW4gc2Vjb25kcyBiZXR3ZWVuIHNlYXJjaGVzCit3MV9tYXN0ZXJfdGltZW91dF91cworICAgICAgICAgICAgICAgICAgIC0gKHJvKSB0aGUgZGVsYXkgaW4gbWljcm9zZWNvbmRzIGJlZXR3ZW4gc2VhcmNoZXMKKworSWYgeW91IGhhdmUgYSB3MSBidXMgdGhhdCBuZXZlciBjaGFuZ2VzICh5b3UgZG9uJ3QgYWRkIG9yIHJlbW92ZSBkZXZpY2VzKSwKK3lvdSBjYW4gc2V0IHRoZSBtb2R1bGUgcGFyYW1ldGVyIHNlYXJjaF9jb3VudCB0byBhIHNtYWxsIHBvc2l0aXZlIG51bWJlcgorZm9yIGFuIGluaXRpYWxseSBzbWFsbCBudW1iZXIgb2YgYnVzIHNlYXJjaGVzLiAgQWx0ZXJuYXRpdmVseSBpdCBjb3VsZCBiZQorc2V0IHRvIHplcm8sIHRoZW4gbWFudWFsbHkgYWRkIHRoZSBzbGF2ZSBkZXZpY2Ugc2VyaWFsIG51bWJlcnMgYnkKK3cxX21hc3Rlcl9hZGQgZGV2aWNlIGZpbGUuICBUaGUgdzFfbWFzdGVyX2FkZCBhbmQgdzFfbWFzdGVyX3JlbW92ZSBmaWxlcworZ2VuZXJhbGx5IG9ubHkgbWFrZSBzZW5zZSB3aGVuIHNlYXJjaGluZyBpcyBkaXNhYmxlZCwgYXMgYSBzZWFyY2ggd2lsbAorcmVkZXRlY3QgbWFudWFsbHkgcmVtb3ZlZCBkZXZpY2VzIHRoYXQgYXJlIHByZXNlbnQgYW5kIHRpbWVvdXQgbWFudWFsbHkKK2FkZGVkIGRldmljZXMgdGhhdCBhcmVuJ3Qgb24gdGhlIGJ1cy4KKworQnVzIHNlYXJjaGVzIG9jY3VyIGF0IGFuIGludGVydmFsLCBzcGVjaWZpZWQgYXMgYSBzdW1tIG9mIHRpbWVvdXQgYW5kCit0aW1lb3V0X3VzIG1vZHVsZSBwYXJhbWV0ZXJzIChlaXRoZXIgb2Ygd2hpY2ggbWF5IGJlIDApIGZvciBhcyBsb25nIGFzCit3MV9tYXN0ZXJfc2VhcmNoIHJlbWFpbnMgZ3JlYXRlciB0aGFuIDAgb3IgaXMgLTEuICBFYWNoIHNlYXJjaCBhdHRlbXB0CitkZWNyZW1lbnRzIHcxX21hc3Rlcl9zZWFyY2ggYnkgMSAoZG93biB0byAwKSBhbmQgaW5jcmVtZW50cwordzFfbWFzdGVyX2F0dGVtcHRzIGJ5IDEuCisKK3cxIHNsYXZlIHN5c2ZzIGludGVyZmFjZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitidXMgICAgICAgICAgICAgICAgLSAoc3RhbmRhcmQpIHN5bWxpbmsgdG8gdGhlIHcxIGJ1cworZHJpdmVyICAgICAgICAgICAgIC0gKHN0YW5kYXJkKSBzeW1saW5rIHRvIHRoZSB3MSBkcml2ZXIKK25hbWUgICAgICAgICAgICAgICAtIHRoZSBkZXZpY2UgbmFtZSwgdXN1YWxseSB0aGUgc2FtZSBhcyB0aGUgZGlyZWN0b3J5IG5hbWUKK3cxX3NsYXZlICAgICAgICAgICAtIChvcHRpb25hbCkgYSBiaW5hcnkgZmlsZSB3aG9zZSBtZWFuaW5nIGRlcGVuZHMgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICBmYW1pbHkgZHJpdmVyCitydwkJICAgLSAob3B0aW9uYWwpIGNyZWF0ZWQgZm9yIHNsYXZlIGRldmljZXMgd2hpY2ggZG8gbm90IGhhdmUKKwkJICAgICBhcHByb3ByaWF0ZSBmYW1pbHkgZHJpdmVyLiBBbGxvd3MgdG8gcmVhZC93cml0ZSBiaW5hcnkgZGF0YS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdzEvdzEubmV0bGluayBiL0RvY3VtZW50YXRpb24vdzEvdzEubmV0bGluawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjI3MjcxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi93MS93MS5uZXRsaW5rCkBAIC0wLDAgKzEsMTg5IEBACitVc2Vyc3BhY2UgY29tbXVuaWNhdGlvbiBwcm90b2NvbCBvdmVyIGNvbm5lY3RvciBbMV0uCisKKworTWVzc2FnZSB0eXBlcy4KKz09PT09PT09PT09PT0KKworVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIG1lc3NhZ2VzIGJldHdlZW4gdzEgY29yZSBhbmQgdXNlcnNwYWNlOgorMS4gRXZlbnRzLiBUaGV5IGFyZSBnZW5lcmF0ZWQgZWFjaCB0aW1lIGEgbmV3IG1hc3RlciBvciBzbGF2ZSBkZXZpY2UKKwlpcyBmb3VuZCBlaXRoZXIgZHVlIHRvIGF1dG9tYXRpYyBvciByZXF1ZXN0ZWQgc2VhcmNoLgorMi4gVXNlcnNwYWNlIGNvbW1hbmRzLgorMy4gUmVwbGllcyB0byB1c2Vyc3BhY2UgY29tbWFuZHMuCisKKworUHJvdG9jb2wuCis9PT09PT09PQorCitbc3RydWN0IGNuX21zZ10gLSBjb25uZWN0b3IgaGVhZGVyLgorCUl0cyBsZW5ndGggZmllbGQgaXMgZXF1YWwgdG8gc2l6ZSBvZiB0aGUgYXR0YWNoZWQgZGF0YQorW3N0cnVjdCB3MV9uZXRsaW5rX21zZ10gLSB3MSBuZXRsaW5rIGhlYWRlci4KKwlfX3U4IHR5cGUgCS0gbWVzc2FnZSB0eXBlLgorCQkJVzFfTElTVF9NQVNURVJTCisJCQkJbGlzdCBjdXJyZW50IGJ1cyBtYXN0ZXJzCisJCQlXMV9TTEFWRV9BREQvVzFfU0xBVkVfUkVNT1ZFCisJCQkJc2xhdmUgYWRkL3JlbW92ZSBldmVudHMKKwkJCVcxX01BU1RFUl9BREQvVzFfTUFTVEVSX1JFTU9WRQorCQkJCW1hc3RlciBhZGQvcmVtb3ZlIGV2ZW50cworCQkJVzFfTUFTVEVSX0NNRAorCQkJCXVzZXJzcGFjZSBjb21tYW5kIGZvciBidXMgbWFzdGVyCisJCQkJZGV2aWNlIChzZWFyY2gvYWxhcm0gc2VhcmNoKQorCQkJVzFfU0xBVkVfQ01ECisJCQkJdXNlcnNwYWNlIGNvbW1hbmQgZm9yIHNsYXZlIGRldmljZQorCQkJCShyZWFkL3dyaXRlL3RvdWNoKQorCV9fdTggc3RhdHVzCS0gZXJyb3IgaW5kaWNhdGlvbiBmcm9tIGtlcm5lbAorCV9fdTE2IGxlbgktIHNpemUgb2YgZGF0YSBhdHRhY2hlZCB0byB0aGlzIGhlYWRlciBkYXRhCisJdW5pb24geworCQlfX3U4IGlkWzhdOwkJCSAtIHNsYXZlIHVuaXF1ZSBkZXZpY2UgaWQKKwkJc3RydWN0IHcxX21zdCB7CisJCQlfX3UzMgkJaWQ7CSAtIG1hc3RlcidzIGlkCisJCQlfX3UzMgkJcmVzOwkgLSByZXNlcnZlZAorCQl9IG1zdDsKKwl9IGlkOworCitbc3RydWN0IHcxX25ldGxpbmtfY21kXSAtIGNvbW1hbmQgZm9yIGdpdmVuIG1hc3RlciBvciBzbGF2ZSBkZXZpY2UuCisJX191OCBjbWQJLSBjb21tYW5kIG9wY29kZS4KKwkJCVcxX0NNRF9SRUFEIAktIHJlYWQgY29tbWFuZAorCQkJVzFfQ01EX1dSSVRFCS0gd3JpdGUgY29tbWFuZAorCQkJVzFfQ01EX1NFQVJDSAktIHNlYXJjaCBjb21tYW5kCisJCQlXMV9DTURfQUxBUk1fU0VBUkNIIC0gYWxhcm0gc2VhcmNoIGNvbW1hbmQKKwkJCVcxX0NNRF9UT1VDSAktIHRvdWNoIGNvbW1hbmQKKwkJCQkod3JpdGUgYW5kIHNhbXBsZSBkYXRhIGJhY2sgdG8gdXNlcnNwYWNlKQorCQkJVzFfQ01EX1JFU0VUCS0gc2VuZCBidXMgcmVzZXQKKwkJCVcxX0NNRF9TTEFWRV9BREQJLSBhZGQgc2xhdmUgdG8ga2VybmVsIGxpc3QKKwkJCVcxX0NNRF9TTEFWRV9SRU1PVkUJLSByZW1vdmUgc2xhdmUgZnJvbSBrZXJuZWwgbGlzdAorCQkJVzFfQ01EX0xJU1RfU0xBVkVTCS0gZ2V0IHNsYXZlcyBsaXN0IGZyb20ga2VybmVsCisJX191OCByZXMJLSByZXNlcnZlZAorCV9fdTE2IGxlbgktIGxlbmd0aCBvZiBkYXRhIGZvciB0aGlzIGNvbW1hbmQKKwkJRm9yIHJlYWQgY29tbWFuZCBkYXRhIG11c3QgYmUgYWxsb2NhdGVkIGxpa2UgZm9yIHdyaXRlIGNvbW1hbmQKKwlfX3U4IGRhdGFbMF0JLSBkYXRhIGZvciB0aGlzIGNvbW1hbmQKKworCitFYWNoIGNvbm5lY3RvciBtZXNzYWdlIGNhbiBpbmNsdWRlIG9uZSBvciBtb3JlIHcxX25ldGxpbmtfbXNnIHdpdGgKK3plcm8gb3IgbW9yZSBhdHRhY2hlZCB3MV9uZXRsaW5rX2NtZCBtZXNzYWdlcy4KKworRm9yIGV2ZW50IG1lc3NhZ2VzIHRoZXJlIGFyZSBubyB3MV9uZXRsaW5rX2NtZCBlbWJlZGRlZCBzdHJ1Y3R1cmVzLAorb25seSBjb25uZWN0b3IgaGVhZGVyIGFuZCB3MV9uZXRsaW5rX21zZyBzdHJ1Y3V0cmUgd2l0aCAibGVuIiBmaWVsZAorYmVpbmcgemVybyBhbmQgZmlsbGVkIHR5cGUgKG9uZSBvZiBldmVudCB0eXBlcykgYW5kIGlkOgorZWl0aGVyIDggYnl0ZXMgb2Ygc2xhdmUgdW5pcXVlIGlkIGluIGhvc3Qgb3JkZXIsCitvciBtYXN0ZXIncyBpZCwgd2hpY2ggaXMgYXNzaWduZWQgdG8gYnVzIG1hc3RlciBkZXZpY2UKK3doZW4gaXQgaXMgYWRkZWQgdG8gdzEgY29yZS4KKworQ3VycmVudGx5IHJlcGxpZXMgdG8gdXNlcnNwYWNlIGNvbW1hbmRzIGFyZSBvbmx5IGdlbmVyYXRlZCBmb3IgcmVhZAorY29tbWFuZCByZXF1ZXN0LiBPbmUgcmVwbHkgaXMgZ2VuZXJhdGVkIGV4YWN0bHkgZm9yIG9uZSB3MV9uZXRsaW5rX2NtZAorcmVhZCByZXF1ZXN0LiBSZXBsaWVzIGFyZSBub3QgY29tYmluZWQgd2hlbiBzZW50IC0gaS5lLiB0eXBpY2FsIHJlcGx5CittZXNzYWdlcyBsb29rcyBsaWtlIHRoZSBmb2xsb3dpbmc6CisKK1tjbl9tc2ddW3cxX25ldGxpbmtfbXNnXVt3MV9uZXRsaW5rX2NtZF0KK2NuX21zZy5sZW4gPSBzaXplb2Yoc3RydWN0IHcxX25ldGxpbmtfbXNnKSArCisJICAgICBzaXplb2Yoc3RydWN0IHcxX25ldGxpbmtfY21kKSArCisJICAgICBjbWQtPmxlbjsKK3cxX25ldGxpbmtfbXNnLmxlbiA9IHNpemVvZihzdHJ1Y3QgdzFfbmV0bGlua19jbWQpICsgY21kLT5sZW47Cit3MV9uZXRsaW5rX2NtZC5sZW4gPSBjbWQtPmxlbjsKKworUmVwbGllcyB0byBXMV9MSVNUX01BU1RFUlMgc2hvdWxkIHNlbmQgYSBtZXNzYWdlIGJhY2sgdG8gdGhlIHVzZXJzcGFjZQord2hpY2ggd2lsbCBjb250YWluIGxpc3Qgb2YgYWxsIHJlZ2lzdGVyZWQgbWFzdGVyIGlkcyBpbiB0aGUgZm9sbG93aW5nCitmb3JtYXQ6CisKKwljbl9tc2cgKENOX1cxX0lEWC5DTl9XMV9WQUwgYXMgaWQsIGxlbiBpcyBlcXVhbCB0byBzaXplb2Yoc3RydWN0CisJdzFfbmV0bGlua19tc2cpIHBsdXMgbnVtYmVyIG9mIG1hc3RlcnMgbXVsdGlwbGllZCBieSA0KQorCXcxX25ldGxpbmtfbXNnICh0eXBlOiBXMV9MSVNUX01BU1RFUlMsIGxlbiBpcyBlcXVhbCB0bworCQludW1iZXIgb2YgbWFzdGVycyBtdWx0aXBsaWVkIGJ5IDQgKHUzMiBzaXplKSkKKwlpZDAgLi4uIGlkTgorCisJRWFjaCBtZXNzYWdlIGlzIGF0IG1vc3QgNGsgaW4gc2l6ZSwgc28gaWYgbnVtYmVyIG9mIG1hc3RlciBkZXZpY2VzCisJZXhjZWVkcyB0aGlzLCBpdCB3aWxsIGJlIHNwbGl0IGludG8gc2V2ZXJhbCBtZXNzYWdlcy4KKworVzEgc2VhcmNoIGFuZCBhbGFybSBzZWFyY2ggY29tbWFuZHMuCityZXF1ZXN0OgorW2NuX21zZ10KKyAgW3cxX25ldGxpbmtfbXNnIHR5cGUgPSBXMV9NQVNURVJfQ01ECisgIAlpZCBpcyBlcXVhbCB0byB0aGUgYnVzIG1hc3RlciBpZCB0byB1c2UgZm9yIHNlYXJjaGluZ10KKyAgW3cxX25ldGxpbmtfY21kIGNtZCA9IFcxX0NNRF9TRUFSQ0ggb3IgVzFfQ01EX0FMQVJNX1NFQVJDSF0KKworcmVwbHk6CisgIFtjbl9tc2csIGFjayA9IDEgYW5kIGluY3JlYXNpbmcsIDAgbWVhbnMgdGhlIGxhc3QgbWVzc2FnZSwKKyAgCXNlcSBpcyBlcXVhbCB0byB0aGUgcmVxdWVzdCBzZXFdCisgIFt3MV9uZXRsaW5rX21zZyB0eXBlID0gVzFfTUFTVEVSX0NNRF0KKyAgW3cxX25ldGxpbmtfY21kIGNtZCA9IFcxX0NNRF9TRUFSQ0ggb3IgVzFfQ01EX0FMQVJNX1NFQVJDSAorCWxlbiBpcyBlcXVhbCB0byBudW1iZXIgb2YgSURzIG11bHRpcGxpZWQgYnkgOF0KKyAgWzY0Yml0LWlkMCAuLi4gNjRiaXQtaWROXQorTGVuZ3RoIGluIGVhY2ggaGVhZGVyIGNvcnJlc3BvbmRzIHRvIHRoZSBzaXplIG9mIHRoZSBkYXRhIGJlaGluZCBpdCwgc28KK3cxX25ldGxpbmtfY21kLT5sZW4gPSBOICogODsgd2hlcmUgTiBpcyBudW1iZXIgb2YgSURzIGluIHRoaXMgbWVzc2FnZS4KKwlDYW4gYmUgemVyby4KK3cxX25ldGxpbmtfbXNnLT5sZW4gPSBzaXplb2Yoc3RydWN0IHcxX25ldGxpbmtfY21kKSArIE4gKiA4OworY25fbXNnLT5sZW4gPSBzaXplb2Yoc3RydWN0IHcxX25ldGxpbmtfbXNnKSArCisJICAgICAgc2l6ZW9mKHN0cnVjdCB3MV9uZXRsaW5rX2NtZCkgKworCSAgICAgIE4qODsKKworVzEgcmVzZXQgY29tbWFuZC4KK1tjbl9tc2ddCisgIFt3MV9uZXRsaW5rX21zZyB0eXBlID0gVzFfTUFTVEVSX0NNRAorICAJaWQgaXMgZXF1YWwgdG8gdGhlIGJ1cyBtYXN0ZXIgaWQgdG8gdXNlIGZvciBzZWFyY2hpbmddCisgIFt3MV9uZXRsaW5rX2NtZCBjbWQgPSBXMV9DTURfUkVTRVRdCisKKworQ29tbWFuZCBzdGF0dXMgcmVwbGllcy4KKz09PT09PT09PT09PT09PT09PT09PT0KKworRWFjaCBjb21tYW5kIChlaXRoZXIgcm9vdCwgbWFzdGVyIG9yIHNsYXZlIHdpdGggb3Igd2l0aG91dCB3MV9uZXRsaW5rX2NtZAorc3RydWN0dXJlKSB3aWxsIGJlICdhY2tlZCcgYnkgdGhlIHcxIGNvcmUuIEZvcm1hdCBvZiB0aGUgcmVwbHkgaXMgdGhlIHNhbWUKK2FzIHJlcXVlc3QgbWVzc2FnZSBleGNlcHQgdGhhdCBsZW5ndGggcGFyYW1ldGVycyBkbyBub3QgYWNjb3VudCBmb3IgZGF0YQorcmVxdWVzdGVkIGJ5IHRoZSB1c2VyLCBpLmUuIHJlYWQvd3JpdGUvdG91Y2ggSU8gcmVxdWVzdHMgd2lsbCBub3QgY29udGFpbgorZGF0YSwgc28gdzFfbmV0bGlua19jbWQubGVuIHdpbGwgYmUgMCwgdzFfbmV0bGlua19tc2cubGVuIHdpbGwgYmUgc2l6ZQorb2YgdGhlIHcxX25ldGxpbmtfY21kIHN0cnVjdHVyZSBhbmQgY25fbXNnLmxlbiB3aWxsIGJlIGVxdWFsIHRvIHRoZSBzdW0KK29mIHRoZSBzaXplb2Yoc3RydWN0IHcxX25ldGxpbmtfbXNnKSBhbmQgc2l6ZW9mKHN0cnVjdCB3MV9uZXRsaW5rX2NtZCkuCitJZiByZXBseSBpcyBnZW5lcmF0ZWQgZm9yIG1hc3RlciBvciByb290IGNvbW1hbmQgKHdoaWNoIGRvIG5vdCBoYXZlCit3MV9uZXRsaW5rX2NtZCBhdHRhY2hlZCksIHJlcGx5IHdpbGwgY29udGFpbiBvbmx5IGNuX21zZyBhbmQgdzFfbmV0bGlua19tc2cKK3N0cnVjdHVyZXMuCisKK3cxX25ldGxpbmtfbXNnLnN0YXR1cyBmaWVsZCB3aWxsIGNhcnJ5IHBvc2l0aXZlIGVycm9yIHZhbHVlCisoRUlOVkFMIGZvciBleGFtcGxlKSBvciB6ZXJvIGluIGNhc2Ugb2Ygc3VjY2Vzcy4KKworQWxsIG90aGVyIGZpZWxkcyBpbiBldmVyeSBzdHJ1Y3R1cmUgd2lsbCBtaXJyb3IgdGhlIHNhbWUgcGFyYW1ldGVycyBpbiB0aGUKK3JlcXVlc3QgbWVzc2FnZSAoZXhjZXB0IGxlbmd0aHMgYXMgZGVzY3JpYmVkIGFib3ZlKS4KKworU3RhdHVzIHJlcGx5IGlzIGdlbmVyYXRlZCBmb3IgZXZlcnkgdzFfbmV0bGlua19jbWQgZW1iZWRkZWQgaW4gdGhlCit3MV9uZXRsaW5rX21zZywgaWYgdGhlcmUgYXJlIG5vIHcxX25ldGxpbmtfY21kIHN0cnVjdHVyZXMsCityZXBseSB3aWxsIGJlIGdlbmVyYXRlZCBmb3IgdGhlIHcxX25ldGxpbmtfbXNnLgorCitBbGwgdzFfbmV0bGlua19jbWQgY29tbWFuZCBzdHJ1Y3R1cmVzIGFyZSBoYW5kbGVkIGluIGV2ZXJ5IHcxX25ldGxpbmtfbXNnLAorZXZlbiBpZiB0aGVyZSB3ZXJlIGVycm9ycywgb25seSBsZW5ndGggbWlzbWF0Y2ggaW50ZXJydXB0cyBtZXNzYWdlIHByb2Nlc3NpbmcuCisKKworT3BlcmF0aW9uIHN0ZXBzIGluIHcxIGNvcmUgd2hlbiBuZXcgY29tbWFuZCBpcyByZWNlaXZlZC4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworV2hlbiBuZXcgbWVzc2FnZSAodzFfbmV0bGlua19tc2cpIGlzIHJlY2VpdmVkIHcxIGNvcmUgZGV0ZWN0cyBpZiBpdCBpcworbWFzdGVyIG9yIHNsYXZlIHJlcXVlc3QsIGFjY29yZGluZyB0byB3MV9uZXRsaW5rX21zZy50eXBlIGZpZWxkLgorVGhlbiBtYXN0ZXIgb3Igc2xhdmUgZGV2aWNlIGlzIHNlYXJjaGVkIGZvci4KK1doZW4gZm91bmQsIG1hc3RlciBkZXZpY2UgKHJlcXVlc3RlZCBvciB0aG9zZSBvbmUgb24gd2hlcmUgc2xhdmUgZGV2aWNlCitpcyBmb3VuZCkgaXMgbG9ja2VkLiBJZiBzbGF2ZSBjb21tYW5kIGlzIHJlcXVlc3RlZCwgdGhlbiByZXNldC9zZWxlY3QKK3Byb2NlZHVyZSBpcyBzdGFydGVkIHRvIHNlbGVjdCBnaXZlbiBkZXZpY2UuCisKK1RoZW4gYWxsIHJlcXVlc3RlZCBpbiB3MV9uZXRsaW5rX21zZyBvcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQgb25lIGJ5IG9uZS4KK0lmIGNvbW1hbmQgcmVxdWlyZXMgcmVwbHkgKGxpa2UgcmVhZCBjb21tYW5kKSBpdCBpcyBzZW50IG9uIGNvbW1hbmQgY29tcGxldGlvbi4KKworV2hlbiBhbGwgY29tbWFuZHMgKHcxX25ldGxpbmtfY21kKSBhcmUgcHJvY2Vzc2VkIG1hc3RlciBkZXZpY2UgaXMgdW5sb2NrZWQKK2FuZCBuZXh0IHcxX25ldGxpbmtfbXNnIGhlYWRlciBwcm9jZXNzaW5nIHN0YXJ0ZWQuCisKKworQ29ubmVjdG9yIFsxXSBzcGVjaWZpYyBkb2N1bWVudGF0aW9uLgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0VhY2ggY29ubmVjdG9yIG1lc3NhZ2UgaW5jbHVkZXMgdHdvIHUzMiBmaWVsZHMgYXMgImFkZHJlc3MiLgordzEgdXNlcyBDTl9XMV9JRFggYW5kIENOX1cxX1ZBTCBkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvY29ubmVjdG9yLmggaGVhZGVyLgorRWFjaCBtZXNzYWdlIGFsc28gaW5jbHVkZXMgc2VxdWVuY2UgYW5kIGFja25vd2xlZGdlIG51bWJlcnMuCitTZXF1ZW5jZSBudW1iZXIgZm9yIGV2ZW50IG1lc3NhZ2VzIGlzIGFwcHJvcHJpYXRlIGJ1cyBtYXN0ZXIgc2VxdWVuY2UgbnVtYmVyCitpbmNyZWFzZWQgd2l0aCBlYWNoIGV2ZW50IG1lc3NhZ2Ugc2VudCAidGhyb3VnaCIgdGhpcyBtYXN0ZXIuCitTZXF1ZW5jZSBudW1iZXIgZm9yIHVzZXJzcGFjZSByZXF1ZXN0cyBpcyBzZXQgYnkgdXNlcnNwYWNlIGFwcGxpY2F0aW9uLgorU2VxdWVuY2UgbnVtYmVyIGZvciByZXBseSBpcyB0aGUgc2FtZSBhcyB3YXMgaW4gcmVxdWVzdCwgYW5kCithY2tub3dsZWRnZSBudW1iZXIgaXMgc2V0IHRvIHNlcSsxLgorCisKK0FkZGl0aW9uYWwgZG9jdW1hbnRpb24sIHNvdXJjZSBjb2RlIGV4YW1wbGVzLgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworMS4gRG9jdW1lbnRhdGlvbi9jb25uZWN0b3IKKzIuIGh0dHA6Ly93d3cuaW9yZW1hcC5uZXQvYXJjaGl2ZS93MQorVGhpcyBhcmNoaXZlIGluY2x1ZGVzIHVzZXJzcGFjZSBhcHBsaWNhdGlvbiB3MWQuYyB3aGljaCB1c2VzCityZWFkL3dyaXRlL3NlYXJjaCBjb21tYW5kcyBmb3IgYWxsIG1hc3Rlci9zbGF2ZSBkZXZpY2VzIGZvdW5kIG9uIHRoZSBidXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3dhdGNoZG9nL01ha2VmaWxlIGIvRG9jdW1lbnRhdGlvbi93YXRjaGRvZy9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDE4ZjQ1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi93YXRjaGRvZy9NYWtlZmlsZQpAQCAtMCwwICsxIEBACitzdWJkaXIteSA6PSBzcmMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vd2F0Y2hkb2cvY29udmVydF9kcml2ZXJzX3RvX2tlcm5lbF9hcGkudHh0IGIvRG9jdW1lbnRhdGlvbi93YXRjaGRvZy9jb252ZXJ0X2RyaXZlcnNfdG9fa2VybmVsX2FwaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjcxYjg4NQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vd2F0Y2hkb2cvY29udmVydF9kcml2ZXJzX3RvX2tlcm5lbF9hcGkudHh0CkBAIC0wLDAgKzEsMjE4IEBACitDb252ZXJ0aW5nIG9sZCB3YXRjaGRvZyBkcml2ZXJzIHRvIHRoZSB3YXRjaGRvZyBmcmFtZXdvcmsKK2J5IFdvbGZyYW0gU2FuZyA8dy5zYW5nQHBlbmd1dHJvbml4LmRlPgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0JlZm9yZSB0aGUgd2F0Y2hkb2cgZnJhbWV3b3JrIGNhbWUgaW50byB0aGUga2VybmVsLCBldmVyeSBkcml2ZXIgaGFkIHRvCitpbXBsZW1lbnQgdGhlIEFQSSBvbiBpdHMgb3duLiBOb3csIGFzIHRoZSBmcmFtZXdvcmsgZmFjdG9yZWQgb3V0IHRoZSBjb21tb24KK2NvbXBvbmVudHMsIHRob3NlIGRyaXZlcnMgY2FuIGJlIGxpZ2h0ZW5lZCBtYWtpbmcgaXQgYSB1c2VyIG9mIHRoZSBmcmFtZXdvcmsuCitUaGlzIGRvY3VtZW50IHNoYWxsIGd1aWRlIHlvdSBmb3IgdGhpcyB0YXNrLiBUaGUgbmVjZXNzYXJ5IHN0ZXBzIGFyZSBkZXNjcmliZWQKK2FzIHdlbGwgYXMgdGhpbmdzIHRvIGxvb2sgb3V0IGZvci4KKworCitSZW1vdmUgdGhlIGZpbGVfb3BlcmF0aW9ucyBzdHJ1Y3QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPbGQgZHJpdmVycyBkZWZpbmUgdGhlaXIgb3duIGZpbGVfb3BlcmF0aW9ucyBmb3IgYWN0aW9ucyBsaWtlIG9wZW4oKSwgd3JpdGUoKSwKK2V0Yy4uLiBUaGVzZSBhcmUgbm93IGhhbmRsZWQgYnkgdGhlIGZyYW1ld29yayBhbmQganVzdCBjYWxsIHRoZSBkcml2ZXIgd2hlbgorbmVlZGVkLiBTbywgaW4gZ2VuZXJhbCwgdGhlICdmaWxlX29wZXJhdGlvbnMnIHN0cnVjdCBhbmQgYXNzb3J0ZWQgZnVuY3Rpb25zIGNhbgorZ28uIE9ubHkgdmVyeSBmZXcgZHJpdmVyLXNwZWNpZmljIGRldGFpbHMgaGF2ZSB0byBiZSBtb3ZlZCB0byBvdGhlciBmdW5jdGlvbnMuCitIZXJlIGlzIGEgb3ZlcnZpZXcgb2YgdGhlIGZ1bmN0aW9ucyBhbmQgcHJvYmFibHkgbmVlZGVkIGFjdGlvbnM6CisKKy0gb3BlbjogRXZlcnl0aGluZyBkZWFsaW5nIHdpdGggcmVzb3VyY2UgbWFuYWdlbWVudCAoZmlsZS1vcGVuIGNoZWNrcywgbWFnaWMKKyAgY2xvc2UgcHJlcGFyYXRpb25zKSBjYW4gc2ltcGx5IGdvLiBEZXZpY2Ugc3BlY2lmaWMgc3R1ZmYgbmVlZHMgdG8gZ28gdG8gdGhlCisgIGRyaXZlciBzcGVjaWZpYyBzdGFydC1mdW5jdGlvbi4gTm90ZSB0aGF0IGZvciBzb21lIGRyaXZlcnMsIHRoZSBzdGFydC1mdW5jdGlvbgorICBhbHNvIHNlcnZlcyBhcyB0aGUgcGluZy1mdW5jdGlvbi4gSWYgdGhhdCBpcyB0aGUgY2FzZSBhbmQgeW91IG5lZWQgc3RhcnQvc3RvcAorICB0byBiZSBiYWxhbmNlZCAoY2xvY2tzISksIHlvdSBhcmUgYmV0dGVyIG9mZiByZWZhY3RvcmluZyBhIHNlcGFyYXRlIHN0YXJ0LWZ1bmN0aW9uLgorCistIGNsb3NlOiBTYW1lIGhpbnRzIGFzIGZvciBvcGVuIGFwcGx5LgorCistIHdyaXRlOiBDYW4gc2ltcGx5IGdvLCBhbGwgZGVmaW5lZCBiZWhhdmlvdXIgaXMgdGFrZW4gY2FyZSBvZiBieSB0aGUgZnJhbWV3b3JrLAorICBpLmUuIHBpbmcgb24gd3JpdGUgYW5kIG1hZ2ljIGNoYXIgKCdWJykgaGFuZGxpbmcuCisKKy0gaW9jdGw6IFdoaWxlIHRoZSBkcml2ZXIgaXMgYWxsb3dlZCB0byBoYXZlIGV4dGVuc2lvbnMgdG8gdGhlIElPQ1RMIGludGVyZmFjZSwKKyAgdGhlIG1vc3QgY29tbW9uIG9uZXMgYXJlIGhhbmRsZWQgYnkgdGhlIGZyYW1ld29yaywgc3VwcG9ydGVkIGJ5IHNvbWUgYXNzaXN0YW5jZQorICBmcm9tIHRoZSBkcml2ZXI6CisKKwlXRElPQ19HRVRTVVBQT1JUOgorCQlSZXR1cm5zIHRoZSBtYW5kYXRvcnkgd2F0Y2hkb2dfaW5mbyBzdHJ1Y3QgZnJvbSB0aGUgZHJpdmVyCisKKwlXRElPQ19HRVRTVEFUVVM6CisJCU5lZWRzIHRoZSBzdGF0dXMtY2FsbGJhY2sgZGVmaW5lZCwgb3RoZXJ3aXNlIHJldHVybnMgMAorCisJV0RJT0NfR0VUQk9PVFNUQVRVUzoKKwkJTmVlZHMgdGhlIGJvb3RzdGF0dXMgbWVtYmVyIHByb3Blcmx5IHNldC4gTWFrZSBzdXJlIGl0IGlzIDAgaWYgeW91CisJCWRvbid0IGhhdmUgZnVydGhlciBzdXBwb3J0IQorCisJV0RJT0NfU0VUT1BUSU9OUzoKKwkJTm8gcHJlcGFyYXRpb25zIG5lZWRlZAorCisJV0RJT0NfS0VFUEFMSVZFOgorCQlJZiB3YW50ZWQsIG9wdGlvbnMgaW4gd2F0Y2hkb2dfaW5mbyBuZWVkIHRvIGhhdmUgV0RJT0ZfS0VFUEFMSVZFUElORworCQlzZXQKKworCVdESU9DX1NFVFRJTUVPVVQ6CisJCU9wdGlvbnMgaW4gd2F0Y2hkb2dfaW5mbyBuZWVkIHRvIGhhdmUgV0RJT0ZfU0VUVElNRU9VVCBzZXQKKwkJYW5kIGEgc2V0X3RpbWVvdXQtY2FsbGJhY2sgaGFzIHRvIGJlIGRlZmluZWQuIFRoZSBjb3JlIHdpbGwgYWxzbworCQlkbyBsaW1pdC1jaGVja2luZywgaWYgbWluX3RpbWVvdXQgYW5kIG1heF90aW1lb3V0IGluIHRoZSB3YXRjaGRvZworCQlkZXZpY2UgYXJlIHNldC4gQWxsIGlzIG9wdGlvbmFsLgorCisJV0RJT0NfR0VUVElNRU9VVDoKKwkJTm8gcHJlcGFyYXRpb25zIG5lZWRlZAorCisJV0RJT0NfR0VUVElNRUxFRlQ6CisJCUl0IG5lZWRzIGdldF90aW1lbGVmdCgpIGNhbGxiYWNrIHRvIGJlIGRlZmluZWQuIE90aGVyd2lzZSBpdAorCQl3aWxsIHJldHVybiBFT1BOT1RTVVBQCisKKyAgT3RoZXIgSU9DVExzIGNhbiBiZSBzZXJ2ZWQgdXNpbmcgdGhlIGlvY3RsLWNhbGxiYWNrLiBOb3RlIHRoYXQgdGhpcyBpcyBtYWlubHkKKyAgaW50ZW5kZWQgZm9yIHBvcnRpbmcgb2xkIGRyaXZlcnM7IG5ldyBkcml2ZXJzIHNob3VsZCBub3QgaW52ZW50IHByaXZhdGUgSU9DVExzLgorICBQcml2YXRlIElPQ1RMcyBhcmUgcHJvY2Vzc2VkIGZpcnN0LiBXaGVuIHRoZSBjYWxsYmFjayByZXR1cm5zIHdpdGgKKyAgLUVOT0lPQ1RMQ01ELCB0aGUgSU9DVExzIG9mIHRoZSBmcmFtZXdvcmsgd2lsbCBiZSB0cmllZCwgdG9vLiBBbnkgb3RoZXIgZXJyb3IKKyAgaXMgZGlyZWN0bHkgZ2l2ZW4gdG8gdGhlIHVzZXIuCisKK0V4YW1wbGUgY29udmVyc2lvbjoKKworLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHMzYzI0MTB3ZHRfZm9wcyA9IHsKKy0gICAgICAgLm93bmVyICAgICAgICAgID0gVEhJU19NT0RVTEUsCistICAgICAgIC5sbHNlZWsgICAgICAgICA9IG5vX2xsc2VlaywKKy0gICAgICAgLndyaXRlICAgICAgICAgID0gczNjMjQxMHdkdF93cml0ZSwKKy0gICAgICAgLnVubG9ja2VkX2lvY3RsID0gczNjMjQxMHdkdF9pb2N0bCwKKy0gICAgICAgLm9wZW4gICAgICAgICAgID0gczNjMjQxMHdkdF9vcGVuLAorLSAgICAgICAucmVsZWFzZSAgICAgICAgPSBzM2MyNDEwd2R0X3JlbGVhc2UsCistfTsKKworQ2hlY2sgdGhlIGZ1bmN0aW9ucyBmb3IgZGV2aWNlLXNwZWNpZmljIHN0dWZmIGFuZCBrZWVwIGl0IGZvciBsYXRlcgorcmVmYWN0b3JpbmcuIFRoZSByZXN0IGNhbiBnby4KKworCitSZW1vdmUgdGhlIG1pc2NkZXZpY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTaW5jZSB0aGUgZmlsZV9vcGVyYXRpb25zIGFyZSBnb25lIG5vdywgeW91IGNhbiBhbHNvIHJlbW92ZSB0aGUgJ3N0cnVjdAorbWlzY2RldmljZScuIFRoZSBmcmFtZXdvcmsgd2lsbCBjcmVhdGUgaXQgb24gd2F0Y2hkb2dfZGV2X3JlZ2lzdGVyKCkgY2FsbGVkIGJ5Cit3YXRjaGRvZ19yZWdpc3Rlcl9kZXZpY2UoKS4KKworLXN0YXRpYyBzdHJ1Y3QgbWlzY2RldmljZSBzM2MyNDEwd2R0X21pc2NkZXYgPSB7CistICAgICAgIC5taW5vciAgICAgICAgICA9IFdBVENIRE9HX01JTk9SLAorLSAgICAgICAubmFtZSAgICAgICAgICAgPSAid2F0Y2hkb2ciLAorLSAgICAgICAuZm9wcyAgICAgICAgICAgPSAmczNjMjQxMHdkdF9mb3BzLAorLX07CisKKworUmVtb3ZlIG9ic29sZXRlIGluY2x1ZGVzIGFuZCBkZWZpbmVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQmVjYXVzZSBvZiB0aGUgc2ltcGxpZmljYXRpb25zLCBhIGZldyBkZWZpbmVzIGFyZSBwcm9iYWJseSB1bnVzZWQgbm93LiBSZW1vdmUKK3RoZW0uIEluY2x1ZGVzIGNhbiBiZSByZW1vdmVkLCB0b28uIEZvciBleGFtcGxlOgorCistICNpbmNsdWRlIDxsaW51eC9mcy5oPgorLSAjaW5jbHVkZSA8bGludXgvbWlzY2RldmljZS5oPiAoaWYgTU9EVUxFX0FMSUFTX01JU0NERVYgaXMgbm90IHVzZWQpCistICNpbmNsdWRlIDxsaW51eC91YWNjZXNzLmg+IChpZiBubyBjdXN0b20gSU9DVExzIGFyZSB1c2VkKQorCisKK0FkZCB0aGUgd2F0Y2hkb2cgb3BlcmF0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FsbCBwb3NzaWJsZSBjYWxsYmFja3MgYXJlIGRlZmluZWQgaW4gJ3N0cnVjdCB3YXRjaGRvZ19vcHMnLiBZb3UgY2FuIGZpbmQgaXQKK2V4cGxhaW5lZCBpbiAnd2F0Y2hkb2cta2VybmVsLWFwaS50eHQnIGluIHRoaXMgZGlyZWN0b3J5LiBzdGFydCgpLCBzdG9wKCkgYW5kCitvd25lciBtdXN0IGJlIHNldCwgdGhlIHJlc3QgYXJlIG9wdGlvbmFsLiBZb3Ugd2lsbCBlYXNpbHkgZmluZCBjb3JyZXNwb25kaW5nCitmdW5jdGlvbnMgaW4gdGhlIG9sZCBkcml2ZXIuIE5vdGUgdGhhdCB5b3Ugd2lsbCBub3cgZ2V0IGEgcG9pbnRlciB0byB0aGUKK3dhdGNoZG9nX2RldmljZSBhcyBhIHBhcmFtZXRlciB0byB0aGVzZSBmdW5jdGlvbnMsIHNvIHlvdSBwcm9iYWJseSBoYXZlIHRvCitjaGFuZ2UgdGhlIGZ1bmN0aW9uIGhlYWRlci4gT3RoZXIgY2hhbmdlcyBhcmUgbW9zdCBsaWtlbHkgbm90IG5lZWRlZCwgYmVjYXVzZQoraGVyZSBzaW1wbHkgaGFwcGVucyB0aGUgZGlyZWN0IGhhcmR3YXJlIGFjY2Vzcy4gSWYgeW91IGhhdmUgZGV2aWNlLXNwZWNpZmljCitjb2RlIGxlZnQgZnJvbSB0aGUgYWJvdmUgc3RlcHMsIGl0IHNob3VsZCBiZSByZWZhY3RvcmVkIGludG8gdGhlc2UgY2FsbGJhY2tzLgorCitIZXJlIGlzIGEgc2ltcGxlIGV4YW1wbGU6CisKKytzdGF0aWMgc3RydWN0IHdhdGNoZG9nX29wcyBzM2MyNDEwd2R0X29wcyA9IHsKKysgICAgICAgLm93bmVyID0gVEhJU19NT0RVTEUsCisrICAgICAgIC5zdGFydCA9IHMzYzI0MTB3ZHRfc3RhcnQsCisrICAgICAgIC5zdG9wID0gczNjMjQxMHdkdF9zdG9wLAorKyAgICAgICAucGluZyA9IHMzYzI0MTB3ZHRfa2VlcGFsaXZlLAorKyAgICAgICAuc2V0X3RpbWVvdXQgPSBzM2MyNDEwd2R0X3NldF9oZWFydGJlYXQsCisrfTsKKworQSB0eXBpY2FsIGZ1bmN0aW9uLWhlYWRlciBjaGFuZ2UgbG9va3MgbGlrZToKKworLXN0YXRpYyB2b2lkIHMzYzI0MTB3ZHRfa2VlcGFsaXZlKHZvaWQpCisrc3RhdGljIGludCBzM2MyNDEwd2R0X2tlZXBhbGl2ZShzdHJ1Y3Qgd2F0Y2hkb2dfZGV2aWNlICp3ZGQpCisgeworLi4uCisrCisrICAgICAgIHJldHVybiAwOworIH0KKworLi4uCisKKy0gICAgICAgczNjMjQxMHdkdF9rZWVwYWxpdmUoKTsKKysgICAgICAgczNjMjQxMHdkdF9rZWVwYWxpdmUoJnMzYzI0MTBfd2RkKTsKKworCitBZGQgdGhlIHdhdGNoZG9nIGRldmljZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTm93IHdlIG5lZWQgdG8gY3JlYXRlIGEgJ3N0cnVjdCB3YXRjaGRvZ19kZXZpY2UnIGFuZCBwb3B1bGF0ZSBpdCB3aXRoIHRoZQorbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZvciB0aGUgZnJhbWV3b3JrLiBUaGUgc3RydWN0IGlzIGFsc28gZXhwbGFpbmVkIGluIGRldGFpbAoraW4gJ3dhdGNoZG9nLWtlcm5lbC1hcGkudHh0JyBpbiB0aGlzIGRpcmVjdG9yeS4gV2UgcGFzcyBpdCB0aGUgbWFuZGF0b3J5Cit3YXRjaGRvZ19pbmZvIHN0cnVjdCBhbmQgdGhlIG5ld2x5IGNyZWF0ZWQgd2F0Y2hkb2dfb3BzLiBPZnRlbiwgb2xkIGRyaXZlcnMKK2hhdmUgdGhlaXIgb3duIHJlY29yZC1rZWVwaW5nIGZvciB0aGluZ3MgbGlrZSBib290c3RhdHVzIGFuZCB0aW1lb3V0IHVzaW5nCitzdGF0aWMgdmFyaWFibGVzLiBUaG9zZSBoYXZlIHRvIGJlIGNvbnZlcnRlZCB0byB1c2UgdGhlIG1lbWJlcnMgaW4KK3dhdGNoZG9nX2RldmljZS4gTm90ZSB0aGF0IHRoZSB0aW1lb3V0IHZhbHVlcyBhcmUgdW5zaWduZWQgaW50LiBTb21lIGRyaXZlcnMKK3VzZSBzaWduZWQgaW50LCBzbyB0aGlzIGhhcyB0byBiZSBjb252ZXJ0ZWQsIHRvby4KKworSGVyZSBpcyBhIHNpbXBsZSBleGFtcGxlIGZvciBhIHdhdGNoZG9nIGRldmljZToKKworK3N0YXRpYyBzdHJ1Y3Qgd2F0Y2hkb2dfZGV2aWNlIHMzYzI0MTBfd2RkID0geworKyAgICAgICAuaW5mbyA9ICZzM2MyNDEwX3dkdF9pZGVudCwKKysgICAgICAgLm9wcyA9ICZzM2MyNDEwd2R0X29wcywKKyt9OworCisKK0hhbmRsZSB0aGUgJ25vd2F5b3V0JyBmZWF0dXJlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBIGZldyBkcml2ZXJzIHVzZSBub3dheW91dCBzdGF0aWNhbGx5LCBpLmUuIHRoZXJlIGlzIG5vIG1vZHVsZSBwYXJhbWV0ZXIgZm9yIGl0CithbmQgb25seSBDT05GSUdfV0FUQ0hET0dfTk9XQVlPVVQgZGV0ZXJtaW5lcyBpZiB0aGUgZmVhdHVyZSBpcyBnb2luZyB0byBiZQordXNlZC4gVGhpcyBuZWVkcyB0byBiZSBjb252ZXJ0ZWQgYnkgaW5pdGlhbGl6aW5nIHRoZSBzdGF0dXMgdmFyaWFibGUgb2YgdGhlCit3YXRjaGRvZ19kZXZpY2UgbGlrZSB0aGlzOgorCisgICAgICAgIC5zdGF0dXMgPSBXQVRDSERPR19OT1dBWU9VVF9JTklUX1NUQVRVUywKKworTW9zdCBkcml2ZXJzLCBob3dldmVyLCBhbHNvIGFsbG93IHJ1bnRpbWUgY29uZmlndXJhdGlvbiBvZiBub3dheW91dCwgdXN1YWxseQorYnkgYWRkaW5nIGEgbW9kdWxlIHBhcmFtZXRlci4gVGhlIGNvbnZlcnNpb24gZm9yIHRoaXMgd291bGQgYmUgc29tZXRoaW5nIGxpa2U6CisKKwl3YXRjaGRvZ19zZXRfbm93YXlvdXQoJnMzYzI0MTBfd2RkLCBub3dheW91dCk7CisKK1RoZSBtb2R1bGUgcGFyYW1ldGVyIGl0c2VsZiBuZWVkcyB0byBzdGF5LCBldmVyeXRoaW5nIGVsc2UgcmVsYXRlZCB0byBub3dheW91dAorY2FuIGdvLCB0aG91Z2guIFRoaXMgd2lsbCBsaWtlbHkgYmUgc29tZSBjb2RlIGluIG9wZW4oKSwgY2xvc2UoKSBvciB3cml0ZSgpLgorCisKK1JlZ2lzdGVyIHRoZSB3YXRjaGRvZyBkZXZpY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVwbGFjZSBtaXNjX3JlZ2lzdGVyKCZtaXNjZGV2KSB3aXRoIHdhdGNoZG9nX3JlZ2lzdGVyX2RldmljZSgmd2F0Y2hkb2dfZGV2KS4KK01ha2Ugc3VyZSB0aGUgcmV0dXJuIHZhbHVlIGdldHMgY2hlY2tlZCBhbmQgdGhlIGVycm9yIG1lc3NhZ2UsIGlmIHByZXNlbnQsCitzdGlsbCBmaXRzLiBBbHNvIGNvbnZlcnQgdGhlIHVucmVnaXN0ZXIgY2FzZS4KKworLSAgICAgICByZXQgPSBtaXNjX3JlZ2lzdGVyKCZzM2MyNDEwd2R0X21pc2NkZXYpOworKyAgICAgICByZXQgPSB3YXRjaGRvZ19yZWdpc3Rlcl9kZXZpY2UoJnMzYzI0MTBfd2RkKTsKKworLi4uCisKKy0gICAgICAgbWlzY19kZXJlZ2lzdGVyKCZzM2MyNDEwd2R0X21pc2NkZXYpOworKyAgICAgICB3YXRjaGRvZ191bnJlZ2lzdGVyX2RldmljZSgmczNjMjQxMF93ZGQpOworCisKK1VwZGF0ZSB0aGUgS2NvbmZpZy1lbnRyeQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBlbnRyeSBmb3IgdGhlIGRyaXZlciBub3cgbmVlZHMgdG8gc2VsZWN0IFdBVENIRE9HX0NPUkU6CisKKysgICAgICAgc2VsZWN0IFdBVENIRE9HX0NPUkUKKworCitDcmVhdGUgYSBwYXRjaCBhbmQgc2VuZCBpdCB0byB1cHN0cmVhbQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTWFrZSBzdXJlIHlvdSB1bmRlcnN0b29kIERvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXMgYW5kIHNlbmQgeW91ciBwYXRjaCB0bworbGludXgtd2F0Y2hkb2dAdmdlci5rZXJuZWwub3JnLiBXZSBhcmUgbG9va2luZyBmb3J3YXJkIHRvIGl0IDopCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vd2F0Y2hkb2cvaHB3ZHQudHh0IGIvRG9jdW1lbnRhdGlvbi93YXRjaGRvZy9ocHdkdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ4ODA3OAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vd2F0Y2hkb2cvaHB3ZHQudHh0CkBAIC0wLDAgKzEsOTUgQEAKK0xhc3QgcmV2aWV3ZWQ6IDA2LzAyLzIwMDkKKworICAgICAgICAgICAgICAgICAgICAgSFAgaUxPMiBOTUkgV2F0Y2hkb2cgRHJpdmVyCisgICAgICAgICAgICAgIE5NSSBzb3VyY2luZyBmb3IgaUxPMiBiYXNlZCBQcm9MaWFudCBTZXJ2ZXJzCisgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudGF0aW9uIGFuZCBEcml2ZXIgYnkKKyAgICAgICAgICAgICAgVGhvbWFzIE1pbmdhcmVsbGkgPHRob21hcy5taW5nYXJlbGxpQGhwLmNvbT4KKworIFRoZSBIUCBpTE8yIE5NSSBXYXRjaGRvZyBkcml2ZXIgaXMgYSBrZXJuZWwgbW9kdWxlIHRoYXQgcHJvdmlkZXMgYmFzaWMKKyB3YXRjaGRvZyBmdW5jdGlvbmFsaXR5IGFuZCB0aGUgYWRkZWQgYmVuZWZpdCBvZiBOTUkgc291cmNpbmcuIEJvdGggdGhlCisgd2F0Y2hkb2cgZnVuY3Rpb25hbGl0eSBhbmQgdGhlIE5NSSBzb3VyY2luZyBjYXBhYmlsaXR5IG5lZWQgdG8gYmUgZW5hYmxlZAorIGJ5IHRoZSB1c2VyLiBSZW1lbWJlciB0aGF0IHRoZSB0d28gbW9kZXMgYXJlIG5vdCBkZXBlbmRlbnQgb24gb25lIGFub3RoZXIuCisgQSB1c2VyIGNhbiBoYXZlIHRoZSBOTUkgc291cmNpbmcgd2l0aG91dCB0aGUgd2F0Y2hkb2cgdGltZXIgYW5kIHZpY2UtdmVyc2EuCisKKyBXYXRjaGRvZyBmdW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQgbGlrZSBhbnkgb3RoZXIgY29tbW9uIHdhdGNoZG9nIGRyaXZlci4gVGhhdAorIGlzLCBhbiBhcHBsaWNhdGlvbiBuZWVkcyB0byBiZSBzdGFydGVkIHRoYXQga2lja3Mgb2ZmIHRoZSB3YXRjaGRvZyB0aW1lci4gQQorIGJhc2ljIGFwcGxpY2F0aW9uIGV4aXN0cyBpbiB0aGUgRG9jdW1lbnRhdGlvbi93YXRjaGRvZy9zcmMgZGlyZWN0b3J5IGNhbGxlZAorIHdhdGNoZG9nLXRlc3QuYy4gU2ltcGx5IGNvbXBpbGUgdGhlIEMgZmlsZSBhbmQga2ljayBpdCBvZmYuIElmIHRoZSBzeXN0ZW0KKyBnZXRzIGludG8gYSBiYWQgc3RhdGUgYW5kIGhhbmdzLCB0aGUgSFAgUHJvTGlhbnQgaUxPIDIgdGltZXIgcmVnaXN0ZXIgd2lsbAorIG5vdCBiZSB1cGRhdGVkIGluIGEgdGltZWx5IGZhc2hpb24gYW5kIGEgaGFyZHdhcmUgc3lzdGVtIHJlc2V0IChhbHNvIGtub3duIGFzCisgYW4gQXV0b21hdGljIFNlcnZlciBSZWNvdmVyeSAoQVNSKSkgZXZlbnQgd2lsbCBvY2N1ci4KKworIFRoZSBocHdkdCBkcml2ZXIgYWxzbyBoYXMgZm91ciAoNCkgbW9kdWxlIHBhcmFtZXRlcnMuIFRoZXkgYXJlIHRoZSBmb2xsb3dpbmc6CisKKyBzb2Z0X21hcmdpbiAtIGFsbG93cyB0aGUgdXNlciB0byBzZXQgdGhlIHdhdGNoZG9nIHRpbWVyIHZhbHVlCisgYWxsb3dfa2R1bXAgLSBhbGxvd3MgdGhlIHVzZXIgdG8gc2F2ZSBvZmYgYSBrZXJuZWwgZHVtcCBpbWFnZSBhZnRlciBhbiBOTUkKKyBub3dheW91dCAgICAtIGJhc2ljIHdhdGNoZG9nIHBhcmFtZXRlciB0aGF0IGRvZXMgbm90IGFsbG93IHRoZSB0aW1lciB0bworICAgICAgICAgICAgICAgYmUgcmVzdGFydGVkIG9yIGFuIGltcGVuZGluZyBBU1IgdG8gYmUgZXNjYXBlZC4KKyBwcmlvcml0eSAgICAtIGRldGVybWluZXMgd2hldGhlciBvciBub3QgdGhlIGhwd2R0IGRyaXZlciBpcyBmaXJzdCBvbiB0aGUKKyAgICAgICAgICAgICAgIGRpZV9ub3RpZnkgbGlzdCB0byBoYW5kbGUgTk1JcyBvciBsYXN0LiBUaGUgZGVmYXVsdCB2YWx1ZQorICAgICAgICAgICAgICAgZm9yIHRoaXMgbW9kdWxlIHBhcmFtZXRlciBpcyAwIG9yIExBU1QuIElmIHRoZSB1c2VyIHdhbnRzIHRvCisgICAgICAgICAgICAgICBlbmFibGUgTk1JIHNvdXJjaW5nIHRoZW4gcmVsb2FkIHRoZSBocHdkdCBkcml2ZXIgd2l0aAorICAgICAgICAgICAgICAgcHJpb3JpdHk9MSAoYW5kIGJvb3Qgd2l0aCBubWlfd2F0Y2hkb2c9MCkuCisKKyBOT1RFOiBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHdhdGNoZG9nIGRyaXZlcnMgaW4gZ2VuZXJhbCwgaW5jbHVkaW5nIHRoZSBpb2N0bAorICAgICAgIGludGVyZmFjZSB0byAvZGV2L3dhdGNoZG9nIGNhbiBiZSBmb3VuZCBpbgorICAgICAgIERvY3VtZW50YXRpb24vd2F0Y2hkb2cvd2F0Y2hkb2ctYXBpLnR4dCBhbmQgRG9jdW1lbnRhdGlvbi9JUE1JLnR4dC4KKworIFRoZSBwcmlvcml0eSBwYXJhbWV0ZXIgd2FzIGludHJvZHVjZWQgZHVlIHRvIG90aGVyIGtlcm5lbCBzb2Z0d2FyZSB0aGF0IHJlbGllZAorIG9uIGhhbmRsaW5nIE5NSXMgKGxpa2Ugb3Byb2ZpbGUpLiBLZWVwaW5nIGhwd2R0J3MgcHJpb3JpdHkgYXQgMCAob3IgTEFTVCkKKyBlbmFibGVzIHRoZSB1c2VycyBvZiBOTUlzIGZvciBub24gY3JpdGljYWwgZXZlbnRzIHRvIGJlIHdvcmsgYXMgZXhwZWN0ZWQuCisKKyBUaGUgTk1JIHNvdXJjaW5nIGNhcGFiaWxpdHkgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCBkdWUgdG8gdGhlIGluYWJpbGl0eSB0bworIGRpc3Rpbmd1aXNoIGJldHdlZW4gIk5NSSBXYXRjaGRvZyBUaWNrcyIgYW5kICJIVyBnZW5lcmF0ZWQgTk1JIGV2ZW50cyIgaW4gdGhlCisgTGludXgga2VybmVsLiBXaGF0IHRoaXMgbWVhbnMgaXMgdGhhdCB0aGUgaHB3ZHQgbm1pIGhhbmRsZXIgY29kZSBpcyBjYWxsZWQKKyBlYWNoIHRpbWUgdGhlIE5NSSBzaWduYWwgZmlyZXMgb2ZmLiBUaGlzIGNvdWxkIGFtb3VudCB0byBzZXZlcmFsIHRob3VzYW5kcyBvZgorIE5NSXMgaW4gYSBtYXR0ZXIgb2Ygc2Vjb25kcy4gSWYgYSB1c2VyIHNlZXMgdGhlIExpbnV4IGtlcm5lbCdzICJkYXplZCBhbmQKKyBjb25mdXNlZCIgbWVzc2FnZSBpbiB0aGUgbG9ncyBvciBpZiB0aGUgc3lzdGVtIGdldHMgaW50byBhIGh1bmcgc3RhdGUsIHRoZW4KKyB0aGUgaHB3ZHQgZHJpdmVyIGNhbiBiZSByZWxvYWRlZCB3aXRoIHRoZSAicHJpb3JpdHkiIG1vZHVsZSBwYXJhbWV0ZXIgc2V0CisgKHByaW9yaXR5PTEpLgorCisgMS4gSWYgdGhlIGtlcm5lbCBoYXMgbm90IGJlZW4gYm9vdGVkIHdpdGggbm1pX3dhdGNoZG9nIHR1cm5lZCBvZmYgdGhlbgorICAgIGVkaXQgL2Jvb3QvZ3J1Yi9tZW51LmxzdCBhbmQgcGxhY2UgdGhlIG5taV93YXRjaGRvZz0wIGF0IHRoZSBlbmQgb2YgdGhlCisgICAgY3VycmVudGx5IGJvb3Rpbmcga2VybmVsIGxpbmUuCisgMi4gcmVib290IHRoZSBzZXZlcgorIDMuIE9uY2UgdGhlIHN5c3RlbSBjb21lcyB1cCBwZXJmb3JtIGEgcm1tb2QgaHB3ZHQKKyA0LiBpbnNtb2QgL2xpYi9tb2R1bGVzL2B1bmFtZSAtcmAva2VybmVsL2RyaXZlcnMvY2hhci93YXRjaGRvZy9ocHdkdC5rbyBwcmlvcml0eT0xCisKKyBOb3csIHRoZSBocHdkdCBjYW4gc3VjY2Vzc2Z1bGx5IHJlY2VpdmUgYW5kIHNvdXJjZSB0aGUgTk1JIGFuZCBwcm92aWRlIGEgbG9nCisgbWVzc2FnZSB0aGF0IGRldGFpbHMgdGhlIHJlYXNvbiBmb3IgdGhlIE5NSSAoYXMgZGV0ZXJtaW5lZCBieSB0aGUgSFAgQklPUykuCisKKyBCZWxvdyBpcyBhIGxpc3Qgb2YgTk1JcyB0aGUgSFAgQklPUyB1bmRlcnN0YW5kcyBhbG9uZyB3aXRoIHRoZSBhc3NvY2lhdGVkCisgY29kZSAocmVhc29uKToKKworCU5vIHNvdXJjZSBmb3VuZCAgICAgICAgICAgICAgICAwMGgKKworCVVuY29ycmVjdGFibGUgTWVtb3J5IEVycm9yICAgICAwMWgKKworCUFTUiBOTUkgICAgICAgICAgICAgICAgICAgICAgICAxQmgKKworCVBDSSBQYXJpdHkgRXJyb3IgICAgICAgICAgICAgICAyMGgKKworCU5NSSBCdXR0b24gUHJlc3MgICAgICAgICAgICAgICAyN2gKKworCVNCX0JVU19OTUkgICAgICAgICAgICAgICAgICAgICAyOGgKKworCUlMTyBEb29yYmVsbCBOTUkgICAgICAgICAgICAgICAyOWgKKworCUlMTyBJT1AgTk1JICAgICAgICAgICAgICAgICAgICAyQWgKKworCUlMTyBXYXRjaGRvZyBOTUkgICAgICAgICAgICAgICAyQmgKKworCVByb2MgVGhyb3QgTk1JICAgICAgICAgICAgICAgICAyQ2gKKworCUZyb250IFNpZGUgQnVzIE5NSSAgICAgICAgICAgICAyRGgKKworCVBDSSBFeHByZXNzIEVycm9yICAgICAgICAgICAgICAyRmgKKworCURNQSBjb250cm9sbGVyIE5NSSAgICAgICAgICAgICAzMGgKKworCUh5cGVydHJhbnNwb3J0L0NTSSBFcnJvciAgICAgICAzMWgKKworCisKKyAtLSBUb20gTWluZ2FyZWxsaQorICAgICh0aG9tYXMubWluZ2FyZWxsaUBocC5jb20pCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3dhdGNoZG9nL3Bjd2Qtd2F0Y2hkb2cudHh0IGIvRG9jdW1lbnRhdGlvbi93YXRjaGRvZy9wY3dkLXdhdGNoZG9nLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjY4MDUyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi93YXRjaGRvZy9wY3dkLXdhdGNoZG9nLnR4dApAQCAtMCwwICsxLDY2IEBACitMYXN0IHJldmlld2VkOiAxMC8wNS8yMDA3CisKKyAgICAgICAgICAgICAgICAgICAgIEJlcmtzaGlyZSBQcm9kdWN0cyBQQyBXYXRjaGRvZyBDYXJkCisgICAgICAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgSVNBIENhcmRzICBSZXZpc2lvbiBBIGFuZCBDCisgICAgICAgICAgIERvY3VtZW50YXRpb24gYW5kIERyaXZlciBieSBLZW4gSG9sbGlzIDxrZW5qaUBiaXRnYXRlLmNvbT4KKworIFRoZSBQQyBXYXRjaGRvZyBpcyBhIGNhcmQgdGhhdCBvZmZlcnMgdGhlIHNhbWUgdHlwZSBvZiBmdW5jdGlvbmFsaXR5IHRoYXQKKyB0aGUgV0RUIGNhcmQgZG9lcywgb25seSBpdCBkb2Vzbid0IHJlcXVpcmUgYW4gSVJRIHRvIHJ1bi4gIEZ1cnRoZXJtb3JlLAorIHRoZSBSZXZpc2lvbiBDIGNhcmQgYWxsb3dzIHlvdSB0byBtb25pdG9yIGFueSBJTyBQb3J0IHRvIGF1dG9tYXRpY2FsbHkKKyB0cmlnZ2VyIHRoZSBjYXJkIGludG8gYmVpbmcgcmVzZXQuICBUaGlzIHdheSB5b3UgY2FuIG1ha2UgdGhlIGNhcmQKKyBtb25pdG9yIGhhcmQgZHJpdmUgc3RhdHVzLCBvciBhbnl0aGluZyBlbHNlIHlvdSBuZWVkLgorCisgVGhlIFdhdGNoZG9nIERyaXZlciBoYXMgb25lIGJhc2ljIHJvbGU6IHRvIHRhbGsgdG8gdGhlIGNhcmQgYW5kIHNlbmQKKyBzaWduYWxzIHRvIGl0IHNvIGl0IGRvZXNuJ3QgcmVzZXQgeW91ciBjb21wdXRlciAuLi4gYXQgbGVhc3QgZHVyaW5nCisgbm9ybWFsIG9wZXJhdGlvbi4KKworIFRoZSBXYXRjaGRvZyBEcml2ZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGZpbmQgeW91ciB3YXRjaGRvZyBjYXJkLCBhbmQgd2lsbAorIGF0dGFjaCBhIHJ1bm5pbmcgZHJpdmVyIGZvciB1c2Ugd2l0aCB0aGF0IGNhcmQuICBBZnRlciB0aGUgd2F0Y2hkb2cKKyBkcml2ZXJzIGhhdmUgaW5pdGlhbGl6ZWQsIHlvdSBjYW4gdGhlbiB0YWxrIHRvIHRoZSBjYXJkIHVzaW5nIGEgUEMKKyBXYXRjaGRvZyBwcm9ncmFtLgorCisgSSBzdWdnZXN0IHB1dHRpbmcgYSAid2F0Y2hkb2cgLWQiIGJlZm9yZSB0aGUgYmVnaW5uaW5nIG9mIGFuIGZzY2ssIGFuZAorIGEgIndhdGNoZG9nIC1lIC10IDEiIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBlbmQgb2YgYW4gZnNjay4gIChSZW1lbWJlcgorIHRvIHJ1biB0aGUgcHJvZ3JhbSB3aXRoIGFuICImIiB0byBydW4gaXQgaW4gdGhlIGJhY2tncm91bmQhKQorCisgSWYgeW91IHdhbnQgdG8gd3JpdGUgYSBwcm9ncmFtIHRvIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgUEMgV2F0Y2hkb2cKKyBkcml2ZXIsIHNpbXBseSB1c2Ugb2YgbW9kaWZ5IHRoZSB3YXRjaGRvZyB0ZXN0IHByb2dyYW06CisgRG9jdW1lbnRhdGlvbi93YXRjaGRvZy9zcmMvd2F0Y2hkb2ctdGVzdC5jCisKKworIE90aGVyIElPQ1RMIGZ1bmN0aW9ucyBpbmNsdWRlOgorCisJV0RJT0NfR0VUU1VQUE9SVAorCQlUaGlzIHJldHVybnMgdGhlIHN1cHBvcnQgb2YgdGhlIGNhcmQgaXRzZWxmLiAgVGhpcworCQlyZXR1cm5zIGluIHN0cnVjdHVyZSAiUENXRFMiIHdoaWNoIHJldHVybnM6CisJCQlvcHRpb25zID0gV0RJT1NfVEVNUFBBTklDCisJCQkJICAoVGhpcyBjYXJkIHN1cHBvcnRzIHRlbXBlcmF0dXJlKQorCQkJZmlybXdhcmVfdmVyc2lvbiA9IHh4eHgKKwkJCQkgIChGaXJtd2FyZSB2ZXJzaW9uIG9mIHRoZSBjYXJkKQorCisJV0RJT0NfR0VUU1RBVFVTCisJCVRoaXMgcmV0dXJucyB0aGUgc3RhdHVzIG9mIHRoZSBjYXJkLCB3aXRoIHRoZSBiaXRzIG9mCisJCVdESU9GXyogYml0d2lzZS1hbmRlZCBpbnRvIHRoZSB2YWx1ZS4gIChUaGUgY29tbWVudHMKKwkJYXJlIGluIGxpbnV4L3Bjd2QuaCkKKworCVdESU9DX0dFVEJPT1RTVEFUVVMKKwkJVGhpcyByZXR1cm5zIHRoZSBzdGF0dXMgb2YgdGhlIGNhcmQgdGhhdCB3YXMgcmVwb3J0ZWQKKwkJYXQgYm9vdHVwLgorCisJV0RJT0NfR0VUVEVNUAorCQlUaGlzIHJldHVybnMgdGhlIHRlbXBlcmF0dXJlIG9mIHRoZSBjYXJkLiAgKFlvdSBjYW4gYWxzbworCQlyZWFkIC9kZXYvd2F0Y2hkb2csIHdoaWNoIGdpdmVzIGEgdGVtcGVyYXR1cmUgdXBkYXRlCisJCWV2ZXJ5IHNlY29uZC4pCisKKwlXRElPQ19TRVRPUFRJT05TCisJCVRoaXMgbGV0cyB5b3Ugc2V0IHRoZSBvcHRpb25zIG9mIHRoZSBjYXJkLiAgWW91IGNhbiBlaXRoZXIKKwkJZW5hYmxlIG9yIGRpc2FibGUgdGhlIGNhcmQgdGhpcyB3YXkuCisKKwlXRElPQ19LRUVQQUxJVkUKKwkJVGhpcyBwaW5ncyB0aGUgY2FyZCB0byB0ZWxsIGl0IG5vdCB0byByZXNldCB5b3VyIGNvbXB1dGVyLgorCisgQW5kIHRoYXQncyBhbGwgc2hlIHdyb3RlIQorCisgLS0gS2VuIEhvbGxpcworICAgIChrZW5qaUBiaXRnYXRlLmNvbSkKKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi93YXRjaGRvZy9zcmMvLmdpdGlnbm9yZSBiL0RvY3VtZW50YXRpb24vd2F0Y2hkb2cvc3JjLy5naXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM5MDk5NwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vd2F0Y2hkb2cvc3JjLy5naXRpZ25vcmUKQEAgLTAsMCArMSwyIEBACit3YXRjaGRvZy1zaW1wbGUKK3dhdGNoZG9nLXRlc3QKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vd2F0Y2hkb2cvc3JjL01ha2VmaWxlIGIvRG9jdW1lbnRhdGlvbi93YXRjaGRvZy9zcmMvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE4OTJjMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vd2F0Y2hkb2cvc3JjL01ha2VmaWxlCkBAIC0wLDAgKzEsNSBAQAorIyBMaXN0IG9mIHByb2dyYW1zIHRvIGJ1aWxkCitob3N0cHJvZ3MteSA6PSB3YXRjaGRvZy1zaW1wbGUgd2F0Y2hkb2ctdGVzdAorCisjIFRlbGwga2J1aWxkIHRvIGFsd2F5cyBidWlsZCB0aGUgcHJvZ3JhbXMKK2Fsd2F5cyA6PSAkKGhvc3Rwcm9ncy15KQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi93YXRjaGRvZy9zcmMvd2F0Y2hkb2ctc2ltcGxlLmMgYi9Eb2N1bWVudGF0aW9uL3dhdGNoZG9nL3NyYy93YXRjaGRvZy1zaW1wbGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTQ1ODAzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi93YXRjaGRvZy9zcmMvd2F0Y2hkb2ctc2ltcGxlLmMKQEAgLTAsMCArMSwyNCBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKworaW50IG1haW4odm9pZCkKK3sKKwlpbnQgZmQgPSBvcGVuKCIvZGV2L3dhdGNoZG9nIiwgT19XUk9OTFkpOworCWludCByZXQgPSAwOworCWlmIChmZCA9PSAtMSkgeworCQlwZXJyb3IoIndhdGNoZG9nIik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisJd2hpbGUgKDEpIHsKKwkJcmV0ID0gd3JpdGUoZmQsICJcMCIsIDEpOworCQlpZiAocmV0ICE9IDEpIHsKKwkJCXJldCA9IC0xOworCQkJYnJlYWs7CisJCX0KKwkJc2xlZXAoMTApOworCX0KKwljbG9zZShmZCk7CisJcmV0dXJuIHJldDsKK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vd2F0Y2hkb2cvc3JjL3dhdGNoZG9nLXRlc3QuYyBiL0RvY3VtZW50YXRpb24vd2F0Y2hkb2cvc3JjL3dhdGNoZG9nLXRlc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2RkZThmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi93YXRjaGRvZy9zcmMvd2F0Y2hkb2ctdGVzdC5jCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBXYXRjaGRvZyBEcml2ZXIgVGVzdCBQcm9ncmFtCisgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L3dhdGNoZG9nLmg+CisKK2ludCBmZDsKKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gc2ltcGx5IHNlbmRzIGFuIElPQ1RMIHRvIHRoZSBkcml2ZXIsIHdoaWNoIGluIHR1cm4gdGlja3MKKyAqIHRoZSBQQyBXYXRjaGRvZyBjYXJkIHRvIHJlc2V0IGl0cyBpbnRlcm5hbCB0aW1lciBzbyBpdCBkb2Vzbid0IHRyaWdnZXIKKyAqIGEgY29tcHV0ZXIgcmVzZXQuCisgKi8KK3N0YXRpYyB2b2lkIGtlZXBfYWxpdmUodm9pZCkKK3sKKyAgICBpbnQgZHVtbXk7CisKKyAgICBpb2N0bChmZCwgV0RJT0NfS0VFUEFMSVZFLCAmZHVtbXkpOworfQorCisvKgorICogVGhlIG1haW4gcHJvZ3JhbS4gIFJ1biB0aGUgcHJvZ3JhbSB3aXRoICItZCIgdG8gZGlzYWJsZSB0aGUgY2FyZCwKKyAqIG9yICItZSIgdG8gZW5hYmxlIHRoZSBjYXJkLgorICovCisKK3N0YXRpYyB2b2lkIHRlcm0oaW50IHNpZykKK3sKKyAgICBjbG9zZShmZCk7CisgICAgZnByaW50ZihzdGRlcnIsICJTdG9wcGluZyB3YXRjaGRvZyB0aWNrcy4uLlxuIik7CisgICAgZXhpdCgwKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgICBpbnQgZmxhZ3M7CisgICAgdW5zaWduZWQgaW50IHBpbmdfcmF0ZSA9IDE7CisKKyAgICBmZCA9IG9wZW4oIi9kZXYvd2F0Y2hkb2ciLCBPX1dST05MWSk7CisKKyAgICBpZiAoZmQgPT0gLTEpIHsKKwlmcHJpbnRmKHN0ZGVyciwgIldhdGNoZG9nIGRldmljZSBub3QgZW5hYmxlZC5cbiIpOworCWZmbHVzaChzdGRlcnIpOworCWV4aXQoLTEpOworICAgIH0KKworICAgIGlmIChhcmdjID4gMSkgeworCWlmICghc3RybmNhc2VjbXAoYXJndlsxXSwgIi1kIiwgMikpIHsKKwkgICAgZmxhZ3MgPSBXRElPU19ESVNBQkxFQ0FSRDsKKwkgICAgaW9jdGwoZmQsIFdESU9DX1NFVE9QVElPTlMsICZmbGFncyk7CisJICAgIGZwcmludGYoc3RkZXJyLCAiV2F0Y2hkb2cgY2FyZCBkaXNhYmxlZC5cbiIpOworCSAgICBmZmx1c2goc3RkZXJyKTsKKwkgICAgZ290byBlbmQ7CisJfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYXJndlsxXSwgIi1lIiwgMikpIHsKKwkgICAgZmxhZ3MgPSBXRElPU19FTkFCTEVDQVJEOworCSAgICBpb2N0bChmZCwgV0RJT0NfU0VUT1BUSU9OUywgJmZsYWdzKTsKKwkgICAgZnByaW50ZihzdGRlcnIsICJXYXRjaGRvZyBjYXJkIGVuYWJsZWQuXG4iKTsKKwkgICAgZmZsdXNoKHN0ZGVycik7CisJICAgIGdvdG8gZW5kOworCX0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGFyZ3ZbMV0sICItdCIsIDIpICYmIGFyZ3ZbMl0pIHsKKwkgICAgZmxhZ3MgPSBhdG9pKGFyZ3ZbMl0pOworCSAgICBpb2N0bChmZCwgV0RJT0NfU0VUVElNRU9VVCwgJmZsYWdzKTsKKwkgICAgZnByaW50ZihzdGRlcnIsICJXYXRjaGRvZyB0aW1lb3V0IHNldCB0byAldSBzZWNvbmRzLlxuIiwgZmxhZ3MpOworCSAgICBmZmx1c2goc3RkZXJyKTsKKwkgICAgZ290byBlbmQ7CisJfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYXJndlsxXSwgIi1wIiwgMikgJiYgYXJndlsyXSkgeworCSAgICBwaW5nX3JhdGUgPSBzdHJ0b3VsKGFyZ3ZbMl0sIE5VTEwsIDApOworCSAgICBmcHJpbnRmKHN0ZGVyciwgIldhdGNoZG9nIHBpbmcgcmF0ZSBzZXQgdG8gJXUgc2Vjb25kcy5cbiIsIHBpbmdfcmF0ZSk7CisJICAgIGZmbHVzaChzdGRlcnIpOworCX0gZWxzZSB7CisJICAgIGZwcmludGYoc3RkZXJyLCAiLWQgdG8gZGlzYWJsZSwgLWUgdG8gZW5hYmxlLCAtdCA8bj4gdG8gc2V0ICIgXAorCQkidGhlIHRpbWVvdXQsXG4tcCA8bj4gdG8gc2V0IHRoZSBwaW5nIHJhdGUsIGFuZCBcbiIpOworCSAgICBmcHJpbnRmKHN0ZGVyciwgInJ1biBieSBpdHNlbGYgdG8gdGljayB0aGUgY2FyZC5cbiIpOworCSAgICBmZmx1c2goc3RkZXJyKTsKKwkgICAgZ290byBlbmQ7CisJfQorICAgIH0KKworICAgIGZwcmludGYoc3RkZXJyLCAiV2F0Y2hkb2cgVGlja2luZyBBd2F5IVxuIik7CisgICAgZmZsdXNoKHN0ZGVycik7CisKKyAgICBzaWduYWwoU0lHSU5ULCB0ZXJtKTsKKworICAgIHdoaWxlKDEpIHsKKwlrZWVwX2FsaXZlKCk7CisJc2xlZXAocGluZ19yYXRlKTsKKyAgICB9CitlbmQ6CisgICAgY2xvc2UoZmQpOworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi93YXRjaGRvZy93YXRjaGRvZy1hcGkudHh0IGIvRG9jdW1lbnRhdGlvbi93YXRjaGRvZy93YXRjaGRvZy1hcGkudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzYTcwMWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3dhdGNoZG9nL3dhdGNoZG9nLWFwaS50eHQKQEAgLTAsMCArMSwyMzcgQEAKK0xhc3QgcmV2aWV3ZWQ6IDEwLzA1LzIwMDcKKworCitUaGUgTGludXggV2F0Y2hkb2cgZHJpdmVyIEFQSS4KKworQ29weXJpZ2h0IDIwMDIgQ2hyaXN0ZXIgV2VpbmdlbCA8d2luZ2VsQG5hbm8tc3lzdGVtLmNvbT4KKworU29tZSBwYXJ0cyBvZiB0aGlzIGRvY3VtZW50IGFyZSBjb3BpZWQgdmVyYmF0aW0gZnJvbSB0aGUgc2JjNjB4eHdkdAorZHJpdmVyIHdoaWNoIGlzIChjKSBDb3B5cmlnaHQgMjAwMCBKYWtvYiBPZXN0ZXJnYWFyZCA8amFrb2JAb3N0ZW5mZWxkLmRrPgorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgc3RhdGUgb2YgdGhlIExpbnV4IDIuNC4xOCBrZXJuZWwuCisKK0ludHJvZHVjdGlvbjoKKworQSBXYXRjaGRvZyBUaW1lciAoV0RUKSBpcyBhIGhhcmR3YXJlIGNpcmN1aXQgdGhhdCBjYW4gcmVzZXQgdGhlCitjb21wdXRlciBzeXN0ZW0gaW4gY2FzZSBvZiBhIHNvZnR3YXJlIGZhdWx0LiAgWW91IHByb2JhYmx5IGtuZXcgdGhhdAorYWxyZWFkeS4KKworVXN1YWxseSBhIHVzZXJzcGFjZSBkYWVtb24gd2lsbCBub3RpZnkgdGhlIGtlcm5lbCB3YXRjaGRvZyBkcml2ZXIgdmlhIHRoZQorL2Rldi93YXRjaGRvZyBzcGVjaWFsIGRldmljZSBmaWxlIHRoYXQgdXNlcnNwYWNlIGlzIHN0aWxsIGFsaXZlLCBhdAorcmVndWxhciBpbnRlcnZhbHMuICBXaGVuIHN1Y2ggYSBub3RpZmljYXRpb24gb2NjdXJzLCB0aGUgZHJpdmVyIHdpbGwKK3VzdWFsbHkgdGVsbCB0aGUgaGFyZHdhcmUgd2F0Y2hkb2cgdGhhdCBldmVyeXRoaW5nIGlzIGluIG9yZGVyLCBhbmQKK3RoYXQgdGhlIHdhdGNoZG9nIHNob3VsZCB3YWl0IGZvciB5ZXQgYW5vdGhlciBsaXR0bGUgd2hpbGUgdG8gcmVzZXQKK3RoZSBzeXN0ZW0uICBJZiB1c2Vyc3BhY2UgZmFpbHMgKFJBTSBlcnJvciwga2VybmVsIGJ1Zywgd2hhdGV2ZXIpLCB0aGUKK25vdGlmaWNhdGlvbnMgY2Vhc2UgdG8gb2NjdXIsIGFuZCB0aGUgaGFyZHdhcmUgd2F0Y2hkb2cgd2lsbCByZXNldCB0aGUKK3N5c3RlbSAoY2F1c2luZyBhIHJlYm9vdCkgYWZ0ZXIgdGhlIHRpbWVvdXQgb2NjdXJzLgorCitUaGUgTGludXggd2F0Y2hkb2cgQVBJIGlzIGEgcmF0aGVyIGFkLWhvYyBjb25zdHJ1Y3Rpb24gYW5kIGRpZmZlcmVudAorZHJpdmVycyBpbXBsZW1lbnQgZGlmZmVyZW50LCBhbmQgc29tZXRpbWVzIGluY29tcGF0aWJsZSwgcGFydHMgb2YgaXQuCitUaGlzIGZpbGUgaXMgYW4gYXR0ZW1wdCB0byBkb2N1bWVudCB0aGUgZXhpc3RpbmcgdXNhZ2UgYW5kIGFsbG93CitmdXR1cmUgZHJpdmVyIHdyaXRlcnMgdG8gdXNlIGl0IGFzIGEgcmVmZXJlbmNlLgorCitUaGUgc2ltcGxlc3QgQVBJOgorCitBbGwgZHJpdmVycyBzdXBwb3J0IHRoZSBiYXNpYyBtb2RlIG9mIG9wZXJhdGlvbiwgd2hlcmUgdGhlIHdhdGNoZG9nCithY3RpdmF0ZXMgYXMgc29vbiBhcyAvZGV2L3dhdGNoZG9nIGlzIG9wZW5lZCBhbmQgd2lsbCByZWJvb3QgdW5sZXNzCit0aGUgd2F0Y2hkb2cgaXMgcGluZ2VkIHdpdGhpbiBhIGNlcnRhaW4gdGltZSwgdGhpcyB0aW1lIGlzIGNhbGxlZCB0aGUKK3RpbWVvdXQgb3IgbWFyZ2luLiAgVGhlIHNpbXBsZXN0IHdheSB0byBwaW5nIHRoZSB3YXRjaGRvZyBpcyB0byB3cml0ZQorc29tZSBkYXRhIHRvIHRoZSBkZXZpY2UuICBTbyBhIHZlcnkgc2ltcGxlIHdhdGNoZG9nIGRhZW1vbiB3b3VsZCBsb29rCitsaWtlIHRoaXMgc291cmNlIGZpbGU6ICBzZWUgRG9jdW1lbnRhdGlvbi93YXRjaGRvZy9zcmMvd2F0Y2hkb2ctc2ltcGxlLmMKKworQSBtb3JlIGFkdmFuY2VkIGRyaXZlciBjb3VsZCBmb3IgZXhhbXBsZSBjaGVjayB0aGF0IGEgSFRUUCBzZXJ2ZXIgaXMKK3N0aWxsIHJlc3BvbmRpbmcgYmVmb3JlIGRvaW5nIHRoZSB3cml0ZSBjYWxsIHRvIHBpbmcgdGhlIHdhdGNoZG9nLgorCitXaGVuIHRoZSBkZXZpY2UgaXMgY2xvc2VkLCB0aGUgd2F0Y2hkb2cgaXMgZGlzYWJsZWQsIHVubGVzcyB0aGUgIk1hZ2ljCitDbG9zZSIgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgKHNlZSBiZWxvdykuICBUaGlzIGlzIG5vdCBhbHdheXMgc3VjaCBhCitnb29kIGlkZWEsIHNpbmNlIGlmIHRoZXJlIGlzIGEgYnVnIGluIHRoZSB3YXRjaGRvZyBkYWVtb24gYW5kIGl0CitjcmFzaGVzIHRoZSBzeXN0ZW0gd2lsbCBub3QgcmVib290LiAgQmVjYXVzZSBvZiB0aGlzLCBzb21lIG9mIHRoZQorZHJpdmVycyBzdXBwb3J0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiAiRGlzYWJsZSB3YXRjaGRvZyBzaHV0ZG93biBvbgorY2xvc2UiLCBDT05GSUdfV0FUQ0hET0dfTk9XQVlPVVQuICBJZiBpdCBpcyBzZXQgdG8gWSB3aGVuIGNvbXBpbGluZwordGhlIGtlcm5lbCwgdGhlcmUgaXMgbm8gd2F5IG9mIGRpc2FibGluZyB0aGUgd2F0Y2hkb2cgb25jZSBpdCBoYXMgYmVlbgorc3RhcnRlZC4gIFNvLCBpZiB0aGUgd2F0Y2hkb2cgZGFlbW9uIGNyYXNoZXMsIHRoZSBzeXN0ZW0gd2lsbCByZWJvb3QKK2FmdGVyIHRoZSB0aW1lb3V0IGhhcyBwYXNzZWQuIFdhdGNoZG9nIGRldmljZXMgYWxzbyB1c3VhbGx5IHN1cHBvcnQKK3RoZSBub3dheW91dCBtb2R1bGUgcGFyYW1ldGVyIHNvIHRoYXQgdGhpcyBvcHRpb24gY2FuIGJlIGNvbnRyb2xsZWQgYXQKK3J1bnRpbWUuCisKK01hZ2ljIENsb3NlIGZlYXR1cmU6CisKK0lmIGEgZHJpdmVyIHN1cHBvcnRzICJNYWdpYyBDbG9zZSIsIHRoZSBkcml2ZXIgd2lsbCBub3QgZGlzYWJsZSB0aGUKK3dhdGNoZG9nIHVubGVzcyBhIHNwZWNpZmljIG1hZ2ljIGNoYXJhY3RlciAnVicgaGFzIGJlZW4gc2VudCB0bworL2Rldi93YXRjaGRvZyBqdXN0IGJlZm9yZSBjbG9zaW5nIHRoZSBmaWxlLiAgSWYgdGhlIHVzZXJzcGFjZSBkYWVtb24KK2Nsb3NlcyB0aGUgZmlsZSB3aXRob3V0IHNlbmRpbmcgdGhpcyBzcGVjaWFsIGNoYXJhY3RlciwgdGhlIGRyaXZlcgord2lsbCBhc3N1bWUgdGhhdCB0aGUgZGFlbW9uIChhbmQgdXNlcnNwYWNlIGluIGdlbmVyYWwpIGRpZWQsIGFuZCB3aWxsCitzdG9wIHBpbmdpbmcgdGhlIHdhdGNoZG9nIHdpdGhvdXQgZGlzYWJsaW5nIGl0IGZpcnN0LiAgVGhpcyB3aWxsIHRoZW4KK2NhdXNlIGEgcmVib290IGlmIHRoZSB3YXRjaGRvZyBpcyBub3QgcmUtb3BlbmVkIGluIHN1ZmZpY2llbnQgdGltZS4KKworVGhlIGlvY3RsIEFQSToKKworQWxsIGNvbmZvcm1pbmcgZHJpdmVycyBhbHNvIHN1cHBvcnQgYW4gaW9jdGwgQVBJLgorCitQaW5naW5nIHRoZSB3YXRjaGRvZyB1c2luZyBhbiBpb2N0bDoKKworQWxsIGRyaXZlcnMgdGhhdCBoYXZlIGFuIGlvY3RsIGludGVyZmFjZSBzdXBwb3J0IGF0IGxlYXN0IG9uZSBpb2N0bCwKK0tFRVBBTElWRS4gIFRoaXMgaW9jdGwgZG9lcyBleGFjdGx5IHRoZSBzYW1lIHRoaW5nIGFzIGEgd3JpdGUgdG8gdGhlCit3YXRjaGRvZyBkZXZpY2UsIHNvIHRoZSBtYWluIGxvb3AgaW4gdGhlIGFib3ZlIHByb2dyYW0gY291bGQgYmUKK3JlcGxhY2VkIHdpdGg6CisKKwl3aGlsZSAoMSkgeworCQlpb2N0bChmZCwgV0RJT0NfS0VFUEFMSVZFLCAwKTsKKwkJc2xlZXAoMTApOworCX0KKwordGhlIGFyZ3VtZW50IHRvIHRoZSBpb2N0bCBpcyBpZ25vcmVkLgorCitTZXR0aW5nIGFuZCBnZXR0aW5nIHRoZSB0aW1lb3V0OgorCitGb3Igc29tZSBkcml2ZXJzIGl0IGlzIHBvc3NpYmxlIHRvIG1vZGlmeSB0aGUgd2F0Y2hkb2cgdGltZW91dCBvbiB0aGUKK2ZseSB3aXRoIHRoZSBTRVRUSU1FT1VUIGlvY3RsLCB0aG9zZSBkcml2ZXJzIGhhdmUgdGhlIFdESU9GX1NFVFRJTUVPVVQKK2ZsYWcgc2V0IGluIHRoZWlyIG9wdGlvbiBmaWVsZC4gIFRoZSBhcmd1bWVudCBpcyBhbiBpbnRlZ2VyCityZXByZXNlbnRpbmcgdGhlIHRpbWVvdXQgaW4gc2Vjb25kcy4gIFRoZSBkcml2ZXIgcmV0dXJucyB0aGUgcmVhbAordGltZW91dCB1c2VkIGluIHRoZSBzYW1lIHZhcmlhYmxlLCBhbmQgdGhpcyB0aW1lb3V0IG1pZ2h0IGRpZmZlciBmcm9tCit0aGUgcmVxdWVzdGVkIG9uZSBkdWUgdG8gbGltaXRhdGlvbiBvZiB0aGUgaGFyZHdhcmUuCisKKyAgICBpbnQgdGltZW91dCA9IDQ1OworICAgIGlvY3RsKGZkLCBXRElPQ19TRVRUSU1FT1VULCAmdGltZW91dCk7CisgICAgcHJpbnRmKCJUaGUgdGltZW91dCB3YXMgc2V0IHRvICVkIHNlY29uZHNcbiIsIHRpbWVvdXQpOworCitUaGlzIGV4YW1wbGUgbWlnaHQgYWN0dWFsbHkgcHJpbnQgIlRoZSB0aW1lb3V0IHdhcyBzZXQgdG8gNjAgc2Vjb25kcyIKK2lmIHRoZSBkZXZpY2UgaGFzIGEgZ3JhbnVsYXJpdHkgb2YgbWludXRlcyBmb3IgaXRzIHRpbWVvdXQuCisKK1N0YXJ0aW5nIHdpdGggdGhlIExpbnV4IDIuNC4xOCBrZXJuZWwsIGl0IGlzIHBvc3NpYmxlIHRvIHF1ZXJ5IHRoZQorY3VycmVudCB0aW1lb3V0IHVzaW5nIHRoZSBHRVRUSU1FT1VUIGlvY3RsLgorCisgICAgaW9jdGwoZmQsIFdESU9DX0dFVFRJTUVPVVQsICZ0aW1lb3V0KTsKKyAgICBwcmludGYoIlRoZSB0aW1lb3V0IHdhcyBpcyAlZCBzZWNvbmRzXG4iLCB0aW1lb3V0KTsKKworUHJldGltZW91dHM6CisKK1NvbWUgd2F0Y2hkb2cgdGltZXJzIGNhbiBiZSBzZXQgdG8gaGF2ZSBhIHRyaWdnZXIgZ28gb2ZmIGJlZm9yZSB0aGUKK2FjdHVhbCB0aW1lIHRoZXkgd2lsbCByZXNldCB0aGUgc3lzdGVtLiAgVGhpcyBjYW4gYmUgZG9uZSB3aXRoIGFuIE5NSSwKK2ludGVycnVwdCwgb3Igb3RoZXIgbWVjaGFuaXNtLiAgVGhpcyBhbGxvd3MgTGludXggdG8gcmVjb3JkIHVzZWZ1bAoraW5mb3JtYXRpb24gKGxpa2UgcGFuaWMgaW5mb3JtYXRpb24gYW5kIGtlcm5lbCBjb3JlZHVtcHMpIGJlZm9yZSBpdAorcmVzZXRzLgorCisgICAgcHJldGltZW91dCA9IDEwOworICAgIGlvY3RsKGZkLCBXRElPQ19TRVRQUkVUSU1FT1VULCAmcHJldGltZW91dCk7CisKK05vdGUgdGhhdCB0aGUgcHJldGltZW91dCBpcyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgYmVmb3JlIHRoZSB0aW1lCit3aGVuIHRoZSB0aW1lb3V0IHdpbGwgZ28gb2ZmLiAgSXQgaXMgbm90IHRoZSBudW1iZXIgb2Ygc2Vjb25kcyB1bnRpbAordGhlIHByZXRpbWVvdXQuICBTbywgZm9yIGluc3RhbmNlLCBpZiB5b3Ugc2V0IHRoZSB0aW1lb3V0IHRvIDYwIHNlY29uZHMKK2FuZCB0aGUgcHJldGltZW91dCB0byAxMCBzZWNvbmRzLCB0aGUgcHJldGltZW91dCB3aWxsIGdvIG9mZiBpbiA1MAorc2Vjb25kcy4gIFNldHRpbmcgYSBwcmV0aW1lb3V0IHRvIHplcm8gZGlzYWJsZXMgaXQuCisKK1RoZXJlIGlzIGFsc28gYSBnZXQgZnVuY3Rpb24gZm9yIGdldHRpbmcgdGhlIHByZXRpbWVvdXQ6CisKKyAgICBpb2N0bChmZCwgV0RJT0NfR0VUUFJFVElNRU9VVCwgJnRpbWVvdXQpOworICAgIHByaW50ZigiVGhlIHByZXRpbWVvdXQgd2FzIGlzICVkIHNlY29uZHNcbiIsIHRpbWVvdXQpOworCitOb3QgYWxsIHdhdGNoZG9nIGRyaXZlcnMgd2lsbCBzdXBwb3J0IGEgcHJldGltZW91dC4KKworR2V0IHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBiZWZvcmUgcmVib290OgorCitTb21lIHdhdGNoZG9nIGRyaXZlcnMgaGF2ZSB0aGUgYWJpbGl0eSB0byByZXBvcnQgdGhlIHJlbWFpbmluZyB0aW1lCitiZWZvcmUgdGhlIHN5c3RlbSB3aWxsIHJlYm9vdC4gVGhlIFdESU9DX0dFVFRJTUVMRUZUIGlzIHRoZSBpb2N0bAordGhhdCByZXR1cm5zIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBiZWZvcmUgcmVib290LgorCisgICAgaW9jdGwoZmQsIFdESU9DX0dFVFRJTUVMRUZULCAmdGltZWxlZnQpOworICAgIHByaW50ZigiVGhlIHRpbWVvdXQgd2FzIGlzICVkIHNlY29uZHNcbiIsIHRpbWVsZWZ0KTsKKworRW52aXJvbm1lbnRhbCBtb25pdG9yaW5nOgorCitBbGwgd2F0Y2hkb2cgZHJpdmVycyBhcmUgcmVxdWlyZWQgcmV0dXJuIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN5c3RlbSwKK3NvbWUgZG8gdGVtcGVyYXR1cmUsIGZhbiBhbmQgcG93ZXIgbGV2ZWwgbW9uaXRvcmluZywgc29tZSBjYW4gdGVsbCB5b3UKK3RoZSByZWFzb24gZm9yIHRoZSBsYXN0IHJlYm9vdCBvZiB0aGUgc3lzdGVtLiAgVGhlIEdFVFNVUFBPUlQgaW9jdGwgaXMKK2F2YWlsYWJsZSB0byBhc2sgd2hhdCB0aGUgZGV2aWNlIGNhbiBkbzoKKworCXN0cnVjdCB3YXRjaGRvZ19pbmZvIGlkZW50OworCWlvY3RsKGZkLCBXRElPQ19HRVRTVVBQT1JULCAmaWRlbnQpOworCit0aGUgZmllbGRzIHJldHVybmVkIGluIHRoZSBpZGVudCBzdHJ1Y3QgYXJlOgorCisgICAgICAgIGlkZW50aXR5CQlhIHN0cmluZyBpZGVudGlmeWluZyB0aGUgd2F0Y2hkb2cgZHJpdmVyCisJZmlybXdhcmVfdmVyc2lvbgl0aGUgZmlybXdhcmUgdmVyc2lvbiBvZiB0aGUgY2FyZCBpZiBhdmFpbGFibGUKKwlvcHRpb25zCQkJYSBmbGFncyBkZXNjcmliaW5nIHdoYXQgdGhlIGRldmljZSBzdXBwb3J0cworCit0aGUgb3B0aW9ucyBmaWVsZCBjYW4gaGF2ZSB0aGUgZm9sbG93aW5nIGJpdHMgc2V0LCBhbmQgZGVzY3JpYmVzIHdoYXQKK2tpbmQgb2YgaW5mb3JtYXRpb24gdGhhdCB0aGUgR0VUX1NUQVRVUyBhbmQgR0VUX0JPT1RfU1RBVFVTIGlvY3RscyBjYW4KK3JldHVybi4gICBbRklYTUUgLS0gSXMgdGhpcyBjb3JyZWN0P10KKworCVdESU9GX09WRVJIRUFUCQlSZXNldCBkdWUgdG8gQ1BVIG92ZXJoZWF0CisKK1RoZSBtYWNoaW5lIHdhcyBsYXN0IHJlYm9vdGVkIGJ5IHRoZSB3YXRjaGRvZyBiZWNhdXNlIHRoZSB0aGVybWFsIGxpbWl0IHdhcworZXhjZWVkZWQKKworCVdESU9GX0ZBTkZBVUxUCQlGYW4gZmFpbGVkCisKK0Egc3lzdGVtIGZhbiBtb25pdG9yZWQgYnkgdGhlIHdhdGNoZG9nIGNhcmQgaGFzIGZhaWxlZAorCisJV0RJT0ZfRVhURVJOMQkJRXh0ZXJuYWwgcmVsYXkgMQorCitFeHRlcm5hbCBtb25pdG9yaW5nIHJlbGF5L3NvdXJjZSAxIHdhcyB0cmlnZ2VyZWQuIENvbnRyb2xsZXJzIGludGVuZGVkIGZvcgorcmVhbCB3b3JsZCBhcHBsaWNhdGlvbnMgaW5jbHVkZSBleHRlcm5hbCBtb25pdG9yaW5nIHBpbnMgdGhhdCB3aWxsIHRyaWdnZXIKK2EgcmVzZXQuCisKKwlXRElPRl9FWFRFUk4yCQlFeHRlcm5hbCByZWxheSAyCisKK0V4dGVybmFsIG1vbml0b3JpbmcgcmVsYXkvc291cmNlIDIgd2FzIHRyaWdnZXJlZAorCisJV0RJT0ZfUE9XRVJVTkRFUglQb3dlciBiYWQvcG93ZXIgZmF1bHQKKworVGhlIG1hY2hpbmUgaXMgc2hvd2luZyBhbiB1bmRlcnZvbHRhZ2Ugc3RhdHVzCisKKwlXRElPRl9DQVJEUkVTRVQJCUNhcmQgcHJldmlvdXNseSByZXNldCB0aGUgQ1BVCisKK1RoZSBsYXN0IHJlYm9vdCB3YXMgY2F1c2VkIGJ5IHRoZSB3YXRjaGRvZyBjYXJkCisKKwlXRElPRl9QT1dFUk9WRVIJCVBvd2VyIG92ZXIgdm9sdGFnZQorCitUaGUgbWFjaGluZSBpcyBzaG93aW5nIGFuIG92ZXJ2b2x0YWdlIHN0YXR1cy4gTm90ZSB0aGF0IGlmIG9uZSBsZXZlbCBpcwordW5kZXIgYW5kIG9uZSBvdmVyIGJvdGggYml0cyB3aWxsIGJlIHNldCAtIHRoaXMgbWF5IHNlZW0gb2RkIGJ1dCBtYWtlcworc2Vuc2UuCisKKwlXRElPRl9LRUVQQUxJVkVQSU5HCUtlZXAgYWxpdmUgcGluZyByZXBseQorCitUaGUgd2F0Y2hkb2cgc2F3IGEga2VlcGFsaXZlIHBpbmcgc2luY2UgaXQgd2FzIGxhc3QgcXVlcmllZC4KKworCVdESU9GX1NFVFRJTUVPVVQJQ2FuIHNldC9nZXQgdGhlIHRpbWVvdXQKKworVGhlIHdhdGNoZG9nIGNhbiBkbyBwcmV0aW1lb3V0cy4KKworCVdESU9GX1BSRVRJTUVPVVQJUHJldGltZW91dCAoaW4gc2Vjb25kcyksIGdldC9zZXQKKworCitGb3IgdGhvc2UgZHJpdmVycyB0aGF0IHJldHVybiBhbnkgYml0cyBzZXQgaW4gdGhlIG9wdGlvbiBmaWVsZCwgdGhlCitHRVRTVEFUVVMgYW5kIEdFVEJPT1RTVEFUVVMgaW9jdGxzIGNhbiBiZSB1c2VkIHRvIGFzayBmb3IgdGhlIGN1cnJlbnQKK3N0YXR1cywgYW5kIHRoZSBzdGF0dXMgYXQgdGhlIGxhc3QgcmVib290LCByZXNwZWN0aXZlbHkuICAKKworICAgIGludCBmbGFnczsKKyAgICBpb2N0bChmZCwgV0RJT0NfR0VUU1RBVFVTLCAmZmxhZ3MpOworCisgICAgb3IKKworICAgIGlvY3RsKGZkLCBXRElPQ19HRVRCT09UU1RBVFVTLCAmZmxhZ3MpOworCitOb3RlIHRoYXQgbm90IGFsbCBkZXZpY2VzIHN1cHBvcnQgdGhlc2UgdHdvIGNhbGxzLCBhbmQgc29tZSBvbmx5CitzdXBwb3J0IHRoZSBHRVRCT09UU1RBVFVTIGNhbGwuCisKK1NvbWUgZHJpdmVycyBjYW4gbWVhc3VyZSB0aGUgdGVtcGVyYXR1cmUgdXNpbmcgdGhlIEdFVFRFTVAgaW9jdGwuICBUaGUKK3JldHVybmVkIHZhbHVlIGlzIHRoZSB0ZW1wZXJhdHVyZSBpbiBkZWdyZWVzIGZhaHJlbmhlaXQuCisKKyAgICBpbnQgdGVtcGVyYXR1cmU7CisgICAgaW9jdGwoZmQsIFdESU9DX0dFVFRFTVAsICZ0ZW1wZXJhdHVyZSk7CisKK0ZpbmFsbHkgdGhlIFNFVE9QVElPTlMgaW9jdGwgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBzb21lIGFzcGVjdHMgb2YKK3RoZSBjYXJkcyBvcGVyYXRpb24uCisKKyAgICBpbnQgb3B0aW9ucyA9IDA7CisgICAgaW9jdGwoZmQsIFdESU9DX1NFVE9QVElPTlMsICZvcHRpb25zKTsKKworVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSBhdmFpbGFibGU6CisKKwlXRElPU19ESVNBQkxFQ0FSRAlUdXJuIG9mZiB0aGUgd2F0Y2hkb2cgdGltZXIKKwlXRElPU19FTkFCTEVDQVJECVR1cm4gb24gdGhlIHdhdGNoZG9nIHRpbWVyCisJV0RJT1NfVEVNUFBBTklDCQlLZXJuZWwgcGFuaWMgb24gdGVtcGVyYXR1cmUgdHJpcAorCitbRklYTUUgLS0gYmV0dGVyIGV4cGxhbmF0aW9uc10KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi93YXRjaGRvZy93YXRjaGRvZy1rZXJuZWwtYXBpLnR4dCBiL0RvY3VtZW50YXRpb24vd2F0Y2hkb2cvd2F0Y2hkb2cta2VybmVsLWFwaS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhiMGQzMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vd2F0Y2hkb2cvd2F0Y2hkb2cta2VybmVsLWFwaS50eHQKQEAgLTAsMCArMSwyMzMgQEAKK1RoZSBMaW51eCBXYXRjaERvZyBUaW1lciBEcml2ZXIgQ29yZSBrZXJuZWwgQVBJLgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0xhc3QgcmV2aWV3ZWQ6IDEyLUZlYi0yMDEzCisKK1dpbSBWYW4gU2Vicm9lY2sgPHdpbUBpZ3VhbmEuYmU+CisKK0ludHJvZHVjdGlvbgorLS0tLS0tLS0tLS0tCitUaGlzIGRvY3VtZW50IGRvZXMgbm90IGRlc2NyaWJlIHdoYXQgYSBXYXRjaERvZyBUaW1lciAoV0RUKSBEcml2ZXIgb3IgRGV2aWNlIGlzLgorSXQgYWxzbyBkb2VzIG5vdCBkZXNjcmliZSB0aGUgQVBJIHdoaWNoIGNhbiBiZSB1c2VkIGJ5IHVzZXIgc3BhY2UgdG8gY29tbXVuaWNhdGUKK3dpdGggYSBXYXRjaERvZyBUaW1lci4gSWYgeW91IHdhbnQgdG8ga25vdyB0aGlzIHRoZW4gcGxlYXNlIHJlYWQgdGhlIGZvbGxvd2luZworZmlsZTogRG9jdW1lbnRhdGlvbi93YXRjaGRvZy93YXRjaGRvZy1hcGkudHh0IC4KKworU28gd2hhdCBkb2VzIHRoaXMgZG9jdW1lbnQgZGVzY3JpYmU/IEl0IGRlc2NyaWJlcyB0aGUgQVBJIHRoYXQgY2FuIGJlIHVzZWQgYnkKK1dhdGNoRG9nIFRpbWVyIERyaXZlcnMgdGhhdCB3YW50IHRvIHVzZSB0aGUgV2F0Y2hEb2cgVGltZXIgRHJpdmVyIENvcmUKK0ZyYW1ld29yay4gVGhpcyBmcmFtZXdvcmsgcHJvdmlkZXMgYWxsIGludGVyZmFjaW5nIHRvd2FyZHMgdXNlciBzcGFjZSBzbyB0aGF0Cit0aGUgc2FtZSBjb2RlIGRvZXMgbm90IGhhdmUgdG8gYmUgcmVwcm9kdWNlZCBlYWNoIHRpbWUuIFRoaXMgYWxzbyBtZWFucyB0aGF0CithIHdhdGNoZG9nIHRpbWVyIGRyaXZlciB0aGVuIG9ubHkgbmVlZHMgdG8gcHJvdmlkZSB0aGUgZGlmZmVyZW50IHJvdXRpbmVzCisob3BlcmF0aW9ucykgdGhhdCBjb250cm9sIHRoZSB3YXRjaGRvZyB0aW1lciAoV0RUKS4KKworVGhlIEFQSQorLS0tLS0tLQorRWFjaCB3YXRjaGRvZyB0aW1lciBkcml2ZXIgdGhhdCB3YW50cyB0byB1c2UgdGhlIFdhdGNoRG9nIFRpbWVyIERyaXZlciBDb3JlCittdXN0ICNpbmNsdWRlIDxsaW51eC93YXRjaGRvZy5oPiAoeW91IHdvdWxkIGhhdmUgdG8gZG8gdGhpcyBhbnl3YXkgd2hlbgord3JpdGluZyBhIHdhdGNoZG9nIGRldmljZSBkcml2ZXIpLiBUaGlzIGluY2x1ZGUgZmlsZSBjb250YWlucyBmb2xsb3dpbmcKK3JlZ2lzdGVyL3VucmVnaXN0ZXIgcm91dGluZXM6CisKK2V4dGVybiBpbnQgd2F0Y2hkb2dfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCB3YXRjaGRvZ19kZXZpY2UgKik7CitleHRlcm4gdm9pZCB3YXRjaGRvZ191bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3Qgd2F0Y2hkb2dfZGV2aWNlICopOworCitUaGUgd2F0Y2hkb2dfcmVnaXN0ZXJfZGV2aWNlIHJvdXRpbmUgcmVnaXN0ZXJzIGEgd2F0Y2hkb2cgdGltZXIgZGV2aWNlLgorVGhlIHBhcmFtZXRlciBvZiB0aGlzIHJvdXRpbmUgaXMgYSBwb2ludGVyIHRvIGEgd2F0Y2hkb2dfZGV2aWNlIHN0cnVjdHVyZS4KK1RoaXMgcm91dGluZSByZXR1cm5zIHplcm8gb24gc3VjY2VzcyBhbmQgYSBuZWdhdGl2ZSBlcnJubyBjb2RlIGZvciBmYWlsdXJlLgorCitUaGUgd2F0Y2hkb2dfdW5yZWdpc3Rlcl9kZXZpY2Ugcm91dGluZSBkZXJlZ2lzdGVycyBhIHJlZ2lzdGVyZWQgd2F0Y2hkb2cgdGltZXIKK2RldmljZS4gVGhlIHBhcmFtZXRlciBvZiB0aGlzIHJvdXRpbmUgaXMgdGhlIHBvaW50ZXIgdG8gdGhlIHJlZ2lzdGVyZWQKK3dhdGNoZG9nX2RldmljZSBzdHJ1Y3R1cmUuCisKK1RoZSB3YXRjaGRvZyBzdWJzeXN0ZW0gaW5jbHVkZXMgYW4gcmVnaXN0cmF0aW9uIGRlZmVycmFsIG1lY2hhbmlzbSwKK3doaWNoIGFsbG93cyB5b3UgdG8gcmVnaXN0ZXIgYW4gd2F0Y2hkb2cgYXMgZWFybHkgYXMgeW91IHdpc2ggZHVyaW5nCit0aGUgYm9vdCBwcm9jZXNzLgorCitUaGUgd2F0Y2hkb2cgZGV2aWNlIHN0cnVjdHVyZSBsb29rcyBsaWtlIHRoaXM6CisKK3N0cnVjdCB3YXRjaGRvZ19kZXZpY2UgeworCWludCBpZDsKKwlzdHJ1Y3QgY2RldiBjZGV2OworCXN0cnVjdCBkZXZpY2UgKmRldjsKKwlzdHJ1Y3QgZGV2aWNlICpwYXJlbnQ7CisJY29uc3Qgc3RydWN0IHdhdGNoZG9nX2luZm8gKmluZm87CisJY29uc3Qgc3RydWN0IHdhdGNoZG9nX29wcyAqb3BzOworCXVuc2lnbmVkIGludCBib290c3RhdHVzOworCXVuc2lnbmVkIGludCB0aW1lb3V0OworCXVuc2lnbmVkIGludCBtaW5fdGltZW91dDsKKwl1bnNpZ25lZCBpbnQgbWF4X3RpbWVvdXQ7CisJdm9pZCAqZHJpdmVyX2RhdGE7CisJc3RydWN0IG11dGV4IGxvY2s7CisJdW5zaWduZWQgbG9uZyBzdGF0dXM7CisJc3RydWN0IGxpc3RfaGVhZCBkZWZlcnJlZDsKK307CisKK0l0IGNvbnRhaW5zIGZvbGxvd2luZyBmaWVsZHM6CisqIGlkOiBzZXQgYnkgd2F0Y2hkb2dfcmVnaXN0ZXJfZGV2aWNlLCBpZCAwIGlzIHNwZWNpYWwuIEl0IGhhcyBib3RoIGEKKyAgL2Rldi93YXRjaGRvZzAgY2RldiAoZHluYW1pYyBtYWpvciwgbWlub3IgMCkgYXMgd2VsbCBhcyB0aGUgb2xkCisgIC9kZXYvd2F0Y2hkb2cgbWlzY2Rldi4gVGhlIGlkIGlzIHNldCBhdXRvbWF0aWNhbGx5IHdoZW4gY2FsbGluZworICB3YXRjaGRvZ19yZWdpc3Rlcl9kZXZpY2UuCisqIGNkZXY6IGNkZXYgZm9yIHRoZSBkeW5hbWljIC9kZXYvd2F0Y2hkb2c8aWQ+IGRldmljZSBub2Rlcy4gVGhpcworICBmaWVsZCBpcyBhbHNvIHBvcHVsYXRlZCBieSB3YXRjaGRvZ19yZWdpc3Rlcl9kZXZpY2UuCisqIGRldjogZGV2aWNlIHVuZGVyIHRoZSB3YXRjaGRvZyBjbGFzcyAoY3JlYXRlZCBieSB3YXRjaGRvZ19yZWdpc3Rlcl9kZXZpY2UpLgorKiBwYXJlbnQ6IHNldCB0aGlzIHRvIHRoZSBwYXJlbnQgZGV2aWNlIChvciBOVUxMKSBiZWZvcmUgY2FsbGluZworICB3YXRjaGRvZ19yZWdpc3Rlcl9kZXZpY2UuCisqIGluZm86IGEgcG9pbnRlciB0byBhIHdhdGNoZG9nX2luZm8gc3RydWN0dXJlLiBUaGlzIHN0cnVjdHVyZSBnaXZlcyBzb21lCisgIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHdhdGNoZG9nIHRpbWVyIGl0c2VsZi4gKExpa2UgaXQncyB1bmlxdWUgbmFtZSkKKyogb3BzOiBhIHBvaW50ZXIgdG8gdGhlIGxpc3Qgb2Ygd2F0Y2hkb2cgb3BlcmF0aW9ucyB0aGF0IHRoZSB3YXRjaGRvZyBzdXBwb3J0cy4KKyogdGltZW91dDogdGhlIHdhdGNoZG9nIHRpbWVyJ3MgdGltZW91dCB2YWx1ZSAoaW4gc2Vjb25kcykuCisqIG1pbl90aW1lb3V0OiB0aGUgd2F0Y2hkb2cgdGltZXIncyBtaW5pbXVtIHRpbWVvdXQgdmFsdWUgKGluIHNlY29uZHMpLgorKiBtYXhfdGltZW91dDogdGhlIHdhdGNoZG9nIHRpbWVyJ3MgbWF4aW11bSB0aW1lb3V0IHZhbHVlIChpbiBzZWNvbmRzKS4KKyogYm9vdHN0YXR1czogc3RhdHVzIG9mIHRoZSBkZXZpY2UgYWZ0ZXIgYm9vdGluZyAocmVwb3J0ZWQgd2l0aCB3YXRjaGRvZworICBXRElPRl8qIHN0YXR1cyBiaXRzKS4KKyogZHJpdmVyX2RhdGE6IGEgcG9pbnRlciB0byB0aGUgZHJpdmVycyBwcml2YXRlIGRhdGEgb2YgYSB3YXRjaGRvZyBkZXZpY2UuCisgIFRoaXMgZGF0YSBzaG91bGQgb25seSBiZSBhY2Nlc3NlZCB2aWEgdGhlIHdhdGNoZG9nX3NldF9kcnZkYXRhIGFuZAorICB3YXRjaGRvZ19nZXRfZHJ2ZGF0YSByb3V0aW5lcy4KKyogbG9jazogTXV0ZXggZm9yIFdhdGNoRG9nIFRpbWVyIERyaXZlciBDb3JlIGludGVybmFsIHVzZSBvbmx5LgorKiBzdGF0dXM6IHRoaXMgZmllbGQgY29udGFpbnMgYSBudW1iZXIgb2Ygc3RhdHVzIGJpdHMgdGhhdCBnaXZlIGV4dHJhCisgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdGF0dXMgb2YgdGhlIGRldmljZSAoTGlrZTogaXMgdGhlIHdhdGNoZG9nIHRpbWVyCisgIHJ1bm5pbmcvYWN0aXZlLCBpcyB0aGUgbm93YXlvdXQgYml0IHNldCwgaXMgdGhlIGRldmljZSBvcGVuZWQgdmlhCisgIHRoZSAvZGV2L3dhdGNoZG9nIGludGVyZmFjZSBvciBub3QsIC4uLikuCisqIGRlZmVycmVkOiBlbnRyeSBpbiB3dGRfZGVmZXJyZWRfcmVnX2xpc3Qgd2hpY2ggaXMgdXNlZCB0bworICByZWdpc3RlciBlYXJseSBpbml0aWFsaXplZCB3YXRjaGRvZ3MuCisKK1RoZSBsaXN0IG9mIHdhdGNoZG9nIG9wZXJhdGlvbnMgaXMgZGVmaW5lZCBhczoKKworc3RydWN0IHdhdGNoZG9nX29wcyB7CisJc3RydWN0IG1vZHVsZSAqb3duZXI7CisJLyogbWFuZGF0b3J5IG9wZXJhdGlvbnMgKi8KKwlpbnQgKCpzdGFydCkoc3RydWN0IHdhdGNoZG9nX2RldmljZSAqKTsKKwlpbnQgKCpzdG9wKShzdHJ1Y3Qgd2F0Y2hkb2dfZGV2aWNlICopOworCS8qIG9wdGlvbmFsIG9wZXJhdGlvbnMgKi8KKwlpbnQgKCpwaW5nKShzdHJ1Y3Qgd2F0Y2hkb2dfZGV2aWNlICopOworCXVuc2lnbmVkIGludCAoKnN0YXR1cykoc3RydWN0IHdhdGNoZG9nX2RldmljZSAqKTsKKwlpbnQgKCpzZXRfdGltZW91dCkoc3RydWN0IHdhdGNoZG9nX2RldmljZSAqLCB1bnNpZ25lZCBpbnQpOworCXVuc2lnbmVkIGludCAoKmdldF90aW1lbGVmdCkoc3RydWN0IHdhdGNoZG9nX2RldmljZSAqKTsKKwl2b2lkICgqcmVmKShzdHJ1Y3Qgd2F0Y2hkb2dfZGV2aWNlICopOworCXZvaWQgKCp1bnJlZikoc3RydWN0IHdhdGNoZG9nX2RldmljZSAqKTsKKwlsb25nICgqaW9jdGwpKHN0cnVjdCB3YXRjaGRvZ19kZXZpY2UgKiwgdW5zaWduZWQgaW50LCB1bnNpZ25lZCBsb25nKTsKK307CisKK0l0IGlzIGltcG9ydGFudCB0aGF0IHlvdSBmaXJzdCBkZWZpbmUgdGhlIG1vZHVsZSBvd25lciBvZiB0aGUgd2F0Y2hkb2cgdGltZXIKK2RyaXZlcidzIG9wZXJhdGlvbnMuIFRoaXMgbW9kdWxlIG93bmVyIHdpbGwgYmUgdXNlZCB0byBsb2NrIHRoZSBtb2R1bGUgd2hlbgordGhlIHdhdGNoZG9nIGlzIGFjdGl2ZS4gKFRoaXMgdG8gYXZvaWQgYSBzeXN0ZW0gY3Jhc2ggd2hlbiB5b3UgdW5sb2FkIHRoZQorbW9kdWxlIGFuZCAvZGV2L3dhdGNoZG9nIGlzIHN0aWxsIG9wZW4pLgorCitJZiB0aGUgd2F0Y2hkb2dfZGV2aWNlIHN0cnVjdCBpcyBkeW5hbWljYWxseSBhbGxvY2F0ZWQsIGp1c3QgbG9ja2luZyB0aGUgbW9kdWxlCitpcyBub3QgZW5vdWdoIGFuZCBhIGRyaXZlciBhbHNvIG5lZWRzIHRvIGRlZmluZSB0aGUgcmVmIGFuZCB1bnJlZiBvcGVyYXRpb25zIHRvCitlbnN1cmUgdGhlIHN0cnVjdHVyZSBob2xkaW5nIHRoZSB3YXRjaGRvZ19kZXZpY2UgZG9lcyBub3QgZ28gYXdheS4KKworVGhlIHNpbXBsZXN0IChhbmQgdXN1YWxseSBzdWZmaWNpZW50KSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGlzIHRvOgorMSkgQWRkIGEga3JlZiBzdHJ1Y3QgdG8gdGhlIHNhbWUgc3RydWN0dXJlIHdoaWNoIGlzIGhvbGRpbmcgdGhlIHdhdGNoZG9nX2RldmljZQorMikgRGVmaW5lIGEgcmVsZWFzZSBjYWxsYmFjayBmb3IgdGhlIGtyZWYgd2hpY2ggZnJlZXMgdGhlIHN0cnVjdCBob2xkaW5nIGJvdGgKKzMpIENhbGwga3JlZl9pbml0IG9uIHRoaXMga3JlZiAqYmVmb3JlKiBjYWxsaW5nIHdhdGNoZG9nX3JlZ2lzdGVyX2RldmljZSgpCis0KSBEZWZpbmUgYSByZWYgb3BlcmF0aW9uIGNhbGxpbmcga3JlZl9nZXQgb24gdGhpcyBrcmVmCis1KSBEZWZpbmUgYSB1bnJlZiBvcGVyYXRpb24gY2FsbGluZyBrcmVmX3B1dCBvbiB0aGlzIGtyZWYKKzYpIFdoZW4gaXQgaXMgdGltZSB0byBjbGVhbnVwOgorICogRG8gbm90IGtmcmVlKCkgdGhlIHN0cnVjdCBob2xkaW5nIGJvdGgsIHRoZSBsYXN0IGtyZWZfcHV0IHdpbGwgZG8gdGhpcyEKKyAqICpBZnRlciogY2FsbGluZyB3YXRjaGRvZ191bnJlZ2lzdGVyX2RldmljZSgpIGNhbGwga3JlZl9wdXQgb24gdGhlIGtyZWYKKworU29tZSBvcGVyYXRpb25zIGFyZSBtYW5kYXRvcnkgYW5kIHNvbWUgYXJlIG9wdGlvbmFsLiBUaGUgbWFuZGF0b3J5IG9wZXJhdGlvbnMKK2FyZToKKyogc3RhcnQ6IHRoaXMgaXMgYSBwb2ludGVyIHRvIHRoZSByb3V0aW5lIHRoYXQgc3RhcnRzIHRoZSB3YXRjaGRvZyB0aW1lcgorICBkZXZpY2UuCisgIFRoZSByb3V0aW5lIG5lZWRzIGEgcG9pbnRlciB0byB0aGUgd2F0Y2hkb2cgdGltZXIgZGV2aWNlIHN0cnVjdHVyZSBhcyBhCisgIHBhcmFtZXRlci4gSXQgcmV0dXJucyB6ZXJvIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJubyBjb2RlIGZvciBmYWlsdXJlLgorKiBzdG9wOiB3aXRoIHRoaXMgcm91dGluZSB0aGUgd2F0Y2hkb2cgdGltZXIgZGV2aWNlIGlzIGJlaW5nIHN0b3BwZWQuCisgIFRoZSByb3V0aW5lIG5lZWRzIGEgcG9pbnRlciB0byB0aGUgd2F0Y2hkb2cgdGltZXIgZGV2aWNlIHN0cnVjdHVyZSBhcyBhCisgIHBhcmFtZXRlci4gSXQgcmV0dXJucyB6ZXJvIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJubyBjb2RlIGZvciBmYWlsdXJlLgorICBTb21lIHdhdGNoZG9nIHRpbWVyIGhhcmR3YXJlIGNhbiBvbmx5IGJlIHN0YXJ0ZWQgYW5kIG5vdCBiZSBzdG9wcGVkLiBUaGUKKyAgZHJpdmVyIHN1cHBvcnRpbmcgdGhpcyBoYXJkd2FyZSBuZWVkcyB0byBtYWtlIHN1cmUgdGhhdCBhIHN0YXJ0IGFuZCBzdG9wCisgIHJvdXRpbmUgaXMgYmVpbmcgcHJvdmlkZWQuIFRoaXMgY2FuIGJlIGRvbmUgYnkgdXNpbmcgYSB0aW1lciBpbiB0aGUgZHJpdmVyCisgIHRoYXQgcmVndWxhcmx5IHNlbmRzIGEga2VlcGFsaXZlIHBpbmcgdG8gdGhlIHdhdGNoZG9nIHRpbWVyIGhhcmR3YXJlLgorCitOb3QgYWxsIHdhdGNoZG9nIHRpbWVyIGhhcmR3YXJlIHN1cHBvcnRzIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkuIFRoYXQncyB3aHkKK2FsbCBvdGhlciByb3V0aW5lcy9vcGVyYXRpb25zIGFyZSBvcHRpb25hbC4gVGhleSBvbmx5IG5lZWQgdG8gYmUgcHJvdmlkZWQgaWYKK3RoZXkgYXJlIHN1cHBvcnRlZC4gVGhlc2Ugb3B0aW9uYWwgcm91dGluZXMvb3BlcmF0aW9ucyBhcmU6CisqIHBpbmc6IHRoaXMgaXMgdGhlIHJvdXRpbmUgdGhhdCBzZW5kcyBhIGtlZXBhbGl2ZSBwaW5nIHRvIHRoZSB3YXRjaGRvZyB0aW1lcgorICBoYXJkd2FyZS4KKyAgVGhlIHJvdXRpbmUgbmVlZHMgYSBwb2ludGVyIHRvIHRoZSB3YXRjaGRvZyB0aW1lciBkZXZpY2Ugc3RydWN0dXJlIGFzIGEKKyAgcGFyYW1ldGVyLiBJdCByZXR1cm5zIHplcm8gb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm5vIGNvZGUgZm9yIGZhaWx1cmUuCisgIE1vc3QgaGFyZHdhcmUgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgYXMgYSBzZXBhcmF0ZSBmdW5jdGlvbiB1c2VzIHRoZQorICBzdGFydCBmdW5jdGlvbiB0byByZXN0YXJ0IHRoZSB3YXRjaGRvZyB0aW1lciBoYXJkd2FyZS4gQW5kIHRoYXQncyBhbHNvIHdoYXQKKyAgdGhlIHdhdGNoZG9nIHRpbWVyIGRyaXZlciBjb3JlIGRvZXM6IHRvIHNlbmQgYSBrZWVwYWxpdmUgcGluZyB0byB0aGUgd2F0Y2hkb2cKKyAgdGltZXIgaGFyZHdhcmUgaXQgd2lsbCBlaXRoZXIgdXNlIHRoZSBwaW5nIG9wZXJhdGlvbiAod2hlbiBhdmFpbGFibGUpIG9yIHRoZQorICBzdGFydCBvcGVyYXRpb24gKHdoZW4gdGhlIHBpbmcgb3BlcmF0aW9uIGlzIG5vdCBhdmFpbGFibGUpLgorICAoTm90ZTogdGhlIFdESU9DX0tFRVBBTElWRSBpb2N0bCBjYWxsIHdpbGwgb25seSBiZSBhY3RpdmUgd2hlbiB0aGUKKyAgV0RJT0ZfS0VFUEFMSVZFUElORyBiaXQgaGFzIGJlZW4gc2V0IGluIHRoZSBvcHRpb24gZmllbGQgb24gdGhlIHdhdGNoZG9nJ3MKKyAgaW5mbyBzdHJ1Y3R1cmUpLgorKiBzdGF0dXM6IHRoaXMgcm91dGluZSBjaGVja3MgdGhlIHN0YXR1cyBvZiB0aGUgd2F0Y2hkb2cgdGltZXIgZGV2aWNlLiBUaGUKKyAgc3RhdHVzIG9mIHRoZSBkZXZpY2UgaXMgcmVwb3J0ZWQgd2l0aCB3YXRjaGRvZyBXRElPRl8qIHN0YXR1cyBmbGFncy9iaXRzLgorKiBzZXRfdGltZW91dDogdGhpcyByb3V0aW5lIGNoZWNrcyBhbmQgY2hhbmdlcyB0aGUgdGltZW91dCBvZiB0aGUgd2F0Y2hkb2cKKyAgdGltZXIgZGV2aWNlLiBJdCByZXR1cm5zIDAgb24gc3VjY2VzcywgLUVJTlZBTCBmb3IgInBhcmFtZXRlciBvdXQgb2YgcmFuZ2UiCisgIGFuZCAtRUlPIGZvciAiY291bGQgbm90IHdyaXRlIHZhbHVlIHRvIHRoZSB3YXRjaGRvZyIuIE9uIHN1Y2Nlc3MgdGhpcworICByb3V0aW5lIHNob3VsZCBzZXQgdGhlIHRpbWVvdXQgdmFsdWUgb2YgdGhlIHdhdGNoZG9nX2RldmljZSB0byB0aGUKKyAgYWNoaWV2ZWQgdGltZW91dCB2YWx1ZSAod2hpY2ggbWF5IGJlIGRpZmZlcmVudCBmcm9tIHRoZSByZXF1ZXN0ZWQgb25lCisgIGJlY2F1c2UgdGhlIHdhdGNoZG9nIGRvZXMgbm90IG5lY2Vzc2FyaWx5IGhhcyBhIDEgc2Vjb25kIHJlc29sdXRpb24pLgorICAoTm90ZTogdGhlIFdESU9GX1NFVFRJTUVPVVQgbmVlZHMgdG8gYmUgc2V0IGluIHRoZSBvcHRpb25zIGZpZWxkIG9mIHRoZQorICB3YXRjaGRvZydzIGluZm8gc3RydWN0dXJlKS4KKyogZ2V0X3RpbWVsZWZ0OiB0aGlzIHJvdXRpbmVzIHJldHVybnMgdGhlIHRpbWUgdGhhdCdzIGxlZnQgYmVmb3JlIGEgcmVzZXQuCisqIHJlZjogdGhlIG9wZXJhdGlvbiB0aGF0IGNhbGxzIGtyZWZfZ2V0IG9uIHRoZSBrcmVmIG9mIGEgZHluYW1pY2FsbHkKKyAgYWxsb2NhdGVkIHdhdGNoZG9nX2RldmljZSBzdHJ1Y3QuCisqIHVucmVmOiB0aGUgb3BlcmF0aW9uIHRoYXQgY2FsbHMga3JlZl9wdXQgb24gdGhlIGtyZWYgb2YgYSBkeW5hbWljYWxseQorICBhbGxvY2F0ZWQgd2F0Y2hkb2dfZGV2aWNlIHN0cnVjdC4KKyogaW9jdGw6IGlmIHRoaXMgcm91dGluZSBpcyBwcmVzZW50IHRoZW4gaXQgd2lsbCBiZSBjYWxsZWQgZmlyc3QgYmVmb3JlIHdlIGRvCisgIG91ciBvd24gaW50ZXJuYWwgaW9jdGwgY2FsbCBoYW5kbGluZy4gVGhpcyByb3V0aW5lIHNob3VsZCByZXR1cm4gLUVOT0lPQ1RMQ01ECisgIGlmIGEgY29tbWFuZCBpcyBub3Qgc3VwcG9ydGVkLiBUaGUgcGFyYW1ldGVycyB0aGF0IGFyZSBwYXNzZWQgdG8gdGhlIGlvY3RsCisgIGNhbGwgYXJlOiB3YXRjaGRvZ19kZXZpY2UsIGNtZCBhbmQgYXJnLgorCitUaGUgc3RhdHVzIGJpdHMgc2hvdWxkIChwcmVmZXJhYmx5KSBiZSBzZXQgd2l0aCB0aGUgc2V0X2JpdCBhbmQgY2xlYXJfYml0IGFsaWtlCitiaXQtb3BlcmF0aW9ucy4gVGhlIHN0YXR1cyBiaXRzIHRoYXQgYXJlIGRlZmluZWQgYXJlOgorKiBXRE9HX0FDVElWRTogdGhpcyBzdGF0dXMgYml0IGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBhIHdhdGNoZG9nIHRpbWVyIGRldmljZQorICBpcyBhY3RpdmUgb3Igbm90LiBXaGVuIHRoZSB3YXRjaGRvZyBpcyBhY3RpdmUgYWZ0ZXIgYm9vdGluZywgdGhlbiB5b3Ugc2hvdWxkCisgIHNldCB0aGlzIHN0YXR1cyBiaXQgKE5vdGU6IHdoZW4geW91IHJlZ2lzdGVyIHRoZSB3YXRjaGRvZyB0aW1lciBkZXZpY2Ugd2l0aAorICB0aGlzIGJpdCBzZXQsIHRoZW4gb3BlbmluZyAvZGV2L3dhdGNoZG9nIHdpbGwgc2tpcCB0aGUgc3RhcnQgb3BlcmF0aW9uKQorKiBXRE9HX0RFVl9PUEVOOiB0aGlzIHN0YXR1cyBiaXQgc2hvd3Mgd2hldGhlciBvciBub3QgdGhlIHdhdGNoZG9nIGRldmljZQorICB3YXMgb3BlbmVkIHZpYSAvZGV2L3dhdGNoZG9nLgorICAoVGhpcyBiaXQgc2hvdWxkIG9ubHkgYmUgdXNlZCBieSB0aGUgV2F0Y2hEb2cgVGltZXIgRHJpdmVyIENvcmUpLgorKiBXRE9HX0FMTE9XX1JFTEVBU0U6IHRoaXMgYml0IHN0b3JlcyB3aGV0aGVyIG9yIG5vdCB0aGUgbWFnaWMgY2xvc2UgY2hhcmFjdGVyCisgIGhhcyBiZWVuIHNlbnQgKHNvIHRoYXQgd2UgY2FuIHN1cHBvcnQgdGhlIG1hZ2ljIGNsb3NlIGZlYXR1cmUpLgorICAoVGhpcyBiaXQgc2hvdWxkIG9ubHkgYmUgdXNlZCBieSB0aGUgV2F0Y2hEb2cgVGltZXIgRHJpdmVyIENvcmUpLgorKiBXRE9HX05PX1dBWV9PVVQ6IHRoaXMgYml0IHN0b3JlcyB0aGUgbm93YXlvdXQgc2V0dGluZyBmb3IgdGhlIHdhdGNoZG9nLgorICBJZiB0aGlzIGJpdCBpcyBzZXQgdGhlbiB0aGUgd2F0Y2hkb2cgdGltZXIgd2lsbCBub3QgYmUgYWJsZSB0byBzdG9wLgorKiBXRE9HX1VOUkVHSVNURVJFRDogdGhpcyBiaXQgZ2V0cyBzZXQgYnkgdGhlIFdhdGNoRG9nIFRpbWVyIERyaXZlciBDb3JlCisgIGFmdGVyIGNhbGxpbmcgd2F0Y2hkb2dfdW5yZWdpc3Rlcl9kZXZpY2UsIGFuZCB0aGVuIGNoZWNrZWQgYmVmb3JlIGNhbGxpbmcKKyAgYW55IHdhdGNoZG9nX29wcywgc28gdGhhdCB5b3UgY2FuIGJlIHN1cmUgdGhhdCBubyBvcGVyYXRpb25zIChvdGhlciB0aGVuCisgIHVucmVmKSB3aWxsIGdldCBjYWxsZWQgYWZ0ZXIgdW5yZWdpc3RlciwgZXZlbiBpZiB1c2Vyc3BhY2Ugc3RpbGwgaG9sZHMgYQorICByZWZlcmVuY2UgdG8gL2Rldi93YXRjaGRvZworCisgIFRvIHNldCB0aGUgV0RPR19OT19XQVlfT1VUIHN0YXR1cyBiaXQgKGJlZm9yZSByZWdpc3RlcmluZyB5b3VyIHdhdGNoZG9nCisgIHRpbWVyIGRldmljZSkgeW91IGNhbiBlaXRoZXI6CisgICogc2V0IGl0IHN0YXRpY2FsbHkgaW4geW91ciB3YXRjaGRvZ19kZXZpY2Ugc3RydWN0IHdpdGgKKwkuc3RhdHVzID0gV0FUQ0hET0dfTk9XQVlPVVRfSU5JVF9TVEFUVVMsCisgICAgKHRoaXMgd2lsbCBzZXQgdGhlIHZhbHVlIHRoZSBzYW1lIGFzIENPTkZJR19XQVRDSERPR19OT1dBWU9VVCkgb3IKKyAgKiB1c2UgdGhlIGZvbGxvd2luZyBoZWxwZXIgZnVuY3Rpb246CisgIHN0YXRpYyBpbmxpbmUgdm9pZCB3YXRjaGRvZ19zZXRfbm93YXlvdXQoc3RydWN0IHdhdGNoZG9nX2RldmljZSAqd2RkLCBpbnQgbm93YXlvdXQpCisKK05vdGU6IFRoZSBXYXRjaERvZyBUaW1lciBEcml2ZXIgQ29yZSBzdXBwb3J0cyB0aGUgbWFnaWMgY2xvc2UgZmVhdHVyZSBhbmQKK3RoZSBub3dheW91dCBmZWF0dXJlLiBUbyB1c2UgdGhlIG1hZ2ljIGNsb3NlIGZlYXR1cmUgeW91IG11c3Qgc2V0IHRoZQorV0RJT0ZfTUFHSUNDTE9TRSBiaXQgaW4gdGhlIG9wdGlvbnMgZmllbGQgb2YgdGhlIHdhdGNoZG9nJ3MgaW5mbyBzdHJ1Y3R1cmUuCitUaGUgbm93YXlvdXQgZmVhdHVyZSB3aWxsIG92ZXJydWxlIHRoZSBtYWdpYyBjbG9zZSBmZWF0dXJlLgorCitUbyBnZXQgb3Igc2V0IGRyaXZlciBzcGVjaWZpYyBkYXRhIHRoZSBmb2xsb3dpbmcgdHdvIGhlbHBlciBmdW5jdGlvbnMgc2hvdWxkIGJlCit1c2VkOgorCitzdGF0aWMgaW5saW5lIHZvaWQgd2F0Y2hkb2dfc2V0X2RydmRhdGEoc3RydWN0IHdhdGNoZG9nX2RldmljZSAqd2RkLCB2b2lkICpkYXRhKQorc3RhdGljIGlubGluZSB2b2lkICp3YXRjaGRvZ19nZXRfZHJ2ZGF0YShzdHJ1Y3Qgd2F0Y2hkb2dfZGV2aWNlICp3ZGQpCisKK1RoZSB3YXRjaGRvZ19zZXRfZHJ2ZGF0YSBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIGFkZCBkcml2ZXIgc3BlY2lmaWMgZGF0YS4gVGhlCithcmd1bWVudHMgb2YgdGhpcyBmdW5jdGlvbiBhcmUgdGhlIHdhdGNoZG9nIGRldmljZSB3aGVyZSB5b3Ugd2FudCB0byBhZGQgdGhlCitkcml2ZXIgc3BlY2lmaWMgZGF0YSB0byBhbmQgYSBwb2ludGVyIHRvIHRoZSBkYXRhIGl0c2VsZi4KKworVGhlIHdhdGNoZG9nX2dldF9kcnZkYXRhIGZ1bmN0aW9uIGFsbG93cyB5b3UgdG8gcmV0cmlldmUgZHJpdmVyIHNwZWNpZmljIGRhdGEuCitUaGUgYXJndW1lbnQgb2YgdGhpcyBmdW5jdGlvbiBpcyB0aGUgd2F0Y2hkb2cgZGV2aWNlIHdoZXJlIHlvdSB3YW50IHRvIHJldHJpZXZlCitkYXRhIGZyb20uIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBwb2ludGVyIHRvIHRoZSBkcml2ZXIgc3BlY2lmaWMgZGF0YS4KKworVG8gaW5pdGlhbGl6ZSB0aGUgdGltZW91dCBmaWVsZCwgdGhlIGZvbGxvd2luZyBmdW5jdGlvbiBjYW4gYmUgdXNlZDoKKworZXh0ZXJuIGludCB3YXRjaGRvZ19pbml0X3RpbWVvdXQoc3RydWN0IHdhdGNoZG9nX2RldmljZSAqd2RkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB0aW1lb3V0X3Bhcm0sIHN0cnVjdCBkZXZpY2UgKmRldik7CisKK1RoZSB3YXRjaGRvZ19pbml0X3RpbWVvdXQgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byBpbml0aWFsaXplIHRoZSB0aW1lb3V0IGZpZWxkCit1c2luZyB0aGUgbW9kdWxlIHRpbWVvdXQgcGFyYW1ldGVyIG9yIGJ5IHJldHJpZXZpbmcgdGhlIHRpbWVvdXQtc2VjIHByb3BlcnR5IGZyb20KK3RoZSBkZXZpY2UgdHJlZSAoaWYgdGhlIG1vZHVsZSB0aW1lb3V0IHBhcmFtZXRlciBpcyBpbnZhbGlkKS4gQmVzdCBwcmFjdGljZSBpcwordG8gc2V0IHRoZSBkZWZhdWx0IHRpbWVvdXQgdmFsdWUgYXMgdGltZW91dCB2YWx1ZSBpbiB0aGUgd2F0Y2hkb2dfZGV2aWNlIGFuZAordGhlbiB1c2UgdGhpcyBmdW5jdGlvbiB0byBzZXQgdGhlIHVzZXIgInByZWZlcnJlZCIgdGltZW91dCB2YWx1ZS4KK1RoaXMgcm91dGluZSByZXR1cm5zIHplcm8gb24gc3VjY2VzcyBhbmQgYSBuZWdhdGl2ZSBlcnJubyBjb2RlIGZvciBmYWlsdXJlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi93YXRjaGRvZy93YXRjaGRvZy1wYXJhbWV0ZXJzLnR4dCBiL0RvY3VtZW50YXRpb24vd2F0Y2hkb2cvd2F0Y2hkb2ctcGFyYW1ldGVycy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY5ZWM5ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vd2F0Y2hkb2cvd2F0Y2hkb2ctcGFyYW1ldGVycy50eHQKQEAgLTAsMCArMSw0MDIgQEAKK1RoaXMgZmlsZSBwcm92aWRlcyBpbmZvcm1hdGlvbiBvbiB0aGUgbW9kdWxlIHBhcmFtZXRlcnMgb2YgbWFueSBvZgordGhlIExpbnV4IHdhdGNoZG9nIGRyaXZlcnMuICBXYXRjaGRvZyBkcml2ZXIgcGFyYW1ldGVyIHNwZWNzIHNob3VsZAorYmUgbGlzdGVkIGhlcmUgdW5sZXNzIHRoZSBkcml2ZXIgaGFzIGl0cyBvd24gZHJpdmVyLXNwZWNpZmljIGluZm9ybWF0aW9uCitmaWxlLgorCisKK1NlZSBEb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCBmb3IgaW5mb3JtYXRpb24gb24KK3Byb3ZpZGluZyBrZXJuZWwgcGFyYW1ldGVycyBmb3IgYnVpbHRpbiBkcml2ZXJzIHZlcnN1cyBsb2FkYWJsZQorbW9kdWxlcy4KKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCithY3F1aXJld2R0Ogord2R0X3N0b3A6IEFjcXVpcmUgV0RUICdzdG9wJyBpbyBwb3J0IChkZWZhdWx0IDB4NDMpCit3ZHRfc3RhcnQ6IEFjcXVpcmUgV0RUICdzdGFydCcgaW8gcG9ydCAoZGVmYXVsdCAweDQ0MykKK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKKwkoZGVmYXVsdD1rZXJuZWwgY29uZmlnIHBhcmFtZXRlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2FkdmFudGVjaHdkdDoKK3dkdF9zdG9wOiBBZHZhbnRlY2ggV0RUICdzdG9wJyBpbyBwb3J0IChkZWZhdWx0IDB4NDQzKQord2R0X3N0YXJ0OiBBZHZhbnRlY2ggV0RUICdzdGFydCcgaW8gcG9ydCAoZGVmYXVsdCAweDQ0MykKK3RpbWVvdXQ6IFdhdGNoZG9nIHRpbWVvdXQgaW4gc2Vjb25kcy4gMTw9IHRpbWVvdXQgPD02MywgZGVmYXVsdD02MC4KK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKKwkoZGVmYXVsdD1rZXJuZWwgY29uZmlnIHBhcmFtZXRlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2FsaW0xNTM1X3dkdDoKK3RpbWVvdXQ6IFdhdGNoZG9nIHRpbWVvdXQgaW4gc2Vjb25kcy4gKDAgPCB0aW1lb3V0IDwgMTgwMDAsIGRlZmF1bHQ9NjAKK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKKwkoZGVmYXVsdD1rZXJuZWwgY29uZmlnIHBhcmFtZXRlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2FsaW03MTAxX3dkdDoKK3RpbWVvdXQ6IFdhdGNoZG9nIHRpbWVvdXQgaW4gc2Vjb25kcy4gKDE8PXRpbWVvdXQ8PTM2MDAsIGRlZmF1bHQ9MzAKK3VzZV9ncGlvOiBVc2UgdGhlIGdwaW8gd2F0Y2hkb2cgKHJlcXVpcmVkIGJ5IG9sZCBjb2JhbHQgYm9hcmRzKS4KKwlkZWZhdWx0PTAvb2ZmL25vCitub3dheW91dDogV2F0Y2hkb2cgY2Fubm90IGJlIHN0b3BwZWQgb25jZSBzdGFydGVkCisJKGRlZmF1bHQ9a2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCithcjdfd2R0OgorbWFyZ2luOiBXYXRjaGRvZyBtYXJnaW4gaW4gc2Vjb25kcyAoZGVmYXVsdD02MCkKK25vd2F5b3V0OiBEaXNhYmxlIHdhdGNoZG9nIHNodXRkb3duIG9uIGNsb3NlCisJKGRlZmF1bHQ9a2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCithdDMyYXA3MDB4X3dkdDoKK3RpbWVvdXQ6IFRpbWVvdXQgdmFsdWUuIExpbWl0ZWQgdG8gYmUgMSBvciAyIHNlY29uZHMuIChkZWZhdWx0PTIpCitub3dheW91dDogV2F0Y2hkb2cgY2Fubm90IGJlIHN0b3BwZWQgb25jZSBzdGFydGVkCisJKGRlZmF1bHQ9a2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCithdDkxcm05MjAwX3dkdDoKK3dkdF90aW1lOiBXYXRjaGRvZyB0aW1lIGluIHNlY29uZHMuIChkZWZhdWx0PTUpCitub3dheW91dDogV2F0Y2hkb2cgY2Fubm90IGJlIHN0b3BwZWQgb25jZSBzdGFydGVkCisJKGRlZmF1bHQ9a2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCithdDkxc2FtOV93ZHQ6CitoZWFydGJlYXQ6IFdhdGNoZG9nIGhlYXJ0YmVhdHMgaW4gc2Vjb25kcy4gKGRlZmF1bHQgPSAxNSkKK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKKwkoZGVmYXVsdD1rZXJuZWwgY29uZmlnIHBhcmFtZXRlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2JjbTQ3eHhfd2R0Ogord2R0X3RpbWU6IFdhdGNoZG9nIHRpbWUgaW4gc2Vjb25kcy4gKGRlZmF1bHQ9MzApCitub3dheW91dDogV2F0Y2hkb2cgY2Fubm90IGJlIHN0b3BwZWQgb25jZSBzdGFydGVkCisJKGRlZmF1bHQ9a2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitiZmluX3dkdDoKK3RpbWVvdXQ6IFdhdGNoZG9nIHRpbWVvdXQgaW4gc2Vjb25kcy4gKDE8PXRpbWVvdXQ8PSgoMl4zMikvU0NMSyksIGRlZmF1bHQ9MjApCitub3dheW91dDogV2F0Y2hkb2cgY2Fubm90IGJlIHN0b3BwZWQgb25jZSBzdGFydGVkCisJKGRlZmF1bHQ9a2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitjb2g5MDEzMjdfd2R0OgorbWFyZ2luOiBXYXRjaGRvZyBtYXJnaW4gaW4gc2Vjb25kcyAoZGVmYXVsdCA2MHMpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitjcHU1d2R0OgorcG9ydDogYmFzZSBhZGRyZXNzIG9mIHdhdGNoZG9nIGNhcmQsIGRlZmF1bHQgaXMgMHg5MQordmVyYm9zZTogYmUgdmVyYm9zZSwgZGVmYXVsdCBpcyAwIChubykKK3RpY2tzOiBjb3VudCBkb3duIHRpY2tzLCBkZWZhdWx0IGlzIDEwMDAwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitjcHdkOgord2QwX3RpbWVvdXQ6IERlZmF1bHQgd2F0Y2hkb2cwIHRpbWVvdXQgaW4gMS8xMHNlY3MKK3dkMV90aW1lb3V0OiBEZWZhdWx0IHdhdGNoZG9nMSB0aW1lb3V0IGluIDEvMTBzZWNzCit3ZDJfdGltZW91dDogRGVmYXVsdCB3YXRjaGRvZzIgdGltZW91dCBpbiAxLzEwc2VjcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZGE5MDUyd2R0OgordGltZW91dDogV2F0Y2hkb2cgdGltZW91dCBpbiBzZWNvbmRzLiAyPD0gdGltZW91dCA8PTEzMSwgZGVmYXVsdD0yLjA0OHMKK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKKwkoZGVmYXVsdD1rZXJuZWwgY29uZmlnIHBhcmFtZXRlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RhdmluY2lfd2R0OgoraGVhcnRiZWF0OiBXYXRjaGRvZyBoZWFydGJlYXQgcGVyaW9kIGluIHNlY29uZHMgZnJvbSAxIHRvIDYwMCwgZGVmYXVsdCA2MAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZXA5M3h4X3dkdDoKK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKK3RpbWVvdXQ6IFdhdGNoZG9nIHRpbWVvdXQgaW4gc2Vjb25kcy4gKDE8PXRpbWVvdXQ8PTM2MDAsIGRlZmF1bHQ9VEJEKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZXVyb3RlY2h3ZHQ6Citub3dheW91dDogV2F0Y2hkb2cgY2Fubm90IGJlIHN0b3BwZWQgb25jZSBzdGFydGVkCisJKGRlZmF1bHQ9a2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIpCitpbzogRXVyb3RlY2ggV0RUIGlvIHBvcnQgKGRlZmF1bHQ9MHgzZjApCitpcnE6IEV1cm90ZWNoIFdEVCBpcnEgKGRlZmF1bHQ9MTApCitldjogRXVyb3RlY2ggV0RUIGV2ZW50IHR5cGUgKGRlZmF1bHQgaXMgYGludCcpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitnZWZfd2R0Ogorbm93YXlvdXQ6IFdhdGNoZG9nIGNhbm5vdCBiZSBzdG9wcGVkIG9uY2Ugc3RhcnRlZAorCShkZWZhdWx0PWtlcm5lbCBjb25maWcgcGFyYW1ldGVyKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZ2VvZGV3ZHQ6Cit0aW1lb3V0OiBXYXRjaGRvZyB0aW1lb3V0IGluIHNlY29uZHMuIDE8PSB0aW1lb3V0IDw9MTMxLCBkZWZhdWx0PTYwLgorbm93YXlvdXQ6IFdhdGNoZG9nIGNhbm5vdCBiZSBzdG9wcGVkIG9uY2Ugc3RhcnRlZAorCShkZWZhdWx0PWtlcm5lbCBjb25maWcgcGFyYW1ldGVyKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoraTYzMDBlc2I6CitoZWFydGJlYXQ6IFdhdGNoZG9nIGhlYXJ0YmVhdCBpbiBzZWNvbmRzLiAoMTxoZWFydGJlYXQ8MjA0NiwgZGVmYXVsdD0zMCkKK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKKwkoZGVmYXVsdD1rZXJuZWwgY29uZmlnIHBhcmFtZXRlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2lUQ09fd2R0OgoraGVhcnRiZWF0OiBXYXRjaGRvZyBoZWFydGJlYXQgaW4gc2Vjb25kcy4KKwkoMjxoZWFydGJlYXQ8MzkgKFRDTyB2MSkgb3IgNjEzIChUQ08gdjIpLCBkZWZhdWx0PTMwKQorbm93YXlvdXQ6IFdhdGNoZG9nIGNhbm5vdCBiZSBzdG9wcGVkIG9uY2Ugc3RhcnRlZAorCShkZWZhdWx0PWtlcm5lbCBjb25maWcgcGFyYW1ldGVyKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoraVRDT192ZW5kb3Jfc3VwcG9ydDoKK3ZlbmRvcnN1cHBvcnQ6IGlUQ08gdmVuZG9yIHNwZWNpZmljIHN1cHBvcnQgbW9kZSwgZGVmYXVsdD0wIChub25lKSwKKwkxPVN1cGVyTWljcm8gUGVudDMsIDI9U3VwZXJNaWNybyBQZW50NCssIDkxMT1Ccm9rZW4gU01JIEJJT1MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2liNzAwd2R0OgordGltZW91dDogV2F0Y2hkb2cgdGltZW91dCBpbiBzZWNvbmRzLiAwPD0gdGltZW91dCA8PTMwLCBkZWZhdWx0PTMwLgorbm93YXlvdXQ6IFdhdGNoZG9nIGNhbm5vdCBiZSBzdG9wcGVkIG9uY2Ugc3RhcnRlZAorCShkZWZhdWx0PWtlcm5lbCBjb25maWcgcGFyYW1ldGVyKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoraWJtYXNyOgorbm93YXlvdXQ6IFdhdGNoZG9nIGNhbm5vdCBiZSBzdG9wcGVkIG9uY2Ugc3RhcnRlZAorCShkZWZhdWx0PWtlcm5lbCBjb25maWcgcGFyYW1ldGVyKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoraW14Ml93ZHQ6Cit0aW1lb3V0OiBXYXRjaGRvZyB0aW1lb3V0IGluIHNlY29uZHMgKGRlZmF1bHQgNjAgcykKK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKKwkoZGVmYXVsdD1rZXJuZWwgY29uZmlnIHBhcmFtZXRlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2luZHlkb2c6Citub3dheW91dDogV2F0Y2hkb2cgY2Fubm90IGJlIHN0b3BwZWQgb25jZSBzdGFydGVkCisJKGRlZmF1bHQ9a2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitpb3Bfd2R0Ogorbm93YXlvdXQ6IFdhdGNoZG9nIGNhbm5vdCBiZSBzdG9wcGVkIG9uY2Ugc3RhcnRlZAorCShkZWZhdWx0PWtlcm5lbCBjb25maWcgcGFyYW1ldGVyKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoraXQ4NzEyZl93ZHQ6CittYXJnaW46IFdhdGNoZG9nIG1hcmdpbiBpbiBzZWNvbmRzIChkZWZhdWx0IDYwKQorbm93YXlvdXQ6IERpc2FibGUgd2F0Y2hkb2cgc2h1dGRvd24gb24gY2xvc2UKKwkoZGVmYXVsdD1rZXJuZWwgY29uZmlnIHBhcmFtZXRlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2l0ODdfd2R0Ogorbm9nYW1lcG9ydDogRm9yYmlkIHRoZSBhY3RpdmF0aW9uIG9mIGdhbWUgcG9ydCwgZGVmYXVsdD0wCitub2NpcjogRm9yYmlkIHRoZSB1c2Ugb2YgQ0lSICh3b3JrYXJvdW5kIGZvciBzb21lIGJ1Z2d5IHNldHVwcyk7IHNldCB0byAxIGlmCitzeXN0ZW0gcmVzZXRzIGRlc3BpdGUgd2F0Y2hkb2cgZGFlbW9uIHJ1bm5pbmcsIGRlZmF1bHQ9MAorZXhjbHVzaXZlOiBXYXRjaGRvZyBleGNsdXNpdmUgZGV2aWNlIG9wZW4sIGRlZmF1bHQ9MQordGltZW91dDogV2F0Y2hkb2cgdGltZW91dCBpbiBzZWNvbmRzLCBkZWZhdWx0PTYwCit0ZXN0bW9kZTogV2F0Y2hkb2cgdGVzdCBtb2RlICgxID0gbm8gcmVib290KSwgZGVmYXVsdD0wCitub3dheW91dDogV2F0Y2hkb2cgY2Fubm90IGJlIHN0b3BwZWQgb25jZSBzdGFydGVkCisJKGRlZmF1bHQ9a2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitpeHAyMDAwX3dkdDoKK2hlYXJ0YmVhdDogV2F0Y2hkb2cgaGVhcnRiZWF0IGluIHNlY29uZHMgKGRlZmF1bHQgNjBzKQorbm93YXlvdXQ6IFdhdGNoZG9nIGNhbm5vdCBiZSBzdG9wcGVkIG9uY2Ugc3RhcnRlZAorCShkZWZhdWx0PWtlcm5lbCBjb25maWcgcGFyYW1ldGVyKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoraXhwNHh4X3dkdDoKK2hlYXJ0YmVhdDogV2F0Y2hkb2cgaGVhcnRiZWF0IGluIHNlY29uZHMgKGRlZmF1bHQgNjBzKQorbm93YXlvdXQ6IFdhdGNoZG9nIGNhbm5vdCBiZSBzdG9wcGVkIG9uY2Ugc3RhcnRlZAorCShkZWZhdWx0PWtlcm5lbCBjb25maWcgcGFyYW1ldGVyKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQora3M4Njk1X3dkdDoKK3dkdF90aW1lOiBXYXRjaGRvZyB0aW1lIGluIHNlY29uZHMuIChkZWZhdWx0PTUpCitub3dheW91dDogV2F0Y2hkb2cgY2Fubm90IGJlIHN0b3BwZWQgb25jZSBzdGFydGVkCisJKGRlZmF1bHQ9a2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittYWNoendkOgorbm93YXlvdXQ6IFdhdGNoZG9nIGNhbm5vdCBiZSBzdG9wcGVkIG9uY2Ugc3RhcnRlZAorCShkZWZhdWx0PWtlcm5lbCBjb25maWcgcGFyYW1ldGVyKQorYWN0aW9uOiBhZnRlciB3YXRjaGRvZyByZXNldHMsIGdlbmVyYXRlOgorCTAgPSBSRVNFVCgqKSAgMSA9IFNNSSAgMiA9IE5NSSAgMyA9IFNDSQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbWF4NjN4eF93ZHQ6CitoZWFydGJlYXQ6IFdhdGNoZG9nIGhlYXJ0YmVhdCBwZXJpb2QgaW4gc2Vjb25kcyBmcm9tIDEgdG8gNjAsIGRlZmF1bHQgNjAKK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKKwkoZGVmYXVsdD1rZXJuZWwgY29uZmlnIHBhcmFtZXRlcikKK25vZGVsYXk6IEZvcmNlIHNlbGVjdGlvbiBvZiBhIHRpbWVvdXQgc2V0dGluZyB3aXRob3V0IGluaXRpYWwgZGVsYXkKKwkobWF4NjM3My83NCBvbmx5LCBkZWZhdWx0PTApCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittaXhjb213ZDoKK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKKwkoZGVmYXVsdD1rZXJuZWwgY29uZmlnIHBhcmFtZXRlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK21wYzh4eHhfd2R0OgordGltZW91dDogV2F0Y2hkb2cgdGltZW91dCBpbiB0aWNrcy4gKDA8dGltZW91dDw2NTUzNiwgZGVmYXVsdD02NTUzNSkKK3Jlc2V0OiBXYXRjaGRvZyBJbnRlcnJ1cHQvUmVzZXQgTW9kZS4gMCA9IGludGVycnVwdCwgMSA9IHJlc2V0Citub3dheW91dDogV2F0Y2hkb2cgY2Fubm90IGJlIHN0b3BwZWQgb25jZSBzdGFydGVkCisJKGRlZmF1bHQ9a2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittdjY0eDYwX3dkdDoKK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKKwkoZGVmYXVsdD1rZXJuZWwgY29uZmlnIHBhcmFtZXRlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK251YzkwMF93ZHQ6CitoZWFydGJlYXQ6IFdhdGNoZG9nIGhlYXJ0YmVhdHMgaW4gc2Vjb25kcy4KKwkoZGVmYXVsdCA9IDE1KQorbm93YXlvdXQ6IFdhdGNoZG9nIGNhbm5vdCBiZSBzdG9wcGVkIG9uY2Ugc3RhcnRlZAorCShkZWZhdWx0PWtlcm5lbCBjb25maWcgcGFyYW1ldGVyKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorb21hcF93ZHQ6Cit0aW1lcl9tYXJnaW46IGluaXRpYWwgd2F0Y2hkb2cgdGltZW91dCAoaW4gc2Vjb25kcykKK2Vhcmx5X2VuYWJsZTogV2F0Y2hkb2cgaXMgc3RhcnRlZCBvbiBtb2R1bGUgaW5zZXJ0aW9uIChkZWZhdWx0PTAKK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKKwkoZGVmYXVsdD1rZXJuZWwgY29uZmlnIHBhcmFtZXRlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK29yaW9uX3dkdDoKK2hlYXJ0YmVhdDogSW5pdGlhbCB3YXRjaGRvZyBoZWFydGJlYXQgaW4gc2Vjb25kcworbm93YXlvdXQ6IFdhdGNoZG9nIGNhbm5vdCBiZSBzdG9wcGVkIG9uY2Ugc3RhcnRlZAorCShkZWZhdWx0PWtlcm5lbCBjb25maWcgcGFyYW1ldGVyKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorcGM4NzQxM193ZHQ6CitpbzogcGM4NzQxMyBXRFQgSS9PIHBvcnQgKGRlZmF1bHQ6IGlvKS4KK3RpbWVvdXQ6IFdhdGNoZG9nIHRpbWVvdXQgaW4gbWludXRlcyAoZGVmYXVsdD10aW1lb3V0KS4KK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKKwkoZGVmYXVsdD1rZXJuZWwgY29uZmlnIHBhcmFtZXRlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3Bpa2Ffd2R0OgoraGVhcnRiZWF0OiBXYXRjaGRvZyBoZWFydGJlYXRzIGluIHNlY29uZHMuIChkZWZhdWx0ID0gMTUpCitub3dheW91dDogV2F0Y2hkb2cgY2Fubm90IGJlIHN0b3BwZWQgb25jZSBzdGFydGVkCisJKGRlZmF1bHQ9a2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitwbng0MDA4X3dkdDoKK2hlYXJ0YmVhdDogV2F0Y2hkb2cgaGVhcnRiZWF0IHBlcmlvZCBpbiBzZWNvbmRzIGZyb20gMSB0byA2MCwgZGVmYXVsdCAxOQorbm93YXlvdXQ6IFNldCB0byAxIHRvIGtlZXAgd2F0Y2hkb2cgcnVubmluZyBhZnRlciBkZXZpY2UgcmVsZWFzZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorcG54ODMzeF93ZHQ6Cit0aW1lb3V0OiBXYXRjaGRvZyB0aW1lb3V0IGluIE1oei4gKDY4TWh6IGNsb2NrKSwgZGVmYXVsdD0yMDQwMDAwMDAwICgzMCBzZWNvbmRzKQorbm93YXlvdXQ6IFdhdGNoZG9nIGNhbm5vdCBiZSBzdG9wcGVkIG9uY2Ugc3RhcnRlZAorCShkZWZhdWx0PWtlcm5lbCBjb25maWcgcGFyYW1ldGVyKQorc3RhcnRfZW5hYmxlZDogV2F0Y2hkb2cgaXMgc3RhcnRlZCBvbiBtb2R1bGUgaW5zZXJ0aW9uIChkZWZhdWx0PTEpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCityYzMyNDM0X3dkdDoKK3RpbWVvdXQ6IFdhdGNoZG9nIHRpbWVvdXQgdmFsdWUsIGluIHNlY29uZHMgKGRlZmF1bHQ9MjApCitub3dheW91dDogV2F0Y2hkb2cgY2Fubm90IGJlIHN0b3BwZWQgb25jZSBzdGFydGVkCisJKGRlZmF1bHQ9a2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCityaW93ZDoKK3Jpb3dkX3RpbWVvdXQ6IFdhdGNoZG9nIHRpbWVvdXQgaW4gbWludXRlcyAoZGVmYXVsdD0xKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorczNjMjQxMF93ZHQ6Cit0bXJfbWFyZ2luOiBXYXRjaGRvZyB0bXJfbWFyZ2luIGluIHNlY29uZHMuIChkZWZhdWx0PTE1KQordG1yX2F0Ym9vdDogV2F0Y2hkb2cgaXMgc3RhcnRlZCBhdCBib290IHRpbWUgaWYgc2V0IHRvIDEsIGRlZmF1bHQ9MAorbm93YXlvdXQ6IFdhdGNoZG9nIGNhbm5vdCBiZSBzdG9wcGVkIG9uY2Ugc3RhcnRlZAorCShkZWZhdWx0PWtlcm5lbCBjb25maWcgcGFyYW1ldGVyKQorc29mdF9ub2Jvb3Q6IFdhdGNoZG9nIGFjdGlvbiwgc2V0IHRvIDEgdG8gaWdub3JlIHJlYm9vdHMsIDAgdG8gcmVib290CitkZWJ1ZzogV2F0Y2hkb2cgZGVidWcsIHNldCB0byA+MSBmb3IgZGVidWcsIChkZWZhdWx0IDApCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzYTExMDBfd2R0OgorbWFyZ2luOiBXYXRjaGRvZyBtYXJnaW4gaW4gc2Vjb25kcyAoZGVmYXVsdCA2MHMpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzYl93ZG9nOgordGltZW91dDogV2F0Y2hkb2cgdGltZW91dCBpbiBtaWNyb3NlY29uZHMgKG1heC9kZWZhdWx0IDgzODg2MDcgb3IgOC4zaXNoIHNlY3MpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzYmM2MHh4d2R0Ogord2R0X3N0b3A6IFNCQzYweHggV0RUICdzdG9wJyBpbyBwb3J0IChkZWZhdWx0IDB4NDUpCit3ZHRfc3RhcnQ6IFNCQzYweHggV0RUICdzdGFydCcgaW8gcG9ydCAoZGVmYXVsdCAweDQ0MykKK3RpbWVvdXQ6IFdhdGNoZG9nIHRpbWVvdXQgaW4gc2Vjb25kcy4gKDE8PXRpbWVvdXQ8PTM2MDAsIGRlZmF1bHQ9MzApCitub3dheW91dDogV2F0Y2hkb2cgY2Fubm90IGJlIHN0b3BwZWQgb25jZSBzdGFydGVkCisJKGRlZmF1bHQ9a2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzYmM3MjQwX3dkdDoKK3RpbWVvdXQ6IFdhdGNoZG9nIHRpbWVvdXQgaW4gc2Vjb25kcy4gKDE8PXRpbWVvdXQ8PTI1NSwgZGVmYXVsdD0zMCkKK25vd2F5b3V0OiBEaXNhYmxlIHdhdGNoZG9nIHdoZW4gY2xvc2luZyBkZXZpY2UgZmlsZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorc2JjODM2MDoKK3RpbWVvdXQ6IEluZGV4IGludG8gdGltZW91dCB0YWJsZSAoMC02MykgKGRlZmF1bHQ9MjcgKDYwcykpCitub3dheW91dDogV2F0Y2hkb2cgY2Fubm90IGJlIHN0b3BwZWQgb25jZSBzdGFydGVkCisJKGRlZmF1bHQ9a2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzYmNfZXB4X2MzOgorbm93YXlvdXQ6IFdhdGNoZG9nIGNhbm5vdCBiZSBzdG9wcGVkIG9uY2Ugc3RhcnRlZAorCShkZWZhdWx0PWtlcm5lbCBjb25maWcgcGFyYW1ldGVyKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorc2JjX2ZpdHBjMl93ZHQ6CittYXJnaW46IFdhdGNoZG9nIG1hcmdpbiBpbiBzZWNvbmRzIChkZWZhdWx0IDYwcykKK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3NjMTIwMHdkdDoKK2lzYXBucDogV2hlbiBzZXQgdG8gMCBkcml2ZXIgSVNBIFBuUCBzdXBwb3J0IHdpbGwgYmUgZGlzYWJsZWQgKGRlZmF1bHQ9MSkKK2lvOiBpbyBwb3J0Cit0aW1lb3V0OiByYW5nZSBpcyAwLTI1NSBtaW51dGVzLCBkZWZhdWx0IGlzIDEKK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKKwkoZGVmYXVsdD1rZXJuZWwgY29uZmlnIHBhcmFtZXRlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3NjNTIwX3dkdDoKK3RpbWVvdXQ6IFdhdGNoZG9nIHRpbWVvdXQgaW4gc2Vjb25kcy4gKDEgPD0gdGltZW91dCA8PSAzNjAwLCBkZWZhdWx0PTMwKQorbm93YXlvdXQ6IFdhdGNoZG9nIGNhbm5vdCBiZSBzdG9wcGVkIG9uY2Ugc3RhcnRlZAorCShkZWZhdWx0PWtlcm5lbCBjb25maWcgcGFyYW1ldGVyKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorc2NoMzExeF93ZHQ6Citmb3JjZV9pZDogT3ZlcnJpZGUgdGhlIGRldGVjdGVkIGRldmljZSBJRAordGhlcm1fdHJpcDogU2hvdWxkIGEgVGhlcm1UcmlwIHRyaWdnZXIgdGhlIHJlc2V0IGdlbmVyYXRvcgordGltZW91dDogV2F0Y2hkb2cgdGltZW91dCBpbiBzZWNvbmRzLiAxPD0gdGltZW91dCA8PTE1MzAwLCBkZWZhdWx0PTYwCitub3dheW91dDogV2F0Y2hkb2cgY2Fubm90IGJlIHN0b3BwZWQgb25jZSBzdGFydGVkCisJKGRlZmF1bHQ9a2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzY3gyMDBfd2R0OgorbWFyZ2luOiBXYXRjaGRvZyBtYXJnaW4gaW4gc2Vjb25kcworbm93YXlvdXQ6IERpc2FibGUgd2F0Y2hkb2cgc2h1dGRvd24gb24gY2xvc2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3Nod2R0OgorY2xvY2tfZGl2aXNpb25fcmF0aW86IENsb2NrIGRpdmlzaW9uIHJhdGlvLiBWYWxpZCByYW5nZXMgYXJlIGZyb20gMHg1ICgxLjMxbXMpCisJdG8gMHg3ICg1LjI1bXMpLiAoZGVmYXVsdD03KQoraGVhcnRiZWF0OiBXYXRjaGRvZyBoZWFydGJlYXQgaW4gc2Vjb25kcy4gKDEgPD0gaGVhcnRiZWF0IDw9IDM2MDAsIGRlZmF1bHQ9MzAKK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKKwkoZGVmYXVsdD1rZXJuZWwgY29uZmlnIHBhcmFtZXRlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3Ntc2MzN2I3ODdfd2R0OgordGltZW91dDogcmFuZ2UgaXMgMS0yNTUgdW5pdHMsIGRlZmF1bHQgaXMgNjAKK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKKwkoZGVmYXVsdD1rZXJuZWwgY29uZmlnIHBhcmFtZXRlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3NvZnRkb2c6Citzb2Z0X21hcmdpbjogV2F0Y2hkb2cgc29mdF9tYXJnaW4gaW4gc2Vjb25kcy4KKwkoMCA8IHNvZnRfbWFyZ2luIDwgNjU1MzYsIGRlZmF1bHQ9NjApCitub3dheW91dDogV2F0Y2hkb2cgY2Fubm90IGJlIHN0b3BwZWQgb25jZSBzdGFydGVkCisJKGRlZmF1bHQ9a2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIpCitzb2Z0X25vYm9vdDogU29mdGRvZyBhY3Rpb24sIHNldCB0byAxIHRvIGlnbm9yZSByZWJvb3RzLCAwIHRvIHJlYm9vdAorCShkZWZhdWx0PTApCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdG1wM3h4eF93ZHQ6CitoZWFydGJlYXQ6IFdhdGNoZG9nIGhlYXJ0YmVhdCBwZXJpb2QgaW4gc2Vjb25kcyBmcm9tIDEgdG8gNDE5NDMwNCwgZGVmYXVsdCAxOQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordGVncmFfd2R0OgoraGVhcnRiZWF0OiBXYXRjaGRvZyBoZWFydGJlYXRzIGluIHNlY29uZHMuIChkZWZhdWx0ID0gMTIwKQorbm93YXlvdXQ6IFdhdGNoZG9nIGNhbm5vdCBiZSBzdG9wcGVkIG9uY2Ugc3RhcnRlZAorCShkZWZhdWx0PWtlcm5lbCBjb25maWcgcGFyYW1ldGVyKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordHM3Mnh4X3dkdDoKK3RpbWVvdXQ6IFdhdGNoZG9nIHRpbWVvdXQgaW4gc2Vjb25kcy4gKDEgPD0gdGltZW91dCA8PSA4LCBkZWZhdWx0PTgpCitub3dheW91dDogRGlzYWJsZSB3YXRjaGRvZyBzaHV0ZG93biBvbiBjbG9zZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordHdsNDAzMF93ZHQ6Citub3dheW91dDogV2F0Y2hkb2cgY2Fubm90IGJlIHN0b3BwZWQgb25jZSBzdGFydGVkCisJKGRlZmF1bHQ9a2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit0eHg5d2R0OgordGltZW91dDogV2F0Y2hkb2cgdGltZW91dCBpbiBzZWNvbmRzLiAoMDx0aW1lb3V0PE4sIGRlZmF1bHQ9NjApCitub3dheW91dDogV2F0Y2hkb2cgY2Fubm90IGJlIHN0b3BwZWQgb25jZSBzdGFydGVkCisJKGRlZmF1bHQ9a2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit3ODM2MjdoZl93ZHQ6Cit3ZHRfaW86IHc4MzYyN2hmL3RoZiBXRFQgaW8gcG9ydCAoZGVmYXVsdCAweDJFKQordGltZW91dDogV2F0Y2hkb2cgdGltZW91dCBpbiBzZWNvbmRzLiAxIDw9IHRpbWVvdXQgPD0gMjU1LCBkZWZhdWx0PTYwLgorbm93YXlvdXQ6IFdhdGNoZG9nIGNhbm5vdCBiZSBzdG9wcGVkIG9uY2Ugc3RhcnRlZAorCShkZWZhdWx0PWtlcm5lbCBjb25maWcgcGFyYW1ldGVyKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordzgzNjk3aGZfd2R0Ogord2R0X2lvOiB3ODM2OTdoZi9oZyBXRFQgaW8gcG9ydCAoZGVmYXVsdCAweDJlLCAwID0gYXV0b2RldGVjdCkKK3RpbWVvdXQ6IFdhdGNoZG9nIHRpbWVvdXQgaW4gc2Vjb25kcy4gMTw9IHRpbWVvdXQgPD0yNTUgKGRlZmF1bHQ9NjApCitub3dheW91dDogV2F0Y2hkb2cgY2Fubm90IGJlIHN0b3BwZWQgb25jZSBzdGFydGVkCisJKGRlZmF1bHQ9a2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIpCitlYXJseV9kaXNhYmxlOiBXYXRjaGRvZyBnZXRzIGRpc2FibGVkIGF0IGJvb3QgdGltZSAoZGVmYXVsdD0xKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordzgzNjk3dWdfd2R0Ogord2R0X2lvOiB3ODM2OTd1Zy91ZiBXRFQgaW8gcG9ydCAoZGVmYXVsdCAweDJlKQordGltZW91dDogV2F0Y2hkb2cgdGltZW91dCBpbiBzZWNvbmRzLiAxPD0gdGltZW91dCA8PTI1NSAoZGVmYXVsdD02MCkKK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKKwkoZGVmYXVsdD1rZXJuZWwgY29uZmlnIHBhcmFtZXRlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3c4Mzg3N2Zfd2R0OgordGltZW91dDogV2F0Y2hkb2cgdGltZW91dCBpbiBzZWNvbmRzLiAoMTw9dGltZW91dDw9MzYwMCwgZGVmYXVsdD0zMCkKK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKKwkoZGVmYXVsdD1rZXJuZWwgY29uZmlnIHBhcmFtZXRlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3c4Mzk3N2Zfd2R0OgordGltZW91dDogV2F0Y2hkb2cgdGltZW91dCBpbiBzZWNvbmRzICgxNS4uNzYzNSksIGRlZmF1bHQ9NDUpCit0ZXN0bW9kZTogV2F0Y2hkb2cgdGVzdG1vZGUgKDEgPSBubyByZWJvb3QpLCBkZWZhdWx0PTAKK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKKwkoZGVmYXVsdD1rZXJuZWwgY29uZmlnIHBhcmFtZXRlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3dhZmVyNTgyM3dkdDoKK3RpbWVvdXQ6IFdhdGNoZG9nIHRpbWVvdXQgaW4gc2Vjb25kcy4gMSA8PSB0aW1lb3V0IDw9IDI1NSwgZGVmYXVsdD02MC4KK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKKwkoZGVmYXVsdD1rZXJuZWwgY29uZmlnIHBhcmFtZXRlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3dkdDI4NToKK3NvZnRfbWFyZ2luOiBXYXRjaGRvZyB0aW1lb3V0IGluIHNlY29uZHMgKGRlZmF1bHQ9NjApCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit3ZHQ5Nzc6Cit0aW1lb3V0OiBXYXRjaGRvZyB0aW1lb3V0IGluIHNlY29uZHMgKDYwLi4xNTMwMCwgZGVmYXVsdD02MCkKK3Rlc3Rtb2RlOiBXYXRjaGRvZyB0ZXN0bW9kZSAoMSA9IG5vIHJlYm9vdCksIGRlZmF1bHQ9MAorbm93YXlvdXQ6IFdhdGNoZG9nIGNhbm5vdCBiZSBzdG9wcGVkIG9uY2Ugc3RhcnRlZAorCShkZWZhdWx0PWtlcm5lbCBjb25maWcgcGFyYW1ldGVyKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQord204MzF4X3dkdDoKK25vd2F5b3V0OiBXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQKKwkoZGVmYXVsdD1rZXJuZWwgY29uZmlnIHBhcmFtZXRlcikKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3dtODM1MF93ZHQ6Citub3dheW91dDogV2F0Y2hkb2cgY2Fubm90IGJlIHN0b3BwZWQgb25jZSBzdGFydGVkCisJKGRlZmF1bHQ9a2VybmVsIGNvbmZpZyBwYXJhbWV0ZXIpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3dhdGNoZG9nL3dkdC50eHQgYi9Eb2N1bWVudGF0aW9uL3dhdGNoZG9nL3dkdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDYxYzJlMwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vd2F0Y2hkb2cvd2R0LnR4dApAQCAtMCwwICsxLDUwIEBACitMYXN0IFJldmlld2VkOiAxMC8wNS8yMDA3CisKKwlXRFQgV2F0Y2hkb2cgVGltZXIgSW50ZXJmYWNlcyBGb3IgVGhlIExpbnV4IE9wZXJhdGluZyBTeXN0ZW0KKwkJQWxhbiBDb3ggPGFsYW5AbHhvcmd1ay51a3V1Lm9yZy51az4KKworCUlDUwlXRFQ1MDEtUAorCUlDUwlXRFQ1MDEtUCAobm8gZmFuIHRhY2hvbWV0ZXIpCisJSUNTCVdEVDUwMC1QCisKK0FsbCB0aGUgaW50ZXJmYWNlcyBwcm92aWRlIC9kZXYvd2F0Y2hkb2csIHdoaWNoIHdoZW4gb3BlbiBtdXN0IGJlIHdyaXR0ZW4KK3RvIHdpdGhpbiBhIHRpbWVvdXQgb3IgdGhlIG1hY2hpbmUgd2lsbCByZWJvb3QuIEVhY2ggd3JpdGUgZGVsYXlzIHRoZSByZWJvb3QKK3RpbWUgYW5vdGhlciB0aW1lb3V0LiBJbiB0aGUgY2FzZSBvZiB0aGUgc29mdHdhcmUgd2F0Y2hkb2cgdGhlIGFiaWxpdHkgdG8KK3JlYm9vdCB3aWxsIGRlcGVuZCBvbiB0aGUgc3RhdGUgb2YgdGhlIG1hY2hpbmVzIGFuZCBpbnRlcnJ1cHRzLiBUaGUgaGFyZHdhcmUKK2JvYXJkcyBwaHlzaWNhbGx5IHB1bGwgdGhlIG1hY2hpbmUgZG93biBvZmYgdGhlaXIgb3duIG9uYm9hcmQgdGltZXJzIGFuZAord2lsbCByZWJvb3QgZnJvbSBhbG1vc3QgYW55dGhpbmcuCisKK0Egc2Vjb25kIHRlbXBlcmF0dXJlIG1vbml0b3JpbmcgaW50ZXJmYWNlIGlzIGF2YWlsYWJsZSBvbiB0aGUgV0RUNTAxUCBjYXJkcy4KK1RoaXMgcHJvdmlkZXMgL2Rldi90ZW1wZXJhdHVyZS4gVGhpcyBpcyB0aGUgbWFjaGluZSBpbnRlcm5hbCB0ZW1wZXJhdHVyZSBpbgorZGVncmVlcyBGYWhyZW5oZWl0LiBFYWNoIHJlYWQgcmV0dXJucyBhIHNpbmdsZSBieXRlIGdpdmluZyB0aGUgdGVtcGVyYXR1cmUuCisKK1RoZSB0aGlyZCBpbnRlcmZhY2UgbG9ncyBrZXJuZWwgbWVzc2FnZXMgb24gYWRkaXRpb25hbCBhbGVydCBldmVudHMuCisKK1RoZSBJQ1MgSVNBLWJ1cyB3ZHQgY2FyZCBjYW5ub3QgYmUgc2FmZWx5IHByb2JlZCBmb3IuIEluc3RlYWQgeW91IG5lZWQgdG8KK3Bhc3MgSU8gYWRkcmVzcyBhbmQgSVJRIGJvb3QgcGFyYW1ldGVycy4gIEUuZy46CisJd2R0LmlvPTB4MjQwIHdkdC5pcnE9MTEKKworT3RoZXIgIndkdCIgZHJpdmVyIHBhcmFtZXRlcnMgYXJlOgorCWhlYXJ0YmVhdAlXYXRjaGRvZyBoZWFydGJlYXQgaW4gc2Vjb25kcyAoZGVmYXVsdCA2MCkKKwlub3dheW91dAlXYXRjaGRvZyBjYW5ub3QgYmUgc3RvcHBlZCBvbmNlIHN0YXJ0ZWQgKGtlcm5lbAorCQkJCWJ1aWxkIHBhcmFtZXRlcikKKwl0YWNob21ldGVyCVdEVDUwMS1QIEZhbiBUYWNob21ldGVyIHN1cHBvcnQgKDA9ZGlzYWJsZSwgZGVmYXVsdD0wKQorCXR5cGUJCVdEVDUwMS1QIENhcmQgdHlwZSAoNTAwIG9yIDUwMSwgZGVmYXVsdD01MDApCisKK0ZlYXR1cmVzCistLS0tLS0tLQorCQlXRFQ1MDFQCQlXRFQ1MDBQCitSZWJvb3QgVGltZXIJICAgWCAgICAgICAgICAgICAgIFgKK0V4dGVybmFsIFJlYm9vdAkgICBYCSAgICAgICAgICAgWAorSS9PIFBvcnQgTW9uaXRvciAgIG8JCSAgIG8KK1RlbXBlcmF0dXJlCSAgIFgJCSAgIG8KK0ZhbiBTcGVlZCAgICAgICAgICBYCQkgICBvCitQb3dlciBVbmRlcgkgICBYICAgICAgICAgICAgICAgbworUG93ZXIgT3ZlciAgICAgICAgIFggICAgICAgICAgICAgICBvCitPdmVyaGVhdCAgICAgICAgICAgWCAgICAgICAgICAgICAgIG8KKworVGhlIGV4dGVybmFsIGV2ZW50IGludGVyZmFjZXMgb24gdGhlIFdEVCBib2FyZHMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLgorTWlub3IgbnVtYmVycyBhcmUgaG93ZXZlciBhbGxvY2F0ZWQgZm9yIGl0LgorCisKK0V4YW1wbGUgV2F0Y2hkb2cgRHJpdmVyOiAgc2VlIERvY3VtZW50YXRpb24vd2F0Y2hkb2cvc3JjL3dhdGNoZG9nLXNpbXBsZS5jCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3dpbWF4L1JFQURNRS5pMjQwMG0gYi9Eb2N1bWVudGF0aW9uL3dpbWF4L1JFQURNRS5pMjQwMG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RmZmQ4OQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vd2ltYXgvUkVBRE1FLmkyNDAwbQpAQCAtMCwwICsxLDI2MCBAQAorCisgICBEcml2ZXIgZm9yIHRoZSBJbnRlbCBXaXJlbGVzcyBXaW1heCBDb25uZWN0aW9uIDI0MDBtCisKKyAgIChDKSAyMDA4IEludGVsIENvcnBvcmF0aW9uIDwgbGludXgtd2ltYXhAaW50ZWwuY29tID4KKworICAgVGhpcyBwcm92aWRlcyBhIGRyaXZlciBmb3IgdGhlIEludGVsIFdpcmVsZXNzIFdpTUFYIENvbm5lY3Rpb24gMjQwMG0KKyAgIGFuZCBhIGJhc2ljIExpbnV4IGtlcm5lbCBXaU1BWCBzdGFjay4KKworMS4gUmVxdWlyZW1lbnRzCisKKyAgICAgKiBMaW51eCBpbnN0YWxsYXRpb24gd2l0aCBMaW51eCBrZXJuZWwgMi42LjIyIG9yIG5ld2VyIChpZiBidWlsZGluZworICAgICAgIGZyb20gYSBzZXBhcmF0ZSB0cmVlKQorICAgICAqIEludGVsIGkyNDAwbSBFY2hvIFBlYWsgb3IgQmF4dGVyIFBlYWs7IHRoaXMgaW5jbHVkZXMgdGhlIEludGVsCisgICAgICAgV2lyZWxlc3MgV2lNQVgvV2lGaSBMaW5rIDV4NTAgc2VyaWVzLgorICAgICAqIGJ1aWxkIHRvb2xzOgorICAgICAgICAgICsgTGludXgga2VybmVsIGRldmVsb3BtZW50IHBhY2thZ2UgZm9yIHRoZSB0YXJnZXQga2VybmVsOyB0bworICAgICAgICAgICAgYnVpbGQgYWdhaW5zdCB5b3VyIGN1cnJlbnRseSBydW5uaW5nIGtlcm5lbCwgeW91IG5lZWQgdG8gaGF2ZQorICAgICAgICAgICAgdGhlIGtlcm5lbCBkZXZlbG9wbWVudCBwYWNrYWdlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHJ1bm5pbmcKKyAgICAgICAgICAgIGltYWdlIGluc3RhbGxlZCAodXN1YWxseSBpZiB5b3VyIGtlcm5lbCBpcyBuYW1lZAorICAgICAgICAgICAgbGludXgtVkVSU0lPTiwgdGhlIGRldmVsb3BtZW50IHBhY2thZ2UgaXMgY2FsbGVkCisgICAgICAgICAgICBsaW51eC1kZXYtVkVSU0lPTiBvciBsaW51eC1oZWFkZXJzLVZFUlNJT04pLgorICAgICAgICAgICsgR05VIEMgQ29tcGlsZXIsIG1ha2UKKworMi4gQ29tcGlsYXRpb24gYW5kIGluc3RhbGxhdGlvbgorCisyLjEuIENvbXBpbGF0aW9uIG9mIHRoZSBkcml2ZXJzIGluY2x1ZGVkIGluIHRoZSBrZXJuZWwKKworICAgQ29uZmlndXJlIHRoZSBrZXJuZWw7IHRvIGVuYWJsZSB0aGUgV2lNQVggZHJpdmVycyBzZWxlY3QgRHJpdmVycyA+CisgICBOZXR3b3JraW5nIERyaXZlcnMgPiBXaU1BWCBkZXZpY2Ugc3VwcG9ydC4gRW5hYmxlIGFsbCBvZiB0aGVtIGFzCisgICBtb2R1bGVzIChlYXNpZXIpLgorCisgICBJZiBVU0Igb3IgU0RJTyBhcmUgbm90IGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLCB0aGUgb3B0aW9ucworICAgdG8gYnVpbGQgdGhlIGkyNDAwbSBVU0Igb3IgU0RJTyBkcml2ZXJzIHdpbGwgbm90IHNob3cuIEVuYWJsZSBzYWlkCisgICBzdWJzeXN0ZW1zIGFuZCBnbyBiYWNrIHRvIHRoZSBXaU1BWCBtZW51IHRvIGVuYWJsZSB0aGUgZHJpdmVycy4KKworICAgQ29tcGlsZSBhbmQgaW5zdGFsbCB5b3VyIGtlcm5lbCBhcyB1c3VhbC4KKworMi4yLiBDb21waWxhdGlvbiBvZiB0aGUgZHJpdmVycyBkaXN0cmlidXRlZCBhcyBhbiBzdGFuZGFsb25lIG1vZHVsZQorCisgICBUbyBjb21waWxlCisKKyQgY2Qgc291cmNlL2RpcmVjdG9yeQorJCBtYWtlCisKKyAgIE9uY2UgYnVpbHQgeW91IGNhbiBsb2FkIGFuZCB1bmxvYWQgdXNpbmcgdGhlIHByb3ZpZGVkIGxvYWQuc2ggc2NyaXB0OworICAgbG9hZC5zaCB3aWxsIGxvYWQgdGhlIG1vZHVsZXMsIGxvYWQuc2ggdSB3aWxsIHVubG9hZCB0aGVtLgorCisgICBUbyBpbnN0YWxsIGluIHRoZSBkZWZhdWx0IGtlcm5lbCBkaXJlY3RvcmllcyAoYW5kIGVuYWJsZSBhdXRvIGxvYWRpbmcKKyAgIHdoZW4gdGhlIGRldmljZSBpcyBwbHVnZ2VkKToKKworJCBtYWtlIGluc3RhbGwKKyQgZGVwbW9kIC1hCisKKyAgIElmIHlvdXIga2VybmVsIGRldmVsb3BtZW50IGZpbGVzIGFyZSBsb2NhdGVkIGluIGEgbm9uIHN0YW5kYXJkCisgICBkaXJlY3Rvcnkgb3IgaWYgeW91IHdhbnQgdG8gYnVpbGQgZm9yIGEga2VybmVsIHRoYXQgaXMgbm90IHRoZQorICAgY3VycmVudGx5IHJ1bm5pbmcgb25lLCBzZXQgS0RJUiB0byB0aGUgcmlnaHQgbG9jYXRpb246CisKKyQgbWFrZSBLRElSPS9wYXRoL3RvL2tlcm5lbC9kZXYvdHJlZQorCisgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIGNvbnRhY3QgbGludXgtd2ltYXhAaW50ZWwuY29tLgorCiszLiBJbnN0YWxsaW5nIHRoZSBmaXJtd2FyZQorCisgICBUaGUgZmlybXdhcmUgY2FuIGJlIG9idGFpbmVkIGZyb20gaHR0cDovL2xpbnV4d2ltYXgub3JnIG9yIG1pZ2h0IGhhdmUKKyAgIGJlZW4gc3VwcGxpZWQgd2l0aCB5b3VyIGhhcmR3YXJlLgorCisgICBJdCBoYXMgdG8gYmUgaW5zdGFsbGVkIGluIHRoZSB0YXJnZXQgc3lzdGVtOgorICAgICAqCiskIGNwIEZJUk1XQVJFRklMRS5zYmNmIC9saWIvZmlybXdhcmUvaTI0MDBtLWZ3LUJVU1RZUEUtMS4zLnNiY2YKKworICAgICAqIE5PVEU6IGlmIHlvdXIgZmlybXdhcmUgY2FtZSBpbiBhbiAucnBtIG9yIC5kZWIgZmlsZSwganVzdCBpbnN0YWxsCisgICAgICAgaXQgYXMgbm9ybWFsLCB3aXRoIHRoZSBycG0gKHJwbSAtaSBGSVJNV0FSRS5ycG0pIG9yIGRwa2cKKyAgICAgICAoZHBrZyAtaSBGSVJNV0FSRS5kZWIpIGNvbW1hbmRzLiBObyBmdXJ0aGVyIGFjdGlvbiBpcyBuZWVkZWQuCisgICAgICogQlVTVFlQRSB3aWxsIGJlIHVzYiBvciBzZGlvLCBkZXBlbmRpbmcgb24gdGhlIGhhcmR3YXJlIHlvdSBoYXZlLgorICAgICAgIEVhY2ggaGFyZHdhcmUgdHlwZSBjb21lcyB3aXRoIGl0cyBvd24gZmlybXdhcmUgYW5kIHdpbGwgbm90IHdvcmsKKyAgICAgICB3aXRoIG90aGVyIHR5cGVzLgorCis0LiBEZXNpZ24KKworICAgVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHR3byBtYWpvciBwYXJ0czogYSBXaU1BWCBrZXJuZWwgc3RhY2sgYW5kIGEKKyAgIGRyaXZlciBmb3IgdGhlIEludGVsIGkyNDAwbS4KKworICAgVGhlIFdpTUFYIHN0YWNrIGlzIGRlc2lnbmVkIHRvIHByb3ZpZGUgZm9yIGNvbW1vbiBXaU1BWCBjb250cm9sCisgICBzZXJ2aWNlcyB0byBjdXJyZW50IGFuZCBmdXR1cmUgV2lNQVggZGV2aWNlcyBmcm9tIGFueSB2ZW5kb3I7IHBsZWFzZQorICAgc2VlIFJFQURNRS53aW1heCBmb3IgZGV0YWlscy4KKworICAgVGhlIGkyNDAwbSBrZXJuZWwgZHJpdmVyIGlzIGJyb2tlbiB1cCBpbiB0d28gbWFpbiBwYXJ0czogdGhlIGJ1cworICAgZ2VuZXJpYyBkcml2ZXIgYW5kIHRoZSBidXMtc3BlY2lmaWMgZHJpdmVycy4gVGhlIGJ1cyBnZW5lcmljIGRyaXZlcgorICAgZm9ybXMgdGhlIGRyaXZlcmNvcmUgYW5kIGNvbnRhaW4gbm8ga25vd2xlZGdlIG9mIHRoZSBhY3R1YWwgbWV0aG9kIHdlCisgICB1c2UgdG8gY29ubmVjdCB0byB0aGUgZGV2aWNlLiBUaGUgYnVzIHNwZWNpZmljIGRyaXZlcnMgYXJlIGp1c3QgdGhlCisgICBnbHVlIHRvIGNvbm5lY3QgdGhlIGJ1cy1nZW5lcmljIGRyaXZlciBhbmQgdGhlIGRldmljZS4gQ3VycmVudGx5IG9ubHkKKyAgIFVTQiBhbmQgU0RJTyBhcmUgc3VwcG9ydGVkLiBTZWUgZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL2kyNDAwbS5oIGZvcgorICAgbW9yZSBpbmZvcm1hdGlvbi4KKworICAgVGhlIGJ1cyBnZW5lcmljIGRyaXZlciBpcyBsb2dpY2FsbHkgYnJva2VuIHVwIGluIHR3byBwYXJ0czogT1MtZ2x1ZSBhbmQKKyAgIGhhcmR3YXJlLWdsdWUuIFRoZSBPUy1nbHVlIGludGVyZmFjZXMgd2l0aCBMaW51eC4gVGhlIGhhcmR3YXJlLWdsdWUKKyAgIGludGVyZmFjZXMgd2l0aCB0aGUgZGV2aWNlIG9uIHVzaW5nIGFuIGludGVyZmFjZSBwcm92aWRlZCBieSB0aGUKKyAgIGJ1cy1zcGVjaWZpYyBkcml2ZXIuIFRoZSByZWFzb24gZm9yIHRoaXMgYnJlYWt1cCBpcyB0byBiZSBhYmxlIHRvCisgICBlYXNpbHkgcmV1c2UgdGhlIGhhcmR3YXJlLWdsdWUgdG8gd3JpdGUgZHJpdmVycyBmb3Igb3RoZXIgT1Nlczsgbm90ZQorICAgdGhlIGhhcmR3YXJlIGdsdWUgcGFydCBpcyB3cml0dGVuIGFzIGEgbmF0aXZlIExpbnV4IGRyaXZlcjsgbm8KKyAgIGFic3RyYWN0aW9uIGxheWVycyBhcmUgdXNlZCwgc28gdG8gcG9ydCB0byBhbm90aGVyIE9TLCB0aGUgTGludXgga2VybmVsCisgICBBUEkgY2FsbHMgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggdGhlIHRhcmdldCBPUydzLgorCis1LiBVc2FnZQorCisgICBUbyBsb2FkIHRoZSBkcml2ZXIsIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluIHRoZSBpbnN0YWxsIHNlY3Rpb247CisgICBvbmNlIHRoZSBkcml2ZXIgaXMgbG9hZGVkLCBwbHVnIGluIHRoZSBkZXZpY2UgKHVubGVzcyBpdCBpcyBwZXJtYW5lbnRseQorICAgcGx1Z2dlZCBpbikuIFRoZSBkcml2ZXIgd2lsbCBlbnVtZXJhdGUgdGhlIGRldmljZSwgdXBsb2FkIHRoZSBmaXJtd2FyZQorICAgYW5kIG91dHB1dCBtZXNzYWdlcyBpbiB0aGUga2VybmVsIGxvZyAoZG1lc2csIC92YXIvbG9nL21lc3NhZ2VzIG9yCisgICAvdmFyL2xvZy9rZXJuLmxvZykgc3VjaCBhczoKKworLi4uCitpMjQwMG1fdXNiIDUtNDoxLjA6IGZpcm13YXJlIGludGVyZmFjZSB2ZXJzaW9uIDguMC4wCitpMjQwMG1fdXNiIDUtNDoxLjA6IFdpTUFYIGludGVyZmFjZSB3bXgwICgwMDoxZDplMTowMTo5NDoyYykgcmVhZHkKKworICAgQXQgdGhpcyBwb2ludCB0aGUgZGV2aWNlIGlzIHJlYWR5IHRvIHdvcmsuCisKKyAgIEN1cnJlbnQgdmVyc2lvbnMgcmVxdWlyZSB0aGUgSW50ZWwgV2lNQVggTmV0d29yayBTZXJ2aWNlIGluIHVzZXJzcGFjZQorICAgdG8gbWFrZSB0aGluZ3Mgd29yay4gU2VlIHRoZSBuZXR3b3JrIHNlcnZpY2UncyBSRUFETUUgZm9yIGluc3RydWN0aW9ucworICAgb24gaG93IHRvIHNjYW4sIGNvbm5lY3QgYW5kIGRpc2Nvbm5lY3QuCisKKzUuMS4gTW9kdWxlIHBhcmFtZXRlcnMKKworICAgTW9kdWxlIHBhcmFtZXRlcnMgY2FuIGJlIHNldCBhdCBrZXJuZWwgb3IgbW9kdWxlIGxvYWQgdGltZSBvciBieQorICAgZWNob2luZyB2YWx1ZXM6CisKKyQgZWNobyBWQUxVRSA+IC9zeXMvbW9kdWxlL01PRFVMRU5BTUUvcGFyYW1ldGVycy9QQVJBTUVURVJOQU1FCisKKyAgIFRvIG1ha2UgY2hhbmdlcyBwZXJtYW5lbnQsIGZvciBleGFtcGxlLCBmb3IgdGhlIGkyNDAwbSBtb2R1bGUsIHlvdSBjYW4KKyAgIGFsc28gY3JlYXRlIGEgZmlsZSBuYW1lZCAvZXRjL21vZHByb2JlLmQvaTI0MDBtIGNvbnRhaW5pbmc6CisKK29wdGlvbnMgaTI0MDBtIGlkbGVfbW9kZV9kaXNhYmxlZD0xCisKKyAgIFRvIGZpbmQgd2hpY2ggcGFyYW1ldGVycyBhcmUgc3VwcG9ydGVkIGJ5IGEgbW9kdWxlLCBydW46CisKKyQgbW9kaW5mbyBwYXRoL3RvL21vZHVsZS5rbworCisgICBEdXJpbmcga2VybmVsIGJvb3R1cCAoaWYgdGhlIGRyaXZlciBpcyBsaW5rZWQgaW4gdGhlIGtlcm5lbCksIHNwZWNpZnkKKyAgIHRoZSBmb2xsb3dpbmcgdG8gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmU6CisKK2kyNDAwbS5QQVJBTUVURVI9VkFMVUUKKworNS4xLjEuIGkyNDAwbTogaWRsZV9tb2RlX2Rpc2FibGVkCisKKyAgIFRoZSBpMjQwMG0gbW9kdWxlIHN1cHBvcnRzIGEgcGFyYW1ldGVyIHRvIGRpc2FibGUgaWRsZSBtb2RlLiBUaGlzCisgICBwYXJhbWV0ZXIsIG9uY2Ugc2V0LCB3aWxsIHRha2UgZWZmZWN0IG9ubHkgd2hlbiB0aGUgZGV2aWNlIGlzCisgICByZWluaXRpYWxpemVkIGJ5IHRoZSBkcml2ZXIgKGVnOiBmb2xsb3dpbmcgYSByZXNldCBvciBhIHJlY29ubmVjdCkuCisKKzUuMi4gRGVidWcgb3BlcmF0aW9uczogZGVidWdmcyBlbnRyaWVzCisKKyAgIFRoZSBkcml2ZXIgd2lsbCByZWdpc3RlciBkZWJ1Z2ZzIGVudHJpZXMgdGhhdCBhbGxvdyB0aGUgdXNlciB0byB0d2VhaworICAgZGVidWcgc2V0dGluZ3MuIFRoZXJlIGFyZSB0aHJlZSBtYWluIGNvbnRhaW5lciBkaXJlY3RvcmllcyB3aGVyZQorICAgZW50cmllcyBhcmUgcGxhY2VkLCB3aGljaCBjb3JyZXNwb25kIHRvIHRoZSB0aHJlZSBibG9ja3MgYSBpMjQwMG0gV2lNQVgKKyAgIGRyaXZlciBoYXM6CisgICAgICogL3N5cy9rZXJuZWwvZGVidWcvd2ltYXg6REVWTkFNRS8gZm9yIHRoZSBnZW5lcmljIFdpTUFYIHN0YWNrCisgICAgICAgY29udHJvbHMKKyAgICAgKiAvc3lzL2tlcm5lbC9kZWJ1Zy93aW1heDpERVZOQU1FL2kyNDAwbSBmb3IgdGhlIGkyNDAwbSBnZW5lcmljCisgICAgICAgZHJpdmVyIGNvbnRyb2xzCisgICAgICogL3N5cy9rZXJuZWwvZGVidWcvd2ltYXg6REVWTkFNRS9pMjQwMG0tdXNiIChvciAtc2RpbykgZm9yIHRoZQorICAgICAgIGJ1cy1zcGVjaWZpYyBpMjQwMG0tdXNiIG9yIGkyNDAwbS1zZGlvIGNvbnRyb2xzKS4KKworICAgT2YgY291cnNlLCBpZiBkZWJ1Z2ZzIGlzIG1vdW50ZWQgaW4gYSBkaXJlY3Rvcnkgb3RoZXIgdGhhbgorICAgL3N5cy9rZXJuZWwvZGVidWcsIHRob3NlIHBhdGhzIHdpbGwgY2hhbmdlLgorCis1LjIuMS4gSW5jcmVhc2luZyBkZWJ1ZyBvdXRwdXQKKworICAgVGhlIGZpbGVzIG5hbWVkICpkbF8qIGluZGljYXRlIGtub2JzIGZvciBjb250cm9sbGluZyB0aGUgZGVidWcgb3V0cHV0CisgICBvZiBkaWZmZXJlbnQgc3VibW9kdWxlczoKKyAgICAgKgorIyBmaW5kIC9zeXMva2VybmVsL2RlYnVnL3dpbWF4XDp3bXgwIC1uYW1lIFwqZGxfXCoKKy9zeXMva2VybmVsL2RlYnVnL3dpbWF4OndteDAvaTI0MDBtLXVzYi9kbF90eAorL3N5cy9rZXJuZWwvZGVidWcvd2ltYXg6d214MC9pMjQwMG0tdXNiL2RsX3J4Cisvc3lzL2tlcm5lbC9kZWJ1Zy93aW1heDp3bXgwL2kyNDAwbS11c2IvZGxfbm90aWYKKy9zeXMva2VybmVsL2RlYnVnL3dpbWF4OndteDAvaTI0MDBtLXVzYi9kbF9mdworL3N5cy9rZXJuZWwvZGVidWcvd2ltYXg6d214MC9pMjQwMG0tdXNiL2RsX3VzYgorL3N5cy9rZXJuZWwvZGVidWcvd2ltYXg6d214MC9pMjQwMG0vZGxfdHgKKy9zeXMva2VybmVsL2RlYnVnL3dpbWF4OndteDAvaTI0MDBtL2RsX3J4Cisvc3lzL2tlcm5lbC9kZWJ1Zy93aW1heDp3bXgwL2kyNDAwbS9kbF9yZmtpbGwKKy9zeXMva2VybmVsL2RlYnVnL3dpbWF4OndteDAvaTI0MDBtL2RsX25ldGRldgorL3N5cy9rZXJuZWwvZGVidWcvd2ltYXg6d214MC9pMjQwMG0vZGxfZncKKy9zeXMva2VybmVsL2RlYnVnL3dpbWF4OndteDAvaTI0MDBtL2RsX2RlYnVnZnMKKy9zeXMva2VybmVsL2RlYnVnL3dpbWF4OndteDAvaTI0MDBtL2RsX2RyaXZlcgorL3N5cy9rZXJuZWwvZGVidWcvd2ltYXg6d214MC9pMjQwMG0vZGxfY29udHJvbAorL3N5cy9rZXJuZWwvZGVidWcvd2ltYXg6d214MC93aW1heF9kbF9zdGFjaworL3N5cy9rZXJuZWwvZGVidWcvd2ltYXg6d214MC93aW1heF9kbF9vcF9yZmtpbGwKKy9zeXMva2VybmVsL2RlYnVnL3dpbWF4OndteDAvd2ltYXhfZGxfb3BfcmVzZXQKKy9zeXMva2VybmVsL2RlYnVnL3dpbWF4OndteDAvd2ltYXhfZGxfb3BfbXNnCisvc3lzL2tlcm5lbC9kZWJ1Zy93aW1heDp3bXgwL3dpbWF4X2RsX2lkX3RhYmxlCisvc3lzL2tlcm5lbC9kZWJ1Zy93aW1heDp3bXgwL3dpbWF4X2RsX2RlYnVnZnMKKworICAgQnkgcmVhZGluZyB0aGUgZmlsZSB5b3UgY2FuIG9idGFpbiB0aGUgY3VycmVudCB2YWx1ZSBvZiBzYWlkIGRlYnVnCisgICBsZXZlbDsgYnkgd3JpdGluZyB0byBpdCwgeW91IGNhbiBzZXQgaXQuCisKKyAgIFRvIGluY3JlYXNlIHRoZSBkZWJ1ZyBsZXZlbCBvZiwgZm9yIGV4YW1wbGUsIHRoZSBpMjQwMG0ncyBnZW5lcmljIFRYCisgICBlbmdpbmUsIGp1c3Qgd3JpdGU6CisKKyQgZWNobyAzID4gL3N5cy9rZXJuZWwvZGVidWcvd2ltYXg6d214MC9pMjQwMG0vZGxfdHgKKworICAgSW5jcmVhc2luZyBudW1iZXJzIHlpZWxkIGluY3JlYXNpbmcgZGVidWcgaW5mb3JtYXRpb247IGZvciBkZXRhaWxzIG9mCisgICB3aGF0IGlzIHByaW50ZWQgYW5kIHRoZSBhdmFpbGFibGUgbGV2ZWxzLCBjaGVjayB0aGUgc291cmNlLiBUaGUgY29kZQorICAgdXNlcyAwIGZvciBkaXNhYmxlZCBhbmQgaW5jcmVhc2luZyB2YWx1ZXMgdW50aWwgOC4KKworNS4yLjIuIFJYIGFuZCBUWCBzdGF0aXN0aWNzCisKKyAgIFRoZSBpMjQwMG0vcnhfc3RhdHMgYW5kIGkyNDAwbS90eF9zdGF0cyBwcm92aWRlIHN0YXRpc3RpY3MgYWJvdXQgdGhlCisgICBkYXRhIHJlY2VwdGlvbi9kZWxpdmVyeSBmcm9tIHRoZSBkZXZpY2U6CisKKyQgY2F0IC9zeXMva2VybmVsL2RlYnVnL3dpbWF4OndteDAvaTI0MDBtL3J4X3N0YXRzCis0NSAxIDMgMzQgMzEwNCA0OCA0ODAKKworICAgVGhlIG51bWJlcnMgcmVwb3J0ZWQgYXJlCisgICAgICogcGFja2V0cy9SWC1idWZmZXI6IHRvdGFsLCBtaW4sIG1heAorICAgICAqIFJYLWJ1ZmZlcnM6IHRvdGFsIFJYIGJ1ZmZlcnMgcmVjZWl2ZWQsIGFjY3VtdWxhdGVkIFJYIGJ1ZmZlciBzaXplCisgICAgICAgaW4gYnl0ZXMsIG1pbiBzaXplIHJlY2VpdmVkLCBtYXggc2l6ZSByZWNlaXZlZAorCisgICBUaHVzLCB0byBmaW5kIHRoZSBhdmVyYWdlIGJ1ZmZlciBzaXplIHJlY2VpdmVkLCBkaXZpZGUgYWNjdW11bGF0ZWQKKyAgIFJYLWJ1ZmZlciAvIHRvdGFsIFJYLWJ1ZmZlcnMuCisKKyAgIFRvIGNsZWFyIHRoZSBzdGF0aXN0aWNzIGJhY2sgdG8gMCwgd3JpdGUgYW55dGhpbmcgdG8gdGhlIHJ4X3N0YXRzIGZpbGU6CisKKyQgZWNobyAxID4gL3N5cy9rZXJuZWwvZGVidWcvd2ltYXg6d214MC9pMjQwMG1fcnhfc3RhdHMKKworICAgTGlrZXdpc2UgZm9yIFRYLgorCisgICBOb3RlIHRoZSBwYWNrZXRzIHRoaXMgZGVidWcgZmlsZSByZWZlcnMgdG8gYXJlIG5vdCBuZXR3b3JrIHBhY2tldCwgYnV0CisgICBwYWNrZXRzIGluIHRoZSBzZW5zZSBvZiB0aGUgZGV2aWNlLXNwZWNpZmljIHByb3RvY29sIGZvciBjb21tdW5pY2F0aW9uCisgICB0byB0aGUgaG9zdC4gU2VlIGRyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS90eC5jLgorCis1LjIuMy4gVHJhY2luZyBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHVzZXIgc3BhY2UKKworICAgVG8gZWNobyBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHVzZXIgc3BhY2UgaW50byB0aGUgdHJhY2UgcGlwZSB0aGF0IHRoZQorICAgaTI0MDBtIGRyaXZlciBjcmVhdGVzLCBzZXQgdGhlIGRlYnVnIGZpbGUgaTI0MDBtL3RyYWNlX21zZ19mcm9tX3VzZXIgdG8KKyAgIDE6CisgICAgICoKKyQgZWNobyAxID4gL3N5cy9rZXJuZWwvZGVidWcvd2ltYXg6d214MC9pMjQwMG0vdHJhY2VfbXNnX2Zyb21fdXNlcgorCis1LjIuNC4gUGVyZm9ybWluZyBhIGRldmljZSByZXNldAorCisgICBCeSB3cml0aW5nIGEgMCwgYSAxIG9yIGEgMiB0byB0aGUgZmlsZQorICAgL3N5cy9rZXJuZWwvZGVidWcvd2ltYXg6d214MC9yZXNldCwgdGhlIGRyaXZlciBwZXJmb3JtcyBhIHdhcm0gKHdpdGhvdXQKKyAgIGRpc2Nvbm5lY3RpbmcgZnJvbSB0aGUgYnVzKSwgY29sZCAoZGlzY29ubmVjdGluZyBmcm9tIHRoZSBidXMpIG9yIGJ1cworICAgKGJ1cyBzcGVjaWZpYykgcmVzZXQgb24gdGhlIGRldmljZS4KKworNS4yLjUuIEFza2luZyB0aGUgZGV2aWNlIHRvIGVudGVyIHBvd2VyIHNhdmluZyBtb2RlCisKKyAgIEJ5IHdyaXRpbmcgYW55IHZhbHVlIHRvIHRoZSAvc3lzL2tlcm5lbC9kZWJ1Zy93aW1heDp3bXgwIGZpbGUsIHRoZQorICAgZGV2aWNlIHdpbGwgYXR0ZW1wdCB0byBlbnRlciBwb3dlciBzYXZpbmcgbW9kZS4KKworNi4gVHJvdWJsZXNob290aW5nCisKKzYuMS4gRHJpdmVyIGNvbXBsYWlucyBhYm91dCAnaTI0MDBtLWZ3LXVzYi0xLjIuc2JjZjogcmVxdWVzdCBmYWlsZWQnCisKKyAgIElmIHVwb24gY29ubmVjdGluZyB0aGUgZGV2aWNlLCB0aGUgZm9sbG93aW5nIGlzIG91dHB1dCBpbiB0aGUga2VybmVsCisgICBsb2c6CisKK2kyNDAwbV91c2IgNS00OjEuMDogZncgaTI0MDBtLWZ3LXVzYi0xLjMuc2JjZjogcmVxdWVzdCBmYWlsZWQ6IC0yCisKKyAgIFRoaXMgbWVhbnMgdGhhdCB0aGUgZHJpdmVyIGNhbm5vdCBsb2NhdGUgdGhlIGZpcm13YXJlIGZpbGUgbmFtZWQKKyAgIC9saWIvZmlybXdhcmUvaTI0MDBtLWZ3LXVzYi0xLjIuc2JjZi4gQ2hlY2sgdGhhdCB0aGUgZmlsZSBpcyBwcmVzZW50IGluCisgICB0aGUgcmlnaHQgbG9jYXRpb24uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3dpbWF4L1JFQURNRS53aW1heCBiL0RvY3VtZW50YXRpb24vd2ltYXgvUkVBRE1FLndpbWF4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3OGM0MzcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3dpbWF4L1JFQURNRS53aW1heApAQCAtMCwwICsxLDgxIEBACisKKyAgIExpbnV4IGtlcm5lbCBXaU1BWCBzdGFjaworCisgICAoQykgMjAwOCBJbnRlbCBDb3Jwb3JhdGlvbiA8IGxpbnV4LXdpbWF4QGludGVsLmNvbSA+CisKKyAgIFRoaXMgcHJvdmlkZXMgYSBiYXNpYyBMaW51eCBrZXJuZWwgV2lNQVggc3RhY2sgdG8gcHJvdmlkZSBhIGNvbW1vbgorICAgY29udHJvbCBBUEkgZm9yIFdpTUFYIGRldmljZXMsIHVzYWJsZSBmcm9tIGtlcm5lbCBhbmQgdXNlciBzcGFjZS4KKworMS4gRGVzaWduCisKKyAgIFRoZSBXaU1BWCBzdGFjayBpcyBkZXNpZ25lZCB0byBwcm92aWRlIGZvciBjb21tb24gV2lNQVggY29udHJvbAorICAgc2VydmljZXMgdG8gY3VycmVudCBhbmQgZnV0dXJlIFdpTUFYIGRldmljZXMgZnJvbSBhbnkgdmVuZG9yLgorCisgICBCZWNhdXNlIGN1cnJlbnRseSB0aGVyZSBpcyBvbmx5IG9uZSBhbmQgd2UgZG9uJ3Qga25vdyB3aGF0IHdvdWxkIGJlIHRoZQorICAgY29tbW9uIHNlcnZpY2VzLCB0aGUgQVBJcyBpdCBjdXJyZW50bHkgcHJvdmlkZXMgYXJlIHZlcnkgbWluaW1hbC4KKyAgIEhvd2V2ZXIsIGl0IGlzIGRvbmUgaW4gc3VjaCBhIHdheSB0aGF0IGl0IGlzIGVhc2lseSBleHRlbnNpYmxlIHRvCisgICBhY2NvbW1vZGF0ZSBmdXR1cmUgcmVxdWlyZW1lbnRzLgorCisgICBUaGUgc3RhY2sgd29ya3MgYnkgZW1iZWRkaW5nIGEgc3RydWN0IHdpbWF4X2RldiBpbiB5b3VyIGRldmljZSdzCisgICBjb250cm9sIHN0cnVjdHVyZXMuIFRoaXMgcHJvdmlkZXMgYSBzZXQgb2YgY2FsbGJhY2tzIHRoYXQgdGhlIFdpTUFYCisgICBzdGFjayB3aWxsIGNhbGwgaW4gb3JkZXIgdG8gaW1wbGVtZW50IGNvbnRyb2wgb3BlcmF0aW9ucyByZXF1ZXN0ZWQgYnkKKyAgIHRoZSB1c2VyLiBBcyB3ZWxsLCB0aGUgc3RhY2sgcHJvdmlkZXMgQVBJIGZ1bmN0aW9ucyB0aGF0IHRoZSBkcml2ZXIKKyAgIGNhbGxzIHRvIG5vdGlmeSBhYm91dCBjaGFuZ2VzIG9mIHN0YXRlIGluIHRoZSBkZXZpY2UuCisKKyAgIFRoZSBzdGFjayBleHBvcnRzIHRoZSBBUEkgY2FsbHMgbmVlZGVkIHRvIGNvbnRyb2wgdGhlIGRldmljZSB0byB1c2VyCisgICBzcGFjZSB1c2luZyBnZW5lcmljIG5ldGxpbmsgYXMgYSBtYXJzaGFsbGluZyBtZWNoYW5pc20uIFlvdSBjYW4gYWNjZXNzCisgICB0aGVtIHVzaW5nIHlvdXIgb3duIGNvZGUgb3IgdXNlIHRoZSB3cmFwcGVycyBwcm92aWRlZCBmb3IgeW91cgorICAgY29udmVuaWVuY2UgaW4gbGlid2ltYXggKGluIHRoZSB3aW1heC10b29scyBwYWNrYWdlKS4KKworICAgRm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHRoZSBzdGFjaywgcGxlYXNlIHNlZQorICAgaW5jbHVkZS9saW51eC93aW1heC5oLgorCisyLiBVc2FnZQorCisgICBGb3IgdXNhZ2UgaW4gYSBkcml2ZXIgKHJlZ2lzdHJhdGlvbiwgQVBJLCBldGMpIHBsZWFzZSByZWZlciB0byB0aGUKKyAgIGluc3RydWN0aW9ucyBpbiB0aGUgaGVhZGVyIGZpbGUgaW5jbHVkZS9saW51eC93aW1heC5oLgorCisgICBXaGVuIGEgZGV2aWNlIGlzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgV2lNQVggc3RhY2ssIGEgc2V0IG9mIGRlYnVnZnMKKyAgIGZpbGVzIHdpbGwgYXBwZWFyIGluIC9zeXMva2VybmVsL2RlYnVnL3dpbWF4OndteFggY2FuIHR3ZWFrIGZvcgorICAgY29udHJvbC4KKworMi4xLiBPYnRhaW5pbmcgZGVidWcgaW5mb3JtYXRpb246IGRlYnVnZnMgZW50cmllcworCisgICBUaGUgV2lNQVggc3RhY2sgaXMgY29tcGlsZWQsIGJ5IGRlZmF1bHQsIHdpdGggZGVidWcgbWVzc2FnZXMgdGhhdCBjYW4KKyAgIGJlIHVzZWQgdG8gZGlhZ25vc2UgaXNzdWVzLiBCeSBkZWZhdWx0LCBzYWlkIG1lc3NhZ2VzIGFyZSBkaXNhYmxlZC4KKworICAgVGhlIGRyaXZlcnMgd2lsbCByZWdpc3RlciBkZWJ1Z2ZzIGVudHJpZXMgdGhhdCBhbGxvdyB0aGUgdXNlciB0byB0d2VhaworICAgZGVidWcgc2V0dGluZ3MuCisKKyAgIEVhY2ggZHJpdmVyLCB3aGVuIHJlZ2lzdGVyaW5nIHdpdGggdGhlIHN0YWNrLCB3aWxsIGNhdXNlIGEgZGVidWdmcworICAgZGlyZWN0b3J5IG5hbWVkIHdpbWF4OkRFVklDRU5BTUUgdG8gYmUgY3JlYXRlZDsgb3B0aW9uYWxseSwgaXQgbWlnaHQKKyAgIGNyZWF0ZSBtb3JlIHN1YmVudHJpZXMgYmVsb3cgaXQuCisKKzIuMS4xLiBJbmNyZWFzaW5nIGRlYnVnIG91dHB1dAorCisgICBUaGUgZmlsZXMgbmFtZWQgKmRsXyogaW5kaWNhdGUga25vYnMgZm9yIGNvbnRyb2xsaW5nIHRoZSBkZWJ1ZyBvdXRwdXQKKyAgIG9mIGRpZmZlcmVudCBzdWJtb2R1bGVzIG9mIHRoZSBXaU1BWCBzdGFjazoKKyAgICAgKgorIyBmaW5kIC9zeXMva2VybmVsL2RlYnVnL3dpbWF4XDp3bXgwIC1uYW1lIFwqZGxfXCoKKy9zeXMva2VybmVsL2RlYnVnL3dpbWF4OndteDAvd2ltYXhfZGxfc3RhY2sKKy9zeXMva2VybmVsL2RlYnVnL3dpbWF4OndteDAvd2ltYXhfZGxfb3BfcmZraWxsCisvc3lzL2tlcm5lbC9kZWJ1Zy93aW1heDp3bXgwL3dpbWF4X2RsX29wX3Jlc2V0Cisvc3lzL2tlcm5lbC9kZWJ1Zy93aW1heDp3bXgwL3dpbWF4X2RsX29wX21zZworL3N5cy9rZXJuZWwvZGVidWcvd2ltYXg6d214MC93aW1heF9kbF9pZF90YWJsZQorL3N5cy9rZXJuZWwvZGVidWcvd2ltYXg6d214MC93aW1heF9kbF9kZWJ1Z2ZzCisvc3lzL2tlcm5lbC9kZWJ1Zy93aW1heDp3bXgwLy4uLi4gIyBvdGhlciBkcml2ZXIgc3BlY2lmaWMgZmlsZXMKKworICAgICAgIE5PVEU6IE9mIGNvdXJzZSwgaWYgZGVidWdmcyBpcyBtb3VudGVkIGluIGEgZGlyZWN0b3J5IG90aGVyIHRoYW4KKyAgICAgICAvc3lzL2tlcm5lbC9kZWJ1ZywgdGhvc2UgcGF0aHMgd2lsbCBjaGFuZ2UuCisKKyAgIEJ5IHJlYWRpbmcgdGhlIGZpbGUgeW91IGNhbiBvYnRhaW4gdGhlIGN1cnJlbnQgdmFsdWUgb2Ygc2FpZCBkZWJ1ZworICAgbGV2ZWw7IGJ5IHdyaXRpbmcgdG8gaXQsIHlvdSBjYW4gc2V0IGl0LgorCisgICBUbyBpbmNyZWFzZSB0aGUgZGVidWcgbGV2ZWwgb2YsIGZvciBleGFtcGxlLCB0aGUgaWQtdGFibGUgc3VibW9kdWxlLAorICAganVzdCB3cml0ZToKKworJCBlY2hvIDMgPiAvc3lzL2tlcm5lbC9kZWJ1Zy93aW1heDp3bXgwL3dpbWF4X2RsX2lkX3RhYmxlCisKKyAgIEluY3JlYXNpbmcgbnVtYmVycyB5aWVsZCBpbmNyZWFzaW5nIGRlYnVnIGluZm9ybWF0aW9uOyBmb3IgZGV0YWlscyBvZgorICAgd2hhdCBpcyBwcmludGVkIGFuZCB0aGUgYXZhaWxhYmxlIGxldmVscywgY2hlY2sgdGhlIHNvdXJjZS4gVGhlIGNvZGUKKyAgIHVzZXMgMCBmb3IgZGlzYWJsZWQgYW5kIGluY3JlYXNpbmcgdmFsdWVzIHVudGlsIDguCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3dvcmtxdWV1ZS50eHQgYi9Eb2N1bWVudGF0aW9uL3dvcmtxdWV1ZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWUwZTA1YwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vd29ya3F1ZXVlLnR4dApAQCAtMCwwICsxLDM4OCBAQAorCitDb25jdXJyZW5jeSBNYW5hZ2VkIFdvcmtxdWV1ZSAoY213cSkKKworU2VwdGVtYmVyLCAyMDEwCQlUZWp1biBIZW8gPHRqQGtlcm5lbC5vcmc+CisJCQlGbG9yaWFuIE1pY2tsZXIgPGZsb3JpYW5AbWlja2xlci5vcmc+CisKK0NPTlRFTlRTCisKKzEuIEludHJvZHVjdGlvbgorMi4gV2h5IGNtd3E/CiszLiBUaGUgRGVzaWduCis0LiBBcHBsaWNhdGlvbiBQcm9ncmFtbWluZyBJbnRlcmZhY2UgKEFQSSkKKzUuIEV4YW1wbGUgRXhlY3V0aW9uIFNjZW5hcmlvcworNi4gR3VpZGVsaW5lcworNy4gRGVidWdnaW5nCisKKworMS4gSW50cm9kdWN0aW9uCisKK1RoZXJlIGFyZSBtYW55IGNhc2VzIHdoZXJlIGFuIGFzeW5jaHJvbm91cyBwcm9jZXNzIGV4ZWN1dGlvbiBjb250ZXh0CitpcyBuZWVkZWQgYW5kIHRoZSB3b3JrcXVldWUgKHdxKSBBUEkgaXMgdGhlIG1vc3QgY29tbW9ubHkgdXNlZAorbWVjaGFuaXNtIGZvciBzdWNoIGNhc2VzLgorCitXaGVuIHN1Y2ggYW4gYXN5bmNocm9ub3VzIGV4ZWN1dGlvbiBjb250ZXh0IGlzIG5lZWRlZCwgYSB3b3JrIGl0ZW0KK2Rlc2NyaWJpbmcgd2hpY2ggZnVuY3Rpb24gdG8gZXhlY3V0ZSBpcyBwdXQgb24gYSBxdWV1ZS4gIEFuCitpbmRlcGVuZGVudCB0aHJlYWQgc2VydmVzIGFzIHRoZSBhc3luY2hyb25vdXMgZXhlY3V0aW9uIGNvbnRleHQuICBUaGUKK3F1ZXVlIGlzIGNhbGxlZCB3b3JrcXVldWUgYW5kIHRoZSB0aHJlYWQgaXMgY2FsbGVkIHdvcmtlci4KKworV2hpbGUgdGhlcmUgYXJlIHdvcmsgaXRlbXMgb24gdGhlIHdvcmtxdWV1ZSB0aGUgd29ya2VyIGV4ZWN1dGVzIHRoZQorZnVuY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGUgd29yayBpdGVtcyBvbmUgYWZ0ZXIgdGhlIG90aGVyLiAgV2hlbgordGhlcmUgaXMgbm8gd29yayBpdGVtIGxlZnQgb24gdGhlIHdvcmtxdWV1ZSB0aGUgd29ya2VyIGJlY29tZXMgaWRsZS4KK1doZW4gYSBuZXcgd29yayBpdGVtIGdldHMgcXVldWVkLCB0aGUgd29ya2VyIGJlZ2lucyBleGVjdXRpbmcgYWdhaW4uCisKKworMi4gV2h5IGNtd3E/CisKK0luIHRoZSBvcmlnaW5hbCB3cSBpbXBsZW1lbnRhdGlvbiwgYSBtdWx0aSB0aHJlYWRlZCAoTVQpIHdxIGhhZCBvbmUKK3dvcmtlciB0aHJlYWQgcGVyIENQVSBhbmQgYSBzaW5nbGUgdGhyZWFkZWQgKFNUKSB3cSBoYWQgb25lIHdvcmtlcgordGhyZWFkIHN5c3RlbS13aWRlLiAgQSBzaW5nbGUgTVQgd3EgbmVlZGVkIHRvIGtlZXAgYXJvdW5kIHRoZSBzYW1lCitudW1iZXIgb2Ygd29ya2VycyBhcyB0aGUgbnVtYmVyIG9mIENQVXMuICBUaGUga2VybmVsIGdyZXcgYSBsb3Qgb2YgTVQKK3dxIHVzZXJzIG92ZXIgdGhlIHllYXJzIGFuZCB3aXRoIHRoZSBudW1iZXIgb2YgQ1BVIGNvcmVzIGNvbnRpbnVvdXNseQorcmlzaW5nLCBzb21lIHN5c3RlbXMgc2F0dXJhdGVkIHRoZSBkZWZhdWx0IDMyayBQSUQgc3BhY2UganVzdCBib290aW5nCit1cC4KKworQWx0aG91Z2ggTVQgd3Egd2FzdGVkIGEgbG90IG9mIHJlc291cmNlLCB0aGUgbGV2ZWwgb2YgY29uY3VycmVuY3kKK3Byb3ZpZGVkIHdhcyB1bnNhdGlzZmFjdG9yeS4gIFRoZSBsaW1pdGF0aW9uIHdhcyBjb21tb24gdG8gYm90aCBTVCBhbmQKK01UIHdxIGFsYmVpdCBsZXNzIHNldmVyZSBvbiBNVC4gIEVhY2ggd3EgbWFpbnRhaW5lZCBpdHMgb3duIHNlcGFyYXRlCit3b3JrZXIgcG9vbC4gIEEgTVQgd3EgY291bGQgcHJvdmlkZSBvbmx5IG9uZSBleGVjdXRpb24gY29udGV4dCBwZXIgQ1BVCit3aGlsZSBhIFNUIHdxIG9uZSBmb3IgdGhlIHdob2xlIHN5c3RlbS4gIFdvcmsgaXRlbXMgaGFkIHRvIGNvbXBldGUgZm9yCit0aG9zZSB2ZXJ5IGxpbWl0ZWQgZXhlY3V0aW9uIGNvbnRleHRzIGxlYWRpbmcgdG8gdmFyaW91cyBwcm9ibGVtcworaW5jbHVkaW5nIHByb25lbmVzcyB0byBkZWFkbG9ja3MgYXJvdW5kIHRoZSBzaW5nbGUgZXhlY3V0aW9uIGNvbnRleHQuCisKK1RoZSB0ZW5zaW9uIGJldHdlZW4gdGhlIHByb3ZpZGVkIGxldmVsIG9mIGNvbmN1cnJlbmN5IGFuZCByZXNvdXJjZQordXNhZ2UgYWxzbyBmb3JjZWQgaXRzIHVzZXJzIHRvIG1ha2UgdW5uZWNlc3NhcnkgdHJhZGVvZmZzIGxpa2UgbGliYXRhCitjaG9vc2luZyB0byB1c2UgU1Qgd3EgZm9yIHBvbGxpbmcgUElPcyBhbmQgYWNjZXB0aW5nIGFuIHVubmVjZXNzYXJ5CitsaW1pdGF0aW9uIHRoYXQgbm8gdHdvIHBvbGxpbmcgUElPcyBjYW4gcHJvZ3Jlc3MgYXQgdGhlIHNhbWUgdGltZS4gIEFzCitNVCB3cSBkb24ndCBwcm92aWRlIG11Y2ggYmV0dGVyIGNvbmN1cnJlbmN5LCB1c2VycyB3aGljaCByZXF1aXJlCitoaWdoZXIgbGV2ZWwgb2YgY29uY3VycmVuY3ksIGxpa2UgYXN5bmMgb3IgZnNjYWNoZSwgaGFkIHRvIGltcGxlbWVudAordGhlaXIgb3duIHRocmVhZCBwb29sLgorCitDb25jdXJyZW5jeSBNYW5hZ2VkIFdvcmtxdWV1ZSAoY213cSkgaXMgYSByZWltcGxlbWVudGF0aW9uIG9mIHdxIHdpdGgKK2ZvY3VzIG9uIHRoZSBmb2xsb3dpbmcgZ29hbHMuCisKKyogTWFpbnRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBvcmlnaW5hbCB3b3JrcXVldWUgQVBJLgorCisqIFVzZSBwZXItQ1BVIHVuaWZpZWQgd29ya2VyIHBvb2xzIHNoYXJlZCBieSBhbGwgd3EgdG8gcHJvdmlkZQorICBmbGV4aWJsZSBsZXZlbCBvZiBjb25jdXJyZW5jeSBvbiBkZW1hbmQgd2l0aG91dCB3YXN0aW5nIGEgbG90IG9mCisgIHJlc291cmNlLgorCisqIEF1dG9tYXRpY2FsbHkgcmVndWxhdGUgd29ya2VyIHBvb2wgYW5kIGxldmVsIG9mIGNvbmN1cnJlbmN5IHNvIHRoYXQKKyAgdGhlIEFQSSB1c2VycyBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHN1Y2ggZGV0YWlscy4KKworCiszLiBUaGUgRGVzaWduCisKK0luIG9yZGVyIHRvIGVhc2UgdGhlIGFzeW5jaHJvbm91cyBleGVjdXRpb24gb2YgZnVuY3Rpb25zIGEgbmV3CithYnN0cmFjdGlvbiwgdGhlIHdvcmsgaXRlbSwgaXMgaW50cm9kdWNlZC4KKworQSB3b3JrIGl0ZW0gaXMgYSBzaW1wbGUgc3RydWN0IHRoYXQgaG9sZHMgYSBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbgordGhhdCBpcyB0byBiZSBleGVjdXRlZCBhc3luY2hyb25vdXNseS4gIFdoZW5ldmVyIGEgZHJpdmVyIG9yIHN1YnN5c3RlbQord2FudHMgYSBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCBhc3luY2hyb25vdXNseSBpdCBoYXMgdG8gc2V0IHVwIGEgd29yaworaXRlbSBwb2ludGluZyB0byB0aGF0IGZ1bmN0aW9uIGFuZCBxdWV1ZSB0aGF0IHdvcmsgaXRlbSBvbiBhCit3b3JrcXVldWUuCisKK1NwZWNpYWwgcHVycG9zZSB0aHJlYWRzLCBjYWxsZWQgd29ya2VyIHRocmVhZHMsIGV4ZWN1dGUgdGhlIGZ1bmN0aW9ucworb2ZmIG9mIHRoZSBxdWV1ZSwgb25lIGFmdGVyIHRoZSBvdGhlci4gIElmIG5vIHdvcmsgaXMgcXVldWVkLCB0aGUKK3dvcmtlciB0aHJlYWRzIGJlY29tZSBpZGxlLiAgVGhlc2Ugd29ya2VyIHRocmVhZHMgYXJlIG1hbmFnZWQgaW4gc28KK2NhbGxlZCB3b3JrZXItcG9vbHMuCisKK1RoZSBjbXdxIGRlc2lnbiBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIHRoZSB1c2VyLWZhY2luZyB3b3JrcXVldWVzIHRoYXQKK3N1YnN5c3RlbXMgYW5kIGRyaXZlcnMgcXVldWUgd29yayBpdGVtcyBvbiBhbmQgdGhlIGJhY2tlbmQgbWVjaGFuaXNtCit3aGljaCBtYW5hZ2VzIHdvcmtlci1wb29scyBhbmQgcHJvY2Vzc2VzIHRoZSBxdWV1ZWQgd29yayBpdGVtcy4KKworVGhlcmUgYXJlIHR3byB3b3JrZXItcG9vbHMsIG9uZSBmb3Igbm9ybWFsIHdvcmsgaXRlbXMgYW5kIHRoZSBvdGhlcgorZm9yIGhpZ2ggcHJpb3JpdHkgb25lcywgZm9yIGVhY2ggcG9zc2libGUgQ1BVIGFuZCBzb21lIGV4dHJhCit3b3JrZXItcG9vbHMgdG8gc2VydmUgd29yayBpdGVtcyBxdWV1ZWQgb24gdW5ib3VuZCB3b3JrcXVldWVzIC0gdGhlCitudW1iZXIgb2YgdGhlc2UgYmFja2luZyBwb29scyBpcyBkeW5hbWljLgorCitTdWJzeXN0ZW1zIGFuZCBkcml2ZXJzIGNhbiBjcmVhdGUgYW5kIHF1ZXVlIHdvcmsgaXRlbXMgdGhyb3VnaCBzcGVjaWFsCit3b3JrcXVldWUgQVBJIGZ1bmN0aW9ucyBhcyB0aGV5IHNlZSBmaXQuIFRoZXkgY2FuIGluZmx1ZW5jZSBzb21lCithc3BlY3RzIG9mIHRoZSB3YXkgdGhlIHdvcmsgaXRlbXMgYXJlIGV4ZWN1dGVkIGJ5IHNldHRpbmcgZmxhZ3Mgb24gdGhlCit3b3JrcXVldWUgdGhleSBhcmUgcHV0dGluZyB0aGUgd29yayBpdGVtIG9uLiBUaGVzZSBmbGFncyBpbmNsdWRlCit0aGluZ3MgbGlrZSBDUFUgbG9jYWxpdHksIGNvbmN1cnJlbmN5IGxpbWl0cywgcHJpb3JpdHkgYW5kIG1vcmUuICBUbworZ2V0IGEgZGV0YWlsZWQgb3ZlcnZpZXcgcmVmZXIgdG8gdGhlIEFQSSBkZXNjcmlwdGlvbiBvZgorYWxsb2Nfd29ya3F1ZXVlKCkgYmVsb3cuCisKK1doZW4gYSB3b3JrIGl0ZW0gaXMgcXVldWVkIHRvIGEgd29ya3F1ZXVlLCB0aGUgdGFyZ2V0IHdvcmtlci1wb29sIGlzCitkZXRlcm1pbmVkIGFjY29yZGluZyB0byB0aGUgcXVldWUgcGFyYW1ldGVycyBhbmQgd29ya3F1ZXVlIGF0dHJpYnV0ZXMKK2FuZCBhcHBlbmRlZCBvbiB0aGUgc2hhcmVkIHdvcmtsaXN0IG9mIHRoZSB3b3JrZXItcG9vbC4gIEZvciBleGFtcGxlLAordW5sZXNzIHNwZWNpZmljYWxseSBvdmVycmlkZGVuLCBhIHdvcmsgaXRlbSBvZiBhIGJvdW5kIHdvcmtxdWV1ZSB3aWxsCitiZSBxdWV1ZWQgb24gdGhlIHdvcmtsaXN0IG9mIGVpdGhlciBub3JtYWwgb3IgaGlnaHByaSB3b3JrZXItcG9vbCB0aGF0CitpcyBhc3NvY2lhdGVkIHRvIHRoZSBDUFUgdGhlIGlzc3VlciBpcyBydW5uaW5nIG9uLgorCitGb3IgYW55IHdvcmtlciBwb29sIGltcGxlbWVudGF0aW9uLCBtYW5hZ2luZyB0aGUgY29uY3VycmVuY3kgbGV2ZWwKKyhob3cgbWFueSBleGVjdXRpb24gY29udGV4dHMgYXJlIGFjdGl2ZSkgaXMgYW4gaW1wb3J0YW50IGlzc3VlLiAgY213cQordHJpZXMgdG8ga2VlcCB0aGUgY29uY3VycmVuY3kgYXQgYSBtaW5pbWFsIGJ1dCBzdWZmaWNpZW50IGxldmVsLgorTWluaW1hbCB0byBzYXZlIHJlc291cmNlcyBhbmQgc3VmZmljaWVudCBpbiB0aGF0IHRoZSBzeXN0ZW0gaXMgdXNlZCBhdAoraXRzIGZ1bGwgY2FwYWNpdHkuCisKK0VhY2ggd29ya2VyLXBvb2wgYm91bmQgdG8gYW4gYWN0dWFsIENQVSBpbXBsZW1lbnRzIGNvbmN1cnJlbmN5CittYW5hZ2VtZW50IGJ5IGhvb2tpbmcgaW50byB0aGUgc2NoZWR1bGVyLiAgVGhlIHdvcmtlci1wb29sIGlzIG5vdGlmaWVkCit3aGVuZXZlciBhbiBhY3RpdmUgd29ya2VyIHdha2VzIHVwIG9yIHNsZWVwcyBhbmQga2VlcHMgdHJhY2sgb2YgdGhlCitudW1iZXIgb2YgdGhlIGN1cnJlbnRseSBydW5uYWJsZSB3b3JrZXJzLiAgR2VuZXJhbGx5LCB3b3JrIGl0ZW1zIGFyZQorbm90IGV4cGVjdGVkIHRvIGhvZyBhIENQVSBhbmQgY29uc3VtZSBtYW55IGN5Y2xlcy4gIFRoYXQgbWVhbnMKK21haW50YWluaW5nIGp1c3QgZW5vdWdoIGNvbmN1cnJlbmN5IHRvIHByZXZlbnQgd29yayBwcm9jZXNzaW5nIGZyb20KK3N0YWxsaW5nIHNob3VsZCBiZSBvcHRpbWFsLiAgQXMgbG9uZyBhcyB0aGVyZSBhcmUgb25lIG9yIG1vcmUgcnVubmFibGUKK3dvcmtlcnMgb24gdGhlIENQVSwgdGhlIHdvcmtlci1wb29sIGRvZXNuJ3Qgc3RhcnQgZXhlY3V0aW9uIG9mIGEgbmV3Cit3b3JrLCBidXQsIHdoZW4gdGhlIGxhc3QgcnVubmluZyB3b3JrZXIgZ29lcyB0byBzbGVlcCwgaXQgaW1tZWRpYXRlbHkKK3NjaGVkdWxlcyBhIG5ldyB3b3JrZXIgc28gdGhhdCB0aGUgQ1BVIGRvZXNuJ3Qgc2l0IGlkbGUgd2hpbGUgdGhlcmUKK2FyZSBwZW5kaW5nIHdvcmsgaXRlbXMuICBUaGlzIGFsbG93cyB1c2luZyBhIG1pbmltYWwgbnVtYmVyIG9mIHdvcmtlcnMKK3dpdGhvdXQgbG9zaW5nIGV4ZWN1dGlvbiBiYW5kd2lkdGguCisKK0tlZXBpbmcgaWRsZSB3b3JrZXJzIGFyb3VuZCBkb2Vzbid0IGNvc3Qgb3RoZXIgdGhhbiB0aGUgbWVtb3J5IHNwYWNlCitmb3Iga3RocmVhZHMsIHNvIGNtd3EgaG9sZHMgb250byBpZGxlIG9uZXMgZm9yIGEgd2hpbGUgYmVmb3JlIGtpbGxpbmcKK3RoZW0uCisKK0ZvciB1bmJvdW5kIHdvcmtxdWV1ZXMsIHRoZSBudW1iZXIgb2YgYmFja2luZyBwb29scyBpcyBkeW5hbWljLgorVW5ib3VuZCB3b3JrcXVldWUgY2FuIGJlIGFzc2lnbmVkIGN1c3RvbSBhdHRyaWJ1dGVzIHVzaW5nCithcHBseV93b3JrcXVldWVfYXR0cnMoKSBhbmQgd29ya3F1ZXVlIHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUKK2JhY2tpbmcgd29ya2VyIHBvb2xzIG1hdGNoaW5nIHRoZSBhdHRyaWJ1dGVzLiAgVGhlIHJlc3BvbnNpYmlsaXR5IG9mCityZWd1bGF0aW5nIGNvbmN1cnJlbmN5IGxldmVsIGlzIG9uIHRoZSB1c2Vycy4gIFRoZXJlIGlzIGFsc28gYSBmbGFnIHRvCittYXJrIGEgYm91bmQgd3EgdG8gaWdub3JlIHRoZSBjb25jdXJyZW5jeSBtYW5hZ2VtZW50LiAgUGxlYXNlIHJlZmVyIHRvCit0aGUgQVBJIHNlY3Rpb24gZm9yIGRldGFpbHMuCisKK0ZvcndhcmQgcHJvZ3Jlc3MgZ3VhcmFudGVlIHJlbGllcyBvbiB0aGF0IHdvcmtlcnMgY2FuIGJlIGNyZWF0ZWQgd2hlbgorbW9yZSBleGVjdXRpb24gY29udGV4dHMgYXJlIG5lY2Vzc2FyeSwgd2hpY2ggaW4gdHVybiBpcyBndWFyYW50ZWVkCit0aHJvdWdoIHRoZSB1c2Ugb2YgcmVzY3VlIHdvcmtlcnMuICBBbGwgd29yayBpdGVtcyB3aGljaCBtaWdodCBiZSB1c2VkCitvbiBjb2RlIHBhdGhzIHRoYXQgaGFuZGxlIG1lbW9yeSByZWNsYWltIGFyZSByZXF1aXJlZCB0byBiZSBxdWV1ZWQgb24KK3dxJ3MgdGhhdCBoYXZlIGEgcmVzY3VlLXdvcmtlciByZXNlcnZlZCBmb3IgZXhlY3V0aW9uIHVuZGVyIG1lbW9yeQorcHJlc3N1cmUuICBFbHNlIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIHdvcmtlci1wb29sIGRlYWRsb2NrcyB3YWl0aW5nCitmb3IgZXhlY3V0aW9uIGNvbnRleHRzIHRvIGZyZWUgdXAuCisKKworNC4gQXBwbGljYXRpb24gUHJvZ3JhbW1pbmcgSW50ZXJmYWNlIChBUEkpCisKK2FsbG9jX3dvcmtxdWV1ZSgpIGFsbG9jYXRlcyBhIHdxLiAgVGhlIG9yaWdpbmFsIGNyZWF0ZV8qd29ya3F1ZXVlKCkKK2Z1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCBhbmQgc2NoZWR1bGVkIGZvciByZW1vdmFsLiAgYWxsb2Nfd29ya3F1ZXVlKCkKK3Rha2VzIHRocmVlIGFyZ3VtZW50cyAtIEBuYW1lLCBAZmxhZ3MgYW5kIEBtYXhfYWN0aXZlLiAgQG5hbWUgaXMgdGhlCituYW1lIG9mIHRoZSB3cSBhbmQgYWxzbyB1c2VkIGFzIHRoZSBuYW1lIG9mIHRoZSByZXNjdWVyIHRocmVhZCBpZgordGhlcmUgaXMgb25lLgorCitBIHdxIG5vIGxvbmdlciBtYW5hZ2VzIGV4ZWN1dGlvbiByZXNvdXJjZXMgYnV0IHNlcnZlcyBhcyBhIGRvbWFpbiBmb3IKK2ZvcndhcmQgcHJvZ3Jlc3MgZ3VhcmFudGVlLCBmbHVzaCBhbmQgd29yayBpdGVtIGF0dHJpYnV0ZXMuICBAZmxhZ3MKK2FuZCBAbWF4X2FjdGl2ZSBjb250cm9sIGhvdyB3b3JrIGl0ZW1zIGFyZSBhc3NpZ25lZCBleGVjdXRpb24KK3Jlc291cmNlcywgc2NoZWR1bGVkIGFuZCBleGVjdXRlZC4KKworQGZsYWdzOgorCisgIFdRX1VOQk9VTkQKKworCVdvcmsgaXRlbXMgcXVldWVkIHRvIGFuIHVuYm91bmQgd3EgYXJlIHNlcnZlZCBieSB0aGUgc3BlY2lhbAorCXdva2VyLXBvb2xzIHdoaWNoIGhvc3Qgd29ya2VycyB3aGljaCBhcmUgbm90IGJvdW5kIHRvIGFueQorCXNwZWNpZmljIENQVS4gIFRoaXMgbWFrZXMgdGhlIHdxIGJlaGF2ZSBhcyBhIHNpbXBsZSBleGVjdXRpb24KKwljb250ZXh0IHByb3ZpZGVyIHdpdGhvdXQgY29uY3VycmVuY3kgbWFuYWdlbWVudC4gIFRoZSB1bmJvdW5kCisJd29ya2VyLXBvb2xzIHRyeSB0byBzdGFydCBleGVjdXRpb24gb2Ygd29yayBpdGVtcyBhcyBzb29uIGFzCisJcG9zc2libGUuICBVbmJvdW5kIHdxIHNhY3JpZmljZXMgbG9jYWxpdHkgYnV0IGlzIHVzZWZ1bCBmb3IKKwl0aGUgZm9sbG93aW5nIGNhc2VzLgorCisJKiBXaWRlIGZsdWN0dWF0aW9uIGluIHRoZSBjb25jdXJyZW5jeSBsZXZlbCByZXF1aXJlbWVudCBpcworCSAgZXhwZWN0ZWQgYW5kIHVzaW5nIGJvdW5kIHdxIG1heSBlbmQgdXAgY3JlYXRpbmcgbGFyZ2UgbnVtYmVyCisJICBvZiBtb3N0bHkgdW51c2VkIHdvcmtlcnMgYWNyb3NzIGRpZmZlcmVudCBDUFVzIGFzIHRoZSBpc3N1ZXIKKwkgIGhvcHMgdGhyb3VnaCBkaWZmZXJlbnQgQ1BVcy4KKworCSogTG9uZyBydW5uaW5nIENQVSBpbnRlbnNpdmUgd29ya2xvYWRzIHdoaWNoIGNhbiBiZSBiZXR0ZXIKKwkgIG1hbmFnZWQgYnkgdGhlIHN5c3RlbSBzY2hlZHVsZXIuCisKKyAgV1FfRlJFRVpBQkxFCisKKwlBIGZyZWV6YWJsZSB3cSBwYXJ0aWNpcGF0ZXMgaW4gdGhlIGZyZWV6ZSBwaGFzZSBvZiB0aGUgc3lzdGVtCisJc3VzcGVuZCBvcGVyYXRpb25zLiAgV29yayBpdGVtcyBvbiB0aGUgd3EgYXJlIGRyYWluZWQgYW5kIG5vCisJbmV3IHdvcmsgaXRlbSBzdGFydHMgZXhlY3V0aW9uIHVudGlsIHRoYXdlZC4KKworICBXUV9NRU1fUkVDTEFJTQorCisJQWxsIHdxIHdoaWNoIG1pZ2h0IGJlIHVzZWQgaW4gdGhlIG1lbW9yeSByZWNsYWltIHBhdGhzIF9NVVNUXworCWhhdmUgdGhpcyBmbGFnIHNldC4gIFRoZSB3cSBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYXQgbGVhc3Qgb25lCisJZXhlY3V0aW9uIGNvbnRleHQgcmVnYXJkbGVzcyBvZiBtZW1vcnkgcHJlc3N1cmUuCisKKyAgV1FfSElHSFBSSQorCisJV29yayBpdGVtcyBvZiBhIGhpZ2hwcmkgd3EgYXJlIHF1ZXVlZCB0byB0aGUgaGlnaHByaQorCXdvcmtlci1wb29sIG9mIHRoZSB0YXJnZXQgY3B1LiAgSGlnaHByaSB3b3JrZXItcG9vbHMgYXJlCisJc2VydmVkIGJ5IHdvcmtlciB0aHJlYWRzIHdpdGggZWxldmF0ZWQgbmljZSBsZXZlbC4KKworCU5vdGUgdGhhdCBub3JtYWwgYW5kIGhpZ2hwcmkgd29ya2VyLXBvb2xzIGRvbid0IGludGVyYWN0IHdpdGgKKwllYWNoIG90aGVyLiAgRWFjaCBtYWludGFpbiBpdHMgc2VwYXJhdGUgcG9vbCBvZiB3b3JrZXJzIGFuZAorCWltcGxlbWVudHMgY29uY3VycmVuY3kgbWFuYWdlbWVudCBhbW9uZyBpdHMgd29ya2Vycy4KKworICBXUV9DUFVfSU5URU5TSVZFCisKKwlXb3JrIGl0ZW1zIG9mIGEgQ1BVIGludGVuc2l2ZSB3cSBkbyBub3QgY29udHJpYnV0ZSB0byB0aGUKKwljb25jdXJyZW5jeSBsZXZlbC4gIEluIG90aGVyIHdvcmRzLCBydW5uYWJsZSBDUFUgaW50ZW5zaXZlCisJd29yayBpdGVtcyB3aWxsIG5vdCBwcmV2ZW50IG90aGVyIHdvcmsgaXRlbXMgaW4gdGhlIHNhbWUKKwl3b3JrZXItcG9vbCBmcm9tIHN0YXJ0aW5nIGV4ZWN1dGlvbi4gIFRoaXMgaXMgdXNlZnVsIGZvciBib3VuZAorCXdvcmsgaXRlbXMgd2hpY2ggYXJlIGV4cGVjdGVkIHRvIGhvZyBDUFUgY3ljbGVzIHNvIHRoYXQgdGhlaXIKKwlleGVjdXRpb24gaXMgcmVndWxhdGVkIGJ5IHRoZSBzeXN0ZW0gc2NoZWR1bGVyLgorCisJQWx0aG91Z2ggQ1BVIGludGVuc2l2ZSB3b3JrIGl0ZW1zIGRvbid0IGNvbnRyaWJ1dGUgdG8gdGhlCisJY29uY3VycmVuY3kgbGV2ZWwsIHN0YXJ0IG9mIHRoZWlyIGV4ZWN1dGlvbnMgaXMgc3RpbGwKKwlyZWd1bGF0ZWQgYnkgdGhlIGNvbmN1cnJlbmN5IG1hbmFnZW1lbnQgYW5kIHJ1bm5hYmxlCisJbm9uLUNQVS1pbnRlbnNpdmUgd29yayBpdGVtcyBjYW4gZGVsYXkgZXhlY3V0aW9uIG9mIENQVQorCWludGVuc2l2ZSB3b3JrIGl0ZW1zLgorCisJVGhpcyBmbGFnIGlzIG1lYW5pbmdsZXNzIGZvciB1bmJvdW5kIHdxLgorCitOb3RlIHRoYXQgdGhlIGZsYWcgV1FfTk9OX1JFRU5UUkFOVCBubyBsb25nZXIgZXhpc3RzIGFzIGFsbCB3b3JrcXVldWVzCithcmUgbm93IG5vbi1yZWVudHJhbnQgLSBhbnkgd29yayBpdGVtIGlzIGd1YXJhbnRlZWQgdG8gYmUgZXhlY3V0ZWQgYnkKK2F0IG1vc3Qgb25lIHdvcmtlciBzeXN0ZW0td2lkZSBhdCBhbnkgZ2l2ZW4gdGltZS4KKworQG1heF9hY3RpdmU6CisKK0BtYXhfYWN0aXZlIGRldGVybWluZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGV4ZWN1dGlvbiBjb250ZXh0cyBwZXIKK0NQVSB3aGljaCBjYW4gYmUgYXNzaWduZWQgdG8gdGhlIHdvcmsgaXRlbXMgb2YgYSB3cS4gIEZvciBleGFtcGxlLAord2l0aCBAbWF4X2FjdGl2ZSBvZiAxNiwgYXQgbW9zdCAxNiB3b3JrIGl0ZW1zIG9mIHRoZSB3cSBjYW4gYmUKK2V4ZWN1dGluZyBhdCB0aGUgc2FtZSB0aW1lIHBlciBDUFUuCisKK0N1cnJlbnRseSwgZm9yIGEgYm91bmQgd3EsIHRoZSBtYXhpbXVtIGxpbWl0IGZvciBAbWF4X2FjdGl2ZSBpcyA1MTIKK2FuZCB0aGUgZGVmYXVsdCB2YWx1ZSB1c2VkIHdoZW4gMCBpcyBzcGVjaWZpZWQgaXMgMjU2LiAgRm9yIGFuIHVuYm91bmQKK3dxLCB0aGUgbGltaXQgaXMgaGlnaGVyIG9mIDUxMiBhbmQgNCAqIG51bV9wb3NzaWJsZV9jcHVzKCkuICBUaGVzZQordmFsdWVzIGFyZSBjaG9zZW4gc3VmZmljaWVudGx5IGhpZ2ggc3VjaCB0aGF0IHRoZXkgYXJlIG5vdCB0aGUKK2xpbWl0aW5nIGZhY3RvciB3aGlsZSBwcm92aWRpbmcgcHJvdGVjdGlvbiBpbiBydW5hd2F5IGNhc2VzLgorCitUaGUgbnVtYmVyIG9mIGFjdGl2ZSB3b3JrIGl0ZW1zIG9mIGEgd3EgaXMgdXN1YWxseSByZWd1bGF0ZWQgYnkgdGhlCit1c2VycyBvZiB0aGUgd3EsIG1vcmUgc3BlY2lmaWNhbGx5LCBieSBob3cgbWFueSB3b3JrIGl0ZW1zIHRoZSB1c2VycworbWF5IHF1ZXVlIGF0IHRoZSBzYW1lIHRpbWUuICBVbmxlc3MgdGhlcmUgaXMgYSBzcGVjaWZpYyBuZWVkIGZvcgordGhyb3R0bGluZyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSB3b3JrIGl0ZW1zLCBzcGVjaWZ5aW5nICcwJyBpcworcmVjb21tZW5kZWQuCisKK1NvbWUgdXNlcnMgZGVwZW5kIG9uIHRoZSBzdHJpY3QgZXhlY3V0aW9uIG9yZGVyaW5nIG9mIFNUIHdxLiAgVGhlCitjb21iaW5hdGlvbiBvZiBAbWF4X2FjdGl2ZSBvZiAxIGFuZCBXUV9VTkJPVU5EIGlzIHVzZWQgdG8gYWNoaWV2ZSB0aGlzCitiZWhhdmlvci4gIFdvcmsgaXRlbXMgb24gc3VjaCB3cSBhcmUgYWx3YXlzIHF1ZXVlZCB0byB0aGUgdW5ib3VuZAord29ya2VyLXBvb2xzIGFuZCBvbmx5IG9uZSB3b3JrIGl0ZW0gY2FuIGJlIGFjdGl2ZSBhdCBhbnkgZ2l2ZW4gdGltZSB0aHVzCithY2hpZXZpbmcgdGhlIHNhbWUgb3JkZXJpbmcgcHJvcGVydHkgYXMgU1Qgd3EuCisKKworNS4gRXhhbXBsZSBFeGVjdXRpb24gU2NlbmFyaW9zCisKK1RoZSBmb2xsb3dpbmcgZXhhbXBsZSBleGVjdXRpb24gc2NlbmFyaW9zIHRyeSB0byBpbGx1c3RyYXRlIGhvdyBjbXdxCitiZWhhdmUgdW5kZXIgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zLgorCisgV29yayBpdGVtcyB3MCwgdzEsIHcyIGFyZSBxdWV1ZWQgdG8gYSBib3VuZCB3cSBxMCBvbiB0aGUgc2FtZSBDUFUuCisgdzAgYnVybnMgQ1BVIGZvciA1bXMgdGhlbiBzbGVlcHMgZm9yIDEwbXMgdGhlbiBidXJucyBDUFUgZm9yIDVtcworIGFnYWluIGJlZm9yZSBmaW5pc2hpbmcuICB3MSBhbmQgdzIgYnVybiBDUFUgZm9yIDVtcyB0aGVuIHNsZWVwIGZvcgorIDEwbXMuCisKK0lnbm9yaW5nIGFsbCBvdGhlciB0YXNrcywgd29ya3MgYW5kIHByb2Nlc3Npbmcgb3ZlcmhlYWQsIGFuZCBhc3N1bWluZworc2ltcGxlIEZJRk8gc2NoZWR1bGluZywgdGhlIGZvbGxvd2luZyBpcyBvbmUgaGlnaGx5IHNpbXBsaWZpZWQgdmVyc2lvbgorb2YgcG9zc2libGUgc2VxdWVuY2VzIG9mIGV2ZW50cyB3aXRoIHRoZSBvcmlnaW5hbCB3cS4KKworIFRJTUUgSU4gTVNFQ1MJRVZFTlQKKyAwCQl3MCBzdGFydHMgYW5kIGJ1cm5zIENQVQorIDUJCXcwIHNsZWVwcworIDE1CQl3MCB3YWtlcyB1cCBhbmQgYnVybnMgQ1BVCisgMjAJCXcwIGZpbmlzaGVzCisgMjAJCXcxIHN0YXJ0cyBhbmQgYnVybnMgQ1BVCisgMjUJCXcxIHNsZWVwcworIDM1CQl3MSB3YWtlcyB1cCBhbmQgZmluaXNoZXMKKyAzNQkJdzIgc3RhcnRzIGFuZCBidXJucyBDUFUKKyA0MAkJdzIgc2xlZXBzCisgNTAJCXcyIHdha2VzIHVwIGFuZCBmaW5pc2hlcworCitBbmQgd2l0aCBjbXdxIHdpdGggQG1heF9hY3RpdmUgPj0gMywKKworIFRJTUUgSU4gTVNFQ1MJRVZFTlQKKyAwCQl3MCBzdGFydHMgYW5kIGJ1cm5zIENQVQorIDUJCXcwIHNsZWVwcworIDUJCXcxIHN0YXJ0cyBhbmQgYnVybnMgQ1BVCisgMTAJCXcxIHNsZWVwcworIDEwCQl3MiBzdGFydHMgYW5kIGJ1cm5zIENQVQorIDE1CQl3MiBzbGVlcHMKKyAxNQkJdzAgd2FrZXMgdXAgYW5kIGJ1cm5zIENQVQorIDIwCQl3MCBmaW5pc2hlcworIDIwCQl3MSB3YWtlcyB1cCBhbmQgZmluaXNoZXMKKyAyNQkJdzIgd2FrZXMgdXAgYW5kIGZpbmlzaGVzCisKK0lmIEBtYXhfYWN0aXZlID09IDIsCisKKyBUSU1FIElOIE1TRUNTCUVWRU5UCisgMAkJdzAgc3RhcnRzIGFuZCBidXJucyBDUFUKKyA1CQl3MCBzbGVlcHMKKyA1CQl3MSBzdGFydHMgYW5kIGJ1cm5zIENQVQorIDEwCQl3MSBzbGVlcHMKKyAxNQkJdzAgd2FrZXMgdXAgYW5kIGJ1cm5zIENQVQorIDIwCQl3MCBmaW5pc2hlcworIDIwCQl3MSB3YWtlcyB1cCBhbmQgZmluaXNoZXMKKyAyMAkJdzIgc3RhcnRzIGFuZCBidXJucyBDUFUKKyAyNQkJdzIgc2xlZXBzCisgMzUJCXcyIHdha2VzIHVwIGFuZCBmaW5pc2hlcworCitOb3csIGxldCdzIGFzc3VtZSB3MSBhbmQgdzIgYXJlIHF1ZXVlZCB0byBhIGRpZmZlcmVudCB3cSBxMSB3aGljaCBoYXMKK1dRX0NQVV9JTlRFTlNJVkUgc2V0LAorCisgVElNRSBJTiBNU0VDUwlFVkVOVAorIDAJCXcwIHN0YXJ0cyBhbmQgYnVybnMgQ1BVCisgNQkJdzAgc2xlZXBzCisgNQkJdzEgYW5kIHcyIHN0YXJ0IGFuZCBidXJuIENQVQorIDEwCQl3MSBzbGVlcHMKKyAxNQkJdzIgc2xlZXBzCisgMTUJCXcwIHdha2VzIHVwIGFuZCBidXJucyBDUFUKKyAyMAkJdzAgZmluaXNoZXMKKyAyMAkJdzEgd2FrZXMgdXAgYW5kIGZpbmlzaGVzCisgMjUJCXcyIHdha2VzIHVwIGFuZCBmaW5pc2hlcworCisKKzYuIEd1aWRlbGluZXMKKworKiBEbyBub3QgZm9yZ2V0IHRvIHVzZSBXUV9NRU1fUkVDTEFJTSBpZiBhIHdxIG1heSBwcm9jZXNzIHdvcmsgaXRlbXMKKyAgd2hpY2ggYXJlIHVzZWQgZHVyaW5nIG1lbW9yeSByZWNsYWltLiAgRWFjaCB3cSB3aXRoIFdRX01FTV9SRUNMQUlNCisgIHNldCBoYXMgYW4gZXhlY3V0aW9uIGNvbnRleHQgcmVzZXJ2ZWQgZm9yIGl0LiAgSWYgdGhlcmUgaXMKKyAgZGVwZW5kZW5jeSBhbW9uZyBtdWx0aXBsZSB3b3JrIGl0ZW1zIHVzZWQgZHVyaW5nIG1lbW9yeSByZWNsYWltLAorICB0aGV5IHNob3VsZCBiZSBxdWV1ZWQgdG8gc2VwYXJhdGUgd3EgZWFjaCB3aXRoIFdRX01FTV9SRUNMQUlNLgorCisqIFVubGVzcyBzdHJpY3Qgb3JkZXJpbmcgaXMgcmVxdWlyZWQsIHRoZXJlIGlzIG5vIG5lZWQgdG8gdXNlIFNUIHdxLgorCisqIFVubGVzcyB0aGVyZSBpcyBhIHNwZWNpZmljIG5lZWQsIHVzaW5nIDAgZm9yIEBtYXhfYWN0aXZlIGlzCisgIHJlY29tbWVuZGVkLiAgSW4gbW9zdCB1c2UgY2FzZXMsIGNvbmN1cnJlbmN5IGxldmVsIHVzdWFsbHkgc3RheXMKKyAgd2VsbCB1bmRlciB0aGUgZGVmYXVsdCBsaW1pdC4KKworKiBBIHdxIHNlcnZlcyBhcyBhIGRvbWFpbiBmb3IgZm9yd2FyZCBwcm9ncmVzcyBndWFyYW50ZWUKKyAgKFdRX01FTV9SRUNMQUlNLCBmbHVzaCBhbmQgd29yayBpdGVtIGF0dHJpYnV0ZXMuICBXb3JrIGl0ZW1zIHdoaWNoCisgIGFyZSBub3QgaW52b2x2ZWQgaW4gbWVtb3J5IHJlY2xhaW0gYW5kIGRvbid0IG5lZWQgdG8gYmUgZmx1c2hlZCBhcyBhCisgIHBhcnQgb2YgYSBncm91cCBvZiB3b3JrIGl0ZW1zLCBhbmQgZG9uJ3QgcmVxdWlyZSBhbnkgc3BlY2lhbAorICBhdHRyaWJ1dGUsIGNhbiB1c2Ugb25lIG9mIHRoZSBzeXN0ZW0gd3EuICBUaGVyZSBpcyBubyBkaWZmZXJlbmNlIGluCisgIGV4ZWN1dGlvbiBjaGFyYWN0ZXJpc3RpY3MgYmV0d2VlbiB1c2luZyBhIGRlZGljYXRlZCB3cSBhbmQgYSBzeXN0ZW0KKyAgd3EuCisKKyogVW5sZXNzIHdvcmsgaXRlbXMgYXJlIGV4cGVjdGVkIHRvIGNvbnN1bWUgYSBodWdlIGFtb3VudCBvZiBDUFUKKyAgY3ljbGVzLCB1c2luZyBhIGJvdW5kIHdxIGlzIHVzdWFsbHkgYmVuZWZpY2lhbCBkdWUgdG8gdGhlIGluY3JlYXNlZAorICBsZXZlbCBvZiBsb2NhbGl0eSBpbiB3cSBvcGVyYXRpb25zIGFuZCB3b3JrIGl0ZW0gZXhlY3V0aW9uLgorCisKKzcuIERlYnVnZ2luZworCitCZWNhdXNlIHRoZSB3b3JrIGZ1bmN0aW9ucyBhcmUgZXhlY3V0ZWQgYnkgZ2VuZXJpYyB3b3JrZXIgdGhyZWFkcwordGhlcmUgYXJlIGEgZmV3IHRyaWNrcyBuZWVkZWQgdG8gc2hlZCBzb21lIGxpZ2h0IG9uIG1pc2JlaGF2aW5nCit3b3JrcXVldWUgdXNlcnMuCisKK1dvcmtlciB0aHJlYWRzIHNob3cgdXAgaW4gdGhlIHByb2Nlc3MgbGlzdCBhczoKKworcm9vdCAgICAgIDU2NzEgIDAuMCAgMC4wICAgICAgMCAgICAgMCA/ICAgICAgICBTICAgIDEyOjA3ICAgMDowMCBba3dvcmtlci8wOjFdCityb290ICAgICAgNTY3MiAgMC4wICAwLjAgICAgICAwICAgICAwID8gICAgICAgIFMgICAgMTI6MDcgICAwOjAwIFtrd29ya2VyLzE6Ml0KK3Jvb3QgICAgICA1NjczICAwLjAgIDAuMCAgICAgIDAgICAgIDAgPyAgICAgICAgUyAgICAxMjoxMiAgIDA6MDAgW2t3b3JrZXIvMDowXQorcm9vdCAgICAgIDU2NzQgIDAuMCAgMC4wICAgICAgMCAgICAgMCA/ICAgICAgICBTICAgIDEyOjEzICAgMDowMCBba3dvcmtlci8xOjBdCisKK0lmIGt3b3JrZXJzIGFyZSBnb2luZyBjcmF6eSAodXNpbmcgdG9vIG11Y2ggY3B1KSwgdGhlcmUgYXJlIHR3byB0eXBlcworb2YgcG9zc2libGUgcHJvYmxlbXM6CisKKwkxLiBTb21ldGhpbmcgYmVpbmcgc2NoZWR1bGVkIGluIHJhcGlkIHN1Y2Nlc3Npb24KKwkyLiBBIHNpbmdsZSB3b3JrIGl0ZW0gdGhhdCBjb25zdW1lcyBsb3RzIG9mIGNwdSBjeWNsZXMKKworVGhlIGZpcnN0IG9uZSBjYW4gYmUgdHJhY2tlZCB1c2luZyB0cmFjaW5nOgorCisJJCBlY2hvIHdvcmtxdWV1ZTp3b3JrcXVldWVfcXVldWVfd29yayA+IC9zeXMva2VybmVsL2RlYnVnL3RyYWNpbmcvc2V0X2V2ZW50CisJJCBjYXQgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjZV9waXBlID4gb3V0LnR4dAorCSh3YWl0IGEgZmV3IHNlY3MpCisJXkMKKworSWYgc29tZXRoaW5nIGlzIGJ1c3kgbG9vcGluZyBvbiB3b3JrIHF1ZXVlaW5nLCBpdCB3b3VsZCBiZSBkb21pbmF0aW5nCit0aGUgb3V0cHV0IGFuZCB0aGUgb2ZmZW5kZXIgY2FuIGJlIGRldGVybWluZWQgd2l0aCB0aGUgd29yayBpdGVtCitmdW5jdGlvbi4KKworRm9yIHRoZSBzZWNvbmQgdHlwZSBvZiBwcm9ibGVtcyBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8ganVzdCBjaGVjawordGhlIHN0YWNrIHRyYWNlIG9mIHRoZSBvZmZlbmRpbmcgd29ya2VyIHRocmVhZC4KKworCSQgY2F0IC9wcm9jL1RIRV9PRkZFTkRJTkdfS1dPUktFUi9zdGFjaworCitUaGUgd29yayBpdGVtJ3MgZnVuY3Rpb24gc2hvdWxkIGJlIHRyaXZpYWxseSB2aXNpYmxlIGluIHRoZSBzdGFjawordHJhY2UuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3g4Ni8wMC1JTkRFWCBiL0RvY3VtZW50YXRpb24veDg2LzAwLUlOREVYCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5MjI2NDQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3g4Ni8wMC1JTkRFWApAQCAtMCwwICsxLDIwIEBACiswMC1JTkRFWAorCS0gdGhpcyBmaWxlCitib290LnR4dAorCS0gTGlzdCBvZiBib290IHByb3RvY29sIHZlcnNpb25zCitlYXJseS1taWNyb2NvZGUudHh0CisJLSBIb3cgdG8gbG9hZCBtaWNyb2NvZGUgZnJvbSBhbiBpbml0cmQtQ1BJTyBhcmNoaXZlIGVhcmx5IHRvIGZpeCBDUFUgaXNzdWVzLgorZWFybHlwcmludGsudHh0CisJLSBVc2luZyBlYXJseXByaW50ayB3aXRoIGEgVVNCMiBkZWJ1ZyBwb3J0IGtleS4KK2VudHJ5XzY0LnR4dAorCS0gRGVzY3JpYmUgKHNvbWUgb2YgdGhlKSBrZXJuZWwgZW50cnkgcG9pbnRzIGZvciB4ODYuCitleGNlcHRpb24tdGFibGVzLnR4dAorCS0gd2h5IGFuZCBob3cgTGludXgga2VybmVsIHVzZXMgZXhjZXB0aW9uIHRhYmxlcyBvbiB4ODYKK210cnIudHh0CisJLSBob3cgdG8gdXNlIHg4NiBNZW1vcnkgVHlwZSBSYW5nZSBSZWdpc3RlcnMgdG8gaW5jcmVhc2UgcGVyZm9ybWFuY2UKK3BhdC50eHQKKwktIFBhZ2UgQXR0cmlidXRlIFRhYmxlIGludHJvIGFuZCBBUEkKK3VzYi1sZWdhY3ktc3VwcG9ydC50eHQKKwktIGhvdyB0byBmaXgvYXZvaWQgcXVpcmtzIHdoZW4gdXNpbmcgZW11bGF0ZWQgUFMvMiBtb3VzZS9rZXlib2FyZC4KK3plcm8tcGFnZS50eHQKKwktIGxheW91dCBvZiB0aGUgZmlyc3QgcGFnZSBvZiBtZW1vcnkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3g4Ni9ib290LnR4dCBiL0RvY3VtZW50YXRpb24veDg2L2Jvb3QudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkYTZmMzUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3g4Ni9ib290LnR4dApAQCAtMCwwICsxLDExMzAgQEAKKwkJICAgICBUSEUgTElOVVgveDg2IEJPT1QgUFJPVE9DT0wKKwkJICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT24gdGhlIHg4NiBwbGF0Zm9ybSwgdGhlIExpbnV4IGtlcm5lbCB1c2VzIGEgcmF0aGVyIGNvbXBsaWNhdGVkIGJvb3QKK2NvbnZlbnRpb24uICBUaGlzIGhhcyBldm9sdmVkIHBhcnRpYWxseSBkdWUgdG8gaGlzdG9yaWNhbCBhc3BlY3RzLCBhcword2VsbCBhcyB0aGUgZGVzaXJlIGluIHRoZSBlYXJseSBkYXlzIHRvIGhhdmUgdGhlIGtlcm5lbCBpdHNlbGYgYmUgYQorYm9vdGFibGUgaW1hZ2UsIHRoZSBjb21wbGljYXRlZCBQQyBtZW1vcnkgbW9kZWwgYW5kIGR1ZSB0byBjaGFuZ2VkCitleHBlY3RhdGlvbnMgaW4gdGhlIFBDIGluZHVzdHJ5IGNhdXNlZCBieSB0aGUgZWZmZWN0aXZlIGRlbWlzZSBvZgorcmVhbC1tb2RlIERPUyBhcyBhIG1haW5zdHJlYW0gb3BlcmF0aW5nIHN5c3RlbS4KKworQ3VycmVudGx5LCB0aGUgZm9sbG93aW5nIHZlcnNpb25zIG9mIHRoZSBMaW51eC94ODYgYm9vdCBwcm90b2NvbCBleGlzdC4KKworT2xkIGtlcm5lbHM6CXpJbWFnZS9JbWFnZSBzdXBwb3J0IG9ubHkuICBTb21lIHZlcnkgZWFybHkga2VybmVscworCQltYXkgbm90IGV2ZW4gc3VwcG9ydCBhIGNvbW1hbmQgbGluZS4KKworUHJvdG9jb2wgMi4wMDoJKEtlcm5lbCAxLjMuNzMpIEFkZGVkIGJ6SW1hZ2UgYW5kIGluaXRyZCBzdXBwb3J0LCBhcworCQl3ZWxsIGFzIGEgZm9ybWFsaXplZCB3YXkgdG8gY29tbXVuaWNhdGUgYmV0d2VlbiB0aGUKKwkJYm9vdCBsb2FkZXIgYW5kIHRoZSBrZXJuZWwuICBzZXR1cC5TIG1hZGUgcmVsb2NhdGFibGUsCisJCWFsdGhvdWdoIHRoZSB0cmFkaXRpb25hbCBzZXR1cCBhcmVhIHN0aWxsIGFzc3VtZWQKKwkJd3JpdGFibGUuCisKK1Byb3RvY29sIDIuMDE6CShLZXJuZWwgMS4zLjc2KSBBZGRlZCBhIGhlYXAgb3ZlcnJ1biB3YXJuaW5nLgorCitQcm90b2NvbCAyLjAyOgkoS2VybmVsIDIuNC4wLXRlc3QzLXByZTMpIE5ldyBjb21tYW5kIGxpbmUgcHJvdG9jb2wuCisJCUxvd2VyIHRoZSBjb252ZW50aW9uYWwgbWVtb3J5IGNlaWxpbmcuCU5vIG92ZXJ3cml0ZQorCQlvZiB0aGUgdHJhZGl0aW9uYWwgc2V0dXAgYXJlYSwgdGh1cyBtYWtpbmcgYm9vdGluZworCQlzYWZlIGZvciBzeXN0ZW1zIHdoaWNoIHVzZSB0aGUgRUJEQSBmcm9tIFNNTSBvciAzMi1iaXQKKwkJQklPUyBlbnRyeSBwb2ludHMuICB6SW1hZ2UgZGVwcmVjYXRlZCBidXQgc3RpbGwKKwkJc3VwcG9ydGVkLgorCitQcm90b2NvbCAyLjAzOgkoS2VybmVsIDIuNC4xOC1wcmUxKSBFeHBsaWNpdGx5IG1ha2VzIHRoZSBoaWdoZXN0IHBvc3NpYmxlCisJCWluaXRyZCBhZGRyZXNzIGF2YWlsYWJsZSB0byB0aGUgYm9vdGxvYWRlci4KKworUHJvdG9jb2wgMi4wNDoJKEtlcm5lbCAyLjYuMTQpIEV4dGVuZCB0aGUgc3lzc2l6ZSBmaWVsZCB0byBmb3VyIGJ5dGVzLgorCitQcm90b2NvbCAyLjA1OgkoS2VybmVsIDIuNi4yMCkgTWFrZSBwcm90ZWN0ZWQgbW9kZSBrZXJuZWwgcmVsb2NhdGFibGUuCisJCUludHJvZHVjZSByZWxvY2F0YWJsZV9rZXJuZWwgYW5kIGtlcm5lbF9hbGlnbm1lbnQgZmllbGRzLgorCitQcm90b2NvbCAyLjA2OgkoS2VybmVsIDIuNi4yMikgQWRkZWQgYSBmaWVsZCB0aGF0IGNvbnRhaW5zIHRoZSBzaXplIG9mCisJCXRoZSBib290IGNvbW1hbmQgbGluZS4KKworUHJvdG9jb2wgMi4wNzoJKEtlcm5lbCAyLjYuMjQpIEFkZGVkIHBhcmF2aXJ0dWFsaXNlZCBib290IHByb3RvY29sLgorCQlJbnRyb2R1Y2VkIGhhcmR3YXJlX3N1YmFyY2ggYW5kIGhhcmR3YXJlX3N1YmFyY2hfZGF0YQorCQlhbmQgS0VFUF9TRUdNRU5UUyBmbGFnIGluIGxvYWRfZmxhZ3MuCisKK1Byb3RvY29sIDIuMDg6CShLZXJuZWwgMi42LjI2KSBBZGRlZCBjcmMzMiBjaGVja3N1bSBhbmQgRUxGIGZvcm1hdAorCQlwYXlsb2FkLiBJbnRyb2R1Y2VkIHBheWxvYWRfb2Zmc2V0IGFuZCBwYXlsb2FkX2xlbmd0aAorCQlmaWVsZHMgdG8gYWlkIGluIGxvY2F0aW5nIHRoZSBwYXlsb2FkLgorCitQcm90b2NvbCAyLjA5OgkoS2VybmVsIDIuNi4yNikgQWRkZWQgYSBmaWVsZCBvZiA2NC1iaXQgcGh5c2ljYWwKKwkJcG9pbnRlciB0byBzaW5nbGUgbGlua2VkIGxpc3Qgb2Ygc3RydWN0CXNldHVwX2RhdGEuCisKK1Byb3RvY29sIDIuMTA6CShLZXJuZWwgMi42LjMxKSBBZGRlZCBhIHByb3RvY29sIGZvciByZWxheGVkIGFsaWdubWVudAorCQliZXlvbmQgdGhlIGtlcm5lbF9hbGlnbm1lbnQgYWRkZWQsIG5ldyBpbml0X3NpemUgYW5kCisJCXByZWZfYWRkcmVzcyBmaWVsZHMuICBBZGRlZCBleHRlbmRlZCBib290IGxvYWRlciBJRHMuCisKK1Byb3RvY29sIDIuMTE6CShLZXJuZWwgMy42KSBBZGRlZCBhIGZpZWxkIGZvciBvZmZzZXQgb2YgRUZJIGhhbmRvdmVyCisJCXByb3RvY29sIGVudHJ5IHBvaW50LgorCitQcm90b2NvbCAyLjEyOgkoS2VybmVsIDMuOCkgQWRkZWQgdGhlIHhsb2FkZmxhZ3MgZmllbGQgYW5kIGV4dGVuc2lvbiBmaWVsZHMKKwkgCXRvIHN0cnVjdCBib290X3BhcmFtcyBmb3IgbG9hZGluZyBiekltYWdlIGFuZCByYW1kaXNrCisJCWFib3ZlIDRHIGluIDY0Yml0LgorCisqKioqIE1FTU9SWSBMQVlPVVQKKworVGhlIHRyYWRpdGlvbmFsIG1lbW9yeSBtYXAgZm9yIHRoZSBrZXJuZWwgbG9hZGVyLCB1c2VkIGZvciBJbWFnZSBvcgorekltYWdlIGtlcm5lbHMsIHR5cGljYWxseSBsb29rcyBsaWtlOgorCisJfAkJCSB8CiswQTAwMDAJKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKwl8ICBSZXNlcnZlZCBmb3IgQklPUwkgfAlEbyBub3QgdXNlLiAgUmVzZXJ2ZWQgZm9yIEJJT1MgRUJEQS4KKzA5QTAwMAkrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCXwgIENvbW1hbmQgbGluZQkJIHwKKwl8ICBTdGFjay9oZWFwCQkgfAlGb3IgdXNlIGJ5IHRoZSBrZXJuZWwgcmVhbC1tb2RlIGNvZGUuCiswOTgwMDAJKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsJCisJfCAgS2VybmVsIHNldHVwCQkgfAlUaGUga2VybmVsIHJlYWwtbW9kZSBjb2RlLgorMDkwMjAwCSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisJfCAgS2VybmVsIGJvb3Qgc2VjdG9yCSB8CVRoZSBrZXJuZWwgbGVnYWN5IGJvb3Qgc2VjdG9yLgorMDkwMDAwCSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisJfCAgUHJvdGVjdGVkLW1vZGUga2VybmVsIHwJVGhlIGJ1bGsgb2YgdGhlIGtlcm5lbCBpbWFnZS4KKzAxMDAwMAkrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCXwgIEJvb3QgbG9hZGVyCQkgfAk8LSBCb290IHNlY3RvciBlbnRyeSBwb2ludCAwMDAwOjdDMDAKKzAwMTAwMAkrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCXwgIFJlc2VydmVkIGZvciBNQlIvQklPUyB8CiswMDA4MDAJKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKwl8ICBUeXBpY2FsbHkgdXNlZCBieSBNQlIgfAorMDAwNjAwCSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIAorCXwgIEJJT1MgdXNlIG9ubHkJIHwKKzAwMDAwMAkrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisKK1doZW4gdXNpbmcgYnpJbWFnZSwgdGhlIHByb3RlY3RlZC1tb2RlIGtlcm5lbCB3YXMgcmVsb2NhdGVkIHRvCisweDEwMDAwMCAoImhpZ2ggbWVtb3J5IiksIGFuZCB0aGUga2VybmVsIHJlYWwtbW9kZSBibG9jayAoYm9vdCBzZWN0b3IsCitzZXR1cCwgYW5kIHN0YWNrL2hlYXApIHdhcyBtYWRlIHJlbG9jYXRhYmxlIHRvIGFueSBhZGRyZXNzIGJldHdlZW4KKzB4MTAwMDAgYW5kIGVuZCBvZiBsb3cgbWVtb3J5LiBVbmZvcnR1bmF0ZWx5LCBpbiBwcm90b2NvbHMgMi4wMCBhbmQKKzIuMDEgdGhlIDB4OTAwMDArIG1lbW9yeSByYW5nZSBpcyBzdGlsbCB1c2VkIGludGVybmFsbHkgYnkgdGhlIGtlcm5lbDsKK3RoZSAyLjAyIHByb3RvY29sIHJlc29sdmVzIHRoYXQgcHJvYmxlbS4KKworSXQgaXMgZGVzaXJhYmxlIHRvIGtlZXAgdGhlICJtZW1vcnkgY2VpbGluZyIgLS0gdGhlIGhpZ2hlc3QgcG9pbnQgaW4KK2xvdyBtZW1vcnkgdG91Y2hlZCBieSB0aGUgYm9vdCBsb2FkZXIgLS0gYXMgbG93IGFzIHBvc3NpYmxlLCBzaW5jZQorc29tZSBuZXdlciBCSU9TZXMgaGF2ZSBiZWd1biB0byBhbGxvY2F0ZSBzb21lIHJhdGhlciBsYXJnZSBhbW91bnRzIG9mCittZW1vcnksIGNhbGxlZCB0aGUgRXh0ZW5kZWQgQklPUyBEYXRhIEFyZWEsIG5lYXIgdGhlIHRvcCBvZiBsb3cKK21lbW9yeS4JIFRoZSBib290IGxvYWRlciBzaG91bGQgdXNlIHRoZSAiSU5UIDEyaCIgQklPUyBjYWxsIHRvIHZlcmlmeQoraG93IG11Y2ggbG93IG1lbW9yeSBpcyBhdmFpbGFibGUuCisKK1VuZm9ydHVuYXRlbHksIGlmIElOVCAxMmggcmVwb3J0cyB0aGF0IHRoZSBhbW91bnQgb2YgbWVtb3J5IGlzIHRvbworbG93LCB0aGVyZSBpcyB1c3VhbGx5IG5vdGhpbmcgdGhlIGJvb3QgbG9hZGVyIGNhbiBkbyBidXQgdG8gcmVwb3J0IGFuCitlcnJvciB0byB0aGUgdXNlci4gIFRoZSBib290IGxvYWRlciBzaG91bGQgdGhlcmVmb3JlIGJlIGRlc2lnbmVkIHRvCit0YWtlIHVwIGFzIGxpdHRsZSBzcGFjZSBpbiBsb3cgbWVtb3J5IGFzIGl0IHJlYXNvbmFibHkgY2FuLiAgRm9yCit6SW1hZ2Ugb3Igb2xkIGJ6SW1hZ2Uga2VybmVscywgd2hpY2ggbmVlZCBkYXRhIHdyaXR0ZW4gaW50byB0aGUKKzB4OTAwMDAgc2VnbWVudCwgdGhlIGJvb3QgbG9hZGVyIHNob3VsZCBtYWtlIHN1cmUgbm90IHRvIHVzZSBtZW1vcnkKK2Fib3ZlIHRoZSAweDlBMDAwIHBvaW50OyB0b28gbWFueSBCSU9TZXMgd2lsbCBicmVhayBhYm92ZSB0aGF0IHBvaW50LgorCitGb3IgYSBtb2Rlcm4gYnpJbWFnZSBrZXJuZWwgd2l0aCBib290IHByb3RvY29sIHZlcnNpb24gPj0gMi4wMiwgYQorbWVtb3J5IGxheW91dCBsaWtlIHRoZSBmb2xsb3dpbmcgaXMgc3VnZ2VzdGVkOgorCisJfiAgICAgICAgICAgICAgICAgICAgICAgIH4KKyAgICAgICAgfCAgUHJvdGVjdGVkLW1vZGUga2VybmVsIHwKKzEwMDAwMCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKwl8ICBJL08gbWVtb3J5IGhvbGUJIHwKKzBBMDAwMAkrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCXwgIFJlc2VydmVkIGZvciBCSU9TCSB8CUxlYXZlIGFzIG11Y2ggYXMgcG9zc2libGUgdW51c2VkCisJfiAgICAgICAgICAgICAgICAgICAgICAgIH4KKwl8ICBDb21tYW5kIGxpbmUJCSB8CShDYW4gYWxzbyBiZSBiZWxvdyB0aGUgWCsxMDAwMCBtYXJrKQorWCsxMDAwMAkrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCXwgIFN0YWNrL2hlYXAJCSB8CUZvciB1c2UgYnkgdGhlIGtlcm5lbCByZWFsLW1vZGUgY29kZS4KK1grMDgwMDAJKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsJCisJfCAgS2VybmVsIHNldHVwCQkgfAlUaGUga2VybmVsIHJlYWwtbW9kZSBjb2RlLgorCXwgIEtlcm5lbCBib290IHNlY3RvcgkgfAlUaGUga2VybmVsIGxlZ2FjeSBib290IHNlY3Rvci4KK1ggICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKwl8ICBCb290IGxvYWRlcgkJIHwJPC0gQm9vdCBzZWN0b3IgZW50cnkgcG9pbnQgMDAwMDo3QzAwCiswMDEwMDAJKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKwl8ICBSZXNlcnZlZCBmb3IgTUJSL0JJT1MgfAorMDAwODAwCSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisJfCAgVHlwaWNhbGx5IHVzZWQgYnkgTUJSIHwKKzAwMDYwMAkrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAKKwl8ICBCSU9TIHVzZSBvbmx5CSB8CiswMDAwMDAJKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworLi4uIHdoZXJlIHRoZSBhZGRyZXNzIFggaXMgYXMgbG93IGFzIHRoZSBkZXNpZ24gb2YgdGhlIGJvb3QgbG9hZGVyCitwZXJtaXRzLgorCisKKyoqKiogVEhFIFJFQUwtTU9ERSBLRVJORUwgSEVBREVSCisKK0luIHRoZSBmb2xsb3dpbmcgdGV4dCwgYW5kIGFueXdoZXJlIGluIHRoZSBrZXJuZWwgYm9vdCBzZXF1ZW5jZSwgImEKK3NlY3RvciIgcmVmZXJzIHRvIDUxMiBieXRlcy4gIEl0IGlzIGluZGVwZW5kZW50IG9mIHRoZSBhY3R1YWwgc2VjdG9yCitzaXplIG9mIHRoZSB1bmRlcmx5aW5nIG1lZGl1bS4KKworVGhlIGZpcnN0IHN0ZXAgaW4gbG9hZGluZyBhIExpbnV4IGtlcm5lbCBzaG91bGQgYmUgdG8gbG9hZCB0aGUKK3JlYWwtbW9kZSBjb2RlIChib290IHNlY3RvciBhbmQgc2V0dXAgY29kZSkgYW5kIHRoZW4gZXhhbWluZSB0aGUKK2ZvbGxvd2luZyBoZWFkZXIgYXQgb2Zmc2V0IDB4MDFmMS4gIFRoZSByZWFsLW1vZGUgY29kZSBjYW4gdG90YWwgdXAgdG8KKzMySywgYWx0aG91Z2ggdGhlIGJvb3QgbG9hZGVyIG1heSBjaG9vc2UgdG8gbG9hZCBvbmx5IHRoZSBmaXJzdCB0d28KK3NlY3RvcnMgKDFLKSBhbmQgdGhlbiBleGFtaW5lIHRoZSBib290dXAgc2VjdG9yIHNpemUuCisKK1RoZSBoZWFkZXIgbG9va3MgbGlrZToKKworT2Zmc2V0CVByb3RvCU5hbWUJCU1lYW5pbmcKKy9TaXplCisKKzAxRjEvMQlBTEwoMQlzZXR1cF9zZWN0cwlUaGUgc2l6ZSBvZiB0aGUgc2V0dXAgaW4gc2VjdG9ycworMDFGMi8yCUFMTAlyb290X2ZsYWdzCUlmIHNldCwgdGhlIHJvb3QgaXMgbW91bnRlZCByZWFkb25seQorMDFGNC80CTIuMDQrKDIJc3lzc2l6ZQkJVGhlIHNpemUgb2YgdGhlIDMyLWJpdCBjb2RlIGluIDE2LWJ5dGUgcGFyYXMKKzAxRjgvMglBTEwJcmFtX3NpemUJRE8gTk9UIFVTRSAtIGZvciBib290c2VjdC5TIHVzZSBvbmx5CiswMUZBLzIJQUxMCXZpZF9tb2RlCVZpZGVvIG1vZGUgY29udHJvbAorMDFGQy8yCUFMTAlyb290X2RldglEZWZhdWx0IHJvb3QgZGV2aWNlIG51bWJlcgorMDFGRS8yCUFMTAlib290X2ZsYWcJMHhBQTU1IG1hZ2ljIG51bWJlcgorMDIwMC8yCTIuMDArCWp1bXAJCUp1bXAgaW5zdHJ1Y3Rpb24KKzAyMDIvNAkyLjAwKwloZWFkZXIJCU1hZ2ljIHNpZ25hdHVyZSAiSGRyUyIKKzAyMDYvMgkyLjAwKwl2ZXJzaW9uCQlCb290IHByb3RvY29sIHZlcnNpb24gc3VwcG9ydGVkCiswMjA4LzQJMi4wMCsJcmVhbG1vZGVfc3d0Y2gJQm9vdCBsb2FkZXIgaG9vayAoc2VlIGJlbG93KQorMDIwQy8yCTIuMDArCXN0YXJ0X3N5c19zZWcJVGhlIGxvYWQtbG93IHNlZ21lbnQgKDB4MTAwMCkgKG9ic29sZXRlKQorMDIwRS8yCTIuMDArCWtlcm5lbF92ZXJzaW9uCVBvaW50ZXIgdG8ga2VybmVsIHZlcnNpb24gc3RyaW5nCiswMjEwLzEJMi4wMCsJdHlwZV9vZl9sb2FkZXIJQm9vdCBsb2FkZXIgaWRlbnRpZmllcgorMDIxMS8xCTIuMDArCWxvYWRmbGFncwlCb290IHByb3RvY29sIG9wdGlvbiBmbGFncworMDIxMi8yCTIuMDArCXNldHVwX21vdmVfc2l6ZQlNb3ZlIHRvIGhpZ2ggbWVtb3J5IHNpemUgKHVzZWQgd2l0aCBob29rcykKKzAyMTQvNAkyLjAwKwljb2RlMzJfc3RhcnQJQm9vdCBsb2FkZXIgaG9vayAoc2VlIGJlbG93KQorMDIxOC80CTIuMDArCXJhbWRpc2tfaW1hZ2UJaW5pdHJkIGxvYWQgYWRkcmVzcyAoc2V0IGJ5IGJvb3QgbG9hZGVyKQorMDIxQy80CTIuMDArCXJhbWRpc2tfc2l6ZQlpbml0cmQgc2l6ZSAoc2V0IGJ5IGJvb3QgbG9hZGVyKQorMDIyMC80CTIuMDArCWJvb3RzZWN0X2tsdWRnZQlETyBOT1QgVVNFIC0gZm9yIGJvb3RzZWN0LlMgdXNlIG9ubHkKKzAyMjQvMgkyLjAxKwloZWFwX2VuZF9wdHIJRnJlZSBtZW1vcnkgYWZ0ZXIgc2V0dXAgZW5kCiswMjI2LzEJMi4wMisoMyBleHRfbG9hZGVyX3ZlcglFeHRlbmRlZCBib290IGxvYWRlciB2ZXJzaW9uCiswMjI3LzEJMi4wMisoMwlleHRfbG9hZGVyX3R5cGUJRXh0ZW5kZWQgYm9vdCBsb2FkZXIgSUQKKzAyMjgvNAkyLjAyKwljbWRfbGluZV9wdHIJMzItYml0IHBvaW50ZXIgdG8gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUKKzAyMkMvNAkyLjAzKwlpbml0cmRfYWRkcl9tYXgJSGlnaGVzdCBsZWdhbCBpbml0cmQgYWRkcmVzcworMDIzMC80CTIuMDUrCWtlcm5lbF9hbGlnbm1lbnQgUGh5c2ljYWwgYWRkciBhbGlnbm1lbnQgcmVxdWlyZWQgZm9yIGtlcm5lbAorMDIzNC8xCTIuMDUrCXJlbG9jYXRhYmxlX2tlcm5lbCBXaGV0aGVyIGtlcm5lbCBpcyByZWxvY2F0YWJsZSBvciBub3QKKzAyMzUvMQkyLjEwKwltaW5fYWxpZ25tZW50CU1pbmltdW0gYWxpZ25tZW50LCBhcyBhIHBvd2VyIG9mIHR3bworMDIzNi8yCTIuMTIrCXhsb2FkZmxhZ3MJQm9vdCBwcm90b2NvbCBvcHRpb24gZmxhZ3MKKzAyMzgvNAkyLjA2KwljbWRsaW5lX3NpemUJTWF4aW11bSBzaXplIG9mIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lCiswMjNDLzQJMi4wNysJaGFyZHdhcmVfc3ViYXJjaCBIYXJkd2FyZSBzdWJhcmNoaXRlY3R1cmUKKzAyNDAvOAkyLjA3KwloYXJkd2FyZV9zdWJhcmNoX2RhdGEgU3ViYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGRhdGEKKzAyNDgvNAkyLjA4KwlwYXlsb2FkX29mZnNldAlPZmZzZXQgb2Yga2VybmVsIHBheWxvYWQKKzAyNEMvNAkyLjA4KwlwYXlsb2FkX2xlbmd0aAlMZW5ndGggb2Yga2VybmVsIHBheWxvYWQKKzAyNTAvOAkyLjA5KwlzZXR1cF9kYXRhCTY0LWJpdCBwaHlzaWNhbCBwb2ludGVyIHRvIGxpbmtlZCBsaXN0CisJCQkJb2Ygc3RydWN0IHNldHVwX2RhdGEKKzAyNTgvOAkyLjEwKwlwcmVmX2FkZHJlc3MJUHJlZmVycmVkIGxvYWRpbmcgYWRkcmVzcworMDI2MC80CTIuMTArCWluaXRfc2l6ZQlMaW5lYXIgbWVtb3J5IHJlcXVpcmVkIGR1cmluZyBpbml0aWFsaXphdGlvbgorMDI2NC80CTIuMTErCWhhbmRvdmVyX29mZnNldAlPZmZzZXQgb2YgaGFuZG92ZXIgZW50cnkgcG9pbnQKKworKDEpIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgaWYgdGhlIHNldHVwX3NlY3RzIGZpZWxkIGNvbnRhaW5zIDAsIHRoZQorICAgIHJlYWwgdmFsdWUgaXMgNC4KKworKDIpIEZvciBib290IHByb3RvY29sIHByaW9yIHRvIDIuMDQsIHRoZSB1cHBlciB0d28gYnl0ZXMgb2YgdGhlIHN5c3NpemUKKyAgICBmaWVsZCBhcmUgdW51c2FibGUsIHdoaWNoIG1lYW5zIHRoZSBzaXplIG9mIGEgYnpJbWFnZSBrZXJuZWwKKyAgICBjYW5ub3QgYmUgZGV0ZXJtaW5lZC4KKworKDMpIElnbm9yZWQsIGJ1dCBzYWZlIHRvIHNldCwgZm9yIGJvb3QgcHJvdG9jb2xzIDIuMDItMi4wOS4KKworSWYgdGhlICJIZHJTIiAoMHg1MzcyNjQ0OCkgbWFnaWMgbnVtYmVyIGlzIG5vdCBmb3VuZCBhdCBvZmZzZXQgMHgyMDIsCit0aGUgYm9vdCBwcm90b2NvbCB2ZXJzaW9uIGlzICJvbGQiLiAgTG9hZGluZyBhbiBvbGQga2VybmVsLCB0aGUKK2ZvbGxvd2luZyBwYXJhbWV0ZXJzIHNob3VsZCBiZSBhc3N1bWVkOgorCisJSW1hZ2UgdHlwZSA9IHpJbWFnZQorCWluaXRyZCBub3Qgc3VwcG9ydGVkCisJUmVhbC1tb2RlIGtlcm5lbCBtdXN0IGJlIGxvY2F0ZWQgYXQgMHg5MDAwMC4KKworT3RoZXJ3aXNlLCB0aGUgInZlcnNpb24iIGZpZWxkIGNvbnRhaW5zIHRoZSBwcm90b2NvbCB2ZXJzaW9uLAorZS5nLiBwcm90b2NvbCB2ZXJzaW9uIDIuMDEgd2lsbCBjb250YWluIDB4MDIwMSBpbiB0aGlzIGZpZWxkLiAgV2hlbgorc2V0dGluZyBmaWVsZHMgaW4gdGhlIGhlYWRlciwgeW91IG11c3QgbWFrZSBzdXJlIG9ubHkgdG8gc2V0IGZpZWxkcworc3VwcG9ydGVkIGJ5IHRoZSBwcm90b2NvbCB2ZXJzaW9uIGluIHVzZS4KKworCisqKioqIERFVEFJTFMgT0YgSEVBREVSIEZJRUxEUworCitGb3IgZWFjaCBmaWVsZCwgc29tZSBhcmUgaW5mb3JtYXRpb24gZnJvbSB0aGUga2VybmVsIHRvIHRoZSBib290bG9hZGVyCisoInJlYWQiKSwgc29tZSBhcmUgZXhwZWN0ZWQgdG8gYmUgZmlsbGVkIG91dCBieSB0aGUgYm9vdGxvYWRlcgorKCJ3cml0ZSIpLCBhbmQgc29tZSBhcmUgZXhwZWN0ZWQgdG8gYmUgcmVhZCBhbmQgbW9kaWZpZWQgYnkgdGhlCitib290bG9hZGVyICgibW9kaWZ5IikuCisKK0FsbCBnZW5lcmFsIHB1cnBvc2UgYm9vdCBsb2FkZXJzIHNob3VsZCB3cml0ZSB0aGUgZmllbGRzIG1hcmtlZAorKG9ibGlnYXRvcnkpLiAgQm9vdCBsb2FkZXJzIHdobyB3YW50IHRvIGxvYWQgdGhlIGtlcm5lbCBhdCBhCitub25zdGFuZGFyZCBhZGRyZXNzIHNob3VsZCBmaWxsIGluIHRoZSBmaWVsZHMgbWFya2VkIChyZWxvYyk7IG90aGVyCitib290IGxvYWRlcnMgY2FuIGlnbm9yZSB0aG9zZSBmaWVsZHMuCisKK1RoZSBieXRlIG9yZGVyIG9mIGFsbCBmaWVsZHMgaXMgbGl0dGxlZW5kaWFuICh0aGlzIGlzIHg4NiwgYWZ0ZXIgYWxsLikKKworRmllbGQgbmFtZToJc2V0dXBfc2VjdHMKK1R5cGU6CQlyZWFkCitPZmZzZXQvc2l6ZToJMHgxZjEvMQorUHJvdG9jb2w6CUFMTAorCisgIFRoZSBzaXplIG9mIHRoZSBzZXR1cCBjb2RlIGluIDUxMi1ieXRlIHNlY3RvcnMuICBJZiB0aGlzIGZpZWxkIGlzCisgIDAsIHRoZSByZWFsIHZhbHVlIGlzIDQuICBUaGUgcmVhbC1tb2RlIGNvZGUgY29uc2lzdHMgb2YgdGhlIGJvb3QKKyAgc2VjdG9yIChhbHdheXMgb25lIDUxMi1ieXRlIHNlY3RvcikgcGx1cyB0aGUgc2V0dXAgY29kZS4KKworRmllbGQgbmFtZToJIHJvb3RfZmxhZ3MKK1R5cGU6CQkgbW9kaWZ5IChvcHRpb25hbCkKK09mZnNldC9zaXplOgkgMHgxZjIvMgorUHJvdG9jb2w6CSBBTEwKKworICBJZiB0aGlzIGZpZWxkIGlzIG5vbnplcm8sIHRoZSByb290IGRlZmF1bHRzIHRvIHJlYWRvbmx5LiAgVGhlIHVzZSBvZgorICB0aGlzIGZpZWxkIGlzIGRlcHJlY2F0ZWQ7IHVzZSB0aGUgInJvIiBvciAicnciIG9wdGlvbnMgb24gdGhlCisgIGNvbW1hbmQgbGluZSBpbnN0ZWFkLgorCitGaWVsZCBuYW1lOglzeXNzaXplCitUeXBlOgkJcmVhZAorT2Zmc2V0L3NpemU6CTB4MWY0LzQgKHByb3RvY29sIDIuMDQrKSAweDFmNC8yIChwcm90b2NvbCBBTEwpCitQcm90b2NvbDoJMi4wNCsKKworICBUaGUgc2l6ZSBvZiB0aGUgcHJvdGVjdGVkLW1vZGUgY29kZSBpbiB1bml0cyBvZiAxNi1ieXRlIHBhcmFncmFwaHMuCisgIEZvciBwcm90b2NvbCB2ZXJzaW9ucyBvbGRlciB0aGFuIDIuMDQgdGhpcyBmaWVsZCBpcyBvbmx5IHR3byBieXRlcworICB3aWRlLCBhbmQgdGhlcmVmb3JlIGNhbm5vdCBiZSB0cnVzdGVkIGZvciB0aGUgc2l6ZSBvZiBhIGtlcm5lbCBpZgorICB0aGUgTE9BRF9ISUdIIGZsYWcgaXMgc2V0LgorCitGaWVsZCBuYW1lOglyYW1fc2l6ZQorVHlwZToJCWtlcm5lbCBpbnRlcm5hbAorT2Zmc2V0L3NpemU6CTB4MWY4LzIKK1Byb3RvY29sOglBTEwKKworICBUaGlzIGZpZWxkIGlzIG9ic29sZXRlLgorCitGaWVsZCBuYW1lOgl2aWRfbW9kZQorVHlwZToJCW1vZGlmeSAob2JsaWdhdG9yeSkKK09mZnNldC9zaXplOgkweDFmYS8yCisKKyAgUGxlYXNlIHNlZSB0aGUgc2VjdGlvbiBvbiBTUEVDSUFMIENPTU1BTkQgTElORSBPUFRJT05TLgorCitGaWVsZCBuYW1lOglyb290X2RldgorVHlwZToJCW1vZGlmeSAob3B0aW9uYWwpCitPZmZzZXQvc2l6ZToJMHgxZmMvMgorUHJvdG9jb2w6CUFMTAorCisgIFRoZSBkZWZhdWx0IHJvb3QgZGV2aWNlIGRldmljZSBudW1iZXIuICBUaGUgdXNlIG9mIHRoaXMgZmllbGQgaXMKKyAgZGVwcmVjYXRlZCwgdXNlIHRoZSAicm9vdD0iIG9wdGlvbiBvbiB0aGUgY29tbWFuZCBsaW5lIGluc3RlYWQuCisKK0ZpZWxkIG5hbWU6CWJvb3RfZmxhZworVHlwZToJCXJlYWQKK09mZnNldC9zaXplOgkweDFmZS8yCitQcm90b2NvbDoJQUxMCisKKyAgQ29udGFpbnMgMHhBQTU1LiAgVGhpcyBpcyB0aGUgY2xvc2VzdCB0aGluZyBvbGQgTGludXgga2VybmVscyBoYXZlCisgIHRvIGEgbWFnaWMgbnVtYmVyLgorCitGaWVsZCBuYW1lOglqdW1wCitUeXBlOgkJcmVhZAorT2Zmc2V0L3NpemU6CTB4MjAwLzIKK1Byb3RvY29sOgkyLjAwKworCisgIENvbnRhaW5zIGFuIHg4NiBqdW1wIGluc3RydWN0aW9uLCAweEVCIGZvbGxvd2VkIGJ5IGEgc2lnbmVkIG9mZnNldAorICByZWxhdGl2ZSB0byBieXRlIDB4MjAyLiAgVGhpcyBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHNpemUgb2YKKyAgdGhlIGhlYWRlci4KKworRmllbGQgbmFtZToJaGVhZGVyCitUeXBlOgkJcmVhZAorT2Zmc2V0L3NpemU6CTB4MjAyLzQKK1Byb3RvY29sOgkyLjAwKworCisgIENvbnRhaW5zIHRoZSBtYWdpYyBudW1iZXIgIkhkclMiICgweDUzNzI2NDQ4KS4KKworRmllbGQgbmFtZToJdmVyc2lvbgorVHlwZToJCXJlYWQKK09mZnNldC9zaXplOgkweDIwNi8yCitQcm90b2NvbDoJMi4wMCsKKworICBDb250YWlucyB0aGUgYm9vdCBwcm90b2NvbCB2ZXJzaW9uLCBpbiAobWFqb3IgPDwgOCkrbWlub3IgZm9ybWF0LAorICBlLmcuIDB4MDIwNCBmb3IgdmVyc2lvbiAyLjA0LCBhbmQgMHgwYTExIGZvciBhIGh5cG90aGV0aWNhbCB2ZXJzaW9uCisgIDEwLjE3LgorCitGaWVsZCBuYW1lOglyZWFsbW9kZV9zd3RjaAorVHlwZToJCW1vZGlmeSAob3B0aW9uYWwpCitPZmZzZXQvc2l6ZToJMHgyMDgvNAorUHJvdG9jb2w6CTIuMDArCisKKyAgQm9vdCBsb2FkZXIgaG9vayAoc2VlIEFEVkFOQ0VEIEJPT1QgTE9BREVSIEhPT0tTIGJlbG93LikKKworRmllbGQgbmFtZToJc3RhcnRfc3lzX3NlZworVHlwZToJCXJlYWQKK09mZnNldC9zaXplOgkweDIwYy8yCitQcm90b2NvbDoJMi4wMCsKKworICBUaGUgbG9hZCBsb3cgc2VnbWVudCAoMHgxMDAwKS4gIE9ic29sZXRlLgorCitGaWVsZCBuYW1lOglrZXJuZWxfdmVyc2lvbgorVHlwZToJCXJlYWQKK09mZnNldC9zaXplOgkweDIwZS8yCitQcm90b2NvbDoJMi4wMCsKKworICBJZiBzZXQgdG8gYSBub256ZXJvIHZhbHVlLCBjb250YWlucyBhIHBvaW50ZXIgdG8gYSBOVUwtdGVybWluYXRlZAorICBodW1hbi1yZWFkYWJsZSBrZXJuZWwgdmVyc2lvbiBudW1iZXIgc3RyaW5nLCBsZXNzIDB4MjAwLiAgVGhpcyBjYW4KKyAgYmUgdXNlZCB0byBkaXNwbGF5IHRoZSBrZXJuZWwgdmVyc2lvbiB0byB0aGUgdXNlci4gIFRoaXMgdmFsdWUKKyAgc2hvdWxkIGJlIGxlc3MgdGhhbiAoMHgyMDAqc2V0dXBfc2VjdHMpLgorCisgIEZvciBleGFtcGxlLCBpZiB0aGlzIHZhbHVlIGlzIHNldCB0byAweDFjMDAsIHRoZSBrZXJuZWwgdmVyc2lvbgorICBudW1iZXIgc3RyaW5nIGNhbiBiZSBmb3VuZCBhdCBvZmZzZXQgMHgxZTAwIGluIHRoZSBrZXJuZWwgZmlsZS4KKyAgVGhpcyBpcyBhIHZhbGlkIHZhbHVlIGlmIGFuZCBvbmx5IGlmIHRoZSAic2V0dXBfc2VjdHMiIGZpZWxkCisgIGNvbnRhaW5zIHRoZSB2YWx1ZSAxNSBvciBoaWdoZXIsIGFzOgorCisJMHgxYzAwICA8IDE1KjB4MjAwICg9IDB4MWUwMCkgYnV0CisJMHgxYzAwID49IDE0KjB4MjAwICg9IDB4MWMwMCkKKworCTB4MWMwMCA+PiA5ID0gMTQsIHNvIHRoZSBtaW5pbXVtIHZhbHVlIGZvciBzZXR1cF9zZWNzIGlzIDE1LgorCitGaWVsZCBuYW1lOgl0eXBlX29mX2xvYWRlcgorVHlwZToJCXdyaXRlIChvYmxpZ2F0b3J5KQorT2Zmc2V0L3NpemU6CTB4MjEwLzEKK1Byb3RvY29sOgkyLjAwKworCisgIElmIHlvdXIgYm9vdCBsb2FkZXIgaGFzIGFuIGFzc2lnbmVkIGlkIChzZWUgdGFibGUgYmVsb3cpLCBlbnRlcgorICAweFRWIGhlcmUsIHdoZXJlIFQgaXMgYW4gaWRlbnRpZmllciBmb3IgdGhlIGJvb3QgbG9hZGVyIGFuZCBWIGlzCisgIGEgdmVyc2lvbiBudW1iZXIuICBPdGhlcndpc2UsIGVudGVyIDB4RkYgaGVyZS4KKworICBGb3IgYm9vdCBsb2FkZXIgSURzIGFib3ZlIFQgPSAweEQsIHdyaXRlIFQgPSAweEUgdG8gdGhpcyBmaWVsZCBhbmQKKyAgd3JpdGUgdGhlIGV4dGVuZGVkIElEIG1pbnVzIDB4MTAgdG8gdGhlIGV4dF9sb2FkZXJfdHlwZSBmaWVsZC4KKyAgU2ltaWxhcmx5LCB0aGUgZXh0X2xvYWRlcl92ZXIgZmllbGQgY2FuIGJlIHVzZWQgdG8gcHJvdmlkZSBtb3JlIHRoYW4KKyAgZm91ciBiaXRzIGZvciB0aGUgYm9vdGxvYWRlciB2ZXJzaW9uLgorCisgIEZvciBleGFtcGxlLCBmb3IgVCA9IDB4MTUsIFYgPSAweDIzNCwgd3JpdGU6CisKKyAgdHlwZV9vZl9sb2FkZXIgIDwtIDB4RTQKKyAgZXh0X2xvYWRlcl90eXBlIDwtIDB4MDUKKyAgZXh0X2xvYWRlcl92ZXIgIDwtIDB4MjMKKworICBBc3NpZ25lZCBib290IGxvYWRlciBpZHMgKGhleGFkZWNpbWFsKToKKworCTAgIExJTE8JCQkoMHgwMCByZXNlcnZlZCBmb3IgcHJlLTIuMDAgYm9vdGxvYWRlcikKKwkxICBMb2FkbGluCisJMiAgYm9vdHNlY3QtbG9hZGVyCSgweDIwLCBhbGwgb3RoZXIgdmFsdWVzIHJlc2VydmVkKQorCTMgIFN5c2xpbnV4CisJNCAgRXRoZXJib290L2dQWEUvaVBYRQorCTUgIEVMSUxPCisJNyAgR1JVQgorCTggIFUtQm9vdAorCTkgIFhlbgorCUEgIEd1amluCisJQiAgUWVtdQorCUMgIEFyY3R1cnVzIE5ldHdvcmtzIHVDYm9vdGxvYWRlcgorCUQgIGtleGVjLXRvb2xzCisJRSAgRXh0ZW5kZWQJCShzZWUgZXh0X2xvYWRlcl90eXBlKQorCUYgIFNwZWNpYWwJCSgweEZGID0gdW5kZWZpbmVkKQorICAgICAgIDEwICBSZXNlcnZlZAorICAgICAgIDExICBNaW5pbWFsIExpbnV4IEJvb3Rsb2FkZXIgPGh0dHA6Ly9zZWJhc3RpYW4tcGxvdHouYmxvZ3Nwb3QuZGU+CisgICAgICAgMTIgIE9WTUYgVUVGSSB2aXJ0dWFsaXphdGlvbiBzdGFjaworCisgIFBsZWFzZSBjb250YWN0IDxocGFAenl0b3IuY29tPiBpZiB5b3UgbmVlZCBhIGJvb3Rsb2FkZXIgSUQKKyAgdmFsdWUgYXNzaWduZWQuCisKK0ZpZWxkIG5hbWU6CWxvYWRmbGFncworVHlwZToJCW1vZGlmeSAob2JsaWdhdG9yeSkKK09mZnNldC9zaXplOgkweDIxMS8xCitQcm90b2NvbDoJMi4wMCsKKworICBUaGlzIGZpZWxkIGlzIGEgYml0bWFzay4KKworICBCaXQgMCAocmVhZCk6CUxPQURFRF9ISUdICisJLSBJZiAwLCB0aGUgcHJvdGVjdGVkLW1vZGUgY29kZSBpcyBsb2FkZWQgYXQgMHgxMDAwMC4KKwktIElmIDEsIHRoZSBwcm90ZWN0ZWQtbW9kZSBjb2RlIGlzIGxvYWRlZCBhdCAweDEwMDAwMC4KKworICBCaXQgMSAoa2VybmVsIGludGVybmFsKTogS0FTTFJfRkxBRworCS0gVXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBjb21wcmVzc2VkIGtlcm5lbCB0byBjb21tdW5pY2F0ZQorCSAgS0FTTFIgc3RhdHVzIHRvIGtlcm5lbCBwcm9wZXIuCisJICBJZiAxLCBLQVNMUiBlbmFibGVkLgorCSAgSWYgMCwgS0FTTFIgZGlzYWJsZWQuCisKKyAgQml0IDUgKHdyaXRlKTogUVVJRVRfRkxBRworCS0gSWYgMCwgcHJpbnQgZWFybHkgbWVzc2FnZXMuCisJLSBJZiAxLCBzdXBwcmVzcyBlYXJseSBtZXNzYWdlcy4KKwkJVGhpcyByZXF1ZXN0cyB0byB0aGUga2VybmVsIChkZWNvbXByZXNzb3IgYW5kIGVhcmx5CisJCWtlcm5lbCkgdG8gbm90IHdyaXRlIGVhcmx5IG1lc3NhZ2VzIHRoYXQgcmVxdWlyZQorCQlhY2Nlc3NpbmcgdGhlIGRpc3BsYXkgaGFyZHdhcmUgZGlyZWN0bHkuCisKKyAgQml0IDYgKHdyaXRlKTogS0VFUF9TRUdNRU5UUworCVByb3RvY29sOiAyLjA3KworCS0gSWYgMCwgcmVsb2FkIHRoZSBzZWdtZW50IHJlZ2lzdGVycyBpbiB0aGUgMzJiaXQgZW50cnkgcG9pbnQuCisJLSBJZiAxLCBkbyBub3QgcmVsb2FkIHRoZSBzZWdtZW50IHJlZ2lzdGVycyBpbiB0aGUgMzJiaXQgZW50cnkgcG9pbnQuCisJCUFzc3VtZSB0aGF0ICVjcyAlZHMgJXNzICVlcyBhcmUgYWxsIHNldCB0byBmbGF0IHNlZ21lbnRzIHdpdGgKKwkJYSBiYXNlIG9mIDAgKG9yIHRoZSBlcXVpdmFsZW50IGZvciB0aGVpciBlbnZpcm9ubWVudCkuCisKKyAgQml0IDcgKHdyaXRlKTogQ0FOX1VTRV9IRUFQCisJU2V0IHRoaXMgYml0IHRvIDEgdG8gaW5kaWNhdGUgdGhhdCB0aGUgdmFsdWUgZW50ZXJlZCBpbiB0aGUKKwloZWFwX2VuZF9wdHIgaXMgdmFsaWQuICBJZiB0aGlzIGZpZWxkIGlzIGNsZWFyLCBzb21lIHNldHVwIGNvZGUKKwlmdW5jdGlvbmFsaXR5IHdpbGwgYmUgZGlzYWJsZWQuCisKK0ZpZWxkIG5hbWU6CXNldHVwX21vdmVfc2l6ZQorVHlwZToJCW1vZGlmeSAob2JsaWdhdG9yeSkKK09mZnNldC9zaXplOgkweDIxMi8yCitQcm90b2NvbDoJMi4wMC0yLjAxCisKKyAgV2hlbiB1c2luZyBwcm90b2NvbCAyLjAwIG9yIDIuMDEsIGlmIHRoZSByZWFsIG1vZGUga2VybmVsIGlzIG5vdAorICBsb2FkZWQgYXQgMHg5MDAwMCwgaXQgZ2V0cyBtb3ZlZCB0aGVyZSBsYXRlciBpbiB0aGUgbG9hZGluZworICBzZXF1ZW5jZS4gIEZpbGwgaW4gdGhpcyBmaWVsZCBpZiB5b3Ugd2FudCBhZGRpdGlvbmFsIGRhdGEgKHN1Y2ggYXMKKyAgdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUpIG1vdmVkIGluIGFkZGl0aW9uIHRvIHRoZSByZWFsLW1vZGUga2VybmVsCisgIGl0c2VsZi4KKworICBUaGUgdW5pdCBpcyBieXRlcyBzdGFydGluZyB3aXRoIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJvb3Qgc2VjdG9yLgorICAKKyAgVGhpcyBmaWVsZCBpcyBjYW4gYmUgaWdub3JlZCB3aGVuIHRoZSBwcm90b2NvbCBpcyAyLjAyIG9yIGhpZ2hlciwgb3IKKyAgaWYgdGhlIHJlYWwtbW9kZSBjb2RlIGlzIGxvYWRlZCBhdCAweDkwMDAwLgorCitGaWVsZCBuYW1lOgljb2RlMzJfc3RhcnQKK1R5cGU6CQltb2RpZnkgKG9wdGlvbmFsLCByZWxvYykKK09mZnNldC9zaXplOgkweDIxNC80CitQcm90b2NvbDoJMi4wMCsKKworICBUaGUgYWRkcmVzcyB0byBqdW1wIHRvIGluIHByb3RlY3RlZCBtb2RlLiAgVGhpcyBkZWZhdWx0cyB0byB0aGUgbG9hZAorICBhZGRyZXNzIG9mIHRoZSBrZXJuZWwsIGFuZCBjYW4gYmUgdXNlZCBieSB0aGUgYm9vdCBsb2FkZXIgdG8KKyAgZGV0ZXJtaW5lIHRoZSBwcm9wZXIgbG9hZCBhZGRyZXNzLgorCisgIFRoaXMgZmllbGQgY2FuIGJlIG1vZGlmaWVkIGZvciB0d28gcHVycG9zZXM6CisKKyAgMS4gYXMgYSBib290IGxvYWRlciBob29rIChzZWUgQURWQU5DRUQgQk9PVCBMT0FERVIgSE9PS1MgYmVsb3cuKQorCisgIDIuIGlmIGEgYm9vdGxvYWRlciB3aGljaCBkb2VzIG5vdCBpbnN0YWxsIGEgaG9vayBsb2FkcyBhCisgICAgIHJlbG9jYXRhYmxlIGtlcm5lbCBhdCBhIG5vbnN0YW5kYXJkIGFkZHJlc3MgaXQgd2lsbCBoYXZlIHRvIG1vZGlmeQorICAgICB0aGlzIGZpZWxkIHRvIHBvaW50IHRvIHRoZSBsb2FkIGFkZHJlc3MuCisKK0ZpZWxkIG5hbWU6CXJhbWRpc2tfaW1hZ2UKK1R5cGU6CQl3cml0ZSAob2JsaWdhdG9yeSkKK09mZnNldC9zaXplOgkweDIxOC80CitQcm90b2NvbDoJMi4wMCsKKworICBUaGUgMzItYml0IGxpbmVhciBhZGRyZXNzIG9mIHRoZSBpbml0aWFsIHJhbWRpc2sgb3IgcmFtZnMuICBMZWF2ZSBhdAorICB6ZXJvIGlmIHRoZXJlIGlzIG5vIGluaXRpYWwgcmFtZGlzay9yYW1mcy4KKworRmllbGQgbmFtZToJcmFtZGlza19zaXplCitUeXBlOgkJd3JpdGUgKG9ibGlnYXRvcnkpCitPZmZzZXQvc2l6ZToJMHgyMWMvNAorUHJvdG9jb2w6CTIuMDArCisKKyAgU2l6ZSBvZiB0aGUgaW5pdGlhbCByYW1kaXNrIG9yIHJhbWZzLiAgTGVhdmUgYXQgemVybyBpZiB0aGVyZSBpcyBubworICBpbml0aWFsIHJhbWRpc2svcmFtZnMuCisKK0ZpZWxkIG5hbWU6CWJvb3RzZWN0X2tsdWRnZQorVHlwZToJCWtlcm5lbCBpbnRlcm5hbAorT2Zmc2V0L3NpemU6CTB4MjIwLzQKK1Byb3RvY29sOgkyLjAwKworCisgIFRoaXMgZmllbGQgaXMgb2Jzb2xldGUuCisKK0ZpZWxkIG5hbWU6CWhlYXBfZW5kX3B0cgorVHlwZToJCXdyaXRlIChvYmxpZ2F0b3J5KQorT2Zmc2V0L3NpemU6CTB4MjI0LzIKK1Byb3RvY29sOgkyLjAxKworCisgIFNldCB0aGlzIGZpZWxkIHRvIHRoZSBvZmZzZXQgKGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgcmVhbC1tb2RlCisgIGNvZGUpIG9mIHRoZSBlbmQgb2YgdGhlIHNldHVwIHN0YWNrL2hlYXAsIG1pbnVzIDB4MDIwMC4KKworRmllbGQgbmFtZToJZXh0X2xvYWRlcl92ZXIKK1R5cGU6CQl3cml0ZSAob3B0aW9uYWwpCitPZmZzZXQvc2l6ZToJMHgyMjYvMQorUHJvdG9jb2w6CTIuMDIrCisKKyAgVGhpcyBmaWVsZCBpcyB1c2VkIGFzIGFuIGV4dGVuc2lvbiBvZiB0aGUgdmVyc2lvbiBudW1iZXIgaW4gdGhlCisgIHR5cGVfb2ZfbG9hZGVyIGZpZWxkLiAgVGhlIHRvdGFsIHZlcnNpb24gbnVtYmVyIGlzIGNvbnNpZGVyZWQgdG8gYmUKKyAgKHR5cGVfb2ZfbG9hZGVyICYgMHgwZikgKyAoZXh0X2xvYWRlcl92ZXIgPDwgNCkuCisKKyAgVGhlIHVzZSBvZiB0aGlzIGZpZWxkIGlzIGJvb3QgbG9hZGVyIHNwZWNpZmljLiAgSWYgbm90IHdyaXR0ZW4sIGl0CisgIGlzIHplcm8uCisKKyAgS2VybmVscyBwcmlvciB0byAyLjYuMzEgZGlkIG5vdCByZWNvZ25pemUgdGhpcyBmaWVsZCwgYnV0IGl0IGlzIHNhZmUKKyAgdG8gd3JpdGUgZm9yIHByb3RvY29sIHZlcnNpb24gMi4wMiBvciBoaWdoZXIuCisKK0ZpZWxkIG5hbWU6CWV4dF9sb2FkZXJfdHlwZQorVHlwZToJCXdyaXRlIChvYmxpZ2F0b3J5IGlmICh0eXBlX29mX2xvYWRlciAmIDB4ZjApID09IDB4ZTApCitPZmZzZXQvc2l6ZToJMHgyMjcvMQorUHJvdG9jb2w6CTIuMDIrCisKKyAgVGhpcyBmaWVsZCBpcyB1c2VkIGFzIGFuIGV4dGVuc2lvbiBvZiB0aGUgdHlwZSBudW1iZXIgaW4KKyAgdHlwZV9vZl9sb2FkZXIgZmllbGQuICBJZiB0aGUgdHlwZSBpbiB0eXBlX29mX2xvYWRlciBpcyAweEUsIHRoZW4KKyAgdGhlIGFjdHVhbCB0eXBlIGlzIChleHRfbG9hZGVyX3R5cGUgKyAweDEwKS4KKworICBUaGlzIGZpZWxkIGlzIGlnbm9yZWQgaWYgdGhlIHR5cGUgaW4gdHlwZV9vZl9sb2FkZXIgaXMgbm90IDB4RS4KKworICBLZXJuZWxzIHByaW9yIHRvIDIuNi4zMSBkaWQgbm90IHJlY29nbml6ZSB0aGlzIGZpZWxkLCBidXQgaXQgaXMgc2FmZQorICB0byB3cml0ZSBmb3IgcHJvdG9jb2wgdmVyc2lvbiAyLjAyIG9yIGhpZ2hlci4KKworRmllbGQgbmFtZToJY21kX2xpbmVfcHRyCitUeXBlOgkJd3JpdGUgKG9ibGlnYXRvcnkpCitPZmZzZXQvc2l6ZToJMHgyMjgvNAorUHJvdG9jb2w6CTIuMDIrCisKKyAgU2V0IHRoaXMgZmllbGQgdG8gdGhlIGxpbmVhciBhZGRyZXNzIG9mIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lLgorICBUaGUga2VybmVsIGNvbW1hbmQgbGluZSBjYW4gYmUgbG9jYXRlZCBhbnl3aGVyZSBiZXR3ZWVuIHRoZSBlbmQgb2YKKyAgdGhlIHNldHVwIGhlYXAgYW5kIDB4QTAwMDA7IGl0IGRvZXMgbm90IGhhdmUgdG8gYmUgbG9jYXRlZCBpbiB0aGUKKyAgc2FtZSA2NEsgc2VnbWVudCBhcyB0aGUgcmVhbC1tb2RlIGNvZGUgaXRzZWxmLgorCisgIEZpbGwgaW4gdGhpcyBmaWVsZCBldmVuIGlmIHlvdXIgYm9vdCBsb2FkZXIgZG9lcyBub3Qgc3VwcG9ydCBhCisgIGNvbW1hbmQgbGluZSwgaW4gd2hpY2ggY2FzZSB5b3UgY2FuIHBvaW50IHRoaXMgdG8gYW4gZW1wdHkgc3RyaW5nCisgIChvciBiZXR0ZXIgeWV0LCB0byB0aGUgc3RyaW5nICJhdXRvIi4pICBJZiB0aGlzIGZpZWxkIGlzIGxlZnQgYXQKKyAgemVybywgdGhlIGtlcm5lbCB3aWxsIGFzc3VtZSB0aGF0IHlvdXIgYm9vdCBsb2FkZXIgZG9lcyBub3Qgc3VwcG9ydAorICB0aGUgMi4wMisgcHJvdG9jb2wuCisKK0ZpZWxkIG5hbWU6CWluaXRyZF9hZGRyX21heAorVHlwZToJCXJlYWQKK09mZnNldC9zaXplOgkweDIyYy80CitQcm90b2NvbDoJMi4wMysKKworICBUaGUgbWF4aW11bSBhZGRyZXNzIHRoYXQgbWF5IGJlIG9jY3VwaWVkIGJ5IHRoZSBpbml0aWFsCisgIHJhbWRpc2svcmFtZnMgY29udGVudHMuICBGb3IgYm9vdCBwcm90b2NvbHMgMi4wMiBvciBlYXJsaWVyLCB0aGlzCisgIGZpZWxkIGlzIG5vdCBwcmVzZW50LCBhbmQgdGhlIG1heGltdW0gYWRkcmVzcyBpcyAweDM3RkZGRkZGLiAgKFRoaXMKKyAgYWRkcmVzcyBpcyBkZWZpbmVkIGFzIHRoZSBhZGRyZXNzIG9mIHRoZSBoaWdoZXN0IHNhZmUgYnl0ZSwgc28gaWYKKyAgeW91ciByYW1kaXNrIGlzIGV4YWN0bHkgMTMxMDcyIGJ5dGVzIGxvbmcgYW5kIHRoaXMgZmllbGQgaXMKKyAgMHgzN0ZGRkZGRiwgeW91IGNhbiBzdGFydCB5b3VyIHJhbWRpc2sgYXQgMHgzN0ZFMDAwMC4pCisKK0ZpZWxkIG5hbWU6CWtlcm5lbF9hbGlnbm1lbnQKK1R5cGU6CQlyZWFkL21vZGlmeSAocmVsb2MpCitPZmZzZXQvc2l6ZToJMHgyMzAvNAorUHJvdG9jb2w6CTIuMDUrIChyZWFkKSwgMi4xMCsgKG1vZGlmeSkKKworICBBbGlnbm1lbnQgdW5pdCByZXF1aXJlZCBieSB0aGUga2VybmVsIChpZiByZWxvY2F0YWJsZV9rZXJuZWwgaXMKKyAgdHJ1ZS4pICBBIHJlbG9jYXRhYmxlIGtlcm5lbCB0aGF0IGlzIGxvYWRlZCBhdCBhbiBhbGlnbm1lbnQKKyAgaW5jb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlIGluIHRoaXMgZmllbGQgd2lsbCBiZSByZWFsaWduZWQgZHVyaW5nCisgIGtlcm5lbCBpbml0aWFsaXphdGlvbi4KKworICBTdGFydGluZyB3aXRoIHByb3RvY29sIHZlcnNpb24gMi4xMCwgdGhpcyByZWZsZWN0cyB0aGUga2VybmVsCisgIGFsaWdubWVudCBwcmVmZXJyZWQgZm9yIG9wdGltYWwgcGVyZm9ybWFuY2U7IGl0IGlzIHBvc3NpYmxlIGZvciB0aGUKKyAgbG9hZGVyIHRvIG1vZGlmeSB0aGlzIGZpZWxkIHRvIHBlcm1pdCBhIGxlc3NlciBhbGlnbm1lbnQuICBTZWUgdGhlCisgIG1pbl9hbGlnbm1lbnQgYW5kIHByZWZfYWRkcmVzcyBmaWVsZCBiZWxvdy4KKworRmllbGQgbmFtZToJcmVsb2NhdGFibGVfa2VybmVsCitUeXBlOgkJcmVhZCAocmVsb2MpCitPZmZzZXQvc2l6ZToJMHgyMzQvMQorUHJvdG9jb2w6CTIuMDUrCisKKyAgSWYgdGhpcyBmaWVsZCBpcyBub256ZXJvLCB0aGUgcHJvdGVjdGVkLW1vZGUgcGFydCBvZiB0aGUga2VybmVsIGNhbgorICBiZSBsb2FkZWQgYXQgYW55IGFkZHJlc3MgdGhhdCBzYXRpc2ZpZXMgdGhlIGtlcm5lbF9hbGlnbm1lbnQgZmllbGQuCisgIEFmdGVyIGxvYWRpbmcsIHRoZSBib290IGxvYWRlciBtdXN0IHNldCB0aGUgY29kZTMyX3N0YXJ0IGZpZWxkIHRvCisgIHBvaW50IHRvIHRoZSBsb2FkZWQgY29kZSwgb3IgdG8gYSBib290IGxvYWRlciBob29rLgorCitGaWVsZCBuYW1lOgltaW5fYWxpZ25tZW50CitUeXBlOgkJcmVhZCAocmVsb2MpCitPZmZzZXQvc2l6ZToJMHgyMzUvMQorUHJvdG9jb2w6CTIuMTArCisKKyAgVGhpcyBmaWVsZCwgaWYgbm9uemVybywgaW5kaWNhdGVzIGFzIGEgcG93ZXIgb2YgdHdvIHRoZSBtaW5pbXVtCisgIGFsaWdubWVudCByZXF1aXJlZCwgYXMgb3Bwb3NlZCB0byBwcmVmZXJyZWQsIGJ5IHRoZSBrZXJuZWwgdG8gYm9vdC4KKyAgSWYgYSBib290IGxvYWRlciBtYWtlcyB1c2Ugb2YgdGhpcyBmaWVsZCwgaXQgc2hvdWxkIHVwZGF0ZSB0aGUKKyAga2VybmVsX2FsaWdubWVudCBmaWVsZCB3aXRoIHRoZSBhbGlnbm1lbnQgdW5pdCBkZXNpcmVkOyB0eXBpY2FsbHk6CisKKwlrZXJuZWxfYWxpZ25tZW50ID0gMSA8PCBtaW5fYWxpZ25tZW50CisKKyAgVGhlcmUgbWF5IGJlIGEgY29uc2lkZXJhYmxlIHBlcmZvcm1hbmNlIGNvc3Qgd2l0aCBhbiBleGNlc3NpdmVseQorICBtaXNhbGlnbmVkIGtlcm5lbC4gIFRoZXJlZm9yZSwgYSBsb2FkZXIgc2hvdWxkIHR5cGljYWxseSB0cnkgZWFjaAorICBwb3dlci1vZi10d28gYWxpZ25tZW50IGZyb20ga2VybmVsX2FsaWdubWVudCBkb3duIHRvIHRoaXMgYWxpZ25tZW50LgorCitGaWVsZCBuYW1lOiAgICAgeGxvYWRmbGFncworVHlwZTogICAgICAgICAgIHJlYWQKK09mZnNldC9zaXplOiAgICAweDIzNi8yCitQcm90b2NvbDogICAgICAgMi4xMisKKworICBUaGlzIGZpZWxkIGlzIGEgYml0bWFzay4KKworICBCaXQgMCAocmVhZCk6CVhMRl9LRVJORUxfNjQKKwktIElmIDEsIHRoaXMga2VybmVsIGhhcyB0aGUgbGVnYWN5IDY0LWJpdCBlbnRyeSBwb2ludCBhdCAweDIwMC4KKworICBCaXQgMSAocmVhZCk6IFhMRl9DQU5fQkVfTE9BREVEX0FCT1ZFXzRHCisgICAgICAgIC0gSWYgMSwga2VybmVsL2Jvb3RfcGFyYW1zL2NtZGxpbmUvcmFtZGlzayBjYW4gYmUgYWJvdmUgNEcuCisKKyAgQml0IDIgKHJlYWQpOglYTEZfRUZJX0hBTkRPVkVSXzMyCisJLSBJZiAxLCB0aGUga2VybmVsIHN1cHBvcnRzIHRoZSAzMi1iaXQgRUZJIGhhbmRvZmYgZW50cnkgcG9pbnQKKyAgICAgICAgICBnaXZlbiBhdCBoYW5kb3Zlcl9vZmZzZXQuCisKKyAgQml0IDMgKHJlYWQpOiBYTEZfRUZJX0hBTkRPVkVSXzY0CisJLSBJZiAxLCB0aGUga2VybmVsIHN1cHBvcnRzIHRoZSA2NC1iaXQgRUZJIGhhbmRvZmYgZW50cnkgcG9pbnQKKyAgICAgICAgICBnaXZlbiBhdCBoYW5kb3Zlcl9vZmZzZXQgKyAweDIwMC4KKworICBCaXQgNCAocmVhZCk6IFhMRl9FRklfS0VYRUMKKwktIElmIDEsIHRoZSBrZXJuZWwgc3VwcG9ydHMga2V4ZWMgRUZJIGJvb3Qgd2l0aCBFRkkgcnVudGltZSBzdXBwb3J0LgorCitGaWVsZCBuYW1lOgljbWRsaW5lX3NpemUKK1R5cGU6CQlyZWFkCitPZmZzZXQvc2l6ZToJMHgyMzgvNAorUHJvdG9jb2w6CTIuMDYrCisKKyAgVGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgY29tbWFuZCBsaW5lIHdpdGhvdXQgdGhlIHRlcm1pbmF0aW5nCisgIHplcm8uIFRoaXMgbWVhbnMgdGhhdCB0aGUgY29tbWFuZCBsaW5lIGNhbiBjb250YWluIGF0IG1vc3QKKyAgY21kbGluZV9zaXplIGNoYXJhY3RlcnMuIFdpdGggcHJvdG9jb2wgdmVyc2lvbiAyLjA1IGFuZCBlYXJsaWVyLCB0aGUKKyAgbWF4aW11bSBzaXplIHdhcyAyNTUuCisKK0ZpZWxkIG5hbWU6CWhhcmR3YXJlX3N1YmFyY2gKK1R5cGU6CQl3cml0ZSAob3B0aW9uYWwsIGRlZmF1bHRzIHRvIHg4Ni9QQykKK09mZnNldC9zaXplOgkweDIzYy80CitQcm90b2NvbDoJMi4wNysKKworICBJbiBhIHBhcmF2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB0aGUgaGFyZHdhcmUgbG93IGxldmVsIGFyY2hpdGVjdHVyYWwKKyAgcGllY2VzIHN1Y2ggYXMgaW50ZXJydXB0IGhhbmRsaW5nLCBwYWdlIHRhYmxlIGhhbmRsaW5nLCBhbmQKKyAgYWNjZXNzaW5nIHByb2Nlc3MgY29udHJvbCByZWdpc3RlcnMgbmVlZHMgdG8gYmUgZG9uZSBkaWZmZXJlbnRseS4KKworICBUaGlzIGZpZWxkIGFsbG93cyB0aGUgYm9vdGxvYWRlciB0byBpbmZvcm0gdGhlIGtlcm5lbCB3ZSBhcmUgaW4gb25lCisgIG9uZSBvZiB0aG9zZSBlbnZpcm9ubWVudHMuCisKKyAgMHgwMDAwMDAwMAlUaGUgZGVmYXVsdCB4ODYvUEMgZW52aXJvbm1lbnQKKyAgMHgwMDAwMDAwMQlsZ3Vlc3QKKyAgMHgwMDAwMDAwMglYZW4KKyAgMHgwMDAwMDAwMwlNb29yZXN0b3duIE1JRAorICAweDAwMDAwMDA0CUNFNDEwMCBUViBQbGF0Zm9ybQorCitGaWVsZCBuYW1lOgloYXJkd2FyZV9zdWJhcmNoX2RhdGEKK1R5cGU6CQl3cml0ZSAoc3ViYXJjaC1kZXBlbmRlbnQpCitPZmZzZXQvc2l6ZToJMHgyNDAvOAorUHJvdG9jb2w6CTIuMDcrCisKKyAgQSBwb2ludGVyIHRvIGRhdGEgdGhhdCBpcyBzcGVjaWZpYyB0byBoYXJkd2FyZSBzdWJhcmNoCisgIFRoaXMgZmllbGQgaXMgY3VycmVudGx5IHVudXNlZCBmb3IgdGhlIGRlZmF1bHQgeDg2L1BDIGVudmlyb25tZW50LAorICBkbyBub3QgbW9kaWZ5LgorCitGaWVsZCBuYW1lOglwYXlsb2FkX29mZnNldAorVHlwZToJCXJlYWQKK09mZnNldC9zaXplOgkweDI0OC80CitQcm90b2NvbDoJMi4wOCsKKworICBJZiBub24temVybyB0aGVuIHRoaXMgZmllbGQgY29udGFpbnMgdGhlIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcKKyAgb2YgdGhlIHByb3RlY3RlZC1tb2RlIGNvZGUgdG8gdGhlIHBheWxvYWQuCisKKyAgVGhlIHBheWxvYWQgbWF5IGJlIGNvbXByZXNzZWQuIFRoZSBmb3JtYXQgb2YgYm90aCB0aGUgY29tcHJlc3NlZCBhbmQKKyAgdW5jb21wcmVzc2VkIGRhdGEgc2hvdWxkIGJlIGRldGVybWluZWQgdXNpbmcgdGhlIHN0YW5kYXJkIG1hZ2ljCisgIG51bWJlcnMuICBUaGUgY3VycmVudGx5IHN1cHBvcnRlZCBjb21wcmVzc2lvbiBmb3JtYXRzIGFyZSBnemlwCisgIChtYWdpYyBudW1iZXJzIDFGIDhCIG9yIDFGIDlFKSwgYnppcDIgKG1hZ2ljIG51bWJlciA0MiA1QSksIExaTUEKKyAgKG1hZ2ljIG51bWJlciA1RCAwMCksIFhaIChtYWdpYyBudW1iZXIgRkQgMzcpLCBhbmQgTFo0IChtYWdpYyBudW1iZXIKKyAgMDIgMjEpLiAgVGhlIHVuY29tcHJlc3NlZCBwYXlsb2FkIGlzIGN1cnJlbnRseSBhbHdheXMgRUxGIChtYWdpYworICBudW1iZXIgN0YgNDUgNEMgNDYpLgorCitGaWVsZCBuYW1lOglwYXlsb2FkX2xlbmd0aAorVHlwZToJCXJlYWQKK09mZnNldC9zaXplOgkweDI0Yy80CitQcm90b2NvbDoJMi4wOCsKKworICBUaGUgbGVuZ3RoIG9mIHRoZSBwYXlsb2FkLgorCitGaWVsZCBuYW1lOglzZXR1cF9kYXRhCitUeXBlOgkJd3JpdGUgKHNwZWNpYWwpCitPZmZzZXQvc2l6ZToJMHgyNTAvOAorUHJvdG9jb2w6CTIuMDkrCisKKyAgVGhlIDY0LWJpdCBwaHlzaWNhbCBwb2ludGVyIHRvIE5VTEwgdGVybWluYXRlZCBzaW5nbGUgbGlua2VkIGxpc3Qgb2YKKyAgc3RydWN0IHNldHVwX2RhdGEuIFRoaXMgaXMgdXNlZCB0byBkZWZpbmUgYSBtb3JlIGV4dGVuc2libGUgYm9vdAorICBwYXJhbWV0ZXJzIHBhc3NpbmcgbWVjaGFuaXNtLiBUaGUgZGVmaW5pdGlvbiBvZiBzdHJ1Y3Qgc2V0dXBfZGF0YSBpcworICBhcyBmb2xsb3c6CisKKyAgc3RydWN0IHNldHVwX2RhdGEgeworCSAgdTY0IG5leHQ7CisJICB1MzIgdHlwZTsKKwkgIHUzMiBsZW47CisJICB1OCAgZGF0YVswXTsKKyAgfTsKKworICBXaGVyZSwgdGhlIG5leHQgaXMgYSA2NC1iaXQgcGh5c2ljYWwgcG9pbnRlciB0byB0aGUgbmV4dCBub2RlIG9mCisgIGxpbmtlZCBsaXN0LCB0aGUgbmV4dCBmaWVsZCBvZiB0aGUgbGFzdCBub2RlIGlzIDA7IHRoZSB0eXBlIGlzIHVzZWQKKyAgdG8gaWRlbnRpZnkgdGhlIGNvbnRlbnRzIG9mIGRhdGE7IHRoZSBsZW4gaXMgdGhlIGxlbmd0aCBvZiBkYXRhCisgIGZpZWxkOyB0aGUgZGF0YSBob2xkcyB0aGUgcmVhbCBwYXlsb2FkLgorCisgIFRoaXMgbGlzdCBtYXkgYmUgbW9kaWZpZWQgYXQgYSBudW1iZXIgb2YgcG9pbnRzIGR1cmluZyB0aGUgYm9vdHVwCisgIHByb2Nlc3MuICBUaGVyZWZvcmUsIHdoZW4gbW9kaWZ5aW5nIHRoaXMgbGlzdCBvbmUgc2hvdWxkIGFsd2F5cyBtYWtlCisgIHN1cmUgdG8gY29uc2lkZXIgdGhlIGNhc2Ugd2hlcmUgdGhlIGxpbmtlZCBsaXN0IGFscmVhZHkgY29udGFpbnMKKyAgZW50cmllcy4KKworRmllbGQgbmFtZToJcHJlZl9hZGRyZXNzCitUeXBlOgkJcmVhZCAocmVsb2MpCitPZmZzZXQvc2l6ZToJMHgyNTgvOAorUHJvdG9jb2w6CTIuMTArCisKKyAgVGhpcyBmaWVsZCwgaWYgbm9uemVybywgcmVwcmVzZW50cyBhIHByZWZlcnJlZCBsb2FkIGFkZHJlc3MgZm9yIHRoZQorICBrZXJuZWwuICBBIHJlbG9jYXRpbmcgYm9vdGxvYWRlciBzaG91bGQgYXR0ZW1wdCB0byBsb2FkIGF0IHRoaXMKKyAgYWRkcmVzcyBpZiBwb3NzaWJsZS4KKworICBBIG5vbi1yZWxvY2F0YWJsZSBrZXJuZWwgd2lsbCB1bmNvbmRpdGlvbmFsbHkgbW92ZSBpdHNlbGYgYW5kIHRvIHJ1bgorICBhdCB0aGlzIGFkZHJlc3MuCisKK0ZpZWxkIG5hbWU6CWluaXRfc2l6ZQorVHlwZToJCXJlYWQKK09mZnNldC9zaXplOgkweDI2MC80CisKKyAgVGhpcyBmaWVsZCBpbmRpY2F0ZXMgdGhlIGFtb3VudCBvZiBsaW5lYXIgY29udGlndW91cyBtZW1vcnkgc3RhcnRpbmcKKyAgYXQgdGhlIGtlcm5lbCBydW50aW1lIHN0YXJ0IGFkZHJlc3MgdGhhdCB0aGUga2VybmVsIG5lZWRzIGJlZm9yZSBpdAorICBpcyBjYXBhYmxlIG9mIGV4YW1pbmluZyBpdHMgbWVtb3J5IG1hcC4gIFRoaXMgaXMgbm90IHRoZSBzYW1lIHRoaW5nCisgIGFzIHRoZSB0b3RhbCBhbW91bnQgb2YgbWVtb3J5IHRoZSBrZXJuZWwgbmVlZHMgdG8gYm9vdCwgYnV0IGl0IGNhbgorICBiZSB1c2VkIGJ5IGEgcmVsb2NhdGluZyBib290IGxvYWRlciB0byBoZWxwIHNlbGVjdCBhIHNhZmUgbG9hZAorICBhZGRyZXNzIGZvciB0aGUga2VybmVsLgorCisgIFRoZSBrZXJuZWwgcnVudGltZSBzdGFydCBhZGRyZXNzIGlzIGRldGVybWluZWQgYnkgdGhlIGZvbGxvd2luZyBhbGdvcml0aG06CisKKyAgaWYgKHJlbG9jYXRhYmxlX2tlcm5lbCkKKwlydW50aW1lX3N0YXJ0ID0gYWxpZ25fdXAobG9hZF9hZGRyZXNzLCBrZXJuZWxfYWxpZ25tZW50KQorICBlbHNlCisJcnVudGltZV9zdGFydCA9IHByZWZfYWRkcmVzcworCitGaWVsZCBuYW1lOgloYW5kb3Zlcl9vZmZzZXQKK1R5cGU6CQlyZWFkCitPZmZzZXQvc2l6ZToJMHgyNjQvNAorCisgIFRoaXMgZmllbGQgaXMgdGhlIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGtlcm5lbCBpbWFnZSB0bworICB0aGUgRUZJIGhhbmRvdmVyIHByb3RvY29sIGVudHJ5IHBvaW50LiBCb290IGxvYWRlcnMgdXNpbmcgdGhlIEVGSQorICBoYW5kb3ZlciBwcm90b2NvbCB0byBib290IHRoZSBrZXJuZWwgc2hvdWxkIGp1bXAgdG8gdGhpcyBvZmZzZXQuCisKKyAgU2VlIEVGSSBIQU5ET1ZFUiBQUk9UT0NPTCBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLgorCisKKyoqKiogVEhFIElNQUdFIENIRUNLU1VNCisKK0Zyb20gYm9vdCBwcm90b2NvbCB2ZXJzaW9uIDIuMDggb253YXJkcyB0aGUgQ1JDLTMyIGlzIGNhbGN1bGF0ZWQgb3ZlcgordGhlIGVudGlyZSBmaWxlIHVzaW5nIHRoZSBjaGFyYWN0ZXJpc3RpYyBwb2x5bm9taWFsIDB4MDRDMTFEQjcgYW5kIGFuCitpbml0aWFsIHJlbWFpbmRlciBvZiAweGZmZmZmZmZmLiAgVGhlIGNoZWNrc3VtIGlzIGFwcGVuZGVkIHRvIHRoZQorZmlsZTsgdGhlcmVmb3JlIHRoZSBDUkMgb2YgdGhlIGZpbGUgdXAgdG8gdGhlIGxpbWl0IHNwZWNpZmllZCBpbiB0aGUKK3N5c3NpemUgZmllbGQgb2YgdGhlIGhlYWRlciBpcyBhbHdheXMgMC4KKworCisqKioqIFRIRSBLRVJORUwgQ09NTUFORCBMSU5FCisKK1RoZSBrZXJuZWwgY29tbWFuZCBsaW5lIGhhcyBiZWNvbWUgYW4gaW1wb3J0YW50IHdheSBmb3IgdGhlIGJvb3QKK2xvYWRlciB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBrZXJuZWwuICBTb21lIG9mIGl0cyBvcHRpb25zIGFyZSBhbHNvCityZWxldmFudCB0byB0aGUgYm9vdCBsb2FkZXIgaXRzZWxmLCBzZWUgInNwZWNpYWwgY29tbWFuZCBsaW5lIG9wdGlvbnMiCitiZWxvdy4KKworVGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgaXMgYSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLiBUaGUgbWF4aW11bQorbGVuZ3RoIGNhbiBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgZmllbGQgY21kbGluZV9zaXplLiAgQmVmb3JlIHByb3RvY29sCit2ZXJzaW9uIDIuMDYsIHRoZSBtYXhpbXVtIHdhcyAyNTUgY2hhcmFjdGVycy4gIEEgc3RyaW5nIHRoYXQgaXMgdG9vCitsb25nIHdpbGwgYmUgYXV0b21hdGljYWxseSB0cnVuY2F0ZWQgYnkgdGhlIGtlcm5lbC4KKworSWYgdGhlIGJvb3QgcHJvdG9jb2wgdmVyc2lvbiBpcyAyLjAyIG9yIGxhdGVyLCB0aGUgYWRkcmVzcyBvZiB0aGUKK2tlcm5lbCBjb21tYW5kIGxpbmUgaXMgZ2l2ZW4gYnkgdGhlIGhlYWRlciBmaWVsZCBjbWRfbGluZV9wdHIgKHNlZQorYWJvdmUuKSAgVGhpcyBhZGRyZXNzIGNhbiBiZSBhbnl3aGVyZSBiZXR3ZWVuIHRoZSBlbmQgb2YgdGhlIHNldHVwCitoZWFwIGFuZCAweEEwMDAwLgorCitJZiB0aGUgcHJvdG9jb2wgdmVyc2lvbiBpcyAqbm90KiAyLjAyIG9yIGhpZ2hlciwgdGhlIGtlcm5lbAorY29tbWFuZCBsaW5lIGlzIGVudGVyZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBwcm90b2NvbDoKKworCUF0IG9mZnNldCAweDAwMjAgKHdvcmQpLCAiY21kX2xpbmVfbWFnaWMiLCBlbnRlciB0aGUgbWFnaWMKKwludW1iZXIgMHhBMzNGLgorCisJQXQgb2Zmc2V0IDB4MDAyMiAod29yZCksICJjbWRfbGluZV9vZmZzZXQiLCBlbnRlciB0aGUgb2Zmc2V0CisJb2YgdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgKHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUKKwlyZWFsLW1vZGUga2VybmVsKS4KKwkKKwlUaGUga2VybmVsIGNvbW1hbmQgbGluZSAqbXVzdCogYmUgd2l0aGluIHRoZSBtZW1vcnkgcmVnaW9uCisJY292ZXJlZCBieSBzZXR1cF9tb3ZlX3NpemUsIHNvIHlvdSBtYXkgbmVlZCB0byBhZGp1c3QgdGhpcworCWZpZWxkLgorCisKKyoqKiogTUVNT1JZIExBWU9VVCBPRiBUSEUgUkVBTC1NT0RFIENPREUKKworVGhlIHJlYWwtbW9kZSBjb2RlIHJlcXVpcmVzIGEgc3RhY2svaGVhcCB0byBiZSBzZXQgdXAsIGFzIHdlbGwgYXMKK21lbW9yeSBhbGxvY2F0ZWQgZm9yIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lLiAgVGhpcyBuZWVkcyB0byBiZSBkb25lCitpbiB0aGUgcmVhbC1tb2RlIGFjY2Vzc2libGUgbWVtb3J5IGluIGJvdHRvbSBtZWdhYnl0ZS4KKworSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgbW9kZXJuIG1hY2hpbmVzIG9mdGVuIGhhdmUgYSBzaXphYmxlIEV4dGVuZGVkCitCSU9TIERhdGEgQXJlYSAoRUJEQSkuICBBcyBhIHJlc3VsdCwgaXQgaXMgYWR2aXNhYmxlIHRvIHVzZSBhcyBsaXR0bGUKK29mIHRoZSBsb3cgbWVnYWJ5dGUgYXMgcG9zc2libGUuCisKK1VuZm9ydHVuYXRlbHksIHVuZGVyIHRoZSBmb2xsb3dpbmcgY2lyY3Vtc3RhbmNlcyB0aGUgMHg5MDAwMCBtZW1vcnkKK3NlZ21lbnQgaGFzIHRvIGJlIHVzZWQ6CisKKwktIFdoZW4gbG9hZGluZyBhIHpJbWFnZSBrZXJuZWwgKChsb2FkZmxhZ3MgJiAweDAxKSA9PSAwKS4KKwktIFdoZW4gbG9hZGluZyBhIDIuMDEgb3IgZWFybGllciBib290IHByb3RvY29sIGtlcm5lbC4KKworCSAgLT4gRm9yIHRoZSAyLjAwIGFuZCAyLjAxIGJvb3QgcHJvdG9jb2xzLCB0aGUgcmVhbC1tb2RlIGNvZGUKKwkgICAgIGNhbiBiZSBsb2FkZWQgYXQgYW5vdGhlciBhZGRyZXNzLCBidXQgaXQgaXMgaW50ZXJuYWxseQorCSAgICAgcmVsb2NhdGVkIHRvIDB4OTAwMDAuICBGb3IgdGhlICJvbGQiIHByb3RvY29sLCB0aGUKKwkgICAgIHJlYWwtbW9kZSBjb2RlIG11c3QgYmUgbG9hZGVkIGF0IDB4OTAwMDAuCisKK1doZW4gbG9hZGluZyBhdCAweDkwMDAwLCBhdm9pZCB1c2luZyBtZW1vcnkgYWJvdmUgMHg5YTAwMC4KKworRm9yIGJvb3QgcHJvdG9jb2wgMi4wMiBvciBoaWdoZXIsIHRoZSBjb21tYW5kIGxpbmUgZG9lcyBub3QgaGF2ZSB0byBiZQorbG9jYXRlZCBpbiB0aGUgc2FtZSA2NEsgc2VnbWVudCBhcyB0aGUgcmVhbC1tb2RlIHNldHVwIGNvZGU7IGl0IGlzCit0aHVzIHBlcm1pdHRlZCB0byBnaXZlIHRoZSBzdGFjay9oZWFwIHRoZSBmdWxsIDY0SyBzZWdtZW50IGFuZCBsb2NhdGUKK3RoZSBjb21tYW5kIGxpbmUgYWJvdmUgaXQuCisKK1RoZSBrZXJuZWwgY29tbWFuZCBsaW5lIHNob3VsZCBub3QgYmUgbG9jYXRlZCBiZWxvdyB0aGUgcmVhbC1tb2RlCitjb2RlLCBub3Igc2hvdWxkIGl0IGJlIGxvY2F0ZWQgaW4gaGlnaCBtZW1vcnkuCisKKworKioqKiBTQU1QTEUgQk9PVCBDT05GSUdVUkFUSU9OCisKK0FzIGEgc2FtcGxlIGNvbmZpZ3VyYXRpb24sIGFzc3VtZSB0aGUgZm9sbG93aW5nIGxheW91dCBvZiB0aGUgcmVhbAorbW9kZSBzZWdtZW50OgorCisgICAgV2hlbiBsb2FkaW5nIGJlbG93IDB4OTAwMDAsIHVzZSB0aGUgZW50aXJlIHNlZ21lbnQ6CisKKwkweDAwMDAtMHg3ZmZmCVJlYWwgbW9kZSBrZXJuZWwKKwkweDgwMDAtMHhkZmZmCVN0YWNrIGFuZCBoZWFwCisJMHhlMDAwLTB4ZmZmZglLZXJuZWwgY29tbWFuZCBsaW5lCisKKyAgICBXaGVuIGxvYWRpbmcgYXQgMHg5MDAwMCBPUiB0aGUgcHJvdG9jb2wgdmVyc2lvbiBpcyAyLjAxIG9yIGVhcmxpZXI6CisKKwkweDAwMDAtMHg3ZmZmCVJlYWwgbW9kZSBrZXJuZWwKKwkweDgwMDAtMHg5N2ZmCVN0YWNrIGFuZCBoZWFwCisJMHg5ODAwLTB4OWZmZglLZXJuZWwgY29tbWFuZCBsaW5lCisKK1N1Y2ggYSBib290IGxvYWRlciBzaG91bGQgZW50ZXIgdGhlIGZvbGxvd2luZyBmaWVsZHMgaW4gdGhlIGhlYWRlcjoKKworCXVuc2lnbmVkIGxvbmcgYmFzZV9wdHI7CS8qIGJhc2UgYWRkcmVzcyBmb3IgcmVhbC1tb2RlIHNlZ21lbnQgKi8KKworCWlmICggc2V0dXBfc2VjdHMgPT0gMCApIHsKKwkJc2V0dXBfc2VjdHMgPSA0OworCX0KKworCWlmICggcHJvdG9jb2wgPj0gMHgwMjAwICkgeworCQl0eXBlX29mX2xvYWRlciA9IDx0eXBlIGNvZGU+OworCQlpZiAoIGxvYWRpbmdfaW5pdHJkICkgeworCQkJcmFtZGlza19pbWFnZSA9IDxpbml0cmRfYWRkcmVzcz47CisJCQlyYW1kaXNrX3NpemUgPSA8aW5pdHJkX3NpemU+OworCQl9CisKKwkJaWYgKCBwcm90b2NvbCA+PSAweDAyMDIgJiYgbG9hZGZsYWdzICYgMHgwMSApCisJCQloZWFwX2VuZCA9IDB4ZTAwMDsKKwkJZWxzZQorCQkJaGVhcF9lbmQgPSAweDk4MDA7CisKKwkJaWYgKCBwcm90b2NvbCA+PSAweDAyMDEgKSB7CisJCQloZWFwX2VuZF9wdHIgPSBoZWFwX2VuZCAtIDB4MjAwOworCQkJbG9hZGZsYWdzIHw9IDB4ODA7IC8qIENBTl9VU0VfSEVBUCAqLworCQl9CisKKwkJaWYgKCBwcm90b2NvbCA+PSAweDAyMDIgKSB7CisJCQljbWRfbGluZV9wdHIgPSBiYXNlX3B0ciArIGhlYXBfZW5kOworCQkJc3RyY3B5KGNtZF9saW5lX3B0ciwgY21kbGluZSk7CisJCX0gZWxzZSB7CisJCQljbWRfbGluZV9tYWdpYwk9IDB4QTMzRjsKKwkJCWNtZF9saW5lX29mZnNldCA9IGhlYXBfZW5kOworCQkJc2V0dXBfbW92ZV9zaXplID0gaGVhcF9lbmQgKyBzdHJsZW4oY21kbGluZSkrMTsKKwkJCXN0cmNweShiYXNlX3B0citjbWRfbGluZV9vZmZzZXQsIGNtZGxpbmUpOworCQl9CisJfSBlbHNlIHsKKwkJLyogVmVyeSBvbGQga2VybmVsICovCisKKwkJaGVhcF9lbmQgPSAweDk4MDA7CisKKwkJY21kX2xpbmVfbWFnaWMJPSAweEEzM0Y7CisJCWNtZF9saW5lX29mZnNldCA9IGhlYXBfZW5kOworCisJCS8qIEEgdmVyeSBvbGQga2VybmVsIE1VU1QgaGF2ZSBpdHMgcmVhbC1tb2RlIGNvZGUKKwkJICAgbG9hZGVkIGF0IDB4OTAwMDAgKi8KKworCQlpZiAoIGJhc2VfcHRyICE9IDB4OTAwMDAgKSB7CisJCQkvKiBDb3B5IHRoZSByZWFsLW1vZGUga2VybmVsICovCisJCQltZW1jcHkoMHg5MDAwMCwgYmFzZV9wdHIsIChzZXR1cF9zZWN0cysxKSo1MTIpOworCQkJYmFzZV9wdHIgPSAweDkwMDAwOwkJIC8qIFJlbG9jYXRlZCAqLworCQl9CisKKwkJc3RyY3B5KDB4OTAwMDArY21kX2xpbmVfb2Zmc2V0LCBjbWRsaW5lKTsKKworCQkvKiBJdCBpcyByZWNvbW1lbmRlZCB0byBjbGVhciBtZW1vcnkgdXAgdG8gdGhlIDMySyBtYXJrICovCisJCW1lbXNldCgweDkwMDAwICsgKHNldHVwX3NlY3RzKzEpKjUxMiwgMCwKKwkJICAgICAgICg2NC0oc2V0dXBfc2VjdHMrMSkpKjUxMik7CisJfQorCisKKyoqKiogTE9BRElORyBUSEUgUkVTVCBPRiBUSEUgS0VSTkVMCisKK1RoZSAzMi1iaXQgKG5vbi1yZWFsLW1vZGUpIGtlcm5lbCBzdGFydHMgYXQgb2Zmc2V0IChzZXR1cF9zZWN0cysxKSo1MTIKK2luIHRoZSBrZXJuZWwgZmlsZSAoYWdhaW4sIGlmIHNldHVwX3NlY3RzID09IDAgdGhlIHJlYWwgdmFsdWUgaXMgNC4pCitJdCBzaG91bGQgYmUgbG9hZGVkIGF0IGFkZHJlc3MgMHgxMDAwMCBmb3IgSW1hZ2UvekltYWdlIGtlcm5lbHMgYW5kCisweDEwMDAwMCBmb3IgYnpJbWFnZSBrZXJuZWxzLgorCitUaGUga2VybmVsIGlzIGEgYnpJbWFnZSBrZXJuZWwgaWYgdGhlIHByb3RvY29sID49IDIuMDAgYW5kIHRoZSAweDAxCitiaXQgKExPQURfSElHSCkgaW4gdGhlIGxvYWRmbGFncyBmaWVsZCBpcyBzZXQ6CisKKwlpc19iekltYWdlID0gKHByb3RvY29sID49IDB4MDIwMCkgJiYgKGxvYWRmbGFncyAmIDB4MDEpOworCWxvYWRfYWRkcmVzcyA9IGlzX2J6SW1hZ2UgPyAweDEwMDAwMCA6IDB4MTAwMDA7CisKK05vdGUgdGhhdCBJbWFnZS96SW1hZ2Uga2VybmVscyBjYW4gYmUgdXAgdG8gNTEySyBpbiBzaXplLCBhbmQgdGh1cyB1c2UKK3RoZSBlbnRpcmUgMHgxMDAwMC0weDkwMDAwIHJhbmdlIG9mIG1lbW9yeS4gIFRoaXMgbWVhbnMgaXQgaXMgcHJldHR5CittdWNoIGEgcmVxdWlyZW1lbnQgZm9yIHRoZXNlIGtlcm5lbHMgdG8gbG9hZCB0aGUgcmVhbC1tb2RlIHBhcnQgYXQKKzB4OTAwMDAuICBiekltYWdlIGtlcm5lbHMgYWxsb3cgbXVjaCBtb3JlIGZsZXhpYmlsaXR5LgorCisKKyoqKiogU1BFQ0lBTCBDT01NQU5EIExJTkUgT1BUSU9OUworCitJZiB0aGUgY29tbWFuZCBsaW5lIHByb3ZpZGVkIGJ5IHRoZSBib290IGxvYWRlciBpcyBlbnRlcmVkIGJ5IHRoZQordXNlciwgdGhlIHVzZXIgbWF5IGV4cGVjdCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgbGluZSBvcHRpb25zIHRvIHdvcmsuCitUaGV5IHNob3VsZCBub3JtYWxseSBub3QgYmUgZGVsZXRlZCBmcm9tIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIGV2ZW4KK3Rob3VnaCBub3QgYWxsIG9mIHRoZW0gYXJlIGFjdHVhbGx5IG1lYW5pbmdmdWwgdG8gdGhlIGtlcm5lbC4gIEJvb3QKK2xvYWRlciBhdXRob3JzIHdobyBuZWVkIGFkZGl0aW9uYWwgY29tbWFuZCBsaW5lIG9wdGlvbnMgZm9yIHRoZSBib290Citsb2FkZXIgaXRzZWxmIHNob3VsZCBnZXQgdGhlbSByZWdpc3RlcmVkIGluCitEb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCB0byBtYWtlIHN1cmUgdGhleSB3aWxsIG5vdAorY29uZmxpY3Qgd2l0aCBhY3R1YWwga2VybmVsIG9wdGlvbnMgbm93IG9yIGluIHRoZSBmdXR1cmUuCisKKyAgdmdhPTxtb2RlPgorCTxtb2RlPiBoZXJlIGlzIGVpdGhlciBhbiBpbnRlZ2VyIChpbiBDIG5vdGF0aW9uLCBlaXRoZXIKKwlkZWNpbWFsLCBvY3RhbCwgb3IgaGV4YWRlY2ltYWwpIG9yIG9uZSBvZiB0aGUgc3RyaW5ncworCSJub3JtYWwiIChtZWFuaW5nIDB4RkZGRiksICJleHQiIChtZWFuaW5nIDB4RkZGRSkgb3IgImFzayIKKwkobWVhbmluZyAweEZGRkQpLiAgVGhpcyB2YWx1ZSBzaG91bGQgYmUgZW50ZXJlZCBpbnRvIHRoZQorCXZpZF9tb2RlIGZpZWxkLCBhcyBpdCBpcyB1c2VkIGJ5IHRoZSBrZXJuZWwgYmVmb3JlIHRoZSBjb21tYW5kCisJbGluZSBpcyBwYXJzZWQuCisKKyAgbWVtPTxzaXplPgorCTxzaXplPiBpcyBhbiBpbnRlZ2VyIGluIEMgbm90YXRpb24gb3B0aW9uYWxseSBmb2xsb3dlZCBieQorCShjYXNlIGluc2Vuc2l0aXZlKSBLLCBNLCBHLCBULCBQIG9yIEUgKG1lYW5pbmcgPDwgMTAsIDw8IDIwLAorCTw8IDMwLCA8PCA0MCwgPDwgNTAgb3IgPDwgNjApLiAgVGhpcyBzcGVjaWZpZXMgdGhlIGVuZCBvZgorCW1lbW9yeSB0byB0aGUga2VybmVsLiBUaGlzIGFmZmVjdHMgdGhlIHBvc3NpYmxlIHBsYWNlbWVudCBvZgorCWFuIGluaXRyZCwgc2luY2UgYW4gaW5pdHJkIHNob3VsZCBiZSBwbGFjZWQgbmVhciBlbmQgb2YKKwltZW1vcnkuICBOb3RlIHRoYXQgdGhpcyBpcyBhbiBvcHRpb24gdG8gKmJvdGgqIHRoZSBrZXJuZWwgYW5kCisJdGhlIGJvb3Rsb2FkZXIhCisKKyAgaW5pdHJkPTxmaWxlPgorCUFuIGluaXRyZCBzaG91bGQgYmUgbG9hZGVkLiAgVGhlIG1lYW5pbmcgb2YgPGZpbGU+IGlzCisJb2J2aW91c2x5IGJvb3Rsb2FkZXItZGVwZW5kZW50LCBhbmQgc29tZSBib290IGxvYWRlcnMKKwkoZS5nLiBMSUxPKSBkbyBub3QgaGF2ZSBzdWNoIGEgY29tbWFuZC4KKworSW4gYWRkaXRpb24sIHNvbWUgYm9vdCBsb2FkZXJzIGFkZCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgdG8gdGhlCit1c2VyLXNwZWNpZmllZCBjb21tYW5kIGxpbmU6CisKKyAgQk9PVF9JTUFHRT08ZmlsZT4KKwlUaGUgYm9vdCBpbWFnZSB3aGljaCB3YXMgbG9hZGVkLiAgQWdhaW4sIHRoZSBtZWFuaW5nIG9mIDxmaWxlPgorCWlzIG9idmlvdXNseSBib290bG9hZGVyLWRlcGVuZGVudC4KKworICBhdXRvCisJVGhlIGtlcm5lbCB3YXMgYm9vdGVkIHdpdGhvdXQgZXhwbGljaXQgdXNlciBpbnRlcnZlbnRpb24uCisKK0lmIHRoZXNlIG9wdGlvbnMgYXJlIGFkZGVkIGJ5IHRoZSBib290IGxvYWRlciwgaXQgaXMgaGlnaGx5CityZWNvbW1lbmRlZCB0aGF0IHRoZXkgYXJlIGxvY2F0ZWQgKmZpcnN0KiwgYmVmb3JlIHRoZSB1c2VyLXNwZWNpZmllZAorb3IgY29uZmlndXJhdGlvbi1zcGVjaWZpZWQgY29tbWFuZCBsaW5lLiAgT3RoZXJ3aXNlLCAiaW5pdD0vYmluL3NoIgorZ2V0cyBjb25mdXNlZCBieSB0aGUgImF1dG8iIG9wdGlvbi4KKworCisqKioqIFJVTk5JTkcgVEhFIEtFUk5FTAorCitUaGUga2VybmVsIGlzIHN0YXJ0ZWQgYnkganVtcGluZyB0byB0aGUga2VybmVsIGVudHJ5IHBvaW50LCB3aGljaCBpcworbG9jYXRlZCBhdCAqc2VnbWVudCogb2Zmc2V0IDB4MjAgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHJlYWwgbW9kZQora2VybmVsLiAgVGhpcyBtZWFucyB0aGF0IGlmIHlvdSBsb2FkZWQgeW91ciByZWFsLW1vZGUga2VybmVsIGNvZGUgYXQKKzB4OTAwMDAsIHRoZSBrZXJuZWwgZW50cnkgcG9pbnQgaXMgOTAyMDowMDAwLgorCitBdCBlbnRyeSwgZHMgPSBlcyA9IHNzIHNob3VsZCBwb2ludCB0byB0aGUgc3RhcnQgb2YgdGhlIHJlYWwtbW9kZQora2VybmVsIGNvZGUgKDB4OTAwMCBpZiB0aGUgY29kZSBpcyBsb2FkZWQgYXQgMHg5MDAwMCksIHNwIHNob3VsZCBiZQorc2V0IHVwIHByb3Blcmx5LCBub3JtYWxseSBwb2ludGluZyB0byB0aGUgdG9wIG9mIHRoZSBoZWFwLCBhbmQKK2ludGVycnVwdHMgc2hvdWxkIGJlIGRpc2FibGVkLiAgRnVydGhlcm1vcmUsIHRvIGd1YXJkIGFnYWluc3QgYnVncyBpbgordGhlIGtlcm5lbCwgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGUgYm9vdCBsb2FkZXIgc2V0cyBmcyA9IGdzID0gZHMgPQorZXMgPSBzcy4KKworSW4gb3VyIGV4YW1wbGUgZnJvbSBhYm92ZSwgd2Ugd291bGQgZG86CisKKwkvKiBOb3RlOiBpbiB0aGUgY2FzZSBvZiB0aGUgIm9sZCIga2VybmVsIHByb3RvY29sLCBiYXNlX3B0ciBtdXN0CisJICAgYmUgPT0gMHg5MDAwMCBhdCB0aGlzIHBvaW50OyBzZWUgdGhlIHByZXZpb3VzIHNhbXBsZSBjb2RlICovCisKKwlzZWcgPSBiYXNlX3B0ciA+PiA0OworCisJY2xpKCk7CS8qIEVudGVyIHdpdGggaW50ZXJydXB0cyBkaXNhYmxlZCEgKi8KKworCS8qIFNldCB1cCB0aGUgcmVhbC1tb2RlIGtlcm5lbCBzdGFjayAqLworCV9TUyA9IHNlZzsKKwlfU1AgPSBoZWFwX2VuZDsKKworCV9EUyA9IF9FUyA9IF9GUyA9IF9HUyA9IHNlZzsKKwlqbXBfZmFyKHNlZysweDIwLCAwKTsJLyogUnVuIHRoZSBrZXJuZWwgKi8KKworSWYgeW91ciBib290IHNlY3RvciBhY2Nlc3NlcyBhIGZsb3BweSBkcml2ZSwgaXQgaXMgcmVjb21tZW5kZWQgdG8KK3N3aXRjaCBvZmYgdGhlIGZsb3BweSBtb3RvciBiZWZvcmUgcnVubmluZyB0aGUga2VybmVsLCBzaW5jZSB0aGUKK2tlcm5lbCBib290IGxlYXZlcyBpbnRlcnJ1cHRzIG9mZiBhbmQgdGh1cyB0aGUgbW90b3Igd2lsbCBub3QgYmUKK3N3aXRjaGVkIG9mZiwgZXNwZWNpYWxseSBpZiB0aGUgbG9hZGVkIGtlcm5lbCBoYXMgdGhlIGZsb3BweSBkcml2ZXIgYXMKK2EgZGVtYW5kLWxvYWRlZCBtb2R1bGUhCisKKworKioqKiBBRFZBTkNFRCBCT09UIExPQURFUiBIT09LUworCitJZiB0aGUgYm9vdCBsb2FkZXIgcnVucyBpbiBhIHBhcnRpY3VsYXJseSBob3N0aWxlIGVudmlyb25tZW50IChzdWNoIGFzCitMT0FETElOLCB3aGljaCBydW5zIHVuZGVyIERPUykgaXQgbWF5IGJlIGltcG9zc2libGUgdG8gZm9sbG93IHRoZQorc3RhbmRhcmQgbWVtb3J5IGxvY2F0aW9uIHJlcXVpcmVtZW50cy4gIFN1Y2ggYSBib290IGxvYWRlciBtYXkgdXNlIHRoZQorZm9sbG93aW5nIGhvb2tzIHRoYXQsIGlmIHNldCwgYXJlIGludm9rZWQgYnkgdGhlIGtlcm5lbCBhdCB0aGUKK2FwcHJvcHJpYXRlIHRpbWUuICBUaGUgdXNlIG9mIHRoZXNlIGhvb2tzIHNob3VsZCBwcm9iYWJseSBiZQorY29uc2lkZXJlZCBhbiBhYnNvbHV0ZWx5IGxhc3QgcmVzb3J0IQorCitJTVBPUlRBTlQ6IEFsbCB0aGUgaG9va3MgYXJlIHJlcXVpcmVkIHRvIHByZXNlcnZlICVlc3AsICVlYnAsICVlc2kgYW5kCislZWRpIGFjcm9zcyBpbnZvY2F0aW9uLgorCisgIHJlYWxtb2RlX3N3dGNoOgorCUEgMTYtYml0IHJlYWwgbW9kZSBmYXIgc3Vicm91dGluZSBpbnZva2VkIGltbWVkaWF0ZWx5IGJlZm9yZQorCWVudGVyaW5nIHByb3RlY3RlZCBtb2RlLiAgVGhlIGRlZmF1bHQgcm91dGluZSBkaXNhYmxlcyBOTUksIHNvCisJeW91ciByb3V0aW5lIHNob3VsZCBwcm9iYWJseSBkbyBzbywgdG9vLgorCisgIGNvZGUzMl9zdGFydDoKKwlBIDMyLWJpdCBmbGF0LW1vZGUgcm91dGluZSAqanVtcGVkKiB0byBpbW1lZGlhdGVseSBhZnRlciB0aGUKKwl0cmFuc2l0aW9uIHRvIHByb3RlY3RlZCBtb2RlLCBidXQgYmVmb3JlIHRoZSBrZXJuZWwgaXMKKwl1bmNvbXByZXNzZWQuICBObyBzZWdtZW50cywgZXhjZXB0IENTLCBhcmUgZ3VhcmFudGVlZCB0byBiZQorCXNldCB1cCAoY3VycmVudCBrZXJuZWxzIGRvLCBidXQgb2xkZXIgb25lcyBkbyBub3QpOyB5b3Ugc2hvdWxkCisJc2V0IHRoZW0gdXAgdG8gQk9PVF9EUyAoMHgxOCkgeW91cnNlbGYuCisKKwlBZnRlciBjb21wbGV0aW5nIHlvdXIgaG9vaywgeW91IHNob3VsZCBqdW1wIHRvIHRoZSBhZGRyZXNzCisJdGhhdCB3YXMgaW4gdGhpcyBmaWVsZCBiZWZvcmUgeW91ciBib290IGxvYWRlciBvdmVyd3JvdGUgaXQKKwkocmVsb2NhdGVkLCBpZiBhcHByb3ByaWF0ZS4pCisKKworKioqKiAzMi1iaXQgQk9PVCBQUk9UT0NPTAorCitGb3IgbWFjaGluZSB3aXRoIHNvbWUgbmV3IEJJT1Mgb3RoZXIgdGhhbiBsZWdhY3kgQklPUywgc3VjaCBhcyBFRkksCitMaW51eEJJT1MsIGV0YywgYW5kIGtleGVjLCB0aGUgMTYtYml0IHJlYWwgbW9kZSBzZXR1cCBjb2RlIGluIGtlcm5lbAorYmFzZWQgb24gbGVnYWN5IEJJT1MgY2FuIG5vdCBiZSB1c2VkLCBzbyBhIDMyLWJpdCBib290IHByb3RvY29sIG5lZWRzCit0byBiZSBkZWZpbmVkLgorCitJbiAzMi1iaXQgYm9vdCBwcm90b2NvbCwgdGhlIGZpcnN0IHN0ZXAgaW4gbG9hZGluZyBhIExpbnV4IGtlcm5lbAorc2hvdWxkIGJlIHRvIHNldHVwIHRoZSBib290IHBhcmFtZXRlcnMgKHN0cnVjdCBib290X3BhcmFtcywKK3RyYWRpdGlvbmFsbHkga25vd24gYXMgInplcm8gcGFnZSIpLiBUaGUgbWVtb3J5IGZvciBzdHJ1Y3QgYm9vdF9wYXJhbXMKK3Nob3VsZCBiZSBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkIHRvIGFsbCB6ZXJvLiBUaGVuIHRoZSBzZXR1cCBoZWFkZXIKK2Zyb20gb2Zmc2V0IDB4MDFmMSBvZiBrZXJuZWwgaW1hZ2Ugb24gc2hvdWxkIGJlIGxvYWRlZCBpbnRvIHN0cnVjdAorYm9vdF9wYXJhbXMgYW5kIGV4YW1pbmVkLiBUaGUgZW5kIG9mIHNldHVwIGhlYWRlciBjYW4gYmUgY2FsY3VsYXRlZCBhcworZm9sbG93OgorCisJMHgwMjAyICsgYnl0ZSB2YWx1ZSBhdCBvZmZzZXQgMHgwMjAxCisKK0luIGFkZGl0aW9uIHRvIHJlYWQvbW9kaWZ5L3dyaXRlIHRoZSBzZXR1cCBoZWFkZXIgb2YgdGhlIHN0cnVjdAorYm9vdF9wYXJhbXMgYXMgdGhhdCBvZiAxNi1iaXQgYm9vdCBwcm90b2NvbCwgdGhlIGJvb3QgbG9hZGVyIHNob3VsZAorYWxzbyBmaWxsIHRoZSBhZGRpdGlvbmFsIGZpZWxkcyBvZiB0aGUgc3RydWN0IGJvb3RfcGFyYW1zIGFzIHRoYXQKK2Rlc2NyaWJlZCBpbiB6ZXJvLXBhZ2UudHh0LgorCitBZnRlciBzZXR0aW5nIHVwIHRoZSBzdHJ1Y3QgYm9vdF9wYXJhbXMsIHRoZSBib290IGxvYWRlciBjYW4gbG9hZCB0aGUKKzMyLzY0LWJpdCBrZXJuZWwgaW4gdGhlIHNhbWUgd2F5IGFzIHRoYXQgb2YgMTYtYml0IGJvb3QgcHJvdG9jb2wuCisKK0luIDMyLWJpdCBib290IHByb3RvY29sLCB0aGUga2VybmVsIGlzIHN0YXJ0ZWQgYnkganVtcGluZyB0byB0aGUKKzMyLWJpdCBrZXJuZWwgZW50cnkgcG9pbnQsIHdoaWNoIGlzIHRoZSBzdGFydCBhZGRyZXNzIG9mIGxvYWRlZAorMzIvNjQtYml0IGtlcm5lbC4KKworQXQgZW50cnksIHRoZSBDUFUgbXVzdCBiZSBpbiAzMi1iaXQgcHJvdGVjdGVkIG1vZGUgd2l0aCBwYWdpbmcKK2Rpc2FibGVkOyBhIEdEVCBtdXN0IGJlIGxvYWRlZCB3aXRoIHRoZSBkZXNjcmlwdG9ycyBmb3Igc2VsZWN0b3JzCitfX0JPT1RfQ1MoMHgxMCkgYW5kIF9fQk9PVF9EUygweDE4KTsgYm90aCBkZXNjcmlwdG9ycyBtdXN0IGJlIDRHIGZsYXQKK3NlZ21lbnQ7IF9fQk9PVF9DUyBtdXN0IGhhdmUgZXhlY3V0ZS9yZWFkIHBlcm1pc3Npb24sIGFuZCBfX0JPT1RfRFMKK211c3QgaGF2ZSByZWFkL3dyaXRlIHBlcm1pc3Npb247IENTIG11c3QgYmUgX19CT09UX0NTIGFuZCBEUywgRVMsIFNTCittdXN0IGJlIF9fQk9PVF9EUzsgaW50ZXJydXB0IG11c3QgYmUgZGlzYWJsZWQ7ICVlc2kgbXVzdCBob2xkIHRoZSBiYXNlCithZGRyZXNzIG9mIHRoZSBzdHJ1Y3QgYm9vdF9wYXJhbXM7ICVlYnAsICVlZGkgYW5kICVlYnggbXVzdCBiZSB6ZXJvLgorCisqKioqIDY0LWJpdCBCT09UIFBST1RPQ09MCisKK0ZvciBtYWNoaW5lIHdpdGggNjRiaXQgY3B1cyBhbmQgNjRiaXQga2VybmVsLCB3ZSBjb3VsZCB1c2UgNjRiaXQgYm9vdGxvYWRlcgorYW5kIHdlIG5lZWQgYSA2NC1iaXQgYm9vdCBwcm90b2NvbC4KKworSW4gNjQtYml0IGJvb3QgcHJvdG9jb2wsIHRoZSBmaXJzdCBzdGVwIGluIGxvYWRpbmcgYSBMaW51eCBrZXJuZWwKK3Nob3VsZCBiZSB0byBzZXR1cCB0aGUgYm9vdCBwYXJhbWV0ZXJzIChzdHJ1Y3QgYm9vdF9wYXJhbXMsCit0cmFkaXRpb25hbGx5IGtub3duIGFzICJ6ZXJvIHBhZ2UiKS4gVGhlIG1lbW9yeSBmb3Igc3RydWN0IGJvb3RfcGFyYW1zCitjb3VsZCBiZSBhbGxvY2F0ZWQgYW55d2hlcmUgKGV2ZW4gYWJvdmUgNEcpIGFuZCBpbml0aWFsaXplZCB0byBhbGwgemVyby4KK1RoZW4sIHRoZSBzZXR1cCBoZWFkZXIgYXQgb2Zmc2V0IDB4MDFmMSBvZiBrZXJuZWwgaW1hZ2Ugb24gc2hvdWxkIGJlCitsb2FkZWQgaW50byBzdHJ1Y3QgYm9vdF9wYXJhbXMgYW5kIGV4YW1pbmVkLiBUaGUgZW5kIG9mIHNldHVwIGhlYWRlcgorY2FuIGJlIGNhbGN1bGF0ZWQgYXMgZm9sbG93czoKKworCTB4MDIwMiArIGJ5dGUgdmFsdWUgYXQgb2Zmc2V0IDB4MDIwMQorCitJbiBhZGRpdGlvbiB0byByZWFkL21vZGlmeS93cml0ZSB0aGUgc2V0dXAgaGVhZGVyIG9mIHRoZSBzdHJ1Y3QKK2Jvb3RfcGFyYW1zIGFzIHRoYXQgb2YgMTYtYml0IGJvb3QgcHJvdG9jb2wsIHRoZSBib290IGxvYWRlciBzaG91bGQKK2Fsc28gZmlsbCB0aGUgYWRkaXRpb25hbCBmaWVsZHMgb2YgdGhlIHN0cnVjdCBib290X3BhcmFtcyBhcyBkZXNjcmliZWQKK2luIHplcm8tcGFnZS50eHQuCisKK0FmdGVyIHNldHRpbmcgdXAgdGhlIHN0cnVjdCBib290X3BhcmFtcywgdGhlIGJvb3QgbG9hZGVyIGNhbiBsb2FkCis2NC1iaXQga2VybmVsIGluIHRoZSBzYW1lIHdheSBhcyB0aGF0IG9mIDE2LWJpdCBib290IHByb3RvY29sLCBidXQKK2tlcm5lbCBjb3VsZCBiZSBsb2FkZWQgYWJvdmUgNEcuCisKK0luIDY0LWJpdCBib290IHByb3RvY29sLCB0aGUga2VybmVsIGlzIHN0YXJ0ZWQgYnkganVtcGluZyB0byB0aGUKKzY0LWJpdCBrZXJuZWwgZW50cnkgcG9pbnQsIHdoaWNoIGlzIHRoZSBzdGFydCBhZGRyZXNzIG9mIGxvYWRlZAorNjQtYml0IGtlcm5lbCBwbHVzIDB4MjAwLgorCitBdCBlbnRyeSwgdGhlIENQVSBtdXN0IGJlIGluIDY0LWJpdCBtb2RlIHdpdGggcGFnaW5nIGVuYWJsZWQuCitUaGUgcmFuZ2Ugd2l0aCBzZXR1cF9oZWFkZXIuaW5pdF9zaXplIGZyb20gc3RhcnQgYWRkcmVzcyBvZiBsb2FkZWQKK2tlcm5lbCBhbmQgemVybyBwYWdlIGFuZCBjb21tYW5kIGxpbmUgYnVmZmVyIGdldCBpZGVudCBtYXBwaW5nOworYSBHRFQgbXVzdCBiZSBsb2FkZWQgd2l0aCB0aGUgZGVzY3JpcHRvcnMgZm9yIHNlbGVjdG9ycworX19CT09UX0NTKDB4MTApIGFuZCBfX0JPT1RfRFMoMHgxOCk7IGJvdGggZGVzY3JpcHRvcnMgbXVzdCBiZSA0RyBmbGF0CitzZWdtZW50OyBfX0JPT1RfQ1MgbXVzdCBoYXZlIGV4ZWN1dGUvcmVhZCBwZXJtaXNzaW9uLCBhbmQgX19CT09UX0RTCittdXN0IGhhdmUgcmVhZC93cml0ZSBwZXJtaXNzaW9uOyBDUyBtdXN0IGJlIF9fQk9PVF9DUyBhbmQgRFMsIEVTLCBTUworbXVzdCBiZSBfX0JPT1RfRFM7IGludGVycnVwdCBtdXN0IGJlIGRpc2FibGVkOyAlcnNpIG11c3QgaG9sZCB0aGUgYmFzZQorYWRkcmVzcyBvZiB0aGUgc3RydWN0IGJvb3RfcGFyYW1zLgorCisqKioqIEVGSSBIQU5ET1ZFUiBQUk9UT0NPTAorCitUaGlzIHByb3RvY29sIGFsbG93cyBib290IGxvYWRlcnMgdG8gZGVmZXIgaW5pdGlhbGlzYXRpb24gdG8gdGhlIEVGSQorYm9vdCBzdHViLiBUaGUgYm9vdCBsb2FkZXIgaXMgcmVxdWlyZWQgdG8gbG9hZCB0aGUga2VybmVsL2luaXRyZChzKQorZnJvbSB0aGUgYm9vdCBtZWRpYSBhbmQganVtcCB0byB0aGUgRUZJIGhhbmRvdmVyIHByb3RvY29sIGVudHJ5IHBvaW50Cit3aGljaCBpcyBoZHItPmhhbmRvdmVyX29mZnNldCBieXRlcyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YKK3N0YXJ0dXBfezMyLDY0fS4KKworVGhlIGZ1bmN0aW9uIHByb3RvdHlwZSBmb3IgdGhlIGhhbmRvdmVyIGVudHJ5IHBvaW50IGxvb2tzIGxpa2UgdGhpcywKKworICAgIGVmaV9tYWluKHZvaWQgKmhhbmRsZSwgZWZpX3N5c3RlbV90YWJsZV90ICp0YWJsZSwgc3RydWN0IGJvb3RfcGFyYW1zICpicCkKKworJ2hhbmRsZScgaXMgdGhlIEVGSSBpbWFnZSBoYW5kbGUgcGFzc2VkIHRvIHRoZSBib290IGxvYWRlciBieSB0aGUgRUZJCitmaXJtd2FyZSwgJ3RhYmxlJyBpcyB0aGUgRUZJIHN5c3RlbSB0YWJsZSAtIHRoZXNlIGFyZSB0aGUgZmlyc3QgdHdvCithcmd1bWVudHMgb2YgdGhlICJoYW5kb2ZmIHN0YXRlIiBhcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAyLjMgb2YgdGhlCitVRUZJIHNwZWNpZmljYXRpb24uICdicCcgaXMgdGhlIGJvb3QgbG9hZGVyLWFsbG9jYXRlZCBib290IHBhcmFtcy4KKworVGhlIGJvb3QgbG9hZGVyICptdXN0KiBmaWxsIG91dCB0aGUgZm9sbG93aW5nIGZpZWxkcyBpbiBicCwKKworICAgIG8gaGRyLmNvZGUzMl9zdGFydAorICAgIG8gaGRyLmNtZF9saW5lX3B0cgorICAgIG8gaGRyLnJhbWRpc2tfaW1hZ2UgKGlmIGFwcGxpY2FibGUpCisgICAgbyBoZHIucmFtZGlza19zaXplICAoaWYgYXBwbGljYWJsZSkKKworQWxsIG90aGVyIGZpZWxkcyBzaG91bGQgYmUgemVyby4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24veDg2L2Vhcmx5LW1pY3JvY29kZS50eHQgYi9Eb2N1bWVudGF0aW9uL3g4Ni9lYXJseS1taWNyb2NvZGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MmJlYTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3g4Ni9lYXJseS1taWNyb2NvZGUudHh0CkBAIC0wLDAgKzEsNDIgQEAKK0Vhcmx5IGxvYWQgbWljcm9jb2RlCis9PT09PT09PT09PT09PT09PT09PQorQnkgRmVuZ2h1YSBZdSA8ZmVuZ2h1YS55dUBpbnRlbC5jb20+CisKK0tlcm5lbCBjYW4gdXBkYXRlIG1pY3JvY29kZSBpbiBlYXJseSBwaGFzZSBvZiBib290IHRpbWUuIExvYWRpbmcgbWljcm9jb2RlIGVhcmx5CitjYW4gZml4IENQVSBpc3N1ZXMgYmVmb3JlIHRoZXkgYXJlIG9ic2VydmVkIGR1cmluZyBrZXJuZWwgYm9vdCB0aW1lLgorCitNaWNyb2NvZGUgaXMgc3RvcmVkIGluIGFuIGluaXRyZCBmaWxlLiBUaGUgbWljcm9jb2RlIGlzIHJlYWQgZnJvbSB0aGUgaW5pdHJkCitmaWxlIGFuZCBsb2FkZWQgdG8gQ1BVcyBkdXJpbmcgYm9vdCB0aW1lLgorCitUaGUgZm9ybWF0IG9mIHRoZSBjb21iaW5lZCBpbml0cmQgaW1hZ2UgaXMgbWljcm9jb2RlIGluIGNwaW8gZm9ybWF0IGZvbGxvd2VkIGJ5Cit0aGUgaW5pdHJkIGltYWdlIChtYXliZSBjb21wcmVzc2VkKS4gS2VybmVsIHBhcnNlcyB0aGUgY29tYmluZWQgaW5pdHJkIGltYWdlCitkdXJpbmcgYm9vdCB0aW1lLiBUaGUgbWljcm9jb2RlIGZpbGUgaW4gY3BpbyBuYW1lIHNwYWNlIGlzOgorb24gSW50ZWw6IGtlcm5lbC94ODYvbWljcm9jb2RlL0dlbnVpbmVJbnRlbC5iaW4KK29uIEFNRCAgOiBrZXJuZWwveDg2L21pY3JvY29kZS9BdXRoZW50aWNBTUQuYmluCisKK0R1cmluZyBCU1AgYm9vdCAoYmVmb3JlIFNNUCBzdGFydHMpLCBpZiB0aGUga2VybmVsIGZpbmRzIHRoZSBtaWNyb2NvZGUgZmlsZSBpbgordGhlIGluaXRyZCBmaWxlLCBpdCBwYXJzZXMgdGhlIG1pY3JvY29kZSBhbmQgc2F2ZXMgbWF0Y2hpbmcgbWljcm9jb2RlIGluIG1lbW9yeS4KK0lmIG1hdGNoaW5nIG1pY3JvY29kZSBpcyBmb3VuZCwgaXQgd2lsbCBiZSB1cGxvYWRlZCBpbiBCU1AgYW5kIGxhdGVyIG9uIGluIGFsbAorQVBzLgorCitUaGUgY2FjaGVkIG1pY3JvY29kZSBwYXRjaCBpcyBhcHBsaWVkIHdoZW4gQ1BVcyByZXN1bWUgZnJvbSBhIHNsZWVwIHN0YXRlLgorCitUaGVyZSBhcmUgdHdvIGxlZ2FjeSB1c2VyIHNwYWNlIGludGVyZmFjZXMgdG8gbG9hZCBtaWNyb2NvZGUsIGVpdGhlciB0aHJvdWdoCisvZGV2L2NwdS9taWNyb2NvZGUgb3IgdGhyb3VnaCAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9taWNyb2NvZGUvcmVsb2FkIGZpbGUKK2luIHN5c2ZzLgorCitJbiBhZGRpdGlvbiB0byB0aGVzZSB0d28gbGVnYWN5IG1ldGhvZHMsIHRoZSBlYXJseSBsb2FkaW5nIG1ldGhvZCBkZXNjcmliZWQKK2hlcmUgaXMgdGhlIHRoaXJkIG1ldGhvZCB3aXRoIHdoaWNoIG1pY3JvY29kZSBjYW4gYmUgdXBsb2FkZWQgdG8gYSBzeXN0ZW0ncworQ1BVcy4KKworVGhlIGZvbGxvd2luZyBleGFtcGxlIHNjcmlwdCBzaG93cyBob3cgdG8gZ2VuZXJhdGUgYSBuZXcgY29tYmluZWQgaW5pdHJkIGZpbGUgaW4KKy9ib290L2luaXRyZC0zLjUuMC51Y29kZS5pbWcgd2l0aCBvcmlnaW5hbCBtaWNyb2NvZGUgbWljcm9jb2RlLmJpbiBhbmQKK29yaWdpbmFsIGluaXRyZCBpbWFnZSAvYm9vdC9pbml0cmQtMy41LjAuaW1nLgorCitta2RpciBpbml0cmQKK2NkIGluaXRyZAorbWtkaXIgLXAga2VybmVsL3g4Ni9taWNyb2NvZGUKK2NwIC4uL21pY3JvY29kZS5iaW4ga2VybmVsL3g4Ni9taWNyb2NvZGUvR2VudWluZUludGVsLmJpbiAob3IgQXV0aGVudGljQU1ELmJpbikKK2ZpbmQgLiB8IGNwaW8gLW8gLUggbmV3YyA+Li4vdWNvZGUuY3BpbworY2QgLi4KK2NhdCB1Y29kZS5jcGlvIC9ib290L2luaXRyZC0zLjUuMC5pbWcgPi9ib290L2luaXRyZC0zLjUuMC51Y29kZS5pbWcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24veDg2L2Vhcmx5cHJpbnRrLnR4dCBiL0RvY3VtZW50YXRpb24veDg2L2Vhcmx5cHJpbnRrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODhlM2VlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi94ODYvZWFybHlwcmludGsudHh0CkBAIC0wLDAgKzEsMTM2IEBACisKK01pbmktSE9XVE8gZm9yIHVzaW5nIHRoZSBlYXJseXByaW50az1kYmdwIGJvb3Qgb3B0aW9uIHdpdGggYQorVVNCMiBEZWJ1ZyBwb3J0IGtleSBhbmQgYSBkZWJ1ZyBjYWJsZSwgb24geDg2IHN5c3RlbXMuCisKK1lvdSBuZWVkIHR3byBjb21wdXRlcnMsIHRoZSAnVVNCIGRlYnVnIGtleScgc3BlY2lhbCBnYWRnZXQgYW5kCithbmQgdHdvIFVTQiBjYWJsZXMsIGNvbm5lY3RlZCBsaWtlIHRoaXM6CisKKyAgW2hvc3QvdGFyZ2V0XSA8LS0tLS0tLT4gW1VTQiBkZWJ1ZyBrZXldIDwtLS0tLS0tPiBbY2xpZW50L2NvbnNvbGVdCisKKzEuIFRoZXJlIGFyZSBhIG51bWJlciBvZiBzcGVjaWZpYyBoYXJkd2FyZSByZXF1aXJlbWVudHM6CisKKyBhLikgSG9zdC90YXJnZXQgc3lzdGVtIG5lZWRzIHRvIGhhdmUgVVNCIGRlYnVnIHBvcnQgY2FwYWJpbGl0eS4KKworIFlvdSBjYW4gY2hlY2sgdGhpcyBjYXBhYmlsaXR5IGJ5IGxvb2tpbmcgYXQgYSAnRGVidWcgcG9ydCcgYml0IGluCisgdGhlIGxzcGNpIC12dnYgb3V0cHV0OgorCisgIyBsc3BjaSAtdnZ2CisgLi4uCisgMDA6MWQuNyBVU0IgQ29udHJvbGxlcjogSW50ZWwgQ29ycG9yYXRpb24gODI4MDFIIChJQ0g4IEZhbWlseSkgVVNCMiBFSENJIENvbnRyb2xsZXIgIzEgKHJldiAwMykgKHByb2ctaWYgMjAgW0VIQ0ldKQorICAgICAgICAgU3Vic3lzdGVtOiBMZW5vdm8gVGhpbmtQYWQgVDYxCisgICAgICAgICBDb250cm9sOiBJL08tIE1lbSsgQnVzTWFzdGVyKyBTcGVjQ3ljbGUtIE1lbVdJTlYtIFZHQVNub29wLSBQYXJFcnItIFN0ZXBwaW5nLSBTRVJSKyBGYXN0QjJCLSBEaXNJTlR4LQorICAgICAgICAgU3RhdHVzOiBDYXArIDY2TUh6LSBVREYtIEZhc3RCMkIrIFBhckVyci0gREVWU0VMPW1lZGl1bSA+VEFib3J0LSA8VEFib3J0LSA8TUFib3J0LSA+U0VSUi0gPFBFUlItIElOVHgtCisgICAgICAgICBMYXRlbmN5OiAwCisgICAgICAgICBJbnRlcnJ1cHQ6IHBpbiBEIHJvdXRlZCB0byBJUlEgMTkKKyAgICAgICAgIFJlZ2lvbiAwOiBNZW1vcnkgYXQgZmUyMjcwMDAgKDMyLWJpdCwgbm9uLXByZWZldGNoYWJsZSkgW3NpemU9MUtdCisgICAgICAgICBDYXBhYmlsaXRpZXM6IFs1MF0gUG93ZXIgTWFuYWdlbWVudCB2ZXJzaW9uIDIKKyAgICAgICAgICAgICAgICAgRmxhZ3M6IFBNRUNsay0gRFNJLSBEMS0gRDItIEF1eEN1cnJlbnQ9Mzc1bUEgUE1FKEQwKyxEMS0sRDItLEQzaG90KyxEM2NvbGQrKQorICAgICAgICAgICAgICAgICBTdGF0dXM6IEQwIFBNRS1FbmFibGUtIERTZWw9MCBEU2NhbGU9MCBQTUUrCisgICAgICAgICBDYXBhYmlsaXRpZXM6IFs1OF0gRGVidWcgcG9ydDogQkFSPTEgb2Zmc2V0PTAwYTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eXiA8PT09PT09PT09PT09PT09PT09PT0gWyBIRVJFIF0KKwkgS2VybmVsIGRyaXZlciBpbiB1c2U6IGVoY2lfaGNkCisgICAgICAgICBLZXJuZWwgbW9kdWxlczogZWhjaS1oY2QKKyAuLi4KKworKCBJZiB5b3VyIHN5c3RlbSBkb2VzIG5vdCBsaXN0IGEgZGVidWcgcG9ydCBjYXBhYmlsaXR5IHRoZW4geW91IHByb2JhYmx5CisgIHdvbid0IGJlIGFibGUgdG8gdXNlIHRoZSBVU0IgZGVidWcga2V5LiApCisKKyBiLikgWW91IGFsc28gbmVlZCBhIE5ldGNoaXAgVVNCIGRlYnVnIGNhYmxlL2tleToKKworICAgICAgICBodHRwOi8vd3d3LnBseHRlY2guY29tL3Byb2R1Y3RzL05FVDIwMDAvTkVUMjBEQy9kZWZhdWx0LmFzcAorCisgICAgIFRoaXMgaXMgYSBzbWFsbCBibHVlIHBsYXN0aWMgY29ubmVjdG9yIHdpdGggdHdvIFVTQiBjb25uZWN0aW9ucywKKyAgICAgaXQgZHJhd3MgcG93ZXIgZnJvbSBpdHMgVVNCIGNvbm5lY3Rpb25zLgorCisgYy4pIFlvdSBuZWVkIGEgc2Vjb25kIGNsaWVudC9jb25zb2xlIHN5c3RlbSB3aXRoIGEgaGlnaCBzcGVlZCBVU0IgMi4wCisgICAgIHBvcnQuCisKKyBkLikgVGhlIE5ldGNoaXAgZGV2aWNlIG11c3QgYmUgcGx1Z2dlZCBkaXJlY3RseSBpbnRvIHRoZSBwaHlzaWNhbAorICAgICBkZWJ1ZyBwb3J0IG9uIHRoZSAiaG9zdC90YXJnZXQiIHN5c3RlbS4gIFlvdSBjYW5ub3QgdXNlIGEgVVNCIGh1YiBpbgorICAgICBiZXR3ZWVuIHRoZSBwaHlzaWNhbCBkZWJ1ZyBwb3J0IGFuZCB0aGUgImhvc3QvdGFyZ2V0IiBzeXN0ZW0uCisKKyAgICAgVGhlIEVIQ0kgZGVidWcgY29udHJvbGxlciBpcyBib3VuZCB0byBhIHNwZWNpZmljIHBoeXNpY2FsIFVTQgorICAgICBwb3J0IGFuZCB0aGUgTmV0Y2hpcCBkZXZpY2Ugd2lsbCBvbmx5IHdvcmsgYXMgYW4gZWFybHkgcHJpbnRrCisgICAgIGRldmljZSBpbiB0aGlzIHBvcnQuICBUaGUgRUhDSSBob3N0IGNvbnRyb2xsZXJzIGFyZSBlbGVjdHJpY2FsbHkKKyAgICAgd2lyZWQgc3VjaCB0aGF0IHRoZSBFSENJIGRlYnVnIGNvbnRyb2xsZXIgaXMgaG9va2VkIHVwIHRvIHRoZQorICAgICBmaXJzdCBwaHlzaWNhbCBhbmQgdGhlcmUgaXMgbm8gd2F5IHRvIGNoYW5nZSB0aGlzIHZpYSBzb2Z0d2FyZS4KKyAgICAgWW91IGNhbiBmaW5kIHRoZSBwaHlzaWNhbCBwb3J0IHRocm91Z2ggZXhwZXJpbWVudGF0aW9uIGJ5IHRyeWluZworICAgICBlYWNoIHBoeXNpY2FsIHBvcnQgb24gdGhlIHN5c3RlbSBhbmQgcmVib290aW5nLiAgT3IgeW91IGNhbiB0cnkKKyAgICAgYW5kIHVzZSBsc3VzYiBvciBsb29rIGF0IHRoZSBrZXJuZWwgaW5mbyBtZXNzYWdlcyBlbWl0dGVkIGJ5IHRoZQorICAgICB1c2Igc3RhY2sgd2hlbiB5b3UgcGx1ZyBhIHVzYiBkZXZpY2UgaW50byB2YXJpb3VzIHBvcnRzIG9uIHRoZQorICAgICAiaG9zdC90YXJnZXQiIHN5c3RlbS4KKworICAgICBTb21lIGhhcmR3YXJlIHZlbmRvcnMgZG8gbm90IGV4cG9zZSB0aGUgdXNiIGRlYnVnIHBvcnQgd2l0aCBhCisgICAgIHBoeXNpY2FsIGNvbm5lY3RvciBhbmQgaWYgeW91IGZpbmQgc3VjaCBhIGRldmljZSBzZW5kIGEgY29tcGxhaW50CisgICAgIHRvIHRoZSBoYXJkd2FyZSB2ZW5kb3IsIGJlY2F1c2UgdGhlcmUgaXMgbm8gcmVhc29uIG5vdCB0byB3aXJlCisgICAgIHRoaXMgcG9ydCBpbnRvIG9uZSBvZiB0aGUgcGh5c2ljYWxseSBhY2Nlc3NpYmxlIHBvcnRzLgorCisgZS4pIEl0IGlzIGFsc28gaW1wb3J0YW50IHRvIG5vdGUsIHRoYXQgbWFueSB2ZXJzaW9ucyBvZiB0aGUgTmV0Y2hpcAorICAgICBkZXZpY2UgcmVxdWlyZSB0aGUgImNsaWVudC9jb25zb2xlIiBzeXN0ZW0gdG8gYmUgcGx1Z2dlZCBpbnRvIHRoZQorICAgICByaWdodCBhbmQgc2lkZSBvZiB0aGUgZGV2aWNlICh3aXRoIHRoZSBwcm9kdWN0IGxvZ28gZmFjaW5nIHVwIGFuZAorICAgICByZWFkYWJsZSBsZWZ0IHRvIHJpZ2h0KS4gIFRoZSByZWFzb24gYmVpbmcgaXMgdGhhdCB0aGUgNSB2b2x0CisgICAgIHBvd2VyIHN1cHBseSBpcyB0YWtlbiBmcm9tIG9ubHkgb25lIHNpZGUgb2YgdGhlIGRldmljZSBhbmQgaXQKKyAgICAgbXVzdCBiZSB0aGUgc2lkZSB0aGF0IGRvZXMgbm90IGdldCByZWJvb3RlZC4KKworMi4gU29mdHdhcmUgcmVxdWlyZW1lbnRzOgorCisgYS4pIE9uIHRoZSBob3N0L3RhcmdldCBzeXN0ZW06CisKKyAgICBZb3UgbmVlZCB0byBlbmFibGUgdGhlIGZvbGxvd2luZyBrZXJuZWwgY29uZmlnIG9wdGlvbjoKKworICAgICAgQ09ORklHX0VBUkxZX1BSSU5US19EQkdQPXkKKworICAgIEFuZCB5b3UgbmVlZCB0byBhZGQgdGhlIGJvb3QgY29tbWFuZCBsaW5lOiAiZWFybHlwcmludGs9ZGJncCIuCisgICAgKElmIHlvdSBhcmUgdXNpbmcgR3J1YiwgYXBwZW5kIGl0IHRvIHRoZSAna2VybmVsJyBsaW5lIGluCisgICAgIC9ldGMvZ3J1Yi5jb25mKQorCisgICAgT24gc3lzdGVtcyB3aXRoIG1vcmUgdGhhbiBvbmUgRUhDSSBkZWJ1ZyBjb250cm9sbGVyIHlvdSBtdXN0CisgICAgc3BlY2lmeSB0aGUgY29ycmVjdCBFSENJIGRlYnVnIGNvbnRyb2xsZXIgbnVtYmVyLiAgVGhlIG9yZGVyaW5nCisgICAgY29tZXMgZnJvbSB0aGUgUENJIGJ1cyBlbnVtZXJhdGlvbiBvZiB0aGUgRUhDSSBjb250cm9sbGVycy4gIFRoZQorICAgIGRlZmF1bHQgd2l0aCBubyBudW1iZXIgYXJndW1lbnQgaXMgIjAiIHRoZSBmaXJzdCBFSENJIGRlYnVnCisgICAgY29udHJvbGxlci4gIFRvIHVzZSB0aGUgc2Vjb25kIEVIQ0kgZGVidWcgY29udHJvbGxlciwgeW91IHdvdWxkCisgICAgdXNlIHRoZSBjb21tYW5kIGxpbmU6ICJlYXJseXByaW50az1kYmdwMSIKKworICAgIE5PVEU6IG5vcm1hbGx5IGVhcmx5cHJpbnRrIGNvbnNvbGUgZ2V0cyB0dXJuZWQgb2ZmIG9uY2UgdGhlCisgICAgcmVndWxhciBjb25zb2xlIGlzIGFsaXZlIC0gdXNlICJlYXJseXByaW50az1kYmdwLGtlZXAiIHRvIGtlZXAKKyAgICB0aGlzIGNoYW5uZWwgb3BlbiBiZXlvbmQgZWFybHkgYm9vdHVwLiBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yCisgICAgZGVidWdnaW5nIGNyYXNoZXMgdW5kZXIgWG9yZywgZXRjLgorCisgYi4pIE9uIHRoZSBjbGllbnQvY29uc29sZSBzeXN0ZW06CisKKyAgICBZb3Ugc2hvdWxkIGVuYWJsZSB0aGUgZm9sbG93aW5nIGtlcm5lbCBjb25maWcgb3B0aW9uOgorCisgICAgICBDT05GSUdfVVNCX1NFUklBTF9ERUJVRz15CisKKyAgICBPbiB0aGUgbmV4dCBib290dXAgd2l0aCB0aGUgbW9kaWZpZWQga2VybmVsIHlvdSBzaG91bGQKKyAgICBnZXQgYSAvZGV2L3R0eVVTQnggZGV2aWNlKHMpLgorCisgICAgTm93IHRoaXMgY2hhbm5lbCBvZiBrZXJuZWwgbWVzc2FnZXMgaXMgcmVhZHkgdG8gYmUgdXNlZDogc3RhcnQKKyAgICB5b3VyIGZhdm9yaXRlIHRlcm1pbmFsIGVtdWxhdG9yIChtaW5pY29tLCBldGMuKSBhbmQgc2V0CisgICAgaXQgdXAgdG8gdXNlIC9kZXYvdHR5VVNCMCAtIG9yIHVzZSBhIHJhdyAnY2F0IC9kZXYvdHR5VVNCeCcgdG8KKyAgICBzZWUgdGhlIHJhdyBvdXRwdXQuCisKKyBjLikgT24gTnZpZGlhIFNvdXRoYnJpZGdlIGJhc2VkIHN5c3RlbXM6IHRoZSBrZXJuZWwgd2lsbCB0cnkgdG8gcHJvYmUKKyAgICAgYW5kIGZpbmQgb3V0IHdoaWNoIHBvcnQgaGFzIGRlYnVnIGRldmljZSBjb25uZWN0ZWQuCisKKzMuIFRlc3RpbmcgdGhhdCBpdCB3b3JrcyBmaW5lOgorCisgICBZb3UgY2FuIHRlc3QgdGhlIG91dHB1dCBieSB1c2luZyBlYXJseXByaW50az1kYmdwLGtlZXAgYW5kIHByb3Zva2luZworICAga2VybmVsIG1lc3NhZ2VzIG9uIHRoZSBob3N0L3RhcmdldCBzeXN0ZW0uIFlvdSBjYW4gcHJvdm9rZSBhIGhhcm1sZXNzCisgICBrZXJuZWwgbWVzc2FnZSBieSBmb3IgZXhhbXBsZSBkb2luZzoKKworICAgICBlY2hvIGggPiAvcHJvYy9zeXNycS10cmlnZ2VyCisKKyAgIE9uIHRoZSBob3N0L3RhcmdldCBzeXN0ZW0geW91IHNob3VsZCBzZWUgdGhpcyBoZWxwIGxpbmUgaW4gImRtZXNnIiBvdXRwdXQ6CisKKyAgICAgU3lzUnEgOiBIRUxQIDogbG9nbGV2ZWwoMC05KSByZUJvb3QgQ3Jhc2hkdW1wIHRlcm1pbmF0ZS1hbGwtdGFza3MoRSkgbWVtb3J5LWZ1bGwtb29tLWtpbGwoRikga2lsbC1hbGwtdGFza3MoSSkgc2FLIHNob3ctYmFja3RyYWNlLWFsbC1hY3RpdmUtY3B1cyhMKSBzaG93LW1lbW9yeS11c2FnZShNKSBuaWNlLWFsbC1SVC10YXNrcyhOKSBwb3dlck9mZiBzaG93LXJlZ2lzdGVycyhQKSBzaG93LWFsbC10aW1lcnMoUSkgdW5SYXcgU3luYyBzaG93LXRhc2stc3RhdGVzKFQpIFVubW91bnQgc2hvdy1ibG9ja2VkLXRhc2tzKFcpIGR1bXAtZnRyYWNlLWJ1ZmZlcihaKQorCisgICBPbiB0aGUgY2xpZW50L2NvbnNvbGUgc3lzdGVtIGRvOgorCisgICAgICAgY2F0IC9kZXYvdHR5VVNCMAorCisgICBBbmQgeW91IHNob3VsZCBzZWUgdGhlIGhlbHAgbGluZSBhYm92ZSBkaXNwbGF5ZWQgc2hvcnRseSBhZnRlciB5b3UndmUKKyAgIHByb3Zva2VkIGl0IG9uIHRoZSBob3N0IHN5c3RlbS4KKworSWYgaXQgZG9lcyBub3Qgd29yayB0aGVuIHBsZWFzZSBhc2sgYWJvdXQgaXQgb24gdGhlIGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK21haWxpbmcgbGlzdCBvciBjb250YWN0IHRoZSB4ODYgbWFpbnRhaW5lcnMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3g4Ni9lbnRyeV82NC50eHQgYi9Eb2N1bWVudGF0aW9uL3g4Ni9lbnRyeV82NC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFkZjhlYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24veDg2L2VudHJ5XzY0LnR4dApAQCAtMCwwICsxLDEwNCBAQAorVGhpcyBmaWxlIGRvY3VtZW50cyBzb21lIG9mIHRoZSBrZXJuZWwgZW50cmllcyBpbgorYXJjaC94ODYvZW50cnkvZW50cnlfNjQuUy4gIEEgbG90IG9mIHRoaXMgZXhwbGFuYXRpb24gaXMgYWRhcHRlZCBmcm9tCithbiBlbWFpbCBmcm9tIEluZ28gTW9sbmFyOgorCitodHRwOi8vbGttbC5rZXJuZWwub3JnL3IvPDIwMTEwNTI5MTkxMDU1LkdDOTgzNSU0MGVsdGUuaHU+CisKK1RoZSB4ODYgYXJjaGl0ZWN0dXJlIGhhcyBxdWl0ZSBhIGZldyBkaWZmZXJlbnQgd2F5cyB0byBqdW1wIGludG8KK2tlcm5lbCBjb2RlLiAgTW9zdCBvZiB0aGVzZSBlbnRyeSBwb2ludHMgYXJlIHJlZ2lzdGVyZWQgaW4KK2FyY2gveDg2L2tlcm5lbC90cmFwcy5jIGFuZCBpbXBsZW1lbnRlZCBpbiBhcmNoL3g4Ni9lbnRyeS9lbnRyeV82NC5TCitmb3IgNjQtYml0LCBhcmNoL3g4Ni9lbnRyeS9lbnRyeV8zMi5TIGZvciAzMi1iaXQgYW5kIGZpbmFsbHkKK2FyY2gveDg2L2VudHJ5L2VudHJ5XzY0X2NvbXBhdC5TIHdoaWNoIGltcGxlbWVudHMgdGhlIDMyLWJpdCBjb21wYXRpYmlsaXR5CitzeXNjYWxsIGVudHJ5IHBvaW50cyBhbmQgdGh1cyBwcm92aWRlcyBmb3IgMzItYml0IHByb2Nlc3NlcyB0aGUKK2FiaWxpdHkgdG8gZXhlY3V0ZSBzeXNjYWxscyB3aGVuIHJ1bm5pbmcgb24gNjQtYml0IGtlcm5lbHMuCisKK1RoZSBJRFQgdmVjdG9yIGFzc2lnbm1lbnRzIGFyZSBsaXN0ZWQgaW4gYXJjaC94ODYvaW5jbHVkZS9hc20vaXJxX3ZlY3RvcnMuaC4KKworU29tZSBvZiB0aGVzZSBlbnRyaWVzIGFyZToKKworIC0gc3lzdGVtX2NhbGw6IHN5c2NhbGwgaW5zdHJ1Y3Rpb24gZnJvbSA2NC1iaXQgY29kZS4KKworIC0gZW50cnlfSU5UODBfY29tcGF0OiBpbnQgMHg4MCBmcm9tIDMyLWJpdCBvciA2NC1iaXQgY29kZTsgY29tcGF0IHN5c2NhbGwKKyAgIGVpdGhlciB3YXkuCisKKyAtIGVudHJ5X0lOVDgwX2NvbXBhdCwgaWEzMl9zeXNlbnRlcjogc3lzY2FsbCBhbmQgc3lzZW50ZXIgZnJvbSAzMi1iaXQKKyAgIGNvZGUKKworIC0gaW50ZXJydXB0OiBBbiBhcnJheSBvZiBlbnRyaWVzLiAgRXZlcnkgSURUIHZlY3RvciB0aGF0IGRvZXNuJ3QKKyAgIGV4cGxpY2l0bHkgcG9pbnQgc29tZXdoZXJlIGVsc2UgZ2V0cyBzZXQgdG8gdGhlIGNvcnJlc3BvbmRpbmcKKyAgIHZhbHVlIGluIGludGVycnVwdHMuICBUaGVzZSBwb2ludCB0byBhIHdob2xlIGFycmF5IG9mCisgICBtYWdpY2FsbHktZ2VuZXJhdGVkIGZ1bmN0aW9ucyB0aGF0IG1ha2UgdGhlaXIgd2F5IHRvIGRvX0lSUSB3aXRoCisgICB0aGUgaW50ZXJydXB0IG51bWJlciBhcyBhIHBhcmFtZXRlci4KKworIC0gQVBJQyBpbnRlcnJ1cHRzOiBWYXJpb3VzIHNwZWNpYWwtcHVycG9zZSBpbnRlcnJ1cHRzIGZvciB0aGluZ3MKKyAgIGxpa2UgVExCIHNob290ZG93bi4KKworIC0gQXJjaGl0ZWN0dXJhbGx5LWRlZmluZWQgZXhjZXB0aW9ucyBsaWtlIGRpdmlkZV9lcnJvci4KKworVGhlcmUgYXJlIGEgZmV3IGNvbXBsZXhpdGllcyBoZXJlLiAgVGhlIGRpZmZlcmVudCB4ODYtNjQgZW50cmllcworaGF2ZSBkaWZmZXJlbnQgY2FsbGluZyBjb252ZW50aW9ucy4gIFRoZSBzeXNjYWxsIGFuZCBzeXNlbnRlcgoraW5zdHJ1Y3Rpb25zIGhhdmUgdGhlaXIgb3duIHBlY3VsaWFyIGNhbGxpbmcgY29udmVudGlvbnMuICBTb21lIG9mCit0aGUgSURUIGVudHJpZXMgcHVzaCBhbiBlcnJvciBjb2RlIG9udG8gdGhlIHN0YWNrOyBvdGhlcnMgZG9uJ3QuCitJRFQgZW50cmllcyB1c2luZyB0aGUgSVNUIGFsdGVybmF0aXZlIHN0YWNrIG1lY2hhbmlzbSBuZWVkIHRoZWlyIG93bgorbWFnaWMgdG8gZ2V0IHRoZSBzdGFjayBmcmFtZXMgcmlnaHQuICAoWW91IGNhbiBmaW5kIHNvbWUKK2RvY3VtZW50YXRpb24gaW4gdGhlIEFNRCBBUE0sIFZvbHVtZSAyLCBDaGFwdGVyIDggYW5kIHRoZSBJbnRlbCBTRE0sCitWb2x1bWUgMywgQ2hhcHRlciA2LikKKworRGVhbGluZyB3aXRoIHRoZSBzd2FwZ3MgaW5zdHJ1Y3Rpb24gaXMgZXNwZWNpYWxseSB0cmlja3kuICBTd2FwZ3MKK3RvZ2dsZXMgd2hldGhlciBncyBpcyB0aGUga2VybmVsIGdzIG9yIHRoZSB1c2VyIGdzLiAgVGhlIHN3YXBncworaW5zdHJ1Y3Rpb24gaXMgcmF0aGVyIGZyYWdpbGU6IGl0IG11c3QgbmVzdCBwZXJmZWN0bHkgYW5kIG9ubHkgaW4KK3NpbmdsZSBkZXB0aCwgaXQgc2hvdWxkIG9ubHkgYmUgdXNlZCBpZiBlbnRlcmluZyBmcm9tIHVzZXIgbW9kZSB0bwora2VybmVsIG1vZGUgYW5kIHRoZW4gd2hlbiByZXR1cm5pbmcgdG8gdXNlci1zcGFjZSwgYW5kIHByZWNpc2VseQorc28uIElmIHdlIG1lc3MgdGhhdCB1cCBldmVuIHNsaWdodGx5LCB3ZSBjcmFzaC4KKworU28gd2hlbiB3ZSBoYXZlIGEgc2Vjb25kYXJ5IGVudHJ5LCBhbHJlYWR5IGluIGtlcm5lbCBtb2RlLCB3ZSAqbXVzdAorbm90KiB1c2UgU1dBUEdTIGJsaW5kbHkgLSBub3IgbXVzdCB3ZSBmb3JnZXQgZG9pbmcgYSBTV0FQR1Mgd2hlbiBpdCdzCitub3Qgc3dpdGNoZWQvc3dhcHBlZCB5ZXQuCisKK05vdywgdGhlcmUncyBhIHNlY29uZGFyeSBjb21wbGljYXRpb246IHRoZXJlJ3MgYSBjaGVhcCB3YXkgdG8gdGVzdAord2hpY2ggbW9kZSB0aGUgQ1BVIGlzIGluIGFuZCBhbiBleHBlbnNpdmUgd2F5LgorCitUaGUgY2hlYXAgd2F5IGlzIHRvIHBpY2sgdGhpcyBpbmZvIG9mZiB0aGUgZW50cnkgZnJhbWUgb24gdGhlIGtlcm5lbAorc3RhY2ssIGZyb20gdGhlIENTIG9mIHRoZSBwdHJlZ3MgYXJlYSBvZiB0aGUga2VybmVsIHN0YWNrOgorCisJeG9ybCAlZWJ4LCVlYngKKwl0ZXN0bCAkMyxDUys4KCVyc3ApCisJamUgZXJyb3Jfa2VybmVsc3BhY2UKKwlTV0FQR1MKKworVGhlIGV4cGVuc2l2ZSAocGFyYW5vaWQpIHdheSBpcyB0byByZWFkIGJhY2sgdGhlIE1TUl9HU19CQVNFIHZhbHVlCisod2hpY2ggaXMgd2hhdCBTV0FQR1MgbW9kaWZpZXMpOgorCisJbW92bCAkMSwlZWJ4CisJbW92bCAkTVNSX0dTX0JBU0UsJWVjeAorCXJkbXNyCisJdGVzdGwgJWVkeCwlZWR4CisJanMgMWYgICAvKiBuZWdhdGl2ZSAtPiBpbiBrZXJuZWwgKi8KKwlTV0FQR1MKKwl4b3JsICVlYngsJWVieAorMToJcmV0CisKK0lmIHdlIGFyZSBhdCBhbiBpbnRlcnJ1cHQgb3IgdXNlci10cmFwL2dhdGUtYWxpa2UgYm91bmRhcnkgdGhlbiB3ZSBjYW4KK3VzZSB0aGUgZmFzdGVyIGNoZWNrOiB0aGUgc3RhY2sgd2lsbCBiZSBhIHJlbGlhYmxlIGluZGljYXRvciBvZgord2hldGhlciBTV0FQR1Mgd2FzIGFscmVhZHkgZG9uZTogaWYgd2Ugc2VlIHRoYXQgd2UgYXJlIGEgc2Vjb25kYXJ5CitlbnRyeSBpbnRlcnJ1cHRpbmcga2VybmVsIG1vZGUgZXhlY3V0aW9uLCB0aGVuIHdlIGtub3cgdGhhdCB0aGUgR1MKK2Jhc2UgaGFzIGFscmVhZHkgYmVlbiBzd2l0Y2hlZC4gSWYgaXQgc2F5cyB0aGF0IHdlIGludGVycnVwdGVkCit1c2VyLXNwYWNlIGV4ZWN1dGlvbiB0aGVuIHdlIG11c3QgZG8gdGhlIFNXQVBHUy4KKworQnV0IGlmIHdlIGFyZSBpbiBhbiBOTUkvTUNFL0RFQlVHL3doYXRldmVyIHN1cGVyLWF0b21pYyBlbnRyeSBjb250ZXh0LAord2hpY2ggbWlnaHQgaGF2ZSB0cmlnZ2VyZWQgcmlnaHQgYWZ0ZXIgYSBub3JtYWwgZW50cnkgd3JvdGUgQ1MgdG8gdGhlCitzdGFjayBidXQgYmVmb3JlIHdlIGV4ZWN1dGVkIFNXQVBHUywgdGhlbiB0aGUgb25seSBzYWZlIHdheSB0byBjaGVjaworZm9yIEdTIGlzIHRoZSBzbG93ZXIgbWV0aG9kOiB0aGUgUkRNU1IuCisKK1RoZXJlZm9yZSwgc3VwZXItYXRvbWljIGVudHJpZXMgKGV4Y2VwdCBOTUksIHdoaWNoIGlzIGhhbmRsZWQgc2VwYXJhdGVseSkKK211c3QgdXNlIGlkdGVudHJ5IHdpdGggcGFyYW5vaWQ9MSB0byBoYW5kbGUgZ3NiYXNlIGNvcnJlY3RseS4gIFRoaXMKK3RyaWdnZXJzIHRocmVlIG1haW4gYmVoYXZpb3IgY2hhbmdlczoKKworIC0gSW50ZXJydXB0IGVudHJ5IHdpbGwgdXNlIHRoZSBzbG93ZXIgZ3NiYXNlIGNoZWNrLgorIC0gSW50ZXJydXB0IGVudHJ5IGZyb20gdXNlciBtb2RlIHdpbGwgc3dpdGNoIG9mZiB0aGUgSVNUIHN0YWNrLgorIC0gSW50ZXJydXB0IGV4aXQgdG8ga2VybmVsIG1vZGUgd2lsbCBub3QgYXR0ZW1wdCB0byByZXNjaGVkdWxlLgorCitXZSB0cnkgdG8gb25seSB1c2UgSVNUIGVudHJpZXMgYW5kIHRoZSBwYXJhbm9pZCBlbnRyeSBjb2RlIGZvciB2ZWN0b3JzCit0aGF0IGFic29sdXRlbHkgbmVlZCB0aGUgbW9yZSBleHBlbnNpdmUgY2hlY2sgZm9yIHRoZSBHUyBiYXNlIC0gYW5kIHdlCitnZW5lcmF0ZSBhbGwgJ25vcm1hbCcgZW50cnkgcG9pbnRzIHdpdGggdGhlIHJlZ3VsYXIgKGZhc3RlcikgcGFyYW5vaWQ9MAordmFyaWFudC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24veDg2L2V4Y2VwdGlvbi10YWJsZXMudHh0IGIvRG9jdW1lbnRhdGlvbi94ODYvZXhjZXB0aW9uLXRhYmxlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI5MDFhYQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24veDg2L2V4Y2VwdGlvbi10YWJsZXMudHh0CkBAIC0wLDAgKzEsMjkyIEBACisgICAgIEtlcm5lbCBsZXZlbCBleGNlcHRpb24gaGFuZGxpbmcgaW4gTGludXgKKyAgQ29tbWVudGFyeSBieSBKb2VyZyBQb21tbml0eiA8am9lcmdAcmFsZWlnaC5pYm0uY29tPgorCitXaGVuIGEgcHJvY2VzcyBydW5zIGluIGtlcm5lbCBtb2RlLCBpdCBvZnRlbiBoYXMgdG8gYWNjZXNzIHVzZXIKK21vZGUgbWVtb3J5IHdob3NlIGFkZHJlc3MgaGFzIGJlZW4gcGFzc2VkIGJ5IGFuIHVudHJ1c3RlZCBwcm9ncmFtLgorVG8gcHJvdGVjdCBpdHNlbGYgdGhlIGtlcm5lbCBoYXMgdG8gdmVyaWZ5IHRoaXMgYWRkcmVzcy4KKworSW4gb2xkZXIgdmVyc2lvbnMgb2YgTGludXggdGhpcyB3YXMgZG9uZSB3aXRoIHRoZQoraW50IHZlcmlmeV9hcmVhKGludCB0eXBlLCBjb25zdCB2b2lkICogYWRkciwgdW5zaWduZWQgbG9uZyBzaXplKQorZnVuY3Rpb24gKHdoaWNoIGhhcyBzaW5jZSBiZWVuIHJlcGxhY2VkIGJ5IGFjY2Vzc19vaygpKS4KKworVGhpcyBmdW5jdGlvbiB2ZXJpZmllZCB0aGF0IHRoZSBtZW1vcnkgYXJlYSBzdGFydGluZyBhdCBhZGRyZXNzCisnYWRkcicgYW5kIG9mIHNpemUgJ3NpemUnIHdhcyBhY2Nlc3NpYmxlIGZvciB0aGUgb3BlcmF0aW9uIHNwZWNpZmllZAoraW4gdHlwZSAocmVhZCBvciB3cml0ZSkuIFRvIGRvIHRoaXMsIHZlcmlmeV9yZWFkIGhhZCB0byBsb29rIHVwIHRoZQordmlydHVhbCBtZW1vcnkgYXJlYSAodm1hKSB0aGF0IGNvbnRhaW5lZCB0aGUgYWRkcmVzcyBhZGRyLiBJbiB0aGUKK25vcm1hbCBjYXNlIChjb3JyZWN0bHkgd29ya2luZyBwcm9ncmFtKSwgdGhpcyB0ZXN0IHdhcyBzdWNjZXNzZnVsLgorSXQgb25seSBmYWlsZWQgZm9yIGEgZmV3IGJ1Z2d5IHByb2dyYW1zLiBJbiBzb21lIGtlcm5lbCBwcm9maWxpbmcKK3Rlc3RzLCB0aGlzIG5vcm1hbGx5IHVubmVlZGVkIHZlcmlmaWNhdGlvbiB1c2VkIHVwIGEgY29uc2lkZXJhYmxlCithbW91bnQgb2YgdGltZS4KKworVG8gb3ZlcmNvbWUgdGhpcyBzaXR1YXRpb24sIExpbnVzIGRlY2lkZWQgdG8gbGV0IHRoZSB2aXJ0dWFsIG1lbW9yeQoraGFyZHdhcmUgcHJlc2VudCBpbiBldmVyeSBMaW51eC1jYXBhYmxlIENQVSBoYW5kbGUgdGhpcyB0ZXN0LgorCitIb3cgZG9lcyB0aGlzIHdvcms/CisKK1doZW5ldmVyIHRoZSBrZXJuZWwgdHJpZXMgdG8gYWNjZXNzIGFuIGFkZHJlc3MgdGhhdCBpcyBjdXJyZW50bHkgbm90CithY2Nlc3NpYmxlLCB0aGUgQ1BVIGdlbmVyYXRlcyBhIHBhZ2UgZmF1bHQgZXhjZXB0aW9uIGFuZCBjYWxscyB0aGUKK3BhZ2UgZmF1bHQgaGFuZGxlcgorCit2b2lkIGRvX3BhZ2VfZmF1bHQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIHVuc2lnbmVkIGxvbmcgZXJyb3JfY29kZSkKKworaW4gYXJjaC94ODYvbW0vZmF1bHQuYy4gVGhlIHBhcmFtZXRlcnMgb24gdGhlIHN0YWNrIGFyZSBzZXQgdXAgYnkKK3RoZSBsb3cgbGV2ZWwgYXNzZW1ibHkgZ2x1ZSBpbiBhcmNoL3g4Ni9rZXJuZWwvZW50cnlfMzIuUy4gVGhlIHBhcmFtZXRlcgorcmVncyBpcyBhIHBvaW50ZXIgdG8gdGhlIHNhdmVkIHJlZ2lzdGVycyBvbiB0aGUgc3RhY2ssIGVycm9yX2NvZGUKK2NvbnRhaW5zIGEgcmVhc29uIGNvZGUgZm9yIHRoZSBleGNlcHRpb24uCisKK2RvX3BhZ2VfZmF1bHQgZmlyc3Qgb2J0YWlucyB0aGUgdW5hY2Nlc3NpYmxlIGFkZHJlc3MgZnJvbSB0aGUgQ1BVCitjb250cm9sIHJlZ2lzdGVyIENSMi4gSWYgdGhlIGFkZHJlc3MgaXMgd2l0aGluIHRoZSB2aXJ0dWFsIGFkZHJlc3MKK3NwYWNlIG9mIHRoZSBwcm9jZXNzLCB0aGUgZmF1bHQgcHJvYmFibHkgb2NjdXJyZWQsIGJlY2F1c2UgdGhlIHBhZ2UKK3dhcyBub3Qgc3dhcHBlZCBpbiwgd3JpdGUgcHJvdGVjdGVkIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBIb3dldmVyLAord2UgYXJlIGludGVyZXN0ZWQgaW4gdGhlIG90aGVyIGNhc2U6IHRoZSBhZGRyZXNzIGlzIG5vdCB2YWxpZCwgdGhlcmUKK2lzIG5vIHZtYSB0aGF0IGNvbnRhaW5zIHRoaXMgYWRkcmVzcy4gSW4gdGhpcyBjYXNlLCB0aGUga2VybmVsIGp1bXBzCit0byB0aGUgYmFkX2FyZWEgbGFiZWwuCisKK1RoZXJlIGl0IHVzZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIGluc3RydWN0aW9uIHRoYXQgY2F1c2VkIHRoZSBleGNlcHRpb24KKyhpLmUuIHJlZ3MtPmVpcCkgdG8gZmluZCBhbiBhZGRyZXNzIHdoZXJlIHRoZSBleGVjdXRpb24gY2FuIGNvbnRpbnVlCisoZml4dXApLiBJZiB0aGlzIHNlYXJjaCBpcyBzdWNjZXNzZnVsLCB0aGUgZmF1bHQgaGFuZGxlciBtb2RpZmllcyB0aGUKK3JldHVybiBhZGRyZXNzIChhZ2FpbiByZWdzLT5laXApIGFuZCByZXR1cm5zLiBUaGUgZXhlY3V0aW9uIHdpbGwKK2NvbnRpbnVlIGF0IHRoZSBhZGRyZXNzIGluIGZpeHVwLgorCitXaGVyZSBkb2VzIGZpeHVwIHBvaW50IHRvPworCitTaW5jZSB3ZSBqdW1wIHRvIHRoZSBjb250ZW50cyBvZiBmaXh1cCwgZml4dXAgb2J2aW91c2x5IHBvaW50cwordG8gZXhlY3V0YWJsZSBjb2RlLiBUaGlzIGNvZGUgaXMgaGlkZGVuIGluc2lkZSB0aGUgdXNlciBhY2Nlc3MgbWFjcm9zLgorSSBoYXZlIHBpY2tlZCB0aGUgZ2V0X3VzZXIgbWFjcm8gZGVmaW5lZCBpbiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzLmgKK2FzIGFuIGV4YW1wbGUuIFRoZSBkZWZpbml0aW9uIGlzIHNvbWV3aGF0IGhhcmQgdG8gZm9sbG93LCBzbyBsZXQncyBwZWVrIGF0Cit0aGUgY29kZSBnZW5lcmF0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciBhbmQgdGhlIGNvbXBpbGVyLiBJIHNlbGVjdGVkCit0aGUgZ2V0X3VzZXIgY2FsbCBpbiBkcml2ZXJzL2NoYXIvc3lzcnEuYyBmb3IgYSBkZXRhaWxlZCBleGFtaW5hdGlvbi4KKworVGhlIG9yaWdpbmFsIGNvZGUgaW4gc3lzcnEuYyBsaW5lIDU4NzoKKyAgICAgICAgZ2V0X3VzZXIoYywgYnVmKTsKKworVGhlIHByZXByb2Nlc3NvciBvdXRwdXQgKGVkaXRlZCB0byBiZWNvbWUgc29tZXdoYXQgcmVhZGFibGUpOgorCisoCisgIHsKKyAgICBsb25nIF9fZ3VfZXJyID0gLSAxNCAsIF9fZ3VfdmFsID0gMDsKKyAgICBjb25zdCBfX3R5cGVvZl9fKCooICggIGJ1ZiApICkpICpfX2d1X2FkZHIgPSAoKGJ1ZikpOworICAgIGlmICgoKCgoMCArIGN1cnJlbnRfc2V0WzBdKS0+dHNzLnNlZ21lbnQpID09IDB4MTggKSAgfHwKKyAgICAgICAoKChzaXplb2YoKihidWYpKSkgPD0gMHhDMDAwMDAwMFVMKSAmJgorICAgICAgICgodW5zaWduZWQgbG9uZykoX19ndV9hZGRyICkgPD0gMHhDMDAwMDAwMFVMIC0gKHNpemVvZigqKGJ1ZikpKSkpKSkKKyAgICAgIGRvIHsKKyAgICAgICAgX19ndV9lcnIgID0gMDsKKyAgICAgICAgc3dpdGNoICgoc2l6ZW9mKCooYnVmKSkpKSB7CisgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCisgICAgICAgICAgICAgICIxOiAgICAgIG1vdiIgImIiICIgJTIsJSIgImIiICIxXG4iCisgICAgICAgICAgICAgICIyOlxuIgorICAgICAgICAgICAgICAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIgorICAgICAgICAgICAgICAiMzogICAgICBtb3ZsICUzLCUwXG4iCisgICAgICAgICAgICAgICIgICAgICAgIHhvciIgImIiICIgJSIgImIiICIxLCUiICJiIiAiMVxuIgorICAgICAgICAgICAgICAiICAgICAgICBqbXAgMmJcbiIKKyAgICAgICAgICAgICAgIi5zZWN0aW9uIF9fZXhfdGFibGUsXCJhXCJcbiIKKyAgICAgICAgICAgICAgIiAgICAgICAgLmFsaWduIDRcbiIKKyAgICAgICAgICAgICAgIiAgICAgICAgLmxvbmcgMWIsM2JcbiIKKyAgICAgICAgICAgICAgIi50ZXh0IiAgICAgICAgOiAiPXIiKF9fZ3VfZXJyKSwgIj1xIiAoX19ndV92YWwpOiAibSIoKCooc3RydWN0IF9fbGFyZ2Vfc3RydWN0ICopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAgIF9fZ3VfYWRkciAgICkpICksICJpIigtIDE0ICksICIwIiggIF9fZ3VfZXJyICApKSA7CisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKAorICAgICAgICAgICAgICAiMTogICAgICBtb3YiICJ3IiAiICUyLCUiICJ3IiAiMVxuIgorICAgICAgICAgICAgICAiMjpcbiIKKyAgICAgICAgICAgICAgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIKKyAgICAgICAgICAgICAgIjM6ICAgICAgbW92bCAlMywlMFxuIgorICAgICAgICAgICAgICAiICAgICAgICB4b3IiICJ3IiAiICUiICJ3IiAiMSwlIiAidyIgIjFcbiIKKyAgICAgICAgICAgICAgIiAgICAgICAgam1wIDJiXG4iCisgICAgICAgICAgICAgICIuc2VjdGlvbiBfX2V4X3RhYmxlLFwiYVwiXG4iCisgICAgICAgICAgICAgICIgICAgICAgIC5hbGlnbiA0XG4iCisgICAgICAgICAgICAgICIgICAgICAgIC5sb25nIDFiLDNiXG4iCisgICAgICAgICAgICAgICIudGV4dCIgICAgICAgIDogIj1yIihfX2d1X2VyciksICI9ciIgKF9fZ3VfdmFsKSA6ICJtIigoKihzdHJ1Y3QgX19sYXJnZV9zdHJ1Y3QgKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICAgX19ndV9hZGRyICAgKSkgKSwgImkiKC0gMTQgKSwgIjAiKCAgX19ndV9lcnIgICkpOworICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKKyAgICAgICAgICAgICAgIjE6ICAgICAgbW92IiAibCIgIiAlMiwlIiAiIiAiMVxuIgorICAgICAgICAgICAgICAiMjpcbiIKKyAgICAgICAgICAgICAgIi5zZWN0aW9uIC5maXh1cCxcImF4XCJcbiIKKyAgICAgICAgICAgICAgIjM6ICAgICAgbW92bCAlMywlMFxuIgorICAgICAgICAgICAgICAiICAgICAgICB4b3IiICJsIiAiICUiICIiICIxLCUiICIiICIxXG4iCisgICAgICAgICAgICAgICIgICAgICAgIGptcCAyYlxuIgorICAgICAgICAgICAgICAiLnNlY3Rpb24gX19leF90YWJsZSxcImFcIlxuIgorICAgICAgICAgICAgICAiICAgICAgICAuYWxpZ24gNFxuIiAgICAgICAgIiAgICAgICAgLmxvbmcgMWIsM2JcbiIKKyAgICAgICAgICAgICAgIi50ZXh0IiAgICAgICAgOiAiPXIiKF9fZ3VfZXJyKSwgIj1yIiAoX19ndV92YWwpIDogIm0iKCgqKHN0cnVjdCBfX2xhcmdlX3N0cnVjdCAqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICggICBfX2d1X2FkZHIgICApKSApLCAiaSIoLSAxNCApLCAiMCIoX19ndV9lcnIpKTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIChfX2d1X3ZhbCkgPSBfX2dldF91c2VyX2JhZCgpOworICAgICAgICB9CisgICAgICB9IHdoaWxlICgwKSA7CisgICAgKChjKSkgPSAoX190eXBlb2ZfXygqKChidWYpKSkpX19ndV92YWw7CisgICAgX19ndV9lcnI7CisgIH0KKyk7CisKK1dPVyEgQmxhY2sgR0NDL2Fzc2VtYmx5IG1hZ2ljLiBUaGlzIGlzIGltcG9zc2libGUgdG8gZm9sbG93LCBzbyBsZXQncworc2VlIHdoYXQgY29kZSBnY2MgZ2VuZXJhdGVzOgorCisgPiAgICAgICAgIHhvcmwgJWVkeCwlZWR4CisgPiAgICAgICAgIG1vdmwgY3VycmVudF9zZXQsJWVheAorID4gICAgICAgICBjbXBsICQyNCw3ODgoJWVheCkKKyA+ICAgICAgICAgamUgLkwxNDI0CisgPiAgICAgICAgIGNtcGwgJC0xMDczNzQxODI1LDY0KCVlc3ApCisgPiAgICAgICAgIGphIC5MMTQyMworID4gLkwxNDI0OgorID4gICAgICAgICBtb3ZsICVlZHgsJWVheAorID4gICAgICAgICBtb3ZsIDY0KCVlc3ApLCVlYngKKyA+ICNBUFAKKyA+IDE6ICAgICAgbW92YiAoJWVieCksJWRsICAgICAgICAgICAgICAgIC8qIHRoaXMgaXMgdGhlIGFjdHVhbCB1c2VyIGFjY2VzcyAqLworID4gMjoKKyA+IC5zZWN0aW9uIC5maXh1cCwiYXgiCisgPiAzOiAgICAgIG1vdmwgJC0xNCwlZWF4CisgPiAgICAgICAgIHhvcmIgJWRsLCVkbAorID4gICAgICAgICBqbXAgMmIKKyA+IC5zZWN0aW9uIF9fZXhfdGFibGUsImEiCisgPiAgICAgICAgIC5hbGlnbiA0CisgPiAgICAgICAgIC5sb25nIDFiLDNiCisgPiAudGV4dAorID4gI05PX0FQUAorID4gLkwxNDIzOgorID4gICAgICAgICBtb3Z6YmwgJWRsLCVlc2kKKworVGhlIG9wdGltaXplciBkb2VzIGEgZ29vZCBqb2IgYW5kIGdpdmVzIHVzIHNvbWV0aGluZyB3ZSBjYW4gYWN0dWFsbHkKK3VuZGVyc3RhbmQuIENhbiB3ZT8gVGhlIGFjdHVhbCB1c2VyIGFjY2VzcyBpcyBxdWl0ZSBvYnZpb3VzLiBUaGFua3MKK3RvIHRoZSB1bmlmaWVkIGFkZHJlc3Mgc3BhY2Ugd2UgY2FuIGp1c3QgYWNjZXNzIHRoZSBhZGRyZXNzIGluIHVzZXIKK21lbW9yeS4gQnV0IHdoYXQgZG9lcyB0aGUgLnNlY3Rpb24gc3R1ZmYgZG8/Pz8/PworCitUbyB1bmRlcnN0YW5kIHRoaXMgd2UgaGF2ZSB0byBsb29rIGF0IHRoZSBmaW5hbCBrZXJuZWw6CisKKyA+IG9iamR1bXAgLS1zZWN0aW9uLWhlYWRlcnMgdm1saW51eAorID4KKyA+IHZtbGludXg6ICAgICBmaWxlIGZvcm1hdCBlbGYzMi1pMzg2CisgPgorID4gU2VjdGlvbnM6CisgPiBJZHggTmFtZSAgICAgICAgICBTaXplICAgICAgVk1BICAgICAgIExNQSAgICAgICBGaWxlIG9mZiAgQWxnbgorID4gICAwIC50ZXh0ICAgICAgICAgMDAwOThmNDAgIGMwMTAwMDAwICBjMDEwMDAwMCAgMDAwMDEwMDAgIDIqKjQKKyA+ICAgICAgICAgICAgICAgICAgIENPTlRFTlRTLCBBTExPQywgTE9BRCwgUkVBRE9OTFksIENPREUKKyA+ICAgMSAuZml4dXAgICAgICAgIDAwMDAxNmJjICBjMDE5OGY0MCAgYzAxOThmNDAgIDAwMDk5ZjQwICAyKiowCisgPiAgICAgICAgICAgICAgICAgICBDT05URU5UUywgQUxMT0MsIExPQUQsIFJFQURPTkxZLCBDT0RFCisgPiAgIDIgLnJvZGF0YSAgICAgICAwMDAwZjEyNyAgYzAxOWE1ZmMgIGMwMTlhNWZjICAwMDA5YjVmYyAgMioqMgorID4gICAgICAgICAgICAgICAgICAgQ09OVEVOVFMsIEFMTE9DLCBMT0FELCBSRUFET05MWSwgREFUQQorID4gICAzIF9fZXhfdGFibGUgICAgMDAwMDE1YzAgIGMwMWE5NzI0ICBjMDFhOTcyNCAgMDAwYWE3MjQgIDIqKjIKKyA+ICAgICAgICAgICAgICAgICAgIENPTlRFTlRTLCBBTExPQywgTE9BRCwgUkVBRE9OTFksIERBVEEKKyA+ICAgNCAuZGF0YSAgICAgICAgIDAwMDBlYTU4ICBjMDFhYmNmMCAgYzAxYWJjZjAgIDAwMGFiY2YwICAyKio0CisgPiAgICAgICAgICAgICAgICAgICBDT05URU5UUywgQUxMT0MsIExPQUQsIERBVEEKKyA+ICAgNSAuYnNzICAgICAgICAgIDAwMDE4ZTIxICBjMDFiYTc0OCAgYzAxYmE3NDggIDAwMGJhNzQ4ICAyKioyCisgPiAgICAgICAgICAgICAgICAgICBBTExPQworID4gICA2IC5jb21tZW50ICAgICAgMDAwMDBlYzQgIDAwMDAwMDAwICAwMDAwMDAwMCAgMDAwYmE3NDggIDIqKjAKKyA+ICAgICAgICAgICAgICAgICAgIENPTlRFTlRTLCBSRUFET05MWQorID4gICA3IC5ub3RlICAgICAgICAgMDAwMDEwNjggIDAwMDAwZWM0ICAwMDAwMGVjNCAgMDAwYmI2MGMgIDIqKjAKKyA+ICAgICAgICAgICAgICAgICAgIENPTlRFTlRTLCBSRUFET05MWQorCitUaGVyZSBhcmUgb2J2aW91c2x5IDIgbm9uIHN0YW5kYXJkIEVMRiBzZWN0aW9ucyBpbiB0aGUgZ2VuZXJhdGVkIG9iamVjdAorZmlsZS4gQnV0IGZpcnN0IHdlIHdhbnQgdG8gZmluZCBvdXQgd2hhdCBoYXBwZW5lZCB0byBvdXIgY29kZSBpbiB0aGUKK2ZpbmFsIGtlcm5lbCBleGVjdXRhYmxlOgorCisgPiBvYmpkdW1wIC0tZGlzYXNzZW1ibGUgLS1zZWN0aW9uPS50ZXh0IHZtbGludXgKKyA+CisgPiBjMDE3ZTc4NSA8ZG9fY29uX3dyaXRlK2MxPiB4b3JsICAgJWVkeCwlZWR4CisgPiBjMDE3ZTc4NyA8ZG9fY29uX3dyaXRlK2MzPiBtb3ZsICAgMHhjMDFjN2JlYywlZWF4CisgPiBjMDE3ZTc4YyA8ZG9fY29uX3dyaXRlK2M4PiBjbXBsICAgJDB4MTgsMHgzMTQoJWVheCkKKyA+IGMwMTdlNzkzIDxkb19jb25fd3JpdGUrY2Y+IGplICAgICBjMDE3ZTc5ZiA8ZG9fY29uX3dyaXRlK2RiPgorID4gYzAxN2U3OTUgPGRvX2Nvbl93cml0ZStkMT4gY21wbCAgICQweGJmZmZmZmZmLDB4NDAoJWVzcCwxKQorID4gYzAxN2U3OWQgPGRvX2Nvbl93cml0ZStkOT4gamEgICAgIGMwMTdlN2E3IDxkb19jb25fd3JpdGUrZTM+CisgPiBjMDE3ZTc5ZiA8ZG9fY29uX3dyaXRlK2RiPiBtb3ZsICAgJWVkeCwlZWF4CisgPiBjMDE3ZTdhMSA8ZG9fY29uX3dyaXRlK2RkPiBtb3ZsICAgMHg0MCglZXNwLDEpLCVlYngKKyA+IGMwMTdlN2E1IDxkb19jb25fd3JpdGUrZTE+IG1vdmIgICAoJWVieCksJWRsCisgPiBjMDE3ZTdhNyA8ZG9fY29uX3dyaXRlK2UzPiBtb3Z6YmwgJWRsLCVlc2kKKworVGhlIHdob2xlIHVzZXIgbWVtb3J5IGFjY2VzcyBpcyByZWR1Y2VkIHRvIDEwIHg4NiBtYWNoaW5lIGluc3RydWN0aW9ucy4KK1RoZSBpbnN0cnVjdGlvbnMgYnJhY2tldGVkIGluIHRoZSAuc2VjdGlvbiBkaXJlY3RpdmVzIGFyZSBubyBsb25nZXIKK2luIHRoZSBub3JtYWwgZXhlY3V0aW9uIHBhdGguIFRoZXkgYXJlIGxvY2F0ZWQgaW4gYSBkaWZmZXJlbnQgc2VjdGlvbgorb2YgdGhlIGV4ZWN1dGFibGUgZmlsZToKKworID4gb2JqZHVtcCAtLWRpc2Fzc2VtYmxlIC0tc2VjdGlvbj0uZml4dXAgdm1saW51eAorID4KKyA+IGMwMTk5ZmY1IDwuZml4dXArMTBiNT4gbW92bCAgICQweGZmZmZmZmYyLCVlYXgKKyA+IGMwMTk5ZmZhIDwuZml4dXArMTBiYT4geG9yYiAgICVkbCwlZGwKKyA+IGMwMTk5ZmZjIDwuZml4dXArMTBiYz4gam1wICAgIGMwMTdlN2E3IDxkb19jb25fd3JpdGUrZTM+CisKK0FuZCBmaW5hbGx5OgorID4gb2JqZHVtcCAtLWZ1bGwtY29udGVudHMgLS1zZWN0aW9uPV9fZXhfdGFibGUgdm1saW51eAorID4KKyA+ICBjMDFhYTdjNCA5M2MwMTdjMCBlMDlmMTljMCA5N2MwMTdjMCA5OWMwMTdjMCAgLi4uLi4uLi4uLi4uLi4uLgorID4gIGMwMWFhN2Q0IGY2YzIxN2MwIGU5OWYxOWMwIGE1ZTcxN2MwIGY1OWYxOWMwICAuLi4uLi4uLi4uLi4uLi4uCisgPiAgYzAxYWE3ZTQgMDgwYTE4YzAgMDFhMDE5YzAgMGEwYTE4YzAgMDRhMDE5YzAgIC4uLi4uLi4uLi4uLi4uLi4KKworb3IgaW4gaHVtYW4gcmVhZGFibGUgYnl0ZSBvcmRlcjoKKworID4gIGMwMWFhN2M0IGMwMTdjMDkzIGMwMTk5ZmUwIGMwMTdjMDk3IGMwMTdjMDk5ICAuLi4uLi4uLi4uLi4uLi4uCisgPiAgYzAxYWE3ZDQgYzAxN2MyZjYgYzAxOTlmZTkgYzAxN2U3YTUgYzAxOTlmZjUgIC4uLi4uLi4uLi4uLi4uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgaXMgdGhlIGludGVyZXN0aW5nIHBhcnQhCisgPiAgYzAxYWE3ZTQgYzAxODBhMDggYzAxOWEwMDEgYzAxODBhMGEgYzAxOWEwMDQgIC4uLi4uLi4uLi4uLi4uLi4KKworV2hhdCBoYXBwZW5lZD8gVGhlIGFzc2VtYmx5IGRpcmVjdGl2ZXMKKworLnNlY3Rpb24gLmZpeHVwLCJheCIKKy5zZWN0aW9uIF9fZXhfdGFibGUsImEiCisKK3RvbGQgdGhlIGFzc2VtYmxlciB0byBtb3ZlIHRoZSBmb2xsb3dpbmcgY29kZSB0byB0aGUgc3BlY2lmaWVkCitzZWN0aW9ucyBpbiB0aGUgRUxGIG9iamVjdCBmaWxlLiBTbyB0aGUgaW5zdHJ1Y3Rpb25zCiszOiAgICAgIG1vdmwgJC0xNCwlZWF4CisgICAgICAgIHhvcmIgJWRsLCVkbAorICAgICAgICBqbXAgMmIKK2VuZGVkIHVwIGluIHRoZSAuZml4dXAgc2VjdGlvbiBvZiB0aGUgb2JqZWN0IGZpbGUgYW5kIHRoZSBhZGRyZXNzZXMKKyAgICAgICAgLmxvbmcgMWIsM2IKK2VuZGVkIHVwIGluIHRoZSBfX2V4X3RhYmxlIHNlY3Rpb24gb2YgdGhlIG9iamVjdCBmaWxlLiAxYiBhbmQgM2IKK2FyZSBsb2NhbCBsYWJlbHMuIFRoZSBsb2NhbCBsYWJlbCAxYiAoMWIgc3RhbmRzIGZvciBuZXh0IGxhYmVsIDEKK2JhY2t3YXJkKSBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgaW5zdHJ1Y3Rpb24gdGhhdCBtaWdodCBmYXVsdCwgaS5lLgoraW4gb3VyIGNhc2UgdGhlIGFkZHJlc3Mgb2YgdGhlIGxhYmVsIDEgaXMgYzAxN2U3YTU6Cit0aGUgb3JpZ2luYWwgYXNzZW1ibHkgY29kZTogPiAxOiAgICAgIG1vdmIgKCVlYngpLCVkbAorYW5kIGxpbmtlZCBpbiB2bWxpbnV4ICAgICA6ID4gYzAxN2U3YTUgPGRvX2Nvbl93cml0ZStlMT4gbW92YiAgICglZWJ4KSwlZGwKKworVGhlIGxvY2FsIGxhYmVsIDMgKGJhY2t3YXJkcyBhZ2FpbikgaXMgdGhlIGFkZHJlc3Mgb2YgdGhlIGNvZGUgdG8gaGFuZGxlCit0aGUgZmF1bHQsIGluIG91ciBjYXNlIHRoZSBhY3R1YWwgdmFsdWUgaXMgYzAxOTlmZjU6Cit0aGUgb3JpZ2luYWwgYXNzZW1ibHkgY29kZTogPiAzOiAgICAgIG1vdmwgJC0xNCwlZWF4CithbmQgbGlua2VkIGluIHZtbGludXggICAgIDogPiBjMDE5OWZmNSA8LmZpeHVwKzEwYjU+IG1vdmwgICAkMHhmZmZmZmZmMiwlZWF4CisKK1RoZSBhc3NlbWJseSBjb2RlCisgPiAuc2VjdGlvbiBfX2V4X3RhYmxlLCJhIgorID4gICAgICAgICAuYWxpZ24gNAorID4gICAgICAgICAubG9uZyAxYiwzYgorCitiZWNvbWVzIHRoZSB2YWx1ZSBwYWlyCisgPiAgYzAxYWE3ZDQgYzAxN2MyZjYgYzAxOTlmZTkgYzAxN2U3YTUgYzAxOTlmZjUgIC4uLi4uLi4uLi4uLi4uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBedGhpcyBpcyBedGhpcyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFiICAgICAgIDNiCitjMDE3ZTdhNSxjMDE5OWZmNSBpbiB0aGUgZXhjZXB0aW9uIHRhYmxlIG9mIHRoZSBrZXJuZWwuCisKK1NvLCB3aGF0IGFjdHVhbGx5IGhhcHBlbnMgaWYgYSBmYXVsdCBmcm9tIGtlcm5lbCBtb2RlIHdpdGggbm8gc3VpdGFibGUKK3ZtYSBvY2N1cnM/CisKKzEuKSBhY2Nlc3MgdG8gaW52YWxpZCBhZGRyZXNzOgorID4gYzAxN2U3YTUgPGRvX2Nvbl93cml0ZStlMT4gbW92YiAgICglZWJ4KSwlZGwKKzIuKSBNTVUgZ2VuZXJhdGVzIGV4Y2VwdGlvbgorMy4pIENQVSBjYWxscyBkb19wYWdlX2ZhdWx0Cis0LikgZG8gcGFnZSBmYXVsdCBjYWxscyBzZWFyY2hfZXhjZXB0aW9uX3RhYmxlIChyZWdzLT5laXAgPT0gYzAxN2U3YTUpOworNS4pIHNlYXJjaF9leGNlcHRpb25fdGFibGUgbG9va3MgdXAgdGhlIGFkZHJlc3MgYzAxN2U3YTUgaW4gdGhlCisgICAgZXhjZXB0aW9uIHRhYmxlIChpLmUuIHRoZSBjb250ZW50cyBvZiB0aGUgRUxGIHNlY3Rpb24gX19leF90YWJsZSkKKyAgICBhbmQgcmV0dXJucyB0aGUgYWRkcmVzcyBvZiB0aGUgYXNzb2NpYXRlZCBmYXVsdCBoYW5kbGUgY29kZSBjMDE5OWZmNS4KKzYuKSBkb19wYWdlX2ZhdWx0IG1vZGlmaWVzIGl0cyBvd24gcmV0dXJuIGFkZHJlc3MgdG8gcG9pbnQgdG8gdGhlIGZhdWx0CisgICAgaGFuZGxlIGNvZGUgYW5kIHJldHVybnMuCis3LikgZXhlY3V0aW9uIGNvbnRpbnVlcyBpbiB0aGUgZmF1bHQgaGFuZGxpbmcgY29kZS4KKzguKSA4YSkgRUFYIGJlY29tZXMgLUVGQVVMVCAoPT0gLTE0KQorICAgIDhiKSBETCAgYmVjb21lcyB6ZXJvICh0aGUgdmFsdWUgd2UgInJlYWQiIGZyb20gdXNlciBzcGFjZSkKKyAgICA4YykgZXhlY3V0aW9uIGNvbnRpbnVlcyBhdCBsb2NhbCBsYWJlbCAyIChhZGRyZXNzIG9mIHRoZQorICAgICAgICBpbnN0cnVjdGlvbiBpbW1lZGlhdGVseSBhZnRlciB0aGUgZmF1bHRpbmcgdXNlciBhY2Nlc3MpLgorCitUaGUgc3RlcHMgOGEgdG8gOGMgaW4gYSBjZXJ0YWluIHdheSBlbXVsYXRlIHRoZSBmYXVsdGluZyBpbnN0cnVjdGlvbi4KKworVGhhdCdzIGl0LCBtb3N0bHkuIElmIHlvdSBsb29rIGF0IG91ciBleGFtcGxlLCB5b3UgbWlnaHQgYXNrIHdoeQord2Ugc2V0IEVBWCB0byAtRUZBVUxUIGluIHRoZSBleGNlcHRpb24gaGFuZGxlciBjb2RlLiBXZWxsLCB0aGUKK2dldF91c2VyIG1hY3JvIGFjdHVhbGx5IHJldHVybnMgYSB2YWx1ZTogMCwgaWYgdGhlIHVzZXIgYWNjZXNzIHdhcworc3VjY2Vzc2Z1bCwgLUVGQVVMVCBvbiBmYWlsdXJlLiBPdXIgb3JpZ2luYWwgY29kZSBkaWQgbm90IHRlc3QgdGhpcworcmV0dXJuIHZhbHVlLCBob3dldmVyIHRoZSBpbmxpbmUgYXNzZW1ibHkgY29kZSBpbiBnZXRfdXNlciB0cmllcyB0bworcmV0dXJuIC1FRkFVTFQuIEdDQyBzZWxlY3RlZCBFQVggdG8gcmV0dXJuIHRoaXMgdmFsdWUuCisKK05PVEU6CitEdWUgdG8gdGhlIHdheSB0aGF0IHRoZSBleGNlcHRpb24gdGFibGUgaXMgYnVpbHQgYW5kIG5lZWRzIHRvIGJlIG9yZGVyZWQsCitvbmx5IHVzZSBleGNlcHRpb25zIGZvciBjb2RlIGluIHRoZSAudGV4dCBzZWN0aW9uLiAgQW55IG90aGVyIHNlY3Rpb24KK3dpbGwgY2F1c2UgdGhlIGV4Y2VwdGlvbiB0YWJsZSB0byBub3QgYmUgc29ydGVkIGNvcnJlY3RseSwgYW5kIHRoZQorZXhjZXB0aW9ucyB3aWxsIGZhaWwuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3g4Ni9pMzg2L0lPLUFQSUMudHh0IGIvRG9jdW1lbnRhdGlvbi94ODYvaTM4Ni9JTy1BUElDLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWY1YmFmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi94ODYvaTM4Ni9JTy1BUElDLnR4dApAQCAtMCwwICsxLDExOSBAQAorTW9zdCAoYWxsKSBJbnRlbC1NUCBjb21wbGlhbnQgU01QIGJvYXJkcyBoYXZlIHRoZSBzby1jYWxsZWQgJ0lPLUFQSUMnLAord2hpY2ggaXMgYW4gZW5oYW5jZWQgaW50ZXJydXB0IGNvbnRyb2xsZXIuIEl0IGVuYWJsZXMgdXMgdG8gcm91dGUKK2hhcmR3YXJlIGludGVycnVwdHMgdG8gbXVsdGlwbGUgQ1BVcywgb3IgdG8gQ1BVIGdyb3Vwcy4gV2l0aG91dCBhbgorSU8tQVBJQywgaW50ZXJydXB0cyBmcm9tIGhhcmR3YXJlIHdpbGwgYmUgZGVsaXZlcmVkIG9ubHkgdG8gdGhlCitDUFUgd2hpY2ggYm9vdHMgdGhlIG9wZXJhdGluZyBzeXN0ZW0gKHVzdWFsbHkgQ1BVIzApLgorCitMaW51eCBzdXBwb3J0cyBhbGwgdmFyaWFudHMgb2YgY29tcGxpYW50IFNNUCBib2FyZHMsIGluY2x1ZGluZyBvbmVzIHdpdGgKK211bHRpcGxlIElPLUFQSUNzLiBNdWx0aXBsZSBJTy1BUElDcyBhcmUgdXNlZCBpbiBoaWdoLWVuZCBzZXJ2ZXJzIHRvCitkaXN0cmlidXRlIElSUSBsb2FkIGZ1cnRoZXIuCisKK1RoZXJlIGFyZSAoYSBmZXcpIGtub3duIGJyZWFrYWdlcyBpbiBjZXJ0YWluIG9sZGVyIGJvYXJkcywgc3VjaCBidWdzIGFyZQordXN1YWxseSB3b3JrZWQgYXJvdW5kIGJ5IHRoZSBrZXJuZWwuIElmIHlvdXIgTVAtY29tcGxpYW50IFNNUCBib2FyZCBkb2VzCitub3QgYm9vdCBMaW51eCwgdGhlbiBjb25zdWx0IHRoZSBsaW51eC1zbXAgbWFpbGluZyBsaXN0IGFyY2hpdmVzIGZpcnN0LgorCitJZiB5b3VyIGJveCBib290cyBmaW5lIHdpdGggZW5hYmxlZCBJTy1BUElDIElSUXMsIHRoZW4geW91cgorL3Byb2MvaW50ZXJydXB0cyB3aWxsIGxvb2sgbGlrZSB0aGlzIG9uZToKKworICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KKyAgaGVsbDp+PiBjYXQgL3Byb2MvaW50ZXJydXB0cworICAgICAgICAgICAgIENQVTAKKyAgICAwOiAgICAxMzYwMjkzICAgIElPLUFQSUMtZWRnZSAgdGltZXIKKyAgICAxOiAgICAgICAgICA0ICAgIElPLUFQSUMtZWRnZSAga2V5Ym9hcmQKKyAgICAyOiAgICAgICAgICAwICAgICAgICAgIFhULVBJQyAgY2FzY2FkZQorICAgMTM6ICAgICAgICAgIDEgICAgICAgICAgWFQtUElDICBmcHUKKyAgIDE0OiAgICAgICAxNDQ4ICAgIElPLUFQSUMtZWRnZSAgaWRlMAorICAgMTY6ICAgICAgMjgyMzIgICBJTy1BUElDLWxldmVsICBJbnRlbCBFdGhlckV4cHJlc3MgUHJvIDEwLzEwMCBFdGhlcm5ldAorICAgMTc6ICAgICAgNTEzMDQgICBJTy1BUElDLWxldmVsICBldGgwCisgIE5NSTogICAgICAgICAgMAorICBFUlI6ICAgICAgICAgIDAKKyAgaGVsbDp+PgorICA8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitTb21lIGludGVycnVwdHMgYXJlIHN0aWxsIGxpc3RlZCBhcyAnWFQgUElDJywgYnV0IHRoaXMgaXMgbm90IGEgcHJvYmxlbTsKK25vbmUgb2YgdGhvc2UgSVJRIHNvdXJjZXMgaXMgcGVyZm9ybWFuY2UtY3JpdGljYWwuCisKKworSW4gdGhlIHVubGlrZWx5IGNhc2UgdGhhdCB5b3VyIGJvYXJkIGRvZXMgbm90IGNyZWF0ZSBhIHdvcmtpbmcgbXAtdGFibGUsCit5b3UgY2FuIHVzZSB0aGUgcGlycT0gYm9vdCBwYXJhbWV0ZXIgdG8gJ2hhbmQtY29uc3RydWN0JyBJUlEgZW50cmllcy4gVGhpcworaXMgbm9uLXRyaXZpYWwgdGhvdWdoIGFuZCBjYW5ub3QgYmUgYXV0b21hdGVkLiBPbmUgc2FtcGxlIC9ldGMvbGlsby5jb25mCitlbnRyeToKKworCWFwcGVuZD0icGlycT0xNSwxMSwxMCIKKworVGhlIGFjdHVhbCBudW1iZXJzIGRlcGVuZCBvbiB5b3VyIHN5c3RlbSwgb24geW91ciBQQ0kgY2FyZHMgYW5kIG9uIHRoZWlyCitQQ0kgc2xvdCBwb3NpdGlvbi4gVXN1YWxseSBQQ0kgc2xvdHMgYXJlICdkYWlzeSBjaGFpbmVkJyBiZWZvcmUgdGhleSBhcmUKK2Nvbm5lY3RlZCB0byB0aGUgUENJIGNoaXBzZXQgSVJRIHJvdXRpbmcgZmFjaWxpdHkgKHRoZSBpbmNvbWluZyBQSVJRMS00CitsaW5lcyk6CisKKyAgICAgICAgICAgICAgICwtLiAgICAgICAgLC0uICAgICAgICAsLS4gICAgICAgICwtLiAgICAgICAgLC0uCisgICAgIFBJUlE0IC0tLS18IHwtLiAgICAsLXwgfC0uICAgICwtfCB8LS4gICAgLC18IHwtLS0tLS0tLXwgfAorICAgICAgICAgICAgICAgfFN8ICBcICAvICB8U3wgIFwgIC8gIHxTfCAgXCAgLyAgfFN8ICAgICAgICB8U3wKKyAgICAgUElSUTMgLS0tLXxsfC0uIGAvLS0tfGx8LS4gYC8tLS18bHwtLiBgLy0tLXxsfC0tLS0tLS0tfGx8CisgICAgICAgICAgICAgICB8b3wgIFwvICAgIHxvfCAgXC8gICAgfG98ICBcLyAgICB8b3wgICAgICAgIHxvfAorICAgICBQSVJRMiAtLS0tfHR8LS4vYC0tLS18dHwtLi9gLS0tLXx0fC0uL2AtLS0tfHR8LS0tLS0tLS18dHwKKyAgICAgICAgICAgICAgIHwxfCAvXCAgICAgfDJ8IC9cICAgICB8M3wgL1wgICAgIHw0fCAgICAgICAgfDV8CisgICAgIFBJUlExIC0tLS18IHwtICBgLS0tLXwgfC0gIGAtLS0tfCB8LSAgYC0tLS18IHwtLS0tLS0tLXwgfAorICAgICAgICAgICAgICAgYC0nICAgICAgICBgLScgICAgICAgIGAtJyAgICAgICAgYC0nICAgICAgICBgLScKKworRXZlcnkgUENJIGNhcmQgZW1pdHMgYSBQQ0kgSVJRLCB3aGljaCBjYW4gYmUgSU5UQSwgSU5UQiwgSU5UQyBvciBJTlREOgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLC0uCisgICAgICAgICAgICAgICAgICAgICAgICAgSU5URC0tfCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFN8CisgICAgICAgICAgICAgICAgICAgICAgICAgSU5UQy0tfGx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfG98CisgICAgICAgICAgICAgICAgICAgICAgICAgSU5UQi0tfHR8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHh8CisgICAgICAgICAgICAgICAgICAgICAgICAgSU5UQS0tfCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYC0nCisKK1RoZXNlIElOVEEtRCBQQ0kgSVJRcyBhcmUgYWx3YXlzICdsb2NhbCB0byB0aGUgY2FyZCcsIHRoZWlyIHJlYWwgbWVhbmluZworZGVwZW5kcyBvbiB3aGljaCBzbG90IHRoZXkgYXJlIGluLiBJZiB5b3UgbG9vayBhdCB0aGUgZGFpc3kgY2hhaW5pbmcgZGlhZ3JhbSwKK2EgY2FyZCBpbiBzbG90NCwgaXNzdWluZyBJTlRBIElSUSwgaXQgd2lsbCBlbmQgdXAgYXMgYSBzaWduYWwgb24gUElSUTQgb2YKK3RoZSBQQ0kgY2hpcHNldC4gTW9zdCBjYXJkcyBpc3N1ZSBJTlRBLCB0aGlzIGNyZWF0ZXMgb3B0aW1hbCBkaXN0cmlidXRpb24KK2JldHdlZW4gdGhlIFBJUlEgbGluZXMuIChkaXN0cmlidXRpbmcgSVJRIHNvdXJjZXMgcHJvcGVybHkgaXMgbm90IGEKK25lY2Vzc2l0eSwgUENJIElSUXMgY2FuIGJlIHNoYXJlZCBhdCB3aWxsLCBidXQgaXQncyBhIGdvb2QgZm9yIHBlcmZvcm1hbmNlCit0byBoYXZlIG5vbiBzaGFyZWQgaW50ZXJydXB0cykuIFNsb3Q1IHNob3VsZCBiZSB1c2VkIGZvciB2aWRlb2NhcmRzLCB0aGV5CitkbyBub3QgdXNlIGludGVycnVwdHMgbm9ybWFsbHksIHRodXMgdGhleSBhcmUgbm90IGRhaXN5IGNoYWluZWQgZWl0aGVyLgorCitzbyBpZiB5b3UgaGF2ZSB5b3VyIFNDU0kgY2FyZCAoSVJRMTEpIGluIFNsb3QxLCBUdWxpcCBjYXJkIChJUlE5KSBpbgorU2xvdDIsIHRoZW4geW91J2xsIGhhdmUgdG8gc3BlY2lmeSB0aGlzIHBpcnE9IGxpbmU6CisKKwlhcHBlbmQ9InBpcnE9MTEsOSIKKwordGhlIGZvbGxvd2luZyBzY3JpcHQgdHJpZXMgdG8gZmlndXJlIG91dCBzdWNoIGEgZGVmYXVsdCBwaXJxPSBsaW5lIGZyb20KK3lvdXIgUENJIGNvbmZpZ3VyYXRpb246CisKKwllY2hvIC1uIHBpcnE9OyBlY2hvIGBzY2FucGNpIHwgZ3JlcCBUX0wgfCBjdXQgLWM1Ni1gIHwgc2VkICdzLyAvLC9nJworCitub3RlIHRoYXQgdGhpcyBzY3JpcHQgd29uJ3Qgd29yayBpZiB5b3UgaGF2ZSBza2lwcGVkIGEgZmV3IHNsb3RzIG9yIGlmIHlvdXIKK2JvYXJkIGRvZXMgbm90IGRvIGRlZmF1bHQgZGFpc3ktY2hhaW5pbmcuIChvciB0aGUgSU8tQVBJQyBoYXMgdGhlIFBJUlEgcGlucworY29ubmVjdGVkIGluIHNvbWUgc3RyYW5nZSB3YXkpLiBFLmcuIGlmIGluIHRoZSBhYm92ZSBjYXNlIHlvdSBoYXZlIHlvdXIgU0NTSQorY2FyZCAoSVJRMTEpIGluIFNsb3QzLCBhbmQgaGF2ZSBTbG90MSBlbXB0eToKKworCWFwcGVuZD0icGlycT0wLDksMTEiCisKK1t2YWx1ZSAnMCcgaXMgYSBnZW5lcmljICdwbGFjZWhvbGRlcicsIHJlc2VydmVkIGZvciBlbXB0eSAob3Igbm9uLUlSUSBlbWl0dGluZykKK3Nsb3RzLl0KKworR2VuZXJhbGx5LCBpdCdzIGFsd2F5cyBwb3NzaWJsZSB0byBmaW5kIG91dCB0aGUgY29ycmVjdCBwaXJxPSBzZXR0aW5ncywganVzdAorcGVybXV0ZSBhbGwgSVJRIG51bWJlcnMgcHJvcGVybHkgLi4uIGl0IHdpbGwgdGFrZSBzb21lIHRpbWUgdGhvdWdoLiBBbgorJ2luY29ycmVjdCcgcGlycSBsaW5lIHdpbGwgY2F1c2UgdGhlIGJvb3RpbmcgcHJvY2VzcyB0byBoYW5nLCBvciBhIGRldmljZQord29uJ3QgZnVuY3Rpb24gcHJvcGVybHkgKGUuZy4gaWYgaXQncyBpbnNlcnRlZCBhcyBhIG1vZHVsZSkuCisKK0lmIHlvdSBoYXZlIDIgUENJIGJ1c2VzLCB0aGVuIHlvdSBjYW4gdXNlIHVwIHRvIDggcGlycSB2YWx1ZXMsIGFsdGhvdWdoIHN1Y2gKK2JvYXJkcyB0ZW5kIHRvIGhhdmUgYSBnb29kIGNvbmZpZ3VyYXRpb24uCisKK0JlIHByZXBhcmVkIHRoYXQgaXQgbWlnaHQgaGFwcGVuIHRoYXQgeW91IG5lZWQgc29tZSBzdHJhbmdlIHBpcnEgbGluZToKKworCWFwcGVuZD0icGlycT0wLDAsMCwwLDAsMCw5LDExIgorCitVc2Ugc21hcnQgdHJpYWwtYW5kLWVycm9yIHRlY2huaXF1ZXMgdG8gZmluZCBvdXQgdGhlIGNvcnJlY3QgcGlycSBsaW5lIC4uLgorCitHb29kIGx1Y2sgYW5kIG1haWwgdG8gbGludXgtc21wQHZnZXIua2VybmVsLm9yZyBvcgorbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZyBpZiB5b3UgaGF2ZSBhbnkgcHJvYmxlbXMgdGhhdCBhcmUgbm90IGNvdmVyZWQKK2J5IHRoaXMgZG9jdW1lbnQuCisKKy0tIG1pbmdvCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24veDg2L2ludGVsX21weC50eHQgYi9Eb2N1bWVudGF0aW9uL3g4Ni9pbnRlbF9tcHgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxODUxOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3g4Ni9pbnRlbF9tcHgudHh0CkBAIC0wLDAgKzEsMjQ0IEBACisxLiBJbnRlbChSKSBNUFggT3ZlcnZpZXcKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitJbnRlbChSKSBNZW1vcnkgUHJvdGVjdGlvbiBFeHRlbnNpb25zIChJbnRlbChSKSBNUFgpIGlzIGEgbmV3IGNhcGFiaWxpdHkKK2ludHJvZHVjZWQgaW50byBJbnRlbCBBcmNoaXRlY3R1cmUuIEludGVsIE1QWCBwcm92aWRlcyBoYXJkd2FyZSBmZWF0dXJlcwordGhhdCBjYW4gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGNvbXBpbGVyIGNoYW5nZXMgdG8gY2hlY2sgbWVtb3J5CityZWZlcmVuY2VzLCBmb3IgdGhvc2UgcmVmZXJlbmNlcyB3aG9zZSBjb21waWxlLXRpbWUgbm9ybWFsIGludGVudGlvbnMgYXJlCit1c3VycGVkIGF0IHJ1bnRpbWUgZHVlIHRvIGJ1ZmZlciBvdmVyZmxvdyBvciB1bmRlcmZsb3cuCisKK1lvdSBjYW4gdGVsbCBpZiB5b3VyIENQVSBzdXBwb3J0cyBNUFggYnkgbG9va2luZyBpbiAvcHJvYy9jcHVpbmZvOgorCisJY2F0IC9wcm9jL2NwdWluZm8gIHwgZ3JlcCAnIG1weCAnCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgcmVmZXIgdG8gSW50ZWwoUikgQXJjaGl0ZWN0dXJlIEluc3RydWN0aW9uCitTZXQgRXh0ZW5zaW9ucyBQcm9ncmFtbWluZyBSZWZlcmVuY2UsIENoYXB0ZXIgOTogSW50ZWwoUikgTWVtb3J5IFByb3RlY3Rpb24KK0V4dGVuc2lvbnMuCisKK05vdGU6IEFzIG9mIERlY2VtYmVyIDIwMTQsIG5vIGhhcmR3YXJlIHdpdGggTVBYIGlzIGF2YWlsYWJsZSBidXQgaXQgaXMKK3Bvc3NpYmxlIHRvIHVzZSBTREUgKEludGVsKFIpIFNvZnR3YXJlIERldmVsb3BtZW50IEVtdWxhdG9yKSBpbnN0ZWFkLCB3aGljaAorY2FuIGJlIGRvd25sb2FkZWQgZnJvbQoraHR0cDovL3NvZnR3YXJlLmludGVsLmNvbS9lbi11cy9hcnRpY2xlcy9pbnRlbC1zb2Z0d2FyZS1kZXZlbG9wbWVudC1lbXVsYXRvcgorCisKKzIuIEhvdyB0byBnZXQgdGhlIGFkdmFudGFnZSBvZiBNUFgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRm9yIE1QWCB0byB3b3JrLCBjaGFuZ2VzIGFyZSByZXF1aXJlZCBpbiB0aGUga2VybmVsLCBiaW51dGlscyBhbmQgY29tcGlsZXIuCitObyBzb3VyY2UgY2hhbmdlcyBhcmUgcmVxdWlyZWQgZm9yIGFwcGxpY2F0aW9ucywganVzdCBhIHJlY29tcGlsZS4KKworVGhlcmUgYXJlIGEgbG90IG9mIG1vdmluZyBwYXJ0cyBvZiB0aGlzIHRvIGFsbCB3b3JrIHJpZ2h0LiBUaGUgZm9sbG93aW5nCitpcyBob3cgd2UgZXhwZWN0IHRoZSBjb21waWxlciwgYXBwbGljYXRpb24gYW5kIGtlcm5lbCB0byB3b3JrIHRvZ2V0aGVyLgorCisxKSBBcHBsaWNhdGlvbiBkZXZlbG9wZXIgY29tcGlsZXMgd2l0aCAtZm1weC4gVGhlIGNvbXBpbGVyIHdpbGwgYWRkIHRoZQorICAgaW5zdHJ1bWVudGF0aW9uIGFzIHdlbGwgYXMgc29tZSBzZXR1cCBjb2RlIGNhbGxlZCBlYXJseSBhZnRlciB0aGUgYXBwCisgICBzdGFydHMuIE5ldyBpbnN0cnVjdGlvbiBwcmVmaXhlcyBhcmUgbm9vcHMgZm9yIG9sZCBDUFVzLgorMikgVGhhdCBzZXR1cCBjb2RlIGFsbG9jYXRlcyAodmlydHVhbCkgc3BhY2UgZm9yIHRoZSAiYm91bmRzIGRpcmVjdG9yeSIsCisgICBwb2ludHMgdGhlICJibmRjZmd1IiByZWdpc3RlciB0byB0aGUgZGlyZWN0b3J5IChtdXN0IGFsc28gc2V0IHRoZSB2YWxpZAorICAgYml0KSBhbmQgbm90aWZpZXMgdGhlIGtlcm5lbCAodmlhIHRoZSBuZXcgcHJjdGwoUFJfTVBYX0VOQUJMRV9NQU5BR0VNRU5UKSkKKyAgIHRoYXQgdGhlIGFwcCB3aWxsIGJlIHVzaW5nIE1QWC4gIFRoZSBhcHAgbXVzdCBiZSBjYXJlZnVsIG5vdCB0byBhY2Nlc3MKKyAgIHRoZSBib3VuZHMgdGFibGVzIGJldHdlZW4gdGhlIHRpbWUgd2hlbiBpdCBwb3B1bGF0ZXMgImJuZGNmZ3UiIGFuZAorICAgd2hlbiBpdCBjYWxscyB0aGUgcHJjdGwoKS4gIFRoaXMgbWlnaHQgYmUgaGFyZCB0byBndWFyYW50ZWUgaWYgdGhlIGFwcAorICAgaXMgY29tcGlsZWQgd2l0aCBNUFguICBZb3UgY2FuIGFkZCAiX19hdHRyaWJ1dGVfXygoYm5kX2xlZ2FjeSkpIiB0bworICAgdGhlIGZ1bmN0aW9uIHRvIGRpc2FibGUgTVBYIGluc3RydW1lbnRhdGlvbiB0byBoZWxwIGd1YXJhbnRlZSB0aGlzLgorICAgQWxzbyBiZSBjYXJlZnVsIG5vdCB0byBjYWxsIG91dCB0byBhbnkgb3RoZXIgY29kZSB3aGljaCBtaWdodCBiZQorICAgTVBYLWluc3RydW1lbnRlZC4KKzMpIFRoZSBrZXJuZWwgZGV0ZWN0cyB0aGF0IHRoZSBDUFUgaGFzIE1QWCwgYWxsb3dzIHRoZSBuZXcgcHJjdGwoKSB0bworICAgc3VjY2VlZCwgYW5kIG5vdGVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgYm91bmRzIGRpcmVjdG9yeS4gVXNlcnNwYWNlIGlzCisgICBleHBlY3RlZCB0byBrZWVwIHRoZSBib3VuZHMgZGlyZWN0b3J5IGF0IHRoYXQgbG9jYXRpb25XZSBub3RlIGl0CisgICBpbnN0ZWFkIG9mIHJlYWRpbmcgaXQgZWFjaCB0aW1lIGJlY2F1c2UgdGhlICd4c2F2ZScgb3BlcmF0aW9uIG5lZWRlZAorICAgdG8gYWNjZXNzIHRoZSBib3VuZHMgZGlyZWN0b3J5IHJlZ2lzdGVyIGlzIGFuIGV4cGVuc2l2ZSBvcGVyYXRpb24uCis0KSBJZiB0aGUgYXBwbGljYXRpb24gbmVlZHMgdG8gc3BpbGwgYm91bmRzIG91dCBvZiB0aGUgNCByZWdpc3RlcnMsIGl0CisgICBpc3N1ZXMgYSBibmRzdHggaW5zdHJ1Y3Rpb24uIFNpbmNlIHRoZSBib3VuZHMgZGlyZWN0b3J5IGlzIGVtcHR5IGF0CisgICB0aGlzIHBvaW50LCBhIGJvdW5kcyBmYXVsdCAoI0JSKSBpcyByYWlzZWQsIHRoZSBrZXJuZWwgYWxsb2NhdGVzIGEKKyAgIGJvdW5kcyB0YWJsZSAoaW4gdGhlIHVzZXIgYWRkcmVzcyBzcGFjZSkgYW5kIG1ha2VzIHRoZSByZWxldmFudCBlbnRyeQorICAgaW4gdGhlIGJvdW5kcyBkaXJlY3RvcnkgcG9pbnQgdG8gdGhlIG5ldyB0YWJsZS4KKzUpIElmIHRoZSBhcHBsaWNhdGlvbiB2aW9sYXRlcyB0aGUgYm91bmRzIHNwZWNpZmllZCBpbiB0aGUgYm91bmRzIHJlZ2lzdGVycywKKyAgIGEgc2VwYXJhdGUga2luZCBvZiAjQlIgaXMgcmFpc2VkIHdoaWNoIHdpbGwgZGVsaXZlciBhIHNpZ25hbCB3aXRoCisgICBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdmlvbGF0aW9uIGluIHRoZSAnc3RydWN0IHNpZ2luZm8nLgorNikgV2hlbmV2ZXIgbWVtb3J5IGlzIGZyZWVkLCB3ZSBrbm93IHRoYXQgaXQgY2FuIG5vIGxvbmdlciBjb250YWluIHZhbGlkCisgICBwb2ludGVycywgYW5kIHdlIGF0dGVtcHQgdG8gZnJlZSB0aGUgYXNzb2NpYXRlZCBzcGFjZSBpbiB0aGUgYm91bmRzCisgICB0YWJsZXMuIElmIGFuIGVudGlyZSB0YWJsZSBiZWNvbWVzIHVudXNlZCwgd2Ugd2lsbCBhdHRlbXB0IHRvIGZyZWUKKyAgIHRoZSB0YWJsZSBhbmQgcmVtb3ZlIHRoZSBlbnRyeSBpbiB0aGUgZGlyZWN0b3J5LgorCitUbyBzdW1tYXJpemUsIHRoZXJlIGFyZSBlc3NlbnRpYWxseSB0aHJlZSB0aGluZ3MgaW50ZXJhY3RpbmcgaGVyZToKKworR0NDIHdpdGggLWZtcHg6CisgKiBlbmFibGVzIGFubm90YXRpb24gb2YgY29kZSB3aXRoIE1QWCBpbnN0cnVjdGlvbnMgYW5kIHByZWZpeGVzCisgKiBpbnNlcnRzIGNvZGUgZWFybHkgaW4gdGhlIGFwcGxpY2F0aW9uIHRvIGNhbGwgaW4gdG8gdGhlICJnY2MgcnVudGltZSIKK0dDQyBNUFggUnVudGltZToKKyAqIENoZWNrcyBmb3IgaGFyZHdhcmUgTVBYIHN1cHBvcnQgaW4gY3B1aWQgbGVhZgorICogYWxsb2NhdGVzIHZpcnR1YWwgc3BhY2UgZm9yIHRoZSBib3VuZHMgZGlyZWN0b3J5IChtYWxsb2MoKSBlc3NlbnRpYWxseSkKKyAqIHBvaW50cyB0aGUgaGFyZHdhcmUgQk5EQ0ZHVSByZWdpc3RlciBhdCB0aGUgZGlyZWN0b3J5CisgKiBjYWxscyBhIG5ldyBwcmN0bChQUl9NUFhfRU5BQkxFX01BTkFHRU1FTlQpIHRvIG5vdGlmeSB0aGUga2VybmVsIHRvCisgICBzdGFydCBtYW5hZ2luZyB0aGUgYm91bmRzIGRpcmVjdG9yaWVzCitLZXJuZWwgTVBYIENvZGU6CisgKiBDaGVja3MgZm9yIGhhcmR3YXJlIE1QWCBzdXBwb3J0IGluIGNwdWlkIGxlYWYKKyAqIEhhbmRsZXMgI0JSIGV4Y2VwdGlvbnMgYW5kIHNlbmRzIFNJR1NFR1YgdG8gdGhlIGFwcCB3aGVuIGl0IHZpb2xhdGVzCisgICBib3VuZHMsIGxpa2UgZHVyaW5nIGEgYnVmZmVyIG92ZXJmbG93LgorICogV2hlbiBib3VuZHMgYXJlIHNwaWxsZWQgaW4gdG8gYW4gdW5hbGxvY2F0ZWQgYm91bmRzIHRhYmxlLCB0aGUga2VybmVsCisgICBub3RpY2VzIGluIHRoZSAjQlIgZXhjZXB0aW9uLCBhbGxvY2F0ZXMgdGhlIHZpcnR1YWwgc3BhY2UsIHRoZW4KKyAgIHVwZGF0ZXMgdGhlIGJvdW5kcyBkaXJlY3RvcnkgdG8gcG9pbnQgdG8gdGhlIG5ldyB0YWJsZS4gSXQga2VlcHMKKyAgIHNwZWNpYWwgdHJhY2sgb2YgdGhlIG1lbW9yeSB3aXRoIGEgVk1fTVBYIGZsYWcuCisgKiBGcmVlcyB1bnVzZWQgYm91bmRzIHRhYmxlcyBhdCB0aGUgdGltZSB0aGF0IHRoZSBtZW1vcnkgdGhleSBkZXNjcmliZWQKKyAgIGlzIHVubWFwcGVkLgorCisKKzMuIEhvdyBkb2VzIE1QWCBrZXJuZWwgY29kZSB3b3JrCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitIYW5kbGluZyAjQlIgZmF1bHRzIGNhdXNlZCBieSBNUFgKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaGVuIE1QWCBpcyBlbmFibGVkLCB0aGVyZSBhcmUgMiBuZXcgc2l0dWF0aW9ucyB0aGF0IGNhbiBnZW5lcmF0ZQorI0JSIGZhdWx0cy4KKyAgKiBuZXcgYm91bmRzIHRhYmxlcyAoQlQpIG5lZWQgdG8gYmUgYWxsb2NhdGVkIHRvIHNhdmUgYm91bmRzLgorICAqIGJvdW5kcyB2aW9sYXRpb24gY2F1c2VkIGJ5IE1QWCBpbnN0cnVjdGlvbnMuCisKK1dlIGhvb2sgI0JSIGhhbmRsZXIgdG8gaGFuZGxlIHRoZXNlIHR3byBuZXcgc2l0dWF0aW9ucy4KKworT24tZGVtYW5kIGtlcm5lbCBhbGxvY2F0aW9uIG9mIGJvdW5kcyB0YWJsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01QWCBvbmx5IGhhcyA0IGhhcmR3YXJlIHJlZ2lzdGVycyBmb3Igc3RvcmluZyBib3VuZHMgaW5mb3JtYXRpb24uIElmCitNUFgtZW5hYmxlZCBjb2RlIG5lZWRzIG1vcmUgdGhhbiB0aGVzZSA0IHJlZ2lzdGVycywgaXQgbmVlZHMgdG8gc3BpbGwKK3RoZW0gc29tZXdoZXJlLiBJdCBoYXMgdHdvIHNwZWNpYWwgaW5zdHJ1Y3Rpb25zIGZvciB0aGlzIHdoaWNoIGFsbG93Cit0aGUgYm91bmRzIHRvIGJlIG1vdmVkIGJldHdlZW4gdGhlIGJvdW5kcyByZWdpc3RlcnMgYW5kIHNvbWUgbmV3ICJib3VuZHMKK3RhYmxlcyIuCisKKyNCUiBleGNlcHRpb25zIGFyZSBhIG5ldyBjbGFzcyBvZiBleGNlcHRpb25zIGp1c3QgZm9yIE1QWC4gVGhleSBhcmUKK3NpbWlsYXIgY29uY2VwdHVhbGx5IHRvIGEgcGFnZSBmYXVsdCBhbmQgd2lsbCBiZSByYWlzZWQgYnkgdGhlIE1QWAoraGFyZHdhcmUgZHVyaW5nIGJvdGggYm91bmRzIHZpb2xhdGlvbnMgb3Igd2hlbiB0aGUgdGFibGVzIGFyZSBub3QKK3ByZXNlbnQuIFRoZSBrZXJuZWwgaGFuZGxlcyB0aG9zZSAjQlIgZXhjZXB0aW9ucyBmb3Igbm90LXByZXNlbnQgdGFibGVzCitieSBjYXJ2aW5nIHRoZSBzcGFjZSBvdXQgb2YgdGhlIG5vcm1hbCBwcm9jZXNzZXMgYWRkcmVzcyBzcGFjZSBhbmQgdGhlbgorcG9pbnRpbmcgdGhlIGJvdW5kcy1kaXJlY3Rvcnkgb3ZlciB0byBpdC4KKworVGhlIHRhYmxlcyBuZWVkIHRvIGJlIGFjY2Vzc2VkIGFuZCBjb250cm9sbGVkIGJ5IHVzZXJzcGFjZSBiZWNhdXNlCit0aGUgaW5zdHJ1Y3Rpb25zIGZvciBtb3ZpbmcgYm91bmRzIGluIGFuZCBvdXQgb2YgdGhlbSBhcmUgZXh0cmVtZWx5CitmcmVxdWVudC4gVGhleSBwb3RlbnRpYWxseSBoYXBwZW4gZXZlcnkgdGltZSBhIHJlZ2lzdGVyIHBvaW50cyB0bworbWVtb3J5LiBBbnkgZGlyZWN0IGtlcm5lbCBpbnZvbHZlbWVudCAobGlrZSBhIHN5c2NhbGwpIHRvIGFjY2VzcyB0aGUKK3RhYmxlcyB3b3VsZCBvYnZpb3VzbHkgZGVzdHJveSBwZXJmb3JtYW5jZS4KKworV2h5IG5vdCBkbyB0aGlzIGluIHVzZXJzcGFjZT8gTVBYIGRvZXMgbm90IHN0cmljdGx5IHJlcXVpcmUgYW55dGhpbmcgaW4KK3RoZSBrZXJuZWwuIEl0IGNhbiB0aGVvcmV0aWNhbGx5IGJlIGRvbmUgY29tcGxldGVseSBmcm9tIHVzZXJzcGFjZS4gSGVyZQorYXJlIGEgZmV3IHdheXMgdGhpcyBjb3VsZCBiZSBkb25lLiBXZSBkb24ndCB0aGluayBhbnkgb2YgdGhlbSBhcmUgcHJhY3RpY2FsCitpbiB0aGUgcmVhbC13b3JsZCwgYnV0IGhlcmUgdGhleSBhcmUuCisKK1E6IENhbiB2aXJ0dWFsIHNwYWNlIHNpbXBseSBiZSByZXNlcnZlZCBmb3IgdGhlIGJvdW5kcyB0YWJsZXMgc28gdGhhdCB3ZQorICAgbmV2ZXIgaGF2ZSB0byBhbGxvY2F0ZSB0aGVtPworQTogTVBYLWVuYWJsZWQgYXBwbGljYXRpb24gd2lsbCBwb3NzaWJseSBjcmVhdGUgYSBsb3Qgb2YgYm91bmRzIHRhYmxlcyBpbgorICAgcHJvY2VzcyBhZGRyZXNzIHNwYWNlIHRvIHNhdmUgYm91bmRzIGluZm9ybWF0aW9uLiBUaGVzZSB0YWJsZXMgY2FuIHRha2UKKyAgIHVwIGh1Z2Ugc3dhdGhzIG9mIG1lbW9yeSAoYXMgbXVjaCBhcyA4MCUgb2YgdGhlIG1lbW9yeSBvbiB0aGUgc3lzdGVtKQorICAgZXZlbiBpZiB3ZSBjbGVhbiB0aGVtIHVwIGFnZ3Jlc3NpdmVseS4gSW4gdGhlIHdvcnN0LWNhc2Ugc2NlbmFyaW8sIHRoZQorICAgdGFibGVzIGNhbiBiZSA0eCB0aGUgc2l6ZSBvZiB0aGUgZGF0YSBzdHJ1Y3R1cmUgYmVpbmcgdHJhY2tlZC4gSU9XLCBhCisgICAxLXBhZ2Ugc3RydWN0dXJlIGNhbiByZXF1aXJlIDQgYm91bmRzLXRhYmxlIHBhZ2VzLiBBbiBYLUdCIHZpcnR1YWwKKyAgIGFyZWEgbmVlZHMgNCpYIEdCIG9mIHZpcnR1YWwgc3BhY2UsIHBsdXMgMkdCIGZvciB0aGUgYm91bmRzIGRpcmVjdG9yeS4KKyAgIElmIHdlIHdlcmUgdG8gcHJlYWxsb2NhdGUgdGhlbSBmb3IgdGhlIDEyOFRCIG9mIHVzZXIgdmlydHVhbCBhZGRyZXNzCisgICBzcGFjZSwgd2Ugd291bGQgbmVlZCB0byByZXNlcnZlIDUxMlRCKzJHQiwgd2hpY2ggaXMgbGFyZ2VyIHRoYW4gdGhlCisgICBlbnRpcmUgdmlydHVhbCBhZGRyZXNzIHNwYWNlIHRvZGF5LiBUaGlzIG1lYW5zIHRoZXkgY2FuIG5vdCBiZSByZXNlcnZlZAorICAgYWhlYWQgb2YgdGltZS4gQWxzbywgYSBzaW5nbGUgcHJvY2VzcydzIHByZS1wb3B1YWxhdGVkIGJvdW5kcyBkaXJlY3RvcnkKKyAgIGNvbnN1bWVzIDJHQiBvZiB2aXJ0dWFsICpBTkQqIHBoeXNpY2FsIG1lbW9yeS4gSU9XLCBpdCdzIGNvbXBsZXRlbHkKKyAgIGluZmVhc2libGUgdG8gcHJlcG9wdWxhdGUgYm91bmRzIGRpcmVjdG9yaWVzLgorCitROiBDYW4gd2UgcHJlYWxsb2NhdGUgYm91bmRzIHRhYmxlIHNwYWNlIGF0IHRoZSBzYW1lIHRpbWUgbWVtb3J5IGlzCisgICBhbGxvY2F0ZWQgd2hpY2ggbWlnaHQgY29udGFpbiBwb2ludGVycyB0aGF0IG1pZ2h0IGV2ZW50dWFsbHkgbmVlZAorICAgYm91bmRzIHRhYmxlcz8KK0E6IFRoaXMgd291bGQgd29yayBpZiB3ZSBjb3VsZCBob29rIHRoZSBzaXRlIG9mIGVhY2ggYW5kIGV2ZXJ5IG1lbW9yeQorICAgYWxsb2NhdGlvbiBzeXNjYWxsLiBUaGlzIGNhbiBiZSBkb25lIGZvciBzbWFsbCwgY29uc3RyYWluZWQgYXBwbGljYXRpb25zLgorICAgQnV0LCBpdCBpc24ndCBwcmFjdGljYWwgYXQgYSBsYXJnZXIgc2NhbGUgc2luY2UgYSBnaXZlbiBhcHAgaGFzIG5vCisgICB3YXkgb2YgY29udHJvbGxpbmcgaG93IGFsbCB0aGUgcGFydHMgb2YgdGhlIGFwcCBtaWdodCBhbGxvY2F0ZSBtZW1vcnkKKyAgICh0aGluayBsaWJyYXJpZXMpLiBUaGUga2VybmVsIGlzIHJlYWxseSB0aGUgb25seSBwbGFjZSB0byBpbnRlcmNlcHQKKyAgIHRoZXNlIGNhbGxzLgorCitROiBDb3VsZCBhIGJvdW5kcyBmYXVsdCBiZSBoYW5kZWQgdG8gdXNlcnNwYWNlIGFuZCB0aGUgdGFibGVzIGFsbG9jYXRlZAorICAgdGhlcmUgaW4gYSBzaWduYWwgaGFuZGxlciBpbnRlYWQgb2YgaW4gdGhlIGtlcm5lbD8KK0E6IG1tYXAoKSBpcyBub3Qgb24gdGhlIGxpc3Qgb2Ygc2FmZSBhc3luYyBoYW5kbGVyIGZ1bmN0aW9ucyBhbmQgZXZlbgorICAgaWYgbW1hcCgpIHdvdWxkIHdvcmsgaXQgc3RpbGwgcmVxdWlyZXMgbG9ja2luZyBvciBuYXN0eSB0cmlja3MgdG8KKyAgIGtlZXAgdHJhY2sgb2YgdGhlIGFsbG9jYXRpb24gc3RhdGUgdGhlcmUuCisKK0hhdmluZyBydWxlZCBvdXQgYWxsIG9mIHRoZSB1c2Vyc3BhY2Utb25seSBhcHByb2FjaGVzIGZvciBtYW5hZ2luZworYm91bmRzIHRhYmxlcyB0aGF0IHdlIGNvdWxkIHRoaW5rIG9mLCB3ZSBjcmVhdGUgdGhlbSBvbiBkZW1hbmQgaW4KK3RoZSBrZXJuZWwuCisKK0RlY29kaW5nIE1QWCBpbnN0cnVjdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgYSAjQlIgaXMgZ2VuZXJhdGVkIGR1ZSB0byBhIGJvdW5kcyB2aW9sYXRpb24gY2F1c2VkIGJ5IE1QWC4KK1dlIG5lZWQgdG8gZGVjb2RlIE1QWCBpbnN0cnVjdGlvbnMgdG8gZ2V0IHZpb2xhdGlvbiBhZGRyZXNzIGFuZAorc2V0IHRoaXMgYWRkcmVzcyBpbnRvIGV4dGVuZGVkIHN0cnVjdCBzaWdpbmZvLgorCitUaGUgX3NpZ2ZhdWx0IGZlaWxkIG9mIHN0cnVjdCBzaWdpbmZvIGlzIGV4dGVuZGVkIGFzIGZvbGxvdzoKKworODcJCS8qIFNJR0lMTCwgU0lHRlBFLCBTSUdTRUdWLCBTSUdCVVMgKi8KKzg4CQlzdHJ1Y3QgeworODkJCQl2b2lkIF9fdXNlciAqX2FkZHI7IC8qIGZhdWx0aW5nIGluc24vbWVtb3J5IHJlZi4gKi8KKzkwICNpZmRlZiBfX0FSQ0hfU0lfVFJBUE5PCis5MQkJCWludCBfdHJhcG5vOwkvKiBUUkFQICMgd2hpY2ggY2F1c2VkIHRoZSBzaWduYWwgKi8KKzkyICNlbmRpZgorOTMJCQlzaG9ydCBfYWRkcl9sc2I7IC8qIExTQiBvZiB0aGUgcmVwb3J0ZWQgYWRkcmVzcyAqLworOTQJCQlzdHJ1Y3QgeworOTUJCQkJdm9pZCBfX3VzZXIgKl9sb3dlcjsKKzk2CQkJCXZvaWQgX191c2VyICpfdXBwZXI7Cis5NwkJCX0gX2FkZHJfYm5kOworOTgJCX0gX3NpZ2ZhdWx0OworCitUaGUgJ19hZGRyJyBmaWVsZCByZWZlcnMgdG8gdmlvbGF0aW9uIGFkZHJlc3MsIGFuZCBuZXcgJ19hZGRyX2FuZCcKK2ZpZWxkIHJlZmVycyB0byB0aGUgdXBwZXIvbG93ZXIgYm91bmRzIHdoZW4gYSAjQlIgaXMgY2F1c2VkLgorCitHbGliYyB3aWxsIGJlIGFsc28gdXBkYXRlZCB0byBzdXBwb3J0IHRoaXMgbmV3IHNpZ2luZm8uIFNvIHVzZXIKK2NhbiBnZXQgdmlvbGF0aW9uIGFkZHJlc3MgYW5kIGJvdW5kcyB3aGVuIGJvdW5kcyB2aW9sYXRpb25zIG9jY3VyLgorCitDbGVhbnVwIHVudXNlZCBib3VuZHMgdGFibGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doZW4gYSBCTkRTVFggaW5zdHJ1Y3Rpb24gYXR0ZW1wdHMgdG8gc2F2ZSBib3VuZHMgdG8gYSBib3VuZHMgZGlyZWN0b3J5CitlbnRyeSBtYXJrZWQgYXMgaW52YWxpZCwgYSAjQlIgaXMgZ2VuZXJhdGVkLiBUaGlzIGlzIGFuIGluZGljYXRpb24gdGhhdAorbm8gYm91bmRzIHRhYmxlIGV4aXN0cyBmb3IgdGhpcyBlbnRyeS4gSW4gdGhpcyBjYXNlIHRoZSBmYXVsdCBoYW5kbGVyCit3aWxsIGFsbG9jYXRlIGEgbmV3IGJvdW5kcyB0YWJsZSBvbiBkZW1hbmQuCisKK1NpbmNlIHRoZSBrZXJuZWwgYWxsb2NhdGVkIHRob3NlIHRhYmxlcyBvbi1kZW1hbmQgd2l0aG91dCB1c2Vyc3BhY2UKK2tub3dsZWRnZSwgaXQgaXMgYWxzbyByZXNwb25zaWJsZSBmb3IgZnJlZWluZyB0aGVtIHdoZW4gdGhlIGFzc29jaWF0ZWQKK21hcHBpbmdzIGdvIGF3YXkuCisKK0hlcmUsIHRoZSBzb2x1dGlvbiBmb3IgdGhpcyBpc3N1ZSBpcyB0byBob29rIGRvX211bm1hcCgpIHRvIGNoZWNrCit3aGV0aGVyIG9uZSBwcm9jZXNzIGlzIE1QWCBlbmFibGVkLiBJZiB5ZXMsIHRob3NlIGJvdW5kcyB0YWJsZXMgY292ZXJlZAoraW4gdGhlIHZpcnR1YWwgYWRkcmVzcyByZWdpb24gd2hpY2ggaXMgYmVpbmcgdW5tYXBwZWQgd2lsbCBiZSBmcmVlZCBhbHNvLgorCitBZGRpbmcgbmV3IHByY3RsIGNvbW1hbmRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1R3byBuZXcgcHJjdGwgY29tbWFuZHMgYXJlIGFkZGVkIHRvIGVuYWJsZSBhbmQgZGlzYWJsZSBNUFggYm91bmRzIHRhYmxlcworbWFuYWdlbWVudCBpbiBrZXJuZWwuCisKKzE1NQkjZGVmaW5lIFBSX01QWF9FTkFCTEVfTUFOQUdFTUVOVAk0MworMTU2CSNkZWZpbmUgUFJfTVBYX0RJU0FCTEVfTUFOQUdFTUVOVAk0NAorCitSdW50aW1lIGxpYnJhcnkgaW4gdXNlcnNwYWNlIGlzIHJlc3BvbnNpYmxlIGZvciBhbGxvY2F0aW9uIG9mIGJvdW5kcworZGlyZWN0b3J5LiBTbyBrZXJuZWwgaGF2ZSB0byB1c2UgWFNBVkUgaW5zdHJ1Y3Rpb24gdG8gZ2V0IHRoZSBiYXNlCitvZiBib3VuZHMgZGlyZWN0b3J5IGZyb20gQk5EQ0ZHIHJlZ2lzdGVyLgorCitCdXQgWFNBVkUgaXMgZXhwZWN0ZWQgdG8gYmUgdmVyeSBleHBlbnNpdmUuIEluIG9yZGVyIHRvIGRvIHBlcmZvcm1hbmNlCitvcHRpbWl6YXRpb24sIHdlIGhhdmUgdG8gZ2V0IHRoZSBiYXNlIG9mIGJvdW5kcyBkaXJlY3RvcnkgYW5kIHNhdmUgaXQKK2ludG8gc3RydWN0IG1tX3N0cnVjdCB0byBiZSB1c2VkIGluIGZ1dHVyZSBkdXJpbmcgUFJfTVBYX0VOQUJMRV9NQU5BR0VNRU5UCitjb21tYW5kIGV4ZWN1dGlvbi4KKworCis0LiBTcGVjaWFsIHJ1bGVzCis9PT09PT09PT09PT09PT09CisKKzEpIElmIHVzZXJzcGFjZSBpcyByZXF1ZXN0aW5nIGhlbHAgZnJvbSB0aGUga2VybmVsIHRvIGRvIHRoZSBtYW5hZ2VtZW50CitvZiBib3VuZHMgdGFibGVzLCBpdCBtYXkgbm90IGNyZWF0ZSBvciBtb2RpZnkgZW50cmllcyBpbiB0aGUgYm91bmRzIGRpcmVjdG9yeS4KKworQ2VydGFpbmx5IHVzZXJzIGNhbiBhbGxvY2F0ZSBib3VuZHMgdGFibGVzIGFuZCBmb3JjaWJseSBwb2ludCB0aGUgYm91bmRzCitkaXJlY3RvcnkgYXQgdGhlbSB0aHJvdWdoIFhTQVZFIGluc3RydWN0aW9uLCBhbmQgdGhlbiBzZXQgdmFsaWQgYml0CitvZiBib3VuZHMgZW50cnkgdG8gaGF2ZSB0aGlzIGVudHJ5IHZhbGlkLiAgQnV0LCB0aGUga2VybmVsIHdpbGwgZGVjbGluZQordG8gYXNzaXN0IGluIG1hbmFnaW5nIHRoZXNlIHRhYmxlcy4KKworMikgVXNlcnNwYWNlIG1heSBub3QgdGFrZSBtdWx0aXBsZSBib3VuZHMgZGlyZWN0b3J5IGVudHJpZXMgYW5kIHBvaW50Cit0aGVtIGF0IHRoZSBzYW1lIGJvdW5kcyB0YWJsZS4KKworVGhpcyBpcyBhbGxvd2VkIGFyY2hpdGVjdHVyYWxseS4gIFNlZSBtb3JlIGluZm9ybWF0aW9uICJJbnRlbChSKSBBcmNoaXRlY3R1cmUKK0luc3RydWN0aW9uIFNldCBFeHRlbnNpb25zIFByb2dyYW1taW5nIFJlZmVyZW5jZSIgKDkuMy40KS4KKworSG93ZXZlciwgaWYgdXNlcnMgZGlkIHRoaXMsIHRoZSBrZXJuZWwgbWlnaHQgYmUgZm9vbGVkIGluIHRvIHVubWFwaW5nIGFuCitpbi11c2UgYm91bmRzIHRhYmxlIHNpbmNlIGl0IGRvZXMgbm90IHJlY29nbml6ZSBzaGFyaW5nLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi94ODYva2VybmVsLXN0YWNrcyBiL0RvY3VtZW50YXRpb24veDg2L2tlcm5lbC1zdGFja3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWEwYWE0ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24veDg2L2tlcm5lbC1zdGFja3MKQEAgLTAsMCArMSwxNDEgQEAKK0tlcm5lbCBzdGFja3Mgb24geDg2LTY0IGJpdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01vc3Qgb2YgdGhlIHRleHQgZnJvbSBLZWl0aCBPd2VucywgaGFja2VkIGJ5IEFLCisKK3g4Nl82NCBwYWdlIHNpemUgKFBBR0VfU0laRSkgaXMgNEsuCisKK0xpa2UgYWxsIG90aGVyIGFyY2hpdGVjdHVyZXMsIHg4Nl82NCBoYXMgYSBrZXJuZWwgc3RhY2sgZm9yIGV2ZXJ5CithY3RpdmUgdGhyZWFkLiAgVGhlc2UgdGhyZWFkIHN0YWNrcyBhcmUgVEhSRUFEX1NJWkUgKDIqUEFHRV9TSVpFKSBiaWcuCitUaGVzZSBzdGFja3MgY29udGFpbiB1c2VmdWwgZGF0YSBhcyBsb25nIGFzIGEgdGhyZWFkIGlzIGFsaXZlIG9yIGEKK3pvbWJpZS4gV2hpbGUgdGhlIHRocmVhZCBpcyBpbiB1c2VyIHNwYWNlIHRoZSBrZXJuZWwgc3RhY2sgaXMgZW1wdHkKK2V4Y2VwdCBmb3IgdGhlIHRocmVhZF9pbmZvIHN0cnVjdHVyZSBhdCB0aGUgYm90dG9tLgorCitJbiBhZGRpdGlvbiB0byB0aGUgcGVyIHRocmVhZCBzdGFja3MsIHRoZXJlIGFyZSBzcGVjaWFsaXplZCBzdGFja3MKK2Fzc29jaWF0ZWQgd2l0aCBlYWNoIENQVS4gIFRoZXNlIHN0YWNrcyBhcmUgb25seSB1c2VkIHdoaWxlIHRoZSBrZXJuZWwKK2lzIGluIGNvbnRyb2wgb24gdGhhdCBDUFU7IHdoZW4gYSBDUFUgcmV0dXJucyB0byB1c2VyIHNwYWNlIHRoZQorc3BlY2lhbGl6ZWQgc3RhY2tzIGNvbnRhaW4gbm8gdXNlZnVsIGRhdGEuICBUaGUgbWFpbiBDUFUgc3RhY2tzIGFyZToKKworKiBJbnRlcnJ1cHQgc3RhY2suICBJUlFfU1RBQ0tfU0laRQorCisgIFVzZWQgZm9yIGV4dGVybmFsIGhhcmR3YXJlIGludGVycnVwdHMuICBJZiB0aGlzIGlzIHRoZSBmaXJzdCBleHRlcm5hbAorICBoYXJkd2FyZSBpbnRlcnJ1cHQgKGkuZS4gbm90IGEgbmVzdGVkIGhhcmR3YXJlIGludGVycnVwdCkgdGhlbiB0aGUKKyAga2VybmVsIHN3aXRjaGVzIGZyb20gdGhlIGN1cnJlbnQgdGFzayB0byB0aGUgaW50ZXJydXB0IHN0YWNrLiAgTGlrZQorICB0aGUgc3BsaXQgdGhyZWFkIGFuZCBpbnRlcnJ1cHQgc3RhY2tzIG9uIGkzODYsIHRoaXMgZ2l2ZXMgbW9yZSByb29tCisgIGZvciBrZXJuZWwgaW50ZXJydXB0IHByb2Nlc3Npbmcgd2l0aG91dCBoYXZpbmcgdG8gaW5jcmVhc2UgdGhlIHNpemUKKyAgb2YgZXZlcnkgcGVyIHRocmVhZCBzdGFjay4KKworICBUaGUgaW50ZXJydXB0IHN0YWNrIGlzIGFsc28gdXNlZCB3aGVuIHByb2Nlc3NpbmcgYSBzb2Z0aXJxLgorCitTd2l0Y2hpbmcgdG8gdGhlIGtlcm5lbCBpbnRlcnJ1cHQgc3RhY2sgaXMgZG9uZSBieSBzb2Z0d2FyZSBiYXNlZCBvbiBhCitwZXIgQ1BVIGludGVycnVwdCBuZXN0IGNvdW50ZXIuIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgeDg2LTY0ICJJU1QiCitoYXJkd2FyZSBzdGFja3MgY2Fubm90IG5lc3Qgd2l0aG91dCByYWNlcy4KKworeDg2XzY0IGFsc28gaGFzIGEgZmVhdHVyZSB3aGljaCBpcyBub3QgYXZhaWxhYmxlIG9uIGkzODYsIHRoZSBhYmlsaXR5Cit0byBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byBhIG5ldyBzdGFjayBmb3IgZGVzaWduYXRlZCBldmVudHMgc3VjaCBhcworZG91YmxlIGZhdWx0IG9yIE5NSSwgd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIGhhbmRsZSB0aGVzZSB1bnVzdWFsCitldmVudHMgb24geDg2XzY0LiAgVGhpcyBmZWF0dXJlIGlzIGNhbGxlZCB0aGUgSW50ZXJydXB0IFN0YWNrIFRhYmxlCisoSVNUKS4gIFRoZXJlIGNhbiBiZSB1cCB0byA3IElTVCBlbnRyaWVzIHBlciBDUFUuIFRoZSBJU1QgY29kZSBpcyBhbgoraW5kZXggaW50byB0aGUgVGFzayBTdGF0ZSBTZWdtZW50IChUU1MpLiBUaGUgSVNUIGVudHJpZXMgaW4gdGhlIFRTUworcG9pbnQgdG8gZGVkaWNhdGVkIHN0YWNrczsgZWFjaCBzdGFjayBjYW4gYmUgYSBkaWZmZXJlbnQgc2l6ZS4KKworQW4gSVNUIGlzIHNlbGVjdGVkIGJ5IGEgbm9uLXplcm8gdmFsdWUgaW4gdGhlIElTVCBmaWVsZCBvZiBhbgoraW50ZXJydXB0LWdhdGUgZGVzY3JpcHRvci4gIFdoZW4gYW4gaW50ZXJydXB0IG9jY3VycyBhbmQgdGhlIGhhcmR3YXJlCitsb2FkcyBzdWNoIGEgZGVzY3JpcHRvciwgdGhlIGhhcmR3YXJlIGF1dG9tYXRpY2FsbHkgc2V0cyB0aGUgbmV3IHN0YWNrCitwb2ludGVyIGJhc2VkIG9uIHRoZSBJU1QgdmFsdWUsIHRoZW4gaW52b2tlcyB0aGUgaW50ZXJydXB0IGhhbmRsZXIuICBJZgordGhlIGludGVycnVwdCBjYW1lIGZyb20gdXNlciBtb2RlLCB0aGVuIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBwcm9sb2d1ZQord2lsbCBzd2l0Y2ggYmFjayB0byB0aGUgcGVyLXRocmVhZCBzdGFjay4gIElmIHNvZnR3YXJlIHdhbnRzIHRvIGFsbG93CituZXN0ZWQgSVNUIGludGVycnVwdHMgdGhlbiB0aGUgaGFuZGxlciBtdXN0IGFkanVzdCB0aGUgSVNUIHZhbHVlcyBvbgorZW50cnkgdG8gYW5kIGV4aXQgZnJvbSB0aGUgaW50ZXJydXB0IGhhbmRsZXIuICAoVGhpcyBpcyBvY2Nhc2lvbmFsbHkKK2RvbmUsIGUuZy4gZm9yIGRlYnVnIGV4Y2VwdGlvbnMuKQorCitFdmVudHMgd2l0aCBkaWZmZXJlbnQgSVNUIGNvZGVzIChpLmUuIHdpdGggZGlmZmVyZW50IHN0YWNrcykgY2FuIGJlCituZXN0ZWQuICBGb3IgZXhhbXBsZSwgYSBkZWJ1ZyBpbnRlcnJ1cHQgY2FuIHNhZmVseSBiZSBpbnRlcnJ1cHRlZCBieSBhbgorTk1JLiAgYXJjaC94ODZfNjQva2VybmVsL2VudHJ5LlM6OnBhcmFub2lkZW50cnkgYWRqdXN0cyB0aGUgc3RhY2sKK3BvaW50ZXJzIG9uIGVudHJ5IHRvIGFuZCBleGl0IGZyb20gYWxsIElTVCBldmVudHMsIGluIHRoZW9yeSBhbGxvd2luZworSVNUIGV2ZW50cyB3aXRoIHRoZSBzYW1lIGNvZGUgdG8gYmUgbmVzdGVkLiAgSG93ZXZlciBpbiBtb3N0IGNhc2VzLCB0aGUKK3N0YWNrIHNpemUgYWxsb2NhdGVkIHRvIGFuIElTVCBhc3N1bWVzIG5vIG5lc3RpbmcgZm9yIHRoZSBzYW1lIGNvZGUuCitJZiB0aGF0IGFzc3VtcHRpb24gaXMgZXZlciBicm9rZW4gdGhlbiB0aGUgc3RhY2tzIHdpbGwgYmVjb21lIGNvcnJ1cHQuCisKK1RoZSBjdXJyZW50bHkgYXNzaWduZWQgSVNUIHN0YWNrcyBhcmUgOi0KKworKiBET1VCTEVGQVVMVF9TVEFDSy4gIEVYQ0VQVElPTl9TVEtTWiAoUEFHRV9TSVpFKS4KKworICBVc2VkIGZvciBpbnRlcnJ1cHQgOCAtIERvdWJsZSBGYXVsdCBFeGNlcHRpb24gKCNERikuCisKKyAgSW52b2tlZCB3aGVuIGhhbmRsaW5nIG9uZSBleGNlcHRpb24gY2F1c2VzIGFub3RoZXIgZXhjZXB0aW9uLiBIYXBwZW5zCisgIHdoZW4gdGhlIGtlcm5lbCBpcyB2ZXJ5IGNvbmZ1c2VkIChlLmcuIGtlcm5lbCBzdGFjayBwb2ludGVyIGNvcnJ1cHQpLgorICBVc2luZyBhIHNlcGFyYXRlIHN0YWNrIGFsbG93cyB0aGUga2VybmVsIHRvIHJlY292ZXIgZnJvbSBpdCB3ZWxsIGVub3VnaAorICBpbiBtYW55IGNhc2VzIHRvIHN0aWxsIG91dHB1dCBhbiBvb3BzLgorCisqIE5NSV9TVEFDSy4gIEVYQ0VQVElPTl9TVEtTWiAoUEFHRV9TSVpFKS4KKworICBVc2VkIGZvciBub24tbWFza2FibGUgaW50ZXJydXB0cyAoTk1JKS4KKworICBOTUkgY2FuIGJlIGRlbGl2ZXJlZCBhdCBhbnkgdGltZSwgaW5jbHVkaW5nIHdoZW4gdGhlIGtlcm5lbCBpcyBpbiB0aGUKKyAgbWlkZGxlIG9mIHN3aXRjaGluZyBzdGFja3MuICBVc2luZyBJU1QgZm9yIE5NSSBldmVudHMgYXZvaWRzIG1ha2luZworICBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcHJldmlvdXMgc3RhdGUgb2YgdGhlIGtlcm5lbCBzdGFjay4KKworKiBERUJVR19TVEFDSy4gIERFQlVHX1NUS1NaCisKKyAgVXNlZCBmb3IgaGFyZHdhcmUgZGVidWcgaW50ZXJydXB0cyAoaW50ZXJydXB0IDEpIGFuZCBmb3Igc29mdHdhcmUKKyAgZGVidWcgaW50ZXJydXB0cyAoSU5UMykuCisKKyAgV2hlbiBkZWJ1Z2dpbmcgYSBrZXJuZWwsIGRlYnVnIGludGVycnVwdHMgKGJvdGggaGFyZHdhcmUgYW5kCisgIHNvZnR3YXJlKSBjYW4gb2NjdXIgYXQgYW55IHRpbWUuICBVc2luZyBJU1QgZm9yIHRoZXNlIGludGVycnVwdHMKKyAgYXZvaWRzIG1ha2luZyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcHJldmlvdXMgc3RhdGUgb2YgdGhlIGtlcm5lbAorICBzdGFjay4KKworKiBNQ0VfU1RBQ0suICBFWENFUFRJT05fU1RLU1ogKFBBR0VfU0laRSkuCisKKyAgVXNlZCBmb3IgaW50ZXJydXB0IDE4IC0gTWFjaGluZSBDaGVjayBFeGNlcHRpb24gKCNNQykuCisKKyAgTUNFIGNhbiBiZSBkZWxpdmVyZWQgYXQgYW55IHRpbWUsIGluY2x1ZGluZyB3aGVuIHRoZSBrZXJuZWwgaXMgaW4gdGhlCisgIG1pZGRsZSBvZiBzd2l0Y2hpbmcgc3RhY2tzLiAgVXNpbmcgSVNUIGZvciBNQ0UgZXZlbnRzIGF2b2lkcyBtYWtpbmcKKyAgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHByZXZpb3VzIHN0YXRlIG9mIHRoZSBrZXJuZWwgc3RhY2suCisKK0ZvciBtb3JlIGRldGFpbHMgc2VlIHRoZSBJbnRlbCBJQTMyIG9yIEFNRCBBTUQ2NCBhcmNoaXRlY3R1cmUgbWFudWFscy4KKworCitQcmludGluZyBiYWNrdHJhY2VzIG9uIHg4NgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHF1ZXN0aW9uIGFib3V0IHRoZSAnPycgcHJlY2VkaW5nIGZ1bmN0aW9uIG5hbWVzIGluIGFuIHg4NiBzdGFja3RyYWNlCitrZWVwcyBwb3BwaW5nIHVwLCBoZXJlJ3MgYW4gaW5kZXB0aCBleHBsYW5hdGlvbi4gSXQgaGVscHMgaWYgdGhlIHJlYWRlcgorc3RhcmVzIGF0IHByaW50X2NvbnRleHRfc3RhY2soKSBhbmQgdGhlIHdob2xlIG1hY2hpbmVyeSBpbiBhbmQgYXJvdW5kCithcmNoL3g4Ni9rZXJuZWwvZHVtcHN0YWNrLmMuCisKK0FkYXB0ZWQgZnJvbSBJbmdvJ3MgbWFpbCwgTWVzc2FnZS1JRDogPDIwMTUwNTIxMTAxNjE0LkdBMTA4ODlAZ21haWwuY29tPjoKKworV2UgYWx3YXlzIHNjYW4gdGhlIGZ1bGwga2VybmVsIHN0YWNrIGZvciByZXR1cm4gYWRkcmVzc2VzIHN0b3JlZCBvbgordGhlIGtlcm5lbCBzdGFjayhzKSBbKl0sIGZyb20gc3RhY2sgdG9wIHRvIHN0YWNrIGJvdHRvbSwgYW5kIHByaW50IG91dAorYW55dGhpbmcgdGhhdCAnbG9va3MgbGlrZScgYSBrZXJuZWwgdGV4dCBhZGRyZXNzLgorCitJZiBpdCBmaXRzIGludG8gdGhlIGZyYW1lIHBvaW50ZXIgY2hhaW4sIHdlIHByaW50IGl0IHdpdGhvdXQgYSBxdWVzdGlvbgorbWFyaywga25vd2luZyB0aGF0IGl0J3MgcGFydCBvZiB0aGUgcmVhbCBiYWNrdHJhY2UuCisKK0lmIHRoZSBhZGRyZXNzIGRvZXMgbm90IGZpdCBpbnRvIG91ciBleHBlY3RlZCBmcmFtZSBwb2ludGVyIGNoYWluIHdlCitzdGlsbCBwcmludCBpdCwgYnV0IHdlIHByaW50IGEgJz8nLiBJdCBjYW4gbWVhbiB0d28gdGhpbmdzOgorCisgLSBlaXRoZXIgdGhlIGFkZHJlc3MgaXMgbm90IHBhcnQgb2YgdGhlIGNhbGwgY2hhaW46IGl0J3MganVzdCBzdGFsZQorICAgdmFsdWVzIG9uIHRoZSBrZXJuZWwgc3RhY2ssIGZyb20gZWFybGllciBmdW5jdGlvbiBjYWxscy4gVGhpcyBpcworICAgdGhlIGNvbW1vbiBjYXNlLgorCisgLSBvciBpdCBpcyBwYXJ0IG9mIHRoZSBjYWxsIGNoYWluLCBidXQgdGhlIGZyYW1lIHBvaW50ZXIgd2FzIG5vdCBzZXQKKyAgIHVwIHByb3Blcmx5IHdpdGhpbiB0aGUgZnVuY3Rpb24sIHNvIHdlIGRvbid0IHJlY29nbml6ZSBpdC4KKworVGhpcyB3YXkgd2Ugd2lsbCBhbHdheXMgcHJpbnQgb3V0IHRoZSByZWFsIGNhbGwgY2hhaW4gKHBsdXMgYSBmZXcgbW9yZQorZW50cmllcyksIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgZnJhbWUgcG9pbnRlciB3YXMgc2V0IHVwIGNvcnJlY3RseQorb3Igbm90IC0gYnV0IGluIG1vc3QgY2FzZXMgd2UnbGwgZ2V0IHRoZSBjYWxsIGNoYWluIHJpZ2h0IGFzIHdlbGwuIFRoZQorZW50cmllcyBwcmludGVkIGFyZSBzdHJpY3RseSBpbiBzdGFjayBvcmRlciwgc28geW91IGNhbiBkZWR1Y2UgbW9yZQoraW5mb3JtYXRpb24gZnJvbSB0aGF0IGFzIHdlbGwuCisKK1RoZSBtb3N0IGltcG9ydGFudCBwcm9wZXJ0eSBvZiB0aGlzIG1ldGhvZCBpcyB0aGF0IHdlIF9uZXZlcl8gbG9zZQoraW5mb3JtYXRpb246IHdlIGFsd2F5cyBzdHJpdmUgdG8gcHJpbnQgX2FsbF8gYWRkcmVzc2VzIG9uIHRoZSBzdGFjayhzKQordGhhdCBsb29rIGxpa2Uga2VybmVsIHRleHQgYWRkcmVzc2VzLCBzbyBpZiBkZWJ1ZyBpbmZvcm1hdGlvbiBpcyB3cm9uZywKK3dlIHN0aWxsIHByaW50IG91dCB0aGUgcmVhbCBjYWxsIGNoYWluIGFzIHdlbGwgLSBqdXN0IHdpdGggbW9yZSBxdWVzdGlvbgorbWFya3MgdGhhbiBpZGVhbC4KKworWypdIEZvciB0aGluZ3MgbGlrZSBJUlEgYW5kIElTVCBzdGFja3MsIHdlIGFsc28gc2NhbiB0aG9zZSBzdGFja3MsIGluCisgICAgdGhlIHJpZ2h0IG9yZGVyLCBhbmQgdHJ5IHRvIGNyb3NzIGZyb20gb25lIHN0YWNrIGludG8gYW5vdGhlcgorICAgIHJlY29uc3RydWN0aW5nIHRoZSBjYWxsIGNoYWluLiBUaGlzIHdvcmtzIG1vc3Qgb2YgdGhlIHRpbWUuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3g4Ni9tdHJyLnR4dCBiL0RvY3VtZW50YXRpb24veDg2L210cnIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjM2U3MDMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3g4Ni9tdHJyLnR4dApAQCAtMCwwICsxLDMyOSBAQAorTVRSUiAoTWVtb3J5IFR5cGUgUmFuZ2UgUmVnaXN0ZXIpIGNvbnRyb2wKKworUmljaGFyZCBHb29jaCA8cmdvb2NoQGF0bmYuY3Npcm8uYXU+IC0gMyBKdW4gMTk5OQorTHVpcyBSLiBSb2RyaWd1ZXogPG1jZ3JvZkBkby1ub3QtcGFuaWMuY29tPiAtIEFwcmlsIDksIDIwMTUKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUGhhc2luZyBvdXQgTVRSUiB1c2UKKworTVRSUiB1c2UgaXMgcmVwbGFjZWQgb24gbW9kZXJuIHg4NiBoYXJkd2FyZSB3aXRoIFBBVC4gRGlyZWN0IE1UUlIgdXNlIGJ5Citkcml2ZXJzIG9uIExpbnV4IGlzIG5vdyBjb21wbGV0ZWx5IHBoYXNlZCBvdXQsIGRldmljZSBkcml2ZXJzIHNob3VsZCB1c2UKK2FyY2hfcGh5c193Y19hZGQoKSBpbiBjb21iaW5hdGlvbiB3aXRoIGlvcmVtYXBfd2MoKSB0byBtYWtlIE1UUlIgZWZmZWN0aXZlIG9uCitub24tUEFUIHN5c3RlbXMgd2hpbGUgYSBuby1vcCBidXQgZXF1YWxseSBlZmZlY3RpdmUgb24gUEFUIGVuYWJsZWQgc3lzdGVtcy4KKworRXZlbiBpZiBMaW51eCBkb2VzIG5vdCB1c2UgTVRSUnMgZGlyZWN0bHksIHNvbWUgeDg2IHBsYXRmb3JtIGZpcm13YXJlIG1heSBzdGlsbAorc2V0IHVwIE1UUlJzIGVhcmx5IGJlZm9yZSBib290aW5nIHRoZSBPUy4gVGhleSBkbyB0aGlzIGFzIHNvbWUgcGxhdGZvcm0KK2Zpcm13YXJlIG1heSBzdGlsbCBoYXZlIGltcGxlbWVudGVkIGFjY2VzcyB0byBNVFJScyB3aGljaCB3b3VsZCBiZSBjb250cm9sbGVkCithbmQgaGFuZGxlZCBieSB0aGUgcGxhdGZvcm0gZmlybXdhcmUgZGlyZWN0bHkuIEFuIGV4YW1wbGUgb2YgcGxhdGZvcm0gdXNlIG9mCitNVFJScyBpcyB0aHJvdWdoIHRoZSB1c2Ugb2YgU01JIGhhbmRsZXJzLCBvbmUgY2FzZSBjb3VsZCBiZSBmb3IgZmFuIGNvbnRyb2wsCit0aGUgcGxhdGZvcm0gY29kZSB3b3VsZCBuZWVkIHVuY2FjaGFibGUgYWNjZXNzIHRvIHNvbWUgb2YgaXRzIGZhbiBjb250cm9sCityZWdpc3RlcnMuIFN1Y2ggcGxhdGZvcm0gYWNjZXNzIGRvZXMgbm90IG5lZWQgYW55IE9wZXJhdGluZyBTeXN0ZW0gTVRSUiBjb2RlIGluCitwbGFjZSBvdGhlciB0aGFuIG10cnJfdHlwZV9sb29rdXAoKSB0byBlbnN1cmUgYW55IE9TIHNwZWNpZmljIG1hcHBpbmcgcmVxdWVzdHMKK2FyZSBhbGlnbmVkIHdpdGggcGxhdGZvcm0gTVRSUiBzZXR1cC4gSWYgTVRSUnMgYXJlIG9ubHkgc2V0IHVwIGJ5IHRoZSBwbGF0Zm9ybQorZmlybXdhcmUgY29kZSB0aG91Z2ggYW5kIHRoZSBPUyBkb2VzIG5vdCBtYWtlIGFueSBzcGVjaWZpYyBNVFJSIG1hcHBpbmcKK3JlcXVlc3RzIG10cnJfdHlwZV9sb29rdXAoKSBzaG91bGQgYWx3YXlzIHJldHVybiBNVFJSX1RZUEVfSU5WQUxJRC4KKworRm9yIGRldGFpbHMgcmVmZXIgdG8gRG9jdW1lbnRhdGlvbi94ODYvcGF0LnR4dC4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgIE9uIEludGVsIFA2IGZhbWlseSBwcm9jZXNzb3JzIChQZW50aXVtIFBybywgUGVudGl1bSBJSSBhbmQgbGF0ZXIpCisgIHRoZSBNZW1vcnkgVHlwZSBSYW5nZSBSZWdpc3RlcnMgKE1UUlJzKSBtYXkgYmUgdXNlZCB0byBjb250cm9sCisgIHByb2Nlc3NvciBhY2Nlc3MgdG8gbWVtb3J5IHJhbmdlcy4gVGhpcyBpcyBtb3N0IHVzZWZ1bCB3aGVuIHlvdSBoYXZlCisgIGEgdmlkZW8gKFZHQSkgY2FyZCBvbiBhIFBDSSBvciBBR1AgYnVzLiBFbmFibGluZyB3cml0ZS1jb21iaW5pbmcKKyAgYWxsb3dzIGJ1cyB3cml0ZSB0cmFuc2ZlcnMgdG8gYmUgY29tYmluZWQgaW50byBhIGxhcmdlciB0cmFuc2ZlcgorICBiZWZvcmUgYnVyc3Rpbmcgb3ZlciB0aGUgUENJL0FHUCBidXMuIFRoaXMgY2FuIGluY3JlYXNlIHBlcmZvcm1hbmNlCisgIG9mIGltYWdlIHdyaXRlIG9wZXJhdGlvbnMgMi41IHRpbWVzIG9yIG1vcmUuCisKKyAgVGhlIEN5cml4IDZ4ODYsIDZ4ODZNWCBhbmQgTSBJSSBwcm9jZXNzb3JzIGhhdmUgQWRkcmVzcyBSYW5nZQorICBSZWdpc3RlcnMgKEFSUnMpIHdoaWNoIHByb3ZpZGUgYSBzaW1pbGFyIGZ1bmN0aW9uYWxpdHkgdG8gTVRSUnMuIEZvcgorICB0aGVzZSwgdGhlIEFSUnMgYXJlIHVzZWQgdG8gZW11bGF0ZSB0aGUgTVRSUnMuCisKKyAgVGhlIEFNRCBLNi0yIChzdGVwcGluZyA4IGFuZCBhYm92ZSkgYW5kIEs2LTMgcHJvY2Vzc29ycyBoYXZlIHR3bworICBNVFJScy4gVGhlc2UgYXJlIHN1cHBvcnRlZC4gIFRoZSBBTUQgQXRobG9uIGZhbWlseSBwcm92aWRlIDggSW50ZWwKKyAgc3R5bGUgTVRSUnMuCisKKyAgVGhlIENlbnRhdXIgQzYgKFdpbkNoaXApIGhhcyA4IE1DUnMsIGFsbG93aW5nIHdyaXRlLWNvbWJpbmluZy4gVGhlc2UKKyAgYXJlIHN1cHBvcnRlZC4KKworICBUaGUgVklBIEN5cml4IElJSSBhbmQgVklBIEMzIENQVXMgb2ZmZXIgOCBJbnRlbCBzdHlsZSBNVFJScy4KKworICBUaGUgQ09ORklHX01UUlIgb3B0aW9uIGNyZWF0ZXMgYSAvcHJvYy9tdHJyIGZpbGUgd2hpY2ggbWF5IGJlIHVzZWQKKyAgdG8gbWFuaXB1bGF0ZSB5b3VyIE1UUlJzLiBUeXBpY2FsbHkgdGhlIFggc2VydmVyIHNob3VsZCB1c2UKKyAgdGhpcy4gVGhpcyBzaG91bGQgaGF2ZSBhIHJlYXNvbmFibHkgZ2VuZXJpYyBpbnRlcmZhY2Ugc28gdGhhdAorICBzaW1pbGFyIGNvbnRyb2wgcmVnaXN0ZXJzIG9uIG90aGVyIHByb2Nlc3NvcnMgY2FuIGJlIGVhc2lseQorICBzdXBwb3J0ZWQuCisKKworVGhlcmUgYXJlIHR3byBpbnRlcmZhY2VzIHRvIC9wcm9jL210cnI6IG9uZSBpcyBhbiBBU0NJSSBpbnRlcmZhY2UKK3doaWNoIGFsbG93cyB5b3UgdG8gcmVhZCBhbmQgd3JpdGUuIFRoZSBvdGhlciBpcyBhbiBpb2N0bCgpCitpbnRlcmZhY2UuIFRoZSBBU0NJSSBpbnRlcmZhY2UgaXMgbWVhbnQgZm9yIGFkbWluaXN0cmF0aW9uLiBUaGUKK2lvY3RsKCkgaW50ZXJmYWNlIGlzIG1lYW50IGZvciBDIHByb2dyYW1zIChpLmUuIHRoZSBYIHNlcnZlcikuIFRoZQoraW50ZXJmYWNlcyBhcmUgZGVzY3JpYmVkIGJlbG93LCB3aXRoIHNhbXBsZSBjb21tYW5kcyBhbmQgQyBjb2RlLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitSZWFkaW5nIE1UUlJzIGZyb20gdGhlIHNoZWxsOgorCislIGNhdCAvcHJvYy9tdHJyCityZWcwMDogYmFzZT0weDAwMDAwMDAwICggICAwTUIpLCBzaXplPSAxMjhNQjogd3JpdGUtYmFjaywgY291bnQ9MQorcmVnMDE6IGJhc2U9MHgwODAwMDAwMCAoIDEyOE1CKSwgc2l6ZT0gIDY0TUI6IHdyaXRlLWJhY2ssIGNvdW50PTEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NyZWF0aW5nIE1UUlJzIGZyb20gdGhlIEMtc2hlbGw6CisjIGVjaG8gImJhc2U9MHhmODAwMDAwMCBzaXplPTB4NDAwMDAwIHR5cGU9d3JpdGUtY29tYmluaW5nIiA+ISAvcHJvYy9tdHJyCitvciBpZiB5b3UgdXNlIGJhc2g6CisjIGVjaG8gImJhc2U9MHhmODAwMDAwMCBzaXplPTB4NDAwMDAwIHR5cGU9d3JpdGUtY29tYmluaW5nIiA+fCAvcHJvYy9tdHJyCisKK0FuZCB0aGUgcmVzdWx0IHRoZXJlb2Y6CislIGNhdCAvcHJvYy9tdHJyCityZWcwMDogYmFzZT0weDAwMDAwMDAwICggICAwTUIpLCBzaXplPSAxMjhNQjogd3JpdGUtYmFjaywgY291bnQ9MQorcmVnMDE6IGJhc2U9MHgwODAwMDAwMCAoIDEyOE1CKSwgc2l6ZT0gIDY0TUI6IHdyaXRlLWJhY2ssIGNvdW50PTEKK3JlZzAyOiBiYXNlPTB4ZjgwMDAwMDAgKDM5NjhNQiksIHNpemU9ICAgNE1COiB3cml0ZS1jb21iaW5pbmcsIGNvdW50PTEKKworVGhpcyBpcyBmb3IgdmlkZW8gUkFNIGF0IGJhc2UgYWRkcmVzcyAweGY4MDAwMDAwIGFuZCBzaXplIDQgbWVnYWJ5dGVzLiBUbworZmluZCBvdXQgeW91ciBiYXNlIGFkZHJlc3MsIHlvdSBuZWVkIHRvIGxvb2sgYXQgdGhlIG91dHB1dCBvZiB5b3VyIFgKK3NlcnZlciwgd2hpY2ggdGVsbHMgeW91IHdoZXJlIHRoZSBsaW5lYXIgZnJhbWVidWZmZXIgYWRkcmVzcyBpcy4gQQordHlwaWNhbCBsaW5lIHRoYXQgeW91IG1heSBnZXQgaXM6CisKKygtLSkgUzM6IFBDSTogOTY4IHJldiAwLCBMaW5lYXIgRkIgQCAweGY4MDAwMDAwCisKK05vdGUgdGhhdCB5b3Ugc2hvdWxkIG9ubHkgdXNlIHRoZSB2YWx1ZSBmcm9tIHRoZSBYIHNlcnZlciwgYXMgaXQgbWF5Cittb3ZlIHRoZSBmcmFtZWJ1ZmZlciBiYXNlIGFkZHJlc3MsIHNvIHRoZSBvbmx5IHZhbHVlIHlvdSBjYW4gdHJ1c3QgaXMKK3RoYXQgcmVwb3J0ZWQgYnkgdGhlIFggc2VydmVyLgorCitUbyBmaW5kIG91dCB0aGUgc2l6ZSBvZiB5b3VyIGZyYW1lYnVmZmVyICh3aGF0LCB5b3UgZG9uJ3QgYWN0dWFsbHkKK2tub3c/KSwgdGhlIGZvbGxvd2luZyBsaW5lIHdpbGwgdGVsbCB5b3U6CisKKygtLSkgUzM6IHZpZGVvcmFtOiAgNDA5NmsKKworVGhhdCdzIDQgbWVnYWJ5dGVzLCB3aGljaCBpcyAweDQwMDAwMCBieXRlcyAoaW4gaGV4YWRlY2ltYWwpLgorQSBwYXRjaCBpcyBiZWluZyB3cml0dGVuIGZvciBYRnJlZTg2IHdoaWNoIHdpbGwgbWFrZSB0aGlzIGF1dG9tYXRpYzoKK2luIG90aGVyIHdvcmRzIHRoZSBYIHNlcnZlciB3aWxsIG1hbmlwdWxhdGUgL3Byb2MvbXRyciB1c2luZyB0aGUKK2lvY3RsKCkgaW50ZXJmYWNlLCBzbyB1c2VycyB3b24ndCBoYXZlIHRvIGRvIGFueXRoaW5nLiBJZiB5b3UgdXNlIGEKK2NvbW1lcmNpYWwgWCBzZXJ2ZXIsIGxvYmJ5IHlvdXIgdmVuZG9yIHRvIGFkZCBzdXBwb3J0IGZvciBNVFJScy4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NyZWF0aW5nIG92ZXJsYXBwaW5nIE1UUlJzOgorCislZWNobyAiYmFzZT0weGZiMDAwMDAwIHNpemU9MHgxMDAwMDAwIHR5cGU9d3JpdGUtY29tYmluaW5nIiA+L3Byb2MvbXRycgorJWVjaG8gImJhc2U9MHhmYjAwMDAwMCBzaXplPTB4MTAwMCB0eXBlPXVuY2FjaGFibGUiID4vcHJvYy9tdHJyCisKK0FuZCB0aGUgcmVzdWx0czogY2F0IC9wcm9jL210cnIKK3JlZzAwOiBiYXNlPTB4MDAwMDAwMDAgKCAgIDBNQiksIHNpemU9ICA2NE1COiB3cml0ZS1iYWNrLCBjb3VudD0xCityZWcwMTogYmFzZT0weGZiMDAwMDAwICg0MDE2TUIpLCBzaXplPSAgMTZNQjogd3JpdGUtY29tYmluaW5nLCBjb3VudD0xCityZWcwMjogYmFzZT0weGZiMDAwMDAwICg0MDE2TUIpLCBzaXplPSAgIDRrQjogdW5jYWNoYWJsZSwgY291bnQ9MQorCitTb21lIGNhcmRzIChlc3BlY2lhbGx5IFZvb2RvbyBHcmFwaGljcyBib2FyZHMpIG5lZWQgdGhpcyA0IGtCIGFyZWEKK2V4Y2x1ZGVkIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgcmVnaW9uIGJlY2F1c2UgaXQgaXMgdXNlZCBmb3IKK3JlZ2lzdGVycy4KKworTk9URTogWW91IGNhbiBvbmx5IGNyZWF0ZSB0eXBlPXVuY2FjaGFibGUgcmVnaW9uLCBpZiB0aGUgZmlyc3QKK3JlZ2lvbiB0aGF0IHlvdSBjcmVhdGVkIGlzIHR5cGU9d3JpdGUtY29tYmluaW5nLgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUmVtb3ZpbmcgTVRSUnMgZnJvbSB0aGUgQy1zaGVsbDoKKyUgZWNobyAiZGlzYWJsZT0yIiA+ISAvcHJvYy9tdHJyCitvciB1c2luZyBiYXNoOgorJSBlY2hvICJkaXNhYmxlPTIiID58IC9wcm9jL210cnIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1JlYWRpbmcgTVRSUnMgZnJvbSBhIEMgcHJvZ3JhbSB1c2luZyBpb2N0bCgpJ3M6CisKKy8qICBtdHJyLXNob3cuYworCisgICAgU291cmNlIGZpbGUgZm9yIG10cnItc2hvdyAoZXhhbXBsZSBwcm9ncmFtIHRvIHNob3cgTVRSUnMgdXNpbmcgaW9jdGwoKSdzKQorCisgICAgQ29weXJpZ2h0IChDKSAxOTk3LTE5OTggIFJpY2hhcmQgR29vY2gKKworICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorCisgICAgUmljaGFyZCBHb29jaCBtYXkgYmUgcmVhY2hlZCBieSBlbWFpbCBhdCAgcmdvb2NoQGF0bmYuY3Npcm8uYXUKKyAgICBUaGUgcG9zdGFsIGFkZHJlc3MgaXM6CisgICAgICBSaWNoYXJkIEdvb2NoLCBjL28gQVRORiwgUC4gTy4gQm94IDc2LCBFcHBpbmcsIE4uUy5XLiwgMjEyMSwgQXVzdHJhbGlhLgorKi8KKworLyoKKyAgICBUaGlzIHByb2dyYW0gd2lsbCB1c2UgYW4gaW9jdGwoKSBvbiAvcHJvYy9tdHJyIHRvIHNob3cgdGhlIGN1cnJlbnQgTVRSUgorICAgIHNldHRpbmdzLiBUaGlzIGlzIGFuIGFsdGVybmF0aXZlIHRvIHJlYWRpbmcgL3Byb2MvbXRyci4KKworCisgICAgV3JpdHRlbiBieSAgICAgIFJpY2hhcmQgR29vY2ggICAxNy1ERUMtMTk5NworCisgICAgTGFzdCB1cGRhdGVkIGJ5IFJpY2hhcmQgR29vY2ggICAyLU1BWS0xOTk4CisKKworKi8KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGFzbS9tdHJyLmg+CisKKyNkZWZpbmUgVFJVRSAxCisjZGVmaW5lIEZBTFNFIDAKKyNkZWZpbmUgRVJSU1RSSU5HIHN0cmVycm9yIChlcnJubykKKworc3RhdGljIGNoYXIgKm10cnJfc3RyaW5nc1tNVFJSX05VTV9UWVBFU10gPQoreworICAgICJ1bmNhY2hhYmxlIiwgICAgICAgICAgICAgICAvKiAwICovCisgICAgIndyaXRlLWNvbWJpbmluZyIsICAgICAgICAgIC8qIDEgKi8KKyAgICAiPyIsICAgICAgICAgICAgICAgICAgICAgICAgLyogMiAqLworICAgICI/IiwgICAgICAgICAgICAgICAgICAgICAgICAvKiAzICovCisgICAgIndyaXRlLXRocm91Z2giLCAgICAgICAgICAgIC8qIDQgKi8KKyAgICAid3JpdGUtcHJvdGVjdCIsICAgICAgICAgICAgLyogNSAqLworICAgICJ3cml0ZS1iYWNrIiwgICAgICAgICAgICAgICAvKiA2ICovCit9OworCitpbnQgbWFpbiAoKQoreworICAgIGludCBmZDsKKyAgICBzdHJ1Y3QgbXRycl9nZW50cnkgZ2VudHJ5OworCisgICAgaWYgKCAoIGZkID0gb3BlbiAoIi9wcm9jL210cnIiLCBPX1JET05MWSwgMCkgKSA9PSAtMSApCisgICAgeworCWlmIChlcnJubyA9PSBFTk9FTlQpCisJeworCSAgICBmcHV0cyAoIi9wcm9jL210cnIgbm90IGZvdW5kOiBub3Qgc3VwcG9ydGVkIG9yIHlvdSBkb24ndCBoYXZlIGEgUFBybz9cbiIsCisJCSAgIHN0ZGVycik7CisJICAgIGV4aXQgKDEpOworCX0KKwlmcHJpbnRmIChzdGRlcnIsICJFcnJvciBvcGVuaW5nIC9wcm9jL210cnJcdCVzXG4iLCBFUlJTVFJJTkcpOworCWV4aXQgKDIpOworICAgIH0KKyAgICBmb3IgKGdlbnRyeS5yZWdudW0gPSAwOyBpb2N0bCAoZmQsIE1UUlJJT0NfR0VUX0VOVFJZLCAmZ2VudHJ5KSA9PSAwOworCSArK2dlbnRyeS5yZWdudW0pCisgICAgeworCWlmIChnZW50cnkuc2l6ZSA8IDEpCisJeworCSAgICBmcHJpbnRmIChzdGRlcnIsICJSZWdpc3RlcjogJXUgZGlzYWJsZWRcbiIsIGdlbnRyeS5yZWdudW0pOworCSAgICBjb250aW51ZTsKKwl9CisJZnByaW50ZiAoc3RkZXJyLCAiUmVnaXN0ZXI6ICV1IGJhc2U6IDB4JWx4IHNpemU6IDB4JWx4IHR5cGU6ICVzXG4iLAorCQkgZ2VudHJ5LnJlZ251bSwgZ2VudHJ5LmJhc2UsIGdlbnRyeS5zaXplLAorCQkgbXRycl9zdHJpbmdzW2dlbnRyeS50eXBlXSk7CisgICAgfQorICAgIGlmIChlcnJubyA9PSBFSU5WQUwpIGV4aXQgKDApOworICAgIGZwcmludGYgKHN0ZGVyciwgIkVycm9yIGRvaW5nIGlvY3RsKDIpIG9uIC9kZXYvbXRyclx0JXNcbiIsIEVSUlNUUklORyk7CisgICAgZXhpdCAoMyk7Cit9ICAgLyogIEVuZCBGdW5jdGlvbiBtYWluICAqLworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ3JlYXRpbmcgTVRSUnMgZnJvbSBhIEMgcHJvZ3JhbW1lIHVzaW5nIGlvY3RsKCknczoKKworLyogIG10cnItYWRkLmMKKworICAgIFNvdXJjZSBmaWxlIGZvciBtdHJyLWFkZCAoZXhhbXBsZSBwcm9ncmFtbWUgdG8gYWRkIGFuIE1UUlJzIHVzaW5nIGlvY3RsKCkpCisKKyAgICBDb3B5cmlnaHQgKEMpIDE5OTctMTk5OCAgUmljaGFyZCBHb29jaAorCisgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisKKyAgICBSaWNoYXJkIEdvb2NoIG1heSBiZSByZWFjaGVkIGJ5IGVtYWlsIGF0ICByZ29vY2hAYXRuZi5jc2lyby5hdQorICAgIFRoZSBwb3N0YWwgYWRkcmVzcyBpczoKKyAgICAgIFJpY2hhcmQgR29vY2gsIGMvbyBBVE5GLCBQLiBPLiBCb3ggNzYsIEVwcGluZywgTi5TLlcuLCAyMTIxLCBBdXN0cmFsaWEuCisqLworCisvKgorICAgIFRoaXMgcHJvZ3JhbW1lIHdpbGwgdXNlIGFuIGlvY3RsKCkgb24gL3Byb2MvbXRyciB0byBhZGQgYW4gZW50cnkuIFRoZSBmaXJzdAorICAgIGF2YWlsYWJsZSBtdHJyIGlzIHVzZWQuIFRoaXMgaXMgYW4gYWx0ZXJuYXRpdmUgdG8gd3JpdGluZyAvcHJvYy9tdHJyLgorCisKKyAgICBXcml0dGVuIGJ5ICAgICAgUmljaGFyZCBHb29jaCAgIDE3LURFQy0xOTk3CisKKyAgICBMYXN0IHVwZGF0ZWQgYnkgUmljaGFyZCBHb29jaCAgIDItTUFZLTE5OTgKKworCisqLworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8YXNtL210cnIuaD4KKworI2RlZmluZSBUUlVFIDEKKyNkZWZpbmUgRkFMU0UgMAorI2RlZmluZSBFUlJTVFJJTkcgc3RyZXJyb3IgKGVycm5vKQorCitzdGF0aWMgY2hhciAqbXRycl9zdHJpbmdzW01UUlJfTlVNX1RZUEVTXSA9Cit7CisgICAgInVuY2FjaGFibGUiLCAgICAgICAgICAgICAgIC8qIDAgKi8KKyAgICAid3JpdGUtY29tYmluaW5nIiwgICAgICAgICAgLyogMSAqLworICAgICI/IiwgICAgICAgICAgICAgICAgICAgICAgICAvKiAyICovCisgICAgIj8iLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIDMgKi8KKyAgICAid3JpdGUtdGhyb3VnaCIsICAgICAgICAgICAgLyogNCAqLworICAgICJ3cml0ZS1wcm90ZWN0IiwgICAgICAgICAgICAvKiA1ICovCisgICAgIndyaXRlLWJhY2siLCAgICAgICAgICAgICAgIC8qIDYgKi8KK307CisKK2ludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgaW50IGZkOworICAgIHN0cnVjdCBtdHJyX3NlbnRyeSBzZW50cnk7CisKKyAgICBpZiAoYXJnYyAhPSA0KQorICAgIHsKKwlmcHJpbnRmIChzdGRlcnIsICJVc2FnZTpcdG10cnItYWRkIGJhc2Ugc2l6ZSB0eXBlXG4iKTsKKwlleGl0ICgxKTsKKyAgICB9CisgICAgc2VudHJ5LmJhc2UgPSBzdHJ0b3VsIChhcmd2WzFdLCBOVUxMLCAwKTsKKyAgICBzZW50cnkuc2l6ZSA9IHN0cnRvdWwgKGFyZ3ZbMl0sIE5VTEwsIDApOworICAgIGZvciAoc2VudHJ5LnR5cGUgPSAwOyBzZW50cnkudHlwZSA8IE1UUlJfTlVNX1RZUEVTOyArK3NlbnRyeS50eXBlKQorICAgIHsKKwlpZiAoc3RyY21wIChhcmd2WzNdLCBtdHJyX3N0cmluZ3Nbc2VudHJ5LnR5cGVdKSA9PSAwKSBicmVhazsKKyAgICB9CisgICAgaWYgKHNlbnRyeS50eXBlID49IE1UUlJfTlVNX1RZUEVTKQorICAgIHsKKwlmcHJpbnRmIChzdGRlcnIsICJJbGxlZ2FsIHR5cGU6IFwiJXNcIlxuIiwgYXJndlszXSk7CisJZXhpdCAoMik7CisgICAgfQorICAgIGlmICggKCBmZCA9IG9wZW4gKCIvcHJvYy9tdHJyIiwgT19XUk9OTFksIDApICkgPT0gLTEgKQorICAgIHsKKwlpZiAoZXJybm8gPT0gRU5PRU5UKQorCXsKKwkgICAgZnB1dHMgKCIvcHJvYy9tdHJyIG5vdCBmb3VuZDogbm90IHN1cHBvcnRlZCBvciB5b3UgZG9uJ3QgaGF2ZSBhIFBQcm8/XG4iLAorCQkgICBzdGRlcnIpOworCSAgICBleGl0ICgzKTsKKwl9CisJZnByaW50ZiAoc3RkZXJyLCAiRXJyb3Igb3BlbmluZyAvcHJvYy9tdHJyXHQlc1xuIiwgRVJSU1RSSU5HKTsKKwlleGl0ICg0KTsKKyAgICB9CisgICAgaWYgKGlvY3RsIChmZCwgTVRSUklPQ19BRERfRU5UUlksICZzZW50cnkpID09IC0xKQorICAgIHsKKwlmcHJpbnRmIChzdGRlcnIsICJFcnJvciBkb2luZyBpb2N0bCgyKSBvbiAvZGV2L210cnJcdCVzXG4iLCBFUlJTVFJJTkcpOworCWV4aXQgKDUpOworICAgIH0KKyAgICBmcHJpbnRmIChzdGRlcnIsICJTbGVlcGluZyBmb3IgNSBzZWNvbmRzIHNvIHlvdSBjYW4gc2VlIHRoZSBuZXcgZW50cnlcbiIpOworICAgIHNsZWVwICg1KTsKKyAgICBjbG9zZSAoZmQpOworICAgIGZwdXRzICgiSSd2ZSBqdXN0IGNsb3NlZCAvcHJvYy9tdHJyIHNvIG5vdyB0aGUgbmV3IGVudHJ5IHNob3VsZCBiZSBnb25lXG4iLAorCSAgIHN0ZGVycik7Cit9ICAgLyogIEVuZCBGdW5jdGlvbiBtYWluICAqLworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi94ODYvcGF0LnR4dCBiL0RvY3VtZW50YXRpb24veDg2L3BhdC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE0ZWU2MwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24veDg2L3BhdC50eHQKQEAgLTAsMCArMSwyMzAgQEAKKworUEFUIChQYWdlIEF0dHJpYnV0ZSBUYWJsZSkKKworeDg2IFBhZ2UgQXR0cmlidXRlIFRhYmxlIChQQVQpIGFsbG93cyBmb3Igc2V0dGluZyB0aGUgbWVtb3J5IGF0dHJpYnV0ZSBhdCB0aGUKK3BhZ2UgbGV2ZWwgZ3JhbnVsYXJpdHkuIFBBVCBpcyBjb21wbGVtZW50YXJ5IHRvIHRoZSBNVFJSIHNldHRpbmdzIHdoaWNoIGFsbG93cworZm9yIHNldHRpbmcgb2YgbWVtb3J5IHR5cGVzIG92ZXIgcGh5c2ljYWwgYWRkcmVzcyByYW5nZXMuIEhvd2V2ZXIsIFBBVCBpcworbW9yZSBmbGV4aWJsZSB0aGFuIE1UUlIgZHVlIHRvIGl0cyBjYXBhYmlsaXR5IHRvIHNldCBhdHRyaWJ1dGVzIGF0IHBhZ2UgbGV2ZWwKK2FuZCBhbHNvIGR1ZSB0byB0aGUgZmFjdCB0aGF0IHRoZXJlIGFyZSBubyBoYXJkd2FyZSBsaW1pdGF0aW9ucyBvbiBudW1iZXIgb2YKK3N1Y2ggYXR0cmlidXRlIHNldHRpbmdzIGFsbG93ZWQuIEFkZGVkIGZsZXhpYmlsaXR5IGNvbWVzIHdpdGggZ3VpZGVsaW5lcyBmb3IKK25vdCBoYXZpbmcgbWVtb3J5IHR5cGUgYWxpYXNpbmcgZm9yIHRoZSBzYW1lIHBoeXNpY2FsIG1lbW9yeSB3aXRoIG11bHRpcGxlCit2aXJ0dWFsIGFkZHJlc3Nlcy4KKworUEFUIGFsbG93cyBmb3IgZGlmZmVyZW50IHR5cGVzIG9mIG1lbW9yeSBhdHRyaWJ1dGVzLiBUaGUgbW9zdCBjb21tb25seSB1c2VkCitvbmVzIHRoYXQgd2lsbCBiZSBzdXBwb3J0ZWQgYXQgdGhpcyB0aW1lIGFyZSBXcml0ZS1iYWNrLCBVbmNhY2hlZCwKK1dyaXRlLWNvbWJpbmVkLCBXcml0ZS10aHJvdWdoIGFuZCBVbmNhY2hlZCBNaW51cy4KKworCitQQVQgQVBJcworLS0tLS0tLS0KKworVGhlcmUgYXJlIG1hbnkgZGlmZmVyZW50IEFQSXMgaW4gdGhlIGtlcm5lbCB0aGF0IGFsbG93cyBzZXR0aW5nIG9mIG1lbW9yeQorYXR0cmlidXRlcyBhdCB0aGUgcGFnZSBsZXZlbC4gSW4gb3JkZXIgdG8gYXZvaWQgYWxpYXNpbmcsIHRoZXNlIGludGVyZmFjZXMKK3Nob3VsZCBiZSB1c2VkIHRob3VnaHRmdWxseS4gQmVsb3cgaXMgYSB0YWJsZSBvZiBpbnRlcmZhY2VzIGF2YWlsYWJsZSwKK3RoZWlyIGludGVuZGVkIHVzYWdlIGFuZCB0aGVpciBtZW1vcnkgYXR0cmlidXRlIHJlbGF0aW9uc2hpcHMuIEludGVybmFsbHksCit0aGVzZSBBUElzIHVzZSBhIHJlc2VydmVfbWVtdHlwZSgpL2ZyZWVfbWVtdHlwZSgpIGludGVyZmFjZSBvbiB0aGUgcGh5c2ljYWwKK2FkZHJlc3MgcmFuZ2UgdG8gYXZvaWQgYW55IGFsaWFzaW5nLgorCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FQSSAgICAgICAgICAgICAgICAgICAgfCAgICBSQU0gICB8ICBBQ1BJLC4uLiAgfCAgUmVzZXJ2ZWQvSG9sZXMgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLXwKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKK2lvcmVtYXAgICAgICAgICAgICAgICAgfCAgICAtLSAgICB8ICAgIFVDLSAgICAgfCAgICAgICBVQy0gICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKK2lvcmVtYXBfY2FjaGUgICAgICAgICAgfCAgICAtLSAgICB8ICAgIFdCICAgICAgfCAgICAgICBXQiAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKK2lvcmVtYXBfdWMgICAgICAgICAgICAgfCAgICAtLSAgICB8ICAgIFVDICAgICAgfCAgICAgICBVQyAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKK2lvcmVtYXBfbm9jYWNoZSAgICAgICAgfCAgICAtLSAgICB8ICAgIFVDLSAgICAgfCAgICAgICBVQy0gICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKK2lvcmVtYXBfd2MgICAgICAgICAgICAgfCAgICAtLSAgICB8ICAgIC0tICAgICAgfCAgICAgICBXQyAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKK2lvcmVtYXBfd3QgICAgICAgICAgICAgfCAgICAtLSAgICB8ICAgIC0tICAgICAgfCAgICAgICBXVCAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKK3NldF9tZW1vcnlfdWMgICAgICAgICAgfCAgICBVQy0gICB8ICAgIC0tICAgICAgfCAgICAgICAtLSAgICAgICAgIHwKKyBzZXRfbWVtb3J5X3diICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKK3NldF9tZW1vcnlfd2MgICAgICAgICAgfCAgICBXQyAgICB8ICAgIC0tICAgICAgfCAgICAgICAtLSAgICAgICAgIHwKKyBzZXRfbWVtb3J5X3diICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKK3NldF9tZW1vcnlfd3QgICAgICAgICAgfCAgICBXVCAgICB8ICAgIC0tICAgICAgfCAgICAgICAtLSAgICAgICAgIHwKKyBzZXRfbWVtb3J5X3diICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKK3BjaSBzeXNmcyByZXNvdXJjZSAgICAgfCAgICAtLSAgICB8ICAgIC0tICAgICAgfCAgICAgICBVQy0gICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKK3BjaSBzeXNmcyByZXNvdXJjZV93YyAgfCAgICAtLSAgICB8ICAgIC0tICAgICAgfCAgICAgICBXQyAgICAgICAgIHwKKyBpcyBJT1JFU09VUkNFX1BSRUZFVENIfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKK3BjaSBwcm9jICAgICAgICAgICAgICAgfCAgICAtLSAgICB8ICAgIC0tICAgICAgfCAgICAgICBVQy0gICAgICAgIHwKKyAhUENJSU9DX1dSSVRFX0NPTUJJTkUgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKK3BjaSBwcm9jICAgICAgICAgICAgICAgfCAgICAtLSAgICB8ICAgIC0tICAgICAgfCAgICAgICBXQyAgICAgICAgIHwKKyBQQ0lJT0NfV1JJVEVfQ09NQklORSAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKy9kZXYvbWVtICAgICAgICAgICAgICAgfCAgICAtLSAgICB8ICBXQi9XQy9VQy0gfCAgICBXQi9XQy9VQy0gICAgIHwKKyByZWFkLXdyaXRlICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKy9kZXYvbWVtICAgICAgICAgICAgICAgfCAgICAtLSAgICB8ICAgIFVDLSAgICAgfCAgICAgICBVQy0gICAgICAgIHwKKyBtbWFwIFNZTkMgZmxhZyAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKy9kZXYvbWVtICAgICAgICAgICAgICAgfCAgICAtLSAgICB8ICBXQi9XQy9VQy0gfCAgICBXQi9XQy9VQy0gICAgIHwKKyBtbWFwICFTWU5DIGZsYWcgICAgICAgfCAgICAgICAgICB8KGZyb20gZXhpc3QtfCAgKGZyb20gZXhpc3QtICAgIHwKKyBhbmQgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICBpbmcgYWxpYXMpfCAgICBpbmcgYWxpYXMpICAgIHwKKyBhbnkgYWxpYXMgdG8gdGhpcyBhcmVhfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKy9kZXYvbWVtICAgICAgICAgICAgICAgfCAgICAtLSAgICB8ICAgIFdCICAgICAgfCAgICAgICBXQiAgICAgICAgIHwKKyBtbWFwICFTWU5DIGZsYWcgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKyBubyBhbGlhcyB0byB0aGlzIGFyZWEgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKyBhbmQgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKyBNVFJSIHNheXMgV0IgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKy9kZXYvbWVtICAgICAgICAgICAgICAgfCAgICAtLSAgICB8ICAgIC0tICAgICAgfCAgICAgICBVQy0gICAgICAgIHwKKyBtbWFwICFTWU5DIGZsYWcgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKyBubyBhbGlhcyB0byB0aGlzIGFyZWEgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKyBhbmQgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKyBNVFJSIHNheXMgIVdCICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWR2YW5jZWQgQVBJcyBmb3IgZHJpdmVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQS4gRXhwb3J0aW5nIHBhZ2VzIHRvIHVzZXJzIHdpdGggcmVtYXBfcGZuX3JhbmdlLCBpb19yZW1hcF9wZm5fcmFuZ2UsCit2bV9pbnNlcnRfcGZuCisKK0RyaXZlcnMgd2FudGluZyB0byBleHBvcnQgc29tZSBwYWdlcyB0byB1c2Vyc3BhY2UgZG8gaXQgYnkgdXNpbmcgbW1hcAoraW50ZXJmYWNlIGFuZCBhIGNvbWJpbmF0aW9uIG9mCisxKSBwZ3Byb3Rfbm9uY2FjaGVkKCkKKzIpIGlvX3JlbWFwX3Bmbl9yYW5nZSgpIG9yIHJlbWFwX3Bmbl9yYW5nZSgpIG9yIHZtX2luc2VydF9wZm4oKQorCitXaXRoIFBBVCBzdXBwb3J0LCBhIG5ldyBBUEkgcGdwcm90X3dyaXRlY29tYmluZSBpcyBiZWluZyBhZGRlZC4gU28sIGRyaXZlcnMgY2FuCitjb250aW51ZSB0byB1c2UgdGhlIGFib3ZlIHNlcXVlbmNlLCB3aXRoIGVpdGhlciBwZ3Byb3Rfbm9uY2FjaGVkKCkgb3IKK3BncHJvdF93cml0ZWNvbWJpbmUoKSBpbiBzdGVwIDEsIGZvbGxvd2VkIGJ5IHN0ZXAgMi4KKworSW4gYWRkaXRpb24sIHN0ZXAgMiBpbnRlcm5hbGx5IHRyYWNrcyB0aGUgcmVnaW9uIGFzIFVDIG9yIFdDIGluIG1lbXR5cGUKK2xpc3QgaW4gb3JkZXIgdG8gZW5zdXJlIG5vIGNvbmZsaWN0aW5nIG1hcHBpbmcuCisKK05vdGUgdGhhdCB0aGlzIHNldCBvZiBBUElzIG9ubHkgd29ya3Mgd2l0aCBJTyAobm9uIFJBTSkgcmVnaW9ucy4gSWYgZHJpdmVyCit3YW50cyB0byBleHBvcnQgYSBSQU0gcmVnaW9uLCBpdCBoYXMgdG8gZG8gc2V0X21lbW9yeV91YygpIG9yIHNldF9tZW1vcnlfd2MoKQorYXMgc3RlcCAwIGFib3ZlIGFuZCBhbHNvIHRyYWNrIHRoZSB1c2FnZSBvZiB0aG9zZSBwYWdlcyBhbmQgdXNlIHNldF9tZW1vcnlfd2IoKQorYmVmb3JlIHRoZSBwYWdlIGlzIGZyZWVkIHRvIGZyZWUgcG9vbC4KKworTVRSUiBlZmZlY3RzIG9uIFBBVCAvIG5vbi1QQVQgc3lzdGVtcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIHRhYmxlIHByb3ZpZGVzIHRoZSBlZmZlY3RzIG9mIHVzaW5nIHdyaXRlLWNvbWJpbmluZyBNVFJScyB3aGVuCit1c2luZyBpb3JlbWFwKigpIGNhbGxzIG9uIHg4NiBmb3IgYm90aCBub24tUEFUIGFuZCBQQVQgc3lzdGVtcy4gSWRlYWxseQorbXRycl9hZGQoKSB1c2FnZSB3aWxsIGJlIHBoYXNlZCBvdXQgaW4gZmF2b3Igb2YgYXJjaF9waHlzX3djX2FkZCgpIHdoaWNoIHdpbGwKK2JlIGEgbm8tb3Agb24gUEFUIGVuYWJsZWQgc3lzdGVtcy4gVGhlIHJlZ2lvbiBvdmVyIHdoaWNoIGEgYXJjaF9waHlzX3djX2FkZCgpCitpcyBtYWRlLCBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gaW9yZW1hcHBlZCB3aXRoIFdDIGF0dHJpYnV0ZXMgb3IgUEFUIGVudHJpZXMsCit0aGlzIGNhbiBiZSBkb25lIGJ5IHVzaW5nIGlvcmVtYXBfd2MoKSAvIHNldF9tZW1vcnlfd2MoKS4gIERldmljZXMgd2hpY2gKK2NvbWJpbmUgYXJlYXMgb2YgSU8gbWVtb3J5IGRlc2lyZWQgdG8gcmVtYWluIHVuY2FjaGVhYmxlIHdpdGggYXJlYXMgd2hlcmUKK3dyaXRlLWNvbWJpbmluZyBpcyBkZXNpcmFibGUgc2hvdWxkIGNvbnNpZGVyIHVzZSBvZiBpb3JlbWFwX3VjKCkgZm9sbG93ZWQgYnkKK3NldF9tZW1vcnlfd2MoKSB0byB3aGl0ZS1saXN0IGVmZmVjdGl2ZSB3cml0ZS1jb21iaW5lZCBhcmVhcy4gIFN1Y2ggdXNlIGlzCituZXZlcnRoZWxlc3MgZGlzY291cmFnZWQgYXMgdGhlIGVmZmVjdGl2ZSBtZW1vcnkgdHlwZSBpcyBjb25zaWRlcmVkCitpbXBsZW1lbnRhdGlvbiBkZWZpbmVkLCB5ZXQgdGhpcyBzdHJhdGVneSBjYW4gYmUgdXNlZCBhcyBsYXN0IHJlc29ydCBvbiBkZXZpY2VzCit3aXRoIHNpemUtY29uc3RyYWluZWQgcmVnaW9ucyB3aGVyZSBvdGhlcndpc2UgTVRSUiB3cml0ZS1jb21iaW5pbmcgd291bGQKK290aGVyd2lzZSBub3QgYmUgZWZmZWN0aXZlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitNVFJSIE5vbi1QQVQgICBQQVQgICAgTGludXggaW9yZW1hcCB2YWx1ZSAgICAgICAgRWZmZWN0aXZlIG1lbW9yeSB0eXBlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbi1QQVQgfCAgUEFUCisgICAgIFBBVAorICAgICB8UENECisgICAgIHx8UFdUCisgICAgIHx8fAorV0MgICAwMDAgICAgICBXQiAgICAgIF9QQUdFX0NBQ0hFX01PREVfV0IgICAgICAgICAgICBXQyAgIHwgICBXQworV0MgICAwMDEgICAgICBXQyAgICAgIF9QQUdFX0NBQ0hFX01PREVfV0MgICAgICAgICAgICBXQyogIHwgICBXQworV0MgICAwMTAgICAgICBVQy0gICAgIF9QQUdFX0NBQ0hFX01PREVfVUNfTUlOVVMgICAgICBXQyogIHwgICBVQworV0MgICAwMTEgICAgICBVQyAgICAgIF9QQUdFX0NBQ0hFX01PREVfVUMgICAgICAgICAgICBVQyAgIHwgICBVQworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisoKikgZGVub3RlcyBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGFuZCBpcyBkaXNjb3VyYWdlZAorCitOb3RlczoKKworLS0gaW4gdGhlIGFib3ZlIHRhYmxlIG1lYW4gIk5vdCBzdWdnZXN0ZWQgdXNhZ2UgZm9yIHRoZSBBUEkiLiBTb21lIG9mIHRoZSAtLSdzCithcmUgc3RyaWN0bHkgZW5mb3JjZWQgYnkgdGhlIGtlcm5lbC4gU29tZSBvdGhlcnMgYXJlIG5vdCByZWFsbHkgZW5mb3JjZWQKK3RvZGF5LCBidXQgbWF5IGJlIGVuZm9yY2VkIGluIGZ1dHVyZS4KKworRm9yIGlvcmVtYXAgYW5kIHBjaSBhY2Nlc3MgdGhyb3VnaCAvc3lzIG9yIC9wcm9jIC0gVGhlIGFjdHVhbCB0eXBlIHJldHVybmVkCitjYW4gYmUgbW9yZSByZXN0cmljdGl2ZSwgaW4gY2FzZSBvZiBhbnkgZXhpc3RpbmcgYWxpYXNpbmcgZm9yIHRoYXQgYWRkcmVzcy4KK0ZvciBleGFtcGxlOiBJZiB0aGVyZSBpcyBhbiBleGlzdGluZyB1bmNhY2hlZCBtYXBwaW5nLCBhIG5ldyBpb3JlbWFwX3djIGNhbgorcmV0dXJuIHVuY2FjaGVkIG1hcHBpbmcgaW4gcGxhY2Ugb2Ygd3JpdGUtY29tYmluZSByZXF1ZXN0ZWQuCisKK3NldF9tZW1vcnlfW3VjfHdjfHd0XSBhbmQgc2V0X21lbW9yeV93YiBzaG91bGQgYmUgdXNlZCBpbiBwYWlycywgd2hlcmUgZHJpdmVyCit3aWxsIGZpcnN0IG1ha2UgYSByZWdpb24gdWMsIHdjIG9yIHd0IGFuZCBzd2l0Y2ggaXQgYmFjayB0byB3YiBhZnRlciB1c2UuCisKK092ZXIgdGltZSB3cml0ZXMgdG8gL3Byb2MvbXRyciB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdXNpbmcgUEFUIGJhc2VkCitpbnRlcmZhY2VzLiBVc2VycyB3cml0aW5nIHRvIC9wcm9jL210cnIgYXJlIHN1Z2dlc3RlZCB0byB1c2UgYWJvdmUgaW50ZXJmYWNlcy4KKworRHJpdmVycyBzaG91bGQgdXNlIGlvcmVtYXBfW3VjfHdjXSB0byBhY2Nlc3MgUENJIEJBUnMgd2l0aCBbdWN8d2NdIGFjY2VzcwordHlwZXMuCisKK0RyaXZlcnMgc2hvdWxkIHVzZSBzZXRfbWVtb3J5X1t1Y3x3Y3x3dF0gdG8gc2V0IGFjY2VzcyB0eXBlIGZvciBSQU0gcmFuZ2VzLgorCisKK1BBVCBkZWJ1Z2dpbmcKKy0tLS0tLS0tLS0tLS0KKworV2l0aCBDT05GSUdfREVCVUdfRlMgZW5hYmxlZCwgUEFUIG1lbXR5cGUgbGlzdCBjYW4gYmUgZXhhbWluZWQgYnkKKworIyBtb3VudCAtdCBkZWJ1Z2ZzIGRlYnVnZnMgL3N5cy9rZXJuZWwvZGVidWcKKyMgY2F0IC9zeXMva2VybmVsL2RlYnVnL3g4Ni9wYXRfbWVtdHlwZV9saXN0CitQQVQgbWVtdHlwZSBsaXN0OgordW5jYWNoZWQtbWludXMgQCAweDdmYWRmMDAwLTB4N2ZhZTAwMDAKK3VuY2FjaGVkLW1pbnVzIEAgMHg3ZmIxOTAwMC0weDdmYjFhMDAwCit1bmNhY2hlZC1taW51cyBAIDB4N2ZiMWEwMDAtMHg3ZmIxYjAwMAordW5jYWNoZWQtbWludXMgQCAweDdmYjFiMDAwLTB4N2ZiMWMwMDAKK3VuY2FjaGVkLW1pbnVzIEAgMHg3ZmIxYzAwMC0weDdmYjFkMDAwCit1bmNhY2hlZC1taW51cyBAIDB4N2ZiMWQwMDAtMHg3ZmIxZTAwMAordW5jYWNoZWQtbWludXMgQCAweDdmYjFlMDAwLTB4N2ZiMjUwMDAKK3VuY2FjaGVkLW1pbnVzIEAgMHg3ZmIyNTAwMC0weDdmYjI2MDAwCit1bmNhY2hlZC1taW51cyBAIDB4N2ZiMjYwMDAtMHg3ZmIyNzAwMAordW5jYWNoZWQtbWludXMgQCAweDdmYjI3MDAwLTB4N2ZiMjgwMDAKK3VuY2FjaGVkLW1pbnVzIEAgMHg3ZmIyODAwMC0weDdmYjJlMDAwCit1bmNhY2hlZC1taW51cyBAIDB4N2ZiMmUwMDAtMHg3ZmIyZjAwMAordW5jYWNoZWQtbWludXMgQCAweDdmYjJmMDAwLTB4N2ZiMzAwMDAKK3VuY2FjaGVkLW1pbnVzIEAgMHg3ZmIzMTAwMC0weDdmYjMyMDAwCit1bmNhY2hlZC1taW51cyBAIDB4ODAwMDAwMDAtMHg5MDAwMDAwMAorCitUaGlzIGxpc3Qgc2hvd3MgcGh5c2ljYWwgYWRkcmVzcyByYW5nZXMgYW5kIHZhcmlvdXMgUEFUIHNldHRpbmdzIHVzZWQgdG8KK2FjY2VzcyB0aG9zZSBwaHlzaWNhbCBhZGRyZXNzIHJhbmdlcy4KKworQW5vdGhlciwgbW9yZSB2ZXJib3NlIHdheSBvZiBnZXR0aW5nIFBBVCByZWxhdGVkIGRlYnVnIG1lc3NhZ2VzIGlzIHdpdGgKKyJkZWJ1Z3BhdCIgYm9vdCBwYXJhbWV0ZXIuIFdpdGggdGhpcyBwYXJhbWV0ZXIsIHZhcmlvdXMgZGVidWcgbWVzc2FnZXMgYXJlCitwcmludGVkIHRvIGRtZXNnIGxvZy4KKworUEFUIEluaXRpYWxpemF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGZvbGxvd2luZyB0YWJsZSBkZXNjcmliZXMgaG93IFBBVCBpcyBpbml0aWFsaXplZCB1bmRlciB2YXJpb3VzCitjb25maWd1cmF0aW9ucy4gVGhlIFBBVCBNU1IgbXVzdCBiZSB1cGRhdGVkIGJ5IExpbnV4IGluIG9yZGVyIHRvIHN1cHBvcnQgV0MKK2FuZCBXVCBhdHRyaWJ1dGVzLiBPdGhlcndpc2UsIHRoZSBQQVQgTVNSIGhhcyB0aGUgdmFsdWUgcHJvZ3JhbW1lZCBpbiBpdAorYnkgdGhlIGZpcm13YXJlLiBOb3RlLCBYZW4gZW5hYmxlcyBXQyBhdHRyaWJ1dGUgaW4gdGhlIFBBVCBNU1IgZm9yIGd1ZXN0cy4KKworIE1UUlIgUEFUICAgQ2FsbCBTZXF1ZW5jZSAgICAgICAgICAgICAgIFBBVCBTdGF0ZSAgUEFUIE1TUgorID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIEUgICAgRSAgICAgTVRSUiAtPiBQQVQgaW5pdCAgICAgICAgICAgIEVuYWJsZWQgICAgT1MKKyBFICAgIEQgICAgIE1UUlIgLT4gUEFUIGluaXQgICAgICAgICAgICBEaXNhYmxlZCAgICAtCisgRCAgICBFICAgICBNVFJSIC0+IFBBVCBkaXNhYmxlICAgICAgICAgRGlzYWJsZWQgICBCSU9TCisgRCAgICBEICAgICBNVFJSIC0+IFBBVCBkaXNhYmxlICAgICAgICAgRGlzYWJsZWQgICAgLQorIC0gICAgbnAvRSAgUEFUICAtPiBQQVQgZGlzYWJsZSAgICAgICAgIERpc2FibGVkICAgQklPUworIC0gICAgbnAvRCAgUEFUICAtPiBQQVQgZGlzYWJsZSAgICAgICAgIERpc2FibGVkICAgIC0KKyBFICAgICFQL0UgIE1UUlIgLT4gUEFUIGluaXQgICAgICAgICAgICBEaXNhYmxlZCAgIEJJT1MKKyBEICAgICFQL0UgIE1UUlIgLT4gUEFUIGRpc2FibGUgICAgICAgICBEaXNhYmxlZCAgIEJJT1MKKyAhTSAgICFQL0UgIE1UUlIgc3R1YiAtPiBQQVQgZGlzYWJsZSAgICBEaXNhYmxlZCAgIEJJT1MKKworIExlZ2VuZAorIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEUgICAgICAgICBGZWF0dXJlIGVuYWJsZWQgaW4gQ1BVCisgRAkgICBGZWF0dXJlIGRpc2FibGVkL3Vuc3VwcG9ydGVkIGluIENQVQorIG5wCSAgICJub3BhdCIgYm9vdCBvcHRpb24gc3BlY2lmaWVkCisgIVAJICAgQ09ORklHX1g4Nl9QQVQgb3B0aW9uIHVuc2V0CisgIU0JICAgQ09ORklHX01UUlIgb3B0aW9uIHVuc2V0CisgRW5hYmxlZCAgIFBBVCBzdGF0ZSBzZXQgdG8gZW5hYmxlZAorIERpc2FibGVkICBQQVQgc3RhdGUgc2V0IHRvIGRpc2FibGVkCisgT1MgICAgICAgIFBBVCBpbml0aWFsaXplcyBQQVQgTVNSIHdpdGggT1Mgc2V0dGluZworIEJJT1MgICAgICBQQVQga2VlcHMgUEFUIE1TUiB3aXRoIEJJT1Mgc2V0dGluZworCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3g4Ni90bGIudHh0IGIvRG9jdW1lbnRhdGlvbi94ODYvdGxiLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWQxNzIzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi94ODYvdGxiLnR4dApAQCAtMCwwICsxLDc1IEBACitXaGVuIHRoZSBrZXJuZWwgdW5tYXBzIG9yIG1vZGlmaWVkIHRoZSBhdHRyaWJ1dGVzIG9mIGEgcmFuZ2Ugb2YKK21lbW9yeSwgaXQgaGFzIHR3byBjaG9pY2VzOgorIDEuIEZsdXNoIHRoZSBlbnRpcmUgVExCIHdpdGggYSB0d28taW5zdHJ1Y3Rpb24gc2VxdWVuY2UuICBUaGlzIGlzCisgICAgYSBxdWljayBvcGVyYXRpb24sIGJ1dCBpdCBjYXVzZXMgY29sbGF0ZXJhbCBkYW1hZ2U6IFRMQiBlbnRyaWVzCisgICAgZnJvbSBhcmVhcyBvdGhlciB0aGFuIHRoZSBvbmUgd2UgYXJlIHRyeWluZyB0byBmbHVzaCB3aWxsIGJlCisgICAgZGVzdHJveWVkIGFuZCBtdXN0IGJlIHJlZmlsbGVkIGxhdGVyLCBhdCBzb21lIGNvc3QuCisgMi4gVXNlIHRoZSBpbnZscGcgaW5zdHJ1Y3Rpb24gdG8gaW52YWxpZGF0ZSBhIHNpbmdsZSBwYWdlIGF0IGEKKyAgICB0aW1lLiAgVGhpcyBjb3VsZCBwb3RlbnRpYWx5IGNvc3QgbWFueSBtb3JlIGluc3RydWN0aW9ucywgYnV0CisgICAgaXQgaXMgYSBtdWNoIG1vcmUgcHJlY2lzZSBvcGVyYXRpb24sIGNhdXNpbmcgbm8gY29sbGF0ZXJhbAorICAgIGRhbWFnZSB0byBvdGhlciBUTEIgZW50cmllcy4KKworV2hpY2ggbWV0aG9kIHRvIGRvIGRlcGVuZHMgb24gYSBmZXcgdGhpbmdzOgorIDEuIFRoZSBzaXplIG9mIHRoZSBmbHVzaCBiZWluZyBwZXJmb3JtZWQuICBBIGZsdXNoIG9mIHRoZSBlbnRpcmUKKyAgICBhZGRyZXNzIHNwYWNlIGlzIG9idmlvdXNseSBiZXR0ZXIgcGVyZm9ybWVkIGJ5IGZsdXNoaW5nIHRoZQorICAgIGVudGlyZSBUTEIgdGhhbiBkb2luZyAyXjQ4L1BBR0VfU0laRSBpbmRpdmlkdWFsIGZsdXNoZXMuCisgMi4gVGhlIGNvbnRlbnRzIG9mIHRoZSBUTEIuICBJZiB0aGUgVExCIGlzIGVtcHR5LCB0aGVuIHRoZXJlIHdpbGwKKyAgICBiZSBubyBjb2xsYXRlcmFsIGRhbWFnZSBjYXVzZWQgYnkgZG9pbmcgdGhlIGdsb2JhbCBmbHVzaCwgYW5kCisgICAgYWxsIG9mIHRoZSBpbmRpdmlkdWFsIGZsdXNoIHdpbGwgaGF2ZSBlbmRlZCB1cCBiZWluZyB3YXN0ZWQKKyAgICB3b3JrLgorIDMuIFRoZSBzaXplIG9mIHRoZSBUTEIuICBUaGUgbGFyZ2VyIHRoZSBUTEIsIHRoZSBtb3JlIGNvbGxhdGVyYWwKKyAgICBkYW1hZ2Ugd2UgZG8gd2l0aCBhIGZ1bGwgZmx1c2guICBTbywgdGhlIGxhcmdlciB0aGUgVExCLCB0aGUKKyAgICBtb3JlIGF0dHJhdGl2ZSBhbiBpbmRpdmlkdWFsIGZsdXNoIGxvb2tzLiAgRGF0YSBhbmQKKyAgICBpbnN0cnVjdGlvbnMgaGF2ZSBzZXBhcmF0ZSBUTEJzLCBhcyBkbyBkaWZmZXJlbnQgcGFnZSBzaXplcy4KKyA0LiBUaGUgbWljcm9hcmNoaXRlY3R1cmUuICBUaGUgVExCIGhhcyBiZWNvbWUgYSBtdWx0aS1sZXZlbAorICAgIGNhY2hlIG9uIG1vZGVybiBDUFVzLCBhbmQgdGhlIGdsb2JhbCBmbHVzaGVzIGhhdmUgYmVjb21lIG1vcmUKKyAgICBleHBlbnNpdmUgcmVsYXRpdmUgdG8gc2luZ2xlLXBhZ2UgZmx1c2hlcy4KKworVGhlcmUgaXMgb2J2aW91c2x5IG5vIHdheSB0aGUga2VybmVsIGNhbiBrbm93IGFsbCB0aGVzZSB0aGluZ3MsCitlc3BlY2lhbGx5IHRoZSBjb250ZW50cyBvZiB0aGUgVExCIGR1cmluZyBhIGdpdmVuIGZsdXNoLiAgVGhlCitzaXplcyBvZiB0aGUgZmx1c2ggd2lsbCB2YXJ5IGdyZWF0bHkgZGVwZW5kaW5nIG9uIHRoZSB3b3JrbG9hZCBhcword2VsbC4gIFRoZXJlIGlzIGVzc2VudGlhbGx5IG5vICJyaWdodCIgcG9pbnQgdG8gY2hvb3NlLgorCitZb3UgbWF5IGJlIGRvaW5nIHRvbyBtYW55IGluZGl2aWR1YWwgaW52YWxpZGF0aW9ucyBpZiB5b3Ugc2VlIHRoZQoraW52bHBnIGluc3RydWN0aW9uIChvciBpbnN0cnVjdGlvbnMgX25lYXJfIGl0KSBzaG93IHVwIGhpZ2ggaW4KK3Byb2ZpbGVzLiAgSWYgeW91IGJlbGlldmUgdGhhdCBpbmRpdmlkdWFsIGludmFsaWRhdGlvbnMgYmVpbmcKK2NhbGxlZCB0b28gb2Z0ZW4sIHlvdSBjYW4gbG93ZXIgdGhlIHR1bmFibGU6CisKKwkvc3lzL2tlcm5lbC9kZWJ1Zy94ODYvdGxiX3NpbmdsZV9wYWdlX2ZsdXNoX2NlaWxpbmcKKworVGhpcyB3aWxsIGNhdXNlIHVzIHRvIGRvIHRoZSBnbG9iYWwgZmx1c2ggZm9yIG1vcmUgY2FzZXMuCitMb3dlcmluZyBpdCB0byAwIHdpbGwgZGlzYWJsZSB0aGUgdXNlIG9mIHRoZSBpbmRpdmlkdWFsIGZsdXNoZXMuCitTZXR0aW5nIGl0IHRvIDEgaXMgYSB2ZXJ5IGNvbnNlcnZhdGl2ZSBzZXR0aW5nIGFuZCBpdCBzaG91bGQKK25ldmVyIG5lZWQgdG8gYmUgMCB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcy4KKworRGVzcGl0ZSB0aGUgZmFjdCB0aGF0IGEgc2luZ2xlIGluZGl2aWR1YWwgZmx1c2ggb24geDg2IGlzCitndWFyYW50ZWVkIHRvIGZsdXNoIGEgZnVsbCAyTUIgWzFdLCBodWdldGxiZnMgYWx3YXlzIHVzZXMgdGhlIGZ1bGwKK2ZsdXNoZXMuICBUSFAgaXMgdHJlYXRlZCBleGFjdGx5IHRoZSBzYW1lIGFzIG5vcm1hbCBtZW1vcnkuCisKK1lvdSBtaWdodCBzZWUgaW52bHBnIGluc2lkZSBvZiBmbHVzaF90bGJfbW1fcmFuZ2UoKSBzaG93IHVwIGluCitwcm9maWxlcywgb3IgeW91IGNhbiB1c2UgdGhlIHRyYWNlX3RsYl9mbHVzaCgpIHRyYWNlcG9pbnRzLiB0bworZGV0ZXJtaW5lIGhvdyBsb25nIHRoZSBmbHVzaCBvcGVyYXRpb25zIGFyZSB0YWtpbmcuCisKK0Vzc2VudGlhbGx5LCB5b3UgYXJlIGJhbGFuY2luZyB0aGUgY3ljbGVzIHlvdSBzcGVuZCBkb2luZyBpbnZscGcKK3dpdGggdGhlIGN5Y2xlcyB0aGF0IHlvdSBzcGVuZCByZWZpbGxpbmcgdGhlIFRMQiBsYXRlci4KKworWW91IGNhbiBtZWFzdXJlIGhvdyBleHBlbnNpdmUgVExCIHJlZmlsbHMgYXJlIGJ5IHVzaW5nCitwZXJmb3JtYW5jZSBjb3VudGVycyBhbmQgJ3BlcmYgc3RhdCcsIGxpa2UgdGhpczoKKworcGVyZiBzdGF0IC1lCisJY3B1L2V2ZW50PTB4OCx1bWFzaz0weDg0LG5hbWU9ZHRsYl9sb2FkX21pc3Nlc193YWxrX2R1cmF0aW9uLywKKwljcHUvZXZlbnQ9MHg4LHVtYXNrPTB4ODIsbmFtZT1kdGxiX2xvYWRfbWlzc2VzX3dhbGtfY29tcGxldGVkLywKKwljcHUvZXZlbnQ9MHg0OSx1bWFzaz0weDQsbmFtZT1kdGxiX3N0b3JlX21pc3Nlc193YWxrX2R1cmF0aW9uLywKKwljcHUvZXZlbnQ9MHg0OSx1bWFzaz0weDIsbmFtZT1kdGxiX3N0b3JlX21pc3Nlc193YWxrX2NvbXBsZXRlZC8sCisJY3B1L2V2ZW50PTB4ODUsdW1hc2s9MHg0LG5hbWU9aXRsYl9taXNzZXNfd2Fsa19kdXJhdGlvbi8sCisJY3B1L2V2ZW50PTB4ODUsdW1hc2s9MHgyLG5hbWU9aXRsYl9taXNzZXNfd2Fsa19jb21wbGV0ZWQvCisKK1RoYXQgd29ya3Mgb24gYW4gSXZ5QnJpZGdlLWVyYSBDUFUgKGk1LTMzMjBNKS4gIERpZmZlcmVudCBDUFVzCittYXkgaGF2ZSBkaWZmZXJlbnRseS1uYW1lZCBjb3VudGVycywgYnV0IHRoZXkgc2hvdWxkIGF0IGxlYXN0CitiZSB0aGVyZSBpbiBzb21lIGZvcm0uICBZb3UgY2FuIHVzZSBwbXUtdG9vbHMgJ29jcGVyZiBsaXN0JworKGh0dHBzOi8vZ2l0aHViLmNvbS9hbmRpa2xlZW4vcG11LXRvb2xzKSB0byBmaW5kIHRoZSByaWdodAorY291bnRlcnMgZm9yIGEgZ2l2ZW4gQ1BVLgorCisxLiBBIGZvb3Rub3RlIGluIEludGVsJ3MgU0RNICI0LjEwLjQuMiBSZWNvbW1lbmRlZCBJbnZhbGlkYXRpb24iCisgICBzYXlzOiAiT25lIGV4ZWN1dGlvbiBvZiBJTlZMUEcgaXMgc3VmZmljaWVudCBldmVuIGZvciBhIHBhZ2UKKyAgIHdpdGggc2l6ZSBncmVhdGVyIHRoYW4gNCBLQnl0ZXMuIgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi94ODYvdXNiLWxlZ2FjeS1zdXBwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24veDg2L3VzYi1sZWdhY3ktc3VwcG9ydC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg5NGNkZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24veDg2L3VzYi1sZWdhY3ktc3VwcG9ydC50eHQKQEAgLTAsMCArMSw0NCBAQAorVVNCIExlZ2FjeSBzdXBwb3J0Cit+fn5+fn5+fn5+fn5+fn5+fn4KKworVm9qdGVjaCBQYXZsaWsgPHZvanRlY2hAc3VzZS5jej4sIEphbnVhcnkgMjAwNAorCisKK0Fsc28ga25vd24gYXMgIlVTQiBLZXlib2FyZCIgb3IgIlVTQiBNb3VzZSBzdXBwb3J0IiBpbiB0aGUgQklPUyBTZXR1cCBpcyBhCitmZWF0dXJlIHRoYXQgYWxsb3dzIG9uZSB0byB1c2UgdGhlIFVTQiBtb3VzZSBhbmQga2V5Ym9hcmQgYXMgaWYgdGhleSB3ZXJlCit0aGVpciBjbGFzc2ljIFBTLzIgY291bnRlcnBhcnRzLiAgVGhpcyBtZWFucyBvbmUgY2FuIHVzZSBhbiBVU0Iga2V5Ym9hcmQgdG8KK3R5cGUgaW4gTElMTyBmb3IgZXhhbXBsZS4KKworSXQgaGFzIHNldmVyYWwgZHJhd2JhY2tzLCB0aG91Z2g6CisKKzEpIE9uIHNvbWUgbWFjaGluZXMsIHRoZSBlbXVsYXRlZCBQUy8yIG1vdXNlIHRha2VzIG92ZXIgZXZlbiB3aGVuIG5vIFVTQgorICAgbW91c2UgaXMgcHJlc2VudCBhbmQgYSByZWFsIFBTLzIgbW91c2UgaXMgcHJlc2VudC4gIEluIHRoYXQgY2FzZSB0aGUgZXh0cmEKKyAgIGZlYXR1cmVzICh3aGVlbCwgZXh0cmEgYnV0dG9ucywgdG91Y2hwYWQgbW9kZSkgb2YgdGhlIHJlYWwgUFMvMiBtb3VzZSBtYXkKKyAgIG5vdCBiZSBhdmFpbGFibGUuCisKKzIpIElmIENPTkZJR19ISUdITUVNNjRHIGlzIGVuYWJsZWQsIHRoZSBQUy8yIG1vdXNlIGVtdWxhdGlvbiBjYW4gY2F1c2UKKyAgIHN5c3RlbSBjcmFzaGVzLCBiZWNhdXNlIHRoZSBTTU0gQklPUyBpcyBub3QgZXhwZWN0aW5nIHRvIGJlIGluIFBBRSBtb2RlLgorICAgVGhlIEludGVsIEU3NTA1IGlzIGEgdHlwaWNhbCBtYWNoaW5lIHdoZXJlIHRoaXMgaGFwcGVucy4KKworMykgSWYgQU1ENjQgNjQtYml0IG1vZGUgaXMgZW5hYmxlZCwgYWdhaW4gc3lzdGVtIGNyYXNoZXMgb2Z0ZW4gaGFwcGVuLAorICAgYmVjYXVzZSB0aGUgU01NIEJJT1MgaXNuJ3QgZXhwZWN0aW5nIHRoZSBDUFUgdG8gYmUgaW4gNjQtYml0IG1vZGUuICBUaGUKKyAgIEJJT1MgbWFudWZhY3R1cmVycyBvbmx5IHRlc3Qgd2l0aCBXaW5kb3dzLCBhbmQgV2luZG93cyBkb2Vzbid0IGRvIDY0LWJpdAorICAgeWV0LgorCitTb2x1dGlvbnM6CisKK1Byb2JsZW0gMSkgY2FuIGJlIHNvbHZlZCBieSBsb2FkaW5nIHRoZSBVU0IgZHJpdmVycyBwcmlvciB0byBsb2FkaW5nIHRoZQorUFMvMiBtb3VzZSBkcml2ZXIuIFNpbmNlIHRoZSBQUy8yIG1vdXNlIGRyaXZlciBpcyBpbiAyLjYgY29tcGlsZWQgaW50bwordGhlIGtlcm5lbCB1bmNvbmRpdGlvbmFsbHksIHRoaXMgbWVhbnMgdGhlIFVTQiBkcml2ZXJzIG5lZWQgdG8gYmUKK2NvbXBpbGVkLWluLCB0b28uCisKK1Byb2JsZW0gMikgY2FuIGN1cnJlbnRseSBvbmx5IGJlIHNvbHZlZCBieSBlaXRoZXIgZGlzYWJsaW5nIEhJR0hNRU02NEcKK2luIHRoZSBrZXJuZWwgY29uZmlnIG9yIFVTQiBMZWdhY3kgc3VwcG9ydCBpbiB0aGUgQklPUy4gQSBCSU9TIHVwZGF0ZQorY291bGQgaGVscCwgYnV0IHNvIGZhciBubyBzdWNoIHVwZGF0ZSBleGlzdHMuCisKK1Byb2JsZW0gMykgaXMgdXN1YWxseSBmaXhlZCBieSBhIEJJT1MgdXBkYXRlLiBDaGVjayB0aGUgYm9hcmQKK21hbnVmYWN0dXJlcnMgd2ViIHNpdGUuIElmIGFuIHVwZGF0ZSBpcyBub3QgYXZhaWxhYmxlLCBkaXNhYmxlIFVTQgorTGVnYWN5IHN1cHBvcnQgaW4gdGhlIEJJT1MuIElmIHRoaXMgYWxvbmUgZG9lc24ndCBoZWxwLCB0cnkgYWxzbyBhZGRpbmcKK2lkbGU9cG9sbCBvbiB0aGUga2VybmVsIGNvbW1hbmQgbGluZS4gVGhlIEJJT1MgbWF5IGJlIGVudGVyaW5nIHRoZSBTTU0KK29uIHRoZSBITFQgaW5zdHJ1Y3Rpb24gYXMgd2VsbC4KKwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi94ODYveDg2XzY0LzAwLUlOREVYIGIvRG9jdW1lbnRhdGlvbi94ODYveDg2XzY0LzAwLUlOREVYCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyZmMyMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3g4Ni94ODZfNjQvMDAtSU5ERVgKQEAgLTAsMCArMSwxNiBAQAorMDAtSU5ERVgKKwktIFRoaXMgZmlsZQorYm9vdC1vcHRpb25zLnR4dAorCS0gQU1ENjQtc3BlY2lmaWMgYm9vdCBvcHRpb25zLgorY3B1LWhvdHBsdWctc3BlYworCS0gRmlybXdhcmUgc3VwcG9ydCBmb3IgQ1BVIGhvdHBsdWcgdW5kZXIgTGludXgveDg2LTY0CitmYWtlLW51bWEtZm9yLWNwdXNldHMKKwktIFVzaW5nIG51bWE9ZmFrZSBhbmQgQ1BVU2V0cyBmb3IgUmVzb3VyY2UgTWFuYWdlbWVudAora2VybmVsLXN0YWNrcworCS0gQ29udGV4dC1zcGVjaWZpYyBwZXItcHJvY2Vzc29yIGludGVycnVwdCBzdGFja3MuCittYWNoaW5lY2hlY2sKKwktIENvbmZpZ3VyYWJsZSBzeXNmcyBwYXJhbWV0ZXJzIGZvciB0aGUgeDg2LTY0IG1hY2hpbmUgY2hlY2sgY29kZS4KK21tLnR4dAorCS0gTWVtb3J5IGxheW91dCBvZiB4ODYtNjQgKDQgbGV2ZWwgcGFnZSB0YWJsZXMsIDQ2IGJpdHMgcGh5c2ljYWwpLgordWVmaS50eHQKKwktIEJvb3RpbmcgTGludXggdmlhIFVuaWZpZWQgRXh0ZW5zaWJsZSBGaXJtd2FyZSBJbnRlcmZhY2UuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3g4Ni94ODZfNjQvYm9vdC1vcHRpb25zLnR4dCBiL0RvY3VtZW50YXRpb24veDg2L3g4Nl82NC9ib290LW9wdGlvbnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ZWQzMTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3g4Ni94ODZfNjQvYm9vdC1vcHRpb25zLnR4dApAQCAtMCwwICsxLDI4NyBAQAorQU1ENjQgc3BlY2lmaWMgYm9vdCBvcHRpb25zCisKK1RoZXJlIGFyZSBtYW55IG90aGVycyAodXN1YWxseSBkb2N1bWVudGVkIGluIGRyaXZlciBkb2N1bWVudGF0aW9uKSwgYnV0Citvbmx5IHRoZSBBTUQ2NCBzcGVjaWZpYyBvbmVzIGFyZSBsaXN0ZWQgaGVyZS4KKworTWFjaGluZSBjaGVjaworCisgICBQbGVhc2Ugc2VlIERvY3VtZW50YXRpb24veDg2L3g4Nl82NC9tYWNoaW5lY2hlY2sgZm9yIHN5c2ZzIHJ1bnRpbWUgdHVuYWJsZXMuCisKKyAgIG1jZT1vZmYKKwkJRGlzYWJsZSBtYWNoaW5lIGNoZWNrCisgICBtY2U9bm9fY21jaQorCQlEaXNhYmxlIENNQ0koQ29ycmVjdGVkIE1hY2hpbmUgQ2hlY2sgSW50ZXJydXB0KSB0aGF0CisJCUludGVsIHByb2Nlc3NvciBzdXBwb3J0cy4gIFVzdWFsbHkgdGhpcyBkaXNhYmxlbWVudCBpcworCQlub3QgcmVjb21tZW5kZWQsIGJ1dCBpdCBtaWdodCBiZSBoYW5keSBpZiB5b3VyIGhhcmR3YXJlCisJCWlzIG1pc2JlaGF2aW5nLgorCQlOb3RlIHRoYXQgeW91J2xsIGdldCBtb3JlIHByb2JsZW1zIHdpdGhvdXQgQ01DSSB0aGFuIHdpdGgKKwkJZHVlIHRvIHRoZSBzaGFyZWQgYmFua3MsIGkuZS4geW91IG1pZ2h0IGdldCBkdXBsaWNhdGVkCisJCWVycm9yIGxvZ3MuCisgICBtY2U9ZG9udF9sb2dfY2UKKwkJRG9uJ3QgbWFrZSBsb2dzIGZvciBjb3JyZWN0ZWQgZXJyb3JzLiAgQWxsIGV2ZW50cyByZXBvcnRlZAorCQlhcyBjb3JyZWN0ZWQgYXJlIHNpbGVudGx5IGNsZWFyZWQgYnkgT1MuCisJCVRoaXMgb3B0aW9uIHdpbGwgYmUgdXNlZnVsIGlmIHlvdSBoYXZlIG5vIGludGVyZXN0IGluIGFueQorCQlvZiBjb3JyZWN0ZWQgZXJyb3JzLgorICAgbWNlPWlnbm9yZV9jZQorCQlEaXNhYmxlIGZlYXR1cmVzIGZvciBjb3JyZWN0ZWQgZXJyb3JzLCBlLmcuIHBvbGxpbmcgdGltZXIKKwkJYW5kIENNQ0kuICBBbGwgZXZlbnRzIHJlcG9ydGVkIGFzIGNvcnJlY3RlZCBhcmUgbm90IGNsZWFyZWQKKwkJYnkgT1MgYW5kIHJlbWFpbmVkIGluIGl0cyBlcnJvciBiYW5rcy4KKwkJVXN1YWxseSB0aGlzIGRpc2FibGVtZW50IGlzIG5vdCByZWNvbW1lbmRlZCwgaG93ZXZlciBpZgorCQl0aGVyZSBpcyBhbiBhZ2VudCBjaGVja2luZy9jbGVhcmluZyBjb3JyZWN0ZWQgZXJyb3JzCisJCShlLmcuIEJJT1Mgb3IgaGFyZHdhcmUgbW9uaXRvcmluZyBhcHBsaWNhdGlvbnMpLCBjb25mbGljdGluZworCQl3aXRoIE9TJ3MgZXJyb3IgaGFuZGxpbmcsIGFuZCB5b3UgY2Fubm90IGRlYWN0aXZhdGUgdGhlIGFnZW50LAorCQl0aGVuIHRoaXMgb3B0aW9uIHdpbGwgYmUgYSBoZWxwLgorICAgbWNlPW5vX2xtY2UKKwkJRG8gbm90IG9wdC1pbiB0byBMb2NhbCBNQ0UgZGVsaXZlcnkuIFVzZSBsZWdhY3kgbWV0aG9kCisJCXRvIGJyb2FkY2FzdCBNQ0VzLgorICAgbWNlPWJvb3Rsb2cKKwkJRW5hYmxlIGxvZ2dpbmcgb2YgbWFjaGluZSBjaGVja3MgbGVmdCBvdmVyIGZyb20gYm9vdGluZy4KKwkJRGlzYWJsZWQgYnkgZGVmYXVsdCBvbiBBTUQgYmVjYXVzZSBzb21lIEJJT1MgbGVhdmUgYm9ndXMgb25lcy4KKwkJSWYgeW91ciBCSU9TIGRvZXNuJ3QgZG8gdGhhdCBpdCdzIGEgZ29vZCBpZGVhIHRvIGVuYWJsZSB0aG91Z2gKKwkJdG8gbWFrZSBzdXJlIHlvdSBsb2cgZXZlbiBtYWNoaW5lIGNoZWNrIGV2ZW50cyB0aGF0IHJlc3VsdAorCQlpbiBhIHJlYm9vdC4gT24gSW50ZWwgc3lzdGVtcyBpdCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCisgICBtY2U9bm9ib290bG9nCisJCURpc2FibGUgYm9vdCBtYWNoaW5lIGNoZWNrIGxvZ2dpbmcuCisgICBtY2U9dG9sZXJhbmNlbGV2ZWxbLG1vbmFyY2h0aW1lb3V0XSAobnVtYmVyLG51bWJlcikKKwkJdG9sZXJhbmNlIGxldmVsczoKKwkJMDogYWx3YXlzIHBhbmljIG9uIHVuY29ycmVjdGVkIGVycm9ycywgbG9nIGNvcnJlY3RlZCBlcnJvcnMKKwkJMTogcGFuaWMgb3IgU0lHQlVTIG9uIHVuY29ycmVjdGVkIGVycm9ycywgbG9nIGNvcnJlY3RlZCBlcnJvcnMKKwkJMjogU0lHQlVTIG9yIGxvZyB1bmNvcnJlY3RlZCBlcnJvcnMsIGxvZyBjb3JyZWN0ZWQgZXJyb3JzCisJCTM6IG5ldmVyIHBhbmljIG9yIFNJR0JVUywgbG9nIGFsbCBlcnJvcnMgKGZvciB0ZXN0aW5nIG9ubHkpCisJCURlZmF1bHQgaXMgMQorCQlDYW4gYmUgYWxzbyBzZXQgdXNpbmcgc3lzZnMgd2hpY2ggaXMgcHJlZmVyYWJsZS4KKwkJbW9uYXJjaHRpbWVvdXQ6CisJCVNldHMgdGhlIHRpbWUgaW4gdXMgdG8gd2FpdCBmb3Igb3RoZXIgQ1BVcyBvbiBtYWNoaW5lIGNoZWNrcy4gMAorCQl0byBkaXNhYmxlLgorICAgbWNlPWJpb3NfY21jaV90aHJlc2hvbGQKKwkJRG9uJ3Qgb3ZlcndyaXRlIHRoZSBiaW9zLXNldCBDTUNJIHRocmVzaG9sZC4gVGhpcyBib290IG9wdGlvbgorCQlwcmV2ZW50cyBMaW51eCBmcm9tIG92ZXJ3cml0aW5nIHRoZSBDTUNJIHRocmVzaG9sZCBzZXQgYnkgdGhlCisJCWJpb3MuIFdpdGhvdXQgdGhpcyBvcHRpb24sIExpbnV4IGFsd2F5cyBzZXRzIHRoZSBDTUNJCisJCXRocmVzaG9sZCB0byAxLiBFbmFibGluZyB0aGlzIG1heSBtYWtlIG1lbW9yeSBwcmVkaWN0aXZlIGZhaWx1cmUKKwkJYW5hbHlzaXMgbGVzcyBlZmZlY3RpdmUgaWYgdGhlIGJpb3Mgc2V0cyB0aHJlc2hvbGRzIGZvciBtZW1vcnkKKwkJZXJyb3JzIHNpbmNlIHdlIHdpbGwgbm90IHNlZSBkZXRhaWxzIGZvciBhbGwgZXJyb3JzLgorCisgICBub21jZSAoZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBpMzg2KTogc2FtZSBhcyBtY2U9b2ZmCisKKyAgIEV2ZXJ5dGhpbmcgZWxzZSBpcyBpbiBzeXNmcyBub3cuCisKK0FQSUNzCisKKyAgIGFwaWMJCSBVc2UgSU8tQVBJQy4gRGVmYXVsdAorCisgICBub2FwaWMJIERvbid0IHVzZSB0aGUgSU8tQVBJQy4KKworICAgZGlzYWJsZWFwaWMJIERvbid0IHVzZSB0aGUgbG9jYWwgQVBJQworCisgICBub2xhcGljCSBEb24ndCB1c2UgdGhlIGxvY2FsIEFQSUMgKGFsaWFzIGZvciBpMzg2IGNvbXBhdGliaWxpdHkpCisKKyAgIHBpcnE9Li4uCSBTZWUgRG9jdW1lbnRhdGlvbi94ODYvaTM4Ni9JTy1BUElDLnR4dAorCisgICBub2FwaWN0aW1lcgkgRG9uJ3Qgc2V0IHVwIHRoZSBBUElDIHRpbWVyCisKKyAgIG5vX3RpbWVyX2NoZWNrIERvbid0IGNoZWNrIHRoZSBJTy1BUElDIHRpbWVyLiBUaGlzIGNhbiB3b3JrIGFyb3VuZAorCQkgcHJvYmxlbXMgd2l0aCBpbmNvcnJlY3QgdGltZXIgaW5pdGlhbGl6YXRpb24gb24gc29tZSBib2FyZHMuCisgICBhcGljcG10aW1lcgorCQkgRG8gQVBJQyB0aW1lciBjYWxpYnJhdGlvbiB1c2luZyB0aGUgcG10aW1lci4gSW1wbGllcworCQkgYXBpY21haW50aW1lci4gVXNlZnVsIHdoZW4geW91ciBQSVQgdGltZXIgaXMgdG90YWxseQorCQkgYnJva2VuLgorCitUaW1pbmcKKworICBub3RzYworICBEb24ndCB1c2UgdGhlIENQVSB0aW1lIHN0YW1wIGNvdW50ZXIgdG8gcmVhZCB0aGUgd2FsbCB0aW1lLgorICBUaGlzIGNhbiBiZSB1c2VkIHRvIHdvcmsgYXJvdW5kIHRpbWluZyBwcm9ibGVtcyBvbiBtdWx0aXByb2Nlc3NvciBzeXN0ZW1zCisgIHdpdGggbm90IHByb3Blcmx5IHN5bmNocm9uaXplZCBDUFVzLgorCisgIG5vaHBldAorICBEb24ndCB1c2UgdGhlIEhQRVQgdGltZXIuCisKK0lkbGUgbG9vcAorCisgIGlkbGU9cG9sbAorICBEb24ndCBkbyBwb3dlciBzYXZpbmcgaW4gdGhlIGlkbGUgbG9vcCB1c2luZyBITFQsIGJ1dCBwb2xsIGZvciByZXNjaGVkdWxpbmcKKyAgZXZlbnQuIFRoaXMgd2lsbCBtYWtlIHRoZSBDUFVzIGVhdCBhIGxvdCBtb3JlIHBvd2VyLCBidXQgbWF5IGJlIHVzZWZ1bAorICB0byBnZXQgc2xpZ2h0bHkgYmV0dGVyIHBlcmZvcm1hbmNlIGluIG11bHRpcHJvY2Vzc29yIGJlbmNobWFya3MuIEl0IGFsc28KKyAgbWFrZXMgc29tZSBwcm9maWxpbmcgdXNpbmcgcGVyZm9ybWFuY2UgY291bnRlcnMgbW9yZSBhY2N1cmF0ZS4KKyAgUGxlYXNlIG5vdGUgdGhhdCBvbiBzeXN0ZW1zIHdpdGggTU9OSVRPUi9NV0FJVCBzdXBwb3J0IChsaWtlIEludGVsIEVNNjRUCisgIENQVXMpIHRoaXMgb3B0aW9uIGhhcyBubyBwZXJmb3JtYW5jZSBhZHZhbnRhZ2Ugb3ZlciB0aGUgbm9ybWFsIGlkbGUgbG9vcC4KKyAgSXQgbWF5IGFsc28gaW50ZXJhY3QgYmFkbHkgd2l0aCBoeXBlcnRocmVhZGluZy4KKworUmVib290aW5nCisKKyAgIHJlYm9vdD1iW2lvc10gfCB0W3JpcGxlXSB8IGtbYmRdIHwgYVtjcGldIHwgZVtmaV0gWywgW3ddYXJtIHwgW2Ndb2xkXQorICAgYmlvcwkgIFVzZSB0aGUgQ1BVIHJlYm9vdCB2ZWN0b3IgZm9yIHdhcm0gcmVzZXQKKyAgIHdhcm0gICBEb24ndCBzZXQgdGhlIGNvbGQgcmVib290IGZsYWcKKyAgIGNvbGQgICBTZXQgdGhlIGNvbGQgcmVib290IGZsYWcKKyAgIHRyaXBsZSBGb3JjZSBhIHRyaXBsZSBmYXVsdCAoaW5pdCkKKyAgIGtiZCAgICBVc2UgdGhlIGtleWJvYXJkIGNvbnRyb2xsZXIuIGNvbGQgcmVzZXQgKGRlZmF1bHQpCisgICBhY3BpICAgVXNlIHRoZSBBQ1BJIFJFU0VUX1JFRyBpbiB0aGUgRkFEVC4gSWYgQUNQSSBpcyBub3QgY29uZmlndXJlZCBvciB0aGUKKyAgICAgICAgICBBQ1BJIHJlc2V0IGRvZXMgbm90IHdvcmssIHRoZSByZWJvb3QgcGF0aCBhdHRlbXB0cyB0aGUgcmVzZXQgdXNpbmcKKyAgICAgICAgICB0aGUga2V5Ym9hcmQgY29udHJvbGxlci4KKyAgIGVmaSAgICBVc2UgZWZpIHJlc2V0X3N5c3RlbSBydW50aW1lIHNlcnZpY2UuIElmIEVGSSBpcyBub3QgY29uZmlndXJlZCBvciB0aGUKKyAgICAgICAgICBFRkkgcmVzZXQgZG9lcyBub3Qgd29yaywgdGhlIHJlYm9vdCBwYXRoIGF0dGVtcHRzIHRoZSByZXNldCB1c2luZworICAgICAgICAgIHRoZSBrZXlib2FyZCBjb250cm9sbGVyLgorCisgICBVc2luZyB3YXJtIHJlc2V0IHdpbGwgYmUgbXVjaCBmYXN0ZXIgZXNwZWNpYWxseSBvbiBiaWcgbWVtb3J5CisgICBzeXN0ZW1zIGJlY2F1c2UgdGhlIEJJT1Mgd2lsbCBub3QgZ28gdGhyb3VnaCB0aGUgbWVtb3J5IGNoZWNrLgorICAgRGlzYWR2YW50YWdlIGlzIHRoYXQgbm90IGFsbCBoYXJkd2FyZSB3aWxsIGJlIGNvbXBsZXRlbHkgcmVpbml0aWFsaXplZAorICAgb24gcmVib290IHNvIHRoZXJlIG1heSBiZSBib290IHByb2JsZW1zIG9uIHNvbWUgc3lzdGVtcy4KKworICAgcmVib290PWZvcmNlCisKKyAgIERvbid0IHN0b3Agb3RoZXIgQ1BVcyBvbiByZWJvb3QuIFRoaXMgY2FuIG1ha2UgcmVib290IG1vcmUgcmVsaWFibGUKKyAgIGluIHNvbWUgY2FzZXMuCisKK05vbiBFeGVjdXRhYmxlIE1hcHBpbmdzCisKKyAgbm9leGVjPW9ufG9mZgorCisgIG9uICAgICAgRW5hYmxlKGRlZmF1bHQpCisgIG9mZiAgICAgRGlzYWJsZQorCitOVU1BCisKKyAgbnVtYT1vZmYJT25seSBzZXQgdXAgYSBzaW5nbGUgTlVNQSBub2RlIHNwYW5uaW5nIGFsbCBtZW1vcnkuCisKKyAgbnVtYT1ub2FjcGkgICBEb24ndCBwYXJzZSB0aGUgU1JBVCB0YWJsZSBmb3IgTlVNQSBzZXR1cAorCisgIG51bWE9ZmFrZT08c2l6ZT5bTUddCisJCUlmIGdpdmVuIGFzIGEgbWVtb3J5IHVuaXQsIGZpbGxzIGFsbCBzeXN0ZW0gUkFNIHdpdGggbm9kZXMgb2YKKwkJc2l6ZSBpbnRlcmxlYXZlZCBvdmVyIHBoeXNpY2FsIG5vZGVzLgorCisgIG51bWE9ZmFrZT08Tj4KKwkJSWYgZ2l2ZW4gYXMgYW4gaW50ZWdlciwgZmlsbHMgYWxsIHN5c3RlbSBSQU0gd2l0aCBOIGZha2Ugbm9kZXMKKwkJaW50ZXJsZWF2ZWQgb3ZlciBwaHlzaWNhbCBub2Rlcy4KKworQUNQSQorCisgIGFjcGk9b2ZmCURvbid0IGVuYWJsZSBBQ1BJCisgIGFjcGk9aHQJVXNlIEFDUEkgYm9vdCB0YWJsZSBwYXJzaW5nLCBidXQgZG9uJ3QgZW5hYmxlIEFDUEkKKwkJaW50ZXJwcmV0ZXIKKyAgYWNwaT1mb3JjZQlGb3JjZSBBQ1BJIG9uIChjdXJyZW50bHkgbm90IG5lZWRlZCkKKworICBhY3BpPXN0cmljdCAgIERpc2FibGUgb3V0IG9mIHNwZWMgQUNQSSB3b3JrYXJvdW5kcy4KKworICBhY3BpX3NjaT17ZWRnZSxsZXZlbCxoaWdoLGxvd30gIFNldCB1cCBBQ1BJIFNDSSBpbnRlcnJ1cHQuCisKKyAgYWNwaT1ub2lycQlEb24ndCByb3V0ZSBpbnRlcnJ1cHRzCisKKyAgYWNwaT1ub2NtY2ZmCURpc2FibGUgZmlybXdhcmUgZmlyc3QgbW9kZSBmb3IgY29ycmVjdGVkIGVycm9ycy4gVGhpcworCQlkaXNhYmxlcyBwYXJzaW5nIHRoZSBIRVNUIENNQyBlcnJvciBzb3VyY2UgdG8gY2hlY2sgaWYKKwkJZmlybXdhcmUgaGFzIHNldCB0aGUgRkYgZmxhZy4gVGhpcyBtYXkgcmVzdWx0IGluCisJCWR1cGxpY2F0ZSBjb3JyZWN0ZWQgZXJyb3IgcmVwb3J0cy4KKworUENJCisKKyAgcGNpPW9mZgkJRG9uJ3QgdXNlIFBDSQorICBwY2k9Y29uZjEJCVVzZSBjb25mMSBhY2Nlc3MuCisgIHBjaT1jb25mMgkJVXNlIGNvbmYyIGFjY2Vzcy4KKyAgcGNpPXJvbQkJQXNzaWduIFJPTXMuCisgIHBjaT1hc3NpZ24tYnVzc2VzCUFzc2lnbiBidXNzZXMKKyAgcGNpPWlycW1hc2s9TUFTSwlTZXQgUENJIGludGVycnVwdCBtYXNrIHRvIE1BU0sKKyAgcGNpPWxhc3RidXM9TlVNQkVSCVNjYW4gdXAgdG8gTlVNQkVSIGJ1c3Nlcywgbm8gbWF0dGVyIHdoYXQgdGhlIG1wdGFibGUgc2F5cy4KKyAgcGNpPW5vYWNwaQkJRG9uJ3QgdXNlIEFDUEkgdG8gc2V0IHVwIFBDSSBpbnRlcnJ1cHQgcm91dGluZy4KKworSU9NTVUgKGlucHV0L291dHB1dCBtZW1vcnkgbWFuYWdlbWVudCB1bml0KQorCisgQ3VycmVudGx5IGZvdXIgeDg2LTY0IFBDSS1ETUEgbWFwcGluZyBpbXBsZW1lbnRhdGlvbnMgZXhpc3Q6CisKKyAgIDEuIDxhcmNoL3g4Nl82NC9rZXJuZWwvcGNpLW5vbW11LmM+OiB1c2Ugbm8gaGFyZHdhcmUvc29mdHdhcmUgSU9NTVUgYXQgYWxsCisgICAgICAoZS5nLiBiZWNhdXNlIHlvdSBoYXZlIDwgMyBHQiBtZW1vcnkpLgorICAgICAgS2VybmVsIGJvb3QgbWVzc2FnZTogIlBDSS1ETUE6IERpc2FibGluZyBJT01NVSIKKworICAgMi4gPGFyY2gveDg2L2tlcm5lbC9hbWRfZ2FydF82NC5jPjogQU1EIEdBUlQgYmFzZWQgaGFyZHdhcmUgSU9NTVUuCisgICAgICBLZXJuZWwgYm9vdCBtZXNzYWdlOiAiUENJLURNQTogdXNpbmcgR0FSVCBJT01NVSIKKworICAgMy4gPGFyY2gveDg2XzY0L2tlcm5lbC9wY2ktc3dpb3RsYi5jPiA6IFNvZnR3YXJlIElPTU1VIGltcGxlbWVudGF0aW9uLiBVc2VkCisgICAgICBlLmcuIGlmIHRoZXJlIGlzIG5vIGhhcmR3YXJlIElPTU1VIGluIHRoZSBzeXN0ZW0gYW5kIGl0IGlzIG5lZWQgYmVjYXVzZQorICAgICAgeW91IGhhdmUgPjNHQiBtZW1vcnkgb3IgdG9sZCB0aGUga2VybmVsIHRvIHVzIGl0IChpb21tdT1zb2Z0KSkKKyAgICAgIEtlcm5lbCBib290IG1lc3NhZ2U6ICJQQ0ktRE1BOiBVc2luZyBzb2Z0d2FyZSBib3VuY2UgYnVmZmVyaW5nCisgICAgICBmb3IgSU8gKFNXSU9UTEIpIgorCisgICA0LiA8YXJjaC94ODZfNjQvcGNpLWNhbGdhcnkuYz4gOiBJQk0gQ2FsZ2FyeSBoYXJkd2FyZSBJT01NVS4gVXNlZCBpbiBJQk0KKyAgICAgIHBTZXJpZXMgYW5kIHhTZXJpZXMgc2VydmVycy4gVGhpcyBoYXJkd2FyZSBJT01NVSBzdXBwb3J0cyBETUEgYWRkcmVzcworICAgICAgbWFwcGluZyB3aXRoIG1lbW9yeSBwcm90ZWN0aW9uLCBldGMuCisgICAgICBLZXJuZWwgYm9vdCBtZXNzYWdlOiAiUENJLURNQTogVXNpbmcgQ2FsZ2FyeSBJT01NVSIKKworIGlvbW11PVs8c2l6ZT5dWyxub2FncF1bLG9mZl1bLGZvcmNlXVssbm9mb3JjZV1bLGxlYWtbPTxucl9vZl9sZWFrX3BhZ2VzPl0KKwlbLG1lbWFwZXJbPTxvcmRlcj5dXVssbWVyZ2VdWyxmb3JjZXNhY11bLGZ1bGxmbHVzaF1bLG5vbWVyZ2VdCisJWyxub2FwZXJ0dXJlXVssY2FsZ2FyeV0KKworICBHZW5lcmFsIGlvbW11IG9wdGlvbnM6CisgICAgb2ZmICAgICAgICAgICAgICAgIERvbid0IGluaXRpYWxpemUgYW5kIHVzZSBhbnkga2luZCBvZiBJT01NVS4KKyAgICBub2ZvcmNlICAgICAgICAgICAgRG9uJ3QgZm9yY2UgaGFyZHdhcmUgSU9NTVUgdXNhZ2Ugd2hlbiBpdCBpcyBub3QgbmVlZGVkLgorICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCkuCisgICAgZm9yY2UgICAgICAgICAgICAgIEZvcmNlIHRoZSB1c2Ugb2YgdGhlIGhhcmR3YXJlIElPTU1VIGV2ZW4gd2hlbiBpdCBpcworICAgICAgICAgICAgICAgICAgICAgICBub3QgYWN0dWFsbHkgbmVlZGVkIChlLmcuIGJlY2F1c2UgPCAzIEdCIG1lbW9yeSkuCisgICAgc29mdCAgICAgICAgICAgICAgIFVzZSBzb2Z0d2FyZSBib3VuY2UgYnVmZmVyaW5nIChTV0lPVExCKSAoZGVmYXVsdCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgSW50ZWwgbWFjaGluZXMpLiBUaGlzIGNhbiBiZSB1c2VkIHRvIHByZXZlbnQgdGhlIHVzYWdlCisgICAgICAgICAgICAgICAgICAgICAgIG9mIGFuIGF2YWlsYWJsZSBoYXJkd2FyZSBJT01NVS4KKworICBpb21tdSBvcHRpb25zIG9ubHkgcmVsZXZhbnQgdG8gdGhlIEFNRCBHQVJUIGhhcmR3YXJlIElPTU1VOgorICAgIDxzaXplPiAgICAgICAgICAgICBTZXQgdGhlIHNpemUgb2YgdGhlIHJlbWFwcGluZyBhcmVhIGluIGJ5dGVzLgorICAgIGFsbG93ZWQgICAgICAgICAgICBPdmVyd3JpdGUgaW9tbXUgb2ZmIHdvcmthcm91bmRzIGZvciBzcGVjaWZpYyBjaGlwc2V0cy4KKyAgICBmdWxsZmx1c2ggICAgICAgICAgRmx1c2ggSU9NTVUgb24gZWFjaCBhbGxvY2F0aW9uIChkZWZhdWx0KS4KKyAgICBub2Z1bGxmbHVzaCAgICAgICAgRG9uJ3QgdXNlIElPTU1VIGZ1bGxmbHVzaC4KKyAgICBsZWFrICAgICAgICAgICAgICAgVHVybiBvbiBzaW1wbGUgaW9tbXUgbGVhayB0cmFjaW5nIChvbmx5IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgQ09ORklHX0lPTU1VX0xFQUsgaXMgb24pLiBEZWZhdWx0IG51bWJlciBvZiBsZWFrIHBhZ2VzCisgICAgICAgICAgICAgICAgICAgICAgIGlzIDIwLgorICAgIG1lbWFwZXJbPTxvcmRlcj5dICBBbGxvY2F0ZSBhbiBvd24gYXBlcnR1cmUgb3ZlciBSQU0gd2l0aCBzaXplIDMyTUI8PG9yZGVyLgorICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdDogb3JkZXI9MSwgaS5lLiA2NE1CKQorICAgIG1lcmdlICAgICAgICAgICAgICBEbyBzY2F0dGVyLWdhdGhlciAoU0cpIG1lcmdpbmcuIEltcGxpZXMgImZvcmNlIgorICAgICAgICAgICAgICAgICAgICAgICAoZXhwZXJpbWVudGFsKS4KKyAgICBub21lcmdlICAgICAgICAgICAgRG9uJ3QgZG8gc2NhdHRlci1nYXRoZXIgKFNHKSBtZXJnaW5nLgorICAgIG5vYXBlcnR1cmUgICAgICAgICBBc2sgdGhlIElPTU1VIG5vdCB0byB0b3VjaCB0aGUgYXBlcnR1cmUgZm9yIEFHUC4KKyAgICBmb3JjZXNhYyAgICAgICAgICAgRm9yY2Ugc2luZ2xlLWFkZHJlc3MgY3ljbGUgKFNBQykgbW9kZSBmb3IgbWFza3MgPDQwYml0cworICAgICAgICAgICAgICAgICAgICAgICAoZXhwZXJpbWVudGFsKS4KKyAgICBub2FncCAgICAgICAgICAgICAgRG9uJ3QgaW5pdGlhbGl6ZSB0aGUgQUdQIGRyaXZlciBhbmQgdXNlIGZ1bGwgYXBlcnR1cmUuCisgICAgYWxsb3dkYWMgICAgICAgICAgIEFsbG93IGRvdWJsZS1hZGRyZXNzIGN5Y2xlIChEQUMpIG1vZGUsIGkuZS4gRE1BID40R0IuCisgICAgICAgICAgICAgICAgICAgICAgIERBQyBpcyB1c2VkIHdpdGggMzItYml0IFBDSSB0byBwdXNoIGEgNjQtYml0IGFkZHJlc3MgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgdHdvIGN5Y2xlcy4gV2hlbiBvZmYgYWxsIERNQSBvdmVyID40R0IgaXMgZm9yY2VkIHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgICAgYW4gSU9NTVUgb3Igc29mdHdhcmUgYm91bmNlIGJ1ZmZlcmluZy4KKyAgICBub2RhYyAgICAgICAgICAgICAgRm9yYmlkIERBQyBtb2RlLCBpLmUuIERNQSA+NEdCLgorICAgIHBhbmljICAgICAgICAgICAgICBBbHdheXMgcGFuaWMgd2hlbiBJT01NVSBvdmVyZmxvd3MuCisgICAgY2FsZ2FyeSAgICAgICAgICAgIFVzZSB0aGUgQ2FsZ2FyeSBJT01NVSBpZiBpdCBpcyBhdmFpbGFibGUKKworICBpb21tdSBvcHRpb25zIG9ubHkgcmVsZXZhbnQgdG8gdGhlIHNvZnR3YXJlIGJvdW5jZSBidWZmZXJpbmcgKFNXSU9UTEIpIElPTU1VCisgIGltcGxlbWVudGF0aW9uOgorICAgIHN3aW90bGI9PHBhZ2VzPlssZm9yY2VdCisgICAgPHBhZ2VzPiAgICAgICAgICAgIFByZXJlc2VydmUgdGhhdCBtYW55IDEyOEsgcGFnZXMgZm9yIHRoZSBzb2Z0d2FyZSBJTworICAgICAgICAgICAgICAgICAgICAgICBib3VuY2UgYnVmZmVyaW5nLgorICAgIGZvcmNlICAgICAgICAgICAgICBGb3JjZSBhbGwgSU8gdGhyb3VnaCB0aGUgc29mdHdhcmUgVExCLgorCisgIFNldHRpbmdzIGZvciB0aGUgSUJNIENhbGdhcnkgaGFyZHdhcmUgSU9NTVUgY3VycmVudGx5IGZvdW5kIGluIElCTQorICBwU2VyaWVzIGFuZCB4U2VyaWVzIG1hY2hpbmVzOgorCisgICAgY2FsZ2FyeT1bNjRrLDEyOGssMjU2ayw1MTJrLDFNLDJNLDRNLDhNXQorICAgIGNhbGdhcnk9W3RyYW5zbGF0ZV9lbXB0eV9zbG90c10KKyAgICBjYWxnYXJ5PVtkaXNhYmxlPTxQQ0kgYnVzIG51bWJlcj5dCisgICAgcGFuaWMgICAgICAgICAgICAgIEFsd2F5cyBwYW5pYyB3aGVuIElPTU1VIG92ZXJmbG93cworCisgICAgNjRrLC4uLiw4TSAtIFNldCB0aGUgc2l6ZSBvZiBlYWNoIFBDSSBzbG90J3MgdHJhbnNsYXRpb24gdGFibGUKKyAgICB3aGVuIHVzaW5nIHRoZSBDYWxnYXJ5IElPTU1VLiBUaGlzIGlzIHRoZSBzaXplIG9mIHRoZSB0cmFuc2xhdGlvbgorICAgIHRhYmxlIGl0c2VsZiBpbiBtYWluIG1lbW9yeS4gVGhlIHNtYWxsZXN0IHRhYmxlLCA2NGssIGNvdmVycyBhbiBJTworICAgIHNwYWNlIG9mIDMyTUI7IHRoZSBsYXJnZXN0LCA4TUIgdGFibGUsIGNhbiBjb3ZlciBhbiBJTyBzcGFjZSBvZgorICAgIDRHQi4gTm9ybWFsbHkgdGhlIGtlcm5lbCB3aWxsIG1ha2UgdGhlIHJpZ2h0IGNob2ljZSBieSBpdHNlbGYuCisKKyAgICB0cmFuc2xhdGVfZW1wdHlfc2xvdHMgLSBFbmFibGUgdHJhbnNsYXRpb24gZXZlbiBvbiBzbG90cyB0aGF0IGhhdmUKKyAgICBubyBkZXZpY2VzIGF0dGFjaGVkIHRvIHRoZW0sIGluIGNhc2UgYSBkZXZpY2Ugd2lsbCBiZSBob3RwbHVnZ2VkCisgICAgaW4gdGhlIGZ1dHVyZS4KKworICAgIGRpc2FibGU9PFBDSSBidXMgbnVtYmVyPiAtIERpc2FibGUgdHJhbnNsYXRpb24gb24gYSBnaXZlbiBQSEIuIEZvcgorICAgIGV4YW1wbGUsIHRoZSBidWlsdC1pbiBncmFwaGljcyBhZGFwdGVyIHJlc2lkZXMgb24gdGhlIGZpcnN0IGJyaWRnZQorICAgIChQQ0kgYnVzIG51bWJlciAwKTsgaWYgdHJhbnNsYXRpb24gKGlzb2xhdGlvbikgaXMgZW5hYmxlZCBvbiB0aGlzCisgICAgYnJpZGdlLCBYIHNlcnZlcnMgdGhhdCBhY2Nlc3MgdGhlIGhhcmR3YXJlIGRpcmVjdGx5IGZyb20gdXNlcgorICAgIHNwYWNlIG1pZ2h0IHN0b3Agd29ya2luZy4gVXNlIHRoaXMgb3B0aW9uIGlmIHlvdSBoYXZlIGRldmljZXMgdGhhdAorICAgIGFyZSBhY2Nlc3NlZCBmcm9tIHVzZXJzcGFjZSBkaXJlY3RseSBvbiBzb21lIFBDSSBob3N0IGJyaWRnZS4KKworRGVidWdnaW5nCisKKyAga3N0YWNrPU4JUHJpbnQgTiB3b3JkcyBmcm9tIHRoZSBrZXJuZWwgc3RhY2sgaW4gb29wcyBkdW1wcy4KKworTWlzY2VsbGFuZW91cworCisJbm9nYnBhZ2VzCisJCURvIG5vdCB1c2UgR0IgcGFnZXMgZm9yIGtlcm5lbCBkaXJlY3QgbWFwcGluZ3MuCisJZ2JwYWdlcworCQlVc2UgR0IgcGFnZXMgZm9yIGtlcm5lbCBkaXJlY3QgbWFwcGluZ3MuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3g4Ni94ODZfNjQvY3B1LWhvdHBsdWctc3BlYyBiL0RvY3VtZW50YXRpb24veDg2L3g4Nl82NC9jcHUtaG90cGx1Zy1zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjMjNlMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3g4Ni94ODZfNjQvY3B1LWhvdHBsdWctc3BlYwpAQCAtMCwwICsxLDIxIEBACitGaXJtd2FyZSBzdXBwb3J0IGZvciBDUFUgaG90cGx1ZyB1bmRlciBMaW51eC94ODYtNjQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitMaW51eC94ODYtNjQgc3VwcG9ydHMgQ1BVIGhvdHBsdWcgbm93LiBGb3IgdmFyaW91cyByZWFzb25zIExpbnV4IHdhbnRzIHRvCitrbm93IGluIGFkdmFuY2Ugb2YgYm9vdCB0aW1lIHRoZSBtYXhpbXVtIG51bWJlciBvZiBDUFVzIHRoYXQgY291bGQgYmUgcGx1Z2dlZAoraW50byB0aGUgc3lzdGVtLiBBQ1BJIDMuMCBjdXJyZW50bHkgaGFzIG5vIG9mZmljaWFsIHdheSB0byBzdXBwbHkKK3RoaXMgaW5mb3JtYXRpb24gZnJvbSB0aGUgZmlybXdhcmUgdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0uCisKK0luIEFDUEkgZWFjaCBDUFUgbmVlZHMgYW4gTEFQSUMgb2JqZWN0IGluIHRoZSBNQURUIHRhYmxlICg1LjIuMTEuNSBpbiB0aGUKK0FDUEkgMy4wIHNwZWNpZmljYXRpb24pLiAgQUNQSSBhbHJlYWR5IGhhcyB0aGUgY29uY2VwdCBvZiBkaXNhYmxlZCBMQVBJQworb2JqZWN0cyBieSBzZXR0aW5nIHRoZSBFbmFibGVkIGJpdCBpbiB0aGUgTEFQSUMgb2JqZWN0IHRvIHplcm8uCisKK0ZvciBDUFUgaG90cGx1ZyBMaW51eC94ODYtNjQgZXhwZWN0cyBub3cgdGhhdCBhbnkgcG9zc2libGUgZnV0dXJlIGhvdHBsdWdnYWJsZQorQ1BVIGlzIGFscmVhZHkgYXZhaWxhYmxlIGluIHRoZSBNQURULiBJZiB0aGUgQ1BVIGlzIG5vdCBhdmFpbGFibGUgeWV0CitpdCBzaG91bGQgaGF2ZSBpdHMgTEFQSUMgRW5hYmxlZCBiaXQgc2V0IHRvIDAuIExpbnV4IHdpbGwgdXNlIHRoZSBudW1iZXIKK29mIGRpc2FibGVkIExBUElDcyB0byBjb21wdXRlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBmdXR1cmUgQ1BVcy4KKworSW4gdGhlIHdvcnN0IGNhc2UgdGhlIHVzZXIgY2FuIG92ZXJ3cml0ZSB0aGlzIGNob2ljZSB1c2luZyBhIGNvbW1hbmQgbGluZQorb3B0aW9uIChhZGRpdGlvbmFsX2NwdXM9Li4uKSwgYnV0IGl0IGlzIHJlY29tbWVuZGVkIHRvIHN1cHBseSB0aGUgY29ycmVjdAorbnVtYmVyIChvciBhIHJlYXNvbmFibGUgYXBwcm94aW1hdGlvbiBvZiBpdCwgd2l0aCBlcnJpbmcgdG93YXJkcyBtb3JlIG5vdCBsZXNzKQoraW4gdGhlIE1BRFQgdG8gYXZvaWQgbWFudWFsIGNvbmZpZ3VyYXRpb24uCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3g4Ni94ODZfNjQvZmFrZS1udW1hLWZvci1jcHVzZXRzIGIvRG9jdW1lbnRhdGlvbi94ODYveDg2XzY0L2Zha2UtbnVtYS1mb3ItY3B1c2V0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjExZDliCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi94ODYveDg2XzY0L2Zha2UtbnVtYS1mb3ItY3B1c2V0cwpAQCAtMCwwICsxLDY3IEBACitVc2luZyBudW1hPWZha2UgYW5kIENQVVNldHMgZm9yIFJlc291cmNlIE1hbmFnZW1lbnQKK1dyaXR0ZW4gYnkgRGF2aWQgUmllbnRqZXMgPHJpZW50amVzQGNzLndhc2hpbmd0b24uZWR1PgorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyBob3cgdGhlIG51bWE9ZmFrZSB4ODZfNjQgY29tbWFuZC1saW5lIG9wdGlvbiBjYW4gYmUgdXNlZAoraW4gY29uanVuY3Rpb24gd2l0aCBjcHVzZXRzIGZvciBjb2Fyc2UgbWVtb3J5IG1hbmFnZW1lbnQuICBVc2luZyB0aGlzIGZlYXR1cmUsCit5b3UgY2FuIGNyZWF0ZSBmYWtlIE5VTUEgbm9kZXMgdGhhdCByZXByZXNlbnQgY29udGlndW91cyBjaHVua3Mgb2YgbWVtb3J5IGFuZAorYXNzaWduIHRoZW0gdG8gY3B1c2V0cyBhbmQgdGhlaXIgYXR0YWNoZWQgdGFza3MuICBUaGlzIGlzIGEgd2F5IG9mIGxpbWl0aW5nIHRoZQorYW1vdW50IG9mIHN5c3RlbSBtZW1vcnkgdGhhdCBhcmUgYXZhaWxhYmxlIHRvIGEgY2VydGFpbiBjbGFzcyBvZiB0YXNrcy4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGZlYXR1cmVzIG9mIGNwdXNldHMsIHNlZQorRG9jdW1lbnRhdGlvbi9jZ3JvdXBzL2NwdXNldHMudHh0LgorVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyB5b3UgY2FuIHVzZSBmb3IgeW91ciBuZWVkcy4gIEZvcgorbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgbnVtYT1mYWtlIGNvbW1hbmQgbGluZSBvcHRpb24gYW5kIGl0cyB2YXJpb3VzIHdheXMgb2YKK2NvbmZpZ3VyaW5nIGZha2Ugbm9kZXMsIHNlZSBEb2N1bWVudGF0aW9uL3g4Ni94ODZfNjQvYm9vdC1vcHRpb25zLnR4dC4KKworRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGludHJvZHVjdGlvbiwgd2UnbGwgYXNzdW1lIGEgdmVyeSBwcmltaXRpdmUgTlVNQQorZW11bGF0aW9uIHNldHVwIG9mICJudW1hPWZha2U9NCo1MTIsIi4gIFRoaXMgd2lsbCBzcGxpdCBvdXIgc3lzdGVtIG1lbW9yeSBpbnRvCitmb3VyIGVxdWFsIGNodW5rcyBvZiA1MTJNIGVhY2ggdGhhdCB3ZSBjYW4gbm93IHVzZSB0byBhc3NpZ24gdG8gY3B1c2V0cy4gIEFzCit5b3UgYmVjb21lIG1vcmUgZmFtaWxpYXIgd2l0aCB1c2luZyB0aGlzIGNvbWJpbmF0aW9uIGZvciByZXNvdXJjZSBjb250cm9sLAoreW91J2xsIGRldGVybWluZSBhIGJldHRlciBzZXR1cCB0byBtaW5pbWl6ZSB0aGUgbnVtYmVyIG9mIG5vZGVzIHlvdSBoYXZlIHRvIGRlYWwKK3dpdGguCisKK0EgbWFjaGluZSBtYXkgYmUgc3BsaXQgYXMgZm9sbG93cyB3aXRoICJudW1hPWZha2U9NCo1MTIsIiBhcyByZXBvcnRlZCBieSBkbWVzZzoKKworCUZha2luZyBub2RlIDAgYXQgMDAwMDAwMDAwMDAwMDAwMC0wMDAwMDAwMDIwMDAwMDAwICg1MTJNQikKKwlGYWtpbmcgbm9kZSAxIGF0IDAwMDAwMDAwMjAwMDAwMDAtMDAwMDAwMDA0MDAwMDAwMCAoNTEyTUIpCisJRmFraW5nIG5vZGUgMiBhdCAwMDAwMDAwMDQwMDAwMDAwLTAwMDAwMDAwNjAwMDAwMDAgKDUxMk1CKQorCUZha2luZyBub2RlIDMgYXQgMDAwMDAwMDA2MDAwMDAwMC0wMDAwMDAwMDgwMDAwMDAwICg1MTJNQikKKwkuLi4KKwlPbiBub2RlIDAgdG90YWxwYWdlczogMTMwOTc1CisJT24gbm9kZSAxIHRvdGFscGFnZXM6IDEzMTA3MgorCU9uIG5vZGUgMiB0b3RhbHBhZ2VzOiAxMzEwNzIKKwlPbiBub2RlIDMgdG90YWxwYWdlczogMTMxMDcyCisKK05vdyBmb2xsb3dpbmcgdGhlIGluc3RydWN0aW9ucyBmb3IgbW91bnRpbmcgdGhlIGNwdXNldHMgZmlsZXN5c3RlbSBmcm9tCitEb2N1bWVudGF0aW9uL2Nncm91cHMvY3B1c2V0cy50eHQsIHlvdSBjYW4gYXNzaWduIGZha2Ugbm9kZXMgKGkuZS4gY29udGlndW91cyBtZW1vcnkKK2FkZHJlc3Mgc3BhY2VzKSB0byBpbmRpdmlkdWFsIGNwdXNldHM6CisKKwlbcm9vdEB4cm9hZHMgL10jIG1rZGlyIGV4YW1wbGVzZXQKKwlbcm9vdEB4cm9hZHMgL10jIG1vdW50IC10IGNwdXNldCBub25lIGV4YW1wbGVzZXQKKwlbcm9vdEB4cm9hZHMgL10jIG1rZGlyIGV4YW1wbGVzZXQvZGRzZXQKKwlbcm9vdEB4cm9hZHMgL10jIGNkIGV4YW1wbGVzZXQvZGRzZXQKKwlbcm9vdEB4cm9hZHMgL2V4YW1wbGVzZXQvZGRzZXRdIyBlY2hvIDAtMSA+IGNwdXMKKwlbcm9vdEB4cm9hZHMgL2V4YW1wbGVzZXQvZGRzZXRdIyBlY2hvIDAtMSA+IG1lbXMKKworTm93IHRoaXMgY3B1c2V0LCAnZGRzZXQnLCB3aWxsIG9ubHkgYWxsb3dlZCBhY2Nlc3MgdG8gZmFrZSBub2RlcyAwIGFuZCAxIGZvcgorbWVtb3J5IGFsbG9jYXRpb25zICgxRykuCisKK1lvdSBjYW4gbm93IGFzc2lnbiB0YXNrcyB0byB0aGVzZSBjcHVzZXRzIHRvIGxpbWl0IHRoZSBtZW1vcnkgcmVzb3VyY2VzCithdmFpbGFibGUgdG8gdGhlbSBhY2NvcmRpbmcgdG8gdGhlIGZha2Ugbm9kZXMgYXNzaWduZWQgYXMgbWVtczoKKworCVtyb290QHhyb2FkcyAvZXhhbXBsZXNldC9kZHNldF0jIGVjaG8gJCQgPiB0YXNrcworCVtyb290QHhyb2FkcyAvZXhhbXBsZXNldC9kZHNldF0jIGRkIGlmPS9kZXYvemVybyBvZj10bXAgYnM9MTAyNCBjb3VudD0xRworCVsxXSAxMzQyNQorCitOb3RpY2UgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgc3lzdGVtIG1lbW9yeSB1c2FnZSBhcyByZXBvcnRlZCBieQorL3Byb2MvbWVtaW5mbyBiZXR3ZWVuIHRoZSByZXN0cmljdGVkIGNwdXNldCBjYXNlIGFib3ZlIGFuZCB0aGUgdW5yZXN0cmljdGVkCitjYXNlIChpLmUuIHJ1bm5pbmcgdGhlIHNhbWUgJ2RkJyBjb21tYW5kIHdpdGhvdXQgYXNzaWduaW5nIGl0IHRvIGEgZmFrZSBOVU1BCitjcHVzZXQpOgorCQkJCVVucmVzdHJpY3RlZAlSZXN0cmljdGVkCisJTWVtVG90YWw6CQkzMDkxOTAwIGtCCTMwOTE5MDAga0IKKwlNZW1GcmVlOgkJICA0MjExMyBrQgkxNTEzMjM2IGtCCisKK1RoaXMgYWxsb3dzIGZvciBjb2Fyc2UgbWVtb3J5IG1hbmFnZW1lbnQgZm9yIHRoZSB0YXNrcyB5b3UgYXNzaWduIHRvIHBhcnRpY3VsYXIKK2NwdXNldHMuICBTaW5jZSBjcHVzZXRzIGNhbiBmb3JtIGEgaGllcmFyY2h5LCB5b3UgY2FuIGNyZWF0ZSBzb21lIHByZXR0eQoraW50ZXJlc3RpbmcgY29tYmluYXRpb25zIG9mIHVzZS1jYXNlcyBmb3IgdmFyaW91cyBjbGFzc2VzIG9mIHRhc2tzIGZvciB5b3VyCittZW1vcnkgbWFuYWdlbWVudCBuZWVkcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24veDg2L3g4Nl82NC9tYWNoaW5lY2hlY2sgYi9Eb2N1bWVudGF0aW9uL3g4Ni94ODZfNjQvbWFjaGluZWNoZWNrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxZmIzMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3g4Ni94ODZfNjQvbWFjaGluZWNoZWNrCkBAIC0wLDAgKzEsODMgQEAKKworQ29uZmlndXJhYmxlIHN5c2ZzIHBhcmFtZXRlcnMgZm9yIHRoZSB4ODYtNjQgbWFjaGluZSBjaGVjayBjb2RlLgorCitNYWNoaW5lIGNoZWNrcyByZXBvcnQgaW50ZXJuYWwgaGFyZHdhcmUgZXJyb3IgY29uZGl0aW9ucyBkZXRlY3RlZAorYnkgdGhlIENQVS4gVW5jb3JyZWN0ZWQgZXJyb3JzIHR5cGljYWxseSBjYXVzZSBhIG1hY2hpbmUgY2hlY2sKKyhvZnRlbiB3aXRoIHBhbmljKSwgY29ycmVjdGVkIG9uZXMgY2F1c2UgYSBtYWNoaW5lIGNoZWNrIGxvZyBlbnRyeS4KKworTWFjaGluZSBjaGVja3MgYXJlIG9yZ2FuaXplZCBpbiBiYW5rcyAobm9ybWFsbHkgYXNzb2NpYXRlZCB3aXRoCithIGhhcmR3YXJlIHN1YnN5c3RlbSkgYW5kIHN1YmV2ZW50cyBpbiBhIGJhbmsuIFRoZSBleGFjdCBtZWFuaW5nCitvZiB0aGUgYmFua3MgYW5kIHN1YmV2ZW50IGlzIENQVSBzcGVjaWZpYy4KKworbWNlbG9nIGtub3dzIGhvdyB0byBkZWNvZGUgdGhlbS4KKworV2hlbiB5b3Ugc2VlIHRoZSAiTWFjaGluZSBjaGVjayBlcnJvcnMgbG9nZ2VkIiBtZXNzYWdlIGluIHRoZSBzeXN0ZW0KK2xvZyB0aGVuIG1jZWxvZyBzaG91bGQgcnVuIHRvIGNvbGxlY3QgYW5kIGRlY29kZSBtYWNoaW5lIGNoZWNrIGVudHJpZXMKK2Zyb20gL2Rldi9tY2Vsb2cuIE5vcm1hbGx5IG1jZWxvZyBzaG91bGQgYmUgcnVuIHJlZ3VsYXJseSBmcm9tIGEgY3JvbmpvYi4KKworRWFjaCBDUFUgaGFzIGEgZGlyZWN0b3J5IGluIC9zeXMvZGV2aWNlcy9zeXN0ZW0vbWFjaGluZWNoZWNrL21hY2hpbmVjaGVja04KKyhOID0gQ1BVIG51bWJlcikKKworVGhlIGRpcmVjdG9yeSBjb250YWlucyBzb21lIGNvbmZpZ3VyYWJsZSBlbnRyaWVzOgorCitFbnRyaWVzOgorCitiYW5rTmN0bAorKE4gYmFuayBudW1iZXIpCisJNjRiaXQgSGV4IGJpdG1hc2sgZW5hYmxpbmcvZGlzYWJsaW5nIHNwZWNpZmljIHN1YmV2ZW50cyBmb3IgYmFuayBOCisJV2hlbiBhIGJpdCBpbiB0aGUgYml0bWFzayBpcyB6ZXJvIHRoZW4gdGhlIHJlc3BlY3RpdmUKKwlzdWJldmVudCB3aWxsIG5vdCBiZSByZXBvcnRlZC4KKwlCeSBkZWZhdWx0IGFsbCBldmVudHMgYXJlIGVuYWJsZWQuCisJTm90ZSB0aGF0IEJJT1MgbWFpbnRhaW4gYW5vdGhlciBtYXNrIHRvIGRpc2FibGUgc3BlY2lmaWMgZXZlbnRzCisJcGVyIGJhbmsuICBUaGlzIGlzIG5vdCB2aXNpYmxlIGhlcmUKKworVGhlIGZvbGxvd2luZyBlbnRyaWVzIGFwcGVhciBmb3IgZWFjaCBDUFUsIGJ1dCB0aGV5IGFyZSB0cnVseSBzaGFyZWQKK2JldHdlZW4gYWxsIENQVXMuCisKK2NoZWNrX2ludGVydmFsCisJSG93IG9mdGVuIHRvIHBvbGwgZm9yIGNvcnJlY3RlZCBtYWNoaW5lIGNoZWNrIGVycm9ycywgaW4gc2Vjb25kcworCShOb3RlIG91dHB1dCBpcyBoZXhhZGVtaWNhbCkuIERlZmF1bHQgNSBtaW51dGVzLiAgV2hlbiB0aGUgcG9sbGVyCisJZmluZHMgTUNFcyBpdCB0cmlnZ2VycyBhbiBleHBvbmVudGlhbCBzcGVlZHVwIChwb2xsIG1vcmUgb2Z0ZW4pIG9uCisJdGhlIHBvbGxpbmcgaW50ZXJ2YWwuICBXaGVuIHRoZSBwb2xsZXIgc3RvcHMgZmluZGluZyBNQ0VzLCBpdAorCXRyaWdnZXJzIGFuIGV4cG9uZW50aWFsIGJhY2tvZmYgKHBvbGwgbGVzcyBvZnRlbikgb24gdGhlIHBvbGxpbmcKKwlpbnRlcnZhbC4gVGhlIGNoZWNrX2ludGVydmFsIHZhcmlhYmxlIGlzIGJvdGggdGhlIGluaXRpYWwgYW5kCisJbWF4aW11bSBwb2xsaW5nIGludGVydmFsLiAwIG1lYW5zIG5vIHBvbGxpbmcgZm9yIGNvcnJlY3RlZCBtYWNoaW5lCisJY2hlY2sgZXJyb3JzIChidXQgc29tZSBjb3JyZWN0ZWQgZXJyb3JzIG1pZ2h0IGJlIHN0aWxsIHJlcG9ydGVkCisJaW4gb3RoZXIgd2F5cykKKwordG9sZXJhbnQKKwlUb2xlcmFuY2UgbGV2ZWwuIFdoZW4gYSBtYWNoaW5lIGNoZWNrIGV4Y2VwdGlvbiBvY2N1cnMgZm9yIGEgbm9uCisJY29ycmVjdGVkIG1hY2hpbmUgY2hlY2sgdGhlIGtlcm5lbCBjYW4gdGFrZSBkaWZmZXJlbnQgYWN0aW9ucy4KKwlTaW5jZSBtYWNoaW5lIGNoZWNrIGV4Y2VwdGlvbnMgY2FuIGhhcHBlbiBhbnkgdGltZSBpdCBpcyBzb21ldGltZXMKKwlyaXNreSBmb3IgdGhlIGtlcm5lbCB0byBraWxsIGEgcHJvY2VzcyBiZWNhdXNlIGl0IGRlZmllcworCW5vcm1hbCBrZXJuZWwgbG9ja2luZyBydWxlcy4gVGhlIHRvbGVyYW5jZSBsZXZlbCBjb25maWd1cmVzCisJaG93IGhhcmQgdGhlIGtlcm5lbCB0cmllcyB0byByZWNvdmVyIGV2ZW4gYXQgc29tZSByaXNrIG9mCisJZGVhZGxvY2suICBIaWdoZXIgdG9sZXJhbnQgdmFsdWVzIHRyYWRlIHBvdGVudGlhbGx5IGJldHRlciB1cHRpbWUKKwl3aXRoIHRoZSByaXNrIG9mIGEgY3Jhc2ggb3IgZXZlbiBjb3JydXB0aW9uIChmb3IgdG9sZXJhbnQgPj0gMykuCisKKwkwOiBhbHdheXMgcGFuaWMgb24gdW5jb3JyZWN0ZWQgZXJyb3JzLCBsb2cgY29ycmVjdGVkIGVycm9ycworCTE6IHBhbmljIG9yIFNJR0JVUyBvbiB1bmNvcnJlY3RlZCBlcnJvcnMsIGxvZyBjb3JyZWN0ZWQgZXJyb3JzCisJMjogU0lHQlVTIG9yIGxvZyB1bmNvcnJlY3RlZCBlcnJvcnMsIGxvZyBjb3JyZWN0ZWQgZXJyb3JzCisJMzogbmV2ZXIgcGFuaWMgb3IgU0lHQlVTLCBsb2cgYWxsIGVycm9ycyAoZm9yIHRlc3Rpbmcgb25seSkKKworCURlZmF1bHQ6IDEKKworCU5vdGUgdGhpcyBvbmx5IG1ha2VzIGEgZGlmZmVyZW5jZSBpZiB0aGUgQ1BVIGFsbG93cyByZWNvdmVyeQorCWZyb20gYSBtYWNoaW5lIGNoZWNrIGV4Y2VwdGlvbi4gQ3VycmVudCB4ODYgQ1BVcyBnZW5lcmFsbHkgZG8gbm90LgorCit0cmlnZ2VyCisJUHJvZ3JhbSB0byBydW4gd2hlbiBhIG1hY2hpbmUgY2hlY2sgZXZlbnQgaXMgZGV0ZWN0ZWQuCisJVGhpcyBpcyBhbiBhbHRlcm5hdGl2ZSB0byBydW5uaW5nIG1jZWxvZyByZWd1bGFybHkgZnJvbSBjcm9uCisJYW5kIGFsbG93cyB0byBkZXRlY3QgZXZlbnRzIGZhc3Rlci4KK21vbmFyY2hfdGltZW91dAorCUhvdyBsb25nIHRvIHdhaXQgZm9yIHRoZSBvdGhlciBDUFVzIHRvIG1hY2hpbmUgY2hlY2sgdG9vIG9uIGEKKwlleGNlcHRpb24uIDAgdG8gZGlzYWJsZSB3YWl0aW5nIGZvciBvdGhlciBDUFVzLgorCVVuaXQ6IHVzCisKK1RCRCBkb2N1bWVudCBlbnRyaWVzIGZvciBBTUQgdGhyZXNob2xkIGludGVycnVwdCBjb25maWd1cmF0aW9uCisKK0ZvciBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIHg4NiBtYWNoaW5lIGNoZWNrIGFyY2hpdGVjdHVyZQorc2VlIHRoZSBJbnRlbCBhbmQgQU1EIGFyY2hpdGVjdHVyZSBtYW51YWxzIGZyb20gdGhlaXIgZGV2ZWxvcGVyIHdlYnNpdGVzLgorCitGb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSBhcmNoaXRlY3R1cmUgc2VlCitzZWUgaHR0cDovL29uZS5maXJzdGZsb29yLm9yZy9+YW5kaS9tY2UucGRmCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3g4Ni94ODZfNjQvbW0udHh0IGIvRG9jdW1lbnRhdGlvbi94ODYveDg2XzY0L21tLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTcxMmFjCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi94ODYveDg2XzY0L21tLnR4dApAQCAtMCwwICsxLDQyIEBACisKKzxwcmV2aW91cyBkZXNjcmlwdGlvbiBvYnNvbGV0ZSwgZGVsZXRlZD4KKworVmlydHVhbCBtZW1vcnkgbWFwIHdpdGggNCBsZXZlbCBwYWdlIHRhYmxlczoKKworMDAwMDAwMDAwMDAwMDAwMCAtIDAwMDA3ZmZmZmZmZmZmZmYgKD00NyBiaXRzKSB1c2VyIHNwYWNlLCBkaWZmZXJlbnQgcGVyIG1tCitob2xlIGNhdXNlZCBieSBbNDg6NjNdIHNpZ24gZXh0ZW5zaW9uCitmZmZmODAwMDAwMDAwMDAwIC0gZmZmZjg3ZmZmZmZmZmZmZiAoPTQzIGJpdHMpIGd1YXJkIGhvbGUsIHJlc2VydmVkIGZvciBoeXBlcnZpc29yCitmZmZmODgwMDAwMDAwMDAwIC0gZmZmZmM3ZmZmZmZmZmZmZiAoPTY0IFRCKSBkaXJlY3QgbWFwcGluZyBvZiBhbGwgcGh5cy4gbWVtb3J5CitmZmZmYzgwMDAwMDAwMDAwIC0gZmZmZmM4ZmZmZmZmZmZmZiAoPTQwIGJpdHMpIGhvbGUKK2ZmZmZjOTAwMDAwMDAwMDAgLSBmZmZmZThmZmZmZmZmZmZmICg9NDUgYml0cykgdm1hbGxvYy9pb3JlbWFwIHNwYWNlCitmZmZmZTkwMDAwMDAwMDAwIC0gZmZmZmU5ZmZmZmZmZmZmZiAoPTQwIGJpdHMpIGhvbGUKK2ZmZmZlYTAwMDAwMDAwMDAgLSBmZmZmZWFmZmZmZmZmZmZmICg9NDAgYml0cykgdmlydHVhbCBtZW1vcnkgbWFwICgxVEIpCisuLi4gdW51c2VkIGhvbGUgLi4uCitmZmZmZWMwMDAwMDAwMDAwIC0gZmZmZmZjMDAwMDAwMDAwMCAoPTQ0IGJpdHMpIGthc2FuIHNoYWRvdyBtZW1vcnkgKDE2VEIpCisuLi4gdW51c2VkIGhvbGUgLi4uCitmZmZmZmYwMDAwMDAwMDAwIC0gZmZmZmZmN2ZmZmZmZmZmZiAoPTM5IGJpdHMpICVlc3AgZml4dXAgc3RhY2tzCisuLi4gdW51c2VkIGhvbGUgLi4uCitmZmZmZmZmZjgwMDAwMDAwIC0gZmZmZmZmZmZhMDAwMDAwMCAoPTUxMiBNQikgIGtlcm5lbCB0ZXh0IG1hcHBpbmcsIGZyb20gcGh5cyAwCitmZmZmZmZmZmEwMDAwMDAwIC0gZmZmZmZmZmZmZjVmZmZmZiAoPTE1MjUgTUIpIG1vZHVsZSBtYXBwaW5nIHNwYWNlCitmZmZmZmZmZmZmNjAwMDAwIC0gZmZmZmZmZmZmZmRmZmZmZiAoPTggTUIpIHZzeXNjYWxscworZmZmZmZmZmZmZmUwMDAwMCAtIGZmZmZmZmZmZmZmZmZmZmYgKD0yIE1CKSB1bnVzZWQgaG9sZQorCitUaGUgZGlyZWN0IG1hcHBpbmcgY292ZXJzIGFsbCBtZW1vcnkgaW4gdGhlIHN5c3RlbSB1cCB0byB0aGUgaGlnaGVzdAorbWVtb3J5IGFkZHJlc3MgKHRoaXMgbWVhbnMgaW4gc29tZSBjYXNlcyBpdCBjYW4gYWxzbyBpbmNsdWRlIFBDSSBtZW1vcnkKK2hvbGVzKS4KKwordm1hbGxvYyBzcGFjZSBpcyBsYXppbHkgc3luY2hyb25pemVkIGludG8gdGhlIGRpZmZlcmVudCBQTUw0IHBhZ2VzIG9mCit0aGUgcHJvY2Vzc2VzIHVzaW5nIHRoZSBwYWdlIGZhdWx0IGhhbmRsZXIsIHdpdGggaW5pdF9sZXZlbDRfcGd0IGFzCityZWZlcmVuY2UuCisKK0N1cnJlbnQgWDg2LTY0IGltcGxlbWVudGF0aW9ucyBvbmx5IHN1cHBvcnQgNDAgYml0cyBvZiBhZGRyZXNzIHNwYWNlLAorYnV0IHdlIHN1cHBvcnQgdXAgdG8gNDYgYml0cy4gVGhpcyBleHBhbmRzIGludG8gTUJaIHNwYWNlIGluIHRoZSBwYWdlIHRhYmxlcy4KKworLT50cmFtcG9saW5lX3BnZDoKKworV2UgbWFwIEVGSSBydW50aW1lIHNlcnZpY2VzIGluIHRoZSBhZm9yZW1lbnRpb25lZCBQR0QgaW4gdGhlIHZpcnR1YWwKK3JhbmdlIG9mIDY0R2IgKGFyYml0cmFyaWx5IHNldCwgY2FuIGJlIHJhaXNlZCBpZiBuZWVkZWQpCisKKzB4ZmZmZmZmZWYwMDAwMDAwMCAtIDB4ZmZmZmZmZmYwMDAwMDAwMAorCistQW5kaSBLbGVlbiwgSnVsIDIwMDQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24veDg2L3g4Nl82NC91ZWZpLnR4dCBiL0RvY3VtZW50YXRpb24veDg2L3g4Nl82NC91ZWZpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWUyYjRmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi94ODYveDg2XzY0L3VlZmkudHh0CkBAIC0wLDAgKzEsNDIgQEAKK0dlbmVyYWwgbm90ZSBvbiBbVV1FRkkgeDg2XzY0IHN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG5vbWVuY2xhdHVyZSBFRkkgYW5kIFVFRkkgYXJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IGluIHRoaXMgZG9jdW1lbnQuCisKK0FsdGhvdWdoIHRoZSB0b29scyBiZWxvdyBhcmUgX25vdF8gbmVlZGVkIGZvciBidWlsZGluZyB0aGUga2VybmVsLAordGhlIG5lZWRlZCBib290bG9hZGVyIHN1cHBvcnQgYW5kIGFzc29jaWF0ZWQgdG9vbHMgZm9yIHg4Nl82NCBwbGF0Zm9ybXMKK3dpdGggRUZJIGZpcm13YXJlIGFuZCBzcGVjaWZpY2F0aW9ucyBhcmUgbGlzdGVkIGJlbG93LgorCisxLiBVRUZJIHNwZWNpZmljYXRpb246ICBodHRwOi8vd3d3LnVlZmkub3JnCisKKzIuIEJvb3RpbmcgTGludXgga2VybmVsIG9uIFVFRkkgeDg2XzY0IHBsYXRmb3JtIHJlcXVpcmVzIGJvb3Rsb2FkZXIKKyAgIHN1cHBvcnQuIEVsaWxvIHdpdGggeDg2XzY0IHN1cHBvcnQgY2FuIGJlIHVzZWQuCisKKzMuIHg4Nl82NCBwbGF0Zm9ybSB3aXRoIEVGSS9VRUZJIGZpcm13YXJlLgorCitNZWNoYW5pY3M6CistLS0tLS0tLS0KKy0gQnVpbGQgdGhlIGtlcm5lbCB3aXRoIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbi4KKwlDT05GSUdfRkJfRUZJPXkKKwlDT05GSUdfRlJBTUVCVUZGRVJfQ09OU09MRT15CisgIElmIEVGSSBydW50aW1lIHNlcnZpY2VzIGFyZSBleHBlY3RlZCwgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIHNob3VsZAorICBiZSBzZWxlY3RlZC4KKwlDT05GSUdfRUZJPXkKKwlDT05GSUdfRUZJX1ZBUlM9eSBvciBtCQkjIG9wdGlvbmFsCistIENyZWF0ZSBhIFZGQVQgcGFydGl0aW9uIG9uIHRoZSBkaXNrCistIENvcHkgdGhlIGZvbGxvd2luZyB0byB0aGUgVkZBVCBwYXJ0aXRpb246CisJZWxpbG8gYm9vdGxvYWRlciB3aXRoIHg4Nl82NCBzdXBwb3J0LCBlbGlsbyBjb25maWd1cmF0aW9uIGZpbGUsCisJa2VybmVsIGltYWdlIGJ1aWx0IGluIGZpcnN0IHN0ZXAgYW5kIGNvcnJlc3BvbmRpbmcKKwlpbml0cmQuIEluc3RydWN0aW9ucyBvbiBidWlsZGluZyBlbGlsbwlhbmQgaXRzIGRlcGVuZGVuY2llcworCWNhbiBiZSBmb3VuZCBpbiB0aGUgZWxpbG8gc291cmNlZm9yZ2UgcHJvamVjdC4KKy0gQm9vdCB0byBFRkkgc2hlbGwgYW5kIGludm9rZSBlbGlsbyBjaG9vc2luZyB0aGUga2VybmVsIGltYWdlIGJ1aWx0CisgIGluIGZpcnN0IHN0ZXAuCistIElmIHNvbWUgb3IgYWxsIEVGSSBydW50aW1lIHNlcnZpY2VzIGRvbid0IHdvcmssIHlvdSBjYW4gdHJ5IGZvbGxvd2luZworICBrZXJuZWwgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMgdG8gdHVybiBvZmYgc29tZSBvciBhbGwgRUZJIHJ1bnRpbWUKKyAgc2VydmljZXMuCisJbm9lZmkJCXR1cm4gb2ZmIGFsbCBFRkkgcnVudGltZSBzZXJ2aWNlcworCXJlYm9vdF90eXBlPWsJdHVybiBvZmYgRUZJIHJlYm9vdCBydW50aW1lIHNlcnZpY2UKKy0gSWYgdGhlIEVGSSBtZW1vcnkgbWFwIGhhcyBhZGRpdGlvbmFsIGVudHJpZXMgbm90IGluIHRoZSBFODIwIG1hcCwKKyAgeW91IGNhbiBpbmNsdWRlIHRob3NlIGVudHJpZXMgaW4gdGhlIGtlcm5lbHMgbWVtb3J5IG1hcCBvZiBhdmFpbGFibGUKKyAgcGh5c2ljYWwgUkFNIGJ5IHVzaW5nIHRoZSBmb2xsb3dpbmcga2VybmVsIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXIuCisJYWRkX2VmaV9tZW1tYXAJaW5jbHVkZSBFRkkgbWVtb3J5IG1hcCBvZiBhdmFpbGFibGUgcGh5c2ljYWwgUkFNCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3g4Ni96ZXJvLXBhZ2UudHh0IGIvRG9jdW1lbnRhdGlvbi94ODYvemVyby1wYWdlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWE0ZDM0Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi94ODYvemVyby1wYWdlLnR4dApAQCAtMCwwICsxLDM4IEBACitUaGUgYWRkaXRpb25hbCBmaWVsZHMgaW4gc3RydWN0IGJvb3RfcGFyYW1zIGFzIGEgcGFydCBvZiAzMi1iaXQgYm9vdAorcHJvdG9jb2wgb2Yga2VybmVsLiBUaGVzZSBzaG91bGQgYmUgZmlsbGVkIGJ5IGJvb3Rsb2FkZXIgb3IgMTYtYml0CityZWFsLW1vZGUgc2V0dXAgY29kZSBvZiB0aGUga2VybmVsLiBSZWZlcmVuY2VzL3NldHRpbmdzIHRvIGl0IG1haW5seQorYXJlIGluOgorCisgIGFyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vYm9vdHBhcmFtLmgKKworCitPZmZzZXQJUHJvdG8JTmFtZQkJTWVhbmluZworL1NpemUKKworMDAwLzA0MAlBTEwJc2NyZWVuX2luZm8JVGV4dCBtb2RlIG9yIGZyYW1lIGJ1ZmZlciBpbmZvcm1hdGlvbgorCQkJCShzdHJ1Y3Qgc2NyZWVuX2luZm8pCiswNDAvMDE0CUFMTAlhcG1fYmlvc19pbmZvCUFQTSBCSU9TIGluZm9ybWF0aW9uIChzdHJ1Y3QgYXBtX2Jpb3NfaW5mbykKKzA1OC8wMDgJQUxMCXRib290X2FkZHIgICAgICBQaHlzaWNhbCBhZGRyZXNzIG9mIHRib290IHNoYXJlZCBwYWdlCiswNjAvMDEwCUFMTAlpc3RfaW5mbwlJbnRlbCBTcGVlZFN0ZXAgKElTVCkgQklPUyBzdXBwb3J0IGluZm9ybWF0aW9uCisJCQkJKHN0cnVjdCBpc3RfaW5mbykKKzA4MC8wMTAJQUxMCWhkMF9pbmZvCWhkMCBkaXNrIHBhcmFtZXRlciwgT0JTT0xFVEUhIQorMDkwLzAxMAlBTEwJaGQxX2luZm8JaGQxIGRpc2sgcGFyYW1ldGVyLCBPQlNPTEVURSEhCiswQTAvMDEwCUFMTAlzeXNfZGVzY190YWJsZQlTeXN0ZW0gZGVzY3JpcHRpb24gdGFibGUgKHN0cnVjdCBzeXNfZGVzY190YWJsZSksCisJCQkJT0JTT0xFVEUhIQorMEIwLzAxMAlBTEwJb2xwY19vZndfaGVhZGVyCU9MUEMncyBPcGVuRmlybXdhcmUgQ0lGIGFuZCBmcmllbmRzCiswQzAvMDA0CUFMTAlleHRfcmFtZGlza19pbWFnZSByYW1kaXNrX2ltYWdlIGhpZ2ggMzJiaXRzCiswQzQvMDA0CUFMTAlleHRfcmFtZGlza19zaXplICByYW1kaXNrX3NpemUgaGlnaCAzMmJpdHMKKzBDOC8wMDQJQUxMCWV4dF9jbWRfbGluZV9wdHIgIGNtZF9saW5lX3B0ciBoaWdoIDMyYml0cworMTQwLzA4MAlBTEwJZWRpZF9pbmZvCVZpZGVvIG1vZGUgc2V0dXAgKHN0cnVjdCBlZGlkX2luZm8pCisxQzAvMDIwCUFMTAllZmlfaW5mbwlFRkkgMzIgaW5mb3JtYXRpb24gKHN0cnVjdCBlZmlfaW5mbykKKzFFMC8wMDQJQUxMCWFsa19tZW1fawlBbHRlcm5hdGl2ZSBtZW0gY2hlY2ssIGluIEtCCisxRTQvMDA0CUFMTAlzY3JhdGNoCQlTY3JhdGNoIGZpZWxkIGZvciB0aGUga2VybmVsIHNldHVwIGNvZGUKKzFFOC8wMDEJQUxMCWU4MjBfZW50cmllcwlOdW1iZXIgb2YgZW50cmllcyBpbiBlODIwX21hcCAoYmVsb3cpCisxRTkvMDAxCUFMTAllZGRidWZfZW50cmllcwlOdW1iZXIgb2YgZW50cmllcyBpbiBlZGRidWYgKGJlbG93KQorMUVBLzAwMQlBTEwJZWRkX21icl9zaWdfYnVmX2VudHJpZXMJTnVtYmVyIG9mIGVudHJpZXMgaW4gZWRkX21icl9zaWdfYnVmZmVyCisJCQkJKGJlbG93KQorMUVGLzAwMQlBTEwJc2VudGluZWwJVXNlZCB0byBkZXRlY3QgYnJva2VuIGJvb3Rsb2FkZXJzCisyOTAvMDQwCUFMTAllZGRfbWJyX3NpZ19idWZmZXIgRUREIE1CUiBzaWduYXR1cmVzCisyRDAvQTAwCUFMTAllODIwX21hcAlFODIwIG1lbW9yeSBtYXAgdGFibGUKKwkJCQkoYXJyYXkgb2Ygc3RydWN0IGU4MjBlbnRyeSkKK0QwMC8xRUMJQUxMCWVkZGJ1ZgkJRUREIGRhdGEgKGFycmF5IG9mIHN0cnVjdCBlZGRfaW5mbykKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24veGlsbHlidXMudHh0IGIvRG9jdW1lbnRhdGlvbi94aWxseWJ1cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFkMTExYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24veGlsbHlidXMudHh0CkBAIC0wLDAgKzEsMzgwIEBACisKKyAgICAgICAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICAgICAgICAgICAgWGlsbHlidXMgZHJpdmVyIGZvciBnZW5lcmljIEZQR0EgaW50ZXJmYWNlCisgICAgICAgICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQXV0aG9yOiBFbGkgQmlsbGF1ZXIsIFhpbGx5YnVzIEx0ZC4gKGh0dHA6Ly94aWxseWJ1cy5jb20pCitFbWFpbDogIGVsaS5iaWxsYXVlckBnbWFpbC5jb20gb3IgYXMgYWR2ZXJ0aXNlZCBvbiBYaWxseWJ1cycgc2l0ZS4KKworQ29udGVudHM6CisKKyAtIEludHJvZHVjdGlvbgorICAtLSBCYWNrZ3JvdW5kCisgIC0tIFhpbGx5YnVzIE92ZXJ2aWV3CisKKyAtIFVzYWdlCisgIC0tIFVzZXIgaW50ZXJmYWNlCisgIC0tIFN5bmNocm9uaXphdGlvbgorICAtLSBTZWVrYWJsZSBwaXBlcworCistIEludGVybmFscworICAtLSBTb3VyY2UgY29kZSBvcmdhbml6YXRpb24KKyAgLS0gUGlwZSBhdHRyaWJ1dGVzCisgIC0tIEhvc3QgbmV2ZXIgcmVhZHMgZnJvbSB0aGUgRlBHQQorICAtLSBDaGFubmVscywgcGlwZXMsIGFuZCB0aGUgbWVzc2FnZSBjaGFubmVsCisgIC0tIERhdGEgc3RyZWFtaW5nCisgIC0tIERhdGEgZ3JhbnVsYXJpdHkKKyAgLS0gUHJvYmluZworICAtLSBCdWZmZXIgYWxsb2NhdGlvbgorICAtLSBUaGUgIm5vbmVtcHR5IiBtZXNzYWdlIChzdXBwb3J0aW5nIHBvbGwpCisKKworSU5UUk9EVUNUSU9OCis9PT09PT09PT09PT0KKworQmFja2dyb3VuZAorLS0tLS0tLS0tLQorCitBbiBGUEdBIChGaWVsZCBQcm9ncmFtbWFibGUgR2F0ZSBBcnJheSkgaXMgYSBwaWVjZSBvZiBsb2dpYyBoYXJkd2FyZSwgd2hpY2gKK2NhbiBiZSBwcm9ncmFtbWVkIHRvIGJlY29tZSB2aXJ0dWFsbHkgYW55dGhpbmcgdGhhdCBpcyB1c3VhbGx5IGZvdW5kIGFzIGEKK2RlZGljYXRlZCBjaGlwc2V0OiBGb3IgaW5zdGFuY2UsIGEgZGlzcGxheSBhZGFwdGVyLCBuZXR3b3JrIGludGVyZmFjZSBjYXJkLAorb3IgZXZlbiBhIHByb2Nlc3NvciB3aXRoIGl0cyBwZXJpcGhlcmFscy4gRlBHQXMgYXJlIHRoZSBMRUdPIG9mIGhhcmR3YXJlOgorQmFzZWQgdXBvbiBjZXJ0YWluIGJ1aWxkaW5nIGJsb2NrcywgeW91IG1ha2UgeW91ciBvd24gdG95cyB0aGUgd2F5IHlvdSBsaWtlCit0aGVtLiBJdCdzIHVzdWFsbHkgcG9pbnRsZXNzIHRvIHJlaW1wbGVtZW50IHNvbWV0aGluZyB0aGF0IGlzIGFscmVhZHkKK2F2YWlsYWJsZSBvbiB0aGUgbWFya2V0IGFzIGEgY2hpcHNldCwgc28gRlBHQXMgYXJlIG1vc3RseSB1c2VkIHdoZW4gc29tZQorc3BlY2lhbCBmdW5jdGlvbmFsaXR5IGlzIG5lZWRlZCwgYW5kIHRoZSBwcm9kdWN0aW9uIHZvbHVtZSBpcyByZWxhdGl2ZWx5IGxvdworKGhlbmNlIG5vdCBqdXN0aWZ5aW5nIHRoZSBkZXZlbG9wbWVudCBvZiBhbiBBU0lDKS4KKworVGhlIGNoYWxsZW5nZSB3aXRoIEZQR0FzIGlzIHRoYXQgZXZlcnl0aGluZyBpcyBpbXBsZW1lbnRlZCBhdCBhIHZlcnkgbG93CitsZXZlbCwgZXZlbiBsb3dlciB0aGFuIGFzc2VtYmx5IGxhbmd1YWdlLiBJbiBvcmRlciB0byBhbGxvdyBGUEdBIGRlc2lnbmVycyB0bworZm9jdXMgb24gdGhlaXIgc3BlY2lmaWMgcHJvamVjdCwgYW5kIG5vdCByZWludmVudCB0aGUgd2hlZWwgb3ZlciBhbmQgb3ZlcgorYWdhaW4sIHByZS1kZXNpZ25lZCBidWlsZGluZyBibG9ja3MsIElQIGNvcmVzLCBhcmUgb2Z0ZW4gdXNlZC4gVGhlc2UgYXJlIHRoZQorRlBHQSBwYXJhbGxlbHMgb2YgbGlicmFyeSBmdW5jdGlvbnMuIElQIGNvcmVzIG1heSBpbXBsZW1lbnQgY2VydGFpbgorbWF0aGVtYXRpY2FsIGZ1bmN0aW9ucywgYSBmdW5jdGlvbmFsIHVuaXQgKGUuZy4gYSBVU0IgaW50ZXJmYWNlKSwgYW4gZW50aXJlCitwcm9jZXNzb3IgKGUuZy4gQVJNKSBvciBhbnl0aGluZyB0aGF0IG1pZ2h0IGNvbWUgaGFuZHkuIFRoaW5rIG9mIHRoZW0gYXMgYQorYnVpbGRpbmcgYmxvY2ssIHdpdGggZWxlY3RyaWNhbCB3aXJlcyBkYW5nbGluZyBvbiB0aGUgc2lkZXMgZm9yIGNvbm5lY3Rpb24gdG8KK290aGVyIGJsb2Nrcy4KKworT25lIG9mIHRoZSBkYXVudGluZyB0YXNrcyBpbiBGUEdBIGRlc2lnbiBpcyBjb21tdW5pY2F0aW5nIHdpdGggYSBmdWxsYmxvd24KK29wZXJhdGluZyBzeXN0ZW0gKGFjdHVhbGx5LCB3aXRoIHRoZSBwcm9jZXNzb3IgcnVubmluZyBpdCk6IEltcGxlbWVudGluZyB0aGUKK2xvdy1sZXZlbCBidXMgcHJvdG9jb2wgYW5kIHRoZSBzb21ld2hhdCBoaWdoZXItbGV2ZWwgaW50ZXJmYWNlIHdpdGggdGhlIGhvc3QKKyhyZWdpc3RlcnMsIGludGVycnVwdHMsIERNQSBldGMuKSBpcyBhIHByb2plY3QgaW4gaXRzZWxmLiBXaGVuIHRoZSBGUEdBJ3MKK2Z1bmN0aW9uIGlzIGEgd2VsbC1rbm93biBvbmUgKGUuZy4gYSB2aWRlbyBhZGFwdGVyIGNhcmQsIG9yIGEgTklDKSwgaXQgY2FuCittYWtlIHNlbnNlIHRvIGRlc2lnbiB0aGUgRlBHQSdzIGludGVyZmFjZSBsb2dpYyBzcGVjaWZpY2FsbHkgZm9yIHRoZSBwcm9qZWN0LgorQSBzcGVjaWFsIGRyaXZlciBpcyB0aGVuIHdyaXR0ZW4gdG8gcHJlc2VudCB0aGUgRlBHQSBhcyBhIHdlbGwta25vd24gaW50ZXJmYWNlCit0byB0aGUga2VybmVsIGFuZC9vciB1c2VyIHNwYWNlLiBJbiB0aGF0IGNhc2UsIHRoZXJlIGlzIG5vIHJlYXNvbiB0byB0cmVhdCB0aGUKK0ZQR0EgZGlmZmVyZW50bHkgdGhhbiBhbnkgZGV2aWNlIG9uIHRoZSBidXMuCisKK0l0J3MgaG93ZXZlciBjb21tb24gdGhhdCB0aGUgZGVzaXJlZCBkYXRhIGNvbW11bmljYXRpb24gZG9lc24ndCBmaXQgYW55IHdlbGwtCitrbm93biBwZXJpcGhlcmFsIGZ1bmN0aW9uLiBBbHNvLCB0aGUgZWZmb3J0IG9mIGRlc2lnbmluZyBhbiBlbGVnYW50CithYnN0cmFjdGlvbiBmb3IgdGhlIGRhdGEgZXhjaGFuZ2UgaXMgb2Z0ZW4gY29uc2lkZXJlZCB0b28gYmlnLiBJbiB0aG9zZSBjYXNlcywKK2EgcXVpY2tlciBhbmQgcG9zc2libHkgbGVzcyBlbGVnYW50IHNvbHV0aW9uIGlzIHNvdWdodDogVGhlIGRyaXZlciBpcworZWZmZWN0aXZlbHkgd3JpdHRlbiBhcyBhIHVzZXIgc3BhY2UgcHJvZ3JhbSwgbGVhdmluZyB0aGUga2VybmVsIHNwYWNlIHBhcnQKK3dpdGgganVzdCBlbGVtZW50YXJ5IGRhdGEgdHJhbnNwb3J0LiBUaGlzIHN0aWxsIHJlcXVpcmVzIGRlc2lnbmluZyBzb21lCitpbnRlcmZhY2UgbG9naWMgZm9yIHRoZSBGUEdBLCBhbmQgd3JpdGUgYSBzaW1wbGUgYWQtaG9jIGRyaXZlciBmb3IgdGhlIGtlcm5lbC4KKworWGlsbHlidXMgT3ZlcnZpZXcKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1hpbGx5YnVzIGlzIGFuIElQIGNvcmUgYW5kIGEgTGludXggZHJpdmVyLiBUb2dldGhlciwgdGhleSBmb3JtIGEga2l0IGZvcgorZWxlbWVudGFyeSBkYXRhIHRyYW5zcG9ydCBiZXR3ZWVuIGFuIEZQR0EgYW5kIHRoZSBob3N0LCBwcm92aWRpbmcgcGlwZS1saWtlCitkYXRhIHN0cmVhbXMgd2l0aCBhIHN0cmFpZ2h0Zm9yd2FyZCB1c2VyIGludGVyZmFjZS4gSXQncyBpbnRlbmRlZCBhcyBhIGxvdy0KK2VmZm9ydCBzb2x1dGlvbiBmb3IgbWl4ZWQgRlBHQS1ob3N0IHByb2plY3RzLCBmb3Igd2hpY2ggaXQgbWFrZXMgc2Vuc2UgdG8KK2hhdmUgdGhlIHByb2plY3Qtc3BlY2lmaWMgcGFydCBvZiB0aGUgZHJpdmVyIHJ1bm5pbmcgaW4gYSB1c2VyLXNwYWNlIHByb2dyYW0uCisKK1NpbmNlIHRoZSBjb21tdW5pY2F0aW9uIHJlcXVpcmVtZW50cyBtYXkgdmFyeSBzaWduaWZpY2FudGx5IGZyb20gb25lIEZQR0EKK3Byb2plY3QgdG8gYW5vdGhlciAodGhlIG51bWJlciBvZiBkYXRhIHBpcGVzIG5lZWRlZCBpbiBlYWNoIGRpcmVjdGlvbiBhbmQKK3RoZWlyIGF0dHJpYnV0ZXMpLCB0aGVyZSBpc24ndCBvbmUgc3BlY2lmaWMgY2h1bmsgb2YgbG9naWMgYmVpbmcgdGhlIFhpbGx5YnVzCitJUCBjb3JlLiBSYXRoZXIsIHRoZSBJUCBjb3JlIGlzIGNvbmZpZ3VyZWQgYW5kIGJ1aWx0IGJhc2VkIHVwb24gYQorc3BlY2lmaWNhdGlvbiBnaXZlbiBieSBpdHMgZW5kIHVzZXIuCisKK1hpbGx5YnVzIHByZXNlbnRzIGluZGVwZW5kZW50IGRhdGEgc3RyZWFtcywgd2hpY2ggcmVzZW1ibGUgcGlwZXMgb3IgVENQL0lQCitjb21tdW5pY2F0aW9uIHRvIHRoZSB1c2VyLiBBdCB0aGUgaG9zdCBzaWRlLCBhIGNoYXJhY3RlciBkZXZpY2UgZmlsZSBpcyB1c2VkCitqdXN0IGxpa2UgYW55IHBpcGUgZmlsZS4gT24gdGhlIEZQR0Egc2lkZSwgaGFyZHdhcmUgRklGT3MgYXJlIHVzZWQgdG8gc3RyZWFtCit0aGUgZGF0YS4gVGhpcyBpcyBjb250cmFyeSB0byBhIGNvbW1vbiBtZXRob2Qgb2YgY29tbXVuaWNhdGluZyB0aHJvdWdoIGZpeGVkLQorc2l6ZWQgYnVmZmVycyAoZXZlbiB0aG91Z2ggc3VjaCBidWZmZXJzIGFyZSB1c2VkIGJ5IFhpbGx5YnVzIHVuZGVyIHRoZSBob29kKS4KK1RoZXJlIG1heSBiZSBtb3JlIHRoYW4gYSBodW5kcmVkIG9mIHRoZXNlIHN0cmVhbXMgb24gYSBzaW5nbGUgSVAgY29yZSwgYnV0CithbHNvIG5vIG1vcmUgdGhhbiBvbmUsIGRlcGVuZGluZyBvbiB0aGUgY29uZmlndXJhdGlvbi4KKworSW4gb3JkZXIgdG8gZWFzZSB0aGUgZGVwbG95bWVudCBvZiB0aGUgWGlsbHlidXMgSVAgY29yZSwgaXQgY29udGFpbnMgYSBzaW1wbGUKK2RhdGEgc3RydWN0dXJlIHdoaWNoIGNvbXBsZXRlbHkgZGVmaW5lcyB0aGUgY29yZSdzIGNvbmZpZ3VyYXRpb24uIFRoZSBMaW51eAorZHJpdmVyIGZldGNoZXMgdGhpcyBkYXRhIHN0cnVjdHVyZSBkdXJpbmcgaXRzIGluaXRpYWxpemF0aW9uIHByb2Nlc3MsIGFuZCBzZXRzCit1cCB0aGUgRE1BIGJ1ZmZlcnMgYW5kIGNoYXJhY3RlciBkZXZpY2VzIGFjY29yZGluZ2x5LiBBcyBhIHJlc3VsdCwgYSBzaW5nbGUKK2RyaXZlciBpcyB1c2VkIHRvIHdvcmsgb3V0IG9mIHRoZSBib3ggd2l0aCBhbnkgWGlsbHlidXMgSVAgY29yZS4KKworVGhlIGRhdGEgc3RydWN0dXJlIGp1c3QgbWVudGlvbmVkIHNob3VsZCBub3QgYmUgY29uZnVzZWQgd2l0aCBQQ0kncworY29uZmlndXJhdGlvbiBzcGFjZSBvciB0aGUgRmxhdHRlbmVkIERldmljZSBUcmVlLgorCitVU0FHRQorPT09PT0KKworVXNlciBpbnRlcmZhY2UKKy0tLS0tLS0tLS0tLS0tCisKK09uIHRoZSBob3N0LCBhbGwgaW50ZXJmYWNlIHdpdGggWGlsbHlidXMgaXMgZG9uZSB0aHJvdWdoIC9kZXYveGlsbHlidXNfKgorZGV2aWNlIGZpbGVzLCB3aGljaCBhcmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYXMgdGhlIGRyaXZlcnMgbG9hZHMuIFRoZQorbmFtZXMgb2YgdGhlc2UgZmlsZXMgZGVwZW5kIG9uIHRoZSBJUCBjb3JlIHRoYXQgaXMgbG9hZGVkIGluIHRoZSBGUEdBIChzZWUKK1Byb2JpbmcgYmVsb3cpLiBUbyBjb21tdW5pY2F0ZSB3aXRoIHRoZSBGUEdBLCBvcGVuIHRoZSBkZXZpY2UgZmlsZSB0aGF0Citjb3JyZXNwb25kcyB0byB0aGUgaGFyZHdhcmUgRklGTyB5b3Ugd2FudCB0byBzZW5kIGRhdGEgb3IgcmVjZWl2ZSBkYXRhIGZyb20sCithbmQgdXNlIHBsYWluIHdyaXRlKCkgb3IgcmVhZCgpIGNhbGxzLCBqdXN0IGxpa2Ugd2l0aCBhIHJlZ3VsYXIgcGlwZS4gSW4KK3BhcnRpY3VsYXIsIGl0IG1ha2VzIHBlcmZlY3Qgc2Vuc2UgdG8gZ286CisKKyQgY2F0IG15ZGF0YSA+IC9kZXYveGlsbHlidXNfdGhpc2ZpZm8KKworJCBjYXQgL2Rldi94aWxseWJ1c190aGF0ZmlmbyA+IGhpc2RhdGEKKworcG9zc2libHkgcHJlc3NpbmcgQ1RSTC1DIGFzIHNvbWUgc3RhZ2UsIGV2ZW4gdGhvdWdoIHRoZSB4aWxseWJ1c18qIHBpcGVzIGhhdmUKK3RoZSBjYXBhYmlsaXR5IHRvIHNlbmQgYW4gRU9GIChidXQgbWF5IG5vdCB1c2UgaXQpLgorCitUaGUgZHJpdmVyIGFuZCBoYXJkd2FyZSBhcmUgZGVzaWduZWQgdG8gYmVoYXZlIHNlbnNpYmx5IGFzIHBpcGVzLCBpbmNsdWRpbmc6CisKKyogU3VwcG9ydGluZyBub24tYmxvY2tpbmcgSS9PIChieSBzZXR0aW5nIE9fTk9OQkxPQ0sgb24gb3BlbigpICkuCisKKyogU3VwcG9ydGluZyBwb2xsKCkgYW5kIHNlbGVjdCgpLgorCisqIEJlaW5nIGJhbmR3aWR0aCBlZmZpY2llbnQgdW5kZXIgbG9hZCAodXNpbmcgRE1BKSBidXQgYWxzbyBoYW5kbGUgc21hbGwKKyAgcGllY2VzIG9mIGRhdGEgc2VudCBhY3Jvc3MgKGxpa2UgVENQL0lQKSBieSBhdXRvZmx1c2hpbmcuCisKK0EgZGV2aWNlIGZpbGUgY2FuIGJlIHJlYWQgb25seSwgd3JpdGUgb25seSBvciBiaWRpcmVjdGlvbmFsLiBCaWRpcmVjdGlvbmFsCitkZXZpY2UgZmlsZXMgYXJlIHRyZWF0ZWQgbGlrZSB0d28gaW5kZXBlbmRlbnQgcGlwZXMgKGV4Y2VwdCBmb3Igc2hhcmluZyBhCisiY2hhbm5lbCIgc3RydWN0dXJlIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBjb2RlKS4KKworU3luY2hyb25pemF0aW9uCistLS0tLS0tLS0tLS0tLS0KKworWGlsbHlidXMgcGlwZXMgYXJlIGNvbmZpZ3VyZWQgKG9uIHRoZSBJUCBjb3JlKSB0byBiZSBlaXRoZXIgc3luY2hyb25vdXMgb3IKK2FzeW5jaHJvbm91cy4gRm9yIGEgc3luY2hyb25vdXMgcGlwZSwgd3JpdGUoKSByZXR1cm5zIHN1Y2Nlc3NmdWxseSBvbmx5IGFmdGVyCitzb21lIGRhdGEgaGFzIGJlZW4gc3VibWl0dGVkIGFuZCBhY2tub3dsZWRnZWQgYnkgdGhlIEZQR0EuIFRoaXMgc2xvd3MgZG93bgorYnVsayBkYXRhIHRyYW5zZmVycywgYW5kIGlzIG5lYXJseSBpbXBvc3NpYmxlIGZvciB1c2Ugd2l0aCBzdHJlYW1zIHRoYXQKK3JlcXVpcmUgZGF0YSBhdCBhIGNvbnN0YW50IHJhdGU6IFRoZXJlIGlzIG5vIGRhdGEgdHJhbnNtaXR0ZWQgdG8gdGhlIEZQR0EKK2JldHdlZW4gd3JpdGUoKSBjYWxscywgaW4gcGFydGljdWxhciB3aGVuIHRoZSBwcm9jZXNzIGxvc2VzIHRoZSBDUFUuCisKK1doZW4gYSBwaXBlIGlzIGNvbmZpZ3VyZWQgYXN5bmNocm9ub3VzLCB3cml0ZSgpIHJldHVybnMgaWYgdGhlcmUgd2FzIGVub3VnaAorcm9vbSBpbiB0aGUgYnVmZmVycyB0byBzdG9yZSBhbnkgb2YgdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlcnMuCisKK0ZvciBGUEdBIHRvIGhvc3QgcGlwZXMsIGFzeW5jaHJvbm91cyBwaXBlcyBhbGxvdyBkYXRhIHRyYW5zZmVyIGZyb20gdGhlIEZQR0EKK2FzIHNvb24gYXMgdGhlIHJlc3BlY3RpdmUgZGV2aWNlIGZpbGUgaXMgb3BlbmVkLCByZWdhcmRsZXNzIG9mIGlmIHRoZSBkYXRhCitoYXMgYmVlbiByZXF1ZXN0ZWQgYnkgYSByZWFkKCkgY2FsbC4gT24gc3luY2hyb25vdXMgcGlwZXMsIG9ubHkgdGhlIGFtb3VudAorb2YgZGF0YSByZXF1ZXN0ZWQgYnkgYSByZWFkKCkgY2FsbCBpcyB0cmFuc21pdHRlZC4KKworSW4gc3VtbWFyeSwgZm9yIHN5bmNocm9ub3VzIHBpcGVzLCBkYXRhIGJldHdlZW4gdGhlIGhvc3QgYW5kIEZQR0EgaXMKK3RyYW5zbWl0dGVkIG9ubHkgdG8gc2F0aXNmeSB0aGUgcmVhZCgpIG9yIHdyaXRlKCkgY2FsbCBjdXJyZW50bHkgaGFuZGxlZAorYnkgdGhlIGRyaXZlciwgYW5kIHRob3NlIGNhbGxzIHdhaXQgZm9yIHRoZSB0cmFuc21pc3Npb24gdG8gY29tcGxldGUgYmVmb3JlCityZXR1cm5pbmcuCisKK05vdGUgdGhhdCB0aGUgc3luY2hyb25pemF0aW9uIGF0dHJpYnV0ZSBoYXMgbm90aGluZyB0byBkbyB3aXRoIHRoZSBwb3NzaWJpbGl0eQordGhhdCByZWFkKCkgb3Igd3JpdGUoKSBjb21wbGV0ZXMgbGVzcyBieXRlcyB0aGFuIHJlcXVlc3RlZC4gVGhlcmUgaXMgYQorc2VwYXJhdGUgY29uZmlndXJhdGlvbiBmbGFnICgiYWxsb3dwYXJ0aWFsIikgdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgc3VjaCBhCitwYXJ0aWFsIGNvbXBsZXRpb24gaXMgYWxsb3dlZC4KKworU2Vla2FibGUgcGlwZXMKKy0tLS0tLS0tLS0tLS0tCisKK0Egc3luY2hyb25vdXMgcGlwZSBjYW4gYmUgY29uZmlndXJlZCB0byBoYXZlIHRoZSBzdHJlYW0ncyBwb3NpdGlvbiBleHBvc2VkCit0byB0aGUgdXNlciBsb2dpYyBhdCB0aGUgRlBHQS4gU3VjaCBhIHBpcGUgaXMgYWxzbyBzZWVrYWJsZSBvbiB0aGUgaG9zdCBBUEkuCitXaXRoIHRoaXMgZmVhdHVyZSwgYSBtZW1vcnkgb3IgcmVnaXN0ZXIgaW50ZXJmYWNlIGNhbiBiZSBhdHRhY2hlZCBvbiB0aGUKK0ZQR0Egc2lkZSB0byB0aGUgc2Vla2FibGUgc3RyZWFtLiBSZWFkaW5nIG9yIHdyaXRpbmcgdG8gYSBjZXJ0YWluIGFkZHJlc3MgaW4KK3RoZSBhdHRhY2hlZCBtZW1vcnkgaXMgZG9uZSBieSBzZWVraW5nIHRvIHRoZSBkZXNpcmVkIGFkZHJlc3MsIGFuZCBjYWxsaW5nCityZWFkKCkgb3Igd3JpdGUoKSBhcyByZXF1aXJlZC4KKworCitJTlRFUk5BTFMKKz09PT09PT09PQorCitTb3VyY2UgY29kZSBvcmdhbml6YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgWGlsbHlidXMgZHJpdmVyIGNvbnNpc3RzIG9mIGEgY29yZSBtb2R1bGUsIHhpbGx5YnVzX2NvcmUuYywgYW5kIG1vZHVsZXMKK3RoYXQgZGVwZW5kIG9uIHRoZSBzcGVjaWZpYyBidXMgaW50ZXJmYWNlICh4aWxseWJ1c19vZi5jIGFuZCB4aWxseWJ1c19wY2llLmMpLgorCitUaGUgYnVzIHNwZWNpZmljIG1vZHVsZXMgYXJlIHRob3NlIHByb2JlZCB3aGVuIGEgc3VpdGFibGUgZGV2aWNlIGlzIGZvdW5kIGJ5Cit0aGUga2VybmVsLiBTaW5jZSB0aGUgRE1BIG1hcHBpbmcgYW5kIHN5bmNocm9uaXphdGlvbiBmdW5jdGlvbnMsIHdoaWNoIGFyZSBidXMKK2RlcGVuZGVudCBieSB0aGVpciBuYXR1cmUsIGFyZSB1c2VkIGJ5IHRoZSBjb3JlIG1vZHVsZSwgYQoreGlsbHlfZW5kcG9pbnRfaGFyZHdhcmUgc3RydWN0dXJlIGlzIHBhc3NlZCB0byB0aGUgY29yZSBtb2R1bGUgb24KK2luaXRpYWxpemF0aW9uLiBUaGlzIHN0cnVjdHVyZSBpcyBwb3B1bGF0ZWQgd2l0aCBwb2ludGVycyB0byB3cmFwcGVyIGZ1bmN0aW9ucword2hpY2ggZXhlY3V0ZSB0aGUgRE1BLXJlbGF0ZWQgb3BlcmF0aW9ucyBvbiB0aGUgYnVzLgorCitQaXBlIGF0dHJpYnV0ZXMKKy0tLS0tLS0tLS0tLS0tLQorCitFYWNoIHBpcGUgaGFzIGEgbnVtYmVyIG9mIGF0dHJpYnV0ZXMgd2hpY2ggYXJlIHNldCB3aGVuIHRoZSBGUEdBIGNvbXBvbmVudAorKElQIGNvcmUpIGlzIGJ1aWx0LiBUaGV5IGFyZSBmZXRjaGVkIGZyb20gdGhlIElEVCAodGhlIGRhdGEgc3RydWN0dXJlIHdoaWNoCitkZWZpbmVzIHRoZSBjb3JlJ3MgY29uZmlndXJhdGlvbiwgc2VlIFByb2JpbmcgYmVsb3cpIGJ5IHhpbGx5X3NldHVwY2hhbm5lbHMoKQoraW4geGlsbHlidXNfY29yZS5jIGFzIGZvbGxvd3M6CisKKyogaXNfd3JpdGVidWY6IFRoZSBwaXBlJ3MgZGlyZWN0aW9uLiBBIG5vbi16ZXJvIHZhbHVlIG1lYW5zIGl0J3MgYW4gRlBHQSB0bworICBob3N0IHBpcGUgKHRoZSBGUEdBICJ3cml0ZXMiKS4KKworKiBjaGFubmVsbnVtOiBUaGUgcGlwZSdzIGlkZW50aWZpY2F0aW9uIG51bWJlciBpbiBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlCisgIGhvc3QgYW5kIEZQR0EuCisKKyogZm9ybWF0OiBUaGUgdW5kZXJseWluZyBkYXRhIHdpZHRoLiBTZWUgRGF0YSBHcmFudWxhcml0eSBiZWxvdy4KKworKiBhbGxvd3BhcnRpYWw6IEEgbm9uLXplcm8gdmFsdWUgbWVhbnMgdGhhdCBhIHJlYWQoKSBvciB3cml0ZSgpICh3aGljaGV2ZXIKKyAgYXBwbGllcykgbWF5IHJldHVybiB3aXRoIGxlc3MgdGhhbiB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBieXRlcy4gVGhlIGNvbW1vbgorICBjaG9pY2UgaXMgYSBub24temVybyB2YWx1ZSwgdG8gbWF0Y2ggc3RhbmRhcmQgVU5JWCBiZWhhdmlvci4KKworKiBzeW5jaHJvbm91czogQSBub24temVybyB2YWx1ZSBtZWFucyB0aGF0IHRoZSBwaXBlIGlzIHN5bmNocm9ub3VzLiBTZWUKKyAgU3luY3Jvbml6YXRpb24gYWJvdmUuCisKKyogYnVmc2l6ZTogRWFjaCBETUEgYnVmZmVyJ3Mgc2l6ZS4gQWx3YXlzIGEgcG93ZXIgb2YgdHdvLgorCisqIGJ1Zm51bTogVGhlIG51bWJlciBvZiBidWZmZXJzIGFsbG9jYXRlZCBmb3IgdGhpcyBwaXBlLiBBbHdheXMgYSBwb3dlciBvZiB0d28uCisKKyogZXhjbHVzaXZlX29wZW46IEEgbm9uLXplcm8gdmFsdWUgZm9yY2VzIGV4Y2x1c2l2ZSBvcGVuaW5nIG9mIHRoZSBhc3NvY2lhdGVkCisgIGRldmljZSBmaWxlLiBJZiB0aGUgZGV2aWNlIGZpbGUgaXMgYmlkaXJlY3Rpb25hbCwgYW5kIGFscmVhZHkgb3BlbmVkIG9ubHkgaW4KKyAgb25lIGRpcmVjdGlvbiwgdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiBtYXkgYmUgb3BlbmVkIG9uY2UuCisKKyogc2Vla2FibGU6IEEgbm9uLXplcm8gdmFsdWUgaW5kaWNhdGVzIHRoYXQgdGhlIHBpcGUgaXMgc2Vla2FibGUuIFNlZQorICBTZWVrYWJsZSBwaXBlcyBhYm92ZS4KKworKiBzdXBwb3J0c19ub25lbXB0eTogQSBub24temVybyB2YWx1ZSAod2hpY2ggaXMgdHlwaWNhbCkgaW5kaWNhdGVzIHRoYXQgdGhlCisgIGhhcmR3YXJlIHdpbGwgc2VuZCB0aGUgbWVzc2FnZXMgdGhhdCBhcmUgbmVjZXNzYXJ5IHRvIHN1cHBvcnQgc2VsZWN0KCkgYW5kCisgIHBvbGwoKSBmb3IgdGhpcyBwaXBlLgorCitIb3N0IG5ldmVyIHJlYWRzIGZyb20gdGhlIEZQR0EKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitFdmVuIHRob3VnaCBQQ0kgRXhwcmVzcyBpcyBob3RwbHVnZ2FibGUgaW4gZ2VuZXJhbCwgYSB0eXBpY2FsIG1vdGhlcmJvYXJkCitkb2Vzbid0IGV4cGVjdCBhIGNhcmQgdG8gZ28gYXdheSBhbGwgb2YgdGhlIHN1ZGRlbi4gQnV0IHNpbmNlIHRoZSBQQ0llIGNhcmQKK2lzIGJhc2VkIHVwb24gcmVwcm9ncmFtbWFibGUgbG9naWMsIGEgc3VkZGVuIGRpc2FwcGVhcmFuY2UgZnJvbSB0aGUgYnVzIGlzCitxdWl0ZSBsaWtlbHkgYXMgYSByZXN1bHQgb2YgYW4gYWNjaWRlbnRhbCByZXByb2dyYW1taW5nIG9mIHRoZSBGUEdBIHdoaWxlIHRoZQoraG9zdCBpcyB1cC4gSW4gcHJhY3RpY2UsIG5vdGhpbmcgaGFwcGVucyBpbW1lZGlhdGVseSBpbiBzdWNoIGEgc2l0dWF0aW9uLiBCdXQKK2lmIHRoZSBob3N0IGF0dGVtcHRzIHRvIHJlYWQgZnJvbSBhbiBhZGRyZXNzIHRoYXQgaXMgbWFwcGVkIHRvIHRoZSBQQ0kgRXhwcmVzcworZGV2aWNlLCB0aGF0IGxlYWRzIHRvIGFuIGltbWVkaWF0ZSBmcmVlemUgb2YgdGhlIHN5c3RlbSBvbiBzb21lIG1vdGhlcmJvYXJkcywKK2V2ZW4gdGhvdWdoIHRoZSBQQ0llIHN0YW5kYXJkIHJlcXVpcmVzIGEgZ3JhY2VmdWwgcmVjb3ZlcnkuCisKK0luIG9yZGVyIHRvIGF2b2lkIHRoZXNlIGZyZWV6ZXMsIHRoZSBYaWxseWJ1cyBkcml2ZXIgcmVmcmFpbnMgY29tcGxldGVseSBmcm9tCityZWFkaW5nIGZyb20gdGhlIGRldmljZSdzIHJlZ2lzdGVyIHNwYWNlLiBBbGwgY29tbXVuaWNhdGlvbiBmcm9tIHRoZSBGUEdBIHRvCit0aGUgaG9zdCBpcyBkb25lIHRocm91Z2ggRE1BLiBJbiBwYXJ0aWN1bGFyLCB0aGUgSW50ZXJydXB0IFNlcnZpY2UgUm91dGluZQorZG9lc24ndCBmb2xsb3cgdGhlIGNvbW1vbiBwcmFjdGljZSBvZiBjaGVja2luZyBhIHN0YXR1cyByZWdpc3RlciB3aGVuIGl0J3MKK2ludm9rZWQuIFJhdGhlciwgdGhlIEZQR0EgcHJlcGFyZXMgYSBzbWFsbCBidWZmZXIgd2hpY2ggY29udGFpbnMgc2hvcnQKK21lc3NhZ2VzLCB3aGljaCBpbmZvcm0gdGhlIGhvc3Qgd2hhdCB0aGUgaW50ZXJydXB0IHdhcyBhYm91dC4KKworVGhpcyBtZWNoYW5pc20gaXMgdXNlZCBvbiBub24tUENJZSBidXNlcyBhcyB3ZWxsIGZvciB0aGUgc2FrZSBvZiB1bmlmb3JtaXR5LgorCisKK0NoYW5uZWxzLCBwaXBlcywgYW5kIHRoZSBtZXNzYWdlIGNoYW5uZWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRWFjaCBvZiB0aGUgKHBvc3NpYmx5IGJpZGlyZWN0aW9uYWwpIHBpcGVzIHByZXNlbnRlZCB0byB0aGUgdXNlciBpcyBhbGxvY2F0ZWQKK2EgZGF0YSBjaGFubmVsIGJldHdlZW4gdGhlIEZQR0EgYW5kIHRoZSBob3N0LiBUaGUgZGlzdGluY3Rpb24gYmV0d2VlbiBjaGFubmVscworYW5kIHBpcGVzIGlzIG5lY2Vzc2FyeSBvbmx5IGJlY2F1c2Ugb2YgY2hhbm5lbCAwLCB3aGljaCBpcyB1c2VkIGZvciBpbnRlcnJ1cHQtCityZWxhdGVkIG1lc3NhZ2VzIGZyb20gdGhlIEZQR0EsIGFuZCBoYXMgbm8gcGlwZSBhdHRhY2hlZCB0byBpdC4KKworRGF0YSBzdHJlYW1pbmcKKy0tLS0tLS0tLS0tLS0tCisKK0V2ZW4gdGhvdWdoIGEgbm9uLXNlZ21lbnRlZCBkYXRhIHN0cmVhbSBpcyBwcmVzZW50ZWQgdG8gdGhlIHVzZXIgYXQgYm90aAorc2lkZXMsIHRoZSBpbXBsZW1lbnRhdGlvbiByZWxpZXMgb24gYSBzZXQgb2YgRE1BIGJ1ZmZlcnMgd2hpY2ggaXMgYWxsb2NhdGVkCitmb3IgZWFjaCBjaGFubmVsLiBGb3IgdGhlIHNha2Ugb2YgaWxsdXN0cmF0aW9uLCBsZXQncyB0YWtlIHRoZSBGUEdBIHRvIGhvc3QKK2RpcmVjdGlvbjogQXMgZGF0YSBzdHJlYW1zIGludG8gdGhlIHJlc3BlY3RpdmUgY2hhbm5lbCdzIGludGVyZmFjZSBpbiB0aGUKK0ZQR0EsIHRoZSBYaWxseWJ1cyBJUCBjb3JlIHdyaXRlcyBpdCB0byBvbmUgb2YgdGhlIERNQSBidWZmZXJzLiBXaGVuIHRoZQorYnVmZmVyIGlzIGZ1bGwsIHRoZSBGUEdBIGluZm9ybXMgdGhlIGhvc3QgYWJvdXQgdGhhdCAoYXBwZW5kaW5nIGEKK1hJTExZTVNHX09QQ09ERV9SRUxFQVNFQlVGIG1lc3NhZ2UgY2hhbm5lbCAwIGFuZCBzZW5kaW5nIGFuIGludGVycnVwdCBpZgorbmVjZXNzYXJ5KS4gVGhlIGhvc3QgcmVzcG9uZHMgYnkgbWFraW5nIHRoZSBkYXRhIGF2YWlsYWJsZSBmb3IgcmVhZGluZyB0aHJvdWdoCit0aGUgY2hhcmFjdGVyIGRldmljZS4gV2hlbiBhbGwgZGF0YSBoYXMgYmVlbiByZWFkLCB0aGUgaG9zdCB3cml0ZXMgb24gdGhlCit0aGUgRlBHQSdzIGJ1ZmZlciBjb250cm9sIHJlZ2lzdGVyLCBhbGxvd2luZyB0aGUgYnVmZmVyJ3Mgb3ZlcndyaXRpbmcuIEZsb3cKK2NvbnRyb2wgbWVjaGFuaXNtcyBleGlzdCBvbiBib3RoIHNpZGVzIHRvIHByZXZlbnQgdW5kZXJmbG93cyBhbmQgb3ZlcmZsb3dzLgorCitUaGlzIGlzIG5vdCBnb29kIGVub3VnaCBmb3IgY3JlYXRpbmcgYSBUQ1AvSVAtbGlrZSBzdHJlYW06IElmIHRoZSBkYXRhIGZsb3cKK3N0b3BzIG1vbWVudGFyaWx5IGJlZm9yZSBhIERNQSBidWZmZXIgaXMgZmlsbGVkLCB0aGUgaW50dWl0aXZlIGV4cGVjdGF0aW9uIGlzCit0aGF0IHRoZSBwYXJ0aWFsIGRhdGEgaW4gYnVmZmVyIHdpbGwgYXJyaXZlIGFueWhvdywgZGVzcGl0ZSB0aGUgYnVmZmVyIG5vdAorYmVpbmcgY29tcGxldGVkLiBUaGlzIGlzIGltcGxlbWVudGVkIGJ5IGFkZGluZyBhIGZpZWxkIGluIHRoZQorWElMTFlNU0dfT1BDT0RFX1JFTEVBU0VCVUYgbWVzc2FnZSwgdGhyb3VnaCB3aGljaCB0aGUgRlBHQSBpbmZvcm1zIG5vdCBqdXN0Cit3aGljaCBidWZmZXIgaXMgc3VibWl0dGVkLCBidXQgaG93IG11Y2ggZGF0YSBpdCBjb250YWlucy4KKworQnV0IHRoZSBGUEdBIHdpbGwgc3VibWl0IGEgcGFydGlhbGx5IGZpbGxlZCBidWZmZXIgb25seSBpZiBkaXJlY3RlZCB0byBkbyBzbworYnkgdGhlIGhvc3QuIFRoaXMgc2l0dWF0aW9uIG9jY3VycyB3aGVuIHRoZSByZWFkKCkgbWV0aG9kIGhhcyBiZWVuIGJsb2NraW5nCitmb3IgWElMTFlfUlhfVElNRU9VVCBqaWZmaWVzIChjdXJyZW50bHkgMTAgbXMpLCBhZnRlciB3aGljaCB0aGUgaG9zdCBjb21tYW5kcwordGhlIEZQR0EgdG8gc3VibWl0IGEgRE1BIGJ1ZmZlciBhcyBzb29uIGFzIGl0IGNhbi4gVGhpcyB0aW1lb3V0IG1lY2hhbmlzbQorYmFsYW5jZXMgYmV0d2VlbiBidXMgYmFuZHdpZHRoIGVmZmljaWVuY3kgKHByZXZlbnRpbmcgYSBsb3Qgb2YgcGFydGlhbGx5CitmaWxsZWQgYnVmZmVycyBiZWluZyBzZW50KSBhbmQgYSBsYXRlbmN5IGhlbGQgZmFpcmx5IGxvdyBmb3IgdGFpbHMgb2YgZGF0YS4KKworQSBzaW1pbGFyIHNldHRpbmcgaXMgdXNlZCBpbiB0aGUgaG9zdCB0byBGUEdBIGRpcmVjdGlvbi4gVGhlIGhhbmRsaW5nIG9mCitwYXJ0aWFsIERNQSBidWZmZXJzIGlzIHNvbWV3aGF0IGRpZmZlcmVudCwgdGhvdWdoLiBUaGUgdXNlciBjYW4gdGVsbCB0aGUKK2RyaXZlciB0byBzdWJtaXQgYWxsIGRhdGEgaXQgaGFzIGluIHRoZSBidWZmZXJzIHRvIHRoZSBGUEdBLCBieSBpc3N1aW5nIGEKK3dyaXRlKCkgd2l0aCB0aGUgYnl0ZSBjb3VudCBzZXQgdG8gemVyby4gVGhpcyBpcyBzaW1pbGFyIHRvIGEgZmx1c2ggcmVxdWVzdCwKK2J1dCBpdCBkb2Vzbid0IGJsb2NrLiBUaGVyZSBpcyBhbHNvIGFuIGF1dG9mbHVzaGluZyBtZWNoYW5pc20sIHdoaWNoIHRyaWdnZXJzCithbiBlcXVpdmFsZW50IGZsdXNoIHJvdWdobHkgWElMTFlfUlhfVElNRU9VVCBqaWZmaWVzIGFmdGVyIHRoZSBsYXN0IHdyaXRlKCkuCitUaGlzIGFsbG93cyB0aGUgdXNlciB0byBiZSBvYmxpdmlvdXMgYWJvdXQgdGhlIHVuZGVybHlpbmcgYnVmZmVyaW5nIG1lY2hhbmlzbQorYW5kIHlldCBlbmpveSBhIHN0cmVhbS1saWtlIGludGVyZmFjZS4KKworTm90ZSB0aGF0IHRoZSBpc3N1ZSBvZiBwYXJ0aWFsIGJ1ZmZlciBmbHVzaGluZyBpcyBpcnJlbGV2YW50IGZvciBwaXBlcyBoYXZpbmcKK3RoZSAic3luY2hyb25vdXMiIGF0dHJpYnV0ZSBub256ZXJvLCBzaW5jZSBzeW5jaHJvbm91cyBwaXBlcyBkb24ndCBhbGxvdyBkYXRhCit0byBsYXkgYXJvdW5kIGluIHRoZSBETUEgYnVmZmVycyBiZXR3ZWVuIHJlYWQoKSBhbmQgd3JpdGUoKSBhbnlob3cuCisKK0RhdGEgZ3JhbnVsYXJpdHkKKy0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGRhdGEgYXJyaXZlcyBvciBpcyBzZW50IGF0IHRoZSBGUEdBIGFzIDgsIDE2IG9yIDMyIGJpdCB3aWRlIHdvcmRzLCBhcworY29uZmlndXJlZCBieSB0aGUgImZvcm1hdCIgYXR0cmlidXRlLiBXaGVuZXZlciBwb3NzaWJsZSwgdGhlIGRyaXZlciBhdHRlbXB0cwordG8gaGlkZSB0aGlzIHdoZW4gdGhlIHBpcGUgaXMgYWNjZXNzZWQgZGlmZmVyZW50bHkgZnJvbSBpdHMgbmF0dXJhbCBhbGlnbm1lbnQuCitGb3IgZXhhbXBsZSwgcmVhZGluZyBzaW5nbGUgYnl0ZXMgZnJvbSBhIHBpcGUgd2l0aCAzMiBiaXQgZ3JhbnVsYXJpdHkgd29ya3MKK3dpdGggbm8gaXNzdWVzLiBXcml0aW5nIHNpbmdsZSBieXRlcyB0byBwaXBlcyB3aXRoIDE2IG9yIDMyIGJpdCBncmFudWxhcml0eQord2lsbCBhbHNvIHdvcmssIGJ1dCB0aGUgZHJpdmVyIGNhbid0IHNlbmQgcGFydGlhbGx5IGNvbXBsZXRlZCB3b3JkcyB0byB0aGUKK0ZQR0EsIHNvIHRoZSB0cmFuc21pc3Npb24gb2YgdXAgdG8gb25lIHdvcmQgbWF5IGJlIGhlbGQgdW50aWwgaXQncyBmdWxseQorb2NjdXBpZWQgd2l0aCB1c2VyIGRhdGEuCisKK1RoaXMgc29tZXdoYXQgY29tcGxpY2F0ZXMgdGhlIGhhbmRsaW5nIG9mIGhvc3QgdG8gRlBHQSBzdHJlYW1zLCBiZWNhdXNlCit3aGVuIGEgYnVmZmVyIGlzIGZsdXNoZWQsIGl0IG1heSBjb250YWluIHVwIHRvIDMgYnl0ZXMgZG9uJ3QgZm9ybSBhIHdvcmQgaW4KK3RoZSBGUEdBLCBhbmQgaGVuY2UgY2FuJ3QgYmUgc2VudC4gVG8gcHJldmVudCBsb3NzIG9mIGRhdGEsIHRoZXNlIGxlZnRvdmVyCitieXRlcyBuZWVkIHRvIGJlIG1vdmVkIHRvIHRoZSBuZXh0IGJ1ZmZlci4gVGhlIHBhcnRzIGluIHhpbGx5YnVzX2NvcmUuYwordGhhdCBtZW50aW9uICJsZWZ0b3ZlcnMiIGluIHNvbWUgd2F5IGFyZSByZWxhdGVkIHRvIHRoaXMgY29tcGxpY2F0aW9uLgorCitQcm9iaW5nCistLS0tLS0tCisKK0FzIG1lbnRpb25lZCBlYXJsaWVyLCB0aGUgbnVtYmVyIG9mIHBpcGVzIHRoYXQgYXJlIGNyZWF0ZWQgd2hlbiB0aGUgZHJpdmVyCitsb2FkcyBhbmQgdGhlaXIgYXR0cmlidXRlcyBkZXBlbmQgb24gdGhlIFhpbGx5YnVzIElQIGNvcmUgaW4gdGhlIEZQR0EuIER1cmluZwordGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uLCBhIGJsb2IgY29udGFpbmluZyBjb25maWd1cmF0aW9uIGluZm8sIHRoZQorSW50ZXJmYWNlIERlc2NyaXB0aW9uIFRhYmxlIChJRFQpLCBpcyBzZW50IGZyb20gdGhlIEZQR0EgdG8gdGhlIGhvc3QuIFRoZQorYm9vdHN0cmFwIHByb2Nlc3MgaXMgZG9uZSBpbiB0aHJlZSBwaGFzZXM6CisKKzEuIEFjcXVpcmUgdGhlIGxlbmd0aCBvZiB0aGUgSURULCBzbyBhIGJ1ZmZlciBjYW4gYmUgYWxsb2NhdGVkIGZvciBpdC4gVGhpcworICAgaXMgZG9uZSBieSBzZW5kaW5nIGEgcXVpZXNjZSBjb21tYW5kIHRvIHRoZSBkZXZpY2UsIHNpbmNlIHRoZSBhY2tub3dsZWRnZQorICAgZm9yIHRoaXMgY29tbWFuZCBjb250YWlucyB0aGUgSURUJ3MgYnVmZmVyIGxlbmd0aC4KKworMi4gQWNxdWlyZSB0aGUgSURUIGl0c2VsZi4KKworMy4gQ3JlYXRlIHRoZSBpbnRlcmZhY2VzIGFjY29yZGluZyB0byB0aGUgSURULgorCitCdWZmZXIgYWxsb2NhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0KKworSW4gb3JkZXIgdG8gc2ltcGxpZnkgdGhlIGxvZ2ljIHRoYXQgcHJldmVudHMgaWxsZWdhbCBib3VuZGFyeSBjcm9zc2luZ3Mgb2YKK1BDSWUgcGFja2V0cywgdGhlIGZvbGxvd2luZyBydWxlIGFwcGxpZXM6IElmIGEgYnVmZmVyIGlzIHNtYWxsZXIgdGhhbiA0a0IsCitpdCBtdXN0IG5vdCBjcm9zcyBhIDRrQiBib3VuZGFyeS4gT3RoZXJ3aXNlLCBpdCBtdXN0IGJlIDRrQiBhbGlnbmVkLiBUaGUKK3hpbGx5X3NldHVwY2hhbm5lbHMoKSBmdW5jdGlvbnMgYWxsb2NhdGVzIHRoZXNlIGJ1ZmZlcnMgYnkgcmVxdWVzdGluZyB3aG9sZQorcGFnZXMgZnJvbSB0aGUga2VybmVsLCBhbmQgZGl2aW5nIHRoZW0gaW50byBETUEgYnVmZmVycyBhcyBuZWNlc3NhcnkuIFNpbmNlCithbGwgYnVmZmVycycgc2l6ZXMgYXJlIHBvd2VycyBvZiB0d28sIGl0J3MgcG9zc2libGUgdG8gcGFjayBhbnkgc2V0IG9mIHN1Y2gKK2J1ZmZlcnMsIHdpdGggYSBtYXhpbWFsIHdhc3RlIG9mIG9uZSBwYWdlIG9mIG1lbW9yeS4KKworQWxsIGJ1ZmZlcnMgYXJlIGFsbG9jYXRlZCB3aGVuIHRoZSBkcml2ZXIgaXMgbG9hZGVkLiBUaGlzIGlzIG5lY2Vzc2FyeSwKK3NpbmNlIGxhcmdlIGNvbnRpbnVvdXMgcGh5c2ljYWwgbWVtb3J5IHNlZ21lbnRzIGFyZSBzb21ldGltZXMgcmVxdWVzdGVkLAord2hpY2ggYXJlIG1vcmUgbGlrZWx5IHRvIGJlIGF2YWlsYWJsZSB3aGVuIHRoZSBzeXN0ZW0gaXMgZnJlc2hseSBib290ZWQuCisKK1RoZSBhbGxvY2F0aW9uIG9mIGJ1ZmZlciBtZW1vcnkgdGFrZXMgcGxhY2UgaW4gdGhlIHNhbWUgb3JkZXIgdGhleSBhcHBlYXIgaW4KK3RoZSBJRFQuIFRoZSBkcml2ZXIgcmVsaWVzIG9uIGEgcnVsZSB0aGF0IHRoZSBwaXBlcyBhcmUgc29ydGVkIHdpdGggZGVjcmVhc2luZworYnVmZmVyIHNpemUgaW4gdGhlIElEVC4gSWYgYSByZXF1ZXN0ZWQgYnVmZmVyIGlzIGxhcmdlciBvciBlcXVhbCB0byBhIHBhZ2UsCit0aGUgbmVjZXNzYXJ5IG51bWJlciBvZiBwYWdlcyBpcyByZXF1ZXN0ZWQgZnJvbSB0aGUga2VybmVsLCBhbmQgdGhlc2UgYXJlCit1c2VkIGZvciB0aGlzIGJ1ZmZlci4gSWYgdGhlIHJlcXVlc3RlZCBidWZmZXIgaXMgc21hbGxlciB0aGFuIGEgcGFnZSwgb25lCitzaW5nbGUgcGFnZSBpcyByZXF1ZXN0ZWQgZnJvbSB0aGUga2VybmVsLCBhbmQgdGhhdCBwYWdlIGlzIHBhcnRpYWxseSB1c2VkLgorT3IsIGlmIHRoZXJlIGFscmVhZHkgaXMgYSBwYXJ0aWFsbHkgdXNlZCBwYWdlIGF0IGhhbmQsIHRoZSBidWZmZXIgaXMgcGFja2VkCitpbnRvIHRoYXQgcGFnZS4gSXQgY2FuIGJlIHNob3duIHRoYXQgYWxsIHBhZ2VzIHJlcXVlc3RlZCBmcm9tIHRoZSBrZXJuZWwKKyhleGNlcHQgcG9zc2libHkgZm9yIHRoZSBsYXN0KSBhcmUgMTAwJSB1dGlsaXplZCB0aGlzIHdheS4KKworVGhlICJub25lbXB0eSIgbWVzc2FnZSAoc3VwcG9ydGluZyBwb2xsKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0luIG9yZGVyIHRvIHN1cHBvcnQgdGhlICJwb2xsIiBtZXRob2QgKGFuZCBoZW5jZSBzZWxlY3QoKSApLCB0aGVyZSBpcyBhIHNtYWxsCitjYXRjaCByZWdhcmRpbmcgdGhlIEZQR0EgdG8gaG9zdCBkaXJlY3Rpb246IFRoZSBGUEdBIG1heSBoYXZlIGZpbGxlZCBhIERNQQorYnVmZmVyIHdpdGggc29tZSBkYXRhLCBidXQgbm90IHN1Ym1pdHRlZCB0aGF0IGJ1ZmZlci4gSWYgdGhlIGhvc3Qgd2FpdGVkIGZvcgordGhlIGJ1ZmZlcidzIHN1Ym1pc3Npb24gYnkgdGhlIEZQR0EsIHRoZXJlIHdvdWxkIGJlIGEgcG9zc2liaWxpdHkgdGhhdCB0aGUKK0ZQR0Egc2lkZSBoYXMgc2VudCBkYXRhLCBidXQgYSBzZWxlY3QoKSBjYWxsIHdvdWxkIHN0aWxsIGJsb2NrLCBiZWNhdXNlIHRoZQoraG9zdCBoYXMgbm90IHJlY2VpdmVkIGFueSBub3RpZmljYXRpb24gYWJvdXQgdGhpcy4gVGhpcyBpcyBzb2x2ZWQgd2l0aAorWElMTFlNU0dfT1BDT0RFX05PTkVNUFRZIG1lc3NhZ2VzIHNlbnQgYnkgdGhlIEZQR0Egd2hlbiBhIGNoYW5uZWwgZ29lcyBmcm9tCitjb21wbGV0ZWx5IGVtcHR5IHRvIGNvbnRhaW5pbmcgc29tZSBkYXRhLgorCitUaGVzZSBtZXNzYWdlcyBhcmUgdXNlZCBvbmx5IHRvIHN1cHBvcnQgcG9sbCgpIGFuZCBzZWxlY3QoKS4gVGhlIElQIGNvcmUgY2FuCitiZSBjb25maWd1cmVkIG5vdCB0byBzZW5kIHRoZW0gZm9yIGEgc2xpZ2h0IHJlZHVjdGlvbiBvZiBiYW5kd2lkdGguCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3h0ZW5zYS9hdG9tY3RsLnR4dCBiL0RvY3VtZW50YXRpb24veHRlbnNhL2F0b21jdGwudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkYTc4M2EKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3h0ZW5zYS9hdG9tY3RsLnR4dApAQCAtMCwwICsxLDQ0IEBACitXZSBIYXZlIEF0b21pYyBPcGVyYXRpb24gQ29udHJvbCAoQVRPTUNUTCkgUmVnaXN0ZXIuCitUaGlzIHJlZ2lzdGVyIGRldGVybWluZXMgdGhlIGVmZmVjdCBvZiB1c2luZyBhIFMzMkMxSSBpbnN0cnVjdGlvbgord2l0aCB2YXJpb3VzIGNvbWJpbmF0aW9ucyBvZjoKKworICAgICAxLiBXaXRoIGFuZCB3aXRob3V0IGFuIENvaGVyZW50IENhY2hlIENvbnRyb2xsZXIgd2hpY2gKKyAgICAgICAgY2FuIGRvIEF0b21pYyBUcmFuc2FjdGlvbnMgdG8gdGhlIG1lbW9yeSBpbnRlcm5hbGx5LgorCisgICAgIDIuIFdpdGggYW5kIHdpdGhvdXQgQW4gSW50ZWxsaWdlbnQgTWVtb3J5IENvbnRyb2xsZXIgd2hpY2gKKyAgICAgICAgY2FuIGRvIEF0b21pYyBUcmFuc2FjdGlvbnMgaXRzZWxmLgorCitUaGUgQ29yZSBjb21lcyB1cCB3aXRoIGEgZGVmYXVsdCB2YWx1ZSBvZiBmb3IgdGhlIHRocmVlIHR5cGVzIG9mIGNhY2hlIG9wczoKKworICAgICAgMHgyODogKFdCOiBJbnRlcm5hbCwgV1Q6IEludGVybmFsLCBCWTpFeGNlcHRpb24pCisKK09uIHRoZSBGUEdBIENhcmRzIHdlIHR5cGljYWxseSBzaW11bGF0ZSBhbiBJbnRlbGxpZ2VudCBNZW1vcnkgY29udHJvbGxlcgord2hpY2ggY2FuIGltcGxlbWVudCAgUkNXIHRyYW5zYWN0aW9ucy4gRm9yIEZQR0EgY2FyZHMgd2l0aCBhbiBFeHRlcm5hbAorTWVtb3J5IGNvbnRyb2xsZXIgd2UgbGV0IGl0IHRvIHRoZSBhdG9taWMgb3BlcmF0aW9ucyBpbnRlcm5hbGx5IHdoaWxlCitkb2luZyBhIENhY2hlZCAoV0IpIHRyYW5zYWN0aW9uIGFuZCB1c2UgdGhlIE1lbW9yeSBSQ1cgZm9yIHVuLWNhY2hlZAorb3BlcmF0aW9ucy4KKworRm9yIHN5c3RlbXMgd2l0aG91dCBhbiBjb2hlcmVudCBjYWNoZSBjb250cm9sbGVyLCBub24tTVgsIHdlIGFsd2F5cwordXNlIHRoZSBtZW1vcnkgY29udHJvbGxlcnMgUkNXLCB0aG91Z2h0IG5vbi1NWCBjb250cm9sZXJzIGxpa2VseQorc3VwcG9ydCB0aGUgSW50ZXJuYWwgT3BlcmF0aW9uLgorCitDVVNUT01FUi1XQVJOSU5HOgorICAgVmlydHVhbGx5IGFsbCBjdXN0b21lcnMgYnV5IHRoZWlyIG1lbW9yeSBjb250cm9sbGVycyBmcm9tIHZlbmRvcnMgdGhhdAorICAgZG9uJ3Qgc3VwcG9ydCBhdG9taWMgUkNXIG1lbW9yeSB0cmFuc2FjdGlvbnMgYW5kIHdpbGwgbGlrZWx5IHdhbnQgdG8KKyAgIGNvbmZpZ3VyZSB0aGlzIHJlZ2lzdGVyIHRvIG5vdCB1c2UgUkNXLgorCitEZXZlbG9wZXJzIG1pZ2h0IGZpbmQgdXNpbmcgUkNXIGluIEJ5cGFzcyBtb2RlIGNvbnZlbmllbnQgd2hlbiB0ZXN0aW5nCit3aXRoIHRoZSBjYWNoZSBiZWluZyBieXBhc3NlZDsgZm9yIGV4YW1wbGUgc3R1ZHlpbmcgY2FjaGUgYWxpYXMgcHJvYmxlbXMuCisKK1NlZSBTZWN0aW9uIDQuMy4xMi40IG9mIElTQTsgQml0czoKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXQiAgICAgV1QgICAgICBCWQorICAgICAgICAgICAgICAgICAgICAgICAgICAgNSAgIDQgfCAzICAgMiB8IDEgICAwCisgIDIgQml0CisgIEZpZWxkCisgIFZhbHVlcyAgICAgV0IgLSBXcml0ZSBCYWNrICAgICAgICAgV1QgLSBXcml0ZSBUaHJ1ICAgICAgICAgQlkgLSBCeXBhc3MKKy0tLS0tLS0tLSAgICAtLS0tLS0tLS0tLS0tLS0gICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLSAgICAgLS0tLS0tLS0tLS0tLS0tLQorICAgIDAgICAgICAgIEV4Y2VwdGlvbiAgICAgICAgICAgICAgIEV4Y2VwdGlvbiAgICAgICAgICAgICAgIEV4Y2VwdGlvbgorICAgIDEgICAgICAgIFJDVyBUcmFuc2FjdGlvbiAgICAgICAgIFJDVyBUcmFuc2FjdGlvbiAgICAgICAgIFJDVyBUcmFuc2FjdGlvbgorICAgIDIgICAgICAgIEludGVybmFsIE9wZXJhdGlvbiAgICAgIEludGVybmFsIE9wZXJhdGlvbiAgICAgIFJlc2VydmVkCisgICAgMyAgICAgICAgUmVzZXJ2ZWQgICAgICAgICAgICAgICAgUmVzZXJ2ZWQgICAgICAgICAgICAgICAgUmVzZXJ2ZWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24veHRlbnNhL21tdS50eHQgYi9Eb2N1bWVudGF0aW9uL3h0ZW5zYS9tbXUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzMTJmZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3h0ZW5zYS9tbXUudHh0CkBAIC0wLDAgKzEsNjQgQEAKK01NVXYzIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLgorCitUaGUgY29kZSBpbiB0aGUgaW5pdGlhbGl6ZV9tbXUgbWFjcm8gc2V0cyB1cCBNTVV2MyBtZW1vcnkgbWFwcGluZworaWRlbnRpY2FsbHkgdG8gTU1VdjIgZml4ZWQgbWVtb3J5IG1hcHBpbmcuIERlcGVuZGluZyBvbgorQ09ORklHX0lOSVRJQUxJWkVfWFRFTlNBX01NVV9JTlNJREVfVk1MSU5VWCBzeW1ib2wgdGhpcyBjb2RlIGlzCitsb2NhdGVkIGluIG9uZSBvZiB0aGUgZm9sbG93aW5nIGFkZHJlc3MgcmFuZ2VzOgorCisgICAgMHhGMDAwMDAwMC4uMHhGRkZGRkZGRiAod2lsbCBrZWVwIHNhbWUgYWRkcmVzcyBpbiBNTVUgdjIgbGF5b3V0OworICAgIAkJCSB0eXBpY2FsbHkgUk9NKQorICAgIDB4MDAwMDAwMDAuLjB4MDdGRkZGRkYgKHN5c3RlbSBSQU07IHRoaXMgY29kZSBpcyBhY3R1YWxseSBsaW5rZWQKKyAgICAJCQkgYXQgMHhEMDAwMDAwMC4uMHhEN0ZGRkZGRiBbY2FjaGVkXQorICAgIAkJCSBvciAweEQ4MDAwMDAwLi4weERGRkZGRkZGIFt1bmNhY2hlZF07CisgICAgCQkJIGluIGFueSBjYXNlLCBpbml0aWFsbHkgcnVucyBlbHNld2hlcmUKKyAgICAJCQkgdGhhbiBsaW5rZWQsIHNvIGhhdmUgdG8gYmUgY2FyZWZ1bCkKKworVGhlIGNvZGUgaGFzIHRoZSBmb2xsb3dpbmcgYXNzdW1wdGlvbnM6CisgIFRoaXMgY29kZSBmcmFnbWVudCBpcyBydW4gb25seSBvbiBhbiBNTVUgdjMuCisgIFRMQnMgYXJlIGluIHRoZWlyIHJlc2V0IHN0YXRlLgorICBJVExCQ0ZHIGFuZCBEVExCQ0ZHIGFyZSB6ZXJvIChyZXNldCBzdGF0ZSkuCisgIFJBU0lEIGlzIDB4MDQwMzAyMDEgKHJlc2V0IHN0YXRlKS4KKyAgUFMuUklORyBpcyB6ZXJvIChyZXNldCBzdGF0ZSkuCisgIExJVEJBU0UgaXMgemVybyAocmVzZXQgc3RhdGUsIFBDLXJlbGF0aXZlIGxpdGVyYWxzKTsgcmVxdWlyZWQgdG8gYmUgUElDLgorCitUTEIgc2V0dXAgcHJvY2VlZHMgYWxvbmcgdGhlIGZvbGxvd2luZyBzdGVwcy4KKworICBMZWdlbmQ6CisgICAgVkEgPSB2aXJ0dWFsIGFkZHJlc3MgKHR3byB1cHBlciBuaWJibGVzIG9mIGl0KTsKKyAgICBQQSA9IHBoeXNpY2FsIGFkZHJlc3MgKHR3byB1cHBlciBuaWJibGVzIG9mIGl0KTsKKyAgICBwYyA9IHBoeXNpY2FsIHJhbmdlIHRoYXQgY29udGFpbnMgdGhpcyBjb2RlOworCitBZnRlciBzdGVwIDIsIHdlIGp1bXAgdG8gdmlydHVhbCBhZGRyZXNzIGluIDB4NDAwMDAwMDAuLjB4NWZmZmZmZmYKK3RoYXQgY29ycmVzcG9uZHMgdG8gbmV4dCBpbnN0cnVjdGlvbiB0byBleGVjdXRlIGluIHRoaXMgY29kZS4KK0FmdGVyIHN0ZXAgNCwgd2UganVtcCB0byBpbnRlbmRlZCAobGlua2VkKSBhZGRyZXNzIG9mIHRoaXMgY29kZS4KKworICAgIFN0ZXAgMCAgICAgU3RlcDEgICAgIFN0ZXAgMiAgICAgU3RlcDMgICAgIFN0ZXAgNCAgICAgU3RlcDUKKyA9PT09PT09PT09PT0gID09PT09ICA9PT09PT09PT09PT0gID09PT09ICA9PT09PT09PT09PT0gID09PT09CisgICBWQSAgICAgIFBBICAgICBQQSAgICBWQSAgICAgIFBBICAgICBQQSAgICBWQSAgICAgIFBBICAgICBQQQorIC0tLS0tLSAgICAtLSAgICAgLS0gIC0tLS0tLSAgICAtLSAgICAgLS0gIC0tLS0tLSAgICAtLSAgICAgLS0KKyBFMC4uRkYgLT4gRTAgIC0+IEUwICBFMC4uRkYgLT4gRTAgICAgICAgICBGMC4uRkYgLT4gRjAgIC0+IEYwCisgQzAuLkRGIC0+IEMwICAtPiBDMCAgQzAuLkRGIC0+IEMwICAgICAgICAgRTAuLkVGIC0+IEYwICAtPiBGMAorIEEwLi5CRiAtPiBBMCAgLT4gQTAgIEEwLi5CRiAtPiBBMCAgICAgICAgIEQ4Li5ERiAtPiAwMCAgLT4gMDAKKyA4MC4uOUYgLT4gODAgIC0+IDgwICA4MC4uOUYgLT4gODAgICAgICAgICBEMC4uRDcgLT4gMDAgIC0+IDAwCisgNjAuLjdGIC0+IDYwICAtPiA2MCAgNjAuLjdGIC0+IDYwCisgNDAuLjVGIC0+IDQwICAgICAgICAgNDAuLjVGIC0+IHBjICAtPiBwYyAgNDAuLjVGIC0+IHBjCisgMjAuLjNGIC0+IDIwICAtPiAyMCAgMjAuLjNGIC0+IDIwCisgMDAuLjFGIC0+IDAwICAtPiAwMCAgMDAuLjFGIC0+IDAwCisKK1RoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIElPIHBlcmlwaGVyYWxzIGlzIGFib3ZlIDB4ZjAwMDAwMDAuIFRoaXMgbWF5IGNoYW5nZQordXNpbmcgYSAicmFuZ2VzIiBwcm9wZXJ0eSBpbiBhIGRldmljZSB0cmVlIHNpbXBsZS1idXMgbm9kZS4gU2VlIGVQQVBSIDEuMSwgwqc2LjUKK2ZvciBkZXRhaWxzIG9uIHRoZSBzeW50YXggYW5kIHNlbWFudGljIG9mIHNpbXBsZS1idXMgbm9kZXMuIFRoZSBmb2xsb3dpbmcKK2xpbWl0YXRpb25zIGFwcGx5OgorCisxLiBPbmx5IHRvcCBsZXZlbCBzaW1wbGUtYnVzIG5vZGVzIGFyZSBjb25zaWRlcmVkCisKKzIuIE9ubHkgb25lIChmaXJzdCkgc2ltcGxlLWJ1cyBub2RlIGlzIGNvbnNpZGVyZWQKKworMy4gRW1wdHkgInJhbmdlcyIgcHJvcGVydGllcyBhcmUgbm90IHN1cHBvcnRlZAorCis0LiBPbmx5IHRoZSBmaXJzdCB0cmlwbGV0IGluIHRoZSAicmFuZ2VzIiBwcm9wZXJ0eSBpcyBjb25zaWRlcmVkCisKKzUuIFRoZSBwYXJlbnQtYnVzLWFkZHJlc3MgdmFsdWUgaXMgcm91bmRlZCBkb3duIHRvIHRoZSBuZWFyZXN0IDI1Nk1CIGJvdW5kYXJ5CisKKzYuIFRoZSBJTyBhcmVhIGNvdmVycyB0aGUgZW50aXJlIDI1Nk1CIHNlZ21lbnQgb2YgcGFyZW50LWJ1cy1hZGRyZXNzOyB0aGUKKyAgICJyYW5nZXMiIHRyaXBsZXQgbGVuZ3RoIGZpZWxkIGlzIGlnbm9yZWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24veHoudHh0IGIvRG9jdW1lbnRhdGlvbi94ei50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmNmM2UyNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24veHoudHh0CkBAIC0wLDAgKzEsMTIxIEBACisKK1haIGRhdGEgY29tcHJlc3Npb24gaW4gTGludXgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW50cm9kdWN0aW9uCisKKyAgICBYWiBpcyBhIGdlbmVyYWwgcHVycG9zZSBkYXRhIGNvbXByZXNzaW9uIGZvcm1hdCB3aXRoIGhpZ2ggY29tcHJlc3Npb24KKyAgICByYXRpbyBhbmQgcmVsYXRpdmVseSBmYXN0IGRlY29tcHJlc3Npb24uIFRoZSBwcmltYXJ5IGNvbXByZXNzaW9uCisgICAgYWxnb3JpdGhtIChmaWx0ZXIpIGlzIExaTUEyLiBBZGRpdGlvbmFsIGZpbHRlcnMgY2FuIGJlIHVzZWQgdG8gaW1wcm92ZQorICAgIGNvbXByZXNzaW9uIHJhdGlvIGV2ZW4gZnVydGhlci4gRS5nLiBCcmFuY2gvQ2FsbC9KdW1wIChCQ0opIGZpbHRlcnMKKyAgICBpbXByb3ZlIGNvbXByZXNzaW9uIHJhdGlvIG9mIGV4ZWN1dGFibGUgZGF0YS4KKworICAgIFRoZSBYWiBkZWNvbXByZXNzb3IgaW4gTGludXggaXMgY2FsbGVkIFhaIEVtYmVkZGVkLiBJdCBzdXBwb3J0cworICAgIHRoZSBMWk1BMiBmaWx0ZXIgYW5kIG9wdGlvbmFsbHkgYWxzbyBCQ0ogZmlsdGVycy4gQ1JDMzIgaXMgc3VwcG9ydGVkCisgICAgZm9yIGludGVncml0eSBjaGVja2luZy4gVGhlIGhvbWUgcGFnZSBvZiBYWiBFbWJlZGRlZCBpcyBhdAorICAgIDxodHRwOi8vdHVrYWFuaS5vcmcveHovZW1iZWRkZWQuaHRtbD4sIHdoZXJlIHlvdSBjYW4gZmluZCB0aGUKKyAgICBsYXRlc3QgdmVyc2lvbiBhbmQgYWxzbyBpbmZvcm1hdGlvbiBhYm91dCB1c2luZyB0aGUgY29kZSBvdXRzaWRlCisgICAgdGhlIExpbnV4IGtlcm5lbC4KKworICAgIEZvciB1c2Vyc3BhY2UsIFhaIFV0aWxzIHByb3ZpZGUgYSB6bGliLWxpa2UgY29tcHJlc3Npb24gbGlicmFyeQorICAgIGFuZCBhIGd6aXAtbGlrZSBjb21tYW5kIGxpbmUgdG9vbC4gWFogVXRpbHMgY2FuIGJlIGRvd25sb2FkZWQgZnJvbQorICAgIDxodHRwOi8vdHVrYWFuaS5vcmcveHovPi4KKworWFogcmVsYXRlZCBjb21wb25lbnRzIGluIHRoZSBrZXJuZWwKKworICAgIFRoZSB4el9kZWMgbW9kdWxlIHByb3ZpZGVzIFhaIGRlY29tcHJlc3NvciB3aXRoIHNpbmdsZS1jYWxsIChidWZmZXIKKyAgICB0byBidWZmZXIpIGFuZCBtdWx0aS1jYWxsIChzdGF0ZWZ1bCkgQVBJcy4gVGhlIHVzYWdlIG9mIHRoZSB4el9kZWMKKyAgICBtb2R1bGUgaXMgZG9jdW1lbnRlZCBpbiBpbmNsdWRlL2xpbnV4L3h6LmguCisKKyAgICBUaGUgeHpfZGVjX3Rlc3QgbW9kdWxlIGlzIGZvciB0ZXN0aW5nIHh6X2RlYy4geHpfZGVjX3Rlc3QgaXMgbm90CisgICAgdXNlZnVsIHVubGVzcyB5b3UgYXJlIGhhY2tpbmcgdGhlIFhaIGRlY29tcHJlc3Nvci4geHpfZGVjX3Rlc3QKKyAgICBhbGxvY2F0ZXMgYSBjaGFyIGRldmljZSBtYWpvciBkeW5hbWljYWxseSB0byB3aGljaCBvbmUgY2FuIHdyaXRlCisgICAgLnh6IGZpbGVzIGZyb20gdXNlcnNwYWNlLiBUaGUgZGVjb21wcmVzc2VkIG91dHB1dCBpcyB0aHJvd24gYXdheS4KKyAgICBLZWVwIGFuIGV5ZSBvbiBkbWVzZyB0byBzZWUgZGlhZ25vc3RpY3MgcHJpbnRlZCBieSB4el9kZWNfdGVzdC4KKyAgICBTZWUgdGhlIHh6X2RlY190ZXN0IHNvdXJjZSBjb2RlIGZvciB0aGUgZGV0YWlscy4KKworICAgIEZvciBkZWNvbXByZXNzaW5nIHRoZSBrZXJuZWwgaW1hZ2UsIGluaXRyYW1mcywgYW5kIGluaXRyZCwgdGhlcmUKKyAgICBpcyBhIHdyYXBwZXIgZnVuY3Rpb24gaW4gbGliL2RlY29tcHJlc3NfdW54ei5jLiBJdHMgQVBJIGlzIHRoZQorICAgIHNhbWUgYXMgaW4gb3RoZXIgZGVjb21wcmVzc18qLmMgZmlsZXMsIHdoaWNoIGlzIGRlZmluZWQgaW4KKyAgICBpbmNsdWRlL2xpbnV4L2RlY29tcHJlc3MvZ2VuZXJpYy5oLgorCisgICAgc2NyaXB0cy94el93cmFwLnNoIGlzIGEgd3JhcHBlciBmb3IgdGhlIHh6IGNvbW1hbmQgbGluZSB0b29sIGZvdW5kCisgICAgZnJvbSBYWiBVdGlscy4gVGhlIHdyYXBwZXIgc2V0cyBjb21wcmVzc2lvbiBvcHRpb25zIHRvIHZhbHVlcyBzdWl0YWJsZQorICAgIGZvciBjb21wcmVzc2luZyB0aGUga2VybmVsIGltYWdlLgorCisgICAgRm9yIGtlcm5lbCBtYWtlZmlsZXMsIHR3byBjb21tYW5kcyBhcmUgcHJvdmlkZWQgZm9yIHVzZSB3aXRoCisgICAgJChjYWxsIGlmX25lZWRlZCkuIFRoZSBrZXJuZWwgaW1hZ2Ugc2hvdWxkIGJlIGNvbXByZXNzZWQgd2l0aAorICAgICQoY2FsbCBpZl9uZWVkZWQseHprZXJuKSB3aGljaCB3aWxsIHVzZSBhIEJDSiBmaWx0ZXIgYW5kIGEgYmlnIExaTUEyCisgICAgZGljdGlvbmFyeS4gSXQgd2lsbCBhbHNvIGFwcGVuZCBhIGZvdXItYnl0ZSB0cmFpbGVyIGNvbnRhaW5pbmcgdGhlCisgICAgdW5jb21wcmVzc2VkIHNpemUgb2YgdGhlIGZpbGUsIHdoaWNoIGlzIG5lZWRlZCBieSB0aGUgYm9vdCBjb2RlLgorICAgIE90aGVyIHRoaW5ncyBzaG91bGQgYmUgY29tcHJlc3NlZCB3aXRoICQoY2FsbCBpZl9uZWVkZWQseHptaXNjKQorICAgIHdoaWNoIHdpbGwgdXNlIG5vIEJDSiBmaWx0ZXIgYW5kIDEgTWlCIExaTUEyIGRpY3Rpb25hcnkuCisKK05vdGVzIG9uIGNvbXByZXNzaW9uIG9wdGlvbnMKKworICAgIFNpbmNlIHRoZSBYWiBFbWJlZGRlZCBzdXBwb3J0cyBvbmx5IHN0cmVhbXMgd2l0aCBubyBpbnRlZ3JpdHkgY2hlY2sgb3IKKyAgICBDUkMzMiwgbWFrZSBzdXJlIHRoYXQgeW91IGRvbid0IHVzZSBzb21lIG90aGVyIGludGVncml0eSBjaGVjayB0eXBlCisgICAgd2hlbiBlbmNvZGluZyBmaWxlcyB0aGF0IGFyZSBzdXBwb3NlZCB0byBiZSBkZWNvZGVkIGJ5IHRoZSBrZXJuZWwuIFdpdGgKKyAgICBsaWJsem1hLCB5b3UgbmVlZCB0byB1c2UgZWl0aGVyIExaTUFfQ0hFQ0tfTk9ORSBvciBMWk1BX0NIRUNLX0NSQzMyCisgICAgd2hlbiBlbmNvZGluZy4gV2l0aCB0aGUgeHogY29tbWFuZCBsaW5lIHRvb2wsIHVzZSAtLWNoZWNrPW5vbmUgb3IKKyAgICAtLWNoZWNrPWNyYzMyLgorCisgICAgVXNpbmcgQ1JDMzIgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdW5sZXNzIHRoZXJlIGlzIHNvbWUgb3RoZXIgbGF5ZXIKKyAgICB3aGljaCB3aWxsIHZlcmlmeSB0aGUgaW50ZWdyaXR5IG9mIHRoZSB1bmNvbXByZXNzZWQgZGF0YSBhbnl3YXkuCisgICAgRG91YmxlIGNoZWNraW5nIHRoZSBpbnRlZ3JpdHkgd291bGQgcHJvYmFibHkgYmUgd2FzdGUgb2YgQ1BVIGN5Y2xlcy4KKyAgICBOb3RlIHRoYXQgdGhlIGhlYWRlcnMgd2lsbCBhbHdheXMgaGF2ZSBhIENSQzMyIHdoaWNoIHdpbGwgYmUgdmFsaWRhdGVkCisgICAgYnkgdGhlIGRlY29kZXI7IHlvdSBjYW4gb25seSBjaGFuZ2UgdGhlIGludGVncml0eSBjaGVjayB0eXBlIChvcgorICAgIGRpc2FibGUgaXQpIGZvciB0aGUgYWN0dWFsIHVuY29tcHJlc3NlZCBkYXRhLgorCisgICAgSW4gdXNlcnNwYWNlLCBMWk1BMiBpcyB0eXBpY2FsbHkgdXNlZCB3aXRoIGRpY3Rpb25hcnkgc2l6ZXMgb2Ygc2V2ZXJhbAorICAgIG1lZ2FieXRlcy4gVGhlIGRlY29kZXIgbmVlZHMgdG8gaGF2ZSB0aGUgZGljdGlvbmFyeSBpbiBSQU0sIHRodXMgYmlnCisgICAgZGljdGlvbmFyaWVzIGNhbm5vdCBiZSB1c2VkIGZvciBmaWxlcyB0aGF0IGFyZSBpbnRlbmRlZCB0byBiZSBkZWNvZGVkCisgICAgYnkgdGhlIGtlcm5lbC4gMSBNaUIgaXMgcHJvYmFibHkgdGhlIG1heGltdW0gcmVhc29uYWJsZSBkaWN0aW9uYXJ5CisgICAgc2l6ZSBmb3IgaW4ta2VybmVsIHVzZSAobWF5YmUgbW9yZSBpcyBPSyBmb3IgaW5pdHJhbWZzKS4gVGhlIHByZXNldHMKKyAgICBpbiBYWiBVdGlscyBtYXkgbm90IGJlIG9wdGltYWwgd2hlbiBjcmVhdGluZyBmaWxlcyBmb3IgdGhlIGtlcm5lbCwKKyAgICBzbyBkb24ndCBoZXNpdGF0ZSB0byB1c2UgY3VzdG9tIHNldHRpbmdzLiBFeGFtcGxlOgorCisgICAgICAgIHh6IC0tY2hlY2s9Y3JjMzIgLS1sem1hMj1kaWN0PTUxMktpQiBpbnB1dGZpbGUKKworICAgIEFuIGV4Y2VwdGlvbiB0byBhYm92ZSBkaWN0aW9uYXJ5IHNpemUgbGltaXRhdGlvbiBpcyB3aGVuIHRoZSBkZWNvZGVyCisgICAgaXMgdXNlZCBpbiBzaW5nbGUtY2FsbCBtb2RlLiBEZWNvbXByZXNzaW5nIHRoZSBrZXJuZWwgaXRzZWxmIGlzIGFuCisgICAgZXhhbXBsZSBvZiB0aGlzIHNpdHVhdGlvbi4gSW4gc2luZ2xlLWNhbGwgbW9kZSwgdGhlIG1lbW9yeSB1c2FnZQorICAgIGRvZXNuJ3QgZGVwZW5kIG9uIHRoZSBkaWN0aW9uYXJ5IHNpemUsIGFuZCBpdCBpcyBwZXJmZWN0bHkgZmluZSB0bworICAgIHVzZSBhIGJpZyBkaWN0aW9uYXJ5OiBmb3IgbWF4aW11bSBjb21wcmVzc2lvbiwgdGhlIGRpY3Rpb25hcnkgc2hvdWxkCisgICAgYmUgYXQgbGVhc3QgYXMgYmlnIGFzIHRoZSB1bmNvbXByZXNzZWQgZGF0YSBpdHNlbGYuCisKK0Z1dHVyZSBwbGFucworCisgICAgQ3JlYXRpbmcgYSBsaW1pdGVkIFhaIGVuY29kZXIgbWF5IGJlIGNvbnNpZGVyZWQgaWYgcGVvcGxlIHRoaW5rIGl0IGlzCisgICAgdXNlZnVsLiBMWk1BMiBpcyBzbG93ZXIgdG8gY29tcHJlc3MgdGhhbiBlLmcuIERlZmxhdGUgb3IgTFpPIGV2ZW4gYXQKKyAgICB0aGUgZmFzdGVzdCBzZXR0aW5ncywgc28gaXQgaXNuJ3QgY2xlYXIgaWYgTFpNQTIgZW5jb2RlciBpcyB3YW50ZWQKKyAgICBpbnRvIHRoZSBrZXJuZWwuCisKKyAgICBTdXBwb3J0IGZvciBsaW1pdGVkIHJhbmRvbS1hY2Nlc3MgcmVhZGluZyBpcyBwbGFubmVkIGZvciB0aGUKKyAgICBkZWNvbXByZXNzaW9uIGNvZGUuIEkgZG9uJ3Qga25vdyBpZiBpdCBjb3VsZCBoYXZlIGFueSB1c2UgaW4gdGhlCisgICAga2VybmVsLCBidXQgSSBrbm93IHRoYXQgaXQgd291bGQgYmUgdXNlZnVsIGluIHNvbWUgZW1iZWRkZWQgcHJvamVjdHMKKyAgICBvdXRzaWRlIHRoZSBMaW51eCBrZXJuZWwuCisKK0NvbmZvcm1hbmNlIHRvIHRoZSAueHogZmlsZSBmb3JtYXQgc3BlY2lmaWNhdGlvbgorCisgICAgVGhlcmUgYXJlIGEgY291cGxlIG9mIGNvcm5lciBjYXNlcyB3aGVyZSB0aGluZ3MgaGF2ZSBiZWVuIHNpbXBsaWZpZWQKKyAgICBhdCBleHBlbnNlIG9mIGRldGVjdGluZyBlcnJvcnMgYXMgZWFybHkgYXMgcG9zc2libGUuIFRoZXNlIHNob3VsZCBub3QKKyAgICBtYXR0ZXIgaW4gcHJhY3RpY2UgYWxsLCBzaW5jZSB0aGV5IGRvbid0IGNhdXNlIHNlY3VyaXR5IGlzc3Vlcy4gQnV0CisgICAgaXQgaXMgZ29vZCB0byBrbm93IHRoaXMgaWYgdGVzdGluZyB0aGUgY29kZSBlLmcuIHdpdGggdGhlIHRlc3QgZmlsZXMKKyAgICBmcm9tIFhaIFV0aWxzLgorCitSZXBvcnRpbmcgYnVncworCisgICAgQmVmb3JlIHJlcG9ydGluZyBhIGJ1ZywgcGxlYXNlIGNoZWNrIHRoYXQgaXQncyBub3QgZml4ZWQgYWxyZWFkeQorICAgIGF0IHVwc3RyZWFtLiBTZWUgPGh0dHA6Ly90dWthYW5pLm9yZy94ei9lbWJlZGRlZC5odG1sPiB0byBnZXQgdGhlCisgICAgbGF0ZXN0IGNvZGUuCisKKyAgICBSZXBvcnQgYnVncyB0byA8bGFzc2UuY29sbGluQHR1a2Fhbmkub3JnPiBvciB2aXNpdCAjdHVrYWFuaSBvbgorICAgIEZyZWVub2RlIGFuZCB0YWxrIHRvIExhcmh6dS4gSSBkb24ndCBhY3RpdmVseSByZWFkIExLTUwgb3Igb3RoZXIKKyAgICBrZXJuZWwtcmVsYXRlZCBtYWlsaW5nIGxpc3RzLCBzbyBpZiB0aGVyZSdzIHNvbWV0aGluZyBJIHNob3VsZCBrbm93LAorICAgIHlvdSBzaG91bGQgZW1haWwgdG8gbWUgcGVyc29uYWxseSBvciB1c2UgSVJDLgorCisgICAgRG9uJ3QgYm90aGVyIElnb3IgUGF2bG92IHdpdGggcXVlc3Rpb25zIGFib3V0IHRoZSBYWiBpbXBsZW1lbnRhdGlvbgorICAgIGluIHRoZSBrZXJuZWwgb3IgYWJvdXQgWFogVXRpbHMuIFdoaWxlIHRoZXNlIHR3byBpbXBsZW1lbnRhdGlvbnMKKyAgICBpbmNsdWRlIGVzc2VudGlhbCBjb2RlIHRoYXQgaXMgZGlyZWN0bHkgYmFzZWQgb24gSWdvciBQYXZsb3YncyBjb2RlLAorICAgIHRoZXNlIGltcGxlbWVudGF0aW9ucyBhcmVuJ3QgbWFpbnRhaW5lZCBub3Igc3VwcG9ydGVkIGJ5IGhpbS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vemhfQ04vQ29kaW5nU3R5bGUgYi9Eb2N1bWVudGF0aW9uL3poX0NOL0NvZGluZ1N0eWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1NGFmZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3poX0NOL0NvZGluZ1N0eWxlCkBAIC0wLDAgKzEsNjk0IEBACitDaGluZXNlIHRyYW5zbGF0ZWQgdmVyc2lvbiBvZiBEb2N1bWVudGF0aW9uL0NvZGluZ1N0eWxlCisKK0lmIHlvdSBoYXZlIGFueSBjb21tZW50IG9yIHVwZGF0ZSB0byB0aGUgY29udGVudCwgcGxlYXNlIHBvc3QgdG8gTEtNTCBkaXJlY3RseS4KK0hvd2V2ZXIsIGlmIHlvdSBoYXZlIHByb2JsZW0gY29tbXVuaWNhdGluZyBpbiBFbmdsaXNoIHlvdSBjYW4gYWxzbyBhc2sgdGhlCitDaGluZXNlIG1haW50YWluZXIgZm9yIGhlbHAuICBDb250YWN0IHRoZSBDaGluZXNlIG1haW50YWluZXIsIGlmIHRoaXMKK3RyYW5zbGF0aW9uIGlzIG91dGRhdGVkIG9yIHRoZXJlIGlzIHByb2JsZW0gd2l0aCB0cmFuc2xhdGlvbi4KKworQ2hpbmVzZSBtYWludGFpbmVyOiBaaGFuZyBMZSA8cjBiZXJ0ekBnZW50b28ub3JnPgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEb2N1bWVudGF0aW9uL0NvZGluZ1N0eWxl55qE5Lit5paH57+76K+RCisKK+WmguaenOaDs+ivhOiuuuaIluabtOaWsOacrOaWh+eahOWGheWuue+8jOivt+ebtOaOpeWPkeS/oeWIsExLTUzjgILlpoLmnpzkvaDkvb/nlKjoi7HmlofkuqTmtYHmnInlm7Dpmr7nmoTor53vvIzkuZ/lj68KK+S7peWQkeS4reaWh+eJiOe7tOaKpOiAheaxguWKqeOAguWmguaenOacrOe/u+ivkeabtOaWsOS4jeWPiuaXtuaIluiAhee/u+ivkeWtmOWcqOmXrumimO+8jOivt+iBlOezu+S4reaWh+eJiOe7tOaKpOiAheOAggorCivkuK3mlofniYjnu7TmiqTogIXvvJog5byg5LmQIFpoYW5nIExlIDxyMGJlcnR6QGdlbnRvby5vcmc+CivkuK3mlofniYjnv7vor5HogIXvvJog5byg5LmQIFpoYW5nIExlIDxyMGJlcnR6QGdlbnRvby5vcmc+CivkuK3mlofniYjmoKHor5HogIXvvJog546L6IGqIFdhbmcgQ29uZyA8eGl5b3Uud2FuZ2NvbmdAZ21haWwuY29tPgorICAgICAgICAgICAgICAgd2hlZWx6IDxrZXJuZWwuemVuZ0BnbWFpbC5jb20+CisgICAgICAgICAgICAgICDnrqHml63kuJwgWHVkb25nIEd1YW4gPHh1ZG9uZy5ndWFuQGdtYWlsLmNvbT4KKyAgICAgICAgICAgICAgIExpIFplZmFuIDxsaXpmQGNuLmZ1aml0c3UuY29tPgorICAgICAgICAgICAgICAgV2FuZyBDaGVuIDx3YW5nY2hlbkBjbi5mdWppdHN1LmNvbT4KK+S7peS4i+S4uuato+aWhworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwkJTGludXjlhoXmoLjku6PnoIHpo47moLwKKwor6L+Z5piv5LiA5Liq566A55+t55qE5paH5qGj77yM5o+P6L+w5LqGbGludXjlhoXmoLjnmoTpppbpgInku6PnoIHpo47moLzjgILku6PnoIHpo47moLzmmK/lm6DkurrogIzlvILnmoTvvIzogIzkuJTmiJEKK+S4jeaEv+aEj+aKiuaIkeeahOingueCueW8uuWKoOe7meS7u+S9leS6uu+8jOS4jei/h+i/memHjOaJgOiusui/sOeahOaYr+aIkeW/hemhu+imgee7tOaKpOeahOS7o+eggeaJgOmBteWuiOeahOmjjuagvO+8jAor5bm25LiU5oiR5Lmf5biM5pyb57ud5aSn5aSa5pWw5YW25LuW5Luj56CB5Lmf6IO96YG15a6I6L+Z5Liq6aOO5qC844CC6K+35Zyo5YaZ5Luj56CB5pe26Iez5bCR6ICD6JmR5LiA5LiL5pys5paH5omA6L+w55qECivpo47moLzjgIIKKwor6aaW5YWI77yM5oiR5bu66K6u5L2g5omT5Y2w5LiA5Lu9R05V5Luj56CB6KeE6IyD77yM54S25ZCO5LiN6KaB6K+75a6D44CC54On5LqG5a6D77yM6L+Z5piv5LiA5Liq5YW35pyJ6YeN5aSn6LGh5b6B5oCnCivmhI/kuYnnmoTliqjkvZzjgIIKKwor5LiN566h5oCO5qC377yM546w5Zyo5oiR5Lus5byA5aeL77yaCisKKworCSAJ56ys5LiA56ug77ya57yp6L+bCisKK+WItuihqOespuaYrzjkuKrlrZfnrKbvvIzmiYDku6XnvKnov5vkuZ/mmK845Liq5a2X56ym44CC5pyJ5Lqb5byC56uv6L+Q5Yqo6K+V5Zu+5bCG57yp6L+b5Y+Y5Li6NO+8iOS5g+iHszLvvInkuKrlrZfnrKYKK+a3se+8jOi/meWHoOS5juebuOW9k+S6juWwneivleWwhuWchuWRqOeOh+eahOWAvOWumuS5ieS4ujPjgIIKKwor55CG55Sx77ya57yp6L+b55qE5YWo6YOo5oSP5LmJ5bCx5Zyo5LqO5riF5qWa55qE5a6a5LmJ5LiA5Liq5o6n5Yi25Z2X6LW35q2i5LqO5L2V5aSE44CC5bCk5YW25piv5b2T5L2g55uv552A5L2g55qE5bGP5bmVCivov57nu63nnIvkuoYyMOWwj+aXtuS5i+WQju+8jOS9oOWwhuS8muWPkeeOsOWkp+S4gOeCueeahOe8qei/m+S8muS9v+S9oOabtOWuueaYk+WIhui+qOe8qei/m+OAggorCivnjrDlnKjvvIzmnInkupvkurrkvJrmirHmgKg45Liq5a2X56ym55qE57yp6L+b5Lya5L2/5Luj56CB5ZCR5Y+z6L6556e75Yqo55qE5aSq6L+c77yM5ZyoODDkuKrlrZfnrKbnmoTnu4jnq6/lsY/luZXkuIoKK+WwseW+iOmavuivu+i/meagt+eahOS7o+eggeOAgui/meS4qumXrumimOeahOetlOahiOaYr++8jOWmguaenOS9oOmcgOimgTPnuqfku6XkuIrnmoTnvKnov5vvvIzkuI3nrqHnlKjkvZXnp43mlrnlvI/kvaAKK+eahOS7o+eggeW3sue7j+aciemXrumimOS6hu+8jOW6lOivpeS/ruato+S9oOeahOeoi+W6j+OAggorCivnroDogIzoqIDkuYvvvIw45Liq5a2X56ym55qE57yp6L+b5Y+v5Lul6K6p5Luj56CB5pu05a655piT6ZiF6K+777yM6L+Y5pyJ5LiA5Liq5aW95aSE5piv5b2T5L2g55qE5Ye95pWw5bWM5aWX5aSq5rex55qECivml7blgJnlj6/ku6Xnu5nkvaDorablkYrjgILnlZnlv4Pov5nkuKrorablkYrjgIIKKwor5Zyoc3dpdGNo6K+t5Y+l5Lit5raI6Zmk5aSa57qn57yp6L+b55qE6aaW6YCJ55qE5pa55byP5piv6K6p4oCcc3dpdGNo4oCd5ZKM5LuO5bGe5LqO5a6D55qE4oCcY2FzZeKAneagh+etvuWvuem9kOS6juWQjAor5LiA5YiX77yM6ICM5LiN6KaB4oCc5Lik5qyh57yp6L+b4oCd4oCcY2FzZeKAneagh+etvuOAguavlOWmgu+8mgorCisJc3dpdGNoIChzdWZmaXgpIHsKKwljYXNlICdHJzoKKwljYXNlICdnJzoKKwkJbWVtIDw8PSAzMDsKKwkJYnJlYWs7CisJY2FzZSAnTSc6CisJY2FzZSAnbSc6CisJCW1lbSA8PD0gMjA7CisJCWJyZWFrOworCWNhc2UgJ0snOgorCWNhc2UgJ2snOgorCQltZW0gPDw9IDEwOworCQkvKiBmYWxsIHRocm91Z2ggKi8KKwlkZWZhdWx0OgorCQlicmVhazsKKwl9CisKKwor5LiN6KaB5oqK5aSa5Liq6K+t5Y+l5pS+5Zyo5LiA6KGM6YeM77yM6Zmk6Z2e5L2g5pyJ5LuA5LmI5Lic6KW/6KaB6ZqQ6JeP77yaCisKKwlpZiAoY29uZGl0aW9uKSBkb190aGlzOworCSAgZG9fc29tZXRoaW5nX2V2ZXJ5dGltZTsKKwor5Lmf5LiN6KaB5Zyo5LiA6KGM6YeM5pS+5aSa5Liq6LWL5YC86K+t5Y+l44CC5YaF5qC45Luj56CB6aOO5qC86LaF57qn566A5Y2V44CC5bCx5piv6YG/5YWN5Y+v6IO95a+86Ie05Yir5Lq66K+v6K+755qE6KGoCivovr7lvI/jgIIKKwor6Zmk5LqG5rOo6YeK44CB5paH5qGj5ZKMS2NvbmZpZ+S5i+Wklu+8jOS4jeimgeS9v+eUqOepuuagvOadpee8qei/m++8jOWJjemdoueahOS+i+WtkOaYr+S+i+Wklu+8jOaYr+acieaEj+S4uuS5i+OAggorCivpgInnlKjkuIDkuKrlpb3nmoTnvJbovpHlmajvvIzkuI3opoHlnKjooYzlsL7nlZnnqbrmoLzjgIIKKworCisJCeesrOS6jOeroO+8muaKiumVv+eahOihjOWSjOWtl+espuS4suaJk+aVoworCivku6PnoIHpo47moLznmoTmhI/kuYnlsLHlnKjkuo7kvb/nlKjlubPluLjkvb/nlKjnmoTlt6XlhbfmnaXnu7TmjIHku6PnoIHnmoTlj6/or7vmgKflkozlj6/nu7TmiqTmgKfjgIIKKwor5q+P5LiA6KGM55qE6ZW/5bqm55qE6ZmQ5Yi25pivODDliJfvvIzmiJHku6zlvLrng4jlu7rorq7mgqjpgbXlrojov5nkuKrmg6/kvovjgIIKKwor6ZW/5LqOODDliJfnmoTor63lj6XopoHmiZPmlaPmiJDmnInmhI/kuYnnmoTniYfmrrXjgILmr4/kuKrniYfmrrXopoHmmI7mmL7nn63kuo7ljp/mnaXnmoTor63lj6XvvIzogIzkuJTmlL7nva7nmoTkvY3nva4KK+S5n+aYjuaYvueahOmdoOWPs+OAguWQjOagt+eahOinhOWImeS5n+mAgueUqOS6juacieW+iOmVv+WPguaVsOWIl+ihqOeahOWHveaVsOWktOOAgumVv+Wtl+espuS4suS5n+imgeaJk+aVo+aIkOi+g+efreeahAor5a2X56ym5Liy44CC5ZSv5LiA55qE5L6L5aSW5piv6LaF6L+HODDliJflj6/ku6XlpKfluYXluqbmj5Dpq5jlj6/or7vmgKflubbkuJTkuI3kvJrpmpDol4/kv6Hmga/nmoTmg4XlhrXjgIIKKwordm9pZCBmdW4oaW50IGEsIGludCBiLCBpbnQgYykKK3sKKwlpZiAoY29uZGl0aW9uKQorCQlwcmludGsoS0VSTl9XQVJOSU5HICJXYXJuaW5nIHRoaXMgaXMgYSBsb25nIHByaW50ayB3aXRoICIKKwkJCQkJCSIzIHBhcmFtZXRlcnMgYTogJXUgYjogJXUgIgorCQkJCQkJImM6ICV1IFxuIiwgYSwgYiwgYyk7CisJZWxzZQorCQluZXh0X3N0YXRlbWVudDsKK30KKworCQnnrKzkuInnq6DvvJrlpKfmi6zlj7flkoznqbrmoLznmoTmlL7nva4KKworQ+ivreiogOmjjuagvOS4reWPpuWkluS4gOS4quW4uOingemXrumimOaYr+Wkp+aLrOWPt+eahOaUvue9ruOAguWSjOe8qei/m+Wkp+Wwj+S4jeWQjO+8jOmAieaLqeaIluW8g+eUqOafkOenjeaUvue9ruetlgor55Wl5bm25rKh5pyJ5aSa5bCR5oqA5pyv5LiK55qE5Y6f5Zug77yM5LiN6L+H6aaW6YCJ55qE5pa55byP77yM5bCx5YOPS2VybmlnaGFu5ZKMUml0Y2hpZeWxleekuue7meaIkeS7rOeahO+8jOaYrwor5oqK6LW35aeL5aSn5ous5Y+35pS+5Zyo6KGM5bC+77yM6ICM5oqK57uT5p2f5aSn5ous5Y+35pS+5Zyo6KGM6aaW77yM5omA5Lul77yaCisKKwlpZiAoeCBpcyB0cnVlKSB7CisJCXdlIGRvIHkKKwl9CisKK+i/memAgueUqOS6juaJgOacieeahOmdnuWHveaVsOivreWPpeWdl++8iGlm44CBc3dpdGNo44CBZm9y44CBd2hpbGXjgIFkb++8ieOAguavlOWmgu+8mgorCisJc3dpdGNoIChhY3Rpb24pIHsKKwljYXNlIEtPQkpfQUREOgorCQlyZXR1cm4gImFkZCI7CisJY2FzZSBLT0JKX1JFTU9WRToKKwkJcmV0dXJuICJyZW1vdmUiOworCWNhc2UgS09CSl9DSEFOR0U6CisJCXJldHVybiAiY2hhbmdlIjsKKwlkZWZhdWx0OgorCQlyZXR1cm4gTlVMTDsKKwl9CisKK+S4jei/h++8jOacieS4gOS4quS+i+Wklu+8jOmCo+WwseaYr+WHveaVsO+8muWHveaVsOeahOi1t+Wni+Wkp+aLrOWPt+aUvue9ruS6juS4i+S4gOihjOeahOW8gOWktO+8jOaJgOS7pe+8mgorCisJaW50IGZ1bmN0aW9uKGludCB4KQorCXsKKwkJYm9keSBvZiBmdW5jdGlvbgorCX0KKwor5YWo5LiW55WM55qE5byC56uv5Y+v6IO95Lya5oqx5oCo6L+Z5Liq5LiN5LiA6Ie05oCn5piv4oCm4oCm5ZGD4oCm4oCm5LiN5LiA6Ie055qE77yM5LiN6L+H5omA5pyJ5oCd57u05YGl5YWo55qE5Lq66YO955+l6YGT77yICith77yJSyZS5pivX+ato+ehrueahF/vvIzlubbkuJTvvIhi77yJSyZS5piv5q2j56Gu55qE44CC5q2k5aSW77yM5LiN566h5oCO5qC35Ye95pWw6YO95piv54m55q6K55qE77yI5ZyoQ+ivreiogOS4rQor77yM5Ye95pWw5piv5LiN6IO95bWM5aWX55qE77yJ44CCCisKK+azqOaEj+e7k+adn+Wkp+aLrOWPt+eLrOiHquWNoOaNruS4gOihjO+8jOmZpOmdnuWug+WQjumdoui3n+edgOWQjOS4gOS4quivreWPpeeahOWJqeS9memDqOWIhu+8jOS5n+WwseaYr2Rv6K+t5Y+l5Lit55qECivigJx3aGlsZeKAneaIluiAhWlm6K+t5Y+l5Lit55qE4oCcZWxzZeKAne+8jOWDj+i/meagt++8mgorCisJZG8geworCQlib2R5IG9mIGRvLWxvb3AKKwl9IHdoaWxlIChjb25kaXRpb24pOworCivlkowKKworCWlmICh4ID09IHkpIHsKKwkJLi4KKwl9IGVsc2UgaWYgKHggPiB5KSB7CisJCS4uLgorCX0gZWxzZSB7CisJCS4uLi4KKwl9CisKK+eQhueUse+8mksmUuOAggorCivkuZ/or7fms6jmhI/ov5nnp43lpKfmi6zlj7fnmoTmlL7nva7mlrnlvI/kuZ/og73kvb/nqbrvvIjmiJbogIXlt67kuI3lpJrnqbrnmoTvvInooYznmoTmlbDph4/mnIDlsI/ljJbvvIzlkIzml7bkuI3lpLHlj68KK+ivu+aAp+OAguWboOatpO+8jOeUseS6juS9oOeahOWxj+W5leS4iueahOaWsOihjOaYr+S4jeWPr+WGjeeUn+i1hOa6kO+8iOaDs+aDszI16KGM55qE57uI56uv5bGP5bmV77yJ77yM5L2g5bCG5Lya5pyJ5pu0CivlpJrnmoTnqbrooYzmnaXmlL7nva7ms6jph4rjgIIKKwor5b2T5Y+q5pyJ5LiA5Liq5Y2V54us55qE6K+t5Y+l55qE5pe25YCZ77yM5LiN55So5Yqg5LiN5b+F6KaB55qE5aSn5ous5Y+344CCCisKK2lmIChjb25kaXRpb24pCisJYWN0aW9uKCk7CisKK+i/meeCueS4jemAgueUqOS6juacrOi6q+S4uuafkOS4quadoeS7tuivreWPpeeahOS4gOS4quWIhuaUr+eahOWNleeLrOivreWPpeOAgui/meaXtumcgOimgeWcqOS4pOS4quWIhuaUr+mHjOmDveS9v+eUqOWkpwor5ous5Y+344CCCisKK2lmIChjb25kaXRpb24pIHsKKwlkb190aGlzKCk7CisJZG9fdGhhdCgpOworfSBlbHNlIHsKKwlvdGhlcndpc2UoKTsKK30KKworCQkzLjHvvJrnqbrmoLwKKworTGludXjlhoXmoLjnmoTnqbrmoLzkvb/nlKjmlrnlvI/vvIjkuLvopoHvvInlj5blhrPkuo7lroPmmK/nlKjkuo7lh73mlbDov5jmmK/lhbPplK7lrZfjgILvvIjlpKflpJrmlbDvvInlhbPplK7lrZflkI4KK+imgeWKoOS4gOS4quepuuagvOOAguWAvOW+l+azqOaEj+eahOS+i+WkluaYr3NpemVvZuOAgXR5cGVvZuOAgWFsaWdub2blkoxfX2F0dHJpYnV0ZV9f77yM6L+Z5Lqb5YWz6ZSu5a2XCivmn5DkupvnqIvluqbkuIrnnIvotbfmnaXmm7Tlg4/lh73mlbDvvIjlroPku6zlnKhMaW51eOmHjOS5n+W4uOW4uOS8tOmaj+Wwj+aLrOWPt+iAjOS9v+eUqO+8jOWwveeuoeWcqEPor63oqIDph4zov5nmoLcKK+eahOWwj+aLrOWPt+S4jeaYr+W/hemcgOeahO+8jOWwseWDj+KAnHN0cnVjdCBmaWxlaW5mbyBpbmZv4oCd5aOw5piO6L+H5ZCO55qE4oCcc2l6ZW9mIGluZm/igJ3vvInjgIIKKwor5omA5Lul5Zyo6L+Z5Lqb5YWz6ZSu5a2X5LmL5ZCO5pS+5LiA5Liq56m65qC877yaCisJaWYsIHN3aXRjaCwgY2FzZSwgZm9yLCBkbywgd2hpbGUKK+S9huaYr+S4jeimgeWcqHNpemVvZuOAgXR5cGVvZuOAgWFsaWdub2bmiJbogIVfX2F0dHJpYnV0ZV9f6L+Z5Lqb5YWz6ZSu5a2X5LmL5ZCO5pS+56m65qC844CC5L6L5aaC77yMCisJcyA9IHNpemVvZihzdHJ1Y3QgZmlsZSk7CisKK+S4jeimgeWcqOWwj+aLrOWPt+mHjOeahOihqOi+vuW8j+S4pOS+p+WKoOepuuagvOOAgui/meaYr+S4gOS4quWPjeS+i++8mgorCisJcyA9IHNpemVvZiggc3RydWN0IGZpbGUgKTsKKwor5b2T5aOw5piO5oyH6ZKI57G75Z6L5oiW6ICF6L+U5Zue5oyH6ZKI57G75Z6L55qE5Ye95pWw5pe277yM4oCcKuKAneeahOmmlumAieS9v+eUqOaWueW8j+aYr+S9v+S5i+mdoOi/keWPmOmHj+WQjeaIluiAheWHvQor5pWw5ZCN77yM6ICM5LiN5piv6Z2g6L+R57G75Z6L5ZCN44CC5L6L5a2Q77yaCisKKwljaGFyICpsaW51eF9iYW5uZXI7CisJdW5zaWduZWQgbG9uZyBsb25nIG1lbXBhcnNlKGNoYXIgKnB0ciwgY2hhciAqKnJldHB0cik7CisJY2hhciAqbWF0Y2hfc3RyZHVwKHN1YnN0cmluZ190ICpzKTsKKwor5Zyo5aSn5aSa5pWw5LqM5YWD5ZKM5LiJ5YWD5pON5L2c56ym5Lik5L6n5L2/55So5LiA5Liq56m65qC877yM5L6L5aaC5LiL6Z2i5omA5pyJ6L+Z5Lqb5pON5L2c56ym77yaCisKKwk9ICArICAtICA8ICA+ICAqICAvICAlICB8ICAmICBeICA8PSAgPj0gID09ICAhPSAgPyAgOgorCivkvYbmmK/kuIDlhYPmk43kvZznrKblkI7kuI3opoHliqDnqbrmoLzvvJoKKwkmICAqICArICAtICB+ICAhICBzaXplb2YgIHR5cGVvZiAgYWxpZ25vZiAgX19hdHRyaWJ1dGVfXyAgZGVmaW5lZAorCivlkI7nvIDoh6rliqDlkozoh6rlh4/kuIDlhYPmk43kvZznrKbliY3kuI3liqDnqbrmoLzvvJoKKwkrKyAgLS0KKwor5YmN57yA6Ieq5Yqg5ZKM6Ieq5YeP5LiA5YWD5pON5L2c56ym5ZCO5LiN5Yqg56m65qC877yaCisJKysgIC0tCisKK+KAnC7igJ3lkozigJwtPuKAnee7k+aehOS9k+aIkOWRmOaTjeS9nOespuWJjeWQjuS4jeWKoOepuuagvOOAggorCivkuI3opoHlnKjooYzlsL7nlZnnqbrnmb3jgILmnInkupvlj6/ku6Xoh6rliqjnvKnov5vnmoTnvJbovpHlmajkvJrlnKjmlrDooYznmoTooYzpppbliqDlhaXpgILph4/nmoTnqbrnmb3vvIznhLblkI7kvaAKK+WwseWPr+S7peebtOaOpeWcqOmCo+S4gOihjOi+k+WFpeS7o+eggeOAguS4jei/h+WBh+WmguS9oOacgOWQjuayoeacieWcqOmCo+S4gOihjOi+k+WFpeS7o+egge+8jOacieS6m+e8lui+keWZqOWwseS4jQor5Lya56e76Zmk5bey57uP5Yqg5YWl55qE56m655m977yM5bCx5YOP5L2g5pWF5oSP55WZ5LiL5LiA5Liq5Y+q5pyJ56m655m955qE6KGM44CC5YyF5ZCr6KGM5bC+56m655m955qE6KGM5bCx6L+Z5qC35LqnCivnlJ/kuobjgIIKKwor5b2TZ2l05Y+R546w6KGl5LiB5YyF5ZCr5LqG6KGM5bC+56m655m955qE5pe25YCZ5Lya6K2m5ZGK5L2g77yM5bm25LiU5Y+v5Lul5bqU5L2g55qE6KaB5rGC5Y675o6J6KGM5bC+56m655m977yb5LiN6L+HCivlpoLmnpzkvaDmmK/mraPlnKjmiZPkuIDns7vliJfooaXkuIHvvIzov5nmoLflgZrkvJrlr7zoh7TlkI7pnaLnmoTooaXkuIHlpLHotKXvvIzlm6DkuLrkvaDmlLnlj5jkuobooaXkuIHnmoTkuIrkuIvmlofjgIIKKworCisJCeesrOWbm+eroO+8muWRveWQjQorCitD5piv5LiA5Liq566A5py055qE6K+t6KiA77yM5L2g55qE5ZG95ZCN5Lmf5bqU6K+l6L+Z5qC344CC5ZKMTW9kdWxhLTLlkoxQYXNjYWznqIvluo/lkZjkuI3lkIzvvIxD56iL5bqP5ZGY5LiN5L2/CivnlKjnsbvkvLxUaGlzVmFyaWFibGVJc0FUZW1wb3JhcnlDb3VudGVy6L+Z5qC35Y2O5Li955qE5ZCN5a2X44CCQ+eoi+W6j+WRmOS8muensOmCo+S4quWPmOmHj+S4uuKAnHRtcOKAnQor77yM6L+Z5qC35YaZ6LW35p2l5Lya5pu05a655piT77yM6ICM5LiU6Iez5bCR5LiN5Lya5Luk5YW26Zq+5LqO55CG6Kej44CCCisKK+S4jei/h++8jOiZveeEtua3t+eUqOWkp+Wwj+WGmeeahOWQjeWtl+aYr+S4jeaPkOWAoeS9v+eUqOeahO+8jOS9huaYr+WFqOWxgOWPmOmHj+i/mOaYr+mcgOimgeS4gOS4quWFt+aPj+i/sOaAp+eahOWQjeWtlwor44CC56ew5LiA5Liq5YWo5bGA5Ye95pWw5Li64oCcZm9v4oCd5piv5LiA5Liq6Zq+5Lul6aW25oGV55qE6ZSZ6K+v44CCCisKK+WFqOWxgOWPmOmHj++8iOWPquacieW9k+S9oOecn+ato+mcgOimgeWug+S7rOeahOaXtuWAmeWGjeeUqOWug++8iemcgOimgeacieS4gOS4quWFt+aPj+i/sOaAp+eahOWQjeWtl++8jOWwseWDj+WFqOWxgOWHvQor5pWw44CC5aaC5p6c5L2g5pyJ5LiA5Liq5Y+v5Lul6K6h566X5rS75Yqo55So5oi35pWw6YeP55qE5Ye95pWw77yM5L2g5bqU6K+l5Y+r5a6D4oCcY291bnRfYWN0aXZlX3VzZXJzKCnigJ3miJbogIUKK+exu+S8vOeahOWQjeWtl++8jOS9oOS4jeW6lOivpeWPq+Wug+KAnGNudHVzZXIoKeKAneOAggorCivlnKjlh73mlbDlkI3kuK3ljIXlkKvlh73mlbDnsbvlnovvvIjmiYDosJPnmoTljIjniZnliKnlkb3lkI3ms5XvvInmmK/ohJHlrZDlh7rkuobpl67popjigJTigJTnvJbor5Hlmajnn6XpgZPpgqPkupvnsbvlnovogIwKK+S4lOiDveWkn+ajgOafpemCo+S6m+exu+Wei++8jOi/meagt+WBmuWPquiDveaKiueoi+W6j+WRmOW8hOeziua2guS6huOAgumavuaAquW+rui9r+aAu+aYr+WItumAoOWHuuaciemXrumimOeahOeoi+W6j+OAggorCivmnKzlnLDlj5jph4/lkI3lupTor6XnroDnn63vvIzogIzkuJTog73lpJ/ooajovr7nm7jlhbPnmoTlkKvkuYnjgILlpoLmnpzkvaDmnInkuIDkupvpmo/mnLrnmoTmlbTmlbDlnovnmoTlvqrnjq/orqHmlbDlmagKK++8jOWug+W6lOivpeiiq+ensOS4uuKAnGnigJ3jgILlj6vlroPigJxsb29wX2NvdW50ZXLigJ3lubbml6Dnm4rlpITvvIzlpoLmnpzlroPmsqHmnInooqvor6/op6PnmoTlj6/og73nmoTor53jgILnsbvkvLwKK+eahO+8jOKAnHRtcOKAneWPr+S7peeUqOadpeensOWRvOS7u+aEj+exu+Wei+eahOS4tOaXtuWPmOmHj+OAggorCivlpoLmnpzkvaDmgJXmt7fmt4bkuobkvaDnmoTmnKzlnLDlj5jph4/lkI3vvIzkvaDlsLHpgYfliLDlj6bkuIDkuKrpl67popjkuobvvIzlj6vlgZrlh73mlbDlop7plb/ojbflsJTokpnlpLHooaHnu7zlkIjnl4cKK+OAguivt+eci+esrOWFreeroO+8iOWHveaVsO+8ieOAggorCisKKwkJ56ys5LqU56ug77yaVHlwZWRlZgorCivkuI3opoHkvb/nlKjnsbvkvLzigJx2cHNfdOKAneS5i+exu+eahOS4nOilv+OAggorCivlr7nnu5PmnoTkvZPlkozmjIfpkojkvb/nlKh0eXBlZGVm5piv5LiA5Liq6ZSZ6K+v44CC5b2T5L2g5Zyo5Luj56CB6YeM55yL5Yiw77yaCisKKwl2cHNfdCBhOworCivov5nku6Pooajku4DkuYjmhI/mgJ3lkaLvvJ8KKwor55u45Y+N77yM5aaC5p6c5piv6L+Z5qC3CisKKwlzdHJ1Y3QgdmlydHVhbF9jb250YWluZXIgKmE7CisKK+S9oOWwseefpemBk+KAnGHigJ3mmK/ku4DkuYjkuobjgIIKKwor5b6I5aSa5Lq66K6k5Li6dHlwZWRlZuKAnOiDveaPkOmrmOWPr+ivu+aAp+KAneOAguWunumZheS4jeaYr+i/meagt+eahOOAguWug+S7rOWPquWcqOS4i+WIl+aDheWGteS4i+acieeUqO+8mgorCisgKGEpIOWujOWFqOS4jemAj+aYjueahOWvueixoe+8iOi/meenjeaDheWGteS4i+imgeS4u+WKqOS9v+eUqHR5cGVkZWbmnaXpmpDol4/ov5nkuKrlr7nosaHlrp7pmYXkuIrmmK/ku4DkuYjvvInjgIIKKworICAgICDkvovlpoLvvJrigJxwdGVfdOKAneetieS4jemAj+aYjuWvueixoe+8jOS9oOWPquiDveeUqOWQiOmAgueahOiuv+mXruWHveaVsOadpeiuv+mXruWug+S7rOOAggorCisgICAgIOazqOaEj++8geS4jemAj+aYjuaAp+WSjOKAnOiuv+mXruWHveaVsOKAneacrOi6q+aYr+S4jeWlveeahOOAguaIkeS7rOS9v+eUqHB0ZV90562J57G75Z6L55qE5Y6f5Zug5Zyo5LqO55yf55qE5pivCisgICAgIOWujOWFqOayoeacieS7u+S9leWFseeUqOeahOWPr+iuv+mXruS/oeaBr+OAggorCisgKGIpIOa4healmueahOaVtOaVsOexu+Wei++8jOWmguatpO+8jOi/meWxguaKveixoeWwseWPr+S7peW4ruWKqea2iOmZpOWIsOW6leaYr+KAnGludOKAnei/mOaYr+KAnGxvbmfigJ3nmoTmt7fmt4bjgIIKKworICAgICB1OC91MTYvdTMy5piv5a6M5YWo5rKh5pyJ6Zeu6aKY55qEdHlwZWRlZu+8jOS4jei/h+Wug+S7rOabtOespuWQiOexu+WIqyhkKeiAjOS4jeaYr+i/memHjOOAggorCisgICAgIOWGjeasoeazqOaEj++8geimgei/meagt+WBmu+8jOW/hemhu+S6i+WHuuacieWboOOAguWmguaenOafkOS4quWPmOmHj+aYr+KAnHVuc2lnbmVkIGxvbmfigJzvvIzpgqPkuYjmsqHmnInlv4XopoEKKworCXR5cGVkZWYgdW5zaWduZWQgbG9uZyBteWZsYWdzX3Q7CisKKyAgICAg5LiN6L+H5aaC5p6c5pyJ5LiA5Liq5piO56Gu55qE5Y6f5Zug77yM5q+U5aaC5a6D5Zyo5p+Q56eN5oOF5Ya15LiL5Y+v6IO95Lya5piv5LiA5Liq4oCcdW5zaWduZWQgaW504oCd6ICM5ZyoCisgICAgIOWFtuS7luaDheWGteS4i+WPr+iDveS4uuKAnHVuc2lnbmVkIGxvbmfigJ3vvIzpgqPkuYjlsLHkuI3opoHnirnosavvvIzor7fliqHlv4Xkvb/nlKh0eXBlZGVm44CCCisKKyAoYykg5b2T5L2g5L2/55Soc3BhcnNl5oyJ5a2X6Z2i55qE5Yib5bu65LiA5Liq5paw57G75Z6L5p2l5YGa57G75Z6L5qOA5p+l55qE5pe25YCZ44CCCisKKyAoZCkg5ZKM5qCH5YeGQzk557G75Z6L55u45ZCM55qE57G75Z6L77yM5Zyo5p+Q5Lqb5L6L5aSW55qE5oOF5Ya15LiL44CCCisKKyAgICAg6Jm954S26K6p55y8552b5ZKM6ISR562L5p2l6YCC5bqU5paw55qE5qCH5YeG57G75Z6L5q+U5aaC4oCcdWludDMyX3TigJ3kuI3pnIDopoHoirHlvojlpJrml7bpl7TvvIzlj6/mmK/mnInkupsKKyAgICAg5Lq65LuN54S25ouS57ud5L2/55So5a6D5Lus44CCCisKKyAgICAg5Zug5q2k77yMTGludXjnibnmnInnmoTnrYnlkIzkuo7moIflh4bnsbvlnovnmoTigJx1OC91MTYvdTMyL3U2NOKAneexu+Wei+WSjOWug+S7rOeahOacieespuWPt+exu+Wei+aYr+iiqworICAgICDlhYHorrjnmoTigJTigJTlsL3nrqHlnKjkvaDoh6rlt7HnmoTmlrDku6PnoIHkuK3vvIzlroPku6zkuI3mmK/lvLrliLbopoHmsYLopoHkvb/nlKjnmoTjgIIKKworICAgICDlvZPnvJbovpHlt7Lnu4/kvb/nlKjkuobmn5DkuKrnsbvlnovpm4bnmoTlt7LmnInku6PnoIHml7bvvIzkvaDlupTor6XpgbXlvqrpgqPkupvku6PnoIHkuK3lt7Lnu4/lgZrlh7rnmoTpgInmi6njgIIKKworIChlKSDlj6/ku6XlnKjnlKjmiLfnqbrpl7Tlronlhajkvb/nlKjnmoTnsbvlnovjgIIKKworICAgICDlnKjmn5DkupvnlKjmiLfnqbrpl7Tlj6/op4HnmoTnu5PmnoTkvZPph4zvvIzmiJHku6zkuI3og73opoHmsYJDOTnnsbvlnovogIzkuJTkuI3og73nlKjkuIrpnaLmj5DliLDnmoTigJx1MzLigJ0KKyAgICAg57G75Z6L44CC5Zug5q2k77yM5oiR5Lus5Zyo5LiO55So5oi356m66Ze05YWx5Lqr55qE5omA5pyJ57uT5p6E5L2T5Lit5L2/55SoX191MzLlkoznsbvkvLznmoTnsbvlnovjgIIKKwor5Y+v6IO96L+Y5pyJ5YW25LuW55qE5oOF5Ya177yM5LiN6L+H5Z+65pys55qE6KeE5YiZ5piv5rC46L+c5LiN6KaB5L2/55SodHlwZWRlZu+8jOmZpOmdnuS9oOWPr+S7peaYjuehrueahOW6lOeUqOS4igor6L+w5p+Q5Liq6KeE5YiZ5Lit55qE5LiA5Liq44CCCisKK+aAu+eahOadpeivtO+8jOWmguaenOS4gOS4quaMh+mSiOaIluiAheS4gOS4que7k+aehOS9k+mHjOeahOWFg+e0oOWPr+S7peWQiOeQhueahOiiq+ebtOaOpeiuv+mXruWIsO+8jOmCo+S5iOWug+S7rOWwseS4jQor5bqU6K+l5piv5LiA5LiqdHlwZWRlZuOAggorCisKKwkJ56ys5YWt56ug77ya5Ye95pWwCisKK+WHveaVsOW6lOivpeeugOefreiAjOa8guS6ru+8jOW5tuS4lOWPquWujOaIkOS4gOS7tuS6i+aDheOAguWHveaVsOW6lOivpeWPr+S7peS4gOWxj+aIluiAheS4pOWxj+aYvuekuuWujO+8iOaIkeS7rOmDveefpQor6YGTSVNPL0FOU0nlsY/luZXlpKflsI/mmK84MHgyNO+8ie+8jOWPquWBmuS4gOS7tuS6i+aDhe+8jOiAjOS4lOaKiuWug+WBmuWlveOAggorCivkuIDkuKrlh73mlbDnmoTmnIDlpKfplb/luqbmmK/lkozor6Xlh73mlbDnmoTlpI3mnYLluqblkoznvKnov5vnuqfmlbDmiJDlj43mr5TnmoTjgILmiYDku6XvvIzlpoLmnpzkvaDmnInkuIDkuKrnkIborrrkuIoKK+W+iOeugOWNleeahOWPquacieS4gOS4quW+iOmVv++8iOS9huaYr+eugOWNle+8ieeahGNhc2Xor63lj6XnmoTlh73mlbDvvIzogIzkuJTkvaDpnIDopoHlnKjmr4/kuKpjYXNl6YeM5YGa5b6I5aSa5b6ICivlsI/nmoTkuovmg4XvvIzov5nmoLfnmoTlh73mlbDlsL3nrqHlvojplb/vvIzkvYbkuZ/mmK/lj6/ku6XnmoTjgIIKKwor5LiN6L+H77yM5aaC5p6c5L2g5pyJ5LiA5Liq5aSN5p2C55qE5Ye95pWw77yM6ICM5LiU5L2g5oCA55aR5LiA5Liq5aSp5YiG5LiN5piv5b6I6auY55qE6auY5Lit5LiA5bm057qn5a2m55Sf5Y+v6IO955Sa6IezCivmkJ7kuI3muIXmpZrov5nkuKrlh73mlbDnmoTnm67nmoTvvIzkvaDlupTor6XkuKXmoLznmoTpgbXlrojliY3pnaLmj5DliLDnmoTplb/luqbpmZDliLbjgILkvb/nlKjovoXliqnlh73mlbDvvIzlubbkuLrkuYsKK+WPluS4quWFt+aPj+i/sOaAp+eahOWQjeWtl++8iOWmguaenOS9oOinieW+l+Wug+S7rOeahOaAp+iDveW+iOmHjeimgeeahOivne+8jOWPr+S7peiuqee8luivkeWZqOWGheiBlOWug+S7rO+8jOi/meagt+eahAor5pWI5p6c5b6A5b6A5Lya5q+U5L2g5YaZ5LiA5Liq5aSN5p2C5Ye95pWw55qE5pWI5p6c6KaB5aW944CC77yJCisKK+WHveaVsOeahOWPpuWkluS4gOS4quihoemHj+agh+WHhuaYr+acrOWcsOWPmOmHj+eahOaVsOmHj+OAguatpOaVsOmHj+S4jeW6lOi2hei/hzXvvI0xMOS4qu+8jOWQpuWImeS9oOeahOWHveaVsOWwseaciQor6Zeu6aKY5LqG44CC6YeN5paw6ICD6JmR5LiA5LiL5L2g55qE5Ye95pWw77yM5oqK5a6D5YiG5ouG5oiQ5pu05bCP55qE5Ye95pWw44CC5Lq655qE5aSn6ISR5LiA6Iis5Y+v5Lul6L275p2+55qE5ZCM5pe26LefCivouKo35Liq5LiN5ZCM55qE5LqL54mp77yM5aaC5p6c5YaN5aKe5aSa55qE6K+d77yM5bCx5Lya57OK5raC5LqG44CC5Y2z5L6/5L2g6IGq6aKW6L+H5Lq677yM5L2g5Lmf5Y+v6IO95Lya6K6w5LiN5riF5L2gMgor5Liq5pif5pyf5YmN5YGa6L+H55qE5LqL5oOF44CCCisKK+WcqOa6kOaWh+S7tumHjO+8jOS9v+eUqOepuuihjOmalOW8gOS4jeWQjOeahOWHveaVsOOAguWmguaenOivpeWHveaVsOmcgOimgeiiq+WvvOWHuu+8jOWug+eahEVYUE9SVCrlro/lupTor6XntKfotLQKK+WcqOWug+eahOe7k+adn+Wkp+aLrOWPt+S5i+S4i+OAguavlOWmgu+8mgorCitpbnQgc3lzdGVtX2lzX3VwKHZvaWQpCit7CisJcmV0dXJuIHN5c3RlbV9zdGF0ZSA9PSBTWVNURU1fUlVOTklORzsKK30KK0VYUE9SVF9TWU1CT0woc3lzdGVtX2lzX3VwKTsKKwor5Zyo5Ye95pWw5Y6f5Z6L5Lit77yM5YyF5ZCr5Ye95pWw5ZCN5ZKM5a6D5Lus55qE5pWw5o2u57G75Z6L44CC6Jm954S2Q+ivreiogOmHjOayoeaciei/meagt+eahOimgeaxgu+8jOWcqExpbnV46YeM6L+ZCivmmK/mj5DlgKHnmoTlgZrms5XvvIzlm6DkuLrov5nmoLflj6/ku6XlvojnroDljZXnmoTnu5nor7vogIXmj5Dkvpvmm7TlpJrnmoTmnInku7flgLznmoTkv6Hmga/jgIIKKworCisJCeesrOS4g+eroO+8mumbhuS4reeahOWHveaVsOmAgOWHuumAlOW+hAorCivomb3nhLbooqvmn5Dkupvkurrlo7Dnp7Dlt7Lnu4/ov4fml7bvvIzkvYbmmK9nb3Rv6K+t5Y+l55qE562J5Lu354mp6L+Y5piv57uP5bi46KKr57yW6K+R5Zmo5omA5L2/55So77yM5YW35L2T5b2i5byP5pivCivml6DmnaHku7bot7PovazmjIfku6TjgIIKKwor5b2T5LiA5Liq5Ye95pWw5LuO5aSa5Liq5L2N572u6YCA5Ye65bm25LiU6ZyA6KaB5YGa5LiA5Lqb6YCa55So55qE5riF55CG5bel5L2c55qE5pe25YCZ77yMZ290b+eahOWlveWkhOWwseaYvueOsOWHuuadpQor5LqG44CCCisKK+eQhueUseaYr++8mgorCistIOaXoOadoeS7tuivreWPpeWuueaYk+eQhuino+WSjOi3n+i4qgorLSDltYzlpZfnqIvluqblh4/lsI8KKy0g5Y+v5Lul6YG/5YWN55Sx5LqO5L+u5pS55pe25b+Y6K6w5pu05paw5p+Q5Liq5Y2V54us55qE6YCA5Ye654K56ICM5a+86Ie055qE6ZSZ6K+vCistIOWHj+i9u+S6hue8luivkeWZqOeahOW3peS9nO+8jOaXoOmcgOWIoOmZpOWGl+S9meS7o+eggTspCisKK2ludCBmdW4oaW50IGEpCit7CisJaW50IHJlc3VsdCA9IDA7CisJY2hhciAqYnVmZmVyID0ga21hbGxvYyhTSVpFKTsKKworCWlmIChidWZmZXIgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlpZiAoY29uZGl0aW9uMSkgeworCQl3aGlsZSAobG9vcDEpIHsKKwkJCS4uLgorCQl9CisJCXJlc3VsdCA9IDE7CisJCWdvdG8gb3V0OworCX0KKwkuLi4KK291dDoKKwlrZnJlZShidWZmZXIpOworCXJldHVybiByZXN1bHQ7Cit9CisKKwkJ56ys5YWr56ug77ya5rOo6YeKCisKK+azqOmHiuaYr+WlveeahO+8jOS4jei/h+aciei/h+W6puazqOmHiueahOWNsemZqeOAguawuOi/nOS4jeimgeWcqOazqOmHiumHjOino+mHiuS9oOeahOS7o+eggeaYr+WmguS9lei/kOS9nOeahO+8muabtOWlvQor55qE5YGa5rOV5piv6K6p5Yir5Lq65LiA55yL5L2g55qE5Luj56CB5bCx5Y+v5Lul5piO55m977yM6Kej6YeK5YaZ55qE5b6I5beu55qE5Luj56CB5piv5rWq6LS55pe26Ze044CCCisKK+S4gOiIrOeahO+8jOS9oOaDs+imgeS9oOeahOazqOmHiuWRiuivieWIq+S6uuS9oOeahOS7o+eggeWBmuS6huS7gOS5iO+8jOiAjOS4jeaYr+aAjuS5iOWBmueahOOAguS5n+ivt+S9oOS4jeimgeaKiuazqOmHigor5pS+5Zyo5LiA5Liq5Ye95pWw5L2T5YaF6YOo77ya5aaC5p6c5Ye95pWw5aSN5p2C5Yiw5L2g6ZyA6KaB54us56uL55qE5rOo6YeK5YW25Lit55qE5LiA6YOo5YiG77yM5L2g5b6I5Y+v6IO96ZyA6KaB5Zue5YiwCivnrKzlha3nq6DnnIvkuIDnnIvjgILkvaDlj6/ku6XlgZrkuIDkupvlsI/ms6jph4rmnaXms6jmmI7miJborablkYrmn5DkupvlvojogarmmI7vvIjmiJbogIXmp73ns5XvvInnmoTlgZrms5XvvIzkvYbkuI3opoEKK+WKoOWkquWkmuOAguS9oOW6lOivpeWBmueahO+8jOaYr+aKiuazqOmHiuaUvuWcqOWHveaVsOeahOWktOmDqO+8jOWRiuivieS6uuS7rOWug+WBmuS6huS7gOS5iO+8jOS5n+WPr+S7peWKoOS4iuWug+WBmui/mQor5Lqb5LqL5oOF55qE5Y6f5Zug44CCCisKK+W9k+azqOmHiuWGheaguEFQSeWHveaVsOaXtu+8jOivt+S9v+eUqGtlcm5lbC1kb2PmoLzlvI/jgILor7fnnIsKK0RvY3VtZW50YXRpb24va2VybmVsLWRvYy1uYW5vLUhPV1RPLnR4dOWSjHNjcmlwdHMva2VybmVsLWRvY+S7peiOt+W+l+ivpue7huS/oeaBr+OAggorCitMaW51eOeahOazqOmHiumjjuagvOaYr0M4OeKAnC8qIC4uLiAqL+KAnemjjuagvOOAguS4jeimgeS9v+eUqEM5OemjjuagvOKAnC8vIC4uLuKAneazqOmHiuOAggorCivplb/vvIjlpJrooYzvvInnmoTpppbpgInms6jph4rpo47moLzmmK/vvJoKKworCS8qCisJICogVGhpcyBpcyB0aGUgcHJlZmVycmVkIHN0eWxlIGZvciBtdWx0aS1saW5lCisJICogY29tbWVudHMgaW4gdGhlIExpbnV4IGtlcm5lbCBzb3VyY2UgY29kZS4KKwkgKiBQbGVhc2UgdXNlIGl0IGNvbnNpc3RlbnRseS4KKwkgKgorCSAqIERlc2NyaXB0aW9uOiAgQSBjb2x1bW4gb2YgYXN0ZXJpc2tzIG9uIHRoZSBsZWZ0IHNpZGUsCisJICogd2l0aCBiZWdpbm5pbmcgYW5kIGVuZGluZyBhbG1vc3QtYmxhbmsgbGluZXMuCisJICovCisKK+azqOmHiuaVsOaNruS5n+aYr+W+iOmHjeimgeeahO+8jOS4jeeuoeaYr+WfuuacrOexu+Wei+i/mOaYr+ihjeeUn+exu+Wei+OAguS4uuS6huaWueS+v+WunueOsOi/meS4gOeCue+8jOavj+S4gOihjOW6lOWPqgor5aOw5piO5LiA5Liq5pWw5o2u77yI5LiN6KaB5L2/55So6YCX5Y+35p2l5LiA5qyh5aOw5piO5aSa5Liq5pWw5o2u77yJ44CC6L+Z5qC35L2g5bCx5pyJ56m66Ze05p2l5Li65q+P5Liq5pWw5o2u5YaZ5LiA5q61CivlsI/ms6jph4rmnaXop6Pph4rlroPku6znmoTnlKjpgJTkuobjgIIKKworCisJCeesrOS5neeroO+8muS9oOW3sue7j+aKiuS6i+aDheW8hOezn+S6hgorCivov5nmsqHku4DkuYjvvIzmiJHku6zpg73mmK/ov5nmoLfjgILlj6/og73kvaDnmoTkvb/nlKjkuoblvojplb/ml7bpl7RVbml455qE5pyL5Y+L5bey57uP5ZGK6K+J5L2g4oCcR05VIGVtYWNz4oCd6IO9Civoh6rliqjluK7kvaDmoLzlvI/ljJZD5rqQ5Luj56CB77yM6ICM5LiU5L2g5Lmf5rOo5oSP5Yiw5LqG77yM56Gu5a6e5piv6L+Z5qC377yM5LiN6L+H5a6D5omA5L2/55So55qE6buY6K6k5YC85ZKM5oiR5LusCivmg7PopoHnmoTnm7jljrvnlJrov5zvvIjlrp7pmYXkuIrvvIznlJroh7Pmr5Tpmo/mnLrmiZPnmoTov5jopoHlt67igJTigJTml6DmlbDkuKrnjLTlrZDlnKhHTlUgZW1hY3Pph4zmiZPlrZfmsLjov5zkuI0KK+S8muWIm+mAoOWHuuS4gOS4quWlveeoi+W6j++8ie+8iOivkeazqO+8muivt+WPguiAg0luZmluaXRlIE1vbmtleSBUaGVvcmVt77yJCisKK+aJgOS7peS9oOimgeS5iOaUvuW8g0dOVSBlbWFjc++8jOimgeS5iOaUueWPmOWug+iuqeWug+S9v+eUqOabtOWQiOeQhueahOiuvuWumuOAguimgemHh+eUqOWQjuS4gOS4quaWueahiO+8jOS9oOWPrwor5Lul5oqK5LiL6Z2i6L+Z5q6157KY6LS05Yiw5L2g55qELmVtYWNz5paH5Lu26YeM44CCCisKKyhkZWZ1biBsaW51eC1jLW1vZGUgKCkKKyAgIkMgbW9kZSB3aXRoIGFkanVzdGVkIGRlZmF1bHRzIGZvciB1c2Ugd2l0aCB0aGUgTGludXgga2VybmVsLiIKKyAgKGludGVyYWN0aXZlKQorICAoYy1tb2RlKQorICAoYy1zZXQtc3R5bGUgIksmUiIpCisgIChzZXRxIHRhYi13aWR0aCA4KQorICAoc2V0cSBpbmRlbnQtdGFicy1tb2RlIHQpCisgIChzZXRxIGMtYmFzaWMtb2Zmc2V0IDgpKQorCivov5nmoLflsLHlrprkuYnkuoZNLXggbGludXgtYy1tb2Rl5ZG95Luk44CC5b2T5L2gaGFja+S4gOS4quaooeWdl+eahOaXtuWAme+8jOWmguaenOS9oOaKiuWtl+espuS4sgorLSotIGxpbnV4LWMgLSot5pS+5Zyo5aS05Lik6KGM55qE5p+Q5Liq5L2N572u77yM6L+Z5Liq5qih5byP5bCG5Lya6KKr6Ieq5Yqo6LCD55So44CC5aaC5p6c5L2g5biM5pyb5Zyo5L2g5L+u5pS5CisvdXNyL3NyYy9saW51eOmHjOeahOaWh+S7tuaXtumtlOacr+iIrOiHquWKqOaJk+W8gGxpbnV4LWMtbW9kZeeahOivne+8jOS9oOS5n+WPr+iDvemcgOimgea3u+WKoAorCisoc2V0cSBhdXRvLW1vZGUtYWxpc3QgKGNvbnMgJygiL3Vzci9zcmMvbGludXguKi8uKlxcLltjaF0kIiAuIGxpbnV4LWMtbW9kZSkKKwkJCWF1dG8tbW9kZS1hbGlzdCkpCisKK+WIsOS9oOeahC5lbWFjc+aWh+S7tumHjOOAggorCivkuI3ov4flsLHnrpfkvaDlsJ3or5XorqllbWFjc+ato+ehrueahOagvOW8j+WMluS7o+eggeWksei0peS6hu+8jOS5n+W5tuS4jeaEj+WRs+edgOS9oOWkseWOu+S6huS4gOWIh++8mui/mOWPr+S7peeUqOKAnAoraW5kZW504oCd44CCCisKK+S4jei/h++8jEdOVSBpbmRlbnTkuZ/mnInlkoxHTlUgZW1hY3PkuIDmoLfmnInpl67popjnmoTorr7lrprvvIzmiYDku6XkvaDpnIDopoHnu5nlroPkuIDkupvlkb3ku6TpgInpobnjgILkuI0KK+i/h++8jOi/mei/mOS4jeeul+Wkquezn+ezle+8jOWboOS4uuWwseeul+aYr0dOVSBpbmRlbnTnmoTkvZzogIXkuZ/orqTlkIxLJlLnmoTmnYPlqIHmgKfvvIhHTlXnmoTkurrlubbkuI3mmK/lnY8KK+S6uu+8jOS7luS7rOWPquaYr+WcqOi/meS4qumXrumimOS4iuiiq+S4pemHjeeahOivr+WvvOS6hu+8ie+8jOaJgOS7peS9oOWPquimgee7mWluZGVudOaMh+WumumAiemhueKAnC1rciAtaTjigJ0KK++8iOS7o+ihqOKAnEsmUu+8jDjkuKrlrZfnrKbnvKnov5vigJ3vvInvvIzmiJbogIXkvb/nlKjigJxzY3JpcHRzL0xpbmRlbnTigJ3vvIzov5nmoLflsLHlj6/ku6Xku6XmnIDml7bpq6bnmoTmlrnlvI8KK+e8qei/m+a6kOS7o+eggeOAggorCivigJxpbmRlbnTigJ3mnInlvojlpJrpgInpobnvvIznibnliKvmmK/ph43mlrDmoLzlvI/ljJbms6jph4rnmoTml7blgJnvvIzkvaDlj6/og73pnIDopoHnnIvkuIDkuIvlroPnmoTmiYvlhozpobXjgILkuI3ov4cKK+iusOS9j++8muKAnGluZGVudOKAneS4jeiDveS/ruato+Wdj+eahOe8lueoi+S5oOaDr+OAggorCisKKwkJ56ys5Y2B56ug77yaS2NvbmZpZ+mFjee9ruaWh+S7tgorCivlr7nkuo7pgY3luIPmupDnoIHmoJHnmoTmiYDmnIlLY29uZmlnKumFjee9ruaWh+S7tuadpeivtO+8jOWug+S7rOe8qei/m+aWueW8j+S4jkPku6PnoIHnm7jmr5TmnInmiYDkuI3lkIzjgILntKfmjKgKK+WcqOKAnGNvbmZpZ+KAneWumuS5ieS4i+mdoueahOihjOe8qei/m+S4gOS4quWItuihqOespu+8jOW4ruWKqeS/oeaBr+WImeWGjeWkmue8qei/mzLkuKrnqbrmoLzjgILmr5TlpoLvvJoKKworY29uZmlnIEFVRElUCisJYm9vbCAiQXVkaXRpbmcgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIE5FVAorCWhlbHAKKwkgIEVuYWJsZSBhdWRpdGluZyBpbmZyYXN0cnVjdHVyZSB0aGF0IGNhbiBiZSB1c2VkIHdpdGggYW5vdGhlcgorCSAga2VybmVsIHN1YnN5c3RlbSwgc3VjaCBhcyBTRUxpbnV4ICh3aGljaCByZXF1aXJlcyB0aGlzIGZvcgorCSAgbG9nZ2luZyBvZiBhdmMgbWVzc2FnZXMgb3V0cHV0KS4gIERvZXMgbm90IGRvIHN5c3RlbS1jYWxsCisJICBhdWRpdGluZyB3aXRob3V0IENPTkZJR19BVURJVFNZU0NBTEwuCisKK+iAjOmCo+S6m+WNsemZqeeahOWKn+iDve+8iOavlOWmguafkOS6m+aWh+S7tuezu+e7n+eahOWGmeaUr+aMge+8ieW6lOivpeWcqOWug+S7rOeahOaPkOekuuWtl+espuS4sumHjOaYvuiRl+eahOWjsOaYjui/mQor5LiA54K577yaCisKK2NvbmZpZyBBREZTX0ZTX1JXCisJYm9vbCAiQURGUyB3cml0ZSBzdXBwb3J0IChEQU5HRVJPVVMpIgorCWRlcGVuZHMgb24gQURGU19GUworCS4uLgorCivopoHmn6XnnIvphY3nva7mlofku7bnmoTlrozmlbTmlofmoaPvvIzor7fnnItEb2N1bWVudGF0aW9uL2tidWlsZC9rY29uZmlnLWxhbmd1YWdlLnR4dOOAggorCisKKwkJ56ys5Y2B5LiA56ug77ya5pWw5o2u57uT5p6ECisKK+WmguaenOS4gOS4quaVsOaNrue7k+aehO+8jOWcqOWIm+W7uuWSjOmUgOavgeWug+eahOWNlee6v+aJp+ihjOeOr+Wig+S5i+WkluWPr+inge+8jOmCo+S5iOWug+W/hemhu+imgeacieS4gOS4quW8leeUqOiuoQor5pWw5Zmo44CC5YaF5qC46YeM5rKh5pyJ5Z6D5Zy+5pS26ZuG77yI5bm25LiU5YaF5qC45LmL5aSW55qE5Z6D5Zy+5pS26ZuG5oWi5LiU5pWI546H5L2O5LiL77yJ77yM6L+Z5oSP5ZGz552A5L2g57ud5a+56ZyACivopoHorrDlvZXkvaDlr7nov5nnp43mlbDmja7nu5PmnoTnmoTkvb/nlKjmg4XlhrXjgIIKKwor5byV55So6K6h5pWw5oSP5ZGz552A5L2g6IO95aSf6YG/5YWN5LiK6ZSB77yM5bm25LiU5YWB6K645aSa5Liq55So5oi35bm26KGM6K6/6Zeu6L+Z5Liq5pWw5o2u57uT5p6E4oCU4oCU6ICM5LiN6ZyA6KaB5ouF5b+DCivov5nkuKrmlbDmja7nu5PmnoTku4Xku4Xlm6DkuLrmmoLml7bkuI3ooqvkvb/nlKjlsLHmtojlpLHkuobvvIzpgqPkupvnlKjmiLflj6/og73kuI3ov4fmmK/msonnnaHkuobkuIDpmLXmiJbogIXlgZrkuobkuIAKK+S6m+WFtuS7luS6i+aDheiAjOW3suOAggorCivms6jmhI/kuIrplIHkuI3og73lj5bku6PlvJXnlKjorqHmlbDjgILkuIrplIHmmK/kuLrkuobkv53mjIHmlbDmja7nu5PmnoTnmoTkuIDoh7TmgKfvvIzogIzlvJXnlKjorqHmlbDmmK/kuIDkuKrlhoXlrZjnrqEKK+eQhuaKgOW3p+OAgumAmuW4uOS6jOiAhemDvemcgOimge+8jOS4jeimgeaKiuS4pOS4quaQnua3t+S6huOAggorCivlvojlpJrmlbDmja7nu5PmnoTlrp7pmYXkuIrmnIky57qn5byV55So6K6h5pWw77yM5a6D5Lus6YCa5bi45pyJ5LiN5ZCM4oCc57G74oCd55qE55So5oi344CC5a2Q57G76K6h5pWw5Zmo57uf6K6h5a2Q57G755SoCivmiLfnmoTmlbDph4/vvIzmr4/lvZPlrZDnsbvorqHmlbDlmajlh4/oh7Ppm7bml7bvvIzlhajlsYDorqHmlbDlmajlh4/kuIDjgIIKKwor6L+Z56eN4oCc5aSa57qn5byV55So6K6h5pWw4oCd55qE5L6L5a2Q5Y+v5Lul5Zyo5YaF5a2Y566h55CG77yI4oCcc3RydWN0IG1tX3N0cnVjdOKAne+8mm1tX3VzZXJz5ZKMbW1fY291bnTvvIkKK+WSjOaWh+S7tuezu+e7n++8iOKAnHN0cnVjdCBzdXBlcl9ibG9ja+KAne+8mnNfY291bnTlkoxzX2FjdGl2Ze+8ieS4reaJvuWIsOOAggorCivorrDkvY/vvJrlpoLmnpzlj6bkuIDkuKrmiafooYznur/ntKLlj6/ku6Xmib7liLDkvaDnmoTmlbDmja7nu5PmnoTvvIzkvYbmmK/ov5nkuKrmlbDmja7nu5PmnoTmsqHmnInlvJXnlKjorqHmlbDlmajvvIzov5kKK+mHjOWHoOS5juiCr+WumuaYr+S4gOS4qmJ1Z+OAggorCisKKwkJ56ys5Y2B5LqM56ug77ya5a6P77yM5p6a5Li+5ZKMUlRMCisKK+eUqOS6juWumuS5ieW4uOmHj+eahOWuj+eahOWQjeWtl+WPiuaemuS4vumHjOeahOagh+etvumcgOimgeWkp+WGmeOAggorCisjZGVmaW5lIENPTlNUQU5UIDB4MTIzNDUKKwor5Zyo5a6a5LmJ5Yeg5Liq55u45YWz55qE5bi46YeP5pe277yM5pyA5aW955So5p6a5Li+44CCCisKK+Wuj+eahOWQjeWtl+ivt+eUqOWkp+WGmeWtl+avje+8jOS4jei/h+W9ouWmguWHveaVsOeahOWuj+eahOWQjeWtl+WPr+S7peeUqOWwj+WGmeWtl+avjeOAggorCivkuIDoiKznmoTvvIzlpoLmnpzog73lhpnmiJDlhoXogZTlh73mlbDlsLHkuI3opoHlhpnmiJDlg4/lh73mlbDnmoTlro/jgIIKKwor5ZCr5pyJ5aSa5Liq6K+t5Y+l55qE5a6P5bqU6K+l6KKr5YyF5ZCr5Zyo5LiA5LiqZG8td2hpbGXku6PnoIHlnZfph4zvvJoKKworI2RlZmluZSBtYWNyb2Z1bihhLCBiLCBjKSAJCQlcCisJZG8gewkJCQkJXAorCQlpZiAoYSA9PSA1KQkJCVwKKwkJCWRvX3RoaXMoYiwgYyk7CQlcCisJfSB3aGlsZSAoMCkKKwor5L2/55So5a6P55qE5pe25YCZ5bqU6YG/5YWN55qE5LqL5oOF77yaCisKKzEpIOW9seWTjeaOp+WItua1geeoi+eahOWuj++8mgorCisjZGVmaW5lIEZPTyh4KQkJCQkJXAorCWRvIHsJCQkJCVwKKwkJaWYgKGJsYWgoeCkgPCAwKQkJXAorCQkJcmV0dXJuIC1FQlVHR0VSRUQ7CVwKKwl9IHdoaWxlKDApCisKK+mdnuW4uOS4jeWlveOAguWug+eci+i1t+adpeWDj+S4gOS4quWHveaVsO+8jOS4jei/h+WNtOiDveWvvOiHtOKAnOiwg+eUqOKAneWug+eahOWHveaVsOmAgOWHuu+8m+S4jeimgeaJk+S5seivu+iAheWkp+iEkemHjAor55qE6K+t5rOV5YiG5p6Q5Zmo44CCCisKKzIpIOS+nei1luS6juS4gOS4quWbuuWumuWQjeWtl+eahOacrOWcsOWPmOmHj+eahOWuj++8mgorCisjZGVmaW5lIEZPTyh2YWwpIGJhcihpbmRleCwgdmFsKQorCivlj6/og73nnIvotbfmnaXlg4/mmK/kuKrkuI3plJnnmoTkuJzopb/vvIzkuI3ov4flroPpnZ7luLjlrrnmmJPmioror7vku6PnoIHnmoTkurrmkJ7ns4rmtoLvvIzogIzkuJTlrrnmmJPlr7zoh7TnnIvotbfmnaUKK+S4jeebuOWFs+eahOaUueWKqOW4puadpemUmeivr+OAggorCiszKSDkvZzkuLrlt6blgLznmoTluKblj4LmlbDnmoTlro/vvJogRk9PKHgpID0gee+8m+WmguaenOacieS6uuaKikZPT+WPmOaIkOS4gOS4quWGheiBlOWHveaVsOeahOivne+8jOi/meenjeeUqAor5rOV5bCx5Lya5Ye66ZSZ5LqG44CCCisKKzQpIOW/mOiusOS6huS8mOWFiOe6p++8muS9v+eUqOihqOi+vuW8j+WumuS5ieW4uOmHj+eahOWuj+W/hemhu+WwhuihqOi+vuW8j+e9ruS6juS4gOWvueWwj+aLrOWPt+S5i+WGheOAguW4puWPguaVsOeahAor5a6P5Lmf6KaB5rOo5oSP5q2k57G76Zeu6aKY44CCCisKKyNkZWZpbmUgQ09OU1RBTlQgMHg0MDAwCisjZGVmaW5lIENPTlNURVhQIChDT05TVEFOVCB8IDMpCisKK2NwcOaJi+WGjOWvueWuj+eahOiusuino+W+iOivpue7huOAgkdjYyBpbnRlcm5hbHPmiYvlhozkuZ/or6bnu4borrLop6PkuoZSVEzvvIjor5Hms6jvvJpyZWdpc3RlcgordHJhbnNmZXIgbGFuZ3VhZ2XvvInvvIzlhoXmoLjph4znmoTmsYfnvJbor63oqIDnu4/luLjnlKjliLDlroPjgIIKKworCisJCeesrOWNgeS4ieeroO+8muaJk+WNsOWGheaguOa2iOaBrworCivlhoXmoLjlvIDlj5HogIXlupTor6XmmK/lj5fov4foia/lpb3mlZnogrLnmoTjgILor7fkuIDlrprms6jmhI/lhoXmoLjkv6Hmga/nmoTmi7zlhpnvvIzku6Xnu5nkurrku6Xlpb3nmoTljbDosaHjgILkuI3opoEKK+eUqOS4jeinhOiMg+eahOWNleivjeavlOWmguKAnGRvbnTigJ3vvIzogIzopoHnlKjigJxkbyBub3TigJ3miJbogIXigJxkb24ndOKAneOAguS/neivgei/meS6m+S/oeaBr+eugOWNleOAgeaYjuS6huOAgeaXoAor5q2n5LmJ44CCCisKK+WGheaguOS/oeaBr+S4jeW/heS7peWPpeWPt++8iOivkeazqO+8muiLseaWh+WPpeWPt++8jOWNs+eCue+8iee7k+adn+OAggorCivlnKjlsI/mi6zlj7fph4zmiZPljbDmlbDlrZcoJWQp5rKh5pyJ5Lu75L2V5Lu35YC877yM5bqU6K+l6YG/5YWN6L+Z5qC35YGa44CCCisKKzxsaW51eC9kZXZpY2UuaD7ph4zmnInkuIDkupvpqbHliqjmqKHlnovor4rmlq3lro/vvIzkvaDlupTor6Xkvb/nlKjlroPku6zvvIzku6Xnoa7kv53kv6Hmga/lr7nlupTkuo7mraPnoa7nmoQKK+iuvuWkh+WSjOmpseWKqO+8jOW5tuS4lOiiq+agh+iusOS6huato+ehrueahOa2iOaBr+e6p+WIq+OAgui/meS6m+Wuj+acie+8mmRldl9lcnIoKSwgZGV2X3dhcm4oKSwKK2Rldl9pbmZvKCnnrYnnrYnjgILlr7nkuo7pgqPkupvkuI3lkozmn5DkuKrnibnlrprorr7lpIfnm7jlhbPov57nmoTkv6Hmga/vvIw8bGludXgva2VybmVsLmg+5a6a5LmJ5LqGCitwcl9kZWJ1Zygp5ZKMcHJfaW5mbygp44CCCisKK+WGmeWHuuWlveeahOiwg+ivleS/oeaBr+WPr+S7peaYr+S4gOS4quW+iOWkp+eahOaMkeaImO+8m+W9k+S9oOWGmeWHuuadpeS5i+WQju+8jOi/meS6m+S/oeaBr+WcqOi/nOeoi+mZpOmUmeeahOaXtuWAmQor5bCx5Lya5oiQ5Li65p6B5aSn55qE5biu5Yqp44CC5b2TREVCVUfnrKblj7fmsqHmnInooqvlrprkuYnnmoTml7blgJnvvIzov5nkupvkv6Hmga/kuI3lupTor6XooqvnvJbor5Hov5vlhoXmoLjph4wKK++8iOS5n+WwseaYr+ivtO+8jOm7mOiupOWcsO+8jOWug+S7rOS4jeW6lOivpeiiq+WMheWQq+WcqOWGhe+8ieOAguWmguaenOS9oOS9v+eUqGRldl9kYmcoKeaIluiAhXByX2RlYnVnKCnvvIwKK+WwseiDveiHquWKqOi+vuWIsOi/meS4quaViOaenOOAguW+iOWkmuWtkOezu+e7n+aLpeaciUtjb25maWfpgInpobnmnaXlkK/nlKgtRERFQlVH44CC6L+Y5pyJ5LiA5Liq55u45YWz55qE5oOv5L6LCivmmK/kvb/nlKhWRVJCT1NFX0RFQlVH5p2l5re75YqgZGV2X3ZkYmcoKea2iOaBr+WIsOmCo+S6m+W3sue7j+eUsURFQlVH5ZCv55So55qE5raI5oGv5LmL5LiK44CCCisKKworCQnnrKzljYHlm5vnq6DvvJrliIbphY3lhoXlrZgKKwor5YaF5qC45o+Q5L6b5LqG5LiL6Z2i55qE5LiA6Iis55So6YCU55qE5YaF5a2Y5YiG6YWN5Ye95pWw77yaa21hbGxvYygp77yMa3phbGxvYygp77yMa2NhbGxvYygp5ZKMCit2bWFsbG9jKCnjgILor7flj4LogINBUEnmlofmoaPku6Xojrflj5bmnInlhbPlroPku6znmoTor6bnu4bkv6Hmga/jgIIKKwor5Lyg6YCS57uT5p6E5L2T5aSn5bCP55qE6aaW6YCJ5b2i5byP5piv6L+Z5qC355qE77yaCisKKwlwID0ga21hbGxvYyhzaXplb2YoKnApLCAuLi4pOworCivlj6blpJbkuIDnp43kvKDpgJLmlrnlvI/kuK3vvIxzaXplb2bnmoTmk43kvZzmlbDmmK/nu5PmnoTkvZPnmoTlkI3lrZfvvIzov5nmoLfkvJrpmY3kvY7lj6/or7vmgKfvvIzlubbkuJTlj6/og73kvJrlvJUKK+WFpWJ1Z+OAguacieWPr+iDveaMh+mSiOWPmOmHj+exu+Wei+iiq+aUueWPmOaXtu+8jOiAjOWvueW6lOeahOS8oOmAkue7meWGheWtmOWIhumFjeWHveaVsOeahHNpemVvZueahOe7k+aenOS4jeWPmOOAggorCivlvLrliLbovazmjaLkuIDkuKp2b2lk5oyH6ZKI6L+U5Zue5YC85piv5aSa5L2Z55qE44CCQ+ivreiogOacrOi6q+S/neivgeS6huS7jnZvaWTmjIfpkojliLDlhbbku5bku7vkvZXmjIfpkojnsbvlnosKK+eahOi9rOaNouaYr+ayoeaciemXrumimOeahOOAggorCisKKwkJ56ys5Y2B5LqU56ug77ya5YaF6IGU5byK55eFCisKK+acieS4gOS4quW4uOingeeahOivr+ino+aYr+WGheiBlOWHveaVsOaYr2djY+aPkOS+m+eahOWPr+S7peiuqeS7o+eggei/kOihjOabtOW/q+eahOS4gOS4qumAiemhueOAguiZveeEtuS9v+eUqOWGheiBlAor5Ye95pWw5pyJ5pe25YCZ5piv5oGw5b2T55qE77yI5q+U5aaC5L2c5Li65LiA56eN5pu/5Luj5a6P55qE5pa55byP77yM6K+355yL56ys5Y2B5LqM56ug77yJ77yM5LiN6L+H5b6I5aSa5oOF5Ya15LiL5LiN5pivCivov5nmoLfjgIJpbmxpbmXlhbPplK7lrZfnmoTov4fluqbkvb/nlKjkvJrkvb/lhoXmoLjlj5jlpKfvvIzku47ogIzkvb/mlbTkuKrns7vnu5/ov5DooYzpgJ/luqblj5jmhaLjgILlm6DkuLrlpKflhoXmoLgKK+S8muWNoOeUqOabtOWkmueahOaMh+S7pOmrmOmAn+e8k+WtmO+8iOivkeazqO+8muS4gOe6p+e8k+WtmOmAmuW4uOaYr+aMh+S7pOe8k+WtmOWSjOaVsOaNrue8k+WtmOWIhuW8gOeahO+8ieiAjOS4lOS8muWvvAor6Ie0cGFnZWNhY2hl55qE5Y+v55So5YaF5a2Y5YeP5bCR44CC5oOz6LGh5LiA5LiL77yM5LiA5qyhcGFnZWNhY2hl5pyq5ZG95Lit5bCx5Lya5a+86Ie05LiA5qyh56OB55uY5a+75Z2A77yM5bCGCivogJfml7Y15q+r56eS44CCNeavq+enkueahOaXtumXtOWGhUNQVeiDveaJp+ihjOW+iOWkmuW+iOWkmuaMh+S7pOOAggorCivkuIDkuKrln7rmnKznmoTljp/liJnmmK/lpoLmnpzkuIDkuKrlh73mlbDmnIkz6KGM5Lul5LiK77yM5bCx5LiN6KaB5oqK5a6D5Y+Y5oiQ5YaF6IGU5Ye95pWw44CC6L+Z5Liq5Y6f5YiZ55qE5LiA5Liq5L6LCivlpJbmmK/vvIzlpoLmnpzkvaDnn6XpgZPmn5DkuKrlj4LmlbDmmK/kuIDkuKrnvJbor5Hml7bluLjph4/vvIzogIzkuJTlm6DkuLrov5nkuKrluLjph4/kvaDnoa7lrprnvJbor5HlmajlnKjnvJbor5Hml7bog70KK+S8mOWMluaOieS9oOeahOWHveaVsOeahOWkp+mDqOWIhuS7o+egge+8jOmCo+S7jeeEtuWPr+S7pee7meWug+WKoOS4imlubGluZeWFs+mUruWtl+OAgmttYWxsb2MoKeWGheiBlOWHveaVsOWwsQor5piv5LiA5Liq5b6I5aW955qE5L6L5a2Q44CCCisKK+S6uuS7rOe7j+W4uOS4u+W8oOe7mXN0YXRpY+eahOiAjOS4lOWPqueUqOS6huS4gOasoeeahOWHveaVsOWKoOS4imlubGluZe+8jOWmguatpOS4jeS8muacieS7u+S9leaNn+Wkse+8jOWboOS4uuayoQor5pyJ5LuA5LmI5aW95p2D6KGh55qE44CC6Jm954S25LuO5oqA5pyv5LiK6K+06L+Z5piv5q2j56Gu55qE77yM5L2G5piv5a6e6ZmF5LiK6L+Z56eN5oOF5Ya15LiL5Y2z5L2/5LiN5YqgaW5saW5lIGdjYwor5Lmf5Y+v5Lul6Ieq5Yqo5L2/5YW25YaF6IGU44CC6ICM5LiU5YW25LuW55So5oi35Y+v6IO95Lya6KaB5rGC56e76ZmkaW5saW5l77yM55Sx5q2k6ICM5p2l55qE5LqJ6K665Lya5oq15raIaW5saW5lCivoh6rouqvnmoTmvZzlnKjku7flgLzvvIzlvpfkuI3lgb/lpLHjgIIKKworCisJCeesrOWNgeWFreeroO+8muWHveaVsOi/lOWbnuWAvOWPiuWRveWQjQorCivlh73mlbDlj6/ku6Xov5Tlm57lvojlpJrnp43kuI3lkIznsbvlnovnmoTlgLzvvIzmnIDluLjop4HnmoTkuIDnp43mmK/ooajmmI7lh73mlbDmiafooYzmiJDlip/miJbogIXlpLHotKXnmoTlgLzjgILov5nmoLcKK+eahOS4gOS4quWAvOWPr+S7peihqOekuuS4uuS4gOS4qumUmeivr+S7o+eggeaVtOaVsO+8iC1FeHh477yd5aSx6LSl77yMMO+8neaIkOWKn++8ieaIluiAheS4gOS4quKAnOaIkOWKn+KAneW4g+WwlOWAvO+8iAorMO+8neWksei0pe+8jOmdnjDvvJ3miJDlip/vvInjgIIKKwor5re35ZCI5L2/55So6L+Z5Lik56eN6KGo6L6+5pa55byP5piv6Zq+5LqO5Y+R546w55qEYnVn55qE5p2l5rqQ44CC5aaC5p6cQ+ivreiogOacrOi6q+S4peagvOWMuuWIhuaVtOW9ouWSjOW4g+WwlOWei+WPmAor6YeP77yM6YKj5LmI57yW6K+R5Zmo5bCx6IO95aSf5biu5oiR5Lus5Y+R546w6L+Z5Lqb6ZSZ6K+v4oCm4oCm5LiN6L+HQ+ivreiogOS4jeWMuuWIhuOAguS4uuS6humBv+WFjeS6p+eUn+i/meenjWJ1Z++8jOivtwor6YG15b6q5LiL6Z2i55qE5oOv5L6L77yaCisKKwnlpoLmnpzlh73mlbDnmoTlkI3lrZfmmK/kuIDkuKrliqjkvZzmiJbogIXlvLrliLbmgKfnmoTlkb3ku6TvvIzpgqPkuYjov5nkuKrlh73mlbDlupTor6Xov5Tlm57plJnor6/ku6PnoIHmlbQKKwnmlbDjgILlpoLmnpzmmK/kuIDkuKrliKTmlq3vvIzpgqPkuYjlh73mlbDlupTor6Xov5Tlm57kuIDkuKrigJzmiJDlip/igJ3luIPlsJTlgLzjgIIKKwor5q+U5aaC77yM4oCcYWRkIHdvcmvigJ3mmK/kuIDkuKrlkb3ku6TvvIzmiYDku6VhZGRfd29yaygp5Ye95pWw5Zyo5oiQ5Yqf5pe26L+U5ZueMO+8jOWcqOWksei0peaXtui/lOWbni1FQlVTWeOAggor57G75Ly855qE77yM5Zug5Li64oCcUENJIGRldmljZSBwcmVzZW504oCd5piv5LiA5Liq5Yik5pat77yM5omA5LulcGNpX2Rldl9wcmVzZW50KCnlh73mlbDlnKjmiJDlip/mib7liLAKK+S4gOS4quWMuemFjeeahOiuvuWkh+aXtuW6lOivpei/lOWbnjHvvIzlpoLmnpzmib7kuI3liLDml7blupTor6Xov5Tlm54w44CCCisKK+aJgOacieWvvOWHuu+8iOivkeazqO+8mkVYUE9SVO+8ieeahOWHveaVsOmDveW/hemhu+mBteWuiOi/meS4quaDr+S+i++8jOaJgOacieeahOWFrOWFseWHveaVsOS5n+mDveW6lOivpeWmguatpOOAguengQor5pyJ77yIc3RhdGlj77yJ5Ye95pWw5LiN6ZyA6KaB5aaC5q2k77yM5L2G5piv5oiR5Lus5Lmf5o6o6I2Q6L+Z5qC35YGa44CCCisKK+i/lOWbnuWAvOaYr+WunumZheiuoeeul+e7k+aenOiAjOS4jeaYr+iuoeeul+aYr+WQpuaIkOWKn+eahOagh+W/l+eahOWHveaVsOS4jeWPl+atpOaDr+S+i+eahOmZkOWItuOAguS4gOiIrOeahO+8jOS7luS7rAor6YCa6L+H6L+U5Zue5LiA5Lqb5q2j5bi45YC86IyD5Zu05LmL5aSW55qE57uT5p6c5p2l6KGo56S65Ye66ZSZ44CC5YW45Z6L55qE5L6L5a2Q5piv6L+U5Zue5oyH6ZKI55qE5Ye95pWw77yM5LuW5Lus5L2/55SoCitOVUxM5oiW6ICFRVJSX1BUUuacuuWItuadpeaKpeWRiumUmeivr+OAggorCisKKwkJ56ys5Y2B5LiD56ug77ya5LiN6KaB6YeN5paw5Y+R5piO5YaF5qC45a6PCisKK+WktOaWh+S7tmluY2x1ZGUvbGludXgva2VybmVsLmjljIXlkKvkuobkuIDkupvlro/vvIzkvaDlupTor6Xkvb/nlKjlroPku6zvvIzogIzkuI3opoHoh6rlt7HlhpnkuIDkupvlroPku6znmoQKK+WPmOenjeOAguavlOWmgu+8jOWmguaenOS9oOmcgOimgeiuoeeul+S4gOS4quaVsOe7hOeahOmVv+W6pu+8jOS9v+eUqOi/meS4quWujworCisgICNkZWZpbmUgQVJSQVlfU0laRSh4KSAoc2l6ZW9mKHgpIC8gc2l6ZW9mKCh4KVswXSkpCisKK+exu+S8vOeahO+8jOWmguaenOS9oOimgeiuoeeul+afkOe7k+aehOS9k+aIkOWRmOeahOWkp+Wwj++8jOS9v+eUqAorCisgICNkZWZpbmUgRklFTERfU0laRU9GKHQsIGYpIChzaXplb2YoKCh0KikwKS0+ZikpCisKK+i/mOacieWPr+S7peWBmuS4peagvOeahOexu+Wei+ajgOafpeeahG1pbigp5ZKMbWF4KCnlro/vvIzlpoLmnpzkvaDpnIDopoHlj6/ku6Xkvb/nlKjlroPku6zjgILkvaDlj6/ku6Xoh6rlt7HnnIvnnIsKK+mCo+S4quWktOaWh+S7tumHjOi/mOWumuS5ieS6huS7gOS5iOS9oOWPr+S7peaLv+adpeeUqOeahOS4nOilv++8jOWmguaenOacieWumuS5ieeahOivne+8jOS9oOWwseS4jeW6lOWcqOS9oOeahOS7o+eggemHjAor6Ieq5bex6YeN5paw5a6a5LmJ44CCCisKKworCQnnrKzljYHlhavnq6DvvJrnvJbovpHlmajmqKHlvI/ooYzlkozlhbbku5bpnIDopoHnvZfll6bnmoTkuovmg4UKKwor5pyJ5LiA5Lqb57yW6L6R5Zmo5Y+v5Lul6Kej6YeK5bWM5YWl5Zyo5rqQ5paH5Lu26YeM55qE55Sx5LiA5Lqb54m55q6K5qCH6K6w5qCH5piO55qE6YWN572u5L+h5oGv44CC5q+U5aaC77yMZW1hY3MKK+iDveWkn+ino+mHiuiiq+agh+iusOaIkOi/meagt+eahOihjO+8mgorCistKi0gbW9kZTogYyAtKi0KKwor5oiW6ICF6L+Z5qC355qE77yaCisKKy8qCitMb2NhbCBWYXJpYWJsZXM6Citjb21waWxlLWNvbW1hbmQ6ICJnY2MgLURNQUdJQ19ERUJVR19GTEFHIGZvby5jIgorRW5kOgorKi8KKworVmlt6IO95aSf6Kej6YeK6L+Z5qC355qE5qCH6K6w77yaCisKKy8qIHZpbTpzZXQgc3c9OCBub2V0ICovCisKK+S4jeimgeWcqOa6kOS7o+eggeS4reWMheWQq+S7u+S9lei/meagt+eahOWGheWuueOAguavj+S4quS6uumDveacieS7luiHquW3seeahOe8lui+keWZqOmFjee9ru+8jOS9oOeahOa6kOaWh+S7tuS4jeW6lAor6K+l6KaG55uW5Yir5Lq655qE6YWN572u44CC6L+Z5YyF5ous5pyJ5YWz57yp6L+b5ZKM5qih5byP6YWN572u55qE5qCH6K6w44CC5Lq65Lus5Y+v5Lul5L2/55So5LuW5Lus6Ieq5bex5a6a5Yi255qE5qihCivlvI/vvIzmiJbogIXkvb/nlKjlhbbku5blj6/ku6XkuqfnlJ/mraPnoa7nmoTnvKnov5vnmoTlt6flppnmlrnms5XjgIIKKworCisKKwkJ6ZmE5b2VIEnvvJrlj4LogIMKKworVGhlIEMgUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UsIOesrOS6jOeJiCwg5L2c6ICFQnJpYW4gVy4gS2VybmlnaGFu5ZKMRGVubmkKK00uIFJpdGNoaWUuIFByZW50aWNlIEhhbGwsIEluYy4sIDE5ODguIElTQk4gMC0xMy0xMTAzNjItOCAo6L2v55quKSwKKzAtMTMtMTEwMzcwLTkgKOehrOearikuIFVSTDogaHR0cDovL2NtLmJlbGwtbGFicy5jb20vY20vY3MvY2Jvb2svCisKK1RoZSBQcmFjdGljZSBvZiBQcm9ncmFtbWluZyDkvZzogIVCcmlhbiBXLiBLZXJuaWdoYW7lkoxSb2IgUGlrZS4gIEFkZGlzb24tV2VzbGV5LAorSW5jLiwgMTk5OS4gIElTQk4gMC0yMDEtNjE1ODYtWC4gIFVSTDogaHR0cDovL2NtLmJlbGwtbGFicy5jb20vY20vY3MvdHBvcC8KKworY3Bw77yMZ2Nj77yMZ2NjIGludGVybmFsc+WSjGluZGVudOeahEdOVeaJi+WGjOKAlOKAlOWSjEsmUuWPiuacrOaWh+ebuOespuWQiOeahOmDqOWIhu+8jOWFqOmDqOWPr+S7peWcqAoraHR0cDovL3d3dy5nbnUub3JnL21hbnVhbC/mib7liLAKKworV0cxNOaYr0Por63oqIDnmoTlm73pmYXmoIflh4bljJblt6XkvZznu4TvvIxVUkw6IGh0dHA6Ly93d3cub3Blbi1zdGQub3JnL0pUQzEvU0MyMi9XRzE0LworCitLZXJuZWwgQ29kaW5nU3R5bGXvvIzkvZzogIVncmVnQGtyb2FoLmNvbeWPkeihqOS6jk9MUyAyMDAy77yaCitodHRwOi8vd3d3Lmtyb2FoLmNvbS9saW51eC90YWxrcy9vbHNfMjAwMl9rZXJuZWxfY29kaW5nc3R5bGVfdGFsay9odG1sLworCistLQor5pyA5ZCO5pu05paw5LqOMjAwN+W5tDfmnIgxM+aXpeOAggpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi96aF9DTi9IT1dUTyBiL0RvY3VtZW50YXRpb24vemhfQ04vSE9XVE8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRlYTI0ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vemhfQ04vSE9XVE8KQEAgLTAsMCArMSw1MzggQEAKK++7v0NoaW5lc2UgdHJhbnNsYXRlZCB2ZXJzaW9uIG9mIERvY3VtZW50YXRpb24vSE9XVE8KKworSWYgeW91IGhhdmUgYW55IGNvbW1lbnQgb3IgdXBkYXRlIHRvIHRoZSBjb250ZW50LCBwbGVhc2UgY29udGFjdCB0aGUKK29yaWdpbmFsIGRvY3VtZW50IG1haW50YWluZXIgZGlyZWN0bHkuICBIb3dldmVyLCBpZiB5b3UgaGF2ZSBhIHByb2JsZW0KK2NvbW11bmljYXRpbmcgaW4gRW5nbGlzaCB5b3UgY2FuIGFsc28gYXNrIHRoZSBDaGluZXNlIG1haW50YWluZXIgZm9yCitoZWxwLiAgQ29udGFjdCB0aGUgQ2hpbmVzZSBtYWludGFpbmVyIGlmIHRoaXMgdHJhbnNsYXRpb24gaXMgb3V0ZGF0ZWQKK29yIGlmIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSB0cmFuc2xhdGlvbi4KKworTWFpbnRhaW5lcjogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVnQGtyb2FoLmNvbT4KK0NoaW5lc2UgbWFpbnRhaW5lcjogTGkgWWFuZyA8bGVvbGlAZnJlZXNjYWxlLmNvbT4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRG9jdW1lbnRhdGlvbi9IT1dUTyDnmoTkuK3mlofnv7vor5EKKwor5aaC5p6c5oOz6K+E6K665oiW5pu05paw5pys5paH55qE5YaF5a6577yM6K+355u05o6l6IGU57O75Y6f5paH5qGj55qE57u05oqk6ICF44CC5aaC5p6c5L2g5L2/55So6Iux5paHCivkuqTmtYHmnInlm7Dpmr7nmoTor53vvIzkuZ/lj6/ku6XlkJHkuK3mlofniYjnu7TmiqTogIXmsYLliqnjgILlpoLmnpzmnKznv7vor5Hmm7TmlrDkuI3lj4rml7bmiJbogIXnv7sKK+ivkeWtmOWcqOmXrumimO+8jOivt+iBlOezu+S4reaWh+eJiOe7tOaKpOiAheOAggorCivoi7HmlofniYjnu7TmiqTogIXvvJogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVnQGtyb2FoLmNvbT4KK+S4reaWh+eJiOe7tOaKpOiAhe+8miDmnY7pmLMgIExpIFlhbmcgPGxlb2xpQGZyZWVzY2FsZS5jb20+CivkuK3mlofniYjnv7vor5HogIXvvJog5p2O6ZizICBMaSBZYW5nIDxsZW9saUBmcmVlc2NhbGUuY29tPgor5Lit5paH54mI5qCh6K+R6ICF77yaIOmSn+WuhyAgVHJpcGxlWCBDaHVuZyA8eHh4LnBoeUBnbWFpbC5jb20+CisgICAgICAgICAgICAgICDpmYjnkKYgIE1hZ2dpZSBDaGVuIDxjaGVucWlAYmV5b25kc29mdC5jb20+CisgICAgICAgICAgICAgICDnjovogaogIFdhbmcgQ29uZyA8eGl5b3Uud2FuZ2NvbmdAZ21haWwuY29tPgorCivku6XkuIvkuLrmraPmlocKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCivlpoLkvZXlj4LkuI5MaW51eOWGheaguOW8gOWPkQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK+i/meaYr+S4gOevh+WwhuWmguS9leWPguS4jkxpbnV45YaF5qC45byA5Y+R55qE55u45YWz6Zeu6aKY5LiA572R5omT5bC955qE57uI5p6B56eY56yI44CC5a6D5bCG5oyH5a+85L2gCivmiJDkuLrkuIDlkI1MaW51eOWGheaguOW8gOWPkeiAhe+8jOW5tuS4lOWtpuS8muWmguS9leWQjExpbnV45YaF5qC45byA5Y+R56S+5Yy65ZCI5L2c44CC5a6D5bC95Y+v6IO95LiNCivljIXmi6zku7vkvZXlhbPkuo7lhoXmoLjnvJbnqIvnmoTmioDmnK/nu4boioLvvIzkvYbkvJrnu5nkvaDmjIflvJXkuIDmnaHojrflvpfov5nkupvnn6Xor4bnmoTmraPnoa7pgJTlvoTjgIIKKwor5aaC5p6c6L+Z56+H5paH56ug5Lit55qE5Lu75L2V5YaF5a655LiN5YaN6YCC55So77yM6K+357uZ5paH5pyr5YiX5Ye655qE5paH5Lu257u05oqk6ICF5Y+R6YCB6KGl5LiB44CCCisKKwor5YWl6ZeoCistLS0tCisKK+S9oOaDs+S6huino+WmguS9leaIkOS4uuS4gOWQjUxpbnV45YaF5qC45byA5Y+R6ICF77yf5oiW6ICF6ICB5p2/5ZCp5ZKQ5L2g4oCc57uZ6L+Z5Liq6K6+5aSH5YaZ5LiqTGludXgKK+mpseWKqOeoi+W6j+KAne+8n+i/meevh+aWh+eroOeahOebrueahOWwseaYr+aVmeS8muS9oOi+vuaIkOi/meS6m+ebruagh+eahOWFqOmDqOivgOeqje+8jOWug+WwhuaPj+i/sOS9oOmcgAor6KaB57uP6L+H55qE5rWB56iL5Lul5Y+K57uZ5Ye65aaC5L2V5ZCM5YaF5qC456S+5Yy65ZCI5L2c55qE5LiA5Lqb5o+Q56S644CC5a6D6L+Y5bCG6K+V5Zu+6Kej6YeK5YaF5qC456S+5Yy6CivkuLrkvZXov5nmoLfov5DkvZzjgIIKKworTGludXjlhoXmoLjlpKfpg6jliIbmmK/nlLFD6K+t6KiA5YaZ5oiQ55qE77yM5LiA5Lqb5L2T57O757uT5p6E55u45YWz55qE5Luj56CB55So5Yiw5LqG5rGH57yW6K+t6KiA44CC6KaBCivlj4LkuI7lhoXmoLjlvIDlj5HvvIzkvaDlv4Xpobvnsr7pgJpD6K+t6KiA44CC6Zmk6Z2e5L2g5oOz5Li65p+Q5Liq5p625p6E5byA5Y+R5bqV5bGC5Luj56CB77yM5ZCm5YiZ5L2g5bm2CivkuI3pnIDopoHkuobop6PvvIjku7vkvZXkvZPns7vnu5PmnoTnmoTvvInmsYfnvJbor63oqIDjgILkuIvpnaLliJfkuL7nmoTkuabnsY3omb3nhLbkuI3og73mm7/ku6PmiY7lrp7nmoRDCivor63oqIDmlZnogrLlkozlpJrlubTnmoTlvIDlj5Hnu4/pqozvvIzkvYblpoLmnpzpnIDopoHnmoTor53vvIzlgZrkuLrlj4LogIPov5jmmK/kuI3plJnnmoTvvJoKKyAtICJUaGUgQyBQcm9ncmFtbWluZyBMYW5ndWFnZSIgYnkgS2VybmlnaGFuIGFuZCBSaXRjaGllIFtQcmVudGljZSBIYWxsXQorICAg44CKQ+eoi+W6j+iuvuiuoeivreiogO+8iOesrDLniYjCt+aWsOeJiO+8ieOAi++8iOW+kOWuneaWhyDmnY7lv5cg6K+R77yJW+acuuaisOW3peS4muWHuueJiOekvl0KKyAtICJQcmFjdGljYWwgQyBQcm9ncmFtbWluZyIgYnkgU3RldmUgT3VhbGxpbmUgW08nUmVpbGx5XQorICAg44CK5a6e55SoQ+ivreiogOe8lueoi++8iOesrOS4ieeJiO+8ieOAi++8iOmDreWkp+a1tyDor5HvvIlb5Lit5Zu955S15Yqb5Ye654mI56S+XQorIC0gIkM6ICBBIFJlZmVyZW5jZSBNYW51YWwiIGJ5IEhhcmJpc29uIGFuZCBTdGVlbGUgW1ByZW50aWNlIEhhbGxdCisgICDjgIpD6K+t6KiA5Y+C6ICD5omL5YaM77yI5Y6f5Lmm56ysNeeJiO+8ieOAi++8iOmCseS7sua9mCDnrYnor5HvvIlb5py65qKw5bel5Lia5Ye654mI56S+XQorCitMaW51eOWGheaguOS9v+eUqEdOVSBD5ZKMR05V5bel5YW36ZO+5byA5Y+R44CC6Jm954S25a6D6YG15b6qSVNPIEM4Oeagh+WHhu+8jOS9huS5n+eUqOWIsOS6huS4gOS6mwor5qCH5YeG5Lit5rKh5pyJ5a6a5LmJ55qE5omp5bGV44CC5YaF5qC45piv6Ieq57uZ6Ieq6Laz55qEQ+eOr+Wig++8jOS4jeS+nei1luS6juagh+WHhkPlupPnmoTmlK/mjIHvvIzmiYDku6UKK+W5tuS4jeaUr+aMgUPmoIflh4bkuK3nmoTpg6jliIblrprkuYnjgILmr5TlpoJsb25nIGxvbmfnsbvlnovnmoTlpKfmlbDpmaTms5Xlkozmta7ngrnov5DnrpflsLHkuI3lhYHorrgKK+S9v+eUqOOAguacieaXtuWAmeehruWunuW+iOmavuW8hOa4healmuWGheaguOWvueW3peWFt+mTvueahOimgeaxguWSjOWug+aJgOS9v+eUqOeahOaJqeWxle+8jOS4jeW5uOeahOaYr+ebrgor5YmN6L+Y5rKh5pyJ5piO56Gu55qE5Y+C6ICD6LWE5paZ5Y+v5Lul6Kej6YeK5a6D5Lus44CC6K+35p+l6ZiFZ2Nj5L+h5oGv6aG177yI5L2/55So4oCcaW5mbyBnY2PigJ3lkb3ku6QKK+aYvuekuu+8ieiOt+W+l+S4gOS6m+i/meaWuemdouS/oeaBr+OAggorCivor7forrDkvY/kvaDmmK/lnKjlrabkuaDmgI7kuYjlkozlt7Lnu4/lrZjlnKjnmoTlvIDlj5HnpL7ljLrmiZPkuqTpgZPjgILlroPnlLHkuIDnvqTlvaLlvaLoibLoibLnmoTkurrnu4TmiJDvvIwKK+S7luS7rOWvueS7o+eggeOAgemjjuagvOWSjOi/h+eoi+acieedgOW+iOmrmOeahOagh+WHhuOAgui/meS6m+agh+WHhuaYr+WcqOmVv+acn+Wunui3teS4reaAu+e7k+WHuuadpeeahO+8jAor6YCC5bqU5LqO5Zyw55CG5LiK5YiG5pWj55qE5aSn5Z6L5byA5Y+R5Zui6Zif44CC5a6D5Lus5bey57uP6KKr5b6I5aW95b6X5pW055CG5oiQ5qGj77yM5bu66K6u5L2g5Zyo5byA5Y+RCivkuYvliY3lsL3lj6/og73lpJrnmoTlrabkuaDov5nkupvmoIflh4bvvIzogIzkuI3opoHmnJ/mnJvliKvkurrmnaXpgILlupTkvaDmiJbogIXkvaDlhazlj7jnmoTooYzkuLrmlrnlvI/jgIIKKworCivms5Xlvovpl67popgKKy0tLS0tLS0tCisKK0xpbnV45YaF5qC45rqQ5Luj56CB6YO95piv5ZyoR1BM77yI6YCa55So5YWs5YWx6K645Y+v6K+B77yJ55qE5L+d5oqk5LiL5Y+R5biD55qE44CC6KaB5LqG6Kej6L+Z56eN6K645Y+vCivnmoTnu4boioLor7fmn6XnnIvmupDku6PnoIHkuLvnm67lvZXkuIvnmoRDT1BZSU5H5paH5Lu244CC5aaC5p6c5L2g5a+55a6D6L+Y5pyJ5pu05rex5YWl6Zeu6aKY6K+36IGU57O7CivlvovluIjvvIzogIzkuI3opoHlnKhMaW51eOWGheaguOmCruS7tue7hOS4iuaPkOmXruOAguWboOS4uumCruS7tue7hOmHjOeahOS6uuW5tuS4jeaYr+W+i+W4iO+8jOS4jeimgeacnwor5pyb5LuW5Lus55qE6K+d5pyJ5rOV5b6L5pWI5Yqb44CCCisKK+WvueS6jkdQTOeahOW4uOingemXrumimOWSjOino+etlO+8jOivt+iuv+mXruS7peS4i+mTvuaOpe+8mgorCWh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtZmFxLmh0bWwKKworCivmlofmoaMKKy0tLS0KKworTGludXjlhoXmoLjku6PnoIHkuK3ljIXlkKvmnInlpKfph4/nmoTmlofmoaPjgILov5nkupvmlofmoaPlr7nkuo7lrabkuaDlpoLkvZXkuI7lhoXmoLjnpL7ljLrkupLliqjmnInnnYAKK+S4jeWPr+S8sOmHj+eahOS7t+WAvOOAguW9k+S4gOS4quaWsOeahOWKn+iDveiiq+WKoOWFpeWGheaguO+8jOacgOWlveaKiuino+mHiuWmguS9leS9v+eUqOi/meS4quWKn+iDveeahOaWhwor5qGj5Lmf5pS+6L+b5YaF5qC444CC5b2T5YaF5qC455qE5pS55Yqo5a+86Ie06Z2i5ZCR55So5oi356m66Ze055qE5o6l5Y+j5Y+R55Sf5Y+Y5YyW5pe277yM5pyA5aW95bCG55u45YWz5L+hCivmga/miJbmiYvlhozpobUobWFucGFnZXMp55qE6KGl5LiB5Y+R5YiwbXRrLm1hbnBhZ2VzQGdtYWlsLmNvbe+8jOS7peWQkeaJi+WGjOmhtShtYW5wYWdlcykKK+eahOe7tOaKpOiAheino+mHiui/meS6m+WPmOWMluOAggorCivku6XkuIvmmK/lhoXmoLjku6PnoIHkuK3pnIDopoHpmIXor7vnmoTmlofmoaPvvJoKKyAgUkVBRE1FCisgICAg5paH5Lu2566A6KaB5LuL57uN5LqGTGludXjlhoXmoLjnmoTog4zmma/vvIzlubbkuJTmj4/ov7DkuoblpoLkvZXphY3nva7lkoznvJbor5HlhoXmoLjjgILlhoXmoLjnmoQKKyAgICDmlrDnlKjmiLflupTor6Xku47ov5nph4zlvIDlp4vjgIIKKworICBEb2N1bWVudGF0aW9uL0NoYW5nZXMKKyAgICDmlofku7bnu5nlh7rkuobnlKjmnaXnvJbor5Hlkozkvb/nlKjlhoXmoLjmiYDpnIDopoHnmoTmnIDlsI/ova/ku7bljIXliJfooajjgIIKKworICBEb2N1bWVudGF0aW9uL0NvZGluZ1N0eWxlCisgICAg5o+P6L+wTGludXjlhoXmoLjnmoTku6PnoIHpo47moLzlkoznkIbnlLHjgILmiYDmnInmlrDku6PnoIHpnIDopoHpgbXlrojov5nnr4fmlofmoaPkuK3lrprkuYnnmoTop4QKKyAgICDojIPjgILlpKflpJrmlbDnu7TmiqTogIXlj6rkvJrmjqXmlLbnrKblkIjop4TlrprnmoTooaXkuIHvvIzlvojlpJrkurrkuZ/lj6rkvJrluK7lv5nmo4Dmn6XnrKblkIjpo47moLwKKyAgICDnmoTku6PnoIHjgIIKKworICBEb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzCisgIERvY3VtZW50YXRpb24vU3VibWl0dGluZ0RyaXZlcnMKKyAgICDov5nkuKTku73mlofmoaPmmI7noa7mj4/ov7DlpoLkvZXliJvlu7rlkozlj5HpgIHooaXkuIHvvIzlhbbkuK3ljIXmi6zvvIjkvYbkuI3ku4XpmZDkuo4p77yaCisgICAgICAgLSDpgq7ku7blhoXlrrkKKyAgICAgICAtIOmCruS7tuagvOW8jworICAgICAgIC0g6YCJ5oup5pS25Lu25Lq6CisgICAg6YG15a6I6L+Z5Lqb6KeE5a6a5bm25LiN6IO95L+d6K+B5o+Q5Lqk5oiQ5Yqf77yI5Zug5Li65omA5pyJ6KGl5LiB6ZyA6KaB6YCa6L+H5Lil5qC855qE5YaF5a655ZKM6aOO5qC8CisgICAg5a6h5p+l77yJ77yM5L2G5piv5b+96KeG5LuW5Lus5Yeg5LmO5bCx5oSP5ZGz552A5aSx6LSl44CCCisKKyAgICDlhbbku5blhbPkuo7lpoLkvZXmraPnoa7lnLDnlJ/miJDooaXkuIHnmoTkvJjnp4DmlofmoaPljIXmi6zvvJoKKyAgICAiVGhlIFBlcmZlY3QgUGF0Y2giCisgICAgICAgIGh0dHA6Ly93d3cub3psYWJzLm9yZy9+YWtwbS9zdHVmZi90cHAudHh0CisgICAgIkxpbnV4IGtlcm5lbCBwYXRjaCBzdWJtaXNzaW9uIGZvcm1hdCIKKyAgICAgICAgaHR0cDovL2xpbnV4Lnl5ei51cy9wYXRjaC1mb3JtYXQuaHRtbAorCisgIERvY3VtZW50YXRpb24vc3RhYmxlX2FwaV9ub25zZW5zZS50eHQKKyAgICDorrror4HlhoXmoLjkuLrku4DkuYjnibnmhI/kuI3ljIXmi6znqLPlrprnmoTlhoXmoLjlhoXpg6hBUEnvvIzkuZ/lsLHmmK/or7TkuI3ljIXmi6zlg4/ov5nmoLfnmoTnibkKKyAgICDmgKfvvJoKKyAgICAgICAtIOWtkOezu+e7n+S4remXtOWxgu+8iOS4uuS6huWFvOWuueaAp++8n++8iQorICAgICAgIC0g5Zyo5LiN5ZCM5pON5L2c57O757uf6Ze05piT5LqO56e75qSN55qE6amx5Yqo56iL5bqPCisgICAgICAgLSDlh4/nvJPvvIjnlJroh7PpmLvmraLvvInlhoXmoLjku6PnoIHnmoTlv6vpgJ/lj5jljJYKKyAgICDov5nnr4fmlofmoaPlr7nkuo7nkIbop6NMaW51eOeahOW8gOWPkeWTsuWtpuiHs+WFs+mHjeimgeOAguWvueS6juWwhuW8gOWPkeW5s+WPsOS7juWFtuS7luaTjeS9nOezuworICAgIOe7n+i9rOenu+WIsExpbnV455qE5Lq65p2l6K+05Lmf5b6I6YeN6KaB44CCCisKKyAgRG9jdW1lbnRhdGlvbi9TZWN1cml0eUJ1Z3MKKyAgICDlpoLmnpzkvaDorqTkuLroh6rlt7Hlj5HnjrDkuoZMaW51eOWGheaguOeahOWuieWFqOaAp+mXrumimO+8jOivt+agueaNrui/meevh+aWh+aho+S4reeahOatpemqpOadpQorICAgIOaPkOmGkuWFtuS7luWGheaguOW8gOWPkeiAheW5tuW4ruWKqeino+WGs+i/meS4qumXrumimOOAggorCisgIERvY3VtZW50YXRpb24vTWFuYWdlbWVudFN0eWxlCisgICAg5o+P6L+w5YaF5qC457u05oqk6ICF55qE5bel5L2c5pa55rOV5Y+K5YW25YWx5pyJ54m554K544CC6L+Z5a+55LqO5Yia5Yia5o6l6Kem5YaF5qC45byA5Y+R77yI5oiW6ICF5a+5CisgICAg5a6D5oSf5Yiw5aW95aWH77yJ55qE5Lq65p2l6K+05b6I6YeN6KaB77yM5Zug5Li65a6D6Kej6YeK5LqG5b6I5aSa5a+55LqO5YaF5qC457u05oqk6ICF54us54m56KGM5Li655qECisgICAg5pmu6YGN6K+v6Kej5LiO6L+35oOR44CCCisKKyAgRG9jdW1lbnRhdGlvbi9zdGFibGVfa2VybmVsX3J1bGVzLnR4dAorICAgIOino+mHiuS6hueos+WumueJiOWGheaguOWPkeW4g+eahOinhOWIme+8jOS7peWPiuWmguS9leWwhuaUueWKqOaUvuWFpei/meS6m+eJiOacrOeahOatpemqpOOAggorCisgIERvY3VtZW50YXRpb24va2VybmVsLWRvY3MudHh0CisgICAg5pyJ5Yqp5LqO5YaF5qC45byA5Y+R55qE5aSW6YOo5paH5qGj5YiX6KGo44CC5aaC5p6c5L2g5Zyo5YaF5qC46Ieq5bim55qE5paH5qGj5Lit5rKh5pyJ5om+5Yiw5L2g5oOz5om+CisgICAg55qE5YaF5a6577yM5Y+v5Lul5p+l55yL6L+Z5Lqb5paH5qGj44CCCisKKyAgRG9jdW1lbnRhdGlvbi9hcHBseWluZy1wYXRjaGVzLnR4dAorICAgIOWFs+S6juihpeS4geaYr+S7gOS5iOS7peWPiuWmguS9leWwhuWug+aJk+WcqOS4jeWQjOWGheaguOW8gOWPkeWIhuaUr+S4iueahOWlveS7i+e7jQorCivlhoXmoLjov5jmi6XmnInlpKfph4/ku47ku6PnoIHoh6rliqjnlJ/miJDnmoTmlofmoaPjgILlroPljIXlkKvlhoXmoLjlhoXpg6hBUEnnmoTlhajpnaLku4vnu43ku6Xlj4rlpoLkvZUKK+WmpeWWhOWkhOeQhuWKoOmUgeeahOinhOWImeOAgueUn+aIkOeahOaWh+aho+S8muaUvuWcqCBEb2N1bWVudGF0aW9uL0RvY0Jvb2sv55uu5b2V5LiL44CC5Zyo5YaFCivmoLjmupDnoIHnmoTkuLvnm67lvZXkuK3kvb/nlKjku6XkuIvkuI3lkIzlkb3ku6TlsIbkvJrliIbliKvnlJ/miJBQREbjgIFQb3N0c2NyaXB044CBSFRNTOWSjOaJi+WGjAor6aG1562J5LiN5ZCM5qC85byP55qE5paH5qGj77yaCisgICAgbWFrZSBwZGZkb2NzCisgICAgbWFrZSBwc2RvY3MKKyAgICBtYWtlIGh0bWxkb2NzCisgICAgbWFrZSBtYW5kb2NzCisKKwor5aaC5L2V5oiQ5Li65YaF5qC45byA5Y+R6ICFCistLS0tLS0tLS0tLS0tLS0tLS0KK+WmguaenOS9oOWvuUxpbnV45YaF5qC45byA5Y+R5LiA5peg5omA55+l77yM5L2g5bqU6K+l6K6/6Zeu4oCcTGludXjlhoXmoLjmlrDmiYvigJ3orqHliJLvvJoKKwlodHRwOi8va2VybmVsbmV3Ymllcy5vcmcKK+Wug+aLpeacieS4gOS4quWPr+S7pemXruWQhOenjeacgOWfuuacrOeahOWGheaguOW8gOWPkemXrumimOeahOmCruS7tuWIl+ihqO+8iOWcqOaPkOmXruS5i+WJjeS4gOWumuimgeiusOW+lwor5p+l5om+5bey5b6A55qE6YKu5Lu277yM56Gu6K6k5piv5ZCm5pyJ5Lq65bey57uP5Zue562U6L+H55u45ZCM55qE6Zeu6aKY77yJ44CC5a6D6L+Y5oul5pyJ5LiA5Liq5Y+v5Lul6I635b6XCivlrp7ml7blj43ppojnmoRJUkPogYrlpKnpopHpgZPvvIzku6Xlj4rlpKfph4/lr7nkuo7lrabkuaBMaW51eOWGheaguOW8gOWPkeebuOW9k+acieW4ruWKqeeahOaWh+aho+OAggorCivnvZHnq5nnroDopoHku4vnu43kuobmupDku6PnoIHnu4Tnu4fnu5PmnoTjgIHlrZDns7vnu5/liJLliIbku6Xlj4rnm67liY3mraPlnKjov5vooYznmoTpobnnm67vvIjljIXmi6zlhoXmoLgKK+S4reeahOWSjOWNleeLrOe7tOaKpOeahO+8ieOAguWug+i/mOaPkOS+m+S6huS4gOS6m+WfuuacrOeahOW4ruWKqeS/oeaBr++8jOavlOWmguWmguS9lee8luivkeWGheaguOWSjOaJk+ihpQor5LiB44CCCisKK+WmguaenOS9oOaDs+WKoOWFpeWGheaguOW8gOWPkeekvuWMuuW5tuWNj+WKqeWujOaIkOS4gOS6m+S7u+WKoe+8jOWNtOaJvuS4jeWIsOS7juWTqumHjOW8gOWni++8jOWPr+S7peiuv+mXrgor4oCcTGludXjlhoXmoLjmiL/nrqHlkZjigJ3orqHliJLvvJoKKwlodHRwOi8va2VybmVsbmV3Ymllcy5vcmcvS2VybmVsSmFuaXRvcnMKK+i/meaYr+aegeS9s+eahOi1t+eCueOAguWug+aPkOS+m+S4gOS4quebuOWvueeugOWNleeahOS7u+WKoeWIl+ihqO+8jOWIl+WHuuWGheaguOS7o+eggeS4remcgOimgeiiq+mHjeaWsAor5pW055CG5oiW6ICF5pS55q2j55qE5Zyw5pa544CC6YCa6L+H5ZKM6LSf6LSj6L+Z5Liq6K6h5YiS55qE5byA5Y+R6ICF5Lus5LiA5ZCM5bel5L2c77yM5L2g5Lya5a2m5Yiw5bCG6KGl5LiBCivpm4bmiJDov5vlhoXmoLjnmoTln7rmnKzljp/nkIbjgILlpoLmnpzov5jmsqHmnInlhrPlrprkuIvkuIDmraXopoHlgZrku4DkuYjnmoTor53vvIzkvaDov5jlj6/og73kvJrlvpfliLDmlrkKK+WQkeaAp+eahOaMh+eCueOAggorCivlpoLmnpzkvaDlt7Lnu4/mnInkuIDkupvnjrDmiJDnmoTku6PnoIHmg7PopoHmlL7liLDlhoXmoLjkuK3vvIzkvYbmmK/pnIDopoHkuIDkupvluK7liqnmnaXkvb/lroPku6zmi6XmnInmraMKK+ehrueahOagvOW8j+OAguivt+iuv+mXruKAnOWGheaguOWvvOW4iOKAneiuoeWIkuOAgui/meS4quiuoeWIkuWwseaYr+eUqOadpeW4ruWKqeS9oOWujOaIkOi/meS4quebruagh+eahOOAguWugwor5piv5LiA5Liq6YKu5Lu25YiX6KGo77yM5Zyw5Z2A5aaC5LiL77yaCisJaHR0cDovL3NlbGVuaWMuY29tL21haWxtYW4vbGlzdGluZm8va2VybmVsLW1lbnRvcnMKKwor5Zyo55yf5q2j5Yqo5omL5L+u5pS55YaF5qC45Luj56CB5LmL5YmN77yM55CG6Kej6KaB5L+u5pS555qE5Luj56CB5aaC5L2V6L+Q5L2c5piv5b+F6ZyA55qE44CC6KaB6L6+5Yiw6L+Z5LiqCivnm67nmoTvvIzmsqHku4DkuYjlip7ms5Xmr5Tnm7TmjqXor7vku6PnoIHmm7TmnInmlYjkuobvvIjlpKflpJrmlbDoirHmi5vpg73kvJrmnInnm7jlupTnmoTms6jph4rvvInvvIzogIzkuJQKK+S4gOS6m+eJueWItueahOW3peWFt+i/mOWPr+S7peaPkOS+m+W4ruWKqeOAguS+i+Wmgu+8jOKAnExpbnV45Luj56CB5Lqk5Y+J5byV55So4oCd6aG555uu5bCx5piv5LiA5Liq5YC85b6XCivnibnliKvmjqjojZDnmoTluK7liqnlt6XlhbfvvIzlroPlsIbmupDku6PnoIHmmL7npLrlnKjmnInnvJbnm67lkozntKLlvJXnmoTnvZHpobXkuIrjgILlhbbkuK3kuIDkuKrmm7TmlrDlj4oKK+aXtueahOWGheaguOa6kOeggeW6k++8jOWPr+S7pemAmui/h+S7peS4i+WcsOWdgOiuv+mXru+8mgorCWh0dHA6Ly9zb3NkZy5vcmcvfmNveXdvbGYvbHhyLworCisKK+W8gOWPkea1geeoiworLS0tLS0tLS0KKwor55uu5YmNTGludXjlhoXmoLjlvIDlj5HmtYHnqIvljIXmi6zlh6DkuKrigJzkuLvlhoXmoLjliIbmlK/igJ3lkozlvojlpJrlrZDns7vnu5/nm7jlhbPnmoTlhoXmoLjliIbmlK/jgILov5kKK+S6m+WIhuaUr+WMheaLrO+8mgorICAtIDIuNi545Li75YaF5qC45rqQ56CB5qCRCisgIC0gMi42LngueSAtc3RhYmxl5YaF5qC45rqQ56CB5qCRCisgIC0gMi42LnggLWdpdOWGheaguOihpeS4gembhgorICAtIDIuNi54IC1tbeWGheaguOihpeS4gembhgorICAtIOWtkOezu+e7n+ebuOWFs+eahOWGheaguOa6kOeggeagkeWSjOihpeS4gembhgorCisKKzIuNi545YaF5qC45Li75rqQ56CB5qCRCistLS0tLS0tLS0tLS0tLS0tLQorMi42LnjlhoXmoLjmmK/nlLFMaW51cyBUb3J2YWxkc++8iExpbnV455qE5Yib6YCg6ICF77yJ5Lqy6Ieq57u05oqk55qE44CC5L2g5Y+v5Lul5ZyoCitrZXJuZWwub3Jn572R56uZ55qEcHViL2xpbnV4L2tlcm5lbC92Mi42L+ebruW9leS4i+aJvuWIsOWug+OAguWug+eahOW8gOWPkemBteW+quS7peS4i+atpQor6aqk77yaCisgIC0g5q+P5b2T5LiA5Liq5paw54mI5pys55qE5YaF5qC46KKr5Y+R5biD77yM5Li65pyf5Lik5ZGo55qE6ZuG5oiQ56qX5Y+j5bCG6KKr5omT5byA44CC5Zyo6L+Z5q615pe26Ze06YeMCisgICAg57u05oqk6ICF5Y+v5Lul5ZCRTGludXPmj5DkuqTlpKfmrrXnmoTkv67mlLnvvIzpgJrluLjov5nkupvkv67mlLnlt7Lnu4/ooqvmlL7liLAtbW3lhoXmoLjkuK3lh6DkuKoKKyAgICDmmJ/mnJ/kuobjgILmj5DkuqTlpKfph4/kv67mlLnnmoTpppbpgInmlrnlvI/mmK/kvb/nlKhnaXTlt6XlhbfvvIjlhoXmoLjnmoTku6PnoIHniYjmnKznrqHnkIblt6XlhbcKKyAgICDvvIzmm7TlpJrnmoTkv6Hmga/lj6/ku6XlnKhodHRwOi8vZ2l0Lm9yLmN6L+iOt+WPlu+8ie+8jOS4jei/h+S9v+eUqOaZrumAmuihpeS4geS5n+aYr+WPr+S7pQorICAgIOeahOOAggorICAtIOS4pOS4quaYn+acn+S7peWQji1yYzHniYjmnKzlhoXmoLjlj5HluIPjgILkuYvlkI7lj6rmnInkuI3ljIXlkKvlj6/og73lvbHlk43mlbTkuKrlhoXmoLjnqLPlrprmgKfnmoQKKyAgICDmlrDlip/og73nmoTooaXkuIHmiY3lj6/og73ooqvmjqXlj5fjgILor7fms6jmhI/kuIDkuKrlhajmlrDnmoTpqbHliqjnqIvluo/vvIjmiJbogIXmlofku7bns7vnu5/vvInmnIkKKyAgICDlj6/og73lnKgtcmMx5ZCO6KKr5o6l5Y+X5piv5Zug5Li66L+Z5qC355qE5L+u5pS55a6M5YWo54us56uL77yM5LiN5Lya5b2x5ZON5YW25LuW55qE5Luj56CB77yM5omA5LulCisgICAg5rKh5pyJ6YCg5oiQ5YaF5qC46YCA5q2l55qE6aOO6Zmp44CC5ZyoLXJjMeS7peWQjuS5n+WPr+S7peeUqGdpdOWQkUxpbnVz5o+Q5Lqk6KGl5LiB77yM5LiN6L+H5omACisgICAg5pyJ55qE6KGl5LiB6ZyA6KaB5ZCM5pe26KKr5Y+R6YCB5Yiw55u45bqU55qE5YWs5LyX6YKu5Lu25YiX6KGo5Lul5b6B6K+i5oSP6KeB44CCCisgIC0g5b2TTGludXPorqTkuLrlvZPliY3nmoRnaXTmupDnoIHmoJHlt7Lnu4/ovr7liLDkuIDkuKrlkIjnkIblgaXlhajnmoTnirbmgIHotrPku6Xlj5HluIPkvpvkurrmtYvor5UKKyAgICDml7bvvIzkuIDkuKrmlrDnmoQtcmPniYjmnKzlsLHkvJrooqvlj5HluIPjgILorqHliJLmmK/mr4/lkajpg73lj5HluIPmlrDnmoQtcmPniYjmnKzjgIIKKyAgLSDov5nkuKrov4fnqIvkuIDnm7TmjIHnu63kuIvljrvnm7TliLDlhoXmoLjooqvorqTkuLrovr7liLDotrPlpJ/nqLPlrprnmoTnirbmgIHvvIzmjIHnu63ml7bpl7TlpKfmpoLmmK8KKyAgICA25Liq5pif5pyf44CCCisgIC0g5Lul5LiL5Zyw5Z2A6Lef6Liq5LqG5Zyo5q+P5LiqLXJj5Y+R5biD5Lit5Y+R546w55qE6YCA5q2l5YiX6KGo77yaCisgICAgaHR0cDovL2tlcm5lbG5ld2JpZXMub3JnL2tub3duX3JlZ3Jlc3Npb25zCisKK+WFs+S6juWGheaguOWPkeW4g++8jOWAvOW+l+S4gOaPkOeahOaYr0FuZHJldyBNb3J0b27lnKhsaW51eC1rZXJuZWzpgq7ku7bliJfooajkuK3lpoLmmK/or7TvvJoKKwnigJzmsqHmnInkurrnn6XpgZPmlrDlhoXmoLjkvZXml7bkvJrooqvlj5HluIPvvIzlm6DkuLrlj5HluIPmmK/moLnmja7lt7Lnn6VidWfnmoTmg4XlhrXmnaXlhrPlrpoKKwnnmoTvvIzogIzkuI3mmK/moLnmja7kuIDkuKrkuovlhYjliLblrprlpb3nmoTml7bpl7TooajjgILigJ0KKworCisyLjYueC55IC1zdGFibGXvvIjnqLPlrprniYjvvInlhoXmoLjmupDnoIHmoJEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCivnlLE05Liq5pWw5a2X57uE5oiQ55qE5YaF5qC454mI5pys5Y+36K+05piO5q2k5YaF5qC45pivLXN0YWJsZeeJiOacrOOAguWug+S7rOWMheWQq+WfuuS6jjIuNi5454mI5pysCivlhoXmoLjnmoTnm7jlr7novoPlsI/kuJToh7PlhbPph43opoHnmoTkv67ooaXvvIzov5nkupvkv67ooaXpkojlr7nlronlhajmgKfpl67popjmiJbogIXkuKXph43nmoTlhoXmoLjpgIDmraXjgIIKKwor6L+Z56eN54mI5pys55qE5YaF5qC46YCC55So5LqO6YKj5Lqb5pyf5pyb6I635b6X5pyA5paw55qE56iz5a6a54mI5YaF5qC45bm25LiU5LiN5oOz5Y+C5LiO5rWL6K+V5byA5Y+R54mI5oiWCivogIXlrp7pqozniYjnmoTnlKjmiLfjgIIKKwor5aaC5p6c5rKh5pyJMi42LngueeeJiOacrOWGheaguOWtmOWcqO+8jOmCo+S5iOacgOaWsOeahDIuNi5454mI5pys5YaF5qC45bCx55u45b2T5LqO5piv5b2T5YmN55qE56iz5a6aCivniYjlhoXmoLjjgIIKKworMi42LngueeeJiOacrOeUseKAnOeos+WumueJiOKAneWwj+e7hO+8iOmCruS7tuWcsOWdgDxzdGFibGVAdmdlci5rZXJuZWwub3JnPu+8iee7tOaKpO+8jOS4gOiIrOmalOWRqOWPkQor5biD5paw54mI5pys44CCCisKK+WGheaguOa6kOeggeS4reeahERvY3VtZW50YXRpb24vc3RhYmxlX2tlcm5lbF9ydWxlcy50eHTmlofku7blhbfkvZPmj4/ov7Dkuoblj6/ooqvnqLPlrpoKK+eJiOWGheaguOaOpeWPl+eahOS/ruaUueexu+Wei+S7peWPiuWPkeW4g+eahOa1geeoi+OAggorCisKKzIuNi54IC1naXTooaXkuIHpm4YKKy0tLS0tLS0tLS0tLS0tLS0KK0xpbnVz55qE5YaF5qC45rqQ56CB5qCR55qE5q+P5pel5b+r54Wn77yM6L+Z5Liq5rqQ56CB5qCR5piv55SxZ2l05bel5YW3566h55CG55qE77yI55Sx5q2k5b6X5ZCN77yJ44CC6L+ZCivkupvooaXkuIHpgJrluLjmr4/lpKnmm7TmlrDku6Xlj43mmKBMaW51c+eahOa6kOeggeagkeeahOacgOaWsOeKtuaAgeOAguWug+S7rOavlC1yY+eJiOacrOeahOWGheaguOa6kOeggQor5qCR5pu05YW36K+V6aqM5oCn6LSo77yM5Zug5Li66L+Z5Liq6KGl5LiB6ZuG5piv5YWo6Ieq5Yqo55Sf5oiQ55qE77yM5rKh5pyJ5Lu75L2V5Lq65p2l56Gu6K6k5YW25piv5ZCm55yf5q2jCivlgaXlhajjgIIKKworCisyLjYueCAtbW3ooaXkuIHpm4YKKy0tLS0tLS0tLS0tLS0tLQor6L+Z5piv55SxQW5kcmV3IE1vcnRvbue7tOaKpOeahOivlemqjOaAp+WGheaguOihpeS4gembhuOAgkFuZHJld+WwhuaJgOacieWtkOezu+e7n+eahOWGheaguOa6kOeggQor5ZKM6KGl5LiB5ou85YeR5Yiw5LiA6LW377yM5bm25LiU5Yqg5YWl5LqG5aSn6YeP5LuObGludXgta2VybmVs6YKu5Lu25YiX6KGo5Lit6YeH6ZuG55qE6KGl5LiB44CC6L+Z5LiqCivmupDnoIHmoJHmmK/mlrDlip/og73lkozooaXkuIHnmoTor5XngrzlnLrjgILlvZPooaXkuIHlnKgtbW3ooaXkuIHpm4bph4zor4HmmI7kuoblhbbku7flgLzku6XlkI5BbmRyZXcKK+aIluiAheebuOW6lOWtkOezu+e7n+eahOe7tOaKpOiAheS8muWwhuihpeS4geWPkee7mUxpbnVz5Lul5L6/6ZuG5oiQ6L+b5Li75YaF5qC45rqQ56CB5qCR44CCCisKK+WcqOWwhuaJgOacieaWsOihpeS4geWPkee7mUxpbnVz5Lul6ZuG5oiQ5Yiw5Li75YaF5qC45rqQ56CB5qCR5LmL5YmN77yM5oiR5Lus6Z2e5bi46byT5Yqx5YWI5oqK6L+Z5Lqb6KGlCivkuIHmlL7lnKgtbW3niYjlhoXmoLjmupDnoIHmoJHkuK3ov5vooYzmtYvor5XjgIIKKwor6L+Z5Lqb5YaF5qC454mI5pys5LiN6YCC5ZCI5Zyo6ZyA6KaB56iz5a6a6L+Q6KGM55qE57O757uf5LiK6L+Q6KGM77yM5Zug5Li66L+Q6KGM5a6D5Lus5q+U6L+Q6KGM5Lu75L2V5YW25LuWCivlhoXmoLjliIbmlK/pg73mm7TlhbfmnInpo47pmanjgIIKKwor5aaC5p6c5L2g5oOz5Li65YaF5qC45byA5Y+R6L+b56iL5o+Q5L6b5biu5Yqp77yM6K+35bCd6K+V5bm25L2/55So6L+Z5Lqb5YaF5qC454mI5pys77yM5bm25ZyoCitsaW51eC1rZXJuZWzpgq7ku7bliJfooajkuK3mj5Dkvpvlj43ppojvvIzlkYror4nlpKflrrbkvaDpgYfliLDkuobpl67popjov5jmmK/kuIDliIfmraPluLjjgIIKKwor6YCa5bi4LW1t54mI6KGl5LiB6ZuG5LiN5YWJ5YyF5ous6L+Z5Lqb6aKd5aSW55qE6K+V6aqM5oCn6KGl5LiB77yM6L+Y5YyF5ous5Y+R5biD5pe2LWdpdOeJiOS4u+a6kOeggeagkQor5Lit55qE5pS55Yqo44CCCisKKy1tbeeJiOWGheaguOayoeacieWbuuWumueahOWPkeW4g+WRqOacn++8jOS9huaYr+mAmuW4uOWcqOavj+S4pOS4qi1yY+eJiOWGheaguOWPkeW4g+S5i+mXtOmDveS8muacieiLpeW5sgor5LiqLW1t54mI5YaF5qC45Y+R5biD77yI5LiA6Iis5pivMeiHszPkuKrvvInjgIIKKworCivlrZDns7vnu5/nm7jlhbPlhoXmoLjmupDnoIHmoJHlkozooaXkuIHpm4YKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK+ebuOW9k+S4gOmDqOWIhuWGheaguOWtkOezu+e7n+W8gOWPkeiAheS8muWFrOW8gOS7luS7rOiHquW3seeahOW8gOWPkea6kOeggeagke+8jOS7peS+v+WFtuS7luS6uuiDveS6huino+WGhQor5qC455qE5LiN5ZCM6aKG5Z+f5q2j5Zyo5Y+R55Sf55qE5LqL5oOF44CC5aaC5LiK5omA6L+w77yM6L+Z5Lqb5rqQ56CB5qCR5Lya6KKr6ZuG5oiQ5YiwLW1t54mI5pys5YaF5qC45Lit44CCCisKK+S4i+mdouaYr+ebruWJjeWPr+eUqOeahOS4gOS6m+WGheaguOa6kOeggeagkeeahOWIl+ihqO+8mgorICDpgJrov4dnaXTnrqHnkIbnmoTmupDnoIHmoJHvvJoKKyAgICAtIEtidWlsZOW8gOWPkea6kOeggeagke+8jCBTYW0gUmF2bmJvcmcgPHNhbUByYXZuYm9yZy5vcmc+CisJZ2l0Lmtlcm5lbC5vcmc6L3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9zYW0va2J1aWxkLmdpdAorCisgICAgLSBBQ1BJ5byA5Y+R5rqQ56CB5qCRLCBMZW4gQnJvd24gPGxlbi5icm93bkBpbnRlbC5jb20+CisJZ2l0Lmtlcm5lbC5vcmc6L3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9sZW5iL2xpbnV4LWFjcGktMi42LmdpdAorCisgICAgLSDlnZforr7lpIflvIDlj5HmupDnoIHmoJEsIEplbnMgQXhib2UgPGF4Ym9lQHN1c2UuZGU+CisJZ2l0Lmtlcm5lbC5vcmc6L3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9heGJvZS9saW51eC0yLjYtYmxvY2suZ2l0CisKKyAgICAtIERSTeW8gOWPkea6kOeggeagkSwgRGF2ZSBBaXJsaWUgPGFpcmxpZWRAbGludXguaWU+CisJZ2l0Lmtlcm5lbC5vcmc6L3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9haXJsaWVkL2RybS0yLjYuZ2l0CisKKyAgICAtIGlhNjTlvIDlj5HmupDnoIHmoJEsIFRvbnkgTHVjayA8dG9ueS5sdWNrQGludGVsLmNvbT4KKwlnaXQua2VybmVsLm9yZzovcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2FlZ2wvbGludXgtMi42LmdpdAorCisgICAgLSBpZWVlMTM5NOW8gOWPkea6kOeggeagkSwgSm9keSBNY0ludHlyZSA8c2Nqb2R5QG1vZGVybmR1Y2suY29tPgorCWdpdC5rZXJuZWwub3JnOi9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvc2Nqb2R5L2llZWUxMzk0LmdpdAorCisgICAgLSBpbmZpbmliYW5k5byA5Y+R5rqQ56CB5qCRLCBSb2xhbmQgRHJlaWVyIDxyb2xhbmRkQGNpc2NvLmNvbT4KKwlnaXQua2VybmVsLm9yZzovcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3JvbGFuZC9pbmZpbmliYW5kLmdpdAorCisgICAgLSBsaWJhdGHlvIDlj5HmupDnoIHmoJEsIEplZmYgR2FyemlrIDxqZ2FyemlrQHBvYm94LmNvbT4KKwlnaXQua2VybmVsLm9yZzovcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2pnYXJ6aWsvbGliYXRhLWRldi5naXQKKworICAgIC0g572R57uc6amx5Yqo56iL5bqP5byA5Y+R5rqQ56CB5qCRLCBKZWZmIEdhcnppayA8amdhcnppa0Bwb2JveC5jb20+CisJZ2l0Lmtlcm5lbC5vcmc6L3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9qZ2FyemlrL25ldGRldi0yLjYuZ2l0CisKKyAgICAtIHBjbWNpYeW8gOWPkea6kOeggeagkSwgRG9taW5payBCcm9kb3dza2kgPGxpbnV4QGRvbWluaWticm9kb3dza2kubmV0PgorCWdpdC5rZXJuZWwub3JnOi9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvYnJvZG8vcGNtY2lhLTIuNi5naXQKKworICAgIC0gU0NTSeW8gOWPkea6kOeggeagkSwgSmFtZXMgQm90dG9tbGV5IDxKYW1lcy5Cb3R0b21sZXlAU3RlZWxFeWUuY29tPgorCWdpdC5rZXJuZWwub3JnOi9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvamVqYi9zY3NpLW1pc2MtMi42LmdpdAorCisgIOS9v+eUqHF1aWx0566h55CG55qE6KGl5LiB6ZuG77yaCisgICAgLSBVU0IsIFBDSSwg6amx5Yqo56iL5bqP5qC45b+D5ZKMSTJDLCBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgorCWtlcm5lbC5vcmcvcHViL2xpbnV4L2tlcm5lbC9wZW9wbGUvZ3JlZ2toL2dyZWdraC0yLjYvCisgICAgLSB4ODYtNjQsIOmDqOWIhmkzODYsIEFuZGkgS2xlZW4gPGFrQHN1c2UuZGU+CisJZnRwLmZpcnN0Zmxvb3Iub3JnOi9wdWIvYWsveDg2XzY0L3F1aWx0LworCisgIOWFtuS7luWGheaguOa6kOeggeagkeWPr+S7peWcqGh0dHA6Ly9naXQua2VybmVsLm9yZ+eahOWIl+ihqOS4reWSjE1BSU5UQUlORVJT5paH5Lu26YeMCisgIOaJvuWIsOOAggorCivmiqXlkYpidWcKKy0tLS0tLS0KKworYnVnemlsbGEua2VybmVsLm9yZ+aYr0xpbnV45YaF5qC45byA5Y+R6ICF5Lus55So5p2l6Lef6Liq5YaF5qC4QnVn55qE572R56uZ44CC5oiR5Lus6byT5Yqx55SoCivmiLflnKjov5nkuKrlt6XlhbfkuK3miqXlkYrmib7liLDnmoTmiYDmnIlidWfjgILlpoLkvZXkvb/nlKjlhoXmoLhidWd6aWxsYeeahOe7huiKguivt+iuv+mXru+8mgorCWh0dHA6Ly90ZXN0Lmtlcm5lbC5vcmcvYnVnemlsbGEvZmFxLmh0bWwKKwor5YaF5qC45rqQ56CB5Li755uu5b2V5Lit55qEUkVQT1JUSU5HLUJVR1Pmlofku7bph4zmnInkuIDkuKrlvojlpb3nmoTmqKHmnb/jgILlroPmjIflr7znlKjmiLflpoLkvZXmiqUKK+WRiuWPr+iDveeahOWGheaguGJ1Z+S7peWPiumcgOimgeaPkOS+m+WTquS6m+S/oeaBr+adpeW4ruWKqeWGheaguOW8gOWPkeiAheS7rOaJvuWIsOmXrumimOeahOaguea6kOOAggorCisKK+WIqeeUqGJ1Z+aKpeWRigorLS0tLS0tLS0tLS0KKwor57uD5Lmg5YaF5qC45byA5Y+R5oqA6IO955qE5pyA5aW95Yqe5rOV5bCx5piv5L+u5pS55YW25LuW5Lq65oql5ZGK55qEYnVn44CC5L2g5LiN5YWJ5Y+v5Lul5biu5Yqp5YaF5qC45Y+YCivlvpfmm7TliqDnqLPlrprvvIzov5jlj6/ku6XlrabkvJrlpoLkvZXop6PlhrPlrp7pmYXpl67popjku47ogIzmj5Dpq5joh6rlt7HnmoTmioDog73vvIzlubbkuJTorqnlhbbku5blvIDlj5EKK+iAheaEn+WPl+WIsOS9oOeahOWtmOWcqOOAguS/ruaUuWJ1Z+aYr+i1ouW+l+WFtuS7luW8gOWPkeiAhei1nuiqieeahOacgOWlveWKnuazle+8jOWboOS4uuW5tuS4jeaYr+W+iOWkmgor5Lq66YO95Zac5qyi5rWq6LS55pe26Ze05Y675L+u5pS55Yir5Lq65oql5ZGK55qEYnVn44CCCisKK+imgeWwneivleS/ruaUueW3suefpeeahGJ1Z++8jOivt+iuv+mXrmh0dHA6Ly9idWd6aWxsYS5rZXJuZWwub3Jn572R5Z2A44CC5aaC5p6c5L2g5oOz6I635b6XCivmnIDmlrBidWfnmoTpgJrnn6XvvIzlj6/ku6XorqLpmIVidWdtZS1uZXfpgq7ku7bliJfooajvvIjlj6rmnInmlrDnmoRidWfmiqXlkYrkvJrooqvlr4TliLDov5nph4zvvIkKK+aIluiAheiuoumYhWJ1Z21lLWphbml0b3Lpgq7ku7bliJfooajvvIjmiYDmnIlidWd6aWxsYeeahOWPmOWKqOmDveS8muiiq+WvhOWIsOi/memHjO+8ieOAggorCisJaHR0cHM6Ly9saXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2J1Z21lLW5ldworCWh0dHBzOi8vbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9idWdtZS1qYW5pdG9ycworCisKK+mCruS7tuWIl+ihqAorLS0tLS0tLS0KKwor5q2j5aaC5LiK6Z2i55qE5paH5qGj5omA5o+P6L+w77yM5aSn5aSa5pWw55qE6aqo5bmy5YaF5qC45byA5Y+R6ICF6YO95Yqg5YWl5LqGTGludXggS2VybmVs6YKu5Lu25YiXCivooajjgILlpoLkvZXorqLpmIXlkozpgIDorqLliJfooajnmoTnu4boioLlj6/ku6XlnKjov5nph4zmib7liLDvvJoKKwlodHRwOi8vdmdlci5rZXJuZWwub3JnL3ZnZXItbGlzdHMuaHRtbCNsaW51eC1rZXJuZWwKK+e9keS4iuW+iOWkmuWcsOaWuemDveaciei/meS4qumCruS7tuWIl+ihqOeahOWtmOahoyhhcmNoaXZlKeOAguWPr+S7peS9v+eUqOaQnOe0ouW8leaTjuadpeaJvuWIsOi/meS6mwor5a2Y5qGj44CC5q+U5aaC77yaCisJaHR0cDovL2Rpci5nbWFuZS5vcmcvZ21hbmUubGludXgua2VybmVsCivlnKjlj5Hkv6HkuYvliY3vvIzmiJHku6zlvLrng4jlu7rorq7kvaDlhYjlnKjlrZjmoaPkuK3mkJzntKLkvaDmg7PopoHorqjorrrnmoTpl67popjjgILlvojlpJrlt7Lnu4/ooqvor6bnu4YKK+iuqOiuuui/h+eahOmXrumimOWPquWcqOmCruS7tuWIl+ihqOeahOWtmOaho+S4reWPr+S7peaJvuWIsOOAggorCivlpKflpJrmlbDlhoXmoLjlrZDns7vnu5/kuZ/mnInoh6rlt7Hni6znq4vnmoTpgq7ku7bliJfooajmnaXljY/osIPlkIToh6rnmoTlvIDlj5Hlt6XkvZzjgILku44KK01BSU5UQUlORVJT5paH5Lu25Lit5Y+v5Lul5om+5Yiw5LiN5ZCM6K+d6aKY5a+55bqU55qE6YKu5Lu25YiX6KGo44CCCisKK+W+iOWkmumCruS7tuWIl+ihqOaetuiuvuWcqGtlcm5lbC5vcmfmnI3liqHlmajkuIrjgILov5nkupvliJfooajnmoTkv6Hmga/lj6/ku6XlnKjov5nph4zmib7liLDvvJoKKwlodHRwOi8vdmdlci5rZXJuZWwub3JnL3ZnZXItbGlzdHMuaHRtbAorCivlnKjkvb/nlKjov5nkupvpgq7ku7bliJfooajml7bvvIzor7forrDkvY/kv53mjIHoia/lpb3nmoTooYzkuLrkuaDmg6/jgILkuIvpnaLnmoTpk77mjqXmj5DkvpvkuobkuI7ov5nkupvliJcKK+ihqO+8iOaIluS7u+S9leWFtuWug+mCruS7tuWIl+ihqO+8ieS6pOa1geeahOS4gOS6m+eugOWNleinhOWIme+8jOiZveeEtuWGheWuueacieeCuea7peerveWFheaVsOOAggorCWh0dHA6Ly93d3cuYWxiaW9uLmNvbS9uZXRpcXVldHRlLworCivlvZPmnInlvojlpJrkurrlm57lpI3kvaDnmoTpgq7ku7bml7bvvIzpgq7ku7bnmoTmioTpgIHliJfooajkvJrlj5jlvpflvojplb/jgILor7fkuI3opoHlsIbku7vkvZXkurrku47mioTpgIEKK+WIl+ihqOS4reWIoOmZpO+8jOmZpOmdnuS9oOaciei2s+Wkn+eahOeQhueUsei/meS5iOWBmuOAguS5n+S4jeimgeWPquWbnuWkjeWIsOmCruS7tuWIl+ihqOOAguivt+S5oOaDr+S6juWQjAor5LiA5bCB6YKu5Lu25o6l5pS25Lik5qyh77yI5LiA5bCB5p2l6Ieq5Y+R6YCB6ICF5LiA5bCB5p2l6Ieq6YKu5Lu25YiX6KGo77yJ77yM6ICM5LiN6KaB6K+V5Zu+6YCa6L+H5re75Yqg5LiACivkupvlpYfnibnnmoTpgq7ku7blpLTmnaXop6PlhrPov5nkuKrpl67popjvvIzkurrku6zkuI3kvJrllpzmrKLnmoTjgIIKKwor6K6w5L2P5L+d55WZ5L2g5omA5Zue5aSN5YaF5a6555qE5LiK5LiL5paH5ZKM5rqQ5aS044CC5Zyo5L2g5Zue5aSN6YKu5Lu255qE6aG26YOo5L+d55WZ4oCc5p+Q5p+Q5p+Q6K+05Yiw4oCm4oCm4oCdCivov5nlh6DooYzjgILlsIbkvaDnmoTor4TorrrliqDlnKjooqvlvJXnlKjnmoTmrrXokL3kuYvpl7TogIzkuI3opoHmlL7lnKjpgq7ku7bnmoTpobbpg6jjgIIKKwor5aaC5p6c5L2g5Zyo6YKu5Lu25Lit6ZmE5bim6KGl5LiB77yM6K+356Gu6K6k5a6D5Lus5piv5Y+v5Lul55u05o6l6ZiF6K+755qE57qv5paH5pys77yI5aaCCitEb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVz5paH5qGj5Lit5omA6L+w77yJ44CC5YaF5qC45byA5Y+R6ICF5Lus5LiN5biM5pyb6YGH5Yiw6ZmE5Lu2CivmiJbogIXooqvljovnvKnkuobnmoTooaXkuIHjgILlj6rmnInov5nmoLfmiY3og73kv53or4Hku5bku6zlj6/ku6Xnm7TmjqXor4TorrrkvaDnmoTmr4/ooYzku6PnoIHjgILor7fnoa7kv50KK+S9oOS9v+eUqOeahOmCruS7tuWPkemAgeeoi+W6j+S4jeS8muS/ruaUueepuuagvOWSjOWItuihqOespuOAguS4gOS4qumYsuiMg+aAp+eahOa1i+ivleaWueazleaYr+WFiOWwhumCruS7tgor5Y+R6YCB57uZ6Ieq5bex77yM54S25ZCO6Ieq5bex5bCd6K+V5piv5ZCm5Y+v5Lul6aG65Yip5Zyw5omT5LiK5pS25Yiw55qE6KGl5LiB44CC5aaC5p6c5rWL6K+V5LiN5oiQ5Yqf77yM6K+3CivosIPmlbTmiJbogIXmm7TmjaLkvaDnmoTpgq7ku7blj5HpgIHnqIvluo/nm7TliLDlroPmraPnoa7lt6XkvZzkuLrmraLjgIIKKwor5oC76ICM6KiA5LmL77yM6K+35bCK6YeN5YW25LuW55qE6YKu5Lu25YiX6KGo6K6i6ZiF6ICF44CCCisKKwor5ZCM5YaF5qC456S+5Yy65ZCI5L2cCistLS0tLS0tLS0tLS0tLS0tCisKK+WGheaguOekvuWMuueahOebruagh+WwseaYr+aPkOS+m+WwveWWhOWwvee+jueahOWGheaguOOAguaJgOS7peW9k+S9oOaPkOS6pOihpeS4geacn+acm+iiq+aOpeWPl+i/m+WGheaguOeahAor5pe25YCZ77yM5a6D55qE5oqA5pyv5Lu35YC85Lul5Y+K5YW25LuW5pa56Z2i6YO95bCG6KKr6K+E5a6h44CC6YKj5LmI5L2g5Y+v6IO95Lya5b6X5Yiw5LuA5LmI5ZGi77yfCisgIC0g5om56K+ECisgIC0g6K+E6K66CisgIC0g6KaB5rGC5L+u5pS5CisgIC0g6KaB5rGC6K+B5piO5L+u5pS555qE5b+F6KaB5oCnCisgIC0g5rKJ6buYCisKK+imgeiusOS9j++8jOi/meS6m+aYr+aKiuihpeS4geaUvui/m+WGheaguOeahOato+W4uOaDheWGteOAguS9oOW/hemhu+WtpuS8muWQrOWPluWvueihpeS4geeahOaJueivhOWSjOivhOiuuu+8jAor5LuO5oqA5pyv5bGC6Z2i6K+E5Lyw5a6D5Lus77yM54S25ZCO6KaB5LmI6YeN5YaZ5L2g55qE6KGl5LiB6KaB5LmI566A5piO5om86KaB5Zyw6K666K+B5L+u5pS55piv5LiN5b+F6KaBCivnmoTjgILlpoLmnpzkvaDlj5HnmoTpgq7ku7bmsqHmnInlvpfliLDku7vkvZXlm57lupTvvIzor7fov4flh6DlpKnlkI7lho3or5XkuIDmrKHvvIzlm6DkuLrmnInml7bkv6Hku7bkvJrmua4KK+ayoeWcqOiMq+iMq+S/oea1t+S4reOAggorCivkvaDkuI3lupTor6XlgZrnmoTkuovmg4XvvJoKKyAgLSDmnJ/mnJvoh6rlt7HnmoTooaXkuIHkuI3lj5fku7vkvZXotKjnlpHlsLHnm7TmjqXooqvmjqXlj5cKKyAgLSDnv7vohLgKKyAgLSDlv73nlaXliKvkurrnmoTor4TorroKKyAgLSDmsqHmnInmjInnhafliKvkurrnmoTopoHmsYLlgZrku7vkvZXkv67mlLnlsLHph43mlrDmj5DkuqQKKwor5Zyo5LiA5Liq5Yqq5Yqb6L+95a+75pyA5aW95oqA5pyv5pa55qGI55qE56S+5Yy66YeM77yM5a+55LqO5LiA5Liq6KGl5LiB5pyJ5aSa5bCR5aW95aSE5oC75Lya5pyJ5LiN5ZCM55qE6KeBCivop6PjgILkvaDlv4XpobvopoHmirHnnYDlkIjkvZznmoTmgIHluqbvvIzmhL/mhI/mlLnlj5joh6rlt7HnmoTop4LngrnmnaXpgILlupTlhoXmoLjnmoTpo47moLzjgILmiJbogIXoh7PlsJEKK+aEv+aEj+WOu+ivgeaYjuS9oOeahOaDs+azleaYr+acieS7t+WAvOeahOOAguiusOS9j++8jOeKr+mUmeivr+aYr+WFgeiuuOeahO+8jOWPquimgeS9oOaEv+aEj+acneedgOato+ehrueahAor5pa55qGI5Y675Yqq5Yqb44CCCisKK+WmguaenOS9oOeahOesrOS4gOS4quihpeS4geaNouadpeeahOaYr+S4gOWghuS/ruaUueW7uuiuru+8jOi/meaYr+W+iOato+W4uOeahOOAgui/meW5tuS4jeS7o+ihqOS9oOeahOihpeS4gQor5LiN5Lya6KKr5o6l5Y+X77yM5Lmf5LiN5oSP5ZGz552A5pyJ5Lq65ZKM5L2g5L2c5a+544CC5L2g5Y+q6ZyA6KaB5pS55q2j5omA5pyJ5o+Q5Ye655qE6Zeu6aKY54S25ZCO6YeN5paw5Y+RCivpgIHkvaDnmoTooaXkuIHjgIIKKwor5YaF5qC456S+5Yy65ZKM5YWs5Y+45paH5YyW55qE5beu5byCCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor5YaF5qC456S+5Yy655qE5bel5L2c5qih5byP5ZCM5aSn5aSa5pWw5Lyg57uf5YWs5Y+45byA5Y+R6Zif5LyN55qE5bel5L2c5qih5byP5bm25LiN55u45ZCM44CC5LiL6Z2i6L+Z5Lqb5L6LCivlrZDvvIzlj6/ku6XluK7liqnkvaDpgb/lhY3mn5Dkupvlj6/og73lj5HnlJ/pl67popjvvJoKKyAg55So6L+Z5Lqb6K+d5LuL57uN5L2g55qE5L+u5pS55o+Q5qGI5Lya5pyJ5aW95aSE77yaCisgICAgLSDlroPlkIzml7bop6PlhrPkuoblpJrkuKrpl67popgKKyAgICAtIOWug+WIoOmZpOS6hjIwMDDooYzku6PnoIEKKyAgICAtIOi/meaYr+ihpeS4ge+8jOWug+W3sue7j+ino+mHiuS6huaIkeaDs+imgeivtOaYjueahAorICAgIC0g5oiR5ZyoNeenjeS4jeWQjOeahOS9k+ezu+e7k+aehOS4iua1i+ivlei/h+Wug+KApuKApgorICAgIC0g6L+Z5piv5LiA57O75YiX5bCP6KGl5LiB55So5p2l4oCm4oCmCisgICAgLSDov5nkuKrkv67mlLnmj5Dpq5jkuobmma7pgJrmnLrlmajnmoTmgKfog73igKbigKYKKworICDlupTor6Xpgb/lhY3lpoLkuIvnmoTor7Tms5XvvJoKKyAgICAtIOaIkeS7rOWcqEFJWC9wdHgvU29sYXJpc+WwseaYr+i/meS5iOWBmueahO+8jOaJgOS7pei/meS5iOWBmuiCr+WumuaYr+WlveeahOKApuKApgorICAgIC0g5oiR5YGa6L+Z6KGM5bey57uPMjDlubTkuobvvIzmiYDku6XigKbigKYKKyAgICAtIOS4uuS6huaIkeS7rOWFrOWPuOi1mumSseiAg+iZkeW/hemhu+i/meS5iOWBmgorICAgIC0g6L+Z5piv5oiR5Lus55qE5LyB5Lia5Lqn5ZOB57q/5omA6ZyA6KaB55qECisgICAgLSDov5nph4zmmK/mj4/ov7DmiJHop4LngrnnmoQxMDAw6aG16K6+6K6h5paH5qGjCisgICAgLSDov5nmmK/kuIDkuKo1MDAw6KGM55qE6KGl5LiB55So5p2l4oCm4oCmCisgICAgLSDmiJHph43lhpnkuobnjrDlnKjkubHkuIPlhavns5/nmoTku6PnoIHvvIzov5nlsLHmmK/igKbigKYKKyAgICAtIOaIkeiiq+inhOWumuS6huacgOWQjuacn+mZkO+8jOaJgOS7pei/meS4quihpeS4gemcgOimgeeri+WIu+iiq+aOpeWPlworCivlj6blpJbkuIDkuKrlhoXmoLjnpL7ljLrkuI7lpKfpg6jliIbkvKDnu5/lhazlj7jnmoTova/ku7blvIDlj5HpmJ/kvI3kuI3lkIznmoTlnLDmlrnmmK/ml6Dms5XpnaLlr7npnaLlnLDkuqQKK+a1geOAguS9v+eUqOeUteWtkOmCruS7tuWSjElSQ+iBiuWkqeW3peWFt+WBmuS4uuS4u+imgeayn+mAmuW3peWFt+eahOS4gOS4quWlveWkhOaYr+aAp+WIq+WSjOenjeaXj+atp+inhgor5bCG5Lya5pu05bCR44CCTGludXjlhoXmoLjnmoTlt6XkvZznjq/looPmm7Tog73mjqXlj5flpoflpbPlkozlsJHmlbDml4/nvqTvvIzlm6DkuLrmr4/kuKrkurrlnKjliKvkurrnnLwKK+mHjOWPquaYr+S4gOS4qumCruS7tuWcsOWdgOOAguWbvemZheWMluS5n+W4ruWKqeS6huWFrOW5s+eahOWunueOsO+8jOWboOS4uuS9oOaXoOazlemAmui/h+Wnk+WQjeadpeWIpOaWreS6ugor55qE5oCn5Yir44CC55S35Lq65pyJ5Y+v6IO95Y+r5p2O5Li977yM5aWz5Lq65Lmf5pyJ5Y+v6IO95Y+r546L5Yia44CC5aSn5aSa5pWw5ZyoTGludXjlhoXmoLjkuIrlt6XkvZzov4cKK+W5tuihqOi+vui/h+eci+azleeahOWls+aAp+WvueWcqGxpbnV45LiK5bel5L2c55qE57uP5Y6G6YO957uZ5Ye65LqG5q2j6Z2i55qE6K+E5Lu344CCCisKK+WvueS6juS4gOS6m+S4jeS5oOaDr+S9v+eUqOiLseivreeahOS6uuadpeivtO+8jOivreiogOWPr+iDveaYr+S4gOS4quW8lei1t+mXrumimOeahOmanOeijeOAguWcqOmCruS7tuWIl+ihqAor5Lit6KaB5q2j56Gu5Zyw6KGo6L6+5oOz5rOV5b+F6ZyA6Imv5aW95Zyw5o6M5o+h6K+t6KiA77yM5omA5Lul5bu66K6u5L2g5Zyo5Y+R6YCB6YKu5Lu25LmL5YmN5pyA5aW95qOA5p+l5LiACivkuIvoi7HmloflhpnlvpfmmK/lkKbmraPnoa7jgIIKKworCivmi4bliIbkv67mlLkKKy0tLS0tLS0tCisKK0xpbnV45YaF5qC456S+5Yy65bm25LiN5Zac5qyi5LiA5LiL5o6l5pS25aSn5q6155qE5Luj56CB44CC5L+u5pS56ZyA6KaB6KKr5oGw5b2T5Zyw5LuL57uN44CB6K6o6K665bm25LiUCivmi4bliIbmiJDni6znq4vnmoTlsI/mrrXjgILov5nlh6DkuY7lrozlhajlkozlhazlj7jkuK3nmoTkuaDmg6/og4zpgZPogIzpqbDjgILkvaDnmoTmg7Pms5XlupTor6XlnKjlvIDlj5HmnIAKK+W8gOWni+eahOmYtuauteWwseiuqeWkp+WutuefpemBk++8jOi/meagt+S9oOWwseWPr+S7peWPiuaXtuiOt+W+l+WvueS9oOato+WcqOi/m+ihjOeahOW8gOWPkeeahOWPjemmiOOAgui/mQor5qC35Lmf5Lya6K6p56S+5Yy66KeJ5b6X5L2g5piv5Zyo5ZKM5LuW5Lus5Y2P5L2c77yM6ICM5LiN5piv5LuF5LuF5oqK5LuW5Lus5b2T5L2c5YC+6ZSA5paw5Yqf6IO955qE5a+56LGh44CCCivml6DorrrlpoLkvZXvvIzkvaDkuI3opoHkuIDmrKHmgKflnLDlkJHpgq7ku7bliJfooajlj5HpgIE1MOWwgeS/oe+8jOS9oOeahOihpeS4geW6j+WIl+W6lOivpeawuOi/nOeUqOS4jeWIsAor6L+Z5LmI5aSa44CCCisKK+WwhuihpeS4geaLhuW8gOeahOWOn+WboOWmguS4i++8mgorCisxKSDlsI/nmoTooaXkuIHmm7TmnInlj6/og73ooqvmjqXlj5fvvIzlm6DkuLrlroPku6zkuI3pnIDopoHlpKrlpJrnmoTml7bpl7Tlkoznsr7lipvljrvpqozor4HlhbbmraPnoa7mgKfjgIIKKyAgIOS4gOS4qjXooYznmoTooaXkuIHvvIzlj6/og73lnKjnu7TmiqTogIXnnIvkuobkuIDnnLzku6XlkI7lsLHkvJrooqvmjqXlj5fjgILogIw1MDDooYznmoTooaXkuIHliJkKKyAgIOmcgOimgeaVsOS4quWwj+aXtuadpeWuoeafpeWFtuato+ehruaAp++8iOaJgOmcgOaXtumXtOmaj+ihpeS4geWkp+Wwj+WinuWKoOWkp+e6puWRiOaMh+aVsOe6p+WinumVv++8ieOAggorCisgICDlvZPlh7rkuobpl67popjnmoTml7blgJnvvIzlsI/nmoTooaXkuIHkuZ/kvJrorqnosIPor5Xlj5jlvpfpnZ7luLjlrrnmmJPjgILkuIDkuKrkuIDkuKrooaXkuIHlnLDlm57muq8KKyAgIOWwhuS8muavlOS7lOe7huWJluaekOS4gOS4quiiq+aJk+S4iueahOWkp+ihpeS4ge+8iOi/meS4quihpeS4geegtOWdj+S6huWFtuS7luS4nOilv++8ieWuueaYk+W+l+WkmuOAggorCisy77yJ5LiN5YWJ5Y+R6YCB5bCP55qE6KGl5LiB5b6I6YeN6KaB77yM5Zyo5o+Q5Lqk5LmL5YmN6YeN5paw57yW5o6S44CB5YyW566A77yI5oiW6ICF5LuF5LuF6YeN5paw5o6S5YiX77yJCisgICDooaXkuIHkuZ/mmK/lvojph43opoHnmoTjgIIKKwor6L+Z6YeM5pyJ5YaF5qC45byA5Y+R6ICFQWwgVmlyb+aJk+eahOS4gOS4quavlOaWue+8mgorCeKAnOaDs+ixoeS4gOS4quiAgeW4iOato+WcqOe7meWtpueUn+aJueaUueaVsOWtpuS9nOS4muOAguiAgeW4iOW5tuS4jeW4jOacm+eci+WIsOWtpueUn+S4uuS6huW+lworCeWIsOato+ehruino+azleaJgOi/m+ihjOeahOWwneivleWSjOS6p+eUn+eahOmUmeivr+OAguS7luW4jOacm+eci+WIsOeahOaYr+acgOW5suWHgOacgOS8mOmbheeahAorCeino+etlOOAguWlveWtpueUn+S6huino+i/meeCue+8jOe7neS4jeS8muaKiuacgOe7iOino+WGs+S5i+WJjeeahOS4remXtOaWueahiOaPkOS6pOS4iuWOu+OAguKAnQorCisJ5YaF5qC45byA5Y+R5Lmf5piv6L+Z5qC344CC57u05oqk6ICF5ZKM6K+E5a6h6ICF5LiN5biM5pyb55yL5Yiw5LiA5Liq5Lq65Zyo6Kej5Yaz6Zeu6aKY5pe255qE5oCdCisJ6ICD6L+H56iL44CC5LuW5Lus5Y+q5biM5pyb55yL5Yiw566A5Y2V5ZKM5LyY6ZuF55qE6Kej5Yaz5pa55qGI44CCCisKK+ebtOaOpee7meWHuuS4gOa1geeahOino+WGs+aWueahiO+8jOWSjOekvuWMuuS4gOi1t+WNj+S9nOiuqOiuuuWwmuacquWujOaIkOeahOW3peS9nO+8jOi/meS4pOiAheS5i+mXtOS8vOS5jgor5b6I6Zq+5om+5Yiw5LiA5Liq5bmz6KGh54K544CC5omA5Lul5pyA5aW95bC95pep5byA5aeL5pS26ZuG5pyJ5Yip5LqO5L2g6L+b6KGM5pS56L+b55qE5Y+N6aaI77yb5ZCM5pe25Lmf6KaBCivkv53or4Hkv67mlLnliIbmiJDlvojlpJrlsI/lnZfvvIzov5nmoLflnKjmlbTkuKrpobnnm67pg73lh4blpIflpb3ooqvljIXlkKvov5vlhoXmoLjkuYvliY3vvIzlhbbkuK3nmoTkuIDpg6gKK+WIhuWPr+iDveS8muWFiOiiq+aOpeaUtuOAggorCivlv4Xpobvkuobop6Pov5nmoLflgZrmmK/kuI3lj6/mjqXlj5fnmoTvvJror5Xlm77lsIbmnKrlrozmiJDnmoTlt6XkvZzmj5DkuqTov5vlhoXmoLjvvIznhLblkI7lho3mib7ml7bpl7Tkv64KK+WkjeOAggorCisKK+ivgeaYjuS/ruaUueeahOW/heimgeaApworLS0tLS0tLS0tLS0tLS0tLQor6Zmk5LqG5bCG6KGl5LiB5ouG5oiQ5bCP5Z2X77yM5b6I6YeN6KaB55qE5LiA54K55piv6K6pTGludXjnpL7ljLrkuobop6Pku5bku6zkuLrku4DkuYjpnIDopoHov5nmoLfkv67mlLnjgIIKK+S9oOW/hemhu+ivgeaYjuaWsOWKn+iDveaYr+acieS6uumcgOimgeeahOW5tuS4lOaYr+acieeUqOeahOOAggorCisKK+iusOW9leS/ruaUuQorLS0tLS0tLS0KKwor5b2T5L2g5Y+R6YCB6KGl5LiB55qE5pe25YCZ77yM6ZyA6KaB54m55Yir55WZ5oSP6YKu5Lu25q2j5paH55qE5YaF5a6544CC5Zug5Li66L+Z6YeM55qE5L+h5oGv5bCG5Lya5YGa5Li66KGlCivkuIHnmoTkv67mlLnorrDlvZUoQ2hhbmdlTG9nKe+8jOS8muiiq+S4gOebtOS/neeVmeS7peWkh+Wkp+WutuafpemYheOAguWug+mcgOimgeWujOWFqOWcsOaPj+i/sOihpeS4ge+8jAor5YyF5ous77yaCisgIC0g5Li65LuA5LmI6ZyA6KaB6L+Z5Liq5L+u5pS5CisgIC0g6KGl5LiB55qE5oC75L2T6K6+6K6hCisgIC0g5a6e546w57uG6IqCCisgIC0g5rWL6K+V57uT5p6cCisKK+aDs+S6huino+Wug+WFt+S9k+W6lOivpeeci+i1t+adpeWDj+S7gOS5iO+8jOivt+afpemYheS7peS4i+aWh+aho+S4reeahOKAnENoYW5nZUxvZ+KAneeroOiKgu+8mgorICDigJxUaGUgUGVyZmVjdCBQYXRjaOKAnQorICAJIGh0dHA6Ly93d3cub3psYWJzLm9yZy9+YWtwbS9zdHVmZi90cHAudHh0CisKKwor6L+Z5Lqb5LqL5oOF5pyJ5pe25YCZ5YGa6LW35p2l5b6I6Zq+44CC6KaB5Zyo5Lu75L2V5pa56Z2i6YO95YGa5Yiw5a6M576O5Y+v6IO96ZyA6KaB5aW95Yeg5bm05pe26Ze044CC6L+Z5pivCivkuIDkuKrmjIHnu63mj5Dpq5jnmoTov4fnqIvvvIzlroPpnIDopoHlpKfph4/nmoTogJDlv4PlkozlhrPlv4PjgILlj6ropoHkuI3mlL7lvIPvvIzkvaDkuIDlrprlj6/ku6XlgZrliLDjgIIKK+W+iOWkmuS6uuW3sue7j+WBmuWIsOS6hu+8jOiAjOS7luS7rOmDveabvue7j+WSjOeOsOWcqOeahOS9oOermeWcqOWQjOagt+eahOi1t+eCueS4iuOAggorCisKKy0tLS0tLS0tLS0tLS0tLQor5oSf6LCiUGFvbG8gQ2lhcnJvY2NoaeWFgeiuuOKAnOW8gOWPkea1geeoi+KAnemDqOWIhuWfuuS6juS7luaJgOWGmeeahOaWh+eroAorKGh0dHA6Ly93d3cua2VybmVsdHJhdmVsLm5ldC9uZXdiaWUvMi42LWRldmVsb3BtZW50X3Byb2Nlc3Mp77yM5oSf6LCiUmFuZHkKK0R1bmxhcOWSjEdlcnJpdCBIdWl6ZW5nYeWujOWWhOS6huW6lOivpeivtOWSjOS4jeivpeivtOeahOWIl+ihqOOAguaEn+iwolBhdCBNb2NoZWwsIEhhbm5hCitMaW5kZXIsIFJhbmR5IER1bmxhcCwgS2F5IFNpZXZlcnMsIFZvanRlY2ggUGF2bGlrLCBKYW4gS2FyYSwgSm9zaCBCb3llciwKK0tlZXMgQ29vaywgQW5kcmV3IE1vcnRvbiwgQW5kaSBLbGVlbiwgVmFkaW0gTG9iYW5vdiwgSmVzcGVyIEp1aGwsIEFkcmlhbgorQnVuaywgS2VyaSBIYXJyaXMsIEZyYW5zIFBvcCwgRGF2aWQgQS4gV2hlZWxlciwgSnVuaW8gSGFtYW5vLCBNaWNoYWVsCitLZXJyaXNr5ZKMQWxleCBTaGVwYXJk55qE6K+E5a6h44CB5bu66K6u5ZKM6LSh54yu44CC5rKh5pyJ5LuW5Lus55qE5biu5Yqp77yM6L+Z56+H5paH5qGj5piv5LiN5Y+vCivog73lrozmiJDnmoTjgIIKKworCisKK+iLseaWh+eJiOe7tOaKpOiAhe+8miBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdAa3JvYWguY29tPgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi96aF9DTi9JUlEudHh0IGIvRG9jdW1lbnRhdGlvbi96aF9DTi9JUlEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1NjAyNmQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3poX0NOL0lSUS50eHQKQEAgLTAsMCArMSwzOSBAQAorQ2hpbmVzZSB0cmFuc2xhdGVkIHZlcnNpb24gb2YgRG9jdW1lbnRhdGlvbi9JUlEudHh0CisKK0lmIHlvdSBoYXZlIGFueSBjb21tZW50IG9yIHVwZGF0ZSB0byB0aGUgY29udGVudCwgcGxlYXNlIGNvbnRhY3QgdGhlCitvcmlnaW5hbCBkb2N1bWVudCBtYWludGFpbmVyIGRpcmVjdGx5LiAgSG93ZXZlciwgaWYgeW91IGhhdmUgYSBwcm9ibGVtCitjb21tdW5pY2F0aW5nIGluIEVuZ2xpc2ggeW91IGNhbiBhbHNvIGFzayB0aGUgQ2hpbmVzZSBtYWludGFpbmVyIGZvcgoraGVscC4gIENvbnRhY3QgdGhlIENoaW5lc2UgbWFpbnRhaW5lciBpZiB0aGlzIHRyYW5zbGF0aW9uIGlzIG91dGRhdGVkCitvciBpZiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgdHJhbnNsYXRpb24uCisKK01haW50YWluZXI6IEVyaWMgVy4gQmllZGVybWFuIDxlYmllZGVybWFuQHhtaXNzaW9uLmNvbT4KK0NoaW5lc2UgbWFpbnRhaW5lcjogRnUgV2VpIDx0ZWtrYW1hbm5pbmphQGdtYWlsLmNvbT4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRG9jdW1lbnRhdGlvbi9JUlEudHh0IOeahOS4reaWh+e/u+ivkQorCivlpoLmnpzmg7Por4TorrrmiJbmm7TmlrDmnKzmlofnmoTlhoXlrrnvvIzor7fnm7TmjqXogZTns7vljp/mlofmoaPnmoTnu7TmiqTogIXjgILlpoLmnpzkvaDkvb/nlKjoi7HmlocKK+S6pOa1geacieWbsOmavueahOivne+8jOS5n+WPr+S7peWQkeS4reaWh+eJiOe7tOaKpOiAheaxguWKqeOAguWmguaenOacrOe/u+ivkeabtOaWsOS4jeWPiuaXtuaIluiAhee/uwor6K+R5a2Y5Zyo6Zeu6aKY77yM6K+36IGU57O75Lit5paH54mI57u05oqk6ICF44CCCivoi7HmlofniYjnu7TmiqTogIXvvJogRXJpYyBXLiBCaWVkZXJtYW4gPGViaWVkZXJtYW5AeG1pc3Npb24uY29tPgor5Lit5paH54mI57u05oqk6ICF77yaIOWCheeCnCBGdSBXZWkgPHRla2thbWFubmluamFAZ21haWwuY29tPgor5Lit5paH54mI57+76K+R6ICF77yaIOWCheeCnCBGdSBXZWkgPHRla2thbWFubmluamFAZ21haWwuY29tPgor5Lit5paH54mI5qCh6K+R6ICF77yaIOWCheeCnCBGdSBXZWkgPHRla2thbWFubmluamFAZ21haWwuY29tPgorCisKK+S7peS4i+S4uuato+aWhworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCivkvZXkuLogSVJRPworCivkuIDkuKogSVJRIOaYr+adpeiHquafkOS4quiuvuWkh+eahOS4gOS4quS4reaWreivt+axguOAguebruWJje+8jOWug+S7rOWPr+S7peadpeiHquS4gOS4quehrOS7tuW8leiEmu+8jAor5oiW5p2l6Ieq5LiA5Liq5pWw5o2u5YyF44CC5aSa5Liq6K6+5aSH5Y+v6IO96L+e5o6l5Yiw5ZCM5Liq56Gs5Lu25byV6ISa77yM5LuO6ICM5YWx5Lqr5LiA5LiqIElSUeOAggorCivkuIDkuKogSVJRIOe8luWPt+aYr+eUqOS6juWRiuefpeehrOS7tuS4reaWrea6kOeahOWGheaguOagh+ivhuOAgumAmuW4uOaDheWGteS4i++8jOi/meaYr+S4gOS4qgor5YWo5bGAIGlycV9kZXNjIOaVsOe7hOeahOe0ouW8le+8jOS9huaYr+mZpOS6huWcqCBsaW51eC9pbnRlcnJ1cHQuaCDkuK3nmoTlrp7njrDvvIwKK+WFt+S9k+eahOe7huiKguaYr+S9k+ezu+e7k+aehOeJueWumueahOOAggorCivkuIDkuKogSVJRIOe8luWPt+aYr+iuvuWkh+S4iuafkOS4quWPr+iDveeahOS4reaWrea6kOeahOaemuS4vuOAgumAmuW4uOaDheWGteS4i++8jOaemuS4vueahOe8luWPt+aYrwor6K+l5byV6ISa5Zyo57O757uf5YaF5Lit5pat5o6n5Yi25Zmo55qE5omA5pyJ6L6T5YWl5byV6ISa5Lit55qE57yW5Y+344CC5a+55LqOIElTQSDmgLvnur/kuK3nmoTmg4XlhrXvvIwKK+aemuS4vueahOaYr+WcqOS4pOS4qiBpODI1OSDkuK3mlq3mjqfliLblmajkuK0gMTYg5Liq6L6T5YWl5byV6ISa44CCCisKK+aetuaehOWPr+S7peWvuSBJUlEg57yW5Y+35oyH5a6a6aKd5aSW55qE5ZCr5LmJ77yM5Zyo56Gs5Lu25raJ5Y+K5Lu75L2V5omL5bel6YWN572u55qE5oOF5Ya15LiL77yMCivmmK/ooqvmj5DlgKHnmoTjgIJJU0Eg55qEIElSUSDmmK/kuIDkuKrliIbphY3ov5nnsbvpop3lpJblkKvkuYnnmoTlhbjlnovkvovlrZDjgIIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vemhfQ04vU2VjdXJpdHlCdWdzIGIvRG9jdW1lbnRhdGlvbi96aF9DTi9TZWN1cml0eUJ1Z3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDIxZWIwNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vemhfQ04vU2VjdXJpdHlCdWdzCkBAIC0wLDAgKzEsNTAgQEAKK0NoaW5lc2UgdHJhbnNsYXRlZCB2ZXJzaW9uIG9mIERvY3VtZW50YXRpb24vU2VjdXJpdHlCdWdzCisKK0lmIHlvdSBoYXZlIGFueSBjb21tZW50IG9yIHVwZGF0ZSB0byB0aGUgY29udGVudCwgcGxlYXNlIGNvbnRhY3QgdGhlCitvcmlnaW5hbCBkb2N1bWVudCBtYWludGFpbmVyIGRpcmVjdGx5LiAgSG93ZXZlciwgaWYgeW91IGhhdmUgYSBwcm9ibGVtCitjb21tdW5pY2F0aW5nIGluIEVuZ2xpc2ggeW91IGNhbiBhbHNvIGFzayB0aGUgQ2hpbmVzZSBtYWludGFpbmVyIGZvcgoraGVscC4gIENvbnRhY3QgdGhlIENoaW5lc2UgbWFpbnRhaW5lciBpZiB0aGlzIHRyYW5zbGF0aW9uIGlzIG91dGRhdGVkCitvciBpZiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgdHJhbnNsYXRpb24uCisKK0NoaW5lc2UgbWFpbnRhaW5lcjogSGFycnkgV2VpIDxoYXJyeXhpeW91QGdtYWlsLmNvbT4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRG9jdW1lbnRhdGlvbi9TZWN1cml0eUJ1Z3Mg55qE5Lit5paH57+76K+RCisKK+WmguaenOaDs+ivhOiuuuaIluabtOaWsOacrOaWh+eahOWGheWuue+8jOivt+ebtOaOpeiBlOezu+WOn+aWh+aho+eahOe7tOaKpOiAheOAguWmguaenOS9oOS9v+eUqOiLseaWhwor5Lqk5rWB5pyJ5Zuw6Zq+55qE6K+d77yM5Lmf5Y+v5Lul5ZCR5Lit5paH54mI57u05oqk6ICF5rGC5Yqp44CC5aaC5p6c5pys57+76K+R5pu05paw5LiN5Y+K5pe25oiW6ICF57+7Civor5HlrZjlnKjpl67popjvvIzor7fogZTns7vkuK3mlofniYjnu7TmiqTogIXjgIIKKwor5Lit5paH54mI57u05oqk6ICF77yaIOi0vuWogeWogSBIYXJyeSBXZWkgPGhhcnJ5eGl5b3VAZ21haWwuY29tPgor5Lit5paH54mI57+76K+R6ICF77yaIOi0vuWogeWogSBIYXJyeSBXZWkgPGhhcnJ5eGl5b3VAZ21haWwuY29tPgor5Lit5paH54mI5qCh6K+R6ICF77yaIOi0vuWogeWogSBIYXJyeSBXZWkgPGhhcnJ5eGl5b3VAZ21haWwuY29tPgorCisKK+S7peS4i+S4uuato+aWhworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMaW51eOWGheaguOW8gOWPkeiAheiupOS4uuWuieWFqOmdnuW4uOmHjeimgeOAguWboOatpO+8jOaIkeS7rOaDs+imgeefpemBk+W9k+S4gOS4quacieWFs+S6jgor5a6J5YWo55qE5ryP5rSe6KKr5Y+R546w55qE5pe25YCZ77yM5bm25LiU5a6D5Y+v6IO95Lya6KKr5bC95b+r55qE5L+u5aSN5oiW6ICF5YWs5byA44CC6K+35oqK6L+Z5Liq5a6J5YWoCivmvI/mtJ7miqXlkYrnu5lMaW51eOWGheaguOWuieWFqOWboumYn+OAggorCisxKSDogZTns7sKKworbGludXjlhoXmoLjlronlhajlm6LpmJ/lj6/ku6XpgJrov4dlbWFpbDxzZWN1cml0eUBrZXJuZWwub3JnPuadpeiBlOezu+OAgui/meaYrwor5LiA57uE54us56uL55qE5a6J5YWo5bel5L2c5Lq65ZGY77yM5Y+v5Lul5biu5Yqp5pS55ZaE5ryP5rSe5oql5ZGK5bm25LiU5YWs5biD5ZKM5Y+W5raI5LiA5Liq5L+u5aSN44CC5a6JCivlhajlm6LpmJ/mnInlj6/og73kvJrku47pg6jliIbnmoTnu7TmiqTogIXpgqPph4zlvJXov5vpop3lpJbnmoTluK7liqnmnaXkuobop6PlubbkuJTkv67lpI3lronlhajmvI/mtJ7jgIIKK+W9k+mBh+WIsOS7u+S9lea8j+a0nu+8jOaJgOiDveaPkOS+m+eahOS/oeaBr+i2iuWkmuWwsei2iuiDveiviuaWreWSjOS/ruWkjeOAguWmguaenOS9oOS4jea4healmuS7gOS5iAor5piv5pyJ5biu5Yqp55qE5L+h5oGv77yM6YKj5bCx6K+36YeN5rip5LiA5LiLUkVQT1JUSU5HLUJVR1Pmlofku7bkuK3nmoTmpoLov7Dov4fnqIvjgILku7sKK+S9leaUu+WHu+aAp+eahOS7o+eggemDveaYr+mdnuW4uOacieeUqOeahO+8jOacque7j+aKpeWRiuiAheeahOWQjOaEj+S4jeS8muiiq+WPlua2iO+8jOmZpOmdnuWug+W3sue7jwor6KKr5YWs5biD5LqO5LyX44CCCisKKzIpIOWFrOW8gAorCitMaW51eOWGheaguOWuieWFqOWboumYn+eahOWul+aXqOWwseaYr+WSjOa8j+a0nuaPkOS6pOiAheS4gOi1t+WkhOeQhua8j+a0nueahOino+WGs+aWueahiOebtAor5Yiw5YWs5byA44CC5oiR5Lus5Zac5qyi5bC95b+r5Zyw5a6M5YWo5YWs5byA5ryP5rSe44CC5b2T5LiA5Liq5ryP5rSe5oiW6ICF5L+u5aSN6L+Y5rKh5pyJ6KKr5a6M5YWo5Zyw55CGCivop6PvvIzop6PlhrPmlrnmoYjmsqHmnInpgJrov4fmtYvor5XmiJbogIXkvpvlupTllYbljY/osIPvvIzlj6/ku6XlkIjnkIblnLDlu7bov5/lhazlvIDjgILnhLbogIzvvIzmiJHku6wKK+acn+acm+i/meS6m+W7tui/n+WwveWPr+iDveeahOefreS6m++8jOaYr+WPr+aVsOeahOWHoOWkqe+8jOiAjOS4jeaYr+WHoOS4quaYn+acn+aIluiAheWHoOS4quaciOOAguWFrOW8gAor5pel5pyf5piv6YCa6L+H5a6J5YWo5Zui6Zif5ZKM5ryP5rSe5o+Q5L6b6ICF5Lul5Y+K5L6b5bqU5ZWG5rS96LCI5ZCO55qE57uT5p6c44CC5YWs5byA5pe26Ze06KGo5piv5LuO5b6ICivnn63vvIjnibnmrornmoTvvIzlroPlt7Lnu4/ooqvlhazkvJfmiYDnn6XpgZPvvInliLDlh6DkuKrmmJ/mnJ/jgILkvZzkuLrkuIDkuKrln7rmnKznmoTpu5jorqTmlL/nrZbvvIzmiJEKK+S7rOaJgOacn+acm+mAmuefpeWFrOS8l+eahOaXpeacn+aYrzflpKnnmoTlronmjpLjgIIKKworMykg5L+d5a+G5Y2P6K6uCisKK0xpbnV45YaF5qC45a6J5YWo5Zui6Zif5LiN5piv5LiA5Liq5q2j5byP55qE5Zui5L2T77yM5Zug5q2k5LiN6IO95Yqg5YWl5Lu75L2V55qE5L+d5a+G5Y2P6K6u44CCCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3poX0NOL1N1Ym1pdHRpbmdEcml2ZXJzIGIvRG9jdW1lbnRhdGlvbi96aF9DTi9TdWJtaXR0aW5nRHJpdmVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzEzZjVkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi96aF9DTi9TdWJtaXR0aW5nRHJpdmVycwpAQCAtMCwwICsxLDE2NCBAQAor77u/Q2hpbmVzZSB0cmFuc2xhdGVkIHZlcnNpb24gb2YgRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nRHJpdmVycworCitJZiB5b3UgaGF2ZSBhbnkgY29tbWVudCBvciB1cGRhdGUgdG8gdGhlIGNvbnRlbnQsIHBsZWFzZSBjb250YWN0IHRoZQorb3JpZ2luYWwgZG9jdW1lbnQgbWFpbnRhaW5lciBkaXJlY3RseS4gIEhvd2V2ZXIsIGlmIHlvdSBoYXZlIGEgcHJvYmxlbQorY29tbXVuaWNhdGluZyBpbiBFbmdsaXNoIHlvdSBjYW4gYWxzbyBhc2sgdGhlIENoaW5lc2UgbWFpbnRhaW5lciBmb3IKK2hlbHAuICBDb250YWN0IHRoZSBDaGluZXNlIG1haW50YWluZXIgaWYgdGhpcyB0cmFuc2xhdGlvbiBpcyBvdXRkYXRlZAorb3IgaWYgdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIHRyYW5zbGF0aW9uLgorCitDaGluZXNlIG1haW50YWluZXI6IExpIFlhbmcgPGxlb0B6aC1rZXJuZWwub3JnPgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdEcml2ZXJzIOeahOS4reaWh+e/u+ivkQorCivlpoLmnpzmg7Por4TorrrmiJbmm7TmlrDmnKzmlofnmoTlhoXlrrnvvIzor7fnm7TmjqXogZTns7vljp/mlofmoaPnmoTnu7TmiqTogIXjgILlpoLmnpzkvaDkvb/nlKjoi7HmlocKK+S6pOa1geacieWbsOmavueahOivne+8jOS5n+WPr+S7peWQkeS4reaWh+eJiOe7tOaKpOiAheaxguWKqeOAguWmguaenOacrOe/u+ivkeabtOaWsOS4jeWPiuaXtuaIluiAhee/uwor6K+R5a2Y5Zyo6Zeu6aKY77yM6K+36IGU57O75Lit5paH54mI57u05oqk6ICF44CCCisKK+S4reaWh+eJiOe7tOaKpOiAhe+8miDmnY7pmLMgIExpIFlhbmcgPGxlb0B6aC1rZXJuZWwub3JnPgor5Lit5paH54mI57+76K+R6ICF77yaIOadjumYsyAgTGkgWWFuZyA8bGVvQHpoLWtlcm5lbC5vcmc+CivkuK3mlofniYjmoKHor5HogIXvvJog6ZmI55CmIE1hZ2dpZSBDaGVuIDxjaGVucWlAYmV5b25kc29mdC5jb20+CisgICAgICAgICAgICAgICDnjovogaogV2FuZyBDb25nIDx4aXlvdS53YW5nY29uZ0BnbWFpbC5jb20+CisgICAgICAgICAgICAgICDlvKDlt40gWmhhbmcgV2VpIDxXZWkuWmhhbmdAZnJlZXNjYWxlLmNvbT4KKwor5Lul5LiL5Li65q2j5paHCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor5aaC5L2V5ZCRIExpbnV4IOWGheaguOaPkOS6pOmpseWKqOeoi+W6jworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor6L+Z56+H5paH5qGj5bCG5Lya6Kej6YeK5aaC5L2V5ZCR5LiN5ZCM55qE5YaF5qC45rqQ56CB5qCR5o+Q5Lqk6K6+5aSH6amx5Yqo56iL5bqP44CC6K+35rOo5oSP77yM5aaC5p6c5L2g5oSfCivlhbTotqPnmoTmmK/mmL7ljaHpqbHliqjnqIvluo/vvIzkvaDkuZ/orrjlupTor6Xorr/pl64gWEZyZWU4NiDpobnnm64oaHR0cDovL3d3dy54ZnJlZTg2Lm9yZy8pCivlkozvvI/miJYgWC5vcmcg6aG555uuIChodHRwOi8veC5vcmcp44CCCisKK+WPpuivt+WPgumYhSBEb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzIOaWh+aho+OAggorCisKK+WIhumFjeiuvuWkh+WPtworLS0tLS0tLS0tLQorCivlnZforr7lpIflkozlrZfnrKborr7lpIfnmoTkuLvorr7lpIflj7fkuI7ku47orr7lpIflj7fmmK/nlLEgTGludXgg5ZG95ZCN57yW5Y+35YiG6YWN5p2D5aiBIExBTkFOQe+8iAor546w5Zyo5pivIFRvcmJlbiBNYXRoaWFzZW7vvInotJ/otKPliIbphY3jgILnlLPor7fnmoTnvZHlnYDmmK8gaHR0cDovL3d3dy5sYW5hbmEub3JnL+OAggor5Y2z5L2/5LiN5YeG5aSH5o+Q5Lqk5Yiw5Li75rWB5YaF5qC455qE6K6+5aSH6amx5Yqo5Lmf6ZyA6KaB5Zyo6L+Z6YeM5YiG6YWN6K6+5aSH5Y+344CC5pyJ5YWz6K+m57uG5L+h5oGv77yMCivor7flj4LpmIUgRG9jdW1lbnRhdGlvbi9kZXZpY2VzLnR4dOOAggorCivlpoLmnpzkvaDkvb/nlKjnmoTkuI3mmK/lt7Lnu4/liIbphY3nmoTorr7lpIflj7fvvIzpgqPkuYjlvZPkvaDmj5DkuqTorr7lpIfpqbHliqjnmoTml7blgJnvvIzlroPlsIbkvJrooqvlvLoKK+WItuWIhumFjeS4gOS4quaWsOeahOiuvuWkh+WPt++8jOWNs+S+v+i/meS4quiuvuWkh+WPt+WSjOS9oOS5i+WJjeWPkee7meWuouaIt+eahOaIqueEtuS4jeWQjOOAggorCivorr7lpIfpqbHliqjnmoTmj5DkuqTlr7nosaEKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitMaW51eCAyLjA6CisJ5q2k5YaF5qC45rqQ56CB5qCR5LiN5o6l5Y+X5paw55qE6amx5Yqo56iL5bqP44CCCisKK0xpbnV4IDIuMjoKKwnmraTlhoXmoLjmupDnoIHmoJHkuI3mjqXlj5fmlrDnmoTpqbHliqjnqIvluo/jgIIKKworTGludXggMi40OgorCeWmguaenOaJgOWxnueahOS7o+eggemihuWfn+WcqOWGheaguOeahCBNQUlOVEFJTkVSUyDmlofku7bkuK3liJfmnInkuIDkuKrmgLvnu7TmiqTogIXvvIwKKwnpgqPkuYjor7flsIbpqbHliqjnqIvluo/mj5DkuqTnu5nku5bjgILlpoLmnpzmraTnu7TmiqTogIXmsqHmnInlm57lupTmiJbogIXkvaDmib7kuI3liLDmgbDlvZPnmoQKKwnnu7TmiqTogIXvvIzpgqPkuYjor7fogZTns7sgV2lsbHkgVGFycmVhdSA8d0Axd3QuZXU+44CCCisKK0xpbnV4IDIuNjoKKwnpmaTkuobpgbXlvqrlkowgMi40IOeJiOWGheaguOWQjOagt+eahOinhOWImeWklu+8jOS9oOi/mOmcgOimgeWcqCBsaW51eC1rZXJuZWwg6YKu5Lu2CisJ5YiX6KGo5LiK6Lef6Liq5pyA5paw55qEIEFQSSDlj5jljJbjgILlkJEgTGludXggMi42IOWGheaguOaPkOS6pOmpseWKqOeahOmhtue6p+iBlOezu+S6ugorCeaYryBBbmRyZXcgTW9ydG9uIDxha3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnPuOAggorCivlhrPlrprorr7lpIfpqbHliqjog73lkKbooqvmjqXlj5fnmoTmnaHku7YKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor6K645Y+v77yaCQnku6PnoIHlv4Xpobvkvb/nlKggR05VIOmAmueUqOWFrOW8gOiuuOWPr+ivgSAoR1BMKSDmj5DkuqTnu5kgTGludXjvvIzkvYbmmK8KKwkJ5oiR5Lus5bm25LiN6KaB5rGCIEdQTCDmmK/llK/kuIDnmoTorrjlj6/jgILkvaDmiJborrjkvJrluIzmnJvlkIzml7bkvb/nlKjlpJrnp40KKwkJ6K645Y+v6K+B5Y+R5biD77yM5aaC5p6c5biM5pyb6amx5Yqo56iL5bqP5Y+v5Lul6KKr5YW25LuW5byA5rqQ56S+5Yy677yI5q+U5aaCQlNE77yJCisJCeS9v+eUqOOAguivt+WPguiAgyBpbmNsdWRlL2xpbnV4L21vZHVsZS5oIOaWh+S7tuS4reaJgOWIl+WHuueahOWPr+iiqworCQnmjqXlj5flhbHlrZjnmoTorrjlj6/jgIIKKwor54mI5p2D77yaCQnniYjmnYPmiYDmnInogIXlv4XpobvlkIzmhI/kvb/nlKggR1BMIOiuuOWPr+OAguacgOWlveaPkOS6pOiAheWSjOeJiOadg+aJgOacieiAhQorCQnmmK/nm7jlkIzkuKrkurrmiJblrp7kvZPjgILlkKbliJnvvIzlv4XpnIDliJflh7rmjojmnYPkvb/nlKggR1BMIOeahOeJiOadg+aJgOaciQorCQnkurrmiJblrp7kvZPvvIzku6XlpIfpqozor4HkuYvpnIDjgIIKKwor5o6l5Y+j77yaCQnlpoLmnpzkvaDnmoTpqbHliqjnqIvluo/kvb/nlKjnjrDmiJDnmoTmjqXlj6PlubbkuJTlkozlhbbku5blkIznsbvnmoTpqbHliqjnqIvluo/ooYwKKwkJ5Li655u45Ly877yM6ICM5LiN5piv5Y675Y+R5piO5peg6LCT55qE5paw5o6l5Y+j77yM6YKj5LmI5a6D5bCG5Lya5pu05a655piT6KKr5o6l5Y+X44CCCisJCeWmguaenOS9oOmcgOimgeS4gOS4qiBMaW51eCDlkowgTlQg55qE6YCa55So6amx5Yqo5o6l5Y+j77yM6YKj5LmI6K+35Zyo55SoCisJCeaIt+epuumXtOWunueOsOWug+OAggorCivku6PnoIHvvJoJCeivt+S9v+eUqCBEb2N1bWVudGF0aW9uL0NvZGluZ1N0eWxlIOS4reaJgOaPj+i/sOeahCBMaW51eCDku6PnoIHpo44KKwkJ5qC844CC5aaC5p6c5L2g55qE5p+Q5Lqb5Luj56CB5q6177yI5L6L5aaC6YKj5Lqb5LiOIFdpbmRvd3Mg6amx5Yqo56iL5bqP5YyF5YWxCisJCeS6q+eahOS7o+eggeaute+8iemcgOimgeS9v+eUqOWFtuS7luagvOW8j++8jOiAjOS9oOWNtOWPquW4jOacm+e7tOaKpOS4gOS7veS7o+egge+8jAorCQnpgqPkuYjor7flsIblroPku6zlvojlpb3lnLDljLrliIblh7rmnaXvvIzlubbkuJTms6jmmI7ljp/lm6DjgIIKKwor5Y+v56e75qSN5oCn77yaCeivt+azqOaEj++8jOaMh+mSiOW5tuS4jeawuOi/nOaYryAzMiDkvY3nmoTvvIzkuI3mmK/miYDmnInnmoTorqHnrpfmnLrpg73kvb/nlKjlsI8KKwkJ5bC+5qih5byPIChsaXR0bGUgZW5kaWFuKSDlrZjlgqjmlbDmja7vvIzkuI3mmK/miYDmnInnmoTkurrpg73mi6XmnInmta7ngrkKKwkJ5Y2V5YWD77yM5LiN6KaB6ZqP5L6/5Zyo5L2g55qE6amx5Yqo56iL5bqP6YeM5bWM5YWlIHg4NiDmsYfnvJbmjIfku6TjgILlj6rog73lnKgKKwkJeDg2IOS4iui/kOihjOeahOmpseWKqOeoi+W6j+S4gOiIrOaYr+S4jeWPl+asoui/jueahOOAguiZveeEtuS9oOWPr+iDveWPquaciSB4ODYKKwkJ56Gs5Lu277yM5b6I6Zq+5rWL6K+V6amx5Yqo56iL5bqP5Zyo5YW25LuW5bmz5Y+w5LiK5piv5ZCm5Y+v55So77yM5L2G5piv56Gu5L+d5Luj56CBCisJCeWPr+S7peiiq+i9u+advuWcsOenu+akjeWNtOaYr+W+iOeugOWNleeahOOAggorCivmuIXmmbDluqbvvJoJ5YGa5Yiw5omA5pyJ5Lq66YO96IO95L+u6KGl6L+Z5Liq6amx5Yqo56iL5bqP5bCG5Lya5b6I5pyJ5aW95aSE77yM5Zug5Li66L+Z5qC35L2g5bCGCisJCeS8muebtOaOpeaUtuWIsOS/ruWkjeeahOihpeS4geiAjOS4jeaYryBidWcg5oql5ZGK44CC5aaC5p6c5L2g5o+Q5Lqk5LiA5Liq6K+V5Zu+CisJCemakOiXj+ehrOS7tuW3peS9nOacuueQhueahOmpseWKqOeoi+W6j++8jOmCo+S5iOWug+WwhuS8muiiq+aJlOi/m+W6n+e6uOevk+OAggorCivnlLXmupDnrqHnkIbvvJoJ5Zug5Li6IExpbnV4IOato+WcqOiiq+W+iOWkmuenu+WKqOiuvuWkh+WSjOahjOmdouezu+e7n+S9v+eUqO+8jOaJgOS7peS9oOeahOmpsQorCQnliqjnqIvluo/kuZ/lvojmnInlj6/og73ooqvkvb/nlKjlnKjov5nkupvorr7lpIfkuIrjgILlroPlupTor6XmlK/mjIHmnIDln7rmnKznmoTnlLUKKwkJ5rqQ566h55CG77yM5Y2z5Zyo6ZyA6KaB55qE5oOF5Ya15LiL5a6e546w57O757uf57qn5LyR55yg5ZKM5ZSk6YaS6KaB55So5Yiw55qECisJCS5zdXNwZW5kIOWSjCAucmVzdW1lIOWHveaVsOOAguS9oOW6lOivpeajgOafpeS9oOeahOmpseWKqOeoi+W6j+aYr+WQpuiDveatoworCQnnoa7lnLDlpITnkIbkvJHnnKDkuI7llKTphpLvvIzlpoLmnpzlrp7lnKjml6Dms5Xnoa7orqTvvIzor7foh7PlsJHmioogLnN1c3BlbmQKKwkJ5Ye95pWw5a6a5LmJ5oiQ6L+U5ZueIC1FTk9TWVPvvIjlip/og73mnKrlrp7njrDvvInplJnor6/jgILkvaDov5jlupTor6XlsJ3or5Xnoa4KKwkJ5L+d5L2g55qE6amx5Yqo5Zyo5LuA5LmI6YO95LiN5bmy55qE5oOF5Ya15LiL5bCG6ICX55S16ZmN5Yiw5pyA5L2O44CC6KaB6I635b6X6amx5YqoCisJCeeoi+W6j+a1i+ivleeahOaMh+WvvO+8jOivt+WPgumYhQorCQlEb2N1bWVudGF0aW9uL3Bvd2VyL2RyaXZlcnMtdGVzdGluZy50eHTjgILmnInlhbPpqbHliqjnqIvluo/nlLUKKwkJ5rqQ566h55CG6Zeu6aKY55u45a+55YWo6Z2i55qE5qaC6L+w77yM6K+35Y+C6ZiFCisJCURvY3VtZW50YXRpb24vcG93ZXIvZGV2aWNlcy50eHTjgIIKKwor566h55CG77yaCQnlpoLmnpzkuIDkuKrpqbHliqjnqIvluo/nmoTkvZzogIXov5jlnKjov5vooYzmnInmlYjnmoTnu7TmiqTvvIzpgqPkuYjpgJrluLjpmaTkuobpgqMKKwkJ5Lqb5piO5pi+5q2j56Gu5LiU5LiN6ZyA6KaB5Lu75L2V5qOA5p+l55qE6KGl5LiB5Lul5aSW77yM5YW25LuW5omA5pyJ55qE6KGl5LiB6YO95LyaCisJCeiiq+i9rOWPkee7meS9nOiAheOAguWmguaenOS9oOW4jOacm+aIkOS4uumpseWKqOeoi+W6j+eahOiBlOezu+S6uuWSjOabtOaWsOiAhe+8jOacgAorCQnlpb3lnKjku6PnoIHms6jph4rkuK3lhpnmmI7lubbkuJTlnKggTUFJTlRBSU5FUlMg5paH5Lu25Lit5Yqg5YWl6L+Z5Liq6amx5YqoCisJCeeoi+W6j+eahOadoeebruOAggorCivkuI3lvbHlk43orr7lpIfpqbHliqjog73lkKbooqvmjqXlj5fnmoTmnaHku7YKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCivkvpvlupTllYbvvJoJ55Sx56Gs5Lu25L6b5bqU5ZWG5p2l57u05oqk6amx5Yqo56iL5bqP6YCa5bi45piv5LiA5Lu25aW95LqL44CC5LiN6L+H77yM5aaC5p6c5rqQ56CBCisJCeagkemHjOW3sue7j+acieWFtuS7luS6uuaPkOS+m+S6huWPr+eos+WumuW3peS9nOeahOmpseWKqOeoi+W6j++8jOmCo+S5iOivt+S4jeimgeacnworCQnmnJvigJzmiJHmmK/kvpvlupTllYbigJ3kvJrmiJDkuLrlhoXmoLjmlLnnlKjkvaDnmoTpqbHliqjnqIvluo/nmoTnkIbnlLHjgILnkIbmg7PnmoTmg4UKKwkJ5Ya15piv77ya5L6b5bqU5ZWG5LiO546w5pyJ6amx5Yqo56iL5bqP55qE5L2c6ICF5ZCI5L2c77yM5p6E5bu65LiA5Liq57uf5LiA5a6M576O55qECisJCempseWKqOeoi+W6j+OAggorCivkvZzogIXvvJoJCempseWKqOeoi+W6j+aYr+eUseWkp+eahCBMaW51eCDlhazlj7jnoJTlj5Hov5jmmK/nlLHkvaDkuKrkurrnvJblhpnvvIzlubbkuI3lvbEKKwkJ5ZON5YW25piv5ZCm6IO96KKr5YaF5qC45o6l5Y+X44CC5rKh5pyJ5Lq65a+55YaF5qC45rqQ56CB5qCR5Lqr5pyJ54m55p2D44CC5Y+q6KaB5L2gCisJCeWFheWIhuS6huino+WGheaguOekvuWMuu+8jOS9oOWwseS8muWPkeeOsOi/meS4gOeCueOAggorCisKK+i1hOa6kOWIl+ihqAorLS0tLS0tLS0KKworTGludXgg5YaF5qC45Li75rqQ56CB5qCR77yaCisJZnRwLj8/Lmtlcm5lbC5vcmc6L3B1Yi9saW51eC9rZXJuZWwvLi4uCisJPz8gPT0g5L2g55qE5Zu95a625Luj56CB77yM5L6L5aaCICJjbiLjgIEidXMi44CBInVrIuOAgSJmciIg562J562JCisKK0xpbnV4IOWGheaguOmCruS7tuWIl+ihqO+8mgorCWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKKwlb5Y+v6YCa6L+H5ZCRbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZ+WPkemCruS7tuadpeiuoumYhV0KKworTGludXgg6K6+5aSH6amx5Yqo56iL5bqP77yM56ys5LiJ54mI77yI5o6i6K6oIDIuNi4xMCDniYjlhoXmoLjvvInvvJoKKwlodHRwOi8vbHduLm5ldC9LZXJuZWwvTEREMy8g77yI5YWN6LS554mI77yJCisKK0xXTi5uZXQ6CisJ5q+P5ZGo5YaF5qC45byA5Y+R5rS75Yqo5pGY6KaBIC0gaHR0cDovL2x3bi5uZXQvCisJMi42IOeJiOS4rSBBUEkg55qE5Y+Y5pu077yaCisJCWh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzIuNi1rZXJuZWwtYXBpLworCeWwhuaXp+eJiOWGheaguOeahOmpseWKqOeoi+W6j+enu+akjeWIsCAyLjYg54mI77yaCisJCWh0dHA6Ly9sd24ubmV0L0FydGljbGVzL2RyaXZlci1wb3J0aW5nLworCivlhoXmoLjmlrDmiYsoS2VybmVsTmV3Ymllcyk6CisJ5Li65paw55qE5YaF5qC45byA5Y+R6ICF5o+Q5L6b5paH5qGj5ZKM5biu5YqpCisJaHR0cDovL2tlcm5lbG5ld2JpZXMub3JnLworCitMaW51eCBVU0Lpobnnm67vvJoKKwlodHRwOi8vd3d3LmxpbnV4LXVzYi5vcmcvCisKK+WGmeWGheaguOmpseWKqOeahOKAnOS4jeimgeKAne+8iEFyamFuIHZhbiBkZSBWZW7okZfvvIk6CisJaHR0cDovL3d3dy5mZW5ydXMub3JnL2hvdy10by1ub3Qtd3JpdGUtYS1kZXZpY2UtZHJpdmVyLXBhcGVyLnBkZgorCivlhoXmoLjmuIXmtIHlt6UgKEtlcm5lbCBKYW5pdG9yKToKKwlodHRwOi8va2VybmVsbmV3Ymllcy5vcmcvS2VybmVsSmFuaXRvcnMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vemhfQ04vU3VibWl0dGluZ1BhdGNoZXMgYi9Eb2N1bWVudGF0aW9uL3poX0NOL1N1Ym1pdHRpbmdQYXRjaGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkM2ExMGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3poX0NOL1N1Ym1pdHRpbmdQYXRjaGVzCkBAIC0wLDAgKzEsNDEyIEBACitDaGluZXNlIHRyYW5zbGF0ZWQgdmVyc2lvbiBvZiBEb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzCisKK0lmIHlvdSBoYXZlIGFueSBjb21tZW50IG9yIHVwZGF0ZSB0byB0aGUgY29udGVudCwgcGxlYXNlIGNvbnRhY3QgdGhlCitvcmlnaW5hbCBkb2N1bWVudCBtYWludGFpbmVyIGRpcmVjdGx5LiAgSG93ZXZlciwgaWYgeW91IGhhdmUgYSBwcm9ibGVtCitjb21tdW5pY2F0aW5nIGluIEVuZ2xpc2ggeW91IGNhbiBhbHNvIGFzayB0aGUgQ2hpbmVzZSBtYWludGFpbmVyIGZvcgoraGVscC4gIENvbnRhY3QgdGhlIENoaW5lc2UgbWFpbnRhaW5lciBpZiB0aGlzIHRyYW5zbGF0aW9uIGlzIG91dGRhdGVkCitvciBpZiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgdHJhbnNsYXRpb24uCisKK0NoaW5lc2UgbWFpbnRhaW5lcjogVHJpcGxlWCBDaHVuZyA8dHJpcGxleEB6aC1rZXJuZWwub3JnPgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzIOeahOS4reaWh+e/u+ivkQorCivlpoLmnpzmg7Por4TorrrmiJbmm7TmlrDmnKzmlofnmoTlhoXlrrnvvIzor7fnm7TmjqXogZTns7vljp/mlofmoaPnmoTnu7TmiqTogIXjgILlpoLmnpzkvaDkvb/nlKjoi7HmlocKK+S6pOa1geacieWbsOmavueahOivne+8jOS5n+WPr+S7peWQkeS4reaWh+eJiOe7tOaKpOiAheaxguWKqeOAguWmguaenOacrOe/u+ivkeabtOaWsOS4jeWPiuaXtuaIluiAhee/uwor6K+R5a2Y5Zyo6Zeu6aKY77yM6K+36IGU57O75Lit5paH54mI57u05oqk6ICF44CCCisKK+S4reaWh+eJiOe7tOaKpOiAhe+8miDpkp/lrocgVHJpcGxlWCBDaHVuZyA8dHJpcGxleEB6aC1rZXJuZWwub3JnPgor5Lit5paH54mI57+76K+R6ICF77yaIOmSn+WuhyBUcmlwbGVYIENodW5nIDx0cmlwbGV4QHpoLWtlcm5lbC5vcmc+CivkuK3mlofniYjmoKHor5HogIXvvJog5p2O6ZizIExpIFlhbmcgPGxlb0B6aC1rZXJuZWwub3JnPgorICAgICAgICAgICAgICAg546L6IGqIFdhbmcgQ29uZyA8eGl5b3Uud2FuZ2NvbmdAZ21haWwuY29tPgorCivku6XkuIvkuLrmraPmlocKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICDlpoLkvZXorqnkvaDnmoTmlLnliqjov5vlhaXlhoXmoLgKKyAgICAg5oiW6ICFCisgIOiOt+W+l+S6sueIseeahCBMaW51cyBUb3J2YWxkcyDnmoTlhbPms6jlkozlpITnkIYKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor5a+55LqO5oOz6KaB5bCG5pS55Yqo5o+Q5Lqk5YiwIExpbnV4IOWGheaguOeahOS4quS6uuaIluiAheWFrOWPuOadpeivtO+8jOWmguaenOS4jeeGn+aCieKAnOinhOefqeKAne+8jAor5o+Q5Lqk55qE5rWB56iL5Lya6K6p5Lq655WP5oOn44CC5pys5paH5qGj5pS26ZuG5LqG5LiA57O75YiX5bu66K6u77yM6L+Z5Lqb5bu66K6u5Y+v5Lul5aSn5aSn55qE5o+Q6auY5L2gCivnmoTmlLnliqjooqvmjqXlj5fnmoTmnLrkvJrjgIIKK+mYheivuyBEb2N1bWVudGF0aW9uL1N1Ym1pdENoZWNrbGlzdCDmnaXojrflvpflnKjmj5DkuqTku6PnoIHliY3pnIDopoHmo4Dmn6XnmoTpobnnm67nmoTliJcKK+ihqOOAguWmguaenOS9oOWcqOaPkOS6pOS4gOS4qumpseWKqOeoi+W6j++8jOmCo+S5iOWQjOaXtumYheivu+S4gOS4iworRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nRHJpdmVycyDjgIIKKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor56ys5LiA6IqCIC0g5Yib5bu65bm25Y+R6YCB5L2g55qE5pS55YqoCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisxKSAiZGlmZiAtdXAiCistLS0tLS0tLS0tLQorCivkvb/nlKggImRpZmYgLXVwIiDmiJbogIUgImRpZmYgLXVwck4iIOadpeWIm+W7uuihpeS4geOAggorCivmiYDmnInlhoXmoLjnmoTmlLnliqjvvIzpg73mmK/ku6XooaXkuIHnmoTlvaLlvI/lkYjnjrDnmoTvvIzooaXkuIHnlLEgZGlmZigxKSDnlJ/miJDjgILliJvlu7rooaXkuIHnmoQKK+aXtuWAme+8jOimgeehruiupOWug+aYr+S7pSAidW5pZmllZCBkaWZmIiDmoLzlvI/liJvlu7rnmoTvvIzov5nnp43moLzlvI/nlLEgZGlmZigxKSDnmoQgJy11Jwor5Y+C5pWw55Sf5oiQ44CC6ICM5LiU77yM6K+35L2/55SoICctcCcg5Y+C5pWw77yM6YKj5qC35Lya5pi+56S65q+P5Liq5pS55Yqo5omA5Zyo55qEQ+WHveaVsO+8jOS9v+W+lwor5Lqn55Sf55qE6KGl5LiB5a655piT6K+75b6X5aSa44CC6KGl5LiB5bqU6K+l5Z+65LqO5YaF5qC45rqQ5Luj56CB5qCR55qE5qC555uu5b2V77yM6ICM5LiN5piv6YeM6L6555qE5Lu7CivkvZXlrZDnm67lvZXjgIIKK+S4uuS4gOS4quWNleeLrOeahOaWh+S7tuWIm+W7uuihpeS4ge+8jOS4gOiIrOadpeivtOi/meagt+WBmuWwseWkn+S6hu+8mgorCisgICAgICAgIFNSQ1RSRUU9IGxpbnV4LTIuNgorICAgICAgICBNWUZJTEU9ICBkcml2ZXJzL25ldC9teWRyaXZlci5jCisKKyAgICAgICAgY2QgJFNSQ1RSRUUKKyAgICAgICAgY3AgJE1ZRklMRSAkTVlGSUxFLm9yaWcKKyAgICAgICAgdmkgJE1ZRklMRSAgICAgICMgbWFrZSB5b3VyIGNoYW5nZQorICAgICAgICBjZCAuLgorICAgICAgICBkaWZmIC11cCAkU1JDVFJFRS8kTVlGSUxFey5vcmlnLH0gPiAvdG1wL3BhdGNoCisKK+S4uuWkmuS4quaWh+S7tuWIm+W7uuihpeS4ge+8jOS9oOWPr+S7peino+W8gOS4gOS4quayoeacieS/ruaUuei/h+eahOWGheaguOa6kOS7o+eggeagke+8jOeEtuWQjuWSjOS9oOiHqgor5bex55qE5Luj56CB5qCR5LmL6Ze05YGaIGRpZmYg44CC5L6L5aaC77yaCisKKyAgICAgICAgTVlTUkM9IC9kZXZlbC9saW51eC0yLjYKKworICAgICAgICB0YXIgeHZmeiBsaW51eC0yLjYuMTIudGFyLmd6CisgICAgICAgIG12IGxpbnV4LTIuNi4xMiBsaW51eC0yLjYuMTItdmFuaWxsYQorICAgICAgICBkaWZmIC11cHJOIC1YIGxpbnV4LTIuNi4xMi12YW5pbGxhL0RvY3VtZW50YXRpb24vZG9udGRpZmYgXAorICAgICAgICAgICAgICAgIGxpbnV4LTIuNi4xMi12YW5pbGxhICRNWVNSQyA+IC90bXAvcGF0Y2gKKworImRvbnRkaWZmIiDmmK/lhoXmoLjlnKjnvJbor5HnmoTml7blgJnkuqfnlJ/nmoTmlofku7bnmoTliJfooajvvIzliJfooajkuK3nmoTmlofku7blnKggZGlmZigxKQor5Lqn55Sf55qE6KGl5LiB6YeM5Lya6KKr6Lez6L+H44CCImRvbnRkaWZmIiDmlofku7booqvljIXlkKvlnKgyLjYuMTLlkozkuYvlkI7niYjmnKznmoTlhoXmoLjmupDku6MKK+eggeagkeS4reOAguWvueS6juabtOaXqeeahOWGheaguOeJiOacrO+8jOS9oOWPr+S7peS7jgorPGh0dHA6Ly93d3cueGVub3RpbWUubmV0L2xpbnV4L2RvYy9kb250ZGlmZj4g6I635Y+W5a6D44CCCivnoa7lrprkvaDnmoTooaXkuIHph4zmsqHmnInljIXlkKvku7vkvZXkuI3lsZ7kuo7ov5nmrKHooaXkuIHmj5DkuqTnmoTpop3lpJbmlofku7bjgILorrDlvpflnKjnlKhkaWZmKDEpCivnlJ/miJDooaXkuIHkuYvlkI7vvIzlrqHpmIXkuIDmrKHooaXkuIHvvIzku6Xnoa7kv53lh4bnoa7jgIIKK+WmguaenOS9oOeahOaUueWKqOW+iOaVo+S5se+8jOS9oOW6lOivpeeglOeptuS4gOS4i+WmguS9leWwhuihpeS4geWIhuWJsuaIkOeLrOeri+eahOmDqOWIhu+8jOWwhuaUueWKqOWIhgor5Ymy5oiQ5LiA57O75YiX5ZCI5LmO6YC76L6R55qE5q2l6aqk44CC6L+Z5qC35pu05a655piT6K6p5YW25LuW5YaF5qC45byA5Y+R6ICF5a6h5qC477yM5aaC5p6c5L2g5oOz5L2g55qECivooaXkuIHooqvmjqXlj5fvvIzov5nmmK/lvojph43opoHnmoTjgILkuIvpnaLov5nkupvohJrmnKzog73lpJ/luK7liqnkvaDlgZrov5nku7bkuovmg4XvvJoKK1F1aWx0OgoraHR0cDovL3NhdmFubmFoLm5vbmdudS5vcmcvcHJvamVjdHMvcXVpbHQKKworMinmj4/ov7DkvaDnmoTmlLnliqjjgIIKK+aPj+i/sOS9oOeahOaUueWKqOWMheWQq+eahOaKgOacr+e7huiKguOAggorCivopoHlpJrlhbfkvZPlsLHlhpnlpJrlhbfkvZPjgILmnIDns5/ns5XnmoTmj4/ov7Dlj6/og73mmK/lg4/kuIvpnaLov5nkupvor63lj6XvvJrigJzmm7TmlrDkuobmn5DpqbHliqjnqIsKK+W6j+KAne+8jOKAnOS/ruato+S6huafkOmpseWKqOeoi+W6j+eahGJ1Z+KAne+8jOaIluiAheKAnOi/meS4quihpeS4geWMheWQq+S6huafkOWtkOezu+e7n+eahOS/ruaUue+8jOivtwor5L2/55So44CC4oCdCisKK+WmguaenOS9oOeahOaPj+i/sOW8gOWni+WPmOmVv++8jOi/meihqOekuuS9oOS5n+iuuOmcgOimgeaLhuWIhuS9oOeahOihpeS4geS6hu+8jOivt+eci+esrDPlsI/oioLvvIwKK+e7p+e7reOAggorCiszKeaLhuWIhuS9oOeahOaUueWKqAorCivlsIbmlLnliqjmi4bliIbvvIzpgLvovpHnsbvkvLznmoTmlL7liLDlkIzkuIDkuKrooaXkuIHmlofku7bph4zjgIIKKwor5L6L5aaC77yM5aaC5p6c5L2g55qE5pS55Yqo6YeM5ZCM5pe25pyJYnVn5L+u5q2j5ZKM5oCn6IO95LyY5YyW77yM6YKj5LmI5oqK6L+Z5Lqb5pS55Yqo5ouG5YiG5Yiw5Lik5Liq5oiWCivogIXmm7TlpJrnmoTooaXkuIHmlofku7bkuK3jgILlpoLmnpzkvaDnmoTmlLnliqjljIXlkKvlr7lBUEnnmoTkv67mlLnvvIzlubbkuJTkv67mlLnkuobpqbHliqjnqIvluo/mnaXpgIIKK+W6lOi/meS6m+aWsOeahEFQSe+8jOmCo+S5iOaKiui/meS6m+S/ruaUueWIhuaIkOS4pOS4quihpeS4geOAggorCivlj6bkuIDmlrnpnaLvvIzlpoLmnpzkvaDlsIbkuIDkuKrljZXni6znmoTmlLnliqjlgZrmiJDlpJrkuKrooaXkuIHmlofku7bvvIzpgqPkuYjlsIblroPku6zlkIjlubbmiJDkuIDkuKoKK+WNleeLrOeahOihpeS4geaWh+S7tuOAgui/meagt+S4gOS4qumAu+i+keS4iuWNleeLrOeahOaUueWKqOWPquiiq+WMheWQq+WcqOS4gOS4quihpeS4geaWh+S7tumHjOOAggorCivlpoLmnpzmnInkuIDkuKrooaXkuIHkvp3otZblj6blpJbkuIDkuKrooaXkuIHmnaXlrozmiJDlroPnmoTmlLnliqjvvIzpgqPmsqHpl67popjjgILnroDljZXnmoTlnKjkvaDnmoTooaUKK+S4geaPj+i/sOmHjOaMh+WHuuKAnOi/meS4quihpeS4geS+nei1luafkOihpeS4geKAneWwseWlveS6huOAggorCivlpoLmnpzkvaDkuI3og73lsIbooaXkuIHmtZPnvKnmiJDmm7TlsJHnmoTmlofku7bvvIzpgqPkuYjmr4/mrKHlpKfnuqblj5HpgIHlh7oxNeS4qu+8jOeEtuWQjuetieW+heWuoeafpQor5ZKM5pW05ZCI44CCCisKKzQp6YCJ5oupIGUtbWFpbCDnmoTmlLbku7bkuroKKwor55yL5LiA6YGNIE1BSU5UQUlORVJTIOaWh+S7tuWSjOa6kOS7o+egge+8jOeci+eci+S9oOaJgOeahOaUueWKqOaJgOWcqOeahOWGheaguOWtkOezu+e7n+acieayoeacieaMhwor5a6a55qE57u05oqk6ICF44CC5aaC5p6c5pyJ77yM57uZ5LuW5Lus5Y+RZS1tYWls44CCCisKK+WmguaenOayoeacieaJvuWIsOe7tOaKpOiAhe+8jOaIluiAhee7tOaKpOiAheayoeacieWPjemmiO+8jOWwhuS9oOeahOihpeS4geWPkemAgeWIsOWGheaguOW8gOWPkeiAheS4u+mCrgor5Lu25YiX6KGoIGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmfjgILlpKfpg6jliIbnmoTlhoXmoLjlvIDlj5HogIXpg73ot5/ouKrov5nkuKrpgq7ku7bliJcKK+ihqO+8jOWPr+S7peivhOS7t+S9oOeahOaUueWKqOOAggorCivmr4/mrKHkuI3opoHlj5HpgIHotoXov4cxNeS4quihpeS4geWIsCB2Z2VyIOmCruS7tuWIl+ihqO+8ge+8ge+8gQorCitMaW51cyBUb3J2YWxkcyDmmK/lhrPlrprmlLnliqjog73lkKbov5vlhaUgTGludXgg5YaF5qC455qE5pyA57uI6KOB5Yaz6ICF44CC5LuW55qEIGUtbWFpbAor5Zyw5Z2A5pivIDx0b3J2YWxkc0BsaW51eC1mb3VuZGF0aW9uLm9yZz4g44CC5LuW5pS25Yiw55qEIGUtbWFpbCDlvojlpJrvvIzmiYDku6XkuIDoiKwKK+eahOivtO+8jOacgOWlveWIq+e7meS7luWPkSBlLW1haWzjgIIKKwor6YKj5Lqb5L+u5q2jYnVn77yM4oCc5pi+6ICM5piT6KeB4oCd55qE5L+u5pS55oiW6ICF5piv57G75Ly855qE5Y+q6ZyA6KaB5b6I5bCR6K6o6K6655qE6KGl5LiB5Y+v5Lul55u05o6lCivlj5HpgIHmiJbogIVDQ+e7mUxpbnVz44CC6YKj5Lqb6ZyA6KaB6K6o6K665oiW6ICF5rKh5pyJ5b6I5riF5qWa55qE5aW95aSE55qE6KGl5LiB77yM5LiA6Iis5YWI5Y+R6YCB5YiwCitsaW51eC1rZXJuZWzpgq7ku7bliJfooajjgILlj6rmnInlvZPooaXkuIHooqvorqjorrrlvpflt67kuI3lpJrkuobvvIzmiY3mj5DkuqTnu5lMaW51c+OAggorCis1KemAieaLqUNDKCBlLW1haWwg5oqE6YCBKeWIl+ihqAorCivpmaTpnZ7kvaDmnInnkIbnlLHkuI3ov5nmoLflgZrvvIzlkKbliJlDQyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3Jn44CCCisKK+mZpOS6hiBMaW51cyDkuYvlpJbvvIzlhbbku5blhoXmoLjlvIDlj5HogIXkuZ/pnIDopoHms6jmhI/liLDkvaDnmoTmlLnliqjvvIzov5nmoLfku5bku6zmiY3og73or4TorrrkvaAKK+eahOaUueWKqOW5tuaPkOS+m+S7o+eggeWuoeafpeWSjOW7uuiuruOAgmxpbnV4LWtlcm5lbCDmmK8gTGludXgg5YaF5qC45byA5Y+R6ICF5Li76YKu5Lu25YiX6KGoCivjgILlhbblroPnmoTpgq7ku7bliJfooajkuLrnibnlrprnmoTlrZDns7vnu5/mj5DkvpvmnI3liqHvvIzmr5TlpoIgVVNC77yMZnJhbWVidWZmZXIg6K6+5aSH77yM6JmaCivmi5/mlofku7bns7vnu5/vvIxTQ1NJIOWtkOezu+e7n++8jOetieetieOAguafpeeciyBNQUlOVEFJTkVSUyDmlofku7bmnaXojrflvpflkozkvaDnmoTmlLnliqjmnIkKK+WFs+eahOmCruS7tuWIl+ihqOOAggorCitNYWpvcmRvbW8gbGlzdHMgb2YgVkdFUi5LRVJORUwuT1JHIGF0OgorICAgICAgICA8aHR0cDovL3ZnZXIua2VybmVsLm9yZy92Z2VyLWxpc3RzLmh0bWw+CisKK+WmguaenOaUueWKqOW9seWTjeS6hueUqOaIt+epuumXtOWSjOWGheaguOS5i+mXtOeahOaOpeWPo++8jOivt+e7mSBNQU4tUEFHRVMg55qE57u05oqk6ICF77yI5YiX5ZyoCitNQUlOVEFJTkVSUyDmlofku7bph4znmoTvvInlj5HpgIHkuIDkuKrmiYvlhozpobXvvIhtYW4tcGFnZXPvvInooaXkuIHvvIzmiJbogIXoh7PlsJHpgJrnn6XkuIDkuIvmlLkKK+WPmO+8jOiuqeS4gOS6m+S/oeaBr+aciemAlOW+hOi/m+WFpeaJi+WGjOmhteOAggorCivljbPkvb/lnKjnrKzlm5vmraXnmoTml7blgJnvvIznu7TmiqTogIXmsqHmnInkvZzlh7rlm57lupTvvIzkuZ/opoHnoa7orqTlnKjkv67mlLnku5bku6znmoTku6PnoIHnmoTml7blgJkKK++8jOS4gOebtOWwhue7tOaKpOiAheaLt+i0neWIsEND5YiX6KGo5Lit44CCCisKK+WvueS6juWwj+eahOihpeS4ge+8jOS9oOS5n+iuuOS8mkND5YiwIEFkcmlhbiBCdW5rIOeuoeeQhueahOaQnOmbhueQkOeijuihpeS4geeahOmCruS7tuWIl+ihqAorKFRyaXZpYWwgUGF0Y2ggTW9ua2V5KXRyaXZpYWxAa2VybmVsLm9yZ++8jOmCo+mHjOS4k+mXqOaUtumbhueQkOeijueahOihpeS4geOAguS4i+mdoui/meagtwor55qE6KGl5LiB5Lya6KKr55yL5L2c4oCc55CQ56KO55qE4oCd6KGl5LiB77yaCisgIOaWh+aho+eahOaLvOWGmeS/ruato+OAggorICDkv67mraPkvJrlvbHlk43liLAgZ3JlcCgxKSDnmoTmi7zlhpnjgIIKKyAg6K2m5ZGK5L+h5oGv5L+u5q2jKOmikee5geeahOaJk+WNsOaXoOeUqOeahOitpuWRiuaYr+S4jeWlveeahOOAgikKKyAg57yW6K+R6ZSZ6K+v5L+u5q2j77yI5Luj56CB6YC76L6R55qE56Gu5piv5a+555qE77yM5Y+q5piv57yW6K+R5pyJ6Zeu6aKY44CC77yJCisgIOi/kOihjOaXtuS/ruato++8iOWPquimgeecn+eahOS/ruato+S6humUmeivr+OAgu+8iQorICDnp7vpmaTkvb/nlKjkuobooqvlup/lvIPnmoTlh73mlbAv5a6P55qE5Luj56CBKOS+i+WmgiBjaGVja19yZWdpb27jgIIpCisgIOiBlOezu+aWueW8j+WSjOaWh+aho+S/ruato+OAggorICDnlKjlj6/np7vmpI3nmoTku6PnoIHmm7/mjaLkuI3lj6/np7vmpI3nmoTku6PnoIHvvIjljbPkvb/lnKjkvZPns7vnu5PmnoTnm7jlhbPnmoTku6PnoIHkuK3vvIzml6LnhLbmnIkKKyAg5Lq65ou36LSd77yM5Y+q6KaB5a6D5piv55CQ56KO55qE77yJCisgIOS7u+S9leaWh+S7tueahOS9nOiAhS/nu7TmiqTogIXlr7nor6Xmlofku7bnmoTmlLnliqjvvIjkvovlpoIgcGF0Y2ggbW9ua2V5IOWcqOmHjeS8oOaooeW8j+S4i++8iQorCitFTUFJTDogdHJpdmlhbEBrZXJuZWwub3JnCisKKyjor5Hms6jvvIzlhbPkuo7igJznkJDnoo7ooaXkuIHigJ3nmoTkuIDkupvor7TmmI7vvJrlm6DkuLrljp/mlofnmoTov5nkuIDpg6jliIblhpnlvpfmr5TovoPnroDljZXvvIzmiYDku6XkuI3lvpfkuI0KK+i/neS+i+WGmeS4gOS4i+ivkeazqOOAgiJ0cml2aWFsIui/meS4quiLseaWh+WNleivjeeahOacrOaEj+aYr+KAnOeQkOeijueahO+8jOS4jemHjeimgeeahOOAguKAneS9huaYr+WcqOi/memHjAor5pyJ56iN5b6u5pyJ5LiA5Lqb5Y+Y5YyW77yM5L6L5aaC5a+55LiA5Lqb5piO5pi+55qETlVMTOaMh+mSiOeahOS/ruato++8jOWxnuS6jui/kOihjOaXtuS/ruato++8jOS8muiiq+W9kuexuwor5Yiw55CQ56KO6KGl5LiB6YeM44CC6Jm954S2TlVMTOaMh+mSiOeahOS/ruato+W+iOmHjeimge+8jOS9huaYr+i/meagt+eahOS/ruato+W+gOW+gOW+iOWwj+iAjOS4lOW+iOWuueaYk+W+l+WIsAor5qOA6aqM77yM5omA5Lul5Lmf6KKr5b2S5YWl55CQ56KO6KGl5LiB44CC55CQ56KO6KGl5LiB5pu057K+56Gu55qE5b2S57G75bqU6K+l5pivCivigJxzaW1wbGUsIGxvY2FsaXplZCAmIGVhc3kgdG8gdmVyaWZ54oCd77yM5Lmf5bCx5piv6K+0566A5Y2V55qE77yM5bGA6YOo55qE5ZKM5piT5LqO5qOA6aqM55qE44CCCit0cml2aWFsQGtlcm5lbC5vcmfpgq7ku7bliJfooajnmoTnm67nmoTmmK/pkojlr7nov5nmoLfnmoTooaXkuIHvvIzkuLrmj5DkuqTogIXmj5DkvpvkuIDkuKrkuK3lv4PvvIzmnaUKK+mZjeS9juaPkOS6pOeahOmXqOanm+OAgikKKworNinmsqHmnIkgTUlNRSDnvJbnoIHvvIzmsqHmnInpk77mjqXvvIzmsqHmnInljovnvKnvvIzmsqHmnInpmYTku7bvvIzlj6rmnInnuq/mlofmnKzjgIIKKworTGludXMg5ZKM5YW25LuW55qE5YaF5qC45byA5Y+R6ICF6ZyA6KaB6ZiF6K+75ZKM6K+E6K665L2g5o+Q5Lqk55qE5pS55Yqo44CC5a+55LqO5YaF5qC45byA5Y+R6ICF5p2l6K+0CivvvIzlj6/ku6XigJzlvJXnlKjigJ3kvaDnmoTmlLnliqjlvojph43opoHvvIzkvb/nlKjkuIDoiKznmoQgZS1tYWlsIOW3peWFt++8jOS7luS7rOWwseWPr+S7peWcqOS9oOeahAor5Luj56CB55qE5Lu75L2V5L2N572u5re75Yqg6K+E6K6644CCCisKK+WboOS4uui/meS4quWOn+WboO+8jOaJgOacieeahOaPkOS6pOeahOihpeS4gemDveaYryBlLW1haWwg5Lit4oCc5YaF5bWM4oCd55qE44CCCivorablkYrvvJrlpoLmnpzkvaDkvb/nlKjliarliIct57KY6LS05L2g55qE6KGl5LiB77yM5bCP5b+D5L2g55qE57yW6L6R5Zmo55qE6Ieq5Yqo5o2i6KGM5Yqf6IO956C05Z2P5L2g55qECivooaXkuIHjgIIKKwor5LiN6KaB5bCG6KGl5LiB5L2c5Li6IE1JTUUg57yW56CB55qE6ZmE5Lu277yM5LiN566h5piv5ZCm5Y6L57yp44CC5b6I5aSa5rWB6KGM55qEIGUtbWFpbCDova/ku7bkuI0KK+aYr+S7u+S9leaXtuWAmemDveWwhiBNSU1FIOe8lueggeeahOmZhOS7tuW9k+S9nOe6r+aWh+acrOWPkemAgeeahO+8jOi/meS8muS9v+W+l+WIq+S6uuaXoOazleWcqOS9oOeahAor5Luj56CB5Lit5Yqg6K+E6K6644CC5Y+m5aSW77yMTUlNRSDnvJbnoIHnmoTpmYTku7bkvJrorqkgTGludXMg5aSa6Iqx5LiA54K55pe26Ze05p2l5aSE55CG77yM6L+Z5bCxCivpmY3kvY7kuobkvaDnmoTmlLnliqjooqvmjqXlj5fnmoTlj6/og73mgKfjgIIKKwor6K2m5ZGK77ya5LiA5Lqb6YKu5Lu26L2v5Lu277yM5q+U5aaCIE1vemlsbGEg5Lya5bCG5L2g55qE5L+h5oGv5Lul5aaC5LiL5qC85byP5Y+R6YCB77yaCistLS0tIOmCruS7tuWktCAtLS0tCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWk7IGZvcm1hdD1mbG93ZWQKKy0tLS0g6YKu5Lu25aS0IC0tLS0KK+mXrumimOWcqOS6jiDigJxmb3JtYXQ9Zmxvd2Vk4oCdIOS8muiuqeaOpeaUtuerr+eahOafkOS6m+mCruS7tui9r+S7tuWwhumCruS7tuS4reeahOWItuihqOespuabv+aNogor5oiQ56m65qC85Lul5Y+K5YGa5LiA5Lqb57G75Ly855qE5pu/5o2i44CC6L+Z5qC377yM5L2g5Y+R6YCB55qE5pe25YCZ55yL6LW35p2l5rKh6Zeu6aKY55qE6KGl5LiB5bCx6KKr56C0CivlnY/kuobjgIIKKwor6KaB5L+u5q2j6L+Z5Liq6Zeu6aKY77yM5Y+q6ZyA6KaB5bCG5L2g55qEIG1vemlsbGEg55qEIGRlZmF1bHRzL3ByZWYvbWFpbG5ld3MuanMg5paH5Lu2Civph4znmoQKK3ByZWYoIm1haWxuZXdzLnNlbmRfcGxhaW50ZXh0X2Zsb3dlZCIsIGZhbHNlKTsgLy8gUkZDIDI2NDY9PT09PT09Civkv67mlLnmiJAKK3ByZWYoIm1haWxuZXdzLmRpc3BsYXkuZGlzYWJsZV9mb3JtYXRfZmxvd2VkX3N1cHBvcnQiLCB0cnVlKTsKK+WwseWPr+S7peS6huOAggorCis3KSBlLW1haWwg55qE5aSn5bCPCisKK+e7mSBMaW51cyDlj5HpgIHooaXkuIHnmoTml7blgJnvvIzmsLjov5zmjInnhafnrKw25bCP6IqC6K+055qE5YGa44CCCisKK+Wkp+eahOaUueWKqOWvuemCruS7tuWIl+ihqOS4jeWQiOmAgu+8jOWvueafkOS6m+e7tOaKpOiAheS5n+S4jeWQiOmAguOAguWmguaenOS9oOeahOihpeS4ge+8jOWcqOS4jeWOi+e8qQor55qE5oOF5Ya15LiL77yM6LaF6L+H5LqGNDBrQu+8jOmCo+S5iOS9oOacgOWlveWwhuihpeS4geaUvuWcqOS4gOS4quiDvemAmui/hyBpbnRlcm5ldCDorr/pl67nmoTmnI0KK+WKoeWZqOS4iu+8jOeEtuWQjueUqOaMh+WQkeS9oOeahOihpeS4geeahCBVUkwg5pu/5Luj44CCCisKKzgpIOaMh+WHuuS9oOeahOWGheaguOeJiOacrAorCivlnKjmoIfpopjlkozlnKjooaXkuIHnmoTmj4/ov7DkuK3vvIzmjIflh7rooaXkuIHlr7nlupTnmoTlhoXmoLjnmoTniYjmnKzvvIzmmK/lvojph43opoHnmoTjgIIKKwor5aaC5p6c6KGl5LiB5LiN6IO95bmy5YeA55qE5Zyo5pyA5paw54mI5pys55qE5YaF5qC45LiK5omT5LiK77yMTGludXMg5piv5LiN5Lya5o6l5Y+X5a6D55qE44CCCisKKzkpIOS4jeimgeawlOmmge+8jOe7p+e7reaPkOS6pOOAggorCivlvZPkvaDmj5DkuqTkuobmlLnliqjku6XlkI7vvIzogJDlv4PlnLDnrYnlvoXjgILlpoLmnpwgTGludXMg5Zac5qyi5L2g55qE5pS55Yqo5bm25LiU5ZCM5oSP5a6D77yM6YKj5LmICivlroPlsIblnKjkuIvkuIDkuKrlhoXmoLjlj5HluIPniYjmnKzkuK3lh7rnjrDjgIIKKwor54S26ICM77yM5aaC5p6c5L2g55qE5pS55Yqo5rKh5pyJ5Ye6546w5Zyo5LiL5LiA5Liq54mI5pys55qE5YaF5qC45Lit77yM5Y+v6IO95pyJ6Iul5bmy5Y6f5Zug44CC5YeP5bCR6YKjCivkupvljp/lm6DvvIzkv67mraPplJnor6/vvIzph43mlrDmj5DkuqTmm7TmlrDlkI7nmoTmlLnliqjvvIzmmK/kvaDoh6rlt7HnmoTlt6XkvZzjgIIKKworTGludXPkuI3nu5nlh7rku7vkvZXor4TorrrlsLHigJzkuKLlvIPigJ3kvaDnmoTooaXkuIHmmK/luLjop4HnmoTkuovmg4XjgILlnKjns7vnu5/kuK3ov5nmoLfnmoTkuovmg4XlvogKK+W5s+W4uOOAguWmguaenOS7luayoeacieaOpeWPl+S9oOeahOihpeS4ge+8jOS5n+iuuOaYr+eUseS6juS7peS4i+WOn+WboO+8mgorKiDkvaDnmoTooaXkuIHkuI3og73lnKjmnIDmlrDniYjmnKznmoTlhoXmoLjkuIrlubLlh4DnmoTmiZPkuIrjgIIKKyog5L2g55qE6KGl5LiB5ZyoIGxpbnV4LWtlcm5lbCDpgq7ku7bliJfooajkuK3msqHmnInlvpfliLDlhYXliIbnmoTorqjorrrjgIIKKyog6aOO5qC86Zeu6aKY77yI5Y+C54Wn56ysMuWwj+iKgu+8iQorKiDpgq7ku7bmoLzlvI/pl67popjvvIjph43or7vmnKzoioLvvIkKKyog5L2g55qE5pS55Yqo5pyJ5oqA5pyv6Zeu6aKY44CCCisqIOS7luaUtuWIsOS6huaIkOWQqOeahCBlLW1haWzvvIzogIzkvaDnmoTlnKjmt7fkubHkuK3kuKLlpLHkuobjgIIKKyog5L2g6K6p5Lq65Li66Zq+44CCCisKK+acieeWkemXrueahOaXtuWAme+8jOWcqCBsaW51eC1rZXJuZWwg6YKu5Lu25YiX6KGo5LiK6K+35rGC6K+E6K6644CCCisKKzEwKSDlnKjmoIfpopjkuIrliqDkuIogUEFUQ0gg55qE5a2X5qC3CisKK0xpbnVzIOWSjCBsaW51eC1rZXJuZWwg6YKu5Lu25YiX6KGo55qEIGUtbWFpbCDmtYHph4/pg73lvojpq5jvvIzkuIDkuKrpgJrluLjnmoTnuqblrprmmK/moIcKK+mimOihjOS7pSBbUEFUQ0hdIOW8gOWktOOAgui/meagt+WPr+S7peiuqSBMaW51cyDlkozlhbbku5blhoXmoLjlvIDlj5HkurrlkZjlj6/ku6Xku44gZS1tYWlsCivnmoTorqjorrrkuK3lvojovbvmmJPnmoTlsIbooaXkuIHliIbovqjlh7rmnaXjgIIKKworMTHvvInkuLrkvaDnmoTlt6XkvZznrb7lkI0KKwor5Li65LqG5Yqg5by65a+56LCB5YGa5LqG5L2V5LqL55qE6L+96Liq77yM5bCk5YW25piv5a+56YKj5Lqb6YCP6L+H5aW95Yeg5bGC55qE57u05oqk6ICF55qE6KGl5LiB77yM5oiR5LusCivlu7rorq7lnKjlj5HpgIHlh7rljrvnmoTooaXkuIHkuIrliqDkuIDkuKog4oCcc2lnbi1vZmbigJ0g55qE6L+H56iL44CCCisKKyJzaWduLW9mZiIg5piv5Zyo6KGl5LiB55qE5rOo6YeK55qE5pyA5ZCO55qE566A5Y2V55qE5LiA6KGM5paH5a2X77yM6K6k6K+B5L2g57yW5YaZ5LqG5a6D5oiW6ICF5YW25LuWCivkurrmnInmnYPlipvlsIblroPkvZzkuLrlvIDmlL7mupDku6PnoIHnmoTooaXkuIHkvKDpgJLjgILop4TliJnlvojnroDljZXvvJrlpoLmnpzkvaDog73orqTor4HlpoLkuIvkv6Hmga8KK++8mgorICAgICAg5byA5Y+R6ICF5p2l5rqQ6K+B5LmmIDEuMQorICAgICAg5a+55LqO5pys6aG555uu55qE6LSh54yu77yM5oiR6K6k6K+B5aaC5LiL5L+h5oGv77yaCisgICAgICDvvIhh77yJ6L+Z5Lqb6LSh54yu5piv5a6M5YWo5oiW6ICF6YOo5YiG55qE55Sx5oiR5Yib5bu677yM5oiR5pyJ5p2D5Yip5Lul5paH5Lu25Lit5oyH5Ye6CisgICAgICAg55qE5byA5pS+5rqQ5Luj56CB6K645Y+v6K+B5o+Q5Lqk5a6D77yb5oiW6ICFCisgICAgICDvvIhi77yJ6L+Z5Lqb6LSh54yu5Z+65LqO5Lul5YmN55qE5bel5L2c77yM5o2u5oiR5omA55+l77yM6L+Z5Lqb5Lul5YmN55qE5bel5L2c5Y+X5oGw5b2T55qE5byA5pS+CisgICAgICAg5rqQ5Luj56CB6K645Y+v6K+B5L+d5oqk77yM6ICM5LiU77yM5qC55o2u6K645Y+v6K+B77yM5oiR5pyJ5p2D5o+Q5Lqk5L+u5pS55ZCO55qE6LSh54yu77yMCisgICAgICAg5peg6K665piv5a6M5YWo6L+Y5piv6YOo5YiG55Sx5oiR5Yib6YCg77yM6L+Z5Lqb6LSh54yu6YO95L2/55So5ZCM5LiA5Liq5byA5pS+5rqQ5Luj56CB6K645Y+v6K+BCisgICAgICAg77yI6Zmk6Z2e5oiR6KKr5YWB6K6455So5YW25a6D55qE6K645Y+v6K+B77yJ77yM5q2j5aaC5paH5Lu25Lit5oyH5Ye655qE77yb5oiW6ICFCisgICAgICDvvIhj77yJ6L+Z5Lqb6LSh54yu55Sx6K6k6K+B77yIYe+8ie+8jO+8iGLvvInmiJbogIXvvIhj77yJ55qE5Lq655u05o6l5o+Q5L6b57uZ5oiR77yM6ICMCisgICAgICAg5LiU5oiR5rKh5pyJ5L+u5pS55a6D44CCCisgICAgICDvvIhk77yJ5oiR55CG6Kej5bm25ZCM5oSP6L+Z5Liq6aG555uu5ZKM6LSh54yu5piv5YWs5byA55qE77yM6LSh54yu55qE6K6w5b2V77yI5YyF5ous5oiRCisgICAgICAg5LiA6LW35o+Q5Lqk55qE5Liq5Lq66K6w5b2V77yM5YyF5ousIHNpZ24tb2ZmIO+8ieiiq+awuOS5hee7tOaKpOW5tuS4lOWPr+S7peWSjOi/meS4qumhueebrgorICAgICAgIOaIluiAheW8gOaUvua6kOS7o+eggeeahOiuuOWPr+ivgeWQjOatpeWcsOWGjeWPkeihjOOAggorICAgICAgIOmCo+S5iOWKoOWFpei/meagt+S4gOihjO+8mgorICAgICAgIFNpZ25lZC1vZmYtYnk6IFJhbmRvbSBKIERldmVsb3BlciA8cmFuZG9tQGRldmVsb3Blci5leGFtcGxlLm9yZz4KKwor5L2/55So5L2g55qE55yf5ZCN77yI5oqx5q2J77yM5LiN6IO95L2/55So5YGH5ZCN5oiW6ICF5Yy/5ZCN44CC77yJCisKK+acieS6uuWcqOacgOWQjuWKoOS4iuagh+etvuOAgueOsOWcqOi/meS6m+S4nOilv+S8muiiq+W/veeVpe+8jOS9huaYr+S9oOWPr+S7pei/meagt+WBmu+8jOadpeagh+iusOWFrOWPuAor5YaF6YOo55qE6L+H56iL77yM5oiW6ICF5Y+q5piv5oyH5Ye65YWz5LqOIHNpZ24tb2ZmIOeahOS4gOS6m+eJueauiue7huiKguOAggorCisxMu+8ieagh+WHhuihpeS4geagvOW8jworCivmoIflh4bnmoTooaXkuIHvvIzmoIfpopjooYzmmK/vvJoKKyAgICBTdWJqZWN0OiBbUEFUQ0ggMDAxLzEyM10g5a2Q57O757ufOuS4gOWPpeivneamgui/sAorCivmoIflh4booaXkuIHnmoTkv6HkvZPlrZjlnKjlpoLkuIvpg6jliIbvvJoKKworICAtIOS4gOS4qiAiZnJvbSIg6KGM5oyH5Ye66KGl5LiB5L2c6ICF44CCCisKKyAgLSDkuIDkuKrnqbrooYwKKworICAtIOivtOaYjueahOS4u+S9k++8jOi/meS6m+ivtOaYjuaWh+Wtl+S8muiiq+aLt+i0neWIsOaPj+i/sOivpeihpeS4geeahOawuOS5heaUueWKqOiusOW9lemHjOOAggorCisgIC0g5LiA5Liq55SxIi0tLSLmnoTmiJDnmoTmoIforrDooYwKKworICAtIOS4jeWQiOmAguaUvuWIsOaUueWKqOiusOW9lemHjOeahOmineWklueahOazqOino+OAggorCisgIC0g6KGl5LiB5pys6Lqr77yIZGlmZiDovpPlh7rvvIkKKwor5qCH6aKY6KGM55qE5qC85byP77yM5L2/5b6X5a+55qCH6aKY6KGM5oyJ5a2X5q+N5bqP5o6S5bqP6Z2e5bi455qE5a655piTIC0g5b6I5aSaIGUtbWFpbCDlrqLmiLfnq6/pg70KK+WPr+S7peaUr+aMgSAtIOWboOS4uuW6j+WIl+WPt+aYr+eUqOmbtuWhq+WFheeahO+8jOaJgOS7peaMieaVsOWtl+aOkuW6j+WSjOaMieWtl+avjeaOkuW6j+aYr+S4gOagt+eahOOAggorCitlLW1haWwg5qCH6aKY5Lit55qE4oCc5a2Q57O757uf4oCd5qCH6K+G5ZOq5Liq5YaF5qC45a2Q57O757uf5bCG6KKr5omT6KGl5LiB44CCCisKK2UtbWFpbCDmoIfpopjkuK3nmoTigJzkuIDlj6Xor53mpoLov7DigJ3mibzopoHnmoTmj4/ov7AgZS1tYWlsIOS4reeahOihpeS4geOAguKAnOS4gOWPpeivneamgui/sOKAnQor5LiN5bqU6K+l5piv5LiA5Liq5paH5Lu25ZCN44CC5a+55LqO5LiA5Liq6KGl5LiB57O75YiX77yI4oCc6KGl5LiB57O75YiX4oCd5oyH5LiA57O75YiX55qE5aSa5Liq55u45YWz6KGlCivkuIHvvInvvIzkuI3opoHlr7nmr4/kuKrooaXkuIHpg73kvb/nlKjlkIzmoLfnmoTigJzkuIDlj6Xor53mpoLov7DigJ3jgIIKKwor6K6w5L2PIGUtbWFpbCDnmoTigJzkuIDlj6Xor53mpoLov7DigJ3kvJrmiJDkuLror6XooaXkuIHnmoTlhajlsYDllK/kuIDmoIfor4bjgILlroPkvJrolJPlu7bliLAgZ2l0CivnmoTmlLnliqjorrDlvZXph4zjgILnhLblkI7igJzkuIDlj6Xor53mpoLov7DigJ3kvJrooqvnlKjlnKjlvIDlj5HogIXnmoTorqjorrrph4zvvIznlKjmnaXmjIfku6Pov5nkuKrooaUKK+S4geOAgueUqOaIt+WwhuW4jOacm+mAmui/hyBnb29nbGUg5p2l5pCc57SiIuS4gOWPpeivneamgui/sCLmnaXmib7liLDpgqPkupvorqjorrrov5nkuKrooaXkuIHnmoTmlocKK+eroOOAggorCivkuIDkupvmoIfpopjnmoTkvovlrZDvvJoKKworICAgIFN1YmplY3Q6IFtwYXRjaCAyLzVdIGV4dDI6IGltcHJvdmUgc2NhbGFiaWxpdHkgb2YgYml0bWFwIHNlYXJjaGluZworICAgIFN1YmplY3Q6IFtQQVRDSHYyIDAwMS8yMDddIHg4NjogZml4IGVmbGFncyB0cmFja2luZworCisiZnJvbSIg6KGM5piv5L+h5L2T6YeM55qE5pyA5LiK6Z2i5LiA6KGM77yM5YW35pyJ5aaC5LiL5qC85byP77yaCisgICAgICAgIEZyb206IE9yaWdpbmFsIEF1dGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgorCisiZnJvbSIg6KGM5oyH5piO5Zyo5rC45LmF5pS55Yqo5pel5b+X6YeM77yM6LCB5Lya6KKr56Gu6K6k5Li65L2c6ICF44CC5aaC5p6c5rKh5pyJICJmcm9tIiDooYzvvIzpgqMKK+S5iOmCruS7tuWktOmHjOeahCAiRnJvbTogIiDooYzkvJrooqvnlKjmnaXlhrPlrprmlLnliqjml6Xlv5fkuK3nmoTkvZzogIXjgIIKKwor6K+05piO55qE5Li76aKY5bCG5Lya6KKr5o+Q5Lqk5Yiw5rC45LmF55qE5rqQ5Luj56CB5pS55Yqo5pel5b+X6YeM77yM5Zug5q2k5a+56YKj5Lqb5pep5bey57uP5LiN6K6w5b6X5ZKMCivov5nkuKrooaXkuIHnm7jlhbPnmoTorqjorrrnu4boioLnmoTmnInog73lipvnmoTor7vogIXmnaXor7TvvIzmmK/mnInmhI/kuYnnmoTjgIIKKworIi0tLSIg5qCH6K6w6KGM5a+55LqO6KGl5LiB5aSE55CG5bel5YW36KaB5om+5Yiw5ZOq6YeM5piv5pS55Yqo5pel5b+X5L+h5oGv55qE57uT5p2f77yM5piv5LiN5Y+v57y65bCRCivnmoTjgIIKKwor5a+55LqOICItLS0iIOagh+iusOS5i+WQjueahOmineWkluazqOino++8jOS4gOS4quWlveeahOeUqOmAlOWwseaYr+eUqOadpeWGmSBkaWZmc3RhdO+8jOeUqOadpeaYvgor56S65L+u5pS55LqG5LuA5LmI5paH5Lu25ZKM5q+P5Liq5paH5Lu26YO95aKe5Yqg5ZKM5Yig6Zmk5LqG5aSa5bCR6KGM44CCZGlmZnN0YXQg5a+55LqO5q+U6L6D5aSn55qE6KGlCivkuIHnibnliKvmnInnlKjjgILlhbbkvZnpgqPkupvlj6rmmK/lkozml7bliLvmiJbogIXlvIDlj5HogIXnm7jlhbPnmoTms6jop6PvvIzkuI3lkIjpgILmlL7liLDmsLjkuYXnmoTmlLkKK+WKqOaXpeW/l+mHjOeahO+8jOS5n+W6lOivpeaUvui/memHjOOAggor5L2/55SoIGRpZmZzdGF055qE6YCJ6aG5ICItcCAxIC13IDcwIiDov5nmoLfmlofku7blkI3lsLHkvJrku47lhoXmoLjmupDku6PnoIHmoJHnmoTnm67lvZXlvIDlp4sKK++8jOS4jeS8muWNoOeUqOWkquWuveeahOepuumXtO+8iOW+iOWuueaYk+mAguWQiDgw5YiX55qE5a695bqm77yM5Lmf6K645Lya5pyJ5LiA5Lqb57yp6L+b44CC77yJCisKK+WcqOWQjumdoueahOWPguiAg+i1hOaWmeS4reiDveeci+WIsOmAguW9k+eahOihpeS4geagvOW8j+eahOabtOWkmue7huiKguOAggorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCivnrKzkuozoioIg5o+Q56S677yM5bu66K6u5ZKM6K+A56qNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK+acrOiKguWMheWQq+W+iOWkmuWSjOaPkOS6pOWIsOWGheaguOeahOS7o+eggeacieWFs+eahOmAmuW4uOeahCLop4TliJki44CC5LqL5oOF5rC46L+c5pyJ5L6L5aSWLi4u5L2G5pivCivkvaDlv4XpobvnnJ/nmoTmnInlpb3nmoTnkIbnlLHov5nmoLflgZrjgILkvaDlj6/ku6XmiormnKzoioLlj6vlgZpMaW51c+eahOiuoeeul+acuuenkeWtpuWFpemXqOivvuOAggorCisxKSDor7sgRG9jdW1lbnQvQ29kaW5nU3R5bGUKKworTnVmZiDor7Tov4fvvIzlpoLmnpzkvaDnmoTku6PnoIHlkozov5nkuKrlgY/nprvlpKrlpJrvvIzpgqPkuYjlroPmnInlj6/og73kvJrooqvmi5Lnu53vvIzmsqHmnInmm7TlpJrnmoQKK+Wuoeafpe+8jOayoeacieabtOWkmueahOivhOS7t+OAggorCisyKSAjaWZkZWYg5piv5LiR6ZmL55qECivmt7fmnYLkuoYgaWZkZWYg55qE5Luj56CB6Zq+5Lul6ZiF6K+75ZKM57u05oqk44CC5Yir6L+Z5qC35YGa44CC5L2c5Li65pu/5Luj77yM5bCG5L2g55qEIGlmZGVmIOaUvgor5Zyo5aS05paH5Lu26YeM77yM5pyJ5p2h5Lu25Zyw5a6a5LmJICJzdGF0aWMgaW5saW5lIiDlh73mlbDvvIzmiJbogIXlro/vvIzlnKjku6PnoIHph4znlKjov5nkupvkuJwKK+ilv+OAguiuqee8luivkeWZqOaKiumCo+S6myLnqbrmk43kvZwi5LyY5YyW5o6J44CCCisKK+S4gOS4queugOWNleeahOS+i+WtkO+8jOS4jeWlveeahOS7o+egge+8mgorCisgICAgZGV2ID0gYWxsb2NfZXRoZXJkZXYgKHNpemVvZihzdHJ1Y3QgZnVua3lfcHJpdmF0ZSkpOworICAgIGlmICghZGV2KQorICAgICAgICByZXR1cm4gLUVOT0RFVjsKKyAgICAjaWZkZWYgQ09ORklHX05FVF9GVU5LSU5FU1MKKyAgICBpbml0X2Z1bmt5X25ldChkZXYpOworICAgICNlbmRpZgorCivmuIXnkIblkI7nmoTkvovlrZA6CisKKyjlpLTmlofku7bph4wpCisgICAgI2lmbmRlZiBDT05GSUdfTkVUX0ZVTktJTkVTUworICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X2Z1bmt5X25ldCAoc3RydWN0IG5ldF9kZXZpY2UgKmQpIHt9CisgICAgI2VuZGlmCisKKyjku6PnoIHmlofku7bph4wpCisgICAgZGV2ID0gYWxsb2NfZXRoZXJkZXYgKHNpemVvZihzdHJ1Y3QgZnVua3lfcHJpdmF0ZSkpOworICAgIGlmICghZGV2KQorICAgICAgICByZXR1cm4gLUVOT0RFVjsKKyAgICBpbml0X2Z1bmt5X25ldChkZXYpOworCiszKSAnc3RhdGljIGlubGluZScg5q+U5a6P5aW9CisKK1N0YXRpYyBpbmxpbmUg5Ye95pWw55u45q+U5a6P5p2l6K+077yM5piv5aW95b6X5aSa55qE6YCJ5oup44CCU3RhdGljIGlubGluZSDlh73mlbDmj5DkvpvkuoYKK+exu+Wei+WuieWFqO+8jOayoeaciemVv+W6pumZkOWItu+8jOayoeacieagvOW8j+mZkOWItu+8jOWcqCBnY2Mg5LiL5byA6ZSA5ZKM5a6P5LiA5qC35bCP44CCCisKK+Wuj+WPquWcqCBzdGF0aWMgaW5saW5lIOWHveaVsOS4jeaYr+acgOS8mOeahOaXtuWAmVvlnKggZmFzdCBwYXRocyDph4zmnInlvojlsJHnmoTni6znq4vnmoQKK+ahiOS+i13vvIzmiJbogIXkuI3lj6/og73nlKggc3RhdGljIGlubGluZSDlh73mlbDnmoTml7blgJlb5L6L5aaC5a2X56ym5Liy5YiG6YWNXeOAggor5bqU6K+l55SoICdzdGF0aWMgaW5saW5lJyDogIzkuI3mmK8gJ3N0YXRpYyBfX2lubGluZV9fJywgJ2V4dGVybiBpbmxpbmUnIOWSjAorJ2V4dGVybiBfX2lubGluZV9fJyDjgIIKKworNCkg5LiN6KaB6L+H5bqm6K6+6K6hCisKK+S4jeimgeivleWbvumihOiuoeaooeeziueahOacquadpeS6i+aDhe+8jOi/meS6m+S6i+aDheS5n+iuuOacieeUqOS5n+iuuOayoeacieeUqO+8miLorqnkuovmg4XlsL3lj6/og73nmoQKK+eugOWNle+8jOiAjOS4jeaYr+abtOeugOWNlSLjgIIKKworLS0tLS0tLS0tLS0tLS0tLQor56ys5LiJ6IqCIOWPguiAg+aWh+eMrgorLS0tLS0tLS0tLS0tLS0tLQorCitBbmRyZXcgTW9ydG9uLCAiVGhlIHBlcmZlY3QgcGF0Y2giICh0cHApLgorICA8aHR0cDovL3d3dy5vemxhYnMub3JnL35ha3BtL3N0dWZmL3RwcC50eHQ+CisKK0plZmYgR2FyemlrLCAiTGludXgga2VybmVsIHBhdGNoIHN1Ym1pc3Npb24gZm9ybWF0Ii4KKyAgPGh0dHA6Ly9saW51eC55eXoudXMvcGF0Y2gtZm9ybWF0Lmh0bWw+CisKK0dyZWcgS3JvYWgtSGFydG1hbiwgIkhvdyB0byBwaXNzIG9mZiBhIGtlcm5lbCBzdWJzeXN0ZW0gbWFpbnRhaW5lciIuCisgIDxodHRwOi8vd3d3Lmtyb2FoLmNvbS9sb2cvMjAwNS8wMy8zMS8+CisgIDxodHRwOi8vd3d3Lmtyb2FoLmNvbS9sb2cvMjAwNS8wNy8wOC8+CisgIDxodHRwOi8vd3d3Lmtyb2FoLmNvbS9sb2cvMjAwNS8xMC8xOS8+CisgIDxodHRwOi8vd3d3Lmtyb2FoLmNvbS9sb2cvMjAwNi8wMS8xMS8+CisKK05PISEhISBObyBtb3JlIGh1Z2UgcGF0Y2ggYm9tYnMgdG8gbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZyBwZW9wbGUhCisgIDxodHRwczovL2xrbWwub3JnL2xrbWwvMjAwNS83LzExLzMzNj4KKworS2VybmVsIERvY3VtZW50YXRpb24vQ29kaW5nU3R5bGU6CisgIDxodHRwOi8vc29zZGcub3JnL35jb3l3b2xmL2x4ci9zb3VyY2UvRG9jdW1lbnRhdGlvbi9Db2RpbmdTdHlsZT4KKworTGludXMgVG9ydmFsZHMncyBtYWlsIG9uIHRoZSBjYW5vbmljYWwgcGF0Y2ggZm9ybWF0OgorICA8aHR0cDovL2xrbWwub3JnL2xrbWwvMjAwNS80LzcvMTgzPgorLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vemhfQ04vYXJtL0Jvb3RpbmcgYi9Eb2N1bWVudGF0aW9uL3poX0NOL2FybS9Cb290aW5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxNThhNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3poX0NOL2FybS9Cb290aW5nCkBAIC0wLDAgKzEsMTc1IEBACitDaGluZXNlIHRyYW5zbGF0ZWQgdmVyc2lvbiBvZiBEb2N1bWVudGF0aW9uL2FybS9Cb290aW5nCisKK0lmIHlvdSBoYXZlIGFueSBjb21tZW50IG9yIHVwZGF0ZSB0byB0aGUgY29udGVudCwgcGxlYXNlIGNvbnRhY3QgdGhlCitvcmlnaW5hbCBkb2N1bWVudCBtYWludGFpbmVyIGRpcmVjdGx5LiAgSG93ZXZlciwgaWYgeW91IGhhdmUgYSBwcm9ibGVtCitjb21tdW5pY2F0aW5nIGluIEVuZ2xpc2ggeW91IGNhbiBhbHNvIGFzayB0aGUgQ2hpbmVzZSBtYWludGFpbmVyIGZvcgoraGVscC4gIENvbnRhY3QgdGhlIENoaW5lc2UgbWFpbnRhaW5lciBpZiB0aGlzIHRyYW5zbGF0aW9uIGlzIG91dGRhdGVkCitvciBpZiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgdHJhbnNsYXRpb24uCisKK01haW50YWluZXI6IFJ1c3NlbGwgS2luZyA8bGludXhAYXJtLmxpbnV4Lm9yZy51az4KK0NoaW5lc2UgbWFpbnRhaW5lcjogRnUgV2VpIDx0ZWtrYW1hbm5pbmphQGdtYWlsLmNvbT4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRG9jdW1lbnRhdGlvbi9hcm0vQm9vdGluZyDnmoTkuK3mlofnv7vor5EKKwor5aaC5p6c5oOz6K+E6K665oiW5pu05paw5pys5paH55qE5YaF5a6577yM6K+355u05o6l6IGU57O75Y6f5paH5qGj55qE57u05oqk6ICF44CC5aaC5p6c5L2g5L2/55So6Iux5paHCivkuqTmtYHmnInlm7Dpmr7nmoTor53vvIzkuZ/lj6/ku6XlkJHkuK3mlofniYjnu7TmiqTogIXmsYLliqnjgILlpoLmnpzmnKznv7vor5Hmm7TmlrDkuI3lj4rml7bmiJbogIXnv7sKK+ivkeWtmOWcqOmXrumimO+8jOivt+iBlOezu+S4reaWh+eJiOe7tOaKpOiAheOAggorCivoi7HmlofniYjnu7TmiqTogIXvvJogUnVzc2VsbCBLaW5nIDxsaW51eEBhcm0ubGludXgub3JnLnVrPgor5Lit5paH54mI57u05oqk6ICF77yaIOWCheeCnCAgRnUgV2VpIDx0ZWtrYW1hbm5pbmphQGdtYWlsLmNvbT4KK+S4reaWh+eJiOe/u+ivkeiAhe+8miDlgoXngpwgIEZ1IFdlaSA8dGVra2FtYW5uaW5qYUBnbWFpbC5jb20+CivkuK3mlofniYjmoKHor5HogIXvvJog5YKF54KcICBGdSBXZWkgPHRla2thbWFubmluamFAZ21haWwuY29tPgorCivku6XkuIvkuLrmraPmlocKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJCQnlkK/liqggQVJNIExpbnV4CisJCQk9PT09PT09PT09PT09PQorCivkvZzogIXvvJpSdXNzZWxsIEtpbmcKK+aXpeacn++8mjIwMDLlubQ15pyIMTjml6UKKwor5Lul5LiL5paH5qGj6YCC55So5LqOIDIuNC4xOC1ybWs2IOWPiuS7peS4iueJiOacrOOAggorCivkuLrkuoblkK/liqggQVJNIExpbnV477yM5L2g6ZyA6KaB5LiA5Liq5byV5a+86KOF6L2956iL5bqP77yIYm9vdCBsb2FkZXLvvInvvIwKK+Wug+aYr+S4gOS4quWcqOS4u+WGheaguOWQr+WKqOWJjei/kOihjOeahOS4gOS4quWwj+eoi+W6j+OAguW8leWvvOijhei9veeoi+W6j+mcgOimgeWIneWni+WMluWQhOenjQor6K6+5aSH77yM5bm25pyA57uI6LCD55SoIExpbnV4IOWGheaguO+8jOWwhuS/oeaBr+S8oOmAkue7meWGheaguOOAggorCivku47mnKzotKjkuIrorrLvvIzlvJXlr7zoo4Xovb3nqIvluo/lupTmj5DkvpvvvIjoh7PlsJHvvInku6XkuIvlip/og73vvJoKKworMeOAgeiuvue9ruWSjOWIneWni+WMliBSQU3jgIIKKzLjgIHliJ3lp4vljJbkuIDkuKrkuLLlj6PjgIIKKzPjgIHmo4DmtYvmnLrlmajnmoTnsbvlnovvvIhtYWNoaW5lIHR5cGXvvInjgIIKKzTjgIHorr7nva7lhoXmoLjmoIfnrb7liJfooajvvIh0YWdnZWQgbGlzdO+8ieOAggorNeOAgeiwg+eUqOWGheaguOaYoOWDj+OAggorCisKKzHjgIHorr7nva7lkozliJ3lp4vljJYgUkFNCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK+eOsOacieeahOW8leWvvOWKoOi9veeoi+W6jzoJCeW8uuWItgor5paw5byA5Y+R55qE5byV5a+85Yqg6L2956iL5bqPOgkJ5by65Yi2CisKK+W8leWvvOijhei9veeoi+W6j+W6lOivpeaJvuWIsOW5tuWIneWni+WMluezu+e7n+S4reaJgOacieWGheaguOeUqOS6juS/neaMgeezu+e7n+WPmOmHj+aVsOaNrueahCBSQU3jgIIKK+i/meS4quaTjeS9nOeahOaJp+ihjOaYr+iuvuWkh+S+nei1lueahOOAgu+8iOWug+WPr+iDveS9v+eUqOWGhemDqOeul+azleadpeiHquWKqOWumuS9jeWSjOiuoeeul+aJgOaciQorUkFN77yM5oiW5Y+v6IO95L2/55So5a+56L+Z5Liq6K6+5aSH5bey55+l55qEIFJBTSDkv6Hmga/vvIzov5jlj6/og73kvb/nlKjku7vkvZXlvJXlr7zoo4Xovb3nqIvluo8KK+iuvuiuoeiAheaDs+WIsOeahOWMuemFjeaWueazleOAgu+8iQorCisKKzLjgIHliJ3lp4vljJbkuIDkuKrkuLLlj6MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK+eOsOacieeahOW8leWvvOWKoOi9veeoi+W6jzoJCeWPr+mAieOAgeW7uuiurgor5paw5byA5Y+R55qE5byV5a+85Yqg6L2956iL5bqPOgkJ5Y+v6YCJ44CB5bu66K6uCisKK+W8leWvvOWKoOi9veeoi+W6j+W6lOivpeWIneWni+WMluW5tuS9v+iDveS4gOS4quebruagh+adv+S4iueahOS4suWPo+OAgui/meWFgeiuuOWGheaguOS4suWPo+mpseWKqAor6Ieq5Yqo5qOA5rWL5ZOq5Liq5Liy5Y+j55So5LqO5YaF5qC45o6n5Yi25Y+w44CCKOS4gOiIrOeUqOS6juiwg+ivleaIluS4juebruagh+adv+mAmuS/oeOAgikKKwor5L2c5Li65pu/5Luj5pa55qGI77yM5byV5a+85Yqg6L2956iL5bqP5Lmf5Y+v5Lul6YCa6L+H5qCH562+5YiX6KGo5Lyg6YCS55u45YWz55qEJ2NvbnNvbGU9Jwor6YCJ6aG557uZ5YaF5qC45Lul5oyH5a6a5p+Q5Liq5Liy5Y+j77yM6ICM5Liy5Y+j5pWw5o2u5qC85byP55qE6YCJ6aG55Zyo5Lul5LiL5paH5qGj5Lit5o+P6L+w77yaCisKKyAgICAgICBEb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dOOAggorCisKKzPjgIHmo4DmtYvmnLrlmajnsbvlnosKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK+eOsOacieeahOW8leWvvOWKoOi9veeoi+W6jzoJCeWPr+mAiQor5paw5byA5Y+R55qE5byV5a+85Yqg6L2956iL5bqPOgkJ5by65Yi2CisKK+W8leWvvOWKoOi9veeoi+W6j+W6lOivpemAmui/h+afkOS6m+aWueW8j+ajgOa1i+iHqui6q+aJgOWkhOeahOacuuWZqOexu+Wei+OAgui/meaYr+S4gOS4quehrOS7tgor5Luj56CB5oiW6YCa6L+H5p+l55yL5omA6L+e5o6l55qE56Gs5Lu255So5p+Q5Lqb566X5rOV5b6X5Yiw77yM6L+Z5Lqb6LaF5Ye65LqG5pys5paH5qGj55qE6IyD5Zu044CCCivlvJXlr7zliqDovb3nqIvluo/mnIDnu4jlv4Xpobvog73mj5DkvpvkuIDkuKogTUFDSF9UWVBFX3h4eCDlgLznu5nlhoXmoLjjgIIKKyjor6bop4EgbGludXgvYXJjaC9hcm0vdG9vbHMvbWFjaC10eXBlcyAp44CCCisKKzTjgIHorr7nva7lkK/liqjmlbDmja4KKy0tLS0tLS0tLS0tLS0tLS0tLQorCivnjrDmnInnmoTlvJXlr7zliqDovb3nqIvluo86CQnlj6/pgInjgIHlvLrng4jlu7rorq4KK+aWsOW8gOWPkeeahOW8leWvvOWKoOi9veeoi+W6jzoJCeW8uuWItgorCivlvJXlr7zliqDovb3nqIvluo/lv4Xpobvmj5DkvpvmoIfnrb7liJfooajmiJbogIUgZHRiIOaYoOWDj+S7peS8oOmAkumFjee9ruaVsOaNrue7meWGheaguOOAguWQr+WKqAor5pWw5o2u55qE54mp55CG5Zyw5Z2A6YCa6L+H5a+E5a2Y5ZmoIHIyIOS8oOmAkue7meWGheaguOOAggorCis0YeOAgeiuvue9ruWGheaguOagh+etvuWIl+ihqAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYm9vdGxvYWRlciDlv4XpobvliJvlu7rlkozliJ3lp4vljJblhoXmoLjmoIfnrb7liJfooajjgILkuIDkuKrmnInmlYjnmoTmoIfnrb7liJfooajku6UKK0FUQUdfQ09SRSDmoIfnrb7lvIDlp4vvvIzlubbku6UgQVRBR19OT05FIOagh+etvue7k+adn+OAgkFUQUdfQ09SRSDmoIfnrb7lj6/ku6XmmK8KK+epuueahO+8jOS5n+WPr+S7peaYr+mdnuepuuOAguS4gOS4quepuiBBVEFHX0NPUkUg5qCH562+5YW2IHNpemUg5Z+f6K6+572u5Li6CivigJgy4oCZKDB4MDAwMDAwMDIp44CCQVRBR19OT05FIOagh+etvueahCBzaXplIOWfn+W/hemhu+iuvue9ruS4uumbtuOAggorCivlnKjliJfooajkuK3lj6/ku6Xkv53lrZjku7vmhI/mlbDph4/nmoTmoIfnrb7jgILlr7nkuo7kuIDkuKrph43lpI3nmoTmoIfnrb7mmK/ov73liqDliLDkuYvliY3moIfnrb4KK+aJgOaQuuW4pueahOS/oeaBr+S5i+WQju+8jOi/mOaYr+S8muimhuebluWOn+adpeeahOS/oeaBr++8jOaYr+acquWumuS5ieeahOOAguafkOS6m+agh+etvueahOihjOS4ugor5piv5YmN6ICF77yM5YW25LuW5piv5ZCO6ICF44CCCisKK2Jvb3Rsb2FkZXIg5b+F6aG75Lyg6YCS5LiA5Liq57O757uf5YaF5a2Y55qE5L2N572u5ZKM5pyA5bCP5YC877yM5Lul5Y+K5qC55paH5Lu257O757uf5L2N572u44CCCivlm6DmraTvvIzmnIDlsI/nmoTmoIfnrb7liJfooajlpoLkuIvmiYDnpLrvvJoKKworCQkrLS0tLS0tLS0tLS0rCivln7rlnLDlnYAgLT4JfCBBVEFHX0NPUkUgfCAgfAorCQkrLS0tLS0tLS0tLS0rICB8CisJCXwgQVRBR19NRU0gIHwgIHwg5Zyw5Z2A5aKe6ZW/5pa55ZCRCisJCSstLS0tLS0tLS0tLSsgIHwKKwkJfCBBVEFHX05PTkUgfCAgfAorCQkrLS0tLS0tLS0tLS0rICB2CisKK+agh+etvuWIl+ihqOW6lOivpeS/neWtmOWcqOezu+e7n+eahCBSQU0g5Lit44CCCisKK+agh+etvuWIl+ihqOW/hemhu+e9ruS6juWGheaguOiHquino+WOi+WSjCBpbml0cmQnYm9vdHAnIOeoi+W6j+mDveS4jeS8muimhueblueahOWGheWtmOWMuuOAggor5bu66K6u5pS+5ZyoIFJBTSDnmoTlpLQgMTZLaUIg5Lit44CCCisKKzRi44CB6K6+572u6K6+5aSH5qCRCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Jvb3Rsb2FkZXIg5b+F6aG75LulIDY0Yml0IOWcsOWdgOWvuem9kOeahOW9ouW8j+WKoOi9veS4gOS4quiuvuWkh+agkeaYoOWDjyhkdGIp5Yiw57O757ufCitSQU0g5Lit77yM5bm255So5ZCv5Yqo5pWw5o2u5Yid5aeL5YyW5a6D44CCZHRiIOagvOW8j+WcqOaWh+ahoworRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jvb3Rpbmctd2l0aG91dC1vZi50eHQg5Lit44CC5YaF5qC45bCG5Lya5ZyoCitkdGIg54mp55CG5Zyw5Z2A5aSE5p+l5om+IGR0YiDprZTmlbDlgLzvvIgweGQwMGRmZWVk77yJ77yM5Lul56Gu5a6aIGR0YiDmmK/lkKblt7Lnu4/ku6Pmm78KK+agh+etvuWIl+ihqOiiq+S8oOmAkui/m+adpeOAggorCitib290bG9hZGVyIOW/hemhu+S8oOmAkuS4gOS4quezu+e7n+WGheWtmOeahOS9jee9ruWSjOacgOWwj+WAvO+8jOS7peWPiuagueaWh+S7tuezu+e7n+S9jee9ruOAggorZHRiIOW/hemhu+e9ruS6juWGheaguOiHquino+WOi+S4jeS8muimhueblueahOWGheWtmOWMuuOAguW7uuiuruWwhuWFtuaUvue9ruS6jiBSQU0g55qE5aS0IDE2S2lCCivkuK3jgILkvYbmmK/kuI3lj6/lsIblhbbmlL7nva7kuo7igJww4oCd54mp55CG5Zyw5Z2A5aSE77yM5Zug5Li65YaF5qC46K6k5Li677yacjIg5Lit5Li6IDDvvIzmhI/lkbPnnYAKK+ayoeacieagh+etvuWIl+ihqOWSjCBkdGIg5Lyg6YCS6L+H5p2l44CCCisKKzXjgIHosIPnlKjlhoXmoLjmmKDlg48KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCivnjrDmnInnmoTlvJXlr7zliqDovb3nqIvluo86CQnlvLrliLYKK+aWsOW8gOWPkeeahOW8leWvvOWKoOi9veeoi+W6jzoJCeW8uuWItgorCivosIPnlKjlhoXmoLjmmKDlg48gekltYWdlIOacieS4pOS4qumAieaLqeOAguWmguaenCB6SW1nZSDkv53lrZjlnKggZmxhc2gg5Lit77yM5LiU5piv5Li65LqGCivlnKggZmxhc2gg5Lit55u05o6l6L+Q6KGM6ICM6KKr5q2j56Gu6ZO+5o6l55qE44CC6L+Z5qC35byV5a+85Yqg6L2956iL5bqP5bCx5Y+v5Lul5ZyoIGZsYXNoIOS4rQor55u05o6l6LCD55SoIHpJbWFnZeOAggorCit6SW1hZ2Ug5Lmf5Y+v5Lul6KKr5pS+5Zyo57O757ufIFJBTe+8iOS7u+aEj+S9jee9ru+8ieS4reiiq+iwg+eUqOOAguazqOaEj++8muWGheaguOS9v+eUqOaYoOWDjwor5Z+65Zyw5Z2A55qE5YmNIDE2S0IgUkFNIOepuumXtOadpeS/neWtmOmhteihqOOAguW7uuiuruWwhuaYoOWDj+e9ruS6jiBSQU0g55qEIDMyS0Ig5aSE44CCCisKK+WvueS6juS7peS4iuS7u+aEj+S4gOenjeaDheWGte+8jOmDveW/hemhu+espuWQiOS7peS4i+WQr+WKqOeKtuaAge+8mgorCistIOWBnOatouaJgOaciSBETUEg6K6+5aSH77yM6L+Z5qC35YaF5a2Y5pWw5o2u5bCx5LiN5Lya5Zug5Li66Jma5YGH572R57uc5YyF5oiW56OB55uY5pWw5o2u6ICM6KKr56C05Z2P44CCCisgIOi/meWPr+iDveWPr+S7peiKguecgeS9oOiuuOWkmueahOiwg+ivleaXtumXtOOAggorCistIENQVSDlr4TlrZjlmajphY3nva4KKyAgcjAgPSAw77yMCisgIHIxID0g77yI5Zyo5LiK6Z2iIDMg5Lit6I635Y+W55qE77yJ5py65Zmo57G75Z6L56CB44CCCisgIHIyID0g5qCH562+5YiX6KGo5Zyo57O757ufIFJBTSDkuK3nmoTniannkIblnLDlnYDvvIzmiJYKKyAgICAgICDorr7lpIfmoJHlnZcoZHRiKeWcqOezu+e7nyBSQU0g5Lit55qE54mp55CG5Zyw5Z2ACisKKy0gQ1BVIOaooeW8jworICDmiYDmnInlvaLlvI/nmoTkuK3mlq3lv4XpobvooqvnpoHmraIgKElSUXMg5ZKMIEZJUXMpCisgIENQVSDlv4XpobvlpITkuo4gU1ZDIOaooeW8j+OAgijlr7nkuo4gQW5nZWwg6LCD6K+V5pyJ54m55L6L5a2Y5ZyoKQorCistIOe8k+WtmO+8jE1NVXMKKyAgTU1VIOW/hemhu+WFs+mXreOAggorICDmjIfku6TnvJPlrZjlvIDlkK/miJblhbPpl63pg73lj6/ku6XjgIIKKyAg5pWw5o2u57yT5a2Y5b+F6aG75YWz6Zet44CCCisKKy0g5byV5a+85Yqg6L2956iL5bqP5bqU6K+l6YCa6L+H55u05o6l6Lez6L2s5Yiw5YaF5qC45pig5YOP55qE56ys5LiA5p2h5oyH5Luk5p2l6LCD55So5YaF5qC45pig5YOP44CCCisKKyAg5a+55LqO5pSv5oyBIEFSTSDmjIfku6Tpm4bnmoQgQ1BV77yM6Lez5YWl5YaF5qC45YWl5Y+j5pe25b+F6aG75aSE5ZyoIEFSTSDnirbmgIHvvIzljbPkvb8KKyAg5a+55LqOIFRodW1iLTIg5YaF5qC45Lmf5piv5aaC5q2k44CCCisKKyAg5a+55LqO5LuF5pSv5oyBIFRodW1iIOaMh+S7pOmbhueahCBDUFXvvIzmr5TlpoIgQ29ydGV4LU0g57O75YiX55qEIENQVe+8jOi3s+WFpQorICDlhoXmoLjlhaXlj6Pml7blv4XpobvlpITkuo4gVGh1bWIg54q25oCB44CCCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3poX0NOL2FybS9rZXJuZWxfdXNlcl9oZWxwZXJzLnR4dCBiL0RvY3VtZW50YXRpb24vemhfQ04vYXJtL2tlcm5lbF91c2VyX2hlbHBlcnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkN2ZjOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3poX0NOL2FybS9rZXJuZWxfdXNlcl9oZWxwZXJzLnR4dApAQCAtMCwwICsxLDI4NCBAQAorQ2hpbmVzZSB0cmFuc2xhdGVkIHZlcnNpb24gb2YgRG9jdW1lbnRhdGlvbi9hcm0va2VybmVsX3VzZXJfaGVscGVycy50eHQKKworSWYgeW91IGhhdmUgYW55IGNvbW1lbnQgb3IgdXBkYXRlIHRvIHRoZSBjb250ZW50LCBwbGVhc2UgY29udGFjdCB0aGUKK29yaWdpbmFsIGRvY3VtZW50IG1haW50YWluZXIgZGlyZWN0bHkuICBIb3dldmVyLCBpZiB5b3UgaGF2ZSBhIHByb2JsZW0KK2NvbW11bmljYXRpbmcgaW4gRW5nbGlzaCB5b3UgY2FuIGFsc28gYXNrIHRoZSBDaGluZXNlIG1haW50YWluZXIgZm9yCitoZWxwLiAgQ29udGFjdCB0aGUgQ2hpbmVzZSBtYWludGFpbmVyIGlmIHRoaXMgdHJhbnNsYXRpb24gaXMgb3V0ZGF0ZWQKK29yIGlmIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSB0cmFuc2xhdGlvbi4KKworTWFpbnRhaW5lcjogTmljb2xhcyBQaXRyZSA8bmljb2xhcy5waXRyZUBsaW5hcm8ub3JnPgorCQlEYXZlIE1hcnRpbiA8ZGF2ZS5tYXJ0aW5AbGluYXJvLm9yZz4KK0NoaW5lc2UgbWFpbnRhaW5lcjogRnUgV2VpIDx0ZWtrYW1hbm5pbmphQGdtYWlsLmNvbT4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRG9jdW1lbnRhdGlvbi9hcm0va2VybmVsX3VzZXJfaGVscGVycy50eHQg55qE5Lit5paH57+76K+RCisKK+WmguaenOaDs+ivhOiuuuaIluabtOaWsOacrOaWh+eahOWGheWuue+8jOivt+ebtOaOpeiBlOezu+WOn+aWh+aho+eahOe7tOaKpOiAheOAguWmguaenOS9oOS9v+eUqOiLseaWhwor5Lqk5rWB5pyJ5Zuw6Zq+55qE6K+d77yM5Lmf5Y+v5Lul5ZCR5Lit5paH54mI57u05oqk6ICF5rGC5Yqp44CC5aaC5p6c5pys57+76K+R5pu05paw5LiN5Y+K5pe25oiW6ICF57+7Civor5HlrZjlnKjpl67popjvvIzor7fogZTns7vkuK3mlofniYjnu7TmiqTogIXjgIIKK+iLseaWh+eJiOe7tOaKpOiAhe+8miBOaWNvbGFzIFBpdHJlIDxuaWNvbGFzLnBpdHJlQGxpbmFyby5vcmc+CisJCURhdmUgTWFydGluIDxkYXZlLm1hcnRpbkBsaW5hcm8ub3JnPgor5Lit5paH54mI57u05oqk6ICF77yaIOWCheeCnCBGdSBXZWkgPHRla2thbWFubmluamFAZ21haWwuY29tPgor5Lit5paH54mI57+76K+R6ICF77yaIOWCheeCnCBGdSBXZWkgPHRla2thbWFubmluamFAZ21haWwuY29tPgor5Lit5paH54mI5qCh6K+R6ICF77yaIOWui+WGrOeUnyBEb25nc2hlbmcgU29uZyA8ZG9uZ3NobmVnLnNvbmdAZ21haWwuY29tPgorCQnlgoXngpwgRnUgV2VpIDx0ZWtrYW1hbm5pbmphQGdtYWlsLmNvbT4KKworCivku6XkuIvkuLrmraPmlocKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor5YaF5qC45o+Q5L6b55qE55So5oi356m66Ze06L6F5Yqp5Luj56CBCis9PT09PT09PT09PT09PT09PT09PT09PT09CisKK+WcqOWGheaguOWGheWtmOepuumXtOeahOWbuuWumuWcsOWdgOWkhO+8jOacieS4gOS4queUseWGheaguOaPkOS+m+W5tuWPr+S7jueUqOaIt+epuumXtOiuv+mXrueahOS7o+eggQor5q6144CC5a6D55So5LqO5ZCR55So5oi356m66Ze05o+Q5L6b5Zug5Zyo6K645aSaIEFSTSBDUFUg5Lit5pyq5a6e546w55qE54m55oCn5ZKML+aIluaMh+S7pOiAjOmcgAor5YaF5qC45o+Q5L6b5biu5Yqp55qE5p+Q5Lqb5pON5L2c44CC6L+Z5Lqb5Luj56CB55u05o6l5Zyo55So5oi35qih5byP5LiL5omn6KGM55qE5oOz5rOV5piv5Li65LqG6I635b6XCivmnIDkvbPmlYjnjofvvIzkvYbpgqPkupvkuI7lhoXmoLjorqHmlbDlmajogZTns7vov4fkuo7ntKflr4bnmoTpg6jliIbvvIzliJnooqvnlZnnu5nkuobnlKjmiLflupPlrp7njrDjgIIKK+S6i+WunuS4iu+8jOatpOS7o+eggeeUmuiHs+WPr+iDveWboOS4jeWQjOeahCBDUFUg6ICM5byC77yM6L+Z5Y+W5Yaz5LqO5YW25Y+v55So55qE5oyH5Luk6ZuG5oiW5a6DCivmmK/lkKbkuLogU01QIOezu+e7n+OAguaNouWPpeivneivtO+8jOWGheaguOS/neeVmeWcqOS4jeS9nOWHuuitpuWRiueahOaDheWGteS4i+agueaNrumcgOimgeabtOaUuQor6L+Z5Lqb5Luj56CB55qE5p2D5Yip44CC5Y+q5pyJ5pys5paH5qGj5o+P6L+w55qE5YWl5Y+j5Y+K5YW257uT5p6c5piv5L+d6K+B56iz5a6a55qE44CCCisKK+i/meS4juWujOWFqOaIkOeGn+eahCBWRFNPIOWunueOsOS4jeWQjO+8iOS9huS4pOiAheW5tuS4jeWGsueqge+8ie+8jOWwveeuoeWmguatpO+8jFZEU08g5Y+v6Zi75q2iCivmn5DkupvpgJrov4fluLjph4/pq5jmlYjot7PovazliLDpgqPkupvku6PnoIHmrrXnmoTmsYfnvJbmioDlt6fjgILkuJTnlLHkuo7pgqPkupvku6PnoIHmrrXlnKjov5Tlm57nlKjmiLcKK+S7o+eggeWJjeS7heS9v+eUqOWwkemHj+eahOS7o+eggeWRqOacn++8jOWImeS4gOS4qiBWRFNPIOmXtOaOpei/nOeoi+iwg+eUqOWwhuS8muWcqOi/meS6m+eugOWNleeahAor5pON5L2c5LiK5aKe5Yqg5LiA5Liq5Y+v5rWL6YeP55qE5byA6ZSA44CCCisKK+WcqOWvuemCo+S6m+aLpeacieWOn+eUn+aUr+aMgeeahOaWsOWei+WkhOeQhuWZqOi/m+ihjOS7o+eggeS8mOWMluaXtu+8jOS7heWcqOW3suS4uuWFtuS7luaTjeS9nOS9v+eUqAor5LqG57G75Ly855qE5paw5aKe5oyH5Luk77yM6ICM5a+86Ie05LqM6L+b5Yi257uT5p6c5bey5LiO5pep5pyfIEFSTSDlpITnkIblmajkuI3lhbzlrrnnmoTmg4XlhrXkuIvvvIwKK+eUqOaIt+epuumXtOaJjeW6lOe7lei/h+i/meS6m+i+heWKqeS7o+egge+8jOW5tuWcqOWGheiBlOWHveaVsOS4reWunueOsOi/meS6m+aTjeS9nO+8iOaXoOiuuuaYr+mAmui/hwor57yW6K+R5Zmo5Zyo5Luj56CB5Lit55u05o6l5pS+572u77yM6L+Y5piv5L2c5Li65bqT5Ye95pWw6LCD55So5a6e546w55qE5LiA6YOo5YiG77yJ44CC5Lmf5bCx5piv6K+077yMCivlpoLmnpzkvaDnvJbor5HnmoTku6PnoIHkuI3kvJrkuLrkuoblhbbku5bnm67nmoTkvb/nlKjmlrDmjIfku6TvvIzliJnkuI3opoHku4XkuLrkuobpgb/lhY3kvb/nlKjov5nkupsKK+WGheaguOi+heWKqeS7o+egge+8jOWvvOiHtOS6jOi/m+WItueoi+W6j+aXoOazleWcqOaXqeacn+WkhOeQhuWZqOS4iui/kOihjOOAggorCivmlrDnmoTovoXliqnku6PnoIHlj6/og73pmo/nnYDml7bpl7TnmoTmjqjnp7vogIzlop7liqDvvIzmiYDku6XmlrDlhoXmoLjkuK3nmoTmn5DkupvovoXliqnku6PnoIHlnKjml6cKK+WGheaguOS4reWPr+iDveS4jeWtmOWcqOOAguWboOatpO+8jOeoi+W6j+W/hemhu+WcqOWvueS7u+S9lei+heWKqeS7o+eggeiwg+eUqOWBh+iuvuaYr+WuieWFqOS5i+WJje+8jAor5qOA5rWLIF9fa3VzZXJfaGVscGVyX3ZlcnNpb24g55qE5YC877yI6KeB5LiL5paH77yJ44CC55CG5oOz5oOF5Ya15LiL77yM6L+Z56eN5qOA5rWL5bqU6K+lCivlj6rlnKjov5vnqIvlkK/liqjml7bmiafooYzkuIDmrKHvvJvlpoLmnpzlhoXmoLjniYjmnKzkuI3mlK/mjIHmiYDpnIDovoXliqnku6PnoIHvvIzliJnor6Xov5vnqIvlj6/lsL3ml6kKK+S4reatouaJp+ihjOOAggorCitrdXNlcl9oZWxwZXJfdmVyc2lvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor5L2N572uOgkweGZmZmYwZmZjCisKK+WPguiAg+WjsOaYjjoKKworICBleHRlcm4gaW50MzJfdCBfX2t1c2VyX2hlbHBlcl92ZXJzaW9uOworCivlrprkuYk6CisKKyAg6L+Z5Liq5Yy65Z+f5YyF5ZCr5LqG5b2T5YmN6L+Q6KGM5YaF5qC45a6e546w55qE6L6F5Yqp5Luj56CB54mI5pys5Y+344CC55So5oi356m66Ze05Y+v5Lul6YCa6L+H6K+7CisgIOWPluatpOeJiOacrOWPt+S7peehruWumueJueWumueahOi+heWKqeS7o+eggeaYr+WQpuWtmOWcqOOAggorCivkvb/nlKjojIPkvos6CisKKyNkZWZpbmUgX19rdXNlcl9oZWxwZXJfdmVyc2lvbiAoKihpbnQzMl90ICopMHhmZmZmMGZmYykKKwordm9pZCBjaGVja19rdXNlcl92ZXJzaW9uKHZvaWQpCit7CisJaWYgKF9fa3VzZXJfaGVscGVyX3ZlcnNpb24gPCAyKSB7CisJCWZwcmludGYoc3RkZXJyLCAiY2FuJ3QgZG8gYXRvbWljIG9wZXJhdGlvbnMsIGtlcm5lbCB0b28gb2xkXG4iKTsKKwkJYWJvcnQoKTsKKwl9Cit9CisKK+azqOaEjzoKKworICDnlKjmiLfnqbrpl7Tlj6/ku6XlgYforr7ov5nkuKrln5/nmoTlgLzkuI3kvJrlnKjku7vkvZXljZXkuKrov5vnqIvnmoTnlJ/lrZjmnJ/lhoXmlLnlj5jjgILkuZ/lsLEKKyAg5piv6K+077yM6L+Z5Liq5Z+f5Y+v5Lul5LuF5Zyo5bqT55qE5Yid5aeL5YyW6Zi25q615oiW6L+b56iL5ZCv5Yqo6Zi25q616K+75Y+W5LiA5qyh44CCCisKK2t1c2VyX2dldF90bHMKKy0tLS0tLS0tLS0tLS0KKwor5L2N572uOgkweGZmZmYwZmUwCisKK+WPguiAg+WOn+WeizoKKworICB2b2lkICogX19rdXNlcl9nZXRfdGxzKHZvaWQpOworCivovpPlhaU6CisKKyAgbHIgPSDov5Tlm57lnLDlnYAKKwor6L6T5Ye6OgorCisgIHIwID0gVExTIOWAvAorCivooqvnr6HmlLnnmoTlr4TlrZjlmag6CisKKyAg5pegCisKK+WumuS5iToKKworICDojrflj5bkuYvliY3pgJrov4cgX19BUk1fTlJfc2V0X3RscyDns7vnu5/osIPnlKjorr7nva7nmoQgVExTIOWAvOOAggorCivkvb/nlKjojIPkvos6CisKK3R5cGVkZWYgdm9pZCAqIChfX2t1c2VyX2dldF90bHNfdCkodm9pZCk7CisjZGVmaW5lIF9fa3VzZXJfZ2V0X3RscyAoKihfX2t1c2VyX2dldF90bHNfdCAqKTB4ZmZmZjBmZTApCisKK3ZvaWQgZm9vKCkKK3sKKwl2b2lkICp0bHMgPSBfX2t1c2VyX2dldF90bHMoKTsKKwlwcmludGYoIlRMUyA9ICVwXG4iLCB0bHMpOworfQorCivms6jmhI86CisKKyAgLSDku4XlnKggX19rdXNlcl9oZWxwZXJfdmVyc2lvbiA+PSAxIOaXtu+8jOatpOi+heWKqeS7o+eggeWtmOWcqAorICAgIO+8iOS7juWGheaguOeJiOacrCAyLjYuMTIg5byA5aeL77yJ44CCCisKK2t1c2VyX2NtcHhjaGcKKy0tLS0tLS0tLS0tLS0KKwor5L2N572uOgkweGZmZmYwZmMwCisKK+WPguiAg+WOn+WeizoKKworICBpbnQgX19rdXNlcl9jbXB4Y2hnKGludDMyX3Qgb2xkdmFsLCBpbnQzMl90IG5ld3ZhbCwgdm9sYXRpbGUgaW50MzJfdCAqcHRyKTsKKwor6L6T5YWlOgorCisgIHIwID0gb2xkdmFsCisgIHIxID0gbmV3dmFsCisgIHIyID0gcHRyCisgIGxyID0g6L+U5Zue5Zyw5Z2ACisKK+i+k+WHujoKKworICByMCA9IOaIkOWKn+S7o+eggSAo6Zu25oiW6Z2e6Zu2KQorICBDIGZsYWcgPSDlpoLmnpwgcjAgPT0gMCDliJnnva4gMe+8jOWmguaenCByMCAhPSAwIOWImea4hembtuOAggorCivooqvnr6HmlLnnmoTlr4TlrZjlmag6CisKKyAgcjMsIGlwLCBmbGFncworCivlrprkuYk6CisKKyAg5LuF5ZyoICpwdHIg5Li6IG9sZHZhbCDml7bljp/lrZDkv53lrZggbmV3dmFsIOS6jiAqcHRyIOS4reOAggorICDlpoLmnpwgKnB0ciDooqvmlLnlj5jvvIzliJnov5Tlm57lgLzkuLrpm7bvvIzlkKbliJnkuLrpnZ7pm7blgLzjgIIKKyAg5aaC5p6cICpwdHIg6KKr5pS55Y+Y77yM5YiZIEMgZmxhZyDkuZ/kvJrooqvnva4gMe+8jOS7peWunueOsOiwg+eUqOS7o+eggeS4reeahOaxh+e8lgorICDkvJjljJbjgIIKKwor5L2/55So6IyD5L6LOgorCit0eXBlZGVmIGludCAoX19rdXNlcl9jbXB4Y2hnX3QpKGludCBvbGR2YWwsIGludCBuZXd2YWwsIHZvbGF0aWxlIGludCAqcHRyKTsKKyNkZWZpbmUgX19rdXNlcl9jbXB4Y2hnICgqKF9fa3VzZXJfY21weGNoZ190ICopMHhmZmZmMGZjMCkKKworaW50IGF0b21pY19hZGQodm9sYXRpbGUgaW50ICpwdHIsIGludCB2YWwpCit7CisJaW50IG9sZCwgbmV3OworCisJZG8geworCQlvbGQgPSAqcHRyOworCQluZXcgPSBvbGQgKyB2YWw7CisJfSB3aGlsZShfX2t1c2VyX2NtcHhjaGcob2xkLCBuZXcsIHB0cikpOworCisJcmV0dXJuIG5ldzsKK30KKwor5rOo5oSPOgorCisgIC0g6L+Z5Liq5L6L56iL5bey5qC55o2u6ZyA6KaB5YyF5ZCr5LqG5YaF5a2Y5bGP6Zqc44CCCisKKyAgLSDku4XlnKggX19rdXNlcl9oZWxwZXJfdmVyc2lvbiA+PSAyIOaXtu+8jOatpOi+heWKqeS7o+eggeWtmOWcqAorICAgIO+8iOS7juWGheaguOeJiOacrCAyLjYuMTIg5byA5aeL77yJ44CCCisKK2t1c2VyX21lbW9yeV9iYXJyaWVyCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCivkvY3nva46CTB4ZmZmZjBmYTAKKwor5Y+C6ICD5Y6f5Z6LOgorCisgIHZvaWQgX19rdXNlcl9tZW1vcnlfYmFycmllcih2b2lkKTsKKwor6L6T5YWlOgorCisgIGxyID0g6L+U5Zue5Zyw5Z2ACisKK+i+k+WHujoKKworICDml6AKKwor6KKr56+h5pS555qE5a+E5a2Y5ZmoOgorCisgIOaXoAorCivlrprkuYk6CisKKyAg5bqU55So5LqO5Lu75L2V6ZyA6KaB5YaF5a2Y5bGP6Zqc5Lul6Ziy5q2i5omL5Yqo5pWw5o2u5L+u5pS55bim5p2l55qE5LiA6Ie05oCn6Zeu6aKY77yM5Lul5Y+KCisgIF9fa3VzZXJfY21weGNoZyDkuK3jgIIKKwor5L2/55So6IyD5L6LOgorCit0eXBlZGVmIHZvaWQgKF9fa3VzZXJfZG1iX3QpKHZvaWQpOworI2RlZmluZSBfX2t1c2VyX2RtYiAoKihfX2t1c2VyX2RtYl90ICopMHhmZmZmMGZhMCkKKwor5rOo5oSPOgorCisgIC0g5LuF5ZyoIF9fa3VzZXJfaGVscGVyX3ZlcnNpb24gPj0gMyDml7bvvIzmraTovoXliqnku6PnoIHlrZjlnKgKKyAgICDvvIjku47lhoXmoLjniYjmnKwgMi42LjE1IOW8gOWni++8ieOAggorCitrdXNlcl9jbXB4Y2hnNjQKKy0tLS0tLS0tLS0tLS0tLQorCivkvY3nva46CTB4ZmZmZjBmNjAKKwor5Y+C6ICD5Y6f5Z6LOgorCisgIGludCBfX2t1c2VyX2NtcHhjaGc2NChjb25zdCBpbnQ2NF90ICpvbGR2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90ICpuZXd2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICB2b2xhdGlsZSBpbnQ2NF90ICpwdHIpOworCivovpPlhaU6CisKKyAgcjAgPSDmjIflkJEgb2xkdmFsCisgIHIxID0g5oyH5ZCRIG5ld3ZhbAorICByMiA9IOaMh+WQkeebruagh+WAvAorICBsciA9IOi/lOWbnuWcsOWdgAorCivovpPlh7o6CisKKyAgcjAgPSDmiJDlip/ku6PnoIEgKOmbtuaIlumdnumbtikKKyAgQyBmbGFnID0g5aaC5p6cIHIwID09IDAg5YiZ572uIDHvvIzlpoLmnpwgcjAgIT0gMCDliJnmuIXpm7bjgIIKKwor6KKr56+h5pS555qE5a+E5a2Y5ZmoOgorCisgIHIzLCBsciwgZmxhZ3MKKwor5a6a5LmJOgorCisgIOS7heWcqCAqcHRyIOetieS6jiAqb2xkdmFsIOaMh+WQkeeahCA2NCDkvY3lgLzml7bvvIzljp/lrZDkv53lrZggKm5ld3ZhbAorICDmjIflkJHnmoQgNjQg5L2N5YC85LqOICpwdHIg5Lit44CC5aaC5p6cICpwdHIg6KKr5pS55Y+Y77yM5YiZ6L+U5Zue5YC85Li66Zu277yMCisgIOWQpuWImeS4uumdnumbtuWAvOOAggorCisgIOWmguaenCAqcHRyIOiiq+aUueWPmO+8jOWImSBDIGZsYWcg5Lmf5Lya6KKr572uIDHvvIzku6Xlrp7njrDosIPnlKjku6PnoIHkuK3nmoTmsYfnvJYKKyAg5LyY5YyW44CCCisKK+S9v+eUqOiMg+S+izoKKwordHlwZWRlZiBpbnQgKF9fa3VzZXJfY21weGNoZzY0X3QpKGNvbnN0IGludDY0X3QgKm9sZHZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90ICpuZXd2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9sYXRpbGUgaW50NjRfdCAqcHRyKTsKKyNkZWZpbmUgX19rdXNlcl9jbXB4Y2hnNjQgKCooX19rdXNlcl9jbXB4Y2hnNjRfdCAqKTB4ZmZmZjBmNjApCisKK2ludDY0X3QgYXRvbWljX2FkZDY0KHZvbGF0aWxlIGludDY0X3QgKnB0ciwgaW50NjRfdCB2YWwpCit7CisJaW50NjRfdCBvbGQsIG5ldzsKKworCWRvIHsKKwkJb2xkID0gKnB0cjsKKwkJbmV3ID0gb2xkICsgdmFsOworCX0gd2hpbGUoX19rdXNlcl9jbXB4Y2hnNjQoJm9sZCwgJm5ldywgcHRyKSk7CisKKwlyZXR1cm4gbmV3OworfQorCivms6jmhI86CisKKyAgLSDov5nkuKrkvovnqIvlt7LmoLnmja7pnIDopoHljIXlkKvkuoblhoXlrZjlsY/pmpzjgIIKKworICAtIOeUseS6jui/meS4qui/h+eoi+eahOS7o+eggemVv+W6pu+8iOatpOi+heWKqeS7o+eggei3qOi2iiAyIOS4quW4uOinhOeahCBrdXNlciDigJzmp73igJ3vvInvvIwKKyAgICDlm6DmraQgMHhmZmZmMGY4MCDkuI3ooqvkvZzkuLrmnInmlYjnmoTlhaXlj6PngrnjgIIKKworICAtIOS7heWcqCBfX2t1c2VyX2hlbHBlcl92ZXJzaW9uID49IDUg5pe277yM5q2k6L6F5Yqp5Luj56CB5a2Y5ZyoCisgICAg77yI5LuO5YaF5qC454mI5pysIDMuMSDlvIDlp4vvvInjgIIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vemhfQ04vYXJtNjQvYm9vdGluZy50eHQgYi9Eb2N1bWVudGF0aW9uL3poX0NOL2FybTY0L2Jvb3RpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZDM2YWYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3poX0NOL2FybTY0L2Jvb3RpbmcudHh0CkBAIC0wLDAgKzEsMjE5IEBACitDaGluZXNlIHRyYW5zbGF0ZWQgdmVyc2lvbiBvZiBEb2N1bWVudGF0aW9uL2FybTY0L2Jvb3RpbmcudHh0CisKK0lmIHlvdSBoYXZlIGFueSBjb21tZW50IG9yIHVwZGF0ZSB0byB0aGUgY29udGVudCwgcGxlYXNlIGNvbnRhY3QgdGhlCitvcmlnaW5hbCBkb2N1bWVudCBtYWludGFpbmVyIGRpcmVjdGx5LiAgSG93ZXZlciwgaWYgeW91IGhhdmUgYSBwcm9ibGVtCitjb21tdW5pY2F0aW5nIGluIEVuZ2xpc2ggeW91IGNhbiBhbHNvIGFzayB0aGUgQ2hpbmVzZSBtYWludGFpbmVyIGZvcgoraGVscC4gIENvbnRhY3QgdGhlIENoaW5lc2UgbWFpbnRhaW5lciBpZiB0aGlzIHRyYW5zbGF0aW9uIGlzIG91dGRhdGVkCitvciBpZiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgdHJhbnNsYXRpb24uCisKK01haW50YWluZXI6IFdpbGwgRGVhY29uIDx3aWxsLmRlYWNvbkBhcm0uY29tPgorQ2hpbmVzZSBtYWludGFpbmVyOiBGdSBXZWkgPHdlZnVAcmVkaGF0LmNvbT4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRG9jdW1lbnRhdGlvbi9hcm02NC9ib290aW5nLnR4dCDnmoTkuK3mlofnv7vor5EKKwor5aaC5p6c5oOz6K+E6K665oiW5pu05paw5pys5paH55qE5YaF5a6577yM6K+355u05o6l6IGU57O75Y6f5paH5qGj55qE57u05oqk6ICF44CC5aaC5p6c5L2g5L2/55So6Iux5paHCivkuqTmtYHmnInlm7Dpmr7nmoTor53vvIzkuZ/lj6/ku6XlkJHkuK3mlofniYjnu7TmiqTogIXmsYLliqnjgILlpoLmnpzmnKznv7vor5Hmm7TmlrDkuI3lj4rml7bmiJbogIXnv7sKK+ivkeWtmOWcqOmXrumimO+8jOivt+iBlOezu+S4reaWh+eJiOe7tOaKpOiAheOAggorCivmnKzmlofnv7vor5Hmj5DkuqTml7bnmoQgR2l0IOajgOWHuueCueS4uu+8miBiYzQ2NWFhOWQwNDVmZWIwZTEzYjRhOGYzMmNjMzNjMTk0M2Y2MmQ2CisKK+iLseaWh+eJiOe7tOaKpOiAhe+8miBXaWxsIERlYWNvbiA8d2lsbC5kZWFjb25AYXJtLmNvbT4KK+S4reaWh+eJiOe7tOaKpOiAhe+8miDlgoXngpwgIEZ1IFdlaSA8d2VmdUByZWRoYXQuY29tPgor5Lit5paH54mI57+76K+R6ICF77yaIOWCheeCnCAgRnUgV2VpIDx3ZWZ1QHJlZGhhdC5jb20+CivkuK3mlofniYjmoKHor5HogIXvvJog5YKF54KcICBGdSBXZWkgPHdlZnVAcmVkaGF0LmNvbT4KKwor5Lul5LiL5Li65q2j5paHCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkJCeWQr+WKqCBBQXJjaDY0IExpbnV4CisJCQk9PT09PT09PT09PT09PT09PT0KKwor5L2c6ICFOiBXaWxsIERlYWNvbiA8d2lsbC5kZWFjb25AYXJtLmNvbT4KK+aXpeacnzogMjAxMiDlubQgMDkg5pyIIDA3IOaXpQorCivmnKzmlofmoaPln7rkuo4gUnVzc2VsbCBLaW5nIOeahCBBUk0g5ZCv5Yqo5paH5qGj77yM5LiU6YCC55So5LqO5omA5pyJ5YWs5byA5Y+R5biD55qECitBQXJjaDY0IExpbnV4IOWGheaguOS7o+eggeOAggorCitBQXJjaDY0IOW8guW4uOaooeWei+eUseWkmuS4quW8guW4uOe6p+WIq++8iEVMMCAtIEVMM++8iee7hOaIkO+8jOWvueS6jiBFTDAg5ZKMIEVMMQor5byC5bi457qn5pyJ5a+55bqU55qE5a6J5YWo5ZKM6Z2e5a6J5YWo5qih5byP44CCRUwyIOaYr+ezu+e7n+euoeeQhue6p++8jOS4lOS7heWtmOWcqOS6jgor6Z2e5a6J5YWo5qih5byP5LiL44CCRUwzIOaYr+acgOmrmOeJueadg+e6p++8jOS4lOS7heWtmOWcqOS6juWuieWFqOaooeW8j+S4i+OAggorCivln7rkuo7mnKzmlofmoaPnmoTnm67nmoTvvIzmiJHku6zlsIbnroDljZXlnLDkvb/nlKjigJjlvJXlr7zoo4Xovb3nqIvluo/igJnvvIjigJhib290IGxvYWRlcuKAme+8iQor6L+Z5Liq5pyv6K+t5p2l5a6a5LmJ5Zyo5bCG5o6n5Yi25p2D5Lqk57uZIExpbnV4IOWGheaguOWJjSBDUFUg5LiK5omn6KGM55qE5omA5pyJ6L2v5Lu244CCCivov5nlj6/og73ljIXlkKvlronlhajnm5Hmjqflkozns7vnu5/nrqHnkIbku6PnoIHvvIzmiJbogIXlroPlj6/og73lj6rmmK/kuIDkupvnlKjkuo7lh4blpIfmnIDlsI/lkK/liqgKK+eOr+Wig+eahOaMh+S7pOOAggorCivln7rmnKzkuIrvvIzlvJXlr7zoo4Xovb3nqIvluo/vvIjoh7PlsJHvvInlupTlrp7njrDku6XkuIvmk43kvZzvvJoKKworMeOAgeiuvue9ruWSjOWIneWni+WMliBSQU0KKzLjgIHorr7nva7orr7lpIfmoJHmlbDmja4KKzPjgIHop6PljovlhoXmoLjmmKDlg48KKzTjgIHosIPnlKjlhoXmoLjmmKDlg48KKworCisx44CB6K6+572u5ZKM5Yid5aeL5YyWIFJBTQorLS0tLS0tLS0tLS0tLS0tLS0KKwor5b+F6KaB5oCnOiDlvLrliLYKKwor5byV5a+86KOF6L2956iL5bqP5bqU6K+l5om+5Yiw5bm25Yid5aeL5YyW57O757uf5Lit5omA5pyJ5YaF5qC455So5LqO5L+d5oyB57O757uf5Y+Y6YeP5pWw5o2u55qEIFJBTeOAggor6L+Z5Liq5pON5L2c55qE5omn6KGM5piv6K6+5aSH5L6d6LWW55qE44CC77yI5a6D5Y+v6IO95L2/55So5YaF6YOo566X5rOV5p2l6Ieq5Yqo5a6a5L2N5ZKM6K6h566X5omA5pyJCitSQU3vvIzmiJblj6/og73kvb/nlKjlr7nov5nkuKrorr7lpIflt7Lnn6XnmoQgUkFNIOS/oeaBr++8jOi/mOWPr+iDveS9v+eUqOS7u+S9leW8leWvvOijhei9veeoi+W6jwor6K6+6K6h6ICF5oOz5Yiw55qE5Yy56YWN5pa55rOV44CC77yJCisKKworMuOAgeiuvue9ruiuvuWkh+agkeaVsOaNrgorLS0tLS0tLS0tLS0tLS0tCisKK+W/heimgeaApzog5by65Yi2CisKK+iuvuWkh+agkeaVsOaNruWdl++8iGR0Yu+8ieW/hemhuyA4IOWtl+iKguWvuem9kO+8jOW5tuS9jeS6juS7juWGheaguOaYoOWDj+i1t+Wni+eul+i1t+esrOS4gOS4qiA1MTJNQgor5YaF77yM5LiU5LiN5b6X6Leo6LaKIDJNQiDlr7npvZDovrnnlYzjgILov5nkvb/lvpflhoXmoLjlj6/ku6XpgJrov4fliJ3lp4vpobXooajkuK3nmoTljZXkuKroioLmj4/ov7DnrKbmnaUKK+aYoOWwhOatpOaVsOaNruWdl+OAggorCisKKzPjgIHop6PljovlhoXmoLjmmKDlg48KKy0tLS0tLS0tLS0tLS0KKwor5b+F6KaB5oCnOiDlj6/pgIkKKworQUFyY2g2NCDlhoXmoLjlvZPliY3msqHmnInmj5Dkvpvoh6rop6Pljovku6PnoIHvvIzlm6DmraTlpoLmnpzkvb/nlKjkuobljovnvKnlhoXmoLjmmKDlg4/mlofku7YKK++8iOavlOWmgiBJbWFnZS5neu+8ie+8jOWImemcgOimgemAmui/h+W8leWvvOijhei9veeoi+W6j++8iOS9v+eUqCBnemlwIOetie+8ieadpei/m+ihjOino+WOi+OAggor6Iul5byV5a+86KOF6L2956iL5bqP5rKh5pyJ5a6e546w6L+Z5Liq6ZyA5rGC77yM5bCx6KaB5L2/55So6Z2e5Y6L57yp5YaF5qC45pig5YOP5paH5Lu244CCCisKKworNOOAgeiwg+eUqOWGheaguOaYoOWDjworLS0tLS0tLS0tLS0tLQorCivlv4XopoHmgKc6IOW8uuWItgorCivlt7Lop6PljovnmoTlhoXmoLjmmKDlg4/ljIXlkKvkuIDkuKogNjQg5a2X6IqC55qE5aS077yM5YaF5a655aaC5LiL77yaCisKKyAgdTMyIGNvZGUwOwkJCS8qIOWPr+aJp+ihjOS7o+eggSAqLworICB1MzIgY29kZTE7CQkJLyog5Y+v5omn6KGM5Luj56CBICovCisgIHU2NCB0ZXh0X29mZnNldDsJCS8qIOaYoOWDj+ijhei9veWBj+enu++8jOWwj+err+aooeW8jyAqLworICB1NjQgaW1hZ2Vfc2l6ZTsJCS8qIOaYoOWDj+WunumZheWkp+Wwjywg5bCP56uv5qih5byPICovCisgIHU2NCBmbGFnczsJCQkvKiDlhoXmoLjml5fmoIcsIOWwj+err+aooeW8jyAqCisgIHU2NCByZXMyCT0gMDsJCS8qIOS/neeVmSAqLworICB1NjQgcmVzMwk9IDA7CQkvKiDkv53nlZkgKi8KKyAgdTY0IHJlczQJPSAwOwkJLyog5L+d55WZICovCisgIHUzMiBtYWdpYwk9IDB4NjQ0ZDUyNDE7CS8qIOmtlOaVsCwg5bCP56uvLCAiQVJNXHg2NCIgKi8KKyAgdTMyIHJlczU7ICAgICAgCQkvKiDkv53nlZkg77yI55So5LqOIFBFIENPRkYg5YGP56e777yJICovCisKKwor5pig5YOP5aS05rOo6YeK77yaCisKKy0g6IeqIHYzLjE3IOi1t++8jOmZpOmdnuWPpuacieivtOaYju+8jOaJgOacieWfn+mDveaYr+Wwj+err+aooeW8j+OAggorCistIGNvZGUwL2NvZGUxIOi0n+i0o+i3s+i9rOWIsCBzdGV4dC4KKworLSDlvZPpgJrov4cgRUZJIOWQr+WKqOaXtu+8jCDmnIDliJ0gY29kZTAvY29kZTEg6KKr6Lez6L+H44CCCisgIHJlczUg5piv5YiwIFBFIOaWh+S7tuWktOeahOWBj+enu++8jOiAjCBQRSDmlofku7blpLTlkKvmnIkgRUZJIOeahOWQr+WKqOWFpeWPo+eCuSDvvIhlZmlfc3R1Yl9lbnRyee+8ieOAggorICDlvZMgc3R1YiDku6PnoIHlrozmiJDkuoblroPnmoTkvb/lkb3vvIzlroPkvJrot7PovazliLAgY29kZTAg57un57ut5q2j5bi455qE5ZCv5Yqo5rWB56iL44CCCisKKy0gdjMuMTcg5LmL5YmN77yM5pyq5piO56Gu5oyH5a6aIHRleHRfb2Zmc2V0IOeahOWtl+iKguW6j+OAguatpOaXtu+8jGltYWdlX3NpemUg5Li66Zu277yMCisgIOS4lCB0ZXh0X29mZnNldCDkvp3nhaflhoXmoLjlrZfoioLluo/kuLogMHg4MDAwMOOAggorICDlvZMgaW1hZ2Vfc2l6ZSDpnZ7pm7bvvIx0ZXh0X29mZnNldCDkuLrlsI/nq6/mqKHlvI/kuJTmmK/mnInmlYjlgLzvvIzlupTooqvlvJXlr7zliqDovb3nqIvluo/kvb/nlKjjgIIKKyAg5b2TIGltYWdlX3NpemUg5Li66Zu277yMdGV4dF9vZmZzZXQg5Y+v5YGH5a6a5Li6IDB4ODAwMDDjgIIKKworLSBmbGFncyDln58gKHYzLjE3IOW8leWFpSkg5Li6IDY0IOS9jeWwj+err+aooeW8j++8jOWFtue8lueggeWmguS4i++8mgorICDkvY0gMDogCeWGheaguOWtl+iKguW6j+OAgiAxIOihqOekuuWkp+err+aooeW8j++8jDAg6KGo56S65bCP56uv5qih5byP44CCCisgIOS9jSAxLTYzOgnkv53nlZnjgIIKKworLSDlvZMgaW1hZ2Vfc2l6ZSDkuLrpm7bml7bvvIzlvJXlr7zoo4Xovb3nqIvluo/lupTor6Xor5Xlm77lnKjlhoXmoLjmmKDlg4/mnKvlsL7kuYvlkI7lsL3lj6/og73lpJrlnLDkv53nlZnnqbrpl7LlhoXlrZgKKyAg5L6b5YaF5qC455u05o6l5L2/55So44CC5a+55YaF5a2Y56m66Ze055qE6ZyA5rGC6YeP5Zug5omA6YCJ5a6a55qE5YaF5qC454m55oCn6ICM5byCLCDkuJTml6Dlrp7pmYXpmZDliLbjgIIKKwor5YaF5qC45pig5YOP5b+F6aG76KKr5pS+572u5Zyo6Z2g6L+R5Y+v55So57O757uf5YaF5a2Y6LW35aeL55qEIDJNQiDlr7npvZDkuLrln7rlnYDnmoQgdGV4dF9vZmZzZXQg5a2X6IqC5aSE77yM5bm25LuO6YKj6YeM6KKr6LCD55So44CCCivlvZPliY3vvIzlr7kgTGludXgg5p2l6K+05Zyo5q2k5Z+65Z2A5Lul5LiL55qE5YaF5a2Y5piv5peg5rOV5L2/55So55qE77yM5Zug5q2k5by654OI5bu66K6u5bCG57O757uf5YaF5a2Y55qE6LW35aeL5L2c5Li66L+Z5Liq5Z+65Z2A44CCCivku47mmKDlg4/otbflp4vlnLDlnYDnrpfotbfvvIzmnIDlsJHlv4XpobvkuLrlhoXmoLjph4rmlL7lh7ogaW1hZ2Vfc2l6ZSDlrZfoioLnmoTnqbrpl7TjgIIKKwor5Lu75L2V5o+Q5L6b57uZ5YaF5qC455qE5YaF5a2Y77yI55Sa6Iez5ZyoIDJNQiDlr7npvZDnmoTln7rlnLDlnYDkuYvliY3vvInvvIzoi6XmnKrku47lhoXmoLjkuK3moIforrDkuLrkv53nlZkKKyjlpoLlnKjorr7lpIfmoJHvvIhkdGLvvInnmoQgbWVtcmVzZXJ2ZSDljLrln5/vvInvvIzpg73lsIbooqvorqTkuLrlr7nlhoXmoLjmmK/lj6/nlKjjgIIKKwor5Zyo6Lez6L2s5YWl5YaF5qC45YmN77yM5b+F6aG756ym5ZCI5Lul5LiL54q25oCB77yaCisKKy0g5YGc5q2i5omA5pyJIERNQSDorr7lpIfvvIzov5nmoLflhoXlrZjmlbDmja7lsLHkuI3kvJrlm6DkuLromZrlgYfnvZHnu5zljIXmiJbno4Hnm5jmlbDmja7ogIwKKyAg6KKr56C05Z2P44CC6L+Z5Y+v6IO95Y+v5Lul6IqC55yB5L2g6K645aSa55qE6LCD6K+V5pe26Ze044CCCisKKy0g5Li7IENQVSDpgJrnlKjlr4TlrZjlmajorr7nva4KKyAgeDAgPSDns7vnu58gUkFNIOS4reiuvuWkh+agkeaVsOaNruWdl++8iGR0Yu+8ieeahOeJqeeQhuWcsOWdgOOAggorICB4MSA9IDAgKOS/neeVme+8jOWwhuadpeWPr+iDveS9v+eUqCkKKyAgeDIgPSAwICjkv53nlZnvvIzlsIbmnaXlj6/og73kvb/nlKgpCisgIHgzID0gMCAo5L+d55WZ77yM5bCG5p2l5Y+v6IO95L2/55SoKQorCistIENQVSDmqKHlvI8KKyAg5omA5pyJ5b2i5byP55qE5Lit5pat5b+F6aG75ZyoIFBTVEFURS5EQUlGIOS4reiiq+Wxj+iUve+8iERlYnVn44CBU0Vycm9y44CBSVJRCisgIOWSjCBGSVHvvInjgIIKKyAgQ1BVIOW/hemhu+WkhOS6jiBFTDLvvIjmjqjojZDvvIzlj6/orr/pl67omZrmi5/ljJbmianlsZXvvInmiJbpnZ7lronlhaggRUwxIOaooeW8j+S4i+OAggorCistIOmrmOmAn+e8k+WtmOOAgU1NVQorICBNTVUg5b+F6aG75YWz6Zet44CCCisgIOaMh+S7pOe8k+WtmOW8gOWQr+aIluWFs+mXremDveWPr+S7peOAggorICDlt7Lovb3lhaXnmoTlhoXmoLjmmKDlg4/nmoTnm7jlupTlhoXlrZjljLrlv4XpobvooqvmuIXnkIbvvIzku6Xovr7liLDnvJPlrZjkuIDoh7TmgKfngrnvvIhQb0PvvInjgIIKKyAg5b2T5a2Y5Zyo57O757uf57yT5a2Y5oiW5YW25LuW5L2/6IO957yT5a2Y55qE5LiA6Ie05oCn5Li75o6n5Zmo5pe277yM6YCa5bi46ZyA5L2/55So6Jma5ouf5Zyw5Z2A57u05oqk5YW257yT5a2Y77yM6ICM6Z2eIHNldC93YXkg5pON5L2c44CCCisgIOmBteS7jumAmui/h+iZmuaLn+WcsOWdgOaTjeS9nOe7tOaKpOaehOaetue8k+WtmOeahOezu+e7n+e8k+WtmOW/hemhu+iiq+mFjee9ru+8jOW5tuWPr+S7peiiq+S9v+iDveOAggorICDogIzkuI3pgJrov4fomZrmi5/lnLDlnYDmk43kvZznu7TmiqTmnoTmnrbnvJPlrZjnmoTns7vnu5/nvJPlrZjvvIjkuI3mjqjojZDvvInvvIzlv4XpobvooqvphY3nva7kuJTnpoHnlKjjgIIKKworICAq6K+R6ICF5rOo77ya5a+55LqOIFBvQyDku6Xlj4rnvJPlrZjnm7jlhbPlhoXlrrnvvIzor7flj4LogIMgQVJNdjgg5p6E5p625Y+C6ICD5omL5YaMIEFSTSBEREkgMDQ4N0EKKworLSDmnrbmnoTorqHml7blmagKKyAgQ05URlJRIOW/hemhu+iuvuWumuS4uuiuoeaXtuWZqOeahOmikeeOh++8jOS4lCBDTlRWT0ZGIOW/hemhu+iuvuWumuS4uuWvueaJgOaciSBDUFUKKyAg6YO95LiA6Ie055qE5YC844CC5aaC5p6c5ZyoIEVMMSDmqKHlvI/kuIvov5vlhaXlhoXmoLjvvIzliJkgQ05USENUTF9FTDIg5Lit55qECisgIEVMMVBDVEVOIChiaXQgMCkg5b+F6aG7572u5L2N44CCCisKKy0g5LiA6Ie05oCnCisgIOmAmui/h+WGheaguOWQr+WKqOeahOaJgOaciSBDUFUg5Zyo5YaF5qC45YWl5Y+j5Zyw5Z2A5LiK5b+F6aG75aSE5LqO55u45ZCM55qE5LiA6Ie05oCn5Z+f5Lit44CCCisgIOi/meWPr+iDveimgeagueaNruWFt+S9k+WunueOsOadpeWumuS5ieWIneWni+WMlui/h+eoi++8jOS7peS9v+iDveavj+S4qkNQVeS4iuWvuee7tOaKpOaTjeS9nOeahAorICDmjqXmlLbjgIIKKworLSDns7vnu5/lr4TlrZjlmagKKyAg5Zyo6L+b5YWl5YaF5qC45pig5YOP55qE5byC5bi457qn5Lit77yM5omA5pyJ5p6E5p625Lit5Y+v5YaZ55qE57O757uf5a+E5a2Y5Zmo5b+F6aG76YCa6L+H6L2v5Lu2CisgIOWcqOS4gOS4quabtOmrmOeahOW8guW4uOe6p+WIq+S4i+WIneWni+WMlu+8jOS7pemYsuatouWcqCDmnKrnn6Ug54q25oCB5LiL6L+Q6KGM44CCCisKKyAg5a+55LqO5oul5pyJIEdJQ3YzIOS4reaWreaOp+WItuWZqOeahOezu+e7n++8mgorICAtIOiLpeW9k+WJjeWcqCBFTDMg77yaCisgICAgSUNDX1NSRV9FTDMuRW5hYmxlICjkvY0gMykg5b+F6aG75Yid5aeL5YyW5Li6IDBiMeOAggorICAgIElDQ19TUkVfRUwzLlNSRSAo5L2NIDApIOW/hemhu+WIneWni+WMluS4uiAwYjHjgIIKKyAgLSDoi6XlhoXmoLjov5DooYzlnKggRUwx77yaCisgICAgSUNDX1NSRV9FTDIuRW5hYmxlICjkvY0gMykg5b+F6aG75Yid5aeL5YyW5Li6IDBiMeOAggorICAgIElDQ19TUkVfRUwyLlNSRSAo5L2NIDApIOW/hemhu+WIneWni+WMluS4uiAwYjHjgIIKKwor5Lul5LiK5a+55LqOIENQVSDmqKHlvI/jgIHpq5jpgJ/nvJPlrZjjgIFNTVXjgIHmnrbmnoTorqHml7blmajjgIHkuIDoh7TmgKfjgIHns7vnu5/lr4TlrZjlmajnmoQKK+W/heimgeadoeS7tuaPj+i/sOmAgueUqOS6juaJgOaciSBDUFXjgILmiYDmnIkgQ1BVIOW/hemhu+WcqOWQjOS4gOW8guW4uOe6p+WIq+i3s+WFpeWGheaguOOAggorCivlvJXlr7zoo4Xovb3nqIvluo/lv4XpobvlnKjmr4/kuKogQ1BVIOWkhOS6juS7peS4i+eKtuaAgeaXtui3s+WFpeWGheaguOWFpeWPo++8mgorCistIOS4uyBDUFUg5b+F6aG755u05o6l6Lez5YWl5YaF5qC45pig5YOP55qE56ys5LiA5p2h5oyH5Luk44CC6YCa6L+H5q2kIENQVSDkvKDpgJLnmoTorr7lpIfmoJEKKyAg5pWw5o2u5Z2X5b+F6aG75Zyo5q+P5LiqIENQVSDoioLngrnkuK3ljIXlkKvkuIDkuKog4oCYZW5hYmxlLW1ldGhvZOKAmSDlsZ7mgKfvvIzmiYAKKyAg5pSv5oyB55qEIGVuYWJsZS1tZXRob2Qg6K+36KeB5LiL5paH44CCCisKKyAg5byV5a+86KOF6L2956iL5bqP5b+F6aG755Sf5oiQ6L+Z5Lqb6K6+5aSH5qCR5bGe5oCn77yM5bm25Zyo6Lez5YWl5YaF5qC45YWl5Y+j5LmL5YmN5bCG5YW25o+S5YWlCisgIOaVsOaNruWdl+OAggorCistIGVuYWJsZS1tZXRob2Qg5Li6IOKAnHNwaW4tdGFibGXigJ0g55qEIENQVSDlv4XpobvlnKjlroPku6znmoQgQ1BVCisgIOiKgueCueS4reWMheWQq+S4gOS4qiDigJhjcHUtcmVsZWFzZS1hZGRy4oCZIOWxnuaAp+OAgui/meS4quWxnuaAp+agh+ivhuS6huS4gOS4qgorICA2NCDkvY3oh6rnhLblr7npvZDkuJTliJ3lp4vljJbkuLrpm7bnmoTlhoXlrZjkvY3nva7jgIIKKworICDov5nkupsgQ1BVIOW/hemhu+WcqOWGheWtmOS/neeVmeWMuu+8iOmAmui/h+iuvuWkh+agkeS4reeahCAvbWVtcmVzZXJ2ZS8g5Z+f5Lyg6YCSCisgIOe7meWGheaguO+8ieS4reiHquaXi+S6juWGheaguOS5i+Wklu+8jOi9ruivouWug+S7rOeahCBjcHUtcmVsZWFzZS1hZGRyIOS9jee9ru+8iOW/hemhuworICDljIXlkKvlnKjkv53nlZnljLrkuK3vvInjgILlj6/pgJrov4fmj5LlhaUgd2ZlIOaMh+S7pOadpemZjeS9juW/meW+queOr+W8gOmUgO+8jOiAjOS4uyBDUFUg5bCGCisgIOWPkeWHuiBzZXYg5oyH5Luk44CC5b2T5a+5IGNwdS1yZWxlYXNlLWFkZHIg5omA5oyH5L2N572u55qE6K+75Y+W5pON5L2c6L+U5Zue6Z2e6Zu25YC8CisgIOaXtu+8jENQVSDlv4Xpobvot7PlhaXmraTlgLzmiYDmjIflkJHnmoTlnLDlnYDjgILmraTlgLzkuLrkuIDkuKrljZXni6znmoQgNjQg5L2N5bCP56uv5YC877yMCisgIOWboOatpCBDUFUg6aG75Zyo6Lez6L2s5YmN5bCG5omA6K+75Y+W55qE5YC86L2s5o2i5Li65YW25pys6Lqr55qE56uv5qih5byP44CCCisKKy0gZW5hYmxlLW1ldGhvZCDkuLog4oCccHNjaeKAnSDnmoQgQ1BVIOS/neaMgeWcqOWGheaguOWklu+8iOavlOWmgu+8jOWcqAorICBtZW1vcnkg6IqC54K55Lit5o+P6L+w5Li65YaF5qC456m66Ze055qE5YaF5a2Y5Yy65aSW77yM5oiW5Zyo6YCa6L+H6K6+5aSH5qCRIC9tZW1yZXNlcnZlLworICDln5/kuK3mj4/ov7DkuLrlhoXmoLjkv53nlZnljLrnmoTnqbrpl7TkuK3vvInjgILlhoXmoLjlsIbkvJrlj5HotbflnKggQVJNIOaWh+aho++8iOe8luWPtworICBBUk0gREVOIDAwMjJB77ya55So5LqOIEFSTSDkuIrnmoTnlLXmupDnirbmgIHljY/osIPmjqXlj6Pns7vnu5/ova/ku7bvvInkuK3mj4/ov7DnmoQKKyAgQ1BVX09OIOiwg+eUqOadpeWwhiBDUFUg5bim5YWl5YaF5qC444CCCisKKyAgKuivkeiAheazqDogQVJNIERFTiAwMDIyQSDlt7Lmm7TmlrDliLAgQVJNIERFTiAwMDIyQ+OAggorCisgIOiuvuWkh+agkeW/hemhu+WMheWQq+S4gOS4qiDigJhwc2Np4oCZIOiKgueCue+8jOivt+WPguiAg+S7peS4i+aWh+aho++8mgorICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3BzY2kudHh0CisKKworLSDovoXliqkgQ1BVIOmAmueUqOWvhOWtmOWZqOiuvue9rgorICB4MCA9IDAgKOS/neeVme+8jOWwhuadpeWPr+iDveS9v+eUqCkKKyAgeDEgPSAwICjkv53nlZnvvIzlsIbmnaXlj6/og73kvb/nlKgpCisgIHgyID0gMCAo5L+d55WZ77yM5bCG5p2l5Y+v6IO95L2/55SoKQorICB4MyA9IDAgKOS/neeVme+8jOWwhuadpeWPr+iDveS9v+eUqCkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vemhfQ04vYXJtNjQvbGVnYWN5X2luc3RydWN0aW9ucy50eHQgYi9Eb2N1bWVudGF0aW9uL3poX0NOL2FybTY0L2xlZ2FjeV9pbnN0cnVjdGlvbnMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4MzYyYTEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3poX0NOL2FybTY0L2xlZ2FjeV9pbnN0cnVjdGlvbnMudHh0CkBAIC0wLDAgKzEsNzIgQEAKK0NoaW5lc2UgdHJhbnNsYXRlZCB2ZXJzaW9uIG9mIERvY3VtZW50YXRpb24vYXJtNjQvbGVnYWN5X2luc3RydWN0aW9ucy50eHQKKworSWYgeW91IGhhdmUgYW55IGNvbW1lbnQgb3IgdXBkYXRlIHRvIHRoZSBjb250ZW50LCBwbGVhc2UgY29udGFjdCB0aGUKK29yaWdpbmFsIGRvY3VtZW50IG1haW50YWluZXIgZGlyZWN0bHkuICBIb3dldmVyLCBpZiB5b3UgaGF2ZSBhIHByb2JsZW0KK2NvbW11bmljYXRpbmcgaW4gRW5nbGlzaCB5b3UgY2FuIGFsc28gYXNrIHRoZSBDaGluZXNlIG1haW50YWluZXIgZm9yCitoZWxwLiAgQ29udGFjdCB0aGUgQ2hpbmVzZSBtYWludGFpbmVyIGlmIHRoaXMgdHJhbnNsYXRpb24gaXMgb3V0ZGF0ZWQKK29yIGlmIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSB0cmFuc2xhdGlvbi4KKworTWFpbnRhaW5lcjogUHVuaXQgQWdyYXdhbCA8cHVuaXQuYWdyYXdhbEBhcm0uY29tPgorICAgICAgICAgICAgU3V6dWtpIEsuIFBvdWxvc2UgPHN1enVraS5wb3Vsb3NlQGFybS5jb20+CitDaGluZXNlIG1haW50YWluZXI6IEZ1IFdlaSA8d2VmdUByZWRoYXQuY29tPgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEb2N1bWVudGF0aW9uL2FybTY0L2xlZ2FjeV9pbnN0cnVjdGlvbnMudHh0IOeahOS4reaWh+e/u+ivkQorCivlpoLmnpzmg7Por4TorrrmiJbmm7TmlrDmnKzmlofnmoTlhoXlrrnvvIzor7fnm7TmjqXogZTns7vljp/mlofmoaPnmoTnu7TmiqTogIXjgILlpoLmnpzkvaDkvb/nlKjoi7HmlocKK+S6pOa1geacieWbsOmavueahOivne+8jOS5n+WPr+S7peWQkeS4reaWh+eJiOe7tOaKpOiAheaxguWKqeOAguWmguaenOacrOe/u+ivkeabtOaWsOS4jeWPiuaXtuaIluiAhee/uwor6K+R5a2Y5Zyo6Zeu6aKY77yM6K+36IGU57O75Lit5paH54mI57u05oqk6ICF44CCCisKK+acrOaWh+e/u+ivkeaPkOS6pOaXtueahCBHaXQg5qOA5Ye654K55Li677yaIGJjNDY1YWE5ZDA0NWZlYjBlMTNiNGE4ZjMyY2MzM2MxOTQzZjYyZDYKKwor6Iux5paH54mI57u05oqk6ICF77yaIFB1bml0IEFncmF3YWwgPHB1bml0LmFncmF3YWxAYXJtLmNvbT4KKyAgICAgICAgICAgIFN1enVraSBLLiBQb3Vsb3NlIDxzdXp1a2kucG91bG9zZUBhcm0uY29tPgor5Lit5paH54mI57u05oqk6ICF77yaIOWCheeCnCAgRnUgV2VpIDx3ZWZ1QHJlZGhhdC5jb20+CivkuK3mlofniYjnv7vor5HogIXvvJog5YKF54KcICBGdSBXZWkgPHdlZnVAcmVkaGF0LmNvbT4KK+S4reaWh+eJiOagoeivkeiAhe+8miDlgoXngpwgIEZ1IFdlaSA8d2VmdUByZWRoYXQuY29tPgorCivku6XkuIvkuLrmraPmlocKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTGludXgg5YaF5qC45ZyoIGFybTY0IOS4iueahOenu+akjeaPkOS+m+S6huS4gOS4quWfuuehgOahhuaetu+8jOS7peaUr+aMgeaehOaetuS4reato+WcqOiiq+a3mOaxsOaIluW3suW6n+W8g+aMh+S7pOeahOaooeaLn+aJp+ihjOOAggor6L+Z5Liq5Z+656GA5qGG5p6255qE5Luj56CB5L2/55So5pyq5a6a5LmJ5oyH5Luk6ZKp5a2Q77yIaG9va3PvvInmnaXmlK/mjIHmqKHmi5/jgILlpoLmnpzmjIfku6TlrZjlnKjvvIzlroPkuZ/lhYHorrjlnKjnoazku7bkuK3lkK/nlKjor6XmjIfku6TjgIIKKwor5qih5ouf5qih5byP5Y+v6YCa6L+H5YaZIHN5c2N0bCDoioLngrnvvIgvcHJvYy9zeXMvYWJp77yJ5p2l5o6n5Yi244CCCivkuI3lkIznmoTmiafooYzmlrnlvI/lj4ogc3lzY3RsIOiKgueCueeahOebuOW6lOWAvO+8jOino+mHiuWmguS4i++8mgorCisqIFVuZGVm77yI5pyq5a6a5LmJ77yJCisgIOWAvO+8miAwCisgIOS6p+eUn+acquWumuS5ieaMh+S7pOe7iOatouW8guW4uOOAguWug+aYr+mCo+S6m+aehOaetuS4reW3suW6n+W8g+eahOaMh+S7pO+8jOWmgiBTV1DvvIznmoTpu5jorqTlpITnkIbmlrnlvI/jgIIKKworKiBFbXVsYXRl77yI5qih5ouf77yJCisgIOWAvO+8miAxCisgIOS9v+eUqOi9r+S7tuaooeaLn+aWueW8j+OAguS4uuino+WGs+i9r+S7tui/geenu+mXrumimO+8jOi/meenjeaooeaLn+aMh+S7pOaooeW8j+eahOS9v+eUqOaYr+iiq+i3n+i4queahO+8jOW5tuS8muWPkeWHuumAn+eOh+mZkOWItuitpuWRiuOAggorICDlroPmmK/pgqPkupvmnoTmnrbkuK3mraPlnKjooqvmt5jmsbDnmoTmjIfku6TvvIzlpoIgQ1AxNSBiYXJyaWVyc++8iOmalOemu+aMh+S7pO+8ie+8jOeahOm7mOiupOWkhOeQhuaWueW8j+OAggorCisqIEhhcmR3YXJlIEV4ZWN1dGlvbu+8iOehrOS7tuaJp+ihjO+8iQorICDlgLzvvJogMgorICDomb3nhLbmoIforrDkuLrmraPlnKjooqvmt5jmsbDvvIzkvYbkuIDkupvlrp7njrDlj6/og73mj5Dkvpvnoazku7bmiafooYzov5nkupvmjIfku6TnmoTkvb/og70v56aB55So5pON5L2c44CCCisgIOS9v+eUqOehrOS7tuaJp+ihjOS4gOiIrOS8muacieabtOWlveeahOaAp+iDve+8jOS9huWwhuaXoOazleaUtumbhui/kOihjOaXtuWvueato+iiq+a3mOaxsOaMh+S7pOeahOS9v+eUqOe7n+iuoeaVsOaNruOAggorCivpu5jorqTmiafooYzmqKHlvI/kvp3otZbkuo7mjIfku6TlnKjmnoTmnrbkuK3nirbmgIHjgILmraPlnKjooqvmt5jmsbDnmoTmjIfku6TlupTor6Xku6XmqKHmi5/vvIhFbXVsYXRl77yJ5L2c5Li66buY6K6k5qih5byP77yMCivogIzlt7Llup/lvIPnmoTmjIfku6Tlv4Xpobvpu5jorqTkvb/nlKjmnKrlrprkuYnvvIhVbmRlZu+8ieaooeW8jworCivms6jmhI/vvJrmjIfku6TmqKHmi5/lj6/og73ml6Dms5XlupTlr7nmiYDmnInmg4XlhrXjgILmm7TlpJror6bmg4Xor7flj4LogIPljZXni6znmoTmjIfku6Tms6jph4rjgIIKKwor5Y+X5pSv5oyB55qE6YGX55WZ5oyH5LukCistLS0tLS0tLS0tLS0tCisqIFNXUHtCfQor6IqC54K5OiAvcHJvYy9zeXMvYWJpL3N3cAor54q25oCBOiDlt7Llup/lvIMKK+m7mOiupOaJp+ihjOaWueW8jzogVW5kZWYgKDApCisKKyogQ1AxNSBCYXJyaWVycwor6IqC54K5OiAvcHJvYy9zeXMvYWJpL2NwMTVfYmFycmllcgor54q25oCBOiDmraPooqvmt5jmsbDvvIzkuI3mjqjojZDkvb/nlKgKK+m7mOiupOaJp+ihjOaWueW8jzogRW11bGF0ZSAoMSkKKworKiBTRVRFTkQKK+iKgueCuTogL3Byb2Mvc3lzL2FiaS9zZXRlbmQKK+eKtuaAgTog5q2j6KKr5reY5rGw77yM5LiN5o6o6I2Q5L2/55SoCivpu5jorqTmiafooYzmlrnlvI86IEVtdWxhdGUgKDEpKgor5rOo77ya5Li65LqG5L2/6IO96L+Z5Liq54m55oCn77yM57O757uf5Lit55qE5omA5pyJIENQVSDlv4XpobvlnKggRUwwIOaUr+aMgea3t+WQiOWtl+iKguW6j+OAggor5aaC5p6c5LiA5Liq5paw55qEIENQVSDvvIjkuI3mlK/mjIHmt7flkIjlrZfoioLluo/vvIkg5Zyo5L2/6IO96L+Z5Liq54m55oCn5ZCO6KKr54Ot5o+S5YWl57O757uf77yMCivlnKjlupTnlKjkuK3lj6/og73kvJrlh7rnjrDkuI3lj6/pooTmnJ/nmoTnu5PmnpzjgIIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vemhfQ04vYXJtNjQvbWVtb3J5LnR4dCBiL0RvY3VtZW50YXRpb24vemhfQ04vYXJtNjQvbWVtb3J5LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWIzYTUyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi96aF9DTi9hcm02NC9tZW1vcnkudHh0CkBAIC0wLDAgKzEsMTE0IEBACitDaGluZXNlIHRyYW5zbGF0ZWQgdmVyc2lvbiBvZiBEb2N1bWVudGF0aW9uL2FybTY0L21lbW9yeS50eHQKKworSWYgeW91IGhhdmUgYW55IGNvbW1lbnQgb3IgdXBkYXRlIHRvIHRoZSBjb250ZW50LCBwbGVhc2UgY29udGFjdCB0aGUKK29yaWdpbmFsIGRvY3VtZW50IG1haW50YWluZXIgZGlyZWN0bHkuICBIb3dldmVyLCBpZiB5b3UgaGF2ZSBhIHByb2JsZW0KK2NvbW11bmljYXRpbmcgaW4gRW5nbGlzaCB5b3UgY2FuIGFsc28gYXNrIHRoZSBDaGluZXNlIG1haW50YWluZXIgZm9yCitoZWxwLiAgQ29udGFjdCB0aGUgQ2hpbmVzZSBtYWludGFpbmVyIGlmIHRoaXMgdHJhbnNsYXRpb24gaXMgb3V0ZGF0ZWQKK29yIGlmIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSB0cmFuc2xhdGlvbi4KKworTWFpbnRhaW5lcjogQ2F0YWxpbiBNYXJpbmFzIDxjYXRhbGluLm1hcmluYXNAYXJtLmNvbT4KK0NoaW5lc2UgbWFpbnRhaW5lcjogRnUgV2VpIDx3ZWZ1QHJlZGhhdC5jb20+CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RvY3VtZW50YXRpb24vYXJtNjQvbWVtb3J5LnR4dCDnmoTkuK3mlofnv7vor5EKKwor5aaC5p6c5oOz6K+E6K665oiW5pu05paw5pys5paH55qE5YaF5a6577yM6K+355u05o6l6IGU57O75Y6f5paH5qGj55qE57u05oqk6ICF44CC5aaC5p6c5L2g5L2/55So6Iux5paHCivkuqTmtYHmnInlm7Dpmr7nmoTor53vvIzkuZ/lj6/ku6XlkJHkuK3mlofniYjnu7TmiqTogIXmsYLliqnjgILlpoLmnpzmnKznv7vor5Hmm7TmlrDkuI3lj4rml7bmiJbogIXnv7sKK+ivkeWtmOWcqOmXrumimO+8jOivt+iBlOezu+S4reaWh+eJiOe7tOaKpOiAheOAggorCivmnKzmlofnv7vor5Hmj5DkuqTml7bnmoQgR2l0IOajgOWHuueCueS4uu+8miBiYzQ2NWFhOWQwNDVmZWIwZTEzYjRhOGYzMmNjMzNjMTk0M2Y2MmQ2CisKK+iLseaWh+eJiOe7tOaKpOiAhe+8miBDYXRhbGluIE1hcmluYXMgPGNhdGFsaW4ubWFyaW5hc0Bhcm0uY29tPgor5Lit5paH54mI57u05oqk6ICF77yaIOWCheeCnCAgRnUgV2VpIDx3ZWZ1QHJlZGhhdC5jb20+CivkuK3mlofniYjnv7vor5HogIXvvJog5YKF54KcICBGdSBXZWkgPHdlZnVAcmVkaGF0LmNvbT4KK+S4reaWh+eJiOagoeivkeiAhe+8miDlgoXngpwgIEZ1IFdlaSA8d2VmdUByZWRoYXQuY29tPgorCivku6XkuIvkuLrmraPmlocKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQkgICAgIExpbnV4IOWcqCBBQXJjaDY0IOS4reeahOWGheWtmOW4g+WxgAorCQkgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PQorCivkvZzogIU6IENhdGFsaW4gTWFyaW5hcyA8Y2F0YWxpbi5tYXJpbmFzQGFybS5jb20+CisKK+acrOaWh+aho+aPj+i/sCBBQXJjaDY0IExpbnV4IOWGheaguOaJgOS9v+eUqOeahOiZmuaLn+WGheWtmOW4g+WxgOOAguatpOaehOaetuWPr+S7peWunueOsAor6aG15aSn5bCP5Li6IDRLQiDnmoQgNCDnuqfovazmjaLooajlkozpobXlpKflsI/kuLogNjRLQiDnmoQgMyDnuqfovazmjaLooajjgIIKKworQUFyY2g2NCBMaW51eCDkvb/nlKggMyDnuqfmiJYgNCDnuqfovazmjaLooajvvIzlhbbpobXlpKflsI/phY3nva7kuLogNEtC77yM5a+55LqO55So5oi35ZKM5YaF5qC4CivliIbliKvpg73mnIkgMzktYml0ICg1MTJHQikg5oiWIDQ4LWJpdCAoMjU2VEIpIOeahOiZmuaLn+WcsOWdgOepuumXtOOAggor5a+55LqO6aG15aSn5bCP5Li6IDY0S0LnmoTphY3nva7vvIzku4Xkvb/nlKggMiDnuqfovazmjaLooajvvIzmnIkgNDItYml0ICg0VEIpIOeahOiZmuaLn+WcsOWdgOepuumXtO+8jOS9huWGheWtmOW4g+WxgOebuOWQjOOAggorCivnlKjmiLflnLDlnYDnqbrpl7TnmoQgNjM6NDgg5L2N5Li6IDDvvIzogIzlhoXmoLjlnLDlnYDnqbrpl7TnmoTnm7jlupTkvY3kuLogMeOAglRUQlJ4IOeahAor6YCJ5oup55Sx6Jma5ouf5Zyw5Z2A55qEIDYzIOS9jee7meWHuuOAgnN3YXBwZXJfcGdfZGlyIOS7heWMheWQq+WGheaguO+8iOWFqOWxgO+8ieaYoOWwhO+8jAor6ICM55So5oi3IHBnZCDku4XljIXlkKvnlKjmiLfvvIjpnZ7lhajlsYDvvInmmKDlsITjgIJzd2FwcGVyX3BnX2RpciDlnLDlnYDooqvlhpnlhaUKK1RUQlIxIOS4re+8jOS4lOS7juS4jeWGmeWFpSBUVEJSMOOAggorCisKK0FBcmNoNjQgTGludXgg5Zyo6aG15aSn5bCP5Li6IDRLQu+8jOW5tuS9v+eUqCAzIOe6p+i9rOaNouihqOaXtueahOWGheWtmOW4g+WxgO+8mgorCivotbflp4vlnLDlnYAJCQnnu5PmnZ/lnLDlnYAJCQnlpKflsI8JCeeUqOmAlAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzAwMDAwMDAwMDAwMDAwMDAJMDAwMDAwN2ZmZmZmZmZmZgkgNTEyR0IJCeeUqOaIt+epuumXtAorZmZmZmZmODAwMDAwMDAwMAlmZmZmZmZmZmZmZmZmZmZmCSA1MTJHQgkJ5YaF5qC456m66Ze0CisKKworQUFyY2g2NCBMaW51eCDlnKjpobXlpKflsI/kuLogNEtC77yM5bm25L2/55SoIDQg57qn6L2s5o2i6KGo5pe255qE5YaF5a2Y5biD5bGA77yaCisKK+i1t+Wni+WcsOWdgAkJCee7k+adn+WcsOWdgAkJCeWkp+WwjwkJ55So6YCUCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMDAwMDAwMDAwMDAwMDAwMAkwMDAwZmZmZmZmZmZmZmZmCSAyNTZUQgkJ55So5oi356m66Ze0CitmZmZmMDAwMDAwMDAwMDAwCWZmZmZmZmZmZmZmZmZmZmYJIDI1NlRCCQnlhoXmoLjnqbrpl7QKKworCitBQXJjaDY0IExpbnV4IOWcqOmhteWkp+Wwj+S4uiA2NEtC77yM5bm25L2/55SoIDIg57qn6L2s5o2i6KGo5pe255qE5YaF5a2Y5biD5bGA77yaCisKK+i1t+Wni+WcsOWdgAkJCee7k+adn+WcsOWdgAkJCeWkp+WwjwkJ55So6YCUCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMDAwMDAwMDAwMDAwMDAwMAkwMDAwMDNmZmZmZmZmZmZmCSAgIDRUQgkJ55So5oi356m66Ze0CitmZmZmZmMwMDAwMDAwMDAwCWZmZmZmZmZmZmZmZmZmZmYJICAgNFRCCQnlhoXmoLjnqbrpl7QKKworCitBQXJjaDY0IExpbnV4IOWcqOmhteWkp+Wwj+S4uiA2NEtC77yM5bm25L2/55SoIDMg57qn6L2s5o2i6KGo5pe255qE5YaF5a2Y5biD5bGA77yaCisKK+i1t+Wni+WcsOWdgAkJCee7k+adn+WcsOWdgAkJCeWkp+WwjwkJ55So6YCUCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorMDAwMDAwMDAwMDAwMDAwMAkwMDAwZmZmZmZmZmZmZmZmCSAyNTZUQgkJ55So5oi356m66Ze0CitmZmZmMDAwMDAwMDAwMDAwCWZmZmZmZmZmZmZmZmZmZmYJIDI1NlRCCQnlhoXmoLjnqbrpl7QKKworCivmm7Tor6bnu4bnmoTlhoXmoLjomZrmi5/lhoXlrZjluIPlsYDvvIzor7flj4LpmIXlhoXmoLjlkK/liqjkv6Hmga/jgIIKKworCis0S0Ig6aG15aSn5bCP55qE6L2s5o2i6KGo5p+l5om+77yaCisKKystLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSsKK3w2MyAgICA1Nnw1NSAgICA0OHw0NyAgICA0MHwzOSAgICAzMnwzMSAgICAyNHwyMyAgICAxNnwxNSAgICAgOHw3ICAgICAgMHwKKystLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSsKKyB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfAorIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB2CisgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfCAgIFsxMTowXSAg6aG15YaF5YGP56e7CisgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgKy0+IFsyMDoxMl0gTDMg57Si5byVCisgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICArLS0tLS0tLS0tLS0+IFsyOToyMV0gTDIg57Si5byVCisgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0+IFszODozMF0gTDEg57Si5byVCisgfCAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+IFs0NzozOV0gTDAg57Si5byVCisgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+IFs2M10gVFRCUjAvMQorCisKKzY0S0Ig6aG15aSn5bCP55qE6L2s5o2i6KGo5p+l5om+77yaCisKKystLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSsKK3w2MyAgICA1Nnw1NSAgICA0OHw0NyAgICA0MHwzOSAgICAzMnwzMSAgICAyNHwyMyAgICAxNnwxNSAgICAgOHw3ICAgICAgMHwKKystLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSsKKyB8ICAgICAgICAgICAgICAgICB8ICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8CisgfCAgICAgICAgICAgICAgICAgfCAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgdgorIHwgICAgICAgICAgICAgICAgIHwgICAgfCAgICAgICAgICAgICAgIHwgICAgICAgICAgICBbMTU6MF0gIOmhteWGheWBj+enuworIHwgICAgICAgICAgICAgICAgIHwgICAgfCAgICAgICAgICAgICAgICstLS0tLS0tLS0tPiBbMjg6MTZdIEwzIOe0ouW8lQorIHwgICAgICAgICAgICAgICAgIHwgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiBbNDE6MjldIEwyIOe0ouW8lQorIHwgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiBbNDc6NDJdIEwxIOe0ouW8lQorICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiBbNjNdIFRUQlIwLzEKKworCivlvZPkvb/nlKggS1ZNIOaXtiwg566h55CG56iL5bqP77yIaHlwZXJ2aXNvcu+8ieWcqCBFTDIg5Lit6YCa6L+H55u45a+55YaF5qC46Jma5ouf5Zyw5Z2A55qECivkuIDkuKrlm7rlrprlgY/np7vmnaXmmKDlsITlhoXmoLjpobXvvIjlhoXmoLjomZrmi5/lnLDlnYDnmoTpq5ggMjQg5L2N6K6+5Li66Zu277yJOgorCivotbflp4vlnLDlnYAJCQnnu5PmnZ/lnLDlnYAJCQnlpKflsI8JCeeUqOmAlAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzAwMDAwMDQwMDAwMDAwMDAJMDAwMDAwN2ZmZmZmZmZmZgkgMjU2R0IJCeWcqCBIWVAg5Lit5pig5bCE55qE5YaF5qC45a+56LGhCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3poX0NOL2FybTY0L3RhZ2dlZC1wb2ludGVycy50eHQgYi9Eb2N1bWVudGF0aW9uL3poX0NOL2FybTY0L3RhZ2dlZC1wb2ludGVycy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY2NGQxYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vemhfQ04vYXJtNjQvdGFnZ2VkLXBvaW50ZXJzLnR4dApAQCAtMCwwICsxLDUyIEBACitDaGluZXNlIHRyYW5zbGF0ZWQgdmVyc2lvbiBvZiBEb2N1bWVudGF0aW9uL2FybTY0L3RhZ2dlZC1wb2ludGVycy50eHQKKworSWYgeW91IGhhdmUgYW55IGNvbW1lbnQgb3IgdXBkYXRlIHRvIHRoZSBjb250ZW50LCBwbGVhc2UgY29udGFjdCB0aGUKK29yaWdpbmFsIGRvY3VtZW50IG1haW50YWluZXIgZGlyZWN0bHkuICBIb3dldmVyLCBpZiB5b3UgaGF2ZSBhIHByb2JsZW0KK2NvbW11bmljYXRpbmcgaW4gRW5nbGlzaCB5b3UgY2FuIGFsc28gYXNrIHRoZSBDaGluZXNlIG1haW50YWluZXIgZm9yCitoZWxwLiAgQ29udGFjdCB0aGUgQ2hpbmVzZSBtYWludGFpbmVyIGlmIHRoaXMgdHJhbnNsYXRpb24gaXMgb3V0ZGF0ZWQKK29yIGlmIHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSB0cmFuc2xhdGlvbi4KKworTWFpbnRhaW5lcjogV2lsbCBEZWFjb24gPHdpbGwuZGVhY29uQGFybS5jb20+CitDaGluZXNlIG1haW50YWluZXI6IEZ1IFdlaSA8d2VmdUByZWRoYXQuY29tPgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEb2N1bWVudGF0aW9uL2FybTY0L3RhZ2dlZC1wb2ludGVycy50eHQg55qE5Lit5paH57+76K+RCisKK+WmguaenOaDs+ivhOiuuuaIluabtOaWsOacrOaWh+eahOWGheWuue+8jOivt+ebtOaOpeiBlOezu+WOn+aWh+aho+eahOe7tOaKpOiAheOAguWmguaenOS9oOS9v+eUqOiLseaWhwor5Lqk5rWB5pyJ5Zuw6Zq+55qE6K+d77yM5Lmf5Y+v5Lul5ZCR5Lit5paH54mI57u05oqk6ICF5rGC5Yqp44CC5aaC5p6c5pys57+76K+R5pu05paw5LiN5Y+K5pe25oiW6ICF57+7Civor5HlrZjlnKjpl67popjvvIzor7fogZTns7vkuK3mlofniYjnu7TmiqTogIXjgIIKKwor6Iux5paH54mI57u05oqk6ICF77yaIFdpbGwgRGVhY29uIDx3aWxsLmRlYWNvbkBhcm0uY29tPgor5Lit5paH54mI57u05oqk6ICF77yaIOWCheeCnCAgRnUgV2VpIDx3ZWZ1QHJlZGhhdC5jb20+CivkuK3mlofniYjnv7vor5HogIXvvJog5YKF54KcICBGdSBXZWkgPHdlZnVAcmVkaGF0LmNvbT4KK+S4reaWh+eJiOagoeivkeiAhe+8miDlgoXngpwgIEZ1IFdlaSA8d2VmdUByZWRoYXQuY29tPgorCivku6XkuIvkuLrmraPmlocKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQlMaW51eCDlnKggQUFyY2g2NCDkuK3luKbmoIforrDnmoTomZrmi5/lnLDlnYAKKwkJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK+S9nOiAhTogV2lsbCBEZWFjb24gPHdpbGwuZGVhY29uQGFybS5jb20+Civml6XmnJ86IDIwMTMg5bm0IDA2IOaciCAxMiDml6UKKwor5pys5paH5qGj566A6L+w5LqG5ZyoIEFBcmNoNjQg5Zyw5Z2A6L2s5o2i57O757uf5Lit5o+Q5L6b55qE5bim5qCH6K6w55qE6Jma5ouf5Zyw5Z2A5Y+K5YW25ZyoCitBQXJjaDY0IExpbnV4IOS4reeahOa9nOWcqOeUqOmAlOOAggorCivlhoXmoLjmj5DkvpvnmoTlnLDlnYDovazmjaLooajphY3nva7kvb/pgJrov4cgVFRCUjAg5a6M5oiQ55qE6Jma5ouf5Zyw5Z2A6L2s5o2i77yI5Y2z55So5oi356m66Ze0CivmmKDlsITvvInvvIzlhbbomZrmi5/lnLDlnYDnmoTmnIDpq5ggOCDkvY3vvIg2Mzo1Nu+8ieS8muiiq+i9rOaNouehrOS7tuaJgOW/veeVpeOAgui/meenjeacuuWItgor6K6p6L+Z5Lqb5L2N5Y+v5L6b5bqU55So56iL5bqP6Ieq55Sx5L2/55So77yM5YW25rOo5oSP5LqL6aG55aaC5LiL77yaCisKKwkoMSkg5YaF5qC46KaB5rGC5omA5pyJ5Lyg6YCS5YiwIEVMMSDnmoTnlKjmiLfnqbrpl7TlnLDlnYDluKbmnIkgMHgwMCDmoIforrDjgIIKKwkgICAg6L+Z5oSP5ZGz552A5Lu75L2V5pC65bim55So5oi356m66Ze06Jma5ouf5Zyw5Z2A55qE57O757uf6LCD55So77yIc3lzY2FsbO+8iQorCSAgICDlj4LmlbAgKuW/hemhuyog5Zyo6Zm35YWl5YaF5qC45YmN5L2/5a6D5Lus55qE5pyA6auY5a2X6IqC6KKr5riF6Zu244CCCisKKwkoMikg6Z2e6Zu25qCH6K6w5Zyo5Lyg6YCS5L+h5Y+35pe25LiN6KKr5L+d5a2Y44CC6L+Z5oSP5ZGz552A5Zyo5bqU55So56iL5bqP5Lit5Yip55So5LqGCisJICAgIOagh+iusOeahOS/oeWPt+WkhOeQhuWHveaVsOaXoOazleS+nei1liBzaWdpbmZvX3Qg55qE55So5oi356m66Ze06Jma5oufCisJICAgIOWcsOWdgOaJgOaQuuW4pueahOWMheWQq+WFtuWGhemDqOWfn+S/oeaBr+eahOagh+iusOOAguatpOinhOWImeeahOS4gOS4quS+i+WkluaYrworCSAgICDlvZPkv6Hlj7fmmK/lnKjosIPor5Xop4Llr5/ngrnnmoTlvILluLjlpITnkIbnqIvluo/kuK3kuqfnlJ/nmoTvvIzmraTml7bmoIforrDnmoQKKwkgICAg5L+h5oGv5bCG6KKr5L+d5a2Y44CCCisKKwkoMykg5b2T5L2/55So5bim5qCH6K6w55qE5oyH6ZKI5pe26ZyA54m55Yir55WZ5b+D77yM5Zug5Li65LuF5a+55Lik5Liq6Jma5ouf5Zyw5Z2ACisJICAgIOeahOmrmOWtl+iKgu+8jEMg57yW6K+R5Zmo5b6I5Y+v6IO95peg5rOV5Yik5pat5a6D5Lus5piv5LiN5ZCM55qE44CCCisKK+atpOaehOaetuS8mumYu+atouWvueW4puagh+iusOeahCBQQyDmjIfpkojnmoTliKnnlKjvvIzlm6DmraTlnKjlvILluLjov5Tlm57ml7bvvIzlhbbpq5jlrZfoioIKK+Wwhuiiq+iuvue9ruaIkOS4gOS4quS4uiDigJw1NeKAnSDnmoTmianlsZXnrKbjgIIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vemhfQ04vYmFzaWNfcHJvZmlsaW5nLnR4dCBiL0RvY3VtZW50YXRpb24vemhfQ04vYmFzaWNfcHJvZmlsaW5nLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTZiZjBiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi96aF9DTi9iYXNpY19wcm9maWxpbmcudHh0CkBAIC0wLDAgKzEsNzEgQEAKK0NoaW5lc2UgdHJhbnNsYXRlZCB2ZXJzaW9uIG9mIERvY3VtZW50YXRpb24vYmFzaWNfcHJvZmlsaW5nCisKK0lmIHlvdSBoYXZlIGFueSBjb21tZW50IG9yIHVwZGF0ZSB0byB0aGUgY29udGVudCwgcGxlYXNlIHBvc3QgdG8gTEtNTCBkaXJlY3RseS4KK0hvd2V2ZXIsIGlmIHlvdSBoYXZlIHByb2JsZW0gY29tbXVuaWNhdGluZyBpbiBFbmdsaXNoIHlvdSBjYW4gYWxzbyBhc2sgdGhlCitDaGluZXNlIG1haW50YWluZXIgZm9yIGhlbHAuICBDb250YWN0IHRoZSBDaGluZXNlIG1haW50YWluZXIsIGlmIHRoaXMKK3RyYW5zbGF0aW9uIGlzIG91dGRhdGVkIG9yIHRoZXJlIGlzIHByb2JsZW0gd2l0aCB0cmFuc2xhdGlvbi4KKworQ2hpbmVzZSBtYWludGFpbmVyOiBMaWFuZyBYaWUgPHhpZWxpYW5nQHhpYW9taS5jb20+CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RvY3VtZW50YXRpb24vYmFzaWNfcHJvZmlsaW5n55qE5Lit5paH57+76K+RCisKK+WmguaenOaDs+ivhOiuuuaIluabtOaWsOacrOaWh+eahOWGheWuue+8jOivt+ebtOaOpeWPkeS/oeWIsExLTUzjgILlpoLmnpzkvaDkvb/nlKjoi7HmlofkuqTmtYHmnInlm7Dpmr7nmoTor53vvIzkuZ/lj68KK+S7peWQkeS4reaWh+eJiOe7tOaKpOiAheaxguWKqeOAguWmguaenOacrOe/u+ivkeabtOaWsOS4jeWPiuaXtuaIluiAhee/u+ivkeWtmOWcqOmXrumimO+8jOivt+iBlOezu+S4reaWh+eJiOe7tOaKpOiAheOAggorCivkuK3mlofniYjnu7TmiqTogIXvvJog6LCi6ImvIExpYW5nIFhpZSA8eGllbGlhbmcwMDdAZ21haWwuY29tPgor5Lit5paH54mI57+76K+R6ICF77yaIOiwouiJryBMaWFuZyBYaWUgPHhpZWxpYW5nMDA3QGdtYWlsLmNvbT4KK+S4reaWh+eJiOagoeivkeiAhe+8mgor5Lul5LiL5Li65q2j5paHCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor5LiL6Z2i6L+Z5Lqb6K+05piO5oyH5Luk6YO95piv6Z2e5bi45Z+656GA55qE77yM5aaC5p6c5L2g5oOz6L+b5LiA5q2l5LqG6Kej6K+36ZiF6K+755u45YWz5LiT5Lia5paH5qGj77ya77yJCivor7fkuI3opoHlho3lnKjmnKzmlofmoaPlop7liqDmlrDnmoTlhoXlrrnvvIzkvYblj6/ku6Xkv67lpI3mlofmoaPkuK3nmoTplJnor6/vvJrvvIkobWJsaWdoQGFyYWNuZXQuY29tKQor5oSf6LCiSm9obiBMZXZvbu+8jERhdmUgSGFuc2Vu562J5Zyo5pKw5YaZ5pe255qE5biu5YqpCisKKzx0ZXN0PiDnlKjkuo7ooajnpLropoHmtYvph4/nmoTnm67moIcKK+ivt+WFiOehruS/neaCqOW3sue7j+acieato+ehrueahFN5c3RlbS5tYXAgLyB2bWxpbnV46YWN572u77yBCisKK+WvueS6jmxpbnV457O757uf5p2l6K+077yM6YWN572udm1saW51euacgOWuueaYk+eahOaWueazleWPr+iDveWwseaYr+S9v+eUqOKAnG1ha2UgaW5zdGFsbOKAne+8jOeEtuWQjuS/ruaUuQorL3NiaW4vaW5zdGFsbGtlcm5lbOWwhnZtbGludXjmi7fotJ3liLAvYm9vdOebruW9le+8jOiAjFN5c3RlbS5tYXDpgJrluLjmmK/pu5jorqTlronoo4Xlpb3nmoQKKworUmVhZHByb2ZpbGUKKy0tLS0tLS0tLS0tCisyLjbns7vliJflhoXmoLjpnIDopoHniYjmnKznm7jlr7novoPmlrDnmoRyZWFkcHJvZmlsZe+8jOavlOWmgnV0aWwtbGludXggMi4xMmHkuK3ljIXlkKvnmoTvvIzlj6/ku6Xku446CisKK2h0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC8g5LiL6L29CisKK+Wkp+mDqOWIhmxpbnV45Y+R6KGM54mI5bey57uP5YyF5ZCr5LqGLgorCivlkK/nlKhyZWFkcHJvZmlsZemcgOimgeWcqGtlcm5lbOWQr+WKqOWRveS7pOihjOWinuWKoOKAnXByb2ZpbGU9MuKAnAorCitjbGVhcgkJcmVhZHByb2ZpbGUgLXIKKwkJPHRlc3Q+CitkdW1wIG91dHB1dAlyZWFkcHJvZmlsZSAtbSAvYm9vdC9TeXN0ZW0ubWFwID4gY2FwdHVyZWRfcHJvZmlsZQorCitPcHJvZmlsZQorLS0tLS0tLS0KKwor5LuOaHR0cDovL29wcm9maWxlLnNvdXJjZWZvcmdlLm5ldC/ojrflj5bmupDku6PnoIHvvIjor7flj4LogINDaGFuZ2Vz5Lul6I635Y+W5Yy56YWN55qE54mI5pys77yJCivlnKhrZXJuZWzlkK/liqjlkb3ku6TooYzlop7liqDigJxpZGxlPXBvbGzigJ0KKwor6YWN572uQ09ORklHX1BST0ZJTElORz155ZKMQ09ORklHX09QUk9GSUxFPXnnhLblkI7ph43lkK/ov5vlhaXmlrBrZXJuZWwKKworLi9jb25maWd1cmUgLS13aXRoLWtlcm5lbC1zdXBwb3J0CittYWtlIGluc3RhbGwKKwor5oOz5b6X5Yiw5aW955qE5rWL6YeP57uT5p6c77yM6K+356Gu5L+d5ZCv55So5LqG5pys5ZywQVBJQ+eJueaAp+OAguWmguaenG9wcmVwb3J05pi+56S65pyJMEh6IENQVe+8jAor6K+05piOQVBJQ+eJueaAp+ayoeacieW8gOWQr+OAguWPpuWkluazqOaEj2lkbGU9cG9sbOmAiemhueWPr+iDveacieaNn+aAp+iDveOAggorCitPbmUgdGltZSBzZXR1cDoKKwkJb3Bjb250cm9sIC0tc2V0dXAgLS12bWxpbnV4PS9ib290L3ZtbGludXgKKworY2xlYXIJCW9wY29udHJvbCAtLXJlc2V0CitzdGFydAkJb3Bjb250cm9sIC0tc3RhcnQKKwkJPHRlc3Q+CitzdG9wCQlvcGNvbnRyb2wgLS1zdG9wCitkdW1wIG91dHB1dAlvcHJlcG9ydCA+ICBvdXRwdXRfZmlsZQorCivlpoLmnpzlj6rnnItrZXJuZWznm7jlhbPnmoTmiqXlkYrnu5PmnpzvvIzor7fov5DooYzlkb3ku6Qgb3ByZXBvcnQgLWwgL2Jvb3Qvdm1saW51eCA+IG91dHB1dF9maWxlCisKK+mAmui/h3Jlc2V06YCJ6aG55Y+v5Lul5riF55CG6L+H5pyf57uf6K6h5pWw5o2u77yM55u45b2T5LqO6YeN5ZCv55qE5pWI5p6c44CCCisKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vemhfQ04vZW1haWwtY2xpZW50cy50eHQgYi9Eb2N1bWVudGF0aW9uL3poX0NOL2VtYWlsLWNsaWVudHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5YTFhM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3poX0NOL2VtYWlsLWNsaWVudHMudHh0CkBAIC0wLDAgKzEsMjEwIEBACivvu79DaGluZXNlIHRyYW5zbGF0ZWQgdmVyc2lvbiBvZiBEb2N1bWVudGF0aW9uL2VtYWlsLWNsaWVudHMudHh0CisKK0lmIHlvdSBoYXZlIGFueSBjb21tZW50IG9yIHVwZGF0ZSB0byB0aGUgY29udGVudCwgcGxlYXNlIGNvbnRhY3QgdGhlCitvcmlnaW5hbCBkb2N1bWVudCBtYWludGFpbmVyIGRpcmVjdGx5LiAgSG93ZXZlciwgaWYgeW91IGhhdmUgYSBwcm9ibGVtCitjb21tdW5pY2F0aW5nIGluIEVuZ2xpc2ggeW91IGNhbiBhbHNvIGFzayB0aGUgQ2hpbmVzZSBtYWludGFpbmVyIGZvcgoraGVscC4gIENvbnRhY3QgdGhlIENoaW5lc2UgbWFpbnRhaW5lciBpZiB0aGlzIHRyYW5zbGF0aW9uIGlzIG91dGRhdGVkCitvciBpZiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgdHJhbnNsYXRpb24uCisKK0NoaW5lc2UgbWFpbnRhaW5lcjogSGFycnkgV2VpIDxoYXJyeXhpeW91QGdtYWlsLmNvbT4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRG9jdW1lbnRhdGlvbi9lbWFpbC1jbGllbnRzLnR4dCDnmoTkuK3mlofnv7vor5EKKwor5aaC5p6c5oOz6K+E6K665oiW5pu05paw5pys5paH55qE5YaF5a6577yM6K+355u05o6l6IGU57O75Y6f5paH5qGj55qE57u05oqk6ICF44CC5aaC5p6c5L2g5L2/55So6Iux5paHCivkuqTmtYHmnInlm7Dpmr7nmoTor53vvIzkuZ/lj6/ku6XlkJHkuK3mlofniYjnu7TmiqTogIXmsYLliqnjgILlpoLmnpzmnKznv7vor5Hmm7TmlrDkuI3lj4rml7bmiJbogIXnv7sKK+ivkeWtmOWcqOmXrumimO+8jOivt+iBlOezu+S4reaWh+eJiOe7tOaKpOiAheOAggorCivkuK3mlofniYjnu7TmiqTogIXvvJog6LS+5aiB5aiBICBIYXJyeSBXZWkgPGhhcnJ5eGl5b3VAZ21haWwuY29tPgor5Lit5paH54mI57+76K+R6ICF77yaIOi0vuWogeWogSAgSGFycnkgV2VpIDxoYXJyeXhpeW91QGdtYWlsLmNvbT4KK+S4reaWh+eJiOagoeivkeiAhe+8miBZaW5nbGluIEx1YW4gPHN5bm15dGhAZ21haWwuY29tPgorCQlYaWFvY2hlbiBXYW5nIDx3YW5neGlhb2NoZW4wQGdtYWlsLmNvbT4KKwkJeWF4aW5zbiA8eWF4aW5zbkAxNjMuY29tPgorCivku6XkuIvkuLrmraPmlocKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitMaW51eOmCruS7tuWuouaIt+err+mFjee9ruS/oeaBrworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCivmma7pgJrphY3nva4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xpbnV45YaF5qC46KGl5LiB5piv6YCa6L+H6YKu5Lu26KKr5o+Q5Lqk55qE77yM5pyA5aW95oqK6KGl5LiB5L2c5Li66YKu5Lu25L2T55qE5YaF5bWM5paH5pys44CC5pyJ5Lqb57u05oqk6ICFCivmjqXmlLbpmYTku7bvvIzkvYbmmK/pmYTku7bnmoTlhoXlrrnmoLzlvI/lupTor6XmmK8idGV4dC9wbGFpbiLjgILnhLbogIzvvIzpmYTku7bkuIDoiKzmmK/kuI3otZ7miJDnmoTvvIwKK+WboOS4uui/meS8muS9v+ihpeS4geeahOW8leeUqOmDqOWIhuWcqOivhOiuuui/h+eoi+S4reWPmOeahOW+iOWbsOmavuOAggorCivnlKjmnaXlj5HpgIFMaW51eOWGheaguOihpeS4geeahOmCruS7tuWuouaIt+err+WcqOWPkemAgeihpeS4geaXtuW6lOivpeWkhOS6juaWh+acrOeahOWOn+Wni+eKtuaAgeOAguS+i+Wmgu+8jAor5LuW5Lus5LiN6IO95pS55Y+Y5oiW6ICF5Yig6Zmk5Yi26KGo56ym5oiW6ICF56m65qC877yM55Sa6Iez5piv5Zyo5q+P5LiA6KGM55qE5byA5aS05oiW6ICF57uT5bC+44CCCisKK+S4jeimgemAmui/hyJmb3JtYXQ9Zmxvd2VkIuaooeW8j+WPkemAgeihpeS4geOAgui/meagt+S8muW8lei1t+S4jeWPr+mihOacn+S7peWPiuacieWus+eahOaWreihjOOAggorCivkuI3opoHorqnkvaDnmoTpgq7ku7blrqLmiLfnq6/ov5vooYzoh6rliqjmjaLooYzjgILov5nmoLfkuZ/kvJrnoLTlnY/kvaDnmoTooaXkuIHjgIIKKwor6YKu5Lu25a6i5oi356uv5LiN6IO95pS55Y+Y5paH5pys55qE5a2X56ym6ZuG57yW56CB5pa55byP44CC6KaB5Y+R6YCB55qE6KGl5LiB5Y+q6IO95pivQVNDSUnmiJbogIVVVEYtOOe8lueggeaWueW8j++8jAor5aaC5p6c5L2g5L2/55SoVVRGLTjnvJbnoIHmlrnlvI/lj5HpgIHpgq7ku7bvvIzpgqPkuYjkvaDlsIbkvJrpgb/lhY3kuIDkupvlj6/og73lj5HnlJ/nmoTlrZfnrKbpm4bpl67popjjgIIKKwor6YKu5Lu25a6i5oi356uv5bqU6K+l5b2i5oiQ5bm25LiU5L+d5oyBIFJlZmVyZW5jZXM6IOaIluiAhSBJbi1SZXBseS1Ubzog5qCH6aKY77yM6YKj5LmICivpgq7ku7bor53popjlsLHkuI3kvJrkuK3mlq3jgIIKKwor5aSN5Yi257KY5biWKOaIluiAheWJqui0tOeymOW4linpgJrluLjkuI3og73nlKjkuo7ooaXkuIHvvIzlm6DkuLrliLbooajnrKbkvJrovazmjaLkuLrnqbrmoLzjgILkvb/nlKh4Y2xpcGJvYXJkLCB4Y2xpcAor5oiW6ICFeGN1dHNlbOS5n+iuuOWPr+S7pe+8jOS9huaYr+acgOWlvea1i+ivleS4gOS4i+aIluiAhemBv+WFjeS9v+eUqOWkjeWItueymOW4luOAggorCivkuI3opoHlnKjkvb/nlKhQR1AvR1BH572y5ZCN55qE6YKu5Lu25Lit5YyF5ZCr6KGl5LiB44CC6L+Z5qC35Lya5L2/5b6X5b6I5aSa6ISa5pys5LiN6IO96K+75Y+W5ZKM6YCC55So5LqO5L2g55qE6KGl5LiB44CCCivvvIjov5nkuKrpl67popjlupTor6XmmK/lj6/ku6Xkv67lpI3nmoTvvIkKKwor5Zyo57uZ5YaF5qC46YKu5Lu25YiX6KGo5Y+R6YCB6KGl5LiB5LmL5YmN77yM57uZ6Ieq5bex5Y+R6YCB5LiA5Liq6KGl5LiB5piv5Liq5LiN6ZSZ55qE5Li75oSP77yM5L+d5a2Y5o6l5pS25Yiw55qECivpgq7ku7bvvIzlsIbooaXkuIHnlKgncGF0Y2gn5ZG95Luk5omT5LiK77yM5aaC5p6c5oiQ5Yqf5LqG77yM5YaN57uZ5YaF5qC46YKu5Lu25YiX6KGo5Y+R6YCB44CCCisKKwor5LiA5Lqb6YKu5Lu25a6i5oi356uv5o+Q56S6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCivov5nph4znu5nlh7rkuIDkupvor6bnu4bnmoRNVUHphY3nva7mj5DnpLrvvIzlj6/ku6XnlKjkuo7nu5lMaW51eOWGheaguOWPkemAgeihpeS4geOAgui/meS6m+W5tuS4jeaEj+WRs+aYrwor5omA5pyJ55qE6L2v5Lu25YyF6YWN572u5oC757uT44CCCisKK+ivtOaYju+8mgorVFVJID0g5Lul5paH5pys5Li65Z+656GA55qE55So5oi35o6l5Y+jCitHVUkgPSDlm77lvaLnlYzpnaLnlKjmiLfmjqXlj6MKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK0FscGluZSAoVFVJKQorCivphY3nva7pgInpobnvvJoKK+WcqCJTZW5kaW5nIFByZWZlcmVuY2VzIumDqOWIhu+8mgorCistICJEbyBOb3QgU2VuZCBGbG93ZWQgVGV4dCLlv4XpobvlvIDlkK8KKy0gIlN0cmlwIFdoaXRlc3BhY2UgQmVmb3JlIFNlbmRpbmci5b+F6aG75YWz6ZetCisKK+W9k+WGmemCruS7tuaXtu+8jOWFieagh+W6lOivpeaUvuWcqOihpeS4geS8muWHuueOsOeahOWcsOaWue+8jOeEtuWQjuaMieS4i0NUUkwtUue7hOWQiOmUru+8jOS9v+aMh+WumueahAor6KGl5LiB5paH5Lu25bWM5YWl5Yiw6YKu5Lu25Lit44CCCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitFdm9sdXRpb24gKEdVSSkKKwor5LiA5Lqb5byA5Y+R6ICF5oiQ5Yqf55qE5L2/55So5a6D5Y+R6YCB6KGl5LiBCisKK+W9k+mAieaLqemCruS7tumAiemhue+8mlByZWZvcm1hdAorICDku45Gb3JtYXQtPkhlYWRpbmctPlByZWZvcm1hdHRlZCAoQ3RybC03KeaIluiAheW3peWFt+agjworCivnhLblkI7kvb/nlKjvvJoKKyAgSW5zZXJ0LT5UZXh0IEZpbGUuLi4gKEFsdC1uIHgp5o+S5YWl6KGl5LiB5paH5Lu244CCCisKK+S9oOi/mOWPr+S7pSJkaWZmIC1OcnUgb2xkLmMgbmV3LmMgfCB4Y2xpcCLvvIzpgInmi6lQcmVmb3JtYXTvvIznhLblkI7kvb/nlKjkuK3pl7TplK7ov5vooYznspjluJbjgIIKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK0ttYWlsIChHVUkpCisKK+S4gOS6m+W8gOWPkeiAheaIkOWKn+eahOS9v+eUqOWug+WPkemAgeihpeS4geOAggorCivpu5jorqTorr7nva7kuI3kuLpIVE1M5qC85byP5piv5ZCI6YCC55qE77yb5LiN6KaB5ZCv55So5a6D44CCCisKK+W9k+S5puWGmeS4gOWwgemCruS7tueahOaXtuWAme+8jOWcqOmAiemhueS4i+mdouS4jeimgemAieaLqeiHquWKqOaNouihjOOAguWUr+S4gOeahOe8uueCueWwseaYr+S9oOWcqOmCruS7tuS4rei+k+WFpeeahOS7u+S9leaWh+acrAor6YO95LiN5Lya6KKr6Ieq5Yqo5o2i6KGM77yM5Zug5q2k5L2g5b+F6aG75Zyo5Y+R6YCB6KGl5LiB5LmL5YmN5omL5Yqo5o2i6KGM44CC5pyA566A5Y2V55qE5pa55rOV5bCx5piv5ZCv55So6Ieq5Yqo5o2i6KGM5p2l5Lmm5YaZ6YKu5Lu277yMCivnhLblkI7miorlroPkv53lrZjkuLrojYnnqL/jgILkuIDml6bkvaDlnKjojYnnqL/kuK3lho3mrKHmiZPlvIDlroPvvIzlroPlt7Lnu4/lhajpg6joh6rliqjmjaLooYzkuobvvIzpgqPkuYjkvaDnmoTpgq7ku7bomb3nhLbmsqHmnIkKK+mAieaLqeiHquWKqOaNouihjO+8jOS9huaYr+i/mOS4jeS8muWkseWOu+W3suacieeahOiHquWKqOaNouihjOOAggorCivlnKjpgq7ku7bnmoTlupXpg6jvvIzmj5LlhaXooaXkuIHkuYvliY3vvIzmlL7kuIrluLjnlKjnmoTooaXkuIHlrprnlYznrKbvvJrkuInkuKrov57lrZflj7coLS0tKeOAggorCivnhLblkI7lnKgiTWVzc2FnZSLoj5zljZXmnaHnm67vvIzpgInmi6nmj5LlhaXmlofku7bvvIzmjqXnnYDpgInlj5bkvaDnmoTooaXkuIHmlofku7bjgILov5jmnInkuIDkuKrpop3lpJbnmoTpgInpobnvvIzkvaDlj6/ku6UKK+mAmui/h+Wug+mFjee9ruS9oOeahOmCruS7tuW7uueri+W3peWFt+agj+iPnOWNle+8jOi/mOWPr+S7peW4puS4iiJpbnNlcnQgZmlsZSLlm77moIfjgIIKKwor5L2g5Y+v5Lul5a6J5YWo5Zyw6YCa6L+HR1BH5qCH6K6w6ZmE5Lu277yM5L2G5piv5YaF5bWM6KGl5LiB5pyA5aW95LiN6KaB5L2/55SoR1BH5qCH6K6w5a6D5Lus44CC5L2c5Li65YaF5bWM5paH5pys55qE562+5Y+R6KGl5LiB77yMCivlvZPku45HUEfkuK3mj5Dlj5Y35L2N57yW56CB5pe25Lya5L2/5LuW5Lus5Y+Y55qE5pu05Yqg5aSN5p2C44CCCisKK+WmguaenOS9oOmdnuimgeS7pemZhOS7tueahOW9ouW8j+WPkemAgeihpeS4ge+8jOmCo+S5iOWwseWPs+mUrueCueWHu+mZhOS7tu+8jOeEtuWQjumAieS4reWxnuaAp++8jOeqgeWHuiJTdWdnZXN0IGF1dG9tYXRpYworZGlzcGxheSLvvIzov5nmoLflhoXltYzpmYTku7bmm7TlrrnmmJPorqnor7vogIXnnIvliLDjgIIKKwor5b2T5L2g6KaB5L+d5a2Y5bCG6KaB5Y+R6YCB55qE5YaF5bWM5paH5pys6KGl5LiB77yM5L2g5Y+v5Lul5LuO5raI5oGv5YiX6KGo56qX5qC86YCJ5oup5YyF5ZCr6KGl5LiB55qE6YKu5Lu277yM54S25ZCO5Y+z5Ye76YCJ5oupCisic2F2ZSBhcyLjgILkvaDlj6/ku6Xkvb/nlKjkuIDkuKrmsqHmnInmm7TmlLnnmoTljIXlkKvooaXkuIHnmoTpgq7ku7bvvIzlpoLmnpzlroPmmK/ku6XmraPnoa7nmoTlvaLlvI/nu4TmiJDjgILlvZPkvaDmraPnnJ/lnKjlroMKK+iHquW3seeahOeql+WPo+S5i+S4i+Wvn+eci++8jOmCo+aXtuayoeaciemAiemhueWPr+S7peS/neWtmOmCruS7ti0t5bey57uP5pyJ5LiA5Liq6L+Z5qC355qEYnVn6KKr5rGH5oql5Yiw5LqGa21haWznmoRidWd6aWxsYQor5bm25LiU5biM5pyb6L+Z5bCG5Lya6KKr5aSE55CG44CC6YKu5Lu25piv5Lul5Y+q6ZKI5a+55p+Q5Liq55So5oi35Y+v6K+75YaZ55qE5p2D6ZmQ6KKr5L+d5a2Y55qE77yM5omA5Lul5aaC5p6c5L2g5oOz5oqK6YKu5Lu25aSN5Yi25Yiw5YW25LuW5Zyw5pa577yMCivkvaDkuI3lvpfkuI3miorku5bku6znmoTmnYPpmZDmlLnkuLrnu4TmiJbogIXmlbTkvZPlj6/or7vjgIIKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK0xvdHVzIE5vdGVzIChHVUkpCisKK+S4jeimgeS9v+eUqOWug+OAggorCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorTXV0dCAoVFVJKQorCivlvojlpJpMaW51eOW8gOWPkeS6uuWRmOS9v+eUqG11dHTlrqLmiLfnq6/vvIzmiYDku6Xor4HmmI7lroPogq/lrprlt6XkvZznmoTpnZ7luLjmvILkuq7jgIIKKworTXV0dOS4jeiHquW4pue8lui+keWZqO+8jOaJgOS7peS4jeeuoeS9oOS9v+eUqOS7gOS5iOe8lui+keWZqOmDveS4jeW6lOivpeW4puacieiHquWKqOaWreihjOOAguWkp+WkmuaVsOe8lui+keWZqOmDveW4puaciQor5LiA5LiqImluc2VydCBmaWxlIumAiemhue+8jOWug+WPr+S7pemAmui/h+S4jeaUueWPmOaWh+S7tuWGheWuueeahOaWueW8j+aPkuWFpeaWh+S7tuOAggorCisndmltJ+S9nOS4um11dHTnmoTnvJbovpHlmajvvJoKKyAgc2V0IGVkaXRvcj0idmkiCisKKyAg5aaC5p6c5L2/55SoeGNsaXDvvIzmlbLlhaXku6XkuIvlkb3ku6QKKyAgOnNldCBwYXN0ZQorICDmjInkuK3plK7kuYvliY3miJbogIVzaGlmdC1pbnNlcnTmiJbogIXkvb/nlKgKKyAgOnIgZmlsZW5hbWUKKwor5aaC5p6c5oOz6KaB5oqK6KGl5LiB5L2c5Li65YaF5bWM5paH5pys44CCCisoYSl0dGFjaOW3peS9nOeahOW+iOWlve+8jOS4jeW4puaciSJzZXQgcGFzdGUi44CCCisKK+mFjee9rumAiemhue+8mgor5a6D5bqU6K+l5Lul6buY6K6k6K6+572u55qE5b2i5byP5bel5L2c44CCCivnhLbogIzvvIzmiooic2VuZF9jaGFyc2V0Iuiuvue9ruS4uiJ1cy1hc2NpaTo6dXRmLTgi5Lmf5piv5LiA5Liq5LiN6ZSZ55qE5Li75oSP44CCCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitQaW5lIChUVUkpCisKK1BpbmXov4fljrvmnInkuIDkupvnqbrmoLzliKDlh4/pl67popjvvIzkvYbmmK/ov5nkupvnjrDlnKjlupTor6Xpg73ooqvkv67lpI3kuobjgIIKKwor5aaC5p6c5Y+v5Lul77yM6K+35L2/55SoYWxwaW5lKHBpbmXnmoTnu6fmib/ogIUpCisKK+mFjee9rumAiemhue+8mgorLSDmnIDov5HnmoTniYjmnKzpnIDopoHmtojpmaTmtYHnqIvmlofmnKwKKy0gIm5vLXN0cmlwLXdoaXRlc3BhY2UtYmVmb3JlLXNlbmQi6YCJ6aG55Lmf5piv6ZyA6KaB55qE44CCCisKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK1N5bHBoZWVkIChHVUkpCisKKy0g5YaF5bWM5paH5pys5Y+v5Lul5b6I5aW955qE5bel5L2c77yI5oiW6ICF5L2/55So6ZmE5Lu277yJ44CCCistIOWFgeiuuOS9v+eUqOWklumDqOeahOe8lui+keWZqOOAggorLSDlr7nkuo7nm67lvZXovoPlpJrml7bpnZ7luLjmhaLjgIIKKy0g5aaC5p6c6YCa6L+Hbm9uLVNTTOi/nuaOpe+8jOaXoOazleS9v+eUqFRMUyBTTVRQ5o6I5p2D44CCCistIOWcqOe7hOaIkOeql+WPo+S4reacieS4gOS4quW+iOacieeUqOeahHJ1bGVyIGJhcuOAggorLSDnu5nlnLDlnYDmnKzkuK3mt7vliqDlnLDlnYDlsLHkuI3kvJrmraPnoa7nmoTkuobop6PmmL7npLrlkI3jgIIKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK1RodW5kZXJiaXJkIChHVUkpCisKK+m7mOiupOaDheWGteS4i++8jHRodW5kZXJiaXJk5b6I5a655piT5o2f5Z2P5paH5pys77yM5L2G5piv6L+Y5pyJ5LiA5Lqb5pa55rOV5Y+v5Lul5by65Yi25a6D5Y+Y5b6X5pu05aW944CCCisKKy0g5Zyo55So5oi35biQ5Y+36K6+572u6YeM77yM57uE5oiQ5ZKM5a+75Z2A77yM5LiN6KaB6YCJ5oupIkNvbXBvc2UgbWVzc2FnZXMgaW4gSFRNTCBmb3JtYXQi44CCCisKKy0g57yW6L6R5L2g55qEVGh1bmRlcmJpcmTphY3nva7orr7nva7mnaXkvb/lroPkuI3opoHmi4booYzkvb/nlKjvvJp1c2VyX3ByZWYoIm1haWxuZXdzLndyYXBsZW5ndGgiLCAwKTsKKworLSDnvJbovpHkvaDnmoRUaHVuZGVyYmlyZOmFjee9ruiuvue9ru+8jOS9v+Wug+S4jeimgeS9v+eUqCJmb3JtYXQ9Zmxvd2VkIuagvOW8j++8mnVzZXJfcHJlZigibWFpbG5ld3MuCisgIHNlbmRfcGxhaW50ZXh0X2Zsb3dlZCIsIGZhbHNlKTsKKworLSDkvaDpnIDopoHkvb9UaHVuZGVyYmlyZOWPmOS4uumihOWFiOagvOW8j+aWueW8j++8mgorICDlpoLmnpzpu5jorqTmg4XlhrXkuIvkvaDkuablhpnnmoTmmK9IVE1M5qC85byP77yM6YKj5LiN5piv5b6I6Zq+44CC5LuF5LuF5LuO5qCH6aKY5qCP55qE5LiL5ouJ5qGG5Lit6YCJ5oupIlByZWZvcm1hdCLmoLzlvI/jgIIKKyAg5aaC5p6c6buY6K6k5oOF5Ya15LiL5L2g5Lmm5YaZ55qE5piv5paH5pys5qC85byP77yM5L2g5LiN5b6X5oqK5a6D5pS55Li6SFRNTOagvOW8j++8iOS7heS7heS9nOS4uuS4gOasoeaAp+eahO+8ieadpeS5puWGmeaWsOeahOa2iOaBr++8jAorICDnhLblkI7lvLrliLbkvb/lroPlm57liLDmlofmnKzmoLzlvI/vvIzlkKbliJnlroPlsLHkvJrmi4booYzjgILopoHlrp7njrDlroPvvIzlnKjlhpnkv6HnmoTlm77moIfkuIrkvb/nlKhzaGlmdOmUruadpeS9v+Wug+WPmOS4ukhUTUwKKyAg5qC85byP77yM54S25ZCO5qCH6aKY5qCP55qE5LiL5ouJ5qGG5Lit6YCJ5oupIlByZWZvcm1hdCLmoLzlvI/jgIIKKworLSDlhYHorrjkvb/nlKjlpJbpg6jnmoTnvJbovpHlmajvvJoKKyAg6ZKI5a+5VGh1bmRlcmJpcmTmiZPooaXkuIHmnIDnroDljZXnmoTmlrnms5XlsLHmmK/kvb/nlKjkuIDkuKoiZXh0ZXJuYWwgZWRpdG9yIuaJqeWxle+8jOeEtuWQjuS9v+eUqOS9oOacgOWWnOasoueahAorICAkRURJVE9S5p2l6K+75Y+W5oiW6ICF5ZCI5bm26KGl5LiB5Yiw5paH5pys5Lit44CC6KaB5a6e546w5a6D77yM5Y+v5Lul5LiL6L295bm25LiU5a6J6KOF6L+Z5Liq5omp5bGV77yM54S25ZCO5re75Yqg5LiA5Liq5L2/55So5a6D55qECisgIOaMiemUrlZpZXctPlRvb2xiYXJzLT5DdXN0b21pemUuLi7mnIDlkI7lvZPkvaDkuablhpnkv6Hmga/nmoTml7blgJnku4Xku4Xngrnlh7vlroPlsLHlj6/ku6XkuobjgIIKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK1RrUmF0IChHVUkpCisKK+WPr+S7peS9v+eUqOWug+OAguS9v+eUqCJJbnNlcnQgZmlsZS4uLiLmiJbogIXlpJbpg6jnmoTnvJbovpHlmajjgIIKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK0dtYWlsIChXZWIgR1VJKQorCivkuI3opoHkvb/nlKjlroPlj5HpgIHooaXkuIHjgIIKKworR21haWznvZHpobXlrqLmiLfnq6/oh6rliqjlnLDmiorliLbooajnrKbovazmjaLkuLrnqbrmoLzjgIIKKwor6Jm954S25Yi26KGo56ym6L2s5o2i5Li656m65qC86Zeu6aKY5Y+v5Lul6KKr5aSW6YOo57yW6L6R5Zmo6Kej5Yaz77yM5ZCM5pe25a6D6L+Y5Lya5L2/55So5Zue6L2m5o2i6KGM5oqK5q+P6KGM5ouG5YiG5Li6NzjkuKrlrZfnrKbjgIIKKwor5Y+m5LiA5Liq6Zeu6aKY5pivR21haWzov5jkvJrmiorku7vkvZXkuI3mmK9BU0NJSeeahOWtl+espueahOS/oeaBr+aUueS4umJhc2U2NOe8lueggeOAguWug+aKiuS4nOilv+WPmOeahOWDj+asp+a0suS6uueahOWQjeWtl+OAggorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi96aF9DTi9maWxlc3lzdGVtcy9zeXNmcy50eHQgYi9Eb2N1bWVudGF0aW9uL3poX0NOL2ZpbGVzeXN0ZW1zL3N5c2ZzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDNiMDVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi96aF9DTi9maWxlc3lzdGVtcy9zeXNmcy50eHQKQEAgLTAsMCArMSwzNzIgQEAKK0NoaW5lc2UgdHJhbnNsYXRlZCB2ZXJzaW9uIG9mIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvc3lzZnMudHh0CisKK0lmIHlvdSBoYXZlIGFueSBjb21tZW50IG9yIHVwZGF0ZSB0byB0aGUgY29udGVudCwgcGxlYXNlIGNvbnRhY3QgdGhlCitvcmlnaW5hbCBkb2N1bWVudCBtYWludGFpbmVyIGRpcmVjdGx5LiAgSG93ZXZlciwgaWYgeW91IGhhdmUgYSBwcm9ibGVtCitjb21tdW5pY2F0aW5nIGluIEVuZ2xpc2ggeW91IGNhbiBhbHNvIGFzayB0aGUgQ2hpbmVzZSBtYWludGFpbmVyIGZvcgoraGVscC4gIENvbnRhY3QgdGhlIENoaW5lc2UgbWFpbnRhaW5lciBpZiB0aGlzIHRyYW5zbGF0aW9uIGlzIG91dGRhdGVkCitvciBpZiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgdHJhbnNsYXRpb24uCisKK01haW50YWluZXI6IFBhdHJpY2sgTW9jaGVsCTxtb2NoZWxAb3NkbC5vcmc+CisJCU1pa2UgTXVycGh5IDxtYW11cnBoQGNzLmNsZW1zb24uZWR1PgorQ2hpbmVzZSBtYWludGFpbmVyOiBGdSBXZWkgPHRla2thbWFubmluamFAZ21haWwuY29tPgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3N5c2ZzLnR4dCDnmoTkuK3mlofnv7vor5EKKwor5aaC5p6c5oOz6K+E6K665oiW5pu05paw5pys5paH55qE5YaF5a6577yM6K+355u05o6l6IGU57O75Y6f5paH5qGj55qE57u05oqk6ICF44CC5aaC5p6c5L2g5L2/55So6Iux5paHCivkuqTmtYHmnInlm7Dpmr7nmoTor53vvIzkuZ/lj6/ku6XlkJHkuK3mlofniYjnu7TmiqTogIXmsYLliqnjgILlpoLmnpzmnKznv7vor5Hmm7TmlrDkuI3lj4rml7bmiJbogIXnv7sKK+ivkeWtmOWcqOmXrumimO+8jOivt+iBlOezu+S4reaWh+eJiOe7tOaKpOiAheOAggor6Iux5paH54mI57u05oqk6ICF77yaIFBhdHJpY2sgTW9jaGVsCTxtb2NoZWxAb3NkbC5vcmc+CisJCU1pa2UgTXVycGh5IDxtYW11cnBoQGNzLmNsZW1zb24uZWR1Pgor5Lit5paH54mI57u05oqk6ICF77yaIOWCheeCnCBGdSBXZWkgPHRla2thbWFubmluamFAZ21haWwuY29tPgor5Lit5paH54mI57+76K+R6ICF77yaIOWCheeCnCBGdSBXZWkgPHRla2thbWFubmluamFAZ21haWwuY29tPgor5Lit5paH54mI5qCh6K+R6ICF77yaIOWCheeCnCBGdSBXZWkgPHRla2thbWFubmluamFAZ21haWwuY29tPgorCisKK+S7peS4i+S4uuato+aWhworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzeXNmcyAtIOeUqOS6juWvvOWHuuWGheaguOWvueixoShrb2JqZWN0KeeahOaWh+S7tuezu+e7nworCitQYXRyaWNrIE1vY2hlbAk8bW9jaGVsQG9zZGwub3JnPgorTWlrZSBNdXJwaHkgPG1hbXVycGhAY3MuY2xlbXNvbi5lZHU+CisKK+S/ruiuojogICAgMTYgQXVndXN0IDIwMTEKK+WOn+Wni+eJiOacrDogICAxMCBKYW51YXJ5IDIwMDMKKworCitzeXNmcyDnroDku4s6Cit+fn5+fn5+fn5+CisKK3N5c2ZzIOaYr+S4gOS4quacgOWIneWfuuS6jiByYW1mcyDkuJTkvY3kuo7lhoXlrZjnmoTmlofku7bns7vnu5/jgILlroPmj5Dkvpvlr7zlh7rlhoXmoLgKK+aVsOaNrue7k+aehOWPiuWFtuWxnuaAp++8jOS7peWPiuWug+S7rOS5i+mXtOeahOWFs+iBlOWIsOeUqOaIt+epuumXtOeahOaWueazleOAggorCitzeXNmcyDlp4vnu4jkuI4ga29iamVjdCDnmoTlupXlsYLnu5PmnoTntKflr4bnm7jlhbPjgILor7fpmIXor7sKK0RvY3VtZW50YXRpb24va29iamVjdC50eHQg5paH5qGj5Lul6I635b6X5pu05aSa5YWz5LqOIGtvYmplY3Qg5o6l5Y+j55qECivkv6Hmga/jgIIKKworCivkvb/nlKggc3lzZnMKK35+fn5+fn5+fn5+CisKK+WPquimgeWGheaguOmFjee9ruS4reWumuS5ieS6hiBDT05GSUdfU1lTRlMg77yMc3lzZnMg5oC75piv6KKr57yW6K+R6L+b5YaF5qC444CC5L2g5Y+vCivpgJrov4fku6XkuIvlkb3ku6TmjILovb3lroM6CisKKyAgICBtb3VudCAtdCBzeXNmcyBzeXNmcyAvc3lzCisKKwor5Yib5bu655uu5b2VCit+fn5+fn5+fgorCivku7vkvZUga29iamVjdCDlnKjns7vnu5/kuK3ms6jlhozvvIzlsLHkvJrmnInkuIDkuKrnm67lvZXlnKggc3lzZnMg5Lit6KKr5Yib5bu644CC6L+Z5LiqCivnm67lvZXmmK/kvZzkuLror6Uga29iamVjdCDnmoTniLblr7nosaHmiYDlnKjnm67lvZXnmoTlrZDnm67lvZXliJvlu7rnmoTvvIzku6Xlh4bnoa7lnLDkvKDpgJIKK+WGheaguOeahOWvueixoeWxguasoeWIsOeUqOaIt+epuumXtOOAgnN5c2ZzIOS4reeahOmhtuWxguebruW9leS7o+ihqOedgOWGheaguOWvueixoeWxguasoeeahAor5YWx5ZCM56WW5YWI77yb5L6L5aaC77ya5p+Q5Lqb5a+56LGh5bGe5LqO5p+Q5Liq5a2Q57O757uf44CCCisKK1N5c2ZzIOWcqOS4juWFtuebruW9leWFs+iBlOeahCBrZXJuZnNfbm9kZSDlr7nosaHkuK3lhoXpg6jkv53lrZjkuIDkuKrmjIflkJHlrp7njrAKK+ebruW9leeahCBrb2JqZWN0IOeahOaMh+mSiOOAguS7peWJje+8jOi/meS4qiBrb2JqZWN0IOaMh+mSiOiiqyBzeXNmcyDnm7TmjqXnlKjkuo4KK2tvYmplY3Qg5paH5Lu25omT5byA5ZKM5YWz6Zet55qE5byV55So6K6h5pWw44CC6ICM546w5Zyo55qEIHN5c2ZzIOWunueOsOS4re+8jGtvYmplY3QKK+W8leeUqOiuoeaVsOWPquiDvemAmui/hyBzeXNmc19zY2hlZHVsZV9jYWxsYmFjaygpIOWHveaVsOebtOaOpeS/ruaUueOAggorCisKK+WxnuaApworfn5+fgorCitrb2JqZWN0IOeahOWxnuaAp+WPr+WcqOaWh+S7tuezu+e7n+S4reS7peaZrumAmuaWh+S7tueahOW9ouW8j+WvvOWHuuOAglN5c2ZzIOS4uuWxnuaAp+WumuS5iQor5LqG6Z2i5ZCR5paH5Lu2IEkvTyDmk43kvZznmoTmlrnms5XvvIzku6Xmj5Dkvpvlr7nlhoXmoLjlsZ7mgKfnmoTor7vlhpnjgIIKKworCivlsZ7mgKflupTkuLogQVNDSUkg56CB5paH5pys5paH5Lu244CC5Lul5LiA5Liq5paH5Lu25Y+q5a2Y5YKo5LiA5Liq5bGe5oCn5YC85Li65a6c44CC5L2G5LiA5LiqCivmlofku7blj6rljIXlkKvkuIDkuKrlsZ7mgKflgLzlj6/og73lvbHlk43mlYjnjofvvIzmiYDku6XkuIDkuKrljIXlkKvnm7jlkIzmlbDmja7nsbvlnovnmoTlsZ7mgKflgLwKK+aVsOe7hOS5n+iiq+W5v+azm+WcsOaOpeWPl+OAggorCivmt7flkIjnsbvlnovjgIHooajovr7lpJrooYzmlbDmja7ku6Xlj4rkuIDkupvmgKrlvILnmoTmlbDmja7moLzlvI/kvJrpga3liLDlvLrng4jlj43lr7njgILov5nmoLflgZrmmK8KK+W+iOS4ouiEuOeahCzogIzkuJTlhbbku6PnoIHkvJrlnKjmnKrpgJrnn6XkvZzogIXnmoTmg4XlhrXkuIvooqvph43lhpnjgIIKKworCivkuIDkuKrnroDljZXnmoTlsZ7mgKfnu5PmnoTlrprkuYnlpoLkuIs6CisKK3N0cnVjdCBhdHRyaWJ1dGUgeworICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAqIG5hbWU7CisgICAgICAgIHN0cnVjdCBtb2R1bGUJCSpvd25lcjsKKyAgICAgICAgdW1vZGVfdCAgICAgICAgICAgICAgICAgbW9kZTsKK307CisKKworaW50IHN5c2ZzX2NyZWF0ZV9maWxlKHN0cnVjdCBrb2JqZWN0ICoga29iaiwgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqIGF0dHIpOwordm9pZCBzeXNmc19yZW1vdmVfZmlsZShzdHJ1Y3Qga29iamVjdCAqIGtvYmosIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKiBhdHRyKTsKKworCivkuIDkuKrljZXni6znmoTlsZ7mgKfnu5PmnoTlubbkuI3ljIXlkKvor7vlhpnlhbblsZ7mgKflgLznmoTmlrnms5XjgILlrZDns7vnu5/mnIDlpb3kuLrlop7liKDnibnlrpoKK+Wvueixoeexu+Wei+eahOWxnuaAp+WumuS5ieiHquW3seeahOWxnuaAp+e7k+aehOS9k+WSjOWwgeijheWHveaVsOOAggorCivkvovlpoI66amx5Yqo56iL5bqP5qih5Z6L5a6a5LmJ55qEIGRldmljZV9hdHRyaWJ1dGUg57uT5p6E5L2T5aaC5LiLOgorCitzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSB7CisJc3RydWN0IGF0dHJpYnV0ZQlhdHRyOworCXNzaXplX3QgKCpzaG93KShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJY2hhciAqYnVmKTsKKwlzc2l6ZV90ICgqc3RvcmUpKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQkgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpOworfTsKKworaW50IGRldmljZV9jcmVhdGVfZmlsZShzdHJ1Y3QgZGV2aWNlICosIGNvbnN0IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICopOwordm9pZCBkZXZpY2VfcmVtb3ZlX2ZpbGUoc3RydWN0IGRldmljZSAqLCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqKTsKKwor5Li65LqG5a6a5LmJ6K6+5aSH5bGe5oCn77yM5ZCM5pe25a6a5LmJ5LqG5LiA5LiL6L6F5Yqp5a6POgorCisjZGVmaW5lIERFVklDRV9BVFRSKF9uYW1lLCBfbW9kZSwgX3Nob3csIF9zdG9yZSkgXAorc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfIyNfbmFtZSA9IF9fQVRUUihfbmFtZSwgX21vZGUsIF9zaG93LCBfc3RvcmUpCisKK+S+i+Wmgjrlo7DmmI4KKworc3RhdGljIERFVklDRV9BVFRSKGZvbywgU19JV1VTUiB8IFNfSVJVR08sIHNob3dfZm9vLCBzdG9yZV9mb28pOworCivnrYnlkIzkuo7lpoLkuIvku6PnoIHvvJoKKworc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX2ZvbyA9IHsKKyAgICAgICAuYXR0cgk9IHsKKwkJLm5hbWUgPSAiZm9vIiwKKwkJLm1vZGUgPSBTX0lXVVNSIHwgU19JUlVHTywKKwkJLnNob3cgPSBzaG93X2ZvbywKKwkJLnN0b3JlID0gc3RvcmVfZm9vLAorCX0sCit9OworCisKK+WtkOezu+e7n+eJueacieeahOWbnuiwg+WHveaVsAorfn5+fn5+fn5+fn5+fn5+fn5+fgorCivlvZPkuIDkuKrlrZDns7vnu5/lrprkuYnkuIDkuKrmlrDnmoTlsZ7mgKfnsbvlnovml7bvvIzlv4Xpobvlrp7njrDkuIDns7vliJfnmoQgc3lzZnMg5pON5L2c77yMCivku6XluK7liqnor7vlhpnosIPnlKjlrp7njrDlsZ7mgKfmiYDmnInogIXnmoTmmL7npLrlkozlgqjlrZjmlrnms5XjgIIKKworc3RydWN0IHN5c2ZzX29wcyB7CisgICAgICAgIHNzaXplX3QgKCpzaG93KShzdHJ1Y3Qga29iamVjdCAqLCBzdHJ1Y3QgYXR0cmlidXRlICosIGNoYXIgKik7CisgICAgICAgIHNzaXplX3QgKCpzdG9yZSkoc3RydWN0IGtvYmplY3QgKiwgc3RydWN0IGF0dHJpYnV0ZSAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7Cit9OworCitb5a2Q57O757uf5bqU5bey57uP5a6a5LmJ5LqG5LiA5LiqIHN0cnVjdCBrb2JqX3R5cGUg57uT5p6E5L2T5L2c5Li66L+Z5Liq57G75Z6L55qECivmj4/ov7DnrKbvvIzlubblnKjmraTkv53lrZggc3lzZnNfb3BzIOeahOaMh+mSiOOAguabtOWkmueahOS/oeaBr+WPguingSBrb2JqZWN0IOeahAor5paH5qGjXQorCitzeXNmcyDkvJrkuLrov5nkuKrnsbvlnovosIPnlKjpgILlvZPnmoTmlrnms5XjgILlvZPkuIDkuKrmlofku7booqvor7vlhpnml7bvvIzov5nkuKrmlrnms5XkvJoKK+WwhuS4gOiIrOeahGtvYmplY3Qg5ZKMIGF0dHJpYnV0ZSDnu5PmnoTkvZPmjIfpkojovazmjaLkuLrpgILlvZPnmoTmjIfpkojnsbvlnovlkI4KK+iwg+eUqOebuOWFs+iBlOeahOWHveaVsOOAggorCisKK+ekuuS+izoKKworI2RlZmluZSB0b19kZXYob2JqKSBjb250YWluZXJfb2Yob2JqLCBzdHJ1Y3QgZGV2aWNlLCBrb2JqKQorI2RlZmluZSB0b19kZXZfYXR0cihfYXR0cikgY29udGFpbmVyX29mKF9hdHRyLCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSwgYXR0cikKKworc3RhdGljIHNzaXplX3QgZGV2X2F0dHJfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmKQoreworICAgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqZGV2X2F0dHIgPSB0b19kZXZfYXR0cihhdHRyKTsKKyAgICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2KGtvYmopOworICAgICAgICBzc2l6ZV90IHJldCA9IC1FSU87CisKKyAgICAgICAgaWYgKGRldl9hdHRyLT5zaG93KQorICAgICAgICAgICAgICAgIHJldCA9IGRldl9hdHRyLT5zaG93KGRldiwgZGV2X2F0dHIsIGJ1Zik7CisgICAgICAgIGlmIChyZXQgPj0gKHNzaXplX3QpUEFHRV9TSVpFKSB7CisgICAgICAgICAgICAgICAgcHJpbnRfc3ltYm9sKCJkZXZfYXR0cl9zaG93OiAlcyByZXR1cm5lZCBiYWQgY291bnRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKWRldl9hdHRyLT5zaG93KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0OworfQorCisKKwor6K+75YaZ5bGe5oCn5pWw5o2uCit+fn5+fn5+fn5+fn4KKwor5Zyo5aOw5piO5bGe5oCn5pe277yM5b+F6aG75oyH5a6aIHNob3coKSDmiJYgc3RvcmUoKSDmlrnms5XvvIzku6Xlrp7njrDlsZ7mgKfnmoQKK+ivu+aIluWGmeOAgui/meS6m+aWueazleeahOexu+Wei+W6lOivpeWSjOS7peS4i+eahOiuvuWkh+WxnuaAp+WumuS5ieS4gOagt+eugOWNleOAggorCitzc2l6ZV90ICgqc2hvdykoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKTsKK3NzaXplX3QgKCpzdG9yZSkoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpOworCivkuZ/lsLHmmK/or7Qs5LuW5Lus5bqU5Y+q5Lul5LiA5Liq5aSE55CG5a+56LGh44CB5LiA5Liq5bGe5oCn5ZKM5LiA5Liq57yT5Yay5oyH6ZKI5L2c5Li65Y+C5pWw44CCCisKK3N5c2ZzIOS8muWIhumFjeS4gOS4quWkp+Wwj+S4uiAoUEFHRV9TSVpFKSDnmoTnvJPlhrLljLrlubbkvKDpgJLnu5nov5nkuKrmlrnms5XjgIIKK1N5c2ZzIOWwhuS8muS4uuavj+asoeivu+WGmeaTjeS9nOiwg+eUqOS4gOasoei/meS4quaWueazleOAgui/meS9v+W+l+i/meS6m+aWueazleWcqOaJp+ihjOaXtgor5Lya5Ye6546w5Lul5LiL55qE6KGM5Li6OgorCistIOWcqOivu+aWuemdou+8iHJlYWQoMinvvInvvIxzaG93KCkg5pa55rOV5bqU6K+l5aGr5YWF5pW05Liq57yT5Yay5Yy644CC5Zue5oOz5bGe5oCnCisgIOW6lOWPquWvvOWHuuS6huS4gOS4quWxnuaAp+WAvOaIluaYr+S4gOS4quWQjOexu+Wei+WxnuaAp+WAvOeahOaVsOe7hO+8jOaJgOS7pei/meS4quS7o+S7t+WwhgorICDkuI3kvJrkuI3lpKrpq5jjgIIKKworICDov5nkvb/lvpfnlKjmiLfnqbrpl7Tlj6/ku6XlsYDpg6jlnLDor7vlkozku7vmhI/nmoTlkJHliY3mkJzntKLmlbTkuKrmlofku7bjgILlpoLmnpznlKjmiLfnqbrpl7QKKyAg5ZCR5ZCO5pCc57Si5Yiw6Zu25oiW5L2/55So4oCYMOKAmeWBj+enu+aJp+ihjOS4gOS4qnByZWFkKDIp5pON5L2c77yMc2hvdygp5pa55rOV5bCGCisgIOWGjeasoeiiq+iwg+eUqO+8jOS7pemHjeaWsOWhq+WFhee8k+WtmOOAggorCistIOWcqOWGmeaWuemdou+8iHdyaXRlKDIp77yJ77yMc3lzZnMg5biM5pyb5Zyo56ys5LiA5qyh5YaZ5pON5L2c5pe25b6X5Yiw5pW05Liq57yT5Yay5Yy644CCCisgIOS5i+WQjiBTeXNmcyDkvKDpgJLmlbTkuKrnvJPlhrLljLrnu5kgc3RvcmUoKSDmlrnms5XjgIIKKworICDlvZPopoHlhpkgc3lzZnMg5paH5Lu25pe277yM55So5oi356m66Ze06L+b56iL5bqU6aaW5YWI6K+75Y+W5pW05Liq5paH5Lu277yM5L+u6K+l5oOz6KaBCisgIOaUueWPmOeahOWAvO+8jOeEtuWQjuWbnuWGmeaVtOS4que8k+WGsuWMuuOAggorCisgIOWcqOivu+WGmeWxnuaAp+WAvOaXtu+8jOWxnuaAp+aWueazleeahOaJp+ihjOW6lOaTjeS9nOebuOWQjOeahOe8k+WGsuWMuuOAggorCivms6jorrA6CisKKy0g5YaZ5pON5L2c5a+86Ie055qEIHNob3coKSDmlrnms5Xph43ovb3vvIzkvJrlv73nlaXlvZPliY3mlofku7bkvY3nva7jgIIKKworLSDnvJPlhrLljLrlupTmgLvmmK8gUEFHRV9TSVpFIOWkp+Wwj+OAguWvueS6jmkzODbvvIzov5nkuKrlgLzkuLo0MDk244CCCisKKy0gc2hvdygpIOaWueazleW6lOivpei/lOWbnuWGmeWFpee8k+WGsuWMuueahOWtl+iKguaVsO+8jOS5n+WwseaYryBzbnByaW50Zigp55qECisgIOi/lOWbnuWAvOOAggorCistIHNob3coKSDlupTlp4vnu4jkvb/nlKggc25wcmludGYoKeOAggorCistIHN0b3JlKCkg5bqU6L+U5Zue57yT5Yay5Yy655qE5bey55So5a2X6IqC5pWw44CC5aaC5p6c5pW05Liq57yT5a2Y6YO95bey5aGr5ruh77yM5Y+q6ZyA6L+U5ZueCisgIGNvdW50IOWPguaVsOOAggorCistIHNob3coKSDmiJYgc3RvcmUoKSDlj6/ku6Xov5Tlm57plJnor6/lgLzjgILlvZPlvpfliLDkuIDkuKrpnZ7ms5XlgLzvvIzlv4Xpobvov5Tlm57kuIDkuKoKKyAg6ZSZ6K+v5YC844CCCisKKy0g5LiA5Liq5Lyg6YCS57uZ5pa55rOV55qE5a+56LGh5bCG5Lya6YCa6L+HIHN5c2ZzIOiwg+eUqOWvueixoeWGheW1jOeahOW8leeUqOiuoeaVsOWbuuWumuWcqAorICDlhoXlrZjkuK3jgILlsL3nrqHlpoLmraTvvIzlr7nosaHku6PooajnmoTniannkIblrp7kvZMo5aaC6K6+5aSHKeWPr+iDveW3suS4jeWtmOWcqOOAguWmguacieW/heimge+8jAorICDlupTor6Xlrp7njrDkuIDkuKrmo4DmtYvmnLrliLbjgIIKKwor5LiA5Liq566A5Y2V55qEKOacque7j+WunumqjOivgeWunueahCnorr7lpIflsZ7mgKflrp7njrDlpoLkuIvvvJoKKworc3RhdGljIHNzaXplX3Qgc2hvd19uYW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmKQoreworCXJldHVybiBzY25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIlc1xuIiwgZGV2LT5uYW1lKTsKK30KKworc3RhdGljIHNzaXplX3Qgc3RvcmVfbmFtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sKKyAgICAgICAgc25wcmludGYoZGV2LT5uYW1lLCBzaXplb2YoZGV2LT5uYW1lKSwgIiUuKnMiLAorICAgICAgICAgICAgICAgICAoaW50KW1pbihjb3VudCwgc2l6ZW9mKGRldi0+bmFtZSkgLSAxKSwgYnVmKTsKKwlyZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyBERVZJQ0VfQVRUUihuYW1lLCBTX0lSVUdPLCBzaG93X25hbWUsIHN0b3JlX25hbWUpOworCisKK++8iOazqOaEj++8muecn+ato+eahOWunueOsOS4jeWFgeiuuOeUqOaIt+epuumXtOiuvue9ruiuvuWkh+WQjeOAgu+8iQorCivpobblsYLnm67lvZXluIPlsYAKK35+fn5+fn5+fn5+fgorCitzeXNmcyDnm67lvZXnmoTlronmjpLmmL7npLrkuoblhoXmoLjmlbDmja7nu5PmnoTkuYvpl7TnmoTlhbPns7vjgIIKKwor6aG25bGCIHN5c2ZzIOebruW9leWmguS4izoKKworYmxvY2svCitidXMvCitjbGFzcy8KK2Rldi8KK2RldmljZXMvCitmaXJtd2FyZS8KK25ldC8KK2ZzLworCitkZXZpY2VzLyDljIXlkKvkuobkuIDkuKrorr7lpIfmoJHnmoTmlofku7bns7vnu5/ooajnpLrjgILku5bnm7TmjqXmmKDlsITkuoblhoXpg6jnmoTlhoXmoLgKK+iuvuWkh+agke+8jOWPjeaYoOS6huiuvuWkh+eahOWxguasoee7k+aehOOAggorCitidXMvIOWMheWQq+S6huWGheaguOS4reWQhOenjeaAu+e6v+exu+Wei+eahOW5s+mdouebruW9leW4g+WxgOOAguavj+S4quaAu+e6v+ebruW9leWMheWQq+S4pOS4qgor5a2Q55uu5b2VOgorCisJZGV2aWNlcy8KKwlkcml2ZXJzLworCitkZXZpY2VzLyDljIXlkKvkuobns7vnu5/kuK3lh7rnjrDnmoTmr4/kuKrorr7lpIfnmoTnrKblj7fpk77mjqXvvIzku5bku6zmjIflkJEgcm9vdC8g5LiL55qECivorr7lpIfnm67lvZXjgIIKKworZHJpdmVycy8g5YyF5ZCr5LqG5q+P5Liq5bey5Li654m55a6a5oC757q/5LiK55qE6K6+5aSH6ICM5oyC6L2955qE6amx5Yqo56iL5bqP55qE55uu5b2VKOi/memHjAor5YGH5a6a6amx5Yqo5rKh5pyJ6Leo6LaK5aSa5Liq5oC757q/57G75Z6LKeOAggorCitmcy8g5YyF5ZCr5LqG5LiA5Liq5Li65paH5Lu257O757uf6K6+56uL55qE55uu5b2V44CC546w5Zyo5q+P5Liq5oOz6KaB5a+85Ye65bGe5oCn55qE5paH5Lu257O757uf5b+F6aG7CivlnKggZnMvIOS4i+WIm+W7uuiHquW3seeahOWxguasoee7k+aehCjlj4Lop4FEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2Z1c2UudHh0KeOAggorCitkZXYvIOWMheWQq+S4pOS4quWtkOebruW9le+8miBjaGFyLyDlkowgYmxvY2sv44CC5Zyo6L+Z5Lik5Liq5a2Q55uu5b2V5Lit77yM5pyJ5LulCis8bWFqb3I+OjxtaW5vcj4g5qC85byP5ZG95ZCN55qE56ym5Y+36ZO+5o6l44CC6L+Z5Lqb56ym5Y+36ZO+5o6l5oyH5ZCRIHN5c2ZzIOebruW9lQor5Lit55u45bqU55qE6K6+5aSH44CCL3N5cy9kZXYg5o+Q5L6b5LiA5Liq6YCa6L+H5LiA5LiqIHN0YXQoMikg5pON5L2c57uT5p6c77yM5p+l5om+Civorr7lpIcgc3lzZnMg5o6l5Y+j5b+r5o2355qE5pa55rOV44CCCisKK+abtOWkmuacieWFsyBkcml2ZXItbW9kZWwg55qE54m55oCn5L+h5oGv5Y+v5Lul5ZyoIERvY3VtZW50YXRpb24vZHJpdmVyLW1vZGVsLwor5Lit5om+5Yiw44CCCisKKworVE9ETzog5a6M5oiQ6L+Z5LiA6IqC44CCCisKKwor5b2T5YmN5o6l5Y+jCit+fn5+fn5+fgorCivku6XkuIvnmoTmjqXlj6PlsYLmma7pgY3lrZjlnKjkuo7lvZPliY3nmoRzeXNmc+S4rToKKworLSDorr7lpIcgKGluY2x1ZGUvbGludXgvZGV2aWNlLmgpCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCivnu5PmnoTkvZM6CisKK3N0cnVjdCBkZXZpY2VfYXR0cmlidXRlIHsKKwlzdHJ1Y3QgYXR0cmlidXRlCWF0dHI7CisJc3NpemVfdCAoKnNob3cpKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCisJCQljaGFyICpidWYpOworCXNzaXplX3QgKCpzdG9yZSkoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwKKwkJCSBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCk7Cit9OworCivlo7DmmI46CisKK0RFVklDRV9BVFRSKF9uYW1lLCBfbW9kZSwgX3Nob3csIF9zdG9yZSk7CisKK+Wini/liKDlsZ7mgKc6CisKK2ludCBkZXZpY2VfY3JlYXRlX2ZpbGUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqIGF0dHIpOwordm9pZCBkZXZpY2VfcmVtb3ZlX2ZpbGUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqIGF0dHIpOworCisKKy0g5oC757q/6amx5Yqo56iL5bqPIChpbmNsdWRlL2xpbnV4L2RldmljZS5oKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK+e7k+aehOS9kzoKKworc3RydWN0IGJ1c19hdHRyaWJ1dGUgeworICAgICAgICBzdHJ1Y3QgYXR0cmlidXRlICAgICAgICBhdHRyOworICAgICAgICBzc2l6ZV90ICgqc2hvdykoc3RydWN0IGJ1c190eXBlICosIGNoYXIgKiBidWYpOworICAgICAgICBzc2l6ZV90ICgqc3RvcmUpKHN0cnVjdCBidXNfdHlwZSAqLCBjb25zdCBjaGFyICogYnVmLCBzaXplX3QgY291bnQpOworfTsKKwor5aOw5piOOgorCitCVVNfQVRUUihfbmFtZSwgX21vZGUsIF9zaG93LCBfc3RvcmUpCisKK+Wini/liKDlsZ7mgKc6CisKK2ludCBidXNfY3JlYXRlX2ZpbGUoc3RydWN0IGJ1c190eXBlICosIHN0cnVjdCBidXNfYXR0cmlidXRlICopOwordm9pZCBidXNfcmVtb3ZlX2ZpbGUoc3RydWN0IGJ1c190eXBlICosIHN0cnVjdCBidXNfYXR0cmlidXRlICopOworCisKKy0g6K6+5aSH6amx5Yqo56iL5bqPIChpbmNsdWRlL2xpbnV4L2RldmljZS5oKQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor57uT5p6E5L2TOgorCitzdHJ1Y3QgZHJpdmVyX2F0dHJpYnV0ZSB7CisgICAgICAgIHN0cnVjdCBhdHRyaWJ1dGUgICAgICAgIGF0dHI7CisgICAgICAgIHNzaXplX3QgKCpzaG93KShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqLCBjaGFyICogYnVmKTsKKyAgICAgICAgc3NpemVfdCAoKnN0b3JlKShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqLCBjb25zdCBjaGFyICogYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCk7Cit9OworCivlo7DmmI46CisKK0RSSVZFUl9BVFRSKF9uYW1lLCBfbW9kZSwgX3Nob3csIF9zdG9yZSkKKwor5aKeL+WIoOWxnuaAp++8mgorCitpbnQgZHJpdmVyX2NyZWF0ZV9maWxlKHN0cnVjdCBkZXZpY2VfZHJpdmVyICosIGNvbnN0IHN0cnVjdCBkcml2ZXJfYXR0cmlidXRlICopOwordm9pZCBkcml2ZXJfcmVtb3ZlX2ZpbGUoc3RydWN0IGRldmljZV9kcml2ZXIgKiwgY29uc3Qgc3RydWN0IGRyaXZlcl9hdHRyaWJ1dGUgKik7CisKKwor5paH5qGjCit+fn5+CisKK3N5c2ZzIOebruW9lee7k+aehOS7peWPiuWFtuS4reWMheWQq+eahOWxnuaAp+WumuS5ieS6huS4gOS4quWGheaguOS4jueUqOaIt+epuumXtOS5i+mXtOeahCBBQknjgIIKK+WvueS6juS7u+S9lSBBQknvvIzlhbboh6rouqvnmoTnqLPlrprlkozpgILlvZPnmoTmlofmoaPmmK/pnZ7luLjph43opoHnmoTjgILmiYDmnInmlrDnmoQgc3lzZnMKK+WxnuaAp+W/hemhu+WcqCBEb2N1bWVudGF0aW9uL0FCSSDkuK3mnInmlofmoaPjgILor6bop4EgRG9jdW1lbnRhdGlvbi9BQkkvUkVBRE1F44CCCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3poX0NOL2dwaW8udHh0IGIvRG9jdW1lbnRhdGlvbi96aF9DTi9ncGlvLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2U5NzI1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi96aF9DTi9ncGlvLnR4dApAQCAtMCwwICsxLDY1MCBAQAorQ2hpbmVzZSB0cmFuc2xhdGVkIHZlcnNpb24gb2YgRG9jdW1lbnRhdGlvbi9ncGlvLnR4dAorCitJZiB5b3UgaGF2ZSBhbnkgY29tbWVudCBvciB1cGRhdGUgdG8gdGhlIGNvbnRlbnQsIHBsZWFzZSBjb250YWN0IHRoZQorb3JpZ2luYWwgZG9jdW1lbnQgbWFpbnRhaW5lciBkaXJlY3RseS4gIEhvd2V2ZXIsIGlmIHlvdSBoYXZlIGEgcHJvYmxlbQorY29tbXVuaWNhdGluZyBpbiBFbmdsaXNoIHlvdSBjYW4gYWxzbyBhc2sgdGhlIENoaW5lc2UgbWFpbnRhaW5lciBmb3IKK2hlbHAuICBDb250YWN0IHRoZSBDaGluZXNlIG1haW50YWluZXIgaWYgdGhpcyB0cmFuc2xhdGlvbiBpcyBvdXRkYXRlZAorb3IgaWYgdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIHRyYW5zbGF0aW9uLgorCitNYWludGFpbmVyOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+CisJCUxpbnVzIFdhbGxlaWogPGxpbnVzLndhbGxlaWpAbGluYXJvLm9yZz4KK0NoaW5lc2UgbWFpbnRhaW5lcjogRnUgV2VpIDx0ZWtrYW1hbm5pbmphQGdtYWlsLmNvbT4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRG9jdW1lbnRhdGlvbi9ncGlvLnR4dCDnmoTkuK3mlofnv7vor5EKKwor5aaC5p6c5oOz6K+E6K665oiW5pu05paw5pys5paH55qE5YaF5a6577yM6K+355u05o6l6IGU57O75Y6f5paH5qGj55qE57u05oqk6ICF44CC5aaC5p6c5L2g5L2/55So6Iux5paHCivkuqTmtYHmnInlm7Dpmr7nmoTor53vvIzkuZ/lj6/ku6XlkJHkuK3mlofniYjnu7TmiqTogIXmsYLliqnjgILlpoLmnpzmnKznv7vor5Hmm7TmlrDkuI3lj4rml7bmiJbogIXnv7sKK+ivkeWtmOWcqOmXrumimO+8jOivt+iBlOezu+S4reaWh+eJiOe7tOaKpOiAheOAggor6Iux5paH54mI57u05oqk6ICF77yaIEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KKwkJTGludXMgV2FsbGVpaiA8bGludXMud2FsbGVpakBsaW5hcm8ub3JnPgor5Lit5paH54mI57u05oqk6ICF77yaIOWCheeCnCBGdSBXZWkgPHRla2thbWFubmluamFAZ21haWwuY29tPgor5Lit5paH54mI57+76K+R6ICF77yaIOWCheeCnCBGdSBXZWkgPHRla2thbWFubmluamFAZ21haWwuY29tPgor5Lit5paH54mI5qCh6K+R6ICF77yaIOWCheeCnCBGdSBXZWkgPHRla2thbWFubmluamFAZ21haWwuY29tPgorCisKK+S7peS4i+S4uuato+aWhworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitHUElPIOaOpeWPoworCivmnKzmlofmoaPmj5DkvpvkuobkuIDkuKrlnKhMaW51eOS4i+iuv+mXrkdQSU/nmoTlhaznuqbmpoLov7DjgIIKKwor6L+Z5Lqb5Ye95pWw5LulIGdwaW9fKiDkvZzkuLrliY3nvIDjgILlhbbku5bnmoTlh73mlbDkuI3lhYHorrjkvb/nlKjov5nmoLfnmoTliY3nvIDmiJbnm7jlhbPnmoQKK19fZ3Bpb18qIOWJjee8gOOAggorCisKK+S7gOS5iOaYr0dQSU8/Cis9PT09PT09PT09Cisi6YCa55So6L6T5YWlL+i+k+WHuuWPoyIoR1BJTynmmK/kuIDkuKrngbXmtLvnmoTnlLHova/ku7bmjqfliLbnmoTmlbDlrZfkv6Hlj7fjgILku5bku6zlj68KK+eUseWkmuenjeiKr+eJh+aPkOS+myzkuJTlr7nkuo7ku47kuovltYzlhaXlvI/lkozlrprliLbnoazku7bnmoQgTGludXgg5byA5Y+R6ICF5p2l6K+05pivCivmr5TovoPnhp/mgonjgILmr4/kuKpHUElPIOmDveS7o+ihqOS4gOS4qui/nuaOpeWIsOeJueWumuW8leiEmuaIlueQg+aghemYteWIlyhCR0Ep5bCB6KOF5LitCivigJznkIPnj6DigJ3nmoTkuIDkuKrkvY3jgILnlLXot6/mnb/ljp/nkIblm77mmL7npLrkuoYgR1BJTyDkuI7lpJbpg6jnoazku7bnmoTov57mjqXlhbPns7vjgIIKK+mpseWKqOWPr+S7pee8luWGmeaIkOmAmueUqOS7o+egge+8jOS7peS9v+adv+e6p+WQr+WKqOS7o+eggeWPr+S8oOmAkuW8leiEmumFjee9ruaVsOaNrue7mempseWKqOOAggorCivniYfkuIrns7vnu58gKFNPQykg5aSE55CG5Zmo5a+5IEdQSU8g5pyJ5b6I5aSn55qE5L6d6LWW44CC5Zyo5p+Q5Lqb5oOF5Ya15LiLLOavj+S4qgor6Z2e5LiT55So5byV6ISa6YO95Y+v6YWN572u5Li6IEdQSU8s5LiU5aSn5aSa5pWw6Iqv54mH6YO95pyA5bCR5pyJ5LiA5LqbIEdQSU/jgIIKK+WPr+e8lueoi+mAu+i+keWZqOS7tijnsbvkvLwgRlBHQSkg5Y+v5Lul5pa55L6/5Zyw5o+Q5L6bIEdQSU/jgILlg4/nlLXmupDnrqHnkIblkowKK+mfs+mikee8luino+eggeWZqOi/meagt+eahOWkmuWKn+iDveiKr+eJh+e7j+W4uOeVmeacieS4gOS6m+i/meagt+eahOW8leiEmuadpeW4ruWKqemCo+S6m+W8leiEmgor5Yyu5LmP55qEIFNPQ+OAguWQjOaXtui/mOaciemAmui/hyBJMkMg5oiWIFNQSSDkuLLooYzmgLvnur/ov57mjqXnmoTigJxHUElP5omp5bGV5Zmo4oCdCivoiq/niYfjgILlpKflpJrmlbAgUEMg55qE5Y2X5qGl5pyJ5LiA5Lqb5oul5pyJIEdQSU8g6IO95Yqb55qE5byV6ISaICjlj6rmnIlCSU9TCivlm7rku7bmiY3nn6XpgZPlpoLkvZXkvb/nlKjku5bku6wp44CCCisKK0dQSU8g55qE5a6e6ZmF5Yqf6IO95Zug57O757uf6ICM5byC44CC6YCa5bi455So5rOV5pyJOgorCisgIC0g6L6T5Ye65YC85Y+v5YaZICjpq5jnlLXlubM9Me+8jOS9jueUteW5sz0wKeOAguS4gOS6m+iKr+eJh+S5n+acieWmguS9lempseWKqOi/meS6m+WAvOeahOmAiemhuSwKKyAgICDkvovlpoLlj6rlhYHorrjovpPlh7rkuIDkuKrlgLzjgIHmlK/mjIHigJznur/kuI7igJ3lj4rlhbbku5blj5blgLznsbvkvLznmoTmqKHlvI8o5YC85b6X5rOo5oSP55qE5pivCisgICAg4oCc5byA5ryP4oCd5L+h5Y+3KQorCisgIC0g6L6T5YWl5YC85Y+v6K+7KDHjgIEwKeOAguS4gOS6m+iKr+eJh+aUr+aMgeW8leiEmuWcqOmFjee9ruS4uuKAnOi+k+WHuuKAneaXtuWbnuivu++8jOi/meWvueS6juexu+S8vAorICAgIOKAnOe6v+S4juKAneeahOaDheWGtSjku6XmlK/mjIHlj4zlkJHkv6Hlj7cp5piv6Z2e5bi45pyJ55So55qE44CCR1BJTyDmjqfliLblmajlj6/og73mnInovpPlhaUKKyAgICDljrvmr5vliLov5raI5oqW6YC76L6RLOi/meacieaXtumcgOimgei9r+S7tuaOp+WItuOAggorCisgIC0g6L6T5YWl6YCa5bi45Y+v5L2c5Li6IElSUSDkv6Hlj7cs5LiA6Iis5piv5rK/6Kem5Y+RLOS9huacieaXtuaYr+eUteW5s+inpuWPkeOAgui/meagt+eahCBJUlEKKyAgICDlj6/og73phY3nva7kuLrns7vnu5/llKTphpLkuovku7Ys5Lul5bCG57O757uf5LuO5L2O5Yqf6ICX54q25oCB5LiL5ZSk6YaS44CCCisKKyAgLSDpgJrluLjkuIDkuKogR1BJTyDmoLnmja7kuI3lkIzkuqflk4HnlLXot6/mnb/nmoTpnIDmsYIs5Y+v5Lul6YWN572u5Li66L6T5YWl5oiW6L6T5Ye6LOS5n+acieS7hQorICAgIOaUr+aMgeWNleWQkeeahOOAggorCisgIC0g5aSn6YOo5YiGIEdQSU8g5Y+v5Lul5Zyo5oyB5pyJ6Ieq5peL6ZSB5pe26K6/6ZeuLOS9huaYr+mAmuW4uOeUseS4suihjOaAu+e6v+aJqeWxleeahCBHUElPCisgICAg5LiN5YWB6K645oyB5pyJ6Ieq5peL6ZSB44CC5L2G5p+Q5Lqb57O757uf5Lmf5pSv5oyB6L+Z56eN57G75Z6L44CCCisKK+WvueS6jue7meWumueahOeUtei3r+advyzmr4/kuKogR1BJTyDpg73nlKjkuo7mn5DkuKrnibnlrprnmoTnm67nmoQs5aaC55uR5o6nIE1NQy9TRCDljaHnmoQKK+aPkuWFpS/np7vpmaTjgIHmo4DmtYvljaHnmoTlhpnkv53miqTnirbmgIHjgIHpqbHliqggTEVE44CB6YWN572u5pS25Y+R5Zmo44CB5qih5ouf5Liy6KGM5oC757q/44CBCivlpI3kvY3noazku7bnnIvpl6jni5fjgIHmhJ/nn6XlvIDlhbPnirbmgIHnrYnnrYnjgIIKKworCitHUElPIOWFrOe6pgorPT09PT09PT09Civms6jmhI8s6L+Z5Liq5Y+r5YGa4oCc5YWs57qm4oCd77yM5Zug5Li66L+Z5LiN5piv5by65Yi25oCn55qE77yM5LiN6YG15b6q6L+Z5Liq5YWs57qm5piv5peg5Lyk5aSn6ZuF55qE77yMCivlm6DkuLrmraTml7blj6/np7vmpI3mgKflubbkuI3ph43opoHjgIJHUElPIOW4uOeUqOS6juadv+e6p+eJueWumueahOeUtei3r+mAu+i+kSznlJroh7Plj6/og70KK+maj+edgOeUtei3r+adv+eahOeJiOacrOiAjOaUueWPmO+8jOS4lOS4jeWPr+iDveWcqOS4jeWQjOi1sOe6v+eahOeUtei3r+adv+S4iuS9v+eUqOOAguS7heacieWcqOWwkeaVsAor5Yqf6IO95LiK5omN5YW35pyJ5Y+v56e75qSN5oCn77yM5YW25LuW5Yqf6IO95piv5bmz5Y+w54m55a6a44CC6L+Z5Lmf5piv55Sx5LqO4oCc6IO25ZCI4oCd55qE6YC76L6R6YCg5oiQ55qE44CCCisKK+atpOWklu+8jOi/meS4jemcgOimgeS7u+S9leeahOaJp+ihjOahhuaetu+8jOWPquaYr+S4gOS4quaOpeWPo+OAguafkOS4quW5s+WPsOWPr+iDvemAmui/h+S4gOS4queugOWNleWcsAor6K6/6Zeu6Iqv54mH5a+E5a2Y5Zmo55qE5YaF6IGU5Ye95pWw5p2l5a6e546w5a6D77yM5YW25LuW5bmz5Y+w5Y+v6IO96YCa6L+H5aeU5omY5LiA57O75YiX5LiN5ZCM55qER1BJTwor5o6n5Yi25Zmo55qE5oq96LGh5Ye95pWw5p2l5a6e546w5a6D44CCKOacieS4gOS6m+WPr+mAieeahOS7o+eggeiDveaUr+aMgei/meenjeetlueVpeeahOWunueOsCzmnKzmlofmoaMKK+WQjumdouS8muS7i+e7je+8jOS9huS9nOS4uiBHUElPIOaOpeWPo+eahOWuouaIt+err+mpseWKqOeoi+W6j+W/hemhu+S4juWug+eahOWunueOsOaXoOWFs+OAgikKKwor5Lmf5bCx5piv6K+0LOWmguaenOWcqOS7luS7rOeahOW5s+WPsOS4iuaUr+aMgei/meS4quWFrOe6pu+8jOmpseWKqOW6lOWwveWPr+iDveeahOS9v+eUqOWug+OAguWQjOaXtu+8jOW5s+WPsAor5b+F6aG75ZyoIEtjb25maWcg5Lit6YCJ5oupIEFSQ0hfUkVRVUlSRV9HUElPTElCIOaIluiAhSBBUkNIX1dBTlRfT1BUSU9OQUxfR1BJT0xJQgor6YCJ6aG544CC6YKj5Lqb6LCD55So5qCH5YeGIEdQSU8g5Ye95pWw55qE6amx5Yqo5bqU6K+l5ZyoIEtjb25maWcg5YWl5Y+j5Lit5aOw5piO5L6d6LWWR0VORVJJQ19HUElP44CCCivlvZPpqbHliqjljIXlkKvmlofku7Y6CisKKwkjaW5jbHVkZSA8bGludXgvZ3Bpby5oPgorCivliJkgR1BJTyDlh73mlbDmmK/lj6/nlKgs5peg6K665piv4oCc55yf5a6e5Luj56CB4oCd6L+Y5piv57uP5LyY5YyW6L+H55qE6K+t5Y+l44CC5aaC5p6c5L2g6YG15a6ICivov5nkuKrlhaznuqbvvIzlvZPkvaDnmoTku6PnoIHlrozmiJDlkI7vvIzlr7nlhbbku5bnmoTlvIDlj5HogIXmnaXor7TkvJrmm7TlrrnmmJPnnIvmh4Llkoznu7TmiqTjgIIKKwor5rOo5oSP77yM6L+Z5Lqb5pON5L2c5YyF5ZCr5omA55So5bmz5Y+w55qEIEkvTyDlsY/pmpzku6PnoIHvvIzpqbHliqjml6DpobvmmL7lvI/lnLDosIPnlKjku5bku6zjgIIKKworCivmoIfor4YgR1BJTworLS0tLS0tLS0tCitHUElPIOaYr+mAmui/h+aXoOespuWPt+aVtOWei+adpeagh+ivhueahCzojIPlm7TmmK8gMCDliLAgTUFYX0lOVOOAguS/neeVmeKAnOi0n+KAneaVsAor55So5LqO5YW25LuW55uu55qELOS+i+Wmguagh+ivhuS/oeWPt+KAnOWcqOi/meS4quadv+WtkOS4iuS4jeWPr+eUqOKAneaIluaMh+ekuumUmeivr+OAguacquaOpeinpuW6leWxggor56Gs5Lu255qE5Luj56CB5Lya5b+955Wl6L+Z5Lqb5pW05pWw44CCCisKK+W5s+WPsOS8muWumuS5iei/meS6m+aVtOaVsOeahOeUqOazlSzkuJTpgJrluLjkvb/nlKggI2RlZmluZSDmnaXlrprkuYkgR1BJT++8jOi/meagtwor5p2/57qn54m55a6a55qE5ZCv5Yqo5Luj56CB5Y+v5Lul55u05o6l5YWz6IGU55u45bqU55qE5Y6f55CG5Zu+44CC55u45a+55p2l6K+077yM6amx5Yqo5bqU6K+l5LuF5L2/55SoCivlkK/liqjku6PnoIHkvKDpgJLov4fmnaXnmoQgR1BJTyDnvJblj7fvvIzkvb/nlKggcGxhdGZvcm1fZGF0YSDkv53lrZjmnb/nuqfnibnlrpoKK+W8leiEmumFjee9ruaVsOaNriAo5ZCM5pe26L+Y5pyJ5YW25LuW6aG76KaB55qE5p2/57qn54m55a6a5pWw5o2uKe+8jOmBv+WFjeWPr+iDveWHuueOsOeahOmXrumimOOAggorCivkvovlpoLkuIDkuKrlubPlj7Dkvb/nlKjnvJblj7cgMzItMTU5IOadpeagh+ivhiBHUElPLOiAjOWcqOWPpuS4gOS4quW5s+WPsOS9v+eUqOe8luWPtzAtNjMKK+agh+ivhuS4gOe7hCBHUElPIOaOp+WItuWZqCw2NC03Oeagh+ivhuWPpuS4gOexuyBHUElPIOaOp+WItuWZqCzkuJTlnKjkuIDkuKrlkKvmnIkKK0ZQR0Eg55qE54m55a6a5p2/5a2Q5LiK5L2/55SoIDgwLTk144CC57yW5Y+35LiN5LiA5a6a6KaB6L+e57utLOmCo+S6m+W5s+WPsOS4re+8jOS5n+WPr+S7pQor5L2/55So57yW5Y+3MjAwMC0yMDYz5p2l5qCH6K+G5LiA5LiqIEkyQyDmjqXlj6PnmoQgR1BJTyDmianlsZXlmajkuK3nmoQgR1BJT+OAggorCivlpoLmnpzkvaDopoHliJ3lp4vljJbkuIDkuKrluKbmnInml6DmlYggR1BJTyDnvJblj7fnmoTnu5PmnoTkvZMs5Y+v5Lul5L2/55So5LiA5Lqb6LSf57yW56CBCiso5aaCIi1FSU5WQUwiKe+8jOmCo+WwhuS9v+WFtuawuOi/nOS4jeS8muaYr+acieaViOOAguadpea1i+ivlei/meagt+S4gOS4que7k+aehOS9k+S4reeahOe8luWPtwor5piv5ZCm5YWz6IGU5LiA5LiqIEdQSU/vvIzkvaDlj6/kvb/nlKjku6XkuIvmlq3oqIA6CisKKwlpbnQgZ3Bpb19pc192YWxpZChpbnQgbnVtYmVyKTsKKwor5aaC5p6c57yW5Y+35LiN5a2Y5Zyo77yM5YiZ6K+35rGC5ZKM6YeK5pS+IEdQSU8g55qE5Ye95pWw5bCG5ouS57ud5omn6KGM55u45YWz5pON5L2cKOingeS4i+aWhynjgIIKK+WFtuS7lue8luWPt+S5n+WPr+iDveiiq+aLkue7nSzmr5TlpoLkuIDkuKrnvJblj7flj6/og73lrZjlnKjvvIzkvYbmmoLml7blnKjnu5nlrprnmoTnlLXot6/kuIrkuI3lj6/nlKjjgIIKKwor5LiA5Liq5bmz5Y+w5piv5ZCm5pSv5oyB5aSa5LiqIEdQSU8g5o6n5Yi25Zmo5Li65bmz5Y+w54m55a6a55qE5a6e546w6Zeu6aKY77yM5bCx5YOP5piv5ZCm5Y+v5LulCivlnKggR1BJTyDnvJblj7fnqbrpl7TkuK3mnInigJznqbrmtJ7igJ3lkozmmK/lkKblj6/ku6XlnKjov5DooYzml7bmt7vliqDmlrDnmoTmjqfliLblmajkuIDmoLfjgIIKK+i/meS6m+mXrumimOS8muW9seWTjeWFtuS7luS6i+aDhe+8jOWMheaLrOebuOmCu+eahCBHUElPIOe8luWPt+aYr+WQpuWtmOWcqOetieOAggorCivkvb/nlKggR1BJTworLS0tLS0tLS0tCivlr7nkuo7kuIDkuKogR1BJT++8jOezu+e7n+W6lOivpeWBmueahOesrOS4gOS7tuS6i+aDheWwseaYr+mAmui/hyBncGlvX3JlcXVlc3QoKQor5Ye95pWw5YiG6YWN5a6D77yM6KeB5LiL5paH44CCCisKK+aOpeS4i+adpeaYr+iuvue9rkkvT+aWueWQke+8jOi/memAmuW4uOaYr+WcqOadv+e6p+WQr+WKqOS7o+eggeS4reS4uuaJgOS9v+eUqOeahCBHUElPIOiuvue9rgorcGxhdGZvcm1fZGV2aWNlIOaXtuWujOaIkOOAggorCisJLyog6K6+572u5Li66L6T5YWl5oiW6L6T5Ye6LCDov5Tlm54gMCDmiJbotJ/nmoTplJnor6/ku6PnoIEgKi8KKwlpbnQgZ3Bpb19kaXJlY3Rpb25faW5wdXQodW5zaWduZWQgZ3Bpbyk7CisJaW50IGdwaW9fZGlyZWN0aW9uX291dHB1dCh1bnNpZ25lZCBncGlvLCBpbnQgdmFsdWUpOworCivov5Tlm57lgLzkuLrpm7bku6PooajmiJDlip/vvIzlkKbliJnov5Tlm57kuIDkuKrotJ/nmoTplJnor6/ku6PnoIHjgILov5nkuKrov5Tlm57lgLzpnIDopoHmo4Dmn6XvvIzlm6DkuLoKK2dldC9zZXQo6I635Y+WL+iuvue9rinlh73mlbDosIPnlKjmsqHms5Xov5Tlm57plJnor68s5LiU5pyJ5Y+v6IO95piv6YWN572u6ZSZ6K+v44CC6YCa5bi477yMCivkvaDlupTor6XlnKjov5vnqIvkuIrkuIvmlofkuK3osIPnlKjov5nkupvlh73mlbDjgILnhLbogIws5a+55LqO6Ieq5peL6ZSB5a6J5YWo55qEIEdQSU/vvIzlnKjmnb/lrZAKK+WQr+WKqOeahOaXqeacn+OAgei/m+eoi+WQr+WKqOWJjeS9v+eUqOS7luS7rOS5n+aYr+WPr+S7peeahOOAggorCivlr7nkuo7kvZzkuLrovpPlh7rnmoQgR1BJT++8jOS4uuWFtuaPkOS+m+WIneWni+i+k+WHuuWAvO+8jOWvueS6jumBv+WFjeWcqOezu+e7n+WQr+WKqOacn+mXtOWHuueOsAor5L+h5Y+35q+b5Yi65piv5b6I5pyJ5biu5Yqp55qE44CCCisKK+S4uuS6huS4juS8oOe7n+eahCBHUElPIOaOpeWPo+WFvOWuuSwg5Zyo6K6+572u5LiA5LiqIEdQSU8g5pa55ZCR5pe277yM5aaC5p6c5a6D6L+Y5pyq6KKr55Sz6K+377yMCivliJnpmpDlkKvkuobnlLPor7fpgqPkuKogR1BJTyDnmoTmk43kvZwo6KeB5LiL5paHKeOAgui/meenjeWFvOWuueaAp+ato+WcqOS7juWPr+mAieeahCBncGlvbGliCivmoYbmnrbkuK3np7vpmaTjgIIKKwor5aaC5p6c6L+Z5LiqIEdQSU8g57yW56CB5LiN5a2Y5Zyo77yM5oiW6ICF54m55a6a55qEIEdQSU8g5LiN6IO955So5LqO6YKj56eN5qih5byP77yM5YiZ5pa55ZCRCivorr7nva7lj6/og73lpLHotKXjgILkvp3otZblkK/liqjlm7rku7bmnaXmraPnoa7lnLDorr7nva7mlrnlkJHpgJrluLjmmK/kuIDkuKrlnY/kuLvmhI/vvIzlm6DkuLrlroPlj6/og70KK+mZpOS6huWQr+WKqExpbnV477yM5bm25rKh5pyJ5YGa5pu05aSa55qE6aqM6K+B5bel5L2c44CCKOWQjOeQhiwg5p2/5a2Q55qE5ZCv5Yqo5Luj56CB5Y+v6IO96ZyA6KaBCivlsIbov5nkuKrlpI3nlKjnmoTlvJXohJrorr7nva7kuLogR1BJT++8jOW5tuato+ehruWcsOmFjee9ruS4iuaLiS/kuIvmi4nnlLXpmLvjgIIpCisKKwor6K6/6Zeu6Ieq5peL6ZSB5a6J5YWo55qEIEdQSU8KKy0tLS0tLS0tLS0tLS0tLS0tLS0KK+Wkp+WkmuaVsCBHUElPIOaOp+WItuWZqOWPr+S7pemAmui/h+WGheWtmOivuy/lhpnmjIfku6TmnaXorr/pl67jgILov5nkupvmjIfku6TkuI3kvJrkvJHnnKAs5Y+v5LulCivlronlhajlnLDlnKjnoawo6Z2e57q/56iLKeS4reaWreS+i+eoi+WSjOexu+S8vOeahOS4iuS4i+aWh+S4reWujOaIkOOAggorCivlr7nkuo7pgqPkupvnlKggZ3Bpb19jYW5zbGVlcCgp5rWL6K+V5oC75piv6L+U5Zue5aSx6LSl55qEIEdQSU8o6KeB5LiL5paHKe+8jOS9v+eUqAor5Lul5LiL55qE5Ye95pWw6K6/6ZeuOgorCisJLyogR1BJTyDovpPlhaU66L+U5Zue6Zu25oiW6Z2e6Zu2ICovCisJaW50IGdwaW9fZ2V0X3ZhbHVlKHVuc2lnbmVkIGdwaW8pOworCisJLyogR1BJTyDovpPlh7ogKi8KKwl2b2lkIGdwaW9fc2V0X3ZhbHVlKHVuc2lnbmVkIGdwaW8sIGludCB2YWx1ZSk7CisKK0dQSU/lgLzmmK/luIPlsJTlgLzvvIzpm7booajnpLrkvY7nlLXlubPvvIzpnZ7pm7booajnpLrpq5jnlLXlubPjgILlvZPor7vlj5bkuIDkuKrovpPlh7rlvJXohJrnmoTlgLzml7bvvIwKK+i/lOWbnuWAvOW6lOivpeaYr+W8leiEmuS4iueahOWAvOOAgui/meS4quWAvOS4jeaAu+aYr+WSjOi+k+WHuuWAvOebuOespu+8jOWboOS4uuWtmOWcqOW8gOa8j+i+k+WHuuS/oeWPt+WSjAor6L6T5Ye65bu26L+f6Zeu6aKY44CCCisKK+S7peS4iueahCBnZXQvc2V0IOWHveaVsOaXoOmUmeivr+i/lOWbnuWAvO+8jOWboOS4uuS5i+WJjSBncGlvX2RpcmVjdGlvbl8qKCnlupTlt7Lmo4Dmn6Xov4cKK+WFtuaYr+WQpuS4uuKAnOaXoOaViEdQSU/igJ3jgILmraTlpJbvvIzov5jpnIDopoHms6jmhI/nmoTmmK/lubbkuI3mmK/miYDmnInlubPlj7Dpg73lj6/ku6Xku47ovpPlh7rlvJXohJoKK+S4reivu+WPluaVsOaNru+8jOWvueS6juS4jeiDveivu+WPlueahOW8leiEmuW6lOaAu+i/lOWbnumbtuOAguWPpuWklu+8jOWvuemCo+S6m+WcqOWOn+WtkOS4iuS4i+aWh+S4reaXoOazlQor5a6J5YWo6K6/6Zeu55qEIEdQSU8gKOivkeiAheazqO+8muWboOS4uuiuv+mXruWPr+iDveWvvOiHtOS8keecoCnkvb/nlKjov5nkupvlh73mlbDmmK/kuI3lkIjpgILnmoQKKyjop4HkuIvmlocp44CCCisKK+WcqCBHUElPIOe8luWPtyjov5jmnInovpPlh7rjgIHlgLwp5Li65bi45pWw55qE5oOF5Ya15LiLLOm8k+WKsemAmui/h+W5s+WPsOeJueWumueahOWunueOsOadpeS8mOWMlgor6L+Z5Lik5Liq5Ye95pWw5p2l6K6/6ZeuIEdQSU8g5YC844CC6L+Z56eN5oOF5Ya1KOivu+WGmeS4gOS4quehrOS7tuWvhOWtmOWZqCnkuIvlj6rpnIDopoHlh6DmnaHmjIfku6QKK+aYr+W+iOato+W4uOeahCzkuJTml6Dpobvoh6rml4vplIHjgILov5nnp43kvJjljJblh73mlbDmr5TotbfpgqPkupvlnKjlrZDnqIvluo/kuIroirHotLnorrjlpJrmjIfku6TnmoQKK+WHveaVsOWPr+S7peS9v+W+l+aooeaLn+aOpeWPoyjor5HogIXms6g65L6L5aaCIEdQSU8g5qih5oufIEkyQ+OAgTEtd2lyZSDmiJYgU1BJKeeahAor5bqU55SoKOWcqOepuumXtOWSjOaXtumXtOS4iumDvSnmm7TlhbfmlYjnjofjgIIKKworCivorr/pl67lj6/og73kvJHnnKDnmoQgR1BJTworLS0tLS0tLS0tLS0tLS0tLS0KK+afkOS6myBHUElPIOaOp+WItuWZqOW/hemhu+mAmui/h+WfuuS6juaAu+e6vyjlpoIgSTJDIOaIliBTUEkp55qE5raI5oGv6K6/6Zeu44CC6K+75oiW5YaZ6L+Z5LqbCitHUElPIOWAvOeahOWRveS7pOmcgOimgeetieW+heWFtuS/oeaBr+aOkuWIsOmYn+mmluaJjeWPkemAgeWRveS7pO+8jOWGjeiOt+W+l+WFtuWPjemmiOOAguacn+mXtOmcgOimgQor5LyR55yg77yM6L+Z5LiN6IO95ZyoIElSUSDkvovnqIso5Lit5pat5LiK5LiL5paHKeS4reaJp+ihjOOAggorCivmlK/mjIHmraTnsbsgR1BJTyDnmoTlubPlj7DpgJrov4fku6XkuIvlh73mlbDov5Tlm57pnZ7pm7blgLzmnaXljLrliIblh7rov5nnp40gR1BJT+OAgijmraTlh73mlbDpnIDopoEKK+S4gOS4quS5i+WJjemAmui/hyBncGlvX3JlcXVlc3Qg5YiG6YWN5Yiw55qE5pyJ5pWIIEdQSU8g57yW5Y+3KToKKworCWludCBncGlvX2NhbnNsZWVwKHVuc2lnbmVkIGdwaW8pOworCivkuLrkuoborr/pl67ov5nnp40gR1BJTyzlhoXmoLjlrprkuYnkuobkuIDlpZfkuI3lkIznmoTlh73mlbA6CisKKwkvKiBHUElPIOi+k+WFpTrov5Tlm57pm7bmiJbpnZ7pm7YgLOWPr+iDveS8muS8keecoCAqLworCWludCBncGlvX2dldF92YWx1ZV9jYW5zbGVlcCh1bnNpZ25lZCBncGlvKTsKKworCS8qIEdQSU8g6L6T5Ye6LOWPr+iDveS8muS8keecoCAqLworCXZvaWQgZ3Bpb19zZXRfdmFsdWVfY2Fuc2xlZXAodW5zaWduZWQgZ3BpbywgaW50IHZhbHVlKTsKKworCivorr/pl67ov5nmoLfnmoQgR1BJTyDpnIDopoHkuIDkuKrlhYHorrjkvJHnnKDnmoTkuIrkuIvmlofvvIzkvovlpoLnur/nqIsgSVJRIOWkhOeQhuS+i+eoi++8jOW5tueUqOS7peS4iueahAor6K6/6Zeu5Ye95pWw5pu/5o2i6YKj5Lqb5rKh5pyJIGNhbnNsZWVwKCnlkI7nvIDnmoToh6rml4vplIHlronlhajorr/pl67lh73mlbDjgIIKKwor6Zmk5LqG6L+Z5Lqb6K6/6Zeu5Ye95pWw5Y+v6IO95LyR55yg77yM5LiU5a6D5Lus5pON5L2c55qEIEdQSU8g5LiN6IO95Zyo56Gs5Lu2IElSUSDlpITnkIbkvovnqIvkuK3orr/pl67nmoQKK+S6i+Wunu+8jOi/meS6m+WkhOeQhuS+i+eoi+WunumZheS4iuWSjOiHquaXi+mUgeWuieWFqOeahOWHveaVsOaYr+S4gOagt+eahOOAggorCisqKiDpmaTmraTkuYvlpJYgKiog6LCD55So6K6+572u5ZKM6YWN572u5q2k57G7IEdQSU8g55qE5Ye95pWw5Lmf5b+F6aG75Zyo5YWB6K645LyR55yg55qE5LiK5LiL5paH5Lit77yMCivlm6DkuLrlroPku6zlj6/og73kuZ/pnIDopoHorr/pl64gR1BJTyDmjqfliLblmajoiq/niYc6ICjov5nkupvorr7nva7lh73mlbDpgJrluLjlnKjmnb/nuqflkK/liqjku6PnoIHmiJbogIUKK+mpseWKqOaOoua1iy/mlq3lvIDku6PnoIHkuK3vvIzmiYDku6Xov5nmmK/kuIDkuKrlrrnmmJPmu6HotrPnmoTnuqbmnZ/mnaHku7bjgIIpCisKKwlncGlvX2RpcmVjdGlvbl9pbnB1dCgpCisJZ3Bpb19kaXJlY3Rpb25fb3V0cHV0KCkKKwlncGlvX3JlcXVlc3QoKQorCisjIyAJZ3Bpb19yZXF1ZXN0X29uZSgpCisjIwlncGlvX3JlcXVlc3RfYXJyYXkoKQorIyMgCWdwaW9fZnJlZV9hcnJheSgpCisKKwlncGlvX2ZyZWUoKQorCWdwaW9fc2V0X2RlYm91bmNlKCkKKworCisKK+WjsOaYjuWSjOmHiuaUviBHUElPCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCivkuLrkuobmnInliqnkuo7mjZXojrfns7vnu5/phY3nva7plJnor68s5a6a5LmJ5LqG5Lik5Liq5Ye95pWw44CCCisKKwkvKiDnlLPor7cgR1BJTywg6L+U5ZueIDAg5oiW6LSf55qE6ZSZ6K+v5Luj56CBLgorCSAqIOmdnuepuuagh+etvuWPr+iDveacieWKqeS6juiviuaWrS4KKwkgKi8KKwlpbnQgZ3Bpb19yZXF1ZXN0KHVuc2lnbmVkIGdwaW8sIGNvbnN0IGNoYXIgKmxhYmVsKTsKKworCS8qIOmHiuaUvuS5i+WJjeWjsOaYjueahCBHUElPICovCisJdm9pZCBncGlvX2ZyZWUodW5zaWduZWQgZ3Bpbyk7CisKK+WwhuaXoOaViOeahCBHUElPIOe8lueggeS8oOmAkue7mSBncGlvX3JlcXVlc3QoKeS8muWvvOiHtOWksei0pe+8jOeUs+ivt+S4gOS4quW3suS9v+eUqOi/meS4qgor5Ye95pWw5aOw5piO6L+H55qEIEdQSU8g5Lmf5Lya5aSx6LSl44CCZ3Bpb19yZXF1ZXN0KCnnmoTov5Tlm57lgLzlv4Xpobvmo4Dmn6XjgILkvaDlupTor6XlnKgKK+i/m+eoi+S4iuS4i+aWh+S4reiwg+eUqOi/meS6m+WHveaVsOOAgueEtuiAjCzlr7nkuo7oh6rml4vplIHlronlhajnmoQgR1BJTyzlnKjmnb/lrZDlkK/liqjnmoTml6nmnJ/jgIEKK+i/m+WFpei/m+eoi+S5i+WJjeaYr+WPr+S7peeUs+ivt+eahOOAggorCivov5nkuKrlh73mlbDlrozmiJDkuKTkuKrln7rmnKznmoTnm67moIfjgILkuIDmmK/moIfor4bpgqPkupvlrp7pmYXkuIrlt7LkvZzkuLogR1BJTyDkvb/nlKjnmoTkv6Hlj7fnur/vvIwKK+i/meagt+S+v+S6juabtOWlveWcsOiviuaWrTvns7vnu5/lj6/og73pnIDopoHmnI3liqHlh6Dnmb7kuKrlj6/nlKjnmoQgR1BJT++8jOS9huaYr+WvueS6juS7u+S9leS4gOS4qgor57uZ5a6a55qE55S16Lev5p2/6YCa5bi45Y+q5pyJ5LiA5Lqb6KKr5L2/55So44CC5Y+m5LiA5Liq55uu55qE5piv5o2V6I635Yay56qB77yM5p+l5piO6ZSZ6K+vOuWmguS4pOS4quaIlgor5pu05aSa6amx5Yqo6ZSZ6K+v5Zyw6K6k5Li65LuW5Lus5bey57uP54us5Y2g5LqG5p+Q5Liq5L+h5Y+357q/LOaIluaYr+mUmeivr+WcsOiupOS4uuenu+mZpOS4gOS4queuoeeQhuedgAor5p+Q5Liq5bey5r+A5rS75L+h5Y+355qE6amx5Yqo5piv5a6J5YWo55qE44CC5Lmf5bCx5piv6K+077yM55Sz6K+3IEdQSU8g55qE5L2c55So57G75Ly85LiA56eN6ZSB5py65Yi244CCCisKK+afkOS6m+W5s+WPsOWPr+iDveS5n+S9v+eUqCBHUElPIOS9nOS4uueUtea6kOeuoeeQhua/gOa0u+S/oeWPtyjkvovlpoLpgJrov4flhbPpl63mnKrkvb/nlKjoiq/niYfljLrlkowKK+eugOWNleWcsOWFs+mXreacquS9v+eUqOaXtumSnynjgIIKKwor5a+55LqOIEdQSU8g5L2/55SoIHBpbmN0cmwg5a2Q57O757uf5bey55+l55qE5byV6ISa77yM5a2Q57O757uf5bqU6K+l6KKr5ZGK55+l5YW25L2/55So5oOF5Ya177ybCivkuIDkuKogZ3Bpb2xpYiDpqbHliqjnmoQgLnJlcXVlc3QoKeaTjeS9nOW6lOiwg+eUqCBwaW5jdHJsX3JlcXVlc3RfZ3Bpbygp77yMCivogIwgZ3Bpb2xpYiDpqbHliqjnmoQgLmZyZWUoKeaTjeS9nOW6lOiwg+eUqCBwaW5jdHJsX2ZyZWVfZ3Bpbygp44CCcGluY3RybAor5a2Q57O757uf5YWB6K64IHBpbmN0cmxfcmVxdWVzdF9ncGlvKCnlnKjmn5DkuKrlvJXohJrmiJblvJXohJrnu4Tku6XlpI3nlKjlvaLlvI/igJzlsZ7kuo7igJ0KK+S4gOS4quiuvuWkh+aXtumDveaIkOWKn+i/lOWbnuOAggorCivku7vkvZXpobvlsIYgR1BJTyDkv6Hlj7flr7zlkJHpgILlvZPlvJXohJrnmoTlvJXohJrlpI3nlKjnoazku7bnmoTnvJbnqIvlupTor6Xlj5HnlJ/lnKggR1BJTwor6amx5Yqo55qEIC5kaXJlY3Rpb25faW5wdXQoKeaIliAuZGlyZWN0aW9uX291dHB1dCgp5Ye95pWw5Lit77yM5Lul5Y+KCivku7vkvZXovpPlh7ogR1BJTyDlgLznmoTorr7nva7kuYvlkI7jgILov5nmoLflj6/kvb/ku47lvJXohJrnibnmrorlip/og73liLAgR1BJTyDnmoTovazmjaIKK+S4jeS8muWcqOW8leiEmuS6p+eUn+avm+WIuuazouW9ouOAguacieaXtuW9k+eUqOS4gOS4qiBHUElPIOWunueOsOWFtuS/oeWPt+mpseWKqOS4gOS4qumdniBHUElPCivnoazku7bmqKHlnZfnmoTop6PlhrPmlrnmoYjml7bvvIzlsLHpnIDopoHov5nnp43mnLrliLbjgIIKKwor5p+Q5Lqb5bmz5Y+w5YWB6K646YOo5YiG5oiW5omA5pyJIEdQSU8g5L+h5Y+35L2/55So5LiN5ZCM55qE5byV6ISa44CC57G75Ly855qE77yMR1BJTyDmiJblvJXohJrnmoQKK+WFtuS7luaWuemdouS5n+mcgOimgemFjee9ru+8jOWmguS4iuaLiS/kuIvmi4njgILlubPlj7Dova/ku7blupTor6XlnKjlr7nov5nkupsgR1BJTyDosIPnlKgKK2dwaW9fcmVxdWVzdCgp5YmN5bCG6L+Z57G757uG6IqC6YWN572u5aW977yM5L6L5aaC5L2/55SoIHBpbmN0cmwg5a2Q57O757uf55qE5pig5bCE6KGo77yMCivkvb/lvpcgR1BJTyDnmoTnlKjmiLfml6DpobvlhbPms6jov5nkupvnu4boioLjgIIKKwor6L+Y5pyJ5LiA5Liq5YC85b6X5rOo5oSP55qE5piv5Zyo6YeK5pS+IEdQSU8g5YmN77yM5L2g5b+F6aG75YGc5q2i5L2/55So5a6D44CCCisKKwor5rOo5oSPOueUs+ivt+S4gOS4qiBHUElPIOW5tuayoeacieS7peS7u+S9leaWueW8j+mFjee9ruWug++8jOWPquS4jei/h+agh+ivhumCo+S4qiBHUElPIOWkhOS6juS9v+eUqAor54q25oCB44CC5b+F6aG75pyJ5Y+m5aSW55qE5Luj56CB5p2l5aSE55CG5byV6ISa6YWN572uKOWmguaOp+WItiBHUElPIOS9v+eUqOeahOW8leiEmuOAgeS4iuaLiS/kuIvmi4kp44CCCivogIPomZHliLDlpKflpJrmlbDmg4XlhrXkuIvlo7DmmI4gR1BJTyDkuYvlkI7lsLHkvJrnq4vljbPphY3nva7lroPku6ws5omA5Lul5a6a5LmJ5LqG5Lul5LiL5LiJ5Liq6L6F5Yqp5Ye95pWwOgorCisJLyog55Sz6K+35LiA5LiqIEdQSU8g5L+h5Y+3LCDlkIzml7bpgJrov4fnibnlrprnmoQnZmxhZ3Mn5Yid5aeL5YyW6YWN572uLAorCSAqIOWFtuS7luWSjCBncGlvX3JlcXVlc3QoKeeahOWPguaVsOWSjOi/lOWbnuWAvOebuOWQjAorCSAqCisJICovCisJaW50IGdwaW9fcmVxdWVzdF9vbmUodW5zaWduZWQgZ3BpbywgdW5zaWduZWQgbG9uZyBmbGFncywgY29uc3QgY2hhciAqbGFiZWwpOworCisJLyog5Zyo5Y2V5Liq5Ye95pWw5Lit55Sz6K+35aSa5LiqIEdQSU8KKwkgKi8KKwlpbnQgZ3Bpb19yZXF1ZXN0X2FycmF5KHN0cnVjdCBncGlvICphcnJheSwgc2l6ZV90IG51bSk7CisKKwkvKiDlnKjljZXkuKrlh73mlbDkuK3ph4rmlL7lpJrkuKogR1BJTworCSAqLworCXZvaWQgZ3Bpb19mcmVlX2FycmF5KHN0cnVjdCBncGlvICphcnJheSwgc2l6ZV90IG51bSk7CisKK+i/memHjCAnZmxhZ3MnIOW9k+WJjeWumuS5ieWPr+aMh+WumuS7peS4i+WxnuaApzoKKworCSogR1BJT0ZfRElSX0lOCQktIOmFjee9ruaWueWQkeS4uui+k+WFpQorCSogR1BJT0ZfRElSX09VVAkJLSDphY3nva7mlrnlkJHkuLrovpPlh7oKKworCSogR1BJT0ZfSU5JVF9MT1cJLSDlnKjkvZzkuLrovpPlh7rml7Ys5Yid5aeL5YC85Li65L2O55S15bmzCisJKiBHUElPRl9JTklUX0hJR0gJLSDlnKjkvZzkuLrovpPlh7rml7Ys5Yid5aeL5YC85Li66auY55S15bmzCisJKiBHUElPRl9PUEVOX0RSQUlOCS0gZ3Bpb+W8leiEmuS4uuW8gOa8j+S/oeWPtworCSogR1BJT0ZfT1BFTl9TT1VSQ0UJLSBncGlv5byV6ISa5Li65rqQ5p6B5byA6Lev5L+h5Y+3CisKKwkqIEdQSU9GX0VYUE9SVF9ESVJfRklYRUQJLSDlsIYgZ3BpbyDlr7zlh7rliLAgc3lzZnPvvIzlubbkv53mjIHmlrnlkJEKKwkqIEdQSU9GX0VYUE9SVF9ESVJfQ0hBTkdFQUJMRQktIOWQjOagt+aYr+WvvOWHuiwg5L2G5YWB6K645pS55Y+Y5pa55ZCRCisKK+WboOS4uiBHUElPRl9JTklUXyog5LuF5pyJ5Zyo6YWN572u5Li66L6T5Ye655qE5pe25YCZ5omN5a2Y5ZyoLOaJgOS7peacieaViOeahOe7hOWQiOS4ujoKKworCSogR1BJT0ZfSU4JCS0g6YWN572u5Li66L6T5YWlCisJKiBHUElPRl9PVVRfSU5JVF9MT1cJLSDphY3nva7kuLrovpPlh7os5bm25Yid5aeL5YyW5Li65L2O55S15bmzCisJKiBHUElPRl9PVVRfSU5JVF9ISUdICS0g6YWN572u5Li66L6T5Ye6LOW5tuWIneWni+WMluS4uumrmOeUteW5sworCivlvZPorr7nva4gZmxhZyDkuLogR1BJT0ZfT1BFTl9EUkFJTiDml7bvvIzliJnlgYforr7lvJXohJrmmK/lvIDmvI/kv6Hlj7fjgILov5nmoLfnmoTlvJXohJoKK+WwhuS4jeS8muWcqOi+k+WHuuaooeW8j+S4i+e9rjHjgILov5nmoLfnmoTlvJXohJrpnIDopoHov57mjqXkuIrmi4nnlLXpmLvjgILpgJrov4fkvb/og73ov5nkuKrmoIflv5fvvIxncGlv5bqTCivlsIbkvJrlnKjooqvopoHmsYLovpPlh7rmqKHlvI/kuIvnva4x5pe25bCG5byV6ISa5Y+Y5Li66L6T5YWl54q25oCB5p2l5L2/5byV6ISa572u6auY44CC5byV6ISa5Zyo6L6T5Ye65qih5byP5LiLCivpgJrov4fnva4w5L2/5YW26L6T5Ye65L2O55S15bmz44CCCisKK+W9k+iuvue9riBmbGFnIOS4uiBHUElPRl9PUEVOX1NPVVJDRSDml7bvvIzliJnlgYforr7lvJXohJrkuLrmupDmnoHlvIDot6/kv6Hlj7fjgILov5nmoLfnmoTlvJXohJoKK+WwhuS4jeS8muWcqOi+k+WHuuaooeW8j+S4i+e9rjDjgILov5nmoLfnmoTlvJXohJrpnIDopoHov57mjqXkuIvmi4nnlLXpmLvjgILpgJrov4fkvb/og73ov5nkuKrmoIflv5fvvIxncGlv5bqTCivlsIbkvJrlnKjooqvopoHmsYLovpPlh7rmqKHlvI/kuIvnva4w5pe25bCG5byV6ISa5Y+Y5Li66L6T5YWl54q25oCB5p2l5L2/5byV6ISa572u5L2O44CC5byV6ISa5Zyo6L6T5Ye65qih5byP5LiLCivpgJrov4fnva4x5L2/5YW26L6T5Ye66auY55S15bmz44CCCisKK+Wwhuadpei/meS6m+agh+W/l+WPr+iDveaJqeWxleWIsOaUr+aMgeabtOWkmueahOWxnuaAp+OAggorCivmm7Tov5vkuIDmraUs5Li65LqG5pu0566A5Y2V5Zyw5aOw5piOL+mHiuaUvuWkmuS4qiBHUElPLCdzdHJ1Y3QgZ3BpbyfooqvlvJXov5vmnaXlsIHoo4XmiYDmnIkKK+i/meS4ieS4qumihuWfnzoKKworCXN0cnVjdCBncGlvIHsKKwkJdW5zaWduZWQJZ3BpbzsKKwkJdW5zaWduZWQgbG9uZwlmbGFnczsKKwkJY29uc3QgY2hhcgkqbGFiZWw7CisJfTsKKwor5LiA5Liq5YW45Z6L55qE55So5L6LOgorCisJc3RhdGljIHN0cnVjdCBncGlvIGxlZHNfZ3Bpb3NbXSA9IHsKKwkJeyAzMiwgR1BJT0ZfT1VUX0lOSVRfSElHSCwgIlBvd2VyIExFRCIgfSwgLyog6buY6K6k5byA5ZCvICovCisJCXsgMzMsIEdQSU9GX09VVF9JTklUX0xPVywgICJHcmVlbiBMRUQiIH0sIC8qIOm7mOiupOWFs+mXrSAqLworCQl7IDM0LCBHUElPRl9PVVRfSU5JVF9MT1csICAiUmVkIExFRCIgICB9LCAvKiDpu5jorqTlhbPpl60gKi8KKwkJeyAzNSwgR1BJT0ZfT1VUX0lOSVRfTE9XLCAgIkJsdWUgTEVEIiAgfSwgLyog6buY6K6k5YWz6ZetICovCisJCXsgLi4uIH0sCisJfTsKKworCWVyciA9IGdwaW9fcmVxdWVzdF9vbmUoMzEsIEdQSU9GX0lOLCAiUmVzZXQgQnV0dG9uIik7CisJaWYgKGVycikKKwkJLi4uCisKKwllcnIgPSBncGlvX3JlcXVlc3RfYXJyYXkobGVkc19ncGlvcywgQVJSQVlfU0laRShsZWRzX2dwaW9zKSk7CisJaWYgKGVycikKKwkJLi4uCisKKwlncGlvX2ZyZWVfYXJyYXkobGVkc19ncGlvcywgQVJSQVlfU0laRShsZWRzX2dwaW9zKSk7CisKKworR1BJTyDmmKDlsITliLAgSVJRCistLS0tLS0tLS0tLS0tLS0tLS0tLQorR1BJTyDnvJblj7fmmK/ml6DnrKblj7fmlbTmlbA7SVJRIOe8luWPt+S5n+aYr+OAgui/meS6m+aehOaIkOS6huS4pOS4qumAu+i+keS4iuS4jeWQjOeahOWRveWQjeepuumXtAorKEdQSU8gMCDkuI3kuIDlrprkvb/nlKggSVJRIDAp44CC5L2g5Y+v5Lul6YCa6L+H5Lul5LiL5Ye95pWw5Zyo5a6D5Lus5LmL6Ze05a6e546w5pig5bCEOgorCisJLyog5pig5bCEIEdQSU8g57yW5Y+35YiwIElSUSDnvJblj7cgKi8KKwlpbnQgZ3Bpb190b19pcnEodW5zaWduZWQgZ3Bpbyk7CisKKwkvKiDmmKDlsIQgSVJRIOe8luWPt+WIsCBHUElPIOe8luWPtyAo5bC96YeP6YG/5YWN5L2/55SoKSAqLworCWludCBpcnFfdG9fZ3Bpbyh1bnNpZ25lZCBpcnEpOworCivlroPku6znmoTov5Tlm57lgLzkuLrlr7nlupTlkb3lkI3nqbrpl7TnmoTnm7jlhbPnvJblj7fvvIzmiJbmmK/otJ/nmoTplJnor6/ku6PnoIEo5aaC5p6c5peg5rOV5pig5bCEKeOAggorKOS+i+Wmgizmn5DkupsgR1BJTyDml6Dms5XlgZrkuLogSVJRIOS9v+eUqOOAginku6XkuIvnmoTnvJblj7fplJnor6/mmK/mnKrnu4/mo4DmtYvnmoQ65L2/55So5LiA5LiqCivmnKrpgJrov4cgZ3Bpb19kaXJlY3Rpb25faW5wdXQoKemFjee9ruS4uui+k+WFpeeahCBHUElPIOe8luWPt++8jOaIluiAheS9v+eUqOS4gOS4qgor5bm26Z2e5p2l5rqQ5LqOZ3Bpb190b19pcnEoKeeahCBJUlEg57yW5Y+344CCCisKK+i/meS4pOS4quaYoOWwhOWHveaVsOWPr+iDveS8muWcqOS/oeWPt+e8luWPt+eahOWKoOWHj+iuoeeul+i/h+eoi+S4iuiKseS6m+aXtumXtOOAguWug+S7rOS4jeWPr+S8keecoOOAggorCitncGlvX3RvX2lycSgp6L+U5Zue55qE6Z2e6ZSZ6K+v5YC85Y+v5Lul5Lyg6YCS57uZIHJlcXVlc3RfaXJxKCnmiJbogIUgZnJlZV9pcnEoKeOAggor5a6D5Lus6YCa5bi46YCa6L+H5p2/57qn54m55a6a55qE5Yid5aeL5YyW5Luj56CB5a2Y5pS+5Yiw5bmz5Y+w6K6+5aSH55qEIElSUSDotYTmupDkuK3jgILms6jmhI86SVJRCivop6blj5HpgInpobnmmK8gSVJRIOaOpeWPo+eahOS4gOmDqOWIhu+8jOWmgiBJUlFGX1RSSUdHRVJfRkFMTElOR++8jOezu+e7n+WUpOmGkuiDveWKmwor5Lmf5piv5aaC5q2k44CCCisKK2lycV90b19ncGlvKCnov5Tlm57nmoTpnZ7plJnor6/lgLzlpKflpJrmlbDpgJrluLjlj6/ku6XooqsgZ3Bpb19nZXRfdmFsdWUoKeaJgOS9v+eUqO+8jAor5q+U5aaC5ZyoIElSUSDmmK/msr/op6blj5Hml7bliJ3lp4vljJbmiJbmm7TmlrDpqbHliqjnirbmgIHjgILms6jmhI/mn5DkupvlubPlj7DkuI3mlK/mjIHlj43mmKDlsIQs5omA5LulCivkvaDlupTor6XlsL3ph4/pgb/lhY3kvb/nlKjlroPjgIIKKworCivmqKHmi5/lvIDmvI/kv6Hlj7cKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK+acieaXtuWcqOWPquacieS9jueUteW5s+S/oeWPt+S9nOS4uuWunumZhempseWKqOe7k+aenCjor5HogIXms6g65aSa5Liq6L6T5Ye66L+e5o6l5LqO5LiA54K577yM6YC76L6R55S15bmzCivnu5PmnpzkuLrmiYDmnInovpPlh7rnmoTpgLvovpHkuI4p55qE5pe25YCZLOWFseS6q+eahOS/oeWPt+e6v+mcgOimgeS9v+eUqOKAnOW8gOa8j+KAneS/oeWPt+OAgijor6XmnK/or60KK+mAgueUqOS6jiBDTU9TIOeuoe+8m+iAjCBUVEwg55So4oCc6ZuG55S15p6B5byA6Lev4oCd44CCKeS4gOS4quS4iuaLieeUtemYu+S9v+S/oeWPt+S4uumrmOeUteW5s+OAgui/mQor5pyJ5pe26KKr56ew5Li64oCc57q/5LiO4oCd44CC5a6e6ZmF5LiK77yM5LuO6LSf6YC76L6RKOS9jueUteW5s+S4uuecnynnmoTop5LluqbmnaXnnIvvvIzov5nmmK/kuIDkuKrigJznur/miJbigJ3jgIIKKwor5LiA5Liq5byA5ryP5L+h5Y+355qE5bi46KeB5L6L5a2Q5piv5YWx5Lqr55qE5L2O55S15bmz5L2/6IO9IElSUSDkv6Hlj7fnur/jgILmraTlpJYs5pyJ5pe25Y+M5ZCR5pWw5o2u5oC757q/Civkv6Hlj7fkuZ/kvb/nlKjmvI/mnoHlvIDot6/kv6Hlj7fjgIIKKwor5p+Q5LqbIEdQSU8g5o6n5Yi25Zmo55u05o6l5pSv5oyB5byA5ryP6L6T5Ye677yM6L+Y5pyJ6K645aSa5LiN5pSv5oyB44CC5b2T5L2g6ZyA6KaB5byA5ryP5L+h5Y+377yM5L2GCivnoazku7blj4jkuI3nm7TmjqXmlK/mjIHnmoTml7blgJnvvIzkuIDkuKrluLjnlKjnmoTmlrnms5XmmK/nlKjku7vkvZXljbPlj6/kvZzovpPlhaXkuZ/lj6/kvZzovpPlh7rnmoQgR1BJTwor5byV6ISa5p2l5qih5oufOgorCisgTE9XOglncGlvX2RpcmVjdGlvbl9vdXRwdXQoZ3BpbywgMCkgLi4uIOi/meS7o+eggempseWKqOS/oeWPt+W5tuimhueblgorCeS4iuaLiemFjee9ruOAggorCisgSElHSDoJZ3Bpb19kaXJlY3Rpb25faW5wdXQoZ3BpbykgLi4uIOi/meS7o+eggeWFs+mXrei+k+WHuizmiYDku6XkuIrmi4nnlLXpmLsKKwko5oiW5YW25LuW55qE5LiA5Lqb5Zmo5Lu2KeaOp+WItuS6huS/oeWPt+OAggorCivlpoLmnpzkvaDlsIbkv6Hlj7fnur/igJzpqbHliqjigJ3kuLrpq5jnlLXlubPvvIzkvYbmmK8gZ3Bpb19nZXRfdmFsdWUoZ3BpbynmiqXlkYrkuobkuIDkuKoKK+S9jueUteW5syjlnKjpgILlvZPnmoTkuIrljYfml7bpl7TlkI4p77yM5L2g5bCx5Y+v5Lul55+l6YGT5piv5YW25LuW55qE5LiA5Lqb57uE5Lu25bCG5YWx5Lqr5L+h5Y+357q/5ouJ5L2O5LqG44CCCivov5nkuI3kuIDlrprmmK/plJnor6/nmoTjgILkuIDkuKrluLjop4HnmoTkvovlrZDlsLHmmK8gSTJDIOaXtumSn+eahOW7tumVv++8muS4gOS4qumcgOimgei+g+aFouaXtumSn+eahAor5LuO6K6+5aSH5bu26L+fIFNDSyDnmoTkuIrljYfmsr/vvIzogIwgSTJDIOS4u+iuvuWkh+ebuOW6lOWcsOiwg+aVtOWFtuS/oeWPt+S8oOi+k+mAn+eOh+OAggorCisKK+i/meS6m+WFrOe6puW/veeVpeS6huS7gOS5iD8KKz09PT09PT09PT09PT09PT0KK+i/meS6m+WFrOe6puW/veeVpeeahOacgOWkp+S4gOS7tuS6i+WwseaYr+W8leiEmuWkjeeUqO+8jOWboOS4uui/meWxnuS6jumrmOW6puiKr+eJh+eJueWumueahOWxnuaAp+S4lAor5rKh5pyJ5Y+v56e75qSN5oCn44CC5p+Q5Liq5bmz5Y+w5Y+v6IO95LiN6ZyA6KaB5piO56Gu55qE5aSN55So5L+h5oGv77yb5pyJ55qE5a+55LqO5Lu75oSP57uZ5a6a55qE5byV6ISaCivlj6/og73lj6rmnInkuKTkuKrlip/og73pgInpobnvvJvmnInnmoTlj6/og73mr4/kuKrlvJXohJrmnInlhavkuKrlip/og73pgInpobnvvJvmnInnmoTlj6/og73lj6/ku6XlsIYKK+WHoOS4quW8leiEmuS4reeahOS7u+S9leS4gOS4quS9nOS4uue7meWumueahCBHUElP44CCKOaYr+eahO+8jOi/meS6m+S+i+WtkOmDveadpeiHquS6juW9k+WJjei/kOihjAorTGludXgg55qE57O757uf44CCKQorCivlnKjmn5Dkupvns7vnu5/kuK0s5LiO5byV6ISa5aSN55So55u45YWz55qE5piv6YWN572u5ZKM5L2/6IO96ZuG5oiQ55qE5LiK44CB5LiL5ouJ5qih5byP44CC5bm25LiN5piv5omA5pyJCivlubPlj7Dpg73mlK/mjIHov5nnp43mqKHlvI8s5oiW6ICF5LiN5Lya5Lul55u45ZCM55qE5pa55byP5p2l5pSv5oyB6L+Z56eN5qih5byP77yb5LiU5Lu75L2V57uZ5a6a55qE55S16Lev5p2/Civlj6/og73kvb/nlKjlpJbnva7nmoTkuIrmi4ko5oiW5LiL5ouJKeeUtemYuyzov5nml7boiq/niYfkuIrnmoTlsLHkuI3lupTor6Xkvb/nlKjjgIIo5b2T5LiA5Liq55S16Lev6ZyA6KaBCis1a09obSDnmoTmi4nliqjnlLXpmLss6Iqv54mH5LiK55qEIDEwMCBrT2htIOeUtemYu+WwseS4jeiDveWBmuWIsOOAginlkIzmoLfnmoTvvIzpqbHliqjog73lipsKKygyIG1BIHZzIDIwIG1BKeWSjOeUteWOiygxLjhWIHZzIDMuM1Yp5piv5bmz5Y+w54m55a6a6Zeu6aKYLOWwseWDj+aooeWei+S4gOagt+WcqAor5Y+v6YWN572u5byV6ISa5ZKMIEdQSU8g5LmL6Ze0KOayoSnmnInkuIDkuIDlr7nlupTnmoTlhbPns7vjgIIKKwor6L+Y5pyJ5YW25LuW5LiA5Lqb57O757uf54m55a6a55qE5py65Yi25rKh5pyJ5Zyo6L+Z6YeM5oyH5Ye677yM5L6L5aaC5LiK6L+w55qE6L6T5YWl5Y675q+b5Yi65ZKM57q/5LiO6L6T5Ye6CivpgInpobnjgILnoazku7blj6/og73mlK/mjIHmibnph4/or7vmiJblhpkgR1BJT++8jOS9huaYr+mCo+S4gOiIrOaYr+mFjee9ruebuOWFs+eahO+8muWvueS6juWkhOS6juWQjOS4gAor5Z2X5Yy6KGJhbmsp55qER1BJT+OAgihHUElPIOmAmuW4uOS7pSAxNiDmiJYgMzIg5Liq57uE5oiQ5LiA5Liq5Yy65Z2X77yM5LiA5Liq57uZ5a6a55qECivniYfkuIrns7vnu5/kuIDoiKzmnInlh6DkuKrov5nmoLfnmoTljLrlnZfjgIIp5p+Q5Lqb57O757uf5Y+v5Lul6YCa6L+H6L6T5Ye6IEdQSU8g6Kem5Y+RIElSUe+8jAor5oiW6ICF5LuO5bm26Z2e5LulIEdQSU8g566h55CG55qE5byV6ISa5Y+W5YC844CC6L+Z5Lqb5py65Yi255qE55u45YWz5Luj56CB5rKh5pyJ5b+F6KaB5YW35pyJ5Y+v56e75qSN5oCn44CCCisKK+W9k+WJje+8jOWKqOaAgeWumuS5iSBHUElPIOW5tuS4jeaYr+agh+WHhueahO+8jOS+i+WmguS9nOS4uumFjee9ruS4gOS4quW4puacieafkOS6myBHUElPIOaJqeWxleWZqOeahAor6ZmE5Yqg55S16Lev5p2/55qE5Ymv5L2c55So44CCCisKK0dQSU8g5a6e546w6ICF55qE5qGG5p62ICjlj6/pgIkpCis9PT09PT09PT09PT09PT09PT09PT0KK+WJjemdouaPkOWIsOS6hu+8jOacieS4gOS4quWPr+mAieeahOWunueOsOahhuaetu+8jOiuqeW5s+WPsOS9v+eUqOebuOWQjOeahOe8lueoi+aOpeWPo++8jOabtOWKoOeugOWNleWcsOaUr+aMgQor5LiN5ZCM56eN57G755qEIEdQSU8g5o6n5Yi25Zmo44CC6L+Z5Liq5qGG5p6256ew5Li6ImdwaW9saWIi44CCCisKK+S9nOS4uuS4gOS4qui+heWKqeiwg+ivleWKn+iDve+8jOWmguaenCBkZWJ1Z2ZzIOWPr+eUqO+8jOWwseS8muacieS4gOS4qiAvc3lzL2tlcm5lbC9kZWJ1Zy9ncGlvCivmlofku7bjgILpgJrov4fov5nkuKrmoYbmnrbvvIzlroPlj6/ku6XliJflh7rmiYDmnInms6jlhoznmoTmjqfliLblmags5Lul5Y+K5b2T5YmN5q2j5Zyo5L2/55So5Lit55qEIEdQSU8KK+eahOeKtuaAgeOAggorCisKK+aOp+WItuWZqOmpseWKqDogZ3Bpb19jaGlwCistLS0tLS0tLS0tLS0tLS0tLS0tCivlnKjmoYbmnrbkuK3mr4/kuKogR1BJTyDmjqfliLblmajpg73ljIXoo4XkuLrkuIDkuKogInN0cnVjdCBncGlvX2NoaXAi77yM5LuW5YyF5ZCr5LqGCivor6XnsbvlnovnmoTmr4/kuKrmjqfliLblmajnmoTluLjnlKjkv6Hmga86CisKKyAtIOiuvue9riBHUElPIOaWueWQkeeahOaWueazlQorIC0g55So5LqO6K6/6ZeuIEdQSU8g5YC855qE5pa55rOVCisgLSDlkYrnn6XosIPnlKjlhbbmlrnms5XmmK/lkKblj6/og73kvJHnnKDnmoTmoIflv5cKKyAtIOWPr+mAieeahCBkZWJ1Z2ZzIOS/oeaBr+WvvOWHuuaWueazlSAo5pi+56S657G75Ly85LiK5ouJ6YWN572u5LiA5qC355qE6aKd5aSW54q25oCBKQorIC0g6K+K5pat5qCH562+CisKK+S5n+WMheWQq+S6huadpeiHqiBkZXZpY2UucGxhdGZvcm1fZGF0YSDnmoTmr4/kuKrlrp7kvovnmoTmlbDmja7vvJrlroPnrKzkuIDkuKogR1BJTyDnmoQKK+e8luWPt+WSjOWug+WPr+eUqOeahCBHUElPIOeahOaVsOmHj+OAggorCivlrp7njrAgZ3Bpb19jaGlwIOeahOS7o+eggeW6lOaUr+aMgeWkmuaOp+WItuWZqOWunuS+i++8jOi/meWPr+iDveS9v+eUqOmpseWKqOaooeWei+OAgumCo+S6m+S7o+eggeimgQor6YWN572u5q+P5LiqIGdwaW9fY2hpcO+8jOW5tuWPkei1t2dwaW9jaGlwX2FkZCgp44CC5Y246L295LiA5LiqIEdQSU8g5o6n5Yi25Zmo5b6I5bCR6KeB77yMCivkvYblnKjlv4XopoHnmoTml7blgJnlj6/ku6Xkvb/nlKggZ3Bpb2NoaXBfcmVtb3ZlKCnjgIIKKwor5aSn6YOo5YiGIGdwaW9fY2hpcCDmmK/kuIDkuKrlrp7kvovnibnlrprnu5PmnoTkvZPnmoTkuIDpg6jliIbvvIzogIzlubbkuI3lsIYgR1BJTyDmjqXlj6PljZXni6wKK+aatOmcsuWHuuadpSzmr5TlpoLnvJblnYDjgIHnlLXmupDnrqHnkIbnrYnjgILnsbvkvLznvJbop6PnoIHlmajov5nmoLfnmoToiq/niYfkvJrmnInlpI3mnYLnmoTpnZ4gR1BJTwor54q25oCB44CCCisKK+S7u+S9leS4gOS4qiBkZWJ1Z2ZzIOS/oeaBr+WvvOWHuuaWueazlemAmuW4uOW6lOivpeW/veeVpei/mOacqueUs+ivt+S9nOS4uiBHUElPIOeahOS/oeWPt+e6v+OAggor5LuW5Lus5Y+v5Lul5L2/55SoIGdwaW9jaGlwX2lzX3JlcXVlc3RlZCgp5rWL6K+V77yM5b2T6L+Z5LiqIEdQSU8g5bey57uP55Sz6K+36L+H5LqGCivlsLHov5Tlm57nm7jlhbPnmoTmoIfnrb7vvIzlkKbliJnov5Tlm54gTlVMTOOAggorCisKK+W5s+WPsOaUr+aMgQorLS0tLS0tLQor5Li65LqG5pSv5oyB6L+Z5Liq5qGG5p6277yM5LiA5Liq5bmz5Y+w55qEIEtjb25maWcg5paH5Lu25bCG5LyaICJzZWxlY3QiKOmAieaLqSkKK0FSQ0hfUkVRVUlSRV9HUElPTElCIOaIliBBUkNIX1dBTlRfT1BUSU9OQUxfR1BJT0xJQu+8jOW5tuiuqeWug+eahAorPGFzbS9ncGlvLmg+IOWMheWQqyA8YXNtLWdlbmVyaWMvZ3Bpby5oPu+8jOWQjOaXtuWumuS5ieS4ieS4quaWueazlToKK2dwaW9fZ2V0X3ZhbHVlKCnjgIFncGlvX3NldF92YWx1ZSgp5ZKMIGdwaW9fY2Fuc2xlZXAoKeOAggorCivlroPkuZ/lupTmj5DkvpvkuIDkuKogQVJDSF9OUl9HUElPUyDnmoTlrprkuYnlgLzvvIzov5nmoLflj6/ku6Xmm7Tlpb3lnLDlj43mmKDor6XlubPlj7AgR1BJTwor55qE5a6e6ZmF5pWw6YePLOiKguecgemdmeaAgeihqOeahOepuumXtOOAgijov5nkuKrlrprkuYnlgLzlupTor6XljIXlkKvniYfkuIrns7vnu5/lhoXlu7ogR1BJTyDlkowKK0dQSU8g5omp5bGV5Zmo5Lit55qE5pWw5o2u44CCKQorCitBUkNIX1JFUVVJUkVfR1BJT0xJQiDmhI/lkbPnnYAgZ3Bpb2xpYiDmoLjlv4PlnKjov5nkuKrmnoTmnrbkuK3lsIbmgLvmmK/nvJbor5Hov5vlhoXmoLjjgIIKKworQVJDSF9XQU5UX09QVElPTkFMX0dQSU9MSUIg5oSP5ZGz552AIGdwaW9saWIg5qC45b+D6buY6K6k5YWz6ZetLOS4lOeUqOaIt+WPr+S7pQor5L2/6IO95a6DLOW5tuWwhuWFtue8luivkei/m+WGheaguCjlj6/pgIkp44CCCisKK+WmguaenOi/meS6m+mAiemhuemDveayoeiiq+mAieaLqSzor6XlubPlj7DlsLHkuI3pgJrov4cgR1BJTy1saWIg5pSv5oyBIEdQSU8s5LiU5Luj56CB5LiN5Y+v5LulCivooqvnlKjmiLfkvb/og73jgIIKKwor5Lul5LiL6L+Z5Lqb5pa55rOV55qE5a6e546w5Y+v5Lul55u05o6l5L2/55So5qGG5p625Luj56CBLOW5tuaAu+aYr+mAmui/hyBncGlvX2NoaXAg6LCD5bqmOgorCisgICNkZWZpbmUgZ3Bpb19nZXRfdmFsdWUJX19ncGlvX2dldF92YWx1ZQorICAjZGVmaW5lIGdwaW9fc2V0X3ZhbHVlCV9fZ3Bpb19zZXRfdmFsdWUKKyAgI2RlZmluZSBncGlvX2NhbnNsZWVwCQlfX2dwaW9fY2Fuc2xlZXAKKwor6L+Z5Lqb5a6a5LmJ5Y+v5Lul55So5pu055CG5oOz55qE5a6e546w5pa55rOV5pu/5Luj77yM6YKj5bCx5piv5L2/55So57uP6L+H6YC76L6R5LyY5YyW55qE5YaF6IGU5Ye95pWw5p2l6K6/6ZeuCivln7rkuo7nibnlrprniYfkuIrns7vnu5/nmoQgR1BJT+OAguS+i+Wmgizoi6XlvJXnlKjnmoQgR1BJTyAo5a+E5a2Y5Zmo5L2N5YGP56e7KeaYr+W4uOmHj+KAnDEy4oCd77yMCivor7vlj5bmiJborr7nva7lroPlj6/og73lj6rpnIDlsJHliJnkuKTmiJbkuInkuKrmjIfku6TvvIzkuJTkuI3kvJrkvJHnnKDjgILlvZPov5nmoLfnmoTkvJjljJbml6Dms5Xlrp7njrDml7bvvIwKK+mCo+S6m+WHveaVsOW/hemhu+S9v+eUqOahhuaetuaPkOS+m+eahOS7o+egge+8jOmCo+WwseiHs+WwkeimgeWHoOWNgeadoeaMh+S7pOaJjeWPr+S7peWunueOsOOAguWvueS6jueUqCBHUElPCivmqKHmi5/nmoQgSS9PIOaOpeWPoywg5aaC5q2k57K+566A5oyH5Luk5piv5b6I5pyJ5oSP5LmJ55qE44CCCisKK+WvueS6jueJh+S4iuezu+e7n++8jOW5s+WPsOeJueWumuS7o+eggeS4uueJh+S4iiBHUElPIOavj+S4quWMuihiYW5rKeWumuS5ieW5tuazqOWGjCBncGlvX2NoaXAKK+WunuS+i+OAgumCo+S6myBHUElPIOW6lOivpeagueaNruiKr+eJh+WOguWVhueahOaWh+aho+i/m+ihjOe8lueggS/moIfnrb4s5bm255u05o6l5ZKM55S16Lev5p2/5Y6f55CG5Zu+Civlr7nlupTjgILku5bku6zlupTor6XlvIDlp4vkuo7pm7blubbnu4jmraLkuo7lubPlj7DnibnlrprnmoTpmZDliLbjgILov5nkupsgR1BJTyjku6PnoIEp6YCa5bi45LuOCithcmNoX2luaXRjYWxsKCnmiJbogIXmm7Tml6nnmoTlnLDmlrnpm4bmiJDov5vlubPlj7DliJ3lp4vljJbku6PnoIHvvIzkvb/ov5nkupsgR1BJTyDmgLvmmK/lj6/nlKjvvIwKK+S4lOS7luS7rOmAmuW4uOWPr+S7peS9nOS4uiBJUlEg5L2/55So44CCCisKK+adv+e6p+aUr+aMgQorLS0tLS0tLQor5a+55LqO5aSW6YOoIEdQSU8g5o6n5Yi25ZmoKOS+i+WmgiBJMkMg5oiWIFNQSSDmianlsZXlmajjgIHkuJPnlKjoiq/niYfjgIHlpJrlip/og73lmajku7bjgIFGUEdBCivmiJYgQ1BMRCnvvIzlpKflpJrmlbDluLjnlKjmnb/nuqfnibnlrprku6PnoIHpg73lj6/ku6Xms6jlhozmjqfliLblmajorr7lpIfvvIzlubbkv53or4Hku5bku6znmoTpqbHliqjnn6XpgZMKK2dwaW9jaGlwX2FkZCgp5omA5L2/55So55qEIEdQSU8g57yW5Y+344CC5LuW5Lus55qE6LW35aeL57yW5Y+36YCa5bi46Lef5Zyo5bmz5Y+w54m55a6a55qEIEdQSU8KK+e8luWPt+S5i+WQjuOAggorCivkvovlpoLmnb/nuqflkK/liqjku6PnoIHlupTor6XliJvlu7rnu5PmnoTkvZPmjIfmmI7oiq/niYflhazlvIDnmoQgR1BJTyDojIPlm7TvvIzlubbkvb/nlKggcGxhdGZvcm1fZGF0YQor5bCG5YW25Lyg6YCS57uZ5q+P5LiqIEdQSU8g5omp5bGV5Zmo6Iqv54mH44CC54S25ZCO6Iqv54mH6amx5Yqo5Lit55qEIHByb2JlKCnkvovnqIvlj6/ku6XlsIbov5nkuKoKK+aVsOaNruS8oOmAkue7mSBncGlvY2hpcF9hZGQoKeOAggorCivliJ3lp4vljJbpobrluo/lvojph43opoHjgILkvovlpoLvvIzlpoLmnpzkuIDkuKrorr7lpIfkvp3otZbln7rkuo4gSTJDIOeahCjmianlsZUpR1BJT++8jOmCo+S5iOWug+eahAorcHJvYmUoKeS+i+eoi+WwseW6lOivpeWcqOmCo+S4qiBHUElPIOacieaViOS7peWQjuaJjeWPr+S7peiiq+iwg+eUqOOAgui/meaEj+WRs+edgOiuvuWkh+W6lOivpeWcqAorR1BJTyDlj6/ku6Xlt6XkvZzkuYvlkI7miY3lj6/ooqvms6jlhozjgILop6PlhrPov5nnsbvkvp3otZbnmoTnmoTkuIDnp43mlrnms5XmmK/orqnov5nnp40gZ3Bpb19jaGlwCivmjqfliLblmajlkJHmnb/nuqfnibnlrprku6PnoIHmj5Dkvpsgc2V0dXAoKeWSjCB0ZWFyZG93bigp5Zue6LCD5Ye95pWw44CC5LiA5pem5omA5pyJ5b+F6aG755qECivotYTmupDlj6/nlKjkuYvlkI7vvIzov5nkupvmnb/nuqfnibnlrprnmoTlm57osIPlh73mlbDlsIbkvJrms6jlhozorr7lpIfvvIzlubblj6/ku6XlnKjov5nkupsgR1BJTyDmjqfliLblmagKK+iuvuWkh+WPmOaIkOaXoOaViOaXtuenu+mZpOWug+S7rOOAggorCisKK+eUqOaIt+epuumXtOeahCBTeXNmcyDmjqXlj6Mo5Y+v6YCJKQorPT09PT09PT09PT09PT09PT09PT09PT09Civkvb/nlKjigJxncGlvbGli4oCd5a6e546w5qGG5p6255qE5bmz5Y+w5Y+v5Lul6YCJ5oup6YWN572u5LiA5LiqIEdQSU8g55qEIHN5c2ZzIOeUqOaIt+aOpeWPo+OAggor6L+Z5LiN5ZCM5LqOIGRlYnVnZnMg5o6l5Y+j77yM5Zug5Li65a6D5o+Q5L6b55qE5piv5a+5IEdQSU/mlrnlkJHlkozlgLznmoTmjqfliLbvvIzogIzkuI3lj6rmmL7npLoKK+S4gOS4qkdQSU8g55qE54q25oCB5pGY6KaB44CC5q2k5aSWLOWug+WPr+S7peWHuueOsOWcqOayoeacieiwg+ivleaUr+aMgeeahOS6p+WTgee6p+ezu+e7n+S4reOAggorCivkvovlpoLvvIzpgJrov4fpgILlvZPnmoTns7vnu5/noazku7bmlofmoaPvvIznlKjmiLfnqbrpl7Tlj6/ku6Xnn6XpgZMgR0lPUCAjMjMg5o6n5Yi2IEZsYXNoCivlrZjlgqjlmajnmoTlhpnkv53miqQo55So5LqO5L+d5oqk5YW25LitIEJvb3Rsb2FkZXIg5YiG5Yy6KeOAguS6p+WTgeeahOezu+e7n+WNh+e6p+WPr+iDvemcgOimgQor5Li05pe26Kej6Zmk6L+Z5Liq5L+d5oqk77ya6aaW5YWI5a+85YWl5LiA5LiqIEdQSU/vvIzmlLnlj5jlhbbovpPlh7rnirbmgIHvvIznhLblkI7lnKjph43mlrDkvb/og73lhpnkv53miqQKK+WJjeWNh+e6p+S7o+eggeOAgumAmuW4uOaDheWGteS4iyxHUElPICMyMyDmmK/kuI3kvJrooqvop6blj4rnmoTvvIzlubbkuJTlhoXmoLjkuZ/kuI3pnIDopoHnn6XpgZPku5bjgIIKKwor5qC55o2u6YCC5b2T55qE56Gs5Lu25paH5qGj77yM5p+Q5Lqb57O757uf55qE55So5oi356m66Ze0IEdQSU8g5Y+v5Lul55So5LqO56Gu5a6a57O757uf6YWN572u5pWw5o2u77yMCivov5nkupvmlbDmja7mmK/moIflh4blhoXmoLjkuI3nn6XpgZPnmoTjgILlnKjmn5Dkupvku7vliqHkuK3vvIznroDljZXnmoTnlKjmiLfnqbrpl7QgR1BJTyDpqbHliqjlj6/og73mmK8KK+ezu+e7n+ecn+ato+mcgOimgeeahOOAggorCivms6jmhI/vvJrmoIflh4blhoXmoLjpqbHliqjkuK3lt7Lnu4/lrZjlnKjpgJrnlKjnmoTigJxMRUQg5ZKM5oyJ6ZSu4oCdR1BJTyDku7vliqHvvIzliIbliKvmmK86CisibGVkcy1ncGlvIiDlkowgImdwaW9fa2V5cyLjgILor7fkvb/nlKjov5nkupvmnaXmm7/ku6Pnm7TmjqXorr/pl64gR1BJT++8jOWboOS4uumbhuaIkOWcqAor5YaF5qC45qGG5p625Lit55qE6L+Z57G76amx5Yqo5q+U5L2g5Zyo55So5oi356m66Ze055qE5Luj56CB5pu05aW944CCCisKKworU3lzZnMg5Lit55qE6Lev5b6ECistLS0tLS0tLS0tLS0tLQor5ZyoL3N5cy9jbGFzcy9ncGlvIOS4reaciSAzIOexu+WFpeWPozoKKworICAgLQnnlKjkuo7lnKjnlKjmiLfnqbrpl7TmjqfliLYgR1BJTyDnmoTmjqfliLbmjqXlj6M7CisKKyAgIC0JR1BJT3Mg5pys6LqrO+S7peWPigorCisgICAtCUdQSU8g5o6n5Yi25ZmoICgiZ3Bpb19jaGlwIiDlrp7kvosp44CCCisKK+mZpOS6hui/meS6m+agh+WHhueahOaWh+S7tizov5jljIXlkKvigJxkZXZpY2XigJ3nrKblj7fpk77mjqXjgIIKKwor5o6n5Yi25o6l5Y+j5piv5Y+q5YaZ55qEOgorCisgICAgL3N5cy9jbGFzcy9ncGlvLworCisgICAgCSJleHBvcnQiIC4uLiDnlKjmiLfnqbrpl7Tlj6/ku6XpgJrov4flhpnlhbbnvJblj7fliLDov5nkuKrmlofku7bvvIzopoHmsYLlhoXmoLjlr7zlh7oKKwkJ5LiA5LiqIEdQSU8g55qE5o6n5Yi25Yiw55So5oi356m66Ze044CCCisKKwkJ5L6L5aaCOiDlpoLmnpzlhoXmoLjku6PnoIHmsqHmnInnlLPor7cgR1BJTyAjMTksImVjaG8gMTkgPiBleHBvcnQiCisJCeWwhuS8muS4uiBHUElPICMxOSDliJvlu7rkuIDkuKogImdwaW8xOSIg6IqC54K544CCCisKKyAgICAJInVuZXhwb3J0IiAuLi4g5a+85Ye65Yiw55So5oi356m66Ze055qE6YCG5pON5L2c44CCCisKKwkJ5L6L5aaCOiAiZWNobyAxOSA+IHVuZXhwb3J0IiDlsIbkvJrnp7vpmaTkvb/nlKgiZXhwb3J0IuaWh+S7tuWvvOWHuueahAorCQkiZ3BpbzE5IiDoioLngrnjgIIKKworR1BJTyDkv6Hlj7fnmoTot6/lvoTnsbvkvLwgL3N5cy9jbGFzcy9ncGlvL2dwaW80Mi8gKOWvueS6jiBHUElPICM0MiDmnaXor7Qp77yMCivlubbmnInlpoLkuIvnmoTor7sv5YaZ5bGe5oCnOgorCisgICAgL3N5cy9jbGFzcy9ncGlvL2dwaW9OLworCisJImRpcmVjdGlvbiIgLi4uIOivu+WPluW+l+WIsCAiaW4iIOaIliAib3V0IuOAgui/meS4quWAvOmAmuW4uOi/kOihjOWGmeWFpeOAggorCQnlhpnlhaUib3V0IiDml7Ys5YW25byV6ISa55qE6buY6K6k6L6T5Ye65Li65L2O55S15bmz44CC5Li65LqG56Gu5L+d5peg5pWF6Zqc6L+Q6KGM77yMCisJCSJsb3ciIOaIliAiaGlnaCIg55qE55S15bmz5YC85bqU6K+l5YaZ5YWlIEdQSU8g55qE6YWN572u77yM5L2c5Li65Yid5aeL6L6T5Ye65YC844CCCisKKwkJ5rOo5oSPOuWmguaenOWGheaguOS4jeaUr+aMgeaUueWPmCBHUElPIOeahOaWueWQke+8jOaIluiAheWcqOWvvOWHuuaXtuWGheaguOS7o+eggeayoeaciQorCQnmmI7noa7lhYHorrjnlKjmiLfnqbrpl7Tlj6/ku6Xph43mlrDphY3nva4gR1BJTyDmlrnlkJHvvIzpgqPkuYjov5nkuKrlsZ7mgKflsIbkuI3lrZjlnKjjgIIKKworCSJ2YWx1ZSIgLi4uIOivu+WPluW+l+WIsCAwICjkvY7nlLXlubMpIOaIliAxICjpq5jnlLXlubMp44CC5aaC5p6cIEdQSU8g6YWN572u5Li6CisJCei+k+WHuizov5nkuKrlgLzlhYHorrjlhpnmk43kvZzjgILku7vkvZXpnZ7pm7blgLzpg73ku6Xpq5jnlLXlubPnnIvlvoXjgIIKKworCQnlpoLmnpzlvJXohJrlj6/ku6XphY3nva7kuLrkuK3mlq3kv6Hlj7fvvIzkuJTlpoLmnpzlt7Lnu4/phY3nva7kuobkuqfnlJ/kuK3mlq3nmoTmqKHlvI8KKwkJ77yI6KeBImVkZ2Ui55qE5o+P6L+w77yJ77yM5L2g5Y+v5Lul5a+56L+Z5Liq5paH5Lu25L2/55So6L2u6K+i5pON5L2cKHBvbGwoMikp77yMCisJCeS4lOi9ruivouaTjeS9nOS8muWcqOS7u+S9leS4reaWreinpuWPkeaXtui/lOWbnuOAguWmguaenOS9oOS9v+eUqOi9ruivouaTjeS9nChwb2xsKDIpKe+8jAorCQnor7flnKggZXZlbnRzIOS4reiuvue9riBQT0xMUFJJIOWSjCBQT0xMRVJS44CC5aaC5p6c5L2g5L2/55So6L2u6K+i5pON5L2cCisJCShzZWxlY3QoMikp77yM6K+35ZyoIGV4Y2VwdGZkcyDorr7nva7kvaDmnJ/mnJvnmoTmlofku7bmj4/ov7DnrKbjgILlnKgKKwkJ6L2u6K+i5pON5L2cKHBvbGwoMikp6L+U5Zue5LmL5ZCO77yM5pei5Y+v5Lul6YCa6L+HIGxzZWVrKDIp5pON5L2c6K+75Y+WCisJCXN5c2ZzIOaWh+S7tueahOW8gOWni+mDqOWIhu+8jOS5n+WPr+S7peWFs+mXrei/meS4quaWh+S7tuW5tumHjeaWsOaJk+W8gOWug+adpeivu+WPluaVsOaNruOAggorCisJImVkZ2UiIC4uLiDor7vlj5blvpfliLDigJxub25l4oCd44CB4oCccmlzaW5n4oCd44CB4oCcZmFsbGluZ+KAneaIluiAheKAnGJvdGjigJ3jgIIKKwkJ5bCG6L+Z5Lqb5a2X56ym5Liy5YaZ5YWl6L+Z5Liq5paH5Lu25Y+v5Lul6YCJ5oup5rK/6Kem5Y+R5qih5byP77yM5Lya5L2/5b6X6L2u6K+i5pON5L2cCisJCShzZWxlY3QoMikp5ZyoInZhbHVlIuaWh+S7tuS4rei/lOWbnuOAggorCisJCei/meS4quaWh+S7tuS7heacieWcqOi/meS4quW8leiEmuWPr+S7pemFjee9ruS4uuWPr+S6p+eUn+S4reaWrei+k+WFpeW8leiEmuaXtu+8jOaJjeWtmOWcqOOAggorCisJImFjdGl2ZV9sb3ciIC4uLiDor7vlj5blvpfliLAgMCAo5YGHKSDmiJYgMSAo55yfKeOAguWGmeWFpeS7u+S9lemdnumbtuWAvOWPr+S7pQorCQnnv7vovazov5nkuKrlsZ7mgKfnmoQo6K+75YaZKeWAvOOAguW3suWtmOWcqOaIluS5i+WQjumAmui/hyJlZGdlIuWxnuaAp+iuvue9ruS6hiJyaXNpbmciCisJCeWSjCAiZmFsbGluZyIg5rK/6Kem5Y+R5qih5byP55qE6L2u6K+i5pON5L2cKHBvbGwoMikp5bCG5Lya6YG15b6q6L+Z5Liq6K6+572u44CCCisKK0dQSU8g5o6n5Yi25Zmo55qE6Lev5b6E57G75Ly8IC9zeXMvY2xhc3MvZ3Bpby9ncGlvY2hpcDQyLyAo5a+55LqO5LuOIzQyIEdQSU8KK+W8gOWni+WunueOsOaOp+WItueahOaOp+WItuWZqCks5bm25pyJ552A5Lul5LiL5Y+q6K+75bGe5oCnOgorCisgICAgL3N5cy9jbGFzcy9ncGlvL2dwaW9jaGlwTi8KKworICAgIAkiYmFzZSIgLi4uIOS4juS7peS4iueahCBOIOebuOWQjCzku6PooajmraToiq/niYfnrqHnkIbnmoTnrKzkuIDkuKogR1BJTyDnmoTnvJblj7cKKworICAgIAkibGFiZWwiIC4uLiDnlKjkuo7or4rmlq0gKOW5tuS4jeaAu+aYr+WPquacieWUr+S4gOWAvCkKKworICAgIAkibmdwaW8iIC4uLiDmraTmjqfliLblmajmiYDnrqHnkIbnmoQgR1BJTyDmlbDph48o6ICMIEdQSU8g57yW5Y+35LuOIE4g5YiwCisgICAgCQlOICsgbmdwaW8gLSAxKQorCivlpKflpJrmlbDmg4XlhrXkuIss55S16Lev5p2/55qE5paH5qGj5bqU5b2T5qCH5piO5q+P5LiqIEdQSU8g55qE5L2/55So55uu55qE44CC5L2G5piv6YKj5Lqb57yW5Y+35bm25LiN5oC75pivCivlm7rlrprnmoQs5L6L5aaC5Zyo5omp5bGV5Y2h5LiK55qEIEdQSU/kvJrmoLnmja7miYDkvb/nlKjnmoTkuLvmnb/miJbmiYDlnKjloIblj6DmnrbmnoTkuK3lhbbku5bnmoTmnb/lrZDogIwKK+acieaJgOS4jeWQjOOAguWcqOi/meenjeaDheWGteS4iyzkvaDlj6/og73pnIDopoHkvb/nlKggZ3Bpb2NoaXAg6IqC54K5KOWwveWPr+iDveWcsOe7k+WQiOeUtei3r+WbvinmnaUKK+ehruWumue7meWumuS/oeWPt+aJgOeUqOeahCBHUElPIOe8luWPt+OAggorCisKK+S7juWGheaguOS7o+eggeS4reWvvOWHugorLS0tLS0tLS0tLS0tLQor5YaF5qC45Luj56CB5Y+v5Lul5piO56Gu5Zyw566h55CG6YKj5Lqb5bey6YCa6L+HIGdwaW9fcmVxdWVzdCgp55Sz6K+355qEIEdQSU8g55qE5a+85Ye6OgorCisJLyog5a+85Ye6IEdQSU8g5Yiw55So5oi356m66Ze0ICovCisJaW50IGdwaW9fZXhwb3J0KHVuc2lnbmVkIGdwaW8sIGJvb2wgZGlyZWN0aW9uX21heV9jaGFuZ2UpOworCisJLyogZ3Bpb19leHBvcnQoKeeahOmAhuaTjeS9nCAqLworCXZvaWQgZ3Bpb191bmV4cG9ydCgpOworCisJLyog5Yib5bu65LiA5LiqIHN5c2ZzIOi/nuaOpeWIsOW3suWvvOWHuueahCBHUElPIOiKgueCuSAqLworCWludCBncGlvX2V4cG9ydF9saW5rKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3QgY2hhciAqbmFtZSwKKwkJdW5zaWduZWQgZ3BpbykKKwor5Zyo5LiA5Liq5YaF5qC46amx5Yqo55Sz6K+35LiA5LiqIEdQSU8g5LmL5ZCO77yM5a6D5Y+v5Lul6YCa6L+HIGdwaW9fZXhwb3J0KCnkvb/lhbblnKggc3lzZnMKK+aOpeWPo+S4reWPr+ingeOAguivpempseWKqOWPr+S7peaOp+WItuS/oeWPt+aWueWQkeaYr+WQpuWPr+S/ruaUueOAgui/meacieWKqeS6jumYsuatoueUqOaIt+epuumXtOS7o+eggeaXoOaEj+mXtAor56C05Z2P6YeN6KaB55qE57O757uf54q25oCB44CCCisKK+i/meS4quaYjuehrueahOWvvOWHuuacieWKqeS6jijpgJrov4fkvb/mn5Dkupvlrp7pqozmm7TlrrnmmJPmnaUp6LCD6K+V77yM5Lmf5Y+v5Lul5o+Q5L6b5LiA5Liq5aeL57uI5a2Y5Zyo55qE5o6l5Y+j77yMCivkuI7mlofmoaPphY3lkIjkvZzkuLrmnb/nuqfmlK/mjIHljIXnmoTkuIDpg6jliIbjgIIKKwor5ZyoIEdQSU8g6KKr5a+85Ye65LmL5ZCO77yMZ3Bpb19leHBvcnRfbGluaygp5YWB6K645ZyoIHN5c2ZzIOaWh+S7tuezu+e7n+eahOS7u+S9leWcsOaWuQor5Yib5bu65LiA5Liq5Yiw6L+Z5LiqIEdQSU8gc3lzZnMg6IqC54K555qE56ym5Y+36ZO+5o6l44CC6L+Z5qC36amx5Yqo5bCx5Y+v5Lul6YCa6L+H5LiA5Liq5o+P6L+w5oCn55qECivlkI3lrZfvvIzlnKggc3lzZnMg5Lit5LuW5Lus5omA5oul5pyJ55qE6K6+5aSH5LiL5o+Q5L6b5LiA5LiqKOWIsOi/meS4qiBHUElPIHN5c2ZzIOiKgueCueeahCnmjqXlj6PjgIIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vemhfQ04vaW9fb3JkZXJpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi96aF9DTi9pb19vcmRlcmluZy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU5MmRhZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vemhfQ04vaW9fb3JkZXJpbmcudHh0CkBAIC0wLDAgKzEsNjcgQEAKK0NoaW5lc2UgdHJhbnNsYXRlZCB2ZXJzaW9uIG9mIERvY3VtZW50YXRpb24vaW9fb3JkZXJpbmdzLnR4dAorCitJZiB5b3UgaGF2ZSBhbnkgY29tbWVudCBvciB1cGRhdGUgdG8gdGhlIGNvbnRlbnQsIHBsZWFzZSBjb250YWN0IHRoZQorb3JpZ2luYWwgZG9jdW1lbnQgbWFpbnRhaW5lciBkaXJlY3RseS4gIEhvd2V2ZXIsIGlmIHlvdSBoYXZlIGEgcHJvYmxlbQorY29tbXVuaWNhdGluZyBpbiBFbmdsaXNoIHlvdSBjYW4gYWxzbyBhc2sgdGhlIENoaW5lc2UgbWFpbnRhaW5lciBmb3IKK2hlbHAuICBDb250YWN0IHRoZSBDaGluZXNlIG1haW50YWluZXIgaWYgdGhpcyB0cmFuc2xhdGlvbiBpcyBvdXRkYXRlZAorb3IgaWYgdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIHRyYW5zbGF0aW9uLgorCitDaGluZXNlIG1haW50YWluZXI6IExpbiBZb25ndGluZyA8bGlueW9uZ3RpbmdAZ21haWwuY29tPgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEb2N1bWVudGF0aW9uL2lvX29yZGVyaW5nLnR4dCDnmoTkuK3mlofnv7vor5EKKwor5aaC5p6c5oOz6K+E6K665oiW5pu05paw5pys5paH55qE5YaF5a6577yM6K+355u05o6l6IGU57O75Y6f5paH5qGj55qE57u05oqk6ICF44CC5aaC5p6c5L2g5L2/55So6Iux5paHCivkuqTmtYHmnInlm7Dpmr7nmoTor53vvIzkuZ/lj6/ku6XlkJHkuK3mlofniYjnu7TmiqTogIXmsYLliqnjgILlpoLmnpzmnKznv7vor5Hmm7TmlrDkuI3lj4rml7bmiJbogIXnv7sKK+ivkeWtmOWcqOmXrumimO+8jOivt+iBlOezu+S4reaWh+eJiOe7tOaKpOiAheOAggorCivkuK3mlofniYjnu7TmiqTogIXvvJog5p6X5rC45ZCsIExpbiBZb25ndGluZyA8bGlueW9uZ3RpbmdAZ21haWwuY29tPgor5Lit5paH54mI57+76K+R6ICF77yaIOael+awuOWQrCBMaW4gWW9uZ3RpbmcgPGxpbnlvbmd0aW5nQGdtYWlsLmNvbT4KK+S4reaWh+eJiOagoeivkeiAhe+8miDmnpfmsLjlkKwgTGluIFlvbmd0aW5nIDxsaW55b25ndGluZ0BnbWFpbC5jb20+CisKKwor5Lul5LiL5Li65q2j5paHCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor5Zyo5p+Q5Lqb5bmz5Y+w5LiK77yM5omA6LCT55qE5YaF5a2Y5pig5bCESS9P5piv5byx6aG65bqP44CC5Zyo6L+Z5Lqb5bmz5Y+w5LiK77yM6amx5Yqo5byA5Y+R6ICF5pyJ6LSj5Lu7Civkv53or4FJL0/lhoXlrZjmmKDlsITlnLDlnYDnmoTlhpnmk43kvZzmjInnqIvluo/lm77mhI/nmoTpobrluo/ovr7liLDorr7lpIfjgILpgJrluLjor7vlj5bkuIDkuKrigJzlronlhajigJ0KK+iuvuWkh+WvhOWtmOWZqOaIluahpeWvhOWtmOWZqO+8jOinpuWPkUlP6Iqv54mH5riF5Yi35pyq5aSE55CG55qE5YaZ5pON5L2c5Yiw6L6+6K6+5aSH5ZCO5omN5aSE55CG6K+75pON5L2c77yMCivogIzovr7liLDkv53or4Hnm67nmoTjgILpqbHliqjnqIvluo/pgJrluLjlnKhzcGlubG9ja+S/neaKpOeahOS4tOeVjOWMuumAgOWHuuS5i+WJjeS9v+eUqOi/meenjeaKgOacr+OAggor6L+Z5Lmf5Y+v5Lul5L+d6K+B5ZCO6Z2i55qE5YaZ5pON5L2c5Y+q5Zyo5YmN6Z2i55qE5YaZ5pON5L2c5LmL5ZCO5Yiw6L6+6K6+5aSH77yI6L+Z6Z2e5bi457G75Ly85LqO5YaF5a2YCivlsY/pmpzmk43kvZzvvIxtYigp77yM5LiN6L+H5LuF6YCC55So5LqOSS9P77yJ44CCCisKK+WBh+iuvuS4gOS4quiuvuWkh+mpseWKqOeoi+eahOWFt+S9k+S+i+WtkO+8mgorCisgICAgICAgIC4uLgorQ1BVIEE6ICBzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X2xvY2ssIGZsYWdzKQorQ1BVIEE6ICB2YWwgPSByZWFkbChteV9zdGF0dXMpOworQ1BVIEE6ICAuLi4KK0NQVSBBOiAgd3JpdGVsKG5ld3ZhbCwgcmluZ19wdHIpOworQ1BVIEE6ICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfbG9jaywgZmxhZ3MpCisgICAgICAgIC4uLgorQ1BVIEI6ICBzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X2xvY2ssIGZsYWdzKQorQ1BVIEI6ICB2YWwgPSByZWFkbChteV9zdGF0dXMpOworQ1BVIEI6ICAuLi4KK0NQVSBCOiAgd3JpdGVsKG5ld3ZhbDIsIHJpbmdfcHRyKTsKK0NQVSBCOiAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X2xvY2ssIGZsYWdzKQorICAgICAgICAuLi4KKwor5LiK6L+w5L6L5a2Q5Lit77yM6K6+5aSH5Y+v6IO95Lya5YWI5o6l5pS25YiwbmV3dmFsMueahOWAvO+8jOeEtuWQjuaOpeaUtuWIsG5ld3ZhbOeahOWAvO+8jOmXrumimOWwsQor5Y+R55Sf5LqG44CC5LiN6L+H5b6I5a655piT6YCa6L+H5LiL6Z2i5pa55rOV5p2l5L+u5aSN77yaCisKKyAgICAgICAgLi4uCitDUFUgQTogIHNwaW5fbG9ja19pcnFzYXZlKCZkZXZfbG9jaywgZmxhZ3MpCitDUFUgQTogIHZhbCA9IHJlYWRsKG15X3N0YXR1cyk7CitDUFUgQTogIC4uLgorQ1BVIEE6ICB3cml0ZWwobmV3dmFsLCByaW5nX3B0cik7CitDUFUgQTogICh2b2lkKXJlYWRsKHNhZmVfcmVnaXN0ZXIpOyAvKiDphY3nva7lr4TlrZjlmajvvJ8qLworQ1BVIEE6ICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfbG9jaywgZmxhZ3MpCisgICAgICAgIC4uLgorQ1BVIEI6ICBzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X2xvY2ssIGZsYWdzKQorQ1BVIEI6ICB2YWwgPSByZWFkbChteV9zdGF0dXMpOworQ1BVIEI6ICAuLi4KK0NQVSBCOiAgd3JpdGVsKG5ld3ZhbDIsIHJpbmdfcHRyKTsKK0NQVSBCOiAgKHZvaWQpcmVhZGwoc2FmZV9yZWdpc3Rlcik7IC8qIOmFjee9ruWvhOWtmOWZqO+8nyovCitDUFUgQjogIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9sb2NrLCBmbGFncykKKwor5Zyo6Kej5Yaz5pa55qGI5Lit77yM6K+75Y+Wc2FmZV9yZWdpc3RlcuWvhOWtmOWZqO+8jOinpuWPkUlP6Iqv54mH5riF5Yi35pyq5aSE55CG55qE5YaZ5pON5L2c77yMCivlho3lpITnkIblkI7pnaLnmoTor7vmk43kvZzvvIzpmLLmraLlvJXlj5HmlbDmja7kuI3kuIDoh7Tpl67popjjgIIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vemhfQ04vbWFnaWMtbnVtYmVyLnR4dCBiL0RvY3VtZW50YXRpb24vemhfQ04vbWFnaWMtbnVtYmVyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWRiNjkzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi96aF9DTi9tYWdpYy1udW1iZXIudHh0CkBAIC0wLDAgKzEsMTUzIEBACitDaGluZXNlIHRyYW5zbGF0ZWQgdmVyc2lvbiBvZiBEb2N1bWVudGF0aW9uL21hZ2ljLW51bWJlci50eHQKKworSWYgeW91IGhhdmUgYW55IGNvbW1lbnQgb3IgdXBkYXRlIHRvIHRoZSBjb250ZW50LCBwbGVhc2UgcG9zdCB0byBMS01MIGRpcmVjdGx5LgorSG93ZXZlciwgaWYgeW91IGhhdmUgcHJvYmxlbSBjb21tdW5pY2F0aW5nIGluIEVuZ2xpc2ggeW91IGNhbiBhbHNvIGFzayB0aGUKK0NoaW5lc2UgbWFpbnRhaW5lciBmb3IgaGVscC4gIENvbnRhY3QgdGhlIENoaW5lc2UgbWFpbnRhaW5lciwgaWYgdGhpcwordHJhbnNsYXRpb24gaXMgb3V0ZGF0ZWQgb3IgdGhlcmUgaXMgcHJvYmxlbSB3aXRoIHRyYW5zbGF0aW9uLgorCitDaGluZXNlIG1haW50YWluZXI6IEppYSBXZWkgV2VpIDxoYXJyeXhpeW91QGdtYWlsLmNvbT4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRG9jdW1lbnRhdGlvbi9tYWdpYy1udW1iZXIudHh055qE5Lit5paH57+76K+RCisKK+WmguaenOaDs+ivhOiuuuaIluabtOaWsOacrOaWh+eahOWGheWuue+8jOivt+ebtOaOpeWPkeS/oeWIsExLTUzjgILlpoLmnpzkvaDkvb/nlKjoi7HmlofkuqTmtYHmnInlm7Dpmr7nmoTor53vvIzkuZ/lj68KK+S7peWQkeS4reaWh+eJiOe7tOaKpOiAheaxguWKqeOAguWmguaenOacrOe/u+ivkeabtOaWsOS4jeWPiuaXtuaIluiAhee/u+ivkeWtmOWcqOmXrumimO+8jOivt+iBlOezu+S4reaWh+eJiOe7tOaKpOiAheOAggorCivkuK3mlofniYjnu7TmiqTogIXvvJog6LS+5aiB5aiBIEppYSBXZWkgV2VpIDxoYXJyeXhpeW91QGdtYWlsLmNvbT4KK+S4reaWh+eJiOe/u+ivkeiAhe+8miDotL7lqIHlqIEgSmlhIFdlaSBXZWkgPGhhcnJ5eGl5b3VAZ21haWwuY29tPgor5Lit5paH54mI5qCh6K+R6ICF77yaIOi0vuWogeWogSBKaWEgV2VpIFdlaSA8aGFycnl4aXlvdUBnbWFpbC5jb20+CisKK+S7peS4i+S4uuato+aWhworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCivov5nkuKrmlofku7bmmK/mnInlhbPlvZPliY3kvb/nlKjnmoTprZTmnK/lgLzms6jlhozooajjgILlvZPkvaDnu5nkuIDkuKrnu5PmnoTmt7vliqDkuobkuIDkuKrprZTmnK/lgLzvvIzkvaDkuZ/lupTor6Xmiorov5nkuKrprZTmnK/lgLzmt7vliqDliLDov5nkuKrmlofku7bvvIzlm6DkuLrmiJHku6zmnIDlpb3miornlKjkuo7lkITnp43nu5PmnoTnmoTprZTmnK/lgLznu5/kuIDotbfmnaXjgIIKKwor5L2/55So6a2U5pyv5YC85p2l5L+d5oqk5YaF5qC45pWw5o2u57uT5p6E5piv5LiA5Liq6Z2e5bi45aW955qE5Li75oSP44CC6L+Z5bCx5YWB6K645L2g5Zyo6L+Q6KGM5pyf5qOA5p+lKGEp5LiA5Liq57uT5p6E5piv5ZCm5bey57uP6KKr5pS75Ye777yM5oiW6ICFKGIp5L2g5bey57uP57uZ5LiA5Liq5L6L6KGM56iL5bqP6YCa6L+H5LqG5LiA5Liq6ZSZ6K+v55qE57uT5p6E44CC5ZCO5LiA56eN5oOF5Ya154m55Yir5Zyw5pyJ55SoLS0t54m55Yir5piv5b2T5L2g6YCa6L+H5LiA5Liq56m65oyH6ZKI5oyH5ZCR57uT5p6E5L2T55qE5pe25YCZ44CCdHR55rqQ56CB77yM5L6L5aaC77yM57uP5bi46YCa6L+H54m55a6a6amx5Yqo5L2/55So6L+Z56eN5pa55rOV5bm25LiU5Y+N5aSN5Zyw5o6S5YiX54m55a6a5pa56Z2i55qE57uT5p6E44CCCisKK+S9v+eUqOmtlOacr+WAvOeahOaWueazleaYr+WcqOe7k+aehOeahOW8gOWni+WkhOWjsOaYjueahO+8jOWmguS4i++8mgorCitzdHJ1Y3QgdHR5X2xkaXNjIHsKKwlpbnQJbWFnaWM7CisJLi4uCit9OworCivlvZPkvaDku6XlkI7nu5nlhoXmoLjmt7vliqDlop7lvLrlip/og73nmoTml7blgJnvvIzor7fpgbXlrojov5nmnaHop4TliJnvvIHov5nmoLflsLHkvJroioLnnIHmlbDkuI3muIXnmoTosIPor5Xml7bpl7TvvIznibnliKvmmK/kuIDkupvlj6TmgKrnmoTmg4XlhrXvvIzkvovlpoLvvIzmlbDnu4TotoXlh7rojIPlm7TlubbkuJTph43mlrDlhpnkuobotoXlh7rpg6jliIbjgILpgbXlrojov5nkuKrop4TliJnvvIzigKrov5nkupvmg4XlhrXlj6/ku6Xooqvlv6vpgJ/lnLDvvIzlronlhajlnLDpgb/lhY3jgIIKKworCQlUaGVvZG9yZSBUcydvCisJCSAgMzEgTWFyIDk0CisKK+e7meW9k+WJjeeahExpbnV4IDIuMS41Nea3u+WKoOmtlOacr+ihqOOAggorCisJCU1pY2hhZWwgQ2hhc3RhaW4KKwkJPG1haWx0bzptZWNAc2hvdXQubmV0PgorCQkyMiBTZXAgMTk5NworCivnjrDlnKjlupTor6XmnIDmlrDnmoRMaW51eCAyLjEuMTEyLuWboOS4uuWcqOeJueaAp+WGu+e7k+acn+mXtO+8jOS4jeiDveWcqDIuMi545YmN5pS55Y+Y5Lu75L2V5Lic6KW/44CC6L+Z5Lqb5p2h55uu6KKr5pWw5Z+f5omA5o6S5bqP44CCCisKKwkJS3J6eXN6dG9mIEcuQmFyYW5vd3NraQorCSAgICAgICAgPG1haWx0bzoga2diQGtubS5vcmcucGw+CisJCTI5IEp1bCAxOTk4CisKK+abtOaWsOmtlOacr+ihqOWIsExpbnV4IDIuNS40NeOAguWImuWlvei2iui/h+eJueaAp+WGu+e7k++8jOS9huaYr+acieWPr+iDvei/mOS8muacieS4gOS6m+aWsOeahOmtlOacr+WAvOWcqDIuNi545LmL5YmN6J6N5YWl5Yiw5YaF5qC45Lit44CCCisKKwkJUGV0ciBCYXVkaXMKKwkJPHBhc2t5QHVjdy5jej4KKwkJMDMgTm92IDIwMDIKKwor5pu05paw6a2U5pyv6KGo5YiwTGludXggMi41Ljc044CCCisKKwkJRmFiaWFuIEZyZWRlcmljaworICAgICAgICAgICAgICAgIDxmZnJlZGVyaWNrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKwkJMDkgSnVsIDIwMDMKKwor6a2U5pyv5ZCNICAgICAgICAgICAgICAgICDlnLDlnYAgICAgICAgICDnu5PmnoQgICAgICAgICAgICAgICDmiYDlnKjmlofku7YKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUEdfTUFHSUMgICAgICAgICAgICAgICdQJyAgICAgICAgIHBnX3tyZWFkLHdyaXRlfV9oZHIgaW5jbHVkZS9saW51eC9wZy5oCitDTUFHSUMgICAgICAgICAgICAgICAgMHgwMTExICAgICAgdXNlciAgICAgICAgICAgICAgaW5jbHVkZS9saW51eC9hLm91dC5oCitNS0lTU19EUklWRVJfTUFHSUMgICAgMHgwNGJmICAgICAgbWtpc3NfY2hhbm5lbCAgICAgZHJpdmVycy9uZXQvbWtpc3MuaAorSERMQ19NQUdJQyAgICAgICAgICAgIDB4MjM5ZSAgICAgIG5faGRsYyAgICAgICAgICAgIGRyaXZlcnMvY2hhci9uX2hkbGMuYworQVBNX0JJT1NfTUFHSUMgICAgICAgIDB4NDEwMSAgICAgIGFwbV91c2VyICAgICAgICAgIGFyY2gveDg2L2tlcm5lbC9hcG1fMzIuYworQ1lDTEFERVNfTUFHSUMgICAgICAgIDB4NDM1OSAgICAgIGN5Y2xhZGVzX3BvcnQgICAgIGluY2x1ZGUvbGludXgvY3ljbGFkZXMuaAorREJfTUFHSUMgICAgICAgICAgICAgIDB4NDQ0MiAgICAgIGZjX2luZm8gICAgICAgICAgIGRyaXZlcnMvbmV0L2lwaDU1MjZfbm92cmFtLmMKK0RMX01BR0lDICAgICAgICAgICAgICAweDQ0NGQgICAgICBmY19pbmZvICAgICAgICAgICBkcml2ZXJzL25ldC9pcGg1NTI2X25vdnJhbS5jCitGQVNZTkNfTUFHSUMgICAgICAgICAgMHg0NjAxICAgICAgZmFzeW5jX3N0cnVjdCAgICAgaW5jbHVkZS9saW51eC9mcy5oCitGRl9NQUdJQyAgICAgICAgICAgICAgMHg0NjQ2ICAgICAgZmNfaW5mbyAgICAgICAgICAgZHJpdmVycy9uZXQvaXBoNTUyNl9ub3ZyYW0uYworSVNJQ09NX01BR0lDICAgICAgICAgIDB4NGQ1NCAgICAgIGlzaV9wb3J0ICAgICAgICAgIGluY2x1ZGUvbGludXgvaXNpY29tLmgKK1BUWV9NQUdJQyAgICAgICAgICAgICAweDUwMDEgICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXJzL2NoYXIvcHR5LmMKK1BQUF9NQUdJQyAgICAgICAgICAgICAweDUwMDIgICAgICBwcHAgICAgICAgICAgICAgICBpbmNsdWRlL2xpbnV4L2lmX3BwcHZhci5oCitTRVJJQUxfTUFHSUMgICAgICAgICAgMHg1MzAxICAgICAgYXN5bmNfc3RydWN0ICAgICAgaW5jbHVkZS9saW51eC9zZXJpYWwuaAorU1NUQVRFX01BR0lDICAgICAgICAgIDB4NTMwMiAgICAgIHNlcmlhbF9zdGF0ZSAgICAgIGluY2x1ZGUvbGludXgvc2VyaWFsLmgKK1NMSVBfTUFHSUMgICAgICAgICAgICAweDUzMDIgICAgICBzbGlwICAgICAgICAgICAgICBkcml2ZXJzL25ldC9zbGlwLmgKK1NUUklQX01BR0lDICAgICAgICAgICAweDUzMDMgICAgICBzdHJpcCAgICAgICAgICAgICBkcml2ZXJzL25ldC9zdHJpcC5jCitYMjVfQVNZX01BR0lDICAgICAgICAgMHg1MzAzICAgICAgeDI1X2FzeSAgICAgICAgICAgZHJpdmVycy9uZXQveDI1X2FzeS5oCitTSVhQQUNLX01BR0lDICAgICAgICAgMHg1MzA0ICAgICAgc2l4cGFjayAgICAgICAgICAgZHJpdmVycy9uZXQvaGFtcmFkaW8vNnBhY2suaAorQVgyNV9NQUdJQyAgICAgICAgICAgIDB4NTMxNiAgICAgIGF4X2Rpc3AgICAgICAgICAgIGRyaXZlcnMvbmV0L21raXNzLmgKK1RUWV9NQUdJQyAgICAgICAgICAgICAweDU0MDEgICAgICB0dHlfc3RydWN0ICAgICAgICBpbmNsdWRlL2xpbnV4L3R0eS5oCitNR1NMX01BR0lDICAgICAgICAgICAgMHg1NDAxICAgICAgbWdzbF9pbmZvICAgICAgICAgZHJpdmVycy9jaGFyL3N5bmNsaW5rLmMKK1RUWV9EUklWRVJfTUFHSUMgICAgICAweDU0MDIgICAgICB0dHlfZHJpdmVyICAgICAgICBpbmNsdWRlL2xpbnV4L3R0eV9kcml2ZXIuaAorTUdTTFBDX01BR0lDICAgICAgICAgIDB4NTQwMiAgICAgIG1nc2xwY19pbmZvICAgICAgIGRyaXZlcnMvY2hhci9wY21jaWEvc3luY2xpbmtfY3MuYworVFRZX0xESVNDX01BR0lDICAgICAgIDB4NTQwMyAgICAgIHR0eV9sZGlzYyAgICAgICAgIGluY2x1ZGUvbGludXgvdHR5X2xkaXNjLmgKK1VTQl9TRVJJQUxfTUFHSUMgICAgICAweDY3MDIgICAgICB1c2Jfc2VyaWFsICAgICAgICBkcml2ZXJzL3VzYi9zZXJpYWwvdXNiLXNlcmlhbC5oCitGVUxMX0RVUExFWF9NQUdJQyAgICAgMHg2OTY5ICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVjL3R1bGlwL2RlMjEwNHguYworVVNCX0JMVUVUT09USF9NQUdJQyAgIDB4NmQwMiAgICAgIHVzYl9ibHVldG9vdGggICAgIGRyaXZlcnMvdXNiL2NsYXNzL2JsdWV0dHkuYworUkZDT01NX1RUWV9NQUdJQyAgICAgIDB4NmQwMiAgICAgICAgICAgICAgICAgICAgICAgIG5ldC9ibHVldG9vdGgvcmZjb21tL3R0eS5jCitVU0JfU0VSSUFMX1BPUlRfTUFHSUMgMHg3MzAxICAgICAgdXNiX3NlcmlhbF9wb3J0ICAgZHJpdmVycy91c2Ivc2VyaWFsL3VzYi1zZXJpYWwuaAorQ0dfTUFHSUMgICAgICAgICAgICAgIDB4MDAwOTAyNTUgIHVmc19jeWxpbmRlcl9ncm91cCBpbmNsdWRlL2xpbnV4L3Vmc19mcy5oCitSUE9SVF9NQUdJQyAgICAgICAgICAgMHgwMDUyNTAwMSAgcl9wb3J0ICAgICAgICAgICAgZHJpdmVycy9jaGFyL3JvY2tldF9pbnQuaAorTFNFTUFHSUMgICAgICAgICAgICAgIDB4MDUwOTE5OTggIGxzZSAgICAgICAgICAgICAgIGRyaXZlcnMvZmM0L2ZjLmMKK0dEVElPQ1RMX01BR0lDICAgICAgICAweDA2MDMwZjA3ICBnZHRoX2lvd3Jfc3RyICAgICBkcml2ZXJzL3Njc2kvZ2R0aF9pb2N0bC5oCitSSUVCTF9NQUdJQyAgICAgICAgICAgMHgwOTA1MTk5MCAgICAgICAgICAgICAgICAgICAgZHJpdmVycy9uZXQvYXRhcmlsYW5jZS5jCitOQkRfUkVRVUVTVF9NQUdJQyAgICAgMHgxMjU2MDk1MyAgbmJkX3JlcXVlc3QgICAgICAgaW5jbHVkZS9saW51eC9uYmQuaAorUkVEX01BR0lDMiAgICAgICAgICAgIDB4MTcwZmMyYTUgIChhbnkpICAgICAgICAgICAgIG1tL3NsYWIuYworQkFZQ09NX01BR0lDICAgICAgICAgIDB4MTk3MzA1MTAgIGJheWNvbV9zdGF0ZSAgICAgIGRyaXZlcnMvbmV0L2JheWNvbV9lcHAuYworSVNETl9YMjVJRkFDRV9NQUdJQyAgIDB4MWU3NWEyYjkgIGlzZG5feDI1aWZhY2VfcHJvdG9fZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyaXZlcnMvaXNkbi9pc2RuX3gyNWlmYWNlLmgKK0VDUF9NQUdJQyAgICAgICAgICAgICAweDIxNTA0MzQ1ICBjZGtlY3BzaWcgICAgICAgICBpbmNsdWRlL2xpbnV4L2Nkay5oCitMU09NQUdJQyAgICAgICAgICAgICAgMHgyNzA5MTk5NyAgbHNvICAgICAgICAgICAgICAgZHJpdmVycy9mYzQvZmMuYworTFNNQUdJQyAgICAgICAgICAgICAgIDB4MmEzYjRkMmEgIGxzICAgICAgICAgICAgICAgIGRyaXZlcnMvZmM0L2ZjLmMKK1dBTlBJUEVfTUFHSUMgICAgICAgICAweDQxNEM0NDUzICBzZGxhX3tkdW1wLGV4ZWN9ICBpbmNsdWRlL2xpbnV4L3dhbnBpcGUuaAorQ1NfQ0FSRF9NQUdJQyAgICAgICAgIDB4NDM1MjU1NTMgIGNzX2NhcmQgICAgICAgICAgIHNvdW5kL29zcy9jczQ2eHguYworTEFCRUxDTF9NQUdJQyAgICAgICAgIDB4NDg1NzQzNGMgIGxhYmVsY2xfaW5mb19zICAgIGluY2x1ZGUvYXNtL2lhNjQvc24vbGFiZWxjbC5oCitJU0ROX0FTWU5DX01BR0lDICAgICAgMHg0OTM0NEMwMSAgbW9kZW1faW5mbyAgICAgICAgaW5jbHVkZS9saW51eC9pc2RuLmgKK0NUQ19BU1lOQ19NQUdJQyAgICAgICAweDQ5MzQ0QzAxICBjdGNfdHR5X2luZm8gICAgICBkcml2ZXJzL3MzOTAvbmV0L2N0Y3R0eS5jCitJU0ROX05FVF9NQUdJQyAgICAgICAgMHg0OTM0NEMwMiAgaXNkbl9uZXRfbG9jYWxfcyAgZHJpdmVycy9pc2RuL2k0bC9pc2RuX25ldF9saWIuaAorU0FWRUtNU0dfTUFHSUMyICAgICAgIDB4NEI0RDUzNDcgIHNhdmVrbXNnICAgICAgICAgIGFyY2gvKi9hbWlnYS9jb25maWcuYworQ1NfU1RBVEVfTUFHSUMgICAgICAgIDB4NGM0ZjQ3NDkgIGNzX3N0YXRlICAgICAgICAgIHNvdW5kL29zcy9jczQ2eHguYworU0xBQl9DX01BR0lDICAgICAgICAgIDB4NGYxN2EzNmQgIGttZW1fY2FjaGUgICAgICAgIG1tL3NsYWIuYworQ09XX01BR0lDICAgICAgICAgICAgIDB4NGY0ZjRmNGQgIGNvd19oZWFkZXJfdjEgICAgIGFyY2gvdW0vZHJpdmVycy91YmRfdXNlci5jCitJODEwX0NBUkRfTUFHSUMgICAgICAgMHg1MDcyNjk2RSAgaTgxMF9jYXJkICAgICAgICAgc291bmQvb3NzL2k4MTBfYXVkaW8uYworVFJJREVOVF9DQVJEX01BR0lDICAgIDB4NTA3MjY5NkUgIHRyaWRlbnRfY2FyZCAgICAgIHNvdW5kL29zcy90cmlkZW50LmMKK1JPVVRFUl9NQUdJQyAgICAgICAgICAweDUyNGQ0MTU3ICB3YW5fZGV2aWNlICAgICAgICBbaW4gd2Fucm91dGVyLmggcHJlIDMuOV0KK1NBVkVLTVNHX01BR0lDMSAgICAgICAweDUzNDE1NjQ1ICBzYXZla21zZyAgICAgICAgICBhcmNoLyovYW1pZ2EvY29uZmlnLmMKK0dEQV9NQUdJQyAgICAgICAgICAgICAweDU4NDY0NTUyICBnZGEgICAgICAgICAgICAgICBhcmNoL21pcHMvaW5jbHVkZS9hc20vc24vZ2RhLmgKK1JFRF9NQUdJQzEgICAgICAgICAgICAweDVhMmNmMDcxICAoYW55KSAgICAgICAgICAgICBtbS9zbGFiLmMKK0VFUFJPTV9NQUdJQ19WQUxVRSAgICAweDVhYjQ3OGQyICBsYW5haV9kZXYgICAgICAgICBkcml2ZXJzL2F0bS9sYW5haS5jCitIRExDRFJWX01BR0lDICAgICAgICAgMHg1YWM2ZTc3OCAgaGRsY2Rydl9zdGF0ZSAgICAgaW5jbHVkZS9saW51eC9oZGxjZHJ2LmgKK1BDWFhfTUFHSUMgICAgICAgICAgICAweDVjNmRmMTA0ICBjaGFubmVsICAgICAgICAgICBkcml2ZXJzL2NoYXIvcGN4eC5oCitLVl9NQUdJQyAgICAgICAgICAgICAgMHg1ZjRiNTY1ZiAga2VybmVsX3ZhcnNfcyAgICAgYXJjaC9taXBzL2luY2x1ZGUvYXNtL3NuL2tsa2VybnZhcnMuaAorSTgxMF9TVEFURV9NQUdJQyAgICAgIDB4NjM2NTczNzMgIGk4MTBfc3RhdGUgICAgICAgIHNvdW5kL29zcy9pODEwX2F1ZGlvLmMKK1RSSURFTlRfU1RBVEVfTUFHSUMgICAweDYzNjU3MzczICB0cmllbnRfc3RhdGUgICAgICBzb3VuZC9vc3MvdHJpZGVudC5jCitNM19DQVJEX01BR0lDICAgICAgICAgMHg2NDZlNmY1MCAgbTNfY2FyZCAgICAgICAgICAgc291bmQvb3NzL21hZXN0cm8zLmMKK0ZXX0hFQURFUl9NQUdJQyAgICAgICAweDY1NzI2RjY2ICBmd19oZWFkZXIgICAgICAgICBkcml2ZXJzL2F0bS9mb3JlMjAwZS5oCitTTE9UX01BR0lDICAgICAgICAgICAgMHg2NzI2NzMyMSAgc2xvdCAgICAgICAgICAgICAgZHJpdmVycy9ob3RwbHVnL2NwcXBocC5oCitTTE9UX01BR0lDICAgICAgICAgICAgMHg2NzI2NzMyMiAgc2xvdCAgICAgICAgICAgICAgZHJpdmVycy9ob3RwbHVnL2FjcGlwaHAuaAorTE9fTUFHSUMgICAgICAgICAgICAgIDB4Njg3OTc1NDggIG5iZF9kZXZpY2UgICAgICAgIGluY2x1ZGUvbGludXgvbmJkLmgKK09QUk9GSUxFX01BR0lDICAgICAgICAweDZmNzA3MjZmICBzdXBlcl9ibG9jayAgICAgICBkcml2ZXJzL29wcm9maWxlL29wcm9maWxlZnMuaAorTTNfU1RBVEVfTUFHSUMgICAgICAgIDB4NzM0ZDcyNGQgIG0zX3N0YXRlICAgICAgICAgIHNvdW5kL29zcy9tYWVzdHJvMy5jCitWTUFMTE9DX01BR0lDICAgICAgICAgMHg4NzY1NDMyMCAgc25kX2FsbG9jX3RyYWNrICAgc291bmQvY29yZS9tZW1vcnkuYworS01BTExPQ19NQUdJQyAgICAgICAgIDB4ODc2NTQzMjEgIHNuZF9hbGxvY190cmFjayAgIHNvdW5kL2NvcmUvbWVtb3J5LmMKK1BXQ19NQUdJQyAgICAgICAgICAgICAweDg5REMxMEFCICBwd2NfZGV2aWNlICAgICAgICBkcml2ZXJzL3VzYi9tZWRpYS9wd2MuaAorTkJEX1JFUExZX01BR0lDICAgICAgIDB4OTY3NDQ2NjggIG5iZF9yZXBseSAgICAgICAgIGluY2x1ZGUvbGludXgvbmJkLmgKK0VOSTE1NV9NQUdJQyAgICAgICAgICAweGE1NGI4NzJkICBtaWR3YXlfZXByb20JICAgIGRyaXZlcnMvYXRtL2VuaS5oCitDT0RBX01BR0lDICAgICAgICAgICAgMHhDMERBQzBEQSAgY29kYV9maWxlX2luZm8gICAgaW5jbHVkZS9saW51eC9jb2RhX2ZzX2kuaAorRFBNRU1fTUFHSUMgICAgICAgICAgIDB4YzBmZmVlMTEgIGdkdF9wY2lfc3JhbSAgICAgIGRyaXZlcnMvc2NzaS9nZHRoLmgKK1lBTV9NQUdJQyAgICAgICAgICAgICAweEYxMEE3NjU0ICB5YW1fcG9ydCAgICAgICAgICBkcml2ZXJzL25ldC9oYW1yYWRpby95YW0uYworQ0NCX01BR0lDICAgICAgICAgICAgIDB4ZjI2OTFhZDIgIGNjYiAgICAgICAgICAgICAgIGRyaXZlcnMvc2NzaS9uY3I1M2M4eHguYworUVVFVUVfTUFHSUNfRlJFRSAgICAgIDB4ZjdlMWM5YTMgIHF1ZXVlX2VudHJ5ICAgICAgIGRyaXZlcnMvc2NzaS9hcm0vcXVldWUuYworUVVFVUVfTUFHSUNfVVNFRCAgICAgIDB4ZjdlMWNjMzMgIHF1ZXVlX2VudHJ5ICAgICAgIGRyaXZlcnMvc2NzaS9hcm0vcXVldWUuYworSFRCX0NNQUdJQyAgICAgICAgICAgIDB4RkVGQUZFRjEgIGh0Yl9jbGFzcyAgICAgICAgIG5ldC9zY2hlZC9zY2hfaHRiLmMKK05NSV9NQUdJQyAgICAgICAgICAgICAweDQ4NDE0ZDRkNDU1MjAxIG5taV9zICAgICAgICBhcmNoL21pcHMvaW5jbHVkZS9hc20vc24vbm1pLmgKKwor6K+35rOo5oSP77yM5Zyo5aOw6Z+z6K6w5b+G566h55CG5Lit5LuN54S25pyJ5LiA5Lqb54m55q6K55qE5Li65q+P5Liq6amx5Yqo5a6a5LmJ55qE6a2U5pyv5YC844CC5p+l55yLaW5jbHVkZS9zb3VuZC9zbmRtYWdpYy5o5p2l6I635Y+W5LuW5Lus5a6M5pW055qE5YiX6KGo5L+h5oGv44CC5b6I5aSaT1NT5aOw6Z+z6amx5Yqo5oul5pyJ6Ieq5bex5LuO5aOw5Y2hUENJIElE5p6E5bu655qE6a2U5pyv5YC8LeS7luS7rOS5n+ayoeacieiiq+WIl+WcqOi/memHjOOAggorCitJckRB5a2Q57O757uf5Lmf5L2/55So5LqG5aSn6YeP55qE6Ieq5bex55qE6a2U5pyv5YC877yM5p+l55yLaW5jbHVkZS9uZXQvaXJkYS9pcmRhLmjmnaXojrflj5bku5bku6zlrozmlbTnmoTkv6Hmga/jgIIKKworSEZT5piv5Y+m5aSW5LiA5Liq5q+U6L6D5aSn55qE5L2/55So6a2U5pyv5YC855qE5paH5Lu257O757ufLeS9oOWPr+S7peWcqGZzL2hmcy9oZnMuaOS4reaJvuWIsOS7luS7rOOAggpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi96aF9DTi9vb3BzLXRyYWNpbmcudHh0IGIvRG9jdW1lbnRhdGlvbi96aF9DTi9vb3BzLXRyYWNpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzMTI2MDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3poX0NOL29vcHMtdHJhY2luZy50eHQKQEAgLTAsMCArMSwyMTIgQEAKK0NoaW5lc2UgdHJhbnNsYXRlZCB2ZXJzaW9uIG9mIERvY3VtZW50YXRpb24vb29wcy10cmFjaW5nLnR4dAorCitJZiB5b3UgaGF2ZSBhbnkgY29tbWVudCBvciB1cGRhdGUgdG8gdGhlIGNvbnRlbnQsIHBsZWFzZSBjb250YWN0IHRoZQorb3JpZ2luYWwgZG9jdW1lbnQgbWFpbnRhaW5lciBkaXJlY3RseS4gIEhvd2V2ZXIsIGlmIHlvdSBoYXZlIGEgcHJvYmxlbQorY29tbXVuaWNhdGluZyBpbiBFbmdsaXNoIHlvdSBjYW4gYWxzbyBhc2sgdGhlIENoaW5lc2UgbWFpbnRhaW5lciBmb3IKK2hlbHAuICBDb250YWN0IHRoZSBDaGluZXNlIG1haW50YWluZXIgaWYgdGhpcyB0cmFuc2xhdGlvbiBpcyBvdXRkYXRlZAorb3IgaWYgdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIHRyYW5zbGF0aW9uLgorCitDaGluZXNlIG1haW50YWluZXI6IERhdmUgWW91bmcgPGhpZGF2ZS5kYXJrc3RhckBnbWFpbC5jb20+CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RvY3VtZW50YXRpb24vb29wcy10cmFjaW5nLnR4dCDnmoTkuK3mlofnv7vor5EKKwor5aaC5p6c5oOz6K+E6K665oiW5pu05paw5pys5paH55qE5YaF5a6577yM6K+355u05o6l6IGU57O75Y6f5paH5qGj55qE57u05oqk6ICF44CC5aaC5p6c5L2g5L2/55So6Iux5paHCivkuqTmtYHmnInlm7Dpmr7nmoTor53vvIzkuZ/lj6/ku6XlkJHkuK3mlofniYjnu7TmiqTogIXmsYLliqnjgILlpoLmnpzmnKznv7vor5Hmm7TmlrDkuI3lj4rml7bmiJbogIXnv7sKK+ivkeWtmOWcqOmXrumimO+8jOivt+iBlOezu+S4reaWh+eJiOe7tOaKpOiAheOAggorCivkuK3mlofniYjnu7TmiqTogIXvvJog5p2o55GeIERhdmUgWW91bmcgPGhpZGF2ZS5kYXJrc3RhckBnbWFpbC5jb20+CivkuK3mlofniYjnv7vor5HogIXvvJog5p2o55GeIERhdmUgWW91bmcgPGhpZGF2ZS5kYXJrc3RhckBnbWFpbC5jb20+CivkuK3mlofniYjmoKHor5HogIXvvJog5p2O6ZizIExpIFlhbmcgPGxlb0B6aC1rZXJuZWwub3JnPgorICAgICAgICAgICAgICAg546L6IGqIFdhbmcgQ29uZyA8eGl5b3Uud2FuZ2NvbmdAZ21haWwuY29tPgorCivku6XkuIvkuLrmraPmlocKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCivms6jmhI/vvJoga3N5bW9vcHMg5ZyoMi425Lit5piv5rKh5pyJ55So55qE44CCIOivt+S7peWOn+acieagvOW8j+S9v+eUqE9vcHMo5p2l6IeqZG1lc2fvvIznrYnnrYkp44CCCivlv73nlaXku7vkvZXov5nmoLfpgqPmoLflhbPkuo7igJzop6PnoIFPb3Bz4oCd5oiW6ICF4oCc6YCa6L+Ha3N5bW9vcHPov5DooYzigJ3nmoTmlofmoaPjgIIg5aaC5p6c5L2g6LS05Ye66L+Q6KGM6L+HCitrc3ltb29wc+eahOadpeiHqjIuNueahE9vcHPvvIzkurrku6zlj6rkvJrorqnkvaDph43otLTkuIDmrKHjgIIKKwor5b+r6YCf5oC757uTCistLS0tLS0tLS0tLS0tCisKK+WPkeeOsE9vcHPlubblj5HpgIHnu5nnnIvkvLznm7jlhbPnmoTlhoXmoLjpoobln5/nmoTnu7TmiqTogIXjgILliKvlpKrmi4Xlv4Plr7nkuI3kuIrlj7fjgILlpoLmnpzkvaDkuI3noa7lrprlsLHlj5Hnu5kKK+WSjOS9oOaJgOWBmueahOS6i+aDheebuOWFs+eahOS7o+eggeeahOi0n+i0o+S6uuOAgiDlpoLmnpzlj6/ph43njrDor5XnnYDmj4/ov7DmgI7moLfph43mnoTjgIIg6YKj55Sa6Iez5q+Ub29wc+abtOaciQor5Lu35YC844CCCisKK+WmguaenOS9oOWvueS6juWPkemAgee7meiwgeS4gOaXoOaJgOefpe+8jCDlj5Hnu5lsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3Jn44CC5oSf6LCi5L2g5biu5YqpTGludXgKK+WwveWPr+iDveWcsOeos+WumuOAggorCitPb3Bz5Zyo5ZOq6YeMPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCivpgJrluLhPb3Bz5paH5pys55Sxa2xvZ2Tku47lhoXmoLjnvJPlhrLljLrph4zor7vlj5blubbkvKDnu5lzeXNsb2dk77yM55Sxc3lzbG9nZOWGmeWIsHN5c2xvZ+aWh+S7tuS4re+8jAor5YW45Z6L5Zyw5pivL3Zhci9sb2cvbWVzc2FnZXMo5L6d6LWW5LqOL2V0Yy9zeXNsb2cuY29uZinjgILmnInml7ZrbG9nZOW0qea6g+S6hizov5nnp43mg4XlhrXkuIvkvaAKK+iDveWkn+i/kOihjGRtZXNnID4gZmlsZeadpeS7juWGheaguOe8k+WGsuWMuuS4reivu+WPluaVsOaNruW5tuS/neWtmOS4i+adpeOAgiDlkKbliJnkvaDlj6/ku6UKK2NhdCAvcHJvYy9rbXNnID4gZmlsZe+8jCDnhLbogIzkvaDlv4Xpobvku4vlhaXkuK3mraLkvKDovpPvvIwga21zZ+aYr+S4gOS4quKAnOawuOS4jee7k+adn+eahOaWh+S7tuKAneOAguWmggor5p6c5py65Zmo5bSp5rqD5Z2P5Yiw5L2g5LiN6IO96L6T5YWl5ZG95Luk5oiW6ICF56OB55uY5LiN5Y+v55So6YKj5LmI5L2g5pyJ5LiJ56eN6YCJ5oupOi0KKwor77yIMe+8iSDmiYvmioTlsY/luZXkuIrnmoTmlofmnKzlvoXmnLrlmajph43lkK/lkI7lho3ovpPlhaXorqHnrpfmnLrjgIIg6bq754Om5L2G5aaC5p6c5rKh5pyJ6ZKI5a+55bSp5rqD55qE5YeG5aSH77yMCivov5nmmK/ku4XmnInnmoTpgInmi6njgIIg5Y+m5aSW77yM5L2g5Y+v5Lul55So5pWw56CB55u45py65oqK5bGP5bmV5ouN5LiL5p2lLeS4jeWkquWlve+8jOS9huavlOayoeacieW8uuOAgiDlpoLmnpzkv6EKK+aBr+a7muWKqOWIsOS6hue7iOerr+eahOS4iumdou+8jOS9oOS8muWPkeeOsOS7pemrmOWIhui+qeeOh+WQr+WKqO+8iOavlOWmgu+8jHZnYT03OTHvvInkvJrorqnkvaDor7vliLDmm7TlpJrnmoTmlocKK+acrOOAgu+8iOazqOaEj++8mui/memcgOimgXZlc2FmYu+8jOaJgOS7peWvueKAmOaXqeacn+KAmeeahG9vcHPmsqHmnInluK7liqnvvIkKKwor77yIMu+8ieeUqOS4suWPo+e7iOerr+WQr+WKqO+8iOivt+WPgueci0RvY3VtZW50YXRpb24vc2VyaWFsLWNvbnNvbGUudHh077yJ77yM6L+Q6KGM5LiA5LiqbnVsbAorbW9kZW3liLDlj6bkuIDlj7DmnLrlmajlubbnlKjkvaDllpzmrKLnmoTpgJrorq/lt6Xlhbfojrflj5bovpPlh7rjgIJNaW5pY29t5bel5L2c5Zyw5b6I5aW944CCCisKK++8iDPvvInkvb/nlKhLZHVtcO+8iOivt+WPgueci0RvY3VtZW50YXRpb24va2R1bXAva2R1bXAudHh077yJ77yMCivkvb/nlKjlnKhEb2N1bWVudGF0aW9uL2tkdW1wL2dkYm1hY3Jvcy50eHTkuK3lrprkuYnnmoRkbWVzZyBnZGLlro/vvIzku47ml6fnmoTlhoXlrZjkuK3mj5Dlj5blhoXmoLgKK+eOr+W9oue8k+WGsuWMuuOAggorCivlrozmlbTkv6Hmga8KKy0tLS0tLS0tLS0tLS0tLS0KKwor5rOo5oSP77ya5Lul5LiL5p2l6Ieq5LqOTGludXPnmoTpgq7ku7bpgILnlKjkuo4yLjTlhoXmoLjjgIIg5oiR5Zug5Li65Y6G5Y+y5Y6f5Zug5L+d55WZ5LqG5a6D77yM5bm25LiU5Zug5Li65YW25LitCivkuIDkupvkv6Hmga/ku43nhLbpgILnlKjjgIIg54m55Yir5rOo5oSP55qE5piv77yM6K+35b+955Wl5Lu75L2Va3N5bW9vcHPnmoTlvJXnlKjjgIIKKworRnJvbTogTGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQG9zZGwub3JnPgorCivmgI7moLfot5/ouKpPb3BzLi4gW+WOn+WPkeWIsGxpbnV4LWtlcm5lbOeahOS4gOWwgemCruS7tl0KKwor5Li76KaB55qE56qN6Zeo5piv5pyJ5LqU5bm05ZKM6L+Z5Lqb54Om5Lq655qEb29wc+a2iOaBr+aJk+S6pOmBk+eahOe7j+mqjDstKQorCivlrp7pmYXkuIrvvIzkvaDmnInlip7ms5Xkvb/lroPmm7TnroDljZXjgILmiJHmnInkuKTkuKrkuI3lkIznmoTmlrnms5XvvJoKKworCWdkYiAvdXNyL3NyYy9saW51eC92bWxpbnV4CisJZ2RiPiBkaXNhc3NlbWJsZSA8b2ZmZW5kaW5nX2Z1bmN0aW9uPgorCivpgqPmmK/lj5HnjrDpl67popjnmoTnroDljZXlip7ms5XvvIzoh7PlsJHlpoLmnpxidWfmiqXlkYrlgZrnmoTlpb3nmoTmg4XlhrXkuIvvvIjosaHov5nkuKrkuIDmoLct6L+Q6KGMa3N5bW9vcHMKK+W+l+WIsG9vcHPlj5HnlJ/nmoTlh73mlbDlj4rlh73mlbDlhoXnmoTlgY/np7vvvInjgIIKKwor5ZOm77yM5aaC5p6c5oql5ZGK5Y+R55Sf55qE5YaF5qC45Lul55u45ZCM55qE57yW6K+R5Zmo5ZKM55u45Ly855qE6YWN572u57yW6K+R5a6D5Lya5pyJ5biu5Yqp55qE44CCCisKK+WPpuS4gOS7tuimgeWBmueahOS6i+aYr+WPjeaxh+e8lmJ1Z+aKpeWRiueahOKAnENvZGXigJ3pg6jliIbvvJprc3ltb29wc+S5n+S8mueUqOato+ehrueahOW3peWFt+adpeWBmui/meS7tuS6i++8jAor5L2G5aaC5p6c5rKh5pyJ6YKj5Lqb5bel5YW35L2g5Y+v5Lul5YaZ5LiA5Liq5YK756iL5bqP77yaCisKKwljaGFyIHN0cltdID0gIlx4WFhceFhYXHhYWC4uLiI7CisJbWFpbigpe30KKwor5bm255SoZ2NjIC1n57yW6K+R5a6D54S25ZCO5omn6KGM4oCcZGlzYXNzZW1ibGUgc3Ry4oCd77yIWFjpg6jliIbmmK/nlLFPb3Bz5oql5ZGK55qE5YC8LeS9oOWPr+S7peS7heWJquWIhwor57KY6LS05bm255So4oCcXHjigJ3mm7/mjaLnqbrmoLwt5oiR5bCx5piv6L+Z5LmI5YGa55qE77yM5Zug5Li65oiR5oeS5b6X5YaZ56iL5bqP6Ieq5Yqo5YGa6L+Z5LiA5YiH77yJ44CCCisKK+WPpuWklu+8jOS9oOWPr+S7peeUqHNjcmlwdHMvZGVjb2RlY29kZei/meS4qnNoZWxs6ISa5pys44CC5a6D55qE5L2/55So5pa55rOV5piv77yaCitkZWNvZGVjb2RlIDwgb29wcy50eHQKKwor4oCcQ29kZeKAneS5i+WQjueahOWNgeWFrei/m+WItuWtl+iKguWPr+iDve+8iOWcqOafkOS6m+aetuaehOS4iu+8ieacieS4gOS6m+W9k+WJjeaMh+S7pOS5i+WJjeeahOaMh+S7pOWtl+iKguS7peWPigor5b2T5YmN5ZKM5LmL5ZCO55qE5oyH5Luk5a2X6IqCCisKK0NvZGU6IGY5IDBmIDhkIGY5IDAwIDAwIDAwIDhkIDQyIDBjIGU4IGRkIDI2IDExIGM3IGExIDYwIGVhIDJiIGY5IDhiIDUwIDA4IGExCis2NCBlYSAyYiBmOSA4ZCAzNCA4MiA4YiAxZSA4NSBkYiA3NCA2ZCA4YiAxNSA2MCBlYSAyYiBmOSA8OGI+IDQzIDA0IDM5IDQyIDU0Cis3ZSAwNCA0MCA4OSA0MiA1NCA4YiA0MyAwNCAzYiAwNSAwMCBmNiA1MiBjMAorCivmnIDlkI7vvIzlpoLmnpzkvaDmg7Pnn6XpgZPku6PnoIHmnaXoh6rlk6rph4zvvIzkvaDlj6/ku6XvvJoKKworCWNkIC91c3Ivc3JjL2xpbnV4CisJbWFrZSBmcy9idWZmZXIucyAJIyDmiJbku7vkvZXkuqfnlJ9CVUfnmoTmlofku7YKKwor54S25ZCO5L2g5Lya5q+UZ2Ri5Y+N5rGH57yW5pu05riF5qWa55qE55+l6YGT5Y+R55Sf5LqG5LuA5LmI44CCCisKK+eOsOWcqO+8jOmXrumimOaYr+aKiuS9oOaJgOaLpeacieeahOaJgOacieaVsOaNrue7k+WQiOi1t+adpe+8mkPmupDnoIHvvIjlhbPkuo7lroPlupTor6XmgI7moLfnmoTkuIDoiKznn6Xor4bvvInvvIwKK+axh+e8luS7o+eggeWPiuWFtuWPjeaxh+e8luW+l+WIsOeahOS7o+egge+8iOWPpuWklui/mOacieS7juKAnG9vcHPigJ3mtojmga/lvpfliLDnmoTlr4TlrZjlmajnirbmgIEt5a+55LqG6Kej5q+B5Z2P55qECivmjIfpkojmnInnlKjvvIzogIzkuJTlvZPkvaDmnInkuobmsYfnvJbku6PnoIHkvaDkuZ/og73mi7/lhbblroPnmoTlr4TlrZjlmajlkozku7vkvZXlroPku6zlr7nlupTnmoRD6KGo6L6+5byP5YGa5Yy56YWNCivvvInjgIIKKwor5a6e6ZmF5LiK77yM5L2g5LuF6ZyA55yL55yL5ZOq6YeM5LiN5Yy56YWN77yI6L+Z5Liq5L6L5a2Q5piv4oCcQ29kZeKAneWPjeaxh+e8luWSjOe8luivkeWZqOeUn+aIkOeahOS7o+eggeS4jeWMuemFje+8ieOAggor54S25ZCO5L2g6aG76KaB5om+5Ye65Li65LuA5LmI5LiN5Yy56YWN44CC6YCa5bi45b6I566A5Y2VLeS9oOeci+WIsOS7o+eggeS9v+eUqOS6huepuuaMh+mSiOeEtuWQjuS9oOeci+S7o+eggeaDs+efpemBkwor56m65oyH6ZKI5piv5oCO5LmI5Ye6546w55qE77yM6L+Y5pyJ5qOA5p+l5a6D5piv5ZCm5ZCI5rOVLi4KKwor546w5Zyo77yM5aaC5p6c5piO55m96L+Z5piv5LiA6aG56ICX5pe255qE5bel5L2c6ICM5LiU6ZyA6KaB5LiA5LiB54K55YS/55qE5LiT5b+D77yM5rKh6ZSZ44CC6L+Z5bCx5piv5oiR5Li65LuA5LmI5aSn5aSaCivlj6rmmK/lv73nlaXpgqPkupvmsqHmnInnrKblj7fooajkv6Hmga/nmoTltKnmuoPmiqXlkYrnmoTljp/lm6DvvJrnroDljZXnmoTor7TlpKrpmr7mn6Xmib7kuobvvIjmiJHmnInkuIDkupsKK+eoi+W6j+eUqOS6juWcqOWGheaguOS7o+eggeauteS4reaQnOe0oueJueWumueahOaooeW8j++8jOiAjOS4lOacieaXtuaIkeS5n+W3sue7j+iDveaJvuWHuumCo+S6m+W0qea6g+eahOWcsOaWue+8jOS9huaYrwor5LuF5LuF5piv5om+5Ye65q2j56Gu55qE5bqP5YiX5Lmf56Gu5a6e6ZyA6KaB55u45b2T5omO5a6e55qE5YaF5qC455+l6K+G77yJCisKK1/mnInml7Zf5Lya5Y+R55Sf6L+Z56eN5oOF5Ya177yM5oiR5LuF55yL5Yiw5bSp5rqD5Lit55qE5Y+N5rGH57yW5Luj56CB5bqP5YiX77yMIOeEtuWQjuaIkemprOS4iuWwseaYjueZvemXrumimOWHuuWcqAor5ZOq6YeM44CC6L+Z5pe25oiR5omN5oSP6K+G5Yiw6Ieq5bex5bmy6L+Z5Liq5bel5L2c5bey57uP5aSq6ZW/5pe26Ze05LqGOy0pCisKKwkJTGludXMKKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK+WFs+S6jk9vcHPot5/ouKrnmoTms6jop6PvvJoKKwor5Li65LqG5biu5YqpTGludXPlkozlhbblroPlhoXmoLjlvIDlj5HogIXvvIxrbG9nZOe6s+WFpeS6huWkp+mHj+eahOaUr+aMgeadpeWkhOeQhuS/neaKpOmUmeivr+OAguS4uuS6huaLpeacieWvuQor5Zyw5Z2A6Kej5p6Q55qE5a6M5pW05pSv5oyB6Iez5bCR5bqU6K+l5L2/55SoMS4zLXBsM+eahHN5c2tsb2dk5YyF44CCCisKK+W9k+S/neaKpOmUmeivr+WPkeeUn+aXtu+8jGtsb2dk5a6I5oqk6L+b56iL6Ieq5Yqo5oqK5YaF5qC45pel5b+X5L+h5oGv5Lit55qE6YeN6KaB5Zyw5Z2A57+76K+R5oiQ5a6D5Lus55u45bqU55qE56ymCivlj7fjgIIKKwora2xvZ2TmiafooYzkuKTnp43nsbvlnovnmoTlnLDlnYDop6PmnpDjgILpppblhYjmmK/pnZnmgIHnv7vor5HlhbbmrKHmmK/liqjmgIHnv7vor5HjgILpnZnmgIHnv7vor5Hlkoxrc3ltb29wcwor5LiA5qC35L2/55SoU3lzdGVtLm1hcOaWh+S7tuOAguS4uuS6huWBmumdmeaAgee/u+ivkWtsb2dk5a6I5oqk6L+b56iL5b+F6aG75Zyo5Yid5aeL5YyW5pe26IO95om+5Yiwc3lzdGVtCittYXDmlofku7bjgILlhbPkuo5rbG9nZOaAjuagt+aQnOe0om1hcOaWh+S7tuivt+WPgueci2tsb2dk5omL5YaM6aG144CCCisKK+WKqOaAgeWcsOWdgOe/u+ivkeWcqOS9v+eUqOWGheaguOWPr+ijhei9veaooeWdl+aXtuW+iOmHjeimgeOAgiDlm6DkuLrlhoXmoLjmqKHlnZfnmoTlhoXlrZjmmK/ku47lhoXmoLjliqjmgIHlhoXlrZjmsaAKK+mHjOWIhumFjeeahO+8jOaJgOS7peS4jeeuoeaYr+aooeWdl+W8gOWni+S9jee9rui/mOaYr+aooeWdl+S4reWHveaVsOWSjOespuWPt+eahOS9jee9rumDveS4jeaYr+WbuuWumueahOOAggorCivlhoXmoLjmlK/mjIHlhYHorrjnqIvluo/lhrPlrproo4Xovb3lk6rkupvmqKHlnZflkozlroPku6zlnKjlhoXlrZjkuK3kvY3nva7nmoTns7vnu5/osIPnlKjjgILkvb/nlKjov5nkupvns7vnu5/osIPnlKgKK2tsb2dk5a6I5oqk6L+b56iL55Sf5oiQ5LiA5byg56ym5Y+36KGo55So5LqO6LCD6K+V5Y+R55Sf5Zyo5Y+v6KOF6L295qih5Z2X5Lit55qE5L+d5oqk6ZSZ6K+v44CCCisKK+iHs+WwkWtsb2dk5Lya5o+Q5L6b5Lqn55Sf5L+d5oqk6ZSZ6K+v55qE5qih5Z2X5ZCN44CC6L+Y5Y+v5pyJ6aKd5aSW55qE56ym5Y+35L+h5oGv5L6b5Y+v6KOF6L295qih5Z2X5byA5Y+R6ICF6YCJ5oupCivku6Xku47mqKHlnZfkuK3ovpPlh7rnrKblj7fkv6Hmga/jgIIKKwor5Zug5Li65YaF5qC45qih5Z2X546v5aKD5Y+v6IO95piv5Yqo5oCB55qE77yM5omA5Lul5b+F6aG75pyJ5LiA56eN5py65Yi25b2T5qih5Z2X546v5aKD5Y+R55Sf5pS55Y+Y5pe25p2l6YCa55+la2xvZ2QKK+WuiOaKpOi/m+eoi+OAgiDmnInkuIDkupvlj6/nlKjnmoTlkb3ku6TooYzpgInpobnlhYHorrhrbG9nZOWQkeW9k+WJjeaJp+ihjOS4reeahOWuiOaKpOi/m+eoi+WPkemAgeS/oeWPt++8jOWRiuefpeespgor5Y+35L+h5oGv5bqU6K+l6KKr5Yi35paw5LqG44CCIOabtOWkmuS/oeaBr+ivt+WPgueci2tsb2dk5omL5YaM6aG144CCCisKK3N5c2tsb2dk5Y+R5biD5pe25YyF5ZCr5LiA5Liq6KGl5LiB5L+u5pS55LqGbW9kdWxlcy0yLjAuMOWMhe+8jOaXoOiuuuS9leaXtuS4gOS4quaooeWdl+ijhei9veaIluiAheWNuOi9vemDvQor5Lya6Ieq5Yqo5ZCRa2xvZ2Tlj5HpgIHkv6Hlj7fjgILmiZPkuIrov5nkuKrooaXkuIHmj5Dkvpvkuoblv4XopoHnmoTlr7nosIPor5Xlj5HnlJ/kuo7lhoXmoLjlj6/oo4Xovb3mqKHlnZfnmoTkv53miqQKK+mUmeivr+eahOaXoOe8neaUr+aMgeOAggorCivku6XkuIvmmK/ooqtrbG9nZOWkhOeQhui/h+eahOWPkeeUn+WcqOWPr+ijhei9veaooeWdl+S4reeahOS4gOS4quS/neaKpOmUmeivr+S+i+WtkO+8mgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBdWcgMjkgMDk6NTE6MDEgYmxpemFyZCBrZXJuZWw6IFVuYWJsZSB0byBoYW5kbGUga2VybmVsIHBhZ2luZyByZXF1ZXN0IGF0IHZpcnR1YWwgYWRkcmVzcyBmMTVlOTdjYworQXVnIDI5IDA5OjUxOjAxIGJsaXphcmQga2VybmVsOiBjdXJyZW50LT50c3MuY3IzID0gMDA2MmQwMDAsICVjcjMgPSAwMDYyZDAwMAorQXVnIDI5IDA5OjUxOjAxIGJsaXphcmQga2VybmVsOiAqcGRlID0gMDAwMDAwMDAKK0F1ZyAyOSAwOTo1MTowMSBibGl6YXJkIGtlcm5lbDogT29wczogMDAwMgorQXVnIDI5IDA5OjUxOjAxIGJsaXphcmQga2VybmVsOiBDUFU6ICAgIDAKK0F1ZyAyOSAwOTo1MTowMSBibGl6YXJkIGtlcm5lbDogRUlQOiAgICAwMDEwOltvb3BzOl9vb3BzKzE2LzM4NjhdCitBdWcgMjkgMDk6NTE6MDEgYmxpemFyZCBrZXJuZWw6IEVGTEFHUzogMDAwMTAyMTIKK0F1ZyAyOSAwOTo1MTowMSBibGl6YXJkIGtlcm5lbDogZWF4OiAzMTVlOTdjYyAgIGVieDogMDAzYTZmODAgICBlY3g6IDAwMWJlNzdiICAgZWR4OiAwMDIzN2MwYworQXVnIDI5IDA5OjUxOjAxIGJsaXphcmQga2VybmVsOiBlc2k6IDAwMDAwMDAwICAgZWRpOiBiZmZmZmRiMyAgIGVicDogMDA1ODlmOTAgICBlc3A6IDAwNTg5ZjhjCitBdWcgMjkgMDk6NTE6MDEgYmxpemFyZCBrZXJuZWw6IGRzOiAwMDE4ICAgZXM6IDAwMTggICBmczogMDAyYiAgIGdzOiAwMDJiICAgc3M6IDAwMTgKK0F1ZyAyOSAwOTo1MTowMSBibGl6YXJkIGtlcm5lbDogUHJvY2VzcyBvb3BzX3Rlc3QgKHBpZDogMzM3NCwgcHJvY2VzcyBucjogMjEsIHN0YWNrcGFnZT0wMDU4OTAwMCkKK0F1ZyAyOSAwOTo1MTowMSBibGl6YXJkIGtlcm5lbDogU3RhY2s6IDMxNWU5N2NjIDAwNTg5Zjk4IDAxMDBiMGI0IGJmZmZmZWQ0IDAwMTJlMzhlIDAwMjQwYzY0IDAwM2E2ZjgwIDAwMDAwMDAxCitBdWcgMjkgMDk6NTE6MDEgYmxpemFyZCBrZXJuZWw6ICAgICAgICAwMDAwMDAwMCAwMDIzNzgxMCBiZmZmZmYwMCAwMDEwYTdmYSAwMDAwMDAwMyAwMDAwMDAwMSAwMDAwMDAwMCBiZmZmZmYwMAorQXVnIDI5IDA5OjUxOjAxIGJsaXphcmQga2VybmVsOiAgICAgICAgYmZmZmZkYjMgYmZmZmZlZDQgZmZmZmZmZGEgMDAwMDAwMmIgMDAwNzAwMmIgMDAwMDAwMmIgMDAwMDAwMmIgMDAwMDAwMzYKK0F1ZyAyOSAwOTo1MTowMSBibGl6YXJkIGtlcm5lbDogQ2FsbCBUcmFjZTogW29vcHM6X29vcHNfaW9jdGwrNDgvODBdIFtfc3lzX2lvY3RsKzI1NC8yNzJdIFtfc3lzdGVtX2NhbGwrODIvMTI4XQorQXVnIDI5IDA5OjUxOjAxIGJsaXphcmQga2VybmVsOiBDb2RlOiBjNyAwMCAwNSAwMCAwMCAwMCBlYiAwOCA5MCA5MCA5MCA5MCA5MCA5MCA5MCA5MCA4OSBlYyA1ZCBjMworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0RyLiBHLlcuIFdldHRzdGVpbiAgICAgICAgICAgT25jb2xvZ3kgUmVzZWFyY2ggRGl2LiBDb21wdXRpbmcgRmFjaWxpdHkKK1JvZ2VyIE1hcmlzIENhbmNlciBDZW50ZXIgICAgSU5URVJORVQ6IGdyZWdAd2luZC5ybWNjLmNvbQorODIwIDR0aCBTdC4gTi4KK0ZhcmdvLCBORCAgNTgxMjIKK1Bob25lOiA3MDEtMjM0LTc1NTYKKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK+WPl+axoeafk+eahOWGheaguAorCivkuIDkuptvb3Bz5oql5ZGK5Zyo56iL5bqP6K6w5pWw5Zmo5LmL5ZCO5YyF5ZCr5a2X56ym5LiyJ1RhaW50ZWQ6ICfjgILov5nooajmmI7lhoXmoLjlt7Lnu4/ooqvkuIDkupvkuJzopb/nu5nmsaEKK+afk+S6huOAgiDor6XlrZfnrKbkuLLkuYvlkI7ntKfot5/nnYDkuIDns7vliJfnmoTkvY3nva7mlY/mhJ/nmoTlrZfnrKbvvIzmr4/kuKrku6PooajkuIDkuKrnibnlrprnmoTmsaHmn5PlgLzjgIIKKworICAx77yaJ0cn5aaC5p6c5omA5pyJ6KOF6L2955qE5qih5Z2X6YO95pyJR1BM5oiW55u45a6555qE6K645Y+v6K+B77yMJ1An5aaC5p6c6KOF6L295LqG5Lu75L2V55qE5LiT5pyJ5qih5Z2X44CCCivmsqHmnInmqKHlnZdNT0RVTEVfTElDRU5TReaIluiAheW4puaciWluc21vZOiupOS4uuaYr+S4jkdQTOS4jeebuOWuueeahOeahE1PRFVMRV9MSUNFTlNF55qE5qih5Z2X6KKrCivorqTlrprmmK/kuJPmnInnmoTjgIIKKworICAy77yaJ0Yn5aaC5p6c5pyJ5Lu75L2V6YCa6L+H4oCcaW5zbW9kIC1m4oCd6KKr5by65Yi26KOF6L2955qE5qih5Z2X77yMJyAn5aaC5p6c5omA5pyJ5qih5Z2X6YO96KKr5q2j5bi46KOF6L2944CCCisKKyAgM++8midTJ+WmguaenG9vcHPlj5HnlJ/lnKhTTVDlhoXmoLjkuK3vvIzov5DooYzkuo7msqHmnInor4HmmI7lronlhajov5DooYzlpJrlpITnkIblmajnmoTnoazku7bjgIIg5b2T5YmN6L+Z56eNCivmg4XlhrXku4XpmZDkuo7lh6Dnp43kuI3mlK/mjIFTTVDnmoTpgJ/pvpnlpITnkIblmajjgIIKKworICA077yaJ1In5aaC5p6c5qih5Z2X6YCa6L+H4oCcaW5zbW9kIC1m4oCd6KKr5by65Yi26KOF6L2977yMJyAn5aaC5p6c5omA5pyJ5qih5Z2X6YO96KKr5q2j5bi46KOF6L2944CCCisKKyAgNe+8midNJ+WmguaenOS7u+S9leWkhOeQhuWZqOaKpeWRiuS6huacuuWZqOajgOafpeW8guW4uO+8jCcgJ+WmguaenOayoeacieWPkeeUn+acuuWZqOajgOafpeW8guW4uOOAggorCisgIDbvvJonQiflpoLmnpzpobXph4rmlL7lh73mlbDlj5HnjrDkuobkuIDkuKrplJnor6/nmoTpobXlvJXnlKjmiJbogIXkuIDkupvpnZ7pooTmnJ/nmoTpobXmoIflv5fjgIIKKworICA377yaJ1Un5aaC5p6c55So5oi35oiW6ICF55So5oi35bqU55So56iL5bqP54m55Yir6K+35rGC6K6+572u5rGh5p+T5qCH5b+X77yM5ZCm5YiZJyAn44CCCisKKyAgOO+8midEJ+WmguaenOWGheaguOWImuWImuatu+aOie+8jOavlOWmguaciU9PUFPmiJbogIVCVUfjgIIKKwor5L2/55SoJ1RhaW50ZWQ6ICflrZfnrKbkuLLnmoTkuLvopoHljp/lm6DmmK/opoHlkYror4nlhoXmoLjosIPor5XogIXvvIzov5nmmK/lkKbmmK/kuIDkuKrlubLlh4DnmoTlhoXmoLjkuqbmiJblj5EKK+eUn+S6huS7u+S9leeahOS4jeato+W4uOeahOS6i+OAguaxoeafk+aYr+awuOS5heeahO+8muWNs+S9v+WHuumUmeeahOaooeWdl+W3sue7j+iiq+WNuOi9veS6hu+8jOaxoeafk+WAvOS7jeeEtuWtmOWcqO+8jAor5Lul6KGo5piO5YaF5qC45LiN5YaN5YC85b6X5L+h5Lu744CCCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3poX0NOL3NwYXJzZS50eHQgYi9Eb2N1bWVudGF0aW9uL3poX0NOL3NwYXJzZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MxNDRlNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vemhfQ04vc3BhcnNlLnR4dApAQCAtMCwwICsxLDEwMCBAQAor77u/Q2hpbmVzZSB0cmFuc2xhdGVkIHZlcnNpb24gb2YgRG9jdW1lbnRhdGlvbi9zcGFyc2UudHh0CisKK0lmIHlvdSBoYXZlIGFueSBjb21tZW50IG9yIHVwZGF0ZSB0byB0aGUgY29udGVudCwgcGxlYXNlIGNvbnRhY3QgdGhlCitvcmlnaW5hbCBkb2N1bWVudCBtYWludGFpbmVyIGRpcmVjdGx5LiAgSG93ZXZlciwgaWYgeW91IGhhdmUgYSBwcm9ibGVtCitjb21tdW5pY2F0aW5nIGluIEVuZ2xpc2ggeW91IGNhbiBhbHNvIGFzayB0aGUgQ2hpbmVzZSBtYWludGFpbmVyIGZvcgoraGVscC4gIENvbnRhY3QgdGhlIENoaW5lc2UgbWFpbnRhaW5lciBpZiB0aGlzIHRyYW5zbGF0aW9uIGlzIG91dGRhdGVkCitvciBpZiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgdHJhbnNsYXRpb24uCisKK0NoaW5lc2UgbWFpbnRhaW5lcjogTGkgWWFuZyA8bGVvQHpoLWtlcm5lbC5vcmc+CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0RvY3VtZW50YXRpb24vc3BhcnNlLnR4dCDnmoTkuK3mlofnv7vor5EKKwor5aaC5p6c5oOz6K+E6K665oiW5pu05paw5pys5paH55qE5YaF5a6577yM6K+355u05o6l6IGU57O75Y6f5paH5qGj55qE57u05oqk6ICF44CC5aaC5p6c5L2g5L2/55So6Iux5paHCivkuqTmtYHmnInlm7Dpmr7nmoTor53vvIzkuZ/lj6/ku6XlkJHkuK3mlofniYjnu7TmiqTogIXmsYLliqnjgILlpoLmnpzmnKznv7vor5Hmm7TmlrDkuI3lj4rml7bmiJbogIXnv7sKK+ivkeWtmOWcqOmXrumimO+8jOivt+iBlOezu+S4reaWh+eJiOe7tOaKpOiAheOAggorCivkuK3mlofniYjnu7TmiqTogIXvvJog5p2O6ZizICBMaSBZYW5nIDxsZW9Aemgta2VybmVsLm9yZz4KK+S4reaWh+eJiOe/u+ivkeiAhe+8miDmnY7pmLMgIExpIFlhbmcgPGxlb0B6aC1rZXJuZWwub3JnPgorCisKK+S7peS4i+S4uuato+aWhworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NvcHlyaWdodCAyMDA0IExpbnVzIFRvcnZhbGRzCitDb3B5cmlnaHQgMjAwNCBQYXZlbCBNYWNoZWsgPHBhdmVsQHVjdy5jej4KK0NvcHlyaWdodCAyMDA2IEJvYiBDb3BlbGFuZCA8bWVAYm9iY29wZWxhbmQuY29tPgorCivkvb/nlKggc3BhcnNlIOW3peWFt+WBmuexu+Wei+ajgOafpQorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworIl9fYml0d2lzZSIg5piv5LiA56eN57G75Z6L5bGe5oCn77yM5omA5Lul5L2g5bqU6K+l6L+Z5qC35L2/55So5a6D77yaCisKKyAgICAgICAgdHlwZWRlZiBpbnQgX19iaXR3aXNlIHBtX3JlcXVlc3RfdDsKKworICAgICAgICBlbnVtIHBtX3JlcXVlc3QgeworICAgICAgICAgICAgICAgIFBNX1NVU1BFTkQgPSAoX19mb3JjZSBwbV9yZXF1ZXN0X3QpIDEsCisgICAgICAgICAgICAgICAgUE1fUkVTVU1FID0gKF9fZm9yY2UgcG1fcmVxdWVzdF90KSAyCisgICAgICAgIH07CisKK+i/meagt+S8muS9vyBQTV9TVVNQRU5EIOWSjCBQTV9SRVNVTUUg5oiQ5Li65L2N5pa55byPKGJpdHdpc2Up5pW05pWw77yI5L2/55SoIl9fZm9yY2UiCivmmK/lm6DkuLogc3BhcnNlIOS8muaKseaAqOaUueWPmOS9jeaWueW8j+eahOexu+Wei+i9rOaNou+8jOS9huaYr+i/memHjOaIkeS7rOehruWunumcgOimgeW8uuWItui/m+ihjOi9rAor5o2i77yJ44CC6ICM5LiU5Zug5Li65omA5pyJ5p6a5Li+5YC86YO95L2/55So5LqG55u45ZCM55qE57G75Z6L77yM6L+Z6YeM55qEImVudW0gcG1fcmVxdWVzdCLkuZ/lsIYKK+S8muS9v+eUqOmCo+S4quexu+Wei+WBmuS4uuW6leWxguWunueOsOOAggorCivogIzkuJTkvb/nlKggZ2NjIOe8luivkeeahOaXtuWAme+8jOaJgOacieeahCBfX2JpdHdpc2UvX19mb3JjZSDpg73kvJrmtojlpLHvvIzmnIDlkI7lnKggZ2NjCivnnIvmnaXlroPku6zlj6rkuI3ov4fmmK/mma7pgJrnmoTmlbTmlbDjgIIKKwor5Z2m55m95p2l6K+077yM5L2g5bm25LiN6ZyA6KaB5L2/55So5p6a5Li+57G75Z6L44CC5LiK6Z2i6YKj5Lqb5a6e6ZmF6YO95Y+v5Lul5rWT57yp5oiQ5LiA5Liq54m55q6K55qEImludAorX19iaXR3aXNlIuexu+Wei+OAggorCivmiYDku6Xmm7TnroDljZXnmoTlip7ms5Xlj6ropoHov5nmoLflgZrvvJoKKworCXR5cGVkZWYgaW50IF9fYml0d2lzZSBwbV9yZXF1ZXN0X3Q7CisKKwkjZGVmaW5lIFBNX1NVU1BFTkQgKChfX2ZvcmNlIHBtX3JlcXVlc3RfdCkgMSkKKwkjZGVmaW5lIFBNX1JFU1VNRSAoKF9fZm9yY2UgcG1fcmVxdWVzdF90KSAyKQorCivnjrDlnKjkvaDlsLHmnInkuobkuKXmoLznmoTnsbvlnovmo4Dmn6XmiYDpnIDopoHnmoTmiYDmnInln7rnoYDmnrbmnoTjgIIKKwor5LiA5Liq5bCP5o+Q6YaS77ya5bi45pWw5pW05pWwIjAi5piv54m55q6K55qE44CC5L2g5Y+v5Lul55u05o6l5oqK5bi45pWw6Zu25b2T5L2c5L2N5pa55byP5pW05pWw5L2/55So6ICMCivkuI3nlKjmi4Xlv4Mgc3BhcnNlIOS8muaKseaAqOOAgui/meaYr+WboOS4uiJiaXR3aXNlIu+8iOaBsOWmguWFtuWQje+8ieaYr+eUqOadpeehruS/neS4jeWQjOS9jeaWuQor5byP57G75Z6L5LiN5Lya6KKr5byE5re377yI5bCP5bC+5qih5byP77yM5aSn5bC+5qih5byP77yMY3B15bC+5qih5byP77yM5oiW6ICF5YW25LuW77yJ77yM5a+55LuW5Lus5p2l6K+0CivluLjmlbAiMCLnoa7lrp7mmK/nibnmrornmoTjgIIKKwor6I635Y+WIHNwYXJzZSDlt6XlhbcKK35+fn5+fn5+fn5+fn5+fn4KKwor5L2g5Y+v5Lul5LuOIFNwYXJzZSDnmoTkuLvpobXojrflj5bmnIDmlrDnmoTlj5HluIPniYjmnKzvvJoKKworCWh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgva2VybmVsL3Blb3BsZS9qb3NoL3NwYXJzZS8KKwor5oiW6ICF77yM5L2g5Lmf5Y+v5Lul5L2/55SoIGdpdCDlhYvpmobmnIDmlrDnmoQgc3BhcnNlIOW8gOWPkeeJiOacrO+8mgorCisJZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2pvc2gvc3BhcnNlLmdpdAorCitEYXZlSiDmiormr4/lsI/ml7boh6rliqjnlJ/miJDnmoQgZ2l0IOa6kOeggeagkSB0YXIg5YyF5pS+5Zyo5Lul5LiL5Zyw5Z2A77yaCisKKwlodHRwOi8vd3d3LmNvZGVtb25rZXkub3JnLnVrL3Byb2plY3RzL2dpdC1zbmFwc2hvdHMvc3BhcnNlLworCivkuIDml6bkvaDkuIvovb3kuobmupDnoIHvvIzlj6ropoHku6Xmma7pgJrnlKjmiLfouqvku73ov5DooYzvvJoKKworCW1ha2UKKwltYWtlIGluc3RhbGwKKwor5a6D5bCG5Lya6KKr6Ieq5Yqo5a6J6KOF5Yiw5L2g55qEIH4vYmluIOebruW9leS4i+OAggorCivkvb/nlKggc3BhcnNlIOW3peWFtworfn5+fn5+fn5+fn5+fn5+fgorCivnlKgibWFrZSBDPTEi5ZG95Luk5p2l57yW6K+R5YaF5qC477yM5Lya5a+55omA5pyJ6YeN5paw57yW6K+R55qEIEMg5paH5Lu25L2/55SoIHNwYXJzZSDlt6XlhbfjgIIKK+aIluiAheS9v+eUqCJtYWtlIEM9MiLlkb3ku6TvvIzml6Dorrrmlofku7bmmK/lkKbooqvph43mlrDnvJbor5Hpg73kvJrlr7nlhbbkvb/nlKggc3BhcnNlIOW3peWFt+OAggor5aaC5p6c5L2g5bey57uP57yW6K+R5LqG5YaF5qC477yM55So5ZCO5LiA56eN5pa55byP5Y+v5Lul5b6I5b+r5Zyw5qOA5p+l5pW05Liq5rqQ56CB5qCR44CCCisKK21ha2Ug55qE5Y+v6YCJ5Y+Y6YePIENIRUNLRkxBR1Mg5Y+v5Lul55So5p2l5ZCRIHNwYXJzZSDlt6XlhbfkvKDpgJLlj4LmlbDjgILnvJbor5Hns7vnu5/kvJroh6oKK+WKqOWQkSBzcGFyc2Ug5bel5YW35Lyg6YCSIC1XYml0d2lzZSDlj4LmlbDjgILkvaDlj6/ku6XlrprkuYkgX19DSEVDS19FTkRJQU5fXyDmnaXov5vooYwKK+Wkp+Wwj+WwvuajgOafpeOAggorCisJbWFrZSBDPTIgQ0hFQ0tGTEFHUz0iLURfX0NIRUNLX0VORElBTl9fIgorCivov5nkupvmo4Dmn6Xpu5jorqTpg73mmK/ooqvlhbPpl63nmoTvvIzlm6DkuLrku5bku6zpgJrluLjkvJrkuqfnlJ/lpKfph4/nmoTorablkYrjgIIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vemhfQ04vc3RhYmxlX2FwaV9ub25zZW5zZS50eHQgYi9Eb2N1bWVudGF0aW9uL3poX0NOL3N0YWJsZV9hcGlfbm9uc2Vuc2UudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNmEyN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3poX0NOL3N0YWJsZV9hcGlfbm9uc2Vuc2UudHh0CkBAIC0wLDAgKzEsMTU3IEBACitDaGluZXNlIHRyYW5zbGF0ZWQgdmVyc2lvbiBvZiBEb2N1bWVudGF0aW9uL3N0YWJsZV9hcGlfbm9uc2Vuc2UudHh0CisKK0lmIHlvdSBoYXZlIGFueSBjb21tZW50IG9yIHVwZGF0ZSB0byB0aGUgY29udGVudCwgcGxlYXNlIGNvbnRhY3QgdGhlCitvcmlnaW5hbCBkb2N1bWVudCBtYWludGFpbmVyIGRpcmVjdGx5LiAgSG93ZXZlciwgaWYgeW91IGhhdmUgcHJvYmxlbQorY29tbXVuaWNhdGluZyBpbiBFbmdsaXNoIHlvdSBjYW4gYWxzbyBhc2sgdGhlIENoaW5lc2UgbWFpbnRhaW5lciBmb3IgaGVscC4KK0NvbnRhY3QgdGhlIENoaW5lc2UgbWFpbnRhaW5lciwgaWYgdGhpcyB0cmFuc2xhdGlvbiBpcyBvdXRkYXRlZCBvciB0aGVyZQoraXMgcHJvYmxlbSB3aXRoIHRyYW5zbGF0aW9uLgorCitNYWludGFpbmVyOiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdAa3JvYWguY29tPgorQ2hpbmVzZSBtYWludGFpbmVyOiBUcmlwbGVYIENodW5nIDx6aG9uZ3l1QDE4bWFpbC5jbj4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRG9jdW1lbnRhdGlvbi9zdGFibGVfYXBpX25vbnNlbnNlLnR4dCDnmoTkuK3mlofnv7vor5EKKwor5aaC5p6c5oOz6K+E6K665oiW5pu05paw5pys5paH55qE5YaF5a6577yM6K+355u05o6l6IGU57O75Y6f5paH5qGj55qE57u05oqk6ICF44CC5aaC5p6c5L2g5L2/55So6Iux5paHCivkuqTmtYHmnInlm7Dpmr7nmoTor53vvIzkuZ/lj6/ku6XlkJHkuK3mlofniYjnu7TmiqTogIXmsYLliqnjgILlpoLmnpzmnKznv7vor5Hmm7TmlrDkuI3lj4rml7bmiJbogIXnv7sKK+ivkeWtmOWcqOmXrumimO+8jOivt+iBlOezu+S4reaWh+eJiOe7tOaKpOiAheOAggorCivoi7HmlofniYjnu7TmiqTogIXvvJogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVnQGtyb2FoLmNvbT4KK+S4reaWh+eJiOe7tOaKpOiAhe+8miDpkp/lrocgIFRyaXBsZVggQ2h1bmcgPHpob25neXVAMThtYWlsLmNuPgor5Lit5paH54mI57+76K+R6ICF77yaIOmSn+WuhyAgVHJpcGxlWCBDaHVuZyA8emhvbmd5dUAxOG1haWwuY24+CivkuK3mlofniYjmoKHor5HogIXvvJog5p2O6ZizICBMaSBZYW5nIDxsZW9saUBmcmVlc2NhbGUuY29tPgor5Lul5LiL5Li65q2j5paHCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor5YaZ5L2c5pys5paH5qGj55qE55uu55qE77yM5piv5Li65LqG6Kej6YeK5Li65LuA5LmITGludXjml6LmsqHmnInkuozov5vliLblhoXmoLjmjqXlj6PvvIzkuZ/msqHmnInnqLPlrpoKK+eahOWGheaguOaOpeWPo+OAgui/memHjOaJgOivtOeahOWGheaguOaOpeWPo++8jOaYr+aMh+WGheaguOmHjOeahOaOpeWPo++8jOiAjOS4jeaYr+WGheaguOWSjOeUqOaIt+epuumXtAor55qE5o6l5Y+j44CC5YaF5qC45Yiw55So5oi356m66Ze055qE5o6l5Y+j77yM5piv5o+Q5L6b57uZ5bqU55So56iL5bqP5L2/55So55qE57O757uf6LCD55So77yM57O757uf6LCD55SoCivlnKjljoblj7LkuIrlh6DkuY7msqHmnInov4flj5jljJbvvIzlsIbmnaXkuZ/kuI3kvJrmnInlj5jljJbjgILmiJHmnInkuIDkupvogIHlupTnlKjnqIvluo/mmK/lnKgwLjnniYjmnKwKK+aIluiAheabtOaXqeeJiOacrOeahOWGheaguOS4iue8luivkeeahO+8jOWcqOS9v+eUqDIuNueJiOacrOWGheaguOeahExpbnV45Y+R5biD5LiK5L6d54S255So5b6X5b6I5aW9CivjgILnlKjmiLflkozlupTnlKjnqIvluo/kvZzogIXlj6/ku6XlsIbov5nkuKrmjqXlj6PnnIvmiJDmmK/nqLPlrprnmoTjgIIKKworCivmiafooYznurLopoEKKy0tLS0tLS0tCisKK+S9oOS5n+iuuOS7peS4uuiHquW3seaDs+imgeeos+WumueahOWGheaguOaOpeWPo++8jOS9huaYr+S9oOS4jea4healmuS9oOimgeeahOWunumZheS4iuS4jeaYr+Wug+OAguS9oOmcgAor6KaB55qE5YW25a6e5piv56iz5a6a55qE6amx5Yqo56iL5bqP77yM6ICM5L2g5Y+q5pyJ5bCG6amx5Yqo56iL5bqP5pS+5Yiw5YWs54mI5YaF5qC455qE5rqQ5Luj56CB5qCR6YeM77yMCivmiY3mnInlj6/og73ovr7liLDov5nkuKrnm67nmoTjgILogIzkuJTov5nmoLflgZrov5jmnInlvojlpJrlhbblroPlpb3lpITvvIzmraPmmK/lm6DkuLrov5nkupvlpb3lpITkvb/lvpcKK0xpbnV46IO95oiQ5Li65by65aOu77yM56iz5a6a77yM5oiQ54af55qE5pON5L2c57O757uf77yM6L+Z5Lmf5piv5L2g5pyA5byA5aeL6YCJ5oupTGludXjnmoTljp/lm6DjgIIKKworCivlhaXpl6gKKy0tLS0tCisKK+WPquaciemCo+S6m+WGmempseWKqOeoi+W6j+eahOKAnOaAquS6uuKAneaJjeS8muaLheW/g+WGheaguOaOpeWPo+eahOaUueWPmO+8jOWvueW5v+Wkp+eUqOaIt+adpeivtO+8jOaXogor55yL5LiN5Yiw5YaF5qC45o6l5Y+j77yM5Lmf5LiN6ZyA6KaB5Y675YWz5b+D5a6D44CCCisKK+mmluWFiO+8jOaIkeS4jeaJk+eul+iuqOiuuuWFs+S6juS7u+S9lemdnkdQTOiuuOWPr+eahOWGheaguOmpseWKqOeahOazleW+i+mXrumimO+8jOi/meS6m+mdnkdQTOiuuOWPrwor55qE6amx5Yqo56iL5bqP5YyF5ous5LiN5YWs5byA5rqQ5Luj56CB77yM6ZqQ6JeP5rqQ5Luj56CB77yM5LqM6L+b5Yi25oiW6ICF5piv55So5rqQ5Luj56CB5YyF6KOF77yM5oiW6ICFCivmmK/lhbblroPku7vkvZXlvaLlvI/nmoTkuI3og73ku6VHUEzorrjlj6/lhazlvIDmupDku6PnoIHnmoTpqbHliqjnqIvluo/jgILlpoLmnpzmnInms5Xlvovpl67popjvvIzor7flkqgKK+ivouW+i+W4iO+8jOaIkeWPquaYr+S4gOS4queoi+W6j+WRmO+8jOaJgOS7peaIkeWPquaJk+eul+aOouiuqOaKgOacr+mXrumimO+8iOS4jeaYr+Wwj+eci+azleW+i+mXrumimO+8jAor5rOV5b6L6Zeu6aKY5b6I5a6e6ZmF77yM5bm25LiU6ZyA6KaB5LiA55u05YWz5rOo77yJ44CCCisKK+aXoueEtuWPquiwiOaKgOacr+mXrumimO+8jOaIkeS7rOWwseacieS6huS4i+mdouS4pOS4quS4u+mimO+8muS6jOi/m+WItuWGheaguOaOpeWPo+WSjOeos+WumueahOWGheaguOa6kAor5Luj56CB5o6l5Y+j44CC6L+Z5Lik5Liq6Zeu6aKY5piv5LqS55u45YWz6IGU55qE77yM6K6p5oiR5Lus5YWI6Kej5Yaz5o6J5LqM6L+b5Yi25o6l5Y+j55qE6Zeu6aKY44CCCisKKwor5LqM6L+b5Yi25YaF5qC45o6l5Y+jCistLS0tLS0tLS0tLS0tLQor5YGH5aaC5oiR5Lus5pyJ5LiA5Liq56iz5a6a55qE5YaF5qC45rqQ5Luj56CB5o6l5Y+j77yM6YKj5LmI6Ieq54S26ICM54S255qE77yM5oiR5Lus5bCx5oul5pyJ5LqG56iz5a6a55qECivkuozov5vliLbmjqXlj6PvvIzmmK/ov5nmoLfnmoTlkJfvvJ/plJnjgILorqnmiJHku6znnIvnnIvlhbPkuo5MaW51eOWGheaguOeahOWHoOeCueS6i+Wunu+8mgorICAgIC0g5Y+W5Yaz5LqO5omA55So55qEQ+e8luivkeWZqOeahOeJiOacrO+8jOS4jeWQjOeahOWGheaguOaVsOaNrue7k+aehOmHjOeahOe7k+aehOS9k+eahOWvuem9kOaWuQor5byP5Lya5pyJ5beu5Yir77yM5Luj56CB5Lit5LiN5ZCM5Ye95pWw55qE6KGo546w5b2i5byP5Lmf5LiN5LiA5qC377yI5Ye95pWw5piv5LiN5piv6KKraW5saW5l57yW6K+R5Y+WCivlhrPkuo7nvJbor5HlmajooYzkuLrvvInjgILkuI3lkIznmoTlh73mlbDnmoTooajnjrDlvaLlvI/lubbkuI3ph43opoHvvIzkvYbmmK/mlbDmja7nu5PmnoTlhoXpg6jnmoTlr7npvZAKK+aWueW8j+W+iOWFs+mUruOAggorICAgIC0g5Y+W5Yaz5LqO5YaF5qC455qE6YWN572u6YCJ6aG577yM5LiN5ZCM55qE6YCJ6aG55Lya6K6p5YaF5qC455qE5b6I5aSa5Lic6KW/5Y+R55Sf5pS55Y+Y77yaCisgICAgICAtIOWQjOS4gOS4que7k+aehOS9k+WPr+iDveWMheWQq+S4jeWQjOeahOaIkOWRmOWPmOmHjworICAgICAgLSDmnInnmoTlh73mlbDlj6/og73moLnmnKzkuI3kvJrooqvlrp7njrDvvIjmr5TlpoLnvJbor5HnmoTml7blgJnmsqHmnInpgInmi6lTTVDmlK/mjIEKK++8jOS4gOS6m+mUgeWHveaVsOWwseS8muiiq+WumuS5ieaIkOepuuWHveaVsO+8ieOAggorICAgICAgLSDlhoXmoLjkvb/nlKjnmoTlhoXlrZjkvJrku6XkuI3lkIznmoTmlrnlvI/lr7npvZDvvIzov5nlj5blhrPkuo7kuI3lkIznmoTlhoXmoLjphY3nva7pgIkKK+mhueOAggorICAgIC0gTGludXjlj6/ku6XlnKjlvojlpJrnmoTkuI3lkIzkvZPns7vnu5PmnoTnmoTlpITnkIblmajkuIrov5DooYzjgILlnKjmn5DkuKrkvZPns7vnu5PmnoTkuIrnvJYKK+ivkeWlveeahOS6jOi/m+WItumpseWKqOeoi+W6j++8jOS4jeWPr+iDveWcqOWPpuWkluS4gOS4quS9k+ezu+e7k+aehOS4iuato+ehrueahOi/kOihjOOAggorCivlr7nkuo7kuIDkuKrnibnlrprnmoTlhoXmoLjvvIzmu6HotrPov5nkupvmnaHku7blubbkuI3pmr7vvIzkvb/nlKjlkIzkuIDkuKpD57yW6K+R5Zmo5ZKM5ZCM5qC355qE5YaF5qC46YWNCivnva7pgInpobnmnaXnvJbor5HpqbHliqjnqIvluo/mqKHlnZflsLHlj6/ku6XkuobjgILov5nlr7nkuo7nu5nkuIDkuKrnibnlrppMaW51eOWPkeW4g+eahOeJueWumueJiOacrOaPkAor5L6b6amx5Yqo56iL5bqP77yM5piv5a6M5YWo5Y+v5Lul5ruh6Laz6ZyA5rGC55qE44CC5L2G5piv5aaC5p6c5L2g6KaB57uZ5LiN5ZCM5Y+R5biD55qE5LiN5ZCM54mI5pys6YO95Y+RCivluIPkuIDkuKrpqbHliqjnqIvluo/vvIzlsLHpnIDopoHlnKjmr4/kuKrlj5HluIPkuIrnlKjkuI3lkIznmoTlhoXmoLjorr7nva7lj4LmlbDpg73nvJbor5HkuIDmrKHlhoXmoLjvvIwKK+i/meeugOebtOi3n+WZqeaipuS4gOagt+OAguiAjOS4lOi/mOimgeazqOaEj+WIsO+8jOavj+S4qkxpbnV45Y+R5biD6L+Y5o+Q5L6b5LiN5ZCM55qETGludXjlhoXmoLjvvIwKK+i/meS6m+WGheaguOmDvemSiOWvueS4jeWQjOeahOehrOS7tuexu+Wei+i/m+ihjOS6huS8mOWMlu+8iOacieW+iOWkmuenjeS4jeWQjOeahOWkhOeQhuWZqO+8jOi/mOacieS4jeWQjAor55qE5YaF5qC46K6+572u6YCJ6aG577yJ44CC5omA5Lul5q+P5Y+R5biD5LiA5qyh6amx5Yqo56iL5bqP77yM6YO96ZyA6KaB5o+Q5L6b5b6I5aSa5LiN5ZCM54mI5pys55qE5YaF5qC4CivmqKHlnZfjgIIKKwor55u45L+h5oiR77yM5aaC5p6c5L2g55yf55qE6KaB6YeH5Y+W6L+Z56eN5Y+R5biD5pa55byP77yM5LiA5a6a5Lya5oWi5oWi55av5o6J77yM5oiR5b6I5LmF5Lul5YmN5bCx5pyJ6L+HCivmt7HliLvnmoTmlZnorq0uLi4KKworCivnqLPlrprnmoTlhoXmoLjmupDku6PnoIHmjqXlj6MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK+WmguaenOacieS6uuS4jeWwhuS7lueahOWGheaguOmpseWKqOeoi+W6j++8jOaUvuWFpeWFrOeJiOWGheaguOeahOa6kOS7o+eggeagke+8jOiAjOWPiOaDs+iuqempseWKqOeoi+W6jwor5LiA55u05L+d5oyB5Zyo5pyA5paw55qE5YaF5qC45Lit5Y+v55So77yM6YKj5LmI6L+Z5Liq6K+d6aKY5bCG5Lya5Y+Y5b6X5rKh5a6M5rKh5LqG44CCCisg5YaF5qC45byA5Y+R5piv5oyB57ut6ICM5LiU5b+r6IqC5aWP55qE77yM5LuO5p2l6YO95LiN5Lya5oWi5LiL5p2l44CC5YaF5qC45byA5Y+R5Lq65ZGY5Zyo5b2T5YmN5o6l5Y+j5LitCivmib7liLBidWfvvIzmiJbogIXmib7liLDmm7Tlpb3nmoTlrp7njrDmlrnlvI/jgILkuIDml6blj5HnjrDov5nkupvvvIzku5bku6zlsLHlvojlv6vkvJrljrvkv67mlLnlvZPliY3nmoQKK+aOpeWPo+OAguS/ruaUueaOpeWPo+aEj+WRs+edgO+8jOWHveaVsOWQjeWPr+iDveS8muaUueWPmO+8jOe7k+aehOS9k+WPr+iDveiiq+aJqeWFheaIluiAheWIoOWHj++8jOWHveaVsAor55qE5Y+C5pWw5Lmf5Y+v6IO95Y+R55Sf5pS55Y+Y44CC5LiA5pem5o6l5Y+j6KKr5L+u5pS577yM5YaF5qC45Lit5L2/55So6L+Z5Lqb5o6l5Y+j55qE5Zyw5pa56ZyA6KaB5ZCM5pe2Civkv67mraPvvIzov5nmoLfmiY3og73kv53or4HmiYDmnInnmoTkuJzopb/nu6fnu63lt6XkvZzjgIIKKwor5Li+5LiA5Liq5L6L5a2Q77yM5YaF5qC455qEVVNC6amx5Yqo56iL5bqP5o6l5Y+j5ZyoVVNC5a2Q57O757uf55qE5pW05Liq55Sf5ZG95ZGo5pyf5Lit77yM6Iez5bCR57uP5Y6GCivkuobkuInmrKHph43lhpnjgILov5nkupvph43lhpnop6PlhrPku6XkuIvpl67popjvvJoKKyAgICAtIOaKiuaVsOaNrua1geS7juWQjOatpeaooeW8j+aUueaIkOmdnuWQjOatpeaooeW8j++8jOi/meS4quaUueWKqOWHj+WwkeS6huS4gOS6m+mpseWKqOeoi+W6j+eahAor5aSN5p2C5bqm77yM5o+Q6auY5LqG5omA5pyJVVNC6amx5Yqo56iL5bqP55qE5ZCe5ZCQ546H77yM6L+Z5qC35Yeg5LmO5omA5pyJ55qEVVNC6K6+5aSH6YO96IO95Lul5pyA5aSnCivpgJ/njoflt6XkvZzkuobjgIIKKyAgICAtIOS/ruaUueS6hlVTQuaguOW/g+S7o+eggeS4reS4ulVTQumpseWKqOWIhumFjeaVsOaNruWMheWGheWtmOeahOaWueW8j++8jOaJgOacieeahOmpseWKqOmDvQor6ZyA6KaB5o+Q5L6b5pu05aSa55qE5Y+C5pWw57uZVVNC5qC45b+D77yM5Lul5L+u5q2j5LqG5b6I5aSa5bey57uP6KKr6K6w5b2V5Zyo5qGI55qE5q276ZSB44CCCisKK+i/meWSjOS4gOS6m+WwgemXrea6kOS7o+eggeeahOaTjeS9nOezu+e7n+W9ouaIkOmynOaYjueahOWvueavlO+8jOWcqOmCo+S6m+aTjeS9nOezu+e7n+S4iu+8jOS4jeW+l+S4jeminQor5aSW55qE57u05oqk5pen55qEVVNC5o6l5Y+j44CC6L+Z5a+86Ie05LqG5LiA5Liq5Y+v6IO95oCn77yM5paw55qE5byA5Y+R6ICF5L6d54S25Lya5LiN5bCP5b+D5L2/55So5pen55qECivmjqXlj6PvvIzku6XkuI3mgbDlvZPnmoTmlrnlvI/nvJblhpnku6PnoIHvvIzov5vogIzlvbHlk43liLDmk43kvZzns7vnu5/nmoTnqLPlrprmgKfjgIIKKyDlnKjkuIrpnaLnmoTkvovlrZDkuK3vvIzmiYDmnInnmoTlvIDlj5HogIXpg73lkIzmhI/ov5nkupvph43opoHnmoTmlLnliqjvvIzlnKjov5nmoLfnmoTmg4XlhrXkuIvkv67mlLnku6MKK+S7t+W+iOS9juOAguWmguaenExpbnV45L+d5oyB5LiA5Liq56iz5a6a55qE5YaF5qC45rqQ5Luj56CB5o6l5Y+j77yM6YKj5LmI5bCx5b6X5Yib5bu65LiA5Liq5paw55qE5o6l5Y+jCivvvJvml6fnmoTvvIzmnInpl67popjnmoTmjqXlj6Plv4XpobvkuIDnm7Tnu7TmiqTvvIznu5lMaW51eCBVU0LlvIDlj5HogIXluKbmnaXpop3lpJbnmoTlt6XkvZzjgILml6LnhLYKK+aJgOacieeahExpbnV4IFVTQumpseWKqOeahOS9nOiAhemDveaYr+WIqeeUqOiHquW3seeahOaXtumXtOW3peS9nO+8jOmCo+S5iOimgeaxguS7luS7rOWOu+WBmuavq+aXoOaEjwor5LmJ55qE5YWN6LS56aKd5aSW5bel5L2c77yM5piv5LiN5Y+v6IO955qE44CCCisg5a6J5YWo6Zeu6aKY5a+5TGludXjmnaXor7TljYHliIbph43opoHjgILkuIDkuKrlronlhajpl67popjooqvlj5HnjrDvvIzlsLHkvJrlnKjnn63ml7bpl7TlhoXlvpfliLDkv64KK+ato+OAguWcqOW+iOWkmuaDheWGteS4i++8jOi/meWwhuWvvOiHtExpbnV45YaF5qC45Lit55qE5LiA5Lqb5o6l5Y+j6KKr6YeN5YaZ77yM5Lul5LuO5qC55pys5LiK6YG/5YWN5a6JCivlhajpl67popjjgILkuIDml6bmjqXlj6Pooqvph43lhpnvvIzmiYDmnInkvb/nlKjov5nkupvmjqXlj6PnmoTpqbHliqjnqIvluo/vvIzlv4XpobvlkIzml7blvpfliLDkv67mraPvvIwKK+S7peehruWumuWuieWFqOmXrumimOW3sue7j+W+l+WIsOS/ruWkjeW5tuS4lOS4jeWPr+iDveWcqOacquadpei/mOacieWQjOagt+eahOWuieWFqOmXrumimOOAguWmguaenOWGheaguAor5YaF6YOo5o6l5Y+j5LiN5YWB6K645pS55Y+Y77yM6YKj5LmI5bCx5LiN5Y+v6IO95L+u5aSN6L+Z5qC355qE5a6J5YWo6Zeu6aKY77yM5Lmf5LiN5Y+v6IO956Gu6K6k6L+Z5qC355qECivlronlhajpl67popjku6XlkI7kuI3kvJrlj5HnlJ/jgIIKK+W8gOWPkeiAheS4gOebtOWcqOa4heeQhuWGheaguOaOpeWPo+OAguWmguaenOS4gOS4quaOpeWPo+ayoeacieS6uuWcqOS9v+eUqOS6hu+8jOWug+WwseS8muiiq+WIoOmZpOOAgui/mQor5qC35Y+v5Lul56Gu5L+d5YaF5qC45bC95Y+v6IO955qE5bCP77yM6ICM5LiU5omA5pyJ5r2c5Zyo55qE5o6l5Y+j6YO95Lya5b6X5Yiw5bC95Y+v6IO95a6M5pW055qE5rWL6K+VCivvvIjmsqHmnInkurrkvb/nlKjnmoTmjqXlj6PmmK/kuI3lj6/og73lvpfliLDoia/lpb3nmoTmtYvor5XnmoTvvInjgIIKKworCivopoHlgZrku4DkuYgKKy0tLS0tLS0KKwor5aaC5p6c5L2g5YaZ5LqG5LiA5LiqTGludXjlhoXmoLjpqbHliqjvvIzkvYbmmK/lroPov5jkuI3lnKhMaW51eOa6kOS7o+eggeagkemHjO+8jOS9nOS4uuS4gOS4quW8gOWPkQor6ICF77yM5L2g5bqU6K+l5oCO5LmI5YGa77yf5Li65q+P5Liq5Y+R5biD55qE5q+P5Liq54mI5pys5o+Q5L6b5LiA5Liq5LqM6L+b5Yi26amx5Yqo77yM6YKj566A55u05piv5LiA5LiqCivlmanmoqbvvIzopoHot5/kuIrmsLjov5zlpITkuo7lj5jljJbkuYvkuK3nmoTlhoXmoLjmjqXlj6PvvIzkuZ/mmK/kuIDku7bovpvoi6bmtLvjgIIKK+W+iOeugOWNle+8jOiuqeS9oOeahOmpseWKqOi/m+WFpeWGheaguOa6kOS7o+eggeagke+8iOimgeiusOW+l+aIkeS7rOWcqOiwiOiuuueahOaYr+S7pUdQTOiuuOWPr+WPkeihjAor55qE6amx5Yqo77yM5aaC5p6c5L2g55qE5Luj56CB5LiN56ym5ZCIR1BM77yM6YKj5LmI56Wd5L2g5aW96L+Q77yM5L2g5Y+q6IO96Ieq5bex6Kej5Yaz6L+Z5Liq6Zeu6aKY5LqG77yMCivkvaDov5nkuKrlkLjooYDprLw85oqKQW5kcmV35ZKMTGludXPlr7nlkLjooYDprLznmoTlrprkuYnpk77mjqXliLDov5nph4w+77yJ44CC5b2T5L2g55qE5Luj56CB5Yqg5YWlCivlhazniYjlhoXmoLjmupDku6PnoIHmoJHkuYvlkI7vvIzlpoLmnpzkuIDkuKrlhoXmoLjmjqXlj6PmlLnlj5jvvIzkvaDnmoTpqbHliqjkvJrnm7TmjqXooqvkv67mlLnmjqXlj6PnmoQKK+mCo+S4quS6uuS/ruaUueOAguS/neivgeS9oOeahOmpseWKqOawuOi/nOmDveWPr+S7pee8luivkemAmui/h++8jOW5tuS4lOS4gOebtOW3peS9nO+8jOS9oOWHoOS5juS4jemcgOimgQor5YGa5LuA5LmI5LqL5oOF44CCCisKK+aKiumpseWKqOaUvuWIsOWGheaguOa6kOS7o+eggeagkemHjOS8muacieW+iOWkmueahOWlveWkhO+8mgorICAgIC0g6amx5Yqo55qE6LSo6YeP5Lya5o+Q5Y2H77yM6ICM57u05oqk5oiQ5pys77yI5a+55Y6f5aeL5L2c6ICF5p2l6K+077yJ5Lya5LiL6ZmN44CCCisgICAgLSDlhbbku5bkurrkvJrnu5npqbHliqjmt7vliqDmlrDnibnmgKfjgIIKKyAgICAtIOWFtuS7luS6uuS8muaJvuWIsOmpseWKqOS4reeahGJ1Z+W5tuS/ruWkjeOAggorICAgIC0g5YW25LuW5Lq65Lya5Zyo6amx5Yqo5Lit5om+5Yiw5oCn6IO95LyY5YyW55qE5py65Lya44CCCisgICAgLSDlvZPlpJbpg6jnmoTmjqXlj6PnmoTmlLnlj5jpnIDopoHkv67mlLnpqbHliqjnqIvluo/nmoTml7blgJnvvIzlhbbku5bkurrkvJrkv67mlLnpqbHliqjnqIvluo8KK+OAggorICAgIC0g5LiN6ZyA6KaB6IGU57O75Lu75L2V5Y+R6KGM5ZWG77yM6L+Z5Liq6amx5Yqo5Lya6Ieq5Yqo55qE6ZqP552A5omA5pyJ55qETGludXjlj5HluIPkuIDotbflj5EKK+W4g+OAggorCivlkozliKvnmoTmk43kvZzns7vnu5/nm7jmr5TvvIxMaW51eOS4uuabtOWkmuS4jeWQjOeahOiuvuWkh+aPkOS+m+eOsOaIkOeahOmpseWKqO+8jOiAjOS4lOiDveWcqOabtOWkmuS4jQor5ZCM5L2T57O757uT5p6E55qE5aSE55CG5Zmo5LiK5pSv5oyB6L+Z5Lqb6K6+5aSH44CC6L+Z5Liq57uP6L+H6ICD6aqM55qE5byA5Y+R5qih5byP77yM5b+F54S25piv6ZSZ5LiN5LqGCivnmoQgOikKKworLS0tLS0tLS0tLS0tLQor5oSf6LCiIFJhbmR5IER1bmxhcCwgQW5kcmV3IE1vcnRvbiwgRGF2aWQgQnJvd25lbGwsIEhhbm5hIExpbmRlciwKK1JvYmVydCBMb3ZlLCBhbmQgTmlzaGFudGggQXJhdmFtdWRhbiDlr7nkuo7mnKzmlofmoaPml6nmnJ/niYjmnKznmoTor4TlrqHlkozlu7rorq7jgIIKKwor6Iux5paH54mI57u05oqk6ICF77yaIEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ0Brcm9haC5jb20+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3poX0NOL3N0YWJsZV9rZXJuZWxfcnVsZXMudHh0IGIvRG9jdW1lbnRhdGlvbi96aF9DTi9zdGFibGVfa2VybmVsX3J1bGVzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmVhNWVkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi96aF9DTi9zdGFibGVfa2VybmVsX3J1bGVzLnR4dApAQCAtMCwwICsxLDY2IEBACitDaGluZXNlIHRyYW5zbGF0ZWQgdmVyc2lvbiBvZiBEb2N1bWVudGF0aW9uL3N0YWJsZV9rZXJuZWxfcnVsZXMudHh0CisKK0lmIHlvdSBoYXZlIGFueSBjb21tZW50IG9yIHVwZGF0ZSB0byB0aGUgY29udGVudCwgcGxlYXNlIGNvbnRhY3QgdGhlCitvcmlnaW5hbCBkb2N1bWVudCBtYWludGFpbmVyIGRpcmVjdGx5LiAgSG93ZXZlciwgaWYgeW91IGhhdmUgYSBwcm9ibGVtCitjb21tdW5pY2F0aW5nIGluIEVuZ2xpc2ggeW91IGNhbiBhbHNvIGFzayB0aGUgQ2hpbmVzZSBtYWludGFpbmVyIGZvcgoraGVscC4gIENvbnRhY3QgdGhlIENoaW5lc2UgbWFpbnRhaW5lciBpZiB0aGlzIHRyYW5zbGF0aW9uIGlzIG91dGRhdGVkCitvciBpZiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgdHJhbnNsYXRpb24uCisKK0NoaW5lc2UgbWFpbnRhaW5lcjogVHJpcGxlWCBDaHVuZyA8dHJpcGxleEB6aC1rZXJuZWwub3JnPgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEb2N1bWVudGF0aW9uL3N0YWJsZV9rZXJuZWxfcnVsZXMudHh0IOeahOS4reaWh+e/u+ivkQorCivlpoLmnpzmg7Por4TorrrmiJbmm7TmlrDmnKzmlofnmoTlhoXlrrnvvIzor7fnm7TmjqXogZTns7vljp/mlofmoaPnmoTnu7TmiqTogIXjgILlpoLmnpzkvaDkvb/nlKjoi7HmlocKK+S6pOa1geacieWbsOmavueahOivne+8jOS5n+WPr+S7peWQkeS4reaWh+eJiOe7tOaKpOiAheaxguWKqeOAguWmguaenOacrOe/u+ivkeabtOaWsOS4jeWPiuaXtuaIluiAhee/uwor6K+R5a2Y5Zyo6Zeu6aKY77yM6K+36IGU57O75Lit5paH54mI57u05oqk6ICF44CCCisKKwor5Lit5paH54mI57u05oqk6ICF77yaIOmSn+WuhyAgVHJpcGxlWCBDaHVuZyA8dHJpcGxleEB6aC1rZXJuZWwub3JnPgor5Lit5paH54mI57+76K+R6ICF77yaIOmSn+WuhyAgVHJpcGxlWCBDaHVuZyA8dHJpcGxleEB6aC1rZXJuZWwub3JnPgor5Lit5paH54mI5qCh6K+R6ICF77yaIOadjumYsyAgTGkgWWFuZyA8bGVvQHpoLWtlcm5lbC5vcmc+CisgICAgICAgICAgICAgICBLYW5na2FpIFlpbiA8ZTEyMDUxQG1vdG9yb2xhLmNvbT4KKwor5Lul5LiL5Li65q2j5paHCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor5YWz5LqOTGludXggMi4256iz5a6a54mI5Y+R5biD77yM5omA5pyJ5L2g5oOz55+l6YGT55qE5LqL5oOF44CCCisKK+WFs+S6juWTquS6m+exu+Wei+eahOihpeS4geWPr+S7peiiq+aOpeaUtui/m+WFpeeos+WumueJiOS7o+eggeagke+8jOWTquS6m+S4jeWPr+S7peeahOinhOWIme+8mgorCisgIC0g5b+F6aG75piv5pi+6ICM5piT6KeB55qE5q2j56Gu77yM5bm25LiU57uP6L+H5rWL6K+V55qE44CCCisgIC0g6L+e5ZCM5LiK5LiL5paH77yM5LiN6IO95aSn5LqOMTAw6KGM44CCCisgIC0g5b+F6aG75Y+q5L+u5q2j5LiA5Lu25LqL5oOF44CCCisgIC0g5b+F6aG75L+u5q2j5LqG5LiA5Liq57uZ5aSn5a625bim5p2l6bq754Om55qE55yf5q2j55qEYnVn77yI5LiN5piv4oCc6L+Z5Lmf6K645piv5LiA5Liq6Zeu6aKYLi4u4oCdCisgICAg6YKj5qC355qE5Lic6KW/77yJ44CCCisgIC0g5b+F6aG75L+u5q2j5bim5p2l5aaC5LiL5ZCO5p6c55qE6Zeu6aKY77ya57yW6K+R6ZSZ6K+v77yI5a+56KKr5qCH6K6w5Li6Q09ORklHX0JST0tFTueahOS+i+Wklu+8ie+8jAorICAgIOWGheaguOW0qea6g++8jOaMgui1t++8jOaVsOaNruaNn+Wdj++8jOecn+ato+eahOWuieWFqOmXrumimO+8jOaIluiAheS4gOS6m+exu+S8vOKAnOWTpu+8jOi/meS4jQorICAgIOWlveKAneeahOmXrumimOOAgueugOefreeahOivtO+8jOWwseaYr+S4gOS6m+iHtOWRveeahOmXrumimOOAggorICAtIOayoeacieKAnOeQhuiuuuS4iueahOernuS6ieadoeS7tuKAne+8jOmZpOmdnuiDvee7meWHuuernuS6ieadoeS7tuWmguS9leiiq+WIqeeUqOeahOino+mHiuOAggorICAtIOS4jeiDveWtmOWcqOS7u+S9leeahOKAnOeQkOeijueahOKAneS/ruato++8iOaLvOWGmeS/ruato++8jOWOu+aOieWkmuS9meepuuagvOS5i+exu+eahO+8ieOAggorICAtIOW/hemhu+iiq+ebuOWFs+WtkOezu+e7n+eahOe7tOaKpOiAheaOpeWPl+OAggorICAtIOW/hemhu+mBteW+qkRvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXPph4znmoTop4TliJnjgIIKKwor5ZCR56iz5a6a54mI5Luj56CB5qCR5o+Q5Lqk6KGl5LiB55qE6L+H56iL77yaCisKKyAgLSDlnKjnoa7orqTkuobooaXkuIHnrKblkIjku6XkuIrnmoTop4TliJnlkI7vvIzlsIbooaXkuIHlj5HpgIHliLBzdGFibGVAdmdlci5rZXJuZWwub3Jn44CCCisgIC0g5aaC5p6c6KGl5LiB6KKr5o6l5Y+X5Yiw6Zif5YiX6YeM77yM5Y+R6YCB6ICF5Lya5pS25Yiw5LiA5LiqQUNL5Zue5aSN77yM5aaC5p6c5rKh5pyJ6KKr5o6l5Y+X77yM5pS2CisgICAg5Yiw55qE5pivTkFL5Zue5aSN44CC5Zue5aSN6ZyA6KaB5Yeg5aSp55qE5pe26Ze077yM6L+Z5Y+W5Yaz5LqO5byA5Y+R6ICF55qE5pe26Ze05a6J5o6S44CCCisgIC0g6KKr5o6l5Y+X55qE6KGl5LiB5Lya6KKr5Yqg5Yiw56iz5a6a54mI5pys6Zif5YiX6YeM77yM562J5b6F5YW25LuW5byA5Y+R6ICF55qE5a6h5p+l44CCCisgIC0g5a6J5YWo5pa56Z2i55qE6KGl5LiB5LiN6KaB5Y+R5Yiw6L+Z5Liq5YiX6KGo77yM5bqU6K+l5Y+R6YCB5Yiwc2VjdXJpdHlAa2VybmVsLm9yZ+OAggorCivlrqHmn6XlkajmnJ/vvJoKKworICAtIOW9k+eos+WumueJiOeahOe7tOaKpOiAheWGs+WumuW8gOWni+S4gOS4quWuoeafpeWRqOacn++8jOihpeS4geWwhuiiq+WPkemAgeWIsOWuoeafpeWnlOWRmOS8mu+8jOS7pQorICAgIOWPiuiiq+ihpeS4geW9seWTjeeahOmihuWfn+eahOe7tOaKpOiAhe+8iOmZpOmdnuaPkOS6pOiAheWwseaYr+ivpemihuWfn+eahOe7tOaKpOiAhe+8ieW5tuS4lOaKhOmAgQorICAgIOWIsGxpbnV4LWtlcm5lbOmCruS7tuWIl+ihqOOAggorICAtIOWuoeafpeWnlOWRmOS8muaciTQ45bCP5pe255qE5pe26Ze077yM55So5p2l5Yaz5a6a57uZ6K+l6KGl5LiB5Zue5aSNQUNL6L+Y5pivTkFL44CCCisgIC0g5aaC5p6c5aeU5ZGY5Lya5Lit5pyJ5oiQ5ZGY5ouS57ud6L+Z5Liq6KGl5LiB77yM5oiW6ICFbGludXgta2VybmVs5YiX6KGo5LiK5pyJ5Lq65Y+N5a+56L+Z5LiqCisgICAg6KGl5LiB77yM5bm25o+Q5Ye657u05oqk6ICF5ZKM5a6h5p+l5aeU5ZGY5Lya5LmL5YmN5rKh5pyJ5oSP6K+G5Yiw55qE6Zeu6aKY77yM6KGl5LiB5Lya5LuO6Zif5YiX5LitCisgICAg5Lii5byD44CCCisgIC0g5Zyo5a6h5p+l5ZGo5pyf57uT5p2f55qE5pe25YCZ77yM6YKj5Lqb5b6X5YiwQUNL5Zue5bqU55qE6KGl5LiB5bCG5Lya6KKr5Yqg5YWl5Yiw5pyA5paw55qE56iz5a6a54mICisgICAg5Y+R5biD5Lit77yM5LiA5Liq5paw55qE56iz5a6a54mI5Y+R5biD5bCx5q2k5Lqn55Sf44CCCisgIC0g5a6J5YWo5oCn6KGl5LiB5bCG5LuO5YaF5qC45a6J5YWo5bCP57uE6YKj6YeM55u05o6l5o6l5pS25Yiw56iz5a6a54mI5Luj56CB5qCR5Lit77yM6ICM5LiN5piv6YCa6L+HCisgICAg6YCa5bi455qE5a6h5p+l5ZGo5pyf44CC6K+36IGU57O75YaF5qC45a6J5YWo5bCP57uE5Lul6I635b6X5YWz5LqO6L+Z5Liq6L+H56iL55qE5pu05aSa57uG6IqC44CCCisKK+WuoeafpeWnlOWRmOS8mu+8mgorICAtIOeUseS4gOS6m+iHquaEv+aJv+aLhei/memhueS7u+WKoeeahOWGheaguOW8gOWPkeiAhe+8jOWSjOWHoOS4qumdnuW/l+aEv+eahOe7hOaIkOOAggpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi96aF9DTi92aWRlbzRsaW51eC9vbWFwM2lzcC50eHQgYi9Eb2N1bWVudGF0aW9uL3poX0NOL3ZpZGVvNGxpbnV4L29tYXAzaXNwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2ZmYmYzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi96aF9DTi92aWRlbzRsaW51eC9vbWFwM2lzcC50eHQKQEAgLTAsMCArMSwyNzcgQEAKK0NoaW5lc2UgdHJhbnNsYXRlZCB2ZXJzaW9uIG9mIERvY3VtZW50YXRpb24vdmlkZW80bGludXgvb21hcDNpc3AudHh0CisKK0lmIHlvdSBoYXZlIGFueSBjb21tZW50IG9yIHVwZGF0ZSB0byB0aGUgY29udGVudCwgcGxlYXNlIGNvbnRhY3QgdGhlCitvcmlnaW5hbCBkb2N1bWVudCBtYWludGFpbmVyIGRpcmVjdGx5LiAgSG93ZXZlciwgaWYgeW91IGhhdmUgYSBwcm9ibGVtCitjb21tdW5pY2F0aW5nIGluIEVuZ2xpc2ggeW91IGNhbiBhbHNvIGFzayB0aGUgQ2hpbmVzZSBtYWludGFpbmVyIGZvcgoraGVscC4gIENvbnRhY3QgdGhlIENoaW5lc2UgbWFpbnRhaW5lciBpZiB0aGlzIHRyYW5zbGF0aW9uIGlzIG91dGRhdGVkCitvciBpZiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgdHJhbnNsYXRpb24uCisKK01haW50YWluZXI6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KKwkgIFNha2FyaSBBaWx1cyA8c2FrYXJpLmFpbHVzQGlraS5maT4KKwkgIERhdmlkIENvaGVuIDxkYWNvaGVuQGdtYWlsLmNvbT4KK0NoaW5lc2UgbWFpbnRhaW5lcjogRnUgV2VpIDx0ZWtrYW1hbm5pbmphQGdtYWlsLmNvbT4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9vbWFwM2lzcC50eHQg55qE5Lit5paH57+76K+RCisKK+WmguaenOaDs+ivhOiuuuaIluabtOaWsOacrOaWh+eahOWGheWuue+8jOivt+ebtOaOpeiBlOezu+WOn+aWh+aho+eahOe7tOaKpOiAheOAguWmguaenOS9oOS9v+eUqOiLseaWhwor5Lqk5rWB5pyJ5Zuw6Zq+55qE6K+d77yM5Lmf5Y+v5Lul5ZCR5Lit5paH54mI57u05oqk6ICF5rGC5Yqp44CC5aaC5p6c5pys57+76K+R5pu05paw5LiN5Y+K5pe25oiW6ICF57+7Civor5HlrZjlnKjpl67popjvvIzor7fogZTns7vkuK3mlofniYjnu7TmiqTogIXjgIIKK+iLseaWh+eJiOe7tOaKpOiAhe+8miBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+CisJICBTYWthcmkgQWlsdXMgPHNha2FyaS5haWx1c0Bpa2kuZmk+CisJICBEYXZpZCBDb2hlbiA8ZGFjb2hlbkBnbWFpbC5jb20+CivkuK3mlofniYjnu7TmiqTogIXvvJog5YKF54KcIEZ1IFdlaSA8dGVra2FtYW5uaW5qYUBnbWFpbC5jb20+CivkuK3mlofniYjnv7vor5HogIXvvJog5YKF54KcIEZ1IFdlaSA8dGVra2FtYW5uaW5qYUBnbWFpbC5jb20+CivkuK3mlofniYjmoKHor5HogIXvvJog5YKF54KcIEZ1IFdlaSA8dGVra2FtYW5uaW5qYUBnbWFpbC5jb20+CisKKwor5Lul5LiL5Li65q2j5paHCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK09NQVAgMyDlm77lg4/kv6Hlj7flpITnkIblmaggKElTUCkg6amx5YqoCisKK0NvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbgorQ29weXJpZ2h0IChDKSAyMDA5IFRleGFzIEluc3RydW1lbnRzLCBJbmMuCisKK+iBlOezu+S6ujogTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgorCSAgU2FrYXJpIEFpbHVzIDxzYWthcmkuYWlsdXNAaWtpLmZpPgorCSAgRGF2aWQgQ29oZW4gPGRhY29oZW5AZ21haWwuY29tPgorCisKK+S7i+e7jQorPT09CisKK+acrOaWh+aho+S7i+e7jeS6hueUsSBkcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwIOWKoOi9veeahOW+t+W3nuS7quWZqAor77yIVEnvvIlPTUFQIDMg5Zu+5YOP5L+h5Y+35aSE55CG5ZmoIChJU1ApIOmpseWKqOOAguWOn+Wni+mpseWKqOeUseW+t+W3nuS7quWZqO+8iFRJ77yJCivnvJblhpnvvIzkvYbmraTlkI7nlLHor7rln7rkuprph43lhpnkuobkuKTmrKHjgIIKKwor6amx5Yqo5bey5Zyo5Lul5LiLIE9NQVAgMyDns7vliJfnmoToiq/niYfkuK3miJDlip/kvb/nlKjvvJoKKworCTM0MzAKKwkzNTMwCisJMzYzMAorCivpqbHliqjlrp7njrDkuoYgVjRMMuOAgeWqkuS9k+aOp+WItuWZqOWSjCB2NGwyX3N1YmRldiDmjqXlj6PjgILmlK/mjIHlhoXmoLjkuK3kvb/nlKgKK3Y0bDJfc3ViZGV2IOaOpeWPo+eahOS8oOaEn+WZqOOAgemVnOWktOWSjOmXquWFieeBr+mpseWKqOOAggorCisKK+aLhuWIhuS4uuWtkOiuvuWkhworPT09PT09PT09PQorCitPTUFQIDMgSVNQIOiiq+aLhuWIhuS4uiBWNEwyIOWtkOiuvuWkh++8jElTUOS4reeahOavj+S4quaooeWdl+mDveeUseS4gOS4quWtkOiuvuWkhwor5p2l6KGo56S644CC5q+P5Liq5a2Q6K6+5aSH5ZCR55So5oi356m66Ze05o+Q5L6b5LiA5LiqIFY0TDIg5a2Q6K6+5aSH5o6l5Y+j44CCCisKKwlPTUFQMyBJU1AgQ0NQMgorCU9NQVAzIElTUCBDU0kyYQorCU9NQVAzIElTUCBDQ0RDCisJT01BUDMgSVNQIHByZXZpZXcKKwlPTUFQMyBJU1AgcmVzaXplcgorCU9NQVAzIElTUCBBRVdCCisJT01BUDMgSVNQIEFGCisJT01BUDMgSVNQIGhpc3RvZ3JhbQorCitJU1Ag5Lit5q+P5Liq5Y+v6IO955qE6L+e5o6l6YO96YCa6L+H5LiA5Liq6ZO+5o6l5bWM5YWl5Yiw5aqS5L2T5o6n5Yi25Zmo5o6l5Y+j5Lit44CC6K+m6KeB5L6L56iLIFsyXeOAggorCisKK+aOp+WItiBPTUFQIDMgSVNQCis9PT09PT09PT09PT09PQorCivpgJrluLjvvIzlr7kgT01BUCAzIElTUCDnmoTphY3nva7kvJrlnKjkuIvkuIDluKfotbflp4vml7bnlJ/mlYjjgILlnKjkvKDmhJ/lmajlnoLnm7TmtojpmpDmnJ/pl7TvvIwKK+aooeWdl+WPmOS4uuepuumXsuaXtuWujOaIkOmFjee9ruOAguWcqOWGheWtmOWIsOWGheWtmOeahOaTjeS9nOS4re+8jOinhumikeeuoemBk+S4gOasoeWkhOeQhuS4gOW4p+OAggor5bqU55So6YWN572u5bqU5Zyo5bin6Ze05a6M5oiQ44CCCisKK0lTUCDkuK3nmoTmiYDmnInmqKHlnZfvvIzpmaQgQ1NJLTIg5ZKMIO+8iOWPr+iDveWtmOWcqOeahO+8iUNDUDIg5o6l5pS25Zmo5aSW77yM6YO95b+F6aG7CivmjqXmlLblrozmlbTnmoTluKfmlbDmja7jgILlm6DmraTvvIzkvKDmhJ/lmajlv4Xpobvkv53or4Hku47kuI3lj5HpgIHpg6jliIbluKfmlbDmja7nu5lJU1DjgIIKKworQXV0b2lkbGXvvIjoh6rliqjnqbrpl7LvvInlip/og73oh7PlsJHlnKggMzQzMCDnmoQgSVNQIOaooeWdl+S4reehruWunuWtmOWcqOS4gOS6m+mXrumimOOAggor5b2TIG9tYXAzaXNwIOaooeWdl+WPguaVsCBhdXRvaWRsZSDpnZ7pm7bml7bvvIxhdXRvaWRsZe+8iOiHquWKqOepuumXsu+8ieWKn+iDvQor5LuF5ZyoIDM2MzAg5Lit5ZCv55So5LqG44CCCisKKwor5LqL5Lu25py65Yi2Cis9PT09PT0KKworT01BUCAzIElTUCDpqbHliqjlnKggQ0NEQyDlkoznu5/orqHvvIhBRVdC44CBQUYg5ZKMIOebtOaWueWbvu+8ieWtkOiuvuWkh+S4reaUr+aMgQorVjRMMiDkuovku7bmnLrliLbmjqXlj6PjgIIKKworQ0NEQyDlrZDorr7lpIfpgJrov4cgSFNfVlMg5Lit5pat77yM5aSE55CGIFY0TDJfRVZFTlRfRlJBTUVfU1lOQyDnsbvlnosKK+S6i+S7tu+8jOeUqOS6juWRiuefpeW4p+i1t+Wni+OAguaXqeacn+eJiOacrOeahOmpseWKqOWImeS9v+eUqCBWNEwyX0VWRU5UX09NQVAzSVNQX0hTX1ZT44CCCivlvZPlnKggQ0NEQyDmqKHlnZfkuK3mjqXmlLbliLDotbflp4vluKfnmoTnrKzkuIDooYzml7bvvIzkvJrlh4bnoa7lnLDop6blj5Hkuovku7bjgILov5nkuKrkuovku7YKK+WPr+S7peWcqCBDQ0RDIOWtkOiuvuWkh+S4reKAnOiuoumYheKAneOAggorCivvvIjlvZPkvb/nlKjlubbooYzmjqXlj6Pml7bvvIzlv4Xpobvms6jmhI/mraPnoa7lnLDphY3nva4gVlMg5L+h5Y+35p6B5oCn44CC6ICM5b2T5L2/55So5Liy6KGM5o6l5pS25pe2Civov5nkuKrkvJroh6rliqjmoKHmraPjgILvvIkKKwor5q+P5Liq57uf6K6h5a2Q6K6+5aSH6YO95Y+v5Lul5Lqn55Sf5LqL5Lu244CC5q+P5b2T5LiA5Liq57uf6K6h57yT5Yay5Yy65Y+v55Sx55So5oi356m66Ze05bqU55So56iL5bqPCivpgJrov4cgVklESU9DX09NQVAzSVNQX1NUQVRfUkVRIElPQ1RMIOaTjeS9nOiOt+WPluaXtu+8jOWwseS8muS6p+eUn+S4gOS4qgor5LqL5Lu244CC5b2T5YmN5a2Y5Zyo5Lul5LiL5LqL5Lu277yaCisKKwlWNEwyX0VWRU5UX09NQVAzSVNQX0FFV0IKKwlWNEwyX0VWRU5UX09NQVAzSVNQX0FGCisJVjRMMl9FVkVOVF9PTUFQM0lTUF9ISVNUCisKK+i/meS6myBpb2N0bCDnmoTkuovku7bmlbDmja7nsbvlnovkuLogc3RydWN0IG9tYXAzaXNwX3N0YXRfZXZlbnRfc3RhdHVzCivnu5PmnoTkvZPjgILlpoLmnpzlh7rnjrDorqHnrpfplJnor6/nmoTnu5/orqHvvIzkuZ/lkIzmoLfkvJrkuqfnlJ/kuIDkuKrkuovku7bvvIzkvYbmsqHmnInnm7jlhbPnmoTnu5/orqEKK+aVsOaNrue8k+WGsuWMuuOAgui/meenjeaDheWGteS4iyBvbWFwM2lzcF9zdGF0X2V2ZW50X3N0YXR1cy5idWZfZXJyIOS8muiiqwor6K6+572u5Li66Z2e6Zu25YC844CCCisKKwor56eB5pyJIElPQ1RMCis9PT09PT09PT09CisKK09NQVAgMyBJU1Ag6amx5Yqo5pSv5oyB5qCH5YeG55qEIFY0TDIgSU9DVEwg5Lul5Y+K5Y+v6IO95a2Y5Zyo5LiU5a6e55So55qE5o6n5Yi244CC5L2GCitJU1Ag5o+Q5L6b55qE6K645aSa5Yqf6IO96YO95LiN5Zyo5qCH5YeGIElPQ1RMIOS5i+WIl++8jOS+i+WmgiBnYW1tYe+8iOS8vemprO+8ieihqOWSjOe7n+iuoQor5pWw5o2u6YeH6ZuG6YWN572u562J44CCCisKK+mAmuW4uO+8jOS8muacieS4gOS4quengeaciSBpb2N0bCDnlKjkuo7phY3nva7mr4/kuKrljIXlkKvnoazku7bkvp3otZblip/og73nmoTmqKHlnZfjgIIKKwor5pSv5oyB5Lul5LiL56eB5pyJIElPQ1RM77yaCisKKwlWSURJT0NfT01BUDNJU1BfQ0NEQ19DRkcKKwlWSURJT0NfT01BUDNJU1BfUFJWX0NGRworCVZJRElPQ19PTUFQM0lTUF9BRVdCX0NGRworCVZJRElPQ19PTUFQM0lTUF9ISVNUX0NGRworCVZJRElPQ19PTUFQM0lTUF9BRl9DRkcKKwlWSURJT0NfT01BUDNJU1BfU1RBVF9SRVEKKwlWSURJT0NfT01BUDNJU1BfU1RBVF9FTgorCivlnKggaW5jbHVkZS9saW51eC9vbWFwM2lzcC5oIOS4reaPj+i/sOS6hui/meS6myBpb2N0bCDkvb/nlKjnmoTlj4LmlbDnu5PmnoTkvZPjgIIKK+S4jueJueWumiBJU1Ag5qih5Z2X55u45YWz55qEIElTUCDoh6rouqvnmoTor6bnu4blip/og73lnKjmioDmnK/lj4LogIPmiYvlhowgKFRSTXMp5Lit5pyJCivmj4/ov7DvvIzor6bop4HmlofmoaPnu5PlsL7jgIIKKwor6Jm954S25Zyo5LiN5L2/55So5Lu75L2V56eB5pyJIElPQ1RMIOeahOaDheWGteS4i+S9v+eUqCBJU1Ag6amx5Yqo5piv5Y+v6IO955qE77yM5L2G6L+Z5qC35peg5rOVCivojrflvpfmnIDkvbPnmoTlm77lg4/otKjph4/jgIJBRVdC44CBQUYg5ZKMIOebtOaWueWbvu+8iOivkeiAheazqO+8muS4gOiIrOeUqOS6juiHquWKqOabneWFieWSjOWinuebigor5o6n5Yi277yM5Lul5Y+K5Zu+5YOP5Z2H6KGh562J77yJ5qih5Z2X5peg5rOV5Zyo5pyq5L2/55So6YCC5b2T55qE56eB5pyJIElPQ1RMIOmFjee9rueahOaDheWGteS4i+S9v+eUqOOAggorCisKK0NDREMg5ZKMIHByZXZpZXfvvIjpooTop4jvvInmqKHlnZcgSU9DVEwKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVklESU9DX09NQVAzSVNQX0NDRENfQ0ZHIOWSjCBWSURJT0NfT01BUDNJU1BfUFJWX0NGRyBJT0NUTAor6KKr5YiG5Yir55So5LqO6YWN572u44CB5ZCv55So5ZKM56aB55SoIENDREMg5ZKMIHByZXZpZXfvvIjpooTop4jvvInmqKHlnZfnmoTlip/og73jgILlnKjlroPku6wKK+aJgOaOp+WItueahOaooeWdl+S4re+8jOS4pOS4qiBJT0NUTCDmjqfliLblpJrnp43lip/og73jgIJWSURJT0NfT01BUDNJU1BfQ0NEQ19DRkcgSU9DVEwKK+aOpeWPl+S4gOS4quaMh+WQkSBvbWFwM2lzcF9jY2RjX3VwZGF0ZV9jb25maWcg57uT5p6E5L2T55qE5oyH6ZKI5L2c5Li65a6D55qE5Y+C5pWw44CCCivlkIzmoLfnmoTvvIxWSURJT0NfT01BUDNJU1BfUFJWX0NGRyDmjqXlj5fkuIDkuKrmjIflkJEgb21hcDNpc3BfcHJldl91cGRhdGVfY29uZmlnCivnu5PmnoTkvZPnmoTmjIfpkojjgILku6XkuIrkuKTkuKrnu5PmnoTkvZPlrprkuYnkvY3kuo4gWzFd44CCCisKK+i/meS6m+e7k+aehOS9k+S4reeahCB1cGRhdGUg5Z+f5qCH6K+G5piv5ZCm6ZKI5a+55oyH5a6a55qE5Yqf6IO95pu05paw6YWN572u77yM6ICMIGZsYWcg5Z+fCivliJnmoIfor4bmmK/lkK/nlKjov5jmmK/npoHnlKjmraTlip/og73jgIIKKwordXBkYXRlIOWSjCBmbGFnIOS9jeaOpeWPl+S7peS4i+aOqeeggeWAvOOAgkNDREMg5ZKMIHByZXZpZXfvvIjpooTop4jvvInmqKHlnZfnmoQKK+avj+S4quWNleeLrOWKn+iDvemDveS4juS4gOS4qiBmbGFnIOWFs+iBlO+8iOemgeeUqOaIluWQr+eUqO+8m+WcqOe7k+aehOS9k+S4rSBmbGFnIOWfn+eahAor5LiA6YOo5YiG77yJ5ZKM5LiA5Liq5oyH5ZCR5Yqf6IO96YWN572u5pWw5o2u55qE5oyH6ZKI44CCCisKK+WvueS6jiBWSURJT0NfT01BUDNJU1BfQ0NEQ19DRkfvvIzkuIvpnaLliJflh7rkuoYgdXBkYXRlIOWSjCBmbGFnIOWfnwor5Lit55qE5pyJ5pWI5YC844CCIOi/meS6m+WAvOWPr+iDveS8muWcqOWQjOS4gOS4qiBJT0NUTCDosIPnlKjkuK3phY3nva7lpJrkuKrlip/og73jgIIKKworICAgICAgICBPTUFQM0lTUF9DQ0RDX0FMQVcKKyAgICAgICAgT01BUDNJU1BfQ0NEQ19MUEYKKyAgICAgICAgT01BUDNJU1BfQ0NEQ19CTENMQU1QCisgICAgICAgIE9NQVAzSVNQX0NDRENfQkNPTVAKKyAgICAgICAgT01BUDNJU1BfQ0NEQ19GUEMKKyAgICAgICAgT01BUDNJU1BfQ0NEQ19DVUxMCisgICAgICAgIE9NQVAzSVNQX0NDRENfQ09ORklHX0xTQworICAgICAgICBPTUFQM0lTUF9DQ0RDX1RCTF9MU0MKKwor6ZKI5a+5IFZJRElPQ19PTUFQM0lTUF9QUlZfQ0ZHIOeahOebuOW6lOWAvOWmguS4i++8mgorCisgICAgICAgIE9NQVAzSVNQX1BSRVZfTFVNQUVOSAorICAgICAgICBPTUFQM0lTUF9QUkVWX0lOVkFMQVcKKyAgICAgICAgT01BUDNJU1BfUFJFVl9IUlpfTUVECisgICAgICAgIE9NQVAzSVNQX1BSRVZfQ0ZBCisgICAgICAgIE9NQVAzSVNQX1BSRVZfQ0hST01BX1NVUFAKKyAgICAgICAgT01BUDNJU1BfUFJFVl9XQgorICAgICAgICBPTUFQM0lTUF9QUkVWX0JMS0FESgorICAgICAgICBPTUFQM0lTUF9QUkVWX1JHQjJSR0IKKyAgICAgICAgT01BUDNJU1BfUFJFVl9DT0xPUl9DT05WCisgICAgICAgIE9NQVAzSVNQX1BSRVZfWUNfTElNSVQKKyAgICAgICAgT01BUDNJU1BfUFJFVl9ERUZFQ1RfQ09SCisgICAgICAgIE9NQVAzSVNQX1BSRVZfR0FNTUFCWVBBU1MKKyAgICAgICAgT01BUDNJU1BfUFJFVl9EUktfRlJNX0NBUFRVUkUKKyAgICAgICAgT01BUDNJU1BfUFJFVl9EUktfRlJNX1NVQlRSQUNUCisgICAgICAgIE9NQVAzSVNQX1BSRVZfTEVOU19TSEFESU5HCisgICAgICAgIE9NQVAzSVNQX1BSRVZfTkYKKyAgICAgICAgT01BUDNJU1BfUFJFVl9HQU1NQQorCivlnKjlkK/nlKjmn5DkuKrlip/og73nmoTml7blgJnvvIznm7jlhbPnmoTphY3nva7mlbDmja7mjIfpkojkuI3lj6/kuLogTlVMTOOAguWcqOemgeeUqOafkOS4quWKn+iDveaXtu+8jAor6YWN572u5pWw5o2u5oyH6ZKI5Lya6KKr5b+955Wl44CCCisKKwor57uf6K6h5qih5Z2XIElPQ1RMCis9PT09PT09PT09PT09CisKK+e7n+iuoeWtkOiuvuWkh+ebuOi+g+S6juWFtuS7luWtkOiuvuWkh+aPkOS+m+S6huabtOWkmuWKqOaAgemFjee9rumAiemhueOAguWcqOWbvuWDj+WkhOeQhua1geawtOe6v+WkhOS6jgor5bel5L2c54q25oCB5pe277yM5a6D5Lus5Y+v5Lul6KKr5ZCv55So44CB56aB55So5ZKM6YeN6YWN44CCCisKK+e7n+iuoeaooeWdl+aAu+aYr+S7jiBDQ0RDIOS4reiOt+WPlui+k+WFpeeahOWbvuWDj+aVsOaNru+8iOeUseS6juebtOaWueWbvuWGheWtmOivu+WPluacquWunueOsO+8ieOAggor57uf6K6h5pWw5o2u5Y+v55Sx55So5oi36YCa6L+H57uf6K6h5a2Q6K6+5aSH6IqC54K55L2/55So56eB5pyJIElPQ1RMIOiOt+WPluOAggorCitBRVdC44CBQUYg5ZKMIOebtOaWueWbvuWtkOiuvuWkh+aPkOS+m+eahOengeaciSBJT0NUTCDmnoHlpKfnqIvluqbkuIrlj43lupTkuoYgSVNQIOehrOS7tgor5o+Q5L6b55qE5a+E5a2Y5Zmo57qn5o6l5Y+j44CC5pyJ5Lqb5pa56Z2i57qv57K55ZKM6amx5Yqo56iL5bqP55qE5a6e546w55u45YWz77yM6L+Z5Lqb5bCG5Zyo5LiL6Z2i6K6o6K6644CCCisKK1ZJRElPQ19PTUFQM0lTUF9TVEFUX0VOCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCivov5nkuKrnp4HmnIkgSU9DVEwg5ZCv55SoL+emgeeUqCDkuIDkuKrnu5/orqHmqKHlnZfjgILlpoLmnpzov5nkuKrnlLPor7flnKjop4bpopHmtYHlkK/liqjliY3lrozmiJDvvIwKK+Wug+WwhuWcqOinhumikea1geawtOe6v+W8gOWni+W3peS9nOaXtueUn+aViOOAguWmguaenOinhumikea1geawtOe6v+W3sue7j+WkhOS6juW3peS9nOeKtuaAgeS6hu+8jOWug+WwhuWcqAorQ0NEQyDlj5jkuLrnqbrpl7Lml7bnlJ/mlYjjgIIKKworVklESU9DX09NQVAzSVNQX0FFV0JfQ0ZHLCBWSURJT0NfT01BUDNJU1BfSElTVF9DRkcgYW5kIFZJRElPQ19PTUFQM0lTUF9BRl9DRkcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK+i/meS6myBJT0NUTCDnlKjkuo7phY3nva7mqKHlnZfjgILlroPku6zopoHmsYLnlKjmiLflupTnlKjnqIvluo/lr7nnoazku7bmnInmt7HlhaXnmoTorqTor4bjgILlr7kKK+Wkp+WkmuaVsOWfn+eahOino+mHiuWPr+S7peWcqCBPTUFQIOeahCBUUk0g5Lit5om+5Yiw44CC5Lul5LiL5Lik5Liq5Z+f5a+55LqO5Lul5LiK5omA5pyJ55qECivnp4HmnIkgSU9DVEwg6YWN572u6YO95b6I5bi46KeB77yM55Sx5LqO5LuW5Lus5rKh5pyJ5ZyoIFRSTSDkuK3mj5Dlj4rvvIzmlYXpnIDopoHlr7nlhbbmnIkKK+abtOWlveeahOiupOivhuOAggorCitvbWFwM2lzcF9baDNhX2FmL2gzYV9hZXdiL2hpc3RdX2NvbmZpZy5idWZfc2l6ZToKKwor5qih5Z2X5Zyo5YaF6YOo5aSE55CG6Ieq6Lqr57yT5Yay44CC5a+55qih5Z2X5pWw5o2u6L6T5Ye65omA5b+F6ZyA55qE57yT5a2Y5aSn5bCP5L6d6LWW5LqO5bey55Sz6K+355qE6YWN572u44CCCivomb3nhLbpqbHliqjmlK/mjIHlnKjop4bpopHmtYHlt6XkvZzml7bph43mlrDphY3nva7vvIzkvYblr7nkuo7miYDpnIDnvJPlrZjph4/lpKfkuo7mqKHlnZflkK/nlKjml7blhoXpg6gKK+aJgOWIhumFjeaVsOmHj+eahOaDheWGte+8jOWImeS4jeaUr+aMgemHjeaWsOmFjee9ruOAguWcqOi/meenjeaDheWGteS4i+Wwhui/lOWbniAtRUJVU1njgILkuLrkuobpgb/lhY0KK+atpOexu+eKtuWGte+8jOaXoOiuuuaYr+emgeeUqC/ph43phY0v5ZCv55So5qih5Z2X77yM6L+Y5piv56ys5LiA5qyh6YWN572u5pe255Sz6K+35b+F6aG755qE57yT5a2Y5aSn5bCP77yMCivpg73lupTlnKjmqKHlnZfnpoHnlKjnmoTmg4XlhrXkuIvov5vooYzjgIIKKwor5YaF6YOo57yT5Yay5YiG6YWN55qE5aSn5bCP6ZyA57u85ZCI6ICD6JmR5omA55Sz6K+36YWN572u55qE5pyA5bCP57yT5a2Y6YeP5Lul5Y+KIGJ1Zl9zaXplIOWfn+S4rQor5omA6K6+55qE5YC844CC5aaC5p6cIGJ1Zl9zaXplIOWfn+WcqFttaW5pbXVt77yI5pyA5bCP5YC877yJLCBtYXhpbXVt77yI5pyA5aSn5YC877yJXQor57yT5Yay5aSn5bCP6IyD5Zu05LmL5aSW77yM5YiZ5bqU6K+l5bCG5YW26LCD5pW05Yiw5YW26IyD5Zu05Lit44CC6amx5Yqo5YiZ5Lya6YCJ5oup5pyA5aSn5YC844CC5q2j56Gu55qECitidWZfc2l6ZSDlgLzlsIblm57lhpnliLDnlKjmiLflupTnlKjnqIvluo/kuK3jgIIKKworb21hcDNpc3BfW2gzYV9hZi9oM2FfYWV3Yi9oaXN0XV9jb25maWcuY29uZmlnX2NvdW50ZXI6CisKK+eUseS6jumFjee9ruW5tuacquWcqOeUs+ivt+S5i+WQjuWQjOatpeeUn+aViO+8jOmpseWKqOW/hemhu+aPkOS+m+S4gOS4qui3n+i4qui/meexu+S/oeaBr+eahOaWueazle+8jAor5Lul5o+Q5L6b5pu05YeG56Gu55qE5pWw5o2u44CC5Zyo5LiA5Liq6YWN572u6KKr55Sz6K+35LmL5ZCO77yM6L+U5Zue5Yiw55So5oi356m66Ze05bqU55So56iL5bqP55qECitjb25maWdfY291bnRlciDmmK/kuIDkuKrkuI7lhbbphY3nva7nm7jlhbPnmoTllK/kuIDlgLzjgILlvZPnlKjmiLflupTnlKjnqIvluo/mjqXmlLbliLAKK+S4gOS4que8k+WGsuWPr+eUqOaIluS4gOS4quaWsOeahOe8k+WGsueUs+ivt+S6i+S7tuaXtu+8jOi/meS4qiBjb25maWdfY291bnRlciDnlKjkuo4KK+S4gOS4que8k+WGsuaVsOaNruWSjOS4gOS4qumFjee9rueahOWMuemFjeOAggorCitWSURJT0NfT01BUDNJU1BfU1RBVF9SRVEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCivlsIblhoXpg6jnvJPlhrLpmJ/liJfkuK3mnIDml6nnmoTmlbDmja7lj5HpgIHliLDnlKjmiLfnqbrpl7TvvIznhLblkI7kuKLlvIPmraTnvJPlhrLljLrjgIIKK29tYXAzaXNwX3N0YXRfZGF0YS5mcmFtZV9udW1iZXIg5Z+f5LiO6KeG6aKR57yT5Yay55qEIGZpZWxkX2NvdW50Civln5/nm7jljLnphY3jgIIKKworCivmioDmnK/lj4LogIPmiYvlhowgKFRSTXMpIOWSjOWFtuS7luaWh+ahoworPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworT01BUCAzNDMwIFRSTToKKzxVUkw6aHR0cDovL2ZvY3VzLnRpLmNvbS9wZGZzL3d0YnUvT01BUDM0eHhfRVMzLjEueF9QVUJMSUNfVFJNX3ZaTS56aXA+Civlj4LogIPkuo4gMjAxMS0wMy0wNS4KKworT01BUCAzNXh4IFRSTToKKzxVUkw6aHR0cDovL3d3dy50aS5jb20vbGl0di9wZGYvc3BydWY5OG8+IOWPguiAg+S6jiAyMDExLTAzLTA1LgorCitPTUFQIDM2MzAgVFJNOgorPFVSTDpodHRwOi8vZm9jdXMudGkuY29tL3BkZnMvd3RidS9PTUFQMzZ4eF9FUzEueF9QVUJMSUNfVFJNX3ZRLnppcD4KK+WPguiAg+S6jiAyMDExLTAzLTA1LgorCitETSAzNzMwIFRSTToKKzxVUkw6aHR0cDovL3d3dy50aS5jb20vbGl0di9wZGYvc3BydWduNGg+IOWPguiAg+S6jiAyMDExLTAzLTA2LgorCisKK+WPguiAg+i1hOaWmQorPT09PT09PQorCitbMV0gaW5jbHVkZS9saW51eC9vbWFwM2lzcC5oCisKK1syXSBodHRwOi8vZ2l0LmlkZWFzb25ib2FyZC5vcmcvP3A9bWVkaWEtY3RsLmdpdDthPXN1bW1hcnkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vemhfQ04vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0IGIvRG9jdW1lbnRhdGlvbi96aF9DTi92aWRlbzRsaW51eC92NGwyLWZyYW1ld29yay50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI4MjhlNgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vemhfQ04vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0CkBAIC0wLDAgKzEsOTc2IEBACitDaGluZXNlIHRyYW5zbGF0ZWQgdmVyc2lvbiBvZiBEb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dAorCitJZiB5b3UgaGF2ZSBhbnkgY29tbWVudCBvciB1cGRhdGUgdG8gdGhlIGNvbnRlbnQsIHBsZWFzZSBjb250YWN0IHRoZQorb3JpZ2luYWwgZG9jdW1lbnQgbWFpbnRhaW5lciBkaXJlY3RseS4gIEhvd2V2ZXIsIGlmIHlvdSBoYXZlIGEgcHJvYmxlbQorY29tbXVuaWNhdGluZyBpbiBFbmdsaXNoIHlvdSBjYW4gYWxzbyBhc2sgdGhlIENoaW5lc2UgbWFpbnRhaW5lciBmb3IKK2hlbHAuICBDb250YWN0IHRoZSBDaGluZXNlIG1haW50YWluZXIgaWYgdGhpcyB0cmFuc2xhdGlvbiBpcyBvdXRkYXRlZAorb3IgaWYgdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIHRyYW5zbGF0aW9uLgorCitNYWludGFpbmVyOiBNYXVybyBDYXJ2YWxobyBDaGVoYWIgPG1jaGVoYWJAaW5mcmFkZWFkLm9yZz4KK0NoaW5lc2UgbWFpbnRhaW5lcjogRnUgV2VpIDx0ZWtrYW1hbm5pbmphQGdtYWlsLmNvbT4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC92NGwyLWZyYW1ld29yay50eHQg55qE5Lit5paH57+76K+RCisKK+WmguaenOaDs+ivhOiuuuaIluabtOaWsOacrOaWh+eahOWGheWuue+8jOivt+ebtOaOpeiBlOezu+WOn+aWh+aho+eahOe7tOaKpOiAheOAguWmguaenOS9oOS9v+eUqOiLseaWhwor5Lqk5rWB5pyJ5Zuw6Zq+55qE6K+d77yM5Lmf5Y+v5Lul5ZCR5Lit5paH54mI57u05oqk6ICF5rGC5Yqp44CC5aaC5p6c5pys57+76K+R5pu05paw5LiN5Y+K5pe25oiW6ICF57+7Civor5HlrZjlnKjpl67popjvvIzor7fogZTns7vkuK3mlofniYjnu7TmiqTogIXjgIIKK+iLseaWh+eJiOe7tOaKpOiAhe+8miBNYXVybyBDYXJ2YWxobyBDaGVoYWIgPG1jaGVoYWJAaW5mcmFkZWFkLm9yZz4KK+S4reaWh+eJiOe7tOaKpOiAhe+8miDlgoXngpwgRnUgV2VpIDx0ZWtrYW1hbm5pbmphQGdtYWlsLmNvbT4KK+S4reaWh+eJiOe/u+ivkeiAhe+8miDlgoXngpwgRnUgV2VpIDx0ZWtrYW1hbm5pbmphQGdtYWlsLmNvbT4KK+S4reaWh+eJiOagoeivkeiAhe+8miDlgoXngpwgRnUgV2VpIDx0ZWtrYW1hbm5pbmphQGdtYWlsLmNvbT4KKworCivku6XkuIvkuLrmraPmlocKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVjRMMiDpqbHliqjmoYbmnrbmpoLop4gKKz09PT09PT09PT09PT09CisKK+acrOaWh+aho+aPj+i/sCBWNEwyIOahhuaetuaJgOaPkOS+m+eahOWQhOenjee7k+aehOWSjOWug+S7rOS5i+mXtOeahOWFs+ezu+OAggorCisKK+S7i+e7jQorLS0tLQorCivlpKfpg6jliIbnjrDku6MgVjRMMiDorr7lpIfnlLHlpJrkuKogSUMg57uE5oiQ77yM5ZyoIC9kZXYg5LiL5a+85Ye65aSa5Liq6K6+5aSH6IqC54K577yMCivlubblkIzml7bliJvlu7rpnZ4gVjRMMiDorr7lpIfvvIjlpoIgRFZC44CBQUxTQeOAgUZC44CBSTJDIOWSjOe6ouWklui+k+WFpeiuvuWkh++8ieOAggor55Sx5LqO6L+Z56eN56Gs5Lu255qE5aSN5p2C5oCn77yMVjRMMiDpqbHliqjkuZ/lj5jlvpfpnZ7luLjlpI3mnYLjgIIKKwor5bCk5YW25pivIFY0TDIg5b+F6aG75pSv5oyBIElDIOWunueOsOmfs+inhumikeeahOWkmui3r+WkjeeUqOWSjOe8luino+egge+8jOi/meWwseabtOWinuWKoOS6huWFtgor5aSN5p2C5oCn44CC6YCa5bi46L+Z5LqbIElDIOmAmui/h+S4gOS4quaIluWkmuS4qiBJMkMg5oC757q/6L+e5o6l5Yiw5Li75qGl6amx5Yqo5Zmo77yM5L2G5Lmf5Y+vCivkvb/nlKjlhbbku5bmgLvnur/jgILov5nkupvorr7lpIfnp7DkuLrigJzlrZDorr7lpIfigJ3jgIIKKwor6ZW/5pyf5Lul5p2l77yM6L+Z5Liq5qGG5p625LuF6ZmQ5LqO6YCa6L+HIHZpZGVvX2RldmljZSDnu5PmnoTkvZPliJvlu7ogVjRMIOiuvuWkh+iKgueCue+8jAor5bm25L2/55SoIHZpZGVvX2J1ZiDlpITnkIbop4bpopHnvJPlhrLvvIjms6jvvJrmnKzmlofkuI3orqjorrogdmlkZW9fYnVmIOahhuaetu+8ieOAggorCivov5nmhI/lkbPnnYDmiYDmnInpqbHliqjlv4Xpobvoh6rlt7Horr7nva7orr7lpIflrp7kvovlubbov57mjqXliLDlrZDorr7lpIfjgILlhbbkuK3kuIDpg6jliIbopoHmraPnoa7lnLAKK+WujOaIkOaYr+avlOi+g+WkjeadgueahO+8jOS9v+W+l+iuuOWkmumpseWKqOmDveayoeacieato+ehruWcsOWunueOsOOAggorCivnlLHkuo7moYbmnrbnmoTnvLrlpLHvvIzmnInlvojlpJrpgJrnlKjku6PnoIHpg73kuI3lj6/ph43lpI3liKnnlKjjgIIKKwor5Zug5q2k77yM6L+Z5Liq5qGG5p625p6E5bu65omA5pyJ6amx5Yqo6YO96ZyA6KaB55qE5Z+65pys57uT5p6E5Z2X77yM6ICM57uf5LiA55qE5qGG5p625bCG5L2/6YCa55So5Luj56CBCivliJvlu7rmiJDlrp7nlKjlh73mlbDlubblnKjmiYDmnInpqbHliqjkuK3lhbHkuqvlj5jlvpfmm7TliqDlrrnmmJPjgIIKKworCivpqbHliqjnu5PmnoQKKy0tLS0tLS0KKwor5omA5pyJIFY0TDIg6amx5Yqo6YO95pyJ5aaC5LiL57uT5p6E77yaCisKKzEpIOavj+S4quiuvuWkh+WunuS+i+eahOe7k+aehOS9ky0t5YyF5ZCr5YW26K6+5aSH54q25oCB44CCCisKKzIpIOWIneWni+WMluWSjOaOp+WItuWtkOiuvuWkh+eahOaWueazle+8iOWmguaenOacie+8ieOAggorCiszKSDliJvlu7ogVjRMMiDorr7lpIfoioLngrkgKC9kZXYvdmlkZW9Y44CBL2Rldi92YmlYIOWSjCAvZGV2L3JhZGlvWCkKKyAgIOW5tui3n+i4quiuvuWkh+iKgueCueeahOeJueWumuaVsOaNruOAggorCis0KSDnibnlrprmlofku7blj6Xmn4Tnu5PmnoTkvZMtLeWMheWQq+avj+S4quaWh+S7tuWPpeafhOeahOaVsOaNruOAggorCis1KSDop4bpopHnvJPlhrLlpITnkIbjgIIKKwor5Lul5LiL5piv5a6D5Lus55qE5Yid55Wl5YWz57O75Zu+77yaCisKKyAgICBkZXZpY2UgaW5zdGFuY2Vz77yI6K6+5aSH5a6e5L6L77yJCisgICAgICB8CisgICAgICArLXN1Yi1kZXZpY2UgaW5zdGFuY2Vz77yI5a2Q6K6+5aSH5a6e5L6L77yJCisgICAgICB8CisgICAgICBcLVY0TDIgZGV2aWNlIG5vZGVz77yIVjRMMiDorr7lpIfoioLngrnvvIkKKwkgIHwKKwkgIFwtZmlsZWhhbmRsZSBpbnN0YW5jZXPvvIjmlofku7blj6Xmn4Tlrp7kvovvvIkKKworCivmoYbmnrbnu5PmnoQKKy0tLS0tLS0KKwor6K+l5qGG5p626Z2e5bi457G75Ly86amx5Yqo57uT5p6E77ya5a6D5pyJ5LiA5LiqIHY0bDJfZGV2aWNlIOe7k+aehOeUqOS6juS/neWtmOiuvuWkhwor5a6e5L6L55qE5pWw5o2u77yb5LiA5LiqIHY0bDJfc3ViZGV2IOe7k+aehOS9k+S7o+ihqOWtkOiuvuWkh+WunuS+i++8m3ZpZGVvX2RldmljZQor57uT5p6E5L2T5L+d5a2YIFY0TDIg6K6+5aSH6IqC54K555qE5pWw5o2u77yb5bCG5p2lIHY0bDJfZmgg57uT5p6E5L2T5bCG6Lef6Liq5paH5Lu25Y+l5p+ECivlrp7kvovvvIjmmoLmnKrlsJrmnKrlrp7njrDvvInjgIIKKworVjRMMiDmoYbmnrbkuZ/lj6/kuI7lqpLkvZPmoYbmnrbmlbTlkIjvvIjlj6/pgInnmoTvvInjgILlpoLmnpzpqbHliqjorr7nva7kuoYgdjRsMl9kZXZpY2UKK+e7k+aehOS9k+eahCBtZGV2IOWfn++8jOWtkOiuvuWkh+WSjOinhumikeiKgueCueeahOWFpeWPo+WwhuiHquWKqOWHuueOsOWcqOWqkuS9k+ahhuaetuS4reOAggorCisKK3Y0bDJfZGV2aWNlIOe7k+aehOS9kworLS0tLS0tLS0tLS0tLS0tLQorCivmr4/kuKrorr7lpIflrp7kvovpg73pgJrov4cgdjRsMl9kZXZpY2UgKHY0bDItZGV2aWNlLmgp57uT5p6E5L2T5p2l6KGo56S644CCCivnroDljZXorr7lpIflj6/ku6Xku4XliIbphY3ov5nkuKrnu5PmnoTkvZPvvIzkvYblnKjlpKflpJrmlbDmg4XlhrXkuIvvvIzpg73kvJrlsIbov5nkuKrnu5PmnoTkvZMKK+W1jOWFpeWIsOS4gOS4quabtOWkp+eahOe7k+aehOS9k+S4reOAggorCivkvaDlv4Xpobvms6jlhozov5nkuKrorr7lpIflrp7kvovvvJoKKworCXY0bDJfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHY0bDJfZGV2aWNlICp2NGwyX2Rldik7CisKK+azqOWGjOaTjeS9nOWwhuS8muWIneWni+WMliB2NGwyX2RldmljZSDnu5PmnoTkvZPjgILlpoLmnpwgZGV2LT5kcml2ZXJfZGF0YSDln58KK+S4uiBOVUxM77yM5bCx5bCG5YW25oyH5ZCRIHY0bDJfZGV244CCCisKK+mcgOimgeS4juWqkuS9k+ahhuaetuaVtOWQiOeahOmpseWKqOW/hemhu+aJi+WKqOiuvue9riBkZXYtPmRyaXZlcl9kYXRh77yM5oyH5ZCR5YyF5ZCrCit2NGwyX2RldmljZSDnu5PmnoTkvZPlrp7kvovnmoTpqbHliqjnibnlrprorr7lpIfnu5PmnoTkvZPjgILov5nlj6/ku6XlnKjms6jlhowgVjRMMiDorr7lpIcKK+WunuS+i+WJjemAmui/hyBkZXZfc2V0X2RydmRhdGEoKSDlh73mlbDlrozmiJDjgILlkIzml7blv4Xpobvorr7nva4gdjRsMl9kZXZpY2UKK+e7k+aehOS9k+eahCBtZGV2IOWfn++8jOaMh+WQkemAguW9k+eahOWIneWni+WMluW5tuazqOWGjOi/h+eahCBtZWRpYV9kZXZpY2Ug5a6e5L6L44CCCisKK+WmguaenCB2NGwyX2Rldi0+bmFtZSDkuLrnqbrvvIzliJnlroPlsIbooqvorr7nva7kuLrku44gZGV2IOS4reihjeeUn+WHuueahOWAvO+8iOS4uuS6hgor5pu05Yqg57K+56Gu77yM5b2i5byP5Li66amx5Yqo5ZCN5ZCO6LefIGJ1c19pZO+8ieOAguWmguaenOS9oOWcqOiwg+eUqCB2NGwyX2RldmljZV9yZWdpc3Rlcgor5YmN5bey57uP6K6+572u5aW95LqG77yM5YiZ5LiN5Lya6KKr5L+u5pS544CC5aaC5p6cIGRldiDkuLogTlVMTO+8jOWImeS9oCrlv4Xpobsq5Zyo6LCD55SoCit2NGwyX2RldmljZV9yZWdpc3RlciDliY3orr7nva4gdjRsMl9kZXYtPm5hbWXjgIIKKwor5L2g5Y+v5Lul5Z+65LqO6amx5Yqo5ZCN5ZKM6amx5Yqo55qE5YWo5bGAIGF0b21pY190IOexu+Wei+eahOWunuS+i+e8luWPt++8jOmAmui/hwordjRsMl9kZXZpY2Vfc2V0X25hbWUoKSDorr7nva4gbmFtZeOAgui/meagt+S8mueUn+aIkOexu+S8vCBpdnR2MOOAgWl2dHYxIOetiQor5ZCN5a2X44CC6Iul6amx5Yqo5ZCN5Lul5pWw5a2X57uT5bC+77yM5YiZ5Lya5Zyo57yW5Y+35ZKM6amx5Yqo5ZCN6Ze05o+S5YWl5LiA5Liq56C05oqY5Y+377yM5aaC77yaCitjeDE4LTDjgIFjeDE4LTEg562J44CC5q2k5Ye95pWw6L+U5Zue5a6e5L6L57yW5Y+344CCCisKK+esrOS4gOS4qiDigJxkZXbigJ0g5Y+C5pWw6YCa5bi45piv5LiA5Liq5oyH5ZCRIHBjaV9kZXbjgIF1c2JfaW50ZXJmYWNlIOaIlgorcGxhdGZvcm1fZGV2aWNlIOeahOaMh+mSiOOAguW+iOWwkeS9v+WFtuS4uiBOVUxM77yM6Zmk6Z2e5piv5LiA5LiqSVNB6K6+5aSH5oiW6ICFCivlvZPkuIDkuKrorr7lpIfliJvlu7rkuoblpJrkuKogUENJIOiuvuWkh++8jOS9v+W+lyB2NGwyX2RldiDml6Dms5XkuI7kuIDkuKrnibnlrprnmoTniLborr7lpIcKK+WFs+iBlOOAggorCivkvaDkuZ/lj6/ku6Xmj5DkvpvkuIDkuKogbm90aWZ5KCkg5Zue6LCD77yM5L2/5a2Q6K6+5aSH5Y+v5Lul6LCD55So5a6D5a6e546w5LqL5Lu26YCa55+l44CCCivkvYbov5nkuKrorr7nva7kuI7lrZDorr7lpIfnm7jlhbPjgILlrZDorr7lpIfmlK/mjIHnmoTku7vkvZXpgJrnn6Xlv4XpobvlnKgKK2luY2x1ZGUvbWVkaWEvPHN1YmRldmljZT4uaCDkuK3lrprkuYnkuIDkuKrmtojmga/lpLTjgIIKKwor5rOo6ZSAIHY0bDJfZGV2aWNlIOS9v+eUqOWmguS4i+WHveaVsO+8mgorCisJdjRsMl9kZXZpY2VfdW5yZWdpc3RlcihzdHJ1Y3QgdjRsMl9kZXZpY2UgKnY0bDJfZGV2KTsKKwor5aaC5p6cIGRldi0+ZHJpdmVyX2RhdGEg5Z+f5oyH5ZCRIHY0bDJfZGV277yM5bCG5Lya6KKr6YeN572u5Li6IE5VTEzjgILms6jplIDlkIzml7YKK+S8muiHquWKqOS7juiuvuWkh+S4reazqOmUgOaJgOacieWtkOiuvuWkh+OAggorCivlpoLmnpzkvaDmnInkuIDkuKrng63mj5Lmi5Torr7lpIfvvIjlpoJVU0Lorr7lpIfvvInvvIzliJnlvZPmlq3lvIDlj5HnlJ/ml7bvvIzniLborr7lpIflsIbml6DmlYjjgIIKK+eUseS6jiB2NGwyX2RldmljZSDmnInkuIDkuKrmjIflkJHniLborr7lpIfnmoTmjIfpkojlv4XpobvooqvmuIXpmaTvvIzlkIzml7bmoIflv5fniLborr7lpIcKK+W3sua2iOWkse+8jOaJgOS7peW/hemhu+iwg+eUqOS7peS4i+WHveaVsO+8mgorCisJdjRsMl9kZXZpY2VfZGlzY29ubmVjdChzdHJ1Y3QgdjRsMl9kZXZpY2UgKnY0bDJfZGV2KTsKKwor6L+Z5Liq5Ye95pWw5bm2KuS4jSrms6jplIDlrZDorr7lpIfvvIzlm6DmraTkvaDkvp3nhLbopoHosIPnlKggdjRsMl9kZXZpY2VfdW5yZWdpc3RlcigpCivlh73mlbDjgILlpoLmnpzkvaDnmoTpqbHliqjlmajlubbpnZ7ng63mj5Lmi5TnmoTvvIzlsLHmsqHmnInlv4XopoHosIPnlKggdjRsMl9kZXZpY2VfZGlzY29ubmVjdCgp44CCCisKK+acieaXtuS9oOmcgOimgemBjeWOhuaJgOacieiiq+eJueWumumpseWKqOazqOWGjOeahOiuvuWkh+OAgui/memAmuW4uOWPkeeUn+WcqOWkmuS4quiuvuWkh+mpseWKqOS9v+eUqAor5ZCM5LiA5Liq56Gs5Lu255qE5oOF5Ya15LiL44CC5aaC77yaaXZ0dmZiIOmpseWKqOaYr+S4gOS4quS9v+eUqCBpdnR2IOehrOS7tueahOW4p+e8k+WGsumpseWKqO+8jAor5ZCM5pe2IGFsc2Eg6amx5Yqo5Lmf5L2/55So5q2k56Gs5Lu244CCCisKK+S9oOWPr+S7peS9v+eUqOWmguS4i+S+i+eoi+mBjeWOhuaJgOacieazqOWGjOeahOiuvuWkh++8mgorCitzdGF0aWMgaW50IGNhbGxiYWNrKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcCkKK3sKKwlzdHJ1Y3QgdjRsMl9kZXZpY2UgKnY0bDJfZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisKKwkvKiDmtYvor5Xov5nkuKrorr7lpIfmmK/lkKblt7Lnu4/liJ3lp4vljJYgKi8KKwlpZiAodjRsMl9kZXYgPT0gTlVMTCkKKwkJcmV0dXJuIDA7CisJLi4uCisJcmV0dXJuIDA7Cit9CisKK2ludCBpdGVyYXRlKHZvaWQgKnApCit7CisJc3RydWN0IGRldmljZV9kcml2ZXIgKmRydjsKKwlpbnQgZXJyOworCisJLyog5ZyoUENJIOaAu+e6v+S4iuafpeaJvml2dHbpqbHliqjjgIIKKwkgICBwY2lfYnVzX3R5cGXmmK/lhajlsYDnmoQuIOWvueS6jlVTQuaAu+e6v+S9v+eUqHVzYl9idXNfdHlwZeOAgiAqLworCWRydiA9IGRyaXZlcl9maW5kKCJpdnR2IiwgJnBjaV9idXNfdHlwZSk7CisJLyog6YGN5Y6G5omA5pyJ55qEaXZ0duiuvuWkh+WunuS+iyAqLworCWVyciA9IGRyaXZlcl9mb3JfZWFjaF9kZXZpY2UoZHJ2LCBOVUxMLCBwLCBjYWxsYmFjayk7CisJcHV0X2RyaXZlcihkcnYpOworCXJldHVybiBlcnI7Cit9CisKK+acieaXtuS9oOmcgOimgeS4gOS4quiuvuWkh+WunuS+i+eahOi/kOihjOiuoeaVsOOAgui/meS4qumAmuW4uOeUqOS6juaYoOWwhOS4gOS4quiuvuWkh+WunuS+i+WIsOS4gOS4qgor5qih5Z2X6YCJ5oup5pWw57uE55qE57Si5byV44CCCisKK+aOqOiNkOaWueazleWmguS4i++8mgorCitzdGF0aWMgYXRvbWljX3QgZHJ2X2luc3RhbmNlID0gQVRPTUlDX0lOSVQoMCk7CisKK3N0YXRpYyBpbnQgZHJ2X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqcGNpX2lkKQoreworCS4uLgorCXN0YXRlLT5pbnN0YW5jZSA9IGF0b21pY19pbmNfcmV0dXJuKCZkcnZfaW5zdGFuY2UpIC0gMTsKK30KKwor5aaC5p6c5L2g5pyJ5aSa5Liq6K6+5aSH6IqC54K577yM5a+55LqO54Ot5o+S5ouU6K6+5aSH77yM55+l6YGT5L2V5pe25rOo6ZSAIHY0bDJfZGV2aWNlIOe7k+aehOS9kwor5bCx5q+U6L6D5Zuw6Zq+44CC5Li65q2kIHY0bDJfZGV2aWNlIOacieW8leeUqOiuoeaVsOaUr+aMgeOAguW9k+iwg+eUqCB2aWRlb19yZWdpc3Rlcl9kZXZpY2UKK+aXtuWinuWKoOW8leeUqOiuoeaVsO+8jOiAjOiuvuWkh+iKgueCuemHiuaUvuaXtuWHj+Wwj+W8leeUqOiuoeaVsOOAguW9k+W8leeUqOiuoeaVsOS4uumbtu+8jOWImQordjRsMl9kZXZpY2Ug55qEcmVsZWFzZSgpIOWbnuiwg+Wwhuiiq+aJp+ihjOOAguS9oOWwseWPr+S7peWcqOatpOaXtuWBmuacgOWQjueahOa4heeQhuW3peS9nOOAggorCivlpoLmnpzliJvlu7rkuoblhbbku5borr7lpIfoioLngrnvvIjmr5TlpoIgQUxTQe+8ie+8jOWImeS9oOWPr+S7pemAmui/h+S7peS4i+WHveaVsOaJi+WKqOWinuWHjwor5byV55So6K6h5pWw77yaCisKK3ZvaWQgdjRsMl9kZXZpY2VfZ2V0KHN0cnVjdCB2NGwyX2RldmljZSAqdjRsMl9kZXYpOworCivmiJY6CisKK2ludCB2NGwyX2RldmljZV9wdXQoc3RydWN0IHY0bDJfZGV2aWNlICp2NGwyX2Rldik7CisKK+eUseS6juW8leeUqOaKgOacr+WIneWni+WMluS4uiAxIO+8jOS9oOS5n+mcgOimgeWcqCBkaXNjb25uZWN0KCkg5Zue6LCD77yI5a+55LqOIFVTQiDorr7lpIfvvInkuK0KK+iwg+eUqCB2NGwyX2RldmljZV9wdXTvvIzmiJbogIUgcmVtb3ZlKCkg5Zue6LCD77yI5L6L5aaC5a+55LqOIFBDSSDorr7lpIfvvInvvIzlkKbliJkKK+W8leeUqOiuoeaVsOWwhuawuOi/nOS4jeS8muS4uiAwIOOAggorCit2NGwyX3N1YmRldue7k+aehOS9kworLS0tLS0tLS0tLS0tLS0tLS0tCisKK+iuuOWkmumpseWKqOmcgOimgeS4juWtkOiuvuWkh+mAmuS/oeOAgui/meS6m+iuvuWkh+WPr+S7peWujOaIkOWQhOenjeS7u+WKoe+8jOS9humAmuW4uOS7luS7rOi0n+i0owor6Z+z6KeG6aKR5aSN55So5ZKM57yW6Kej56CB44CC5aaC572R57uc5pGE5YOP5aS055qE5a2Q6K6+5aSH6YCa5bi45piv5Lyg5oSf5Zmo5ZKM5pGE5YOP5aS05o6n5Yi25Zmo44CCCisKK+i/meS6m+S4gOiIrOS4uiBJMkMg5o6l5Y+j6K6+5aSH77yM5L2G5bm25LiN5LiA5a6a6YO95piv44CC5Li65LqG57uZ6amx5Yqo5o+Q5L6b6LCD55So5a2Q6K6+5aSH55qECivnu5/kuIDmjqXlj6PvvIx2NGwyX3N1YmRldiDnu5PmnoTkvZPvvIh2NGwyLXN1YmRldi5o77yJ5Lqn55Sf5LqG44CCCisKK+avj+S4quWtkOiuvuWkh+mpseWKqOmDveW/hemhu+acieS4gOS4qiB2NGwyX3N1YmRldiDnu5PmnoTkvZPjgILov5nkuKrnu5PmnoTkvZPlj6/ku6XljZXni6wKK+S7o+ihqOS4gOS4queugOWNleeahOWtkOiuvuWkh++8jOS5n+WPr+S7peW1jOWFpeWIsOS4gOS4quabtOWkp+eahOe7k+aehOS9k+S4re+8jOS4juabtOWkmuiuvuWkh+eKtuaAgQor5L+h5oGv5L+d5a2Y5Zyo5LiA6LW344CC6YCa5bi45pyJ5LiA5Liq5LiL57qn6K6+5aSH57uT5p6E5L2T77yI5q+U5aaC77yaaTJjX2NsaWVudO+8ieWMheWQq+S6hgor5YaF5qC45Yib5bu655qE6K6+5aSH5pWw5o2u44CC5bu66K6u5L2/55SoIHY0bDJfc2V0X3N1YmRldmRhdGEoKSDlsIbov5nkuKrnu5PmnoTkvZPnmoQKK+aMh+mSiOS/neWtmOWcqCB2NGwyX3N1YmRldiDnmoTnp4HmnInmlbDmja7ln58oZGV2X3ByaXYp5Lit44CC6L+Z5L2/5b6X6YCa6L+HIHY0bDJfc3ViZGV2Civmib7liLDlrp7pmYXnmoTkvY7lsYLmgLvnur/nibnlrprorr7lpIfmlbDmja7lj5jlvpflrrnmmJPjgIIKKwor5L2g5ZCM5pe26ZyA6KaB5LiA5Liq5LuO5L2O5bGC57uT5p6E5L2T6I635Y+WIHY0bDJfc3ViZGV2IOaMh+mSiOeahOaWueazleOAguWvueS6juW4uOeUqOeahAoraTJjX2NsaWVudCDnu5PmnoTkvZPvvIxpMmNfc2V0X2NsaWVudGRhdGEoKSDlh73mlbDlj6/nlKjkuo7kv53lrZjkuIDkuKogdjRsMl9zdWJkZXYKK+aMh+mSiO+8m+WvueS6juWFtuS7luaAu+e6v+S9oOWPr+iDvemcgOimgeS9v+eUqOWFtuS7luebuOWFs+WHveaVsOOAggorCivmoaXpqbHliqjkuK3kuZ/lupTkv53lrZjmr4/kuKrlrZDorr7lpIfnmoTnp4HmnInmlbDmja7vvIzmr5TlpoLkuIDkuKrmjIflkJHnibnlrprmoaXnmoTlkITorr7lpIfnp4HmnIkKK+aVsOaNrueahOaMh+mSiOOAguS4uuatpCB2NGwyX3N1YmRldiDnu5PmnoTkvZPmj5DkvpvkuLvmnLrnp4HmnInmlbDmja7ln58oaG9zdF9wcml2Ke+8jAor5bm25Y+v6YCa6L+HIHY0bDJfZ2V0X3N1YmRldl9ob3N0ZGF0YSgpIOWSjCB2NGwyX3NldF9zdWJkZXZfaG9zdGRhdGEoKQor6K6/6Zeu44CCCisKK+S7juaAu+e6v+ahpempseWKqOeahOinhuinku+8jOmpseWKqOWKoOi9veWtkOiuvuWkh+aooeWdl+W5tuS7peafkOenjeaWueW8j+iOt+W+lyB2NGwyX3N1YmRldgor57uT5p6E5L2T5oyH6ZKI44CC5a+55LqOIGkyYyDmgLvnur/orr7lpIfnm7jlr7nnroDljZXvvJrosIPnlKggaTJjX2dldF9jbGllbnRkYXRhKCnjgIIKK+WvueS6juWFtuS7luaAu+e6v+S5n+mcgOimgeWBmuexu+S8vOeahOaTjeS9nOOAgumSiOWvuSBJMkMg5oC757q/5LiK55qE5a2Q6K6+5aSH6L6F5Yqp5Ye95pWw5biu5L2gCivlrozmiJDkuoblpKfpg6jliIblpI3mnYLnmoTlt6XkvZzjgIIKKwor5q+P5LiqIHY0bDJfc3ViZGV2IOmDveWMheWQq+WtkOiuvuWkh+mpseWKqOmcgOimgeWunueOsOeahOWHveaVsOaMh+mSiO+8iOWmguaenOWvueatpOiuvuWkhwor5LiN6YCC55So77yM5Y+v5Li6TlVMTO+8ieOAgueUseS6juWtkOiuvuWkh+WPr+WujOaIkOiuuOWkmuS4jeWQjOeahOW3peS9nO+8jOiAjOWcqOS4gOS4quW6nuWkp+eahAor5Ye95pWw5oyH6ZKI57uT5p6E5L2T5Lit6YCa5bi45LuF5pyJ5bCR5pWw5pyJ55So55qE5Ye95pWw5a6e546w5YW25Yqf6IO96IKv5a6a5LiN5ZCI6YCC44CC5omA5Lul77yMCivlh73mlbDmjIfpkojmoLnmja7lhbblrp7njrDnmoTlip/og73ooqvliIbnsbvvvIzmr4/kuIDnsbvpg73mnInoh6rlt7HnmoTlh73mlbDmjIfpkojnu5PmnoTkvZPjgIIKKwor6aG25bGC5Ye95pWw5oyH6ZKI57uT5p6E5L2T5YyF5ZCr5LqG5oyH5ZCR5ZCE57G75Ye95pWw5oyH6ZKI57uT5p6E5L2T55qE5oyH6ZKI77yM5aaC5p6c5a2Q6K6+5aSH6amx5YqoCivkuI3mlK/mjIHor6Xnsbvlh73mlbDkuK3nmoTku7vkvZXkuIDkuKrlip/og73vvIzliJnmjIflkJHor6Xnsbvnu5PmnoTkvZPnmoTmjIfpkojkuLpOVUxM44CCCisKK+i/meS6m+e7k+aehOS9k+WumuS5ieWmguS4i++8mgorCitzdHJ1Y3QgdjRsMl9zdWJkZXZfY29yZV9vcHMgeworCWludCAoKmxvZ19zdGF0dXMpKHN0cnVjdCB2NGwyX3N1YmRldiAqc2QpOworCWludCAoKmluaXQpKHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsIHUzMiB2YWwpOworCS4uLgorfTsKKworc3RydWN0IHY0bDJfc3ViZGV2X3R1bmVyX29wcyB7CisJLi4uCit9OworCitzdHJ1Y3QgdjRsMl9zdWJkZXZfYXVkaW9fb3BzIHsKKwkuLi4KK307CisKK3N0cnVjdCB2NGwyX3N1YmRldl92aWRlb19vcHMgeworCS4uLgorfTsKKworc3RydWN0IHY0bDJfc3ViZGV2X3BhZF9vcHMgeworCS4uLgorfTsKKworc3RydWN0IHY0bDJfc3ViZGV2X29wcyB7CisJY29uc3Qgc3RydWN0IHY0bDJfc3ViZGV2X2NvcmVfb3BzICAqY29yZTsKKwljb25zdCBzdHJ1Y3QgdjRsMl9zdWJkZXZfdHVuZXJfb3BzICp0dW5lcjsKKwljb25zdCBzdHJ1Y3QgdjRsMl9zdWJkZXZfYXVkaW9fb3BzICphdWRpbzsKKwljb25zdCBzdHJ1Y3QgdjRsMl9zdWJkZXZfdmlkZW9fb3BzICp2aWRlbzsKKwljb25zdCBzdHJ1Y3QgdjRsMl9zdWJkZXZfcGFkX29wcyAqdmlkZW87Cit9OworCivlhbbkuK0gY29yZe+8iOaguOW/g++8ieWHveaVsOmbhumAmuW4uOWPr+eUqOS6juaJgOacieWtkOiuvuWkh++8jOWFtuS7luexu+WIq+eahOWunueOsOS+nei1luS6jgor5a2Q6K6+5aSH44CC5aaC6KeG6aKR6K6+5aSH5Y+v6IO95LiN5pSv5oyB6Z+z6aKR5pON5L2c5Ye95pWw77yM5Y+N5LmL5Lqm54S244CCCisKK+i/meagt+eahOiuvue9ruWcqOmZkOWItuS6huWHveaVsOaMh+mSiOaVsOmHj+eahOWQjOaXtu+8jOi/mOS9v+WinuWKoOaWsOeahOaTjeS9nOWHveaVsOWSjOWIhuexuwor5Y+Y5b6X6L6D5Li65a655piT44CCCisKK+WtkOiuvuWkh+mpseWKqOWPr+S9v+eUqOWmguS4i+WHveaVsOWIneWni+WMliB2NGwyX3N1YmRldiDnu5PmnoTkvZPvvJoKKworCXY0bDJfc3ViZGV2X2luaXQoc2QsICZvcHMpOworCivnhLblkI7vvIzkvaDlv4XpobvnlKjkuIDkuKrllK/kuIDnmoTlkI3lrZfliJ3lp4vljJYgc3ViZGV2LT5uYW1l77yM5bm25Yid5aeL5YyW5qih5Z2X55qECitvd25lciDln5/jgILoi6Xkvb/nlKggaTJjIOi+heWKqeWHveaVsO+8jOi/meS6m+mDveS8muW4ruS9oOWkhOeQhuWlveOAggorCivoi6XpnIDlkIzlqpLkvZPmoYbmnrbmlbTlkIjvvIzkvaDlv4XpobvosIPnlKggbWVkaWFfZW50aXR5X2luaXQoKSDliJ3lp4vljJYgdjRsMl9zdWJkZXYKK+e7k+aehOS9k+S4reeahCBtZWRpYV9lbnRpdHkg57uT5p6E5L2T77yIZW50aXR5IOWfn++8ie+8mgorCisJc3RydWN0IG1lZGlhX3BhZCAqcGFkcyA9ICZteV9zZC0+cGFkczsKKwlpbnQgZXJyOworCisJZXJyID0gbWVkaWFfZW50aXR5X2luaXQoJnNkLT5lbnRpdHksIG5wYWRzLCBwYWRzLCAwKTsKKworcGFkcyDmlbDnu4Tlv4XpobvpooTlhYjliJ3lp4vljJbjgILml6DpobvmiYvliqjorr7nva4gbWVkaWFfZW50aXR5IOeahCB0eXBlIOWSjAorbmFtZSDln5/vvIzkvYblpoLmnInlv4XopoHvvIxyZXZpc2lvbiDln5/lv4XpobvliJ3lp4vljJbjgIIKKwor5b2T77yI5Lu75L2V77yJ5a2Q6K6+5aSH6IqC54K56KKr5omT5byAL+WFs+mXre+8jOWvuSBlbnRpdHkg55qE5byV55So5bCG6KKr6Ieq5Yqo6I635Y+WL+mHiuaUvuOAggorCivlnKjlrZDorr7lpIfooqvms6jplIDkuYvlkI7vvIzkuI3opoHlv5jorrDmuIXnkIYgbWVkaWFfZW50aXR5IOe7k+aehOS9k++8mgorCisJbWVkaWFfZW50aXR5X2NsZWFudXAoJnNkLT5lbnRpdHkpOworCivlpoLmnpzlrZDorr7lpIfpqbHliqjotovlkJHkuo7lpITnkIbop4bpopHlubbmlbTlkIjov5vkuoblqpLkvZPmoYbmnrbvvIzlv4Xpobvkvb/nlKggdjRsMl9zdWJkZXZfcGFkX29wcwor5pu/5LujIHY0bDJfc3ViZGV2X3ZpZGVvX29wcyDlrp7njrDmoLzlvI/nm7jlhbPnmoTlip/og73jgIIKKwor6L+Z56eN5oOF5Ya15LiL77yM5a2Q6K6+5aSH6amx5Yqo5bqU6K+l6K6+572uIGxpbmtfdmFsaWRhdGUg5Z+f77yM5Lul5o+Q5L6b5a6D6Ieq6Lqr55qE6ZO+5o6lCivpqozor4Hlh73mlbDjgILpk77mjqXpqozor4Hlh73mlbDlupTlr7nnrqHpgZPvvIjkuKTnq6/pk77mjqXnmoTpg73mmK8gVjRMMiDlrZDorr7lpIfvvInkuK3nmoTmr4/kuKoKK+mTvuaOpeiwg+eUqOOAgumpseWKqOi/mOimgei0n+i0o+mqjOivgeWtkOiuvuWkh+WSjOinhumikeiKgueCuemXtOagvOW8j+mFjee9rueahOato+ehruaAp+OAggorCivlpoLmnpwgbGlua192YWxpZGF0ZSDmk43kvZzmsqHmnInorr7nva7vvIzpu5jorqTnmoQgdjRsMl9zdWJkZXZfbGlua192YWxpZGF0ZV9kZWZhdWx0KCkKK+WHveaVsOWwhuS8muiiq+iwg+eUqOOAgui/meS4quWHveaVsOS/neivgeWuveOAgemrmOWSjOWqkuS9k+aAu+e6v+WDj+e0oOagvOW8j+WcqOmTvuaOpeeahOaUtuWPkeS4pOerrwor6YO95LiA6Ie044CC5a2Q6K6+5aSH6amx5Yqo6Zmk5LqG5a6D5Lus6Ieq5bex55qE5qOA5rWL5aSW77yM5Lmf5Y+v5Lul6Ieq55Sx5L2/55So6L+Z5Liq5Ye95pWw5Lul5omn6KGMCivkuIrpnaLmj5DliLDnmoTmo4Dmn6XjgIIKKwor6K6+5aSH77yI5qGl77yJ6amx5Yqo56iL5bqP5b+F6aG75ZCRIHY0bDJfZGV2aWNlIOazqOWGjCB2NGwyX3N1YmRldu+8mgorCisJaW50IGVyciA9IHY0bDJfZGV2aWNlX3JlZ2lzdGVyX3N1YmRldih2NGwyX2Rldiwgc2QpOworCivlpoLmnpzlrZDorr7lpIfmqKHlnZflnKjlroPms6jlhozliY3mtojlpLHvvIzov5nkuKrmk43kvZzlj6/og73lpLHotKXjgILlnKjov5nkuKrlh73mlbDmiJDlip/ov5Tlm57lkI7vvIwKK3N1YmRldi0+ZGV2IOWfn+WwseaMh+WQkeS6hiB2NGwyX2RldmljZeOAggorCivlpoLmnpwgdjRsMl9kZXZpY2Ug54i26K6+5aSH55qEIG1kZXYg5Z+f5Li66Z2eIE5VTEwg5YC877yM5YiZ5a2Q6K6+5aSH5a6e5L2T5bCG6KKr6Ieq5YqoCivms6jlhozkuLrlqpLkvZPorr7lpIfjgIIKKwor5rOo6ZSA5a2Q6K6+5aSH5YiZ5Y+v55So5aaC5LiL5Ye95pWw77yaCisKKwl2NGwyX2RldmljZV91bnJlZ2lzdGVyX3N1YmRldihzZCk7CisKK+atpOWQju+8jOWtkOiuvuWkh+aooeWdl+WwseWPr+WNuOi9ve+8jOS4lCBzZC0+ZGV2ID09IE5VTEzjgIIKKwor5rOo5YaM5LmL6K6+5aSH5ZCO77yM5Y+v6YCa6L+H5Lul5LiL5pa55byP55u05o6l6LCD55So5YW25pON5L2c5Ye95pWw77yaCisKKwllcnIgPSBzZC0+b3BzLT5jb3JlLT5nX3N0ZChzZCwgJm5vcm0pOworCivkvYbkvb/nlKjlpoLkuIvlro/kvJrmr5TovoPlrrnmmJPkuJTlkIjpgILvvJoKKworCWVyciA9IHY0bDJfc3ViZGV2X2NhbGwoc2QsIGNvcmUsIGdfc3RkLCAmbm9ybSk7CisKK+i/meS4quWuj+WwhuS8muWBmiBOVUxMIOaMh+mSiOajgOafpe+8jOWmguaenCBzdWJkZXYg5Li6IE5VTEzvvIzliJnov5Tlm54tRU5PREVW77yb5aaC5p6cCitzdWJkZXYtPmNvcmUg5oiWIHN1YmRldi0+Y29yZS0+Z19zdGQg5Li6IE5VTEzvvIzliJnov5Tlm54gLUVOT0lPQ1RMQ01E77ybCivlkKbliJnlsIbov5Tlm54gc3ViZGV2LT5vcHMtPmNvcmUtPmdfc3RkIG9wcyDosIPnlKjnmoTlrp7pmYXnu5PmnpzjgIIKKwor5pyJ5pe25Lmf5Y+v6IO95ZCM5pe26LCD55So5omA5pyJ5oiW5LiA57O75YiX5a2Q6K6+5aSH55qE5p+Q5Liq5pON5L2c5Ye95pWw77yaCisKKwl2NGwyX2RldmljZV9jYWxsX2FsbCh2NGwyX2RldiwgMCwgY29yZSwgZ19zdGQsICZub3JtKTsKKwor5Lu75L2V5LiN5pSv5oyB5q2k5pON5L2c55qE5a2Q6K6+5aSH6YO95Lya6KKr6Lez6L+H77yM5bm25b+955Wl6ZSZ6K+v6L+U5Zue5YC844CC5L2G5aaC5p6c5L2g6ZyA6KaBCivmo4Dmn6Xlh7rplJnnoIHvvIzliJnlj6/kvb/nlKjlpoLkuIvlh73mlbDvvJoKKworCWVyciA9IHY0bDJfZGV2aWNlX2NhbGxfdW50aWxfZXJyKHY0bDJfZGV2LCAwLCBjb3JlLCBnX3N0ZCwgJm5vcm0pOworCivpmaQgLUVOT0lPQ1RMQ01EIOWklueahOS7u+S9lemUmeivr+mDveS8mui3s+WHuuW+queOr+W5tui/lOWbnumUmeivr+WAvOOAguWmguaenO+8iOmZpCAtRU5PSU9DVExDTUQKK+Wklu+8ieayoeaciemUmeivr+WPkeeUn++8jOWImei/lOWbniAw44CCCisKK+WvueS6juS7peS4iuS4pOS4quWHveaVsOeahOesrOS6jOS4quWPguaVsOS4uue7hCBJROOAguWmguaenOS4uiAw77yM5YiZ5omA5pyJ5a2Q6K6+5aSH6YO95Lya5omn6KGMCivov5nkuKrmk43kvZzjgILlpoLmnpzkuLrpnZ4gMCDlgLzvvIzliJnlj6rmnInpgqPkupvnu4QgSUQg5Yy56YWN55qE5a2Q6K6+5aSH5omN5Lya5omn6KGM5q2k5pON5L2c44CCCivlnKjmoaXpqbHliqjms6jlhozkuIDkuKrlrZDorr7lpIfliY3vvIzlj6/ku6Xorr7nva4gc2QtPmdycF9pZCDkuLrku7vkvZXmnJ/mnJvlgLzvvIjpu5jorqTlgLzkuLoKKzDvvInjgILov5nkuKrlgLzlsZ7kuo7moaXpqbHliqjvvIzkuJTlrZDorr7lpIfpqbHliqjlsIbkuI3kvJrkv67mlLnlkozkvb/nlKjlroPjgIIKKwor57uEIElEIOi1i+S6iOS6huahpempseWKqOabtOWkmuWvueS6juWmguS9leiwg+eUqOWbnuiwg+eahOaOp+WItuOAguS+i+Wmgu+8jOeUtei3r+adv+S4iuacieWkmuS4qgor6Z+z6aKR6Iqv54mH77yM5q+P5Liq6YO95pyJ5pS55Y+Y6Z+z6YeP55qE6IO95Yqb44CC5L2G5b2T55So5oi35oOz6KaB5pS55Y+Y6Z+z6YeP55qE5pe25YCZ77yM6YCa5bi4Civlj6rmnInkuIDkuKrkvJrooqvlrp7pmYXkvb/nlKjjgILkvaDlj6/ku6Xlr7nov5nmoLfnmoTlrZDorr7lpIforr7nva7nu4QgSUQg5Li677yI5L6L5aaCIEFVRElPX0NPTlRST0xMRVLvvIkKK+W5tuWcqOiwg+eUqCB2NGwyX2RldmljZV9jYWxsX2FsbCgpIOaXtuaMh+WumuWug+S4uue7hCBJRCDlgLzjgILov5nlsLHkv53or4Hkuoblj6rmnIkKK+mcgOimgeeahOWtkOiuvuWkh+aJjeS8muaJp+ihjOi/meS4quWbnuiwg+OAggorCivlpoLmnpzlrZDorr7lpIfpnIDopoHpgJrnn6XlroPnmoQgdjRsMl9kZXZpY2Ug54i26K6+5aSH5LiA5Liq5LqL5Lu277yM5Y+v5Lul6LCD55SoCit2NGwyX3N1YmRldl9ub3RpZnkoc2QsIG5vdGlmaWNhdGlvbiwgYXJnKeOAgui/meS4quWuj+ajgOafpeaYr+WQpuacieS4gOS4qgorbm90aWZ5KCkg5Zue6LCD6KKr5rOo5YaM77yM5aaC5p6c5rKh5pyJ77yM6L+U5ZueIC1FTk9ERVbjgILlkKbliJnov5Tlm54gbm90aWZ5KCkg6LCD55SoCivnu5PmnpzjgIIKKwor5L2/55SoIHY0bDJfc3ViZGV2IOeahOWlveWkhOWcqOS6juWug+aYr+S4gOS4qumAmueUqOe7k+aehOS9k++8jOS4lOS4jeWMheWQq+S7u+S9leW6leWxguehrOS7tgor5L+h5oGv44CC5omA5pyJ6amx5Yqo5Y+v5Lul5YyF5ZCr5aSa5LiqIEkyQyDmgLvnur/nmoTlrZDorr7lpIfvvIzkvYbkuZ/mnInlrZDorr7lpIfmmK/pgJrov4cgR1BJTwor5o6n5Yi244CC6L+Z5Liq5Yy65Yir5LuF5Zyo6YWN572u6K6+5aSH5pe25pyJ5YWz57O777yM5LiA5pem5a2Q6K6+5aSH5rOo5YaM5a6M5oiQ77yM5a+55LqOIHY0bDIKK+WtkOezu+e7n+adpeivtOWwseWujOWFqOmAj+aYjuS6huOAggorCisKK1Y0TDIg5a2Q6K6+5aSH55So5oi356m66Ze0QVBJCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCivpmaTkuobpgJrov4cgdjRsMl9zdWJkZXZfb3BzIOe7k+aehOWvvOWHuueahOWGheaguCBBUEnvvIxWNEwyIOWtkOiuvuWkh+S5n+WPr+S7peebtOaOpQor6YCa6L+H55So5oi356m66Ze05bqU55So56iL5bqP5p2l5o6n5Yi244CCCisKK+WPr+S7peWcqCAvZGV2IOS4reWIm+W7uuWQjeS4uiB2NGwtc3ViZGV2WCDorr7lpIfoioLngrnvvIzku6XpgJrov4flhbbnm7TmjqXorr/pl67lrZDorr7lpIfjgIIKK+WmguaenOWtkOiuvuWkh+aUr+aMgeeUqOaIt+epuumXtOebtOaOpemFjee9ru+8jOW/hemhu+WcqOazqOWGjOWJjeiuvue9riBWNEwyX1NVQkRFVl9GTF9IQVNfREVWTk9ERQor5qCH5b+X44CCCisKK+azqOWGjOWtkOiuvuWkh+S5i+WQju+8jCB2NGwyX2RldmljZSDpqbHliqjkvJrpgJrov4fosIPnlKggdjRsMl9kZXZpY2VfcmVnaXN0ZXJfc3ViZGV2X25vZGVzKCkKK+WHveaVsOS4uuaJgOacieW3suazqOWGjOW5tuiuvue9ruS6hiBWNEwyX1NVQkRFVl9GTF9IQVNfREVWTk9ERSDnmoTlrZDorr7lpIfliJvlu7oKK+iuvuWkh+iKgueCueOAgui/meS6m+iuvuWkh+iKgueCueS8muWcqOWtkOiuvuWkh+azqOmUgOaXtuiHquWKqOWIoOmZpOOAggorCivov5nkupvorr7lpIfoioLngrnlpITnkIYgVjRMMiBBUEkg55qE5LiA5Liq5a2Q6ZuG44CCCisKK1ZJRElPQ19RVUVSWUNUUkwKK1ZJRElPQ19RVUVSWU1FTlUKK1ZJRElPQ19HX0NUUkwKK1ZJRElPQ19TX0NUUkwKK1ZJRElPQ19HX0VYVF9DVFJMUworVklESU9DX1NfRVhUX0NUUkxTCitWSURJT0NfVFJZX0VYVF9DVFJMUworCisJ6L+Z5LqbIGlvY3RscyDmjqfliLbkuI4gVjRMMiDkuK3lrprkuYnnmoTkuIDoh7TjgILku5bku6zooYzkuLrnm7jlkIzvvIzllK/kuIDnmoQKKwnkuI3lkIzmmK/ku5bku6zlj6rlpITnkIblrZDorr7lpIfnmoTmjqfliLblrp7njrDjgILmoLnmja7pqbHliqjnqIvluo/vvIzov5nkupvmjqfliLbkuZ8KKwnlj6/ku6XpgJrov4fkuIDkuKrvvIjmiJblpJrkuKrvvIkgVjRMMiDorr7lpIfoioLngrnorr/pl67jgIIKKworVklESU9DX0RRRVZFTlQKK1ZJRElPQ19TVUJTQ1JJQkVfRVZFTlQKK1ZJRElPQ19VTlNVQlNDUklCRV9FVkVOVAorCisJ6L+Z5LqbICBpb2N0bHMg5LqL5Lu25LiOIFY0TDIg5Lit5a6a5LmJ55qE5LiA6Ie044CC5LuW5Lus6KGM5Li655u45ZCM77yM5ZSv5LiA55qECisJ5LiN5ZCM5piv5LuW5Lus5Y+q5aSE55CG5a2Q6K6+5aSH5Lqn55Sf55qE5LqL5Lu244CC5qC55o2u6amx5Yqo56iL5bqP77yM6L+Z5Lqb5LqL5Lu25LmfCisJ5Y+v5Lul6YCa6L+H5LiA5Liq77yI5oiW5aSa5Liq77yJIFY0TDIg6K6+5aSH6IqC54K55LiK5oql44CCCisKKwnopoHkvb/nlKjkuovku7bpgJrnn6XnmoTlrZDorr7lpIfpqbHliqjvvIzlnKjms6jlhozlrZDorr7lpIfliY3lv4XpobvlnKggdjRsMl9zdWJkZXY6OmZsYWdzCisJ5Lit6K6+572uIFY0TDJfU1VCREVWX1VTRVNfRVZFTlRTIOW5tuWcqCB2NGwyX3N1YmRldjo6bmV2ZW50cworCeS4reWIneWni+WMluS6i+S7tumYn+WIl+a3seW6puOAguazqOWGjOWujOaIkOWQju+8jOS6i+S7tuS8muWcqCB2NGwyX3N1YmRldjo6ZGV2bm9kZQorCeiuvuWkh+iKgueCueS4reWDj+mAmuW4uOS4gOagt+iiq+aOkumYn+OAggorCisJ5Li65q2j56Gu5pSv5oyB5LqL5Lu25py65Yi277yMcG9sbCgpIOaWh+S7tuaTjeS9nOS5n+W6lOiiq+WunueOsOOAggorCivnp4HmnIkgaW9jdGxzCisKKwnkuI3lnKjku6XkuIrliJfooajkuK3nmoTmiYDmnIkgaW9jdGxzIOS8mumAmui/hyBjb3JlOjppb2N0bCDmk43kvZznm7TmjqXkvKDpgJIKKwnnu5nlrZDorr7lpIfpqbHliqjjgIIKKworCitJMkMg5a2Q6K6+5aSH6amx5YqoCistLS0tLS0tLS0tLS0tCisKK+eUseS6jui/meS6m+mpseWKqOW+iOW4uOinge+8jOaJgOS7peWGheeJueaPkOS+m+S6hueJueWumueahOi+heWKqeWHveaVsCh2NGwyLWNvbW1vbi5oKeiuqei/meS6mwor6K6+5aSH55qE5L2/55So5pu05Yqg5a655piT44CCCisKK+a3u+WKoCB2NGwyX3N1YmRldiDmlK/mjIHnmoTmjqjojZDmlrnms5XmmK/orqkgSTJDIOmpseWKqOWwhiB2NGwyX3N1YmRldiDnu5PmnoTkvZMKK+W1jOWFpeWIsOS4uuavj+S4qiBJMkMg6K6+5aSH5a6e5L6L5Yib5bu655qE54q25oCB57uT5p6E5L2T5Lit44CC6ICM5pyA566A5Y2V55qE6K6+5aSH5rKh5pyJ54q25oCBCivnu5PmnoTkvZPvvIzmraTml7blj6/ku6Xnm7TmjqXliJvlu7rkuIDkuKogdjRsMl9zdWJkZXYg57uT5p6E5L2T44CCCisKK+S4gOS4quWFuOWei+eahOeKtuaAgee7k+aehOS9k+WmguS4i+aJgOekuu+8iOKAmGNoaXBuYW1l4oCZ55So6Iqv54mH5ZCN5Luj5pu/77yJ77yaCisKK3N0cnVjdCBjaGlwbmFtZV9zdGF0ZSB7CisJc3RydWN0IHY0bDJfc3ViZGV2IHNkOworCS4uLiAgLyog6ZmE5Yqg55qE54q25oCB5Z+fKi8KK307CisKK+WIneWni+WMliB2NGwyX3N1YmRldiDnu5PmnoTkvZPnmoTmlrnms5XlpoLkuIvvvJoKKworCXY0bDJfaTJjX3N1YmRldl9pbml0KCZzdGF0ZS0+c2QsIGNsaWVudCwgc3ViZGV2X29wcyk7CisKK+i/meS4quWHveaVsOWwhuWhq+WFhSB2NGwyX3N1YmRldiDnu5PmnoTkvZPkuK3nmoTmiYDmnInln5/vvIzlubbkv53or4EgdjRsMl9zdWJkZXYg5ZKMCitpMmNfY2xpZW50IOmDveaMh+WQkeW9vOatpOOAggorCivlkIzml7bvvIzkvaDkuZ/lupTor6XkuLrku44gdjRsMl9zdWJkZXYg5oyH6ZKI5om+5YiwIGNoaXBuYW1lX3N0YXRlIOe7k+aehOS9k+aMh+mSiAor5re75Yqg5LiA5Liq6L6F5Yqp5YaF6IGU5Ye95pWw44CCCisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGNoaXBuYW1lX3N0YXRlICp0b19zdGF0ZShzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkKQoreworCXJldHVybiBjb250YWluZXJfb2Yoc2QsIHN0cnVjdCBjaGlwbmFtZV9zdGF0ZSwgc2QpOworfQorCivkvb/nlKjku6XkuIvlh73mlbDlj6/ku6XpgJrov4cgdjRsMl9zdWJkZXYg57uT5p6E5L2T5oyH6ZKI6I635b6XIGkyY19jbGllbnQg57uT5p6E5L2TCivmjIfpkojvvJoKKworCXN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSB2NGwyX2dldF9zdWJkZXZkYXRhKHNkKTsKKwor6ICM5Lul5LiL5Ye95pWw5YiZ55u45Y+N77yM6YCa6L+HIGkyY19jbGllbnQg57uT5p6E5L2T5oyH6ZKI6I635b6XIHY0bDJfc3ViZGV2IOe7k+aehOS9kwor5oyH6ZKI77yaCisKKwlzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7CisKK+W9kyByZW1vdmUoKeWHveaVsOiiq+iwg+eUqOWJje+8jOW/hemhu+S/neivgeWFiOiwg+eUqCB2NGwyX2RldmljZV91bnJlZ2lzdGVyX3N1YmRldihzZCnjgIIKK+atpOaTjeS9nOWwhuS8muS7juahpempseWKqOS4reazqOmUgOWtkOiuvuWkh+OAguWNs+S9v+WtkOiuvuWkh+ayoeacieazqOWGjO+8jOiwg+eUqOatpOWHveaVsOS5n+aYrwor5a6J5YWo55qE44CCCisKK+W/hemhu+i/meagt+WBmueahOWOn+WboOaYr++8muW9k+ahpempseWKqOazqOmUgCBpMmMg6YCC6YWN5Zmo5pe277yMcmVtb3ZlKCnlm57osIPlh73mlbAKK+S8muiiq+mCo+S4qumAgumFjeWZqOS4iueahCBpMmMg6K6+5aSH6LCD55So44CC5q2k5ZCO77yM55u45bqU55qEIHY0bDJfc3ViZGV2IOe7k+aehOS9kwor5bCx5LiN5a2Y5Zyo5LqG77yM5omA5pyJ5a6D5Lus5b+F6aG75YWI6KKr5rOo6ZSA44CC5ZyoIHJlbW92ZSgp5Zue6LCD5Ye95pWw5Lit6LCD55SoCit2NGwyX2RldmljZV91bnJlZ2lzdGVyX3N1YmRldihzZCnvvIzlj6/ku6Xkv53or4HmiafooYzmgLvmmK/mraPnoa7nmoTjgIIKKworCivmoaXpqbHliqjkuZ/mnInkuIDkupvovoXnu4Tlh73mlbDlj6/nlKjvvJoKKworc3RydWN0IHY0bDJfc3ViZGV2ICpzZCA9IHY0bDJfaTJjX25ld19zdWJkZXYodjRsMl9kZXYsIGFkYXB0ZXIsCisJICAgICAgICJtb2R1bGVfZm9vIiwgImNoaXBpZCIsIDB4MzYsIE5VTEwpOworCivov5nkuKrlh73mlbDkvJrliqDovb3nu5nlrprnmoTmqKHlnZfvvIjlpoLmnpzmsqHmnInmqKHlnZfpnIDopoHliqDovb3vvIzlj6/ku6XkuLogTlVMTO+8ie+8jAor5bm255So57uZ5a6a55qEIGkyYyDpgILphY3lmajnu5PmnoTkvZPmjIfpkojvvIhpMmNfYWRhcHRlcu+8ieWSjCDlmajku7blnLDlnYDvvIhjaGlwL2FkZHJlc3PvvIkKK+S9nOS4uuWPguaVsOiwg+eUqCBpMmNfbmV3X2RldmljZSgp44CC5aaC5p6c5LiA5YiH6aG65Yip77yM5YiZ5bCx5ZyoIHY0bDJfZGV2aWNlCivkuK3ms6jlhozkuoblrZDorr7lpIfjgIIKKwor5L2g5Lmf5Y+v5Lul5Yip55SoIHY0bDJfaTJjX25ld19zdWJkZXYoKeeahOacgOWQjuS4gOS4quWPguaVsO+8jOS8oOmAkuS4gOS4quWPr+iDveeahAorSTJDIOWcsOWdgOaVsOe7hO+8jOiuqeWHveaVsOiHquWKqOaOoua1i+OAgui/meS6m+aOoua1i+WcsOWdgOWPquacieWcqOWJjeS4gOS4quWPguaVsOS4uiAwIOeahAor5oOF5Ya15LiL5L2/55So44CC6Z2e6Zu25Y+C5pWw5oSP5ZGz552A5L2g55+l6YGT5YeG56Gu55qEIGkyYyDlnLDlnYDvvIzmiYDku6XmraTml7bml6Dpobvov5vooYwKK+aOoua1i+OAggorCivlpoLmnpzlh7rplJnvvIzkuKTkuKrlh73mlbDpg73ov5Tlm54gTlVMTOOAggorCivms6jmhI/vvJrkvKDpgJLnu5kgdjRsMl9pMmNfbmV3X3N1YmRldigp55qEIGNoaXBpZCDpgJrluLjkuI7mqKHlnZflkI3kuIDoh7TjgIIKK+Wug+WFgeiuuOS9oOaMh+WumuS4gOS4quiKr+eJh+eahOWPmOS9k++8jOavlOWmguKAnHNhYTcxMTTigJ3miJbigJxzYWE3MTE14oCd44CC5LiA6Iis6YCa6L+HCitpMmMg6amx5Yqo6Ieq5Yqo5o6i5rWL44CCY2hpcGlkIOeahOS9v+eUqOaYr+WcqOS7iuWQjumcgOimgea3seWFpeS6huino+eahOS6i+aDheOAgui/meS4quS4jgoraTJjIOmpseWKqOS4jeWQjO+8jOi+g+WuueaYk+a3t+a3huOAguimgeefpemBk+aUr+aMgeWTquS6m+iKr+eJh+WPmOS9k++8jOS9oOWPr+S7peafpemYhSBpMmMKK+mpseWKqOS7o+eggeeahCBpMmNfZGV2aWNlX2lkIOihqO+8jOS4iumdouWIl+WHuuS6huaJgOacieWPr+iDveaUr+aMgeeahOiKr+eJh+OAggorCivov5jmnInkuKTkuKrovoXliqnlh73mlbDvvJoKKwordjRsMl9pMmNfbmV3X3N1YmRldl9jZmfvvJrov5nkuKrlh73mlbDmt7vliqDmlrDnmoQgaXJxIOWSjCBwbGF0Zm9ybV9kYXRhCivlj4LmlbDvvIzlubbmnInigJhhZGRy4oCZ5ZKM4oCYcHJvYmVkX2FkZHJz4oCZ5Y+C5pWw77ya5aaC5p6cIGFkZHIg6Z2e6Zu277yM5YiZ6KKr5L2/55SoCivvvIjkuI3mjqLmtYvlj5jkvZPvvInvvIzlkKbliJkgcHJvYmVkX2FkZHJzIOS4reeahOWcsOWdgOWwhueUqOS6juiHquWKqOaOoua1i+OAggorCivkvovlpoLvvJrku6XkuIvku6PnoIHlsIbkvJrmjqLmtYvlnLDlnYDvvIgweDEw77yJ77yaCisKK3N0cnVjdCB2NGwyX3N1YmRldiAqc2QgPSB2NGwyX2kyY19uZXdfc3ViZGV2X2NmZyh2NGwyX2RldiwgYWRhcHRlciwKKwkgICAgICAgIm1vZHVsZV9mb28iLCAiY2hpcGlkIiwgMCwgTlVMTCwgMCwgSTJDX0FERFJTKDB4MTApKTsKKwordjRsMl9pMmNfbmV3X3N1YmRldl9ib2FyZCDkvb/nlKjkuIDkuKogaTJjX2JvYXJkX2luZm8g57uT5p6E5L2T77yM5bCG5YW2Civmm7/ku6MgaXJx44CBcGxhdGZvcm1fZGF0YSDlkowgYWRkIHLlj4LmlbDkvKDpgJLnu5kgaTJjIOmpseWKqOOAggorCivlpoLmnpzlrZDorr7lpIfmlK/mjIEgc19jb25maWcg5qC45b+D5pON5L2c77yM6L+Z5Liq5pON5L2c5Lya5Zyo5a2Q6K6+5aSH6YWN572u5aW95LmL5ZCO5LulIGlycSDlkowKK3BsYXRmb3JtX2RhdGEg5Li65Y+C5pWw6LCD55So44CC5pep5pyf55qEIHY0bDJfaTJjX25ld18ocHJvYmVkXylzdWJkZXYg5Ye95pWwCivlkIzmoLfkuZ/kvJrosIPnlKggc19jb25maWfvvIzkvYbku4XlnKggaXJxIOS4uiAwIOS4lCBwbGF0Zm9ybV9kYXRhIOS4uiBOVUxMIOaXtuOAggorCit2aWRlb19kZXZpY2Xnu5PmnoTkvZMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK+WcqCAvZGV2IOebruW9leS4i+eahOWunumZheiuvuWkh+iKgueCueagueaNriB2aWRlb19kZXZpY2Ug57uT5p6E5L2TKHY0bDItZGV2LmgpCivliJvlu7rjgILmraTnu5PmnoTkvZPml6Llj6/ku6XliqjmgIHliIbphY3kuZ/lj6/ku6XltYzlhaXliLDkuIDkuKrmm7TlpKfnmoTnu5PmnoTkvZPkuK3jgIIKKwor5Yqo5oCB5YiG6YWN5pa55rOV5aaC5LiL77yaCisKKwlzdHJ1Y3QgdmlkZW9fZGV2aWNlICp2ZGV2ID0gdmlkZW9fZGV2aWNlX2FsbG9jKCk7CisKKwlpZiAodmRldiA9PSBOVUxMKQorCQlyZXR1cm4gLUVOT01FTTsKKworCXZkZXYtPnJlbGVhc2UgPSB2aWRlb19kZXZpY2VfcmVsZWFzZTsKKwor5aaC5p6c5bCG5YW25bWM5YWl5Yiw5LiA5Liq5aSn57uT5p6E5L2T5Lit77yM5YiZ5b+F6aG76Ieq5bex5a6e546wIHJlbGVhc2UoKeWbnuiwg+OAggorCisJc3RydWN0IHZpZGVvX2RldmljZSAqdmRldiA9ICZteV92ZGV2LT52ZGV2OworCisJdmRldi0+cmVsZWFzZSA9IG15X3ZkZXZfcmVsZWFzZTsKKworcmVsZWFzZSgp5Zue6LCD5b+F6aG76KKr6K6+572u77yM5LiU5Zyo5pyA5ZCO5LiA5LiqIHZpZGVvX2RldmljZSDnlKjmiLfpgIDlh7rkuYvlkI4KK+iiq+iwg+eUqOOAggorCivpu5jorqTnmoQgdmlkZW9fZGV2aWNlX3JlbGVhc2UoKeWbnuiwg+WPquaYr+iwg+eUqCBrZnJlZSDmnaXph4rmlL7kuYvliY3liIbphY3nmoQKK+WGheWtmOOAggorCivkvaDlupTor6Xorr7nva7ov5nkupvln5/vvJoKKworLSB2NGwyX2Rldjog6K6+572u5Li6IHY0bDJfZGV2aWNlIOeItuiuvuWkh+OAggorCistIG5hbWU6IOiuvue9ruS4uuWUr+S4gOeahOaPj+i/sOaAp+iuvuWkh+WQjeOAggorCistIGZvcHM6IOiuvue9ruS4uuW3suacieeahCB2NGwyX2ZpbGVfb3BlcmF0aW9ucyDnu5PmnoTkvZPjgIIKKworLSBpb2N0bF9vcHM6IOWmguaenOS9oOS9v+eUqHY0bDJfaW9jdGxfb3BzIOadpeeugOWMliBpb2N0bCDnmoTnu7TmiqQKKyAgKOW8uueDiOW7uuiuruS9v+eUqO+8jOS4lOWwhuadpeWPr+iDveWPmOS4uuW8uuWItuaAp+eahCEp77yM54S25ZCO6K6+572u5L2g6Ieq5bex55qECisgIHY0bDJfaW9jdGxfb3BzIOe7k+aehOS9ky4KKworLSBsb2NrOiDlpoLmnpzkvaDopoHlnKjpqbHliqjkuK3lrp7njrDmiYDmnInnmoTplIHmk43kvZzvvIzliJnorr7kuLogTlVMTCDjgILlkKbliJkKKyAg5bCx6KaB6K6+572u5LiA5Liq5oyH5ZCRIHN0cnVjdCBtdXRleF9sb2NrIOe7k+aehOS9k+eahOaMh+mSiO+8jOi/meS4qumUgeWwhgorICDlnKggdW5sb2NrZWRfaW9jdGwg5paH5Lu25pON5L2c6KKr6LCD55So5YmN55Sx5YaF5qC46I635b6X77yM5bm25Zyo6LCD55So6L+U5Zue5ZCOCisgIOmHiuaUvuOAguivpuingeS4i+S4gOiKguOAggorCistIHByaW86IOS/neaMgeWvueS8mOWFiOe6p+eahOi3n+i4quOAgueUqOS6juWunueOsCBWSURJT0NfRy9TX1BSSU9SSVRZ44CC5aaC5p6cCisgIOiuvue9ruS4uiBOVUxM77yM5YiZ5Lya5L2/55SoIHY0bDJfZGV2aWNlIOS4reeahCB2NGwyX3ByaW9fc3RhdGUg57uT5p6E5L2T44CCCisgIOWmguaenOimgeWvueavj+S4quiuvuWkh+iKgueCue+8iOe7hO+8ieWunueOsOeLrOeri+eahOS8mOWFiOe6p++8jOWPr+S7peWwhuWFtuaMh+WQkeiHquW3sQorICDlrp7njrDnmoQgdjRsMl9wcmlvX3N0YXRlIOe7k+aehOS9k+OAggorCistIHBhcmVudDog5LuF5Zyo5L2/55SoIE5VTEwg5L2c5Li654i26K6+5aSH57uT5p6E5L2T5Y+C5pWw5rOo5YaMIHY0bDJfZGV2aWNlIOaXtgorICDorr7nva7mraTlj4LmlbDjgILlj6rmnInlnKjkuIDkuKrnoazku7borr7lpIfljIXlkKvlpJrkuIDkuKogUENJIOiuvuWkh++8jOWFseS6q+WQjOS4gOS4qgorICB2NGwyX2RldmljZSDmoLjlv4Pml7bmiY3kvJrlj5HnlJ/jgIIKKworICBjeDg4IOmpseWKqOWwseaYr+S4gOS4quS+i+WtkO+8muS4gOS4qiB2NGwyX2RldmljZSDnu5PmnoTkvZPmoLjlv4PvvIzooqvkuIDkuKroo7jnmoQKKyAg6KeG6aKRIFBDSSDorr7lpIcoY3g4ODAwKeWSjOS4gOS4qiBNUEVHIFBDSSDorr7lpIcoY3g4ODAyKeWFseeUqOOAgueUseS6jgorICB2NGwyX2RldmljZSDml6Dms5XkuI7nibnlrprnmoQgUENJIOiuvuWkh+WFs+iBlO+8jOaJgOacieayoeacieiuvue9rueItuiuvuWkh+OAguS9huW9kworICB2aWRlb19kZXZpY2Ug6YWN572u5ZCO77yM5bCx55+l6YGT5L2/55So5ZOq5Liq54i2IFBDSSDorr7lpIfkuobjgIIKKwor5aaC5p6c5L2g5L2/55SoIHY0bDJfaW9jdGxfb3Bz77yM5YiZ5bqU6K+l5ZyoIHY0bDJfZmlsZV9vcGVyYXRpb25zIOe7k+aehOS9k+S4rQor6K6+572uIC51bmxvY2tlZF9pb2N0bCDmjIflkJEgdmlkZW9faW9jdGwy44CCCisKK+ivt+WLv+S9v+eUqCAuaW9jdGzvvIHlroPlt7Looqvlup/lvIPvvIzku4rlkI7lsIbmtojlpLHjgIIKKwor5p+Q5Lqb5oOF5Ya15LiL5L2g6KaB5ZGK6K+J5qC45b+D77ya5L2g5ZyoIHY0bDJfaW9jdGxfb3BzIOaMh+WumueahOafkOS4quWHveaVsOW6lOiiq+W/veeVpeOAggor5L2g5Y+v5Lul5ZyoIHZpZGVvX2RldmljZV9yZWdpc3RlciDooqvosIPnlKjliY3pgJrov4fku6XkuIvlh73mlbDmoIforrDov5nkuKogaW9jdGxz44CCCisKK3ZvaWQgdjRsMl9kaXNhYmxlX2lvY3RsKHN0cnVjdCB2aWRlb19kZXZpY2UgKnZkZXYsIHVuc2lnbmVkIGludCBjbWQpOworCivln7rkuo7lpJbpg6jlm6DntKDvvIjkvovlpoLmn5DkuKrmnb/ljaHlt7Looqvkvb/nlKjvvInvvIzlnKjkuI3liJvlu7rmlrDnu5PmnoTkvZPnmoTmg4XlhrXkuIvvvIzkvaDmg7MKK+imgeWFs+mXrSB2NGwyX2lvY3RsX29wcyDkuK3mn5DkuKrnibnmgKflvoDlvoDpnIDopoHov5nkuKrmnLrliLbjgIIKKwordjRsMl9maWxlX29wZXJhdGlvbnMg57uT5p6E5L2T5pivIGZpbGVfb3BlcmF0aW9ucyDnmoTkuIDkuKrlrZDpm4bjgILlhbbkuLvopoEKK+WMuuWIq+WcqOS6ju+8muWboCBpbm9kZSDlj4LmlbDku47mnKrooqvkvb/nlKjvvIzlroPlsIbooqvlv73nlaXjgIIKKwor5aaC5p6c6ZyA6KaB5LiO5aqS5L2T5qGG5p625pW05ZCI77yM5L2g5b+F6aG76YCa6L+H6LCD55SoIG1lZGlhX2VudGl0eV9pbml0KCkg5Yid5aeL5YyWCivltYzlhaXlnKggdmlkZW9fZGV2aWNlIOe7k+aehOS9k+S4reeahCBtZWRpYV9lbnRpdHnvvIhlbnRpdHkg5Z+f77yJ57uT5p6E5L2T77yaCisKKwlzdHJ1Y3QgbWVkaWFfcGFkICpwYWQgPSAmbXlfdmRldi0+cGFkOworCWludCBlcnI7CisKKwllcnIgPSBtZWRpYV9lbnRpdHlfaW5pdCgmdmRldi0+ZW50aXR5LCAxLCBwYWQsIDApOworCitwYWRzIOaVsOe7hOW/hemhu+mihOWFiOWIneWni+WMluOAguayoeacieW/heimgeaJi+WKqOiuvue9riBtZWRpYV9lbnRpdHkg55qEIHR5cGUg5ZKMCituYW1lIOWfn+OAggorCivlvZPvvIjku7vkvZXvvInlrZDorr7lpIfoioLngrnooqvmiZPlvIAv5YWz6Zet77yM5a+5IGVudGl0eSDnmoTlvJXnlKjlsIbooqvoh6rliqjojrflj5Yv6YeK5pS+44CCCisKK3Y0bDJfZmlsZV9vcGVyYXRpb25zIOS4jumUgQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor5L2g5Y+v5Lul5ZyoIHZpZGVvX2RldmljZSDnu5PmnoTkvZPkuK3orr7nva7kuIDkuKrmjIflkJEgbXV0ZXhfbG9jayDnmoTmjIfpkojjgILpgJrluLgKK+i/meaXouWPr+aYr+S4gOS4qumhtuWxguS6kuaWpemUgeS5n+WPr+S4uuiuvuWkh+iKgueCueiHqui6q+eahOS6kuaWpemUgeOAgum7mOiupOaDheWGteS4i++8jOatpOmUgQor55So5LqOIHVubG9ja2VkX2lvY3Rs77yM5L2G5Li65LqG5L2/55SoIGlvY3RscyDkvaDpgJrov4fku6XkuIvlh73mlbDlj6/npoHnlKjplIHlrprvvJoKKworCXZvaWQgdjRsMl9kaXNhYmxlX2lvY3RsX2xvY2tpbmcoc3RydWN0IHZpZGVvX2RldmljZSAqdmRldiwgdW5zaWduZWQgaW50IGNtZCk7CisKK+S+i+WmgjogdjRsMl9kaXNhYmxlX2lvY3RsX2xvY2tpbmcodmRldiwgVklESU9DX0RRQlVGKTsKKwor5L2g5b+F6aG75Zyo5rOo5YaMIHZpZGVvX2RldmljZSDliY3osIPnlKjov5nkuKrlh73mlbDjgIIKKwor54m55Yir5piv5a+55LqOIFVTQiDpqbHliqjnqIvluo/vvIzmn5Dkupvlkb3ku6TvvIjlpoLorr7nva7mjqfliLbvvInpnIDopoHlvojplb/nmoTml7bpl7TvvIzlj6/og70KK+mcgOimgeiHquihjOS4uue8k+WGsuWMuumYn+WIl+eahCBpb2N0bHMg5a6e546w6ZSB5a6a44CCCisKK+WmguaenOS9oOmcgOimgeabtOe7hueykuW6pueahOmUge+8jOS9oOW/hemhu+iuvue9riBtdXRleF9sb2NrIOS4uiBOVUxM77yM5bm25a6M5YWo6Ieq5bex5a6e546wCivplIHmnLrliLbjgIIKKwor6L+Z5a6M5YWo55Sx6amx5Yqo5byA5Y+R6ICF5Yaz5a6a5L2/55So5L2V56eN5pa55rOV44CC54S26ICM77yM5aaC5p6c5L2g55qE6amx5Yqo5a2Y5Zyo6ZW/5bu25pe25pON5L2cCivvvIjkvovlpoLvvIzmlLnlj5ggVVNCIOaRhOWDj+WktOeahOabneWFieaXtumXtOWPr+iDvemcgOimgei+g+mVv+aXtumXtO+8ie+8jOiAjOS9oOWPiOaDs+iuqeeUqOaItwor5Zyo562J5b6F6ZW/5bu25pe25pON5L2c5a6M5oiQ5pyf6Ze05YGa5YW25LuW55qE5LqL77yM5YiZ5L2g5pyA5aW96Ieq5bex5a6e546w6ZSB5py65Yi244CCCisKK+WmguaenOaMh+WumuS4gOS4qumUge+8jOWImeaJgOaciSBpb2N0bCDmk43kvZzlsIblnKjov5nkuKrplIHnmoTkvZznlKjkuIvkuLLooYzmiafooYzjgILlpoLmnpzkvaAKK+S9v+eUqCB2aWRlb2J1Zu+8jOWImeW/hemhu+WwhuWQjOS4gOS4qumUgeS8oOmAkue7mSB2aWRlb2J1ZiDpmJ/liJfliJ3lp4vljJblh73mlbDvvJvlpoIKK3ZpZGVvYnVmIOW/hemhu+etieW+heS4gOW4p+eahOWIsOi+vu+8jOWImeWPr+S4tOaXtuino+mUgeW5tuWcqOi/meS5i+WQjumHjeaWsOS4iumUgeOAguWmguaenOmpseWKqAor5Lmf5Zyo5Luj56CB5omn6KGM5pyf6Ze0562J5b6F77yM5YiZ5Y+v5YGa5ZCM5qC355qE5bel5L2c77yI5Li05pe26Kej6ZSB77yM5YaN5LiK6ZSB77yJ6K6p5YW25LuW6L+b56iLCivlj6/ku6XlnKjnrKzkuIDkuKrov5vnqIvpmLvloZ7ml7borr/pl67orr7lpIfoioLngrnjgIIKKwor5Zyo5L2/55SoIHZpZGVvYnVmMiDnmoTmg4XlhrXkuIvvvIzlv4Xpobvlrp7njrAgd2FpdF9wcmVwYXJlIOWSjCB3YWl0X2ZpbmlzaCDlm57osIMKK+WcqOmAguW9k+eahOaXtuWAmeino+mUgS/liqDplIHjgILov5vkuIDmraXmnaXor7TvvIzlpoLmnpzkvaDlnKggdmlkZW9fZGV2aWNlIOe7k+aehOS9k+S4reS9v+eUqAor6ZSB77yM5YiZ5b+F6aG75ZyoIHdhaXRfcHJlcGFyZSDlkowgd2FpdF9maW5pc2gg5Lit5a+56L+Z5Liq5LqS5pal6ZSB6L+b6KGM6Kej6ZSBL+WKoOmUgeOAggorCivng63mj5Lmi5TnmoTmlq3lvIDlrp7njrDkuZ/lv4XpobvlnKjosIPnlKggdjRsMl9kZXZpY2VfZGlzY29ubmVjdCDliY3ojrflvpfplIHjgIIKKwordmlkZW9fZGV2aWNl5rOo5YaMCistLS0tLS0tLS0tLS0tLS0KKwor5o6l5LiL5p2l5L2g6ZyA6KaB5rOo5YaM6KeG6aKR6K6+5aSH77ya6L+Z5Lya5Li65L2g5Yib5bu65LiA5Liq5a2X56ym6K6+5aSH44CCCisKKwllcnIgPSB2aWRlb19yZWdpc3Rlcl9kZXZpY2UodmRldiwgVkZMX1RZUEVfR1JBQkJFUiwgLTEpOworCWlmIChlcnIpIHsKKwkJdmlkZW9fZGV2aWNlX3JlbGVhc2UodmRldik7IC8qIG9yIGtmcmVlKG15X3ZkZXYpOyAqLworCQlyZXR1cm4gZXJyOworCX0KKwor5aaC5p6cIHY0bDJfZGV2aWNlIOeItuiuvuWkh+eahCBtZGV2IOWfn+S4uumdniBOVUxMIOWAvO+8jOinhumikeiuvuWkh+WunuS9k+WwhuiHquWKqAor5rOo5YaM5Li65aqS5L2T6K6+5aSH44CCCisKK+azqOWGjOWTquenjeiuvuWkh+aYr+agueaNruexu+Wei++8iHR5cGXvvInlj4LmlbDjgILlrZjlnKjku6XkuIvnsbvlnovvvJoKKworVkZMX1RZUEVfR1JBQkJFUjog55So5LqO6KeG6aKR6L6T5YWlL+i+k+WHuuiuvuWkh+eahCB2aWRlb1gKK1ZGTF9UWVBFX1ZCSTog55So5LqO5Z6C55u05raI6ZqQ5pWw5o2u55qEIHZiaVggKOS+i+Wmgu+8jOmakOiXj+W8j+Wtl+W5le+8jOWbvuaWh+eUteinhikKK1ZGTF9UWVBFX1JBRElPOiDnlKjkuo7lub/mkq3osIPosJDlmajnmoQgcmFkaW9YCisKK+acgOWQjuS4gOS4quWPguaVsOiuqeS9oOehruWumuS4gOS4quaJgOaOp+WItuiuvuWkh+eahOiuvuWkh+iKgueCueWPt+aVsOmHjyjkvovlpoIgdmlkZW9YIOS4reeahCBYKeOAggor6YCa5bi45L2g5Y+v5Lul5Lyg5YWlLTHvvIzorqkgdjRsMiDmoYbmnrboh6rlt7HpgInmi6nnrKzkuIDkuKrnqbrpl7LnmoTnvJblj7fjgILkvYbmmK/mnInml7bnlKjmiLcKK+mcgOimgemAieaLqeS4gOS4queJueWumueahOiKgueCueWPt+OAgumpseWKqOWFgeiuuOeUqOaIt+mAmui/h+mpseWKqOaooeWdl+WPguaVsOmAieaLqeS4gOS4queJueWumueahAor6K6+5aSH6IqC54K55Y+35piv5b6I5pmu6YGN55qE44CC6L+Z5Liq57yW5Y+35bCG5Lya5Lyg6YCS57uZ6L+Z5Liq5Ye95pWw77yM5LiUIHZpZGVvX3JlZ2lzdGVyX2RldmljZQor5bCG5Lya6K+V5Zu+6YCJ5oup6L+Z5Liq6K6+5aSH6IqC54K55Y+344CC5aaC5p6c6L+Z5Liq57yW5Y+36KKr5Y2g55So77yM5LiL5LiA5Liq56m66Zey55qE6K6+5aSH6IqC54K5CivnvJblj7flsIbooqvpgInkuK3vvIzlubblkJHlhoXmoLjml6Xlv5fkuK3lj5HpgIHkuIDkuKrorablkYrkv6Hmga/jgIIKKwor5Y+m5LiA5Liq5L2/55So5Zy65pmv5piv5b2T6amx5Yqo5Yib5bu65aSa5Liq6K6+5aSH5pe244CC6L+Z56eN5oOF5Ya15LiL77yM5a+55LiN5ZCM55qE6KeG6aKR6K6+5aSH5ZyoCivnvJblj7fkuIrkvb/nlKjkuI3lkIznmoTojIPlm7TmmK/lvojmnInnlKjnmoTjgILkvovlpoLvvIzop4bpopHmjZXojrforr7lpIfku44gMCDlvIDlp4vvvIzop4bpopEKK+i+k+WHuuiuvuWkh+S7jiAxNiDlvIDlp4vjgILmiYDku6XkvaDlj6/ku6Xkvb/nlKjmnIDlkI7kuIDkuKrlj4LmlbDmnaXmjIflrprorr7lpIfoioLngrnlj7fmnIDlsI/lgLzvvIwKK+iAjCB2NGwyIOahhuaetuS8muivleWbvumAieaLqeesrOS4gOS4queahOepuumXsue8luWPt++8iOetieS6juaIluWkp+S6juS9oOaPkOS+m+eahOe8luWPt++8ieOAggor5aaC5p6c5aSx6LSl77yM5YiZ5a6D5Lya5bCx6YCJ5oup56ys5LiA5Liq56m66Zey55qE57yW5Y+344CCCisKK+eUseS6jui/meenjeaDheWGteS4i++8jOS9oOS8muW/veeVpeaXoOazlemAieaLqeeJueWumuiuvuWkh+iKgueCueWPt+eahOitpuWRiu+8jOWImeWPr+iwg+eUqAordmlkZW9fcmVnaXN0ZXJfZGV2aWNlX25vX3dhcm4oKSDlh73mlbDpgb/lhY3orablkYrkv6Hmga/nmoTkuqfnlJ/jgIIKKwor5Y+q6KaB6K6+5aSH6IqC54K56KKr5Yib5bu677yM5LiA5Lqb5bGe5oCn5Lmf5Lya5ZCM5pe25Yib5bu644CC5ZyoIC9zeXMvY2xhc3MvdmlkZW80bGludXgKK+ebruW9leS4reS9oOS8muaJvuWIsOi/meS6m+iuvuWkh+OAguS+i+Wmgui/m+WFpeWFtuS4reeahCB2aWRlbzAg55uu5b2V77yM5L2g5Lya55yL5Yiw4oCYbmFtZeKAmeWSjAor4oCYaW5kZXjigJnlsZ7mgKfjgILigJhuYW1l4oCZ5bGe5oCn5YC85bCx5pivIHZpZGVvX2RldmljZSDnu5PmnoTkvZPkuK3nmoTigJhuYW1l4oCZ5Z+f44CCCisKK+KAmGluZGV44oCZ5bGe5oCn5YC85bCx5piv6K6+5aSH6IqC54K555qE57Si5byV5YC877ya5q+P5qyh6LCD55SoIHZpZGVvX3JlZ2lzdGVyX2RldmljZSgp77yMCivntKLlvJXlgLzpg73pgJLlop4gMSDjgILnrKzkuIDkuKrop4bpopHorr7lpIfoioLngrnmgLvmmK/ku47ntKLlvJXlgLwgMCDlvIDlp4vjgIIKKwor55So5oi35Y+v5Lul6K6+572uIHVkZXYg6KeE5YiZ77yM5Yip55So57Si5byV5bGe5oCn55Sf5oiQ6Iqx5ZOo55qE6K6+5aSH5ZCN77yI5L6L5aaC77ya55So4oCYbXBlZ1jigJkKK+S7o+ihqCBNUEVHIOinhumikeaNleiOt+iuvuWkh+iKgueCue+8ieOAggorCivlnKjorr7lpIfmiJDlip/ms6jlhozlkI7vvIzlsLHlj6/ku6Xkvb/nlKjov5nkupvln5/vvJoKKworLSB2ZmxfdHlwZTog5Lyg6YCS57uZIHZpZGVvX3JlZ2lzdGVyX2RldmljZSDnmoTorr7lpIfnsbvlnovjgIIKKy0gbWlub3I6IOW3suaMh+a0vueahOasoeiuvuWkh+WPt+OAggorLSBudW06IOiuvuWkh+iKgueCuee8luWPtyAo5L6L5aaCIHZpZGVvWCDkuK3nmoQgWCnjgIIKKy0gaW5kZXg6IOiuvuWkh+e0ouW8leWPt+OAggorCivlpoLmnpzms6jlhozlpLHotKXvvIzkvaDlv4XpobvosIPnlKggdmlkZW9fZGV2aWNlX3JlbGVhc2UoKSDmnaXph4rmlL7lt7LliIbphY3nmoQKK3ZpZGVvX2RldmljZSDnu5PmnoTkvZPvvJvlpoLmnpwgdmlkZW9fZGV2aWNlIOaYr+W1jOWFpeWcqOiHquW3seWIm+W7uueahOe7k+aehOS9k+S4re+8jAor5L2g5Lmf5b+F6aG76YeK5pS+5a6D44CCdmRldi0+cmVsZWFzZSgpIOWbnuiwg+S4jeS8muWcqOazqOWGjOWksei0peS5i+WQjuiiq+iwg+eUqO+8jAor5L2g5Lmf5LiN5bqU6K+V5Zu+5Zyo5rOo5YaM5aSx6LSl5ZCO5rOo6ZSA6K6+5aSH44CCCisKKwordmlkZW9fZGV2aWNlIOazqOmUgAorLS0tLS0tLS0tLS0tLS0tLQorCivlvZPop4bpopHorr7lpIfoioLngrnlt7Looqvnp7vpmaTvvIzkuI3orrrmmK/ljbjovb3pqbHliqjov5jmmK9VU0Lorr7lpIfmlq3lvIDvvIzkvaDpg73lupTms6jplIAKK+Wug+S7rO+8mgorCisJdmlkZW9fdW5yZWdpc3Rlcl9kZXZpY2UodmRldik7CisKK+i/meS4quaTjeS9nOWwhuS7jiBzeXNmcyDkuK3np7vpmaTorr7lpIfoioLngrnvvIjlr7zoh7QgdWRldiDlsIblhbbku44gL2RldiDkuK3np7vpmaTvvInjgIIKKwordmlkZW9fdW5yZWdpc3Rlcl9kZXZpY2UoKSDov5Tlm57kuYvlkI7vvIzlsLHml6Dms5XlrozmiJDmiZPlvIDmk43kvZzjgILlsL3nrqHlpoLmraTvvIwKK1VTQiDorr7lpIfnmoTmg4XlhrXliJnkuI3lkIzvvIzmn5DkupvlupTnlKjnqIvluo/lj6/og73kvp3nhLbmiZPlvIDnnYDlhbbkuK3kuIDkuKrlt7Lms6jplIDorr7lpIcKK+iKgueCueOAguaJgOS7peWcqOazqOmUgOS5i+WQju+8jOaJgOacieaWh+S7tuaTjeS9nO+8iOW9k+eEtumZpOS6hiByZWxlYXNlIO+8ieS5n+W6lOi/lOWbnumUmeivr+WAvOOAggorCivlvZPmnIDlkI7kuIDkuKrop4bpopHorr7lpIfoioLngrnnmoTnlKjmiLfpgIDlh7rvvIzliJkgdmRldi0+cmVsZWFzZSgpIOWbnuiwg+S8muiiq+iwg+eUqO+8jAor5bm25LiU5L2g5Y+v5Lul5YGa5pyA5ZCO55qE5riF55CG5pON5L2c44CCCisKK+S4jeimgeW/mOiusOa4heeQhuS4juinhumikeiuvuWkh+ebuOWFs+eahOWqkuS9k+WFpeWPo++8iOWmguaenOiiq+WIneWni+WMlui/h++8ie+8mgorCisJbWVkaWFfZW50aXR5X2NsZWFudXAoJnZkZXYtPmVudGl0eSk7CisKK+i/meWPr+S7peWcqCByZWxlYXNlIOWbnuiwg+S4reWujOaIkOOAggorCisKK3ZpZGVvX2RldmljZSDovoXliqnlh73mlbAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCivkuIDkupvmnInnlKjnmoTovoXliqnlh73mlbDlpoLkuIvvvJoKKworLSBmaWxlL3ZpZGVvX2RldmljZSDnp4HmnInmlbDmja4KKwor5L2g5Y+v5Lul55So5Lul5LiL5Ye95pWw5ZyoIHZpZGVvX2RldmljZSDnu5PmnoTkvZPkuK3orr7nva4v6I635Y+W6amx5Yqo56eB5pyJ5pWw5o2u77yaCisKK3ZvaWQgKnZpZGVvX2dldF9kcnZkYXRhKHN0cnVjdCB2aWRlb19kZXZpY2UgKnZkZXYpOwordm9pZCB2aWRlb19zZXRfZHJ2ZGF0YShzdHJ1Y3QgdmlkZW9fZGV2aWNlICp2ZGV2LCB2b2lkICpkYXRhKTsKKwor5rOo5oSP77ya5Zyo6LCD55SoIHZpZGVvX3JlZ2lzdGVyX2RldmljZSgpIOWJjeaJp+ihjCB2aWRlb19zZXRfZHJ2ZGF0YSgpCivmmK/lronlhajnmoTjgIIKKwor6ICM5Lul5LiL5Ye95pWw77yaCisKK3N0cnVjdCB2aWRlb19kZXZpY2UgKnZpZGVvX2RldmRhdGEoc3RydWN0IGZpbGUgKmZpbGUpOworCivov5Tlm54gZmlsZSDnu5PmnoTkvZPkuK3mi6XmnInnmoTnmoQgdmlkZW9fZGV2aWNlIOaMh+mSiOOAggorCit2aWRlb19kcnZkYXRhIOi+heWKqeWHveaVsOe7k+WQiOS6hiB2aWRlb19nZXRfZHJ2ZGF0YSDlkowgdmlkZW9fZGV2ZGF0YQor55qE5Yqf6IO977yaCisKK3ZvaWQgKnZpZGVvX2RydmRhdGEoc3RydWN0IGZpbGUgKmZpbGUpOworCivkvaDlj6/ku6Xkvb/nlKjlpoLkuIvku6PnoIHku44gdmlkZW9fZGV2aWNlIOe7k+aehOS9k+S4reiOt+WPliB2NGwyX2RldmljZSDnu5PmnoTkvZMKK+aMh+mSiO+8mgorCitzdHJ1Y3QgdjRsMl9kZXZpY2UgKnY0bDJfZGV2ID0gdmRldi0+djRsMl9kZXY7CisKKy0g6K6+5aSH6IqC54K55ZCNCisKK3ZpZGVvX2RldmljZSDorr7lpIfoioLngrnlnKjlhoXmoLjkuK3nmoTlkI3np7Dlj6/ku6XpgJrov4fku6XkuIvlh73mlbDojrflvpcKKworY29uc3QgY2hhciAqdmlkZW9fZGV2aWNlX25vZGVfbmFtZShzdHJ1Y3QgdmlkZW9fZGV2aWNlICp2ZGV2KTsKKwor6L+Z5Liq5ZCN5a2X6KKr55So5oi356m66Ze05bel5YW377yI5L6L5aaCIHVkZXbvvInkvZzkuLrmj5DnpLrkv6Hmga/kvb/nlKjjgILlupTlsL3lj6/og73kvb/nlKgKK+atpOWKn+iDve+8jOiAjOmdnuiuv+mXriB2aWRlb19kZXZpY2U6Om51bSDlkowgdmlkZW9fZGV2aWNlOjptaW5vciDln5/jgIIKKworCivop4bpopHnvJPlhrLovoXliqnlh73mlbAKKy0tLS0tLS0tLS0tLS0tLQorCit2NGwyIOaguOW/gyBBUEkg5o+Q5L6b5LqG5LiA5Liq5aSE55CG6KeG6aKR57yT5Yay55qE5qCH5YeG5pa55rOVKOensOS4uuKAnHZpZGVvYnVm4oCdKeOAggor6L+Z5Lqb5pa55rOV5L2/6amx5Yqo5Y+v5Lul6YCa6L+H57uf5LiA55qE5pa55byP5a6e546wIHJlYWQoKeOAgW1tYXAoKSDlkowgb3ZlcmxheSgp44CCCivnm67liY3lnKjorr7lpIfkuIrmlK/mjIHop4bpopHnvJPlhrLnmoTmlrnms5XmnInliIbmlaMv6IGa6ZuGIERNQSh2aWRlb2J1Zi1kbWEtc2cp44CBCivnur/mgKcgRE1BKHZpZGVvYnVmLWRtYS1jb250aWcp5Lul5Y+K5aSn5aSa55So5LqOIFVTQiDorr7lpIfnmoTnlKggdm1hbGxvYwor5YiG6YWN55qE57yT5YayKHZpZGVvYnVmLXZtYWxsb2Mp44CCCisKK+ivt+WPgumYhSBEb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3ZpZGVvYnVm77yM5Lul6I635b6X5pu05aSa5YWz5LqOIHZpZGVvYnVmCivlsYLnmoTkvb/nlKjkv6Hmga/jgIIKKwordjRsMl9maCDnu5PmnoTkvZMKKy0tLS0tLS0tLS0tLS0KKwordjRsMl9maCDnu5PmnoTkvZPmj5DkvpvkuIDkuKrkv53lrZjnlKjkuo4gVjRMMiDmoYbmnrbnmoTmlofku7blj6Xmn4TnibnlrprmlbDmja7nmoTnroDljZXmlrnms5XjgIIKK+WmguaenCB2aWRlb19kZXZpY2Ug5qCH5b+X77yM5paw6amx5YqoCivlv4Xpobvkvb/nlKggdjRsMl9maCDnu5PmnoTkvZPvvIzlm6DkuLrlroPkuZ/nlKjkuo7lrp7njrDkvJjlhYjnuqflpITnkIbvvIhWSURJT0NfRy9TX1BSSU9SSVRZ77yJ44CCCisKK3Y0bDJfZmgg55qE55So5oi377yI5L2N5LqOIFY0bDIg5qGG5p625Lit77yM5bm26Z2e6amx5Yqo77yJ5Y+v6YCa6L+H5rWL6K+VCit2aWRlb19kZXZpY2UtPmZsYWdzIOS4reeahCBWNEwyX0ZMX1VTRVNfVjRMMl9GSCDkvY3lvpfnn6XpqbHliqjmmK/lkKbkvb/nlKgKK3Y0bDJfZmgg5L2c5Li65LuW55qEIGZpbGUtPnByaXZhdGVfZGF0YSDmjIfpkojjgILov5nkuKrkvY3kvJrlnKjosIPnlKggdjRsMl9maF9pbml0KCkKK+aXtuiiq+iuvue9ruOAggorCit2NGwyX2ZoIOe7k+aehOS9k+S9nOS4uumpseWKqOiHqui6q+aWh+S7tuWPpeafhOe7k+aehOS9k+eahOS4gOmDqOWIhuiiq+WIhumFje+8jOS4lOmpseWKqOWcqAor5YW25omT5byA5Ye95pWw5Lit5bCGIGZpbGUtPnByaXZhdGVfZGF0YSDmjIflkJHlroPjgIIKKwor5Zyo6K645aSa5oOF5Ya15LiL77yMdjRsMl9maCDnu5PmnoTkvZPkvJrltYzlhaXliLDkuIDkuKrmm7TlpKfnmoTnu5PmnoTkvZPkuK3jgILov5npkp/mg4XlhrXkuIvvvIwKK+W6lOivpeWcqCBvcGVuKCkg5Lit6LCD55SoIHY0bDJfZmhfaW5pdCt2NGwyX2ZoX2FkZO+8jOW5tuWcqCByZWxlYXNlKCkg5LitCivosIPnlKggdjRsMl9maF9kZWwrdjRsMl9maF9leGl044CCCisKK+mpseWKqOWPr+S7pemAmui/h+S9v+eUqCBjb250YWluZXJfb2Yg5a6P5o+Q5Y+W5LuW5Lus6Ieq5bex55qE5paH5Lu25Y+l5p+E57uT5p6E5L2T44CC5L6L5aaC77yaCisKK3N0cnVjdCBteV9maCB7CisJaW50IGJsYWg7CisJc3RydWN0IHY0bDJfZmggZmg7Cit9OworCisuLi4KKworaW50IG15X29wZW4oc3RydWN0IGZpbGUgKmZpbGUpCit7CisJc3RydWN0IG15X2ZoICpteV9maDsKKwlzdHJ1Y3QgdmlkZW9fZGV2aWNlICp2ZmQ7CisJaW50IHJldDsKKworCS4uLgorCisJbXlfZmggPSBremFsbG9jKHNpemVvZigqbXlfZmgpLCBHRlBfS0VSTkVMKTsKKworCS4uLgorCisJdjRsMl9maF9pbml0KCZteV9maC0+ZmgsIHZmZCk7CisKKwkuLi4KKworCWZpbGUtPnByaXZhdGVfZGF0YSA9ICZteV9maC0+Zmg7CisJdjRsMl9maF9hZGQoJm15X2ZoLT5maCk7CisJcmV0dXJuIDA7Cit9CisKK2ludCBteV9yZWxlYXNlKHN0cnVjdCBmaWxlICpmaWxlKQoreworCXN0cnVjdCB2NGwyX2ZoICpmaCA9IGZpbGUtPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgbXlfZmggKm15X2ZoID0gY29udGFpbmVyX29mKGZoLCBzdHJ1Y3QgbXlfZmgsIGZoKTsKKworCS4uLgorCXY0bDJfZmhfZGVsKCZteV9maC0+ZmgpOworCXY0bDJfZmhfZXhpdCgmbXlfZmgtPmZoKTsKKwlrZnJlZShteV9maCk7CisJcmV0dXJuIDA7Cit9CisKK+S7peS4i+aYryB2NGwyX2ZoIOWHveaVsOS9v+eUqOeahOeugOS7i++8mgorCit2b2lkIHY0bDJfZmhfaW5pdChzdHJ1Y3QgdjRsMl9maCAqZmgsIHN0cnVjdCB2aWRlb19kZXZpY2UgKnZkZXYpCisKKyAg5Yid5aeL5YyW5paH5Lu25Y+l5p+E44CC6L+ZKuW/hemhuyrlnKjpqbHliqjnmoQgdjRsMl9maWxlX29wZXJhdGlvbnMtPm9wZW4oKQorICDlh73mlbDkuK3miafooYzjgIIKKwordm9pZCB2NGwyX2ZoX2FkZChzdHJ1Y3QgdjRsMl9maCAqZmgpCisKKyAg5re75Yqg5LiA5LiqIHY0bDJfZmgg5YiwIHZpZGVvX2RldmljZSDmlofku7blj6Xmn4TliJfooajjgILkuIDml6bmlofku7blj6Xmn4QKKyAg5Yid5aeL5YyW5a6M5oiQ5bCx5b+F6aG76LCD55So44CCCisKK3ZvaWQgdjRsMl9maF9kZWwoc3RydWN0IHY0bDJfZmggKmZoKQorCisgIOS7jiB2aWRlb19kZXZpY2UoKSDkuK3op6PpmaTmlofku7blj6Xmn4TnmoTlhbPogZTjgILmlofku7blj6Xmn4TnmoTpgIDlh7rlh73mlbDkuZ8KKyAg5bCG6KKr6LCD55So44CCCisKK3ZvaWQgdjRsMl9maF9leGl0KHN0cnVjdCB2NGwyX2ZoICpmaCkKKworICDmuIXnkIbmlofku7blj6Xmn4TjgILlnKjmuIXnkIblrowgdjRsMl9maCDlkI7vvIznm7jlhbPlhoXlrZjkvJrooqvph4rmlL7jgIIKKworCivlpoLmnpwgdjRsMl9maCDkuI3mmK/ltYzlhaXlnKjlhbbku5bnu5PmnoTkvZPkuK3nmoTvvIzliJnlj6/ku6XnlKjov5nkupvovoXliqnlh73mlbDvvJoKKworaW50IHY0bDJfZmhfb3BlbihzdHJ1Y3QgZmlsZSAqZmlscCkKKworICDliIbphY3kuIDkuKogdjRsMl9maCDnu5PmnoTkvZPnqbrpl7TvvIzliJ3lp4vljJblubblsIblhbbmt7vliqDliLAgZmlsZSDnu5PmnoTkvZPnm7jlhbPnmoQKKyAgdmlkZW9fZGV2aWNlIOe7k+aehOS9k+S4reOAggorCitpbnQgdjRsMl9maF9yZWxlYXNlKHN0cnVjdCBmaWxlICpmaWxwKQorCisgIOS7jiBmaWxlIOe7k+aehOS9k+ebuOWFs+eahCB2aWRlb19kZXZpY2Ug57uT5p6E5L2T5Lit5Yig6ZmkIHY0bDJfZmgg77yM5riF55CGCisgIHY0bDJfZmgg5bm26YeK5pS+56m66Ze044CCCisKK+i/meS4pOS4quWHveaVsOWPr+S7peaPkuWFpeWIsCB2NGwyX2ZpbGVfb3BlcmF0aW9uIOeahCBvcGVuKCkg5ZKMIHJlbGVhc2UoKQor5pON5L2c5Lit44CCCisKKwor5p+Q5Lqb6amx5Yqo6ZyA6KaB5Zyo56ys5LiA5Liq5paH5Lu25Y+l5p+E5omT5byA5ZKM5pyA5ZCO5LiA5Liq5paH5Lu25Y+l5p+E5YWz6Zet55qE5pe25YCZ5YGa5LqbCivlt6XkvZzjgILmiYDku6XliqDlhaXkuobkuKTkuKrovoXliqnlh73mlbDku6Xmo4Dmn6UgdjRsMl9maCDnu5PmnoTkvZPmmK/lkKbmmK/nm7jlhbPorr7lpIcKK+iKgueCueaJk+W8gOeahOWUr+S4gOaWh+S7tuWPpeafhOOAggorCitpbnQgdjRsMl9maF9pc19zaW5ndWxhcihzdHJ1Y3QgdjRsMl9maCAqZmgpCisKKyAg5aaC5p6c5q2k5paH5Lu25Y+l5p+E5piv5ZSv5LiA5omT5byA55qE5paH5Lu25Y+l5p+E77yM5YiZ6L+U5ZueIDEg77yM5ZCm5YiZ6L+U5ZueIDAg44CCCisKK2ludCB2NGwyX2ZoX2lzX3Npbmd1bGFyX2ZpbGUoc3RydWN0IGZpbGUgKmZpbHApCisKKyAg5Yqf6IO955u45ZCM77yM5L2G6YCa6L+HIGZpbHAtPnByaXZhdGVfZGF0YSDosIPnlKggdjRsMl9maF9pc19zaW5ndWxhcuOAggorCisKK1Y0TDIg5LqL5Lu25py65Yi2CistLS0tLS0tLS0tLQorCitWNEwyIOS6i+S7tuacuuWItuaPkOS+m+S6huS4gOS4qumAmueUqOeahOaWueazleWwhuS6i+S7tuS8oOmAkuWIsOeUqOaIt+epuumXtOOAgumpseWKqOW/hemhu+S9v+eUqAordjRsMl9maCDmiY3og73mlK/mjIEgVjRMMiDkuovku7bmnLrliLbjgIIKKworCivkuovku7bpgJrov4fkuIDkuKrnsbvlnovlkozpgInmi6kgSUQg5p2l5a6a5LmJ44CCSUQg5a+55bqU5LiA5LiqIFY0TDIg5a+56LGh77yM5L6L5aaCCivkuIDkuKrmjqfliLYgSUTjgILlpoLmnpzmnKrkvb/nlKjvvIzliJkgSUQg5Li6IDDjgIIKKwor5b2T55So5oi36K6i6ZiF5LiA5Liq5LqL5Lu277yM6amx5Yqo5Lya5Li65q2k5YiG6YWN5LiA5LqbIGtldmVudCDnu5PmnoTkvZPjgILmiYDku6Xmr4/kuKoKK+S6i+S7tue7hO+8iOexu+Wei+OAgUlE77yJ6YO95Lya5pyJ6Ieq5bex55qE5LiA5aWXIGtldmVudCDnu5PmnoTkvZPjgILov5nkv53or4HkuoblpoLmnpwKK+S4gOS4qumpseWKqOefreaXtumXtOWGheS6p+eUn+S6huiuuOWkmuWQjOexu+S6i+S7tu+8jOS4jeS8muimhuebluWFtuS7luexu+Wei+eahOS6i+S7tuOAggorCivkvYblpoLmnpzkvaDmlLbliLDnmoTkuovku7bmlbDph4/lpKfkuo7lkIznsbvkuovku7Yga2V2ZW50IOeahOS/neWtmOaVsOmHj++8jOWImeacgOaXqeeahAor5LqL5Lu25bCG6KKr5Lii5byD77yM5bm25Yqg5YWl5paw5LqL5Lu244CCCisKK+atpOWklu+8jHY0bDJfc3Vic2NyaWJlZF9ldmVudCDnu5PmnoTkvZPlhoXpg6jmnInlj6/kvpvpqbHliqjorr7nva7nmoQgbWVyZ2UoKSDlkowKK3JlcGxhY2UoKSDlm57osIPvvIzov5nkupvlm57osIPkvJrlnKjmlrDkuovku7bkuqfnlJ/kuJTmsqHmnInlpJrkvZnnqbrpl7TnmoTml7blgJnooqvosIPnlKjjgIIKK3JlcGxhY2UoKSDlm57osIPorqnkvaDlj6/ku6XlsIbml6nmnJ/kuovku7bnmoTlh4Dojbfmm7/mjaLkuLrmlrDkuovku7bnmoTlh4DojbfvvIzlsIbml6nmnJ8KK+WHgOiNt+eahOebuOWFs+aVsOaNruWQiOW5tuWIsOabv+aNoui/m+adpeeahOaWsOWHgOiNt+S4reOAguW9k+ivpeexu+Wei+eahOS6i+S7tuS7heWIhumFjeS6huS4gOS4qgora2V2ZW50IOe7k+aehOS9k+aXtu+8jOWug+Wwhuiiq+iwg+eUqOOAgm1lcmdlKCkg5Zue6LCD6K6p5L2g5Y+v5Lul5ZCI5bm25pyA5pep55qE5LqL5Lu25YeA6I23CivliLDlnKjlroPkuYvlkI7nmoTpgqPkuKrkuovku7blh4DojbfkuK3jgILlvZPor6XnsbvlnovnmoTkuovku7bliIbphY3kuobkuKTkuKrmiJbmm7TlpJoga2V2ZW50Civnu5PmnoTkvZPml7bvvIzlroPlsIbooqvosIPnlKjjgIIKKwor6L+Z56eN5pa55rOV5LiN5Lya5pyJ54q25oCB5L+h5oGv5Lii5aSx77yM5Y+q5Lya5a+86Ie05Lit6Ze05q2l6aqk5L+h5oGv5Lii5aSx44CCCisKKwor5YWz5LqOIHJlcGxhY2UvbWVyZ2Ug5Zue6LCD55qE5LiA5Liq5LiN6ZSZ55qE5L6L5a2Q5ZyoIHY0bDItZXZlbnQuYyDkuK3vvJrnlKjkuo4KK+aOp+WItuS6i+S7tueahCBjdHJsc19yZXBsYWNlKCkg5ZKMIGN0cmxzX21lcmdlKCkg5Zue6LCD44CCCisKK+azqOaEj++8mui/meS6m+Wbnuiwg+WPr+S7peWcqOS4reaWreS4iuS4i+aWh+S4reiwg+eUqO+8jOaJgOS7peWug+S7rOW/hemhu+WwveW/q+WujOaIkOW5tumAgOWHuuOAggorCivmnInnlKjnmoTlh73mlbDvvJoKKwordm9pZCB2NGwyX2V2ZW50X3F1ZXVlKHN0cnVjdCB2aWRlb19kZXZpY2UgKnZkZXYsIGNvbnN0IHN0cnVjdCB2NGwyX2V2ZW50ICpldikKKworICDlsIbkuovku7bliqDlhaXop4bpopHorr7lpIfnmoTpmJ/liJfjgILpqbHliqjku4XotJ/otKPloavlhYUgdHlwZSDlkowgZGF0YSDln5/jgIIKKyAg5YW25LuW5Z+f55SxIFY0TDIg5aGr5YWF44CCCisKK2ludCB2NGwyX2V2ZW50X3N1YnNjcmliZShzdHJ1Y3QgdjRsMl9maCAqZmgsCisJCQkgc3RydWN0IHY0bDJfZXZlbnRfc3Vic2NyaXB0aW9uICpzdWIsIHVuc2lnbmVkIGVsZW1zLAorCQkJIGNvbnN0IHN0cnVjdCB2NGwyX3N1YnNjcmliZWRfZXZlbnRfb3BzICpvcHMpCisKKyAgdmlkZW9fZGV2aWNlLT5pb2N0bF9vcHMtPnZpZGlvY19zdWJzY3JpYmVfZXZlbnQg5b+F6aG75qOA5rWL6amx5Yqo6IO9CisgIOS6p+eUn+eJueWumiBpZCDnmoTkuovku7bjgILnhLblkI7osIPnlKggdjRsMl9ldmVudF9zdWJzY3JpYmUoKSDmnaXorqLpmIXor6Xkuovku7bjgIIKKworICBlbGVtcyDlj4LmlbDmmK/or6Xkuovku7bnmoTpmJ/liJflpKflsI/jgILoi6XkuLogMO+8jFY0TDIg5qGG5p625bCG5Lya77yI5qC55o2u5LqL5Lu257G75Z6L77yJCisgIOWhq+WFhem7mOiupOWAvOOAggorCisgIG9wcyDlj4LmlbDlhYHorrjpqbHliqjmjIflrprkuIDns7vliJflm57osIPvvJoKKyAgKiBhZGQ6ICAgICDlvZPmt7vliqDkuIDkuKrmlrDnm5HlkKzogIXml7bosIPnlKjvvIjph43lpI3orqLpmIXlkIzkuIDkuKrkuovku7bvvIzmraTlm57osIMKKyAgICAgICAgICAgICDku4XooqvmiafooYzkuIDmrKHvvInjgIIKKyAgKiBkZWw6ICAgICDlvZPkuIDkuKrnm5HlkKzogIXlgZzmraLnm5HlkKzml7bosIPnlKjjgIIKKyAgKiByZXBsYWNlOiDnlKjigJjmlrDigJnkuovku7bmm7/mjaLigJjml6nmnJ/igJjkuovku7bjgIIKKyAgKiBtZXJnZTogICDlsIbigJjml6nmnJ/igJjkuovku7blkIjlubbliLDigJjmlrDigJnkuovku7bkuK3jgIIKKyAg6L+Z5Zub5Liq6LCD55So6YO95piv5Y+v6YCJ55qE77yM5aaC5p6c5LiN5oOz5oyH5a6a5Lu75L2V5Zue6LCD77yM5YiZIG9wcyDlj6/kuLogTlVMTOOAggorCitpbnQgdjRsMl9ldmVudF91bnN1YnNjcmliZShzdHJ1Y3QgdjRsMl9maCAqZmgsCisJCQkgICBzdHJ1Y3QgdjRsMl9ldmVudF9zdWJzY3JpcHRpb24gKnN1YikKKworICB2NGwyX2lvY3RsX29wcyDnu5PmnoTkvZPkuK3nmoQgdmlkaW9jX3Vuc3Vic2NyaWJlX2V2ZW50IOWbnuiwg+WHveaVsOOAggorICDpqbHliqjnqIvluo/lj6/ku6Xnm7TmjqXkvb/nlKggdjRsMl9ldmVudF91bnN1YnNjcmliZSgpIOWunueOsOmAgOiuouS6i+S7tui/h+eoi+OAggorCisgIOeJueauiueahCBWNEwyX0VWRU5UX0FMTCDnsbvlnovvvIzlj6/nlKjkuo7pgIDorqLmiYDmnInkuovku7bjgILpqbHliqjlj6/og73lnKjnibnmrooKKyAg5oOF5Ya15LiL6ZyA6KaB5YGa5q2k5pON5L2c44CCCisKK2ludCB2NGwyX2V2ZW50X3BlbmRpbmcoc3RydWN0IHY0bDJfZmggKmZoKQorCisgIOi/lOWbnuacquWGs+S6i+S7tueahOaVsOmHj+OAguacieWKqeS6juWunueOsOi9ruivou+8iHBvbGzvvInmk43kvZzjgIIKKwor5LqL5Lu26YCa6L+HIHBvbGwg57O757uf6LCD55So5Lyg6YCS5Yiw55So5oi356m66Ze044CC6amx5Yqo5Y+v55SoCit2NGwyX2ZoLT53YWl0ICh3YWl0X3F1ZXVlX2hlYWRfdCDnsbvlnosp5L2c5Li65Y+C5pWw6LCD55SoIHBvbGxfd2FpdCgp44CCCisKK+S6i+S7tuWIhuS4uuagh+WHhuS6i+S7tuWSjOengeacieS6i+S7tuOAguaWsOeahOagh+WHhuS6i+S7tuW/hemhu+S9v+eUqOWPr+eUqOeahOacgOWwj+S6i+S7tuexu+Weiwor57yW5Y+344CC6amx5Yqo5b+F6aG75LuO5LuW5Lus5pys57G75Z6L55qE57yW5Y+36LW35aeL5aSE5YiG6YWN5LqL5Lu244CC57G75Z6L55qE57yW5Y+36LW35aeL5Li6CitWNEwyX0VWRU5UX1BSSVZBVEVfU1RBUlQgKyBuICogMTAwMCDvvIzlhbbkuK0gbiDkuLrlj6/nlKjmnIDlsI/nvJblj7fjgILmr4/kuKoKK+exu+Wei+S4reeahOesrOS4gOS4quS6i+S7tuexu+Wei+e8luWPt+aYr+S4uuS7peWQjueahOS9v+eUqOS/neeVmeeahO+8jOaJgOS7peesrOS4gOS4quWPr+eUqOS6i+S7tgor57G75Z6L57yW5Y+35piv4oCYY2xhc3MgYmFzZSArIDHigJnjgIIKKworVjRMMiDkuovku7bmnLrliLbnmoTkvb/nlKjlrp7kvovlj6/ku6XlnKggT01BUDMgSVNQIOeahOmpseWKqAorKGRyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3Ap5Lit5om+5Yiw44CCCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3poX0NOL3ZvbGF0aWxlLWNvbnNpZGVyZWQtaGFybWZ1bC50eHQgYi9Eb2N1bWVudGF0aW9uL3poX0NOL3ZvbGF0aWxlLWNvbnNpZGVyZWQtaGFybWZ1bC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE4MTQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vemhfQ04vdm9sYXRpbGUtY29uc2lkZXJlZC1oYXJtZnVsLnR4dApAQCAtMCwwICsxLDExMyBAQAorQ2hpbmVzZSB0cmFuc2xhdGVkIHZlcnNpb24gb2YgRG9jdW1lbnRhdGlvbi92b2xhdGlsZS1jb25zaWRlcmVkLWhhcm1mdWwudHh0CisKK0lmIHlvdSBoYXZlIGFueSBjb21tZW50IG9yIHVwZGF0ZSB0byB0aGUgY29udGVudCwgcGxlYXNlIGNvbnRhY3QgdGhlCitvcmlnaW5hbCBkb2N1bWVudCBtYWludGFpbmVyIGRpcmVjdGx5LiAgSG93ZXZlciwgaWYgeW91IGhhdmUgYSBwcm9ibGVtCitjb21tdW5pY2F0aW5nIGluIEVuZ2xpc2ggeW91IGNhbiBhbHNvIGFzayB0aGUgQ2hpbmVzZSBtYWludGFpbmVyIGZvcgoraGVscC4gIENvbnRhY3QgdGhlIENoaW5lc2UgbWFpbnRhaW5lciBpZiB0aGlzIHRyYW5zbGF0aW9uIGlzIG91dGRhdGVkCitvciBpZiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgdHJhbnNsYXRpb24uCisKK01haW50YWluZXI6IEpvbmF0aGFuIENvcmJldCA8Y29yYmV0QGx3bi5uZXQ+CitDaGluZXNlIG1haW50YWluZXI6IEJyeWFuIFd1IDxicnlhbi53dUBhbmFsb2cuY29tPgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitEb2N1bWVudGF0aW9uL3ZvbGF0aWxlLWNvbnNpZGVyZWQtaGFybWZ1bC50eHQg55qE5Lit5paH57+76K+RCisKK+WmguaenOaDs+ivhOiuuuaIluabtOaWsOacrOaWh+eahOWGheWuue+8jOivt+ebtOaOpeiBlOezu+WOn+aWh+aho+eahOe7tOaKpOiAheOAguWmguaenOS9oOS9v+eUqOiLseaWhwor5Lqk5rWB5pyJ5Zuw6Zq+55qE6K+d77yM5Lmf5Y+v5Lul5ZCR5Lit5paH54mI57u05oqk6ICF5rGC5Yqp44CC5aaC5p6c5pys57+76K+R5pu05paw5LiN5Y+K5pe25oiW6ICF57+7Civor5HlrZjlnKjpl67popjvvIzor7fogZTns7vkuK3mlofniYjnu7TmiqTogIXjgIIKKwor6Iux5paH54mI57u05oqk6ICF77yaIEpvbmF0aGFuIENvcmJldCA8Y29yYmV0QGx3bi5uZXQ+CivkuK3mlofniYjnu7TmiqTogIXvvJog5LyN6bmPICBCcnlhbiBXdSA8YnJ5YW4ud3VAYW5hbG9nLmNvbT4KK+S4reaWh+eJiOe/u+ivkeiAhe+8miDkvI3puY8gIEJyeWFuIFd1IDxicnlhbi53dUBhbmFsb2cuY29tPgor5Lit5paH54mI5qCh6K+R6ICF77yaIOW8oOaxiei+iSAgRXVnZW5lIFRlbyA8ZXVnZW5ldGVvQGtlcm5lbC5zZz4KKyAgICAgICAgICAgICAgIOadqOeRniAgRGF2ZSBZb3VuZyA8aGlkYXZlLmRhcmtzdGFyQGdtYWlsLmNvbT4KK+S7peS4i+S4uuato+aWhworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK+S4uuS7gOS5iOS4jeW6lOivpeS9v+eUqOKAnHZvbGF0aWxl4oCd57G75Z6LCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ+eoi+W6j+WRmOmAmuW4uOiupOS4unZvbGF0aWxl6KGo56S65p+Q5Liq5Y+Y6YeP5Y+v5Lul5Zyo5b2T5YmN5omn6KGM55qE57q/56iL5LmL5aSW6KKr5pS55Y+Y77yb5Zug5q2k77yM5Zyo5YaF5qC4CivkuK3nlKjliLDlhbHkuqvmlbDmja7nu5PmnoTml7bvvIzluLjluLjkvJrmnIlD56iL5bqP5ZGY5Zac5qyi5L2/55Sodm9sYXRpbGXov5nnsbvlj5jph4/jgILmjaLlj6Xor53or7TvvIzku5bku6znu48KK+W4uOS8muaKinZvbGF0aWxl57G75Z6L55yL5oiQ5p+Q56eN566A5piT55qE5Y6f5a2Q5Y+Y6YeP77yM5b2T54S25a6D5Lus5LiN5piv44CC5Zyo5YaF5qC45Lit5L2/55Sodm9sYXRpbGXlh6AKK+S5juaAu+aYr+mUmeivr+eahO+8m+acrOaWh+aho+Wwhuino+mHiuS4uuS7gOS5iOi/meagt+OAggorCivnkIbop6N2b2xhdGlsZeeahOWFs+mUruaYr+efpemBk+Wug+eahOebrueahOaYr+eUqOadpea2iOmZpOS8mOWMlu+8jOWunumZheS4iuW+iOWwkeacieS6uuecn+ato+mcgOimgei/meagt+eahOW6lAor55So44CC5Zyo5YaF5qC45Lit77yM56iL5bqP5ZGY5b+F6aG76Ziy5q2i5oSP5aSW55qE5bm25Y+R6K6/6Zeu56C05Z2P5YWx5Lqr55qE5pWw5o2u57uT5p6E77yM6L+Z5YW25a6e5piv5LiA5Liq5a6M5YWoCivkuI3lkIznmoTku7vliqHjgILnlKjmnaXpmLLmraLmhI/lpJblubblj5Horr/pl67nmoTkv53miqTmjqrmlr3vvIzlj6/ku6Xmm7TliqDpq5jmlYjnmoTpgb/lhY3lpKflpJrmlbDkvJjljJbnm7jlhbPnmoQKK+mXrumimOOAggorCivlg492b2xhdGlsZeS4gOagt++8jOWGheaguOaPkOS+m+S6huW+iOWkmuWOn+ivreadpeS/neivgeW5tuWPkeiuv+mXruaXtueahOaVsOaNruWuieWFqO+8iOiHquaXi+mUgSwg5LqS5pal6YePLOWGhQor5a2Y5bGP6Zqc562J562J77yJ77yM5ZCM5qC35Y+v5Lul6Ziy5q2i5oSP5aSW55qE5LyY5YyW44CC5aaC5p6c5Y+v5Lul5q2j56Gu5L2/55So6L+Z5Lqb5YaF5qC45Y6f6K+t77yM6YKj5LmI5bCx5rKh5pyJCivlv4XopoHlho3kvb/nlKh2b2xhdGlsZeOAguWmguaenOS7jeeEtuW/hemhu+S9v+eUqHZvbGF0aWxl77yM6YKj5LmI5Yeg5LmO5Y+v5Lul6IKv5a6a5Zyo5Luj56CB55qE5p+Q5aSE5pyJ5LiACivkuKpidWfjgILlnKjmraPnoa7orr7orqHnmoTlhoXmoLjku6PnoIHkuK3vvIx2b2xhdGlsZeiDveW4puadpeeahOS7heS7heaYr+S9v+S6i+aDheWPmOaFouOAggorCivmgJ3ogIPkuIDkuIvov5nmrrXlhbjlnovnmoTlhoXmoLjku6PnoIHvvJoKKworICAgIHNwaW5fbG9jaygmdGhlX2xvY2spOworICAgIGRvX3NvbWV0aGluZ19vbigmc2hhcmVkX2RhdGEpOworICAgIGRvX3NvbWV0aGluZ19lbHNlX3dpdGgoJnNoYXJlZF9kYXRhKTsKKyAgICBzcGluX3VubG9jaygmdGhlX2xvY2spOworCivlpoLmnpzmiYDmnInnmoTku6PnoIHpg73pgbXlvqrliqDplIHop4TliJnvvIzlvZPmjIHmnIl0aGVfbG9ja+eahOaXtuWAme+8jOS4jeWPr+iDveaEj+WklueahOaUueWPmHNoYXJlZF9kYXRh55qECivlgLzjgILku7vkvZXlj6/og73orr/pl67or6XmlbDmja7nmoTlhbbku5bku6PnoIHpg73kvJrlnKjov5nkuKrplIHkuIrnrYnlvoXjgILoh6rml4vplIHljp/or63ot5/lhoXlrZjlsY/pmpzkuIDmoLfigJTigJQg5a6DCivku6zmmL7lvI/nmoTnlKjmnaXkuablhpnmiJDov5nmoLcg4oCU4oCUIOaEj+WRs+edgOaVsOaNruiuv+mXruS4jeS8mui3qOi2iuWug+S7rOiAjOiiq+S8mOWMluOAguaJgOS7peacrOadpee8luivkeWZqOiupOS4ugor5a6D55+l6YGT5Zyoc2hhcmVkX2RhdGHph4zpnaLlsIbmnInku4DkuYjvvIzkvYbmmK/lm6DkuLpzcGluX2xvY2soKeiwg+eUqOi3n+WGheWtmOWxj+manOS4gOagt++8jOS8muW8uuWItue8lgor6K+R5Zmo5b+Y6K6w5a6D5omA55+l6YGT55qE5LiA5YiH44CC6YKj5LmI5Zyo6K6/6Zeu6L+Z5Lqb5pWw5o2u5pe25LiN5Lya5pyJ5LyY5YyW55qE6Zeu6aKY44CCCisKK+WmguaenHNoYXJlZF9kYXRh6KKr5aOw5ZCN5Li6dm9sYXRpbGXvvIzplIHmk43kvZzlsIbku43nhLbmmK/lv4XpobvnmoTjgILlsLHnrpfmiJHku6znn6XpgZPmsqHmnInlhbbku5bkurrmraPlnKgKK+S9v+eUqOWug++8jOe8luivkeWZqOS5n+Wwhuiiq+mYu+atouS8mOWMluWvueS4tOeVjOWMuuWGhXNoYXJlZF9kYXRh55qE6K6/6Zeu44CC5Zyo6ZSB5pyJ5pWI55qE5ZCM5pe277yMCitzaGFyZWRfZGF0YeS4jeaYr3ZvbGF0aWxl55qE44CC5Zyo5aSE55CG5YWx5Lqr5pWw5o2u55qE5pe25YCZ77yM6YCC5b2T55qE6ZSB5pON5L2c5Y+v5Lul5LiN5YaN6ZyA6KaBCit2b2xhdGlsZSDigJTigJQg5bm25LiU5piv5pyJ5r2c5Zyo5Y2x5a6z55qE44CCCisKK3ZvbGF0aWxl55qE5a2Y5YKo57G75Z6L5pyA5Yid5piv5Li66YKj5Lqb5YaF5a2Y5pig5bCE55qESS9P5a+E5a2Y5Zmo6ICM5a6a5LmJ44CC5Zyo5YaF5qC46YeM77yM5a+E5a2Y5Zmo6K6/6Zeu5Lmf5bqUCivor6XooqvplIHkv53miqTvvIzkvYbmmK/kurrku6zkuZ/kuI3luIzmnJvnvJbor5HlmajigJzkvJjljJbigJ3kuLTnlYzljLrlhoXnmoTlr4TlrZjlmajorr/pl67jgILlhoXmoLjph4xJL0/nmoTlhoXlrZjorr/pl64KK+aYr+mAmui/h+iuv+mXruWHveaVsOWujOaIkOeahO+8m+S4jei1nuaIkOmAmui/h+aMh+mSiOWvuUkvT+WGheWtmOeahOebtOaOpeiuv+mXru+8jOW5tuS4lOS4jeaYr+WcqOaJgOacieS9k+ezu+aetuaehOS4igor6YO96IO95bel5L2c44CC6YKj5Lqb6K6/6Zeu5Ye95pWw5q2j5piv5Li65LqG6Ziy5q2i5oSP5aSW5LyY5YyW6ICM5YaZ55qE77yM5Zug5q2k77yM5YaN6K+05LiA5qyh77yMdm9sYXRpbGXnsbvlnovkuI0KK+aYr+W/hemcgOeahOOAggorCivlj6bkuIDnp43lvJXotbfnlKjmiLflj6/og73kvb/nlKh2b2xhdGlsZeeahOaDheWGteaYr+W9k+WkhOeQhuWZqOato+W/meedgOetieW+heS4gOS4quWPmOmHj+eahOWAvOOAguato+ehruaJp+ihjOS4gAor5Liq5b+Z562J5b6F55qE5pa55rOV5piv77yaCisKKyAgICB3aGlsZSAobXlfdmFyaWFibGUgIT0gd2hhdF9pX3dhbnQpCisgICAgICAgIGNwdV9yZWxheCgpOworCitjcHVfcmVsYXgoKeiwg+eUqOS8mumZjeS9jkNQVeeahOiDvemHj+a2iOiAl+aIluiAheiuqeS9jeS6jui2hee6v+eoi+WPjOWkhOeQhuWZqO+8m+Wug+S5n+S9nOS4uuWGheWtmOWxj+manOS4gOagt+WHugor546w77yM5omA5Lul77yM5YaN5LiA5qyh77yMdm9sYXRpbGXkuI3mmK/lv4XpnIDnmoTjgILlvZPnhLbvvIzlv5nnrYnlvoXkuIDlvIDlp4vlsLHmmK/kuIDnp43lj43luLjop4TnmoTlgZrms5XjgIIKKwor5Zyo5YaF5qC45Lit77yM5LiA5Lqb56iA5bCR55qE5oOF5Ya15LiLdm9sYXRpbGXku43nhLbmmK/mnInmhI/kuYnnmoTvvJoKKworICAtIOWcqOS4gOS6m+S9k+ezu+aetuaehOeahOezu+e7n+S4iu+8jOWFgeiuuOebtOaOpeeahEkvMOWGheWtmOiuv+mXru+8jOmCo+S5iOWJjemdouaPkOWIsOeahOiuv+mXruWHveaVsOWPr+S7peS9v+eUqAorICAgIHZvbGF0aWxl44CC5Z+65pys5LiK77yM5q+P5LiA5Liq6K6/6Zeu5Ye95pWw6LCD55So5a6D6Ieq5bex6YO95piv5LiA5Liq5bCP55qE5Li055WM5Yy65Z+f5bm25LiU5L+d6K+B5LqG5oyJ54WnCisgICAg56iL5bqP5ZGY5pyf5pyb55qE6YKj5qC35Y+R55Sf6K6/6Zeu5pON5L2c44CCCisKKyAgLSDmn5DkupvkvJrmlLnlj5jlhoXlrZjnmoTlhoXogZTmsYfnvJbku6PnoIHomb3nhLbmsqHmnInku4DkuYjlhbbku5bmmI7mmL7nmoTpmYTkvZznlKjvvIzkvYbmmK/mnInooqtHQ0PliKDpmaTnmoTlj68KKyAgICDog73mgKfjgILlnKjmsYfnvJblo7DmmI7kuK3liqDkuIp2b2xhdGlsZeWFs+mUruWtl+WPr+S7pemYsuatoui/meenjeWIoOmZpOaTjeS9nOOAggorCisgIC0gSmlmZmllc+WPmOmHj+aYr+S4gOenjeeJueauiuaDheWGte+8jOiZveeEtuavj+asoeW8leeUqOWug+eahOaXtuWAmemDveWPr+S7peacieS4jeWQjOeahOWAvO+8jOS9huivu2ppZmZpZXMKKyAgICDlj5jph4/ml7bkuI3pnIDopoHku7vkvZXnibnmrornmoTliqDplIHkv53miqTjgILmiYDku6VqaWZmaWVz5Y+Y6YeP5Y+v5Lul5L2/55Sodm9sYXRpbGXvvIzkvYbmmK/kuI3otZ7miJAKKyAgICDlhbbku5bot59qaWZmaWVz55u45ZCM57G75Z6L5Y+Y6YeP5L2/55Sodm9sYXRpbGXjgIJKaWZmaWVz6KKr6K6k5Li65piv5LiA56eN4oCc5oSa6KCi55qE6YGX55WZ54mpIgorICAgIO+8iExpbnVz55qE6K+d77yJ5Zug5Li66Kej5Yaz6L+Z5Liq6Zeu6aKY5q+U5L+d5oyB546w54q26KaB6bq754Om55qE5aSa44CCCisKKyAgLSDnlLHkuo7mn5DkuptJLzDorr7lpIflj6/og73kvJrkv67mlLnov57nu63kuIDoh7TnmoTlhoXlrZgs5omA5Lul5pyJ5pe2LOaMh+WQkei/nue7reS4gOiHtOWGheWtmOeahOaVsOaNrue7k+aehAorICAgIOeahOaMh+mSiOmcgOimgeato+ehrueahOS9v+eUqHZvbGF0aWxl44CC572R57uc6YCC6YWN5Zmo5L2/55So55qE546v54q257yT5a2Y5Yy65q2j5piv6L+Z57G75oOF5b2i55qE5LiA5Liq5L6LCisgICAg5a2Q77yM5YW25Lit6YCC6YWN5Zmo55So5pS55Y+Y5oyH6ZKI5p2l6KGo56S65ZOq5Lqb5o+P6L+w56ym5bey57uP5aSE55CG6L+H5LqG44CCCisKK+WvueS6juWkp+WkmuS7o+egge+8jOS4iui/sOWHoOenjeWPr+S7peS9v+eUqHZvbGF0aWxl55qE5oOF5Ya16YO95LiN6YCC55So44CC5omA5Lul77yM5L2/55Sodm9sYXRpbGXmmK/kuIDnp40KK2J1Z+W5tuS4lOmcgOimgeWvuei/meagt+eahOS7o+eggemineWkluS7lOe7huajgOafpeOAgumCo+S6m+ivleWbvuS9v+eUqHZvbGF0aWxl55qE5byA5Y+R5Lq65ZGY6ZyA6KaB6YCA5LiA5q2l5oOz5oOzCivku5bku6znnJ/mraPmg7Plrp7njrDnmoTmmK/ku4DkuYjjgIIKKwor6Z2e5bi45qyi6L+O5Yig6Zmkdm9sYXRpbGXlj5jph4/nmoTooaXkuIEg77yNIOWPquimgeivgeaYjui/meS6m+ihpeS4geWujOaVtOeahOiAg+iZkeS6huW5tuWPkemXrumimOOAggorCivms6jph4oKKy0tLS0KKworWzFdIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzIzMzQ4MS8KK1syXSBodHRwOi8vbHduLm5ldC9BcnRpY2xlcy8yMzM0ODIvCisKK+iHtOiwogorLS0tLQorCivmnIDliJ3nlLFSYW5keSBEdW5sYXDmjqjliqjlubbkvZzliJ3mraXnoJTnqbYKK+eUsUpvbmF0aGFuIENvcmJldOaSsOWGmQor5Y+C6ICDU2F0eWFtIFNoYXJtYe+8jEpvaGFubmVzIFN0ZXplbmJhY2jvvIxKZXNwZXIgSnVobO+8jEhlaWtraSBPcnNpbGHvvIwKK0guIFBldGVyIEFudmlu77yMUGhpbGlwcCBIYWhu5ZKMU3RlZmFuIFJpY2h0ZXLnmoTmhI/op4HmlLnlloTkuobmnKzmoaPjgIIKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vem9ycm8udHh0IGIvRG9jdW1lbnRhdGlvbi96b3Jyby50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBhNjRkNQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vem9ycm8udHh0CkBAIC0wLDAgKzEsMTAzIEBACisJCVdyaXRpbmcgRGV2aWNlIERyaXZlcnMgZm9yIFpvcnJvIERldmljZXMKKwkJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXcml0dGVuIGJ5IEdlZXJ0IFV5dHRlcmhvZXZlbiA8Z2VlcnRAbGludXgtbTY4ay5vcmc+CitMYXN0IHJldmlzZWQ6IFNlcHRlbWJlciA1LCAyMDAzCisKKworMS4gSW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0tLS0KKworVGhlIFpvcnJvIGJ1cyBpcyB0aGUgYnVzIHVzZWQgaW4gdGhlIEFtaWdhIGZhbWlseSBvZiBjb21wdXRlcnMuIFRoYW5rcyB0bworQXV0b0NvbmZpZyh0bSksIGl0J3MgMTAwJSBQbHVnLWFuZC1QbGF5LgorCitUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIFpvcnJvIGJ1c3NlcywgWm9ycm8gSUkgYW5kIFpvcnJvIElJSToKKworICAtIFRoZSBab3JybyBJSSBhZGRyZXNzIHNwYWNlIGlzIDI0LWJpdCBhbmQgbGllcyB3aXRoaW4gdGhlIGZpcnN0IDE2IE1CIG9mIHRoZQorICAgIEFtaWdhJ3MgYWRkcmVzcyBtYXAuCisKKyAgLSBab3JybyBJSUkgaXMgYSAzMi1iaXQgZXh0ZW5zaW9uIG9mIFpvcnJvIElJLCB3aGljaCBpcyBiYWNrd2FyZHMgY29tcGF0aWJsZQorICAgIHdpdGggWm9ycm8gSUkuIFRoZSBab3JybyBJSUkgYWRkcmVzcyBzcGFjZSBsaWVzIG91dHNpZGUgdGhlIGZpcnN0IDE2IE1CLgorCisKKzIuIFByb2JpbmcgZm9yIFpvcnJvIERldmljZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworWm9ycm8gZGV2aWNlcyBhcmUgZm91bmQgYnkgY2FsbGluZyBgem9ycm9fZmluZF9kZXZpY2UoKScsIHdoaWNoIHJldHVybnMgYQorcG9pbnRlciB0byB0aGUgYG5leHQnIFpvcnJvIGRldmljZSB3aXRoIHRoZSBzcGVjaWZpZWQgWm9ycm8gSUQuIEEgcHJvYmUgbG9vcAorZm9yIHRoZSBib2FyZCB3aXRoIFpvcnJvIElEIGBaT1JST19QUk9EX3h4eCcgbG9va3MgbGlrZToKKworICAgIHN0cnVjdCB6b3Jyb19kZXYgKnogPSBOVUxMOworCisgICAgd2hpbGUgKCh6ID0gem9ycm9fZmluZF9kZXZpY2UoWk9SUk9fUFJPRF94eHgsIHopKSkgeworCWlmICghem9ycm9fcmVxdWVzdF9yZWdpb24oei0+cmVzb3VyY2Uuc3RhcnQrTVlfU1RBUlQsIE1ZX1NJWkUsCisJCQkJICAiTXkgZXhwbGFuYXRpb24iKSkKKwkuLi4KKyAgICB9CisKK2BaT1JST19XSUxEQ0FSRCcgYWN0cyBhcyBhIHdpbGRjYXJkIGFuZCBmaW5kcyBhbnkgWm9ycm8gZGV2aWNlLiBJZiB5b3VyIGRyaXZlcgorc3VwcG9ydHMgZGlmZmVyZW50IHR5cGVzIG9mIGJvYXJkcywgeW91IGNhbiB1c2UgYSBjb25zdHJ1Y3QgbGlrZToKKworICAgIHN0cnVjdCB6b3Jyb19kZXYgKnogPSBOVUxMOworCisgICAgd2hpbGUgKCh6ID0gem9ycm9fZmluZF9kZXZpY2UoWk9SUk9fV0lMRENBUkQsIHopKSkgeworCWlmICh6LT5pZCAhPSBaT1JST19QUk9EX3h4eDEgJiYgei0+aWQgIT0gWk9SUk9fUFJPRF94eHgyICYmIC4uLikKKwkgICAgY29udGludWU7CisJaWYgKCF6b3Jyb19yZXF1ZXN0X3JlZ2lvbih6LT5yZXNvdXJjZS5zdGFydCtNWV9TVEFSVCwgTVlfU0laRSwKKwkJCQkgICJNeSBleHBsYW5hdGlvbiIpKQorCS4uLgorICAgIH0KKworCiszLiBab3JybyBSZXNvdXJjZXMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitCZWZvcmUgeW91IGNhbiBhY2Nlc3MgYSBab3JybyBkZXZpY2UncyByZWdpc3RlcnMsIHlvdSBoYXZlIHRvIG1ha2Ugc3VyZSBpdCdzCitub3QgeWV0IGluIHVzZS4gVGhpcyBpcyBkb25lIHVzaW5nIHRoZSBJL08gbWVtb3J5IHNwYWNlIHJlc291cmNlIG1hbmFnZW1lbnQKK2Z1bmN0aW9uczoKKworICAgIHJlcXVlc3RfbWVtX3JlZ2lvbigpCisgICAgcmVsZWFzZV9tZW1fcmVnaW9uKCkKKworU2hvcnRjdXRzIHRvIGNsYWltIHRoZSB3aG9sZSBkZXZpY2UncyBhZGRyZXNzIHNwYWNlIGFyZSBwcm92aWRlZCBhcyB3ZWxsOgorCisgICAgem9ycm9fcmVxdWVzdF9kZXZpY2UKKyAgICB6b3Jyb19yZWxlYXNlX2RldmljZQorCisKKzQuIEFjY2Vzc2luZyB0aGUgWm9ycm8gQWRkcmVzcyBTcGFjZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBhZGRyZXNzIHJlZ2lvbnMgaW4gdGhlIFpvcnJvIGRldmljZSByZXNvdXJjZXMgYXJlIFpvcnJvIGJ1cyBhZGRyZXNzCityZWdpb25zLiBEdWUgdG8gdGhlIGlkZW50aXR5IGJ1cy1waHlzaWNhbCBhZGRyZXNzIG1hcHBpbmcgb24gdGhlIFpvcnJvIGJ1cywKK3RoZXkgYXJlIENQVSBwaHlzaWNhbCBhZGRyZXNzZXMgYXMgd2VsbC4KKworVGhlIHRyZWF0bWVudCBvZiB0aGVzZSByZWdpb25zIGRlcGVuZHMgb24gdGhlIHR5cGUgb2YgWm9ycm8gc3BhY2U6CisKKyAgLSBab3JybyBJSSBhZGRyZXNzIHNwYWNlIGlzIGFsd2F5cyBtYXBwZWQgYW5kIGRvZXMgbm90IGhhdmUgdG8gYmUgbWFwcGVkCisgICAgZXhwbGljaXRseSB1c2luZyB6X2lvcmVtYXAoKS4KKyAgICAKKyAgICBDb252ZXJzaW9uIGZyb20gYnVzL3BoeXNpY2FsIFpvcnJvIElJIGFkZHJlc3NlcyB0byBrZXJuZWwgdmlydHVhbCBhZGRyZXNzZXMKKyAgICBhbmQgdmljZSB2ZXJzYSBpcyBkb25lIHVzaW5nOgorCisJdmlydF9hZGRyID0gWlRXT19WQUREUihidXNfYWRkcik7CisJYnVzX2FkZHIgPSBaVFdPX1BBRERSKHZpcnRfYWRkcik7CisKKyAgLSBab3JybyBJSUkgYWRkcmVzcyBzcGFjZSBtdXN0IGJlIG1hcHBlZCBleHBsaWNpdGx5IHVzaW5nIHpfaW9yZW1hcCgpIGZpcnN0CisgICAgYmVmb3JlIGl0IGNhbiBiZSBhY2Nlc3NlZDoKKyAKKwl2aXJ0X2FkZHIgPSB6X2lvcmVtYXAoYnVzX2FkZHIsIHNpemUpOworCS4uLgorCXpfaW91bm1hcCh2aXJ0X2FkZHIpOworCisKKzUuIFJlZmVyZW5jZXMKKy0tLS0tLS0tLS0tLS0KKworbGludXgvaW5jbHVkZS9saW51eC96b3Jyby5oCitsaW51eC9pbmNsdWRlL3VhcGkvbGludXgvem9ycm8uaAorbGludXgvaW5jbHVkZS91YXBpL2xpbnV4L3pvcnJvX2lkcy5oCitsaW51eC9hcmNoL202OGsvaW5jbHVkZS9hc20vem9ycm8uaAorbGludXgvZHJpdmVycy96b3JybworL3Byb2MvYnVzL3pvcnJvCisK